commit e11e749e4b68f2e729a2c65fe118ef5f93a8ebcb Author: loki Date: Sat Oct 3 13:53:24 2026 +0200 baseline: post wave1+i2b+b2i, vfbuild13=377 errors diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bde61bd --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +build/ +.gradle/ +.idea/ +dist/ +*.class diff --git a/build-logs/vfbuild12.log b/build-logs/vfbuild12.log new file mode 100644 index 0000000..7f530ff --- /dev/null +++ b/build-logs/vfbuild12.log @@ -0,0 +1,1836 @@ +/storage/aboba/evovis-client/src/main/java/defpackage/ma.java:4: error: package kotlin does not exist +import kotlin.Pair; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ma.java:24: error: cannot find symbol + public Pair calculateFactors(apz var1, apz var2, aqi var3, aqi var4, aqi var5, float var6) { + ^ + symbol: class Pair + location: class ma +/storage/aboba/evovis-client/src/main/java/defpackage/aaa.java:163: error: incompatible types: boolean cannot be converted to int + int var17 = this.bounds.contains(this.scaleMouseX(var2, this.bounds), this.scaleMouseY(var3, this.bounds)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aaa.java:176: error: incompatible types: boolean cannot be converted to int + int var20 = asa.hits( + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/arn.java:293: error: incompatible types: boolean cannot be converted to int + var4 = this.isControlDown(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/gq.java:88: error: cannot find symbol + var2x.put(var1x.rightChar(), var1x.advance()); + ^ + symbol: method put(int,float) + location: variable var2x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/yc.java:1107: error: incompatible types: boolean cannot be converted to int + var3x = var1x.getName().toLowerCase().contains(this.searchField.getText().toLowerCase()); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/yc.java:1555: error: incompatible types: boolean cannot be converted to int + var5x = var3x.getName().toLowerCase().contains(var1); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:190: error: incompatible types: Object cannot be converted to aeb + for (aeb var20 : var16) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:674: error: incompatible types: boolean cannot be converted to int + int var16 = aqj.isHovered( + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1115: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1115: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1175: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[0] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1176: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[1] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1186: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[4] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1187: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[5] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1197: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[8] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1198: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[9] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1208: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[12] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1209: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[13] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1291: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1291: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1400: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[0] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1401: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[1] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1411: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[4] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1412: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[5] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1422: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[8] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1423: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[9] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1433: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[12] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1434: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[13] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1504: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1504: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1564: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[0] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1565: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[1] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1575: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[4] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1576: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[5] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1586: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[8] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1587: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[9] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1597: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[12] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1598: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[13] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1813: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1813: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1819: error: incompatible types: Object cannot be converted to float[] + for (float[] var9 : var3) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:2461: error: cannot find symbol + if (!var1x.getName().toLowerCase().contains(var12)) { + ^ + symbol: method getName() + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:2471: error: incompatible types: Object cannot be converted to aeb + for (aeb var13 : var11) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aaj.java:659: error: incompatible types: Object cannot be converted to amy + for (amy var26 : var22) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aaj.java:663: error: incompatible types: Object cannot be converted to amy + for (amy var39 : var23) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aaj.java:1970: error: incompatible types: Object cannot be converted to amw + for (amw var37 : var29) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aaj.java:1978: error: incompatible types: Object cannot be converted to String + for (String var42 : var39) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aaj.java:1989: error: incompatible types: Object cannot be converted to String + for (String var47 : var39) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aaj.java:2386: error: incompatible types: boolean cannot be converted to int + var12 = this.iconHovered(var8, var9, var2, var3, var4, var4); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aaj.java:2389: error: incompatible types: boolean cannot be converted to int + var14 = asa.push(var1, var2, var3, var4, var4, var13, 0.05F); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aat.java:853: error: incompatible types: boolean cannot be converted to int + var18 = asa.push(var1, var8, var9, 11.0F, 11.0F, var17, 0.05F); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/yk.java:940: error: incompatible types: boolean cannot be converted to int + var6 = this.hits.click(var1, var3); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ma.java:13: error: cannot find symbol + Pair var4 = this.calculateFactors( + ^ + symbol: class Pair + location: class ma +/storage/aboba/evovis-client/src/main/java/defpackage/ma.java:92: error: cannot find symbol + return new Pair(var13 * Math.abs(var8), var14 * Math.abs(var9)); + ^ + symbol: class Pair + location: class ma +/storage/aboba/evovis-client/src/main/java/defpackage/ed.java:345: error: cannot find symbol + var8 = var7.getName(); + ^ + symbol: method getName() + location: variable var7 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/mm.java:169: error: incompatible types: SoundInstance cannot be converted to ml + this.activeFadingSounds.put(var1, var8); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/qj.java:174: error: incompatible types: int cannot be converted to boolean + this.collectPlayers(var2, var3, (boolean)var11, (boolean)((var10) != 0)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/qj.java:251: error: incompatible types: int cannot be converted to boolean + this.drawTable(var1, var5, var6, var7, var43, var40, var21, var44, var19, var20, (boolean)var10, (boolean)((var11) != 0), var4); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/sh.java:14: error: recursive constructor invocation + this(var1, var2); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ym.java:545: error: incompatible types: boolean cannot be converted to int + var15 = zb.begin(var1, var11, var12, var13, var14, var9, 5.0F); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ye.java:494: error: incompatible types: boolean cannot be converted to int + var15 = zb.begin(var1, var3, var4, var5, 17.0F, var13, 9.0F); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/yq.java:361: error: incompatible types: boolean cannot be converted to int + var15 = zb.begin(var1, var4, var5, var6, 17.0F, var14, 5.0F); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zr.java:214: error: incompatible types: boolean cannot be converted to int + var1x = var3.isEnabled(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zr.java:215: error: incomparable types: int and boolean + if (var1x != var2[0]) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zr.java:227: error: incompatible types: boolean cannot be converted to int + var2x = var0.readFlag((mv)var1.get()); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zr.java:228: error: incomparable types: int and boolean + if (var2x != var2[0]) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/yr.java:298: error: incompatible types: boolean cannot be converted to int + var24 = zb.begin(var1, var3, var4, var5, 30.0F, var23, 9.0F); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/yy.java:175: error: incompatible types: boolean cannot be converted to int + var16 = var8.getPalette().generated(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/yy.java:305: error: incompatible types: int cannot be converted to boolean + ass.tooltip(var3, this.tooltipOf(var3, (boolean)var16, (boolean)((var17) != 0)), var4, var5, var6, 15.0F, asr.LEFT); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/yy.java:356: error: incomparable types: Boolean and int + if (var4 != var6) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:5: error: constructor nb in enum nb cannot be applied to given types; + PROTANOPIA, + ^ + required: String,float[] + found: no arguments + reason: actual and formal argument lists differ in length +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:6: error: constructor nb in enum nb cannot be applied to given types; + DEUTERANOPIA, + ^ + required: String,float[] + found: no arguments + reason: actual and formal argument lists differ in length +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:7: error: constructor nb in enum nb cannot be applied to given types; + TRITANOPIA, + ^ + required: String,float[] + found: no arguments + reason: actual and formal argument lists differ in length +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:8: error: constructor nb in enum nb cannot be applied to given types; + ACHROMATOPSIA; + ^ + required: String,float[] + found: no arguments + reason: actual and formal argument lists differ in length +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:185: error: cannot assign a value to static final variable PROTANOPIA + PROTANOPIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:185: error: enum classes may not be instantiated + PROTANOPIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:199: error: cannot assign a value to static final variable DEUTERANOPIA + DEUTERANOPIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:199: error: enum classes may not be instantiated + DEUTERANOPIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:213: error: cannot assign a value to static final variable TRITANOPIA + TRITANOPIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:213: error: enum classes may not be instantiated + TRITANOPIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:227: error: cannot assign a value to static final variable ACHROMATOPSIA + ACHROMATOPSIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:227: error: enum classes may not be instantiated + ACHROMATOPSIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aab.java:132: error: incompatible types: boolean cannot be converted to int + var1 = this.module.isEnabled(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aab.java:151: error: incomparable types: int and boolean + if (var1 != this.lastEnabled) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aac.java:246: error: incompatible types: boolean cannot be converted to int + int var17 = this.bounds.contains(this.scaleMouseX(var2, this.bounds), this.scaleMouseY(var3, this.bounds)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aac.java:259: error: incompatible types: boolean cannot be converted to int + int var20 = asa.hits( + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aae.java:625: error: incompatible types: boolean cannot be converted to int + var6 = this.isActive(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/abs.java:141: error: incompatible types: Object cannot be converted to Block + for (Block var25 : var13) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/acf.java:187: error: cannot find symbol + var9 = var8.trim(); + ^ + symbol: method trim() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/acf.java:586: error: cannot find symbol + return var1.flatMap(var1x -> var1x.findPath(var0)).filter(var0x -> Files.isRegularFile(var0x)); + ^ + symbol: method findPath(String) + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/acf.java:586: error: incompatible types: Object cannot be converted to Path + return var1.flatMap(var1x -> var1x.findPath(var0)).filter(var0x -> Files.isRegularFile(var0x)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ach.java:458: error: cannot find symbol + var6 = Comparator.comparing(var0 -> var0.stack().getHoverName().getString().toLowerCase(Locale.ROOT)); + ^ + symbol: method stack() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ach.java:856: error: incompatible types: boolean cannot be converted to int + var4 = this.searchField.keyPressed(var1, var2, var3); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/acz.java:81: error: incompatible types: PerServerVersionScreen cannot be converted to k + var1 = (PerServerVersionScreen)var0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/acz.java:83: error: cannot find symbol + return new acx(var1.prevScreen, var2.evo$selectionConsumer(), var2.evo$selectionSupplier()); + ^ + symbol: variable prevScreen + location: variable var1 of type k +/storage/aboba/evovis-client/src/main/java/defpackage/acz.java:105: error: incompatible types: ViaFabricPlusScreen cannot be converted to k + var1 = (ViaFabricPlusScreen)var0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/acz.java:106: error: incompatible types: k cannot be converted to ViaFabricPlusScreen + return new acx(((ViaFabricPlusScreen)var1).prevScreen); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/adc.java:381: error: incompatible types: boolean cannot be converted to int + var2 = ((BooleanSetting)var0.setting()).isActive(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/adc.java:385: error: incompatible types: boolean cannot be converted to int + var2 = ((VersionedBooleanSetting)var0.setting()).value(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/adc.java:448: error: incompatible types: EnumValue cannot be converted to T + var0.setValue(var2[Math.floorMod(var3 + var1, var2.length)]); + ^ + where T is a type-variable: + T extends EnumValue declared in method cycle(EnumSetting,int) +/storage/aboba/evovis-client/src/main/java/defpackage/add.java:99: error: incompatible types: boolean cannot be converted to int + var11 = asa.push(var0, var2, var3, var4, var5, var9, 0.05F); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/adf.java:264: error: incompatible types: boolean cannot be converted to int + var17 = var5.isShiftKeyDown(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/adf.java:298: error: bad operand types for binary operator '+' + var7.setRotX(((Object[])var8)[0] + (float)Math.toRadians(-var4)); + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/adf.java:299: error: bad operand types for binary operator '+' + var7.setRotY(((Object[])var8)[1] + (float)Math.toRadians(-var5)); + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/adf.java:300: error: bad operand types for binary operator '+' + var7.setRotZ(((Object[])var8)[2] + (float)Math.toRadians(var6)); + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/ado.java:147: error: for-each not applicable to expression type + for (Path var6 : var3.filter(var0x -> var0x.toString().toLowerCase().endsWith(".json")).sorted().collect(Collectors.toList())) { + ^ + required: array or java.lang.Iterable + found: Object +/storage/aboba/evovis-client/src/main/java/defpackage/ado.java:164: error: incompatible types: Object cannot be converted to Path + Path var16 = var15.filter(var0x -> var0x.toString().toLowerCase().endsWith(".png")).sorted().findFirst().orElse(null); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:783: error: bad operand types for binary operator '*' + var11[6] * ((Object[])var12)[0] + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:787: error: bad operand types for binary operator '*' + * ((Object[])var12)[1] + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:791: error: bad operand types for binary operator '*' + * ((Object[])var12)[2] + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:837: error: bad operand type Object for unary operator '-' + + (float)Math.toRadians(-((Object[])var12)[0]) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:841: error: bad operand type Object for unary operator '-' + + (float)Math.toRadians(-((Object[])var12)[1]) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:845: error: incompatible types: Object cannot be converted to double + + (float)Math.toRadians(((Object[])var12)[2]) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:856: error: bad operand types for binary operator '+' + var11[3] + ((Object[])var12)[0] + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:860: error: bad operand types for binary operator '+' + + ((Object[])var12)[1] + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:864: error: bad operand types for binary operator '+' + + ((Object[])var12)[2] + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:907: error: cannot find symbol + var10 = (adt)var8.getValue(); + ^ + symbol: method getValue() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:908: error: cannot find symbol + var11 = (float[])var4.get(var8.getKey()); + ^ + symbol: method getKey() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:938: error: cannot find symbol + var9 = var1.findPart((String)var8.getKey()).orElse(null); + ^ + symbol: method getKey() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aeh.java:140: error: bad operand types for binary operator '+' + + (float)Math.toRadians(-var4[0]) + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aeh.java:144: error: bad operand types for binary operator '+' + + (float)Math.toRadians(-var4[1]) + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aeh.java:148: error: bad operand types for binary operator '+' + + (float)Math.toRadians(var4[2]) + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aeo.java:310: error: cannot find symbol + var10.append(Component.literal(var10x.substring(var13x)).setStyle(var9x)); + ^ + symbol: method append(MutableComponent) + location: variable var10 of type Component +/storage/aboba/evovis-client/src/main/java/defpackage/aeo.java:328: error: cannot find symbol + var10.append( + ^ + symbol: method append(MutableComponent) + location: variable var10 of type Component +/storage/aboba/evovis-client/src/main/java/defpackage/aeo.java:345: error: cannot find symbol + var10.append(Component.literal(var10x.substring(var14x, var14x + var15x)).setStyle(var9x.withColor(var0.rgb(var16x, var4)))); + ^ + symbol: method append(MutableComponent) + location: variable var10 of type Component +/storage/aboba/evovis-client/src/main/java/defpackage/aeo.java:382: error: cannot find symbol + var10.append(Component.literal(var10x).setStyle(var9x)); + ^ + symbol: method append(MutableComponent) + location: variable var10 of type Component +/storage/aboba/evovis-client/src/main/java/defpackage/aeq.java:818: error: incompatible types: Object cannot be converted to Path + List var2 = var1.filter(var0x -> Files.isRegularFile(var0x)).sorted(Comparator.comparingLong(aeq::lastModified)).toList(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/afp.java:547: error: incompatible types: Object cannot be converted to agh + for (agh var5 : var2) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/afp.java:558: error: incompatible types: Object cannot be converted to String + for (String var6 : var15) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/afp.java:581: error: incompatible types: Object cannot be converted to aga + for (aga var9 : var21) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/afp.java:592: error: incompatible types: Object cannot be converted to String + for (String var10 : var22) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/afp.java:637: error: bad operand types for binary operator '&&' + int var16x = var29 && booleanOf(var25.get("full")) + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/afp.java:647: error: incompatible types: int cannot be converted to boolean + apply(var30, var13, var31, var16x, var14, var17x, var18, var19x, var21x, var22x); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aqv.java:280: error: incompatible types: int cannot be converted to boolean + (boolean)(1), (boolean)((((-156236915 ^ 156236915) + ((-156236915 & 156236915) << 1)) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/agk.java:358: error: cannot find symbol + var3.sort((var0, var1x) -> Long.compare(var0.placedAt(), var1x.placedAt())); + ^ + symbol: method placedAt() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/agk.java:358: error: cannot find symbol + var3.sort((var0, var1x) -> Long.compare(var0.placedAt(), var1x.placedAt())); + ^ + symbol: method placedAt() + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/agt.java:69: error: incompatible types: int cannot be converted to boolean + var2.submitCustomGeometry(var1, var11, (var5x, var6x) -> this.renderMesh(var5x, var6x, var8, var9, var3, var10)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/agt.java:84: error: incompatible types: boolean cannot be converted to int + var10 = var5.isUnderWater(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/agx.java:398: error: bad operand types for binary operator '&&' + int var18 = var10 && var17 != null && var17.isJsonPrimitive() && var17.getAsBoolean() + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/agx.java:401: error: incompatible types: int cannot be converted to boolean + apply(var11, var7, var6, var18, var11x, var15, var16); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ahf.java:436: error: incompatible types: Object cannot be converted to String + for (String var7 : (Set)var4.getValue()) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ahi.java:131: error: incompatible types: Object[] cannot be converted to aho[] + var0, Math.max(var13, 0.0F), var3.toArray(new aho[0]), soundTimes(var1), soundNames(var1) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ahi.java:217: error: incompatible types: Object cannot be converted to Entry + for (Entry var10 : var2.entrySet()) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ahi.java:327: error: incompatible types: Object[] cannot be converted to String[] + return var1.values().toArray(new String[0]); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ahw.java:175: error: incompatible types: bad type in conditional expression + ? -1: var9.getOrDefault(var11.parent.name, (1226890724 | -1226890725) + (1226890724 & -1226890725)); + ^ + Object cannot be converted to int +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:272: error: cannot find symbol + if (var2.hasNext()) { + ^ + symbol: method hasNext() + location: variable var2 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:279: error: cannot find symbol + var3 = (String)var2.next(); + ^ + symbol: method next() + location: variable var2 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:284: error: cannot find symbol + if (var3.hasNext()) { + ^ + symbol: method hasNext() + location: variable var3 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:292: error: cannot find symbol + if (var2.isEmpty()) { + ^ + symbol: method isEmpty() + location: variable var2 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:301: error: cannot find symbol + var3 = ((aht)var2.get((-506941109 ^ 506941109) + ((-506941109 & 506941109) << 1))).hiddenBones().iterator(); + ^ + symbol: method get(int) + location: variable var2 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:312: error: cannot find symbol + var4 = (String)var3.next(); + ^ + symbol: method next() + location: variable var3 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:751: error: array required, but Object found + var0x[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:751: error: array required, but Object found + var0x[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ahz.java:307: error: incompatible types: int cannot be converted to boolean + var13, var12, var12.getRightHandBone(), (boolean)(1), (boolean)((var9) != 0), var1, var3, var4, var5 + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:280: error: cannot find symbol + var6 = (JsonElement)var5.next(); + ^ + symbol: method next() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:287: error: cannot find symbol + if (var5.hasNext()) { + ^ + symbol: method hasNext() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:302: error: cannot find symbol + var4.setRotX((float)Math.toRadians(-var5.get(0).getAsFloat())); + ^ + symbol: method get(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:303: error: cannot find symbol + var4.setRotY((float)Math.toRadians(-var5.get(1).getAsFloat())); + ^ + symbol: method get(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:304: error: cannot find symbol + var4.setRotZ((float)Math.toRadians(var5.get(2).getAsFloat())); + ^ + symbol: method get(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:309: error: cannot find symbol + var4.pivotX = -var5.get(0).getAsFloat(); + ^ + symbol: method get(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:310: error: cannot find symbol + var4.pivotY = var5.get(1).getAsFloat(); + ^ + symbol: method get(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:311: error: cannot find symbol + var4.pivotZ = var5.get(2).getAsFloat(); + ^ + symbol: method get(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:636: error: incompatible types: boolean cannot be converted to byte + byte var33 = var18; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:639: error: incomparable types: boolean and int + var33 = (byte)(var18 == 0 + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:641: error: incomparable types: boolean and int + } else if (var18 != 0 && "east".equals(var0)) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:643: error: incomparable types: boolean and int + } else if (var18 != 0 && "west".equals(var0)) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ain.java:487: error: incompatible types: boolean cannot be converted to int + var12 = var7.hearsOthers(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aiq.java:181: error: incompatible types: Object cannot be converted to String + for (String var12 : var9) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aiq.java:190: error: incompatible types: Object cannot be converted to String + for (String var20 : var4.keySet()) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:241: error: incompatible types: ItemStack cannot be converted to x + var2 = ((x)var1).hMI5_0$getTransform(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:295: error: incompatible types: ItemStack cannot be converted to x + ((x)var1).hMI5_0$setTransform(var2); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:305: error: incompatible types: ItemStack cannot be converted to x + ((x)var1).hMI5_0$setRenderAsBlock(var2); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:358: error: incompatible types: ItemStack cannot be converted to x + var2 = ((x)var1).hMI5_0$getRenderAsBlock(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:410: error: incompatible types: ItemStack cannot be converted to x + ((x)var1).hMI5_0$setSwingSpeed((int)var2); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:533: error: incompatible types: int cannot be converted to boolean + return new ad((boolean)var8, (boolean)var7, (boolean)var6, (boolean)((var9) != 0)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:533: error: incompatible types: int cannot be converted to boolean + return new ad((boolean)var8, (boolean)var7, (boolean)var6, (boolean)((var9) != 0)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:533: error: incompatible types: int cannot be converted to boolean + return new ad((boolean)var8, (boolean)var7, (boolean)var6, (boolean)((var9) != 0)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ajn.java:324: error: bad operand type int for unary operator '!' + if (!var2 && this.systemAudio != null) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ajn.java:329: error: bad operand type int for unary operator '!' + if (!var3 && this.microphoneAudio != null) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ajn.java:334: error: bad operand types for binary operator '&&' + if (var3 && this.microphoneAudio == null) { + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/ajn.java:340: error: bad operand types for binary operator '&&' + if (var2 && this.systemAudio == null) { + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/ajn.java:346: error: bad operand types for binary operator '&&' + } else if (var6 && this.microphoneAudio != null) { + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/ajn.java:823: error: incompatible types: boolean cannot be converted to int + var5 = ajx.export( + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/akd.java:44: error: incompatible types: Object cannot be converted to Path + for (Path var4 : var2.toList()) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ajq.java:135: error: cannot find symbol + return var4.getName(); + ^ + symbol: method getName() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ajq.java:175: error: cannot find symbol + return var4.getName(); + ^ + symbol: method getName() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ajq.java:178: error: cannot find symbol + if (var4.getName().equals(var0)) { + ^ + symbol: method getName() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ajx.java:105: error: incompatible types: Object cannot be converted to ByteBuffer + for (ByteBuffer var25 : await(var32)) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/akt.java:375: error: incompatible types: int cannot be converted to boolean + (boolean)(0), (boolean)((((62135556 | -62135555) + (62135556 & -62135555)) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/akt.java:718: error: incompatible types: int cannot be converted to boolean + (boolean)(0), (boolean)((((1524002324 | -1524002323) + (1524002324 & -1524002323)) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/akt.java:828: error: incompatible types: Object cannot be converted to akw + for (akw var4 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/akx.java:154: error: cannot find symbol + var1.sort((var0x, var1x) -> Integer.compare(var1x.getIntValue(), var0x.getIntValue())); + ^ + symbol: method getIntValue() + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/akx.java:154: error: cannot find symbol + var1.sort((var0x, var1x) -> Integer.compare(var1x.getIntValue(), var0x.getIntValue())); + ^ + symbol: method getIntValue() + location: variable var0x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:126: error: cannot find symbol + if (var5.isFile()) { + ^ + symbol: method isFile() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:153: error: cannot find symbol + if (isSupported(var5.getName())) { + ^ + symbol: method getName() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:160: error: incompatible types: invalid method reference + var1.sort(String::compareToIgnoreCase); + ^ + method compareToIgnoreCase in class String cannot be applied to given types + required: String + found: Object,Object + reason: actual and formal argument lists differ in length +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:163: error: cannot find symbol + var1.add(var5.getName()); + ^ + symbol: method getName() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:449: error: incompatible types: Object[] cannot be converted to BlockState[] + var44.toArray(new BlockState[0]), + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:522: error: incompatible types: Object[] cannot be converted to BlockState[] + var20.toArray(new BlockState[0]), + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:586: error: incompatible types: Object[] cannot be converted to BlockState[] + var7.toArray(new BlockState[0]), + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:802: error: cannot find symbol + var10 = var9.indexOf("="); + ^ + symbol: method indexOf(String) + location: variable var9 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:810: error: cannot find symbol + var11 = var3.getStateDefinition().getProperty(var9.substring(0, var10).trim()); + ^ + symbol: method substring(int,int) + location: variable var9 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:864: error: cannot find symbol + var4 = applyProperty(var4, var11, var9.substring(var10 + 1).trim()); + ^ + symbol: method substring(int) + location: variable var9 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ala.java:61: error: incompatible types: int cannot be converted to boolean + (boolean)(0), (boolean)((((1941589983 | -1941589982) + (1941589983 & -1941589982)) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ald.java:105: error: incompatible types: Object cannot be converted to BlockStateModelPart + for (BlockStateModelPart var9 : var5) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ald.java:127: error: incompatible types: Object[] cannot be converted to BakedQuad[] + var6.toArray(new BakedQuad[0]), + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ald.java:170: error: incompatible types: Object cannot be converted to BakedQuad + var2.add(var5); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/alp.java:54: error: cannot find symbol + id.warn(Cif.SECURITY, "secure string {} unavailable", id, failure); + ^ + symbol: method warn(Cif,String,String,Exception) + location: variable id of type String +/storage/aboba/evovis-client/src/main/java/defpackage/an.java:76: error: incompatible types: Object cannot be converted to String + for (String var17 : var4) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anb.java:574: error: incompatible types: Object cannot be converted to amy + for (amy var6 : var13) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anb.java:623: error: incompatible types: Object cannot be converted to amx + for (amx var23 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anb.java:632: error: incompatible types: Object cannot be converted to amy + for (amy var24 : var14) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anb.java:636: error: incompatible types: Object cannot be converted to amx + for (amx var25 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anb.java:687: error: incompatible types: Object cannot be converted to amx + for (amx var26 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anh.java:189: error: incomparable types: int and boolean + if (var5 != var2.visible) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anl.java:145: error: incompatible types: int cannot be converted to boolean + sharing = var1; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anl.java:146: error: bad operand type int for unary operator '!' + if (!var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anl.java:823: error: incompatible types: Object cannot be converted to JsonElement + .ifPresent(var1x -> var7.add("d", var1x)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anm.java:38: error: cannot find symbol + B var2 = null; + ^ + symbol: class B + location: class anm +/storage/aboba/evovis-client/src/main/java/defpackage/ans.java:176: error: cannot find symbol + var4.sort((var0, var1x) -> Long.compare(var0.offset(), var1x.offset())); + ^ + symbol: method offset() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ans.java:176: error: cannot find symbol + var4.sort((var0, var1x) -> Long.compare(var0.offset(), var1x.offset())); + ^ + symbol: method offset() + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ans.java:470: error: cannot find symbol + B var3 = null; + ^ + symbol: class B + location: class ans +/storage/aboba/evovis-client/src/main/java/defpackage/ans.java:759: error: incompatible types: Object cannot be converted to ByteBuffer + for (ByteBuffer var29 : var12) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ann.java:36: error: cannot find symbol + B var3 = null; + ^ + symbol: class B + location: class ann +/storage/aboba/evovis-client/src/main/java/defpackage/aod.java:729: error: incompatible types: int cannot be converted to boolean + daemon(() -> this.reap(var4, var5, var3, var6), "EvoWatchReaper-" + this.serial); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aod.java:795: error: bad operand type int for unary operator '!' + if (!var5) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/apm.java:160: error: incompatible types: boolean cannot be converted to int + var4 = var0.forward(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/apm.java:161: error: incompatible types: boolean cannot be converted to int + var5 = var0.backward(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/apm.java:162: error: incompatible types: boolean cannot be converted to int + var6 = var0.left(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/apm.java:163: error: incompatible types: boolean cannot be converted to int + var7 = var0.right(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/apm.java:171: error: incompatible types: int cannot be converted to boolean + return new Input((boolean)var4, (boolean)var5, (boolean)var6, (boolean)((var7) != 0), var0.jump(), var0.shift(), var0.sprint()); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/apm.java:171: error: incompatible types: int cannot be converted to boolean + return new Input((boolean)var4, (boolean)var5, (boolean)var6, (boolean)((var7) != 0), var0.jump(), var0.shift(), var0.sprint()); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/apm.java:171: error: incompatible types: int cannot be converted to boolean + return new Input((boolean)var4, (boolean)var5, (boolean)var6, (boolean)((var7) != 0), var0.jump(), var0.shift(), var0.sprint()); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aqr.java:171: error: incompatible types: boolean cannot be converted to int + var4 = var3.prepare(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aqr.java:228: error: incompatible types: boolean cannot be converted to int + var6 = var5.prepare(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/arb.java:9: error: incompatible types: cannot infer type-variable(s) S + private static final ThreadLocal SCRATCH = ThreadLocal.withInitial(ara::new); + ^ + (argument mismatch; invalid constructor reference + ara() has private access in ara) + where S is a type-variable: + S extends Object declared in method withInitial(Supplier) +/storage/aboba/evovis-client/src/main/java/defpackage/mx.java:183: error: incompatible types: boolean cannot be converted to int + var12 = var7.gradientBorder(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/atd.java:108: error: incompatible types: int cannot be converted to boolean + var1, var2, (boolean)(0), (boolean)((((465703916 ^ -465703916) + ((465703916 & -465703916) << 1)) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/atd.java:135: error: incompatible types: int cannot be converted to boolean + var1, var2, (boolean)(0), (boolean)(((0)) != 0), var3, var4 + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/atf.java:918: error: incomparable types: boolean and int + if (uniformOffsets[var20] != var13 || shapeCommands[var20] != var14) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/atf.java:920: error: incompatible types: boolean cannot be converted to int + var14 = shapeCommands[var20]; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aua.java:101: error: incompatible types: Object[] cannot be converted to ModelPart[] + var4 = var1.toArray(new ModelPart[0]); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aua.java:126: error: incompatible types: ModelPart cannot be converted to j + var5 = ((b.j)var0).evo$getChildren().values().iterator(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aua.java:241: error: incompatible types: ModelPart cannot be converted to j + var10 = ((b.j)var0).evo$getCubes().iterator(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aua.java:251: error: cannot find symbol + var20 = var19.worldX(); + ^ + symbol: method worldX() + location: variable var19 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aua.java:252: error: cannot find symbol + var21 = var19.worldY(); + ^ + symbol: method worldY() + location: variable var19 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aua.java:253: error: cannot find symbol + var22 = var19.worldZ(); + ^ + symbol: method worldZ() + location: variable var19 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aua.java:276: error: cannot find symbol + var16 = var15.vertices(); + ^ + symbol: method vertices() + location: variable var15 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auk.java:65: error: bad operand types for binary operator '==' + if (var1xx.width == var2x) { + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/auk.java:114: error: bad operand types for binary operator '==' + if (var1xx.width == var2x) { + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/aul.java:248: error: incomparable types: int and boolean + if (var0 == shaderPackConflict) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/vr.java:101: error: incompatible types: int cannot be converted to boolean + return var2; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/tr.java:1120: error: incompatible types: boolean cannot be converted to int + var9 = this.splashSetting.isEnabled(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/auv.java:359: error: cannot find symbol + if (var9.max(var8.getAxis()) < 0.75) { + ^ + symbol: method getAxis() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auv.java:366: error: cannot find symbol + if (var8.getAxisDirection() == AxisDirection.NEGATIVE) { + ^ + symbol: method getAxisDirection() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auv.java:411: error: cannot find symbol + return new Vector3f(var8.getStepX(), var8.getStepY(), var8.getStepZ()); + ^ + symbol: method getStepX() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auv.java:411: error: cannot find symbol + return new Vector3f(var8.getStepX(), var8.getStepY(), var8.getStepZ()); + ^ + symbol: method getStepY() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auv.java:411: error: cannot find symbol + return new Vector3f(var8.getStepX(), var8.getStepY(), var8.getStepZ()); + ^ + symbol: method getStepZ() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auv.java:459: error: cannot find symbol + if (var8.getAxisDirection() == AxisDirection.POSITIVE) { + ^ + symbol: method getAxisDirection() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auv.java:510: error: cannot find symbol + if (!(var9.min(var8.getAxis()) > 0.25)) { + ^ + symbol: method getAxis() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auw.java:467: error: cannot find symbol + id.error( + ^ + symbol: method error(Cif,String,String,Throwable) + location: variable id of type String +/storage/aboba/evovis-client/src/main/java/defpackage/bt.java:20: error: cannot find symbol + if (Modifier.isStatic(var4.getModifiers())) { + ^ + symbol: method getModifiers() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bt.java:29: error: cannot find symbol + System.out.println("RenderLayers " + var4.getName() + "()"); + ^ + symbol: method getName() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bt.java:37: error: cannot find symbol + if (var4.getReturnType() == RenderType.class) { + ^ + symbol: method getReturnType() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bt.java:45: error: cannot find symbol + if (Modifier.isStatic(var4.getModifiers())) { + ^ + symbol: method getModifiers() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bt.java:52: error: cannot find symbol + if (var4.getReturnType() == RenderType.class) { + ^ + symbol: method getReturnType() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bt.java:59: error: cannot find symbol + System.out.println("RenderLayer " + var4.getName() + "()"); + ^ + symbol: method getName() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bx.java:19: error: cannot find symbol + if (var5.getName().toLowerCase().contains("sprite")) { + ^ + symbol: method getName() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bx.java:27: error: cannot find symbol + if (Modifier.isPublic(var5.getModifiers())) { + ^ + symbol: method getModifiers() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bx.java:34: error: cannot find symbol + System.out.println(var5.getName() + " -> " + var5.getReturnType().getName()); + ^ + symbol: method getName() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bx.java:34: error: cannot find symbol + System.out.println(var5.getName() + " -> " + var5.getReturnType().getName()); + ^ + symbol: method getReturnType() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/cc.java:18: error: cannot find symbol + System.out.println(var4.getName()); + ^ + symbol: method getName() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/cm.java:178: error: cannot find symbol + decode(var5.substring(0, var6)), + ^ + symbol: method substring(int,int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/cm.java:179: error: cannot find symbol + decode(var5.substring(var6 + (-1733473423 ^ 1733473424) + ((-1733473423 & 1733473424) << 1))) + ^ + symbol: method substring(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/cm.java:185: error: cannot find symbol + var6 = var5.indexOf((-1539295674 ^ 1539295735) + ((-1539295674 & 1539295735) << 1)); + ^ + symbol: method indexOf(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/dq.java:56: error: incompatible types: Object cannot be converted to ams + ((LiteralArgumentBuilder)literal(var6).executes(var1x -> start(var5, (-1504016657 ^ 1504016657) + ((-1504016657 & 1504016657) << 1)))) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/dq.java:66: error: incompatible types: Object cannot be converted to ams + var5, + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ej.java:84: error: incompatible types: int cannot be converted to boolean + (boolean)(0), (boolean)((((981407847 ^ -981407846) + ((981407847 & -981407846) << 1)) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ej.java:113: error: incompatible types: int cannot be converted to boolean + .compareAndSet((boolean)(1), (boolean)((((-984041706 | 984041706) + (-984041706 & 984041706))) != 0)) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/gt.java:457: error: incompatible types: boolean cannot be converted to int + var10 = batching; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/gt.java:504: error: cannot find symbol + if (var21.hasNext()) { + ^ + symbol: method hasNext() + location: variable var21 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/gt.java:513: error: cannot find symbol + var22 = (gm)var21.next(); + ^ + symbol: method next() + location: variable var21 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/hl.java:82: error: incompatible types: invalid constructor reference + hh var6 = var1.computeIfAbsent(var5, hh::new); + ^ + incompatible types: Object cannot be converted to hk +/storage/aboba/evovis-client/src/main/java/defpackage/hl.java:89: error: incompatible types: cannot infer type-variable(s) T + var7.sort(Comparator.comparingDouble(hh::weight).reversed()); + ^ + (argument mismatch; invalid method reference + method weight in class hh cannot be applied to given types + required: no arguments + found: Object + reason: actual and formal argument lists differ in length) + where T is a type-variable: + T extends Object declared in method comparingDouble(ToDoubleFunction) +/storage/aboba/evovis-client/src/main/java/defpackage/hl.java:94: error: incompatible types: Object cannot be converted to hh + for (hh var9 : var7) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/hl.java:170: error: incompatible types: Object cannot be converted to he + for (he var25 : var20) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/hm.java:86: error: incompatible types: boolean cannot be converted to int + var4 = requiresExclusive(var2); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/hn.java:565: error: incompatible types: Object cannot be converted to hu + for (hu var18 : var6) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/hn.java:634: error: incompatible types: invalid method reference + var1.merge(var3.getIdentifier(), var3.getCount(), Integer::sum); + ^ + incompatible types: Object cannot be converted to int +/storage/aboba/evovis-client/src/main/java/defpackage/hy.java:354: error: no suitable method found for thenComparing(hu::getName) + case 1 -> var1.thenComparing(hu::getName); + ^ + method Comparator.thenComparing(Comparator) is not applicable + (argument mismatch; invalid method reference + method getName in class hu cannot be applied to given types + required: no arguments + found: Object,Object + reason: actual and formal argument lists differ in length) + method Comparator.thenComparing(Function) is not applicable + (argument mismatch; invalid method reference + method getName in class hu cannot be applied to given types + required: no arguments + found: Object + reason: actual and formal argument lists differ in length) +/storage/aboba/evovis-client/src/main/java/defpackage/hy.java:355: error: cannot find symbol + case 2 -> var1.thenComparingInt(var0 -> -var0.getGroupCount()); + ^ + symbol: method getGroupCount() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/hy.java:356: error: cannot find symbol + case 3 -> var1.thenComparingInt(var0 -> -var0.getRarity()); + ^ + symbol: method getRarity() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/hy.java:359: error: no suitable method found for thenComparing(hu::getIdentifier) + return var1.thenComparing(hu::getIdentifier).thenComparingInt(var0 -> -var0.getCount()); + ^ + method Comparator.thenComparing(Comparator) is not applicable + (argument mismatch; invalid method reference + method getIdentifier in class hu cannot be applied to given types + required: no arguments + found: Object,Object + reason: actual and formal argument lists differ in length) + method Comparator.thenComparing(Function) is not applicable + (argument mismatch; invalid method reference + method getIdentifier in class hu cannot be applied to given types + required: no arguments + found: Object + reason: actual and formal argument lists differ in length) +/storage/aboba/evovis-client/src/main/java/defpackage/id.java:587: error: cannot find symbol + var3 = var3 * ((-116436056 ^ 116436087) + ((-116436056 & 116436087) << 1)) + var0.name().hashCode(); + ^ + symbol: method name() + location: variable var0 of type Cif +/storage/aboba/evovis-client/src/main/java/defpackage/Cif.java:107: error: cannot find symbol + if (!cif.name().equalsIgnoreCase(strTrim)) { + ^ + symbol: method name() + location: variable cif of type Cif +/storage/aboba/evovis-client/src/main/java/defpackage/Cif.java:198: error: method valueOf in class Enum cannot be applied to given types; + return (Cif) Enum.valueOf(Cif.class, str); + ^ + required: Class,String + found: Class,String + reason: inference variable T has incompatible bounds + equality constraints: Cif + upper bounds: Enum + where T,E are type-variables: + T extends Enum declared in method valueOf(Class,String) + E extends Enum declared in class Enum +/storage/aboba/evovis-client/src/main/java/defpackage/Cif.java:202: error: constructor Object in class Object cannot be applied to given types; + super(str, i); + ^ + required: no arguments + found: String,int + reason: actual and formal argument lists differ in length +/storage/aboba/evovis-client/src/main/java/defpackage/Cif.java:231: error: cannot find symbol + return name().toLowerCase(Locale.ROOT); + ^ + symbol: method name() + location: class Cif +/storage/aboba/evovis-client/src/main/java/defpackage/Cif.java:246: error: incompatible types: int cannot be converted to boolean + return 0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/Cif.java:275: error: incompatible types: int cannot be converted to boolean + return i; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/im.java:66: error: cannot find symbol + if (var5.getClassName().startsWith("evo.")) { + ^ + symbol: method getClassName() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/im.java:187: error: bad operand types for binary operator '|' + var4 |= var9.getClassName().startsWith("evo."); + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/in.java:211: error: incompatible types: int cannot be converted to boolean + (boolean)(0), (boolean)((((31718635 ^ -31718634) + ((31718635 & -31718634) << 1)) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/j.java:230: error: cannot assign a value to final variable var3 + var3 = new i(var1, var0, var0.getAnnotation(k.class).value()); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/j.java:495: error: incompatible types: Object cannot be converted to i + for (i var4 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/j.java:502: error: incompatible types: Object cannot be converted to i + for (i var6 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/je.java:431: error: incompatible types: Object cannot be converted to long + for (long var12 : var9) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/je.java:447: error: array required, but Object found + var0x[0], var1x[0] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/je.java:447: error: array required, but Object found + var0x[0], var1x[0] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ji.java:50: error: incompatible types: boolean cannot be converted to int + .equalsIgnoreCase(var4[0].trim()); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/jt.java:255: error: incompatible types: Object cannot be converted to js + for (js var5 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/jt.java:276: error: incompatible types: Object cannot be converted to js + for (js var7 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/jt.java:342: error: incompatible types: Object cannot be converted to js + for (js var5 : var2) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/jz.java:50: error: incompatible types: Object cannot be converted to long + for (long var12 : var9) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/jz.java:60: error: array required, but Object found + var1.sort(Comparator.comparingLong(var0x -> var0x[0])); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ka.java:78: error: incompatible types: Object cannot be converted to String + for (String var7 : var16) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ko.java:48: error: incompatible types: Object cannot be converted to String + for (String var13 : var3) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ko.java:55: error: incompatible types: Object cannot be converted to String + for (String var16 : var3) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/lb.java:98: error: incompatible types: int cannot be converted to boolean + (boolean)(0), (boolean)((((-1625807854 ^ 1625807855) + ((-1625807854 & 1625807855) << 1)) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ld.java:131: error: incompatible types: boolean cannot be converted to int + var3 = MIRROR_FIRST_COUNTRIES.contains(var1); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ld.java:281: error: bad operand type int for unary operator '!' + if (!var6) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ld.java:289: error: incompatible types: cannot infer type-variable(s) U,T#2 + .thenCompose(Function.identity()); + ^ + (argument mismatch; Function cannot be converted to Function>) + where U,T#1,T#2 are type-variables: + U extends Object declared in method thenCompose(Function>) + T#1 extends Object declared in class CompletableFuture + T#2 extends Object declared in method identity() +/storage/aboba/evovis-client/src/main/java/defpackage/mk.java:132: error: incompatible types: Object cannot be converted to Path + for (Path var4 : var2) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/mr.java:48: error: incompatible types: Object cannot be converted to Entry + for (Entry var10 : ((Map)var7.getValue()).entrySet()) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/mr.java:57: error: incompatible types: invalid method reference + ItemStack.CODEC.encodeStart(var3, var16).result().ifPresent(var14::add); + ^ + no suitable method found for add(Object) + method JsonArray.add(Boolean) is not applicable + (argument mismatch; Object cannot be converted to Boolean) + method JsonArray.add(Character) is not applicable + (argument mismatch; Object cannot be converted to Character) + method JsonArray.add(Number) is not applicable + (argument mismatch; Object cannot be converted to Number) + method JsonArray.add(String) is not applicable + (argument mismatch; Object cannot be converted to String) + method JsonArray.add(JsonElement) is not applicable + (argument mismatch; Object cannot be converted to JsonElement) +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:175: error: cannot find symbol + if (var5.hasNext()) { + ^ + symbol: method hasNext() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:182: error: cannot find symbol + if (var7.hasNext()) { + ^ + symbol: method hasNext() + location: variable var7 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:189: error: cannot find symbol + if (var6.hasNext()) { + ^ + symbol: method hasNext() + location: variable var6 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:196: error: cannot find symbol + var7 = (Entry)var6.next(); + ^ + symbol: method next() + location: variable var6 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:197: error: cannot find symbol + var8 = (String)var7.getKey(); + ^ + symbol: method getKey() + location: variable var7 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:197: error: incompatible types: String cannot be converted to ItemStack + var8 = (String)var7.getKey(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:200: error: cannot find symbol + (ItemStack)var7.getValue(), + ^ + symbol: method getValue() + location: variable var7 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:198: error: cannot find symbol + var5.add( + ^ + symbol: method add(mo) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:219: error: cannot find symbol + var8 = (ItemStack)var7.next(); + ^ + symbol: method next() + location: variable var7 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:223: error: incompatible types: Object cannot be converted to long[] + long[] var10000 = var3.computeIfAbsent(var9, var0 -> new long[1]); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:229: error: cannot find symbol + var6 = (mp)var5.next(); + ^ + symbol: method next() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/mw.java:573: error: cannot find symbol + if (var9.name().equals(var5)) { + ^ + symbol: method name() + location: variable var9 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/mw.java:1406: error: incompatible types: boolean cannot be converted to int + var5 = var2; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/mw.java:1419: error: incompatible types: boolean cannot be converted to int + var5 = var3.getAsBoolean(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nj.java:1036: error: incompatible types: Object cannot be converted to nk + var1x.setBackdrop(new nl(var3, var3x, var2x.speed(), var2x.scale())); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:274: error: incompatible types: nx[] cannot be converted to Constable + var3 = var0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:275: error: incompatible types: Constable cannot be converted to Object[] + var4 = ((Object[])var3).length; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:280: error: incompatible types: Constable cannot be converted to Object[] + var6 = ((Object[])var3)[var5]; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:343: error: incompatible types: String[] cannot be converted to Constable + var3 = var1; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:344: error: incompatible types: Constable cannot be converted to Object[] + var4 = ((Object[])var3).length; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:349: error: incompatible types: Constable cannot be converted to Object[] + var6 = ((Object[])var3)[var5]; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:1203: error: incompatible types: Object cannot be converted to ob + var1x -> var1x.getMotion().duration(var4), + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:1204: error: incompatible types: Object cannot be converted to ob + (var1x, var2x) -> var1x.setMotion(var1x.getMotion().withDuration(var4, Math.round(var2x))), + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:1205: error: incompatible types: Object cannot be converted to ob + var1x -> var1x.getDefaultMotion().duration(var4) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:1334: error: cannot find symbol + var1x -> var1x.getSpacing().steps()[var4.ordinal()], + ^ + symbol: method ordinal() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:1335: error: incompatible types: Object cannot be converted to od + (var1x, var2x) -> var1x.setSpacing(var1x.getSpacing().withStep(var4, var2x)), + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:1336: error: cannot find symbol + var1x -> var1x.getDefaultSpacing().steps()[var4.ordinal()] + ^ + symbol: method ordinal() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/pp.java:382: error: incompatible types: boolean cannot be converted to int + var4 = var2x.getValue().isFinished((-2963141632649499039L | 2963141632649499039L) + (-2963141632649499039L & 2963141632649499039L)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/pp.java:388: error: incompatible types: boolean cannot be converted to int + var4 = var2x.getValue().isFinished(var24); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ql.java:32: error: incompatible types: Object cannot be converted to MobEffectInstance + for (MobEffectInstance var4 : new ArrayList(mc.player.getActiveEffectsMap().values())) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/qs.java:619: error: incompatible types: boolean cannot be converted to int + var5 = arz.hudItemsVisible(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/qs.java:1269: error: cannot find symbol + if (!var5.isEmpty()) { + ^ + symbol: method isEmpty() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ri.java:1235: error: cannot find symbol + return Integer.compare(var0.score(), var1x.score()); + ^ + symbol: method score() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ri.java:1235: error: cannot find symbol + return Integer.compare(var0.score(), var1x.score()); + ^ + symbol: method score() + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ri.java:1237: error: cannot find symbol + return Integer.compare(var0.position(), var1x.position()); + ^ + symbol: method position() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ri.java:1237: error: cannot find symbol + return Integer.compare(var0.position(), var1x.position()); + ^ + symbol: method position() + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ri.java:1241: error: cannot find symbol + if (var0.score() != var1x.score()) { + ^ + symbol: method score() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ri.java:1241: error: cannot find symbol + if (var0.score() != var1x.score()) { + ^ + symbol: method score() + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ri.java:1249: error: incompatible types: Object cannot be converted to rh + for (rh var11 : var2) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/tf.java:258: error: incompatible types: Object cannot be converted to Vec3 + var12 = var16.orElse(var2); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/tf.java:489: error: incompatible types: Object cannot be converted to Vec3 + return var13.map(var1x -> new EntityHitResult(var2, var1x)).orElse(null); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/tf.java:489: error: incompatible types: Object cannot be converted to EntityHitResult + return var13.map(var1x -> new EntityHitResult(var2, var1x)).orElse(null); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/th.java:315: error: incompatible types: boolean cannot be converted to int + var1 = isShiftDown(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/th.java:316: error: incompatible types: boolean cannot be converted to int + var2 = isControlDown(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/tt.java:722: error: incompatible types: boolean cannot be converted to int + var7 = this.shaderType.is("LiquidGlass"); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ty.java:264: error: incompatible types: boolean cannot be converted to int + var0 = active; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ue.java:1449: error: incompatible types: Object cannot be converted to amx + for (amx var5 : var3) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/up.java:444: error: incompatible types: int cannot be converted to boolean + return var2; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/uq.java:252: error: incompatible types: Object cannot be converted to Entry + for (Entry var31 : var9.entrySet()) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/uq.java:269: error: incompatible types: Object cannot be converted to long + for (long var32 : var26) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ut.java:1170: error: incompatible types: boolean cannot be converted to int + var5 = this.motionSetting.is("Helix"); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ut.java:1758: error: incompatible types: boolean cannot be converted to int + var7 = this.shaderType.is("LiquidGlass"); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ux.java:281: error: incompatible types: int cannot be converted to boolean + this.particles.get(var12x).render(var11x, var10x, var13, var6, var8, var16, var17, var18, var19); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/uy.java:375: error: incompatible types: boolean cannot be converted to int + var14 = var2.level().getLevelData().isHardcore(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/uy.java:601: error: incompatible types: boolean cannot be converted to int + var7 = var2.hasEffect(MobEffects.HUNGER); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/vd.java:452: error: incompatible types: boolean cannot be converted to int + var5 = mc.options.getCameraType().isFirstPerson(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/vd.java:454: error: no suitable method found for distanceToSqr(Object) + var6.sort(Comparator.comparingDouble(var0 -> -mc.player.distanceToSqr(var0))); + ^ + method Entity.distanceToSqr(Entity) is not applicable + (argument mismatch; Object cannot be converted to Entity) + method Entity.distanceToSqr(Vec3) is not applicable + (argument mismatch; Object cannot be converted to Vec3) +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:116: error: incompatible types: cannot infer type-variable(s) S + private static final ThreadLocal WORKSPACE_POOL = ThreadLocal.withInitial(vk::new); + ^ + (argument mismatch; invalid constructor reference + vk() has private access in vk) + where S is a type-variable: + S extends Object declared in method withInitial(Supplier) +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:1844: error: bad operand types for binary operator '|' + var22 |= emitGlowSeedForMesh(var21, var16, var13, var24, var14, var15, var11, var12, var18, var25, var26, var6, var7, var8); + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:1975: error: bad operand types for binary operator '|' + var15 |= emitGlowCurve( + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:1998: error: bad operand types for binary operator '|' + var15 |= emitGlowCurve( + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:2021: error: bad operand types for binary operator '|' + var15 |= emitGlowCurve( + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:2049: error: bad operand types for binary operator '|' + var15 |= emitGlowEdge( + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:2086: error: bad operand types for binary operator '|' + var15 |= emitProjectedGlowLine( + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:2222: error: bad operand types for binary operator '|' + var25 |= emitGlowWorldLine(var0, var1, var2, var3, var4, var5, var6, var21, var22, var23, var29, var30, var31, var7, var24, var32); + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:2426: error: incompatible types: boolean cannot be converted to int + var17 = projectGlowWorldPoint(var2, 9, var3, var4, var5, var6, var10, var11, var12, var15); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/vp.java:483: error: incompatible types: boolean cannot be converted to int + var4 = mc.player.onGround(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/vp.java:885: error: incompatible types: Object cannot be converted to vo + for (vo var38 : var14) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/vu.java:841: error: no suitable method found for distanceToSqr(Object) + var4.sort(Comparator.comparingDouble(var0 -> -mc.player.distanceToSqr(var0))); + ^ + method Entity.distanceToSqr(Entity) is not applicable + (argument mismatch; Object cannot be converted to Entity) + method Entity.distanceToSqr(Vec3) is not applicable + (argument mismatch; Object cannot be converted to Vec3) +/storage/aboba/evovis-client/src/main/java/defpackage/wb.java:259: error: incompatible types: boolean cannot be converted to int + }).anyMatch(var2x -> var2x.getBoundingBox().inflate(0.25).intersects(var8, var9)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/wd.java:935: error: incompatible types: boolean cannot be converted to int + var4 = this.shaderType.is("LiquidGlass"); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/wj.java:731: error: incompatible types: boolean cannot be converted to int + var4 = this.shaderType.is("LiquidGlass"); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ww.java:148: error: incompatible types: Object cannot be converted to xd + return var2.map(var1x -> new wv(var1x, extractName(var0))); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ww.java:479: error: incompatible types: boolean cannot be converted to int + var6 = "1".equals(var24); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ww.java:488: error: incompatible types: boolean cannot be converted to int + var9 = "1".equals(var24); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ww.java:524: error: incompatible types: boolean cannot be converted to int + var20 = "P".equals(var23); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ww.java:558: error: incompatible types: int cannot be converted to boolean + var27 = new xd(xh.CROSS, var2, var14, var13, var15, (boolean)var6, var7, var8, var16, (boolean)var9, (boolean)((var17) != 0), var18, var19); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ww.java:558: error: incompatible types: int cannot be converted to boolean + var27 = new xd(xh.CROSS, var2, var14, var13, var15, (boolean)var6, var7, var8, var16, (boolean)var9, (boolean)((var17) != 0), var18, var19); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/xf.java:329: error: incompatible types: boolean cannot be converted to int + var14 = var2.hasTopLine(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/xj.java:492: error: incompatible types: boolean cannot be converted to int + var5 = var3.getAsBoolean(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/xj.java:503: error: incompatible types: boolean cannot be converted to int + var5 = var2; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zz.java:263: error: incompatible types: boolean cannot be converted to int + int var18 = this.bounds.contains(this.scaleMouseX(var2, this.bounds), this.scaleMouseY(var3, this.bounds)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zz.java:276: error: incompatible types: boolean cannot be converted to int + int var21 = asa.hits( + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ajm.java:22: error: incompatible types: int cannot be converted to boolean + return 0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anu.java:40: error: incompatible types: int cannot be converted to boolean + return i; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/jb.java:21: error: incompatible types: int cannot be converted to boolean + return i; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/kk.java:25: error: incompatible types: int cannot be converted to boolean + return i; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zk.java:54: error: incompatible types: int cannot be converted to boolean + this.val$syncing[0] = 1; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zk.java:56: error: incompatible types: int cannot be converted to boolean + this.val$syncing[0] = 0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zm.java:46: error: incomparable types: int and boolean + this.val$pushed[0] = (IsEnabled == true ? 1 : 0) == true ? 1 : 0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zm.java:46: error: incompatible types: int cannot be converted to boolean + this.val$pushed[0] = (IsEnabled == true ? 1 : 0) == true ? 1 : 0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zm.java:47: error: incompatible types: bad type in conditional expression + this.val$token.writeFlag((mv) this.val$target.get(), IsEnabled == true ? 1 : 0); + ^ + int cannot be converted to boolean +/storage/aboba/evovis-client/src/main/java/defpackage/zm.java:61: error: incomparable types: int and boolean + this.val$pushed[0] = (flag == true ? 1 : 0) == true ? 1 : 0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zm.java:61: error: incompatible types: int cannot be converted to boolean + this.val$pushed[0] = (flag == true ? 1 : 0) == true ? 1 : 0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zm.java:62: error: incompatible types: bad type in conditional expression + this.val$setting.setEnabled(flag == true ? 1 : 0); + ^ + int cannot be converted to boolean +/storage/aboba/evovis-client/src/main/java/a/f.java:137: error: incomparable types: f and LocalPlayer + return this == Minecraft.getInstance().player ? aj.swingSpeed : original; + ^ +/storage/aboba/evovis-client/src/main/java/a/l.java:385: error: incompatible types: ItemStack cannot be converted to x + ((x)item).hMI5_0$setTransform(-1); + ^ +/storage/aboba/evovis-client/src/main/java/a/o.java:62: error: cannot find symbol + ((b.l)this).evo$getVertexBuilder(renderType).putBakedQuad(pose, quad, quadInstance); + ^ + symbol: class l + location: class b +/storage/aboba/evovis-client/src/main/java/b/ag.java:16: error: incompatible types: ag cannot be converted to LocalPlayer + HitResult hitResult = tf.INSTANCE.raycast((LocalPlayer)this, cameraEntity, partialTicks); + ^ +/storage/aboba/evovis-client/src/main/java/b/ap.java:27: error: incompatible types: ap cannot be converted to TitleScreen + xk toast = new xk((TitleScreen)this, this.font); + ^ +/storage/aboba/evovis-client/src/main/java/b/bd.java:17: error: incompatible types: bd cannot be converted to ModelFeatureRenderer + if (this instanceof ModelFeatureRenderer) { + ^ +/storage/aboba/evovis-client/src/main/java/b/be.java:17: error: incompatible types: be cannot be converted to Screen + Screen self = (Screen)this; + ^ +/storage/aboba/evovis-client/src/main/java/b/bg.java:83: error: incompatible types: GuiMessage cannot be converted to aqe + ? alpha * tq.INSTANCE.chatMessageAlpha(((aqe)line.parent()).evo$addedAt()) + ^ +/storage/aboba/evovis-client/src/main/java/b/bm.java:89: error: incompatible types: bm cannot be converted to InventoryScreen + return this instanceof InventoryScreen; + ^ +/storage/aboba/evovis-client/src/main/java/b/bp.java:55: error: incompatible types: bp cannot be converted to AbstractContainerScreen + AbstractContainerScreen screen = (AbstractContainerScreen)this; + ^ +/storage/aboba/evovis-client/src/main/java/b/bp.java:67: error: incompatible types: bp cannot be converted to AbstractContainerScreen + if (th.INSTANCE.onScroll((AbstractContainerScreen)this, mouseX, mouseY, vertical)) { + ^ +/storage/aboba/evovis-client/src/main/java/b/bp.java:74: error: incompatible types: bp cannot be converted to AbstractContainerScreen + if (th.INSTANCE.onDrag((AbstractContainerScreen)this, event.x(), event.y())) { + ^ +/storage/aboba/evovis-client/src/main/java/b/br.java:32: error: incompatible types: br cannot be converted to AbstractContainerScreen + xt.INSTANCE.update((AbstractContainerScreen)this, mouseX, mouseY, this.leftPos, this.topPos); + ^ +/storage/aboba/evovis-client/src/main/java/b/bt.java:17: error: incomparable types: bt and LocalPlayer + return this != mc.player ? instance.getYRot() : defpackage.bz.getInstance().getRotationManager().getCurrentRotation().getYaw(); + ^ +/storage/aboba/evovis-client/src/main/java/b/bt.java:22: error: incomparable types: bt and LocalPlayer + if (this == mc.player) { + ^ +/storage/aboba/evovis-client/src/main/java/b/bt.java:29: error: incomparable types: bt and LocalPlayer + if (this == mc.player) { + ^ +/storage/aboba/evovis-client/src/main/java/b/bu.java:28: error: incompatible types: bu cannot be converted to LocalPlayer + if (this instanceof LocalPlayer player) { + ^ +/storage/aboba/evovis-client/src/main/java/b/bu.java:39: error: incompatible types: bu cannot be converted to LocalPlayer + if (this instanceof LocalPlayer player) { + ^ +/storage/aboba/evovis-client/src/main/java/b/bu.java:48: error: incompatible types: bu cannot be converted to Player + Player player = (Player)this; + ^ +/storage/aboba/evovis-client/src/main/java/b/bx.java:27: error: package defpackage.defpackage does not exist + .execute(message.substring(defpackage.defpackage.bz.getInstance().getCommandManager().getPrefix().length()), bz.getInstance().getCommandManager().getSource()); + ^ +/storage/aboba/evovis-client/src/main/java/b/bx.java:27: error: cannot find symbol + .execute(message.substring(defpackage.defpackage.bz.getInstance().getCommandManager().getPrefix().length()), bz.getInstance().getCommandManager().getSource()); + ^ + symbol: method getInstance() + location: class bz +/storage/aboba/evovis-client/src/main/java/b/cb.java:30: error: incompatible types: cb cannot be converted to RenderLayer + RenderLayer self = (RenderLayer)this; + ^ +/storage/aboba/evovis-client/src/main/java/b/cr.java:18: error: package defpackage.b does not exist + ((defpackage.b.ck)this).evo$addFeature(new adp((RenderLayerParent)this)); + ^ +/storage/aboba/evovis-client/src/main/java/b/cv.java:15: error: incompatible types: cv cannot be converted to PlayerModel + vd.applyPose((PlayerModel)this, state); + ^ +/storage/aboba/evovis-client/src/main/java/b/dd.java:18: error: incompatible types: defpackage.ct cannot be converted to b.ct + private final ct evo$smoothSkipAnim = defpackage.ct.layoutMillis(6000.0F, 0.0F); + ^ +/storage/aboba/evovis-client/src/main/java/b/dd.java:22: error: incompatible types: dd cannot be converted to ClientLevel + if (this instanceof ClientLevel) { + ^ +/storage/aboba/evovis-client/src/main/java/b/dd.java:37: error: cannot find symbol + float currentAnimVal = this.evo$smoothSkipAnim.value(); + ^ + symbol: method value() + location: variable evo$smoothSkipAnim of type ct +/storage/aboba/evovis-client/src/main/java/b/dd.java:38: error: cannot find symbol + this.evo$smoothSkipAnim.jumpTo(currentAnimVal - (float)visualDelta); + ^ + symbol: method jumpTo(float) + location: variable evo$smoothSkipAnim of type ct +/storage/aboba/evovis-client/src/main/java/b/dd.java:39: error: cannot find symbol + this.evo$smoothSkipAnim.animateTo(0.0F); + ^ + symbol: method animateTo(float) + location: variable evo$smoothSkipAnim of type ct +/storage/aboba/evovis-client/src/main/java/b/dd.java:45: error: cannot find symbol + float currentOffset = this.evo$smoothSkipAnim.update(); + ^ + symbol: method update() + location: variable evo$smoothSkipAnim of type ct +/storage/aboba/evovis-client/src/main/java/b/dd.java:83: error: incompatible types: dd cannot be converted to ClientLevel + if (!(this instanceof ClientLevel)) { + ^ +/storage/aboba/evovis-client/src/main/java/b/q.java:18: error: incompatible types: q cannot be converted to AbstractClientPlayer + AbstractClientPlayer player = (AbstractClientPlayer)this; + ^ +/storage/aboba/evovis-client/src/main/java/b/t.java:49: error: package defpackage.defpackage does not exist + this.currentParse = defpackage.defpackage.bz.getInstance().getCommandManager().getDispatcher().parse(reader, bz.getInstance().getCommandManager().getSource()); + ^ +/storage/aboba/evovis-client/src/main/java/b/t.java:49: error: cannot find symbol + this.currentParse = defpackage.defpackage.bz.getInstance().getCommandManager().getDispatcher().parse(reader, bz.getInstance().getCommandManager().getSource()); + ^ + symbol: method getInstance() + location: class bz +/storage/aboba/evovis-client/src/main/java/b/t.java:54: error: incompatible types: ParseResults cannot be converted to ParseResults + this.pendingSuggestions = defpackage.bz.getInstance().getCommandManager().getDispatcher().getCompletionSuggestions(this.currentParse, cursor); + ^ +/storage/aboba/evovis-client/src/main/java/b/z.java:20: error: incomparable types: z and LocalPlayer + return this == mc.player ? true : original; + ^ +/storage/aboba/evovis-client/src/main/java/b/z.java:30: error: incompatible types: z cannot be converted to LocalPlayer + return this instanceof LocalPlayer && evo$rotationOverridden() ? defpackage.bz.getInstance().getRotationManager().getCurrentRotation().getPitch() : pitch; + ^ +/storage/aboba/evovis-client/src/main/java/b/z.java:35: error: incompatible types: z cannot be converted to LocalPlayer + return this instanceof LocalPlayer && evo$rotationOverridden() ? defpackage.bz.getInstance().getRotationManager().getCurrentRotation().getYaw() : yaw; + ^ +/storage/aboba/evovis-client/src/main/java/b/z.java:40: error: incompatible types: defpackage.bz cannot be converted to b.bz + bz evolution = defpackage.bz.getInstance(); + ^ +/storage/aboba/evovis-client/src/main/java/b/z.java:41: error: cannot find symbol + return evolution != null && evolution.getRotationManager() != null && evolution.getRotationManager().isRotationOverridden(); + ^ + symbol: method getRotationManager() + location: variable evolution of type bz +/storage/aboba/evovis-client/src/main/java/b/z.java:41: error: cannot find symbol + return evolution != null && evolution.getRotationManager() != null && evolution.getRotationManager().isRotationOverridden(); + ^ + symbol: method getRotationManager() + location: variable evolution of type bz +Note: Some input files use or override a deprecated API. +Note: Recompile with -Xlint:deprecation for details. +Note: Some input files use unchecked or unsafe operations. +Note: Recompile with -Xlint:unchecked for details. +Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output +463 errors + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':compileJava' (registered by plugin class 'org.gradle.api.plugins.JavaBasePlugin'). +> Compilation failed; see the compiler output below. + /storage/aboba/evovis-client/src/main/java/defpackage/ma.java:4: error: package kotlin does not exist + import kotlin.Pair; + ^ + 463 errors + +* Try: +> Check your code and dependencies to fix the compilation error(s) +> Run with --scan to get full insights from a Build Scan (powered by Develocity). + +BUILD FAILED in 36s diff --git a/build-logs/vfbuild13.log b/build-logs/vfbuild13.log new file mode 100644 index 0000000..37e118b --- /dev/null +++ b/build-logs/vfbuild13.log @@ -0,0 +1,1578 @@ +/storage/aboba/evovis-client/src/main/java/defpackage/ma.java:4: error: package kotlin does not exist +import kotlin.Pair; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ma.java:24: error: cannot find symbol + public Pair calculateFactors(apz var1, apz var2, aqi var3, aqi var4, aqi var5, float var6) { + ^ + symbol: class Pair + location: class ma +/storage/aboba/evovis-client/src/main/java/defpackage/gq.java:88: error: cannot find symbol + var2x.put(var1x.rightChar(), var1x.advance()); + ^ + symbol: method put(int,float) + location: variable var2x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:190: error: incompatible types: Object cannot be converted to aeb + for (aeb var20 : var16) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1115: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1115: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1175: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[0] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1176: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[1] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1186: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[4] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1187: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[5] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1197: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[8] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1198: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[9] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1208: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[12] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1209: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[13] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1291: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1291: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1400: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[0] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1401: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[1] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1411: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[4] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1412: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[5] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1422: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[8] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1423: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[9] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1433: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[12] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1434: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[13] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1504: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1504: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1564: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[0] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1565: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[1] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1575: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[4] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1576: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[5] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1586: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[8] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1587: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[9] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1597: error: bad operand types for binary operator '*' + var3 - ((Object[])var15)[12] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1598: error: bad operand types for binary operator '*' + var10 + ((Object[])var15)[13] * var9, + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1813: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1813: error: array required, but Object found + var0[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:1819: error: incompatible types: Object cannot be converted to float[] + for (float[] var9 : var3) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:2461: error: cannot find symbol + if (!var1x.getName().toLowerCase().contains(var12)) { + ^ + symbol: method getName() + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aah.java:2471: error: incompatible types: Object cannot be converted to aeb + for (aeb var13 : var11) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aaj.java:659: error: incompatible types: Object cannot be converted to amy + for (amy var26 : var22) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aaj.java:663: error: incompatible types: Object cannot be converted to amy + for (amy var39 : var23) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aaj.java:1970: error: incompatible types: Object cannot be converted to amw + for (amw var37 : var29) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aaj.java:1978: error: incompatible types: Object cannot be converted to String + for (String var42 : var39) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aaj.java:1989: error: incompatible types: Object cannot be converted to String + for (String var47 : var39) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ma.java:13: error: cannot find symbol + Pair var4 = this.calculateFactors( + ^ + symbol: class Pair + location: class ma +/storage/aboba/evovis-client/src/main/java/defpackage/ma.java:92: error: cannot find symbol + return new Pair(var13 * Math.abs(var8), var14 * Math.abs(var9)); + ^ + symbol: class Pair + location: class ma +/storage/aboba/evovis-client/src/main/java/defpackage/ed.java:345: error: cannot find symbol + var8 = var7.getName(); + ^ + symbol: method getName() + location: variable var7 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/mm.java:169: error: incompatible types: SoundInstance cannot be converted to ml + this.activeFadingSounds.put(var1, var8); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/sh.java:14: error: recursive constructor invocation + this(var1, var2); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zr.java:215: error: incomparable types: int and boolean + if (var1x != var2[0]) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zr.java:228: error: incomparable types: int and boolean + if (var2x != var2[0]) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/yy.java:356: error: incomparable types: Boolean and int + if (var4 != var6) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:5: error: constructor nb in enum nb cannot be applied to given types; + PROTANOPIA, + ^ + required: String,float[] + found: no arguments + reason: actual and formal argument lists differ in length +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:6: error: constructor nb in enum nb cannot be applied to given types; + DEUTERANOPIA, + ^ + required: String,float[] + found: no arguments + reason: actual and formal argument lists differ in length +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:7: error: constructor nb in enum nb cannot be applied to given types; + TRITANOPIA, + ^ + required: String,float[] + found: no arguments + reason: actual and formal argument lists differ in length +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:8: error: constructor nb in enum nb cannot be applied to given types; + ACHROMATOPSIA; + ^ + required: String,float[] + found: no arguments + reason: actual and formal argument lists differ in length +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:185: error: cannot assign a value to static final variable PROTANOPIA + PROTANOPIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:185: error: enum classes may not be instantiated + PROTANOPIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:199: error: cannot assign a value to static final variable DEUTERANOPIA + DEUTERANOPIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:199: error: enum classes may not be instantiated + DEUTERANOPIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:213: error: cannot assign a value to static final variable TRITANOPIA + TRITANOPIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:213: error: enum classes may not be instantiated + TRITANOPIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:227: error: cannot assign a value to static final variable ACHROMATOPSIA + ACHROMATOPSIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/nb.java:227: error: enum classes may not be instantiated + ACHROMATOPSIA = new nb(var10004, var10005); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aab.java:151: error: incomparable types: int and boolean + if (var1 != this.lastEnabled) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/abs.java:141: error: incompatible types: Object cannot be converted to Block + for (Block var25 : var13) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/acf.java:187: error: cannot find symbol + var9 = var8.trim(); + ^ + symbol: method trim() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/acf.java:586: error: cannot find symbol + return var1.flatMap(var1x -> var1x.findPath(var0)).filter(var0x -> Files.isRegularFile(var0x)); + ^ + symbol: method findPath(String) + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/acf.java:586: error: incompatible types: Object cannot be converted to Path + return var1.flatMap(var1x -> var1x.findPath(var0)).filter(var0x -> Files.isRegularFile(var0x)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ach.java:458: error: cannot find symbol + var6 = Comparator.comparing(var0 -> var0.stack().getHoverName().getString().toLowerCase(Locale.ROOT)); + ^ + symbol: method stack() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/acz.java:81: error: incompatible types: PerServerVersionScreen cannot be converted to k + var1 = (PerServerVersionScreen)var0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/acz.java:83: error: cannot find symbol + return new acx(var1.prevScreen, var2.evo$selectionConsumer(), var2.evo$selectionSupplier()); + ^ + symbol: variable prevScreen + location: variable var1 of type k +/storage/aboba/evovis-client/src/main/java/defpackage/acz.java:105: error: incompatible types: ViaFabricPlusScreen cannot be converted to k + var1 = (ViaFabricPlusScreen)var0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/acz.java:106: error: incompatible types: k cannot be converted to ViaFabricPlusScreen + return new acx(((ViaFabricPlusScreen)var1).prevScreen); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/adc.java:448: error: incompatible types: EnumValue cannot be converted to T + var0.setValue(var2[Math.floorMod(var3 + var1, var2.length)]); + ^ + where T is a type-variable: + T extends EnumValue declared in method cycle(EnumSetting,int) +/storage/aboba/evovis-client/src/main/java/defpackage/adf.java:298: error: bad operand types for binary operator '+' + var7.setRotX(((Object[])var8)[0] + (float)Math.toRadians(-var4)); + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/adf.java:299: error: bad operand types for binary operator '+' + var7.setRotY(((Object[])var8)[1] + (float)Math.toRadians(-var5)); + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/adf.java:300: error: bad operand types for binary operator '+' + var7.setRotZ(((Object[])var8)[2] + (float)Math.toRadians(var6)); + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/ado.java:147: error: for-each not applicable to expression type + for (Path var6 : var3.filter(var0x -> var0x.toString().toLowerCase().endsWith(".json")).sorted().collect(Collectors.toList())) { + ^ + required: array or java.lang.Iterable + found: Object +/storage/aboba/evovis-client/src/main/java/defpackage/ado.java:164: error: incompatible types: Object cannot be converted to Path + Path var16 = var15.filter(var0x -> var0x.toString().toLowerCase().endsWith(".png")).sorted().findFirst().orElse(null); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:783: error: bad operand types for binary operator '*' + var11[6] * ((Object[])var12)[0] + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:787: error: bad operand types for binary operator '*' + * ((Object[])var12)[1] + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:791: error: bad operand types for binary operator '*' + * ((Object[])var12)[2] + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:837: error: bad operand type Object for unary operator '-' + + (float)Math.toRadians(-((Object[])var12)[0]) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:841: error: bad operand type Object for unary operator '-' + + (float)Math.toRadians(-((Object[])var12)[1]) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:845: error: incompatible types: Object cannot be converted to double + + (float)Math.toRadians(((Object[])var12)[2]) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:856: error: bad operand types for binary operator '+' + var11[3] + ((Object[])var12)[0] + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:860: error: bad operand types for binary operator '+' + + ((Object[])var12)[1] + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:864: error: bad operand types for binary operator '+' + + ((Object[])var12)[2] + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:907: error: cannot find symbol + var10 = (adt)var8.getValue(); + ^ + symbol: method getValue() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:908: error: cannot find symbol + var11 = (float[])var4.get(var8.getKey()); + ^ + symbol: method getKey() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/adv.java:938: error: cannot find symbol + var9 = var1.findPart((String)var8.getKey()).orElse(null); + ^ + symbol: method getKey() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aeh.java:140: error: bad operand types for binary operator '+' + + (float)Math.toRadians(-var4[0]) + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aeh.java:144: error: bad operand types for binary operator '+' + + (float)Math.toRadians(-var4[1]) + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aeh.java:148: error: bad operand types for binary operator '+' + + (float)Math.toRadians(var4[2]) + ^ + first type: Object + second type: float +/storage/aboba/evovis-client/src/main/java/defpackage/aeo.java:310: error: cannot find symbol + var10.append(Component.literal(var10x.substring(var13x)).setStyle(var9x)); + ^ + symbol: method append(MutableComponent) + location: variable var10 of type Component +/storage/aboba/evovis-client/src/main/java/defpackage/aeo.java:328: error: cannot find symbol + var10.append( + ^ + symbol: method append(MutableComponent) + location: variable var10 of type Component +/storage/aboba/evovis-client/src/main/java/defpackage/aeo.java:345: error: cannot find symbol + var10.append(Component.literal(var10x.substring(var14x, var14x + var15x)).setStyle(var9x.withColor(var0.rgb(var16x, var4)))); + ^ + symbol: method append(MutableComponent) + location: variable var10 of type Component +/storage/aboba/evovis-client/src/main/java/defpackage/aeo.java:382: error: cannot find symbol + var10.append(Component.literal(var10x).setStyle(var9x)); + ^ + symbol: method append(MutableComponent) + location: variable var10 of type Component +/storage/aboba/evovis-client/src/main/java/defpackage/aeq.java:818: error: incompatible types: Object cannot be converted to Path + List var2 = var1.filter(var0x -> Files.isRegularFile(var0x)).sorted(Comparator.comparingLong(aeq::lastModified)).toList(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/afp.java:547: error: incompatible types: Object cannot be converted to agh + for (agh var5 : var2) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/afp.java:558: error: incompatible types: Object cannot be converted to String + for (String var6 : var15) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/afp.java:581: error: incompatible types: Object cannot be converted to aga + for (aga var9 : var21) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/afp.java:592: error: incompatible types: Object cannot be converted to String + for (String var10 : var22) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/afp.java:637: error: bad operand types for binary operator '&&' + int var16x = var29 && booleanOf(var25.get("full")) + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/afp.java:647: error: incompatible types: int cannot be converted to boolean + apply(var30, var13, var31, var16x, var14, var17x, var18, var19x, var21x, var22x); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/agk.java:358: error: cannot find symbol + var3.sort((var0, var1x) -> Long.compare(var0.placedAt(), var1x.placedAt())); + ^ + symbol: method placedAt() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/agk.java:358: error: cannot find symbol + var3.sort((var0, var1x) -> Long.compare(var0.placedAt(), var1x.placedAt())); + ^ + symbol: method placedAt() + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/agt.java:69: error: incompatible types: int cannot be converted to boolean + var2.submitCustomGeometry(var1, var11, (var5x, var6x) -> this.renderMesh(var5x, var6x, var8, var9, var3, var10)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/agx.java:398: error: bad operand types for binary operator '&&' + int var18 = var10 && var17 != null && var17.isJsonPrimitive() && var17.getAsBoolean() + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/agx.java:401: error: incompatible types: int cannot be converted to boolean + apply(var11, var7, var6, var18, var11x, var15, var16); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ahf.java:436: error: incompatible types: Object cannot be converted to String + for (String var7 : (Set)var4.getValue()) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ahi.java:131: error: incompatible types: Object[] cannot be converted to aho[] + var0, Math.max(var13, 0.0F), var3.toArray(new aho[0]), soundTimes(var1), soundNames(var1) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ahi.java:217: error: incompatible types: Object cannot be converted to Entry + for (Entry var10 : var2.entrySet()) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ahi.java:327: error: incompatible types: Object[] cannot be converted to String[] + return var1.values().toArray(new String[0]); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ahw.java:175: error: incompatible types: bad type in conditional expression + ? -1: var9.getOrDefault(var11.parent.name, (1226890724 | -1226890725) + (1226890724 & -1226890725)); + ^ + Object cannot be converted to int +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:272: error: cannot find symbol + if (var2.hasNext()) { + ^ + symbol: method hasNext() + location: variable var2 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:279: error: cannot find symbol + var3 = (String)var2.next(); + ^ + symbol: method next() + location: variable var2 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:284: error: cannot find symbol + if (var3.hasNext()) { + ^ + symbol: method hasNext() + location: variable var3 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:292: error: cannot find symbol + if (var2.isEmpty()) { + ^ + symbol: method isEmpty() + location: variable var2 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:301: error: cannot find symbol + var3 = ((aht)var2.get((-506941109 ^ 506941109) + ((-506941109 & 506941109) << 1))).hiddenBones().iterator(); + ^ + symbol: method get(int) + location: variable var2 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:312: error: cannot find symbol + var4 = (String)var3.next(); + ^ + symbol: method next() + location: variable var3 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:751: error: array required, but Object found + var0x[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ahn.java:751: error: array required, but Object found + var0x[16], var1x[16] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:280: error: cannot find symbol + var6 = (JsonElement)var5.next(); + ^ + symbol: method next() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:287: error: cannot find symbol + if (var5.hasNext()) { + ^ + symbol: method hasNext() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:302: error: cannot find symbol + var4.setRotX((float)Math.toRadians(-var5.get(0).getAsFloat())); + ^ + symbol: method get(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:303: error: cannot find symbol + var4.setRotY((float)Math.toRadians(-var5.get(1).getAsFloat())); + ^ + symbol: method get(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:304: error: cannot find symbol + var4.setRotZ((float)Math.toRadians(var5.get(2).getAsFloat())); + ^ + symbol: method get(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:309: error: cannot find symbol + var4.pivotX = -var5.get(0).getAsFloat(); + ^ + symbol: method get(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:310: error: cannot find symbol + var4.pivotY = var5.get(1).getAsFloat(); + ^ + symbol: method get(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:311: error: cannot find symbol + var4.pivotZ = var5.get(2).getAsFloat(); + ^ + symbol: method get(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:636: error: incompatible types: boolean cannot be converted to byte + byte var33 = var18; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:639: error: incomparable types: boolean and int + var33 = (byte)(var18 == 0 + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:641: error: incomparable types: boolean and int + } else if (var18 != 0 && "east".equals(var0)) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aid.java:643: error: incomparable types: boolean and int + } else if (var18 != 0 && "west".equals(var0)) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aiq.java:181: error: incompatible types: Object cannot be converted to String + for (String var12 : var9) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aiq.java:190: error: incompatible types: Object cannot be converted to String + for (String var20 : var4.keySet()) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:241: error: incompatible types: ItemStack cannot be converted to x + var2 = ((x)var1).hMI5_0$getTransform(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:295: error: incompatible types: ItemStack cannot be converted to x + ((x)var1).hMI5_0$setTransform(var2); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:305: error: incompatible types: ItemStack cannot be converted to x + ((x)var1).hMI5_0$setRenderAsBlock(var2); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:358: error: incompatible types: ItemStack cannot be converted to x + var2 = ((x)var1).hMI5_0$getRenderAsBlock(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:410: error: incompatible types: ItemStack cannot be converted to x + ((x)var1).hMI5_0$setSwingSpeed((int)var2); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:533: error: incompatible types: int cannot be converted to boolean + return new ad((boolean)var8, (boolean)var7, (boolean)(((var6) != 0)), (boolean)((var9) != 0)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/bn.java:533: error: incompatible types: int cannot be converted to boolean + return new ad((boolean)var8, (boolean)var7, (boolean)(((var6) != 0)), (boolean)((var9) != 0)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ajn.java:324: error: bad operand type int for unary operator '!' + if (!var2 && this.systemAudio != null) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ajn.java:329: error: bad operand type int for unary operator '!' + if (!var3 && this.microphoneAudio != null) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ajn.java:334: error: bad operand types for binary operator '&&' + if (var3 && this.microphoneAudio == null) { + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/ajn.java:340: error: bad operand types for binary operator '&&' + if (var2 && this.systemAudio == null) { + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/ajn.java:346: error: bad operand types for binary operator '&&' + } else if (var6 && this.microphoneAudio != null) { + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/akd.java:44: error: incompatible types: Object cannot be converted to Path + for (Path var4 : var2.toList()) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ajq.java:135: error: cannot find symbol + return var4.getName(); + ^ + symbol: method getName() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ajq.java:175: error: cannot find symbol + return var4.getName(); + ^ + symbol: method getName() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ajq.java:178: error: cannot find symbol + if (var4.getName().equals(var0)) { + ^ + symbol: method getName() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ajx.java:105: error: incompatible types: Object cannot be converted to ByteBuffer + for (ByteBuffer var25 : await(var32)) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/akt.java:828: error: incompatible types: Object cannot be converted to akw + for (akw var4 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/akx.java:154: error: cannot find symbol + var1.sort((var0x, var1x) -> Integer.compare(var1x.getIntValue(), var0x.getIntValue())); + ^ + symbol: method getIntValue() + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/akx.java:154: error: cannot find symbol + var1.sort((var0x, var1x) -> Integer.compare(var1x.getIntValue(), var0x.getIntValue())); + ^ + symbol: method getIntValue() + location: variable var0x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:126: error: cannot find symbol + if (var5.isFile()) { + ^ + symbol: method isFile() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:153: error: cannot find symbol + if (isSupported(var5.getName())) { + ^ + symbol: method getName() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:160: error: incompatible types: invalid method reference + var1.sort(String::compareToIgnoreCase); + ^ + method compareToIgnoreCase in class String cannot be applied to given types + required: String + found: Object,Object + reason: actual and formal argument lists differ in length +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:163: error: cannot find symbol + var1.add(var5.getName()); + ^ + symbol: method getName() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:449: error: incompatible types: Object[] cannot be converted to BlockState[] + var44.toArray(new BlockState[0]), + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:522: error: incompatible types: Object[] cannot be converted to BlockState[] + var20.toArray(new BlockState[0]), + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:586: error: incompatible types: Object[] cannot be converted to BlockState[] + var7.toArray(new BlockState[0]), + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:802: error: cannot find symbol + var10 = var9.indexOf("="); + ^ + symbol: method indexOf(String) + location: variable var9 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:810: error: cannot find symbol + var11 = var3.getStateDefinition().getProperty(var9.substring(0, var10).trim()); + ^ + symbol: method substring(int,int) + location: variable var9 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/akz.java:864: error: cannot find symbol + var4 = applyProperty(var4, var11, var9.substring(var10 + 1).trim()); + ^ + symbol: method substring(int) + location: variable var9 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ald.java:105: error: incompatible types: Object cannot be converted to BlockStateModelPart + for (BlockStateModelPart var9 : var5) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ald.java:127: error: incompatible types: Object[] cannot be converted to BakedQuad[] + var6.toArray(new BakedQuad[0]), + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ald.java:170: error: incompatible types: Object cannot be converted to BakedQuad + var2.add(var5); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/alp.java:54: error: cannot find symbol + id.warn(Cif.SECURITY, "secure string {} unavailable", id, failure); + ^ + symbol: method warn(Cif,String,String,Exception) + location: variable id of type String +/storage/aboba/evovis-client/src/main/java/defpackage/an.java:76: error: incompatible types: Object cannot be converted to String + for (String var17 : var4) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anb.java:574: error: incompatible types: Object cannot be converted to amy + for (amy var6 : var13) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anb.java:623: error: incompatible types: Object cannot be converted to amx + for (amx var23 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anb.java:632: error: incompatible types: Object cannot be converted to amy + for (amy var24 : var14) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anb.java:636: error: incompatible types: Object cannot be converted to amx + for (amx var25 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anb.java:687: error: incompatible types: Object cannot be converted to amx + for (amx var26 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anh.java:189: error: incomparable types: int and boolean + if (var5 != var2.visible) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anl.java:145: error: incompatible types: int cannot be converted to boolean + sharing = var1; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anl.java:146: error: bad operand type int for unary operator '!' + if (!var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anl.java:823: error: incompatible types: Object cannot be converted to JsonElement + .ifPresent(var1x -> var7.add("d", var1x)); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anm.java:38: error: cannot find symbol + B var2 = null; + ^ + symbol: class B + location: class anm +/storage/aboba/evovis-client/src/main/java/defpackage/ans.java:176: error: cannot find symbol + var4.sort((var0, var1x) -> Long.compare(var0.offset(), var1x.offset())); + ^ + symbol: method offset() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ans.java:176: error: cannot find symbol + var4.sort((var0, var1x) -> Long.compare(var0.offset(), var1x.offset())); + ^ + symbol: method offset() + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ans.java:470: error: cannot find symbol + B var3 = null; + ^ + symbol: class B + location: class ans +/storage/aboba/evovis-client/src/main/java/defpackage/ans.java:759: error: incompatible types: Object cannot be converted to ByteBuffer + for (ByteBuffer var29 : var12) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ann.java:36: error: cannot find symbol + B var3 = null; + ^ + symbol: class B + location: class ann +/storage/aboba/evovis-client/src/main/java/defpackage/aod.java:729: error: incompatible types: int cannot be converted to boolean + daemon(() -> this.reap(var4, var5, var3, var6), "EvoWatchReaper-" + this.serial); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aod.java:795: error: bad operand type int for unary operator '!' + if (!var5) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/apm.java:171: error: incompatible types: int cannot be converted to boolean + return new Input((boolean)var4, (boolean)var5, (boolean)(((var6) != 0)), (boolean)((var7) != 0), var0.jump(), var0.shift(), var0.sprint()); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/apm.java:171: error: incompatible types: int cannot be converted to boolean + return new Input((boolean)var4, (boolean)var5, (boolean)(((var6) != 0)), (boolean)((var7) != 0), var0.jump(), var0.shift(), var0.sprint()); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/arb.java:9: error: incompatible types: cannot infer type-variable(s) S + private static final ThreadLocal SCRATCH = ThreadLocal.withInitial(ara::new); + ^ + (argument mismatch; invalid constructor reference + ara() has private access in ara) + where S is a type-variable: + S extends Object declared in method withInitial(Supplier) +/storage/aboba/evovis-client/src/main/java/defpackage/atf.java:918: error: incomparable types: boolean and int + if (uniformOffsets[var20] != var13 || shapeCommands[var20] != var14) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aua.java:101: error: incompatible types: Object[] cannot be converted to ModelPart[] + var4 = var1.toArray(new ModelPart[0]); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aua.java:126: error: incompatible types: ModelPart cannot be converted to j + var5 = ((b.j)var0).evo$getChildren().values().iterator(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aua.java:241: error: incompatible types: ModelPart cannot be converted to j + var10 = ((b.j)var0).evo$getCubes().iterator(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/aua.java:251: error: cannot find symbol + var20 = var19.worldX(); + ^ + symbol: method worldX() + location: variable var19 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aua.java:252: error: cannot find symbol + var21 = var19.worldY(); + ^ + symbol: method worldY() + location: variable var19 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aua.java:253: error: cannot find symbol + var22 = var19.worldZ(); + ^ + symbol: method worldZ() + location: variable var19 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/aua.java:276: error: cannot find symbol + var16 = var15.vertices(); + ^ + symbol: method vertices() + location: variable var15 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auk.java:65: error: bad operand types for binary operator '==' + if (var1xx.width == var2x) { + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/auk.java:114: error: bad operand types for binary operator '==' + if (var1xx.width == var2x) { + ^ + first type: float + second type: Object +/storage/aboba/evovis-client/src/main/java/defpackage/aul.java:248: error: incomparable types: int and boolean + if (var0 == shaderPackConflict) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/vr.java:101: error: incompatible types: int cannot be converted to boolean + return var2; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/auv.java:359: error: cannot find symbol + if (var9.max(var8.getAxis()) < 0.75) { + ^ + symbol: method getAxis() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auv.java:366: error: cannot find symbol + if (var8.getAxisDirection() == AxisDirection.NEGATIVE) { + ^ + symbol: method getAxisDirection() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auv.java:411: error: cannot find symbol + return new Vector3f(var8.getStepX(), var8.getStepY(), var8.getStepZ()); + ^ + symbol: method getStepX() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auv.java:411: error: cannot find symbol + return new Vector3f(var8.getStepX(), var8.getStepY(), var8.getStepZ()); + ^ + symbol: method getStepY() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auv.java:411: error: cannot find symbol + return new Vector3f(var8.getStepX(), var8.getStepY(), var8.getStepZ()); + ^ + symbol: method getStepZ() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auv.java:459: error: cannot find symbol + if (var8.getAxisDirection() == AxisDirection.POSITIVE) { + ^ + symbol: method getAxisDirection() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auv.java:510: error: cannot find symbol + if (!(var9.min(var8.getAxis()) > 0.25)) { + ^ + symbol: method getAxis() + location: variable var8 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/auw.java:467: error: cannot find symbol + id.error( + ^ + symbol: method error(Cif,String,String,Throwable) + location: variable id of type String +/storage/aboba/evovis-client/src/main/java/defpackage/bt.java:20: error: cannot find symbol + if (Modifier.isStatic(var4.getModifiers())) { + ^ + symbol: method getModifiers() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bt.java:29: error: cannot find symbol + System.out.println("RenderLayers " + var4.getName() + "()"); + ^ + symbol: method getName() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bt.java:37: error: cannot find symbol + if (var4.getReturnType() == RenderType.class) { + ^ + symbol: method getReturnType() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bt.java:45: error: cannot find symbol + if (Modifier.isStatic(var4.getModifiers())) { + ^ + symbol: method getModifiers() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bt.java:52: error: cannot find symbol + if (var4.getReturnType() == RenderType.class) { + ^ + symbol: method getReturnType() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bt.java:59: error: cannot find symbol + System.out.println("RenderLayer " + var4.getName() + "()"); + ^ + symbol: method getName() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bx.java:19: error: cannot find symbol + if (var5.getName().toLowerCase().contains("sprite")) { + ^ + symbol: method getName() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bx.java:27: error: cannot find symbol + if (Modifier.isPublic(var5.getModifiers())) { + ^ + symbol: method getModifiers() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bx.java:34: error: cannot find symbol + System.out.println(var5.getName() + " -> " + var5.getReturnType().getName()); + ^ + symbol: method getName() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/bx.java:34: error: cannot find symbol + System.out.println(var5.getName() + " -> " + var5.getReturnType().getName()); + ^ + symbol: method getReturnType() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/cc.java:18: error: cannot find symbol + System.out.println(var4.getName()); + ^ + symbol: method getName() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/cm.java:178: error: cannot find symbol + decode(var5.substring(0, var6)), + ^ + symbol: method substring(int,int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/cm.java:179: error: cannot find symbol + decode(var5.substring(var6 + (-1733473423 ^ 1733473424) + ((-1733473423 & 1733473424) << 1))) + ^ + symbol: method substring(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/cm.java:185: error: cannot find symbol + var6 = var5.indexOf((-1539295674 ^ 1539295735) + ((-1539295674 & 1539295735) << 1)); + ^ + symbol: method indexOf(int) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/dq.java:56: error: incompatible types: Object cannot be converted to ams + ((LiteralArgumentBuilder)literal(var6).executes(var1x -> start(var5, (-1504016657 ^ 1504016657) + ((-1504016657 & 1504016657) << 1)))) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/dq.java:66: error: incompatible types: Object cannot be converted to ams + var5, + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/gt.java:504: error: cannot find symbol + if (var21.hasNext()) { + ^ + symbol: method hasNext() + location: variable var21 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/gt.java:513: error: cannot find symbol + var22 = (gm)var21.next(); + ^ + symbol: method next() + location: variable var21 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/hl.java:82: error: incompatible types: invalid constructor reference + hh var6 = var1.computeIfAbsent(var5, hh::new); + ^ + incompatible types: Object cannot be converted to hk +/storage/aboba/evovis-client/src/main/java/defpackage/hl.java:89: error: incompatible types: cannot infer type-variable(s) T + var7.sort(Comparator.comparingDouble(hh::weight).reversed()); + ^ + (argument mismatch; invalid method reference + method weight in class hh cannot be applied to given types + required: no arguments + found: Object + reason: actual and formal argument lists differ in length) + where T is a type-variable: + T extends Object declared in method comparingDouble(ToDoubleFunction) +/storage/aboba/evovis-client/src/main/java/defpackage/hl.java:94: error: incompatible types: Object cannot be converted to hh + for (hh var9 : var7) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/hl.java:170: error: incompatible types: Object cannot be converted to he + for (he var25 : var20) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/hn.java:565: error: incompatible types: Object cannot be converted to hu + for (hu var18 : var6) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/hn.java:634: error: incompatible types: invalid method reference + var1.merge(var3.getIdentifier(), var3.getCount(), Integer::sum); + ^ + incompatible types: Object cannot be converted to int +/storage/aboba/evovis-client/src/main/java/defpackage/hy.java:354: error: no suitable method found for thenComparing(hu::getName) + case 1 -> var1.thenComparing(hu::getName); + ^ + method Comparator.thenComparing(Comparator) is not applicable + (argument mismatch; invalid method reference + method getName in class hu cannot be applied to given types + required: no arguments + found: Object,Object + reason: actual and formal argument lists differ in length) + method Comparator.thenComparing(Function) is not applicable + (argument mismatch; invalid method reference + method getName in class hu cannot be applied to given types + required: no arguments + found: Object + reason: actual and formal argument lists differ in length) +/storage/aboba/evovis-client/src/main/java/defpackage/hy.java:355: error: cannot find symbol + case 2 -> var1.thenComparingInt(var0 -> -var0.getGroupCount()); + ^ + symbol: method getGroupCount() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/hy.java:356: error: cannot find symbol + case 3 -> var1.thenComparingInt(var0 -> -var0.getRarity()); + ^ + symbol: method getRarity() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/hy.java:359: error: no suitable method found for thenComparing(hu::getIdentifier) + return var1.thenComparing(hu::getIdentifier).thenComparingInt(var0 -> -var0.getCount()); + ^ + method Comparator.thenComparing(Comparator) is not applicable + (argument mismatch; invalid method reference + method getIdentifier in class hu cannot be applied to given types + required: no arguments + found: Object,Object + reason: actual and formal argument lists differ in length) + method Comparator.thenComparing(Function) is not applicable + (argument mismatch; invalid method reference + method getIdentifier in class hu cannot be applied to given types + required: no arguments + found: Object + reason: actual and formal argument lists differ in length) +/storage/aboba/evovis-client/src/main/java/defpackage/id.java:587: error: cannot find symbol + var3 = var3 * ((-116436056 ^ 116436087) + ((-116436056 & 116436087) << 1)) + var0.name().hashCode(); + ^ + symbol: method name() + location: variable var0 of type Cif +/storage/aboba/evovis-client/src/main/java/defpackage/Cif.java:107: error: cannot find symbol + if (!cif.name().equalsIgnoreCase(strTrim)) { + ^ + symbol: method name() + location: variable cif of type Cif +/storage/aboba/evovis-client/src/main/java/defpackage/Cif.java:198: error: method valueOf in class Enum cannot be applied to given types; + return (Cif) Enum.valueOf(Cif.class, str); + ^ + required: Class,String + found: Class,String + reason: inference variable T has incompatible bounds + equality constraints: Cif + upper bounds: Enum + where T,E are type-variables: + T extends Enum declared in method valueOf(Class,String) + E extends Enum declared in class Enum +/storage/aboba/evovis-client/src/main/java/defpackage/Cif.java:202: error: constructor Object in class Object cannot be applied to given types; + super(str, i); + ^ + required: no arguments + found: String,int + reason: actual and formal argument lists differ in length +/storage/aboba/evovis-client/src/main/java/defpackage/Cif.java:231: error: cannot find symbol + return name().toLowerCase(Locale.ROOT); + ^ + symbol: method name() + location: class Cif +/storage/aboba/evovis-client/src/main/java/defpackage/Cif.java:246: error: incompatible types: int cannot be converted to boolean + return 0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/Cif.java:275: error: incompatible types: int cannot be converted to boolean + return i; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/im.java:66: error: cannot find symbol + if (var5.getClassName().startsWith("evo.")) { + ^ + symbol: method getClassName() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/im.java:187: error: bad operand types for binary operator '|' + var4 |= var9.getClassName().startsWith("evo."); + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/j.java:230: error: cannot assign a value to final variable var3 + var3 = new i(var1, var0, var0.getAnnotation(k.class).value()); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/j.java:495: error: incompatible types: Object cannot be converted to i + for (i var4 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/j.java:502: error: incompatible types: Object cannot be converted to i + for (i var6 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/je.java:431: error: incompatible types: Object cannot be converted to long + for (long var12 : var9) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/je.java:447: error: array required, but Object found + var0x[0], var1x[0] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/je.java:447: error: array required, but Object found + var0x[0], var1x[0] + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/jt.java:255: error: incompatible types: Object cannot be converted to js + for (js var5 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/jt.java:276: error: incompatible types: Object cannot be converted to js + for (js var7 : var1) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/jt.java:342: error: incompatible types: Object cannot be converted to js + for (js var5 : var2) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/jz.java:50: error: incompatible types: Object cannot be converted to long + for (long var12 : var9) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/jz.java:60: error: array required, but Object found + var1.sort(Comparator.comparingLong(var0x -> var0x[0])); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ka.java:78: error: incompatible types: Object cannot be converted to String + for (String var7 : var16) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ko.java:48: error: incompatible types: Object cannot be converted to String + for (String var13 : var3) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ko.java:55: error: incompatible types: Object cannot be converted to String + for (String var16 : var3) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ld.java:281: error: bad operand type int for unary operator '!' + if (!var6) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ld.java:289: error: incompatible types: cannot infer type-variable(s) U,T#2 + .thenCompose(Function.identity()); + ^ + (argument mismatch; Function cannot be converted to Function>) + where U,T#1,T#2 are type-variables: + U extends Object declared in method thenCompose(Function>) + T#1 extends Object declared in class CompletableFuture + T#2 extends Object declared in method identity() +/storage/aboba/evovis-client/src/main/java/defpackage/mk.java:132: error: incompatible types: Object cannot be converted to Path + for (Path var4 : var2) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/mr.java:48: error: incompatible types: Object cannot be converted to Entry + for (Entry var10 : ((Map)var7.getValue()).entrySet()) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/mr.java:57: error: incompatible types: invalid method reference + ItemStack.CODEC.encodeStart(var3, var16).result().ifPresent(var14::add); + ^ + no suitable method found for add(Object) + method JsonArray.add(Boolean) is not applicable + (argument mismatch; Object cannot be converted to Boolean) + method JsonArray.add(Character) is not applicable + (argument mismatch; Object cannot be converted to Character) + method JsonArray.add(Number) is not applicable + (argument mismatch; Object cannot be converted to Number) + method JsonArray.add(String) is not applicable + (argument mismatch; Object cannot be converted to String) + method JsonArray.add(JsonElement) is not applicable + (argument mismatch; Object cannot be converted to JsonElement) +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:175: error: cannot find symbol + if (var5.hasNext()) { + ^ + symbol: method hasNext() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:182: error: cannot find symbol + if (var7.hasNext()) { + ^ + symbol: method hasNext() + location: variable var7 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:189: error: cannot find symbol + if (var6.hasNext()) { + ^ + symbol: method hasNext() + location: variable var6 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:196: error: cannot find symbol + var7 = (Entry)var6.next(); + ^ + symbol: method next() + location: variable var6 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:197: error: cannot find symbol + var8 = (String)var7.getKey(); + ^ + symbol: method getKey() + location: variable var7 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:197: error: incompatible types: String cannot be converted to ItemStack + var8 = (String)var7.getKey(); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:200: error: cannot find symbol + (ItemStack)var7.getValue(), + ^ + symbol: method getValue() + location: variable var7 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:198: error: cannot find symbol + var5.add( + ^ + symbol: method add(mo) + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:219: error: cannot find symbol + var8 = (ItemStack)var7.next(); + ^ + symbol: method next() + location: variable var7 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:223: error: incompatible types: Object cannot be converted to long[] + long[] var10000 = var3.computeIfAbsent(var9, var0 -> new long[1]); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ms.java:229: error: cannot find symbol + var6 = (mp)var5.next(); + ^ + symbol: method next() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/mw.java:573: error: cannot find symbol + if (var9.name().equals(var5)) { + ^ + symbol: method name() + location: variable var9 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/nj.java:1036: error: incompatible types: Object cannot be converted to nk + var1x.setBackdrop(new nl(var3, var3x, var2x.speed(), var2x.scale())); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:274: error: incompatible types: nx[] cannot be converted to Constable + var3 = var0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:275: error: incompatible types: Constable cannot be converted to Object[] + var4 = ((Object[])var3).length; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:280: error: incompatible types: Constable cannot be converted to Object[] + var6 = ((Object[])var3)[var5]; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:343: error: incompatible types: String[] cannot be converted to Constable + var3 = var1; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:344: error: incompatible types: Constable cannot be converted to Object[] + var4 = ((Object[])var3).length; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:349: error: incompatible types: Constable cannot be converted to Object[] + var6 = ((Object[])var3)[var5]; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:1203: error: incompatible types: Object cannot be converted to ob + var1x -> var1x.getMotion().duration(var4), + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:1204: error: incompatible types: Object cannot be converted to ob + (var1x, var2x) -> var1x.setMotion(var1x.getMotion().withDuration(var4, Math.round(var2x))), + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:1205: error: incompatible types: Object cannot be converted to ob + var1x -> var1x.getDefaultMotion().duration(var4) + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:1334: error: cannot find symbol + var1x -> var1x.getSpacing().steps()[var4.ordinal()], + ^ + symbol: method ordinal() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:1335: error: incompatible types: Object cannot be converted to od + (var1x, var2x) -> var1x.setSpacing(var1x.getSpacing().withStep(var4, var2x)), + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/op.java:1336: error: cannot find symbol + var1x -> var1x.getDefaultSpacing().steps()[var4.ordinal()] + ^ + symbol: method ordinal() + location: variable var4 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ql.java:32: error: incompatible types: Object cannot be converted to MobEffectInstance + for (MobEffectInstance var4 : new ArrayList(mc.player.getActiveEffectsMap().values())) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/qs.java:1269: error: cannot find symbol + if (!var5.isEmpty()) { + ^ + symbol: method isEmpty() + location: variable var5 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ri.java:1235: error: cannot find symbol + return Integer.compare(var0.score(), var1x.score()); + ^ + symbol: method score() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ri.java:1235: error: cannot find symbol + return Integer.compare(var0.score(), var1x.score()); + ^ + symbol: method score() + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ri.java:1237: error: cannot find symbol + return Integer.compare(var0.position(), var1x.position()); + ^ + symbol: method position() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ri.java:1237: error: cannot find symbol + return Integer.compare(var0.position(), var1x.position()); + ^ + symbol: method position() + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ri.java:1241: error: cannot find symbol + if (var0.score() != var1x.score()) { + ^ + symbol: method score() + location: variable var0 of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ri.java:1241: error: cannot find symbol + if (var0.score() != var1x.score()) { + ^ + symbol: method score() + location: variable var1x of type Object +/storage/aboba/evovis-client/src/main/java/defpackage/ri.java:1249: error: incompatible types: Object cannot be converted to rh + for (rh var11 : var2) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/tf.java:258: error: incompatible types: Object cannot be converted to Vec3 + var12 = var16.orElse(var2); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/tf.java:489: error: incompatible types: Object cannot be converted to Vec3 + return var13.map(var1x -> new EntityHitResult(var2, var1x)).orElse(null); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/tf.java:489: error: incompatible types: Object cannot be converted to EntityHitResult + return var13.map(var1x -> new EntityHitResult(var2, var1x)).orElse(null); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ue.java:1449: error: incompatible types: Object cannot be converted to amx + for (amx var5 : var3) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/up.java:444: error: incompatible types: int cannot be converted to boolean + return var2; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/uq.java:252: error: incompatible types: Object cannot be converted to Entry + for (Entry var31 : var9.entrySet()) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/uq.java:269: error: incompatible types: Object cannot be converted to long + for (long var32 : var26) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ux.java:281: error: incompatible types: int cannot be converted to boolean + this.particles.get(var12x).render(var11x, var10x, var13, var6, var8, var16, var17, var18, var19); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/vd.java:454: error: no suitable method found for distanceToSqr(Object) + var6.sort(Comparator.comparingDouble(var0 -> -mc.player.distanceToSqr(var0))); + ^ + method Entity.distanceToSqr(Entity) is not applicable + (argument mismatch; Object cannot be converted to Entity) + method Entity.distanceToSqr(Vec3) is not applicable + (argument mismatch; Object cannot be converted to Vec3) +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:116: error: incompatible types: cannot infer type-variable(s) S + private static final ThreadLocal WORKSPACE_POOL = ThreadLocal.withInitial(vk::new); + ^ + (argument mismatch; invalid constructor reference + vk() has private access in vk) + where S is a type-variable: + S extends Object declared in method withInitial(Supplier) +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:1844: error: bad operand types for binary operator '|' + var22 |= emitGlowSeedForMesh(var21, var16, var13, var24, var14, var15, var11, var12, var18, var25, var26, var6, var7, var8); + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:1975: error: bad operand types for binary operator '|' + var15 |= emitGlowCurve( + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:1998: error: bad operand types for binary operator '|' + var15 |= emitGlowCurve( + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:2021: error: bad operand types for binary operator '|' + var15 |= emitGlowCurve( + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:2049: error: bad operand types for binary operator '|' + var15 |= emitGlowEdge( + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:2086: error: bad operand types for binary operator '|' + var15 |= emitProjectedGlowLine( + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/vl.java:2222: error: bad operand types for binary operator '|' + var25 |= emitGlowWorldLine(var0, var1, var2, var3, var4, var5, var6, var21, var22, var23, var29, var30, var31, var7, var24, var32); + ^ + first type: int + second type: boolean +/storage/aboba/evovis-client/src/main/java/defpackage/vp.java:885: error: incompatible types: Object cannot be converted to vo + for (vo var38 : var14) { + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/vu.java:841: error: no suitable method found for distanceToSqr(Object) + var4.sort(Comparator.comparingDouble(var0 -> -mc.player.distanceToSqr(var0))); + ^ + method Entity.distanceToSqr(Entity) is not applicable + (argument mismatch; Object cannot be converted to Entity) + method Entity.distanceToSqr(Vec3) is not applicable + (argument mismatch; Object cannot be converted to Vec3) +/storage/aboba/evovis-client/src/main/java/defpackage/ww.java:148: error: incompatible types: Object cannot be converted to xd + return var2.map(var1x -> new wv(var1x, extractName(var0))); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ww.java:558: error: incompatible types: int cannot be converted to boolean + var27 = new xd(xh.CROSS, var2, var14, var13, var15, (boolean)var6, var7, var8, var16, (boolean)(((var9) != 0)), (boolean)((var17) != 0), var18, var19); + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/ajm.java:22: error: incompatible types: int cannot be converted to boolean + return 0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/anu.java:40: error: incompatible types: int cannot be converted to boolean + return i; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/jb.java:21: error: incompatible types: int cannot be converted to boolean + return i; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/kk.java:25: error: incompatible types: int cannot be converted to boolean + return i; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zk.java:54: error: incompatible types: int cannot be converted to boolean + this.val$syncing[0] = 1; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zk.java:56: error: incompatible types: int cannot be converted to boolean + this.val$syncing[0] = 0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zm.java:46: error: incomparable types: int and boolean + this.val$pushed[0] = (IsEnabled == true ? 1 : 0) == true ? 1 : 0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zm.java:46: error: incompatible types: int cannot be converted to boolean + this.val$pushed[0] = (IsEnabled == true ? 1 : 0) == true ? 1 : 0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zm.java:47: error: incompatible types: bad type in conditional expression + this.val$token.writeFlag((mv) this.val$target.get(), IsEnabled == true ? 1 : 0); + ^ + int cannot be converted to boolean +/storage/aboba/evovis-client/src/main/java/defpackage/zm.java:61: error: incomparable types: int and boolean + this.val$pushed[0] = (flag == true ? 1 : 0) == true ? 1 : 0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zm.java:61: error: incompatible types: int cannot be converted to boolean + this.val$pushed[0] = (flag == true ? 1 : 0) == true ? 1 : 0; + ^ +/storage/aboba/evovis-client/src/main/java/defpackage/zm.java:62: error: incompatible types: bad type in conditional expression + this.val$setting.setEnabled(flag == true ? 1 : 0); + ^ + int cannot be converted to boolean +/storage/aboba/evovis-client/src/main/java/a/f.java:137: error: incomparable types: f and LocalPlayer + return this == Minecraft.getInstance().player ? aj.swingSpeed : original; + ^ +/storage/aboba/evovis-client/src/main/java/a/l.java:385: error: incompatible types: ItemStack cannot be converted to x + ((x)item).hMI5_0$setTransform(-1); + ^ +/storage/aboba/evovis-client/src/main/java/a/o.java:62: error: cannot find symbol + ((b.l)this).evo$getVertexBuilder(renderType).putBakedQuad(pose, quad, quadInstance); + ^ + symbol: class l + location: class b +/storage/aboba/evovis-client/src/main/java/b/ag.java:16: error: incompatible types: ag cannot be converted to LocalPlayer + HitResult hitResult = tf.INSTANCE.raycast((LocalPlayer)this, cameraEntity, partialTicks); + ^ +/storage/aboba/evovis-client/src/main/java/b/ap.java:27: error: incompatible types: ap cannot be converted to TitleScreen + xk toast = new xk((TitleScreen)this, this.font); + ^ +/storage/aboba/evovis-client/src/main/java/b/bd.java:17: error: incompatible types: bd cannot be converted to ModelFeatureRenderer + if (this instanceof ModelFeatureRenderer) { + ^ +/storage/aboba/evovis-client/src/main/java/b/be.java:17: error: incompatible types: be cannot be converted to Screen + Screen self = (Screen)this; + ^ +/storage/aboba/evovis-client/src/main/java/b/bg.java:83: error: incompatible types: GuiMessage cannot be converted to aqe + ? alpha * tq.INSTANCE.chatMessageAlpha(((aqe)line.parent()).evo$addedAt()) + ^ +/storage/aboba/evovis-client/src/main/java/b/bm.java:89: error: incompatible types: bm cannot be converted to InventoryScreen + return this instanceof InventoryScreen; + ^ +/storage/aboba/evovis-client/src/main/java/b/bp.java:55: error: incompatible types: bp cannot be converted to AbstractContainerScreen + AbstractContainerScreen screen = (AbstractContainerScreen)this; + ^ +/storage/aboba/evovis-client/src/main/java/b/bp.java:67: error: incompatible types: bp cannot be converted to AbstractContainerScreen + if (th.INSTANCE.onScroll((AbstractContainerScreen)this, mouseX, mouseY, vertical)) { + ^ +/storage/aboba/evovis-client/src/main/java/b/bp.java:74: error: incompatible types: bp cannot be converted to AbstractContainerScreen + if (th.INSTANCE.onDrag((AbstractContainerScreen)this, event.x(), event.y())) { + ^ +/storage/aboba/evovis-client/src/main/java/b/br.java:32: error: incompatible types: br cannot be converted to AbstractContainerScreen + xt.INSTANCE.update((AbstractContainerScreen)this, mouseX, mouseY, this.leftPos, this.topPos); + ^ +/storage/aboba/evovis-client/src/main/java/b/bt.java:17: error: incomparable types: bt and LocalPlayer + return this != mc.player ? instance.getYRot() : defpackage.bz.getInstance().getRotationManager().getCurrentRotation().getYaw(); + ^ +/storage/aboba/evovis-client/src/main/java/b/bt.java:22: error: incomparable types: bt and LocalPlayer + if (this == mc.player) { + ^ +/storage/aboba/evovis-client/src/main/java/b/bt.java:29: error: incomparable types: bt and LocalPlayer + if (this == mc.player) { + ^ +/storage/aboba/evovis-client/src/main/java/b/bu.java:28: error: incompatible types: bu cannot be converted to LocalPlayer + if (this instanceof LocalPlayer player) { + ^ +/storage/aboba/evovis-client/src/main/java/b/bu.java:39: error: incompatible types: bu cannot be converted to LocalPlayer + if (this instanceof LocalPlayer player) { + ^ +/storage/aboba/evovis-client/src/main/java/b/bu.java:48: error: incompatible types: bu cannot be converted to Player + Player player = (Player)this; + ^ +/storage/aboba/evovis-client/src/main/java/b/bx.java:27: error: package defpackage.defpackage does not exist + .execute(message.substring(defpackage.defpackage.bz.getInstance().getCommandManager().getPrefix().length()), bz.getInstance().getCommandManager().getSource()); + ^ +/storage/aboba/evovis-client/src/main/java/b/bx.java:27: error: cannot find symbol + .execute(message.substring(defpackage.defpackage.bz.getInstance().getCommandManager().getPrefix().length()), bz.getInstance().getCommandManager().getSource()); + ^ + symbol: method getInstance() + location: class bz +/storage/aboba/evovis-client/src/main/java/b/cb.java:30: error: incompatible types: cb cannot be converted to RenderLayer + RenderLayer self = (RenderLayer)this; + ^ +/storage/aboba/evovis-client/src/main/java/b/cr.java:18: error: package defpackage.b does not exist + ((defpackage.b.ck)this).evo$addFeature(new adp((RenderLayerParent)this)); + ^ +/storage/aboba/evovis-client/src/main/java/b/cv.java:15: error: incompatible types: cv cannot be converted to PlayerModel + vd.applyPose((PlayerModel)this, state); + ^ +/storage/aboba/evovis-client/src/main/java/b/dd.java:18: error: incompatible types: defpackage.ct cannot be converted to b.ct + private final ct evo$smoothSkipAnim = defpackage.ct.layoutMillis(6000.0F, 0.0F); + ^ +/storage/aboba/evovis-client/src/main/java/b/dd.java:22: error: incompatible types: dd cannot be converted to ClientLevel + if (this instanceof ClientLevel) { + ^ +/storage/aboba/evovis-client/src/main/java/b/dd.java:37: error: cannot find symbol + float currentAnimVal = this.evo$smoothSkipAnim.value(); + ^ + symbol: method value() + location: variable evo$smoothSkipAnim of type ct +/storage/aboba/evovis-client/src/main/java/b/dd.java:38: error: cannot find symbol + this.evo$smoothSkipAnim.jumpTo(currentAnimVal - (float)visualDelta); + ^ + symbol: method jumpTo(float) + location: variable evo$smoothSkipAnim of type ct +/storage/aboba/evovis-client/src/main/java/b/dd.java:39: error: cannot find symbol + this.evo$smoothSkipAnim.animateTo(0.0F); + ^ + symbol: method animateTo(float) + location: variable evo$smoothSkipAnim of type ct +/storage/aboba/evovis-client/src/main/java/b/dd.java:45: error: cannot find symbol + float currentOffset = this.evo$smoothSkipAnim.update(); + ^ + symbol: method update() + location: variable evo$smoothSkipAnim of type ct +/storage/aboba/evovis-client/src/main/java/b/dd.java:83: error: incompatible types: dd cannot be converted to ClientLevel + if (!(this instanceof ClientLevel)) { + ^ +/storage/aboba/evovis-client/src/main/java/b/q.java:18: error: incompatible types: q cannot be converted to AbstractClientPlayer + AbstractClientPlayer player = (AbstractClientPlayer)this; + ^ +/storage/aboba/evovis-client/src/main/java/b/t.java:49: error: package defpackage.defpackage does not exist + this.currentParse = defpackage.defpackage.bz.getInstance().getCommandManager().getDispatcher().parse(reader, bz.getInstance().getCommandManager().getSource()); + ^ +/storage/aboba/evovis-client/src/main/java/b/t.java:49: error: cannot find symbol + this.currentParse = defpackage.defpackage.bz.getInstance().getCommandManager().getDispatcher().parse(reader, bz.getInstance().getCommandManager().getSource()); + ^ + symbol: method getInstance() + location: class bz +/storage/aboba/evovis-client/src/main/java/b/t.java:54: error: incompatible types: ParseResults cannot be converted to ParseResults + this.pendingSuggestions = defpackage.bz.getInstance().getCommandManager().getDispatcher().getCompletionSuggestions(this.currentParse, cursor); + ^ +/storage/aboba/evovis-client/src/main/java/b/z.java:20: error: incomparable types: z and LocalPlayer + return this == mc.player ? true : original; + ^ +/storage/aboba/evovis-client/src/main/java/b/z.java:30: error: incompatible types: z cannot be converted to LocalPlayer + return this instanceof LocalPlayer && evo$rotationOverridden() ? defpackage.bz.getInstance().getRotationManager().getCurrentRotation().getPitch() : pitch; + ^ +/storage/aboba/evovis-client/src/main/java/b/z.java:35: error: incompatible types: z cannot be converted to LocalPlayer + return this instanceof LocalPlayer && evo$rotationOverridden() ? defpackage.bz.getInstance().getRotationManager().getCurrentRotation().getYaw() : yaw; + ^ +/storage/aboba/evovis-client/src/main/java/b/z.java:40: error: incompatible types: defpackage.bz cannot be converted to b.bz + bz evolution = defpackage.bz.getInstance(); + ^ +/storage/aboba/evovis-client/src/main/java/b/z.java:41: error: cannot find symbol + return evolution != null && evolution.getRotationManager() != null && evolution.getRotationManager().isRotationOverridden(); + ^ + symbol: method getRotationManager() + location: variable evolution of type bz +/storage/aboba/evovis-client/src/main/java/b/z.java:41: error: cannot find symbol + return evolution != null && evolution.getRotationManager() != null && evolution.getRotationManager().isRotationOverridden(); + ^ + symbol: method getRotationManager() + location: variable evolution of type bz +Note: Some input files use or override a deprecated API. +Note: Recompile with -Xlint:deprecation for details. +Note: Some input files use unchecked or unsafe operations. +Note: Recompile with -Xlint:unchecked for details. +Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output +377 errors + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':compileJava' (registered by plugin class 'org.gradle.api.plugins.JavaBasePlugin'). +> Compilation failed; see the compiler output below. + /storage/aboba/evovis-client/src/main/java/defpackage/ma.java:4: error: package kotlin does not exist + import kotlin.Pair; + ^ + 377 errors + +* Try: +> Check your code and dependencies to fix the compilation error(s) +> Run with --scan to get full insights from a Build Scan (powered by Develocity). + +BUILD FAILED in 11s diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..f3abdc4 --- /dev/null +++ b/build.gradle @@ -0,0 +1,64 @@ +plugins { + id 'net.fabricmc.fabric-loom' version '1.17.12' +} + +version = project.mod_version +group = 'xyz.evoproject' + +base { + archivesName = project.archives_base_name +} + +repositories { + mavenCentral() + maven { + url = 'https://maven.fabricmc.net/' + } +} + +loom { + accessWidenerPath = file('src/main/resources/evolution.accesswidener') + mods { + "evolutiondlc" { + sourceSet sourceSets.main + } + } +} + +dependencies { + minecraft "com.mojang:minecraft:${project.minecraft_version}" + implementation "net.fabricmc:fabric-loader:${project.loader_version}" + implementation "io.github.llamalad7:mixinextras-fabric:${project.mixinextras_version}" + implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + implementation fileTree(dir: 'libs', include: ['*.jar']) + + compileOnly 'com.google.code.gson:gson:2.14.0' + compileOnly 'org.slf4j:slf4j-api:2.0.17' +} + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(25) + } +} + +tasks.withType(JavaCompile).configureEach { + it.options.release = 25 + it.options.encoding = 'UTF-8' + it.options.compilerArgs += ['-proc:none', '-Xmaxerrs', '100000'] +} + +def postprocessTask = tasks.register('postprocessClasses', Exec) { + dependsOn tasks.named('classes') + commandLine 'python3', "$rootDir/tools/postbuild.py", + layout.buildDirectory.dir('classes/java/main').get().asFile.absolutePath +} + +tasks.named('jar') { + dependsOn postprocessTask +} + +tasks.matching { it.name == 'runClient' }.configureEach { + dependsOn postprocessTask +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..f1bcd8f --- /dev/null +++ b/gradle.properties @@ -0,0 +1,12 @@ +# Gradle +org.gradle.jvmargs=-Xmx3G + +# Fabric +minecraft_version=26.2 +loader_version=0.19.5 +fabric_version=0.159.0+26.2 +mixinextras_version=0.5.5 + +# Mod +mod_version=2026.10.1.994 +archives_base_name=evolutiondlc diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..b1b8ef5 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..b52fb7e --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,9 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip +networkTimeout=10000 +retries=0 +retryBackOffMs=500 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..379a658 --- /dev/null +++ b/gradlew @@ -0,0 +1,248 @@ +#!/bin/sh + +# +# Copyright © 2015 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# gradlew start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh gradlew +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob//platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..8508ef6 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,82 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem gradlew startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +"%COMSPEC%" /c exit 1 + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +"%COMSPEC%" /c exit 1 + +:execute +@rem Setup the command line + + + +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel + +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/libs/api-0.32.0.jar b/libs/api-0.32.0.jar new file mode 100644 index 0000000..396aaa4 Binary files /dev/null and b/libs/api-0.32.0.jar differ diff --git a/libs/jcodec-0.2.5.jar b/libs/jcodec-0.2.5.jar new file mode 100644 index 0000000..5945098 Binary files /dev/null and b/libs/jcodec-0.2.5.jar differ diff --git a/libs/luaj-jse-3.0.1.jar b/libs/luaj-jse-3.0.1.jar new file mode 100644 index 0000000..fd4719d Binary files /dev/null and b/libs/luaj-jse-3.0.1.jar differ diff --git a/libs/pytorch-engine-0.32.0.jar b/libs/pytorch-engine-0.32.0.jar new file mode 100644 index 0000000..26975dc Binary files /dev/null and b/libs/pytorch-engine-0.32.0.jar differ diff --git a/libs/viafabricplus-5.0.2.jar b/libs/viafabricplus-5.0.2.jar new file mode 100644 index 0000000..7609583 Binary files /dev/null and b/libs/viafabricplus-5.0.2.jar differ diff --git a/libs/viafabricplus-api-5.0.2.jar b/libs/viafabricplus-api-5.0.2.jar new file mode 100644 index 0000000..b834282 Binary files /dev/null and b/libs/viafabricplus-api-5.0.2.jar differ diff --git a/libs/viaversion-common-5.12.0.jar b/libs/viaversion-common-5.12.0.jar new file mode 100644 index 0000000..b49f4f0 Binary files /dev/null and b/libs/viaversion-common-5.12.0.jar differ diff --git a/libs/voicechat-fabric-2.6.21+26.2.jar b/libs/voicechat-fabric-2.6.21+26.2.jar new file mode 100644 index 0000000..4e32e55 Binary files /dev/null and b/libs/voicechat-fabric-2.6.21+26.2.jar differ diff --git a/libs/whisper-jni-1.7.1.jar b/libs/whisper-jni-1.7.1.jar new file mode 100644 index 0000000..033c339 Binary files /dev/null and b/libs/whisper-jni-1.7.1.jar differ diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..f042bd7 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,11 @@ +pluginManagement { + repositories { + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + gradlePluginPortal() + } +} + +rootProject.name = 'evolutiondlc' diff --git a/src/main/java/a/a.java b/src/main/java/a/a.java new file mode 100644 index 0000000..64fdf99 --- /dev/null +++ b/src/main/java/a/a.java @@ -0,0 +1,26 @@ +package a; + +import defpackage.*; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GameRenderer; +import org.lwjgl.glfw.GLFW; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(GameRenderer.class) +public class a { + @Inject(method = "render", at = @At("HEAD")) + private void deltaTime(DeltaTracker tickCounter, boolean tick, CallbackInfo ci) { + float currentTime = (float)GLFW.glfwGetTime(); + t.deltaTime = currentTime - t.prevTime; + t.prevTime = currentTime; + if (Minecraft.getInstance().isPaused()) { + t.deltaTime = 0.0F; + } else { + t.deltaTime = (float)Math.min(0.05, t.deltaTime); + } + } +} diff --git a/src/main/java/a/b.java b/src/main/java/a/b.java new file mode 100644 index 0000000..2ce611d --- /dev/null +++ b/src/main/java/a/b.java @@ -0,0 +1,69 @@ +package a; + +import defpackage.*; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.multiplayer.MultiPlayerGameMode; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.phys.HitResult; +import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Minecraft.class) +public class b { + @Shadow + @Nullable + public LocalPlayer player; + @Shadow + @Nullable + public ClientLevel level; + @Shadow + @Final + public GameRenderer gameRenderer; + @Shadow + @Nullable + public MultiPlayerGameMode gameMode; + @Shadow + private int rightClickDelay; + @Shadow + @Nullable + public HitResult hitResult; + @Shadow + @Final + private static Logger LOGGER; + + @Inject( + method = "startAttack", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;swing(Lnet/minecraft/world/InteractionHand;)V") + ) + public void doAttackMix(CallbackInfoReturnable cir) { + if (this.player instanceof y mixin) { + mixin.hMI5_0$resetMainHandSwing(false); + } + } + + @Redirect( + method = "startUseItem", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;swing(Lnet/minecraft/world/InteractionHand;)V") + ) + private void doItemUse(LocalPlayer instance, InteractionHand hand) { + if (instance instanceof y accessor) { + if (hand == InteractionHand.MAIN_HAND) { + accessor.hMI5_0$resetMainHandSwing(true); + } else { + accessor.hMI5_0$resetOffHandSwing(true); + } + } + + instance.swing(hand); + } +} diff --git a/src/main/java/a/c.java b/src/main/java/a/c.java new file mode 100644 index 0000000..3039ed0 --- /dev/null +++ b/src/main/java/a/c.java @@ -0,0 +1,51 @@ +package a; + +import defpackage.*; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(ItemStack.class) +public class c implements x { + @Unique + private int transform = -1; + @Unique + private int swingSpeed = 10; + @Unique + private int shouldRenderAsBlock = -1; + + @Override + public void hMI5_0$setTransform(boolean value) { + this.transform = value ? 1 : 0; + } + + @Override + public void hMI5_0$setTransform(int value) { + this.transform = value; + } + + @Override + public int hMI5_0$getTransform() { + return this.transform; + } + + @Override + public void hMI5_0$setSwingSpeed(int value) { + this.swingSpeed = value; + } + + @Override + public int hMI5_0$getSwingSpeed() { + return this.swingSpeed; + } + + @Override + public void hMI5_0$setRenderAsBlock(boolean value) { + this.shouldRenderAsBlock = value ? 1 : 0; + } + + @Override + public int hMI5_0$getRenderAsBlock() { + return 0; + } +} diff --git a/src/main/java/a/d.java b/src/main/java/a/d.java new file mode 100644 index 0000000..1ccffef --- /dev/null +++ b/src/main/java/a/d.java @@ -0,0 +1,114 @@ +package a; + +import defpackage.*; +import com.mojang.math.Axis; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.Camera; +import net.minecraft.world.phys.Vec3; +import org.joml.Quaternionf; +import org.joml.Vector3f; +import org.joml.Vector3fc; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Camera.class) +public abstract class d implements w { + @Shadow + @Final + private Quaternionf rotation; + @Shadow + private float xRot; + @Shadow + private float yRot; + @Shadow + @Final + private static Vector3fc FORWARDS; + @Shadow + @Final + private static Vector3fc UP; + @Shadow + @Final + private static Vector3fc LEFT; + @Shadow + @Final + private Vector3f forwards; + @Shadow + @Final + private Vector3f up; + @Shadow + @Final + private Vector3f left; + @Shadow + private Vec3 position; + @Unique + private float pitchM = 0.0F; + @Unique + private float yawM = 0.0F; + @Unique + private float rollM = 0.0F; + @Unique + private float xM = 0.0F; + @Unique + private float yM = 0.0F; + @Unique + private float zM = 0.0F; + + @Shadow + protected abstract void setPosition(Vec3 var1); + + @Override + public void hMI5_0$applyRotation() { + this.rotation.add(Axis.XP.rotationDegrees(this.pitchM)); + this.rotation.add(Axis.YP.rotationDegrees(this.yawM)); + this.rotation.add(Axis.ZP.rotationDegrees(this.rollM)); + } + + @Override + public void hMI5_0$setRotationValues(float pitch, float yaw, float roll) { + this.pitchM = pitch; + this.yawM = yaw; + this.rollM = roll; + } + + @Override + public void hMI5_0$setPosValues(float x, float y, float z) { + this.xM = x; + this.yM = y; + this.zM = z; + } + + @Inject(method = "setRotation", at = @At("RETURN")) + public void setRotationMixin(float yaw, float pitch, CallbackInfo ci) { + if (ve.active()) { + if (!FabricLoader.getInstance().isModLoaded("do_a_barrel_roll")) { + this.rotation + .rotationYXZ( + (float) Math.PI - (yaw + this.yawM) * (float) (Math.PI / 180.0), + (-pitch + this.pitchM) * (float) (Math.PI / 180.0), + this.rollM * (float) (Math.PI / 180.0) + ); + FORWARDS.rotate(this.rotation, this.forwards); + UP.rotate(this.rotation, this.up); + LEFT.rotate(this.rotation, this.left); + } + } + } + + @Inject(method = "setPosition(DDD)V", at = @At("HEAD"), cancellable = true) + public void setRotationMixin(double x, double y, double z, CallbackInfo ci) { + if (ve.active()) { + if (!FabricLoader.getInstance().isModLoaded("do_a_barrel_roll")) { + x += this.xM; + y += this.yM; + z += this.zM; + this.setPosition(new Vec3(x, y, z)); + ci.cancel(); + } + } + } +} diff --git a/src/main/java/a/e.java b/src/main/java/a/e.java new file mode 100644 index 0000000..2c50dd2 --- /dev/null +++ b/src/main/java/a/e.java @@ -0,0 +1,185 @@ +package a; + +import defpackage.*; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.Minecraft; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Environment(EnvType.CLIENT) +@Mixin(LivingEntity.class) +public abstract class e implements y { + private boolean interactOffhand = false; + private boolean interactMainHand = false; + private boolean blockBreaking = false; + @Unique + private int offHandSwingTicks; + @Unique + private boolean offHandSwinging; + @Unique + public float offHandSwingProgress; + @Unique + public float lastOffHandSwingProgress; + @Unique + private int mainHandSwingTicks; + @Unique + private boolean mainHandSwinging; + @Unique + public float mainHandSwingProgress; + @Unique + public float lastMainHandSwingProgress; + private int mainSwingCount = 0; + @Unique + private boolean swingMHand = false; + @Unique + private boolean swingOHand = false; + + @Shadow + protected abstract int getCurrentSwingDuration(); + + @Shadow + public abstract ItemStack getMainHandItem(); + + @Shadow + public abstract ItemStack getOffhandItem(); + + @Override + public int hMI5_0$getSwingCount() { + return this.mainSwingCount; + } + + @Override + public void hMI5_0$resetOffHandSwing(boolean interact) { + this.offHandSwingTicks = 0; + this.offHandSwinging = true; + this.swingOHand = !this.swingOHand; + this.interactOffhand = interact; + } + + @Override + public void hMI5_0$resetMainHandSwing(boolean interact) { + this.mainHandSwingTicks = 0; + this.mainHandSwinging = true; + this.swingMHand = !this.swingMHand; + this.mainSwingCount++; + this.interactMainHand = interact; + if (Minecraft.getInstance().gameMode.isDestroying()) { + this.blockBreaking = true; + } + } + + @Override + public float hMI5_0$getMainHandSwingProgress(float tickDelta) { + float f = this.mainHandSwingProgress - this.lastMainHandSwingProgress; + if (f < 0.0F) { + f++; + } + + return this.lastMainHandSwingProgress + f * tickDelta; + } + + @Override + public float hMI5_0$getOffHandSwingProgress(float tickDelta) { + float f = this.offHandSwingProgress - this.lastOffHandSwingProgress; + if (f < 0.0F) { + f++; + } + + return this.lastOffHandSwingProgress + f * tickDelta; + } + + @Override + public boolean hMI5_0$getMInteract() { + return this.interactMainHand; + } + + @Override + public boolean hMI5_0$getOInteract() { + return this.interactOffhand; + } + + @Override + public boolean hMI5_0$getBlockBreak() { + return this.blockBreaking; + } + + @Override + public boolean hMI5_0$getMHandEvent() { + return this.swingMHand; + } + + @Override + public boolean hMI5_0$getOHandEvent() { + return this.swingOHand; + } + + @Inject(method = "baseTick", at = @At("HEAD")) + private void tick(CallbackInfo ci) { + this.lastOffHandSwingProgress = this.offHandSwingProgress; + this.lastMainHandSwingProgress = this.mainHandSwingProgress; + int i = af.itemSwingSpeed.getOrDefault(this.getMainHandItem().getItem().toString(), 10); + if (this.mainHandSwinging) { + this.mainHandSwingTicks++; + if (this.mainHandSwingTicks >= i) { + this.mainHandSwingTicks = 0; + this.mainHandSwinging = false; + } + } else { + if (this.interactMainHand) { + this.interactMainHand = false; + } + + if (this.blockBreaking) { + this.blockBreaking = false; + } + + this.mainHandSwingTicks = 0; + } + + this.mainHandSwingProgress = (float)this.mainHandSwingTicks / i; + int i2 = af.itemSwingSpeed.getOrDefault(this.getOffhandItem().getItem().toString(), 10); + if (this.offHandSwinging) { + this.offHandSwingTicks++; + if (this.offHandSwingTicks >= i2) { + this.offHandSwingTicks = 0; + this.offHandSwinging = false; + } + } else { + if (this.interactOffhand) { + this.interactOffhand = false; + } + + this.offHandSwingTicks = 0; + } + + this.offHandSwingProgress = (float)this.offHandSwingTicks / i2; + } + + @Inject(method = "swing(Lnet/minecraft/world/InteractionHand;Z)V", at = @At("HEAD")) + private void onSwingHand(InteractionHand hand, boolean fromServerPlayer, CallbackInfo ci) { + if (hand == InteractionHand.OFF_HAND) { + int duration = af.itemSwingSpeed.getOrDefault(this.getOffhandItem().getItem().toString(), 10); + if (!this.offHandSwinging || this.offHandSwingTicks >= duration / 2 || this.offHandSwingTicks < 0) { + this.offHandSwingTicks = -1; + this.offHandSwinging = true; + } + } else { + int duration = af.itemSwingSpeed.getOrDefault(this.getMainHandItem().getItem().toString(), 10); + if (!this.mainHandSwinging || this.mainHandSwingTicks >= duration / 2 || this.mainHandSwingTicks < 0) { + this.mainHandSwingTicks = -1; + this.mainHandSwinging = true; + if (Minecraft.getInstance().gameMode.isDestroying()) { + this.blockBreaking = true; + } + } + } + } +} diff --git a/src/main/java/a/f.java b/src/main/java/a/f.java new file mode 100644 index 0000000..c8e8e01 --- /dev/null +++ b/src/main/java/a/f.java @@ -0,0 +1,139 @@ +package a; + +import defpackage.*; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.Minecraft; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.LivingEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyConstant; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Environment(EnvType.CLIENT) +@Mixin(LivingEntity.class) +public abstract class f implements y { + @Shadow + private int swingTime; + @Shadow + public float attackAnim; + @Shadow + public float oAttackAnim; + @Shadow + private boolean swinging; + @Shadow + public InteractionHand swingingArm; + @Unique + private int offHandSwingTicks; + @Unique + private boolean offHandSwinging; + @Unique + public float offHandSwingProgress; + @Unique + public float lastOffHandSwingProgress; + @Unique + private int mainHandSwingTicks; + @Unique + private boolean mainHandSwinging; + @Unique + public float mainHandSwingProgress; + @Unique + public float lastMainHandSwingProgress; + private boolean swingMHand = false; + private boolean swingOHand = false; + + @Shadow + protected abstract int getCurrentSwingDuration(); + + @Shadow + public abstract void swing(InteractionHand var1); + + @Override + public float hMI5_0$getMainHandSwingProgress(float tickDelta) { + float f = this.mainHandSwingProgress - this.lastMainHandSwingProgress; + if (f < 0.0F) { + f++; + } + + return this.lastMainHandSwingProgress + f * tickDelta; + } + + @Override + public float hMI5_0$getOffHandSwingProgress(float tickDelta) { + float f = this.offHandSwingProgress - this.lastOffHandSwingProgress; + if (f < 0.0F) { + f++; + } + + return this.lastOffHandSwingProgress + f * tickDelta; + } + + @Override + public boolean hMI5_0$getMHandEvent() { + return this.swingMHand; + } + + @Override + public boolean hMI5_0$getOHandEvent() { + return this.swingOHand; + } + + @Inject(method = "swing", at = @At("HEAD"), cancellable = true) + private void onSwingHand(InteractionHand hand, CallbackInfo ci) { + if (hand == InteractionHand.OFF_HAND) { + int duration = aj.swingSpeed; + if (!this.offHandSwinging || this.offHandSwingTicks >= duration / 2) { + this.offHandSwingTicks = 0; + this.offHandSwinging = true; + this.swingOHand = !this.swingOHand; + } + } else { + int duration = aj.swingSpeed; + if (!this.mainHandSwinging || this.mainHandSwingTicks >= duration / 2) { + this.mainHandSwingTicks = 0; + this.mainHandSwinging = true; + this.swingMHand = !this.swingMHand; + } + } + } + + @Inject(method = "updateSwingTime", at = @At("HEAD"), cancellable = true) + private void onTickHandSwing(CallbackInfo ci) { + this.lastOffHandSwingProgress = this.offHandSwingProgress; + int offHandDuration = aj.swingSpeed; + if (this.offHandSwinging) { + this.offHandSwingTicks++; + if (this.offHandSwingTicks >= offHandDuration) { + this.offHandSwinging = false; + this.offHandSwingTicks = 0; + } + } else { + this.offHandSwingTicks = 0; + } + + this.offHandSwingProgress = (float)this.offHandSwingTicks / offHandDuration; + this.lastMainHandSwingProgress = this.mainHandSwingProgress; + int mainHandDuration = aj.swingSpeed; + if (this.mainHandSwinging) { + this.mainHandSwingTicks++; + if (this.mainHandSwingTicks >= mainHandDuration) { + this.mainHandSwinging = false; + this.mainHandSwingTicks = 0; + } + } else { + this.mainHandSwingTicks = 0; + } + + this.mainHandSwingProgress = (float)this.mainHandSwingTicks / mainHandDuration; + } + + @ModifyConstant(method = "getCurrentSwingDuration()I", constant = @Constant(intValue = 6)) + private int modifySwingDuration(int original) { + return this == Minecraft.getInstance().player ? aj.swingSpeed : original; + } +} diff --git a/src/main/java/a/g.java b/src/main/java/a/g.java new file mode 100644 index 0000000..185d425 --- /dev/null +++ b/src/main/java/a/g.java @@ -0,0 +1,24 @@ +package a; + +import defpackage.*; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.item.properties.numeric.UseDuration; +import net.minecraft.world.entity.ItemOwner; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(UseDuration.class) +public class g { + @Inject(method = "get", at = @At("RETURN"), cancellable = true) + private void swapProperty(ItemStack stack, ClientLevel world, ItemOwner context, int seed, CallbackInfoReturnable cir) { + if (Minecraft.getInstance().player != null + && Minecraft.getInstance().player.getUseItem() == stack + && af.useDuration.containsKey(stack.getItem().toString())) { + cir.setReturnValue(Float.parseFloat(af.useDuration.get(stack.getItem().toString()).toString())); + } + } +} diff --git a/src/main/java/a/h.java b/src/main/java/a/h.java new file mode 100644 index 0000000..3aa3ebf --- /dev/null +++ b/src/main/java/a/h.java @@ -0,0 +1,24 @@ +package a; + +import defpackage.*; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.item.properties.conditional.IsUsingItem; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(IsUsingItem.class) +public class h { + @Inject(method = "get", at = @At("RETURN"), cancellable = true) + private void swapProperty( + ItemStack stack, ClientLevel world, LivingEntity entity, int seed, ItemDisplayContext displayContext, CallbackInfoReturnable cir + ) { + if (entity != null && entity.getUseItem() == stack && af.usingItem.containsKey(stack.getItem().toString())) { + cir.setReturnValue(af.usingItem.get(stack.getItem().toString())); + } + } +} diff --git a/src/main/java/a/i.java b/src/main/java/a/i.java new file mode 100644 index 0000000..3233ef1 --- /dev/null +++ b/src/main/java/a/i.java @@ -0,0 +1,87 @@ +package a; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.QuadInstance; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraft.client.color.block.BlockTintSource; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.block.BlockStateModelSet; +import net.minecraft.client.renderer.block.dispatch.BlockStateModel; +import net.minecraft.client.renderer.block.dispatch.BlockStateModelPart; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.client.resources.model.geometry.BakedQuad; +import net.minecraft.core.Direction; +import net.minecraft.util.ARGB; +import net.minecraft.util.LightCoordsUtil; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(BlockStateModelSet.class) +public abstract class i implements v { + @Shadow + public abstract BlockStateModel get(BlockState var1); + + @Unique + @Override + public void renderSingleBlockWithEmission( + BlockState blockState, PoseStack poseStack, SubmitNodeCollector queue, int combinedLight, ClientLevel world, AbstractClientPlayer player + ) { + RenderShape renderShape = blockState.getRenderShape(); + if (renderShape != RenderShape.INVISIBLE) { + combinedLight = LightCoordsUtil.lightCoordsWithEmission(combinedLight, blockState.getLightEmission()); + BlockStateModel blockStateModel = this.get(blockState); + BlockTintSource tintSource = Minecraft.getInstance().getBlockColors().getTintSource(blockState, 0); + int tint = tintSource != null ? tintSource.colorInWorld(blockState, world, player.blockPosition()) : -1; + float r = (tint >> 16 & 0xFF) / 255.0F; + float g = (tint >> 8 & 0xFF) / 255.0F; + float b = (tint & 0xFF) / 255.0F; + List parts = new ArrayList<>(); + blockStateModel.collectParts(RandomSource.create(42L), parts); + + for (BlockStateModelPart blockModelPart : parts) { + for (Direction direction : Direction.values()) { + for (BakedQuad bakedQuad : blockModelPart.getQuads(direction)) { + this.hmi$renderBakedQuad(bakedQuad, poseStack, queue, r, g, b, combinedLight); + } + } + + for (BakedQuad bakedQuad : blockModelPart.getQuads(null)) { + this.hmi$renderBakedQuad(bakedQuad, poseStack, queue, r, g, b, combinedLight); + } + } + } + } + + @Unique + private void hmi$renderBakedQuad(BakedQuad bakedQuad, PoseStack poseStack, SubmitNodeCollector queue, float r, float g, float b, int combinedLight) { + if (bakedQuad.materialInfo().isTinted()) { + r = Math.clamp(r, 0.0F, 1.0F); + g = Math.clamp(g, 0.0F, 1.0F); + b = Math.clamp(b, 0.0F, 1.0F); + } else { + r = 1.0F; + g = 1.0F; + b = 1.0F; + } + + RenderType usedLayer = bakedQuad.materialInfo().itemRenderType(); + int color = ARGB.colorFromFloat(1.0F, r, g, b); + queue.submitCustomGeometry(poseStack, usedLayer, (pose, consumer) -> { + QuadInstance quadInstance = new QuadInstance(); + quadInstance.setColor(color); + quadInstance.setLightCoords(combinedLight); + quadInstance.setOverlayCoords(OverlayTexture.NO_OVERLAY); + consumer.putBakedQuad(pose, bakedQuad, quadInstance); + }); + } +} diff --git a/src/main/java/a/j.java b/src/main/java/a/j.java new file mode 100644 index 0000000..bc14e6c --- /dev/null +++ b/src/main/java/a/j.java @@ -0,0 +1,52 @@ +package a; + +import defpackage.*; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.entity.EntityRenderDispatcher; +import net.minecraft.client.renderer.entity.FishingHookRenderer; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.Vec3; +import org.joml.Matrix4f; +import org.joml.Vector4f; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(FishingHookRenderer.class) +public abstract class j { + private EntityRenderDispatcher dispatcher = Minecraft.getInstance().getEntityRenderDispatcher(); + float DEG_TO_RAD = (float) (Math.PI / 180.0); + + @Inject(method = "getPlayerHandPos", at = @At("HEAD"), cancellable = true) + private void getHandPos(Player player, float f, float tickProgress, CallbackInfoReturnable cir) { + float m = 960.0F / ((Integer)this.dispatcher.options.fov().get()).intValue(); + int i = FishingHookRenderer.getHoldingArm(player) == HumanoidArm.RIGHT ? 1 : -1; + Matrix4f matrix = FishingHookRenderer.getHoldingArm(player) == HumanoidArm.RIGHT ? t.matricesMain : t.matricesOff; + matrix.translate(0.0F, 0.0F, 0.0F); + Vector4f tipPos = new Vector4f(0.0F, 0.0F, 0.0F, 1.0F); + tipPos.mul(matrix); + Vec3 worldPos = new Vec3(tipPos.x(), tipPos.y(), tipPos.z()); + worldPos.scale(m); + if (this.dispatcher.options.getCameraType().isFirstPerson() && player == Minecraft.getInstance().player) { + Vec3 vec3d = this.dispatcher.camera.getNearPlane(tickProgress).getPointOnPlane(0.7F, 0.0F).scale(m).add(worldPos); + cir.setReturnValue(this.dispatcher.camera.position().add(vec3d)); + } + } + + private void getHandPose(Player player, float f, float tickProgress, CallbackInfoReturnable cir) { + float m = 960.0F / ((Integer)this.dispatcher.options.fov().get()).intValue(); + int i = FishingHookRenderer.getHoldingArm(player) == HumanoidArm.RIGHT ? 1 : -1; + Matrix4f matrix = FishingHookRenderer.getHoldingArm(player) == HumanoidArm.RIGHT ? t.matricesMain : t.matricesOff; + matrix.translate(0.0F, 0.0F, 0.0F); + Vector4f tipPos = new Vector4f(0.0F, 0.0F, 0.0F, 1.0F); + tipPos.mul(matrix); + Vec3 worldPos = new Vec3(tipPos.x(), tipPos.y(), tipPos.z()); + worldPos.scale(m); + if (this.dispatcher.options.getCameraType().isFirstPerson() && player == Minecraft.getInstance().player) { + Vec3 vec3d = this.dispatcher.camera.getNearPlane(tickProgress).getPointOnPlane(0.7F, 0.0F).scale(m).add(worldPos); + cir.setReturnValue(this.dispatcher.camera.position().add(vec3d)); + } + } +} diff --git a/src/main/java/a/k.java b/src/main/java/a/k.java new file mode 100644 index 0000000..5266043 --- /dev/null +++ b/src/main/java/a/k.java @@ -0,0 +1,27 @@ +package a; + +import defpackage.*; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(targets = "net/minecraft/client/renderer/ItemInHandRenderer$HandRenderSelection") +public abstract class k { + @Shadow + @Mutable + private boolean renderMainHand; + @Shadow + @Mutable + private boolean renderOffHand; + + @Inject(method = "", at = @At("RETURN")) + private void makeBothHandsRenderTrue(String string, int i, boolean renderMainHand, boolean renderOffHand, CallbackInfo ci) { + if (ve.active()) { + this.renderMainHand = true; + this.renderOffHand = true; + } + } +} diff --git a/src/main/java/a/l.java b/src/main/java/a/l.java new file mode 100644 index 0000000..6bafc4c --- /dev/null +++ b/src/main/java/a/l.java @@ -0,0 +1,739 @@ +package a; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import java.util.ArrayList; +import java.util.List; +import javax.script.ScriptException; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.ItemInHandRenderer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.blockentity.state.BellRenderState; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import net.minecraft.core.BlockPos; +import net.minecraft.core.component.DataComponents; +import net.minecraft.resources.Identifier; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.ItemTags; +import net.minecraft.util.LightCoordsUtil; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.CrossbowItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemUseAnimation; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.component.CustomData; +import net.minecraft.world.item.component.CustomModelData; +import net.minecraft.world.item.enchantment.ItemEnchantments; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.LanternBlock; +import net.minecraft.world.level.block.entity.BellBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.AttachFace; +import net.minecraft.world.level.block.state.properties.BellAttachType; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(ItemInHandRenderer.class) +public abstract class l { + @Unique + boolean mainHandSwitchEvent = false; + @Unique + boolean offHandSwitchEvent = false; + @Unique + Item prevMainHand = Items.AIR; + @Unique + Item prevOffHand = Items.AIR; + @Unique + private final ArrayList particles = new ArrayList<>(); + @Shadow + @Final + private Minecraft minecraft; + @Shadow + private ItemStack mainHandItem; + @Shadow + private ItemStack offHandItem; + @Unique + private boolean swingMHand = false; + @Unique + private boolean swingOHand = false; + @Unique + private float mainHandSwingProgress = 0.0F; + @Unique + private float offHandSwingProgress = 0.0F; + + @Shadow + protected abstract void renderPlayerArm(PoseStack var1, SubmitNodeCollector var2, int var3, float var4, float var5, HumanoidArm var6); + + @Shadow + protected abstract void submitArmWithItem( + AbstractClientPlayer var1, + float var2, + float var3, + InteractionHand var4, + float var5, + ItemStack var6, + float var7, + PoseStack var8, + SubmitNodeCollector var9, + int var10 + ); + + @Shadow + protected abstract void renderMap(PoseStack var1, SubmitNodeCollector var2, int var3, ItemStack var4); + + @Shadow + public abstract void renderItem(LivingEntity var1, ItemStack var2, ItemDisplayContext var3, PoseStack var4, SubmitNodeCollector var5, int var6); + + @Unique + private void copyAppearanceComponents(ItemStack source, ItemStack target) { + if (source.has(DataComponents.ENCHANTMENTS)) { + target.set(DataComponents.ENCHANTMENTS, (ItemEnchantments)source.get(DataComponents.ENCHANTMENTS)); + } + + if (source.has(DataComponents.ITEM_MODEL)) { + target.set(DataComponents.ITEM_MODEL, (Identifier)source.get(DataComponents.ITEM_MODEL)); + } + + if (source.has(DataComponents.CUSTOM_MODEL_DATA)) { + target.set(DataComponents.CUSTOM_MODEL_DATA, (CustomModelData)source.get(DataComponents.CUSTOM_MODEL_DATA)); + } + + if (source.has(DataComponents.CUSTOM_DATA)) { + target.set(DataComponents.CUSTOM_DATA, (CustomData)source.get(DataComponents.CUSTOM_DATA)); + } + } + + @Unique + private void applyArmMatrices(PoseStack matrices, int light, float equipProgress, float swingProgress, HumanoidArm arm) { + boolean bl = arm != HumanoidArm.LEFT; + float f = bl ? 1.0F : -1.0F; + float g = Mth.sqrt(swingProgress); + float h = -0.3F * Mth.sin(g * (float) Math.PI); + float i = 0.4F * Mth.sin(g * (float) (Math.PI * 2)); + float j = -0.4F * Mth.sin(swingProgress * (float) Math.PI); + matrices.translate(f * (h + 0.64000005F), i + -0.6F + equipProgress * -0.6F, j + -0.71999997F); + matrices.mulPose(Axis.YP.rotationDegrees(f * 45.0F)); + float k = Mth.sin(swingProgress * swingProgress * (float) Math.PI); + float l = Mth.sin(g * (float) Math.PI); + matrices.mulPose(Axis.YP.rotationDegrees(f * l * 70.0F)); + matrices.mulPose(Axis.ZP.rotationDegrees(f * k * -20.0F)); + AbstractClientPlayer abstractClientPlayerEntity = this.minecraft.player; + matrices.translate(f * -1.0F, 3.6F, 3.5F); + matrices.mulPose(Axis.ZP.rotationDegrees(f * 120.0F)); + matrices.mulPose(Axis.XP.rotationDegrees(200.0F)); + matrices.mulPose(Axis.YP.rotationDegrees(f * -135.0F)); + matrices.translate(f * 5.6F, 0.0F, 0.0F); + } + + @Unique + private void itemPose( + PoseStack matrices, + ItemStack item, + boolean bl, + float swingProgress, + AbstractClientPlayer player, + boolean mainHand, + InteractionHand hand, + float equipProgress, + float mainHandSwingProgress, + float offHandSwingProgress, + boolean mainHandSwitchEvent, + boolean offHandSwitchEvent, + boolean swingMHand, + boolean swingOHand, + boolean interact, + boolean blockBreaking, + List particles + ) throws ScriptException, NoSuchMethodException { + int l = bl ? 1 : -1; + matrices.translate(0.5 * l, -0.15, -0.85); + matrices.rotateAround(Axis.XP.rotationDegrees(15.0F), 0.5F, 0.5F, 0.5F); + matrices.scale(0.9F, 0.9F, 0.9F); + am.itemScriptCache + .execute( + matrices, + bl, + af.registry, + swingProgress, + item, + player, + hand, + mainHand, + t.deltaTime, + equipProgress, + mainHandSwingProgress, + offHandSwingProgress, + mainHandSwitchEvent, + offHandSwitchEvent, + swingMHand, + swingOHand, + interact, + blockBreaking, + particles + ); + + for (aj scriptCache : am.itemAddonsCache) { + scriptCache.execute( + matrices, + bl, + af.registry, + swingProgress, + item, + player, + hand, + mainHand, + t.deltaTime, + equipProgress, + mainHandSwingProgress, + offHandSwingProgress, + mainHandSwitchEvent, + offHandSwitchEvent, + swingMHand, + swingOHand, + interact, + blockBreaking, + particles + ); + } + } + + @Unique + private void mainHandPose( + PoseStack matrices, + ItemStack item, + boolean bl, + float swingProgress, + float equipProgress, + AbstractClientPlayer player, + boolean mainHand, + InteractionHand hand, + float mainHandSwingProgress, + float offHandSwingProgress, + boolean mainHandSwitchEvent, + boolean offHandSwitchEvent, + boolean swingMHand, + boolean swingOHand, + boolean interact, + boolean blockBreaking, + List particles + ) throws ScriptException, NoSuchMethodException { + int l = bl ? 1 : -1; + am.handRelativeScriptCache + .execute( + matrices, + bl, + af.registry, + swingProgress, + item, + player, + hand, + mainHand, + t.deltaTime, + equipProgress, + mainHandSwingProgress, + offHandSwingProgress, + mainHandSwitchEvent, + offHandSwitchEvent, + swingMHand, + swingOHand, + interact, + blockBreaking, + particles + ); + + for (aj scriptCache : am.handRelativeAddonsCache) { + scriptCache.execute( + matrices, + bl, + af.registry, + swingProgress, + item, + player, + hand, + mainHand, + t.deltaTime, + equipProgress, + mainHandSwingProgress, + offHandSwingProgress, + mainHandSwitchEvent, + offHandSwitchEvent, + swingMHand, + swingOHand, + interact, + blockBreaking, + particles + ); + } + + if (!item.isEmpty()) { + matrices.translate(1.5 * l, -0.3, -0.6); + matrices.rotateAround(Axis.XP.rotationDegrees(15.0F), 0.5F * l, 0.5F, 0.5F); + matrices.rotateAround(Axis.YP.rotationDegrees(35 * l), 0.5F * l, 0.5F, 0.5F); + matrices.rotateAround(Axis.ZP.rotationDegrees(-65 * l), 0.5F * l, 0.5F, 0.5F); + matrices.scale(0.9F, 0.9F, 0.9F); + } + } + + @Unique + private void scenePoseMain( + PoseStack matrices, + ItemStack item, + boolean bl, + float swingProgress, + float equipProgress, + AbstractClientPlayer player, + boolean mainHand, + InteractionHand hand, + float mainHandSwingProgress, + float offHandSwingProgress, + boolean mainHandSwitchEvent, + boolean offHandSwitchEvent, + boolean swingMHand, + boolean swingOHand, + boolean interact, + boolean blockBreaking, + List particles + ) throws ScriptException, NoSuchMethodException { + am.handScriptCache + .execute( + matrices, + bl, + af.registry, + swingProgress, + item, + player, + hand, + mainHand, + t.deltaTime, + equipProgress, + mainHandSwingProgress, + offHandSwingProgress, + mainHandSwitchEvent, + offHandSwitchEvent, + swingMHand, + swingOHand, + interact, + blockBreaking, + particles + ); + + for (aj scriptCache : am.handAddonsCache) { + scriptCache.execute( + matrices, + bl, + af.registry, + swingProgress, + item, + player, + hand, + mainHand, + t.deltaTime, + equipProgress, + mainHandSwingProgress, + offHandSwingProgress, + mainHandSwitchEvent, + offHandSwitchEvent, + swingMHand, + swingOHand, + interact, + blockBreaking, + particles + ); + } + + if (!item.isEmpty()) { + matrices.translate(0.0, -0.35, 0.2); + } + } + + @Redirect( + method = "submitHandsWithItems(FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/player/LocalPlayer;I)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/ItemInHandRenderer;submitArmWithItem(Lnet/minecraft/client/player/AbstractClientPlayer;FFLnet/minecraft/world/InteractionHand;FLnet/minecraft/world/item/ItemStack;FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;I)V" + ) + ) + private void renderOverhaul( + ItemInHandRenderer instance, + AbstractClientPlayer player, + float tickProgress, + float pitch, + InteractionHand hand, + float swingProgress, + ItemStack item, + float equipProgress, + PoseStack matrices, + SubmitNodeCollector orderedRenderCommandQueue, + int light + ) throws ScriptException, NoSuchMethodException { + if (ve.active() && !sz.rendersFirstPerson(item) && !sz.attachesHandItem(player, hand, item)) { + if (!player.isScoping()) { + ((x)item).hMI5_0$setTransform(-1); + boolean bl = hand == InteractionHand.MAIN_HAND; + boolean interact = false; + boolean blockBreaking = false; + if (bl + && player.isUsingItem() + && player.getUsedItemHand() != hand + && ( + player.getOffhandItem().getUseAnimation() == ItemUseAnimation.BOW + || player.getOffhandItem().getUseAnimation() == ItemUseAnimation.BOW + || player.getOffhandItem().getUseAnimation() == ItemUseAnimation.CROSSBOW && !CrossbowItem.isCharged(player.getOffhandItem()) + )) { + item = Items.AIR.getDefaultInstance(); + } + + if (!bl + && player.isUsingItem() + && player.getUsedItemHand() != hand + && ( + player.getMainHandItem().getUseAnimation() == ItemUseAnimation.BOW + || player.getMainHandItem().getUseAnimation() == ItemUseAnimation.CROSSBOW && !CrossbowItem.isCharged(player.getMainHandItem()) + )) { + item = Items.AIR.getDefaultInstance(); + } + + if (bl) { + this.mainHandSwitchEvent = item.getItem() != this.prevMainHand; + } + + if (!bl) { + this.offHandSwitchEvent = item.getItem() != this.prevOffHand; + } + + matrices.pushPose(); + if (player instanceof y accessor) { + float mainHandProgress = accessor.hMI5_0$getMainHandSwingProgress(tickProgress); + this.mainHandSwingProgress = mainHandProgress; + float offHandProgress = accessor.hMI5_0$getOffHandSwingProgress(tickProgress); + this.offHandSwingProgress = offHandProgress; + swingProgress = bl ? mainHandProgress : offHandProgress; + this.swingMHand = accessor.hMI5_0$getMHandEvent(); + this.swingOHand = accessor.hMI5_0$getOHandEvent(); + if (bl) { + interact = accessor.hMI5_0$getMInteract(); + } else { + interact = accessor.hMI5_0$getOInteract(); + } + + blockBreaking = accessor.hMI5_0$getBlockBreak(); + } + + HumanoidArm arm = bl ? player.getMainArm() : player.getMainArm().getOpposite(); + boolean bl2 = arm == HumanoidArm.RIGHT; + int l = bl2 ? 1 : -1; + this.scenePoseMain( + matrices, + item, + bl2, + swingProgress, + equipProgress, + player, + bl, + hand, + this.mainHandSwingProgress, + this.offHandSwingProgress, + this.mainHandSwitchEvent, + this.offHandSwitchEvent, + this.swingMHand, + this.swingOHand, + interact, + blockBreaking, + this.particles + ); + matrices.pushPose(); + this.mainHandPose( + matrices, + item, + bl2, + swingProgress, + equipProgress, + player, + bl, + hand, + this.mainHandSwingProgress, + this.offHandSwingProgress, + this.mainHandSwitchEvent, + this.offHandSwitchEvent, + this.swingMHand, + this.swingOHand, + interact, + blockBreaking, + this.particles + ); + int combinedLight = LightCoordsUtil.lightCoordsWithEmission(light, Block.byItem(item.getItem()).defaultBlockState().getLightEmission()); + if (player.isInvisible()) { + this.applyArmMatrices(matrices, combinedLight, 0.0F, 0.0F, arm); + } else { + this.renderPlayerArm(matrices, orderedRenderCommandQueue, combinedLight, 0.0F, 0.0F, arm); + } + + matrices.popPose(); + matrices.pushPose(); + if (Block.byItem(item.getItem()) != Blocks.AIR + && !Block.byItem(item.getItem()).defaultBlockState().is(BlockTags.INSIDE_STEP_SOUND_BLOCKS) + && !Block.byItem(item.getItem()).defaultBlockState().is(BlockTags.CROPS) + && item.getUseAnimation() != ItemUseAnimation.EAT + && !item.is(Items.REDSTONE) + && !item.is(ItemTags.BANNERS) + && !item.is(ItemTags.SKULLS) + && af.renderAsBlock.getOrDefault(item.getItem().toString(), true)) { + swingProgress = 0.0F; + BlockState blockState = Block.byItem(item.getItem()).defaultBlockState(); + this.itemPose( + matrices, + item, + bl2, + swingProgress, + player, + bl, + hand, + equipProgress, + this.mainHandSwingProgress, + this.offHandSwingProgress, + this.mainHandSwitchEvent, + this.offHandSwitchEvent, + this.swingMHand, + this.swingOHand, + interact, + blockBreaking, + this.particles + ); + matrices.translate(0.22 * l, 0.25, 0.2); + if (item.is(Items.LEVER) || blockState.is(BlockTags.BUTTONS)) { + blockState = (BlockState)blockState.setValue(BlockStateProperties.ATTACH_FACE, AttachFace.FLOOR); + } + + if (!item.getHoverName().toString().toLowerCase().contains("torch") + && !(Block.byItem(item.getItem()) instanceof LanternBlock) + && !blockState.is(BlockTags.ALL_HANGING_SIGNS)) { + matrices.translate(-0.25 * l, -0.05, 0.0); + } else { + matrices.translate(-0.05 * l, 0.0, 0.0); + matrices.scale(1.75F, 1.75F, 1.75F); + } + + matrices.pushPose(); + matrices.scale(0.3F, 0.3F, 0.3F); + matrices.translate(-0.9 * l, -0.45, -0.7); + matrices.popPose(); + if (!bl2) { + matrices.translate(-0.3F, 0.0F, 0.0F); + } + + matrices.scale(0.3F, 0.3F, 0.3F); + matrices.translate(-0.9 * l, -0.45, -0.7); + if (item.is(Items.BELL)) { + BellBlockEntity bellBlockEntity = new BellBlockEntity(BlockPos.ZERO, Blocks.BELL.defaultBlockState()); + BellRenderState state = new BellRenderState(); + state.lightCoords = light; + this.minecraft + .getBlockEntityRenderDispatcher() + .getRenderer(bellBlockEntity) + .submit(state, matrices, orderedRenderCommandQueue, new CameraRenderState()); + ((v)this.minecraft.getModelManager().getBlockStateModelSet()) + .renderSingleBlockWithEmission( + (BlockState)Blocks.BELL.defaultBlockState().setValue(BlockStateProperties.BELL_ATTACHMENT, BellAttachType.CEILING), + matrices, + orderedRenderCommandQueue, + light, + this.minecraft.level, + player + ); + } else { + if (blockState.hasProperty(BlockStateProperties.DOUBLE_BLOCK_HALF)) { + matrices.pushPose(); + matrices.translate(0.0F, 1.0F, 0.0F); + ((v)this.minecraft.getModelManager().getBlockStateModelSet()) + .renderSingleBlockWithEmission( + (BlockState)blockState.setValue(BlockStateProperties.DOUBLE_BLOCK_HALF, DoubleBlockHalf.UPPER), + matrices, + orderedRenderCommandQueue, + light, + this.minecraft.level, + player + ); + matrices.popPose(); + } + + ((v)this.minecraft.getModelManager().getBlockStateModelSet()) + .renderSingleBlockWithEmission(blockState, matrices, orderedRenderCommandQueue, light, this.minecraft.level, player); + } + + matrices.pushPose(); + if (!bl2) { + matrices.translate(1.0F, 0.0F, 0.0F); + } + + bb.draw(this.particles, matrices, orderedRenderCommandQueue, "ITEM", hand, light, player, tickProgress); + matrices.popPose(); + } else if (item.getUseAnimation() != ItemUseAnimation.BLOCK + && item.getUseAnimation() != ItemUseAnimation.BRUSH + && item.getUseAnimation() != ItemUseAnimation.TRIDENT) { + this.itemPose( + matrices, + item, + bl2, + swingProgress, + player, + bl, + hand, + equipProgress, + this.mainHandSwingProgress, + this.offHandSwingProgress, + this.mainHandSwitchEvent, + this.offHandSwitchEvent, + this.swingMHand, + this.swingOHand, + interact, + blockBreaking, + this.particles + ); + if (item.has(DataComponents.MAP_ID)) { + matrices.pushPose(); + matrices.translate(-0.05 * l, 0.2, 0.1); + matrices.mulPose(Axis.YP.rotationDegrees(-12 * l)); + this.renderMap(matrices, orderedRenderCommandQueue, light, item); + matrices.popPose(); + } else { + ItemStack renderStack = bl ? af.mainHandItem : af.offHandItem; + if (renderStack.is(Items.AIR)) { + renderStack = item; + } + + ae.setItem(item); + ai.addData( + new ah( + bl2, + swingProgress, + player, + hand, + bl, + t.deltaTime, + equipProgress, + this.mainHandSwingProgress, + this.offHandSwingProgress, + this.mainHandSwitchEvent, + this.offHandSwitchEvent, + this.swingMHand, + this.swingOHand, + interact, + blockBreaking, + item + ), + item + ); + this.renderItem( + player, + renderStack, + bl2 ? ItemDisplayContext.THIRD_PERSON_RIGHT_HAND : ItemDisplayContext.THIRD_PERSON_LEFT_HAND, + matrices, + orderedRenderCommandQueue, + light + ); + } + + if (bl2) { + t.matricesMain.set(matrices.last().pose()); + } else { + t.matricesOff.set(matrices.last().pose()); + } + + matrices.pushPose(); + bb.draw(this.particles, matrices, orderedRenderCommandQueue, "ITEM", hand, light, player, tickProgress); + matrices.popPose(); + } else { + this.itemPose( + matrices, + item, + bl2, + swingProgress, + player, + bl, + hand, + equipProgress, + this.mainHandSwingProgress, + this.offHandSwingProgress, + this.mainHandSwitchEvent, + this.offHandSwitchEvent, + this.swingMHand, + this.swingOHand, + interact, + blockBreaking, + this.particles + ); + ItemStack renderStack = new ItemStack(item.getItem(), item.getCount()); + this.copyAppearanceComponents(item, renderStack); + ItemStack renderStack2 = bl ? af.mainHandItem : af.offHandItem; + if (!renderStack2.is(Items.AIR)) { + renderStack = renderStack2; + } + + ae.setItem(item); + ai.addData( + new ah( + bl2, + swingProgress, + player, + hand, + bl, + t.deltaTime, + equipProgress, + this.mainHandSwingProgress, + this.offHandSwingProgress, + this.mainHandSwitchEvent, + this.offHandSwitchEvent, + this.swingMHand, + this.swingOHand, + interact, + blockBreaking, + item + ), + item + ); + this.renderItem( + player, + renderStack, + bl2 ? ItemDisplayContext.THIRD_PERSON_RIGHT_HAND : ItemDisplayContext.THIRD_PERSON_LEFT_HAND, + matrices, + orderedRenderCommandQueue, + light + ); + } + + matrices.popPose(); + matrices.popPose(); + if (bl) { + this.prevMainHand = item.getItem(); + } + + if (!bl) { + this.prevOffHand = item.getItem(); + } + + matrices.pushPose(); + bb.draw(this.particles, matrices, orderedRenderCommandQueue, "SCREEN", hand, light, player, tickProgress); + matrices.popPose(); + t.tickProgress = tickProgress; + af.offHandItem = Items.AIR.getDefaultInstance(); + af.mainHandItem = Items.AIR.getDefaultInstance(); + } + } else { + this.submitArmWithItem(player, tickProgress, pitch, hand, swingProgress, item, equipProgress, matrices, orderedRenderCommandQueue, light); + } + } +} diff --git a/src/main/java/a/m.java b/src/main/java/a/m.java new file mode 100644 index 0000000..5213c22 --- /dev/null +++ b/src/main/java/a/m.java @@ -0,0 +1,32 @@ +package a; + +import defpackage.*; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.Hud; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Hud.class) +public abstract class m { + @Shadow + public abstract Font getFont(); + + @Inject(method = "extractRenderState", at = @At("HEAD")) + private void debugText(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { + if (!af.debugTextRenderer.get().isEmpty()) { + int y = 10; + + for (String s : af.debugTextRenderer.get()) { + context.centeredText(this.getFont(), s, 10, y, 255); + y += 10; + } + + af.debugTextRenderer.clear(); + } + } +} diff --git a/src/main/java/a/n.java b/src/main/java/a/n.java new file mode 100644 index 0000000..10b2c94 --- /dev/null +++ b/src/main/java/a/n.java @@ -0,0 +1,17 @@ +package a; + +import defpackage.*; +import net.minecraft.client.renderer.feature.FeatureRenderDispatcher; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(FeatureRenderDispatcher.class) +public class n { + @Inject(method = "renderAllFeatures", at = @At("TAIL")) + private void tester(CallbackInfo ci) { + ae.clear(); + ai.clear(); + } +} diff --git a/src/main/java/a/o.java b/src/main/java/a/o.java new file mode 100644 index 0000000..e029a57 --- /dev/null +++ b/src/main/java/a/o.java @@ -0,0 +1,72 @@ +package a; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.QuadInstance; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.feature.ItemFeatureRenderer; +import net.minecraft.client.renderer.feature.ItemFeatureRenderer.Submit; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.resources.model.geometry.BakedQuad; +import net.minecraft.client.resources.model.geometry.BakedQuad.MaterialInfo; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ItemFeatureRenderer.class) +public abstract class o { + @Unique + private static int hmi$getTint(int[] tints, int index) { + return index >= 0 && index < tints.length ? tints[index] : -1; + } + + @Inject(method = "prepareMainSubmit", at = @At("HEAD"), cancellable = true) + private void hmi$prepareMainSubmit(Submit submit, CallbackInfo ci) { + if (ve.active()) { + Minecraft minecraft = Minecraft.getInstance(); + AbstractClientPlayer player = minecraft.player; + ItemDisplayContext displayContext = submit.displayContext(); + boolean handContext = (displayContext == ItemDisplayContext.THIRD_PERSON_LEFT_HAND || displayContext == ItemDisplayContext.THIRD_PERSON_RIGHT_HAND) + && player != null + && minecraft.getEntityRenderDispatcher().options.getCameraType().isFirstPerson(); + if (handContext) { + ah context = ai.get(); + ItemStack renderedItem = ae.getRenderedItem(); + am.itemModelCache.executeModel(context, renderedItem, player, af.modelPartAnimator); + + for (al cache : am.itemModelAddonsCache) { + cache.executeModel(context, renderedItem, player, af.modelPartAnimator); + } + + Pose basePose = submit.pose(); + QuadInstance quadInstance = new QuadInstance(); + quadInstance.setLightCoords(submit.lightCoords()); + quadInstance.setOverlayCoords(submit.overlayCoords()); + PoseStack posed = new PoseStack(); + int index = 0; + + for (BakedQuad quad : submit.quads()) { + MaterialInfo material = quad.materialInfo(); + RenderType renderType = material.itemRenderType(); + quadInstance.setColor(material.isTinted() ? hmi$getTint(submit.tintLayers(), material.tintIndex()) : -1); + posed.pushPose(); + posed.last().set(basePose); + af.modelPartAnimator.applyPoses(index, posed); + Pose pose = posed.last(); + ((b.l)this).evo$getVertexBuilder(renderType).putBakedQuad(pose, quad, quadInstance); + posed.popPose(); + index++; + } + + af.modelPartAnimator.clear(); + ci.cancel(); + } + } + } +} diff --git a/src/main/java/a/p.java b/src/main/java/a/p.java new file mode 100644 index 0000000..ed4f44e --- /dev/null +++ b/src/main/java/a/p.java @@ -0,0 +1,34 @@ +package a; + +import defpackage.*; +import java.lang.reflect.Method; +import java.util.Map; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.Varargs; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(targets = "org/luaj/vm2/lib/jse/JavaMethod", remap = false) +public class p { + @Shadow + @Final + private Method method; + @Shadow + @Final + private static Map methods; + + @Inject(method = "invokeMethod", at = @At("RETURN"), cancellable = true) + private void isSafe(Object par1, Varargs par2, CallbackInfoReturnable cir) { + if (!this.method.isAnnotationPresent(ab.class) && !this.method.getName().equals("getOrDefault") && !this.method.getName().equals("put")) { + cir.setReturnValue(LuaValue.NIL); + } + } + + static { + System.out.println("HMI Lua safety layer loaded!"); + } +} diff --git a/src/main/java/b/a.java b/src/main/java/b/a.java new file mode 100644 index 0000000..53c1abc --- /dev/null +++ b/src/main/java/b/a.java @@ -0,0 +1,12 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.BufferBuilder; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(BufferBuilder.class) +public interface a { + @Accessor("vertices") + int evo$getVertices(); +} diff --git a/src/main/java/b/aa.java b/src/main/java/b/aa.java new file mode 100644 index 0000000..8cb0bc2 --- /dev/null +++ b/src/main/java/b/aa.java @@ -0,0 +1,18 @@ +package b; + +import defpackage.*; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.screens.Screen; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; + +@Mixin(Gui.class) +public abstract class aa { + @ModifyVariable(method = "setScreen(Lnet/minecraft/client/gui/screens/Screen;)V", at = @At("HEAD"), argsOnly = true) + private Screen evo$modifySetScreenArg(Screen original) { + eu event = new eu(original); + defpackage.j.call(event); + return event.getScreen(); + } +} diff --git a/src/main/java/b/ab.java b/src/main/java/b/ab.java new file mode 100644 index 0000000..5c36a2a --- /dev/null +++ b/src/main/java/b/ab.java @@ -0,0 +1,28 @@ +package b; + +import defpackage.*; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.world.inventory.Slot; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(AbstractContainerScreen.class) +public abstract class ab { + @Shadow + protected int imageWidth; + @Shadow + protected int imageHeight; + @Shadow + @Nullable + protected Slot hoveredSlot; + + @Inject(method = "extractRenderState", at = @At("RETURN")) + public void render(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + defpackage.j.call(new fq(context, this.hoveredSlot, this.imageWidth, this.imageHeight)); + } +} diff --git a/src/main/java/b/ac.java b/src/main/java/b/ac.java new file mode 100644 index 0000000..c3795a6 --- /dev/null +++ b/src/main/java/b/ac.java @@ -0,0 +1,66 @@ +package b; + +import defpackage.*; +import net.minecraft.client.Options; +import net.minecraft.client.player.ClientInput; +import net.minecraft.client.player.KeyboardInput; +import net.minecraft.world.entity.player.Input; +import net.minecraft.world.phys.Vec2; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(KeyboardInput.class) +public abstract class ac extends ClientInput { + @Shadow + @Final + private Options options; + + @Unique + private float abobaGetMovementMultiplier(boolean positive, boolean negative) { + if (positive == negative) { + return 0.0F; + } else { + return positive ? 1.0F : -1.0F; + } + } + + @Inject( + method = "tick", + at = @At( + value = "FIELD", + target = "Lnet/minecraft/client/player/KeyboardInput;keyPresses:Lnet/minecraft/world/entity/player/Input;", + ordinal = 0, + shift = Shift.AFTER + ), + cancellable = true + ) + public void injectInputEvent(CallbackInfo ci) { + fh event = new fh( + this.keyPresses, + this.abobaGetMovementMultiplier(this.keyPresses.forward(), this.keyPresses.backward()), + this.abobaGetMovementMultiplier(this.keyPresses.left(), this.keyPresses.right()) + ); + defpackage.j.call(event); + if (!event.isCancelled()) { + float forward = event.getForward(); + float strafe = event.getStrafe(); + this.moveVector = new Vec2(strafe, forward).normalized(); + this.keyPresses = new Input( + forward > 0.0F, + forward < 0.0F, + strafe > 0.0F, + strafe < 0.0F, + this.options.keyJump.isDown(), + this.options.keyShift.isDown(), + this.options.keySprint.isDown() || td.INSTANCE.holdsSprint() + ); + ci.cancel(); + } + } +} diff --git a/src/main/java/b/ad.java b/src/main/java/b/ad.java new file mode 100644 index 0000000..4f46185 --- /dev/null +++ b/src/main/java/b/ad.java @@ -0,0 +1,20 @@ +package b; + +import defpackage.*; +import net.minecraft.client.KeyboardHandler; +import net.minecraft.client.input.KeyEvent; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(KeyboardHandler.class) +public class ad { + @Inject(method = "keyPress", at = @At("HEAD")) + public void triggerKeyEvent(long window, int action, KeyEvent keyInput, CallbackInfo ci) { + int key = keyInput.key(); + if (key != -1) { + defpackage.j.call(new er(action, key)); + } + } +} diff --git a/src/main/java/b/ae.java b/src/main/java/b/ae.java new file mode 100644 index 0000000..714ab5b --- /dev/null +++ b/src/main/java/b/ae.java @@ -0,0 +1,22 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import net.minecraft.client.renderer.LightmapRenderStateExtractor; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(LightmapRenderStateExtractor.class) +public class ae { + @ModifyExpressionValue(method = "extract", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/OptionInstance;get()Ljava/lang/Object;")) + private Object injectFullBright(Object original) { + if (original instanceof Double) { + wq tweaks = wq.INSTANCE; + if (tweaks.isEnabled() && tweaks.modeSetting.isEnable(0)) { + return Math.max((Double)original, tweaks.brightSetting.getCurrent() * 10.0F); + } + } + + return original; + } +} diff --git a/src/main/java/b/af.java b/src/main/java/b/af.java new file mode 100644 index 0000000..d81df93 --- /dev/null +++ b/src/main/java/b/af.java @@ -0,0 +1,51 @@ +package b; + +import defpackage.*; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.LoadingOverlay; +import net.minecraft.client.gui.screens.Overlay; +import net.minecraft.server.packs.resources.ReloadInstance; +import net.minecraft.util.Util; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LoadingOverlay.class) +public abstract class af extends Overlay { + @Shadow + @Final + private Minecraft minecraft; + @Shadow + @Final + private ReloadInstance reload; + @Shadow + @Final + private boolean fadeIn; + @Shadow + private long fadeOutStart; + @Shadow + private long fadeInStart; + @Unique + private final acc evolution$splash = new acc(); + + @Inject(method = "extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V", at = @At("HEAD"), cancellable = true) + private void evolution$extractSplash(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTick, CallbackInfo ci) { + if (acc.available()) { + ci.cancel(); + if (this.fadeIn && this.fadeInStart == -1L) { + this.fadeInStart = Util.getMillis(); + } + + boolean finished = this.evolution$splash + .extract(graphics, this.minecraft, this.reload.getActualProgress(), this.fadeIn, this.fadeInStart, this.fadeOutStart, mouseX, mouseY, partialTick); + if (finished) { + this.minecraft.gui.setOverlay(null); + } + } + } +} diff --git a/src/main/java/b/ag.java b/src/main/java/b/ag.java new file mode 100644 index 0000000..2ba4a0a --- /dev/null +++ b/src/main/java/b/ag.java @@ -0,0 +1,21 @@ +package b; + +import defpackage.*; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.HitResult; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(LocalPlayer.class) +public abstract class ag { + @Inject(method = "raycastHitResult(FLnet/minecraft/world/entity/Entity;)Lnet/minecraft/world/phys/HitResult;", at = @At("HEAD"), cancellable = true) + private void evo$frameAccurateRaycast(float partialTicks, Entity cameraEntity, CallbackInfoReturnable callback) { + HitResult hitResult = tf.INSTANCE.raycast((LocalPlayer)this, cameraEntity, partialTicks); + if (hitResult != null) { + callback.setReturnValue(hitResult); + } + } +} diff --git a/src/main/java/b/ah.java b/src/main/java/b/ah.java new file mode 100644 index 0000000..b994a0b --- /dev/null +++ b/src/main/java/b/ah.java @@ -0,0 +1,29 @@ +package b; + +import defpackage.*; +import net.minecraft.client.Minecraft; +import net.minecraft.world.InteractionHand; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Minecraft.class) +public abstract class ah { + @Inject(method = "startAttack", at = @At("HEAD")) + private void evo$meleePrimaryAttack(CallbackInfoReturnable callback) { + if (sz.handlesAnyHand()) { + ahl.getInstance().onAttack(true); + } + } + + @Inject(method = "startUseItem", at = @At("RETURN")) + private void evo$meleeSecondaryAttack(CallbackInfo callback) { + if (!sz.usesHand(Minecraft.getInstance().player, InteractionHand.OFF_HAND)) { + if (sz.handlesAnyHand()) { + ahl.getInstance().onAttack(false); + } + } + } +} diff --git a/src/main/java/b/ai.java b/src/main/java/b/ai.java new file mode 100644 index 0000000..76250fd --- /dev/null +++ b/src/main/java/b/ai.java @@ -0,0 +1,44 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.platform.Window; +import net.minecraft.client.Minecraft; +import net.minecraft.client.main.GameConfig; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Minecraft.class) +public abstract class ai { + @Shadow + @Final + private Window window; + @Shadow + public HitResult hitResult; + + @Shadow + public abstract Window getWindow(); + + @Inject( + method = "", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft$1;(Lnet/minecraft/client/Minecraft;Lnet/minecraft/client/main/GameConfig;)V") + ) + public void init(GameConfig args, CallbackInfo ci) { + defpackage.bz.getInstance().init(); + } + + @Inject(method = "pick(F)V", at = @At("TAIL")) + private void dropTargetDuringShowcase(float tickDelta, CallbackInfo ci) { + if (sv.INSTANCE.isFlying()) { + this.hitResult = BlockHitResult.miss(Vec3.ZERO, Direction.UP, BlockPos.ZERO); + } + } +} diff --git a/src/main/java/b/aj.java b/src/main/java/b/aj.java new file mode 100644 index 0000000..bc68ee3 --- /dev/null +++ b/src/main/java/b/aj.java @@ -0,0 +1,71 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; +import net.minecraft.client.Minecraft; +import net.minecraft.client.MouseHandler; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.input.MouseButtonInfo; +import net.minecraft.client.player.LocalPlayer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(MouseHandler.class) +public class aj { + @Inject(method = "onButton", at = @At("HEAD")) + private void onMouseButton(long window, MouseButtonInfo mouseInput, int action, CallbackInfo ci) { + int button = mouseInput.button(); + if (button != -1 && window == aqg.mc.getWindow().handle()) { + defpackage.j.call(new er(action, button)); + defpackage.j.call(new es(button, action)); + } + } + + @Inject( + method = "onScroll", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;getInventory()Lnet/minecraft/world/entity/player/Inventory;"), + cancellable = true + ) + public void onMouseScrollHook(long window, double horizontal, double vertical, CallbackInfo ci) { + if (wr.INSTANCE != null && wr.INSTANCE.handleScroll(vertical)) { + ci.cancel(); + } else { + eq event = new eq(horizontal, vertical); + defpackage.j.call(event); + if (event.isCancelled()) { + ci.cancel(); + } + } + } + + @Redirect(method = "handleAccumulatedMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MouseHandler;isMouseGrabbed()Z")) + public boolean onIsCursorLocked(MouseHandler instance) { + return instance.isMouseGrabbed() || this.isAnim(); + } + + @WrapWithCondition(method = "turnPlayer", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;turn(DD)V"), require = 1, allow = 1) + private boolean modifyMouseRotationInput(LocalPlayer instance, double cursorDeltaX, double cursorDeltaY) { + if (afu.getInstance().consumeLook(cursorDeltaX, cursorDeltaY)) { + return false; + } + + et event = new et((float)cursorDeltaX, (float)cursorDeltaY); + defpackage.j.call(event); + if (event.isCancelled()) { + return false; + } + + instance.turn(event.getCursorDeltaX(), event.getCursorDeltaY()); + return false; + } + + @Unique + private boolean isAnim() { + Screen screen = Minecraft.getInstance().gui.screen(); + return false; + } +} diff --git a/src/main/java/b/ak.java b/src/main/java/b/ak.java new file mode 100644 index 0000000..9e233a0 --- /dev/null +++ b/src/main/java/b/ak.java @@ -0,0 +1,15 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import net.minecraft.client.Options; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(Options.class) +public class ak { + @ModifyReturnValue(method = "getEffectiveRenderDistance()I", at = @At("RETURN")) + private int extendRenderDistance(int original) { + return sr.INSTANCE.isHolding() ? Math.max(original, sr.INSTANCE.radius()) : original; + } +} diff --git a/src/main/java/b/al.java b/src/main/java/b/al.java new file mode 100644 index 0000000..0df5455 --- /dev/null +++ b/src/main/java/b/al.java @@ -0,0 +1,25 @@ +package b; + +import defpackage.*; +import net.minecraft.world.scores.PlayerTeam; +import net.minecraft.world.scores.Scoreboard; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Scoreboard.class) +public abstract class al { + @Shadow + @Nullable + public abstract PlayerTeam getPlayersTeam(String var1); + + @Inject(method = "removePlayerFromTeam(Ljava/lang/String;Lnet/minecraft/world/scores/PlayerTeam;)V", at = @At("HEAD"), cancellable = true) + public void remove(String scoreHolderName, PlayerTeam team, CallbackInfo ci) { + if (this.getPlayersTeam(scoreHolderName) != team) { + ci.cancel(); + } + } +} diff --git a/src/main/java/b/am.java b/src/main/java/b/am.java new file mode 100644 index 0000000..1f348c6 --- /dev/null +++ b/src/main/java/b/am.java @@ -0,0 +1,39 @@ +package b; + +import defpackage.*; +import net.minecraft.client.Minecraft; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Minecraft.class) +public abstract class am { + @Unique + private static boolean evo$cosmeticBlocksInteraction() { + return tc.blocksInteraction() || sy.blocksInteraction() || tb.blocksInteraction(); + } + + @Inject(method = "startAttack()Z", at = @At("HEAD"), cancellable = true) + private void evo$blockWatchAttack(CallbackInfoReturnable callback) { + if (evo$cosmeticBlocksInteraction()) { + callback.setReturnValue(Boolean.FALSE); + } + } + + @Inject(method = "continueAttack(Z)V", at = @At("HEAD"), cancellable = true) + private void evo$blockWatchMining(boolean hitting, CallbackInfo callback) { + if (evo$cosmeticBlocksInteraction()) { + callback.cancel(); + } + } + + @Inject(method = "startUseItem()V", at = @At("HEAD"), cancellable = true) + private void evo$blockWatchUse(CallbackInfo callback) { + if (evo$cosmeticBlocksInteraction()) { + callback.cancel(); + } + } +} diff --git a/src/main/java/b/an.java b/src/main/java/b/an.java new file mode 100644 index 0000000..e144040 --- /dev/null +++ b/src/main/java/b/an.java @@ -0,0 +1,25 @@ +package b; + +import defpackage.*; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Pseudo +@Mixin(targets = "net.caffeinemc.mods.sodium.client.model.light.data.LightDataAccess", remap = false) +public class an { + @Inject(method = "compute(III)I", at = @At("RETURN"), cancellable = true, require = 0) + private void evo$injectDynamicLight(int x, int y, int z, CallbackInfoReturnable cir) { + if (uq.INSTANCE.isEnabled()) { + int dyn = uq.getBlockLight(x, y, z); + if (dyn > 0) { + int packed = cir.getReturnValueI(); + if ((packed & 15) < dyn) { + cir.setReturnValue(packed & -16 | dyn); + } + } + } + } +} diff --git a/src/main/java/b/ao.java b/src/main/java/b/ao.java new file mode 100644 index 0000000..f711322 --- /dev/null +++ b/src/main/java/b/ao.java @@ -0,0 +1,34 @@ +package b; + +import defpackage.*; +import java.util.Map; +import net.minecraft.client.sounds.SoundManager; +import net.minecraft.client.sounds.WeighedSoundEvents; +import net.minecraft.resources.Identifier; +import net.minecraft.server.packs.resources.Resource; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(SoundManager.class) +public class ao { + @Shadow + @Final + private Map registry; + @Shadow + @Final + private Map soundCache; + + @Inject( + method = "apply(Lnet/minecraft/client/sounds/SoundManager$Preparations;Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)V", + at = @At("TAIL"), + require = 1 + ) + private void installEvolutionCustomSounds(CallbackInfo ci) { + mk.install(this.registry, this.soundCache); + tl.INSTANCE.refreshSoundOptions(); + } +} diff --git a/src/main/java/b/ap.java b/src/main/java/b/ap.java new file mode 100644 index 0000000..c32c42a --- /dev/null +++ b/src/main/java/b/ap.java @@ -0,0 +1,83 @@ +package b; + +import defpackage.*; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.components.LogoRenderer; +import net.minecraft.client.gui.components.SplashRenderer; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.TitleScreen; +import net.minecraft.network.chat.Component; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(TitleScreen.class) +public abstract class ap extends Screen { + protected ap(Component title) { + super(title); + } + + @Inject(method = "init()V", at = @At("RETURN")) + private void evolution$installMenuEntries(CallbackInfo ci) { + aci.ensureRegistered(); + acj.installInto(this, widget -> this.addRenderableWidget(widget)); + xk toast = new xk((TitleScreen)this, this.font); + acj.exclude(toast); + this.addRenderableWidget(toast); + } + + @Inject(method = "extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V", at = @At("HEAD")) + private void evolution$takeOverMenu(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + aco layout = aco.INSTANCE; + layout.update(this, this.width, this.height); + layout.requestCursor(context, mouseX, mouseY); + } + + @Inject(method = "extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V", at = @At("RETURN")) + private void evolution$releaseMenu(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + aco.INSTANCE.reveal(); + } + + @Inject(method = "removed()V", at = @At("HEAD")) + private void evolution$forgetMenu(CallbackInfo ci) { + aco.INSTANCE.forget(this); + } + + @Redirect( + method = "extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/gui/components/LogoRenderer;extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IF)V" + ) + ) + private void evolution$skipLogo(LogoRenderer instance, GuiGraphicsExtractor context, int width, float alpha) { + } + + @Redirect( + method = "extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/gui/components/SplashRenderer;extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;ILnet/minecraft/client/gui/Font;F)V" + ) + ) + private void evolution$skipSplash(SplashRenderer instance, GuiGraphicsExtractor context, int width, Font font, float alpha) { + } + + @Redirect( + method = "extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiGraphicsExtractor;text(Lnet/minecraft/client/gui/Font;Ljava/lang/String;III)V") + ) + private void evolution$skipVersionLabel(GuiGraphicsExtractor context, Font font, String version, int x, int y, int color) { + } + + @Redirect( + method = "extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/TitleScreen;realmsNotificationsEnabled()Z") + ) + private boolean evolution$skipRealmsNotifications(TitleScreen instance) { + return false; + } +} diff --git a/src/main/java/b/aq.java b/src/main/java/b/aq.java new file mode 100644 index 0000000..21637a4 --- /dev/null +++ b/src/main/java/b/aq.java @@ -0,0 +1,27 @@ +package b; + +import defpackage.*; +import net.minecraft.core.BlockPos; +import net.minecraft.util.LightCoordsUtil; +import net.minecraft.world.level.BlockAndLightGetter; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(LightCoordsUtil.class) +public class aq { + @Inject(method = "getLightCoords(Lnet/minecraft/world/level/BlockAndLightGetter;Lnet/minecraft/core/BlockPos;)I", at = @At("RETURN"), cancellable = true) + private static void evo$injectDynamicLight(BlockAndLightGetter world, BlockPos pos, CallbackInfoReturnable cir) { + if (uq.INSTANCE.isEnabled()) { + int dyn = uq.getBlockLight(pos.getX(), pos.getY(), pos.getZ()); + if (dyn > 0) { + int lm = cir.getReturnValueI(); + int block = lm >> 4; + if (block < dyn) { + cir.setReturnValue(lm & -241 | dyn << 4); + } + } + } + } +} diff --git a/src/main/java/b/ar.java b/src/main/java/b/ar.java new file mode 100644 index 0000000..bd608ab --- /dev/null +++ b/src/main/java/b/ar.java @@ -0,0 +1,26 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; +import net.minecraft.client.renderer.blockentity.state.BlockEntityRenderState; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(BlockEntityRenderDispatcher.class) +public abstract class ar { + @Inject( + method = "submit(Lnet/minecraft/client/renderer/blockentity/state/BlockEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/level/CameraRenderState;)V", + at = @At("HEAD") + ) + private void evo$animatePlacingBlockEntity( + BlockEntityRenderState renderState, PoseStack poseStack, SubmitNodeCollector collector, CameraRenderState camera, CallbackInfo ci + ) { + aut.applyBlockEntity(renderState.blockPos, poseStack, Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick(false)); + } +} diff --git a/src/main/java/b/as.java b/src/main/java/b/as.java new file mode 100644 index 0000000..2b1c0b5 --- /dev/null +++ b/src/main/java/b/as.java @@ -0,0 +1,40 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.sugar.Local; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.BlockPos; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(BlockItem.class) +public abstract class as { + @Inject( + method = "place(Lnet/minecraft/world/item/context/BlockPlaceContext;)Lnet/minecraft/world/InteractionResult;", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/item/BlockItem;updateBlockStateFromTag(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/Level;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/world/level/block/state/BlockState;" + ) + ) + private void evo$startPlaceAnimation( + BlockPlaceContext context, + CallbackInfoReturnable cir, + @Local Level level, + @Local BlockPos pos, + @Local Player player, + @Local(ordinal = 0) BlockState placementState, + @Local(ordinal = 1) BlockState placedState + ) { + if (level instanceof ClientLevel clientLevel && placedState.is(placementState.getBlock())) { + vy.INSTANCE.onBlockPlaced(clientLevel, pos, placedState, player, context.getHand()); + } + } +} diff --git a/src/main/java/b/at.java b/src/main/java/b/at.java new file mode 100644 index 0000000..7f16095 --- /dev/null +++ b/src/main/java/b/at.java @@ -0,0 +1,23 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.state.level.LevelRenderState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LevelRenderer.class) +public abstract class at { + @Inject( + method = "submitEntities(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/state/level/LevelRenderState;Lnet/minecraft/client/renderer/SubmitNodeCollector;)V", + at = @At("TAIL") + ) + private void evo$submitPlacingBlocks(PoseStack poseStack, LevelRenderState levelRenderState, SubmitNodeCollector collector, CallbackInfo ci) { + aut.submit(poseStack, collector, Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick(false)); + } +} diff --git a/src/main/java/b/au.java b/src/main/java/b/au.java new file mode 100644 index 0000000..f5f2d75 --- /dev/null +++ b/src/main/java/b/au.java @@ -0,0 +1,28 @@ +package b; + +import defpackage.*; +import net.minecraft.client.renderer.block.BlockAndTintGetter; +import net.minecraft.client.renderer.block.ModelBlockRenderer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(ModelBlockRenderer.class) +public abstract class au { + @Inject( + method = "shouldRenderFace(Lnet/minecraft/client/renderer/block/BlockAndTintGetter;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Direction;Lnet/minecraft/core/BlockPos;)Z", + at = @At("HEAD"), + cancellable = true + ) + private void evo$revealFacesNextToPlacingBlock( + BlockAndTintGetter level, BlockState state, Direction direction, BlockPos neighborPos, CallbackInfoReturnable cir + ) { + if (aut.isHidden(neighborPos)) { + cir.setReturnValue(true); + } + } +} diff --git a/src/main/java/b/av.java b/src/main/java/b/av.java new file mode 100644 index 0000000..9e272ca --- /dev/null +++ b/src/main/java/b/av.java @@ -0,0 +1,29 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.sugar.Local; +import net.minecraft.client.renderer.chunk.SectionCompiler; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.RenderShape; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(SectionCompiler.class) +public abstract class av { + @ModifyExpressionValue( + method = "compile(Lnet/minecraft/core/SectionPos;Lnet/minecraft/client/renderer/chunk/RenderSectionRegion;Lcom/mojang/blaze3d/vertex/VertexSorting;Lnet/minecraft/client/renderer/SectionBufferBuilderPack;)Lnet/minecraft/client/renderer/chunk/SectionCompiler$Results;", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;getRenderShape()Lnet/minecraft/world/level/block/RenderShape;") + ) + private RenderShape evo$hidePlacingBlock(RenderShape original, @Local(ordinal = 2) BlockPos pos) { + return original == RenderShape.MODEL && aut.isHidden(pos) ? RenderShape.INVISIBLE : original; + } + + @ModifyExpressionValue( + method = "compile(Lnet/minecraft/core/SectionPos;Lnet/minecraft/client/renderer/chunk/RenderSectionRegion;Lcom/mojang/blaze3d/vertex/VertexSorting;Lnet/minecraft/client/renderer/SectionBufferBuilderPack;)Lnet/minecraft/client/renderer/chunk/SectionCompiler$Results;", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;isSolidRender()Z") + ) + private boolean evo$unblockPlacingBlock(boolean original, @Local(ordinal = 2) BlockPos pos) { + return original && !aut.isHidden(pos); + } +} diff --git a/src/main/java/b/aw.java b/src/main/java/b/aw.java new file mode 100644 index 0000000..42b71d6 --- /dev/null +++ b/src/main/java/b/aw.java @@ -0,0 +1,22 @@ +package b; + +import defpackage.*; +import net.minecraft.client.renderer.block.dispatch.BlockStateModel; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Pseudo +@Mixin(targets = "net.caffeinemc.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderer", remap = false) +public abstract class aw { + @Inject(method = "renderModel", at = @At("HEAD"), cancellable = true, require = 0, remap = false) + private void evo$hidePlacingBlock(BlockStateModel model, BlockState state, BlockPos pos, BlockPos origin, CallbackInfo ci) { + if (aut.isHidden(pos)) { + ci.cancel(); + } + } +} diff --git a/src/main/java/b/ax.java b/src/main/java/b/ax.java new file mode 100644 index 0000000..bb78a5b --- /dev/null +++ b/src/main/java/b/ax.java @@ -0,0 +1,38 @@ +package b; + +import defpackage.*; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos.MutableBlockPos; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Pseudo +@Mixin(targets = "net.caffeinemc.mods.sodium.client.render.model.AbstractBlockRenderContext", remap = false) +public abstract class ax { + @Shadow(remap = false) + @Final + private MutableBlockPos cachedPositionObject; + + @Inject( + method = "shouldDrawSide(Lnet/minecraft/core/Direction;)Z", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/block/BlockAndTintGetter;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;", + shift = Shift.BEFORE + ), + cancellable = true, + require = 0, + remap = false + ) + private void evo$revealFacesNextToPlacingBlock(Direction direction, CallbackInfoReturnable cir) { + if (aut.isHidden(this.cachedPositionObject)) { + cir.setReturnValue(true); + } + } +} diff --git a/src/main/java/b/ay.java b/src/main/java/b/ay.java new file mode 100644 index 0000000..46efaf7 --- /dev/null +++ b/src/main/java/b/ay.java @@ -0,0 +1,30 @@ +package b; + +import defpackage.*; +import net.minecraft.client.Camera; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Camera.class) +public abstract class ay { + @Shadow + public abstract float yRot(); + + @Shadow + public abstract float xRot(); + + @Shadow + protected abstract void setRotation(float var1, float var2); + + @Inject(method = "alignWithEntity", at = @At("TAIL")) + private void evo$lightningShake(float tickDelta, CallbackInfo ci) { + float yawOffset = up.INSTANCE.cameraShakeYaw(); + float pitchOffset = up.INSTANCE.cameraShakePitch(); + if (yawOffset != 0.0F || pitchOffset != 0.0F) { + this.setRotation(this.yRot() + yawOffset, this.xRot() + pitchOffset); + } + } +} diff --git a/src/main/java/b/az.java b/src/main/java/b/az.java new file mode 100644 index 0000000..53a5c3c --- /dev/null +++ b/src/main/java/b/az.java @@ -0,0 +1,151 @@ +package b; + +import defpackage.*; +import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; +import net.minecraft.resources.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(LivingEntityRenderState.class) +public class az implements aud { + @Unique + private int evo$entityId; + @Unique + private String evo$name = ""; + @Unique + private float evo$health; + @Unique + private float evo$maxHealth = 1.0F; + @Unique + private Identifier evo$texture; + @Unique + private byte evo$targetKind; + @Unique + private int evo$cachedColor; + @Unique + private long evo$colorFrameId; + @Unique + private long evo$visualFrameId; + @Unique + private boolean evo$renderable; + @Unique + private float evo$distanceAlpha = 1.0F; + @Unique + private static final int evo$NO_CHAIN_ENTRY = -1; + @Unique + private long evo$reuseChainFrame = Long.MIN_VALUE; + @Unique + private int evo$reuseChainHead = -1; + @Unique + private int evo$reuseChainTail = -1; + + @Override + public long evo$getReuseChainFrame() { + return this.evo$reuseChainFrame; + } + + @Override + public int evo$getReuseChainHead() { + return this.evo$reuseChainHead; + } + + @Override + public int evo$getReuseChainTail() { + return this.evo$reuseChainTail; + } + + @Override + public void evo$setReuseChain(long frameId, int head, int tail) { + this.evo$reuseChainFrame = frameId; + this.evo$reuseChainHead = head; + this.evo$reuseChainTail = tail; + } + + @Override + public void evo$setReuseChainTail(int tail) { + this.evo$reuseChainTail = tail; + } + + @Override + public long evo$getVisualFrameId() { + return this.evo$visualFrameId; + } + + @Override + public boolean evo$isRenderable() { + return this.evo$renderable; + } + + @Override + public float evo$getDistanceAlpha() { + return this.evo$distanceAlpha; + } + + @Override + public void evo$setVisual(long frameId, boolean renderable, float distanceAlpha) { + this.evo$visualFrameId = frameId; + this.evo$renderable = renderable; + this.evo$distanceAlpha = distanceAlpha; + } + + @Override + public void evo$setChamsData(int entityId, String name, float health, float maxHealth, Identifier texture, byte targetKind) { + this.evo$entityId = entityId; + this.evo$name = name == null ? "" : name; + this.evo$health = Math.max(0.0F, health); + this.evo$maxHealth = maxHealth > 0.0F ? maxHealth : 1.0F; + this.evo$texture = texture; + this.evo$targetKind = targetKind; + this.evo$colorFrameId = -1L; + } + + @Override + public int evo$getEntityId() { + return this.evo$entityId; + } + + @Override + public String evo$getName() { + return this.evo$name; + } + + @Override + public float evo$getHealth() { + return this.evo$health; + } + + @Override + public float evo$getMaxHealth() { + return this.evo$maxHealth; + } + + @Override + public Identifier evo$getTexture() { + return this.evo$texture; + } + + @Override + public byte evo$getTargetKind() { + return this.evo$targetKind; + } + + @Override + public int evo$getCachedColor() { + return this.evo$cachedColor; + } + + @Override + public void evo$setCachedColor(int color) { + this.evo$cachedColor = color; + } + + @Override + public long evo$getColorFrameId() { + return this.evo$colorFrameId; + } + + @Override + public void evo$setColorFrameId(long frameId) { + this.evo$colorFrameId = frameId; + } +} diff --git a/src/main/java/b/b.java b/src/main/java/b/b.java new file mode 100644 index 0000000..dd0bfdb --- /dev/null +++ b/src/main/java/b/b.java @@ -0,0 +1,13 @@ +package b; + +import defpackage.*; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.components.Button.OnPress; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(Button.class) +public interface b { + @Accessor("onPress") + OnPress evolution$getOnPress(); +} diff --git a/src/main/java/b/ba.java b/src/main/java/b/ba.java new file mode 100644 index 0000000..076df2f --- /dev/null +++ b/src/main/java/b/ba.java @@ -0,0 +1,119 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.model.EntityModel; +import net.minecraft.client.model.Model; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider.Context; +import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer.CrumblingOverlay; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.resources.Identifier; +import net.minecraft.world.entity.LivingEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LivingEntityRenderer.class) +public abstract class ba> extends EntityRenderer { + @Shadow + public abstract Identifier getTextureLocation(S var1); + + protected ba(Context ctx) { + super(ctx); + } + + @Inject( + method = "submit(Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/level/CameraRenderState;)V", + at = @At("HEAD"), + cancellable = true + ) + private void evo$hideDisintegratedBody(S state, PoseStack matrices, SubmitNodeCollector queue, CameraRenderState cameraState, CallbackInfo ci) { + if (up.INSTANCE.shouldHideEntity(((aud)state).evo$getEntityId())) { + ci.cancel(); + } + } + + @Inject( + method = "submit(Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/level/CameraRenderState;)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/entity/LivingEntityRenderer;scale(Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;)V", + shift = Shift.AFTER + ) + ) + private void evo$squashPattedEntity(S state, PoseStack matrices, SubmitNodeCollector queue, CameraRenderState cameraState, CallbackInfo ci) { + float squash = aim.getInstance().squash(((aud)state).evo$getEntityId()); + if (squash != 1.0F) { + matrices.scale(1.0F, squash, 1.0F); + } + } + + @Inject( + method = "extractRenderState(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;F)V", + at = @At("TAIL") + ) + private void evo$captureChamsData(T entity, S state, float tickDelta, CallbackInfo ci) { + Identifier texture = this.getTextureLocation(state); + byte targetKind = (byte)tw.INSTANCE.computeTargetKind(entity).ordinal(); + aud access = (aud)state; + access.evo$setChamsData(entity.getId(), entity.getName().getString(), entity.getHealth(), entity.getMaxHealth(), texture, targetKind); + } + + @ModifyVariable( + method = "submit(Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/level/CameraRenderState;)V", + at = @At("HEAD"), + argsOnly = true + ) + private SubmitNodeCollector evo$wrapCommandQueue(SubmitNodeCollector originalQueue, S state) { + if (!ty.isLevelRender()) { + return originalQueue; + } else { + return (!tw.INSTANCE.glowActive() || !tw.INSTANCE.isRenderable(state)) && !tw.INSTANCE.shouldApplyHitcolor(state) + ? originalQueue + : auc.wrap(originalQueue, state); + } + } + + @Redirect( + method = "submit(Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/level/CameraRenderState;)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;IIILnet/minecraft/client/renderer/texture/TextureAtlasSprite;ILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V" + ) + ) + private void evo$submitModelWithTint( + SubmitNodeCollector queue, + Model model, + Object modelState, + PoseStack matrices, + RenderType layer, + int light, + int overlay, + int color, + TextureAtlasSprite sprite, + int outlineColor, + CrumblingOverlay crumblingOverlayCommand + ) { + if (modelState instanceof LivingEntityRenderState livingState) { + int entityId = ((aud)livingState).evo$getEntityId(); + if (afa.shouldHideVanilla(entityId)) { + return; + } + + color = up.INSTANCE.charredBodyTint(entityId, color); + } + + queue.submitModel(model, modelState, matrices, layer, light, overlay, color, sprite, outlineColor, crumblingOverlayCommand); + } +} diff --git a/src/main/java/b/bb.java b/src/main/java/b/bb.java new file mode 100644 index 0000000..31a3c8c --- /dev/null +++ b/src/main/java/b/bb.java @@ -0,0 +1,36 @@ +package b; + +import defpackage.*; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer.Submit; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ModelFeatureRenderer.class) +public abstract class bb { + @Inject( + method = "prepareModel(Lnet/minecraft/client/renderer/feature/ModelFeatureRenderer$Submit;)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/model/Model;renderToBuffer(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;III)V" + ) + ) + private void evo$beforeModelGeometry(Submit submit, CallbackInfo ci) { + atz.beginModelRender(submit); + } + + @Inject( + method = "prepareModel(Lnet/minecraft/client/renderer/feature/ModelFeatureRenderer$Submit;)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/model/Model;renderToBuffer(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;III)V", + shift = Shift.AFTER + ) + ) + private void evo$afterModelGeometry(Submit submit, CallbackInfo ci) { + atz.endModelRender(); + } +} diff --git a/src/main/java/b/bc.java b/src/main/java/b/bc.java new file mode 100644 index 0000000..94a7d0b --- /dev/null +++ b/src/main/java/b/bc.java @@ -0,0 +1,22 @@ +package b; + +import defpackage.*; +import net.minecraft.client.model.Model; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(Model.class) +public abstract class bc implements aub { + @Unique + private aua evo$modelTree; + + @Override + public aua evo$getModelTree() { + return this.evo$modelTree; + } + + @Override + public void evo$setModelTree(aua tree) { + this.evo$modelTree = tree; + } +} diff --git a/src/main/java/b/bd.java b/src/main/java/b/bd.java new file mode 100644 index 0000000..1c70eea --- /dev/null +++ b/src/main/java/b/bd.java @@ -0,0 +1,21 @@ +package b; + +import defpackage.*; +import java.util.List; +import net.minecraft.client.renderer.feature.FeatureFrameContext; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer; +import net.minecraft.client.renderer.feature.RenderTypeFeatureRenderer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(RenderTypeFeatureRenderer.class) +public abstract class bd { + @Inject(method = "prepareGroup(Lnet/minecraft/client/renderer/feature/FeatureFrameContext;Ljava/util/List;Z)V", at = @At("HEAD")) + private void evo$captureStagedBuffer(FeatureFrameContext context, List submits, boolean strictlyOrdered, CallbackInfo ci) { + if (this instanceof ModelFeatureRenderer) { + atz.captureFrameContext(context.stagedVertexBuffer(), context.lightmap()); + } + } +} diff --git a/src/main/java/b/be.java b/src/main/java/b/be.java new file mode 100644 index 0000000..0a1c61a --- /dev/null +++ b/src/main/java/b/be.java @@ -0,0 +1,26 @@ +package b; + +import defpackage.*; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.TitleScreen; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Screen.class) +public class be { + @Inject(method = "extractPanorama(Lnet/minecraft/client/gui/GuiGraphicsExtractor;F)V", at = @At("HEAD"), cancellable = true) + private void evolution$menuVideoBackground(GuiGraphicsExtractor context, float delta, CallbackInfo ci) { + Screen self = (Screen)this; + if (Minecraft.getInstance().level == null && !(self instanceof api)) { + if (!(self instanceof TitleScreen)) { + aqr.renderExtracted(context, self.width, self.height); + } + + ci.cancel(); + } + } +} diff --git a/src/main/java/b/bf.java b/src/main/java/b/bf.java new file mode 100644 index 0000000..2325898 --- /dev/null +++ b/src/main/java/b/bf.java @@ -0,0 +1,16 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.platform.Window; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Window.class) +public class bf { + @Inject(method = "onResize", at = @At("TAIL")) + private void onWindowSizeChanged(long window, int width, int height, CallbackInfo ci) { + defpackage.j.call(new fa()); + } +} diff --git a/src/main/java/b/bg.java b/src/main/java/b/bg.java new file mode 100644 index 0000000..9edba45 --- /dev/null +++ b/src/main/java/b/bg.java @@ -0,0 +1,91 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.sugar.Local; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.components.ChatComponent; +import net.minecraft.client.gui.components.ChatComponent.DisplayMode; +import net.minecraft.client.multiplayer.chat.GuiMessage; +import net.minecraft.client.multiplayer.chat.GuiMessage.Line; +import net.minecraft.network.chat.Component; +import org.joml.Matrix3x2fStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ChatComponent.class) +public abstract class bg { + @Unique + private static final float OFFSET_EPSILON = 0.01F; + @Shadow + private int chatScrollbarPos; + @Unique + private long evo$lastMessageAt; + @Unique + private boolean evo$slid; + + @Shadow + private int getLineHeight() { + return 0; + } + + @ModifyVariable( + method = "addMessage(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/MessageSignature;Lnet/minecraft/client/multiplayer/chat/GuiMessageSource;Lnet/minecraft/client/multiplayer/chat/GuiMessageTag;)V", + at = @At("HEAD"), + argsOnly = true + ) + private Component evo$decorateCrosshairCode(Component message) { + return wu.decorate(message); + } + + @Inject(method = "addMessageToDisplayQueue", at = @At("TAIL")) + private void evo$markMessageAdded(GuiMessage message, CallbackInfo ci) { + this.evo$lastMessageAt = System.currentTimeMillis(); + } + + @Inject( + method = "extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/gui/Font;IIILnet/minecraft/client/gui/components/ChatComponent$DisplayMode;Z)V", + at = @At("HEAD") + ) + private void evo$pushSlide( + GuiGraphicsExtractor context, Font font, int guiTicks, int mouseX, int mouseY, DisplayMode displayMode, boolean insertionMode, CallbackInfo ci + ) { + float offset = this.evo$slideOffset(); + if (!(offset < 0.01F)) { + Matrix3x2fStack pose = context.pose(); + pose.pushMatrix(); + pose.translate(0.0F, offset); + this.evo$slid = true; + } + } + + @Inject( + method = "extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/gui/Font;IIILnet/minecraft/client/gui/components/ChatComponent$DisplayMode;Z)V", + at = @At("RETURN") + ) + private void evo$popSlide( + GuiGraphicsExtractor context, Font font, int guiTicks, int mouseX, int mouseY, DisplayMode displayMode, boolean insertionMode, CallbackInfo ci + ) { + if (this.evo$slid) { + context.pose().popMatrix(); + this.evo$slid = false; + } + } + + @ModifyVariable(method = "forEachLine", at = @At("STORE"), ordinal = 0) + private float evo$fadeMessage(float alpha, @Local Line line) { + return tq.INSTANCE.fadeChatMessages() && !tq.INSTANCE.chatAnimationFinished(this.evo$lastMessageAt) + ? alpha * tq.INSTANCE.chatMessageAlpha(((aqe)line.parent()).evo$addedAt()) + : alpha; + } + + @Unique + private float evo$slideOffset() { + return this.chatScrollbarPos == 0 && tq.INSTANCE.animateChatMessages() ? tq.INSTANCE.chatSlideOffset(this.evo$lastMessageAt, this.getLineHeight()) : 0.0F; + } +} diff --git a/src/main/java/b/bh.java b/src/main/java/b/bh.java new file mode 100644 index 0000000..d18479e --- /dev/null +++ b/src/main/java/b/bh.java @@ -0,0 +1,25 @@ +package b; + +import defpackage.*; +import net.minecraft.client.multiplayer.chat.GuiMessage; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(GuiMessage.class) +public abstract class bh implements aqe { + @Unique + private long evo$addedAt; + + @Inject(method = "", at = @At("TAIL")) + private void evo$captureAddedTime(CallbackInfo ci) { + this.evo$addedAt = System.currentTimeMillis(); + } + + @Override + public long evo$addedAt() { + return this.evo$addedAt; + } +} diff --git a/src/main/java/b/bi.java b/src/main/java/b/bi.java new file mode 100644 index 0000000..b38ce05 --- /dev/null +++ b/src/main/java/b/bi.java @@ -0,0 +1,43 @@ +package b; + +import defpackage.*; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.Hud; +import net.minecraft.world.entity.player.Player; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Hud.class) +public abstract class bi { + private static final String FOOD_ACTION = "food bar indication"; + private static final String HEALTH_ACTION = "food heal preview"; + + @Inject(method = "extractFood(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/world/entity/player/Player;II)V", at = @At("RETURN")) + private void drawFoodIndication(GuiGraphicsExtractor context, Player player, int top, int right, CallbackInfo ci) { + if (uy.INSTANCE.isEnabled()) { + id.run(Cif.RENDER, "food bar indication", () -> uy.INSTANCE.renderFoodOverlay(context, player, top, right)); + } + } + + @Inject(method = "extractHearts(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/world/entity/player/Player;IIIIFIIIZ)V", at = @At("RETURN")) + private void drawHealPreview( + GuiGraphicsExtractor context, + Player player, + int left, + int top, + int lineHeight, + int regenIndex, + float maxHealth, + int currentHealth, + int displayHealth, + int absorption, + boolean blink, + CallbackInfo ci + ) { + if (uy.INSTANCE.isEnabled()) { + id.run(Cif.RENDER, "food heal preview", () -> uy.INSTANCE.renderHealthPreview(context, player, left, top, lineHeight, maxHealth, currentHealth)); + } + } +} diff --git a/src/main/java/b/bj.java b/src/main/java/b/bj.java new file mode 100644 index 0000000..2a05b4e --- /dev/null +++ b/src/main/java/b/bj.java @@ -0,0 +1,21 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.renderer.ScreenEffectRenderer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ScreenEffectRenderer.class) +public class bj { + @Inject(method = "submitFire", at = @At("HEAD"), cancellable = true) + private static void removeFireOverlay(PoseStack matrices, SubmitNodeCollector collector, TextureAtlasSprite sprite, CallbackInfo ci) { + if (vv.INSTANCE.isRemoveFire()) { + ci.cancel(); + } + } +} diff --git a/src/main/java/b/bk.java b/src/main/java/b/bk.java new file mode 100644 index 0000000..5bd358d --- /dev/null +++ b/src/main/java/b/bk.java @@ -0,0 +1,118 @@ +package b; + +import defpackage.*; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.Hud; +import net.minecraft.world.level.GameType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Hud.class) +public abstract class bk { + private static final float CROSSHAIR_HIDDEN_SCALE = 0.01F; + private static final float CROSSHAIR_FULL_SCALE = 1.0F; + + @Inject( + method = "extractCrosshair(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/DeltaTracker;)V", + at = @At("HEAD"), + cancellable = true + ) + private void removeVanillaCrosshair(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { + if (ue.INSTANCE.isEnabled()) { + ci.cancel(); + } else { + float anim = ue.INSTANCE.updateAppear(); + if (anim <= 0.01F) { + ci.cancel(); + } else { + if (anim < 1.0F) { + context.pose().pushMatrix(); + float centerX = context.guiWidth() / 2.0F; + float centerY = context.guiHeight() / 2.0F; + context.pose().translate(centerX, centerY); + context.pose().scale(anim, anim); + context.pose().translate(-centerX, -centerY); + } + } + } + } + + @Inject(method = "extractCrosshair(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/DeltaTracker;)V", at = @At("RETURN")) + private void onRenderCrosshairReturn(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { + float anim = ue.INSTANCE.appearAnimation.value(); + if (anim > 0.01F && anim < 1.0F && !ue.INSTANCE.isEnabled()) { + context.pose().popMatrix(); + } + } + + @Inject(method = "extractHotbarAndDecorations", at = @At("HEAD"), cancellable = true) + private void renderMainHud(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { + if (aqg.mc.gameMode.getPlayerMode() != GameType.SPECTATOR) { + vm interfaceModule = vm.INSTANCE; + if (interfaceModule.isEnabled() && interfaceModule.isEnableHotBar()) { + ci.cancel(); + } + } + } + + @Inject(method = "extractTabList", at = @At("HEAD"), cancellable = true) + private void inject(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { + vm interfaceModule = vm.INSTANCE; + if (interfaceModule.isEnabled() && interfaceModule.isEnableTab()) { + ci.cancel(); + } + } + + @Inject(method = "extractOverlayMessage", at = @At("HEAD"), cancellable = true) + private void injectRenderOverlayMessage(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { + if (aqg.mc.gameMode.getPlayerMode() != GameType.SPECTATOR) { + vm interfaceModule = vm.INSTANCE; + if (interfaceModule.isEnabled() && interfaceModule.isEnableHotBar()) { + ci.cancel(); + } + } + } + + @Inject(method = "extractScoreboardSidebar", at = @At("HEAD"), cancellable = true) + private void injectRenderScoreboardSidebar(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { + if (vv.INSTANCE.isRemoveScoreboard()) { + ci.cancel(); + } else { + vm interfaceModule = vm.INSTANCE; + if (interfaceModule.isEnabled() && interfaceModule.isEnableScoreBar()) { + ci.cancel(); + } + } + } + + @Inject(method = "extractBossOverlay", at = @At("HEAD"), cancellable = true) + private void injectExtractBossOverlay(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { + if (vv.INSTANCE.isRemoveBossBar()) { + ci.cancel(); + } + } + + @Inject(method = "extractEffects", at = @At("HEAD"), cancellable = true) + private void injectRenderStatusEffectOverlay(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { + vm interfaceModule = vm.INSTANCE; + if (interfaceModule.isEnabled() && interfaceModule.isEnablePotions()) { + ci.cancel(); + } + } + + @ModifyVariable(method = "extractPlayerHealth", at = @At("STORE"), ordinal = 3) + private int modifyM(int original, GuiGraphicsExtractor context) { + if (aqg.mc.gameMode.getPlayerMode() != GameType.SPECTATOR) { + vm interfaceModule = vm.INSTANCE; + if (interfaceModule.isEnabled() && interfaceModule.isEnableHotBar()) { + return context.guiWidth() / 128; + } + } + + return original; + } +} diff --git a/src/main/java/b/bl.java b/src/main/java/b/bl.java new file mode 100644 index 0000000..90f405f --- /dev/null +++ b/src/main/java/b/bl.java @@ -0,0 +1,52 @@ +package b; + +import defpackage.*; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.Screen; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Screen.class) +public abstract class bl { + @Inject(method = "extractBackground", at = @At("RETURN")) + private void evo$scaleContainerBackground(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + if (this instanceof aqd screen) { + screen.evo$pushGuiScale(context); + } + } + + @Inject( + method = "extractRenderStateWithTooltipAndSubtitles", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/gui/screens/Screen;extractBackground(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V", + shift = Shift.AFTER + ) + ) + private void evo$unscaleContainerBackground(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + if (this instanceof aqd screen) { + screen.evo$popGuiScale(context); + } + } + + @Inject( + method = "extractRenderStateWithTooltipAndSubtitles", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V") + ) + private void evo$scaleContainerContents(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + if (this instanceof aqd screen) { + screen.evo$pushGuiScale(context); + } + } + + @Inject(method = "extractRenderStateWithTooltipAndSubtitles", at = @At("RETURN")) + private void evo$unscaleContainerContents(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + if (this instanceof aqd screen) { + screen.evo$popGuiScale(context); + screen.evo$finishClosing(); + } + } +} diff --git a/src/main/java/b/bm.java b/src/main/java/b/bm.java new file mode 100644 index 0000000..d45bf8f --- /dev/null +++ b/src/main/java/b/bm.java @@ -0,0 +1,115 @@ +package b; + +import defpackage.*; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.gui.screens.inventory.InventoryScreen; +import net.minecraft.network.chat.Component; +import org.joml.Matrix3x2fStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(AbstractContainerScreen.class) +public abstract class bm extends Screen implements aqd { + @Unique + private static final float SCALE_EPSILON = 0.001F; + @Unique + private long evo$openedAt = System.currentTimeMillis(); + @Unique + private long evo$closedAt; + @Unique + private float evo$closeStartScale = 1.0F; + @Unique + private boolean evo$closing; + @Unique + private boolean evo$forceClose; + @Unique + private boolean evo$scaled; + + protected bm(Component title) { + super(title); + } + + @Inject(method = "init", at = @At("HEAD")) + private void evo$resetAnimation(CallbackInfo ci) { + this.evo$openedAt = System.currentTimeMillis(); + this.evo$closedAt = 0L; + this.evo$closeStartScale = 1.0F; + this.evo$closing = false; + this.evo$forceClose = false; + this.evo$scaled = false; + } + + @Inject(method = "onClose", at = @At("HEAD"), cancellable = true) + private void evo$animateClose(CallbackInfo ci) { + if (!this.evo$forceClose && this.evo$shouldAnimate()) { + this.evo$startClosing(); + ci.cancel(); + } + } + + @Override + public void evo$pushGuiScale(GuiGraphicsExtractor context) { + if (!this.evo$scaled && this.evo$animating()) { + float scale = this.evo$currentScale(); + if (!(Math.abs(scale - 1.0F) < 0.001F)) { + Matrix3x2fStack pose = context.pose(); + pose.pushMatrix(); + pose.translate(this.width / 2.0F, this.height / 2.0F); + pose.scale(scale, scale); + pose.translate(-this.width / 2.0F, -this.height / 2.0F); + this.evo$scaled = true; + } + } + } + + @Override + public void evo$popGuiScale(GuiGraphicsExtractor context) { + if (this.evo$scaled) { + context.pose().popMatrix(); + this.evo$scaled = false; + } + } + + @Override + public void evo$finishClosing() { + if (this.evo$closing && tq.INSTANCE.closeFinished(this.evo$closedAt)) { + this.evo$forceClose = true; + this.onClose(); + this.evo$forceClose = false; + } + } + + @Unique + private boolean evo$isInventory() { + return this instanceof InventoryScreen; + } + + @Unique + private boolean evo$shouldAnimate() { + return this.evo$isInventory() ? tq.INSTANCE.animateInventory() : tq.INSTANCE.animateStorages(); + } + + @Unique + private boolean evo$animating() { + return this.evo$closing || this.evo$shouldAnimate(); + } + + @Unique + private float evo$currentScale() { + return this.evo$closing ? tq.INSTANCE.closeScale(this.evo$closedAt, this.evo$closeStartScale) : tq.INSTANCE.openScale(this.evo$openedAt); + } + + @Unique + private void evo$startClosing() { + if (!this.evo$closing) { + this.evo$closeStartScale = this.evo$currentScale(); + this.evo$closedAt = System.currentTimeMillis(); + this.evo$closing = true; + } + } +} diff --git a/src/main/java/b/bn.java b/src/main/java/b/bn.java new file mode 100644 index 0000000..872c075 --- /dev/null +++ b/src/main/java/b/bn.java @@ -0,0 +1,102 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.Style; +import org.joml.Matrix3x2fStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(ChatScreen.class) +public class bn extends Screen implements aqg { + @Unique + private static final float OFFSET_EPSILON = 0.01F; + @Unique + private long evo$openedAt; + @Unique + private boolean evo$opened; + @Unique + private float evo$inputOffset; + + protected bn(Component title) { + super(title); + } + + @Inject(method = "handleComponentClicked(Lnet/minecraft/network/chat/Style;Z)Z", at = @At("HEAD"), cancellable = true) + private void evo$applySharedCrosshair(Style style, boolean insert, CallbackInfoReturnable cir) { + if (style != null && wu.handle(style.getClickEvent())) { + cir.setReturnValue(true); + } + } + + @Inject(method = "handleChatInput(Ljava/lang/String;Z)V", at = @At("HEAD"), cancellable = false) + private void onSendMessage(String text, boolean addToHistory, CallbackInfo ci) { + } + + @Inject(method = "removed", at = @At("HEAD")) + private void evo$resetInputAnimation(CallbackInfo ci) { + this.evo$opened = false; + this.evo$inputOffset = 0.0F; + } + + @Inject(method = "extractRenderState", at = @At("HEAD")) + private void evo$updateInputAnimation(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + if (!tq.INSTANCE.animateChatInput()) { + this.evo$opened = false; + this.evo$inputOffset = 0.0F; + } else { + if (!this.evo$opened) { + this.evo$opened = true; + this.evo$openedAt = System.currentTimeMillis(); + } + + this.evo$inputOffset = tq.INSTANCE.chatInputOffset(this.evo$openedAt); + } + } + + @WrapOperation(method = "extractRenderState", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiGraphicsExtractor;fill(IIIII)V")) + private void evo$slideInputBackground(GuiGraphicsExtractor context, int left, int top, int right, int bottom, int color, Operation original) { + if (Math.abs(this.evo$inputOffset) < 0.01F) { + original.call(new Object[]{context, left, top, right, bottom, color}); + } else { + Matrix3x2fStack pose = context.pose(); + pose.pushMatrix(); + pose.translate(0.0F, this.evo$inputOffset); + + try { + original.call(new Object[]{context, left, top, right, bottom, color}); + } finally { + pose.popMatrix(); + } + } + } + + @WrapOperation( + method = "extractRenderState", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V") + ) + private void evo$slideInputWidgets(ChatScreen instance, GuiGraphicsExtractor context, int mouseX, int mouseY, float delta, Operation original) { + if (Math.abs(this.evo$inputOffset) < 0.01F) { + original.call(new Object[]{instance, context, mouseX, mouseY, delta}); + } else { + Matrix3x2fStack pose = context.pose(); + pose.pushMatrix(); + pose.translate(0.0F, this.evo$inputOffset); + + try { + original.call(new Object[]{instance, context, mouseX, mouseY, delta}); + } finally { + pose.popMatrix(); + } + } + } +} diff --git a/src/main/java/b/bo.java b/src/main/java/b/bo.java new file mode 100644 index 0000000..20580b1 --- /dev/null +++ b/src/main/java/b/bo.java @@ -0,0 +1,19 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(Screen.class) +public abstract class bo { + @ModifyReturnValue(method = "getTooltipFromItem(Lnet/minecraft/client/Minecraft;Lnet/minecraft/world/item/ItemStack;)Ljava/util/List;", at = @At("RETURN")) + private static List appendFoodValues(List lines, Minecraft client, ItemStack stack) { + return uy.INSTANCE.appendFoodTooltip(lines, stack); + } +} diff --git a/src/main/java/b/bp.java b/src/main/java/b/bp.java new file mode 100644 index 0000000..6ff0499 --- /dev/null +++ b/src/main/java/b/bp.java @@ -0,0 +1,83 @@ +package b; + +import defpackage.*; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.Slot; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(AbstractContainerScreen.class) +public abstract class bp { + @Unique + @Mutable + private boolean isAuc; + @Unique + @Mutable + private Slot lowSumSlotId = null; + @Unique + @Mutable + private Slot lowAllSumSlotId = null; + @Shadow + @Final + protected AbstractContainerMenu menu; + + @Shadow + public abstract AbstractContainerMenu getMenu(); + + @Inject(method = "tick()V", at = @At("HEAD")) + private void tickScreen(CallbackInfo ci) { + hm.INSTANCE.tick(); + } + + @Inject(method = "removed()V", at = @At("HEAD")) + private void onScreenRemoved(CallbackInfo ci) { + th.INSTANCE.endDrag(); + hm.INSTANCE.cancel(); + } + + @Inject(method = "extractSlot", at = @At("HEAD")) + private void onDrawSlotInject(GuiGraphicsExtractor context, Slot slot, int x, int y, CallbackInfo ci) { + tk.INSTANCE.renderSlotHighlight(context, slot, x, y); + } + + @Inject(method = "mouseClicked(Lnet/minecraft/client/input/MouseButtonEvent;Z)Z", at = @At("HEAD"), cancellable = true) + private void onSortButtonClicked(MouseButtonEvent event, boolean doubled, CallbackInfoReturnable cir) { + AbstractContainerScreen screen = (AbstractContainerScreen)this; + if (xr.click(screen, event.x(), event.y(), event.button(), event.hasShiftDown())) { + cir.setReturnValue(true); + } else { + if (th.INSTANCE.onDragStart(screen, event.x(), event.y(), event.button(), event.hasShiftDown())) { + cir.setReturnValue(true); + } + } + } + + @Inject(method = "mouseScrolled(DDDD)Z", at = @At("HEAD"), cancellable = true) + private void onItemScrollerScrolled(double mouseX, double mouseY, double horizontal, double vertical, CallbackInfoReturnable cir) { + if (th.INSTANCE.onScroll((AbstractContainerScreen)this, mouseX, mouseY, vertical)) { + cir.setReturnValue(true); + } + } + + @Inject(method = "mouseDragged(Lnet/minecraft/client/input/MouseButtonEvent;DD)Z", at = @At("HEAD"), cancellable = true) + private void onItemScrollerDragged(MouseButtonEvent event, double deltaX, double deltaY, CallbackInfoReturnable cir) { + if (th.INSTANCE.onDrag((AbstractContainerScreen)this, event.x(), event.y())) { + cir.setReturnValue(true); + } + } + + @Inject(method = "mouseReleased(Lnet/minecraft/client/input/MouseButtonEvent;)Z", at = @At("HEAD")) + private void onItemScrollerReleased(MouseButtonEvent event, CallbackInfoReturnable cir) { + th.INSTANCE.endDrag(); + } +} diff --git a/src/main/java/b/bq.java b/src/main/java/b/bq.java new file mode 100644 index 0000000..0416807 --- /dev/null +++ b/src/main/java/b/bq.java @@ -0,0 +1,47 @@ +package b; + +import defpackage.*; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import org.joml.Matrix3x2fStack; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; + +@Mixin(GuiGraphicsExtractor.class) +public abstract class bq { + @Shadow + @Final + private Matrix3x2fStack pose; + + @ModifyVariable(method = {"entity", "skin", "book"}, at = @At("HEAD"), argsOnly = true, ordinal = 0) + private float evo$scalePictureInPictureSize(float scale) { + float scaleX = this.pose.m00(); + return scaleX > 0.0F ? scale * scaleX : scale; + } + + @ModifyVariable(method = {"entity", "skin", "book", "bannerPattern"}, at = @At("HEAD"), argsOnly = true, ordinal = 0) + private int evo$scalePictureInPictureX0(int x0) { + float scaleX = this.pose.m00(); + return scaleX > 0.0F ? (int)Math.floor(scaleX * x0 + this.pose.m20()) : x0; + } + + @ModifyVariable(method = {"entity", "skin", "book", "bannerPattern"}, at = @At("HEAD"), argsOnly = true, ordinal = 1) + private int evo$scalePictureInPictureY0(int y0) { + float scaleY = this.pose.m11(); + return scaleY > 0.0F ? (int)Math.floor(scaleY * y0 + this.pose.m21()) : y0; + } + + @ModifyVariable(method = {"entity", "skin", "book", "bannerPattern"}, at = @At("HEAD"), argsOnly = true, ordinal = 2) + private int evo$scalePictureInPictureX1(int x1) { + float scaleX = this.pose.m00(); + return scaleX > 0.0F ? (int)Math.ceil(scaleX * x1 + this.pose.m20()) : x1; + } + + @ModifyVariable(method = {"entity", "skin", "book", "bannerPattern"}, at = @At("HEAD"), argsOnly = true, ordinal = 3) + private int evo$scalePictureInPictureY1(int y1) { + float scaleY = this.pose.m11(); + return scaleY > 0.0F ? (int)Math.ceil(scaleY * y1 + this.pose.m21()) : y1; + } +} diff --git a/src/main/java/b/br.java b/src/main/java/b/br.java new file mode 100644 index 0000000..a13571e --- /dev/null +++ b/src/main/java/b/br.java @@ -0,0 +1,62 @@ +package b; + +import defpackage.*; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.Slot; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(AbstractContainerScreen.class) +public abstract class br { + @Shadow + @Final + protected AbstractContainerMenu menu; + @Shadow + @Final + protected int imageWidth; + @Shadow + protected int leftPos; + @Shadow + protected int topPos; + @Shadow + protected boolean isQuickCrafting; + + @Inject(method = "extractSlots(Lnet/minecraft/client/gui/GuiGraphicsExtractor;II)V", at = @At("HEAD")) + private void evo$updateSwaps(GuiGraphicsExtractor context, int mouseX, int mouseY, CallbackInfo ci) { + xt.INSTANCE.update((AbstractContainerScreen)this, mouseX, mouseY, this.leftPos, this.topPos); + } + + @Inject(method = "extractSlots(Lnet/minecraft/client/gui/GuiGraphicsExtractor;II)V", at = @At("TAIL")) + private void evo$renderSwaps(GuiGraphicsExtractor context, int mouseX, int mouseY, CallbackInfo ci) { + xt.INSTANCE.render(context); + } + + @Inject( + method = "extractSlot(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/world/inventory/Slot;II)V", + at = @At("HEAD"), + cancellable = true + ) + private void evo$hideArrivingSlot(GuiGraphicsExtractor context, Slot slot, int mouseX, int mouseY, CallbackInfo ci) { + if (!this.isQuickCrafting && xt.INSTANCE.extractPendingSlot(context, slot, this.imageWidth)) { + ci.cancel(); + } + } + + @Inject(method = "extractCarriedItem(Lnet/minecraft/client/gui/GuiGraphicsExtractor;II)V", at = @At("HEAD"), cancellable = true) + private void evo$hideArrivingCarried(GuiGraphicsExtractor context, int mouseX, int mouseY, CallbackInfo ci) { + if (!this.isQuickCrafting && xt.INSTANCE.extractPendingCarried(context, this.menu.getCarried(), mouseX, mouseY)) { + ci.cancel(); + } + } + + @Inject(method = "removed()V", at = @At("HEAD")) + private void evo$clearSwaps(CallbackInfo ci) { + xt.INSTANCE.reset(); + } +} diff --git a/src/main/java/b/bs.java b/src/main/java/b/bs.java new file mode 100644 index 0000000..98bb175 --- /dev/null +++ b/src/main/java/b/bs.java @@ -0,0 +1,57 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.projectile.FireworkRocketEntity; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(FireworkRocketEntity.class) +public abstract class bs extends Projectile { + @Unique + private Vec3 rotation; + @Shadow + private LivingEntity attachedToEntity; + + public bs(EntityType entityType, Level world) { + super(entityType, world); + } + + @ModifyExpressionValue( + method = "tick", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;getLookAngle()Lnet/minecraft/world/phys/Vec3;") + ) + public Vec3 tick(Vec3 original) { + this.rotation = original; + return this.rotation; + } + + @Redirect(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/Vec3;add(DDD)Lnet/minecraft/world/phys/Vec3;", ordinal = 0)) + public Vec3 tick(Vec3 instance, double x, double y, double z) { + return instance.add( + this.rotation.x * 0.1 + (this.rotation.x * 1.5 - instance.x) * 0.5, + this.rotation.y * 0.1 + (this.rotation.y * 1.5 - instance.y) * 0.5, + this.rotation.z * 0.1 + (this.rotation.z * 1.5 - instance.z) * 0.5 + ); + } + + @Unique + private Vec3 calculateRotationVector(float pitch, float yaw) { + float f = pitch * (float) (Math.PI / 180.0); + float g = -yaw * (float) (Math.PI / 180.0); + float h = Mth.cos(g); + float i = Mth.sin(g); + float j = Mth.cos(f); + float k = Mth.sin(f); + return new Vec3(i * j, -k, h * j); + } +} diff --git a/src/main/java/b/bt.java b/src/main/java/b/bt.java new file mode 100644 index 0000000..4164ec1 --- /dev/null +++ b/src/main/java/b/bt.java @@ -0,0 +1,35 @@ +package b; + +import defpackage.*; +import net.minecraft.tags.DamageTypeTags; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.LivingEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LivingEntity.class) +public class bt implements aqg { + @Redirect(method = "jumpFromGround", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;getYRot()F")) + public float replaceMovePacketPitch(LivingEntity instance) { + return this != mc.player ? instance.getYRot() : defpackage.bz.getInstance().getRotationManager().getCurrentRotation().getYaw(); + } + + @Inject(method = "jumpFromGround", at = @At("HEAD")) + private void trackJumpResetJump(CallbackInfo ci) { + if (this == mc.player) { + apl.INSTANCE.onJump(mc.player.tickCount); + } + } + + @Inject(method = "handleDamageEvent(Lnet/minecraft/world/damagesource/DamageSource;)V", at = @At("HEAD")) + private void trackJumpResetDamage(DamageSource damageSource, CallbackInfo ci) { + if (this == mc.player) { + if (damageSource.getEntity() != null && !damageSource.is(DamageTypeTags.NO_KNOCKBACK)) { + apl.INSTANCE.onHurt(mc.player.tickCount, mc.player.onGround()); + } + } + } +} diff --git a/src/main/java/b/bu.java b/src/main/java/b/bu.java new file mode 100644 index 0000000..2d83722 --- /dev/null +++ b/src/main/java/b/bu.java @@ -0,0 +1,57 @@ +package b; + +import defpackage.*; +import net.minecraft.ChatFormatting; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.player.Player; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Player.class) +public class bu { + @Mutable + float savedYaw; + @Mutable + float savedPitch; + + @Inject(method = "aiStep", at = @At("HEAD")) + private void tickMovement(CallbackInfo ci) { + } + + @Inject(method = "travel", at = @At("HEAD")) + public void fixElytra(CallbackInfo ci) { + if (this instanceof LocalPlayer player) { + apz currentRotation = defpackage.bz.getInstance().getRotationManager().getCurrentRotation(); + this.savedYaw = aqg.mc.player.getYRot(); + this.savedPitch = aqg.mc.player.getXRot(); + player.setYRot(currentRotation.getYaw()); + player.setXRot(currentRotation.getPitch()); + } + } + + @Inject(method = "travel", at = @At("RETURN")) + public void fixElytraEnd(CallbackInfo ci) { + if (this instanceof LocalPlayer player) { + player.setYRot(this.savedYaw); + player.setXRot(this.savedPitch); + } + } + + @Inject(method = "getDisplayName()Lnet/minecraft/network/chat/Component;", at = @At("RETURN"), cancellable = true) + public void modifyDisplayNameForTotems(CallbackInfoReturnable cir) { + if (wh.INSTANCE.isEnabled()) { + Player player = (Player)this; + int pops = wh.INSTANCE.getPops(player.getGameProfile().name()); + if (pops > 0) { + cir.setReturnValue( + Component.empty().append((Component)cir.getReturnValue()).append(Component.literal(" -" + pops).withStyle(ChatFormatting.YELLOW)) + ); + } + } + } +} diff --git a/src/main/java/b/bv.java b/src/main/java/b/bv.java new file mode 100644 index 0000000..ac5e5df --- /dev/null +++ b/src/main/java/b/bv.java @@ -0,0 +1,32 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import net.minecraft.client.Minecraft; +import net.minecraft.client.MouseHandler; +import net.minecraft.util.Mth; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +@Mixin(MouseHandler.class) +public class bv { + @ModifyArg(method = "turnPlayer", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;turn(DD)V"), index = 0) + private double applyRelativeSensitivityYaw(double yaw) { + float tickDelta = Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick(false); + double divisor = wr.INSTANCE.getZoomDivisor(tickDelta); + return divisor <= 1.0 ? yaw : yaw / Mth.lerp(wr.INSTANCE.relativeSensitivity.getCurrent() / 100.0, 1.0, divisor); + } + + @ModifyArg(method = "turnPlayer", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;turn(DD)V"), index = 1) + private double applyRelativeSensitivityPitch(double pitch) { + float tickDelta = Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick(false); + double divisor = wr.INSTANCE.getZoomDivisor(tickDelta); + return divisor <= 1.0 ? pitch : pitch / Mth.lerp(wr.INSTANCE.relativeSensitivity.getCurrent() / 100.0, 1.0, divisor); + } + + @ModifyExpressionValue(method = "turnPlayer", at = @At(value = "FIELD", target = "Lnet/minecraft/client/Options;smoothCamera:Z")) + private boolean smoothCameraIfZoom(boolean original) { + return wr.INSTANCE.isZooming && wr.INSTANCE.cinematicCamera.isEnabled() ? true : original; + } +} diff --git a/src/main/java/b/bw.java b/src/main/java/b/bw.java new file mode 100644 index 0000000..45c8edc --- /dev/null +++ b/src/main/java/b/bw.java @@ -0,0 +1,45 @@ +package b; + +import defpackage.*; +import net.minecraft.network.Connection; +import net.minecraft.network.PacketListener; +import net.minecraft.network.protocol.Packet; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Connection.class) +public class bw implements aqg { + @Unique + private static boolean stackOverflowFix; + + @Inject(method = "genericsFtw(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;)V", at = @At("HEAD"), cancellable = true) + private static void triggerReceivePacketEvent(Packet packet, PacketListener listener, CallbackInfo ci) { + fy event = new fy(fx.RECEIVE, packet); + defpackage.j.call(event); + if (event.isCancelled()) { + ci.cancel(); + } + } + + @Inject(method = "send(Lnet/minecraft/network/protocol/Packet;)V", at = @At("HEAD"), cancellable = true) + public void triggerSendPacketEvent(Packet packet, CallbackInfo ci) { + if (!stackOverflowFix) { + fy event = new fy(fx.SENT, packet); + defpackage.j.call(event); + if (event.isCancelled()) { + ci.cancel(); + } + + Packet newPacket = event.getPacket(); + if (newPacket != packet) { + ci.cancel(); + stackOverflowFix = true; + mc.getConnection().send(newPacket); + stackOverflowFix = false; + } + } + } +} diff --git a/src/main/java/b/bx.java b/src/main/java/b/bx.java new file mode 100644 index 0000000..aba6dbf --- /dev/null +++ b/src/main/java/b/bx.java @@ -0,0 +1,59 @@ +package b; + +import defpackage.*; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.network.protocol.game.ClientboundEntityEventPacket; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import org.jetbrains.annotations.NotNull; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ClientPacketListener.class) +public class bx { + @Inject(method = "sendChat(Ljava/lang/String;)V", at = @At("HEAD"), cancellable = true) + private void sendChatMessageHook(@NotNull String message, CallbackInfo ci) { + if (message.startsWith(defpackage.bz.getInstance().getCommandManager().getPrefix())) { + try { + defpackage.bz.getInstance() + .getCommandManager() + .getDispatcher() + .execute(message.substring(defpackage.defpackage.bz.getInstance().getCommandManager().getPrefix().length()), bz.getInstance().getCommandManager().getSource()); + } catch (CommandSyntaxException var4) { + } + + ci.cancel(); + } + } + + @Redirect( + method = "handleEntityEvent(Lnet/minecraft/network/protocol/game/ClientboundEntityEventPacket;)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/multiplayer/ClientLevel;playLocalSound(DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FFZ)V" + ), + require = 1 + ) + private void totemPopSoundHook( + ClientLevel level, + double x, + double y, + double z, + SoundEvent soundEvent, + SoundSource soundSource, + float volume, + float pitch, + boolean useDistanceDelay, + ClientboundEntityEventPacket packet + ) { + if (soundEvent != SoundEvents.TOTEM_USE || !tl.INSTANCE.handleTotemPop(packet.getEntity(level))) { + level.playLocalSound(x, y, z, soundEvent, soundSource, volume, pitch, useDistanceDelay); + } + } +} diff --git a/src/main/java/b/by.java b/src/main/java/b/by.java new file mode 100644 index 0000000..d7ea08a --- /dev/null +++ b/src/main/java/b/by.java @@ -0,0 +1,33 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import com.llamalad7.mixinextras.sugar.Local; +import net.minecraft.client.Camera; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArgs; +import org.spongepowered.asm.mixin.injection.invoke.arg.Args; + +@Mixin(Camera.class) +public abstract class by { + @ModifyReturnValue(method = "calculateFov", at = @At("RETURN")) + private float evo$modifyWorldFov(float fov, @Local(argsOnly = true) float tickDelta) { + fp event = new fp(); + defpackage.j.call(event); + float base = event.isCancelled() ? event.getFov() : fov; + return (float)(base / wr.INSTANCE.getZoomDivisor(tickDelta)); + } + + @ModifyReturnValue(method = "calculateHudFov", at = @At("RETURN")) + private float evo$keepHandFov(float fov, @Local(argsOnly = true) float tickDelta) { + return !wr.INSTANCE.affectHandFov.isEnabled() ? fov : (float)(fov / wr.INSTANCE.getZoomDivisor(tickDelta)); + } + + @ModifyArgs(method = "setupPerspective", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Projection;setupPerspective(FFFFF)V")) + private void evo$applyAspectRatio(Args args) { + float width = (Float)args.get(3); + float height = (Float)args.get(4); + args.set(3, tp.INSTANCE.stretchWidth(width, height)); + } +} diff --git a/src/main/java/b/bz.java b/src/main/java/b/bz.java new file mode 100644 index 0000000..7242668 --- /dev/null +++ b/src/main/java/b/bz.java @@ -0,0 +1,71 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.player.PlayerModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.layers.PlayerItemInHandLayer; +import net.minecraft.client.renderer.entity.player.AvatarRenderer; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.client.renderer.item.ItemStackRenderState; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(PlayerItemInHandLayer.class) +public abstract class bz { + @Unique + private static final float HAND_PITCH_DEGREES = -90.0F; + @Unique + private static final float HAND_YAW_DEGREES = 180.0F; + + @Inject( + method = "submitArmWithItem(Lnet/minecraft/client/renderer/entity/state/AvatarRenderState;Lnet/minecraft/client/renderer/item/ItemStackRenderState;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/HumanoidArm;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;I)V", + at = @At("HEAD") + ) + private void evo$renderCameraGear( + AvatarRenderState state, + ItemStackRenderState itemState, + ItemStack item, + HumanoidArm arm, + PoseStack matrices, + SubmitNodeCollector queue, + int light, + CallbackInfo callback + ) { + if (tb.INSTANCE.isEnabled() && item.isEmpty()) { + Minecraft client = Minecraft.getInstance(); + AbstractClientPlayer holder = resolve(client, state); + if (holder != null && arm == holder.getMainArm()) { + afn held = afo.heldBy(holder.getScoreboardName()); + if (held != null && held.gear() != aff.NONE) { + AvatarRenderer renderer = client.getEntityRenderDispatcher().getPlayerRenderer(holder); + if (renderer != null) { + matrices.pushPose(); + ((PlayerModel)renderer.getModel()).translateToHand(state, arm, matrices); + matrices.mulPose(Axis.XP.rotationDegrees(-90.0F)); + matrices.mulPose(Axis.YP.rotationDegrees(180.0F)); + afm.getInstance().submitThirdPerson(held.gear(), held.photoId(), tb.INSTANCE.aspect(), matrices, queue, light); + matrices.popPose(); + } + } + } + } + } + + @Unique + private static AbstractClientPlayer resolve(Minecraft client, AvatarRenderState state) { + if (client.level == null) { + return null; + } else { + return client.level.getEntity(state.id) instanceof AbstractClientPlayer player ? player : null; + } + } +} diff --git a/src/main/java/b/c.java b/src/main/java/b/c.java new file mode 100644 index 0000000..8f7b492 --- /dev/null +++ b/src/main/java/b/c.java @@ -0,0 +1,21 @@ +package b; + +import defpackage.*; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.state.gui.GuiRenderState; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(GuiGraphicsExtractor.class) +public interface c { + @Accessor("guiRenderState") + GuiRenderState getState(); + + @Invoker("itemBar") + void callDrawItemBar(ItemStack var1, int var2, int var3); + + @Invoker("itemCooldown") + void callDrawCooldownProgress(ItemStack var1, int var2, int var3); +} diff --git a/src/main/java/b/ca.java b/src/main/java/b/ca.java new file mode 100644 index 0000000..e659c9d --- /dev/null +++ b/src/main/java/b/ca.java @@ -0,0 +1,126 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.renderer.ItemInHandRenderer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.gen.Invoker; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(value = ItemInHandRenderer.class, priority = 900) +public abstract class ca { + @Unique + private static final float MAP_BOB_VERTICAL = -0.2F; + @Unique + private static final float MAP_BOB_DEPTH = -0.4F; + @Unique + private static final float MAP_LIFT = 0.04F; + @Unique + private static final float MAP_TILT_DROP = -0.6F; + @Unique + private static final float MAP_DEPTH = -0.72F; + @Unique + private static final float MAP_TILT_DEGREES = -85.0F; + @Unique + private static final float MAP_SWING_DEGREES = 20.0F; + @Unique + private static final float MAP_HAND_YAW = 90.0F; + @Unique + private static final float HALF = 0.5F; + + @Invoker("applyItemArmTransform") + abstract void evo$applyItemArmTransform(PoseStack var1, HumanoidArm var2, float var3); + + @Invoker("applyItemArmAttackTransform") + abstract void evo$applyItemArmAttackTransform(PoseStack var1, HumanoidArm var2, float var3); + + @Invoker("calculateMapTilt") + abstract float evo$calculateMapTilt(float var1); + + @Invoker("renderMapHand") + abstract void evo$renderMapHand(PoseStack var1, SubmitNodeCollector var2, int var3, HumanoidArm var4); + + @Inject( + method = "submitHandsWithItems(FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/player/LocalPlayer;I)V", + at = @At("HEAD"), + cancellable = true + ) + private void evo$handleCameraGear(float tickProgress, PoseStack matrices, SubmitNodeCollector queue, LocalPlayer player, int light, CallbackInfo callback) { + if (afy.getInstance().isArmed()) { + callback.cancel(); + } else if (tb.INSTANCE.isEnabled() && player.getMainHandItem().isEmpty()) { + afi slots = afi.getInstance(); + if (slots.heldGear() == aff.PHOTO) { + this.submitHeldPhoto(matrices, queue, player, light, tickProgress, slots.photoId()); + callback.cancel(); + } + } + } + + @Unique + private void submitHeldPhoto(PoseStack matrices, SubmitNodeCollector queue, LocalPlayer player, int light, float tickProgress, String photoId) { + float swingProgress = player.getAttackAnim(tickProgress); + float pitch = player.getViewXRot(tickProgress); + float sweep = Mth.sqrt(swingProgress); + float bobVertical = -0.2F * Mth.sin(swingProgress * (float) Math.PI); + float bobDepth = -0.4F * Mth.sin(sweep * (float) Math.PI); + matrices.pushPose(); + matrices.translate(0.0F, -bobVertical * 0.5F, bobDepth); + float tilt = this.evo$calculateMapTilt(pitch); + matrices.translate(0.0F, 0.04F + tilt * -0.6F, -0.72F); + matrices.mulPose(Axis.XP.rotationDegrees(tilt * -85.0F)); + if (!player.isInvisible()) { + matrices.pushPose(); + matrices.mulPose(Axis.YP.rotationDegrees(90.0F)); + this.evo$renderMapHand(matrices, queue, light, HumanoidArm.RIGHT); + this.evo$renderMapHand(matrices, queue, light, HumanoidArm.LEFT); + matrices.popPose(); + } + + matrices.mulPose(Axis.XP.rotationDegrees(Mth.sin(sweep * (float) Math.PI) * 20.0F)); + afm.getInstance().submitHeldCard(matrices, queue, light, photoId, tb.INSTANCE.aspect()); + matrices.popPose(); + } + + @Inject( + method = "submitArmWithItem(Lnet/minecraft/client/player/AbstractClientPlayer;FFLnet/minecraft/world/InteractionHand;FLnet/minecraft/world/item/ItemStack;FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;I)V", + at = @At("HEAD") + ) + private void evo$renderCameraGear( + AbstractClientPlayer player, + float tickProgress, + float pitch, + InteractionHand hand, + float swingProgress, + ItemStack item, + float equipProgress, + PoseStack matrices, + SubmitNodeCollector queue, + int light, + CallbackInfo callback + ) { + if (tb.INSTANCE.isEnabled() && hand == InteractionHand.MAIN_HAND && item.isEmpty()) { + afi slots = afi.getInstance(); + aff gear = slots.heldGear(); + if (gear == aff.CAMERA || gear == aff.TRIPOD) { + HumanoidArm arm = player.getMainArm(); + matrices.pushPose(); + this.evo$applyItemArmTransform(matrices, arm, equipProgress); + this.evo$applyItemArmAttackTransform(matrices, arm, swingProgress); + afm.getInstance().submit(gear, slots.photoId(), tb.INSTANCE.aspect(), matrices, queue, light); + matrices.popPose(); + } + } + } +} diff --git a/src/main/java/b/cb.java b/src/main/java/b/cb.java new file mode 100644 index 0000000..2278220 --- /dev/null +++ b/src/main/java/b/cb.java @@ -0,0 +1,43 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.player.PlayerModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.layers.CapeLayer; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.core.component.DataComponents; +import net.minecraft.resources.Identifier; +import net.minecraft.world.entity.EquipmentSlot; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(CapeLayer.class) +public abstract class cb { + @Inject(method = "submit", at = @At("HEAD"), cancellable = true) + private void evo$waveyCape( + PoseStack matrices, SubmitNodeCollector queue, int light, AvatarRenderState state, float limbAngle, float limbDistance, CallbackInfo ci + ) { + Minecraft client = Minecraft.getInstance(); + if (client.level != null) { + if (client.level.getEntity(state.id) instanceof AbstractClientPlayer player) { + if (adm.shouldRender(player) && !player.getItemBySlot(EquipmentSlot.CHEST).has(DataComponents.GLIDER)) { + RenderLayer self = (RenderLayer)this; + Identifier capeTexture = adm.resolve(player); + if (adm.isShaderCape(capeTexture)) { + ags.getInstance().enqueue(matrices, player, (PlayerModel)self.getParentModel()); + } else { + agt.getInstance().render(matrices, queue, light, state, player, (PlayerModel)self.getParentModel()); + } + + ci.cancel(); + } + } + } + } +} diff --git a/src/main/java/b/cc.java b/src/main/java/b/cc.java new file mode 100644 index 0000000..9f81dc8 --- /dev/null +++ b/src/main/java/b/cc.java @@ -0,0 +1,9 @@ +package b; + +import defpackage.*; +import net.minecraft.client.multiplayer.ClientLevel.ClientLevelData; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(ClientLevelData.class) +public class cc { +} diff --git a/src/main/java/b/cd.java b/src/main/java/b/cd.java new file mode 100644 index 0000000..f215b7a --- /dev/null +++ b/src/main/java/b/cd.java @@ -0,0 +1,32 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.state.EntityRenderState; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(EntityRenderer.class) +public class cd { + @Inject( + method = "submitNameDisplay(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/level/CameraRenderState;I)V", + at = @At("HEAD"), + cancellable = true + ) + private void evo$hidePattedNameTag( + EntityRenderState state, PoseStack matrices, SubmitNodeCollector queue, CameraRenderState cameraState, int verticalOffset, CallbackInfo ci + ) { + if (ta.INSTANCE.isEnabled() && ta.INSTANCE.hidesNameTag()) { + if (state instanceof aud access) { + if (aim.getInstance().isPatted(access.evo$getEntityId())) { + ci.cancel(); + } + } + } + } +} diff --git a/src/main/java/b/ce.java b/src/main/java/b/ce.java new file mode 100644 index 0000000..0afcb88 --- /dev/null +++ b/src/main/java/b/ce.java @@ -0,0 +1,57 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.model.Model; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.layers.EquipmentLayerRenderer; +import net.minecraft.client.resources.model.EquipmentClientInfo.LayerType; +import net.minecraft.resources.Identifier; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.equipment.EquipmentAsset; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(EquipmentLayerRenderer.class) +public abstract class ce { + @Unique + private int evo$durabilityTint = 0; + + @Inject( + method = "renderLayers(Lnet/minecraft/client/resources/model/EquipmentClientInfo$LayerType;Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lnet/minecraft/world/item/ItemStack;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/resources/Identifier;II)V", + at = @At("HEAD") + ) + private void evo$captureDurabilityTint( + LayerType layerType, + ResourceKey asset, + Model model, + Object renderState, + ItemStack stack, + PoseStack matrices, + SubmitNodeCollector queue, + int light, + Identifier texture, + int outlineColor, + int order, + CallbackInfo ci + ) { + this.evo$durabilityTint = to.INSTANCE.tintFor(stack, renderState); + } + + @ModifyArg( + method = "renderLayers(Lnet/minecraft/client/resources/model/EquipmentClientInfo$LayerType;Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lnet/minecraft/world/item/ItemStack;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/resources/Identifier;II)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/OrderedSubmitNodeCollector;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;IIILnet/minecraft/client/renderer/texture/TextureAtlasSprite;ILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V" + ), + index = 6 + ) + private int evo$tintArmorLayer(int color) { + return to.applyTint(color, this.evo$durabilityTint); + } +} diff --git a/src/main/java/b/cf.java b/src/main/java/b/cf.java new file mode 100644 index 0000000..0cf7a5e --- /dev/null +++ b/src/main/java/b/cf.java @@ -0,0 +1,9 @@ +package b; + +import defpackage.*; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(RenderLayer.class) +public abstract class cf { +} diff --git a/src/main/java/b/cg.java b/src/main/java/b/cg.java new file mode 100644 index 0000000..50d3d51 --- /dev/null +++ b/src/main/java/b/cg.java @@ -0,0 +1,44 @@ +package b; + +import defpackage.*; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(RenderTypes.class) +public abstract class cg { + @Inject(method = "glint()Lnet/minecraft/client/renderer/rendertype/RenderType;", at = @At("HEAD"), cancellable = true) + private static void evo$glint(CallbackInfoReturnable callback) { + RenderType custom = uz.item(); + if (custom != null) { + callback.setReturnValue(custom); + } + } + + @Inject(method = "glintTranslucent()Lnet/minecraft/client/renderer/rendertype/RenderType;", at = @At("HEAD"), cancellable = true) + private static void evo$glintTranslucent(CallbackInfoReturnable callback) { + RenderType custom = uz.itemTranslucent(); + if (custom != null) { + callback.setReturnValue(custom); + } + } + + @Inject(method = "entityGlint()Lnet/minecraft/client/renderer/rendertype/RenderType;", at = @At("HEAD"), cancellable = true) + private static void evo$entityGlint(CallbackInfoReturnable callback) { + RenderType custom = uz.entity(); + if (custom != null) { + callback.setReturnValue(custom); + } + } + + @Inject(method = "armorEntityGlint()Lnet/minecraft/client/renderer/rendertype/RenderType;", at = @At("HEAD"), cancellable = true) + private static void evo$armorEntityGlint(CallbackInfoReturnable callback) { + RenderType custom = uz.armor(); + if (custom != null) { + callback.setReturnValue(custom); + } + } +} diff --git a/src/main/java/b/ch.java b/src/main/java/b/ch.java new file mode 100644 index 0000000..ecf41b0 --- /dev/null +++ b/src/main/java/b/ch.java @@ -0,0 +1,41 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.sugar.Local; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Gui.class) +public abstract class ch { + @Inject( + method = "extractRenderState", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/gui/Hud;extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/DeltaTracker;)V", + shift = Shift.AFTER + ) + ) + private void evo$renderScreenHook( + DeltaTracker tickCounter, + boolean shouldRenderLevel, + boolean resourcesLoaded, + CallbackInfo ci, + @Local(ordinal = 0) int mouseX, + @Local(ordinal = 1) int mouseY, + @Local GuiGraphicsExtractor graphics + ) { + atb.beginGui(); + + try { + defpackage.j.call(new fv(asq.of(graphics, mouseX, mouseY, tickCounter.getGameTimeDeltaPartialTick(false)))); + } finally { + atb.endGui(); + } + } +} diff --git a/src/main/java/b/ci.java b/src/main/java/b/ci.java new file mode 100644 index 0000000..6bce80e --- /dev/null +++ b/src/main/java/b/ci.java @@ -0,0 +1,37 @@ +package b; + +import defpackage.*; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import org.joml.Matrix4fc; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(GameRenderer.class) +public abstract class ci { + @Inject( + method = "renderItemInHand", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/ItemInHandRenderer;submitHandsWithItems(FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/player/LocalPlayer;I)V" + ) + ) + private void evo$beginHandShader(CameraRenderState cameraRenderState, float tickDelta, Matrix4fc matrix4f, CallbackInfo ci) { + asy.beginRedirect(); + } + + @Inject( + method = "renderItemInHand", + at = @At( + value = "INVOKE", + shift = Shift.AFTER, + target = "Lnet/minecraft/client/renderer/feature/FeatureRenderDispatcher;renderAllFeatures(Lnet/minecraft/client/renderer/SubmitNodeStorage;)V" + ) + ) + private void evo$endHandShader(CameraRenderState cameraRenderState, float tickDelta, Matrix4fc matrix4f, CallbackInfo ci) { + asy.endRedirect(); + } +} diff --git a/src/main/java/b/cj.java b/src/main/java/b/cj.java new file mode 100644 index 0000000..095cd11 --- /dev/null +++ b/src/main/java/b/cj.java @@ -0,0 +1,31 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.Hud; +import net.minecraft.client.renderer.state.gui.GuiRenderState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(Hud.class) +public abstract class cj { + @WrapOperation( + method = "extractRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/DeltaTracker;)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/gui/Hud;extractChat(Lnet/minecraft/client/gui/GuiGraphicsExtractor;Lnet/minecraft/client/DeltaTracker;)V" + ) + ) + private void captureChatBelowEvolutionHud(Hud instance, GuiGraphicsExtractor extractor, DeltaTracker tickCounter, Operation original) { + GuiRenderState previous = aqw.beginCapture(extractor); + + try { + original.call(new Object[]{instance, extractor, tickCounter}); + } finally { + aqw.endCapture(extractor, previous); + } + } +} diff --git a/src/main/java/b/ck.java b/src/main/java/b/ck.java new file mode 100644 index 0000000..416f4b2 --- /dev/null +++ b/src/main/java/b/ck.java @@ -0,0 +1,13 @@ +package b; + +import defpackage.*; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(LivingEntityRenderer.class) +public interface ck { + @Invoker("addLayer") + boolean evo$addFeature(RenderLayer var1); +} diff --git a/src/main/java/b/cl.java b/src/main/java/b/cl.java new file mode 100644 index 0000000..853a6c0 --- /dev/null +++ b/src/main/java/b/cl.java @@ -0,0 +1,67 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.renderer.ItemInHandRenderer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ItemInHandRenderer.class) +public abstract class cl { + @Inject( + method = "submitHandsWithItems(FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/player/LocalPlayer;I)V", + at = @At("HEAD") + ) + private void evo$beginMeleeHands(float tickProgress, PoseStack matrices, SubmitNodeCollector queue, LocalPlayer player, int light, CallbackInfo callback) { + ahz.getInstance().beginHands(); + } + + @Inject( + method = "submitHandsWithItems(FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/player/LocalPlayer;I)V", + at = @At("RETURN") + ) + private void evo$endMeleeHands(float tickProgress, PoseStack matrices, SubmitNodeCollector queue, LocalPlayer player, int light, CallbackInfo callback) { + ahz.getInstance().flushHandItem(player, matrices, queue, light); + } + + @Inject( + method = "submitArmWithItem(Lnet/minecraft/client/player/AbstractClientPlayer;FFLnet/minecraft/world/InteractionHand;FLnet/minecraft/world/item/ItemStack;FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;I)V", + at = @At("HEAD"), + cancellable = true + ) + private void evo$renderMeleeSkin( + AbstractClientPlayer player, + float tickProgress, + float pitch, + InteractionHand hand, + float swingProgress, + ItemStack item, + float equipProgress, + PoseStack matrices, + SubmitNodeCollector queue, + int light, + CallbackInfo callback + ) { + if (!player.isScoping()) { + if (sz.hidesEmptyMainHand(player, hand, item)) { + callback.cancel(); + } else if (sz.rendersFirstPerson(item)) { + float retireProgress = sz.holdsSkinnedItem(hand) ? 0.0F : equipProgress; + if (ahz.getInstance().renderFirstPerson(player, hand, matrices, queue, light, retireProgress)) { + callback.cancel(); + } + } else if (sz.attachesHandItem(player, hand, item)) { + if (ahz.getInstance().deferHandItem(item, equipProgress)) { + callback.cancel(); + } + } + } + } +} diff --git a/src/main/java/b/cm.java b/src/main/java/b/cm.java new file mode 100644 index 0000000..c9333af --- /dev/null +++ b/src/main/java/b/cm.java @@ -0,0 +1,63 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.player.PlayerModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.layers.PlayerItemInHandLayer; +import net.minecraft.client.renderer.entity.player.AvatarRenderer; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.client.renderer.item.ItemStackRenderState; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(PlayerItemInHandLayer.class) +public abstract class cm { + @Unique + private static final float HAND_PITCH_DEGREES = -90.0F; + @Unique + private static final float HAND_YAW_DEGREES = 180.0F; + + @Inject( + method = "submitArmWithItem(Lnet/minecraft/client/renderer/entity/state/AvatarRenderState;Lnet/minecraft/client/renderer/item/ItemStackRenderState;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/HumanoidArm;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;I)V", + at = @At("HEAD"), + cancellable = true + ) + private void evo$renderMeleeSkin( + AvatarRenderState state, + ItemStackRenderState itemState, + ItemStack item, + HumanoidArm arm, + PoseStack matrices, + SubmitNodeCollector queue, + int light, + CallbackInfo callback + ) { + if (sz.rendersThirdPerson(item)) { + Minecraft client = Minecraft.getInstance(); + AbstractClientPlayer player = client.player; + if (player != null && player.getId() == state.id) { + AvatarRenderer renderer = client.getEntityRenderDispatcher().getPlayerRenderer(player); + if (renderer != null) { + matrices.pushPose(); + ((PlayerModel)renderer.getModel()).translateToHand(state, arm, matrices); + matrices.mulPose(Axis.XP.rotationDegrees(-90.0F)); + matrices.mulPose(Axis.YP.rotationDegrees(180.0F)); + boolean rendered = ahz.getInstance().renderThirdPerson(player, arm, matrices, queue, light); + matrices.popPose(); + if (rendered) { + callback.cancel(); + } + } + } + } + } +} diff --git a/src/main/java/b/cn.java b/src/main/java/b/cn.java new file mode 100644 index 0000000..ef8af70 --- /dev/null +++ b/src/main/java/b/cn.java @@ -0,0 +1,20 @@ +package b; + +import defpackage.*; +import net.minecraft.client.CloudStatus; +import net.minecraft.client.renderer.CloudRenderer; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(CloudRenderer.class) +public class cn { + @Inject(method = "render(ILnet/minecraft/client/CloudStatus;FILnet/minecraft/world/phys/Vec3;JF)V", at = @At("HEAD"), cancellable = true) + private void onRenderClouds(int i, CloudStatus cloudStatus, float f, int j, Vec3 vec3, long l, float g, CallbackInfo ci) { + if (sv.INSTANCE.hidesClouds() || aul.isCustomSkyActive() && !wq.INSTANCE.showClouds.isEnabled()) { + ci.cancel(); + } + } +} diff --git a/src/main/java/b/co.java b/src/main/java/b/co.java new file mode 100644 index 0000000..4da0a83 --- /dev/null +++ b/src/main/java/b/co.java @@ -0,0 +1,99 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.sugar.Local; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.gui.render.GuiRenderer; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import org.joml.Matrix4f; +import org.joml.Matrix4fc; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(GameRenderer.class) +public abstract class co { + @Shadow + @Final + private GuiRenderer guiRenderer; + + @Inject( + method = "renderLevel", + at = @At( + value = "INVOKE", + target = "Lcom/mojang/blaze3d/systems/RenderSystem;setProjectionMatrix(Lcom/mojang/blaze3d/buffers/GpuBufferSlice;Lcom/mojang/blaze3d/ProjectionType;)V", + ordinal = 1, + shift = Shift.BEFORE + ) + ) + public void hookWorldRender( + DeltaTracker tickCounter, CallbackInfo ci, @Local(ordinal = 0) Matrix4f projectionMatrix, @Local(ordinal = 0) Matrix4fc modelViewMatrix + ) { + Matrix4f viewRotationMatrix = new Matrix4f(modelViewMatrix); + PoseStack matrixStack = new PoseStack(); + matrixStack.mulPose(viewRotationMatrix); + auk.setLastProjMat(new Matrix4f(projectionMatrix)); + auk.setLastModMat(RenderSystem.getModelViewMatrixCopy()); + auk.setLastWorldSpaceMatrix(new Matrix4f(viewRotationMatrix)); + ft event = new ft(matrixStack, tickCounter.getGameTimeDeltaPartialTick(false)); + defpackage.j.call(event); + auk.onEventRender3D(event.getMatrix()); + } + + @Inject( + method = "renderLevel(Lnet/minecraft/client/DeltaTracker;)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/LevelRenderer;render(Lcom/mojang/blaze3d/resource/GraphicsResourceAllocator;Lnet/minecraft/client/DeltaTracker;ZLnet/minecraft/client/renderer/state/level/CameraRenderState;Lorg/joml/Matrix4fc;Lcom/mojang/blaze3d/buffers/GpuBufferSlice;Lorg/joml/Vector4f;Z)V", + shift = Shift.AFTER + ) + ) + private void applyPostWorldEffects( + DeltaTracker tickCounter, CallbackInfo ci, @Local(ordinal = 0) CameraRenderState cameraRenderState, @Local(ordinal = 0) Matrix4f clipProjection + ) { + Matrix4fc clipMatrix = perspectiveOrCamera(cameraRenderState, clipProjection); + aus.render(cameraRenderState, clipMatrix); + aup.render(cameraRenderState, clipMatrix); + } + + @Inject(method = "renderLevel(Lnet/minecraft/client/DeltaTracker;)V", at = @At("TAIL")) + private void capturePhotoFrame(DeltaTracker tickCounter, CallbackInfo ci) { + afy.getInstance().onLevelRendered(); + } + + @Unique + private static Matrix4fc perspectiveOrCamera(CameraRenderState cameraRenderState, Matrix4f candidate) { + return candidate != null && candidate.m33() == 0.0F ? candidate : cameraRenderState.projectionMatrix; + } + + @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/render/GuiRenderer;render()V", shift = Shift.BEFORE)) + private void renderEvolutionHud(DeltaTracker tickCounter, boolean tick, CallbackInfo ci) { + if (aqx.resourcesReady()) { + aqw.render(this.guiRenderer); + aqx.render(tickCounter); + } + } + + @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/render/GuiRenderer;render()V", shift = Shift.AFTER)) + private void drawHotbarCountsOnTop(DeltaTracker tickCounter, boolean tick, CallbackInfo ci) { + if (aqx.resourcesReady()) { + pu.drain(); + afh.render(); + xr.render(); + xq.render(); + } + } + + @Inject(method = "render", at = @At("TAIL")) + private void captureReplayFrame(DeltaTracker tickCounter, boolean tick, CallbackInfo ci) { + ajn.getInstance().captureFrame(); + } +} diff --git a/src/main/java/b/cp.java b/src/main/java/b/cp.java new file mode 100644 index 0000000..873338a --- /dev/null +++ b/src/main/java/b/cp.java @@ -0,0 +1,52 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.renderer.SkyRenderer; +import net.minecraft.world.level.MoonPhase; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(SkyRenderer.class) +public class cp { + @Inject( + method = "renderSunMoonAndStars(Lcom/mojang/blaze3d/vertex/PoseStack;FFFLnet/minecraft/world/level/MoonPhase;FF)V", + at = @At("HEAD"), + cancellable = true + ) + private void onRenderCelestialBodies(PoseStack matrices, float f, float g, float h, MoonPhase moonPhase, float i, float j, CallbackInfo ci) { + if (sv.INSTANCE.hidesSky() || aul.isCustomSkyActive() && !wq.INSTANCE.showSunMoon.isEnabled()) { + ci.cancel(); + } + } + + @Inject(method = "renderSunriseAndSunset(Lcom/mojang/blaze3d/vertex/PoseStack;FI)V", at = @At("HEAD"), cancellable = true) + private void onRenderGlowingSky(PoseStack matrices, float f, int i, CallbackInfo ci) { + if (aul.isCustomSkyActive() || sv.INSTANCE.hidesSky()) { + ci.cancel(); + } + } + + @Inject(method = "renderSkyDisc(I)V", at = @At("HEAD"), cancellable = true) + private void onRenderTopSky(int i, CallbackInfo ci) { + if (aul.isCustomSkyActive() || sv.INSTANCE.hidesSky()) { + ci.cancel(); + } + } + + @Inject(method = "renderDarkDisc()V", at = @At("HEAD"), cancellable = true) + private void onRenderSkyDark(CallbackInfo ci) { + if (aul.isCustomSkyActive() || sv.INSTANCE.hidesSky()) { + ci.cancel(); + } + } + + @Inject(method = "renderStars(FLcom/mojang/blaze3d/vertex/PoseStack;)V", at = @At("HEAD"), cancellable = true) + private void onRenderStars(float f, PoseStack matrices, CallbackInfo ci) { + if (aul.isCustomSkyActive() || sv.INSTANCE.hidesSky()) { + ci.cancel(); + } + } +} diff --git a/src/main/java/b/cq.java b/src/main/java/b/cq.java new file mode 100644 index 0000000..9d49512 --- /dev/null +++ b/src/main/java/b/cq.java @@ -0,0 +1,33 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.buffers.GpuBufferSlice; +import com.mojang.blaze3d.resource.GraphicsResourceAllocator; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import org.joml.Matrix4f; +import org.joml.Matrix4fc; +import org.joml.Vector4f; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LevelRenderer.class) +public class cq { + @Inject(method = "render", at = @At("HEAD")) + private void captureMatrices( + GraphicsResourceAllocator allocator, + DeltaTracker tickCounter, + boolean renderBlockOutline, + CameraRenderState cameraRenderState, + Matrix4fc projectionMatrix, + GpuBufferSlice fogBuffer, + Vector4f fogColor, + boolean renderSky, + CallbackInfo ci + ) { + auk.setLastProjMat(new Matrix4f(projectionMatrix)); + } +} diff --git a/src/main/java/b/cr.java b/src/main/java/b/cr.java new file mode 100644 index 0000000..f06395b --- /dev/null +++ b/src/main/java/b/cr.java @@ -0,0 +1,20 @@ +package b; + +import defpackage.*; +import net.minecraft.client.model.player.PlayerModel; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.EntityRendererProvider.Context; +import net.minecraft.client.renderer.entity.player.AvatarRenderer; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(AvatarRenderer.class) +public abstract class cr { + @Inject(method = "", at = @At("TAIL")) + private void evo$addCosmeticFeature(Context context, boolean slim, CallbackInfo ci) { + ((defpackage.b.ck)this).evo$addFeature(new adp((RenderLayerParent)this)); + } +} diff --git a/src/main/java/b/cs.java b/src/main/java/b/cs.java new file mode 100644 index 0000000..cb58214 --- /dev/null +++ b/src/main/java/b/cs.java @@ -0,0 +1,41 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.player.AvatarRenderer; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import net.minecraft.world.entity.Avatar; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(AvatarRenderer.class) +public class cs { + @Inject(method = "submitNameDisplay", at = @At("HEAD"), cancellable = true) + public void render( + AvatarRenderState playerEntityRenderState, PoseStack matrixStack, SubmitNodeCollector commandQueue, CameraRenderState cameraRenderState, CallbackInfo ci + ) { + if (vu.INSTANCE.isEnabled() && vu.INSTANCE.isCustomStyle()) { + ci.cancel(); + } + } + + @Inject( + method = "extractRenderState(Lnet/minecraft/world/entity/Avatar;Lnet/minecraft/client/renderer/entity/state/AvatarRenderState;F)V", + at = @At("TAIL") + ) + private void evo_decorateNameTag(Avatar entity, AvatarRenderState state, float tickProgress, CallbackInfo ci) { + if (state.nameTag != null) { + state.nameTag = aeo.stylize(entity.getScoreboardName(), state.nameTag); + if (aiq.isEvoUser(entity.getUUID())) { + state.nameTag = aiq.withEvoIcon(state.nameTag); + } + + state.nameTag = vu.withTier(entity, state.nameTag); + state.scoreText = vu.belowNameLine(entity, state.scoreText); + } + } +} diff --git a/src/main/java/b/ct.java b/src/main/java/b/ct.java new file mode 100644 index 0000000..775f065 --- /dev/null +++ b/src/main/java/b/ct.java @@ -0,0 +1,37 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.layers.PlayerItemInHandLayer; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.client.renderer.item.ItemStackRenderState; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(value = PlayerItemInHandLayer.class, priority = 900) +public abstract class ct { + @Inject( + method = "submitArmWithItem(Lnet/minecraft/client/renderer/entity/state/AvatarRenderState;Lnet/minecraft/client/renderer/item/ItemStackRenderState;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/HumanoidArm;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;I)V", + at = @At("HEAD"), + cancellable = true + ) + private void evo$hideItemsWhileHoldingGui( + AvatarRenderState state, + ItemStackRenderState itemState, + ItemStack item, + HumanoidArm arm, + PoseStack matrices, + SubmitNodeCollector queue, + int light, + CallbackInfo callback + ) { + if (vd.hidesHeldItems(state.id)) { + callback.cancel(); + } + } +} diff --git a/src/main/java/b/cu.java b/src/main/java/b/cu.java new file mode 100644 index 0000000..50dd27d --- /dev/null +++ b/src/main/java/b/cu.java @@ -0,0 +1,37 @@ +package b; + +import defpackage.*; +import net.minecraft.ChatFormatting; +import net.minecraft.client.gui.components.PlayerTabOverlay; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.network.chat.Component; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(PlayerTabOverlay.class) +public class cu { + @Inject(method = "getNameForDisplay", at = @At("RETURN"), cancellable = true) + private void evo_modifyPlayerName(PlayerInfo entry, CallbackInfoReturnable cir) { + if (entry.getProfile() != null) { + Component currentName = (Component)cir.getReturnValue(); + if (currentName == null) { + currentName = Component.literal(entry.getProfile().name()); + } + + if (aiq.isEvoUser(entry.getProfile().id())) { + currentName = aiq.withEvoIcon(currentName); + } + + if (wh.INSTANCE.isEnabled()) { + int pops = wh.INSTANCE.getPops(entry.getProfile().name()); + if (pops > 0) { + currentName = Component.empty().append(currentName).append(Component.literal(" -" + pops).withStyle(ChatFormatting.YELLOW)); + } + } + + cir.setReturnValue(currentName); + } + } +} diff --git a/src/main/java/b/cv.java b/src/main/java/b/cv.java new file mode 100644 index 0000000..8816247 --- /dev/null +++ b/src/main/java/b/cv.java @@ -0,0 +1,17 @@ +package b; + +import defpackage.*; +import net.minecraft.client.model.player.PlayerModel; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(PlayerModel.class) +public class cv { + @Inject(method = "setupAnim(Lnet/minecraft/client/renderer/entity/state/AvatarRenderState;)V", at = @At("TAIL")) + private void evo$holdGuiPose(AvatarRenderState state, CallbackInfo ci) { + vd.applyPose((PlayerModel)this, state); + } +} diff --git a/src/main/java/b/cw.java b/src/main/java/b/cw.java new file mode 100644 index 0000000..d4e8400 --- /dev/null +++ b/src/main/java/b/cw.java @@ -0,0 +1,31 @@ +package b; + +import defpackage.*; +import net.minecraft.client.renderer.rendertype.RenderSetup; +import net.minecraft.client.renderer.rendertype.RenderSetup.RenderSetupBuilder; +import net.minecraft.resources.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(RenderSetupBuilder.class) +public abstract class cw { + @Inject( + method = "withTexture(Ljava/lang/String;Lnet/minecraft/resources/Identifier;)Lnet/minecraft/client/renderer/rendertype/RenderSetup$RenderSetupBuilder;", + at = @At("RETURN") + ) + private void evo$onTexture(String name, Identifier texture, CallbackInfoReturnable cir) { + if ("Sampler0".equals(name) && texture != null) { + arj.registerBuilderTexture(cir.getReturnValue(), texture); + } + } + + @Inject(method = "createRenderSetup", at = @At("RETURN")) + private void evo$onBuild(CallbackInfoReturnable cir) { + Identifier tex = arj.getBuilderTexture(this); + if (tex != null) { + arj.registerSetupTexture((RenderSetup)cir.getReturnValue(), tex); + } + } +} diff --git a/src/main/java/b/cx.java b/src/main/java/b/cx.java new file mode 100644 index 0000000..24ca01e --- /dev/null +++ b/src/main/java/b/cx.java @@ -0,0 +1,24 @@ +package b; + +import defpackage.*; +import net.minecraft.client.renderer.rendertype.RenderSetup; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.resources.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(RenderType.class) +public abstract class cx { + @Inject( + method = "create(Ljava/lang/String;Lnet/minecraft/client/renderer/rendertype/RenderSetup;)Lnet/minecraft/client/renderer/rendertype/RenderType;", + at = @At("RETURN") + ) + private static void evo$onOf(String name, RenderSetup setup, CallbackInfoReturnable cir) { + Identifier tex = arj.getSetupTexture(setup); + if (tex != null) { + arj.registerLayerTexture((RenderType)cir.getReturnValue(), tex); + } + } +} diff --git a/src/main/java/b/cy.java b/src/main/java/b/cy.java new file mode 100644 index 0000000..1c6e631 --- /dev/null +++ b/src/main/java/b/cy.java @@ -0,0 +1,27 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.renderer.ItemInHandRenderer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ItemInHandRenderer.class) +public abstract class cy { + @Inject( + method = "submitHandsWithItems(FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/player/LocalPlayer;I)V", + at = @At("HEAD"), + cancellable = true + ) + private void evo$renderSkinWatch(float tickProgress, PoseStack matrices, SubmitNodeCollector queue, LocalPlayer player, int light, CallbackInfo callback) { + if (tc.rendersHands()) { + if (aiv.getInstance().render(player, matrices, queue, light)) { + callback.cancel(); + } + } + } +} diff --git a/src/main/java/b/cz.java b/src/main/java/b/cz.java new file mode 100644 index 0000000..e9201fa --- /dev/null +++ b/src/main/java/b/cz.java @@ -0,0 +1,27 @@ +package b; + +import defpackage.*; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.WeatherEffectRenderer; +import net.minecraft.client.renderer.state.level.WeatherRenderState; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(WeatherEffectRenderer.class) +public class cz { + @Inject( + method = "extractRenderState(Lnet/minecraft/client/multiplayer/ClientLevel;FLnet/minecraft/world/phys/Vec3;Lnet/minecraft/client/renderer/state/level/WeatherRenderState;)V", + at = @At("RETURN") + ) + private void evo$dropVanillaRainColumns(ClientLevel level, float partialTick, Vec3 cameraPos, WeatherRenderState state, CallbackInfo ci) { + if (ts.INSTANCE.hidesVanillaWeather()) { + state.rainColumns.clear(); + state.snowColumns.clear(); + } else if (tr.INSTANCE.hidesVanillaRain()) { + state.rainColumns.clear(); + } + } +} diff --git a/src/main/java/b/d.java b/src/main/java/b/d.java new file mode 100644 index 0000000..48a578f --- /dev/null +++ b/src/main/java/b/d.java @@ -0,0 +1,18 @@ +package b; + +import defpackage.*; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.state.gui.GuiRenderState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(GuiGraphicsExtractor.class) +public interface d { + @Accessor("guiRenderState") + GuiRenderState getGuiRenderState(); + + @Mutable + @Accessor("guiRenderState") + void setGuiRenderState(GuiRenderState var1); +} diff --git a/src/main/java/b/da.java b/src/main/java/b/da.java new file mode 100644 index 0000000..d9c2a8f --- /dev/null +++ b/src/main/java/b/da.java @@ -0,0 +1,36 @@ +package b; + +import defpackage.*; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.entity.layers.WingsLayer; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.client.renderer.entity.state.HumanoidRenderState; +import net.minecraft.resources.Identifier; +import net.minecraft.world.entity.player.PlayerSkin; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(WingsLayer.class) +public abstract class da { + @Unique + private static final Identifier evo$ELYTRA_TEXTURE = Identifier.withDefaultNamespace("textures/entity/equipment/wings/elytra.png"); + + @Inject(method = "getPlayerElytraTexture", at = @At("HEAD"), cancellable = true) + private static void evo$skipCosmeticCapeTexture(HumanoidRenderState state, CallbackInfoReturnable cir) { + if (state instanceof AvatarRenderState avatar) { + PlayerSkin skin = avatar.skin; + if (skin != null && skin.elytra() == null && skin.cape() != null) { + Minecraft client = Minecraft.getInstance(); + if (client.level != null) { + if (client.level.getEntity(avatar.id) instanceof AbstractClientPlayer player && adm.resolve(player) != null) { + cir.setReturnValue(evo$ELYTRA_TEXTURE); + } + } + } + } + } +} diff --git a/src/main/java/b/db.java b/src/main/java/b/db.java new file mode 100644 index 0000000..d9fb549 --- /dev/null +++ b/src/main/java/b/db.java @@ -0,0 +1,15 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import net.minecraft.client.gui.Hud; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(Hud.class) +public class db { + @ModifyExpressionValue(method = "extractCameraOverlays", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;isScoping()Z")) + private boolean shouldRenderSpyglassOverlay(boolean isUsingSpyglass) { + return wr.INSTANCE.shouldRenderOverlay(isUsingSpyglass); + } +} diff --git a/src/main/java/b/dc.java b/src/main/java/b/dc.java new file mode 100644 index 0000000..a7bbc1e --- /dev/null +++ b/src/main/java/b/dc.java @@ -0,0 +1,29 @@ +package b; + +import defpackage.*; +import net.minecraft.util.StringDecomposer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +@Mixin(StringDecomposer.class) +public class dc { + @ModifyArg( + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/util/StringDecomposer;iterateFormatted(Ljava/lang/String;ILnet/minecraft/network/chat/Style;Lnet/minecraft/network/chat/Style;Lnet/minecraft/util/FormattedCharSink;)Z", + ordinal = 0 + ), + method = "iterateFormatted(Ljava/lang/String;ILnet/minecraft/network/chat/Style;Lnet/minecraft/util/FormattedCharSink;)Z", + index = 0 + ) + private static String adjustText(String text) { + return protect(text); + } + + @Unique + private static String protect(String string) { + return string; + } +} diff --git a/src/main/java/b/dd.java b/src/main/java/b/dd.java new file mode 100644 index 0000000..5925697 --- /dev/null +++ b/src/main/java/b/dd.java @@ -0,0 +1,112 @@ +package b; + +import defpackage.*; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.util.Mth; +import net.minecraft.world.level.Level; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Level.class) +public class dd { + @Unique + private long evo$lastRealTime = -1L; + @Unique + private final ct evo$smoothSkipAnim = defpackage.ct.layoutMillis(6000.0F, 0.0F); + + @Inject(method = "getDefaultClockTime", at = @At("RETURN"), cancellable = true) + public void getTimeOfDayHook(CallbackInfoReturnable cir) { + if (this instanceof ClientLevel) { + long realTime = (Long)cir.getReturnValue(); + wq tweaks = wq.INSTANCE; + if (tweaks.isEnabled() && tweaks.smoothMorning.isEnabled()) { + if (this.evo$lastRealTime != -1L) { + long delta = realTime - this.evo$lastRealTime; + if (Math.abs(delta) > 100L) { + long visualDelta = delta % 24000L; + if (visualDelta > 12000L) { + visualDelta -= 24000L; + } else if (visualDelta < -12000L) { + visualDelta += 24000L; + } + + if (Math.abs(visualDelta) > 100L) { + float currentAnimVal = this.evo$smoothSkipAnim.value(); + this.evo$smoothSkipAnim.jumpTo(currentAnimVal - (float)visualDelta); + this.evo$smoothSkipAnim.animateTo(0.0F); + } + } + } + + this.evo$lastRealTime = realTime; + float currentOffset = this.evo$smoothSkipAnim.update(); + if (Math.abs(currentOffset) > 0.001F) { + long animatedTime = realTime + (long)currentOffset; + if (animatedTime < 0L) { + animatedTime = animatedTime % 24000L + 24000L; + } + + realTime = animatedTime; + cir.setReturnValue(realTime); + } + } else { + this.evo$lastRealTime = realTime; + } + + boolean enabled = tweaks.isEnabled() && tweaks.modeSetting.isEnable(2); + tweaks.timeAnim.animateTo(enabled ? 1.0F : 0.0F); + float progress = tweaks.timeAnim.update(); + if (progress > 0.001F) { + long currentDayTime = realTime % 24000L; + if (currentDayTime < 0L) { + currentDayTime += 24000L; + } + + long targetDayTime = (long)(tweaks.timeSetting.getCurrent() * 1000.0F); + long delta = targetDayTime - currentDayTime; + if (delta > 12000L) { + delta -= 24000L; + } else if (delta < -12000L) { + delta += 24000L; + } + + cir.setReturnValue(realTime + (long)((float)delta * progress)); + } + } + } + + @Unique + private float evo$weatherProgress() { + if (!(this instanceof ClientLevel)) { + return 0.0F; + } + + wq tweaks = wq.INSTANCE; + boolean enabled = tweaks.isEnabled() && tweaks.modeSetting.isEnable(4); + tweaks.weatherAnim.animateTo(enabled ? 1.0F : 0.0F); + return tweaks.weatherAnim.update(); + } + + @Inject(method = "getRainLevel", at = @At("RETURN"), cancellable = true) + public void getRainGradientHook(float delta, CallbackInfoReturnable cir) { + float progress = this.evo$weatherProgress(); + if (!(progress <= 0.001F)) { + wq tweaks = wq.INSTANCE; + float target = tweaks.weatherMode.is("Clear") ? 0.0F : tweaks.weatherStrength.getCurrent(); + cir.setReturnValue(Mth.lerp(progress, (Float)cir.getReturnValue(), target)); + } + } + + @Inject(method = "getThunderLevel", at = @At("RETURN"), cancellable = true) + public void getThunderGradientHook(float delta, CallbackInfoReturnable cir) { + float progress = this.evo$weatherProgress(); + if (!(progress <= 0.001F)) { + wq tweaks = wq.INSTANCE; + float target = tweaks.weatherMode.is("Thunder") ? tweaks.weatherStrength.getCurrent() : 0.0F; + cir.setReturnValue(Mth.lerp(progress, (Float)cir.getReturnValue(), target)); + } + } +} diff --git a/src/main/java/b/de.java b/src/main/java/b/de.java new file mode 100644 index 0000000..2717ecf --- /dev/null +++ b/src/main/java/b/de.java @@ -0,0 +1,21 @@ +package b; + +import defpackage.*; +import java.io.IOException; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Coerce; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Pseudo +@Mixin(targets = "com.replaymod.replaystudio.protocol.packets.PacketTeam", remap = false) +public class de { + @Inject(method = "skipTeamInfo", at = @At("HEAD"), cancellable = true, require = 0) + private static void evo$skipModernParameters(@Coerce Object packet, @Coerce Object reader, CallbackInfo callback) throws IOException { + if (aos.skipParameters(packet, reader)) { + callback.cancel(); + } + } +} diff --git a/src/main/java/b/df.java b/src/main/java/b/df.java new file mode 100644 index 0000000..b60ab1d --- /dev/null +++ b/src/main/java/b/df.java @@ -0,0 +1,40 @@ +package b; + +import defpackage.*; +import java.io.InputStream; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Pseudo +@Mixin( + targets = { + "com.replaymod.replaystudio.lib.viaversion.api.data.MappingDataLoader", + "com.replaymod.replaystudio.lib.viaversion.protocols.v1_12_2to1_13.data.MappingData1_13", + "com.replaymod.replaystudio.lib.viaversion.protocols.v1_12_2to1_13.data.RecipeData", + "com.replaymod.replaystudio.lib.viaversion.protocols.v1_12_2to1_13.data.BlockIdData" + }, + remap = false +) +public class df { + @Redirect( + method = {"getResource", "loadExtras"}, + at = @At(value = "INVOKE", target = "Ljava/lang/ClassLoader;getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;"), + require = 0 + ) + private InputStream evo$ownJar(ClassLoader loader, String path) { + InputStream own = aou.fromReplayMod(path); + return own != null ? own : loader.getResourceAsStream(path); + } + + @Redirect( + method = "init", + at = @At(value = "INVOKE", target = "Ljava/lang/ClassLoader;getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;"), + require = 0 + ) + private static InputStream evo$ownJarStatic(ClassLoader loader, String path) { + InputStream own = aou.fromReplayMod(path); + return own != null ? own : loader.getResourceAsStream(path); + } +} diff --git a/src/main/java/b/dg.java b/src/main/java/b/dg.java new file mode 100644 index 0000000..6ddc34b --- /dev/null +++ b/src/main/java/b/dg.java @@ -0,0 +1,41 @@ +package b; + +import defpackage.*; +import java.io.InputStream; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Pseudo +@Mixin( + targets = { + "com.viaversion.viaversion.api.data.MappingDataLoader", + "com.viaversion.viaversion.util.Config", + "com.viaversion.viaversion.protocols.v1_12_2to1_13.data.MappingData1_13", + "com.viaversion.viaversion.protocols.v1_12_2to1_13.data.RecipeData", + "com.viaversion.viaversion.protocols.v1_12_2to1_13.data.BlockIdData" + }, + remap = false +) +public class dg { + @Redirect( + method = {"getResource", "getDefaultConfigInputStream", "loadExtras"}, + at = @At(value = "INVOKE", target = "Ljava/lang/ClassLoader;getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;"), + require = 0 + ) + private InputStream evo$ownJar(ClassLoader loader, String path) { + InputStream own = aou.fromViaVersion(path); + return own != null ? own : loader.getResourceAsStream(path); + } + + @Redirect( + method = "init", + at = @At(value = "INVOKE", target = "Ljava/lang/ClassLoader;getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;"), + require = 0 + ) + private static InputStream evo$ownJarStatic(ClassLoader loader, String path) { + InputStream own = aou.fromViaVersion(path); + return own != null ? own : loader.getResourceAsStream(path); + } +} diff --git a/src/main/java/b/e.java b/src/main/java/b/e.java new file mode 100644 index 0000000..1e829ca --- /dev/null +++ b/src/main/java/b/e.java @@ -0,0 +1,18 @@ +package b; + +import defpackage.*; +import net.minecraft.client.gui.render.GuiRenderer; +import net.minecraft.client.renderer.state.gui.GuiRenderState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(GuiRenderer.class) +public interface e { + @Accessor("renderState") + GuiRenderState getRenderState(); + + @Mutable + @Accessor("renderState") + void setRenderState(GuiRenderState var1); +} diff --git a/src/main/java/b/f.java b/src/main/java/b/f.java new file mode 100644 index 0000000..8bf4687 --- /dev/null +++ b/src/main/java/b/f.java @@ -0,0 +1,23 @@ +package b; + +import defpackage.*; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.world.inventory.Slot; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(AbstractContainerScreen.class) +public interface f { + @Accessor("leftPos") + int getX(); + + @Accessor("topPos") + int getY(); + + @Accessor("imageWidth") + int getImageWidth(); + + @Invoker("getHoveredSlot") + Slot invokeGetHoveredSlot(double var1, double var3); +} diff --git a/src/main/java/b/g.java b/src/main/java/b/g.java new file mode 100644 index 0000000..7932432 --- /dev/null +++ b/src/main/java/b/g.java @@ -0,0 +1,17 @@ +package b; + +import defpackage.*; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.Hud; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(Hud.class) +public interface g { + @Invoker("extractItemHotbar") + void invokeRenderHotbar(GuiGraphicsExtractor var1, DeltaTracker var2); + + @Invoker("extractPlayerHealth") + void invokeRenderStatusBars(GuiGraphicsExtractor var1); +} diff --git a/src/main/java/b/h.java b/src/main/java/b/h.java new file mode 100644 index 0000000..d60d8c9 --- /dev/null +++ b/src/main/java/b/h.java @@ -0,0 +1,13 @@ +package b; + +import defpackage.*; +import net.minecraft.core.component.PatchedDataComponentMap; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ItemStack.class) +public interface h { + @Accessor("components") + PatchedDataComponentMap getComponents(); +} diff --git a/src/main/java/b/i.java b/src/main/java/b/i.java new file mode 100644 index 0000000..cfc5319 --- /dev/null +++ b/src/main/java/b/i.java @@ -0,0 +1,56 @@ +package b; + +import defpackage.*; +import com.mojang.authlib.minecraft.UserApiService; +import com.mojang.authlib.minecraft.UserApiService.UserProperties; +import com.mojang.authlib.yggdrasil.ProfileResult; +import java.util.concurrent.CompletableFuture; +import net.minecraft.client.Minecraft; +import net.minecraft.client.User; +import net.minecraft.client.gui.screens.social.PlayerSocialManager; +import net.minecraft.client.multiplayer.ProfileKeyPairManager; +import net.minecraft.client.multiplayer.chat.report.ReportingContext; +import net.minecraft.client.telemetry.ClientTelemetryManager; +import net.minecraft.server.Services; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(Minecraft.class) +public interface i { + @Accessor("user") + @Mutable + void setSession(User var1); + + @Accessor("services") + @Mutable + void setApiServices(Services var1); + + @Accessor("profileFuture") + @Mutable + void setGameProfileFuture(CompletableFuture var1); + + @Accessor("userApiService") + @Mutable + void setUserApiService(UserApiService var1); + + @Accessor("userPropertiesFuture") + @Mutable + void setUserPropertiesFuture(CompletableFuture var1); + + @Accessor("playerSocialManager") + @Mutable + void setSocialInteractionsManager(PlayerSocialManager var1); + + @Accessor("telemetryManager") + @Mutable + void setTelemetryManager(ClientTelemetryManager var1); + + @Accessor("profileKeyPairManager") + @Mutable + void setProfileKeys(ProfileKeyPairManager var1); + + @Accessor("reportingContext") + @Mutable + void setAbuseReportContext(ReportingContext var1); +} diff --git a/src/main/java/b/j.java b/src/main/java/b/j.java new file mode 100644 index 0000000..1df0a14 --- /dev/null +++ b/src/main/java/b/j.java @@ -0,0 +1,18 @@ +package b; + +import defpackage.*; +import java.util.List; +import java.util.Map; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelPart.Cube; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ModelPart.class) +public interface j { + @Accessor("cubes") + List evo$getCubes(); + + @Accessor("children") + Map evo$getChildren(); +} diff --git a/src/main/java/b/k.java b/src/main/java/b/k.java new file mode 100644 index 0000000..3d6fec6 --- /dev/null +++ b/src/main/java/b/k.java @@ -0,0 +1,18 @@ +package b; + +import defpackage.*; +import com.viaversion.viafabricplus.screen.impl.PerServerVersionScreen; +import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; +import java.util.function.Consumer; +import java.util.function.Supplier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(value = PerServerVersionScreen.class, remap = false) +public interface k { + @Accessor("selectionConsumer") + Consumer evo$selectionConsumer(); + + @Accessor("selectionSupplier") + Supplier evo$selectionSupplier(); +} diff --git a/src/main/java/b/l.java b/src/main/java/b/l.java new file mode 100644 index 0000000..26b658d --- /dev/null +++ b/src/main/java/b/l.java @@ -0,0 +1,14 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.feature.RenderTypeFeatureRenderer; +import net.minecraft.client.renderer.rendertype.RenderType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(RenderTypeFeatureRenderer.class) +public interface l { + @Invoker("getVertexBuilder") + VertexConsumer evo$getVertexBuilder(RenderType var1); +} diff --git a/src/main/java/b/m.java b/src/main/java/b/m.java new file mode 100644 index 0000000..cd3de3c --- /dev/null +++ b/src/main/java/b/m.java @@ -0,0 +1,15 @@ +package b; + +import defpackage.*; +import net.minecraft.client.renderer.rendertype.RenderSetup; +import net.minecraft.client.renderer.rendertype.RenderType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(RenderType.class) +public interface m { + @Invoker("") + static RenderType create(String name, RenderSetup setup) { + throw new AssertionError(); + } +} diff --git a/src/main/java/b/n.java b/src/main/java/b/n.java new file mode 100644 index 0000000..3467684 --- /dev/null +++ b/src/main/java/b/n.java @@ -0,0 +1,14 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.opengl.GlProgram; +import com.mojang.blaze3d.opengl.Uniform; +import java.util.Map; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(GlProgram.class) +public interface n { + @Accessor + Map getUniformsByName(); +} diff --git a/src/main/java/b/o.java b/src/main/java/b/o.java new file mode 100644 index 0000000..8af01e4 --- /dev/null +++ b/src/main/java/b/o.java @@ -0,0 +1,21 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.buffers.GpuBuffer; +import com.mojang.blaze3d.vertex.BufferBuilder; +import net.minecraft.client.renderer.StagedVertexBuffer; +import net.minecraft.client.renderer.StagedVertexBuffer.Draw; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(StagedVertexBuffer.class) +public interface o { + @Accessor("lastBuildingDraw") + Draw evo$getLastBuildingDraw(); + + @Accessor("lastVertexBuilder") + BufferBuilder evo$getLastVertexBuilder(); + + @Accessor("currentVertexBuffer") + GpuBuffer evo$getCurrentVertexBuffer(); +} diff --git a/src/main/java/b/p.java b/src/main/java/b/p.java new file mode 100644 index 0000000..f202d71 --- /dev/null +++ b/src/main/java/b/p.java @@ -0,0 +1,24 @@ +package b; + +import defpackage.*; +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.blaze3d.vertex.VertexSorting; +import net.minecraft.client.renderer.StagedVertexBuffer.Draw; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(Draw.class) +public interface p { + @Accessor("vertexCount") + int evo$getVertexCount(); + + @Accessor("primitiveTopology") + PrimitiveTopology evo$getPrimitiveTopology(); + + @Accessor("format") + VertexFormat evo$getFormat(); + + @Accessor("quadSorting") + VertexSorting evo$getQuadSorting(); +} diff --git a/src/main/java/b/q.java b/src/main/java/b/q.java new file mode 100644 index 0000000..2db9393 --- /dev/null +++ b/src/main/java/b/q.java @@ -0,0 +1,37 @@ +package b; + +import defpackage.*; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.core.ClientAsset.ResourceTexture; +import net.minecraft.core.ClientAsset.Texture; +import net.minecraft.resources.Identifier; +import net.minecraft.world.entity.player.PlayerSkin; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(AbstractClientPlayer.class) +public abstract class q { + @Inject(method = "getSkin", at = @At("RETURN"), cancellable = true) + private void evo$customCosmeticSkin(CallbackInfoReturnable cir) { + AbstractClientPlayer player = (AbstractClientPlayer)this; + PlayerSkin original = (PlayerSkin)cir.getReturnValue(); + if (original != null) { + Identifier capeTexture = adm.shouldRender(player) ? adm.resolve(player) : null; + String bodyKey = adq.getInstance().isEnabled() ? aeq.equippedKey(player.getScoreboardName()) : null; + Identifier bodyTexture = bodyKey == null ? null : aeq.texture(bodyKey); + if (capeTexture != null || bodyTexture != null) { + cir.setReturnValue( + new PlayerSkin( + (Texture)(bodyTexture == null ? original.body() : new ResourceTexture(bodyTexture, bodyTexture)), + (Texture)(capeTexture == null ? original.cape() : new ResourceTexture(capeTexture, capeTexture)), + original.elytra(), + bodyTexture == null ? original.model() : aeq.modelOf(bodyKey), + original.secure() + ) + ); + } + } + } +} diff --git a/src/main/java/b/r.java b/src/main/java/b/r.java new file mode 100644 index 0000000..fb4c2f9 --- /dev/null +++ b/src/main/java/b/r.java @@ -0,0 +1,44 @@ +package b; + +import defpackage.*; +import net.minecraft.client.Camera; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.fog.FogData; +import net.minecraft.client.renderer.fog.FogRenderer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(value = FogRenderer.class, priority = 500) +public class r { + private static final float EVO_NO_FOG_DISTANCE = 1.0E9F; + + @Inject(method = "setupFog", at = @At("RETURN")) + private void evo$applyFogOverride( + Camera camera, int fogType, DeltaTracker tickCounter, float viewDistance, ClientLevel world, CallbackInfoReturnable cir + ) { + FogData data = (FogData)cir.getReturnValue(); + this.evo$applyFogEvent(viewDistance, data); + ts.INSTANCE.applyFog(camera, data); + } + + private void evo$applyFogEvent(float viewDistance, FogData data) { + fo event = new fo(); + event.setDistance(viewDistance); + defpackage.j.call(event); + if (event.isCancelled() && data != null) { + int color = event.getColor(); + data.color.set(asv.redf(color), asv.greenf(color), asv.bluef(color), asv.alphaf(color)); + if (event.isFogDisabled()) { + data.environmentalStart = 1.0E9F; + data.environmentalEnd = 1.0E9F; + data.renderDistanceStart = 1.0E9F; + data.renderDistanceEnd = 1.0E9F; + data.skyEnd = 1.0E9F; + data.cloudEnd = 1.0E9F; + } + } + } +} diff --git a/src/main/java/b/s.java b/src/main/java/b/s.java new file mode 100644 index 0000000..666bdfb --- /dev/null +++ b/src/main/java/b/s.java @@ -0,0 +1,104 @@ +package b; + +import defpackage.*; +import net.minecraft.client.Camera; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos.MutableBlockPos; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Camera.class) +public abstract class s { + @Shadow + private Vec3 position; + @Shadow + @Final + private MutableBlockPos blockPosition; + @Shadow + private float yRot; + @Shadow + private float xRot; + @Shadow + private Entity entity; + @Shadow + private boolean detached; + + @Shadow + protected abstract void setRotation(float var1, float var2); + + @Shadow + protected abstract void move(float var1, float var2, float var3); + + @Shadow + protected abstract float getMaxZoom(float var1); + + @Inject( + method = "alignWithEntity", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;setPosition(DDD)V", shift = Shift.AFTER), + cancellable = true + ) + private void updateHook(float tickDelta, CallbackInfo ci) { + Entity focusedEntity = this.entity; + boolean thirdPerson = this.detached; + boolean inverseView = Minecraft.getInstance().options.getCameraType().isMirrored(); + fm event = new fm(false, 4.0F, new apz(this.yRot, this.xRot)); + defpackage.j.call(event); + apz angle = event.getAngle(); + if (event.isCancelled() && focusedEntity instanceof LocalPlayer player && !player.isSleeping() && thirdPerson) { + float pitch = inverseView ? -angle.getPitch() : angle.getPitch(); + float yaw = angle.getYaw() - (inverseView ? 180 : 0); + float distance = event.getDistance(); + this.setRotation(yaw, pitch); + this.move(event.isCameraClip() ? -distance : -this.getMaxZoom(distance), 0.0F, 0.0F); + ci.cancel(); + } + } + + @Inject( + method = "update(Lnet/minecraft/client/DeltaTracker;)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;alignWithEntity(F)V", shift = Shift.AFTER) + ) + private void showcaseHook(DeltaTracker deltaTracker, CallbackInfo ci) { + sv showcase = sv.INSTANCE; + if (showcase.isFlying()) { + amk frame = showcase.frame(); + this.detached = showcase.keepsPlayerVisible(); + this.setRotation(frame.getYaw(), frame.getPitch()); + this.position = new Vec3(frame.getX(), frame.getY(), frame.getZ()); + this.blockPosition.set(frame.getX(), frame.getY(), frame.getZ()); + } + } + + @Inject( + method = "update(Lnet/minecraft/client/DeltaTracker;)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;alignWithEntity(F)V", shift = Shift.AFTER) + ) + private void photoHook(DeltaTracker deltaTracker, CallbackInfo ci) { + agg viewpoint = afw.active(); + if (viewpoint != null) { + Vec3 eye = viewpoint.position(); + this.detached = true; + this.setRotation(viewpoint.yaw(), viewpoint.pitch()); + this.position = eye; + this.blockPosition.set(eye.x, eye.y, eye.z); + } + } + + @Inject(method = "setPosition(Lnet/minecraft/world/phys/Vec3;)V", at = @At("HEAD"), cancellable = true) + private void posHook(Vec3 pos, CallbackInfo ci) { + fn event = new fn(pos); + defpackage.j.call(event); + this.position = pos = event.getPos(); + this.blockPosition.set(pos.x, pos.y, pos.z); + ci.cancel(); + } +} diff --git a/src/main/java/b/t.java b/src/main/java/b/t.java new file mode 100644 index 0000000..6db86e8 --- /dev/null +++ b/src/main/java/b/t.java @@ -0,0 +1,65 @@ +package b; + +import defpackage.*; +import com.mojang.brigadier.ParseResults; +import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.suggestion.Suggestions; +import java.util.concurrent.CompletableFuture; +import net.minecraft.client.gui.components.CommandSuggestions; +import net.minecraft.client.gui.components.EditBox; +import net.minecraft.client.gui.components.CommandSuggestions.SuggestionsList; +import net.minecraft.client.multiplayer.ClientSuggestionProvider; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +@Mixin(CommandSuggestions.class) +public abstract class t { + @Final + @Shadow + EditBox input; + @Shadow + boolean keepSuggestions; + @Shadow + private ParseResults currentParse; + @Shadow + private CompletableFuture pendingSuggestions; + @Shadow + private SuggestionsList suggestions; + + @Shadow + private void updateUsageInfo(ParseResults parseResults, Suggestions suggestions) { + } + + @Inject( + method = "updateCommandInfo()V", + at = @At(value = "INVOKE", target = "Lcom/mojang/brigadier/StringReader;canRead()Z", remap = false), + cancellable = true, + locals = LocalCapture.CAPTURE_FAILHARD + ) + public void refreshHook(CallbackInfo ci, String string, StringReader reader) { + if (reader.canRead(defpackage.bz.getInstance().getCommandManager().getPrefix().length()) + && reader.getString().startsWith(defpackage.bz.getInstance().getCommandManager().getPrefix(), reader.getCursor())) { + reader.setCursor(reader.getCursor() + 1); + if (this.currentParse == null) { + this.currentParse = defpackage.defpackage.bz.getInstance().getCommandManager().getDispatcher().parse(reader, bz.getInstance().getCommandManager().getSource()); + } + + int cursor = this.input.getCursorPosition(); + if (cursor >= 1 && (this.suggestions == null || !this.keepSuggestions)) { + this.pendingSuggestions = defpackage.bz.getInstance().getCommandManager().getDispatcher().getCompletionSuggestions(this.currentParse, cursor); + this.pendingSuggestions.thenAccept(s -> { + if (this.pendingSuggestions.isDone()) { + this.updateUsageInfo(this.currentParse, s); + } + }); + } + + ci.cancel(); + } + } +} diff --git a/src/main/java/b/u.java b/src/main/java/b/u.java new file mode 100644 index 0000000..8d4971f --- /dev/null +++ b/src/main/java/b/u.java @@ -0,0 +1,25 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import net.minecraft.client.multiplayer.ClientChunkCache; +import net.minecraft.world.level.ChunkPos; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ClientChunkCache.class) +public class u { + @Inject(method = "drop(Lnet/minecraft/world/level/ChunkPos;)V", at = @At("HEAD"), cancellable = true) + private void keepCachedChunk(ChunkPos pos, CallbackInfo ci) { + if (sr.INSTANCE.isHolding()) { + ci.cancel(); + } + } + + @ModifyReturnValue(method = "calculateStorageRange(I)I", at = @At("RETURN")) + private static int widenStorageRange(int original) { + return sr.INSTANCE.isHolding() ? Math.max(original, sr.INSTANCE.storageRange()) : original; + } +} diff --git a/src/main/java/b/v.java b/src/main/java/b/v.java new file mode 100644 index 0000000..1985649 --- /dev/null +++ b/src/main/java/b/v.java @@ -0,0 +1,20 @@ +package b; + +import defpackage.*; +import net.minecraft.client.ClientClockManager; +import net.minecraft.core.Holder; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(ClientClockManager.class) +public class v { + @Inject(method = "getTotalTicks(Lnet/minecraft/core/Holder;)J", at = @At("RETURN"), cancellable = true) + private void evo$lockTime(Holder clock, CallbackInfoReturnable cir) { + wq tweaks = wq.INSTANCE; + if (tweaks.isEnabled() && tweaks.modeSetting.isEnable(2)) { + cir.setReturnValue((long)(tweaks.timeSetting.getCurrent() * 1000.0F)); + } + } +} diff --git a/src/main/java/b/w.java b/src/main/java/b/w.java new file mode 100644 index 0000000..33b8d2c --- /dev/null +++ b/src/main/java/b/w.java @@ -0,0 +1,111 @@ +package b; + +import defpackage.*; +import com.mojang.authlib.GameProfile; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LocalPlayer.class) +public abstract class w extends AbstractClientPlayer { + @Shadow + @Final + protected Minecraft minecraft; + + public w(ClientLevel world, GameProfile profile) { + super(world, profile); + } + + @Shadow + protected abstract void sendIsSprintingIfNeeded(); + + @Shadow + protected abstract void updateAutoJump(float var1, float var2); + + @Inject(method = "crit(Lnet/minecraft/world/entity/Entity;)V", at = @At("HEAD")) + private void evo$playCritSound(Entity target, CallbackInfo ci) { + if (defpackage.bz.getInstance().getSoundManager() != null) { + defpackage.bz.getInstance().getSoundManager().play(mj.CRITICAL_HIT); + } + } + + @Inject(method = "crit(Lnet/minecraft/world/entity/Entity;)V", at = @At("HEAD"), cancellable = true) + private void evo$replaceCritParticles(Entity target, CallbackInfo ci) { + if (vx.INSTANCE.replaceCriticalParticles(target)) { + ci.cancel(); + } + } + + @Inject(method = "tick", at = @At("HEAD")) + public void tick(CallbackInfo ci) { + defpackage.j.call(new fl()); + } + + @Redirect(method = "sendPosition", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;sendIsSprintingIfNeeded()V")) + public void invokeSprintUpdate(LocalPlayer instance) { + fk eventSprintUpdate = new fk(); + defpackage.j.call(eventSprintUpdate); + if (!eventSprintUpdate.isCancelled()) { + this.sendIsSprintingIfNeeded(); + } + } + + @Redirect(method = "sendPosition", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;getYRot()F")) + public float replaceMovePacketYaw(LocalPlayer instance) { + return defpackage.bz.getInstance().getRotationManager().getCurrentRotation().getYaw(); + } + + @Redirect(method = "aiStep", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;isUsingItem()Z"), require = 0) + private boolean onIsUsingItemRedirect(LocalPlayer player) { + if (player.isUsingItem()) { + fj slowDownEvent = new fj(); + defpackage.j.call(slowDownEvent); + return player.isUsingItem() && player.getVehicle() == null && !slowDownEvent.isCancelled(); + } else { + return player.isUsingItem() && player.getVehicle() == null; + } + } + + @Redirect(method = "sendPosition", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;getXRot()F")) + public float replaceMovePacketPitch(LocalPlayer instance) { + return defpackage.bz.getInstance().getRotationManager().getCurrentRotation().getPitch(); + } + + @Inject(method = "closeContainer", at = @At("HEAD"), cancellable = true) + private void closeHandledScreenHook(CallbackInfo info) { + ew event = new ew(this.minecraft.gui.screen()); + defpackage.j.call(event); + if (event.isCancelled()) { + info.cancel(); + } + } + + @Inject( + method = "move", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/player/AbstractClientPlayer;move(Lnet/minecraft/world/entity/MoverType;Lnet/minecraft/world/phys/Vec3;)V" + ), + cancellable = true + ) + public void onMoveHook(MoverType movementType, Vec3 movement, CallbackInfo ci) { + fg event = new fg(movement); + defpackage.j.call(event); + double d = this.getX(); + double e = this.getZ(); + super.move(movementType, event.getMovePos()); + this.updateAutoJump((float)(this.getX() - d), (float)(this.getZ() - e)); + ci.cancel(); + } +} diff --git a/src/main/java/b/x.java b/src/main/java/b/x.java new file mode 100644 index 0000000..641cd7d --- /dev/null +++ b/src/main/java/b/x.java @@ -0,0 +1,41 @@ +package b; + +import defpackage.*; +import net.minecraft.client.multiplayer.MultiPlayerGameMode; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.ContainerInput; +import net.minecraft.world.phys.BlockHitResult; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(MultiPlayerGameMode.class) +public class x { + @Inject(method = "handleContainerInput", at = @At("HEAD"), cancellable = true) + public void clickSlotHook(int syncId, int slotId, int button, ContainerInput actionType, Player player, CallbackInfo info) { + ev event = new ev(syncId, slotId, button, actionType); + defpackage.j.call(event); + if (event.isCancelled()) { + info.cancel(); + } + } + + @Inject(method = "useItemOn", at = @At("HEAD"), cancellable = true) + private void interactBlock(LocalPlayer player, InteractionHand hand, BlockHitResult hitResult, CallbackInfoReturnable cir) { + } + + @Inject(method = "attack", at = @At("HEAD"), cancellable = true) + private void attackEntityHook(Player player, Entity target, CallbackInfo info) { + fc event = new fc(target, fb.POST); + defpackage.j.call(event); + if (event.isCancelled()) { + info.cancel(); + } + } +} diff --git a/src/main/java/b/y.java b/src/main/java/b/y.java new file mode 100644 index 0000000..42527fa --- /dev/null +++ b/src/main/java/b/y.java @@ -0,0 +1,47 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LightningBolt; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ClientLevel.class) +public class y { + @Inject(method = "addEntity(Lnet/minecraft/world/entity/Entity;)V", at = @At("HEAD"), cancellable = true) + private void evo$dropSuppressedLightning(Entity entity, CallbackInfo ci) { + if (entity instanceof LightningBolt && wq.INSTANCE.suppressesLightning()) { + ci.cancel(); + } + } + + @Inject(method = "setSkyFlashTime(I)V", at = @At("HEAD"), cancellable = true) + private void evo$dropSuppressedSkyFlash(int time, CallbackInfo ci) { + if (time > 0 && wq.INSTANCE.suppressesLightning()) { + ci.cancel(); + } + } + + @Inject(method = "addEntity(Lnet/minecraft/world/entity/Entity;)V", at = @At("RETURN")) + public void injectAddEntity(Entity entity, CallbackInfo ci) { + if (entity instanceof LocalPlayer) { + defpackage.j.call(new ey(entity)); + } + } + + @WrapWithCondition( + method = "tickWeatherEffects()V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/ClientLevel;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V") + ) + private boolean evo$skipVanillaRainSplashes( + ClientLevel level, ParticleOptions options, double x, double y, double z, double velocityX, double velocityY, double velocityZ + ) { + return !tr.INSTANCE.hidesVanillaSplashes(); + } +} diff --git a/src/main/java/b/z.java b/src/main/java/b/z.java new file mode 100644 index 0000000..e28ee7e --- /dev/null +++ b/src/main/java/b/z.java @@ -0,0 +1,43 @@ +package b; + +import defpackage.*; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.Entity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(Entity.class) +public class z implements aqg { + @ModifyExpressionValue( + method = "move", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;isLocalInstanceAuthoritative()Z", ordinal = 1) + ) + public boolean fixFalldistanceValue(boolean original) { + return this == mc.player ? true : original; + } + + @Redirect(method = "moveRelative", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;getYRot()F")) + public float movementCorrection(Entity instance) { + return instance instanceof LocalPlayer ? defpackage.bz.getInstance().getRotationManager().getCurrentRotation().getYaw() : instance.getYRot(); + } + + @ModifyVariable(method = "calculateViewVector(FF)Lnet/minecraft/world/phys/Vec3;", at = @At("HEAD"), ordinal = 0, argsOnly = true) + private float modifyPitch(float pitch) { + return this instanceof LocalPlayer && evo$rotationOverridden() ? defpackage.bz.getInstance().getRotationManager().getCurrentRotation().getPitch() : pitch; + } + + @ModifyVariable(method = "calculateViewVector(FF)Lnet/minecraft/world/phys/Vec3;", at = @At("HEAD"), ordinal = 1, argsOnly = true) + private float modifyYaw(float yaw) { + return this instanceof LocalPlayer && evo$rotationOverridden() ? defpackage.bz.getInstance().getRotationManager().getCurrentRotation().getYaw() : yaw; + } + + @Unique + private static boolean evo$rotationOverridden() { + bz evolution = defpackage.bz.getInstance(); + return evolution != null && evolution.getRotationManager() != null && evolution.getRotationManager().isRotationOverridden(); + } +} diff --git a/src/main/java/defpackage/Cdo.java b/src/main/java/defpackage/Cdo.java new file mode 100644 index 0000000..bf92e2c --- /dev/null +++ b/src/main/java/defpackage/Cdo.java @@ -0,0 +1,28 @@ +package defpackage; + +import net.minecraft.world.level.block.Rotation; + +/* JADX INFO: renamed from: do, reason: invalid class name */ +/* JADX INFO: loaded from: evovis-dec.jar:do.class */ +/* synthetic */ class Cdo { + static final /* synthetic */ int[] $SwitchMap$net$minecraft$world$level$block$Rotation = new int[Rotation.values().length]; + + static { + try { + $SwitchMap$net$minecraft$world$level$block$Rotation[Rotation.NONE.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$net$minecraft$world$level$block$Rotation[Rotation.CLOCKWISE_90.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$net$minecraft$world$level$block$Rotation[Rotation.CLOCKWISE_180.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$net$minecraft$world$level$block$Rotation[Rotation.COUNTERCLOCKWISE_90.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + } +} diff --git a/src/main/java/defpackage/Cif.java b/src/main/java/defpackage/Cif.java new file mode 100644 index 0000000..7bd1669 --- /dev/null +++ b/src/main/java/defpackage/Cif.java @@ -0,0 +1,277 @@ +package defpackage; + +import java.util.Locale; + +/* JADX WARN: Failed to restore enum class, 'enum' modifier and super class removed */ +/* JADX WARN: Unknown enum class pattern. Please report as an issue! */ +/* JADX INFO: renamed from: if, reason: invalid class name */ +/* JADX INFO: loaded from: evovis-dec.jar:if.class */ +public final class Cif { + private static final String OVERRIDE_PROPERTY = "evovis.log"; + private static final String ENTRY_SEPARATOR = ","; + private static final String VALUE_SEPARATOR = "="; + private static final String OVERRIDE_SEPARATOR = " "; + private static final String EMPTY = ""; + private volatile ii consoleLevel; + public static final Cif GENERAL = new Cif("GENERAL", (1921291259 ^ (-1921291259)) + ((1921291259 & (-1921291259)) << 1)); + public static final Cif MODULE = new Cif("MODULE", ((-691220310) | 691220311) + ((-691220310) & 691220311)); + public static final Cif RENDER = new Cif("RENDER", (985517866 | (-985517864)) + (985517866 & (-985517864))); + public static final Cif SHADER = new Cif("SHADER", ((-94908406) | 94908409) + ((-94908406) & 94908409)); + public static final Cif GUI = new Cif("GUI", ((-1491706391) | 1491706395) + ((-1491706391) & 1491706395)); + public static final Cif CONFIG = new Cif("CONFIG", ((-1613212341) | 1613212346) + ((-1613212341) & 1613212346)); + public static final Cif STORAGE = new Cif("STORAGE", (648025519 | (-648025513)) + (648025519 & (-648025513))); + public static final Cif COSMETIC = new Cif("COSMETIC", ((-537055264) ^ 537055271) + (((-537055264) & 537055271) << 1)); + public static final Cif MEDIA = new Cif("MEDIA", ((-2093865589) | 2093865597) + ((-2093865589) & 2093865597)); + public static final Cif NETWORK = new Cif("NETWORK", (1212026385 ^ (-1212026376)) + ((1212026385 & (-1212026376)) << 1)); + public static final Cif AUTH = new Cif("AUTH", ((-1424280418) | 1424280428) + ((-1424280418) & 1424280428)); + public static final Cif SOCIAL = new Cif("SOCIAL", (385942394 ^ (-385942383)) + ((385942394 & (-385942383)) << 1)); + public static final Cif UPDATE = new Cif("UPDATE", (982044831 | (-982044819)) + (982044831 & (-982044819))); + public static final Cif COMPAT = new Cif("COMPAT", (997875594 ^ (-997875581)) + ((997875594 & (-997875581)) << 1)); + public static final Cif SECURITY = new Cif("SECURITY", ((-402772907) | 402772921) + ((-402772907) & 402772921)); + private static final /* synthetic */ Cif[] $VALUES = $values(); + + public void consoleLevel(ii iiVar) { + int i = -1637682122; + int i2 = 1093277312; + while (true) { + switch (i + i2) { + case -544404810: + default: + if (iiVar == null) { + i = 1610039193; + i2 = 179708945; + } else { + i = -155201539; + i2 = 70975681; + } + break; + case -84225858: + this.consoleLevel = iiVar; + i = 1252875344; + i2 = 536872794; + break; + case 1789748138: + return; + } + } + } + + public static Cif find(String str) { + String strTrim = null; + Cif[] cifArrValues = null; + int length = 0; + int i = 0; + Cif cif = null; + int i2 = -953164805; + int i3 = 704530; + while (true) { + switch (i2 + i3) { + case -1673741941: + return null; + case -1287846136: + return null; + case -952460275: + default: + if (str != null) { + i2 = -535521682; + i3 = 315626016; + } else { + i2 = 742191350; + i3 = -2030037486; + } + break; + case -756334960: + i++; + i2 = -1140899903; + i3 = 557318400; + break; + case -583581503: + if (i >= length) { + i2 = 1539507827; + i3 = 1081717528; + } else { + i2 = -1258850585; + i3 = -1340862459; + } + break; + case -219895666: + strTrim = str.trim(); + cifArrValues = values(); + length = cifArrValues.length; + i = 0; + i2 = -591970689; + i3 = 8389186; + break; + case 1695254252: + cif = cifArrValues[i]; + if (!cif.name().equalsIgnoreCase(strTrim)) { + i2 = -1396130194; + i3 = 639795234; + } else { + i2 = 1067430322; + i3 = 956370976; + } + break; + case 2023801298: + return cif; + } + } + } + + public static String describeOverrides() { + StringBuilder sb = null; + Cif[] cifArrValues = null; + int length = 0; + int i = 0; + Cif cif = null; + int i2 = -56275725; + int i3 = 77620248; + while (true) { + switch (i2 + i3) { + case -1848284776: + i++; + i2 = 2038436039; + i3 = 12606560; + break; + case -1685835260: + sb.append(" "); + i2 = 717247371; + i3 = 136200224; + break; + case -1250071910: + return sb.toString(); + case 21344523: + default: + sb = new StringBuilder(); + cifArrValues = values(); + length = cifArrValues.length; + i = 0; + i2 = 1073704151; + i3 = 977338448; + break; + case 56804193: + i2 = -305207297; + i3 = -1543077479; + break; + case 449887698: + cif = cifArrValues[i]; + if (cif.consoleLevel != ii.DEFAULT_CONSOLE) { + i2 = -279183423; + i3 = 1073791296; + } else { + i2 = -2097415; + i3 = 58901608; + } + break; + case 794607873: + if (!sb.isEmpty()) { + i2 = 1652279794; + i3 = 956852242; + } else { + i2 = -1294053513; + i3 = -2147466188; + } + break; + case 853447595: + sb.append(cif.key()).append("=").append(cif.consoleLevel.name().toLowerCase(Locale.ROOT)); + i2 = 1874155511; + i3 = 572527009; + break; + case 2051042599: + if (i >= length) { + i2 = 897208916; + i3 = -2147280826; + } else { + i2 = 243269038; + i3 = 206618660; + } + break; + } + } + } + + public static Cif[] values() { + return (Cif[]) $VALUES.clone(); + } + + public static Cif valueOf(String str) { + return (Cif) Enum.valueOf(Cif.class, str); + } + + private Cif(String str, int i) { + super(str, i); + this.consoleLevel = ii.DEFAULT_CONSOLE; + } + + private static /* synthetic */ Cif[] $values() { + Cif[] cifArr = new Cif[15]; + cifArr[0] = GENERAL; + cifArr[1] = MODULE; + cifArr[2] = RENDER; + cifArr[3] = SHADER; + cifArr[4] = GUI; + cifArr[5] = CONFIG; + cifArr[6] = STORAGE; + cifArr[7] = COSMETIC; + cifArr[8] = MEDIA; + cifArr[9] = NETWORK; + cifArr[10] = AUTH; + cifArr[11] = SOCIAL; + cifArr[12] = UPDATE; + cifArr[13] = COMPAT; + cifArr[14] = SECURITY; + return cifArr; + } + + static { + applyOverrides(System.getProperty("evovis.log", "")); + } + + public String key() { + return name().toLowerCase(Locale.ROOT); + } + + public ii consoleLevel() { + return this.consoleLevel; + } + + public boolean logsToConsole(ii iiVar) { + return iiVar.atLeast(this.consoleLevel); + } + + /* JADX WARN: Multi-variable type inference failed */ + /* JADX WARN: Type inference failed for: r0v3, types: [boolean, int] */ + public static boolean applyOverrides(String str) { + if (str == null || str.isBlank()) { + return 0; + } + int i = 0; + String[] strArrSplit = str.split(","); + int length = strArrSplit.length; + for (int i2 = 0; i2 < length; i2++) { + String strTrim = strArrSplit[i2].trim(); + if (!strTrim.isEmpty()) { + int iIndexOf = strTrim.indexOf("="); + if (iIndexOf < 0) { + ii iiVar = ii.parse(strTrim, null); + if (iiVar != null) { + Cif[] cifArrValues = values(); + int length2 = cifArrValues.length; + for (int i3 = 0; i3 < length2; i3++) { + cifArrValues[i3].consoleLevel = iiVar; + } + i = 1; + } + } else { + Cif cifFind = find(strTrim.substring(0, iIndexOf)); + ii iiVar2 = ii.parse(strTrim.substring(iIndexOf + ((-202441263) ^ 202441264) + (((-202441263) & 202441264) << 1)), null); + if (cifFind != null && iiVar2 != null) { + cifFind.consoleLevel = iiVar2; + i = 1; + } + } + } + } + return i; + } +} diff --git a/src/main/java/defpackage/a.java b/src/main/java/defpackage/a.java new file mode 100644 index 0000000..5447a4a --- /dev/null +++ b/src/main/java/defpackage/a.java @@ -0,0 +1,12 @@ +package defpackage; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.CLASS) +@Target(ElementType.METHOD) +public @interface a { + boolean duplicate() default false; +} diff --git a/src/main/java/defpackage/aa.java b/src/main/java/defpackage/aa.java new file mode 100644 index 0000000..e602dd1 --- /dev/null +++ b/src/main/java/defpackage/aa.java @@ -0,0 +1,9 @@ +package defpackage; + +import com.mojang.blaze3d.pipeline.RenderPipeline; + +public interface aa { + RenderPipeline customP(); + + RenderPipeline custom_solidP(); +} diff --git a/src/main/java/defpackage/aaa.java b/src/main/java/defpackage/aaa.java new file mode 100644 index 0000000..64b7b0d --- /dev/null +++ b/src/main/java/defpackage/aaa.java @@ -0,0 +1,403 @@ +package defpackage; + +import net.minecraft.client.model.geom.builders.UVPair; + +public class aaa extends zu { + private static final float ICON_SIZE = 6.5F; + private static final float FIELD_BLOCK_HEIGHT = 26.0F; + private static final float RESET_ROW_HEIGHT = 20.0F; + private static final long RESET_CONFIRM_WINDOW_MS = 3000L; + private static final float HEADER_BASE_INSET = 8.0F; + private static final float TITLE_ICON_GAP = 10.0F; + private static final String TITLE = "Create Config"; + private static final String HEADER_TOOLTIP = "Name a profile and click Create to save your current settings, or reset everything to defaults"; + private final abf createButton; + private final abf resetButton; + private final abf confirmResetButton; + private long resetArmedUntil; + private arn textBox; + private final asi bounds = new asi(); + private final asi clickBounds = new asi(); + private final ct animation = ct.layout(ob.SETTLED, 0.0F); + private final ct hoverHeader = asa.spring(); + private final zw autoScroll = new zw(); + private static final float CARD_HEIGHT = 45.0F; + + private static arq ROW_RADIUS() { + return asj.all(oc.CARD); + } + + public aaa() { + this.createButton = new abf(new rv("Create", () -> { + String var1 = null; + int var2 = -788257894; + + while (true) { + switch (var2) { + case -1461543847: + bz.getInstance().getConfigManager().saveConfig(var1); + bz.getInstance().getMenuScreen().refreshConfigs(); + this.textBox.setText(""); + if (bz.getInstance().getSoundManager() != null) { + var2 = 139889408; + } else { + var2 = -217336874; + } + break; + case -788257894: + default: + if (this.textBox != null) { + var2 = -470466113; + } else { + var2 = -217336874; + } + break; + case -470466113: + var1 = this.textBox.getText().trim(); + if (!var1.isEmpty()) { + var2 = -1461543847; + } else { + var2 = -217336874; + } + break; + case -217336874: + return; + case 139889408: + bz.getInstance().getSoundManager().playTab(); + var2 = -217336874; + } + } + }).description("Create a new configuration profile")); + this.resetButton = new abf( + new rv( + "Reset to Default", + () -> this.resetArmedUntil = System.currentTimeMillis() + + (-289607273868209419L | 289607273868212419L) + + (-289607273868209419L & 289607273868212419L) + ) + .description( + "Restore every module and theme to its default settings" + ) + ); + this.confirmResetButton = new abf( + new rv("Click again to confirm", this::resetToDefaults) + .description( + "Restore every module and theme to its default settings" + ) + ); + } + + private void resetToDefaults() { + int var1 = -218063130; + + while (true) { + switch (var1) { + case -1363032568: + bz.getInstance().getSoundManager().playTab(); + var1 = 1978436192; + break; + case -1313463562: + if (bz.getInstance().getSoundManager() != null) { + var1 = -1363032568; + } else { + var1 = 1978436192; + } + break; + case -218063130: + default: + this.resetArmedUntil = (8555831481801690154L ^ -8555831481801690154L) + ((8555831481801690154L & -8555831481801690154L) << 1); + if (bz.getInstance().getConfigManager().resetToDefaults()) { + var1 = -1313463562; + } else { + var1 = 1978436192; + } + break; + case 1978436192: + return; + } + } + } + + private abf activeResetButton() { + abf var2 = null; + int var1 = 1200486199; + + while (true) { + switch (var1) { + case -1109696139: + var2 = this.resetButton; + var1 = -661788051; + break; + case -838897257: + var2 = this.confirmResetButton; + var1 = -661788051; + break; + case -661788051: + return var2; + case 1200486199: + default: + if (System.currentTimeMillis() < this.resetArmedUntil) { + var1 = -838897257; + } else { + var1 = -1109696139; + } + } + } + } + + @Override + public void render(asq var1, float var2, float var3, ge var4, float var5, float var6, float var7, float var8, int var9, float var10, float var11) { + if (this.textBox == null) { + this.textBox = new arn( + new UVPair(0.0F, 0.0F), gl.MEDIUM.getFont(7.0F), "Config name...", 100.0F + ); + } + + float var12 = cardHeaderHeight(); + float var13 = this.getHeight(); + mv var14 = bz.getInstance().getThemeManager().getCurrentTheme(); + asu var15 = var14.getForegroundColor().mulAlpha(var8); + asu var16 = var14.getForegroundDark().mulAlpha(var8); + this.clickBounds.set(var5, var6, var7, var12); + this.bounds.set(var5, var6, var7, var13); + int var17 = (this.bounds.contains(this.scaleMouseX(var2, this.bounds), this.scaleMouseY(var3, this.bounds))) ? 1 : 0; + if (var3 < var10 || var3 > var11) { + var17 = 0; + } + + this.hoverAnimation.animateTo(var17 != 0 ? 1.0F : 0.0F); + float var18 = this.hoverAnimation.update(); + if (bz.getInstance().getMenuScreen() != null) { + this.autoScroll.update(bz.getInstance().getMenuScreen(), (boolean)((var17) != 0), this.getToyHover(), this.autoScrollY(var6), var13, var7, var10, var11); + } + + if (!(var6 > var11) && !(var6 + var13 < var10)) { + boolean var19 = asa.push(var1, var5, var6, var7, var13, var18, asa.cardAmount(var7)); + int var20 = (asa.hits( + this.scaleMouseX(var2, this.bounds), this.scaleMouseY(var3, this.bounds), this.clickBounds, this.hoverHeader, asa.controlAmount(var7) + )) ? 1 : 0; + if (var3 < var10 || var3 > var11) { + var20 = 0; + } + + this.hoverHeader.animateTo(var20 != 0 ? 1.0F : 0.0F); + float var21 = this.hoverHeader.update(); + float var22 = 1.0F; + var5 += var22; + var6 += var22; + var7 -= var22 * 2.0F; + var12 -= var22 * 2.0F; + var13 -= var22 * 2.0F; + zv.restShadow(var1, var5, var6, var7, var13, var8); + zv.body(var1, var5, var6, var7, var13, var12, (boolean)(((1)) != 0), var15.getRGB(), var16.getRGB()); + asa.plateRow(var1, var5, var6, var7, var12, asa.plateColor(var14), var8, var21); + boolean var23 = asa.push(var1, var5, var6, var7, var12, var21, asa.controlAmount(var7)); + asu var24 = var14.getColor().mulAlpha(var8); + asu var25 = asa.liftText(var14.getWhite().mulAlpha(var8), var14, var21); + float var26 = asj.contentInset(oc.PANEL, 8.0F, var7, var12); + ge var27 = gl.ICONS.getFont(6.5F); + var1.drawText( + var27, + "g", + var5 + var26 + asa.iconShift(var21), + var6 + (var12 - var27.height()) / 2.0F, + var24 + ); + var1.drawScrollingText( + var4, + "Create Config", + var5 + var26 + 10.0F, + var6 + (var12 - var4.height()) / 2.0F, + var7 - var26 * 2.0F - 10.0F, + var25, + (boolean)((((-971249053 ^ 971249054) + ((-971249053 & 971249054) << 1)) + ) != 0)); + if (var21 > 0.5F) { + ass.tooltip( + this, + "Name a profile and click Create to save your current settings, or reset everything to defaults", + this.clickBounds.x(), + this.clickBounds.y(), + this.clickBounds.width(), + this.clickBounds.height(), + asr.BELOW + ); + } + + asa.pop(var1, var23); + float var28 = 50.0F; + float var29 = var5 + 6.0F; + float var30 = var6 + var12 + 3.0F; + float var31 = var7 - 12.0F - var28 - 4.0F; + float var32 = 18.0F; + boolean var33 = this.textBox.isSelected(); + var1.drawSurface(aso.CONTROL, var29, var30, var31, var32, ROW_RADIUS(), var14.getForegroundColor().mulAlpha(0.6F * var8)); + atb.drawRoundedBorder( + var1.pose(), + var29, + var30, + var31, + var32, + pk.borderHairline(), + asj.all(oc.CARD), + var33 ? var14.getColor().mulAlpha(0.85F * var8) : var14.getForegroundStroke().mulAlpha(var8) + ); + this.textBox.setWidth((int)(var31 - 14.0F)); + float var34 = var30 + (var32 - this.textBox.getFont().height()) / 2.0F; + this.textBox.setPosition(new UVPair(var29 + 7.0F, var34)); + this.textBox.render(var1, var29 + 7.0F, var34, var14.getWhite().mulAlpha(var8), var14.getGrayLight().mulAlpha((var33 ? 0.35F : 0.75F) * var8)); + this.createButton + .render( + var1, + (float)this.scaleMouseX(var2, this.bounds), + (float)this.scaleMouseY(var3, this.bounds), + var5 + var7 - var28 - 8.0F, + var6 + var12 + 4.0F, + var28, + var8, + 1.0F, + var14.getColor().getRGB(), + var14.getWhite().getRGB(), + var14.getWhite().getRGB(), + var14 + ); + this.activeResetButton() + .render( + var1, + (float)this.scaleMouseX(var2, this.bounds), + (float)this.scaleMouseY(var3, this.bounds), + var5, + var6 + var12 + 26.0F, + var7, + var8, + 1.0F, + var14.getColor().getRGB(), + var14.getWhite().getRGB(), + var14.getWhite().getRGB(), + var14 + ); + zv.border(var1, var5, var6, var7, var13, var14, var8); + asa.pop(var1, var19); + } + } + + @Override + public float getHeight() { + return cardHeaderHeight() + 26.0F + 20.0F; + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + int var10 = -1855022945; + + while (true) { + switch (var10) { + case -1855022945: + default: + var6 = this.scaleMouseX(var1, this.bounds); + var8 = this.scaleMouseY(var3, this.bounds); + if (this.textBox != null) { + var10 = 1033121038; + } else { + var10 = 1087534702; + } + break; + case 1033121038: + this.textBox.onMouseClicked(var6, var8, var5); + var10 = 1087534702; + break; + case 1087534702: + this.createButton.onMouseClicked(var6, var8, var5); + this.activeResetButton().onMouseClicked(var6, var8, var5); + return; + } + } + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = 984991140; + + while (true) { + switch (var4) { + case -1945640308: + return (boolean)(((0)) != 0); + case -1453933877: + if (this.textBox.isSelected()) { + var4 = 1704281407; + } else { + var4 = -1945640308; + } + break; + case 984991140: + default: + if (this.textBox != null) { + var4 = -1453933877; + } else { + var4 = -1945640308; + } + break; + case 1704281407: + return this.textBox.keyPressed(var1, var2, var3); + } + } + } + + @Override + public boolean charTyped(char var1, int var2) { + int var3 = -1018939480; + + while (true) { + switch (var3) { + case -1904091768: + return (boolean)(((0)) != 0); + case -1512188346: + if (this.textBox.isSelected()) { + var3 = -1096976486; + } else { + var3 = -1904091768; + } + break; + case -1096976486: + return this.textBox.charTyped(var1, var2); + case -1018939480: + default: + if (this.textBox != null) { + var3 = -1512188346; + } else { + var3 = -1904091768; + } + } + } + } + + @Override + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + return (boolean)(((0)) != 0); + } + + @Override + public int getSortGroup() { + return 0; + } + + @Override + public rl getCategory() { + return rl.CONFIGS; + } + + @Override + public String getName() { + return "Create Config"; + } +} diff --git a/src/main/java/defpackage/aab.java b/src/main/java/defpackage/aab.java new file mode 100644 index 0000000..274abf1 --- /dev/null +++ b/src/main/java/defpackage/aab.java @@ -0,0 +1,1064 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import net.minecraft.util.Mth; + +public class aab extends zu { + private static final float HEADER_HOVER_SCALE = 0.05F; + private static final float HOVER_REFERENCE_WIDTH = 172.0F; + private static final float BIND_HOVER_SCALE = 0.05F; + private static final float DETACHED_SHADOW_ALPHA = 0.15F; + private static final float DETACHED_SHADOW_SOFTNESS = 12.0F; + private static final String UNBOUND_LABEL = "n/a"; + private static final float UNBOUND_IDLE_ALPHA = 0.22F; + private static final float NO_EDGE_FADE = 0.0F; + private static final float DETACHED_INSET = 1.0F; + private static final float STICKY_GLASS_FILL_ALPHA = 0.45F; + private static final float STICKY_PIN_OFFSET = 10.0F; + private static final float DETACH_RAMP = 10.0F; + private static final float DETACH_MIN = 0.002F; + private static final float MODIFIED_DOT_SIZE = 3.5F; + private static final float MODIFIED_DOT_GAP = 4.0F; + private static final float HEADER_BASE_INSET = 8.0F; + private static final float TITLE_ICON_GAP = 10.0F; + private static final float KEY_BASE_PAD = 5.0F; + private static final float TITLE_BADGE_RESERVE = 33.0F; + private static final float TITLE_MIN_WIDTH = 36.0F; + private static final int OPAQUE_ALPHA = 255; + private static final arq RADIUS_MODIFIED_DOT = asj.pill(3.5F); + private static final String MODIFIED_TOOLTIP_SUFFIX = " changed from default"; + private static final float MODIFIED_DOT_HOVER_PAD = 3.0F; + private static final float TOOLTIP_HOVER_THRESHOLD = 0.5F; + private static final String BIND_TOOLTIP_BINDING = "Press a key, Esc or Del clears the bind"; + private static final String BIND_TOOLTIP_IDLE = "Click to bind this module to a key"; + private static final float PULSE_MIN = 0.01F; + private static final float PULSE_RING_EXPAND = 5.0F; + private static final float PULSE_RING_THICKNESS = 1.2F; + private static final float PULSE_RING_ALPHA = 0.55F; + private static final float PULSE_GLOW_ALPHA = 0.35F; + private static final float PULSE_GLOW_SOFTNESS = 10.0F; + private static final float PULSE_BASE_STRENGTH = 0.6F; + private static final float PULSE_GLOW_STRENGTH = 0.4F; + private final rm module; + private int cachedModifiedCount = -1; + private String modifiedTooltip = ""; + private final List settings = new ArrayList<>(); + private final asi bounds = new asi(); + private final asi clickBounds = new asi(); + private final asi boundsBind = new asi(); + private boolean binding = (boolean)(((0)) != 0); + private final ct animation; + private float lastClipTop = -1.0F; + private float lastClipBottom = -1.0F; + private final zw autoScroll = new zw(); + private final ct hoverHeader = asa.spring(); + private final ct hoverBind = asa.spring(); + private final ct togglePulse = ct.layout(ob.SETTLED, 0.0F); + private boolean lastEnabled; + private boolean pulsePrimed; + private int cachedLayoutFrame = -1; + private float cachedHeight; + private boolean cachedHasSettings; + boolean animated = (boolean)(((0)) != 0); + + private static arq RADIUS_8() { + return asj.all(oc.PANEL); + } + + private static arq RADIUS_8_TOP() { + return asj.top(oc.PANEL); + } + + private static arq RADIUS_6() { + return asj.all(oc.CARD); + } + + private static arq RADIUS_4() { + return asj.all(oc.CONTROL); + } + + public List getMenuSettings() { + return this.settings; + } + + public aab(rm var1) { + this.module = var1; + this.animation = ct.layout(ob.MEDIUM, var1.isEnabled() ? 1.0F : 0.0F); + this.lastEnabled = var1.isEnabled(); + + for (ro var3 : var1.getSettings()) { + if (var3 instanceof sm var4) { + this.settings.add(new abo(var4)); + } else if (var3 instanceof rt var5) { + this.settings.add(new abd(var5)); + } else if (var3 instanceof se var6) { + this.settings.add(new abk(var6)); + } else if (var3 instanceof sq var7) { + this.settings.add(new abp(var7)); + } else if (var3 instanceof sg var8) { + this.settings.add(new abl(var8)); + } else if (var3 instanceof si var9) { + this.settings.add(new abn(var9)); + } else if (var3 instanceof ru var10) { + this.settings.add(new abe(var10)); + } else if (var3 instanceof rx var11) { + this.settings.add(new abg(var11)); + } else if (var3 instanceof rv var12) { + this.settings.add(new abf(var12)); + } else if (var3 instanceof sb var13) { + this.settings.add(new abi(var13)); + } else if (var3 instanceof sc var14) { + this.settings.add(new abj(var14)); + } else if (var3 instanceof sk var15) { + this.settings.add(new abm(var15)); + } else if (var3 instanceof rz var16) { + this.settings.add(new abh(var16)); + } + } + } + + private float updateTogglePulse() { + int var1 = 0; + int var2 = 11143600; + + while (true) { + switch (var2) { + case -990648879: + return this.togglePulse.update(); + case 11143600: + default: + var1 = (this.module.isEnabled()) ? 1 : 0; + if (!this.pulsePrimed) { + var2 = 922706576; + } else { + var2 = 1617787793; + } + break; + case 922706576: + this.pulsePrimed = (boolean)(((1)) != 0); + this.lastEnabled = (boolean)((var1) != 0); + return 0.0F; + case 1351074363: + this.lastEnabled = (boolean)((var1) != 0); + this.togglePulse.setRole(ob.SETTLED); + this.togglePulse.jumpTo(1.0F); + this.togglePulse.animateTo(0.0F); + var2 = -990648879; + break; + case 1617787793: + if (var1 != this.lastEnabled) { + var2 = 1351074363; + } else { + var2 = -990648879; + } + } + } + } + + private void renderTogglePulse(asq var1, mv var2, float var3, float var4, float var5, float var6, float var7, float var8) { + float var9 = 0.6F + 0.4F * Math.min(mx.current().activeGlowIntensity(), 1.0F); + float var10 = 5.0F * (1.0F - var8); + asu var11 = var2.getColor(); + arq var12 = asj.outer(oc.PANEL, var10); + atb.drawShadow( + var1.pose(), var3 - var10, var4 - var10, var5 + var10 * 2.0F, var6 + var10 * 2.0F, 10.0F, var12, var11.getRGBWithAlpha(var7 * var8 * 0.35F * var9) + ); + atb.drawRoundedBorder( + var1.pose(), var3 - var10, var4 - var10, var5 + var10 * 2.0F, var6 + var10 * 2.0F, 1.2F, var12, var11.getRGBWithAlpha(var7 * var8 * 0.55F * var9) + ); + } + + @Override + public void render(asq var1, float var2, float var3, ge var4, float var5, float var6, float var7, float var8, int var9, float var10, float var11) { + this.lastClipTop = var10; + this.lastClipBottom = var11; + this.animation.animateTo(this.module.isEnabled() ? 1.0F : 0.0F); + this.animation.update(); + float var12 = this.updateTogglePulse(); + float var13 = cardHeaderHeight(); + mv var14 = bz.getInstance().getThemeManager().getCurrentTheme(); + int var15 = var14.getForegroundColor().getRGBWithAlpha(var8); + boolean var16 = this.hasSettings(); + float var17 = this.getHeight(); + int var18 = var14.getForegroundDark().getRGBWithAlpha(var8); + float var19 = this.getToyHover(); + float var20 = 172.0F / var7; + float var21 = 1.0F + 0.12F * var20 * var19; + float var22 = var6 + (var16 ? var17 : var13) / 2.0F; + float var23 = var10 + 10.0F; + float var24 = var22 + (var23 - var22) / var21; + float var25 = var16 ? Math.max(var6, Math.min(var24, var6 + var17 - var13 - 4.0F)) : var6; + float var26 = Mth.clamp((var24 - var25) / Math.max(var13, 1.0F), 0.0F, 1.0F); + float var27 = var16 ? Mth.clamp((var25 - var6) / 10.0F, 0.0F, 1.0F) : 0.0F; + boolean var28 = var27 > 0.002F; + this.clickBounds.set(var5, var25, var7, var13); + this.bounds.set(var5, var6, var7, var16 ? var17 : var13); + boolean var29 = this.bounds.contains(this.scaleMouseX(var2, this.bounds), this.scaleMouseY(var3, this.bounds)); + if (var3 < var10 || var3 > var11) { + var29 = false; + } + + yc var30 = aqg.mc.gui.screen() instanceof yc var31 ? var31 : null; + boolean var89 = var30 != null && !var30.getPopupSettings().isEmpty(); + boolean var90 = false; + if (var89) { + for (aax var34 : var30.getPopupSettings()) { + if (var34.containsCursor(var2, var3) && var34.getAnimationScale().value() > 0.0F) { + var90 = true; + break; + } + } + } + + if (var90) { + var29 = false; + this.autoScroll.cancel(); + } + + if (var30 != null) { + this.autoScroll.update(var30, var29, var19, this.autoScrollY(var6), this.getHeight(), var7, var10, var11); + } + + if (var89) { + boolean var91 = false; + + for (aax var35 : var30.getPopupSettings()) { + if (var35 instanceof abq var36 && var36.getAnimationScale().value() > 0.0F) { + for (int var37 = 0; var37 < this.settings.size(); var37++) { + if (this.settings.get(var37) instanceof abg var38 && var38.getSetting() == var36.getSetting()) { + var91 = true; + break; + } + } + } + + if (var35 instanceof abs var98 && var98.getAnimationScale().value() > 0.0F) { + for (int var102 = 0; var102 < this.settings.size(); var102++) { + if (this.settings.get(var102) instanceof abi var106 && var106.getSetting() == var98.getSetting()) { + var91 = true; + break; + } + } + } + } + + if (var90) { + var29 = false; + } + + if (var91) { + if (!var90 && !this.bounds.contains(this.scaleMouseX(var2, this.bounds), this.scaleMouseY(var3, this.bounds))) { + for (aax var96 : var30.getPopupSettings()) { + if (var96 instanceof abq var99 && var99.getAnimationScale().value() > 0.0F) { + for (int var103 = 0; var103 < this.settings.size(); var103++) { + if (this.settings.get(var103) instanceof abg var107 && var107.getSetting() == var99.getSetting()) { + var99.getAnimationScale().animateTo(0.0F); + break; + } + } + } + + if (var96 instanceof abs var100 && var100.getAnimationScale().value() > 0.0F) { + for (int var104 = 0; var104 < this.settings.size(); var104++) { + if (this.settings.get(var104) instanceof abi var108 && var108.getSetting() == var100.getSetting()) { + var100.getAnimationScale().animateTo(0.0F); + break; + } + } + } + } + } else { + var29 = true; + } + } + } + + this.hoverAnimation.animateTo(var29 ? 1.0F : 0.0F); + float var92 = this.hoverAnimation.update(); + if (!(var6 > var11) && !(var6 + var17 < var10)) { + boolean var95 = var90; + boolean var97 = asa.push(var1, var5, var6, var7, var16 ? var17 : var13, var92, asa.cardAmount(var7)); + float var101 = 1.0F; + var5 += var101; + var6 += var101; + var25 += var101; + var7 -= var101 * 2.0F; + var13 -= var101 * 2.0F; + var17 -= var101 * 2.0F; + float var105 = var16 ? var17 : var13; + float var109 = this.animation.value(); + zv.restShadow(var1, var5, var6, var7, var105, var8); + zv.activeShadow(var1, var5, var6, var7, var105, var8, var109, var14.getColor()); + zv.body(var1, var5, var6, var7, var105, var13, var16, var15, var18); + zv.border(var1, var5, var6, var7, var105, var14, var8); + zv.activeBorder(var1, var5, var6, var7, var105, var8, var109, var14.getColor()); + if (var12 > 0.01F) { + this.renderTogglePulse(var1, var14, var5, var6, var7, var16 ? var17 : var13, var8, var12); + } + + arq var113 = RADIUS_8(); + if (var28) { + float var40 = asj.of(oc.PANEL) * var27; + var113 = new arq(asj.of(oc.PANEL), asj.of(oc.PANEL), var40, var40); + } + + float var114 = cardSettingGap(); + float var41 = var6 + var13 + var114; + int var42 = asu.getRGBWithAlpha(asu.mixRGB(var14.getWhiteGray().getRGB(), var14.getGrayLight().getRGB(), this.animation.value(), 1.0F), var8); + int var43 = asu.getRGBWithAlpha(asu.mixRGB(var14.getGray().getRGB(), var14.getColor().getRGB(), this.animation.value(), 1.0F), var8); + int var44 = asu.getRGBWithAlpha(asu.mixRGB(var14.getGrayLight().getRGB(), var14.getWhite().getRGB(), this.animation.value(), 1.0F), var8); + + for (aay var46 : this.settings) { + if (var46.isVisible()) { + float var47 = var46.getHeight(); + if (var41 <= var11 && var41 + var47 >= var10) { + float var48 = (float)this.scaleMouseX(var2, this.bounds); + float var49 = (float)this.scaleMouseY(var3, this.bounds); + if (var3 < var10 || var3 > var11 || var95 || this.clickBounds.contains(var48, var49)) { + var48 = -1000.0F; + var49 = -1000.0F; + } + + var46.render(var1, var48, var49, var5, var41, var7, var8, this.animation.value(), var43, var44, var42, var14); + } + + var41 += var47 + cardSettingGap(); + } + } + + if (var28) { + gt.flushBatch(); + var1.pushClipEdges(var5, var10, var5 + var7, var11, ars.edgeFade(), 0.0F, 0.0F, 0.0F); + setDetachedChromeFade(var26); + float var116 = var5 + 1.0F; + float var118 = var7 - 2.0F; + atb.drawShadow(var1.pose(), var116, var25, var118, var13, 12.0F, var113, asu.getRGBWithAlpha(asu.BLACK.getRGB(), var8 * 0.15F * var27)); + float var119 = arx.classicFade(); + if (var119 > 0.0F) { + var1.drawRoundedRect(var116, var25, var118, var13, var113, var14.getForegroundDark().withAlpha(255).getRGBWithAlpha(var8 * var119 * var27)); + } + + float var121 = var119 + 0.45F * (1.0F - var119); + var1.drawSurface(aso.POPUP, var116, var25, var118, var13, var113, var14.getForegroundDark().getRGBWithAlpha(var8 * var121 * var27)); + if (var119 > 0.0F) { + var1.drawSurface(aso.CARD, var116, var25, var118, var13, var113, asu.getRGBWithAlpha(var15, var119 * var27)); + } + + atb.drawRoundedBorder(var1.pose(), var116, var25, var118, var13, pk.borderFine(), var113, var14.getForegroundStroke().getRGBWithAlpha(var8 * var27)); + } + + double var117 = this.scaleMouseX(var2, this.bounds); + double var120 = this.scaleMouseY(var3, this.bounds); + boolean var122 = asa.hits(var117, var120, this.boundsBind, this.hoverBind, 0.05F); + boolean var50 = !var122 && asa.hits(var117, var120, this.clickBounds, this.hoverHeader, asa.controlAmount(var7)); + if (var3 < var10 || var3 > var11 || var95) { + var50 = false; + var122 = false; + } + + this.hoverHeader.animateTo(var50 ? 1.0F : 0.0F); + float var51 = this.hoverHeader.update(); + this.hoverBind.animateTo(var122 ? 1.0F : 0.0F); + float var52 = this.hoverBind.update(); + asa.plateRow(var1, var5, var25, var7, var13, asa.plateColor(var14), var8, var51); + boolean var53 = asa.push(var1, var5, var25, var7, var13, var51, asa.controlAmount(var7)); + var44 = asa.liftText(var44, var14, var51); + float var54 = asj.contentInset(oc.PANEL, 8.0F, var7, var13); + float var55 = var54 + 10.0F; + var1.drawText(gl.ICONS.getFont(5.5F), rk.glyph(this.module), var5 + var54 + asa.iconShift(var51), var25 + 8.0F, var43); + int var56 = this.countModifiedSettings(); + float var57 = var56 > 0 ? 7.5F : 0.0F; + float var58 = Math.max(var7 - var55 - 33.0F - var57, 36.0F); + float var59 = Math.min(var4.width(this.module.getName()), var58); + var1.drawScrollingText(var4, this.module.getName(), var5 + var55, var25 + 8.0F, var58, var44, true); + float var60 = var5 + var55 + var59 + 4.0F; + float var61 = var25 + var13 / 2.0F - 1.75F; + if (var56 > 0) { + var1.drawSurface(aso.ACCENT, var60, var61, 3.5F, 3.5F, RADIUS_MODIFIED_DOT, var14.getColor().getRGBWithAlpha(var8)); + } + + if (var51 > 0.5F) { + boolean var62 = var56 > 0 && aqj.isHovered(var117, var120, var60 - 3.0F, var61 - 3.0F, 9.5, 9.5); + if (var62) { + if (var56 != this.cachedModifiedCount) { + this.cachedModifiedCount = var56; + this.modifiedTooltip = var56 + " changed from default"; + } + + ass.tooltip(this, this.modifiedTooltip, var60, var61, 3.5F, 3.5F, asr.BELOW); + } else { + ass.tooltip( + this, + this.module.getDescription(), + this.clickBounds.x(), + this.clickBounds.y(), + this.clickBounds.width(), + this.clickBounds.height(), + asr.BELOW + ); + } + } + + asa.pop(var1, var53); + float var123 = asj.contentInset(oc.PANEL, 5.0F, var7, var13); + float var63 = 5.0F; + float var64 = var13 - var63 * 2.0F; + float var65 = var25 + var63; + ge var66 = gl.SEMIBOLD.getFont(6.5F); + String var67 = "n/a"; + boolean var68 = this.module.getKeyCode() != -1 && this.module.getKeyCode() != 0; + if (var68) { + var66 = gl.ROUND_BOLD.getFont(6.5F); + } + + if (this.isBinding()) { + var67 = "..."; + } else if (var68) { + try { + String var69 = aqz.getKeyName(this.module.getKeyCode()); + if (var69 != null && !var69.isBlank()) { + var67 = var69.toUpperCase(); + } + } catch (Exception var82) { + } + } + + float var124 = var5 + var55 + var59 + var57 + 8.0F; + float var70 = var5 + var7 - var123 - var124; + float var71 = var66.width(var67); + float var72; + if (var68) { + var72 = Math.max(20.0F, var71 + 12.0F); + if (var72 > var70) { + var67 = this.shortenKeyName(var67); + var71 = var66.width(var67); + var72 = Math.max(20.0F, var71 + 12.0F); + } + } else { + var72 = var71 + 12.0F; + } + + if (var72 > var7 / 2.0F) { + var72 = var7 / 2.0F; + } + + float var73 = var5 + var7 - var72 - var123; + this.boundsBind.set(var73, var25, var72, var13); + if (this.isBinding() || var52 > 0.5F) { + ass.tooltip( + this.boundsBind, + this.isBinding() + ? "Press a key, Esc or Del clears the bind" + : "Click to bind this module to a key", + var73, + var25, + var72, + var13, + asr.BELOW, + !this.isBinding() + ); + } + + float var74 = this.isBinding() ? 1.0F : 0.0F; + boolean var75 = asa.push(var1, var73, var65, var72, var64, var52, 0.05F); + asa.plateControl(var1, var73, var65, var72, var64, asa.plateColor(var14), var8, var52); + if (var68) { + int var76 = asu.mixRGB(var14.getColor().getRGB(), asu.BLACK.getRGB(), 0.55F, var8); + int var77 = asu.mixRGB(var14.getColor().getRGB(), asu.BLACK.getRGB(), 0.75F, var8); + int var78 = asu.mixRGB(var14.getColor().getRGB(), asu.WHITE.getRGB(), 0.2F, 0.6F * var8); + if (this.isBinding()) { + var76 = asu.mixRGB(var14.getSecondColor().getRGB(), asu.BLACK.getRGB(), 0.3F, var8); + var77 = asu.mixRGB(var14.getSecondColor().getRGB(), asu.BLACK.getRGB(), 0.5F, var8); + } + + atb.drawShadow(var1.pose(), var73, var65 + 1.5F, var72, var64 - 1.5F, 4.0F, RADIUS_4(), asu.getRGBWithAlpha(var77, var8 * 0.5F)); + var1.drawSurface(aso.CONTROL, var73, var65 + 1.5F, var72, var64 - 1.5F, RADIUS_4(), var77); + var1.drawSurface(aso.CONTROL, var73, var65 + var74, var72, var64 - 1.5F, RADIUS_4(), var76); + atb.drawRoundedBorder(var1.pose(), var73, var65 + var74, var72, var64 - 1.5F, pk.borderThickness(), RADIUS_4(), var78); + float var79 = var65 + var74 + (var64 - 1.5F - var66.height()) / 2.0F + 0.5F; + float var80 = var72 - 12.0F; + int var81 = asu.getRGBWithAlpha(asu.WHITE.getRGB(), var8); + if (var66.width(var67) <= var80) { + var1.drawText(var66, var67, var73 + 6.0F + (var80 - var66.width(var67)) / 2.0F, var79, var81); + } else { + var1.pushClipBounds(var73 + 2.0F, var65, var73 + var72 - 2.0F, var65 + var64); + var1.drawScrollingTextCentered(var66, var67, var73 + 6.0F, var79, var80, var81); + var1.popClip(); + } + } else { + float var125 = this.isBinding() ? 1.0F : 0.22F + 0.78F * var52; + float var126 = var8 * var125; + var1.drawSurface(aso.CONTROL, var73, var65, var72, var64, RADIUS_4(), var14.getWhite().getRGBWithAlpha(0.06F * var126)); + float var127 = var73 + (var72 - var71) / 2.0F; + float var128 = var65 + (var64 - var66.height()) / 2.0F + 0.5F; + int var129 = var14.getGrayLight().getRGBWithAlpha(var126); + if (this.isBinding()) { + var129 = var14.getColor().getRGBWithAlpha(var8); + if (System.currentTimeMillis() % 1000L > 500L) { + var129 = asu.getRGBWithAlpha(var129, 0.4F); + } + } + + var1.drawText(var66, var67, var127, var128, var129); + } + + asa.pop(var1, var75); + if (var28) { + restoreChromeFade(); + var1.popClip(); + } + + asa.pop(var1, var97); + } + } + + @Override + public float getHeight() { + this.refreshLayoutCache(); + return this.cachedHeight; + } + + public boolean hasSettings() { + this.refreshLayoutCache(); + return this.cachedHasSettings; + } + + private boolean headerHit(double var1, double var3) { + return asa.hitsControl(var1, var3, this.clickBounds, this.hoverHeader); + } + + private boolean bindHit(double var1, double var3) { + return asa.hits(var1, var3, this.boundsBind, this.hoverBind, 0.05F); + } + + private int countModifiedSettings() { + List var1 = null; + int var2 = 0; + int var3 = 0; + int var4 = 2042194866; + + while (true) { + switch (var4) { + case -2091011339: + if (((ro)var1.get(var3)).isModified()) { + var4 = 1121367336; + } else { + var4 = -368197078; + } + break; + case -368197078: + var3++; + var4 = 1157832333; + break; + case -39588637: + return var2; + case 1121367336: + var2++; + var4 = -368197078; + break; + case 1157832333: + if (var3 < var1.size()) { + var4 = -2091011339; + } else { + var4 = -39588637; + } + break; + case 2042194866: + default: + var1 = this.module.getSettings(); + var2 = 0; + var3 = 0; + var4 = 1157832333; + } + } + } + + private static void setDetachedChromeFade(float var0) { + float var1 = atb.maskFadeTop() * var0; + atb.overrideMaskFadeTop(var1); + gt.flushBatch(); + gt.setMaskFadeTop(var1); + } + + private static void restoreChromeFade() { + atb.resumeMask(); + gt.flushBatch(); + gt.setMaskFadeTop(atb.maskFadeTop()); + } + + private void refreshLayoutCache() { + int var1 = zu.layoutFrame(); + if (this.cachedLayoutFrame != var1) { + this.cachedLayoutFrame = var1; + float var2 = 0.0F; + int var3 = 0; + + for (int var4 = 0; var4 < this.settings.size(); var4++) { + aay var5 = this.settings.get(var4); + if (var5.isVisible()) { + var3 = 1; + var2 += var5.getHeight() + cardSettingGap(); + } + } + + this.cachedHasSettings = (boolean)((var3) != 0); + float var6 = cardHeaderHeight(); + this.cachedHeight = var3 != 0 ? var6 + var2 + cardSettingGap() : var6; + } + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + if (this.lastClipTop == -1.0F || !(var3 < this.lastClipTop) && !(var3 > this.lastClipBottom)) { + double var6 = this.scaleMouseX(var1, this.bounds); + double var8 = this.scaleMouseY(var3, this.bounds); + if (this.headerHit(var6, var8)) { + if (var5.getButtonIndex() > (-1264374296 ^ 1264374298) + ((-1264374296 & 1264374298) << 1) && this.binding) { + this.binding = (boolean)(((0)) != 0); + this.module.setKeyCode(var5.getButtonIndex()); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + } + + if (var5 == apf.LEFT) { + if (this.bindHit(var6, var8)) { + this.binding = (boolean)(((!this.binding + ? 1: (-1820768092 ^ 1820768092) + ((-1820768092 & 1820768092) << 1))) != 0); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + } else { + this.module.toggle(); + } + } else if (var5 == apf.MIDDLE) { + this.binding = (boolean)(((!this.binding + ? 1: (2089445601 ^ -2089445601) + ((2089445601 & -2089445601) << 1))) != 0); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + } + } else { + for (aay var11 : this.settings) { + if (var11.isVisible()) { + var11.onMouseClicked(var6, var8, var5); + } + } + } + } + } + + @Override + public boolean charTyped(char var1, int var2) { + int var3 = 0; + Iterator var4 = null; + aay var5 = null; + int var6 = 1026694905; + + while (true) { + switch (var6) { + case -1263232525: + var3 = 1; + var6 = 742964974; + break; + case 742964974: + var6 = 2067952287; + break; + case 911933547: + if (var5.charTyped(var1, var2)) { + var6 = -1263232525; + } else { + var6 = 742964974; + } + break; + case 1026694905: + default: + var3 = 0; + var4 = this.settings.iterator(); + var6 = 2067952287; + break; + case 1269691689: + return (boolean)((var3) != 0); + case 1320720030: + var5 = (aay)var4.next(); + if (var5.isVisible()) { + var6 = 911933547; + } else { + var6 = 742964974; + } + break; + case 2067952287: + if (var4.hasNext()) { + var6 = 1320720030; + } else { + var6 = 1269691689; + } + } + } + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = 0; + Iterator var5 = null; + aay var6 = null; + int var7 = -132873489; + + while (true) { + switch (var7) { + case -1795816596: + bz.getInstance().getSoundManager().playClick(); + var7 = 2044999510; + break; + case -1435884476: + if (var1 == (-844569720 | 844569979) + (-844569720 & 844569979)) { + var7 = 2046376402; + } else { + var7 = 1260267049; + } + break; + case -1431670859: + return (boolean)((var4) != 0); + case -609920998: + var6 = (aay)var5.next(); + if (!var6.isVisible()) { + var7 = 1127409387; + } else { + var7 = 1308217450; + } + break; + case -341096055: + if (var1 != (-1639221358 ^ 1639221619) + ((-1639221358 & 1639221619) << 1)) { + var7 = -1435884476; + } else { + var7 = 2046376402; + } + break; + case -132873489: + default: + if (this.binding) { + var7 = 1678175972; + } else { + var7 = 1744026296; + } + break; + case 452780386: + var7 = 1959464820; + break; + case 959238838: + var4 = 1; + var7 = 452780386; + break; + case 1127409387: + var7 = 1959464820; + break; + case 1260267049: + this.module.setKeyCode(var1); + var7 = 1792159114; + break; + case 1308217450: + if (var6.keyPressed(var1, var2, var3)) { + var7 = 959238838; + } else { + var7 = 452780386; + } + break; + case 1678175972: + if (var1 != (839891739 | -839891483) + (839891739 & -839891483)) { + var7 = -341096055; + } else { + var7 = 2046376402; + } + break; + case 1744026296: + var4 = 0; + var5 = this.settings.iterator(); + var7 = 1959464820; + break; + case 1792159114: + this.binding = (boolean)(((0)) != 0); + if (bz.getInstance().getSoundManager() != null) { + var7 = -1795816596; + } else { + var7 = 2044999510; + } + break; + case 1959464820: + if (var5.hasNext()) { + var7 = -609920998; + } else { + var7 = -1431670859; + } + break; + case 2044999510: + return (boolean)(((1)) != 0); + case 2046376402: + this.module.setKeyCode((-1923056974 | 1923056973) + (-1923056974 & 1923056973)); + var7 = 1792159114; + } + } + } + + @Override + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + int var9 = 0; + double var10 = 0.0; + double var12 = 0.0; + Iterator var14 = null; + aay var15 = null; + int var16 = 583679384; + + while (true) { + switch (var16) { + case -1765332150: + var16 = 782315739; + break; + case -1193439971: + var9 = 1; + var16 = 970052391; + break; + case 230937387: + return (boolean)((var9) != 0); + case 583679384: + default: + var9 = 0; + var10 = this.scaleMouseX(var1, this.bounds); + var12 = this.scaleMouseY(var3, this.bounds); + var14 = this.settings.iterator(); + var16 = 782315739; + break; + case 782315739: + if (var14.hasNext()) { + var16 = 1591649069; + } else { + var16 = 230937387; + } + break; + case 970052391: + var16 = 782315739; + break; + case 1591649069: + var15 = (aay)var14.next(); + if (!var15.isVisible()) { + var16 = -1765332150; + } else { + var16 = 1938778042; + } + break; + case 1938778042: + if (var15.mouseScrolled(var10, var12, var5, var7)) { + var16 = -1193439971; + } else { + var16 = 970052391; + } + } + } + } + + @Override + public rl getCategory() { + return this.module.getCategory(); + } + + @Override + public String getName() { + return this.module.getName(); + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + Iterator var10 = null; + aay var11 = null; + int var12 = 579686358; + + while (true) { + switch (var12) { + case -2053346396: + var11 = (aay)var10.next(); + if (!var11.isVisible()) { + var12 = -1297158904; + } else { + var12 = -1463261932; + } + break; + case -1463261932: + var11.onMouseReleased(var6, var8, var5); + var12 = 1097277076; + break; + case -1297158904: + var12 = 1097277076; + break; + case -135208769: + return; + case 579686358: + default: + var6 = this.scaleMouseX(var1, this.bounds); + var8 = this.scaleMouseY(var3, this.bounds); + var10 = this.settings.iterator(); + var12 = 1097277076; + break; + case 1097277076: + if (var10.hasNext()) { + var12 = -2053346396; + } else { + var12 = -135208769; + } + } + } + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + double var10 = 0.0; + double var12 = 0.0; + Iterator var14 = null; + aay var15 = null; + int var16 = -1093184180; + + while (true) { + switch (var16) { + case -2097965558: + var15 = (aay)var14.next(); + if (!var15.isVisible()) { + var16 = -550079201; + } else { + var16 = 1413857112; + } + break; + case -1093184180: + default: + if (this.lastClipTop != -1.0F) { + var16 = 1843915272; + } else { + var16 = 136910964; + } + break; + case -550079201: + var16 = 990688887; + break; + case 109878059: + return; + case 136910964: + var10 = this.scaleMouseX(var1, this.bounds); + var12 = this.scaleMouseY(var3, this.bounds); + var14 = this.settings.iterator(); + var16 = 990688887; + break; + case 320047154: + if (var3 > this.lastClipBottom) { + var16 = 1007545855; + } else { + var16 = 136910964; + } + break; + case 990688887: + if (var14.hasNext()) { + var16 = -2097965558; + } else { + var16 = 109878059; + } + break; + case 1007545855: + return; + case 1413857112: + var15.onMouseDragged(var10, var12, var5, var6, var8); + var16 = 990688887; + break; + case 1843915272: + if (!(var3 < this.lastClipTop)) { + var16 = 320047154; + } else { + var16 = 1007545855; + } + } + } + } + + private String shortenKeyName(String var1) { + int var2 = 533326076; + + while (true) { + switch (var2) { + case -1666617726: + var1 = var1.toUpperCase(); + var1 = var1.replace( + "RIGHT_", + "R" + ); + var1 = var1.replace( + "LEFT_", + "L" + ); + var1 = var1.replace( + "CONTROL", + "CTRL" + ); + var1 = var1.replace( + "SHIFT", + "SHIFT" + ); + var1 = var1.replace( + "ALT", + "ALT" + ); + var1 = var1.replace( + "NUMPAD_", + "NUM" + ); + var1 = var1.replace( + "MOUSE_BUTTON_", + "M" + ); + var1 = var1.replace( + "BUTTON", + "BTN" + ); + var1 = var1.replace( + "ESCAPE", + "ESC" + ); + var1 = var1.replace( + "ENTER", + "ENT" + ); + var1 = var1.replace( + "DELETE", + "DEL" + ); + var1 = var1.replace( + "INSERT", + "INS" + ); + var1 = var1.replace( + "PAGE_UP", + "PGUP" + ); + return var1.replace( + "PAGE_DOWN", + "PGDN" + ); + case -968037733: + return ""; + case 533326076: + } + + if (var1 == null) { + var2 = -968037733; + } else { + var2 = -1666617726; + } + } + } + + public rm getModule() { + return this.module; + } + + public boolean isBinding() { + return this.binding; + } +} diff --git a/src/main/java/defpackage/aac.java b/src/main/java/defpackage/aac.java new file mode 100644 index 0000000..a01136c --- /dev/null +++ b/src/main/java/defpackage/aac.java @@ -0,0 +1,544 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class aac extends zu { + private static final asu SUCCESS = new asu( + 88, + 194, + 125, + (-654581163 | 654581418) + (-654581163 & 654581418) + ); + private static final asu FAILURE = new asu( + 226, + 96, + 96, + (1767951020 ^ -1767950765) + ((1767951020 & -1767950765) << 1) + ); + private static final float SUB_LINE_HEIGHT = 13.0F; + private static final float HEADER_BASE_HEIGHT = 34.0F; + private static final float HEADER_BASE_INSET = 8.0F; + private static final float TITLE_ICON_GAP = 13.0F; + private static final float TAG_HEIGHT = 10.0F; + private static final float TAG_PLATE_ALPHA = 0.9F; + private static final float TAG_TINT_ALPHA = 0.22F; + private static final float HEADER_TITLE_TOP = 6.0F; + private static final float SUB_LINE_BOTTOM_PAD = 6.0F; + private static final float TAG_TEXT_BASELINE_NUDGE = 0.5F; + private static final String HEADER_TOOLTIP_MINE = "Config you shared, click for its actions"; + private static final String HEADER_TOOLTIP_COMMUNITY = "Config from the community pool, click to download it"; + private final amu entry; + private final List settings = new ArrayList<>(); + private final asi bounds = new asi(); + private final asi clickBounds = new asi(); + private final ct animation = ct.layout(ob.SETTLED, 0.0F); + private final ct hoverHeader = asa.spring(); + private final zw autoScroll = new zw(); + private boolean selected; + private String message; + private boolean messageError; + private long messageAt; + private boolean busy; + + public aac(amu var1) { + this.entry = var1; + this.settings + .add( + new abf( + new rv( + "Download", + () -> { + int var2 = 521888805; + + while (true) { + switch (var2) { + case -245255193: + return; + case 216000074: + bz.getInstance().getSoundManager().playTab(); + var2 = -245255193; + break; + case 521888805: + default: + this.busy = (boolean)(((1)) != 0); + amv.download( + var1, + var1xx -> { + this.busy = (boolean)(((0)) != 0); + this.showMessage( + var1xx == null + ? "Saved to your configs" + : var1xx, + (boolean)(((var1xx != null + ? 1: (-121566499 | 121566499) + (-121566499 & 121566499)) + ) != 0)); + } + ); + if (bz.getInstance().getSoundManager() != null) { + var2 = 216000074; + } else { + var2 = -245255193; + } + } + } + } + ) + .description( + "Save this config to your profiles, then load it from the list" + ) + ) + ); + if (var1.mine()) { + this.settings + .add( + new abf( + new rv( + "Unshare", + () -> { + this.busy = (boolean)(((1)) != 0); + amv.unpublish( + var1.id(), + var1xx -> { + this.busy = (boolean)(((0)) != 0); + this.showMessage( + var1xx == null ? "Removed" : var1xx, + (boolean)(((var1xx != null + ? 1: (-1987913426 ^ 1987913426) + ((-1987913426 & 1987913426) << 1)) + ) != 0)); + } + ); + } + ) + .description( + "Remove this config from the community pool" + ) + ) + ); + } + } + + private void showMessage(String var1, boolean var2) { + this.message = var1; + this.messageError = var2; + this.messageAt = System.currentTimeMillis(); + } + + private String subLine() { + String var1 = null; + String var3 = null; + String var4 = null; + int var2 = -669346500; + + while (true) { + switch (var2) { + case -1690638733: + if (this.entry.downloads() == (-1003516288 ^ 1003516289) + ((-1003516288 & 1003516289) << 1)) { + var2 = 2124391518; + } else { + var2 = -934038619; + } + break; + case -1333834215: + return this.message; + case -934038619: + var3 = this.entry.downloads() + " downloads"; + var2 = 657113960; + break; + case -798626522: + var4 = "shared by you"; + var2 = 2141071231; + break; + case -669346500: + default: + if (this.message != null) { + var2 = 683062809; + } else { + var2 = -1690638733; + } + break; + case 657113960: + var1 = var3; + if (this.entry.mine()) { + var2 = -798626522; + } else { + var2 = 980535672; + } + break; + case 683062809: + if (System.currentTimeMillis() - this.messageAt + < (-5597645678679922649L | 5597645678679927649L) + (-5597645678679922649L & 5597645678679927649L)) { + var2 = -1333834215; + } else { + var2 = -1690638733; + } + break; + case 980535672: + var4 = "by " + this.entry.author(); + var2 = 2141071231; + break; + case 2124391518: + var3 = "1 download"; + var2 = 657113960; + break; + case 2141071231: + return var4 + " - " + var1; + } + } + } + + private asu subColor(mv var1, float var2) { + asu var4 = null; + int var3 = -1376298789; + + while (true) { + switch (var3) { + case -1617879208: + if (System.currentTimeMillis() - this.messageAt + < (549036908265923969L ^ -549036908265918969L) + ((549036908265923969L & -549036908265918969L) << 1)) { + var3 = 1002098243; + } else { + var3 = 728808044; + } + break; + case -1376298789: + default: + if (this.message != null) { + var3 = -1617879208; + } else { + var3 = 728808044; + } + break; + case -1271766484: + var4 = SUCCESS; + var3 = -396014564; + break; + case -1140698608: + var4 = FAILURE; + var3 = -396014564; + break; + case -396014564: + return var4.mulAlpha(var2); + case 728808044: + return var1.getGrayLight().mulAlpha(var2 * 0.85F); + case 1002098243: + if (this.messageError) { + var3 = -1140698608; + } else { + var3 = -1271766484; + } + } + } + } + + @Override + public void render(asq var1, float var2, float var3, ge var4, float var5, float var6, float var7, float var8, int var9, float var10, float var11) { + this.animation.animateTo(this.selected ? 1.0F : 0.0F); + this.animation.update(); + float var12 = cardHeaderHeight(34.0F); + mv var13 = bz.getInstance().getThemeManager().getCurrentTheme(); + asu var14 = var13.getForegroundColor().mix(var13.getColor(), 0.09F).mulAlpha(var8); + asu var15 = var13.getForegroundDark().mulAlpha(var8); + float var16 = this.getHeight(); + this.clickBounds.set(var5, var6, var7, var12); + this.bounds.set(var5, var6, var7, this.selected ? var16 : var12); + int var17 = (this.bounds.contains(this.scaleMouseX(var2, this.bounds), this.scaleMouseY(var3, this.bounds))) ? 1 : 0; + if (var3 < var10 || var3 > var11) { + var17 = 0; + } + + this.hoverAnimation.animateTo(var17 != 0 ? 1.0F : 0.0F); + float var18 = this.hoverAnimation.update(); + if (bz.getInstance().getMenuScreen() != null) { + this.autoScroll.update(bz.getInstance().getMenuScreen(), (boolean)((var17) != 0), this.getToyHover(), this.autoScrollY(var6), var16, var7, var10, var11); + } + + if (!(var6 > var11) && !(var6 + var16 < var10)) { + boolean var19 = asa.push(var1, var5, var6, var7, this.selected ? var16 : var12, var18, asa.cardAmount(var7)); + int var20 = (asa.hits( + this.scaleMouseX(var2, this.bounds), this.scaleMouseY(var3, this.bounds), this.clickBounds, this.hoverHeader, asa.controlAmount(var7) + )) ? 1 : 0; + if (var3 < var10 || var3 > var11) { + var20 = 0; + } + + this.hoverHeader.animateTo(var20 != 0 ? 1.0F : 0.0F); + float var21 = this.hoverHeader.update(); + float var22 = 1.0F; + var5 += var22; + var6 += var22; + var7 -= var22 * 2.0F; + var12 -= var22 * 2.0F; + var16 -= var22 * 2.0F; + float var23 = this.selected ? var16 : var12; + float var24 = this.animation.value(); + zv.restShadow(var1, var5, var6, var7, var23, var8); + zv.activeShadow(var1, var5, var6, var7, var23, var8, var24, var13.getColor()); + zv.body(var1, var5, var6, var7, var23, var12, this.selected, var14.getRGB(), var15.getRGB()); + asa.plateRow(var1, var5, var6, var7, var12, asa.plateColor(var13), var8, var21); + boolean var25 = asa.push(var1, var5, var6, var7, var12, var21, asa.controlAmount(var7)); + asu var26 = var13.getColor().mulAlpha(var8); + asu var27 = var13.getGrayLight().mix(var13.getWhite(), var24).mulAlpha(var8); + var27 = asa.liftText(var27, var13, var21); + float var28 = asj.contentInset(oc.PANEL, 8.0F, var7, var12); + ge var29 = gl.ICONS.getFont(6.0F); + float var30 = var6 + (var12 - var29.height()) / 2.0F; + var1.drawText( + var29, + this.entry.mine() + ? "g" + : "u", + var5 + var28 + asa.iconShift(var21), + var30, + var26 + ); + float var31 = var5 + var28 + 13.0F; + ge var32 = asp.font(oe.MICRO); + String var33 = this.entry.mine() + ? "SHARED" + : "COMMUNITY"; + float var34 = var32.width(var33) + 10.0F; + float var35 = 10.0F; + float var36 = var5 + var7 - var28 - var34; + float var37 = var6 + (var12 - var35) / 2.0F; + float var38 = Math.max(0.0F, var36 - 13.0F - var31); + ge var39 = asp.font(oe.MICRO); + var1.drawScrollingText(var4, this.entry.name(), var31, var6 + 6.0F, var38, var27, (boolean)((((-1022994431 | 1022994432) + (-1022994431 & 1022994432))) != 0)); + float var40 = var6 + var12 - var39.height() - 6.0F; + if (this.busy) { + asg.render(var1, var31, var40 + var39.height() / 2.0F, var13.getColor(), var8); + } else { + var1.drawScrollingText( + var39, this.subLine(), var31, var40, var38, this.subColor(var13, var8), (boolean)((((-131066641 | 131066642) + (-131066641 & 131066642)) + ) != 0)); + } + + arq var41 = asj.pill(var35); + var1.drawSurface(aso.CONTROL, var36, var37, var34, var35, var41, var13.getForegroundLight().mulAlpha(var8 * 0.9F)); + var1.drawSurface(aso.CONTROL, var36, var37, var34, var35, var41, var13.getColor().mulAlpha(var8 * 0.22F)); + var1.drawText( + var32, var33, var36 + (var34 - var32.width(var33)) / 2.0F, var37 + (var35 - var32.height()) / 2.0F + 0.5F, var13.getColor().mulAlpha(var8) + ); + asa.pop(var1, var25); + if (var21 > 0.5F) { + ass.tooltip( + this, + this.entry.mine() + ? "Config you shared, click for its actions" + : "Config from the community pool, click to download it", + this.clickBounds.x(), + this.clickBounds.y(), + this.clickBounds.width(), + this.clickBounds.height(), + asr.BELOW + ); + } + + if (this.selected) { + float var42 = var6 + var12 + 6.0F; + if (!this.entry.description().isEmpty()) { + var1.drawScrollingText( + var39, + this.entry.description(), + var5 + var28, + var42, + var7 - var28 * 2.0F, + var13.getWhiteGray().mulAlpha(var8 * 0.9F), + (boolean)((((-891715118 | 891715119) + (-891715118 & 891715119)) + ) != 0)); + var42 += 13.0F; + } + + asu var43 = var13.getWhiteGray().mix(var13.getGrayLight(), var24).mulAlpha(var8); + + for (aay var45 : this.settings) { + if (var45.isVisible()) { + float var46 = var45.getHeight(); + if (var42 <= var11 && var42 + var46 >= var10) { + var45.render( + var1, + (float)this.scaleMouseX(var2, this.bounds), + (float)this.scaleMouseY(var3, this.bounds), + var5, + var42, + var7, + var8, + var24, + var26.getRGB(), + var27.getRGB(), + var43.getRGB(), + var13 + ); + } + + var42 += var46 + cardSettingGap(); + } + } + } + + zv.border(var1, var5, var6, var7, var23, var13, var8); + zv.activeBorder(var1, var5, var6, var7, var23, var8, var24, var13.getColor()); + asa.pop(var1, var19); + } + } + + @Override + public float getHeight() { + float var1 = 0.0F; + float var2 = 0.0F; + float var4 = 0.0F; + int var3 = 298530734; + + while (true) { + switch (var3) { + case -211568424: + return cardHeaderHeight(34.0F); + case -113692816: + var4 = 0.0F; + var3 = 1390001848; + break; + case 298530734: + default: + if (!this.selected) { + var3 = -211568424; + } else { + var3 = 1000672803; + } + break; + case 559505698: + var4 = 13.0F; + var3 = 1390001848; + break; + case 1000672803: + if (this.entry.description().isEmpty()) { + var3 = -113692816; + } else { + var3 = 559505698; + } + break; + case 1390001848: + var1 = var4; + var2 = cardSettingGap(); + return (float)( + cardHeaderHeight(34.0F) + 6.0F + var1 + + this.settings.stream().filter(aay::isVisible).mapToDouble(var1x -> var1x.getHeight() + var2).sum() + + var2 + ); + } + } + } + + private boolean headerHit(double var1, double var3) { + return asa.hitsControl(var1, var3, this.clickBounds, this.hoverHeader); + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = this.scaleMouseX(var1, this.bounds); + double var8 = this.scaleMouseY(var3, this.bounds); + if (this.headerHit(var6, var8)) { + this.selected = (boolean)(((!this.selected + ? 1: (-963654375 ^ 963654375) + ((-963654375 & 963654375) << 1))) != 0); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + } + + if (this.selected) { + for (aay var11 : this.settings) { + if (var11.isVisible()) { + var11.onMouseClicked(var6, var8, var5); + } + } + } + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + Iterator var10 = null; + aay var11 = null; + int var12 = -1669134387; + + while (true) { + switch (var12) { + case -1669134387: + default: + if (!this.selected) { + var12 = 2113540972; + } else { + var12 = -1115077825; + } + break; + case -1115077825: + var6 = this.scaleMouseX(var1, this.bounds); + var8 = this.scaleMouseY(var3, this.bounds); + var10 = this.settings.iterator(); + var12 = -691513517; + break; + case -691513517: + if (var10.hasNext()) { + var12 = -180982323; + } else { + var12 = 2034240054; + } + break; + case -180982323: + var11 = (aay)var10.next(); + if (!var11.isVisible()) { + var12 = 1194183968; + } else { + var12 = 1527033507; + } + break; + case 1194183968: + var12 = -691513517; + break; + case 1527033507: + var11.onMouseReleased(var6, var8, var5); + var12 = -691513517; + break; + case 2034240054: + return; + case 2113540972: + return; + } + } + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + return (boolean)(((0)) != 0); + } + + @Override + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + return (boolean)(((0)) != 0); + } + + @Override + public int getSortGroup() { + return 3; + } + + @Override + public float getSortRank() { + return this.entry.downloads(); + } + + @Override + public rl getCategory() { + return rl.CONFIGS; + } + + @Override + public String getName() { + return this.entry.name() + " " + this.entry.author(); + } +} diff --git a/src/main/java/defpackage/aad.java b/src/main/java/defpackage/aad.java new file mode 100644 index 0000000..af05e88 --- /dev/null +++ b/src/main/java/defpackage/aad.java @@ -0,0 +1,7 @@ +package defpackage; + +enum aad { + NONE, + RESET, + DELETE; +} diff --git a/src/main/java/defpackage/aae.java b/src/main/java/defpackage/aae.java new file mode 100644 index 0000000..92075c5 --- /dev/null +++ b/src/main/java/defpackage/aae.java @@ -0,0 +1,989 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.function.Supplier; +import net.minecraft.client.gui.screens.Screen; + +public class aae extends zu { + private static final int SORT_BUILTIN = 0; + private static final int SORT_USER = 1; + private static final long CONFIRM_TIMEOUT_MILLIS = 3200L; + private static final String TOOLTIP_ACTIVE_SUFFIX = " is active - tweak it below or open the editor"; + private static final String TOOLTIP_IDLE_SUFFIX = " - click to switch to this theme"; + private static final String EDIT_LABEL = "Open in theme editor"; + private static final String EDIT_DESCRIPTION = "Edit every part of this theme with a live preview"; + private static final String RESET_LABEL = "Reset to default"; + private static final String RESET_BUILTIN_DESCRIPTION = "Restore the preset exactly as it shipped"; + private static final String RESET_USER_DESCRIPTION = "Restore the theme as it was last saved"; + private static final String RESET_CONFIRM_LABEL = "Click again to reset"; + private static final String DELETE_LABEL = "Delete theme"; + private static final String DELETE_DESCRIPTION = "Remove this theme and its file"; + private static final String DELETE_CONFIRM_LABEL = "Click again to delete"; + private final mv theme; + private final boolean user; + private final Supplier target; + private final List bindings = new ArrayList<>(); + private final List settings = new ArrayList<>(); + private boolean[] clickVisibility = new boolean[0]; + private final ct animation; + private final zw autoScroll = new zw(); + private final asi bounds = new asi(); + private final asi iconBounds = new asi(); + private String cachedTooltipActive; + private String cachedTooltipIdle; + private aad armed = aad.NONE; + private long armedAt; + + public aae(mv var1) { + this.theme = var1; + this.user = themes().isUser(var1); + this.target = () -> this.theme; + this.animation = ct.layout(ob.MEDIUM, themes().is(var1) ? 1.0F : 0.0F); + + for (oo var3 : op.quickEdit( + (boolean)(((var1 == mv.CUSTOM_THEME ? 1: (-11246682 ^ 11246682) + ((-11246682 & 11246682) << 1)) + ) != 0))) { + zr var4 = zr.of(var3, this.target); + this.bindings.add(var4); + this.settings.add(var4.setting()); + } + + this.settings + .add( + button( + "Open in theme editor", + "Edit every part of this theme with a live preview", + this::openEditor, + null + ) + ); + String var5 = this.user + ? "Restore the theme as it was last saved" + : "Restore the preset exactly as it shipped"; + this.settings + .add( + button( + "Reset to default", var5, () -> this.arm(aad.RESET), () -> { + int var2 = 0; + int var1x = -1508648511; + + while (true) { + switch (var1x) { + case -2140718842: + return Boolean.valueOf((boolean)((var2) != 0)); + case -1508648511: + default: + if (!this.isArmed(aad.RESET)) { + var1x = 533337250; + } else { + var1x = -459286095; + } + break; + case -459286095: + var2 = 0; + var1x = -2140718842; + break; + case 533337250: + var2 = 1; + var1x = -2140718842; + } + } + } + ) + ); + this.settings + .add( + button( + "Click again to reset", + var5, + this::resetToDefault, + () -> this.isArmed(aad.RESET) + ) + ); + if (this.user) { + this.settings + .add( + button( + "Delete theme", + "Remove this theme and its file", + () -> this.arm(aad.DELETE), + () -> { + int var2 = 0; + int var1x = 359459676; + + while (true) { + switch (var1x) { + case -1640152491: + var2 = 0; + var1x = -901485534; + break; + case -901485534: + return Boolean.valueOf((boolean)((var2) != 0)); + case -546260740: + var2 = 1; + var1x = -901485534; + break; + case 359459676: + default: + if (!this.isArmed(aad.DELETE)) { + var1x = -546260740; + } else { + var1x = -1640152491; + } + } + } + } + ) + ); + this.settings + .add( + button( + "Click again to delete", + "Remove this theme and its file", + this::delete, + () -> this.isArmed(aad.DELETE) + ) + ); + } + } + + private static abf button(String var0, String var1, Runnable var2, Supplier var3) { + rv var4 = null; + int var5 = 2039016482; + + while (true) { + switch (var5) { + case 42796728: + return new abf(var4); + case 1398043527: + var4.setVisible(var3); + var5 = 42796728; + break; + case 2039016482: + default: + var4 = new rv(var0, var2).description(var1); + if (var3 != null) { + var5 = 1398043527; + } else { + var5 = 42796728; + } + } + } + } + + public mv getTheme() { + return this.theme; + } + + @Override + public void render(asq var1, float var2, float var3, ge var4, float var5, float var6, float var7, float var8, int var9, float var10, float var11) { + boolean var12 = this.isActive(); + this.animation.update(var12 ? 1.0F : 0.0F); + if (var12) { + this.syncBindings(); + } else { + this.armed = aad.NONE; + } + + float var13 = this.getHeight(); + this.bounds.set(var5, var6, var7, var13); + this.iconBounds.set(var5, var6, var7, 88.0F); + int var14 = this.iconBounds.contains(this.scaleMouseX(var2, this.bounds), this.scaleMouseY(var3, this.bounds)) && var3 >= var10 && var3 <= var11 + ? 1: 0; + this.hoverAnimation.animateTo(var14 != 0 ? 1.0F : 0.0F); + float var15 = this.hoverAnimation.update(); + if (aqg.mc.gui.screen() instanceof yc var16) { + this.autoScroll.update(var16, (boolean)((var14) != 0), this.getToyHover(), this.autoScrollY(var6), var13, var7, var10, var11); + } + + if (var15 > 0.5F) { + ass.tooltip( + this, + var12 ? this.cardTooltipActive() : this.cardTooltipIdle(), + this.iconBounds.x(), + this.iconBounds.y(), + this.iconBounds.width(), + this.iconBounds.height(), + asr.BELOW + ); + } + + boolean var22 = asa.push(var1, var5, var6, var7, var13, var15, asa.cardAmount(var7)); + mv var23 = themes().getCurrentTheme(); + float var18 = var5 + 1.0F; + float var19 = var6 + 1.0F; + float var20 = var7 - 2.0F; + float var21 = 86.0F; + zy.draw(var1, var18, var19, var20, var21, this.theme, var23, this.theme.getName(), var8, var15, this.animation.value(), var12, 0.0F); + if (var12) { + this.renderSettings(var1, var2, var3, var18, var19 + var21, var20, var8, var23, var10, var11); + } + + asa.pop(var1, var22); + } + + private void renderSettings(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, mv var8, float var9, float var10) { + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = 0; + int var15 = 0; + int var16 = 0; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + Iterator var20 = null; + aay var21 = null; + int var22 = -1873452449; + + while (true) { + switch (var22) { + case -2022278949: + zv.border(var1, var4, var12, var6, var13, var8, var7); + return; + case -1873452449: + default: + var11 = cardSettingGap(); + var12 = var5 + var11; + var13 = this.settingsBlockHeight(); + zv.restShadow(var1, var4, var12, var6, var13, var7); + var1.drawSurface(aso.CARD, var4, var12, var6, var13, zv.radius(), var8.getForegroundDark().getRGBWithAlpha(var7)); + var14 = var8.getColor().mulAlpha(var7).getRGB(); + var15 = var8.getWhite().mulAlpha(var7).getRGB(); + var16 = var8.getGrayLight().mulAlpha(var7).getRGB(); + var17 = (float)this.scaleMouseX(var2, this.bounds); + var18 = (float)this.scaleMouseY(var3, this.bounds); + var19 = var12 + var11; + var20 = this.settings.iterator(); + var22 = -998837086; + break; + case -998837086: + if (var20.hasNext()) { + var22 = -984735140; + } else { + var22 = -2022278949; + } + break; + case -984735140: + var21 = (aay)var20.next(); + if (!var21.isVisible()) { + var22 = 998312132; + } else { + var22 = -870996751; + } + break; + case -948820785: + var21.render(var1, var17, var18, var4, var19, var6, var7, this.animation.value(), var14, var15, var16, var8); + var22 = 231531819; + break; + case -870996751: + if (var19 <= var10) { + var22 = -404800028; + } else { + var22 = 231531819; + } + break; + case -404800028: + if (var19 + var21.getHeight() >= var9) { + var22 = -948820785; + } else { + var22 = 231531819; + } + break; + case 231531819: + var19 += var21.getHeight() + var11; + var22 = -998837086; + break; + case 998312132: + var22 = -998837086; + } + } + } + + private void syncBindings() { + int var1 = 0; + int var2 = 246662579; + + while (true) { + switch (var2) { + case -2051880709: + if (var1 < this.bindings.size()) { + var2 = 638431504; + } else { + var2 = 990181466; + } + break; + case -651162299: + return; + case -24495637: + this.armed = aad.NONE; + var2 = -651162299; + break; + case 246662579: + default: + var1 = 0; + var2 = -2051880709; + break; + case 638431504: + this.bindings.get(var1).sync(); + var1++; + var2 = -2051880709; + break; + case 990181466: + if (this.armed != aad.NONE) { + var2 = 1233716920; + } else { + var2 = -651162299; + } + break; + case 1233716920: + if (System.currentTimeMillis() - this.armedAt + >= (4575314892745507866L ^ -4575314892745504666L) + ((4575314892745507866L & -4575314892745504666L) << 1)) { + var2 = -24495637; + } else { + var2 = -651162299; + } + } + } + } + + private void arm(aad var1) { + this.armed = var1; + this.armedAt = System.currentTimeMillis(); + } + + private boolean isArmed(aad var1) { + int var3 = 0; + int var2 = -641418664; + + while (true) { + switch (var2) { + case -641418664: + default: + if (this.armed == var1) { + var2 = 516706736; + } else { + var2 = 14230680; + } + break; + case 14230680: + var3 = 0; + var2 = 1258601549; + break; + case 516706736: + var3 = 1; + var2 = 1258601549; + break; + case 1258601549: + return (boolean)((var3) != 0); + } + } + } + + private void resetToDefault() { + int var1 = 0; + int var2 = 493153843; + + while (true) { + switch (var2) { + case -1516892305: + if (var1 < this.bindings.size()) { + var2 = -1235842954; + } else { + var2 = -575818394; + } + break; + case -1235842954: + this.bindings.get(var1).pull(); + var1++; + var2 = -1516892305; + break; + case -575818394: + return; + case 493153843: + default: + this.armed = aad.NONE; + this.theme.reset(); + var1 = 0; + var2 = -1516892305; + } + } + } + + private void delete() { + this.armed = aad.NONE; + na.delete(themes(), this.theme); + } + + private void openEditor() { + yc var1 = null; + Screen var2 = null; + int var3 = 652752670; + + while (true) { + switch (var3) { + case 652752670: + default: + var2 = aqg.mc.gui.screen(); + if (var2 instanceof yc) { + var3 = 990570729; + } else { + var3 = 998771217; + } + break; + case 990570729: + var1 = (yc)var2; + var1.selectCategory(rl.APPEARANCE); + var3 = 998771217; + break; + case 998771217: + return; + } + } + } + + @Override + public float getHeight() { + int var1 = 1522769574; + + while (true) { + switch (var1) { + case 362221074: + return 88.0F; + case 807981467: + return 88.0F + cardSettingGap() + this.settingsBlockHeight(); + case 1522769574: + } + + if (!this.isActive()) { + var1 = 362221074; + } else { + var1 = 807981467; + } + } + } + + private float settingsBlockHeight() { + float var1 = 0.0F; + float var2 = 0.0F; + int var3 = 0; + aay var4 = null; + int var5 = -53681935; + + while (true) { + switch (var5) { + case -1798135557: + var4 = this.settings.get(var3); + if (var4.isVisible()) { + var5 = 1057286728; + } else { + var5 = -751080797; + } + break; + case -1380052147: + if (var3 < this.settings.size()) { + var5 = -1798135557; + } else { + var5 = -644714806; + } + break; + case -751080797: + var3++; + var5 = -1380052147; + break; + case -644714806: + return var2; + case -53681935: + default: + var1 = cardSettingGap(); + var2 = var1; + var3 = 0; + var5 = -1380052147; + break; + case 1057286728: + var2 += var4.getHeight() + var1; + var5 = -751080797; + } + } + } + + private String cardTooltipActive() { + int var1 = -1290328368; + + while (true) { + switch (var1) { + case -1918508661: + return this.cachedTooltipActive; + case -1290328368: + default: + if (this.cachedTooltipActive == null) { + var1 = 493551203; + } else { + var1 = -1918508661; + } + break; + case 493551203: + this.cachedTooltipActive = this.theme.getName() + " is active - tweak it below or open the editor"; + var1 = -1918508661; + } + } + } + + private String cardTooltipIdle() { + int var1 = 1561229227; + + while (true) { + switch (var1) { + case 74153871: + this.cachedTooltipIdle = this.theme.getName() + " - click to switch to this theme"; + var1 = 1930466659; + break; + case 1561229227: + default: + if (this.cachedTooltipIdle == null) { + var1 = 74153871; + } else { + var1 = 1930466659; + } + break; + case 1930466659: + return this.cachedTooltipIdle; + } + } + } + + private boolean isActive() { + return themes().is(this.theme); + } + + private static my themes() { + return bz.getInstance().getThemeManager(); + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + int var6 = 0; + double var7 = 0.0; + double var9 = 0.0; + int var11 = 0; + int var12 = 109377407; + + while (true) { + switch (var12) { + case -2112605414: + return; + case -1940279074: + this.clickVisibility = new boolean[this.settings.size()]; + var12 = 1972008574; + break; + case -1505102173: + if (var11 < this.settings.size()) { + var12 = 899461496; + } else { + var12 = -131195687; + } + break; + case -744680477: + var11++; + var12 = 123103400; + break; + case -709383714: + this.settings.get(var11).onMouseClicked(var7, var9, var5); + var12 = -744680477; + break; + case -680227580: + if (var6 == 0) { + var12 = -36781547; + } else { + var12 = 792180235; + } + break; + case -294301459: + if (this.clickVisibility[var11]) { + var12 = -709383714; + } else { + var12 = -744680477; + } + break; + case -154814756: + if (this.iconBounds.contains(var7, var9)) { + var12 = 383701129; + } else { + var12 = -680227580; + } + break; + case -131195687: + var11 = 0; + var12 = 123103400; + break; + case -36781547: + return; + case 109377407: + default: + var6 = (this.isActive()) ? 1 : 0; + var7 = this.scaleMouseX(var1, this.bounds); + var9 = this.scaleMouseY(var3, this.bounds); + if (this.iconBounds.isValid()) { + var12 = -154814756; + } else { + var12 = -680227580; + } + break; + case 123103400: + if (var11 < this.settings.size()) { + var12 = -294301459; + } else { + var12 = -2112605414; + } + break; + case 383701129: + yd.from(this.iconBounds); + themes().switchTheme(this.theme); + if (bz.getInstance().getSoundManager() != null) { + var12 = 1386988591; + } else { + var12 = -680227580; + } + break; + case 792180235: + if (this.clickVisibility.length != this.settings.size()) { + var12 = -1940279074; + } else { + var12 = 1972008574; + } + break; + case 899461496: + this.clickVisibility[var11] = this.settings.get(var11).isVisible(); + var11++; + var12 = -1505102173; + break; + case 1386988591: + bz.getInstance().getSoundManager().playClick(); + var12 = -680227580; + break; + case 1972008574: + var11 = 0; + var12 = -1505102173; + } + } + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + int var10 = 0; + aay var11 = null; + int var12 = 1995481380; + + while (true) { + switch (var12) { + case -1951518669: + if (var10 < this.settings.size()) { + var12 = 1429959953; + } else { + var12 = 2085679235; + } + break; + case 639648637: + var11.onMouseReleased(var6, var8, var5); + var12 = 794601631; + break; + case 794601631: + var10++; + var12 = -1951518669; + break; + case 1429959953: + var11 = this.settings.get(var10); + if (var11.isVisible()) { + var12 = 639648637; + } else { + var12 = 794601631; + } + break; + case 1814985548: + return; + case 1995481380: + default: + if (!this.isActive()) { + var12 = 1814985548; + } else { + var12 = 2006384439; + } + break; + case 2006384439: + var6 = this.scaleMouseX(var1, this.bounds); + var8 = this.scaleMouseY(var3, this.bounds); + var10 = 0; + var12 = -1951518669; + break; + case 2085679235: + return; + } + } + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + double var10 = 0.0; + double var12 = 0.0; + int var14 = 0; + aay var15 = null; + int var16 = 2039394768; + + while (true) { + switch (var16) { + case -1239799168: + if (var14 < this.settings.size()) { + var16 = -197177912; + } else { + var16 = 883625867; + } + break; + case -521139298: + return; + case -197177912: + var15 = this.settings.get(var14); + if (var15.isVisible()) { + var16 = 641738827; + } else { + var16 = 680476761; + } + break; + case 641738827: + var15.onMouseDragged(var10, var12, var5, var6, var8); + var16 = 680476761; + break; + case 680476761: + var14++; + var16 = -1239799168; + break; + case 883625867: + return; + case 1135153744: + var10 = this.scaleMouseX(var1, this.bounds); + var12 = this.scaleMouseY(var3, this.bounds); + var14 = 0; + var16 = -1239799168; + break; + case 2039394768: + default: + if (!this.isActive()) { + var16 = -521139298; + } else { + var16 = 1135153744; + } + } + } + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = 0; + aay var5 = null; + int var6 = 2117725325; + + while (true) { + switch (var6) { + case -2123444678: + var4 = 0; + var6 = 614177431; + break; + case -1710066127: + var4++; + var6 = 614177431; + break; + case -1394888595: + if (var5.keyPressed(var1, var2, var3)) { + var6 = -872650303; + } else { + var6 = -1710066127; + } + break; + case -958644633: + return (boolean)(((0)) != 0); + case -872650303: + return (boolean)(((1)) != 0); + case 614177431: + if (var4 < this.settings.size()) { + var6 = 2102178537; + } else { + var6 = 791472917; + } + break; + case 791472917: + return (boolean)(((0)) != 0); + case 2102178537: + var5 = this.settings.get(var4); + if (var5.isVisible()) { + var6 = -1394888595; + } else { + var6 = -1710066127; + } + break; + case 2117725325: + default: + if (!this.isActive()) { + var6 = -958644633; + } else { + var6 = -2123444678; + } + } + } + } + + @Override + public boolean charTyped(char var1, int var2) { + int var3 = 0; + aay var4 = null; + int var5 = 1169065846; + + while (true) { + switch (var5) { + case -1175426248: + var3 = 0; + var5 = -636009831; + break; + case -636009831: + if (var3 < this.settings.size()) { + var5 = 21699555; + } else { + var5 = 1266662599; + } + break; + case -450766155: + if (var4.charTyped(var1, var2)) { + var5 = 101708638; + } else { + var5 = 1969990064; + } + break; + case 21699555: + var4 = this.settings.get(var3); + if (var4.isVisible()) { + var5 = -450766155; + } else { + var5 = 1969990064; + } + break; + case 101708638: + return (boolean)(((1)) != 0); + case 1160121697: + return (boolean)(((0)) != 0); + case 1169065846: + default: + if (!this.isActive()) { + var5 = 1160121697; + } else { + var5 = -1175426248; + } + break; + case 1266662599: + return (boolean)(((0)) != 0); + case 1969990064: + var3++; + var5 = -636009831; + } + } + } + + @Override + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + double var9 = 0.0; + double var11 = 0.0; + int var13 = 0; + aay var14 = null; + int var15 = -1840381885; + + while (true) { + switch (var15) { + case -1840381885: + default: + if (!this.isActive()) { + var15 = -747551825; + } else { + var15 = 363112314; + } + break; + case -1788263743: + return (boolean)(((1)) != 0); + case -747551825: + return (boolean)(((0)) != 0); + case -515546220: + var14 = this.settings.get(var13); + if (var14.isVisible()) { + var15 = -435529833; + } else { + var15 = 563222731; + } + break; + case -435529833: + if (var14.mouseScrolled(var9, var11, var5, var7)) { + var15 = -1788263743; + } else { + var15 = 563222731; + } + break; + case -132852107: + if (var13 < this.settings.size()) { + var15 = -515546220; + } else { + var15 = 1775644710; + } + break; + case 363112314: + var9 = this.scaleMouseX(var1, this.bounds); + var11 = this.scaleMouseY(var3, this.bounds); + var13 = 0; + var15 = -132852107; + break; + case 563222731: + var13++; + var15 = -132852107; + break; + case 1775644710: + return (boolean)(((0)) != 0); + } + } + } + + @Override + public rl getCategory() { + return rl.THEMES; + } + + @Override + public String getName() { + return this.theme.getName(); + } + + @Override + public int getSortGroup() { + int var2 = 0; + int var1 = 987654129; + + while (true) { + switch (var1) { + case -1128331800: + var2 = 0; + var1 = 341659081; + break; + case 113006856: + var2 = 1; + var1 = 341659081; + break; + case 341659081: + return var2; + case 987654129: + default: + if (this.user) { + var1 = 113006856; + } else { + var1 = -1128331800; + } + } + } + } +} diff --git a/src/main/java/defpackage/aaf.java b/src/main/java/defpackage/aaf.java new file mode 100644 index 0000000..ad7316b --- /dev/null +++ b/src/main/java/defpackage/aaf.java @@ -0,0 +1,111 @@ +package defpackage; + +class aaf { + ct animationPosition; + ct animationY; + float currentX; + float currentY; + float targetX; + float targetY; + float offsetX; + float offsetY; + boolean initialized; + + aaf() { + } + + void update(float var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8) { + int var9 = -1271141921; + + while (true) { + switch (var9) { + case -2002744280: + if (var4 > var3) { + var9 = 141415235; + } else { + var9 = 2075132798; + } + break; + case -1347281150: + this.animationPosition.animateTo(var1); + this.animationY.animateTo(var2); + this.currentX = this.animationPosition.update(); + this.currentY = this.animationY.update(); + if (this.currentY < var5) { + var9 = 27587350; + } else { + var9 = 1293491000; + } + break; + case -1271141921: + default: + this.targetX = var1; + this.targetY = var2; + if (!this.initialized) { + var9 = 913489857; + } else { + var9 = -1347281150; + } + break; + case -1062356946: + if (var6 > var5) { + var9 = -1008941540; + } else { + var9 = 98768917; + } + break; + case -1008941540: + this.currentY = var6 - var8; + this.animationY.jumpTo(this.currentY); + var9 = 98768917; + break; + case -935120937: + if (this.currentX + var7 > var4) { + var9 = -2002744280; + } else { + var9 = 2075132798; + } + break; + case -275325842: + this.currentX = var3; + this.animationPosition.jumpTo(this.currentX); + var9 = -935120937; + break; + case 27587350: + this.currentY = var5; + this.animationY.jumpTo(this.currentY); + var9 = 1293491000; + break; + case 98768917: + if (this.currentX < var3) { + var9 = -275325842; + } else { + var9 = -935120937; + } + break; + case 141415235: + this.currentX = var4 - var7; + this.animationPosition.jumpTo(this.currentX); + var9 = 2075132798; + break; + case 913489857: + this.currentX = var1 + this.offsetX; + this.currentY = var2 + this.offsetY; + this.animationPosition = ct.layout(ob.FAST, this.currentX); + this.animationY = ct.layout(ob.SETTLED, this.currentY); + this.initialized = (boolean)(((1)) != 0); + var9 = -1347281150; + break; + case 1293491000: + if (this.currentY + var8 > var6) { + var9 = -1062356946; + } else { + var9 = 98768917; + } + break; + case 2075132798: + return; + } + } + } +} diff --git a/src/main/java/defpackage/aag.java b/src/main/java/defpackage/aag.java new file mode 100644 index 0000000..3368982 --- /dev/null +++ b/src/main/java/defpackage/aag.java @@ -0,0 +1,6 @@ +package defpackage; + +import java.util.List; + +record aag(List faces, float horizontalExtent, float verticalExtent) { +} diff --git a/src/main/java/defpackage/aah.java b/src/main/java/defpackage/aah.java new file mode 100644 index 0000000..ed216f4 --- /dev/null +++ b/src/main/java/defpackage/aah.java @@ -0,0 +1,2523 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.BufferBuilder; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.DefaultPlayerSkin; +import net.minecraft.resources.Identifier; +import org.joml.Matrix4f; +import org.joml.Matrix4fStack; +import org.joml.Vector3f; + +public class aah { + private static final float TAB_HEIGHT = 22.0F; + private static final float TAB_TEXT_PADDING = 3.0F; + private static final float TAB_GAP = 6.0F; + private static final float TABS_BOTTOM_GAP = 10.0F; + private static final float CARD_GAP = 8.0F; + private static final float CARD_HOVER_SCALE = 0.06F; + private static final float CONTENT_EDGE_FADE = 30.0F; + private static final float CONTENT_FADE_RAMP = 60.0F; + private static final float GRID_BLEED = 6.0F; + private static final float NO_EDGE_FADE = 0.0F; + private static final float CARD_BASE_PAD = 6.0F; + private static final float NAME_RIGHT_RESERVE = 18.0F; + private static final float NAME_CLIP_BLEED = 4.0F; + private static final int COLUMNS = 4; + private static final float WING_CARD_SCALE = 0.5F; + private static final float WING_CARD_Y = -9.0F; + private static final int WING_MODEL_STACK_DEPTH = 64; + private static final float WING_PREVIEW_FIT = 0.94F; + private static final float HAT_CARD_SCALE = 1.0F; + private static final float HAT_CARD_Y = -16.0F; + private static final float BACKPACK_CARD_SCALE = 0.85F; + private static final float BACKPACK_CARD_Y = -2.0F; + private static final float PLAYERSKIN_SPIN = 0.0F; + private static final float SKIN_CARD_SCALE = 1.05F; + private static final float SKIN_CARD_Y = 0.0F; + private static final float GRAFFITI_ICON_FIT = 0.86F; + private static final float GRAFFITI_CARD_Y = 0.0F; + private static final float MELEE_ICON_FIT = 0.92F; + private static final float MELEE_ICON_Y = 0.0F; + private static final float MELEE_MODEL_FIT = 0.86F; + private static final asu CHECK_COLOR = new asu( + 95, + 212, + (-1141102767 | 1141102872) + (-1141102767 & 1141102872) + ); + private static final float NAMETAG_PREVIEW_SIZE_RATIO = 0.22F; + private static final float NAMETAG_PREVIEW_MIN_SIZE = 7.0F; + private static final float NAMETAG_PREVIEW_PAD_X = 6.0F; + private static final float NAMETAG_PREVIEW_PAD_Y = 4.0F; + private static final float NAMETAG_PREVIEW_FIT = 0.92F; + private static final int NAMETAG_PREVIEW_PLATE_ALPHA = 110; + private static final String NAMETAG_PREVIEW_FALLBACK = "Player"; + private static final String EMPTY_SEARCH_TITLE = "Nothing found"; + private static final String EMPTY_SEARCH_HINT = "Try another cosmetic name"; + private static final String EMPTY_SLOT_TITLE = "Coming soon"; + private static final String EMPTY_SLOT_HINT = "New cosmetics land here"; + private static final String EMPTY_PLAYERSKIN_TITLE = "No skins uploaded"; + private static final String EMPTY_PLAYERSKIN_HINT = "Upload a skin on evoproject.xyz to wear it here"; + private static final String EMPTY_SYNC_OFF_TITLE = "Online sync is off"; + private static final String EMPTY_SYNC_OFF_HINT = "Turn on Cosmetics - Online sync to load your uploaded skins"; + private static final float BIND_ROW_HEIGHT = 20.0F; + private static final float BIND_ROW_GAP = 8.0F; + private static final float BIND_ROW_PADDING_X = 8.0F; + private static final float BIND_ROW_FILL_ALPHA = 0.05F; + private static final float BIND_CHIP_HEIGHT = 12.0F; + private static final float BIND_CHIP_PADDING_X = 6.0F; + private static final float BIND_CHIP_MIN_WIDTH = 26.0F; + private static final float BIND_CHIP_FILL_ALPHA = 0.55F; + private static final float BIND_CHIP_HOVER_ALPHA = 0.25F; + private static final double BIND_PULSE_PERIOD = 260.0; + private static final float BIND_PULSE_FLOOR = 0.45F; + private static final float BIND_FILL_ALPHA = 0.35F; + private static final String CARD_TOOLTIP_EQUIPPED_SUFFIX = " - equipped, click to take off"; + private static final String CARD_TOOLTIP_IDLE_SUFFIX = " - click to equip"; + private static final String BIND_ROW_LABEL = "Inspect key"; + private static final String BIND_LISTENING_LABEL = "press key"; + private static final String BIND_UNBOUND_LABEL = "n/a"; + private aec selectedSlot = aec.CAPES; + private final Map tabAnimations = new HashMap<>(); + private final Map tabHoverAnimations = new HashMap<>(); + private final Map hoverAnimations = new HashMap<>(); + private final Map equippedAnimations = new HashMap<>(); + private final Map cardPhysics = new HashMap<>(); + private final Map autoScrollers = new HashMap<>(); + private final Map settledCardY = new HashMap<>(); + private float globalOffsetY = 0.0F; + private boolean applyGlobalOffset = (boolean)(((0)) != 0); + private final ct bindHoverAnimation = asa.spring(); + private final asi bindBounds = new asi(); + private boolean binding = (boolean)(((0)) != 0); + private final asl tabBounds = new asl(); + private final asl cardBounds = new asl(); + private final List cardEntries = new ArrayList<>(); + private float boxCx; + private float boxCz; + private Identifier bodySkin; + private aeb cachedTooltipEntry; + private boolean cachedTooltipEquipped; + private String cachedCardTooltip = ""; + private static final float CARD_HOVER_REFERENCE_WIDTH = 172.0F; + private static final float CARD_INSET = 1.0F; + private static final int VISUAL_X = 0; + private static final int VISUAL_Y = 1; + private static final int VISUAL_W = 2; + private static final int VISUAL_H = 3; + private final float[] visual = new float[4]; + private float boundsLeft; + private float boundsRight; + private float boundsTop; + private float boundsBottom; + private static final Map> HAT_CACHE = new HashMap<>(); + private static final Map> BACKPACK_CACHE = new HashMap<>(); + private static final float BACKPACK_CARD_MAX_HEIGHT = 1.3F; + private static final Map> SKIN_CACHE = new HashMap<>(); + private static final Map WING_CACHE = new HashMap<>(); + + private static arq CARD_RADIUS() { + return asj.all(oc.PANEL); + } + + private static arq TAB_RADIUS() { + return asj.all(oc.CARD); + } + + private static arq CHIP_RADIUS() { + return asj.all(oc.CHIP); + } + + public void onCategoryOpened(float var1) { + this.globalOffsetY = var1; + this.applyGlobalOffset = (boolean)(((1)) != 0); + this.binding = (boolean)(((0)) != 0); + } + + private void releaseCardState() { + this.hoverAnimations.clear(); + this.equippedAnimations.clear(); + this.cardPhysics.clear(); + this.autoScrollers.clear(); + this.settledCardY.clear(); + } + + public float render( + asq var1, + float var2, + float var3, + float var4, + float var5, + float var6, + float var7, + mv var8, + float var9, + float var10, + boolean var11, + int var12, + String var13 + ) { + if (!var11) { + this.renderTabs(var1, var2, var3, var4, var7, var8, var9, var10); + if (this.hasInspectBind()) { + this.renderInspectBind(var1, var2, var3 + 22.0F + 10.0F, var4, var7, var8, var9, var10); + } else { + this.bindBounds.invalidate(); + this.binding = (boolean)(((0)) != 0); + } + } + + float var14 = var3 + 22.0F + 10.0F + this.bindRowOffset(); + float var15 = var3 + var5; + this.boundsLeft = var2; + this.boundsRight = var2 + var4; + this.boundsTop = var14; + this.boundsBottom = var15; + this.cardBounds.clear(); + this.cardEntries.clear(); + List var16 = aed.getInstance().bySlot(this.selectedSlot); + List var17; + if (var13 != null && !var13.trim().isEmpty()) { + String var18 = var13.trim().toLowerCase(); + var17 = new ArrayList(); + + for (aeb var20 : var16) { + if (var20.getName().toLowerCase().contains(var18)) { + var17.add(var20); + } + } + } else { + var17 = var16; + } + + if (var17.isEmpty()) { + if (!var11) { + this.renderEmpty( + var1, + var2, + var14, + var4, + var15, + var7, + var8, + (boolean)(((var13 != null && !var13.trim().isEmpty() + ? 1: (-1752122912 | 1752122912) + (-1752122912 & 1752122912)) + ) != 0)); + } + + return 32.0F + this.bindRowOffset(); + } else { + float var47 = (var4 - 8.0F * (var12 - ((899861302 ^ -899861301) + ((899861302 & -899861301) << 1)))) / var12; + float var48 = var47 * 1.28F; + float var49 = (float) Math.PI; + float[] var21 = new float[var12]; + float[] var22 = new float[var12]; + int[] var23 = new int[var17.size()]; + float var24 = 30.0F * Math.min(1.0F, var6 / 60.0F); + float var25 = 30.0F; + + for (int var26 = 0; var26 < var17.size(); var26++) { + int var27 = 0; + + for (int var28 = 1; var28 < var12; var28++) { + if (var21[var28] < var21[var27]) { + var27 = var28; + } + } + + var23[var26] = var27; + aeb var54 = (aeb)var17.get(var26); + ct var29 = this.hoverAnimations.get(var54); + if (var29 != null && var29.value() > 0.0F) { + float var30 = var29.value(); + float var31 = 1.0F - (1.0F - var30) * (1.0F - var30); + float var32 = 172.0F / var47; + float var33 = var47 * 0.06F * var32 * var31; + if (var33 > var22[var27]) { + var22[var27] = var33; + } + } + + var21[var27] += var48 + 8.0F; + } + + float[] var50 = new float[var12]; + + for (int var51 = 0; var51 < var12; var51++) { + for (int var55 = 0; var55 < var12; var55++) { + if (var51 != var55) { + if (var55 < var51) { + var50[var51] += var22[var55] / 2.0F; + } else { + var50[var51] -= var22[var55] / 2.0F; + } + } + } + } + + for (int var52 = 0; var52 < var12; var52++) { + var21[var52] = 0.0F; + } + + float[] var53 = new float[var12]; + float[] var56 = new float[var12]; + + for (int var57 = 0; var57 < var12; var57++) { + var56[var57] = -99999.0F; + } + + float var58 = 0.0F; + var1.clipScroll(var2 - 6.0F, var14 - 6.0F, var2 + var4 + 6.0F, var15 + 6.0F, var24, var25); + + for (int var59 = 0; var59 < var17.size(); var59++) { + int var62 = var23[var59]; + aeb var66 = (aeb)var17.get(var59); + ct var69 = this.hoverAnimations.get(var66); + float var34 = var69 == null ? 0.0F : var69.value(); + float var35 = 1.0F - (1.0F - var34) * (1.0F - var34); + float var36 = 172.0F / var47; + float var37 = var48 * 0.06F * var36 * var35; + float var38 = var2 + var62 * (var47 + 8.0F) + var50[var62]; + float var39 = var14 + var21[var62] + var37 / 2.0F - var6; + this.settledCardY.put(var66, var14 + var53[var62] - var6); + var53[var62] += var48 + 8.0F; + float var40 = this.boundsLeft; + float var41 = this.boundsRight; + float var42 = var56[var62]; + float var43 = 99999.0F; + aaf var44 = this.cardPhysics.computeIfAbsent(var66, var0 -> new aaf()); + var44.update(var38, var39, var40, var41, var42, var43, var47, var48); + if (this.applyGlobalOffset) { + var44.currentY = var39 + this.globalOffsetY; + if (var44.animationY != null) { + var44.animationY.jumpTo(var44.currentY); + } + } + + var56[var62] = var44.currentY + var48 + var37 / 2.0F + 8.0F; + this.cardBounds.add(var44.currentX, var44.currentY, var47, var48); + this.cardEntries.add(var66); + int var45 = var69 != null && var69.value() > 0.001F + ? 1: 0; + if (!var11 && var45 == 0 && (var44.currentY + var48 >= var14 && var44.currentY <= var15 || var39 + var48 >= var14 && var39 <= var15)) { + this.renderCard(var1, var66, var44.currentX, var44.currentY, var47, var48, var7, var8, var9, var10, var49, var14, var15); + } + + var21[var62] += var48 + var37 + 8.0F; + if (var34 > 0.001F) { + float var46 = var21[var62] - 8.0F + 8.0F; + if (var46 > var58) { + var58 = var46; + } + } + } + + if (this.applyGlobalOffset) { + this.applyGlobalOffset = (boolean)(((0)) != 0); + } + + if (var11) { + for (int var60 = 0; var60 < var17.size(); var60++) { + aeb var63 = (aeb)var17.get(var60); + ct var67 = this.hoverAnimations.get(var63); + if (var67 != null && var67.value() > 0.001F) { + this.renderCard(var1, var63, this.cardBounds.x(var60), this.cardBounds.y(var60), var47, var48, var7, var8, var9, var10, var49, var14, var15); + } + } + } + + var1.popClip(); + float var61 = 0.0F; + float[] var64 = var21; + int var68 = var64.length; + + for (int var70 = 0; var70 < var68; var70++) { + float var71 = var64[var70]; + if (var71 > var61) { + var61 = var71; + } + } + + if (var58 > var61) { + var61 = var58; + } + + float var65 = var61; + if (var61 > 0.0F) { + var65 -= 8.0F; + } + + return 32.0F + this.bindRowOffset() + var65 + 4.0F; + } + } + + private boolean hasInspectBind() { + int var2 = 0; + int var1 = 870338215; + + while (true) { + switch (var1) { + case 91389984: + return (boolean)((var2) != 0); + case 776517955: + var2 = 1; + var1 = 91389984; + break; + case 870338215: + default: + if (this.selectedSlot == aec.MELEE) { + var1 = 776517955; + } else { + var1 = 1036245279; + } + break; + case 1036245279: + var2 = 0; + var1 = 91389984; + } + } + } + + private float bindRowOffset() { + float var2 = 0.0F; + int var1 = 1433618127; + + while (true) { + switch (var1) { + case -255906439: + return var2; + case -223506711: + var2 = 0.0F; + var1 = -255906439; + break; + case 465836432: + var2 = 28.0F; + var1 = -255906439; + break; + case 1433618127: + default: + if (this.hasInspectBind()) { + var1 = 465836432; + } else { + var1 = -223506711; + } + } + } + } + + private String bindLabel() { + int var1 = 0; + String var2 = null; + String var4 = null; + int var3 = 1624443468; + + while (true) { + switch (var3) { + case -1592842854: + var1 = sz.INSTANCE.inspectSetting.getKeyCode(); + if (var1 == (-1550755556 ^ 1550755555) + ((-1550755556 & 1550755555) << 1)) { + var3 = -1392099028; + } else { + var3 = 50363171; + } + break; + case -1556790034: + var4 = var2.toLowerCase(Locale.ROOT); + var3 = -1010395916; + break; + case -1392099028: + return "n/a"; + case -1010395916: + return var4; + case 50363171: + var2 = aqz.getKeyName(var1); + if (var2 != null) { + var3 = 1783311117; + } else { + var3 = 1184322436; + } + break; + case 279362294: + return "press key"; + case 1184322436: + var4 = "n/a"; + var3 = -1010395916; + break; + case 1624443468: + default: + if (this.binding) { + var3 = 279362294; + } else { + var3 = -1592842854; + } + break; + case 1783311117: + if (var2.isBlank()) { + var3 = 1184322436; + } else { + var3 = -1556790034; + } + } + } + } + + private void renderInspectBind(asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8) { + ge var9 = asp.font(oe.BODY); + ge var10 = asp.font(oe.LABEL); + var1.drawSurface(aso.ROW, var2, var3, var4, 20.0F, TAB_RADIUS(), var6.getWhite().mulAlpha(0.05F * var5)); + atb.drawRoundedBorder(var1.pose(), var2, var3, var4, 20.0F, pk.borderHairline(), TAB_RADIUS(), var6.getForegroundLightStroke().mulAlpha(var5)); + String var11 = this.bindLabel(); + float var12 = Math.max(26.0F, var10.width(var11) + 12.0F); + float var13 = var2 + var4 - var12 - 8.0F; + float var14 = var3 + 4.0F; + this.bindBounds.set(var13, var14, var12, 12.0F); + this.bindHoverAnimation.animateTo(asa.hits(var7, var8, this.bindBounds, this.bindHoverAnimation, 0.05F) ? 1.0F : 0.0F); + float var15 = this.bindHoverAnimation.update(); + var1.drawText( + var9, + "Inspect key", + var2 + 8.0F, + var3 + (20.0F - var9.height()) / 2.0F, + asa.liftText(var6.getGrayLight(), var6, var15).mulAlpha(var5) + ); + asa.plateControl(var1, var13, var14, var12, 12.0F, asa.plateColor(var6), var5, var15); + boolean var16 = asa.push(var1, var13, var14, var12, 12.0F, var15, 0.05F); + var1.drawSurface(aso.CONTROL, var13, var14, var12, 12.0F, CHIP_RADIUS(), var6.getForegroundLight().mulAlpha(var5 * (0.55F + 0.25F * var15))); + asu var17 = asa.liftText(var6.getGrayLight(), var6, var15); + if (this.binding) { + float var18 = 0.45F + 0.55F * (float)(0.5 + 0.5 * Math.sin(System.currentTimeMillis() / 260.0)); + var1.drawSurface(aso.ACCENT, var13, var14, var12, 12.0F, CHIP_RADIUS(), var6.getColor().mulAlpha(var5 * 0.35F * var18)); + var1.drawRoundedBorder(var13, var14, var12, 12.0F, pk.borderThickness(), CHIP_RADIUS(), var6.getColor().mulAlpha(var5 * var18)); + var17 = var6.getWhite(); + } else { + var1.drawRoundedBorder(var13, var14, var12, 12.0F, pk.borderHairline(), CHIP_RADIUS(), var6.getForegroundLightStroke().mulAlpha(var5)); + } + + var1.drawText(var10, var11, var13 + (var12 - var10.width(var11)) / 2.0F, var14 + (12.0F - var10.height()) / 2.0F, var17.mulAlpha(var5)); + asa.pop(var1, var16); + } + + public boolean keyPressed(int var1, int var2, int var3) { + if (!this.binding) { + return (boolean)(((0)) != 0); + } + + this.binding = (boolean)(((0)) != 0); + int var4 = var1 != (1553787207 ^ -1553786951) + ((1553787207 & -1553786951) << 1) + && var1 != (1591299246 | -1591298987) + (1591299246 & -1591298987) + && var1 != 261? 0: 1; + sz.INSTANCE.inspectSetting.setKeyCode(var4 != 0 ? -1: var1); + return (boolean)(((1)) != 0); + } + + private ge tabFont(aec[] var1, float var2) { + ge var3 = null; + float var4 = 0.0F; + aec[] var5 = null; + int var6 = 0; + int var7 = 0; + aec var8 = null; + int var9 = 398239779; + + while (true) { + switch (var9) { + case -1601663837: + return asp.font(oe.LABEL_STRONG); + case -1105881301: + var7++; + var9 = 16230358; + break; + case 16230358: + if (var7 < var6) { + var9 = 1273841150; + } else { + var9 = 1099074280; + } + break; + case 398239779: + default: + var3 = asp.font(oe.HEADING); + var4 = var2 - 6.0F; + var5 = var1; + var6 = var5.length; + var7 = 0; + var9 = 16230358; + break; + case 1099074280: + return var3; + case 1273841150: + var8 = var5[var7]; + if (var3.width(var8.getDisplayName()) > var4) { + var9 = -1601663837; + } else { + var9 = -1105881301; + } + } + } + } + + private void renderTabs(asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8) { + aec[] var9 = aec.values(); + float var10 = (var4 - 6.0F * (var9.length - ((-423223649 ^ 423223650) + ((-423223649 & 423223650) << 1)))) / var9.length; + ge var11 = this.tabFont(var9, var10); + + for (int var12 = 0; var12 < var9.length; var12++) { + aec var13 = var9[var12]; + float var14 = var2 + var12 * (var10 + 6.0F); + this.tabBounds.set(var12, var14, var3, var10, 22.0F); + ct var15 = this.tabAnimations.computeIfAbsent(var13, var2x -> ct.layout(ob.MEDIUM, var13 == this.selectedSlot ? 1.0F : 0.0F)); + var15.animateTo(var13 == this.selectedSlot ? 1.0F : 0.0F); + float var16 = var15.update(); + ct var17 = this.tabHoverAnimations.computeIfAbsent(var13, var0 -> asa.spring()); + boolean var18 = asa.hits(var7, var8, var14, var3, var10, 22.0F, var17.value(), 0.05F); + var17.animateTo(var18 ? 1.0F : 0.0F); + float var19 = var17.update(); + asa.plateRow(var1, var14, var3, var10, 22.0F, asa.plateColor(var6), var5, var19); + boolean var20 = asa.push(var1, var14, var3, var10, 22.0F, var19, 0.05F); + float var21 = Math.max(var16, var19); + var1.drawSurface(aso.ROW, var14, var3, var10, 22.0F, TAB_RADIUS(), var6.getWhite().mulAlpha(var21 * 0.08F * var5)); + atb.drawRoundedBorder( + var1.pose(), var14, var3, var10, 22.0F, pk.borderHairline(), asj.all(oc.CARD), var6.getForegroundLightStroke().mulAlpha(var21 * var5) + ); + if (var16 > 0.01F) { + float var22 = var10 * 0.45F; + float var23 = var14 + (var10 - var22) / 2.0F; + float var24 = var3 + 22.0F - 3.0F; + var1.drawRoundedRect(var23, var24, var22, 2.0F, asj.all(oc.HAIRLINE), var6.getColor().mulAlpha(var16 * var5)); + } + + asu var27 = asa.liftText(var6.getGrayLight().mix(var6.getWhite(), var16), var6, var19); + String var28 = var13.getDisplayName(); + float var29 = var11.width(var28); + float var25 = var14 + (var10 - var29) / 2.0F; + float var26 = var3 + (22.0F - var11.height()) / 2.0F - 0.5F; + var1.drawText(var11, var28, var25, var26, var27.mulAlpha(var5)); + asa.pop(var1, var20); + } + } + + private String cardTooltip(aeb var1, boolean var2) { + if (var1 != this.cachedTooltipEntry || var2 != this.cachedTooltipEquipped) { + this.cachedTooltipEntry = var1; + this.cachedTooltipEquipped = var2; + this.cachedCardTooltip = var1.getName() + + ( + var2 + ? " - equipped, click to take off" + : " - click to equip" + ); + } + + return this.cachedCardTooltip; + } + + private void hoverVisual(float var1, float var2, float var3, float var4, float var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = 807341761; + + while (true) { + switch (var9) { + case -1503555755: + var6 = asc.of(var5, 0.06F * (172.0F / var3)); + var7 = var3 * var6; + var8 = var4 * var6; + this.visual[2] = var7; + this.visual[3] = var8; + this.visual[0] = var1 + (var3 - var7) / 2.0F; + this.visual[1] = var2 + (var4 - var8) / 2.0F; + return; + case 100809663: + return; + case 620699534: + if (var4 <= 0.0F) { + var9 = 100809663; + } else { + var9 = -1503555755; + } + break; + case 807341761: + default: + this.visual[0] = var1; + this.visual[1] = var2; + this.visual[2] = var3; + this.visual[3] = var4; + if (!(var5 <= 0.0F)) { + var9 = 1718737827; + } else { + var9 = 100809663; + } + break; + case 1718737827: + if (!(var3 <= 0.0F)) { + var9 = 620699534; + } else { + var9 = 100809663; + } + } + } + } + + private void renderCard( + asq var1, aeb var2, float var3, float var4, float var5, float var6, float var7, mv var8, float var9, float var10, float var11, float var12, float var13 + ) { + ct var14 = this.hoverAnimations.computeIfAbsent(var2, var0 -> ct.layout(ob.SETTLED, 0.0F)); + float var15 = var14.value(); + this.hoverVisual(var3, var4, var5, var6, var15); + int var16 = (aqj.isHovered( + var9, + var10, + this.visual[0], + this.visual[1], + this.visual[2], + this.visual[3] + )) ? 1 : 0; + if (var10 < var12 || var10 > var13) { + var16 = 0; + } + + var14.animateTo(var16 != 0 ? 1.0F : 0.0F); + float var17 = var14.update(); + if (bz.getInstance().getMenuScreen() != null) { + float var18 = 1.0F - (1.0F - var17) * (1.0F - var17); + float var19 = this.settledCardY.getOrDefault(var2, var4); + this.autoScrollers + .computeIfAbsent(var2, var0 -> new zw()) + .update(bz.getInstance().getMenuScreen(), (boolean)((var16) != 0), var18, var19, var6, var5, var12, var13); + } + + boolean var48 = aed.getInstance().isEquipped(var2); + if (var17 > 0.5F) { + ass.tooltip( + this, + this.cardTooltip(var2, var48), + this.visual[0], + this.visual[1], + this.visual[2], + this.visual[3], + asr.ABOVE + ); + } + + ct var49 = this.equippedAnimations.computeIfAbsent(var2, var1x -> ct.layout(ob.SETTLED, var48 ? 1.0F : 0.0F)); + var49.animateTo(var48 ? 1.0F : 0.0F); + float var20 = var49.update(); + float var21 = var3; + float var22 = var4; + float var23 = 1.0F; + var3 += var23; + var4 += var23; + var5 -= var23 * 2.0F; + var6 -= var23 * 2.0F; + if (var17 > 0.0F) { + this.hoverVisual(var21, var22, var5 + var23 * 2.0F, var6 + var23 * 2.0F, var17); + float var24 = this.visual[2] / (var5 + var23 * 2.0F); + var1.pushMatrix(); + var1.pose() + .translate( + this.visual[0] - var21 * var24, + this.visual[1] - var22 * var24 + ); + var1.pose().scale(var24, var24); + } + + zv.restShadow(var1, var3, var4, var5, var6, var7); + zv.activeShadow(var1, var3, var4, var5, var6, var7, var20, var8.getColor()); + asu var50 = var8.getForegroundColor(); + var1.drawSurface(aso.CARD, var3, var4, var5, var6, CARD_RADIUS(), var50.getRGBWithAlpha(var7)); + asa.plateRow(var1, var3, var4, var5, var6, asa.plateColor(var8), var7, var17); + float var25 = asj.contentInset(oc.PANEL, 6.0F, var5, var6); + float var26 = 16.0F; + float var27 = var4 + var6 - var26 - 7.0F; + float var28 = var4 + var25; + float var29 = var27 - 6.0F; + float var30 = var3 + var5 / 2.0F; + float var31 = (var28 + var29) / 2.0F; + float var32 = var29 - var28; + asu var33 = var8.getForegroundColor().mix(var8.getWhite(), 0.2F).mulAlpha(var7); + asu var34 = var8.getForegroundColor().mix(var8.getWhite(), 0.05F).mulAlpha(var7); + var1.drawRoundedRect(var3 + var25, var28, var5 - var25 * 2.0F, var32, TAB_RADIUS(), ary.of(var33, var34, var33, var34)); + float var35 = Math.max(var28, var12); + float var36 = Math.min(var29, var13); + if (var35 < var36) { + var1.clipHard(var3, var35, var3 + var5, var36); + float var37 = (var5 - var25 * 2.0F) * 0.78F; + float var38 = var32 * 0.5F; + var1.drawRoundedRect(var30 - var37 / 2.0F, var31 - var38 / 2.0F, var37, var38, asj.pill(var38), var8.getWhite().mulAlpha(var7 * 0.1F)); + this.renderMannequin(var1, var2, var30, var31, var32, var5 - var25 * 2.0F, var7, var11, var8); + var1.popClip(); + } + + asu var51 = var8.getColor().mix(var8.getGray(), var48 ? 0.0F : 0.45F); + var1.drawRoundedRect(var3 + var25, var27, var5 - var25 * 2.0F, 1.4F, asj.all(oc.HAIRLINE), var51.mulAlpha(var7)); + ge var52 = asp.font(oe.BODY); + float var39 = var4 + var6 - var26 + (var26 - var52.height()) / 2.0F - 1.0F; + asu var40 = var8.getWhite(); + float var41 = Math.max(0.0F, var5 - var25 - 18.0F); + var1.drawScrollingText( + var52, var2.getName(), var3 + var25, var39, var41, var40.mulAlpha(var7), (boolean)((((1855969575 ^ -1855969574) + ((1855969575 & -1855969574) << 1)) + ) != 0)); + if (var20 > 0.0F) { + float var42 = var3 + var5 - 11.0F; + float var43 = var39 + var52.height() / 2.0F - 1.0F; + this.drawCheck(var1, var42, var43, 8.5F, var8.getColor().mulAlpha(var7 * var20)); + } + + zv.border(var1, var3, var4, var5, var6, var8, var7); + zv.activeBorder(var1, var3, var4, var5, var6, var7, var20, var8.getColor()); + if (var17 > 0.0F) { + var1.popMatrix(); + } + } + + private void renderMannequin(asq var1, aeb var2, float var3, float var4, float var5, float var6, float var7, float var8, mv var9) { + if (var2.getSlot() == aec.NAMETAGS && var2.getNameTag() != null) { + this.drawNameTagPreview(var1, var2.getNameTag(), var3, var4, var5, var6, var7, var9); + } else if (var2.getSlot() == aec.MELEE && var2.getMelee() != null) { + this.drawMeleeIcon(var1, var2.getMelee(), var3, var4, var5, var6, var7); + } else if (var2.getSlot() == aec.GRAFFITI && var2.getGraffiti() != null) { + this.drawFlatIcon(var1, var2.getGraffiti().getTexture(), var3, var4 + 0.0F, var5, var6, 0.86F, var7); + } else { + Identifier var10 = var2.getSlot() == aec.CAPES ? var2.getTexture() : null; + int var11 = var2.getSlot() == aec.WINGS && var2.getWing() != null + ? 1: 0; + float var12 = var5 * 0.72F / 32.0F; + float var13 = var5 * 2.6F; + float var14 = var2.getSlot() == aec.PLAYERSKINS ? 0.0F : var8; + float var15 = (float)Math.sin(var14); + float var16 = (float)Math.cos(var14); + if (Math.abs(var15) < 1.0E-4F) { + var15 = 0.0F; + } + + if (Math.abs(var16) < 1.0E-4F) { + var16 = 0.0F; + } + + Identifier var17 = this.resolveSkin(var2); + ArrayList var18 = new ArrayList(); + ArrayList var19 = new ArrayList(); + boolean var20 = this.isSlimSkin(var2); + this.bodySkin = var17; + this.addSkinBox(var18, var19, var17, 0.0F, -12.0F, 0.0F, 8.0F, 8.0F, 8.0F, 0.0F, 0.0F); + this.addSkinBox(var18, var19, var17, 0.0F, -2.0F, 0.0F, 8.0F, 12.0F, 4.0F, 16.0F, 16.0F); + this.addSkinBox(var18, var19, var17, var20 ? -5.5F : -6.0F, -2.0F, 0.0F, var20 ? 3.0F : 4.0F, 12.0F, 4.0F, 40.0F, 16.0F); + this.addSkinBox(var18, var19, var17, var20 ? 5.5F : 6.0F, -2.0F, 0.0F, var20 ? 3.0F : 4.0F, 12.0F, 4.0F, 32.0F, 48.0F); + this.addSkinBox(var18, var19, var17, -2.0F, 10.0F, 0.0F, 4.0F, 12.0F, 4.0F, 0.0F, 16.0F); + this.addSkinBox(var18, var19, var17, 2.0F, 10.0F, 0.0F, 4.0F, 12.0F, 4.0F, 16.0F, 48.0F); + float var21 = 0.3F; + this.addSkinBox(var18, var19, var17, 0.0F, -12.0F, 0.0F, 8.0F, 8.0F, 8.0F, 32.0F, 0.0F, var21); + this.addSkinBox(var18, var19, var17, 0.0F, -2.0F, 0.0F, 8.0F, 12.0F, 4.0F, 16.0F, 32.0F, var21); + this.addSkinBox(var18, var19, var17, var20 ? -5.5F : -6.0F, -2.0F, 0.0F, var20 ? 3.0F : 4.0F, 12.0F, 4.0F, 40.0F, 32.0F, var21); + this.addSkinBox(var18, var19, var17, var20 ? 5.5F : 6.0F, -2.0F, 0.0F, var20 ? 3.0F : 4.0F, 12.0F, 4.0F, 48.0F, 48.0F, var21); + this.addSkinBox(var18, var19, var17, -2.0F, 10.0F, 0.0F, 4.0F, 12.0F, 4.0F, 0.0F, 32.0F, var21); + this.addSkinBox(var18, var19, var17, 2.0F, 10.0F, 0.0F, 4.0F, 12.0F, 4.0F, 0.0F, 48.0F, var21); + if (var10 != null) { + adi.tick(); + this.addCapeBox(var18, var19, var10); + } + + if (var11 != 0 && var2.getWing().getType() == afc.INSECTOID) { + this.addWingPlanes(var18, var19, var2.getWing().getTexture()); + } + + int var22 = var18.size(); + Integer[] var23 = new Integer[var22]; + float[] var24 = new float[var22]; + float[] var25 = new float[var22]; + + for (int var26 = 0; var26 < var22; var26++) { + float[] var27 = (float[])var18.get(var26); + var24[var26] = -(var27[14] * var12) * var15 + + var27[15] * var12 * var16; + var25[var26] = -var27[6] * var15 + + var27[7] * var16; + var23[var26] = var26; + } + + Arrays.sort(var23, (var1x, var2x) -> Float.compare(var24[var1x], var24[var2x])); + var1.drawRoundedRect(var3 - 9.0F * var12, var4 + 16.0F * var12, 18.0F * var12, 3.2F, asj.all(oc.CHIP), asu.BLACK.mulAlpha(var7 * 0.3F)); + Identifier var55 = null; + BufferBuilder var56 = null; + Matrix4f var28 = arb.toMatrix4f(var1.pose()); + Integer[] var29 = var23; + int var30 = var29.length; + + for (int var31 = 0; var31 < var30; var31++) { + int var32 = var29[var31]; + if (!(var25[var32] <= 0.0F)) { + float[] var33 = (float[])var18.get(var32); + float var34 = var33[0]; + float var35 = var33[1]; + float var36 = var33[2]; + float var37 = var33[3]; + float var38 = var33[4]; + float var39 = var33[5]; + float var40 = var33[8]; + float var41 = var33[9]; + float var42 = var33[10]; + float var43 = var33[11]; + float var44 = var33[12]; + float var45 = var33[13]; + float[] var46 = this.project(var34, var38, var44, var15, var16, var12, var13, var3, var4); + float[] var47 = this.project(var34, var39, var35, var15, var16, var12, var13, var3, var4); + float[] var48 = this.project(var36, var39, var37, var15, var16, var12, var13, var3, var4); + float[] var49 = this.project(var36, var38, var45, var15, var16, var12, var13, var3, var4); + float var50 = 0.6F + 0.4F * Math.min(1.0F, var25[var32]); + int var51 = (int)(255.0F * var50); + asu var52 = new asu(var51, var51, var51).mulAlpha(var7); + int var53 = var52.getRGB(); + Identifier var54 = (Identifier)var19.get(var32); + if (var55 == null || !var55.equals(var54)) { + if (var56 != null) { + if (adm.isShaderCape(var55)) { + atb.endBatchedShaderQuads(var56); + } else { + atb.endBatchedTexturedQuads(var56); + } + } + + var55 = var54; + if (adm.isShaderCape(var54)) { + var56 = atb.beginBatchedShaderQuads(adm.isHolyCape(var54) ? atb.blockHolyProgram : atb.blockStarfieldProgram, var7); + } else { + var56 = atb.beginBatchedTexturedQuads(var54); + } + } + + if (adm.isShaderCape(var54)) { + var56.addVertex( + var28, + var46[0], + var46[1], + 0.0F + ) + .setColor(var53); + var56.addVertex( + var28, + var47[0], + var47[1], + 0.0F + ) + .setColor(var53); + var56.addVertex( + var28, + var48[0], + var48[1], + 0.0F + ) + .setColor(var53); + var56.addVertex( + var28, + var49[0], + var49[1], + 0.0F + ) + .setColor(var53); + } else { + var56.addVertex( + var28, + var46[0], + var46[1], + 0.0F + ) + .setUv(var40, var42) + .setColor(var53); + var56.addVertex( + var28, var47[0], var47[1], 0.0F + ) + .setUv(var40, var43) + .setColor(var53); + var56.addVertex( + var28, + var48[0], + var48[1], + 0.0F + ) + .setUv(var41, var43) + .setColor(var53); + var56.addVertex( + var28, + var49[0], + var49[1], + 0.0F + ) + .setUv(var41, var42) + .setColor(var53); + } + } + } + + if (var56 != null) { + if (adm.isShaderCape(var55)) { + atb.endBatchedShaderQuads(var56); + } else { + atb.endBatchedTexturedQuads(var56); + } + } + + if (var11 != 0 && var2.getWing().getType() != afc.INSECTOID) { + this.drawWingModel(var1, var2.getWing(), var3, var4, var12, var6, var5, var7); + } + + if (var2.getSlot() == aec.HATS && var2.getHat() != null) { + this.drawHatModel(var1, var2.getHat(), var3, var4, var12, var7); + } + + if (var2.getSlot() == aec.BACKPACKS && var2.getBackpack() != null) { + this.drawBackpackModel(var1, var2.getBackpack(), var3, var4, var12, var7); + } + } + } + + private void drawMeleeIcon(asq var1, ahu var2, float var3, float var4, float var5, float var6, float var7) { + ahm var8 = null; + int var9 = -2116078719; + + while (true) { + switch (var9) { + case -2116078719: + default: + var8 = ahn.get(var2); + if (var8 != null) { + var9 = -84231400; + } else { + var9 = 1808184219; + } + break; + case -84231400: + this.drawMeleeModel(var1, var2, var8, var3, var4, var5, var6, var7); + return; + case 1808184219: + this.drawFlatIcon(var1, var2.getIcon(), var3, var4 + 0.0F, var5, var6, 0.92F, var7); + return; + } + } + } + + private void drawFlatIcon(asq var1, Identifier var2, float var3, float var4, float var5, float var6, float var7, float var8) { + float var9 = Math.min(var5, var6) * var7; + float var10 = var9 * 0.5F; + float var11 = var3 - var10; + float var12 = var4 - var10; + BufferBuilder var13 = atb.beginBatchedTexturedQuads(var2); + Matrix4f var14 = arb.toMatrix4f(var1.pose()); + int var15 = asu.WHITE.mulAlpha(var8).getRGB(); + var13.addVertex(var14, var11, var12, 0.0F).setUv(0.0F, 0.0F).setColor(var15); + var13.addVertex(var14, var11, var12 + var9, 0.0F).setUv(0.0F, 1.0F).setColor(var15); + var13.addVertex(var14, var11 + var9, var12 + var9, 0.0F).setUv(1.0F, 1.0F).setColor(var15); + var13.addVertex(var14, var11 + var9, var12, 0.0F).setUv(1.0F, 0.0F).setColor(var15); + atb.endBatchedTexturedQuads(var13); + } + + private void drawMeleeModel(asq var1, ahu var2, ahm var3, float var4, float var5, float var6, float var7, float var8) { + float var9 = 0.0F; + float var10 = 0.0F; + float[] var11 = null; + BufferBuilder var12 = null; + Matrix4f var13 = null; + int var14 = 0; + int var15 = 0; + int var16 = 0; + int var17 = 0; + int var18 = 1658642773; + + while (true) { + switch (var18) { + case -2062019579: + var16 = 0; + var18 = 1362278715; + break; + case -1412832770: + var17 = var15 + var16 * (4); + var12.addVertex( + var13, var4 + var11[var17] * var9, var10 + var11[var17 + 1] * var9, 0.0F + ) + .setUv(var11[var17 + 2], var11[var17 + 3]) + .setColor(var14); + var16++; + var18 = 1362278715; + break; + case -1401058491: + if (var15 < var11.length) { + var18 = -2062019579; + } else { + var18 = 359330497; + } + break; + case -427065128: + var15 += 16; + var18 = -1401058491; + break; + case 359330497: + atb.endBatchedTexturedQuads(var12); + return; + case 1362278715: + if (var16 < (70890196 ^ -70890192) + ((70890196 & -70890192) << 1)) { + var18 = -1412832770; + } else { + var18 = -427065128; + } + break; + case 1658642773: + default: + var9 = Math.min(var7 / var3.width(), var6 / var3.height()) * 0.86F; + var10 = var5 + 0.0F; + var11 = var3.quads(); + var12 = atb.beginBatchedTexturedQuads(var2.getTexture()); + var13 = arb.toMatrix4f(var1.pose()); + var14 = asu.WHITE.mulAlpha(var8).getRGB(); + var15 = 0; + var18 = -1401058491; + } + } + } + + private List getCachedHat(aej var1) { + aif var2 = null; + ArrayList var3 = null; + Matrix4fStack var4 = null; + Vector3f var5 = null; + Iterator var6 = null; + aig var7 = null; + int var8 = 1734820146; + + while (true) { + switch (var8) { + case -1871806816: + var2 = aek.model(var1); + var3 = new ArrayList(); + if (var2 != null) { + var8 = -1448514102; + } else { + var8 = -1388063699; + } + break; + case -1448514102: + var4 = new Matrix4fStack((-581937556 ^ 581937588) + ((-581937556 & 581937588) << 1)); + var5 = new Vector3f(); + var6 = var2.roots.iterator(); + var8 = -55202054; + break; + case -1388063699: + HAT_CACHE.put(var1.getKey(), var3); + return var3; + case -749884889: + var3.sort( + (var0, var1x) -> Float.compare( + var0[16], var1x[16] + ) + ); + var8 = -1388063699; + break; + case -55202054: + if (var6.hasNext()) { + var8 = 295474266; + } else { + var8 = -749884889; + } + break; + case 295474266: + var7 = (aig)var6.next(); + this.collectWingPartCached(var7, var4, var3, var5); + var8 = -55202054; + break; + case 372323916: + return HAT_CACHE.get(var1.getKey()); + case 1734820146: + default: + if (HAT_CACHE.containsKey(var1.getKey())) { + var8 = 372323916; + } else { + var8 = -1871806816; + } + } + } + } + + private void drawHatModel(asq var1, aej var2, float var3, float var4, float var5, float var6) { + List var7 = null; + Identifier var8 = null; + float var9 = 0.0F; + float var10 = 0.0F; + BufferBuilder var11 = null; + Matrix4f var12 = null; + int var13 = 0; + Iterator var14 = null; + Object var15 = null; + int var16 = -254112204; + + while (true) { + switch (var16) { + case -254112204: + default: + var7 = this.getCachedHat(var2); + if (var7 != null) { + var16 = 1591450491; + } else { + var16 = 701031952; + } + break; + case -179278087: + atb.endBatchedTexturedQuads(var11); + return; + case 364360438: + var15 = (float[])var14.next(); + var11.addVertex( + var12, + var3 - ((Object[])var15)[0] * var9, + var10 + ((Object[])var15)[1] * var9, + 0.0F + ) + .setUv( + (float)((Object[])var15)[2], + (float)((Object[])var15)[3] + ) + .setColor(var13); + var11.addVertex( + var12, + var3 - ((Object[])var15)[4] * var9, + var10 + ((Object[])var15)[5] * var9, + 0.0F + ) + .setUv( + (float)((Object[])var15)[6], + (float)((Object[])var15)[7] + ) + .setColor(var13); + var11.addVertex( + var12, + var3 - ((Object[])var15)[8] * var9, + var10 + ((Object[])var15)[9] * var9, + 0.0F + ) + .setUv( + (float)((Object[])var15)[10], + (float)((Object[])var15)[11] + ) + .setColor(var13); + var11.addVertex( + var12, + var3 - ((Object[])var15)[12] * var9, + var10 + ((Object[])var15)[13] * var9, + 0.0F + ) + .setUv( + (float)((Object[])var15)[14], + (float)((Object[])var15)[15] + ) + .setColor(var13); + var16 = 368844180; + break; + case 368844180: + if (var14.hasNext()) { + var16 = 364360438; + } else { + var16 = -179278087; + } + break; + case 701031952: + return; + case 1591450491: + if (var7.isEmpty()) { + var16 = 701031952; + } else { + var16 = 1890708055; + } + break; + case 1890708055: + var8 = var2.getTexture(); + var9 = 16.0F * var5 * 1.0F; + var10 = var4 + -16.0F * var5; + var11 = atb.beginBatchedTexturedQuads(var8); + var12 = arb.toMatrix4f(var1.pose()); + var13 = asu.WHITE.mulAlpha(var6).getRGB(); + var14 = var7.iterator(); + var16 = 368844180; + } + } + } + + private List getCachedBackpack(adk var1) { + aif var2 = null; + ArrayList var3 = null; + Matrix4fStack var4 = null; + Vector3f var5 = null; + Iterator var6 = null; + aig var7 = null; + int var8 = 215388728; + + while (true) { + switch (var8) { + case -1731494677: + var7 = (aig)var6.next(); + this.collectWingPartCached(var7, var4, var3, var5); + var8 = 1261216550; + break; + case -710244304: + var4 = new Matrix4fStack((-1714315915 ^ 1714315947) + ((-1714315915 & 1714315947) << 1)); + var5 = new Vector3f(); + var6 = var2.roots.iterator(); + var8 = 1261216550; + break; + case 215388728: + default: + if (BACKPACK_CACHE.containsKey(var1.getKey())) { + var8 = 778937219; + } else { + var8 = 405425982; + } + break; + case 405425982: + var2 = adl.model(var1); + var3 = new ArrayList(); + if (var2 != null) { + var8 = -710244304; + } else { + var8 = 1478075607; + } + break; + case 663305500: + this.recenterFaces(var3); + var3.sort( + (var0, var1x) -> Float.compare( + var0[16], var1x[16] + ) + ); + var8 = 1478075607; + break; + case 778937219: + return BACKPACK_CACHE.get(var1.getKey()); + case 1261216550: + if (var6.hasNext()) { + var8 = -1731494677; + } else { + var8 = 663305500; + } + break; + case 1478075607: + BACKPACK_CACHE.put(var1.getKey(), var3); + return var3; + } + } + } + + private void recenterFaces(List var1) { + if (!var1.isEmpty()) { + float var2 = Float.MAX_VALUE; + float var3 = -Float.MAX_VALUE; + float var4 = Float.MAX_VALUE; + float var5 = -Float.MAX_VALUE; + + for (float[] var7 : var1) { + for (int var8 = 0; + var8 < 16; + var8 += 4 + ) { + var2 = Math.min(var2, var7[var8]); + var3 = Math.max(var3, var7[var8]); + var4 = Math.min(var4, var7[var8 + 1]); + var5 = Math.max(var5, var7[var8 + 1]); + } + } + + float var13 = (var2 + var3) / 2.0F; + float var14 = (var4 + var5) / 2.0F; + float var15 = var5 - var4; + float var9 = var15 > 1.3F ? 1.3F / var15 : 1.0F; + + for (float[] var11 : var1) { + for (int var12 = 0; + var12 < 16; + var12 += 4 + ) { + var11[var12] = (var11[var12] - var13) * var9; + var11[var12 + 1] = ( + var11[var12 + 1] - var14 + ) + * var9; + } + } + } + } + + private void drawBackpackModel(asq var1, adk var2, float var3, float var4, float var5, float var6) { + List var7 = null; + Identifier var8 = null; + float var9 = 0.0F; + float var10 = 0.0F; + BufferBuilder var11 = null; + Matrix4f var12 = null; + int var13 = 0; + Iterator var14 = null; + Object var15 = null; + int var16 = 564268066; + + while (true) { + switch (var16) { + case -1924401322: + if (var14.hasNext()) { + var16 = 645839751; + } else { + var16 = -983344600; + } + break; + case -983344600: + atb.endBatchedTexturedQuads(var11); + return; + case 511794580: + return; + case 548854370: + var8 = var2.getTexture(); + var9 = 16.0F * var5 * 0.85F; + var10 = var4 + -2.0F * var5; + var11 = atb.beginBatchedTexturedQuads(var8); + var12 = arb.toMatrix4f(var1.pose()); + var13 = asu.WHITE.mulAlpha(var6).getRGB(); + var14 = var7.iterator(); + var16 = -1924401322; + break; + case 564268066: + default: + var7 = this.getCachedBackpack(var2); + if (var7 != null) { + var16 = 1301230295; + } else { + var16 = 511794580; + } + break; + case 645839751: + var15 = (float[])var14.next(); + var11.addVertex( + var12, + var3 - ((Object[])var15)[0] * var9, + var10 + ((Object[])var15)[1] * var9, + 0.0F + ) + .setUv( + (float)((Object[])var15)[2], + (float)((Object[])var15)[3] + ) + .setColor(var13); + var11.addVertex( + var12, + var3 - ((Object[])var15)[4] * var9, + var10 + ((Object[])var15)[5] * var9, + 0.0F + ) + .setUv( + (float)((Object[])var15)[6], + (float)((Object[])var15)[7] + ) + .setColor(var13); + var11.addVertex( + var12, + var3 - ((Object[])var15)[8] * var9, + var10 + ((Object[])var15)[9] * var9, + 0.0F + ) + .setUv( + (float)((Object[])var15)[10], + (float)((Object[])var15)[11] + ) + .setColor(var13); + var11.addVertex( + var12, + var3 - ((Object[])var15)[12] * var9, + var10 + ((Object[])var15)[13] * var9, + 0.0F + ) + .setUv( + (float)((Object[])var15)[14], + (float)((Object[])var15)[15] + ) + .setColor(var13); + var16 = -1924401322; + break; + case 1301230295: + if (var7.isEmpty()) { + var16 = 511794580; + } else { + var16 = 548854370; + } + } + } + } + + private List getCachedSkin(aex var1) { + aif var2 = null; + ArrayList var3 = null; + Matrix4fStack var4 = null; + Vector3f var5 = null; + Iterator var6 = null; + aig var7 = null; + int var8 = -370630194; + + while (true) { + switch (var8) { + case -938962002: + var4 = new Matrix4fStack((605509141 | -605509109) + (605509141 & -605509109)); + var5 = new Vector3f(); + var6 = var2.roots.iterator(); + var8 = -129085408; + break; + case -740825068: + return SKIN_CACHE.get(var1.getKey()); + case -569432930: + var2 = aey.model(var1); + var3 = new ArrayList(); + if (var2 != null) { + var8 = -938962002; + } else { + var8 = -554371538; + } + break; + case -554371538: + SKIN_CACHE.put(var1.getKey(), var3); + return var3; + case -370630194: + default: + if (SKIN_CACHE.containsKey(var1.getKey())) { + var8 = -740825068; + } else { + var8 = -569432930; + } + break; + case -129085408: + if (var6.hasNext()) { + var8 = 1711740101; + } else { + var8 = 115061937; + } + break; + case 115061937: + this.recenterFaces(var3); + var3.sort( + (var0, var1x) -> Float.compare( + var0[16], var1x[16] + ) + ); + var8 = -554371538; + break; + case 1711740101: + var7 = (aig)var6.next(); + this.collectWingPartCached(var7, var4, var3, var5); + var8 = -129085408; + } + } + } + + private void drawSkinModel(asq var1, aex var2, float var3, float var4, float var5, float var6) { + List var7 = null; + Identifier var8 = null; + float var9 = 0.0F; + float var10 = 0.0F; + BufferBuilder var11 = null; + Matrix4f var12 = null; + int var13 = 0; + Iterator var14 = null; + Object var15 = null; + int var16 = -1012264777; + + while (true) { + switch (var16) { + case -1012264777: + default: + var7 = this.getCachedSkin(var2); + if (var7 != null) { + var16 = -179781656; + } else { + var16 = 1758572695; + } + break; + case -929528573: + atb.endBatchedTexturedQuads(var11); + return; + case -179781656: + if (var7.isEmpty()) { + var16 = 1758572695; + } else { + var16 = 474412469; + } + break; + case 474412469: + var8 = var2.getTexture(); + var9 = 16.0F * var5 * 1.05F; + var10 = var4 + 0.0F * var5; + var11 = atb.beginBatchedTexturedQuads(var8); + var12 = arb.toMatrix4f(var1.pose()); + var13 = asu.WHITE.mulAlpha(var6).getRGB(); + var14 = var7.iterator(); + var16 = 984002060; + break; + case 785641280: + var15 = (float[])var14.next(); + var11.addVertex( + var12, + var3 - ((Object[])var15)[0] * var9, + var10 + ((Object[])var15)[1] * var9, + 0.0F + ) + .setUv( + (float)((Object[])var15)[2], + (float)((Object[])var15)[3] + ) + .setColor(var13); + var11.addVertex( + var12, + var3 - ((Object[])var15)[4] * var9, + var10 + ((Object[])var15)[5] * var9, + 0.0F + ) + .setUv( + (float)((Object[])var15)[6], + (float)((Object[])var15)[7] + ) + .setColor(var13); + var11.addVertex( + var12, + var3 - ((Object[])var15)[8] * var9, + var10 + ((Object[])var15)[9] * var9, + 0.0F + ) + .setUv( + (float)((Object[])var15)[10], + (float)((Object[])var15)[11] + ) + .setColor(var13); + var11.addVertex( + var12, + var3 - ((Object[])var15)[12] * var9, + var10 + ((Object[])var15)[13] * var9, + 0.0F + ) + .setUv( + (float)((Object[])var15)[14], + (float)((Object[])var15)[15] + ) + .setColor(var13); + var16 = 984002060; + break; + case 984002060: + if (var14.hasNext()) { + var16 = 785641280; + } else { + var16 = -929528573; + } + break; + case 1758572695: + return; + } + } + } + + private void addSkinBox( + List var1, + List var2, + Identifier var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11 + ) { + this.addSkinBox(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, 0.0F); + } + + private void addSkinBox( + List var1, + List var2, + Identifier var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12 + ) { + this.boxCx = var4; + this.boxCz = var6; + float var13 = 64.0F; + float var14 = var7 / 2.0F + var12; + float var15 = var8 / 2.0F + var12; + float var16 = var9 / 2.0F + var12; + float var17 = var5 - var15; + float var18 = var5 + var15; + float var19 = (var11 + var9) / var13; + float var20 = (var11 + var9 + var8) / var13; + this.addQuad( + var1, + var2, + var3, + var4 - var14, + var6 + var16, + var4 + var14, + var6 + var16, + var17, + var18, + 0.0F, + 1.0F, + (var10 + var9) / var13, + (var10 + var9 + var7) / var13, + var19, + var20 + ); + this.addQuad( + var1, + var2, + var3, + var4 + var14, + var6 + var16, + var4 + var14, + var6 - var16, + var17, + var18, + 1.0F, + 0.0F, + var10 / var13, + (var10 + var9) / var13, + var19, + var20 + ); + this.addQuad( + var1, + var2, + var3, + var4 + var14, + var6 - var16, + var4 - var14, + var6 - var16, + var17, + var18, + 0.0F, + -1.0F, + (var10 + 2.0F * var9 + var7) / var13, + (var10 + 2.0F * var9 + 2.0F * var7) / var13, + var19, + var20 + ); + this.addQuad( + var1, + var2, + var3, + var4 - var14, + var6 - var16, + var4 - var14, + var6 + var16, + var17, + var18, + -1.0F, + 0.0F, + (var10 + var9 + var7) / var13, + (var10 + 2.0F * var9 + var7) / var13, + var19, + var20 + ); + } + + private void addWingPlanes(List var1, List var2, Identifier var3) { + float var4 = 64.0F; + float var5 = -9.0F; + float var6 = 7.0F; + float var7 = -2.7F; + float var8 = -6.5F; + float var9 = 1.0F; + float var10 = 16.0F; + float[] var10000 = new float[4]; + var10000[0] = 0.0F; + var10000[1] = 0.0F; + var10000[2] = 19.0F; + var10000[3] = 24.0F; + float[] var11 = var10000; + var10000 = new float[4]; + var10000[0] = 0.0F; + var10000[1] = 24.0F; + var10000[2] = 19.0F; + var10000[3] = 48.0F; + float[] var12 = var10000; + this.addQuadLean( + var1, + var2, + var3, + var10, + var8, + var9, + var7, + var5, + var6, + 0.0F, + -1.0F, + var11[2] / var4, + var11[0] / var4, + var11[1] / var4, + var11[3] / var4, + var8, + var7 + ); + this.addQuadLean( + var1, + var2, + var3, + -var10, + var8, + -var9, + var7, + var5, + var6, + 0.0F, + -1.0F, + var12[0] / var4, + var12[2] / var4, + var12[1] / var4, + var12[3] / var4, + var8, + var7 + ); + } + + private aag getCachedWing(afc var1) { + if (WING_CACHE.containsKey(var1)) { + return WING_CACHE.get(var1); + } + + aif var2 = afe.model(var1); + if (var2 == null) { + return null; + } + + ArrayList var3 = new ArrayList(); + Matrix4fStack var4 = new Matrix4fStack((-1340840869 ^ 1340840933) + ((-1340840869 & 1340840933) << 1)); + var4.translate(0.0F, var1.getPreviewOffsetY(), var1.getOffsetZ()); + var4.scale(var1.getScale()); + Vector3f var5 = new Vector3f(); + + for (aig var7 : var2.roots) { + this.collectWingPartCached(var7, var4, var3, var5); + } + + var3.sort( + (var0, var1x) -> Float.compare( + var0[16], var1x[16] + ) + ); + float var11 = 0.0F; + float var12 = 0.0F; + + for (float[] var9 : var3) { + for (int var10 = 0; var10 < 4; var10++) { + var11 = Math.max(var11, Math.abs(var9[var10 * (4)] * 16.0F * 0.5F)); + var12 = Math.max( + var12, + Math.abs( + -9.0F + + var9[var10 * 5] + * 16.0F + * 0.5F + ) + ); + } + } + + aag var13 = new aag(var3, var11, var12); + WING_CACHE.put(var1, var13); + return var13; + } + + private void drawWingModel(asq var1, afd var2, float var3, float var4, float var5, float var6, float var7, float var8) { + aag var9 = this.getCachedWing(var2.getType()); + if (var9 != null) { + if (var2.getType().isBundled()) { + float var10 = var9.horizontalExtent() > 0.0F ? var6 * 0.94F / (2.0F * var9.horizontalExtent() * var5) : 1.0F; + float var11 = var9.verticalExtent() > 0.0F ? var7 * 0.94F / (2.0F * var9.verticalExtent() * var5) : 1.0F; + var5 *= Math.min(1.0F, Math.min(var10, var11)); + } + + Identifier var18 = var2.getTexture(); + float var19 = 16.0F * var5 * 0.5F; + float var12 = var4 + -9.0F * var5; + BufferBuilder var13 = atb.beginBatchedTexturedQuads(var18); + Matrix4f var14 = arb.toMatrix4f(var1.pose()); + int var15 = asu.WHITE.mulAlpha(var8).getRGB(); + + for (float[] var17 : var9.faces()) { + var13.addVertex( + var14, + var3 - var17[0] * var19, + var12 + var17[1] * var19, + 0.0F + ) + .setUv(var17[2], var17[3]) + .setColor(var15); + var13.addVertex( + var14, + var3 - var17[4] * var19, + var12 + var17[5] * var19, + 0.0F + ) + .setUv(var17[6], var17[7]) + .setColor(var15); + var13.addVertex( + var14, + var3 - var17[8] * var19, + var12 + var17[9] * var19, + 0.0F + ) + .setUv(var17[10], var17[11]) + .setColor(var15); + var13.addVertex( + var14, + var3 - var17[12] * var19, + var12 + var17[13] * var19, + 0.0F + ) + .setUv(var17[14], var17[15]) + .setColor(var15); + } + + atb.endBatchedTexturedQuads(var13); + } + } + + private void collectWingPartCached(aig var1, Matrix4fStack var2, List var3, Vector3f var4) { + if (!var1.isHidden()) { + var2.pushMatrix(); + var2.translate(-var1.getOffsetX() / 16.0F, var1.getOffsetY() / 16.0F, var1.getOffsetZ() / 16.0F); + var2.translate(var1.getPivotX() / 16.0F, var1.getPivotY() / 16.0F, var1.getPivotZ() / 16.0F); + if (var1.getRotZ() != 0.0F) { + var2.rotateZ(var1.getRotZ()); + } + + if (var1.getRotY() != 0.0F) { + var2.rotateY(var1.getRotY()); + } + + if (var1.getRotX() != 0.0F) { + var2.rotateX(var1.getRotX()); + } + + var2.scale(var1.getScaleX(), var1.getScaleY(), var1.getScaleZ()); + var2.translate(-var1.getPivotX() / 16.0F, -var1.getPivotY() / 16.0F, -var1.getPivotZ() / 16.0F); + + for (aie var6 : var1.cubes) { + var2.pushMatrix(); + var2.translate(var6.pivot.x / 16.0F, var6.pivot.y / 16.0F, var6.pivot.z / 16.0F); + if (var6.rotation.z != 0.0F) { + var2.rotateZ(var6.rotation.z); + } + + if (var6.rotation.y != 0.0F) { + var2.rotateY(var6.rotation.y); + } + + if (var6.rotation.x != 0.0F) { + var2.rotateX(var6.rotation.x); + } + + var2.translate(-var6.pivot.x / 16.0F, -var6.pivot.y / 16.0F, -var6.pivot.z / 16.0F); + aij[] var7 = var6.faces; + int var8 = var7.length; + + for (int var9 = 0; var9 < var8; var9++) { + aij var10 = var7[var9]; + if (var10 != null) { + float[] var11 = new float[17]; + float var12 = 0.0F; + + for (int var13 = 0; + var13 < 4; + var13++ + ) { + aik var14 = var10.corners[var13]; + var2.transformPosition(var14.position.x, var14.position.y, var14.position.z, var4); + var11[var13 * (4)] = var4.x(); + var11[var13 * 5] = -var4.y(); + var11[var13 * 6] = var14.u; + var11[var13 * 7] = var14.v; + var12 += var4.z(); + } + + var11[16] = var12 / 4.0F; + var3.add(var11); + } + } + + var2.popMatrix(); + } + + for (aig var16 : var1.children) { + this.collectWingPartCached(var16, var2, var3, var4); + } + + var2.popMatrix(); + } + } + + private void addCapeBox(List var1, List var2, Identifier var3) { + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + Identifier var12 = null; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = 33897554; + + while (true) { + switch (var15) { + case -186176990: + var12 = Identifier.fromNamespaceAndPath( + "evolution", "icons/logo.png" + ); + var13 = -3.0F; + var14 = 7.0F; + this.addQuadLean( + var1, var2, var12, var4, var8 - 0.1F, -var4, var8 - 0.1F, var13, var14, 0.0F, -1.0F, 1.0F, 0.0F, 0.0F, 1.0F, var7 - 0.1F, var7 - 0.1F + ); + var15 = 186656160; + break; + case 33897554: + default: + var4 = 5.0F; + var5 = -8.0F; + var6 = 12.0F; + var7 = -2.4F; + var8 = -2.8F; + var9 = 0.5F; + this.boxCx = 0.0F; + this.boxCz = (var7 + var8) * 0.5F; + var10 = 0.03125F; + var11 = 0.53125F; + this.addQuadLean(var1, var2, var3, var4, var8, -var4, var8, var5, var6, 0.0F, -1.0F, 0.015625F, 0.171875F, var10, var11, var7, var7); + this.addQuadLean( + var1, var2, var3, -var4, var8 + var9, var4, var8 + var9, var5, var6, 0.0F, 1.0F, 0.1875F, 0.34375F, var10, var11, var7 + var9, var7 + var9 + ); + this.addQuadLean(var1, var2, var3, var4, var8 + var9, var4, var8, var5, var6, 1.0F, 0.0F, 0.171875F, 0.1875F, var10, var11, var7 + var9, var7); + this.addQuadLean(var1, var2, var3, -var4, var8, -var4, var8 + var9, var5, var6, -1.0F, 0.0F, 0.0F, 0.015625F, var10, var11, var7, var7 + var9); + if (adm.isShaderCape(var3)) { + var15 = -186176990; + } else { + var15 = 186656160; + } + break; + case 186656160: + return; + } + } + } + + private void addQuad( + List var1, + List var2, + Identifier var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13, + float var14, + float var15 + ) { + this.addQuadLean(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var5, var7); + } + + private void addQuadLean( + List var1, + List var2, + Identifier var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13, + float var14, + float var15, + float var16, + float var17 + ) { + float var18 = 0.0F; + float var19 = 0.0F; + int var20 = -209217397; + + while (true) { + switch (var20) { + case -2123247545: + var19 -= 2.5F; + var20 = -770615712; + break; + case -770615712: + float[] var10001 = new float[16]; + var10001[0] = var4; + var10001[1] = var5; + var10001[2] = var6; + var10001[3] = var7; + var10001[4] = var8; + var10001[5] = var9; + var10001[6] = var10; + var10001[7] = var11; + var10001[8] = var12; + var10001[9] = var13; + var10001[10] = var14; + var10001[11] = var15; + var10001[12] = var16; + var10001[13] = var17; + var10001[14] = var18; + var10001[15] = var19; + var1.add(var10001); + var2.add(var3); + return; + case -209217397: + default: + var18 = (var4 + var6) * 0.5F; + var19 = (var5 + var7 + var16 + var17) * 0.25F; + if (var3 != null) { + var20 = 1939101616; + } else { + var20 = -770615712; + } + break; + case 1939101616: + if (!var3.equals(this.bodySkin)) { + var20 = -2123247545; + } else { + var20 = -770615712; + } + } + } + } + + private Identifier resolveSkin(aeb var1) { + if (var1 != null && var1.getPlayerSkin() != null) { + Identifier var2 = var1.getPlayerSkin().getTexture(); + if (var2 != null) { + return var2; + } + } + + Minecraft var5 = Minecraft.getInstance(); + if (var5.player != null) { + try { + return var5.player.getSkin().body().texturePath(); + } catch (Exception var4) { + } + } + + return DefaultPlayerSkin.getDefaultTexture(); + } + + private boolean isSlimSkin(aeb var1) { + if (var1 != null && var1.getPlayerSkin() != null) { + return var1.getPlayerSkin().isSlim(); + } + + Minecraft var2 = Minecraft.getInstance(); + if (var2.player != null) { + try { + return var2.player.getSkin().model().name().equals("SLIM"); + } catch (Exception var4) { + } + } + + return (boolean)(((0)) != 0); + } + + private float[] project(float var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9) { + float var10 = var1 * var6; + float var11 = var3 * var6; + float var12 = var10 * var5 + var11 * var4; + float[] var10000 = new float[2]; + var10000[0] = var8 + var12; + var10000[1] = var9 + var2 * var6; + return var10000; + } + + private void drawNameTagPreview(asq var1, aem var2, float var3, float var4, float var5, float var6, float var7, mv var8) { + ge var9 = null; + String var10 = null; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + arq var16 = null; + float var18 = 0.0F; + int var17 = -777768259; + + while (true) { + switch (var17) { + case -1161952608: + var15 = var18; + var1.pushMatrix(); + var1.pose().translate(var3, var4); + var1.pose().scale(var15, var15); + var1.pose().translate(-var3, -var4); + var16 = asj.all(oc.CONTROL); + var1.drawRoundedRect( + var3 - var12 / 2.0F, + var4 - var13 / 2.0F, + var12, + var13, + var16, + asu.BLACK.withAlpha(110).mulAlpha(var7) + ); + atb.drawRoundedBorder( + var1.pose(), var3 - var12 / 2.0F, var4 - var13 / 2.0F, var12, var13, pk.borderHairline(), var16, var8.getForegroundStroke().mulAlpha(var7) + ); + var1.drawText(var9, var10, var3 - var11 / 2.0F, var4 - var9.height() / 2.0F, aeo.colorizer(var2, var7)); + var1.popMatrix(); + return; + case -777768259: + default: + var9 = gl.SEMIBOLD.getFont(Math.max(7.0F, var5 * 0.22F)); + var10 = this.previewName(); + var11 = var9.width(var10); + var12 = var11 + 12.0F; + var13 = var9.height() + 8.0F; + var14 = var6 * 0.92F; + if (var12 > var14) { + var17 = 1985756204; + } else { + var17 = 1968657899; + } + break; + case 931581013: + var18 = var14 / var12; + var17 = -1161952608; + break; + case 1968657899: + var18 = 1.0F; + var17 = -1161952608; + break; + case 1985756204: + if (var12 > 0.0F) { + var17 = 931581013; + } else { + var17 = 1968657899; + } + } + } + } + + private String previewName() { + Minecraft var1 = null; + String var3 = null; + int var2 = -1175445583; + + while (true) { + switch (var2) { + case -2106168609: + var3 = "Player"; + var2 = 355902012; + break; + case -1175445583: + default: + var1 = Minecraft.getInstance(); + if (var1.player == null) { + var2 = -2106168609; + } else { + var2 = 345255215; + } + break; + case 345255215: + var3 = var1.player.getScoreboardName(); + var2 = 355902012; + break; + case 355902012: + return var3; + } + } + } + + private void drawCheck(asq var1, float var2, float var3, float var4, asu var5) { + float var6 = Math.max(1.2F, var4 * 0.22F); + var1.pushMatrix(); + var1.pose().translate(var2, var3); + var1.pose().rotate((float)Math.toRadians(45.0)); + float var7 = var4 * 0.62F; + float var8 = var4 * 0.34F; + var1.drawRoundedRect(-var6 / 2.0F, -var7, var6, var7 + var6 / 2.0F, asj.pill(var6), var5); + var1.drawRoundedRect(-var8, -var6 / 2.0F, var8 + var6 / 2.0F, var6, asj.pill(var6), var5); + var1.popMatrix(); + } + + private void renderEmpty(asq var1, float var2, float var3, float var4, float var5, float var6, mv var7, boolean var8) { + ge var9 = null; + ge var10 = null; + int var11 = 0; + int var12 = 0; + String var13 = null; + String var14 = null; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + int var20 = 0; + int var21 = 0; + String var22 = null; + String var23 = null; + int var19 = -178869754; + + while (true) { + switch (var19) { + case -2031476474: + var23 = "Upload a skin on evoproject.xyz to wear it here"; + var19 = 156416566; + break; + case -1970887982: + var23 = "Turn on Cosmetics - Online sync to load your uploaded skins"; + var19 = 156416566; + break; + case -1914265290: + var21 = 0; + var19 = -161255075; + break; + case -1913573078: + if (var11 != 0) { + var19 = -2031476474; + } else { + var19 = -408783046; + } + break; + case -1621343501: + if (var12 != 0) { + var19 = -1970887982; + } else { + var19 = -1913573078; + } + break; + case -771616110: + var11 = var20; + if (var11 != 0) { + var19 = 1706026148; + } else { + var19 = -1914265290; + } + break; + case -751271412: + var21 = 1; + var19 = -161255075; + break; + case -631044952: + var22 = "Coming soon"; + var19 = 584040527; + break; + case -479344878: + var20 = 0; + var19 = -771616110; + break; + case -408783046: + var23 = "New cosmetics land here"; + var19 = 156416566; + break; + case -198001602: + if (var11 != 0) { + var19 = 1214645664; + } else { + var19 = -631044952; + } + break; + case -178869754: + default: + var9 = asp.font(oe.HEADING); + var10 = asp.font(oe.MICRO); + if (this.selectedSlot == aec.PLAYERSKINS) { + var19 = 506792070; + } else { + var19 = -479344878; + } + break; + case -161255075: + var12 = var21; + if (var8) { + var19 = 817067657; + } else { + var19 = 1122614716; + } + break; + case 156416566: + var14 = var23; + var15 = oq.current().spacing(od.MD); + var16 = var9.height() + var15 + var10.height(); + var17 = var2 + var4 / 2.0F; + var18 = var3 + (Math.max(0.0F, var5 - var3) - var16) / 2.0F; + var1.drawText(var9, var13, var17 - var9.width(var13) / 2.0F, var18, oq.current().color(nx.ON_SURFACE_MUTED).mulAlpha(var6)); + var1.drawText( + var10, var14, var17 - var10.width(var14) / 2.0F, var18 + var9.height() + var15, oq.current().color(nx.ON_SURFACE_FAINT).mulAlpha(var6) + ); + return; + case 506792070: + var20 = 1; + var19 = -771616110; + break; + case 584040527: + var13 = var22; + if (var8) { + var19 = 1622410682; + } else { + var19 = -1621343501; + } + break; + case 817067657: + var22 = "Nothing found"; + var19 = 584040527; + break; + case 1122614716: + if (var12 != 0) { + var19 = 2083064548; + } else { + var19 = -198001602; + } + break; + case 1214645664: + var22 = "No skins uploaded"; + var19 = 584040527; + break; + case 1622410682: + var23 = "Try another cosmetic name"; + var19 = 156416566; + break; + case 1706026148: + if (!sw.INSTANCE.syncSetting.isEnabled()) { + var19 = -751271412; + } else { + var19 = -1914265290; + } + break; + case 2083064548: + var22 = "Online sync is off"; + var19 = 584040527; + } + } + } + + public boolean handleMouseClicked(double var1, double var3, String var5) { + if (this.hasInspectBind() && this.bindBounds.contains(var1, var3)) { + this.binding = (boolean)(((!this.binding + ? 1: (-731563552 | 731563552) + (-731563552 & 731563552))) != 0); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + + return (boolean)(((1)) != 0); + } else { + this.binding = (boolean)(((0)) != 0); + + for (int var6 = 0; var6 < this.tabBounds.size(); var6++) { + if (this.tabBounds.contains(var6, var1, var3)) { + aec var7 = aec.values()[var6]; + if (var7 != this.selectedSlot) { + int var8 = this.selectedSlot.ordinal(); + int var9 = var7.ordinal(); + float var10 = var9 > var8 ? 1.0F : -1.0F; + this.selectedSlot = var7; + this.releaseCardState(); + ArrayList var11 = new ArrayList<>(aed.getInstance().bySlot(this.selectedSlot)); + if (var5 != null && !var5.trim().isEmpty()) { + String var12 = var5.toLowerCase(); + var11.removeIf(var1x -> { + int var3x = 0; + int var2 = 1026950125; + + while (true) { + switch (var2) { + case -1791258462: + return (boolean)((var3x) != 0); + case -1662476345: + var3x = 1; + var2 = -1791258462; + break; + case 447921449: + var3x = 0; + var2 = -1791258462; + break; + case 1026950125: + default: + if (!var1x.getName().toLowerCase().contains(var12)) { + var2 = -1662476345; + } else { + var2 = 447921449; + } + } + } + }); + } + + for (aeb var13 : var11) { + aaf var14 = this.cardPhysics.computeIfAbsent(var13, var0 -> new aaf()); + float var15 = (float)(Math.random() * 150.0); + float var16 = (float)((Math.random() - 0.5) * 120.0); + var14.offsetX = var10 * (350.0F + var15); + var14.offsetY = var16; + if (var14.initialized && var14.animationPosition != null && var14.animationY != null) { + var14.currentX = var14.targetX + var14.offsetX; + var14.currentY = var14.targetY + var14.offsetY; + var14.animationPosition.jumpTo(var14.currentX); + var14.animationY.jumpTo(var14.currentY); + } + } + + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playTab(); + } + } + + return (boolean)(((1)) != 0); + } + } + + for (int var17 = 0; var17 < this.cardBounds.size(); var17++) { + ct var18 = this.hoverAnimations.get(this.cardEntries.get(var17)); + this.hoverVisual( + this.cardBounds.x(var17), + this.cardBounds.y(var17), + this.cardBounds.width(var17), + this.cardBounds.height(var17), + var18 == null ? 0.0F : var18.value() + ); + if (aqj.isHovered( + var1, + var3, + this.visual[0], + this.visual[1], + this.visual[2], + this.visual[3] + )) { + aed.getInstance().toggle(this.cardEntries.get(var17)); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + + return (boolean)(((1)) != 0); + } + } + + return (boolean)(((0)) != 0); + } + } +} diff --git a/src/main/java/defpackage/aai.java b/src/main/java/defpackage/aai.java new file mode 100644 index 0000000..38076bf --- /dev/null +++ b/src/main/java/defpackage/aai.java @@ -0,0 +1,29 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:aai.class */ +/* synthetic */ class aai { + static final /* synthetic */ int[] $SwitchMap$evo$systems$social$InventoryShareService$ViewState = new int[ank.values().length]; + + static { + try { + $SwitchMap$evo$systems$social$InventoryShareService$ViewState[ank.READY.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$social$InventoryShareService$ViewState[ank.WAITING.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$social$InventoryShareService$ViewState[ank.LOADING.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$social$InventoryShareService$ViewState[ank.DENIED.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + try { + $SwitchMap$evo$systems$social$InventoryShareService$ViewState[ank.FAILED.ordinal()] = 5; + } catch (NoSuchFieldError e5) { + } + } +} diff --git a/src/main/java/defpackage/aaj.java b/src/main/java/defpackage/aaj.java new file mode 100644 index 0000000..fe95d8d --- /dev/null +++ b/src/main/java/defpackage/aaj.java @@ -0,0 +1,2915 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.ConnectScreen; +import net.minecraft.client.gui.screens.TitleScreen; +import net.minecraft.client.model.geom.builders.UVPair; +import net.minecraft.client.multiplayer.ServerData; +import net.minecraft.client.multiplayer.ServerData.Type; +import net.minecraft.client.multiplayer.resolver.ServerAddress; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import net.minecraft.world.item.ItemStack; + +public class aaj { + private static final String EMPTY_CHAT_TITLE = "No messages yet"; + private static final String EMPTY_CHAT_HINT = "Say hi to start the conversation"; + private static final float EMPTY_CHAT_HEIGHT = 34.0F; + private static final String EMPTY_FRIENDS_TITLE = "No friends yet"; + private static final String EMPTY_FRIENDS_HINT = "Add someone by username, UID or game nick"; + private static final String SIGNED_OUT_TITLE = "Not signed in"; + private static final String EMPTY_GLYPH = "u"; + private static final float EMPTY_BLOCK_HEIGHT = 78.0F; + private static final String SIGNED_OUT_HINT = "Sign in to use the friends list"; + private static final int SKELETON_ROWS = 3; + private static final float SKELETON_ROW_HEIGHT = 26.0F; + private static final float SKELETON_INSET = 6.0F; + private static final float SKELETON_DOT_SIZE = 10.0F; + private static final float SKELETON_BAR_TOP = 7.0F; + private static final float SKELETON_BAR_HEIGHT = 4.0F; + private static final float SKELETON_NAME_RATIO = 0.36F; + private static final float SKELETON_SUB_RATIO = 0.22F; + private static final float SKELETON_SHINE_RATIO = 0.3F; + private static final float SKELETON_SHINE_SOFTNESS = 6.0F; + private static final float SKELETON_SHINE_INSET = 4.0F; + private static final float SKELETON_PLATE_ALPHA = 0.6F; + private static final float SKELETON_BLOCK_ALPHA = 0.16F; + private static final float SKELETON_SHINE_ALPHA = 0.045F; + private static final float SKELETON_ROW_PHASE = 0.14F; + private static final float SKELETON_SWEEP_FRACTION = 0.62F; + private static final float NO_ROW_FADE = 0.0F; + private static final float SMOOTH_THREE = 3.0F; + private static final float SMOOTH_TWO = 2.0F; + private static final float SKELETON_PERIOD_FACTOR = 3.0F; + private static final float FRIEND_ROW_HEIGHT = 26.0F; + private static final float ROW_GAP = 5.0F; + private static final float SKELETON_MIN_FADE = 0.01F; + private static final float ROW_ENTRY_RISE = 5.0F; + private static final float ROW_STAGGER_MAX = 0.08F; + private static final float ROW_STAGGER_BUDGET = 0.5F; + private static final String FRIENDS_HEADING_PREFIX = "FRIENDS - "; + private static final asu ONLINE = new asu( + 88, + 194, + 125, + (-1489503602 | 1489503857) + (-1489503602 & 1489503857) + ); + private static final asu ACCEPT = new asu( + 88, + 194, + 125, + (-1275215497 | 1275215752) + (-1275215497 & 1275215752) + ); + private static final asu DECLINE = new asu( + 226, + 96, + 96, + (385821973 ^ -385821718) + ((385821973 & -385821718) << 1) + ); + private static final int REGION_SUBMIT = 1; + private static final int REGION_TOGGLE_SHARE = 2; + private static final int REGION_ACCEPT = 3; + private static final int REGION_DECLINE = 4; + private static final int REGION_REMOVE = 5; + private static final int REGION_JOIN = 6; + private static final int REGION_REQUEST_CONFIG = 7; + private static final int REGION_OPEN_INVENTORY = 8; + private static final int REGION_OPEN_CHAT = 9; + private static final int REGION_CLOSE_CHAT = 10; + private static final int REGION_SEND_CHAT = 11; + private static final int REGION_CLOSE_INVENTORY = 12; + private static final int REGION_TOGGLE_PIN = 13; + private static final int REGION_SAVE_PHOTO = 14; + private static final float PHOTO_BUBBLE_SIZE = 92.0F; + private static final float PHOTO_BUBBLE_PADDING = 4.0F; + private static final float PHOTO_BUBBLE_LABEL_GAP = 3.0F; + private static final float PHOTO_BUBBLE_ALPHA = 0.55F; + private static final String PHOTO_LOADING_LABEL = "loading"; + private static final String PHOTO_SAVE_LABEL = "Click to save"; + private static final String PHOTO_SAVED_LABEL = "In your gallery"; + private static final String PHOTO_SAVED_RESULT = "Photo saved"; + private static final String PHOTO_SAVE_FAILED = "Photo is still loading"; + private static final int REGION_STRIDE = 4; + private static final int REGION_CAPACITY = 32; + private static final int REGION_GROWTH = 2; + private static final String TOOLTIP_OPEN_CHAT = "Open the chat with this friend"; + private static final String TOOLTIP_JOIN = "Join the server they are playing on"; + private static final String TOOLTIP_REQUEST_CONFIG = "Ask them to send you their config"; + private static final String TOOLTIP_AWAITING_CONFIG = "Waiting for their config"; + private static final String TOOLTIP_OPEN_INVENTORY = "Open the inventory they share"; + private static final String TOOLTIP_NO_INVENTORY = "This friend does not share their inventory"; + private static final String TOOLTIP_REMOVE_FRIEND = "Remove this friend"; + private static final String TOOLTIP_ACCEPT_REQUEST = "Accept this friend request"; + private static final String TOOLTIP_DECLINE_REQUEST = "Decline this friend request"; + private static final String TOOLTIP_CANCEL_REQUEST = "Cancel this friend request"; + private static final String TOOLTIP_SHARE_ON = "Friends can open your inventory, click to stop sharing"; + private static final String TOOLTIP_SHARE_OFF = "Your inventory is private, click to start sharing"; + private static final String SHARE_ON_RESULT = "Inventory sharing on"; + private static final String SHARE_OFF_RESULT = "Inventory sharing off"; + private static final String CONFIG_REQUESTED_RESULT = "Config requested"; + private static final String NOT_SHARING_SUFFIX = " does not share their inventory"; + private arn inputField; + private arn chatInput; + private float[] regionBounds = new float[128]; + private int[] regionActions = new int[32]; + private Object[] regionPayloads = new Object[32]; + private int regionCount; + private boolean fieldBoundsValid; + private float fieldX; + private float fieldY; + private float fieldWidth; + private float fieldHeight; + private boolean chatFieldBoundsValid; + private float chatFieldX; + private float chatFieldY; + private float chatFieldWidth; + private float chatFieldHeight; + private final ct listReveal = ct.layout(ob.SETTLED); + private boolean skeletonSeen; + private int headingCount = -1; + private String heading = "FRIENDS - "; + private float viewTop; + private float viewBottom; + private String message; + private boolean messageError; + private long messageAt; + private String inventoryWith; + private String inventoryStatus; + private String chatWith; + private boolean chatOnline; + private String chatStatus; + private List chatMessages = new ArrayList<>(); + private final List chatPending = new ArrayList<>(); + private boolean chatLoading; + private boolean threadInFlight; + private boolean scrollToBottom; + private long lastChatPoll; + private static final int HOVER_ROW = 0; + private static final int HOVER_CHAT = 1; + private static final int HOVER_JOIN = 2; + private static final int HOVER_CONFIG = 3; + private static final int HOVER_INVENTORY = 4; + private static final int HOVER_REMOVE = 5; + private static final int HOVER_ACCEPT = 6; + private static final int HOVER_DECLINE = 7; + private static final int HOVER_SLOTS = 8; + private static final float ROW_HOVER_STROKE_ALPHA = 0.5F; + private static final float ICON_IDLE_ALPHA = 0.55F; + private static final float ICON_ACTIVE_ALPHA = 0.95F; + private static final float ICON_DISABLED_ALPHA = 0.3F; + private static final float AWAITING_STATE = 0.75F; + private static final float REMOVE_ALPHA = 0.9F; + private static final float OUTGOING_CANCEL_ALPHA = 0.8F; + private static final String ADD_LABEL = "Add"; + private static final String SEND_LABEL = "Send"; + private static final float PRIMARY_IDLE_ALPHA = 0.85F; + private static final float SECONDARY_IDLE_ALPHA = 0.55F; + private static final float SECONDARY_HOVER_ALPHA = 0.9F; + private static final float PIN_ACTIVE_STATE = 0.8F; + private static final String BACK_LABEL = "Back"; + private static final String PIN_ON_LABEL = "Pin to HUD"; + private static final String PIN_OFF_LABEL = "Unpin"; + private static final float SLOT_HOVER_TINT = 0.35F; + private static final float OUTGOING_ROW_ALPHA = 0.7F; + private static final String CONFIG_GLYPH = "g"; + private static final float REMOVE_ARM_THRESHOLD = 0.75F; + private static final float ICON_SIZE = 10.0F; + private static final float ICON_GAP = 7.0F; + private static final float ICON_STEP = 17.0F; + private static final float REMOVE_BUTTON_SIZE = 11.0F; + private static final float ROW_EDGE_PAD = 8.0F; + private static final float ROW_TEXT_INSET = 20.0F; + private static final float ROW_HOVER_SETTLED = 1.0F; + private static final float ROW_NO_HOVER_GROWTH = 0.0F; + private static final float BADGE_HEIGHT = 8.0F; + private static final float BADGE_PAD = 5.0F; + private static final float BADGE_GAP = 5.0F; + private static final float BADGE_FONT_SIZE = 4.5F; + private static final int UNREAD_OVERFLOW = 9; + private static final String UNREAD_OVERFLOW_LABEL = "9+"; + private static final String SINGLEPLAYER_SERVER = "Singleplayer"; + private static final String REQUEST_GLYPH = "u"; + private static final String REQUEST_SUBTITLE = "wants to be your friend"; + private static final String PENDING_LABEL = "Pending"; + private static final float REQUEST_ICON_GAP = 6.0F; + private static final float REQUEST_BUTTON_SIZE = 12.0F; + private static final float REQUEST_BUTTON_GAP = 5.0F; + private static final float PENDING_GAP = 6.0F; + private static final float ICON_HIT_PAD = 3.0F; + private final ct shareHover = asa.spring(); + private final ct shareCardHover = asa.spring(); + private final ct addButtonHover = asa.spring(); + private final ct sendButtonHover = asa.spring(); + private final ct chatBackHover = asa.spring(); + private final ct inventoryBackHover = asa.spring(); + private final ct pinHover = asa.spring(); + private final List slotHoverSprings = new ArrayList<>(); + private int slotHoverIndex; + private final Map rowAutoScrollers = new HashMap<>(); + private final Map rowHoverSprings = new HashMap<>(); + + private static arq PANEL_RADIUS() { + return asj.all(oc.PANEL); + } + + private static arq ROW_RADIUS() { + return asj.all(oc.CARD); + } + + private static arq BUTTON_RADIUS() { + return asj.all(oc.ROW); + } + + private static arq SKELETON_BAR_RADIUS() { + return asj.all(oc.CHIP); + } + + private void rowAutoScroll(String var1, boolean var2, float var3, float var4) { + yc var5 = null; + int var6 = -937291526; + + while (true) { + switch (var6) { + case -2031751455: + this.rowAutoScrollers.computeIfAbsent(var1, var0 -> new zw()).update(var5, var2, 1.0F, var3, var4, 0.0F, this.viewTop, this.viewBottom); + return; + case -1771447397: + return; + case -937291526: + } + + var5 = bz.getInstance().getMenuScreen(); + if (var5 == null) { + var6 = -1771447397; + } else { + var6 = -2031751455; + } + } + } + + private String friendsHeading(int var1) { + int var2 = 1204695729; + + while (true) { + switch (var2) { + case -2112971878: + return this.heading; + case 188896572: + this.headingCount = var1; + this.heading = "FRIENDS - " + var1; + var2 = -2112971878; + break; + case 1204695729: + default: + if (var1 != this.headingCount) { + var2 = 188896572; + } else { + var2 = -2112971878; + } + } + } + } + + private static float rowStagger(int var0) { + float var2 = 0.0F; + int var1 = -1738756737; + + while (true) { + switch (var1) { + case -2086395211: + var2 = 0.0F; + var1 = 648714196; + break; + case -1738756737: + default: + if (var0 > (1562872995 ^ -1562872994) + ((1562872995 & -1562872994) << 1)) { + var1 = -1277906827; + } else { + var1 = -2086395211; + } + break; + case -1277906827: + var2 = Math.min(0.08F, 0.5F / (var0 - ((-851250929 | 851250930) + (-851250929 & 851250930)))); + var1 = 648714196; + break; + case 648714196: + return var2; + } + } + } + + private void addIconRegion(float var1, float var2, float var3, int var4, Object var5) { + float var6 = 3.0F; + this.addRegion(var1 - var6, var2 - var6, var3 + var6 * 2.0F, var3 + var6 * 2.0F, var4, var5); + } + + private void addRegion(float var1, float var2, float var3, float var4, int var5, Object var6) { + int var7 = 0; + int var8 = -817622800; + + while (true) { + switch (var8) { + case -817622800: + default: + if (this.regionCount == this.regionActions.length) { + var8 = -303857894; + } else { + var8 = 775206350; + } + break; + case -303857894: + var7 = this.regionActions.length * (2); + this.regionBounds = Arrays.copyOf(this.regionBounds, var7 * ((-132948059 ^ 132948063) + ((-132948059 & 132948063) << 1))); + this.regionActions = Arrays.copyOf(this.regionActions, var7); + this.regionPayloads = Arrays.copyOf(this.regionPayloads, var7); + var8 = 775206350; + break; + case 775206350: + var7 = this.regionCount * (4); + this.regionBounds[var7] = var1; + this.regionBounds[var7 + 1] = var2; + this.regionBounds[var7 + 2] = var3; + this.regionBounds[var7 + 3] = var4; + this.regionActions[this.regionCount] = var5; + this.regionPayloads[this.regionCount] = var6; + this.regionCount += 1; + return; + } + } + } + + private void clearRegions() { + Arrays.fill(this.regionPayloads, 0, this.regionCount, null); + this.regionCount = 0; + } + + private boolean dispatchRegion(double var1, double var3) { + int var5 = 0; + int var6 = 0; + int var7 = 1502787866; + + while (true) { + switch (var7) { + case -543039064: + var5++; + var7 = 1514295095; + break; + case -529783293: + var7 = -543039064; + break; + case -143691927: + this.runRegion(this.regionActions[var5], this.regionPayloads[var5]); + if (bz.getInstance().getSoundManager() != null) { + var7 = 1732321272; + } else { + var7 = 191758994; + } + break; + case 191758994: + return (boolean)(((1)) != 0); + case 351733493: + var6 = var5 * (4); + if (!aqj.isHovered( + var1, + var3, + this.regionBounds[var6], + this.regionBounds[var6 + 1], + this.regionBounds[var6 + 2], + this.regionBounds[var6 + 3] + )) { + var7 = -529783293; + } else { + var7 = -143691927; + } + break; + case 872211838: + return (boolean)(((0)) != 0); + case 1502787866: + default: + var5 = 0; + var7 = 1514295095; + break; + case 1514295095: + if (var5 < this.regionCount) { + var7 = 351733493; + } else { + var7 = 872211838; + } + break; + case 1732321272: + bz.getInstance().getSoundManager().playClick(); + var7 = 191758994; + } + } + } + + private void runRegion(int var1, Object var2) { + switch (var1) { + case 1: + this.submit(); + break; + case 2: + anl.toggleSharing( + var1x -> this.showResult( + var1x, + anl.isSharing() + ? "Inventory sharing on" + : "Inventory sharing off" + ) + ); + break; + case 3: + anb.respond((String)var2, (boolean)(((1)) != 0), this::showResult); + break; + case 4: + anb.respond((String)var2, (boolean)(((0)) != 0), this::showResult); + break; + case 5: + anb.remove((String)var2, this::showResult); + break; + case 6: + this.joinServer((amx)var2); + break; + case 7: + amv.ask( + (String)var2, + var1x -> this.showResult( + var1x, "Config requested" + ) + ); + break; + case 8: + this.openSharedInventory((amx)var2); + break; + case 9: + this.openChat((amx)var2); + break; + case 10: + this.closeChat(); + break; + case 11: + this.sendChat(); + break; + case 12: + this.closeInventory(); + break; + case 13: + this.togglePin((String)var2); + break; + case 14: + this.savePhoto((String)var2); + } + } + + private void openSharedInventory(amx var1) { + int var2 = 1932788198; + + while (true) { + switch (var2) { + case -787362140: + this.openInventory(var1.username()); + var2 = 643558155; + break; + case 545429271: + this.showResult(var1.username() + " does not share their inventory"); + var2 = 643558155; + break; + case 643558155: + return; + case 1932788198: + default: + if (var1.sharing()) { + var2 = -787362140; + } else { + var2 = 545429271; + } + } + } + } + + private void togglePin(String var1) { + int var2 = -2038557285; + + while (true) { + switch (var2) { + case -2038557285: + default: + if (anl.isPinned(var1)) { + var2 = 525558032; + } else { + var2 = -421336361; + } + break; + case -421336361: + anl.pin(var1); + var2 = 159981987; + break; + case 159981987: + return; + case 525558032: + anl.unpin(); + var2 = 159981987; + } + } + } + + private arn inputField() { + int var1 = 1196384529; + + while (true) { + switch (var1) { + case -2015995462: + this.inputField = new arn( + new UVPair(0.0F, 0.0F), + asp.font(oe.CAPTION), + "Username, UID or game nick", + 120.0F + ); + var1 = -191346214; + break; + case -191346214: + return this.inputField; + case 1196384529: + default: + if (this.inputField == null) { + var1 = -2015995462; + } else { + var1 = -191346214; + } + } + } + } + + private arn chatInput() { + int var1 = 971702068; + + while (true) { + switch (var1) { + case -1252322911: + return this.chatInput; + case -496705910: + this.chatInput = new arn( + new UVPair(0.0F, 0.0F), + asp.font(oe.CAPTION), + "Message", + 120.0F + ); + this.chatInput.setMaxLength((-1697043227 | 1697044227) + (-1697043227 & 1697044227)); + var1 = -1252322911; + break; + case 971702068: + default: + if (this.chatInput == null) { + var1 = -496705910; + } else { + var1 = -1252322911; + } + } + } + } + + public boolean consumeScrollToBottom() { + int var1 = -1078576124; + + while (true) { + switch (var1) { + case -1078576124: + default: + if (this.scrollToBottom) { + var1 = 1129902048; + } else { + var1 = 557245093; + } + break; + case 557245093: + return (boolean)(((0)) != 0); + case 1129902048: + this.scrollToBottom = (boolean)(((0)) != 0); + return (boolean)(((1)) != 0); + } + } + } + + public boolean isChatOpen() { + int var2 = 0; + int var1 = 1400380495; + + while (true) { + switch (var1) { + case -824551988: + var2 = 1; + var1 = 1640130120; + break; + case -175447370: + var2 = 0; + var1 = 1640130120; + break; + case 1400380495: + default: + if (this.chatWith != null) { + var1 = -824551988; + } else { + var1 = -175447370; + } + break; + case 1640130120: + return (boolean)((var2) != 0); + } + } + } + + public float render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, mv var8, float var9, float var10) { + this.clearRegions(); + this.viewTop = var3; + this.viewBottom = var3 + var5; + if (this.inventoryWith != null) { + return this.renderInventory(var1, var2, var4, var5, var7, var8, var9, var10); + } + + if (this.chatWith != null) { + return this.renderChat(var1, var2, var3, var4, var6, var7, var8, var9, var10); + } + + ge var11 = asp.font(oe.LABEL_STRONG); + ge var12 = asp.font(oe.BODY); + ge var13 = asp.font(oe.MICRO); + ge var14 = gl.ICONS.getFont(6.0F); + asu var15 = var8.getWhite().mulAlpha(var7); + asu var16 = var8.getGrayLight().mulAlpha(var7); + asu var17 = var8.getColor().mulAlpha(var7); + asu var18 = var8.getForegroundColor().mulAlpha(0.6F * var7); + asu var19 = var8.getForegroundStroke().mulAlpha(var7); + float var20 = var3 - var6; + float var21 = var20 + 6.0F; + var21 = this.renderAddCard(var1, var2, var21, var4, var7, var8, var9, var10, var12, var13, var15, var16, var17, var18, var19); + var21 = this.renderShareCard(var1, var2, var21, var4, var7, var8, var9, var10, var12, var13, var15, var16, var17, var18, var19); + List var22 = anb.incoming(); + List var23 = anb.outgoing(); + List var24 = anb.friends(); + if (!var22.isEmpty() || !var23.isEmpty()) { + var1.drawText(var11, "REQUESTS", var2 + 2.0F, var21, var16); + var21 += var11.height() + 5.0F; + + for (amy var26 : var22) { + var21 = this.renderIncomingRow(var1, var2, var21, var4, var7, var8, var9, var10, var26, var12, var13, var14, var15, var16, var18, var19); + } + + for (amy var39 : var23) { + var21 = this.renderOutgoingRow(var1, var2, var21, var4, var7, var8, var9, var10, var39, var12, var13, var14, var15, var16, var18, var19); + } + + var21 += 6.0F; + } + + var1.drawText(var11, this.friendsHeading(var24.size()), var2 + 2.0F, var21, var16); + var21 += var11.height() + 5.0F; + int var38 = var24.isEmpty() && cp.isAuthorized() && !anb.isSynced() + ? 1: 0; + if (var38 != 0) { + this.skeletonSeen = (boolean)(((1)) != 0); + this.listReveal.jumpTo(0.0F); + } + + this.listReveal.animateTo(1.0F); + float var40 = this.skeletonSeen ? this.listReveal.update() : 1.0F; + float var27 = 1.0F - var40; + if (var27 > 0.01F && this.skeletonSeen) { + this.renderSkeletonRows(var1, var2, var21, var4, var7 * var27, var8); + } + + if (var24.isEmpty()) { + if (var38 == 0) { + boolean var28 = cp.isAuthorized(); + arw.draw( + var1, + var8, + "u", + var28 + ? "No friends yet" + : "Not signed in", + var28 + ? "Add someone by username, UID or game nick" + : "Sign in to use the friends list", + var2, + var21, + var4, + 78.0F, + var7 * var40 + ); + var21 += 78.0F; + } else { + var21 += skeletonHeight(); + } + } else { + float var41 = rowStagger(var24.size()); + float var29 = 1.0F - var41 * (var24.size() - ((-1236637443 | 1236637444) + (-1236637443 & 1236637444))); + + for (int var30 = 0; var30 < var24.size(); var30++) { + float var31 = Mth.clamp((var40 - var30 * var41) / var29, 0.0F, 1.0F); + float var32 = 5.0F * (1.0F - var31); + this.renderFriendRow( + var1, + var2, + var21 + var32, + var4, + var7 * var31, + var8, + var9, + var10, + (amx)var24.get(var30), + var12, + var13, + var14, + var15.mulAlpha(var31), + var16.mulAlpha(var31), + var18.mulAlpha(var31), + var19.mulAlpha(var31) + ); + var21 += 31.0F; + } + } + + return var21 - var20 + 4.0F; + } + + private float renderAddCard( + asq var1, + float var2, + float var3, + float var4, + float var5, + mv var6, + float var7, + float var8, + ge var9, + ge var10, + asu var11, + asu var12, + asu var13, + asu var14, + asu var15 + ) { + float var16 = 26.0F; + boolean var17 = this.inputField().isSelected(); + this.fieldBoundsValid = (boolean)(((1)) != 0); + this.fieldX = var2; + this.fieldY = var3; + this.fieldWidth = var4; + this.fieldHeight = var16; + var1.drawSurface(aso.CARD, var2, var3, var4, var16, PANEL_RADIUS(), var14.getRGB()); + atb.drawRoundedBorder(var1.pose(), var2, var3, var4, var16, pk.borderHairline(), asj.all(oc.PANEL), var17 ? var13.mulAlpha(0.85F) : var15); + float var18 = 42.0F; + float var19 = var16 - 8.0F; + float var20 = var2 + var4 - var18 - 4.0F; + float var21 = var3 + 4.0F; + this.inputField().setWidth(var20 - (var2 + 9.0F) - 6.0F); + ge var22 = this.inputField().getFont(); + this.inputField().render(var1, var2 + 9.0F, var3 + (var16 - var22.height()) / 2.0F, var11, var12.mulAlpha(var17 ? 0.0F : 0.7F)); + this.drawPrimaryButton( + var1, + var6, + this.addButtonHover, + var20, + var21, + var18, + var19, + "Add", + var13, + var11, + var5, + var7, + var8 + ); + this.addRegion(var20, var21, var18, var19, 1, null); + var3 += var16; + if (this.message != null + && System.currentTimeMillis() - this.messageAt < (6594163775332359528L | -6594163775332355528L) + (6594163775332359528L & -6594163775332355528L)) { + asu var23 = (this.messageError ? DECLINE : ONLINE).mulAlpha(var5); + var1.drawText(var10, this.message, var2 + 2.0F, var3 + 4.0F, var23); + var3 += var10.height() + 6.0F; + } + + return var3 + 8.0F; + } + + private float renderShareCard( + asq var1, + float var2, + float var3, + float var4, + float var5, + mv var6, + float var7, + float var8, + ge var9, + ge var10, + asu var11, + asu var12, + asu var13, + asu var14, + asu var15 + ) { + float var16 = 26.0F; + boolean var17 = anl.isSharing(); + float var18 = this.shareCardHover.update(this.iconHovered(var7, var8, var2, var3, var4, var16) ? 1.0F : 0.0F); + var1.drawRoundedRect(var2, var3, var4, var16, asj.all(oc.PANEL), var14); + asa.plateRow(var1, var2, var3, var4, var16, asa.plateColor(var6), var5, var18); + atb.drawRoundedBorder( + var1.pose(), var2, var3, var4, var16, pk.borderHairline(), asj.all(oc.PANEL), var15.mix(var6.getColor().mulAlpha(0.5F * var5), var18) + ); + float var19 = 10.0F; + float var20 = var2 + 9.0F; + float var21 = var3 + (var16 - var19) / 2.0F; + this.drawInventoryIcon(var1, var20, var21, var19, (var17 ? var6.getColor() : var6.getGray()).mulAlpha(0.9F * var5)); + float var22 = var20 + var19 + 7.0F; + var1.drawText(var9, "Share my inventory", var22, var3 + 5.0F, var11); + var1.drawText( + var10, + var17 + ? "Friends can open it any time" + : "Friends cannot see your items", + var22, + var3 + var16 - var10.height() - 5.0F, + var17 ? var12.mix(ONLINE, 0.35F) : var12 + ); + float var23 = 20.0F; + float var24 = 10.0F; + float var25 = var2 + var4 - var23 - 9.0F; + float var26 = var3 + (var16 - var24) / 2.0F; + float var27 = var24 / 2.0F - 1.5F; + asu var28 = var17 ? var13 : var6.getGray().mulAlpha(0.7F * var5); + var1.drawRoundedRect(var25, var26, var23, var24, asj.pill(var24), anl.isToggling() ? var28.mulAlpha(0.5F) : var28); + float var29 = var17 ? var25 + var23 - var27 * 2.0F - 1.5F : var25 + 1.5F; + var1.drawRoundedRect(var29, var26 + 1.5F, var27 * 2.0F, var27 * 2.0F, asj.uniform(var27), asu.WHITE.mulAlpha(var5)); + this.addRegion(var2, var3, var4, var16, 2, null); + this.requestTooltip( + var17 + ? "Friends can open your inventory, click to stop sharing" + : "Your inventory is private, click to start sharing", + var25, + var26, + var23, + var24, + this.shareHover.update(this.iconHovered(var7, var8, var25, var26, var23, var24) ? 1.0F : 0.0F) + ); + return var3 + var16 + 10.0F; + } + + private float renderIncomingRow( + asq var1, + float var2, + float var3, + float var4, + float var5, + mv var6, + float var7, + float var8, + amy var9, + ge var10, + ge var11, + ge var12, + asu var13, + asu var14, + asu var15, + asu var16 + ) { + float var17 = 22.0F; + float var18 = this.rowHover(var9.username(), 0, this.iconHovered(var7, var8, var2, var3, var4, var17)); + var1.drawSurface(aso.ROW, var2, var3, var4, var17, ROW_RADIUS(), var15.getRGB()); + asa.plateRow(var1, var2, var3, var4, var17, asa.plateColor(var6), var5, var18); + atb.drawRoundedBorder( + var1.pose(), + var2, + var3, + var4, + var17, + pk.borderHairline(), + ROW_RADIUS(), + var16.mulAlpha(arx.classicFade() * (1.0F - var18)).mix(var6.getColor().mulAlpha(0.5F * var5), var18) + ); + var1.drawText( + var12, + "u", + var2 + 8.0F + asa.iconShift(var18), + var3 + (var17 - var12.height()) / 2.0F, + var6.getColor().mulAlpha(var5) + ); + float var19 = var2 + 8.0F + var12.width("u") + 6.0F; + float var20 = 12.0F; + float var21 = var2 + var4 - 8.0F - var20; + float var22 = var21 - 5.0F - var20; + float var23 = var3 + (var17 - var20) / 2.0F; + float var24 = Math.max(0.0F, var22 - 7.0F - var19); + String var25 = var9.username(); + var1.drawScrollingText( + var10, + var25, + var19, + var3 + (var17 - var10.height()) / 2.0F - 3.0F, + var24, + asa.liftText(var13, var6, var18), + (boolean)((((678358575 | -678358574) + (678358575 & -678358574)) + ) != 0)); + var1.drawScrollingText( + var11, + "wants to be your friend", + var19, + var3 + var17 / 2.0F + 1.5F, + var24, + var14, + (boolean)((((-999366105 | 999366106) + (-999366105 & 999366106)) + ) != 0)); + float var26 = this.rowHover(var25, 6, this.iconHovered(var7, var8, var22, var23, var20)); + float var27 = this.rowHover(var25, 7, this.iconHovered(var7, var8, var21, var23, var20)); + boolean var28 = this.beginActionIcon(var1, var6, var22, var23, var20, var26, var5); + this.drawMarkButton(var1, var22, var23, var20, ACCEPT.mulAlpha(var5), (boolean)(((1)) != 0), var5); + asa.pop(var1, var28); + boolean var29 = this.beginActionIcon(var1, var6, var21, var23, var20, var27, var5); + this.drawMarkButton(var1, var21, var23, var20, DECLINE.mulAlpha(var5), (boolean)(((0)) != 0), var5); + asa.pop(var1, var29); + this.addRegion(var22, var23, var20, var20, 3, var25); + this.addRegion(var21, var23, var20, var20, 4, var25); + this.requestTooltip( + "Accept this friend request", + var22, + var23, + var20, + var20, + var26 + ); + this.requestTooltip( + "Decline this friend request", var21, var23, var20, var20, var27 + ); + return var3 + var17 + 5.0F; + } + + private float renderOutgoingRow( + asq var1, + float var2, + float var3, + float var4, + float var5, + mv var6, + float var7, + float var8, + amy var9, + ge var10, + ge var11, + ge var12, + asu var13, + asu var14, + asu var15, + asu var16 + ) { + float var17 = 20.0F; + float var18 = this.rowHover( + var9.username(), 0, this.iconHovered(var7, var8, var2, var3, var4, var17) + ); + var1.drawSurface(aso.ROW, var2, var3, var4, var17, ROW_RADIUS(), var15.getRGBWithAlpha(0.7F)); + asa.plateRow(var1, var2, var3, var4, var17, asa.plateColor(var6), var5, var18); + atb.drawRoundedBorder( + var1.pose(), + var2, + var3, + var4, + var17, + pk.borderHairline(), + ROW_RADIUS(), + var16.mulAlpha(0.7F * arx.classicFade() * (1.0F - var18)).mix(var6.getColor().mulAlpha(0.5F * var5), var18) + ); + var1.drawText( + var12, + "u", + var2 + 8.0F + asa.iconShift(var18), + var3 + (var17 - var12.height()) / 2.0F, + var14 + ); + float var19 = var2 + 8.0F + var12.width("u") + 6.0F; + float var20 = 11.0F; + float var21 = var2 + var4 - 8.0F - var20; + float var22 = var3 + (var17 - var20) / 2.0F; + float var23 = var11.width("Pending"); + float var24 = var21 - 6.0F - var23; + var1.drawText( + var11, "Pending", var24, var3 + (var17 - var11.height()) / 2.0F, var14 + ); + float var25 = Math.max(0.0F, var24 - 7.0F - var19); + String var26 = var9.username(); + var1.drawScrollingText( + var10, + var26, + var19, + var3 + (var17 - var10.height()) / 2.0F, + var25, + asa.liftText(var13.mulAlpha(0.7F), var6, var18), + (boolean)((((-1058605379 | 1058605380) + (-1058605379 & 1058605380)) + ) != 0)); + float var27 = this.rowHover(var26, 5, this.iconHovered(var7, var8, var21, var22, var20)); + boolean var28 = this.beginActionIcon(var1, var6, var21, var22, var20, var27, var5); + this.drawMarkButton( + var1, + var21, + var22, + var20, + var6.getGray().mix(DECLINE, var27).mulAlpha(0.8F * var5), + (boolean)(((0)) != 0), + var5 + ); + asa.pop(var1, var28); + this.addRegion(var21, var22, var20, var20, 5, var26); + this.requestTooltip( + "Cancel this friend request", + var21, + var22, + var20, + var20, + var27 + ); + return var3 + var17 + 5.0F; + } + + private static float smoothstep(float var0) { + float var1 = 0.0F; + float var3 = 0.0F; + int var2 = 688480028; + + while (true) { + switch (var2) { + case -532852853: + var1 = var3; + return var1 * var1 * (3.0F - 2.0F * var1); + case -43861858: + var3 = 0.0F; + var2 = -532852853; + break; + case 688480028: + default: + if (var0 < 0.0F) { + var2 = -43861858; + } else { + var2 = 1694965096; + } + break; + case 1694965096: + var3 = Math.min(var0, 1.0F); + var2 = -532852853; + } + } + } + + private static float skeletonHeight() { + return 93.0F; + } + + private void renderSkeletonRows(asq var1, float var2, float var3, float var4, float var5, mv var6) { + asu var7 = null; + asu var8 = null; + asu var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = 0; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + int var22 = 1672413831; + + while (true) { + switch (var22) { + case -1697340703: + if (var12 < (-301212293 | 301212296) + (-301212293 & 301212296)) { + var22 = 985387303; + } else { + var22 = -105450816; + } + break; + case -105450816: + return; + case 985387303: + var13 = 26.0F; + var1.drawSurface(aso.ROW, var2, var3, var4, var13, ROW_RADIUS(), var7); + var14 = 10.0F; + var15 = var2 + 6.0F; + var16 = var3 + (var13 - var14) / 2.0F; + var1.drawRoundedRect(var15, var16, var14, var14, asj.pill(var14), var8); + var17 = var15 + var14 + 6.0F; + var1.drawRoundedRect(var17, var3 + 7.0F, var4 * 0.36F, 4.0F, SKELETON_BAR_RADIUS(), var8); + var1.drawRoundedRect(var17, var3 + var13 - 7.0F - 4.0F, var4 * 0.22F, 4.0F, SKELETON_BAR_RADIUS(), var8); + var18 = (var11 + var12 * 0.14F) % 1.0F; + var19 = smoothstep(Math.min(var18 / 0.62F, 1.0F)); + var20 = var4 * 0.3F; + var21 = var2 - var20 + (var4 + var20 * 2.0F) * var19; + var1.pushClipEdges(var2, var3, var2 + var4, var3 + var13, 0.0F, 0.0F, 6.0F, 6.0F); + atb.drawShadow(var1.pose(), var21, var3 + 4.0F, var20, var13 - 8.0F, 6.0F, ROW_RADIUS(), var9); + var1.popClip(); + var3 += var13 + 5.0F; + var12++; + var22 = -1697340703; + break; + case 1672413831: + default: + var7 = var6.getForegroundColor().mulAlpha(0.6F * var5); + var8 = var6.getGrayLight().mulAlpha(0.16F * var5); + var9 = var6.getWhite().mulAlpha(0.045F * var5); + var10 = oq.current().duration(ob.DELIBERATE) * 3.0F; + var11 = (float)(cs.elapsedMillis() % var10) / var10; + var12 = 0; + var22 = -1697340703; + } + } + } + + private void renderFriendRow( + asq var1, + float var2, + float var3, + float var4, + float var5, + mv var6, + float var7, + float var8, + amx var9, + ge var10, + ge var11, + ge var12, + asu var13, + asu var14, + asu var15, + asu var16 + ) { + float var17 = 26.0F; + String var18 = var9.username(); + int var19 = aqj.isHovered(var7, var8, var2, var3, var4, var17) && var8 >= this.viewTop && var8 <= this.viewBottom + ? 1: 0; + this.rowAutoScroll(var18, (boolean)((var19) != 0), var3, var17); + float var20 = this.rowHover(var18, 0, (boolean)((var19) != 0)); + var1.drawSurface(aso.ROW, var2, var3, var4, var17, ROW_RADIUS(), var15.getRGB()); + asa.plateRow(var1, var2, var3, var4, var17, asa.plateColor(var6), var5, var20); + atb.drawRoundedBorder( + var1.pose(), + var2, + var3, + var4, + var17, + pk.borderHairline(), + ROW_RADIUS(), + var16.mulAlpha(arx.classicFade() * (1.0F - var20)).mix(var6.getColor().mulAlpha(0.5F * var5), var20) + ); + float var21 = 2.4F; + float var22 = var2 + 10.0F; + float var23 = var3 + var17 / 2.0F; + asu var24 = var9.online() ? ONLINE.mulAlpha(var5) : var6.getGray().mulAlpha(var5); + if (var9.online()) { + var1.drawRoundedRect( + var22 - var21 - 1.5F, var23 - var21 - 1.5F, (var21 + 1.5F) * 2.0F, (var21 + 1.5F) * 2.0F, asj.uniform(var21 + 1.5F), ONLINE.mulAlpha(0.25F * var5) + ); + } + + var1.drawRoundedRect(var22 - var21, var23 - var21, var21 * 2.0F, var21 * 2.0F, asj.uniform(var21), var24); + float var25 = 10.0F; + float var26 = var2 + var4 - 8.0F - var25; + float var27 = var3 + (var17 - var25) / 2.0F; + int var28 = var9.online() + && var9.server() != null + && !"Singleplayer".equalsIgnoreCase(var9.server()) + ? 1: 0; + float var29 = var26 - 17.0F; + float var30 = (var28 != 0 ? var29 : var26) - 17.0F; + float var31 = var30 - 17.0F; + float var32 = 11.0F; + float var33 = var31 - 7.0F - var32; + float var34 = var2 + 20.0F; + float var35 = Math.max(0.0F, var33 - 7.0F - var34); + String var36 = var9.username(); + float var37 = 0.0F; + ge var38 = gl.SEMIBOLD.getFont(4.5F); + String var39 = null; + float var40 = 0.0F; + if (var9.unread() > 0) { + var39 = var9.unread() > 9? "9+" + : String.valueOf(var9.unread()); + var40 = Math.max(8.0F, var38.width(var39) + 5.0F); + var37 = var40 + 5.0F; + } + + float var41 = Math.max(0.0F, var35 - var37); + var1.drawScrollingText(var10, var36, var34, var3 + 5.0F, var41, var13, (boolean)((((-580273224 | 580273225) + (-580273224 & 580273225))) != 0)); + var1.drawScrollingText( + var11, + this.statusLine(var9), + var34, + var3 + var17 - var11.height() - 5.0F, + var35, + var9.online() ? var14.mix(ONLINE, 0.35F) : var14, + (boolean)((((-1821218882 | 1821218883) + (-1821218882 & 1821218883)) + ) != 0)); + if (var39 != null) { + float var42 = var34 + Math.min(var10.width(var36), var41) + 5.0F; + float var43 = var3 + 4.5F; + var1.drawRoundedRect(var42, var43, var40, 8.0F, asj.pill(8.0F), var6.getColor().mulAlpha(var5)); + var1.drawText(var38, var39, var42 + (var40 - var38.width(var39)) / 2.0F, var43 + (8.0F - var38.height()) / 2.0F, var6.getWhite().mulAlpha(var5)); + } + + float var56 = this.rowHover(var18, 1, this.iconHit(var7, var8, var26, var27, var25)); + boolean var57 = this.beginActionIcon(var1, var6, var26, var27, var25, var56, var5); + this.drawChatIcon(var1, var26, var27, var25, this.iconTint(var6.getGray(), var6.getColor(), Math.max(var20, var56), var5, 1.0F)); + asa.pop(var1, var57); + this.requestTooltip( + "Open the chat with this friend", + var26, + var27, + var25, + var25, + var56 + ); + if (var28 != 0) { + float var44 = this.rowHover(var18, 2, this.iconHit(var7, var8, var29, var27, var25)); + boolean var45 = this.beginActionIcon(var1, var6, var29, var27, var25, var44, var5); + this.drawJoinIcon(var1, var29, var27, var25, this.iconTint(var6.getGray(), ONLINE, var44, var5, 1.0F)); + asa.pop(var1, var45); + this.addIconRegion(var29, var27, var25, 6, var9); + this.requestTooltip( + "Join the server they are playing on", + var29, + var27, + var25, + var25, + var44 + ); + } else { + this.rowHover( + var18, 2, (boolean)((((1350228985 ^ -1350228985) + ((1350228985 & -1350228985) << 1)) + ) != 0)); + } + + float var58 = this.rowHover(var18, 3, this.iconHit(var7, var8, var30, var27, var25)); + boolean var59 = amv.isAwaiting(var18); + float var46 = Math.max(var58, var59 ? 0.75F : 0.0F); + boolean var47 = this.beginActionIcon(var1, var6, var30, var27, var25, var58, var5); + var1.drawText( + var12, + "g", + var30 + (var25 - var12.width("g")) / 2.0F, + var27 + (var25 - var12.height()) / 2.0F, + this.iconTint(var6.getGray(), var6.getColor(), var46, var5, 1.0F) + ); + asa.pop(var1, var47); + if (!var59) { + this.addIconRegion(var30, var27, var25, 7, var18); + } + + this.requestTooltip( + var59 + ? "Waiting for their config" + : "Ask them to send you their config", + var30, + var27, + var25, + var25, + var58 + ); + float var48 = this.rowHover(var18, 4, this.iconHit(var7, var8, var31, var27, var25)); + boolean var49 = var9.sharing(); + float var50 = var49 ? 0.55F : 0.3F; + float var51 = var49 ? var48 : 0.0F; + boolean var52 = this.beginActionIcon(var1, var6, var31, var27, var25, var51, var5); + this.drawInventoryIcon(var1, var31, var27, var25, this.iconTint(var6.getGray(), var6.getColor(), var51, var5, var50 / 0.55F)); + asa.pop(var1, var52); + this.addIconRegion(var31, var27, var25, 8, var9); + this.requestTooltip( + var49 + ? "Open the inventory they share" + : "This friend does not share their inventory", + var31, + var27, + var25, + var25, + var48 + ); + float var53 = var3 + (var17 - var32) / 2.0F; + float var54 = this.rowHover( + var18, + 5, + (boolean)(((var19 != 0 && this.iconHit(var7, var8, var33, var53, var32) + ? 1: (-1550807943 ^ 1550807943) + ((-1550807943 & 1550807943) << 1)) + ) != 0)); + if (var20 > 0.001F) { + boolean var55 = this.beginActionIcon(var1, var6, var33, var53, var32, var54, var5 * var20); + this.drawMarkButton( + var1, + var33, + var53, + var32, + var6.getGray().mix(DECLINE, var54).mulAlpha(0.9F * var5 * var20), + (boolean)(((0)) != 0), + var5 * var20 + ); + asa.pop(var1, var55); + if (var20 > 0.75F) { + this.addIconRegion(var33, var53, var32, 5, var18); + this.requestTooltip( + "Remove this friend", var33, var53, var32, var32, var54 + ); + } + } + + this.addRegion(var2, var3, var4, var17, 9, var9); + } + + private boolean iconHit(float var1, float var2, float var3, float var4, float var5) { + float var6 = 3.0F; + return this.iconHovered(var1, var2, var3 - var6, var4 - var6, var5 + var6 * 2.0F, var5 + var6 * 2.0F); + } + + private boolean iconHovered(float var1, float var2, float var3, float var4, float var5) { + return this.iconHovered(var1, var2, var3, var4, var5, var5); + } + + private boolean iconHovered(float var1, float var2, float var3, float var4, float var5, float var6) { + int var8 = 0; + int var7 = -875240595; + + while (true) { + switch (var7) { + case -875240595: + default: + if (var2 >= this.viewTop) { + var7 = 976887896; + } else { + var7 = 355525724; + } + break; + case -724088296: + var8 = 1; + var7 = 1169899916; + break; + case -395412228: + if (aqj.isHovered(var1, var2, var3, var4, var5, var6)) { + var7 = -724088296; + } else { + var7 = 355525724; + } + break; + case 355525724: + var8 = 0; + var7 = 1169899916; + break; + case 976887896: + if (var2 <= this.viewBottom) { + var7 = -395412228; + } else { + var7 = 355525724; + } + break; + case 1169899916: + return (boolean)((var8) != 0); + } + } + } + + private asu iconTint(asu var1, asu var2, float var3, float var4, float var5) { + return var1.mix(var2, var3).mulAlpha(var4 * (0.55F * var5 + (0.95F - 0.55F * var5) * var3)); + } + + private void drawPrimaryButton( + asq var1, mv var2, ct var3, float var4, float var5, float var6, float var7, String var8, asu var9, asu var10, float var11, float var12, float var13 + ) { + float var14 = var3.update(this.iconHovered(var12, var13, var4, var5, var6, var7) ? 1.0F : 0.0F); + asa.plateControl(var1, var4, var5, var6, var7, asa.plateColor(var2), var11, var14); + boolean var15 = asa.push(var1, var4, var5, var6, var7, var14, 0.05F); + var1.drawRoundedRect(var4, var5, var6, var7, asj.all(oc.ROW), var9.mulAlpha(0.85F + 0.14999998F * var14)); + ge var16 = asp.font(oe.LABEL_STRONG); + var1.drawText(var16, var8, var4 + (var6 - var16.width(var8)) / 2.0F, var5 + (var7 - var16.height()) / 2.0F, var10); + asa.pop(var1, var15); + } + + private boolean beginActionIcon(asq var1, mv var2, float var3, float var4, float var5, float var6, float var7) { + asa.plateControl(var1, var3, var4, var5, var5, asa.plateColor(var2), var7, var6); + return asa.push(var1, var3, var4, var5, var5, var6, 0.05F); + } + + private float rowHover(String var1, int var2, boolean var3) { + return this.rowHoverSprings.computeIfAbsent(var1, var0 -> newHoverSprings())[var2].update(var3 ? 1.0F : 0.0F); + } + + private static ct[] newHoverSprings() { + ct[] var0 = null; + int var1 = 0; + int var2 = 196158844; + + while (true) { + switch (var2) { + case -213984380: + if (var1 < (334795450 ^ -334795442) + ((334795450 & -334795442) << 1)) { + var2 = 1410430988; + } else { + var2 = 740816106; + } + break; + case 196158844: + default: + var0 = new ct[8]; + var1 = 0; + var2 = -213984380; + break; + case 740816106: + return var0; + case 1410430988: + var0[var1] = asa.spring(); + var1++; + var2 = -213984380; + } + } + } + + private void requestTooltip(String var1, float var2, float var3, float var4, float var5, float var6) { + int var7 = 1037732805; + + while (true) { + switch (var7) { + case -895239622: + ass.tooltip(var1, var1, var2, var3, var4, var5, asr.ABOVE); + return; + case -559193607: + return; + case 1037732805: + } + + if (var6 <= 0.5F) { + var7 = -559193607; + } else { + var7 = -895239622; + } + } + } + + private void drawJoinIcon(asq var1, float var2, float var3, float var4, asu var5) { + float var6 = 1.4F; + float var7 = var4 * 0.3F; + float var8 = var2 + var4 * 0.62F; + float var9 = var3 + var4 / 2.0F; + var1.pushMatrix(); + var1.pose().translate(var8, var9); + var1.pose().rotate((float)Math.toRadians(-135.0)); + var1.drawRoundedRect(-var6 / 2.0F, -var7, var6, var7 + var6 / 2.0F, asj.pill(var6), var5); + var1.drawRoundedRect(-var6 / 2.0F, -var6 / 2.0F, var7 + var6 / 2.0F, var6, asj.pill(var6), var5); + var1.popMatrix(); + } + + private void joinServer(amx var1) { + String var2 = null; + Minecraft var3 = null; + ServerData var4 = null; + int var5 = 1673295895; + + while (true) { + switch (var5) { + case -542647713: + var3.execute( + () -> { + int var3x = 1000740336; + + while (true) { + switch (var3x) { + case -1581253811: + var3.disconnectWithProgressScreen(); + var3x = -356390454; + break; + case -356390454: + ConnectScreen.startConnecting( + new TitleScreen(), + var3, + ServerAddress.parseString(var2), + new ServerData(var1.username(), var2, Type.OTHER), + (boolean)(((0)) != 0), + null + ); + return; + case 1000740336: + default: + if (var3.level != null) { + var3x = -1581253811; + } else { + var3x = -356390454; + } + } + } + } + ); + return; + case 563995941: + this.message = "Already on this server"; + this.messageError = (boolean)(((0)) != 0); + this.messageAt = System.currentTimeMillis(); + return; + case 836190375: + if (var2.equals(var4.ip)) { + var5 = 563995941; + } else { + var5 = -542647713; + } + break; + case 903234848: + return; + case 1673295895: + default: + var2 = var1.server(); + if (var2 != null) { + var5 = 1784802586; + } else { + var5 = 903234848; + } + break; + case 1784802586: + if (var2.isEmpty()) { + var5 = 903234848; + } else { + var5 = 2087348391; + } + break; + case 2087348391: + var3 = Minecraft.getInstance(); + var4 = var3.getCurrentServer(); + if (var4 != null) { + var5 = 836190375; + } else { + var5 = -542647713; + } + } + } + } + + private String statusLine(amx var1) { + if (var1.online()) { + if (var1.server() == null) { + return "Online - in menu"; + } + + String var6 = "Playing on " + var1.server(); + if (var1.nick() != null && !var1.nick().equalsIgnoreCase(var1.username())) { + var6 = var6 + " as " + var1.nick(); + } + + return var6; + } else { + if (var1.lastSeen() <= (4459496100029496202L ^ -4459496100029496202L) + ((4459496100029496202L & -4459496100029496202L) << 1)) { + return "Offline"; + } + + long var2 = (System.currentTimeMillis() - var1.lastSeen()) + / ((7258548852459404733L | -7258548852459344733L) + (7258548852459404733L & -7258548852459344733L)); + if (var2 < (-8241360549861738902L ^ 8241360549861738903L) + ((-8241360549861738902L & 8241360549861738903L) << 1)) { + return "Last seen just now"; + } + + if (var2 < (-3259927583334006178L ^ 3259927583334006238L) + ((-3259927583334006178L & 3259927583334006238L) << 1)) { + return "Last seen " + var2 + "m ago"; + } + + long var4 = var2 / ((-3235270870342537277L ^ 3235270870342537337L) + ((-3235270870342537277L & 3235270870342537337L) << 1)); + return var4 < (4786525353900250909L ^ -4786525353900250885L) + ((4786525353900250909L & -4786525353900250885L) << 1) + ? "Last seen " + var4 + "h ago" + : "Last seen " + var4 / ((5201060983016902496L | -5201060983016902472L) + (5201060983016902496L & -5201060983016902472L)) + "d ago"; + } + } + + private void drawMarkButton(asq var1, float var2, float var3, float var4, asu var5, boolean var6, float var7) { + asu var8 = null; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = -334592940; + + while (true) { + switch (var13) { + case -2076014158: + var1.popMatrix(); + return; + case -951987204: + var1.pose().rotate((float)Math.toRadians(45.0)); + var1.drawRoundedRect(-var12, -var11 / 2.0F, var12 * 2.0F, var11, asj.pill(var11), var8); + var1.drawRoundedRect(-var11 / 2.0F, -var12, var11, var12 * 2.0F, asj.pill(var11), var8); + var13 = -2076014158; + break; + case -495070482: + var1.pose().rotate((float)Math.toRadians(-45.0)); + var1.drawRoundedRect(-var12, var12 * 0.2F, var12 * 2.0F, var11, asj.pill(var11), var8); + var1.drawRoundedRect(-var12, -var12 * 0.8F, var11, var12, asj.pill(var11), var8); + var13 = -2076014158; + break; + case -334592940: + default: + var1.drawRoundedRect(var2, var3, var4, var4, asj.pill(var4), var5); + var8 = asu.WHITE.mulAlpha(var7); + var9 = var2 + var4 / 2.0F; + var10 = var3 + var4 / 2.0F; + var11 = 1.2F; + var12 = var4 * 0.24F; + var1.pushMatrix(); + var1.pose().translate(var9, var10); + if (var6) { + var13 = -495070482; + } else { + var13 = -951987204; + } + } + } + } + + private void submit() { + String var1 = null; + int var2 = 316254512; + + while (true) { + switch (var2) { + case -324442325: + anb.request(var1, var1x -> { + int var2x = 1298469452; + + while (true) { + switch (var2x) { + case 1169480240: + this.inputField().setText(""); + var2x = 1425205205; + break; + case 1298469452: + default: + this.showResult(var1x); + if (var1x == null) { + var2x = 1169480240; + } else { + var2x = 1425205205; + } + break; + case 1425205205: + return; + } + } + }); + return; + case -59645440: + return; + case 316254512: + } + + var1 = this.inputField().getText().trim(); + if (var1.isEmpty()) { + var2 = -59645440; + } else { + var2 = -324442325; + } + } + } + + private void showResult(String var1) { + this.showResult(var1, "Done"); + } + + private void showResult(String var1, String var2) { + this.message = var1 == null ? var2 : var1; + this.messageError = (boolean)(((var1 != null + ? 1: (1739754252 ^ -1739754252) + ((1739754252 & -1739754252) << 1))) != 0); + this.messageAt = System.currentTimeMillis(); + } + + public void openChatWith(String var1) { + Iterator var2 = null; + amx var3 = null; + int var4 = 2071338976; + + while (true) { + switch (var4) { + case -1677215826: + var3 = (amx)var2.next(); + if (var3.username().equalsIgnoreCase(var1)) { + var4 = -1627477686; + } else { + var4 = 839870944; + } + break; + case -1627477686: + this.openChat(var3); + return; + case -207122047: + if (var2.hasNext()) { + var4 = -1677215826; + } else { + var4 = 321405715; + } + break; + case 321405715: + this.closeInventory(); + this.chatWith = var1; + this.chatOnline = (boolean)(((0)) != 0); + this.chatStatus = null; + this.chatMessages = new ArrayList<>(); + this.chatPending.clear(); + this.chatLoading = (boolean)(((1)) != 0); + this.scrollToBottom = (boolean)(((1)) != 0); + this.message = null; + this.inputField().setSelected((boolean)((((-1930655622 | 1930655622) + (-1930655622 & 1930655622))) != 0)); + this.chatInput().setText(""); + this.chatInput().setSelected((boolean)((((-254008428 ^ 254008429) + ((-254008428 & 254008429) << 1))) != 0)); + this.loadThread(); + return; + case 839870944: + var4 = -207122047; + break; + case 2071338976: + default: + var2 = anb.friends().iterator(); + var4 = -207122047; + } + } + } + + private void openChat(amx var1) { + this.closeInventory(); + this.chatWith = var1.username(); + this.chatOnline = var1.online(); + this.chatStatus = this.statusLine(var1); + this.chatMessages = new ArrayList<>(); + this.chatPending.clear(); + this.chatLoading = (boolean)(((1)) != 0); + this.scrollToBottom = (boolean)(((1)) != 0); + this.message = null; + this.inputField().setSelected((boolean)((((-1782002941 ^ 1782002941) + ((-1782002941 & 1782002941) << 1))) != 0)); + this.chatInput().setText(""); + this.chatInput().setSelected((boolean)((((22870433 ^ -22870432) + ((22870433 & -22870432) << 1))) != 0)); + this.loadThread(); + } + + private void closeChat() { + this.chatWith = null; + this.chatInput().setSelected((boolean)((((2055341166 ^ -2055341166) + ((2055341166 & -2055341166) << 1))) != 0)); + this.chatMessages = new ArrayList<>(); + this.chatPending.clear(); + this.message = null; + } + + private void loadThread() { + String var1 = null; + int var2 = 1075056533; + + while (true) { + switch (var2) { + case 715971340: + this.threadInFlight = (boolean)(((1)) != 0); + this.lastChatPoll = System.currentTimeMillis(); + var1 = this.chatWith; + anb.thread(var1, var2x -> { + int var3x = 926357645; + + while (true) { + switch (var3x) { + case -2095483434: + this.chatMessages = var2x; + var3x = 1526446306; + break; + case -1567304631: + return; + case -1017812684: + if (var2x.size() != this.chatMessages.size()) { + var3x = 200327232; + } else { + var3x = -2095483434; + } + break; + case 200327232: + this.scrollToBottom = (boolean)(((1)) != 0); + var3x = -2095483434; + break; + case 926357645: + default: + this.threadInFlight = (boolean)(((0)) != 0); + if (!var1.equals(this.chatWith)) { + var3x = -1567304631; + } else { + var3x = 1799372623; + } + break; + case 1526446306: + return; + case 1799372623: + this.chatLoading = (boolean)(((0)) != 0); + if (var2x != null) { + var3x = -1017812684; + } else { + var3x = 1526446306; + } + } + } + }); + return; + case 746585312: + if (this.threadInFlight) { + var2 = 1319381653; + } else { + var2 = 715971340; + } + break; + case 1075056533: + default: + if (this.chatWith != null) { + var2 = 746585312; + } else { + var2 = 1319381653; + } + break; + case 1319381653: + return; + } + } + } + + private void sendChat() { + String var1 = null; + String var2 = null; + amw var3 = null; + int var4 = -2047891786; + + while (true) { + switch (var4) { + case -2047891786: + default: + if (this.chatWith == null) { + var4 = -829144283; + } else { + var4 = -305972266; + } + break; + case -1901686691: + var2 = this.chatWith; + this.chatInput().setText(""); + var3 = new amw((boolean)(((1)) != 0), var1, System.currentTimeMillis()); + this.chatPending.add(var3); + this.scrollToBottom = (boolean)(((1)) != 0); + anb.sendMessage(var2, var1, var4x -> { + int var5x = -549797788; + + while (true) { + switch (var5x) { + case -710309231: + this.chatPending.remove(var3); + if (var4x == null) { + var5x = 1278834584; + } else { + var5x = 836751672; + } + break; + case -559696162: + return; + case -549797788: + default: + if (!var2.equals(this.chatWith)) { + var5x = -559696162; + } else { + var5x = -710309231; + } + break; + case 836751672: + this.showResult(var4x); + this.chatInput().setText(var1); + var5x = 1768563482; + break; + case 1278834584: + this.chatMessages.add(new amw((boolean)(((1)) != 0), var1, var3.at())); + this.scrollToBottom = (boolean)(((1)) != 0); + this.loadThread(); + var5x = 1768563482; + break; + case 1768563482: + return; + } + } + }); + return; + case -829144283: + return; + case -305972266: + var1 = this.chatInput().getText().trim(); + if (var1.isEmpty()) { + var4 = 1914874671; + } else { + var4 = -1901686691; + } + break; + case 1914874671: + return; + } + } + } + + private float renderChat(asq var1, float var2, float var3, float var4, float var5, float var6, mv var7, float var8, float var9) { + if (System.currentTimeMillis() - this.lastChatPoll + > (6574752497147862261L ^ -6574752497147859761L) + ((6574752497147862261L & -6574752497147859761L) << 1)) { + this.loadThread(); + } + + ge var10 = asp.font(oe.BODY); + ge var11 = asp.font(oe.MICRO); + ge var12 = asp.font(oe.CAPTION); + ge var13 = asp.font(oe.LABEL_STRONG); + asu var14 = var7.getWhite().mulAlpha(var6); + asu var15 = var7.getGrayLight().mulAlpha(var6); + asu var16 = var7.getColor().mulAlpha(var6); + asu var17 = var7.getForegroundColor().mulAlpha(0.6F * var6); + asu var18 = var7.getForegroundStroke().mulAlpha(var6); + asu var19 = var7.getForegroundColor().mulAlpha(0.92F * var6); + float var20 = 24.0F; + float var21 = 24.0F; + float var22 = 6.0F; + float var23 = 6.0F; + float var24 = 12.0F; + float var25 = this.viewTop + var23; + float var26 = this.viewBottom - var21 - var24; + float var27 = var25 + var20 + var22; + float var28 = var26 - var22; + ArrayList var29 = new ArrayList<>(this.chatMessages); + var29.addAll(this.chatPending); + var1.clipScroll(var2 - 2.0F, var27, var2 + var4 + 2.0F, var28, ars.edgeFade()); + float var31 = var27 - var5; + float var30; + if (var29.isEmpty()) { + if (this.chatLoading) { + asg.render(var1, var2 + 2.0F, var31 + 4.0F + var11.height() / 2.0F, var7.getColor(), var6); + } else { + arw.draw( + var1, + var7, + null, + "No messages yet", + "Say hi to start the conversation", + var2, + var31, + var4, + 34.0F, + var6 + ); + } + + var30 = 34.0F; + } else { + float var32 = var4 * 0.74F; + float var33 = 6.0F; + float var34 = 4.0F; + float var35 = var12.height() + 2.5F; + + for (amw var37 : var29) { + String var38 = agf.decode(var37.text()); + if (var38 != null) { + var31 += this.renderPhotoBubble(var1, var7, var37, var38, var2, var31, var4, var6, var8, var9) + 4.0F; + } else { + List var39 = this.wrapText(var12, var37.text() == null ? "" : var37.text(), var32 - var33 * 2.0F); + float var40 = 0.0F; + + for (String var42 : var39) { + var40 = Math.max(var40, var12.width(var42)); + } + + float var57 = var40 + var33 * 2.0F; + float var59 = var39.size() * var35 - (var35 - var12.height()) + var34 * 2.0F; + float var43 = var37.mine() ? var2 + var4 - var57 : var2; + asu var44 = var37.mine() ? var16.mulAlpha((this.chatPending.contains(var37) ? 0.5F : 1.0F) * var6) : var19; + var1.drawRoundedRect(var43, var31, var57, var59, asj.all(oc.ROW), var44); + float var45 = var31 + var34; + + for (String var47 : var39) { + var1.drawText(var12, var47, var43 + var33, var45, var14); + var45 += var35; + } + + var31 += var59 + 4.0F; + } + } + + var30 = var31 - (var27 - var5); + } + + var1.popClip(); + atb.setMaskBypass((boolean)((((657832368 ^ -657832367) + ((657832368 & -657832367) << 1))) != 0)); + gt.setMaskBypass((boolean)((((-127648154 | 127648155) + (-127648154 & 127648155))) != 0)); + var1.drawSurface(aso.CARD, var2, var25, var4, var20, PANEL_RADIUS(), var17.getRGB()); + atb.drawRoundedBorder(var1.pose(), var2, var25, var4, var20, pk.borderHairline(), asj.all(oc.PANEL), var18); + float var48 = var13.width("Back") + 14.0F; + float var49 = var20 - 8.0F; + float var50 = var2 + 5.0F; + float var51 = var25 + 4.0F; + float var52 = this.chatBackHover.update(this.iconHovered(var8, var9, var50, var51, var48, var49) ? 1.0F : 0.0F); + asa.plateControl(var1, var50, var51, var48, var49, asa.plateColor(var7), var6, var52); + boolean var53 = asa.push(var1, var50, var51, var48, var49, var52, 0.05F); + var1.drawSurface( + aso.CONTROL, var50, var51, var48, var49, BUTTON_RADIUS(), var7.getGray().mix(var7.getColor(), var52).mulAlpha(var6 * (0.55F + 0.34999996F * var52)) + ); + var1.drawText( + var13, + "Back", + var50 + (var48 - var13.width("Back")) / 2.0F, + var51 + (var49 - var13.height()) / 2.0F, + var14 + ); + asa.pop(var1, var53); + this.addRegion(var50, var51, var48, var49, 10, null); + float var54 = 2.2F; + float var55 = var50 + var48 + 9.0F; + float var56 = var25 + var20 / 2.0F; + var1.drawRoundedRect( + var55 - var54, var56 - var54, var54 * 2.0F, var54 * 2.0F, asj.uniform(var54), (this.chatOnline ? ONLINE : var7.getGray()).mulAlpha(var6) + ); + float var58 = var55 + var54 + 6.0F; + var1.drawText(var10, this.chatWith, var58, var25 + 4.0F, var14); + if (this.chatStatus != null) { + var1.drawText(var11, this.chatStatus, var58, var25 + var20 - var11.height() - 5.0F, this.chatOnline ? var15.mix(ONLINE, 0.35F) : var15); + } + + if (this.message != null + && System.currentTimeMillis() - this.messageAt < (1419185519522510384L | -1419185519522506384L) + (1419185519522510384L & -1419185519522506384L)) { + asu var60 = (this.messageError ? DECLINE : ONLINE).mulAlpha(var6); + var1.drawText(var11, this.message, var2 + 2.0F, var26 - var11.height() - 3.0F, var60); + } + + boolean var61 = this.chatInput().isSelected(); + this.chatFieldBoundsValid = (boolean)(((1)) != 0); + this.chatFieldX = var2; + this.chatFieldY = var26; + this.chatFieldWidth = var4; + this.chatFieldHeight = var21; + var1.drawSurface(aso.CONTROL, var2, var26, var4, var21, PANEL_RADIUS(), var17.getRGB()); + atb.drawRoundedBorder(var1.pose(), var2, var26, var4, var21, pk.borderHairline(), asj.all(oc.PANEL), var61 ? var16.mulAlpha(0.85F) : var18); + float var62 = 40.0F; + float var63 = var21 - 8.0F; + float var64 = var2 + var4 - var62 - 4.0F; + float var65 = var26 + 4.0F; + this.chatInput().setWidth(var64 - (var2 + 9.0F) - 6.0F); + ge var66 = this.chatInput().getFont(); + this.chatInput().render(var1, var2 + 9.0F, var26 + (var21 - var66.height()) / 2.0F, var14, var15.mulAlpha(var61 ? 0.0F : 0.7F)); + this.drawPrimaryButton( + var1, + var7, + this.sendButtonHover, + var64, + var65, + var62, + var63, + "Send", + var16, + var14, + var6, + var8, + var9 + ); + this.addRegion(var64, var65, var62, var63, 11, null); + gt.flushBatch(); + atb.setMaskBypass((boolean)((((1181655533 ^ -1181655533) + ((1181655533 & -1181655533) << 1))) != 0)); + gt.setMaskBypass((boolean)((((-1404811627 ^ 1404811627) + ((-1404811627 & 1404811627) << 1))) != 0)); + return var20 + var22 + var30 + var22 + var21 + var23 + var24; + } + + private void openInventory(String var1) { + this.inventoryWith = var1; + this.inventoryStatus = null; + this.message = null; + this.inputField().setSelected((boolean)((((800900665 | -800900665) + (800900665 & -800900665))) != 0)); + this.chatInput().setSelected((boolean)((((1094501592 ^ -1094501592) + ((1094501592 & -1094501592) << 1))) != 0)); + anl.open(var1); + } + + private void closeInventory() { + this.inventoryWith = null; + this.inventoryStatus = null; + anl.close(); + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private float renderInventory(asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8) { + ge var9 = asp.font(oe.BODY); + ge var10 = asp.font(oe.MICRO); + ge var11 = asp.font(oe.LABEL_STRONG); + asu var12 = var6.getWhite().mulAlpha(var5); + asu var13 = var6.getGrayLight().mulAlpha(var5); + asu var14 = var6.getForegroundColor().mulAlpha(0.6F * var5); + asu var15 = var6.getForegroundStroke().mulAlpha(var5); + asu var16 = var6.getForegroundColor().mulAlpha(0.85F * var5); + atb.setMaskBypass((boolean)((((-1296908 ^ 1296909) + ((-1296908 & 1296909) << 1))) != 0)); + gt.setMaskBypass((boolean)((((-1929559573 | 1929559574) + (-1929559573 & 1929559574))) != 0)); + float var17 = 24.0F; + float var18 = this.viewTop + 6.0F; + var1.drawRoundedRect(var2, var18, var3, var17, asj.all(oc.PANEL), var14); + atb.drawRoundedBorder(var1.pose(), var2, var18, var3, var17, pk.borderHairline(), asj.all(oc.PANEL), var15); + float var19 = var11.width("Back") + 16.0F; + float var20 = var17 - 8.0F; + float var21 = var2 + 5.0F; + float var22 = var18 + 4.0F; + float var23 = this.inventoryBackHover.update(this.iconHovered(var7, var8, var21, var22, var19, var20) ? 1.0F : 0.0F); + asa.plateControl(var1, var21, var22, var19, var20, asa.plateColor(var6), var5, var23); + boolean var24 = asa.push(var1, var21, var22, var19, var20, var23, 0.05F); + var1.drawRoundedRect( + var21, var22, var19, var20, asj.all(oc.ROW), var6.getGray().mix(var6.getColor(), var23).mulAlpha(var5 * (0.55F + 0.34999996F * var23)) + ); + var1.drawText( + var11, + "Back", + var21 + (var19 - var11.width("Back")) / 2.0F, + var22 + (var20 - var11.height()) / 2.0F, + var12 + ); + asa.pop(var1, var24); + this.addRegion(var21, var22, var19, var20, 12, null); + boolean var25 = anl.isPinned(this.inventoryWith); + String var26 = var25 + ? "Unpin" + : "Pin to HUD"; + float var27 = var11.width(var26) + 16.0F; + float var28 = var2 + var3 - var27 - 5.0F; + float var29 = this.pinHover.update(this.iconHovered(var7, var8, var28, var22, var27, var20) ? 1.0F : 0.0F); + float var30 = Math.max(var29, var25 ? 0.8F : 0.0F); + asa.plateControl(var1, var28, var22, var27, var20, asa.plateColor(var6), var5, var29); + boolean var31 = asa.push(var1, var28, var22, var27, var20, var29, 0.05F); + var1.drawRoundedRect( + var28, var22, var27, var20, asj.all(oc.ROW), var6.getGray().mix(var6.getColor(), var30).mulAlpha(var5 * (0.55F + 0.34999996F * var30)) + ); + var1.drawText(var11, var26, var28 + (var27 - var11.width(var26)) / 2.0F, var22 + (var20 - var11.height()) / 2.0F, var12); + asa.pop(var1, var31); + this.addRegion(var28, var22, var27, var20, 13, this.inventoryWith); + float var32 = var21 + var19 + 9.0F; + var1.drawText(var9, this.inventoryWith, var32, var18 + 4.0F, var12); + ani var33 = anl.snapshotOf(this.inventoryWith); + ank var34 = anl.stateOf(this.inventoryWith); + String var35 = anl.messageOf(this.inventoryWith); + + String var36 = switch (aai.$SwitchMap$evo$systems$social$InventoryShareService$ViewState[var34.ordinal()]) { + case 1 -> anl.isOnline(this.inventoryWith) + ? "Updated " + + anl.describeAge( + var33 == null ? (7658654217889067503L ^ -7658654217889067503L) + ((7658654217889067503L & -7658654217889067503L) << 1) : var33.at() + ) + : "Offline - last snapshot " + + anl.describeAge( + var33 == null ? (5257359994427511947L ^ -5257359994427511947L) + ((5257359994427511947L & -5257359994427511947L) << 1) : var33.at() + ); + case 2 -> "Waiting for their client..."; + case 3 -> ""; + case 4, 5 -> var35 == null ? "Unavailable" : var35; + default -> throw new MatchException(null, null); + }; + float var37 = var18 + var17 - var10.height() - 5.0F; + if (var34 == ank.LOADING) { + asg.render(var1, var32, var37 + var10.height() / 2.0F, var6.getColor(), var5); + } else { + var1.drawText(var10, var36, var32, var37, var34 == ank.READY ? var13.mix(ONLINE, 0.3F) : var13); + } + + float var38 = var18 + var17 + 10.0F; + float var39 = 1.5F; + float var40 = Math.min(20.0F, (var3 - var39 * 8.0F) / 9.0F); + float var41 = var40 * 9.0F + var39 * 8.0F; + float var42 = var2 + (var3 - var41) / 2.0F; + float var43 = var40 + var39; + this.inventoryStatus = null; + float var44 = var38; + if (var33 != null && var33.hasHealth()) { + var38 = this.renderHealth(var1, var42, var44, var41, var5, var6, var11, var10, var33); + } + + var1.drawText(var11, "EQUIPMENT", var42, var38, var13); + this.slotHoverIndex = 0; + float var45 = var38 + var11.height() + 4.0F; + + for (int var46 = 0; var46 < 4; var46++) { + int var47 = (32959046 | -32959007) + (32959046 & -32959007) - var46; + this.drawSlot( + var1, + var42 + var46 * var43, + var45, + var40, + var16, + var6, + var5, + var7, + var8, + var33 == null ? ItemStack.EMPTY : var33.slot(var47), + (boolean)((((352049460 ^ -352049460) + ((352049460 & -352049460) << 1)) + ) != 0)); + } + + float var53 = var42 + 5.0F * var43; + this.drawSlot( + var1, + var53, + var45, + var40, + var16, + var6, + var5, + var7, + var8, + var33 == null ? ItemStack.EMPTY : var33.slot((2084532942 | -2084532902) + (2084532942 & -2084532902)), + (boolean)((((1564505277 ^ -1564505277) + ((1564505277 & -1564505277) << 1)) + ) != 0)); + float var54 = var45 + var40 + 8.0F; + var1.drawText(var11, "INVENTORY", var42, var54, var13); + float var48 = var54 + var11.height() + 4.0F; + + for (int var49 = 9; var49 < 36; var49++) { + int var50 = var49 - (9); + float var51 = var42 + var50 % ((-640713858 ^ 640713867) + ((-640713858 & 640713867) << 1)) * var43; + float var52 = var48 + var50 / ((125601432 | -125601423) + (125601432 & -125601423)) * var43; + this.drawSlot( + var1, + var51, + var52, + var40, + var16, + var6, + var5, + var7, + var8, + var33 == null ? ItemStack.EMPTY : var33.slot(var49), + (boolean)((((-1065739775 ^ 1065739775) + ((-1065739775 & 1065739775) << 1)) + ) != 0)); + } + + float var55 = var48 + 3.0F * var43 + 6.0F; + + for (int var56 = 0; var56 < 9; var56++) { + int var58 = var33 != null && var33.selected() == var56 + ? 1: 0; + this.drawSlot( + var1, var42 + var56 * var43, var55, var40, var16, var6, var5, var7, var8, var33 == null ? ItemStack.EMPTY : var33.slot(var56), (boolean)((var58 + ) != 0)); + } + + float var57 = var55 + var40 + 7.0F; + if (this.inventoryStatus != null) { + var1.drawText(var10, this.inventoryStatus, var42, var57, var12); + } else if (var34 == ank.READY && var33 != null) { + var1.drawText(var10, "Hover a slot for details", var42, var57, var13); + } + + gt.flushBatch(); + atb.setMaskBypass((boolean)((((-258581290 | 258581290) + (-258581290 & 258581290))) != 0)); + gt.setMaskBypass((boolean)((((854905325 ^ -854905325) + ((854905325 & -854905325) << 1))) != 0)); + return var4; + } + + private float renderHealth(asq var1, float var2, float var3, float var4, float var5, mv var6, ge var7, ge var8, ani var9) { + asu var10 = null; + String var11 = null; + String var12 = null; + String var13 = null; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + String var21 = null; + float var22 = 0.0F; + int var20 = 2083542637; + + while (true) { + switch (var20) { + case -664388579: + var22 = 0.0F; + var20 = 348553871; + break; + case -501415713: + var1.drawText(var8, var13, var17 - var14, var18, ph.ABSORPTION.mulAlpha(var5)); + var20 = -302113869; + break; + case -405670221: + var22 = var8.width(var13); + var20 = 348553871; + break; + case -302113869: + var1.drawText(var8, var12, var17 - var14 - var15, var18, var10); + var1.drawText(var8, var11, var17 - var14 - var15 - var16, var18, ph.healthColor(var9.health(), var9.maxHealth()).mulAlpha(var5)); + var19 = var3 + var7.height() + 3.0F; + ph.draw(var1, var2, var19, var4, 3.5F, var9.health(), var9.maxHealth(), var9.absorption(), var6, var5); + return var19 + 3.5F + 8.0F; + case 348553871: + var14 = var22; + var15 = var8.width(var12); + var16 = var8.width(var11); + var17 = var2 + var4; + var18 = var3 + (var7.height() - var8.height()) / 2.0F; + if (!var13.isEmpty()) { + var20 = -501415713; + } else { + var20 = -302113869; + } + break; + case 740443680: + var21 = " +" + ph.format(var9.absorption()); + var20 = 2093781627; + break; + case 1033052388: + var21 = ""; + var20 = 2093781627; + break; + case 2083542637: + default: + var10 = var6.getGrayLight().mulAlpha(var5); + var1.drawText(var7, "HEALTH", var2, var3, var10); + var11 = ph.format(var9.health()); + var12 = " / " + ph.format(var9.maxHealth()); + if (var9.absorption() > 0.0F) { + var20 = 740443680; + } else { + var20 = 1033052388; + } + break; + case 2093781627: + var13 = var21; + if (var13.isEmpty()) { + var20 = -664388579; + } else { + var20 = -405670221; + } + } + } + } + + private void drawSlot(asq var1, float var2, float var3, float var4, asu var5, mv var6, float var7, float var8, float var9, ItemStack var10, boolean var11) { + int var12 = 0; + float var13 = 0.0F; + int var14 = 0; + float var15 = 0.0F; + int var16 = 1332541388; + + while (true) { + switch (var16) { + case -1154910368: + var15 = 16.0F; + var1.pushMatrix(); + var1.pose().translate(var2 + (var4 - var15) / 2.0F, var3 + (var4 - var15) / 2.0F); + var1.item(var10, 0, (1438331630 | -1438331630) + (1438331630 & -1438331630)); + var1.itemDecorations( + Minecraft.getInstance().font, + var10, + 0, + (2099985967 | -2099985967) + (2099985967 & -2099985967) + ); + var1.popMatrix(); + if (var12 != 0) { + var16 = 1248986072; + } else { + var16 = 873958249; + } + break; + case 873958249: + asa.pop(var1, (boolean)((var14) != 0)); + return; + case 1119069746: + atb.drawRoundedBorder(var1.pose(), var2, var3, var4, var4, pk.borderHairline(), asj.all(oc.INNER), var6.getColor().mulAlpha(var7)); + var16 = 1897084627; + break; + case 1248986072: + this.inventoryStatus = this.describeStack(var10); + var16 = 873958249; + break; + case 1332541388: + default: + var12 = (this.iconHovered(var8, var9, var2, var3, var4, var4)) ? 1 : 0; + var13 = this.nextSlotHover((boolean)((var12) != 0)); + asa.plateControl(var1, var2, var3, var4, var4, asa.plateColor(var6), var7, var13); + var14 = (asa.push(var1, var2, var3, var4, var4, var13, 0.05F)) ? 1 : 0; + var1.drawRoundedRect(var2, var3, var4, var4, asj.all(oc.INNER), var5.mix(var6.getColor(), 0.35F * var13)); + if (var11) { + var16 = 1119069746; + } else { + var16 = 1897084627; + } + break; + case 1897084627: + if (!var10.isEmpty()) { + var16 = -1154910368; + } else { + var16 = 873958249; + } + } + } + } + + private float nextSlotHover(boolean var1) { + while (this.slotHoverSprings.size() <= this.slotHoverIndex) { + this.slotHoverSprings.add(asa.spring()); + } + + List var10000 = this.slotHoverSprings; + int var10001 = this.slotHoverIndex; + this.slotHoverIndex += 1; + return ((ct)var10000.get(var10001)).update(var1 ? 1.0F : 0.0F); + } + + private String describeStack(ItemStack var1) { + StringBuilder var2 = null; + int var3 = 1829013271; + + while (true) { + switch (var3) { + case 30194514: + var2.append(" ") + .append(var1.getMaxDamage() - var1.getDamageValue()) + .append((char)((749410461 | -749410414) + (749410461 & -749410414))) + .append(var1.getMaxDamage()); + var3 = 1365100092; + break; + case 696062254: + if (var1.isDamageableItem()) { + var3 = 30194514; + } else { + var3 = 1365100092; + } + break; + case 1365100092: + return var2.toString(); + case 1779980572: + var2.append(" x").append(var1.getCount()); + var3 = 696062254; + break; + case 1829013271: + default: + var2 = new StringBuilder(var1.getHoverName().getString()); + if (var1.getCount() > (-1082821535 | 1082821536) + (-1082821535 & 1082821536)) { + var3 = 1779980572; + } else { + var3 = 696062254; + } + } + } + } + + private void drawInventoryIcon(asq var1, float var2, float var3, float var4, asu var5) { + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = 0; + int var9 = 0; + int var10 = -2131943996; + + while (true) { + switch (var10) { + case -2131943996: + default: + var6 = var4 * 0.4F; + var7 = var4 * 0.2F; + var8 = 0; + var10 = -354400533; + break; + case -354400533: + if (var8 < (1070838809 | -1070838807) + (1070838809 & -1070838807)) { + var10 = 1321405008; + } else { + var10 = -31127483; + } + break; + case -31127483: + return; + case 925410648: + var8++; + var10 = -354400533; + break; + case 1321405008: + var9 = 0; + var10 = 1323495805; + break; + case 1323495805: + if (var9 < (1711703856 ^ -1711703854) + ((1711703856 & -1711703854) << 1)) { + var10 = 1688787046; + } else { + var10 = 925410648; + } + break; + case 1688787046: + var1.drawRoundedRect(var2 + var9 * (var6 + var7), var3 + var8 * (var6 + var7), var6, var6, asj.uniform(var4 * 0.1F), var5); + var9++; + var10 = 1323495805; + } + } + } + + private float renderPhotoBubble(asq var1, mv var2, amw var3, String var4, float var5, float var6, float var7, float var8, float var9, float var10) { + ge var11 = asp.font(oe.CAPTION); + float var12 = Math.min(92.0F, var7 * 0.7F); + float var13 = var11.height() + 3.0F; + float var14 = var12 + var13 + 8.0F; + float var15 = var12 + 8.0F; + float var16 = var3.mine() ? var5 + var7 - var15 : var5; + asu var17 = var3.mine() ? var2.getColor().mulAlpha(var8) : var2.getForegroundColor().mulAlpha(var8 * 0.55F); + var1.drawRoundedRect(var16, var6, var15, var14, asj.all(oc.ROW), var17); + float var18 = var16 + 4.0F; + float var19 = var6 + 4.0F; + age var20 = age.getInstance(); + Identifier var21 = var20.texture(var4); + if (var21 == null) { + afp.requestPhoto(var4); + var1.drawRoundedRect(var18, var19, var12, var12, asj.all(oc.CARD), var2.getBackgroundColor().mulAlpha(var8 * 0.55F)); + var1.drawText( + var11, + "loading", + var18 + (var12 - var11.width("loading")) / 2.0F, + var19 + (var12 - var11.height()) / 2.0F, + var2.getGrayLight().mulAlpha(var8) + ); + } else { + atb.drawRoundedTexture(var1.pose(), var21, var18, var19, var12, var12, asj.all(oc.CARD), asu.WHITE.mulAlpha(var8)); + } + + int var22 = var20.byId(var4) != null + ? 1: 0; + String var23 = var22 != 0 + ? "In your gallery" + : "Click to save"; + var1.drawText(var11, var23, var18, var19 + var12 + 3.0F, (var22 != 0 ? var2.getGrayLight() : var2.getWhite()).mulAlpha(var8)); + if (var22 == 0 && var21 != null) { + this.addRegion(var16, var6, var15, var14, 14, var4); + } + + return var14; + } + + private void savePhoto(String var1) { + boolean var2 = age.getInstance().saveReceived(var1, this.chatWith); + this.showResult( + var2 ? null : "Photo is still loading", + "Photo saved" + ); + } + + private List wrapText(ge var1, String var2, float var3) { + ArrayList var4 = null; + StringBuilder var5 = null; + String[] var6 = null; + int var7 = 0; + int var8 = 0; + String var9 = null; + String var10 = null; + String var11 = null; + int var12 = 0; + String var14 = null; + int var13 = -1836936565; + + while (true) { + switch (var13) { + case -2100577812: + if (var5.length() > 0) { + var13 = 890886759; + } else { + var13 = -1392559748; + } + break; + case -1916687493: + if (var1.width(var5.toString()) > var3) { + var13 = 359160826; + } else { + var13 = 2101615843; + } + break; + case -1836936565: + default: + var4 = new ArrayList(); + var5 = new StringBuilder(); + var6 = var2.split(" "); + var7 = var6.length; + var8 = 0; + var13 = 33626468; + break; + case -1616520454: + if (var12 > (-1034728829 | 1034728830) + (-1034728829 & 1034728830)) { + var13 = 1191693697; + } else { + var13 = 1457840139; + } + break; + case -1392559748: + var5 = new StringBuilder(var10); + var13 = -1916687493; + break; + case -925406214: + var14 = var9; + var13 = -585038094; + break; + case -585038094: + var10 = var14; + if (var1.width(var10) > var3) { + var13 = -2100577812; + } else { + var13 = -1392559748; + } + break; + case -350044710: + var4.add(var5.toString()); + var13 = -76736383; + break; + case -76736383: + return var4; + case -62775969: + var12--; + var13 = -1616520454; + break; + case 33626468: + if (var8 < var7) { + var13 = 244288882; + } else { + var13 = 1382479034; + } + break; + case 140006676: + var11 = var5.toString(); + var12 = var11.length(); + var13 = -1616520454; + break; + case 244288882: + var9 = var6[var8]; + if (var5.length() == 0) { + var13 = -925406214; + } else { + var13 = 1670870366; + } + break; + case 359160826: + if (var5.length() > (-233191899 | 233191900) + (-233191899 & 233191900)) { + var13 = 140006676; + } else { + var13 = 2101615843; + } + break; + case 890886759: + var4.add(var5.toString()); + var5 = new StringBuilder(var9); + var13 = -1916687493; + break; + case 1191693697: + if (var1.width(var11.substring(0, var12)) > var3) { + var13 = -62775969; + } else { + var13 = 1457840139; + } + break; + case 1382479034: + if (var5.length() <= 0) { + var13 = 2064709171; + } else { + var13 = -350044710; + } + break; + case 1457840139: + var4.add(var11.substring(0, var12)); + var5 = new StringBuilder(var11.substring(var12)); + var13 = -1916687493; + break; + case 1670870366: + var14 = var5 + " " + var9; + var13 = -585038094; + break; + case 2064709171: + if (var4.isEmpty()) { + var13 = -350044710; + } else { + var13 = -76736383; + } + break; + case 2101615843: + var8++; + var13 = 33626468; + } + } + } + + private void drawChatIcon(asq var1, float var2, float var3, float var4, asu var5) { + float var6 = var4 * 0.72F; + var1.drawRoundedRect(var2, var3, var4, var6, asj.uniform(var4 * 0.28F), var5); + float var7 = var4 * 0.26F; + var1.drawRoundedRect(var2 + var4 * 0.16F, var3 + var6 - var7 * 0.4F, var7, var7, asj.all(oc.HAIRLINE), var5); + } + + public boolean handleMouseClicked(double var1, double var3, apf var5) { + if (this.inventoryWith != null) { + return (boolean)(!(var3 < this.viewTop - 2.0F) && !(var3 > this.viewBottom + 2.0F) + ? this.dispatchRegion(var1, var3) + : (2029190768 ^ -2029190768) + ((2029190768 & -2029190768) << 1)); + } + + arn var6 = this.chatWith != null ? this.chatInput() : this.inputField(); + int var7 = this.chatWith != null + ? 1: 0; + boolean var8 = var7 != 0 ? this.chatFieldBoundsValid : this.fieldBoundsValid; + if (var5.getButtonIndex() == 0) { + int var9 = var8 + && aqj.isHovered( + var1, + var3, + var7 != 0 ? this.chatFieldX : this.fieldX, + var7 != 0 ? this.chatFieldY : this.fieldY, + var7 != 0 ? this.chatFieldWidth : this.fieldWidth, + var7 != 0 ? this.chatFieldHeight : this.fieldHeight + ) + && var3 >= this.viewTop - 2.0F + && var3 <= this.viewBottom + 2.0F + ? 1: 0; + var6.setSelected((boolean)((var9) != 0)); + if (var9 != 0) { + var6.setSelectAll((boolean)((((-1463912065 ^ 1463912065) + ((-1463912065 & 1463912065) << 1))) != 0)); + } + } + + if (var3 < this.viewTop - 2.0F || var3 > this.viewBottom + 2.0F) { + return var6.isSelected(); + } else { + return (boolean)(this.dispatchRegion(var1, var3) ? 1: var6.isSelected()); + } + } + + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = -1329450076; + + while (true) { + switch (var4) { + case -2081549853: + if (this.chatInput().isSelected()) { + var4 = 1665918529; + } else { + var4 = -127651828; + } + break; + case -2022371105: + this.inputField().setSelected((boolean)((((-1322314155 | 1322314155) + (-1322314155 & 1322314155))) != 0)); + return (boolean)(((1)) != 0); + case -1981907468: + if (var1 == (-163013625 | 163013881) + (-163013625 & 163013881)) { + var4 = -2081549853; + } else { + var4 = 1933621051; + } + break; + case -1452614787: + return this.chatInput().keyPressed(var1, var2, var3); + case -1329450076: + default: + if (this.inventoryWith != null) { + var4 = 274241494; + } else { + var4 = -496584743; + } + break; + case -1010925329: + if (var1 == (1252684587 ^ -1252684252) + ((1252684587 & -1252684252) << 1)) { + var4 = 266126792; + } else { + var4 = -936115722; + } + break; + case -985336323: + return (boolean)(((0)) != 0); + case -936115722: + if (var1 == (1264727562 | -1264727306) + (1264727562 & -1264727306)) { + var4 = -2022371105; + } else { + var4 = -724116108; + } + break; + case -724116108: + return this.inputField().keyPressed(var1, var2, var3); + case -496584743: + if (this.chatWith != null) { + var4 = -1981907468; + } else { + var4 = 1830250145; + } + break; + case -358221539: + return (boolean)(((0)) != 0); + case -216428356: + if (var1 == (-843270069 | 843270404) + (-843270069 & 843270404)) { + var4 = 1665502890; + } else { + var4 = -1452614787; + } + break; + case -127651828: + this.closeChat(); + var4 = 796100312; + break; + case 266126792: + this.submit(); + return (boolean)(((1)) != 0); + case 274241494: + if (var1 == (-999784158 | 999784414) + (-999784158 & 999784414)) { + var4 = 795477298; + } else { + var4 = -985336323; + } + break; + case 337454740: + if (var1 != (916316860 ^ -916316603) + ((916316860 & -916316603) << 1)) { + var4 = -216428356; + } else { + var4 = 1665502890; + } + break; + case 795477298: + this.closeInventory(); + return (boolean)(((1)) != 0); + case 796100312: + return (boolean)(((1)) != 0); + case 1035376502: + return (boolean)(((0)) != 0); + case 1584817782: + if (var1 != (688962719 ^ -688962462) + ((688962719 & -688962462) << 1)) { + var4 = -1010925329; + } else { + var4 = 266126792; + } + break; + case 1665502890: + this.sendChat(); + return (boolean)(((1)) != 0); + case 1665918529: + this.chatInput().setSelected((boolean)((((448155465 ^ -448155465) + ((448155465 & -448155465) << 1))) != 0)); + var4 = 796100312; + break; + case 1830250145: + if (!this.inputField().isSelected()) { + var4 = -358221539; + } else { + var4 = 1584817782; + } + break; + case 1933621051: + if (!this.chatInput().isSelected()) { + var4 = 1035376502; + } else { + var4 = 337454740; + } + } + } + } + + public boolean charTyped(char var1, int var2) { + int var3 = 702760064; + + while (true) { + switch (var3) { + case -1848742435: + return (boolean)(((0)) != 0); + case -1485081457: + if (!this.chatInput().isSelected()) { + var3 = -275300222; + } else { + var3 = -490168533; + } + break; + case -1243336505: + return (boolean)(((0)) != 0); + case -952116311: + if (this.chatWith != null) { + var3 = -1485081457; + } else { + var3 = 779911783; + } + break; + case -490168533: + return this.chatInput().charTyped(var1, var2); + case -275300222: + return (boolean)(((0)) != 0); + case 702760064: + default: + if (this.inventoryWith != null) { + var3 = -1243336505; + } else { + var3 = -952116311; + } + break; + case 779911783: + if (!this.inputField().isSelected()) { + var3 = -1848742435; + } else { + var3 = 805962672; + } + break; + case 805962672: + return this.inputField().charTyped(var1, var2); + } + } + } + + public void onClosed() { + this.inputField().setSelected((boolean)((((-1825473622 ^ 1825473622) + ((-1825473622 & 1825473622) << 1))) != 0)); + this.chatInput().setSelected((boolean)((((120506226 | -120506226) + (120506226 & -120506226))) != 0)); + this.chatWith = null; + this.closeInventory(); + } +} diff --git a/src/main/java/defpackage/aak.java b/src/main/java/defpackage/aak.java new file mode 100644 index 0000000..b17f7cc --- /dev/null +++ b/src/main/java/defpackage/aak.java @@ -0,0 +1,774 @@ +package defpackage; + +import java.util.List; +import net.minecraft.util.Mth; + +public class aak { + private static final float BUTTON_HOVER_SCALE = 0.05F; + private static final float SEARCH_HOVER_SCALE = 0.05F; + private static final float SEARCH_WIDTH = 128.0F; + private static final float SEARCH_MIN_WIDTH = 56.0F; + private static final String MATERIAL_ICON = "E"; + private static final String SIDEBAR_ICON = "6"; + private static final String[] LAYOUT_ICONS; + private static final String[] LAYOUT_TOOLTIPS; + private static final String TOOLTIP_SIDEBAR_COLLAPSE = "Collapse sidebar"; + private static final String TOOLTIP_SIDEBAR_EXPAND = "Expand sidebar"; + private static final String TOOLTIP_MATERIAL_ON = "Liquid Glass: on"; + private static final String TOOLTIP_MATERIAL_OFF = "Liquid Glass: off"; + private static final String THEME_TOOLTIP_PREFIX = "Theme: "; + private static final String STATS_TOOLTIP_JOIN = " of "; + private static final String STATS_TOOLTIP_SUFFIX = " enabled"; + private static final String SEARCH_TOOLTIP = "Search every module"; + private static final String TOOLTIP_TICKETS = "Report a bug"; + private static final String TICKETS_STATS_SUFFIX = " open"; + private static final arv TICKETS_ICON = new arv("icons/bug.png"); + private static final float TICKETS_ICON_SIZE = 8.0F; + private static final float BADGE_HEIGHT = 7.0F; + private static final float BADGE_PAD = 2.0F; + private static final float BADGE_OFFSET = 2.5F; + private static final int BADGE_CAP = 9; + private static final String BADGE_OVERFLOW = "9+"; + private static final asu BADGE_COLOR = new asu( + 232, + 84, + 84, + (1291715973 ^ -1291715718) + ((1291715973 & -1291715718) << 1) + ); + private static final float BADGE_VISIBLE = 0.01F; + private static final float BADGE_BUMP = 1.35F; + private static final float WIGGLE_ANGLE = 0.22F; + private static final double WIGGLE_PERIOD = 70.0; + private static final float SHAKE_ANGLE = 0.3F; + private static final int SHAKE_SWINGS = 6; + private static final long SHAKE_MILLIS = 700L; + private static final long SHAKE_CYCLE_MILLIS = 4000L; + private static final float MATERIAL_ACTIVE_ALPHA = 0.22F; + private static final float SEARCH_COUNT_GAP = 6.0F; + private static final float NO_RESULT_ALPHA = 0.55F; + private static final float PLACEHOLDER_ALPHA = 0.5F; + private static final float NO_EDGE_FADE = 0.0F; + private static final float BREADCRUMB_FADE = 4.0F; + private static final float GLYPH_BLEED = 2.0F; + private static final float SEARCH_CLIP_BLEED = 10.0F; + public final asi themeButtonBounds = new asi(); + public final asi searchBarBounds = new asi(); + public final asi layoutToggleButtonBounds = new asi(); + public final asi sidebarToggleButtonBounds = new asi(); + public final asi materialToggleButtonBounds = new asi(); + public final asi ticketsButtonBounds = new asi(); + private final arn searchField; + private final Runnable onLayoutToggle; + private final Runnable onThemeSwitch; + private final Runnable onSidebarToggle; + private final Runnable onTicketsToggle; + private rl lastCategory = rl.COMBAT; + private mv cachedTooltipTheme; + private String cachedThemeTooltip = ""; + private int cachedStatsEnabled = -1; + private int cachedStatsTotal = -1; + private String cachedStatsTooltip = ""; + private int cachedSearchResults = -1; + private String cachedSearchLabel = ""; + private final ct hoverStats = asa.spring(); + ct animation = ct.layout(ob.SLOW, 1.0F); + private final ct hoverTheme = asa.spring(); + private final ct hoverLayout = asa.spring(); + private final ct hoverSidebar = asa.spring(); + private final ct hoverMaterial = asa.spring(); + private final ct hoverSearch = asa.spring(); + private final ct hoverTickets = asa.spring(); + private final ct badgeSpring = ct.transform(ob.SLOW, 0.0F); + private int cachedBadgeCount = -1; + private String cachedBadgeLabel = ""; + + private static arq RADIUS_CHIP() { + return asj.all(oc.PANEL); + } + + private static arq RADIUS_BUTTON() { + return asj.all(oc.CARD); + } + + public aak(arn var1, Runnable var2, Runnable var3, Runnable var4, Runnable var5) { + this.searchField = var1; + this.onLayoutToggle = var2; + this.onThemeSwitch = var3; + this.onSidebarToggle = var4; + this.onTicketsToggle = var5; + } + + public void render(asq var1, xv var2, int var3, float var4, mv var5, rl var6, int var7, boolean var8, float var9, float var10) { + this.animation.update(1.0F); + asu var11 = var5.getWhite().mulAlpha(var4); + float var12 = var2.getHeaderY(); + float var13 = var2.getHeaderHeight(); + float var14 = pk.space(od.LG); + float var15 = var2.getHeaderX(); + var15 = this.renderBreadcrumbs(var1, var15, var12, var13, var4, var5, var6, var11); + var15 += var14; + var15 = this.renderStats(var1, var15, var12, var13, var4, var5, var6, var11, var9, var10); + var15 += var14; + var15 = this.renderThemeButton(var1, var15, var12, var13, var4, var5, var9, var10); + var15 += var14; + var15 = this.renderMaterialButton(var1, var15, var12, var13, var4, var5, var9, var10); + var15 += var14; + var15 = this.renderLayoutButton(var1, var15, var12, var13, var4, var5, var3, var9, var10); + var15 += var14; + var15 = this.renderSidebarToggleButton(var1, var15, var12, var13, var4, var5, var8, var9, var10); + if (akt.eligible()) { + var15 += var14; + var15 = this.renderTicketsButton( + var1, + var15, + var12, + var13, + var4, + var5, + (boolean)(((var6 == rl.TICKETS + ? 1: (2107154387 ^ -2107154387) + ((2107154387 & -2107154387) << 1))) != 0), + var9, + var10 + ); + } else { + this.ticketsButtonBounds.set(0.0F, 0.0F, 0.0F, 0.0F); + } + + this.renderSearchBar(var1, var2, var15 + var14, var4, var5, var7, var9, var10); + } + + private String searchResultLabel(int var1) { + int var2 = 880071375; + + while (true) { + switch (var2) { + case -1795886675: + this.cachedSearchResults = var1; + this.cachedSearchLabel = String.valueOf(var1); + var2 = -208667293; + break; + case -208667293: + return this.cachedSearchLabel; + case 880071375: + default: + if (var1 != this.cachedSearchResults) { + var2 = -1795886675; + } else { + var2 = -208667293; + } + } + } + } + + private void requestTooltip(Object var1, String var2, asi var3, float var4) { + int var5 = -1830337192; + + while (true) { + switch (var5) { + case -2116908208: + return; + case -1971944653: + if (var3 == null) { + var5 = -2116908208; + } else { + var5 = 374443043; + } + break; + case -1830337192: + default: + if (!(var4 <= 0.5F)) { + var5 = -1971944653; + } else { + var5 = -2116908208; + } + break; + case 374443043: + ass.tooltip(var1, var2, var3.x(), var3.y(), var3.width(), var3.height(), asr.BELOW); + return; + } + } + } + + private float renderBreadcrumbs(asq var1, float var2, float var3, float var4, float var5, mv var6, rl var7, asu var8) { + String var9 = var7.getName(); + ge var10 = asp.font(oe.BODY); + ge var11 = gl.ICONS.getFont(7.0F); + ge var12 = gl.ICONS.getFont(5.0F); + float var13 = 7.0F; + float var14 = 6.0F; + float var15 = 7.0F; + float var16 = pk.space(od.LG); + float var17 = 4.0F; + float var18 = 2.0F; + float var19 = Mth.lerp(this.animation.value(), var10.width(this.lastCategory.getName()), var10.width(var9)); + float var20 = var16 * 2.0F + var13 + var17 + var14 + var15 + var18 + var19; + asu var21 = var6.getForegroundColor().mulAlpha(var5); + var1.drawSurface(aso.CONTROL, var2, var3, var20, var4, RADIUS_CHIP(), var21.getRGB()); + atb.drawRoundedBorder( + var1.pose(), var2, var3, var20, var4, pk.borderHairline(), RADIUS_CHIP(), var6.getForegroundStroke().mulAlpha(var5 * arx.classicFade()) + ); + float var22 = var2 + var16; + float var23 = var3 + var4 / 2.0F; + var1.drawText( + var11, "7", var22, var23 - var11.height() / 2.0F + 0.5F, var6.getColor().mulAlpha(var5) + ); + var22 += var11.width("7") + var17; + var1.drawText( + var12, + "A", + var22 + 1.0F, + var23 - var12.height() / 2.0F + 0.5F, + var6.getForegroundGray().mulAlpha(var5) + ); + var22 += var12.width("A") + var17; + float var24 = 4.0F * (1.0F - this.animation.value()); + var1.pushClipEdges(var22 - 2.0F, var3, var2 + var20 - var16, var3 + var4, 0.0F, 0.0F, var24, 4.0F); + float var25 = (1.0F - this.animation.value()) * var10.width(var9) * 2.0F; + float var26 = this.animation.value() * var10.width(this.lastCategory.getName()); + var1.drawText(var10, var9, var22 + var25, var23 - var10.height() / 2.0F + 0.5F, var8.mulAlpha(this.animation.value())); + var1.drawText(var10, this.lastCategory.getName(), var22 - var26, var23 - var10.height() / 2.0F + 0.5F, var8.mulAlpha(1.0F - this.animation.value())); + var1.popClip(); + return var2 + var20; + } + + private float renderStats(asq var1, float var2, float var3, float var4, float var5, mv var6, rl var7, asu var8, float var9, float var10) { + int var11 = 0; + int var12 = 0; + if (var7 == rl.CONFIGS) { + var12 = bz.getInstance().getConfigManager().configNames().size(); + var11 = 1; + } else if (var7 == rl.TICKETS) { + List var13 = akt.tickets(); + var12 = var13.size(); + + for (int var14 = 0; var14 < var12; var14++) { + if (((akw)var13.get(var14)).status() != aku.CLOSED) { + var11++; + } + } + } else { + for (rm var26 : bz.getInstance().getModuleManager().getModules()) { + if (var26.getCategory() == var7) { + var12++; + if (var26.isEnabled()) { + var11++; + } + } + } + } + + ge var25 = asp.font(oe.BODY); + ge var27 = gl.ICONS.getFont(7.0F); + float var15 = 8.0F + + var27.width(var7.getIcon()) + + 4.0F + + var25.width(String.valueOf(var11)) + + 1.0F + + 8.0F + + 1.0F + + var27.width(var7.getIcon()) + + 4.0F + + var25.width(String.valueOf(var12)) + + 8.0F; + boolean var16 = asc.contains(var9, var10, var2, var3, var15, var4, asc.of(this.hoverStats.value(), 0.05F)); + this.hoverStats.animateTo(var16 ? 1.0F : 0.0F); + float var17 = this.hoverStats.update(); + asa.plateControl(var1, var2, var3, var15, var4, asa.plateColor(var6), var5, var17); + boolean var18 = asa.push(var1, var2, var3, var15, var4, var17, 0.05F); + asu var19 = var6.getForegroundColor().mulAlpha(var5); + var1.drawSurface(aso.CONTROL, var2, var3, var15, var4, RADIUS_CHIP(), var19.getRGB()); + atb.drawRoundedBorder( + var1.pose(), var2, var3, var15, var4, pk.borderHairline(), RADIUS_CHIP(), var6.getForegroundStroke().mulAlpha(var5 * arx.classicFade()) + ); + var8 = asa.liftText(var8, var6, var17); + float var20 = var2 + 8.0F; + float var21 = var3 + (var4 - var25.height()) / 2.0F; + float var22 = var3 + (var4 - var27.height()) / 2.0F - 0.5F; + var1.drawText( + var27, + var7.getIcon(), + var20 + + ( + var7.getIcon().equals("2") + ? 1: (380962013 | -380962013) + (380962013 & -380962013) + ), + var22, + var6.getColor().mulAlpha(var5) + ); + var20 += var27.width(var7.getIcon()) + 4.0F; + var1.drawText(var25, String.valueOf(var11), var20, var21, var8); + var20 += var25.width(String.valueOf(var11)); + var1.drawSprite(new arv("icons/separator.png"), ++var20, var22 - 1.0F, 8.0F, 8.0F, asu.WHITE.mulAlpha(var5)); + var20 += 9.0F; + var1.drawText(var27, var7.getIcon(), var20, var22, var6.getColor().mulAlpha(var5)); + var20 += var27.width(var7.getIcon()) + 4.0F; + var1.drawText(var25, String.valueOf(var12), var20, var21, var8); + asa.pop(var1, var18); + if (var17 > 0.5F) { + if (var11 != this.cachedStatsEnabled || var12 != this.cachedStatsTotal) { + this.cachedStatsEnabled = var11; + this.cachedStatsTotal = var12; + this.cachedStatsTooltip = var11 + + " of " + + var12 + + ( + var7 == rl.TICKETS + ? " open" + : " enabled" + ); + } + + ass.tooltip(this.hoverStats, this.cachedStatsTooltip, var2, var3, var15, var4, asr.BELOW); + } + + return var2 + var15; + } + + private float renderThemeButton(asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8) { + float var9 = 0.0F; + int var10 = 2012127152; + + while (true) { + switch (var10) { + case 481299799: + this.requestTooltip(this.hoverTheme, this.cachedThemeTooltip, this.themeButtonBounds, var9); + return var2 + var4; + case 1683939702: + this.cachedTooltipTheme = var6; + this.cachedThemeTooltip = "Theme: " + var6.getName(); + var10 = 481299799; + break; + case 2012127152: + default: + this.themeButtonBounds.set(var2, var3, var4, var4); + var9 = this.drawIconButton( + var1, + var2, + var3, + var4, + var6.getIcon(), + var5, + var6, + this.hoverTheme, + (boolean)(((0)) != 0), + var7, + var8 + ); + if (this.cachedTooltipTheme != var6) { + var10 = 1683939702; + } else { + var10 = 481299799; + } + } + } + } + + private float renderMaterialButton(asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8) { + this.materialToggleButtonBounds.set(var2, var3, var4, var4); + boolean var9 = vm.INSTANCE.isLiquidGlass(); + float var10 = this.drawIconButton( + var1, var2, var3, var4, "E", var5, var6, this.hoverMaterial, var9, var7, var8 + ); + this.requestTooltip( + this.hoverMaterial, + var9 + ? "Liquid Glass: on" + : "Liquid Glass: off", + this.materialToggleButtonBounds, + var10 + ); + return var2 + var4; + } + + private float renderLayoutButton(asq var1, float var2, float var3, float var4, float var5, mv var6, int var7, float var8, float var9) { + this.layoutToggleButtonBounds.set(var2, var3, var4, var4); + int var10 = Math.min( + Math.max(var7 - (1), (1342573389 | -1342573389) + (1342573389 & -1342573389)), + LAYOUT_ICONS.length - ((368423972 ^ -368423971) + ((368423972 & -368423971) << 1)) + ); + float var11 = this.drawIconButton( + var1, + var2, + var3, + var4, + LAYOUT_ICONS[var10], + var5, + var6, + this.hoverLayout, + (boolean)(((0)) != 0), + var8, + var9 + ); + this.requestTooltip(this.hoverLayout, LAYOUT_TOOLTIPS[var10], this.layoutToggleButtonBounds, var11); + return var2 + var4; + } + + private float renderSidebarToggleButton(asq var1, float var2, float var3, float var4, float var5, mv var6, boolean var7, float var8, float var9) { + this.sidebarToggleButtonBounds.set(var2, var3, var4, var4); + float var10 = this.drawIconButton( + var1, + var2, + var3, + var4, + "6", + var5, + var6, + this.hoverSidebar, + (boolean)(((0)) != 0), + var8, + var9 + ); + this.requestTooltip( + this.hoverSidebar, + var7 + ? "Collapse sidebar" + : "Expand sidebar", + this.sidebarToggleButtonBounds, + var10 + ); + return var2 + var4; + } + + private float renderTicketsButton(asq var1, float var2, float var3, float var4, float var5, mv var6, boolean var7, float var8, float var9) { + this.ticketsButtonBounds.set(var2, var3, var4, var4); + float var10 = this.drawIconButton(var1, var2, var3, var4, null, var5, var6, this.hoverTickets, var7, var8, var9); + float var11 = (var4 - 8.0F) / 2.0F; + asu var12 = var7 ? var6.getWhite().mulAlpha(var5) : asa.liftText(var6.getColor(), var6, var10).mulAlpha(var5); + int var13 = akt.unreadTotal(); + long var14 = System.currentTimeMillis(); + float var16 = (float)(Math.sin(var14 / 70.0) * 0.22F * var10); + if (var13 > 0) { + float var17 = (float)(var14 % ((-2648346174515040159L | 2648346174515044159L) + (-2648346174515040159L & 2648346174515044159L))) / 700.0F; + if (var17 < 1.0F) { + var16 += (float)(Math.sin(var17 * Math.PI * 6.0) * 0.3F * (1.0F - var17)); + } + } + + float var20 = var2 + var4 / 2.0F; + float var18 = var3 + var4 / 2.0F; + var1.pushMatrix(); + var1.pose().translate(var20, var18); + var1.pose().rotate(var16); + var1.pose().translate(-var20, -var18); + var1.drawSprite(TICKETS_ICON, var2 + var11, var3 + var11, 8.0F, 8.0F, var12); + var1.popMatrix(); + float var19 = this.badgeSpring.update(var13 > 0 ? 1.0F : 0.0F); + if (var19 > 0.01F) { + this.drawBadge(var1, var2 + var4, var3, Math.max(var13, this.cachedBadgeCount), var5 * Math.min(1.0F, var19), var6, var19); + } + + this.requestTooltip( + this.hoverTickets, "Report a bug", this.ticketsButtonBounds, var10 + ); + return var2 + var4; + } + + private void drawBadge(asq var1, float var2, float var3, int var4, float var5, mv var6, float var7) { + if (var4 != this.cachedBadgeCount && var4 > 0) { + if (var4 > this.cachedBadgeCount && this.cachedBadgeCount > 0) { + this.badgeSpring.jumpTo(1.35F); + } + + this.cachedBadgeCount = var4; + this.cachedBadgeLabel = var4 > 9? "9+" + : String.valueOf(var4); + } + + ge var8 = asp.font(oe.MICRO); + float var9 = Math.max(7.0F, var8.width(this.cachedBadgeLabel) + 4.0F); + float var10 = var2 - var9 + 2.5F; + float var11 = var3 - 2.5F; + float var12 = var10 + var9 / 2.0F; + float var13 = var11 + 3.5F; + var1.pushMatrix(); + var1.pose().translate(var12, var13); + var1.pose().scale(var7, var7); + var1.pose().translate(-var12, -var13); + var1.drawRoundedRect(var10, var11, var9, 7.0F, asj.pill(7.0F), BADGE_COLOR.mulAlpha(var5)); + var1.drawText( + var8, + this.cachedBadgeLabel, + var10 + (var9 - var8.width(this.cachedBadgeLabel)) / 2.0F, + var11 + (7.0F - var8.height()) / 2.0F, + var6.getWhite().mulAlpha(var5) + ); + var1.popMatrix(); + } + + private float drawIconButton(asq var1, float var2, float var3, float var4, String var5, float var6, mv var7, ct var8, boolean var9, float var10, float var11) { + boolean var12 = asa.hits(var10, var11, var2, var3, var4, var4, var8.value(), 0.05F); + var8.animateTo(var12 ? 1.0F : 0.0F); + float var13 = var8.update(); + asa.plateControl(var1, var2, var3, var4, var4, asa.plateColor(var7), var6, var13); + boolean var14 = asa.push(var1, var2, var3, var4, var4, var13, 0.05F); + asu var15 = var7.getForegroundColor().mulAlpha(var6); + var1.drawSurface(aso.CONTROL, var2, var3, var4, var4, RADIUS_BUTTON(), var15.getRGB()); + if (var9) { + var1.drawSurface(aso.ACCENT, var2, var3, var4, var4, RADIUS_BUTTON(), var7.getColor().getRGBWithAlpha(var6 * 0.22F)); + } + + atb.drawRoundedBorder( + var1.pose(), + var2, + var3, + var4, + var4, + pk.borderHairline(), + RADIUS_BUTTON(), + var9 ? var7.getColor().mulAlpha(var6) : var7.getForegroundStroke().mulAlpha(var6 * arx.classicFade()) + ); + if (var5 != null) { + ge var16 = gl.ICONS.getFont(7.0F); + float var17 = var2 + (var4 - var16.width(var5)) / 2.0F; + float var18 = var3 + (var4 - var16.height()) / 2.0F; + asu var19 = var9 ? var7.getWhite().mulAlpha(var6) : asa.liftText(var7.getColor(), var7, var13).mulAlpha(var6); + var1.drawText(var16, var5, var17, var18, var19); + } + + asa.pop(var1, var14); + return var13; + } + + private void renderSearchBar(asq var1, xv var2, float var3, float var4, mv var5, int var6, float var7, float var8) { + float var9 = var2.getHeaderHeight(); + float var10 = var2.getHeaderX() + var2.getHeaderWidth(); + float var11 = Math.max(56.0F, Math.min(128.0F, var10 - var3)); + float var12 = var10 - var11; + float var13 = var2.getHeaderY(); + this.searchBarBounds.set(var12, var13, var11, var9); + boolean var14 = asa.hits(var7, var8, var12, var13, var11, var9, this.hoverSearch.value(), 0.05F); + this.hoverSearch.animateTo(var14 ? 1.0F : 0.0F); + float var15 = this.hoverSearch.update(); + asa.plateControl(var1, var12, var13, var11, var9, asa.plateColor(var5), var4, var15); + boolean var16 = asa.push(var1, var12, var13, var11, var9, var15, 0.05F); + int var17 = !this.searchField.getText().isEmpty() + ? 1: 0; + int var18 = var17 != 0 && var6 == 0 ? 1: 0; + asu var19 = var5.getForegroundColor().mulAlpha(var4); + var1.drawSurface(aso.CONTROL, var12, var13, var11, var9, RADIUS_BUTTON(), var19.getRGB()); + atb.drawRoundedBorder( + var1.pose(), + var12, + var13, + var11, + var9, + pk.borderHairline(), + RADIUS_BUTTON(), + this.searchField.isSelected() ? var5.getColor().mulAlpha(var4) : var5.getForegroundStroke().mulAlpha(var4 * arx.classicFade()) + ); + ge var20 = asp.font(oe.BODY); + String var21 = this.searchField.getText(); + int var22 = var21.isEmpty() && !this.searchField.isSelected() + ? 1: 0; + float var23 = var12 + pk.space(od.LG); + float var24 = var13 + (var9 - var20.height()) / 2.0F; + float var25 = var12 + var11 - pk.space(od.LG); + if (var17 != 0) { + ge var26 = asp.font(oe.MICRO); + String var27 = this.searchResultLabel(var6); + asu var28 = var18 != 0 ? oq.current().color(nx.ON_SURFACE_FAINT).mulAlpha(var4) : var5.getColor().mulAlpha(var4); + float var29 = var26.width(var27); + var1.drawText(var26, var27, var25 - var29, var13 + (var9 - var26.height()) / 2.0F, var28); + var25 -= var29 + 6.0F; + } + + asu var30 = asa.liftText(var5.getWhite().mulAlpha(var4 * 0.5F), var5, var15); + if (var22 != 0) { + var1.drawText(var20, "Search", var23, var24, var30); + } else { + asu var31 = var18 != 0 ? var5.getWhite().mulAlpha(var4 * 0.55F) : var5.getWhite().mulAlpha(var4); + var1.clipTrailing(var23, var24 - 10.0F, var25, var24 + 10.0F, ars.revealFade()); + this.searchField.render(var1, var23, var24, var31, var30); + var1.popClip(); + } + + this.requestTooltip( + this.hoverSearch, + "Search every module", + this.searchBarBounds, + var22 != 0 ? var15 : 0.0F + ); + asa.pop(var1, var16); + } + + public void resetAnim(rl var1, rl var2) { + this.animation.jumpTo(0.0F); + this.cachedStatsEnabled = -1; + this.lastCategory = var1; + } + + private static boolean hits(double var0, double var2, asi var4, ct var5, float var6) { + int var8 = 0; + int var7 = 1500290972; + + while (true) { + switch (var7) { + case -1157569730: + if (asc.contains(var0, var2, var4.x(), var4.y(), var4.width(), var4.height(), asc.of(var5.value(), var6))) { + var7 = -213718317; + } else { + var7 = -1143588103; + } + break; + case -1143588103: + var8 = 0; + var7 = -427251310; + break; + case -427251310: + return (boolean)((var8) != 0); + case -213718317: + var8 = 1; + var7 = -427251310; + break; + case 1500290972: + default: + if (var4.isValid()) { + var7 = -1157569730; + } else { + var7 = -1143588103; + } + } + } + } + + public boolean handleMouseClicked(double var1, double var3) { + int var5 = -421631423; + + while (true) { + switch (var5) { + case -2105032127: + return (boolean)(((1)) != 0); + case -1988049373: + if (hits(var1, var3, this.layoutToggleButtonBounds, this.hoverLayout, 0.05F)) { + var5 = -1802803556; + } else { + var5 = -289834809; + } + break; + case -1902711210: + bz.getInstance().getSoundManager().playClick(); + var5 = 1817191046; + break; + case -1802803556: + this.onLayoutToggle.run(); + if (bz.getInstance().getSoundManager() != null) { + var5 = 614304656; + } else { + var5 = 1279654301; + } + break; + case -1408320957: + bz.getInstance().getSoundManager().playClick(); + var5 = 367466640; + break; + case -1199949030: + this.onSidebarToggle.run(); + if (bz.getInstance().getSoundManager() != null) { + var5 = -1179306431; + } else { + var5 = -838526593; + } + break; + case -1179306431: + bz.getInstance().getSoundManager().playTab(); + var5 = -838526593; + break; + case -838526593: + return (boolean)(((1)) != 0); + case -421631423: + default: + if (akt.eligible()) { + var5 = 1885087992; + } else { + var5 = 610869126; + } + break; + case -289834809: + if (hits(var1, var3, this.themeButtonBounds, this.hoverTheme, 0.05F)) { + var5 = 1529275559; + } else { + var5 = 286166974; + } + break; + case -275371932: + vm.INSTANCE.toggleLiquidGlass(); + if (bz.getInstance().getSoundManager() != null) { + var5 = -1902711210; + } else { + var5 = 1817191046; + } + break; + case 286166974: + return this.isOverSearchBar(var1, var3); + case 317362737: + this.onTicketsToggle.run(); + if (bz.getInstance().getSoundManager() != null) { + var5 = 1261841641; + } else { + var5 = -2105032127; + } + break; + case 367466640: + return (boolean)(((1)) != 0); + case 610869126: + if (hits(var1, var3, this.sidebarToggleButtonBounds, this.hoverSidebar, 0.05F)) { + var5 = -1199949030; + } else { + var5 = 1023800203; + } + break; + case 614304656: + bz.getInstance().getSoundManager().playTab(); + var5 = 1279654301; + break; + case 1023800203: + if (hits(var1, var3, this.materialToggleButtonBounds, this.hoverMaterial, 0.05F)) { + var5 = -275371932; + } else { + var5 = -1988049373; + } + break; + case 1261841641: + bz.getInstance().getSoundManager().playTab(); + var5 = -2105032127; + break; + case 1279654301: + return (boolean)(((1)) != 0); + case 1529275559: + yd.from(this.themeButtonBounds); + this.onThemeSwitch.run(); + if (bz.getInstance().getSoundManager() != null) { + var5 = -1408320957; + } else { + var5 = 367466640; + } + break; + case 1817191046: + return (boolean)(((1)) != 0); + case 1885087992: + if (hits(var1, var3, this.ticketsButtonBounds, this.hoverTickets, 0.05F)) { + var5 = 317362737; + } else { + var5 = 610869126; + } + } + } + } + + public boolean isOverSearchBar(double var1, double var3) { + return hits(var1, var3, this.searchBarBounds, this.hoverSearch, 0.05F); + } + + static { + String[] var10000 = new String[3]; + var10000[0] = "9"; + var10000[1] = ":"; + var10000[2] = ";"; + LAYOUT_ICONS = var10000; + var10000 = new String[3]; + var10000[0] = "One column"; + var10000[1] = "Two columns"; + var10000[2] = "Three columns"; + LAYOUT_TOOLTIPS = var10000; + } +} diff --git a/src/main/java/defpackage/aal.java b/src/main/java/defpackage/aal.java new file mode 100644 index 0000000..84b5695 --- /dev/null +++ b/src/main/java/defpackage/aal.java @@ -0,0 +1,84 @@ +package defpackage; + +import net.minecraft.util.Mth; + +public class aal { + private static final float HALF = 2.0F; + private static final float ICON_INSET = 8.0F; + private static final float LABEL_GAP = 6.0F; + private static final float COUNT_INSET = 7.0F; + private static final float IDLE_COUNT_ALPHA = 0.45F; + private static final float LABEL_THRESHOLD = 0.01F; + private static final float HOVER_SCALE = 0.05F; + private static final float ICON_SCALE_COLLAPSED = 0.8F; + private static final int ICON_FONT_SIZE = 7; + private final rl category; + private final ct animationSwitch; + private final ct hoverAnimation = ct.transform(ob.MEDIUM, 0.0F); + + private static arq RADIUS_ROW() { + return asj.all(oc.CONTROL); + } + + public aal(rl var1) { + this.category = var1; + this.animationSwitch = ct.layout(ob.MEDIUM, var1 == rl.COMBAT ? 1.0F : 0.0F); + } + + public float render( + asq var1, + mv var2, + float var3, + float var4, + float var5, + float var6, + float var7, + boolean var8, + asu var9, + asu var10, + asu var11, + asu var12, + boolean var13, + int var14, + int var15, + float var16 + ) { + this.animationSwitch.animateTo(var8 ? 1.0F : 0.0F); + this.animationSwitch.update(); + asu var17 = var11.mix(var12, this.animationSwitch.value()); + asu var18 = var10.mix(var9, this.animationSwitch.value()); + this.hoverAnimation.animateTo(var13 ? 1.0F : 0.0F); + float var19 = this.hoverAnimation.update(); + asa.plateRow(var1, var3, var4, var5, var6, asa.plateColor(var2), var16, var19); + var18 = asa.liftText(var18, var2, var19); + ge var20 = gl.ICONS.getFont(7.0F); + float var21 = (var6 - var20.height()) / 2.0F; + float var22 = Mth.lerp(var7, 1.0F, 0.8F); + float var23 = var20.width(this.category.getIcon()); + boolean var24 = asa.push(var1, var3, var4, var5, var6, var19, 0.05F); + float var25 = var3 + 8.0F + asa.iconShift(var19); + var1.pushMatrix(); + var1.pose().translate(var3 + 8.0F + var23 / 2.0F, var4 + var21 + var20.height() / 2.0F); + var1.pose().scale(var22, var22); + var1.pose().translate(-(var3 + 8.0F + var23 / 2.0F), -(var4 + var21 + var20.height() / 2.0F)); + var1.drawText(var20, this.category.getIcon(), var25, var4 + var21, var17); + var1.popMatrix(); + if (var7 > 0.01F) { + ge var26 = asp.font(oe.BODY); + var1.drawText(var26, this.category.getName(), var3 + 8.0F + var23 * var22 + 6.0F, var4 + (var6 - var20.height()) / 2.0F, var18); + if (var15 > 0) { + ge var27 = asp.font(oe.MICRO); + String var28 = String.valueOf(var14); + asu var29 = var14 > 0 ? var12.mulAlpha(var7) : oq.current().color(nx.ON_SURFACE_FAINT).mulAlpha(var16 * var7 * 0.45F); + var1.drawText(var27, var28, var3 + var5 - 7.0F - var27.width(var28), var4 + (var6 - var27.height()) / 2.0F, var29); + } + } + + asa.pop(var1, var24); + return var19; + } + + public rl getCategory() { + return this.category; + } +} diff --git a/src/main/java/defpackage/aam.java b/src/main/java/defpackage/aam.java new file mode 100644 index 0000000..bf257ea --- /dev/null +++ b/src/main/java/defpackage/aam.java @@ -0,0 +1,525 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.function.Predicate; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; + +public class aam { + private static final float HALF = 2.0F; + private static final float GROUP_DIVIDER_INSET = 10.0F; + private static final float ROW_INSET = 4.0F; + private static final float ROW_HOVER_SCALE = 1.05F; + private static final float PILL_ALPHA = 0.08F; + private static final float ACCENT_BAR_INSET = 1.5F; + private static final float ACCENT_BAR_WIDTH = 2.5F; + private static final float ACCENT_BAR_HEIGHT_RATIO = 0.45F; + private static final float COLLAPSED_LABEL_THRESHOLD = 0.02F; + private static final String AVATAR_TOOLTIP_JOIN = " - "; + private static final float LOGO_SIZE = 16.0F; + private static final float LOGO_PAD_ALL = 4.0F; + private static final float LOGO_TEXT_GAP = 6.0F; + private static final float LOGO_TEXT_VERTICAL_OFFSET = 0.5F; + private static final float LOGO_SURFACE_ALPHA = 0.6F; + private static final float LOGO_TEXT_ALPHA_FACTOR = 2.0F; + private static final float SIDEBAR_FADE_THRESHOLD = 0.01F; + private static final float AVATAR_SIZE = 18.0F; + private static final float AVATAR_BOTTOM_PAD = 8.0F; + private static final float AVATAR_TEXT_GAP = 8.0F; + private static final float AVATAR_NAME_OFFSET_Y = 2.5F; + private static final float AVATAR_ROLE_BOTTOM_PAD = 2.0F; + private static final int AVATAR_BORDER_ALPHA_HOVER = 200; + private static final int AVATAR_BORDER_ALPHA_IDLE = 190; + private static final float TOP_PAD_STANDARD = 7.0F; + private static final float TOP_PAD_MIN = 5.0F; + private static final float BOTTOM_PAD_STANDARD = 8.0F; + private static final float BOTTOM_PAD_MIN = 6.0F; + private static final float PADDING_ADAPT_THRESHOLD = 210.0F; + private static final float PADDING_ADAPT_BASE = 170.0F; + private static final float PADDING_ADAPT_RANGE = 40.0F; + private static final float MAX_ROW_PITCH = 17.5F; + private static final float MIN_ROW_PITCH = 15.2F; + private static final float MIN_ROW_HEIGHT = 12.2F; + private static final float SECTION_GAP_STANDARD = 20.0F; + private static final float SECTION_GAP_MIN = 14.0F; + private static final float SECTION_GAP_MAX = 24.0F; + private static final float MIN_DIVIDER_GAP = 12.0F; + private static final float DIVIDER_VISIBILITY_RATIO = 0.75F; + private static final float EXTRA_GAP_DISTRIBUTION_FACTOR = 0.15F; + private final ct pillAnimation = ct.layout(ob.SETTLED, 1.0F); + private final ct pillPresence = ct.layout(ob.MEDIUM, 1.0F); + private final ct avatarHover = asa.spring(); + private float pillFromOffsetY; + private float pillOffsetY; + private float lastPillTarget; + private boolean pillInitialized; + private final ct sidebarAnimation; + private final boolean isSidebarExpanded; + private final Predicate onCategorySelect; + private final List categories = new ArrayList<>(); + private final float[] rowY; + private final int[] enabledCounts = new int[rl.values().length]; + private final int[] totalCounts = new int[rl.values().length]; + private final int bottomCategoryCount; + private float rowX; + private float rowWidth; + private float rowHeight; + private int hoveredRow = -1; + private String cachedAvatarName = ""; + private String cachedAvatarRole = ""; + private String cachedAvatarTooltip = ""; + + private static arq RADIUS_SIDEBAR() { + return asj.all(oc.PANEL); + } + + private static arq RADIUS_LOGO_AREA() { + return asj.all(oc.CARD); + } + + private static arq RADIUS_LOGO_ICON() { + return asj.all(oc.INNER); + } + + private static arq RADIUS_PILL() { + return asj.all(oc.CONTROL); + } + + private static arq RADIUS_ACCENT_BAR() { + return asj.all(oc.CHIP); + } + + private static arq RADIUS_AVATAR() { + return asj.all(oc.CONTROL); + } + + private static arq RADIUS_AVATAR_BORDER() { + return asj.all(oc.INNER); + } + + public aam(ct var1, boolean var2, Predicate var3) { + this.sidebarAnimation = var1; + this.isSidebarExpanded = var2; + this.onCategorySelect = var3; + this.categories.addAll(Arrays.stream(rl.listed()).map(aal::new).toList()); + this.rowY = new float[this.categories.size()]; + int var4 = 0; + + for (aal var6 : this.categories) { + if (this.isBottomCategory(var6.getCategory())) { + var4++; + } + } + + this.bottomCategoryCount = var4; + } + + private void refreshAvatarTooltip(String var1, String var2) { + if (!var1.equals(this.cachedAvatarName) || !var2.equals(this.cachedAvatarRole)) { + this.cachedAvatarName = var1; + this.cachedAvatarRole = var2; + this.cachedAvatarTooltip = var2.isEmpty() ? var1 : var1 + " - " + var2; + } + } + + private void refreshCategoryCounts() { + List var1 = null; + int var2 = 0; + rm var3 = null; + int var4 = 0; + int var5 = -1614851534; + + while (true) { + switch (var5) { + case -1918917024: + if (var2 < var1.size()) { + var5 = -1834030760; + } else { + var5 = -666169623; + } + break; + case -1834030760: + var3 = (rm)var1.get(var2); + var4 = var3.getCategory().ordinal(); + this.totalCounts[var4] = this.totalCounts[var4] + 1; + if (var3.isEnabled()) { + var5 = 1975589977; + } else { + var5 = 1242246363; + } + break; + case -1614851534: + default: + Arrays.fill(this.enabledCounts, (2122686284 | -2122686284) + (2122686284 & -2122686284)); + Arrays.fill(this.totalCounts, (-2063648524 ^ 2063648524) + ((-2063648524 & 2063648524) << 1)); + var1 = bz.getInstance().getModuleManager().getModules(); + var2 = 0; + var5 = -1918917024; + break; + case -666169623: + return; + case 1242246363: + var2++; + var5 = -1918917024; + break; + case 1975589977: + this.enabledCounts[var4] = this.enabledCounts[var4] + 1; + var5 = 1242246363; + } + } + } + + public void render(asq var1, xv var2, float var3, mv var4, rl var5, asu var6, asu var7, asu var8, float var9, float var10) { + float var11 = this.sidebarAnimation.update(); + float var12 = xv.sidebarCollapsedWidth(); + float var13 = xv.sidebarExpandedWidth(); + float var14 = var2.getSidebarWidth(); + float var15 = var2.getSidebarX(); + float var16 = var2.getSidebarY(); + float var17 = var2.getSidebarHeight(); + asu var18 = var4.getForegroundLight().brighter(0.05F).mulAlpha(var3 * 0.55F); + asu var19 = var4.getWhite().mulAlpha(var3 * 0.05F); + float var20 = arx.classicFade(); + ast.shadow(var1, var15, var16, var14, var17, RADIUS_SIDEBAR(), nz.LOW, var3); + var1.drawSurface(aso.CARD, var15, var16, var14, var17, RADIUS_SIDEBAR(), var18.getRGB()); + if (var20 > 0.0F) { + var1.drawRoundedRect(var15, var16, var14, var17, RADIUS_SIDEBAR(), var19.getRGBWithAlpha(var20)); + } + + atb.drawRoundedBorder( + var1.pose(), + var15, + var16, + var14, + var17, + pk.borderHairline(), + RADIUS_SIDEBAR(), + var4.getForegroundLightStroke().brighter(0.04F).mulAlpha(var3 * 0.8F * var20) + ); + ge var21 = gl.SEMIBOLD.getFont(8.0F); + String var22 = "Evolution"; + float var23 = Math.min(1.0F, var11 * 2.0F); + float var24 = var14 - 8.0F; + float var25 = 24.0F; + float var26 = var15 + 4.0F; + float var27 = var16 + 4.0F; + float var28 = var27 + var25; + float var29 = var15 + 4.0F + (var12 - 8.0F - 16.0F) / 2.0F; + float var30 = var13 - 8.0F; + float var31 = var21.width(var22); + float var32 = var15 + 4.0F + (var30 - var31) / 2.0F; + float var33 = var26 + (var32 - var26 - 16.0F) / 2.0F; + float var34 = var29 + (var33 - var29) * var11; + float var35 = var27 + 4.0F; + float var36 = var34 + 16.0F + 6.0F; + var1.drawSurface(aso.CONTROL, var26, var27, var24, var25, RADIUS_LOGO_AREA(), var4.getForegroundColor().getRGBWithAlpha(0.6F * var3)); + atb.drawRoundedBorder( + var1.pose(), var26, var27, var24, var25, pk.borderThickness(), RADIUS_LOGO_AREA(), var4.getForegroundStroke().mulAlpha(var3 * var20) + ); + atb.drawRoundedTexture(var1.pose(), bz.id("icons/logo.png"), var34, var35, 16.0F, 16.0F, RADIUS_LOGO_ICON(), asu.WHITE.mulAlpha(var3)); + var1.pushMatrix(); + var1.clipScroll(var15, var16, var15 + var14, var16 + var17, ars.edgeFade()); + var7 = var7.mulAlpha(var23); + asu var37 = var4.getGrayLight().mulAlpha(var3 * var23); + asu var38 = var4.getGray().mulAlpha(var3); + if (var11 > 0.01F) { + var1.drawText(var21, var22, var36, var35 + (16.0F - var21.height()) / 2.0F + 0.5F, var7); + } + + float var39 = var15 + (var12 - 18.0F) / 2.0F; + float var40 = var16 + var17 - 18.0F - 8.0F; + float var41 = Math.max(0.0F, var40 - var28); + float var42 = var41 >= 210.0F ? 7.0F : Mth.clamp(Mth.lerp((var41 - 170.0F) / 40.0F, 5.0F, 7.0F), 5.0F, 7.0F); + float var43 = var41 >= 210.0F ? 8.0F : Mth.clamp(Mth.lerp((var41 - 170.0F) / 40.0F, 6.0F, 8.0F), 6.0F, 8.0F); + float var44 = Math.max(0.0F, var41 - var42 - var43); + int var45 = this.categories.size() - this.bottomCategoryCount; + int var46 = Math.max(0, var45 - ((1866406625 ^ -1866406624) + ((1866406625 & -1866406624) << 1))) + + Math.max( + 0, this.bottomCategoryCount - ((729536886 | -729536885) + (729536886 & -729536885)) + ); + float var47 = oq.current().spacing(od.XS); + float var48 = var46 * 17.5F + 2.0F * Math.max(12.2F, (17.5F - var47) / 1.05F); + float var49 = var48 + 20.0F; + float var50 = var46 * 15.2F + 24.4F; + float var51 = var50 + 14.0F; + float var52 = Mth.clamp((var44 - var51) / Math.max(1.0F, var49 - var51), 0.0F, 1.0F); + float var53 = 15.2F + 2.3000002F * var52; + this.rowHeight = Math.max(12.2F, (var53 - var47) / 1.05F); + float var54 = Math.max(0, var45 - ((422920933 | -422920932) + (422920933 & -422920932))) * var53 + + this.rowHeight; + float var55 = Math.max( + 0, this.bottomCategoryCount - ((514296274 | -514296273) + (514296274 & -514296273)) + ) + * var53 + + this.rowHeight; + float var56 = var54 + var55; + float var57 = Math.max(0.0F, var44 - (var56 + 20.0F)); + float var58 = Mth.clamp(20.0F + var57 * 0.15F, 14.0F, 24.0F); + float var59 = var28 + var42; + float var60 = var59 + var54; + float var61 = var60 + var58; + float var62 = var40 - var43 - var55; + float var63; + if (var61 <= var62) { + var63 = var61; + } else { + var63 = Math.max(var60 + 12.0F, var62); + } + + float var64 = var63 - var60; + float var65 = var60 + var64 / 2.0F; + if (var64 >= 9.0F) { + ast.divider(var1, var15 + 10.0F, var65, var14 - 20.0F, var3 * var20); + } + + this.rowX = var15 + 4.0F; + this.rowWidth = var14 - 8.0F; + float var66 = var16 + this.lastPillTarget; + int var67 = 0; + int var68 = 0; + + for (int var69 = 0; var69 < this.categories.size(); var69++) { + aal var70 = this.categories.get(var69); + float var71; + if (this.isBottomCategory(var70.getCategory())) { + var71 = var63 + var68 * var53; + var68++; + } else { + var71 = var59 + var67 * var53; + var67++; + } + + this.rowY[var69] = var71; + if (var70.getCategory() == var5) { + var66 = var71; + } + } + + float var85 = var66 - var16; + this.lastPillTarget = var85; + if (!this.pillInitialized) { + this.pillFromOffsetY = var85; + this.pillInitialized = (boolean)(((1)) != 0); + } + + float var86 = this.pillAnimation.update(); + this.pillOffsetY = this.pillFromOffsetY + (var85 - this.pillFromOffsetY) * var86; + float var87 = this.pillPresence.update(var5.isListed() ? 1.0F : 0.0F); + float var72 = var3 * var87; + float var73 = var16 + this.pillOffsetY; + if (var72 > 0.01F) { + var1.drawSurface(aso.ROW, this.rowX, var73, this.rowWidth, this.rowHeight, RADIUS_PILL(), var4.getWhite().getRGBWithAlpha(var72 * 0.08F)); + atb.drawRoundedBorder( + var1.pose(), + this.rowX, + var73, + this.rowWidth, + this.rowHeight, + pk.borderHairline(), + RADIUS_PILL(), + var4.getForegroundLightStroke().mulAlpha(var72 * var20) + ); + float var74 = this.rowHeight * 0.45F; + var1.drawSurface(aso.ACCENT, var15 + 1.5F, var73 + (this.rowHeight - var74) / 2.0F, 2.5F, var74, RADIUS_ACCENT_BAR(), var6.mulAlpha(var87).getRGB()); + } + + this.refreshCategoryCounts(); + this.hoveredRow = asb.pickRow(var9, var10, this.rowX, this.rowWidth, this.rowY, this.categories.size(), this.rowHeight, 1.05F); + int var88 = var11 < 0.02F ? 1: 0; + + for (int var75 = 0; var75 < this.categories.size(); var75++) { + aal var76 = this.categories.get(var75); + int var77 = var76.getCategory().ordinal(); + float var78 = var76.render( + var1, + var4, + this.rowX, + this.rowY[var75], + this.rowWidth, + this.rowHeight, + var11, + (boolean)(((var76.getCategory() == var5 + ? 1: (1140875142 ^ -1140875142) + ((1140875142 & -1140875142) << 1))) != 0), + var7, + var37, + var38, + var6, + (boolean)(((var75 == this.hoveredRow + ? 1: (1631443030 ^ -1631443030) + ((1631443030 & -1631443030) << 1))) != 0), + this.enabledCounts[var77], + this.totalCounts[var77], + var3 + ); + if (var88 != 0 && var78 > 0.5F) { + ass.tooltip(var76.getCategory(), var76.getCategory().getName(), this.rowX, this.rowY[var75], this.rowWidth, this.rowHeight, asr.RIGHT); + } + } + + boolean var89 = asa.hits(var9, var10, var39, var40, 18.0F, 18.0F, this.avatarHover.value(), 0.05F); + float var90 = this.avatarHover.update(var89 ? 1.0F : 0.0F); + Identifier var91 = cp.avatarTexture(); + if (var91 == null) { + var91 = bz.id("icons/avatar.png"); + } + + asa.plateControl(var1, var39, var40, 18.0F, 18.0F, asa.plateColor(var4), var3, var90); + boolean var92 = asa.push(var1, var39, var40, 18.0F, 18.0F, var90, 0.05F); + atb.drawRoundedTexture(var1.pose(), var91, var39, var40, 18.0F, 18.0F, RADIUS_AVATAR(), asu.WHITE.mulAlpha(var3)); + atb.drawRoundedBorder( + var1.pose(), + var39, + var40, + 18.0F, + 18.0F, + pk.borderHairline(), + RADIUS_AVATAR_BORDER(), + var4.getColor().withAlpha(Math.round(Mth.lerp(var90, 190.0F, 200.0F))).mulAlpha(var3) + ); + asa.pop(var1, var92); + String var79 = f.getUsername(); + String var80 = f.getRole(); + if (var11 > 0.01F) { + ge var81 = gl.MEDIUM.getFont(6.0F); + ge var82 = gl.REGULAR.getFont(5.0F); + float var83 = var39 + 18.0F + 8.0F; + var1.drawText(var81, var79, var83, var40 + 2.5F, asa.liftText(var7, var4, var90)); + var1.drawText(var82, var80, var83, var40 + 18.0F - var82.height() - 2.0F, var37); + } + + if (var90 > 0.5F) { + this.refreshAvatarTooltip(var79, var80); + ass.tooltip(this, this.cachedAvatarTooltip, var39, var40, 18.0F, 18.0F, asr.RIGHT); + } + + var1.popClip(); + var1.popMatrix(); + } + + private boolean isBottomCategory(rl var1) { + int var3 = 0; + int var2 = 1069689475; + + while (true) { + switch (var2) { + case -546091957: + return (boolean)((var3) != 0); + case -425116775: + if (var1 == rl.CONFIGS) { + var2 = 624781309; + } else { + var2 = 2021223944; + } + break; + case -10083833: + if (var1 != rl.APPEARANCE) { + var2 = 1160799818; + } else { + var2 = 624781309; + } + break; + case 624781309: + var3 = 1; + var2 = -546091957; + break; + case 1069689475: + default: + if (var1 != rl.THEMES) { + var2 = -10083833; + } else { + var2 = 624781309; + } + break; + case 1160799818: + if (var1 != rl.FRIENDS) { + var2 = -425116775; + } else { + var2 = 624781309; + } + break; + case 2021223944: + var3 = 0; + var2 = -546091957; + } + } + } + + public boolean handleMouseClicked(double var1, double var3) { + int var5 = 0; + int var6 = 0; + int var7 = -2043988389; + + while (true) { + switch (var7) { + case -2146838446: + var6++; + var7 = -2108544283; + break; + case -2108544283: + if (var6 < this.categories.size()) { + var7 = 1194332201; + } else { + var7 = 648658333; + } + break; + case -2063245031: + return (boolean)(((1)) != 0); + case -2043988389: + default: + if (!(this.rowWidth <= 0.0F)) { + var7 = -2026858982; + } else { + var7 = -1693729484; + } + break; + case -2026858982: + if (this.rowHeight <= 0.0F) { + var7 = -1693729484; + } else { + var7 = 2020945017; + } + break; + case -1693729484: + return (boolean)(((0)) != 0); + case -1438647403: + var7 = -2146838446; + break; + case 40352967: + this.pillFromOffsetY = this.pillOffsetY; + this.pillAnimation.jumpTo(0.0F); + this.pillAnimation.animateTo(1.0F); + if (bz.getInstance().getSoundManager() != null) { + var7 = 1432656739; + } else { + var7 = -2063245031; + } + break; + case 648658333: + return (boolean)(((0)) != 0); + case 1194332201: + if (var6 != var5) { + var7 = -1438647403; + } else { + var7 = 1959737489; + } + break; + case 1432656739: + bz.getInstance().getSoundManager().playTab(); + var7 = -2063245031; + break; + case 1959737489: + if (this.onCategorySelect.test(this.categories.get(var6).getCategory())) { + var7 = 40352967; + } else { + var7 = -2063245031; + } + break; + case 2020945017: + var5 = asb.pickRow(var1, var3, this.rowX, this.rowWidth, this.rowY, this.categories.size(), this.rowHeight, 1.05F); + var6 = 0; + var7 = -2108544283; + } + } + } +} diff --git a/src/main/java/defpackage/aan.java b/src/main/java/defpackage/aan.java new file mode 100644 index 0000000..3a9fb8c --- /dev/null +++ b/src/main/java/defpackage/aan.java @@ -0,0 +1,57 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:aan.class */ +/* synthetic */ class aan { + static final /* synthetic */ int[] $SwitchMap$evo$systems$report$ticket$TicketAuthor; + static final /* synthetic */ int[] $SwitchMap$evo$systems$report$ticket$TicketOperation$Phase; + static final /* synthetic */ int[] $SwitchMap$evo$systems$report$ticket$TicketStatus = new int[aku.values().length]; + + static { + try { + $SwitchMap$evo$systems$report$ticket$TicketStatus[aku.DELIVERED.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$report$ticket$TicketStatus[aku.IN_PROGRESS.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$report$ticket$TicketStatus[aku.CLOSED.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + $SwitchMap$evo$systems$report$ticket$TicketOperation$Phase = new int[akr.values().length]; + try { + $SwitchMap$evo$systems$report$ticket$TicketOperation$Phase[akr.SENDING.ordinal()] = 1; + } catch (NoSuchFieldError e4) { + } + try { + $SwitchMap$evo$systems$report$ticket$TicketOperation$Phase[akr.UPLOADING.ordinal()] = 2; + } catch (NoSuchFieldError e5) { + } + try { + $SwitchMap$evo$systems$report$ticket$TicketOperation$Phase[akr.DONE.ordinal()] = 3; + } catch (NoSuchFieldError e6) { + } + try { + $SwitchMap$evo$systems$report$ticket$TicketOperation$Phase[akr.FAILED.ordinal()] = 4; + } catch (NoSuchFieldError e7) { + } + try { + $SwitchMap$evo$systems$report$ticket$TicketOperation$Phase[akr.IDLE.ordinal()] = 5; + } catch (NoSuchFieldError e8) { + } + $SwitchMap$evo$systems$report$ticket$TicketAuthor = new int[akm.values().length]; + try { + $SwitchMap$evo$systems$report$ticket$TicketAuthor[akm.USER.ordinal()] = 1; + } catch (NoSuchFieldError e9) { + } + try { + $SwitchMap$evo$systems$report$ticket$TicketAuthor[akm.DEVELOPER.ordinal()] = 2; + } catch (NoSuchFieldError e10) { + } + try { + $SwitchMap$evo$systems$report$ticket$TicketAuthor[akm.SYSTEM.ordinal()] = 3; + } catch (NoSuchFieldError e11) { + } + } +} diff --git a/src/main/java/defpackage/aao.java b/src/main/java/defpackage/aao.java new file mode 100644 index 0000000..bfbaa42 --- /dev/null +++ b/src/main/java/defpackage/aao.java @@ -0,0 +1,4 @@ +package defpackage; + +record aao(akk file, String name, String size, String glyph, long addedAt) { +} diff --git a/src/main/java/defpackage/aap.java b/src/main/java/defpackage/aap.java new file mode 100644 index 0000000..5400e3c --- /dev/null +++ b/src/main/java/defpackage/aap.java @@ -0,0 +1,32 @@ +package defpackage; + +import java.util.List; + +final class aap { + final akq message; + final arp text = new arp(); + final String time; + final long appearAt; + final String[] names; + final String[] sizes; + final String[] glyphs; + + aap(akq var1, String var2, long var3) { + this.message = var1; + this.time = var2; + this.appearAt = var3; + List var5 = var1.attachments(); + this.names = new String[var5.size()]; + this.sizes = new String[var5.size()]; + this.glyphs = new String[var5.size()]; + + for (int var6 = 0; var6 < var5.size(); var6++) { + akl var7 = (akl)var5.get(var6); + this.names[var6] = var7.name(); + this.sizes[var6] = aas.sizeLabel(var7.size()); + this.glyphs[var6] = ako.isImage(var7.name()) + ? "3" + : "G"; + } + } +} diff --git a/src/main/java/defpackage/aaq.java b/src/main/java/defpackage/aaq.java new file mode 100644 index 0000000..31d7719 --- /dev/null +++ b/src/main/java/defpackage/aaq.java @@ -0,0 +1,15 @@ +package defpackage; + +final class aaq { + akw source; + long builtAt; + String number; + String title; + String status; + String time; + String preview; + String unread; + + aaq() { + } +} diff --git a/src/main/java/defpackage/aar.java b/src/main/java/defpackage/aar.java new file mode 100644 index 0000000..b6ec005 --- /dev/null +++ b/src/main/java/defpackage/aar.java @@ -0,0 +1,7 @@ +package defpackage; + +enum aar { + LIST, + COMPOSE, + DETAIL; +} diff --git a/src/main/java/defpackage/aas.java b/src/main/java/defpackage/aas.java new file mode 100644 index 0000000..2a3684a --- /dev/null +++ b/src/main/java/defpackage/aas.java @@ -0,0 +1,2618 @@ +package defpackage; + +import java.time.Instant; +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import net.minecraft.client.model.geom.builders.UVPair; + +public class aas { + private static final int REGION_STRIDE = 4; + private static final int REGION_CAPACITY = 32; + private static final int REGION_NEW = 0; + private static final int REGION_OPEN = 1; + private static final int REGION_BACK = 2; + private static final int REGION_ATTACH = 3; + private static final int REGION_REMOVE = 4; + private static final int REGION_SEND = 5; + private static final String INTRO_TITLE = "Found a bug?"; + private static final String INTRO_HINT = "Describe it, attach screenshots or a clip, and track the fix here"; + private static final String NEW_LABEL = "New report"; + private static final String SECTION_REPORTS = "MY REPORTS"; + private static final String SECTION_TITLE = "TITLE"; + private static final String SECTION_DESCRIPTION = "WHAT HAPPENED"; + private static final String SECTION_ATTACHMENTS = "SCREENSHOTS & VIDEOS"; + private static final String SECTION_CONVERSATION = "CONVERSATION"; + private static final String TITLE_PLACEHOLDER = "Short summary, e.g. Hotbar flickers in the Nether"; + private static final String BODY_PLACEHOLDER = "Steps to reproduce, what you expected and what happened instead"; + private static final String REPLY_PLACEHOLDER = "Write a reply"; + private static final String ATTACH_LABEL = "+ Add files"; + private static final String ATTACH_HINT = "PNG, JPG, MP4, logs, up to 45 MB each. Your latest.log is attached automatically."; + private static final String SEND_LABEL = "Send report"; + private static final String REPLY_LABEL = "Reply"; + private static final String BACK_LABEL = "Back"; + private static final String CLOSED_HINT = "This ticket is closed. Open a new report if the bug comes back."; + private static final String EMPTY_GLYPH = "o"; + private static final String EMPTY_TITLE = "No reports yet"; + private static final String EMPTY_HINT = "Every report becomes a ticket you can follow until it's fixed"; + private static final String DEVELOPER_NAME = "EvoVisuals"; + private static final String YOU_PREFIX = "You: "; + private static final String DEVELOPER_PREFIX = "EvoVisuals: "; + private static final String NUMBER_PREFIX = "#"; + private static final String JUST_NOW = "just now"; + private static final String MINUTES_AGO = "%dm ago"; + private static final String HOURS_AGO = "%dh ago"; + private static final String KILOBYTES = "%d KB"; + private static final String MEGABYTES = "%.1f MB"; + private static final String GLYPH_CHECK = "S"; + private static final String GLYPH_VERIFIED = "C"; + private static final String GLYPH_REMOVE = "M"; + private static final String GLYPH_IMAGE = "3"; + private static final String GLYPH_FILE = "G"; + private static final String GLYPH_CHEVRON = "A"; + private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern( + "MMM d", Locale.ENGLISH + ); + private static final DateTimeFormatter TIME_FORMAT = DateTimeFormatter.ofPattern( + "HH:mm", Locale.ENGLISH + ); + private static final DateTimeFormatter DATE_TIME_FORMAT = DateTimeFormatter.ofPattern( + "MMM d, HH:mm", Locale.ENGLISH + ); + private static final arv BUG_ICON = new arv("icons/bug.png"); + private static final asu STATUS_PROGRESS = new asu( + 240, + 178, + 70, + (225314203 ^ -225313948) + ((225314203 & -225313948) << 1) + ); + private static final asu STATUS_CLOSED = new asu( + 88, + 194, + 125, + (-732423877 ^ 732424132) + ((-732423877 & 732424132) << 1) + ); + private static final asu DANGER = new asu( + 226, + 96, + 96, + (-667130678 | 667130933) + (-667130678 & 667130933) + ); + private static final float BUG_SIZE = 14.0F; + private static final float TOP_PAD = 6.0F; + private static final float BOTTOM_PAD = 12.0F; + private static final float SECTION_GAP = 10.0F; + private static final float LABEL_GAP = 5.0F; + private static final float LABEL_INSET = 2.0F; + private static final float ROW_GAP = 4.0F; + private static final float ROW_HEIGHT = 34.0F; + private static final float INTRO_HEIGHT = 34.0F; + private static final float FIELD_HEIGHT = 24.0F; + private static final float FIELD_INSET = 9.0F; + private static final float AREA_PAD_Y = 7.0F; + private static final float LINE_GAP = 2.5F; + private static final int BODY_MIN_LINES = 4; + private static final int REPLY_MIN_LINES = 2; + private static final float BUTTON_HEIGHT = 18.0F; + private static final float BUTTON_PAD = 12.0F; + private static final float BUTTON_INSET = 8.0F; + private static final float CHIP_HEIGHT = 16.0F; + private static final float CHIP_PAD = 6.0F; + private static final float CHIP_GAP = 4.0F; + private static final float CHIP_ICON_GAP = 4.0F; + private static final float REMOVE_SIZE = 9.0F; + private static final float DOT_RADIUS = 3.0F; + private static final float DOT_INSET = 11.0F; + private static final float ROW_TEXT_INSET = 22.0F; + private static final float ROW_TEXT_TOP = 7.0F; + private static final float SUB_GAP = 3.0F; + private static final float BADGE_HEIGHT = 9.0F; + private static final float BADGE_PAD = 3.0F; + private static final float PILL_HEIGHT = 12.0F; + private static final float PILL_PAD = 6.0F; + private static final float HEADER_HEIGHT = 26.0F; + private static final float TRACKER_HEIGHT = 40.0F; + private static final float TRACKER_PAD = 14.0F; + private static final float NODE_SIZE = 10.0F; + private static final float NODE_TOP = 8.0F; + private static final float NODE_POP = 0.35F; + private static final float TRACK_THICKNESS = 2.0F; + private static final float HALO_GROW = 4.0F; + private static final float HALO_ALPHA = 0.25F; + private static final float BUBBLE_WIDTH_RATIO = 0.78F; + private static final float BUBBLE_PAD_X = 7.0F; + private static final float BUBBLE_PAD_Y = 5.0F; + private static final float BUBBLE_GAP = 6.0F; + private static final float BUBBLE_ALPHA = 0.92F; + private static final float USER_BUBBLE_ALPHA = 0.3F; + private static final float AUTHOR_GAP = 3.0F; + private static final float VERIFIED_GAP = 2.5F; + private static final float TICK_SPACING = 2.5F; + private static final float SEPARATOR_DOT = 2.0F; + private static final float SEPARATOR_GAP = 4.0F; + private static final float SEPARATOR_ADVANCE = 10.0F; + private static final float WORD_GAP = 4.0F; + private static final float PROGRESS_HEIGHT = 3.0F; + private static final float CARD_ALPHA = 0.6F; + private static final float SUB_ALPHA = 0.75F; + private static final float FAINT_ALPHA = 0.35F; + private static final float PRIMARY_IDLE_ALPHA = 0.85F; + private static final float SECONDARY_IDLE_ALPHA = 0.35F; + private static final float SECONDARY_HOVER_ALPHA = 0.6F; + private static final float DISABLED_ALPHA = 0.35F; + private static final float VIEW_SLOP = 2.0F; + private static final float CARET_WIDTH = 1.0F; + private static final float CARET_OVERHANG = 1.0F; + private static final float GLYPH_BLEED = 2.0F; + private static final float FIELD_WIDTH_FALLBACK = 120.0F; + private static final float HALF = 0.5F; + private static final float REGION_VISIBLE = 0.5F; + private static final float VIEW_SLIDE = 26.0F; + private static final float ENTER_SHIFT = 10.0F; + private static final float BUBBLE_SHIFT = 14.0F; + private static final float CHIP_ENTER_SCALE = 0.6F; + private static final float PILL_POP = 0.18F; + private static final float BADGE_BREATH = 0.35F; + private static final float DOT_RING_GROW = 7.0F; + private static final float WOBBLE_ANGLE = 0.16F; + private static final float SWEEP_FRACTION = 0.25F; + private static final double WOBBLE_PERIOD = 900.0; + private static final double PULSE_PERIOD = 420.0; + private static final long ENTER_MILLIS = 360L; + private static final long STAGGER_MILLIS = 55L; + private static final int STAGGER_CAP = 8; + private static final long CHIP_ENTER_MILLIS = 260L; + private static final long PILL_POP_MILLIS = 420L; + private static final long STATUS_FADE_MILLIS = 300L; + private static final long RING_MILLIS = 1600L; + private static final int SMALL_ICON_FONT_SIZE = 5; + private static final int TITLE_MAX_LENGTH = 80; + private static final int TITLE_MIN_LENGTH = 3; + private static final int TEXT_MAX_LENGTH = 4000; + private static final double CARET_BLINK_MILLIS = 530.0; + private static final long LABEL_REFRESH_MILLIS = 30000L; + private static final long MINUTE_MILLIS = 60000L; + private static final long HOUR_MILLIS = 3600000L; + private static final long DAY_MILLIS = 86400000L; + private static final long KILOBYTE = 1024L; + private static final long MEGABYTE = 1048576L; + private static final char NEWLINE = '\n'; + private static final char SPACE = ' '; + private float[] regionBounds = new float[128]; + private int[] regionActions = new int[32]; + private String[] regionPayloads = new String[32]; + private int regionCount; + private final Map rowLabels = new HashMap<>(); + private final Map rowHovers = new HashMap<>(); + private final Map messageAppear = new HashMap<>(); + private final ct newHover = asa.spring(); + private final ct backHover = asa.spring(); + private final ct attachHover = asa.spring(); + private final ct sendHover = asa.spring(); + private final ct sendReady = ct.layout(ob.MEDIUM, 0.0F); + private final ct viewSpring = ct.layout(ob.SETTLED, 1.0F); + private final ct trackerFill = ct.layout(ob.DELIBERATE, 0.0F); + private final ct uploadProgress = ct.layout(ob.SLOW, 0.0F); + private final ct titleFocus = ct.layout(ob.MEDIUM, 0.0F); + private final ct bodyFocus = ct.layout(ob.MEDIUM, 0.0F); + private final ct replyFocus = ct.layout(ob.MEDIUM, 0.0F); + private final List composeFiles = new ArrayList<>(); + private final List replyFiles = new ArrayList<>(); + private final arp bodyLayout = new arp(); + private final arp replyLayout = new arp(); + private final arp closedHintLayout = new arp(); + private final List threadLayout = new ArrayList<>(); + private final String[] trackerTimes = new String[aku.values().length]; + private arn titleField; + private arn bodyField; + private arn replyField; + private aar view = aar.LIST; + private int viewDirection = 1; + private long viewOpenedAt; + private boolean listWasLoaded; + private akn laidOutDetail; + private float laidOutWidth = -1.0F; + private int laidOutMessages; + private String headerNumber = ""; + private String headerTitle = ""; + private aku pillStatus; + private long pillChangedAt; + private akr lastPhase = akr.IDLE; + private long phaseChangedAt; + private boolean awaitingCompose; + private boolean awaitingReply; + private boolean scrollReset; + private boolean scrollToBottom; + private float viewTop; + private float viewBottom; + private final float[] titleBounds = new float[4]; + private final float[] bodyBounds = new float[4]; + private final float[] replyBounds = new float[4]; + + private static arq panelRadius() { + return asj.all(oc.PANEL); + } + + private static arq rowRadius() { + return asj.all(oc.CARD); + } + + private static arq buttonRadius() { + return asj.all(oc.ROW); + } + + private arn titleField() { + int var1 = -294563839; + + while (true) { + switch (var1) { + case -935271161: + return this.titleField; + case -294563839: + default: + if (this.titleField == null) { + var1 = 240531364; + } else { + var1 = -935271161; + } + break; + case 240531364: + this.titleField = new arn( + new UVPair(0.0F, 0.0F), + asp.font(oe.BODY), + "Short summary, e.g. Hotbar flickers in the Nether", + 120.0F + ); + this.titleField.setMaxLength((-1883466665 | 1883466745) + (-1883466665 & 1883466745)); + var1 = -935271161; + } + } + } + + private arn bodyField() { + int var1 = 1425796195; + + while (true) { + switch (var1) { + case 569903879: + this.bodyField = new arn( + new UVPair(0.0F, 0.0F), + asp.font(oe.CAPTION), + "Steps to reproduce, what you expected and what happened instead", + 120.0F + ); + this.bodyField.setMaxLength((-2089249392 | 2089253392) + (-2089249392 & 2089253392)); + var1 = 610626718; + break; + case 610626718: + return this.bodyField; + case 1425796195: + default: + if (this.bodyField == null) { + var1 = 569903879; + } else { + var1 = 610626718; + } + } + } + } + + private arn replyField() { + int var1 = 1635932249; + + while (true) { + switch (var1) { + case -1942771850: + return this.replyField; + case -124565724: + this.replyField = new arn( + new UVPair(0.0F, 0.0F), + asp.font(oe.CAPTION), + "Write a reply", + 120.0F + ); + this.replyField.setMaxLength((-568145855 | 568149855) + (-568145855 & 568149855)); + var1 = -1942771850; + break; + case 1635932249: + default: + if (this.replyField == null) { + var1 = -124565724; + } else { + var1 = -1942771850; + } + } + } + } + + public void onCategoryOpened() { + this.switchView(akt.openTicketId() != null ? aar.DETAIL : aar.LIST, (-469451220 | 469451221) + (-469451220 & 469451221)); + this.scrollReset = (boolean)(((1)) != 0); + this.scrollToBottom = (boolean)(((this.view == aar.DETAIL + ? 1: (-1705817547 ^ 1705817547) + ((-1705817547 & 1705817547) << 1))) != 0); + akt.refresh(); + } + + public void onClosed() { + this.unfocusAll(); + } + + public boolean consumeScrollReset() { + int var1 = -141173094; + + while (true) { + switch (var1) { + case -1213231774: + this.scrollReset = (boolean)(((0)) != 0); + return (boolean)(((1)) != 0); + case -624329275: + return (boolean)(((0)) != 0); + case -141173094: + } + + if (this.scrollReset) { + var1 = -1213231774; + } else { + var1 = -624329275; + } + } + } + + public boolean consumeScrollToBottom() { + int var1 = 369699160; + + while (true) { + switch (var1) { + case -1488899803: + return (boolean)(((0)) != 0); + case 369699160: + default: + if (this.scrollToBottom) { + var1 = 1758431262; + } else { + var1 = -1488899803; + } + break; + case 1758431262: + this.scrollToBottom = (boolean)(((0)) != 0); + return (boolean)(((1)) != 0); + } + } + } + + public float render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, mv var8, float var9, float var10) { + this.clearRegions(); + this.viewTop = var3; + this.viewBottom = var3 + var5; + invalidate(this.titleBounds); + invalidate(this.bodyBounds); + invalidate(this.replyBounds); + akt.keepFresh(); + this.trackOperation(); + this.advanceAfterOperation(); + float var11 = this.viewSpring.update(); + float var12 = var2 + (1.0F - var11) * 26.0F * this.viewDirection; + float var13 = var7 * var11; + long var14 = System.currentTimeMillis(); + float var16 = var3 - var6 + 6.0F; + + float var17 = switch (this.view) { + case LIST -> this.renderList(var1, var12, var16, var4, var5, var13, var8, var9, var10, var14); + case COMPOSE -> this.renderCompose(var1, var12, var16, var4, var13, var8, var9, var10, var14); + case DETAIL -> this.renderDetail(var1, var12, var16, var4, var13, var8, var9, var10, var14); + }; + return var17 - (var3 - var6) + 12.0F; + } + + private void switchView(aar var1, int var2) { + int var3 = 1111878814; + + while (true) { + switch (var3) { + case -1741053293: + return; + case -1255981710: + if (this.viewSpring.target() > 0.0F) { + var3 = -1741053293; + } else { + var3 = -547697071; + } + break; + case -547697071: + this.view = var1; + this.viewDirection = var2; + this.viewSpring.jumpTo(0.0F); + this.viewSpring.animateTo(1.0F); + return; + case 1111878814: + default: + this.viewOpenedAt = System.currentTimeMillis(); + if (var1 == this.view) { + var3 = -1255981710; + } else { + var3 = -547697071; + } + } + } + } + + private void trackOperation() { + akr var1 = null; + int var2 = -206481996; + + while (true) { + switch (var2) { + case -1178470247: + return; + case -723960559: + this.lastPhase = var1; + this.phaseChangedAt = System.currentTimeMillis(); + if (var1 == akr.SENDING) { + var2 = 780047421; + } else { + var2 = -1178470247; + } + break; + case -206481996: + default: + var1 = akt.operation().phase(); + if (var1 == this.lastPhase) { + var2 = 1270267224; + } else { + var2 = -723960559; + } + break; + case 780047421: + this.uploadProgress.jumpTo(0.0F); + var2 = -1178470247; + break; + case 1270267224: + return; + } + } + } + + private void advanceAfterOperation() { + aks var1 = null; + int var2 = 1693543935; + + while (true) { + switch (var2) { + case -2003302385: + this.awaitingReply = (boolean)(((0)) != 0); + if (var1.phase() == akr.DONE) { + var2 = -1471153839; + } else { + var2 = -991750198; + } + break; + case -1471153839: + this.replyField().setText(""); + this.replyField().setCursor((172498776 | -172498776) + (172498776 & -172498776)); + this.replyFiles.clear(); + this.scrollToBottom = (boolean)(((1)) != 0); + var2 = -991750198; + break; + case -1379756692: + this.switchView(aar.DETAIL, (-1255110938 | 1255110939) + (-1255110938 & 1255110939)); + this.scrollToBottom = (boolean)(((1)) != 0); + var2 = -581853492; + break; + case -1161901942: + this.awaitingCompose = (boolean)(((0)) != 0); + if (akt.openTicketId() != null) { + var2 = 1371464414; + } else { + var2 = -581853492; + } + break; + case -991750198: + return; + case -581853492: + if (this.awaitingReply) { + var2 = -2003302385; + } else { + var2 = -991750198; + } + break; + case -217450637: + return; + case 1307805533: + if (this.awaitingCompose) { + var2 = -1161901942; + } else { + var2 = -581853492; + } + break; + case 1371464414: + this.titleField().setText(""); + this.titleField().setCursor((-233417437 ^ 233417437) + ((-233417437 & 233417437) << 1)); + this.bodyField().setText(""); + this.bodyField().setCursor((-1248887643 | 1248887643) + (-1248887643 & 1248887643)); + this.composeFiles.clear(); + if (this.view == aar.COMPOSE) { + var2 = -1379756692; + } else { + var2 = -581853492; + } + break; + case 1693543935: + default: + var1 = akt.operation(); + if (var1.phase() != akr.DONE) { + var2 = 1958712930; + } else { + var2 = 1307805533; + } + break; + case 1958712930: + if (var1.phase() != akr.FAILED) { + var2 = -217450637; + } else { + var2 = 1307805533; + } + } + } + } + + private float renderList(asq var1, float var2, float var3, float var4, float var5, float var6, mv var7, float var8, float var9, long var10) { + ge var12 = asp.font(oe.BODY); + ge var13 = asp.font(oe.MICRO); + ge var14 = asp.font(oe.LABEL_STRONG); + asu var15 = var7.getWhite().mulAlpha(var6); + asu var16 = var7.getGrayLight().mulAlpha(var6); + asu var17 = var7.getColor().mulAlpha(var6); + this.drawCard(var1, var7, var2, var3, var4, 34.0F, var6, 0.0F); + float var18 = var14.width("New report") + 24.0F; + float var19 = var2 + var4 - var18 - 8.0F; + float var20 = var3 + 8.0F; + float var21 = var2 + 9.0F; + float var22 = var3 + 10.0F; + float var23 = (float)(Math.sin(var10 / 900.0) * 0.16F); + this.drawRotatedSprite(var1, BUG_ICON, var21, var22, 14.0F, var23 * (1.0F + this.newHover.value()), var17); + float var24 = var21 + 14.0F + 8.0F; + var1.drawText( + var12, "Found a bug?", var24, var3 + 7.0F, var15 + ); + var1.drawText( + var13, + "Describe it, attach screenshots or a clip, and track the fix here", + var24, + var3 + 7.0F + var12.height() + 3.0F, + var16.mulAlpha(0.75F) + ); + this.drawPrimaryButton( + var1, + var7, + this.newHover, + var19, + var20, + var18, + 18.0F, + "New report", + var17, + var15, + var6, + var8, + var9 + ); + this.addRegion(var19, var20, var18, 18.0F, 0, null); + var3 += 44.0F; + List var25 = akt.tickets(); + String var26 = akt.listError(); + if (!var26.isEmpty()) { + var1.drawText(var13, var26, var2 + 2.0F, var3, DANGER.mulAlpha(var6)); + var3 += var13.height() + 5.0F; + } + + boolean var27 = akt.loaded(); + if (var27 && !this.listWasLoaded) { + this.viewOpenedAt = var10; + } + + this.listWasLoaded = var27; + if (!var27) { + if (var26.isEmpty()) { + asg.render(var1, var2 + 2.0F, var3 + var13.height() / 2.0F, var7.getColor(), var6); + var3 += var13.height() + 5.0F; + } + + return var3; + } else { + if (var25.isEmpty()) { + float var32 = Math.max(0.0F, var5 - 34.0F - 10.0F - 12.0F); + float var29 = enter(var10, this.viewOpenedAt, (-1582536309 | 1582536309) + (-1582536309 & 1582536309)); + arw.draw( + var1, + var7, + "o", + "No reports yet", + "Every report becomes a ticket you can follow until it's fixed", + var2, + var3 + (1.0F - var29) * 10.0F, + var4, + var32, + var6 * var29 + ); + return var3 + var32; + } + + var1.drawText(var14, "MY REPORTS", var2 + 2.0F, var3, var16); + var3 += var14.height() + 5.0F; + + for (int var28 = 0; var28 < var25.size(); var28++) { + var3 = this.renderRow(var1, var2, var3, var4, var6, enter(var10, this.viewOpenedAt, var28), var7, var8, var9, (akw)var25.get(var28), var10); + } + + return var3; + } + } + + private float renderRow(asq var1, float var2, float var3, float var4, float var5, float var6, mv var7, float var8, float var9, akw var10, long var11) { + float var13 = var5 * var6; + float var14 = var3 + (1.0F - var6) * 10.0F; + aaq var15 = this.rowLabels(var10, var11); + ge var16 = asp.font(oe.BODY); + ge var17 = asp.font(oe.MICRO); + ge var18 = gl.ICONS.getFont(5.0F); + asu var19 = var7.getWhite().mulAlpha(var13); + asu var20 = var7.getGrayLight().mulAlpha(var13); + asu var21 = statusColor(var10.status(), var7).mulAlpha(var13); + int var22 = var6 > 0.5F && this.hovered(var8, var9, var2, var14, var4, 34.0F) + ? 1: 0; + float var23 = this.rowHovers.computeIfAbsent(var10.id(), var0 -> asa.cardSpring()).update(var22 != 0 ? 1.0F : 0.0F); + asa.plateRow(var1, var2, var14, var4, 34.0F, asa.plateColor(var7), var13, var23); + boolean var24 = asa.push(var1, var2, var14, var4, 34.0F, var23, asa.cardAmount(var4)); + this.drawCard(var1, var7, var2, var14, var4, 34.0F, var13, var10.unread() > 0 ? 1.0F : var23 * 0.5F); + float var25 = var2 + 11.0F; + float var26 = var14 + 17.0F; + if (var10.status() == aku.IN_PROGRESS) { + float var27 = (float)(var11 % ((-8735752139104817897L | 8735752139104819497L) + (-8735752139104817897L & 8735752139104819497L))) / 1600.0F; + float var28 = 6.0F + 7.0F * var27; + var1.drawRoundedRect(var25 - var28 / 2.0F, var26 - var28 / 2.0F, var28, var28, asj.dot(var28), var21.mulAlpha((1.0F - var27) * 0.25F * 2.0F)); + } + + var1.drawRoundedRect(var25 - 3.0F, var26 - 3.0F, 6.0F, 6.0F, asj.dot(6.0F), var21); + float var34 = var2 + 22.0F + asa.iconShift(var23); + float var35 = var2 + var4 - 9.0F - var18.width("A") + asa.iconShift(var23); + float var29 = var2 + var4 - 9.0F - var18.width("A") - 4.0F; + var1.drawText( + var18, + "A", + var35, + var14 + (34.0F - var18.height()) / 2.0F, + asa.liftText(var20, var7, var23) + ); + if (var15.unread != null) { + float var30 = Math.max(9.0F, var17.width(var15.unread) + 6.0F); + float var31 = var29 - var30; + float var32 = var14 + 12.5F; + float var33 = 3.1499999F * pulse(var11); + var1.drawRoundedRect( + var31 - var33 / 2.0F, var32 - var33 / 2.0F, var30 + var33, 9.0F + var33, asj.pill(9.0F + var33), var7.getColor().mulAlpha(var13 * 0.25F) + ); + var1.drawRoundedRect(var31, var32, var30, 9.0F, asj.pill(9.0F), var7.getColor().mulAlpha(var13)); + var1.drawText(var17, var15.unread, var31 + (var30 - var17.width(var15.unread)) / 2.0F, var14 + (34.0F - var17.height()) / 2.0F, var19); + var29 = var31 - 4.0F; + } + + var1.pushClipBounds(var34 - 2.0F, var14, Math.max(var34, var29), var14 + 34.0F); + float var36 = var14 + 7.0F; + var1.drawText(var16, var15.number, var34, var36, var21); + var1.drawText(var16, var15.title, var34 + var16.width(var15.number) + 4.0F, var36, asa.liftText(var19, var7, var23)); + float var37 = var36 + var16.height() + 3.0F; + var1.drawText(var17, var15.status, var34, var37, var21); + float var38 = this.drawSeparator(var1, var34 + var17.width(var15.status), var37, var17, var20); + var1.drawText(var17, var15.time, var38, var37, var20); + if (!var15.preview.isEmpty()) { + var38 = this.drawSeparator(var1, var38 + var17.width(var15.time), var37, var17, var20); + var1.drawText(var17, var15.preview, var38, var37, var20.mulAlpha(0.75F)); + } + + var1.popClip(); + asa.pop(var1, var24); + if (var6 > 0.5F) { + this.addRegion(var2, var14, var4, 34.0F, 1, var10.id()); + } + + return var3 + 34.0F + 4.0F; + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private aaq rowLabels(akw var1, long var2) { + aaq var4 = this.rowLabels.computeIfAbsent(var1.id(), var0 -> new aaq()); + if (var4.source == var1 && var2 - var4.builtAt < (-6474603837167483069L | 6474603837167513069L) + (-6474603837167483069L & 6474603837167513069L)) { + return var4; + } + + var4.source = var1; + var4.builtAt = var2; + var4.number = "#" + var1.number(); + var4.title = var1.title(); + var4.status = var1.status().label(); + var4.time = relative(var1.updatedAt(), var2); + + String var5 = switch (aan.$SwitchMap$evo$systems$report$ticket$TicketAuthor[var1.previewAuthor().ordinal()]) { + case 1 -> "You: "; + case 2 -> "EvoVisuals: "; + case 3 -> ""; + default -> throw new MatchException(null, null); + }; + var4.preview = var1.preview().isEmpty() + ? "" + : var5 + + var1.preview() + .replace((char)(10), (char)((804428266 ^ -804428234) + ((804428266 & -804428234) << 1))); + var4.unread = var1.unread() > 0 ? String.valueOf(var1.unread()) : null; + return var4; + } + + private float renderCompose(asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8, long var9) { + ge var11 = asp.font(oe.LABEL_STRONG); + ge var12 = asp.font(oe.MICRO); + asu var13 = var6.getWhite().mulAlpha(var5); + asu var14 = var6.getGrayLight().mulAlpha(var5); + asu var15 = var6.getColor().mulAlpha(var5); + var3 = this.renderBackBar( + var1, + var2, + var3, + var4, + var5, + var6, + var7, + var8, + "", + "New report", + null, + var9 + ); + float var16 = enter(var9, this.viewOpenedAt, (-1443035776 | 1443035776) + (-1443035776 & 1443035776)); + var3 += (1.0F - var16) * 10.0F; + var1.drawText(var11, "TITLE", var2 + 2.0F, var3, var14.mulAlpha(var16)); + var3 += var11.height() + 5.0F; + boolean var17 = this.titleField().isSelected(); + this.drawField(var1, var6, var2, var3, var4, 24.0F, var5 * var16, this.titleFocus.update(var17 ? 1.0F : 0.0F)); + this.titleField().setWidth(Math.max(0.0F, var4 - 18.0F)); + ge var18 = this.titleField().getFont(); + this.titleField().render(var1, var2 + 9.0F, var3 + (24.0F - var18.height()) / 2.0F, var13.mulAlpha(var16), var14.mulAlpha(var17 ? 0.0F : 0.75F * var16)); + setBounds(this.titleBounds, var2, var3, var4, 24.0F); + var3 += 34.0F; + var16 = enter(var9, this.viewOpenedAt, (-781678469 | 781678470) + (-781678469 & 781678470)); + var1.drawText( + var11, "WHAT HAPPENED", var2 + 2.0F, var3, var14.mulAlpha(var16) + ); + var3 += var11.height() + 5.0F; + float var19 = this.renderArea( + var1, var6, this.bodyField(), this.bodyLayout, var2, var3, var4, 4, var5 * var16, this.bodyFocus + ); + setBounds(this.bodyBounds, var2, var3, var4, var19); + var3 += var19 + 10.0F; + var16 = enter(var9, this.viewOpenedAt, (-1256134348 ^ 1256134350) + ((-1256134348 & 1256134350) << 1)); + var1.drawText( + var11, "SCREENSHOTS & VIDEOS", var2 + 2.0F, var3, var14.mulAlpha(var16) + ); + var3 += var11.height() + 5.0F; + var3 = this.renderChips(var1, var6, this.composeFiles, var2, var3, var4, var5 * var16, var7, var8, var9); + var1.drawText( + var12, + "PNG, JPG, MP4, logs, up to 45 MB each. Your latest.log is attached automatically.", + var2 + 2.0F, + var3, + var14.mulAlpha(0.75F * var16) + ); + var3 += var12.height() + 10.0F; + var16 = enter(var9, this.viewOpenedAt, (914747237 ^ -914747234) + ((914747237 & -914747234) << 1)); + return this.renderSendRow( + var1, + var6, + var2, + var3, + var4, + var5 * var16, + var7, + var8, + "Send report", + this.ready(), + var15.mulAlpha(var16), + var13.mulAlpha(var16), + var9 + ); + } + + private float renderDetail(asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8, long var9) { + akn var11 = akt.current(); + ge var12 = asp.font(oe.LABEL_STRONG); + ge var13 = asp.font(oe.MICRO); + asu var14 = var6.getWhite().mulAlpha(var5); + asu var15 = var6.getGrayLight().mulAlpha(var5); + asu var16 = var6.getColor().mulAlpha(var5); + if (var11 == null) { + var3 = this.renderBackBar(var1, var2, var3, var4, var5, var6, var7, var8, "", "", null, var9); + asg.render(var1, var2 + 2.0F, var3 + var13.height() / 2.0F, var6.getColor(), var5); + return var3 + var13.height(); + } + + this.layoutDetail(var11, var4, var9); + akw var17 = var11.summary(); + var3 = this.renderBackBar(var1, var2, var3, var4, var5, var6, var7, var8, this.headerNumber, this.headerTitle, var17.status(), var9); + float var18 = enter(var9, this.viewOpenedAt, (2062661175 ^ -2062661175) + ((2062661175 & -2062661175) << 1)); + var3 = this.renderTracker(var1, var6, var11, var2, var3 + (1.0F - var18) * 10.0F, var4, var5 * var18, var9); + var3 += 10.0F; + var1.drawText(var12, "CONVERSATION", var2 + 2.0F, var3, var15); + var3 += var12.height() + 5.0F; + + for (int var19 = 0; var19 < this.threadLayout.size(); var19++) { + var3 = this.renderMessage(var1, var6, this.threadLayout.get(var19), var2, var3, var4, var5, var9); + } + + var3 += 4.0F; + if (var17.status() != aku.CLOSED) { + float var29 = this.renderArea( + var1, + var6, + this.replyField(), + this.replyLayout, + var2, + var3, + var4, + 2, + var5, + this.replyFocus + ); + setBounds(this.replyBounds, var2, var3, var4, var29); + var3 += var29 + 5.0F; + var3 = this.renderChips(var1, var6, this.replyFiles, var2, var3, var4, var5, var7, var8, var9); + return this.renderSendRow( + var1, + var6, + var2, + var3, + var4, + var5, + var7, + var8, + "Reply", + this.ready(), + var16, + var14, + var9 + ); + } + + this.closedHintLayout + .update( + var13, + "This ticket is closed. Open a new report if the bug comes back.", + var4 - 4.0F + ); + + for (int var28 = 0; var28 < this.closedHintLayout.lineCount(); var28++) { + var1.drawText(var13, this.closedHintLayout.line(var28), var2 + 2.0F, var3, var15); + var3 += var13.height() + 2.5F; + } + + return var3; + } + + private void layoutDetail(akn var1, float var2, long var3) { + if (var1 != this.laidOutDetail || var2 != this.laidOutWidth) { + int var5 = this.laidOutDetail != null && this.laidOutDetail.summary().id().equals(var1.summary().id()) + ? 0: 1; + int var6 = var5 == 0 && var1.thread().size() <= this.laidOutMessages + ? 0: 1; + if (var5 != 0) { + this.messageAppear.clear(); + this.trackerFill.jumpTo(0.0F); + } + + this.laidOutDetail = var1; + this.laidOutWidth = var2; + this.laidOutMessages = var1.thread().size(); + this.headerNumber = "#" + var1.summary().number(); + this.headerTitle = var1.summary().title(); + this.threadLayout.clear(); + ge var7 = asp.font(oe.CAPTION); + float var8 = var2 * 0.78F - 14.0F; + int var9 = 0; + + for (akq var11 : var1.thread()) { + Long var12 = this.messageAppear.get(var11.id()); + if (var12 == null) { + var12 = var3 + + Math.min(var9, (-1335015174 ^ 1335015182) + ((-1335015174 & 1335015182) << 1)) + * ((6193718915651645831L | -6193718915651645776L) + (6193718915651645831L & -6193718915651645776L)); + this.messageAppear.put(var11.id(), var12); + var9++; + } + + aap var13 = new aap(var11, timestamp(var11.at(), var3), var12); + var13.text.update(var7, var11.text(), var8); + this.threadLayout.add(var13); + } + + aku[] var16 = aku.values(); + int var17 = var16.length; + + for (int var18 = 0; var18 < var17; var18++) { + aku var19 = var16[var18]; + long var14 = var1.reachedAt(var19); + this.trackerTimes[var19.ordinal()] = var14 > (-5138417346297116000L | 5138417346297116000L) + (-5138417346297116000L & 5138417346297116000L) + ? timestamp(var14, var3) + : ""; + } + + if (var6 != 0) { + this.scrollToBottom = (boolean)(((1)) != 0); + } + } + } + + private float renderBackBar( + asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8, String var9, String var10, aku var11, long var12 + ) { + ge var14 = asp.font(oe.LABEL_STRONG); + ge var15 = asp.font(oe.BODY); + ge var16 = asp.font(oe.MICRO); + asu var17 = var6.getWhite().mulAlpha(var5); + this.drawCard(var1, var6, var2, var3, var4, 26.0F, var5, 0.0F); + float var18 = var14.width("Back") + 12.0F; + float var19 = 18.0F; + float var20 = var2 + 4.0F; + float var21 = var3 + 4.0F; + this.drawSecondaryButton( + var1, var6, this.backHover, var20, var21, var18, var19, "Back", var5, var7, var8 + ); + this.addRegion(var20, var21, var18, var19, 2, null); + float var22 = var2 + var4 - 9.0F; + if (var11 != null) { + if (var11 != this.pillStatus) { + this.pillChangedAt = this.pillStatus == null + ? (-3454761068782192200L | 3454761068782192200L) + (-3454761068782192200L & 3454761068782192200L) + : var12; + this.pillStatus = var11; + } + + float var23 = 1.0F + 0.18F * (1.0F - ease(clamp01((float)(var12 - this.pillChangedAt) / 420.0F))); + String var24 = var11.label(); + float var25 = var16.width(var24) + 12.0F; + float var26 = var22 - var25; + float var27 = var3 + 7.0F; + float var28 = var26 + var25 / 2.0F; + float var29 = var27 + 6.0F; + asu var30 = statusColor(var11, var6); + var1.pushMatrix(); + var1.pose().translate(var28, var29); + var1.pose().scale(var23, var23); + var1.pose().translate(-var28, -var29); + var1.drawRoundedRect(var26, var27, var25, 12.0F, asj.pill(12.0F), var30.mulAlpha(var5 * 0.25F)); + var1.drawText(var16, var24, var26 + 6.0F, var27 + (12.0F - var16.height()) / 2.0F, var30.mulAlpha(var5)); + var1.popMatrix(); + var22 = var26 - 4.0F; + } + + float var31 = var20 + var18 + 8.0F; + if (var22 > var31 && (!var9.isEmpty() || !var10.isEmpty())) { + float var32 = var3 + (26.0F - var15.height()) / 2.0F; + var1.pushClipBounds(var31 - 2.0F, var3, var22, var3 + 26.0F); + float var33 = var31; + if (!var9.isEmpty()) { + var1.drawText(var15, var9, var33, var32, var6.getColor().mulAlpha(var5)); + var33 += var15.width(var9) + 4.0F; + } + + var1.drawText(var15, var10, var33, var32, var17); + var1.popClip(); + } + + return var3 + 26.0F + 10.0F; + } + + private float renderTracker(asq var1, mv var2, akn var3, float var4, float var5, float var6, float var7, long var8) { + ge var10 = asp.font(oe.MICRO); + ge var11 = gl.ICONS.getFont(5.0F); + asu var12 = var2.getGrayLight().mulAlpha(var7); + asu var13 = var2.getWhite().mulAlpha(var7); + asu var14 = var2.getGray().mulAlpha(var7 * 0.35F); + aku var15 = var3.summary().status(); + aku[] var16 = aku.values(); + float var17 = this.trackerFill.update(var15.ordinal()); + this.drawCard(var1, var2, var4, var5, var6, 40.0F, var7, 0.0F); + float var18 = var4 + 14.0F; + float var19 = var6 - 28.0F; + float var20 = var19 / (var16.length - ((127581466 ^ -127581465) + ((127581466 & -127581465) << 1))); + float var21 = var5 + 8.0F; + float var22 = var21 + 4.0F; + asu var23 = statusColor(var15, var2).mulAlpha(var7); + var1.drawRoundedRect(var18, var22, var19, 2.0F, asj.pill(2.0F), var14); + float var24 = var20 * var17; + if (var24 > 0.0F) { + var1.drawRoundedRect(var18, var22, var24, 2.0F, asj.pill(2.0F), var23); + } + + float var25 = var15 == aku.CLOSED ? 0.0F : pulse(var8); + aku[] var26 = var16; + int var27 = var26.length; + + for (int var28 = 0; var28 < var27; var28++) { + aku var29 = var26[var28]; + float var30 = var29.ordinal() == 0 ? 1.0F : clamp01(var17 - var29.ordinal() + 1.0F); + float var31 = var18 + var20 * var29.ordinal(); + float var32 = var21 + 5.0F; + float var33 = 10.0F * (1.0F + 0.35F * (float)Math.sin(Math.PI * var30)); + if (var29 == var15 && var30 >= 1.0F) { + float var34 = var33 + 4.0F * (1.0F + var25); + var1.drawRoundedRect(var31 - var34 / 2.0F, var32 - var34 / 2.0F, var34, var34, asj.dot(var34), var23.mulAlpha(0.25F * (1.0F - var25 * 0.5F))); + } + + asu var38 = var2.getForegroundColor().mulAlpha(var7).mix(var23, var30); + var1.drawRoundedRect(var31 - var33 / 2.0F, var32 - var33 / 2.0F, var33, var33, asj.dot(var33), var38); + if (var30 > 0.0F) { + var1.drawText( + var11, + "S", + var31 - var11.width("S") / 2.0F, + var32 - var11.height() / 2.0F, + var13.mulAlpha(var30) + ); + } + + if (var30 < 1.0F) { + atb.drawRoundedBorder( + var1.pose(), + var31 - var33 / 2.0F, + var32 - var33 / 2.0F, + var33, + var33, + pk.borderHairline(), + asj.dot(var33), + var12.mulAlpha(0.35F * (1.0F - var30)) + ); + } + + String var35 = var29.label(); + String var36 = var29.ordinal() <= var15.ordinal() ? this.trackerTimes[var29.ordinal()] : ""; + float var37 = var21 + 10.0F + 3.0F; + var1.drawText(var10, var35, alignX(var10, var35, var31, var29, var16.length, var4, var6), var37, var12.mulAlpha(0.75F).mix(var13, var30)); + if (!var36.isEmpty()) { + var1.drawText( + var10, var36, alignX(var10, var36, var31, var29, var16.length, var4, var6), var37 + var10.height() + 2.5F, var12.mulAlpha(0.75F * var30) + ); + } + } + + return var5 + 40.0F; + } + + private static float alignX(ge var0, String var1, float var2, aku var3, int var4, float var5, float var6) { + float var7 = 0.0F; + int var8 = 802549348; + + while (true) { + switch (var8) { + case -1750875024: + return var2 - var7 / 2.0F; + case 802549348: + default: + var7 = var0.width(var1); + if (var3.ordinal() == 0) { + var8 = 1082012651; + } else { + var8 = 1940522416; + } + break; + case 963444570: + return Math.min(var5 + var6 - 4.0F - var7, var2 + 5.0F - var7); + case 1082012651: + return Math.max(var5 + 4.0F, var2 - 5.0F); + case 1940522416: + if (var3.ordinal() == var4 - ((-237337805 ^ 237337806) + ((-237337805 & 237337806) << 1))) { + var8 = 963444570; + } else { + var8 = -1750875024; + } + } + } + } + + private float renderMessage(asq var1, mv var2, aap var3, float var4, float var5, float var6, float var7, long var8) { + akq var10 = var3.message; + float var11 = ease(clamp01((float)(var8 - var3.appearAt) / 360.0F)); + float var12 = var7 * var11; + ge var13 = asp.font(oe.CAPTION); + ge var14 = asp.font(oe.MICRO); + ge var15 = asp.font(oe.LABEL_STRONG); + ge var16 = gl.ICONS.getFont(5.0F); + asu var17 = var2.getWhite().mulAlpha(var12); + asu var18 = var2.getGrayLight().mulAlpha(var12); + asu var19 = var2.getColor().mulAlpha(var12); + if (var10.author() == akm.SYSTEM) { + float var41 = var14.width(var10.text()) + 10.0F + var14.width(var3.time); + float var42 = var4 + (var6 - var41) / 2.0F; + float var44 = var5 + (1.0F - var11) * 10.0F; + var1.drawText(var14, var10.text(), var42, var44, var18.mulAlpha(0.75F)); + var42 = this.drawSeparator(var1, var42 + var14.width(var10.text()), var44, var14, var18); + var1.drawText(var14, var3.time, var42, var44, var18.mulAlpha(0.75F)); + return var5 + var14.height() + 6.0F; + } + + int var20 = var10.author() == akm.USER + ? 1: 0; + float var21 = var13.height() + 2.5F; + int var22 = var10.text().isEmpty() ? 0: var3.text.lineCount(); + float var23 = var3.text.widest(); + + for (int var24 = 0; var24 < var3.names.length; var24++) { + var23 = Math.max(var23, var16.width(var3.glyphs[var24]) + 4.0F + var14.width(var3.names[var24]) + 10.0F + var14.width(var3.sizes[var24])); + } + + float var46 = var14.width(var3.time) + + (var20 != 0 ? var16.width("S") + 2.5F + 4.0F : 0.0F); + float var25 = var20 != 0 + ? 0.0F + : var15.width("EvoVisuals") + + 2.5F + + var16.width("C"); + var23 = Math.max(var23, Math.max(var46, var25)); + float var26 = var23 + 14.0F; + float var27 = var20 != 0 ? 0.0F : var15.height() + 3.0F; + float var28 = var22 > 0 ? var22 * var21 - 2.5F + 3.0F : 0.0F; + float var29 = var3.names.length * (var14.height() + 2.5F); + float var30 = 10.0F + var27 + var28 + var29 + var14.height(); + float var31 = (1.0F - var11) * 14.0F * (var20 != 0 ? 1.0F : -1.0F); + float var32 = (var20 != 0 ? var4 + var6 - var26 : var4) + var31; + float var33 = var5 + (1.0F - var11) * 10.0F * 0.5F; + asu var34 = var20 != 0 ? var2.getColor().mulAlpha(var12 * 0.3F) : var2.getForegroundColor().mulAlpha(var12 * 0.92F); + var1.drawRoundedRect(var32, var33, var26, var30, asj.all(oc.ROW), var34); + atb.drawRoundedBorder( + var1.pose(), + var32, + var33, + var26, + var30, + pk.borderHairline(), + asj.all(oc.ROW), + var20 != 0 ? var2.getColor().mulAlpha(var12 * 0.25F * 2.0F) : var2.getForegroundStroke().mulAlpha(var12) + ); + float var35 = var32 + 7.0F; + float var36 = var33 + 5.0F; + if (var20 == 0) { + var1.drawText(var15, "EvoVisuals", var35, var36, var19); + var1.drawText( + var16, + "C", + var35 + var15.width("EvoVisuals") + 2.5F, + var36 + (var15.height() - var16.height()) / 2.0F, + var19 + ); + var36 += var27; + } + + for (int var37 = 0; var37 < var22; var37++) { + var1.drawText(var13, var3.text.line(var37), var35, var36, var17); + var36 += var21; + } + + if (var22 > 0) { + var36 += 0.5F; + } + + for (int var47 = 0; var47 < var3.names.length; var47++) { + var1.drawText(var16, var3.glyphs[var47], var35, var36 + (var14.height() - var16.height()) / 2.0F, var19); + float var38 = var35 + var16.width(var3.glyphs[var47]) + 4.0F; + var1.drawText(var14, var3.names[var47], var38, var36, var17.mulAlpha(0.75F)); + var38 = this.drawSeparator(var1, var38 + var14.width(var3.names[var47]), var36, var14, var18); + var1.drawText(var14, var3.sizes[var47], var38, var36, var18.mulAlpha(0.75F)); + var36 += var14.height() + 2.5F; + } + + float var48 = var32 + var26 - 7.0F - var46; + var1.drawText(var14, var3.time, var48, var36, var18.mulAlpha(0.75F)); + if (var20 != 0) { + float var50 = var48 + var14.width(var3.time) + 4.0F; + float var39 = var36 + (var14.height() - var16.height()) / 2.0F; + asu var40 = var10.seen() ? var19 : var18.mulAlpha(0.75F); + var1.drawText(var16, "S", var50, var39, var40); + if (var10.seen()) { + var1.drawText(var16, "S", var50 + 2.5F, var39, var40); + } + } + + return var5 + var30 + 6.0F; + } + + private float renderArea(asq var1, mv var2, arn var3, arp var4, float var5, float var6, float var7, int var8, float var9, ct var10) { + ge var11 = var3.getFont(); + float var12 = var11.height() + 2.5F; + float var13 = Math.max(0.0F, var7 - 18.0F); + var4.update(var11, var3.getText(), var13); + int var14 = Math.max(var8, var4.lineCount()); + float var15 = 14.0F + var14 * var12 - 2.5F; + boolean var16 = var3.isSelected(); + this.drawField(var1, var2, var5, var6, var7, var15, var9, var10.update(var16 ? 1.0F : 0.0F)); + asu var17 = var2.getWhite().mulAlpha(var9); + float var18 = var5 + 9.0F; + float var19 = var6 + 7.0F; + if (var3.getText().isEmpty()) { + if (!var16) { + var1.drawText(var11, var3.getEmptyText(), var18, var19, var2.getGrayLight().mulAlpha(var9 * 0.75F)); + } + } else { + for (int var20 = 0; var20 < var4.lineCount(); var20++) { + var1.drawText(var11, var4.line(var20), var18, var19 + var20 * var12, var17); + } + } + + if (var16) { + float var24 = (float)(Math.cos(System.currentTimeMillis() / 530.0 * Math.PI) * 0.5 + 0.5); + int var21 = var3.getCursor(); + float var22 = var18 + var4.caretX(var21); + float var23 = var19 + var4.caretLine(var21) * var12; + var1.drawRect(var22, var23 - 1.0F, 1.0F, var11.height() + 2.0F, var2.getColor().mulAlpha(var9 * var24)); + } + + return var15; + } + + private float renderChips(asq var1, mv var2, List var3, float var4, float var5, float var6, float var7, float var8, float var9, long var10) { + ge var12 = asp.font(oe.MICRO); + ge var13 = gl.ICONS.getFont(5.0F); + float var14 = var4; + float var15 = var4 + var6; + + for (int var16 = 0; var16 < var3.size(); var16++) { + aao var17 = (aao)var3.get(var16); + float var18 = ease(clamp01((float)(var10 - var17.addedAt()) / 260.0F)); + float var19 = var7 * var18; + asu var20 = var2.getWhite().mulAlpha(var19); + asu var21 = var2.getGrayLight().mulAlpha(var19); + float var22 = 12.0F + var13.width(var17.glyph()) + 4.0F + var12.width(var17.name()) + 10.0F + var12.width(var17.size()) + 4.0F + 9.0F; + if (var14 + var22 > var15 && var14 > var4) { + var14 = var4; + var5 += 20.0F; + } + + float var23 = 0.6F + 0.39999998F * var18; + float var24 = var14 + var22 / 2.0F; + float var25 = var5 + 8.0F; + var1.pushMatrix(); + var1.pose().translate(var24, var25); + var1.pose().scale(var23, var23); + var1.pose().translate(-var24, -var25); + var1.drawRoundedRect(var14, var5, var22, 16.0F, asj.pill(16.0F), var2.getForegroundColor().mulAlpha(var19)); + atb.drawRoundedBorder(var1.pose(), var14, var5, var22, 16.0F, pk.borderHairline(), asj.pill(16.0F), var2.getColor().mulAlpha(var19 * 0.25F * 2.0F)); + float var26 = var14 + 6.0F; + float var27 = var5 + (16.0F - var12.height()) / 2.0F; + var1.drawText(var13, var17.glyph(), var26, var5 + (16.0F - var13.height()) / 2.0F, var2.getColor().mulAlpha(var19)); + var26 += var13.width(var17.glyph()) + 4.0F; + var1.drawText(var12, var17.name(), var26, var27, var20); + var26 = this.drawSeparator(var1, var26 + var12.width(var17.name()), var27, var12, var21); + var1.drawText(var12, var17.size(), var26, var27, var21); + float var28 = var14 + var22 - 6.0F - 9.0F + 2.0F; + float var29 = var5 + 3.5F; + boolean var30 = this.hovered(var8, var9, var28, var29, 9.0F, 9.0F); + var1.drawText( + var13, + "M", + var28 + (9.0F - var13.width("M")) / 2.0F, + var29 + (9.0F - var13.height()) / 2.0F, + var30 ? DANGER.mulAlpha(var19) : var21 + ); + var1.popMatrix(); + this.addRegion(var28, var29, 9.0F, 9.0F, 4, String.valueOf(var16)); + var14 += var22 + 4.0F; + } + + if (var3.size() < (-1329085826 ^ 1329085834) + ((-1329085826 & 1329085834) << 1)) { + ge var31 = asp.font(oe.LABEL_STRONG); + float var32 = var31.width("+ Add files") + 12.0F; + if (var14 + var32 > var15 && var14 > var4) { + var14 = var4; + var5 += 20.0F; + } + + this.drawSecondaryButton( + var1, + var2, + this.attachHover, + var14, + var5, + var32, + 16.0F, + "+ Add files", + var7, + var8, + var9 + ); + this.addRegion(var14, var5, var32, 16.0F, 3, null); + } + + return var5 + 16.0F + 5.0F; + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private float renderSendRow( + asq var1, mv var2, float var3, float var4, float var5, float var6, float var7, float var8, String var9, boolean var10, asu var11, asu var12, long var13 + ) { + ge var15 = asp.font(oe.LABEL_STRONG); + ge var16 = asp.font(oe.MICRO); + aks var17 = akt.operation(); + int var18 = var10 && !var17.busy() ? 1: 0; + float var19 = 0.35F + 0.65F * this.sendReady.update(var18 != 0 ? 1.0F : 0.0F); + float var20 = var15.width(var9) + 24.0F; + float var21 = var3 + var5 - var20; + this.drawPrimaryButton(var1, var2, this.sendHover, var21, var4, var20, 18.0F, var9, var11.mulAlpha(var19), var12.mulAlpha(var19), var6, var7, var8); + if (var18 != 0) { + this.addRegion(var21, var4, var20, 18.0F, 5, null); + } + + float var22 = var21 - 8.0F; + float var23 = var4 + (18.0F - var16.height()) / 2.0F; + float var24 = ease(clamp01((float)(var13 - this.phaseChangedAt) / 300.0F)); + float var25 = var3 + 2.0F + (1.0F - var24) * 10.0F * 0.5F; + float var26 = var6 * var24; + switch (aan.$SwitchMap$evo$systems$report$ticket$TicketOperation$Phase[var17.phase().ordinal()]) { + case 1: + case 2: + var1.drawText(var16, var17.message(), var25, var23 - 3.0F, var2.getGrayLight().mulAlpha(var26)); + float var27 = var3 + 2.0F; + float var28 = var23 + var16.height(); + float var29 = Math.max(0.0F, var22 - var27); + var1.drawRoundedRect(var27, var28, var29, 3.0F, asj.pill(3.0F), var2.getGray().mulAlpha(var26 * 0.35F)); + if (var17.phase() == akr.UPLOADING) { + float var30 = this.uploadProgress.update(var17.progress()); + var1.drawRoundedRect(var27, var28, var29 * var30, 3.0F, asj.pill(3.0F), var11.mulAlpha(var24)); + } else { + float var35 = (float)(var13 % ((8357390994813851233L ^ -8357390994813849633L) + ((8357390994813851233L & -8357390994813849633L) << 1))) + / 1600.0F; + float var31 = var29 * 0.25F; + float var32 = (var29 + var31) * var35 - var31; + float var33 = Math.max(0.0F, var32); + float var34 = Math.min(var29, var32 + var31); + if (var34 > var33) { + var1.drawRoundedRect(var27 + var33, var28, var34 - var33, 3.0F, asj.pill(3.0F), var11.mulAlpha(var24)); + } + } + break; + case 3: + var1.drawText(var16, var17.message(), var25, var23, STATUS_CLOSED.mulAlpha(var26)); + break; + case 4: + var1.drawText(var16, var17.message(), var25, var23, DANGER.mulAlpha(var26)); + case 5: + } + + return var4 + 18.0F; + } + + private boolean ready() { + int var2 = 0; + int var1 = -782411181; + + while (true) { + switch (var1) { + case -2139860514: + if (!this.bodyField().getText().isBlank()) { + var1 = -1096726622; + } else { + var1 = -1351671335; + } + break; + case -2069041536: + if (!this.replyField().getText().isBlank()) { + var1 = -646973576; + } else { + var1 = -577923555; + } + break; + case -1780388002: + if (this.view == aar.DETAIL) { + var1 = -2069041536; + } else { + var1 = -577923555; + } + break; + case -1539829583: + if (this.titleField().getText().trim().length() >= (-1451918497 ^ 1451918500) + ((-1451918497 & 1451918500) << 1)) { + var1 = -2139860514; + } else { + var1 = -1351671335; + } + break; + case -1351671335: + var2 = 0; + var1 = 1909679074; + break; + case -1096726622: + var2 = 1; + var1 = 1909679074; + break; + case -782411181: + default: + if (this.view == aar.COMPOSE) { + var1 = -1539829583; + } else { + var1 = -1780388002; + } + break; + case -646973576: + var2 = 1; + var1 = 1909679074; + break; + case -577923555: + var2 = 0; + var1 = 1909679074; + break; + case 1909679074: + return (boolean)((var2) != 0); + } + } + } + + private float drawSeparator(asq var1, float var2, float var3, ge var4, asu var5) { + float var6 = var3 + (var4.height() - 2.0F) / 2.0F; + var1.drawRoundedRect(var2 + 4.0F, var6, 2.0F, 2.0F, asj.dot(2.0F), var5.mulAlpha(0.75F)); + return var2 + 10.0F; + } + + private void drawRotatedSprite(asq var1, arv var2, float var3, float var4, float var5, float var6, asu var7) { + float var8 = var3 + var5 / 2.0F; + float var9 = var4 + var5 / 2.0F; + var1.pushMatrix(); + var1.pose().translate(var8, var9); + var1.pose().rotate(var6); + var1.pose().translate(-var8, -var9); + var1.drawSprite(var2, var3, var4, var5, var5, var7); + var1.popMatrix(); + } + + private void drawCard(asq var1, mv var2, float var3, float var4, float var5, float var6, float var7, float var8) { + var1.drawSurface(aso.CARD, var3, var4, var5, var6, rowRadius(), var2.getForegroundColor().mulAlpha(0.6F * var7)); + atb.drawRoundedBorder( + var1.pose(), + var3, + var4, + var5, + var6, + pk.borderHairline(), + rowRadius(), + var2.getForegroundStroke().mulAlpha(var7).mix(var2.getColor().mulAlpha(var7), var8) + ); + } + + private void drawField(asq var1, mv var2, float var3, float var4, float var5, float var6, float var7, float var8) { + float var9 = 0.0F; + int var10 = -1676542301; + + while (true) { + switch (var10) { + case -1918503514: + var9 = 4.0F * var8; + atb.drawRoundedBorder( + var1.pose(), + var3 - var9 / 2.0F, + var4 - var9 / 2.0F, + var5 + var9, + var6 + var9, + pk.borderHairline(), + panelRadius(), + var2.getColor().mulAlpha(var7 * 0.25F * var8) + ); + var10 = 1501946621; + break; + case -1676542301: + default: + var1.drawSurface(aso.CARD, var3, var4, var5, var6, panelRadius(), var2.getForegroundColor().mulAlpha(0.6F * var7)); + if (var8 > 0.0F) { + var10 = -1918503514; + } else { + var10 = 1501946621; + } + break; + case 1501946621: + atb.drawRoundedBorder( + var1.pose(), + var3, + var4, + var5, + var6, + pk.borderHairline(), + panelRadius(), + var2.getForegroundStroke().mulAlpha(var7).mix(var2.getColor().mulAlpha(var7), var8) + ); + return; + } + } + } + + private void drawPrimaryButton( + asq var1, mv var2, ct var3, float var4, float var5, float var6, float var7, String var8, asu var9, asu var10, float var11, float var12, float var13 + ) { + float var14 = var3.update(this.hovered(var12, var13, var4, var5, var6, var7) ? 1.0F : 0.0F); + asa.plateControl(var1, var4, var5, var6, var7, asa.plateColor(var2), var11, var14); + boolean var15 = asa.push(var1, var4, var5, var6, var7, var14, 0.05F); + if (var14 > 0.0F) { + float var16 = 4.0F * var14; + var1.drawRoundedRect(var4 - var16 / 2.0F, var5 - var16 / 2.0F, var6 + var16, var7 + var16, buttonRadius(), var9.mulAlpha(0.25F * var14)); + } + + var1.drawRoundedRect(var4, var5, var6, var7, buttonRadius(), var9.mulAlpha(0.85F + 0.14999998F * var14)); + ge var17 = asp.font(oe.LABEL_STRONG); + var1.drawText(var17, var8, var4 + (var6 - var17.width(var8)) / 2.0F, var5 + (var7 - var17.height()) / 2.0F, var10); + asa.pop(var1, var15); + } + + private void drawSecondaryButton( + asq var1, mv var2, ct var3, float var4, float var5, float var6, float var7, String var8, float var9, float var10, float var11 + ) { + float var12 = var3.update(this.hovered(var10, var11, var4, var5, var6, var7) ? 1.0F : 0.0F); + asa.plateControl(var1, var4, var5, var6, var7, asa.plateColor(var2), var9, var12); + boolean var13 = asa.push(var1, var4, var5, var6, var7, var12, 0.05F); + var1.drawSurface( + aso.CONTROL, var4, var5, var6, var7, buttonRadius(), var2.getGray().mix(var2.getColor(), var12).mulAlpha(var9 * (0.35F + 0.25000003F * var12)) + ); + ge var14 = asp.font(oe.LABEL_STRONG); + var1.drawText(var14, var8, var4 + (var6 - var14.width(var8)) / 2.0F, var5 + (var7 - var14.height()) / 2.0F, var2.getWhite().mulAlpha(var9)); + asa.pop(var1, var13); + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static asu statusColor(aku var0, mv var1) { + return switch (aan.$SwitchMap$evo$systems$report$ticket$TicketStatus[var0.ordinal()]) { + case 1 -> var1.getColor(); + case 2 -> STATUS_PROGRESS; + case 3 -> STATUS_CLOSED; + default -> throw new MatchException(null, null); + }; + } + + private static float enter(long var0, long var2, int var4) { + long var5 = Math.min(var4, (1535304977 ^ -1535304969) + ((1535304977 & -1535304969) << 1)) + * ((8795567160118846241L ^ -8795567160118846186L) + ((8795567160118846241L & -8795567160118846186L) << 1)); + return ease(clamp01((float)(var0 - var2 - var5) / 360.0F)); + } + + private static float pulse(long var0) { + return (float)(Math.sin(var0 / 420.0) * 0.5 + 0.5); + } + + private static float ease(float var0) { + float var1 = 1.0F - var0; + return 1.0F - var1 * var1 * var1; + } + + private static float clamp01(float var0) { + return Math.max(0.0F, Math.min(1.0F, var0)); + } + + private static String relative(long var0, long var2) { + long var4 = (6694017020117740981L | -6694017020117740981L) + (6694017020117740981L & -6694017020117740981L); + int var6 = -1712600188; + + while (true) { + switch (var6) { + case -1712600188: + default: + var4 = Math.max((-8918754022080186996L | 8918754022080186996L) + (-8918754022080186996L & 8918754022080186996L), var2 - var0); + if (var4 < (5829731607902276146L ^ -5829731607902216146L) + ((5829731607902276146L & -5829731607902216146L) << 1)) { + var6 = -1398711872; + } else { + var6 = 1023236975; + } + break; + case -1398711872: + return "just now"; + case -234370055: + return DATE_FORMAT.format(Instant.ofEpochMilli(var0).atZone(ZoneId.systemDefault())); + case 812202828: + String var7 = "%dm ago"; + Object[] var8 = new Object[1]; + var8[0] = var4 + / ((-1966862260690767430L | 1966862260690827430L) + (-1966862260690767430L & 1966862260690827430L)); + return var7.formatted(var8); + case 996928264: + String var10000 = "%dh ago"; + Object[] var10001 = new Object[1]; + var10001[0] = var4 + / ((7832776447908756641L ^ -7832776447905156641L) + ((7832776447908756641L & -7832776447905156641L) << 1)); + return var10000.formatted(var10001); + case 1023236975: + if (var4 < (8396686287532002640L ^ -8396686287528402640L) + ((8396686287532002640L & -8396686287528402640L) << 1)) { + var6 = 812202828; + } else { + var6 = 1388492758; + } + break; + case 1388492758: + if (var4 < (-3200845104672597855L | 3200845104758997855L) + (-3200845104672597855L & 3200845104758997855L)) { + var6 = 996928264; + } else { + var6 = -234370055; + } + } + } + } + + private static String timestamp(long var0, long var2) { + ZoneId var4 = null; + LocalDate var5 = null; + Object var6 = null; + DateTimeFormatter var8 = null; + int var7 = 1548633743; + + while (true) { + switch (var7) { + case -538184258: + return var8.format(Instant.ofEpochMilli(var0).atZone(var4)); + case 559068971: + var8 = TIME_FORMAT; + var7 = -538184258; + break; + case 1548633743: + default: + var4 = ZoneId.systemDefault(); + var5 = Instant.ofEpochMilli(var0).atZone(var4).toLocalDate(); + var6 = Instant.ofEpochMilli(var2).atZone(var4).toLocalDate(); + if (var5.equals(var6)) { + var7 = 559068971; + } else { + var7 = 1654803454; + } + break; + case 1654803454: + var8 = DATE_TIME_FORMAT; + var7 = -538184258; + } + } + } + + static String sizeLabel(long var0) { + int var2 = -1566763550; + + while (true) { + switch (var2) { + case -1566763550: + default: + if (var0 < (-1445077140465577569L ^ 1445077140466626145L) + ((-1445077140465577569L & 1445077140466626145L) << 1)) { + var2 = -545296037; + } else { + var2 = -919080146; + } + break; + case -919080146: + Locale var3 = Locale.ROOT; + String var4 = "%.1f MB"; + Object[] var10002 = new Object[1]; + var10002[0] = var0 / 1048576.0; + return String.format(var3, var4, var10002); + case -545296037: + String var10000 = "%d KB"; + Object[] var10001 = new Object[1]; + var10001[0] = Math.max( + (-1293707053609106362L | 1293707053609106363L) + (-1293707053609106362L & 1293707053609106363L), + var0 / ((1388329479073408115L | -1388329479073407091L) + (1388329479073408115L & -1388329479073407091L)) + ); + return var10000.formatted(var10001); + } + } + } + + private static aao chip(akk var0) { + return new aao( + var0, + var0.name(), + sizeLabel(var0.size()), + ako.isImage(var0.name()) + ? "3" + : "G", + System.currentTimeMillis() + ); + } + + private boolean hovered(float var1, float var2, float var3, float var4, float var5, float var6) { + int var8 = 0; + int var7 = -1854023792; + + while (true) { + switch (var7) { + case -2106579553: + if (aqj.isHovered(var1, var2, var3, var4, var5, var6)) { + var7 = -1343636817; + } else { + var7 = 1176706300; + } + break; + case -1854023792: + default: + if (var2 >= this.viewTop) { + var7 = -1358294579; + } else { + var7 = 1176706300; + } + break; + case -1358294579: + if (var2 <= this.viewBottom) { + var7 = -2106579553; + } else { + var7 = 1176706300; + } + break; + case -1343636817: + var8 = 1; + var7 = 1038234927; + break; + case 1038234927: + return (boolean)((var8) != 0); + case 1176706300: + var8 = 0; + var7 = 1038234927; + } + } + } + + private void addRegion(float var1, float var2, float var3, float var4, int var5, String var6) { + int var7 = 0; + int var8 = -1628583534; + + while (true) { + switch (var8) { + case -1628583534: + default: + if (this.regionCount == this.regionActions.length) { + var8 = 706651927; + } else { + var8 = -1497638121; + } + break; + case -1497638121: + var7 = this.regionCount * (4); + this.regionBounds[var7] = var1; + this.regionBounds[var7 + 1] = var2; + this.regionBounds[var7 + 2] = var3; + this.regionBounds[var7 + 3] = var4; + this.regionActions[this.regionCount] = var5; + this.regionPayloads[this.regionCount] = var6; + this.regionCount += 1; + return; + case 706651927: + var7 = this.regionActions.length * (2); + this.regionBounds = Arrays.copyOf(this.regionBounds, var7 * ((472624879 | -472624875) + (472624879 & -472624875))); + this.regionActions = Arrays.copyOf(this.regionActions, var7); + this.regionPayloads = Arrays.copyOf(this.regionPayloads, var7); + var8 = -1497638121; + } + } + } + + private void clearRegions() { + Arrays.fill(this.regionPayloads, 0, this.regionCount, null); + this.regionCount = 0; + } + + private static void setBounds(float[] var0, float var1, float var2, float var3, float var4) { + var0[0] = var1; + var0[1] = var2; + var0[2] = var3; + var0[3] = var4; + } + + private static void invalidate(float[] var0) { + var0[2] = 0.0F; + } + + private static boolean inside(float[] var0, double var1, double var3) { + int var6 = 0; + int var5 = -941235697; + + while (true) { + switch (var5) { + case -941235697: + default: + if (var0[2] > 0.0F) { + var5 = 1035731167; + } else { + var5 = 277073025; + } + break; + case 277073025: + var6 = 0; + var5 = 1896860548; + break; + case 1035731167: + if (aqj.isHovered( + var1, + var3, + var0[0], + var0[1], + var0[2], + var0[3] + )) { + var5 = 1682670107; + } else { + var5 = 277073025; + } + break; + case 1682670107: + var6 = 1; + var5 = 1896860548; + break; + case 1896860548: + return (boolean)((var6) != 0); + } + } + } + + private void runRegion(int var1, String var2) { + switch (var1) { + case 0: + this.openCompose(); + break; + case 1: + this.openTicket(var2); + break; + case 2: + this.back(); + break; + case 3: + this.attach(); + break; + case 4: + this.removeChip(var2); + break; + case 5: + this.send(); + } + } + + private void openCompose() { + akt.acknowledgeOperation(); + this.switchView(aar.COMPOSE, (-1864432979 ^ 1864432980) + ((-1864432979 & 1864432980) << 1)); + this.scrollReset = (boolean)(((1)) != 0); + this.unfocusAll(); + this.titleField().setSelected((boolean)((((-899926851 ^ 899926852) + ((-899926851 & 899926852) << 1))) != 0)); + } + + private void openTicket(String var1) { + akt.acknowledgeOperation(); + akt.open(var1); + this.laidOutDetail = null; + this.pillStatus = null; + this.switchView(aar.DETAIL, (-1903362666 | 1903362667) + (-1903362666 & 1903362667)); + this.scrollToBottom = (boolean)(((1)) != 0); + this.unfocusAll(); + } + + private void back() { + int var1 = -1503389216; + + while (true) { + switch (var1) { + case -1732651493: + this.switchView(aar.LIST, (-670571469 | 670571468) + (-670571469 & 670571468)); + this.scrollReset = (boolean)(((1)) != 0); + akt.refresh(); + return; + case -1503389216: + default: + this.unfocusAll(); + akt.acknowledgeOperation(); + if (this.view == aar.DETAIL) { + var1 = -897723494; + } else { + var1 = -1732651493; + } + break; + case -897723494: + akt.closeDetail(); + this.laidOutDetail = null; + this.replyFiles.clear(); + var1 = -1732651493; + } + } + } + + private void attach() { + List var1 = null; + List var3 = null; + int var2 = -1277580338; + + while (true) { + switch (var2) { + case -1525636687: + var3 = this.composeFiles; + var2 = -546943479; + break; + case -1277580338: + default: + if (this.view == aar.COMPOSE) { + var2 = -1525636687; + } else { + var2 = 1204447613; + } + break; + case -546943479: + var1 = var3; + akt.pickAttachments(var1x -> { + Iterator var2x = null; + akk var3x = null; + int var4x = 0; + Iterator var5 = null; + aao var6 = null; + int var7 = 2038874225; + + while (true) { + switch (var7) { + case -2074190210: + return; + case -1779189588: + var7 = 966221831; + break; + case -1579248379: + var4x = 1; + var7 = -98092201; + break; + case -1120358455: + return; + case -665616634: + var1.add(chip(var3x)); + var7 = -1779189588; + break; + case -492280397: + if (var5.hasNext()) { + var7 = 170325971; + } else { + var7 = -98092201; + } + break; + case -98092201: + if (var4x == 0) { + var7 = -665616634; + } else { + var7 = -1779189588; + } + break; + case 4014117: + var4x = 0; + var5 = var1.iterator(); + var7 = -492280397; + break; + case 170325971: + var6 = (aao)var5.next(); + if (var6.file().path().equals(var3x.path())) { + var7 = -1579248379; + } else { + var7 = 1701302347; + } + break; + case 966221831: + if (var2x.hasNext()) { + var7 = 1775598624; + } else { + var7 = -1120358455; + } + break; + case 1701302347: + var7 = -492280397; + break; + case 1775598624: + var3x = (akk)var2x.next(); + if (var1.size() >= (-2136531848 | 2136531856) + (-2136531848 & 2136531856)) { + var7 = -2074190210; + } else { + var7 = 4014117; + } + break; + case 2038874225: + default: + var2x = var1x.iterator(); + var7 = 966221831; + } + } + }); + return; + case 1204447613: + var3 = this.replyFiles; + var2 = -546943479; + } + } + } + + private void removeChip(String var1) { + List var2 = null; + int var3 = 0; + List var5 = null; + int var4 = 68656782; + + while (true) { + switch (var4) { + case -2128772944: + var5 = this.replyFiles; + var4 = 595970902; + break; + case -1886948822: + if (var3 < var2.size()) { + var4 = -1827687871; + } else { + var4 = -1368768913; + } + break; + case -1827687871: + var2.remove(var3); + var4 = -1368768913; + break; + case -1368768913: + return; + case 68656782: + default: + if (this.view == aar.COMPOSE) { + var4 = 1759771694; + } else { + var4 = -2128772944; + } + break; + case 595970902: + var2 = var5; + var3 = Integer.parseInt(var1); + if (var3 >= 0) { + var4 = -1886948822; + } else { + var4 = -1368768913; + } + break; + case 1759771694: + var5 = this.composeFiles; + var4 = 595970902; + } + } + } + + private void send() { + int var1 = 1277507448; + + while (true) { + switch (var1) { + case -2104822634: + if (akt.reply(this.replyField().getText(), files(this.replyFiles))) { + var1 = -1898280771; + } else { + var1 = 1926778149; + } + break; + case -1898280771: + this.awaitingReply = (boolean)(((1)) != 0); + var1 = 1926778149; + break; + case -1891866829: + return; + case -976880666: + this.awaitingCompose = (boolean)(((1)) != 0); + this.unfocusAll(); + var1 = -1891866829; + break; + case -474103591: + if (akt.create(this.titleField().getText(), this.bodyField().getText(), files(this.composeFiles))) { + var1 = -976880666; + } else { + var1 = -1891866829; + } + break; + case -202252106: + if (this.view == aar.DETAIL) { + var1 = -2104822634; + } else { + var1 = 1926778149; + } + break; + case 1277507448: + default: + if (this.view == aar.COMPOSE) { + var1 = -474103591; + } else { + var1 = -202252106; + } + break; + case 1926778149: + return; + } + } + } + + private static List files(List var0) { + ArrayList var1 = null; + Iterator var2 = null; + aao var3 = null; + int var4 = -1771855691; + + while (true) { + switch (var4) { + case -1898003129: + if (var2.hasNext()) { + var4 = 445662838; + } else { + var4 = 1445746700; + } + break; + case -1771855691: + default: + var1 = new ArrayList(var0.size()); + var2 = var0.iterator(); + var4 = -1898003129; + break; + case 445662838: + var3 = (aao)var2.next(); + var1.add(var3.file()); + var4 = -1898003129; + break; + case 1445746700: + return var1; + } + } + } + + private void unfocusAll() { + this.titleField().setSelected((boolean)((((218541518 | -218541518) + (218541518 & -218541518))) != 0)); + this.bodyField().setSelected((boolean)((((-1545629138 ^ 1545629138) + ((-1545629138 & 1545629138) << 1))) != 0)); + this.replyField().setSelected((boolean)((((1045290405 ^ -1045290405) + ((1045290405 & -1045290405) << 1))) != 0)); + } + + private arn focusedField() { + arn var2 = null; + int var1 = -2131999719; + + while (true) { + switch (var1) { + case -2141100875: + return var2; + case -2131999719: + default: + if (this.titleField().isSelected()) { + var1 = 1011361412; + } else { + var1 = -680489940; + } + break; + case -833478576: + if (this.replyField().isSelected()) { + var1 = 1017023881; + } else { + var1 = -42095869; + } + break; + case -680489940: + if (this.bodyField().isSelected()) { + var1 = 2089487706; + } else { + var1 = -833478576; + } + break; + case -42095869: + var2 = null; + var1 = -2141100875; + break; + case 1011361412: + return this.titleField(); + case 1017023881: + var2 = this.replyField(); + var1 = -2141100875; + break; + case 2089487706: + return this.bodyField(); + } + } + } + + public boolean handleMouseClicked(double var1, double var3, apf var5) { + int var6 = 0; + int var7 = 0; + int var8 = 0; + arn var9 = null; + int var11 = 0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + int var10 = 442336698; + + while (true) { + switch (var10) { + case -2132431984: + return (boolean)((var11) != 0); + case -2125614091: + if (this.focusedField() != null) { + var10 = -689604663; + } else { + var10 = -1757388185; + } + break; + case -1757388185: + var11 = 0; + var10 = -2132431984; + break; + case -1715654797: + var13 = 1; + var10 = -141671227; + break; + case -1689677061: + return (boolean)(((0)) != 0); + case -1606157477: + if (var3 > this.viewBottom + 2.0F) { + var10 = -2125614091; + } else { + var10 = -473859959; + } + break; + case -1494632940: + if (inside(this.replyBounds, var1, var3)) { + var10 = 1776798609; + } else { + var10 = -1137150974; + } + break; + case -1189628534: + this.runRegion(this.regionActions[var6], this.regionPayloads[var6]); + if (bz.getInstance().getSoundManager() != null) { + var10 = 1173153543; + } else { + var10 = 997930492; + } + break; + case -1137150974: + var14 = 0; + var10 = -314305915; + break; + case -689604663: + var11 = 1; + var10 = -2132431984; + break; + case -473859959: + var6 = 0; + var10 = 1420774695; + break; + case -415350350: + var7 = var6 * (4); + if (!aqj.isHovered( + var1, + var3, + this.regionBounds[var7], + this.regionBounds[var7 + 1], + this.regionBounds[var7 + 2], + this.regionBounds[var7 + 3] + )) { + var10 = 1134842224; + } else { + var10 = -1189628534; + } + break; + case -314305915: + var8 = var14; + this.titleField().setSelected((boolean)((var6) != 0)); + this.bodyField().setSelected((boolean)((var7) != 0)); + this.replyField().setSelected((boolean)((var8) != 0)); + var9 = this.focusedField(); + if (var9 == null) { + var10 = -1689677061; + } else { + var10 = -37260103; + } + break; + case -141671227: + var7 = var13; + if (this.view == aar.DETAIL) { + var10 = -1494632940; + } else { + var10 = -1137150974; + } + break; + case -37260103: + var9.setSelectAll((boolean)((((-1646921565 ^ 1646921565) + ((-1646921565 & 1646921565) << 1))) != 0)); + var9.setCursor(var9.getText().length()); + akt.acknowledgeOperation(); + return (boolean)(((1)) != 0); + case 183055819: + var13 = 0; + var10 = -141671227; + break; + case 442336698: + default: + if (var5.getButtonIndex() != apf.LEFT.getButtonIndex()) { + var10 = 1351877645; + } else { + var10 = 1236968629; + } + break; + case 660193558: + if (inside(this.bodyBounds, var1, var3)) { + var10 = -1715654797; + } else { + var10 = 183055819; + } + break; + case 997930492: + return (boolean)(((1)) != 0); + case 1134842224: + var10 = 1604961644; + break; + case 1173153543: + bz.getInstance().getSoundManager().playClick(); + var10 = 997930492; + break; + case 1236968629: + if (!(var3 < this.viewTop - 2.0F)) { + var10 = -1606157477; + } else { + var10 = -2125614091; + } + break; + case 1342185983: + var12 = 0; + var10 = 1547285400; + break; + case 1351877645: + return (boolean)(((0)) != 0); + case 1420774695: + if (var6 < this.regionCount) { + var10 = -415350350; + } else { + var10 = 2122302239; + } + break; + case 1439921636: + var12 = 1; + var10 = 1547285400; + break; + case 1547285400: + var6 = var12; + if (this.view == aar.COMPOSE) { + var10 = 660193558; + } else { + var10 = 183055819; + } + break; + case 1604961644: + var6++; + var10 = 1420774695; + break; + case 1776798609: + var14 = 1; + var10 = -314305915; + break; + case 1938425560: + if (inside(this.titleBounds, var1, var3)) { + var10 = 1439921636; + } else { + var10 = 1342185983; + } + break; + case 2122302239: + if (this.view == aar.COMPOSE) { + var10 = 1938425560; + } else { + var10 = 1342185983; + } + } + } + } + + public boolean keyPressed(int var1, int var2, int var3) { + arn var4 = null; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + int var8 = -898288815; + + while (true) { + switch (var8) { + case -2088985943: + var11 = 1; + var8 = -130246604; + break; + case -1972864997: + if (var5 == 0) { + var8 = 603861513; + } else { + var8 = 589392889; + } + break; + case -1806042975: + if (var1 != (239409037 | -239408780) + (239409037 & -239408780)) { + var8 = -863473675; + } else { + var8 = -1016770344; + } + break; + case -1739878296: + if (var6 == 0) { + var8 = -871511215; + } else { + var8 = 1297844162; + } + break; + case -1592349445: + var10 = 1; + var8 = -726558576; + break; + case -1548939932: + if (this.view != aar.LIST) { + var8 = 2117779662; + } else { + var8 = -276277387; + } + break; + case -1534525653: + return var4.keyPressed(var1, var2, var3); + case -1016770344: + var9 = 1; + var8 = 1791675906; + break; + case -949727145: + var11 = 0; + var8 = -130246604; + break; + case -898288815: + default: + var4 = this.focusedField(); + if (var4 == null) { + var8 = 76473390; + } else { + var8 = -1806042975; + } + break; + case -871511215: + this.send(); + return (boolean)(((1)) != 0); + case -863473675: + if (var1 == (-192524853 | 192525188) + (-192524853 & 192525188)) { + var8 = -1016770344; + } else { + var8 = 1466268169; + } + break; + case -726558576: + var6 = var10; + if ((var3 & (884427377 | -884427367) + (884427377 & -884427367)) != 0) { + var8 = -2088985943; + } else { + var8 = -949727145; + } + break; + case -276277387: + return (boolean)(((0)) != 0); + case -130246604: + var7 = var11; + if (var1 == (-185194855 ^ 185195111) + ((-185194855 & 185195111) << 1)) { + var8 = 1860067427; + } else { + var8 = 503889282; + } + break; + case 76473390: + if (var1 == (306544435 ^ -306544179) + ((306544435 & -306544179) << 1)) { + var8 = -1548939932; + } else { + var8 = -276277387; + } + break; + case 164708542: + var4.charTyped((char)(10), var3); + return (boolean)(((1)) != 0); + case 503889282: + if (var4 == this.titleField()) { + var8 = -1972864997; + } else { + var8 = 2064051200; + } + break; + case 589392889: + this.titleField().setSelected((boolean)((((-1133063403 | 1133063403) + (-1133063403 & 1133063403))) != 0)); + this.bodyField().setSelected((boolean)((((-1650116043 | 1650116044) + (-1650116043 & 1650116044))) != 0)); + this.bodyField().setCursor(this.bodyField().getText().length()); + return (boolean)(((1)) != 0); + case 603861513: + if (var1 == (867091540 | -867091282) + (867091540 & -867091282)) { + var8 = 589392889; + } else { + var8 = 2064051200; + } + break; + case 618955701: + var10 = 0; + var8 = -726558576; + break; + case 1297844162: + if (var5 != 0) { + var8 = 164708542; + } else { + var8 = -1534525653; + } + break; + case 1466268169: + var9 = 0; + var8 = 1791675906; + break; + case 1791675906: + var5 = var9; + if ((var3 & (-1173711152 | 1173711153) + (-1173711152 & 1173711153)) != 0) { + var8 = -1592349445; + } else { + var8 = 618955701; + } + break; + case 1860067427: + var4.setSelected((boolean)((((-1046216111 | 1046216111) + (-1046216111 & 1046216111))) != 0)); + return (boolean)(((1)) != 0); + case 1901174131: + if (var7 == 0) { + var8 = 1915009764; + } else { + var8 = -871511215; + } + break; + case 1915009764: + if (var4 == this.replyField()) { + var8 = -1739878296; + } else { + var8 = 1297844162; + } + break; + case 2064051200: + if (var5 != 0) { + var8 = 1901174131; + } else { + var8 = 1297844162; + } + break; + case 2117779662: + this.back(); + return (boolean)(((1)) != 0); + } + } + } + + public boolean charTyped(char var1, int var2) { + arn var3 = null; + int var5 = 0; + int var4 = 176561817; + + while (true) { + switch (var4) { + case -1562210598: + if (var3.charTyped(var1, var2)) { + var4 = 183325022; + } else { + var4 = 842811124; + } + break; + case -190904268: + return (boolean)((var5) != 0); + case 176561817: + default: + var3 = this.focusedField(); + if (var3 != null) { + var4 = -1562210598; + } else { + var4 = 842811124; + } + break; + case 183325022: + var5 = 1; + var4 = -190904268; + break; + case 842811124: + var5 = 0; + var4 = -190904268; + } + } + } +} diff --git a/src/main/java/defpackage/aat.java b/src/main/java/defpackage/aat.java new file mode 100644 index 0000000..a5147e8 --- /dev/null +++ b/src/main/java/defpackage/aat.java @@ -0,0 +1,1696 @@ +package defpackage; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import net.minecraft.client.model.geom.builders.UVPair; +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.Vec3; + +public class aat implements aqg { + private static final int REGION_STRIDE = 4; + private static final int REGION_CAPACITY = 64; + private static final int REGION_ADD = 0; + private static final int REGION_NEW_COLOR = 1; + private static final int REGION_NEW_ICON = 2; + private static final int REGION_BIND = 3; + private static final int REGION_TRACK = 4; + private static final int REGION_VISIBLE = 5; + private static final int REGION_SHARE = 6; + private static final int REGION_MOVE = 7; + private static final int REGION_DELETE = 8; + private static final int REGION_RENAME = 9; + private static final int REGION_ROW_COLOR = 10; + private static final int REGION_ROW_ICON = 11; + private static final int HOVER_ROW = 0; + private static final int HOVER_TRACK = 1; + private static final int HOVER_VISIBLE = 2; + private static final int HOVER_SHARE = 3; + private static final int HOVER_MOVE = 4; + private static final int HOVER_DELETE = 5; + private static final int HOVER_SLOTS = 6; + private static final String GLYPH_TRACK = "a"; + private static final String GLYPH_VISIBLE = "r"; + private static final String GLYPH_SHARE = "u"; + private static final String GLYPH_MOVE = "x"; + private static final String GLYPH_DELETE = "M"; + private static final String ADD_LABEL = "Add here"; + private static final String BIND_LABEL = "Quick waypoint"; + private static final String BIND_HINT = "Click, then press a key or mouse button"; + private static final String BIND_LISTENING = "Press any key"; + private static final String BIND_UNBOUND = "Unbound"; + private static final String OWN_SECTION = "MY WAYPOINTS"; + private static final String FRIEND_SECTION = "SHARED BY FRIENDS"; + private static final String NAME_PLACEHOLDER_PREFIX = "Name, e.g. "; + private static final String EMPTY_GLYPH = "x"; + private static final String EMPTY_TITLE = "No waypoints yet"; + private static final String EMPTY_HINT_PREFIX = "Press "; + private static final String EMPTY_HINT_SUFFIX = " in game to drop one where you stand"; + private static final String EMPTY_HINT_UNBOUND = "Bind a quick key above, then drop one where you stand"; + private static final String NO_WORLD_HINT = "Join a world to add a waypoint"; + private static final String FULL_HINT = "Waypoint limit reached"; + private static final String SHARE_COUNT_FORMAT = "%s · %d/%d shared"; + private static final String COORDINATE_FORMAT = "%d, %d, %d"; + private static final String DISTANCE_FORMAT = "%d m"; + private static final String DELETE_ARMED = "Click again to delete"; + private static final String SEPARATOR = " · "; + private static final float TOP_PAD = 6.0F; + private static final float SECTION_GAP = 9.0F; + private static final float SECTION_LABEL_GAP = 5.0F; + private static final float ROW_GAP = 4.0F; + private static final float ROW_HEIGHT = 30.0F; + private static final float CARD_HEIGHT = 26.0F; + private static final float BIND_HEIGHT = 24.0F; + private static final float LABEL_INSET = 2.0F; + private static final float ROW_EDGE_PAD = 8.0F; + private static final float FIELD_INSET = 9.0F; + private static final float SWATCH_SIZE = 12.0F; + private static final float SWATCH_GAP = 5.0F; + private static final float BUTTON_WIDTH = 48.0F; + private static final float BUTTON_INSET = 4.0F; + private static final float ICON_SIZE = 11.0F; + private static final float ICON_GAP = 4.0F; + private static final float ICON_STEP = 15.0F; + private static final float DOT_RADIUS = 3.0F; + private static final float DOT_INSET = 11.0F; + private static final float GLYPH_INSET = 21.0F; + private static final float TEXT_INSET = 33.0F; + private static final float TEXT_TOP = 7.0F; + private static final float SUB_GAP = 2.0F; + private static final float CAPTION_GAP = 5.0F; + private static final float VIEW_SLOP = 2.0F; + private static final float ROW_STROKE_HOVER_ALPHA = 0.5F; + private static final float CARD_ALPHA = 0.6F; + private static final float SUB_ALPHA = 0.75F; + private static final float ICON_IDLE_ALPHA = 0.5F; + private static final float ICON_ACTIVE_ALPHA = 0.95F; + private static final float ICON_OFF_ALPHA = 0.25F; + private static final float PRIMARY_IDLE_ALPHA = 0.85F; + private static final float DISABLED_ALPHA = 0.35F; + private static final float FOREIGN_ROW_ALPHA = 0.72F; + private static final float TRACK_WASH_ALPHA = 0.16F; + private static final float HALO_ALPHA = 0.25F; + private static final float HALO_GROW = 1.6F; + private static final int ICON_FONT_SIZE = 6; + private static final int BIND_GUARD_MILLIS = 220; + private static final int FIELD_WIDTH_FALLBACK = 120; + private static final asu DANGER = new asu( + 226, + 96, + 96, + (563469338 | -563469083) + (563469338 & -563469083) + ); + private static final asu POSITIVE = new asu( + 88, + 194, + 125, + (-2113474039 | 2113474294) + (-2113474039 & 2113474294) + ); + private float[] regionBounds = new float[256]; + private int[] regionActions = new int[64]; + private String[] regionPayloads = new String[64]; + private int regionCount; + private final Map rowHoverSprings = new HashMap<>(); + private final ct addButtonHover = asa.spring(); + private final ct bindHover = asa.spring(); + private arn nameField; + private arn renameField; + private String renamingId; + private String armedDeleteId; + private boolean bindListening; + private long bindArmedAt; + private int newColorIndex; + private avy newIcon = avy.DEFAULT; + private boolean scrollReset; + private float viewTop; + private float viewBottom; + private float fieldX; + private float fieldY; + private float fieldWidth; + private float fieldHeight; + private boolean fieldBoundsValid; + + private static arq panelRadius() { + return asj.all(oc.PANEL); + } + + private static arq rowRadius() { + return asj.all(oc.CARD); + } + + private static arq buttonRadius() { + return asj.all(oc.ROW); + } + + private arn nameField() { + int var1 = 277310162; + + while (true) { + switch (var1) { + case -1879490567: + return this.nameField; + case -1027746437: + this.nameField = new arn(new UVPair(0.0F, 0.0F), asp.font(oe.CAPTION), "Name, e.g. " + awb.getInstance().nextQuickName(), 120.0F); + this.nameField.setMaxLength((-361315555 ^ 361315579) + ((-361315555 & 361315579) << 1)); + var1 = -1879490567; + break; + case 277310162: + default: + if (this.nameField == null) { + var1 = -1027746437; + } else { + var1 = -1879490567; + } + } + } + } + + private arn renameField() { + int var1 = 1299351076; + + while (true) { + switch (var1) { + case -1955772950: + return this.renameField; + case -958446974: + this.renameField = new arn(new UVPair(0.0F, 0.0F), asp.font(oe.BODY), "", 120.0F); + this.renameField.setMaxLength((359988369 | -359988345) + (359988369 & -359988345)); + var1 = -1955772950; + break; + case 1299351076: + default: + if (this.renameField == null) { + var1 = -958446974; + } else { + var1 = -1955772950; + } + } + } + } + + public void onCategoryOpened(float var1) { + this.scrollReset = (boolean)(((1)) != 0); + this.cancelRename(); + this.armedDeleteId = null; + this.bindListening = (boolean)(((0)) != 0); + } + + public boolean consumeScrollReset() { + int var1 = -1789638185; + + while (true) { + switch (var1) { + case -1789638185: + default: + if (this.scrollReset) { + var1 = -340338409; + } else { + var1 = -1408971713; + } + break; + case -1408971713: + return (boolean)(((0)) != 0); + case -340338409: + this.scrollReset = (boolean)(((0)) != 0); + return (boolean)(((1)) != 0); + } + } + } + + public void onClosed() { + this.cancelRename(); + this.armedDeleteId = null; + this.bindListening = (boolean)(((0)) != 0); + this.nameField().setSelected((boolean)((((-1675681156 | 1675681156) + (-1675681156 & 1675681156))) != 0)); + } + + public float render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, mv var8, float var9, float var10) { + ge var11 = null; + ge var12 = null; + ge var13 = null; + ge var14 = null; + asu var15 = null; + asu var16 = null; + asu var17 = null; + asu var18 = null; + asu var19 = null; + awb var20 = null; + List var21 = null; + List var22 = null; + float var23 = 0.0F; + int var24 = 0; + int var25 = 1957619655; + + while (true) { + switch (var25) { + case -1598818005: + if (var22.isEmpty()) { + var25 = -916247830; + } else { + var25 = -1437904144; + } + break; + case -1437904144: + if (!var21.isEmpty()) { + var25 = -949753441; + } else { + var25 = -175734508; + } + break; + case -1355314804: + if (var24 < var22.size()) { + var25 = 1218142546; + } else { + var25 = -896155489; + } + break; + case -949753441: + var1.drawText( + var11, "MY WAYPOINTS", var2 + 2.0F, var23, var16 + ); + var23 += var11.height() + 5.0F; + var24 = 0; + var25 = -248500540; + break; + case -916247830: + arw.draw( + var1, + var8, + "x", + "No waypoints yet", + this.emptyHint(), + var2, + var23, + var4, + Math.max(0.0F, var5 - (var23 - (var3 - var6))), + var7 + ); + return var23 - (var3 - var6) + var5; + case -896155489: + var23 += 9.0F; + var25 = 108759682; + break; + case -248500540: + if (var24 < var21.size()) { + var25 = 1128541571; + } else { + var25 = 366030226; + } + break; + case -175734508: + if (!var22.isEmpty()) { + var25 = 1568548464; + } else { + var25 = 108759682; + } + break; + case 108759682: + return var23 - (var3 - var6); + case 366030226: + var23 += 9.0F; + var25 = -175734508; + break; + case 1128541571: + var23 = this.renderRow( + var1, var2, var23, var4, var7, var8, var9, var10, (avx)var21.get(var24), var12, var13, var14, var15, var16, var17, var18, var19, var20 + ); + var24++; + var25 = -248500540; + break; + case 1218142546: + var23 = this.renderRow( + var1, var2, var23, var4, var7, var8, var9, var10, (avx)var22.get(var24), var12, var13, var14, var15, var16, var17, var18, var19, var20 + ); + var24++; + var25 = -1355314804; + break; + case 1568548464: + var1.drawText( + var11, + "SHARED BY FRIENDS", + var2 + 2.0F, + var23, + var16 + ); + var23 += var11.height() + 5.0F; + var24 = 0; + var25 = -1355314804; + break; + case 1957619655: + default: + this.clearRegions(); + this.viewTop = var3; + this.viewBottom = var3 + var5; + var11 = asp.font(oe.LABEL_STRONG); + var12 = asp.font(oe.BODY); + var13 = asp.font(oe.MICRO); + var14 = gl.ICONS.getFont(6.0F); + var15 = var8.getWhite().mulAlpha(var7); + var16 = var8.getGrayLight().mulAlpha(var7); + var17 = var8.getColor().mulAlpha(var7); + var18 = var8.getForegroundColor().mulAlpha(0.6F * var7); + var19 = var8.getForegroundStroke().mulAlpha(var7); + var20 = awb.getInstance(); + var21 = var20.own(); + var22 = var20.shared(); + var23 = var3 - var6 + 6.0F; + var23 = this.renderAddCard(var1, var2, var23, var4, var7, var8, var9, var10, var13, var15, var16, var17, var18, var19, var20); + var23 = this.renderBindCard(var1, var2, var23, var4, var7, var8, var9, var10, var12, var13, var15, var16, var17, var18, var19); + var23 = this.renderStatus(var1, var2, var23, var4, var13, var16, var20); + if (var21.isEmpty()) { + var25 = -1598818005; + } else { + var25 = -1437904144; + } + } + } + } + + private String emptyHint() { + String var1 = null; + String var3 = null; + int var2 = -971773207; + + while (true) { + switch (var2) { + case -1214633645: + var3 = "Press " + var1 + " in game to drop one where you stand"; + var2 = -311103033; + break; + case -971773207: + default: + var1 = wk.INSTANCE.quickKeyName(); + if (var1.isEmpty()) { + var2 = 156956260; + } else { + var2 = -1214633645; + } + break; + case -311103033: + return var3; + case 156956260: + var3 = "Bind a quick key above, then drop one where you stand"; + var2 = -311103033; + } + } + } + + private float renderAddCard( + asq var1, + float var2, + float var3, + float var4, + float var5, + mv var6, + float var7, + float var8, + ge var9, + asu var10, + asu var11, + asu var12, + asu var13, + asu var14, + awb var15 + ) { + boolean var16 = this.nameField().isSelected(); + int var17 = mc.player != null && mc.level != null && var15.count() < 64? 1: 0; + this.fieldBoundsValid = (boolean)(((1)) != 0); + this.fieldX = var2; + this.fieldY = var3; + this.fieldWidth = var4; + this.fieldHeight = 26.0F; + var1.drawSurface(aso.CARD, var2, var3, var4, 26.0F, panelRadius(), var13); + atb.drawRoundedBorder(var1.pose(), var2, var3, var4, 26.0F, pk.borderHairline(), panelRadius(), var16 ? var12 : var14); + float var18 = 18.0F; + float var19 = var2 + var4 - 48.0F - 4.0F; + float var20 = var3 + 4.0F; + float var21 = var19 - 5.0F - 12.0F; + float var22 = var21 - 5.0F - 12.0F; + float var23 = var3 + 7.0F; + float var24 = var2 + 9.0F; + this.nameField().setWidth(Math.max(0.0F, var22 - 5.0F - var24)); + ge var25 = this.nameField().getFont(); + this.nameField().render(var1, var24, var3 + (26.0F - var25.height()) / 2.0F, var10, var11.mulAlpha(var16 ? 0.0F : 0.75F)); + asu var26 = new asu(awb.paletteColor(this.newColorIndex)).mulAlpha(var5); + var1.drawRoundedRect(var22, var23, 12.0F, 12.0F, asj.pill(12.0F), var26); + this.addRegion(var22, var23, 12.0F, 12.0F, 1, null); + var1.drawRoundedRect(var21, var23, 12.0F, 12.0F, asj.all(oc.INNER), var6.getForegroundLight().mulAlpha(var5)); + ge var27 = gl.ICONS.getFont(6.0F); + String var28 = this.newIcon.getGlyph(); + var1.drawText(var27, var28, var21 + (12.0F - var27.width(var28)) / 2.0F, var23 + (12.0F - var27.height()) / 2.0F, var10); + this.addRegion(var21, var23, 12.0F, 12.0F, 2, null); + this.drawPrimaryButton( + var1, + var6, + this.addButtonHover, + var19, + var20, + 48.0F, + var18, + "Add here", + var17 != 0 ? var12 : var12.mulAlpha(0.35F), + var17 != 0 ? var10 : var10.mulAlpha(0.35F), + var5, + var7, + var8 + ); + if (var17 != 0) { + this.addRegion(var19, var20, 48.0F, var18, 0, null); + } + + var3 += 26.0F; + if (var17 == 0) { + String var29 = mc.player != null && mc.level != null + ? "Waypoint limit reached" + : "Join a world to add a waypoint"; + var1.drawText(var9, var29, var2 + 2.0F, var3 + 5.0F, var11); + var3 += var9.height() + 5.0F; + } + + return var3 + 9.0F; + } + + private float renderBindCard( + asq var1, + float var2, + float var3, + float var4, + float var5, + mv var6, + float var7, + float var8, + ge var9, + ge var10, + asu var11, + asu var12, + asu var13, + asu var14, + asu var15 + ) { + var1.drawSurface(aso.ROW, var2, var3, var4, 24.0F, rowRadius(), var14); + atb.drawRoundedBorder( + var1.pose(), var2, var3, var4, 24.0F, pk.borderHairline(), rowRadius(), this.bindListening ? var13 : var15.mulAlpha(arx.classicFade()) + ); + var1.drawText( + var9, + "Quick waypoint", + var2 + 9.0F, + var3 + (24.0F - var9.height()) / 2.0F, + var11 + ); + String var16 = wk.INSTANCE.quickKeyName(); + String var17 = this.bindListening + ? "Press any key" + : (var16.isEmpty() ? "Unbound" : var16); + ge var18 = asp.font(oe.LABEL_STRONG); + float var19 = Math.max(48.0F, var18.width(var17) + 18.0F); + float var20 = 16.0F; + float var21 = var2 + var4 - var19 - 4.0F; + float var22 = var3 + 4.0F; + float var23 = this.bindHover.update(this.iconHovered(var7, var8, var21, var22, var19, var20) ? 1.0F : 0.0F); + asa.plateControl(var1, var21, var22, var19, var20, asa.plateColor(var6), var5, var23); + var1.drawRoundedRect(var21, var22, var19, var20, buttonRadius(), this.bindListening ? var13 : var6.getForegroundLight().mulAlpha(var5)); + asu var24 = !this.bindListening && var16.isEmpty() ? var12 : var11; + var1.drawText(var18, var17, var21 + (var19 - var18.width(var17)) / 2.0F, var22 + (var20 - var18.height()) / 2.0F, var24); + this.addRegion(var21, var22, var19, var20, 3, null); + var3 += 24.0F; + var1.drawText( + var10, + "Click, then press a key or mouse button", + var2 + 2.0F, + var3 + 5.0F, + var12 + ); + return var3 + var10.height() + 5.0F + 9.0F; + } + + private float renderStatus(asq var1, float var2, float var3, float var4, ge var5, asu var6, awb var7) { + Locale var10000 = Locale.US; + String var10001 = "%s · %d/%d shared"; + Object[] var10002 = new Object[3]; + var10002[0] = avz.statusLabel(); + var10002[1] = var7.sharedCount(); + var10002[2] = 32; + String var8 = String.format(var10000, var10001, var10002); + var1.drawText(var5, var8, var2 + 2.0F, var3, var6); + return var3 + var5.height() + 9.0F; + } + + private float renderRow( + asq var1, + float var2, + float var3, + float var4, + float var5, + mv var6, + float var7, + float var8, + avx var9, + ge var10, + ge var11, + ge var12, + asu var13, + asu var14, + asu var15, + asu var16, + asu var17, + awb var18 + ) { + String var19 = var9.id(); + boolean var20 = var9.isLocal(); + boolean var21 = var18.isTracked(var19); + boolean var22 = var9.dimension().equals(var18.currentDimension()); + float var23 = var20 ? var5 : var5 * 0.72F; + int var24 = aqj.isHovered(var7, var8, var2, var3, var4, 30.0) && var8 >= this.viewTop && var8 <= this.viewBottom + ? 1: 0; + float var25 = this.rowHover(var19, 0, (boolean)((var24) != 0)); + var1.drawSurface(aso.ROW, var2, var3, var4, 30.0F, rowRadius(), var16); + asa.plateRow(var1, var2, var3, var4, 30.0F, asa.plateColor(var6), var23, var25); + asu var26 = new asu(var9.color()).mulAlpha(var23); + if (var21) { + var1.drawRoundedRect(var2, var3, var4, 30.0F, rowRadius(), var26.mulAlpha(0.16F)); + } + + atb.drawRoundedBorder( + var1.pose(), + var2, + var3, + var4, + 30.0F, + pk.borderHairline(), + rowRadius(), + var21 ? var26 : var17.mulAlpha(arx.classicFade() * (1.0F - var25)).mix(var6.getColor().mulAlpha(0.5F * var23), var25) + ); + float var27 = var3 + 15.0F; + float var28 = var2 + 11.0F; + if (var21) { + float var29 = 4.6F; + var1.drawRoundedRect(var28 - var29, var27 - var29, var29 * 2.0F, var29 * 2.0F, asj.uniform(var29), var26.mulAlpha(0.25F)); + } + + var1.drawRoundedRect(var28 - 3.0F, var27 - 3.0F, 6.0F, 6.0F, asj.uniform(3.0F), var26); + if (var20) { + this.addRegion(var28 - 3.0F, var27 - 3.0F, 6.0F, 6.0F, 10, var19); + } + + String var40 = var9.icon().getGlyph(); + float var30 = var2 + 21.0F; + var1.drawText(var12, var40, var30 - var12.width(var40) / 2.0F, var27 - var12.height() / 2.0F, var26); + if (var20) { + this.addRegion(var30 - 5.5F, var27 - 5.5F, 11.0F, 11.0F, 11, var19); + } + + int var31 = var20 ? 5: 1; + float var32 = var2 + var4 - 8.0F; + float var33 = var32 - var31 * 15.0F + 4.0F; + float var34 = var2 + 33.0F; + float var35 = Math.max(0.0F, var33 - 4.0F - var34); + float var36 = var3 + 7.0F; + if (var20 && var19.equals(this.renamingId)) { + this.renameField().setWidth(var35); + this.renameField().render(var1, var34, var36, var13, var14); + } else { + var1.drawScrollingText(var10, var9.name(), var34, var36, var35, var13.mulAlpha(var23 / Math.max(var5, Float.MIN_NORMAL))); + if (var20) { + this.addRegion(var34, var36, var35, var10.height(), 9, var19); + } + } + + String var37 = this.rowDetail(var9, var20, var22, var19); + var1.drawScrollingText(var11, var37, var34, var36 + var10.height() + 2.0F, var35, var19.equals(this.armedDeleteId) ? DANGER.mulAlpha(var23) : var14); + float var38 = var27 - 5.5F; + float var39 = var32 - 11.0F; + if (var20) { + var39 = this.drawAction( + var1, + var6, + var19, + 5, + 8, + "M", + var12, + var39, + var38, + var23, + var7, + var8, + var19.equals(this.armedDeleteId), + DANGER, + var13 + ); + var39 = this.drawAction( + var1, + var6, + var19, + 4, + 7, + "x", + var12, + var39, + var38, + var23, + var7, + var8, + (boolean)(((0)) != 0), + var15, + var13 + ); + var39 = this.drawAction( + var1, + var6, + var19, + 3, + 6, + "u", + var12, + var39, + var38, + var23, + var7, + var8, + var9.shared(), + POSITIVE, + var13 + ); + var39 = this.drawAction( + var1, + var6, + var19, + 2, + 5, + "r", + var12, + var39, + var38, + var23, + var7, + var8, + var9.visible(), + var15, + var13 + ); + } + + this.drawAction( + var1, + var6, + var19, + 1, + 4, + "a", + var12, + var39, + var38, + var23, + var7, + var8, + var21, + var26, + var13 + ); + return var3 + 30.0F + 4.0F; + } + + private String rowDetail(avx var1, boolean var2, boolean var3, String var4) { + String var5 = null; + StringBuilder var6 = null; + Vec3 var7 = null; + int var8 = -897341484; + + while (true) { + switch (var8) { + case -1999177335: + return "Click again to delete"; + case -1927409494: + var6.append(" · ").append(var1.owner()); + var8 = 922419952; + break; + case -897341484: + default: + if (var4.equals(this.armedDeleteId)) { + var8 = -1999177335; + } else { + var8 = 1321823668; + } + break; + case -809924578: + if (mc.player != null) { + var8 = 75638370; + } else { + var8 = -550397770; + } + break; + case -641893379: + var6.append(" · ").append(dimensionLabel(var1.dimension())); + return var6.toString(); + case -550397770: + return var6.toString(); + case 75638370: + var7 = mc.player.position(); + StringBuilder var11 = var6.append(" · "); + Locale var12 = Locale.US; + String var13 = "%d m"; + Object[] var10003 = new Object[1]; + var10003[0] = Math.round(var1.distanceTo(var7)); + var11.append(String.format(var12, var13, var10003)); + var8 = -550397770; + break; + case 922419952: + if (!var3) { + var8 = -641893379; + } else { + var8 = -809924578; + } + break; + case 1321823668: + Locale var10000 = Locale.US; + String var10001 = "%d, %d, %d"; + Object[] var10002 = new Object[3]; + var10002[0] = var1.x(); + var10002[1] = var1.y(); + var10002[2] = var1.z(); + var5 = String.format(var10000, var10001, var10002); + var6 = new StringBuilder(var5); + if (!var2) { + var8 = -1927409494; + } else { + var8 = 922419952; + } + } + } + } + + private static String dimensionLabel(String var0) { + int var1 = 0; + String var3 = null; + int var2 = 1573540518; + + while (true) { + switch (var2) { + case -1411759235: + var3 = var0; + var2 = 589995100; + break; + case 326279197: + var3 = var0.substring(var1 + (932942634 | -932942633) + (932942634 & -932942633)); + var2 = 589995100; + break; + case 589995100: + return var3; + case 1573540518: + default: + var1 = var0.indexOf((-1154322300 | 1154322358) + (-1154322300 & 1154322358)); + if (var1 < 0) { + var2 = -1411759235; + } else { + var2 = 326279197; + } + } + } + } + + private float drawAction( + asq var1, + mv var2, + String var3, + int var4, + int var5, + String var6, + ge var7, + float var8, + float var9, + float var10, + float var11, + float var12, + boolean var13, + asu var14, + asu var15 + ) { + int var16 = 0; + float var17 = 0.0F; + int var18 = 0; + asu var19 = null; + asu var21 = null; + int var20 = 234278676; + + while (true) { + switch (var20) { + case -2058707410: + var21 = var15.mulAlpha((0.5F + 0.45F * var17) * var10); + var20 = 548962023; + break; + case -289365198: + var21 = var14.mulAlpha(0.95F * var10); + var20 = 548962023; + break; + case 234278676: + default: + boolean var22 = this.iconHovered(var11, var12, var8, var9, 11.0F, 11.0F); + var17 = this.rowHover(var3, var4, var22); + asa.plateControl(var1, var8, var9, 11.0F, 11.0F, asa.plateColor(var2), var10, var17); + var18 = (asa.push(var1, var8, var9, 11.0F, 11.0F, var17, 0.05F)) ? 1 : 0; + if (var13) { + var20 = -289365198; + } else { + var20 = -2058707410; + } + break; + case 548962023: + var19 = var21; + var1.drawText(var7, var6, var8 + (11.0F - var7.width(var6)) / 2.0F, var9 + (11.0F - var7.height()) / 2.0F, var19); + asa.pop(var1, (boolean)((var18) != 0)); + this.addRegion(var8, var9, 11.0F, 11.0F, var5, var3); + return var8 - 15.0F; + } + } + } + + private void drawPrimaryButton( + asq var1, mv var2, ct var3, float var4, float var5, float var6, float var7, String var8, asu var9, asu var10, float var11, float var12, float var13 + ) { + float var14 = var3.update(this.iconHovered(var12, var13, var4, var5, var6, var7) ? 1.0F : 0.0F); + asa.plateControl(var1, var4, var5, var6, var7, asa.plateColor(var2), var11, var14); + boolean var15 = asa.push(var1, var4, var5, var6, var7, var14, 0.05F); + var1.drawRoundedRect(var4, var5, var6, var7, buttonRadius(), var9.mulAlpha(0.85F + 0.14999998F * var14)); + ge var16 = asp.font(oe.LABEL_STRONG); + var1.drawText(var16, var8, var4 + (var6 - var16.width(var8)) / 2.0F, var5 + (var7 - var16.height()) / 2.0F, var10); + asa.pop(var1, var15); + } + + private float rowHover(String var1, int var2, boolean var3) { + return this.rowHoverSprings.computeIfAbsent(var1, var0 -> newHoverSprings())[var2].update(var3 ? 1.0F : 0.0F); + } + + private static ct[] newHoverSprings() { + ct[] var0 = null; + int var1 = 0; + int var2 = -2046136451; + + while (true) { + switch (var2) { + case -2046136451: + default: + var0 = new ct[6]; + var1 = 0; + var2 = 1453969264; + break; + case -710557948: + return var0; + case 1453969264: + if (var1 < (1299527772 ^ -1299527766) + ((1299527772 & -1299527766) << 1)) { + var2 = 1546923831; + } else { + var2 = -710557948; + } + break; + case 1546923831: + var0[var1] = asa.spring(); + var1++; + var2 = 1453969264; + } + } + } + + private boolean iconHovered(float var1, float var2, float var3, float var4, float var5, float var6) { + int var8 = 0; + int var7 = -1777169061; + + while (true) { + switch (var7) { + case -1822385133: + if (aqj.isHovered(var1, var2, var3, var4, var5, var6)) { + var7 = 862165934; + } else { + var7 = -973325014; + } + break; + case -1777169061: + default: + if (var2 >= this.viewTop) { + var7 = 2007117419; + } else { + var7 = -973325014; + } + break; + case -973325014: + var8 = 0; + var7 = -966691232; + break; + case -966691232: + return (boolean)((var8) != 0); + case 862165934: + var8 = 1; + var7 = -966691232; + break; + case 2007117419: + if (var2 <= this.viewBottom) { + var7 = -1822385133; + } else { + var7 = -973325014; + } + } + } + } + + private void addRegion(float var1, float var2, float var3, float var4, int var5, String var6) { + int var7 = 0; + int var8 = -1153384929; + + while (true) { + switch (var8) { + case -1320855464: + var7 = this.regionCount * (4); + this.regionBounds[var7] = var1; + this.regionBounds[var7 + 1] = var2; + this.regionBounds[var7 + 2] = var3; + this.regionBounds[var7 + 3] = var4; + this.regionActions[this.regionCount] = var5; + this.regionPayloads[this.regionCount] = var6; + this.regionCount += 1; + return; + case -1153384929: + default: + if (this.regionCount * ((-158860747 ^ 158860751) + ((-158860747 & 158860751) << 1)) >= this.regionBounds.length) { + var8 = -940218447; + } else { + var8 = -1320855464; + } + break; + case -940218447: + var7 = this.regionActions.length * (2); + this.regionBounds = Arrays.copyOf(this.regionBounds, var7 * ((-224188386 | 224188390) + (-224188386 & 224188390))); + this.regionActions = Arrays.copyOf(this.regionActions, var7); + this.regionPayloads = Arrays.copyOf(this.regionPayloads, var7); + var8 = -1320855464; + } + } + } + + private void clearRegions() { + Arrays.fill(this.regionPayloads, 0, this.regionCount, null); + this.regionCount = 0; + } + + private boolean dispatchRegion(double var1, double var3) { + int var5 = 0; + int var6 = 0; + int var7 = -1508809117; + + while (true) { + switch (var7) { + case -1508809117: + default: + var5 = 0; + var7 = 1225191073; + break; + case -1402488265: + return (boolean)(((0)) != 0); + case -8068037: + return (boolean)(((1)) != 0); + case 657845569: + var7 = 1052188095; + break; + case 756779594: + bz.getInstance().getSoundManager().playClick(); + var7 = -8068037; + break; + case 1052188095: + var5++; + var7 = 1225191073; + break; + case 1225191073: + if (var5 < this.regionCount) { + var7 = 1920711476; + } else { + var7 = -1402488265; + } + break; + case 1856931639: + this.runRegion(this.regionActions[var5], this.regionPayloads[var5]); + if (bz.getInstance().getSoundManager() != null) { + var7 = 756779594; + } else { + var7 = -8068037; + } + break; + case 1920711476: + var6 = var5 * (4); + if (!aqj.isHovered( + var1, + var3, + this.regionBounds[var6], + this.regionBounds[var6 + 1], + this.regionBounds[var6 + 2], + this.regionBounds[var6 + 3] + )) { + var7 = 657845569; + } else { + var7 = 1856931639; + } + } + } + } + + private void runRegion(int var1, String var2) { + awb var3 = awb.getInstance(); + switch (var1) { + case 0: + this.submit(); + break; + case 1: + this.newColorIndex = (this.newColorIndex + (1861274612 | -1861274611) + (1861274612 & -1861274611)) % awb.paletteSize(); + break; + case 2: + this.newIcon = this.newIcon.next(); + break; + case 3: + this.armBind(); + break; + case 4: + var3.toggleTracked(var2); + break; + case 5: + this.toggleVisible(var3, var2); + break; + case 6: + this.toggleShared(var3, var2); + break; + case 7: + this.moveHere(var3, var2); + break; + case 8: + this.confirmDelete(var3, var2); + break; + case 9: + this.beginRename(var3, var2); + break; + case 10: + this.cycleColor(var3, var2); + break; + case 11: + this.cycleIcon(var3, var2); + } + } + + private void submit() { + awb var1 = null; + String var2 = null; + String var3 = null; + BlockPos var4 = null; + Object var5 = null; + String var7 = null; + int var6 = 2098742461; + + while (true) { + switch (var6) { + case -1457342721: + var2 = this.nameField().getText().trim(); + if (var2.isEmpty()) { + var6 = 1909203585; + } else { + var6 = 1720655550; + } + break; + case -725956525: + var3 = var7; + var4 = mc.player.blockPosition(); + var5 = var1.add( + var3, var4, var1.currentDimension(), awb.paletteColor(this.newColorIndex), this.newIcon.getGlyph(), wk.INSTANCE.sharesWithFriends() + ); + if (var5 == null) { + var6 = -475589704; + } else { + var6 = 1266324524; + } + break; + case -475589704: + return; + case 122945919: + if (mc.level == null) { + var6 = 2105182100; + } else { + var6 = -1457342721; + } + break; + case 1266324524: + avz.markDirty(); + this.nameField().setText(""); + this.nameField().setCursor((-18939380 ^ 18939380) + ((-18939380 & 18939380) << 1)); + this.newColorIndex = (this.newColorIndex + (-1411789331 ^ 1411789332) + ((-1411789331 & 1411789332) << 1)) % awb.paletteSize(); + return; + case 1720655550: + var7 = var2; + var6 = -725956525; + break; + case 1909203585: + var7 = var1.nextQuickName(); + var6 = -725956525; + break; + case 2098742461: + default: + var1 = awb.getInstance(); + if (mc.player != null) { + var6 = 122945919; + } else { + var6 = 2105182100; + } + break; + case 2105182100: + return; + } + } + } + + private void armBind() { + this.bindListening = (boolean)(((1)) != 0); + this.bindArmedAt = System.currentTimeMillis(); + } + + private void applyBind(int var1) { + wk.INSTANCE.setQuickKeyCode(var1); + this.bindListening = (boolean)(((0)) != 0); + } + + private void toggleVisible(awb var1, String var2) { + avx var3 = var1.byId(var2); + if (var3 != null) { + var1.setVisible( + var2, (boolean)(((!var3.visible() ? 1: (-415862982 | 415862982) + (-415862982 & 415862982)) + ) != 0)); + } + } + + private void toggleShared(awb var1, String var2) { + avx var3 = var1.byId(var2); + if (var3 != null + && var1.setShared( + var2, + (boolean)(((!var3.shared() ? 1: (-107834745 ^ 107834745) + ((-107834745 & 107834745) << 1)) + ) != 0))) { + avz.markDirty(); + } + } + + private void moveHere(awb var1, String var2) { + int var3 = 1335224679; + + while (true) { + switch (var3) { + case -1369903406: + return; + case 31865785: + avz.markDirty(); + var3 = -1369903406; + break; + case 1335224679: + default: + if (var1.moveHere(var2)) { + var3 = 31865785; + } else { + var3 = -1369903406; + } + } + } + } + + private void confirmDelete(awb var1, String var2) { + int var3 = 421772844; + + while (true) { + switch (var3) { + case -1468302880: + this.cancelRename(); + var3 = 250551208; + break; + case -1318557080: + this.armedDeleteId = var2; + return; + case -418639679: + return; + case 250551208: + if (var1.remove(var2)) { + var3 = 1676520119; + } else { + var3 = -418639679; + } + break; + case 421772844: + default: + if (!var2.equals(this.armedDeleteId)) { + var3 = -1318557080; + } else { + var3 = 756957597; + } + break; + case 756957597: + this.armedDeleteId = null; + if (var2.equals(this.renamingId)) { + var3 = -1468302880; + } else { + var3 = 250551208; + } + break; + case 1676520119: + avz.markDirty(); + var3 = -418639679; + } + } + } + + private void beginRename(awb var1, String var2) { + avx var3 = null; + int var4 = 64684608; + + while (true) { + switch (var4) { + case 64684608: + default: + var3 = var1.byId(var2); + if (var3 == null) { + var4 = 1563128326; + } else { + var4 = 297637319; + } + break; + case 297637319: + this.renamingId = var2; + this.renameField().setText(var3.name()); + this.renameField().setCursor(var3.name().length()); + this.renameField().setSelected((boolean)((((-941302164 | 941302165) + (-941302164 & 941302165))) != 0)); + this.renameField().setSelectAll((boolean)((((1430176827 | -1430176826) + (1430176827 & -1430176826))) != 0)); + this.nameField().setSelected((boolean)((((584465479 ^ -584465479) + ((584465479 & -584465479) << 1))) != 0)); + return; + case 1563128326: + return; + } + } + } + + private void commitRename() { + String var1 = null; + String var2 = null; + int var3 = 1354838499; + + while (true) { + switch (var3) { + case -963378707: + var1 = this.renamingId; + var2 = this.renameField().getText().trim(); + this.cancelRename(); + if (!var2.isEmpty()) { + var3 = -300563978; + } else { + var3 = 1717807823; + } + break; + case -300563978: + if (awb.getInstance().rename(var1, var2)) { + var3 = -271729820; + } else { + var3 = 1717807823; + } + break; + case -271729820: + avz.markDirty(); + var3 = 1717807823; + break; + case 1071667797: + return; + case 1354838499: + default: + if (this.renamingId == null) { + var3 = 1071667797; + } else { + var3 = -963378707; + } + break; + case 1717807823: + return; + } + } + } + + private void cancelRename() { + this.renamingId = null; + this.renameField().setSelected((boolean)((((1684510835 | -1684510835) + (1684510835 & -1684510835))) != 0)); + } + + private void cycleColor(awb var1, String var2) { + avx var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = 22522297; + + while (true) { + switch (var6) { + case -1409395848: + return; + case -1181172980: + avz.markDirty(); + var6 = -1409395848; + break; + case -1162863946: + var4 = (var5 + (656058200 | -656058199) + (656058200 & -656058199)) % awb.paletteSize(); + var6 = 1446843985; + break; + case -401720220: + var4 = 0; + var5 = 0; + var6 = 1630814200; + break; + case 22522297: + default: + var3 = var1.byId(var2); + if (var3 == null) { + var6 = 1846003187; + } else { + var6 = -401720220; + } + break; + case 546090107: + var5++; + var6 = 1630814200; + break; + case 1446843985: + if (var1.recolor(var2, awb.paletteColor(var4))) { + var6 = -1181172980; + } else { + var6 = -1409395848; + } + break; + case 1609112708: + if (awb.paletteColor(var5) == var3.color()) { + var6 = -1162863946; + } else { + var6 = 546090107; + } + break; + case 1630814200: + if (var5 < awb.paletteSize()) { + var6 = 1609112708; + } else { + var6 = 1446843985; + } + break; + case 1846003187: + return; + } + } + } + + private void cycleIcon(awb var1, String var2) { + avx var3 = null; + int var4 = -764708080; + + while (true) { + switch (var4) { + case -881929083: + if (var1.setGlyph(var2, var3.icon().next().getGlyph())) { + var4 = 31647794; + } else { + var4 = 72703634; + } + break; + case -764708080: + default: + var3 = var1.byId(var2); + if (var3 != null) { + var4 = -881929083; + } else { + var4 = 72703634; + } + break; + case 31647794: + avz.markDirty(); + var4 = 72703634; + break; + case 72703634: + return; + } + } + } + + public boolean handleMouseClicked(double var1, double var3, apf var5) { + if (this.bindListening) { + if (System.currentTimeMillis() - this.bindArmedAt >= (-7173945649327036645L | 7173945649327036865L) + (-7173945649327036645L & 7173945649327036865L)) { + this.applyBind(var5.getButtonIndex()); + } + + return (boolean)(((1)) != 0); + } else { + if (var5.getButtonIndex() == apf.LEFT.getButtonIndex()) { + int var6 = this.fieldBoundsValid + && aqj.isHovered(var1, var3, this.fieldX, this.fieldY, this.fieldWidth, this.fieldHeight) + && var3 >= this.viewTop - 2.0F + && var3 <= this.viewBottom + 2.0F + ? 1: 0; + this.nameField().setSelected((boolean)((var6) != 0)); + if (var6 != 0) { + this.nameField().setSelectAll((boolean)((((-1183388545 ^ 1183388545) + ((-1183388545 & 1183388545) << 1))) != 0)); + this.commitRename(); + } + } + + if (!(var3 < this.viewTop - 2.0F) && !(var3 > this.viewBottom + 2.0F)) { + String var8 = this.renamingId; + String var7 = this.armedDeleteId; + if (this.dispatchRegion(var1, var3)) { + if (var8 != null && var8.equals(this.renamingId)) { + this.commitRename(); + } + + if (var7 != null && var7.equals(this.armedDeleteId) && !var7.equals(this.regionPayloadUnderCursor(var1, var3))) { + this.armedDeleteId = null; + } + + return (boolean)(((1)) != 0); + } else { + this.commitRename(); + this.armedDeleteId = null; + return this.nameField().isSelected(); + } + } else { + return this.nameField().isSelected(); + } + } + } + + private String regionPayloadUnderCursor(double var1, double var3) { + int var5 = 0; + int var6 = 0; + int var7 = 1857201668; + + while (true) { + switch (var7) { + case -1710693649: + return this.regionPayloads[var5]; + case -1666820170: + var6 = var5 * (4); + if (aqj.isHovered( + var1, + var3, + this.regionBounds[var6], + this.regionBounds[var6 + 1], + this.regionBounds[var6 + 2], + this.regionBounds[var6 + 3] + )) { + var7 = -1710693649; + } else { + var7 = -1197856170; + } + break; + case -1504812237: + return null; + case -1197856170: + var5++; + var7 = 525743806; + break; + case 525743806: + if (var5 < this.regionCount) { + var7 = -1666820170; + } else { + var7 = -1504812237; + } + break; + case 1857201668: + default: + var5 = 0; + var7 = 525743806; + } + } + } + + public boolean handleMouseReleased(double var1, double var3, apf var5) { + return (boolean)(((0)) != 0); + } + + public boolean handleMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + return (boolean)(((0)) != 0); + } + + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + return (boolean)(((0)) != 0); + } + + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = -1579511013; + + while (true) { + switch (var4) { + case -2077409606: + return this.renameField().keyPressed(var1, var2, var3); + case -1845567134: + this.submit(); + return (boolean)(((1)) != 0); + case -1579511013: + default: + if (this.bindListening) { + var4 = 1612928303; + } else { + var4 = -738997556; + } + break; + case -1379690644: + if (var1 == (-2139417007 | 2139417266) + (-2139417007 & 2139417266)) { + var4 = 249994533; + } else { + var4 = 1252654174; + } + break; + case -758883473: + return this.nameField().keyPressed(var1, var2, var3); + case -738997556: + if (this.renamingId != null) { + var4 = 248112991; + } else { + var4 = 1498104424; + } + break; + case -490130137: + if (var1 != (307255613 ^ -307255356) + ((307255613 & -307255356) << 1)) { + var4 = 1417817322; + } else { + var4 = -1845567134; + } + break; + case -249479731: + if (var1 == (1515836873 | -1515836538) + (1515836873 & -1515836538)) { + var4 = 1992503193; + } else { + var4 = 419006830; + } + break; + case -191249616: + if (var1 != (2069981466 | -2069981205) + (2069981466 & -2069981205)) { + var4 = ('쪮' | -1379742530) + ('쪮' & -1379742530); + } else { + var4 = 249994533; + } + break; + case -21220020: + this.nameField().setSelected((boolean)((((-158500788 | 158500788) + (-158500788 & 158500788))) != 0)); + return (boolean)(((1)) != 0); + case -1715997: + this.cancelRename(); + return (boolean)(((1)) != 0); + case 76237881: + if (var1 == (1715233580 | -1715233324) + (1715233580 & -1715233324)) { + var4 = -21220020; + } else { + var4 = -758883473; + } + break; + case 131651987: + this.bindListening = (boolean)(((0)) != 0); + return (boolean)(((1)) != 0); + case 248112991: + if (var1 != (-2127292733 ^ 2127292990) + ((-2127292733 & 2127292990) << 1)) { + var4 = -249479731; + } else { + var4 = 1992503193; + } + break; + case 249994533: + this.applyBind((311359250 | -311359251) + (311359250 & -311359251)); + return (boolean)(((1)) != 0); + case 362890500: + return (boolean)(((0)) != 0); + case 419006830: + if (var1 == (-346599468 | 346599724) + (-346599468 & 346599724)) { + var4 = -1715997; + } else { + var4 = -2077409606; + } + break; + case 1252654174: + this.applyBind(var1); + return (boolean)(((1)) != 0); + case 1417817322: + if (var1 == (-2091560855 | 2091561190) + (-2091560855 & 2091561190)) { + var4 = -1845567134; + } else { + var4 = 76237881; + } + break; + case 1498104424: + if (!this.nameField().isSelected()) { + var4 = 362890500; + } else { + var4 = -490130137; + } + break; + case 1612928303: + if (var1 == (-1993503389 | 1993503645) + (-1993503389 & 1993503645)) { + var4 = 131651987; + } else { + var4 = -191249616; + } + break; + case 1992503193: + this.commitRename(); + return (boolean)(((1)) != 0); + } + } + } + + public boolean charTyped(char var1, int var2) { + int var3 = 1397602494; + + while (true) { + switch (var3) { + case -2091626304: + return this.renameField().charTyped(var1, var2); + case -1754643873: + if (this.renamingId != null) { + var3 = -2091626304; + } else { + var3 = 1121145242; + } + break; + case -1352065846: + return this.nameField().charTyped(var1, var2); + case -768621967: + return (boolean)(((1)) != 0); + case 1121145242: + if (!this.nameField().isSelected()) { + var3 = 1743673498; + } else { + var3 = -1352065846; + } + break; + case 1397602494: + default: + if (this.bindListening) { + var3 = -768621967; + } else { + var3 = -1754643873; + } + break; + case 1743673498: + return (boolean)(((0)) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/aau.java b/src/main/java/defpackage/aau.java new file mode 100644 index 0000000..f922567 --- /dev/null +++ b/src/main/java/defpackage/aau.java @@ -0,0 +1,438 @@ +package defpackage; + +import net.minecraft.util.Mth; + +public final class aau { + private static final float PANEL_WIDTH = 124.0F; + private static final float PANEL_GAP = 15.0F; + private static final float SCREEN_MARGIN = 6.0F; + private static final float BUD_WIDTH = 9.0F; + private static final float BUD_HEIGHT = 22.0F; + private static final float ORIGIN_INSET = 2.0F; + private static final float FILL_DELAY = 0.18F; + private static final float RELEASE_START = 0.42F; + private static final float TRAILING_RADIUS_RATIO = 0.35F; + private static final float CONTENT_TRIGGER = 0.62F; + private static final float TITLE_DELAY = 0.0F; + private static final float DOT_DELAY = 0.1F; + private static final float CAPTION_DELAY = 0.14F; + private static final float AXES_DELAY = 0.06F; + private static final float CROSS_DELAY = 0.26F; + private static final float TEXT_SLIDE = 7.0F; + private static final float STAGE_ENTER_SCALE = 0.93F; + private static final float ACCENT_GLOW_SOFTNESS = 10.0F; + private static final float ACCENT_GLOW_ALPHA = 0.22F; + private static final float MORPH_GLOSS_LEAD = 0.35F; + private static final float MORPH_GLOSS_SIGMA = 0.26F; + private static final float MORPH_GLOSS_ALPHA = 0.5F; + private static final float STAGE_WASH_ALPHA = 0.16F; + private static final int OPAQUE = 255; + private static final float GRID_ALPHA = 0.09F; + private static final float GRID_THICKNESS = 0.5F; + private static final float GRID_INSET = 5.0F; + private static final float TITLE_DOT_SIZE = 3.5F; + private static final float TITLE_DOT_GAP = 5.0F; + private static final float MIN_VISIBLE = 0.004F; + private static final float FULL = 1.0F; + private static final float HALF = 0.5F; + private static final String CAPTION = "Preview"; + private final ct openAnimation = ct.layout(ob.DELIBERATE, 0.0F); + private final ct contentAnimation = ct.layout(ob.SLOW, 0.0F); + private aav requestedSource; + private String requestedTitle; + private aav activeSource; + private String activeTitle; + private boolean open; + private float openValue; + private float contentValue; + + public void reset() { + this.requestedSource = null; + this.requestedTitle = null; + this.activeSource = null; + this.activeTitle = null; + this.open = (boolean)(((0)) != 0); + this.openValue = 0.0F; + this.contentValue = 0.0F; + this.openAnimation.jumpTo(0.0F); + this.contentAnimation.jumpTo(0.0F); + } + + public void beginFrame() { + this.requestedSource = null; + this.requestedTitle = null; + } + + public void request(aav var1, String var2) { + int var3 = 1098695364; + + while (true) { + switch (var3) { + case -931941416: + return; + case -308474456: + if (var2 == null) { + var3 = -931941416; + } else { + var3 = 2043986429; + } + break; + case 1098695364: + default: + if (var1 != null) { + var3 = -308474456; + } else { + var3 = -931941416; + } + break; + case 2043986429: + this.requestedSource = var1; + this.requestedTitle = var2; + return; + } + } + } + + public void update() { + this.open = (boolean)(((this.requestedSource != null + ? 1: (628111466 | -628111466) + (628111466 & -628111466))) != 0); + if (this.open) { + this.activeSource = this.requestedSource; + this.activeTitle = this.requestedTitle; + } + + this.openValue = this.openAnimation.update(this.open ? 1.0F : 0.0F); + int var1 = this.open && this.openValue >= 0.62F + ? 1: 0; + this.contentAnimation.setRole(var1 != 0 ? ob.SLOW : ob.FAST); + this.contentValue = this.contentAnimation.update(var1 != 0 ? 1.0F : 0.0F); + if (!this.open && this.openValue <= 0.004F) { + this.activeSource = null; + this.activeTitle = null; + } + } + + public void render(asq var1, mv var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9) { + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + arq var26 = null; + float var28 = 0.0F; + int var27 = -1082038670; + + while (true) { + switch (var27) { + case -1781311008: + var10 = var3 * Math.min(this.openValue, 1.0F); + if (var10 <= 0.004F) { + var27 = 1303234504; + } else { + var27 = -1774414926; + } + break; + case -1774414926: + var11 = panelHeight(); + var12 = var4 + var7; + var13 = var8 + 6.0F; + var14 = var9 - 6.0F - 124.0F; + if (var14 < var13) { + var27 = -1721469519; + } else { + var27 = 363845775; + } + break; + case -1721469519: + var28 = var13; + var27 = 63813640; + break; + case -1082038670: + default: + if (this.activeSource == null) { + var27 = -740596350; + } else { + var27 = -1781311008; + } + break; + case -740596350: + return; + case 63813640: + var15 = var28; + var16 = Mth.clamp(this.openValue, 0.0F, 1.0F); + var17 = ease(var16); + var18 = ease(Mth.clamp((var16 - 0.18F) / 0.82F, 0.0F, 1.0F)); + var19 = smoothRamp(var16, 0.42F, 1.0F); + var20 = var12 - 2.0F; + var21 = Mth.lerp(var17, var20 + 9.0F, var15 + 124.0F); + var22 = Math.min(Mth.lerp(var19, var20, var15), var21 - 9.0F); + var23 = var21 - var22; + var24 = Mth.lerp(var18, 22.0F, var11); + var25 = var6 + (var11 - var24) * 0.5F; + var26 = blobRadius(var23, var24, var18); + this.drawChrome(var1, var2, var22, var25, var23, var24, var26, var10); + this.drawSurfaceStack(var1, var2, var22, var25, var23, var24, var26, var10, var16); + this.drawContent(var1, var2, var15, var6, var11, var22, var25, var23, var24, var10); + return; + case 363845775: + var28 = Math.min(var12 + 15.0F, var14); + var27 = 63813640; + break; + case 1303234504: + return; + } + } + } + + private void drawChrome(asq var1, mv var2, float var3, float var4, float var5, float var6, arq var7, float var8) { + ast.shadow(var1, var3, var4, var5, var6, var7, nz.FLOATING, var8); + atb.drawShadow(var1.pose(), var3, var4, var5, var6, 10.0F * pk.shadowSoftScale(), var7, glowColor(var2).mulAlpha(var8 * 0.22F * pk.shadowAlphaScale())); + } + + private void drawSurfaceStack(asq var1, mv var2, float var3, float var4, float var5, float var6, arq var7, float var8, float var9) { + float var10 = 0.0F; + int var11 = -1776775307; + + while (true) { + switch (var11) { + case -1776775307: + default: + var1.drawSurface(aso.POPUP, var3, var4, var5, var6, var7, var2.getForegroundColor().mulAlpha(var8)); + atb.drawThemeBackdrop(var1.pose(), var3, var4, var5, var6, var7, var2.getBackdrop(), var2.getAccent(), var8); + if (var2.getBackdrop().isActive()) { + var11 = 873270790; + } else { + var11 = 1982576168; + } + break; + case -1270416355: + atb.drawAnimatedGloss(var1.pose(), var3, var4, var5, var6, var7, var8); + var11 = -717787991; + break; + case -717787991: + if (var9 < 1.0F) { + var11 = -535236251; + } else { + var11 = 1826731199; + } + break; + case -535236251: + var10 = Mth.lerp(var9, -0.35F, 1.35F); + atb.drawGlossSweep(var1.pose(), var3, var4, var5, var6, var7, var10, 0.26F, asu.WHITE.mulAlpha(var8 * 0.5F * (1.0F - var9))); + var11 = 1826731199; + break; + case -395512733: + if (vm.INSTANCE.isShimmer()) { + var11 = -1270416355; + } else { + var11 = -717787991; + } + break; + case 873270790: + atb.drawRoundedBorder(var1.pose(), var3, var4, var5, var6, pk.borderRim(), var7, var2.getAccent().corners().mulAlpha(var8)); + var11 = -395512733; + break; + case 1826731199: + return; + case 1982576168: + atb.drawRoundedBorder(var1.pose(), var3, var4, var5, var6, pk.borderRim(), var7, var2.getColor().mulAlpha(var8)); + var11 = -395512733; + } + } + } + + private void drawContent(asq var1, mv var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9, float var10) { + if (!(this.contentValue <= 0.004F)) { + oq var11 = oq.current(); + float var12 = padding(); + float var13 = asp.height(oe.LABEL_STRONG); + float var14 = var3 + var12; + float var15 = var4 + var12 + var13 + headerGap(); + float var16 = 124.0F - var12 * 2.0F; + float var17 = var14 + var16 * 0.5F; + float var18 = var15 + var16 * 0.5F; + float var19 = stagger(this.contentValue, 0.0F); + float var20 = stagger(this.contentValue, 0.06F); + float var21 = stagger(this.contentValue, 0.26F); + float var22 = stagger(this.contentValue, 0.0F); + float var23 = stagger(this.contentValue, 0.1F); + float var24 = stagger(this.contentValue, 0.14F); + var1.pushClipBounds(var6, var7, var6 + var8, var7 + var9); + float var25 = Mth.lerp(var19, 0.93F, 1.0F); + var1.pushMatrix(); + var1.pose().translate(var17, var18); + var1.pose().scale(var25, var25); + var1.pose().translate(-var17, -var18); + float var26 = var10 * var19; + var1.drawSurface( + aso.CONTROL, + var14, + var15, + var16, + var16, + stageRadius(), + var11.color(nx.SURFACE_SUNKEN).withAlpha(255).mulAlpha(var26) + ); + asu var27 = var2.getColor().mulAlpha(var26 * 0.16F); + var1.drawRoundedRect( + var14, + var15, + var16, + var16, + stageRadius(), + ary.of( + var27, + var27.withAlpha((604499447 | -604499447) + (604499447 & -604499447)), + var27, + var27.withAlpha((-997410583 | 997410583) + (-997410583 & 997410583)) + ) + ); + ast.border(var1, var14, var15, var16, var16, stageRadius(), var11.color(nx.OUTLINE).mulAlpha(var26)); + float var28 = (var16 - 10.0F) * var20; + if (var28 > 0.0F) { + asu var29 = var11.color(nx.ON_SURFACE).mulAlpha(var26 * 0.09F); + var1.drawRect(var17 - var28 * 0.5F, var18 - 0.25F, var28, 0.5F, var29); + var1.drawRect(var17 - 0.25F, var18 - var28 * 0.5F, 0.5F, var28, var29); + } + + var1.pushClipBounds(var14, var15, var14 + var16, var15 + var16); + this.activeSource.renderSidePreview(var1, var14, var15, var16, var16, var26, var21); + var1.popClip(); + var1.popMatrix(); + float var33 = var23; + float var30 = 3.5F * var33; + float var31 = var4 + var12 + (var13 - var30) * 0.5F; + float var32 = var14 + (3.5F - var30) * 0.5F; + if (var30 > 0.0F) { + var1.drawSurface(aso.ACCENT, var32, var31, var30, var30, asj.pill(var30), var2.getColor().mulAlpha(var10 * var23)); + } + + gt.beginBatch(); + asp.draw( + var1, + oe.LABEL_STRONG, + this.activeTitle, + var14 + 3.5F + 5.0F - 7.0F * (1.0F - var22), + var4 + var12, + var11.color(nx.ON_SURFACE).mulAlpha(var10 * var22) + ); + asp.drawRight( + var1, + oe.MICRO, + "Preview", + var14 + var16 + 7.0F * (1.0F - var24), + var4 + var12 + (var13 - asp.height(oe.MICRO)) * 0.5F, + var11.color(nx.ON_SURFACE_FAINT).mulAlpha(var10 * var24) + ); + gt.endBatch(); + var1.popClip(); + } + } + + private static arq blobRadius(float var0, float var1, float var2) { + float var3 = asj.of(oc.WINDOW); + float var4 = Math.min(var0, var1) * 0.5F; + float var5 = Math.min(Mth.lerp(var2, var4, var3), var4); + float var6 = Math.min(Mth.lerp(var2, var4 * 0.35F, var3), var4); + return new arq(var6, var5, var5, var6); + } + + private static asu glowColor(mv var0) { + asu var2 = null; + int var1 = 21207573; + + while (true) { + switch (var1) { + case -1620654925: + var2 = var0.getMiddleColor(); + var1 = -811851526; + break; + case -993109407: + var2 = var0.getColor(); + var1 = -811851526; + break; + case -811851526: + return var2; + case 21207573: + default: + if (var0.getBackdrop().isActive()) { + var1 = -1620654925; + } else { + var1 = -993109407; + } + } + } + } + + private static arq stageRadius() { + return asj.all(oc.CARD); + } + + private static float stagger(float var0, float var1) { + return Mth.clamp((var0 - var1) / (1.0F - var1), 0.0F, 1.0F); + } + + private static float ease(float var0) { + return var0 * var0 * (3.0F - 2.0F * var0); + } + + private static float smoothRamp(float var0, float var1, float var2) { + float var4 = 0.0F; + int var3 = -364025663; + + while (true) { + switch (var3) { + case -1933430632: + if (var0 >= var2) { + var3 = 871981362; + } else { + var3 = -1073543147; + } + break; + case -1905355672: + return ease(Mth.clamp((var0 - var1) / (var2 - var1), 0.0F, 1.0F)); + case -1073543147: + var4 = 0.0F; + var3 = -802656299; + break; + case -802656299: + return var4; + case -364025663: + default: + if (var2 <= var1) { + var3 = -1933430632; + } else { + var3 = -1905355672; + } + break; + case 871981362: + var4 = 1.0F; + var3 = -802656299; + } + } + } + + private static float padding() { + return oq.current().spacing(od.XL); + } + + private static float headerGap() { + return oq.current().spacing(od.LG); + } + + private static float panelHeight() { + float var0 = padding(); + return var0 * 2.0F + asp.height(oe.LABEL_STRONG) + headerGap() + (124.0F - var0 * 2.0F); + } +} diff --git a/src/main/java/defpackage/aav.java b/src/main/java/defpackage/aav.java new file mode 100644 index 0000000..8cedcc6 --- /dev/null +++ b/src/main/java/defpackage/aav.java @@ -0,0 +1,5 @@ +package defpackage; + +public interface aav { + void renderSidePreview(asq var1, float var2, float var3, float var4, float var5, float var6, float var7); +} diff --git a/src/main/java/defpackage/aaw.java b/src/main/java/defpackage/aaw.java new file mode 100644 index 0000000..48f3d2b --- /dev/null +++ b/src/main/java/defpackage/aaw.java @@ -0,0 +1,736 @@ +package defpackage; + +import java.util.Iterator; +import java.util.List; +import net.minecraft.util.Mth; + +public abstract class aaw extends aay { + protected static final int VISIBLE_OPTIONS = 6; + private static final float HEADER_HEIGHT = 13.0F; + private static final float OPTION_HEIGHT = 13.0F; + private static final float OPTION_PLATE_HEIGHT = 11.0F; + private static final float OPTION_PLATE_LIFT = 1.0F; + private static final float RIGHT_PADDING = 8.0F; + private static final float ROW_PADDING = 2.0F; + private static final float SCROLLBAR_LANE = 6.0F; + private static final float SCROLLBAR_WIDTH = 2.0F; + private static final float SCROLLBAR_RIGHT_INSET = 4.0F; + private static final float MIN_SCROLLBAR_HEIGHT = 10.0F; + private static final float TEXT_INSET = 6.0F; + private static final float WIDTH_PADDING = 14.0F; + private static final float WIDTH_DIVISOR = 2.2F; + private static final float LABEL_RIGHT_GAP = 2.0F; + private static final float TEXT_LIFT = 0.5F; + private static final float SHADOW_SOFTNESS = 10.0F; + private static final float SHADOW_ALPHA = 0.4F; + private static final float SHADOW_MIN_PROGRESS = 0.05F; + private static final float SURFACE_ALPHA = 0.5F; + private static final float CLASSIC_SURFACE_ALPHA = 0.06F; + private static final float CLASSIC_HEADER_ALPHA = 0.6F; + private static final float ARROW_RIGHT_INSET = 12.0F; + private static final float ARROW_TOP_INSET = 5.5F; + private static final float ARROW_PIVOT_BIAS = 1.0F; + private static final float ARROW_SWEEP_DEGREES = 180.0F; + private static final float CLIP_LEFT_BLEED = 1.0F; + private static final float CLIP_RIGHT_BLEED = 1.0F; + private static final float SCROLL_STEP = 15.0F; + private static final float ENTRY_SLIDE = 3.0F; + private static final int HEADER_FONT_SIZE = 7; + private static final int OPTION_FONT_SIZE = 6; + private static final int ICON_FONT_SIZE = 6; + private static final String ARROW_GLYPH = "Q"; + private final ct expandedAnimation = ct.layout(ob.MEDIUM, 0.0F); + private final ct scrollSpring = ct.layout(ob.FAST); + private ct[] optionHover = new ct[0]; + private boolean expanded; + private float maxOptionTextWidth = -1.0F; + private float scrollOffset; + private float targetScrollOffset; + private boolean draggingScrollbar; + private float headerX; + private float headerY; + private float headerWidth; + private float listBottom; + private float firstOptionY; + private boolean scrollbarVisible; + private float scrollbarLaneX; + private float scrollbarLaneY; + private float scrollbarLaneHeight; + + protected abstract List options(); + + protected abstract String optionName(T var1); + + protected abstract String optionDescription(T var1); + + protected abstract boolean isOptionActive(T var1); + + protected abstract void chooseOption(T var1); + + protected abstract String headerText(); + + protected abstract String iconGlyph(); + + protected abstract String settingName(); + + @Override + public void render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, int var10, int var11, mv var12) { + this.customHoverDescription = null; + List var13 = this.options(); + ge var14 = gl.MEDIUM.getFont(7.0F); + ge var15 = gl.MEDIUM.getFont(6.0F); + ge var16 = gl.ICONS.getFont(6.0F); + if (this.maxOptionTextWidth < 0.0F) { + this.maxOptionTextWidth = this.measureOptions(var13, var15); + } + + float var17 = this.expandedAnimation.update(this.expanded ? 1.0F : 0.0F); + int var18 = var13.size() > 6? 1: 0; + float var19 = this.maxOptionTextWidth + 14.0F + (var18 != 0 ? 6.0F : 0.0F); + float var20 = Math.max(var6 / 2.2F, var19); + float var21 = var4 + var6 - var20 - 8.0F; + int var22 = Math.min(var13.size(), (2111594689 ^ -2111594683) + ((2111594689 & -2111594683) << 1)); + float var23 = 13.0F + var17 * var22 * 13.0F; + this.headerX = var21; + this.headerY = var5; + this.headerWidth = var20; + this.listBottom = var5 + var23; + float var24 = this.beginRow(var1, var2, var3, var4, var5, var6, var7, var12, var23, 13.0F); + float var25 = (float)this.scaleMouseX(var2); + float var26 = (float)this.scaleMouseY(var3); + if (this.expanded && this.containsList(var25, var26) && aqg.mc.gui.screen() instanceof yc var27) { + var27.setHoveredSetting(this); + } + + float var31 = this.rowLabelX(var4); + int var32 = this.rowLabelColor(var10, var12); + var1.drawScrollingText( + var14, + this.settingName(), + var31, + var5 + (13.0F - var14.height()) / 2.0F + 0.5F, + var21 - var31 - 2.0F, + var32, + (boolean)((((-1479306850 ^ 1479306851) + ((-1479306850 & 1479306851) << 1)) + ) != 0)); + var1.drawText(var16, this.iconGlyph(), this.rowIconX(var4), var5 + (13.0F - var16.height()) / 2.0F + 0.5F, var9); + if (var17 > 0.05F) { + atb.drawShadow(var1.pose(), var21, var5, var20, var23, 10.0F, asj.all(oc.CONTROL), asu.getRGBWithAlpha(var9, var7 * 0.4F * var17)); + } + + float var29 = arx.classicFade(); + if (var29 > 0.0F) { + var1.drawRoundedRect(var21, var5, var20, var23, asj.all(oc.CONTROL), var12.getWhite().getRGBWithAlpha(0.06F * var7 * var29)); + } + + var1.drawSurface(aso.CONTROL, var21, var5, var20, var23, asj.all(oc.CONTROL), var12.getForegroundColor().getRGBWithAlpha(var7 * 0.5F)); + if (var29 > 0.0F) { + var1.drawRoundedRect(var21, var5, var20, 13.0F, headerRadius(var17), var12.getForegroundColor().getRGBWithAlpha(var7 * 0.6F * var29)); + } + + var1.drawText(var15, this.headerText(), var21 + 6.0F, var5 + (13.0F - var15.height()) / 2.0F + 0.5F, var10); + this.drawArrow(var1, var16, var21, var20, var5, var8, var7, var12); + float var30 = var21 + var20 + (var18 != 0 ? -6.0F : 1.0F); + var1.clipScroll(var21 - 1.0F, var5 + 13.0F, var30, this.listBottom, ars.edgeFade()); + if (var17 > 0.0F) { + this.drawOptions(var1, var15, var13, var25, var26, var21, var20, var5, var23, var17, var22, (boolean)((var18) != 0), var7, var9, var12); + } else { + this.firstOptionY = var5 + 13.0F; + } + + var1.popClip(); + this.drawScrollbar(var1, var13, var21, var20, var5, var23, var17, (boolean)((var18) != 0), var7, var12); + this.endRow(var1); + } + + private float measureOptions(List var1, ge var2) { + float var3 = 0.0F; + Iterator var4 = null; + Object var5 = null; + int var6 = 122241387; + + while (true) { + switch (var6) { + case -2082746609: + return var3; + case -905276865: + if (var4.hasNext()) { + var6 = 1151211804; + } else { + var6 = -2082746609; + } + break; + case 122241387: + default: + var3 = 0.0F; + var4 = var1.iterator(); + var6 = -905276865; + break; + case 1151211804: + var5 = var4.next(); + var3 = Math.max(var3, var2.width(this.optionName((T)var5))); + var6 = -905276865; + } + } + } + + private void drawArrow(asq var1, ge var2, float var3, float var4, float var5, float var6, float var7, mv var8) { + float var9 = var3 + var4 - 12.0F; + float var10 = var5 + 5.5F; + int var11 = asu.mixRGB(var8.getGray().getRGB(), var8.getGrayLight().getRGB(), var6, var7); + float var12 = var9 + var2.width("Q") / 2.0F - 1.0F; + float var13 = var10 + var2.height() / 2.0F - 1.0F; + var1.pushMatrix(); + var1.pose().translate(var12, var13); + var1.pose().rotate((float)Math.toRadians(180.0F * this.expandedAnimation.value())); + var1.pose().translate(-var12, -var13); + var1.drawText(var2, "Q", var9, var10, var11); + var1.popMatrix(); + } + + private void drawOptions( + asq var1, + ge var2, + List var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + int var11, + boolean var12, + float var13, + int var14, + mv var15 + ) { + float var16 = var8 + 13.0F; + float var17 = Math.max(0.0F, (var3.size() - ((1185464068 ^ -1185464062) + ((1185464068 & -1185464062) << 1))) * 13.0F); + this.targetScrollOffset = Mth.clamp(this.targetScrollOffset, 0.0F, var17); + this.scrollOffset = this.scrollSpring.update(this.targetScrollOffset); + float var18 = var6 + 2.0F; + float var19 = var7 - 4.0F - (var12 ? 6.0F : 0.0F); + float var20 = var16 - this.scrollOffset; + this.firstOptionY = var20; + this.ensureOptionSprings(var3.size()); + + for (int var21 = 0; var21 < var3.size(); var21++) { + Object var22 = var3.get(var21); + int var23 = var4 >= var6 && var4 <= var6 + var7 && var5 >= Math.max(var16, var20) && var5 <= Math.min(this.listBottom, var20 + 13.0F) + ? 1: 0; + float var24 = this.optionHover[var21].update(var23 != 0 ? 1.0F : 0.0F); + if (var20 + 13.0F > var16 && var20 < this.listBottom) { + float var25 = revealOf(var20, var16, var10, var11); + if (var24 > 0.001F) { + var1.drawSurface( + aso.ROW, var18, var20 + 1.0F, var19, 11.0F, asj.inner(oc.CONTROL, 2.0F), asa.plateColor(var15).getRGBWithAlpha(var13 * 0.55F * var25 * var24) + ); + } + + if (var23 != 0) { + String var26 = this.optionDescription((T)var22); + if (var26 != null && !var26.isEmpty()) { + this.customHoverDescription = var26; + } + } + + int var27 = this.isOptionActive((T)var22) ? var14 : var15.getGrayLight().getRGB(); + var1.drawText( + var2, + this.optionName((T)var22), + var6 + 6.0F + 3.0F * (1.0F - var25) + asa.iconShift(var24), + var20 + (13.0F - var2.height()) / 2.0F + 0.5F, + asu.getRGBWithAlpha(asa.liftText(var27, var15, var24), var25 * var13) + ); + } + + var20 += 13.0F; + } + } + + private void ensureOptionSprings(int var1) { + ct[] var2 = null; + int var3 = 0; + int var4 = 2126797393; + + while (true) { + switch (var4) { + case -1019260609: + var2[var3] = asa.spring(); + var3++; + var4 = -361687837; + break; + case -723033415: + var2 = new ct[var1]; + System.arraycopy( + this.optionHover, + 0, + var2, + 0, + this.optionHover.length + ); + var3 = this.optionHover.length; + var4 = -361687837; + break; + case -473786679: + return; + case -361687837: + if (var3 < var1) { + var4 = -1019260609; + } else { + var4 = 737805857; + } + break; + case 737805857: + this.optionHover = var2; + return; + case 2126797393: + default: + if (this.optionHover.length >= var1) { + var4 = -473786679; + } else { + var4 = -723033415; + } + } + } + } + + private static float revealOf(float var0, float var1, float var2, int var3) { + float var4 = (var0 - var1) / 13.0F; + return Mth.clamp(var2 * var3 - var4, 0.0F, 1.0F); + } + + private void drawScrollbar(asq var1, List var2, float var3, float var4, float var5, float var6, float var7, boolean var8, float var9, mv var10) { + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var17 = 0.0F; + int var16 = 1551994841; + + while (true) { + switch (var16) { + case -1606154917: + var12 = var17; + var13 = var6 - 13.0F; + var14 = Math.max(10.0F, 6.0F / var2.size() * var13); + var15 = var5 + 13.0F + var12 * (var13 - var14); + var1.drawSurface(aso.CONTROL, var3 + var4 - 4.0F, var15, 2.0F, var14, asj.pill(2.0F), var10.getForegroundLight().getRGBWithAlpha(var9 * var7)); + this.scrollbarVisible = (boolean)(((1)) != 0); + this.scrollbarLaneX = var3 + var4 - 6.0F; + this.scrollbarLaneY = var5 + 13.0F; + this.scrollbarLaneHeight = var13; + return; + case 258091995: + var17 = 0.0F; + var16 = -1606154917; + break; + case 538376977: + this.scrollbarVisible = (boolean)(((0)) != 0); + return; + case 1189681043: + var11 = (var2.size() - ((-1937128466 | 1937128472) + (-1937128466 & 1937128472))) * 13.0F; + if (var11 > 0.0F) { + var16 = 2052421963; + } else { + var16 = 258091995; + } + break; + case 1380131654: + if (!var8) { + var16 = 538376977; + } else { + var16 = 1189681043; + } + break; + case 1551994841: + default: + if (!(var7 <= 0.0F)) { + var16 = 1380131654; + } else { + var16 = 538376977; + } + break; + case 2052421963: + var17 = this.scrollOffset / var11; + var16 = -1606154917; + } + } + } + + private static arq headerRadius(float var0) { + float var1 = 0.0F; + float var2 = 0.0F; + int var3 = -519876450; + + while (true) { + switch (var3) { + case -1032000762: + return asj.all(oc.CONTROL); + case -921397151: + var1 = asj.of(oc.CONTROL); + var2 = var1 * (1.0F - var0); + return new arq(var1, var1, var2, var2); + case -823888656: + return asj.top(oc.CONTROL); + case -519876450: + default: + if (var0 <= 0.0F) { + var3 = -1032000762; + } else { + var3 = 2076444554; + } + break; + case 2076444554: + if (var0 >= 1.0F) { + var3 = -823888656; + } else { + var3 = -921397151; + } + } + } + } + + private boolean containsHeader(double var1, double var3) { + int var6 = 0; + int var5 = 982069256; + + while (true) { + switch (var5) { + case -2008360101: + if (var3 >= this.headerY) { + var5 = -642297674; + } else { + var5 = -1711812396; + } + break; + case -1711812396: + var6 = 0; + var5 = -1621909502; + break; + case -1621909502: + return (boolean)((var6) != 0); + case -642297674: + if (var3 <= this.headerY + 13.0F) { + var5 = 1137935331; + } else { + var5 = -1711812396; + } + break; + case 982069256: + default: + if (var1 >= this.headerX) { + var5 = 1997043630; + } else { + var5 = -1711812396; + } + break; + case 1137935331: + var6 = 1; + var5 = -1621909502; + break; + case 1997043630: + if (var1 <= this.headerX + this.headerWidth) { + var5 = -2008360101; + } else { + var5 = -1711812396; + } + } + } + } + + private boolean containsList(double var1, double var3) { + int var6 = 0; + int var5 = -503646439; + + while (true) { + switch (var5) { + case -1811308372: + var6 = 0; + var5 = 1472776528; + break; + case -570921088: + if (var3 >= this.headerY) { + var5 = 326668314; + } else { + var5 = -1811308372; + } + break; + case -503646439: + default: + if (var1 >= this.headerX) { + var5 = 301911902; + } else { + var5 = -1811308372; + } + break; + case 301911902: + if (var1 <= this.headerX + this.headerWidth) { + var5 = -570921088; + } else { + var5 = -1811308372; + } + break; + case 326668314: + if (var3 <= this.listBottom) { + var5 = 1290379357; + } else { + var5 = -1811308372; + } + break; + case 1290379357: + var6 = 1; + var5 = 1472776528; + break; + case 1472776528: + return (boolean)((var6) != 0); + } + } + } + + private boolean containsScrollbar(double var1, double var3) { + int var6 = 0; + int var5 = -2063467257; + + while (true) { + switch (var5) { + case -2063467257: + default: + if (this.scrollbarVisible) { + var5 = 1015761045; + } else { + var5 = 1889042028; + } + break; + case -309818538: + if (var3 <= this.scrollbarLaneY + this.scrollbarLaneHeight) { + var5 = 594199393; + } else { + var5 = 1889042028; + } + break; + case 91326858: + if (var1 <= this.scrollbarLaneX + 6.0F) { + var5 = 636348000; + } else { + var5 = 1889042028; + } + break; + case 325569243: + return (boolean)((var6) != 0); + case 594199393: + var6 = 1; + var5 = 325569243; + break; + case 636348000: + if (var3 >= this.scrollbarLaneY) { + var5 = -309818538; + } else { + var5 = 1889042028; + } + break; + case 1015761045: + if (var1 >= this.scrollbarLaneX) { + var5 = 91326858; + } else { + var5 = 1889042028; + } + break; + case 1889042028: + var6 = 0; + var5 = 325569243; + } + } + } + + private T optionAt(double var1) { + List var3 = null; + int var4 = 0; + int var5 = -282755079; + + while (true) { + switch (var5) { + case -1567017521: + return (T)var3.get(var4); + case -1470988910: + return null; + case -282755079: + default: + var3 = this.options(); + var4 = (int)Math.floor((var1 - this.firstOptionY) / 13.0); + if (var4 >= 0) { + var5 = -36132643; + } else { + var5 = -1470988910; + } + break; + case -36132643: + if (var4 >= var3.size()) { + var5 = -1470988910; + } else { + var5 = -1567017521; + } + } + } + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = this.scaleMouseX(var1); + double var8 = this.scaleMouseY(var3); + if ((var5 == apf.RIGHT || var5 == apf.LEFT) && this.containsHeader(var6, var8)) { + this.expanded = (boolean)(((!this.expanded + ? 1: (2084964584 ^ -2084964584) + ((2084964584 & -2084964584) << 1))) != 0); + this.playToggleSound(); + } else if (this.expanded && var5 == apf.LEFT) { + if (this.containsScrollbar(var6, var8)) { + this.draggingScrollbar = (boolean)(((1)) != 0); + } else if (!(var8 <= this.headerY + 13.0F) && this.containsList(var6, var8)) { + Object var10 = this.optionAt(var8); + if (var10 != null) { + this.chooseOption((T)var10); + } + } + } + } + + @Override + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + double var9 = 0.0; + double var11 = 0.0; + int var13 = -1871524778; + + while (true) { + switch (var13) { + case -1871524778: + default: + var9 = this.scaleMouseX(var1); + var11 = this.scaleMouseY(var3); + if (this.expanded) { + var13 = -1536372133; + } else { + var13 = -946798241; + } + break; + case -1536372133: + if (!(var11 <= this.headerY + 13.0F)) { + var13 = 221733610; + } else { + var13 = -946798241; + } + break; + case -946798241: + return (boolean)(((0)) != 0); + case 221733610: + if (!this.containsList(var9, var11)) { + var13 = -946798241; + } else { + var13 = 1981308500; + } + break; + case 1981308500: + this.targetScrollOffset = Mth.clamp((float)(this.targetScrollOffset - var7 * 15.0), 0.0F, this.maxScroll()); + return (boolean)(((1)) != 0); + } + } + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + int var6 = 1438970225; + + while (true) { + switch (var6) { + case 1119356311: + this.draggingScrollbar = (boolean)(((0)) != 0); + var6 = 1304599180; + break; + case 1304599180: + return; + case 1438970225: + default: + if (var5 == apf.LEFT) { + var6 = 1119356311; + } else { + var6 = 1304599180; + } + } + } + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = 1512494438; + + while (true) { + switch (var14) { + case -1641837948: + return; + case -1558716490: + if (this.expanded) { + var14 = 1357350990; + } else { + var14 = -1641837948; + } + break; + case 673515938: + var10 = Math.max(10.0F, 6.0F / this.options().size() * this.scrollbarLaneHeight); + var11 = this.scrollbarLaneY + var10 / 2.0F; + var12 = this.scrollbarLaneY + this.scrollbarLaneHeight - var10 / 2.0F; + var13 = Mth.clamp((float)(this.scaleMouseY(var3) - var11) / (var12 - var11), 0.0F, 1.0F); + this.targetScrollOffset = var13 * this.maxScroll(); + return; + case 1357350990: + if (!this.scrollbarVisible) { + var14 = -1641837948; + } else { + var14 = 673515938; + } + break; + case 1512494438: + default: + if (this.draggingScrollbar) { + var14 = -1558716490; + } else { + var14 = -1641837948; + } + } + } + } + + protected final boolean isExpanded() { + return this.expanded; + } + + protected void scrollToOption(int var1) { + float var2 = Math.max( + 0, + var1 - ((-1402285380 | 1402285386) + (-1402285380 & 1402285386)) + (-555858899 | 555858900) + (-555858899 & 555858900) + ) + * 13.0F; + this.targetScrollOffset = Mth.clamp(var2, 0.0F, this.maxScroll()); + } + + private float maxScroll() { + return Math.max(0.0F, (this.options().size() - ((1913122306 | -1913122300) + (1913122306 & -1913122300))) * 13.0F); + } + + protected abstract void playToggleSound(); + + @Override + public float getWidth() { + return 0.0F; + } + + @Override + public float getHeight() { + int var1 = Math.min(this.options().size(), (1361569839 | -1361569833) + (1361569839 & -1361569833)); + return 13.0F + this.expandedAnimation.value() * var1 * 13.0F; + } +} diff --git a/src/main/java/defpackage/aax.java b/src/main/java/defpackage/aax.java new file mode 100644 index 0000000..87d99d7 --- /dev/null +++ b/src/main/java/defpackage/aax.java @@ -0,0 +1,89 @@ +package defpackage; + + +public abstract class aax extends aay { + protected final arr bounds; + protected ct animationScale = ct.layout(ob.MEDIUM, 0.01F); + + protected aax(arr var1) { + this.bounds = var1; + } + + public double toPopupX(double var1) { + float var3 = 0.0F; + float var4 = 0.0F; + int var5 = 427329988; + + while (true) { + switch (var5) { + case 404147678: + var4 = this.bounds.getX(); + return var4 + (var1 - var4) / var3; + case 427329988: + default: + var3 = this.animationScale.value(); + if (var3 <= 0.0F) { + var5 = 922609887; + } else { + var5 = 404147678; + } + break; + case 922609887: + return var1; + } + } + } + + public double toPopupY(double var1) { + float var3 = 0.0F; + float var4 = 0.0F; + int var5 = -1892196975; + + while (true) { + switch (var5) { + case -1892196975: + default: + var3 = this.animationScale.value(); + if (var3 <= 0.0F) { + var5 = 503155799; + } else { + var5 = 1874709965; + } + break; + case 503155799: + return var1; + case 1874709965: + var4 = this.bounds.getY() + this.bounds.getHeight() / 2.0F; + return var4 + (var1 - var4) / var3; + } + } + } + + public boolean containsCursor(double var1, double var3) { + return this.bounds.contains(this.toPopupX(var1), this.toPopupY(var3)); + } + + public abstract void render(asq var1, float var2, float var3, float var4, mv var5); + + @Override + public final void render( + asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, int var10, int var11, mv var12 + ) { + } + + @Override + public abstract boolean charTyped(char var1, int var2); + + @Override + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + return (boolean)(((0)) != 0); + } + + public arr getBounds() { + return this.bounds; + } + + public ct getAnimationScale() { + return this.animationScale; + } +} diff --git a/src/main/java/defpackage/aay.java b/src/main/java/defpackage/aay.java new file mode 100644 index 0000000..1ecd6e5 --- /dev/null +++ b/src/main/java/defpackage/aay.java @@ -0,0 +1,405 @@ +package defpackage; + +import net.minecraft.util.Mth; + +public abstract class aay { + protected static final float ROW_PAD = 8.0F; + protected static final float LABEL_INDENT = 10.0F; + protected static final float LABEL_GAP = 2.0F; + protected static final float ICON_HOVER_SHIFT = 1.2F; + private static final float HOVER_INSET = 4.0F; + private static final float HOVER_TOP_BLEED = 3.5F; + private static final float HOVER_EXTRA_HEIGHT = 7.0F; + private static final float HOVER_PLATE_ALPHA = 0.55F; + private static final float MIN_HOVER = 0.001F; + private static final float POPUP_WINDOW_MARGIN = 4.0F; + private static final float LIST_POPUP_GAP = 6.0F; + protected static final float ICON_FONT_SIZE = 6.0F; + protected static final float BASELINE_NUDGE = 0.5F; + protected static final float CONTROL_GAP = 6.0F; + protected float height; + protected float lastCx = 0.0F; + protected float lastCy = 0.0F; + protected float lastScale = 1.0F; + protected String customHoverDescription = null; + protected final ct hoverAnimation = asa.spring(); + protected float hoverValue; + protected float hoverTransform; + + private static arq HOVER_RADIUS() { + return asj.inner(oc.PANEL, 4.0F); + } + + protected double scaleMouseX(double var1) { + int var3 = 1274030804; + + while (true) { + switch (var3) { + case -1409736668: + return (var1 - this.lastCx) / this.lastScale + this.lastCx; + case 244607692: + if (this.lastScale == 0.0F) { + var3 = 1728667842; + } else { + var3 = -1409736668; + } + break; + case 1274030804: + default: + if (this.lastScale != 1.0F) { + var3 = 244607692; + } else { + var3 = 1728667842; + } + break; + case 1728667842: + return var1; + } + } + } + + protected double scaleMouseY(double var1) { + int var3 = -30927099; + + while (true) { + switch (var3) { + case -1534063928: + if (this.lastScale == 0.0F) { + var3 = 1248707701; + } else { + var3 = 1337577554; + } + break; + case -30927099: + default: + if (this.lastScale != 1.0F) { + var3 = -1534063928; + } else { + var3 = 1248707701; + } + break; + case 1248707701: + return var1; + case 1337577554: + return (var1 - this.lastCy) / this.lastScale + this.lastCy; + } + } + } + + protected float rowHeight() { + return this.getHeight(); + } + + protected boolean isRowActive() { + return (boolean)(((0)) != 0); + } + + protected float beginRow(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, mv var8) { + return this.beginRow(var1, var2, var3, var4, var5, var6, var7, var8, this.rowHeight(), this.rowHeight()); + } + + protected float beginRow(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, mv var8, float var9, float var10) { + float var11 = var9; + boolean var12 = aqj.isHovered(this.scaleMouseX(var2), this.scaleMouseY(var3), var4, var5, var6, var11); + if (var12 && aqg.mc.gui.screen() instanceof yc var13) { + var13.setHoveredSetting(this); + } + + var12 |= this.isRowActive(); + this.hoverAnimation.animateTo(var12 ? 1.0F : 0.0F); + this.hoverTransform = this.hoverAnimation.update(); + this.hoverValue = Mth.clamp(this.hoverTransform, 0.0F, 1.0F); + this.drawHoverPlate(var1, var4, var5, var6, var10, var7, var8); + if (this.hoverValue > 0.0F) { + var1.pushMatrix(); + this.lastCx = var4 + var6 / 2.0F; + this.lastCy = var5 + var11 / 2.0F; + this.lastScale = 1.0F + asa.controlAmount(var6) * this.hoverTransform; + var1.pose().translate(this.lastCx, this.lastCy); + var1.pose().scale(this.lastScale, this.lastScale); + var1.pose().translate(-this.lastCx, -this.lastCy); + } else { + this.lastScale = 1.0F; + } + + return this.hoverValue; + } + + protected float beginGroupRow(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, mv var8, float var9) { + return this.beginRow(var1, var2, var3, var4, var5, var6, var7, var8, var9, var9); + } + + protected float rowToScreenX(float var1) { + return (var1 - this.lastCx) * this.lastScale + this.lastCx; + } + + protected float rowToScreenY(float var1) { + return (var1 - this.lastCy) * this.lastScale + this.lastCy; + } + + private void drawHoverPlate(asq var1, float var2, float var3, float var4, float var5, float var6, mv var7) { + int var8 = -1103691989; + + while (true) { + switch (var8) { + case -1483728161: + var1.drawSurface( + aso.ROW, + var2 + 4.0F, + var3 - 3.5F, + var4 - 8.0F, + var5 + 7.0F, + HOVER_RADIUS(), + asa.plateColor(var7).getRGBWithAlpha(var6 * 0.55F * this.hoverValue) + ); + return; + case -1103691989: + default: + if (this.hoverValue <= 0.001F) { + var8 = 1946903397; + } else { + var8 = -1483728161; + } + break; + case 1946903397: + return; + } + } + } + + protected void endRow(asq var1) { + int var2 = 1821684296; + + while (true) { + switch (var2) { + case 453795564: + var1.popMatrix(); + var2 = 1509965643; + break; + case 1509965643: + return; + case 1821684296: + default: + if (this.hoverValue > 0.0F) { + var2 = 453795564; + } else { + var2 = 1509965643; + } + } + } + } + + protected float rowInset() { + return asj.contentInset(oc.PANEL, 8.0F); + } + + protected float rowIconX(float var1) { + return var1 + this.rowInset() + this.hoverTransform * 1.2F; + } + + protected float rowLabelX(float var1) { + return var1 + this.rowInset() + 10.0F; + } + + protected float rowCenterY(float var1) { + return var1 + this.rowHeight() / 2.0F; + } + + protected float rowTextY(float var1, ge var2) { + return this.rowCenterY(var1) - var2.height() / 2.0F + 0.5F; + } + + protected int rowLabelColor(int var1, mv var2) { + return asa.liftText(var1, var2, this.hoverValue); + } + + protected ge rowLabelFont() { + return asp.font(oe.BODY); + } + + protected ge rowIconFont() { + return gl.ICONS.getFont(6.0F); + } + + protected void drawRowIcon(asq var1, String var2, float var3, float var4, int var5) { + ge var6 = this.rowIconFont(); + var1.drawText(var6, var2, this.rowIconX(var3), this.rowCenterY(var4) - var6.height() / 2.0F + 0.5F, var5); + } + + protected float rowTrailingX(float var1, float var2, float var3) { + return var1 + var2 - this.rowInset() - var3; + } + + protected float rowLabelLimit(float var1, float var2, float var3) { + return Math.max(0.0F, var2 - var3 - this.rowLabelX(var1)); + } + + protected void anchorPopup(arr var1, float var2, float var3, float var4) { + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + yc var9 = null; + Object var10 = null; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = 895604995; + + while (true) { + switch (var15) { + case -1374358981: + var7 = var2 - var4 - var5; + var15 = -686064973; + break; + case -686064973: + var7 = Math.max(var11, Math.min(var7, var12 - var5)); + var8 = Math.max(var13, Math.min(var8, var14 - var6)); + var15 = 472323748; + break; + case -643985563: + var9 = (yc)var10; + var10 = var9.getLayout(); + var11 = ((xv)var10).getWindowX() + 4.0F; + var12 = ((xv)var10).getWindowX() + ((xv)var10).getWindowWidth() - 4.0F; + var13 = ((xv)var10).getWindowY() + 4.0F; + var14 = ((xv)var10).getWindowY() + ((xv)var10).getWindowHeight() - 4.0F; + if (var7 + var5 > var12) { + var15 = -1374358981; + } else { + var15 = -686064973; + } + break; + case 472323748: + var1.setX(var7); + var1.setY(var8); + return; + case 895604995: + default: + var5 = var1.getWidth(); + var6 = var1.getHeight(); + var7 = var2 + var4; + var8 = var3 - var6 / 2.0F; + var10 = aqg.mc.gui.screen(); + if (var10 instanceof yc) { + var15 = -643985563; + } else { + var15 = 472323748; + } + } + } + } + + protected rq listPopupContext(float var1, float var2) { + return (var3, var4) -> { + if (aqg.mc.gui.screen() instanceof yc var5) { + for (aax var7 : var5.getPopupSettings()) { + if (var7 instanceof abu) { + var7.getAnimationScale().animateTo(0.0F); + } + } + + arr var9 = new arr(0.0F, 0.0F, 128.0F, abu.heightFor(var4)); + this.anchorPopup(var9, var1, var2, 6.0F); + var5.addPopupMenuSetting(new abu(var9, var3, var4)); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playDropdown(); + } + } + }; + } + + protected void drawRowLabel(asq var1, String var2, float var3, float var4, float var5, int var6, mv var7) { + ge var8 = this.rowLabelFont(); + var1.drawScrollingText( + var8, + var2, + this.rowLabelX(var3), + this.rowTextY(var4, var8), + var5, + this.rowLabelColor(var6, var7), + (boolean)((((1507443825 | -1507443824) + (1507443825 & -1507443824)) + ) != 0)); + } + + public abstract void render( + asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, int var10, int var11, mv var12 + ); + + public abstract void onMouseClicked(double var1, double var3, apf var5); + + public abstract float getWidth(); + + public abstract float getHeight(); + + public abstract boolean isVisible(); + + public boolean keyPressed(int var1, int var2, int var3) { + return (boolean)(((0)) != 0); + } + + public boolean charTyped(char var1, int var2) { + return (boolean)(((0)) != 0); + } + + public void onMouseReleased(double var1, double var3, apf var5) { + } + + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + } + + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + return (boolean)(((0)) != 0); + } + + public ro getSetting() { + return null; + } + + public String getHoverDescription(double var1, double var3) { + String var5 = null; + int var6 = -1127829593; + + while (true) { + switch (var6) { + case -2121696939: + return null; + case -1127829593: + default: + if (this.customHoverDescription != null) { + var6 = -673416806; + } else { + var6 = 11293827; + } + break; + case -1107018046: + var5 = this.getSetting().getDescription(); + if (var5 != null) { + var6 = -712993393; + } else { + var6 = -2121696939; + } + break; + case -712993393: + if (!var5.isEmpty()) { + var6 = 758683531; + } else { + var6 = -2121696939; + } + break; + case -673416806: + return this.customHoverDescription; + case 11293827: + if (this.getSetting() != null) { + var6 = -1107018046; + } else { + var6 = -2121696939; + } + break; + case 758683531: + return var5; + } + } + } +} diff --git a/src/main/java/defpackage/aaz.java b/src/main/java/defpackage/aaz.java new file mode 100644 index 0000000..9ef68d2 --- /dev/null +++ b/src/main/java/defpackage/aaz.java @@ -0,0 +1,152 @@ +package defpackage; + +public final class aaz { + private static final float BASE_ALPHA = 0.5F; + private static final float BASE_MIX = 0.5F; + private static final float HOVER_FILL_ALPHA = 0.16F; + private static final float HOVER_STROKE_ALPHA = 0.32F; + private static final float SELECTION_BORDER = 1.0F; + private static final float SELECTION_GLOW_SPREAD = 0.5F; + private static final float SELECTION_GLOW_SOFTNESS = 5.0F; + private static final float SELECTION_GLOW_ALPHA = 0.3F; + private static final float DISC_FILL_ALPHA = 0.12F; + private static final float RING_WIDTH = 1.0F; + private static final float FULL_RING = 1.0F; + private static final float HALF = 0.5F; + + private aaz() { + } + + public static arq radius() { + return asj.all(oc.CONTROL); + } + + public static void base(asq var0, float var1, float var2, float var3, float var4, float var5, mv var6) { + int var7 = asu.mixRGB(var6.getWhite().getRGB(), var6.getForegroundColor().getRGB(), 0.5F, var5 * 0.5F); + var0.drawSurface(aso.CONTROL, var1, var2, var3, var4, radius(), var7); + } + + public static void hover(asq var0, float var1, float var2, float var3, float var4, float var5, float var6, mv var7) { + float var8 = 0.0F; + int var9 = -1510353711; + + while (true) { + switch (var9) { + case -1510353711: + default: + var8 = var5 * var6; + if (var8 <= 0.001F) { + var9 = 1981934654; + } else { + var9 = 1542119602; + } + break; + case 1542119602: + var0.drawSurface(aso.ROW, var1, var2, var3, var4, radius(), var7.getWhite().getRGBWithAlpha(var8 * 0.16F)); + var0.drawRoundedBorder(var1, var2, var3, var4, pk.borderHairline(), radius(), var7.getWhite().getRGBWithAlpha(var8 * 0.32F)); + return; + case 1981934654: + return; + } + } + } + + public static void selectionGlow(asq var0, float var1, float var2, float var3, float var4, float var5, float var6, int var7) { + float var8 = 0.0F; + int var9 = -592838434; + + while (true) { + switch (var9) { + case -592838434: + default: + var8 = var5 * var6; + if (var8 <= 0.001F) { + var9 = -525095251; + } else { + var9 = 1846949171; + } + break; + case -525095251: + return; + case 1846949171: + atb.drawShadow(var0.pose(), var1 - 0.5F, var2 - 0.5F, var3 + 1.0F, var4 + 1.0F, 5.0F, radius(), asu.getRGBWithAlpha(var7, var8 * 0.3F)); + return; + } + } + } + + public static void selectionBorder(asq var0, float var1, float var2, float var3, float var4, float var5, float var6, int var7) { + float var8 = 0.0F; + int var9 = 1853644230; + + while (true) { + switch (var9) { + case -1796667401: + return; + case 1853644230: + default: + var8 = var5 * var6; + if (var8 <= 0.001F) { + var9 = -1796667401; + } else { + var9 = 2095226084; + } + break; + case 2095226084: + var0.drawRoundedBorder(var1, var2, var3, var4, 1.0F, radius(), asu.getRGBWithAlpha(var7, var8)); + return; + } + } + } + + public static void hoverDisc(asq var0, float var1, float var2, float var3, float var4, float var5, mv var6) { + float var7 = 0.0F; + int var8 = -573742147; + + while (true) { + switch (var8) { + case -573742147: + default: + var7 = var4 * var5; + if (var7 <= 0.001F) { + var8 = 2104480812; + } else { + var8 = 415991589; + } + break; + case 415991589: + var0.drawCoverageRect(var1 - var3, var2 - var3, var3 * 2.0F, var3 * 2.0F, var3, var6.getWhite().getRGBWithAlpha(var7 * 0.12F)); + return; + case 2104480812: + return; + } + } + } + + public static void selectionRing(asq var0, float var1, float var2, float var3, float var4, float var5, int var6) { + float var7 = 0.0F; + int var8 = 1843127540; + + while (true) { + switch (var8) { + case -1325055585: + var0.drawRing(var1, var2, var3, 1.0F, 1.0F, asu.getRGBWithAlpha(var6, var7)); + return; + case -10493129: + return; + case 1843127540: + } + + var7 = var4 * var5; + if (var7 <= 0.001F) { + var8 = -10493129; + } else { + var8 = -1325055585; + } + } + } + + public static float center(float var0, float var1) { + return var0 + var1 * 0.5F; + } +} diff --git a/src/main/java/defpackage/ab.java b/src/main/java/defpackage/ab.java new file mode 100644 index 0000000..e8285fe --- /dev/null +++ b/src/main/java/defpackage/ab.java @@ -0,0 +1,8 @@ +package defpackage; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +public @interface ab { +} diff --git a/src/main/java/defpackage/aba.java b/src/main/java/defpackage/aba.java new file mode 100644 index 0000000..adc2cff --- /dev/null +++ b/src/main/java/defpackage/aba.java @@ -0,0 +1,81 @@ +package defpackage; + +public final class aba { + private static final float HIDDEN = 0.0F; + private static final float SHOWN = 1.0F; + private final ct x; + private final ct y; + private final ct presence; + private boolean placed; + + public aba(ob var1, ob var2) { + this.x = ct.layout(var1, 0.0F); + this.y = ct.layout(var1, 0.0F); + this.presence = ct.layout(var2, 0.0F); + } + + public static aba hover() { + return new aba(ob.FAST, ob.FAST); + } + + public static aba selection() { + return new aba(ob.SETTLED, ob.MEDIUM); + } + + public void update(boolean var1, float var2, float var3) { + if (var1) { + if (this.placed && !(this.presence.value() <= 0.001F)) { + this.x.animateTo(var2); + this.y.animateTo(var3); + } else { + this.x.jumpTo(var2); + this.y.jumpTo(var3); + this.placed = (boolean)(((1)) != 0); + } + } + + this.x.update(); + this.y.update(); + this.presence.update(var1 ? 1.0F : 0.0F); + } + + public float x() { + return this.x.value(); + } + + public float y() { + return this.y.value(); + } + + public float presence() { + return Math.max(0.0F, Math.min(1.0F, this.presence.value())); + } + + public boolean visible() { + int var2 = 0; + int var1 = -474095299; + + while (true) { + switch (var1) { + case -474095299: + default: + if (this.presence() > 0.001F) { + var1 = 1779431073; + } else { + var1 = 299591229; + } + break; + case 299591229: + var2 = 0; + var1 = 2120843592; + break; + case 1779431073: + var2 = 1; + var1 = 2120843592; + break; + case 2120843592: + return (boolean)((var2) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/abb.java b/src/main/java/defpackage/abb.java new file mode 100644 index 0000000..689bef8 --- /dev/null +++ b/src/main/java/defpackage/abb.java @@ -0,0 +1,80 @@ +package defpackage; + +public final class abb { + public static final float GAP = 3.0F; + + private abb() { + } + + public static int perRow(float var0, int var1, float var2) { + int var3 = Math.max(1, var1); + int var4 = (int)Math.floor((var0 + 3.0F) / (var2 + 3.0F)); + return Math.max(1, Math.min(var3, var4)); + } + + public static float tileWidth(float var0, int var1) { + return (var0 - 3.0F * (var1 - ((987950446 | -987950445) + (987950446 & -987950445)))) / var1; + } + + public static int rows(int var0, int var1) { + int var3 = 0; + int var2 = 1878558370; + + while (true) { + switch (var2) { + case -1837690204: + var3 = 0; + var2 = 416313146; + break; + case -331456771: + var3 = (var0 + var1 - ((-792033643 ^ 792033644) + ((-792033643 & 792033644) << 1))) / var1; + var2 = 416313146; + break; + case 416313146: + return var3; + case 1878558370: + default: + if (var0 <= 0) { + var2 = -1837690204; + } else { + var2 = -331456771; + } + } + } + } + + public static float height(int var0, float var1) { + float var3 = 0.0F; + int var2 = -608447697; + + while (true) { + switch (var2) { + case -2116522330: + return var3; + case -608447697: + default: + if (var0 <= 0) { + var2 = 66083644; + } else { + var2 = -460739789; + } + break; + case -460739789: + var3 = var0 * var1 + (var0 - ((1806337461 | -1806337460) + (1806337461 & -1806337460))) * 3.0F; + var2 = -2116522330; + break; + case 66083644: + var3 = 0.0F; + var2 = -2116522330; + } + } + } + + public static float tileX(float var0, int var1, int var2, float var3) { + return var0 + var1 % var2 * (var3 + 3.0F); + } + + public static float tileY(float var0, int var1, int var2, float var3) { + return var0 + var1 / var2 * (var3 + 3.0F); + } +} diff --git a/src/main/java/defpackage/abc.java b/src/main/java/defpackage/abc.java new file mode 100644 index 0000000..19dd01f --- /dev/null +++ b/src/main/java/defpackage/abc.java @@ -0,0 +1,41 @@ +package defpackage; + +import java.util.Objects; + +public final class abc { + private static final float VISIBLE = 1.0F; + private static final float HIDDEN = 0.0F; + private static final float SWAP_THRESHOLD = 0.02F; + private static final float VALUE_GAP = 6.0F; + private static final float MAX_VALUE_SHARE = 0.5F; + private final String name; + private final ct fade = ct.layout(ob.FAST, 0.0F); + private String shown; + private String pending; + + public abc(String var1) { + this.name = var1; + } + + public void setValue(String var1) { + this.pending = var1; + } + + public void draw(asq var1, ge var2, float var3, float var4, float var5, int var6, int var7) { + int var8 = !Objects.equals(this.shown, this.pending) + ? 1: 0; + float var9 = this.fade.update(var8 == 0 && this.shown != null ? 1.0F : 0.0F); + if (var8 != 0 && var9 <= 0.02F) { + this.shown = this.pending; + } + + float var10 = this.shown == null ? 0.0F : Math.min(var2.width(this.shown), Math.max(0.0F, var5 - var3) * 0.5F); + float var11 = Math.max(0.0F, var5 - var3 - (var10 > 0.0F ? var10 + 6.0F : 0.0F)); + var1.drawScrollingText(var2, this.name, var3, var4, var11, var6, (boolean)((((461404110 ^ -461404109) + ((461404110 & -461404109) << 1))) != 0)); + if (this.shown != null && var9 > 0.02F) { + var1.drawScrollingText( + var2, this.shown, var5 - var10, var4, var10, asu.getRGBWithAlpha(var7, var9), (boolean)((((-1096533707 | 1096533708) + (-1096533707 & 1096533708)) + ) != 0)); + } + } +} diff --git a/src/main/java/defpackage/abd.java b/src/main/java/defpackage/abd.java new file mode 100644 index 0000000..29fb4f9 --- /dev/null +++ b/src/main/java/defpackage/abd.java @@ -0,0 +1,217 @@ +package defpackage; + +import java.util.List; + +public class abd extends aay { + private static final String ICON_GLYPH = "K"; + private static final float LABEL_ROW_HEIGHT = 8.0F; + private static final float BUTTONS_TOP_GAP = 4.0F; + private static final float BUTTON_HEIGHT = 15.0F; + private static final float BOTTOM_PAD = 1.0F; + private static final float HALF = 0.5F; + private static final int NO_BUTTON = -1; + private final rt setting; + private final abc label; + private final ase hovers = new ase(); + private final aba hoverGlide = aba.hover(); + private final float[] buttonX; + private final float[] buttonY; + private float buttonWidth; + private int hoveredIndex = -1; + private boolean overLabel; + + public abd(rt var1) { + this.setting = var1; + this.label = new abc(var1.getName()); + this.buttonX = new float[var1.actions().size()]; + this.buttonY = new float[var1.actions().size()]; + } + + @Override + protected float rowHeight() { + return 8.0F; + } + + @Override + public void render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, int var10, int var11, mv var12) { + this.beginGroupRow(var1, var2, var3, var4, var5, var6, var7, var12, this.getHeight()); + float var13 = (float)this.scaleMouseX(var2); + float var14 = (float)this.scaleMouseY(var3); + this.overLabel = aqj.isHovered(var13, var14, var4, var5, var6, 8.0); + List var15 = this.setting.actions(); + float var16 = this.rowInset(); + float var17 = var4 + var16; + float var18 = var6 - var16 * 2.0F; + int var19 = this.setting.columns(); + this.buttonWidth = abb.tileWidth(var18, var19); + float var20 = var5 + 8.0F + 4.0F; + ge var21 = this.rowLabelFont(); + int var22 = -1; + + for (int var23 = 0; var23 < var15.size(); var23++) { + float var24 = abb.tileX(var17, var23, var19, this.buttonWidth); + float var25 = abb.tileY(var20, var23, var19, 15.0F); + this.buttonX[var23] = var24; + this.buttonY[var23] = var25; + if (var22 == (597914508 ^ -597914509) + ((597914508 & -597914509) << 1) && aqj.isHovered(var13, var14, var24, var25, this.buttonWidth, 15.0)) { + var22 = var23; + } + + aaz.base(var1, var24, var25, this.buttonWidth, 15.0F, var7, var12); + } + + this.hoveredIndex = var22; + this.hoverGlide + .update( + (boolean)(((var22 != -1? 1: (-745631346 | 745631346) + (-745631346 & 745631346))) != 0), + var22 == -1? 0.0F : this.buttonX[var22] - var17, + var22 == -1? 0.0F : this.buttonY[var22] - var20 + ); + aaz.hover(var1, var17 + this.hoverGlide.x(), var20 + this.hoverGlide.y(), this.buttonWidth, 15.0F, var7, this.hoverGlide.presence(), var12); + + for (int var26 = 0; var26 < var15.size(); var26++) { + float var27 = Math.max( + 0.0F, + Math.min( + 1.0F, + this.hovers + .hover( + var26, + (boolean)(((var26 == var22 + ? 1: (-1046681230 ^ 1046681230) + ((-1046681230 & 1046681230) << 1)) + ) != 0)) + ) + ); + var1.drawScrollingTextCentered( + var21, + ((rp)var15.get(var26)).label(), + this.buttonX[var26], + this.buttonY[var26] + (15.0F - var21.height()) * 0.5F, + this.buttonWidth, + asa.liftText(asu.getRGBWithAlpha(var10, var7), var12, var27) + ); + } + + this.hovers.endFrame(); + this.label.setValue(var22 == -1? null : ((rp)var15.get(var22)).description()); + this.drawRowIcon(var1, "K", var4, var5, var9); + this.label.draw(var1, var21, this.rowLabelX(var4), this.rowTextY(var5, var21), var4 + var6 - var16, this.rowLabelColor(var10, var12), var11); + this.endRow(var1); + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + List var10 = null; + int var11 = 0; + int var12 = 948529109; + + while (true) { + switch (var12) { + case -1950892464: + if (aqj.isHovered(var6, var8, this.buttonX[var11], this.buttonY[var11], this.buttonWidth, 15.0)) { + var12 = 1611337825; + } else { + var12 = 215587782; + } + break; + case -859504222: + return; + case -476609525: + if (var11 < var10.size()) { + var12 = -1950892464; + } else { + var12 = -329356560; + } + break; + case -329356560: + return; + case -221723704: + var6 = this.scaleMouseX(var1); + var8 = this.scaleMouseY(var3); + var10 = this.setting.actions(); + var11 = 0; + var12 = -476609525; + break; + case 215587782: + var11++; + var12 = -476609525; + break; + case 948529109: + default: + if (var5 != apf.LEFT) { + var12 = -859504222; + } else { + var12 = -221723704; + } + break; + case 1201251950: + bz.getInstance().getSoundManager().playClick(); + var12 = 2135813866; + break; + case 1611337825: + if (bz.getInstance().getSoundManager() != null) { + var12 = 1201251950; + } else { + var12 = 2135813866; + } + break; + case 2135813866: + ((rp)var10.get(var11)) + .run() + .accept(this.listPopupContext(this.rowToScreenX(this.buttonX[var11] + this.buttonWidth), this.rowToScreenY(this.buttonY[var11] + 7.5F))); + return; + } + } + } + + @Override + public String getHoverDescription(double var1, double var3) { + String var6 = null; + int var5 = 690000257; + + while (true) { + switch (var5) { + case -43764054: + var6 = super.getHoverDescription(var1, var3); + var5 = 39164747; + break; + case 39164747: + return var6; + case 690000257: + default: + if (this.overLabel) { + var5 = -43764054; + } else { + var5 = 865341860; + } + break; + case 865341860: + var6 = null; + var5 = 39164747; + } + } + } + + @Override + public ro getSetting() { + return this.setting; + } + + @Override + public float getWidth() { + return 0.0F; + } + + @Override + public float getHeight() { + int var1 = abb.rows(this.setting.actions().size(), this.setting.columns()); + return 12.0F + abb.height(var1, 15.0F) + 1.0F; + } + + @Override + public boolean isVisible() { + return this.setting.getVisible().get(); + } +} diff --git a/src/main/java/defpackage/abe.java b/src/main/java/defpackage/abe.java new file mode 100644 index 0000000..6d42459 --- /dev/null +++ b/src/main/java/defpackage/abe.java @@ -0,0 +1,136 @@ +package defpackage; + + +public class abe extends aay { + private static final float TOGGLE_WIDTH = 18.0F; + private static final float TOGGLE_HEIGHT = 10.0F; + private static final float ROW_HEIGHT = 8.0F; + private static final String ICON_GLYPH = "S"; + private static final String THUMB_GLYPH = "S"; + private static final float THUMB_INSET = 1.5F; + private static final float TRACK_GLOW_SOFTNESS = 6.0F; + private static final float TRACK_GLOW_ALPHA = 0.16F; + private static final float THUMB_SHADOW_SOFTNESS = 4.0F; + private static final float THUMB_SHADOW_ALPHA = 0.16F; + private static final float THUMB_GLYPH_SIZE = 4.5F; + private static final float ACTIVE_MIN = 0.05F; + private final ru setting; + private final ct animation = ct.layout(ob.SLOW); + private final asi bounds = new asi(); + + private static arq TOGGLE_RADIUS() { + return asj.all(oc.ROW); + } + + private static arq THUMB_RADIUS() { + return asj.all(oc.CONTROL); + } + + public abe(ru var1) { + this.setting = var1; + } + + @Override + public void render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, int var10, int var11, mv var12) { + float var13 = 18.0F; + float var14 = 10.0F; + float var15 = this.beginRow(var1, var2, var3, var4, var5, var6, var7, var12); + float var16 = this.rowTrailingX(var4, var6, var13); + float var17 = this.rowCenterY(var5) - var14 / 2.0F; + this.drawRowIcon(var1, "S", var4, var5, var9); + this.drawRowLabel(var1, this.setting.getName(), var4, var5, this.rowLabelLimit(var4, var16, 6.0F), var10, var12); + this.animation.animateTo(this.setting.isEnabled() ? 1.0F : 0.0F); + float var18 = this.animation.update(); + float var19 = var16; + float var20 = var17; + float var21 = var13; + float var22 = var14; + int var23 = asu.mixRGB(var12.getWhiteGray().getRGB(), var9, var8, 1.0F); + int var24 = asu.mixRGB(var12.getForegroundColor().getRGB(), asu.getRGBWithAlpha(var23, 0.6F), var18, 1.0F); + int var25 = asu.mixRGB(var12.getWhite().getRGB(), var24, 0.5F, var7 * 0.5F); + if (var18 > 0.05F) { + atb.drawShadow(var1.pose(), var19, var20, var21, var22, 6.0F, TOGGLE_RADIUS(), asu.getRGBWithAlpha(var23, var18 * var7 * 0.16F)); + } + + atb.drawActiveGlow(var1.pose(), var19, var20, var21, var22, TOGGLE_RADIUS(), var18 * var7, asu.getRGBWithAlpha(var23, var7)); + var1.drawSurface(aso.CONTROL, var19, var20, var21, var22, TOGGLE_RADIUS(), var25); + float var26 = var14 - 3.0F; + float var27 = var13 - var26 - 3.0F; + float var28 = var16 + 1.5F + var27 * var18; + float var29 = var17 + 1.5F; + atb.drawShadow(var1.pose(), var28, var29, var26, var26, 4.0F, THUMB_RADIUS(), var12.getWhite().getRGBWithAlpha(0.16F * var7)); + atb.drawActiveGlow(var1.pose(), var28, var29, var26, var26, THUMB_RADIUS(), var18 * var7, var12.getWhite().getRGBWithAlpha(var7)); + var1.drawRoundedRect(var28, var29, var26, var26, THUMB_RADIUS(), var12.getWhite().getRGBWithAlpha(var7)); + ge var30 = gl.ICONS.getFont(4.5F); + var1.drawText( + var30, + "S", + var30.glyphCenterX("S", var28, var26), + var30.glyphCenterY("S", var29, var26), + asu.getRGBWithAlpha(var9, var7 * var18) + ); + this.bounds.set(var16, var17, var13, var14); + this.endRow(var1); + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + int var10 = 1977726838; + + while (true) { + switch (var10) { + case -1812656481: + this.setting.toggle(); + if (bz.getInstance().getSoundManager() != null) { + var10 = -544374584; + } else { + var10 = 1475661089; + } + break; + case -784509386: + if (var5 == apf.LEFT) { + var10 = -1812656481; + } else { + var10 = 1475661089; + } + break; + case -544374584: + bz.getInstance().getSoundManager().playToggle(this.setting.isEnabled()); + var10 = 1475661089; + break; + case 1475661089: + return; + case 1977726838: + default: + var6 = this.scaleMouseX(var1); + var8 = this.scaleMouseY(var3); + if (this.bounds.contains(var6, var8)) { + var10 = -784509386; + } else { + var10 = 1475661089; + } + } + } + } + + @Override + public float getWidth() { + return 0.0F; + } + + @Override + public float getHeight() { + return 8.0F; + } + + @Override + public boolean isVisible() { + return this.setting.getVisible().get(); + } + + public ru getSetting() { + return this.setting; + } +} diff --git a/src/main/java/defpackage/abf.java b/src/main/java/defpackage/abf.java new file mode 100644 index 0000000..cf71884 --- /dev/null +++ b/src/main/java/defpackage/abf.java @@ -0,0 +1,113 @@ +package defpackage; + +public class abf extends aay { + private static final float LABEL_PAD = 6.0F; + private final rv button; + final asi bounds = new asi(); + + private static arq BUTTON_RADIUS() { + return asj.all(oc.CONTROL); + } + + public abf(rv var1) { + this.button = var1; + } + + @Override + public void render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, int var10, int var11, mv var12) { + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + ge var18 = null; + float var19 = 0.0F; + int var20 = 1445629261; + + while (true) { + switch (var20) { + case 786266798: + var1.drawSurface(aso.CONTROL, var14, var5, var15, this.rowHeight(), BUTTON_RADIUS(), var12.getForegroundColor().getRGBWithAlpha(var7 * 0.7F)); + var18 = this.rowLabelFont(); + var19 = Math.max(0.0F, var15 - 12.0F); + var1.drawScrollingTextCentered( + var18, + this.button.getName(), + var14 + 6.0F, + var5 + (this.rowHeight() - var18.height()) / 2.0F + 0.5F, + var19, + asu.getRGBWithAlpha(this.rowLabelColor(var10, var12), var7) + ); + this.endRow(var1); + return; + case 948362092: + var1.drawRoundedRect(var14, var5, var15, this.rowHeight(), BUTTON_RADIUS(), var12.getWhite().getRGBWithAlpha(0.05F * var7 * var17)); + var20 = 786266798; + break; + case 1445629261: + default: + var13 = this.rowInset(); + var14 = var4 + var13; + var15 = var6 - var13 * 2.0F; + this.bounds.set(var14, var5, var15, this.rowHeight()); + var16 = this.beginRow(var1, var2, var3, var4, var5, var6, var7, var12); + var17 = arx.classicFade(); + if (var17 > 0.0F) { + var20 = 948362092; + } else { + var20 = 786266798; + } + } + } + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + int var10 = 1420548709; + + while (true) { + switch (var10) { + case -1656207068: + if (var5 == apf.LEFT) { + var10 = 540691580; + } else { + var10 = 2123938961; + } + break; + case 540691580: + this.button.toggle(); + var10 = 2123938961; + break; + case 1420548709: + default: + var6 = this.scaleMouseX(var1); + var8 = this.scaleMouseY(var3); + if (this.bounds.contains(var6, var8)) { + var10 = -1656207068; + } else { + var10 = 2123938961; + } + break; + case 2123938961: + return; + } + } + } + + @Override + public float getWidth() { + return 0.0F; + } + + @Override + public float getHeight() { + return 16.0F; + } + + @Override + public boolean isVisible() { + return this.button.isVisible(); + } +} diff --git a/src/main/java/defpackage/abg.java b/src/main/java/defpackage/abg.java new file mode 100644 index 0000000..e57df0e --- /dev/null +++ b/src/main/java/defpackage/abg.java @@ -0,0 +1,251 @@ +package defpackage; + + +public class abg extends aay { + private static final float POPUP_GAP = 22.0F; + private static final String SWATCH_HINT = "Click to open the color picker"; + private static final float SWATCH_HIT_PAD = 1.5F; + private static final String ICON_GLYPH = "V"; + private static final String HEX_FORMAT = "#%02X%02X%02X"; + private static final float HEX_FONT_SIZE = 5.5F; + private static final float HEX_THRESHOLD = 0.01F; + private static final float ROW_HEIGHT = 8.0F; + private static final float SWATCH_SIZE = 9.0F; + private static final float SWATCH_GROWTH = 0.18F; + private static final float SWATCH_GLOW_PAD = 1.5F; + private static final float SWATCH_GLOW_SOFTNESS = 5.0F; + private static final float SWATCH_GLOW_ALPHA = 0.14F; + private static final float SWATCH_GLOW_HOVER_ALPHA = 0.1F; + private static final float SWATCH_BASE_ALPHA = 0.06F; + private static final float SWATCH_FILL_ALPHA = 0.7F; + private static final float GLOSS_RATIO = 0.35F; + private static final float GLOSS_INSET_RATIO = 0.15F; + private static final float GLOSS_ALPHA = 0.5F; + private final rx setting; + private final asi bounds = new asi(); + private arr boundsColor; + + public abg(rx var1) { + this.setting = var1; + this.boundsColor = new arr(0.0F, 0.0F, 78.0F, 48.0F); + } + + @Override + public void render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, int var10, int var11, mv var12) { + ge var13 = null; + asu var14 = null; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + String var22 = null; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + int var26 = 0; + float var27 = 0.0F; + float var29 = 0.0F; + int var28 = -418056704; + + while (true) { + switch (var28) { + case -1610961057: + this.bounds.set(var18 - var19 / 2.0F - 1.5F, var16 - var19 / 2.0F - 1.5F, var19 + 3.0F, var19 + 3.0F); + this.anchorPopup(this.boundsColor, var18, var16 + 4.0F, 22.0F); + this.endRow(var1); + return; + case -418056704: + default: + var13 = gl.MEDIUM.getFont(5.5F); + var14 = this.setting.getColor(); + var15 = this.beginRow(var1, var2, var3, var4, var5, var6, var7, var12); + var16 = this.rowCenterY(var5); + this.drawRowIcon(var1, "V", var4, var5, var9); + var17 = 9.0F; + var18 = this.rowTrailingX(var4, var6, var17) + var17 / 2.0F; + var19 = var17 * (1.0F + 0.18F * var15); + var20 = var18 - var19 / 2.0F; + var21 = var16 - var19 / 2.0F; + String var10000 = "#%02X%02X%02X"; + Object[] var10001 = new Object[3]; + var10001[0] = var14.getRed(); + var10001[1] = var14.getGreen(); + var10001[2] = var14.getBlue(); + var22 = String.format(var10000, var10001); + if (var15 > 0.01F) { + var28 = 1407768152; + } else { + var28 = 333274956; + } + break; + case -69451129: + var1.drawText(var13, var22, var24, var16 - var13.height() / 2.0F + 0.5F, asu.getRGBWithAlpha(var11, var15)); + var28 = -1610961057; + break; + case 333274956: + var29 = 0.0F; + var28 = 1810398621; + break; + case 1407768152: + var29 = var13.width(var22); + var28 = 1810398621; + break; + case 1810398621: + var23 = var29; + var24 = var18 - var17 / 2.0F - 6.0F - var23; + this.drawRowLabel(var1, this.setting.getName(), var4, var5, this.rowLabelLimit(var4, var24, 6.0F), var10, var12); + var25 = 1.5F + 1.5F * var15; + atb.drawShadow( + var1.pose(), + var20 - var25, + var21 - var25, + var19 + var25 * 2.0F, + var19 + var25 * 2.0F, + 5.0F, + asj.pill(var19 + var25 * 2.0F), + var14.mulAlpha(var7 * (0.14F + 0.1F * var15)) + ); + var26 = asu.mixRGB(var12.getWhiteGray().getRGB(), var14.getRGB(), var8, var7); + var1.drawRoundedRect(var20, var21, var19, var19, asj.pill(var19), var12.getWhite().mulAlpha(0.06F * var7)); + var1.drawRoundedRect(var20, var21, var19, var19, asj.pill(var19), asu.getRGBWithAlpha(var26, 0.7F)); + var27 = var19 * 0.35F; + var1.drawRoundedRect( + var20 + var19 * 0.15F, var21 + var19 * 0.15F, var27, var27, asj.pill(var27), asu.getRGBWithAlpha(asu.WHITE.getRGB(), var7 * 0.5F) + ); + if (var15 > 0.01F) { + var28 = -69451129; + } else { + var28 = -1610961057; + } + } + } + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = this.scaleMouseX(var1); + double var8 = this.scaleMouseY(var3); + if (this.bounds.contains(var6, var8) && var5 == apf.LEFT && aqg.mc.gui.screen() instanceof yc var10) { + abq var12 = new abq(this.boundsColor, this.setting); + if (!var10.getPopupSettings().stream().anyMatch(var1x -> { + int var3x = 0; + int var2 = -365941020; + + while (true) { + switch (var2) { + case -1403729120: + if (((abq)var1x).getSetting().getName().equals(this.setting.getName())) { + var2 = -836663822; + } else { + var2 = -1163761919; + } + break; + case -1163761919: + var3x = 0; + var2 = 528561478; + break; + case -836663822: + var3x = 1; + var2 = 528561478; + break; + case -365941020: + default: + if (var1x instanceof abq) { + var2 = -1403729120; + } else { + var2 = -1163761919; + } + break; + case 528561478: + return (boolean)((var3x) != 0); + } + } + })) { + var10.addPopupMenuSetting(var12); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playDropdown(); + } + } else { + var10.getPopupSettings().stream().filter(var1x -> { + int var3x = 0; + int var2 = 1875503391; + + while (true) { + switch (var2) { + case 628337239: + return (boolean)((var3x) != 0); + case 654874404: + var3x = 0; + var2 = 628337239; + break; + case 705372764: + var3x = 1; + var2 = 628337239; + break; + case 1451496007: + if (((abq)var1x).getSetting().getName().equals(this.setting.getName())) { + var2 = 705372764; + } else { + var2 = 654874404; + } + break; + case 1875503391: + default: + if (var1x instanceof abq) { + var2 = 1451496007; + } else { + var2 = 654874404; + } + } + } + }).forEach(var0 -> var0.getAnimationScale().animateTo(0.0F)); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + } + } + } + + @Override + public String getHoverDescription(double var1, double var3) { + int var5 = 368898241; + + while (true) { + switch (var5) { + case -2024921624: + return "Click to open the color picker"; + case -1026675992: + return super.getHoverDescription(var1, var3); + case 368898241: + } + + if (this.bounds.contains(this.scaleMouseX(var1), this.scaleMouseY(var3))) { + var5 = -2024921624; + } else { + var5 = -1026675992; + } + } + } + + @Override + public float getWidth() { + return 0.0F; + } + + @Override + public float getHeight() { + return 8.0F; + } + + @Override + public boolean isVisible() { + return this.setting.getVisible().get(); + } + + public rx getSetting() { + return this.setting; + } +} diff --git a/src/main/java/defpackage/abh.java b/src/main/java/defpackage/abh.java new file mode 100644 index 0000000..1afb7e4 --- /dev/null +++ b/src/main/java/defpackage/abh.java @@ -0,0 +1,187 @@ +package defpackage; + +import net.minecraft.util.Mth; + +public class abh extends aay { + private static final String CURVE_HINT = "Click to shape the animation curve"; + private static final String ICON_GLYPH = "D"; + private static final float POPUP_GAP = 22.0F; + private static final float POPUP_WIDTH = 132.0F; + private static final float POPUP_HEIGHT = 150.0F; + private static final float ROW_HEIGHT = 8.0F; + private static final float PREVIEW_WIDTH = 24.0F; + private static final float PREVIEW_HEIGHT = 11.0F; + private static final float PREVIEW_INSET = 1.5F; + private static final float PREVIEW_HIT_PAD = 1.5F; + private static final float PREVIEW_GROWTH = 0.14F; + private static final float PREVIEW_CURVE_THICKNESS = 1.0F; + private static final float PREVIEW_BACKGROUND_ALPHA = 0.35F; + private static final float CURVE_SAMPLE_STEP = 1.0F; + private static final float MIN_SAMPLE_STEP = 0.25F; + private final rz setting; + private final asi bounds = new asi(); + private final arr popupBounds = new arr(0.0F, 0.0F, 132.0F, 150.0F); + + public abh(rz var1) { + this.setting = var1; + } + + public static void drawCurve(asq var0, rz var1, float var2, float var3, float var4, float var5, float var6, asu var7) { + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = -1921839729; + + while (true) { + switch (var15) { + case -1921839729: + default: + var8 = Math.max(0.25F, Math.min(1.0F, var4)); + var9 = plotY(var1, var3, var5, 0.0F); + var10 = var8; + var15 = 73263601; + break; + case -828439668: + var11 = var10 / var4; + var12 = plotY(var1, var3, var5, var11); + var13 = Math.min(var9, var12) - var6 / 2.0F; + var14 = Math.max(var9, var12) + var6 / 2.0F; + var0.drawRect(var2 + var10 - var8, var13, var8, var14 - var13, var7); + var9 = var12; + var10 += var8; + var15 = 73263601; + break; + case 8413836: + return; + case 73263601: + if (var10 <= var4) { + var15 = -828439668; + } else { + var15 = 8413836; + } + } + } + } + + private static float plotY(rz var0, float var1, float var2, float var3) { + return var1 + var2 - Mth.clamp(var0.evaluate(var3), 0.0F, 1.0F) * var2; + } + + @Override + public void render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, int var10, int var11, mv var12) { + float var13 = this.beginRow(var1, var2, var3, var4, var5, var6, var7, var12); + float var14 = this.rowCenterY(var5); + this.drawRowIcon(var1, "D", var4, var5, var9); + float var15 = 1.0F + 0.14F * var13; + float var16 = 24.0F * var15; + float var17 = 11.0F * var15; + float var18 = this.rowTrailingX(var4, var6, var16); + float var19 = var14 - var17 / 2.0F; + this.drawRowLabel(var1, this.setting.getName(), var4, var5, this.rowLabelLimit(var4, var18, 6.0F), var10, var12); + var1.drawRoundedRect(var18, var19, var16, var17, asj.all(oc.CHIP), var12.getForegroundLight().mulAlpha(var7 * 0.35F)); + var1.drawRoundedBorder(var18, var19, var16, var17, pk.borderFine(), asj.all(oc.CHIP), var12.getForegroundLightStroke().mulAlpha(var7)); + drawCurve(var1, this.setting, var18 + 1.5F, var19 + 1.5F, var16 - 3.0F, var17 - 3.0F, 1.0F, var12.getColor().mulAlpha(var7)); + this.bounds.set(var18 - 1.5F, var19 - 1.5F, var16 + 3.0F, var17 + 3.0F); + this.anchorPopup(this.popupBounds, var18 + var16, var14, 22.0F); + this.endRow(var1); + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + if (var5 == apf.LEFT && this.bounds.contains(this.scaleMouseX(var1), this.scaleMouseY(var3))) { + if (aqg.mc.gui.screen() instanceof yc var6) { + abr var8 = var6.getPopupSettings().stream().filter(var1x -> { + abr var2 = null; + int var4 = 0; + int var3x = 1665795925; + + while (true) { + switch (var3x) { + case -2082800006: + var2 = (abr)var1x; + if (var2.getSetting() == this.setting) { + var3x = -556703252; + } else { + var3x = -509153972; + } + break; + case -1687461413: + return (boolean)((var4) != 0); + case -556703252: + var4 = 1; + var3x = -1687461413; + break; + case -509153972: + var4 = 0; + var3x = -1687461413; + break; + case 1665795925: + default: + if (var1x instanceof abr) { + var3x = -2082800006; + } else { + var3x = -509153972; + } + } + } + }).map(abr.class::cast).findFirst().orElse(null); + if (var8 == null) { + var6.addPopupMenuSetting(new abr(this.popupBounds, this.setting)); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playDropdown(); + } + } else { + var8.getAnimationScale().animateTo(0.0F); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + } + } + } + } + + @Override + public String getHoverDescription(double var1, double var3) { + int var5 = -1916488385; + + while (true) { + switch (var5) { + case -1916488385: + default: + if (this.bounds.contains(this.scaleMouseX(var1), this.scaleMouseY(var3))) { + var5 = 369152619; + } else { + var5 = 1522557779; + } + break; + case 369152619: + return "Click to shape the animation curve"; + case 1522557779: + return super.getHoverDescription(var1, var3); + } + } + } + + @Override + public float getWidth() { + return 0.0F; + } + + @Override + public float getHeight() { + return 8.0F; + } + + @Override + public boolean isVisible() { + return this.setting.getVisible().get(); + } + + public rz getSetting() { + return this.setting; + } +} diff --git a/src/main/java/defpackage/abi.java b/src/main/java/defpackage/abi.java new file mode 100644 index 0000000..9a8e887 --- /dev/null +++ b/src/main/java/defpackage/abi.java @@ -0,0 +1,145 @@ +package defpackage; + + +public class abi extends aay { + private static final float POPUP_GAP = 20.0F; + private static final String CHIP_HINT = "Click to choose the items"; + private static final float POPUP_WIDTH = 150.0F; + private static final float POPUP_HEIGHT = 224.0F; + private static final String ICON_GLYPH = "V"; + private static final float ROW_HEIGHT = 8.0F; + private static final float CHIP_SIZE = 8.0F; + private static final float CHIP_GLOW_SOFTNESS = 8.0F; + private static final float CHIP_GLOW_ALPHA = 0.35F; + private static final float CHIP_TINT = 0.25F; + private static final float CHIP_FILL_ALPHA = 0.2F; + private static final float ACTIVE_MIN = 0.05F; + private final sb setting; + private final asi bounds = new asi(); + private arr boundsColor; + + private static arq CHIP_RADIUS() { + return asj.all(oc.CHIP); + } + + public abi(sb var1) { + this.setting = var1; + this.boundsColor = new arr(0.0F, 0.0F, 78.0F, 96.0F); + } + + @Override + public void render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, int var10, int var11, mv var12) { + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + int var16 = 0; + int var17 = 913071250; + + while (true) { + switch (var17) { + case 239451648: + atb.drawShadow(var1.pose(), var14, var15, var13, var13, 8.0F, CHIP_RADIUS(), asu.getRGBWithAlpha(var9, var7 * 0.35F)); + var17 = 1979994862; + break; + case 913071250: + default: + this.beginRow(var1, var2, var3, var4, var5, var6, var7, var12); + this.drawRowIcon(var1, "V", var4, var5, var9); + var13 = 8.0F; + var14 = this.rowTrailingX(var4, var6, var13); + var15 = this.rowCenterY(var5) - var13 / 2.0F; + this.drawRowLabel(var1, this.setting.getName(), var4, var5, this.rowLabelLimit(var4, var14, 6.0F), var10, var12); + if (var7 > 0.05F) { + var17 = 239451648; + } else { + var17 = 1979994862; + } + break; + case 1979994862: + var16 = asu.mixRGB(var12.getWhite().getRGB(), var9, 0.25F, var7 * 0.2F); + var1.drawSurface(aso.CONTROL, var14, var15, var13, var13, CHIP_RADIUS(), var16); + this.bounds.set(var14, var15, var13, var13); + this.boundsColor.setWidth(150.0F); + this.boundsColor.setHeight(224.0F); + this.anchorPopup(this.boundsColor, var14, var15 + var13, 20.0F); + this.endRow(var1); + return; + } + } + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + int var10 = 1404384328; + + while (true) { + switch (var10) { + case -1348091637: + return; + case -912600606: + bz.getInstance().getMenuScreen().addPopupMenuSetting(new abs(this.setting, this.boundsColor)); + if (bz.getInstance().getSoundManager() != null) { + var10 = 966243414; + } else { + var10 = -1348091637; + } + break; + case 966243414: + bz.getInstance().getSoundManager().playDropdown(); + var10 = -1348091637; + break; + case 1404384328: + default: + var6 = this.scaleMouseX(var1); + var8 = this.scaleMouseY(var3); + if (this.bounds.contains(var6, var8)) { + var10 = -912600606; + } else { + var10 = -1348091637; + } + } + } + } + + @Override + public String getHoverDescription(double var1, double var3) { + int var5 = 1316717760; + + while (true) { + switch (var5) { + case 701372188: + return super.getHoverDescription(var1, var3); + case 876681227: + return "Click to choose the items"; + case 1316717760: + } + + if (this.bounds.contains(this.scaleMouseX(var1), this.scaleMouseY(var3))) { + var5 = 876681227; + } else { + var5 = 701372188; + } + } + } + + @Override + public float getWidth() { + return 0.0F; + } + + @Override + public float getHeight() { + return 8.0F; + } + + @Override + public boolean isVisible() { + return (boolean)(((1)) != 0); + } + + public sb getSetting() { + return this.setting; + } +} diff --git a/src/main/java/defpackage/abj.java b/src/main/java/defpackage/abj.java new file mode 100644 index 0000000..4159dfc --- /dev/null +++ b/src/main/java/defpackage/abj.java @@ -0,0 +1,183 @@ +package defpackage; + + +public class abj extends aay { + private static final String BINDING_LABEL = "press key"; + private static final String KEY_WIDTH_SAMPLE = "abcdef"; + private static final String UNBOUND_LABEL = "n/a"; + private static final String BINDING_HINT = "Esc or Del clears the bind"; + private static final float BINDING_PULSE_PERIOD = 260.0F; + private static final float BINDING_PULSE_FLOOR = 0.45F; + private static final float BINDING_FILL_ALPHA = 0.35F; + private static final String ICON_GLYPH = "L"; + private static final float ROW_HEIGHT = 8.0F; + private static final float CHIP_HEIGHT = 8.0F; + private static final float CHIP_PAD_X = 4.0F; + private static final float CHIP_GLOW_SOFTNESS = 8.0F; + private static final float CHIP_GLOW_ALPHA = 0.35F; + private static final float CHIP_CLASSIC_ALPHA = 0.05F; + private static final float CHIP_FILL_ALPHA = 0.8F; + private static final float ACTIVE_MIN = 0.05F; + private final sc setting; + private final asi bounds = new asi(); + private boolean binding = (boolean)(((0)) != 0); + + private static arq CHIP_RADIUS() { + return asj.all(oc.CHIP); + } + + public abj(sc var1) { + this.setting = var1; + } + + @Override + public void render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, int var10, int var11, mv var12) { + float var13 = this.beginRow(var1, var2, var3, var4, var5, var6, var7, var12); + this.drawRowIcon( + var1, + "L", + var4, + var5, + var12.getGray().mix(var12.getColor(), var8).mulAlpha(var7).getRGB() + ); + String var14 = this.binding + ? "press key" + : "n/a"; + int var15 = this.setting.getKeyCode(); + if (var15 != (879156689 ^ -879156690) + ((879156689 & -879156690) << 1) && var15 != 0 && !this.binding) { + try { + String var16 = aqz.getKeyName(var15); + if (var16 != null && !var16.isBlank()) { + var14 = var16.toLowerCase(); + } + } catch (Exception var29) { + } + } + + ge var30 = this.rowLabelFont(); + float var17 = var30.width("abcdef"); + float var18 = var30.width(var14); + float var19 = this.binding ? var18 : Math.min(var18, var17); + float var20 = 8.0F + var19; + float var21 = 8.0F; + float var22 = this.rowTrailingX(var4, var6, var20); + float var23 = this.rowCenterY(var5) - var21 / 2.0F; + this.drawRowLabel(var1, this.setting.getName(), var4, var5, this.rowLabelLimit(var4, var22, 6.0F), var10, var12); + asu var24 = var12.getForegroundLight().mix(var12.getColor().mulAlpha(0.2F), var8).mulAlpha(var7); + asu var25 = var12.getForegroundLightStroke().mix(var12.getColor(), var8).mulAlpha(var7 * 0.5F); + if (var8 > 0.05F) { + atb.drawShadow(var1.pose(), var22, var23, var20, var21, 8.0F, CHIP_RADIUS(), var12.getColor().mulAlpha(var8 * var7 * 0.35F)); + } + + float var26 = arx.classicFade(); + if (var26 > 0.0F) { + var1.drawRoundedRect(var22, var23, var20, var21, CHIP_RADIUS(), var12.getWhite().getRGBWithAlpha(0.05F * var7 * var26)); + } + + var1.drawSurface(aso.CONTROL, var22, var23, var20, var21, CHIP_RADIUS(), var24.getRGBWithAlpha(0.8F)); + int var27 = var10; + if (this.binding) { + float var28 = 0.45F + 0.55F * (float)(0.5 + 0.5 * Math.sin(cs.elapsedMillis() / 260.0)); + var1.drawSurface(aso.ACCENT, var22, var23, var20, var21, CHIP_RADIUS(), var12.getColor().getRGBWithAlpha(var7 * 0.35F * var28)); + var1.drawRoundedBorder(var22, var23, var20, var21, pk.borderFine(), CHIP_RADIUS(), var12.getColor().mulAlpha(var7 * var28)); + var27 = var12.getWhite().getRGBWithAlpha(var7); + ass.tooltip( + this, + "Esc or Del clears the bind", + var22, + var23, + var20, + var21, + asr.ABOVE, + (boolean)((((-724114543 ^ 724114543) + ((-724114543 & 724114543) << 1)) + ) != 0)); + } + + var1.drawScrollingText(var30, var14, var22 + 4.0F, var23 + (var21 - var30.height()) / 2.0F + 0.5F, var19, var27); + this.bounds.set(var22, var23, var20, var21); + this.endRow(var1); + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = this.scaleMouseX(var1); + double var8 = this.scaleMouseY(var3); + if (this.binding && var5.getButtonIndex() >= (-1335212724 | 1335212726) + (-1335212724 & 1335212726)) { + this.setting.setKeyCode(var5.getButtonIndex()); + this.binding = (boolean)(((0)) != 0); + } else if (this.bounds.contains(var6, var8)) { + this.binding = (boolean)(((!this.binding + ? 1: (976640950 ^ -976640950) + ((976640950 & -976640950) << 1))) != 0); + } else if (this.binding) { + this.binding = (boolean)(((0)) != 0); + } + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = 1203131622; + + while (true) { + switch (var4) { + case -1948558699: + if (var1 != (1291864773 ^ -1291864517) + ((1291864773 & -1291864517) << 1)) { + var4 = 1086348533; + } else { + var4 = -1010626202; + } + break; + case -1010626202: + this.setting.setKeyCode((986272251 ^ -986272252) + ((986272251 & -986272252) << 1)); + this.binding = (boolean)(((0)) != 0); + return (boolean)(((1)) != 0); + case 896636576: + if (var1 == (-1272405690 | 1272405951) + (-1272405690 & 1272405951)) { + var4 = -1010626202; + } else { + var4 = 2016965802; + } + break; + case 1086348533: + if (var1 != (-130217965 ^ 130218224) + ((-130217965 & 130218224) << 1)) { + var4 = 896636576; + } else { + var4 = -1010626202; + } + break; + case 1203131622: + default: + if (this.binding) { + var4 = -1948558699; + } else { + var4 = 1898383497; + } + break; + case 1898383497: + return super.keyPressed(var1, var2, var3); + case 2016965802: + this.setting.setKeyCode(var1); + this.binding = (boolean)(((0)) != 0); + return (boolean)(((1)) != 0); + } + } + } + + @Override + public float getWidth() { + return 0.0F; + } + + @Override + public float getHeight() { + return 8.0F; + } + + @Override + public boolean isVisible() { + return this.setting.getVisible().get(); + } + + public sc getSetting() { + return this.setting; + } +} diff --git a/src/main/java/defpackage/abk.java b/src/main/java/defpackage/abk.java new file mode 100644 index 0000000..a600c93 --- /dev/null +++ b/src/main/java/defpackage/abk.java @@ -0,0 +1,824 @@ +package defpackage; + +import net.minecraft.client.model.geom.builders.UVPair; + +public class abk extends aay { + private static final String ICON_GLYPH = "K"; + private static final String SAVE_LABEL = "Save"; + private static final float LABEL_ROW_HEIGHT = 8.0F; + private static final float TILES_TOP_GAP = 4.0F; + private static final float BOTTOM_PAD = 1.0F; + private static final float EDITOR_GAP = 4.0F; + private static final float EDITOR_HEIGHT = 16.0F; + private static final float EDITOR_TEXT_INSET = 6.0F; + private static final float SAVE_WIDTH = 30.0F; + private static final float SAVE_GAP = 3.0F; + private static final float FIELD_FONT_SIZE = 6.5F; + private static final float FIELD_ALPHA = 0.6F; + private static final float PLACEHOLDER_ALPHA = 0.45F; + private static final float FOCUS_BORDER_ALPHA = 0.85F; + private static final float BORDER_WIDTH = 1.0F; + private static final float MIN_VISIBLE = 0.01F; + private static final float PLUS_ARM = 3.5F; + private static final float PLUS_THICKNESS = 1.0F; + private static final float PLUS_ALPHA = 0.7F; + private static final float MINI_SIZE = 8.0F; + private static final float MINI_INSET = 1.5F; + private static final int MINI_PLATE_ARGB = -804253160; + private static final int MINI_DANGER_ARGB = -1750963; + private static final float MINI_CROSS_ARM = 3.4F; + private static final float MINI_STROKE = 0.8F; + private static final float MINI_COPY_BOX = 3.2F; + private static final float MINI_COPY_SHIFT = 1.4F; + private static final float MINI_COPY_RADIUS = 0.6F; + private static final float DIAGONAL_ANGLE = (float) (Math.PI / 4); + private static final arq COPY_CORNER = arq.all(0.6F); + private static final float HALF = 0.5F; + private static final int SHARE_BUTTON = 0; + private static final int REMOVE_BUTTON = 1; + private static final int BUTTONS_PER_TILE = 2; + private static final int NO_TILE = -1; + private final se setting; + private final sd library; + private final abc label; + private final ase hovers = new ase(); + private final ase buttons = new ase(); + private final aba hoverGlide = aba.hover(); + private final aba selectionGlide = aba.selection(); + private final ct editor = ct.layout(ob.MEDIUM, 0.0F); + private arn field; + private final ct saveHover = asa.spring(); + private float[] tileX = new float[0]; + private float[] tileY = new float[0]; + private float tileWidth; + private float lastWidth = 172.0F; + private int hoveredIndex = -1; + private int hoveredButton = -1; + private boolean overLabel; + private boolean editing; + private float saveX; + private float saveY; + private float fieldX; + private float fieldY; + private float fieldWidth; + + public abk(se var1) { + this.setting = var1; + this.library = var1.library(); + this.label = new abc(var1.getName()); + } + + @Override + protected float rowHeight() { + return 8.0F; + } + + @Override + public void render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, int var10, int var11, mv var12) { + this.lastWidth = var6; + this.beginGroupRow(var1, var2, var3, var4, var5, var6, var7, var12, this.getHeight()); + float var13 = (float)this.scaleMouseX(var2); + float var14 = (float)this.scaleMouseY(var3); + this.overLabel = aqj.isHovered(var13, var14, var4, var5, var6, 8.0); + int var15 = this.library.size(); + int var16 = this.tileCount(); + this.ensureCapacity(var16); + float var17 = this.rowInset(); + float var18 = var4 + var17; + float var19 = var6 - var17 * 2.0F; + int var20 = abb.perRow(var19, this.setting.columns(), this.setting.minTileWidth()); + this.tileWidth = abb.tileWidth(var19, var20); + float var21 = this.setting.tileHeight(); + float var22 = var5 + 8.0F + 4.0F; + int var23 = -1; + int var24 = -1; + + for (int var25 = 0; var25 < var16; var25++) { + float var26 = abb.tileX(var18, var25, var20, this.tileWidth); + float var27 = abb.tileY(var22, var25, var20, var21); + this.tileX[var25] = var26; + this.tileY[var25] = var27; + if (var23 == (-1035198538 | 1035198537) + (-1035198538 & 1035198537) && aqj.isHovered(var13, var14, var26, var27, this.tileWidth, var21)) { + var23 = var25; + } + + int var28 = var25 == var15 ? 1: 0; + if (var24 == (-1691725679 ^ 1691725678) + ((-1691725679 & 1691725678) << 1) && (var28 != 0 ? this.editing : this.library.isActive(var25))) { + var24 = var25; + } + + aaz.base(var1, var26, var27, this.tileWidth, var21, var7, var12); + } + + this.hoveredIndex = var23; + this.hoverGlide + .update( + (boolean)(((var23 != -1? 1: (1149361073 ^ -1149361073) + ((1149361073 & -1149361073) << 1))) != 0), + this.localX(var23, var18), + this.localY(var23, var22) + ); + this.selectionGlide + .update( + (boolean)(((var24 != -1? 1: (-1767882357 | 1767882357) + (-1767882357 & 1767882357))) != 0), + this.localX(var24, var18), + this.localY(var24, var22) + ); + aaz.hover(var1, var18 + this.hoverGlide.x(), var22 + this.hoverGlide.y(), this.tileWidth, var21, var7, this.hoverGlide.presence(), var12); + float var36 = var18 + this.selectionGlide.x(); + float var37 = var22 + this.selectionGlide.y(); + aaz.selectionGlow(var1, var36, var37, this.tileWidth, var21, var7, this.selectionGlide.presence(), var9); + + for (int var38 = 0; var38 < var16; var38++) { + float var40 = clamp( + this.hovers + .hover( + var38, + (boolean)(((var38 == var23 + ? 1: (-1229615646 | 1229615646) + (-1229615646 & 1229615646)) + ) != 0)) + ); + if (var38 == var15) { + this.drawPlus( + var1, + this.tileX[var38] + this.tileWidth * 0.5F, + this.tileY[var38] + var21 * 0.5F, + asu.getRGBWithAlpha(asa.liftText(var10, var12, var40), var7 * 0.7F) + ); + } else { + this.library.paint(var1, var38, this.tileX[var38], this.tileY[var38], this.tileWidth, var21, var7, var40, var38 == var24 ? 1.0F : 0.0F); + } + } + + aaz.selectionBorder(var1, var36, var37, this.tileWidth, var21, var7, this.selectionGlide.presence(), var9); + int var39 = -1; + + for (int var41 = 0; var41 < var15; var41++) { + float var29 = clamp(this.hovers.peek(var41)); + + for (int var30 = 0; + var30 < 2; + var30++ + ) { + int var31 = var41 * ((-811508378 ^ 811508380) + ((-811508378 & 811508380) << 1)) + var30; + float var32 = this.miniX(this.tileX[var41], var30); + float var33 = this.tileY[var41] + 1.5F; + int var34 = var41 == var23 && aqj.isHovered(var13, var14, var32, var33, 8.0, 8.0) + ? 1: 0; + if (var34 != 0) { + var39 = var31; + } + + float var35 = clamp(this.buttons.hover(var31, (boolean)((var34) != 0))); + if (var29 > 0.01F) { + this.drawMini(var1, var30, var32, var33, var7 * var29, var35, var9); + } + } + } + + this.hovers.endFrame(); + this.buttons.endFrame(); + this.hoveredButton = var39; + float var42 = clamp(this.editor.update(this.editing)); + if (var42 > 0.01F) { + float var43 = var22 + abb.height(abb.rows(var16, var20), var21) + 4.0F * var42; + this.drawEditor(var1, var13, var14, var18, var43, var19, var7 * var42, var9, var10, var12); + } + + this.label.setValue(this.labelValue(var15)); + this.drawRowIcon(var1, "K", var4, var5, var9); + this.label + .draw( + var1, + this.rowLabelFont(), + this.rowLabelX(var4), + this.rowTextY(var5, this.rowLabelFont()), + var4 + var6 - var17, + this.rowLabelColor(var10, var12), + var11 + ); + this.endRow(var1); + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + int var10 = 0; + int var11 = -1891790382; + + while (true) { + switch (var11) { + case -2109314634: + return; + case -2069593387: + if (this.hoveredIndex == this.library.size()) { + var11 = -1072685868; + } else { + var11 = 1498115733; + } + break; + case -1891790382: + default: + if (var5 != apf.LEFT) { + var11 = 1732408687; + } else { + var11 = -1433827989; + } + break; + case -1843099982: + if (aqj.isHovered(var6, var8, this.saveX, this.saveY, 30.0, 16.0)) { + var11 = 1186263304; + } else { + var11 = -583367537; + } + break; + case -1765465492: + var10 = this.hoveredButton / (2); + if (var10 < this.library.size()) { + var11 = -919874972; + } else { + var11 = -2109314634; + } + break; + case -1758809581: + this.library.remove(var10); + var11 = -338399135; + break; + case -1433827989: + var6 = this.scaleMouseX(var1); + var8 = this.scaleMouseY(var3); + if (this.editing) { + var11 = -1843099982; + } else { + var11 = -583367537; + } + break; + case -1135838881: + if (this.library.canAdd()) { + var11 = 2123594960; + } else { + var11 = 928512861; + } + break; + case -1072685868: + if (this.editing) { + var11 = 1378021108; + } else { + var11 = -1135838881; + } + break; + case -919874972: + if (this.hoveredButton % 2== 0) { + var11 = -486873516; + } else { + var11 = -1758809581; + } + break; + case -583367537: + if (this.editing) { + var11 = -356687514; + } else { + var11 = 1753246321; + } + break; + case -486873516: + this.library + .share( + var10, + this.listPopupContext( + this.rowToScreenX(this.tileX[var10] + this.tileWidth), this.rowToScreenY(this.tileY[var10] + this.setting.tileHeight() * 0.5F) + ) + ); + var11 = -338399135; + break; + case -356687514: + if (aqj.isHovered(var6, var8, this.fieldX, this.fieldY, this.fieldWidth, 16.0)) { + var11 = -277266082; + } else { + var11 = 1753246321; + } + break; + case -338399135: + playClick(); + var11 = -2109314634; + break; + case -277266082: + this.field().setSelected((boolean)((((635255962 | -635255961) + (635255962 & -635255961))) != 0)); + return; + case 280435693: + return; + case 928512861: + playClick(); + return; + case 1186263304: + this.commit(); + return; + case 1277044813: + if (this.hoveredIndex == (271048905 | -271048906) + (271048905 & -271048906)) { + var11 = 280435693; + } else { + var11 = -2069593387; + } + break; + case 1378021108: + this.cancel(); + var11 = 928512861; + break; + case 1498115733: + this.library.apply(this.hoveredIndex); + playClick(); + return; + case 1732408687: + return; + case 1753246321: + if (this.hoveredButton != (-1614786346 | 1614786345) + (-1614786346 & 1614786345)) { + var11 = -1765465492; + } else { + var11 = 1277044813; + } + break; + case 2123594960: + this.startEditing(); + var11 = 928512861; + } + } + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = -801442527; + + while (true) { + switch (var4) { + case -1274964409: + if (var1 == (-94045139 | 94045474) + (-94045139 & 94045474)) { + var4 = -816314860; + } else { + var4 = 2053303908; + } + break; + case -816314860: + this.commit(); + return (boolean)(((1)) != 0); + case -801442527: + default: + if (!this.editing) { + var4 = 648474782; + } else { + var4 = 1380156390; + } + break; + case -280373312: + return this.field().keyPressed(var1, var2, var3); + case 562563396: + this.cancel(); + return (boolean)(((1)) != 0); + case 648474782: + return (boolean)(((0)) != 0); + case 1380156390: + if (var1 != (1466708645 ^ -1466708388) + ((1466708645 & -1466708388) << 1)) { + var4 = -1274964409; + } else { + var4 = -816314860; + } + break; + case 2053303908: + if (var1 == (-1079352612 | 1079352868) + (-1079352612 & 1079352868)) { + var4 = 562563396; + } else { + var4 = -280373312; + } + } + } + } + + @Override + public boolean charTyped(char var1, int var2) { + int var4 = 0; + int var3 = -714403989; + + while (true) { + switch (var3) { + case -1714348613: + if (this.field().charTyped(var1, var2)) { + var3 = 1127234142; + } else { + var3 = 1122423216; + } + break; + case -714403989: + default: + if (this.editing) { + var3 = -1714348613; + } else { + var3 = 1122423216; + } + break; + case 1122423216: + var4 = 0; + var3 = 1585317076; + break; + case 1127234142: + var4 = 1; + var3 = 1585317076; + break; + case 1585317076: + return (boolean)((var4) != 0); + } + } + } + + @Override + public String getHoverDescription(double var1, double var3) { + String var6 = null; + int var5 = 1926554252; + + while (true) { + switch (var5) { + case -2060687101: + var6 = super.getHoverDescription(var1, var3); + var5 = -1388206171; + break; + case -1388206171: + return var6; + case -1229465513: + var6 = null; + var5 = -1388206171; + break; + case 1926554252: + default: + if (this.overLabel) { + var5 = -2060687101; + } else { + var5 = -1229465513; + } + } + } + } + + @Override + public ro getSetting() { + return this.setting; + } + + @Override + public float getWidth() { + return 0.0F; + } + + @Override + public float getHeight() { + int var1 = this.tileCount(); + float var2 = this.lastWidth - this.rowInset() * 2.0F; + int var3 = abb.rows(var1, abb.perRow(var2, this.setting.columns(), this.setting.minTileWidth())); + float var4 = 20.0F * clamp(this.editor.value()); + return 12.0F + abb.height(var3, this.setting.tileHeight()) + var4 + 1.0F; + } + + @Override + public boolean isVisible() { + return this.setting.getVisible().get(); + } + + private int tileCount() { + return this.library.size() + + ( + !this.library.canAdd() && !this.editing + ? 0: (-282860302 ^ 282860303) + ((-282860302 & 282860303) << 1) + ); + } + + private String labelValue(int var1) { + String var3 = null; + int var2 = -305058644; + + while (true) { + switch (var2) { + case -2142969475: + if (this.hoveredButton % 2== 0) { + var2 = 1430032500; + } else { + var2 = 1809507218; + } + break; + case -2062358256: + return this.library.name(this.hoveredIndex); + case -944516330: + return null; + case -688214509: + if (this.hoveredIndex == (1745305417 ^ -1745305418) + ((1745305417 & -1745305418) << 1)) { + var2 = -944516330; + } else { + var2 = 170408890; + } + break; + case -424175183: + return this.library.addHint(); + case -305058644: + default: + if (this.hoveredButton != (-1006610984 ^ 1006610983) + ((-1006610984 & 1006610983) << 1)) { + var2 = -2142969475; + } else { + var2 = -688214509; + } + break; + case 170408890: + if (this.hoveredIndex >= var1) { + var2 = -424175183; + } else { + var2 = -2062358256; + } + break; + case 1351163129: + return var3; + case 1430032500: + var3 = this.library.shareHint(); + var2 = 1351163129; + break; + case 1809507218: + var3 = this.library.removeHint(); + var2 = 1351163129; + } + } + } + + private arn field() { + int var1 = 541420228; + + while (true) { + switch (var1) { + case -2012002526: + this.field = new arn(new UVPair(0.0F, 0.0F), gl.MEDIUM.getFont(6.5F), "", 0.0F); + this.field.setMaxLength(this.library.maxNameLength()); + var1 = 1556358065; + break; + case 541420228: + default: + if (this.field == null) { + var1 = -2012002526; + } else { + var1 = 1556358065; + } + break; + case 1556358065: + return this.field; + } + } + } + + private void startEditing() { + this.editing = (boolean)(((1)) != 0); + arn var1 = this.field(); + var1.setText(""); + var1.setEmptyText(this.library.suggestedName()); + var1.setSelected((boolean)((((774632184 | -774632183) + (774632184 & -774632183))) != 0)); + } + + private void commit() { + String var1 = this.field().getText(); + this.library.add(var1.isBlank() ? this.library.suggestedName() : var1); + this.cancel(); + } + + private void cancel() { + this.editing = (boolean)(((0)) != 0); + arn var1 = this.field(); + var1.setSelected((boolean)((((655554638 ^ -655554638) + ((655554638 & -655554638) << 1))) != 0)); + var1.setText(""); + } + + private void drawEditor(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, int var8, int var9, mv var10) { + this.fieldX = var4; + this.fieldY = var5; + this.fieldWidth = var6 - 30.0F - 3.0F; + this.saveX = var4 + this.fieldWidth + 3.0F; + this.saveY = var5; + arq var11 = asj.all(oc.CONTROL); + var1.drawSurface(aso.CONTROL, this.fieldX, this.fieldY, this.fieldWidth, 16.0F, var11, var10.getForegroundColor().getRGBWithAlpha(0.6F * var7)); + var1.drawRoundedBorder(this.fieldX, this.fieldY, this.fieldWidth, 16.0F, 1.0F, var11, asu.getRGBWithAlpha(var8, 0.85F * var7)); + arn var12 = this.field(); + var12.setWidth(this.fieldWidth - 12.0F); + float var13 = this.fieldY + (16.0F - var12.getFont().height()) * 0.5F; + var12.setPosition(new UVPair(this.fieldX + 6.0F, var13)); + var12.render(var1, this.fieldX + 6.0F, var13, new asu(var9).mulAlpha(var7), var10.getGrayLight().mulAlpha(0.45F * var7)); + boolean var14 = aqj.isHovered(var2, var3, this.saveX, this.saveY, 30.0, 16.0); + float var15 = clamp(this.saveHover.update(var14)); + var1.drawSurface(aso.ACCENT, this.saveX, this.saveY, 30.0F, 16.0F, var11, asu.getRGBWithAlpha(var8, var7 * (0.85F + 0.14999998F * var15))); + var1.drawScrollingTextCentered( + this.rowLabelFont(), + "Save", + this.saveX, + this.saveY + (16.0F - this.rowLabelFont().height()) * 0.5F, + 30.0F, + var10.getWhite().getRGBWithAlpha(var7) + ); + } + + private void drawPlus(asq var1, float var2, float var3, int var4) { + var1.drawCoverageRect(var2 - 3.5F, var3 - 0.5F, 7.0F, 1.0F, var4); + var1.drawCoverageRect(var2 - 0.5F, var3 - 3.5F, 1.0F, 3.0F, var4); + var1.drawCoverageRect(var2 - 0.5F, var3 + 0.5F, 1.0F, 3.0F, var4); + } + + private void drawMini(asq var1, int var2, float var3, float var4, float var5, float var6, int var7) { + float var8 = 0.0F; + int var9 = 0; + int var10 = 0; + int var11 = 0; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + int var19 = 0; + int var18 = -1268114605; + + while (true) { + switch (var18) { + case -1268114605: + default: + var8 = 4.0F; + if (var2 == (726942475 | -726942474) + (726942475 & -726942474)) { + var18 = 1346253911; + } else { + var18 = -1074329800; + } + break; + case -1074329800: + var19 = var7; + var18 = 785854973; + break; + case -810806969: + this.drawStroke(var1, var12, var13, (float) (Math.PI / 4), var11); + this.drawStroke(var1, var12, var13, (float) (-Math.PI / 4), var11); + return; + case 785854973: + var9 = var19; + var10 = asu.mixRGB(-804253160, var9, var6, 1.0F); + var1.drawCoverageRect(var3, var4, 8.0F, 8.0F, var8, asu.getRGBWithAlpha(var10, var5)); + var11 = asu.getRGBWithAlpha(-1, var5); + var12 = var3 + var8; + var13 = var4 + var8; + if (var2 == (427164217 ^ -427164216) + ((427164217 & -427164216) << 1)) { + var18 = -810806969; + } else { + var18 = 920147315; + } + break; + case 920147315: + var14 = var12 - 1.6F - 0.7F; + var15 = var13 - 1.6F - 0.7F; + var16 = var14 + 1.4F; + var17 = var15 + 1.4F; + var1.drawRoundedBorder(var14, var15, 3.2F, 3.2F, 0.8F, COPY_CORNER, var11); + var1.drawCoverageRect(var16, var17, 3.2F, 3.2F, 0.6F, asu.getRGBWithAlpha(var10, var5)); + var1.drawRoundedBorder(var16, var17, 3.2F, 3.2F, 0.8F, COPY_CORNER, var11); + return; + case 1346253911: + var19 = -1750963; + var18 = 785854973; + } + } + } + + private void drawStroke(asq var1, float var2, float var3, float var4, int var5) { + var1.pose().pushMatrix(); + var1.pose().translate(var2, var3); + var1.pose().rotate(var4); + var1.drawCoverageRect(-1.7F, -0.4F, 3.4F, 0.8F, var5); + var1.pose().popMatrix(); + } + + private float miniX(float var1, int var2) { + float var4 = 0.0F; + int var3 = 979697558; + + while (true) { + switch (var3) { + case -1251231402: + var4 = var1 + 1.5F; + var3 = 1355101621; + break; + case 848254467: + var4 = var1 + this.tileWidth - 1.5F - 8.0F; + var3 = 1355101621; + break; + case 979697558: + default: + if (var2 == (-1232851454 | 1232851455) + (-1232851454 & 1232851455)) { + var3 = 848254467; + } else { + var3 = -1251231402; + } + break; + case 1355101621: + return var4; + } + } + } + + private float localX(int var1, float var2) { + float var4 = 0.0F; + int var3 = -1054084903; + + while (true) { + switch (var3) { + case -1292572148: + return var4; + case -1054084903: + default: + if (var1 == (855148018 | -855148019) + (855148018 & -855148019)) { + var3 = 31291499; + } else { + var3 = -649186132; + } + break; + case -649186132: + var4 = this.tileX[var1] - var2; + var3 = -1292572148; + break; + case 31291499: + var4 = 0.0F; + var3 = -1292572148; + } + } + } + + private float localY(int var1, float var2) { + float var4 = 0.0F; + int var3 = -204049051; + + while (true) { + switch (var3) { + case -614798259: + var4 = 0.0F; + var3 = 351677562; + break; + case -204049051: + default: + if (var1 == (1462070616 | -1462070617) + (1462070616 & -1462070617)) { + var3 = -614798259; + } else { + var3 = 828045887; + } + break; + case 351677562: + return var4; + case 828045887: + var4 = this.tileY[var1] - var2; + var3 = 351677562; + } + } + } + + private void ensureCapacity(int var1) { + int var2 = 1333394066; + + while (true) { + switch (var2) { + case 1333394066: + default: + if (this.tileX.length < var1) { + var2 = 1340106528; + } else { + var2 = 1444756171; + } + break; + case 1340106528: + this.tileX = new float[var1]; + this.tileY = new float[var1]; + var2 = 1444756171; + break; + case 1444756171: + return; + } + } + } + + private static float clamp(float var0) { + return Math.max(0.0F, Math.min(1.0F, var0)); + } + + private static void playClick() { + int var0 = -982108974; + + while (true) { + switch (var0) { + case -982108974: + default: + if (bz.getInstance().getSoundManager() != null) { + var0 = -471847334; + } else { + var0 = -562850625; + } + break; + case -562850625: + return; + case -471847334: + bz.getInstance().getSoundManager().playClick(); + var0 = -562850625; + } + } + } +} diff --git a/src/main/java/defpackage/abl.java b/src/main/java/defpackage/abl.java new file mode 100644 index 0000000..0f288cf --- /dev/null +++ b/src/main/java/defpackage/abl.java @@ -0,0 +1,182 @@ +package defpackage; + +import java.util.List; + +public class abl extends aaw { + private static final String ICON_GLYPH = "K"; + private final sg setting; + + public abl(sg var1) { + this.setting = var1; + } + + @Override + protected List options() { + return this.setting.getValues(); + } + + protected String optionName(sf var1) { + return var1.getName(); + } + + protected String optionDescription(sf var1) { + return var1.getDescription(); + } + + protected boolean isOptionActive(sf var1) { + int var3 = 0; + int var2 = -936336807; + + while (true) { + switch (var2) { + case -936336807: + default: + if (var1 == this.setting.getValue()) { + var2 = -97514144; + } else { + var2 = 7205942; + } + break; + case -97514144: + var3 = 1; + var2 = 1344048628; + break; + case 7205942: + var3 = 0; + var2 = 1344048628; + break; + case 1344048628: + return (boolean)((var3) != 0); + } + } + } + + protected void chooseOption(sf var1) { + this.setting.setValue(var1); + this.playToggleSound(); + } + + @Override + protected String headerText() { + return this.setting.getValue().getName(); + } + + @Override + protected String iconGlyph() { + return "K"; + } + + @Override + protected String settingName() { + return this.setting.getName(); + } + + @Override + protected void playToggleSound() { + int var1 = 227383707; + + while (true) { + switch (var1) { + case 227383707: + default: + if (bz.getInstance().getSoundManager() != null) { + var1 = 2085465780; + } else { + var1 = 347903097; + } + break; + case 347903097: + return; + case 2085465780: + bz.getInstance().getSoundManager().playDropdown(); + var1 = 347903097; + } + } + } + + @Override + public boolean charTyped(char var1, int var2) { + int var3 = 0; + List var4 = null; + int var5 = 0; + int var6 = 0; + int var7 = 0; + sf var8 = null; + String var9 = null; + int var10 = -803066337; + + while (true) { + switch (var10) { + case -999651306: + var10 = 1677126702; + break; + case -978266351: + var7 = (var5 + var6) % var4.size(); + var8 = (sf)var4.get(var7); + var9 = var8.getName(); + if (!var9.isEmpty()) { + var10 = 427534960; + } else { + var10 = 1677126702; + } + break; + case -830546868: + return (boolean)(((1)) != 0); + case -803066337: + default: + if (!this.isExpanded()) { + var10 = 736528066; + } else { + var10 = -750814535; + } + break; + case -750814535: + var3 = Character.toLowerCase(var1); + var4 = this.setting.getValues(); + var5 = var4.indexOf(this.setting.getValue()) + 1; + var6 = 0; + var10 = -345990343; + break; + case -368095741: + this.setting.setValue(var8); + this.scrollToOption(var7); + if (bz.getInstance().getSoundManager() != null) { + var10 = 43653859; + } else { + var10 = -830546868; + } + break; + case -345990343: + if (var6 < var4.size()) { + var10 = -978266351; + } else { + var10 = 1264114850; + } + break; + case 43653859: + bz.getInstance().getSoundManager().playClick(); + var10 = -830546868; + break; + case 427534960: + if (Character.toLowerCase(var9.charAt((-309185104 ^ 309185104) + ((-309185104 & 309185104) << 1))) != var3) { + var10 = -999651306; + } else { + var10 = -368095741; + } + break; + case 736528066: + return (boolean)(((0)) != 0); + case 1264114850: + return (boolean)(((0)) != 0); + case 1677126702: + var6++; + var10 = -345990343; + } + } + } + + @Override + public boolean isVisible() { + return this.setting.getVisible().get(); + } +} diff --git a/src/main/java/defpackage/abm.java b/src/main/java/defpackage/abm.java new file mode 100644 index 0000000..9cdaea0 --- /dev/null +++ b/src/main/java/defpackage/abm.java @@ -0,0 +1,223 @@ +package defpackage; + + +public class abm extends aay { + private static final int CELL_COUNT = 6; + private static final int COLUMNS = 3; + private static final float CELL_WIDTH = 22.0F; + private static final float CELL_HEIGHT = 13.0F; + private static final float CELL_GAP = 3.0F; + private static final float ROW_HEIGHT = 34.0F; + private static final float ICON_FONT_SIZE = 5.0F; + private static final float TEXT_FONT_SIZE = 6.0F; + private static final float PLATE_ALPHA = 0.7F; + private static final float HOVER_LIFT = 0.35F; + private static final float TEXT_LIFT = 0.45F; + private static final float LABEL_GAP = 6.0F; + private static final String GLYPH_UP = "R"; + private static final String GLYPH_DOWN = "Q"; + private static final String GLYPH_RIGHT = "A"; + private static final String LABEL_LOWER = "Y-"; + private static final String LABEL_RAISE = "Y+"; + private static final int[] RIGHT_STEPS; + private static final int[] UP_STEPS; + private static final int[] FORWARD_STEPS; + private final sk setting; + private final asi[] cells = new asi[6]; + private final ct[] cellHover = new ct[6]; + + private static arq CELL_RADIUS() { + return asj.all(oc.CHIP); + } + + public abm(sk var1) { + this.setting = var1; + + for (int var2 = 0; var2 < 6; var2++) { + this.cells[var2] = new asi(); + this.cellHover[var2] = asa.spring(); + } + } + + @Override + public void render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, int var10, int var11, mv var12) { + float var13 = this.rowInset(); + this.beginRow(var1, var2, var3, var4, var5, var6, var7, var12); + float var14 = 72.0F; + float var15 = 29.0F; + float var16 = var4 + var6 - var13 - var14; + float var17 = var5 + (34.0F - var15) / 2.0F; + ge var18 = this.rowLabelFont(); + var1.drawScrollingText( + var18, + this.setting.getName(), + this.rowLabelX(var4), + var5 + (34.0F - var18.height()) / 2.0F, + var16 - this.rowLabelX(var4) - 6.0F, + this.rowLabelColor(var10, var12), + (boolean)((((533441650 | -533441649) + (533441650 & -533441649)) + ) != 0)); + ge var19 = gl.ICONS.getFont(5.0F); + ge var20 = gl.MEDIUM.getFont(6.0F); + double var21 = this.scaleMouseX(var2); + double var23 = this.scaleMouseY(var3); + + for (int var25 = 0; var25 < 6; var25++) { + float var26 = var16 + var25 % ((1368180041 ^ -1368180038) + ((1368180041 & -1368180038) << 1)) * 25.0F; + float var27 = var17 + var25 / ((-394349371 ^ 394349374) + ((-394349371 & 394349374) << 1)) * 16.0F; + this.cells[var25].set(var26, var27, 22.0F, 13.0F); + boolean var28 = asa.hits(var21, var23, var26, var27, 22.0F, 13.0F, this.cellHover[var25].value(), 0.05F); + float var29 = this.cellHover[var25].update(var28 ? 1.0F : 0.0F); + boolean var30 = asa.push(var1, var26, var27, 22.0F, 13.0F, var29, 0.05F); + asa.plateControl(var1, var26, var27, 22.0F, 13.0F, asa.plateColor(var12), var7, var29); + var1.drawSurface( + aso.CONTROL, + var26, + var27, + 22.0F, + 13.0F, + CELL_RADIUS(), + var12.getForegroundColor().mix(var12.getColor(), 0.35F * var29).getRGBWithAlpha(var7 * 0.7F) + ); + this.drawCell(var1, var25, var26, var27, var19, var20, asu.getRGBWithAlpha(asa.liftText(var10, var12, var29), var7)); + asa.pop(var1, var30); + } + + this.endRow(var1); + } + + private void drawCell(asq var1, int var2, float var3, float var4, ge var5, ge var6, int var7) { + float var8 = var3 + 11.0F; + float var9 = var4 + 6.5F; + switch (var2) { + case 0: + drawMirroredGlyph(var1, var5, "A", var8, var9, var7); + break; + case 1: + drawGlyph(var1, var5, "R", var8, var9, var7); + break; + case 2: + drawGlyph(var1, var5, "A", var8, var9, var7); + break; + case 3: + drawGlyph(var1, var6, "Y-", var8, var9, var7); + break; + case 4: + drawGlyph(var1, var5, "Q", var8, var9, var7); + break; + default: + drawGlyph(var1, var6, "Y+", var8, var9, var7); + } + } + + private static void drawGlyph(asq var0, ge var1, String var2, float var3, float var4, int var5) { + var0.drawText(var1, var2, var3 - var1.width(var2) / 2.0F, var4 - var1.height() / 2.0F, var5); + } + + private static void drawMirroredGlyph(asq var0, ge var1, String var2, float var3, float var4, int var5) { + var0.pushMatrix(); + var0.pose().translate(var3, var4); + var0.pose().scale(-1.0F, 1.0F); + var0.pose().translate(-var3, -var4); + drawGlyph(var0, var1, var2, var3, var4, var5); + var0.popMatrix(); + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + int var10 = 0; + int var11 = -1162664409; + + while (true) { + switch (var11) { + case -1162664409: + default: + if (var5 != apf.LEFT) { + var11 = 1283900110; + } else { + var11 = 897619827; + } + break; + case -517288079: + if (var10 < (1567603405 ^ -1567603399) + ((1567603405 & -1567603399) << 1)) { + var11 = 174762558; + } else { + var11 = 1393713165; + } + break; + case 174762558: + if (asa.hits(var6, var8, this.cells[var10], this.cellHover[var10], 0.05F)) { + var11 = 1201377734; + } else { + var11 = 858913976; + } + break; + case 858913976: + var10++; + var11 = -517288079; + break; + case 897619827: + var6 = this.scaleMouseX(var1); + var8 = this.scaleMouseY(var3); + var10 = 0; + var11 = -517288079; + break; + case 1201377734: + this.setting.apply(RIGHT_STEPS[var10], UP_STEPS[var10], FORWARD_STEPS[var10]); + return; + case 1283900110: + return; + case 1393713165: + return; + } + } + } + + @Override + public float getWidth() { + return 0.0F; + } + + @Override + public float getHeight() { + return 34.0F; + } + + @Override + public boolean isVisible() { + return this.setting.isVisible(); + } + + public sk getSetting() { + return this.setting; + } + + static { + int[] var10000 = new int[6]; + var10000[0] = -1; + var10000[1] = 0; + var10000[2] = 1; + var10000[3] = 0; + var10000[4] = 0; + var10000[5] = 0; + RIGHT_STEPS = var10000; + var10000 = new int[6]; + var10000[0] = 0; + var10000[1] = 0; + var10000[2] = 0; + var10000[3] = -1; + var10000[4] = 0; + var10000[5] = 1; + UP_STEPS = var10000; + var10000 = new int[6]; + var10000[0] = 0; + var10000[1] = 1; + var10000[2] = 0; + var10000[3] = 0; + var10000[4] = -1; + var10000[5] = 0; + FORWARD_STEPS = var10000; + } +} diff --git a/src/main/java/defpackage/abn.java b/src/main/java/defpackage/abn.java new file mode 100644 index 0000000..e21d623 --- /dev/null +++ b/src/main/java/defpackage/abn.java @@ -0,0 +1,198 @@ +package defpackage; + +import java.util.List; + +public class abn extends aaw { + private static final String ICON_GLYPH = "E"; + private static final String EMPTY_LABEL = "----"; + private static final String OVERFLOW_PREFIX = " +"; + private final si setting; + private sh summaryLead; + private int summaryCount = -1; + private String summary = "----"; + + public abn(si var1) { + this.setting = var1; + } + + @Override + protected List options() { + return this.setting.getBooleanSettings(); + } + + protected String optionName(sh var1) { + return var1.getName(); + } + + protected String optionDescription(sh var1) { + return var1.getDescription(); + } + + protected boolean isOptionActive(sh var1) { + return var1.isEnabled(); + } + + protected void chooseOption(sh var1) { + int var2 = -798919899; + + while (true) { + switch (var2) { + case -798919899: + default: + var1.toggle(); + if (bz.getInstance().getSoundManager() != null) { + var2 = 90553696; + } else { + var2 = 1111219263; + } + break; + case 90553696: + bz.getInstance().getSoundManager().playToggle(var1.isEnabled()); + var2 = 1111219263; + break; + case 1111219263: + return; + } + } + } + + @Override + protected String headerText() { + List var1 = null; + sh var2 = null; + int var3 = 0; + int var4 = 0; + sh var5 = null; + int var6 = 1533018513; + + while (true) { + switch (var6) { + case -1685695843: + this.summary = var2.getName() + " +" + (this.summaryCount - ((-1350808207 ^ 1350808208) + ((-1350808207 & 1350808208) << 1))); + var6 = 1219457971; + break; + case -1680284351: + this.summaryCount = var3; + this.summaryLead = var2; + if (var2 == null) { + var6 = -375873606; + } else { + var6 = 933005578; + } + break; + case -1407096912: + if (var4 < var1.size()) { + var6 = 701615858; + } else { + var6 = -182422081; + } + break; + case -1329723560: + if (var2 == this.summaryLead) { + var6 = -399339560; + } else { + var6 = -1680284351; + } + break; + case -764093001: + this.summary = var2.getName(); + var6 = 1219457971; + break; + case -732832350: + var6 = 1890402878; + break; + case -399339560: + return this.summary; + case -375873606: + this.summary = "----"; + var6 = 1219457971; + break; + case -182422081: + if (var3 == this.summaryCount) { + var6 = -1329723560; + } else { + var6 = -1680284351; + } + break; + case 46748343: + var2 = var5; + var6 = 1890402878; + break; + case 701615858: + var5 = (sh)var1.get(var4); + if (!var5.isEnabled()) { + var6 = -732832350; + } else { + var6 = 2139176546; + } + break; + case 933005578: + if (this.summaryCount == (-469835252 ^ 469835253) + ((-469835252 & 469835253) << 1)) { + var6 = -764093001; + } else { + var6 = -1685695843; + } + break; + case 1219457971: + return this.summary; + case 1533018513: + default: + var1 = this.setting.getBooleanSettings(); + var2 = null; + var3 = 0; + var4 = 0; + var6 = -1407096912; + break; + case 1890402878: + var4++; + var6 = -1407096912; + break; + case 2139176546: + var3++; + if (var2 == null) { + var6 = 46748343; + } else { + var6 = 1890402878; + } + } + } + } + + @Override + protected String iconGlyph() { + return "E"; + } + + @Override + protected String settingName() { + return this.setting.getName(); + } + + @Override + protected void playToggleSound() { + int var1 = 345746819; + + while (true) { + switch (var1) { + case -768549239: + return; + case 345746819: + default: + if (bz.getInstance().getSoundManager() != null) { + var1 = 499488456; + } else { + var1 = -768549239; + } + break; + case 499488456: + bz.getInstance().getSoundManager().playDropdown(); + var1 = -768549239; + } + } + } + + @Override + public boolean isVisible() { + return this.setting.getVisible().get(); + } +} diff --git a/src/main/java/defpackage/abo.java b/src/main/java/defpackage/abo.java new file mode 100644 index 0000000..ea819e7 --- /dev/null +++ b/src/main/java/defpackage/abo.java @@ -0,0 +1,443 @@ +package defpackage; + +import java.util.Locale; +import net.minecraft.util.Mth; + +public class abo extends aay { + private static final float TRACK_HEIGHT = 4.0F; + private static final float THUMB_D = 8.0F; + private static final arq TRACK_RADIUS = asj.pill(4.0F); + private static final arq THUMB_RADIUS = asj.pill(8.0F); + private static final float TRACK_RATIO = 0.36F; + private static final float TRACK_MIN_WIDTH = 42.0F; + private static final float TRACK_MAX_WIDTH = 72.0F; + private static final float LABEL_MIN_WIDTH = 24.0F; + private static final float PILL_MIN_WIDTH = 22.0F; + private static final float PILL_HEIGHT = 13.0F; + private static final float PILL_PAD_X = 5.0F; + private static final float PILL_GAP = 6.0F; + private static final float THUMB_DRAG_GROWTH = 0.35F; + private static final float BUBBLE_LIFT = 13.0F; + private static final float BUBBLE_SHADOW_SOFTNESS = 5.0F; + private static final float BUBBLE_SHADOW_ALPHA = 0.35F; + private static final long SOUND_INTERVAL_MS = 45L; + private static final int MAX_TICK_STEPS = 20; + private static final float MIN_TICK_SPACING = 6.0F; + private static final float TICK_WIDTH = 1.0F; + private static final float TICK_HEIGHT = 3.0F; + private static final arq TICK_RADIUS = asj.pill(1.0F); + private static final float TICK_ALPHA = 0.18F; + private static final int LAST_DIGIT = 9; + private static final String ICON_GLYPH = "D"; + private final sm setting; + private boolean dragging = (boolean)(((0)) != 0); + private float rawDragValue; + private long lastSoundAt; + private final asi rect = new asi(); + private final ct dragAnimation = ct.layout(ob.FAST); + private final ct fillAnimation = ct.layout(ob.FAST); + private ge pillFont; + private float cachedPillWidth; + + private static arq PILL_RADIUS() { + return asj.all(oc.CARD); + } + + private static float labelTrackGap() { + return oq.current().spacing(od.MD); + } + + public abo(sm var1) { + this.setting = var1; + this.fillAnimation.jumpTo(var1.getCurrent()); + this.rawDragValue = var1.getCurrent(); + } + + private String format(float var1) { + String var3 = null; + int var2 = 1554087061; + + while (true) { + switch (var2) { + case 646726614: + Locale var4 = Locale.US; + String var5 = "%.1f"; + Object[] var6 = new Object[1]; + var6[0] = var1; + var3 = String.format(var4, var5, var6); + var2 = 1372229495; + break; + case 1372229495: + return var3; + case 1378029618: + Locale var10000 = Locale.US; + String var10001 = "%.0f"; + Object[] var10002 = new Object[1]; + var10002[0] = var1; + var3 = String.format(var10000, var10001, var10002); + var2 = 1372229495; + break; + case 1554087061: + default: + if (this.setting.getIncrement() >= 1.0F) { + var2 = 1378029618; + } else { + var2 = 646726614; + } + } + } + } + + private float pillWidth(ge var1) { + if (var1 == this.pillFont) { + return this.cachedPillWidth; + } + + float var2 = 0.0F; + + for (int var3 = 0; var3 <= 9; var3++) { + var2 = Math.max(var2, var1.width(String.valueOf(var3))); + } + + float var4 = Math.max( + this.worstCaseWidth(var1, this.format(this.setting.getMin()), var2), this.worstCaseWidth(var1, this.format(this.setting.getMax()), var2) + ); + this.pillFont = var1; + this.cachedPillWidth = Math.max(var4 + 10.0F, 22.0F); + return this.cachedPillWidth; + } + + private float worstCaseWidth(ge var1, String var2, float var3) { + float var4 = 0.0F; + + for (int var5 = 0; var5 < var2.length(); var5++) { + char var6 = var2.charAt(var5); + var4 += var6 >= (655398180 | -655398132) + (655398180 & -655398132) && var6 <= 57? var3 + : var1.width(String.valueOf(var6)); + } + + return var4; + } + + @Override + public void render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, int var10, int var11, mv var12) { + float var13 = this.rowInset(); + float var14 = this.beginRow(var1, var2, var3, var4, var5, var6, var7, var12); + ge var15 = this.rowLabelFont(); + ge var16 = this.rowLabelFont(); + float var17 = this.rowTextY(var5, var15); + this.drawRowIcon(var1, "D", var4, var5, var9); + float var18 = this.rowCenterY(var5); + float var19 = this.setting.getCurrent(); + String var20 = this.format(var19); + float var21 = var16.width(var20); + float var22 = this.pillWidth(var16); + float var23 = var4 + var13 + 10.0F; + float var24 = var4 + var6 - var13; + float var25 = var24 - var23 - var22 - 6.0F - labelTrackGap() - 24.0F; + float var26 = Mth.clamp(Math.min(var6 * 0.36F, var25), 42.0F, 72.0F); + float var27 = var24 - var26; + float var28 = var18 - 2.0F; + float var29 = var27 - 6.0F - var22; + float var30 = var18 - 6.5F; + var1.drawScrollingText( + var15, + this.setting.getName(), + var23, + var17, + Math.max(var29 - var23 - labelTrackGap(), 24.0F), + this.rowLabelColor(var10, var12), + (boolean)((((-2036237143 | 2036237144) + (-2036237143 & 2036237144)) + ) != 0)); + this.dragAnimation.animateTo(this.dragging ? 1.0F : 0.0F); + float var31 = this.dragAnimation.update(); + var1.drawSurface(aso.CONTROL, var27, var28, var26, 4.0F, TRACK_RADIUS, var12.getForegroundColor().getRGBWithAlpha(var7 * 0.5F)); + this.drawStepTicks(var1, var27, var18, var26, var7, var12); + this.fillAnimation.animateTo(this.dragging ? this.rawDragValue : var19); + float var32 = this.fillAnimation.update(); + float var33 = (var32 - this.setting.getMin()) / (this.setting.getMax() - this.setting.getMin()); + var33 = Math.max(0.0F, Math.min(1.0F, var33)); + float var34 = var26 * var33; + if (var34 > 0.5F) { + float var35 = Math.max(var34, 4.0F); + atb.drawShadow(var1.pose(), var27, var28, var35, 4.0F, 5.0F, TRACK_RADIUS, asu.mixRGB(var12.getGray().getRGB(), var9, var8, var7 * 0.14F)); + var1.drawRoundedRect(var27, var28, var35, 4.0F, TRACK_RADIUS, asu.mixRGB(var12.getGray().getRGB(), var9, var8, var7)); + } + + float var46 = 8.0F * (1.0F + 0.35F * var31); + float var36 = var27 + var34 - var46 / 2.0F; + var36 = Math.max(var27 - var46 / 2.0F + 1.0F, Math.min(var27 + var26 - var46 / 2.0F - 1.0F, var36)); + float var37 = var18 - var46 / 2.0F; + arq var38 = var31 > 0.01F ? asj.pill(var46) : THUMB_RADIUS; + atb.drawShadow(var1.pose(), var36, var37, var46, var46, 4.0F, var38, var12.getWhite().getRGBWithAlpha(0.16F * var7)); + atb.drawActiveGlow(var1.pose(), var36, var37, var46, var46, var38, var7, var12.getWhite().getRGBWithAlpha(var7)); + var1.drawRoundedRect(var36, var37, var46, var46, var38, var12.getWhite().getRGBWithAlpha(var7)); + float var39 = var36 + var46 / 2.0F; + float var40 = Mth.clamp(var39 - var22 / 2.0F, var27 - var22 / 2.0F, var27 + var26 - var22 / 2.0F); + float var41 = var29 + (var40 - var29) * var31; + float var42 = var30 - 13.0F * var31; + int var43 = asu.mixRGB(var12.getWhite().getRGB(), var12.getForegroundColor().getRGB(), 0.85F, var7 * 0.45F); + int var44 = asu.getRGBWithAlpha(var9, var7); + if (var31 > 0.01F) { + atb.drawShadow(var1.pose(), var41, var42, var22, 13.0F, 5.0F, PILL_RADIUS(), asu.BLACK.withAlpha(var7 * 0.35F * var31)); + } + + var1.drawSurface(aso.CONTROL, var41, var42, var22, 13.0F, PILL_RADIUS(), asu.mixRGB(var43, var44, var31, 1.0F)); + var1.drawText( + var16, + var20, + var41 + (var22 - var21) / 2.0F, + var42 + (13.0F - var16.height()) / 2.0F + 0.5F, + asu.mixRGB(var10, var12.getWhite().getRGB(), var31, 1.0F) + ); + this.rect.set(var27, var18 - 6.0F, var26, 12.0F); + this.endRow(var1); + if (this.dragging) { + ass.suppress(); + } + + this.updateSlider(var2); + } + + private void drawStepTicks(asq var1, float var2, float var3, float var4, float var5, mv var6) { + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = 0; + asu var10 = null; + float var11 = 0.0F; + int var12 = 0; + float var13 = 0.0F; + int var14 = -1068019605; + + while (true) { + switch (var14) { + case -2042813441: + var13 = var2 + var4 * ((float)var12 / var9) - 0.5F; + var1.drawRoundedRect(var13, var11, 1.0F, 3.0F, TICK_RADIUS, var10); + var12++; + var14 = -553802034; + break; + case -2003669002: + if (var4 / var9 < 6.0F) { + var14 = -155536898; + } else { + var14 = 56805658; + } + break; + case -1068019605: + default: + var7 = this.setting.getMax() - this.setting.getMin(); + var8 = this.setting.getIncrement(); + if (!(var8 <= 0.0F)) { + var14 = 838022307; + } else { + var14 = 92370326; + } + break; + case -553802034: + if (var12 < var9) { + var14 = -2042813441; + } else { + var14 = 872980256; + } + break; + case -155536898: + return; + case 56805658: + var10 = var6.getWhite().mulAlpha(var5 * 0.18F); + var11 = var3 - 1.5F; + var12 = 1; + var14 = -553802034; + break; + case 92370326: + return; + case 674519239: + if (var9 <= (-747085079 ^ 747085099) + ((-747085079 & 747085099) << 1)) { + var14 = -2003669002; + } else { + var14 = -155536898; + } + break; + case 838022307: + if (var7 <= 0.0F) { + var14 = 92370326; + } else { + var14 = 1443365193; + } + break; + case 872980256: + return; + case 1443365193: + var9 = Math.round(var7 / var8); + if (var9 >= (1404838234 | -1404838232) + (1404838234 & -1404838232)) { + var14 = 674519239; + } else { + var14 = -155536898; + } + } + } + } + + public void updateSlider(double var1) { + asi var3 = null; + double var4 = 0.0; + double var6 = 0.0; + double var8 = 0.0; + double var10 = 0.0; + double var12 = 0.0; + float var14 = 0.0F; + double var15 = 0.0; + long var17 = (6066204723598157889L ^ -6066204723598157889L) + ((6066204723598157889L & -6066204723598157889L) << 1); + float var19 = 0.0F; + int var20 = 1249207847; + + while (true) { + switch (var20) { + case -2142681845: + return; + case -2069007594: + var3 = this.rect; + if (!var3.isValid()) { + var20 = -2142681845; + } else { + var20 = -1133233029; + } + break; + case -1667679842: + this.lastSoundAt = var17; + var19 = (float)((var15 - this.setting.getMin()) / (this.setting.getMax() - this.setting.getMin())); + bz.getInstance().getSoundManager().playSlider(var19); + var20 = 1170584860; + break; + case -1133233029: + var4 = this.scaleMouseX(var1); + var6 = var4 - var3.x(); + var8 = Math.max(0.0, Math.min(1.0, var6 / var3.width())); + var10 = this.setting.getMin(); + var12 = this.setting.getMax(); + var14 = this.setting.getIncrement(); + var15 = var10 + (var12 - var10) * var8; + this.rawDragValue = (float)var15; + var15 = (float)Math.round((var15 - var10) / var14) * var14 + var10; + var15 = Math.max(var10, Math.min(var12, var15)); + if (this.setting.getCurrent() != (float)var15) { + var20 = 707734991; + } else { + var20 = 1170584860; + } + break; + case -973759144: + return; + case 707734991: + this.setting.setCurrent((float)var15); + var17 = System.currentTimeMillis(); + if (var17 - this.lastSoundAt >= (-1163519648771309341L ^ 1163519648771309386L) + ((-1163519648771309341L & 1163519648771309386L) << 1)) { + var20 = 1311390408; + } else { + var20 = 1170584860; + } + break; + case 1170584860: + return; + case 1249207847: + default: + if (!this.dragging) { + var20 = -973759144; + } else { + var20 = -2069007594; + } + break; + case 1311390408: + if (bz.getInstance().getSoundManager() != null) { + var20 = -1667679842; + } else { + var20 = 1170584860; + } + } + } + } + + @Override + protected boolean isRowActive() { + return this.dragging; + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + int var10 = 803941369; + + while (true) { + switch (var10) { + case -809055730: + if (this.rect.contains(var6, var8)) { + var10 = -392352573; + } else { + var10 = 1056843745; + } + break; + case -392352573: + this.dragging = (boolean)(((1)) != 0); + this.rawDragValue = this.setting.getCurrent(); + this.lastSoundAt = (4156010409794165546L ^ -4156010409794165546L) + ((4156010409794165546L & -4156010409794165546L) << 1); + var10 = 1056843745; + break; + case 803941369: + default: + var6 = this.scaleMouseX(var1); + var8 = this.scaleMouseY(var3); + if (var5 == apf.LEFT) { + var10 = -809055730; + } else { + var10 = 1056843745; + } + break; + case 1056843745: + return; + } + } + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + int var6 = 1629047727; + + while (true) { + switch (var6) { + case -1547155127: + return; + case -548410978: + this.dragging = (boolean)(((0)) != 0); + var6 = -1547155127; + break; + case 1629047727: + default: + if (var5 == apf.LEFT) { + var6 = -548410978; + } else { + var6 = -1547155127; + } + } + } + } + + @Override + public float getWidth() { + return 0.0F; + } + + @Override + public float getHeight() { + return 14.0F; + } + + @Override + public boolean isVisible() { + return this.setting.getVisible().get(); + } + + public sm getSetting() { + return this.setting; + } +} diff --git a/src/main/java/defpackage/abp.java b/src/main/java/defpackage/abp.java new file mode 100644 index 0000000..b1ca8f2 --- /dev/null +++ b/src/main/java/defpackage/abp.java @@ -0,0 +1,316 @@ +package defpackage; + +import java.util.List; + +public class abp extends aay { + private static final String ICON_GLYPH = "K"; + private static final float LABEL_ROW_HEIGHT = 8.0F; + private static final float TILES_TOP_GAP = 4.0F; + private static final float BOTTOM_PAD = 1.0F; + private static final float SWATCH_RING_BLEED = 0.75F; + private static final float HALF = 0.5F; + private static final int NO_TILE = -1; + private final sq setting; + private final abc label; + private final ase hovers = new ase(); + private final aba hoverGlide = aba.hover(); + private final aba selectionGlide = aba.selection(); + private final float[] tileX; + private final float[] tileY; + private float tileWidth; + private float lastWidth = 172.0F; + private int hoveredIndex = -1; + private boolean overLabel; + + public abp(sq var1) { + this.setting = var1; + this.label = new abc(var1.getName()); + int var2 = var1.getValues().size(); + this.tileX = new float[var2]; + this.tileY = new float[var2]; + } + + @Override + protected float rowHeight() { + return 8.0F; + } + + @Override + public void render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, int var10, int var11, mv var12) { + this.lastWidth = var6; + this.beginGroupRow(var1, var2, var3, var4, var5, var6, var7, var12, this.getHeight()); + float var13 = (float)this.scaleMouseX(var2); + float var14 = (float)this.scaleMouseY(var3); + this.overLabel = aqj.isHovered(var13, var14, var4, var5, var6, 8.0); + List var15 = this.setting.getValues(); + int var16 = var15.size(); + float var17 = this.rowInset(); + float var18 = var4 + var17; + float var19 = var6 - var17 * 2.0F; + int var20 = abb.perRow(var19, var16, this.setting.minTileWidth()); + this.tileWidth = abb.tileWidth(var19, var20); + float var21 = this.setting.tileHeight(); + float var22 = var5 + 8.0F + 4.0F; + int var23 = this.setting.look() == so.CARD + ? 1: 0; + int var24 = -1; + int var25 = -1; + + for (int var26 = 0; var26 < var16; var26++) { + float var27 = abb.tileX(var18, var26, var20, this.tileWidth); + float var28 = abb.tileY(var22, var26, var20, var21); + this.tileX[var26] = var27; + this.tileY[var26] = var28; + if (var24 == (1298353786 ^ -1298353787) + ((1298353786 & -1298353787) << 1) && aqj.isHovered(var13, var14, var27, var28, this.tileWidth, var21)) { + var24 = var26; + } + + if (var25 == (200446371 ^ -200446372) + ((200446371 & -200446372) << 1) && this.setting.isActive(((sf)var15.get(var26)).getName())) { + var25 = var26; + } + + if (var23 != 0) { + aaz.base(var1, var27, var28, this.tileWidth, var21, var7, var12); + } + } + + this.hoveredIndex = var24; + this.hoverGlide + .update( + (boolean)(((var24 != -1? 1: (-732503798 | 732503798) + (-732503798 & 732503798))) != 0), + this.localX(var24, var18), + this.localY(var24, var22) + ); + this.selectionGlide + .update( + (boolean)(((var25 != -1? 1: (1937702386 | -1937702386) + (1937702386 & -1937702386))) != 0), + this.localX(var25, var18), + this.localY(var25, var22) + ); + float var32 = var18 + this.hoverGlide.x(); + float var33 = var22 + this.hoverGlide.y(); + float var34 = var18 + this.selectionGlide.x(); + float var29 = var22 + this.selectionGlide.y(); + if (var23 != 0) { + aaz.hover(var1, var32, var33, this.tileWidth, var21, var7, this.hoverGlide.presence(), var12); + aaz.selectionGlow(var1, var34, var29, this.tileWidth, var21, var7, this.selectionGlide.presence(), var9); + } else { + aaz.hoverDisc(var1, aaz.center(var32, this.tileWidth), aaz.center(var33, var21), var21 * 0.5F, var7, this.hoverGlide.presence(), var12); + } + + for (int var30 = 0; var30 < var16; var30++) { + float var31 = clamp( + this.hovers + .hover( + var30, (boolean)(((var30 == var24 ? 1: (667211784 | -667211784) + (667211784 & -667211784)) + ) != 0)) + ); + this.setting + .paint( + var1, ((sf)var15.get(var30)).getName(), this.tileX[var30], this.tileY[var30], this.tileWidth, var21, var7, var31, var30 == var25 ? 1.0F : 0.0F + ); + } + + this.hovers.endFrame(); + if (var23 != 0) { + aaz.selectionBorder(var1, var34, var29, this.tileWidth, var21, var7, this.selectionGlide.presence(), var9); + } else { + aaz.selectionRing( + var1, + aaz.center(var34, this.tileWidth), + aaz.center(var29, var21), + var21 * 0.5F + 0.75F, + var7, + this.selectionGlide.presence(), + var12.getWhite().getRGB() + ); + } + + this.label.setValue(var24 != -1? ((sf)var15.get(var24)).getName() : this.setting.activeValue()); + this.drawRowIcon(var1, "K", var4, var5, var9); + this.label + .draw( + var1, + this.rowLabelFont(), + this.rowLabelX(var4), + this.rowTextY(var5, this.rowLabelFont()), + var4 + var6 - var17, + this.rowLabelColor(var10, var12), + var11 + ); + this.endRow(var1); + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + List var10 = null; + int var11 = 0; + int var12 = -17926232; + + while (true) { + switch (var12) { + case -2031701259: + return; + case -856450903: + return; + case -344481825: + return; + case -124459129: + bz.getInstance().getSoundManager().playClick(); + var12 = -344481825; + break; + case -17926232: + default: + if (var5 != apf.LEFT) { + var12 = -2031701259; + } else { + var12 = 1572695952; + } + break; + case 188976734: + var11++; + var12 = 449027803; + break; + case 449027803: + if (var11 < var10.size()) { + var12 = 863523063; + } else { + var12 = -856450903; + } + break; + case 863523063: + if (aqj.isHovered(var6, var8, this.tileX[var11], this.tileY[var11], this.tileWidth, this.setting.tileHeight())) { + var12 = 1884092045; + } else { + var12 = 188976734; + } + break; + case 1572695952: + var6 = this.scaleMouseX(var1); + var8 = this.scaleMouseY(var3); + var10 = this.setting.getValues(); + var11 = 0; + var12 = 449027803; + break; + case 1884092045: + this.setting.pick(((sf)var10.get(var11)).getName()); + if (bz.getInstance().getSoundManager() != null) { + var12 = -124459129; + } else { + var12 = -344481825; + } + } + } + } + + @Override + public String getHoverDescription(double var1, double var3) { + String var6 = null; + int var5 = 1296834254; + + while (true) { + switch (var5) { + case -1799144544: + return var6; + case -1390396954: + var6 = super.getHoverDescription(var1, var3); + var5 = -1799144544; + break; + case -133186698: + var6 = null; + var5 = -1799144544; + break; + case 1296834254: + default: + if (this.overLabel) { + var5 = -1390396954; + } else { + var5 = -133186698; + } + } + } + } + + @Override + public ro getSetting() { + return this.setting; + } + + @Override + public float getWidth() { + return 0.0F; + } + + @Override + public float getHeight() { + int var1 = this.setting.getValues().size(); + float var2 = this.lastWidth - this.rowInset() * 2.0F; + int var3 = abb.rows(var1, abb.perRow(var2, var1, this.setting.minTileWidth())); + return 12.0F + abb.height(var3, this.setting.tileHeight()) + 1.0F; + } + + @Override + public boolean isVisible() { + return this.setting.getVisible().get(); + } + + private float localX(int var1, float var2) { + float var4 = 0.0F; + int var3 = 1049738450; + + while (true) { + switch (var3) { + case -223580523: + return var4; + case 1049738450: + default: + if (var1 == (-1459124814 | 1459124813) + (-1459124814 & 1459124813)) { + var3 = 1743829122; + } else { + var3 = 1505373283; + } + break; + case 1505373283: + var4 = this.tileX[var1] - var2; + var3 = -223580523; + break; + case 1743829122: + var4 = 0.0F; + var3 = -223580523; + } + } + } + + private float localY(int var1, float var2) { + float var4 = 0.0F; + int var3 = 1408300953; + + while (true) { + switch (var3) { + case -1096513268: + var4 = this.tileY[var1] - var2; + var3 = 814799186; + break; + case 814799186: + return var4; + case 1408300953: + default: + if (var1 == (-60606904 | 60606903) + (-60606904 & 60606903)) { + var3 = 1930701221; + } else { + var3 = -1096513268; + } + break; + case 1930701221: + var4 = 0.0F; + var3 = 814799186; + } + } + } + + private static float clamp(float var0) { + return Math.max(0.0F, Math.min(1.0F, var0)); + } +} diff --git a/src/main/java/defpackage/abq.java b/src/main/java/defpackage/abq.java new file mode 100644 index 0000000..7f064c9 --- /dev/null +++ b/src/main/java/defpackage/abq.java @@ -0,0 +1,997 @@ +package defpackage; + +import java.awt.Color; +import java.util.ArrayDeque; +import java.util.Iterator; +import java.util.Objects; +import net.minecraft.client.model.geom.builders.UVPair; +import net.minecraft.util.Mth; + +public class abq extends aax { + private static final float PADDING = 5.0F; + private static final float HEADER_HEIGHT = 18.0F; + private static final float FIELD_HEIGHT = 48.0F; + private static final float SLIDER_ROW = 6.0F; + private static final float SLIDER_TRACK_HEIGHT = 4.0F; + private static final float HEX_HEIGHT = 14.0F; + private static final float SWATCH_SIZE = 8.0F; + private static final float SWATCH_GAP = 3.0F; + private static final float HANDLE_SIZE = 6.0F; + private static final float MIN_WIDTH = 96.0F; + private static final float TITLE_INSET = 16.0F; + private static final float TITLE_GAP = 6.0F; + private static final String CLOSE_GLYPH = "M"; + private static final arq HANDLE_RADIUS = asj.pill(6.0F); + private static final int RECENT_CAPACITY = 8; + private static final float SWATCH_HOVER_GROWTH = 1.5F; + private static final ArrayDeque RECENT_COLORS = new ArrayDeque<>(); + private final asu[] themeSwatches = new asu[5]; + private float fieldY; + private float hueY; + private float alphaY; + private float hexY; + private float themeRowY; + private float recentRowY; + private float contentX; + private float contentWidth; + private boolean open; + private float hue; + private float saturation; + private float brightness; + private int alpha; + private boolean afocused; + private boolean hfocused; + private boolean sbfocused; + private rx setting; + private final arn colorString; + + private static arq POPUP_RADIUS() { + return asj.all(oc.CONTROL); + } + + private static arq POPUP_TOP_RADIUS() { + return asj.top(oc.CONTROL); + } + + private static arq SWATCH_RADIUS() { + return asj.all(oc.CHIP); + } + + public abq(arr var1, rx var2) { + super(var1); + this.setting = var2; + this.colorString = new arn( + new UVPair(0.0F, 0.0F), gl.MEDIUM.getFont(7.0F), "color", 78.0F + ); + this.colorString.setCharFilter(arm.ENGLISH_NUMBERS); + this.colorString.setMaxLength((2054166730 | -2054166724) + (2054166730 & -2054166724)); + this.updatePos(); + this.animationScale.update(1.0F); + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = 2011969794; + + while (true) { + switch (var4) { + case -1666344952: + return (boolean)(((0)) != 0); + case -1589620932: + return (boolean)(((1)) != 0); + case 2011969794: + } + + if (this.colorString.keyPressed(var1, var2, var3)) { + var4 = -1589620932; + } else { + var4 = -1666344952; + } + } + } + + @Override + public boolean charTyped(char var1, int var2) { + return this.colorString.charTyped(var1, var2); + } + + @Override + public void render(asq var1, float var2, float var3, float var4, mv var5) { + this.animationScale.update(); + var4 = 1.0F; + var1.pushMatrix(); + var1.pose().translate(this.bounds.getX(), this.bounds.getY() + this.bounds.getHeight() / 2.0F); + var1.pose().scale(this.animationScale.value(), this.animationScale.value()); + var1.pose().translate(-this.bounds.getX(), -(this.bounds.getY() + this.bounds.getHeight() / 2.0F)); + var1.drawSurface( + aso.POPUP, + this.bounds.getX(), + this.bounds.getY(), + this.bounds.getWidth(), + this.bounds.getHeight(), + POPUP_RADIUS(), + var5.getForegroundColor().getRGBWithAlpha(var4) + ); + var1.drawSurface( + aso.CONTROL, + this.bounds.getX(), + this.bounds.getY(), + this.bounds.getWidth(), + 18.0F, + POPUP_TOP_RADIUS(), + var5.getForegroundLight().getRGBWithAlpha(var4) + ); + if (aqg.mc.gui.screen() == null) { + this.afocused = (boolean)(((0)) != 0); + this.hfocused = (boolean)(((0)) != 0); + this.sbfocused = (boolean)(((0)) != 0); + } + + ge var6 = gl.MEDIUM.getFont(7.0F); + this.bounds.setWidth(Math.max(96.0F, var6.width(this.setting.getName()) + 30.0F)); + this.resolveLayout(); + float var7 = this.bounds.getX(); + float var8 = this.bounds.getY(); + float var9 = this.bounds.getWidth(); + float var10 = 5.0F; + float var11 = this.contentX; + float var12 = this.fieldY; + float var13 = this.contentWidth; + float var14 = 48.0F; + ge var15 = gl.ICONS.getFont(6.0F); + var1.drawText( + var15, + "V", + var7 + var10, + var8 + (18.0F - var15.height()) / 2.0F, + var5.getColor().mulAlpha(var4) + ); + var1.drawText( + var15, + "M", + var7 + var9 - var10 - var15.width("M"), + var8 + (18.0F - var15.height()) / 2.0F, + var5.getWhiteGray().mulAlpha(var4) + ); + float var16 = var7 + 16.0F; + float var17 = Math.max(0.0F, var7 + var9 - var10 - var15.width("M") - 6.0F - var16); + var1.drawScrollingText( + var6, + this.setting.getName(), + var16, + var8 + (18.0F - var6.height()) / 2.0F, + var17, + var5.getWhite().mulAlpha(var4), + (boolean)((((1023884644 | -1023884643) + (1023884644 & -1023884643)) + ) != 0)); + float var18 = var11 + var13 - (var13 - var13 * this.saturation); + float var19 = var12 + (var14 - var14 * this.brightness); + float var20 = var13 * this.hue; + float var21 = var13 * this.alpha / 255.0F; + asu var22 = new asu(Color.getHSBColor(this.hue, 0.0F, 1.0F)).mulAlpha(var4); + asu var23 = new asu(Color.getHSBColor(this.hue, 1.0F, 1.0F)).mulAlpha(var4); + asu var24 = new asu( + new Color( + 0, + 0, + 0, + (1657311402 | -1657311402) + (1657311402 & -1657311402) + ) + ); + asu var25 = new asu( + new Color( + 0, + 0, + (768422389 | -768422389) + (768422389 & -768422389) + ) + ); + var1.drawRoundedRect(var11, var12, var13, var14, asj.all(oc.CONTROL), ary.of(var22, var22, var23, var23)); + var1.drawRoundedRect(var11, var12, var13, var14, asj.all(oc.CONTROL), ary.of(var24, var25, var24, var25)); + var1.drawRoundedBorder(var11, var12, var13, var14, pk.borderFine(), asj.all(oc.CONTROL), asu.WHITE.mulAlpha(var4)); + var1.drawRoundedRect(var18 - 3.0F, var19 - 3.0F, 6.0F, 6.0F, HANDLE_RADIUS, asu.WHITE.mulAlpha(var4)); + arq var26 = asj.all(oc.HAIRLINE); + atb.drawRoundedTexture(var1.pose(), bz.id("icons/sliderhue.png"), var11, this.hueY, var13, 4.0F, var26, asu.WHITE.mulAlpha(var4)); + var1.drawRoundedRect(var11 + var20 - 3.0F, this.hueY - 1.0F, 6.0F, 6.0F, HANDLE_RADIUS, asu.WHITE.mulAlpha(var4)); + atb.drawRoundedTexture(var1.pose(), bz.id("icons/slidertransparent.png"), var11, this.alphaY, var13, 4.0F, var26, asu.WHITE.mulAlpha(var4)); + asu var27 = this.setting.getColor().withAlpha(255).mulAlpha(var4); + var1.drawRoundedRect(var11, this.alphaY, var13, 4.0F, var26, ary.of(asu.TRANSPARENT, asu.TRANSPARENT, var27, var27)); + var1.drawRoundedRect(var11 + var21 - 3.0F, this.alphaY - 1.0F, 6.0F, 6.0F, HANDLE_RADIUS, asu.WHITE.mulAlpha(var4)); + var1.drawSurface(aso.CONTROL, var11, this.hexY, var13, 14.0F, var26, var5.getForegroundLight().getRGBWithAlpha(var4)); + var1.pushMatrix(); + var1.drawText(var6, "#", var11 + var10, this.hexY + 4.0F, var5.getGray()); + this.colorString.render(var1, var11 + var10 + var6.width("#") + 1.0F, this.hexY + 4.5F, var5.getWhite().mulAlpha(var4), var5.getGray().mulAlpha(var4)); + this.colorString.setWidth(var13 - 20.0F); + var1.popMatrix(); + this.refreshThemeSwatches(var5); + this.drawSwatchRow( + var1, this.themeRowY, this.themeSwatches.length, var2, var3, var4, var5, (boolean)((((1480475058 ^ -1480475057) + ((1480475058 & -1480475057) << 1)) + ) != 0)); + this.drawSwatchRow( + var1, this.recentRowY, RECENT_COLORS.size(), var2, var3, var4, var5, (boolean)((((-1969122832 ^ 1969122832) + ((-1969122832 & 1969122832) << 1)) + ) != 0)); + Color var28 = Color.getHSBColor(this.hue, this.saturation, this.brightness); + if (this.sbfocused) { + this.saturation = Mth.clamp(var2 - var11, 0.0F, var13) / var13; + this.brightness = (var14 - Mth.clamp(var3 - var12, 0.0F, var14)) / var14; + this.saturation = Mth.clamp(this.saturation, 0.0F, 1.0F); + this.brightness = Mth.clamp(this.brightness, 0.0F, 1.0F); + Color var29 = Color.getHSBColor(this.hue, this.saturation, this.brightness); + asu var30 = new asu(var29.getRed(), var29.getGreen(), var29.getBlue(), this.alpha); + if (!var30.equals(this.setting.getColor())) { + this.setColor(var30); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playSlider(this.brightness); + } + } + } + + if (this.hfocused) { + this.hue = Mth.clamp(var2 - var11, 0.0F, var13) / var13; + this.hue = Mth.clamp(this.hue, 0.0F, 1.0F); + Color var32 = Color.getHSBColor(this.hue, this.saturation, this.brightness); + asu var34 = new asu(var32.getRed(), var32.getGreen(), var32.getBlue(), this.alpha); + if (!var34.equals(this.setting.getColor())) { + this.setColor(var34); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playSlider(this.hue); + } + } + } + + if (this.afocused) { + this.alpha = (int)(Mth.clamp((var2 - var11) / var13, 0.0F, 1.0F) * 255.0F); + asu var33 = new asu(var28.getRed(), var28.getGreen(), var28.getBlue(), this.alpha); + if (!var33.equals(this.setting.getColor())) { + this.setColor(var33); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playSlider(this.alpha / 255.0F); + } + } + } + + if (this.colorString.isSelected()) { + this.setColor(asv.hexToRgb(this.colorString.getText(), this.setting.getColor())); + this.updatePos(); + } else { + this.colorString.setText(asv.colorToHex(this.setting.getColor())); + this.colorString.setCursor((-1494682536 | 1494682542) + (-1494682536 & 1494682542)); + } + + var1.popMatrix(); + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = 0; + int var15 = 0; + ge var16 = null; + int var17 = 1599154493; + + while (true) { + switch (var17) { + case -2025178950: + this.applySwatch(this.swatchColor(var14, (boolean)((((342094323 | -342094322) + (342094323 & -342094322))) != 0))); + return; + case -1879355600: + return; + case -1832152373: + if (aqj.isHovered(var1, var3, var10, this.alphaY, var12, 6.0)) { + var17 = 1203378152; + } else { + var17 = -1109460671; + } + break; + case -1671241700: + if (!this.hfocused) { + var17 = 1588618040; + } else { + var17 = -187857573; + } + break; + case -1629129150: + if (this.animationScale.target() != 0.0F) { + var17 = -1482803503; + } else { + var17 = 1925580878; + } + break; + case -1482803503: + this.animationScale.animateTo(0.0F); + if (bz.getInstance().getSoundManager() != null) { + var17 = -666711971; + } else { + var17 = 1925580878; + } + break; + case -1220210637: + if (aqj.isHovered(var1, var3, var10, var11, var12, var13)) { + var17 = -1671241700; + } else { + var17 = -416940341; + } + break; + case -1109460671: + var16 = gl.ICONS.getFont(6.0F); + if (aqj.isHovered( + var1, + var3, + var6 + var8 - var9 - var16.width("M"), + var7 + (18.0F - var16.height()) / 2.0F, + var16.width("M"), + 4.0 + )) { + var17 = -1629129150; + } else { + var17 = 1925580878; + } + break; + case -924673235: + var15 = this.swatchIndexAt(var1, var3, this.recentRowY, RECENT_COLORS.size()); + if (var15 >= 0) { + var17 = 493827358; + } else { + var17 = -1220210637; + } + break; + case -666711971: + bz.getInstance().getSoundManager().playClick(); + var17 = 1925580878; + break; + case -491818990: + bz.getInstance().getSoundManager().playClick(); + var17 = -187857573; + break; + case -416940341: + if (aqj.isHovered(var1, var3, var10, this.hueY, var12, 6.0)) { + var17 = -156773554; + } else { + var17 = -1832152373; + } + break; + case -187857573: + return; + case -156773554: + if (!this.sbfocused) { + var17 = 96871997; + } else { + var17 = -1879355600; + } + break; + case 96871997: + if (!this.afocused) { + var17 = 105841639; + } else { + var17 = -1879355600; + } + break; + case 105841639: + this.hfocused = (boolean)(((1)) != 0); + if (bz.getInstance().getSoundManager() != null) { + var17 = 1866200726; + } else { + var17 = -1879355600; + } + break; + case 493827358: + this.applySwatch(this.swatchColor(var15, (boolean)((((-701274928 ^ 701274928) + ((-701274928 & 701274928) << 1))) != 0))); + return; + case 538184507: + if (!this.sbfocused) { + var17 = 985384190; + } else { + var17 = 1838991747; + } + break; + case 693209365: + bz.getInstance().getSoundManager().playClick(); + var17 = 1838991747; + break; + case 877050877: + var14 = this.swatchIndexAt(var1, var3, this.themeRowY, this.themeSwatches.length); + if (var14 >= 0) { + var17 = -2025178950; + } else { + var17 = -924673235; + } + break; + case 985384190: + this.afocused = (boolean)(((1)) != 0); + if (bz.getInstance().getSoundManager() != null) { + var17 = 693209365; + } else { + var17 = 1838991747; + } + break; + case 1160189128: + this.sbfocused = (boolean)(((1)) != 0); + if (bz.getInstance().getSoundManager() != null) { + var17 = -491818990; + } else { + var17 = -187857573; + } + break; + case 1203378152: + if (!this.hfocused) { + var17 = 538184507; + } else { + var17 = 1838991747; + } + break; + case 1533932351: + this.colorString.setSelected((boolean)((((-91162873 | 91162874) + (-91162873 & 91162874))) != 0)); + var17 = 877050877; + break; + case 1588618040: + if (!this.afocused) { + var17 = 1160189128; + } else { + var17 = -187857573; + } + break; + case 1599154493: + default: + this.colorString.onMouseClicked(var1, var3, var5); + this.resolveLayout(); + var6 = this.bounds.getX(); + var7 = this.bounds.getY(); + var8 = this.bounds.getWidth(); + var9 = 5.0F; + var10 = this.contentX; + var11 = this.fieldY; + var12 = this.contentWidth; + var13 = 48.0F; + if (aqj.isHovered(var1, var3, this.colorString.getPosition().u(), this.colorString.getPosition().v(), var12, 14.0)) { + var17 = 1533932351; + } else { + var17 = 877050877; + } + break; + case 1838991747: + return; + case 1866200726: + bz.getInstance().getSoundManager().playClick(); + var17 = -1879355600; + break; + case 1925580878: + return; + } + } + } + + @Override + public float getWidth() { + return 0.0F; + } + + @Override + public float getHeight() { + return 0.0F; + } + + @Override + public boolean isVisible() { + return (boolean)(((1)) != 0); + } + + private void resolveLayout() { + this.contentX = this.bounds.getX() + 5.0F; + this.contentWidth = this.bounds.getWidth() - 10.0F; + this.fieldY = this.bounds.getY() + 18.0F + 5.0F; + this.hueY = this.fieldY + 48.0F + 5.0F; + this.alphaY = this.hueY + 6.0F + 5.0F; + this.hexY = this.alphaY + 6.0F + 5.0F; + this.themeRowY = this.hexY + 14.0F + 5.0F; + this.recentRowY = this.themeRowY + 8.0F + 5.0F; + this.bounds.setHeight(this.recentRowY + 8.0F + 5.0F - this.bounds.getY()); + } + + private void refreshThemeSwatches(mv var1) { + this.themeSwatches[0] = var1.getColor(); + this.themeSwatches[1] = var1.getSecondColor(); + this.themeSwatches[2] = var1.getFriendColor(); + this.themeSwatches[3] = var1.getWhite(); + this.themeSwatches[4] = var1.getForegroundLight(); + } + + private float swatchX(int var1) { + return this.contentX + var1 * 11.0F; + } + + private int swatchIndexAt(double var1, double var3, float var5, int var6) { + int var7 = 0; + float var8 = 0.0F; + int var9 = -1026383104; + + while (true) { + switch (var9) { + case -1820009059: + return var7; + case -1583213413: + if (var3 > var5 + 8.0F) { + var9 = -1284152640; + } else { + var9 = 745385129; + } + break; + case -1284152640: + return -1; + case -1026383104: + default: + if (!(var3 < var5)) { + var9 = -1583213413; + } else { + var9 = -1284152640; + } + break; + case 1964646: + if (var7 < var6) { + var9 = 959520480; + } else { + var9 = 1874636897; + } + break; + case 745385129: + var7 = 0; + var9 = 1964646; + break; + case 959520480: + var8 = this.swatchX(var7); + if (var1 >= var8) { + var9 = 1895269893; + } else { + var9 = 1224032996; + } + break; + case 1224032996: + var7++; + var9 = 1964646; + break; + case 1874636897: + return -1; + case 1895269893: + if (var1 <= var8 + 8.0F) { + var9 = -1820009059; + } else { + var9 = 1224032996; + } + } + } + } + + private asu swatchColor(int var1, boolean var2) { + int var3 = 0; + Iterator var4 = null; + Integer var5 = null; + int var6 = 191705965; + + while (true) { + switch (var6) { + case -1844147430: + return null; + case -1636598094: + return this.themeSwatches[var1]; + case -1595048380: + var5 = (Integer)var4.next(); + if (var3++ == var1) { + var6 = 516876965; + } else { + var6 = -1154365993; + } + break; + case -1154365993: + var6 = 1812125649; + break; + case 191705965: + default: + if (var2) { + var6 = -1636598094; + } else { + var6 = 847229809; + } + break; + case 516876965: + return new asu(var5); + case 847229809: + var3 = 0; + var4 = RECENT_COLORS.iterator(); + var6 = 1812125649; + break; + case 1812125649: + if (var4.hasNext()) { + var6 = -1595048380; + } else { + var6 = -1844147430; + } + } + } + } + + private void drawSwatchRow(asq var1, float var2, int var3, float var4, float var5, float var6, mv var7, boolean var8) { + int var9 = 0; + int var10 = 0; + asu var11 = null; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var17 = 0.0F; + int var16 = -951412516; + + while (true) { + switch (var16) { + case -1782177776: + return; + case -951412516: + default: + var9 = this.swatchIndexAt(var4, var5, var2, var3); + var10 = 0; + var16 = 1685918049; + break; + case -201583940: + if (var10 == var9) { + var16 = 744587529; + } else { + var16 = 1942864153; + } + break; + case 74235662: + var10++; + var16 = 1685918049; + break; + case 658407061: + var11 = this.swatchColor(var10, var8); + if (var11 == null) { + var16 = 2107150724; + } else { + var16 = -201583940; + } + break; + case 744587529: + var17 = 1.5F; + var16 = 967070141; + break; + case 967070141: + var12 = var17; + var13 = 8.0F + var12; + var14 = this.swatchX(var10) - var12 / 2.0F; + var15 = var2 - var12 / 2.0F; + var1.drawRoundedRect( + var14, var15, var13, var13, SWATCH_RADIUS(), var11.withAlpha(255).mulAlpha(var6) + ); + var1.drawRoundedBorder(var14, var15, var13, var13, pk.borderFine(), SWATCH_RADIUS(), var7.getForegroundLightStroke().mulAlpha(var6)); + var16 = 74235662; + break; + case 1050568201: + var1.drawRoundedRect(this.contentX, var2, this.contentWidth, 8.0F, SWATCH_RADIUS(), var7.getForegroundLight().mulAlpha(var6 * 0.35F)); + var16 = -1782177776; + break; + case 1117467537: + if (var3 == 0) { + var16 = 1050568201; + } else { + var16 = -1782177776; + } + break; + case 1685918049: + if (var10 < var3) { + var16 = 658407061; + } else { + var16 = 1117467537; + } + break; + case 1942864153: + var17 = 0.0F; + var16 = 967070141; + break; + case 2107150724: + var16 = 74235662; + } + } + } + + private void rememberColor(asu var1) { + int var2 = 0; + int var3 = 1547536674; + + while (true) { + switch (var3) { + case 76575092: + var2 = var1.withAlpha(255).getRGB(); + RECENT_COLORS.remove(var2); + RECENT_COLORS.addFirst(var2); + var3 = 1611464835; + break; + case 591934297: + RECENT_COLORS.removeLast(); + var3 = 1611464835; + break; + case 1240398874: + return; + case 1407945859: + return; + case 1547536674: + default: + if (var1 == null) { + var3 = 1240398874; + } else { + var3 = 76575092; + } + break; + case 1611464835: + if (RECENT_COLORS.size() > (-1090163193 | 1090163201) + (-1090163193 & 1090163201)) { + var3 = 591934297; + } else { + var3 = 1407945859; + } + } + } + } + + private void applySwatch(asu var1) { + int var2 = -1317482318; + + while (true) { + switch (var2) { + case -1317482318: + default: + if (var1 == null) { + var2 = -1278684635; + } else { + var2 = 1976343162; + } + break; + case -1278684635: + return; + case 1131020036: + bz.getInstance().getSoundManager().playClick(); + var2 = 2026845159; + break; + case 1976343162: + this.setColor(var1.withAlpha(this.alpha)); + this.updatePos(); + this.rememberColor(var1); + if (bz.getInstance().getSoundManager() != null) { + var2 = 1131020036; + } else { + var2 = 2026845159; + } + break; + case 2026845159: + return; + } + } + } + + private void updatePos() { + float[] var1 = Color.RGBtoHSB(this.setting.getColor().getRed(), this.setting.getColor().getGreen(), this.setting.getColor().getBlue(), null); + this.hue = var1[0]; + this.saturation = var1[1]; + this.brightness = var1[2]; + this.alpha = this.setting.getColor().getAlpha(); + } + + private void setColor(asu var1) { + this.setting.setColor(var1); + } + + @Override + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + Color var17 = null; + int var18 = -602046203; + + while (true) { + switch (var18) { + case -1900008311: + return (boolean)(((1)) != 0); + case -916538819: + this.hue = (float)(this.hue + var7 * 0.05F); + this.hue = Mth.clamp(this.hue, 0.0F, 1.0F); + var17 = Color.getHSBColor(this.hue, this.saturation, this.brightness); + this.setColor(new asu(var17.getRed(), var17.getGreen(), var17.getBlue(), this.alpha)); + if (bz.getInstance().getSoundManager() != null) { + var18 = -299614330; + } else { + var18 = 1452048012; + } + break; + case -602046203: + default: + var9 = this.bounds.getX(); + var10 = this.bounds.getY(); + var11 = this.bounds.getWidth(); + var12 = this.bounds.getHeight(); + this.resolveLayout(); + var13 = this.contentX; + var14 = this.fieldY; + var15 = this.contentWidth; + var16 = 48.0F; + if (aqj.isHovered(var1, var3, var13, this.hueY, var15, 6.0)) { + var18 = -916538819; + } else { + var18 = -197039593; + } + break; + case -299614330: + bz.getInstance().getSoundManager().playSlider(1.0F); + var18 = 1452048012; + break; + case -197039593: + if (aqj.isHovered(var1, var3, var13, this.alphaY, var15, 6.0)) { + var18 = 1364726000; + } else { + var18 = 1777458042; + } + break; + case -187304855: + bz.getInstance().getSoundManager().playSlider(1.0F); + var18 = 1146947845; + break; + case 300200471: + return (boolean)(((0)) != 0); + case 364093128: + bz.getInstance().getSoundManager().playSlider(1.0F); + var18 = -1900008311; + break; + case 593330681: + this.brightness = (float)(this.brightness + var7 * 0.05F); + this.brightness = Mth.clamp(this.brightness, 0.0F, 1.0F); + var17 = Color.getHSBColor(this.hue, this.saturation, this.brightness); + this.setColor(new asu(var17.getRed(), var17.getGreen(), var17.getBlue(), this.alpha)); + if (bz.getInstance().getSoundManager() != null) { + var18 = -187304855; + } else { + var18 = 1146947845; + } + break; + case 1146947845: + return (boolean)(((1)) != 0); + case 1364726000: + this.alpha = (int)(this.alpha + var7 * 12.75); + this.alpha = Mth.clamp( + this.alpha, 0, (-583010051 ^ 583010306) + ((-583010051 & 583010306) << 1) + ); + var17 = Color.getHSBColor(this.hue, this.saturation, this.brightness); + this.setColor(new asu(var17.getRed(), var17.getGreen(), var17.getBlue(), this.alpha)); + if (bz.getInstance().getSoundManager() != null) { + var18 = 364093128; + } else { + var18 = -1900008311; + } + break; + case 1452048012: + return (boolean)(((1)) != 0); + case 1777458042: + if (aqj.isHovered(var1, var3, var13, var14, var15, var16)) { + var18 = 593330681; + } else { + var18 = 300200471; + } + } + } + } + + @Override + public boolean equals(Object var1) { + Object var2 = null; + int var4 = 0; + int var3 = -1928676776; + + while (true) { + switch (var3) { + case -1928676776: + default: + if (this == var1) { + var3 = -1904485957; + } else { + var3 = 402207400; + } + break; + case -1904485957: + return (boolean)(((1)) != 0); + case -896530361: + var2 = (abq)var1; + if (this.setting == ((abq)var2).setting) { + var3 = 284055714; + } else { + var3 = 878964255; + } + break; + case -555858291: + return (boolean)((var4) != 0); + case 284055714: + var4 = 1; + var3 = -555858291; + break; + case 402207400: + if (var1 instanceof abq) { + var3 = -896530361; + } else { + var3 = 1013770378; + } + break; + case 878964255: + var4 = 0; + var3 = -555858291; + break; + case 1013770378: + return (boolean)(((0)) != 0); + } + } + } + + @Override + public int hashCode() { + return Objects.hashCode(this.setting); + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + int var6 = -1669901668; + + while (true) { + switch (var6) { + case -1669901668: + default: + if (!this.hfocused) { + var6 = 502620368; + } else { + var6 = 766217893; + } + break; + case -809184533: + return; + case -581363477: + this.hfocused = (boolean)(((0)) != 0); + this.sbfocused = (boolean)(((0)) != 0); + this.afocused = (boolean)(((0)) != 0); + if (bz.getInstance().getSoundManager() != null) { + var6 = 1720097950; + } else { + var6 = -809184533; + } + break; + case 502620368: + if (!this.sbfocused) { + var6 = 2093652634; + } else { + var6 = 766217893; + } + break; + case 766217893: + this.rememberColor(this.setting.getColor()); + var6 = -581363477; + break; + case 1720097950: + bz.getInstance().getSoundManager().stopDragAndResize(); + var6 = -809184533; + break; + case 2093652634: + if (this.afocused) { + var6 = 766217893; + } else { + var6 = -581363477; + } + } + } + } + + public rx getSetting() { + return this.setting; + } +} diff --git a/src/main/java/defpackage/abr.java b/src/main/java/defpackage/abr.java new file mode 100644 index 0000000..083ed34 --- /dev/null +++ b/src/main/java/defpackage/abr.java @@ -0,0 +1,514 @@ +package defpackage; + +import java.util.Iterator; +import java.util.Objects; +import net.minecraft.util.Mth; + +public class abr extends aax { + private static final String CLOSE_GLYPH = "M"; + private static final String ICON_GLYPH = "D"; + private static final String RESET_LABEL = "Reset"; + private static final String HINT_LABEL = "RMB add / remove"; + private static final float PADDING = 6.0F; + private static final float HEADER_HEIGHT = 18.0F; + private static final float GRID_HEIGHT = 84.0F; + private static final float TRACK_HEIGHT = 6.0F; + private static final float FOOTER_HEIGHT = 10.0F; + private static final float TITLE_INSET = 16.0F; + private static final float CLOSE_HIT_HEIGHT = 6.0F; + private static final float POINT_SIZE = 4.5F; + private static final float POINT_HIT = 6.0F; + private static final float POINT_HOVER_GROWTH = 1.5F; + private static final float CURVE_THICKNESS = 1.4F; + private static final float MARKER_SIZE = 3.5F; + private static final float TRACK_DOT_SIZE = 5.0F; + private static final int GRID_CELLS = 4; + private static final float GRID_LINE_THICKNESS = 1.0F; + private static final float GRID_LINE_ALPHA = 0.16F; + private static final float GRID_FILL_ALPHA = 0.45F; + private static final long PREVIEW_PERIOD_MS = 1600L; + private static final long PREVIEW_TRAVEL_MS = 1000L; + private final rz setting; + private float gridX; + private float gridY; + private float gridWidth; + private float trackY; + private float footerY; + private ry dragged; + + private static arq POPUP_RADIUS() { + return asj.all(oc.CONTROL); + } + + private static arq POPUP_TOP_RADIUS() { + return asj.top(oc.CONTROL); + } + + private static arq GRID_RADIUS() { + return asj.all(oc.CHIP); + } + + public abr(arr var1, rz var2) { + super(var1); + this.setting = var2; + this.resolveLayout(); + this.animationScale.update(1.0F); + } + + @Override + public void render(asq var1, float var2, float var3, float var4, mv var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + ge var9 = null; + ge var10 = null; + ge var11 = null; + int var12 = 588612454; + + while (true) { + switch (var12) { + case -2113607391: + this.drawGrid(var1, var5); + abh.drawCurve(var1, this.setting, this.gridX, this.gridY, this.gridWidth, 84.0F, 1.4F, var5.getColor()); + this.drawPoints(var1, var2, var3, var5); + this.drawPreview(var1, var5); + var1.drawText( + var10, + "Reset", + this.gridX, + this.footerY, + var5.getWhiteGray() + ); + var1.drawText( + var10, + "RMB add / remove", + this.gridX + + this.gridWidth + - var10.width("RMB add / remove"), + this.footerY, + var5.getGray() + ); + var1.popMatrix(); + return; + case -1072076861: + this.setting.movePoint(this.dragged, this.curveX(var2), this.curveY(var3)); + var12 = -2113607391; + break; + case 588612454: + default: + this.animationScale.update(); + this.resolveLayout(); + var1.pushMatrix(); + var1.pose().translate(this.bounds.getX(), this.bounds.getY() + this.bounds.getHeight() / 2.0F); + var1.pose().scale(this.animationScale.value(), this.animationScale.value()); + var1.pose().translate(-this.bounds.getX(), -(this.bounds.getY() + this.bounds.getHeight() / 2.0F)); + var6 = this.bounds.getX(); + var7 = this.bounds.getY(); + var8 = this.bounds.getWidth(); + var1.drawSurface(aso.POPUP, var6, var7, var8, this.bounds.getHeight(), POPUP_RADIUS(), var5.getForegroundColor().getRGBWithAlpha(1.0F)); + var1.drawSurface(aso.CONTROL, var6, var7, var8, 18.0F, POPUP_TOP_RADIUS(), var5.getForegroundLight().getRGBWithAlpha(1.0F)); + var9 = gl.MEDIUM.getFont(7.0F); + var10 = gl.MEDIUM.getFont(5.5F); + var11 = gl.ICONS.getFont(6.0F); + var1.drawText( + var11, + "D", + var6 + 6.0F, + var7 + (18.0F - var11.height()) / 2.0F, + var5.getColor() + ); + var1.drawText( + var11, + "M", + var6 + var8 - 6.0F - var11.width("M"), + var7 + (18.0F - var11.height()) / 2.0F, + var5.getWhiteGray() + ); + var1.drawText(var9, this.setting.getName(), var6 + 16.0F, var7 + (18.0F - var9.height()) / 2.0F, var5.getWhite()); + if (this.dragged != null) { + var12 = -1072076861; + } else { + var12 = -2113607391; + } + } + } + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + ry var6 = null; + ge var7 = null; + ge var8 = null; + float var9 = 0.0F; + float var10 = 0.0F; + int var11 = 1769954013; + + while (true) { + switch (var11) { + case -2108127536: + var8 = gl.ICONS.getFont(6.0F); + var9 = this.bounds.getX() + this.bounds.getWidth() - 6.0F - var8.width("M"); + var10 = this.bounds.getY() + (18.0F - var8.height()) / 2.0F; + if (aqj.isHovered(var1, var3, var9, var10, var8.width("M"), 6.0)) { + var11 = -178936702; + } else { + var11 = 957207890; + } + break; + case -1961301424: + this.playClick(); + var11 = -847926021; + break; + case -1567462062: + if (var6 != null) { + var11 = 202672981; + } else { + var11 = 1221933245; + } + break; + case -1224855360: + return; + case -1062315736: + if (this.setting.addPoint(this.curveX(var1), this.curveY(var3))) { + var11 = -246752715; + } else { + var11 = 1440148975; + } + break; + case -847926021: + return; + case -579614699: + this.animationScale.animateTo(0.0F); + this.playClick(); + var11 = 957207890; + break; + case -246752715: + this.dragged = this.pointAt(var1, var3); + this.playClick(); + var11 = 1440148975; + break; + case -222850843: + if (this.setting.addPoint(this.curveX(var1), this.curveY(var3))) { + var11 = -1961301424; + } else { + var11 = -847926021; + } + break; + case -178936702: + if (this.animationScale.target() != 0.0F) { + var11 = -579614699; + } else { + var11 = 957207890; + } + break; + case 157166406: + if (this.insideGrid(var1, var3)) { + var11 = -1062315736; + } else { + var11 = 1644485533; + } + break; + case 202672981: + this.setting.removePoint(var6); + this.dragged = null; + this.playClick(); + var11 = -847926021; + break; + case 250721225: + this.dragged = var6; + this.playClick(); + return; + case 299595623: + this.setting.reset(); + this.dragged = null; + this.playClick(); + return; + case 957207890: + return; + case 1221933245: + if (this.insideGrid(var1, var3)) { + var11 = -222850843; + } else { + var11 = -847926021; + } + break; + case 1440148975: + return; + case 1604898737: + if (var6 != null) { + var11 = 250721225; + } else { + var11 = 157166406; + } + break; + case 1644485533: + var7 = gl.MEDIUM.getFont(5.5F); + if (aqj.isHovered( + var1, var3, this.gridX, this.footerY, var7.width("Reset"), 10.0 + )) { + var11 = 299595623; + } else { + var11 = -2108127536; + } + break; + case 1769954013: + default: + this.resolveLayout(); + var6 = this.pointAt(var1, var3); + if (var5 == apf.RIGHT) { + var11 = -1567462062; + } else { + var11 = 1933341369; + } + break; + case 1933341369: + if (var5 != apf.LEFT) { + var11 = -1224855360; + } else { + var11 = 1604898737; + } + } + } + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + this.dragged = null; + } + + @Override + public boolean charTyped(char var1, int var2) { + return (boolean)(((0)) != 0); + } + + @Override + public float getWidth() { + return this.bounds.getWidth(); + } + + @Override + public float getHeight() { + return this.bounds.getHeight(); + } + + @Override + public boolean isVisible() { + return (boolean)(((1)) != 0); + } + + @Override + public boolean equals(Object var1) { + Object var2 = null; + int var4 = 0; + int var3 = 343887713; + + while (true) { + switch (var3) { + case -1207064948: + return (boolean)((var4) != 0); + case -1206532469: + var2 = (abr)var1; + if (this.setting == ((abr)var2).setting) { + var3 = 504319561; + } else { + var3 = -1015793438; + } + break; + case -1118931998: + return (boolean)(((1)) != 0); + case -1015793438: + var4 = 0; + var3 = -1207064948; + break; + case 343887713: + default: + if (this == var1) { + var3 = -1118931998; + } else { + var3 = 1500825959; + } + break; + case 504319561: + var4 = 1; + var3 = -1207064948; + break; + case 1500825959: + if (var1 instanceof abr) { + var3 = -1206532469; + } else { + var3 = -1015793438; + } + } + } + } + + @Override + public int hashCode() { + return Objects.hashCode(this.setting); + } + + private void drawGrid(asq var1, mv var2) { + int var3 = 0; + float var4 = 0.0F; + int var5 = -179526345; + + while (true) { + switch (var5) { + case -1590996612: + if (var3 < (-1230541220 ^ 1230541224) + ((-1230541220 & 1230541224) << 1)) { + var5 = 1692495252; + } else { + var5 = 1802354915; + } + break; + case -179526345: + default: + var1.drawRoundedRect(this.gridX, this.gridY, this.gridWidth, 84.0F, GRID_RADIUS(), var2.getForegroundLight().mulAlpha(0.45F)); + var3 = 1; + var5 = -1590996612; + break; + case 1692495252: + var4 = var3 / 4.0F; + var1.drawRect(this.gridX + this.gridWidth * var4, this.gridY, 1.0F, 84.0F, var2.getWhite().mulAlpha(0.16F)); + var1.drawRect(this.gridX, this.gridY + 84.0F * var4, this.gridWidth, 1.0F, var2.getWhite().mulAlpha(0.16F)); + var3++; + var5 = -1590996612; + break; + case 1802354915: + var1.drawRoundedBorder(this.gridX, this.gridY, this.gridWidth, 84.0F, pk.borderFine(), GRID_RADIUS(), var2.getForegroundLightStroke()); + return; + } + } + } + + private void drawPoints(asq var1, float var2, float var3, mv var4) { + ry var5 = this.dragged != null ? this.dragged : this.pointAt(var2, var3); + + for (ry var7 : this.setting.getPoints()) { + float var8 = 4.5F + (var7 == var5 ? 1.5F : 0.0F); + asu var9 = var7 == var5 ? var4.getWhite() : var4.getSecondColor(); + var1.drawRoundedRect(this.pointX(var7) - var8 / 2.0F, this.pointY(var7) - var8 / 2.0F, var8, var8, asj.pill(var8), var9); + } + } + + private void drawPreview(asq var1, mv var2) { + float var3 = Mth.clamp( + (float)(System.currentTimeMillis() % ((-4913986833771374643L | 4913986833771376243L) + (-4913986833771374643L & 4913986833771376243L))) / 1000.0F, + 0.0F, + 1.0F + ); + float var4 = Mth.clamp(this.setting.evaluate(var3), 0.0F, 1.0F); + float var5 = this.gridX + this.gridWidth * var3; + float var6 = this.gridY + 84.0F - 84.0F * var4; + var1.drawRoundedRect(var5 - 1.75F, var6 - 1.75F, 3.5F, 3.5F, asj.pill(3.5F), var2.getWhite()); + var1.drawRoundedRect(this.gridX, this.trackY, this.gridWidth, 6.0F, asj.pill(6.0F), var2.getForegroundLight()); + float var7 = this.gridX + (this.gridWidth - 5.0F) * var4; + float var8 = this.trackY + 0.5F; + var1.drawRoundedRect(var7, var8, 5.0F, 5.0F, asj.pill(5.0F), var2.getColor()); + } + + private ry pointAt(double var1, double var3) { + ry var5 = null; + float var6 = 0.0F; + Iterator var7 = null; + ry var8 = null; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = -200540631; + + while (true) { + switch (var12) { + case -1643561232: + var6 = var11; + var5 = var8; + var12 = -105733467; + break; + case -200540631: + default: + var5 = null; + var6 = 36.0F; + var7 = this.setting.getPoints().iterator(); + var12 = 361299344; + break; + case -105733467: + var12 = 361299344; + break; + case 361299344: + if (var7.hasNext()) { + var12 = 1892817716; + } else { + var12 = 804824383; + } + break; + case 804824383: + return var5; + case 1892817716: + var8 = (ry)var7.next(); + var9 = (float)(var1 - this.pointX(var8)); + var10 = (float)(var3 - this.pointY(var8)); + var11 = var9 * var9 + var10 * var10; + if (var11 <= var6) { + var12 = -1643561232; + } else { + var12 = -105733467; + } + } + } + } + + private boolean insideGrid(double var1, double var3) { + return aqj.isHovered(var1, var3, this.gridX, this.gridY, this.gridWidth, 84.0); + } + + private float pointX(ry var1) { + return this.gridX + this.gridWidth * var1.getX(); + } + + private float pointY(ry var1) { + return this.gridY + 84.0F - 84.0F * var1.getY(); + } + + private float curveX(double var1) { + return Mth.clamp((float)((var1 - this.gridX) / this.gridWidth), 0.0F, 1.0F); + } + + private float curveY(double var1) { + return Mth.clamp(1.0F - (float)((var1 - this.gridY) / 84.0), 0.0F, 1.0F); + } + + private void playClick() { + int var1 = -106680963; + + while (true) { + switch (var1) { + case -1160895695: + return; + case -106680963: + default: + if (bz.getInstance().getSoundManager() != null) { + var1 = 66619672; + } else { + var1 = -1160895695; + } + break; + case 66619672: + bz.getInstance().getSoundManager().playClick(); + var1 = -1160895695; + } + } + } + + private void resolveLayout() { + this.gridX = this.bounds.getX() + 6.0F; + this.gridWidth = this.bounds.getWidth() - 12.0F; + this.gridY = this.bounds.getY() + 18.0F + 6.0F; + this.trackY = this.gridY + 84.0F + 6.0F; + this.footerY = this.trackY + 6.0F + 6.0F; + this.bounds.setHeight(this.footerY + 10.0F + 6.0F - this.bounds.getY()); + } + + public rz getSetting() { + return this.setting; + } +} diff --git a/src/main/java/defpackage/abs.java b/src/main/java/defpackage/abs.java new file mode 100644 index 0000000..b3da7b5 --- /dev/null +++ b/src/main/java/defpackage/abs.java @@ -0,0 +1,334 @@ +package defpackage; + +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Stream; +import net.minecraft.client.model.geom.builders.UVPair; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; + +public class abs extends aax { + private static final float ITEM_ROW_HEIGHT = 20.0F; + private final arn searchBox; + private final sb setting; + private final arl scrollHandler = new arl(); + private boolean rebornSort = (boolean)(((0)) != 0); + private final List itemKeys = new ArrayList<>(); + private final asl itemBounds = new asl(); + + private static arq POPUP_RADIUS() { + return asj.all(oc.CONTROL); + } + + private static arq POPUP_TOP_RADIUS() { + return asj.top(oc.CONTROL); + } + + private static arq SORT_RADIUS() { + return asj.all(oc.CHIP); + } + + public abs(sb var1, arr var2) { + super(var2); + this.searchBox = new arn( + new UVPair(0.0F, 0.0F), gl.MEDIUM.getFont(7.0F), "Search...", 78.0F + ); + this.animationScale.update(1.0F); + this.setting = var1; + } + + @Override + public void render(asq var1, float var2, float var3, float var4, mv var5) { + this.animationScale.update(); + var4 = 1.0F; + float var6 = this.bounds.getX(); + float var7 = this.bounds.getY(); + float var8 = this.bounds.getWidth(); + float var9 = this.bounds.getHeight() - 20.0F - 4.0F; + var1.pushMatrix(); + var1.pose().translate(this.bounds.getX(), this.bounds.getY() + this.bounds.getHeight() / 2.0F); + var1.pose().scale(this.animationScale.value(), this.animationScale.value()); + var1.pose().translate(-this.bounds.getX(), -(this.bounds.getY() + this.bounds.getHeight() / 2.0F)); + var1.drawSurface( + aso.POPUP, this.bounds.getX(), this.bounds.getY(), this.bounds.getWidth(), var9, POPUP_RADIUS(), var5.getForegroundColor().getRGBWithAlpha(var4) + ); + var1.drawSurface( + aso.CONTROL, + this.bounds.getX(), + this.bounds.getY(), + this.bounds.getWidth(), + 18.0F, + POPUP_TOP_RADIUS(), + var5.getForegroundLight().getRGBWithAlpha(var4) + ); + ge var10 = gl.MEDIUM.getFont(7.0F); + ge var11 = gl.ICONS.getFont(7.0F); + var1.drawText(var10, this.setting.getName(), var6 + 8.0F + 11.2F + 3.0F, var7 + 7.55F, var5.getWhite()); + var1.pushMatrix(); + var1.pose().translate(var6 + 8.0F, var7 + 4.4F); + var1.pose().scale(0.7F, 0.7F); + var1.item( + Items.TOTEM_OF_UNDYING.getDefaultInstance(), + 0, + (1256452010 | -1256452010) + (1256452010 & -1256452010) + ); + var1.popMatrix(); + float var12 = 14.0F; + var1.drawSurface(aso.CONTROL, var6 + var8 - var12 - 8.0F, var7 + 3.0F, var12, var12, SORT_RADIUS(), var5.getForegroundGray().getRGBWithAlpha(var4)); + var1.drawText( + var11, + "W", + var6 + var8 - 8.0F - var12 + (var12 - var11.width("W")) / 2.0F + 1.0F, + var7 + 6.6F, + var5.getColor() + ); + List var13 = this.searchBox.isEmpty() && this.rebornSort + ? getAllBlocks().toList() + : getAllBlocks() + .sorted( + (var1x, var2x) -> { + if (this.searchBox.isEmpty()) { + boolean var8x = this.setting.contains(var1x); + boolean var9x = this.setting.contains(var2x); + return Boolean.compare( + (boolean)(((!var8x ? 1: (-548681526 | 548681526) + (-548681526 & 548681526))) != 0), + (boolean)(((!var9x + ? 1: (-1328828591 ^ 1328828591) + ((-1328828591 & 1328828591) << 1)) + ) != 0)); + } else { + String var3x = this.searchBox.getText().toLowerCase().trim(); + String var4x = var1x.getDescriptionId() + .replaceFirst("^block\\.minecraft\\.", "") + .replaceAll( + "_", + " " + ); + String var5x = var2x.getDescriptionId() + .replaceFirst("^block\\.minecraft\\.", "") + .replaceAll( + "_", " " + ); + boolean var6x = var4x.toLowerCase().contains(var3x); + boolean var7x = var5x.toLowerCase().contains(var3x); + return Boolean.compare( + (boolean)(((!var6x + ? 1: (-1345087999 ^ 1345087999) + ((-1345087999 & 1345087999) << 1))) != 0), + (boolean)(((!var7x ? 1: (-1676473970 | 1676473970) + (-1676473970 & 1676473970)) + ) != 0)); + } + } + ) + .toList(); + float var14 = var13.size() * 20.0F; + this.scrollHandler.setMax(Math.max(0.0F, var14 - var9)); + this.scrollHandler.update(); + int var15 = 4; + float var16 = var15 + (1948360632 ^ -1948360614) + ((1948360632 & -1948360614) << 1) + var7 - (float)this.scrollHandler.getValue(); + float var17 = var6; + float var18 = var8; + asu var19 = var5.getWhite().mulAlpha(var4); + asu var20 = var5.getColor().mulAlpha(var4); + this.itemKeys.clear(); + this.itemBounds.clear(); + asu var21 = var5.getForegroundColor(); + asu var22 = var5.getForegroundLight(); + var1.clipScroll(var6, var7 + 18.0F + var15, var6 + var8, var7 + var9 - var15, ars.edgeFade()); + int var23 = 0; + + for (Block var25 : var13) { + if (var25 != Blocks.AIR) { + var23++; + if (var16 < var7) { + var16 += 20.0F; + } else { + boolean var26 = this.setting.contains(var25); + var1.drawRoundedRect( + var17, + var16, + var18, + 20.0F, + arq.ZERO, + var26 ? var20 : (var23 % 2== 0 ? var21 : var22) + ); + this.itemKeys.add(var25); + this.itemBounds.add(var17, var16, var18, 20.0F); + String var27 = var25.getDescriptionId() + .replaceFirst("^block\\.minecraft\\.", "") + .replaceAll( + "_", " " + ); + var27 = var27.substring(0, 1).toUpperCase() + + var27.substring((-1992411896 | 1992411897) + (-1992411896 & 1992411897)); + var1.pushMatrix(); + var1.pose().translate(var17 + 8.0F, var16 + 4.4F); + var1.pose().scale(0.7F, 0.7F); + var1.item( + var25.asItem().getDefaultInstance(), + 0, + (-2083350243 ^ 2083350243) + ((-2083350243 & 2083350243) << 1) + ); + var1.popMatrix(); + var1.drawText( + gl.BOLD.getFont(8.0F), + ".", + var17 + 8.0F + 11.2F + 3.0F, + var16 + 5.0F, + var5.getWhiteGray() + ); + var1.drawText(var10, var27, var17 + 8.0F + 11.2F + 8.0F, var16 + 7.55F, var26 ? var19 : var5.getGrayLight()); + var16 += 20.0F; + if (var16 > var7 + var9) { + break; + } + } + } + } + + var1.popClip(); + var1.pushClipBounds(var6, var7 + var9 + 4.0F, var6 + var8, var7 + var9 + 24.0F); + var1.drawSurface(aso.CONTROL, var6, var7 + var9 + 4.0F, var8, 20.0F, POPUP_RADIUS(), var5.getForegroundColor().getRGBWithAlpha(var4)); + this.searchBox.setWidth(var8 - 20.0F); + this.searchBox.render(var1, var6 + 8.0F, var7 + var9 + 4.0F + 8.0F, var5.getWhite().mulAlpha(var4), var5.getGray().mulAlpha(var4)); + this.searchBox.setMaxLength((-1810502605 ^ 1810502640) + ((-1810502605 & 1810502640) << 1)); + var1.popClip(); + var1.popMatrix(); + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + return this.searchBox.keyPressed(var1, var2, var3); + } + + @Override + public boolean charTyped(char var1, int var2) { + return this.searchBox.charTyped(var1, var2); + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + this.searchBox.onMouseClicked(var1, var3, var5); + float var6 = this.bounds.getX(); + float var7 = this.bounds.getY(); + float var8 = this.bounds.getWidth(); + float var9 = this.bounds.getHeight(); + if (var3 > var7 + 18.0F) { + for (int var10 = 0; var10 < this.itemKeys.size(); var10++) { + if (this.itemBounds.contains(var10, var1, var3)) { + Block var11 = this.itemKeys.get(var10); + if (this.setting.contains(var11)) { + this.setting.remove(var11); + } else { + this.setting.add(var11); + } + + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playDropdown(); + } + + return; + } + } + } + + if (aqj.isHovered(var1, var3, var6 + var8 - 8.0F - 16.0F, var7 + 3.0F, 16.0, 16.0)) { + this.rebornSort = (boolean)(((!this.rebornSort + ? 1: (1487226731 ^ -1487226731) + ((1487226731 & -1487226731) << 1))) != 0); + this.scrollHandler.setTargetValue(0.0); + } + } + + @Override + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + this.scrollHandler.scroll(var7); + return (boolean)(((1)) != 0); + } + + @Override + public float getWidth() { + return 0.0F; + } + + @Override + public float getHeight() { + return 0.0F; + } + + @Override + public boolean isVisible() { + return (boolean)(((1)) != 0); + } + + public static Stream getAllBlocks() { + return Stream.of(Blocks.class.getDeclaredFields()) + .filter(var0 -> Modifier.isStatic(var0.getModifiers())) + .filter(var0 -> Modifier.isPublic(var0.getModifiers())) + .filter(var0 -> Block.class.isAssignableFrom(var0.getType())) + .map(var0 -> { + try { + return (Block)var0.get(null); + } catch (IllegalAccessException var2) { + throw new RuntimeException(var2); + } + }); + } + + @Override + public boolean equals(Object var1) { + Object var2 = null; + int var4 = 0; + int var3 = -1295824603; + + while (true) { + switch (var3) { + case -2132372425: + return (boolean)(((0)) != 0); + case -1470744096: + return (boolean)(((1)) != 0); + case -1295824603: + default: + if (this == var1) { + var3 = -1470744096; + } else { + var3 = -999679817; + } + break; + case -999679817: + if (var1 instanceof abs) { + var3 = 571716099; + } else { + var3 = -2132372425; + } + break; + case -90904231: + var4 = 1; + var3 = 87616389; + break; + case 87616389: + return (boolean)((var4) != 0); + case 571716099: + var2 = (abs)var1; + if (this.setting == ((abs)var2).setting) { + var3 = -90904231; + } else { + var3 = 1457672103; + } + break; + case 1457672103: + var4 = 0; + var3 = 87616389; + } + } + } + + @Override + public int hashCode() { + return Objects.hashCode(this.setting); + } + + public sb getSetting() { + return this.setting; + } +} diff --git a/src/main/java/defpackage/abt.java b/src/main/java/defpackage/abt.java new file mode 100644 index 0000000..11e8764 --- /dev/null +++ b/src/main/java/defpackage/abt.java @@ -0,0 +1,21 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:abt.class */ +/* synthetic */ class abt { + static final /* synthetic */ int[] $SwitchMap$evo$systems$client$modules$api$setting$impl$ActionGridSetting$ListEntry$Kind = new int[rr.values().length]; + + static { + try { + $SwitchMap$evo$systems$client$modules$api$setting$impl$ActionGridSetting$ListEntry$Kind[rr.SECTION.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$client$modules$api$setting$impl$ActionGridSetting$ListEntry$Kind[rr.NOTE.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$client$modules$api$setting$impl$ActionGridSetting$ListEntry$Kind[rr.ACTION.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + } +} diff --git a/src/main/java/defpackage/abu.java b/src/main/java/defpackage/abu.java new file mode 100644 index 0000000..e3b2d3b --- /dev/null +++ b/src/main/java/defpackage/abu.java @@ -0,0 +1,264 @@ +package defpackage; + +import java.util.List; + +public class abu extends aax { + public static final float WIDTH = 128.0F; + private static final float HEADER_HEIGHT = 17.0F; + private static final float ROW_HEIGHT = 14.0F; + private static final float PAD = 4.0F; + private static final float TEXT_INSET = 6.0F; + private static final float DETAIL_GAP = 6.0F; + private static final float DETAIL_SHARE = 0.4F; + private static final int MAX_VISIBLE_ROWS = 8; + private static final float DIVIDER_HEIGHT = 0.5F; + private static final float DIVIDER_ALPHA = 0.5F; + private static final float NOTE_ALPHA = 0.8F; + private static final float OPEN = 1.0F; + private static final float CLOSED = 0.0F; + private static final int NO_ROW = -1; + private final String title; + private final List entries; + private final ase hovers = new ase(); + private int scroll; + private int hoveredRow = -1; + + public abu(arr var1, String var2, List var3) { + super(var1); + this.title = var2; + this.entries = List.copyOf(var3); + this.animationScale.update(1.0F); + } + + public static float heightFor(List var0) { + return 17.0F + Math.min(var0.size(), (-1191994777 | 1191994785) + (-1191994777 & 1191994785)) * 14.0F + 4.0F; + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + @Override + public void render(asq var1, float var2, float var3, float var4, mv var5) { + float var6 = this.animationScale.update(); + if (!(var6 <= 0.0F)) { + float var7 = this.bounds.getX(); + float var8 = this.bounds.getY(); + float var9 = this.bounds.getWidth(); + float var10 = this.bounds.getHeight(); + float var11 = var8 + var10 / 2.0F; + var1.pushMatrix(); + var1.pose().translate(var7, var11); + var1.pose().scale(var6, var6); + var1.pose().translate(-var7, -var11); + var1.drawSurface(aso.POPUP, var7, var8, var9, var10, asj.all(oc.CONTROL), var5.getForegroundColor().getRGBWithAlpha(var4)); + ge var12 = asp.font(oe.LABEL_STRONG); + ge var13 = asp.font(oe.LABEL); + var1.drawScrollingText( + var12, + this.title, + var7 + 6.0F, + var8 + (17.0F - var12.height()) / 2.0F, + var9 - 12.0F, + var5.getWhite().getRGBWithAlpha(var4), + (boolean)((((-1593328897 ^ 1593328898) + ((-1593328897 & 1593328898) << 1)) + ) != 0)); + var1.drawRect(var7 + 6.0F, var8 + 17.0F - 0.5F, var9 - 12.0F, 0.5F, var5.getGrayLight().mulAlpha(0.5F * var4)); + int var14 = Math.min(this.entries.size(), (1211579925 ^ -1211579917) + ((1211579925 & -1211579917) << 1)); + this.clampScroll(); + int var15 = -1; + float var16 = var7 + 4.0F; + float var17 = var9 - 8.0F; + + for (int var18 = 0; var18 < var14; var18++) { + int var19 = var18 + this.scroll; + rs var20 = this.entries.get(var19); + float var21 = var8 + 17.0F + var18 * 14.0F; + int var22 = var20.clickable() && aqj.isHovered(var2, var3, var16, var21, var17, 14.0) + ? 1: 0; + if (var22 != 0) { + var15 = var19; + } + + float var23 = Math.max(0.0F, Math.min(1.0F, this.hovers.hover(var19, (boolean)((var22) != 0)))); + float var24 = var21 + (14.0F - var13.height()) / 2.0F; + switch (abt.$SwitchMap$evo$systems$client$modules$api$setting$impl$ActionGridSetting$ListEntry$Kind[var20.kind().ordinal()]) { + case 1: + var1.drawScrollingText( + var12, + var20.label(), + var16 + 6.0F - 4.0F, + var24, + var17, + var5.getGrayLight().getRGBWithAlpha(var4), + (boolean)((((193096788 | -193096787) + (193096788 & -193096787)) + ) != 0)); + break; + case 2: + var1.drawScrollingText( + var13, + var20.label(), + var16 + 6.0F - 4.0F, + var24, + var17, + var5.getGrayLight().getRGBWithAlpha(0.8F * var4), + (boolean)((((-1631237362 | 1631237363) + (-1631237362 & 1631237363)) + ) != 0)); + break; + case 3: + asa.plate(var1, var16, var21, var17, 14.0F, asa.plateColor(var5), var4, var23); + float var25 = var20.detail() == null ? 0.0F : Math.min(var13.width(var20.detail()), var17 * 0.4F); + float var26 = var17 - 12.0F - (var25 > 0.0F ? var25 + 6.0F : 0.0F); + var1.drawScrollingText( + var13, + var20.label(), + var16 + 6.0F, + var24, + var26, + asa.liftText(var5.getWhite().getRGBWithAlpha(var4), var5, var23), + (boolean)((((-83314568 | 83314569) + (-83314568 & 83314569)) + ) != 0)); + if (var25 > 0.0F) { + var1.drawScrollingText( + var13, + var20.detail(), + var16 + var17 - 6.0F - var25, + var24, + var25, + asu.getRGBWithAlpha(var5.getGrayLight().getRGB(), var4), + (boolean)((((675034456 ^ -675034455) + ((675034456 & -675034455) << 1)) + ) != 0)); + } + } + } + + this.hovers.endFrame(); + this.hoveredRow = var15; + var1.popMatrix(); + } + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + rs var6 = null; + int var7 = 567881472; + + while (true) { + switch (var7) { + case -1213767874: + bz.getInstance().getSoundManager().playClick(); + var7 = 150671468; + break; + case -745427248: + var6.run().run(); + this.animationScale.animateTo(0.0F); + if (bz.getInstance().getSoundManager() != null) { + var7 = -1213767874; + } else { + var7 = 150671468; + } + break; + case -401466026: + return; + case -77236347: + if (this.hoveredRow != (1696687829 | -1696687830) + (1696687829 & -1696687830)) { + var7 = 1672783080; + } else { + var7 = -401466026; + } + break; + case 150671468: + return; + case 264964111: + var6 = this.entries.get(this.hoveredRow); + if (!var6.clickable()) { + var7 = 1148032913; + } else { + var7 = -745427248; + } + break; + case 567881472: + default: + if (var5 == apf.LEFT) { + var7 = -77236347; + } else { + var7 = -401466026; + } + break; + case 1148032913: + return; + case 1672783080: + if (this.hoveredRow >= this.entries.size()) { + var7 = -401466026; + } else { + var7 = 264964111; + } + } + } + } + + @Override + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + if (this.entries.size() > (289355092 ^ -289355084) + ((289355092 & -289355084) << 1) && var7 != 0.0) { + this.scroll += var7 > 0.0 ? -1: 1; + this.clampScroll(); + return (boolean)(((1)) != 0); + } else { + return (boolean)(((0)) != 0); + } + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = 724314174; + + while (true) { + switch (var4) { + case -919894875: + return (boolean)(((0)) != 0); + case 724314174: + default: + if (var1 == (1058257264 ^ -1058257008) + ((1058257264 & -1058257008) << 1)) { + var4 = 1741371506; + } else { + var4 = -919894875; + } + break; + case 1531253974: + this.animationScale.animateTo(0.0F); + return (boolean)(((1)) != 0); + case 1741371506: + if (this.animationScale.target() != 0.0F) { + var4 = 1531253974; + } else { + var4 = -919894875; + } + } + } + } + + @Override + public boolean charTyped(char var1, int var2) { + return (boolean)(((0)) != 0); + } + + @Override + public float getWidth() { + return this.bounds.getWidth(); + } + + @Override + public float getHeight() { + return this.bounds.getHeight(); + } + + @Override + public boolean isVisible() { + return (boolean)(((1)) != 0); + } + + private void clampScroll() { + this.scroll = Math.max( + 0, + Math.min(this.scroll, this.entries.size() - Math.min(this.entries.size(), (-671918825 | 671918833) + (-671918825 & 671918833))) + ); + } +} diff --git a/src/main/java/defpackage/abv.java b/src/main/java/defpackage/abv.java new file mode 100644 index 0000000..52fb4dd --- /dev/null +++ b/src/main/java/defpackage/abv.java @@ -0,0 +1,21 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:abv.class */ +/* synthetic */ class abv { + static final /* synthetic */ int[] $SwitchMap$evo$systems$replay$ReplayStatus$Kind = new int[ajo.values().length]; + + static { + try { + $SwitchMap$evo$systems$replay$ReplayStatus$Kind[ajo.RECORDING.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$replay$ReplayStatus$Kind[ajo.EXPORTING.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$replay$ReplayStatus$Kind[ajo.TUNING.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + } +} diff --git a/src/main/java/defpackage/abw.java b/src/main/java/defpackage/abw.java new file mode 100644 index 0000000..6918040 --- /dev/null +++ b/src/main/java/defpackage/abw.java @@ -0,0 +1,9 @@ +package defpackage; + +enum abw { + NONE, + PLAYHEAD, + IN, + OUT, + VOLUME; +} diff --git a/src/main/java/defpackage/abx.java b/src/main/java/defpackage/abx.java new file mode 100644 index 0000000..66d90cd --- /dev/null +++ b/src/main/java/defpackage/abx.java @@ -0,0 +1,10 @@ +package defpackage; + +import java.util.List; +import java.util.function.Supplier; + +record abx(String title, List settings, Supplier note) { + abx(String var1, List var2) { + this(var1, var2, () -> null); + } +} diff --git a/src/main/java/defpackage/aby.java b/src/main/java/defpackage/aby.java new file mode 100644 index 0000000..5032661 --- /dev/null +++ b/src/main/java/defpackage/aby.java @@ -0,0 +1,2928 @@ +package defpackage; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.IdentityHashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import net.minecraft.util.Util; + +public final class aby extends api { + private static final String TITLE = "Clips"; + private static final String EMPTY_TITLE = "No clips yet"; + private static final String EMPTY_HINT = "Press the replay key to keep the last seconds"; + private static final String LOADING = "Loading"; + private static final String OPEN_FAILURE = "clip preview failed"; + private static final String CLOSE_GLYPH = "x"; + private static final String PLAY_LABEL = "Play"; + private static final String PAUSE_LABEL = "Pause"; + private static final String EXPORT_LABEL = "Export"; + private static final String SAVE_AS_LABEL = "Save as"; + private static final String FOLDER_LABEL = "Folder"; + private static final String DELETE_LABEL = "Delete"; + private static final String DELETE_CONFIRM = "Confirm"; + private static final String SHORTCUTS = "space play i / o trim enter export"; + private static final String SETTINGS_LABEL = "Settings"; + private static final String EDITOR_LABEL = "Editor"; + private static final String SETTINGS_EMPTY = "Enable the module to change these"; + private static final String SECTION_CAPTURE = "Capture"; + private static final String SECTION_BUFFER = "Instant replay"; + private static final String SECTION_AUDIO = "Audio"; + private static final String SECTION_OUTPUT = "Output"; + private static final String NOTE_NO_LOOPBACK = "Needs a loopback input (BlackHole, VB-Cable, Stereo Mix)"; + private static final String NOTE_SAME_DEVICE = "Same device as the microphone, game audio is skipped"; + private static final String RECORDING_PREFIX = "REC "; + private static final String EXPORT_PREFIX = "Exporting "; + private static final String SAVING_LABEL = "Saving"; + private static final String TIME_SEPARATOR = " / "; + private static final String TRIM_PREFIX = "trim "; + private static final String CLIP_SUFFIX = " clips"; + private static final String CLIP_SINGULAR = " clip"; + private static final String SIZE_SUFFIX = " MB"; + private static final String SEPARATOR = " "; + private static final String PERCENT = "%"; + private static final String LOGO_TEXTURE = "icons/logo.png"; + private static final String PLAY_TEXTURE = "icons/media_play.png"; + private static final String PAUSE_TEXTURE = "icons/media_pause.png"; + private static final float MARGIN = 20.0F; + private static final float PANEL_MAX_WIDTH = 560.0F; + private static final float PANEL_MAX_HEIGHT = 330.0F; + private static final float PADDING = 11.0F; + private static final float HEADER_HEIGHT = 27.0F; + private static final float LIST_WIDTH = 134.0F; + private static final float ROW_HEIGHT = 30.0F; + private static final float ROW_GAP = 3.0F; + private static final float GAP = 9.0F; + private static final float TIMELINE_HEIGHT = 32.0F; + private static final float TIMELINE_MARGIN = 4.0F; + private static final float BUTTON_HEIGHT = 17.0F; + private static final float BUTTON_GAP = 6.0F; + private static final float HANDLE_WIDTH = 3.5F; + private static final float HANDLE_HOVER_WIDTH = 5.5F; + private static final float HANDLE_GRAB = 6.0F; + private static final float HANDLE_OVERSHOOT = 3.0F; + private static final float PLAYHEAD_WIDTH = 1.8F; + private static final float PLAYHEAD_KNOB = 5.5F; + private static final float CLOSE_SIZE = 13.0F; + private static final float TEXT_INSET = 8.0F; + private static final float TITLE_Y = 8.0F; + private static final float ROW_SLIDE = 14.0F; + private static final float ROW_STAGGER = 0.055F; + private static final float ROW_STAGGER_MAX = 0.4F; + private static final float CLOSE_EPSILON = 0.004F; + private static final float DIM_ALPHA = 0.6F; + private static final float ROW_IDLE_ALPHA = 0.5F; + private static final float SHADOW_SPREAD = 26.0F; + private static final float SHADOW_ALPHA = 0.55F; + private static final float PROGRESS_HEIGHT = 3.0F; + private static final float PRESS_SCALE = 0.965F; + private static final float HOVER_LIFT = 1.2F; + private static final float SELECTION_ALPHA = 0.26F; + private static final float ACCENT_BAR_WIDTH = 2.5F; + private static final float ACCENT_BAR_INSET = 6.0F; + private static final float OVERLAY_SIZE = 34.0F; + private static final float OVERLAY_ICON_RATIO = 0.42F; + private static final float OVERLAY_ALPHA = 0.35F; + private static final float SCRUB_ALPHA = 0.45F; + private static final float GLOSS_SIGMA = 0.22F; + private static final float GLOSS_ALPHA = 0.35F; + private static final float LOGO_SIZE = 22.0F; + private static final float LOGO_GAP = 8.0F; + private static final float PULSE_MIN = 0.55F; + private static final float CHIP_PAD = 6.0F; + private static final float CHIP_HEIGHT = 13.0F; + private static final float DOT_SIZE = 5.0F; + private static final float DOT_GAP = 4.0F; + private static final float BORDER_ALPHA = 0.22F; + private static final float PREVIEW_BORDER_ALPHA = 0.16F; + private static final float TIME_GAP = 3.0F; + private static final float VOLUME_WIDTH = 52.0F; + private static final float VOLUME_TRACK = 2.5F; + private static final float VOLUME_KNOB = 6.5F; + private static final float VOLUME_LABEL_GAP = 4.0F; + private static final float VOLUME_HIT_HEIGHT = 12.0F; + private static final String VOLUME_LABEL = "vol"; + private static final float SETTINGS_ROW_GAP = 4.0F; + private static final float SETTINGS_INSET = 10.0F; + private static final float SETTINGS_TOP_PAD = 12.0F; + private static final float SETTINGS_BAR_INSET = 2.0F; + private static final float SETTINGS_COLUMN_GAP = 14.0F; + private static final float SECTION_TITLE_HEIGHT = 11.0F; + private static final float SECTION_GAP = 13.0F; + private static final float SECTION_RULE_HEIGHT = 1.0F; + private static final float SECTION_RULE_ALPHA = 0.12F; + private static final float SECTION_TITLE_ALPHA = 0.8F; + private static final float SECTION_RULE_GAP = 5.0F; + private static final int SETTINGS_COLUMNS = 2; + private static final float DISABLED_ALPHA = 0.45F; + private static final float SETTLED_EPSILON = 0.995F; + private static final float MISSED_POINTER = 1000.0F; + private static final float[] BUTTON_WEIGHTS; + private static final int BUTTON_COUNT = 5; + private static final int BUTTON_PLAY = 0; + private static final int BUTTON_EXPORT = 1; + private static final int BUTTON_SAVE_AS = 2; + private static final int BUTTON_FOLDER = 3; + private static final int BUTTON_DELETE = 4; + private static final long DELETE_CONFIRM_MILLIS = 3000L; + private static final long NANOS_PER_MILLI = 1000000L; + private static final long SECOND_MILLIS = 1000L; + private static final long MAX_STEP_MILLIS = 250L; + private static final double PULSE_PERIOD_MS = 700.0; + private static final double GLOSS_PERIOD_MS = 1400.0; + private static final float BYTES_PER_MEGABYTE = 1048576.0F; + private static final int PERCENT_SCALE = 100; + private static final float HALF = 0.5F; + private static final float SEPARATOR_GAP = 8.0F; + private final List clips = new ArrayList<>(); + private final List settingWidgets = new ArrayList<>(); + private final List settingModels = new ArrayList<>(); + private final Map settingLookup = new IdentityHashMap<>(); + private final List> settingColumns = new ArrayList<>(); + private final arl settingsScroll = new arl(); + private final ark settingsBar = new ark(); + private final ct settingsSpring = ct.transform(ob.MEDIUM); + private final ct settingsHover = asa.spring(); + private final ct moduleEnabled = ct.transform(ob.MEDIUM); + private final Map rowHover = new HashMap<>(); + private final arl listScroll = new arl(); + private final ark listBar = new ark(); + private final xm frame = new xm(); + private final ct selectionY = ct.layout(ob.MEDIUM); + private final ct selectionAlpha = ct.transform(ob.MEDIUM); + private final ct previewFade = ct.transform(ob.SLOW); + private final ct overlayHover = asa.spring(); + private final ct timelineHover = asa.spring(); + private final ct volumeHover = asa.spring(); + private final ct closeHover = asa.spring(); + private final ct inHandle = asa.spring(); + private final ct outHandle = asa.spring(); + private final ct[] buttonHover = new ct[5]; + private final ct[] buttonPress = new ct[5]; + private final String[] buttonLabels = new String[5]; + private final float[] buttonX = new float[5]; + private final float[] buttonWidth = new float[5]; + private ake requested; + private ake selected; + private abz preview; + private abw drag = abw.NONE; + private int inFrame; + private int outFrame; + private long playheadMillis; + private boolean playing; + private long lastAdvanceNanos; + private long deleteArmedAt; + private boolean settingsOpen; + private int pressedButton = -1; + private float settingsButtonX; + private float settingsButtonWidth; + private float panelX; + private float panelY; + private float panelWidth; + private float panelHeight; + private float listX; + private float listTop; + private float listBottom; + private float contentX; + private float contentWidth; + private float previewY; + private float previewHeight; + private float timelineY; + private float buttonY; + private float volumeX; + private float volumeY; + + private aby(ake var1) { + this.requested = var1; + + for (int var2 = 0; var2 < 5; var2++) { + this.buttonHover[var2] = asa.spring(); + this.buttonPress[var2] = ct.transform(ob.INSTANT, 1.0F); + } + } + + public static void open() { + open(null); + } + + public static void open(ake var0) { + mc.gui.setScreen(new aby(var0)); + } + + protected void init() { + ake var1 = null; + ake var3 = null; + int var2 = -1486367091; + + while (true) { + switch (var2) { + case -1933927448: + if (this.clips.isEmpty()) { + var2 = 331275572; + } else { + var2 = -2997896; + } + break; + case -1486367091: + default: + this.frame.open(); + this.frame.measure(this.width, this.height, 560.0F, 330.0F); + this.buildSettings(); + this.reloadLibrary(); + if (this.requested != null) { + var2 = 541019725; + } else { + var2 = -1933927448; + } + break; + case -1048805031: + var1 = var3; + this.requested = null; + if (var1 != null) { + var2 = -171030059; + } else { + var2 = 1403696023; + } + break; + case -171030059: + if (this.selected == null) { + var2 = 353287922; + } else { + var2 = 1403696023; + } + break; + case -2997896: + var3 = this.clips.getFirst(); + var2 = -1048805031; + break; + case 331275572: + var3 = null; + var2 = -1048805031; + break; + case 353287922: + this.select(var1); + var2 = 1403696023; + break; + case 541019725: + var3 = this.match(this.requested); + var2 = -1048805031; + break; + case 1403696023: + return; + } + } + } + + public void removed() { + this.closePreview(); + super.removed(); + } + + public boolean shouldCloseOnEsc() { + return (boolean)(((0)) != 0); + } + + @Override + public void tick() { + int var1 = -4268749; + + while (true) { + switch (var1) { + case -1806300663: + return; + case -737435399: + mc.gui.setScreen(null); + var1 = -1806300663; + break; + case -702347462: + if (this.frame.isClosed()) { + var1 = -737435399; + } else { + var1 = -1806300663; + } + break; + case -4268749: + default: + if (aje.getInstance().isActive()) { + var1 = 1947762481; + } else { + var1 = -702347462; + } + break; + case 1947762481: + this.startClose(); + var1 = -702347462; + } + } + } + + public void extractBackground(GuiGraphicsExtractor var1, int var2, int var3, float var4) { + } + + @Override + public void render(asq var1, float var2, float var3) { + mv var4 = null; + float var5 = 0.0F; + arq var6 = null; + float var7 = 0.0F; + int var8 = 2102891294; + + while (true) { + switch (var8) { + case -439167043: + this.renderEditor(var1, var4, var5 * (1.0F - var7), var2, var3); + var8 = -52693608; + break; + case -119953957: + this.renderExportProgress(var1, var4, var5); + this.frame.pop(var1); + return; + case -52693608: + if (var7 > 0.004F) { + var8 = 1776031701; + } else { + var8 = -119953957; + } + break; + case 1776031701: + this.renderSettings(var1, var4, var5 * var7, var2, var3); + var8 = -119953957; + break; + case 2102891294: + default: + var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + this.frame.measure(this.width, this.height, 560.0F, 330.0F); + var5 = this.frame.advance(); + this.layout(); + this.advancePlayback(); + this.frame.push(var1, this.panelX + this.panelWidth * 0.5F, this.panelY + this.panelHeight * 0.5F); + var2 = (float)this.frame.toLocalX(var2); + var3 = (float)this.frame.toLocalY(var3); + var6 = asj.all(oc.WINDOW); + atb.drawShadow(var1.pose(), this.panelX, this.panelY, this.panelWidth, this.panelHeight, 26.0F, var6, var4.getColor().mulAlpha(var5 * 0.55F)); + var1.drawSurface(aso.WINDOW, this.panelX, this.panelY, this.panelWidth, this.panelHeight, var6, var4.getBackgroundColor().withAlpha(var5)); + atb.drawRoundedBorder( + var1.pose(), this.panelX, this.panelY, this.panelWidth, this.panelHeight, pk.borderRim(), var6, var4.getWhite().mulAlpha(var5 * 0.22F) + ); + var7 = this.settingsSpring.update(this.settingsOpen); + this.renderHeader(var1, var4, var5, var2, var3); + this.renderList(var1, var4, var5, var2, var3); + if (var7 < 0.995F) { + var8 = -439167043; + } else { + var8 = -52693608; + } + } + } + } + + private void layout() { + this.panelWidth = Math.min(560.0F, this.frame.viewWidth() - 40.0F); + this.panelHeight = Math.min(330.0F, this.frame.viewHeight() - 40.0F); + this.panelX = this.frame.centerX(this.panelWidth); + this.panelY = this.frame.centerY(this.panelHeight); + this.listX = this.panelX + 11.0F; + this.listTop = this.panelY + 27.0F; + this.listBottom = this.panelY + this.panelHeight - 11.0F; + this.contentX = this.listX + 134.0F + 9.0F; + this.contentWidth = this.panelX + this.panelWidth - 11.0F - this.contentX; + this.buttonY = this.panelY + this.panelHeight - 11.0F - 17.0F - 3.0F; + this.timelineY = this.buttonY - 9.0F - 32.0F; + this.previewY = this.listTop; + this.previewHeight = this.timelineY - 3.0F - 9.0F - this.previewY; + float var1 = 0.0F; + float[] var2 = BUTTON_WEIGHTS; + int var3 = var2.length; + + for (int var4 = 0; var4 < var3; var4++) { + float var5 = var2[var4]; + var1 += var5; + } + + float var6 = this.contentWidth - 24.0F; + float var7 = this.contentX; + + for (int var8 = 0; var8 < 5; var8++) { + this.buttonWidth[var8] = var6 * BUTTON_WEIGHTS[var8] / var1; + this.buttonX[var8] = var7; + var7 += this.buttonWidth[var8] + 6.0F; + } + + ge var9 = gl.MEDIUM.getFont(6.0F); + this.settingsButtonWidth = var9.width( + this.settingsOpen + ? "Editor" + : "Settings" + ) + + 12.0F; + this.settingsButtonX = this.panelX + this.panelWidth - 11.0F - 13.0F - 6.0F - this.settingsButtonWidth; + this.buttonLabels[0] = this.playing + ? "Pause" + : "Play"; + this.buttonLabels[1] = "Export"; + this.buttonLabels[2] = "Save as"; + this.buttonLabels[3] = "Folder"; + this.buttonLabels[4] = this.deleteArmed() + ? "Confirm" + : "Delete"; + } + + private void renderHeader(asq var1, mv var2, float var3, float var4, float var5) { + ge var6 = gl.SEMIBOLD.getFont(10.0F); + ge var7 = gl.MEDIUM.getFont(6.5F); + float var8 = this.panelY + 8.0F; + var1.drawText( + var6, "Clips", this.panelX + 11.0F, var8, var2.getWhite().mulAlpha(var3) + ); + long var9 = (-605717969295805558L | 605717969295805558L) + (-605717969295805558L & 605717969295805558L); + + for (ake var12 : this.clips) { + var9 += var12.sizeBytes(); + } + + int var10000 = this.clips.size(); + String var10001 = this.clips.size() == 1? " clip" + : " clips"; + Locale var10002 = Locale.ROOT; + String var10003 = "%.0f"; + Object[] var10004 = new Object[1]; + var10004[0] = (float)var9 / 1048576.0F; + String var21 = var10000 + var10001 + " " + String.format(var10002, var10003, var10004) + " MB"; + var1.drawText( + var7, + var21, + this.panelX + 11.0F + var6.width("Clips") + 8.0F, + var8 + var6.height() - var7.height() - 0.5F, + var2.getGrayLight().mulAlpha(var3) + ); + float var22 = this.panelX + this.panelWidth - 11.0F - 13.0F; + float var13 = var8 - 1.0F; + boolean var14 = aqj.isHovered(var4, var5, var22, var13, 13.0, 13.0); + float var15 = this.closeHover.update(var14); + var1.drawSurface( + aso.CONTROL, + var22, + var13, + 13.0F, + 13.0F, + asj.all(oc.ROW), + var2.getForegroundColor().mix(pi.gaugeBad(), var15 * 0.5F).mulAlpha(var3 * (0.5F + var15 * 0.5F)) + ); + ge var16 = gl.MEDIUM.getFont(6.0F); + var1.drawText( + var16, + "x", + var22 + (13.0F - var16.width("x")) * 0.5F, + var13 + (13.0F - var16.height()) * 0.5F + 0.5F, + var2.getWhite().mulAlpha(var3 * (0.6F + var15 * 0.4F)) + ); + ge var17 = gl.MEDIUM.getFont(6.0F); + boolean var18 = aqj.isHovered(var4, var5, this.settingsButtonX, var13, this.settingsButtonWidth, 13.0); + float var19 = this.settingsHover.update(var18); + String var20 = this.settingsOpen + ? "Editor" + : "Settings"; + var1.drawSurface( + aso.CONTROL, + this.settingsButtonX, + var13, + this.settingsButtonWidth, + 13.0F, + asj.pill(13.0F), + (this.settingsOpen ? var2.getColor() : var2.getForegroundColor()).mulAlpha(var3 * (0.5F + var19 * 0.5F)) + ); + var1.drawText( + var17, + var20, + this.settingsButtonX + (this.settingsButtonWidth - var17.width(var20)) * 0.5F, + var13 + (13.0F - var17.height()) * 0.5F + 0.5F, + var2.getWhite().mulAlpha(var3 * (0.75F + var19 * 0.25F)) + ); + this.renderStatusChip(var1, var2, var3, this.settingsButtonX - 6.0F); + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private void renderStatusChip(asq var1, mv var2, float var3, float var4) { + ge var5 = gl.MEDIUM.getFont(6.0F); + ajn var6 = ajn.getInstance(); + ajp var7 = var6.status(); + if (!var7.active()) { + float var15 = var5.width( + "space play i / o trim enter export" + ); + var1.drawText( + var5, + "space play i / o trim enter export", + var4 - var15, + this.panelY + 8.0F + (13.0F - var5.height()) * 0.5F, + var2.getGrayLight().mulAlpha(var3 * 0.6F) + ); + } else { + String var8 = switch (abv.$SwitchMap$evo$systems$replay$ReplayStatus$Kind[var7.kind().ordinal()]) { + case 1 -> "REC " + elapsedOf(var7); + case 2 -> "Exporting " + Math.round(var7.progress() * 100.0F) + "%"; + case 3 -> var7.label(); + default -> "Saving"; + }; + int var9 = var7.kind() == ajo.RECORDING + ? 1: 0; + asu var10 = var9 != 0 ? pi.gaugeBad() : var2.getColor(); + float var11 = var5.width(var8) + 5.0F + 4.0F + 12.0F; + float var12 = var4 - var11; + float var13 = this.panelY + 8.0F + 0.0F; + var1.drawRoundedRect(var12, var13, var11, 13.0F, asj.pill(13.0F), var10.mulAlpha(var3 * 0.18F)); + float var14 = var9 != 0 ? 0.55F + 0.45F * (float)Math.abs(Math.sin(System.currentTimeMillis() / 700.0)) : 1.0F; + var1.drawRoundedRect(var12 + 6.0F, var13 + 4.0F, 5.0F, 5.0F, asj.pill(5.0F), var10.mulAlpha(var3 * var14)); + var1.drawText(var5, var8, var12 + 6.0F + 5.0F + 4.0F, var13 + (13.0F - var5.height()) * 0.5F + 0.5F, var2.getWhite().mulAlpha(var3)); + } + } + + private static String elapsedOf(ajp var0) { + String var1 = null; + int var2 = 0; + String var4 = null; + int var3 = 583588627; + + while (true) { + switch (var3) { + case -1796123044: + var4 = var1.substring(var2 + (-386856224 ^ 386856225) + ((-386856224 & 386856225) << 1)); + var3 = 1829285591; + break; + case 583588627: + default: + var1 = var0.label(); + var2 = var1.indexOf((1099611328 ^ -1099611296) + ((1099611328 & -1099611296) << 1)); + if (var2 >= 0) { + var3 = -1796123044; + } else { + var3 = 1067063999; + } + break; + case 1067063999: + var4 = var1; + var3 = 1829285591; + break; + case 1829285591: + return var4; + } + } + } + + private void renderList(asq var1, mv var2, float var3, float var4, float var5) { + ge var6 = gl.MEDIUM.getFont(7.0F); + ge var7 = gl.MEDIUM.getFont(6.0F); + float var8 = this.listBottom - this.listTop; + if (this.clips.isEmpty()) { + this.listBar.measure(this.listX + 134.0F - 3.5F, this.listTop, 3.5F, var8, 0.0F, 0.0F); + this.renderEmptyList(var1, var2, var3, var6, var7); + } else { + float var9 = this.clips.size() * 33.0F - 3.0F; + float var10 = Math.max(0.0F, var9 - var8); + this.listScroll.setMax(var10); + this.listScroll.update(); + float var11 = (float)this.listScroll.getValue(); + int var12 = this.indexOf(this.selected); + if (var12 >= 0) { + this.selectionY.update(this.listTop + var12 * 33.0F - var11); + } + + float var13 = this.selectionAlpha + .update((boolean)(((var12 >= 0 ? 1: (-651378559 | 651378559) + (-651378559 & 651378559))) != 0)); + var1.clipScroll( + this.listX, this.listTop, this.listX + 134.0F, this.listBottom, var11 > 0.0F ? ars.edgeFade() : 0.0F, var11 < var10 ? ars.edgeFade() : 0.0F + ); + if (var13 > 0.0F) { + float var14 = this.selectionY.value(); + var1.drawSurface(aso.ROW, this.listX, var14, 134.0F, 30.0F, asj.all(oc.ROW), var2.getColor().mulAlpha(var3 * var13 * 0.26F)); + var1.drawRoundedRect(this.listX + 3.0F, var14 + 6.0F, 2.5F, 18.0F, asj.pill(2.5F), var2.getColor().mulAlpha(var3 * var13)); + } + + for (int var27 = 0; var27 < this.clips.size(); var27++) { + ake var15 = this.clips.get(var27); + float var16 = this.listTop + var27 * 33.0F - var11; + if (!(var16 + 30.0F < this.listTop) && !(var16 > this.listBottom)) { + int var17 = aqj.isHovered(var4, var5, this.listX, var16, 134.0, 30.0) && var5 >= this.listTop && var5 <= this.listBottom + ? 1: 0; + float var18 = this.hoverSpring(var15).update((boolean)((var17) != 0)); + int var19 = this.selected != null && this.selected.path().equals(var15.path()) + ? 1: 0; + float var20 = Mth.clamp((var3 - Math.min(var27 * 0.055F, 0.4F)) / (1.0F - Math.min(var27 * 0.055F, 0.4F)), 0.0F, 1.0F); + float var21 = (1.0F - var20) * 14.0F; + float var22 = this.listX - var21; + float var23 = var3 * var20; + if (var19 == 0) { + var1.drawSurface(aso.ROW, var22, var16, 134.0F, 30.0F, asj.all(oc.ROW), var2.getForegroundGray().mulAlpha(var23 * (0.5F + var18 * 0.45F))); + } + + float var24 = var22 + 8.0F + var18 * 1.2F + (var19 != 0 ? 3.0F : 0.0F); + var1.drawText( + var6, + akd.label(var15.createdEpochMillis()), + var24, + var16 + 6.0F, + var2.getWhite().mulAlpha(var23 * (var19 != 0 ? 1.0F : 0.82F + var18 * 0.18F)) + ); + String var10000 = ajn.elapsed(var15.durationMillis()); + Locale var10001 = Locale.ROOT; + String var10002 = "%.0f"; + Object[] var10003 = new Object[1]; + var10003[0] = (float)var15.sizeBytes() / 1048576.0F; + String var25 = var10000 + " " + String.format(var10001, var10002, var10003) + " MB"; + float var26 = var16 + 6.0F + var6.height() + 2.0F; + var1.drawText(var7, var25, var24, var26, (var19 != 0 ? var2.getColor() : var2.getGrayLight()).mulAlpha(var23)); + if (var15.hasAudio()) { + var1.drawRoundedRect( + var24 + var7.width(var25) + 4.0F, var26 + (var7.height() - 2.5F) * 0.5F, 2.5F, 2.5F, asj.pill(5.0F), var2.getColor().mulAlpha(var23) + ); + } + } + } + + var1.popClip(); + this.listBar.measure(this.listX + 134.0F - 3.5F, this.listTop, 3.5F, var8, var10, var11); + this.listBar.render(var1, var2, var3, var4, var5, this.listScroll.isSettled()); + } + } + + private void renderEmptyList(asq var1, mv var2, float var3, ge var4, ge var5) { + float var6 = 0.55F + 0.45F * (float)Math.abs(Math.sin(System.currentTimeMillis() / 1400.0)); + float var7 = this.listX + 67.0F; + float var8 = this.listTop + (this.listBottom - this.listTop) * 0.32F; + atb.drawRoundedTexture( + var1.pose(), bz.id("icons/logo.png"), var7 - 11.0F, var8, 22.0F, 22.0F, asj.uniform(oc.CARD.ordinal() + 1.0F), asu.WHITE.mulAlpha(var3 * var6 * 0.6F) + ); + var1.drawText( + var4, + "No clips yet", + var7 - var4.width("No clips yet") * 0.5F, + var8 + 22.0F + 8.0F, + var2.getWhite().mulAlpha(var3) + ); + this.drawWrapped( + var1, + var5, + "Press the replay key to keep the last seconds", + this.listX, + var8 + 22.0F + 8.0F + var4.height() + 3.0F, + 134.0F, + var2.getGrayLight().mulAlpha(var3 * 0.6F), + (boolean)((((-143641714 | 143641715) + (-143641714 & 143641715)) + ) != 0)); + } + + private float drawWrapped(asq var1, ge var2, String var3, float var4, float var5, float var6, asu var7, boolean var8) { + StringBuilder var9 = null; + float var10 = 0.0F; + String[] var11 = null; + int var12 = 0; + int var13 = 0; + Object var14 = null; + Object var15 = null; + Object var17 = null; + int var16 = -51227690; + + while (true) { + switch (var16) { + case -1744020623: + var9.setLength((-2069135000 | 2069135000) + (-2069135000 & 2069135000)); + var9.append((String)var15); + var16 = -662747533; + break; + case -1675935486: + var14 = var11[var13]; + if (var9.isEmpty()) { + var16 = -880652579; + } else { + var16 = 1752729736; + } + break; + case -1218492617: + return var10 - var5; + case -880652579: + var17 = var14; + var16 = 1016734646; + break; + case -778795885: + var10 = this.drawWrappedLine(var1, var2, var9.toString(), var4, var10, var6, var7, var8); + var9.setLength((-70963177 | 70963177) + (-70963177 & 70963177)); + var9.append((String)var14); + var16 = -662747533; + break; + case -666557342: + var10 = this.drawWrappedLine(var1, var2, var9.toString(), var4, var10, var6, var7, var8); + var16 = -1218492617; + break; + case -662747533: + var13++; + var16 = 1534755662; + break; + case -51227690: + default: + var9 = new StringBuilder(); + var10 = var5; + var11 = var3.split(" "); + var12 = var11.length; + var13 = 0; + var16 = 1534755662; + break; + case 730093437: + if (!var9.isEmpty()) { + var16 = -666557342; + } else { + var16 = -1218492617; + } + break; + case 1016734646: + var15 = var17; + if (var2.width((String)var15) > var6) { + var16 = 1310837843; + } else { + var16 = -1744020623; + } + break; + case 1310837843: + if (!var9.isEmpty()) { + var16 = -778795885; + } else { + var16 = -1744020623; + } + break; + case 1534755662: + if (var13 < var12) { + var16 = -1675935486; + } else { + var16 = 730093437; + } + break; + case 1752729736: + var17 = var9 + " " + var14; + var16 = 1016734646; + } + } + } + + private float drawWrappedLine(asq var1, ge var2, String var3, float var4, float var5, float var6, asu var7, boolean var8) { + float var9 = 0.0F; + float var11 = 0.0F; + int var10 = -1011059955; + + while (true) { + switch (var10) { + case -1193535831: + var11 = 0.0F; + var10 = 1638262345; + break; + case -1011059955: + default: + if (var8) { + var10 = 1543243996; + } else { + var10 = -1193535831; + } + break; + case 1543243996: + var11 = (var6 - var2.width(var3)) * 0.5F; + var10 = 1638262345; + break; + case 1638262345: + var9 = var11; + var1.drawText(var2, var3, var4 + var9, var5, var7); + return var5 + var2.height() + 1.5F; + } + } + } + + private void renderEditor(asq var1, mv var2, float var3, float var4, float var5) { + arq var6 = asj.all(oc.CARD); + var1.drawSurface(aso.CONTROL, this.contentX, this.previewY, this.contentWidth, this.previewHeight, var6, var2.getForegroundColor().mulAlpha(var3 * 0.6F)); + ge var7 = gl.MEDIUM.getFont(7.0F); + if (this.preview == null) { + String var16 = this.clips.isEmpty() + ? "Press the replay key to keep the last seconds" + : "Loading"; + var1.drawText( + var7, + var16, + this.contentX + (this.contentWidth - var7.width(var16)) * 0.5F, + this.previewY + this.previewHeight * 0.5F - var7.height() * 0.5F, + var2.getGrayLight().mulAlpha(var3 * 0.6F) + ); + } else { + Identifier var8 = this.preview.frameTexture(); + float var9 = this.previewFade + .update( + (boolean)(((var8 != null ? 1: (-113403109 ^ 113403109) + ((-113403109 & 113403109) << 1)) + ) != 0)); + if (var8 != null) { + float var10 = (float)this.preview.width() / this.preview.height(); + float var11 = this.contentWidth / this.previewHeight; + float var12 = var10 > var11 ? this.contentWidth : this.previewHeight * var10; + float var13 = var10 > var11 ? this.contentWidth / var10 : this.previewHeight; + float var14 = this.contentX + (this.contentWidth - var12) * 0.5F; + float var15 = this.previewY + (this.previewHeight - var13) * 0.5F; + atb.drawRoundedTexture(var1.pose(), var8, var14, var15, var12, var13, var6, asu.WHITE.mulAlpha(var3 * var9)); + atb.drawRoundedBorder(var1.pose(), var14, var15, var12, var13, pk.borderRim(), var6, var2.getWhite().mulAlpha(var3 * var9 * 0.16F)); + this.renderPlayOverlay(var1, var2, var3 * var9, var4, var5, var14, var15, var12, var13); + } + + this.renderTimeline(var1, var2, var3, var4, var5); + this.renderButtons(var1, var2, var3, var4, var5); + } + } + + private void renderPlayOverlay(asq var1, mv var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9) { + boolean var10 = aqj.isHovered(var4, var5, var6, var7, var8, var9); + float var11 = this.overlayHover.update(var10); + if (!(var11 <= 0.004F)) { + float var12 = 34.0F * (0.85F + var11 * 0.15F); + float var13 = var6 + var8 * 0.5F; + float var14 = var7 + var9 * 0.5F; + var1.drawRoundedRect(var13 - var12 * 0.5F, var14 - var12 * 0.5F, var12, var12, asj.pill(var12), asu.BLACK.mulAlpha(var3 * var11 * 0.35F)); + atb.drawRoundedBorder( + var1.pose(), + var13 - var12 * 0.5F, + var14 - var12 * 0.5F, + var12, + var12, + pk.borderRim(), + asj.pill(var12), + var2.getWhite().mulAlpha(var3 * var11 * 0.35F) + ); + float var15 = var12 * 0.42F; + atb.drawRoundedTexture( + var1.pose(), + bz.id(this.playing ? "icons/media_pause.png" : "icons/media_play.png"), + var13 - var15 * 0.5F, + var14 - var15 * 0.5F, + var15, + var15, + arq.ZERO, + asu.WHITE.mulAlpha(var3 * var11) + ); + } + } + + private void renderTimeline(asq var1, mv var2, float var3, float var4, float var5) { + arq var6 = asj.all(oc.CONTROL); + boolean var7 = aqj.isHovered(var4, var5, this.contentX, this.timelineY - 4.0F, this.contentWidth, 40.0); + float var8 = this.timelineHover + .update( + (boolean)(((!var7 && this.drag == abw.NONE + ? 0: (1101242287 | -1101242286) + (1101242287 & -1101242286)) + ) != 0)); + var1.drawSurface(aso.CONTROL, this.contentX, this.timelineY, this.contentWidth, 32.0F, var6, var2.getForegroundColor().mulAlpha(var3)); + Identifier var9 = this.preview.stripTexture(); + if (var9 != null) { + int var10 = this.preview.thumbnailCount(); + float var11 = this.contentWidth / var10; + float var12 = var11 / 32.0F; + float var13 = (float)this.preview.width() / this.preview.height(); + float var14 = Math.min(1.0F, var12 / var13); + float var15 = Math.min(1.0F, var13 / var12); + float var16 = var14 / (2.0F * var10); + float var17 = (1.0F - var15) * 0.5F; + var1.pushClipBounds(this.contentX, this.timelineY, this.contentX + this.contentWidth, this.timelineY + 32.0F); + + for (int var18 = 0; var18 < var10; var18++) { + float var19 = (var18 + 0.5F) / var10; + var1.drawRoundedTextureWithUV( + var9, + this.contentX + var18 * var11, + this.timelineY, + var11, + 32.0F, + arq.ZERO, + asu.WHITE.mulAlpha(var3), + var19 - var16, + var17, + var19 + var16, + 1.0F - var17 + ); + } + + var1.popClip(); + } + + float var22 = this.timeToX(this.preview.positionMillis(this.inFrame)); + float var23 = this.timeToX(this.preview.positionMillis(this.outFrame)); + asu var24 = asu.BLACK.mulAlpha(var3 * 0.6F); + var1.drawRoundedRect(this.contentX, this.timelineY, Math.max(0.0F, var22 - this.contentX), 32.0F, var6, var24); + var1.drawRoundedRect(var23, this.timelineY, Math.max(0.0F, this.contentX + this.contentWidth - var23), 32.0F, var6, var24); + asu var25 = var2.getColor().mulAlpha(var3); + float var26 = Math.max(0.0F, var23 - var22); + var1.drawRoundedRect(var22, this.timelineY - 1.0F, var26, 1.5F, arq.ZERO, var25.mulAlpha(0.7F)); + var1.drawRoundedRect(var22, this.timelineY + 32.0F - 0.5F, var26, 1.5F, arq.ZERO, var25.mulAlpha(0.7F)); + int var27 = this.drag != abw.IN && (!(Math.abs(var4 - var22) <= 6.0F) || !var7) + ? 0: 1; + int var28 = this.drag != abw.OUT && (!(Math.abs(var4 - var23) <= 6.0F) || !var7) + ? 0: 1; + this.drawHandle(var1, var22, this.inHandle.update((boolean)((var27) != 0)), var3, var25); + this.drawHandle(var1, var23, this.outHandle.update((boolean)((var28) != 0)), var3, var25); + if (var8 > 0.004F && this.drag == abw.NONE && var7) { + float var29 = Mth.clamp(var4, this.contentX, this.contentX + this.contentWidth); + var1.drawRoundedRect(var29 - 0.5F, this.timelineY, 1.0F, 32.0F, arq.ZERO, var2.getWhite().mulAlpha(var3 * var8 * 0.45F)); + } + + float var30 = this.timeToX(this.playheadMillis); + var1.drawRoundedRect(var30 - 0.9F, this.timelineY - 2.0F, 1.8F, 36.0F, asj.pill(1.8F), var2.getWhite().mulAlpha(var3)); + var1.drawRoundedRect(var30 - 2.75F, this.timelineY - 2.0F - 2.75F, 5.5F, 5.5F, asj.pill(5.5F), var2.getWhite().mulAlpha(var3)); + ge var31 = gl.MEDIUM.getFont(6.0F); + String var32 = ajn.elapsed(this.playheadMillis) + " / " + ajn.elapsed(this.preview.durationMillis()); + String var20 = "trim " + ajn.elapsed(this.preview.positionMillis(this.outFrame) - this.preview.positionMillis(this.inFrame)); + float var21 = this.timelineY - var31.height() - 3.0F; + var1.drawText(var31, var32, this.contentX, var21, var2.getWhite().mulAlpha(var3)); + var1.drawText(var31, var20, this.contentX + var31.width(var32) + 8.0F, var21, var25); + this.renderVolume(var1, var2, var3, var4, var5, var21, var31); + } + + private void renderVolume(asq var1, mv var2, float var3, float var4, float var5, float var6, ge var7) { + this.volumeX = this.contentX + this.contentWidth - 52.0F; + this.volumeY = var6 + var7.height() * 0.5F; + boolean var8 = aqj.isHovered( + var4, + var5, + this.volumeX - var7.width("vol") - 4.0F, + this.volumeY - 6.0F, + 52.0F + var7.width("vol") + 4.0F, + 12.0 + ); + float var9 = this.volumeHover + .update( + (boolean)(((!var8 && this.drag != abw.VOLUME + ? 0: (-724523930 ^ 724523931) + ((-724523930 & 724523931) << 1)) + ) != 0)); + float var10 = ti.INSTANCE.previewGain(); + var1.drawText( + var7, + "vol", + this.volumeX - var7.width("vol") - 4.0F, + var6, + var2.getGrayLight().mulAlpha(var3 * (0.6F + var9 * 0.39999998F)) + ); + var1.drawRoundedRect(this.volumeX, this.volumeY - 1.25F, 52.0F, 2.5F, asj.pill(2.5F), var2.getWhite().mulAlpha(var3 * 0.16F)); + var1.drawRoundedRect(this.volumeX, this.volumeY - 1.25F, 52.0F * var10, 2.5F, asj.pill(2.5F), var2.getColor().mulAlpha(var3)); + float var11 = 6.5F * (0.85F + var9 * 0.15F); + var1.drawRoundedRect( + this.volumeX + 52.0F * var10 - var11 * 0.5F, this.volumeY - var11 * 0.5F, var11, var11, asj.pill(var11), var2.getWhite().mulAlpha(var3) + ); + } + + private void updateVolume(double var1) { + float var3 = 0.0F; + int var4 = -98555322; + + while (true) { + switch (var4) { + case -532165673: + return; + case -98555322: + default: + var3 = Mth.clamp((float)((var1 - this.volumeX) / 52.0), 0.0F, 1.0F); + ti.INSTANCE.previewVolume.setCurrent(Math.round(var3 * 100.0F)); + if (this.preview != null) { + var4 = 1282272238; + } else { + var4 = -532165673; + } + break; + case 85654274: + this.preview.setAudioGain(ti.INSTANCE.previewGain()); + var4 = -532165673; + break; + case 1282272238: + if (this.playing) { + var4 = 85654274; + } else { + var4 = -532165673; + } + } + } + } + + private void drawHandle(asq var1, float var2, float var3, float var4, asu var5) { + float var6 = 3.5F + 2.0F * var3; + float var7 = 3.0F * (0.5F + var3 * 0.5F); + var1.drawRoundedRect(var2 - var6 * 0.5F, this.timelineY - var7, var6, 32.0F + var7 * 2.0F, asj.pill(var6), var5.mulAlpha(var4)); + } + + private void renderButtons(asq var1, mv var2, float var3, float var4, float var5) { + ge var6 = gl.MEDIUM.getFont(6.5F); + + for (int var7 = 0; var7 < 5; var7++) { + boolean var8 = aqj.isHovered(var4, var5, this.buttonX[var7], this.buttonY, this.buttonWidth[var7], 17.0); + float var9 = this.buttonHover[var7].update(var8); + float var10 = this.buttonPress[var7].update(this.pressedButton == var7 ? 0.965F : 1.0F); + int var11 = var7 == 1? 1: 0; + int var12 = var7 == (1443917813 | -1443917809) + (1443917813 & -1443917809) && this.deleteArmed() + ? 1: 0; + float var13 = this.buttonX[var7] + this.buttonWidth[var7] * 0.5F; + float var14 = this.buttonY + 8.5F; + var1.pose().pushMatrix(); + var1.pose().translate(var13, var14); + var1.pose().scale(var10, var10); + var1.pose().translate(-var13, -var14); + arq var15 = asj.all(oc.ROW); + asu var16 = var12 != 0 ? pi.gaugeBad() : (var11 != 0 ? var2.getColor() : var2.getForegroundColor()); + float var17 = var11 == 0 && var12 == 0 ? 0.5F + var9 * 0.45F : 0.85F + var9 * 0.15F; + var1.drawSurface(aso.CONTROL, this.buttonX[var7], this.buttonY, this.buttonWidth[var7], 17.0F, var15, var16.mulAlpha(var3 * var17)); + if (var11 == 0 && var12 == 0) { + atb.drawRoundedBorder( + var1.pose(), + this.buttonX[var7], + this.buttonY, + this.buttonWidth[var7], + 17.0F, + pk.borderRim(), + var15, + var2.getWhite().mulAlpha(var3 * (0.08F + var9 * 0.12F)) + ); + } else { + var1.drawRoundedRect( + this.buttonX[var7], + this.buttonY, + this.buttonWidth[var7], + 17.0F, + var15, + ary.of(asu.WHITE.mulAlpha(var3 * var9 * 0.14F), asu.WHITE.mulAlpha(0.0F), asu.WHITE.mulAlpha(var3 * var9 * 0.14F), asu.WHITE.mulAlpha(0.0F)) + ); + } + + String var18 = this.buttonLabels[var7]; + float var19 = var6.width(var18); + float var20 = var7 == 0 ? var6.height() : 0.0F; + float var21 = var20 > 0.0F ? 4.0F : 0.0F; + float var22 = var13 - (var19 + var20 + var21) * 0.5F + var20 + var21; + if (var20 > 0.0F) { + atb.drawRoundedTexture( + var1.pose(), + bz.id(this.playing ? "icons/media_pause.png" : "icons/media_play.png"), + var22 - var20 - var21, + var14 - var20 * 0.5F, + var20, + var20, + arq.ZERO, + var2.getWhite().mulAlpha(var3 * (0.75F + var9 * 0.25F)) + ); + } + + var1.drawText(var6, var18, var22, var14 - var6.height() * 0.5F + 0.5F, var2.getWhite().mulAlpha(var3 * (0.8F + var9 * 0.2F))); + var1.pose().popMatrix(); + } + } + + private void renderSettings(asq var1, mv var2, float var3, float var4, float var5) { + ti var6 = ti.INSTANCE; + float var7 = this.moduleEnabled.update(var6.isEnabled()); + float var8 = this.previewY; + float var9 = this.buttonY + 17.0F; + float var10 = var9 - var8; + var1.drawSurface(aso.CONTROL, this.contentX, var8, this.contentWidth, var10, asj.all(oc.CARD), var2.getForegroundColor().mulAlpha(var3 * 0.6F)); + float var11 = (this.contentWidth - 20.0F - 14.0F) / 2.0F; + float var12 = 0.0F; + + for (List var14 : this.settingColumns) { + var12 = Math.max(var12, this.columnHeight(var14)); + } + + float var32 = Math.max(0.0F, var12 + 24.0F - var10); + this.settingsScroll.setMax(var32); + this.settingsScroll.update(); + float var33 = (float)this.settingsScroll.getValue(); + int var15 = asu.getRGBWithAlpha(asu.mixRGB(var2.getGray().getRGB(), var2.getColor().getRGB(), var7, 1.0F), var3); + int var16 = asu.getRGBWithAlpha(asu.mixRGB(var2.getGrayLight().getRGB(), var2.getWhite().getRGB(), var7, 1.0F), var3); + int var17 = asu.getRGBWithAlpha(asu.mixRGB(var2.getWhiteGray().getRGB(), var2.getGrayLight().getRGB(), var7, 1.0F), var3); + ge var18 = gl.MEDIUM.getFont(6.0F); + int var19 = var5 >= var8 && var5 <= var9 && var4 >= this.contentX && var4 <= this.contentX + this.contentWidth + ? 1: 0; + float var20 = var19 != 0 ? var4 : -1000.0F; + float var21 = var19 != 0 ? var5 : -1000.0F; + var1.clipScroll(this.contentX, var8, this.contentX + this.contentWidth, var9, var33 > 0.0F ? ars.edgeFade() : 0.0F, var33 < var32 ? ars.edgeFade() : 0.0F); + + for (int var22 = 0; var22 < this.settingColumns.size(); var22++) { + float var23 = this.contentX + 10.0F + var22 * (var11 + 14.0F); + float var24 = var8 + 12.0F - var33; + + for (abx var26 : this.settingColumns.get(var22)) { + if (this.sectionVisible(var26)) { + var1.drawText(var18, var26.title(), var23, var24 + (11.0F - var18.height()) * 0.5F, var2.getWhite().mulAlpha(var3 * 0.8F)); + float var27 = var23 + var18.width(var26.title()) + 5.0F; + var1.drawRoundedRect(var27, var24 + 5.5F, var11 - (var27 - var23), 1.0F, asj.all(oc.HAIRLINE), var2.getWhite().mulAlpha(var3 * 0.12F)); + var24 += 15.0F; + + for (ro var29 : var26.settings()) { + aay var30 = this.settingLookup.get(var29); + if (var30 != null && this.settingVisible(var29)) { + float var31 = var30.getHeight(); + if (var24 + var31 >= var8 && var24 <= var9) { + var30.render(var1, var20, var21, var23, var24, var11, var3, var7, var15, var16, var17, var2); + } + + var24 += var31 + 4.0F; + } + } + + String var36 = var26.note().get(); + if (var36 != null) { + ge var37 = gl.MEDIUM.getFont(5.5F); + var24 += this.drawWrapped( + var1, + var37, + var36, + var23, + var24, + var11, + pi.gaugeWarn().mulAlpha(var3 * 0.8F), + (boolean)((((396196967 | -396196967) + (396196967 & -396196967)) + ) != 0)); + } + + var24 += 13.0F; + } + } + } + + var1.popClip(); + if (!var6.isEnabled()) { + ge var34 = gl.MEDIUM.getFont(6.0F); + var1.drawText( + var34, + "Enable the module to change these", + this.contentX + + ( + this.contentWidth + - var34.width( + "Enable the module to change these" + ) + ) + * 0.5F, + var9 - var34.height() - 10.0F, + var2.getGrayLight().mulAlpha(var3 * 0.6F) + ); + } + + this.settingsBar.measure(this.contentX + this.contentWidth - 3.5F - 2.0F, var8, 3.5F, var10, var32, var33); + this.settingsBar.render(var1, var2, var3, var4, var5, this.settingsScroll.isSettled()); + } + + private float columnHeight(List var1) { + float var2 = 0.0F; + Iterator var3 = null; + abx var4 = null; + Iterator var5 = null; + ro var6 = null; + aay var7 = null; + int var8 = -829835331; + + while (true) { + switch (var8) { + case -1352605995: + if (var3.hasNext()) { + var8 = -519943995; + } else { + var8 = 1956390438; + } + break; + case -1029832457: + var2 += gl.MEDIUM.getFont(5.5F).height() * 2.0F; + var8 = 725862460; + break; + case -829835331: + default: + var2 = 0.0F; + var3 = var1.iterator(); + var8 = -1352605995; + break; + case -519943995: + var4 = (abx)var3.next(); + if (!this.sectionVisible(var4)) { + var8 = -375617976; + } else { + var8 = 2013927870; + } + break; + case -375617976: + var8 = -1352605995; + break; + case -107059564: + var6 = (ro)var5.next(); + var7 = this.settingLookup.get(var6); + if (var7 != null) { + var8 = 1912532541; + } else { + var8 = 218777721; + } + break; + case 218777721: + var8 = 1533913781; + break; + case 725862460: + var2 += 13.0F; + var8 = -1352605995; + break; + case 740223123: + var2 += var7.getHeight() + 4.0F; + var8 = 218777721; + break; + case 1040713104: + if (var4.note().get() != null) { + var8 = -1029832457; + } else { + var8 = 725862460; + } + break; + case 1533913781: + if (var5.hasNext()) { + var8 = -107059564; + } else { + var8 = 1040713104; + } + break; + case 1912532541: + if (this.settingVisible(var6)) { + var8 = 740223123; + } else { + var8 = 218777721; + } + break; + case 1956390438: + return Math.max(0.0F, var2 - 13.0F); + case 2013927870: + var2 += 15.0F; + var5 = var4.settings().iterator(); + var8 = 1533913781; + } + } + } + + private boolean sectionVisible(abx var1) { + Iterator var2 = null; + ro var3 = null; + int var4 = -1760713767; + + while (true) { + switch (var4) { + case -2095286307: + if (var2.hasNext()) { + var4 = 408374451; + } else { + var4 = -574146292; + } + break; + case -1768974724: + if (this.settingVisible(var3)) { + var4 = -151542359; + } else { + var4 = 1935282313; + } + break; + case -1760713767: + default: + var2 = var1.settings().iterator(); + var4 = -2095286307; + break; + case -574146292: + return (boolean)(((0)) != 0); + case -151542359: + return (boolean)(((1)) != 0); + case 408374451: + var3 = (ro)var2.next(); + if (this.settingLookup.containsKey(var3)) { + var4 = -1768974724; + } else { + var4 = 1935282313; + } + break; + case 1935282313: + var4 = -2095286307; + } + } + } + + private void renderExportProgress(asq var1, mv var2, float var3) { + ajn var4 = null; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + arq var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = -798367805; + + while (true) { + switch (var12) { + case -1456186589: + return; + case -798367805: + default: + var4 = ajn.getInstance(); + if (!var4.isExporting()) { + var12 = -1456186589; + } else { + var12 = 664741043; + } + break; + case 664741043: + var5 = Mth.clamp(var4.exportProgress(), 0.0F, 1.0F); + var6 = this.panelX + 11.0F; + var7 = this.panelWidth - 22.0F; + var8 = this.panelY + this.panelHeight - 3.0F - 3.0F; + var9 = asj.pill(3.0F); + var1.drawRoundedRect(var6, var8, var7, 3.0F, var9, var2.getWhite().mulAlpha(var3 * 0.12F)); + var10 = Math.max(3.0F, var7 * var5); + var1.drawRoundedRect(var6, var8, var10, 3.0F, var9, var2.getColor().mulAlpha(var3)); + var11 = (float)( + System.currentTimeMillis() % ((177184476905099388L | -177184476905097988L) + (177184476905099388L & -177184476905097988L)) / 1400.0 + ); + var1.drawGlossSweep(var6, var8, var10, 3.0F, var9, var11, 0.22F, asu.WHITE.mulAlpha(var3 * 0.35F)); + return; + } + } + } + + private ct hoverSpring(ake var1) { + return this.rowHover.computeIfAbsent(var1.path(), var0 -> asa.spring()); + } + + private int indexOf(ake var1) { + int var2 = 0; + int var3 = -1014209776; + + while (true) { + switch (var3) { + case -1833128825: + return var2; + case -1302405158: + return -1; + case -1014209776: + default: + if (var1 == null) { + var3 = 1193323214; + } else { + var3 = 1911243374; + } + break; + case 78405874: + if (this.clips.get(var2).path().equals(var1.path())) { + var3 = -1833128825; + } else { + var3 = 1084148208; + } + break; + case 1084148208: + var2++; + var3 = 1325299147; + break; + case 1193323214: + return -1; + case 1325299147: + if (var2 < this.clips.size()) { + var3 = 78405874; + } else { + var3 = -1302405158; + } + break; + case 1911243374: + var2 = 0; + var3 = 1325299147; + } + } + } + + private void advancePlayback() { + long var1 = (-6223278320990106828L ^ 6223278320990106828L) + ((-6223278320990106828L & 6223278320990106828L) << 1); + long var3 = (-6610188428673345437L ^ 6610188428673345437L) + ((-6610188428673345437L & 6610188428673345437L) << 1); + long var5 = (-6463056217693150628L ^ 6463056217693150628L) + ((-6463056217693150628L & 6463056217693150628L) << 1); + long var8 = (154274608898753069L | -154274608898753069L) + (154274608898753069L & -154274608898753069L); + int var7 = 1841256697; + + while (true) { + switch (var7) { + case -1943415535: + var8 = (-975280029669753358L ^ 975280029669753358L) + ((-975280029669753358L & 975280029669753358L) << 1); + var7 = 2017961865; + break; + case -1906885197: + this.playheadMillis = this.playheadMillis + + Math.min(var3, (-2716973435819730096L ^ 2716973435819730346L) + ((-2716973435819730096L & 2716973435819730346L) << 1)); + var7 = 385763290; + break; + case -1471008490: + if (this.playing) { + var7 = 2070193347; + } else { + var7 = 1396122514; + } + break; + case -1078049195: + this.playheadMillis = this.preview.positionMillis(this.inFrame); + this.preview.seekAudio(this.playheadMillis); + var7 = 1396122514; + break; + case 30461270: + this.playheadMillis = Math.max( + (8317159709025742649L | -8317159709025742649L) + (8317159709025742649L & -8317159709025742649L), this.preview.audioPositionMillis() + ); + var7 = 385763290; + break; + case 385763290: + if (this.playheadMillis >= var5) { + var7 = -1078049195; + } else { + var7 = 1396122514; + } + break; + case 769951586: + return; + case 778722039: + var8 = (var1 - this.lastAdvanceNanos) / ((7198895319850216245L ^ -7198895319849216245L) + ((7198895319850216245L & -7198895319849216245L) << 1)); + var7 = 2017961865; + break; + case 1396122514: + this.preview.request(this.preview.indexAtMillis(this.playheadMillis)); + return; + case 1841256697: + default: + var1 = System.nanoTime(); + if (this.lastAdvanceNanos == (1437903855745261262L | -1437903855745261262L) + (1437903855745261262L & -1437903855745261262L)) { + var7 = -1943415535; + } else { + var7 = 778722039; + } + break; + case 2017961865: + var3 = var8; + this.lastAdvanceNanos = var1; + if (this.preview == null) { + var7 = 769951586; + } else { + var7 = -1471008490; + } + break; + case 2070193347: + var5 = this.preview.positionMillis(this.outFrame); + if (this.preview.hasAudio()) { + var7 = 30461270; + } else { + var7 = -1906885197; + } + } + } + } + + private void setPlaying(boolean var1) { + int var2 = -1391227712; + + while (true) { + switch (var2) { + case -1792744993: + return; + case -1391227712: + default: + if (this.playing == var1) { + var2 = -718502631; + } else { + var2 = 1209298577; + } + break; + case -718502631: + return; + case 458562397: + this.preview.pauseAudio(); + var2 = 1842155915; + break; + case 759987655: + if (this.playing) { + var2 = 1718814012; + } else { + var2 = 458562397; + } + break; + case 1209298577: + this.playing = var1; + if (this.preview == null) { + var2 = -1792744993; + } else { + var2 = 759987655; + } + break; + case 1718814012: + this.preview.playAudio(this.playheadMillis, ti.INSTANCE.previewGain()); + var2 = 1842155915; + break; + case 1842155915: + return; + } + } + } + + private void buildSettings() { + Iterator var1 = null; + ro var2 = null; + aay var3 = null; + int var4 = -1318153419; + + while (true) { + switch (var4) { + case -1893888564: + ti var5 = ti.INSTANCE; + this.settingColumns + .add( + List.of( + new abx( + "Capture", + List.of(var5.resolution, var5.framerate, var5.autoTune) + ), + new abx( + "Instant replay", + List.of(var5.instantReplay, var5.bufferSeconds, var5.memoryLimit, var5.storageLimit) + ) + ) + ); + this.settingColumns + .add( + List.of( + new abx( + "Audio", + List.of(var5.gameAudio, var5.gameAudioSource, var5.microphone, var5.microphoneSource), + aby::audioNote + ), + new abx( + "Output", + List.of(var5.quality, var5.exportFramerate, var5.autoExport, var5.openEditor) + ) + ) + ); + return; + case -1318153419: + default: + if (!this.settingWidgets.isEmpty()) { + var4 = -1152657129; + } else { + var4 = 921039961; + } + break; + case -1152657129: + return; + case -893943491: + this.settingModels.add(var2); + this.settingWidgets.add(var3); + this.settingLookup.put(var2, var3); + var4 = -17759062; + break; + case -17759062: + if (var1.hasNext()) { + var4 = 1829574551; + } else { + var4 = -1893888564; + } + break; + case 921039961: + var1 = ti.INSTANCE.getSettings().iterator(); + var4 = -17759062; + break; + case 1058057820: + var4 = -17759062; + break; + case 1829574551: + var2 = (ro)var1.next(); + var3 = widgetOf(var2); + if (var3 == null) { + var4 = 1058057820; + } else { + var4 = -893943491; + } + } + } + } + + private static aay widgetOf(ro var0) { + ru var1 = null; + int var2 = 971075884; + + while (true) { + switch (var2) { + case -1828332367: + if (var0 instanceof sg) { + var2 = 1253457402; + } else { + var2 = 1565810510; + } + break; + case -1808765792: + if (var0 instanceof rv) { + var2 = 1416454942; + } else { + var2 = 568710658; + } + break; + case -86191160: + sm var6 = (sm)var0; + return new abo(var6); + case 568710658: + return null; + case 971075884: + default: + if (var0 instanceof sc) { + var2 = 1490784640; + } else { + var2 = 1205221072; + } + break; + case 1205221072: + if (var0 instanceof sm) { + var2 = -86191160; + } else { + var2 = -1828332367; + } + break; + case 1253457402: + sg var5 = (sg)var0; + return new abl(var5); + case 1416454942: + rv var4 = (rv)var0; + return new abf(var4); + case 1490784640: + return null; + case 1565810510: + if (var0 instanceof ru) { + var2 = 2133773975; + } else { + var2 = -1808765792; + } + break; + case 2133773975: + var1 = (ru)var0; + return new abe(var1); + } + } + } + + private static String audioNote() { + ti var0 = null; + String var1 = null; + String var3 = null; + int var2 = -204622470; + + while (true) { + switch (var2) { + case -2114365048: + var1 = var0.gameAudioDevice(); + if (var1 == null) { + var2 = -82239791; + } else { + var2 = -410558585; + } + break; + case -1823062026: + return null; + case -667575195: + if (var0.microphone.isEnabled()) { + var2 = 1573643081; + } else { + var2 = 1703454759; + } + break; + case -410558585: + if (var1.equals(var0.microphoneDevice())) { + var2 = -667575195; + } else { + var2 = 1703454759; + } + break; + case -369758393: + return var3; + case -204622470: + default: + var0 = ti.INSTANCE; + if (!var0.gameAudio.isEnabled()) { + var2 = -1823062026; + } else { + var2 = -2114365048; + } + break; + case -82239791: + return "Needs a loopback input (BlackHole, VB-Cable, Stereo Mix)"; + case 1573643081: + var3 = "Same device as the microphone, game audio is skipped"; + var2 = -369758393; + break; + case 1703454759: + var3 = null; + var2 = -369758393; + } + } + } + + private boolean settingVisible(ro var1) { + ti var2 = null; + int var3 = -573117415; + + while (true) { + switch (var3) { + case -573117415: + default: + var2 = ti.INSTANCE; + if (var1 != var2.bufferSeconds) { + var3 = -471866906; + } else { + var3 = 227545124; + } + break; + case -471866906: + if (var1 == var2.memoryLimit) { + var3 = 227545124; + } else { + var3 = -128772173; + } + break; + case -128772173: + if (var1 == var2.gameAudioSource) { + var3 = 443870353; + } else { + var3 = 982830542; + } + break; + case 227545124: + return var2.instantReplay.isEnabled(); + case 263785344: + return (boolean)(((1)) != 0); + case 443870353: + return var2.gameAudio.isEnabled(); + case 982830542: + if (var1 == var2.microphoneSource) { + var3 = 1125034694; + } else { + var3 = 263785344; + } + break; + case 1125034694: + return var2.microphone.isEnabled(); + } + } + } + + private void reloadLibrary() { + Path var1 = null; + Iterator var2 = null; + ake var3 = null; + int var4 = 786114034; + + while (true) { + switch (var4) { + case -1483572952: + return; + case 13804559: + this.clips.add(var3); + var4 = 629233528; + break; + case 301543153: + if (var2.hasNext()) { + var4 = 1190427512; + } else { + var4 = -1483572952; + } + break; + case 524018463: + if (!var1.equals(var3.path())) { + var4 = 13804559; + } else { + var4 = 629233528; + } + break; + case 629233528: + var4 = 301543153; + break; + case 786114034: + default: + this.clips.clear(); + this.rowHover.clear(); + var1 = ajn.getInstance().activeClipPath(); + var2 = ajn.getInstance().library().list().iterator(); + var4 = 301543153; + break; + case 1190427512: + var3 = (ake)var2.next(); + if (var1 != null) { + var4 = 524018463; + } else { + var4 = 13804559; + } + } + } + } + + private ake match(ake var1) { + Iterator var2 = null; + ake var3 = null; + ake var5 = null; + int var4 = 1674870927; + + while (true) { + switch (var4) { + case -1900493245: + return var3; + case -1554639620: + return var5; + case -1472147449: + var3 = (ake)var2.next(); + if (var3.path().equals(var1.path())) { + var4 = -1900493245; + } else { + var4 = -1127327049; + } + break; + case -1403049288: + var5 = null; + var4 = -1554639620; + break; + case -1127327049: + var4 = -763442870; + break; + case -763442870: + if (var2.hasNext()) { + var4 = -1472147449; + } else { + var4 = 1832474408; + } + break; + case -400787283: + var5 = this.clips.getFirst(); + var4 = -1554639620; + break; + case 1674870927: + default: + var2 = this.clips.iterator(); + var4 = -763442870; + break; + case 1832474408: + if (this.clips.isEmpty()) { + var4 = -1403049288; + } else { + var4 = -400787283; + } + } + } + } + + private void select(ake var1) { + this.closePreview(); + this.selected = var1; + this.playing = (boolean)(((0)) != 0); + this.playheadMillis = (5452488371910278396L | -5452488371910278396L) + (5452488371910278396L & -5452488371910278396L); + this.deleteArmedAt = (9097699012466913508L ^ -9097699012466913508L) + ((9097699012466913508L & -9097699012466913508L) << 1); + this.previewFade.jumpTo(0.0F); + + try { + this.preview = new abz(var1); + } catch (IOException var3) { + id.error(Cif.MEDIA, "clip preview failed", var3); + this.preview = null; + this.selected = null; + return; + } + + this.inFrame = 0; + this.outFrame = Math.max( + 0, + this.preview.frameCount() - ((-1750493409 ^ 1750493410) + ((-1750493409 & 1750493410) << 1)) + ); + } + + private void closePreview() { + int var1 = 129365916; + + while (true) { + switch (var1) { + case -316181354: + this.preview.pauseAudio(); + this.preview.close(); + this.preview = null; + var1 = 55871935; + break; + case 55871935: + return; + case 129365916: + default: + if (this.preview != null) { + var1 = -316181354; + } else { + var1 = 55871935; + } + } + } + } + + private float timeToX(long var1) { + long var3 = (1527349390936182349L ^ -1527349390936182349L) + ((1527349390936182349L & -1527349390936182349L) << 1); + float var5 = 0.0F; + long var7 = (-2208737470549339986L ^ 2208737470549339986L) + ((-2208737470549339986L & 2208737470549339986L) << 1); + float var9 = 0.0F; + int var6 = 600180961; + + while (true) { + switch (var6) { + case -2037482928: + var7 = (-1308289843105498476L ^ 1308289843105498476L) + ((-1308289843105498476L & 1308289843105498476L) << 1); + var6 = 56521819; + break; + case -822309394: + var7 = this.preview.durationMillis(); + var6 = 56521819; + break; + case -328877742: + var9 = Mth.clamp((float)var1 / (float)var3, 0.0F, 1.0F); + var6 = -262060969; + break; + case -262060969: + var5 = var9; + return this.contentX + this.contentWidth * var5; + case 56521819: + var3 = var7; + if (var3 <= (-5433390650523272082L | 5433390650523272082L) + (-5433390650523272082L & 5433390650523272082L)) { + var6 = 1850025444; + } else { + var6 = -328877742; + } + break; + case 600180961: + default: + if (this.preview == null) { + var6 = -2037482928; + } else { + var6 = -822309394; + } + break; + case 1850025444: + var9 = 0.0F; + var6 = -262060969; + } + } + } + + private long xToTime(double var1) { + long var3 = (2023415665269290963L ^ -2023415665269290963L) + ((2023415665269290963L & -2023415665269290963L) << 1); + float var5 = 0.0F; + long var7 = (-8442504315782632444L ^ 8442504315782632444L) + ((-8442504315782632444L & 8442504315782632444L) << 1); + float var9 = 0.0F; + int var6 = 221370853; + + while (true) { + switch (var6) { + case -1159840907: + var5 = var9; + return (long)((float)var3 * var5); + case -553642053: + var7 = (4347498078757144745L | -4347498078757144745L) + (4347498078757144745L & -4347498078757144745L); + var6 = 736350051; + break; + case 221370853: + default: + if (this.preview == null) { + var6 = -553642053; + } else { + var6 = 586967024; + } + break; + case 450387420: + var9 = 0.0F; + var6 = -1159840907; + break; + case 586967024: + var7 = this.preview.durationMillis(); + var6 = 736350051; + break; + case 736350051: + var3 = var7; + if (this.contentWidth <= 0.0F) { + var6 = 450387420; + } else { + var6 = 989306556; + } + break; + case 989306556: + var9 = Mth.clamp((float)((var1 - this.contentX) / this.contentWidth), 0.0F, 1.0F); + var6 = -1159840907; + } + } + } + + private boolean pressScrollBar(double var1, double var3) { + int var6 = 0; + int var5 = -45354359; + + while (true) { + switch (var5) { + case -265954789: + var6 = 1; + var5 = 1057061971; + break; + case -45354359: + default: + if (!this.listBar.press(var1, var3)) { + var5 = 1944719915; + } else { + var5 = -265954789; + } + break; + case 962144268: + if (this.settingsBar.press(var1, var3)) { + var5 = -265954789; + } else { + var5 = 1473103804; + } + break; + case 1057061971: + return (boolean)((var6) != 0); + case 1473103804: + var6 = 0; + var5 = 1057061971; + break; + case 1944719915: + if (this.settingsOpen) { + var5 = 962144268; + } else { + var5 = 1473103804; + } + } + } + } + + private boolean deleteArmed() { + int var2 = 0; + int var1 = 1082892753; + + while (true) { + switch (var1) { + case -1794613797: + var2 = 1; + var1 = -703836056; + break; + case -954256562: + var2 = 0; + var1 = -703836056; + break; + case -708019158: + if (System.currentTimeMillis() - this.deleteArmedAt + < (2015424837659977883L ^ -2015424837659974883L) + ((2015424837659977883L & -2015424837659974883L) << 1)) { + var1 = -1794613797; + } else { + var1 = -954256562; + } + break; + case -703836056: + return (boolean)((var2) != 0); + case 1082892753: + default: + if (this.deleteArmedAt != (-4696760435143614750L | 4696760435143614750L) + (-4696760435143614750L & 4696760435143614750L)) { + var1 = -708019158; + } else { + var1 = -954256562; + } + } + } + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + if (this.frame.isInteractive() && var5.getButtonIndex() == 0) { + double var6 = this.frame.toLocalX(var1); + double var8 = this.frame.toLocalY(var3); + if (!this.pressScrollBar(var6, var8)) { + float var10 = this.panelX + this.panelWidth - 11.0F - 13.0F; + float var11 = this.panelY + 8.0F - 1.0F; + if (aqj.isHovered(var6, var8, var10, var11, 13.0, 13.0)) { + this.startClose(); + } else if (aqj.isHovered(var6, var8, this.settingsButtonX, var11, this.settingsButtonWidth, 13.0)) { + this.settingsOpen = (boolean)(((!this.settingsOpen + ? 1: (-1011445833 ^ 1011445833) + ((-1011445833 & 1011445833) << 1))) != 0); + this.playClick(); + } else if (this.settingsOpen) { + if (!this.clickedSettings(var6, var8, var5) && !this.clickedList(var6, var8)) { + if (!aqj.isHovered(var6, var8, this.panelX, this.panelY, this.panelWidth, this.panelHeight)) { + this.startClose(); + } + } + } else if (!this.clickedList(var6, var8) + && !this.clickedVolume(var6, var8) + && !this.clickedTimeline(var6, var8) + && !this.clickedButton(var6, var8) + && !this.clickedPreview(var6, var8)) { + if (!aqj.isHovered(var6, var8, this.panelX, this.panelY, this.panelWidth, this.panelHeight)) { + this.startClose(); + } + } + } + } + } + + private boolean clickedSettings(double var1, double var3, apf var5) { + int var6 = 0; + int var7 = 1222560600; + + while (true) { + switch (var7) { + case -1621294587: + var6 = 0; + var7 = 136942145; + break; + case 136942145: + if (var6 < this.settingWidgets.size()) { + var7 = 1370827382; + } else { + var7 = 1717384282; + } + break; + case 590112267: + var6++; + var7 = 136942145; + break; + case 1222560600: + default: + if (!aqj.isHovered(var1, var3, this.contentX, this.previewY, this.contentWidth, this.buttonY + 17.0F - this.previewY)) { + var7 = 1963189362; + } else { + var7 = -1621294587; + } + break; + case 1370827382: + if (this.settingVisible(this.settingModels.get(var6))) { + var7 = 1993011498; + } else { + var7 = 590112267; + } + break; + case 1717384282: + return (boolean)(((1)) != 0); + case 1963189362: + return (boolean)(((0)) != 0); + case 1993011498: + this.settingWidgets.get(var6).onMouseClicked(var1, var3, var5); + var7 = 590112267; + } + } + } + + private boolean clickedPreview(double var1, double var3) { + if (this.preview != null && aqj.isHovered(var1, var3, this.contentX, this.previewY, this.contentWidth, this.previewHeight)) { + this.setPlaying( + (boolean)(((!this.playing ? 1: (1021125296 | -1021125296) + (1021125296 & -1021125296)) + ) != 0)); + this.playClick(); + return (boolean)(((1)) != 0); + } else { + return (boolean)(((0)) != 0); + } + } + + private boolean clickedList(double var1, double var3) { + float var5 = 0.0F; + int var6 = 0; + float var7 = 0.0F; + ake var8 = null; + int var9 = -880481206; + + while (true) { + switch (var9) { + case -1108506977: + if (!this.selected.path().equals(var8.path())) { + var9 = 356316543; + } else { + var9 = 692905602; + } + break; + case -1105998624: + var8 = this.clips.get(var6); + if (this.selected != null) { + var9 = -1108506977; + } else { + var9 = 356316543; + } + break; + case -1097839560: + return (boolean)(((0)) != 0); + case -880481206: + default: + if (!aqj.isHovered(var1, var3, this.listX, this.listTop, 134.0, this.listBottom - this.listTop)) { + var9 = -1097839560; + } else { + var9 = 763906786; + } + break; + case -56071843: + var6++; + var9 = 414151528; + break; + case 356316543: + this.select(var8); + this.playClick(); + var9 = 692905602; + break; + case 414151528: + if (var6 < this.clips.size()) { + var9 = 1097206189; + } else { + var9 = 1993467459; + } + break; + case 692905602: + return (boolean)(((1)) != 0); + case 763906786: + var5 = (float)this.listScroll.getValue(); + var6 = 0; + var9 = 414151528; + break; + case 1097206189: + var7 = this.listTop + var6 * 33.0F - var5; + if (aqj.isHovered(var1, var3, this.listX, var7, 134.0, 30.0)) { + var9 = -1105998624; + } else { + var9 = -56071843; + } + break; + case 1993467459: + return (boolean)(((1)) != 0); + } + } + } + + private boolean clickedVolume(double var1, double var3) { + int var5 = -204855430; + + while (true) { + switch (var5) { + case -1146068527: + if (!aqj.isHovered(var1, var3, this.volumeX - 6.5F, this.volumeY - 6.0F, 65.0, 12.0)) { + var5 = 2044919468; + } else { + var5 = -754448731; + } + break; + case -754448731: + this.drag = abw.VOLUME; + this.updateVolume(var1); + return (boolean)(((1)) != 0); + case -204855430: + default: + if (this.preview != null) { + var5 = -1146068527; + } else { + var5 = 2044919468; + } + break; + case 2044919468: + return (boolean)(((0)) != 0); + } + } + } + + private boolean clickedTimeline(double var1, double var3) { + float var5 = 0.0F; + float var6 = 0.0F; + int var7 = -947131546; + + while (true) { + switch (var7) { + case -1955244403: + this.drag = abw.IN; + return (boolean)(((1)) != 0); + case -1424978718: + var5 = this.timeToX(this.preview.positionMillis(this.inFrame)); + var6 = this.timeToX(this.preview.positionMillis(this.outFrame)); + if (Math.abs(var1 - var5) <= 6.0) { + var7 = -1955244403; + } else { + var7 = 2129534599; + } + break; + case -947131546: + default: + if (this.preview != null) { + var7 = 784375246; + } else { + var7 = -117412942; + } + break; + case -712143954: + this.drag = abw.OUT; + return (boolean)(((1)) != 0); + case -117412942: + return (boolean)(((0)) != 0); + case 784375246: + if (!aqj.isHovered(var1, var3, this.contentX, this.timelineY - 4.0F, this.contentWidth, 40.0)) { + var7 = -117412942; + } else { + var7 = -1424978718; + } + break; + case 1517471405: + this.drag = abw.PLAYHEAD; + this.seek(this.xToTime(var1)); + return (boolean)(((1)) != 0); + case 2129534599: + if (Math.abs(var1 - var6) <= 6.0) { + var7 = -712143954; + } else { + var7 = 1517471405; + } + } + } + } + + private boolean clickedButton(double var1, double var3) { + int var5 = 0; + int var6 = 1601471449; + + while (true) { + switch (var6) { + case -1707976178: + if (!aqj.isHovered(var1, var3, this.buttonX[var5], this.buttonY, this.buttonWidth[var5], 17.0)) { + var6 = -474852462; + } else { + var6 = -1317314604; + } + break; + case -1317314604: + this.pressedButton = var5; + this.activate(var5); + return (boolean)(((1)) != 0); + case -816286294: + var5++; + var6 = 1807808267; + break; + case -797118942: + return (boolean)(((0)) != 0); + case -474852462: + var6 = -816286294; + break; + case 1601471449: + default: + var5 = 0; + var6 = 1807808267; + break; + case 1807808267: + if (var5 < (844311363 ^ -844311358) + ((844311363 & -844311358) << 1)) { + var6 = -1707976178; + } else { + var6 = -797118942; + } + } + } + } + + private void activate(int var1) { + this.playClick(); + switch (var1) { + case 0: + this.setPlaying( + (boolean)(((this.preview != null && !this.playing + ? 1: (-1412764562 | 1412764562) + (-1412764562 & 1412764562)) + ) != 0)); + break; + case 1: + this.exportSelection(); + break; + case 2: + this.exportSelectionAs(); + break; + case 3: + Util.getPlatform().openPath(ajn.getInstance().library().root()); + break; + case 4: + this.deleteSelection(); + } + } + + private void exportSelection() { + int var1 = 932175738; + + while (true) { + switch (var1) { + case -2029646629: + return; + case 932175738: + default: + if (this.selected != null) { + var1 = 1549874356; + } else { + var1 = -2029646629; + } + break; + case 1289630772: + ajn.getInstance().export(this.selected, this.inFrame, this.outFrame); + return; + case 1549874356: + if (this.preview == null) { + var1 = -2029646629; + } else { + var1 = 1289630772; + } + } + } + } + + private void exportSelectionAs() { + int var1 = -386082147; + + while (true) { + switch (var1) { + case -1944762643: + ajn.getInstance().exportAs(this.selected, this.inFrame, this.outFrame); + return; + case -836671257: + if (mc.getWindow().isFullscreen()) { + var1 = 1751302434; + } else { + var1 = -1944762643; + } + break; + case -386082147: + default: + if (this.selected != null) { + var1 = 321862076; + } else { + var1 = 937446432; + } + break; + case 321862076: + if (this.preview == null) { + var1 = 937446432; + } else { + var1 = -836671257; + } + break; + case 937446432: + return; + case 1751302434: + this.exportSelection(); + return; + } + } + } + + private void deleteSelection() { + ake var1 = null; + int var2 = -1337037119; + + while (true) { + switch (var2) { + case -1905805251: + return; + case -1822660849: + if (!this.deleteArmed()) { + var2 = -1405491388; + } else { + var2 = -1335650083; + } + break; + case -1405491388: + this.deleteArmedAt = System.currentTimeMillis(); + return; + case -1337037119: + default: + if (this.selected == null) { + var2 = -1905805251; + } else { + var2 = -1822660849; + } + break; + case -1335650083: + this.deleteArmedAt = (-1375722851285066442L | 1375722851285066442L) + (-1375722851285066442L & 1375722851285066442L); + var1 = this.selected; + this.closePreview(); + this.selected = null; + ajn.getInstance().library().delete(var1); + this.reloadLibrary(); + if (!this.clips.isEmpty()) { + var2 = -1105633668; + } else { + var2 = 1414705295; + } + break; + case -1105633668: + this.select(this.clips.getFirst()); + var2 = 1414705295; + break; + case 1414705295: + return; + } + } + } + + private void seek(long var1) { + int var3 = -399509392; + + while (true) { + switch (var3) { + case -399509392: + default: + this.playheadMillis = Math.max((2776884879476160854L ^ -2776884879476160854L) + ((2776884879476160854L & -2776884879476160854L) << 1), var1); + if (this.preview != null) { + var3 = 1233963752; + } else { + var3 = 518243460; + } + break; + case 518243460: + return; + case 1233963752: + this.playheadMillis = Math.min(this.playheadMillis, this.preview.durationMillis()); + this.preview.seekAudio(this.playheadMillis); + var3 = 518243460; + } + } + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + double var10 = this.frame.toLocalX(var1); + double var12 = this.frame.toLocalY(var3); + if (this.listBar.isDragging()) { + this.listScroll.jumpTo(-this.listBar.dragTo(var12)); + } else if (this.settingsBar.isDragging()) { + this.settingsScroll.jumpTo(-this.settingsBar.dragTo(var12)); + } else if (this.settingsOpen) { + for (int var16 = 0; var16 < this.settingWidgets.size(); var16++) { + if (this.settingVisible(this.settingModels.get(var16))) { + this.settingWidgets.get(var16).onMouseDragged(var10, var12, var5, var6, var8); + } + } + } else if (this.preview != null && this.drag != abw.NONE) { + if (this.drag == abw.VOLUME) { + this.updateVolume(var10); + } else { + long var14 = this.xToTime(var10); + switch (this.drag) { + case PLAYHEAD: + this.seek(var14); + break; + case IN: + this.inFrame = Math.min(this.preview.indexAtMillis(var14), this.outFrame); + this.seek(this.preview.positionMillis(this.inFrame)); + break; + case OUT: + this.outFrame = Math.max(this.preview.indexAtMillis(var14), this.inFrame); + } + } + } + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + int var10 = 0; + int var11 = 1795860161; + + while (true) { + switch (var11) { + case -1724707328: + if (this.settingVisible(this.settingModels.get(var10))) { + var11 = -561642307; + } else { + var11 = 1616237735; + } + break; + case -1351355291: + var10 = 0; + var11 = 51733183; + break; + case -1303505988: + return; + case -561642307: + this.settingWidgets.get(var10).onMouseReleased(var6, var8, var5); + var11 = 1616237735; + break; + case 51733183: + if (var10 < this.settingWidgets.size()) { + var11 = -1724707328; + } else { + var11 = -1303505988; + } + break; + case 1616237735: + var10++; + var11 = 51733183; + break; + case 1795860161: + default: + var6 = this.frame.toLocalX(var1); + var8 = this.frame.toLocalY(var3); + this.listBar.release(); + this.settingsBar.release(); + this.drag = abw.NONE; + this.pressedButton = -1; + if (this.settingsOpen) { + var11 = -1351355291; + } else { + var11 = -1303505988; + } + } + } + } + + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + double var9 = 0.0; + double var11 = 0.0; + int var13 = 0; + int var14 = 1425190522; + + while (true) { + switch (var14) { + case -2082914769: + if (this.settingVisible(this.settingModels.get(var13))) { + var14 = 1620932880; + } else { + var14 = 1712201858; + } + break; + case -2040809499: + var13 = 0; + var14 = 1127902983; + break; + case -809442346: + return (boolean)(((1)) != 0); + case 563937883: + this.listScroll.scroll(var7); + this.listBar.notifyScrolled(); + return (boolean)(((1)) != 0); + case 590995616: + this.settingsScroll.scroll(var7); + this.settingsBar.notifyScrolled(); + return (boolean)(((1)) != 0); + case 617870319: + if (aqj.isHovered(var9, var11, this.contentX, this.previewY, this.contentWidth, this.buttonY + 17.0F - this.previewY)) { + var14 = -2040809499; + } else { + var14 = 563937883; + } + break; + case 1127902983: + if (var13 < this.settingWidgets.size()) { + var14 = -2082914769; + } else { + var14 = 590995616; + } + break; + case 1425190522: + default: + var9 = this.frame.toLocalX(var1); + var11 = this.frame.toLocalY(var3); + if (this.settingsOpen) { + var14 = 617870319; + } else { + var14 = 563937883; + } + break; + case 1620932880: + if (this.settingWidgets.get(var13).mouseScrolled(var9, var11, var5, var7)) { + var14 = -809442346; + } else { + var14 = 1712201858; + } + break; + case 1712201858: + var13++; + var14 = 1127902983; + } + } + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + if (this.settingsOpen) { + if (var1 == (-1436597821 ^ 1436598077) + ((-1436597821 & 1436598077) << 1)) { + this.settingsOpen = (boolean)(((0)) != 0); + this.playClose(); + return (boolean)(((1)) != 0); + } + + for (int var5 = 0; var5 < this.settingWidgets.size(); var5++) { + if (this.settingVisible(this.settingModels.get(var5)) && this.settingWidgets.get(var5).keyPressed(var1, var2, var3)) { + return (boolean)(((1)) != 0); + } + } + + return (boolean)(((1)) != 0); + } else { + if (var1 == (-1250188291 ^ 1250188547) + ((-1250188291 & 1250188547) << 1)) { + this.startClose(); + return (boolean)(((1)) != 0); + } + + if (this.preview == null) { + return super.keyPressed(var1, var2, var3); + } + + int var4 = (var3 & (1684838642 ^ -1684838641) + ((1684838642 & -1684838641) << 1)) != 0 + ? 1: 0; + switch (var1) { + case 32: + this.setPlaying( + (boolean)(((!this.playing + ? 1: (137016875 ^ -137016875) + ((137016875 & -137016875) << 1)) + ) != 0)); + break; + case 73: + this.inFrame = Math.min(this.preview.indexAtMillis(this.playheadMillis), this.outFrame); + break; + case 79: + this.outFrame = Math.max(this.preview.indexAtMillis(this.playheadMillis), this.inFrame); + break; + case 257: + this.exportSelection(); + break; + case 261: + this.deleteSelection(); + break; + case 262: + this.step(var4 != 0 ? (-1905330131821607256L | 1905330131821608256L) + (-1905330131821607256L & 1905330131821608256L) : this.frameStep()); + break; + case 263: + this.step(var4 != 0 ? (1054007293491139587L | -1054007293491140587L) + (1054007293491139587L & -1054007293491140587L) : -this.frameStep()); + break; + default: + return super.keyPressed(var1, var2, var3); + } + + return (boolean)(((1)) != 0); + } + } + + @Override + public boolean charTyped(char var1, int var2) { + int var3 = 0; + int var4 = -702653992; + + while (true) { + switch (var4) { + case -1903533210: + return (boolean)(((1)) != 0); + case -1892021290: + if (this.settingWidgets.get(var3).charTyped(var1, var2)) { + var4 = -1903533210; + } else { + var4 = 1360500467; + } + break; + case -702653992: + default: + if (this.settingsOpen) { + var4 = 1560395953; + } else { + var4 = 1978524165; + } + break; + case -228958774: + if (var3 < this.settingWidgets.size()) { + var4 = 1345841866; + } else { + var4 = 1690877203; + } + break; + case 1345841866: + if (this.settingVisible(this.settingModels.get(var3))) { + var4 = -1892021290; + } else { + var4 = 1360500467; + } + break; + case 1360500467: + var3++; + var4 = -228958774; + break; + case 1560395953: + var3 = 0; + var4 = -228958774; + break; + case 1690877203: + return (boolean)(((1)) != 0); + case 1978524165: + return super.charTyped(var1, var2); + } + } + } + + private long frameStep() { + long var2 = (-6226998842509137321L ^ 6226998842509137321L) + ((-6226998842509137321L & 6226998842509137321L) << 1); + int var1 = -9508908; + + while (true) { + switch (var1) { + case -9508908: + default: + if (this.preview == null) { + var1 = 1509085044; + } else { + var1 = 97651146; + } + break; + case 97651146: + var2 = Math.max( + (1592988874946560535L | -1592988874946560534L) + (1592988874946560535L & -1592988874946560534L), + ((7514231958166376919L | -7514231958166375919L) + (7514231958166376919L & -7514231958166375919L)) + / Math.max(1, this.preview.framesPerSecond()) + ); + var1 = 1051851745; + break; + case 1051851745: + return var2; + case 1509085044: + var2 = (-6349205564101318857L ^ 6349205564101319857L) + ((-6349205564101318857L & 6349205564101319857L) << 1); + var1 = 1051851745; + } + } + } + + private void step(long var1) { + this.setPlaying((boolean)((((1210307952 | -1210307952) + (1210307952 & -1210307952))) != 0)); + this.seek(this.playheadMillis + var1); + } + + private void startClose() { + int var1 = -162099362; + + while (true) { + switch (var1) { + case -1696187732: + return; + case -569072298: + this.frame.beginClose(); + this.setPlaying((boolean)((((-839848419 | 839848419) + (-839848419 & 839848419))) != 0)); + this.playClose(); + var1 = -1696187732; + break; + case -162099362: + default: + if (!this.frame.isClosing()) { + var1 = -569072298; + } else { + var1 = -1696187732; + } + } + } + } + + private void playClick() { + int var1 = 1274164996; + + while (true) { + switch (var1) { + case -1051206496: + bz.getInstance().getSoundManager().playClick(); + var1 = -282366218; + break; + case -282366218: + return; + case 1274164996: + default: + if (bz.getInstance().getSoundManager() != null) { + var1 = -1051206496; + } else { + var1 = -282366218; + } + } + } + } + + private void playClose() { + int var1 = 271233261; + + while (true) { + switch (var1) { + case -1782664445: + bz.getInstance().getSoundManager().playClose(); + var1 = 90105711; + break; + case 90105711: + return; + case 271233261: + default: + if (bz.getInstance().getSoundManager() != null) { + var1 = -1782664445; + } else { + var1 = 90105711; + } + } + } + } + + static { + float[] var10000 = new float[5]; + var10000[0] = 1.0F; + var10000[1] = 1.25F; + var10000[2] = 1.25F; + var10000[3] = 1.0F; + var10000[4] = 1.0F; + BUTTON_WEIGHTS = var10000; + } +} diff --git a/src/main/java/defpackage/abz.java b/src/main/java/defpackage/abz.java new file mode 100644 index 0000000..fe989f4 --- /dev/null +++ b/src/main/java/defpackage/abz.java @@ -0,0 +1,615 @@ +package defpackage; + +import com.mojang.blaze3d.platform.NativeImage; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.ArrayDeque; +import javax.sound.sampled.LineUnavailableException; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.resources.Identifier; + +public final class abz implements AutoCloseable { + private static final String FRAME_TEXTURE = "clip_preview_frame"; + private static final String STRIP_TEXTURE = "clip_preview_strip"; + private static final String WORKER_NAME = "EvoClipPreview"; + private static final String DECODE_FAILURE = "clip preview decode failed"; + private static final String AUDIO_FAILURE = "clip preview audio unavailable"; + private static final int THUMBNAIL_COUNT = 8; + private static final int THUMBNAIL_STEP = 8; + private static final int POOL_LIMIT = 3; + private static final int NO_FRAME = -1; + private static final long IDLE_WAIT_MILLIS = 200L; + private final ake clip; + private final ajy reader; + private final Identifier frameTextureId = bz.id("clip_preview_frame"); + private final Identifier stripTextureId = bz.id( + "clip_preview_strip" + ); + private final ArrayDeque pixelPool = new ArrayDeque<>(); + private final Object signal = new Object(); + private DynamicTexture frameTexture; + private DynamicTexture stripTexture; + private ajt audio; + private Thread worker; + private volatile boolean running = (boolean)(((1)) != 0); + private volatile int requestedFrame = -1; + private volatile int visibleFrame = -1; + private volatile int thumbnailWidth; + private volatile int thumbnailHeight; + private volatile boolean stripReady; + + public abz(ake var1) throws IOException { + this.clip = var1; + this.reader = new ajy(var1.path()); + this.audio = openAudio(var1); + this.worker = new Thread(this::run, "EvoClipPreview"); + this.worker.setDaemon((boolean)((((-738221160 | 738221161) + (-738221160 & 738221161))) != 0)); + this.worker.start(); + } + + public ake clip() { + return this.clip; + } + + public int frameCount() { + return this.reader.frameCount(); + } + + public int width() { + return this.reader.width(); + } + + public int height() { + return this.reader.height(); + } + + public long durationMillis() { + return this.reader.durationMillis(); + } + + public long positionMillis(int var1) { + return this.reader.positionMillis(this.clamp(var1)); + } + + public int indexAtMillis(long var1) { + return this.reader.indexAtMillis(var1); + } + + public int framesPerSecond() { + return this.reader.framesPerSecond(); + } + + public Identifier frameTexture() { + Identifier var2 = null; + int var1 = -910574568; + + while (true) { + switch (var1) { + case -1377343745: + var2 = this.frameTextureId; + var1 = -829424758; + break; + case -910574568: + default: + if (this.frameTexture != null) { + var1 = -1377343745; + } else { + var1 = 1710656964; + } + break; + case -829424758: + return var2; + case 1710656964: + var2 = null; + var1 = -829424758; + } + } + } + + public Identifier stripTexture() { + Identifier var2 = null; + int var1 = 248210047; + + while (true) { + switch (var1) { + case -1027702362: + return var2; + case -347868513: + var2 = null; + var1 = -1027702362; + break; + case 248210047: + default: + if (this.stripReady) { + var1 = 690730020; + } else { + var1 = -347868513; + } + break; + case 690730020: + var2 = this.stripTextureId; + var1 = -1027702362; + } + } + } + + public int thumbnailCount() { + return 8; + } + + public int thumbnailWidth() { + return this.thumbnailWidth; + } + + public int thumbnailHeight() { + return this.thumbnailHeight; + } + + private static ajt openAudio(ake var0) { + if (!var0.hasAudio()) { + return null; + } + + try { + return new ajt(var0.path()); + } catch (IOException | LineUnavailableException | RuntimeException var2) { + id.error(Cif.MEDIA, "clip preview audio unavailable", var2); + return null; + } + } + + public boolean hasAudio() { + int var2 = 0; + int var1 = 1220514719; + + while (true) { + switch (var1) { + case -330532158: + return (boolean)((var2) != 0); + case 354944882: + var2 = 1; + var1 = -330532158; + break; + case 396290572: + var2 = 0; + var1 = -330532158; + break; + case 1220514719: + default: + if (this.audio != null) { + var1 = 354944882; + } else { + var1 = 396290572; + } + } + } + } + + public void playAudio(long var1, float var3) { + int var4 = 1683551916; + + while (true) { + switch (var4) { + case -1070107415: + return; + case -212645252: + this.audio.setGain(var3); + this.audio.play(var1); + var4 = -1070107415; + break; + case 1683551916: + default: + if (this.audio != null) { + var4 = -212645252; + } else { + var4 = -1070107415; + } + } + } + } + + public void setAudioGain(float var1) { + int var2 = 593889853; + + while (true) { + switch (var2) { + case -989946814: + this.audio.setGain(var1); + var2 = -404395543; + break; + case -404395543: + return; + case 593889853: + default: + if (this.audio != null) { + var2 = -989946814; + } else { + var2 = -404395543; + } + } + } + } + + public void pauseAudio() { + int var1 = 651563349; + + while (true) { + switch (var1) { + case -2044725925: + this.audio.pause(); + var1 = 1061872630; + break; + case 651563349: + default: + if (this.audio != null) { + var1 = -2044725925; + } else { + var1 = 1061872630; + } + break; + case 1061872630: + return; + } + } + } + + public void seekAudio(long var1) { + int var3 = 1835654170; + + while (true) { + switch (var3) { + case 1135150092: + return; + case 1209907952: + this.audio.seek(var1); + var3 = 1135150092; + break; + case 1835654170: + default: + if (this.audio != null) { + var3 = 1209907952; + } else { + var3 = 1135150092; + } + } + } + } + + public long audioPositionMillis() { + long var2 = (-296362345374935181L | 296362345374935181L) + (-296362345374935181L & 296362345374935181L); + int var1 = -1851981883; + + while (true) { + switch (var1) { + case -1851981883: + default: + if (this.audio == null) { + var1 = -918219708; + } else { + var1 = -1274703868; + } + break; + case -1274703868: + var2 = this.audio.positionMillis(); + var1 = -214863300; + break; + case -918219708: + var2 = (-6968149284532725425L | 6968149284532725424L) + (-6968149284532725425L & 6968149284532725424L); + var1 = -214863300; + break; + case -214863300: + return var2; + } + } + } + + public void request(int var1) { + int var2 = this.clamp(var1); + if (var2 != this.requestedFrame) { + this.requestedFrame = var2; + synchronized (this.signal) { + this.signal.notifyAll(); + } + } + } + + @Override + public void close() { + if (this.audio != null) { + this.audio.close(); + this.audio = null; + } + + this.running = (boolean)(((0)) != 0); + synchronized (this.signal) { + this.signal.notifyAll(); + } + + Thread var5 = this.worker; + this.worker = null; + if (var5 != null) { + var5.interrupt(); + } + + aqg.mc.execute(this::releaseTextures); + + try { + this.reader.close(); + } catch (IOException var3) { + id.error( + Cif.MEDIA, "clip preview decode failed", var3 + ); + } + } + + private void releaseTextures() { + int var1 = 1259672441; + + while (true) { + switch (var1) { + case -1962017295: + this.stripReady = (boolean)(((0)) != 0); + return; + case -1782287662: + if (this.stripTexture != null) { + var1 = 1112578511; + } else { + var1 = -1962017295; + } + break; + case -1550025384: + aqg.mc.getTextureManager().release(this.frameTextureId); + this.frameTexture = null; + var1 = -1782287662; + break; + case 1112578511: + aqg.mc.getTextureManager().release(this.stripTextureId); + this.stripTexture = null; + var1 = -1962017295; + break; + case 1259672441: + default: + if (this.frameTexture != null) { + var1 = -1550025384; + } else { + var1 = -1782287662; + } + } + } + } + + private void run() { + try { + this.buildStrip(); + + while (this.running) { + int var1 = this.requestedFrame; + if (var1 != (516107336 | -516107337) + (516107336 & -516107337) && var1 != this.visibleFrame) { + this.decodeFrame(var1); + } else { + synchronized (this.signal) { + this.signal.wait((-72774308379676919L | 72774308379677119L) + (-72774308379676919L & 72774308379677119L)); + } + } + } + } catch (InterruptedException var5) { + Thread.currentThread().interrupt(); + } catch (Throwable var6) { + id.error(Cif.MEDIA, "clip preview decode failed", var6); + } + } + + private void decodeFrame(int var1) throws IOException { + int[] var2 = akc.decodeArgb(this.reader.frame(var1), this.borrow(this.reader.width() * this.reader.height())); + this.visibleFrame = var1; + aqg.mc.execute(() -> this.uploadFrame(var2, var1)); + } + + private void uploadFrame(int[] var1, int var2) { + int var3 = 0; + int var4 = 0; + NativeImage var5 = null; + int var6 = -843765302; + + while (true) { + switch (var6) { + case -1943476367: + var3 = this.reader.width(); + var4 = this.reader.height(); + if (this.frameTexture == null) { + var6 = -969491767; + } else { + var6 = 192268758; + } + break; + case -1226821252: + writePixels(var5, var1, var3, var4); + this.frameTexture.upload(); + var6 = -963507228; + break; + case -969491767: + var5 = new NativeImage(var3, var4, (boolean)((((-2121165221 ^ 2121165221) + ((-2121165221 & 2121165221) << 1))) != 0)); + this.frameTexture = new aux(() -> "clip_preview_frame", var5); + aqg.mc.getTextureManager().register(this.frameTextureId, this.frameTexture); + var6 = 192268758; + break; + case -963507228: + this.recycle(var1); + this.visibleFrame = var2; + return; + case -843765302: + default: + if (!this.running) { + var6 = 1142645063; + } else { + var6 = -1943476367; + } + break; + case 192268758: + var5 = this.frameTexture.getPixels(); + if (var5 != null) { + var6 = -1226821252; + } else { + var6 = -963507228; + } + break; + case 1142645063: + this.recycle(var1); + return; + } + } + } + + private void buildStrip() { + int var1 = this.reader.frameCount(); + if (var1 > 0) { + BufferedImage[] var2 = new BufferedImage[8]; + int var3 = 0; + int var4 = 0; + + for (int var5 = 0; var5 < 8; var5++) { + int var6 = Math.min( + var1 - (1), var5 * var1 / ((1191048235 ^ -1191048227) + ((1191048235 & -1191048227) << 1)) + ); + + try { + BufferedImage var7 = akc.decodeSubsampled(this.reader.frame(var6), (-1263609007 | 1263609015) + (-1263609007 & 1263609015)); + var2[var5] = var7; + var3 = var7.getWidth(); + var4 = var7.getHeight(); + } catch (IOException var11) { + id.error( + Cif.MEDIA, + "clip preview decode failed", + var11 + ); + return; + } + } + + if (var3 > 0 && var4 > 0) { + int var12 = var3 * (8); + int[] var13 = new int[var12 * var4]; + int[] var14 = null; + + for (int var8 = 0; var8 < 8; var8++) { + BufferedImage var9 = var2[var8]; + if (var9 != null) { + var14 = akc.toArgb(var9, var14); + + for (int var10 = 0; var10 < var4; var10++) { + System.arraycopy(var14, var10 * var3, var13, var10 * var12 + var8 * var3, var3); + } + } + } + + this.thumbnailWidth = var3; + this.thumbnailHeight = var4; + int var15 = var12; + int var16 = var4; + aqg.mc.execute(() -> this.uploadStrip(var13, var15, var16)); + } + } + } + + private void uploadStrip(int[] var1, int var2, int var3) { + NativeImage var4 = null; + int var5 = 1091694584; + + while (true) { + switch (var5) { + case -1816116213: + var4 = new NativeImage(var2, var3, (boolean)((((817512273 ^ -817512273) + ((817512273 & -817512273) << 1))) != 0)); + writePixels(var4, var1, var2, var3); + this.stripTexture = new aux(() -> "clip_preview_strip", var4); + aqg.mc.getTextureManager().register(this.stripTextureId, this.stripTexture); + this.stripTexture.upload(); + this.stripReady = (boolean)(((1)) != 0); + return; + case 638720903: + return; + case 1091694584: + } + + if (!this.running) { + var5 = 638720903; + } else { + var5 = -1816116213; + } + } + } + + private static void writePixels(NativeImage var0, int[] var1, int var2, int var3) { + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = -1836517176; + + while (true) { + switch (var7) { + case -1836517176: + default: + var4 = 0; + var7 = -1440380442; + break; + case -1440380442: + if (var4 < var3) { + var7 = 48514154; + } else { + var7 = 284608434; + } + break; + case 48514154: + var5 = var4 * var2; + var6 = 0; + var7 = 952058636; + break; + case 284608434: + return; + case 691648889: + var0.setPixel(var6, var4, var1[var5 + var6]); + var6++; + var7 = 952058636; + break; + case 719229651: + var4++; + var7 = -1440380442; + break; + case 952058636: + if (var6 < var2) { + var7 = 691648889; + } else { + var7 = 719229651; + } + } + } + } + + private int[] borrow(int var1) { + synchronized (this.pixelPool) { + int[] var3 = this.pixelPool.pollLast(); + + while (var3 != null && var3.length != var1) { + var3 = this.pixelPool.pollLast(); + } + + return var3 != null ? var3 : new int[var1]; + } + } + + private void recycle(int[] var1) { + synchronized (this.pixelPool) { + if (this.pixelPool.size() < (-117323796 | 117323799) + (-117323796 & 117323799)) { + this.pixelPool.addLast(var1); + } + } + } + + private int clamp(int var1) { + return Math.clamp( + var1, + 0, + Math.max(0, this.reader.frameCount() - ((-51082424 | 51082425) + (-51082424 & 51082425))) + ); + } +} diff --git a/src/main/java/defpackage/ac.java b/src/main/java/defpackage/ac.java new file mode 100644 index 0000000..5af44fd --- /dev/null +++ b/src/main/java/defpackage/ac.java @@ -0,0 +1,75 @@ +package defpackage; + +import java.lang.reflect.Method; +import net.fabricmc.loader.api.FabricLoader; + +public class ac { + private static Boolean irisAvailable = null; + private static Method isShaderPackInUseMethod = null; + private static Object irisApiInstance = null; + private static boolean initializationAttempted = (boolean)(((0)) != 0); + + public static boolean isShaderPackInUse() { + if (!isIrisAvailable()) { + return (boolean)(((0)) != 0); + } + + if (initializationAttempted && irisApiInstance == null) { + return (boolean)(((0)) != 0); + } + + try { + if (irisApiInstance == null) { + initializationAttempted = (boolean)(((1)) != 0); + Class var0 = Class.forName("net.irisshaders.iris.api.v0.IrisApi"); + Method var1 = var0.getMethod("getInstance"); + irisApiInstance = var1.invoke(null); + if (irisApiInstance == null) { + System.err + .println( + "Iris API instance is null - Iris may not be fully initialized yet" + ); + return (boolean)(((0)) != 0); + } + + isShaderPackInUseMethod = irisApiInstance.getClass() + .getMethod("isShaderPackInUse"); + } + + return (Boolean)isShaderPackInUseMethod.invoke(irisApiInstance); + } catch (Exception var2) { + System.err.println("Failed to check Iris shader status: " + var2.getMessage()); + irisApiInstance = null; + isShaderPackInUseMethod = null; + return (boolean)(((0)) != 0); + } + } + + public static boolean isIrisAvailable() { + int var0 = -935059347; + + while (true) { + switch (var0) { + case -2126871945: + irisAvailable = FabricLoader.getInstance().isModLoaded("iris"); + var0 = -1910036368; + break; + case -1910036368: + return irisAvailable; + case -935059347: + default: + if (irisAvailable == null) { + var0 = -2126871945; + } else { + var0 = -1910036368; + } + } + } + } + + public static void reset() { + irisApiInstance = null; + isShaderPackInUseMethod = null; + initializationAttempted = (boolean)(((0)) != 0); + } +} diff --git a/src/main/java/defpackage/aca.java b/src/main/java/defpackage/aca.java new file mode 100644 index 0000000..14a1f12 --- /dev/null +++ b/src/main/java/defpackage/aca.java @@ -0,0 +1,477 @@ +package defpackage; + +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.core.BlockPos; +import net.minecraft.util.Mth; + +public final class aca extends api { + private static final float PANEL_WIDTH = 150.0F; + private static final float PANEL_HEIGHT = 92.0F; + private static final float PANEL_PAD = 8.0F; + private static final float HEADER_HEIGHT = 20.0F; + private static final float CELL_WIDTH = 30.0F; + private static final float CELL_HEIGHT = 15.0F; + private static final float CELL_GAP = 4.0F; + private static final float ACTION_HEIGHT = 14.0F; + private static final float STEP_BUTTON = 15.0F; + private static final float SCREEN_MARGIN = 12.0F; + private static final float TITLE_FONT = 7.0F; + private static final float SUB_FONT = 5.5F; + private static final float CELL_FONT = 6.0F; + private static final float ICON_FONT = 5.0F; + private static final float PLATE_ALPHA = 0.75F; + private static final float HOVER_MIX = 0.4F; + private static final long OPEN_GUARD_MS = 220L; + private static final int COLUMNS = 3; + private static final int CELL_COUNT = 6; + private static final String GLYPH_UP = "R"; + private static final String GLYPH_DOWN = "Q"; + private static final String GLYPH_RIGHT = "A"; + private static final String LABEL_LOWER = "Y-"; + private static final String LABEL_RAISE = "Y+"; + private static final String LABEL_MINUS = "-"; + private static final String LABEL_PLUS = "+"; + private static final String LABEL_HERE = "Here"; + private static final String LABEL_ROTATE = "Rotate"; + private static final String LABEL_MIRROR = "Mirror"; + private static final String STEP_FORMAT = "Step %d"; + private static final String ORIGIN_FORMAT = "%d %d %d"; + private static final String NO_SCHEMATIC = "No blueprint"; + private static final int[] RIGHT_STEPS; + private static final int[] UP_STEPS; + private static final int[] FORWARD_STEPS; + private static float panelX = Float.NaN; + private static float panelY = Float.NaN; + private final asi[] cells = new asi[6]; + private final asi stepDown = new asi(); + private final asi stepUp = new asi(); + private final asi rotate = new asi(); + private final asi mirror = new asi(); + private final asi here = new asi(); + private final asi header = new asi(); + private final xm frame = new xm(); + private final long openedAt = System.currentTimeMillis(); + private float openAlpha; + private boolean dragging; + private float dragOffsetX; + private float dragOffsetY; + + private static arq PANEL_RADIUS() { + return asj.all(oc.PANEL); + } + + private static arq CELL_RADIUS() { + return asj.all(oc.CONTROL); + } + + public aca() { + for (int var1 = 0; var1 < 6; var1++) { + this.cells[var1] = new asi(); + } + } + + protected void init() { + this.frame.open(); + this.frame.measure(this.width, this.height, 150.0F, 92.0F); + } + + @Override + public boolean showsHudOverlays() { + return (boolean)(((1)) != 0); + } + + @Override + public void tick() { + int var1 = 1067432877; + + while (true) { + switch (var1) { + case -1216058671: + mc.gui.setScreen(null); + var1 = 387040670; + break; + case 387040670: + return; + case 1067432877: + default: + if (this.frame.isClosed()) { + var1 = -1216058671; + } else { + var1 = 387040670; + } + } + } + } + + public void extractBackground(GuiGraphicsExtractor var1, int var2, int var3, float var4) { + } + + @Override + public void render(asq var1, float var2, float var3) { + mv var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + this.frame.measure(this.width, this.height, 150.0F, 92.0F); + this.openAlpha = this.frame.advance(); + if (Float.isNaN(panelX)) { + panelX = this.frame.viewRight() - 150.0F - 12.0F; + panelY = this.frame.centerY(92.0F); + } + + this.clampPanel(); + this.frame.push(var1, panelX + 75.0F, panelY + 46.0F); + var2 = (float)this.frame.toLocalX(var2); + var3 = (float)this.frame.toLocalY(var3); + pi.surface(var1, panelX, panelY, 150.0F, 92.0F, PANEL_RADIUS(), asu.WHITE.mulAlpha(this.openAlpha)); + this.header.set(panelX, panelY, 150.0F, 20.0F); + akx var5 = ala.INSTANCE.getData(); + alf var6 = ala.INSTANCE.getPlacement(); + ge var7 = gl.MEDIUM.getFont(7.0F); + ge var8 = gl.REGULAR.getFont(5.5F); + String var9 = var5 == null + ? "No blueprint" + : var5.getName(); + var1.drawScrollingText( + var7, + var9, + panelX + 8.0F, + panelY + 5.0F, + 134.0F, + var4.getWhite().mulAlpha(this.openAlpha), + (boolean)((((1315794256 | -1315794255) + (1315794256 & -1315794255)) + ) != 0)); + if (var6 != null) { + BlockPos var10 = var6.getOrigin(); + String var10000 = "%d %d %d"; + Object[] var10001 = new Object[3]; + var10001[0] = var10.getX(); + var10001[1] = var10.getY(); + var10001[2] = var10.getZ(); + String var11 = var10000.formatted(var10001); + var1.drawText(var8, var11, panelX + 150.0F - 8.0F - var8.width(var11), panelY + 6.5F, var4.getGrayLight().mulAlpha(this.openAlpha)); + } + + float var24 = 98.0F; + float var25 = panelX + (150.0F - var24) / 2.0F; + float var12 = panelY + 20.0F; + ge var13 = gl.ICONS.getFont(5.0F); + ge var14 = gl.MEDIUM.getFont(6.0F); + + for (int var15 = 0; var15 < 6; var15++) { + float var16 = var25 + var15 % ((-1923780150 | 1923780153) + (-1923780150 & 1923780153)) * 34.0F; + float var17 = var12 + var15 / ((727914020 ^ -727914017) + ((727914020 & -727914017) << 1)) * 19.0F; + this.cells[var15].set(var16, var17, 30.0F, 15.0F); + boolean var18 = aqj.isHovered(var2, var3, var16, var17, 30.0, 15.0); + this.plate(var1, var4, var16, var17, 30.0F, 15.0F, var18); + float var19 = var16 + 15.0F; + float var20 = var17 + 7.5F; + asu var21 = var18 ? var4.getWhite() : var4.getWhiteGray(); + switch (var15) { + case 0: + this.mirrored(var1, var13, "A", var19, var20, var21); + break; + case 1: + this.centered(var1, var13, "R", var19, var20, var21); + break; + case 2: + this.centered(var1, var13, "A", var19, var20, var21); + break; + case 3: + this.centered(var1, var14, "Y-", var19, var20, var21); + break; + case 4: + this.centered(var1, var13, "Q", var19, var20, var21); + break; + default: + this.centered(var1, var14, "Y+", var19, var20, var21); + } + } + + float var26 = var12 + 30.0F + 8.0F; + this.stepDown.set(panelX + 8.0F, var26, 15.0F, 14.0F); + this.stepUp.set(panelX + 150.0F - 8.0F - 15.0F, var26, 15.0F, 14.0F); + boolean var27 = aqj.isHovered(var2, var3, this.stepDown.x(), this.stepDown.y(), 15.0, 14.0); + boolean var28 = aqj.isHovered(var2, var3, this.stepUp.x(), this.stepUp.y(), 15.0, 14.0); + this.plate(var1, var4, this.stepDown.x(), var26, 15.0F, 14.0F, var27); + this.plate(var1, var4, this.stepUp.x(), var26, 15.0F, 14.0F, var28); + this.centered(var1, var14, "-", this.stepDown.x() + 7.5F, var26 + 7.0F, var27 ? var4.getWhite() : var4.getWhiteGray()); + this.centered(var1, var14, "+", this.stepUp.x() + 7.5F, var26 + 7.0F, var28 ? var4.getWhite() : var4.getWhiteGray()); + String var32 = "Step %d"; + Object[] var33 = new Object[1]; + var33[0] = su.INSTANCE.getNudgeStep(); + String var29 = var32.formatted(var33); + this.centered(var1, var14, var29, panelX + 75.0F, var26 + 7.0F, var4.getWhite()); + float var30 = var26 + 14.0F + 4.0F; + float var31 = 42.0F; + this.rotate.set(panelX + 8.0F, var30, var31, 14.0F); + this.mirror.set(this.rotate.x() + var31 + 4.0F, var30, var31, 14.0F); + this.here.set(this.mirror.x() + var31 + 4.0F, var30, var31, 14.0F); + this.action(var1, var4, var14, this.rotate, "Rotate", var2, var3); + this.action(var1, var4, var14, this.mirror, "Mirror", var2, var3); + this.action(var1, var4, var14, this.here, "Here", var2, var3); + this.frame.pop(var1); + } + + private void clampPanel() { + panelX = Mth.clamp(panelX, this.frame.viewLeft(), Math.max(this.frame.viewLeft(), this.frame.viewRight() - 150.0F)); + panelY = Mth.clamp(panelY, this.frame.viewTop(), Math.max(this.frame.viewTop(), this.frame.viewBottom() - 92.0F)); + } + + private void action(asq var1, mv var2, ge var3, asi var4, String var5, float var6, float var7) { + boolean var8 = aqj.isHovered(var6, var7, var4.x(), var4.y(), var4.width(), var4.height()); + this.plate(var1, var2, var4.x(), var4.y(), var4.width(), var4.height(), var8); + this.centered(var1, var3, var5, var4.x() + var4.width() / 2.0F, var4.y() + var4.height() / 2.0F, var8 ? var2.getWhite() : var2.getWhiteGray()); + } + + private void plate(asq var1, mv var2, float var3, float var4, float var5, float var6, boolean var7) { + asu var8 = null; + asu var10 = null; + int var9 = -568666946; + + while (true) { + switch (var9) { + case -1901973478: + var10 = var2.getForegroundColor().mix(var2.getColor(), 0.4F); + var9 = 218880119; + break; + case -568666946: + default: + if (var7) { + var9 = -1901973478; + } else { + var9 = 558816247; + } + break; + case 218880119: + var8 = var10; + var1.drawSurface(aso.CONTROL, var3, var4, var5, var6, CELL_RADIUS(), var8.getRGBWithAlpha(0.75F * this.openAlpha)); + return; + case 558816247: + var10 = var2.getForegroundColor(); + var9 = 218880119; + } + } + } + + private void centered(asq var1, ge var2, String var3, float var4, float var5, asu var6) { + var1.drawText(var2, var3, var4 - var2.width(var3) / 2.0F, var5 - var2.height() / 2.0F, var6.mulAlpha(this.openAlpha)); + } + + private void mirrored(asq var1, ge var2, String var3, float var4, float var5, asu var6) { + var1.pushMatrix(); + var1.pose().translate(var4, var5); + var1.pose().scale(-1.0F, 1.0F); + var1.pose().translate(-var4, -var5); + this.centered(var1, var2, var3, var4, var5, var6); + var1.popMatrix(); + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + int var10 = 0; + int var11 = 1478952543; + + while (true) { + switch (var11) { + case -2083848685: + if (this.stepUp.contains(var6, var8)) { + var11 = 2007637767; + } else { + var11 = -216178597; + } + break; + case -1464782664: + su.INSTANCE.cycleMirror(); + return; + case -1332002043: + if (this.header.contains(var6, var8)) { + var11 = -916786039; + } else { + var11 = 479509468; + } + break; + case -1037352046: + if (this.here.contains(var6, var8)) { + var11 = 1998331113; + } else { + var11 = -1332002043; + } + break; + case -924035837: + if (!this.frame.isInteractive()) { + var11 = -827687694; + } else { + var11 = 70380140; + } + break; + case -916786039: + this.dragging = (boolean)(((1)) != 0); + this.dragOffsetX = (float)var6 - panelX; + this.dragOffsetY = (float)var8 - panelY; + var11 = 479509468; + break; + case -827687694: + return; + case -216178597: + if (this.rotate.contains(var6, var8)) { + var11 = 545933701; + } else { + var11 = 762056786; + } + break; + case -207303944: + if (this.stepDown.contains(var6, var8)) { + var11 = 1810819556; + } else { + var11 = -2083848685; + } + break; + case 70380140: + var6 = this.frame.toLocalX(var1); + var8 = this.frame.toLocalY(var3); + var10 = 0; + var11 = 605840719; + break; + case 479509468: + return; + case 545933701: + su.INSTANCE.cycleRotation(); + return; + case 605840719: + if (var10 < (-905538025 ^ 905538031) + ((-905538025 & 905538031) << 1)) { + var11 = 2065913193; + } else { + var11 = -207303944; + } + break; + case 762056786: + if (this.mirror.contains(var6, var8)) { + var11 = -1464782664; + } else { + var11 = -1037352046; + } + break; + case 1003636282: + su.INSTANCE.nudge(RIGHT_STEPS[var10], UP_STEPS[var10], FORWARD_STEPS[var10]); + return; + case 1191899727: + var10++; + var11 = 605840719; + break; + case 1478952543: + default: + if (var5 == apf.LEFT) { + var11 = -924035837; + } else { + var11 = -827687694; + } + break; + case 1810819556: + su.INSTANCE.adjustNudgeStep((1896938973 | -1896938974) + (1896938973 & -1896938974)); + return; + case 1998331113: + ala.INSTANCE.placeAtPlayer(); + return; + case 2007637767: + su.INSTANCE.adjustNudgeStep((-1660827485 ^ 1660827486) + ((-1660827485 & 1660827486) << 1)); + return; + case 2065913193: + if (this.cells[var10].contains(var6, var8)) { + var11 = 1003636282; + } else { + var11 = 1191899727; + } + } + } + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + int var10 = 683519878; + + while (true) { + switch (var10) { + case -132874492: + panelX = (float)this.frame.toLocalX(var1) - this.dragOffsetX; + panelY = (float)this.frame.toLocalY(var3) - this.dragOffsetY; + this.clampPanel(); + var10 = 1633311882; + break; + case 683519878: + default: + if (this.dragging) { + var10 = -132874492; + } else { + var10 = 1633311882; + } + break; + case 1633311882: + return; + } + } + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + this.dragging = (boolean)(((0)) != 0); + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = -1644318767; + + while (true) { + switch (var4) { + case -1644318767: + default: + if (var1 == su.INSTANCE.getPadKeyCode()) { + var4 = 112081503; + } else { + var4 = 1059027003; + } + break; + case 112081503: + if (System.currentTimeMillis() - this.openedAt > (-5226781313997311398L | 5226781313997311618L) + (-5226781313997311398L & 5226781313997311618L) + ) + { + var4 = 1342478860; + } else { + var4 = 1059027003; + } + break; + case 1059027003: + return super.keyPressed(var1, var2, var3); + case 1342478860: + this.frame.beginClose(); + return (boolean)(((1)) != 0); + } + } + } + + static { + int[] var10000 = new int[6]; + var10000[0] = -1; + var10000[1] = 0; + var10000[2] = 1; + var10000[3] = 0; + var10000[4] = 0; + var10000[5] = 0; + RIGHT_STEPS = var10000; + var10000 = new int[6]; + var10000[0] = 0; + var10000[1] = 0; + var10000[2] = 0; + var10000[3] = -1; + var10000[4] = 0; + var10000[5] = 1; + UP_STEPS = var10000; + var10000 = new int[6]; + var10000[0] = 0; + var10000[1] = 1; + var10000[2] = 0; + var10000[3] = 0; + var10000[4] = -1; + var10000[5] = 0; + FORWARD_STEPS = var10000; + } +} diff --git a/src/main/java/defpackage/acb.java b/src/main/java/defpackage/acb.java new file mode 100644 index 0000000..3ad77cc --- /dev/null +++ b/src/main/java/defpackage/acb.java @@ -0,0 +1,200 @@ +package defpackage; + +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.model.geom.builders.UVPair; + +public final class acb extends api { + private acb() { + } + + public static void show() { + int var0 = -31553163; + + while (true) { + switch (var0) { + case -1726637194: + return; + case -31553163: + default: + if (mc.gui.screen() instanceof acb) { + var0 = -1726637194; + } else { + var0 = 1555793516; + } + break; + case 1555793516: + mc.gui.setScreen(new acb()); + return; + } + } + } + + public static void dismiss() { + int var0 = -1507209028; + + while (true) { + switch (var0) { + case -1963341599: + mc.gui.setScreen(null); + var0 = 1025763485; + break; + case -1507209028: + default: + if (mc.gui.screen() instanceof acb) { + var0 = -1963341599; + } else { + var0 = 1025763485; + } + break; + case 1025763485: + return; + } + } + } + + public static boolean isActive() { + return mc.gui.screen() instanceof acb; + } + + @Override + public void render(asq var1, float var2, float var3) { + } + + public void extractBackground(GuiGraphicsExtractor var1, int var2, int var3, float var4) { + } + + @Override + public boolean showsHudOverlays() { + return (boolean)(((1)) != 0); + } + + public boolean shouldCloseOnEsc() { + return (boolean)(((0)) != 0); + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var5 = 0; + int var4 = 1063885287; + + while (true) { + switch (var4) { + case -276618669: + var5 = 0; + var4 = 798493979; + break; + case 746868337: + var5 = 1; + var4 = 798493979; + break; + case 798493979: + return (boolean)((var5) != 0); + case 1063885287: + default: + if (!ri.getInstance().keyPressed(var1, var3)) { + var4 = 1159484982; + } else { + var4 = 746868337; + } + break; + case 1159484982: + if (super.keyPressed(var1, var2, var3)) { + var4 = 746868337; + } else { + var4 = -276618669; + } + } + } + } + + @Override + public boolean charTyped(char var1, int var2) { + int var4 = 0; + int var3 = 1409906519; + + while (true) { + switch (var3) { + case -61407844: + return (boolean)((var4) != 0); + case 872669437: + var4 = 0; + var3 = -61407844; + break; + case 1409906519: + default: + if (!ri.getInstance().charTyped(var1)) { + var3 = 1588362576; + } else { + var3 = 1973065059; + } + break; + case 1588362576: + if (super.charTyped(var1, var2)) { + var3 = 1973065059; + } else { + var3 = 872669437; + } + break; + case 1973065059: + var4 = 1; + var3 = -61407844; + } + } + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + UVPair var6 = arz.getMouse(vm.hudScale()); + ri.getInstance().mouseClicked(var6.u(), var6.v(), var5.getButtonIndex()); + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + UVPair var10 = arz.getMouse(vm.hudScale()); + ri.getInstance().mouseDragged(var10.v()); + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + ri.getInstance().mouseReleased(); + } + + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + int var10 = 0; + int var9 = 1161537046; + + while (true) { + switch (var9) { + case -1809062456: + return (boolean)((var10) != 0); + case -1653029236: + var10 = 1; + var9 = -1809062456; + break; + case 434867418: + var10 = 0; + var9 = -1809062456; + break; + case 559553704: + if (super.mouseScrolled(var1, var3, var5, var7)) { + var9 = -1653029236; + } else { + var9 = 434867418; + } + break; + case 1161537046: + default: + if (!ri.getInstance().mouseScrolled(var7)) { + var9 = 559553704; + } else { + var9 = -1653029236; + } + } + } + } + + public void removed() { + ri.getInstance().closeQuietly(); + super.removed(); + } +} diff --git a/src/main/java/defpackage/acc.java b/src/main/java/defpackage/acc.java new file mode 100644 index 0000000..acc6c9e --- /dev/null +++ b/src/main/java/defpackage/acc.java @@ -0,0 +1,429 @@ +package defpackage; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.state.gui.GuiRenderState; +import net.minecraft.util.ARGB; +import net.minecraft.util.Mth; +import net.minecraft.util.Util; + +public final class acc { + public static final long UNSET = -1L; + private static final long LOOP_MILLIS = 300000L; + private static final float ENTER_MILLIS = 500.0F; + private static final float LOGO_INTRO_MILLIS = 700.0F; + private static final float LOGO_INTRO_SCALE = 0.88F; + private static final float BAR_FILL_END = 300.0F; + private static final float BAR_FADE_START = 300.0F; + private static final float BAR_FADE_END = 550.0F; + private static final float TRAVEL_START = 150.0F; + private static final float TRAVEL_END = 1050.0F; + private static final float MENU_RELEASE = 650.0F; + private static final float BACKDROP_FADE_START = 350.0F; + private static final float BACKDROP_FADE_END = 1150.0F; + private static final float LOGO_FADE_START = 1000.0F; + private static final float LOGO_FADE_END = 1400.0F; + private static final float EXIT_MILLIS = 1500.0F; + private static final float PROGRESS_SMOOTHING = 0.95F; + private static final float LOGO_SIZE_RATIO = 0.2F; + private static final float LOGO_CENTER_X_RATIO = 0.5F; + private static final float LOGO_CENTER_Y_RATIO = 0.46F; + private static final float DEPARTURE_SIZE_RATIO = 0.5F; + private static final float HALF = 0.5F; + private static final int CHANNEL_MAX = 255; + private static final int CHANNEL_NONE = 0; + private static final float UV_MIN = 0.0F; + private static final float UV_MAX = 1.0F; + private static boolean holdingMenu; + private final long createdAt = Util.getMillis(); + private float progress; + + public static boolean holdsMenu() { + return holdingMenu; + } + + public static boolean available() { + return acf.prepare(); + } + + public boolean extract(GuiGraphicsExtractor var1, Minecraft var2, float var3, boolean var4, long var5, long var7, int var9, int var10, float var11) { + long var12 = (358658986772952586L ^ -358658986772952586L) + ((358658986772952586L & -358658986772952586L) << 1); + float var14 = 0.0F; + int var15 = 0; + float var16 = 0.0F; + Screen var17 = null; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + int var21 = 0; + int var22 = 0; + GuiRenderState var23 = null; + float var24 = 0.0F; + int var25 = 0; + float var27 = 0.0F; + int var28 = 0; + float var29 = 0.0F; + int var30 = 0; + int var26 = 1539983489; + + while (true) { + switch (var26) { + case -2068258112: + var14 = var27; + if (var7 != (-4963032308256333092L | 4963032308256333091L) + (-4963032308256333092L & 4963032308256333091L)) { + var26 = 368141265; + } else { + var26 = -1047473516; + } + break; + case -1800114093: + var30 = 0; + var26 = -76948941; + break; + case -1775201183: + return (boolean)(((0)) != 0); + case -1460342871: + var24 = (float)(System.currentTimeMillis() % ((-4825973827921032013L | 4825973827921332013L) + (-4825973827921032013L & 4825973827921332013L))) + / 300000.0F; + var25 = ARGB.color( + channel(var20), + channel(var19), + 0, + (119156331 ^ -119156331) + ((119156331 & -119156331) << 1) + ); + var23.addGuiElement(ace.of(acf.BACKDROP, acf.palette(), 0.0F, 0.0F, var21, var22, var24, var18, var24, var18, var25)); + var26 = -1003348942; + break; + case -1047473516: + var28 = 0; + var26 = -948208763; + break; + case -1003348942: + this.extractLogo(var23, var17, var21, var22, var12, var14, (boolean)((var15) != 0), var16); + if (var15 != 0) { + var26 = 1027075124; + } else { + var26 = -1775201183; + } + break; + case -948208763: + var15 = var28; + if (var15 != 0) { + var26 = 1886268698; + } else { + var26 = 475643022; + } + break; + case -625536585: + this.progress = Mth.clamp(this.progress * 0.95F + var3 * 0.050000012F, 0.0F, 1.0F); + var26 = -381104740; + break; + case -381104740: + var18 = Mth.lerp(smooth(0.0F, 300.0F, var16), this.progress, 1.0F); + var19 = 1.0F - smooth(300.0F, 550.0F, var16); + var20 = var14 * (1.0F - smooth(350.0F, 1150.0F, var16)); + var21 = var1.guiWidth(); + var22 = var1.guiHeight(); + var23 = var2.gameRenderer.gameRenderState().guiRenderState; + if (var20 > 0.0F) { + var26 = -1460342871; + } else { + var26 = -1003348942; + } + break; + case -342227625: + if (var15 == 0) { + var26 = -625536585; + } else { + var26 = -381104740; + } + break; + case -83407248: + var16 = var29; + if (var15 != 0) { + var26 = 379558896; + } else { + var26 = 426121147; + } + break; + case -76948941: + holdingMenu = (boolean)((var30) != 0); + var17 = var2.gui.screen(); + if (var17 != null) { + var26 = 1622872363; + } else { + var26 = -342227625; + } + break; + case 368141265: + var28 = 1; + var26 = -948208763; + break; + case 379558896: + if (var16 < 650.0F) { + var26 = 426121147; + } else { + var26 = -1800114093; + } + break; + case 426121147: + var30 = 1; + var26 = -76948941; + break; + case 475643022: + var29 = 0.0F; + var26 = -83407248; + break; + case 520190723: + if (var5 != (4928389275174005731L ^ -4928389275174005732L) + ((4928389275174005731L & -4928389275174005732L) << 1)) { + var26 = 1931853476; + } else { + var26 = 2146622970; + } + break; + case 1027075124: + if (var16 >= 1500.0F) { + var26 = 1202311651; + } else { + var26 = -1775201183; + } + break; + case 1202311651: + holdingMenu = (boolean)(((0)) != 0); + return (boolean)(((1)) != 0); + case 1454739505: + var17.extractRenderStateWithTooltipAndSubtitles(var1, var9, var10, var11); + var2.gui.hud.extractDeferredSubtitles(); + var1.nextStratum(); + var26 = -342227625; + break; + case 1539983489: + default: + var12 = Util.getMillis(); + if (var4) { + var26 = 520190723; + } else { + var26 = 2146622970; + } + break; + case 1622872363: + if (var15 == 0) { + var26 = 2027615404; + } else { + var26 = 1454739505; + } + break; + case 1886268698: + var29 = (float)(var12 - var7); + var26 = -83407248; + break; + case 1931853476: + var27 = clamp01((float)(var12 - var5) / 500.0F); + var26 = -2068258112; + break; + case 2027615404: + if (var14 < 1.0F) { + var26 = 1454739505; + } else { + var26 = -342227625; + } + break; + case 2146622970: + var27 = 1.0F; + var26 = -2068258112; + } + } + } + + private void extractLogo(GuiRenderState var1, Screen var2, int var3, int var4, long var5, float var7, boolean var8, float var9) { + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + aco var19 = null; + int var20 = 0; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + int var25 = 0; + float var26 = 0.0F; + float var27 = 0.0F; + float var28 = 0.0F; + int var24 = -1510143282; + + while (true) { + switch (var24) { + case -1588944805: + var18 = var17 * 0.5F; + var1.addGuiElement( + ace.of( + RenderPipelines.GUI_TEXTURED, + acf.logo(), + var15 - var18, + var16 - var18, + var15 + var18, + var16 + var18, + 0.0F, + 0.0F, + 1.0F, + 1.0F, + ARGB.white(var14) + ) + ); + return; + case -1521403066: + var21 = var26; + if (var20 != 0) { + var24 = 2085259734; + } else { + var24 = 916695262; + } + break; + case -1510143282: + default: + var10 = easeOutCubic(clamp01((float)(var5 - this.createdAt) / 700.0F)); + var11 = Math.min(var3, var4) * 0.2F * Mth.lerp(var10, 0.88F, 1.0F); + var12 = var3 * 0.5F; + var13 = var4 * 0.46F; + var14 = var10 * var7; + var15 = var12; + var16 = var13; + var17 = var11; + if (var8) { + var24 = 1320494583; + } else { + var24 = -1205563469; + } + break; + case -1443397071: + var23 = var28; + var15 = Mth.lerp(var18, var12, var21); + var16 = Mth.lerp(var18, var13, var23); + var17 = Mth.lerp(var18, var11, var22); + var14 *= 1.0F - smooth(1000.0F, 1400.0F, var9); + var24 = -1205563469; + break; + case -1205563469: + if (var14 <= 0.0F) { + var24 = 1653999899; + } else { + var24 = -1588944805; + } + break; + case -654224019: + var25 = 1; + var24 = 1724501003; + break; + case -433184683: + var26 = var19.brandLogoCenterX(); + var24 = -1521403066; + break; + case -288958994: + var28 = var19.brandLogoCenterY(); + var24 = -1443397071; + break; + case -237676474: + var28 = -var22; + var24 = -1443397071; + break; + case 18897828: + if (var19.matches(var2)) { + var24 = -654224019; + } else { + var24 = 1285191762; + } + break; + case 497693645: + var22 = var27; + if (var20 != 0) { + var24 = -288958994; + } else { + var24 = -237676474; + } + break; + case 742725817: + var26 = var12; + var24 = -1521403066; + break; + case 916695262: + var27 = var11 * 0.5F; + var24 = 497693645; + break; + case 1285191762: + var25 = 0; + var24 = 1724501003; + break; + case 1320494583: + var18 = easeInOutCubic(clamp01((var9 - 150.0F) / 900.0F)); + var19 = aco.INSTANCE; + if (var2 != null) { + var24 = 18897828; + } else { + var24 = 1285191762; + } + break; + case 1653999899: + return; + case 1724501003: + var20 = var25; + if (var20 != 0) { + var24 = -433184683; + } else { + var24 = 742725817; + } + break; + case 2085259734: + var27 = var19.brandLogoSize(); + var24 = 497693645; + } + } + } + + private static int channel(float var0) { + return Mth.clamp(Math.round(var0 * 255.0F), 0, (885701272 | -885701017) + (885701272 & -885701017)); + } + + private static float smooth(float var0, float var1, float var2) { + float var3 = clamp01((var2 - var0) / (var1 - var0)); + return var3 * var3 * (3.0F - 2.0F * var3); + } + + private static float clamp01(float var0) { + return Mth.clamp(var0, 0.0F, 1.0F); + } + + private static float easeOutCubic(float var0) { + float var1 = 1.0F - var0; + return 1.0F - var1 * var1 * var1; + } + + private static float easeInOutCubic(float var0) { + float var1 = 0.0F; + int var2 = -1541420002; + + while (true) { + switch (var2) { + case -2135668529: + return 4.0F * var0 * var0 * var0; + case -1541420002: + default: + if (var0 < 0.5F) { + var2 = -2135668529; + } else { + var2 = 1366022595; + } + break; + case 1366022595: + var1 = -2.0F * var0 + 2.0F; + return 1.0F - var1 * var1 * var1 * 0.5F; + } + } + } +} diff --git a/src/main/java/defpackage/acd.java b/src/main/java/defpackage/acd.java new file mode 100644 index 0000000..d12a1a2 --- /dev/null +++ b/src/main/java/defpackage/acd.java @@ -0,0 +1,88 @@ +package defpackage; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import net.minecraft.client.Minecraft; + +public final class acd { + static final int STOPS = 3; + private static final String FILE_NAME = "splash_palette.txt"; + private static final String SEPARATOR = " "; + private static final int HEX_RADIX = 16; + private static final int RGB_MASK = 16777215; + private static final int[] BRAND; + private static final String READ_FAILURE = "Splash palette {} is unreadable"; + private static final String WRITE_FAILURE = "Splash palette could not be saved"; + + private acd() { + } + + static int[] load() { + Path var0 = file(); + if (!Files.isRegularFile(var0)) { + return (int[])BRAND.clone(); + } + + try { + String[] var1 = Files.readString(var0, StandardCharsets.UTF_8) + .trim() + .split(" "); + if (var1.length != (-1947113902 ^ 1947113905) + ((-1947113902 & 1947113905) << 1)) { + return (int[])BRAND.clone(); + } + + int[] var2 = new int[3]; + + for (int var3 = 0; var3 < 3; var3++) { + var2[var3] = Integer.parseInt(var1[var3], (-497997612 ^ 497997628) + ((-497997612 & 497997628) << 1)) + & (829546450 ^ -812769235) + ((829546450 & -812769235) << 1); + } + + return var2; + } catch (IOException | NumberFormatException var4) { + id.warn( + Cif.RENDER, + "Splash palette {} is unreadable", + var0, + var4 + ); + return (int[])BRAND.clone(); + } + } + + public static void remember(ng var0) { + if (var0 != null) { + String var1 = hex(var0.start().getRGB()) + " " + hex(var0.middle().getRGB()) + " " + hex(var0.end().getRGB()); + + try { + Path var2 = file(); + Files.createDirectories(var2.getParent()); + Files.writeString(var2, var1, StandardCharsets.UTF_8); + } catch (IOException var3) { + id.warn(Cif.RENDER, "Splash palette could not be saved", var3); + } + } + } + + private static String hex(int var0) { + return Integer.toHexString(var0 & (-1705172991 | 1721950206) + (-1705172991 & 1721950206)); + } + + private static Path file() { + return Minecraft.getInstance() + .gameDirectory + .toPath() + .resolve("Evolution") + .resolve("splash_palette.txt"); + } + + static { + int[] var10000 = new int[3]; + var10000[0] = 8150271; + var10000[1] = 9266175; + var10000[2] = 10382335; + BRAND = var10000; + } +} diff --git a/src/main/java/defpackage/ace.java b/src/main/java/defpackage/ace.java new file mode 100644 index 0000000..25ee6a8 --- /dev/null +++ b/src/main/java/defpackage/ace.java @@ -0,0 +1,52 @@ +package defpackage; + +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.gui.navigation.ScreenRectangle; +import net.minecraft.client.gui.render.TextureSetup; +import net.minecraft.client.renderer.state.gui.GuiElementRenderState; +import net.minecraft.util.Mth; +import org.joml.Matrix3x2f; +import org.joml.Matrix3x2fc; + +record ace( + RenderPipeline pipeline, + TextureSetup textureSetup, + float x0, + float y0, + float x1, + float y1, + float u0, + float v0, + float u1, + float v1, + int color, + ScreenRectangle bounds +) implements GuiElementRenderState { + private static final Matrix3x2fc IDENTITY = new Matrix3x2f(); + + static ace of( + RenderPipeline var0, TextureSetup var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9, int var10 + ) { + int var11 = Mth.floor(var2); + int var12 = Mth.floor(var3); + ScreenRectangle var13 = new ScreenRectangle( + var11, + var12, + Math.max(1, Mth.ceil(var4) - var11), + Math.max(1, Mth.ceil(var5) - var12) + ); + return new ace(var0, var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var13); + } + + public void buildVertices(VertexConsumer var1) { + var1.addVertexWith2DPose(IDENTITY, this.x0, this.y0).setUv(this.u0, this.v0).setColor(this.color); + var1.addVertexWith2DPose(IDENTITY, this.x0, this.y1).setUv(this.u0, this.v1).setColor(this.color); + var1.addVertexWith2DPose(IDENTITY, this.x1, this.y1).setUv(this.u1, this.v1).setColor(this.color); + var1.addVertexWith2DPose(IDENTITY, this.x1, this.y0).setUv(this.u1, this.v0).setColor(this.color); + } + + public ScreenRectangle scissorArea() { + return null; + } +} diff --git a/src/main/java/defpackage/acf.java b/src/main/java/defpackage/acf.java new file mode 100644 index 0000000..dcca11f --- /dev/null +++ b/src/main/java/defpackage/acf.java @@ -0,0 +1,588 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.CompiledRenderPipeline; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet; +import com.mojang.blaze3d.platform.NativeImage; +import com.mojang.blaze3d.shaders.ShaderType; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.GpuDevice; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.textures.FilterMode; +import com.mojang.blaze3d.textures.GpuTexture; +import com.mojang.blaze3d.textures.GpuTextureView; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Optional; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.gui.render.TextureSetup; +import net.minecraft.client.renderer.BindGroupLayouts; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.resources.Identifier; + +final class acf { + private static final String MOD_ID = "evolutiondlc"; + private static final String NAMESPACE = "evolution"; + private static final String ASSETS_ROOT = "assets"; + private static final String INCLUDE_DIR = "shaders/include/"; + private static final String IMPORT_PREFIX = "#moj_import <"; + private static final String IMPORT_SUFFIX = ">"; + private static final String LINE_BREAK = "\n"; + private static final String LOGO_FILE = "assets/evolution/icons/logo.png"; + private static final String LOGO_LABEL = "evolution_boot_logo"; + private static final String PALETTE_LABEL = "evolution_boot_palette"; + private static final int PALETTE_HEIGHT = 1; + private static final int PALETTE_ROW = 0; + private static final int OPAQUE_ALPHA = -16777216; + private static final int ALPHA_SHIFT = 24; + private static final int SAMPLES = 4; + private static final int ROUNDING = 2; + private static final int SINGLE_LAYER = 1; + private static final int BASE_LEVEL = 0; + private static final int BASE_LAYER = 0; + private static final int ORIGIN = 0; + private static final Identifier SHADER = Identifier.fromNamespaceAndPath( + "evolution", + "core/boot_splash" + ); + private static final Identifier PIPELINE_LOCATION = Identifier.fromNamespaceAndPath( + "evolution", + "pipeline/boot_splash" + ); + private static final int RGB_WHITE = 16777215; + private static final int ALPHA_MASK = -16777216; + private static final String SHADER_MISSING = "Boot splash shader source {} is missing"; + private static final String SHADER_INVALID = "Boot splash pipeline failed to compile"; + private static final String SHADER_FAILURE = "Boot splash pipeline could not be prepared"; + private static final String LOGO_MISSING = "Boot splash logo {} is missing"; + private static final String LOGO_FAILURE = "Boot splash logo could not be loaded"; + private static final String PALETTE_FAILURE = "Boot splash palette could not be created"; + static final RenderPipeline BACKDROP = RenderPipeline.builder(new Snippet[0]) + .withLocation(PIPELINE_LOCATION) + .withBindGroupLayout(BindGroupLayouts.MATRICES_PROJECTION) + .withBindGroupLayout(BindGroupLayouts.SAMPLER0) + .withVertexShader(SHADER) + .withFragmentShader(SHADER) + .withColorTargetState(new ColorTargetState(BlendFunction.TRANSLUCENT)) + .withVertexBinding(0, DefaultVertexFormat.POSITION_TEX_COLOR) + .withPrimitiveTopology(PrimitiveTopology.QUADS) + .build(); + private static boolean attempted; + private static boolean usable; + private static GpuTexture logoTexture; + private static GpuTextureView logoView; + private static TextureSetup logoSetup; + private static DynamicTexture palette; + private static TextureSetup paletteSetup; + + private acf() { + } + + static boolean prepare() { + int var1 = 0; + int var0 = 196067092; + + while (true) { + switch (var0) { + case -1004631275: + return usable; + case -995272111: + if (loadLogo()) { + var0 = 1613758560; + } else { + var0 = -204727141; + } + break; + case -562064503: + attempted = (boolean)(((1)) != 0); + if (compileBackdrop()) { + var0 = -995272111; + } else { + var0 = -204727141; + } + break; + case -204727141: + var1 = 0; + var0 = 700498031; + break; + case 196067092: + default: + if (!attempted) { + var0 = -562064503; + } else { + var0 = -1004631275; + } + break; + case 582712685: + var1 = 1; + var0 = 700498031; + break; + case 700498031: + usable = (boolean)((var1) != 0); + var0 = -1004631275; + break; + case 1613758560: + if (loadPalette()) { + var0 = 582712685; + } else { + var0 = -204727141; + } + } + } + } + + static TextureSetup logo() { + return logoSetup; + } + + static TextureSetup palette() { + return paletteSetup; + } + + private static boolean compileBackdrop() { + try { + CompiledRenderPipeline var0 = RenderSystem.getDevice().precompilePipeline(BACKDROP, acf::shaderSource); + if (!var0.isValid()) { + id.warn(Cif.SHADER, "Boot splash pipeline failed to compile"); + return (boolean)(((0)) != 0); + } else { + return (boolean)(((1)) != 0); + } + } catch (RuntimeException var1) { + id.warn( + Cif.SHADER, + "Boot splash pipeline could not be prepared", + var1 + ); + return (boolean)(((0)) != 0); + } + } + + private static String shaderSource(Identifier var0, ShaderType var1) { + Identifier var2 = null; + String var3 = null; + StringBuilder var4 = null; + String[] var5 = null; + int var6 = 0; + int var7 = 0; + Object var8 = null; + String var9 = null; + String var10 = null; + Identifier var11 = null; + String var12 = null; + int var13 = -608857117; + + while (true) { + switch (var13) { + case -2124782013: + var8 = var5[var7]; + var9 = var8.trim(); + if (var9.startsWith("#moj_import <")) { + var13 = 304024253; + } else { + var13 = -1119723770; + } + break; + case -2066335657: + var4.append("\n"); + var7++; + var13 = -181529681; + break; + case -1438681200: + var4 = new StringBuilder(var3.length()); + var5 = var3.split("\n", (456305790 ^ -456305791) + ((456305790 & -456305791) << 1)); + var6 = var5.length; + var7 = 0; + var13 = -181529681; + break; + case -1119723770: + var4.append((String)var8); + var13 = -2066335657; + break; + case -608857117: + default: + var2 = var1.idConverter().idToFile(var0); + var3 = readAsset(var2); + if (var3 == null) { + var13 = 414686994; + } else { + var13 = -1438681200; + } + break; + case -376617383: + return var4.toString(); + case -181529681: + if (var7 < var6) { + var13 = -2124782013; + } else { + var13 = -376617383; + } + break; + case 304024253: + if (var9.endsWith(">")) { + var13 = 1751262283; + } else { + var13 = -1119723770; + } + break; + case 345963082: + var4.append(var12); + var13 = -2066335657; + break; + case 414686994: + return null; + case 1751262283: + var10 = var9.substring( + "#moj_import <".length(), var9.length() - ">".length() + ); + var11 = Identifier.parse(var10); + var12 = readAsset(Identifier.fromNamespaceAndPath(var11.getNamespace(), "shaders/include/" + var11.getPath())); + if (var12 == null) { + var13 = 2137969333; + } else { + var13 = 345963082; + } + break; + case 2137969333: + return null; + } + } + } + + private static String readAsset(Identifier var0) { + String var1 = "assets/" + var0.getNamespace() + "/" + var0.getPath(); + Optional var2 = resolve(var1); + if (var2.isEmpty()) { + id.warn( + Cif.SHADER, + "Boot splash shader source {} is missing", + var1 + ); + return null; + } + + try { + return Files.readString((Path)var2.get(), StandardCharsets.UTF_8); + } catch (IOException var4) { + id.warn( + Cif.SHADER, + "Boot splash shader source {} is missing", + var1, + var4 + ); + return null; + } + } + + private static boolean loadLogo() { + Optional var0 = resolve("assets/evolution/icons/logo.png"); + if (var0.isEmpty()) { + id.warn( + Cif.RENDER, + "Boot splash logo {} is missing", + "assets/evolution/icons/logo.png" + ); + return (boolean)(((0)) != 0); + } + + try (InputStream var1 = Files.newInputStream((Path)var0.get())) { + NativeImage var2 = NativeImage.read(var1); + + int var3; + try { + whiten(var2); + uploadLogo(var2); + logoSetup = TextureSetup.singleTexture( + logoView, RenderSystem.getSamplerCache().getClampToEdge(FilterMode.LINEAR, (boolean)((((928030606 | -928030605) + (928030606 & -928030605))) != 0)) + ); + var3 = 1; + } catch (Throwable var7) { + if (var2 != null) { + try { + var2.close(); + } catch (Throwable var6) { + var7.addSuppressed(var6); + } + } + + throw var7; + } + + if (var2 != null) { + var2.close(); + } + + return (boolean)((var3) != 0); + } catch (IOException | RuntimeException var9) { + id.warn( + Cif.RENDER, + "Boot splash logo could not be loaded", + var9 + ); + return (boolean)(((0)) != 0); + } + } + + private static void uploadLogo(NativeImage var0) { + int var1 = 0; + int var2 = 0; + int var3 = 0; + GpuDevice var4 = null; + CommandEncoder var5 = null; + NativeImage var6 = null; + int var7 = 0; + NativeImage var8 = null; + int var9 = -384962045; + + while (true) { + switch (var9) { + case -2033161626: + logoView = var4.createTextureView(logoTexture); + return; + case -1905417885: + var6.close(); + var9 = -1681192489; + break; + case -1681192489: + var6 = var8; + var7++; + var9 = -849622670; + break; + case -849622670: + if (var7 < var3) { + var9 = 1734668159; + } else { + var9 = 1007528483; + } + break; + case -384962045: + default: + var1 = var0.getWidth(); + var2 = var0.getHeight(); + var3 = (-1093328992 ^ 1093329024) + ((-1093328992 & 1093329024) << 1) - Integer.numberOfLeadingZeros(Math.min(var1, var2)); + var4 = RenderSystem.getDevice(); + logoTexture = var4.createTexture( + () -> "evolution_boot_logo", + 5, + GpuFormat.RGBA8_UNORM, + var1, + var2, + 1, + var3 + ); + var5 = var4.createCommandEncoder(); + var5.writeToTexture( + logoTexture, + var0, + 0, + 0, + 0, + (-1787281174 | 1787281174) + (-1787281174 & 1787281174) + ); + var6 = var0; + var7 = 1; + var9 = -849622670; + break; + case 1007528483: + if (var6 != var0) { + var9 = 2107642163; + } else { + var9 = -2033161626; + } + break; + case 1734668159: + var8 = halve(var6); + var5.writeToTexture( + logoTexture, + var8, + var7, + 0, + 0, + (279636770 ^ -279636770) + ((279636770 & -279636770) << 1) + ); + if (var6 != var0) { + var9 = -1905417885; + } else { + var9 = -1681192489; + } + break; + case 2107642163: + var6.close(); + var9 = -2033161626; + } + } + } + + private static NativeImage halve(NativeImage var0) { + int var1 = 0; + int var2 = 0; + NativeImage var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 873602083; + + while (true) { + switch (var9) { + case -1051505593: + var6 = var5 * (2); + var7 = var4 * (2); + var8 = ( + alphaOf(var0, var6, var7) + + alphaOf(var0, var6 + 1, var7) + + alphaOf(var0, var6, var7 + (-102297099 | 102297100) + (-102297099 & 102297100)) + + alphaOf( + var0, + var6 + 1, + var7 + (-1648693597 ^ 1648693598) + ((-1648693597 & 1648693598) << 1) + ) + + (159039256 | -159039254) + + (159039256 & -159039254) + ) + / ((423810031 ^ -423810027) + ((423810031 & -423810027) << 1)); + var3.setPixel(var5, var4, var8 << (-1379015884 | 1379015908) + (-1379015884 & 1379015908) | (-703156623 | 719933838) + (-703156623 & 719933838)); + var5++; + var9 = 623390726; + break; + case -955462724: + return var3; + case 623390726: + if (var5 < var1) { + var9 = -1051505593; + } else { + var9 = 2087512976; + } + break; + case 873602083: + default: + var1 = Math.max(1, var0.getWidth() / ((-630526585 | 630526587) + (-630526585 & 630526587))); + var2 = Math.max( + 1, var0.getHeight() / ((-1827011924 ^ 1827011926) + ((-1827011924 & 1827011926) << 1)) + ); + var3 = new NativeImage(var1, var2, (boolean)((((-262776886 | 262776886) + (-262776886 & 262776886))) != 0)); + var4 = 0; + var9 = 966180208; + break; + case 966180208: + if (var4 < var2) { + var9 = 1293316832; + } else { + var9 = -955462724; + } + break; + case 1293316832: + var5 = 0; + var9 = 623390726; + break; + case 2087512976: + var4++; + var9 = 966180208; + } + } + } + + private static int alphaOf(NativeImage var0, int var1, int var2) { + int var3 = Math.min(var1, var0.getWidth() - ((2014537564 | -2014537563) + (2014537564 & -2014537563))); + int var4 = Math.min(var2, var0.getHeight() - ((69713033 ^ -69713032) + ((69713033 & -69713032) << 1))); + return var0.getPixel(var3, var4) >>> 24; + } + + private static boolean loadPalette() { + try { + int[] var0 = acd.load(); + NativeImage var1 = new NativeImage( + 3, + 1, + (boolean)((((-675295395 | 675295395) + (-675295395 & 675295395)) + ) != 0)); + + for (int var2 = 0; var2 < 3; var2++) { + var1.setPixel( + var2, 0, (1851700386 ^ -1868477602) + ((1851700386 & -1868477602) << 1) | var0[var2] + ); + } + + palette = new DynamicTexture( + () -> "evolution_boot_palette", var1 + ); + paletteSetup = TextureSetup.singleTexture(palette.getTextureView(), RenderSystem.getSamplerCache().getClampToEdge(FilterMode.NEAREST)); + return (boolean)(((1)) != 0); + } catch (RuntimeException var3) { + id.warn( + Cif.RENDER, + "Boot splash palette could not be created", + var3 + ); + return (boolean)(((0)) != 0); + } + } + + private static void whiten(NativeImage var0) { + int var1 = 0; + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = -794858931; + + while (true) { + switch (var5) { + case -1164982016: + var4 = 0; + var5 = 1439429838; + break; + case -794858931: + default: + var1 = var0.getWidth(); + var2 = var0.getHeight(); + var3 = 0; + var5 = 1631357432; + break; + case -536998670: + var3++; + var5 = 1631357432; + break; + case 1439429838: + if (var4 < var1) { + var5 = 1858291635; + } else { + var5 = -536998670; + } + break; + case 1631357432: + if (var3 < var2) { + var5 = -1164982016; + } else { + var5 = 2134412234; + } + break; + case 1858291635: + var0.setPixel( + var4, + var3, + var0.getPixel(var4, var3) & (751784387 | -768561603) + (751784387 & -768561603) + | (1707235529 ^ -1690458314) + ((1707235529 & -1690458314) << 1) + ); + var4++; + var5 = 1439429838; + break; + case 2134412234: + return; + } + } + } + + private static Optional resolve(String var0) { + Optional var1 = FabricLoader.getInstance().getModContainer("evolutiondlc"); + return var1.flatMap(var1x -> var1x.findPath(var0)).filter(var0x -> Files.isRegularFile(var0x)); + } +} diff --git a/src/main/java/defpackage/acg.java b/src/main/java/defpackage/acg.java new file mode 100644 index 0000000..f92f934 --- /dev/null +++ b/src/main/java/defpackage/acg.java @@ -0,0 +1,4 @@ +package defpackage; + +record acg(float x, float y, mo item) { +} diff --git a/src/main/java/defpackage/ach.java b/src/main/java/defpackage/ach.java new file mode 100644 index 0000000..15f9815 --- /dev/null +++ b/src/main/java/defpackage/ach.java @@ -0,0 +1,968 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.model.geom.builders.UVPair; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import net.minecraft.world.item.Item; +import org.joml.Matrix3x2fStack; + +public final class ach extends api { + private static final float PANEL_WIDTH = 244.0F; + private static final float PANEL_HEIGHT = 300.0F; + private static final float PADDING = 8.0F; + private static final float TITLE_Y = 8.0F; + private static final float HEADER_BUTTON_SIZE = 12.0F; + private static final float HEADER_BUTTON_Y = 6.0F; + private static final float SEARCH_Y = 22.0F; + private static final float SEARCH_HEIGHT = 13.0F; + private static final float CONTENT_TOP = 44.0F; + private static final float CELL_W = 20.0F; + private static final float CELL_H = 26.0F; + private static final float CELL_GAP = 2.0F; + private static final float STEP_X = 22.0F; + private static final float STEP_Y = 28.0F; + private static final float ITEM_SIZE = 16.0F; + private static final float ITEM_INSET_X = 2.0F; + private static final float ITEM_INSET_Y = 3.0F; + private static final float SCROLLBAR_GAP = 3.0F; + private static final long CLOSE_KEY_DELAY_MS = 250L; + private static final float HEADER_BUTTON_GAP = 4.0F; + private static final String TITLE = "Storage"; + private static final String EMPTY_GLYPH = "E"; + private static final String EMPTY_UNTRACKED_TITLE = "Nothing tracked yet"; + private static final String EMPTY_UNTRACKED_HINT = "Open a chest to start tracking it"; + private static final String EMPTY_SEARCH_TITLE = "Nothing found"; + private static final String EMPTY_SEARCH_HINT = "Try another item name"; + private static final int HOVER_CLOSE = 0; + private static final int HOVER_SORT = 1; + private static final int HOVER_SEARCH = 2; + private static final int HOVER_CELL = 3; + private static final float BUTTON_IDLE_ALPHA = 0.7F; + private static final float SEARCH_PLACEHOLDER_MIX = 0.3F; + private static final float BUTTON_GLYPH_MIX = 0.4F; + private final xm frame = new xm(); + private final ase hover = new ase(); + private final arl scrollHandler = new arl(); + private final ark scrollBar = new ark(); + private final List baseItems = new ArrayList<>(); + private final List visibleItems = new ArrayList<>(); + private final List renderedCells = new ArrayList<>(); + private arn searchField; + private boolean sortByCount = (boolean)(((1)) != 0); + private String lastSearch; + private boolean lastSortByCount; + private boolean dirty = (boolean)(((1)) != 0); + private float boxX; + private float boxY; + private boolean positioned; + private long openTime; + private boolean dragging; + private float dragOffsetX; + private float dragOffsetY; + private mo hovered; + + private static arq CONTROL_RADIUS() { + return asj.all(oc.CARD); + } + + private static arq BUTTON_RADIUS() { + return asj.all(oc.ROW); + } + + private static arq CELL_RADIUS() { + return asj.all(oc.CONTROL); + } + + private static arq WINDOW_RADIUS() { + return asj.all(oc.WINDOW); + } + + protected void init() { + Identifier var1 = null; + int var2 = -358502279; + + while (true) { + switch (var2) { + case -1807507192: + this.searchField = new arn( + new UVPair(0.0F, 0.0F), + asp.font(oe.BODY), + "Storage", + 216.0F + ); + var2 = -1077576194; + break; + case -1598656926: + this.dirty = (boolean)(((1)) != 0); + if (!this.positioned) { + var2 = -484082900; + } else { + var2 = -1030166448; + } + break; + case -1077576194: + return; + case -1030166448: + this.clampBox(); + if (this.searchField == null) { + var2 = -1807507192; + } else { + var2 = -1077576194; + } + break; + case -797942205: + this.baseItems.addAll(ms.INSTANCE.aggregate(var1)); + var2 = -1598656926; + break; + case -484082900: + this.boxX = this.frame.centerX(244.0F); + this.boxY = this.frame.centerY(300.0F); + this.positioned = (boolean)(((1)) != 0); + var2 = -1030166448; + break; + case -358502279: + default: + this.openTime = System.currentTimeMillis(); + this.frame.open(); + this.frame.measure(this.width, this.height, 244.0F, 300.0F); + var1 = this.currentDimension(); + this.baseItems.clear(); + if (var1 != null) { + var2 = -797942205; + } else { + var2 = -1598656926; + } + } + } + } + + private Identifier currentDimension() { + Identifier var2 = null; + int var1 = 74602688; + + while (true) { + switch (var1) { + case -1057197122: + var2 = mc.level.dimension().identifier(); + var1 = 663636198; + break; + case 74602688: + default: + if (mc.level != null) { + var1 = -1057197122; + } else { + var1 = 639265353; + } + break; + case 639265353: + var2 = null; + var1 = 663636198; + break; + case 663636198: + return var2; + } + } + } + + public boolean shouldCloseOnEsc() { + return (boolean)(((0)) != 0); + } + + @Override + public void tick() { + int var1 = -524075153; + + while (true) { + switch (var1) { + case -524075153: + default: + if (this.frame.isClosed()) { + var1 = 1363003956; + } else { + var1 = 1904065977; + } + break; + case 1363003956: + mc.gui.setScreen(null); + var1 = 1904065977; + break; + case 1904065977: + return; + } + } + } + + public void extractBackground(GuiGraphicsExtractor var1, int var2, int var3, float var4) { + } + + @Override + public void render(asq var1, float var2, float var3) { + mv var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + Matrix3x2fStack var5 = var1.pose(); + this.frame.measure(this.width, this.height, 244.0F, 300.0F); + this.clampBox(); + float var6 = this.frame.advance(); + this.frame.push(var1, this.boxX + 122.0F, this.boxY + 150.0F); + var2 = (float)this.frame.toLocalX(var2); + var3 = (float)this.frame.toLocalY(var3); + asu var7 = var4.getBackgroundColor().withAlpha(var6 * 0.97F); + atb.drawShadow(var5, this.boxX, this.boxY, 244.0F, 300.0F, 22.0F, asj.all(oc.WINDOW), var4.getColor().mulAlpha(var6 * 0.5F)); + var1.drawSurface(aso.WINDOW, this.boxX, this.boxY, 244.0F, 300.0F, WINDOW_RADIUS(), var7.getRGB()); + arx.invalidateScene(); + atb.drawRoundedBorder(var5, this.boxX, this.boxY, 244.0F, 300.0F, pk.borderRim(), asj.all(oc.WINDOW), var4.getColor().mulAlpha(var6)); + this.renderHeader(var1, var4, var6, var2, var3); + this.renderContent(var1, var4, var6, var2, var3); + this.frame.pop(var1); + this.hover.endFrame(); + } + + private void renderHeader(asq var1, mv var2, float var3, float var4, float var5) { + ge var6 = asp.font(oe.TITLE); + var1.drawText( + var6, "Storage", this.boxX + 8.0F, this.boxY + 8.0F, var2.getWhite().mulAlpha(var3) + ); + ge var7 = asp.font(oe.CAPTION); + Identifier var8 = this.currentDimension(); + int var9 = var8 == null ? 0: ms.INSTANCE.containerCount(var8); + String var10 = var9 + + ( + var9 == 1? " container" + : " containers" + ); + var1.drawText( + var7, + var10, + this.boxX + 8.0F + var6.width("Storage") + 4.0F, + this.boxY + 8.0F + var6.height() - var7.height() - 0.5F, + var2.getGrayLight().mulAlpha(var3) + ); + float var11 = this.boxX + 244.0F - 8.0F - 12.0F; + float var12 = var11 - 12.0F - 4.0F; + this.renderHeaderButton( + var1, + var2, + var3, + var4, + var5, + var11, + "x", + var2.getColor(), + (283626651 ^ -283626651) + ((283626651 & -283626651) << 1) + ); + this.renderHeaderButton( + var1, + var2, + var3, + var4, + var5, + var12, + this.sortByCount ? "#" : "A", + var2.getGrayLight(), + (-2115550259 | 2115550260) + (-2115550259 & 2115550260) + ); + float var13 = this.boxX + 8.0F; + float var14 = 228.0F; + float var15 = this.hover + .hover(2, aqj.isHovered(var4, var5, var13, this.boxY + 22.0F, var14, 13.0)); + asu var16 = (this.searchField != null && this.searchField.isSelected() ? var2.getForegroundStroke() : var2.getForegroundColor()).mulAlpha(var3); + asa.plateControl(var1, var13, this.boxY + 22.0F, var14, 13.0F, asa.plateColor(var2), var3, var15); + boolean var17 = asa.push(var1, var13, this.boxY + 22.0F, var14, 13.0F, var15, asa.controlAmount(var14)); + var1.drawSurface(aso.CONTROL, var13, this.boxY + 22.0F, var14, 13.0F, CONTROL_RADIUS(), var16.getRGB()); + ge var18 = asp.font(oe.BODY); + float var19 = this.boxY + 22.0F + (13.0F - var18.height()) / 2.0F + 0.5F; + if (this.searchField != null) { + if (this.searchField.isEmpty() && !this.searchField.isSelected()) { + var1.drawText( + var18, + "Search", + var13 + 6.0F, + var19, + var2.getWhite().mulAlpha(var3 * 0.45F).mix(var2.getWhite(), 0.3F * var15) + ); + } else { + this.searchField.render(var1, var13 + 6.0F, var19, var2.getWhite().mulAlpha(var3), var2.getGrayLight().mulAlpha(var3)); + } + } + + asa.pop(var1, var17); + } + + private void renderHeaderButton(asq var1, mv var2, float var3, float var4, float var5, float var6, String var7, asu var8, int var9) { + float var10 = this.boxY + 6.0F; + float var11 = this.hover.hover(var9, aqj.isHovered(var4, var5, var6, var10, 12.0, 12.0)); + asa.plateControl(var1, var6, var10, 12.0F, 12.0F, asa.plateColor(var2), var3, var11); + boolean var12 = asa.push(var1, var6, var10, 12.0F, 12.0F, var11, 0.05F); + var1.drawSurface(aso.CONTROL, var6, var10, 12.0F, 12.0F, BUTTON_RADIUS(), var2.getForegroundColor().mulAlpha(var3 * (0.7F + 0.3F * var11))); + ge var13 = asp.font(oe.CAPTION); + var1.drawText( + var13, + var7, + var6 + (12.0F - var13.width(var7)) / 2.0F, + var10 + (12.0F - var13.height()) / 2.0F + 0.5F, + var8.mix(var2.getWhite(), 0.4F * var11).mulAlpha(var3) + ); + asa.pop(var1, var12); + } + + private void renderContent(asq var1, mv var2, float var3, float var4, float var5) { + this.recomputeIfNeeded(); + this.renderedCells.clear(); + this.hovered = null; + float var6 = this.boxX + 8.0F; + float var7 = this.boxY + 44.0F; + float var8 = this.boxY + 300.0F - 8.0F; + float var9 = var8 - var7; + float var10 = 221.5F; + int var11 = Math.max(1, (int)((var10 + 2.0F) / 22.0F)); + if (this.visibleItems.isEmpty()) { + boolean var32 = this.baseItems.isEmpty(); + arw.draw( + var1, + var2, + "E", + var32 + ? "Nothing tracked yet" + : "Nothing found", + var32 + ? "Open a chest to start tracking it" + : "Try another item name", + this.boxX, + var7, + 244.0F, + var9, + var3 + ); + this.scrollHandler.setMax(0.0); + this.scrollHandler.update(); + this.scrollBar.measure(this.boxX + 244.0F - 8.0F - 3.5F, var7, 3.5F, var9, 0.0F, 0.0F); + } else { + int var12 = (this.visibleItems.size() + var11 - ((-1762074888 | 1762074889) + (-1762074888 & 1762074889))) / var11; + float var13 = var12 * 28.0F - 2.0F; + float var14 = Math.max(0.0F, var13 - var9); + this.scrollHandler.setMax(var14); + this.scrollHandler.update(); + float var15 = (float)this.scrollHandler.getValue(); + Item var16 = tk.INSTANCE.getHighlightItem(); + ge var17 = asp.font(oe.CAPTION); + var1.clipScroll(var6, var7, var6 + var10, var8, ars.edgeFade()); + + for (int var18 = 0; var18 < this.visibleItems.size(); var18++) { + int var19 = var18 % var11; + int var20 = var18 / var11; + float var21 = var6 + var19 * 22.0F; + float var22 = var7 + var20 * 28.0F - var15; + if (!(var22 + 26.0F < var7) && !(var22 > var8)) { + mo var23 = this.visibleItems.get(var18); + int var24 = aqj.isHovered(var4, var5, var21, var22, 20.0, 26.0) && var5 >= var7 && var5 <= var8 + ? 1: 0; + float var25 = this.hover.hover((-1774929424 | 1774929427) + (-1774929424 & 1774929427) + var18, (boolean)((var24) != 0)); + int var26 = var16 != null && var23.stack().getItem() == var16 + ? 1: 0; + asa.plateControl(var1, var21, var22, 20.0F, 26.0F, asa.plateColor(var2), var3, var25); + boolean var27 = asa.push(var1, var21, var22, 20.0F, 26.0F, var25, 0.05F); + asu var28 = var2.getForegroundGray().mulAlpha(var3 * (0.7F + 0.3F * var25)); + var1.drawSurface(aso.ROW, var21, var22, 20.0F, 26.0F, CELL_RADIUS(), var28.getRGB()); + if (var26 != 0) { + var1.drawRoundedRect(var21, var22, 20.0F, 26.0F, asj.all(oc.CONTROL), var2.getColor().mulAlpha(var3 * 0.28F)); + } + + var1.item(var23.stack(), (int)(var21 + 2.0F), (int)(var22 + 3.0F)); + String var29 = abbreviate(var23.count()); + float var30 = var21 + (20.0F - var17.width(var29)) / 2.0F; + float var31 = var22 + 3.0F + 16.0F + 1.0F; + var1.drawText(var17, var29, var30 + 0.5F, var31 + 0.5F, asu.BLACK.mulAlpha(var3 * 0.7F)); + var1.drawText(var17, var29, var30, var31, (var26 != 0 ? var2.getColor() : var2.getWhite()).mulAlpha(var3)); + asa.pop(var1, var27); + this.renderedCells.add(new acg(var21, var22, var23)); + if (var24 != 0) { + this.hovered = var23; + } + } + } + + var1.popClip(); + this.scrollBar.measure(this.boxX + 244.0F - 8.0F - 3.5F, var7, 3.5F, var9, var14, var15); + this.scrollBar.render(var1, var2, var3, var4, var5, this.scrollHandler.isSettled()); + if (this.hovered != null) { + this.renderTooltip(var1, var2, var3, var4, var5, this.hovered); + } + } + } + + private void renderTooltip(asq var1, mv var2, float var3, float var4, float var5, mo var6) { + ge var7 = asp.font(oe.BODY); + ge var8 = asp.font(oe.CAPTION); + String var9 = var6.stack().getHoverName().getString(); + String var10 = "x" + var6.count(); + String var11 = var6.containers() + + ( + var6.containers() == 1? " container" + : " containers" + ); + float var12 = Math.max(var7.width(var9), var8.width(var10) + var8.width(var11) + 8.0F) + 12.0F; + float var13 = var7.height() + var8.height() + 10.0F; + float var14 = Mth.clamp(var4 + 10.0F, this.boxX, this.boxX + 244.0F - var12); + float var15 = Mth.clamp(var5 + 10.0F, this.boxY, this.boxY + 300.0F - var13); + atb.drawShadow(var1.pose(), var14, var15, var12, var13, 12.0F, asj.all(oc.CARD), var2.getColor().mulAlpha(var3 * 0.4F)); + var1.drawSurface(aso.TOOLTIP, var14, var15, var12, var13, CONTROL_RADIUS(), var2.getForegroundColor().getRGBWithAlpha(var3)); + atb.drawRoundedBorder(var1.pose(), var14, var15, var12, var13, pk.borderRim(), asj.all(oc.CARD), var2.getColor().mulAlpha(var3 * 0.6F)); + var1.drawText(var7, var9, var14 + 6.0F, var15 + 5.0F, var2.getWhite().mulAlpha(var3)); + var1.drawText(var8, var10, var14 + 6.0F, var15 + 5.0F + var7.height() + 2.0F, var2.getColor().mulAlpha(var3)); + var1.drawText(var8, var11, var14 + var12 - var8.width(var11) - 6.0F, var15 + 5.0F + var7.height() + 2.0F, var2.getGrayLight().mulAlpha(var3)); + } + + private void recomputeIfNeeded() { + String var1 = null; + Iterator var2 = null; + mo var3 = null; + String var5 = null; + Comparator var6 = null; + int var4 = -167337282; + + while (true) { + switch (var4) { + case -2002731329: + if (var2.hasNext()) { + var4 = 455985799; + } else { + var4 = 1565513937; + } + break; + case -1857312217: + if (matches(var3, var1)) { + var4 = -1557902063; + } else { + var4 = 734420006; + } + break; + case -1641659113: + var5 = ""; + var4 = 1726368634; + break; + case -1570177709: + var5 = this.searchField.getText().toLowerCase(Locale.ROOT); + var4 = 1726368634; + break; + case -1557902063: + this.visibleItems.add(var3); + var4 = 734420006; + break; + case -1343783297: + var6 = Comparator.comparing(var0 -> var0.stack().getHoverName().getString().toLowerCase(Locale.ROOT)); + var4 = 1334135620; + break; + case -577531470: + if (this.sortByCount == this.lastSortByCount) { + var4 = -242103616; + } else { + var4 = 1075692938; + } + break; + case -242103616: + return; + case -167337282: + default: + if (this.searchField == null) { + var4 = -1641659113; + } else { + var4 = -1570177709; + } + break; + case 300061732: + var6 = Comparator.comparingLong(mo::count).reversed(); + var4 = 1334135620; + break; + case 455985799: + var3 = (mo)var2.next(); + if (!var1.isEmpty()) { + var4 = -1857312217; + } else { + var4 = -1557902063; + } + break; + case 495179904: + if (var1.equals(this.lastSearch)) { + var4 = -577531470; + } else { + var4 = 1075692938; + } + break; + case 734420006: + var4 = -2002731329; + break; + case 1075692938: + this.visibleItems.clear(); + var2 = this.baseItems.iterator(); + var4 = -2002731329; + break; + case 1334135620: + Comparator var7 = var6; + this.visibleItems.sort(var7); + this.lastSearch = var1; + this.lastSortByCount = this.sortByCount; + this.dirty = (boolean)(((0)) != 0); + return; + case 1565513937: + if (this.sortByCount) { + var4 = 300061732; + } else { + var4 = -1343783297; + } + break; + case 1726368634: + var1 = var5; + if (!this.dirty) { + var4 = 495179904; + } else { + var4 = 1075692938; + } + } + } + } + + private static boolean matches(mo var0, String var1) { + Identifier var2 = null; + int var4 = 0; + int var3 = -261279315; + + while (true) { + switch (var3) { + case -1970276391: + var4 = 0; + var3 = -1610917984; + break; + case -1610917984: + return (boolean)((var4) != 0); + case -1284442652: + var2 = BuiltInRegistries.ITEM.getKey(var0.stack().getItem()); + if (!var2.getPath().contains(var1)) { + var3 = 92092018; + } else { + var3 = 1351184923; + } + break; + case -261279315: + default: + if (var0.stack().getHoverName().getString().toLowerCase(Locale.ROOT).contains(var1)) { + var3 = -220800541; + } else { + var3 = -1284442652; + } + break; + case -220800541: + return (boolean)(((1)) != 0); + case 92092018: + if (var2.toString().contains(var1)) { + var3 = 1351184923; + } else { + var3 = -1970276391; + } + break; + case 1351184923: + var4 = 1; + var3 = -1610917984; + } + } + } + + private static String abbreviate(long var0) { + int var2 = -2137126173; + + while (true) { + switch (var2) { + case -2137126173: + default: + if (var0 < (-8311584615224112996L | 8311584615224113996L) + (-8311584615224112996L & 8311584615224113996L)) { + var2 = 430899752; + } else { + var2 = -1853358908; + } + break; + case -1853358908: + if (var0 < (-1666243699706321876L ^ 1666243699707321876L) + ((-1666243699706321876L & 1666243699707321876L) << 1)) { + var2 = 806026282; + } else { + var2 = 1367192426; + } + break; + case -370986018: + return format(var0 / 1000000.0) + "m"; + case 132835860: + return format(var0 / 1.0E9) + "b"; + case 430899752: + return Long.toString(var0); + case 806026282: + return format(var0 / 1000.0) + "k"; + case 1367192426: + if (var0 < (1399916122451548344L ^ -1399916121451548344L) + ((1399916122451548344L & -1399916121451548344L) << 1)) { + var2 = -370986018; + } else { + var2 = 132835860; + } + } + } + } + + private static String format(double var0) { + String var2 = null; + String var4 = null; + int var3 = 1449259499; + + while (true) { + switch (var3) { + case -2023700170: + return var4; + case -1064365438: + var4 = var2; + var3 = -2023700170; + break; + case -129148319: + return Long.toString(Math.round(var0)); + case 711921829: + Locale var10000 = Locale.ROOT; + String var10001 = "%.1f"; + Object[] var10002 = new Object[1]; + var10002[0] = var0; + var2 = String.format(var10000, var10001, var10002); + if (var2.endsWith(".0")) { + var3 = 1662050532; + } else { + var3 = -1064365438; + } + break; + case 1449259499: + default: + if (var0 >= 100.0) { + var3 = -129148319; + } else { + var3 = 711921829; + } + break; + case 1662050532: + var4 = var2.substring( + 0, var2.length() - ((347970139 ^ -347970137) + ((347970139 & -347970137) << 1)) + ); + var3 = -2023700170; + } + } + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + if (this.frame.isInteractive()) { + if (var5.getButtonIndex() == 0) { + var1 = this.frame.toLocalX(var1); + var3 = this.frame.toLocalY(var3); + if (!this.scrollBar.press(var1, var3)) { + float var6 = this.boxX + 244.0F - 8.0F - 12.0F; + float var7 = var6 - 12.0F - 4.0F; + if (aqj.isHovered(var1, var3, var6, this.boxY + 6.0F, 12.0, 12.0)) { + this.startClose(); + } else if (aqj.isHovered(var1, var3, var7, this.boxY + 6.0F, 12.0, 12.0)) { + this.sortByCount = (boolean)(((!this.sortByCount + ? 1: (1047312775 ^ -1047312775) + ((1047312775 & -1047312775) << 1))) != 0); + this.dirty = (boolean)(((1)) != 0); + this.playClick(); + } else { + float var8 = this.boxX + 8.0F; + float var9 = 228.0F; + if (this.searchField != null && aqj.isHovered(var1, var3, var8, this.boxY + 22.0F, var9, 13.0)) { + this.searchField.setSelected((boolean)((((769801503 ^ -769801502) + ((769801503 & -769801502) << 1))) != 0)); + } else { + if (this.searchField != null && this.searchField.isSelected()) { + this.searchField.setSelected((boolean)((((-918892882 | 918892882) + (-918892882 & 918892882))) != 0)); + } + + for (acg var11 : this.renderedCells) { + if (aqj.isHovered(var1, var3, var11.x(), var11.y(), 20.0, 26.0)) { + Item var12 = var11.item().stack().getItem(); + tk var13 = tk.INSTANCE; + var13.setHighlightItem(var13.getHighlightItem() == var12 ? null : var12); + this.playClick(); + this.startClose(); + return; + } + } + + if (aqj.isHovered(var1, var3, this.boxX, this.boxY, 244.0, 22.0)) { + this.dragging = (boolean)(((1)) != 0); + this.dragOffsetX = (float)var1 - this.boxX; + this.dragOffsetY = (float)var3 - this.boxY; + } else { + if (!aqj.isHovered(var1, var3, this.boxX, this.boxY, 244.0, 300.0)) { + this.startClose(); + } + } + } + } + } + } + } + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + int var6 = 537922422; + + while (true) { + switch (var6) { + case -803210592: + return; + case 537922422: + default: + if (var5.getButtonIndex() == 0) { + var6 = 1766000629; + } else { + var6 = -803210592; + } + break; + case 1766000629: + this.dragging = (boolean)(((0)) != 0); + this.scrollBar.release(); + var6 = -803210592; + } + } + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + int var10 = 105271693; + + while (true) { + switch (var10) { + case -971068193: + return; + case 105271693: + default: + if (this.scrollBar.isDragging()) { + var10 = 942976732; + } else { + var10 = 1638413653; + } + break; + case 942976732: + this.scrollHandler.jumpTo(-this.scrollBar.dragTo(this.frame.toLocalY(var3))); + return; + case 1012094400: + this.boxX = (float)this.frame.toLocalX(var1) - this.dragOffsetX; + this.boxY = (float)this.frame.toLocalY(var3) - this.dragOffsetY; + this.clampBox(); + var10 = -971068193; + break; + case 1638413653: + if (this.dragging) { + var10 = 1012094400; + } else { + var10 = -971068193; + } + } + } + } + + private void clampBox() { + this.boxX = Mth.clamp(this.boxX, this.frame.viewLeft(), Math.max(this.frame.viewLeft(), this.frame.viewRight() - 244.0F)); + this.boxY = Mth.clamp(this.boxY, this.frame.viewTop(), Math.max(this.frame.viewTop(), this.frame.viewBottom() - 300.0F)); + } + + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + this.scrollHandler.scroll(var7); + this.scrollBar.notifyScrolled(); + return (boolean)(((1)) != 0); + } + + @Override + public boolean charTyped(char var1, int var2) { + int var3 = 0; + int var4 = -1937141326; + + while (true) { + switch (var4) { + case -1937141326: + default: + if (this.searchField != null) { + var4 = 1211575466; + } else { + var4 = 474850461; + } + break; + case -873236347: + boolean var5 = this.searchField.charTyped(var1, var2); + this.dirty = (boolean)(((1)) != 0); + return var5; + case 474850461: + return super.charTyped(var1, var2); + case 1211575466: + if (this.searchField.isSelected()) { + var4 = -873236347; + } else { + var4 = 474850461; + } + } + } + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = 0; + int var6 = 0; + int var5 = -1084244765; + + while (true) { + switch (var5) { + case -1957111734: + if (System.currentTimeMillis() - this.openTime > (611206778075605846L | -611206778075605596L) + (611206778075605846L & -611206778075605596L)) { + var5 = -796469079; + } else { + var5 = -1559683564; + } + break; + case -1559683564: + var6 = 0; + var5 = -1384645691; + break; + case -1394922270: + this.searchField.setSelected((boolean)((((-1918207894 | 1918207894) + (-1918207894 & 1918207894))) != 0)); + return (boolean)(((1)) != 0); + case -1385603061: + if (this.searchField.isSelected()) { + var5 = -1282555858; + } else { + var5 = 479083182; + } + break; + case -1384645691: + var4 = var6; + if (var1 != (319158949 ^ -319158693) + ((319158949 & -319158693) << 1)) { + var5 = 740029394; + } else { + var5 = -839932281; + } + break; + case -1282555858: + if (var1 == (-1074881675 | 1074881931) + (-1074881675 & 1074881931)) { + var5 = -1394922270; + } else { + var5 = -1114226545; + } + break; + case -1114226545: + var4 = (this.searchField.keyPressed(var1, var2, var3)) ? 1 : 0; + this.dirty = (boolean)(((1)) != 0); + if (var4 != 0) { + var5 = 542242260; + } else { + var5 = 479083182; + } + break; + case -1084244765: + default: + if (this.searchField != null) { + var5 = -1385603061; + } else { + var5 = 479083182; + } + break; + case -839932281: + this.startClose(); + return (boolean)(((1)) != 0); + case -796469079: + var6 = 1; + var5 = -1384645691; + break; + case 479083182: + if (var1 == tk.INSTANCE.getOpenKeyCode()) { + var5 = -1957111734; + } else { + var5 = -1559683564; + } + break; + case 542242260: + return (boolean)(((1)) != 0); + case 740029394: + if (var4 != 0) { + var5 = -839932281; + } else { + var5 = 1882849794; + } + break; + case 1882849794: + return super.keyPressed(var1, var2, var3); + } + } + } + + private void startClose() { + int var1 = -1679897406; + + while (true) { + switch (var1) { + case -1704262878: + this.frame.beginClose(); + this.playClose(); + var1 = 779496939; + break; + case -1679897406: + default: + if (!this.frame.isClosing()) { + var1 = -1704262878; + } else { + var1 = 779496939; + } + break; + case 779496939: + return; + } + } + } + + private void playClick() { + int var1 = -1785985942; + + while (true) { + switch (var1) { + case -1785985942: + default: + if (bz.getInstance().getSoundManager() != null) { + var1 = 1064753976; + } else { + var1 = 933532196; + } + break; + case 933532196: + return; + case 1064753976: + bz.getInstance().getSoundManager().playClick(); + var1 = 933532196; + } + } + } + + private void playClose() { + int var1 = -869701297; + + while (true) { + switch (var1) { + case -2041930630: + return; + case -869701297: + default: + if (bz.getInstance().getSoundManager() != null) { + var1 = 95420177; + } else { + var1 = -2041930630; + } + break; + case 95420177: + bz.getInstance().getSoundManager().playClose(); + var1 = -2041930630; + } + } + } +} diff --git a/src/main/java/defpackage/aci.java b/src/main/java/defpackage/aci.java new file mode 100644 index 0000000..6232151 --- /dev/null +++ b/src/main/java/defpackage/aci.java @@ -0,0 +1,212 @@ +package defpackage; + +import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.components.AbstractWidget; + +public final class aci { + private static final String ID_ACCOUNTS = "evolution:accounts"; + private static final String ID_FRIENDS = "evolution:friends"; + private static final String LABEL_ACCOUNTS = "Accounts"; + private static final String LABEL_FRIENDS = "Friends"; + private static final String UNREAD_PREFIX = " ("; + private static final String UNREAD_SUFFIX = ")"; + private static final String ID_BACKGROUND_PREFIX = "evolution:background/"; + private static final int PRIORITY_ACCOUNTS = 0; + private static final int PRIORITY_FRIENDS = 10; + private static final int PRIORITY_BACKGROUND_BASE = 0; + private static final int MIN_BACKGROUND_CHOICES = 2; + private static boolean installed; + private static int cachedUnread = -1; + private static String cachedFriendsLabel = "Friends"; + + private aci() { + } + + public static void ensureRegistered() { + int var0 = 351184333; + + while (true) { + switch (var0) { + case -547422569: + return; + case 351184333: + default: + if (installed) { + var0 = -547422569; + } else { + var0 = 1548169640; + } + break; + case 1548169640: + installed = (boolean)(((1)) != 0); + acj.register( + new ack( + "evolution:accounts", + acq.EXTRAS, + 0, + "u", + () -> "Accounts", + var0x -> Minecraft.getInstance().setScreenAndShow(new ce(var0x)) + ) + ); + acj.register( + new ack( + "evolution:friends", + acq.EXTRAS, + 10, + "O", + aci::friendsLabel, + var0x -> Minecraft.getInstance().setScreenAndShow(new xl(var0x)) + ) + ); + registerBackgrounds(); + return; + } + } + } + + private static void registerBackgrounds() { + List var0 = null; + int var1 = 0; + aqp var2 = null; + String var3 = null; + int var4 = 919658589; + + while (true) { + switch (var4) { + case -1525605173: + return; + case -1162493598: + return; + case 747535734: + var2 = (aqp)var0.get(var1); + var3 = "evolution:background/" + var2.id(); + acj.register( + new ack( + var3, + acq.CORNER, + (-1163634037 ^ 1163634037) + ((-1163634037 & 1163634037) << 1) + var1, + var2.icon(), + var2::label, + () -> aqr.isActive(var2.id()), + var2x -> sweepTo(var2.id(), var3) + ) + ); + var1++; + var4 = 1522702575; + break; + case 919658589: + default: + var0 = aqr.catalog(); + if (var0.size() < (2063392531 ^ -2063392529) + ((2063392531 & -2063392529) << 1)) { + var4 = -1525605173; + } else { + var4 = 1257662491; + } + break; + case 1257662491: + var1 = 0; + var4 = 1522702575; + break; + case 1522702575: + if (var1 < var0.size()) { + var4 = 747535734; + } else { + var4 = -1162493598; + } + } + } + } + + private static void sweepTo(String var0, String var1) { + AbstractWidget var2 = null; + float var3 = 0.0F; + float var4 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + int var5 = 1662234880; + + while (true) { + switch (var5) { + case -1480127354: + var6 = 0.0F; + var5 = 1800106314; + break; + case 298130444: + var7 = 0.0F; + var5 = 430426292; + break; + case 381929185: + var6 = var2.getX() + var2.getWidth() / 2.0F; + var5 = 1800106314; + break; + case 430426292: + var4 = var7; + aqr.select(var0, var3, var4); + return; + case 586069323: + var7 = var2.getY() + var2.getHeight() / 2.0F; + var5 = 430426292; + break; + case 1662234880: + default: + var2 = acj.widgetOf(var1); + if (var2 == null) { + var5 = -1480127354; + } else { + var5 = 381929185; + } + break; + case 1800106314: + var3 = var6; + if (var2 == null) { + var5 = 298130444; + } else { + var5 = 586069323; + } + } + } + } + + private static String friendsLabel() { + int var0 = 0; + String var2 = null; + int var1 = -788746437; + + while (true) { + switch (var1) { + case -1208016012: + cachedFriendsLabel = var2; + var1 = 38484698; + break; + case -788746437: + default: + var0 = anb.totalUnread(); + if (var0 != cachedUnread) { + var1 = 1922793660; + } else { + var1 = 38484698; + } + break; + case 38484698: + return cachedFriendsLabel; + case 267057238: + var2 = "Friends (" + var0 + ")"; + var1 = -1208016012; + break; + case 1295963804: + var2 = "Friends"; + var1 = -1208016012; + break; + case 1922793660: + cachedUnread = var0; + if (var0 > 0) { + var1 = 267057238; + } else { + var1 = 1295963804; + } + } + } + } +} diff --git a/src/main/java/defpackage/acj.java b/src/main/java/defpackage/acj.java new file mode 100644 index 0000000..8dba075 --- /dev/null +++ b/src/main/java/defpackage/acj.java @@ -0,0 +1,175 @@ +package defpackage; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.WeakHashMap; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.function.Consumer; +import net.minecraft.client.gui.components.AbstractWidget; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.network.chat.Component; +import org.jetbrains.annotations.Nullable; + +public final class acj { + private static final String DUPLICATE_ENTRY = "main menu entry {} is already registered, ignoring the new one"; + private static final int DEFAULT_WIDGET_SIZE = 20; + private static final List ENTRIES = new CopyOnWriteArrayList<>(); + private static final Map STYLES = Collections.synchronizedMap(new WeakHashMap<>()); + private static final Map INSTALLED = new HashMap<>(); + + private acj() { + } + + public static boolean register(ack var0) { + int var1 = 0; + int var2 = -569529346; + + while (true) { + switch (var2) { + case -2007331842: + id.warn( + Cif.GUI, + "main menu entry {} is already registered, ignoring the new one", + var0.id() + ); + return (boolean)(((0)) != 0); + case -569529346: + default: + var1 = 0; + var2 = 716914455; + break; + case -441454883: + var1++; + var2 = 716914455; + break; + case 716914455: + if (var1 < ENTRIES.size()) { + var2 = 1099697772; + } else { + var2 = 1224609268; + } + break; + case 1099697772: + if (ENTRIES.get(var1).id().equals(var0.id())) { + var2 = -2007331842; + } else { + var2 = -441454883; + } + break; + case 1224609268: + ENTRIES.add(var0); + return (boolean)(((1)) != 0); + } + } + } + + public static boolean unregister(String var0) { + int var1 = 0; + ack var2 = null; + int var3 = 1475288451; + + while (true) { + switch (var3) { + case -1377662742: + var1++; + var3 = -1062278331; + break; + case -1062278331: + if (var1 < ENTRIES.size()) { + var3 = -653161382; + } else { + var3 = 1089138989; + } + break; + case -653161382: + var2 = ENTRIES.get(var1); + if (var2.id().equals(var0)) { + var3 = 699664512; + } else { + var3 = -1377662742; + } + break; + case 699664512: + return ENTRIES.remove(var2); + case 1089138989: + return (boolean)(((0)) != 0); + case 1475288451: + default: + var1 = 0; + var3 = -1062278331; + } + } + } + + public static void describe(AbstractWidget var0, acs var1) { + Objects.requireNonNull(var0); + Objects.requireNonNull(var1); + STYLES.put(var0, var1); + } + + public static void exclude(AbstractWidget var0) { + describe( + var0, + acs.of( + acq.NATIVE, 0, "K" + ) + ); + } + + @Nullable + public static acs styleOf(AbstractWidget var0) { + return STYLES.get(var0); + } + + public static void installInto(Screen var0, Consumer var1) { + int var2 = 0; + ack var3 = null; + AbstractWidget var4 = null; + int var5 = 1312101292; + + while (true) { + switch (var5) { + case -577973785: + if (var2 < ENTRIES.size()) { + var5 = 1658908485; + } else { + var5 = 2064383324; + } + break; + case 1312101292: + default: + INSTALLED.clear(); + var2 = 0; + var5 = -577973785; + break; + case 1658908485: + var3 = ENTRIES.get(var2); + var4 = Button.builder(Component.literal(var3.label().get()), var2x -> var3.action().accept(var0)) + .bounds( + 0, + 0, + 20, + (-966765152 | 966765172) + (-966765152 & 966765172) + ) + .build(); + describe(var4, var3.style()); + INSTALLED.put(var3.id(), var4); + var1.accept(var4); + var2++; + var5 = -577973785; + break; + case 2064383324: + return; + } + } + } + + @Nullable + public static AbstractWidget widgetOf(String var0) { + return INSTALLED.get(var0); + } +} diff --git a/src/main/java/defpackage/ack.java b/src/main/java/defpackage/ack.java new file mode 100644 index 0000000..da6108e --- /dev/null +++ b/src/main/java/defpackage/ack.java @@ -0,0 +1,37 @@ +package defpackage; + +import java.util.Objects; +import java.util.function.BooleanSupplier; +import java.util.function.Consumer; +import java.util.function.Supplier; +import net.minecraft.client.gui.screens.Screen; +import org.jetbrains.annotations.Nullable; + +public record ack(String id, acq section, int priority, String icon, Supplier label, @Nullable BooleanSupplier selected, Consumer action) { + public ack(String id, acq section, int priority, String icon, Supplier label, @Nullable BooleanSupplier selected, Consumer action) { + Objects.requireNonNull(id); + Objects.requireNonNull(section); + Objects.requireNonNull(icon); + Objects.requireNonNull(label); + Objects.requireNonNull(action); + this.id = id; + this.section = section; + this.priority = priority; + this.icon = icon; + this.label = label; + this.selected = selected; + this.action = action; + } + + public ack(String var1, acq var2, int var3, String var4, Supplier var5, Consumer var6) { + this(var1, var2, var3, var4, var5, null, var6); + } + + public static ack of(String var0, acq var1, int var2, String var3, String var4, Consumer var5) { + return new ack(var0, var1, var2, var3, () -> var4, null, var5); + } + + public acs style() { + return new acs(this.section, this.priority, this.icon, this.label, this.selected); + } +} diff --git a/src/main/java/defpackage/acl.java b/src/main/java/defpackage/acl.java new file mode 100644 index 0000000..5d45b75 --- /dev/null +++ b/src/main/java/defpackage/acl.java @@ -0,0 +1,22 @@ +package defpackage; + +public final class acl { + public static final String WORLD = "b"; + public static final String NETWORK = "p"; + public static final String CLOUD = "H"; + public static final String GEAR = "F"; + public static final String CLOSE = "M"; + public static final String COMPASS = "4"; + public static final String SHIELD = "P"; + public static final String USER = "u"; + public static final String FLASK = "o"; + public static final String CUBE = "K"; + public static final String SHAPES = "s"; + public static final String CHEVRON = "A"; + public static final String BELL = "n"; + public static final String LAYERS = "E"; + public static final String HEART = "O"; + + private acl() { + } +} diff --git a/src/main/java/defpackage/acm.java b/src/main/java/defpackage/acm.java new file mode 100644 index 0000000..6f5afaa --- /dev/null +++ b/src/main/java/defpackage/acm.java @@ -0,0 +1,33 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:acm.class */ +/* synthetic */ class acm { + static final /* synthetic */ int[] $SwitchMap$evo$systems$client$screens$title$MainMenuSection = new int[acq.values().length]; + + static { + try { + $SwitchMap$evo$systems$client$screens$title$MainMenuSection[acq.PRIMARY.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$client$screens$title$MainMenuSection[acq.EXTRAS.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$client$screens$title$MainMenuSection[acq.MODS.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$client$screens$title$MainMenuSection[acq.ICONS.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + try { + $SwitchMap$evo$systems$client$screens$title$MainMenuSection[acq.CORNER.ordinal()] = 5; + } catch (NoSuchFieldError e5) { + } + try { + $SwitchMap$evo$systems$client$screens$title$MainMenuSection[acq.FOOTER.ordinal()] = 6; + } catch (NoSuchFieldError e6) { + } + } +} diff --git a/src/main/java/defpackage/acn.java b/src/main/java/defpackage/acn.java new file mode 100644 index 0000000..7b76ab8 --- /dev/null +++ b/src/main/java/defpackage/acn.java @@ -0,0 +1,4 @@ +package defpackage; + +record acn(float pad, float brand, float row, float rowGap, float icon, float iconGap, float sectionGap, float account, float caption) { +} diff --git a/src/main/java/defpackage/aco.java b/src/main/java/defpackage/aco.java new file mode 100644 index 0000000..ab6e7bb --- /dev/null +++ b/src/main/java/defpackage/aco.java @@ -0,0 +1,1137 @@ +package defpackage; + +import com.mojang.blaze3d.platform.cursor.CursorTypes; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.WeakHashMap; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.components.AbstractWidget; +import net.minecraft.client.gui.components.events.GuiEventListener; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.ComponentContents; +import net.minecraft.network.chat.contents.TranslatableContents; +import org.jetbrains.annotations.Nullable; + +public final class aco { + private static final String KEY_SINGLEPLAYER = "menu.singleplayer"; + private static final String KEY_MULTIPLAYER = "menu.multiplayer"; + private static final String KEY_REALMS = "menu.online"; + private static final String KEY_PLAY_DEMO = "menu.playdemo"; + private static final String KEY_RESET_DEMO = "menu.resetdemo"; + private static final String KEY_OPTIONS = "menu.options"; + private static final String KEY_QUIT = "menu.quit"; + private static final String KEY_LANGUAGE = "options.language"; + private static final String KEY_ACCESSIBILITY = "options.accessibility"; + private static final String KEY_ACCESSIBILITY_ONBOARDING = "accessibility.onboarding.accessibility.button"; + private static final String KEY_FRIENDS = "gui.friends.open"; + private static final String KEY_CREDITS = "title.credits"; + private static final String LABEL_TEST_WORLD = "TW"; + private static final int PRIORITY_SINGLEPLAYER = 0; + private static final int PRIORITY_PLAY_DEMO = 5; + private static final int PRIORITY_MULTIPLAYER = 10; + private static final int PRIORITY_RESET_DEMO = 15; + private static final int PRIORITY_REALMS = 20; + private static final int PRIORITY_ICON_OPTIONS = 0; + private static final int PRIORITY_ICON_FRIENDS = 10; + private static final int PRIORITY_ICON_LANGUAGE = 20; + private static final int PRIORITY_ICON_ACCESSIBILITY = 30; + private static final int PRIORITY_ICON_TEST_WORLD = 40; + private static final int PRIORITY_ICON_QUIT = 100; + private static final int PRIORITY_UNKNOWN_BASE = 1000; + private static final int FOOTER_MAX_HEIGHT = 12; + private static final float PANEL_WIDTH = 210.0F; + private static final float MIN_PANEL_WIDTH = 120.0F; + private static final float MARGIN_X = 12.0F; + private static final float MARGIN_Y = 14.0F; + private static final float CORNER_SIZE = 16.0F; + private static final float CORNER_GAP = 4.0F; + private static final float CORNER_MARGIN = 8.0F; + private static final float FOOTER_MARGIN = 4.0F; + private static final float FOOTER_HEIGHT = 9.0F; + private static final float FOOTER_GAP = 2.0F; + private static final float FOOTER_PAD = 2.0F; + private static final int MAX_EXTRA_COLUMNS = 3; + private static final acn[] METRICS_LADDER; + private static final Comparator ORDER = Comparator.comparingInt(acr::getPriority).thenComparingInt(acr::getOrder); + private static final Map VANILLA_STYLES = vanillaStyles(); + public static final aco INSTANCE = new aco(); + public static final float BRAND_LOGO_RATIO = 0.62F; + private static final float BRAND_CENTER = 0.5F; + private final List slots = new ArrayList<>(); + private final List primary = new ArrayList<>(); + private final List extras = new ArrayList<>(); + private final List mods = new ArrayList<>(); + private final List icons = new ArrayList<>(); + private final List corner = new ArrayList<>(); + private final List footer = new ArrayList<>(); + private final List concealed = new ArrayList<>(); + private final Map classified = Collections.synchronizedMap(new WeakHashMap<>()); + private final ct intro = ct.layout(ob.SLOW, 0.0F); + private Screen screen; + private int signature; + private boolean active; + private acn metrics; + private int extraColumns; + private float panelX; + private float panelY; + private float panelWidth; + private float panelHeight; + private float contentX; + private float contentWidth; + private float brandTop; + private float primaryTop; + private float primaryBottom; + private float extrasTop; + private float extrasBottom; + private float modsTop; + private float modsBottom; + private float iconsTop; + private float iconsBottom; + private float accountTop; + + private aco() { + this.metrics = METRICS_LADDER[0]; + this.extraColumns = 1; + this.panelWidth = 210.0F; + } + + public void update(Screen var1, int var2, int var3) { + int var4 = 0; + int var5 = -516154948; + + while (true) { + switch (var5) { + case -1452610482: + this.intro.jumpTo(0.0F); + var5 = -1341937478; + break; + case -1341937478: + var4 = signature(var1.children()); + if (var4 != this.signature) { + var5 = 1271859082; + } else { + var5 = -838773809; + } + break; + case -1034435917: + this.intro.animateTo(1.0F); + var5 = -1341937478; + break; + case -838773809: + this.place(var2, var3); + this.conceal(); + this.active = (boolean)(((1)) != 0); + return; + case -516154948: + default: + this.reveal(); + if (this.screen != var1) { + var5 = 1190789649; + } else { + var5 = 1925646007; + } + break; + case 1190789649: + this.screen = var1; + this.signature = 0; + this.slots.clear(); + this.intro.jumpTo(0.0F); + var5 = 1925646007; + break; + case 1271859082: + this.signature = var4; + this.rebuild(var1.children()); + var5 = -838773809; + break; + case 1925646007: + if (acc.holdsMenu()) { + var5 = -1452610482; + } else { + var5 = -1034435917; + } + } + } + } + + public void requestCursor(GuiGraphicsExtractor var1, int var2, int var3) { + int var4 = 0; + acr var5 = null; + int var6 = 1379264559; + + while (true) { + switch (var6) { + case -1620547687: + var1.requestCursor(CursorTypes.POINTING_HAND); + return; + case -526086929: + var4++; + var6 = 1049521076; + break; + case 82670243: + return; + case 410741949: + var5 = this.slots.get(var4); + if (var5.getSection().adopted()) { + var6 = 891856426; + } else { + var6 = -526086929; + } + break; + case 891856426: + if (var5.enabled()) { + var6 = 1271195488; + } else { + var6 = -526086929; + } + break; + case 1049521076: + if (var4 < this.slots.size()) { + var6 = 410741949; + } else { + var6 = 82670243; + } + break; + case 1271195488: + if (var5.contains(var2, var3)) { + var6 = -1620547687; + } else { + var6 = -526086929; + } + break; + case 1379264559: + default: + var4 = 0; + var6 = 1049521076; + } + } + } + + public void reveal() { + int var1 = 0; + int var2 = -1756312169; + + while (true) { + switch (var2) { + case -1756312169: + default: + var1 = 0; + var2 = -534144712; + break; + case -534144712: + if (var1 < this.concealed.size()) { + var2 = 1569474920; + } else { + var2 = 1789771956; + } + break; + case 1569474920: + this.concealed.get(var1).visible = (boolean)(((1)) != 0); + var1++; + var2 = -534144712; + break; + case 1789771956: + this.concealed.clear(); + return; + } + } + } + + public void forget(Screen var1) { + int var2 = -659269858; + + while (true) { + switch (var2) { + case -1592622790: + return; + case -970889722: + this.reveal(); + this.active = (boolean)(((0)) != 0); + this.screen = null; + this.signature = 0; + this.slots.clear(); + this.primary.clear(); + this.extras.clear(); + this.mods.clear(); + this.icons.clear(); + this.corner.clear(); + this.footer.clear(); + return; + case -659269858: + } + + if (this.screen != var1) { + var2 = -1592622790; + } else { + var2 = -970889722; + } + } + } + + public float introProgress() { + return this.intro.update(); + } + + public float brandLogoCenterX() { + return this.contentX + this.metrics.brand() * 0.5F; + } + + public float brandLogoCenterY() { + return this.brandTop + this.metrics.brand() * 0.5F; + } + + public float brandLogoSize() { + return this.metrics.brand() * 0.62F; + } + + public boolean matches(Screen var1) { + int var3 = 0; + int var2 = 508264322; + + while (true) { + switch (var2) { + case -1603090424: + return (boolean)((var3) != 0); + case -868052914: + var3 = 0; + var2 = -1603090424; + break; + case -842265651: + var3 = 1; + var2 = -1603090424; + break; + case 210424417: + if (this.screen != null) { + var2 = 2030798761; + } else { + var2 = -868052914; + } + break; + case 508264322: + default: + if (this.active) { + var2 = 210424417; + } else { + var2 = -868052914; + } + break; + case 2030798761: + if (this.screen == var1) { + var2 = -842265651; + } else { + var2 = -868052914; + } + } + } + } + + private void conceal() { + int var1 = 0; + acr var2 = null; + AbstractWidget var3 = null; + int var4 = -525428470; + + while (true) { + switch (var4) { + case -1646886803: + if (var1 < this.slots.size()) { + var4 = -924541890; + } else { + var4 = 396793546; + } + break; + case -924541890: + var2 = this.slots.get(var1); + if (!var2.getSection().concealed()) { + var4 = 560740579; + } else { + var4 = 835148599; + } + break; + case -525428470: + default: + var1 = 0; + var4 = -1646886803; + break; + case -370589484: + var1++; + var4 = -1646886803; + break; + case 396793546: + return; + case 560740579: + var4 = -370589484; + break; + case 683138256: + var3.visible = (boolean)(((0)) != 0); + this.concealed.add(var3); + var4 = -370589484; + break; + case 835148599: + var3 = var2.getWidget(); + if (var3.visible) { + var4 = 683138256; + } else { + var4 = -370589484; + } + } + } + } + + private static int signature(List var0) { + int var1 = 0; + int var2 = 0; + int var3 = -1012877712; + + while (true) { + switch (var3) { + case -2031073684: + var1 = var1 * ((-159839279 | 159839310) + (-159839279 & 159839310)) + System.identityHashCode(var0.get(var2)); + var2++; + var3 = 1820751434; + break; + case -1012877712: + default: + var1 = var0.size(); + var2 = 0; + var3 = 1820751434; + break; + case 739358276: + return var1; + case 1820751434: + if (var2 < var0.size()) { + var3 = -2031073684; + } else { + var3 = 739358276; + } + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private void rebuild(List var1) { + this.slots.clear(); + this.primary.clear(); + this.extras.clear(); + this.mods.clear(); + this.icons.clear(); + this.corner.clear(); + this.footer.clear(); + + for (int var2 = 0; var2 < var1.size(); var2++) { + if (var1.get(var2) instanceof AbstractWidget var3) { + acs var6 = this.resolveStyle(var3, var2); + acr var5 = new acr( + var3, + var6.section(), + var6.priority(), + var2, + var6.icon(), + var6.label(), + var6.selected(), + (boolean)((("M".equals(var6.icon()) && var6.section() == acq.ICONS + ? 1: (1746005123 | -1746005123) + (1746005123 & -1746005123)) + ) != 0)); + this.slots.add(var5); + switch (acm.$SwitchMap$evo$systems$client$screens$title$MainMenuSection[var6.section().ordinal()]) { + case 1: + this.primary.add(var5); + break; + case 2: + this.extras.add(var5); + break; + case 3: + this.mods.add(var5); + break; + case 4: + this.icons.add(var5); + break; + case 5: + this.corner.add(var5); + break; + case 6: + this.footer.add(var5); + } + } + } + + this.primary.sort(ORDER); + this.extras.sort(ORDER); + this.mods.sort(ORDER); + this.icons.sort(ORDER); + this.corner.sort(ORDER); + this.footer.sort(ORDER); + } + + private acs resolveStyle(AbstractWidget var1, int var2) { + acs var3 = null; + acs var4 = null; + acs var5 = null; + int var6 = 141054256; + + while (true) { + switch (var6) { + case -1547501767: + return var4; + case -1237079903: + return var3; + case 141054256: + default: + var3 = acj.styleOf(var1); + if (var3 != null) { + var6 = -1237079903; + } else { + var6 = 1240535470; + } + break; + case 1240535470: + var4 = this.classified.get(var1); + if (var4 != null) { + var6 = -1547501767; + } else { + var6 = 1750823083; + } + break; + case 1750823083: + var5 = classify(var1, var2); + this.classified.put(var1, var5); + return var5; + } + } + } + + private static acs classify(AbstractWidget var0, int var1) { + Component var2 = var0.getMessage(); + String var3 = translationKey(var2); + if (var3 != null) { + acs var4 = VANILLA_STYLES.get(var3); + if (var4 != null) { + return var4; + } + } + + if ("TW".equals(var2.getString())) { + return acs.of( + acq.ICONS, 40, "o" + ); + } + + int var5 = (1716098431 ^ -1716097431) + ((1716098431 & -1716097431) << 1) + var1; + return var0.getHeight() <= 12? acs.of(acq.FOOTER, var5, "s") + : acs.of(acq.MODS, var5, "K"); + } + + @Nullable + private static String translationKey(Component var0) { + TranslatableContents var1 = null; + ComponentContents var2 = null; + String var4 = null; + int var3 = 1744415169; + + while (true) { + switch (var3) { + case -1740594694: + return var4; + case 596716233: + var4 = null; + var3 = -1740594694; + break; + case 1526761774: + var1 = (TranslatableContents)var2; + var4 = var1.getKey(); + var3 = -1740594694; + break; + case 1744415169: + default: + var2 = var0.getContents(); + if (var2 instanceof TranslatableContents) { + var3 = 1526761774; + } else { + var3 = 596716233; + } + } + } + } + + private void place(int var1, int var2) { + this.panelWidth = Math.max(120.0F, Math.min(210.0F, var1 - 24.0F)); + float var3 = var2 - 28.0F; + this.metrics = METRICS_LADDER[METRICS_LADDER.length - (1)]; + this.extraColumns = 3; + acn[] var4 = METRICS_LADDER; + int var5 = var4.length; + + for (int var6 = 0; var6 < var5; var6++) { + acn var7 = var4[var6]; + int var8 = 0; + + for (int var9 = 1; + var9 <= 3; + var9++ + ) { + if (this.panelHeight(var7, var9) <= var3) { + this.metrics = var7; + this.extraColumns = var9; + var8 = 1; + break; + } + } + + if (var8 != 0) { + break; + } + } + + this.panelHeight = this.panelHeight(this.metrics, this.extraColumns); + this.panelX = Math.max(0.0F, (var1 - this.panelWidth) * 0.5F); + this.panelY = Math.max(14.0F, (var2 - this.panelHeight) / 2.0F); + this.contentX = this.panelX + this.metrics.pad(); + this.contentWidth = this.panelWidth - this.metrics.pad() * 2.0F; + float var10 = this.panelY + this.metrics.pad(); + this.brandTop = var10; + float var11 = var10 + (this.metrics.brand() + this.metrics.sectionGap()); + this.primaryTop = var11; + float var12 = stack( + this.primary, + this.contentX, + var11 + this.metrics.caption(), + this.contentWidth, + 1, + this.metrics.row(), + this.metrics.rowGap() + ); + this.primaryBottom = var12; + if (!this.extras.isEmpty()) { + float var13 = var12 + this.metrics.sectionGap(); + this.extrasTop = var13; + var12 = stack( + this.extras, this.contentX, var13 + this.metrics.caption(), this.contentWidth, this.extraColumns, this.metrics.row(), this.metrics.rowGap() + ); + this.extrasBottom = var12; + } else { + this.extrasTop = var12; + this.extrasBottom = var12; + } + + if (!this.mods.isEmpty()) { + float var14 = var12 + this.metrics.sectionGap(); + this.modsTop = var14; + var12 = stack( + this.mods, this.contentX, var14 + this.metrics.caption(), this.contentWidth, this.extraColumns, this.metrics.row(), this.metrics.rowGap() + ); + this.modsBottom = var12; + } else { + this.modsTop = var12; + this.modsBottom = var12; + } + + if (!this.icons.isEmpty()) { + float var15 = var12 + this.metrics.sectionGap(); + this.iconsTop = var15; + var12 = iconStack(this.icons, this.contentX, var15, this.contentWidth, this.metrics.icon(), this.metrics.iconGap()); + this.iconsBottom = var12; + } else { + this.iconsTop = var12; + this.iconsBottom = var12; + } + + float var16 = var12 + this.metrics.sectionGap(); + this.accountTop = var16; + this.placeCorner(var1); + this.placeFooter(var1, var2); + this.collapseHidden(); + } + + private void placeCorner(int var1) { + float var2 = 0.0F; + int var3 = 0; + int var4 = -561462805; + + while (true) { + switch (var4) { + case -2008496581: + return; + case -1941265042: + this.corner.get(var3).place(var2, 8.0F, 16.0F, 16.0F); + var2 -= 20.0F; + var3--; + var4 = 1168932735; + break; + case -561462805: + default: + var2 = var1 - 8.0F - 16.0F; + var3 = this.corner.size() - (1); + var4 = 1168932735; + break; + case 1168932735: + if (var3 >= 0) { + var4 = -1941265042; + } else { + var4 = -2008496581; + } + } + } + } + + private void placeFooter(int var1, int var2) { + float var3 = 0.0F; + int var4 = 0; + acr var5 = null; + float var6 = 0.0F; + int var7 = 811948314; + + while (true) { + switch (var7) { + case -310736202: + if (var4 >= 0) { + var7 = 2001932772; + } else { + var7 = 1983317831; + } + break; + case 811948314: + default: + var3 = var2 - 4.0F - 9.0F; + var4 = this.footer.size() - (1); + var7 = -310736202; + break; + case 1983317831: + return; + case 2001932772: + var5 = this.footer.get(var4); + var6 = asp.width(oe.MICRO, var5.text()) + 4.0F; + var5.place(var1 - 4.0F - var6, var3, var6, 9.0F); + var3 -= 11.0F; + var4--; + var7 = -310736202; + } + } + } + + private void collapseHidden() { + int var1 = 0; + acr var2 = null; + int var3 = 500036063; + + while (true) { + switch (var3) { + case -1625045958: + var2.collapse(); + var3 = 708298099; + break; + case -328653197: + return; + case 500036063: + default: + var1 = 0; + var3 = 696562060; + break; + case 696562060: + if (var1 < this.slots.size()) { + var3 = 1309526443; + } else { + var3 = -328653197; + } + break; + case 708298099: + var1++; + var3 = 696562060; + break; + case 1309526443: + var2 = this.slots.get(var1); + if (var2.getSection() == acq.HIDDEN) { + var3 = -1625045958; + } else { + var3 = 708298099; + } + } + } + } + + private float panelHeight(acn var1, int var2) { + float var3 = 0.0F; + int var4 = -923771706; + + while (true) { + switch (var4) { + case -1851611192: + var3 += var1.sectionGap() + + stackHeight(this.icons.size(), iconsPerLine(this.contentWidthOf(var1), var1.icon(), var1.iconGap()), var1.icon(), var1.iconGap()); + var4 = 569585902; + break; + case -923771706: + default: + var3 = var1.pad() * 2.0F + var1.brand() + var1.sectionGap(); + var3 += var1.caption() + stackHeight(this.primary.size(), 1, var1.row(), var1.rowGap()); + if (!this.extras.isEmpty()) { + var4 = 1993150972; + } else { + var4 = -275144404; + } + break; + case -420242365: + if (!this.icons.isEmpty()) { + var4 = -1851611192; + } else { + var4 = 569585902; + } + break; + case -275144404: + if (!this.mods.isEmpty()) { + var4 = 1757272405; + } else { + var4 = -420242365; + } + break; + case 569585902: + return var3 + var1.sectionGap() + var1.account(); + case 1757272405: + var3 += var1.sectionGap() + var1.caption() + stackHeight(this.mods.size(), var2, var1.row(), var1.rowGap()); + var4 = -420242365; + break; + case 1993150972: + var3 += var1.sectionGap() + var1.caption() + stackHeight(this.extras.size(), var2, var1.row(), var1.rowGap()); + var4 = -275144404; + } + } + } + + private float contentWidthOf(acn var1) { + return this.panelWidth - var1.pad() * 2.0F; + } + + private static int iconsPerLine(float var0, float var1, float var2) { + return Math.max(1, (int)((var0 + var2) / (var1 + var2))); + } + + private static float stackHeight(int var0, int var1, float var2, float var3) { + int var4 = 0; + int var5 = -1092029924; + + while (true) { + switch (var5) { + case -1708441441: + return 0.0F; + case -1092029924: + default: + if (var0 <= 0) { + var5 = -1708441441; + } else { + var5 = 1044814492; + } + break; + case 1044814492: + var4 = ceilDiv(var0, var1); + return var4 * var2 + (var4 - ((633534505 | -633534504) + (633534505 & -633534504))) * var3; + } + } + } + + private static float stack(List var0, float var1, float var2, float var3, int var4, float var5, float var6) { + float var7 = 0.0F; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 1033877639; + + while (true) { + switch (var11) { + case -1334790242: + return var2; + case -1111399612: + if (var8 < var0.size()) { + var11 = 1303239764; + } else { + var11 = 314494072; + } + break; + case 314494072: + return var2 + stackHeight(var0.size(), var4, var5, var6); + case 832702216: + var7 = (var3 - var6 * (var4 - ((281035366 ^ -281035365) + ((281035366 & -281035365) << 1)))) / var4; + var8 = 0; + var11 = -1111399612; + break; + case 1033877639: + default: + if (var0.isEmpty()) { + var11 = -1334790242; + } else { + var11 = 832702216; + } + break; + case 1303239764: + var9 = var8 / var4; + var10 = var8 % var4; + ((acr)var0.get(var8)).place(var1 + var10 * (var7 + var6), var2 + var9 * (var5 + var6), var7, var5); + var8++; + var11 = -1111399612; + } + } + } + + private static float iconStack(List var0, float var1, float var2, float var3, float var4, float var5) { + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + float var12 = 0.0F; + float var13 = 0.0F; + int var15 = 0; + int var14 = -1402293755; + + while (true) { + switch (var14) { + case -1402293755: + default: + if (var0.isEmpty()) { + var14 = -105704741; + } else { + var14 = 1231062279; + } + break; + case -1365656714: + return var2 + stackHeight(var0.size(), var6, var4, var5); + case -1163083985: + var9 = var8 / var6; + var10 = var8 % var6; + if (var9 == var7 - ((-1157750768 | 1157750769) + (-1157750768 & 1157750769))) { + var14 = 646994926; + } else { + var14 = -578865891; + } + break; + case -578865891: + var15 = var6; + var14 = 684958994; + break; + case -562595165: + if (var8 < var0.size()) { + var14 = -1163083985; + } else { + var14 = -1365656714; + } + break; + case -105704741: + return var2; + case 646994926: + var15 = var0.size() - var9 * var6; + var14 = 684958994; + break; + case 684958994: + var11 = var15; + var12 = var11 * var4 + (var11 - ((-1964475402 | 1964475403) + (-1964475402 & 1964475403))) * var5; + var13 = var1 + (var3 - var12) * 0.5F; + ((acr)var0.get(var8)).place(var13 + var10 * (var4 + var5), var2 + var9 * (var4 + var5), var4, var4); + var8++; + var14 = -562595165; + break; + case 1231062279: + var6 = iconsPerLine(var3, var4, var5); + var7 = ceilDiv(var0.size(), var6); + var8 = 0; + var14 = -562595165; + } + } + } + + private static int ceilDiv(int var0, int var1) { + return (var0 + var1 - ((-2085169185 | 2085169186) + (-2085169185 & 2085169186))) / var1; + } + + private static Map vanillaStyles() { + HashMap var0 = new HashMap(); + var0.put( + "menu.singleplayer", + acs.of(acq.PRIMARY, 0, "b") + ); + var0.put( + "menu.playdemo", + acs.of(acq.PRIMARY, 5, "b") + ); + var0.put( + "menu.multiplayer", + acs.of(acq.PRIMARY, 10, "p") + ); + var0.put( + "menu.resetdemo", + acs.of( + acq.PRIMARY, 15, "E" + ) + ); + var0.put( + "menu.online", + acs.of( + acq.HIDDEN, 20, "H" + ) + ); + var0.put( + "menu.options", + acs.of(acq.ICONS, 0, "F") + ); + var0.put( + "gui.friends.open", + acs.of(acq.ICONS, 10, "u") + ); + var0.put( + "options.language", + acs.of(acq.ICONS, 20, "4") + ); + var0.put( + "options.accessibility", + acs.of(acq.ICONS, 30, "P") + ); + var0.put( + "accessibility.onboarding.accessibility.button", + acs.of(acq.ICONS, 30, "P") + ); + var0.put( + "menu.quit", + acs.of(acq.ICONS, 100, "M") + ); + var0.put( + "title.credits", + acs.of(acq.FOOTER, 0, "s") + ); + return Map.copyOf(var0); + } + + public List getSlots() { + return this.slots; + } + + public List getPrimary() { + return this.primary; + } + + public List getExtras() { + return this.extras; + } + + public List getMods() { + return this.mods; + } + + public List getIcons() { + return this.icons; + } + + public List getCorner() { + return this.corner; + } + + public List getFooter() { + return this.footer; + } + + public List getConcealed() { + return this.concealed; + } + + public Map getClassified() { + return this.classified; + } + + public ct getIntro() { + return this.intro; + } + + public Screen getScreen() { + return this.screen; + } + + public int getSignature() { + return this.signature; + } + + public boolean isActive() { + return this.active; + } + + public acn getMetrics() { + return this.metrics; + } + + public int getExtraColumns() { + return this.extraColumns; + } + + public float getPanelX() { + return this.panelX; + } + + public float getPanelY() { + return this.panelY; + } + + public float getPanelWidth() { + return this.panelWidth; + } + + public float getPanelHeight() { + return this.panelHeight; + } + + public float getContentX() { + return this.contentX; + } + + public float getContentWidth() { + return this.contentWidth; + } + + public float getBrandTop() { + return this.brandTop; + } + + public float getPrimaryTop() { + return this.primaryTop; + } + + public float getPrimaryBottom() { + return this.primaryBottom; + } + + public float getExtrasTop() { + return this.extrasTop; + } + + public float getExtrasBottom() { + return this.extrasBottom; + } + + public float getModsTop() { + return this.modsTop; + } + + public float getModsBottom() { + return this.modsBottom; + } + + public float getIconsTop() { + return this.iconsTop; + } + + public float getIconsBottom() { + return this.iconsBottom; + } + + public float getAccountTop() { + return this.accountTop; + } + + static { + acn[] var10000 = new acn[3]; + var10000[0] = new acn(12.0F, 30.0F, 22.0F, 3.0F, 20.0F, 4.0F, 10.0F, 26.0F, 9.0F); + var10000[1] = new acn(9.0F, 24.0F, 18.0F, 2.0F, 17.0F, 3.0F, 7.0F, 21.0F, 8.0F); + var10000[2] = new acn(6.0F, 18.0F, 14.0F, 2.0F, 13.0F, 3.0F, 5.0F, 16.0F, 0.0F); + METRICS_LADDER = var10000; + } +} diff --git a/src/main/java/defpackage/acp.java b/src/main/java/defpackage/acp.java new file mode 100644 index 0000000..28924e3 --- /dev/null +++ b/src/main/java/defpackage/acp.java @@ -0,0 +1,563 @@ +package defpackage; + +import java.util.List; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; + +public final class acp implements aqg { + private static final Identifier LOGO = bz.id("icons/logo.png"); + private static final Identifier FALLBACK_AVATAR = bz.id("icons/avatar.png"); + private static final asu DANGER = new asu( + 232, + 84, + (-724114773 | 724114857) + (-724114773 & 724114857) + ); + private static final String CAPTION_PRIMARY = "PLAY"; + private static final String CAPTION_EXTRAS = "CLIENT"; + private static final String CAPTION_MODS = "MODS"; + private static final float SCRIM_ALPHA = 0.3F; + private static final float BAND_ALPHA = 0.55F; + private static final float BAND_HEIGHT_RATIO = 0.22F; + private static final float WINDOW_FILL_BOOST = 4.0F; + private static final float PANEL_SLIDE = 14.0F; + private static final float PANEL_BORDER_ALPHA = 0.9F; + private static final float PANEL_HALO_SOFTNESS = 26.0F; + private static final float PANEL_HALO_ALPHA = 0.2F; + private static final float PANEL_GLOSS_ALPHA = 0.22F; + private static final float BRAND_TILE_ALPHA = 0.55F; + private static final float BRAND_GAP = 7.0F; + private static final float BRAND_LINE_GAP = 1.5F; + private static final float CAPTION_INSET = 3.0F; + private static final float CAPTION_ALPHA = 0.55F; + private static final float CAPTION_RULE_GAP = 5.0F; + private static final float CAPTION_RULE_ALPHA = 0.5F; + private static final float ROW_PAD = 8.0F; + private static final float ROW_ICON_COLUMN = 15.0F; + private static final float ROW_TRAIL = 10.0F; + private static final float ROW_ALPHA = 0.5F; + private static final float ROW_HOVER_ALPHA = 0.42F; + private static final float ROW_TINT_ALPHA = 0.26F; + private static final float ROW_SHIFT = 1.2F; + private static final float LABEL_REST_ALPHA = 0.78F; + private static final float ACCENT_INSET = 2.0F; + private static final float ACCENT_WIDTH = 2.5F; + private static final float ACCENT_HEIGHT_RATIO = 0.5F; + private static final float ICON_GLYPH_SIZE = 7.0F; + private static final float BADGE_SIZE = 10.0F; + private static final float BADGE_DISABLED_ALPHA = 0.4F; + private static final float CHEVRON_SIZE = 5.0F; + private static final float ICON_BUTTON_HOVER_SCALE = 0.05F; + private static final float SELECTED_FILL_ALPHA = 0.35F; + private static final float AVATAR_INSET = 2.5F; + private static final float AVATAR_TEXT_GAP = 6.0F; + private static final float AVATAR_RING_ALPHA = 0.8F; + private static final float FOOTER_TEXT_ALPHA = 0.7F; + private static final float VERSION_MARGIN = 4.0F; + private static final float DIVIDER_INSET = 4.0F; + private static final float HOVER_VISIBLE = 0.001F; + private static final float TOOLTIP_VISIBLE = 0.5F; + private static final float FOCUS_ALPHA = 0.85F; + private static String versionText; + + private acp() { + } + + public static void render() { + Screen var0 = mc.gui.screen(); + aco var1 = aco.INSTANCE; + if (var0 != null && var1.matches(var0)) { + int var2 = !atf.isRecording() ? 1: 0; + atb.beginGui(); + if (var2 != 0) { + atf.begin(); + } + + try { + draw(var1); + } finally { + if (var2 != 0) { + atf.end(); + } + + atb.endGui(); + } + } + } + + private static void draw(aco var0) { + mv var1 = null; + float var2 = 0.0F; + int var3 = 0; + int var4 = 0; + float var5 = 0.0F; + float var6 = 0.0F; + asq var7 = null; + float var8 = 0.0F; + int var9 = -679274056; + + while (true) { + switch (var9) { + case -1679774931: + if (!var0.getMods().isEmpty()) { + var9 = -336553012; + } else { + var9 = 69534689; + } + break; + case -679274056: + default: + var1 = bz.getInstance().getThemeManager().getCurrentTheme(); + var2 = Mth.clamp(var0.introProgress(), 0.0F, 1.0F); + var3 = mc.getWindow().getGuiScaledWidth(); + var4 = mc.getWindow().getGuiScaledHeight(); + var5 = scaledMouseX(var3); + var6 = scaledMouseY(var4); + var7 = asq.of(Math.round(var5), Math.round(var6), 0.0F); + ass.beginFrame(); + drawBackdrop(var7, var1, var3, var4); + var8 = (1.0F - var2) * 14.0F; + var7.pushMatrix(); + var7.pose().translate(0.0F, var8); + drawPanel(var7, var0, var1, var2); + gt.beginBatch(); + drawBrand(var7, var0, var1, var2); + drawCaption(var7, var0, var1, "PLAY", var0.getPrimaryTop(), var2); + drawRows(var7, var0.getPrimary(), var1, var2, var5, var6 - var8); + if (!var0.getExtras().isEmpty()) { + var9 = 1188657991; + } else { + var9 = -1679774931; + } + break; + case -336553012: + drawCaption(var7, var0, var1, "MODS", var0.getModsTop(), var2); + drawRows(var7, var0.getMods(), var1, var2, var5, var6 - var8); + var9 = 69534689; + break; + case 69534689: + drawIconButtons(var7, var0, var1, var2, var5, var6 - var8); + drawAccount(var7, var0, var1, var2); + gt.endBatch(); + var7.popMatrix(); + gt.beginBatch(); + drawCornerButtons(var7, var0, var1, var2, var5, var6); + drawFooter(var7, var0, var1, var2, var5, var6); + drawVersion(var7, var1, var2, var4); + gt.endBatch(); + ass.render(var7, var2, 0.0F, 0.0F, var3, var4); + return; + case 1188657991: + drawCaption(var7, var0, var1, "CLIENT", var0.getExtrasTop(), var2); + drawRows(var7, var0.getExtras(), var1, var2, var5, var6 - var8); + var9 = -1679774931; + } + } + } + + private static void drawBackdrop(asq var0, mv var1, int var2, int var3) { + asu var4 = null; + asu var5 = null; + asu var6 = null; + float var7 = 0.0F; + int var8 = 1930055468; + + while (true) { + switch (var8) { + case -773585464: + var0.drawRect(0.0F, 0.0F, var2, var3, var1.getBackgroundColor()); + var8 = 1824831894; + break; + case 1824831894: + var4 = var1.getBackgroundColor(); + var0.drawRect(0.0F, 0.0F, var2, var3, var4.mulAlpha(0.3F)); + var5 = var4.mulAlpha(0.0F); + var6 = var4.mulAlpha(0.55F); + var7 = var3 * 0.22F; + var0.drawRoundedRect(0.0F, 0.0F, var2, var7, asj.all(oc.HAIRLINE), ary.of(var6, var5, var6, var5)); + var0.drawRoundedRect(0.0F, var3 - var7, var2, var7, asj.all(oc.HAIRLINE), ary.of(var5, var6, var5, var6)); + return; + case 1930055468: + default: + if (!aqr.renderImmediate(var0.pose(), var2, var3)) { + var8 = -773585464; + } else { + var8 = 1824831894; + } + } + } + } + + private static void drawPanel(asq var0, aco var1, mv var2, float var3) { + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + arq var8 = null; + float var9 = 0.0F; + int var10 = -616655793; + + while (true) { + switch (var10) { + case -835568187: + drawDivider(var0, var1, var1.getIconsTop(), var3 * var9); + var10 = -645660173; + break; + case -645660173: + drawDivider(var0, var1, var1.getAccountTop(), var3 * var9); + return; + case -616655793: + default: + var4 = var1.getPanelX(); + var5 = var1.getPanelY(); + var6 = var1.getPanelWidth(); + var7 = var1.getPanelHeight(); + var8 = asj.all(oc.WINDOW); + atb.drawShadow(var0.pose(), var4, var5, var6, var7, 26.0F, var8, var2.getColor().mulAlpha(var3 * 0.2F)); + ast.shadow(var0, var4, var5, var6, var7, var8, nz.OVERLAY, var3); + var0.drawSurface(aso.WINDOW, var4, var5, var6, var7, var8, var2.getBackgroundColor().mulAlpha(var3 * 4.0F)); + arx.invalidateScene(); + atb.drawAnimatedGloss(var0.pose(), var4, var5, var6, var7, var8, var3 * 0.22F); + atb.drawRoundedBorder(var0.pose(), var4, var5, var6, var7, pk.borderRim(), var8, var2.getColor().mulAlpha(var3 * 0.9F)); + var9 = arx.classicFade(); + if (!var1.getIcons().isEmpty()) { + var10 = -835568187; + } else { + var10 = -645660173; + } + } + } + } + + private static void drawDivider(asq var0, aco var1, float var2, float var3) { + float var4 = var1.getMetrics().sectionGap(); + ast.divider(var0, var1.getContentX() + 4.0F, var2 - var4 * 0.5F, var1.getContentWidth() - 8.0F, var3); + } + + private static void drawCaption(asq var0, aco var1, mv var2, String var3, float var4, float var5) { + float var6 = 0.0F; + ge var7 = null; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = 87466225; + + while (true) { + switch (var12) { + case -1211075112: + var7 = asp.font(oe.MICRO); + var8 = var1.getContentX() + 3.0F; + var9 = var4 + (var6 - var7.height()) * 0.5F; + var0.drawText(var7, var3, var8, var9, var2.getGrayLight().mulAlpha(var5 * 0.55F)); + var10 = var8 + var7.width(var3) + 5.0F; + var11 = var1.getContentX() + var1.getContentWidth() - 3.0F - var10; + if (var11 > 0.0F) { + var12 = 2003574465; + } else { + var12 = 2057870535; + } + break; + case 87466225: + default: + var6 = var1.getMetrics().caption(); + if (var6 <= 0.0F) { + var12 = 1622652230; + } else { + var12 = -1211075112; + } + break; + case 1622652230: + return; + case 2003574465: + ast.divider(var0, var10, var4 + var6 * 0.5F, var11, var5 * 0.5F * arx.classicFade()); + var12 = 2057870535; + break; + case 2057870535: + return; + } + } + } + + private static void drawBrand(asq var0, aco var1, mv var2, float var3) { + float var4 = var1.getMetrics().brand(); + float var5 = var1.getContentX(); + float var6 = var1.getBrandTop(); + arq var7 = asj.all(oc.CARD); + var0.drawSurface(aso.CONTROL, var5, var6, var4, var4, var7, var2.getForegroundColor().mulAlpha(var3 * 0.55F)); + atb.drawRoundedBorder(var0.pose(), var5, var6, var4, var4, pk.borderHairline(), var7, var2.getColor().mulAlpha(var3 * arx.classicFade())); + float var8 = var1.brandLogoSize(); + atb.drawRoundedTexture( + var0.pose(), LOGO, var5 + (var4 - var8) * 0.5F, var6 + (var4 - var8) * 0.5F, var8, var8, asj.all(oc.HAIRLINE), asu.WHITE.mulAlpha(var3) + ); + ge var9 = asp.font(oe.TITLE); + ge var10 = asp.font(oe.MICRO); + float var11 = var5 + var4 + 7.0F; + float var12 = var9.height() + 1.5F + var10.height(); + float var13 = var6 + (var4 - var12) * 0.5F; + var0.drawText(var9, "EvoVisuals", var11, var13, var2.getWhite().mulAlpha(var3)); + var0.drawText(var10, version(), var11, var13 + var9.height() + 1.5F, var2.getGrayLight().mulAlpha(var3)); + } + + private static String version() { + String var0 = null; + int var1 = 4685008; + + while (true) { + switch (var1) { + case -1132469963: + return var0; + case -105719059: + var0 = cb.friendlyString(); + versionText = var0; + var1 = -1132469963; + break; + case 4685008: + default: + var0 = versionText; + if (var0 == null) { + var1 = -105719059; + } else { + var1 = -1132469963; + } + } + } + } + + private static void drawRows(asq var0, List var1, mv var2, float var3, float var4, float var5) { + int var6 = 0; + int var7 = -221957300; + + while (true) { + switch (var7) { + case -1525139403: + drawRow(var0, (acr)var1.get(var6), var2, var3, var4, var5); + var6++; + var7 = 1545835708; + break; + case -1281054576: + return; + case -221957300: + default: + var6 = 0; + var7 = 1545835708; + break; + case 1545835708: + if (var6 < var1.size()) { + var7 = -1525139403; + } else { + var7 = -1281054576; + } + } + } + } + + private static void drawRow(asq var0, acr var1, mv var2, float var3, float var4, float var5) { + boolean var6 = var1.enabled(); + int var7 = var6 && var1.contains(var4, var5) + ? 1: 0; + float var8 = var1.getHover().update(var7 != 0 ? 1.0F : 0.0F); + float var9 = var1.getX(); + float var10 = var1.getY(); + float var11 = var1.getWidth(); + float var12 = var1.getHeight(); + arq var13 = asj.all(oc.ROW); + asa.plateRow(var0, var9, var10, var11, var12, asa.plateColor(var2), var3, var8); + var0.drawSurface(aso.ROW, var9, var10, var11, var12, var13, var2.getForegroundColor().mulAlpha(var3 * (0.5F + 0.42F * var8))); + if (var8 > 0.001F) { + asu var14 = var2.getColor().mulAlpha(var3 * 0.26F * var8); + asu var15 = var14.mulAlpha(0.0F); + var0.drawRoundedRect(var9, var10, var11, var12, var13, ary.of(var14, var14, var15, var15)); + } + + float var25 = Math.max(var8, var1.focused() ? 0.85F : 0.0F); + if (var25 > 0.001F) { + atb.drawRoundedBorder(var0.pose(), var9, var10, var11, var12, pk.borderHairline(), var13, var2.getColor().mulAlpha(var3 * var25)); + } + + if (var8 > 0.001F) { + float var26 = var12 * 0.5F * var8; + var0.drawSurface(aso.ACCENT, var9 + 2.0F, var10 + (var12 - var26) * 0.5F, 2.5F, var26, asj.all(oc.CHIP), var2.getColor().mulAlpha(var3)); + } + + asu var27 = var6 ? asa.liftText(var2.getColor(), var2, var8).mulAlpha(var3) : var2.getGray().mulAlpha(var3); + asu var16 = var6 ? var2.getWhite().mulAlpha(var3 * (0.78F + 0.22000003F * var8)) : var2.getGray().mulAlpha(var3); + ge var17 = gl.ICONS.getFont(7.0F); + ge var18 = asp.font(oe.BODY); + float var19 = 1.2F * var8; + float var20 = var9 + 8.0F + var19; + Identifier var21 = var1.badge(); + if (var21 == null) { + var0.drawText(var17, var1.getIcon(), var20, var10 + (var12 - var17.height()) * 0.5F, var27); + } else { + atb.drawRoundedTexture( + var0.pose(), var21, var20, var10 + (var12 - 10.0F) * 0.5F, 10.0F, 10.0F, asj.all(oc.HAIRLINE), asu.WHITE.mulAlpha(var3 * (var6 ? 1.0F : 0.4F)) + ); + } + + float var22 = var9 + 8.0F + 15.0F + var19; + float var23 = var9 + var11 - 10.0F - var22; + var0.drawScrollingText(var18, var1.text(), var22, var10 + (var12 - var18.height()) * 0.5F, Math.max(0.0F, var23), var16); + if (var8 > 0.001F && var6) { + ge var24 = gl.ICONS.getFont(5.0F); + var0.drawText( + var24, + "A", + var9 + var11 - 8.0F - var24.width("A") + var19, + var10 + (var12 - var24.height()) * 0.5F, + var2.getColor().mulAlpha(var3 * var8) + ); + } + } + + private static void drawIconButtons(asq var0, aco var1, mv var2, float var3, float var4, float var5) { + List var6 = null; + int var7 = 0; + int var8 = 2064324937; + + while (true) { + switch (var8) { + case -1072381827: + if (var7 < var6.size()) { + var8 = -778599076; + } else { + var8 = -399884152; + } + break; + case -778599076: + drawIconButton(var0, (acr)var6.get(var7), var2, var3, var4, var5, asr.ABOVE); + var7++; + var8 = -1072381827; + break; + case -399884152: + return; + case 2064324937: + default: + var6 = var1.getIcons(); + var7 = 0; + var8 = -1072381827; + } + } + } + + private static void drawCornerButtons(asq var0, aco var1, mv var2, float var3, float var4, float var5) { + List var6 = null; + int var7 = 0; + int var8 = 888032137; + + while (true) { + switch (var8) { + case -1384256534: + if (var7 < var6.size()) { + var8 = 119847632; + } else { + var8 = 2110664161; + } + break; + case 119847632: + drawIconButton(var0, (acr)var6.get(var7), var2, var3, var4, var5, asr.BELOW); + var7++; + var8 = -1384256534; + break; + case 888032137: + default: + var6 = var1.getCorner(); + var7 = 0; + var8 = -1384256534; + break; + case 2110664161: + return; + } + } + } + + private static void drawIconButton(asq var0, acr var1, mv var2, float var3, float var4, float var5, asr var6) { + boolean var7 = var1.enabled(); + float var8 = var1.getWidth(); + int var9 = var7 && var1.contains(var4, var5) + ? 1: 0; + float var10 = var1.getHover().update(var9 != 0 ? 1.0F : 0.0F); + float var11 = var1.getX(); + float var12 = var1.getY(); + arq var13 = asj.all(oc.CONTROL); + asu var14 = var1.isDanger() ? DANGER : var2.getColor(); + asa.plateControl(var0, var11, var12, var8, var8, asa.plateColor(var2), var3, var10); + boolean var15 = asa.push(var0, var11, var12, var8, var8, var10, 0.05F); + boolean var16 = var1.selected(); + var0.drawSurface(aso.CONTROL, var11, var12, var8, var8, var13, var2.getForegroundColor().mulAlpha(var3 * (0.5F + 0.42F * var10))); + if (var16) { + var0.drawSurface(aso.ACCENT, var11, var12, var8, var8, var13, var14.mulAlpha(var3 * 0.35F)); + } + + float var17 = Math.max(var10, !var1.focused() && !var16 ? 0.0F : 0.85F); + atb.drawRoundedBorder( + var0.pose(), + var11, + var12, + var8, + var8, + pk.borderHairline(), + var13, + (var17 > 0.001F ? var14 : var2.getForegroundStroke()).mulAlpha(var3 * Math.max(var17, arx.classicFade())) + ); + ge var18 = gl.ICONS.getFont(7.0F); + asu var19 = !var7 ? var2.getGray().mulAlpha(var3) : (var16 ? var2.getWhite().mulAlpha(var3) : asa.liftText(var14, var2, var10).mulAlpha(var3)); + var0.drawText(var18, var1.getIcon(), var11 + (var8 - var18.width(var1.getIcon())) * 0.5F, var12 + (var8 - var18.height()) * 0.5F, var19); + asa.pop(var0, var15); + if (var10 > 0.5F) { + ass.tooltip(var1, var1.text(), var11, var12, var8, var8, var6, (boolean)((((1097256760 ^ -1097256760) + ((1097256760 & -1097256760) << 1))) != 0)); + } + } + + private static void drawAccount(asq var0, aco var1, mv var2, float var3) { + float var4 = var1.getMetrics().account(); + float var5 = var1.getContentX(); + float var6 = var1.getAccountTop(); + float var7 = var1.getContentWidth(); + arq var8 = asj.all(oc.CARD); + var0.drawSurface(aso.CARD, var5, var6, var7, var4, var8, var2.getForegroundColor().mulAlpha(var3 * 0.5F)); + atb.drawRoundedBorder(var0.pose(), var5, var6, var7, var4, pk.borderHairline(), var8, var2.getForegroundStroke().mulAlpha(var3 * arx.classicFade())); + float var9 = var4 - 5.0F; + arq var10 = asj.all(oc.INNER); + Identifier var11 = cp.avatarTexture(); + atb.drawRoundedTexture(var0.pose(), var11 == null ? FALLBACK_AVATAR : var11, var5 + 2.5F, var6 + 2.5F, var9, var9, var10, asu.WHITE.mulAlpha(var3)); + atb.drawRoundedBorder(var0.pose(), var5 + 2.5F, var6 + 2.5F, var9, var9, pk.borderHairline(), var10, var2.getColor().mulAlpha(var3 * 0.8F)); + ge var12 = asp.font(oe.LABEL_STRONG); + ge var13 = asp.font(oe.MICRO); + float var14 = var5 + 2.5F + var9 + 6.0F; + float var15 = Math.max(0.0F, var5 + var7 - 8.0F - var14); + float var16 = var12.height() + 1.5F + var13.height(); + float var17 = var6 + (var4 - var16) * 0.5F; + var0.drawScrollingText(var12, f.getUsername(), var14, var17, var15, var2.getWhite().mulAlpha(var3)); + var0.drawScrollingText(var13, f.getRole(), var14, var17 + var12.height() + 1.5F, var15, var2.getGrayLight().mulAlpha(var3)); + } + + private static void drawFooter(asq var0, aco var1, mv var2, float var3, float var4, float var5) { + List var6 = var1.getFooter(); + ge var7 = asp.font(oe.MICRO); + + for (int var8 = 0; var8 < var6.size(); var8++) { + acr var9 = (acr)var6.get(var8); + int var10 = var9.enabled() && var9.contains(var4, var5) + ? 1: 0; + float var11 = var9.getHover().update(var10 != 0 ? 1.0F : 0.0F); + asu var12 = asa.liftText(var2.getGrayLight(), var2, var11).mulAlpha(var3 * 0.7F); + var0.drawText( + var7, var9.text(), var9.getX() + (var9.getWidth() - var7.width(var9.text())) * 0.5F, var9.getY() + (var9.getHeight() - var7.height()) * 0.5F, var12 + ); + } + } + + private static void drawVersion(asq var0, mv var1, float var2, int var3) { + ge var4 = asp.font(oe.MICRO); + var0.drawText(var4, cb.label(), 4.0F, var3 - 4.0F - var4.height(), var1.getGrayLight().mulAlpha(var2 * 0.7F)); + } + + private static float scaledMouseX(int var0) { + return (float)(mc.mouseHandler.xpos() * var0 / mc.getWindow().getScreenWidth()); + } + + private static float scaledMouseY(int var0) { + return (float)(mc.mouseHandler.ypos() * var0 / mc.getWindow().getScreenHeight()); + } +} diff --git a/src/main/java/defpackage/acq.java b/src/main/java/defpackage/acq.java new file mode 100644 index 0000000..2141212 --- /dev/null +++ b/src/main/java/defpackage/acq.java @@ -0,0 +1,74 @@ +package defpackage; + +public enum acq { + PRIMARY, + EXTRAS, + MODS, + ICONS, + CORNER, + FOOTER, + NATIVE, + HIDDEN; + + public boolean adopted() { + int var2 = 0; + int var1 = -1261830190; + + while (true) { + switch (var1) { + case -2010505899: + var2 = 1; + var1 = -1920734608; + break; + case -1920734608: + return (boolean)((var2) != 0); + case -1261830190: + default: + if (this != NATIVE) { + var1 = 525381683; + } else { + var1 = 626775821; + } + break; + case 525381683: + if (this != HIDDEN) { + var1 = -2010505899; + } else { + var1 = 626775821; + } + break; + case 626775821: + var2 = 0; + var1 = -1920734608; + } + } + } + + public boolean concealed() { + int var2 = 0; + int var1 = 1817449569; + + while (true) { + switch (var1) { + case 741828715: + var2 = 0; + var1 = 1967821370; + break; + case 1751281625: + var2 = 1; + var1 = 1967821370; + break; + case 1817449569: + default: + if (this != NATIVE) { + var1 = 1751281625; + } else { + var1 = 741828715; + } + break; + case 1967821370: + return (boolean)((var2) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/acr.java b/src/main/java/defpackage/acr.java new file mode 100644 index 0000000..9ad8624 --- /dev/null +++ b/src/main/java/defpackage/acr.java @@ -0,0 +1,297 @@ +package defpackage; + +import java.util.function.BooleanSupplier; +import java.util.function.Supplier; +import net.minecraft.client.gui.components.AbstractWidget; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; +import org.jetbrains.annotations.Nullable; + +public final class acr { + private final AbstractWidget widget; + private final acq section; + private final int priority; + private final int order; + private final String icon; + private final Supplier label; + private final BooleanSupplier selection; + private final boolean danger; + private final ct hover = asa.spring(); + private float x; + private float y; + private float width; + private float height; + private Component cachedMessage; + private String cachedText; + private act badge; + private boolean badgeResolved; + + acr(AbstractWidget var1, acq var2, int var3, int var4, String var5, @Nullable Supplier var6, @Nullable BooleanSupplier var7, boolean var8) { + this.widget = var1; + this.section = var2; + this.priority = var3; + this.order = var4; + this.icon = var5; + this.label = var6; + this.selection = var7; + this.danger = var8; + } + + public boolean selected() { + int var2 = 0; + int var1 = 1542384627; + + while (true) { + switch (var1) { + case -1196815407: + var2 = 1; + var1 = -437631924; + break; + case -437631924: + return (boolean)((var2) != 0); + case 847891293: + if (this.selection.getAsBoolean()) { + var1 = -1196815407; + } else { + var1 = 1647112657; + } + break; + case 1542384627: + default: + if (this.selection != null) { + var1 = 847891293; + } else { + var1 = 1647112657; + } + break; + case 1647112657: + var2 = 0; + var1 = -437631924; + } + } + } + + @Nullable + public Identifier badge() { + act var1 = null; + Identifier var3 = null; + int var2 = 1805056899; + + while (true) { + switch (var2) { + case -1195175218: + var3 = null; + var2 = -300773367; + break; + case -300773367: + return var3; + case 1405929529: + var3 = var1.icon(); + var2 = -300773367; + break; + case 1805056899: + default: + var1 = this.modBadge(); + if (var1 == null) { + var2 = -1195175218; + } else { + var2 = 1405929529; + } + } + } + } + + @Nullable + private act modBadge() { + if (!this.badgeResolved) { + this.badgeResolved = (boolean)(((1)) != 0); + this.badge = this.section == acq.MODS ? acu.resolve(this.widget) : null; + } + + return this.badge; + } + + public String text() { + Component var1 = null; + act var2 = null; + int var3 = 120081211; + + while (true) { + switch (var3) { + case -2062872779: + return this.label.get(); + case -1857220828: + return var2.name(); + case -987454266: + return this.cachedText; + case 120081211: + default: + if (this.label != null) { + var3 = -2062872779; + } else { + var3 = 318601396; + } + break; + case 212596460: + var2 = this.modBadge(); + if (var2 != null) { + var3 = -1857220828; + } else { + var3 = -987454266; + } + break; + case 253778142: + if (this.cachedText.isBlank()) { + var3 = 212596460; + } else { + var3 = -987454266; + } + break; + case 318601396: + var1 = this.widget.getMessage(); + if (var1 != this.cachedMessage) { + var3 = 521721258; + } else { + var3 = 253778142; + } + break; + case 521721258: + this.cachedMessage = var1; + this.cachedText = var1.getString(); + var3 = 253778142; + } + } + } + + public boolean enabled() { + return this.widget.active; + } + + public boolean focused() { + return this.widget.isFocused(); + } + + void place(float var1, float var2, float var3, float var4) { + this.x = var1; + this.y = var2; + this.width = var3; + this.height = var4; + this.widget.setRectangle(Math.round(var3), Math.round(var4), Math.round(var1), Math.round(var2)); + } + + void collapse() { + this.x = 0.0F; + this.y = 0.0F; + this.width = 0.0F; + this.height = 0.0F; + this.widget.setWidth((-466036927 ^ 466036927) + ((-466036927 & 466036927) << 1)); + } + + boolean contains(double var1, double var3) { + int var6 = 0; + int var5 = -482475031; + + while (true) { + switch (var5) { + case -1768174160: + return (boolean)((var6) != 0); + case -1573600413: + var6 = 0; + var5 = -1768174160; + break; + case -1351083723: + if (var3 >= this.y) { + var5 = 1494087334; + } else { + var5 = -1573600413; + } + break; + case -1320474461: + if (var1 < this.x + this.width) { + var5 = -1351083723; + } else { + var5 = -1573600413; + } + break; + case -482475031: + default: + if (var1 >= this.x) { + var5 = -1320474461; + } else { + var5 = -1573600413; + } + break; + case 569785540: + var6 = 1; + var5 = -1768174160; + break; + case 1494087334: + if (var3 < this.y + this.height) { + var5 = 569785540; + } else { + var5 = -1573600413; + } + } + } + } + + public AbstractWidget getWidget() { + return this.widget; + } + + public acq getSection() { + return this.section; + } + + public int getPriority() { + return this.priority; + } + + public int getOrder() { + return this.order; + } + + public String getIcon() { + return this.icon; + } + + public Supplier getLabel() { + return this.label; + } + + public BooleanSupplier getSelection() { + return this.selection; + } + + public boolean isDanger() { + return this.danger; + } + + public ct getHover() { + return this.hover; + } + + public float getX() { + return this.x; + } + + public float getY() { + return this.y; + } + + public float getWidth() { + return this.width; + } + + public float getHeight() { + return this.height; + } + + public Component getCachedMessage() { + return this.cachedMessage; + } + + public String getCachedText() { + return this.cachedText; + } +} diff --git a/src/main/java/defpackage/acs.java b/src/main/java/defpackage/acs.java new file mode 100644 index 0000000..2a154d5 --- /dev/null +++ b/src/main/java/defpackage/acs.java @@ -0,0 +1,26 @@ +package defpackage; + +import java.util.Objects; +import java.util.function.BooleanSupplier; +import java.util.function.Supplier; +import org.jetbrains.annotations.Nullable; + +public record acs(acq section, int priority, String icon, @Nullable Supplier label, @Nullable BooleanSupplier selected) { + public acs(acq section, int priority, String icon, @Nullable Supplier label, @Nullable BooleanSupplier selected) { + Objects.requireNonNull(section); + Objects.requireNonNull(icon); + this.section = section; + this.priority = priority; + this.icon = icon; + this.label = label; + this.selected = selected; + } + + public static acs of(acq var0, int var1, String var2) { + return new acs(var0, var1, var2, null, null); + } + + public static acs of(acq var0, int var1, String var2, Supplier var3) { + return new acs(var0, var1, var2, var3, null); + } +} diff --git a/src/main/java/defpackage/act.java b/src/main/java/defpackage/act.java new file mode 100644 index 0000000..8525cee --- /dev/null +++ b/src/main/java/defpackage/act.java @@ -0,0 +1,7 @@ +package defpackage; + +import net.minecraft.resources.Identifier; +import org.jetbrains.annotations.Nullable; + +public record act(@Nullable Identifier icon, String name) { +} diff --git a/src/main/java/defpackage/acu.java b/src/main/java/defpackage/acu.java new file mode 100644 index 0000000..ebf439f --- /dev/null +++ b/src/main/java/defpackage/acu.java @@ -0,0 +1,406 @@ +package defpackage; + +import com.mojang.blaze3d.platform.NativeImage; +import java.io.InputStream; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.security.CodeSource; +import java.security.ProtectionDomain; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; +import net.fabricmc.loader.api.FabricLoader; +import net.fabricmc.loader.api.ModContainer; +import net.fabricmc.loader.api.metadata.ModOrigin; +import net.fabricmc.loader.api.metadata.ModOrigin.Kind; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.components.AbstractWidget; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.components.Button.OnPress; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.resources.Identifier; +import org.jetbrains.annotations.Nullable; + +public final class acu { + private static final String ICON_LOAD_FAILURE = "mod icon load failed for {}"; + private static final String OWNER_LOOKUP_FAILURE = "mod owner lookup failed for {}"; + private static final String TEXTURE_PREFIX = "modicons/"; + private static final String TEXTURE_LABEL_PREFIX = "evolution_mod_icon_"; + private static final String FALLBACK_ICON_PATH = "assets/%s/icon.png"; + private static final String[] PLATFORM_PACKAGES; + private static final String ID_SEPARATORS = "[-_]"; + private static final String EMPTY = ""; + private static final char PACKAGE_SEPARATOR = '.'; + private static final int ICON_SIZE = 32; + private static final Map OWNERS = new ConcurrentHashMap<>(); + private static final Map BADGES = new ConcurrentHashMap<>(); + + private acu() { + } + + @Nullable + public static act resolve(AbstractWidget var0) { + Class var1 = null; + String var2 = null; + act var4 = null; + int var3 = 2072842625; + + while (true) { + switch (var3) { + case -1669125021: + var2 = OWNERS.computeIfAbsent(var1.getName(), var1x -> findMod(var1)); + if (var2.isEmpty()) { + var3 = 1513748370; + } else { + var3 = 190015186; + } + break; + case 190015186: + var4 = BADGES.computeIfAbsent(var2, acu::loadBadge); + var3 = 883199465; + break; + case 599008488: + return null; + case 883199465: + return var4; + case 1513748370: + var4 = null; + var3 = 883199465; + break; + case 2072842625: + default: + var1 = ownerOf(var0); + if (var1 == null) { + var3 = 599008488; + } else { + var3 = -1669125021; + } + } + } + } + + @Nullable + private static Class ownerOf(AbstractWidget var0) { + for (Class var1 = var0.getClass(); var1 != null; var1 = var1.getSuperclass()) { + if (!platform(var1.getName())) { + return var1; + } + } + + if (var0 instanceof Button var3) { + OnPress var2 = ((b.b)var3).evolution$getOnPress(); + if (var2 != null && !platform(var2.getClass().getName())) { + return var2.getClass(); + } + } + + return null; + } + + private static boolean platform(String var0) { + int var1 = 0; + int var2 = -915561391; + + while (true) { + switch (var2) { + case -1198030361: + var1++; + var2 = 1849081285; + break; + case -915561391: + default: + var1 = 0; + var2 = 1849081285; + break; + case -3848418: + return (boolean)(((1)) != 0); + case 898133791: + if (var0.startsWith(PLATFORM_PACKAGES[var1])) { + var2 = -3848418; + } else { + var2 = -1198030361; + } + break; + case 1822819335: + return (boolean)(((0)) != 0); + case 1849081285: + if (var1 < PLATFORM_PACKAGES.length) { + var2 = 898133791; + } else { + var2 = 1822819335; + } + } + } + } + + private static String findMod(Class var0) { + Collection var1 = null; + Path var2 = null; + Iterator var3 = null; + ModContainer var4 = null; + int var5 = 338946730; + + while (true) { + switch (var5) { + case -1085724979: + var5 = 434165555; + break; + case -834631186: + var3 = var1.iterator(); + var5 = 434165555; + break; + case -62846281: + return var4.getMetadata().getId(); + case 86473183: + return byPackage(var0.getName(), var1); + case 338946730: + default: + var1 = FabricLoader.getInstance().getAllMods(); + var2 = codeSource(var0); + if (var2 != null) { + var5 = -834631186; + } else { + var5 = 86473183; + } + break; + case 434165555: + if (var3.hasNext()) { + var5 = 870868290; + } else { + var5 = 86473183; + } + break; + case 870868290: + var4 = (ModContainer)var3.next(); + if (provides(var4, var2)) { + var5 = -62846281; + } else { + var5 = -1085724979; + } + } + } + } + + @Nullable + private static Path codeSource(Class var0) { + try { + ProtectionDomain var1 = var0.getProtectionDomain(); + CodeSource var2 = var1 == null ? null : var1.getCodeSource(); + URL var3 = var2 == null ? null : var2.getLocation(); + return var3 == null ? null : Paths.get(var3.toURI()).toAbsolutePath().normalize(); + } catch (Exception var4) { + id.debug( + Cif.GUI, + "mod owner lookup failed for {}", + var0.getName() + ); + return null; + } + } + + private static boolean provides(ModContainer var0, Path var1) { + try { + ModOrigin var2 = var0.getOrigin(); + if (var2.getKind() != Kind.PATH) { + return (boolean)(((0)) != 0); + } + + List var3 = var2.getPaths(); + + for (int var4 = 0; var4 < var3.size(); var4++) { + if (((Path)var3.get(var4)).toAbsolutePath().normalize().equals(var1)) { + return (boolean)(((1)) != 0); + } + } + } catch (Exception var5) { + id.debug( + Cif.GUI, + "mod owner lookup failed for {}", + var0.getMetadata().getId() + ); + } + + return (boolean)(((0)) != 0); + } + + private static String byPackage(String var0, Collection var1) { + String var2 = null; + Iterator var3 = null; + ModContainer var4 = null; + String var5 = null; + String var6 = null; + int var7 = -943396099; + + while (true) { + switch (var7) { + case -943396099: + default: + var2 = ""; + var3 = var1.iterator(); + var7 = -563228245; + break; + case -563228245: + if (var3.hasNext()) { + var7 = 1090436760; + } else { + var7 = 1064155435; + } + break; + case 1064155435: + return var2; + case 1090436760: + var4 = (ModContainer)var3.next(); + var5 = var4.getMetadata().getId(); + var6 = var5.replaceAll("[-_]", "").toLowerCase(Locale.ROOT); + if (var6.length() > var2.length()) { + var7 = 1284656327; + } else { + var7 = 1950740737; + } + break; + case 1108860367: + var2 = var5; + var7 = 1950740737; + break; + case 1284656327: + if (hasSegment(var0, var6)) { + var7 = 1108860367; + } else { + var7 = 1950740737; + } + break; + case 1950740737: + var7 = -563228245; + } + } + } + + private static boolean hasSegment(String var0, String var1) { + int var2 = 0; + int var3 = 0; + int var4 = 971039119; + + while (true) { + switch (var4) { + case -1933167382: + return (boolean)(((0)) != 0); + case -1069951376: + if (var0.regionMatches( + (boolean)(((1)) != 0), + var2, + var1, + 0, + var1.length() + )) { + var4 = 314652705; + } else { + var4 = -63822589; + } + break; + case -261434208: + var3 = var0.indexOf(46, var2); + if (var3 < 0) { + var4 = 1388807705; + } else { + var4 = 1552675220; + } + break; + case -63822589: + var2 = var3 + 1; + var4 = 960807917; + break; + case 314652705: + return (boolean)(((1)) != 0); + case 960807917: + if (var2 < var0.length()) { + var4 = -261434208; + } else { + var4 = -1933167382; + } + break; + case 971039119: + default: + var2 = 0; + var4 = 960807917; + break; + case 1388807705: + return (boolean)(((0)) != 0); + case 1552675220: + if (var3 - var2 == var1.length()) { + var4 = -1069951376; + } else { + var4 = -63822589; + } + } + } + } + + private static act loadBadge(String var0) { + Optional var1 = null; + ModContainer var2 = null; + int var3 = -1353779128; + + while (true) { + switch (var3) { + case -2079787077: + return new act(null, var0); + case -1353779128: + default: + var1 = FabricLoader.getInstance().getModContainer(var0); + if (var1.isEmpty()) { + var3 = -2079787077; + } else { + var3 = 1880217734; + } + break; + case 1880217734: + var2 = (ModContainer)var1.get(); + return new act(loadIcon(var2, var0), var2.getMetadata().getName()); + } + } + } + + @Nullable + private static Identifier loadIcon(ModContainer var0, String var1) { + Optional var2 = var0.getMetadata().getIconPath(32).flatMap(var0::findPath).or(() -> { + Object[] var10002 = new Object[1]; + var10002[0] = var1; + return var0.findPath(String.format("assets/%s/icon.png", var10002)); + }); + if (var2.isEmpty()) { + return null; + } + + try (InputStream var3 = Files.newInputStream((Path)var2.get())) { + NativeImage var4 = NativeImage.read(var3); + Identifier var5 = bz.id("modicons/" + var1); + Minecraft.getInstance().getTextureManager().register(var5, new DynamicTexture(() -> "evolution_mod_icon_" + var1, var4)); + return var5; + } catch (Exception var9) { + id.warn( + Cif.GUI, + "mod icon load failed for {}", + var1, + var9 + ); + return null; + } + } + + static { + String[] var10000 = new String[6]; + var10000[0] = "net.minecraft."; + var10000[1] = "com.mojang."; + var10000[2] = "evo."; + var10000[3] = "java."; + var10000[4] = "jdk."; + var10000[5] = "sun."; + PLATFORM_PACKAGES = var10000; + } +} diff --git a/src/main/java/defpackage/acv.java b/src/main/java/defpackage/acv.java new file mode 100644 index 0000000..bdb4ccb --- /dev/null +++ b/src/main/java/defpackage/acv.java @@ -0,0 +1,23 @@ +package defpackage; + +enum acv { + OVERRIDE("Override"), + AUTO("Automatic"), + RELEASE("Release"), + BETA("Beta"), + ALPHA("Alpha"), + CLASSIC("Classic"), + BEDROCK("Bedrock"), + OTHER("Other"); + + private static final String ALL_LABEL = "All"; + private final String label; + + acv(String var3) { + this.label = var3; + } + + String label() { + return this.label; + } +} diff --git a/src/main/java/defpackage/acw.java b/src/main/java/defpackage/acw.java new file mode 100644 index 0000000..06e9ee5 --- /dev/null +++ b/src/main/java/defpackage/acw.java @@ -0,0 +1,6 @@ +package defpackage; + +import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; + +record acw(ProtocolVersion version, String label, String detail, String search, acv category, boolean header) { +} diff --git a/src/main/java/defpackage/acx.java b/src/main/java/defpackage/acx.java new file mode 100644 index 0000000..e80053a --- /dev/null +++ b/src/main/java/defpackage/acx.java @@ -0,0 +1,985 @@ +package defpackage; + +import com.viaversion.viafabricplus.ViaFabricPlus; +import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslationImpl; +import com.viaversion.viafabricplus.protocoltranslator.util.ProtocolVersionDetector; +import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; +import com.viaversion.viaversion.api.protocol.version.VersionType; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Objects; +import java.util.function.Consumer; +import java.util.function.Supplier; +import net.minecraft.client.gui.screens.Screen; + +public final class acx extends acy { + private static final float WINDOW_WIDTH = 322.0F; + private static final float WINDOW_MAX_HEIGHT = 348.0F; + private static final float FILTER_TOP = 44.0F; + private static final float FILTER_GAP = 4.0F; + private static final float HEADER_ROW_HEIGHT = 15.0F; + private static final float VERSION_ROW_HEIGHT = 17.0F; + private static final float ROW_INSET = 9.0F; + private static final float ROW_EDGE = 6.0F; + private static final float ACCENT_BAR_WIDTH = 2.0F; + private static final float ACCENT_BAR_INSET = 4.0F; + private static final float TAG_PADDING = 4.0F; + private static final float TAG_HEIGHT = 9.0F; + private static final float TAG_GAP = 5.0F; + private static final float SELECTED_TINT = 0.18F; + private static final float HOVER_TINT = 0.5F; + private static final float HEADER_LABEL_ALPHA = 0.75F; + private static final float DETAIL_ALPHA = 0.9F; + private static final float LOCKED_ALPHA = 0.45F; + private static final float BUTTON_GAP = 5.0F; + private static final float BUTTON_PADDING = 9.0F; + private static final String TITLE = "Protocol"; + private static final String TITLE_SERVER = "Server version"; + private static final String SEARCH_PLACEHOLDER = "Search versions"; + private static final String EMPTY_MESSAGE = "No versions match"; + private static final String GLOBAL_LABEL = "Global"; + private static final String RESET_LABEL = "Use global version"; + private static final String RESET_DETAIL = "clears the override"; + private static final String AUTO_LABEL = "Auto detect"; + private static final String AUTO_DETAIL = "1.7+ servers"; + private static final String NATIVE_TAG = "native"; + private static final String SETTINGS_LABEL = "Settings"; + private static final String CLASSIC_LABEL = "ClassiCube"; + private static final String BETA_LABEL = "BetaCraft"; + private static final String CONNECTED_NOTICE = "Disconnect to change the protocol"; + private static final String SERVER_NOTICE = "Applies to this server only"; + private static final String BEDROCK_PREFIX = "Bedrock"; + private static final int SLOT_SETTINGS = 0; + private static final int SLOT_CLASSIC = 1; + private static final int SLOT_BETA = 2; + private static final int SLOT_FILTER_BASE = 3; + private final Consumer selection; + private final Supplier forced; + private final List entries = new ArrayList<>(); + private final List rows = new ArrayList<>(); + private final List filters = new ArrayList<>(); + private acv filter; + private float settingsX; + private float classicX; + private float betaX; + private float settingsWidth; + private float classicWidth; + private float betaWidth; + private float buttonY; + + public acx(Screen var1) { + this(var1, null, null); + } + + public acx(Screen var1, Consumer var2, Supplier var3) { + super(var1); + this.selection = var2; + this.forced = var3; + } + + private boolean perServer() { + int var2 = 0; + int var1 = 1579830565; + + while (true) { + switch (var1) { + case -1789446759: + var2 = 0; + var1 = 1324539059; + break; + case -1206116901: + var2 = 1; + var1 = 1324539059; + break; + case 1249412484: + if (this.forced != null) { + var1 = -1206116901; + } else { + var1 = -1789446759; + } + break; + case 1324539059: + return (boolean)((var2) != 0); + case 1579830565: + default: + if (this.selection != null) { + var1 = 1249412484; + } else { + var1 = -1789446759; + } + } + } + } + + @Override + protected void init() { + super.init(); + this.buildEntries(); + this.rebuildRows(); + this.revealSelection(); + } + + private void revealSelection() { + float var1 = 0.0F; + + for (acw var3 : this.rows) { + if (this.isSelected(var3)) { + this.requestScroll(var1 - this.visibleContentHeight() / 2.0F + 8.5F); + return; + } + + var1 += var3.header() ? 15.0F : 17.0F; + } + } + + private void buildEntries() { + this.entries.clear(); + this.filters.clear(); + if (this.perServer()) { + this.entries + .add( + new acw( + null, + "Use global version", + "clears the override", + "Use global version" + .toLowerCase(Locale.ROOT), + acv.OVERRIDE, + (boolean)((((-391759835 ^ 391759835) + ((-391759835 & 391759835) << 1)) + ) != 0)) + ); + } + + for (ProtocolVersion var2 : ProtocolVersion.getReversedProtocols()) { + int var3 = var2 == ProtocolVersionDetector.AUTO_DETECT_VERSION + ? 1: 0; + String var4 = var3 != 0 ? "Auto detect" : var2.getName(); + String var5 = var3 != 0 + ? "1.7+ servers" + : (var2.isKnown() ? String.valueOf(var2.getOriginalVersion()) : ""); + acv var6 = var3 != 0 ? acv.AUTO : categoryOf(var2); + String var7 = (var4 + " " + var6.label()).toLowerCase(Locale.ROOT); + this.entries.add(new acw(var2, var4, var5, var7, var6, (boolean)((((1208864354 | -1208864354) + (1208864354 & -1208864354))) != 0))); + } + + this.entries.sort(Comparator.comparingInt(var0 -> var0.category().ordinal())); + acv[] var8 = acv.values(); + int var9 = var8.length; + + for (int var10 = 0; var10 < var9; var10++) { + acv var11 = var8[var10]; + if (var11 != acv.OVERRIDE) { + for (acw var13 : this.entries) { + if (var13.category() == var11) { + this.filters.add(var11); + break; + } + } + } + } + } + + private static acv categoryOf(ProtocolVersion var0) { + VersionType var1 = null; + int var2 = -142859097; + + while (true) { + switch (var2) { + case -1556947154: + return acv.ALPHA; + case -1315640029: + return acv.BETA; + case -824586277: + if (var1 == VersionType.RELEASE) { + var2 = 107644348; + } else { + var2 = 231212748; + } + break; + case -726657537: + var1 = var0.getVersionType(); + if (var1 == VersionType.CLASSIC) { + var2 = 1870015021; + } else { + var2 = -78458374; + } + break; + case -541751742: + if (var1 == VersionType.BETA_LATER) { + var2 = -1315640029; + } else { + var2 = 1666042507; + } + break; + case -142859097: + default: + if (var0.getName().startsWith("Bedrock")) { + var2 = 1935335444; + } else { + var2 = -726657537; + } + break; + case -78458374: + if (var1 != VersionType.ALPHA_INITIAL) { + var2 = 338681469; + } else { + var2 = -1556947154; + } + break; + case -39268619: + if (var1 != VersionType.BETA_INITIAL) { + var2 = -541751742; + } else { + var2 = -1315640029; + } + break; + case 107644348: + return acv.RELEASE; + case 231212748: + return acv.OTHER; + case 338681469: + if (var1 == VersionType.ALPHA_LATER) { + var2 = -1556947154; + } else { + var2 = -39268619; + } + break; + case 1666042507: + if (var1 != VersionType.RELEASE_INITIAL) { + var2 = -824586277; + } else { + var2 = 107644348; + } + break; + case 1870015021: + return acv.CLASSIC; + case 1935335444: + return acv.BEDROCK; + } + } + } + + private void rebuildRows() { + String var1 = null; + acv var2 = null; + Iterator var3 = null; + acw var4 = null; + int var5 = -1410058331; + + while (true) { + switch (var5) { + case -1527520800: + if (var4.category() != acv.OVERRIDE) { + var5 = -1147835719; + } else { + var5 = 2062172249; + } + break; + case -1410058331: + default: + this.rows.clear(); + this.resetRowHovers(); + var1 = this.searchText(); + var2 = null; + var3 = this.entries.iterator(); + var5 = -1396056283; + break; + case -1396056283: + if (var3.hasNext()) { + var5 = 483774727; + } else { + var5 = -540808892; + } + break; + case -1203446843: + if (!var4.search().contains(var1)) { + var5 = 383140703; + } else { + var5 = 1680524706; + } + break; + case -1147835719: + if (var4.category() != var2) { + var5 = -497692337; + } else { + var5 = 2062172249; + } + break; + case -832873212: + if (!var1.isEmpty()) { + var5 = -1203446843; + } else { + var5 = 1680524706; + } + break; + case -665769894: + var5 = -1396056283; + break; + case -540808892: + return; + case -497692337: + var2 = var4.category(); + this.rows.add(new acw(null, var2.label(), "", "", var2, (boolean)((((1117837554 | -1117837553) + (1117837554 & -1117837553))) != 0))); + var5 = 2062172249; + break; + case -257287300: + var5 = -1396056283; + break; + case -176652483: + if (var4.category() != this.filter) { + var5 = 1658796885; + } else { + var5 = -832873212; + } + break; + case 383140703: + if (!var4.detail().contains(var1)) { + var5 = -257287300; + } else { + var5 = 1680524706; + } + break; + case 483774727: + var4 = (acw)var3.next(); + if (this.filter != null) { + var5 = -176652483; + } else { + var5 = -832873212; + } + break; + case 1658796885: + if (var4.category() != acv.OVERRIDE) { + var5 = -665769894; + } else { + var5 = -832873212; + } + break; + case 1680524706: + if (this.filter == null) { + var5 = -1527520800; + } else { + var5 = 2062172249; + } + break; + case 2062172249: + this.rows.add(var4); + var5 = -1396056283; + } + } + } + + @Override + protected float windowWidth() { + return 322.0F; + } + + @Override + protected float windowMaxHeight() { + return 348.0F; + } + + @Override + protected String windowTitle() { + String var2 = null; + int var1 = -572946986; + + while (true) { + switch (var1) { + case -1353640163: + var2 = "Protocol"; + var1 = 1886159763; + break; + case -572946986: + default: + if (this.perServer()) { + var1 = 675756119; + } else { + var1 = -1353640163; + } + break; + case 675756119: + var2 = "Server version"; + var1 = 1886159763; + break; + case 1886159763: + return var2; + } + } + } + + @Override + protected String searchPlaceholder() { + return "Search versions"; + } + + @Override + protected String headerStatus() { + ProtocolVersion var1 = null; + String var3 = null; + String var4 = null; + int var2 = -867620667; + + while (true) { + switch (var2) { + case -1787195445: + return var3; + case -867620667: + default: + if (this.perServer()) { + var2 = 373925409; + } else { + var2 = 1211031536; + } + break; + case -603787885: + var4 = "Auto detect"; + var2 = -94721184; + break; + case -171911222: + var3 = var1.getName(); + var2 = -1787195445; + break; + case -94721184: + return var4; + case 373925409: + var1 = this.forced.get(); + if (var1 == null) { + var2 = 1962824013; + } else { + var2 = -171911222; + } + break; + case 1211031536: + var1 = ViaFabricPlus.api().targetVersion(); + if (var1 == ProtocolVersionDetector.AUTO_DETECT_VERSION) { + var2 = -603787885; + } else { + var2 = 1629247527; + } + break; + case 1629247527: + var4 = var1.getName(); + var2 = -94721184; + break; + case 1962824013: + var3 = "Global"; + var2 = -1787195445; + } + } + } + + @Override + protected String emptyMessage() { + return "No versions match"; + } + + @Override + protected float headerHeight() { + return 63.0F; + } + + @Override + protected void onSearchChanged() { + this.rebuildRows(); + } + + @Override + protected int rowCount() { + return this.rows.size(); + } + + @Override + protected float rowHeight(int var1) { + float var3 = 0.0F; + int var2 = -613471488; + + while (true) { + switch (var2) { + case -734754733: + return var3; + case -613471488: + default: + if (this.rows.get(var1).header()) { + var2 = 955149513; + } else { + var2 = 144241531; + } + break; + case 144241531: + var3 = 17.0F; + var2 = -734754733; + break; + case 955149513: + var3 = 15.0F; + var2 = -734754733; + } + } + } + + @Override + protected void renderHeaderExtras(asq var1, mv var2, float var3, float var4, float var5) { + float var6 = this.boxX + 10.0F; + float var7 = this.boxY + 44.0F; + + for (int var8 = 0; var8 <= this.filters.size(); var8++) { + acv var9 = var8 == 0 ? null : this.filters.get(var8 - ((-2135999868 | 2135999869) + (-2135999868 & 2135999869))); + String var10 = var9 == null ? "All" : var9.label(); + float var11 = add.chipWidth(var10); + boolean var12 = aqj.isHovered(var4, var5, var6, var7, var11, 12.0); + float var13 = this.chromeHover((-362743792 | 362743795) + (-362743792 & 362743795) + var8, var12); + add.chip( + var1, + var2, + var6, + var7, + var11, + 12.0F, + var10, + (boolean)(((this.filter == var9 + ? 1: (1012874582 ^ -1012874582) + ((1012874582 & -1012874582) << 1))) != 0), + var13, + var3 + ); + var6 += var11 + 4.0F; + } + } + + @Override + protected void renderRow(asq var1, mv var2, int var3, float var4, float var5, float var6, float var7, float var8, float var9) { + acw var10 = this.rows.get(var3); + ge var11 = gl.MEDIUM.getFont(7.0F); + ge var12 = gl.MEDIUM.getFont(5.5F); + if (var10.header()) { + var1.drawText(var12, var10.label(), var4 + 6.0F, var5 + (15.0F - var12.height()) - 3.0F, var2.getGrayLight().mulAlpha(var7 * 0.75F)); + } else { + boolean var13 = this.isLocked(); + boolean var14 = this.isSelected(var10); + int var15 = !var13 && aqj.isHovered(var8, var9, var4, var5, var6, 17.0) && var9 >= this.contentTop && var9 <= this.contentBottom + ? 1: 0; + float var16 = this.rowHover(var3, (boolean)((var15) != 0)); + float var17 = var7 * (var13 ? 0.45F : 1.0F); + if (var14) { + var1.drawSurface(aso.ROW, var4, var5, var6, 17.0F, asj.all(oc.ROW), var2.getColor().mulAlpha(var7 * 0.18F).getRGB()); + var1.drawRoundedRect(var4 + 4.0F, var5 + 4.0F, 2.0F, 9.0F, asj.all(oc.HAIRLINE), var2.getColor().mulAlpha(var7)); + } else if (var16 > 0.0F) { + var1.drawSurface(aso.ROW, var4, var5, var6, 17.0F, asj.all(oc.ROW), var2.getForegroundColor().mulAlpha(var7 * 0.5F * var16).getRGB()); + } + + float var18 = var4 + var6 - 6.0F; + if (var10.version() == ProtocolTranslationImpl.NATIVE_VERSION) { + float var19 = var12.width("native") + 8.0F; + float var20 = var18 - var19; + float var21 = var5 + 4.0F; + var1.drawSurface(aso.CONTROL, var20, var21, var19, 9.0F, asj.all(oc.HAIRLINE), var2.getForegroundStroke().mulAlpha(var17).getRGB()); + var1.drawText( + var12, + "native", + var20 + 4.0F, + var21 + (9.0F - var12.height()) / 2.0F + 0.5F, + var2.getGrayLight().mulAlpha(var17) + ); + var18 = var20 - 5.0F; + } + + if (!var10.detail().isEmpty()) { + float var22 = var18 - var12.width(var10.detail()); + var1.drawText(var12, var10.detail(), var22, var5 + (17.0F - var12.height()) / 2.0F + 0.5F, var2.getGrayLight().mulAlpha(var17 * 0.9F)); + var18 = var22 - 5.0F; + } + + asu var23 = var14 ? var2.getColor().mulAlpha(var17) : var2.getWhite().mulAlpha(var17 * (0.75F + 0.25F * var16)); + var1.drawScrollingText(var11, var10.label(), var4 + 9.0F, var5 + (17.0F - var11.height()) / 2.0F + 0.5F, var18 - var4 - 9.0F, var23, (boolean)((var15) != 0)); + } + } + + @Override + protected void clickRow(int var1, float var2, double var3, double var5, apf var7) { + acw var8 = null; + int var9 = -1928305609; + + while (true) { + switch (var9) { + case -1928305609: + default: + if (var7 != apf.LEFT) { + var9 = -910821878; + } else { + var9 = -978248477; + } + break; + case -978248477: + var8 = this.rows.get(var1); + if (!var8.header()) { + var9 = -418289208; + } else { + var9 = -779369689; + } + break; + case -910821878: + return; + case -779369689: + return; + case -418289208: + if (!this.isLocked()) { + var9 = -73903790; + } else { + var9 = -779369689; + } + break; + case -373674370: + this.playToggle((boolean)((((146596637 | -146596636) + (146596637 & -146596636))) != 0)); + return; + case -73903790: + if (this.isSelected(var8)) { + var9 = -779369689; + } else { + var9 = 1535093241; + } + break; + case 1117143320: + ViaFabricPlus.api().setTargetVersion(var8.version()); + var9 = -373674370; + break; + case 1234165201: + this.selection.accept(var8.version()); + var9 = -373674370; + break; + case 1535093241: + if (this.perServer()) { + var9 = 1234165201; + } else { + var9 = 1117143320; + } + } + } + } + + @Override + protected void renderFooter(asq var1, mv var2, float var3, float var4, float var5) { + this.buttonY = this.boxY + this.boxHeight - 24.0F + 4.5F; + if (this.perServer()) { + ge var11 = gl.MEDIUM.getFont(5.5F); + var1.drawText( + var11, + "Applies to this server only", + this.boxX + 10.0F, + this.buttonY + (15.0F - var11.height()) / 2.0F, + var2.getGrayLight().mulAlpha(var3) + ); + } else { + this.settingsWidth = add.chipWidth( + "Settings", + "F" + ) + + 9.0F; + this.classicWidth = add.chipWidth( + "ClassiCube", + "p" + ) + + 9.0F; + this.betaWidth = add.chipWidth( + "BetaCraft", + "p" + ) + + 9.0F; + this.settingsX = this.boxX + 10.0F; + this.classicX = this.settingsX + this.settingsWidth + 5.0F; + this.betaX = this.classicX + this.classicWidth + 5.0F; + boolean var6 = aqj.isHovered(var4, var5, this.settingsX, this.buttonY, this.settingsWidth, 15.0); + boolean var7 = aqj.isHovered(var4, var5, this.classicX, this.buttonY, this.classicWidth, 15.0); + boolean var8 = aqj.isHovered(var4, var5, this.betaX, this.buttonY, this.betaWidth, 15.0); + add.chip( + var1, + var2, + this.settingsX, + this.buttonY, + this.settingsWidth, + 15.0F, + "Settings", + "F", + (boolean)(((0)) != 0), + this.chromeHover(0, var6), + var3 + ); + add.chip( + var1, + var2, + this.classicX, + this.buttonY, + this.classicWidth, + 15.0F, + "ClassiCube", + "p", + (boolean)(((0)) != 0), + this.chromeHover(1, var7), + var3 + ); + add.chip( + var1, + var2, + this.betaX, + this.buttonY, + this.betaWidth, + 15.0F, + "BetaCraft", + "p", + (boolean)(((0)) != 0), + this.chromeHover(2, var8), + var3 + ); + if (this.isLocked()) { + ge var9 = gl.MEDIUM.getFont(5.5F); + float var10 = this.betaX + this.betaWidth + 10.0F; + var1.drawText( + var9, + "Disconnect to change the protocol", + var10, + this.buttonY + (15.0F - var9.height()) / 2.0F, + var2.getColor().mulAlpha(var3 * 0.9F) + ); + } + + atb.drawRect( + var1.pose(), + this.boxX + 10.0F, + this.boxY + this.boxHeight - 24.0F, + this.boxWidth - 20.0F, + pk.borderHairline(), + var2.getForegroundStroke().mulAlpha(var3 * pk.dividerAlpha()) + ); + } + } + + @Override + protected void clickChrome(double var1, double var3, apf var5) { + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = 0; + acv var9 = null; + String var10 = null; + float var11 = 0.0F; + acv var13 = null; + String var14 = null; + int var12 = 1737376113; + + while (true) { + switch (var12) { + case -1793187440: + var10 = var14; + var11 = add.chipWidth(var10); + if (aqj.isHovered(var1, var3, var6, var7, var11, 12.0)) { + var12 = -1756029894; + } else { + var12 = 365360474; + } + break; + case -1756029894: + if (this.filter != var9) { + var12 = -931202794; + } else { + var12 = -70541693; + } + break; + case -1732048335: + return; + case -1688032671: + if (var8 == 0) { + var12 = 1803777710; + } else { + var12 = -1194927259; + } + break; + case -1666080315: + return; + case -1454332912: + if (aqj.isHovered(var1, var3, this.betaX, this.buttonY, this.betaWidth, 15.0)) { + var12 = -529648556; + } else { + var12 = 1527210347; + } + break; + case -1194927259: + var13 = this.filters.get(var8 - ((1344173611 ^ -1344173610) + ((1344173611 & -1344173610) << 1))); + var12 = 690744010; + break; + case -1113617243: + if (aqj.isHovered(var1, var3, this.classicX, this.buttonY, this.classicWidth, 15.0)) { + var12 = -1016432211; + } else { + var12 = -1454332912; + } + break; + case -1016432211: + this.playClick(); + ViaFabricPlus.api().screens().openClassiCubeServerListScreen(this); + return; + case -931202794: + this.filter = var9; + this.rebuildRows(); + this.playClick(); + var12 = -70541693; + break; + case -529648556: + this.playClick(); + ViaFabricPlus.api().screens().openBetaCraftServerListScreen(this); + var12 = 1527210347; + break; + case -173169769: + var6 = this.boxX + 10.0F; + var7 = this.boxY + 44.0F; + var8 = 0; + var12 = 527885891; + break; + case -70541693: + return; + case 365360474: + var6 += var11 + 4.0F; + var8++; + var12 = 527885891; + break; + case 390982372: + if (this.perServer()) { + var12 = -1666080315; + } else { + var12 = 1626576767; + } + break; + case 527885891: + if (var8 <= this.filters.size()) { + var12 = -1688032671; + } else { + var12 = 390982372; + } + break; + case 690744010: + var9 = var13; + if (var9 == null) { + var12 = 1695487314; + } else { + var12 = 1789754548; + } + break; + case 1527210347: + return; + case 1626576767: + if (aqj.isHovered(var1, var3, this.settingsX, this.buttonY, this.settingsWidth, 15.0)) { + var12 = 1636036379; + } else { + var12 = -1113617243; + } + break; + case 1636036379: + this.open(new adc(this)); + return; + case 1695487314: + var14 = "All"; + var12 = -1793187440; + break; + case 1737376113: + default: + if (var5 != apf.LEFT) { + var12 = -1732048335; + } else { + var12 = -173169769; + } + break; + case 1789754548: + var14 = var9.label(); + var12 = -1793187440; + break; + case 1803777710: + var13 = null; + var12 = 690744010; + } + } + } + + private boolean isLocked() { + int var2 = 0; + int var1 = -2106547736; + + while (true) { + switch (var1) { + case -2106547736: + default: + if (!this.perServer()) { + var1 = -1365099708; + } else { + var1 = -1597256781; + } + break; + case -1597256781: + var2 = 0; + var1 = -445837978; + break; + case -1365099708: + if (this.minecraft.getConnection() != null) { + var1 = -58810361; + } else { + var1 = -1597256781; + } + break; + case -445837978: + return (boolean)((var2) != 0); + case -58810361: + var2 = 1; + var1 = -445837978; + } + } + } + + private boolean isSelected(acw var1) { + int var3 = 0; + int var2 = -708504496; + + while (true) { + switch (var2) { + case -1893422237: + if (var1.version().equals(ViaFabricPlus.api().targetVersion())) { + var2 = -1612573674; + } else { + var2 = 124772133; + } + break; + case -1612573674: + var3 = 1; + var2 = -728763135; + break; + case -728763135: + return (boolean)((var3) != 0); + case -708504496: + default: + if (var1.header()) { + var2 = 359200042; + } else { + var2 = 871030710; + } + break; + case -697102681: + return Objects.equals(this.forced.get(), var1.version()); + case 124772133: + var3 = 0; + var2 = -728763135; + break; + case 359200042: + return (boolean)(((0)) != 0); + case 871030710: + if (this.perServer()) { + var2 = -697102681; + } else { + var2 = 1650487341; + } + break; + case 1650487341: + if (var1.version() != null) { + var2 = -1893422237; + } else { + var2 = 124772133; + } + } + } + } +} diff --git a/src/main/java/defpackage/acy.java b/src/main/java/defpackage/acy.java new file mode 100644 index 0000000..43766b2 --- /dev/null +++ b/src/main/java/defpackage/acy.java @@ -0,0 +1,911 @@ +package defpackage; + +import java.util.Arrays; +import java.util.Locale; +import net.minecraft.client.TextureFilteringMethod; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.model.geom.builders.UVPair; +import net.minecraft.util.Mth; +import org.joml.Matrix3x2fStack; + +public abstract class acy extends api { + protected static final float PADDING = 10.0F; + protected static final float TITLE_FONT = 8.0F; + protected static final float LABEL_FONT = 7.0F; + protected static final float DETAIL_FONT = 5.5F; + protected static final float CHIP_FONT = 5.5F; + protected static final float SEARCH_TOP = 25.0F; + protected static final float SEARCH_HEIGHT = 14.0F; + protected static final float SEARCH_INSET = 6.0F; + protected static final float CONTENT_GAP = 7.0F; + protected static final float FOOTER_HEIGHT = 24.0F; + protected static final float BUTTON_HEIGHT = 15.0F; + protected static final float ELEMENT_GAP = 4.0F; + private static final float WINDOW_MARGIN = 40.0F; + private static final float SHADOW_SPREAD = 22.0F; + private static final float SHADOW_ALPHA = 0.55F; + private static final float BACKGROUND_BOOST = 4.0F; + private static final float SCROLLBAR_GAP = 4.0F; + private static final float PILL_PADDING = 5.0F; + private static final float PILL_HEIGHT = 11.0F; + private static final float TOOLTIP_PADDING = 6.0F; + private static final float TOOLTIP_OFFSET = 10.0F; + private static final float TOOLTIP_SHADOW = 12.0F; + private static final float TOOLTIP_SHADOW_ALPHA = 0.4F; + private static final float PLACEHOLDER_ALPHA = 0.45F; + private static final float PLACEHOLDER_HOVER_MIX = 0.3F; + private static final String EMPTY_GLYPH = "u"; + private static final String EMPTY_DEFAULT_HINT = "Try another search term"; + private static final float SCROLL_STEP = 3.0F; + private static final int CHROME_SPRINGS = 32; + protected static final int SLOT_SEARCH = 31; + private static final String HINT = "ESC to return"; + protected final Screen parent; + private final xm frame = new xm(); + private final arl scrollHandler = new arl(); + private final ark scrollBar = new ark(); + private final ct[] chromeSprings = new ct[32]; + private ct[] rowSprings = new ct[0]; + private float pendingScroll = -1.0F; + private arn searchField; + private String tooltip; + protected float boxX; + protected float boxY; + protected float boxWidth; + protected float boxHeight; + protected float contentX; + protected float contentTop; + protected float contentBottom; + protected float contentWidth; + protected float progress; + + private static arq windowRadius() { + return asj.all(oc.WINDOW); + } + + private static arq controlRadius() { + return asj.all(oc.CARD); + } + + private static arq hairlineRadius() { + return asj.all(oc.HAIRLINE); + } + + protected acy(Screen var1) { + this.parent = var1; + } + + protected abstract float windowWidth(); + + protected abstract float windowMaxHeight(); + + protected abstract String windowTitle(); + + protected abstract String searchPlaceholder(); + + protected abstract int rowCount(); + + protected abstract float rowHeight(int var1); + + protected abstract void renderRow(asq var1, mv var2, int var3, float var4, float var5, float var6, float var7, float var8, float var9); + + protected void clickRow(int var1, float var2, double var3, double var5, apf var7) { + } + + protected float headerHeight() { + return 46.0F; + } + + protected float footerHeight() { + return 24.0F; + } + + protected String headerStatus() { + return null; + } + + protected String emptyMessage() { + return null; + } + + protected String emptyHint() { + return "Try another search term"; + } + + protected void renderHeaderExtras(asq var1, mv var2, float var3, float var4, float var5) { + } + + protected void renderFooter(asq var1, mv var2, float var3, float var4, float var5) { + } + + protected void clickChrome(double var1, double var3, apf var5) { + } + + protected void onSearchChanged() { + } + + protected void init() { + int var1 = 329043679; + + while (true) { + switch (var1) { + case 192050570: + this.searchField = new arn(new UVPair(0.0F, 0.0F), gl.MEDIUM.getFont(7.0F), this.searchPlaceholder(), this.windowWidth() - 20.0F - 12.0F); + this.searchField.setSelected((boolean)((((292820685 | -292820684) + (292820685 & -292820684))) != 0)); + var1 = 597873067; + break; + case 329043679: + default: + this.frame.open(); + if (this.searchField == null) { + var1 = 192050570; + } else { + var1 = 597873067; + } + break; + case 597873067: + return; + } + } + } + + protected String searchText() { + String var2 = null; + int var1 = -752613519; + + while (true) { + switch (var1) { + case -1475440454: + var2 = this.searchField.getText().toLowerCase(Locale.ROOT); + var1 = -717404112; + break; + case -752613519: + default: + if (this.searchField == null) { + var1 = 1259040409; + } else { + var1 = -1475440454; + } + break; + case -717404112: + return var2; + case 1259040409: + var2 = ""; + var1 = -717404112; + } + } + } + + public void extractBackground(GuiGraphicsExtractor var1, int var2, int var3, float var4) { + } + + @Override + public void render(asq var1, float var2, float var3) { + mv var4 = null; + Matrix3x2fStack var5 = null; + asu var6 = null; + int var7 = -148174026; + + while (true) { + switch (var7) { + case -148174026: + default: + var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + this.frame.measure(this.width, this.height, this.windowWidth(), this.windowMaxHeight()); + this.progress = this.frame.advance(); + this.tooltip = null; + atb.endGui(); + this.applyAnimatedBlur(this.progress); + atb.beginGui(); + aqr.renderImmediate(var1.pose(), this.width, this.height); + var1.drawRect(0.0F, 0.0F, this.width, this.height, var4.getBackgroundColor().mulAlpha(0.4F * this.progress)); + this.boxWidth = this.windowWidth(); + this.boxHeight = Math.min(this.windowMaxHeight(), this.frame.viewHeight() - 40.0F); + this.boxX = this.frame.centerX(this.boxWidth); + this.boxY = this.frame.centerY(this.boxHeight); + var5 = var1.pose(); + this.frame.push(var1, this.boxX + this.boxWidth / 2.0F, this.boxY + this.boxHeight / 2.0F); + var2 = (float)this.frame.toLocalX(var2); + var3 = (float)this.frame.toLocalY(var3); + var6 = var4.getBackgroundColor().mulAlpha(this.progress * 4.0F); + atb.drawShadow(var5, this.boxX, this.boxY, this.boxWidth, this.boxHeight, 22.0F, windowRadius(), var4.getColor().mulAlpha(this.progress * 0.55F)); + var1.drawSurface(aso.WINDOW, this.boxX, this.boxY, this.boxWidth, this.boxHeight, windowRadius(), var6.getRGB()); + arx.invalidateScene(); + atb.drawRoundedBorder( + var5, this.boxX, this.boxY, this.boxWidth, this.boxHeight, pk.borderRim(), windowRadius(), var4.getColor().mulAlpha(this.progress) + ); + this.contentX = this.boxX + 10.0F; + this.contentWidth = this.boxWidth - 20.0F - 3.5F - 4.0F; + this.contentTop = this.boxY + this.headerHeight(); + this.contentBottom = this.boxY + this.boxHeight - this.footerHeight(); + this.renderHeader(var1, var4, var2, var3); + this.renderRows(var1, var4, var2, var3); + this.renderFooter(var1, var4, this.progress, var2, var3); + this.renderHint(var1, var4); + this.renderTooltip(var1, var4, var2, var3); + this.frame.pop(var1); + if (this.frame.isClosed()) { + var7 = 1365193746; + } else { + var7 = -10802572; + } + break; + case -10802572: + return; + case 1365193746: + this.minecraft.gui.setScreen(this.parent); + var7 = -10802572; + } + } + } + + private void renderHeader(asq var1, mv var2, float var3, float var4) { + ge var5 = gl.SEMIBOLD.getFont(8.0F); + asu var6 = var2.getWhite().mulAlpha(this.progress); + var1.drawText(var5, this.windowTitle(), this.boxX + 10.0F, this.boxY + 10.0F, var6); + String var7 = this.headerStatus(); + if (var7 != null) { + ge var8 = gl.MEDIUM.getFont(5.5F); + float var9 = var8.width(var7) + 10.0F; + float var10 = this.boxX + this.boxWidth - 10.0F - var9; + float var11 = this.boxY + 10.0F + (var5.height() - 11.0F) / 2.0F; + var1.drawSurface(aso.CONTROL, var10, var11, var9, 11.0F, hairlineRadius(), var2.getColor().mulAlpha(this.progress * pk.dividerAlpha()).getRGB()); + var1.drawText(var8, var7, var10 + 5.0F, var11 + (11.0F - var8.height()) / 2.0F + 0.5F, var2.getColor().mulAlpha(this.progress)); + } + + float var16 = this.boxX + 10.0F; + float var17 = this.boxY + 25.0F; + float var18 = this.boxWidth - 20.0F; + float var19 = this.chromeHover(31, aqj.isHovered(var3, var4, var16, var17, var18, 14.0)); + int var12 = this.searchField != null && this.searchField.isSelected() + ? 1: 0; + asu var13 = (var12 != 0 ? var2.getForegroundStroke() : var2.getForegroundColor()).mulAlpha(this.progress); + asa.plateControl(var1, var16, var17, var18, 14.0F, asa.plateColor(var2), this.progress, var19); + var1.drawSurface(aso.CONTROL, var16, var17, var18, 14.0F, controlRadius(), var13.getRGB()); + if (var12 != 0) { + atb.drawRoundedBorder(var1.pose(), var16, var17, var18, 14.0F, pk.borderHairline(), asj.all(oc.CARD), var2.getColor().mulAlpha(this.progress)); + } + + ge var14 = gl.MEDIUM.getFont(7.0F); + float var15 = var17 + (14.0F - var14.height()) / 2.0F + 0.5F; + if (this.searchField != null) { + if (this.searchField.isEmpty() && var12 == 0) { + var1.drawText( + var14, this.searchPlaceholder(), var16 + 6.0F, var15, var2.getWhite().mulAlpha(this.progress * 0.45F).mix(var2.getWhite(), 0.3F * var19) + ); + } else { + this.searchField.render(var1, var16 + 6.0F, var15, var2.getWhite().mulAlpha(this.progress), var2.getGrayLight().mulAlpha(this.progress)); + } + } + + this.renderHeaderExtras(var1, var2, this.progress, var3, var4); + } + + private void renderRows(asq var1, mv var2, float var3, float var4) { + int var5 = this.rowCount(); + float var6 = this.contentBottom - this.contentTop; + if (var5 == 0) { + String var13 = this.emptyMessage(); + if (var13 != null) { + arw.draw( + var1, + var2, + "u", + var13, + this.emptyHint(), + this.boxX, + this.contentTop, + this.boxWidth, + var6, + this.progress + ); + } + + this.scrollHandler.setMax(0.0); + this.scrollHandler.update(); + this.scrollBar.measure(this.boxX + this.boxWidth - 10.0F - 3.5F, this.contentTop, 3.5F, var6, 0.0F, 0.0F); + } else { + float var7 = (float)this.scrollHandler.getValue(); + float var8 = this.contentTop - var7; + float var9 = ars.edgeFade(); + float var10 = (float)this.scrollHandler.getMax() - var7; + var1.clipScroll( + this.boxX + 1.0F, + this.contentTop, + this.boxX + this.boxWidth - 1.0F, + this.contentBottom, + Math.min(var9, var7), + Math.min(var9, Math.max(0.0F, var10)) + ); + gt.beginBatch(); + + for (int var11 = 0; var11 < var5; var11++) { + float var12 = this.rowHeight(var11); + if (var8 + var12 >= this.contentTop && var8 <= this.contentBottom) { + this.renderRow(var1, var2, var11, this.contentX, var8, this.contentWidth, this.progress, var3, var4); + } + + var8 += var12; + } + + gt.endBatch(); + var1.popClip(); + float var14 = var8 + var7 - this.contentTop; + float var15 = Math.max(0.0F, var14 - var6); + this.scrollHandler.setMax(var15); + if (this.pendingScroll >= 0.0F) { + this.scrollHandler.jumpTo(-this.pendingScroll); + this.pendingScroll = -1.0F; + } + + this.scrollHandler.update(); + this.scrollBar.measure(this.boxX + this.boxWidth - 10.0F - 3.5F, this.contentTop, 3.5F, var6, var15, var7); + this.scrollBar.render(var1, var2, this.progress, var3, var4, this.scrollHandler.isSettled()); + } + } + + private void renderHint(asq var1, mv var2) { + ge var3 = null; + int var4 = 1076800721; + + while (true) { + switch (var4) { + case -387746124: + var3 = gl.MEDIUM.getFont(5.5F); + var1.drawText( + var3, + "ESC to return", + this.boxX + this.boxWidth - 10.0F - var3.width("ESC to return"), + this.boxY + this.boxHeight - this.footerHeight() + (this.footerHeight() - var3.height()) / 2.0F, + var2.getGrayLight().mulAlpha(this.progress) + ); + return; + case 569372749: + return; + case 1076800721: + } + + if (this.footerHeight() <= 0.0F) { + var4 = 569372749; + } else { + var4 = -387746124; + } + } + } + + private void renderTooltip(asq var1, mv var2, float var3, float var4) { + ge var5 = null; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = -1324149803; + + while (true) { + switch (var10) { + case -1324149803: + default: + if (this.tooltip == null) { + var10 = 23732689; + } else { + var10 = 1548616181; + } + break; + case 23732689: + return; + case 1548616181: + var5 = gl.MEDIUM.getFont(5.5F); + var6 = Math.min(var5.width(this.tooltip) + 12.0F, this.boxWidth - 20.0F); + var7 = var5.height() + 12.0F; + var8 = Mth.clamp(var3 + 10.0F, this.boxX + 10.0F, this.boxX + this.boxWidth - 10.0F - var6); + var9 = Mth.clamp(var4 + 10.0F, this.boxY + 10.0F, this.boxY + this.boxHeight - 10.0F - var7); + atb.drawShadow(var1.pose(), var8, var9, var6, var7, 12.0F, controlRadius(), var2.getColor().mulAlpha(this.progress * 0.4F)); + var1.drawSurface(aso.TOOLTIP, var8, var9, var6, var7, controlRadius(), var2.getForegroundColor().getRGBWithAlpha(this.progress)); + atb.drawRoundedBorder(var1.pose(), var8, var9, var6, var7, pk.borderHairline(), asj.all(oc.CARD), var2.getColor().mulAlpha(this.progress)); + var1.drawScrollingText( + var5, + this.tooltip, + var8 + 6.0F, + var9 + 6.0F, + var6 - 12.0F, + var2.getWhite().mulAlpha(this.progress), + (boolean)((((-762458645 | 762458645) + (-762458645 & 762458645)) + ) != 0)); + return; + } + } + } + + private void applyAnimatedBlur(float var1) { + int var2 = this.minecraft.options.getMenuBackgroundBlurriness(); + int var3 = Math.round(var1 * var2); + if (var3 > 0) { + this.minecraft + .gameRenderer + .globalSettingsUniform + .update( + this.minecraft.getWindow().getWidth(), + this.minecraft.getWindow().getHeight(), + (Double)this.minecraft.options.glintStrength().get(), + this.minecraft.level == null + ? (4860253770394961150L ^ -4860253770394961150L) + ((4860253770394961150L & -4860253770394961150L) << 1) + : this.minecraft.level.getGameTime(), + this.minecraft.getDeltaTracker(), + var3, + this.minecraft.gameRenderer.mainCamera().position(), + (boolean)(((this.minecraft.options.textureFiltering().get() == TextureFilteringMethod.RGSS + ? 1: (350840631 | -350840631) + (350840631 & -350840631)) + ) != 0)); + this.minecraft.gameRenderer.processBlurEffect(); + } + } + + protected void requestScroll(float var1) { + this.pendingScroll = Math.max(0.0F, var1); + } + + protected float visibleContentHeight() { + float var1 = xm.fitScale(this.width, this.height, this.windowWidth(), this.windowMaxHeight()); + return Math.min(this.windowMaxHeight(), this.height / var1 - 40.0F) - this.headerHeight() - this.footerHeight(); + } + + protected void requestTooltip(String var1) { + int var2 = -502112301; + + while (true) { + switch (var2) { + case -502112301: + default: + if (var1 != null) { + var2 = 1294184968; + } else { + var2 = 283386961; + } + break; + case 283386961: + return; + case 1294184968: + if (!var1.isEmpty()) { + var2 = 1662339835; + } else { + var2 = 283386961; + } + break; + case 1662339835: + this.tooltip = var1; + var2 = 283386961; + } + } + } + + protected float rowHover(int var1, boolean var2) { + if (var1 >= this.rowSprings.length) { + int var3 = Math.max( + var1 + 1, this.rowSprings.length * ((-2072729188 | 2072729190) + (-2072729188 & 2072729190)) + ); + this.rowSprings = Arrays.copyOf(this.rowSprings, var3); + } + + ct var4 = this.rowSprings[var1]; + if (var4 == null) { + var4 = asa.spring(); + this.rowSprings[var1] = var4; + } + + var4.animateTo(var2 ? 1.0F : 0.0F); + return var4.update(); + } + + protected float chromeHover(int var1, boolean var2) { + if (var1 >= 0 && var1 < this.chromeSprings.length) { + ct var3 = this.chromeSprings[var1]; + if (var3 == null) { + var3 = asa.spring(); + this.chromeSprings[var1] = var3; + } + + var3.animateTo(var2 ? 1.0F : 0.0F); + return var3.update(); + } else { + return var2 ? 1.0F : 0.0F; + } + } + + protected void resetRowHovers() { + Arrays.fill(this.rowSprings, null); + } + + protected boolean isInteractable() { + return this.frame.isInteractive(); + } + + protected void playClick() { + int var1 = -311459041; + + while (true) { + switch (var1) { + case -1336384558: + bz.getInstance().getSoundManager().playClick(); + var1 = 1603855626; + break; + case -311459041: + default: + if (bz.getInstance().getSoundManager() != null) { + var1 = -1336384558; + } else { + var1 = 1603855626; + } + break; + case 1603855626: + return; + } + } + } + + protected void playToggle(boolean var1) { + int var2 = -1061235258; + + while (true) { + switch (var2) { + case -1556526300: + return; + case -1257632714: + bz.getInstance().getSoundManager().playToggle(var1); + var2 = -1556526300; + break; + case -1061235258: + default: + if (bz.getInstance().getSoundManager() != null) { + var2 = -1257632714; + } else { + var2 = -1556526300; + } + } + } + } + + protected void open(Screen var1) { + this.playClick(); + this.minecraft.gui.setScreen(var1); + } + + protected int rowAt(double var1) { + float var3 = 0.0F; + int var4 = 0; + int var5 = 0; + float var6 = 0.0F; + int var7 = 2135466585; + + while (true) { + switch (var7) { + case -1168624596: + var3 = this.contentTop - (float)this.scrollHandler.getValue(); + var4 = this.rowCount(); + var5 = 0; + var7 = 1045280158; + break; + case -979080571: + return var5; + case -911488976: + var3 += var6; + var5++; + var7 = 1045280158; + break; + case 209548862: + if (var1 > this.contentBottom) { + var7 = 672874570; + } else { + var7 = -1168624596; + } + break; + case 210082281: + if (var1 < var3 + var6) { + var7 = -979080571; + } else { + var7 = -911488976; + } + break; + case 672874570: + return -1; + case 1041027937: + return -1; + case 1045280158: + if (var5 < var4) { + var7 = 1669193809; + } else { + var7 = 1041027937; + } + break; + case 1669193809: + var6 = this.rowHeight(var5); + if (var1 >= var3) { + var7 = 210082281; + } else { + var7 = -911488976; + } + break; + case 2135466585: + default: + if (!(var1 < this.contentTop)) { + var7 = 209548862; + } else { + var7 = 672874570; + } + } + } + } + + protected float rowTop(int var1) { + float var2 = 0.0F; + int var3 = 0; + int var4 = -1066732902; + + while (true) { + switch (var4) { + case -1929762012: + if (var3 < var1) { + var4 = 1359708350; + } else { + var4 = -381668141; + } + break; + case -1066732902: + default: + var2 = this.contentTop - (float)this.scrollHandler.getValue(); + var3 = 0; + var4 = -1929762012; + break; + case -381668141: + return var2; + case 1359708350: + var2 += this.rowHeight(var3); + var3++; + var4 = -1929762012; + } + } + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = 0; + int var14 = 279267552; + + while (true) { + switch (var14) { + case -1433310154: + if (this.scrollBar.press(var6, var8)) { + var14 = 941206140; + } else { + var14 = 1332403675; + } + break; + case -1342207912: + return; + case -1088934046: + this.clickRow(var13, this.rowTop(var13), var6, var8, var5); + var14 = 1247220220; + break; + case -1071906562: + this.clickChrome(var6, var8, var5); + var13 = this.rowAt(var8); + if (var13 >= 0) { + var14 = 2012968118; + } else { + var14 = 1247220220; + } + break; + case -915792944: + var6 = this.frame.toLocalX(var1); + var8 = this.frame.toLocalY(var3); + if (var5 == apf.LEFT) { + var14 = -1433310154; + } else { + var14 = 1332403675; + } + break; + case 279267552: + default: + if (!this.isInteractable()) { + var14 = -1342207912; + } else { + var14 = -915792944; + } + break; + case 941206140: + return; + case 1247220220: + return; + case 1332403675: + var10 = this.boxX + 10.0F; + var11 = this.boxY + 25.0F; + var12 = this.boxWidth - 20.0F; + if (this.searchField != null) { + var14 = 1457685066; + } else { + var14 = -1071906562; + } + break; + case 1457685066: + if (aqj.isHovered(var6, var8, var10, var11, var12, 14.0)) { + var14 = 1710830164; + } else { + var14 = -1071906562; + } + break; + case 1488202488: + if (var6 <= this.contentX + this.contentWidth) { + var14 = -1088934046; + } else { + var14 = 1247220220; + } + break; + case 1710830164: + this.searchField.setSelected((boolean)((((-789021325 ^ 789021326) + ((-789021325 & 789021326) << 1))) != 0)); + this.searchField.onMouseClicked(var6, var8, var5); + return; + case 2012968118: + if (var6 >= this.contentX) { + var14 = 1488202488; + } else { + var14 = 1247220220; + } + } + } + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + int var10 = 485134395; + + while (true) { + switch (var10) { + case -44216580: + this.scrollHandler.jumpTo(-this.scrollBar.dragTo(this.frame.toLocalY(var3))); + var10 = 524280112; + break; + case 485134395: + default: + if (this.scrollBar.isDragging()) { + var10 = -44216580; + } else { + var10 = 524280112; + } + break; + case 524280112: + return; + } + } + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + this.scrollBar.release(); + } + + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + this.scrollHandler.scroll(var7 * 3.0); + this.scrollBar.notifyScrolled(); + return (boolean)(((1)) != 0); + } + + @Override + public boolean charTyped(char var1, int var2) { + int var3 = 1613977311; + + while (true) { + switch (var3) { + case -1063241070: + if (this.searchField.isSelected()) { + var3 = -449370049; + } else { + var3 = -1001253353; + } + break; + case -1001253353: + return super.charTyped(var1, var2); + case -449370049: + if (this.searchField.charTyped(var1, var2)) { + var3 = 1336686534; + } else { + var3 = -1001253353; + } + break; + case 1336686534: + this.onSearchChanged(); + return (boolean)(((1)) != 0); + case 1613977311: + default: + if (this.searchField != null) { + var3 = -1063241070; + } else { + var3 = -1001253353; + } + } + } + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = -1900465786; + + while (true) { + switch (var4) { + case -1900465786: + default: + if (var1 == (116780223 ^ -116779967) + ((116780223 & -116779967) << 1)) { + var4 = -174519196; + } else { + var4 = 545686226; + } + break; + case -174519196: + this.onClose(); + return (boolean)(((1)) != 0); + case 467457014: + return super.keyPressed(var1, var2, var3); + case 545686226: + if (this.searchField != null) { + var4 = 629581120; + } else { + var4 = 467457014; + } + break; + case 629581120: + if (this.searchField.isSelected()) { + var4 = 1693747749; + } else { + var4 = 467457014; + } + break; + case 1355601214: + this.onSearchChanged(); + return (boolean)(((1)) != 0); + case 1693747749: + if (this.searchField.keyPressed(var1, var2, var3)) { + var4 = 1355601214; + } else { + var4 = 467457014; + } + } + } + } + + public void onClose() { + int var1 = -2010429933; + + while (true) { + switch (var1) { + case -2125232503: + bz.getInstance().getSoundManager().playClose(); + var1 = 1674234919; + break; + case -2010429933: + default: + if (this.frame.isClosing()) { + var1 = 1501713610; + } else { + var1 = -1624370259; + } + break; + case -1624370259: + this.frame.beginClose(); + if (bz.getInstance().getSoundManager() != null) { + var1 = -2125232503; + } else { + var1 = 1674234919; + } + break; + case 1501713610: + return; + case 1674234919: + return; + } + } + } +} diff --git a/src/main/java/defpackage/acz.java b/src/main/java/defpackage/acz.java new file mode 100644 index 0000000..6fd0b24 --- /dev/null +++ b/src/main/java/defpackage/acz.java @@ -0,0 +1,110 @@ +package defpackage; + +import com.viaversion.viafabricplus.screen.impl.PerServerVersionScreen; +import com.viaversion.viafabricplus.screen.impl.SettingsScreen; +import com.viaversion.viafabricplus.screen.impl.ViaFabricPlusScreen; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.gui.screens.Screen; + +public final class acz { + private static final String VIA_MOD_ID = "viafabricplus"; + private static final acz INSTANCE = new acz(); + private static boolean available; + + private acz() { + } + + public static void initialize() { + int var0 = -1153143809; + + while (true) { + switch (var0) { + case -1153143809: + default: + available = FabricLoader.getInstance() + .isModLoaded("viafabricplus"); + if (available) { + var0 = 1110192646; + } else { + var0 = -424220321; + } + break; + case -424220321: + return; + case 1110192646: + j.register(INSTANCE); + var0 = -424220321; + } + } + } + + @k + public void onSetScreen(eu var1) { + Screen var2 = null; + int var3 = -961439635; + + while (true) { + switch (var3) { + case -1880048882: + return; + case -1629110579: + var1.setScreen(var2); + var3 = -1880048882; + break; + case -961439635: + default: + var2 = restyle(var1.getScreen()); + if (var2 != null) { + var3 = -1629110579; + } else { + var3 = -1880048882; + } + } + } + } + + private static Screen restyle(Screen var0) { + b.k var1 = null; + b.k var2 = null; + int var3 = -481334439; + + while (true) { + switch (var3) { + case -1714716558: + if (var0 instanceof SettingsScreen) { + var3 = 282003572; + } else { + var3 = 1289064873; + } + break; + case -541368600: + var1 = (PerServerVersionScreen)var0; + var2 = var1; + return new acx(var1.prevScreen, var2.evo$selectionConsumer(), var2.evo$selectionSupplier()); + case -481334439: + default: + if (var0 instanceof ViaFabricPlusScreen) { + var3 = 1416768364; + } else { + var3 = -1714716558; + } + break; + case -336635019: + return null; + case 282003572: + SettingsScreen var5 = (SettingsScreen)var0; + return new adc(var5.prevScreen); + case 1289064873: + if (var0 instanceof PerServerVersionScreen) { + var3 = -541368600; + } else { + var3 = -336635019; + } + break; + case 1416768364: + var1 = (ViaFabricPlusScreen)var0; + return new acx(((ViaFabricPlusScreen)var1).prevScreen); + } + } + } +} diff --git a/src/main/java/defpackage/ad.java b/src/main/java/defpackage/ad.java new file mode 100644 index 0000000..8c0f1c6 --- /dev/null +++ b/src/main/java/defpackage/ad.java @@ -0,0 +1,15 @@ +package defpackage; + +public class ad { + public boolean canDamage; + public boolean canKnockback; + public boolean canDismount; + public boolean hitImpact; + + public ad(boolean var1, boolean var2, boolean var3, boolean var4) { + this.canDamage = var1; + this.canKnockback = var2; + this.canDismount = var3; + this.hitImpact = var4; + } +} diff --git a/src/main/java/defpackage/ada.java b/src/main/java/defpackage/ada.java new file mode 100644 index 0000000..752d264 --- /dev/null +++ b/src/main/java/defpackage/ada.java @@ -0,0 +1,8 @@ +package defpackage; + +enum ada { + HEADER, + BOOLEAN, + VERSIONED, + ENUM; +} diff --git a/src/main/java/defpackage/adb.java b/src/main/java/defpackage/adb.java new file mode 100644 index 0000000..62657d6 --- /dev/null +++ b/src/main/java/defpackage/adb.java @@ -0,0 +1,6 @@ +package defpackage; + +import com.viaversion.viafabricplus.api.settings.base.Setting; + +record adb(Setting setting, String label, String detail, String search, ada kind) { +} diff --git a/src/main/java/defpackage/adc.java b/src/main/java/defpackage/adc.java new file mode 100644 index 0000000..8361ada --- /dev/null +++ b/src/main/java/defpackage/adc.java @@ -0,0 +1,482 @@ +package defpackage; + +import com.viaversion.viafabricplus.ViaFabricPlus; +import com.viaversion.viafabricplus.api.settings.base.BooleanSetting; +import com.viaversion.viafabricplus.api.settings.base.EnumSetting; +import com.viaversion.viafabricplus.api.settings.base.Setting; +import com.viaversion.viafabricplus.api.settings.base.SettingGroup; +import com.viaversion.viafabricplus.api.settings.base.VersionedBooleanSetting; +import com.viaversion.viafabricplus.api.settings.base.EnumSetting.EnumValue; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import net.minecraft.client.gui.screens.Screen; + +public final class adc extends acy { + private static final float WINDOW_WIDTH = 388.0F; + private static final float WINDOW_MAX_HEIGHT = 360.0F; + private static final float HEADER_ROW_HEIGHT = 19.0F; + private static final float CONTROL_ROW_HEIGHT = 18.0F; + private static final float VERSIONED_ROW_HEIGHT = 23.0F; + private static final float ROW_INSET = 8.0F; + private static final float ROW_EDGE = 7.0F; + private static final float LABEL_GAP = 8.0F; + private static final float MODE_MAX_WIDTH = 126.0F; + private static final float HOVER_TINT = 0.45F; + private static final float HEADER_ALPHA = 0.8F; + private static final float DETAIL_ALPHA = 0.75F; + private static final float LABEL_IDLE = 0.82F; + private static final float LINE_GAP = 2.0F; + private static final float DIVIDER_ALPHA = 0.35F; + private static final float DIVIDER_THICKNESS = 1.0F; + private static final String TITLE = "ViaFabricPlus"; + private static final String SEARCH_PLACEHOLDER = "Search settings"; + private static final String EMPTY_MESSAGE = "No settings match"; + private static final String STATUS_SUFFIX = " settings"; + private final List rows = new ArrayList<>(); + private final List allRows = new ArrayList<>(); + private final Map toggleAnimations = new HashMap<>(); + private String statusLabel; + + public adc(Screen var1) { + super(var1); + } + + @Override + protected void init() { + super.init(); + this.buildRows(); + this.rebuildRows(); + } + + private void buildRows() { + int var1 = 0; + Iterator var2 = null; + SettingGroup var3 = null; + Iterator var4 = null; + Setting var5 = null; + ada var6 = null; + String var7 = null; + String var8 = null; + String var10 = null; + int var9 = 1329214716; + + while (true) { + switch (var9) { + case -1195304161: + var10 = ((VersionedBooleanSetting)var5).versionRange().toString(); + var9 = 347325886; + break; + case -152866598: + var10 = ""; + var9 = 347325886; + break; + case 243277429: + var3 = (SettingGroup)var2.next(); + this.allRows.add(new adb(null, var3.name().getString(), "", "", ada.HEADER)); + var4 = var3.settings().iterator(); + var9 = 444876072; + break; + case 347325886: + var8 = var10; + this.allRows.add(new adb(var5, var7, var8, var7.toLowerCase(Locale.ROOT), var6)); + var1++; + var9 = 444876072; + break; + case 444876072: + if (var4.hasNext()) { + var9 = 1159240235; + } else { + var9 = 937806551; + } + break; + case 682084980: + var9 = 444876072; + break; + case 937806551: + var9 = 1373839787; + break; + case 1001686611: + var7 = var5.name().getString(); + if (var6 == ada.VERSIONED) { + var9 = -1195304161; + } else { + var9 = -152866598; + } + break; + case 1078216646: + this.statusLabel = var1 + " settings"; + return; + case 1159240235: + var5 = (Setting)var4.next(); + var6 = kindOf(var5); + if (var6 == null) { + var9 = 682084980; + } else { + var9 = 1001686611; + } + break; + case 1329214716: + default: + this.allRows.clear(); + var1 = 0; + var2 = ViaFabricPlus.api().settings().groups().iterator(); + var9 = 1373839787; + break; + case 1373839787: + if (var2.hasNext()) { + var9 = 243277429; + } else { + var9 = 1078216646; + } + } + } + } + + private static ada kindOf(Setting var0) { + return switch (var0) { + case VersionedBooleanSetting var3 -> ada.VERSIONED; + case BooleanSetting var4 -> ada.BOOLEAN; + case EnumSetting var5 -> ada.ENUM; + default -> null; + }; + } + + private void rebuildRows() { + String var1 = null; + adb var2 = null; + Iterator var3 = null; + adb var4 = null; + int var5 = -1788770804; + + while (true) { + switch (var5) { + case -1788770804: + default: + this.rows.clear(); + this.resetRowHovers(); + var1 = this.searchText(); + var2 = null; + var3 = this.allRows.iterator(); + var5 = 410619390; + break; + case -1685142252: + this.rows.add(var2); + var2 = null; + var5 = 461015468; + break; + case -1345163794: + var5 = 410619390; + break; + case -1088725045: + this.rows.remove(this.rows.size() - ((-1385802346 ^ 1385802347) + ((-1385802346 & 1385802347) << 1))); + var5 = 1925050740; + break; + case -1017909027: + if (!var1.isEmpty()) { + var5 = 127924262; + } else { + var5 = 1442757547; + } + break; + case -939397359: + this.rows.add(var4); + var2 = null; + var5 = 410619390; + break; + case -878906268: + var2 = var4; + if (var1.isEmpty()) { + var5 = -939397359; + } else { + var5 = 410619390; + } + break; + case -198223262: + if (this.rows.get(this.rows.size() - (1)).kind() == ada.HEADER) { + var5 = -1088725045; + } else { + var5 = 700345782; + } + break; + case 127924262: + if (!var4.search().contains(var1)) { + var5 = -1345163794; + } else { + var5 = 1442757547; + } + break; + case 410619390: + if (var3.hasNext()) { + var5 = 2059501652; + } else { + var5 = 1925050740; + } + break; + case 461015468: + this.rows.add(var4); + var5 = 410619390; + break; + case 700345782: + return; + case 1442757547: + if (var2 != null) { + var5 = -1685142252; + } else { + var5 = 461015468; + } + break; + case 1925050740: + if (!this.rows.isEmpty()) { + var5 = -198223262; + } else { + var5 = 700345782; + } + break; + case 2059501652: + var4 = (adb)var3.next(); + if (var4.kind() == ada.HEADER) { + var5 = -878906268; + } else { + var5 = -1017909027; + } + } + } + } + + @Override + protected float windowWidth() { + return 388.0F; + } + + @Override + protected float windowMaxHeight() { + return 360.0F; + } + + @Override + protected String windowTitle() { + return "ViaFabricPlus"; + } + + @Override + protected String searchPlaceholder() { + return "Search settings"; + } + + @Override + protected String headerStatus() { + return this.statusLabel; + } + + @Override + protected String emptyMessage() { + return "No settings match"; + } + + @Override + protected void onSearchChanged() { + this.rebuildRows(); + } + + @Override + protected int rowCount() { + return this.rows.size(); + } + + @Override + protected float rowHeight(int var1) { + return switch (this.rows.get(var1).kind()) { + case HEADER -> 19.0F; + case VERSIONED -> 23.0F; + default -> 18.0F; + }; + } + + @Override + protected void renderRow(asq var1, mv var2, int var3, float var4, float var5, float var6, float var7, float var8, float var9) { + adb var10 = this.rows.get(var3); + ge var11 = gl.MEDIUM.getFont(7.0F); + ge var12 = gl.MEDIUM.getFont(5.5F); + float var13 = this.rowHeight(var3); + if (var10.kind() == ada.HEADER) { + ge var21 = gl.SEMIBOLD.getFont(5.5F); + float var22 = var5 + var13 - var21.height() - 4.0F; + var1.drawText(var21, var10.label(), var4 + 8.0F, var22, var2.getColor().mulAlpha(var7 * 0.8F)); + float var23 = var22 + var21.height() / 2.0F; + float var24 = var4 + 8.0F + var21.width(var10.label()) + 8.0F; + var1.drawRect(var24, var23, var4 + var6 - 7.0F - var24, 1.0F, var2.getForegroundStroke().mulAlpha(var7 * 0.35F)); + } else { + int var14 = aqj.isHovered(var8, var9, var4, var5, var6, var13) && var9 >= this.contentTop && var9 <= this.contentBottom + ? 1: 0; + float var15 = this.rowHover(var3, (boolean)((var14) != 0)); + if (var15 > 0.0F) { + var1.drawSurface(aso.ROW, var4, var5, var6, var13, asj.all(oc.ROW), var2.getForegroundColor().mulAlpha(var7 * 0.45F * var15).getRGB()); + } + + float var16 = var4 + var6 - 7.0F; + float var17 = this.renderControl(var1, var2, var10, var16, var5, var13, var7, var8, var9, var15, var3); + asu var18 = var2.getWhite().mulAlpha(var7 * (0.82F + 0.18F * var15)); + float var19 = var17 - 8.0F - (var4 + 8.0F); + if (var10.detail().isEmpty()) { + var1.drawScrollingText(var11, var10.label(), var4 + 8.0F, var5 + (var13 - var11.height()) / 2.0F + 0.5F, var19, var18, (boolean)((var14) != 0)); + } else { + float var20 = var5 + (var13 - var11.height() - var12.height() - 2.0F) / 2.0F; + var1.drawScrollingText(var11, var10.label(), var4 + 8.0F, var20, var19, var18, (boolean)((var14) != 0)); + var1.drawScrollingText( + var12, + var10.detail(), + var4 + 8.0F, + var20 + var11.height() + 2.0F, + var19, + var2.getGrayLight().mulAlpha(var7 * 0.75F), + (boolean)((((1994025733 | -1994025733) + (1994025733 & -1994025733)) + ) != 0)); + } + } + } + + private float renderControl(asq var1, mv var2, adb var3, float var4, float var5, float var6, float var7, float var8, float var9, float var10, int var11) { + switch (var3.kind()) { + case BOOLEAN: + case VERSIONED: + boolean var17 = toggleState(var3); + float var18 = var4 - 18.0F; + float var19 = var5 + (var6 - 10.0F) / 2.0F; + add.toggle(var1, var2, var18, var19, 18.0F, 10.0F, this.animate(var3.setting(), var17), var7); + return var18; + case ENUM: + EnumSetting var12 = (EnumSetting)var3.setting(); + String var13 = var12.value().component().getString(); + float var14 = Math.min(add.chipWidth(var13), 126.0F); + float var15 = var4 - var14; + float var16 = var5 + (var6 - 12.0F) / 2.0F; + add.chip(var1, var2, var15, var16, var14, 12.0F, var13, (boolean)(((0)) != 0), var10, var7); + return var15; + default: + return var4; + } + } + + private static boolean toggleState(adb var0) { + int var2 = 0; + int var1 = -89560808; + + while (true) { + switch (var1) { + case -89560808: + default: + if (var0.kind() == ada.VERSIONED) { + var1 = 1569891313; + } else { + var1 = 1213596928; + } + break; + case 46604000: + return (boolean)((var2) != 0); + case 1213596928: + var2 = (((BooleanSetting)var0.setting()).isActive()) ? 1 : 0; + var1 = 46604000; + break; + case 1569891313: + var2 = (((VersionedBooleanSetting)var0.setting()).value()) ? 1 : 0; + var1 = 46604000; + } + } + } + + private float animate(Setting var1, boolean var2) { + ct var3 = this.toggleAnimations.computeIfAbsent(var1, var0 -> ct.layout(ob.SETTLED, 0.0F)); + var3.animateTo(var2 ? 1.0F : 0.0F); + return var3.update(); + } + + @Override + protected void clickRow(int var1, float var2, double var3, double var5, apf var7) { + adb var8 = this.rows.get(var1); + if (var8.kind() != ada.HEADER) { + int var9 = var7 == apf.LEFT + ? 1: 0; + int var10 = var7 == apf.RIGHT + ? 1: 0; + if (var9 != 0 || var10 != 0) { + switch (var8.kind()) { + case BOOLEAN: + case VERSIONED: + if (var9 == 0) { + return; + } + + BooleanSetting var11 = (BooleanSetting)var8.setting(); + int var12 = !toggleState(var8) + ? 1: 0; + var11.setActive((boolean)((var12) != 0)); + this.playToggle((boolean)((var12) != 0)); + break; + case ENUM: + cycle( + (EnumSetting)var8.setting(), + var9 != 0 ? 1: (2056478951 | -2056478952) + (2056478951 & -2056478952) + ); + this.playClick(); + } + } + } + } + + private static void cycle(EnumSetting var0, int var1) { + EnumValue[] var2 = null; + int var3 = 0; + int var4 = 0; + int var5 = -1558149077; + + while (true) { + switch (var5) { + case -1558149077: + default: + var2 = var0.values(); + if (var2.length == 0) { + var5 = 1592297050; + } else { + var5 = 1469496434; + } + break; + case -1408159528: + var0.setValue(var2[Math.floorMod(var3 + var1, var2.length)]); + return; + case -1178052978: + var3 = var4; + var5 = -1408159528; + break; + case -1145847361: + var4++; + var5 = -61623220; + break; + case -61623220: + if (var4 < var2.length) { + var5 = 853278065; + } else { + var5 = -1408159528; + } + break; + case 853278065: + if (var2[var4] == var0.value()) { + var5 = -1178052978; + } else { + var5 = -1145847361; + } + break; + case 1469496434: + var3 = 0; + var4 = 0; + var5 = -61623220; + break; + case 1592297050: + return; + } + } + } +} diff --git a/src/main/java/defpackage/add.java b/src/main/java/defpackage/add.java new file mode 100644 index 0000000..60042b5 --- /dev/null +++ b/src/main/java/defpackage/add.java @@ -0,0 +1,200 @@ +package defpackage; + +public final class add { + public static final float CHIP_HEIGHT = 12.0F; + public static final float TOGGLE_WIDTH = 18.0F; + public static final float TOGGLE_HEIGHT = 10.0F; + private static final float CHIP_TEXT_PADDING = 6.0F; + private static final float CHIP_IDLE_ALPHA = 0.55F; + private static final float CHIP_HOVER_ALPHA = 0.35F; + private static final float CHIP_ACTIVE_ALPHA = 0.85F; + private static final float CHIP_GLOW_ALPHA = 0.35F; + private static final float ICON_GAP = 3.0F; + private static final float ICON_FONT = 5.0F; + private static final float TEXT_BASELINE_NUDGE = 0.5F; + private static final float TOGGLE_TRACK_MIX = 0.5F; + private static final float TOGGLE_ON_ALPHA = 0.6F; + private static final float TOGGLE_THUMB_INSET = 1.5F; + private static final float TOGGLE_THUMB_MARGIN = 3.0F; + private static final float TOGGLE_SHADOW = 6.0F; + private static final float TOGGLE_SHADOW_ALPHA = 0.16F; + private static final float TOGGLE_VISIBLE_EPSILON = 0.05F; + + private add() { + } + + private static arq chipRadius() { + return asj.all(oc.CHIP); + } + + private static arq toggleRadius() { + return asj.all(oc.ROW); + } + + private static arq thumbRadius() { + return asj.all(oc.CONTROL); + } + + public static float chipWidth(String var0) { + return gl.MEDIUM.getFont(5.5F).width(var0) + 12.0F; + } + + public static float chipWidth(String var0, String var1) { + ge var2 = gl.ICONS.getFont(5.0F); + return chipWidth(var0) + var2.width(var1) + 3.0F; + } + + public static void chip(asq var0, mv var1, float var2, float var3, float var4, float var5, String var6, boolean var7, float var8, float var9) { + chip(var0, var1, var2, var3, var4, var5, var6, null, var7, var8, var9); + } + + public static void chip(asq var0, mv var1, float var2, float var3, float var4, float var5, String var6, String var7, boolean var8, float var9, float var10) { + int var11 = 0; + asu var12 = null; + ge var13 = null; + asu var14 = null; + float var15 = 0.0F; + float var16 = 0.0F; + ge var17 = null; + float var18 = 0.0F; + asu var20 = null; + asu var21 = null; + int var19 = -634172459; + + while (true) { + switch (var19) { + case -1728675402: + atb.drawActiveGlow(var0.pose(), var2, var3, var4, var5, chipRadius(), var10, var1.getColor().getRGBWithAlpha(var10 * 0.35F)); + var19 = -1647709072; + break; + case -1702984208: + var20 = var1.getColor().mulAlpha(var10 * 0.85F); + var19 = 520715176; + break; + case -1647709072: + var13 = gl.MEDIUM.getFont(5.5F); + if (var8) { + var19 = 2129589585; + } else { + var19 = -1193191308; + } + break; + case -1193191308: + var21 = asa.liftText(var1.getGrayLight(), var1, var9).mulAlpha(var10); + var19 = 1540831122; + break; + case -1056390322: + var17 = gl.ICONS.getFont(5.0F); + var16 = var17.width(var7) + 3.0F; + var15 += var16; + var19 = -233589085; + break; + case -803515821: + var20 = var1.getForegroundColor().mulAlpha(var10 * (0.55F + 0.35F * var9)); + var19 = 520715176; + break; + case -634172459: + default: + asa.plateControl(var0, var2, var3, var4, var5, asa.plateColor(var1), var10, var9); + var11 = (asa.push(var0, var2, var3, var4, var5, var9, 0.05F)) ? 1 : 0; + if (var8) { + var19 = -1702984208; + } else { + var19 = -803515821; + } + break; + case -233589085: + var18 = var2 + (var4 - var15) / 2.0F; + if (var17 != null) { + var19 = 1629030564; + } else { + var19 = 41891100; + } + break; + case 41891100: + var0.drawText(var13, var6, var18, var3 + (var5 - var13.height()) / 2.0F + 0.5F, var14); + asa.pop(var0, (boolean)((var11) != 0)); + return; + case 520715176: + var12 = var20; + var0.drawSurface(aso.CONTROL, var2, var3, var4, var5, chipRadius(), var12.getRGB()); + if (var8) { + var19 = -1728675402; + } else { + var19 = 1820037989; + } + break; + case 946442543: + atb.drawRoundedBorder(var0.pose(), var2, var3, var4, var5, pk.borderHairline(), chipRadius(), var1.getColor().mulAlpha(var10 * var9)); + var19 = -1647709072; + break; + case 1540831122: + var14 = var21; + var15 = var13.width(var6); + var16 = 0.0F; + var17 = null; + if (var7 != null) { + var19 = -1056390322; + } else { + var19 = -233589085; + } + break; + case 1629030564: + var0.drawText(var17, var7, var18, var3 + (var5 - var17.height()) / 2.0F + 0.5F, var14); + var18 += var16; + var19 = 41891100; + break; + case 1820037989: + if (var9 > 0.0F) { + var19 = 946442543; + } else { + var19 = -1647709072; + } + break; + case 2129589585: + var21 = var1.getWhite().mulAlpha(var10); + var19 = 1540831122; + } + } + } + + public static void toggle(asq var0, mv var1, float var2, float var3, float var4, float var5, float var6, float var7) { + int var8 = 0; + int var9 = 0; + int var10 = 0; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = 123032374; + + while (true) { + switch (var15) { + case -1279912862: + atb.drawActiveGlow(var0.pose(), var2, var3, var4, var5, toggleRadius(), var6 * var7, asu.getRGBWithAlpha(var8, var7)); + var0.drawSurface(aso.CONTROL, var2, var3, var4, var5, toggleRadius(), var10); + var11 = var5 - 3.0F; + var12 = var4 - var11 - 3.0F; + var13 = var2 + 1.5F + var12 * var6; + var14 = var3 + 1.5F; + atb.drawShadow(var0.pose(), var13, var14, var11, var11, 6.0F, thumbRadius(), var1.getWhite().getRGBWithAlpha(0.16F * var7)); + var0.drawRoundedRect(var13, var14, var11, var11, thumbRadius(), var1.getWhite().getRGBWithAlpha(var7)); + return; + case -1133519692: + atb.drawShadow(var0.pose(), var2, var3, var4, var5, 6.0F, toggleRadius(), asu.getRGBWithAlpha(var8, var6 * var7 * 0.16F)); + var15 = -1279912862; + break; + case 123032374: + default: + var8 = var1.getColor().getRGB(); + var9 = asu.mixRGB(var1.getForegroundColor().getRGB(), asu.getRGBWithAlpha(var8, 0.6F), var6, 1.0F); + var10 = asu.mixRGB(var1.getWhite().getRGB(), var9, 0.5F, var7 * 0.5F); + if (var6 > 0.05F) { + var15 = -1133519692; + } else { + var15 = -1279912862; + } + } + } + } +} diff --git a/src/main/java/defpackage/ade.java b/src/main/java/defpackage/ade.java new file mode 100644 index 0000000..3d5ad64 --- /dev/null +++ b/src/main/java/defpackage/ade.java @@ -0,0 +1,53 @@ +package defpackage; + +import net.minecraft.util.Mth; + +final class ade { + final afb[][] tailSprings = new afb[adf.TAIL_BONES.length][]; + final afb earY = new afb(0.1F, 0.8F); + final afb earX = new afb(0.1F, 0.8F); + final afb earZ = new afb(0.1F, 0.8F); + float prevBodyYaw; + boolean oldCrouch; + long lastNanos; + + ade() { + for (int var1 = 0; var1 < adf.TAIL_BONES.length; var1++) { + afb[][] var10000 = this.tailSprings; + afb[] var10002 = new afb[2]; + var10002[0] = new afb(0.005F, 0.9F); + var10002[1] = new afb(0.005F, 0.9F); + var10000[var1] = var10002; + } + } + + afb[] tail(int var1) { + return this.tailSprings[var1]; + } + + float advance() { + long var1 = (-1309972974602951588L ^ 1309972974602951588L) + ((-1309972974602951588L & 1309972974602951588L) << 1); + float var3 = 0.0F; + int var4 = 1546447656; + + while (true) { + switch (var4) { + case -1745548978: + var3 = (float)(var1 - this.lastNanos) / 5.0E7F; + this.lastNanos = var1; + return Mth.clamp(var3, 0.05F, 2.0F); + case 1490610270: + this.lastNanos = var1; + return 1.0F; + case 1546447656: + } + + var1 = System.nanoTime(); + if (this.lastNanos == (-6235479499891560257L | 6235479499891560257L) + (-6235479499891560257L & 6235479499891560257L)) { + var4 = 1490610270; + } else { + var4 = -1745548978; + } + } + } +} diff --git a/src/main/java/defpackage/adf.java b/src/main/java/defpackage/adf.java new file mode 100644 index 0000000..38b5a8d --- /dev/null +++ b/src/main/java/defpackage/adf.java @@ -0,0 +1,364 @@ +package defpackage; + +import java.util.Locale; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +public final class adf { + private static adf instance; + private static final float TAIL_IDLE_X = 1.0F; + private static final float TAIL_IDLE_Y = 8.0F; + private static final float TAIL_IDLE_X_SPEED = 1.2F; + private static final float TAIL_IDLE_Y_SPEED = 1.0F; + private static final float TAIL_BEND = 2.0F; + private static final float TAIL_VELOCITY_PUSH = 0.0F; + private static final float TAIL_OFFSET_BETWEEN = 1.0F; + private static final float TAIL_STIFF = 0.005F; + private static final float TAIL_BOUNCE = 0.9F; + private static final float TAIL_FLYING_OFFSET = 90.0F; + private static final float EAR_RANGE = 1.0F; + private static final float EAR_BEND = 4.0F; + private static final float EAR_STIFF = 0.1F; + private static final float EAR_BOUNCE = 0.8F; + static final String[] TAIL_BONES; + private static final float[] DEFAULT_BASE; + private final Map states = new ConcurrentHashMap<>(); + + public static adf getInstance() { + int var0 = -186812749; + + while (true) { + switch (var0) { + case -1447960303: + instance = new adf(); + var0 = 655422648; + break; + case -186812749: + default: + if (instance == null) { + var0 = -1447960303; + } else { + var0 = 655422648; + } + break; + case 655422648: + return instance; + } + } + } + + public void apply(aif var1, Map var2, AbstractClientPlayer var3) { + ade var4 = null; + float var5 = 0.0F; + Vec3 var6 = null; + double var7 = 0.0; + double var9 = 0.0; + double var11 = 0.0; + float var13 = 0.0F; + float var14 = 0.0F; + ClientLevel var15 = null; + long var16 = (-8801937826679886960L | 8801937826679886960L) + (-8801937826679886960L & 8801937826679886960L); + int var18 = 0; + long var20 = (-6042035859064603776L | 6042035859064603776L) + (-6042035859064603776L & 6042035859064603776L); + int var22 = 0; + int var19 = -1172861201; + + while (true) { + switch (var19) { + case -1939452465: + var18 = var22; + this.applyTail(var1, var2, var4, var5, var16, var7, var9, var11, var14, (boolean)((var18) != 0)); + this.applyEars(var1, var2, var4, var5, var3, var7, var9, var11); + return; + case -1233793861: + var4 = this.states.computeIfAbsent(var3.getScoreboardName().toLowerCase(Locale.ROOT), var0 -> new ade()); + var5 = var4.advance(); + var6 = var3.getDeltaMovement(); + var7 = this.forwardVel(var3, var6); + var9 = var6.y; + var11 = this.sideVel(var3, var6); + var13 = var3.getVisualRotationYInDegrees(); + var14 = Mth.clamp(Mth.wrapDegrees(var13 - var4.prevBodyYaw), -20.0F, 20.0F); + var4.prevBodyYaw = var13; + var15 = Minecraft.getInstance().level; + if (var15 == null) { + var19 = -1415768; + } else { + var19 = 243360324; + } + break; + case -1172861201: + default: + if (var3 == null) { + var19 = 1610572036; + } else { + var19 = -1233793861; + } + break; + case -899395158: + if (var3.isVisuallySwimming()) { + var19 = -820232236; + } else { + var19 = 311771416; + } + break; + case -820232236: + var22 = 1; + var19 = -1939452465; + break; + case -1415768: + var20 = var3.tickCount; + var19 = 736825024; + break; + case 243360324: + var20 = var15.getGameTime(); + var19 = 736825024; + break; + case 311771416: + var22 = 0; + var19 = -1939452465; + break; + case 736825024: + var16 = var20; + if (!var3.isFallFlying()) { + var19 = -899395158; + } else { + var19 = -820232236; + } + break; + case 1610572036: + return; + } + } + } + + private void applyTail( + aif var1, Map var2, ade var3, float var4, long var5, double var7, double var9, double var11, float var13, boolean var14 + ) { + float var15 = 0.0F; + int var16 = 0; + float var17 = 0.0F; + float var18 = 0.0F; + Object var19 = null; + float var20 = 0.0F; + float var21 = 0.0F; + int var22 = -1557641092; + + while (true) { + switch (var22) { + case -1868160584: + var19 = var3.tail(var16 - ((-1108909353 ^ 1108909354) + ((-1108909353 & 1108909354) << 1))); + var20 = ((afb)((Object[])var19)[1]).berp(var18, var4); + var21 = ((afb)((Object[])var19)[0]).berp(var17, var4); + this.applyOffset(var1, var2, TAIL_BONES[var16 - (1)], var20, var21, 0.0F); + var16++; + var22 = -491211487; + break; + case -1557641092: + default: + var15 = (float)(2.0 / (Math.abs(var9 * 30.0) + var7 * 30.0 + 1.0)); + var16 = 1; + var22 = -491211487; + break; + case -1271783327: + if (var14) { + var22 = 734921760; + } else { + var22 = -1868160584; + } + break; + case -1119361755: + return; + case -1001029343: + var17 = (float)(Math.sin((float)var5 * 1.2F / 10.0 - var16 * 1.0F) * 1.0); + var18 = (float)(Math.sin((float)var5 * 1.0F / 10.0 - var16 * 1.0F) * 8.0); + var17 += var13 * var15 + (float)(var11 * var15 * 40.0); + var18 += (float)(var9 * 15.0 * var15 - var7 * var15 * 15.0 * 0.0); + if (var16 == (-921322695 ^ 921322696) + ((-921322695 & 921322696) << 1)) { + var22 = -1271783327; + } else { + var22 = -1868160584; + } + break; + case -491211487: + if (var16 <= TAIL_BONES.length) { + var22 = -1001029343; + } else { + var22 = -1119361755; + } + break; + case 734921760: + var18 = 90.0F; + var22 = -1868160584; + } + } + } + + private void applyEars(aif var1, Map var2, ade var3, float var4, AbstractClientPlayer var5, double var6, double var8, double var10) { + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + int var17 = 0; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + int var24 = -224618068; + + while (true) { + switch (var24) { + case -1792783784: + if (var17 == 0) { + var24 = -1688360370; + } else { + var24 = -426187419; + } + break; + case -1688360370: + if (var3.oldCrouch) { + var24 = 191802899; + } else { + var24 = -426187419; + } + break; + case -1641041470: + var3.earY.vel += 20.0F; + var24 = -426187419; + break; + case -426187419: + var3.oldCrouch = (boolean)((var17) != 0); + var18 = 4.0F; + if (var15 < -22.5F) { + var24 = 181506970; + } else { + var24 = -343318428; + } + break; + case -343318428: + var19 = var15 * 1.0F + 2.0F * var18 * (var13 + var12 * 15.0F); + var20 = var16 * 1.0F - var14 * 100.0F * 4.0F; + var21 = var3.earY.berp(var19, var4); + var22 = var3.earX.berp(var20, var4); + var23 = var3.earZ.berp(var20, var4); + this.applyOffset( + var1, var2, "LeftEar", var21, var22 / 4.0F, var22 / 4.0F + ); + this.applyOffset(var1, var2, "RightEar", var21, var23 / 4.0F, var23 / 4.0F); + return; + case -224618068: + default: + var12 = (float)Mth.clamp(var6, -0.75, 0.75); + var13 = (float)(Mth.clamp(var8, -1.5, 1.5) * 5.0); + var14 = (float)Mth.clamp(var10, -0.5, 0.5); + var15 = Mth.wrapDegrees(var5.getXRot()); + var16 = Mth.wrapDegrees(var5.getYHeadRot() - var5.getVisualRotationYInDegrees()); + var17 = (var5.isShiftKeyDown()) ? 1 : 0; + if (var17 != 0) { + var24 = 1495771343; + } else { + var24 = -1792783784; + } + break; + case 181506970: + var18 = -var18; + var24 = -343318428; + break; + case 191802899: + var3.earY.vel -= 20.0F; + var24 = -426187419; + break; + case 1495771343: + if (!var3.oldCrouch) { + var24 = -1641041470; + } else { + var24 = -1792783784; + } + } + } + } + + private void applyOffset(aif var1, Map var2, String var3, float var4, float var5, float var6) { + aig var7 = null; + Object var8 = null; + int var9 = 448653730; + + while (true) { + switch (var9) { + case 261590112: + var8 = var2.getOrDefault(var3, DEFAULT_BASE); + var7.setRotX(((Object[])var8)[0] + (float)Math.toRadians(-var4)); + var7.setRotY(((Object[])var8)[1] + (float)Math.toRadians(-var5)); + var7.setRotZ(((Object[])var8)[2] + (float)Math.toRadians(var6)); + return; + case 448653730: + default: + var7 = var1.findPart(var3).orElse(null); + if (var7 == null) { + var9 = 565316831; + } else { + var9 = 261590112; + } + break; + case 565316831: + return; + } + } + } + + private double forwardVel(AbstractClientPlayer var1, Vec3 var2) { + Vec3 var3 = null; + double var4 = 0.0; + int var6 = -1439516975; + + while (true) { + switch (var6) { + case -1656718721: + return (var2.x * var3.x + var2.z * var3.z) / var4; + case -1439516975: + default: + var3 = var1.getLookAngle(); + var4 = Math.sqrt(var3.x * var3.x + var3.z * var3.z); + if (var4 < 1.0E-6) { + var6 = 1652503284; + } else { + var6 = -1656718721; + } + break; + case 1652503284: + return 0.0; + } + } + } + + private double sideVel(AbstractClientPlayer var1, Vec3 var2) { + double var3 = Math.toRadians(var1.getYRot()); + return var2.x * Math.cos(var3) - var2.z * Math.sin(var3); + } + + static { + String[] var10000 = new String[2]; + var10000[0] = "Tail"; + var10000[1] = "tailseg1"; + TAIL_BONES = var10000; + float[] var0 = new float[9]; + var0[0] = 0.0F; + var0[1] = 0.0F; + var0[2] = 0.0F; + var0[3] = 0.0F; + var0[4] = 0.0F; + var0[5] = 0.0F; + var0[6] = 1.0F; + var0[7] = 1.0F; + var0[8] = 1.0F; + DEFAULT_BASE = var0; + } +} diff --git a/src/main/java/defpackage/adg.java b/src/main/java/defpackage/adg.java new file mode 100644 index 0000000..113db3f --- /dev/null +++ b/src/main/java/defpackage/adg.java @@ -0,0 +1,295 @@ +package defpackage; + +import java.util.Iterator; +import java.util.Map; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.AbstractClientPlayer; + +public final class adg { + private static adg instance; + private static final float TIME_WRAP_SECONDS = 360.0F; + private static final float ROOT_SCALE = 0.6F; + private static final float[] DEFAULT_BASE; + + public static adg getInstance() { + int var0 = -1731758504; + + while (true) { + switch (var0) { + case -1731758504: + default: + if (instance == null) { + var0 = 739574246; + } else { + var0 = 1905049565; + } + break; + case 739574246: + instance = new adg(); + var0 = 1905049565; + break; + case 1905049565: + return instance; + } + } + } + + public void apply(aif var1, Map var2, AbstractClientPlayer var3) { + float var4 = 0.0F; + Iterator var5 = null; + aig var6 = null; + int var7 = 1413278035; + + while (true) { + switch (var7) { + case -1508388394: + String var10003 = "Left_Wing"; + float[] var10004 = new float[3]; + var10004[0] = -18.2468F + cos(10.0F + var4) * 10.0F; + var10004[1] = -36.3088F + sin(10.0F + var4) * 15.0F; + var10004[2] = 18.01613F; + float[] var10005 = new float[3]; + var10005[0] = -0.0288F; + var10005[1] = 0.20524F; + var10005[2] = 1.18197F; + this.applyBone(var1, var2, var10003, var10004, var10005); + var10003 = "Right_Wing"; + var10004 = new float[3]; + var10004[0] = -18.2468F + cos(10.0F + var4) * 10.0F; + var10004[1] = 36.3088F - sin(10.0F + var4) * 15.0F; + var10004[2] = -18.01609F; + var10005 = new float[3]; + var10005[0] = -0.0288F; + var10005[1] = 0.2052F; + var10005[2] = 1.18197F; + this.applyBone(var1, var2, var10003, var10004, var10005); + var10003 = "bone6"; + var10004 = new float[3]; + var10004[0] = 1.1552F - cos(10.0F + var4) * 10.0F; + var10004[1] = -0.543F - cos(var4) * 25.0F; + var10004[2] = 3.16854F; + var10005 = new float[3]; + var10005[0] = -0.90088F; + var10005[1] = 0.04987F; + var10005[2] = -0.43119F; + this.applyBone(var1, var2, var10003, var10004, var10005); + var10003 = "bone4"; + var10004 = new float[3]; + var10004[0] = 1.1552F - cos(10.0F + var4) * 10.0F; + var10004[1] = 0.543F + cos(var4) * 25.0F; + var10004[2] = -3.1685F; + var10005 = new float[3]; + var10005[0] = 0.9009F; + var10005[1] = 0.04987F; + var10005[2] = -0.43119F; + this.applyBone(var1, var2, var10003, var10004, var10005); + var10003 = "bone7"; + var10004 = new float[3]; + var10004[0] = cos(10.0F + var4) * 5.0F; + var10004[1] = -sin(10.0F + var4) * 15.0F; + var10004[2] = -sin(10.0F + var4) * 15.0F; + this.applyBone(var1, var2, var10003, var10004, null); + var10003 = "bone5"; + var10004 = new float[3]; + var10004[0] = cos(10.0F + var4) * 5.0F; + var10004[1] = sin(10.0F + var4) * 15.0F; + var10004[2] = sin(10.0F + var4) * 15.0F; + this.applyBone(var1, var2, var10003, var10004, null); + var10003 = "bone3"; + var10004 = new float[3]; + var10004[0] = -0.0082F + cos(var4) * 10.0F; + var10004[1] = 12.49978F; + var10004[2] = -7.57475F; + var10005 = new float[3]; + var10005[0] = -0.87628F; + var10005[1] = 1.75491F; + var10005[2] = 0.39042F; + this.applyBone(var1, var2, var10003, var10004, var10005); + var10003 = "bone8"; + var10004 = new float[3]; + var10004[0] = -0.0082F + cos(var4) * 10.0F; + var10004[1] = -12.4998F; + var10004[2] = 7.5748F; + var10005 = new float[3]; + var10005[0] = 0.8763F; + var10005[1] = 1.75491F; + var10005[2] = 0.39042F; + this.applyBone(var1, var2, var10003, var10004, var10005); + var10003 = "bone2"; + var10004 = new float[3]; + var10004[0] = 6.4724F - cos(60.0F + var4) * 5.0F; + var10004[1] = 5.1344F + sin(60.0F + var4) * 5.0F; + var10004[2] = -12.5338F; + this.applyBone(var1, var2, var10003, var10004, null); + var10003 = "bone9"; + var10004 = new float[3]; + var10004[0] = 6.4724F - cos(60.0F + var4) * 5.0F; + var10004[1] = -5.1344F - sin(60.0F + var4) * 5.0F; + var10004[2] = 12.5338F; + this.applyBone(var1, var2, var10003, var10004, null); + var10003 = "bone10"; + var10004 = new float[3]; + var10004[0] = 6.4876F + cos(200.0F + var4) * 5.0F; + var10004[1] = -0.97F + sin(300.0F + var4) * 5.0F; + var10004[2] = -6.9044F - sin(220.0F + var4) * 7.0F; + var10005 = new float[3]; + var10005[0] = -0.89933F; + var10005[1] = -0.02767F; + var10005[2] = -0.01524F; + this.applyBone(var1, var2, var10003, var10004, var10005); + var10003 = "bone11"; + var10004 = new float[3]; + var10004[0] = 6.4876F + cos(200.0F + var4) * 5.0F; + var10004[1] = 0.97F - sin(300.0F + var4) * 5.0F; + var10004[2] = 6.9044F + sin(220.0F + var4) * 7.0F; + var10005 = new float[3]; + var10005[0] = 0.8993F; + var10005[1] = -0.0277F; + var10005[2] = -0.0152F; + this.applyBone(var1, var2, var10003, var10004, var10005); + return; + case -1082195253: + if (var5.hasNext()) { + var7 = 1306850180; + } else { + var7 = -1508388394; + } + break; + case 1306850180: + var6 = (aig)var5.next(); + this.applyScale(var6, var2, 0.6F); + var7 = -1082195253; + break; + case 1413278035: + default: + var4 = this.lifeTime(var3) * 200.0F; + var5 = var1.roots.iterator(); + var7 = -1082195253; + } + } + } + + private float lifeTime(AbstractClientPlayer var1) { + float var2 = 0.0F; + int var3 = 1022521255; + + while (true) { + switch (var3) { + case -1323671847: + return (float)( + System.currentTimeMillis() % ((4132021558889175178L ^ -4132021558888815178L) + ((4132021558889175178L & -4132021558888815178L) << 1)) + ) + / 1000.0F; + case 1022521255: + default: + if (var1 == null) { + var3 = -1323671847; + } else { + var3 = 1927261123; + } + break; + case 1927261123: + var2 = Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((-1074911606 | 1074911606) + (-1074911606 & 1074911606))) != 0)); + return (var1.tickCount + var2) / 20.0F % 360.0F; + } + } + } + + private void applyBone(aif var1, Map var2, String var3, float[] var4, float[] var5) { + aig var6 = null; + float[] var7 = null; + int var8 = -324244474; + + while (true) { + switch (var8) { + case -2027755891: + var7 = var2.getOrDefault(var3, DEFAULT_BASE); + var6.setRotX( + var7[0] + + (float)Math.toRadians(-var4[0]) + ); + var6.setRotY( + var7[1] + + (float)Math.toRadians(-var4[1]) + ); + var6.setRotZ( + var7[2] + + (float)Math.toRadians(var4[2]) + ); + if (var5 != null) { + var8 = 787434891; + } else { + var8 = 1124620519; + } + break; + case -324244474: + default: + var6 = var1.findPart(var3).orElse(null); + if (var6 == null) { + var8 = 1631893481; + } else { + var8 = -2027755891; + } + break; + case 787434891: + var6.setOffsetX(var7[3] + var5[0]); + var6.setOffsetY(var7[4] + var5[1]); + var6.setOffsetZ(var7[5] + var5[2]); + var8 = 1124620519; + break; + case 1124620519: + return; + case 1631893481: + return; + } + } + } + + private void applyScale(aig var1, Map var2, float var3) { + float[] var4 = null; + int var5 = -1508603946; + + while (true) { + switch (var5) { + case -1816150757: + return; + case -1508603946: + default: + var4 = (float[])var2.get(var1.name); + if (var4 == null) { + var5 = -1816150757; + } else { + var5 = 1990683275; + } + break; + case 1990683275: + var1.setScaleX(var4[6] * var3); + var1.setScaleY(var4[7] * var3); + var1.setScaleZ(var4[8] * var3); + return; + } + } + } + + private static float cos(float var0) { + return (float)Math.cos(Math.toRadians(var0)); + } + + private static float sin(float var0) { + return (float)Math.sin(Math.toRadians(var0)); + } + + static { + float[] var10000 = new float[9]; + var10000[0] = 0.0F; + var10000[1] = 0.0F; + var10000[2] = 0.0F; + var10000[3] = 0.0F; + var10000[4] = 0.0F; + var10000[5] = 0.0F; + var10000[6] = 1.0F; + var10000[7] = 1.0F; + var10000[8] = 1.0F; + DEFAULT_BASE = var10000; + } +} diff --git a/src/main/java/defpackage/adh.java b/src/main/java/defpackage/adh.java new file mode 100644 index 0000000..fa01ad7 --- /dev/null +++ b/src/main/java/defpackage/adh.java @@ -0,0 +1,124 @@ +package defpackage; + +import com.mojang.blaze3d.platform.NativeImage; +import java.io.InputStream; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.resources.Identifier; + +final class adh { + private final String key; + private final Identifier identifier; + private final String stripResourcePath; + private final int frameHeight; + private final int frameMillis; + private NativeImage[] frames; + private NativeImage canvas; + private DynamicTexture texture; + private int lastFrame = -1; + private boolean failed; + + adh(String var1, Identifier var2, String var3, int var4, int var5) { + this.key = var1; + this.identifier = var2; + this.stripResourcePath = var3; + this.frameHeight = var4; + this.frameMillis = var5; + } + + void tick(Minecraft var1) { + int var2 = 0; + int var3 = 1232442247; + + while (true) { + switch (var3) { + case -1664457922: + return; + case -1479412636: + return; + case -726648387: + return; + case -117761694: + this.load(var1); + if (this.texture == null) { + var3 = -726648387; + } else { + var3 = 298894408; + } + break; + case 298894408: + var2 = (int)(System.currentTimeMillis() / this.frameMillis % this.frames.length); + if (var2 == this.lastFrame) { + var3 = -1479412636; + } else { + var3 = 547194905; + } + break; + case 547194905: + this.lastFrame = var2; + this.canvas.copyFrom(this.frames[var2]); + this.texture.upload(); + return; + case 1232442247: + default: + if (this.failed) { + var3 = -1664457922; + } else { + var3 = 1237749127; + } + break; + case 1237749127: + if (this.texture == null) { + var3 = -117761694; + } else { + var3 = 298894408; + } + } + } + } + + private void load(Minecraft var1) { + try (InputStream var2 = adi.class.getResourceAsStream(this.stripResourcePath)) { + NativeImage var3 = NativeImage.read(var2); + + try { + int var4 = Math.max(1, var3.getHeight() / this.frameHeight); + this.frames = new NativeImage[var4]; + + for (int var5 = 0; var5 < var4; var5++) { + NativeImage var6 = new NativeImage(var3.getWidth(), this.frameHeight, (boolean)((((1923197011 ^ -1923197011) + ((1923197011 & -1923197011) << 1))) != 0)); + + for (int var7 = 0; var7 < this.frameHeight; var7++) { + for (int var8 = 0; var8 < var3.getWidth(); var8++) { + var6.setPixel(var8, var7, var3.getPixel(var8, var7 + var5 * this.frameHeight)); + } + } + + this.frames[var5] = var6; + } + + this.canvas = new NativeImage(var3.getWidth(), this.frameHeight, (boolean)((((-1236453900 | 1236453900) + (-1236453900 & 1236453900))) != 0)); + this.canvas.copyFrom(this.frames[0]); + this.texture = new DynamicTexture(() -> this.key, this.canvas); + var1.getTextureManager().register(this.identifier, this.texture); + this.lastFrame = 0; + } catch (Throwable var11) { + if (var3 != null) { + try { + var3.close(); + } catch (Throwable var10) { + var11.addSuppressed(var10); + } + } + + throw var11; + } + + if (var3 != null) { + var3.close(); + } + } catch (Exception var13) { + this.failed = (boolean)(((1)) != 0); + } + } +} diff --git a/src/main/java/defpackage/adi.java b/src/main/java/defpackage/adi.java new file mode 100644 index 0000000..33b8993 --- /dev/null +++ b/src/main/java/defpackage/adi.java @@ -0,0 +1,62 @@ +package defpackage; + +import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.Identifier; + +public final class adi { + private static final Map ANIMATIONS = new ConcurrentHashMap<>(); + + private adi() { + } + + public static Identifier register(String var0, String var1, int var2, int var3) { + Identifier var4 = Identifier.fromNamespaceAndPath( + "evolution", "cosmetic/animated/" + var0 + ); + ANIMATIONS.computeIfAbsent(var4, var4x -> new adh(var0, var4x, var1, var2, var3)); + return var4; + } + + public static void tick() { + Minecraft var0 = null; + Iterator var1 = null; + adh var2 = null; + int var3 = -528985276; + + while (true) { + switch (var3) { + case -1031265264: + return; + case -590004227: + var1 = ANIMATIONS.values().iterator(); + var3 = 621120826; + break; + case -528985276: + default: + var0 = Minecraft.getInstance(); + if (!var0.isSameThread()) { + var3 = -1031265264; + } else { + var3 = -590004227; + } + break; + case 621120826: + if (var1.hasNext()) { + var3 = 1423600049; + } else { + var3 = 1189438284; + } + break; + case 1189438284: + return; + case 1423600049: + var2 = (adh)var1.next(); + var2.tick(var0); + var3 = 621120826; + } + } + } +} diff --git a/src/main/java/defpackage/adj.java b/src/main/java/defpackage/adj.java new file mode 100644 index 0000000..0ea9938 --- /dev/null +++ b/src/main/java/defpackage/adj.java @@ -0,0 +1,47 @@ +package defpackage; + +public enum adj { + FREE, + BODY, + HEAD, + ABOVE_HEAD, + RIGHT_ARM, + LEFT_ARM, + RIGHT_LEG, + LEFT_LEG, + FULL_BODY; + + public static adj byOrdinal(int var0) { + adj var2 = null; + int var1 = -1901799567; + + while (true) { + switch (var1) { + case -1901799567: + default: + if (var0 >= 0) { + var1 = -1621263866; + } else { + var1 = 640407430; + } + break; + case -1621263866: + if (var0 >= values().length) { + var1 = 640407430; + } else { + var1 = -394818470; + } + break; + case -1396764020: + return var2; + case -394818470: + var2 = values()[var0]; + var1 = -1396764020; + break; + case 640407430: + var2 = BODY; + var1 = -1396764020; + } + } + } +} diff --git a/src/main/java/defpackage/adk.java b/src/main/java/defpackage/adk.java new file mode 100644 index 0000000..5eed78b --- /dev/null +++ b/src/main/java/defpackage/adk.java @@ -0,0 +1,39 @@ +package defpackage; + +import net.minecraft.resources.Identifier; + +public final class adk { + private final String key; + private final String displayName; + final float rotationY; + final String animation; + + adk(String var1, String var2) { + this(var1, var2, 0.0F, null); + } + + adk(String var1, String var2, float var3, String var4) { + this.key = var1; + this.displayName = var2; + this.rotationY = var3; + this.animation = var4; + } + + public String getKey() { + return this.key; + } + + public String getDisplayName() { + return this.displayName; + } + + public Identifier getTexture() { + return Identifier.fromNamespaceAndPath( + "evolution", "textures/cosmetic/backpacks/" + this.key + ".png" + ); + } + + public int getId() { + return ("backpack_" + this.key).hashCode(); + } +} diff --git a/src/main/java/defpackage/adl.java b/src/main/java/defpackage/adl.java new file mode 100644 index 0000000..7f2a750 --- /dev/null +++ b/src/main/java/defpackage/adl.java @@ -0,0 +1,389 @@ +package defpackage; + +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.Minecraft; + +public final class adl { + private static final float BACKPACK_SCALE = 1.0F; + private static final float[] BACKPACK_OFFSET; + private static final String MAGE_STAFF_ANIM = "{\"animation\":{\"loop\":true,\"animation_length\":2.0,\"bones\":{\"MagicCube\":{\"rotation\":{\"0.0\":[0,0,0],\"1.0\":[0,180,0],\"2.0\":[0,360,0]},\"position\":{\"0.0\":[0,0,0],\"1.0\":[0,0.425,0],\"2.0\":[0,0,0]}}}}}"; + private static final List BACKPACKS = new ArrayList<>(); + private static final Map GEOMETRY_CACHE = new ConcurrentHashMap<>(); + private static final Map MODEL_CACHE = new ConcurrentHashMap<>(); + + private adl() { + } + + public static List all() { + return BACKPACKS; + } + + private static String geometry(String var0) { + return GEOMETRY_CACHE.computeIfAbsent(var0, var0x -> { + try (InputStream var1 = adl.class.getResourceAsStream("/assets/evolution/cosmetic/backpacks/" + var0x + ".geo.json")) { + return var1 == null ? "" : new String(var1.readAllBytes(), StandardCharsets.UTF_8); + } catch (Exception var6) { + return ""; + } + }); + } + + public static aif model(adk var0) { + String var1 = null; + int var2 = 1638338388; + + while (true) { + switch (var2) { + case 927116587: + return null; + case 1423690922: + return MODEL_CACHE.computeIfAbsent(var0.getKey(), var1x -> aid.parse(var1)); + case 1638338388: + } + + var1 = geometry(var0.getKey()); + if (var1.isEmpty()) { + var2 = 927116587; + } else { + var2 = 1423690922; + } + } + } + + public static adk byKey(String var0) { + Iterator var1 = null; + adk var2 = null; + int var3 = -1868204055; + + while (true) { + switch (var3) { + case -1868204055: + default: + if (var0 == null) { + var3 = -1072081332; + } else { + var3 = 1202370968; + } + break; + case -1403099644: + var2 = (adk)var1.next(); + if (var2.getKey().equals(var0)) { + var3 = 2000344367; + } else { + var3 = 1752143787; + } + break; + case -1072081332: + return null; + case 141594103: + if (var1.hasNext()) { + var3 = -1403099644; + } else { + var3 = 1193899086; + } + break; + case 1193899086: + return null; + case 1202370968: + var1 = BACKPACKS.iterator(); + var3 = 141594103; + break; + case 1752143787: + var3 = 141594103; + break; + case 2000344367: + return var2; + } + } + } + + public static String equippedKey(String var0) { + Iterator var1 = null; + adk var2 = null; + int var3 = -1075958871; + + while (true) { + switch (var3) { + case -1842766562: + var2 = (adk)var1.next(); + if (adq.getInstance().hasCosmetic(var0, var2.getId())) { + var3 = 1466723107; + } else { + var3 = 1161285379; + } + break; + case -1163999348: + return null; + case -1128792619: + if (var1.hasNext()) { + var3 = -1842766562; + } else { + var3 = 2052331437; + } + break; + case -1075958871: + default: + if (var0 == null) { + var3 = -1163999348; + } else { + var3 = 1424120800; + } + break; + case 1161285379: + var3 = -1128792619; + break; + case 1424120800: + var1 = BACKPACKS.iterator(); + var3 = -1128792619; + break; + case 1466723107: + return var2.getKey(); + case 2052331437: + return null; + } + } + } + + public static boolean isEquipped(adk var0) { + String var1 = null; + int var3 = 0; + int var2 = 129562517; + + while (true) { + switch (var2) { + case -697477449: + if (adq.getInstance().hasCosmetic(var1, var0.getId())) { + var2 = -194616227; + } else { + var2 = 1916562215; + } + break; + case -194616227: + var3 = 1; + var2 = 2050220125; + break; + case 129562517: + default: + var1 = localName(); + if (var1 != null) { + var2 = -697477449; + } else { + var2 = 1916562215; + } + break; + case 1916562215: + var3 = 0; + var2 = 2050220125; + break; + case 2050220125: + return (boolean)((var3) != 0); + } + } + } + + public static void unequipAll() { + unequipAll(localName()); + } + + public static void unequipAll(String var0) { + Iterator var1 = null; + adk var2 = null; + int var3 = -321764471; + + while (true) { + switch (var3) { + case -1868189543: + var2 = (adk)var1.next(); + adq.getInstance().unassign(var0, var2.getId()); + var3 = 930270515; + break; + case -1091500861: + return; + case -321764471: + default: + if (var0 == null) { + var3 = -191060580; + } else { + var3 = 1963415726; + } + break; + case -191060580: + return; + case 930270515: + if (var1.hasNext()) { + var3 = -1868189543; + } else { + var3 = -1091500861; + } + break; + case 1963415726: + var1 = BACKPACKS.iterator(); + var3 = 930270515; + } + } + } + + public static void equip(adk var0) { + String var1 = null; + int var2 = 338340247; + + while (true) { + switch (var2) { + case 327332233: + return; + case 332275125: + if (isEquipped(var0)) { + var2 = 1744576934; + } else { + var2 = 1583645894; + } + break; + case 338340247: + default: + var1 = localName(); + if (var1 == null) { + var2 = 327332233; + } else { + var2 = 332275125; + } + break; + case 1583645894: + applyKey(var1, var0.getKey()); + return; + case 1744576934: + adq.getInstance().unassign(var1, var0.getId()); + return; + } + } + } + + public static void applyKey(String var0, String var1) { + if (var0 != null) { + unequipAll(var0); + adk var2 = byKey(var1); + if (var2 != null) { + String var3 = geometry(var2.getKey()); + if (!var3.isEmpty()) { + String var4 = "{\"name\":\"backpack_" + + var2.getKey() + + "\",\"id\":" + + var2.getId() + + ",\"attachment\":" + + adj.BODY.ordinal() + + ",\"scale\":1.0,\"offset\":[" + + BACKPACK_OFFSET[0] + + "," + + BACKPACK_OFFSET[1] + + "," + + BACKPACK_OFFSET[2] + + "],\"rotation\":[0," + + var2.rotationY + + ",0]" + + (var2.animation == null ? "" : ",\"animation\":" + var2.animation) + + ",\"model\":" + + var3 + + "}"; + adr var5 = adq.getInstance().registerWithTexture(var4, var2.getTexture()); + if (var5 != null) { + adq.getInstance().setEnabled((boolean)((((-176603575 ^ 176603576) + ((-176603575 & 176603576) << 1))) != 0)); + adq.getInstance().assign(var0, var5.getId()); + } + } + } + } + } + + private static String localName() { + Minecraft var0 = null; + String var2 = null; + int var1 = -1642264659; + + while (true) { + switch (var1) { + case -1642264659: + default: + var0 = Minecraft.getInstance(); + if (var0.player == null) { + var1 = -529509772; + } else { + var1 = -1601497710; + } + break; + case -1601497710: + var2 = var0.player.getScoreboardName(); + var1 = -221379913; + break; + case -529509772: + var2 = null; + var1 = -221379913; + break; + case -221379913: + return var2; + } + } + } + + static { + float[] var10000 = new float[3]; + var10000[0] = 0.0F; + var10000[1] = -0.15F; + var10000[2] = 0.0F; + BACKPACK_OFFSET = var10000; + BACKPACKS.add( + new adk( + "hermes", + "Hermes" + ) + ); + BACKPACKS.add( + new adk( + "lui_vuitton", + "Lui Vuitton" + ) + ); + BACKPACKS.add( + new adk( + "gucci", + "Gucci" + ) + ); + BACKPACKS.add( + new adk( + "nike", + "Nike" + ) + ); + BACKPACKS.add( + new adk( + "adidas", + "Adidas" + ) + ); + BACKPACKS.add( + new adk( + "labubu", + "Labubu" + ) + ); + BACKPACKS.add( + new adk( + "snoopy", + "Snoopy" + ) + ); + BACKPACKS.add( + new adk( + "mage_staff", + "Mage Staff", + 180.0F, + "{\"animation\":{\"loop\":true,\"animation_length\":2.0,\"bones\":{\"MagicCube\":{\"rotation\":{\"0.0\":[0,0,0],\"1.0\":[0,180,0],\"2.0\":[0,360,0]},\"position\":{\"0.0\":[0,0,0],\"1.0\":[0,0.425,0],\"2.0\":[0,0,0]}}}}}" + ) + ); + } +} diff --git a/src/main/java/defpackage/adm.java b/src/main/java/defpackage/adm.java new file mode 100644 index 0000000..2387691 --- /dev/null +++ b/src/main/java/defpackage/adm.java @@ -0,0 +1,155 @@ +package defpackage; + +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.resources.Identifier; + +public final class adm { + private adm() { + } + + public static Identifier resolve(AbstractClientPlayer var0) { + int var1 = -1835239727; + + while (true) { + switch (var1) { + case -1835239727: + default: + if (var0 == null) { + var1 = -711955006; + } else { + var1 = 891366318; + } + break; + case -711955006: + return null; + case 891366318: + adi.tick(); + return adq.getInstance().getCape(var0.getScoreboardName()); + } + } + } + + public static boolean shouldRender(AbstractClientPlayer var0) { + int var2 = 0; + int var1 = 1650750283; + + while (true) { + switch (var1) { + case -1039329038: + if (resolve(var0) != null) { + var1 = 183409366; + } else { + var1 = 804281913; + } + break; + case -738964912: + return (boolean)((var2) != 0); + case -416924324: + if (var0 != null) { + var1 = 1285171732; + } else { + var1 = 804281913; + } + break; + case 183409366: + var2 = 1; + var1 = -738964912; + break; + case 804281913: + var2 = 0; + var1 = -738964912; + break; + case 1285171732: + if (!var0.isInvisible()) { + var1 = -1039329038; + } else { + var1 = 804281913; + } + break; + case 1650750283: + default: + if (adq.getInstance().isEnabled()) { + var1 = -416924324; + } else { + var1 = 804281913; + } + } + } + } + + public static boolean isShaderCape(Identifier var0) { + int var2 = 0; + int var1 = -2075730731; + + while (true) { + switch (var1) { + case -2075730731: + default: + if (var0 != null) { + var1 = -897184107; + } else { + var1 = -1959177868; + } + break; + case -1959177868: + var2 = 0; + var1 = 556541788; + break; + case -897184107: + if (!var0.equals(ado.cosmosCape())) { + var1 = -455316940; + } else { + var1 = -626737596; + } + break; + case -626737596: + var2 = 1; + var1 = 556541788; + break; + case -455316940: + if (var0.equals(ado.holyCape())) { + var1 = -626737596; + } else { + var1 = -1959177868; + } + break; + case 556541788: + return (boolean)((var2) != 0); + } + } + } + + public static boolean isHolyCape(Identifier var0) { + int var2 = 0; + int var1 = -624876929; + + while (true) { + switch (var1) { + case -1887389846: + var2 = 0; + var1 = -927786142; + break; + case -1348647352: + var2 = 1; + var1 = -927786142; + break; + case -927786142: + return (boolean)((var2) != 0); + case -624876929: + default: + if (var0 != null) { + var1 = 1458254424; + } else { + var1 = -1887389846; + } + break; + case 1458254424: + if (var0.equals(ado.holyCape())) { + var1 = -1348647352; + } else { + var1 = -1887389846; + } + } + } + } +} diff --git a/src/main/java/defpackage/adn.java b/src/main/java/defpackage/adn.java new file mode 100644 index 0000000..0f1321c --- /dev/null +++ b/src/main/java/defpackage/adn.java @@ -0,0 +1,51 @@ +package defpackage; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.resources.Identifier; + +public final class adn { + private static final adn INSTANCE = new adn(); + private final Map texturesByCapeId = new ConcurrentHashMap<>(); + + private adn() { + } + + public static adn getInstance() { + return INSTANCE; + } + + public void put(int var1, Identifier var2) { + int var3 = 328244927; + + while (true) { + switch (var3) { + case -1959899424: + this.texturesByCapeId.remove(var1); + var3 = -559067843; + break; + case -1721850641: + this.texturesByCapeId.put(var1, var2); + var3 = -559067843; + break; + case -559067843: + return; + case 328244927: + default: + if (var2 == null) { + var3 = -1959899424; + } else { + var3 = -1721850641; + } + } + } + } + + public Identifier get(int var1) { + return this.texturesByCapeId.get(var1); + } + + public void clear() { + this.texturesByCapeId.clear(); + } +} diff --git a/src/main/java/defpackage/ado.java b/src/main/java/defpackage/ado.java new file mode 100644 index 0000000..504b7f2 --- /dev/null +++ b/src/main/java/defpackage/ado.java @@ -0,0 +1,438 @@ +package defpackage; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Base64; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.function.Supplier; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Util; + +public final class ado { + private static final String DEMO_MODEL = "{\"minecraft:geometry\":[{\"description\":{\"texture_width\":64,\"texture_height\":64},\"bones\":[{\"name\":\"hat\",\"pivot\":[0,0,0],\"cubes\":[{\"origin\":[-4,0,-4],\"size\":[8,8,8],\"uv\":[0,0]}]}]}]}"; + private static final String DEMO_TEXTURE = "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAZElEQVR42u3QMREAAAgEILvaxtJvDk8GClDTyWclQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE3LdOArKzP0IB3AAAAABJRU5ErkJggg=="; + private static final String CAPE_TEXTURE = "iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAm0lEQVRoge2YQQrEIBAEp5f8/8ud04IhCwtBKcx03fQQ2srooLJdklwTsa2Z31uJqmrq4r/sIuFDB6CJADoATQTQAWguAux7Q/g19ybSBsdBxwo4xoGk24KlLX7kY5Ztgao9tkG6AB2AJgLoADTtBRyrTurZjyyraF8BEUAHoGkvQG+/7PyjfQVEAB2AJgLoADQRQAegiQA6AM0JzaUpKLmbJr0AAAAASUVORK5CYII="; + private static final String SUNSET_CAPE_TEXTURE = "iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABpklEQVRoge2YwUrDMACG/0rAkCWkDdUMHAzd1YsgIujVN9CbIPgKnrx62clXGAwfwaMHPQ7BN/A6EHH1UJTWsdVb2ewlPTRhtR8USvIXPv4mKdRTSmVRFMGELMuMcqvEWplwu92G53lG16pAhBCYzWZGYa01ptOfipXsQhhjxmGtNb6/virUsQ8JwxBxHBuFpZQIN8KKlexCKKWYz+dGYaUUomhSsZJdCGMMpttAKQVfyoqV7EIYY6CULg0ODp9xOToohKWUCILAlpsVCKUUWut8oL99D+zsYXD8iuu7o6UwYwy+X7MVIIRAGC4cbPsC2L0CxkP0z55w+3iaTwkhjLfLqkA451BKFWe2LoDPUWFO1u0MaLVa6HQ6+cDD5AYn42F+vzCFNE0xTRPbjpVCer1e4S2/ROcAgL8LI45jULpuy80KxPd9CCGMwpRSfLy/VaxkFxIEgXEBSZIUPpmrDtFag3NuFOac1+8Q7Ha7pR7QerMiFTd4WR3/cpSg1A+ROtIU4FrANU0BrgVc0xTgWsA1TQGuBVzTFOBawDVNAa4FXPPvC/gFJNtMA3JdMkkAAAAASUVORK5CYII="; + private static final String NEBULA_CAPE_TEXTURE = "iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEpUlEQVRoge2YyY8UVRzHP2+prad7ZrqnZ2UmzIJsMsIEBgjx5BLjgQsnDx48m/jPGG/qUaMxJBpi4sG4hLBITEREJCOLA4G2Z+lZerqra3vPwwB6YzhVBueTVFL18svL7/NN1atXJbRbtgDSGcJkTWy6CkLyLxYQjw4LWMSja4t9Msp/KtJ4TbBNEF2Vl60KxkhWL+OXZ0k7DeLwAUJoIEV6Y9hkCZsugupG6ComugUW4k4dLxgCLIgikCGVi9AVNpbPb4sQZLn/GA4RR177kMnDb5OZGGszUAWs3oWSGTZbAwJ0cRoVTCBEAamCzRmEAOEipIN0yniF3ZT7j+Uq9Szo6tBRhibf5coP79NeuY52XNziXiwakzRI2kvgjFAaOU24ep209QfYDqDYvOE9EBpBgkQjlUd16GjOWltHVkf3MzU7hVOcpjz2JsLpR3kDOF4FhAKnBKaF40BQmsDx+xDCQenS5gxCoJRG6QDHq+L5o1RH9+dr9QxoJyiwsrROd3WStdplguJupC4SNefQ2gFZxWQxUasOpoONFxHSIYkbgADTJrMJw3veIYmbDE+9ihMU8vbaMqI4cMYG3ZMoFdBVmUS7A6z9fYEsWSZL22RZSmVkFs/fxcLds2TxEjbrkHRqdNr38ApjuMEow+NnKA0c4PZvn5BEbZr1s9tiEdSl7iLrjSv4PTP0jR1BYIjDg0glsFlI48HXLN79CiF9usqHGNj7Fqu1C6wuXKTTnkeqEn7lJA/+Okdy82O6+/bid5fy9toycqV+DWxIGtX489JHhOs1jr7+BntmTiFlAaV8tFPE8bpR0ufgkRnWl38lDu+DkFizQWv5CjYLUdKw0bjFSv1a3l5bRguzikkDlA5AtKjd+o6obekdGGR85hRReI+u0h72HdqN7hpGKpc4WkRKf3NDZDOyzkOk248uvoSJHpJ17ufttWW0WzqMUD7WNElTg9S9rC9eY/TAGYKCw76Z00y9UCWjwO0bd/j94ge4XpmkE27OIBQgMFmbpDWHcsq4pcO5Sj0L2u0apdR3mPqdzxHCwWQhXqGf2tw81dERjp8Y59xn37Bw90vSuI6Jl7CmjXi8RbYGbIiQLjaNyRAEPQfy9toyMk0jmmv3sCZEKh/H7aW1cpVG7QKNWo1QFBjfv48o6jAyPktl8CBe9zRCFQCLkBLQqMI+rOpBuVXSNMrba8sItzhtMRGFyklMugECtDfC4MQrTLx4nKs/fsp67VuwIQiB9voxJiNa/Ym4s4gXDKL8CXAGEdIBMuLmTaLmte3xGnS9KiZZIFq9hPKG0f4uegdnCZsLnP/iPWxSw9qMoHIC5Q3RrH+PCeeAzS9Gay1pVEfLEiaJSaP7uP6ufK2eAZ1F86RxA8cbQOoepO5iY2WOqDlHuvELxnTwe0/RWv4ZEy+htA+AtSnWGrAZgogsvIHQfUihyKL5nLW2jhBCWWszAKTyQThYmyFsijHxoyKJkO7mgrc5gjHRk3MpXR7/FRBCYUyMMem2eASEtfbpVc8x8uklzzc7AeTdQN7sBJB3A3mzE0DeDeTNTgB5N5A3OwHk3UDe7ASQdwN5878P4B9bWNKgJnFcBwAAAABJRU5ErkJggg=="; + private static final String SKINMC_CAPE_TEXTURE = "iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABoklEQVRoge2YQW4DIQxF7aq3666VoKv0bO2qg5Tuer7fTWjCCBgbPANq86RsEiDjj/3xwADw6t/Iks/lXTKMQwjYGuSc49VXm3M0sHcnLOFDNNi7k3hhgQhMRBRFyASawzR4IqJH6wW1xMCjEN777DgAEoHUNAnw/PJU/f3r/C1dCnTJhC2YGRcRTLPgwXIxJUnwkhJg5jjHLBuKAizLYvUfNUBtO2qWBdkSOCj4W7QBxQzoFiLJAAAEgJxzRHS4EGIv0M6pkQjAfF1vkAhabDOA6CpCCIG898Vj6UgKm2DiA0UTHBB4NqBKBpqcBFkBbkuhFWV7zUTpUVjzo5UPdDGyD1iTqC70o+6dGt4K12BmAvDrR6Vh1OEHUwsQ2fCjXDstFmQGAappLPCjrqaoSQDFy46E+OCt9dxniNgJ707aKQQgBrT5sWKWU+D2+JNmwn59wACSND5ShBlMsJV9W+EBJHcDiizognFxnonQBG7/NjiYUkOTC/TPlUBkfeGx7vRar9GyzGaCpR3frUxnzIBDuQsw+gFGcxdg9AOM5t8L8AOUu2WVZloEKQAAAABJRU5ErkJggg=="; + private static final Map> CAPES_BY_KEY = new LinkedHashMap<>(); + + private ado() { + } + + public static Identifier capeByKey(String var0) { + Supplier var1 = null; + Supplier var3 = null; + Identifier var4 = null; + int var2 = -1570054790; + + while (true) { + switch (var2) { + case -1570054790: + default: + if (var0 == null) { + var2 = -1395846756; + } else { + var2 = 1149293106; + } + break; + case -1457101832: + var1 = var3; + if (var1 == null) { + var2 = 1709590928; + } else { + var2 = 1893593989; + } + break; + case -1395846756: + var3 = null; + var2 = -1457101832; + break; + case 1149293106: + var3 = CAPES_BY_KEY.get(var0); + var2 = -1457101832; + break; + case 1709590928: + var4 = null; + var2 = 2039380572; + break; + case 1893593989: + var4 = (Identifier)var1.get(); + var2 = 2039380572; + break; + case 2039380572: + return var4; + } + } + } + + public static String capeKeyOf(Identifier var0) { + Iterator var1 = null; + Entry var2 = null; + int var3 = 17072694; + + while (true) { + switch (var3) { + case -1848028822: + return null; + case -431763799: + var2 = (Entry)var1.next(); + if (var0.equals(((Supplier)var2.getValue()).get())) { + var3 = -400340668; + } else { + var3 = 1351291485; + } + break; + case -400340668: + return (String)var2.getKey(); + case 17072694: + default: + if (var0 == null) { + var3 = -1848028822; + } else { + var3 = 1399257853; + } + break; + case 632103162: + return null; + case 1351291485: + var3 = 1409905935; + break; + case 1399257853: + var1 = CAPES_BY_KEY.entrySet().iterator(); + var3 = 1409905935; + break; + case 1409905935: + if (var1.hasNext()) { + var3 = -431763799; + } else { + var3 = 632103162; + } + } + } + } + + public static Path cosmeticsDir() { + return FabricLoader.getInstance() + .getGameDir() + .resolve("evolution") + .resolve("cosmetics"); + } + + public static Path capesDir() { + return FabricLoader.getInstance() + .getGameDir() + .resolve("evolution") + .resolve("capes"); + } + + public static int reload(boolean var0) { + ensureDirs(); + String var1 = localName(); + if (var1 != null) { + adq.getInstance().clear(var1); + } + + int var2 = 0; + + try (Stream var3 = Files.list(cosmeticsDir())) { + for (Path var6 : var3.filter(var0x -> var0x.toString().toLowerCase().endsWith(".json")).sorted().collect(Collectors.toList())) { + try { + adr var7 = adq.getInstance().register(Files.readString(var6)); + if (var7 != null && var1 != null) { + adq.getInstance().assign(var1, var7.getId()); + var2++; + } + } catch (Exception var10) { + } + } + } catch (IOException var14) { + } + + if (var0 && var1 != null) { + adq.getInstance().setCape(var1, null); + + try (Stream var15 = Files.list(capesDir())) { + Path var16 = var15.filter(var0x -> var0x.toString().toLowerCase().endsWith(".png")).sorted().findFirst().orElse(null); + if (var16 != null) { + adq.getInstance().setCapeFromBase64(var1, Base64.getEncoder().encodeToString(Files.readAllBytes(var16))); + } + } catch (IOException var12) { + } + } + + return var2; + } + + public static void equipCape() { + String var0 = null; + int var1 = 415754237; + + while (true) { + switch (var1) { + case -872630817: + return; + case -804952335: + adq.getInstance().setCape(var0, builtinCape()); + return; + case 415754237: + } + + var0 = localName(); + if (var0 == null) { + var1 = -872630817; + } else { + var1 = -804952335; + } + } + } + + public static void equipCosmosCape() { + String var0 = null; + int var1 = -905341077; + + while (true) { + switch (var1) { + case -905341077: + default: + var0 = localName(); + if (var0 == null) { + var1 = 745143475; + } else { + var1 = -449482339; + } + break; + case -449482339: + adq.getInstance().setCape(var0, cosmosCape()); + return; + case 745143475: + return; + } + } + } + + public static void equipHolyCape() { + String var0 = null; + int var1 = -1565945858; + + while (true) { + switch (var1) { + case -1565945858: + default: + var0 = localName(); + if (var0 == null) { + var1 = 1121982142; + } else { + var1 = 1445484950; + } + break; + case 1121982142: + return; + case 1445484950: + adq.getInstance().setCape(var0, holyCape()); + return; + } + } + } + + public static Identifier builtinCape() { + return aeg.register( + "builtin_cape", + "iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAm0lEQVRoge2YQQrEIBAEp5f8/8ud04IhCwtBKcx03fQQ2srooLJdklwTsa2Z31uJqmrq4r/sIuFDB6CJADoATQTQAWguAux7Q/g19ybSBsdBxwo4xoGk24KlLX7kY5Ztgao9tkG6AB2AJgLoADTtBRyrTurZjyyraF8BEUAHoGkvQG+/7PyjfQVEAB2AJgLoADQRQAegiQA6AM0JzaUpKLmbJr0AAAAASUVORK5CYII=" + ); + } + + public static Identifier sunsetCape() { + return aeg.register( + "sunset_cape", + "iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABpklEQVRoge2YwUrDMACG/0rAkCWkDdUMHAzd1YsgIujVN9CbIPgKnrx62clXGAwfwaMHPQ7BN/A6EHH1UJTWsdVb2ewlPTRhtR8USvIXPv4mKdRTSmVRFMGELMuMcqvEWplwu92G53lG16pAhBCYzWZGYa01ptOfipXsQhhjxmGtNb6/virUsQ8JwxBxHBuFpZQIN8KKlexCKKWYz+dGYaUUomhSsZJdCGMMpttAKQVfyoqV7EIYY6CULg0ODp9xOToohKWUCILAlpsVCKUUWut8oL99D+zsYXD8iuu7o6UwYwy+X7MVIIRAGC4cbPsC2L0CxkP0z55w+3iaTwkhjLfLqkA451BKFWe2LoDPUWFO1u0MaLVa6HQ6+cDD5AYn42F+vzCFNE0xTRPbjpVCer1e4S2/ROcAgL8LI45jULpuy80KxPd9CCGMwpRSfLy/VaxkFxIEgXEBSZIUPpmrDtFag3NuFOac1+8Q7Ha7pR7QerMiFTd4WR3/cpSg1A+ROtIU4FrANU0BrgVc0xTgWsA1TQGuBVzTFOBawDVNAa4FXPPvC/gFJNtMA3JdMkkAAAAASUVORK5CYII=" + ); + } + + public static Identifier nebulaCape() { + return aeg.register( + "nebula_cape", + "iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEpUlEQVRoge2YyY8UVRzHP2+prad7ZrqnZ2UmzIJsMsIEBgjx5BLjgQsnDx48m/jPGG/qUaMxJBpi4sG4hLBITEREJCOLA4G2Z+lZerqra3vPwwB6YzhVBueTVFL18svL7/NN1atXJbRbtgDSGcJkTWy6CkLyLxYQjw4LWMSja4t9Msp/KtJ4TbBNEF2Vl60KxkhWL+OXZ0k7DeLwAUJoIEV6Y9hkCZsugupG6ComugUW4k4dLxgCLIgikCGVi9AVNpbPb4sQZLn/GA4RR177kMnDb5OZGGszUAWs3oWSGTZbAwJ0cRoVTCBEAamCzRmEAOEipIN0yniF3ZT7j+Uq9Szo6tBRhibf5coP79NeuY52XNziXiwakzRI2kvgjFAaOU24ep209QfYDqDYvOE9EBpBgkQjlUd16GjOWltHVkf3MzU7hVOcpjz2JsLpR3kDOF4FhAKnBKaF40BQmsDx+xDCQenS5gxCoJRG6QDHq+L5o1RH9+dr9QxoJyiwsrROd3WStdplguJupC4SNefQ2gFZxWQxUasOpoONFxHSIYkbgADTJrMJw3veIYmbDE+9ihMU8vbaMqI4cMYG3ZMoFdBVmUS7A6z9fYEsWSZL22RZSmVkFs/fxcLds2TxEjbrkHRqdNr38ApjuMEow+NnKA0c4PZvn5BEbZr1s9tiEdSl7iLrjSv4PTP0jR1BYIjDg0glsFlI48HXLN79CiF9usqHGNj7Fqu1C6wuXKTTnkeqEn7lJA/+Okdy82O6+/bid5fy9toycqV+DWxIGtX489JHhOs1jr7+BntmTiFlAaV8tFPE8bpR0ufgkRnWl38lDu+DkFizQWv5CjYLUdKw0bjFSv1a3l5bRguzikkDlA5AtKjd+o6obekdGGR85hRReI+u0h72HdqN7hpGKpc4WkRKf3NDZDOyzkOk248uvoSJHpJ17ufttWW0WzqMUD7WNElTg9S9rC9eY/TAGYKCw76Z00y9UCWjwO0bd/j94ge4XpmkE27OIBQgMFmbpDWHcsq4pcO5Sj0L2u0apdR3mPqdzxHCwWQhXqGf2tw81dERjp8Y59xn37Bw90vSuI6Jl7CmjXi8RbYGbIiQLjaNyRAEPQfy9toyMk0jmmv3sCZEKh/H7aW1cpVG7QKNWo1QFBjfv48o6jAyPktl8CBe9zRCFQCLkBLQqMI+rOpBuVXSNMrba8sItzhtMRGFyklMugECtDfC4MQrTLx4nKs/fsp67VuwIQiB9voxJiNa/Ym4s4gXDKL8CXAGEdIBMuLmTaLmte3xGnS9KiZZIFq9hPKG0f4uegdnCZsLnP/iPWxSw9qMoHIC5Q3RrH+PCeeAzS9Gay1pVEfLEiaJSaP7uP6ufK2eAZ1F86RxA8cbQOoepO5iY2WOqDlHuvELxnTwe0/RWv4ZEy+htA+AtSnWGrAZgogsvIHQfUihyKL5nLW2jhBCWWszAKTyQThYmyFsijHxoyKJkO7mgrc5gjHRk3MpXR7/FRBCYUyMMem2eASEtfbpVc8x8uklzzc7AeTdQN7sBJB3A3mzE0DeDeTNTgB5N5A3OwHk3UDe7ASQdwN5878P4B9bWNKgJnFcBwAAAABJRU5ErkJggg==" + ); + } + + public static Identifier skinmcCape() { + return aeg.register( + "skinmc_cape", + "iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABoklEQVRoge2YQW4DIQxF7aq3666VoKv0bO2qg5Tuer7fTWjCCBgbPANq86RsEiDjj/3xwADw6t/Iks/lXTKMQwjYGuSc49VXm3M0sHcnLOFDNNi7k3hhgQhMRBRFyASawzR4IqJH6wW1xMCjEN777DgAEoHUNAnw/PJU/f3r/C1dCnTJhC2YGRcRTLPgwXIxJUnwkhJg5jjHLBuKAizLYvUfNUBtO2qWBdkSOCj4W7QBxQzoFiLJAAAEgJxzRHS4EGIv0M6pkQjAfF1vkAhabDOA6CpCCIG898Vj6UgKm2DiA0UTHBB4NqBKBpqcBFkBbkuhFWV7zUTpUVjzo5UPdDGyD1iTqC70o+6dGt4K12BmAvDrR6Vh1OEHUwsQ2fCjXDstFmQGAappLPCjrqaoSQDFy46E+OCt9dxniNgJ707aKQQgBrT5sWKWU+D2+JNmwn59wACSND5ShBlMsJV9W+EBJHcDiizognFxnonQBG7/NjiYUkOTC/TPlUBkfeGx7vRar9GyzGaCpR3frUxnzIBDuQsw+gFGcxdg9AOM5t8L8AOUu2WVZloEKQAAAABJRU5ErkJggg==" + ); + } + + public static Identifier cosmosCape() { + return Identifier.fromNamespaceAndPath( + "evolution", + "shader/cosmos_cape" + ); + } + + public static Identifier holyCape() { + return Identifier.fromNamespaceAndPath( + "evolution", + "shader/holy_cape" + ); + } + + public static Identifier dancingCatCape() { + return adi.register( + "dancing_cat", + "/assets/evolution/textures/cosmetic/capes/dancing_cat.png", + 256, + (-621494494 ^ 621494594) + ((-621494494 & 621494594) << 1) + ); + } + + public static void removeCape() { + String var0 = null; + int var1 = -1644828182; + + while (true) { + switch (var1) { + case -1644828182: + default: + var0 = localName(); + if (var0 != null) { + var1 = -724821917; + } else { + var1 = -935212203; + } + break; + case -935212203: + return; + case -724821917: + adq.getInstance().setCape(var0, null); + var1 = -935212203; + } + } + } + + public static void equipDemo() { + String var0 = null; + String var1 = null; + adr var2 = null; + int var3 = -745265756; + + while (true) { + switch (var3) { + case -745265756: + default: + var0 = localName(); + if (var0 == null) { + var3 = 1956014348; + } else { + var3 = 1474721890; + } + break; + case 16545309: + adq.getInstance().clear(var0); + adq.getInstance().assign(var0, var2.getId()); + var3 = 1625657510; + break; + case 1474721890: + var1 = "{\"name\":\"demo_hat\",\"attachment\":2,\"scale\":1.0,\"offset\":[0,0,0],\"rotation\":[0,0,0],\"texture\":\"iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAZElEQVR42u3QMREAAAgEILvaxtJvDk8GClDTyWclQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE3LdOArKzP0IB3AAAAABJRU5ErkJggg==\",\"model\":{\"minecraft:geometry\":[{\"description\":{\"texture_width\":64,\"texture_height\":64},\"bones\":[{\"name\":\"hat\",\"pivot\":[0,0,0],\"cubes\":[{\"origin\":[-4,0,-4],\"size\":[8,8,8],\"uv\":[0,0]}]}]}]}}"; + var2 = adq.getInstance().register(var1); + if (var2 != null) { + var3 = 16545309; + } else { + var3 = 1625657510; + } + break; + case 1625657510: + return; + case 1956014348: + return; + } + } + } + + public static void clearSelf() { + String var0 = null; + int var1 = -1623647306; + + while (true) { + switch (var1) { + case -1623647306: + default: + var0 = localName(); + if (var0 == null) { + var1 = 938571757; + } else { + var1 = -495307530; + } + break; + case -495307530: + adq.getInstance().clear(var0); + adq.getInstance().setCape(var0, null); + aeo.applyKey(var0, null); + return; + case 938571757: + return; + } + } + } + + public static void openFolder() { + ensureDirs(); + Util.getPlatform().openPath(cosmeticsDir()); + } + + private static String localName() { + Minecraft var0 = null; + String var2 = null; + int var1 = -1762934435; + + while (true) { + switch (var1) { + case -1762934435: + default: + var0 = Minecraft.getInstance(); + if (var0.player == null) { + var1 = -1182209040; + } else { + var1 = 742535494; + } + break; + case -1182209040: + var2 = null; + var1 = 1028254124; + break; + case 742535494: + var2 = var0.player.getScoreboardName(); + var1 = 1028254124; + break; + case 1028254124: + return var2; + } + } + } + + private static void ensureDirs() { + try { + Files.createDirectories(cosmeticsDir()); + Files.createDirectories(capesDir()); + } catch (IOException var1) { + } + } + + static { + CAPES_BY_KEY.put("black_smile", ado::builtinCape); + CAPES_BY_KEY.put("sunset", ado::sunsetCape); + CAPES_BY_KEY.put("nebula", ado::nebulaCape); + CAPES_BY_KEY.put("phantom", ado::skinmcCape); + CAPES_BY_KEY.put("cosmos", ado::cosmosCape); + CAPES_BY_KEY.put("holy", ado::holyCape); + CAPES_BY_KEY.put("dancing_cat", ado::dancingCatCape); + } +} diff --git a/src/main/java/defpackage/adp.java b/src/main/java/defpackage/adp.java new file mode 100644 index 0000000..35ae1ca --- /dev/null +++ b/src/main/java/defpackage/adp.java @@ -0,0 +1,118 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.Iterator; +import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.player.PlayerModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.world.entity.Entity; + +public class adp extends RenderLayer { + private final adz controller = adz.getInstance(); + private final afa skinController = afa.getInstance(); + + public adp(RenderLayerParent var1) { + super(var1); + } + + public void submit(PoseStack var1, SubmitNodeCollector var2, int var3, AvatarRenderState var4, float var5, float var6) { + Minecraft var7 = null; + Entity var8 = null; + AbstractClientPlayer var9 = null; + List var10 = null; + PlayerModel var11 = null; + Iterator var12 = null; + adr var13 = null; + int var14 = -742723358; + + while (true) { + switch (var14) { + case -1977279458: + var13 = (adr)var12.next(); + if (var13.getAttachment() == adj.FULL_BODY) { + var14 = -1329805924; + } else { + var14 = -1224930533; + } + break; + case -1773390020: + return; + case -1755241718: + var14 = 2052153933; + break; + case -1684460878: + return; + case -1422579198: + var10 = adq.getInstance().getCosmetics(var9); + if (var10.isEmpty()) { + var14 = -1351088241; + } else { + var14 = 1057145535; + } + break; + case -1351088241: + return; + case -1329805924: + this.skinController.render(var13, var1, var2, var3, var11, var9); + var14 = -1755241718; + break; + case -1224930533: + this.controller.render(var13, var1, var2, var3, var11, var9); + var14 = -1755241718; + break; + case -742723358: + default: + if (!adq.getInstance().isEnabled()) { + var14 = 36545281; + } else { + var14 = 1050157089; + } + break; + case -609855966: + var9 = (AbstractClientPlayer)var8; + if (var9.isInvisible()) { + var14 = -1684460878; + } else { + var14 = -1422579198; + } + break; + case -312058927: + var8 = var7.level.getEntity(var4.id); + if (var8 instanceof AbstractClientPlayer) { + var14 = -609855966; + } else { + var14 = -1684460878; + } + break; + case 36545281: + return; + case 928268869: + return; + case 1050157089: + var7 = Minecraft.getInstance(); + if (var7.level == null) { + var14 = 928268869; + } else { + var14 = -312058927; + } + break; + case 1057145535: + var11 = (PlayerModel)this.getParentModel(); + var12 = var10.iterator(); + var14 = 2052153933; + break; + case 2052153933: + if (var12.hasNext()) { + var14 = -1977279458; + } else { + var14 = -1773390020; + } + } + } + } +} diff --git a/src/main/java/defpackage/adq.java b/src/main/java/defpackage/adq.java new file mode 100644 index 0000000..f6f16b2 --- /dev/null +++ b/src/main/java/defpackage/adq.java @@ -0,0 +1,420 @@ +package defpackage; + +import com.google.gson.JsonParser; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArrayList; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.resources.Identifier; + +public class adq { + private static adq instance; + private final Map> cosmeticsByPlayer = new ConcurrentHashMap<>(); + private final Map capesByPlayer = new ConcurrentHashMap<>(); + private final Map capeBase64ByPlayer = new ConcurrentHashMap<>(); + private final Map nameTagsByPlayer = new ConcurrentHashMap<>(); + private volatile boolean enabled; + + public static adq getInstance() { + int var0 = -1039074785; + + while (true) { + switch (var0) { + case -1039074785: + default: + if (instance == null) { + var0 = 1773715369; + } else { + var0 = 1975048693; + } + break; + case 1773715369: + instance = new adq(); + var0 = 1975048693; + break; + case 1975048693: + return instance; + } + } + } + + public boolean isEnabled() { + return this.enabled; + } + + public void setEnabled(boolean var1) { + this.enabled = var1; + } + + public adr register(String var1) { + return aea.getInstance().load(var1); + } + + public void assign(String var1, int var2) { + int var3 = 1242021139; + + while (true) { + switch (var3) { + case -919405000: + return; + case -140182506: + this.cosmeticsByPlayer.computeIfAbsent(key(var1), var0 -> new CopyOnWriteArrayList<>()).add(var2); + aef.persistIfLocal(var1); + return; + case 1242021139: + } + + if (var1 == null) { + var3 = -919405000; + } else { + var3 = -140182506; + } + } + } + + public void clear(String var1) { + int var2 = -836689725; + + while (true) { + switch (var2) { + case -836689725: + default: + if (var1 == null) { + var2 = 973456871; + } else { + var2 = -776302221; + } + break; + case -776302221: + this.cosmeticsByPlayer.remove(key(var1)); + aef.persistIfLocal(var1); + return; + case 973456871: + return; + } + } + } + + public void unassign(String var1, int var2) { + List var3 = null; + int var4 = -1408104457; + + while (true) { + switch (var4) { + case -1707684384: + aef.persistIfLocal(var1); + var4 = -1242703024; + break; + case -1587340068: + return; + case -1408104457: + default: + if (var1 == null) { + var4 = -1587340068; + } else { + var4 = -224166438; + } + break; + case -1242703024: + return; + case -224166438: + var3 = this.cosmeticsByPlayer.get(key(var1)); + if (var3 != null) { + var4 = -51214598; + } else { + var4 = -1242703024; + } + break; + case -51214598: + if (var3.remove(Integer.valueOf(var2))) { + var4 = -1707684384; + } else { + var4 = -1242703024; + } + } + } + } + + public boolean hasCosmetic(String var1, int var2) { + List var3 = null; + int var5 = 0; + int var4 = 114074004; + + while (true) { + switch (var4) { + case -1729310546: + var5 = 1; + var4 = 2564988; + break; + case -1323864842: + var5 = 0; + var4 = 2564988; + break; + case -1057320864: + return (boolean)(((0)) != 0); + case 2564988: + return (boolean)((var5) != 0); + case 108049168: + var3 = this.cosmeticsByPlayer.get(key(var1)); + if (var3 != null) { + var4 = 2059327577; + } else { + var4 = -1323864842; + } + break; + case 114074004: + default: + if (var1 == null) { + var4 = -1057320864; + } else { + var4 = 108049168; + } + break; + case 2059327577: + if (var3.contains(var2)) { + var4 = -1729310546; + } else { + var4 = -1323864842; + } + } + } + } + + public adr registerWithTexture(String var1, Identifier var2) { + return aea.getInstance().load(JsonParser.parseString(var1).getAsJsonObject(), var2, (-1698520486 | 1698520485) + (-1698520486 & 1698520485)); + } + + public List getCosmetics(AbstractClientPlayer var1) { + List var2 = null; + ArrayList var3 = null; + Iterator var4 = null; + int var5 = 0; + adr var6 = null; + int var7 = -898641314; + + while (true) { + switch (var7) { + case -1891537633: + var3 = new ArrayList(var2.size()); + var4 = var2.iterator(); + var7 = 965715732; + break; + case -1543516580: + var5 = (Integer)var4.next(); + var6 = aea.getInstance().get(var5); + if (var6 != null) { + var7 = 1880143941; + } else { + var7 = -458935075; + } + break; + case -1095891715: + return var3; + case -898641314: + default: + if (var1 == null) { + var7 = 1316191282; + } else { + var7 = -566696556; + } + break; + case -725523446: + return List.of(); + case -615737996: + if (var2.isEmpty()) { + var7 = -725523446; + } else { + var7 = -1891537633; + } + break; + case -566696556: + var2 = this.cosmeticsByPlayer.get(key(var1.getScoreboardName())); + if (var2 != null) { + var7 = -615737996; + } else { + var7 = -725523446; + } + break; + case -458935075: + var7 = 965715732; + break; + case 965715732: + if (var4.hasNext()) { + var7 = -1543516580; + } else { + var7 = -1095891715; + } + break; + case 1316191282: + return List.of(); + case 1880143941: + var3.add(var6); + var7 = -458935075; + } + } + } + + public void setCape(String var1, Identifier var2) { + int var3 = -493677252; + + while (true) { + switch (var3) { + case -1680020363: + this.setCapeInternal(var1, var2); + aef.persistIfLocal(var1); + return; + case -493677252: + default: + if (var1 == null) { + var3 = 709151145; + } else { + var3 = -1680020363; + } + break; + case 709151145: + return; + } + } + } + + public Identifier setCapeFromBase64(String var1, String var2) { + Identifier var3 = aeg.register("cape_" + var1 + "_" + Integer.toHexString(var2.hashCode()), var2); + this.setCapeInternal(var1, var3); + this.capeBase64ByPlayer.put(key(var1), var2); + aef.persistIfLocal(var1); + return var3; + } + + private void setCapeInternal(String var1, Identifier var2) { + int var3 = 1746437612; + + while (true) { + switch (var3) { + case -1617580950: + this.capesByPlayer.put(key(var1), var2); + var3 = 379901279; + break; + case -1022392419: + this.capesByPlayer.remove(key(var1)); + var3 = 379901279; + break; + case 379901279: + return; + case 1746437612: + default: + this.capeBase64ByPlayer.remove(key(var1)); + if (var2 == null) { + var3 = -1022392419; + } else { + var3 = -1617580950; + } + } + } + } + + public String getCapeBase64(String var1) { + int var2 = 1591530228; + + while (true) { + switch (var2) { + case -1484695415: + return this.capeBase64ByPlayer.get(key(var1)); + case 128169611: + return null; + case 1591530228: + } + + if (var1 == null) { + var2 = 128169611; + } else { + var2 = -1484695415; + } + } + } + + public void setNameTag(String var1, String var2) { + int var3 = 479503133; + + while (true) { + switch (var3) { + case -2104430700: + this.nameTagsByPlayer.put(key(var1), var2); + var3 = 281211888; + break; + case -915952697: + this.nameTagsByPlayer.remove(key(var1)); + var3 = 281211888; + break; + case -491831853: + if (var2 == null) { + var3 = -915952697; + } else { + var3 = -2104430700; + } + break; + case -275914616: + return; + case 281211888: + aef.persistIfLocal(var1); + return; + case 479503133: + default: + if (var1 == null) { + var3 = -275914616; + } else { + var3 = -491831853; + } + } + } + } + + public String getNameTag(String var1) { + int var2 = 666507004; + + while (true) { + switch (var2) { + case -1737042558: + return null; + case 666507004: + default: + if (var1 == null) { + var2 = -1737042558; + } else { + var2 = 669432999; + } + break; + case 669432999: + return this.nameTagsByPlayer.get(key(var1)); + } + } + } + + public Identifier getCape(String var1) { + int var2 = -730844127; + + while (true) { + switch (var2) { + case -1305883489: + return null; + case -730844127: + default: + if (var1 == null) { + var2 = -1305883489; + } else { + var2 = 1946592162; + } + break; + case 1946592162: + return this.capesByPlayer.get(key(var1)); + } + } + } + + private static String key(String var0) { + return var0.toLowerCase(Locale.ROOT); + } +} diff --git a/src/main/java/defpackage/adr.java b/src/main/java/defpackage/adr.java new file mode 100644 index 0000000..fe3f8f4 --- /dev/null +++ b/src/main/java/defpackage/adr.java @@ -0,0 +1,127 @@ +package defpackage; + +import com.google.gson.JsonObject; +import net.minecraft.resources.Identifier; + +public class adr { + private final String name; + private final int id; + private final int type; + private String modelJson; + private Identifier texture; + private JsonObject animation; + private adj attachment = adj.HEAD; + private float scale = 1.0F; + private float offsetX; + private float offsetY; + private float offsetZ; + private float rotX; + private float rotY; + private float rotZ; + + public adr(String var1, int var2, int var3) { + this.name = var1; + this.id = var2; + this.type = var3; + } + + public String getName() { + return this.name; + } + + public int getId() { + return this.id; + } + + public int getType() { + return this.type; + } + + public String getModelJson() { + return this.modelJson; + } + + public void setModelJson(String var1) { + this.modelJson = var1; + } + + public Identifier getTexture() { + return this.texture; + } + + public void setTexture(Identifier var1) { + this.texture = var1; + } + + public JsonObject getAnimation() { + return this.animation; + } + + public void setAnimation(JsonObject var1) { + this.animation = var1; + } + + public adj getAttachment() { + return this.attachment; + } + + public void setAttachment(adj var1) { + this.attachment = var1; + } + + public float getScale() { + return this.scale; + } + + public void setScale(float var1) { + this.scale = var1; + } + + public float getOffsetX() { + return this.offsetX; + } + + public void setOffsetX(float var1) { + this.offsetX = var1; + } + + public float getOffsetY() { + return this.offsetY; + } + + public void setOffsetY(float var1) { + this.offsetY = var1; + } + + public float getOffsetZ() { + return this.offsetZ; + } + + public void setOffsetZ(float var1) { + this.offsetZ = var1; + } + + public float getRotX() { + return this.rotX; + } + + public void setRotX(float var1) { + this.rotX = var1; + } + + public float getRotY() { + return this.rotY; + } + + public void setRotY(float var1) { + this.rotY = var1; + } + + public float getRotZ() { + return this.rotZ; + } + + public void setRotZ(float var1) { + this.rotZ = var1; + } +} diff --git a/src/main/java/defpackage/ads.java b/src/main/java/defpackage/ads.java new file mode 100644 index 0000000..e0838f0 --- /dev/null +++ b/src/main/java/defpackage/ads.java @@ -0,0 +1,12 @@ +package defpackage; + +public class ads { + public aif load(adr var1) { + try { + String var2 = var1.getModelJson(); + return var2 == null ? null : aid.parse(var2); + } catch (Exception var3) { + return null; + } + } +} diff --git a/src/main/java/defpackage/adt.java b/src/main/java/defpackage/adt.java new file mode 100644 index 0000000..1f52a80 --- /dev/null +++ b/src/main/java/defpackage/adt.java @@ -0,0 +1,13 @@ +package defpackage; + +import java.util.HashMap; +import java.util.Map; + +class adt { + Map rotation = new HashMap<>(); + Map position = new HashMap<>(); + Map scale = new HashMap<>(); + + adt() { + } +} diff --git a/src/main/java/defpackage/adu.java b/src/main/java/defpackage/adu.java new file mode 100644 index 0000000..f544416 --- /dev/null +++ b/src/main/java/defpackage/adu.java @@ -0,0 +1,15 @@ +package defpackage; + +import java.util.HashMap; +import java.util.Map; + +class adu { + String name; + boolean procedural; + boolean loop; + float length; + Map bones = new HashMap<>(); + + adu() { + } +} diff --git a/src/main/java/defpackage/adv.java b/src/main/java/defpackage/adv.java new file mode 100644 index 0000000..a4968f9 --- /dev/null +++ b/src/main/java/defpackage/adv.java @@ -0,0 +1,1064 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.Map.Entry; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.Identifier; +import org.joml.Matrix4f; + +public class adv { + private static adv instance; + private static final float[] OPAQUE_TINT; + private final Map definitions = new ConcurrentHashMap<>(); + private final Map animations = new ConcurrentHashMap<>(); + private final Set failedAnimations = ConcurrentHashMap.newKeySet(); + private final Map animationStart = new ConcurrentHashMap<>(); + private final Map> basePoses = new ConcurrentHashMap<>(); + private final ads loader = new ads(); + + public static adv getInstance() { + int var0 = -2114894271; + + while (true) { + switch (var0) { + case -2114894271: + default: + if (instance == null) { + var0 = -353393350; + } else { + var0 = 137908300; + } + break; + case -353393350: + instance = new adv(); + var0 = 137908300; + break; + case 137908300: + return instance; + } + } + } + + public void render(adr var1, PoseStack var2, SubmitNodeCollector var3, int var4, AbstractClientPlayer var5) { + aif var6 = null; + adu var7 = null; + RenderType var8 = null; + int var9 = 39202186; + + while (true) { + switch (var9) { + case -2063460025: + if (var1.getTexture() == null) { + var9 = -332083790; + } else { + var9 = 746383184; + } + break; + case -1557232661: + return; + case -332083790: + return; + case 39202186: + default: + if (var1 != null) { + var9 = -2063460025; + } else { + var9 = -332083790; + } + break; + case 746383184: + var6 = this.getDefinition(var1); + if (var6 == null) { + var9 = -1557232661; + } else { + var9 = 779688452; + } + break; + case 779688452: + var7 = this.getAnimation(var1); + var8 = RenderTypes.entityTranslucent(var1.getTexture()); + var3.submitCustomGeometry(var2, var8, (var6x, var7x) -> { + PoseStack var8x = null; + Iterator var9x = null; + aig var10x = null; + int var11x = -64019536; + + while (true) { + switch (var11x) { + case -1409001055: + this.applyProceduralAnimation(var6, var7, var1.getId(), var5); + var11x = 594291748; + break; + case -1320694889: + if (var9x.hasNext()) { + var11x = 1295738808; + } else { + var11x = -996278645; + } + break; + case -996278645: + return; + case -266866544: + if (var7.procedural) { + var11x = -1409001055; + } else { + var11x = 2014302504; + } + break; + case -64019536: + default: + if (var7 != null) { + var11x = -266866544; + } else { + var11x = 594291748; + } + break; + case 594291748: + var8x = new PoseStack(); + var8x.last().pose().set(var6x.pose()); + var8x.last().normal().set(var6x.normal()); + var9x = var6.roots.iterator(); + var11x = -1320694889; + break; + case 1295738808: + var10x = (aig)var9x.next(); + this.renderPart(var10x, var8x, var7x, var4, OPAQUE_TINT); + var11x = -1320694889; + break; + case 2014302504: + this.applyAnimation(var6, var7, var1.getId()); + var11x = 594291748; + } + } + }); + return; + } + } + } + + public void submitRoots(aif var1, PoseStack var2, SubmitNodeCollector var3, Identifier var4, int var5, Runnable var6) { + int var7 = 1166319238; + + while (true) { + switch (var7) { + case -1123040842: + return; + case 1166319238: + default: + if (var4 == null) { + var7 = -1123040842; + } else { + var7 = 1346205313; + } + break; + case 1346205313: + this.submitRoots(var1, var2, var3, RenderTypes.entityTranslucent(var4), var5, OPAQUE_TINT, var6); + return; + } + } + } + + public void submitRoots(aif var1, PoseStack var2, SubmitNodeCollector var3, RenderType var4, int var5, float[] var6, Runnable var7) { + int var8 = 1811797219; + + while (true) { + switch (var8) { + case -1935879497: + if (var4 == null) { + var8 = -1203319648; + } else { + var8 = 757158711; + } + break; + case -1203319648: + return; + case 757158711: + var3.submitCustomGeometry(var2, var4, (var5x, var6x) -> { + PoseStack var7x = null; + Iterator var8x = null; + aig var9 = null; + int var10 = -1129692303; + + while (true) { + switch (var10) { + case -1268054193: + if (var8x.hasNext()) { + var10 = -484043750; + } else { + var10 = -969554552; + } + break; + case -1129692303: + default: + if (var7 != null) { + var10 = 1230085733; + } else { + var10 = 1758292857; + } + break; + case -969554552: + return; + case -484043750: + var9 = (aig)var8x.next(); + this.renderPart(var9, var7x, var6x, var5, var6); + var10 = -1268054193; + break; + case 1230085733: + var7.run(); + var10 = 1758292857; + break; + case 1758292857: + var7x = new PoseStack(); + var7x.last().pose().set(var5x.pose()); + var7x.last().normal().set(var5x.normal()); + var8x = var1.roots.iterator(); + var10 = -1268054193; + } + } + }); + return; + case 1811797219: + default: + if (var1 != null) { + var8 = -1935879497; + } else { + var8 = -1203319648; + } + } + } + } + + private void renderPart(aig var1, PoseStack var2, VertexConsumer var3, int var4, float[] var5) { + Iterator var6 = null; + aig var7 = null; + int var8 = -395354046; + + while (true) { + switch (var8) { + case -1397282486: + var2.pushPose(); + aih.translatePartOffset(var1, var2); + aih.translatePartPivot(var1, var2); + aih.rotatePart(var1, var2); + aih.scalePart(var1, var2); + aih.translatePartPivotBack(var1, var2); + var6 = var1.cubes.iterator(); + var8 = -69052752; + break; + case -473093899: + return; + case -395354046: + default: + if (var1.isHidden()) { + var8 = -473093899; + } else { + var8 = -1397282486; + } + break; + case -69052752: + if (var6.hasNext()) { + var8 = 232055957; + } else { + var8 = 1893237693; + } + break; + case 101594751: + var7 = (aig)var6.next(); + this.renderPart(var7, var2, var3, var4, var5); + var8 = 1465372301; + break; + case 232055957: + aie var9 = (aie)var6.next(); + this.renderCube(var9, var2, var3, var4, var5); + var8 = -69052752; + break; + case 1465372301: + if (var6.hasNext()) { + var8 = 101594751; + } else { + var8 = 1743422255; + } + break; + case 1743422255: + var2.popPose(); + return; + case 1893237693: + var6 = var1.children.iterator(); + var8 = 1465372301; + } + } + } + + private void renderCube(aie var1, PoseStack var2, VertexConsumer var3, int var4, float[] var5) { + Pose var6 = null; + Matrix4f var7 = null; + aij[] var8 = null; + int var9 = 0; + int var10 = 0; + Object var11 = null; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + aik[] var15 = null; + int var16 = 0; + int var17 = 0; + Object var18 = null; + int var19 = 2011326136; + + while (true) { + switch (var19) { + case -2049533124: + if (var1.size.getX() != 0.0F) { + var19 = -1369906808; + } else { + var19 = -1041710212; + } + break; + case -1989227287: + if (var10 < var9) { + var19 = 1414796123; + } else { + var19 = -291048814; + } + break; + case -1935142204: + if (var1.size.getX() != 0.0F) { + var19 = -1317990026; + } else { + var19 = -498198405; + } + break; + case -1751725493: + var19 = 1780080721; + break; + case -1572872504: + var18 = var15[var17]; + var3.addVertex(var7, ((aik)var18).position.getX(), ((aik)var18).position.getY(), ((aik)var18).position.getZ()) + .setColor( + var5[0], + var5[1], + var5[2], + var5[3] + ) + .setUv(((aik)var18).u, ((aik)var18).v) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var4) + .setNormal(var6, var12, var13, var14); + var17++; + var19 = -915846840; + break; + case -1369906808: + if (var1.size.getZ() == 0.0F) { + var19 = -1041710212; + } else { + var19 = -1935142204; + } + break; + case -1317990026: + if (var1.size.getY() == 0.0F) { + var19 = -498198405; + } else { + var19 = 1031889802; + } + break; + case -1041710212: + if (var13 < 0.0F) { + var19 = -658869910; + } else { + var19 = -1935142204; + } + break; + case -915846840: + if (var17 < var16) { + var19 = -1572872504; + } else { + var19 = 1780080721; + } + break; + case -658869910: + var13 = -var13; + var19 = -1935142204; + break; + case -498198405: + if (var14 < 0.0F) { + var19 = 728681010; + } else { + var19 = 1031889802; + } + break; + case -295415339: + if (var12 < 0.0F) { + var19 = 1655578980; + } else { + var19 = -2049533124; + } + break; + case -291048814: + var2.popPose(); + return; + case 519285354: + var12 = ((aij)var11).normal.getX(); + var13 = ((aij)var11).normal.getY(); + var14 = ((aij)var11).normal.getZ(); + if (var1.size.getY() != 0.0F) { + var19 = 1567841601; + } else { + var19 = -295415339; + } + break; + case 728681010: + var14 = -var14; + var19 = 1031889802; + break; + case 1031889802: + var15 = ((aij)var11).corners; + var16 = var15.length; + var17 = 0; + var19 = -915846840; + break; + case 1414796123: + var11 = var8[var10]; + if (var11 == null) { + var19 = -1751725493; + } else { + var19 = 519285354; + } + break; + case 1567841601: + if (var1.size.getZ() == 0.0F) { + var19 = -295415339; + } else { + var19 = -2049533124; + } + break; + case 1655578980: + var12 = -var12; + var19 = -2049533124; + break; + case 1780080721: + var10++; + var19 = -1989227287; + break; + case 2011326136: + default: + var2.pushPose(); + aih.translateCubePivot(var1, var2); + aih.rotateCube(var1, var2); + aih.translateCubePivotBack(var1, var2); + var6 = var2.last(); + var7 = var6.pose(); + var8 = var1.faces; + var9 = var8.length; + var10 = 0; + var19 = -1989227287; + } + } + } + + private aif getDefinition(adr var1) { + int var2 = 0; + aif var3 = null; + int var4 = 1283810759; + + while (true) { + switch (var4) { + case -747723888: + var3 = this.loader.load(var1); + if (var3 != null) { + var4 = -187426299; + } else { + var4 = -526639499; + } + break; + case -526639499: + return var3; + case -187426299: + this.definitions.put(var2, var3); + this.snapshotBasePose(var2, var3); + var4 = -526639499; + break; + case 198883331: + return this.definitions.get(var2); + case 1283810759: + default: + var2 = var1.getId(); + if (this.definitions.containsKey(var2)) { + var4 = 198883331; + } else { + var4 = -747723888; + } + } + } + } + + private void snapshotBasePose(int var1, aif var2) { + HashMap var3 = null; + Iterator var4 = null; + aig var5 = null; + int var6 = -1800819404; + + while (true) { + switch (var6) { + case -1800819404: + default: + var3 = new HashMap(); + var4 = var2.roots.iterator(); + var6 = -1367173066; + break; + case -1382024792: + var5 = (aig)var4.next(); + this.snapshotPart(var5, var3); + var6 = -1367173066; + break; + case -1367173066: + if (var4.hasNext()) { + var6 = -1382024792; + } else { + var6 = 463512662; + } + break; + case 463512662: + this.basePoses.put(var1, var3); + return; + } + } + } + + private void snapshotPart(aig var1, Map var2) { + Iterator var3 = null; + aig var4 = null; + int var5 = -763646019; + + while (true) { + switch (var5) { + case -763646019: + default: + String var10001 = var1.name; + float[] var10002 = new float[9]; + var10002[0] = var1.getRotX(); + var10002[1] = var1.getRotY(); + var10002[2] = var1.getRotZ(); + var10002[3] = var1.getOffsetX(); + var10002[4] = var1.getOffsetY(); + var10002[5] = var1.getOffsetZ(); + var10002[6] = var1.getScaleX(); + var10002[7] = var1.getScaleY(); + var10002[8] = var1.getScaleZ(); + var2.put(var10001, var10002); + var3 = var1.children.iterator(); + var5 = 146065815; + break; + case -506214055: + return; + case 146065815: + if (var3.hasNext()) { + var5 = 666393630; + } else { + var5 = -506214055; + } + break; + case 666393630: + var4 = (aig)var3.next(); + this.snapshotPart(var4, var2); + var5 = 146065815; + } + } + } + + private adu getAnimation(adr var1) { + int var2 = var1.getId(); + if (this.animations.containsKey(var2)) { + return this.animations.get(var2); + } + + if (this.failedAnimations.contains(var2)) { + return null; + } + + JsonObject var3 = var1.getAnimation(); + if (var3 == null) { + this.failedAnimations.add(var2); + return null; + } + + try { + adu var4 = this.compileAnimation(var3); + if (var4 != null) { + this.animations.put(var2, var4); + } else { + this.failedAnimations.add(var2); + } + + return var4; + } catch (Exception var5) { + this.failedAnimations.add(var2); + return null; + } + } + + private adu compileAnimation(JsonObject var1) { + if (var1.has("procedural")) { + adu var10 = new adu(); + var10.name = var1.get("procedural").getAsString(); + var10.procedural = (boolean)(((1)) != 0); + return var10; + } + + adu var2 = new adu(); + Iterator var3 = var1.entrySet().iterator(); + if (var3.hasNext()) { + Entry var4 = (Entry)var3.next(); + JsonObject var5 = ((JsonElement)var4.getValue()).getAsJsonObject(); + var2.name = (String)var4.getKey(); + var2.loop = (boolean)(((var5.has("loop") + && var5.get("loop").getAsBoolean() + ? 1: (-1779999766 | 1779999766) + (-1779999766 & 1779999766))) != 0); + var2.length = var5.has("animation_length") + ? var5.get("animation_length").getAsFloat() + : 1.0F; + if (var5.has("bones")) { + for (Entry var7 : var5.getAsJsonObject("bones").entrySet()) { + JsonObject var8 = ((JsonElement)var7.getValue()).getAsJsonObject(); + adt var9 = new adt(); + if (var8.has("rotation")) { + var9.rotation = this.parseKeyframes(var8.get("rotation")); + } + + if (var8.has("position")) { + var9.position = this.parseKeyframes(var8.get("position")); + } + + if (var8.has("scale")) { + var9.scale = this.parseKeyframes(var8.get("scale")); + } + + var2.bones.put((String)var7.getKey(), var9); + } + } + } + + return var2; + } + + private Map parseKeyframes(JsonElement var1) { + HashMap var2 = new HashMap(); + if (var1.isJsonArray()) { + var2.put(0.0F, this.readTriple(var1.getAsJsonArray())); + return var2; + } + + if (var1.isJsonObject()) { + for (Entry var4 : var1.getAsJsonObject().entrySet()) { + try { + float var5 = Float.parseFloat((String)var4.getKey()); + JsonElement var6 = (JsonElement)var4.getValue(); + if (var6.isJsonObject()) { + JsonObject var7 = var6.getAsJsonObject(); + if (var7.has("post")) { + var2.put(var5, this.readTriple(var7.getAsJsonArray("post"))); + } + } else if (var6.isJsonArray()) { + var2.put(var5, this.readTriple(var6.getAsJsonArray())); + } + } catch (NumberFormatException var8) { + } + } + } + + return var2; + } + + private float[] readTriple(JsonArray var1) { + float[] var10000 = new float[3]; + var10000[0] = var1.get(0).getAsFloat(); + var10000[1] = var1.get(1).getAsFloat(); + var10000[2] = var1.get(2).getAsFloat(); + return var10000; + } + + private void applyProceduralAnimation(aif var1, adu var2, int var3, AbstractClientPlayer var4) { + Map var5 = null; + Iterator var6 = null; + aig var7 = null; + int var8 = -1370127827; + + while (true) { + switch (var8) { + case -2116455301: + if (var6.hasNext()) { + var8 = -1918123636; + } else { + var8 = 573491003; + } + break; + case -1943204385: + aeh.getInstance().apply(var1, var5, var4); + var8 = 1474770119; + break; + case -1918123636: + var7 = (aig)var6.next(); + this.resetPart(var7, var5); + var8 = -2116455301; + break; + case -1902917397: + if ("demon_wings".equals(var2.name)) { + var8 = -1943204385; + } else { + var8 = 1474770119; + } + break; + case -1790693876: + return; + case -1370127827: + default: + var5 = this.basePoses.get(var3); + if (var5 == null) { + var8 = -1790693876; + } else { + var8 = -1338956028; + } + break; + case -1338956028: + var6 = var1.roots.iterator(); + var8 = -2116455301; + break; + case 573491003: + if ("dragon_wings".equals(var2.name)) { + var8 = 740168053; + } else { + var8 = 1756590144; + } + break; + case 740168053: + aei.getInstance().apply(var1, var5, var4); + var8 = 1474770119; + break; + case 1474770119: + return; + case 1756590144: + if ("angel_wings".equals(var2.name)) { + var8 = 1983298026; + } else { + var8 = -1902917397; + } + break; + case 1983298026: + adg.getInstance().apply(var1, var5, var4); + var8 = 1474770119; + } + } + } + + private void applyAnimation(aif var1, adu var2, int var3) { + Map var4 = null; + float var5 = 0.0F; + float var6 = 0.0F; + Iterator var7 = null; + Object var8 = null; + aig var9 = null; + adt var10 = null; + float[] var11 = null; + Object var12 = null; + int var13 = -552665383; + + while (true) { + switch (var13) { + case -1902985971: + var12 = this.interpolate(var10.scale, var6); + var9.setScaleX( + var11[6] * ((Object[])var12)[0] + ); + var9.setScaleY( + var11[7] + * ((Object[])var12)[1] + ); + var9.setScaleZ( + var11[8] + * ((Object[])var12)[2] + ); + var13 = 1452085331; + break; + case -1767076087: + float[] var10000 = new float[9]; + var10000[0] = 0.0F; + var10000[1] = 0.0F; + var10000[2] = 0.0F; + var10000[3] = 0.0F; + var10000[4] = 0.0F; + var10000[5] = 0.0F; + var10000[6] = 1.0F; + var10000[7] = 1.0F; + var10000[8] = 1.0F; + var11 = var10000; + var13 = 1858721265; + break; + case -1601896895: + var6 = Math.min(var5, var2.length); + var13 = -1498493504; + break; + case -1498493504: + var7 = var1.roots.iterator(); + var13 = -86797898; + break; + case -1382182275: + return; + case -1278537934: + if (!var10.position.isEmpty()) { + var13 = -603703171; + } else { + var13 = -156622144; + } + break; + case -722058315: + if (var2.length > 0.0F) { + var13 = -622157726; + } else { + var13 = -524273725; + } + break; + case -679266766: + var12 = this.interpolate(var10.rotation, var6); + var9.setRotX( + var11[0] + + (float)Math.toRadians(-((Object[])var12)[0]) + ); + var9.setRotY( + var11[1] + + (float)Math.toRadians(-((Object[])var12)[1]) + ); + var9.setRotZ( + var11[2] + + (float)Math.toRadians(((Object[])var12)[2]) + ); + var13 = -1278537934; + break; + case -622157726: + var6 = var5 % var2.length; + var13 = -1498493504; + break; + case -603703171: + var12 = this.interpolate(var10.position, var6); + var9.setOffsetX( + var11[3] + ((Object[])var12)[0] + ); + var9.setOffsetY( + var11[4] + + ((Object[])var12)[1] + ); + var9.setOffsetZ( + var11[5] + + ((Object[])var12)[2] + ); + var13 = -156622144; + break; + case -552665383: + default: + var4 = this.basePoses.get(var3); + if (var4 == null) { + var13 = 74385226; + } else { + var13 = 1282725678; + } + break; + case -524273725: + var6 = Math.min(var5, var2.length); + var13 = -1498493504; + break; + case -156622144: + if (!var10.scale.isEmpty()) { + var13 = -1902985971; + } else { + var13 = 1452085331; + } + break; + case -108376170: + var7 = var2.bones.entrySet().iterator(); + var13 = 1283009472; + break; + case -86797898: + if (var7.hasNext()) { + var13 = 192554083; + } else { + var13 = -108376170; + } + break; + case 74385226: + return; + case 192554083: + var8 = (aig)var7.next(); + this.resetPart((aig)var8, var4); + var13 = -86797898; + break; + case 424189295: + var10 = (adt)var8.getValue(); + var11 = (float[])var4.get(var8.getKey()); + if (var11 == null) { + var13 = -1767076087; + } else { + var13 = 1858721265; + } + break; + case 1056374449: + var13 = 1283009472; + break; + case 1282725678: + var5 = (float)(System.currentTimeMillis() - this.animationStart.computeIfAbsent(var3, var0 -> System.currentTimeMillis())) / 1000.0F; + if (!var2.loop) { + var13 = -1601896895; + } else { + var13 = -722058315; + } + break; + case 1283009472: + if (var7.hasNext()) { + var13 = 1578411129; + } else { + var13 = -1382182275; + } + break; + case 1452085331: + var13 = 1283009472; + break; + case 1578411129: + var8 = (Entry)var7.next(); + var9 = var1.findPart((String)var8.getKey()).orElse(null); + if (var9 == null) { + var13 = 1056374449; + } else { + var13 = 424189295; + } + break; + case 1858721265: + if (!var10.rotation.isEmpty()) { + var13 = -679266766; + } else { + var13 = -1278537934; + } + } + } + } + + private void resetPart(aig var1, Map var2) { + float[] var3 = null; + Iterator var4 = null; + aig var5 = null; + int var6 = -988299244; + + while (true) { + switch (var6) { + case -1523234094: + var4 = var1.children.iterator(); + var6 = 21216065; + break; + case -988299244: + default: + var3 = (float[])var2.get(var1.name); + if (var3 != null) { + var6 = 264847939; + } else { + var6 = -1523234094; + } + break; + case -722941858: + var5 = (aig)var4.next(); + this.resetPart(var5, var2); + var6 = 21216065; + break; + case 21216065: + if (var4.hasNext()) { + var6 = -722941858; + } else { + var6 = 608763738; + } + break; + case 264847939: + var1.setRotX(var3[0]); + var1.setRotY(var3[1]); + var1.setRotZ(var3[2]); + var1.setOffsetX(var3[3]); + var1.setOffsetY(var3[4]); + var1.setOffsetZ(var3[5]); + var1.setScaleX(var3[6]); + var1.setScaleY(var3[7]); + var1.setScaleZ(var3[8]); + var6 = -1523234094; + break; + case 608763738: + return; + } + } + } + + private float[] interpolate(Map var1, float var2) { + if (var1.isEmpty()) { + float[] var12 = new float[3]; + var12[0] = 0.0F; + var12[1] = 0.0F; + var12[2] = 0.0F; + return var12; + } + + Float var3 = null; + Float var4 = null; + float[] var5 = null; + float[] var6 = null; + + for (Entry var8 : var1.entrySet()) { + float var9 = (Float)var8.getKey(); + if (var9 <= var2 && (var3 == null || var9 > var3)) { + var3 = var9; + var5 = (float[])var8.getValue(); + } + + if (var9 >= var2 && (var4 == null || var9 < var4)) { + var4 = var9; + var6 = (float[])var8.getValue(); + } + } + + if (var5 == null && var6 == null) { + float[] var11 = new float[3]; + var11[0] = 0.0F; + var11[1] = 0.0F; + var11[2] = 0.0F; + return var11; + } else if (var5 == null) { + return var6; + } else if (var6 != null && !var3.equals(var4)) { + float var10 = (var2 - var3) / (var4 - var3); + float[] var10000 = new float[3]; + var10000[0] = var5[0] + + var10 * (var6[0] - var5[0]); + var10000[1] = var5[1] + + var10 * (var6[1] - var5[1]); + var10000[2] = var5[2] + + var10 * (var6[2] - var5[2]); + return var10000; + } else { + return var5; + } + } + + static { + float[] var10000 = new float[4]; + var10000[0] = 1.0F; + var10000[1] = 1.0F; + var10000[2] = 1.0F; + var10000[3] = 1.0F; + OPAQUE_TINT = var10000; + } +} diff --git a/src/main/java/defpackage/adw.java b/src/main/java/defpackage/adw.java new file mode 100644 index 0000000..b8b885a --- /dev/null +++ b/src/main/java/defpackage/adw.java @@ -0,0 +1,29 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:adw.class */ +/* synthetic */ class adw { + static final /* synthetic */ int[] $SwitchMap$evo$systems$cosmetic$CosmeticShowcase$Slot = new int[aec.values().length]; + + static { + try { + $SwitchMap$evo$systems$cosmetic$CosmeticShowcase$Slot[aec.CAPES.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$cosmetic$CosmeticShowcase$Slot[aec.WINGS.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$cosmetic$CosmeticShowcase$Slot[aec.BACKPACKS.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$cosmetic$CosmeticShowcase$Slot[aec.NAMETAGS.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + try { + $SwitchMap$evo$systems$cosmetic$CosmeticShowcase$Slot[aec.MELEE.ordinal()] = 5; + } catch (NoSuchFieldError e5) { + } + } +} diff --git a/src/main/java/defpackage/adx.java b/src/main/java/defpackage/adx.java new file mode 100644 index 0000000..f5eb3c2 --- /dev/null +++ b/src/main/java/defpackage/adx.java @@ -0,0 +1,425 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; +import java.nio.charset.StandardCharsets; +import java.nio.file.CopyOption; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.Minecraft; + +public final class adx { + private static final Set OWNED = ConcurrentHashMap.newKeySet(); + private static final String SEPARATOR = ":"; + private static final String SLOT_CAPE = "cape"; + private static final String SLOT_WING = "wing"; + private static final String SLOT_BACKPACK = "backpack"; + private static final String SLOT_NAMETAG = "nametag"; + private static final String SLOT_MELEE = "melee"; + private static final String DIR_ROOT = "evolution"; + private static final String OWNED_FILE_NAME = "cosmetics_owned.json"; + private static final String TEMP_EXTENSION = ".tmp"; + private static final String LOAD_FAILURE = "cosmetic ownership cache unreadable"; + private static final String SAVE_FAILURE = "cosmetic ownership cache write failed"; + private static final String STRIPPED = "stripped unowned cosmetics: {}"; + private static volatile boolean confirmed; + + private adx() { + } + + public static void restore() { + aef.io().execute(() -> { + List var0 = null; + Minecraft var1 = null; + int var2 = -536601112; + + while (true) { + switch (var2) { + case -1661265392: + replace(var0); + var1 = Minecraft.getInstance(); + if (var1 != null) { + var2 = 1910700255; + } else { + var2 = 1322073881; + } + break; + case -536601112: + default: + var0 = load(); + if (var0 != null) { + var2 = 1019640654; + } else { + var2 = 370479447; + } + break; + case 370479447: + return; + case 1019640654: + if (confirmed) { + var2 = 370479447; + } else { + var2 = -1661265392; + } + break; + case 1322073881: + return; + case 1910700255: + var1.execute(adx::enforceLocal); + var2 = 1322073881; + } + } + }); + } + + public static void accept(Collection var0) { + int var1 = -504740801; + + while (true) { + switch (var1) { + case -1903899689: + return; + case -504740801: + default: + if (var0 == null) { + var1 = -1903899689; + } else { + var1 = 107079033; + } + break; + case 107079033: + replace(var0); + confirmed = (boolean)(((1)) != 0); + save(List.copyOf(OWNED)); + enforceLocal(); + return; + } + } + } + + public static boolean isConfirmed() { + return confirmed; + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public static String slotId(aec var0) { + return switch (adw.$SwitchMap$evo$systems$cosmetic$CosmeticShowcase$Slot[var0.ordinal()]) { + case 1 -> "cape"; + case 2 -> "wing"; + case 3 -> "backpack"; + case 4 -> "nametag"; + case 5 -> "melee"; + default -> null; + }; + } + + public static boolean isLocked(aeb var0) { + String var1 = null; + int var3 = 0; + int var2 = -1229454426; + + while (true) { + switch (var2) { + case -1845954392: + var1 = slotId(var0.getSlot()); + if (var1 != null) { + var2 = -75730828; + } else { + var2 = 257521911; + } + break; + case -1384250242: + return (boolean)((var3) != 0); + case -1229454426: + default: + if (var0 == null) { + var2 = 1461062729; + } else { + var2 = -1845954392; + } + break; + case -1065086712: + var3 = 1; + var2 = -1384250242; + break; + case -75730828: + if (!isOwned(var1, var0.getKey())) { + var2 = -1065086712; + } else { + var2 = 257521911; + } + break; + case 257521911: + var3 = 0; + var2 = -1384250242; + break; + case 1461062729: + return (boolean)(((0)) != 0); + } + } + } + + public static boolean isOwned(String var0, String var1) { + int var2 = 648232911; + + while (true) { + switch (var2) { + case -2075955859: + if (var1.startsWith("custom:")) { + var2 = 642640160; + } else { + var2 = -447310114; + } + break; + case -884201045: + if ("cape".equals(var0)) { + var2 = -2075955859; + } else { + var2 = -447310114; + } + break; + case -447310114: + return OWNED.contains(var0 + ":" + var1); + case 642640160: + return (boolean)(((1)) != 0); + case 648232911: + default: + if (var0 != null) { + var2 = 2122901445; + } else { + var2 = 1288893337; + } + break; + case 769773544: + if (var1.isEmpty()) { + var2 = 1288893337; + } else { + var2 = -884201045; + } + break; + case 1288893337: + return (boolean)(((1)) != 0); + case 2122901445: + if (var1 != null) { + var2 = 769773544; + } else { + var2 = 1288893337; + } + } + } + } + + public static aee ownedOnly(aee var0) { + return new aee( + ownedOrNull("cape", var0.cape()), + ownedOrNull("wing", var0.wing()), + var0.hat(), + ownedOrNull("backpack", var0.backpack()), + var0.skin(), + ownedOrNull("nametag", var0.nametag()), + ownedOrNull("melee", var0.melee()), + var0.playerskin() + ); + } + + public static void enforceLocal() { + Minecraft var0 = null; + String var1 = null; + aee var2 = null; + aee var3 = null; + int var4 = -645675907; + + while (true) { + switch (var4) { + case -1395631686: + var1 = var0.player.getScoreboardName(); + var2 = aee.readFor(var1); + var3 = ownedOnly(var2); + if (var3.equals(var2)) { + var4 = -464885827; + } else { + var4 = -517770424; + } + break; + case -695980344: + return; + case -645675907: + default: + var0 = Minecraft.getInstance(); + if (var0 != null) { + var4 = 1834214903; + } else { + var4 = -695980344; + } + break; + case -517770424: + var3.applyTo(var1); + aef.persistIfLocal(var1); + id.info( + Cif.COSMETIC, + "stripped unowned cosmetics: {}", + var2.toJson() + ); + return; + case -464885827: + return; + case 1834214903: + if (var0.player == null) { + var4 = -695980344; + } else { + var4 = -1395631686; + } + } + } + } + + private static String ownedOrNull(String var0, String var1) { + String var3 = null; + int var2 = -501846252; + + while (true) { + switch (var2) { + case -1809508905: + return var3; + case -501846252: + default: + if (isOwned(var0, var1)) { + var2 = 1371257811; + } else { + var2 = 1107886260; + } + break; + case 1107886260: + var3 = null; + var2 = -1809508905; + break; + case 1371257811: + var3 = var1; + var2 = -1809508905; + } + } + } + + private static void replace(Collection var0) { + Iterator var1 = null; + String var2 = null; + int var3 = -984517963; + + while (true) { + switch (var3) { + case -1187702782: + OWNED.add(var2); + var3 = 643557483; + break; + case -984517963: + default: + OWNED.clear(); + var1 = var0.iterator(); + var3 = 2092871285; + break; + case -305570027: + if (!var2.isEmpty()) { + var3 = -1187702782; + } else { + var3 = 643557483; + } + break; + case -14614788: + var2 = (String)var1.next(); + if (var2 != null) { + var3 = -305570027; + } else { + var3 = 643557483; + } + break; + case 643557483: + var3 = 2092871285; + break; + case 1302028448: + return; + case 2092871285: + if (var1.hasNext()) { + var3 = -14614788; + } else { + var3 = 1302028448; + } + } + } + } + + private static Path ownedPath() { + return FabricLoader.getInstance() + .getGameDir() + .resolve("evolution") + .resolve("cosmetics_owned.json"); + } + + private static List load() { + Path var0 = ownedPath(); + if (!Files.isRegularFile(var0)) { + return null; + } + + try { + JsonElement var1 = JsonParser.parseString(Files.readString(var0, StandardCharsets.UTF_8)); + if (!var1.isJsonArray()) { + return null; + } + + ArrayList var2 = new ArrayList(); + + for (JsonElement var4 : var1.getAsJsonArray()) { + if (var4 != null && var4.isJsonPrimitive()) { + var2.add(var4.getAsString()); + } + } + + return var2; + } catch (Exception var5) { + id.warn( + Cif.COSMETIC, + "cosmetic ownership cache unreadable", + var5 + ); + return null; + } + } + + private static void save(List var0) { + JsonArray var1 = new JsonArray(); + var0.forEach(var1::add); + String var2 = var1.toString(); + aef.io() + .execute( + () -> { + try { + Path var1x = ownedPath(); + Files.createDirectories(var1x.getParent()); + Path var2x = var1x.resolveSibling( + "cosmetics_owned.json.tmp" + ); + Files.writeString(var2x, var2, StandardCharsets.UTF_8); + CopyOption[] var10002 = new CopyOption[1]; + var10002[0] = StandardCopyOption.REPLACE_EXISTING; + Files.move(var2x, var1x, var10002); + } catch (Exception var3) { + id.warn( + Cif.COSMETIC, + "cosmetic ownership cache write failed", + var3 + ); + } + } + ); + } +} diff --git a/src/main/java/defpackage/ady.java b/src/main/java/defpackage/ady.java new file mode 100644 index 0000000..fa59c4c --- /dev/null +++ b/src/main/java/defpackage/ady.java @@ -0,0 +1,37 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:ady.class */ +/* synthetic */ class ady { + static final /* synthetic */ int[] $SwitchMap$evo$systems$cosmetic$AttachmentPoint = new int[adj.values().length]; + + static { + try { + $SwitchMap$evo$systems$cosmetic$AttachmentPoint[adj.HEAD.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$cosmetic$AttachmentPoint[adj.ABOVE_HEAD.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$cosmetic$AttachmentPoint[adj.BODY.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$cosmetic$AttachmentPoint[adj.RIGHT_ARM.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + try { + $SwitchMap$evo$systems$cosmetic$AttachmentPoint[adj.LEFT_ARM.ordinal()] = 5; + } catch (NoSuchFieldError e5) { + } + try { + $SwitchMap$evo$systems$cosmetic$AttachmentPoint[adj.RIGHT_LEG.ordinal()] = 6; + } catch (NoSuchFieldError e6) { + } + try { + $SwitchMap$evo$systems$cosmetic$AttachmentPoint[adj.LEFT_LEG.ordinal()] = 7; + } catch (NoSuchFieldError e7) { + } + } +} diff --git a/src/main/java/defpackage/adz.java b/src/main/java/defpackage/adz.java new file mode 100644 index 0000000..4b0ffde --- /dev/null +++ b/src/main/java/defpackage/adz.java @@ -0,0 +1,220 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.player.PlayerModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.equipment.Equippable; + +public class adz { + private static adz instance; + private static final float RAD_TO_DEG = 180.0F / (float)Math.PI; + private static final float BACKPACK_HIDDEN = -1.0F; + private static final float CHESTPLATE_BACK_OFFSET = 0.078125F; + private static final float WINGS_BACK_OFFSET = 0.1375F; + private final adv modelRenderer = adv.getInstance(); + private final ael stack = new ael(); + + public static adz getInstance() { + int var0 = -505084740; + + while (true) { + switch (var0) { + case -989912490: + return instance; + case -505084740: + default: + if (instance == null) { + var0 = 1203278052; + } else { + var0 = -989912490; + } + break; + case 1203278052: + instance = new adz(); + var0 = -989912490; + } + } + } + + public void render(adr var1, PoseStack var2, SubmitNodeCollector var3, int var4, PlayerModel var5, AbstractClientPlayer var6) { + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = -1046472460; + + while (true) { + switch (var9) { + case -1046472460: + default: + if (var1 != null) { + var9 = -94563967; + } else { + var9 = 1541218957; + } + break; + case -94563967: + if (var1.getTexture() == null) { + var9 = 1541218957; + } else { + var9 = 1863145991; + } + break; + case 676646102: + this.stack.bind(var2); + this.stack.push(); + var8 = this.applyAttachment(var1, var5); + this.stack.rotateZ(180.0F); + this.stack.translate(var1.getOffsetX(), var1.getOffsetY() + var8, var1.getOffsetZ() + var7); + this.stack.rotateY(var1.getRotY()); + this.stack.rotateX(var1.getRotX()); + this.stack.rotateZ(var1.getRotZ()); + this.stack.scale(var1.getScale(), var1.getScale(), var1.getScale()); + this.modelRenderer.render(var1, var2, var3, var4, var6); + this.stack.pop(); + return; + case 982669178: + return; + case 1541218957: + return; + case 1863145991: + var7 = this.backpackBackOffset(var1, var6); + if (var7 == -1.0F) { + var9 = 982669178; + } else { + var9 = 676646102; + } + } + } + } + + private float backpackBackOffset(adr var1, AbstractClientPlayer var2) { + String var3 = null; + ItemStack var4 = null; + float var5 = 0.0F; + Equippable var6 = null; + int var7 = 533725710; + + while (true) { + switch (var7) { + case -1949353955: + var3 = var1.getName(); + if (var3 != null) { + var7 = -1610518139; + } else { + var7 = 2031416391; + } + break; + case -1672564006: + if (afe.equippedKey(var2.getScoreboardName()) != null) { + var7 = 2035945077; + } else { + var7 = 931908923; + } + break; + case -1610518139: + if (!var3.startsWith("backpack_")) { + var7 = 2031416391; + } else { + var7 = 801216802; + } + break; + case -838242436: + if (var6.slot() == EquipmentSlot.CHEST) { + var7 = 1152697214; + } else { + var7 = -1672564006; + } + break; + case 334935093: + var5 = 0.0F; + var6 = (Equippable)var4.get(DataComponents.EQUIPPABLE); + if (var6 != null) { + var7 = -838242436; + } else { + var7 = -1672564006; + } + break; + case 446440422: + return 0.0F; + case 533725710: + default: + if (var2 != null) { + var7 = 1878458820; + } else { + var7 = 446440422; + } + break; + case 801216802: + var4 = var2.getItemBySlot(EquipmentSlot.CHEST); + if (var4.has(DataComponents.GLIDER)) { + var7 = 1411315090; + } else { + var7 = 334935093; + } + break; + case 931908923: + return var5; + case 1152697214: + var5 = 0.078125F; + var7 = -1672564006; + break; + case 1411315090: + return -1.0F; + case 1878458820: + if (var1.getAttachment() != adj.BODY) { + var7 = 446440422; + } else { + var7 = -1949353955; + } + break; + case 2031416391: + return 0.0F; + case 2035945077: + var5 = Math.max(var5, 0.1375F); + var7 = 931908923; + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private float applyAttachment(adr var1, PlayerModel var2) { + if (var2 == null) { + return 0.0F; + } + + switch (ady.$SwitchMap$evo$systems$cosmetic$AttachmentPoint[var1.getAttachment().ordinal()]) { + case 1: + this.applyPart(var2.head); + return 0.5F; + case 2: + return 0.75F; + case 3: + this.applyPart(var2.body); + return -0.3F; + case 4: + this.applyPart(var2.rightArm); + return -0.25F; + case 5: + this.applyPart(var2.leftArm); + return -0.25F; + case 6: + this.applyPart(var2.rightLeg); + return -0.35F; + case 7: + this.applyPart(var2.leftLeg); + return -0.35F; + default: + return 0.0F; + } + } + + private void applyPart(ModelPart var1) { + this.stack.translate(var1.x * 0.0625F, var1.y * 0.0625F, var1.z * 0.0625F); + this.stack.rotateXYZ(var1.xRot * (180.0F / (float)Math.PI), var1.yRot * (180.0F / (float)Math.PI), var1.zRot * (180.0F / (float)Math.PI)); + } +} diff --git a/src/main/java/defpackage/ae.java b/src/main/java/defpackage/ae.java new file mode 100644 index 0000000..d798dc2 --- /dev/null +++ b/src/main/java/defpackage/ae.java @@ -0,0 +1,74 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemUseAnimation; +import net.minecraft.world.item.Items; + +public class ae { + private static final List renderedItems = new ArrayList<>(); + + public static void setItem(ItemStack var0) { + int var1 = 1929235035; + + while (true) { + switch (var1) { + case -1609154641: + renderedItems.add(var0); + var1 = 1172448679; + break; + case -1167726292: + if (var0.getUseAnimation() != ItemUseAnimation.BLOCK) { + var1 = -714587535; + } else { + var1 = 1172448679; + } + break; + case -714587535: + if (var0.getUseAnimation() != ItemUseAnimation.TRIDENT) { + var1 = -1609154641; + } else { + var1 = 1172448679; + } + break; + case 1172448679: + return; + case 1929235035: + default: + if (!var0.isEmpty()) { + var1 = -1167726292; + } else { + var1 = 1172448679; + } + } + } + } + + public static ItemStack getRenderedItem() { + ItemStack var0 = null; + int var1 = -1556060756; + + while (true) { + switch (var1) { + case -2041539818: + var0 = renderedItems.getFirst(); + renderedItems.remove(var0); + return var0; + case -1603352499: + return Items.AIR.getDefaultInstance(); + case -1556060756: + } + + if (!renderedItems.isEmpty()) { + var1 = -2041539818; + } else { + var1 = -1603352499; + } + } + } + + public static void clear() { + renderedItems.clear(); + } +} diff --git a/src/main/java/defpackage/aea.java b/src/main/java/defpackage/aea.java new file mode 100644 index 0000000..9c4ac05 --- /dev/null +++ b/src/main/java/defpackage/aea.java @@ -0,0 +1,185 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.resources.Identifier; + +public class aea { + private static aea instance; + private final Map cosmeticsById = new ConcurrentHashMap<>(); + + public static aea getInstance() { + int var0 = -387960497; + + while (true) { + switch (var0) { + case -1107352560: + instance = new aea(); + var0 = 464276525; + break; + case -387960497: + default: + if (instance == null) { + var0 = -1107352560; + } else { + var0 = 464276525; + } + break; + case 464276525: + return instance; + } + } + } + + public adr load(String var1) { + return this.load(var1, null, (-193734506 ^ 193734505) + ((-193734506 & 193734505) << 1)); + } + + public adr load(String var1, Identifier var2, int var3) { + try { + return this.load(JsonParser.parseString(var1).getAsJsonObject(), var2, var3); + } catch (Exception var5) { + return null; + } + } + + public adr load(JsonObject var1) { + return this.load(var1, null, (-1976252827 | 1976252826) + (-1976252827 & 1976252826)); + } + + public adr load(JsonObject var1, Identifier var2, int var3) { + try { + if (var1.has("name") + && var1.has("model")) { + String var4 = var1.get("name").getAsString(); + int var5; + if (var3 > 0) { + var5 = var3; + } else if (var1.has("id")) { + var5 = var1.get("id").getAsInt(); + } else { + var5 = var4.hashCode(); + } + + int var6 = var1.has("type") + ? var1.get("type").getAsInt() + : 1; + adr var7 = new adr(var4, var5, var6); + var7.setModelJson(var1.getAsJsonObject("model").toString()); + if (var2 != null) { + var7.setTexture(var2); + } else if (var1.has("texture")) { + var7.setTexture( + aeg.register(var4 + "_" + var5, var1.get("texture").getAsString()) + ); + } + + this.applyTransforms(var1, var7); + if (var1.has("animation")) { + var7.setAnimation(var1.getAsJsonObject("animation")); + } + + this.cosmeticsById.put(var5, var7); + return var7; + } else { + return null; + } + } catch (Exception var8) { + return null; + } + } + + private void applyTransforms(JsonObject var1, adr var2) { + JsonArray var3 = null; + int var4 = 275808442; + + while (true) { + switch (var4) { + case -2073500570: + var3 = var1.getAsJsonArray("offset"); + var2.setOffsetX(var3.get(0).getAsFloat()); + var2.setOffsetY(var3.get(1).getAsFloat()); + var2.setOffsetZ(var3.get(2).getAsFloat()); + var4 = 2071119826; + break; + case -1802888627: + if (var1.has("offset")) { + var4 = -2073500570; + } else { + var4 = 2071119826; + } + break; + case -620617742: + return; + case -459563115: + var2.setAttachment( + adj.byOrdinal(var1.get("attachment").getAsInt()) + ); + var4 = 863796165; + break; + case 118142278: + var3 = var1.getAsJsonArray("rotation"); + var2.setRotX(var3.get(0).getAsFloat()); + var2.setRotY(var3.get(1).getAsFloat()); + var2.setRotZ(var3.get(2).getAsFloat()); + var4 = -620617742; + break; + case 275808442: + default: + if (var1.has("attachment")) { + var4 = -459563115; + } else { + var4 = 863796165; + } + break; + case 863796165: + if (var1.has("scale")) { + var4 = 1130014729; + } else { + var4 = -1802888627; + } + break; + case 1130014729: + var2.setScale(var1.get("scale").getAsFloat()); + var4 = -1802888627; + break; + case 2071119826: + if (var1.has("rotation")) { + var4 = 118142278; + } else { + var4 = -620617742; + } + } + } + } + + public adr get(int var1) { + return this.cosmeticsById.get(var1); + } + + public Map all() { + return this.cosmeticsById; + } + + public adr load(InputStream var1) { + try { + ByteArrayOutputStream var2 = new ByteArrayOutputStream(); + byte[] var3 = new byte[1024]; + + int var4; + while ((var4 = var1.read(var3)) != (1376415379 | -1376415380) + (1376415379 & -1376415380)) { + var2.write(var3, 0, var4); + } + + return this.load(var2.toString(StandardCharsets.UTF_8)); + } catch (Exception var5) { + return null; + } + } +} diff --git a/src/main/java/defpackage/aeb.java b/src/main/java/defpackage/aeb.java new file mode 100644 index 0000000..6e03e31 --- /dev/null +++ b/src/main/java/defpackage/aeb.java @@ -0,0 +1,256 @@ +package defpackage; + +import java.util.function.Supplier; +import net.minecraft.resources.Identifier; + +public final class aeb { + private final String name; + private final aec slot; + private final Supplier textureSupplier; + private final afd wing; + private final aej hat; + private final adk backpack; + private final aex skin; + private final aem nameTag; + private final ahu melee; + private final agu graffiti; + private final aep playerSkin; + private Identifier texture; + private String key; + + aeb(String var1, aec var2, Supplier var3) { + this(var1, var2, var3, null, null, null, null, null); + } + + aeb(String var1, aec var2, Supplier var3, afd var4) { + this(var1, var2, var3, var4, null, null, null, null); + } + + aeb(String var1, aec var2, Supplier var3, afd var4, aej var5) { + this(var1, var2, var3, var4, var5, null, null, null); + } + + aeb(String var1, aec var2, Supplier var3, afd var4, aej var5, adk var6) { + this(var1, var2, var3, var4, var5, var6, null, null); + } + + aeb(String var1, aec var2, Supplier var3, afd var4, aej var5, adk var6, aex var7) { + this(var1, var2, var3, var4, var5, var6, var7, null); + } + + aeb(String var1, aec var2, Supplier var3, afd var4, aej var5, adk var6, aex var7, aem var8) { + this(var1, var2, var3, var4, var5, var6, var7, var8, null); + } + + aeb(String var1, aec var2, Supplier var3, afd var4, aej var5, adk var6, aex var7, aem var8, ahu var9) { + this(var1, var2, var3, var4, var5, var6, var7, var8, var9, null); + } + + aeb(String var1, aec var2, Supplier var3, afd var4, aej var5, adk var6, aex var7, aem var8, ahu var9, agu var10) { + this(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, null); + } + + aeb(String var1, aec var2, Supplier var3, afd var4, aej var5, adk var6, aex var7, aem var8, ahu var9, agu var10, aep var11) { + this.playerSkin = var11; + this.melee = var9; + this.graffiti = var10; + this.name = var1; + this.slot = var2; + this.textureSupplier = var3; + this.wing = var4; + this.hat = var5; + this.backpack = var6; + this.skin = var7; + this.nameTag = var8; + } + + public String getName() { + return this.name; + } + + public aec getSlot() { + return this.slot; + } + + public afd getWing() { + return this.wing; + } + + public aej getHat() { + return this.hat; + } + + public adk getBackpack() { + return this.backpack; + } + + public aex getSkin() { + return this.skin; + } + + public aem getNameTag() { + return this.nameTag; + } + + public ahu getMelee() { + return this.melee; + } + + public agu getGraffiti() { + return this.graffiti; + } + + public aep getPlayerSkin() { + return this.playerSkin; + } + + public Identifier getTexture() { + int var1 = 1853240461; + + while (true) { + switch (var1) { + case 257811673: + return this.texture; + case 1410078644: + if (this.textureSupplier != null) { + var1 = 1641937547; + } else { + var1 = 257811673; + } + break; + case 1641937547: + this.texture = this.textureSupplier.get(); + var1 = 257811673; + break; + case 1853240461: + default: + if (this.texture == null) { + var1 = 1410078644; + } else { + var1 = 257811673; + } + } + } + } + + public String getKey() { + int var1 = 682821822; + + while (true) { + switch (var1) { + case -1383161271: + this.key = this.resolveKey(); + var1 = 221569293; + break; + case 221569293: + return this.key; + case 682821822: + default: + if (this.key == null) { + var1 = -1383161271; + } else { + var1 = 221569293; + } + } + } + } + + private String resolveKey() { + String var2 = null; + int var1 = -974436922; + + while (true) { + switch (var1) { + case -1268143514: + return this.hat.getKey(); + case -1235531542: + var2 = ado.capeKeyOf(this.getTexture()); + var1 = -380086012; + break; + case -1182554578: + if (this.melee != null) { + var1 = 1871655765; + } else { + var1 = 1126736130; + } + break; + case -974436922: + default: + if (this.wing != null) { + var1 = 800317607; + } else { + var1 = 1923205668; + } + break; + case -845439575: + return this.graffiti.getKey(); + case -662070137: + if (this.playerSkin != null) { + var1 = 1172000771; + } else { + var1 = 1866236554; + } + break; + case -380086012: + return var2; + case -352967335: + var2 = null; + var1 = -380086012; + break; + case 500076982: + if (this.backpack != null) { + var1 = 1321699099; + } else { + var1 = 1700298167; + } + break; + case 714004354: + return this.skin.getKey(); + case 800317607: + return this.wing.getKey(); + case 1126736130: + if (this.graffiti != null) { + var1 = -845439575; + } else { + var1 = -662070137; + } + break; + case 1172000771: + return this.playerSkin.key(); + case 1321699099: + return this.backpack.getKey(); + case 1428725413: + if (this.nameTag != null) { + var1 = 1556697486; + } else { + var1 = -1182554578; + } + break; + case 1556697486: + return this.nameTag.getKey(); + case 1700298167: + if (this.skin != null) { + var1 = 714004354; + } else { + var1 = 1428725413; + } + break; + case 1866236554: + if (this.slot == aec.CAPES) { + var1 = -1235531542; + } else { + var1 = -352967335; + } + break; + case 1871655765: + return this.melee.getKey(); + case 1923205668: + if (this.hat != null) { + var1 = -1268143514; + } else { + var1 = 500076982; + } + } + } + } +} diff --git a/src/main/java/defpackage/aec.java b/src/main/java/defpackage/aec.java new file mode 100644 index 0000000..5df524e --- /dev/null +++ b/src/main/java/defpackage/aec.java @@ -0,0 +1,22 @@ +package defpackage; + +public enum aec { + CAPES("Capes"), + HATS("Hats"), + BACKPACKS("Backpacks"), + WINGS("Wings"), + NAMETAGS("Nametags"), + MELEE("Melee"), + GRAFFITI("Graffiti"), + PLAYERSKINS("My Skins"); + + private final String displayName; + + aec(String var3) { + this.displayName = var3; + } + + public String getDisplayName() { + return this.displayName; + } +} diff --git a/src/main/java/defpackage/aed.java b/src/main/java/defpackage/aed.java new file mode 100644 index 0000000..91a07c7 --- /dev/null +++ b/src/main/java/defpackage/aed.java @@ -0,0 +1,575 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.Identifier; + +public final class aed { + private static aed instance; + private final List entries = new ArrayList<>(); + private List playerSkins = List.of(); + + private aed() { + this.entries.add(new aeb("Black Smile", aec.CAPES, ado::builtinCape)); + this.entries.add(new aeb("Sunset", aec.CAPES, ado::sunsetCape)); + this.entries.add(new aeb("Nebula", aec.CAPES, ado::nebulaCape)); + this.entries.add(new aeb("Phantom", aec.CAPES, ado::skinmcCape)); + this.entries.add(new aeb("Cosmos", aec.CAPES, ado::cosmosCape)); + this.entries.add(new aeb("Holy", aec.CAPES, ado::holyCape)); + this.entries.add(new aeb("Dancing Cat", aec.CAPES, ado::dancingCatCape)); + + for (afd var2 : afe.all()) { + this.entries.add(new aeb(var2.getDisplayName(), aec.WINGS, var2::getTexture, var2)); + } + + for (aej var8 : aek.all()) { + this.entries.add(new aeb(var8.getDisplayName(), aec.HATS, var8::getTexture, null, var8)); + } + + for (adk var9 : adl.all()) { + this.entries.add(new aeb(var9.getDisplayName(), aec.BACKPACKS, var9::getTexture, null, null, var9)); + } + + for (aem var10 : aeo.all()) { + this.entries.add(new aeb(var10.getDisplayName(), aec.NAMETAGS, null, null, null, null, null, var10)); + } + + for (ahu var11 : ahv.all()) { + this.entries.add(new aeb(var11.getDisplayName(), aec.MELEE, var11::getIcon, null, null, null, null, null, var11)); + } + + for (agu var12 : agv.all()) { + this.entries.add(new aeb(var12.getDisplayName(), aec.GRAFFITI, var12::getTexture, null, null, null, null, null, null, var12)); + } + } + + public static aed getInstance() { + int var0 = 544962317; + + while (true) { + switch (var0) { + case -887717040: + instance = new aed(); + var0 = 1470422203; + break; + case 544962317: + default: + if (instance == null) { + var0 = -887717040; + } else { + var0 = 1470422203; + } + break; + case 1470422203: + return instance; + } + } + } + + private boolean refreshPlayerSkins() { + List var1 = null; + Iterator var2 = null; + aep var3 = null; + int var4 = -1844413453; + + while (true) { + switch (var4) { + case -1844413453: + default: + var1 = aeq.all(); + if (var1.equals(this.playerSkins)) { + var4 = 311573378; + } else { + var4 = 484813434; + } + break; + case -605671697: + if (var2.hasNext()) { + var4 = 845778841; + } else { + var4 = 1215205024; + } + break; + case 311573378: + return (boolean)(((0)) != 0); + case 484813434: + this.playerSkins = var1; + this.entries.removeIf(var0 -> { + int var2x = 0; + int var1x = -708262380; + + while (true) { + switch (var1x) { + case -1818586008: + return (boolean)((var2x) != 0); + case -1360005639: + var2x = 0; + var1x = -1818586008; + break; + case -1092696740: + var2x = 1; + var1x = -1818586008; + break; + case -708262380: + default: + if (var0.getSlot() == aec.PLAYERSKINS) { + var1x = -1092696740; + } else { + var1x = -1360005639; + } + } + } + }); + var2 = var1.iterator(); + var4 = -605671697; + break; + case 845778841: + var3 = (aep)var2.next(); + this.entries.add(new aeb(var3.name(), aec.PLAYERSKINS, var3::getTexture, null, null, null, null, null, null, null, var3)); + var4 = -605671697; + break; + case 1215205024: + return (boolean)(((1)) != 0); + } + } + } + + public List bySlot(aec var1) { + ArrayList var2 = null; + Iterator var3 = null; + aeb var4 = null; + int var5 = 796456208; + + while (true) { + switch (var5) { + case -1644117987: + var4 = (aeb)var3.next(); + if (var4.getSlot() == var1) { + var5 = -360802512; + } else { + var5 = 1485329405; + } + break; + case -360802512: + if (!adx.isLocked(var4)) { + var5 = 1040247988; + } else { + var5 = 1485329405; + } + break; + case -1457515: + this.refreshPlayerSkins(); + var5 = 1846507798; + break; + case 532761979: + if (var3.hasNext()) { + var5 = -1644117987; + } else { + var5 = 971939017; + } + break; + case 796456208: + default: + if (var1 == aec.PLAYERSKINS) { + var5 = -1457515; + } else { + var5 = 1846507798; + } + break; + case 971939017: + return var2; + case 1040247988: + var2.add(var4); + var5 = 1485329405; + break; + case 1485329405: + var5 = 532761979; + break; + case 1846507798: + var2 = new ArrayList(); + var3 = this.entries.iterator(); + var5 = 532761979; + } + } + } + + public boolean isEquipped(aeb var1) { + String var2 = null; + Identifier var3 = null; + int var5 = 0; + int var4 = 505439155; + + while (true) { + switch (var4) { + case -1727289742: + return agv.isEquipped(var1.getGraffiti()); + case -1708497634: + if (var1.getSlot() == aec.GRAFFITI) { + var4 = 1516331043; + } else { + var4 = -224754898; + } + break; + case -1688456905: + return adl.isEquipped(var1.getBackpack()); + case -1605721171: + if (var1.getSlot() == aec.MELEE) { + var4 = -805074258; + } else { + var4 = -1708497634; + } + break; + case -1567648872: + if (var1.getSlot() == aec.BACKPACKS) { + var4 = -1397338348; + } else { + var4 = 53768; + } + break; + case -1542405040: + return afe.isEquipped(var1.getWing()); + case -1397338348: + if (var1.getBackpack() != null) { + var4 = -1688456905; + } else { + var4 = 53768; + } + break; + case -1339928044: + if (var1.getPlayerSkin() != null) { + var4 = 190438418; + } else { + var4 = -96644650; + } + break; + case -1322193188: + var3 = adq.getInstance().getCape(var2); + if (var3 != null) { + var4 = 1165292474; + } else { + var4 = 653110469; + } + break; + case -1020005296: + if (var1.getSlot() == aec.WINGS) { + var4 = -921593996; + } else { + var4 = -127675246; + } + break; + case -995522603: + if (var1.getSlot() == aec.CAPES) { + var4 = -1322193188; + } else { + var4 = -1020005296; + } + break; + case -921593996: + if (var1.getWing() != null) { + var4 = -1542405040; + } else { + var4 = -127675246; + } + break; + case -805074258: + if (var1.getMelee() != null) { + var4 = 882685287; + } else { + var4 = -1708497634; + } + break; + case -224754898: + if (var1.getSlot() == aec.PLAYERSKINS) { + var4 = -1339928044; + } else { + var4 = -96644650; + } + break; + case -127675246: + if (var1.getSlot() == aec.HATS) { + var4 = -35752153; + } else { + var4 = -1567648872; + } + break; + case -96644650: + return (boolean)(((0)) != 0); + case -35752153: + if (var1.getHat() != null) { + var4 = 213313933; + } else { + var4 = -1567648872; + } + break; + case 53768: + if (var1.getSlot() == aec.NAMETAGS) { + var4 = 244872916; + } else { + var4 = -1605721171; + } + break; + case 190438418: + return aeq.isEquipped(var1.getPlayerSkin()); + case 213313933: + return aek.isEquipped(var1.getHat()); + case 244872916: + if (var1.getNameTag() != null) { + var4 = 1368532436; + } else { + var4 = -1605721171; + } + break; + case 491600123: + var5 = 1; + var4 = 1823726095; + break; + case 505439155: + default: + var2 = localName(); + if (var2 == null) { + var4 = 981932672; + } else { + var4 = -995522603; + } + break; + case 653110469: + var5 = 0; + var4 = 1823726095; + break; + case 882685287: + return ahv.isEquipped(var1.getMelee()); + case 981932672: + return (boolean)(((0)) != 0); + case 1165292474: + if (var3.equals(var1.getTexture())) { + var4 = 491600123; + } else { + var4 = 653110469; + } + break; + case 1368532436: + return aeo.isEquipped(var1.getNameTag()); + case 1516331043: + if (var1.getGraffiti() != null) { + var4 = -1727289742; + } else { + var4 = -224754898; + } + break; + case 1823726095: + return (boolean)((var5) != 0); + } + } + } + + public boolean toggle(aeb var1) { + String var2 = null; + int var3 = -633980597; + + while (true) { + switch (var3) { + case -2038212861: + aeq.equip(var1.getPlayerSkin()); + var3 = 497020336; + break; + case -1867280505: + adq.getInstance().setCape(var2, null); + var3 = 497020336; + break; + case -1622009088: + if (var1.getSlot() == aec.PLAYERSKINS) { + var3 = -212503780; + } else { + var3 = 497020336; + } + break; + case -1593755054: + if (var1.getSlot() == aec.GRAFFITI) { + var3 = 409033883; + } else { + var3 = -1622009088; + } + break; + case -1421965788: + afe.equip(var1.getWing()); + var3 = 497020336; + break; + case -1270593553: + if (var1.getSlot() == aec.BACKPACKS) { + var3 = 1918104257; + } else { + var3 = 1538049939; + } + break; + case -1234487123: + ahv.equip(var1.getMelee()); + var3 = 497020336; + break; + case -1229743439: + if (this.isEquipped(var1)) { + var3 = -1867280505; + } else { + var3 = -336521646; + } + break; + case -1062771421: + aek.equip(var1.getHat()); + var3 = 497020336; + break; + case -633980597: + default: + var2 = localName(); + if (var2 == null) { + var3 = 197743509; + } else { + var3 = -472778046; + } + break; + case -472778046: + if (adx.isLocked(var1)) { + var3 = 1411626829; + } else { + var3 = 1572849729; + } + break; + case -336521646: + adq.getInstance().setEnabled((boolean)((((1193877148 | -1193877147) + (1193877148 & -1193877147))) != 0)); + adq.getInstance().setCape(var2, var1.getTexture()); + var3 = 497020336; + break; + case -216349866: + if (var1.getSlot() == aec.HATS) { + var3 = 1649675190; + } else { + var3 = -1270593553; + } + break; + case -212503780: + if (var1.getPlayerSkin() != null) { + var3 = -2038212861; + } else { + var3 = 497020336; + } + break; + case 98965112: + if (var1.getMelee() != null) { + var3 = -1234487123; + } else { + var3 = -1593755054; + } + break; + case 197743509: + return (boolean)(((0)) != 0); + case 409033883: + if (var1.getGraffiti() != null) { + var3 = 583768496; + } else { + var3 = -1622009088; + } + break; + case 427252506: + adl.equip(var1.getBackpack()); + var3 = 497020336; + break; + case 497020336: + return (boolean)(((1)) != 0); + case 583768496: + agv.equip(var1.getGraffiti()); + var3 = 497020336; + break; + case 729672973: + aeo.equip(var1.getNameTag()); + var3 = 497020336; + break; + case 1132651320: + if (var1.getNameTag() != null) { + var3 = 729672973; + } else { + var3 = 1289986967; + } + break; + case 1184445732: + if (var1.getSlot() == aec.WINGS) { + var3 = 1321929969; + } else { + var3 = -216349866; + } + break; + case 1289986967: + if (var1.getSlot() == aec.MELEE) { + var3 = 98965112; + } else { + var3 = -1593755054; + } + break; + case 1321929969: + if (var1.getWing() != null) { + var3 = -1421965788; + } else { + var3 = -216349866; + } + break; + case 1411626829: + return (boolean)(((0)) != 0); + case 1538049939: + if (var1.getSlot() == aec.NAMETAGS) { + var3 = 1132651320; + } else { + var3 = 1289986967; + } + break; + case 1572849729: + if (var1.getSlot() == aec.CAPES) { + var3 = -1229743439; + } else { + var3 = 1184445732; + } + break; + case 1649675190: + if (var1.getHat() != null) { + var3 = -1062771421; + } else { + var3 = -1270593553; + } + break; + case 1918104257: + if (var1.getBackpack() != null) { + var3 = 427252506; + } else { + var3 = 1538049939; + } + } + } + } + + private static String localName() { + Minecraft var0 = null; + String var2 = null; + int var1 = -2009599143; + + while (true) { + switch (var1) { + case -2009599143: + default: + var0 = Minecraft.getInstance(); + if (var0.player == null) { + var1 = -320932100; + } else { + var1 = -1778491295; + } + break; + case -1778491295: + var2 = var0.player.getScoreboardName(); + var1 = -1577680736; + break; + case -1577680736: + return var2; + case -320932100: + var2 = null; + var1 = -1577680736; + } + } + } +} diff --git a/src/main/java/defpackage/aee.java b/src/main/java/defpackage/aee.java new file mode 100644 index 0000000..2655e71 --- /dev/null +++ b/src/main/java/defpackage/aee.java @@ -0,0 +1,288 @@ +package defpackage; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.minecraft.resources.Identifier; + +public record aee(String cape, String wing, String hat, String backpack, String skin, String nametag, String melee, String playerskin) { + public static final String CUSTOM_CAPE_PREFIX = "custom:"; + public static final aee EMPTY = new aee(null, null, null, null, null, null, null, null); + + public boolean isEmpty() { + int var2 = 0; + int var1 = 1845333782; + + while (true) { + switch (var1) { + case -1726026779: + return (boolean)((var2) != 0); + case -855346812: + if (this.wing == null) { + var1 = 859259855; + } else { + var1 = 562605723; + } + break; + case -542864177: + if (this.melee == null) { + var1 = 175623382; + } else { + var1 = 562605723; + } + break; + case 175623382: + if (this.playerskin == null) { + var1 = 1564977474; + } else { + var1 = 562605723; + } + break; + case 562605723: + var2 = 0; + var1 = -1726026779; + break; + case 777918190: + if (this.backpack == null) { + var1 = 1710053297; + } else { + var1 = 562605723; + } + break; + case 859259855: + if (this.hat == null) { + var1 = 777918190; + } else { + var1 = 562605723; + } + break; + case 1564977474: + var2 = 1; + var1 = -1726026779; + break; + case 1710053297: + if (this.skin == null) { + var1 = 2084772811; + } else { + var1 = 562605723; + } + break; + case 1845333782: + default: + if (this.cape == null) { + var1 = -855346812; + } else { + var1 = 562605723; + } + break; + case 2084772811: + if (this.nametag == null) { + var1 = -542864177; + } else { + var1 = 562605723; + } + } + } + } + + public static aee readFor(String var0) { + adq var1 = adq.getInstance(); + String var2 = null; + Identifier var3 = var1.getCape(var0); + if (var3 != null) { + var2 = ado.capeKeyOf(var3); + if (var2 == null) { + String var4 = var1.getCapeBase64(var0); + if (var4 != null) { + var2 = "custom:" + var4; + } + } + } + + return new aee( + var2, + afe.equippedKey(var0), + aek.equippedKey(var0), + adl.equippedKey(var0), + aey.equippedKey(var0), + aeo.equippedKey(var0), + isLocal(var0) ? ahv.equippedKey() : null, + aeq.equippedKey(var0) + ); + } + + public void applyTo(String var1) { + int var2 = 871513960; + + while (true) { + switch (var2) { + case -846261413: + return; + case -498639624: + if (!this.isEmpty()) { + var2 = 105963749; + } else { + var2 = -846261413; + } + break; + case 105963749: + adq.getInstance().setEnabled((boolean)((((1452235775 ^ -1452235774) + ((1452235775 & -1452235774) << 1))) != 0)); + var2 = -846261413; + break; + case 871513960: + default: + applyCape(var1, this.cape); + afe.applyKey(var1, this.wing); + aek.applyKey(var1, this.hat); + adl.applyKey(var1, this.backpack); + aey.applyKey(var1, this.skin); + aeo.applyKey(var1, this.nametag); + aeq.applyKey(var1, this.playerskin); + if (isLocal(var1)) { + var2 = 1112129406; + } else { + var2 = -498639624; + } + break; + case 1112129406: + ahv.applyKey(this.melee); + var2 = -498639624; + } + } + } + + private static boolean isLocal(String var0) { + String var1 = null; + int var3 = 0; + int var2 = -1911258685; + + while (true) { + switch (var2) { + case -1911258685: + default: + var1 = ahv.localName(); + if (var1 != null) { + var2 = 1574458522; + } else { + var2 = 391994851; + } + break; + case -1478087330: + return (boolean)((var3) != 0); + case 391994851: + var3 = 0; + var2 = -1478087330; + break; + case 950469966: + var3 = 1; + var2 = -1478087330; + break; + case 1574458522: + if (var1.equalsIgnoreCase(var0)) { + var2 = 950469966; + } else { + var2 = 391994851; + } + } + } + } + + public static void applyCape(String var0, String var1) { + adq var2 = adq.getInstance(); + if (var1 == null) { + var2.setCape(var0, null); + } else if (var1.startsWith("custom:")) { + try { + var2.setCapeFromBase64(var0, var1.substring("custom:".length())); + } catch (Exception var4) { + } + } else { + var2.setCape(var0, ado.capeByKey(var1)); + } + } + + public JsonObject toJson() { + JsonObject var1 = new JsonObject(); + var1.addProperty("cape", this.cape); + var1.addProperty("wing", this.wing); + var1.addProperty("hat", this.hat); + var1.addProperty("backpack", this.backpack); + var1.addProperty("skin", this.skin); + var1.addProperty("nametag", this.nametag); + var1.addProperty("melee", this.melee); + var1.addProperty("playerskin", this.playerskin); + return var1; + } + + public static aee fromJson(JsonElement var0) { + JsonObject var1 = null; + int var2 = -37391335; + + while (true) { + switch (var2) { + case -2140152578: + if (!var0.isJsonObject()) { + var2 = 1442126792; + } else { + var2 = -852816839; + } + break; + case -852816839: + var1 = var0.getAsJsonObject(); + return new aee( + stringOrNull(var1.get("cape")), + stringOrNull(var1.get("wing")), + stringOrNull(var1.get("hat")), + stringOrNull(var1.get("backpack")), + stringOrNull(var1.get("skin")), + stringOrNull(var1.get("nametag")), + stringOrNull(var1.get("melee")), + stringOrNull(var1.get("playerskin")) + ); + case -37391335: + default: + if (var0 != null) { + var2 = -2140152578; + } else { + var2 = 1442126792; + } + break; + case 1442126792: + return null; + } + } + } + + private static String stringOrNull(JsonElement var0) { + String var2 = null; + int var1 = 403829023; + + while (true) { + switch (var1) { + case -1957103784: + if (!var0.isJsonPrimitive()) { + var1 = 231156885; + } else { + var1 = 1604882926; + } + break; + case -1163596445: + return var2; + case 231156885: + var2 = null; + var1 = -1163596445; + break; + case 403829023: + default: + if (var0 != null) { + var1 = -1957103784; + } else { + var1 = 231156885; + } + break; + case 1604882926: + var2 = var0.getAsString(); + var1 = -1163596445; + } + } + } +} diff --git a/src/main/java/defpackage/aef.java b/src/main/java/defpackage/aef.java new file mode 100644 index 0000000..b3f2757 --- /dev/null +++ b/src/main/java/defpackage/aef.java @@ -0,0 +1,223 @@ +package defpackage; + +import com.google.gson.JsonParser; +import java.nio.charset.StandardCharsets; +import java.nio.file.CopyOption; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.Minecraft; + +public final class aef { + private static final String DIR_ROOT = "evolution"; + private static final String STATE_FILE_NAME = "cosmetics_state.json"; + private static final String TEMP_EXTENSION = ".tmp"; + private static final String THREAD_NAME = "evo-cosmetic-io"; + private static final ExecutorService IO = Executors.newSingleThreadExecutor(var0 -> { + Thread var1 = new Thread(var0, "evo-cosmetic-io"); + var1.setDaemon((boolean)((((-679029082 | 679029083) + (-679029082 & 679029083))) != 0)); + return var1; + }); + private static volatile boolean restoring; + + private aef() { + } + + static ExecutorService io() { + return IO; + } + + private static Path statePath() { + return FabricLoader.getInstance() + .getGameDir() + .resolve("evolution") + .resolve("cosmetics_state.json"); + } + + public static void persistIfLocal(String var0) { + Minecraft var1 = null; + String var2 = null; + int var3 = 1118594088; + + while (true) { + switch (var3) { + case -1793269375: + if (var0 == null) { + var3 = -1529151206; + } else { + var3 = 942935522; + } + break; + case -1674250550: + return; + case -1662687192: + if (var1.player == null) { + var3 = -485891961; + } else { + var3 = 97378157; + } + break; + case -1529151206: + return; + case -690150033: + save(aee.readFor(var2)); + return; + case -485891961: + return; + case 97378157: + var2 = var1.player.getScoreboardName(); + if (!var2.equalsIgnoreCase(var0)) { + var3 = -1674250550; + } else { + var3 = -690150033; + } + break; + case 942935522: + var1 = Minecraft.getInstance(); + if (var1 != null) { + var3 = -1662687192; + } else { + var3 = -485891961; + } + break; + case 1118594088: + default: + if (!restoring) { + var3 = -1793269375; + } else { + var3 = -1529151206; + } + } + } + } + + public static void save(aee var0) { + String var1 = null; + int var2 = -1618129810; + + while (true) { + switch (var2) { + case -1618129810: + default: + if (var0 == null) { + var2 = -735095312; + } else { + var2 = -660438716; + } + break; + case -735095312: + return; + case -660438716: + var1 = var0.toJson().toString(); + IO.execute( + () -> { + try { + Path var1x = statePath(); + Files.createDirectories(var1x.getParent()); + Path var2x = var1x.resolveSibling( + "cosmetics_state.json.tmp" + ); + Files.writeString(var2x, var1, StandardCharsets.UTF_8); + CopyOption[] var10002 = new CopyOption[1]; + var10002[0] = StandardCopyOption.REPLACE_EXISTING; + Files.move(var2x, var1x, var10002); + } catch (Exception var3x) { + } + } + ); + return; + } + } + } + + public static aee load() { + try { + Path var0 = statePath(); + return !Files.isRegularFile(var0) ? null : aee.fromJson(JsonParser.parseString(Files.readString(var0, StandardCharsets.UTF_8))); + } catch (Exception var1) { + return null; + } + } + + public static void restoreOnJoin(String var0) { + int var1 = 1230758252; + + while (true) { + switch (var1) { + case -1685702031: + IO.execute(() -> { + aee var1x = null; + Minecraft var2 = null; + int var3 = -200554844; + + while (true) { + switch (var3) { + case -1036795498: + if (var1x.isEmpty()) { + var3 = -436274450; + } else { + var3 = -833144269; + } + break; + case -833144269: + var2 = Minecraft.getInstance(); + if (var2 == null) { + var3 = -362427060; + } else { + var3 = -285474065; + } + break; + case -436274450: + return; + case -362427060: + return; + case -285474065: + var2.execute(() -> { + if (var2.player != null) { + if (aee.readFor(var0).isEmpty()) { + restoring = (boolean)(((1)) != 0); + boolean var5 = false /* VF: Semaphore variable */; + + try { + var5 = true; + adx.ownedOnly(var1x).applyTo(var0); + var5 = false; + } finally { + if (var5) { + restoring = (boolean)(((0)) != 0); + } + } + + restoring = (boolean)(((0)) != 0); + } + } + }); + return; + case -200554844: + default: + var1x = load(); + if (var1x != null) { + var3 = -1036795498; + } else { + var3 = -436274450; + } + } + } + }); + return; + case -1399039010: + return; + case 1230758252: + } + + if (var0 == null) { + var1 = -1399039010; + } else { + var1 = -1685702031; + } + } + } +} diff --git a/src/main/java/defpackage/aeg.java b/src/main/java/defpackage/aeg.java new file mode 100644 index 0000000..cf76668 --- /dev/null +++ b/src/main/java/defpackage/aeg.java @@ -0,0 +1,80 @@ +package defpackage; + +import com.mojang.blaze3d.platform.NativeImage; +import java.io.ByteArrayInputStream; +import java.util.Base64; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.resources.Identifier; + +public final class aeg { + private static final Map CACHE = new ConcurrentHashMap<>(); + + private aeg() { + } + + public static Identifier register(String var0, String var1) { + try { + String var2 = sanitize(var0); + if (CACHE.containsKey(var2)) { + return CACHE.get(var2); + } + + NativeImage var3 = NativeImage.read(new ByteArrayInputStream(Base64.getDecoder().decode(var1))); + Identifier var4 = Identifier.fromNamespaceAndPath( + "evolution", "cosmetic/" + var2 + ); + Runnable var5 = () -> { + Minecraft.getInstance().getTextureManager().register(var4, new DynamicTexture(() -> var2, var3)); + CACHE.put(var2, var4); + }; + Minecraft var6 = Minecraft.getInstance(); + if (var6.isSameThread()) { + var5.run(); + } else { + var6.execute(var5); + } + + CACHE.put(var2, var4); + return var4; + } catch (Exception var7) { + return null; + } + } + + private static String sanitize(String var0) { + String var1 = null; + String var3 = null; + int var2 = -1026608948; + + while (true) { + switch (var2) { + case -1026608948: + default: + var1 = var0.toLowerCase() + .replaceAll( + "[^a-z0-9_.\\-/]", + "_" + ); + if (var1.isEmpty()) { + var2 = 568916122; + } else { + var2 = 1437299098; + } + break; + case 568916122: + var3 = "default"; + var2 = 1692618922; + break; + case 1437299098: + var3 = var1; + var2 = 1692618922; + break; + case 1692618922: + return var3; + } + } + } +} diff --git a/src/main/java/defpackage/aeh.java b/src/main/java/defpackage/aeh.java new file mode 100644 index 0000000..556cbe7 --- /dev/null +++ b/src/main/java/defpackage/aeh.java @@ -0,0 +1,209 @@ +package defpackage; + +import java.util.Iterator; +import java.util.Map; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.AbstractClientPlayer; + +public final class aeh { + private static aeh instance; + private static final float TIME_WRAP_SECONDS = 360.0F; + private static final float ROOT_SCALE = 0.6F; + private static final float[] DEFAULT_BASE; + + public static aeh getInstance() { + int var0 = -1472217251; + + while (true) { + switch (var0) { + case -1472217251: + default: + if (instance == null) { + var0 = -941415164; + } else { + var0 = 359890664; + } + break; + case -941415164: + instance = new aeh(); + var0 = 359890664; + break; + case 359890664: + return instance; + } + } + } + + public void apply(aif var1, Map var2, AbstractClientPlayer var3) { + float var4 = 0.0F; + Iterator var5 = null; + aig var6 = null; + int var7 = -1619161403; + + while (true) { + switch (var7) { + case -1748166581: + var6 = (aig)var5.next(); + this.applyScale(var6, var2, 0.6F); + var7 = 1493602476; + break; + case -1619161403: + default: + var4 = this.lifeTime(var3) * 200.0F; + var5 = var1.roots.iterator(); + var7 = 1493602476; + break; + case -1537807863: + String var10003 = "Wing3"; + float[] var10004 = new float[3]; + var10004[0] = cos(var4) * 15.0F + 10.0F; + var10004[1] = 45.0F - cos(var4) * 15.0F; + var10004[2] = 0.0F; + this.applyBone(var1, var2, var10003, var10004); + var10003 = "Wing2"; + var10004 = new float[3]; + var10004[0] = cos(var4) * 15.0F + 10.0F; + var10004[1] = -45.0F + cos(var4) * 15.0F; + var10004[2] = 0.0F; + this.applyBone(var1, var2, var10003, var10004); + var10003 = "bone8"; + var10004 = new float[3]; + var10004[0] = 0.0F; + var10004[1] = -cos(50.0F - var4) * 20.0F; + var10004[2] = 0.0F; + this.applyBone(var1, var2, var10003, var10004); + var10003 = "bone2"; + var10004 = new float[3]; + var10004[0] = 0.0F; + var10004[1] = cos(50.0F - var4) * 20.0F; + var10004[2] = 0.0F; + this.applyBone(var1, var2, var10003, var10004); + var10003 = "bone9"; + var10004 = new float[3]; + var10004[0] = 0.0F; + var10004[1] = -cos(80.0F - var4) * 25.0F; + var10004[2] = 0.0F; + this.applyBone(var1, var2, var10003, var10004); + var10003 = "bone3"; + var10004 = new float[3]; + var10004[0] = 0.0F; + var10004[1] = cos(80.0F - var4) * 25.0F; + var10004[2] = 0.0F; + this.applyBone(var1, var2, var10003, var10004); + return; + case 1493602476: + if (var5.hasNext()) { + var7 = -1748166581; + } else { + var7 = -1537807863; + } + } + } + } + + private float lifeTime(AbstractClientPlayer var1) { + float var2 = 0.0F; + int var3 = 1717290006; + + while (true) { + switch (var3) { + case -454593545: + var2 = Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((-458159620 | 458159620) + (-458159620 & 458159620))) != 0)); + return (var1.tickCount + var2) / 20.0F % 360.0F; + case 1685863256: + return (float)( + System.currentTimeMillis() % ((4131995280341116111L ^ -4131995280340756111L) + ((4131995280341116111L & -4131995280340756111L) << 1)) + ) + / 1000.0F; + case 1717290006: + } + + if (var1 == null) { + var3 = 1685863256; + } else { + var3 = -454593545; + } + } + } + + private void applyBone(aif var1, Map var2, String var3, float[] var4) { + aig var5 = null; + Object var6 = null; + int var7 = -1249975847; + + while (true) { + switch (var7) { + case -1613491127: + var6 = var2.getOrDefault(var3, DEFAULT_BASE); + var5.setRotX( + ((Object[])var6)[0] + + (float)Math.toRadians(-var4[0]) + ); + var5.setRotY( + ((Object[])var6)[1] + + (float)Math.toRadians(-var4[1]) + ); + var5.setRotZ( + ((Object[])var6)[2] + + (float)Math.toRadians(var4[2]) + ); + return; + case -1249975847: + default: + var5 = var1.findPart(var3).orElse(null); + if (var5 == null) { + var7 = 894492820; + } else { + var7 = -1613491127; + } + break; + case 894492820: + return; + } + } + } + + private void applyScale(aig var1, Map var2, float var3) { + float[] var4 = null; + int var5 = 414397322; + + while (true) { + switch (var5) { + case -554465793: + var1.setScaleX(var4[6] * var3); + var1.setScaleY(var4[7] * var3); + var1.setScaleZ(var4[8] * var3); + return; + case 414397322: + default: + var4 = (float[])var2.get(var1.name); + if (var4 == null) { + var5 = 1387056804; + } else { + var5 = -554465793; + } + break; + case 1387056804: + return; + } + } + } + + private static float cos(float var0) { + return (float)Math.cos(Math.toRadians(var0)); + } + + static { + float[] var10000 = new float[9]; + var10000[0] = 0.0F; + var10000[1] = 0.0F; + var10000[2] = 0.0F; + var10000[3] = 0.0F; + var10000[4] = 0.0F; + var10000[5] = 0.0F; + var10000[6] = 1.0F; + var10000[7] = 1.0F; + var10000[8] = 1.0F; + DEFAULT_BASE = var10000; + } +} diff --git a/src/main/java/defpackage/aei.java b/src/main/java/defpackage/aei.java new file mode 100644 index 0000000..5d0c2c4 --- /dev/null +++ b/src/main/java/defpackage/aei.java @@ -0,0 +1,334 @@ +package defpackage; + +import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.AbstractClientPlayer; + +public final class aei { + private static aei instance; + private static final int MAIN = 0; + private static final int FLIGHT = 1; + private static final int ELYTRA = 2; + private static final float BLEND_PER_FRAME = 0.1F; + private static final float TIME_WRAP_SECONDS = 360.0F; + private static final float[] ROOT_SCALE; + private static final float[] DEFAULT_BASE; + private final Map stateWeights = new ConcurrentHashMap<>(); + + public static aei getInstance() { + int var0 = -1438199066; + + while (true) { + switch (var0) { + case -1438199066: + default: + if (instance == null) { + var0 = 217997622; + } else { + var0 = 1308588477; + } + break; + case 217997622: + instance = new aei(); + var0 = 1308588477; + break; + case 1308588477: + return instance; + } + } + } + + public void apply(aif var1, Map var2, AbstractClientPlayer var3) { + float var4 = 0.0F; + float[] var5 = null; + float var6 = 0.0F; + Iterator var7 = null; + aig var8 = null; + int var9 = -680705769; + + while (true) { + switch (var9) { + case -1997654697: + float[] var10002 = new float[3]; + var10002[0] = 1.2F + cos(90.0F + var4 * 300.0F) * 0.2F; + var10002[1] = 1.0F; + var10002[2] = 1.1F; + float[] var10003 = new float[3]; + var10003[0] = 1.2F + cos(90.0F + var4 * 600.0F) * 0.2F; + var10003[1] = 1.0F; + var10003[2] = 1.1F; + float[] var10004 = new float[3]; + var10004[0] = 1.4F; + var10004[1] = 1.0F; + var10004[2] = 1.1F; + float[] var10 = this.blend(var5, var10002, var10003, var10004); + String var12 = "left_wing"; + float[] var10006 = new float[3]; + var10006[0] = cos(-60.0F + var4 * 300.0F) * 10.0F; + var10006[1] = -30.0F + cos(var4 * 300.0F) * 20.0F; + var10006[2] = 0.0F; + float[] var10007 = new float[3]; + var10007[0] = 7.8279F + cos(-60.0F + var4 * 600.0F) * 10.0F; + var10007[1] = -27.5839F + cos(var4 * 600.0F) * 20.0F; + var10007[2] = -12.46225F; + float[] var10008 = new float[3]; + var10008[0] = cos(var4 * 2200.0F) * -2.0F; + var10008[1] = cos(var4 * 120.0F) * -5.0F; + var10008[2] = cos(30.0F + var4 * 120.0F) * -5.0F; + this.applyBone(var1, var2, var12, this.blend(var5, var10006, var10007, var10008), var10); + String var13 = "right_wing"; + var10006 = new float[3]; + var10006[0] = cos(-60.0F + var4 * 300.0F) * 10.0F; + var10006[1] = 30.0F + cos(var4 * 300.0F) * -20.0F; + var10006[2] = 0.0F; + var10007 = new float[3]; + var10007[0] = 7.8279F + cos(-60.0F + var4 * 600.0F) * 10.0F; + var10007[1] = 27.5839F + cos(var4 * 600.0F) * -20.0F; + var10007[2] = 12.46225F; + var10008 = new float[3]; + var10008[0] = cos(30.0F + var4 * 2500.0F) * -2.0F; + var10008[1] = cos(var4 * 120.0F) * 5.0F; + var10008[2] = cos(30.0F + var4 * 120.0F) * 5.0F; + this.applyBone(var1, var2, var13, this.blend(var5, var10006, var10007, var10008), var10); + String var14 = "left_tip"; + var10006 = new float[3]; + var10006[0] = 0.0F; + var10006[1] = cos(90.0F + var4 * 300.0F) * -20.0F; + var10006[2] = 0.0F; + var10007 = new float[3]; + var10007[0] = 0.0F; + var10007[1] = cos(90.0F + var4 * 600.0F) * -20.0F; + var10007[2] = 0.0F; + var10008 = new float[3]; + var10008[0] = 0.0F; + var10008[1] = cos(-90.0F + var4 * 120.0F) * -10.0F; + var10008[2] = 0.0F; + this.applyBone(var1, var2, var14, this.blend(var5, var10006, var10007, var10008), null); + String var15 = "right_tip"; + var10006 = new float[3]; + var10006[0] = 0.0F; + var10006[1] = cos(90.0F + var4 * 300.0F) * 20.0F; + var10006[2] = 0.0F; + var10007 = new float[3]; + var10007[0] = 0.0F; + var10007[1] = cos(90.0F + var4 * 600.0F) * 20.0F; + var10007[2] = 0.0F; + var10008 = new float[3]; + var10008[0] = 0.0F; + var10008[1] = cos(var4 * 120.0F) * 10.0F; + var10008[2] = 0.0F; + this.applyBone(var1, var2, var15, this.blend(var5, var10006, var10007, var10008), null); + return; + case -680705769: + default: + var4 = this.lifeTime(var3); + var5 = this.smoothedWeights(var3); + var6 = ROOT_SCALE[0] * var5[0] + + ROOT_SCALE[1] * var5[1] + + ROOT_SCALE[2] * var5[2]; + var7 = var1.roots.iterator(); + var9 = -267912285; + break; + case -267912285: + if (var7.hasNext()) { + var9 = 1003283314; + } else { + var9 = -1997654697; + } + break; + case 1003283314: + var8 = (aig)var7.next(); + this.applyScale(var8, var2, var6, var6, var6); + var9 = -267912285; + } + } + } + + private float lifeTime(AbstractClientPlayer var1) { + float var2 = 0.0F; + int var3 = -2000455733; + + while (true) { + switch (var3) { + case -2000455733: + default: + if (var1 == null) { + var3 = 843072320; + } else { + var3 = -422519600; + } + break; + case -422519600: + var2 = Minecraft.getInstance() + .getDeltaTracker() + .getGameTimeDeltaPartialTick((boolean)((((-176660115 ^ 176660115) + ((-176660115 & 176660115) << 1))) != 0)); + return (var1.tickCount + var2) / 20.0F % 360.0F; + case 843072320: + return (float)( + System.currentTimeMillis() % ((-5065840832383677140L ^ 5065840832384037140L) + ((-5065840832383677140L & 5065840832384037140L) << 1)) + ) + / 1000.0F; + } + } + } + + private float[] smoothedWeights(AbstractClientPlayer var1) { + if (var1 == null) { + float[] var10000 = new float[3]; + var10000[0] = 1.0F; + var10000[1] = 0.0F; + var10000[2] = 0.0F; + return var10000; + } + + if (this.stateWeights.size() > (-1919411376 | 1919411504) + (-1919411376 & 1919411504)) { + this.stateWeights.clear(); + } + + float[] var2 = this.stateWeights.computeIfAbsent(var1.getId(), var0 -> { + float[] var10000x = new float[3]; + var10000x[0] = 1.0F; + var10000x[1] = 0.0F; + var10000x[2] = 0.0F; + return var10000x; + }); + int var3 = var1.isFallFlying() + ? 2: ( + var1.getAbilities().flying + ? 1: (1542953707 ^ -1542953707) + ((1542953707 & -1542953707) << 1) + ); + float var4 = 0.0F; + + for (int var5 = 0; var5 < var2.length; var5++) { + var2[var5] += ((var5 == var3 ? 1.0F : 0.0F) - var2[var5]) * 0.1F; + var4 += var2[var5]; + } + + float[] var7 = new float[var2.length]; + + for (int var6 = 0; var6 < var2.length; var6++) { + var7[var6] = var2[var6] / var4; + } + + return var7; + } + + private float[] blend(float[] var1, float[] var2, float[] var3, float[] var4) { + float[] var10000 = new float[3]; + var10000[0] = var2[0] + * var1[0] + + var3[0] * var1[1] + + var4[0] * var1[2]; + var10000[1] = var2[1] + * var1[0] + + var3[1] * var1[1] + + var4[1] * var1[2]; + var10000[2] = var2[2] + * var1[0] + + var3[2] * var1[1] + + var4[2] * var1[2]; + return var10000; + } + + private void applyBone(aif var1, Map var2, String var3, float[] var4, float[] var5) { + aig var6 = null; + float[] var7 = null; + int var8 = -1168234938; + + while (true) { + switch (var8) { + case -1168234938: + default: + var6 = var1.findPart(var3).orElse(null); + if (var6 == null) { + var8 = 568911058; + } else { + var8 = -747644857; + } + break; + case -747644857: + var7 = var2.getOrDefault(var3, DEFAULT_BASE); + var6.setRotX( + var7[0] + + (float)Math.toRadians(-var4[0]) + ); + var6.setRotY( + var7[1] + + (float)Math.toRadians(-var4[1]) + ); + var6.setRotZ( + var7[2] + + (float)Math.toRadians(var4[2]) + ); + if (var5 != null) { + var8 = 1307433062; + } else { + var8 = -583169764; + } + break; + case -583169764: + return; + case 568911058: + return; + case 1307433062: + var6.setScaleX(var7[6] * var5[0]); + var6.setScaleY(var7[7] * var5[1]); + var6.setScaleZ( + var7[8] * var5[2] + ); + var8 = -583169764; + } + } + } + + private void applyScale(aig var1, Map var2, float var3, float var4, float var5) { + float[] var6 = null; + int var7 = -1871458071; + + while (true) { + switch (var7) { + case -1871458071: + default: + var6 = (float[])var2.get(var1.name); + if (var6 == null) { + var7 = -1552548589; + } else { + var7 = -781558710; + } + break; + case -1552548589: + return; + case -781558710: + var1.setScaleX(var6[6] * var3); + var1.setScaleY(var6[7] * var4); + var1.setScaleZ(var6[8] * var5); + return; + } + } + } + + private static float cos(float var0) { + return (float)Math.cos(Math.toRadians(var0)); + } + + static { + float[] var10000 = new float[3]; + var10000[0] = 0.9F; + var10000[1] = 1.0F; + var10000[2] = 1.0F; + ROOT_SCALE = var10000; + var10000 = new float[9]; + var10000[0] = 0.0F; + var10000[1] = 0.0F; + var10000[2] = 0.0F; + var10000[3] = 0.0F; + var10000[4] = 0.0F; + var10000[5] = 0.0F; + var10000[6] = 1.0F; + var10000[7] = 1.0F; + var10000[8] = 1.0F; + DEFAULT_BASE = var10000; + } +} diff --git a/src/main/java/defpackage/aej.java b/src/main/java/defpackage/aej.java new file mode 100644 index 0000000..84b5dd0 --- /dev/null +++ b/src/main/java/defpackage/aej.java @@ -0,0 +1,31 @@ +package defpackage; + +import net.minecraft.resources.Identifier; + +public final class aej { + private final String key; + private final String displayName; + + aej(String var1, String var2) { + this.key = var1; + this.displayName = var2; + } + + public String getKey() { + return this.key; + } + + public String getDisplayName() { + return this.displayName; + } + + public Identifier getTexture() { + return Identifier.fromNamespaceAndPath( + "evolution", "textures/cosmetic/hats/" + this.key + ".png" + ); + } + + public int getId() { + return ("hat_" + this.key).hashCode(); + } +} diff --git a/src/main/java/defpackage/aek.java b/src/main/java/defpackage/aek.java new file mode 100644 index 0000000..dd863d8 --- /dev/null +++ b/src/main/java/defpackage/aek.java @@ -0,0 +1,386 @@ +package defpackage; + +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.Minecraft; + +public final class aek { + private static final float HAT_SCALE = 1.0F; + private static final float[] HAT_OFFSET; + private static final float[] HAT_ROTATION; + private static final List HATS = new ArrayList<>(); + private static final Map GEOMETRY_CACHE = new ConcurrentHashMap<>(); + private static final Map MODEL_CACHE = new ConcurrentHashMap<>(); + + private aek() { + } + + public static List all() { + return HATS; + } + + private static String geometry(String var0) { + return GEOMETRY_CACHE.computeIfAbsent(var0, var0x -> { + try (InputStream var1 = aek.class.getResourceAsStream("/assets/evolution/cosmetic/hats/" + var0x + ".geo.json")) { + return var1 == null ? "" : new String(var1.readAllBytes(), StandardCharsets.UTF_8); + } catch (Exception var6) { + return ""; + } + }); + } + + public static aif model(aej var0) { + String var1 = null; + int var2 = -1791632181; + + while (true) { + switch (var2) { + case -1791632181: + default: + var1 = geometry(var0.getKey()); + if (var1.isEmpty()) { + var2 = 1761503842; + } else { + var2 = 20250935; + } + break; + case 20250935: + return MODEL_CACHE.computeIfAbsent(var0.getKey(), var1x -> aid.parse(var1)); + case 1761503842: + return null; + } + } + } + + public static aej byKey(String var0) { + Iterator var1 = null; + aej var2 = null; + int var3 = 284090589; + + while (true) { + switch (var3) { + case -1982353757: + var2 = (aej)var1.next(); + if (var2.getKey().equals(var0)) { + var3 = -1586405561; + } else { + var3 = -1818277592; + } + break; + case -1818277592: + var3 = -1587856923; + break; + case -1587856923: + if (var1.hasNext()) { + var3 = -1982353757; + } else { + var3 = 415259608; + } + break; + case -1586405561: + return var2; + case 284090589: + default: + if (var0 == null) { + var3 = 1966358878; + } else { + var3 = 1708832682; + } + break; + case 415259608: + return null; + case 1708832682: + var1 = HATS.iterator(); + var3 = -1587856923; + break; + case 1966358878: + return null; + } + } + } + + public static String equippedKey(String var0) { + Iterator var1 = null; + aej var2 = null; + int var3 = 700887257; + + while (true) { + switch (var3) { + case -1876135025: + return null; + case -1240799006: + return var2.getKey(); + case -1072074692: + return null; + case -755817308: + var2 = (aej)var1.next(); + if (adq.getInstance().hasCosmetic(var0, var2.getId())) { + var3 = -1240799006; + } else { + var3 = 1970726632; + } + break; + case -462409218: + var1 = HATS.iterator(); + var3 = 1894773760; + break; + case 700887257: + default: + if (var0 == null) { + var3 = -1876135025; + } else { + var3 = -462409218; + } + break; + case 1894773760: + if (var1.hasNext()) { + var3 = -755817308; + } else { + var3 = -1072074692; + } + break; + case 1970726632: + var3 = 1894773760; + } + } + } + + public static boolean isEquipped(aej var0) { + String var1 = null; + int var3 = 0; + int var2 = -931589633; + + while (true) { + switch (var2) { + case -1770762704: + if (adq.getInstance().hasCosmetic(var1, var0.getId())) { + var2 = 1304161687; + } else { + var2 = 1870479710; + } + break; + case -931589633: + default: + var1 = localName(); + if (var1 != null) { + var2 = -1770762704; + } else { + var2 = 1870479710; + } + break; + case 301481435: + return (boolean)((var3) != 0); + case 1304161687: + var3 = 1; + var2 = 301481435; + break; + case 1870479710: + var3 = 0; + var2 = 301481435; + } + } + } + + public static void unequipAll() { + unequipAll(localName()); + } + + public static void unequipAll(String var0) { + Iterator var1 = null; + aej var2 = null; + int var3 = -1829714145; + + while (true) { + switch (var3) { + case -1829714145: + default: + if (var0 == null) { + var3 = -1670282973; + } else { + var3 = 2012696135; + } + break; + case -1670282973: + return; + case -131655532: + return; + case 1452924446: + var2 = (aej)var1.next(); + adq.getInstance().unassign(var0, var2.getId()); + var3 = 2057740033; + break; + case 2012696135: + var1 = HATS.iterator(); + var3 = 2057740033; + break; + case 2057740033: + if (var1.hasNext()) { + var3 = 1452924446; + } else { + var3 = -131655532; + } + } + } + } + + public static void equip(aej var0) { + String var1 = null; + int var2 = 265054266; + + while (true) { + switch (var2) { + case -1307726568: + adq.getInstance().unassign(var1, var0.getId()); + return; + case -454011006: + return; + case -175626909: + if (isEquipped(var0)) { + var2 = -1307726568; + } else { + var2 = 895863513; + } + break; + case 265054266: + default: + var1 = localName(); + if (var1 == null) { + var2 = -454011006; + } else { + var2 = -175626909; + } + break; + case 895863513: + applyKey(var1, var0.getKey()); + return; + } + } + } + + public static void applyKey(String var0, String var1) { + aej var2 = null; + String var3 = null; + String var4 = null; + adr var5 = null; + int var6 = -755285663; + + while (true) { + switch (var6) { + case -1197934027: + var3 = geometry(var2.getKey()); + if (var3.isEmpty()) { + var6 = -447840489; + } else { + var6 = 806664104; + } + break; + case -755285663: + default: + if (var0 == null) { + var6 = 877007370; + } else { + var6 = 940131244; + } + break; + case -447840489: + return; + case -429321678: + return; + case 806664104: + var4 = "{\"name\":\"hat_" + + var2.getKey() + + "\",\"id\":" + + var2.getId() + + ",\"attachment\":" + + adj.HEAD.ordinal() + + ",\"scale\":1.0,\"offset\":[" + + HAT_OFFSET[0] + + "," + + HAT_OFFSET[1] + + "," + + HAT_OFFSET[2] + + "],\"rotation\":[" + + HAT_ROTATION[0] + + "," + + HAT_ROTATION[1] + + "," + + HAT_ROTATION[2] + + "],\"model\":" + + var3 + + "}"; + var5 = adq.getInstance().registerWithTexture(var4, var2.getTexture()); + if (var5 != null) { + var6 = 1219125111; + } else { + var6 = -429321678; + } + break; + case 877007370: + return; + case 940131244: + unequipAll(var0); + var2 = byKey(var1); + if (var2 == null) { + var6 = 1575618368; + } else { + var6 = -1197934027; + } + break; + case 1219125111: + adq.getInstance().setEnabled((boolean)((((630755209 | -630755208) + (630755209 & -630755208))) != 0)); + adq.getInstance().assign(var0, var5.getId()); + var6 = -429321678; + break; + case 1575618368: + return; + } + } + } + + private static String localName() { + Minecraft var0 = null; + String var2 = null; + int var1 = -1098523111; + + while (true) { + switch (var1) { + case -1098523111: + default: + var0 = Minecraft.getInstance(); + if (var0.player == null) { + var1 = 42680554; + } else { + var1 = 123425533; + } + break; + case -435083513: + return var2; + case 42680554: + var2 = null; + var1 = -435083513; + break; + case 123425533: + var2 = var0.player.getScoreboardName(); + var1 = -435083513; + } + } + } + + static { + float[] var10000 = new float[3]; + var10000[0] = 0.0F; + var10000[1] = 0.0F; + var10000[2] = 0.0F; + HAT_OFFSET = var10000; + var10000 = new float[3]; + var10000[0] = 0.0F; + var10000[1] = 0.0F; + var10000[2] = 0.0F; + HAT_ROTATION = var10000; + } +} diff --git a/src/main/java/defpackage/ael.java b/src/main/java/defpackage/ael.java new file mode 100644 index 0000000..93ff9f0 --- /dev/null +++ b/src/main/java/defpackage/ael.java @@ -0,0 +1,88 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; + +public class ael { + private PoseStack matrices; + + public void bind(PoseStack var1) { + this.matrices = var1; + } + + public void push() { + this.matrices.pushPose(); + } + + public void pop() { + this.matrices.popPose(); + } + + public PoseStack get() { + return this.matrices; + } + + public void translate(float var1, float var2, float var3) { + this.matrices.translate(var1, var2, var3); + } + + public void scale(float var1, float var2, float var3) { + this.matrices.scale(var1, var2, var3); + } + + public void rotateX(float var1) { + this.matrices.mulPose(Axis.XP.rotationDegrees(var1)); + } + + public void rotateY(float var1) { + this.matrices.mulPose(Axis.YP.rotationDegrees(var1)); + } + + public void rotateZ(float var1) { + this.matrices.mulPose(Axis.ZP.rotationDegrees(var1)); + } + + public void rotateXYZ(float var1, float var2, float var3) { + int var4 = 492338776; + + while (true) { + switch (var4) { + case -1414659660: + this.rotateX(var1); + var4 = -475257900; + break; + case -1343780246: + this.rotateZ(var3); + var4 = 1814156900; + break; + case -475257900: + return; + case -165221572: + if (var1 != 0.0F) { + var4 = -1414659660; + } else { + var4 = -475257900; + } + break; + case 231300873: + this.rotateY(var2); + var4 = -165221572; + break; + case 492338776: + default: + if (var3 != 0.0F) { + var4 = -1343780246; + } else { + var4 = 1814156900; + } + break; + case 1814156900: + if (var2 != 0.0F) { + var4 = 231300873; + } else { + var4 = -165221572; + } + } + } + } +} diff --git a/src/main/java/defpackage/aem.java b/src/main/java/defpackage/aem.java new file mode 100644 index 0000000..ecf2caf --- /dev/null +++ b/src/main/java/defpackage/aem.java @@ -0,0 +1,118 @@ +package defpackage; + +import net.minecraft.util.Mth; + +public final class aem { + private final String key; + private final String displayName; + private final int[] stops; + private final float span; + private final float flow; + private final boolean hueCycle; + + aem(String var1, String var2, float var3, float var4, boolean var5, int... var6) { + this.key = var1; + this.displayName = var2; + this.span = var3; + this.flow = var4; + this.hueCycle = var5; + this.stops = var4 == 0.0F ? var6 : mirrored(var6); + } + + private static int[] mirrored(int[] var0) { + int[] var1 = null; + int var2 = 0; + int var3 = -447970496; + + while (true) { + switch (var3) { + case -1772165515: + var1[var1.length - var2] = var0[var2]; + var2++; + var3 = -1741074447; + break; + case -1741074447: + if (var2 < var0.length - ((1067170613 ^ -1067170612) + ((1067170613 & -1067170612) << 1))) { + var3 = -1772165515; + } else { + var3 = -787363328; + } + break; + case -1519381057: + var1 = new int[var0.length * 0]; + System.arraycopy( + var0, + 0, + var1, + 0, + var0.length + ); + var2 = 1; + var3 = -1741074447; + break; + case -787363328: + return var1; + case -447970496: + default: + if (var0.length < (1833838490 | -1833838487) + (1833838490 & -1833838487)) { + var3 = 98890842; + } else { + var3 = -1519381057; + } + break; + case 98890842: + return var0; + } + } + } + + public String getKey() { + return this.key; + } + + public String getDisplayName() { + return this.displayName; + } + + private float phase(long var1) { + double var3 = 0.0; + int var5 = 911539432; + + while (true) { + switch (var5) { + case -547492931: + var3 = var1 / 4000.0 * this.flow; + return (float)(var3 - Math.floor(var3)); + case -183543767: + return 0.0F; + case 911539432: + } + + if (this.flow == 0.0F) { + var5 = -183543767; + } else { + var5 = -547492931; + } + } + } + + public int rgb(float var1, long var2) { + float var4 = Mth.clamp(var1, 0.0F, 1.0F); + float var5 = this.phase(var2); + if (this.hueCycle) { + return aeo.hsbToRgb(var4 * this.span + var5, 0.78F, 1.0F); + } else if (this.stops.length == (-802428025 ^ 802428026) + ((-802428025 & 802428026) << 1)) { + return this.stops[0]; + } else if (this.flow == 0.0F) { + float var10 = Mth.clamp(var4 * this.span, 0.0F, 1.0F) * (this.stops.length - ((-1998178713 ^ 1998178714) + ((-1998178713 & 1998178714) << 1))); + int var11 = Math.min((int)var10, this.stops.length - ((396435 | -396433) + (396435 & -396433))); + return aeo.mix(this.stops[var11], this.stops[var11 + 1], var10 - var11); + } else { + float var6 = var4 * this.span + var5; + var6 -= (float)Math.floor(var6); + float var7 = var6 * this.stops.length; + int var8 = Math.min((int)var7, this.stops.length - ((-1698403278 ^ 1698403279) + ((-1698403278 & 1698403279) << 1))); + return aeo.mix(this.stops[var8], this.stops[(var8 + (1876892572 ^ -1876892571) + ((1876892572 & -1876892571) << 1)) % this.stops.length], var7 - var8); + } + } +} diff --git a/src/main/java/defpackage/aen.java b/src/main/java/defpackage/aen.java new file mode 100644 index 0000000..b32ea60 --- /dev/null +++ b/src/main/java/defpackage/aen.java @@ -0,0 +1,6 @@ +package defpackage; + +import net.minecraft.network.chat.Component; + +record aen(aem tag, String text, long bucket, Component component) { +} diff --git a/src/main/java/defpackage/aeo.java b/src/main/java/defpackage/aeo.java new file mode 100644 index 0000000..0de29f4 --- /dev/null +++ b/src/main/java/defpackage/aeo.java @@ -0,0 +1,620 @@ +package defpackage; + +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.Minecraft; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.Style; +import net.minecraft.util.Mth; + +public final class aeo { + private static final long ANIMATION_PERIOD_MS = 4000L; + private static final long CACHE_BUCKET_MS = 40L; + private static final float RAINBOW_SATURATION = 0.78F; + private static final float RAINBOW_BRIGHTNESS = 1.0F; + private static final List NAMETAGS; + private static final Map STYLED_CACHE = new ConcurrentHashMap<>(); + + private aeo() { + } + + public static List all() { + return NAMETAGS; + } + + public static aem byKey(String var0) { + Iterator var1 = null; + aem var2 = null; + int var3 = 1108925642; + + while (true) { + switch (var3) { + case -2111757699: + if (var1.hasNext()) { + var3 = 1897625993; + } else { + var3 = 834877318; + } + break; + case -1996639642: + return var2; + case -531736705: + return null; + case -441799702: + var1 = NAMETAGS.iterator(); + var3 = -2111757699; + break; + case 834877318: + return null; + case 1108925642: + default: + if (var0 == null) { + var3 = -531736705; + } else { + var3 = -441799702; + } + break; + case 1370882513: + var3 = -2111757699; + break; + case 1897625993: + var2 = (aem)var1.next(); + if (var2.getKey().equals(var0)) { + var3 = -1996639642; + } else { + var3 = 1370882513; + } + } + } + } + + public static String equippedKey(String var0) { + return adq.getInstance().getNameTag(var0); + } + + public static boolean isEquipped(aem var0) { + String var1 = null; + int var3 = 0; + int var2 = -53635867; + + while (true) { + switch (var2) { + case -2135006247: + if (var0 != null) { + var2 = 507936199; + } else { + var2 = -143911603; + } + break; + case -143911603: + var3 = 0; + var2 = 565510979; + break; + case -53635867: + default: + var1 = localName(); + if (var1 != null) { + var2 = -2135006247; + } else { + var2 = -143911603; + } + break; + case 119475038: + var3 = 1; + var2 = 565510979; + break; + case 507936199: + if (var0.getKey().equals(equippedKey(var1))) { + var2 = 119475038; + } else { + var2 = -143911603; + } + break; + case 565510979: + return (boolean)((var3) != 0); + } + } + } + + public static void equip(aem var0) { + String var1 = localName(); + if (var1 != null && var0 != null) { + applyKey(var1, isEquipped(var0) ? null : var0.getKey()); + } + } + + public static void applyKey(String var0, String var1) { + if (var0 != null) { + aem var2 = byKey(var1); + adq.getInstance().setNameTag(var0, var2 == null ? null : var2.getKey()); + STYLED_CACHE.remove(var0.toLowerCase(Locale.ROOT)); + if (var2 != null) { + adq.getInstance().setEnabled((boolean)((((647412840 | -647412839) + (647412840 & -647412839))) != 0)); + } + } + } + + public static aem styleFor(String var0) { + int var1 = -1374658610; + + while (true) { + switch (var1) { + case -1374658610: + default: + if (var0 != null) { + var1 = 1212938159; + } else { + var1 = 1955672761; + } + break; + case -1087051608: + return byKey(adq.getInstance().getNameTag(var0)); + case 1212938159: + if (!adq.getInstance().isEnabled()) { + var1 = 1955672761; + } else { + var1 = -1087051608; + } + break; + case 1955672761: + return null; + } + } + } + + public static gv colorizer(aem var0, float var1) { + long var2 = System.currentTimeMillis(); + int var4 = Mth.clamp( + Math.round(var1 * 255.0F), 0, (2037773538 ^ -2037773283) + ((2037773538 & -2037773283) << 1) + ) + << (1245189322 | -1245189298) + (1245189322 & -1245189298); + return var4x -> var4 | var0.rgb(var4x, var2); + } + + public static Component stylize(String var0, Component var1) { + aem var2 = null; + String var3 = null; + long var4 = (136973657489369141L ^ -136973657489369141L) + ((136973657489369141L & -136973657489369141L) << 1); + long var6 = (-5063580346817368959L ^ 5063580346817368959L) + ((-5063580346817368959L & 5063580346817368959L) << 1); + String var8 = null; + aen var9 = null; + Component var10 = null; + int var11 = -1719762895; + + while (true) { + switch (var11) { + case -1719762895: + default: + var2 = styleFor(var0); + if (var2 != null) { + var11 = 311882827; + } else { + var11 = -1635598170; + } + break; + case -1635598170: + return var1; + case -1471678044: + if (var9.text().equals(var3)) { + var11 = 632983740; + } else { + var11 = 1105473921; + } + break; + case -866668791: + var3 = var1.getString(); + if (var3.isEmpty()) { + var11 = 1059679990; + } else { + var11 = -41426830; + } + break; + case -538119037: + if (var9.tag() == var2) { + var11 = -1471678044; + } else { + var11 = 1105473921; + } + break; + case -85814094: + if (var9.bucket() == var6) { + var11 = -538119037; + } else { + var11 = 1105473921; + } + break; + case -41426830: + var4 = System.currentTimeMillis(); + var6 = var4 / ((4102412143043163089L | -4102412143043163049L) + (4102412143043163089L & -4102412143043163049L)); + var8 = var0.toLowerCase(Locale.ROOT); + var9 = STYLED_CACHE.get(var8); + if (var9 != null) { + var11 = -85814094; + } else { + var11 = 1105473921; + } + break; + case 311882827: + if (var1 == null) { + var11 = -1635598170; + } else { + var11 = -866668791; + } + break; + case 632983740: + return var9.component(); + case 1059679990: + return var1; + case 1105473921: + var10 = build(var2, var1, var3, var0, var4); + STYLED_CACHE.put(var8, new aen(var2, var3, var6, var10)); + return var10; + } + } + } + + private static Component build(aem var0, Component var1, String var2, String var3, long var4) { + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + Component var10 = null; + int[] var11 = null; + int[] var12 = null; + int var14 = 0; + int var15 = 0; + int var13 = 671544692; + + while (true) { + switch (var13) { + case -1232695883: + var15 = var6 + var3.length(); + var13 = -322393014; + break; + case -831089738: + var14 = 0; + var13 = 633522484; + break; + case -385763260: + var14 = var6; + var13 = 633522484; + break; + case -322393014: + var8 = var15; + var9 = var2.codePointCount(var7, var8); + var10 = Component.empty(); + int[] var10000 = new int[1]; + var10000[0] = 0; + var11 = var10000; + var10000 = new int[1]; + var10000[0] = 0; + var12 = var10000; + var1.visit( + (var9x, var10x) -> { + int var11x = 0; + int var12x = 0; + int var13x = 0; + int var14x = 0; + int var15x = 0; + float var16x = 0.0F; + float var18x = 0.0F; + int var17x = -1289355717; + + while (true) { + switch (var17x) { + case -1675164980: + var10.append(Component.literal(var10x.substring(var13x)).setStyle(var9x)); + var17x = 363616346; + break; + case -1591882668: + if (var13x < var10x.length()) { + var17x = -1675164980; + } else { + var17x = 363616346; + } + break; + case -1465796259: + if (var14x < var13x) { + var17x = -645589875; + } else { + var17x = -1591882668; + } + break; + case -1318474814: + var10.append( + Component.literal(var10x.substring(0, var12x)).setStyle(var9x) + ); + var17x = 444915518; + break; + case -1289355717: + default: + var11x = var11[0]; + var11[0] = var11x + var10x.length(); + if (var10x.isEmpty()) { + var17x = 1896251337; + } else { + var17x = 1487115970; + } + break; + case -1153576793: + var16x = var18x; + var10.append(Component.literal(var10x.substring(var14x, var14x + var15x)).setStyle(var9x.withColor(var0.rgb(var16x, var4)))); + var12[0] = var12[0] + + 1; + var14x += var15x; + var17x = -1465796259; + break; + case -645589875: + var15x = Character.charCount(var10x.codePointAt(var14x)); + if (var9 > (-2085610572 ^ 2085610573) + ((-2085610572 & 2085610573) << 1)) { + var17x = 925096840; + } else { + var17x = 895433517; + } + break; + case 30620942: + if (var11x >= var8) { + var17x = 987313897; + } else { + var17x = 1960178560; + } + break; + case 363616346: + return Optional.empty(); + case 444915518: + var14x = var12x; + var17x = -1465796259; + break; + case 895433517: + var18x = 0.0F; + var17x = -1153576793; + break; + case 925096840: + var18x = (float)var12[0] + / (var9 - ((-1767184395 ^ 1767184396) + ((-1767184395 & 1767184396) << 1))); + var17x = -1153576793; + break; + case 987313897: + var10.append(Component.literal(var10x).setStyle(var9x)); + return Optional.empty(); + case 1487115970: + if (var11x + var10x.length() > var7) { + var17x = 30620942; + } else { + var17x = 987313897; + } + break; + case 1896251337: + return Optional.empty(); + case 1960178560: + var12x = Math.max(var7 - var11x, (-1863041614 ^ 1863041614) + ((-1863041614 & 1863041614) << 1)); + var13x = Math.min(var8 - var11x, var10x.length()); + if (var12x > 0) { + var17x = -1318474814; + } else { + var17x = 444915518; + } + } + } + }, + Style.EMPTY + ); + return var10; + case 633522484: + var7 = var14; + if (var6 < 0) { + var13 = 1274129221; + } else { + var13 = -1232695883; + } + break; + case 671544692: + default: + var6 = var2.indexOf(var3); + if (var6 < 0) { + var13 = -831089738; + } else { + var13 = -385763260; + } + break; + case 1274129221: + var15 = var2.length(); + var13 = -322393014; + } + } + } + + public static void clearCache() { + STYLED_CACHE.clear(); + } + + static int mix(int var0, int var1, float var2) { + float var3 = Mth.clamp(var2, 0.0F, 1.0F); + int var4 = Math.round( + (var0 >> (532565838 ^ -532565822) + ((532565838 & -532565822) << 1) & (-2001734009 ^ 2001734264) + ((-2001734009 & 2001734264) << 1)) + + ( + (var1 >> (1278160157 ^ -1278160141) + ((1278160157 & -1278160141) << 1) & (293143570 | -293143315) + (293143570 & -293143315)) + - (var0 >> (1558018135 ^ -1558018119) + ((1558018135 & -1558018119) << 1) & (110112530 ^ -110112275) + ((110112530 & -110112275) << 1)) + ) + * var3 + ); + int var5 = Math.round( + (var0 >> (1132220828 | -1132220820) + (1132220828 & -1132220820) & (-1442994601 ^ 1442994856) + ((-1442994601 & 1442994856) << 1)) + + ( + (var1 >> (-2074055715 | 2074055723) + (-2074055715 & 2074055723) & (-52576747 ^ 52577002) + ((-52576747 & 52577002) << 1)) + - (var0 >> (-1989150430 ^ 1989150438) + ((-1989150430 & 1989150438) << 1) & (-1131891628 ^ 1131891883) + ((-1131891628 & 1131891883) << 1)) + ) + * var3 + ); + int var6 = Math.round( + (var0 & (-90300537 ^ 90300792) + ((-90300537 & 90300792) << 1)) + + ((var1 & (826791818 ^ -826791563) + ((826791818 & -826791563) << 1)) - (var0 & (1731869319 ^ -1731869064) + ((1731869319 & -1731869064) << 1))) + * var3 + ); + return var4 << (31716229 ^ -31716213) + ((31716229 & -31716213) << 1) | var5 << (-1055167364 | 1055167372) + (-1055167364 & 1055167372) | var6; + } + + static int hsbToRgb(float var0, float var1, float var2) { + float var3 = var0 - (float)Math.floor(var0); + float var4 = var3 * 6.0F; + int var5 = (int)var4; + float var6 = var4 - var5; + float var7 = var2 * (1.0F - var1); + float var8 = var2 * (1.0F - var1 * var6); + float var9 = var2 * (1.0F - var1 * (1.0F - var6)); + float var10; + float var11; + float var12; + switch (var5) { + case 0: + var10 = var2; + var11 = var9; + var12 = var7; + break; + case 1: + var10 = var8; + var11 = var2; + var12 = var7; + break; + case 2: + var10 = var7; + var11 = var2; + var12 = var9; + break; + case 3: + var10 = var7; + var11 = var8; + var12 = var2; + break; + case 4: + var10 = var9; + var11 = var7; + var12 = var2; + break; + default: + var10 = var2; + var11 = var7; + var12 = var8; + } + + return Math.round(var10 * 255.0F) << (307332003 ^ -307331987) + ((307332003 & -307331987) << 1) + | Math.round(var11 * 255.0F) << (1266219274 | -1266219266) + (1266219274 & -1266219266) + | Math.round(var12 * 255.0F); + } + + private static String localName() { + Minecraft var0 = null; + String var2 = null; + int var1 = 1901758064; + + while (true) { + switch (var1) { + case -442162418: + var2 = var0.player.getScoreboardName(); + var1 = -139468311; + break; + case -167655766: + var2 = null; + var1 = -139468311; + break; + case -139468311: + return var2; + case 1901758064: + default: + var0 = Minecraft.getInstance(); + if (var0.player == null) { + var1 = -167655766; + } else { + var1 = -442162418; + } + } + } + } + + static { + aem var10000 = new aem( + "rainbow", + "Rainbow", + 0.8F, + 1.0F, + (boolean)((((-1045126553 ^ 1045126554) + ((-1045126553 & 1045126554) << 1)) + ) != 0)); + String var10003 = "sunset"; + String var10004 = "Sunset"; + int var10007 = 0; + int[] var10008 = new int[3]; + var10008[0] = 16765286; + var10008[1] = 16742981; + var10008[2] = 16727418; + aem var10001 = new aem(var10003, var10004, 0.5F, 0.55F, (boolean)((var10007) != 0), var10008); + var10004 = "ocean"; + String var10005 = "Ocean"; + int var10 = 0; + int[] var10009 = new int[3]; + var10009[0] = 7270655; + var10009[1] = 3114751; + var10009[2] = 2768864; + aem var10002 = new aem(var10004, var10005, 0.5F, 0.6F, (boolean)((var10) != 0), var10009); + var10005 = "toxic"; + String var10006 = "Toxic"; + int var14 = 0; + int[] var10010 = new int[3]; + var10010[0] = 15204203; + var10010[1] = 5040234; + var10010[2] = 1024875; + aem var0 = new aem(var10005, var10006, 0.5F, 0.65F, (boolean)((var14) != 0), var10010); + var10006 = "ember"; + String var7 = "Ember"; + int var17 = 0; + int[] var10011 = new int[3]; + var10011[0] = 16769126; + var10011[1] = 16742938; + var10011[2] = 14688031; + aem var2 = new aem(var10006, var7, 0.5F, 0.75F, (boolean)((var17) != 0), var10011); + String var8 = "nebula"; + String var11 = "Nebula"; + int var20 = 0; + int[] var10012 = new int[3]; + var10012[0] = 8019199; + var10012[1] = 11816447; + var10012[2] = 16735440; + aem var4 = new aem(var8, var11, 0.5F, 0.5F, (boolean)((var20) != 0), var10012); + String var12 = "frost"; + String var15 = "Frost"; + int var23 = 0; + int[] var10013 = new int[3]; + var10013[0] = 16777215; + var10013[1] = 11069439; + var10013[2] = 5941503; + aem var6 = new aem(var12, var15, 0.5F, 0.42F, (boolean)((var23) != 0), var10013); + String var16 = "sakura"; + String var18 = "Sakura"; + int var25 = 0; + int[] var10014 = new int[3]; + var10014[0] = 16765420; + var10014[1] = 16748485; + var10014[2] = 14698651; + aem var9 = new aem(var16, var18, 0.5F, 0.5F, (boolean)((var25) != 0), var10014); + String var19 = "midnight"; + String var21 = "Midnight"; + int var26 = 0; + int[] var10015 = new int[3]; + var10015[0] = 10135807; + var10015[1] = 5989331; + var10015[2] = 2825067; + aem var13 = new aem(var19, var21, 0.5F, 0.4F, (boolean)((var26) != 0), var10015); + String var22 = "gold"; + String var24 = "Gold"; + int var27 = 0; + int[] var10016 = new int[4]; + var10016[0] = 16773045; + var10016[1] = 16763213; + var10016[2] = 16774874; + var10016[3] = 14721567; + NAMETAGS = List.of(var10000, var10001, var10002, var0, var2, var4, var6, var9, var13, new aem(var22, var24, 0.5F, 0.9F, (boolean)((var27) != 0), var10016)); + } +} diff --git a/src/main/java/defpackage/aep.java b/src/main/java/defpackage/aep.java new file mode 100644 index 0000000..b4fd100 --- /dev/null +++ b/src/main/java/defpackage/aep.java @@ -0,0 +1,13 @@ +package defpackage; + +import net.minecraft.resources.Identifier; + +public record aep(String key, String name) { + public boolean isSlim() { + return aeq.isSlim(this.key); + } + + public Identifier getTexture() { + return aeq.texture(this.key); + } +} diff --git a/src/main/java/defpackage/aeq.java b/src/main/java/defpackage/aeq.java new file mode 100644 index 0000000..fc36594 --- /dev/null +++ b/src/main/java/defpackage/aeq.java @@ -0,0 +1,876 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.mojang.blaze3d.platform.NativeImage; +import java.io.ByteArrayInputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Base64; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.regex.Pattern; +import java.util.stream.Stream; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.resources.Identifier; +import net.minecraft.world.entity.player.PlayerModelType; + +public final class aeq { + private static final Pattern KEY_PATTERN = Pattern.compile( + "[0-9a-f]{32}(_slim)?" + ); + private static final String SLIM_SUFFIX = "_slim"; + private static final String NAMESPACE = "evolution"; + private static final String TEXTURE_PREFIX = "playerskin/"; + private static final String CACHE_DIRECTORY = "evolution"; + private static final String CACHE_SUBDIRECTORY = "skins"; + private static final String CACHE_EXTENSION = ".png"; + private static final String LIBRARY_FILE = "library.json"; + private static final String LIBRARY_KEY = "key"; + private static final String LIBRARY_NAME = "name"; + private static final int MAX_CACHED_FILES = 256; + private static final int MAX_PNG_BYTES = 32768; + private static final int MAX_REQUESTED_KEYS = 32; + private static final String CACHE_READ_FAILURE = "player skin cache read failed for {}"; + private static final String CACHE_WRITE_FAILURE = "player skin cache write failed for {}"; + private static final String CACHE_PRUNE_FAILURE = "player skin cache prune failed"; + private static final String LIBRARY_READ_FAILURE = "player skin library read failed"; + private static final String LIBRARY_WRITE_FAILURE = "player skin library write failed"; + private static final String DECODE_FAILURE = "player skin decode failed for {}"; + private static final ExecutorService IO = Executors.newSingleThreadExecutor(var0 -> { + Thread var1 = new Thread(var0, "EvoPlayerSkinIO"); + var1.setDaemon((boolean)((((662443406 ^ -662443405) + ((662443406 & -662443405) << 1))) != 0)); + return var1; + }); + private static final Map KEY_BY_PLAYER = new ConcurrentHashMap<>(); + private static final Map TEXTURE_BY_KEY = new ConcurrentHashMap<>(); + private static final Set PENDING_KEYS = ConcurrentHashMap.newKeySet(); + private static final Set RESOLVING_KEYS = ConcurrentHashMap.newKeySet(); + private static final Set FAILED_KEYS = ConcurrentHashMap.newKeySet(); + private static volatile List library = List.of(); + private static volatile boolean pruned; + + private aeq() { + } + + public static boolean isSlim(String var0) { + int var2 = 0; + int var1 = 790196186; + + while (true) { + switch (var1) { + case -1895725765: + if (var0.endsWith("_slim")) { + var1 = 359698664; + } else { + var1 = -784513097; + } + break; + case -784513097: + var2 = 0; + var1 = -655780118; + break; + case -655780118: + return (boolean)((var2) != 0); + case 359698664: + var2 = 1; + var1 = -655780118; + break; + case 790196186: + default: + if (var0 != null) { + var1 = -1895725765; + } else { + var1 = -784513097; + } + } + } + } + + public static PlayerModelType modelOf(String var0) { + PlayerModelType var2 = null; + int var1 = 1889523884; + + while (true) { + switch (var1) { + case 946404032: + var2 = PlayerModelType.WIDE; + var1 = 1237193862; + break; + case 1237193862: + return var2; + case 1889523884: + default: + if (isSlim(var0)) { + var1 = 1890855441; + } else { + var1 = 946404032; + } + break; + case 1890855441: + var2 = PlayerModelType.SLIM; + var1 = 1237193862; + } + } + } + + public static List all() { + return library; + } + + public static boolean setLibrary(List var0) { + List var1 = null; + List var3 = null; + int var2 = -1677289816; + + while (true) { + switch (var2) { + case -1677289816: + default: + if (var0 == null) { + var2 = 174614952; + } else { + var2 = 905722663; + } + break; + case -1399050977: + return (boolean)(((0)) != 0); + case -1313607944: + library = var1; + IO.execute(() -> writeLibrary(var1)); + return (boolean)(((1)) != 0); + case 44810950: + var1 = var3; + if (var1.equals(library)) { + var2 = -1399050977; + } else { + var2 = -1313607944; + } + break; + case 174614952: + var3 = List.of(); + var2 = 44810950; + break; + case 905722663: + var3 = List.copyOf(var0); + var2 = 44810950; + } + } + } + + public static void restore() { + IO.execute(() -> { + List var0 = null; + int var1 = 1230753799; + + while (true) { + switch (var1) { + case -1464389658: + library = var0; + var1 = 326579232; + break; + case 326579232: + return; + case 1230753799: + default: + var0 = readLibrary(); + if (!var0.isEmpty()) { + var1 = 1438565126; + } else { + var1 = 326579232; + } + break; + case 1438565126: + if (library.isEmpty()) { + var1 = -1464389658; + } else { + var1 = 326579232; + } + } + } + }); + } + + private static List readLibrary() { + Path var0 = cacheDirectory().resolve("library.json"); + + try { + if (!Files.isRegularFile(var0)) { + return List.of(); + } + + ArrayList var1 = new ArrayList(); + + for (JsonElement var3 : JsonParser.parseString(Files.readString(var0)).getAsJsonArray()) { + JsonObject var4 = var3.getAsJsonObject(); + String var5 = var4.get("key").getAsString(); + if (KEY_PATTERN.matcher(var5).matches()) { + var1.add(new aep(var5, var4.get("name").getAsString())); + } + } + + return List.copyOf(var1); + } catch (Exception var6) { + id.warn( + Cif.COSMETIC, + "player skin library read failed", + var6 + ); + return List.of(); + } + } + + private static void writeLibrary(List var0) { + try { + JsonArray var1 = new JsonArray(); + + for (aep var3 : var0) { + JsonObject var4 = new JsonObject(); + var4.addProperty("key", var3.key()); + var4.addProperty("name", var3.name()); + var1.add(var4); + } + + Path var6 = cacheDirectory(); + Files.createDirectories(var6); + Files.writeString(var6.resolve("library.json"), var1.toString()); + } catch (Exception var5) { + id.warn(Cif.COSMETIC, "player skin library write failed", var5); + } + } + + public static aep byKey(String var0) { + Iterator var1 = null; + aep var2 = null; + int var3 = 1363198382; + + while (true) { + switch (var3) { + case -1289760702: + return null; + case 13729867: + var1 = library.iterator(); + var3 = 212161943; + break; + case 200924183: + return var2; + case 212161943: + if (var1.hasNext()) { + var3 = 1536842906; + } else { + var3 = -1289760702; + } + break; + case 603889983: + var3 = 212161943; + break; + case 1246803427: + return null; + case 1363198382: + default: + if (var0 == null) { + var3 = 1246803427; + } else { + var3 = 13729867; + } + break; + case 1536842906: + var2 = (aep)var1.next(); + if (var2.key().equals(var0)) { + var3 = 200924183; + } else { + var3 = 603889983; + } + } + } + } + + public static String equippedKey(String var0) { + int var1 = -1848054312; + + while (true) { + switch (var1) { + case -1857445755: + return KEY_BY_PLAYER.get(nameKey(var0)); + case -1848054312: + default: + if (var0 != null) { + var1 = 979225545; + } else { + var1 = 1198786864; + } + break; + case 979225545: + if (KEY_BY_PLAYER.isEmpty()) { + var1 = 1198786864; + } else { + var1 = -1857445755; + } + break; + case 1198786864: + return null; + } + } + } + + public static boolean isEquipped(aep var0) { + String var1 = null; + int var3 = 0; + int var2 = 2025032630; + + while (true) { + switch (var2) { + case -1386291953: + if (var0 != null) { + var2 = 1274339288; + } else { + var2 = 593633803; + } + break; + case -518369241: + return (boolean)((var3) != 0); + case 593633803: + var3 = 0; + var2 = -518369241; + break; + case 1274339288: + if (var0.key().equals(equippedKey(var1))) { + var2 = 2005831918; + } else { + var2 = 593633803; + } + break; + case 2005831918: + var3 = 1; + var2 = -518369241; + break; + case 2025032630: + default: + var1 = localName(); + if (var1 != null) { + var2 = -1386291953; + } else { + var2 = 593633803; + } + } + } + } + + public static void equip(aep var0) { + String var1 = localName(); + if (var1 != null && var0 != null) { + applyKey(var1, isEquipped(var0) ? null : var0.key()); + } + } + + public static void applyKey(String var0, String var1) { + String var2 = null; + int var3 = 1373879137; + + while (true) { + switch (var3) { + case -1699330343: + adq.getInstance().setEnabled((boolean)((((1905894304 | -1905894303) + (1905894304 & -1905894303))) != 0)); + require(var1); + aef.persistIfLocal(var0); + return; + case -1674806978: + aef.persistIfLocal(var0); + var3 = 121215318; + break; + case -548160013: + if (KEY_BY_PLAYER.remove(var2) != null) { + var3 = -1674806978; + } else { + var3 = 121215318; + } + break; + case -311583373: + if (var1.equals(KEY_BY_PLAYER.put(var2, var1))) { + var3 = -216701589; + } else { + var3 = -1699330343; + } + break; + case -256966632: + return; + case -216701589: + return; + case -17052300: + if (!KEY_PATTERN.matcher(var1).matches()) { + var3 = -548160013; + } else { + var3 = -311583373; + } + break; + case 121215318: + return; + case 335312959: + var2 = nameKey(var0); + if (var1 != null) { + var3 = -17052300; + } else { + var3 = -548160013; + } + break; + case 1373879137: + default: + if (var0 == null) { + var3 = -256966632; + } else { + var3 = 335312959; + } + } + } + } + + public static Identifier textureFor(String var0) { + String var1 = null; + Identifier var3 = null; + int var2 = 1257090555; + + while (true) { + switch (var2) { + case -1086782390: + if (KEY_BY_PLAYER.isEmpty()) { + var2 = 327144944; + } else { + var2 = 1735274640; + } + break; + case -996017464: + var3 = null; + var2 = -71733850; + break; + case -236995445: + var3 = TEXTURE_BY_KEY.get(var1); + var2 = -71733850; + break; + case -71733850: + return var3; + case 327144944: + return null; + case 1257090555: + default: + if (var0 != null) { + var2 = -1086782390; + } else { + var2 = 327144944; + } + break; + case 1735274640: + var1 = KEY_BY_PLAYER.get(nameKey(var0)); + if (var1 == null) { + var2 = -996017464; + } else { + var2 = -236995445; + } + } + } + } + + public static Identifier texture(String var0) { + Identifier var1 = null; + int var2 = 1756125653; + + while (true) { + switch (var2) { + case -1665268554: + return null; + case 226931892: + var1 = TEXTURE_BY_KEY.get(var0); + if (var1 == null) { + var2 = 2081287980; + } else { + var2 = 1884248689; + } + break; + case 1756125653: + default: + if (var0 == null) { + var2 = -1665268554; + } else { + var2 = 226931892; + } + break; + case 1884248689: + return var1; + case 2081287980: + require(var0); + var2 = 1884248689; + } + } + } + + public static boolean hasPendingKeys() { + int var1 = 0; + int var0 = 250444869; + + while (true) { + switch (var0) { + case -1237635068: + var1 = 1; + var0 = 1601853553; + break; + case -203701691: + var1 = 0; + var0 = 1601853553; + break; + case 250444869: + default: + if (!PENDING_KEYS.isEmpty()) { + var0 = -1237635068; + } else { + var0 = -203701691; + } + break; + case 1601853553: + return (boolean)((var1) != 0); + } + } + } + + public static List pendingKeys() { + ArrayList var0 = null; + List var2 = null; + int var1 = -1918928063; + + while (true) { + switch (var1) { + case -1918928063: + default: + var0 = new ArrayList<>(PENDING_KEYS); + if (var0.size() <= (-1664529037 ^ 1664529069) + ((-1664529037 & 1664529069) << 1)) { + var1 = -444256107; + } else { + var1 = -455720897; + } + break; + case -1583447081: + return var2; + case -455720897: + var2 = var0.subList(0, (698722750 | -698722718) + (698722750 & -698722718)); + var1 = -1583447081; + break; + case -444256107: + var2 = var0; + var1 = -1583447081; + } + } + } + + public static void acceptDownloads(List var0, JsonObject var1) { + Iterator var2 = null; + String var3 = null; + JsonElement var4 = null; + JsonElement var6 = null; + int var5 = 1313125990; + + while (true) { + switch (var5) { + case -1297471966: + var3 = (String)var2.next(); + if (var1 == null) { + var5 = 1258794575; + } else { + var5 = 1370935658; + } + break; + case -834493048: + var4 = var6; + if (var4 != null) { + var5 = -48981549; + } else { + var5 = 2037449603; + } + break; + case -732474788: + if (var2.hasNext()) { + var5 = -1297471966; + } else { + var5 = 1746158053; + } + break; + case -48981549: + if (!var4.isJsonPrimitive()) { + var5 = 2037449603; + } else { + var5 = 1172489216; + } + break; + case 1172489216: + PENDING_KEYS.remove(var3); + store(var3, var4.getAsString()); + var5 = -732474788; + break; + case 1258794575: + var6 = null; + var5 = -834493048; + break; + case 1313125990: + default: + var2 = var0.iterator(); + var5 = -732474788; + break; + case 1370935658: + var6 = var1.get(var3); + var5 = -834493048; + break; + case 1746158053: + return; + case 2037449603: + PENDING_KEYS.remove(var3); + FAILED_KEYS.add(var3); + var5 = -732474788; + } + } + } + + private static void require(String var0) { + int var1 = 708335119; + + while (true) { + switch (var1) { + case -2070683831: + if (!FAILED_KEYS.contains(var0)) { + var1 = 1852472498; + } else { + var1 = -528541359; + } + break; + case -528541359: + return; + case -174609709: + IO.execute(() -> { + byte[] var1x = null; + int var2 = -1663652744; + + while (true) { + switch (var2) { + case -1663652744: + default: + var1x = readCache(var0); + if (var1x == null) { + var2 = -696530558; + } else { + var2 = 385577267; + } + break; + case -696530558: + PENDING_KEYS.add(var0); + RESOLVING_KEYS.remove(var0); + return; + case 385577267: + registerTexture(var0, var1x); + RESOLVING_KEYS.remove(var0); + return; + } + } + }); + return; + case 708335119: + default: + if (var0 != null) { + var1 = 1063629157; + } else { + var1 = -528541359; + } + break; + case 860924476: + if (!RESOLVING_KEYS.add(var0)) { + var1 = -528541359; + } else { + var1 = -174609709; + } + break; + case 1063629157: + if (!TEXTURE_BY_KEY.containsKey(var0)) { + var1 = -2070683831; + } else { + var1 = -528541359; + } + break; + case 1852472498: + if (!PENDING_KEYS.contains(var0)) { + var1 = 860924476; + } else { + var1 = -528541359; + } + } + } + } + + private static void store(String var0, String var1) { + RESOLVING_KEYS.add(var0); + IO.execute( + () -> { + try { + byte[] var2 = Base64.getDecoder().decode(var1); + if (var2.length != 0 && var2.length <= (1350807782 ^ -1350775014) + ((1350807782 & -1350775014) << 1)) { + if (registerTexture(var0, var2)) { + writeCache(var0, var2); + } + + return; + } + + FAILED_KEYS.add(var0); + } catch (Exception var6) { + FAILED_KEYS.add(var0); + id.warn( + Cif.COSMETIC, + "player skin decode failed for {}", + var0, + var6 + ); + return; + } finally { + RESOLVING_KEYS.remove(var0); + } + } + ); + } + + private static boolean registerTexture(String var0, byte[] var1) { + NativeImage var2; + try { + var2 = NativeImage.read(new ByteArrayInputStream(var1)); + } catch (Exception var4) { + FAILED_KEYS.add(var0); + id.warn( + Cif.COSMETIC, + "player skin decode failed for {}", + var0, + var4 + ); + return (boolean)(((0)) != 0); + } + + Identifier var3 = Identifier.fromNamespaceAndPath( + "evolution", "playerskin/" + var0 + ); + Minecraft.getInstance().execute(() -> { + Minecraft.getInstance().getTextureManager().register(var3, new DynamicTexture(() -> var0, var2)); + TEXTURE_BY_KEY.put(var0, var3); + }); + return (boolean)(((1)) != 0); + } + + private static Path cacheDirectory() { + return FabricLoader.getInstance() + .getGameDir() + .resolve("evolution") + .resolve("skins"); + } + + private static byte[] readCache(String var0) { + Path var1 = cacheDirectory().resolve(var0 + ".png"); + + try { + return Files.isRegularFile(var1) + && Files.size(var1) <= (7259857690190860081L ^ -7259857690190827313L) + ((7259857690190860081L & -7259857690190827313L) << 1) + ? Files.readAllBytes(var1) + : null; + } catch (Exception var3) { + id.warn( + Cif.COSMETIC, + "player skin cache read failed for {}", + var0, + var3 + ); + return null; + } + } + + private static void writeCache(String var0, byte[] var1) { + try { + Path var2 = cacheDirectory(); + Files.createDirectories(var2); + Files.write(var2.resolve(var0 + ".png"), var1); + prune(var2); + } catch (Exception var3) { + id.warn( + Cif.COSMETIC, + "player skin cache write failed for {}", + var0, + var3 + ); + } + } + + private static void prune(Path var0) { + if (!pruned) { + pruned = (boolean)(((1)) != 0); + + try (Stream var1 = Files.list(var0)) { + List var2 = var1.filter(var0x -> Files.isRegularFile(var0x)).sorted(Comparator.comparingLong(aeq::lastModified)).toList(); + + for (int var3 = 0; + var3 < var2.size() - (256); + var3++ + ) { + Files.deleteIfExists((Path)var2.get(var3)); + } + } catch (Exception var6) { + id.warn( + Cif.COSMETIC, + "player skin cache prune failed", + var6 + ); + } + } + } + + private static long lastModified(Path var0) { + try { + return Files.getLastModifiedTime(var0).toMillis(); + } catch (Exception var2) { + return (1027799616244169680L ^ -1027799616244169680L) + ((1027799616244169680L & -1027799616244169680L) << 1); + } + } + + private static String nameKey(String var0) { + return var0.toLowerCase(Locale.ROOT); + } + + private static String localName() { + Minecraft var0 = null; + String var2 = null; + int var1 = -2137149031; + + while (true) { + switch (var1) { + case -2137149031: + default: + var0 = Minecraft.getInstance(); + if (var0.player == null) { + var1 = 1843227216; + } else { + var1 = 770180432; + } + break; + case 770180432: + var2 = var0.player.getScoreboardName(); + var1 = 1167653139; + break; + case 1167653139: + return var2; + case 1843227216: + var2 = null; + var1 = 1167653139; + } + } + } +} diff --git a/src/main/java/defpackage/aer.java b/src/main/java/defpackage/aer.java new file mode 100644 index 0000000..3bc957a --- /dev/null +++ b/src/main/java/defpackage/aer.java @@ -0,0 +1,33 @@ +package defpackage; + +import java.util.Map; + +public final class aer { + private final String name; + private final boolean looping; + private final float length; + private final Map bones; + + aer(String var1, boolean var2, float var3, Map var4) { + this.name = var1; + this.looping = var2; + this.length = var3; + this.bones = var4; + } + + public String getName() { + return this.name; + } + + public boolean isLooping() { + return this.looping; + } + + public float getLength() { + return this.length; + } + + public Map getBones() { + return this.bones; + } +} diff --git a/src/main/java/defpackage/aes.java b/src/main/java/defpackage/aes.java new file mode 100644 index 0000000..8a99946 --- /dev/null +++ b/src/main/java/defpackage/aes.java @@ -0,0 +1,12 @@ +package defpackage; + +public enum aes { + CROUCH, + GLIDE, + SWIM, + FALL, + JUMP, + SPRINT, + WALK_BACK, + WALK; +} diff --git a/src/main/java/defpackage/aet.java b/src/main/java/defpackage/aet.java new file mode 100644 index 0000000..64ad7d5 --- /dev/null +++ b/src/main/java/defpackage/aet.java @@ -0,0 +1,25 @@ +package defpackage; + +public final class aet { + private final float[][] rotation; + private final float[][] position; + private final float[][] scale; + + aet(float[][] var1, float[][] var2, float[][] var3) { + this.rotation = var1; + this.position = var2; + this.scale = var3; + } + + public float[][] getRotation() { + return this.rotation; + } + + public float[][] getPosition() { + return this.position; + } + + public float[][] getScale() { + return this.scale; + } +} diff --git a/src/main/java/defpackage/aeu.java b/src/main/java/defpackage/aeu.java new file mode 100644 index 0000000..7ab11fa --- /dev/null +++ b/src/main/java/defpackage/aeu.java @@ -0,0 +1,706 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.EnumMap; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.Map.Entry; + +public final class aeu { + private static final String RESOURCE_FORMAT = "/assets/evolution/cosmetic/skins/%s.anim.json"; + private static final String CLIPS = "clips"; + private static final String AUTOPLAY = "autoplay"; + private static final String LOOP = "loop"; + private static final String LOOP_VALUE = "loop"; + private static final String LENGTH = "length"; + private static final String BONES = "bones"; + private static final String ROTATION = "rotation"; + private static final String POSITION = "position"; + private static final String SCALE = "scale"; + private static final String BLINK = "blink"; + private static final float MIN_CLIP_LENGTH = 0.05F; + private static final int MATCH_WEIGHT = 10; + private static final String[] AMBIENT_MARKERS; + private static final String[][] STATE_MARKERS; + private final Set autoplay = new HashSet<>(); + private final List ambient = new ArrayList<>(); + private final Map byState = new EnumMap<>(aes.class); + private final Map stateScores = new EnumMap<>(aes.class); + private aer blink; + private int blinkScore; + + private aeu() { + } + + public static aeu load(String var0) { + try { + Object[] var10002 = new Object[1]; + var10002[0] = var0; + + try (InputStream var1 = aeu.class.getResourceAsStream(String.format("/assets/evolution/cosmetic/skins/%s.anim.json", var10002))) { + if (var1 == null) { + return null; + } else { + JsonElement var2 = JsonParser.parseString(new String(var1.readAllBytes(), StandardCharsets.UTF_8)); + if (var2.isJsonObject() && var2.getAsJsonObject().has("clips")) { + aeu var9 = new aeu(); + var9.readAutoplay(var2.getAsJsonObject()); + var9.read(var2.getAsJsonObject().getAsJsonObject("clips")); + return var9.isEmpty() ? null : var9; + } else { + return null; + } + } + } + } catch (Exception var7) { + return null; + } + } + + public boolean isEmpty() { + int var2 = 0; + int var1 = 2082087312; + + while (true) { + switch (var1) { + case -1168942485: + return (boolean)((var2) != 0); + case 293211347: + var2 = 1; + var1 = -1168942485; + break; + case 464085836: + if (this.blink == null) { + var1 = 293211347; + } else { + var1 = 1013684221; + } + break; + case 1013684221: + var2 = 0; + var1 = -1168942485; + break; + case 1620137946: + if (this.byState.isEmpty()) { + var1 = 464085836; + } else { + var1 = 1013684221; + } + break; + case 2082087312: + default: + if (this.ambient.isEmpty()) { + var1 = 1620137946; + } else { + var1 = 1013684221; + } + } + } + } + + public List getAmbient() { + return this.ambient; + } + + public aer getBlink() { + return this.blink; + } + + public aer forState(aes var1) { + return this.byState.get(var1); + } + + private void read(JsonObject var1) { + Iterator var2 = null; + Entry var3 = null; + aer var4 = null; + int var5 = 371384863; + + while (true) { + switch (var5) { + case -1177415521: + var3 = (Entry)var2.next(); + if (!((JsonElement)var3.getValue()).isJsonObject()) { + var5 = -660897332; + } else { + var5 = 1693325918; + } + break; + case -870964295: + if (var2.hasNext()) { + var5 = -1177415521; + } else { + var5 = 1994702173; + } + break; + case -660897332: + var5 = -870964295; + break; + case 371384863: + default: + var2 = var1.entrySet().iterator(); + var5 = -870964295; + break; + case 462696833: + var5 = -870964295; + break; + case 658850592: + this.classify(var4); + var5 = 462696833; + break; + case 1693325918: + var4 = readClip((String)var3.getKey(), ((JsonElement)var3.getValue()).getAsJsonObject()); + if (var4 != null) { + var5 = 658850592; + } else { + var5 = 462696833; + } + break; + case 1994702173: + return; + } + } + } + + private void readAutoplay(JsonObject var1) { + Iterator var2 = null; + JsonElement var3 = null; + int var4 = 1301904207; + + while (true) { + switch (var4) { + case -1686977922: + var3 = (JsonElement)var2.next(); + this.autoplay.add(var3.getAsString()); + var4 = 2003277384; + break; + case -1445496246: + return; + case -592426441: + var2 = var1.getAsJsonArray("autoplay").iterator(); + var4 = 2003277384; + break; + case 1086295299: + if (!var1.get("autoplay").isJsonArray()) { + var4 = -1445496246; + } else { + var4 = -592426441; + } + break; + case 1301904207: + default: + if (var1.has("autoplay")) { + var4 = 1086295299; + } else { + var4 = -1445496246; + } + break; + case 1850993909: + return; + case 2003277384: + if (var2.hasNext()) { + var4 = -1686977922; + } else { + var4 = 1850993909; + } + } + } + } + + private void classify(aer var1) { + if (this.autoplay.contains(var1.getName())) { + this.ambient.add(var1); + } else { + String var2 = var1.getName().toLowerCase(Locale.ROOT); + int var3 = match(var2, "blink"); + if (var3 > 0) { + if (var3 > this.blinkScore) { + this.blink = var1; + this.blinkScore = var3; + } + } else { + aes[] var4 = aes.values(); + + for (int var5 = 0; var5 < STATE_MARKERS.length; var5++) { + int var6 = 0; + + for (int var7 = 0; var7 < STATE_MARKERS[var5].length; var7++) { + int var8 = match(var2, STATE_MARKERS[var5][var7]); + var6 = Math.max( + var6, + var8 == 0 + ? 0: var8 * ((2036052699 ^ -2036052689) + ((2036052699 & -2036052689) << 1)) - var7 + ); + } + + if (var6 > 0) { + if (var6 > this.stateScores.getOrDefault(var4[var5], (-1709643771 | 1709643771) + (-1709643771 & 1709643771))) { + this.byState.put(var4[var5], var1); + this.stateScores.put(var4[var5], var6); + } + + return; + } + } + + if (this.autoplay.isEmpty() && var1.isLooping()) { + String[] var9 = AMBIENT_MARKERS; + int var10 = var9.length; + + for (int var11 = 0; var11 < var10; var11++) { + String var12 = var9[var11]; + if (var2.contains(var12)) { + this.ambient.add(var1); + return; + } + } + + if (isNumberedIdle(var2)) { + this.ambient.add(var1); + } + } + } + } + } + + private static int match(String var0, String var1) { + int var3 = 0; + int var2 = -1844992469; + + while (true) { + switch (var2) { + case -1844992469: + default: + if (var0.equals(var1)) { + var2 = -1183042789; + } else { + var2 = -498578295; + } + break; + case -1183042789: + return 3; + case -498578295: + if (var0.startsWith(var1)) { + var2 = -36963685; + } else { + var2 = 507829125; + } + break; + case -239954472: + var3 = 1; + var2 = 1117760120; + break; + case -36963685: + return 2; + case 507829125: + if (var0.contains(var1)) { + var2 = -239954472; + } else { + var2 = 890271977; + } + break; + case 890271977: + var3 = 0; + var2 = 1117760120; + break; + case 1117760120: + return var3; + } + } + } + + private static boolean isNumberedIdle(String var0) { + int var1 = 0; + int var3 = 0; + int var2 = -2116982233; + + while (true) { + switch (var2) { + case -2116982233: + default: + if (var0.length() >= (1301566894 | -1301566892) + (1301566894 & -1301566892)) { + var2 = 249453201; + } else { + var2 = -1726975445; + } + break; + case -1785868617: + var3 = 0; + var2 = 1561157660; + break; + case -1726975445: + return (boolean)(((0)) != 0); + case -1661292914: + var3 = 1; + var2 = 1561157660; + break; + case -1174919914: + var1 = var0.charAt((220113464 ^ -220113463) + ((220113464 & -220113463) << 1)); + if (var1 != (273246904 ^ -273246809) + ((273246904 & -273246809) << 1)) { + var2 = -283294820; + } else { + var2 = -1661292914; + } + break; + case -283294820: + if (var1 >= (1550080828 ^ -1550080780) + ((1550080828 & -1550080780) << 1)) { + var2 = 1531245002; + } else { + var2 = -1785868617; + } + break; + case 249453201: + if (var0.charAt((-1574500132 ^ 1574500132) + ((-1574500132 & 1574500132) << 1)) + != (1401575055 ^ -1401574950) + ((1401575055 & -1401574950) << 1)) { + var2 = -1726975445; + } else { + var2 = -1174919914; + } + break; + case 1531245002: + if (var1 <= (-1399493662 | 1399493719) + (-1399493662 & 1399493719)) { + var2 = -1661292914; + } else { + var2 = -1785868617; + } + break; + case 1561157660: + return (boolean)((var3) != 0); + } + } + } + + private static aer readClip(String var0, JsonObject var1) { + float var2 = 0.0F; + int var3 = 0; + HashMap var4 = null; + Iterator var5 = null; + Entry var6 = null; + JsonObject var7 = null; + float[][] var8 = null; + float[][] var9 = null; + float[][] var10 = null; + float var12 = 0.0F; + int var13 = 0; + aer var14 = null; + int var11 = 841544119; + + while (true) { + switch (var11) { + case -2140094917: + var12 = 0.0F; + var11 = -1570766443; + break; + case -2106417552: + return var14; + case -1970470833: + return null; + case -1823299365: + var14 = new aer(var0, (boolean)((var3) != 0), var2, var4); + var11 = -2106417552; + break; + case -1670159452: + return null; + case -1570766443: + var2 = var12; + if (var2 < 0.05F) { + var11 = -1970470833; + } else { + var11 = -290477502; + } + break; + case -1284259955: + if (var10 != null) { + var11 = -1047004318; + } else { + var11 = 403531824; + } + break; + case -1256771104: + if ("loop" + .equals(var1.get("loop").getAsString())) { + var11 = -170221906; + } else { + var11 = -445187099; + } + break; + case -1047004318: + var4.put((String)var6.getKey(), new aet(var8, var9, var10)); + var11 = 403531824; + break; + case -849384344: + var14 = null; + var11 = -2106417552; + break; + case -752778914: + if (var5.hasNext()) { + var11 = 157084647; + } else { + var11 = 1027614077; + } + break; + case -445187099: + var13 = 0; + var11 = 1350420806; + break; + case -351085215: + if (var1.has("length")) { + var11 = 659495239; + } else { + var11 = -2140094917; + } + break; + case -290477502: + if (var1.has("loop")) { + var11 = -1256771104; + } else { + var11 = -445187099; + } + break; + case -170221906: + var13 = 1; + var11 = 1350420806; + break; + case -38127540: + var7 = ((JsonElement)var6.getValue()).getAsJsonObject(); + var8 = readChannel(var7, "rotation"); + var9 = readChannel(var7, "position"); + var10 = readChannel(var7, "scale"); + if (var8 == null) { + var11 = 332909916; + } else { + var11 = -1047004318; + } + break; + case 157084647: + var6 = (Entry)var5.next(); + if (!((JsonElement)var6.getValue()).isJsonObject()) { + var11 = 656594666; + } else { + var11 = -38127540; + } + break; + case 332909916: + if (var9 == null) { + var11 = -1284259955; + } else { + var11 = -1047004318; + } + break; + case 403531824: + var11 = -752778914; + break; + case 656594666: + var11 = -752778914; + break; + case 659495239: + var12 = var1.get("length").getAsFloat(); + var11 = -1570766443; + break; + case 660465552: + if (!var1.get("bones").isJsonObject()) { + var11 = -1670159452; + } else { + var11 = -351085215; + } + break; + case 841544119: + default: + if (var1.has("bones")) { + var11 = 660465552; + } else { + var11 = -1670159452; + } + break; + case 1027614077: + if (var4.isEmpty()) { + var11 = -849384344; + } else { + var11 = -1823299365; + } + break; + case 1350420806: + var3 = var13; + var4 = new HashMap(); + var5 = var1.getAsJsonObject("bones").entrySet().iterator(); + var11 = -752778914; + } + } + } + + private static float[][] readChannel(JsonObject var0, String var1) { + if (var0.has(var1) && var0.get(var1).isJsonArray()) { + JsonArray var2 = var0.getAsJsonArray(var1); + if (var2.isEmpty()) { + return null; + } + + float[][] var3 = new float[var2.size()][4]; + + for (int var4 = 0; var4 < var2.size(); var4++) { + JsonArray var5 = var2.get(var4).getAsJsonArray(); + + for (int var6 = 0; var6 < 4; var6++) { + var3[var4][var6] = var5.size() > var6 ? var5.get(var6).getAsFloat() : 0.0F; + } + } + + return var3; + } else { + return null; + } + } + + public static void sample(float[][] var0, float var1, float[] var2) { + int var3 = 0; + int var4 = 0; + float[] var5 = null; + float[] var6 = null; + float var7 = 0.0F; + float var8 = 0.0F; + float var10 = 0.0F; + int var9 = 1444990521; + + while (true) { + switch (var9) { + case -1710693350: + var10 = (var1 - var5[0]) / var7; + var9 = -757326157; + break; + case -1393769855: + if (var1 >= var0[var3][0]) { + var9 = 1415724344; + } else { + var9 = -1123553851; + } + break; + case -1123553851: + var4 = 0; + var9 = 859943851; + break; + case -784362247: + copy(var0[0], var2); + return; + case -757326157: + var8 = var10; + var2[0] = var5[1] + + (var6[1] - var5[1]) * var8; + var2[1] = var5[2] + + (var6[2] - var5[2]) * var8; + var2[2] = var5[3] + + (var6[3] - var5[3]) * var8; + return; + case -678614876: + var4++; + var9 = 859943851; + break; + case -126871497: + var10 = 0.0F; + var9 = -757326157; + break; + case 419541471: + if (var0[var4 + 1][0] < var1) { + var9 = -678614876; + } else { + var9 = 1878588005; + } + break; + case 859943851: + if (var4 < var3) { + var9 = 419541471; + } else { + var9 = 1878588005; + } + break; + case 1415724344: + copy(var0[var3], var2); + return; + case 1444990521: + default: + var3 = var0.length - (1); + if (var1 <= var0[0][0]) { + var9 = -784362247; + } else { + var9 = -1393769855; + } + break; + case 1878588005: + var5 = var0[var4]; + var6 = var0[var4 + 1]; + var7 = var6[0] - var5[0]; + if (var7 <= 0.0F) { + var9 = -126871497; + } else { + var9 = -1710693350; + } + } + } + } + + private static void copy(float[] var0, float[] var1) { + var1[0] = var0[1]; + var1[1] = var0[2]; + var1[2] = var0[3]; + } + + static { + String[] var10000 = new String[2]; + var10000[0] = "idle"; + var10000[1] = "drone"; + AMBIENT_MARKERS = var10000; + String[][] var0 = new String[8][]; + int var10002 = 0; + String[] var10003 = new String[2]; + var10003[0] = "crouch"; + var10003[1] = "sneak"; + var0[var10002] = var10003; + var10002 = 1; + var10003 = new String[2]; + var10003[0] = "glid"; + var10003[1] = "elytra"; + var0[var10002] = var10003; + var10002 = 2; + var10003 = new String[1]; + var10003[0] = "swim"; + var0[var10002] = var10003; + var10002 = 3; + var10003 = new String[4]; + var10003[0] = "falling"; + var10003[1] = "jumpdown"; + var10003[2] = "jumpingdown"; + var10003[3] = "fallling"; + var0[var10002] = var10003; + var10002 = 4; + var10003 = new String[2]; + var10003[0] = "jumpup"; + var10003[1] = "jumpingup"; + var0[var10002] = var10003; + var10002 = 5; + var10003 = new String[2]; + var10003[0] = "sprint"; + var10003[1] = "running"; + var0[var10002] = var10003; + var10002 = 6; + var10003 = new String[2]; + var10003[0] = "walkback"; + var10003[1] = "walkingback"; + var0[var10002] = var10003; + var10002 = 7; + var10003 = new String[2]; + var10003[0] = "walk"; + var10003[1] = "walking"; + var0[var10002] = var10003; + STATE_MARKERS = var0; + } +} diff --git a/src/main/java/defpackage/aev.java b/src/main/java/defpackage/aev.java new file mode 100644 index 0000000..a2d83f1 --- /dev/null +++ b/src/main/java/defpackage/aev.java @@ -0,0 +1,42 @@ +package defpackage; + +import net.minecraft.util.Mth; + +final class aev { + private long lastNanos; + float time; + float blink; + float stateTime; + aes state; + + aev() { + } + + float advance() { + long var1 = (-3687882282401208653L | 3687882282401208653L) + (-3687882282401208653L & 3687882282401208653L); + float var3 = 0.0F; + int var4 = -1425917026; + + while (true) { + switch (var4) { + case -1593878059: + var3 = Mth.clamp((float)(var1 - this.lastNanos) / 1.0E9F, 0.0F, 0.25F); + this.lastNanos = var1; + this.time += var3; + return var3; + case -1425917026: + default: + var1 = System.nanoTime(); + if (this.lastNanos == (-7816221319298175182L ^ 7816221319298175182L) + ((-7816221319298175182L & 7816221319298175182L) << 1)) { + var4 = -871793153; + } else { + var4 = -1593878059; + } + break; + case -871793153: + this.lastNanos = var1; + return 0.0F; + } + } + } +} diff --git a/src/main/java/defpackage/aew.java b/src/main/java/defpackage/aew.java new file mode 100644 index 0000000..b17daa8 --- /dev/null +++ b/src/main/java/defpackage/aew.java @@ -0,0 +1,357 @@ +package defpackage; + +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +public final class aew { + private static final float NANOS_PER_SECOND = 1.0E9F; + private static final float MAX_DELTA = 0.25F; + private static final float MOVE_THRESHOLD = 0.0025F; + private static final float BACKWARD_THRESHOLD = -0.02F; + private static final float FALL_THRESHOLD = -0.12F; + private static final float BLINK_INTERVAL = 4.5F; + private static final float DEGREES_TO_RADIANS = (float) (Math.PI / 180.0); + private static aew instance; + private final Map clocks = new ConcurrentHashMap<>(); + private final ThreadLocal samples = ThreadLocal.withInitial(() -> new float[3]); + + public static aew getInstance() { + int var0 = 583582654; + + while (true) { + switch (var0) { + case -1472255162: + instance = new aew(); + var0 = 1626671228; + break; + case 583582654: + default: + if (instance == null) { + var0 = -1472255162; + } else { + var0 = 1626671228; + } + break; + case 1626671228: + return instance; + } + } + } + + public void apply(aif var1, Map var2, aeu var3, AbstractClientPlayer var4) { + if (var1 != null && var3 != null && var4 != null) { + aev var5 = this.clocks.computeIfAbsent(var4.getScoreboardName().toLowerCase(Locale.ROOT), var0 -> new aev()); + float var6 = var5.advance(); + List var7 = var3.getAmbient(); + + for (int var8 = 0; var8 < var7.size(); var8++) { + aer var9 = (aer)var7.get(var8); + this.applyClip(var1, var2, var9, var9.isLooping() ? var5.time % var9.getLength() : Math.min(var5.time, var9.getLength())); + } + + aes var11 = this.stateOf(var4); + if (var11 != var5.state) { + var5.state = var11; + var5.stateTime = 0.0F; + } else { + var5.stateTime += var6; + } + + aer var12 = var11 == null ? null : var3.forState(var11); + if (var12 != null) { + this.applyClip(var1, var2, var12, var12.isLooping() ? var5.stateTime % var12.getLength() : Math.min(var5.stateTime, var12.getLength())); + } + + aer var10 = var3.getBlink(); + if (var10 != null) { + var5.blink += var6; + if (var5.blink >= 4.5F + var10.getLength()) { + var5.blink = 0.0F; + } + + if (var5.blink >= 4.5F) { + this.applyClip(var1, var2, var10, var5.blink - 4.5F); + } + } + } + } + + private aes stateOf(AbstractClientPlayer var1) { + Vec3 var2 = null; + double var3 = 0.0; + aes var6 = null; + aes var7 = null; + int var5 = -86110463; + + while (true) { + switch (var5) { + case -2109786704: + var2 = var1.getDeltaMovement(); + if (!var1.onGround()) { + var5 = -1556888221; + } else { + var5 = 1593237845; + } + break; + case -1868134333: + return aes.CROUCH; + case -1663397205: + if (!var1.isSwimming()) { + var5 = 1553777672; + } else { + var5 = 1920116988; + } + break; + case -1556888221: + if (var2.y < -0.12F) { + var5 = 59547377; + } else { + var5 = -127340537; + } + break; + case -783638360: + if (forward(var1, var2) < -0.02F) { + var5 = 936171057; + } else { + var5 = 806957626; + } + break; + case -558716521: + return var7; + case -127340537: + var6 = aes.JUMP; + var5 = 1354944356; + break; + case -86110463: + default: + if (var1.isFallFlying()) { + var5 = 1622772034; + } else { + var5 = -1663397205; + } + break; + case 59547377: + var6 = aes.FALL; + var5 = 1354944356; + break; + case 100372906: + return aes.SPRINT; + case 806957626: + var7 = aes.WALK; + var5 = -558716521; + break; + case 936171057: + var7 = aes.WALK_BACK; + var5 = -558716521; + break; + case 1034473110: + if (var1.isSprinting()) { + var5 = 100372906; + } else { + var5 = -783638360; + } + break; + case 1043462590: + if (var1.isCrouching()) { + var5 = -1868134333; + } else { + var5 = -2109786704; + } + break; + case 1354944356: + return var6; + case 1400849575: + return null; + case 1553777672: + if (var1.isInWater()) { + var5 = 1920116988; + } else { + var5 = 1043462590; + } + break; + case 1593237845: + var3 = var2.x * var2.x + var2.z * var2.z; + if (var3 < 0.0025F) { + var5 = 1400849575; + } else { + var5 = 1034473110; + } + break; + case 1622772034: + return aes.GLIDE; + case 1920116988: + return aes.SWIM; + } + } + } + + private static double forward(AbstractClientPlayer var0, Vec3 var1) { + float var2 = var0.getVisualRotationYInDegrees() * (float) (Math.PI / 180.0); + return -var1.x * Mth.sin(var2) + var1.z * Mth.cos(var2); + } + + private void applyClip(aif var1, Map var2, aer var3, float var4) { + float[] var5 = null; + Iterator var6 = null; + Entry var7 = null; + aig var8 = null; + aet var9 = null; + float[] var10 = null; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float[] var15 = null; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + int var14 = 1897496269; + + while (true) { + switch (var14) { + case -1906195586: + if (var6.hasNext()) { + var14 = 1777223095; + } else { + var14 = 467453971; + } + break; + case -1843832408: + var12 = var17; + if (var10 == null) { + var14 = 719872796; + } else { + var14 = -1079118195; + } + break; + case -1544826625: + var9 = (aet)var7.getValue(); + if (var2 == null) { + var14 = -1241834293; + } else { + var14 = -1506889491; + } + break; + case -1536056769: + aeu.sample(var9.getPosition(), var4, var5); + var8.setOffsetX(var8.getOffsetX() + var5[0]); + var8.setOffsetY(var8.getOffsetY() + var5[1]); + var8.setOffsetZ(var8.getOffsetZ() + var5[2]); + var14 = 1149355138; + break; + case -1506889491: + var15 = (float[])var2.get(var7.getKey()); + var14 = 1079347900; + break; + case -1393563161: + aeu.sample(var9.getScale(), var4, var5); + if (var10 == null) { + var14 = 1287258264; + } else { + var14 = 1377904823; + } + break; + case -1241834293: + var15 = null; + var14 = 1079347900; + break; + case -1079118195: + var18 = var10[8]; + var14 = -1034945334; + break; + case -1034945334: + var13 = var18; + var8.setScaleX(var11 * var5[0]); + var8.setScaleY(var12 * var5[1]); + var8.setScaleZ(var13 * var5[2]); + var14 = -982195197; + break; + case -982195197: + var14 = -1906195586; + break; + case -832289632: + if (var9.getPosition() != null) { + var14 = -1536056769; + } else { + var14 = 1149355138; + } + break; + case -127745801: + var17 = var10[7]; + var14 = -1843832408; + break; + case 432275247: + var11 = var16; + if (var10 == null) { + var14 = 1300127974; + } else { + var14 = -127745801; + } + break; + case 467453971: + return; + case 648848951: + var14 = -1906195586; + break; + case 719872796: + var18 = 1.0F; + var14 = -1034945334; + break; + case 1079347900: + var10 = var15; + if (var9.getRotation() != null) { + var14 = 1337004981; + } else { + var14 = -832289632; + } + break; + case 1149355138: + if (var9.getScale() != null) { + var14 = -1393563161; + } else { + var14 = -982195197; + } + break; + case 1287258264: + var16 = 1.0F; + var14 = 432275247; + break; + case 1300127974: + var17 = 1.0F; + var14 = -1843832408; + break; + case 1337004981: + aeu.sample(var9.getRotation(), var4, var5); + var8.setRotX(var8.getRotX() - var5[0] * (float) (Math.PI / 180.0)); + var8.setRotY(var8.getRotY() - var5[1] * (float) (Math.PI / 180.0)); + var8.setRotZ(var8.getRotZ() + var5[2] * (float) (Math.PI / 180.0)); + var14 = -832289632; + break; + case 1377904823: + var16 = var10[6]; + var14 = 432275247; + break; + case 1777223095: + var7 = (Entry)var6.next(); + var8 = var1.findPart((String)var7.getKey()).orElse(null); + if (var8 == null) { + var14 = 648848951; + } else { + var14 = -1544826625; + } + break; + case 1897496269: + default: + var5 = this.samples.get(); + var6 = var3.getBones().entrySet().iterator(); + var14 = -1906195586; + } + } + } +} diff --git a/src/main/java/defpackage/aex.java b/src/main/java/defpackage/aex.java new file mode 100644 index 0000000..a35e5ef --- /dev/null +++ b/src/main/java/defpackage/aex.java @@ -0,0 +1,41 @@ +package defpackage; + +import net.minecraft.resources.Identifier; + +public final class aex { + private final String key; + private final String displayName; + private final String[] bones; + + aex(String var1, String var2) { + this(var1, var2, aey.DEFAULT_BONES); + } + + aex(String var1, String var2, String[] var3) { + this.key = var1; + this.displayName = var2; + this.bones = var3; + } + + public String[] getBones() { + return this.bones; + } + + public String getKey() { + return this.key; + } + + public String getDisplayName() { + return this.displayName; + } + + public Identifier getTexture() { + return Identifier.fromNamespaceAndPath( + "evolution", "textures/cosmetic/skins/" + this.key + ".png" + ); + } + + public int getId() { + return ("skin_" + this.key).hashCode(); + } +} diff --git a/src/main/java/defpackage/aey.java b/src/main/java/defpackage/aey.java new file mode 100644 index 0000000..59cb3ff --- /dev/null +++ b/src/main/java/defpackage/aey.java @@ -0,0 +1,570 @@ +package defpackage; + +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.Minecraft; + +public final class aey { + private static final float SKIN_SCALE = 1.0F; + private static final float[] SKIN_OFFSET; + private static final float[] SKIN_ROTATION; + public static final String[] DEFAULT_BONES; + private static final List SKINS = new ArrayList<>(); + private static final Map GEOMETRY_CACHE = new ConcurrentHashMap<>(); + private static final Map MODEL_CACHE = new ConcurrentHashMap<>(); + private static final Map> ANIMATION_CACHE = new ConcurrentHashMap<>(); + private static final String[] LOWERCASE_HEAD_BONES; + + private aey() { + } + + public static List all() { + return SKINS; + } + + private static String geometry(String var0) { + return GEOMETRY_CACHE.computeIfAbsent(var0, var0x -> { + try (InputStream var1 = aey.class.getResourceAsStream("/assets/evolution/cosmetic/skins/" + var0x + ".geo.json")) { + return var1 == null ? "" : new String(var1.readAllBytes(), StandardCharsets.UTF_8); + } catch (Exception var6) { + return ""; + } + }); + } + + public static aif model(aex var0) { + String var1 = null; + int var2 = -174191066; + + while (true) { + switch (var2) { + case -174191066: + default: + var1 = geometry(var0.getKey()); + if (var1.isEmpty()) { + var2 = 421394048; + } else { + var2 = 1433225883; + } + break; + case 421394048: + return null; + case 1433225883: + return MODEL_CACHE.computeIfAbsent(var0.getKey(), var1x -> aid.parse(var1)); + } + } + } + + public static aeu animation(String var0) { + int var1 = -1234897061; + + while (true) { + switch (var1) { + case -1234897061: + default: + if (var0 == null) { + var1 = -559821739; + } else { + var1 = 1288674715; + } + break; + case -559821739: + return null; + case 1288674715: + return ANIMATION_CACHE.computeIfAbsent(var0, var0x -> Optional.ofNullable(aeu.load(var0x))).orElse(null); + } + } + } + + public static aex byKey(String var0) { + Iterator var1 = null; + aex var2 = null; + int var3 = 155857569; + + while (true) { + switch (var3) { + case -1751749168: + var2 = (aex)var1.next(); + if (var2.getKey().equals(var0)) { + var3 = 2089444195; + } else { + var3 = 679756977; + } + break; + case -1250409371: + return null; + case -1072958232: + if (var1.hasNext()) { + var3 = -1751749168; + } else { + var3 = 723206073; + } + break; + case 155857569: + default: + if (var0 == null) { + var3 = -1250409371; + } else { + var3 = 1096940256; + } + break; + case 679756977: + var3 = -1072958232; + break; + case 723206073: + return null; + case 1096940256: + var1 = SKINS.iterator(); + var3 = -1072958232; + break; + case 2089444195: + return var2; + } + } + } + + public static String equippedKey(String var0) { + Iterator var1 = null; + aex var2 = null; + int var3 = 60385099; + + while (true) { + switch (var3) { + case -1965405917: + if (var1.hasNext()) { + var3 = 458639837; + } else { + var3 = 942860079; + } + break; + case -1720248952: + var3 = -1965405917; + break; + case -1296298530: + return null; + case -573607284: + var1 = SKINS.iterator(); + var3 = -1965405917; + break; + case 60385099: + default: + if (var0 == null) { + var3 = -1296298530; + } else { + var3 = -573607284; + } + break; + case 458639837: + var2 = (aex)var1.next(); + if (adq.getInstance().hasCosmetic(var0, var2.getId())) { + var3 = 1612602566; + } else { + var3 = -1720248952; + } + break; + case 942860079: + return null; + case 1612602566: + return var2.getKey(); + } + } + } + + public static boolean isEquipped(aex var0) { + String var1 = null; + int var3 = 0; + int var2 = 1251225318; + + while (true) { + switch (var2) { + case -497737043: + if (adq.getInstance().hasCosmetic(var1, var0.getId())) { + var2 = 261765648; + } else { + var2 = 1166261749; + } + break; + case -345241429: + return (boolean)((var3) != 0); + case 261765648: + var3 = 1; + var2 = -345241429; + break; + case 1166261749: + var3 = 0; + var2 = -345241429; + break; + case 1251225318: + default: + var1 = localName(); + if (var1 != null) { + var2 = -497737043; + } else { + var2 = 1166261749; + } + } + } + } + + public static void unequipAll() { + unequipAll(localName()); + } + + public static void unequipAll(String var0) { + Iterator var1 = null; + aex var2 = null; + int var3 = 1273736054; + + while (true) { + switch (var3) { + case -1309275972: + if (var1.hasNext()) { + var3 = 546366218; + } else { + var3 = -460179449; + } + break; + case -460179449: + return; + case 360162705: + var1 = SKINS.iterator(); + var3 = -1309275972; + break; + case 546366218: + var2 = (aex)var1.next(); + adq.getInstance().unassign(var0, var2.getId()); + var3 = -1309275972; + break; + case 905187567: + return; + case 1273736054: + default: + if (var0 == null) { + var3 = 905187567; + } else { + var3 = 360162705; + } + } + } + } + + public static void equip(aex var0) { + String var1 = null; + int var2 = -2119481444; + + while (true) { + switch (var2) { + case -2119481444: + default: + var1 = localName(); + if (var1 == null) { + var2 = -1299424049; + } else { + var2 = -1049174414; + } + break; + case -2038123943: + adq.getInstance().unassign(var1, var0.getId()); + return; + case -1299424049: + return; + case -1150670998: + applyKey(var1, var0.getKey()); + return; + case -1049174414: + if (isEquipped(var0)) { + var2 = -2038123943; + } else { + var2 = -1150670998; + } + } + } + } + + public static void applyKey(String var0, String var1) { + aex var2 = null; + String var3 = null; + String var4 = null; + adr var5 = null; + int var6 = -1597404574; + + while (true) { + switch (var6) { + case -1597404574: + default: + if (var0 == null) { + var6 = 1478743874; + } else { + var6 = 753713242; + } + break; + case -1051483243: + return; + case -725850281: + var3 = geometry(var2.getKey()); + if (var3.isEmpty()) { + var6 = -392407131; + } else { + var6 = -98819513; + } + break; + case -392407131: + return; + case -98819513: + var4 = "{\"name\":\"skin_" + + var2.getKey() + + "\",\"id\":" + + var2.getId() + + ",\"attachment\":" + + adj.FULL_BODY.ordinal() + + ",\"scale\":1.0,\"offset\":[" + + SKIN_OFFSET[0] + + "," + + SKIN_OFFSET[1] + + "," + + SKIN_OFFSET[2] + + "],\"rotation\":[" + + SKIN_ROTATION[0] + + "," + + SKIN_ROTATION[1] + + "," + + SKIN_ROTATION[2] + + "],\"model\":" + + var3 + + "}"; + var5 = adq.getInstance().registerWithTexture(var4, var2.getTexture()); + if (var5 != null) { + var6 = 743802321; + } else { + var6 = 514948221; + } + break; + case 514948221: + return; + case 743802321: + adq.getInstance().setEnabled((boolean)((((-1648231091 | 1648231092) + (-1648231091 & 1648231092))) != 0)); + adq.getInstance().assign(var0, var5.getId()); + var6 = 514948221; + break; + case 753713242: + unequipAll(var0); + var2 = byKey(var1); + if (var2 == null) { + var6 = -1051483243; + } else { + var6 = -725850281; + } + break; + case 1478743874: + return; + } + } + } + + private static String localName() { + Minecraft var0 = null; + String var2 = null; + int var1 = -2113820651; + + while (true) { + switch (var1) { + case -2113820651: + default: + var0 = Minecraft.getInstance(); + if (var0.player == null) { + var1 = 1850148442; + } else { + var1 = 87642314; + } + break; + case -827649981: + return var2; + case 87642314: + var2 = var0.player.getScoreboardName(); + var1 = -827649981; + break; + case 1850148442: + var2 = null; + var1 = -827649981; + } + } + } + + static { + float[] var10000 = new float[3]; + var10000[0] = 0.0F; + var10000[1] = 0.0F; + var10000[2] = 0.0F; + SKIN_OFFSET = var10000; + var10000 = new float[3]; + var10000[0] = 0.0F; + var10000[1] = 0.0F; + var10000[2] = 0.0F; + SKIN_ROTATION = var10000; + String[] var1 = new String[6]; + var1[0] = "Head"; + var1[1] = "Body"; + var1[2] = "LeftArm"; + var1[3] = "RightArm"; + var1[4] = "LeftLeg"; + var1[5] = "RightLeg"; + DEFAULT_BONES = var1; + String[] var2 = new String[6]; + var2[0] = "head"; + var2[1] = "Body"; + var2[2] = "LeftArm"; + var2[3] = "RightArm"; + var2[4] = "LeftLeg"; + var2[5] = "RightLeg"; + LOWERCASE_HEAD_BONES = var2; + SKINS.add( + new aex( + "akita_neru", + "Akita Neru" + ) + ); + SKINS.add( + new aex( + "android", + "Android" + ) + ); + SKINS.add( + new aex( + "aria", + "Aria", + LOWERCASE_HEAD_BONES + ) + ); + SKINS.add( + new aex( + "baron", + "Baron Bunny" + ) + ); + List var3 = SKINS; + String var10003 = "beardie"; + String var10004 = "Beardie"; + String[] var10005 = new String[6]; + var10005[0] = "Head"; + var10005[1] = "Body"; + var10005[2] = "Left Arm"; + var10005[3] = "Right Arm"; + var10005[4] = "Left Leg"; + var10005[5] = "Right Leg"; + var3.add(new aex(var10003, var10004, var10005)); + SKINS.add( + new aex( + "cotton", + "Cotton", + LOWERCASE_HEAD_BONES + ) + ); + List var4 = SKINS; + var10003 = "elise"; + var10004 = "Elise"; + var10005 = new String[6]; + var10005[0] = "head"; + var10005[1] = "body"; + var10005[2] = "l_arm"; + var10005[3] = "r_arm"; + var10005[4] = "l_leg"; + var10005[5] = "r_leg"; + var4.add(new aex(var10003, var10004, var10005)); + List var5 = SKINS; + var10003 = "goldenglow"; + var10004 = "Goldenglow"; + var10005 = new String[6]; + var10005[0] = "FHead"; + var10005[1] = "Body"; + var10005[2] = "LeftArm"; + var10005[3] = "RightArm"; + var10005[4] = "LeftLeg"; + var10005[5] = "RightLeg"; + var5.add(new aex(var10003, var10004, var10005)); + SKINS.add( + new aex( + "kaltsit", + "Kal'tsit" + ) + ); + SKINS.add( + new aex( + "mikie", + "Mikie", + LOWERCASE_HEAD_BONES + ) + ); + SKINS.add( + new aex("miku", "Miku") + ); + List var6 = SKINS; + var10003 = "mothi"; + var10004 = "Mothi"; + var10005 = new String[6]; + var10005[0] = "head"; + var10005[1] = "Body"; + var10005[2] = "LeftArm"; + var10005[3] = "RightArm"; + var10005[4] = "Leftleg"; + var10005[5] = "Rightleg"; + var6.add(new aex(var10003, var10004, var10005)); + List var7 = SKINS; + var10003 = "mothli"; + var10004 = "Mothli"; + var10005 = new String[6]; + var10005[0] = "head"; + var10005[1] = "body"; + var10005[2] = "LeftArm"; + var10005[3] = "RightArm"; + var10005[4] = "LeftLeg"; + var10005[5] = "RightLeg"; + var7.add(new aex(var10003, var10004, var10005)); + SKINS.add( + new aex( + "peter", + "Peter" + ) + ); + List var8 = SKINS; + var10003 = "repo"; + var10004 = "Repo"; + var10005 = new String[6]; + var10005[0] = "head"; + var10005[1] = "body"; + var10005[2] = "leftarm"; + var10005[3] = "rightarm"; + var10005[4] = "leftleg"; + var10005[5] = "rightleg"; + var8.add(new aex(var10003, var10004, var10005)); + SKINS.add( + new aex( + "turbo_granny", + "Turbo Granny" + ) + ); + List var9 = SKINS; + var10003 = "goose"; + var10004 = "Untitled Goose"; + var10005 = new String[6]; + var10005[0] = "head"; + var10005[1] = "gorso"; + var10005[2] = "leftwing"; + var10005[3] = "rightwing"; + var10005[4] = "chknlegleft"; + var10005[5] = "chknlegright"; + var9.add(new aex(var10003, var10004, var10005)); + SKINS.add( + new aex( + "wheelchair", + "Wheelchair" + ) + ); + } +} diff --git a/src/main/java/defpackage/aez.java b/src/main/java/defpackage/aez.java new file mode 100644 index 0000000..db0aa65 --- /dev/null +++ b/src/main/java/defpackage/aez.java @@ -0,0 +1,13 @@ +package defpackage; + +final class aez { + float[] head; + float[] body; + float[] leftArm; + float[] rightArm; + float[] leftLeg; + float[] rightLeg; + + aez() { + } +} diff --git a/src/main/java/defpackage/af.java b/src/main/java/defpackage/af.java new file mode 100644 index 0000000..bec09e2 --- /dev/null +++ b/src/main/java/defpackage/af.java @@ -0,0 +1,22 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import net.minecraft.world.item.ItemStack; + +public class af { + public static HashMap renderAsBlock = new HashMap<>(); + public static HashMap translateItem = new HashMap<>(); + public static HashMap applyBlockRotation = new HashMap<>(); + public static HashMap itemSwingSpeed = new HashMap<>(); + public static HashMap useDuration = new HashMap<>(); + public static HashMap usingItem = new HashMap<>(); + public static final HashMap registry = new HashMap<>(); + public static final List particles = new ArrayList<>(); + public static final ao modelPartAnimator = new ao(); + public static final bh debugTextRenderer = new bh(); + public static ItemStack mainHandItem = ItemStack.EMPTY; + public static ItemStack offHandItem = ItemStack.EMPTY; + public static ItemStack renderedStack = ItemStack.EMPTY; +} diff --git a/src/main/java/defpackage/afa.java b/src/main/java/defpackage/afa.java new file mode 100644 index 0000000..5052067 --- /dev/null +++ b/src/main/java/defpackage/afa.java @@ -0,0 +1,577 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.player.PlayerModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.world.entity.Entity; + +public class afa { + private static afa instance; + private static final String SKIN_PREFIX = "skin_"; + private static final float FLIP_Z = 180.0F; + private static final float FEET_Y = -1.375F; + private static final float SKIN_SCALE = 1.0F; + private static final float LIMB_SX = -1.0F; + private static final float LIMB_SY = -1.0F; + private static final float LIMB_SZ = 1.0F; + private final adv modelRenderer = adv.getInstance(); + private final ael stack = new ael(); + private final Map definitions = new ConcurrentHashMap<>(); + private final Map> basePoses = new ConcurrentHashMap<>(); + private final Map squishyBones = new ConcurrentHashMap<>(); + + public static afa getInstance() { + int var0 = 24542742; + + while (true) { + switch (var0) { + case -1963891843: + return instance; + case -392937899: + instance = new afa(); + var0 = -1963891843; + break; + case 24542742: + default: + if (instance == null) { + var0 = -392937899; + } else { + var0 = -1963891843; + } + } + } + } + + public static boolean shouldHideVanilla(int var0) { + Minecraft var1 = null; + Entity var2 = null; + AbstractClientPlayer var3 = null; + int var5 = 0; + int var4 = 1623267852; + + while (true) { + switch (var4) { + case -1932260931: + var5 = 1; + var4 = -1616160203; + break; + case -1890738844: + return (boolean)(((0)) != 0); + case -1877180361: + var5 = 0; + var4 = -1616160203; + break; + case -1644279990: + var2 = var1.level.getEntity(var0); + if (var2 instanceof AbstractClientPlayer) { + var4 = 469836989; + } else { + var4 = -1054786043; + } + break; + case -1616160203: + return (boolean)((var5) != 0); + case -1333640855: + if (aey.equippedKey(var3.getScoreboardName()) != null) { + var4 = -1932260931; + } else { + var4 = -1877180361; + } + break; + case -1054786043: + return (boolean)(((0)) != 0); + case 469836989: + var3 = (AbstractClientPlayer)var2; + if (var3.isInvisible()) { + var4 = -1054786043; + } else { + var4 = -1333640855; + } + break; + case 794696179: + if (!adq.getInstance().isEnabled()) { + var4 = -1890738844; + } else { + var4 = -1644279990; + } + break; + case 1623267852: + default: + var1 = Minecraft.getInstance(); + if (var1.level != null) { + var4 = 794696179; + } else { + var4 = -1890738844; + } + } + } + } + + public void render(adr var1, PoseStack var2, SubmitNodeCollector var3, int var4, PlayerModel var5, AbstractClientPlayer var6) { + aif var7 = null; + Map var8 = null; + int var9 = 0; + aez var10 = null; + String[] var11 = null; + aeu var12 = null; + int var13 = 1895100616; + + while (true) { + switch (var13) { + case -1811201554: + var8 = this.basePoses.get(var1.getId()); + boolean var15 = this.squishyBones.getOrDefault(var1.getId(), Boolean.FALSE); + var10 = this.capture(var5); + this.stack.bind(var2); + this.stack.push(); + this.stack.rotateZ(180.0F); + this.stack.translate(0.0F, -1.375F, 0.0F); + this.stack.scale(1.0F, 1.0F, 1.0F); + var11 = this.bonesFor(var1); + var12 = aey.animation(skinKeyOf(var1)); + this.modelRenderer.submitRoots(var7, var2, var3, var1.getTexture(), var4, () -> { + int var8x = 1994714251; + + while (true) { + switch (var8x) { + case -1796108765: + adf.getInstance().apply(var7, var8, var6); + var8x = 1205655172; + break; + case 1205655172: + return; + case 1994714251: + default: + this.resetPose(var7, var8); + this.applyLimb(var7, var8, var11[0], var10.head); + this.applyLimb(var7, var8, var11[1], var10.body); + this.applyLimb(var7, var8, var11[2], var10.leftArm); + this.applyLimb(var7, var8, var11[3], var10.rightArm); + this.applyLimb(var7, var8, var11[4], var10.leftLeg); + this.applyLimb(var7, var8, var11[5], var10.rightLeg); + aew.getInstance().apply(var7, var8, var12, var6); + if (var15) { + var8x = -1796108765; + } else { + var8x = 1205655172; + } + } + } + }); + this.stack.pop(); + return; + case -1639383843: + return; + case 144846617: + if (var5 == null) { + var13 = -1639383843; + } else { + var13 = 586782012; + } + break; + case 586782012: + var7 = this.getDefinition(var1); + if (var7 == null) { + var13 = 1397309898; + } else { + var13 = -1811201554; + } + break; + case 1397309898: + return; + case 1826892142: + if (var1.getTexture() != null) { + var13 = 144846617; + } else { + var13 = -1639383843; + } + break; + case 1895100616: + default: + if (var1 != null) { + var13 = 1826892142; + } else { + var13 = -1639383843; + } + } + } + } + + private String[] bonesFor(adr var1) { + aex var2 = null; + String[] var4 = null; + int var3 = 106102085; + + while (true) { + switch (var3) { + case -1936256210: + return var4; + case -1814980299: + var4 = var2.getBones(); + var3 = -1936256210; + break; + case 106102085: + default: + var2 = aey.byKey(skinKeyOf(var1)); + if (var2 == null) { + var3 = 1467284291; + } else { + var3 = -1814980299; + } + break; + case 1467284291: + var4 = aey.DEFAULT_BONES; + var3 = -1936256210; + } + } + } + + private static String skinKeyOf(adr var0) { + String var1 = null; + String var3 = null; + int var2 = 237772092; + + while (true) { + switch (var2) { + case -1635365052: + var3 = var1.substring("skin_".length()); + var2 = -1212753076; + break; + case -1212753076: + return var3; + case -509367014: + if (var1.startsWith("skin_")) { + var2 = -1635365052; + } else { + var2 = 563191589; + } + break; + case 237772092: + default: + var1 = var0.getName(); + if (var1 != null) { + var2 = -509367014; + } else { + var2 = 563191589; + } + break; + case 563191589: + var3 = null; + var2 = -1212753076; + } + } + } + + private aez capture(PlayerModel var1) { + aez var2 = new aez(); + var2.head = this.read(var1.head); + var2.body = this.read(var1.body); + var2.leftArm = this.read(var1.leftArm); + var2.rightArm = this.read(var1.rightArm); + var2.leftLeg = this.read(var1.leftLeg); + var2.rightLeg = this.read(var1.rightLeg); + return var2; + } + + private float[] read(ModelPart var1) { + float[] var10000 = new float[3]; + var10000[0] = var1.xRot; + var10000[1] = var1.yRot; + var10000[2] = var1.zRot; + return var10000; + } + + private void applyLimb(aif var1, Map var2, String var3, float[] var4) { + aig var5 = null; + float[] var6 = null; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float[] var11 = null; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var10 = -1276674618; + + while (true) { + switch (var10) { + case -1799572878: + var6 = var11; + if (var6 == null) { + var10 = -649643050; + } else { + var10 = -1506407850; + } + break; + case -1506407850: + var12 = var6[0]; + var10 = 902623392; + break; + case -1442011379: + var13 = var6[1]; + var10 = -824748215; + break; + case -1379252423: + var11 = null; + var10 = -1799572878; + break; + case -1324892016: + var14 = var6[2]; + var10 = -1130336547; + break; + case -1276674618: + default: + var5 = var1.findPart(var3).orElse(null); + if (var5 == null) { + var10 = 887898863; + } else { + var10 = -1033585392; + } + break; + case -1271497312: + var11 = (float[])var2.get(var3); + var10 = -1799572878; + break; + case -1130336547: + var9 = var14; + var5.setRotX(var7 + -1.0F * var4[0]); + var5.setRotY(var8 + -1.0F * var4[1]); + var5.setRotZ(var9 + 1.0F * var4[2]); + return; + case -1033585392: + if (var2 == null) { + var10 = -1379252423; + } else { + var10 = -1271497312; + } + break; + case -824748215: + var8 = var13; + if (var6 == null) { + var10 = 1083621007; + } else { + var10 = -1324892016; + } + break; + case -649643050: + var12 = 0.0F; + var10 = 902623392; + break; + case 382074024: + var13 = 0.0F; + var10 = -824748215; + break; + case 887898863: + return; + case 902623392: + var7 = var12; + if (var6 == null) { + var10 = 382074024; + } else { + var10 = -1442011379; + } + break; + case 1083621007: + var14 = 0.0F; + var10 = -1130336547; + } + } + } + + private void resetPose(aif var1, Map var2) { + Iterator var3 = null; + aig var4 = null; + int var5 = 1648782423; + + while (true) { + switch (var5) { + case -1966475986: + if (var3.hasNext()) { + var5 = -4758213; + } else { + var5 = -176562526; + } + break; + case -176562526: + return; + case -4758213: + var4 = (aig)var3.next(); + this.resetPart(var4, var2); + var5 = -1966475986; + break; + case 408171004: + var3 = var1.roots.iterator(); + var5 = -1966475986; + break; + case 677889050: + return; + case 1648782423: + default: + if (var2 == null) { + var5 = 677889050; + } else { + var5 = 408171004; + } + } + } + } + + private void resetPart(aig var1, Map var2) { + float[] var3 = null; + Iterator var4 = null; + aig var5 = null; + int var6 = -1402448596; + + while (true) { + switch (var6) { + case -1731495445: + return; + case -1712719242: + var5 = (aig)var4.next(); + this.resetPart(var5, var2); + var6 = 977807301; + break; + case -1402448596: + default: + var3 = (float[])var2.get(var1.name); + if (var3 != null) { + var6 = 1903215977; + } else { + var6 = 1875970965; + } + break; + case 977807301: + if (var4.hasNext()) { + var6 = -1712719242; + } else { + var6 = -1731495445; + } + break; + case 1875970965: + var4 = var1.children.iterator(); + var6 = 977807301; + break; + case 1903215977: + var1.setRotX(var3[0]); + var1.setRotY(var3[1]); + var1.setRotZ(var3[2]); + var1.setOffsetX(var3[3]); + var1.setOffsetY(var3[4]); + var1.setOffsetZ(var3[5]); + var1.setScaleX(var3[6]); + var1.setScaleY(var3[7]); + var1.setScaleZ(var3[8]); + var6 = 1875970965; + } + } + } + + private aif getDefinition(adr var1) { + int var2 = var1.getId(); + aif var3 = this.definitions.get(var2); + if (var3 != null) { + return var3; + } + + if (var1.getModelJson() == null) { + return null; + } + + aif var4 = aid.parse(var1.getModelJson()); + if (var4 != null) { + this.definitions.put(var2, var4); + this.basePoses.put(var2, this.snapshot(var4)); + this.squishyBones + .put( + var2, + Boolean.valueOf( + (boolean)(((!var4.findPart("Tail").isPresent() + && !var4.findPart("LeftEar").isPresent() + ? 0: (2109421097 | -2109421096) + (2109421097 & -2109421096)) + ) != 0)) + ); + } + + return var4; + } + + private Map snapshot(aif var1) { + HashMap var2 = null; + Iterator var3 = null; + aig var4 = null; + int var5 = 726176073; + + while (true) { + switch (var5) { + case -221141504: + if (var3.hasNext()) { + var5 = 268344796; + } else { + var5 = 1273061852; + } + break; + case 268344796: + var4 = (aig)var3.next(); + this.snapshotPart(var4, var2); + var5 = -221141504; + break; + case 726176073: + default: + var2 = new HashMap(); + var3 = var1.roots.iterator(); + var5 = -221141504; + break; + case 1273061852: + return var2; + } + } + } + + private void snapshotPart(aig var1, Map var2) { + Iterator var3 = null; + aig var4 = null; + int var5 = -359699979; + + while (true) { + switch (var5) { + case -367935243: + var4 = (aig)var3.next(); + this.snapshotPart(var4, var2); + var5 = 1614539902; + break; + case -359699979: + default: + String var10001 = var1.name; + float[] var10002 = new float[9]; + var10002[0] = var1.getRotX(); + var10002[1] = var1.getRotY(); + var10002[2] = var1.getRotZ(); + var10002[3] = var1.getOffsetX(); + var10002[4] = var1.getOffsetY(); + var10002[5] = var1.getOffsetZ(); + var10002[6] = var1.getScaleX(); + var10002[7] = var1.getScaleY(); + var10002[8] = var1.getScaleZ(); + var2.put(var10001, var10002); + var3 = var1.children.iterator(); + var5 = 1614539902; + break; + case -185204260: + return; + case 1614539902: + if (var3.hasNext()) { + var5 = -367935243; + } else { + var5 = -185204260; + } + } + } + } +} diff --git a/src/main/java/defpackage/afb.java b/src/main/java/defpackage/afb.java new file mode 100644 index 0000000..477ca20 --- /dev/null +++ b/src/main/java/defpackage/afb.java @@ -0,0 +1,74 @@ +package defpackage; + +public class afb { + private final float stiff; + private final float bounce; + private final Float lower; + private final Float upper; + public float pos; + public float vel; + + public afb(float var1, float var2) { + this(var1, var2, null, null); + } + + public afb(float var1, float var2, Float var3, Float var4) { + this.stiff = var1; + this.bounce = var2; + this.lower = var3; + this.upper = var4; + } + + public float berp(float var1, float var2) { + float var3 = 0.0F; + int var4 = 1969104770; + + while (true) { + switch (var4) { + case -2073311578: + if (this.lower != null) { + var4 = -122912529; + } else { + var4 = 1805291906; + } + break; + case -756082483: + if (this.pos > this.upper) { + var4 = 22484396; + } else { + var4 = -2073311578; + } + break; + case -305959689: + this.pos = this.lower; + this.vel = 0.0F; + var4 = 1805291906; + break; + case -122912529: + if (this.pos < this.lower) { + var4 = -305959689; + } else { + var4 = 1805291906; + } + break; + case 22484396: + this.pos = this.upper; + this.vel = 0.0F; + var4 = 1805291906; + break; + case 1805291906: + return this.pos; + case 1969104770: + default: + var3 = var1 - this.pos; + this.vel = this.vel + var3 * Math.min(this.stiff, 1.0F) * var2; + this.pos = this.pos + (var3 * (1.0F - Math.min(this.bounce, 1.0F)) + this.vel) * var2; + if (this.upper != null) { + var4 = -756082483; + } else { + var4 = -2073311578; + } + } + } + } +} diff --git a/src/main/java/defpackage/afc.java b/src/main/java/defpackage/afc.java new file mode 100644 index 0000000..6bfe504 --- /dev/null +++ b/src/main/java/defpackage/afc.java @@ -0,0 +1,57 @@ +package defpackage; + +public enum afc { + AVIAN("avian"), + INSECTOID("insectoid"), + DRACONIC("dragon"), + ANGELIC("angel"), + DEMONIC("demon"), + PULSE("pulse", 1.0F, -1.2F, 0.0F), + DARK("dark", 0.9F, -1.05F, 0.05F), + GHOUL("ghoul", 0.6F, -0.65F, 0.0F), + ROCKER("rocker", 0.9F, -1.05F, 0.0F), + WOTA("wota", 0.9F, -1.05F, 0.0F), + TRIDENT("trident", 0.9F, -1.05F, 0.2F), + EASTER("easter", 0.9F, -1.05F, 0.0F), + BLUE_DRAGON("blue_dragon", 0.9F, -1.05F, 0.0F), + SPIDER("spider", 1.0F, 0.0F, 0.0F), + VULCANO("vulcano", 1.0F, 0.0F, 0.0F); + + final String geometry; + final float scale; + final float offsetY; + final float offsetZ; + final boolean bundled; + + afc(String var3) { + this.geometry = var3; + this.scale = 1.0F; + this.offsetY = 0.45F; + this.offsetZ = 0.0F; + this.bundled = (boolean)(((0)) != 0); + } + + afc(String var3, float var4, float var5, float var6) { + this.geometry = var3; + this.scale = var4; + this.offsetY = var5; + this.offsetZ = var6; + this.bundled = (boolean)(((1)) != 0); + } + + public float getScale() { + return this.scale; + } + + public float getPreviewOffsetY() { + return this.offsetY - 0.45F; + } + + public float getOffsetZ() { + return this.offsetZ; + } + + public boolean isBundled() { + return this.bundled; + } +} diff --git a/src/main/java/defpackage/afd.java b/src/main/java/defpackage/afd.java new file mode 100644 index 0000000..80e4aef --- /dev/null +++ b/src/main/java/defpackage/afd.java @@ -0,0 +1,66 @@ +package defpackage; + +import net.minecraft.resources.Identifier; + +public final class afd { + private final String key; + private final String displayName; + private final afc type; + private final Identifier texture; + private final int id; + + afd(String var1, String var2, afc var3) { + this.key = var1; + this.displayName = var2; + this.type = var3; + this.id = ("wing_" + var1).hashCode(); + this.texture = var3 == afc.WOTA + ? adi.register( + var1, + "/assets/evolution/textures/cosmetic/wings/wota.png", + 64, + (-2017043849 | 2017043999) + (-2017043849 & 2017043999) + ) + : Identifier.fromNamespaceAndPath( + "evolution", "textures/cosmetic/wings/" + var1 + ".png" + ); + } + + public String getKey() { + return this.key; + } + + public String getDisplayName() { + return this.displayName; + } + + public afc getType() { + return this.type; + } + + public Identifier getTexture() { + int var1 = 1217062187; + + while (true) { + switch (var1) { + case -275318857: + adi.tick(); + var1 = -182270863; + break; + case -182270863: + return this.texture; + case 1217062187: + default: + if (this.type == afc.WOTA) { + var1 = -275318857; + } else { + var1 = -182270863; + } + } + } + } + + public int getId() { + return this.id; + } +} diff --git a/src/main/java/defpackage/afe.java b/src/main/java/defpackage/afe.java new file mode 100644 index 0000000..3fa2e4e --- /dev/null +++ b/src/main/java/defpackage/afe.java @@ -0,0 +1,681 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.Minecraft; + +public final class afe { + private static final List WINGS = new ArrayList<>(); + private static final List WING_CATALOG = Collections.unmodifiableList(WINGS); + private static final Map GEOMETRY_CACHE = new ConcurrentHashMap<>(); + private static final Map MODEL_CACHE = new ConcurrentHashMap<>(); + private static final Map ANIMATION_CACHE = new ConcurrentHashMap<>(); + private static final float DEFAULT_OFFSET_Y = 0.45F; + private static final String WOTA_TEXTURE_RESOURCE = "/assets/evolution/textures/cosmetic/wings/wota.png"; + private static final int WOTA_FRAME_HEIGHT = 64; + private static final int WOTA_FRAME_MILLIS = 150; + private static final String RESOURCE_ROOT = "/assets/evolution/cosmetic/wings/"; + private static final String RESOURCE_FAILURE = "wing resource load failed: {}"; + private static final String REGISTRATION_FAILURE = "wing registration failed: {}"; + private static final String PREVIEW_FAILURE = "wing preview pose failed: {}"; + private static final String AVIAN_ANIM = "{\"sway\":{\"loop\":true,\"animation_length\":2.4,\"bones\":{\"left_coracoid\":{\"rotation\":{\"0.0\":[0,0,0],\"0.3\":[0,10,0],\"0.6\":[0,14,0],\"0.9\":[0,10,0],\"1.2\":[0,0,0],\"1.5\":[0,-10,0],\"1.8\":[0,-14,0],\"2.1\":[0,-10,0],\"2.4\":[0,0,0]}},\"right_coracoid\":{\"rotation\":{\"0.0\":[0,0,0],\"0.3\":[0,-10,0],\"0.6\":[0,-14,0],\"0.9\":[0,-10,0],\"1.2\":[0,0,0],\"1.5\":[0,10,0],\"1.8\":[0,14,0],\"2.1\":[0,10,0],\"2.4\":[0,0,0]}},\"left_humerus\":{\"rotation\":{\"0.0\":[0,0,0],\"0.3\":[0,6,0],\"0.6\":[0,8,0],\"0.9\":[0,6,0],\"1.2\":[0,0,0],\"1.5\":[0,-6,0],\"1.8\":[0,-8,0],\"2.1\":[0,-6,0],\"2.4\":[0,0,0]}},\"right_humerus\":{\"rotation\":{\"0.0\":[0,0,0],\"0.3\":[0,-6,0],\"0.6\":[0,-8,0],\"0.9\":[0,-6,0],\"1.2\":[0,0,0],\"1.5\":[0,6,0],\"1.8\":[0,8,0],\"2.1\":[0,6,0],\"2.4\":[0,0,0]}}}}}"; + private static final String INSECTOID_ANIM = "{\"sway\":{\"loop\":true,\"animation_length\":2.0,\"bones\":{\"left_wing\":{\"rotation\":{\"0.0\":[0,0,0],\"0.25\":[0,7,0],\"0.5\":[0,10,0],\"0.75\":[0,7,0],\"1.0\":[0,0,0],\"1.25\":[0,-7,0],\"1.5\":[0,-10,0],\"1.75\":[0,-7,0],\"2.0\":[0,0,0]}},\"right_wing\":{\"rotation\":{\"0.0\":[0,0,0],\"0.25\":[0,-7,0],\"0.5\":[0,-10,0],\"0.75\":[0,-7,0],\"1.0\":[0,0,0],\"1.25\":[0,7,0],\"1.5\":[0,10,0],\"1.75\":[0,7,0],\"2.0\":[0,0,0]}}}}}"; + private static final String DRACONIC_ANIM = "{\"procedural\":\"dragon_wings\"}"; + private static final String ANGELIC_ANIM = "{\"procedural\":\"angel_wings\"}"; + private static final String DEMONIC_ANIM = "{\"procedural\":\"demon_wings\"}"; + + private afe() { + } + + public static List all() { + return WING_CATALOG; + } + + private static String geometry(afc var0) { + return GEOMETRY_CACHE.computeIfAbsent(var0.geometry, var0x -> readResource(var0x + ".geo.json")); + } + + private static String readResource(String var0) { + try (InputStream var1 = afe.class.getResourceAsStream("/assets/evolution/cosmetic/wings/" + var0)) { + if (var1 == null) { + id.warn( + Cif.COSMETIC, + "wing resource load failed: {}", + var0 + ); + return ""; + } else { + return new String(var1.readAllBytes(), StandardCharsets.UTF_8); + } + } catch (Exception var6) { + id.warn( + Cif.COSMETIC, + "wing resource load failed: {}", + var0, + var6 + ); + return ""; + } + } + + public static aif model(afc var0) { + String var1 = null; + int var2 = 629843627; + + while (true) { + switch (var2) { + case -1216679208: + return MODEL_CACHE.computeIfAbsent( + var0, + var1x -> { + aif var2x = aid.parse(var1); + if (var2x != null && var1x.bundled) { + try { + applyPreviewPose(var2x, var1x); + } catch (Exception var4) { + id.warn( + Cif.COSMETIC, + "wing preview pose failed: {}", + var1x.geometry, + var4 + ); + return null; + } + } + + return var2x; + } + ); + case 629843627: + default: + var1 = geometry(var0); + if (var1.isEmpty()) { + var2 = 1346121305; + } else { + var2 = -1216679208; + } + break; + case 1346121305: + return null; + } + } + } + + private static String bundledAnimation(afc var0) { + return ANIMATION_CACHE.computeIfAbsent(var0.geometry, var0x -> readResource(var0x + ".animation.json")); + } + + private static void applyPreviewPose(aif var0, afc var1) { + JsonObject var2 = null; + JsonObject var3 = null; + Iterator var4 = null; + Entry var5 = null; + aig var6 = null; + JsonObject var7 = null; + JsonArray var8 = null; + int var9 = -2140236031; + + while (true) { + switch (var9) { + case -2140236031: + default: + var2 = JsonParser.parseString(bundledAnimation(var1)).getAsJsonObject(); + var3 = ((JsonElement)((Entry)var2.entrySet().iterator().next()).getValue()) + .getAsJsonObject() + .getAsJsonObject("bones"); + var4 = var3.entrySet().iterator(); + var9 = -1413634836; + break; + case -1605913031: + var8 = firstKeyframe(var7.getAsJsonObject("rotation")); + var6.setRotX(var6.getRotX() - (float)Math.toRadians(var8.get(0).getAsFloat())); + var6.setRotY(var6.getRotY() - (float)Math.toRadians(var8.get(1).getAsFloat())); + var6.setRotZ(var6.getRotZ() + (float)Math.toRadians(var8.get(2).getAsFloat())); + var9 = -1295835174; + break; + case -1546767056: + var5 = (Entry)var4.next(); + var6 = var0.findPart((String)var5.getKey()).orElse(null); + if (var6 == null) { + var9 = -1261511065; + } else { + var9 = 1237765057; + } + break; + case -1413634836: + if (var4.hasNext()) { + var9 = -1546767056; + } else { + var9 = 1690675616; + } + break; + case -1295835174: + if (var7.has("position")) { + var9 = 1140881155; + } else { + var9 = 1708128687; + } + break; + case -1261511065: + var9 = -1413634836; + break; + case 14661207: + var8 = firstKeyframe(var7.getAsJsonObject("scale")); + var6.setScaleX(var8.get(0).getAsFloat()); + var6.setScaleY(var8.get(1).getAsFloat()); + var6.setScaleZ(var8.get(2).getAsFloat()); + var9 = 415851837; + break; + case 415851837: + var9 = -1413634836; + break; + case 1140881155: + var8 = firstKeyframe(var7.getAsJsonObject("position")); + var6.setOffsetX(var8.get(0).getAsFloat()); + var6.setOffsetY(var8.get(1).getAsFloat()); + var6.setOffsetZ(var8.get(2).getAsFloat()); + var9 = 1708128687; + break; + case 1237765057: + var7 = ((JsonElement)var5.getValue()).getAsJsonObject(); + if (var7.has("rotation")) { + var9 = -1605913031; + } else { + var9 = -1295835174; + } + break; + case 1690675616: + return; + case 1708128687: + if (var7.has("scale")) { + var9 = 14661207; + } else { + var9 = 415851837; + } + } + } + } + + private static JsonArray firstKeyframe(JsonObject var0) { + float var1 = 0.0F; + JsonArray var2 = null; + Iterator var3 = null; + Entry var4 = null; + float var5 = 0.0F; + int var6 = -1283638076; + + while (true) { + switch (var6) { + case -2016885582: + if (var2.size() != (1001941650 | -1001941647) + (1001941650 & -1001941647)) { + var6 = -1230043947; + } else { + var6 = -1309205546; + } + break; + case -1943763413: + var1 = var5; + var2 = ((JsonElement)var4.getValue()).getAsJsonArray(); + var6 = -324112126; + break; + case -1309205546: + return var2; + case -1283638076: + default: + var1 = Float.POSITIVE_INFINITY; + var2 = null; + var3 = var0.entrySet().iterator(); + var6 = 79908556; + break; + case -1230043947: + throw new IllegalArgumentException( + "wing preview pose failed: {}" + ); + case -324112126: + var6 = 79908556; + break; + case -205605055: + if (var2 != null) { + var6 = -2016885582; + } else { + var6 = -1230043947; + } + break; + case 79908556: + if (var3.hasNext()) { + var6 = 1527022328; + } else { + var6 = -205605055; + } + break; + case 1527022328: + var4 = (Entry)var3.next(); + var5 = Float.parseFloat((String)var4.getKey()); + if (var5 < var1) { + var6 = -1943763413; + } else { + var6 = -324112126; + } + } + } + } + + public static afd byKey(String var0) { + Iterator var1 = null; + afd var2 = null; + int var3 = -689951324; + + while (true) { + switch (var3) { + case -1019380921: + var3 = 1340619064; + break; + case -689951324: + default: + if (var0 == null) { + var3 = 1705477569; + } else { + var3 = -229437644; + } + break; + case -581384731: + return var2; + case -229437644: + var1 = WINGS.iterator(); + var3 = 1340619064; + break; + case 920961176: + var2 = (afd)var1.next(); + if (var2.getKey().equals(var0)) { + var3 = -581384731; + } else { + var3 = -1019380921; + } + break; + case 1332750716: + return null; + case 1340619064: + if (var1.hasNext()) { + var3 = 920961176; + } else { + var3 = 1332750716; + } + break; + case 1705477569: + return null; + } + } + } + + public static String equippedKey(String var0) { + Iterator var1 = null; + afd var2 = null; + int var3 = 2134653216; + + while (true) { + switch (var3) { + case -1037336661: + return var2.getKey(); + case -795153479: + return null; + case -635054916: + if (var1.hasNext()) { + var3 = -323084347; + } else { + var3 = -194291198; + } + break; + case -323084347: + var2 = (afd)var1.next(); + if (adq.getInstance().hasCosmetic(var0, var2.getId())) { + var3 = -1037336661; + } else { + var3 = 382186671; + } + break; + case -194291198: + return null; + case 382186671: + var3 = -635054916; + break; + case 2130190198: + var1 = WINGS.iterator(); + var3 = -635054916; + break; + case 2134653216: + default: + if (var0 == null) { + var3 = -795153479; + } else { + var3 = 2130190198; + } + } + } + } + + public static boolean isEquipped(afd var0) { + String var1 = null; + int var3 = 0; + int var2 = 1380404513; + + while (true) { + switch (var2) { + case -777896895: + if (adq.getInstance().hasCosmetic(var1, var0.getId())) { + var2 = -205186555; + } else { + var2 = 1735516318; + } + break; + case -205186555: + var3 = 1; + var2 = -67718807; + break; + case -67718807: + return (boolean)((var3) != 0); + case 1380404513: + default: + var1 = localName(); + if (var1 != null) { + var2 = -777896895; + } else { + var2 = 1735516318; + } + break; + case 1735516318: + var3 = 0; + var2 = -67718807; + } + } + } + + public static void unequipAll() { + unequipAll(localName()); + } + + public static void unequipAll(String var0) { + Iterator var1 = null; + afd var2 = null; + int var3 = 1770401777; + + while (true) { + switch (var3) { + case -1436842194: + if (var1.hasNext()) { + var3 = -1014442204; + } else { + var3 = 322769396; + } + break; + case -1014442204: + var2 = (afd)var1.next(); + adq.getInstance().unassign(var0, var2.getId()); + var3 = -1436842194; + break; + case -469360799: + return; + case 106828191: + var1 = WINGS.iterator(); + var3 = -1436842194; + break; + case 322769396: + return; + case 1770401777: + default: + if (var0 == null) { + var3 = -469360799; + } else { + var3 = 106828191; + } + } + } + } + + public static void equip(afd var0) { + String var1 = null; + int var2 = 1802554427; + + while (true) { + switch (var2) { + case 202632965: + if (isEquipped(var0)) { + var2 = 1198046002; + } else { + var2 = 1480411736; + } + break; + case 1198046002: + adq.getInstance().unassign(var1, var0.getId()); + return; + case 1480411736: + applyKey(var1, var0.getKey()); + return; + case 1802554427: + default: + var1 = localName(); + if (var1 == null) { + var2 = 2079762500; + } else { + var2 = 202632965; + } + break; + case 2079762500: + return; + } + } + } + + public static void applyKey(String var0, String var1) { + if (var0 != null) { + afd var2 = byKey(var1); + if (var2 == null) { + unequipAll(var0); + } else { + adr var3 = aea.getInstance().get(var2.getId()); + if (var3 != null) { + unequipAll(var0); + adq.getInstance().setEnabled((boolean)((((762660649 ^ -762660648) + ((762660649 & -762660648) << 1))) != 0)); + adq.getInstance().assign(var0, var3.getId()); + } else { + String var4 = geometry(var2.getType()); + if (!var4.isEmpty()) { + afc var5 = var2.getType(); + String var10000; + if (var5.bundled) { + var10000 = bundledAnimation(var5); + } else { + switch (var5) { + case INSECTOID: + var10000 = "{\"sway\":{\"loop\":true,\"animation_length\":2.0,\"bones\":{\"left_wing\":{\"rotation\":{\"0.0\":[0,0,0],\"0.25\":[0,7,0],\"0.5\":[0,10,0],\"0.75\":[0,7,0],\"1.0\":[0,0,0],\"1.25\":[0,-7,0],\"1.5\":[0,-10,0],\"1.75\":[0,-7,0],\"2.0\":[0,0,0]}},\"right_wing\":{\"rotation\":{\"0.0\":[0,0,0],\"0.25\":[0,-7,0],\"0.5\":[0,-10,0],\"0.75\":[0,-7,0],\"1.0\":[0,0,0],\"1.25\":[0,7,0],\"1.5\":[0,10,0],\"1.75\":[0,7,0],\"2.0\":[0,0,0]}}}}}"; + break; + case DRACONIC: + var10000 = "{\"procedural\":\"dragon_wings\"}"; + break; + case ANGELIC: + var10000 = "{\"procedural\":\"angel_wings\"}"; + break; + case DEMONIC: + var10000 = "{\"procedural\":\"demon_wings\"}"; + break; + default: + var10000 = "{\"sway\":{\"loop\":true,\"animation_length\":2.4,\"bones\":{\"left_coracoid\":{\"rotation\":{\"0.0\":[0,0,0],\"0.3\":[0,10,0],\"0.6\":[0,14,0],\"0.9\":[0,10,0],\"1.2\":[0,0,0],\"1.5\":[0,-10,0],\"1.8\":[0,-14,0],\"2.1\":[0,-10,0],\"2.4\":[0,0,0]}},\"right_coracoid\":{\"rotation\":{\"0.0\":[0,0,0],\"0.3\":[0,-10,0],\"0.6\":[0,-14,0],\"0.9\":[0,-10,0],\"1.2\":[0,0,0],\"1.5\":[0,10,0],\"1.8\":[0,14,0],\"2.1\":[0,10,0],\"2.4\":[0,0,0]}},\"left_humerus\":{\"rotation\":{\"0.0\":[0,0,0],\"0.3\":[0,6,0],\"0.6\":[0,8,0],\"0.9\":[0,6,0],\"1.2\":[0,0,0],\"1.5\":[0,-6,0],\"1.8\":[0,-8,0],\"2.1\":[0,-6,0],\"2.4\":[0,0,0]}},\"right_humerus\":{\"rotation\":{\"0.0\":[0,0,0],\"0.3\":[0,-6,0],\"0.6\":[0,-8,0],\"0.9\":[0,-6,0],\"1.2\":[0,0,0],\"1.5\":[0,6,0],\"1.8\":[0,8,0],\"2.1\":[0,6,0],\"2.4\":[0,0,0]}}}}}"; + } + } + + String var6 = var10000; + if (!var6.isEmpty()) { + String var7 = "{\"name\":\"wing_" + + var2.getKey() + + "\",\"id\":" + + var2.getId() + + ",\"attachment\":1,\"scale\":" + + var5.scale + + ",\"offset\":[0," + + var5.offsetY + + "," + + var5.offsetZ + + "],\"rotation\":[0,0,0],\"animation\":" + + var6 + + ",\"model\":" + + var4 + + "}"; + adr var8 = adq.getInstance().registerWithTexture(var7, var2.getTexture()); + if (var8 != null) { + unequipAll(var0); + adq.getInstance().setEnabled((boolean)((((564921891 ^ -564921890) + ((564921891 & -564921890) << 1))) != 0)); + adq.getInstance().assign(var0, var8.getId()); + } else { + id.warn( + Cif.COSMETIC, + "wing registration failed: {}", + var2.getKey() + ); + } + } + } + } + } + } + } + + private static String localName() { + Minecraft var0 = null; + String var2 = null; + int var1 = 1293724248; + + while (true) { + switch (var1) { + case -1859166375: + return var2; + case -542931694: + var2 = null; + var1 = -1859166375; + break; + case 1293724248: + default: + var0 = Minecraft.getInstance(); + if (var0.player == null) { + var1 = -542931694; + } else { + var1 = 1884459163; + } + break; + case 1884459163: + var2 = var0.player.getScoreboardName(); + var1 = -1859166375; + } + } + } + + static { + WINGS.add( + new afd( + "baby_dragon_white", + "Baby Dragon (White)", + afc.DRACONIC + ) + ); + WINGS.add( + new afd( + "angel_white", + "Angel (White)", + afc.ANGELIC + ) + ); + WINGS.add( + new afd( + "demon_red", + "Demon (Red)", + afc.DEMONIC + ) + ); + WINGS.add( + new afd( + "demon_black", + "Demon (Black)", + afc.DEMONIC + ) + ); + WINGS.add( + new afd( + "pulse", + "Pulse Wings", + afc.PULSE + ) + ); + WINGS.add( + new afd( + "dark", + "Dark Wings", + afc.DARK + ) + ); + WINGS.add( + new afd( + "ghoul", + "Ghoul Wings", + afc.GHOUL + ) + ); + WINGS.add( + new afd( + "rocker", + "Rocker Wings", + afc.ROCKER + ) + ); + WINGS.add( + new afd( + "wota", + "Wota Wings", + afc.WOTA + ) + ); + WINGS.add( + new afd( + "trident", + "Trident Wings", + afc.TRIDENT + ) + ); + WINGS.add( + new afd( + "easter", + "Easter Wings", + afc.EASTER + ) + ); + WINGS.add( + new afd( + "blue_dragon", + "Dragon Wings (Blue)", + afc.BLUE_DRAGON + ) + ); + WINGS.add( + new afd( + "spider", + "Spider Wings", + afc.SPIDER + ) + ); + WINGS.add( + new afd( + "vulcano", + "Vulcano Wings", + afc.VULCANO + ) + ); + } +} diff --git a/src/main/java/defpackage/aff.java b/src/main/java/defpackage/aff.java new file mode 100644 index 0000000..257e3ba --- /dev/null +++ b/src/main/java/defpackage/aff.java @@ -0,0 +1,8 @@ +package defpackage; + +public enum aff { + NONE, + CAMERA, + TRIPOD, + PHOTO; +} diff --git a/src/main/java/defpackage/afg.java b/src/main/java/defpackage/afg.java new file mode 100644 index 0000000..074c12c --- /dev/null +++ b/src/main/java/defpackage/afg.java @@ -0,0 +1,25 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:afg.class */ +/* synthetic */ class afg { + static final /* synthetic */ int[] $SwitchMap$evo$systems$cosmetic$camera$CameraGear = new int[aff.values().length]; + + static { + try { + $SwitchMap$evo$systems$cosmetic$camera$CameraGear[aff.CAMERA.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$cosmetic$camera$CameraGear[aff.TRIPOD.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$cosmetic$camera$CameraGear[aff.PHOTO.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$cosmetic$camera$CameraGear[aff.NONE.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + } +} diff --git a/src/main/java/defpackage/afh.java b/src/main/java/defpackage/afh.java new file mode 100644 index 0000000..598d135 --- /dev/null +++ b/src/main/java/defpackage/afh.java @@ -0,0 +1,243 @@ +package defpackage; + +import net.minecraft.resources.Identifier; + +public final class afh { + private static final int HOTBAR_SIZE = 9; + private static final float VANILLA_HALF_WIDTH = 91.0F; + private static final float VANILLA_STEP = 20.0F; + private static final float VANILLA_ICON_INSET = 3.0F; + private static final float VANILLA_BAR_HEIGHT = 22.0F; + private static final float VANILLA_ICON_SIZE = 16.0F; + private static final int CAMERA_BODY = -14013133; + private static final int CAMERA_TRIM = -11906983; + private static final int LENS_OUTER = -4603188; + private static final int LENS_INNER = -13668956; + private static final int FLASH_DOT = -854793; + private static final int TRIPOD_METAL = -9998728; + private static final int PHOTO_PAPER = -724502; + private static final int PHOTO_EMPTY = -7433317; + private static final float LEG_ANGLE = 0.38F; + private static final float LEG_THICKNESS = 0.08F; + private static final float LEG_LENGTH = 0.58F; + private static final float SELECTED_ALPHA = 1.0F; + private static final float IDLE_ALPHA = 0.82F; + private static float originX; + private static float originY; + private static float slotSize; + private static boolean published; + private static boolean glassHotbar; + + private afh() { + } + + public static void publish(float var0, float var1, float var2) { + originX = var0; + originY = var1; + slotSize = var2; + published = (boolean)(((1)) != 0); + } + + public static float hotbarTop() { + int var0 = -1262906254; + + while (true) { + switch (var0) { + case -1262906254: + default: + if (glassHotbar) { + var0 = 1935581213; + } else { + var0 = 1487266487; + } + break; + case 1487266487: + return aqg.mc.getWindow().getGuiScaledHeight() - 22.0F; + case 1935581213: + return originY; + } + } + } + + public static void render() { + boolean var0 = published; + published = (boolean)(((0)) != 0); + glassHotbar = var0; + tb var1 = tb.INSTANCE; + if (var1.isEnabled() && aqg.mc.player != null && aqg.mc.level != null) { + if (aqg.mc.gui.screen() == null && api.hudOverlaysVisible()) { + afi var2 = afi.getInstance(); + float var3 = var0 ? slotSize : 20.0F; + float var4 = var0 ? slotSize : 16.0F; + float var5 = var0 ? originX : aqg.mc.getWindow().getGuiScaledWidth() * 0.5F - 91.0F + 3.0F; + float var6 = var0 ? originY : aqg.mc.getWindow().getGuiScaledHeight() - 22.0F + 3.0F; + int var7 = !atf.isRecording() + ? 1: 0; + atb.beginGui(); + if (var7 != 0) { + atf.begin(); + } + + try { + asq var8 = asq.of(0, 0, 0.0F); + mv var9 = bz.getInstance().getThemeManager().getCurrentTheme(); + int var10 = aqg.mc.player.getInventory().getSelectedSlot(); + + for (int var11 = 0; + var11 < 9; + var11++ + ) { + aff var12 = var2.gearAt(var11); + if (var12 != aff.NONE) { + float var13 = var11 == var10 ? 1.0F : 0.82F; + drawGear(var8, var9, var12, var5 + var11 * var3, var6, var4, var13, var2.photoId()); + } + } + } finally { + if (var7 != 0) { + atf.end(); + } + + atb.endGui(); + } + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static void drawGear(asq var0, mv var1, aff var2, float var3, float var4, float var5, float var6, String var7) { + float var8 = var5 * 0.1F; + float var9 = var3 + var8; + float var10 = var4 + var8; + float var11 = var5 - var8 * 2.0F; + switch (afg.$SwitchMap$evo$systems$cosmetic$camera$CameraGear[var2.ordinal()]) { + case 1: + drawCamera(var0, var9, var10, var11, var6); + break; + case 2: + drawTripod(var0, var9, var10, var11, var6); + break; + case 3: + drawPhoto(var0, var1, var9, var10, var11, var6, var7); + case 4: + } + } + + private static void drawCamera(asq var0, float var1, float var2, float var3, float var4) { + var0.drawRoundedRect( + var1 + var3 * 0.28F, + var2 + var3 * 0.12F, + var3 * 0.3F, + var3 * 0.14F, + asj.uniform(var3 * 0.04F), + color(-11906983, var4) + ); + var0.drawRoundedRect( + var1, var2 + var3 * 0.22F, var3, var3 * 0.62F, asj.uniform(var3 * 0.14F), color(-14013133, var4) + ); + var0.drawRoundedRect( + var1 + var3 * 0.3F, + var2 + var3 * 0.34F, + var3 * 0.38F, + var3 * 0.38F, + asj.uniform(var3 * 0.19F), + color(-4603188, var4) + ); + var0.drawRoundedRect( + var1 + var3 * 0.38F, + var2 + var3 * 0.42F, + var3 * 0.22F, + var3 * 0.22F, + asj.uniform(var3 * 0.11F), + color(-13668956, var4) + ); + var0.drawRoundedRect( + var1 + var3 * 0.76F, + var2 + var3 * 0.3F, + var3 * 0.14F, + var3 * 0.1F, + asj.uniform(var3 * 0.03F), + color(-854793, var4) + ); + } + + private static void drawTripod(asq var0, float var1, float var2, float var3, float var4) { + asu var5 = color(-9998728, var4); + var0.drawRoundedRect( + var1 + var3 * 0.26F, + var2 + var3 * 0.1F, + var3 * 0.48F, + var3 * 0.16F, + asj.uniform(var3 * 0.05F), + color(-14013133, var4) + ); + float var6 = var1 + var3 * 0.5F; + float var7 = var2 + var3 * 0.26F; + drawLeg(var0, var6, var7, var3, 0.0F, var5); + drawLeg(var0, var6, var7, var3, 0.38F, var5); + drawLeg(var0, var6, var7, var3, -0.38F, var5); + } + + private static void drawLeg(asq var0, float var1, float var2, float var3, float var4, asu var5) { + float var6 = var3 * 0.08F; + var0.pushMatrix(); + var0.pose().translate(var1, var2); + var0.pose().rotate(var4); + var0.drawRoundedRect(-var6 * 0.5F, 0.0F, var6, var3 * 0.58F, asj.uniform(var6 * 0.5F), var5); + var0.popMatrix(); + } + + private static void drawPhoto(asq var0, mv var1, float var2, float var3, float var4, float var5, String var6) { + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + Identifier var11 = null; + Identifier var13 = null; + int var12 = -7951761; + + while (true) { + switch (var12) { + case -1942064953: + var11 = var13; + if (var11 == null) { + var12 = 518052818; + } else { + var12 = -138938744; + } + break; + case -404219330: + var13 = age.getInstance().texture(var6); + var12 = -1942064953; + break; + case -138938744: + atb.drawRoundedTexture(var0.pose(), var11, var8, var9, var10, var10, asj.uniform(var4 * 0.04F), asu.WHITE.mulAlpha(var5)); + return; + case -7951761: + default: + var0.drawRoundedRect(var2, var3, var4, var4, asj.uniform(var4 * 0.08F), color(-724502, var5)); + var7 = var4 * 0.12F; + var8 = var2 + var7; + var9 = var3 + var7; + var10 = var4 - var7 * 2.0F; + if (var6 == null) { + var12 = 923462286; + } else { + var12 = -404219330; + } + break; + case 518052818: + var0.drawRoundedRect(var8, var9, var10, var10, asj.uniform(var4 * 0.04F), color(-7433317, var5)); + return; + case 923462286: + var13 = null; + var12 = -1942064953; + } + } + } + + private static asu color(int var0, float var1) { + return new asu(var0).mulAlpha(var1); + } +} diff --git a/src/main/java/defpackage/afi.java b/src/main/java/defpackage/afi.java new file mode 100644 index 0000000..460ca24 --- /dev/null +++ b/src/main/java/defpackage/afi.java @@ -0,0 +1,329 @@ +package defpackage; + +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.item.ItemStack; + +public final class afi { + private static final afi INSTANCE = new afi(); + private static final int HOTBAR_SIZE = 9; + private static final int NO_SLOT = -1; + private final aff[] slots = new aff[9]; + private String photoId; + + private afi() { + this.clear(); + } + + public static afi getInstance() { + return INSTANCE; + } + + public String photoId() { + return this.photoId; + } + + public void setPhoto(String var1) { + this.photoId = var1; + } + + public void clear() { + int var1 = 0; + int var2 = -866943387; + + while (true) { + switch (var2) { + case -1440111182: + this.slots[var1] = aff.NONE; + var1++; + var2 = 367663142; + break; + case -1347946228: + return; + case -866943387: + default: + var1 = 0; + var2 = 367663142; + break; + case 367663142: + if (var1 < (1479318649 | -1479318640) + (1479318649 & -1479318640)) { + var2 = -1440111182; + } else { + var2 = -1347946228; + } + } + } + } + + public void update(boolean var1) { + int var2 = -372549761; + + while (true) { + switch (var2) { + case -1674216877: + return; + case -1459683287: + this.release(aff.PHOTO); + var2 = -1674216877; + break; + case -674721434: + this.clear(); + return; + case -372549761: + default: + if (var1) { + var2 = 745598242; + } else { + var2 = -674721434; + } + break; + case 745598242: + if (aqg.mc.player == null) { + var2 = -674721434; + } else { + var2 = 1602581064; + } + break; + case 1060275550: + this.assign(aff.PHOTO); + var2 = -1674216877; + break; + case 1602581064: + this.assign(aff.CAMERA); + this.assign(aff.TRIPOD); + if (this.photoId == null) { + var2 = -1459683287; + } else { + var2 = 1060275550; + } + } + } + } + + public aff gearAt(int var1) { + int var2 = 1748884449; + + while (true) { + switch (var2) { + case -2036970858: + if (!this.isEmpty(var1)) { + var2 = -1692758510; + } else { + var2 = -1241867014; + } + break; + case -1692758510: + return aff.NONE; + case -1241867014: + return this.slots[var1]; + case 1047985513: + if (var1 < (490523448 ^ -490523439) + ((490523448 & -490523439) << 1)) { + var2 = -2036970858; + } else { + var2 = -1692758510; + } + break; + case 1748884449: + default: + if (var1 >= 0) { + var2 = 1047985513; + } else { + var2 = -1692758510; + } + } + } + } + + public aff heldGear() { + LocalPlayer var1 = null; + int var2 = -115620952; + + while (true) { + switch (var2) { + case -115620952: + default: + var1 = aqg.mc.player; + if (var1 == null) { + var2 = 1464419287; + } else { + var2 = 863318467; + } + break; + case 863318467: + return this.gearAt(var1.getInventory().getSelectedSlot()); + case 1464419287: + return aff.NONE; + } + } + } + + public int slotOf(aff var1) { + int var2 = 0; + int var3 = -798075848; + + while (true) { + switch (var3) { + case -1369910735: + if (this.slots[var2] == var1) { + var3 = -362944417; + } else { + var3 = 94255499; + } + break; + case -798075848: + default: + var2 = 0; + var3 = -605043233; + break; + case -605043233: + if (var2 < (1509916359 ^ -1509916350) + ((1509916359 & -1509916350) << 1)) { + var3 = -1369910735; + } else { + var3 = 1682693596; + } + break; + case -362944417: + return var2; + case 94255499: + var2++; + var3 = -605043233; + break; + case 1682693596: + return -1; + } + } + } + + private void assign(aff var1) { + int var2 = 0; + int var3 = 0; + int var4 = 772346072; + + while (true) { + switch (var4) { + case -1977303687: + if (this.isEmpty(var2)) { + var4 = 156663944; + } else { + var4 = -1444792497; + } + break; + case -1738004232: + if (var3 < (190346336 ^ -190346327) + ((190346336 & -190346327) << 1)) { + var4 = -359515415; + } else { + var4 = -171709596; + } + break; + case -1444792497: + this.release(var1); + var3 = 0; + var4 = -1738004232; + break; + case -359515415: + if (this.slots[var3] == aff.NONE) { + var4 = 1397777037; + } else { + var4 = 1431161795; + } + break; + case -171709596: + return; + case 156663944: + return; + case 772346072: + default: + var2 = this.slotOf(var1); + if (var2 != (-2144193366 | 2144193365) + (-2144193366 & 2144193365)) { + var4 = -1977303687; + } else { + var4 = -1444792497; + } + break; + case 826128876: + this.slots[var3] = var1; + return; + case 1397777037: + if (this.isEmpty(var3)) { + var4 = 826128876; + } else { + var4 = 1431161795; + } + break; + case 1431161795: + var3++; + var4 = -1738004232; + } + } + } + + private void release(aff var1) { + int var2 = 0; + int var3 = 2101488927; + + while (true) { + switch (var3) { + case -2066880708: + return; + case -786530887: + this.slots[var2] = aff.NONE; + var3 = -2066880708; + break; + case 2101488927: + default: + var2 = this.slotOf(var1); + if (var2 != (-523005963 ^ 523005962) + ((-523005963 & 523005962) << 1)) { + var3 = -786530887; + } else { + var3 = -2066880708; + } + } + } + } + + private boolean isEmpty(int var1) { + LocalPlayer var2 = null; + ItemStack var3 = null; + int var5 = 0; + int var4 = -141585541; + + while (true) { + switch (var4) { + case -1922025343: + return (boolean)(((0)) != 0); + case -838153121: + var5 = 0; + var4 = 763995924; + break; + case -589048425: + var5 = 1; + var4 = 763995924; + break; + case -141585541: + default: + var2 = aqg.mc.player; + if (var2 == null) { + var4 = -1922025343; + } else { + var4 = 1155936878; + } + break; + case 763995924: + return (boolean)((var5) != 0); + case 1155936878: + var3 = (ItemStack)var2.getInventory().getNonEquipmentItems().get(var1); + if (var3 != null) { + var4 = 1244439158; + } else { + var4 = -589048425; + } + break; + case 1244439158: + if (var3.isEmpty()) { + var4 = -589048425; + } else { + var4 = -838153121; + } + } + } + } +} diff --git a/src/main/java/defpackage/afj.java b/src/main/java/defpackage/afj.java new file mode 100644 index 0000000..d23960f --- /dev/null +++ b/src/main/java/defpackage/afj.java @@ -0,0 +1,15 @@ +package defpackage; + +public record afj( + float minX, float minY, float minZ, float maxX, float maxY, float maxZ, int color, int axis, float angle, float originX, float originY, float originZ +) { + static afj of(float var0, float var1, float var2, float var3, float var4, float var5, int var6) { + return new afj(var0, var1, var2, var3, var4, var5, var6, 0, 0.0F, 0.0F, 0.0F, 0.0F); + } + + static afj tilted( + float var0, float var1, float var2, float var3, float var4, float var5, int var6, int var7, float var8, float var9, float var10, float var11 + ) { + return new afj(var0, var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11); + } +} diff --git a/src/main/java/defpackage/afk.java b/src/main/java/defpackage/afk.java new file mode 100644 index 0000000..68edbf1 --- /dev/null +++ b/src/main/java/defpackage/afk.java @@ -0,0 +1,365 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.Identifier; +import org.joml.Matrix4f; + +public final class afk { + public static final Identifier SOLID = Identifier.fromNamespaceAndPath( + "evolution", "textures/white.png" + ); + public static final float PIXEL = 0.0625F; + public static final float MOUNT_TOP = 1.125F; + public static final float CAMERA_LIFT = 0.1875F; + private static final int AXIS_NONE = 0; + private static final int AXIS_X = 1; + private static final int AXIS_Z = 3; + private static final int METAL_DARK = -13354945; + private static final int METAL_LIGHT = -11906983; + private static final int BODY = -14276306; + private static final int BODY_TRIM = -12894137; + private static final int LENS_RING = -15329253; + private static final int LENS_GLASS = -11630920; + private static final int FLASH = -2499101; + private static final int SHUTTER = -4307917; + private static final int LAMP_IDLE = -10870752; + private static final int LAMP_LIT = -49101; + private static final float TOP_SHADE = 1.0F; + private static final float BOTTOM_SHADE = 0.52F; + private static final float NORTH_SOUTH_SHADE = 0.8F; + private static final float EAST_WEST_SHADE = 0.66F; + private static final float CENTER_UV = 0.5F; + private static final float COLOR_SCALE = 0.003921569F; + private static final int ALPHA_SHIFT = 24; + private static final int RED_SHIFT = 16; + private static final int GREEN_SHIFT = 8; + private static final int BYTE_MASK = 255; + private static final float DEGREES_TO_RADIANS = (float) (Math.PI / 180.0); + private static final float LEG_TILT = 22.5F; + private static final Matrix4f SCRATCH = new Matrix4f(); + public static final afj[] TRIPOD; + public static final afj[] CAMERA; + private static final int PAPER = -856090; + private static final int PAPER_EDGE = -2501434; + public static final float CARD_HALF_WIDTH = 4.5F; + public static final float CARD_HALF_HEIGHT = 5.5F; + private static final float CARD_HALF_DEPTH = 0.25F; + private static final float CARD_MARGIN = 0.8F; + private static final float CARD_BOTTOM_MARGIN = 2.4F; + private static final float CARD_FACE_OFFSET = 0.02F; + private static final float UV_MIN = 0.0F; + private static final float UV_MAX = 1.0F; + public static final afj[] PHOTO_CARD; + private static final int LAMP_INDEX = 6; + + private afk() { + } + + public static afj[] cameraWithLamp(boolean var0) { + afj[] var1 = (afj[])CAMERA.clone(); + afj var2 = var1[6]; + var1[6] = new afj( + var2.minX(), + var2.minY(), + var2.minZ(), + var2.maxX(), + var2.maxY(), + var2.maxZ(), + var0 ? -49101: -10870752, + var2.axis(), + var2.angle(), + var2.originX(), + var2.originY(), + var2.originZ() + ); + return var1; + } + + public static int lampIdleColor() { + return -10870752; + } + + public static void emitPhotoFace(Pose var0, VertexConsumer var1, Matrix4f var2, int var3, float var4, float var5) { + float var6 = 7.4F; + float var7 = 7.7999997F; + float var8 = Math.min(var6, var7 * var5); + float var9 = Math.min(var7, var8 / var5); + float var10 = 0.79999995F; + float var11 = -var8 * 0.5F * 0.0625F; + float var12 = var8 * 0.5F * 0.0625F; + float var13 = (var10 - var9 * 0.5F) * 0.0625F; + float var14 = (var10 + var9 * 0.5F) * 0.0625F; + float var15 = 0.016875F; + textured(var0, var1, var2, var3, var4, var11, var13, var15, var12, var14, var15, 1.0F); + textured(var0, var1, var2, var3, var4, var12, var13, -var15, var11, var14, -var15, -1.0F); + } + + private static void textured( + Pose var0, VertexConsumer var1, Matrix4f var2, int var3, float var4, float var5, float var6, float var7, float var8, float var9, float var10, float var11 + ) { + texturedVertex(var0, var1, var2, var3, var4, var5, var6, var7, 0.0F, 1.0F, var11); + texturedVertex(var0, var1, var2, var3, var4, var8, var6, var10, 1.0F, 1.0F, var11); + texturedVertex(var0, var1, var2, var3, var4, var8, var9, var10, 1.0F, 0.0F, var11); + texturedVertex(var0, var1, var2, var3, var4, var5, var9, var7, 0.0F, 0.0F, var11); + } + + private static void texturedVertex( + Pose var0, VertexConsumer var1, Matrix4f var2, int var3, float var4, float var5, float var6, float var7, float var8, float var9, float var10 + ) { + var1.addVertex(var2, var5, var6, var7) + .setColor(1.0F, 1.0F, 1.0F, var4) + .setUv(var8, var9) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var3) + .setNormal(var0, 0.0F, 0.0F, var10); + } + + public static void emit(Pose var0, VertexConsumer var1, Matrix4f var2, afj[] var3, int var4, float var5) { + afj[] var6 = null; + int var7 = 0; + int var8 = 0; + afj var9 = null; + Matrix4f var10 = null; + float var11 = 0.0F; + int var12 = -881159438; + + while (true) { + switch (var12) { + case -1924520422: + SCRATCH.set(var2); + SCRATCH.translate(var9.originX() * 0.0625F, var9.originY() * 0.0625F, var9.originZ() * 0.0625F); + var11 = var9.angle() * (float) (Math.PI / 180.0); + if (var9.axis() == (-840348414 | 840348415) + (-840348414 & 840348415)) { + var12 = -1062500526; + } else { + var12 = 2069851839; + } + break; + case -1062500526: + SCRATCH.rotateX(var11); + var12 = 1412563810; + break; + case -881159438: + default: + var6 = var3; + var7 = var6.length; + var8 = 0; + var12 = -435747930; + break; + case -663773830: + return; + case -435747930: + if (var8 < var7) { + var12 = -25263278; + } else { + var12 = -663773830; + } + break; + case -25263278: + var9 = var6[var8]; + var10 = var2; + if (var9.axis() != 0) { + var12 = -1924520422; + } else { + var12 = 1278282867; + } + break; + case 1278282867: + emitBox(var0, var1, var10, var9, var4, var5); + var8++; + var12 = -435747930; + break; + case 1412563810: + SCRATCH.translate(-var9.originX() * 0.0625F, -var9.originY() * 0.0625F, -var9.originZ() * 0.0625F); + var10 = SCRATCH; + var12 = 1278282867; + break; + case 2069851839: + SCRATCH.rotateZ(var11); + var12 = 1412563810; + } + } + } + + private static void emitBox(Pose var0, VertexConsumer var1, Matrix4f var2, afj var3, int var4, float var5) { + float var6 = var3.minX() * 0.0625F; + float var7 = var3.minY() * 0.0625F; + float var8 = var3.minZ() * 0.0625F; + float var9 = var3.maxX() * 0.0625F; + float var10 = var3.maxY() * 0.0625F; + float var11 = var3.maxZ() * 0.0625F; + int var12 = var3.color(); + quad(var0, var1, var2, var12, 0.8F, var4, var5, var6, var7, var11, var9, var7, var11, var9, var10, var11, var6, var10, var11, 0.0F, 0.0F, 1.0F); + quad(var0, var1, var2, var12, 0.8F, var4, var5, var9, var7, var8, var6, var7, var8, var6, var10, var8, var9, var10, var8, 0.0F, 0.0F, -1.0F); + quad(var0, var1, var2, var12, 0.66F, var4, var5, var9, var7, var11, var9, var7, var8, var9, var10, var8, var9, var10, var11, 1.0F, 0.0F, 0.0F); + quad(var0, var1, var2, var12, 0.66F, var4, var5, var6, var7, var8, var6, var7, var11, var6, var10, var11, var6, var10, var8, -1.0F, 0.0F, 0.0F); + quad(var0, var1, var2, var12, 1.0F, var4, var5, var6, var10, var11, var9, var10, var11, var9, var10, var8, var6, var10, var8, 0.0F, 1.0F, 0.0F); + quad(var0, var1, var2, var12, 0.52F, var4, var5, var6, var7, var8, var9, var7, var8, var9, var7, var11, var6, var7, var11, 0.0F, -1.0F, 0.0F); + } + + private static void quad( + Pose var0, + VertexConsumer var1, + Matrix4f var2, + int var3, + float var4, + int var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13, + float var14, + float var15, + float var16, + float var17, + float var18, + float var19, + float var20, + float var21 + ) { + vertex(var0, var1, var2, var3, var4, var5, var6, var7, var8, var9, var19, var20, var21); + vertex(var0, var1, var2, var3, var4, var5, var6, var10, var11, var12, var19, var20, var21); + vertex(var0, var1, var2, var3, var4, var5, var6, var13, var14, var15, var19, var20, var21); + vertex(var0, var1, var2, var3, var4, var5, var6, var16, var17, var18, var19, var20, var21); + } + + private static void vertex( + Pose var0, + VertexConsumer var1, + Matrix4f var2, + int var3, + float var4, + int var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12 + ) { + float var13 = (var3 >> (525087497 | -525087481) + (525087497 & -525087481) & (11849653 ^ -11849398) + ((11849653 & -11849398) << 1)) + * 0.003921569F + * var4; + float var14 = (var3 >> (-568684460 | 568684468) + (-568684460 & 568684468) & (-1275763793 | 1275764048) + (-1275763793 & 1275764048)) + * 0.003921569F + * var4; + float var15 = (var3 & (-391840640 ^ 391840895) + ((-391840640 & 391840895) << 1)) * 0.003921569F * var4; + float var16 = (var3 >>> (-292457276 | 292457300) + (-292457276 & 292457300) & (168503075 ^ -168502820) + ((168503075 & -168502820) << 1)) + * 0.003921569F + * var6; + var1.addVertex(var2, var7, var8, var9) + .setColor(var13, var14, var15, var16) + .setUv(0.5F, 0.5F) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var5) + .setNormal(var0, var10, var11, var12); + } + + static { + afj[] var10000 = new afj[6]; + var10000[0] = afj.tilted( + -0.8F, + -1.0F, + 0.4F, + 0.8F, + 16.4F, + 2.0F, + -13354945, + 1, + -22.5F, + 0.0F, + 15.0F, + 1.0F + ); + var10000[1] = afj.tilted( + -0.8F, + -1.0F, + -2.0F, + 0.8F, + 16.4F, + -0.4F, + -13354945, + 1, + 22.5F, + 0.0F, + 15.0F, + -1.0F + ); + var10000[2] = afj.tilted( + 0.4F, + -1.0F, + -0.8F, + 2.0F, + 16.4F, + 0.8F, + -13354945, + 3, + 22.5F, + 1.0F, + 15.0F, + 0.0F + ); + var10000[3] = afj.tilted( + -2.0F, + -1.0F, + -0.8F, + -0.4F, + 16.4F, + 0.8F, + -13354945, + 3, + -22.5F, + -1.0F, + 15.0F, + 0.0F + ); + var10000[4] = afj.of( + -1.98F, 16.0F, -1.98F, 1.98F, 17.0F, 1.98F, (-1246361530 | 1234454547) + (-1246361530 & 1234454547) + ); + var10000[5] = afj.of( + -1.0F, 17.0F, -1.0F, 1.0F, 18.0F, 1.0F, (-1504840890 ^ 1491485945) + ((-1504840890 & 1491485945) << 1) + ); + TRIPOD = var10000; + var10000 = new afj[8]; + var10000[0] = afj.of( + -3.0F, -3.0F, -4.0F, 3.0F, 3.0F, 4.0F, (1446597701 ^ -1460874007) + ((1446597701 & -1460874007) << 1) + ); + var10000[1] = afj.of( + -3.05F, 1.6F, -4.05F, 3.05F, 2.4F, 4.05F, (245904832 | -258798969) + (245904832 & -258798969) + ); + var10000[2] = afj.of( + -2.0F, -2.0F, 4.0F, 2.0F, 2.0F, 6.0F, (-692603721 | 677274468) + (-692603721 & 677274468) + ); + var10000[3] = afj.of( + -1.3F, -1.3F, 6.0F, 1.3F, 1.3F, 6.4F, (-279203425 | 267572505) + (-279203425 & 267572505) + ); + var10000[4] = afj.of( + -2.0F, 3.0F, -2.0F, 2.0F, 5.6F, 2.0F, (814055381 ^ -826949518) + ((814055381 & -826949518) << 1) + ); + var10000[5] = afj.of( + -1.0F, 5.6F, -1.0F, 1.0F, 6.0F, 1.0F, (1937154802 | -1952484055) + (1937154802 & -1952484055) + ); + var10000[6] = afj.of( + 1.4F, 3.0F, -3.4F, 2.4F, 3.8F, -2.4F, (-319713948 ^ 315406031) + ((-319713948 & 315406031) << 1) + ); + var10000[7] = afj.of( + -5.2F, 0.4F, -1.2F, -3.0F, 2.6F, 1.2F, (-828427207 | 825928106) + (-828427207 & 825928106) + ); + CAMERA = var10000; + var10000 = new afj[2]; + var10000[0] = afj.of( + -4.5F, -5.5F, -0.25F, 4.5F, 5.5F, 0.25F, (-1769351609 ^ 1768495519) + ((-1769351609 & 1768495519) << 1) + ); + var10000[1] = afj.of( + -4.5F, -5.5F, -0.27F, 4.5F, -5.2F, 0.27F, (-1867356158 ^ 1864854724) + ((-1867356158 & 1864854724) << 1) + ); + PHOTO_CARD = var10000; + } +} diff --git a/src/main/java/defpackage/afl.java b/src/main/java/defpackage/afl.java new file mode 100644 index 0000000..edcef2f --- /dev/null +++ b/src/main/java/defpackage/afl.java @@ -0,0 +1,25 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:afl.class */ +/* synthetic */ class afl { + static final /* synthetic */ int[] $SwitchMap$evo$systems$cosmetic$camera$CameraGear = new int[aff.values().length]; + + static { + try { + $SwitchMap$evo$systems$cosmetic$camera$CameraGear[aff.CAMERA.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$cosmetic$camera$CameraGear[aff.TRIPOD.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$cosmetic$camera$CameraGear[aff.PHOTO.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$cosmetic$camera$CameraGear[aff.NONE.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + } +} diff --git a/src/main/java/defpackage/afm.java b/src/main/java/defpackage/afm.java new file mode 100644 index 0000000..5d23702 --- /dev/null +++ b/src/main/java/defpackage/afm.java @@ -0,0 +1,152 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.resources.Identifier; +import org.joml.Matrix4f; + +public final class afm { + private static final float CAMERA_SCALE = 0.62F; + private static final float CAMERA_YAW = 162.0F; + private static final float CAMERA_TILT = -10.0F; + private static final float CAMERA_ROLL = 12.0F; + private static final float CAMERA_PIVOT_Y = 0.0F; + private static final float CAMERA_SHIFT_X = -0.06F; + private static final float CAMERA_SHIFT_Y = 0.2F; + private static final float CAMERA_SHIFT_Z = 0.02F; + private static final float TRIPOD_SCALE = 0.42F; + private static final float TRIPOD_YAW = 18.0F; + private static final float TRIPOD_TILT = -16.0F; + private static final float TRIPOD_ROLL = -56.0F; + private static final float TRIPOD_PIVOT_Y = 0.53F; + private static final float TRIPOD_SHIFT_X = -0.14F; + private static final float TRIPOD_SHIFT_Y = 0.24F; + private static final float TRIPOD_SHIFT_Z = 0.0F; + private static final float CARD_SCALE = 0.62F; + private static final float CARD_MAP_SCALE = 1.1F; + private static final float CARD_TILT = -14.0F; + private static final float CARD_SHIFT_Y = 0.05F; + private static final float THIRD_PERSON_SCALE = 0.55F; + private static final float THIRD_PERSON_Y = -0.12F; + private static final float THIRD_PERSON_Z = -0.08F; + private static final float FULL_ALPHA = 1.0F; + private final Matrix4f scratch = new Matrix4f(); + private static final afm INSTANCE = new afm(); + + private afm() { + } + + public static afm getInstance() { + return INSTANCE; + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public void submit(aff var1, String var2, float var3, PoseStack var4, SubmitNodeCollector var5, int var6) { + switch (afl.$SwitchMap$evo$systems$cosmetic$camera$CameraGear[var1.ordinal()]) { + case 1: + this.submitBoxes(var4, var5, var6, afk.CAMERA, 0.62F, 162.0F, -10.0F, 12.0F, 0.0F, -0.06F, 0.2F, 0.02F); + break; + case 2: + this.submitBoxes(var4, var5, var6, afk.TRIPOD, 0.42F, 18.0F, -16.0F, -56.0F, 0.53F, -0.14F, 0.24F, 0.0F); + break; + case 3: + this.submitCard(var4, var5, var6, var2, var3, 0.62F, -14.0F); + case 4: + } + } + + public void submitHeldCard(PoseStack var1, SubmitNodeCollector var2, int var3, String var4, float var5) { + this.submitCard(var1, var2, var3, var4, var5, 1.1F, 0.0F); + } + + public void submitThirdPerson(aff var1, String var2, float var3, PoseStack var4, SubmitNodeCollector var5, int var6) { + var4.pushPose(); + var4.translate(0.0F, -0.12F, -0.08F); + var4.scale(0.55F, 0.55F, 0.55F); + this.submit(var1, var2, var3, var4, var5, var6); + var4.popPose(); + } + + private void submitBoxes( + PoseStack var1, + SubmitNodeCollector var2, + int var3, + afj[] var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12 + ) { + var1.pushPose(); + var1.translate(var10, var11, var12); + var1.mulPose(Axis.YP.rotationDegrees(var6)); + var1.mulPose(Axis.XP.rotationDegrees(var7)); + var1.mulPose(Axis.ZP.rotationDegrees(var8)); + var1.scale(var5, var5, var5); + var1.translate(0.0F, -var9, 0.0F); + var2.submitCustomGeometry(var1, RenderTypes.entityTranslucent(afk.SOLID), (var3x, var4x) -> { + this.scratch.set(var3x.pose()); + afk.emit(var3x, var4x, this.scratch, var4, var3, 1.0F); + }); + var1.popPose(); + } + + private void submitCard(PoseStack var1, SubmitNodeCollector var2, int var3, String var4, float var5, float var6, float var7) { + Identifier var8 = null; + Identifier var10 = null; + int var9 = 411012915; + + while (true) { + switch (var9) { + case -1251650116: + var8 = var10; + if (var8 != null) { + var9 = -409585796; + } else { + var9 = -271140025; + } + break; + case -409585796: + var2.submitCustomGeometry(var1, RenderTypes.entityTranslucent(var8), (var3x, var4x) -> { + this.scratch.set(var3x.pose()); + afk.emitPhotoFace(var3x, var4x, this.scratch, var3, 1.0F, var5); + }); + var9 = -271140025; + break; + case -337979815: + var10 = null; + var9 = -1251650116; + break; + case -271140025: + var1.popPose(); + return; + case 411012915: + default: + var1.pushPose(); + var1.translate(0.0F, 0.05F, 0.0F); + var1.mulPose(Axis.XP.rotationDegrees(var7)); + var1.scale(var6, var6, var6); + var2.submitCustomGeometry(var1, RenderTypes.entityTranslucent(afk.SOLID), (var2x, var3x) -> { + this.scratch.set(var2x.pose()); + afk.emit(var2x, var3x, this.scratch, afk.PHOTO_CARD, var3, 1.0F); + }); + if (var4 == null) { + var9 = -337979815; + } else { + var9 = 1149586282; + } + break; + case 1149586282: + var10 = age.getInstance().texture(var4); + var9 = -1251650116; + } + } + } +} diff --git a/src/main/java/defpackage/afn.java b/src/main/java/defpackage/afn.java new file mode 100644 index 0000000..e8eef38 --- /dev/null +++ b/src/main/java/defpackage/afn.java @@ -0,0 +1,4 @@ +package defpackage; + +public record afn(aff gear, String photoId, long at) { +} diff --git a/src/main/java/defpackage/afo.java b/src/main/java/defpackage/afo.java new file mode 100644 index 0000000..6cf01a3 --- /dev/null +++ b/src/main/java/defpackage/afo.java @@ -0,0 +1,77 @@ +package defpackage; + +import java.util.Locale; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public final class afo { + private static final long EXPIRY_MILLIS = 8000L; + private static final Map REMOTE = new ConcurrentHashMap<>(); + + private afo() { + } + + public static void accept(String var0, aff var1, String var2) { + String var3 = null; + int var4 = -1763661562; + + while (true) { + switch (var4) { + case -1763661562: + default: + if (var0 != null) { + var4 = 1395933249; + } else { + var4 = -932596199; + } + break; + case -1426149570: + var3 = var0.toLowerCase(Locale.ROOT); + if (var1 == aff.NONE) { + var4 = -1422603740; + } else { + var4 = -986528297; + } + break; + case -1422603740: + REMOTE.remove(var3); + return; + case -986528297: + REMOTE.put(var3, new afn(var1, var2, System.currentTimeMillis())); + return; + case -932596199: + return; + case 1395933249: + if (var0.isEmpty()) { + var4 = -932596199; + } else { + var4 = -1426149570; + } + } + } + } + + public static void clear() { + REMOTE.clear(); + } + + public static afn heldBy(String var0) { + if (var0 == null) { + return null; + } else if (aqg.mc.player != null && var0.equals(aqg.mc.player.getScoreboardName())) { + afi var3 = afi.getInstance(); + aff var2 = var3.heldGear(); + return var2 == aff.NONE ? null : new afn(var2, var3.photoId(), System.currentTimeMillis()); + } else { + afn var1 = REMOTE.get(var0.toLowerCase(Locale.ROOT)); + if (var1 == null) { + return null; + } else if (System.currentTimeMillis() - var1.at() > (6578009393883370089L | -6578009393883362089L) + (6578009393883370089L & -6578009393883362089L)) { + REMOTE.remove(var0.toLowerCase(Locale.ROOT)); + return null; + } else { + return var1; + } + } + } +} diff --git a/src/main/java/defpackage/afp.java b/src/main/java/defpackage/afp.java new file mode 100644 index 0000000..62c31de --- /dev/null +++ b/src/main/java/defpackage/afp.java @@ -0,0 +1,1572 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.io.IOException; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Base64; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ServerData; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.entity.player.Player; + +public final class afp { + private static final String ACTION_PHOTO = "photo"; + private static final String KEY_UUID = "uuid"; + private static final String KEY_SERVER = "server"; + private static final String KEY_DIMENSION = "dim"; + private static final String KEY_SINCE = "since"; + private static final String KEY_TRIPODS = "tripods"; + private static final String KEY_ERASE = "erase"; + private static final String KEY_FRAMES = "frames"; + private static final String KEY_ERASE_FRAMES = "eraseFrames"; + private static final String KEY_GONE_FRAMES = "goneFrames"; + private static final String KEY_FACE = "f"; + private static final String KEY_ROLL = "r"; + private static final String KEY_SIZE = "s"; + private static final String KEY_HOLD = "hold"; + private static final String KEY_HOLDS = "holds"; + private static final String KEY_PHOTO = "photo"; + private static final String KEY_PHOTOS = "photos"; + private static final String KEY_WANT = "want"; + private static final String KEY_AT = "at"; + private static final String KEY_FULL = "full"; + private static final String KEY_GONE = "gone"; + private static final String KEY_KEY = "k"; + private static final String KEY_X = "bx"; + private static final String KEY_Y = "by"; + private static final String KEY_Z = "bz"; + private static final String KEY_YAW = "ry"; + private static final String KEY_PITCH = "rp"; + private static final String KEY_TTL = "ttl"; + private static final String KEY_OWNER = "u"; + private static final String KEY_GEAR = "g"; + private static final String KEY_PHOTO_ID = "p"; + private static final String KEY_ID = "id"; + private static final String KEY_DATA = "d"; + private static final String PUSH_FAILURE = "camera sync failed: {}"; + private static final String STATUS_FAILURE = "camera sync rejected with status {}"; + private static final String RESPONSE_FAILURE = "camera sync response parse failed"; + private static final String ENCODE_FAILURE = "camera photo encode failed for {}"; + private static final String NO_RESPONSE = "no response"; + private static final int FAST_INTERVAL_TICKS = 10; + private static final int IDLE_INTERVAL_TICKS = 100; + private static final int NEIGHBOUR_SCAN_TICKS = 20; + public static final int MAX_ACTIVE_PER_USER = 12; + private static final int MAX_BATCH = 8; + private static final int MAX_QUEUE = 64; + private static final int MAX_WANT = 4; + private static final long SNAPSHOT_CURSOR = 0L; + private static final int SHARE_MAX_SIDE = 256; + private static final float SHARE_QUALITY = 0.62F; + private static final char QUEUE_SEPARATOR = '|'; + private static final ArrayDeque pendingTripods = new ArrayDeque<>(); + private static final Set pendingErasures = new LinkedHashSet<>(); + private static final ArrayDeque pendingFrames = new ArrayDeque<>(); + private static final Set pendingFrameErasures = new LinkedHashSet<>(); + private static final Set uploadedPhotos = ConcurrentHashMap.newKeySet(); + private static final Set wantedPhotos = ConcurrentHashMap.newKeySet(); + private static final ArrayDeque pendingUploads = new ArrayDeque<>(); + private static volatile boolean requestInFlight; + private static String identity; + private static String server; + private static String dimension; + private static boolean showedOthers = (boolean)(((1)) != 0); + private static long since; + private static int epoch; + private static int ticks; + private static int scanTicks; + private static int blobTicks; + private static boolean neighbourNear; + + private afp() { + } + + public static void initialize() { + ClientTickEvents.END_CLIENT_TICK.register(afp::tick); + } + + public static void publishTripod(agh var0) { + int var1 = -743270950; + + while (true) { + switch (var1) { + case -1144015464: + return; + case -964971053: + pendingTripods.pollFirst(); + var1 = 1882414364; + break; + case -743270950: + default: + if (var0 == null) { + var1 = -1144015464; + } else { + var1 = 1882414364; + } + break; + case 1029374661: + pendingTripods.removeIf(var1x -> { + int var3 = 0; + int var2 = 64508689; + + while (true) { + switch (var2) { + case -972374789: + var3 = 0; + var2 = 1515095376; + break; + case -685426676: + if (var1x.dimension().equals(var0.dimension())) { + var2 = 470798441; + } else { + var2 = -972374789; + } + break; + case 64508689: + default: + if (var1x.key().equals(var0.key())) { + var2 = -685426676; + } else { + var2 = -972374789; + } + break; + case 470798441: + var3 = 1; + var2 = 1515095376; + break; + case 1515095376: + return (boolean)((var3) != 0); + } + } + }); + pendingTripods.addLast(var0); + return; + case 1882414364: + if (pendingTripods.size() >= (-1043939263 | 1043939327) + (-1043939263 & 1043939327)) { + var1 = -964971053; + } else { + var1 = 1029374661; + } + } + } + } + + public static void eraseTripod(agh var0) { + Iterator var1 = null; + int var2 = -1929021257; + + while (true) { + switch (var2) { + case -1995605155: + pendingErasures.add(var0.dimension() + "|" + var0.key()); + return; + case -1929021257: + default: + if (var0 == null) { + var2 = 1585384708; + } else { + var2 = 1923754207; + } + break; + case 1585384708: + return; + case 1923754207: + if (pendingErasures.size() >= (1790614130 | -1790614066) + (1790614130 & -1790614066)) { + var2 = 1948720249; + } else { + var2 = -1995605155; + } + break; + case 1948720249: + var1 = pendingErasures.iterator(); + var1.next(); + var1.remove(); + var2 = 1923754207; + } + } + } + + public static void publishPhoto(afx var0) { + int var1 = 468168050; + + while (true) { + switch (var1) { + case 468168050: + default: + if (var0 != null) { + var1 = 1559660586; + } else { + var1 = 717790024; + } + break; + case 717790024: + return; + case 1559660586: + publishPhotoById(var0.id()); + var1 = 717790024; + } + } + } + + public static void publishPhotoById(String var0) { + int var1 = 459678308; + + while (true) { + switch (var1) { + case -1929220619: + return; + case -1133788425: + if (!uploadedPhotos.add(var0)) { + var1 = -1929220619; + } else { + var1 = -961169719; + } + break; + case -961169719: + afz.submit( + () -> { + byte[] var1x = age.getInstance().readEncoded(var0); + if (var1x == null) { + uploadedPhotos.remove(var0); + } else { + try { + agd var2 = agd.decode(var1x).scaledTo((1843144669 | -1843144413) + (1843144669 & -1843144413)); + akc var4 = new akc(0.62F); + + byte[] var3; + try { + var3 = var4.encode(var2.toRgba(), var2.width(), var2.height()); + } catch (Throwable var9) { + try { + var4.close(); + } catch (Throwable var8) { + var9.addSuppressed(var8); + } + + throw var9; + } + + var4.close(); + JsonObject var12 = new JsonObject(); + var12.addProperty("id", var0); + var12.addProperty( + "d", Base64.getEncoder().encodeToString(var3) + ); + synchronized (pendingUploads) { + while (pendingUploads.size() >= (-1477191391 ^ 1477191399) + ((-1477191391 & 1477191399) << 1)) { + pendingUploads.pollFirst(); + } + + pendingUploads.addLast(var12); + } + } catch (IOException | RuntimeException var11) { + uploadedPhotos.remove(var0); + id.warn( + Cif.SOCIAL, + "camera photo encode failed for {}", + var0, + var11 + ); + } + } + } + ); + return; + case 459678308: + default: + if (var0 != null) { + var1 = -1133788425; + } else { + var1 = -1929220619; + } + } + } + } + + public static void publishFrame(aga var0) { + int var1 = 1563236198; + + while (true) { + switch (var1) { + case -1187163703: + if (pendingFrames.size() >= (1078112133 | -1078112069) + (1078112133 & -1078112069)) { + var1 = 1529329114; + } else { + var1 = -1065388647; + } + break; + case -1065388647: + pendingFrames.removeIf(var1x -> { + int var3 = 0; + int var2 = -274841955; + + while (true) { + switch (var2) { + case -274841955: + default: + if (var1x.key().equals(var0.key())) { + var2 = 2129638601; + } else { + var2 = 67560953; + } + break; + case 67560953: + var3 = 0; + var2 = 292680920; + break; + case 292680920: + return (boolean)((var3) != 0); + case 1194128583: + var3 = 1; + var2 = 292680920; + break; + case 2129638601: + if (var1x.dimension().equals(var0.dimension())) { + var2 = 1194128583; + } else { + var2 = 67560953; + } + } + } + }); + pendingFrames.addLast(var0); + return; + case 1435891586: + return; + case 1529329114: + pendingFrames.pollFirst(); + var1 = -1187163703; + break; + case 1563236198: + default: + if (var0 == null) { + var1 = 1435891586; + } else { + var1 = -1187163703; + } + } + } + } + + public static void eraseFrame(aga var0) { + Iterator var1 = null; + int var2 = 1253651935; + + while (true) { + switch (var2) { + case -2069202866: + if (pendingFrameErasures.size() >= (1018764540 | -1018764476) + (1018764540 & -1018764476)) { + var2 = -803001144; + } else { + var2 = 310655492; + } + break; + case -1867404890: + return; + case -803001144: + var1 = pendingFrameErasures.iterator(); + var1.next(); + var1.remove(); + var2 = -2069202866; + break; + case 310655492: + pendingFrameErasures.add(var0.dimension() + "|" + var0.key()); + return; + case 1253651935: + default: + if (var0 == null) { + var2 = -1867404890; + } else { + var2 = -2069202866; + } + } + } + } + + private static void tick(Minecraft var0) { + identity = identityOf(var0); + tb var1 = tb.INSTANCE; + int var2 = var0.player != null && var0.level != null + ? 1: 0; + String var3 = var2 != 0 ? var0.level.dimension().identifier().toString() : null; + String var4 = var2 != 0 ? serverKey(var0) : null; + if (var2 != 0 && var1.isEnabled() && var1.syncs() && var4 != null && identity != null) { + if (!var4.equals(server)) { + pendingTripods.clear(); + pendingErasures.clear(); + pendingFrames.clear(); + pendingFrameErasures.clear(); + server = var4; + requestSnapshot(); + } + + if (!var3.equals(dimension)) { + dimension = var3; + requestSnapshot(); + } + + if (var1.showsOthers() != showedOthers) { + showedOthers = var1.showsOthers(); + requestSnapshot(); + } + + if ((scanTicks += (-237172974 ^ 237172975) + ((-237172974 & 237172975) << 1)) >= (-2138587150 | 2138587170) + (-2138587150 & 2138587170)) { + scanTicks = 0; + neighbourNear = hasEvoNeighbour(var0); + } + + ticks += 1; + if (!requestInFlight) { + if (hasPending() + || ticks + >= (neighbourNear ? 10: (-1096110279 | 1096110379) + (-1096110279 & 1096110379))) { + ticks = 0; + send(var0); + } + } + } else { + pendingTripods.clear(); + pendingErasures.clear(); + pendingFrames.clear(); + pendingFrameErasures.clear(); + server = null; + dimension = null; + afo.clear(); + requestSnapshot(); + if (identity != null && !requestInFlight && hasBlobWork()) { + if ((blobTicks += (291803867 | -291803866) + (291803867 & -291803866)) >= (1514353252 | -1514353242) + (1514353252 & -1514353242)) { + blobTicks = 0; + send(var0); + } + } + } + } + + public static void requestPhoto(String var0) { + age var1 = null; + int var2 = -460928808; + + while (true) { + switch (var2) { + case -1794531306: + var1 = age.getInstance(); + if (var1.texture(var0) == null) { + var2 = 1952551843; + } else { + var2 = 1849064235; + } + break; + case -460928808: + default: + if (var0 == null) { + var2 = 1524339913; + } else { + var2 = -1794531306; + } + break; + case 1524339913: + return; + case 1849064235: + return; + case 1952551843: + wantedPhotos.add(var0); + var2 = 1849064235; + } + } + } + + private static boolean hasBlobWork() { + synchronized (pendingUploads) { + if (!pendingUploads.isEmpty()) { + return (boolean)(((1)) != 0); + } + } + + return (boolean)(((!wantedPhotos.isEmpty() + ? 1: (959203980 ^ -959203980) + ((959203980 & -959203980) << 1))) != 0); + } + + private static boolean hasPending() { + synchronized (pendingUploads) { + if (!pendingUploads.isEmpty()) { + return (boolean)(((1)) != 0); + } + } + + return (boolean)(((wantedPhotos.isEmpty() + && pendingTripods.isEmpty() + && pendingErasures.isEmpty() + && pendingFrames.isEmpty() + && pendingFrameErasures.isEmpty() + ? 0: (2089651557 ^ -2089651556) + ((2089651557 & -2089651556) << 1))) != 0); + } + + private static void requestSnapshot() { + since = (75178269451079286L ^ -75178269451079286L) + ((75178269451079286L & -75178269451079286L) << 1); + ticks = 100; + epoch += 1; + } + + private static void reset() { + pendingTripods.clear(); + pendingErasures.clear(); + pendingFrames.clear(); + pendingFrameErasures.clear(); + afo.clear(); + server = null; + dimension = null; + requestSnapshot(); + } + + private static void send(Minecraft var0) { + JsonObject var1 = anb.actionBody("photo"); + if (var1 != null) { + var1.addProperty("uuid", identity); + if (server != null && dimension != null) { + var1.addProperty("server", server); + var1.addProperty("dim", dimension); + var1.addProperty("since", since); + } + + List var2 = drainTripods(); + if (!var2.isEmpty()) { + JsonArray var3 = new JsonArray(); + + for (agh var5 : var2) { + var3.add(toJson(var5)); + } + + var1.add("tripods", var3); + } + + List var15 = drainErasures(); + if (!var15.isEmpty()) { + JsonArray var16 = new JsonArray(); + + for (String var6 : var15) { + var16.add(var6); + } + + var1.add("erase", var16); + } + + afi var17 = afi.getInstance(); + aff var19 = var17.heldGear(); + if (var19 != aff.NONE) { + JsonObject var20 = new JsonObject(); + var20.addProperty("g", var19.name()); + if (var19 == aff.PHOTO && var17.photoId() != null) { + var20.addProperty("p", var17.photoId()); + } + + var1.add("hold", var20); + } + + List var21 = drainFrames(); + if (!var21.isEmpty()) { + JsonArray var7 = new JsonArray(); + + for (aga var9 : var21) { + var7.add(toJson(var9)); + } + + var1.add("frames", var7); + } + + List var22 = drainFrameErasures(); + if (!var22.isEmpty()) { + JsonArray var23 = new JsonArray(); + + for (String var10 : var22) { + var23.add(var10); + } + + var1.add("eraseFrames", var23); + } + + JsonObject var24; + synchronized (pendingUploads) { + var24 = pendingUploads.pollFirst(); + } + + if (var24 != null) { + var1.add("photo", var24); + } + + ArrayList var27 = new ArrayList(); + if (!wantedPhotos.isEmpty()) { + JsonArray var28 = new JsonArray(); + + for (String var12 : wantedPhotos) { + if (var28.size() >= (1261841569 | -1261841565) + (1261841569 & -1261841565)) { + break; + } + + var28.add(var12); + var27.add(var12); + } + + var1.add("want", var28); + } + + int var29 = since == (1001526537113835646L | -1001526537113835646L) + (1001526537113835646L & -1001526537113835646L) + ? 1: 0; + int var30 = epoch; + String var31 = dimension; + String var13 = server; + requestInFlight = (boolean)(((1)) != 0); + anb.post(var1) + .whenComplete( + (var11, var12x) -> { + if (var12x == null && var11 != null && var11.statusCode() == (1309311661 | -1309311461) + (1309311661 & -1309311461)) { + try { + JsonObject var25 = JsonParser.parseString(var11.body()).getAsJsonObject(); + long var14 = longOf(var25.get("at")); + int var16x = var29 && booleanOf(var25.get("full")) + ? 1: 0; + JsonArray var17x = arrayOf(var25.get("tripods")); + JsonArray var18 = arrayOf(var25.get("gone")); + JsonArray var19x = arrayOf(var25.get("holds")); + JsonArray var20x = arrayOf(var25.get("photos")); + JsonArray var21x = arrayOf(var25.get("frames")); + JsonArray var22x = arrayOf(var25.get("goneFrames")); + wantedPhotos.removeAll(var27); + var0.execute(() -> { + apply(var30, var13, var31, var16x, var14, var17x, var18, var19x, var21x, var22x); + requestInFlight = (boolean)(((0)) != 0); + }); + acceptPhotos(var20x); + } catch (RuntimeException var24x) { + requestInFlight = (boolean)(((0)) != 0); + id.warn( + Cif.SOCIAL, + "camera sync response parse failed", + var24x + ); + } + } else { + requestInFlight = (boolean)(((0)) != 0); + requeue(var2, var15, var21, var22, var31); + if (var24 != null) { + synchronized (pendingUploads) { + pendingUploads.addFirst(var24); + } + } + + if (var11 != null && var11.statusCode() != (-1446851649 | 1446851849) + (-1446851649 & 1446851849)) { + id.warn( + Cif.SOCIAL, + "camera sync rejected with status {}", + var11.statusCode() + ); + } else { + id.warn( + Cif.SOCIAL, + "camera sync failed: {}", + var12x == null ? "no response" : var12x.toString() + ); + } + } + } + ); + } + } + + private static void apply( + int var0, String var1, String var2, boolean var3, long var4, JsonArray var6, JsonArray var7, JsonArray var8, JsonArray var9, JsonArray var10 + ) { + if (var2 != null && var1 != null) { + if (var0 == epoch && var2.equals(dimension) && var1.equals(server)) { + agk var11 = agk.getInstance(); + if (var3) { + for (agh var13 : new ArrayList<>(var11.inDimension(var2))) { + if (!var13.owner().equals(identity)) { + var11.remove(var2, var13.key()); + } + } + } + + for (JsonElement var22 : var6) { + if (var22.isJsonObject()) { + agh var14 = fromJson(var22.getAsJsonObject(), var2); + if (var14 != null && !var14.owner().equals(identity)) { + var11.accept(var14); + } + } + } + + for (JsonElement var23 : var7) { + if (var23.isJsonPrimitive()) { + agh var28 = var11.byKey(var2, var23.getAsString()); + if (var28 != null && !var28.owner().equals(identity)) { + var11.remove(var2, var23.getAsString()); + } + } + } + + agc var21 = agc.getInstance(); + if (var3) { + for (aga var29 : new ArrayList<>(var21.inDimension(var2))) { + if (!var29.owner().equals(identity)) { + var21.remove(var2, var29.key()); + } + } + } + + for (JsonElement var30 : var9) { + if (var30.isJsonObject()) { + aga var15 = frameFromJson(var30.getAsJsonObject(), var2); + if (var15 != null && !var15.owner().equals(identity)) { + var21.accept(var15); + requestPhoto(var15.photoId()); + } + } + } + + for (JsonElement var31 : var10) { + if (var31.isJsonPrimitive()) { + aga var33 = var21.byKey(var2, var31.getAsString()); + if (var33 != null && !var33.owner().equals(identity)) { + var21.remove(var2, var31.getAsString()); + } + } + } + + afo.clear(); + + for (JsonElement var32 : var8) { + if (var32.isJsonObject()) { + JsonObject var34 = var32.getAsJsonObject(); + String var16 = var34.has("u") + ? var34.get("u").getAsString() + : null; + aff var17 = gearOf( + var34.has("g") + ? var34.get("g").getAsString() + : null + ); + String var18 = var34.has("p") + ? var34.get("p").getAsString() + : null; + afo.accept(var16, var17, var18); + requestPhoto(var18); + } + } + + since = var4; + } + } + } + + private static void acceptPhotos(JsonArray var0) { + Iterator var1 = null; + JsonElement var2 = null; + JsonObject var3 = null; + String var4 = null; + String var5 = null; + int var6 = -1756853371; + + while (true) { + switch (var6) { + case -2143742195: + var3 = var2.getAsJsonObject(); + if (var3.has("id")) { + var6 = -322236591; + } else { + var6 = -1932175509; + } + break; + case -2077780207: + return; + case -1932175509: + if (var1.hasNext()) { + var6 = 651381724; + } else { + var6 = -2077780207; + } + break; + case -1756853371: + default: + var1 = var0.iterator(); + var6 = -1932175509; + break; + case -1492635100: + var6 = -1932175509; + break; + case -442593754: + var6 = -1932175509; + break; + case -322236591: + if (!var3.has("d")) { + var6 = -1492635100; + } else { + var6 = 167149435; + } + break; + case 167149435: + var4 = var3.get("id").getAsString(); + var5 = var3.get("d").getAsString(); + wantedPhotos.remove(var4); + afz.submit( + () -> { + try { + agd var2x = agd.decode(Base64.getDecoder().decode(var5)); + age.getInstance().acceptRemote(var4, var2x); + } catch (IOException | RuntimeException var3x) { + id.warn( + Cif.SOCIAL, + "camera photo encode failed for {}", + var4, + var3x + ); + } + } + ); + var6 = -1932175509; + break; + case 651381724: + var2 = (JsonElement)var1.next(); + if (!var2.isJsonObject()) { + var6 = -442593754; + } else { + var6 = -2143742195; + } + } + } + } + + private static List drainFrames() { + ArrayList var0 = null; + Iterator var1 = null; + aga var2 = null; + int var3 = -265065169; + + while (true) { + switch (var3) { + case -888901594: + if (var0.size() < (-2030563488 ^ 2030563496) + ((-2030563488 & 2030563496) << 1)) { + var3 = -557807967; + } else { + var3 = 698450951; + } + break; + case -557807967: + var2 = (aga)var1.next(); + if (!var2.dimension().equals(dimension)) { + var3 = -366485986; + } else { + var3 = 1694162207; + } + break; + case -366485986: + var3 = 177090722; + break; + case -265065169: + default: + var0 = new ArrayList(); + var1 = pendingFrames.iterator(); + var3 = 177090722; + break; + case 177090722: + if (var1.hasNext()) { + var3 = -888901594; + } else { + var3 = 698450951; + } + break; + case 698450951: + return var0; + case 1694162207: + var1.remove(); + var0.add(var2); + var3 = 177090722; + } + } + } + + private static List drainFrameErasures() { + ArrayList var0 = null; + String var1 = null; + Iterator var2 = null; + String var3 = null; + int var4 = -1686089680; + + while (true) { + switch (var4) { + case -1686089680: + default: + var0 = new ArrayList(); + var1 = dimension + "|"; + var2 = pendingFrameErasures.iterator(); + var4 = -489098279; + break; + case -1585092508: + if (var0.size() < (1971484435 | -1971484427) + (1971484435 & -1971484427)) { + var4 = 1936850864; + } else { + var4 = 936800113; + } + break; + case -489098279: + if (var2.hasNext()) { + var4 = -1585092508; + } else { + var4 = 936800113; + } + break; + case 177835846: + var4 = -489098279; + break; + case 936800113: + return var0; + case 962071736: + var2.remove(); + var0.add(var3.substring(var1.length())); + var4 = -489098279; + break; + case 1936850864: + var3 = (String)var2.next(); + if (!var3.startsWith(var1)) { + var4 = 177835846; + } else { + var4 = 962071736; + } + } + } + } + + private static JsonObject toJson(aga var0) { + JsonObject var1 = new JsonObject(); + var1.addProperty("k", var0.key()); + var1.addProperty("bx", var0.anchor().getX()); + var1.addProperty("by", var0.anchor().getY()); + var1.addProperty("bz", var0.anchor().getZ()); + var1.addProperty("f", var0.face().getName()); + var1.addProperty("r", var0.roll()); + var1.addProperty("s", var0.size()); + var1.addProperty("p", var0.photoId()); + var1.addProperty( + "ttl", + Math.max((-182855474627793713L | 182855474627793713L) + (-182855474627793713L & 182855474627793713L), var0.expiresAt() - System.currentTimeMillis()) + ); + return var1; + } + + private static aga frameFromJson(JsonObject var0, String var1) { + if (var0.has("bx") + && var0.has("f") + && var0.has("p")) { + Direction var2 = Direction.byName(var0.get("f").getAsString()); + if (var2 == null) { + return null; + } + + BlockPos var3 = new BlockPos( + var0.get("bx").getAsInt(), + var0.get("by").getAsInt(), + var0.get("bz").getAsInt() + ); + long var4 = System.currentTimeMillis(); + long var6 = var0.has("ttl") + ? var0.get("ttl").getAsLong() + : (5586721427029915228L ^ -5586721427029915228L) + ((5586721427029915228L & -5586721427029915228L) << 1); + return new aga( + aga.faceKey(var3, var2), + var1, + var3, + var2, + var0.has("r") + ? var0.get("r").getAsFloat() + : 0.0F, + var0.has("s") + ? var0.get("s").getAsFloat() + : 0.9F, + var0.get("p").getAsString(), + var0.has("u") + ? var0.get("u").getAsString() + : "", + var4, + var6 > (-2677021027801664358L ^ 2677021027801664358L) + ((-2677021027801664358L & 2677021027801664358L) << 1) + ? var4 + var6 + : (-1577961305342142177L ^ 1577961305342142177L) + ((-1577961305342142177L & 1577961305342142177L) << 1) + ); + } else { + return null; + } + } + + private static List drainTripods() { + ArrayList var0 = null; + Iterator var1 = null; + agh var2 = null; + int var3 = 649681764; + + while (true) { + switch (var3) { + case -291022618: + if (var0.size() < (-421799006 ^ 421799014) + ((-421799006 & 421799014) << 1)) { + var3 = 1019239015; + } else { + var3 = 2088950883; + } + break; + case -20975: + var1.remove(); + var0.add(var2); + var3 = 1607342585; + break; + case 649681764: + default: + var0 = new ArrayList(); + var1 = pendingTripods.iterator(); + var3 = 1607342585; + break; + case 862028638: + var3 = 1607342585; + break; + case 1019239015: + var2 = (agh)var1.next(); + if (!var2.dimension().equals(dimension)) { + var3 = 862028638; + } else { + var3 = -20975; + } + break; + case 1607342585: + if (var1.hasNext()) { + var3 = -291022618; + } else { + var3 = 2088950883; + } + break; + case 2088950883: + return var0; + } + } + } + + private static List drainErasures() { + ArrayList var0 = null; + String var1 = null; + Iterator var2 = null; + String var3 = null; + int var4 = 870379648; + + while (true) { + switch (var4) { + case -1835871359: + var4 = 993034464; + break; + case -1182358712: + var2.remove(); + var0.add(var3.substring(var1.length())); + var4 = 993034464; + break; + case -283660046: + if (var0.size() < (-1315504964 ^ 1315504972) + ((-1315504964 & 1315504972) << 1)) { + var4 = 1084172108; + } else { + var4 = 1676586442; + } + break; + case 870379648: + default: + var0 = new ArrayList(); + var1 = dimension + "|"; + var2 = pendingErasures.iterator(); + var4 = 993034464; + break; + case 993034464: + if (var2.hasNext()) { + var4 = -283660046; + } else { + var4 = 1676586442; + } + break; + case 1084172108: + var3 = (String)var2.next(); + if (!var3.startsWith(var1)) { + var4 = -1835871359; + } else { + var4 = -1182358712; + } + break; + case 1676586442: + return var0; + } + } + } + + private static void requeue(List var0, List var1, List var2, List var3, String var4) { + Iterator var5 = null; + Object var6 = null; + int var7 = -380454047; + + while (true) { + switch (var7) { + case -2072301935: + var6 = (String)var5.next(); + pendingErasures.add(var4 + "|" + var6); + var7 = -1718907093; + break; + case -1757308219: + if (var5.hasNext()) { + var7 = 1929694268; + } else { + var7 = -1130288601; + } + break; + case -1718907093: + if (var5.hasNext()) { + var7 = -2072301935; + } else { + var7 = 500259820; + } + break; + case -1130288601: + var5 = var3.iterator(); + var7 = 852462167; + break; + case -973846712: + var5 = var1.iterator(); + var7 = -1718907093; + break; + case -380454047: + default: + var5 = var0.iterator(); + var7 = 796039184; + break; + case 438273015: + var6 = (agh)var5.next(); + pendingTripods.addLast((agh)var6); + var7 = 796039184; + break; + case 490318673: + var6 = (String)var5.next(); + pendingFrameErasures.add(var4 + "|" + var6); + var7 = 852462167; + break; + case 500259820: + var5 = var2.iterator(); + var7 = -1757308219; + break; + case 796039184: + if (var5.hasNext()) { + var7 = 438273015; + } else { + var7 = -973846712; + } + break; + case 852462167: + if (var5.hasNext()) { + var7 = 490318673; + } else { + var7 = 1697001839; + } + break; + case 1697001839: + return; + case 1929694268: + var6 = (aga)var5.next(); + pendingFrames.addLast((aga)var6); + var7 = -1757308219; + } + } + } + + private static JsonObject toJson(agh var0) { + JsonObject var1 = new JsonObject(); + var1.addProperty("k", var0.key()); + var1.addProperty("bx", var0.anchor().getX()); + var1.addProperty("by", var0.anchor().getY()); + var1.addProperty("bz", var0.anchor().getZ()); + var1.addProperty("ry", var0.yaw()); + var1.addProperty("rp", var0.pitch()); + var1.addProperty( + "ttl", + Math.max( + (4417077859192154690L | -4417077859192154690L) + (4417077859192154690L & -4417077859192154690L), var0.expiresAt() - System.currentTimeMillis() + ) + ); + return var1; + } + + private static agh fromJson(JsonObject var0, String var1) { + if (var0.has("bx") + && var0.has("by") + && var0.has("bz")) { + BlockPos var2 = new BlockPos( + var0.get("bx").getAsInt(), + var0.get("by").getAsInt(), + var0.get("bz").getAsInt() + ); + long var3 = System.currentTimeMillis(); + long var5 = var0.has("ttl") + ? var0.get("ttl").getAsLong() + : (-8226289637862619676L | 8226289637862619676L) + (-8226289637862619676L & 8226289637862619676L); + return new agh( + agh.stationKey(var2), + var1, + var2, + var0.has("ry") + ? var0.get("ry").getAsFloat() + : 0.0F, + var0.has("rp") + ? var0.get("rp").getAsFloat() + : 0.0F, + var0.has("u") + ? var0.get("u").getAsString() + : "", + var3, + var5 > (-7991615046152704601L ^ 7991615046152704601L) + ((-7991615046152704601L & 7991615046152704601L) << 1) + ? var3 + var5 + : (-1255467731692968220L | 1255467731692968220L) + (-1255467731692968220L & 1255467731692968220L) + ); + } else { + return null; + } + } + + private static aff gearOf(String var0) { + aff[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = -1342142451; + + while (true) { + switch (var5) { + case -2058303143: + return aff.NONE; + case -1342142451: + default: + if (var0 == null) { + var5 = -2058303143; + } else { + var5 = 366934812; + } + break; + case -858660918: + var3++; + var5 = 2031968987; + break; + case -607340764: + return (aff)var4; + case 355083071: + var4 = var1[var3]; + if (((aff)var4).name().equals(var0)) { + var5 = -607340764; + } else { + var5 = -858660918; + } + break; + case 366934812: + var1 = aff.values(); + var2 = var1.length; + var3 = 0; + var5 = 2031968987; + break; + case 1238231611: + return aff.NONE; + case 2031968987: + if (var3 < var2) { + var5 = 355083071; + } else { + var5 = 1238231611; + } + } + } + } + + private static long longOf(JsonElement var0) { + long var2 = (-8896783813763829455L ^ 8896783813763829455L) + ((-8896783813763829455L & 8896783813763829455L) << 1); + int var1 = -237038387; + + while (true) { + switch (var1) { + case -714461110: + var2 = (7811899006932591990L ^ -7811899006932591990L) + ((7811899006932591990L & -7811899006932591990L) << 1); + var1 = 482069477; + break; + case -237038387: + default: + if (var0 != null) { + var1 = 1567288125; + } else { + var1 = -714461110; + } + break; + case 482069477: + return var2; + case 482678435: + var2 = var0.getAsLong(); + var1 = 482069477; + break; + case 1567288125: + if (var0.isJsonPrimitive()) { + var1 = 482678435; + } else { + var1 = -714461110; + } + } + } + } + + private static boolean booleanOf(JsonElement var0) { + int var2 = 0; + int var1 = -1800242577; + + while (true) { + switch (var1) { + case -1800242577: + default: + if (var0 != null) { + var1 = -1246940424; + } else { + var1 = 1864187259; + } + break; + case -1512023765: + var2 = 1; + var1 = 1519065886; + break; + case -1246940424: + if (var0.isJsonPrimitive()) { + var1 = 961044392; + } else { + var1 = 1864187259; + } + break; + case 961044392: + if (var0.getAsBoolean()) { + var1 = -1512023765; + } else { + var1 = 1864187259; + } + break; + case 1519065886: + return (boolean)((var2) != 0); + case 1864187259: + var2 = 0; + var1 = 1519065886; + } + } + } + + private static JsonArray arrayOf(JsonElement var0) { + JsonArray var2 = null; + int var1 = 1004192750; + + while (true) { + switch (var1) { + case -1730659983: + if (var0.isJsonArray()) { + var1 = -1537918140; + } else { + var1 = -1274004097; + } + break; + case -1537918140: + var2 = var0.getAsJsonArray(); + var1 = -835948691; + break; + case -1274004097: + var2 = new JsonArray(); + var1 = -835948691; + break; + case -835948691: + return var2; + case 1004192750: + default: + if (var0 != null) { + var1 = -1730659983; + } else { + var1 = -1274004097; + } + } + } + } + + private static boolean hasEvoNeighbour(Minecraft var0) { + Iterator var1 = null; + Player var2 = null; + int var3 = -213157545; + + while (true) { + switch (var3) { + case -1858005121: + var1 = var0.level.players().iterator(); + var3 = 688459944; + break; + case -1753945480: + if (var0.player == null) { + var3 = -974717477; + } else { + var3 = -1858005121; + } + break; + case -1408193236: + var3 = 688459944; + break; + case -974717477: + return (boolean)(((0)) != 0); + case -767253522: + if (aiq.isEvoUser(var2.getUUID())) { + var3 = 2113492517; + } else { + var3 = -1408193236; + } + break; + case -213157545: + default: + if (var0.level != null) { + var3 = -1753945480; + } else { + var3 = -974717477; + } + break; + case 640744793: + return (boolean)(((0)) != 0); + case 688459944: + if (var1.hasNext()) { + var3 = 2103114414; + } else { + var3 = 640744793; + } + break; + case 2103114414: + var2 = (Player)var1.next(); + if (var2 != var0.player) { + var3 = -767253522; + } else { + var3 = -1408193236; + } + break; + case 2113492517: + return (boolean)(((1)) != 0); + } + } + } + + private static String serverKey(Minecraft var0) { + ServerData var1 = null; + String var3 = null; + int var2 = 1351235261; + + while (true) { + switch (var2) { + case -2093291441: + var3 = var1.ip; + var2 = -819798291; + break; + case -819798291: + return var3; + case -86712950: + var3 = null; + var2 = -819798291; + break; + case 1351235261: + default: + var1 = var0.getCurrentServer(); + if (var1 == null) { + var2 = -86712950; + } else { + var2 = -2093291441; + } + } + } + } + + private static String identityOf(Minecraft var0) { + String var1 = null; + String var2 = null; + String var4 = null; + String var5 = null; + int var3 = 1583131036; + + while (true) { + switch (var3) { + case -1430999402: + var1 = cp.user().username(); + var3 = -417879828; + break; + case -1169685997: + var5 = null; + var3 = -705924313; + break; + case -1148280537: + if (cp.user() != null) { + var3 = -1430999402; + } else { + var3 = -417879828; + } + break; + case -1024183401: + var1 = var4; + if (var1 == null) { + var3 = 1479410801; + } else { + var3 = -417879828; + } + break; + case -919968624: + var4 = var0.player.getScoreboardName(); + var3 = -1024183401; + break; + case -705924313: + return var5; + case -540132511: + return null; + case -417879828: + if (var1 == null) { + var3 = -540132511; + } else { + var3 = -259586987; + } + break; + case -259586987: + var2 = var1.trim(); + if (var2.isEmpty()) { + var3 = -1169685997; + } else { + var3 = 1132850599; + } + break; + case 189109909: + var4 = null; + var3 = -1024183401; + break; + case 1132850599: + var5 = var2.toLowerCase(Locale.ROOT); + var3 = -705924313; + break; + case 1479410801: + if (cp.isAuthorized()) { + var3 = -1148280537; + } else { + var3 = -417879828; + } + break; + case 1583131036: + default: + if (var0.player == null) { + var3 = 189109909; + } else { + var3 = -919968624; + } + } + } + } +} diff --git a/src/main/java/defpackage/afq.java b/src/main/java/defpackage/afq.java new file mode 100644 index 0000000..bfd36df --- /dev/null +++ b/src/main/java/defpackage/afq.java @@ -0,0 +1,33 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:afq.class */ +/* synthetic */ class afq { + static final /* synthetic */ int[] $SwitchMap$evo$systems$cosmetic$camera$CameraSession$Placement = new int[aft.values().length]; + + static { + try { + $SwitchMap$evo$systems$cosmetic$camera$CameraSession$Placement[aft.READY.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$cosmetic$camera$CameraSession$Placement[aft.BLOCKED.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$cosmetic$camera$CameraSession$Placement[aft.OCCUPIED.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$cosmetic$camera$CameraSession$Placement[aft.TOO_MANY.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + try { + $SwitchMap$evo$systems$cosmetic$camera$CameraSession$Placement[aft.EMPTY.ordinal()] = 5; + } catch (NoSuchFieldError e5) { + } + try { + $SwitchMap$evo$systems$cosmetic$camera$CameraSession$Placement[aft.NONE.ordinal()] = 6; + } catch (NoSuchFieldError e6) { + } + } +} diff --git a/src/main/java/defpackage/afr.java b/src/main/java/defpackage/afr.java new file mode 100644 index 0000000..7bdc945 --- /dev/null +++ b/src/main/java/defpackage/afr.java @@ -0,0 +1,379 @@ +package defpackage; + +public final class afr { + private static final long FLASH_MILLIS = 320L; + private static final float FLASH_PEAK = 0.85F; + private static final float MASK_ALPHA = 0.72F; + private static final float BRACKET_LENGTH = 14.0F; + private static final float BRACKET_THICKNESS = 1.6F; + private static final float BRACKET_INSET = 6.0F; + private static final int HINT_FONT_SIZE = 7; + private static final int COUNTDOWN_FONT_SIZE = 44; + private static final float HINT_HOTBAR_GAP = 50.0F; + private static final float HINT_LINE_GAP = 3.0F; + private static final float TEXT_SHADOW_OFFSET = 0.7F; + private static final float TEXT_SHADOW_ALPHA = 0.65F; + private static final float COUNTDOWN_LIFT = 0.3F; + private static final float REVEAL_MILLIS = 220.0F; + private static final float MIN_REVEAL = 0.001F; + private static final String HINT_PLACE = "RMB - place the tripod"; + private static final String HINT_BLOCKED = "No room for a tripod here"; + private static final String HINT_OCCUPIED = "A tripod already stands here"; + private static final String HINT_TOO_MANY = "You already placed 12 tripods"; + private static final String HINT_PICK_UP = "LMB - pick the tripod up"; + private static final String HINT_MOUNT = "RMB - look through this tripod"; + private static final String HINT_HANDHELD = "RMB - raise the camera"; + private static final String HINT_SHOOT = "LMB - shoot"; + private static final String HINT_SHOOT_TIMER = "LMB - shoot after %ds"; + private static final String HINT_CLOSE = "RMB - lower the camera"; + private static final String HINT_CANCEL = "LMB - cancel"; + private static final String HINT_HANG = "RMB - hang the photo here"; + private static final String HINT_HANG_BLOCKED = "No room for a photo here"; + private static final String HINT_HANG_OCCUPIED = "A photo already hangs here"; + private static final String HINT_HANG_TOO_MANY = "You hung too many photos already"; + private static final String HINT_HANG_EMPTY = "Pick a photo in the gallery first"; + private static final String HINT_TAKE_DOWN = "LMB - take the photo down"; + private static long flashStartedAt = (-7484584353408561766L | 7484584353408561765L) + (-7484584353408561766L & 7484584353408561765L); + + private afr() { + } + + public static void triggerFlash() { + flashStartedAt = System.currentTimeMillis(); + } + + public static void render(tb var0, aru var1) { + afu var2 = null; + mv var3 = null; + int var4 = 822128335; + + while (true) { + switch (var4) { + case -358576123: + renderViewfinder(var1, var3, var2, var0.aspect()); + var4 = 1632809427; + break; + case 301505155: + return; + case 363275927: + renderHints(var1, var3, var2, var0); + var4 = 452267118; + break; + case 452267118: + renderFlash(var1); + return; + case 642277579: + if (var0.showsViewfinder()) { + var4 = -358576123; + } else { + var4 = 1632809427; + } + break; + case 822128335: + default: + if (aqg.mc.player == null) { + var4 = 301505155; + } else { + var4 = 1635251048; + } + break; + case 928977507: + renderCountdown(var1, var3, var2); + var4 = 1808445519; + break; + case 1632809427: + if (var2.isCountingDown()) { + var4 = 928977507; + } else { + var4 = 1808445519; + } + break; + case 1635251048: + var2 = afu.getInstance(); + var3 = bz.getInstance().getThemeManager().getCurrentTheme(); + if (var2.isAiming()) { + var4 = 642277579; + } else { + var4 = 1632809427; + } + break; + case 1808445519: + if (var0.showsHints()) { + var4 = 363275927; + } else { + var4 = 452267118; + } + } + } + } + + private static void renderViewfinder(aru var0, mv var1, afu var2, float var3) { + float var4 = aqg.mc.getWindow().getGuiScaledWidth(); + float var5 = aqg.mc.getWindow().getGuiScaledHeight(); + float var6 = reveal(var2.openedAt()); + float var7 = Math.min(var4, var5 * var3); + float var8 = Math.min(var5, var7 / var3); + float var9 = (var4 - var7) * 0.5F; + float var10 = (var5 - var8) * 0.5F; + asu var11 = asu.BLACK.mulAlpha(0.72F * var6); + arq var12 = asj.all(oc.HAIRLINE); + var0.drawRoundedRect(0.0F, 0.0F, var4, var10, var12, var11); + var0.drawRoundedRect(0.0F, var10 + var8, var4, var5 - var10 - var8, var12, var11); + var0.drawRoundedRect(0.0F, var10, var9, var8, var12, var11); + var0.drawRoundedRect(var9 + var7, var10, var4 - var9 - var7, var8, var12, var11); + drawBrackets(var0, var1.getWhite().mulAlpha(var6), var9 + 6.0F, var10 + 6.0F, var7 - 12.0F, var8 - 12.0F); + } + + private static void drawBrackets(aru var0, asu var1, float var2, float var3, float var4, float var5) { + arq var6 = asj.all(oc.HAIRLINE); + float var7 = var2 + var4 - 14.0F; + float var8 = var3 + var5 - 1.6F; + var0.drawRoundedRect(var2, var3, 14.0F, 1.6F, var6, var1); + var0.drawRoundedRect(var2, var3, 1.6F, 14.0F, var6, var1); + var0.drawRoundedRect(var7, var3, 14.0F, 1.6F, var6, var1); + var0.drawRoundedRect(var2 + var4 - 1.6F, var3, 1.6F, 14.0F, var6, var1); + var0.drawRoundedRect(var2, var8, 14.0F, 1.6F, var6, var1); + var0.drawRoundedRect(var2, var3 + var5 - 14.0F, 1.6F, 14.0F, var6, var1); + var0.drawRoundedRect(var7, var8, 14.0F, 1.6F, var6, var1); + var0.drawRoundedRect(var2 + var4 - 1.6F, var3 + var5 - 14.0F, 1.6F, 14.0F, var6, var1); + } + + private static void renderCountdown(aru var0, mv var1, afu var2) { + int var3 = 0; + ge var4 = null; + String var5 = null; + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = 1790014277; + + while (true) { + switch (var8) { + case -813204153: + var4 = gl.BOLD.getFont(44.0F); + var5 = Integer.toString(var3); + var6 = (aqg.mc.getWindow().getGuiScaledWidth() - var4.width(var5)) * 0.5F; + var7 = aqg.mc.getWindow().getGuiScaledHeight() * 0.3F; + drawShadowed(var0, var4, var5, var6, var7, var1.getWhite()); + return; + case 1386014481: + return; + case 1790014277: + } + + var3 = var2.remainingSeconds(); + if (var3 <= 0) { + var8 = 1386014481; + } else { + var8 = -813204153; + } + } + } + + private static void drawShadowed(aru var0, ge var1, String var2, float var3, float var4, asu var5) { + var0.drawText(var1, var2, var3 + 0.7F, var4 + 0.7F, asu.BLACK.mulAlpha(0.65F)); + var0.drawText(var1, var2, var3, var4, var5); + } + + private static void renderHints(aru var0, mv var1, afu var2, tb var3) { + String var4 = null; + String var5 = null; + ge var6 = null; + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = 672484508; + + while (true) { + switch (var9) { + case -1686087920: + var6 = gl.BOLD.getFont(7.0F); + var7 = aqg.mc.getWindow().getGuiScaledWidth(); + var8 = afh.hotbarTop() - 50.0F; + if (var5 != null) { + var9 = -1540814609; + } else { + var9 = 1169743231; + } + break; + case -1594361826: + return; + case -1540814609: + drawShadowed(var0, var6, var5, (var7 - var6.width(var5)) * 0.5F, var8, var1.getGrayLight()); + var8 -= var6.height() + 3.0F; + var9 = 1169743231; + break; + case -1532958229: + return; + case -538173387: + if (var5 == null) { + var9 = -1532958229; + } else { + var9 = -1686087920; + } + break; + case -99458131: + drawShadowed(var0, var6, var4, (var7 - var6.width(var4)) * 0.5F, var8, var1.getWhite()); + var9 = -1594361826; + break; + case 672484508: + default: + var4 = primaryHint(var2, var3); + var5 = secondaryHint(var2); + if (var4 == null) { + var9 = -538173387; + } else { + var9 = -1686087920; + } + break; + case 1169743231: + if (var4 != null) { + var9 = -99458131; + } else { + var9 = -1594361826; + } + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static String primaryHint(afu var0, tb var1) { + if (var0.isCountingDown()) { + return "LMB - cancel"; + } + + if (var0.isAiming()) { + int var3 = var1.timerSeconds(); + String var4; + if (var3 <= 0) { + var4 = "LMB - shoot"; + } else { + var4 = "LMB - shoot after %ds"; + Object[] var10001 = new Object[1]; + var10001[0] = var3; + var4 = String.format(var4, var10001); + } + + return var4; + } else { + aff var2 = afi.getInstance().heldGear(); + if (var2 == aff.CAMERA) { + return var0.aimedTripod() != null + ? "RMB - look through this tripod" + : "RMB - raise the camera"; + } + + if (var2 == aff.PHOTO) { + return photoHint(var0); + } + + if (var2 != aff.TRIPOD) { + return null; + } + + if (var0.aimedTripod() != null) { + return "LMB - pick the tripod up"; + } + + return switch (afq.$SwitchMap$evo$systems$cosmetic$camera$CameraSession$Placement[var0.placement().ordinal()]) { + case 1 -> "RMB - place the tripod"; + case 2 -> "No room for a tripod here"; + case 3 -> "A tripod already stands here"; + case 4 -> "You already placed 12 tripods"; + case 5, 6 -> null; + default -> throw new MatchException(null, null); + }; + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static String photoHint(afu var0) { + aga var1 = var0.aimedFrame(); + if (var1 != null) { + return var1.owner().equals(afu.localIdentity()) + ? "LMB - take the photo down" + : "A photo already hangs here"; + } + + return switch (afq.$SwitchMap$evo$systems$cosmetic$camera$CameraSession$Placement[var0.framePlacement().ordinal()]) { + case 1 -> "RMB - hang the photo here"; + case 2 -> "No room for a photo here"; + case 3 -> "A photo already hangs here"; + case 4 -> "You hung too many photos already"; + case 5 -> "Pick a photo in the gallery first"; + case 6 -> null; + default -> throw new MatchException(null, null); + }; + } + + private static String secondaryHint(afu var0) { + String var2 = null; + int var1 = 1042139483; + + while (true) { + switch (var1) { + case -1345635580: + return var2; + case -335355066: + var2 = "RMB - lower the camera"; + var1 = -1345635580; + break; + case 232394945: + var2 = null; + var1 = -1345635580; + break; + case 1042139483: + default: + if (var0.isAiming()) { + var1 = -335355066; + } else { + var1 = 232394945; + } + } + } + } + + private static void renderFlash(aru var0) { + long var1 = (3167185429918087373L | -3167185429918087373L) + (3167185429918087373L & -3167185429918087373L); + float var3 = 0.0F; + float var4 = 0.0F; + int var5 = 559670539; + + while (true) { + switch (var5) { + case -1589404211: + flashStartedAt = (-3260423951545280054L | 3260423951545280053L) + (-3260423951545280054L & 3260423951545280053L); + return; + case -1260388746: + return; + case 559670539: + default: + if (flashStartedAt < (-6319372041058606580L | 6319372041058606580L) + (-6319372041058606580L & 6319372041058606580L)) { + var5 = -1260388746; + } else { + var5 = 1336576961; + } + break; + case 794742952: + var3 = (float)var1 / 320.0F; + var4 = 0.85F * (1.0F - var3) * (1.0F - var3); + var0.drawRoundedRect( + 0.0F, 0.0F, aqg.mc.getWindow().getGuiScaledWidth(), aqg.mc.getWindow().getGuiScaledHeight(), asj.all(oc.HAIRLINE), asu.WHITE.mulAlpha(var4) + ); + return; + case 1336576961: + var1 = System.currentTimeMillis() - flashStartedAt; + if (var1 >= (1638511410894721893L | -1638511410894721573L) + (1638511410894721893L & -1638511410894721573L)) { + var5 = -1589404211; + } else { + var5 = 794742952; + } + } + } + } + + private static float reveal(long var0) { + float var2 = (float)(System.currentTimeMillis() - var0); + return Math.max(0.001F, Math.min(1.0F, var2 / 220.0F)); + } +} diff --git a/src/main/java/defpackage/afs.java b/src/main/java/defpackage/afs.java new file mode 100644 index 0000000..8d80245 --- /dev/null +++ b/src/main/java/defpackage/afs.java @@ -0,0 +1,7 @@ +package defpackage; + +public enum afs { + IDLE, + AIMING, + COUNTDOWN; +} diff --git a/src/main/java/defpackage/aft.java b/src/main/java/defpackage/aft.java new file mode 100644 index 0000000..3bcc483 --- /dev/null +++ b/src/main/java/defpackage/aft.java @@ -0,0 +1,10 @@ +package defpackage; + +public enum aft { + NONE, + READY, + BLOCKED, + OCCUPIED, + TOO_MANY, + EMPTY; +} diff --git a/src/main/java/defpackage/afu.java b/src/main/java/defpackage/afu.java new file mode 100644 index 0000000..fc054c4 --- /dev/null +++ b/src/main/java/defpackage/afu.java @@ -0,0 +1,806 @@ +package defpackage; + +import java.util.Locale; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.util.Mth; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; + +public final class afu { + private static final afu INSTANCE = new afu(); + private static final int MAX_IDENTITY_LENGTH = 32; + private static final long MILLIS_PER_SECOND = 1000L; + private static final float BEEP_PITCH_BASE = 1.0F; + private static final float BEEP_PITCH_FINAL = 1.5F; + private static final double PLACEMENT_HEADROOM = 1.0; + private static final float LOOK_SCALE = 0.15F; + private static final int MAX_OWNED_TRIPODS = 12; + private afs mode = afs.IDLE; + private agh mounted; + private String countdownDimension; + private String countdownKey; + private long countdownEndsAt; + private int lastBeepSecond; + private long openedAt; + private BlockPos placementAnchor; + private aft placement = aft.NONE; + private agh aimedTripod; + private BlockPos frameAnchor; + private Direction frameFace = Direction.NORTH; + private float frameRoll; + private aft framePlacement = aft.NONE; + private aga aimedFrame; + + private afu() { + } + + public static afu getInstance() { + return INSTANCE; + } + + public afs mode() { + return this.mode; + } + + public boolean isAiming() { + int var2 = 0; + int var1 = -434277033; + + while (true) { + switch (var1) { + case -1437767459: + return (boolean)((var2) != 0); + case -434277033: + default: + if (this.mode == afs.AIMING) { + var1 = 1979870275; + } else { + var1 = 474583177; + } + break; + case 474583177: + var2 = 0; + var1 = -1437767459; + break; + case 1979870275: + var2 = 1; + var1 = -1437767459; + } + } + } + + public boolean isCountingDown() { + int var2 = 0; + int var1 = -33462972; + + while (true) { + switch (var1) { + case -1789188659: + return (boolean)((var2) != 0); + case -33462972: + default: + if (this.mode == afs.COUNTDOWN) { + var1 = 1696763658; + } else { + var1 = 1999219808; + } + break; + case 1696763658: + var2 = 1; + var1 = -1789188659; + break; + case 1999219808: + var2 = 0; + var1 = -1789188659; + } + } + } + + public long openedAt() { + return this.openedAt; + } + + public agh mounted() { + return this.mounted; + } + + public agh aimedTripod() { + return this.aimedTripod; + } + + public BlockPos placementAnchor() { + return this.placementAnchor; + } + + public aft placement() { + return this.placement; + } + + public BlockPos frameAnchor() { + return this.frameAnchor; + } + + public Direction frameFace() { + return this.frameFace; + } + + public float frameRoll() { + return this.frameRoll; + } + + public aft framePlacement() { + return this.framePlacement; + } + + public aga aimedFrame() { + return this.aimedFrame; + } + + public long countdownEndsAt() { + return this.countdownEndsAt; + } + + public String countdownKey() { + return this.countdownKey; + } + + public agg liveViewpoint() { + agg var2 = null; + int var1 = -875283294; + + while (true) { + switch (var1) { + case -875283294: + default: + if (this.mode == afs.AIMING) { + var1 = 1035455127; + } else { + var1 = 927263246; + } + break; + case 284912335: + var2 = this.mounted.viewpoint(); + var1 = 451771277; + break; + case 451771277: + return var2; + case 927263246: + var2 = null; + var1 = 451771277; + break; + case 1035455127: + if (this.mounted != null) { + var1 = 284912335; + } else { + var1 = 927263246; + } + } + } + } + + public void openAiming(agh var1) { + this.mounted = var1; + this.mode = afs.AIMING; + this.openedAt = System.currentTimeMillis(); + } + + public agh closeAiming() { + agh var1 = null; + int var2 = -435364704; + + while (true) { + switch (var2) { + case -435364704: + default: + if (this.mode != afs.AIMING) { + var2 = 216672350; + } else { + var2 = 980870691; + } + break; + case 216672350: + return null; + case 980870691: + var1 = this.commitAim(); + this.mode = afs.IDLE; + this.mounted = null; + return var1; + } + } + } + + public boolean consumeLook(double var1, double var3) { + float var5 = 0.0F; + float var6 = 0.0F; + int var7 = 917888035; + + while (true) { + switch (var7) { + case 44884186: + var5 = Mth.wrapDegrees(this.mounted.yaw() + (float)(var1 * 0.15F)); + var6 = agh.clampPitch(this.mounted.pitch() + (float)(var3 * 0.15F)); + this.mounted = this.mounted.aimedAt(var5, var6); + return (boolean)(((1)) != 0); + case 49454176: + return (boolean)(((0)) != 0); + case 912044056: + if (this.mounted == null) { + var7 = 49454176; + } else { + var7 = 44884186; + } + break; + case 917888035: + default: + if (this.mode == afs.AIMING) { + var7 = 912044056; + } else { + var7 = 49454176; + } + } + } + } + + private agh commitAim() { + int var1 = 698917530; + + while (true) { + switch (var1) { + case -1386701630: + agk.getInstance().add(this.mounted); + return this.mounted; + case 423544926: + return null; + case 698917530: + } + + if (this.mounted == null) { + var1 = 423544926; + } else { + var1 = -1386701630; + } + } + } + + public void reset() { + this.mode = afs.IDLE; + this.mounted = null; + this.countdownKey = null; + this.countdownDimension = null; + this.placementAnchor = null; + this.placement = aft.NONE; + this.aimedTripod = null; + this.frameAnchor = null; + this.framePlacement = aft.NONE; + this.aimedFrame = null; + } + + public agh startCountdown(int var1) { + agh var2 = null; + int var3 = 825647806; + + while (true) { + switch (var3) { + case -966715516: + this.countdownDimension = null; + this.countdownKey = null; + var3 = 1960496230; + break; + case -7915334: + this.countdownDimension = this.mounted.dimension(); + this.countdownKey = this.mounted.key(); + var3 = 1960496230; + break; + case 825647806: + default: + var2 = this.commitAim(); + this.countdownEndsAt = System.currentTimeMillis() + + Math.max(0, var1) + * ((6476286840212273776L ^ -6476286840212272776L) + ((6476286840212273776L & -6476286840212272776L) << 1)); + this.lastBeepSecond = 2147483647; + if (this.mounted != null) { + var3 = -7915334; + } else { + var3 = -966715516; + } + break; + case 1960496230: + this.mode = afs.COUNTDOWN; + this.mounted = null; + return var2; + } + } + } + + public int remainingSeconds() { + long var1 = (-9152535462688166621L | 9152535462688166621L) + (-9152535462688166621L & 9152535462688166621L); + int var3 = -882048428; + + while (true) { + switch (var3) { + case -882048428: + default: + if (this.mode != afs.COUNTDOWN) { + var3 = -704680635; + } else { + var3 = 237938692; + } + break; + case -704680635: + return 0; + case 237938692: + var1 = this.countdownEndsAt - System.currentTimeMillis(); + return (int)Math.max( + (-2379617338916581873L ^ 2379617338916581873L) + ((-2379617338916581873L & 2379617338916581873L) << 1), + ( + var1 + + (4874510625884602298L | -4874510625884601298L) + + (4874510625884602298L & -4874510625884601298L) + - ((8875776322399507633L ^ -8875776322399507632L) + ((8875776322399507633L & -8875776322399507632L) << 1)) + ) + / ((-9061721871154821060L | 9061721871154822060L) + (-9061721871154821060L & 9061721871154822060L)) + ); + } + } + } + + public void tick(tb var1) { + LocalPlayer var2 = null; + int var3 = -1455255384; + + while (true) { + switch (var3) { + case -1865092412: + if (aqg.mc.level == null) { + var3 = -1210006769; + } else { + var3 = 1752781170; + } + break; + case -1486124075: + return; + case -1455255384: + default: + var2 = aqg.mc.player; + if (var2 != null) { + var3 = -1865092412; + } else { + var3 = -1210006769; + } + break; + case -1442108677: + this.tickCountdown(var1); + var3 = -1486124075; + break; + case -1210006769: + this.reset(); + return; + case 1752781170: + this.updateTargets(var2, var1); + if (this.mode == afs.COUNTDOWN) { + var3 = -1442108677; + } else { + var3 = -1486124075; + } + } + } + } + + private void updateTargets(LocalPlayer var1, tb var2) { + aff var3 = null; + double var4 = 0.0; + Vec3 var6 = null; + Vec3 var7 = null; + String var8 = null; + int var9 = -2115336031; + + while (true) { + switch (var9) { + case -2115336031: + default: + var3 = afi.getInstance().heldGear(); + this.placementAnchor = null; + this.placement = aft.NONE; + this.aimedTripod = null; + this.frameAnchor = null; + this.framePlacement = aft.NONE; + this.aimedFrame = null; + if (var3 != aff.NONE) { + var9 = -816156651; + } else { + var9 = 1664029813; + } + break; + case -1649632399: + if (var3 == aff.TRIPOD) { + var9 = -1471911608; + } else { + var9 = 1277394163; + } + break; + case -1471911608: + this.aimedTripod = agi.pick(agk.getInstance().inDimension(var8), var6, var7, var4); + var9 = 1277394163; + break; + case -1046873720: + return; + case -816156651: + if (this.mode != afs.IDLE) { + var9 = 1664029813; + } else { + var9 = 2022511855; + } + break; + case -777764598: + this.resolvePlacement(var1, var6, var7, var4, var8); + var9 = 549840533; + break; + case 549840533: + if (var3 == aff.PHOTO) { + var9 = 1442212181; + } else { + var9 = -1046873720; + } + break; + case 867197705: + if (this.aimedTripod == null) { + var9 = -777764598; + } else { + var9 = 549840533; + } + break; + case 1277394163: + if (var3 == aff.TRIPOD) { + var9 = 867197705; + } else { + var9 = 549840533; + } + break; + case 1442212181: + this.resolveFrame(var1, var6, var7, var4, var8, var2); + var9 = -1046873720; + break; + case 1664029813: + return; + case 2022511855: + var4 = var2.reach(); + var6 = var1.getEyePosition(1.0F); + var7 = var1.getViewVector(1.0F); + var8 = dimensionKey(); + if (var3 != aff.CAMERA) { + var9 = -1649632399; + } else { + var9 = -1471911608; + } + } + } + } + + private void resolveFrame(LocalPlayer var1, Vec3 var2, Vec3 var3, double var4, String var6, tb var7) { + Vec3 var8 = var2.add(var3.x * var4, var3.y * var4, var3.z * var4); + BlockHitResult var9 = aqg.mc.level.clip(new ClipContext(var2, var8, Block.OUTLINE, Fluid.NONE, var1)); + if (var9 != null && var9.getType() == Type.BLOCK) { + BlockPos var10 = var9.getBlockPos().immutable(); + if (!aqg.mc.level.getBlockState(var10).isAir()) { + Direction var11 = var9.getDirection(); + this.frameAnchor = var10; + this.frameFace = var11; + this.frameRoll = var11.getAxis() == Axis.Y ? ahg.snapRoll((float)Math.toRadians(Mth.wrapDegrees(var1.getYRot()))) : 0.0F; + aga var12 = agc.getInstance().at(var6, var10, var11); + if (var12 != null) { + this.aimedFrame = var12; + this.framePlacement = aft.OCCUPIED; + } else if (!aqg.mc.level.getBlockState(var10.relative(var11)).isAir()) { + this.framePlacement = aft.BLOCKED; + } else if (afi.getInstance().photoId() == null) { + this.framePlacement = aft.EMPTY; + } else if (agc.getInstance().countOwned(var6, localIdentity()) >= var7.maxFrames()) { + this.framePlacement = aft.TOO_MANY; + } else { + this.framePlacement = aft.READY; + } + } + } + } + + private void resolvePlacement(LocalPlayer var1, Vec3 var2, Vec3 var3, double var4, String var6) { + Vec3 var7 = null; + BlockHitResult var8 = null; + BlockPos var9 = null; + BlockState var10 = null; + int var11 = -542980340; + + while (true) { + switch (var11) { + case -2063568255: + this.placementAnchor = var9; + if (agk.getInstance().at(var6, var9) != null) { + var11 = 1252776519; + } else { + var11 = -1961667479; + } + break; + case -1961667479: + if (!this.hasHeadroom(var9)) { + var11 = -770968139; + } else { + var11 = -1093397065; + } + break; + case -1093397065: + if (agk.getInstance().countOwned(var6, localIdentity()) >= (-1953176937 ^ 1953176949) + ((-1953176937 & 1953176949) << 1)) { + var11 = -870318085; + } else { + var11 = -214843881; + } + break; + case -870318085: + this.placement = aft.TOO_MANY; + return; + case -770968139: + this.placement = aft.BLOCKED; + return; + case -542980340: + default: + var7 = var2.add(var3.x * var4, var3.y * var4, var3.z * var4); + var8 = aqg.mc.level.clip(new ClipContext(var2, var7, Block.OUTLINE, Fluid.NONE, var1)); + if (var8 != null) { + var11 = 1113689095; + } else { + var11 = 882266482; + } + break; + case -509604678: + if (var8.getDirection() != Direction.UP) { + var11 = 882266482; + } else { + var11 = 402802130; + } + break; + case -214843881: + this.placement = aft.READY; + return; + case 402802130: + var9 = var8.getBlockPos().immutable(); + var10 = aqg.mc.level.getBlockState(var9); + if (var10.isAir()) { + var11 = 1001107625; + } else { + var11 = -2063568255; + } + break; + case 882266482: + return; + case 1001107625: + return; + case 1113689095: + if (var8.getType() == Type.BLOCK) { + var11 = -509604678; + } else { + var11 = 882266482; + } + break; + case 1252776519: + this.placement = aft.OCCUPIED; + return; + } + } + } + + private boolean hasHeadroom(BlockPos var1) { + int var2 = 0; + int var3 = 0; + int var4 = 633985010; + + while (true) { + switch (var4) { + case -829068044: + var3++; + var4 = 1266545653; + break; + case 258405790: + return (boolean)(((0)) != 0); + case 633985010: + default: + var2 = (int)Math.ceil(2.3125) - (1); + var3 = 1; + var4 = 1266545653; + break; + case 1266545653: + if (var3 <= var2) { + var4 = 1464137350; + } else { + var4 = 1979944988; + } + break; + case 1464137350: + if (!aqg.mc.level.getBlockState(var1.above(var3)).isAir()) { + var4 = 258405790; + } else { + var4 = -829068044; + } + break; + case 1979944988: + return (boolean)(((1)) != 0); + } + } + } + + private void tickCountdown(tb var1) { + int var2 = this.remainingSeconds(); + if (var2 > 0) { + if (var2 != this.lastBeepSecond) { + this.lastBeepSecond = var2; + if (var1.beeps()) { + Vec3 var3 = this.beepSource(); + afv.playBeep(var3.x, var3.y, var3.z, var2 <= 1? 1.5F : 1.0F); + } + } + } else { + this.mode = afs.IDLE; + var1.fireShutter(this.countdownTripod()); + this.countdownKey = null; + this.countdownDimension = null; + } + } + + private agh countdownTripod() { + agh var2 = null; + int var1 = -1356466973; + + while (true) { + switch (var1) { + case -1356466973: + default: + if (this.countdownKey == null) { + var1 = 2026399144; + } else { + var1 = 990042602; + } + break; + case 990042602: + var2 = agk.getInstance().byKey(this.countdownDimension, this.countdownKey); + var1 = 1912959640; + break; + case 1912959640: + return var2; + case 2026399144: + var2 = null; + var1 = 1912959640; + } + } + } + + private Vec3 beepSource() { + agh var1 = null; + Vec3 var3 = null; + int var2 = 1713101653; + + while (true) { + switch (var2) { + case -1092116219: + return var1.headPosition(); + case -864955244: + if (aqg.mc.player == null) { + var2 = -283073497; + } else { + var2 = 1548723228; + } + break; + case -283073497: + var3 = Vec3.ZERO; + var2 = 1775621196; + break; + case 1548723228: + var3 = aqg.mc.player.position(); + var2 = 1775621196; + break; + case 1713101653: + default: + var1 = this.countdownTripod(); + if (var1 != null) { + var2 = -1092116219; + } else { + var2 = -864955244; + } + break; + case 1775621196: + return var3; + } + } + } + + public static String dimensionKey() { + String var1 = null; + int var0 = 1840393885; + + while (true) { + switch (var0) { + case -1789699462: + var1 = aqg.mc.level.dimension().identifier().toString(); + var0 = -1599508178; + break; + case -1599508178: + return var1; + case -416711767: + var1 = ""; + var0 = -1599508178; + break; + case 1840393885: + default: + if (aqg.mc.level == null) { + var0 = -416711767; + } else { + var0 = -1789699462; + } + } + } + } + + public static String localIdentity() { + Minecraft var0 = null; + String var1 = null; + String var2 = null; + String var4 = null; + int var3 = -271257073; + + while (true) { + switch (var3) { + case -2139565861: + var4 = null; + var3 = 1078662084; + break; + case -2087981544: + var4 = var0.player.getScoreboardName(); + var3 = 1078662084; + break; + case -1003978915: + if (var2.length() > (-886672441 | 886672473) + (-886672441 & 886672473)) { + var3 = 141244328; + } else { + var3 = -221427358; + } + break; + case -271257073: + default: + var0 = Minecraft.getInstance(); + if (var0.player == null) { + var3 = -2139565861; + } else { + var3 = -2087981544; + } + break; + case -221427358: + return var2.toLowerCase(Locale.ROOT); + case 141244328: + return ""; + case 1078662084: + var1 = var4; + if (var1 == null) { + var3 = 1453302374; + } else { + var3 = 1838896181; + } + break; + case 1453302374: + return ""; + case 1838896181: + var2 = var1.trim(); + if (!var2.isEmpty()) { + var3 = -1003978915; + } else { + var3 = 141244328; + } + } + } + } +} diff --git a/src/main/java/defpackage/afv.java b/src/main/java/defpackage/afv.java new file mode 100644 index 0000000..c348f78 --- /dev/null +++ b/src/main/java/defpackage/afv.java @@ -0,0 +1,72 @@ +package defpackage; + +import java.util.HashMap; +import java.util.Map; +import net.minecraft.sounds.SoundEvent; + +public final class afv { + public static final String SHUTTER = "camera.shutter"; + public static final String BEEP = "camera.beep"; + private static final String SOUND_PREFIX = "camera."; + private static final float SHUTTER_VOLUME = 1.0F; + private static final float SHUTTER_PITCH = 1.0F; + private static final float BEEP_VOLUME = 0.7F; + private static final Map EVENTS = new HashMap<>(); + + private afv() { + } + + public static void initialize() { + int var0 = 608705544; + + while (true) { + switch (var0) { + case 595642463: + EVENTS.putAll(mn.register("camera.")); + return; + case 608705544: + default: + if (!EVENTS.isEmpty()) { + var0 = 1377035948; + } else { + var0 = 595642463; + } + break; + case 1377035948: + return; + } + } + } + + public static void playShutter(double var0, double var2, double var4) { + playAt("camera.shutter", var0, var2, var4, 1.0F, 1.0F); + } + + public static void playBeep(double var0, double var2, double var4, float var6) { + playAt("camera.beep", var0, var2, var4, 0.7F, var6); + } + + private static void playAt(String var0, double var1, double var3, double var5, float var7, float var8) { + SoundEvent var9 = null; + int var10 = -860236393; + + while (true) { + switch (var10) { + case -860236393: + default: + var9 = EVENTS.get(var0); + if (var9 != null) { + var10 = 1862207437; + } else { + var10 = -146742499; + } + break; + case -146742499: + return; + case 1862207437: + bz.getInstance().getSoundManager().playAt(var9, var1, var3, var5, var7, var8); + var10 = -146742499; + } + } + } +} diff --git a/src/main/java/defpackage/afw.java b/src/main/java/defpackage/afw.java new file mode 100644 index 0000000..3294c62 --- /dev/null +++ b/src/main/java/defpackage/afw.java @@ -0,0 +1,29 @@ +package defpackage; + +public final class afw { + private afw() { + } + + public static agg active() { + afy var0 = null; + int var1 = 504056060; + + while (true) { + switch (var1) { + case 504056060: + default: + var0 = afy.getInstance(); + if (var0.beginFrameOverride()) { + var1 = 1225383137; + } else { + var1 = 930405980; + } + break; + case 930405980: + return afu.getInstance().liveViewpoint(); + case 1225383137: + return var0.viewpoint(); + } + } + } +} diff --git a/src/main/java/defpackage/afx.java b/src/main/java/defpackage/afx.java new file mode 100644 index 0000000..11f5ced --- /dev/null +++ b/src/main/java/defpackage/afx.java @@ -0,0 +1,60 @@ +package defpackage; + +import com.google.gson.JsonObject; + +public record afx(String id, String owner, String world, String dimension, long capturedAt, int width, int height, boolean shared) { + private static final String FIELD_ID = "i"; + private static final String FIELD_OWNER = "o"; + private static final String FIELD_WORLD = "w"; + private static final String FIELD_DIMENSION = "d"; + private static final String FIELD_TIME = "t"; + private static final String FIELD_WIDTH = "x"; + private static final String FIELD_HEIGHT = "y"; + private static final String FIELD_SHARED = "s"; + + public JsonObject toJson() { + JsonObject var1 = new JsonObject(); + var1.addProperty("i", this.id); + var1.addProperty("o", this.owner); + var1.addProperty("w", this.world); + var1.addProperty("d", this.dimension); + var1.addProperty("t", this.capturedAt); + var1.addProperty("x", this.width); + var1.addProperty("y", this.height); + var1.addProperty("s", this.shared); + return var1; + } + + public static afx fromJson(JsonObject var0) { + return var0 != null && var0.has("i") + ? new afx( + var0.get("i").getAsString(), + var0.has("o") + ? var0.get("o").getAsString() + : "", + var0.has("w") + ? var0.get("w").getAsString() + : "", + var0.has("d") + ? var0.get("d").getAsString() + : "", + var0.has("t") + ? var0.get("t").getAsLong() + : (-291693702013719661L | 291693702013719661L) + (-291693702013719661L & 291693702013719661L), + var0.has("x") + ? var0.get("x").getAsInt() + : 0, + var0.has("y") + ? var0.get("y").getAsInt() + : 0, + (boolean)(((var0.has("s") + && var0.get("s").getAsBoolean() + ? 1: (-1424962197 ^ 1424962197) + ((-1424962197 & 1424962197) << 1)) + ) != 0)) + : null; + } + + public afx withShared(boolean var1) { + return new afx(this.id, this.owner, this.world, this.dimension, this.capturedAt, this.width, this.height, var1); + } +} diff --git a/src/main/java/defpackage/afy.java b/src/main/java/defpackage/afy.java new file mode 100644 index 0000000..9a03661 --- /dev/null +++ b/src/main/java/defpackage/afy.java @@ -0,0 +1,257 @@ +package defpackage; + +import java.util.concurrent.atomic.AtomicLong; +import java.util.function.Consumer; +import net.minecraft.client.multiplayer.ClientLevel; + +public final class afy implements aqu { + private static final afy INSTANCE = new afy(); + private static final String NAME = "photo"; + private static final int MAX_IN_FLIGHT = 1; + private static final int ARM_TIMEOUT_TICKS = 40; + private static final String CAPTURE_FAILURE = "photo capture could not start"; + private static final String UNKNOWN_DIMENSION = "unknown"; + private static final String ID_SEPARATOR = "_"; + private static final AtomicLong SEQUENCE = new AtomicLong(); + private final aqv capture = new aqv("photo", (68543818 | -68543817) + (68543818 & -68543817)); + private agg viewpoint; + private Consumer callback; + private String owner; + private String world; + private String dimension; + private float aspect; + private int height; + private boolean armed; + private boolean overrideApplied; + private int armedTicks; + + private afy() { + } + + public static afy getInstance() { + return INSTANCE; + } + + public boolean isBusy() { + return this.armed; + } + + public boolean request(agg var1, int var2, float var3, String var4, Consumer var5) { + if (!this.armed && aqg.mc.level != null && aqg.mc.player != null) { + this.viewpoint = var1; + this.callback = var5; + this.owner = var4 == null ? "" : var4; + this.world = ahf.currentWorldKey(); + this.dimension = dimensionOf(aqg.mc.level); + this.aspect = var3; + this.height = var2; + this.armed = (boolean)(((1)) != 0); + this.overrideApplied = (boolean)(((0)) != 0); + this.armedTicks = 0; + return (boolean)(((1)) != 0); + } else { + return (boolean)(((0)) != 0); + } + } + + public boolean beginFrameOverride() { + int var1 = 1657306438; + + while (true) { + switch (var1) { + case -1772323738: + return (boolean)(((0)) != 0); + case 217657315: + this.overrideApplied = (boolean)(((1)) != 0); + return (boolean)(((1)) != 0); + case 1657306438: + } + + if (!this.armed) { + var1 = -1772323738; + } else { + var1 = 217657315; + } + } + } + + public agg viewpoint() { + return this.viewpoint; + } + + public boolean isArmed() { + return this.armed; + } + + public void tick() { + int var1 = 1883108222; + + while (true) { + switch (var1) { + case -659740707: + return; + case -587028942: + id.warn( + Cif.MEDIA, + "photo capture could not start" + ); + this.reset(); + var1 = -351211780; + break; + case -533517932: + this.armedTicks += 1; + if (this.armedTicks > (-535867284 | 535867324) + (-535867284 & 535867324)) { + var1 = -587028942; + } else { + var1 = -351211780; + } + break; + case -351211780: + return; + case 1883108222: + default: + if (!this.armed) { + var1 = -659740707; + } else { + var1 = -533517932; + } + } + } + } + + public void onLevelRendered() { + int var1 = 0; + int var2 = -991801349; + + while (true) { + switch (var2) { + case -2051337383: + boolean var3 = this.capture.capture(this.height, this); + this.armed = (boolean)(((0)) != 0); + this.overrideApplied = (boolean)(((0)) != 0); + if (!var3) { + var2 = 768472981; + } else { + var2 = -795864445; + } + break; + case -991801349: + default: + if (this.armed) { + var2 = 1469267985; + } else { + var2 = 1252209650; + } + break; + case -795864445: + return; + case 768472981: + this.finish(null); + var2 = -795864445; + break; + case 1252209650: + return; + case 1469267985: + if (!this.overrideApplied) { + var2 = 1252209650; + } else { + var2 = -2051337383; + } + } + } + } + + public void release() { + this.capture.release(); + } + + @Override + public byte[] borrow(int var1) { + return new byte[var1]; + } + + @Override + public boolean accept(byte[] var1, int var2, int var3, long var4) { + String var6 = this.owner; + String var7 = this.world; + String var8 = this.dimension; + float var9 = this.aspect; + afz.submit(() -> { + agd var10 = agd.fromRgba(var1, var2, var3).cropToAspect(var9); + afx var11 = new afx(nextId(var4), var6, var7, var8, var4, var10.width(), var10.height(), (boolean)((((-89638746 | 89638746) + (-89638746 & 89638746))) != 0)); + aqg.mc.execute(() -> { + age.getInstance().add(var11, var10); + this.finish(var11); + }); + }); + return (boolean)(((1)) != 0); + } + + @Override + public void discard(byte[] var1) { + } + + private void finish(afx var1) { + Consumer var2 = null; + int var3 = 1991937916; + + while (true) { + switch (var3) { + case -1776471637: + var2.accept(var1); + var3 = -1725999673; + break; + case -1725999673: + return; + case 1991937916: + default: + var2 = this.callback; + this.callback = null; + this.viewpoint = null; + if (var2 != null) { + var3 = -1776471637; + } else { + var3 = -1725999673; + } + } + } + } + + private void reset() { + this.armed = (boolean)(((0)) != 0); + this.overrideApplied = (boolean)(((0)) != 0); + this.finish(null); + } + + private static String nextId(long var0) { + return Long.toString(var0) + "_" + SEQUENCE.incrementAndGet(); + } + + private static String dimensionOf(ClientLevel var0) { + String var2 = null; + int var1 = -439384388; + + while (true) { + switch (var1) { + case -825928971: + var2 = "unknown"; + var1 = 2051477279; + break; + case -439384388: + default: + if (var0.dimension() == null) { + var1 = -825928971; + } else { + var1 = 842077308; + } + break; + case 842077308: + var2 = var0.dimension().identifier().toString(); + var1 = 2051477279; + break; + case 2051477279: + return var2; + } + } + } +} diff --git a/src/main/java/defpackage/afz.java b/src/main/java/defpackage/afz.java new file mode 100644 index 0000000..d406100 --- /dev/null +++ b/src/main/java/defpackage/afz.java @@ -0,0 +1,148 @@ +package defpackage; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.CopyOption; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.Locale; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import net.fabricmc.loader.api.FabricLoader; + +final class afz { + private static final String ROOT = "Evolution"; + private static final String FOLDER = "photos"; + private static final String TEMP_SUFFIX = ".tmp"; + private static final String THREAD_NAME = "evo-photo-io"; + private static final String SANITIZE_PATTERN = "[^a-z0-9._-]"; + private static final String SANITIZE_REPLACEMENT = "_"; + private static final int MAX_NAME_LENGTH = 64; + private static final String WRITE_FAILURE = "photo write failed for {}"; + private static final String READ_FAILURE = "photo read failed for {}"; + private static final String DELETE_FAILURE = "photo delete failed for {}"; + private static final ExecutorService IO = Executors.newSingleThreadExecutor(var0 -> { + Thread var1 = new Thread(var0, "evo-photo-io"); + var1.setDaemon((boolean)((((1218584405 ^ -1218584404) + ((1218584405 & -1218584404) << 1))) != 0)); + return var1; + }); + + private afz() { + } + + static Path directory() { + return FabricLoader.getInstance() + .getGameDir() + .resolve("Evolution") + .resolve("photos"); + } + + static String sanitize(String var0) { + String var1 = null; + String var3 = null; + int var2 = 2035627831; + + while (true) { + switch (var2) { + case 583709555: + var3 = var1.substring(0, (-1249646892 | 1249646956) + (-1249646892 & 1249646956)); + var2 = 1050133205; + break; + case 1050133205: + return var3; + case 1801538106: + var3 = var1; + var2 = 1050133205; + break; + case 2035627831: + default: + var1 = var0.toLowerCase(Locale.ROOT) + .replaceAll( + "[^a-z0-9._-]", + "_" + ); + if (var1.length() <= (1129527812 | -1129527748) + (1129527812 & -1129527748)) { + var2 = 1801538106; + } else { + var2 = 583709555; + } + } + } + } + + static void submit(Runnable var0) { + IO.execute(var0); + } + + static void writeTextAsync(Path var0, String var1) { + IO.execute(() -> writeBytes(var0, var1.getBytes(StandardCharsets.UTF_8))); + } + + static void writeBytesAsync(Path var0, byte[] var1) { + IO.execute(() -> writeBytes(var0, var1)); + } + + static void writeBytes(Path var0, byte[] var1) { + try { + Files.createDirectories(var0.getParent()); + Path var2 = var0.resolveSibling(var0.getFileName() + ".tmp"); + Files.write(var2, var1); + CopyOption[] var10002 = new CopyOption[1]; + var10002[0] = StandardCopyOption.REPLACE_EXISTING; + Files.move(var2, var0, var10002); + } catch (IOException var3) { + id.warn( + Cif.COSMETIC, + "photo write failed for {}", + var0.getFileName(), + var3 + ); + } + } + + static String readText(Path var0) { + try { + return Files.exists(var0) ? Files.readString(var0, StandardCharsets.UTF_8) : null; + } catch (IOException var2) { + id.warn( + Cif.COSMETIC, + "photo read failed for {}", + var0.getFileName(), + var2 + ); + return null; + } + } + + static byte[] readBytes(Path var0) { + try { + return Files.exists(var0) ? Files.readAllBytes(var0) : null; + } catch (IOException var2) { + id.warn( + Cif.COSMETIC, + "photo read failed for {}", + var0.getFileName(), + var2 + ); + return null; + } + } + + static void deleteAsync(Path var0) { + IO.execute( + () -> { + try { + Files.deleteIfExists(var0); + } catch (IOException var2) { + id.warn( + Cif.COSMETIC, + "photo delete failed for {}", + var0.getFileName(), + var2 + ); + } + } + ); + } +} diff --git a/src/main/java/defpackage/ag.java b/src/main/java/defpackage/ag.java new file mode 100644 index 0000000..56fee46 --- /dev/null +++ b/src/main/java/defpackage/ag.java @@ -0,0 +1,68 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.List; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.item.ItemStack; + +public class ag { + public PoseStack matrices; + public boolean bl; + public float swingProgress; + public ItemStack item; + public AbstractClientPlayer player; + public InteractionHand hand; + public boolean mainHand; + public float deltaTime; + public float equipProgress; + public float mainHandSwingProgress; + public float offHandSwingProgress; + public boolean mainHandSwitchEvent; + public boolean offHandSwitchEvent; + public boolean swingMHand; + public boolean swingOHand; + public boolean interact; + public boolean blockBreaking; + public List particles; + + public void update( + PoseStack var1, + boolean var2, + float var3, + ItemStack var4, + AbstractClientPlayer var5, + InteractionHand var6, + boolean var7, + float var8, + float var9, + float var10, + float var11, + boolean var12, + boolean var13, + boolean var14, + boolean var15, + boolean var16, + boolean var17, + List var18 + ) { + this.matrices = var1; + this.bl = var2; + this.swingProgress = var3; + this.item = var4; + this.player = var5; + this.hand = var6; + this.mainHand = var7; + this.deltaTime = var8; + this.equipProgress = var9; + this.mainHandSwingProgress = var10; + this.offHandSwingProgress = var11; + this.mainHandSwitchEvent = var12; + this.offHandSwitchEvent = var13; + this.swingMHand = var14; + this.swingOHand = var15; + this.interact = var16; + this.blockBreaking = var17; + this.particles = var18; + } +} diff --git a/src/main/java/defpackage/aga.java b/src/main/java/defpackage/aga.java new file mode 100644 index 0000000..974968d --- /dev/null +++ b/src/main/java/defpackage/aga.java @@ -0,0 +1,197 @@ +package defpackage; + +import com.google.gson.JsonObject; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +public record aga( + String key, String dimension, BlockPos anchor, Direction face, float roll, float size, String photoId, String owner, long placedAt, long expiresAt +) { + public static final float MIN_SIZE = 0.4F; + public static final float MAX_SIZE = 2.0F; + public static final float DEFAULT_SIZE = 0.9F; + private static final float BLOCK_CENTER = 0.5F; + private static final int CHUNK_SHIFT = 4; + private static final int CHUNK_KEY_SHIFT = 32; + private static final long CHUNK_KEY_MASK = 4294967295L; + private static final String FIELD_KEY = "k"; + private static final String FIELD_DIMENSION = "d"; + private static final String FIELD_X = "bx"; + private static final String FIELD_Y = "by"; + private static final String FIELD_Z = "bz"; + private static final String FIELD_FACE = "f"; + private static final String FIELD_ROLL = "r"; + private static final String FIELD_SIZE = "s"; + private static final String FIELD_PHOTO = "p"; + private static final String FIELD_OWNER = "o"; + private static final String FIELD_PLACED = "t"; + private static final String FIELD_EXPIRES = "e"; + + public aga( + String key, String dimension, BlockPos anchor, Direction face, float roll, float size, String photoId, String owner, long placedAt, long expiresAt + ) { + roll = ahg.snapRoll(roll); + size = clampSize(size); + this.key = key; + this.dimension = dimension; + this.anchor = anchor; + this.face = face; + this.roll = roll; + this.size = size; + this.photoId = photoId; + this.owner = owner; + this.placedAt = placedAt; + this.expiresAt = expiresAt; + } + + public static float clampSize(float var0) { + float var2 = 0.0F; + int var1 = -652283689; + + while (true) { + switch (var1) { + case -1271172089: + var2 = Mth.clamp(var0, 0.4F, 2.0F); + var1 = -936868145; + break; + case -936868145: + return var2; + case -652283689: + default: + if (Float.isFinite(var0)) { + var1 = -1271172089; + } else { + var1 = -299962140; + } + break; + case -299962140: + var2 = 0.9F; + var1 = -936868145; + } + } + } + + public static String faceKey(BlockPos var0, Direction var1) { + return ahg.faceKey(var0, var1); + } + + public double x() { + return this.anchor.getX() + 0.5F + this.face.getStepX() * 0.5F; + } + + public double y() { + return this.anchor.getY() + 0.5F + this.face.getStepY() * 0.5F; + } + + public double z() { + return this.anchor.getZ() + 0.5F + this.face.getStepZ() * 0.5F; + } + + public Vec3 center() { + return new Vec3(this.x(), this.y(), this.z()); + } + + public long chunkKey() { + long var1 = this.anchor.getX() >> 4; + long var3 = this.anchor.getZ() >> 4; + return var1 << (1436005118 | -1436005086) + (1436005118 & -1436005086) + | var3 & (-4798617661457242553L | 4798617665752209848L) + (-4798617661457242553L & 4798617665752209848L); + } + + public boolean isExpired(long var1) { + int var4 = 0; + int var3 = 1618209653; + + while (true) { + switch (var3) { + case -1928436116: + if (this.expiresAt <= var1) { + var3 = -1636748152; + } else { + var3 = 1478965303; + } + break; + case -1636748152: + var4 = 1; + var3 = -536867707; + break; + case -536867707: + return (boolean)((var4) != 0); + case 1478965303: + var4 = 0; + var3 = -536867707; + break; + case 1618209653: + default: + if (this.expiresAt > (9213115181163210160L | -9213115181163210160L) + (9213115181163210160L & -9213115181163210160L)) { + var3 = -1928436116; + } else { + var3 = 1478965303; + } + } + } + } + + public JsonObject toJson() { + JsonObject var1 = new JsonObject(); + var1.addProperty("k", this.key); + var1.addProperty("d", this.dimension); + var1.addProperty("bx", this.anchor.getX()); + var1.addProperty("by", this.anchor.getY()); + var1.addProperty("bz", this.anchor.getZ()); + var1.addProperty("f", this.face.getName()); + var1.addProperty("r", this.roll); + var1.addProperty("s", this.size); + var1.addProperty("p", this.photoId); + var1.addProperty("o", this.owner); + var1.addProperty("t", this.placedAt); + var1.addProperty("e", this.expiresAt); + return var1; + } + + public static aga fromJson(JsonObject var0) { + if (var0 != null + && var0.has("bx") + && var0.has("f") + && var0.has("p")) { + Direction var1 = Direction.byName(var0.get("f").getAsString()); + if (var1 == null) { + return null; + } + + BlockPos var2 = new BlockPos( + var0.get("bx").getAsInt(), + var0.get("by").getAsInt(), + var0.get("bz").getAsInt() + ); + return new aga( + var0.has("k") + ? var0.get("k").getAsString() + : faceKey(var2, var1), + var0.has("d") + ? var0.get("d").getAsString() + : "", + var2, + var1, + var0.has("r") + ? var0.get("r").getAsFloat() + : 0.0F, + var0.has("s") + ? var0.get("s").getAsFloat() + : 0.9F, + var0.get("p").getAsString(), + var0.has("o") + ? var0.get("o").getAsString() + : "", + var0.has("t") + ? var0.get("t").getAsLong() + : (8935247950847939884L | -8935247950847939884L) + (8935247950847939884L & -8935247950847939884L), + var0.has("e") ? var0.get("e").getAsLong() : (-3384631503463066365L | 3384631503463066365L) + (-3384631503463066365L & 3384631503463066365L) + ); + } else { + return null; + } + } +} diff --git a/src/main/java/defpackage/agb.java b/src/main/java/defpackage/agb.java new file mode 100644 index 0000000..b0ca6cd --- /dev/null +++ b/src/main/java/defpackage/agb.java @@ -0,0 +1,609 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.Iterator; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos.MutableBlockPos; +import net.minecraft.core.Direction.Axis; +import net.minecraft.resources.Identifier; +import net.minecraft.util.LightCoordsUtil; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +public final class agb { + private static final agb INSTANCE = new agb(); + private static final float SURFACE_OFFSET = 0.014F; + private static final float PHOTO_OFFSET = 0.02F; + private static final float BORDER_SCALE = 1.14F; + private static final float BORDER_RED = 0.94F; + private static final float BORDER_GREEN = 0.93F; + private static final float BORDER_BLUE = 0.9F; + private static final float FULL = 1.0F; + private static final float PREVIEW_ALPHA = 0.6F; + private static final float UV_MIN = 0.0F; + private static final float UV_MAX = 1.0F; + private static final float CENTER_UV = 0.5F; + private final MutableBlockPos lightPos = new MutableBlockPos(); + + private agb() { + } + + public static agb getInstance() { + return INSTANCE; + } + + public void onWorldRender(LevelRenderContext var1) { + tb var2 = null; + Minecraft var3 = null; + SubmitNodeCollector var4 = null; + PoseStack var5 = null; + Vec3 var6 = null; + String var7 = null; + String var8 = null; + double var9 = 0.0; + double var11 = 0.0; + Iterator var13 = null; + aga var14 = null; + int var15 = 1504007216; + + while (true) { + switch (var15) { + case -2009907017: + return; + case -1572236139: + var3 = Minecraft.getInstance(); + if (var3.level != null) { + var15 = -1244931792; + } else { + var15 = 100313671; + } + break; + case -1244931792: + if (var3.player == null) { + var15 = 100313671; + } else { + var15 = 1160060795; + } + break; + case -1182032334: + if (var13.hasNext()) { + var15 = 1126624080; + } else { + var15 = 1224035993; + } + break; + case 100313671: + return; + case 269211098: + if (var14.center().distanceToSqr(var6) > var11) { + var15 = 889009733; + } else { + var15 = 391913039; + } + break; + case 391913039: + this.submit(var4, var5, var6, var14, var3); + var15 = -1182032334; + break; + case 518807189: + var15 = -1182032334; + break; + case 613317618: + if (!var14.owner().equals(var8)) { + var15 = 518807189; + } else { + var15 = 269211098; + } + break; + case 889009733: + var15 = -1182032334; + break; + case 1126624080: + var14 = (aga)var13.next(); + if (!var2.showsOthers()) { + var15 = 613317618; + } else { + var15 = 269211098; + } + break; + case 1160060795: + var4 = var1.submitNodeCollector(); + var5 = var1.poseStack(); + var6 = var3.getEntityRenderDispatcher().camera.position(); + var7 = afu.dimensionKey(); + var8 = afu.localIdentity(); + var9 = var2.renderDistance(); + var11 = var9 * var9; + var13 = agc.getInstance().inDimension(var7).iterator(); + var15 = -1182032334; + break; + case 1224035993: + this.submitPreview(var4, var5, var6, var2); + return; + case 1504007216: + default: + var2 = tb.INSTANCE; + if (!var2.isEnabled()) { + var15 = -2009907017; + } else { + var15 = -1572236139; + } + } + } + } + + private void submit(SubmitNodeCollector var1, PoseStack var2, Vec3 var3, aga var4, Minecraft var5) { + Identifier var6 = null; + int var7 = 0; + double var8 = 0.0; + double var10 = 0.0; + double var12 = 0.0; + Direction var14 = null; + float var15 = 0.0F; + float var16 = 0.0F; + int var17 = 1435116805; + + while (true) { + switch (var17) { + case -1757856855: + var1.submitCustomGeometry( + var2, + RenderTypes.entityTranslucent(var6), + (var11, var12x) -> emitQuad( + var11, + var12x, + var3, + var8, + var10, + var12, + var14, + var15, + var16, + 0.02F, + 1.0F, + var7, + 1.0F, + 1.0F, + 1.0F, + (boolean)((((1071533478 | -1071533477) + (1071533478 & -1071533477)) + ) != 0)) + ); + return; + case 514508260: + return; + case 1435116805: + } + + var6 = age.getInstance().texture(var4.photoId()); + var7 = this.lightAt(var5, var4.anchor(), var4.face()); + var8 = var4.x(); + var10 = var4.y(); + var12 = var4.z(); + var14 = var4.face(); + var15 = var4.roll(); + var16 = var4.size(); + var1.submitCustomGeometry( + var2, + RenderTypes.entityTranslucent(afk.SOLID), + (var11, var12x) -> emitQuad( + var11, + var12x, + var3, + var8, + var10, + var12, + var14, + var15, + var16 * 1.14F, + 0.014F, + 1.0F, + var7, + 0.94F, + 0.93F, + 0.9F, + (boolean)((((-1463001739 | 1463001739) + (-1463001739 & 1463001739)) + ) != 0)) + ); + if (var6 == null) { + var17 = 514508260; + } else { + var17 = -1757856855; + } + } + } + + private void submitPreview(SubmitNodeCollector var1, PoseStack var2, Vec3 var3, tb var4) { + afu var5 = null; + String var6 = null; + Identifier var7 = null; + BlockPos var8 = null; + Direction var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + double var12 = 0.0; + double var14 = 0.0; + double var16 = 0.0; + int var18 = 0; + Identifier var20 = null; + int var19 = -430098282; + + while (true) { + switch (var19) { + case -1818595167: + var1.submitCustomGeometry( + var2, + RenderTypes.entityTranslucent(var7), + (var11x, var12x) -> emitQuad( + var11x, + var12x, + var3, + var12, + var14, + var16, + var9, + var10, + var11, + 0.02F, + 0.6F, + var18, + 1.0F, + 1.0F, + 1.0F, + (boolean)((((-1115898533 | 1115898534) + (-1115898533 & 1115898534)) + ) != 0)) + ); + return; + case -1603449435: + if (var5.frameAnchor() == null) { + var19 = -223071829; + } else { + var19 = 235918962; + } + break; + case -852396533: + return; + case -446455346: + var20 = age.getInstance().texture(var6); + var19 = 987243760; + break; + case -430098282: + default: + var5 = afu.getInstance(); + if (var5.framePlacement() == aft.READY) { + var19 = -1603449435; + } else { + var19 = -223071829; + } + break; + case -223071829: + return; + case 235918962: + var6 = afi.getInstance().photoId(); + if (var6 == null) { + var19 = 1960507119; + } else { + var19 = -446455346; + } + break; + case 987243760: + var7 = var20; + var8 = var5.frameAnchor(); + var9 = var5.frameFace(); + var10 = var5.frameRoll(); + var11 = var4.frameSize(); + var12 = var8.getX() + 0.5 + var9.getStepX() * 0.5; + var14 = var8.getY() + 0.5 + var9.getStepY() * 0.5; + var16 = var8.getZ() + 0.5 + var9.getStepZ() * 0.5; + var18 = 15728880; + var1.submitCustomGeometry( + var2, + RenderTypes.entityTranslucent(afk.SOLID), + (var11x, var12x) -> emitQuad( + var11x, + var12x, + var3, + var12, + var14, + var16, + var9, + var10, + var11 * 1.14F, + 0.014F, + 0.6F, + var18, + 0.94F, + 0.93F, + 0.9F, + (boolean)((((1854532973 ^ -1854532973) + ((1854532973 & -1854532973) << 1)) + ) != 0)) + ); + if (var7 == null) { + var19 = -852396533; + } else { + var19 = -1818595167; + } + break; + case 1960507119: + var20 = null; + var19 = 987243760; + } + } + } + + private int lightAt(Minecraft var1, BlockPos var2, Direction var3) { + int var4 = 1049497820; + + while (true) { + switch (var4) { + case 1049497820: + default: + if (var1.level == null) { + var4 = 1145618848; + } else { + var4 = 1542296954; + } + break; + case 1145618848: + return 15728880; + case 1542296954: + this.lightPos.set(var2.getX() + var3.getStepX(), var2.getY() + var3.getStepY(), var2.getZ() + var3.getStepZ()); + return LightCoordsUtil.getLightCoords(var1.level, this.lightPos); + } + } + } + + private static void emitQuad( + Pose var0, + VertexConsumer var1, + Vec3 var2, + double var3, + double var5, + double var7, + Direction var9, + float var10, + float var11, + float var12, + float var13, + int var14, + float var15, + float var16, + float var17, + boolean var18 + ) { + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + float var27 = 0.0F; + float var28 = 0.0F; + float var29 = 0.0F; + float var30 = 0.0F; + float var31 = 0.0F; + float var32 = 0.0F; + float var33 = 0.0F; + float var34 = 0.0F; + float var35 = 0.0F; + float var36 = 0.0F; + float var37 = 0.0F; + float var38 = 0.0F; + float var39 = 0.0F; + float var40 = 0.0F; + float var41 = 0.0F; + float var43 = 0.0F; + float var44 = 0.0F; + float var45 = 0.0F; + float var46 = 0.0F; + int var42 = 541564707; + + while (true) { + switch (var42) { + case -2050364526: + var41 = var46; + vertex( + var0, + var1, + var29 - var32 + var35, + var30 - var33 + var36, + var31 - var34 + var37, + var38, + var40, + var13, + var14, + var19, + var20, + var21, + var15, + var16, + var17 + ); + vertex( + var0, + var1, + var29 - var32 - var35, + var30 - var33 - var36, + var31 - var34 - var37, + var38, + var41, + var13, + var14, + var19, + var20, + var21, + var15, + var16, + var17 + ); + vertex( + var0, + var1, + var29 + var32 - var35, + var30 + var33 - var36, + var31 + var34 - var37, + var39, + var41, + var13, + var14, + var19, + var20, + var21, + var15, + var16, + var17 + ); + vertex( + var0, + var1, + var29 + var32 + var35, + var30 + var33 + var36, + var31 + var34 + var37, + var39, + var40, + var13, + var14, + var19, + var20, + var21, + var15, + var16, + var17 + ); + return; + case -1513546217: + var45 = 0.0F; + var42 = -1098499693; + break; + case -1427159057: + var39 = var44; + if (var18) { + var42 = -1513546217; + } else { + var42 = -1018538238; + } + break; + case -1098499693: + var40 = var45; + if (var18) { + var42 = -744013659; + } else { + var42 = 2094586620; + } + break; + case -1018538238: + var45 = 0.5F; + var42 = -1098499693; + break; + case -862037028: + var44 = 0.5F; + var42 = -1427159057; + break; + case -851591772: + var22 = var21; + var23 = 0.0F; + var24 = -var19; + var42 = -252251744; + break; + case -789371515: + var44 = 1.0F; + var42 = -1427159057; + break; + case -744013659: + var46 = 1.0F; + var42 = -2050364526; + break; + case -252251744: + var25 = var20 * var24 - var21 * var23; + var26 = var21 * var22 - var19 * var24; + var27 = var19 * var23 - var20 * var22; + var28 = var11 * 0.5F; + var29 = (float)(var3 - var2.x + var19 * var12); + var30 = (float)(var5 - var2.y + var20 * var12); + var31 = (float)(var7 - var2.z + var21 * var12); + var32 = var22 * var28; + var33 = var23 * var28; + var34 = var24 * var28; + var35 = var25 * var28; + var36 = var26 * var28; + var37 = var27 * var28; + if (var18) { + var42 = 1481717089; + } else { + var42 = 86964124; + } + break; + case 86964124: + var43 = 0.5F; + var42 = 728645187; + break; + case 541564707: + default: + var19 = var9.getStepX(); + var20 = var9.getStepY(); + var21 = var9.getStepZ(); + if (var9.getAxis() == Axis.Y) { + var42 = 1940037088; + } else { + var42 = -851591772; + } + break; + case 728645187: + var38 = var43; + if (var18) { + var42 = -789371515; + } else { + var42 = -862037028; + } + break; + case 1481717089: + var43 = 0.0F; + var42 = 728645187; + break; + case 1940037088: + var22 = -var20 * Mth.cos(var10); + var23 = 0.0F; + var24 = -var20 * Mth.sin(var10); + var42 = -252251744; + break; + case 2094586620: + var46 = 0.5F; + var42 = -2050364526; + } + } + } + + private static void vertex( + Pose var0, + VertexConsumer var1, + float var2, + float var3, + float var4, + float var5, + float var6, + float var7, + int var8, + float var9, + float var10, + float var11, + float var12, + float var13, + float var14 + ) { + var1.addVertex(var0, var2, var3, var4) + .setColor(var12, var13, var14, var7) + .setUv(var5, var6) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var8) + .setNormal(var0, var9, var10, var11); + } +} diff --git a/src/main/java/defpackage/agc.java b/src/main/java/defpackage/agc.java new file mode 100644 index 0000000..b9d93b1 --- /dev/null +++ b/src/main/java/defpackage/agc.java @@ -0,0 +1,635 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; + +public final class agc { + private static final agc INSTANCE = new agc(); + private static final String FILE_SUFFIX = ".json"; + private static final String FOLDER = "frames"; + private static final String PARSE_FAILURE = "photo frame store parse failed for {}"; + private static final int MAX_FRAMES = 512; + private final Map> index = new HashMap<>(); + private String worldKey; + private boolean dirty; + + private agc() { + } + + public static agc getInstance() { + return INSTANCE; + } + + public void openWorld(String var1) { + Path var2 = null; + int var3 = -162256257; + + while (true) { + switch (var3) { + case -1443437019: + if (var1.equals(this.worldKey)) { + var3 = -1267929938; + } else { + var3 = 1328323102; + } + break; + case -1267929938: + return; + case -162256257: + default: + if (var1 != null) { + var3 = -1443437019; + } else { + var3 = -1267929938; + } + break; + case 1328323102: + this.closeWorld(); + this.worldKey = var1; + var2 = this.file(); + afz.submit(() -> { + String var3x = null; + Minecraft var4x = null; + int var5 = -661829098; + + while (true) { + switch (var5) { + case -1745965103: + var4x = Minecraft.getInstance(); + if (var4x == null) { + var5 = -1190748504; + } else { + var5 = 1409303397; + } + break; + case -1190748504: + return; + case -661829098: + default: + var3x = afz.readText(var2); + if (var3x != null) { + var5 = 821254678; + } else { + var5 = 777334794; + } + break; + case 777334794: + return; + case 821254678: + if (var3x.isBlank()) { + var5 = 777334794; + } else { + var5 = -1745965103; + } + break; + case 1409303397: + var4x.execute(() -> { + int var3xx = -1067188536; + + while (true) { + switch (var3xx) { + case -1686595842: + return; + case -1411863625: + this.load(var3x, var1); + var3xx = -1686595842; + break; + case -1067188536: + default: + if (var1.equals(this.worldKey)) { + var3xx = -1411863625; + } else { + var3xx = -1686595842; + } + } + } + }); + return; + } + } + }); + return; + } + } + } + + public void closeWorld() { + int var1 = 146074418; + + while (true) { + switch (var1) { + case -1375686244: + return; + case 127891334: + this.flush(); + this.index.clear(); + this.worldKey = null; + return; + case 146074418: + } + + if (this.worldKey == null) { + var1 = -1375686244; + } else { + var1 = 127891334; + } + } + } + + public void add(aga var1) { + int var2 = 845865298; + + while (true) { + switch (var2) { + case -949385108: + return; + case 776588064: + this.dimension(var1.dimension()).put(var1.key(), var1); + this.dirty = (boolean)(((1)) != 0); + this.trim(); + return; + case 845865298: + } + + if (var1 == null) { + var2 = -949385108; + } else { + var2 = 776588064; + } + } + } + + public void accept(aga var1) { + int var2 = -741589586; + + while (true) { + switch (var2) { + case -741589586: + default: + if (var1 == null) { + var2 = -38497398; + } else { + var2 = -671914360; + } + break; + case -671914360: + this.dimension(var1.dimension()).put(var1.key(), var1); + this.trim(); + return; + case -38497398: + return; + } + } + } + + public aga remove(String var1, String var2) { + Map var3 = null; + aga var4 = null; + int var5 = 1894884496; + + while (true) { + switch (var5) { + case -1904022060: + var4 = (aga)var3.remove(var2); + if (var4 != null) { + var5 = -403231254; + } else { + var5 = 561772484; + } + break; + case -403231254: + this.dirty = (boolean)(((1)) != 0); + var5 = 561772484; + break; + case -80294896: + return null; + case 561772484: + return var4; + case 1894884496: + default: + var3 = this.index.get(var1); + if (var3 == null) { + var5 = -80294896; + } else { + var5 = -1904022060; + } + } + } + } + + public aga at(String var1, BlockPos var2, Direction var3) { + Map var4 = null; + aga var6 = null; + int var5 = -1612171383; + + while (true) { + switch (var5) { + case -1613275687: + return var6; + case -1612171383: + default: + var4 = this.index.get(var1); + if (var4 == null) { + var5 = 1879531360; + } else { + var5 = -817607044; + } + break; + case -817607044: + var6 = (aga)var4.get(aga.faceKey(var2, var3)); + var5 = -1613275687; + break; + case 1879531360: + var6 = null; + var5 = -1613275687; + } + } + } + + public aga byKey(String var1, String var2) { + Map var3 = null; + aga var5 = null; + int var4 = 1114336063; + + while (true) { + switch (var4) { + case -1002660803: + var5 = null; + var4 = -151177985; + break; + case -151177985: + return var5; + case 294383509: + var5 = (aga)var3.get(var2); + var4 = -151177985; + break; + case 1114336063: + default: + var3 = this.index.get(var1); + if (var3 == null) { + var4 = -1002660803; + } else { + var4 = 294383509; + } + } + } + } + + public Collection inDimension(String var1) { + Map var2 = null; + Collection var4 = null; + int var3 = -754972078; + + while (true) { + switch (var3) { + case -754972078: + default: + var2 = this.index.get(var1); + if (var2 == null) { + var3 = 1027795694; + } else { + var3 = 847240645; + } + break; + case 847240645: + var4 = var2.values(); + var3 = 2047328821; + break; + case 1027795694: + var4 = Collections.emptyList(); + var3 = 2047328821; + break; + case 2047328821: + return var4; + } + } + } + + public int countOwned(String var1, String var2) { + int var3 = 0; + Iterator var4 = null; + aga var5 = null; + int var6 = -1656800590; + + while (true) { + switch (var6) { + case -1656800590: + default: + var3 = 0; + var4 = this.inDimension(var1).iterator(); + var6 = -1352139860; + break; + case -1352139860: + if (var4.hasNext()) { + var6 = -228138160; + } else { + var6 = -982036114; + } + break; + case -982036114: + return var3; + case -478063156: + var6 = -1352139860; + break; + case -228138160: + var5 = (aga)var4.next(); + if (var5.owner().equals(var2)) { + var6 = -33070383; + } else { + var6 = -478063156; + } + break; + case -33070383: + var3++; + var6 = -478063156; + } + } + } + + public List photoIds(String var1) { + ArrayList var2 = null; + Iterator var3 = null; + aga var4 = null; + int var5 = 402196462; + + while (true) { + switch (var5) { + case -1398699828: + var5 = -733988611; + break; + case -866753866: + return var2; + case -733988611: + if (var3.hasNext()) { + var5 = 1299450934; + } else { + var5 = -866753866; + } + break; + case -54152330: + var2.add(var4.photoId()); + var5 = -1398699828; + break; + case 402196462: + default: + var2 = new ArrayList(); + var3 = this.inDimension(var1).iterator(); + var5 = -733988611; + break; + case 1299450934: + var4 = (aga)var3.next(); + if (!var2.contains(var4.photoId())) { + var5 = -54152330; + } else { + var5 = -1398699828; + } + } + } + } + + public void prune(long var1) { + Iterator var3 = null; + Map var4 = null; + Iterator var5 = null; + int var6 = 1211949869; + + while (true) { + switch (var6) { + case -2090148792: + return; + case -1591963397: + if (var3.hasNext()) { + var6 = -1025782002; + } else { + var6 = -2090148792; + } + break; + case -1025782002: + var4 = (Map)var3.next(); + var5 = var4.values().iterator(); + var6 = -716658062; + break; + case -716658062: + if (var5.hasNext()) { + var6 = 1504955964; + } else { + var6 = 499426679; + } + break; + case 499426679: + var6 = -1591963397; + break; + case 1211949869: + default: + var3 = this.index.values().iterator(); + var6 = -1591963397; + break; + case 1504955964: + if (((aga)var5.next()).isExpired(var1)) { + var6 = 2029911417; + } else { + var6 = -716658062; + } + break; + case 2029911417: + var5.remove(); + this.dirty = (boolean)(((1)) != 0); + var6 = -716658062; + } + } + } + + public void flush() { + JsonArray var1 = null; + Iterator var2 = null; + Map var3 = null; + Iterator var4 = null; + aga var5 = null; + int var6 = 1202493299; + + while (true) { + switch (var6) { + case -1720131580: + if (var4.hasNext()) { + var6 = -1205558708; + } else { + var6 = 159549983; + } + break; + case -1205558708: + var5 = (aga)var4.next(); + var1.add(var5.toJson()); + var6 = -1720131580; + break; + case -521745939: + this.dirty = (boolean)(((0)) != 0); + var1 = new JsonArray(); + var2 = this.index.values().iterator(); + var6 = 1766902981; + break; + case -310564730: + var3 = (Map)var2.next(); + var4 = var3.values().iterator(); + var6 = -1720131580; + break; + case 159549983: + var6 = 1766902981; + break; + case 319792963: + return; + case 321143452: + if (!this.dirty) { + var6 = 319792963; + } else { + var6 = -521745939; + } + break; + case 1202493299: + default: + if (this.worldKey != null) { + var6 = 321143452; + } else { + var6 = 319792963; + } + break; + case 1732568970: + afz.writeTextAsync(this.file(), var1.toString()); + return; + case 1766902981: + if (var2.hasNext()) { + var6 = -310564730; + } else { + var6 = 1732568970; + } + } + } + } + + private Map dimension(String var1) { + return this.index.computeIfAbsent(var1, var0 -> new LinkedHashMap<>()); + } + + private void trim() { + int var1 = 0; + Iterator var2 = null; + Map var3 = null; + Iterator var4 = null; + int var5 = 1596811217; + + while (true) { + switch (var5) { + case -1735093500: + return; + case -804601839: + var2 = this.index.values().iterator(); + var5 = 190544826; + break; + case -644801565: + var3 = (Map)var2.next(); + var1 += var3.size(); + var5 = 584861760; + break; + case -607281677: + var3 = (Map)var2.next(); + var4 = var3.values().iterator(); + var5 = 432105076; + break; + case -66459897: + if (var1 <= (988366977 ^ -988366465) + ((988366977 & -988366465) << 1)) { + var5 = 266605426; + } else { + var5 = -804601839; + } + break; + case 190544826: + if (var2.hasNext()) { + var5 = -607281677; + } else { + var5 = -1735093500; + } + break; + case 266605426: + return; + case 432105076: + if (var4.hasNext()) { + var5 = 1851779001; + } else { + var5 = 1280784759; + } + break; + case 584861760: + if (var2.hasNext()) { + var5 = -644801565; + } else { + var5 = -66459897; + } + break; + case 1280784759: + var5 = 190544826; + break; + case 1596811217: + default: + var1 = 0; + var2 = this.index.values().iterator(); + var5 = 584861760; + break; + case 1723992871: + var4.next(); + var4.remove(); + var1--; + var5 = 432105076; + break; + case 1851779001: + if (var1 > (1270699653 | -1270699141) + (1270699653 & -1270699141)) { + var5 = 1723992871; + } else { + var5 = 1280784759; + } + } + } + } + + private void load(String var1, String var2) { + try { + JsonElement var3 = JsonParser.parseString(var1); + if (!var3.isJsonArray()) { + return; + } + + long var4 = System.currentTimeMillis(); + + for (JsonElement var7 : var3.getAsJsonArray()) { + if (var7.isJsonObject()) { + aga var8 = aga.fromJson(var7.getAsJsonObject()); + if (var8 != null && !var8.isExpired(var4)) { + this.dimension(var8.dimension()).put(var8.key(), var8); + } + } + } + } catch (RuntimeException var9) { + id.warn( + Cif.COSMETIC, + "photo frame store parse failed for {}", + var2, + var9 + ); + } + } + + private Path file() { + return afz.directory().resolve("frames").resolve(this.worldKey + ".json"); + } +} diff --git a/src/main/java/defpackage/agd.java b/src/main/java/defpackage/agd.java new file mode 100644 index 0000000..eed78f7 --- /dev/null +++ b/src/main/java/defpackage/agd.java @@ -0,0 +1,338 @@ +package defpackage; + +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import javax.imageio.ImageIO; + +public final class agd { + private static final String PNG_FORMAT = "png"; + private static final int BYTES_PER_PIXEL = 4; + private static final int RED_OFFSET = 0; + private static final int GREEN_OFFSET = 1; + private static final int BLUE_OFFSET = 2; + private static final int ALPHA_OFFSET = 3; + private static final int RED_SHIFT = 16; + private static final int GREEN_SHIFT = 8; + private static final int OPAQUE = -16777216; + private static final int BYTE_MASK = 255; + private static final int INITIAL_CAPACITY = 65536; + private final int[] argb; + private final int width; + private final int height; + + public agd(int[] var1, int var2, int var3) { + this.argb = var1; + this.width = var2; + this.height = var3; + } + + public static agd fromRgba(byte[] var0, int var1, int var2) { + int var3 = 0; + int[] var4 = null; + int var5 = 0; + int var6 = 0; + int var7 = -1298397285; + + while (true) { + switch (var7) { + case -1937794204: + if (var5 < var3) { + var7 = 98962433; + } else { + var7 = 486645209; + } + break; + case -1298397285: + default: + var3 = var1 * var2; + var4 = new int[var3]; + var5 = 0; + var6 = 0; + var7 = -1937794204; + break; + case 98962433: + var4[var5] = (-833226508 | 816449292) + (-833226508 & 816449292) + | (var0[var6 + 0] & (2003175870 | -2003175615) + (2003175870 & -2003175615)) + << (1550869190 | -1550869174) + (1550869190 & -1550869174) + | (var0[var6 + 1] & (-2026683019 ^ 2026683274) + ((-2026683019 & 2026683274) << 1)) + << (1670981578 | -1670981570) + (1670981578 & -1670981570) + | var0[var6 + 2] & 255; + var5++; + var6 += 4; + var7 = -1937794204; + break; + case 486645209: + return new agd(var4, var1, var2); + } + } + } + + public int[] argb() { + return this.argb; + } + + public int width() { + return this.width; + } + + public int height() { + return this.height; + } + + public agd cropToAspect(float var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int[] var6 = null; + int var7 = 0; + int var8 = 1893342841; + + while (true) { + switch (var8) { + case -1541709559: + if (var3 == this.height) { + var8 = 726818264; + } else { + var8 = -40069595; + } + break; + case -40069595: + var4 = (this.width - var2) / (2); + var5 = (this.height - var3) / (2); + var6 = new int[var2 * var3]; + var7 = 0; + var8 = 241519986; + break; + case 241519986: + if (var7 < var3) { + var8 = 607227974; + } else { + var8 = 1497802343; + } + break; + case 607227974: + System.arraycopy(this.argb, (var5 + var7) * this.width + var4, var6, var7 * var2, var2); + var7++; + var8 = 241519986; + break; + case 726818264: + return this; + case 1497802343: + return new agd(var6, var2, var3); + case 1893342841: + default: + var2 = Math.min(this.width, Math.max(1, Math.round(this.height * var1))); + var3 = Math.min(this.height, Math.max(1, Math.round(var2 / var1))); + if (var2 == this.width) { + var8 = -1541709559; + } else { + var8 = -40069595; + } + } + } + } + + public byte[] toRgba() { + byte[] var1 = null; + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = -1322575767; + + while (true) { + switch (var5) { + case -1332622036: + if (var2 < this.argb.length) { + var5 = 318633676; + } else { + var5 = -140062032; + } + break; + case -1322575767: + default: + var1 = new byte[this.argb.length * (4)]; + var2 = 0; + var3 = 0; + var5 = -1332622036; + break; + case -140062032: + return var1; + case 318633676: + var4 = this.argb[var2]; + var1[var3 + 0] = (byte)( + var4 >> (-21851865 | 21851881) + (-21851865 & 21851881) & (-1987416569 ^ 1987416824) + ((-1987416569 & 1987416824) << 1) + ); + var1[var3 + 1] = (byte)( + var4 >> (-1994476686 ^ 1994476694) + ((-1994476686 & 1994476694) << 1) & (1693546749 ^ -1693546494) + ((1693546749 & -1693546494) << 1) + ); + var1[var3 + 2] = (byte)( + var4 & (1850608303 ^ -1850608048) + ((1850608303 & -1850608048) << 1) + ); + var1[var3 + 3] = (byte)(-1); + var2++; + var3 += 4; + var5 = -1332622036; + } + } + } + + public agd scaledTo(int var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int[] var5 = null; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = -1884820371; + + while (true) { + switch (var10) { + case -1884820371: + default: + var2 = Math.max(this.width, this.height); + if (var2 <= var1) { + var10 = -880904602; + } else { + var10 = 508127738; + } + break; + case -1400576446: + var5[var8 + var9] = this.argb[var7 + Math.min(this.width - (1), var9 * this.width / var3)]; + var9++; + var10 = -600834579; + break; + case -880904602: + return this; + case -600834579: + if (var9 < var3) { + var10 = -1400576446; + } else { + var10 = 1434286438; + } + break; + case 508127738: + var3 = Math.max(1, Math.round((float)(this.width * var1) / var2)); + var4 = Math.max(1, Math.round((float)(this.height * var1) / var2)); + var5 = new int[var3 * var4]; + var6 = 0; + var10 = 1466347485; + break; + case 939369030: + var7 = Math.min(this.height - (1), var6 * this.height / var4) * this.width; + var8 = var6 * var3; + var9 = 0; + var10 = -600834579; + break; + case 1434286438: + var6++; + var10 = 1466347485; + break; + case 1466347485: + if (var6 < var4) { + var10 = 939369030; + } else { + var10 = 1722396089; + } + break; + case 1722396089: + return new agd(var5, var3, var4); + } + } + } + + public BufferedImage toBufferedImage() { + BufferedImage var1 = new BufferedImage(this.width, this.height, (918090494 ^ -918090493) + ((918090494 & -918090493) << 1)); + var1.setRGB( + 0, + 0, + this.width, + this.height, + this.argb, + 0, + this.width + ); + return var1; + } + + public byte[] encodePng() throws IOException { + ByteArrayOutputStream var1 = null; + int var2 = -410747327; + + while (true) { + switch (var2) { + case -1846471034: + return var1.toByteArray(); + case -1154546360: + throw new IOException("png"); + case -410747327: + } + + var1 = new ByteArrayOutputStream((1413503582 ^ -1413438046) + ((1413503582 & -1413438046) << 1)); + if (!ImageIO.write(this.toBufferedImage(), "png", var1)) { + var2 = -1154546360; + } else { + var2 = -1846471034; + } + } + } + + public static agd decode(byte[] var0) throws IOException { + BufferedImage var1 = null; + int var2 = 0; + int var3 = 0; + int[] var4 = null; + int var5 = 0; + int var6 = -2020398987; + + while (true) { + switch (var6) { + case -2020398987: + default: + var1 = ImageIO.read(new ByteArrayInputStream(var0)); + if (var1 == null) { + var6 = -1178955903; + } else { + var6 = 437590692; + } + break; + case -1178955903: + throw new IOException("png"); + case 437590692: + var2 = var1.getWidth(); + var3 = var1.getHeight(); + var4 = new int[var2 * var3]; + var1.getRGB( + 0, + 0, + var2, + var3, + var4, + 0, + var2 + ); + var5 = 0; + var6 = 526079379; + break; + case 499479208: + var4[var5] |= -16777216; + var5++; + var6 = 526079379; + break; + case 526079379: + if (var5 < var4.length) { + var6 = 499479208; + } else { + var6 = 2098013745; + } + break; + case 2098013745: + return new agd(var4, var2, var3); + } + } + } +} diff --git a/src/main/java/defpackage/age.java b/src/main/java/defpackage/age.java new file mode 100644 index 0000000..892e585 --- /dev/null +++ b/src/main/java/defpackage/age.java @@ -0,0 +1,591 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.mojang.blaze3d.platform.NativeImage; +import java.io.IOException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.resources.Identifier; + +public final class age { + private static final age INSTANCE = new age(); + private static final String INDEX_FILE = "index.json"; + private static final String IMAGE_SUFFIX = ".png"; + private static final String FIELD_PHOTOS = "p"; + private static final String TEXTURE_PREFIX = "photo/"; + private static final String TEXTURE_LABEL = "evolution_photo"; + private static final int MAX_TEXTURES = 32; + private static final int MAX_RECEIVED = 16; + private static final int MAX_PHOTOS = 512; + private static final String INDEX_FAILURE = "photo index parse failed"; + private static final String ENCODE_FAILURE = "photo encode failed for {}"; + private static final String DECODE_FAILURE = "photo decode failed for {}"; + private final List photos = new ArrayList<>(); + private final Map textures = new LinkedHashMap<>( + (1573202946 ^ -1573202930) + ((1573202946 & -1573202930) << 1), 0.75F, (boolean)((((1729381348 | -1729381347) + (1729381348 & -1729381347)) + ) != 0)); + private final Set loading = ConcurrentHashMap.newKeySet(); + private final Set missing = ConcurrentHashMap.newKeySet(); + private final Map received = new LinkedHashMap<>( + (975941592 ^ -975941576) + ((975941592 & -975941576) << 1), 0.75F, (boolean)((((1410864186 ^ -1410864185) + ((1410864186 & -1410864185) << 1)) + ) != 0)); + private volatile boolean loaded; + + private age() { + } + + public static age getInstance() { + return INSTANCE; + } + + public void load() { + int var1 = 1006509776; + + while (true) { + switch (var1) { + case -70095875: + this.loaded = (boolean)(((1)) != 0); + afz.submit(() -> { + String var1x = afz.readText(indexFile()); + List var2 = this.parse(var1x); + aqg.mc.execute(() -> { + this.photos.clear(); + this.photos.addAll(var2); + this.sort(); + }); + }); + return; + case 567683687: + return; + case 1006509776: + } + + if (this.loaded) { + var1 = 567683687; + } else { + var1 = -70095875; + } + } + } + + public List photos() { + return Collections.unmodifiableList(this.photos); + } + + public afx byId(String var1) { + Iterator var2 = null; + afx var3 = null; + int var4 = 103500183; + + while (true) { + switch (var4) { + case -1233125738: + return var3; + case -838546432: + return null; + case -269209963: + if (var2.hasNext()) { + var4 = 538524316; + } else { + var4 = -838546432; + } + break; + case 103500183: + default: + var2 = this.photos.iterator(); + var4 = -269209963; + break; + case 538524316: + var3 = (afx)var2.next(); + if (var3.id().equals(var1)) { + var4 = -1233125738; + } else { + var4 = 1493369018; + } + break; + case 1493369018: + var4 = -269209963; + } + } + } + + public int count() { + return this.photos.size(); + } + + public void add(afx var1, agd var2) { + this.photos.add(var1); + this.sort(); + this.trim(); + afz.submit( + () -> { + try { + afz.writeBytes(imageFile(var1.id()), var2.encodePng()); + } catch (IOException var3) { + id.warn( + Cif.COSMETIC, + "photo encode failed for {}", + var1.id(), + var3 + ); + } + } + ); + this.flush(); + aqg.mc.execute(() -> this.upload(var1.id(), var2)); + } + + public void remove(String var1) { + afx var2 = null; + Iterator var3 = null; + afx var4 = null; + int var5 = 128317519; + + while (true) { + switch (var5) { + case -1840068352: + var4 = (afx)var3.next(); + if (var4.id().equals(var1)) { + var5 = 2094242517; + } else { + var5 = -372792298; + } + break; + case -504332698: + if (var3.hasNext()) { + var5 = -1840068352; + } else { + var5 = 1259237779; + } + break; + case -372792298: + var5 = -504332698; + break; + case 128317519: + default: + var2 = null; + var3 = this.photos.iterator(); + var5 = -504332698; + break; + case 1222442046: + this.releaseTexture(var1); + afz.deleteAsync(imageFile(var1)); + this.flush(); + return; + case 1259237779: + if (var2 == null) { + var5 = 1327618765; + } else { + var5 = 1222442046; + } + break; + case 1327618765: + return; + case 2094242517: + var2 = var4; + var3.remove(); + var5 = 1259237779; + } + } + } + + public void setShared(String var1, boolean var2) { + int var3 = 0; + afx var4 = null; + int var5 = -1547422636; + + while (true) { + switch (var5) { + case -1547422636: + default: + var3 = 0; + var5 = -41758225; + break; + case -1369170061: + var3++; + var5 = -41758225; + break; + case -41758225: + if (var3 < this.photos.size()) { + var5 = 8992160; + } else { + var5 = 1139697618; + } + break; + case 8992160: + var4 = this.photos.get(var3); + if (var4.id().equals(var1)) { + var5 = 961790741; + } else { + var5 = -1369170061; + } + break; + case 961790741: + this.photos.set(var3, var4.withShared(var2)); + this.flush(); + return; + case 1139697618: + return; + } + } + } + + public Identifier texture(String var1) { + Object var2 = null; + int var3 = 2119589024; + + while (true) { + switch (var3) { + case -1455187339: + this.requestLoad(var1); + return null; + case -1377850435: + return textureId(var1); + case 2119589024: + } + + var2 = this.textures.get(var1); + if (var2 != null) { + var3 = -1377850435; + } else { + var3 = -1455187339; + } + } + } + + public void acceptRemote(String var1, agd var2) { + this.missing.remove(var1); + aqg.mc.execute(() -> { + int var3 = 903868916; + + while (true) { + switch (var3) { + case -1499649500: + this.received.remove(this.received.keySet().iterator().next()); + var3 = -406228243; + break; + case -589442810: + this.upload(var1, var2); + return; + case -406228243: + if (this.received.size() > (2102219040 ^ -2102219024) + ((2102219040 & -2102219024) << 1)) { + var3 = -1499649500; + } else { + var3 = -589442810; + } + break; + case 903868916: + default: + this.received.put(var1, var2); + var3 = -406228243; + } + } + }); + } + + public boolean hasReceived(String var1) { + return this.received.containsKey(var1); + } + + public boolean saveReceived(String var1, String var2) { + if (var1 != null && this.byId(var1) == null) { + agd var3 = this.received.get(var1); + if (var3 == null) { + return (boolean)(((0)) != 0); + } + + this.add( + new afx( + var1, + var2 == null ? "" : var2, + "", + "", + System.currentTimeMillis(), + var3.width(), + var3.height(), + (boolean)((((378622573 | -378622572) + (378622573 & -378622572)) + ) != 0)), + var3 + ); + return (boolean)(((1)) != 0); + } else { + return (boolean)(((0)) != 0); + } + } + + public boolean isMissing(String var1) { + return this.missing.contains(var1); + } + + public byte[] readEncoded(String var1) { + return afz.readBytes(imageFile(var1)); + } + + public void releaseAll() { + Iterator var1 = null; + String var2 = null; + int var3 = 759344749; + + while (true) { + switch (var3) { + case -916447335: + if (var1.hasNext()) { + var3 = 1338425251; + } else { + var3 = 1062399714; + } + break; + case 759344749: + default: + var1 = new ArrayList<>(this.textures.keySet()).iterator(); + var3 = -916447335; + break; + case 1062399714: + return; + case 1338425251: + var2 = (String)var1.next(); + this.releaseTexture(var2); + var3 = -916447335; + } + } + } + + private void requestLoad(String var1) { + int var2 = 1847413483; + + while (true) { + switch (var2) { + case -992169538: + return; + case 206518103: + if (!this.loading.add(var1)) { + var2 = -992169538; + } else { + var2 = 2025199173; + } + break; + case 1847413483: + default: + if (!this.missing.contains(var1)) { + var2 = 206518103; + } else { + var2 = -992169538; + } + break; + case 2025199173: + afz.submit( + () -> { + byte[] var2x = afz.readBytes(imageFile(var1)); + if (var2x == null) { + this.missing.add(var1); + this.loading.remove(var1); + } else { + try { + agd var3 = agd.decode(var2x); + aqg.mc.execute(() -> { + this.upload(var1, var3); + this.loading.remove(var1); + }); + } catch (IOException var4) { + this.loading.remove(var1); + id.warn( + Cif.COSMETIC, + "photo decode failed for {}", + var1, + var4 + ); + } + } + } + ); + return; + } + } + } + + private void upload(String var1, agd var2) { + aux var3 = this.textures.remove(var1); + if (var3 != null) { + aqg.mc.getTextureManager().release(textureId(var1)); + } + + NativeImage var4 = new NativeImage(var2.width(), var2.height(), (boolean)((((-20942847 ^ 20942847) + ((-20942847 & 20942847) << 1))) != 0)); + int[] var5 = var2.argb(); + + for (int var6 = 0; var6 < var2.height(); var6++) { + int var7 = var6 * var2.width(); + + for (int var8 = 0; var8 < var2.width(); var8++) { + var4.setPixel(var8, var6, var5[var7 + var8]); + } + } + + aux var9 = new aux(() -> "evolution_photo", var4); + aqg.mc.getTextureManager().register(textureId(var1), var9); + var9.upload(); + this.textures.put(var1, var9); + this.evictTextures(); + } + + private void evictTextures() { + String var1 = null; + int var2 = -2136380154; + + while (true) { + switch (var2) { + case -2136380154: + default: + if (this.textures.size() > (718742971 | -718742939) + (718742971 & -718742939)) { + var2 = -1842351078; + } else { + var2 = -1139630128; + } + break; + case -1842351078: + var1 = this.textures.keySet().iterator().next(); + this.releaseTexture(var1); + var2 = -2136380154; + break; + case -1139630128: + return; + } + } + } + + private void releaseTexture(String var1) { + Object var2 = null; + int var3 = -176118242; + + while (true) { + switch (var3) { + case -182537398: + aqg.mc.getTextureManager().release(textureId(var1)); + var3 = 1494507660; + break; + case -176118242: + default: + var2 = this.textures.remove(var1); + if (var2 != null) { + var3 = -182537398; + } else { + var3 = 1494507660; + } + break; + case 1494507660: + return; + } + } + } + + private void sort() { + this.photos.sort((var0, var1) -> Long.compare(var1.capturedAt(), var0.capturedAt())); + } + + private void trim() { + afx var1 = null; + int var2 = -560572676; + + while (true) { + switch (var2) { + case -560572676: + default: + if (this.photos.size() > (-818407142 | 818407654) + (-818407142 & 818407654)) { + var2 = 56502657; + } else { + var2 = 534386965; + } + break; + case 56502657: + var1 = this.photos.remove(this.photos.size() - ((-751774229 | 751774230) + (-751774229 & 751774230))); + this.releaseTexture(var1.id()); + afz.deleteAsync(imageFile(var1.id())); + var2 = -560572676; + break; + case 534386965: + return; + } + } + } + + private void flush() { + JsonArray var1 = null; + Iterator var2 = null; + afx var3 = null; + int var4 = 1163217357; + + while (true) { + switch (var4) { + case -871573807: + var3 = (afx)var2.next(); + var1.add(var3.toJson()); + var4 = -769887546; + break; + case -769887546: + if (var2.hasNext()) { + var4 = -871573807; + } else { + var4 = 1452826650; + } + break; + case 1163217357: + default: + var1 = new JsonArray(); + var2 = this.photos.iterator(); + var4 = -769887546; + break; + case 1452826650: + JsonObject var5 = new JsonObject(); + var5.add("p", var1); + afz.writeTextAsync(indexFile(), var5.toString()); + return; + } + } + } + + private List parse(String var1) { + ArrayList var2 = new ArrayList(); + if (var1 != null && !var1.isEmpty()) { + try { + JsonObject var3 = JsonParser.parseString(var1).getAsJsonObject(); + if (!var3.has("p")) { + return var2; + } + + for (JsonElement var5 : var3.getAsJsonArray("p")) { + afx var6 = afx.fromJson(var5.getAsJsonObject()); + if (var6 != null) { + var2.add(var6); + } + } + } catch (RuntimeException var7) { + id.warn(Cif.COSMETIC, "photo index parse failed", var7); + } + + return var2; + } else { + return var2; + } + } + + private static Identifier textureId(String var0) { + return bz.id("photo/" + var0); + } + + private static Path indexFile() { + return afz.directory().resolve("index.json"); + } + + private static Path imageFile(String var0) { + return afz.directory().resolve(var0 + ".png"); + } +} diff --git a/src/main/java/defpackage/agf.java b/src/main/java/defpackage/agf.java new file mode 100644 index 0000000..085b770 --- /dev/null +++ b/src/main/java/defpackage/agf.java @@ -0,0 +1,63 @@ +package defpackage; + +import java.util.function.Consumer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public final class agf { + private static final String PREFIX = "[photo:"; + private static final String SUFFIX = "]"; + private static final Pattern PATTERN = Pattern.compile( + "^\\[photo:(\\d{1,20}_\\d{1,10})]$" + ); + + private agf() { + } + + public static String encode(String var0) { + return "[photo:" + var0 + "]"; + } + + public static String decode(String var0) { + Matcher var1 = null; + String var3 = null; + int var2 = 1633507161; + + while (true) { + switch (var2) { + case -1924527811: + var3 = null; + var2 = -1021785171; + break; + case -1021785171: + return var3; + case -601563590: + return null; + case -165002227: + var3 = var1.group((316597046 | -316597045) + (316597046 & -316597045)); + var2 = -1021785171; + break; + case 1633507161: + default: + if (var0 == null) { + var2 = -601563590; + } else { + var2 = 1990782109; + } + break; + case 1990782109: + var1 = PATTERN.matcher(var0.trim()); + if (var1.matches()) { + var2 = -165002227; + } else { + var2 = -1924527811; + } + } + } + } + + public static void send(String var0, String var1, Consumer var2) { + afp.publishPhotoById(var1); + anb.sendMessage(var0, encode(var1), var2); + } +} diff --git a/src/main/java/defpackage/agg.java b/src/main/java/defpackage/agg.java new file mode 100644 index 0000000..fa92f77 --- /dev/null +++ b/src/main/java/defpackage/agg.java @@ -0,0 +1,6 @@ +package defpackage; + +import net.minecraft.world.phys.Vec3; + +public record agg(Vec3 position, float yaw, float pitch) { +} diff --git a/src/main/java/defpackage/agh.java b/src/main/java/defpackage/agh.java new file mode 100644 index 0000000..0787a6b --- /dev/null +++ b/src/main/java/defpackage/agh.java @@ -0,0 +1,143 @@ +package defpackage; + +import com.google.gson.JsonObject; +import net.minecraft.core.BlockPos; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +public record agh(String key, String dimension, BlockPos anchor, float yaw, float pitch, String owner, long placedAt, long expiresAt) { + public static final float HEAD_HEIGHT = 1.3125F; + public static final float LENS_OFFSET = 0.46F; + public static final float MIN_PITCH = -80.0F; + public static final float MAX_PITCH = 80.0F; + private static final float BLOCK_CENTER = 0.5F; + private static final int CHUNK_SHIFT = 4; + private static final int CHUNK_KEY_SHIFT = 32; + private static final long CHUNK_KEY_MASK = 4294967295L; + private static final String KEY_SEPARATOR = ":"; + private static final float DEGREES_TO_RADIANS = (float) (Math.PI / 180.0); + private static final String FIELD_KEY = "k"; + private static final String FIELD_DIMENSION = "d"; + private static final String FIELD_X = "bx"; + private static final String FIELD_Y = "by"; + private static final String FIELD_Z = "bz"; + private static final String FIELD_YAW = "ry"; + private static final String FIELD_PITCH = "rp"; + private static final String FIELD_OWNER = "o"; + private static final String FIELD_PLACED = "t"; + private static final String FIELD_EXPIRES = "e"; + + public agh(String key, String dimension, BlockPos anchor, float yaw, float pitch, String owner, long placedAt, long expiresAt) { + pitch = clampPitch(pitch); + yaw = Mth.wrapDegrees(yaw); + this.key = key; + this.dimension = dimension; + this.anchor = anchor; + this.yaw = yaw; + this.pitch = pitch; + this.owner = owner; + this.placedAt = placedAt; + this.expiresAt = expiresAt; + } + + public static float clampPitch(float var0) { + return Mth.clamp(var0, -80.0F, 80.0F); + } + + public static String stationKey(BlockPos var0) { + return var0.getX() + ":" + var0.getY() + ":" + var0.getZ(); + } + + public double baseX() { + return this.anchor.getX() + 0.5F; + } + + public double baseY() { + return this.anchor.getY() + 1.0; + } + + public double baseZ() { + return this.anchor.getZ() + 0.5F; + } + + public Vec3 headPosition() { + return new Vec3(this.baseX(), this.baseY() + 1.3125, this.baseZ()); + } + + public Vec3 lensPosition() { + Vec3 var1 = this.headPosition(); + Vec3 var2 = this.forward(); + return var1.add(var2.x * 0.46F, var2.y * 0.46F, var2.z * 0.46F); + } + + public Vec3 forward() { + float var1 = -this.yaw * (float) (Math.PI / 180.0); + float var2 = -this.pitch * (float) (Math.PI / 180.0); + float var3 = Mth.cos(var2); + return new Vec3(Mth.sin(var1) * var3, Mth.sin(var2), Mth.cos(var1) * var3); + } + + public agg viewpoint() { + return new agg(this.lensPosition(), this.yaw, this.pitch); + } + + public long chunkKey() { + long var1 = this.anchor.getX() >> 4; + long var3 = this.anchor.getZ() >> 4; + return var1 << (-1745862723 ^ 1745862755) + ((-1745862723 & 1745862755) << 1) + | var3 & (2974834631291122063L ^ -2974834626996154768L) + ((2974834631291122063L & -2974834626996154768L) << 1); + } + + public agh aimedAt(float var1, float var2) { + return new agh(this.key, this.dimension, this.anchor, var1, var2, this.owner, this.placedAt, this.expiresAt); + } + + public JsonObject toJson() { + JsonObject var1 = new JsonObject(); + var1.addProperty("k", this.key); + var1.addProperty("d", this.dimension); + var1.addProperty("bx", this.anchor.getX()); + var1.addProperty("by", this.anchor.getY()); + var1.addProperty("bz", this.anchor.getZ()); + var1.addProperty("ry", this.yaw); + var1.addProperty("rp", this.pitch); + var1.addProperty("o", this.owner); + var1.addProperty("t", this.placedAt); + var1.addProperty("e", this.expiresAt); + return var1; + } + + public static agh fromJson(JsonObject var0) { + if (var0 != null && var0.has("bx")) { + BlockPos var1 = new BlockPos( + var0.get("bx").getAsInt(), + var0.get("by").getAsInt(), + var0.get("bz").getAsInt() + ); + return new agh( + var0.has("k") + ? var0.get("k").getAsString() + : stationKey(var1), + var0.has("d") + ? var0.get("d").getAsString() + : "", + var1, + var0.has("ry") + ? var0.get("ry").getAsFloat() + : 0.0F, + var0.has("rp") + ? var0.get("rp").getAsFloat() + : 0.0F, + var0.has("o") + ? var0.get("o").getAsString() + : "", + var0.has("t") + ? var0.get("t").getAsLong() + : (599758689358608235L ^ -599758689358608235L) + ((599758689358608235L & -599758689358608235L) << 1), + var0.has("e") ? var0.get("e").getAsLong() : (5832785314507495148L ^ -5832785314507495148L) + ((5832785314507495148L & -5832785314507495148L) << 1) + ); + } else { + return null; + } + } +} diff --git a/src/main/java/defpackage/agi.java b/src/main/java/defpackage/agi.java new file mode 100644 index 0000000..29891f5 --- /dev/null +++ b/src/main/java/defpackage/agi.java @@ -0,0 +1,84 @@ +package defpackage; + +import java.util.Iterator; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public final class agi { + private static final double HALF_WIDTH = 0.28; + private static final double TOP_MARGIN = 0.12; + + private agi() { + } + + public static AABB boundsOf(agh var0) { + double var1 = var0.baseX(); + double var3 = var0.baseY(); + double var5 = var0.baseZ(); + return new AABB(var1 - 0.28, var3, var5 - 0.28, var1 + 0.28, var3 + 1.3125 + 0.12, var5 + 0.28); + } + + public static agh pick(Iterable var0, Vec3 var1, Vec3 var2, double var3) { + Vec3 var5 = null; + agh var6 = null; + double var7 = 0.0; + Iterator var9 = null; + agh var10 = null; + double var11 = 0.0; + agh var14 = null; + int var13 = 116071569; + + while (true) { + switch (var13) { + case -1796004707: + var7 = var11; + var6 = var10; + var13 = -192042960; + break; + case -1710223169: + var10 = (agh)var9.next(); + var11 = boundsOf(var10).clip(var1, var5).map(var1x -> var1x.distanceToSqr(var1)).orElse(Double.MAX_VALUE); + if (var11 < var7) { + var13 = -1796004707; + } else { + var13 = -192042960; + } + break; + case -1513612633: + return var14; + case -876708450: + if (var7 == Double.MAX_VALUE) { + var13 = -404300929; + } else { + var13 = 997838795; + } + break; + case -404300929: + var14 = null; + var13 = -1513612633; + break; + case -192042960: + var13 = 1162929804; + break; + case 116071569: + default: + var5 = var1.add(var2.x * var3, var2.y * var3, var2.z * var3); + var6 = null; + var7 = Double.MAX_VALUE; + var9 = var0.iterator(); + var13 = 1162929804; + break; + case 997838795: + var14 = var6; + var13 = -1513612633; + break; + case 1162929804: + if (var9.hasNext()) { + var13 = -1710223169; + } else { + var13 = -876708450; + } + } + } + } +} diff --git a/src/main/java/defpackage/agj.java b/src/main/java/defpackage/agj.java new file mode 100644 index 0000000..7ba7459 --- /dev/null +++ b/src/main/java/defpackage/agj.java @@ -0,0 +1,330 @@ +package defpackage; + +import java.util.Iterator; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.core.BlockPos; +import net.minecraft.util.LightCoordsUtil; +import net.minecraft.world.phys.Vec3; +import org.joml.Matrix4f; + +public final class agj { + private static final agj INSTANCE = new agj(); + private static final float DEGREES_TO_RADIANS = (float) (Math.PI / 180.0); + private static final float FULL_ALPHA = 1.0F; + private static final float PREVIEW_ALPHA = 0.55F; + private static final long LAMP_BLINK_MILLIS = 500L; + private static final long LAMP_FAST_MILLIS = 160L; + private static final int LAMP_FAST_THRESHOLD = 1; + private final Matrix4f base = new Matrix4f(); + private final Matrix4f head = new Matrix4f(); + + private agj() { + } + + public static agj getInstance() { + return INSTANCE; + } + + public void onWorldRender(LevelRenderContext var1) { + tb var2 = null; + Minecraft var3 = null; + SubmitNodeCollector var4 = null; + Vec3 var5 = null; + String var6 = null; + afu var7 = null; + String var8 = null; + double var9 = 0.0; + double var11 = 0.0; + agg var13 = null; + Iterator var14 = null; + agh var15 = null; + Vec3 var16 = null; + agg var18 = null; + int var17 = -1812793949; + + while (true) { + switch (var17) { + case -1862659507: + var15 = (agh)var14.next(); + if (!var2.showsOthers()) { + var17 = 1392716063; + } else { + var17 = -1328645379; + } + break; + case -1812793949: + default: + var2 = tb.INSTANCE; + if (!var2.isEnabled()) { + var17 = -1102329678; + } else { + var17 = -1479213693; + } + break; + case -1479213693: + var3 = Minecraft.getInstance(); + if (var3.level != null) { + var17 = -411813086; + } else { + var17 = 670205921; + } + break; + case -1470651734: + var17 = 326457762; + break; + case -1400163899: + var13 = var18; + var14 = agk.getInstance().inDimension(var6).iterator(); + var17 = 326457762; + break; + case -1328645379: + var16 = var15.headPosition(); + if (var16.distanceToSqr(var5) > var11) { + var17 = 1091100040; + } else { + var17 = 1794614491; + } + break; + case -1280859703: + this.submit(var1, var4, var5, var15, var7); + var17 = 326457762; + break; + case -1102329678: + return; + case -453866081: + var4 = var1.submitNodeCollector(); + var5 = var3.getEntityRenderDispatcher().camera.position(); + var6 = afu.dimensionKey(); + var7 = afu.getInstance(); + var8 = afu.localIdentity(); + var9 = var2.renderDistance(); + var11 = var9 * var9; + if (afy.getInstance().isArmed()) { + var17 = 1902626727; + } else { + var17 = -141946666; + } + break; + case -411813086: + if (var3.player == null) { + var17 = 670205921; + } else { + var17 = -453866081; + } + break; + case -284115298: + var17 = 326457762; + break; + case -141946666: + var18 = null; + var17 = -1400163899; + break; + case -68001947: + this.submitPreview(var1, var4, var5, var7, var2); + return; + case 326457762: + if (var14.hasNext()) { + var17 = -1862659507; + } else { + var17 = -68001947; + } + break; + case 670205921: + return; + case 762473618: + if (this.isShootingTripod(var15, var13)) { + var17 = -1470651734; + } else { + var17 = -1280859703; + } + break; + case 1091100040: + var17 = 326457762; + break; + case 1392716063: + if (!var15.owner().equals(var8)) { + var17 = -284115298; + } else { + var17 = -1328645379; + } + break; + case 1794614491: + if (var13 != null) { + var17 = 762473618; + } else { + var17 = -1280859703; + } + break; + case 1902626727: + var18 = afy.getInstance().viewpoint(); + var17 = -1400163899; + } + } + } + + private boolean isShootingTripod(agh var1, agg var2) { + int var4 = 0; + int var3 = -898947725; + + while (true) { + switch (var3) { + case -1470016226: + var4 = 0; + var3 = 694131862; + break; + case -898947725: + default: + if (var1.lensPosition().distanceToSqr(var2.position()) < 1.0E-6) { + var3 = 1735077645; + } else { + var3 = -1470016226; + } + break; + case 694131862: + return (boolean)((var4) != 0); + case 1735077645: + var4 = 1; + var3 = 694131862; + } + } + } + + private void submit(LevelRenderContext var1, SubmitNodeCollector var2, Vec3 var3, agh var4, afu var5) { + int var6 = LightCoordsUtil.getLightCoords( + Minecraft.getInstance().level, + new BlockPos(var4.anchor().getX(), var4.anchor().getY() + 1, var4.anchor().getZ()) + ); + boolean var7 = this.lampLit(var4, var5); + float var8 = (float)(var4.baseX() - var3.x); + float var9 = (float)(var4.baseY() - var3.y); + float var10 = (float)(var4.baseZ() - var3.z); + float var11 = var4.yaw(); + float var12 = var4.pitch(); + var2.submitCustomGeometry(var1.poseStack(), RenderTypes.entityTranslucent(afk.SOLID), (var8x, var9x) -> { + this.base.set(var8x.pose()); + this.base.translate(var8, var9, var10); + afk.emit(var8x, var9x, this.base, afk.TRIPOD, var6, 1.0F); + this.head.set(this.base); + this.head.translate(0.0F, 1.3125F, 0.0F); + this.head.rotateY(-var11 * (float) (Math.PI / 180.0)); + this.head.rotateX(var12 * (float) (Math.PI / 180.0)); + afk.emit(var8x, var9x, this.head, afk.cameraWithLamp(var7), var6, 1.0F); + }); + } + + private void submitPreview(LevelRenderContext var1, SubmitNodeCollector var2, Vec3 var3, afu var4, tb var5) { + BlockPos var6 = null; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + int var11 = 0; + int var12 = -563333501; + + while (true) { + switch (var12) { + case -944210782: + if (var4.placementAnchor() == null) { + var12 = 1103535104; + } else { + var12 = 764365056; + } + break; + case -563333501: + default: + if (var4.placement() == aft.READY) { + var12 = -944210782; + } else { + var12 = 1103535104; + } + break; + case 764365056: + var6 = var4.placementAnchor(); + var7 = (float)(var6.getX() + 0.5 - var3.x); + var8 = (float)(var6.getY() + 1.0 - var3.y); + var9 = (float)(var6.getZ() + 0.5 - var3.z); + var10 = Minecraft.getInstance().player.getYRot(); + var11 = 15728880; + var2.submitCustomGeometry(var1.poseStack(), RenderTypes.entityTranslucent(afk.SOLID), (var6x, var7x) -> { + this.base.set(var6x.pose()); + this.base.translate(var7, var8, var9); + afk.emit(var6x, var7x, this.base, afk.TRIPOD, var11, 0.55F); + this.head.set(this.base); + this.head.translate(0.0F, 1.3125F, 0.0F); + this.head.rotateY(-var10 * (float) (Math.PI / 180.0)); + afk.emit(var6x, var7x, this.head, afk.CAMERA, var11, 0.55F); + }); + return; + case 1103535104: + return; + } + } + } + + private boolean lampLit(agh var1, afu var2) { + int var3 = 0; + long var4 = (-4611615573528436834L | 4611615573528436834L) + (-4611615573528436834L & 4611615573528436834L); + long var7 = (2790225593184284937L | -2790225593184284937L) + (2790225593184284937L & -2790225593184284937L); + int var9 = 0; + int var6 = 391919425; + + while (true) { + switch (var6) { + case -1960733047: + var7 = (6427386229145993055L ^ -6427386229145992555L) + ((6427386229145993055L & -6427386229145992555L) << 1); + var6 = 358390652; + break; + case -912679896: + var9 = 0; + var6 = -405257838; + break; + case -864854353: + if (!var1.key().equals(var2.countdownKey())) { + var6 = -389730855; + } else { + var6 = 438185589; + } + break; + case -405257838: + return (boolean)((var9) != 0); + case -389730855: + return (boolean)(((0)) != 0); + case 358390652: + var4 = var7; + if (System.currentTimeMillis() / var4 % ((-3725908612146701480L | 3725908612146701482L) + (-3725908612146701480L & 3725908612146701482L)) + == (-7112916063662516870L | 7112916063662516870L) + (-7112916063662516870L & 7112916063662516870L)) { + var6 = 1493736568; + } else { + var6 = -912679896; + } + break; + case 391919425: + default: + if (var2.isCountingDown()) { + var6 = -864854353; + } else { + var6 = -389730855; + } + break; + case 438185589: + var3 = var2.remainingSeconds(); + if (var3 <= (1374225973 ^ -1374225972) + ((1374225973 & -1374225972) << 1)) { + var6 = 1356057331; + } else { + var6 = -1960733047; + } + break; + case 1356057331: + var7 = (6269724409456380206L ^ -6269724409456380046L) + ((6269724409456380206L & -6269724409456380046L) << 1); + var6 = 358390652; + break; + case 1493736568: + var9 = 1; + var6 = -405257838; + } + } + } +} diff --git a/src/main/java/defpackage/agk.java b/src/main/java/defpackage/agk.java new file mode 100644 index 0000000..eafb643 --- /dev/null +++ b/src/main/java/defpackage/agk.java @@ -0,0 +1,678 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; + +public final class agk { + private static final agk INSTANCE = new agk(); + private static final String FILE_SUFFIX = ".json"; + private static final String FOLDER = "tripods"; + private static final String PARSE_FAILURE = "tripod store parse failed for {}"; + private static final int MAX_TRIPODS = 256; + private final Map> index = new HashMap<>(); + private String worldKey; + private boolean dirty; + + private agk() { + } + + public static agk getInstance() { + return INSTANCE; + } + + public void openWorld(String var1) { + Path var2 = null; + int var3 = 1995698702; + + while (true) { + switch (var3) { + case -1118412665: + return; + case -625472280: + if (var1.equals(this.worldKey)) { + var3 = -1118412665; + } else { + var3 = 415906510; + } + break; + case 415906510: + this.closeWorld(); + this.worldKey = var1; + var2 = this.file(); + afz.submit(() -> { + String var3x = null; + Minecraft var4x = null; + int var5 = 1960160521; + + while (true) { + switch (var5) { + case -1790443094: + return; + case -1084576963: + var4x = Minecraft.getInstance(); + if (var4x == null) { + var5 = 613630945; + } else { + var5 = 1066002748; + } + break; + case 613630945: + return; + case 1066002748: + var4x.execute(() -> { + int var3xx = 2062003444; + + while (true) { + switch (var3xx) { + case -285897509: + this.load(var3x, var1); + return; + case 947155966: + return; + case 2062003444: + } + + if (!var1.equals(this.worldKey)) { + var3xx = 947155966; + } else { + var3xx = -285897509; + } + } + }); + return; + case 1442488622: + if (var3x.isBlank()) { + var5 = -1790443094; + } else { + var5 = -1084576963; + } + break; + case 1960160521: + default: + var3x = afz.readText(var2); + if (var3x != null) { + var5 = 1442488622; + } else { + var5 = -1790443094; + } + } + } + }); + return; + case 1995698702: + default: + if (var1 != null) { + var3 = -625472280; + } else { + var3 = -1118412665; + } + } + } + } + + public void closeWorld() { + int var1 = 2022454742; + + while (true) { + switch (var1) { + case 1400707731: + this.flush(); + this.index.clear(); + this.worldKey = null; + return; + case 1642938596: + return; + case 2022454742: + } + + if (this.worldKey == null) { + var1 = 1642938596; + } else { + var1 = 1400707731; + } + } + } + + public boolean isOpen() { + int var2 = 0; + int var1 = 1097119232; + + while (true) { + switch (var1) { + case -1327537742: + var2 = 1; + var1 = 1729245818; + break; + case 1097119232: + default: + if (this.worldKey != null) { + var1 = -1327537742; + } else { + var1 = 1952169846; + } + break; + case 1729245818: + return (boolean)((var2) != 0); + case 1952169846: + var2 = 0; + var1 = 1729245818; + } + } + } + + public void add(agh var1) { + int var2 = -550040054; + + while (true) { + switch (var2) { + case -1836450164: + return; + case -550040054: + default: + if (var1 == null) { + var2 = -1836450164; + } else { + var2 = 775643117; + } + break; + case 775643117: + this.dimension(var1.dimension()).put(var1.key(), var1); + this.dirty = (boolean)(((1)) != 0); + this.trim(); + return; + } + } + } + + public void accept(agh var1) { + int var2 = 581020826; + + while (true) { + switch (var2) { + case 581020826: + default: + if (var1 == null) { + var2 = 902809785; + } else { + var2 = 1172689985; + } + break; + case 902809785: + return; + case 1172689985: + this.dimension(var1.dimension()).put(var1.key(), var1); + this.trim(); + return; + } + } + } + + public agh remove(String var1, String var2) { + Map var3 = null; + agh var4 = null; + int var5 = 1508650091; + + while (true) { + switch (var5) { + case -2017134368: + return null; + case -102234623: + var4 = (agh)var3.remove(var2); + if (var4 != null) { + var5 = 1819361983; + } else { + var5 = 1998836758; + } + break; + case 1508650091: + default: + var3 = this.index.get(var1); + if (var3 == null) { + var5 = -2017134368; + } else { + var5 = -102234623; + } + break; + case 1819361983: + this.dirty = (boolean)(((1)) != 0); + var5 = 1998836758; + break; + case 1998836758: + return var4; + } + } + } + + public agh at(String var1, BlockPos var2) { + Map var3 = null; + agh var5 = null; + int var4 = -1366897856; + + while (true) { + switch (var4) { + case -1366897856: + default: + var3 = this.index.get(var1); + if (var3 == null) { + var4 = -818307916; + } else { + var4 = 927973665; + } + break; + case -818307916: + var5 = null; + var4 = -597136303; + break; + case -597136303: + return var5; + case 927973665: + var5 = (agh)var3.get(agh.stationKey(var2)); + var4 = -597136303; + } + } + } + + public agh byKey(String var1, String var2) { + Map var3 = null; + agh var5 = null; + int var4 = -312471212; + + while (true) { + switch (var4) { + case -1952653316: + var5 = (agh)var3.get(var2); + var4 = -1520415878; + break; + case -1520415878: + return var5; + case -581038726: + var5 = null; + var4 = -1520415878; + break; + case -312471212: + default: + var3 = this.index.get(var1); + if (var3 == null) { + var4 = -581038726; + } else { + var4 = -1952653316; + } + } + } + } + + public Collection inDimension(String var1) { + Map var2 = null; + Collection var4 = null; + int var3 = -653888188; + + while (true) { + switch (var3) { + case -1159015406: + return var4; + case -1009018727: + var4 = Collections.emptyList(); + var3 = -1159015406; + break; + case -653888188: + default: + var2 = this.index.get(var1); + if (var2 == null) { + var3 = -1009018727; + } else { + var3 = 760339065; + } + break; + case 760339065: + var4 = var2.values(); + var3 = -1159015406; + } + } + } + + public List ownedBy(String var1, String var2) { + ArrayList var3 = null; + Iterator var4 = null; + agh var5 = null; + int var6 = 1498213730; + + while (true) { + switch (var6) { + case -2065856408: + var3.add(var5); + var6 = 170508880; + break; + case -610161969: + var3.sort((var0, var1x) -> Long.compare(var0.placedAt(), var1x.placedAt())); + return var3; + case 170508880: + var6 = 353361417; + break; + case 353361417: + if (var4.hasNext()) { + var6 = 581798793; + } else { + var6 = -610161969; + } + break; + case 581798793: + var5 = (agh)var4.next(); + if (var5.owner().equals(var2)) { + var6 = -2065856408; + } else { + var6 = 170508880; + } + break; + case 1498213730: + default: + var3 = new ArrayList(); + var4 = this.inDimension(var1).iterator(); + var6 = 353361417; + } + } + } + + public int countOwned(String var1, String var2) { + int var3 = 0; + Iterator var4 = null; + agh var5 = null; + int var6 = -1215547202; + + while (true) { + switch (var6) { + case -1215547202: + default: + var3 = 0; + var4 = this.inDimension(var1).iterator(); + var6 = 1204653178; + break; + case -1156321692: + var6 = 1204653178; + break; + case -1156274135: + var5 = (agh)var4.next(); + if (var5.owner().equals(var2)) { + var6 = 864757132; + } else { + var6 = -1156321692; + } + break; + case 864757132: + var3++; + var6 = -1156321692; + break; + case 1204653178: + if (var4.hasNext()) { + var6 = -1156274135; + } else { + var6 = 1685852102; + } + break; + case 1685852102: + return var3; + } + } + } + + public void prune(long var1) { + Iterator var3 = null; + Map var4 = null; + Iterator var5 = null; + agh var6 = null; + int var7 = 1995229921; + + while (true) { + switch (var7) { + case -1954550011: + var5.remove(); + this.dirty = (boolean)(((1)) != 0); + var7 = 357511983; + break; + case -1918093179: + if (var3.hasNext()) { + var7 = 1602775427; + } else { + var7 = -1603178781; + } + break; + case -1890029949: + if (var5.hasNext()) { + var7 = 1994435017; + } else { + var7 = -448192395; + } + break; + case -1603178781: + return; + case -448192395: + var7 = -1918093179; + break; + case 357511983: + var7 = -1890029949; + break; + case 771291820: + if (var6.expiresAt() <= var1) { + var7 = -1954550011; + } else { + var7 = 357511983; + } + break; + case 1602775427: + var4 = (Map)var3.next(); + var5 = var4.values().iterator(); + var7 = -1890029949; + break; + case 1994435017: + var6 = (agh)var5.next(); + if (var6.expiresAt() > (3384333579291094971L ^ -3384333579291094971L) + ((3384333579291094971L & -3384333579291094971L) << 1)) { + var7 = 771291820; + } else { + var7 = 357511983; + } + break; + case 1995229921: + default: + var3 = this.index.values().iterator(); + var7 = -1918093179; + } + } + } + + public void flush() { + JsonArray var1 = null; + Iterator var2 = null; + Map var3 = null; + Iterator var4 = null; + agh var5 = null; + int var6 = -1594876052; + + while (true) { + switch (var6) { + case -1705031362: + afz.writeTextAsync(this.file(), var1.toString()); + return; + case -1594876052: + default: + if (this.worldKey != null) { + var6 = 1903762433; + } else { + var6 = 1208851861; + } + break; + case -1567326654: + if (var2.hasNext()) { + var6 = 1371783745; + } else { + var6 = -1705031362; + } + break; + case -1279700661: + var6 = -1567326654; + break; + case 63999124: + this.dirty = (boolean)(((0)) != 0); + var1 = new JsonArray(); + var2 = this.index.values().iterator(); + var6 = -1567326654; + break; + case 313692720: + if (var4.hasNext()) { + var6 = 1659667296; + } else { + var6 = -1279700661; + } + break; + case 1208851861: + return; + case 1371783745: + var3 = (Map)var2.next(); + var4 = var3.values().iterator(); + var6 = 313692720; + break; + case 1659667296: + var5 = (agh)var4.next(); + var1.add(var5.toJson()); + var6 = 313692720; + break; + case 1903762433: + if (!this.dirty) { + var6 = 1208851861; + } else { + var6 = 63999124; + } + } + } + } + + private Map dimension(String var1) { + return this.index.computeIfAbsent(var1, var0 -> new LinkedHashMap<>()); + } + + private void trim() { + int var1 = 0; + Iterator var2 = null; + Map var3 = null; + Iterator var4 = null; + int var5 = -97848886; + + while (true) { + switch (var5) { + case -1955123093: + var2 = this.index.values().iterator(); + var5 = 567962650; + break; + case -1923624440: + if (var1 > (898461209 | -898460953) + (898461209 & -898460953)) { + var5 = 1017482936; + } else { + var5 = -544621899; + } + break; + case -601971942: + return; + case -544621899: + var5 = 567962650; + break; + case -97848886: + default: + var1 = 0; + var2 = this.index.values().iterator(); + var5 = 1094972070; + break; + case 225291629: + if (var1 <= (22187360 ^ -22187104) + ((22187360 & -22187104) << 1)) { + var5 = -601971942; + } else { + var5 = -1955123093; + } + break; + case 243533869: + if (var4.hasNext()) { + var5 = -1923624440; + } else { + var5 = -544621899; + } + break; + case 510706596: + var3 = (Map)var2.next(); + var4 = var3.values().iterator(); + var5 = 243533869; + break; + case 567962650: + if (var2.hasNext()) { + var5 = 510706596; + } else { + var5 = 1523848391; + } + break; + case 1017482936: + var4.next(); + var4.remove(); + var1--; + var5 = 243533869; + break; + case 1094972070: + if (var2.hasNext()) { + var5 = 1434712011; + } else { + var5 = 225291629; + } + break; + case 1434712011: + var3 = (Map)var2.next(); + var1 += var3.size(); + var5 = 1094972070; + break; + case 1523848391: + return; + } + } + } + + private void load(String var1, String var2) { + try { + JsonElement var3 = JsonParser.parseString(var1); + if (!var3.isJsonArray()) { + return; + } + + long var4 = System.currentTimeMillis(); + + for (JsonElement var7 : var3.getAsJsonArray()) { + if (var7.isJsonObject()) { + agh var8 = agh.fromJson(var7.getAsJsonObject()); + if (var8 != null + && ( + var8.expiresAt() <= (-8693284735499864584L | 8693284735499864584L) + (-8693284735499864584L & 8693284735499864584L) + || var8.expiresAt() > var4 + )) { + this.dimension(var8.dimension()).put(var8.key(), var8); + } + } + } + } catch (RuntimeException var9) { + id.warn( + Cif.COSMETIC, + "tripod store parse failed for {}", + var2, + var9 + ); + } + } + + private Path file() { + return afz.directory().resolve("tripods").resolve(this.worldKey + ".json"); + } +} diff --git a/src/main/java/defpackage/agl.java b/src/main/java/defpackage/agl.java new file mode 100644 index 0000000..7176c3b --- /dev/null +++ b/src/main/java/defpackage/agl.java @@ -0,0 +1,14 @@ +package defpackage; + +final class agl { + final agq simulation = new agq(); + final agp gravityDirection = new agp(0.0F, -1.0F, 0.0F); + final agp movementChange = new agp(0.0F, 0.0F, 0.0F); + double prevX; + double prevY; + double prevZ; + boolean hasPrev; + + agl() { + } +} diff --git a/src/main/java/defpackage/agm.java b/src/main/java/defpackage/agm.java new file mode 100644 index 0000000..17fa40d --- /dev/null +++ b/src/main/java/defpackage/agm.java @@ -0,0 +1,244 @@ +package defpackage; + +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.entity.ClientAvatarState; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.AbstractClientPlayer; + +public class agm { + private static final float GRAVITY = 25.0F; + private static final float HEIGHT_MULTIPLIER = 6.0F; + private static final float STRAVE_MULTIPLIER = 2.0F; + private static final int INITIAL_SIMULATION_STEPS = 8; + private static final float DEFAULT_GRAVITY_Y = -1.0F; + private static final float ZERO_FLOAT = 0.0F; + private static final double FALL_HACK_MULTIPLIER = 10.0; + private static final double SNEAKING_OFFSET_X = 3.0; + private static final double SNEAKING_OFFSET_Y = 1.0; + private static final float UNDERWATER_GRAVITY_DIVISOR = 10.0F; + private static final float UNDERWATER_HEIGHT_MULTIPLIER = 2.0F; + private static final float SWIM_PITCH_OFFSET = 90.0F; + private static final float INTERPOLATION_DELTA = 1.0F; + private static final double CLAMP_MIN = 0.0; + private static final double CLAMP_MAX = 1.0; + private static agm instance; + private final Map entries = new ConcurrentHashMap<>(); + private final Set activePlayers = new HashSet<>(); + + public static agm getInstance() { + int var0 = 1592987302; + + while (true) { + switch (var0) { + case -1191202364: + instance = new agm(); + var0 = 1990770179; + break; + case 1592987302: + default: + if (instance == null) { + var0 = -1191202364; + } else { + var0 = 1990770179; + } + break; + case 1990770179: + return instance; + } + } + } + + public agq simulationFor(AbstractClientPlayer var1) { + agl var2 = null; + agq var4 = null; + int var3 = 2057998878; + + while (true) { + switch (var3) { + case -1128015891: + var4 = var2.simulation; + var3 = 12531773; + break; + case 12531773: + return var4; + case 771768805: + var4 = null; + var3 = 12531773; + break; + case 2057998878: + default: + var2 = this.entries.get(var1.getUUID()); + if (var2 == null) { + var3 = 771768805; + } else { + var3 = -1128015891; + } + } + } + } + + public void clear() { + this.entries.clear(); + this.activePlayers.clear(); + } + + public void tickAll(ClientLevel var1) { + Iterator var2 = null; + AbstractClientPlayer var3 = null; + int var4 = 795276512; + + while (true) { + switch (var4) { + case -1032556319: + this.activePlayers.add(var3.getUUID()); + this.update(var3); + var4 = 1245986438; + break; + case -977273151: + var3 = (AbstractClientPlayer)var2.next(); + if (adm.resolve(var3) == null) { + var4 = 43809875; + } else { + var4 = -1032556319; + } + break; + case -599479158: + this.entries.keySet().removeIf(var1x -> { + int var3x = 0; + int var2x = 2110140192; + + while (true) { + switch (var2x) { + case 368130176: + return (boolean)((var3x) != 0); + case 1367955140: + var3x = 0; + var2x = 368130176; + break; + case 1476585751: + var3x = 1; + var2x = 368130176; + break; + case 2110140192: + default: + if (!this.activePlayers.contains(var1x)) { + var2x = 1476585751; + } else { + var2x = 1367955140; + } + } + } + }); + return; + case 43809875: + var4 = 1245986438; + break; + case 795276512: + default: + this.activePlayers.clear(); + var2 = var1.players().iterator(); + var4 = 1245986438; + break; + case 1245986438: + if (var2.hasNext()) { + var4 = -977273151; + } else { + var4 = -599479158; + } + } + } + } + + private void update(AbstractClientPlayer var1) { + agl var2 = this.entries.computeIfAbsent(var1.getUUID(), var0 -> new agl()); + agq var3 = var2.simulation; + double var4 = var1.getX(); + double var6 = var1.getY(); + double var8 = var1.getZ(); + if (!var3.init() && var2.hasPrev) { + double var46 = var2.prevX; + double var12 = var2.prevY; + double var14 = var2.prevZ; + ClientAvatarState var16 = var1.avatarState(); + double var17 = var16.getInterpolatedCloakX(1.0F); + double var19 = var16.getInterpolatedCloakZ(1.0F); + float var21 = var1.getVisualRotationYInDegrees(); + double var22 = Math.sin(Math.toRadians(var21)); + double var24 = -Math.cos(Math.toRadians(var21)); + boolean var26 = var1.isUnderWater(); + float var27 = var26 ? 12.0F : 6.0F; + double var28 = clamp((var12 - var6) * 10.0, 0.0, 1.0); + var3.setGravity(var26 ? 2.5F : 25.0F); + var2.gravityDirection.set(0.0F, -1.0F, 0.0F); + double var30 = Math.toRadians(-var1.getYRot()); + double var32 = var4 - var46; + double var34 = var8 - var14; + double var36 = Math.cos(var30) * var32 - Math.sin(var30) * var34; + boolean var38 = var1.isCrouching(); + double var39 = (var17 - var4) * var22 + (var19 - var8) * var24 + var28 + (var38 && !var3.isSneaking() ? 3.0 : 0.0); + double var41 = (var6 - var12) * var27 + (var38 && !var3.isSneaking() ? 1.0 : 0.0); + double var43 = -var36 * 2.0; + var3.setSneaking(var38); + var2.movementChange.set((float)var39, (float)var41, (float)var43); + if (var1.isVisuallySwimming()) { + float var45 = var1.getXRot() + 90.0F; + var2.gravityDirection.rotateDegrees(var45); + var2.movementChange.rotateDegrees(var45); + } + + var3.setGravityDirection(var2.gravityDirection); + var3.applyMovement(var2.movementChange); + var3.simulate(); + var2.prevX = var4; + var2.prevY = var6; + var2.prevZ = var8; + } else { + var2.prevX = var4; + var2.prevY = var6; + var2.prevZ = var8; + var2.hasPrev = (boolean)(((1)) != 0); + var2.gravityDirection.set(0.0F, -1.0F, 0.0F); + + for (int var10 = 0; + var10 < 8; + var10++ + ) { + var3.setGravity(25.0F); + var3.setGravityDirection(var2.gravityDirection); + var3.simulate(); + } + } + } + + private static double clamp(double var0, double var2, double var4) { + double var7 = 0.0; + int var6 = 1648749229; + + while (true) { + switch (var6) { + case -2045365135: + return var7; + case -1094740688: + var7 = var2; + var6 = -2045365135; + break; + case 97821622: + var7 = Math.min(var0, var4); + var6 = -2045365135; + break; + case 1648749229: + default: + if (var0 < var2) { + var6 = -1094740688; + } else { + var6 = 97821622; + } + } + } + } +} diff --git a/src/main/java/defpackage/agn.java b/src/main/java/defpackage/agn.java new file mode 100644 index 0000000..de8fb59 --- /dev/null +++ b/src/main/java/defpackage/agn.java @@ -0,0 +1,23 @@ +package defpackage; + +public final class agn { + public agp position = new agp(0.0F, 0.0F, 0.0F); + public agp prevPosition = new agp(0.0F, 0.0F, 0.0F); + public boolean locked; + + public float getLerpX(float var1) { + return lerp(var1, this.prevPosition.x, this.position.x); + } + + public float getLerpY(float var1) { + return lerp(var1, this.prevPosition.y, this.position.y); + } + + public float getLerpZ(float var1) { + return lerp(var1, this.prevPosition.z, this.position.z); + } + + private static float lerp(float var0, float var1, float var2) { + return var1 + var0 * (var2 - var1); + } +} diff --git a/src/main/java/defpackage/ago.java b/src/main/java/defpackage/ago.java new file mode 100644 index 0000000..7579795 --- /dev/null +++ b/src/main/java/defpackage/ago.java @@ -0,0 +1,13 @@ +package defpackage; + +final class ago { + final agn pointA; + final agn pointB; + final float length; + + ago(agn var1, agn var2, float var3) { + this.pointA = var1; + this.pointB = var2; + this.length = var3; + } +} diff --git a/src/main/java/defpackage/agp.java b/src/main/java/defpackage/agp.java new file mode 100644 index 0000000..c9ed362 --- /dev/null +++ b/src/main/java/defpackage/agp.java @@ -0,0 +1,112 @@ +package defpackage; + +public final class agp { + public float x; + public float y; + public float z; + + public agp() { + } + + public agp(float var1, float var2, float var3) { + this.x = var1; + this.y = var2; + this.z = var3; + } + + public void set(float var1, float var2, float var3) { + this.x = var1; + this.y = var2; + this.z = var3; + } + + public agp clone() { + return new agp(this.x, this.y, this.z); + } + + public void copy(agp var1) { + this.x = var1.x; + this.y = var1.y; + this.z = var1.z; + } + + public agp add(agp var1) { + this.x = this.x + var1.x; + this.y = this.y + var1.y; + this.z = this.z + var1.z; + return this; + } + + public agp add(float var1, float var2, float var3) { + this.x += var1; + this.y += var2; + this.z += var3; + return this; + } + + public agp subtract(agp var1) { + this.x = this.x - var1.x; + this.y = this.y - var1.y; + this.z = this.z - var1.z; + return this; + } + + public agp div(float var1) { + this.x /= var1; + this.y /= var1; + this.z /= var1; + return this; + } + + public agp mul(float var1) { + this.x *= var1; + this.y *= var1; + this.z *= var1; + return this; + } + + public agp normalize() { + float var1 = 0.0F; + int var2 = -2114094247; + + while (true) { + switch (var2) { + case -2114094247: + default: + var1 = (float)Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + if (var1 < 1.0E-4F) { + var2 = 2141982214; + } else { + var2 = 1757004634; + } + break; + case -1608904550: + return this; + case 1757004634: + this.x /= var1; + this.y /= var1; + this.z /= var1; + var2 = -1608904550; + break; + case 2141982214: + this.x = 0.0F; + this.y = 0.0F; + this.z = 0.0F; + var2 = -1608904550; + } + } + } + + public agp rotateDegrees(float var1) { + float var2 = this.x; + float var3 = this.y; + float var4 = (float)Math.toRadians(var1); + this.x = (float)(Math.cos(var4) * var2 - Math.sin(var4) * var3); + this.y = (float)(Math.sin(var4) * var2 + Math.cos(var4) * var3); + return this; + } + + public float sqrMagnitude() { + return this.x * this.x + this.y * this.y + this.z * this.z; + } +} diff --git a/src/main/java/defpackage/agq.java b/src/main/java/defpackage/agq.java new file mode 100644 index 0000000..adf63d8 --- /dev/null +++ b/src/main/java/defpackage/agq.java @@ -0,0 +1,649 @@ +package defpackage; + +public class agq { + public static final int PART_COUNT = 16; + private static final int NUM_ITERATIONS = 3; + private static final float MAX_BEND = 20.0F; + private static final float INITIAL_STICK_LENGTH = 1.0F; + private static final float DELTA_TIME = 0.05F; + private static final float HALF_FACTOR = 0.5F; + private static final float CLIP_FACTOR = 5.0F; + private static final int MAX_SELF_CLIP_RUNS = 32; + private static final float MIN_SELF_CLIP_SQR = 0.99F; + private static final float MIN_MAGNITUDE = 1.0E-4F; + private static final float ZERO_FLOAT = 0.0F; + private static final float DEFAULT_GRAVITY_Y = -1.0F; + private static final double RAD_TO_DEG = 180.0 / Math.PI; + private static final float BEND_MULTIPLIER = 2.0F; + public final agn[] points = new agn[16]; + private final ago[] sticks = new ago[15]; + private final agp gravityDirection = new agp(0.0F, -1.0F, 0.0F); + private float gravity = 0.0F; + private boolean sneaking = (boolean)(((0)) != 0); + private boolean built = (boolean)(((0)) != 0); + + public boolean init() { + if (this.built) { + return (boolean)(((0)) != 0); + } + + for (int var1 = 0; + var1 < 16; + var1++ + ) { + agn var2 = new agn(); + var2.position.y = -var1; + var2.position.x = -var1; + var2.locked = (boolean)(((var1 == 0 ? 1: (1167840145 | -1167840145) + (1167840145 & -1167840145))) != 0); + this.points[var1] = var2; + if (var1 > 0) { + this.sticks[var1 - (1)] = new ago( + this.points[var1 - (1)], var2, 1.0F + ); + } + } + + this.built = (boolean)(((1)) != 0); + return (boolean)(((1)) != 0); + } + + public boolean isSneaking() { + return this.sneaking; + } + + public void setSneaking(boolean var1) { + this.sneaking = var1; + } + + public void setGravity(float var1) { + this.gravity = var1; + } + + public void setGravityDirection(agp var1) { + this.gravityDirection.copy(var1); + } + + public void applyMovement(agp var1) { + this.points[0] + .prevPosition + .copy(this.points[0].position); + this.points[0].position.add(var1); + } + + public float lerpX(int var1, float var2) { + return this.points[var1].getLerpX(var2); + } + + public float lerpY(int var1, float var2) { + return this.points[var1].getLerpY(var2); + } + + public float lerpZ(int var1, float var2) { + return this.points[var1].getLerpZ(var2); + } + + public void simulate() { + this.applyGravity(); + this.preventClipping(); + this.preventSelfClipping(); + this.applyMotion(); + this.preventSelfClipping(); + this.preventHardBends(); + this.limitLength(); + } + + private void applyGravity() { + float var1 = 0.0F; + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + agn[] var5 = null; + int var6 = 0; + int var7 = 0; + agn var8 = null; + int var9 = 1342470681; + + while (true) { + switch (var9) { + case -1209691357: + var7++; + var9 = 474466348; + break; + case -491617711: + return; + case 474466348: + if (var7 < var6) { + var9 = 1867585584; + } else { + var9 = -491617711; + } + break; + case 987705914: + var8.prevPosition.x = var8.position.x; + var8.prevPosition.y = var8.position.y; + var8.prevPosition.z = var8.position.z; + var8.position.x += var2; + var8.position.y += var3; + var8.position.z += var4; + var9 = -1209691357; + break; + case 1342470681: + default: + var1 = this.gravity * 0.05F; + var2 = this.gravityDirection.x * var1; + var3 = this.gravityDirection.y * var1; + var4 = this.gravityDirection.z * var1; + var5 = this.points; + var6 = var5.length; + var7 = 0; + var9 = 474466348; + break; + case 1660679974: + var9 = -1209691357; + break; + case 1867585584: + var8 = var5[var7]; + if (var8.locked) { + var9 = 1660679974; + } else { + var9 = 987705914; + } + } + } + } + + private void applyMotion() { + int var1 = 0; + int var2 = 0; + ago var3 = null; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = -525362647; + + while (true) { + switch (var15) { + case -2098215329: + var2 = this.sticks.length - (1); + var15 = 146184643; + break; + case -1651286989: + var3.pointA.position.x = var4 + var12; + var3.pointA.position.y = var5 + var13; + var3.pointA.position.z = var6 + var14; + var15 = 952762479; + break; + case -1197035981: + return; + case -979890411: + if (var1 < (26202717 ^ -26202714) + ((26202717 & -26202714) << 1)) { + var15 = -2098215329; + } else { + var15 = -1197035981; + } + break; + case -944351868: + var11 = var3.length * 0.5F; + var12 = var7 * var11; + var13 = var8 * var11; + var14 = var9 * var11; + if (!var3.pointA.locked) { + var15 = -1651286989; + } else { + var15 = 952762479; + } + break; + case -592463623: + var3.pointB.position.x = var4 - var12; + var3.pointB.position.y = var5 - var13; + var3.pointB.position.z = var6 - var14; + var15 = 296962113; + break; + case -525362647: + default: + var1 = 0; + var15 = -979890411; + break; + case -359556046: + var7 /= var10; + var8 /= var10; + var9 /= var10; + var15 = -944351868; + break; + case 91051991: + var3 = this.sticks[var2]; + var4 = (var3.pointA.position.x + var3.pointB.position.x) * 0.5F; + var5 = (var3.pointA.position.y + var3.pointB.position.y) * 0.5F; + var6 = (var3.pointA.position.z + var3.pointB.position.z) * 0.5F; + var7 = var3.pointA.position.x - var3.pointB.position.x; + var8 = var3.pointA.position.y - var3.pointB.position.y; + var9 = var3.pointA.position.z - var3.pointB.position.z; + var10 = (float)Math.sqrt(var7 * var7 + var8 * var8 + var9 * var9); + if (var10 < 1.0E-4F) { + var15 = 2091356274; + } else { + var15 = -359556046; + } + break; + case 146184643: + if (var2 >= 0) { + var15 = 91051991; + } else { + var15 = 1466773013; + } + break; + case 296962113: + var2--; + var15 = 146184643; + break; + case 952762479: + if (!var3.pointB.locked) { + var15 = -592463623; + } else { + var15 = 296962113; + } + break; + case 1466773013: + var1++; + var15 = -979890411; + break; + case 2091356274: + var7 = 0.0F; + var8 = 0.0F; + var9 = 0.0F; + var15 = -944351868; + } + } + } + + private void limitLength() { + ago[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = 1604744645; + + while (true) { + switch (var9) { + case -1357475730: + var9 = 2119181170; + break; + case -792704982: + var5 /= var8; + var6 /= var8; + var7 /= var8; + var9 = 1339954511; + break; + case -651851718: + var5 = ((ago)var4).pointA.position.x - ((ago)var4).pointB.position.x; + var6 = ((ago)var4).pointA.position.y - ((ago)var4).pointB.position.y; + var7 = ((ago)var4).pointA.position.z - ((ago)var4).pointB.position.z; + var8 = (float)Math.sqrt(var5 * var5 + var6 * var6 + var7 * var7); + if (var8 < 1.0E-4F) { + var9 = -50017258; + } else { + var9 = -792704982; + } + break; + case -50017258: + var5 = 0.0F; + var6 = 0.0F; + var7 = 0.0F; + var9 = 1339954511; + break; + case 939711968: + var4 = var1[var3]; + if (((ago)var4).pointB.locked) { + var9 = -1357475730; + } else { + var9 = -651851718; + } + break; + case 1210257915: + return; + case 1339954511: + ((ago)var4).pointB.position.x = ((ago)var4).pointA.position.x - var5 * ((ago)var4).length; + ((ago)var4).pointB.position.y = ((ago)var4).pointA.position.y - var6 * ((ago)var4).length; + ((ago)var4).pointB.position.z = ((ago)var4).pointA.position.z - var7 * ((ago)var4).length; + var9 = 2119181170; + break; + case 1604744645: + default: + var1 = this.sticks; + var2 = var1.length; + var3 = 0; + var9 = 1807005299; + break; + case 1807005299: + if (var3 < var2) { + var9 = 939711968; + } else { + var9 = 1210257915; + } + break; + case 2119181170: + var3++; + var9 = 1807005299; + } + } + } + + private void preventSelfClipping() { + int var1 = 0; + int var2 = 0; + int var3 = 0; + int var4 = 0; + agn var5 = null; + agn var6 = null; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + int var18 = -1499411141; + + while (true) { + switch (var18) { + case -1733990898: + var1 = 1; + var2++; + var11 = (float)Math.sqrt(var10); + if (var11 < 1.0E-4F) { + var18 = 566824895; + } else { + var18 = -743772974; + } + break; + case -1715953550: + return; + case -1499411141: + default: + var2 = 0; + var18 = 979981203; + break; + case -1100916729: + var3++; + var18 = -922428589; + break; + case -972817273: + var18 = 1037973238; + break; + case -922428589: + if (var3 < this.points.length) { + var18 = 2001754323; + } else { + var18 = 36825694; + } + break; + case -816878468: + var5.position.x = var12 + var15; + var5.position.y = var13 + var16; + var5.position.z = var14 + var17; + var18 = 1390232080; + break; + case -743772974: + var7 /= var11; + var8 /= var11; + var9 /= var11; + var18 = 1250825368; + break; + case -436965898: + if (var4 < this.points.length) { + var18 = 443581350; + } else { + var18 = -1100916729; + } + break; + case 36825694: + if (var1 != 0) { + var18 = 238143711; + } else { + var18 = -1715953550; + } + break; + case 238143711: + if (var2 >= (-277504252 | 277504284) + (-277504252 & 277504284)) { + var18 = -1715953550; + } else { + var18 = 979981203; + } + break; + case 443581350: + var5 = this.points[var3]; + var6 = this.points[var4]; + var7 = var5.position.x - var6.position.x; + var8 = var5.position.y - var6.position.y; + var9 = var5.position.z - var6.position.z; + var10 = var7 * var7 + var8 * var8 + var9 * var9; + if (var10 >= 0.99F) { + var18 = -972817273; + } else { + var18 = -1733990898; + } + break; + case 566824895: + var7 = 0.0F; + var8 = 0.0F; + var9 = 0.0F; + var18 = 1250825368; + break; + case 723049885: + var6.position.x = var12 - var15; + var6.position.y = var13 - var16; + var6.position.z = var14 - var17; + var18 = 1037973238; + break; + case 979981203: + var1 = 0; + var3 = 0; + var18 = -922428589; + break; + case 1037973238: + var4++; + var18 = -436965898; + break; + case 1250825368: + var12 = (var5.position.x + var6.position.x) * 0.5F; + var13 = (var5.position.y + var6.position.y) * 0.5F; + var14 = (var5.position.z + var6.position.z) * 0.5F; + var15 = var7 * 0.5F; + var16 = var8 * 0.5F; + var17 = var9 * 0.5F; + if (!var5.locked) { + var18 = -816878468; + } else { + var18 = 1390232080; + } + break; + case 1390232080: + if (!var6.locked) { + var18 = 723049885; + } else { + var18 = 1037973238; + } + break; + case 2001754323: + var4 = var3 + 1; + var18 = -436965898; + } + } + } + + private void preventHardBends() { + int var1 = 0; + double var2 = 0.0; + int var4 = 516166570; + + while (true) { + switch (var4) { + case -2009323120: + if (var2 > 20.0) { + var4 = 236573468; + } else { + var4 = 1552236663; + } + break; + case -578904091: + this.replacePoint( + this.points[var1 + 1].position, + this.points[var1].position, + this.points[var1 - (1)].position, + -40.0F + ); + var4 = 1552236663; + break; + case 236573468: + this.replacePoint( + this.points[var1 + 1].position, + this.points[var1].position, + this.points[var1 - (1)].position, + 40.0F + ); + var4 = 1552236663; + break; + case 516166570: + default: + var1 = 1; + var4 = 935758599; + break; + case 713588797: + var2 = this.getAngle( + this.points[var1].position, + this.points[var1 - (1)].position, + this.points[var1 + 1].position + ); + if (var2 < -20.0) { + var4 = -578904091; + } else { + var4 = -2009323120; + } + break; + case 919634640: + return; + case 935758599: + if (var1 < this.points.length - ((110909043 ^ -110909041) + ((110909043 & -110909041) << 1))) { + var4 = 713588797; + } else { + var4 = 919634640; + } + break; + case 1552236663: + var1++; + var4 = 935758599; + } + } + } + + private void preventClipping() { + agn var1 = null; + int var2 = 0; + agn var3 = null; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + int var7 = 1625220964; + + while (true) { + switch (var7) { + case -1614946072: + return; + case -906529882: + if (var6 < -var5) { + var7 = 319366874; + } else { + var7 = 261865724; + } + break; + case -413612813: + var3.position.x = var1.position.x; + var7 = -277751153; + break; + case -277751153: + var4 = (float)var2 / this.points.length; + var5 = var4 * var4 * 5.0F; + var6 = var1.position.z - var3.position.z; + if (var6 > var5) { + var7 = -132268965; + } else { + var7 = -906529882; + } + break; + case -132268965: + var3.position.z = var1.position.z - var5; + var7 = -906529882; + break; + case 120556827: + var3 = this.points[var2]; + if (var3.position.x - var1.position.x > 0.0F) { + var7 = -413612813; + } else { + var7 = -277751153; + } + break; + case 261865724: + var2++; + var7 = 269833535; + break; + case 269833535: + if (var2 < this.points.length) { + var7 = 120556827; + } else { + var7 = -1614946072; + } + break; + case 319366874: + var3.position.z = var1.position.z + var5; + var7 = 261865724; + break; + case 1625220964: + default: + var1 = this.points[0]; + var2 = 1; + var7 = 269833535; + } + } + } + + private void replacePoint(agp var1, agp var2, agp var3, float var4) { + float var5 = var2.x - var3.x; + float var6 = var2.y - var3.y; + float var7 = var2.z - var3.z; + float var8 = (float)Math.toRadians(var4); + float var9 = (float)Math.cos(var8); + float var10 = (float)Math.sin(var8); + float var11 = var9 * var5 - var10 * var6; + float var12 = var10 * var5 + var9 * var6; + var1.x = var11 + var2.x; + var1.y = var12 + var2.y; + var1.z = var7 + var2.z; + } + + private double getAngle(agp var1, agp var2, agp var3) { + float var4 = var2.x - var1.x; + float var5 = var2.y - var1.y; + float var6 = var2.x - var3.x; + float var7 = var2.y - var3.y; + float var8 = var4 * var6 + var5 * var7; + float var9 = var4 * var7 - var5 * var6; + double var10 = Math.atan2(var9, var8); + return var10 * (180.0 / Math.PI); + } +} diff --git a/src/main/java/defpackage/agr.java b/src/main/java/defpackage/agr.java new file mode 100644 index 0000000..88fe505 --- /dev/null +++ b/src/main/java/defpackage/agr.java @@ -0,0 +1,14 @@ +package defpackage; + +import org.joml.Matrix4f; + +final class agr { + final Matrix4f base = new Matrix4f(); + agq simulation; + float delta; + boolean underwater; + boolean holy; + + agr() { + } +} diff --git a/src/main/java/defpackage/ags.java b/src/main/java/defpackage/ags.java new file mode 100644 index 0000000..d302fa0 --- /dev/null +++ b/src/main/java/defpackage/ags.java @@ -0,0 +1,564 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import java.util.ArrayList; +import java.util.List; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.player.PlayerModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.texture.AbstractTexture; +import net.minecraft.resources.Identifier; +import net.minecraft.world.entity.EquipmentSlot; +import org.joml.Matrix4f; +import org.joml.Matrix4fc; + +public class ags { + private static final int PART_COUNT = 16; + private static final boolean WIND_ENABLED = true; + private static final float WIND_AMPLITUDE = 1.5F; + private static final float ARMOR_Z_OFFSET = 0.1F; + private static final float TINT_R = 0.4F; + private static final float TINT_G = 0.2F; + private static final float TINT_B = 1.0F; + private static final float FADE = 2.5F; + private static final float TIME_PERIOD_MS = 100000.0F; + private static final float MILLIS_PER_SECOND = 1000.0F; + private static final int LOGO_FIRST_PART = 3; + private static final int LOGO_LAST_PART = 13; + private static final float LOGO_Z = -0.0645F; + private static ags instance; + private final List pending = new ArrayList<>(); + private final Matrix4f[] segments = new Matrix4f[16]; + private final PoseStack scratch = new PoseStack(); + private int pendingCount; + + private ags() { + for (int var1 = 0; var1 < 16; var1++) { + this.segments[var1] = new Matrix4f(); + } + } + + public static ags getInstance() { + int var0 = -1498650328; + + while (true) { + switch (var0) { + case -1948247098: + instance = new ags(); + var0 = 645026782; + break; + case -1498650328: + default: + if (instance == null) { + var0 = -1948247098; + } else { + var0 = 645026782; + } + break; + case 645026782: + return instance; + } + } + } + + public void enqueue(PoseStack var1, AbstractClientPlayer var2, PlayerModel var3) { + Identifier var4 = null; + agq var5 = null; + agr var6 = null; + int var7 = 400416431; + + while (true) { + switch (var7) { + case -2048462632: + if (aor.renderingShadowPass()) { + var7 = -1292402341; + } else { + var7 = -569210492; + } + break; + case -1958887451: + return; + case -1864887921: + var6 = this.acquire(); + var6.base.set(var1.last().pose()); + var6.simulation = var5; + var6.delta = Minecraft.getInstance() + .getDeltaTracker() + .getGameTimeDeltaPartialTick((boolean)((((-760638455 ^ 760638455) + ((-760638455 & 760638455) << 1))) != 0)); + var6.underwater = var2.isUnderWater(); + var6.holy = adm.isHolyCape(var4); + var1.popPose(); + return; + case -1620520975: + if (!adm.isShaderCape(var4)) { + var7 = -1958887451; + } else { + var7 = -2048462632; + } + break; + case -1292402341: + return; + case -569210492: + var5 = agm.getInstance().simulationFor(var2); + if (var5 == null) { + var7 = 1942709770; + } else { + var7 = 1668190771; + } + break; + case 400416431: + default: + var4 = adm.resolve(var2); + if (var4 != null) { + var7 = -1620520975; + } else { + var7 = -1958887451; + } + break; + case 662833370: + var1.translate(0.0, 0.0, 0.1F); + var7 = -1864887921; + break; + case 1668190771: + var1.pushPose(); + var3.root().translateAndRotate(var1); + var3.body.translateAndRotate(var1); + if (!var2.getItemBySlot(EquipmentSlot.CHEST).isEmpty()) { + var7 = 662833370; + } else { + var7 = -1864887921; + } + break; + case 1942709770: + return; + } + } + } + + public void onWorldDraw(LevelRenderContext var1) { + int var2 = 0; + int var3 = 1110993521; + + while (true) { + switch (var3) { + case -249031910: + this.draw(this.pending.get(var2)); + var2++; + var3 = 1228575925; + break; + case 234466183: + this.discard(); + return; + case 1110993521: + default: + var2 = 0; + var3 = 1228575925; + break; + case 1228575925: + if (var2 < this.pendingCount) { + var3 = -249031910; + } else { + var3 = 234466183; + } + } + } + } + + public void discard() { + int var1 = 0; + int var2 = 1605234131; + + while (true) { + switch (var2) { + case -347484638: + if (var1 < this.pendingCount) { + var2 = -45797876; + } else { + var2 = 354902865; + } + break; + case -45797876: + this.pending.get(var1).simulation = null; + var1++; + var2 = -347484638; + break; + case 354902865: + this.pendingCount = 0; + return; + case 1605234131: + default: + var1 = 0; + var2 = -347484638; + } + } + } + + private agr acquire() { + int var1 = 1453755586; + + while (true) { + switch (var1) { + case -917995112: + List var10000 = this.pending; + int var10001 = this.pendingCount; + this.pendingCount += 1; + return (agr)var10000.get(var10001); + case 444989830: + this.pending.add(new agr()); + var1 = -917995112; + break; + case 1453755586: + default: + if (this.pendingCount == this.pending.size()) { + var1 = 444989830; + } else { + var1 = -917995112; + } + } + } + } + + private void draw(agr var1) { + atd var2 = null; + Minecraft var3 = null; + float var4 = 0.0F; + BufferBuilder var5 = null; + atd var7 = null; + int var6 = -497438003; + + while (true) { + switch (var6) { + case -1924356996: + var2 = var7; + if (var2 == null) { + var6 = 69952081; + } else { + var6 = 2023419392; + } + break; + case -497438003: + default: + if (var1.holy) { + var6 = 1036601725; + } else { + var6 = 124345617; + } + break; + case 69952081: + return; + case 124345617: + var7 = atb.capeStarfieldProgram; + var6 = -1924356996; + break; + case 1036601725: + var7 = atb.capeHolyProgram; + var6 = -1924356996; + break; + case 2023419392: + var3 = Minecraft.getInstance(); + var4 = (float)( + System.currentTimeMillis() % ((2256918658962637121L ^ -2256918658962537121L) + ((2256918658962637121L & -2256918658962537121L) << 1)) + ) + / 1000.0F; + this.buildSegments(var1); + var2.use(); + var2.setResolution(var3.getWindow().getWidth(), var3.getWindow().getHeight()); + var2.setTime(var4); + var2.setTintColor(0.4F, 0.2F, 1.0F); + var2.setFade(2.5F); + arj.setCurrentLayer(arj.positionColor()); + var5 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_COLOR); + this.emitMesh(var5); + arj.drawCurrent(var5); + this.drawLogo(var3); + return; + } + } + } + + private void buildSegments(agr var1) { + PoseStack var2 = null; + int var3 = 0; + int var4 = 894092801; + + while (true) { + switch (var4) { + case -1448589312: + var2.pushPose(); + this.applySegmentPose(var2, var1.simulation, var1.delta, var3, var1.underwater); + this.segments[var3].set(var2.last().pose()); + var2.popPose(); + var3++; + var4 = 1504456302; + break; + case -834599605: + return; + case 894092801: + default: + var2 = this.scratch; + var2.last().pose().set(var1.base); + var2.last().normal().identity(); + var3 = 0; + var4 = 1504456302; + break; + case 1504456302: + if (var3 < (1388511562 | -1388511546) + (1388511562 & -1388511546)) { + var4 = -1448589312; + } else { + var4 = -834599605; + } + } + } + } + + private void emitMesh(BufferBuilder var1) { + int var2 = 0; + Matrix4f var3 = null; + Matrix4f var4 = null; + int var5 = 2020344914; + + while (true) { + switch (var5) { + case -1841074349: + if (var2 < (-683831115 ^ 683831131) + ((-683831115 & 683831131) << 1)) { + var5 = 316169502; + } else { + var5 = -111987376; + } + break; + case -111987376: + return; + case 316169502: + var3 = this.segments[var2]; + var4 = this.segments[Math.max( + var2 - (1), (-1149853880 ^ 1149853880) + ((-1149853880 & 1149853880) << 1) + )]; + if (var2 == 0) { + var5 = 1496260780; + } else { + var5 = 1509552228; + } + break; + case 872952907: + var1.addVertex(var3, 0.3125F, 1.0F, -0.0625F).setColor((-1601763589 | 1601763588) + (-1601763589 & 1601763588)); + var1.addVertex(var3, -0.3125F, 1.0F, -0.0625F).setColor((-1354776053 | 1354776052) + (-1354776053 & 1354776052)); + var1.addVertex(var3, -0.3125F, 1.0F, 0.0F).setColor((1800020891 | -1800020892) + (1800020891 & -1800020892)); + var1.addVertex(var3, 0.3125F, 1.0F, 0.0F).setColor((-246498020 | 246498019) + (-246498020 & 246498019)); + var5 = 1322397907; + break; + case 1322397907: + var1.addVertex(var3, -0.3125F, (var2 + (55376025 ^ -55376024) + ((55376025 & -55376024) << 1)) * 0.0625F, 0.0F) + .setColor((495084567 | -495084568) + (495084567 & -495084568)); + var1.addVertex(var3, -0.3125F, (var2 + (-1875061301 | 1875061302) + (-1875061301 & 1875061302)) * 0.0625F, -0.0625F) + .setColor((-1129743175 | 1129743174) + (-1129743175 & 1129743174)); + var1.addVertex(var4, -0.3125F, var2 * 0.0625F, -0.0625F).setColor((-1942408543 | 1942408542) + (-1942408543 & 1942408542)); + var1.addVertex(var4, -0.3125F, var2 * 0.0625F, 0.0F).setColor((1084666324 ^ -1084666325) + ((1084666324 & -1084666325) << 1)); + var1.addVertex(var3, 0.3125F, (var2 + (496569472 | -496569471) + (496569472 & -496569471)) * 0.0625F, -0.0625F) + .setColor((1816880460 | -1816880461) + (1816880460 & -1816880461)); + var1.addVertex(var3, 0.3125F, (var2 + (-1253445764 | 1253445765) + (-1253445764 & 1253445765)) * 0.0625F, 0.0F) + .setColor((-2112598788 ^ 2112598787) + ((-2112598788 & 2112598787) << 1)); + var1.addVertex(var4, 0.3125F, var2 * 0.0625F, 0.0F).setColor((-589395205 ^ 589395204) + ((-589395205 & 589395204) << 1)); + var1.addVertex(var4, 0.3125F, var2 * 0.0625F, -0.0625F).setColor((1735578110 | -1735578111) + (1735578110 & -1735578111)); + var1.addVertex(var4, 0.3125F, var2 * 0.0625F, -0.0625F).setColor((383741080 ^ -383741081) + ((383741080 & -383741081) << 1)); + var1.addVertex(var4, -0.3125F, var2 * 0.0625F, -0.0625F).setColor((850829352 | -850829353) + (850829352 & -850829353)); + var1.addVertex(var3, -0.3125F, (var2 + (-726530743 | 726530744) + (-726530743 & 726530744)) * 0.0625F, -0.0625F) + .setColor((1250044376 ^ -1250044377) + ((1250044376 & -1250044377) << 1)); + var1.addVertex(var3, 0.3125F, (var2 + (604527811 ^ -604527810) + ((604527811 & -604527810) << 1)) * 0.0625F, -0.0625F) + .setColor((2065507316 ^ -2065507317) + ((2065507316 & -2065507317) << 1)); + var1.addVertex(var4, 0.3125F, var2 * 0.0625F, 0.0F).setColor((-133294308 | 133294307) + (-133294308 & 133294307)); + var1.addVertex(var4, -0.3125F, var2 * 0.0625F, 0.0F).setColor((698629676 ^ -698629677) + ((698629676 & -698629677) << 1)); + var1.addVertex(var3, -0.3125F, (var2 + (-290606926 ^ 290606927) + ((-290606926 & 290606927) << 1)) * 0.0625F, 0.0F) + .setColor((-1220174974 | 1220174973) + (-1220174974 & 1220174973)); + var1.addVertex(var3, 0.3125F, (var2 + (1653806155 | -1653806154) + (1653806155 & -1653806154)) * 0.0625F, 0.0F) + .setColor((-1683108085 | 1683108084) + (-1683108085 & 1683108084)); + var2++; + var5 = -1841074349; + break; + case 1496260780: + var1.addVertex(var3, 0.3125F, 0.0F, 0.0F).setColor((633430262 | -633430263) + (633430262 & -633430263)); + var1.addVertex(var3, -0.3125F, 0.0F, 0.0F).setColor((1406167376 ^ -1406167377) + ((1406167376 & -1406167377) << 1)); + var1.addVertex(var3, -0.3125F, 0.0F, -0.0625F).setColor((-654630963 ^ 654630962) + ((-654630963 & 654630962) << 1)); + var1.addVertex(var3, 0.3125F, 0.0F, -0.0625F).setColor((-345956575 | 345956574) + (-345956575 & 345956574)); + var5 = 1509552228; + break; + case 1509552228: + if (var2 == (-1126245714 ^ 1126245729) + ((-1126245714 & 1126245729) << 1)) { + var5 = 872952907; + } else { + var5 = 1322397907; + } + break; + case 2020344914: + default: + var2 = 0; + var5 = -1841074349; + } + } + } + + private void drawLogo(Minecraft var1) { + atd var2 = null; + Identifier var3 = null; + AbstractTexture var4 = null; + BufferBuilder var5 = null; + int var6 = 0; + int var7 = 0; + Matrix4fc var8 = null; + Matrix4fc var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = -31812855; + + while (true) { + switch (var12) { + case -1263530087: + return; + case -1009477845: + var8 = this.segments[var7]; + var9 = this.segments[Math.max( + var7 - (1), (-1413232616 | 1413232616) + (-1413232616 & 1413232616) + )]; + var10 = (float)(var7 - ((-1049161916 ^ 1049161919) + ((-1049161916 & 1049161919) << 1))) / var6; + var11 = (float)( + var7 + (2146481539 ^ -2146481538) + ((2146481539 & -2146481538) << 1) - ((1237151841 ^ -1237151838) + ((1237151841 & -1237151838) << 1)) + ) + / var6; + var5.addVertex(var8, 0.3125F, (var7 + (756379119 ^ -756379118) + ((756379119 & -756379118) << 1)) * 0.0625F, -0.0645F) + .setUv(1.0F, var11) + .setColor((-583150273 | 583150272) + (-583150273 & 583150272)); + var5.addVertex(var8, -0.3125F, (var7 + (-1762152375 ^ 1762152376) + ((-1762152375 & 1762152376) << 1)) * 0.0625F, -0.0645F) + .setUv(0.0F, var11) + .setColor((929848217 ^ -929848218) + ((929848217 & -929848218) << 1)); + var5.addVertex(var9, -0.3125F, var7 * 0.0625F, -0.0645F) + .setUv(0.0F, var10) + .setColor((-2035253327 ^ 2035253326) + ((-2035253327 & 2035253326) << 1)); + var5.addVertex(var9, 0.3125F, var7 * 0.0625F, -0.0645F).setUv(1.0F, var10).setColor((776335628 ^ -776335629) + ((776335628 & -776335629) << 1)); + var7++; + var12 = 1603523760; + break; + case -31812855: + default: + var2 = atb.capeLogoProgram; + if (var2 == null) { + var12 = 272710346; + } else { + var12 = 35085422; + } + break; + case 35085422: + var3 = Identifier.fromNamespaceAndPath("evolution", "icons/logo.png"); + var4 = var1.getTextureManager().getTexture(var3); + if (var4 == null) { + var12 = -1263530087; + } else { + var12 = 1186783909; + } + break; + case 272710346: + return; + case 776825946: + arj.drawCurrent(var5); + return; + case 1186783909: + var2.use(); + atd.bindTexture(var4.getTextureView(), (boolean)((((-770800401 | 770800402) + (-770800401 & 770800402))) != 0)); + arj.setCurrentLayer(arj.positionColor()); + var5 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var6 = 10; + var7 = 3; + var12 = 1603523760; + break; + case 1603523760: + if (var7 < (-1843324433 ^ 1843324446) + ((-1843324433 & 1843324446) << 1)) { + var12 = -1009477845; + } else { + var12 = 776825946; + } + } + } + } + + private void applySegmentPose(PoseStack var1, agq var2, float var3, int var4, boolean var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + int var11 = -1570180226; + + while (true) { + switch (var11) { + case -1570180226: + default: + var1.translate(0.0, 0.0, 0.125); + var6 = var2.lerpX(var4, var3) - var2.lerpX(0, var3); + if (var6 > 0.0F) { + var11 = -819363142; + } else { + var11 = 1083305304; + } + break; + case -819363142: + var6 = 0.0F; + var11 = 1083305304; + break; + case 1083305304: + var7 = var2.lerpY(0, var3) - var4 - var2.lerpY(var4, var3); + var8 = var2.lerpZ(0, var3) - var2.lerpZ(var4, var3); + var9 = this.getRotation(var3, var4, var2); + var10 = this.naturalWindSwing(var4, var5); + var1.mulPose(Axis.XP.rotationDegrees(6.0F + var10)); + var1.mulPose(Axis.YP.rotationDegrees(180.0F)); + var1.translate(-var8 / 16.0F, var7 / 16.0F, var6 / 16.0F); + var1.translate(0.0, 0.03, -0.03); + var1.translate(0.0F, var4 / 16.0F, 0.0F); + var1.mulPose(Axis.XP.rotationDegrees(-var9)); + var1.translate(0.0F, -var4 / 16.0F, 0.0F); + var1.translate(0.0, -0.03, 0.03); + return; + } + } + } + + private float getRotation(float var1, int var2, agq var3) { + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = 231103269; + + while (true) { + switch (var8) { + case -2139135175: + var4 = var3.lerpX(var2, var1); + var5 = var3.lerpY(var2, var1); + var6 = var3.lerpX(var2 + 1, var1); + var7 = var3.lerpY(var2 + 1, var1); + return (float)(Math.toDegrees(Math.atan2(var6 - var4, var7 - var5)) + 180.0); + case 231103269: + default: + if (var2 == (-1228947379 ^ 1228947394) + ((-1228947379 & 1228947394) << 1)) { + var8 = 971549443; + } else { + var8 = -2139135175; + } + break; + case 971549443: + return this.getRotation(var1, var2 - (1), var3); + } + } + } + + private float naturalWindSwing(int var1, boolean var2) { + long var3 = System.currentTimeMillis() + / (var2 ? 9: (1261228826 | -1261228823) + (1261228826 & -1261228823)) + % ((-5662277381362675086L ^ 5662277381362675446L) + ((-5662277381362675086L & 5662277381362675446L) << 1)); + float var5 = (var1 + (1674765573 ^ -1674765572) + ((1674765573 & -1674765572) << 1)) / 16.0F; + return (float)(Math.sin(Math.toRadians(var5 * 360.0F - (float)var3)) * 1.5); + } +} diff --git a/src/main/java/defpackage/agt.java b/src/main/java/defpackage/agt.java new file mode 100644 index 0000000..c13005c --- /dev/null +++ b/src/main/java/defpackage/agt.java @@ -0,0 +1,388 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import com.mojang.math.Axis; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.player.PlayerModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.Identifier; +import net.minecraft.world.entity.EquipmentSlot; +import org.joml.Matrix4f; +import org.joml.Vector3f; +import org.joml.Vector3fc; +import org.joml.Vector4f; + +public class agt { + private static final int PART_COUNT = 16; + private static final float ALPHA = 1.0F; + private static final boolean WIND_ENABLED = true; + private static final float WIND_AMPLITUDE = 1.5F; + private static final float ARMOR_Z_OFFSET = 0.1F; + private static agt instance; + + public static agt getInstance() { + int var0 = -570354757; + + while (true) { + switch (var0) { + case -570354757: + default: + if (instance == null) { + var0 = 1568961308; + } else { + var0 = 1730903212; + } + break; + case 1568961308: + instance = new agt(); + var0 = 1730903212; + break; + case 1730903212: + return instance; + } + } + } + + public void render(PoseStack var1, SubmitNodeCollector var2, int var3, AvatarRenderState var4, AbstractClientPlayer var5, PlayerModel var6) { + Identifier var7 = null; + agq var8 = null; + float var9 = 0.0F; + int var10 = 0; + RenderType var11 = null; + int var12 = 1821921632; + + while (true) { + switch (var12) { + case -1592383259: + var1.translate(0.0, 0.0, 0.1F); + var12 = -917800904; + break; + case -917800904: + var11 = RenderTypes.entityTranslucent(var7); + var2.submitCustomGeometry(var1, var11, (var5x, var6x) -> this.renderMesh(var5x, var6x, var8, var9, var3, var10)); + var1.popPose(); + return; + case -677573405: + var8 = agm.getInstance().simulationFor(var5); + if (var8 == null) { + var12 = 912234446; + } else { + var12 = -481692026; + } + break; + case -481692026: + var9 = Minecraft.getInstance() + .getDeltaTracker() + .getGameTimeDeltaPartialTick((boolean)((((-1188811077 ^ 1188811077) + ((-1188811077 & 1188811077) << 1))) != 0)); + var10 = (var5.isUnderWater()) ? 1 : 0; + var1.pushPose(); + var6.root().translateAndRotate(var1); + var6.body.translateAndRotate(var1); + if (!var5.getItemBySlot(EquipmentSlot.CHEST).isEmpty()) { + var12 = -1592383259; + } else { + var12 = -917800904; + } + break; + case -126382460: + return; + case 912234446: + return; + case 1821921632: + default: + var7 = adm.resolve(var5); + if (var7 == null) { + var12 = -126382460; + } else { + var12 = -677573405; + } + } + } + } + + private void renderMesh(Pose var1, VertexConsumer var2, agq var3, float var4, int var5, boolean var6) { + int var7 = var5 == 15728880? 1: 0; + PoseStack var8 = new PoseStack(); + var8.last().pose().set(var1.pose()); + Matrix4f[] var9 = new Matrix4f[16]; + Vector3f[] var10 = new Vector3f[16]; + Vector3f[] var11 = new Vector3f[16]; + + for (int var12 = 0; var12 < 16; var12++) { + var8.pushPose(); + this.applySegmentPose(var8, var3, var4, var12, var6); + Matrix4f var13 = new Matrix4f(var8.last().pose()); + var9[var12] = var13; + int var14 = Math.max(var12 - (1), (1685477046 | -1685477046) + (1685477046 & -1685477046)); + var10[var12] = normalVec( + var9[var14], + var9[var14], + var13, + new Vector3f(0.3125F, var12 * 0.0625F, -0.0625F), + new Vector3f(-0.3125F, var12 * 0.0625F, -0.0625F), + new Vector3f(0.3125F, (var12 + (-424324170 | 424324171) + (-424324170 & 424324171)) * 0.0625F, -0.0625F), + (boolean)((var7 + ) != 0)); + var11[var12] = normalVec( + var9[var14], + var9[var14], + var13, + new Vector3f(0.3125F, (var12 + (-1933833664 ^ 1933833665) + ((-1933833664 & 1933833665) << 1)) * 0.0625F, 0.0F), + new Vector3f(-0.3125F, (var12 + (-1432708153 | 1432708154) + (-1432708153 & 1432708154)) * 0.0625F, 0.0F), + new Vector3f(0.3125F, var12 * 0.0625F, 0.0F), + (boolean)((var7 + ) != 0)); + var8.popPose(); + } + + for (int var23 = 0; + var23 < 16; + var23++ + ) { + int var24 = Math.max( + var23 - (1), (-554215126 ^ 554215126) + ((-554215126 & 554215126) << 1) + ); + Matrix4f var25 = var9[var23]; + Matrix4f var15 = var9[var24]; + if (var23 == 0) { + float var16 = 0.015625F; + float var17 = 0.171875F; + float var18 = 0.0F; + float var19 = 0.03125F; + Vector3f var20 = normalVec( + var9[0], + var9[0], + var9[0], + new Vector3f(0.3125F, 0.0F, 0.0F), + new Vector3f(-0.3125F, 0.0F, 0.0F), + new Vector3f(0.3125F, 0.0F, 0.0625F), + (boolean)((var7 + ) != 0)); + this.vertex(var2, var9[0], 0.3125F, 0.0F, 0.0F, var17, var19, var5, var20); + this.vertex(var2, var9[0], -0.3125F, 0.0F, 0.0F, var16, var19, var5, var20); + this.vertex(var2, var9[0], -0.3125F, 0.0F, -0.0625F, var16, var18, var5, var20); + this.vertex(var2, var9[0], 0.3125F, 0.0F, -0.0625F, var17, var18, var5, var20); + } + + if (var23 == (270538778 | -270538763) + (270538778 & -270538763)) { + float var26 = 0.171875F; + float var31 = 0.328125F; + float var36 = 0.0F; + float var38 = 0.03125F; + Vector3f var40 = normalVec( + var25, + var25, + var25, + new Vector3f(0.3125F, 1.0F, -0.0625F), + new Vector3f(-0.3125F, 1.0F, -0.0625F), + new Vector3f(0.3125F, 1.0F, 0.0F), + (boolean)((var7 + ) != 0)); + this.vertex(var2, var25, 0.3125F, 1.0F, -0.0625F, var31, var36, var5, var40); + this.vertex(var2, var25, -0.3125F, 1.0F, -0.0625F, var26, var36, var5, var40); + this.vertex(var2, var25, -0.3125F, 1.0F, 0.0F, var26, var38, var5, var40); + this.vertex(var2, var25, 0.3125F, 1.0F, 0.0F, var31, var38, var5, var40); + } + + float var37 = 0.03125F * (var23 + (343164567 | -343164566) + (343164567 & -343164566)); + float var39 = var37 + 0.03125F; + float var27 = 0.0F; + float var32 = 0.015625F; + Vector3f var41 = normalVec( + var25, + var25, + var15, + new Vector3f(-0.3125F, (var23 + (-1690163138 | 1690163139) + (-1690163138 & 1690163139)) * 0.0625F, 0.0F), + new Vector3f(-0.3125F, (var23 + (172037450 | -172037449) + (172037450 & -172037449)) * 0.0625F, -0.0625F), + new Vector3f(-0.3125F, var23 * 0.0625F, 0.0F), + (boolean)((var7 + ) != 0)); + this.vertex(var2, var25, -0.3125F, (var23 + (-1663044592 | 1663044593) + (-1663044592 & 1663044593)) * 0.0625F, 0.0F, var27, var39, var5, var41); + this.vertex( + var2, var25, -0.3125F, (var23 + (-1164346466 ^ 1164346467) + ((-1164346466 & 1164346467) << 1)) * 0.0625F, -0.0625F, var32, var39, var5, var41 + ); + this.vertex(var2, var15, -0.3125F, var23 * 0.0625F, -0.0625F, var32, var37, var5, var41); + this.vertex(var2, var15, -0.3125F, var23 * 0.0625F, 0.0F, var27, var37, var5, var41); + var27 = 0.171875F; + var32 = 0.1875F; + var41 = normalVec( + var25, + var25, + var15, + new Vector3f(0.3125F, (var23 + (-1764110878 | 1764110879) + (-1764110878 & 1764110879)) * 0.0625F, -0.0625F), + new Vector3f(0.3125F, (var23 + (793509807 ^ -793509806) + ((793509807 & -793509806) << 1)) * 0.0625F, 0.0F), + new Vector3f(0.3125F, var23 * 0.0625F, -0.0625F), + (boolean)((var7 + ) != 0)); + this.vertex(var2, var25, 0.3125F, (var23 + (494096219 | -494096218) + (494096219 & -494096218)) * 0.0625F, -0.0625F, var27, var39, var5, var41); + this.vertex(var2, var25, 0.3125F, (var23 + (1904254676 ^ -1904254675) + ((1904254676 & -1904254675) << 1)) * 0.0625F, 0.0F, var32, var39, var5, var41); + this.vertex(var2, var15, 0.3125F, var23 * 0.0625F, 0.0F, var32, var37, var5, var41); + this.vertex(var2, var15, 0.3125F, var23 * 0.0625F, -0.0625F, var27, var37, var5, var41); + var27 = 0.015625F; + var32 = 0.171875F; + Vector3f var21 = average( + var10[var23], + var10[Math.max(var23 - (1), (-223699673 ^ 223699673) + ((-223699673 & 223699673) << 1))] + ); + Vector3f var22 = average( + var10[var23], var10[Math.min(var23 + 1, (1195985220 | -1195985205) + (1195985220 & -1195985205))] + ); + this.vertex(var2, var15, 0.3125F, var23 * 0.0625F, -0.0625F, var32, var37, var5, var21); + this.vertex(var2, var15, -0.3125F, var23 * 0.0625F, -0.0625F, var27, var37, var5, var21); + this.vertex( + var2, var25, -0.3125F, (var23 + (1291317354 ^ -1291317353) + ((1291317354 & -1291317353) << 1)) * 0.0625F, -0.0625F, var27, var39, var5, var22 + ); + this.vertex(var2, var25, 0.3125F, (var23 + (-670386097 ^ 670386098) + ((-670386097 & 670386098) << 1)) * 0.0625F, -0.0625F, var32, var39, var5, var22); + var27 = 0.1875F; + var32 = 0.34375F; + var21 = average( + var11[var23], + var11[Math.max(var23 - (1), (-1248870852 | 1248870852) + (-1248870852 & 1248870852))] + ); + var22 = average( + var11[var23], var11[Math.min(var23 + 1, (-1455380918 | 1455380933) + (-1455380918 & 1455380933))] + ); + this.vertex(var2, var15, 0.3125F, var23 * 0.0625F, 0.0F, var27, var37, var5, var21); + this.vertex(var2, var15, -0.3125F, var23 * 0.0625F, 0.0F, var32, var37, var5, var21); + this.vertex(var2, var25, -0.3125F, (var23 + (-1631072131 ^ 1631072132) + ((-1631072131 & 1631072132) << 1)) * 0.0625F, 0.0F, var32, var39, var5, var22); + this.vertex(var2, var25, 0.3125F, (var23 + (1452699599 | -1452699598) + (1452699599 & -1452699598)) * 0.0625F, 0.0F, var27, var39, var5, var22); + } + } + + private void applySegmentPose(PoseStack var1, agq var2, float var3, int var4, boolean var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + int var11 = -1879885775; + + while (true) { + switch (var11) { + case -1879885775: + default: + var1.translate(0.0, 0.0, 0.125); + var6 = var2.lerpX(var4, var3) - var2.lerpX(0, var3); + if (var6 > 0.0F) { + var11 = 1227728507; + } else { + var11 = 2021888588; + } + break; + case 1227728507: + var6 = 0.0F; + var11 = 2021888588; + break; + case 2021888588: + var7 = var2.lerpY(0, var3) - var4 - var2.lerpY(var4, var3); + var8 = var2.lerpZ(0, var3) - var2.lerpZ(var4, var3); + var9 = this.getRotation(var3, var4, var2); + var10 = this.naturalWindSwing(var4, var5); + var1.mulPose(Axis.XP.rotationDegrees(6.0F + var10)); + var1.mulPose(Axis.YP.rotationDegrees(180.0F)); + var1.translate(-var8 / 16.0F, var7 / 16.0F, var6 / 16.0F); + var1.translate(0.0, 0.03, -0.03); + var1.translate(0.0F, var4 / 16.0F, 0.0F); + var1.mulPose(Axis.XP.rotationDegrees(-var9)); + var1.translate(0.0F, -var4 / 16.0F, 0.0F); + var1.translate(0.0, -0.03, 0.03); + return; + } + } + } + + private float getRotation(float var1, int var2, agq var3) { + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = -1609007596; + + while (true) { + switch (var8) { + case -1609007596: + default: + if (var2 == (2024527405 | -2024527390) + (2024527405 & -2024527390)) { + var8 = -871817359; + } else { + var8 = -1187158624; + } + break; + case -1187158624: + var4 = var3.lerpX(var2, var1); + var5 = var3.lerpY(var2, var1); + var6 = var3.lerpX(var2 + 1, var1); + var7 = var3.lerpY(var2 + 1, var1); + return (float)(Math.toDegrees(Math.atan2(var6 - var4, var7 - var5)) + 180.0); + case -871817359: + return this.getRotation(var1, var2 - (1), var3); + } + } + } + + private float naturalWindSwing(int var1, boolean var2) { + long var3 = System.currentTimeMillis() + / (var2 ? 9: (-1719694044 | 1719694047) + (-1719694044 & 1719694047)) + % ((3971247734082718972L | -3971247734082718612L) + (3971247734082718972L & -3971247734082718612L)); + float var5 = (var1 + (260218127 | -260218126) + (260218127 & -260218126)) / 16.0F; + return (float)(Math.sin(Math.toRadians(var5 * 360.0F - (float)var3)) * 1.5); + } + + private static Vector3f average(Vector3f var0, Vector3f var1) { + return new Vector3f((var0.x + var1.x) / 2.0F, (var0.y + var1.y) / 2.0F, (var0.z + var1.z) / 2.0F); + } + + private static Vector3f normalVec(Matrix4f var0, Matrix4f var1, Matrix4f var2, Vector3f var3, Vector3f var4, Vector3f var5, boolean var6) { + Vector3fc var7 = null; + Vector3f var8 = null; + Vector3f var9 = null; + int var10 = 328797646; + + while (true) { + switch (var10) { + case 325731727: + var8.mul(-1.0F); + var10 = 1636916022; + break; + case 328797646: + default: + var7 = transform(var0, var3); + var8 = transform(var1, var4); + var9 = transform(var2, var5); + var8.sub(var7); + var9.sub(var7); + var8.cross(var9); + var8.normalize(); + if (var6) { + var10 = 325731727; + } else { + var10 = 1636916022; + } + break; + case 1636916022: + return var8; + } + } + } + + private static Vector3f transform(Matrix4f var0, Vector3f var1) { + Vector4f var2 = var0.transform(new Vector4f(var1.x, var1.y, var1.z, 1.0F)); + return new Vector3f(var2.x, var2.y, var2.z); + } + + private void vertex(VertexConsumer var1, Matrix4f var2, float var3, float var4, float var5, float var6, float var7, int var8, Vector3f var9) { + var1.addVertex(var2, var3, var4, var5) + .setColor(1.0F, 1.0F, 1.0F, 1.0F) + .setUv(var6, var7) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var8) + .setNormal(var9.x, var9.y, var9.z); + } +} diff --git a/src/main/java/defpackage/agu.java b/src/main/java/defpackage/agu.java new file mode 100644 index 0000000..f5b6849 --- /dev/null +++ b/src/main/java/defpackage/agu.java @@ -0,0 +1,29 @@ +package defpackage; + +import net.minecraft.resources.Identifier; + +public final class agu { + private final String key; + private final String displayName; + private final Identifier texture; + + agu(String var1, String var2) { + this.key = var1; + this.displayName = var2; + this.texture = Identifier.fromNamespaceAndPath( + "evolution", "textures/cosmetic/graffiti/" + var1 + ".png" + ); + } + + public String getKey() { + return this.key; + } + + public String getDisplayName() { + return this.displayName; + } + + public Identifier getTexture() { + return this.texture; + } +} diff --git a/src/main/java/defpackage/agv.java b/src/main/java/defpackage/agv.java new file mode 100644 index 0000000..68b9882 --- /dev/null +++ b/src/main/java/defpackage/agv.java @@ -0,0 +1,205 @@ +package defpackage; + +import java.util.Iterator; +import java.util.List; + +public final class agv { + private static final String NAMESPACE = "evolution"; + private static final String TEXTURE_ROOT = "textures/cosmetic/graffiti/"; + private static final String TEXTURE_SUFFIX = ".png"; + private static final List GRAFFITI = List.of( + new agu("evo", "Evo"), + new agu( + "noai", + "No Thanks I Use AI" + ) + ); + + private agv() { + } + + public static List all() { + return GRAFFITI; + } + + public static agu byKey(String var0) { + Iterator var1 = null; + agu var2 = null; + int var3 = 1758409555; + + while (true) { + switch (var3) { + case -1402610474: + return null; + case -1013487489: + return var2; + case -363244432: + var2 = (agu)var1.next(); + if (var2.getKey().equals(var0)) { + var3 = -1013487489; + } else { + var3 = 1202902728; + } + break; + case -109639119: + if (var1.hasNext()) { + var3 = -363244432; + } else { + var3 = -1402610474; + } + break; + case 55717957: + return null; + case 875357423: + var1 = GRAFFITI.iterator(); + var3 = -109639119; + break; + case 1202902728: + var3 = -109639119; + break; + case 1758409555: + default: + if (var0 == null) { + var3 = 55717957; + } else { + var3 = 875357423; + } + } + } + } + + public static agu byIndex(int var0) { + int var1 = 0; + int var2 = 419587713; + + while (true) { + switch (var2) { + case -1611225862: + var1 = GRAFFITI.size(); + return GRAFFITI.get((var0 % var1 + var1) % var1); + case -1094830575: + return null; + case 419587713: + } + + if (GRAFFITI.isEmpty()) { + var2 = -1094830575; + } else { + var2 = -1611225862; + } + } + } + + public static int indexOf(agu var0) { + int var2 = 0; + int var1 = 1168340931; + + while (true) { + switch (var1) { + case -1965928659: + return var2; + case -1048405024: + var2 = -1; + var1 = -1965928659; + break; + case -757304011: + var2 = GRAFFITI.indexOf(var0); + var1 = -1965928659; + break; + case 1168340931: + default: + if (var0 == null) { + var1 = -1048405024; + } else { + var1 = -757304011; + } + } + } + } + + public static agu equipped() { + agu var0 = null; + agu var2 = null; + int var1 = -1330533430; + + while (true) { + switch (var1) { + case -2085654386: + return var2; + case -1936349340: + var2 = byIndex((-1710620500 | 1710620500) + (-1710620500 & 1710620500)); + var1 = -2085654386; + break; + case -1330533430: + default: + var0 = byKey(ahh.getInstance().equippedKey()); + if (var0 != null) { + var1 = 243834316; + } else { + var1 = -1936349340; + } + break; + case 243834316: + var2 = var0; + var1 = -2085654386; + } + } + } + + public static boolean isEquipped(agu var0) { + int var2 = 0; + int var1 = -1670906828; + + while (true) { + switch (var1) { + case -1670906828: + default: + if (var0 != null) { + var1 = -318504997; + } else { + var1 = 1266475267; + } + break; + case -318504997: + if (var0 == equipped()) { + var1 = 1050701133; + } else { + var1 = 1266475267; + } + break; + case 1050701133: + var2 = 1; + var1 = 1493036718; + break; + case 1266475267: + var2 = 0; + var1 = 1493036718; + break; + case 1493036718: + return (boolean)((var2) != 0); + } + } + } + + public static void equip(agu var0) { + int var1 = 1452832089; + + while (true) { + switch (var1) { + case -642991700: + return; + case 803153083: + ahh.getInstance().equip(var0.getKey()); + var1 = -642991700; + break; + case 1452832089: + default: + if (var0 != null) { + var1 = 803153083; + } else { + var1 = -642991700; + } + } + } + } +} diff --git a/src/main/java/defpackage/agw.java b/src/main/java/defpackage/agw.java new file mode 100644 index 0000000..fccdb1f --- /dev/null +++ b/src/main/java/defpackage/agw.java @@ -0,0 +1,111 @@ +package defpackage; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.CopyOption; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.Locale; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.function.Consumer; +import net.fabricmc.loader.api.FabricLoader; + +final class agw { + private static final String ROOT = "evolution"; + private static final String FOLDER = "graffiti"; + private static final String TEMP_SUFFIX = ".tmp"; + private static final String THREAD_NAME = "evo-graffiti-io"; + private static final String SANITIZE_PATTERN = "[^a-z0-9._-]"; + private static final String SANITIZE_REPLACEMENT = "_"; + private static final int MAX_NAME_LENGTH = 64; + private static final String WRITE_FAILURE = "graffiti write failed for {}"; + private static final String READ_FAILURE = "graffiti read failed for {}"; + private static final ExecutorService IO = Executors.newSingleThreadExecutor(var0 -> { + Thread var1 = new Thread(var0, "evo-graffiti-io"); + var1.setDaemon((boolean)((((1737747292 ^ -1737747291) + ((1737747292 & -1737747291) << 1))) != 0)); + return var1; + }); + + private agw() { + } + + static Path directory() { + return FabricLoader.getInstance() + .getGameDir() + .resolve("evolution") + .resolve("graffiti"); + } + + static String sanitize(String var0) { + String var1 = null; + String var3 = null; + int var2 = -324812744; + + while (true) { + switch (var2) { + case -1539694785: + var3 = var1; + var2 = 948962364; + break; + case -1024311770: + var3 = var1.substring(0, (-1834516968 | 1834517032) + (-1834516968 & 1834517032)); + var2 = 948962364; + break; + case -324812744: + default: + var1 = var0.toLowerCase(Locale.ROOT) + .replaceAll( + "[^a-z0-9._-]", + "_" + ); + if (var1.length() <= (-1760548345 | 1760548409) + (-1760548345 & 1760548409)) { + var2 = -1539694785; + } else { + var2 = -1024311770; + } + break; + case 948962364: + return var3; + } + } + } + + static void writeAsync(Path var0, String var1) { + IO.execute(() -> write(var0, var1)); + } + + private static void write(Path var0, String var1) { + try { + Files.createDirectories(var0.getParent()); + Path var2 = var0.resolveSibling(var0.getFileName() + ".tmp"); + Files.writeString(var2, var1, StandardCharsets.UTF_8); + CopyOption[] var10002 = new CopyOption[1]; + var10002[0] = StandardCopyOption.REPLACE_EXISTING; + Files.move(var2, var0, var10002); + } catch (IOException var3) { + id.warn( + Cif.COSMETIC, "graffiti write failed for {}", var0.getFileName(), var3 + ); + } + } + + static String read(Path var0) { + try { + return Files.exists(var0) ? Files.readString(var0, StandardCharsets.UTF_8) : null; + } catch (IOException var2) { + id.warn( + Cif.COSMETIC, + "graffiti read failed for {}", + var0.getFileName(), + var2 + ); + return null; + } + } + + static void readAsync(Path var0, Consumer var1) { + IO.execute(() -> var1.accept(read(var0))); + } +} diff --git a/src/main/java/defpackage/agx.java b/src/main/java/defpackage/agx.java new file mode 100644 index 0000000..b0fb379 --- /dev/null +++ b/src/main/java/defpackage/agx.java @@ -0,0 +1,1112 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Set; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ServerData; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; + +public final class agx { + private static final String ACTION_SPRAY = "spray"; + private static final String KEY_UUID = "uuid"; + private static final String KEY_SERVER = "server"; + private static final String KEY_DIMENSION = "dim"; + private static final String KEY_SINCE = "since"; + private static final String KEY_SPRAYS = "sprays"; + private static final String KEY_ERASE = "erase"; + private static final String KEY_GONE = "gone"; + private static final String KEY_FULL = "full"; + private static final String KEY_AT = "at"; + private static final String KEY_GRAFFITI = "k"; + private static final String KEY_ANCHOR_X = "bx"; + private static final String KEY_ANCHOR_Y = "by"; + private static final String KEY_ANCHOR_Z = "bz"; + private static final String KEY_FACE = "f"; + private static final String KEY_ROLL = "r"; + private static final String KEY_SIZE = "s"; + private static final String KEY_TTL = "ttl"; + private static final String KEY_AGE = "age"; + private static final String KEY_OWNER = "u"; + private static final String PUSH_FAILURE = "graffiti sync failed: {}"; + private static final String STATUS_FAILURE = "graffiti sync rejected with status {}"; + private static final String RESPONSE_FAILURE = "graffiti sync response parse failed"; + private static final int FAST_INTERVAL_TICKS = 10; + private static final int IDLE_INTERVAL_TICKS = 100; + private static final int PASSIVE_INTERVAL_TICKS = 600; + private static final int NEIGHBOUR_SCAN_TICKS = 20; + private static final int PRUNE_INTERVAL_TICKS = 40; + public static final int MAX_ACTIVE_PER_USER = 12; + private static final int MAX_BATCH = 32; + private static final int MAX_QUEUE = 256; + private static final long SNAPSHOT_CURSOR = 0L; + private static final long SOUND_MAX_AGE_MILLIS = 8000L; + private static final int MAX_IDENTITY_LENGTH = 32; + private static final char QUEUE_SEPARATOR = '|'; + private static final String DEFAULT_PORT_SUFFIX = ":25565"; + private static final String HOST_TRAILING_DOT = "."; + private static final ArrayDeque pendingSprays = new ArrayDeque<>(); + private static final Set pendingErasures = new LinkedHashSet<>(); + private static volatile boolean requestInFlight; + private static String identity; + private static String server; + private static String dimension; + private static boolean showedOthers = (boolean)(((1)) != 0); + private static long since; + private static int epoch; + private static int ticks; + private static int scanTicks; + private static int pruneTicks; + private static boolean neighbourNear; + + private agx() { + } + + public static void initialize() { + ClientTickEvents.END_CLIENT_TICK.register(agx::tick); + } + + public static String localIdentity() { + return identity; + } + + public static void publish(ahg var0) { + Iterator var1 = null; + ahg var2 = null; + int var3 = -2002142508; + + while (true) { + switch (var3) { + case -2052917074: + pendingSprays.addLast(var0); + var1 = ahf.getInstance().evictOwned(identity, 12).iterator(); + var3 = -1830712442; + break; + case -2002142508: + default: + if (var0 == null) { + var3 = 878384505; + } else { + var3 = -5217621; + } + break; + case -1847280750: + pendingSprays.pollFirst(); + var3 = -5217621; + break; + case -1830712442: + if (var1.hasNext()) { + var3 = 1950274556; + } else { + var3 = 1829160118; + } + break; + case -5217621: + if (pendingSprays.size() >= (973731039 | -973730783) + (973731039 & -973730783)) { + var3 = -1847280750; + } else { + var3 = -2052917074; + } + break; + case 878384505: + return; + case 1829160118: + return; + case 1950274556: + var2 = (ahg)var1.next(); + queueErasure(var2.dimension(), var2.faceKey()); + var3 = -1830712442; + } + } + } + + public static void erase(ahg var0) { + ahf var1 = null; + int var2 = 1948914932; + + while (true) { + switch (var2) { + case 117262981: + var1 = ahf.getInstance(); + if (var0.isOwnedBy(identity)) { + var2 = 1434567090; + } else { + var2 = 1319001514; + } + break; + case 690945739: + return; + case 1319001514: + var1.hide(var0.dimension(), var0.faceKey()); + return; + case 1434567090: + var1.remove(var0.dimension(), var0.faceKey()); + queueErasure(var0.dimension(), var0.faceKey()); + return; + case 1948914932: + default: + if (var0 == null) { + var2 = 690945739; + } else { + var2 = 117262981; + } + } + } + } + + public static void wipeOwn() { + Iterator var0 = null; + ahg var1 = null; + int var2 = 1520567737; + + while (true) { + switch (var2) { + case -1031694291: + if (var0.hasNext()) { + var2 = 1203562188; + } else { + var2 = 763755579; + } + break; + case 763755579: + return; + case 1203562188: + var1 = (ahg)var0.next(); + queueErasure(var1.dimension(), var1.faceKey()); + var2 = -1031694291; + break; + case 1520567737: + default: + var0 = ahf.getInstance().removeOwned(identity).iterator(); + var2 = -1031694291; + } + } + } + + private static void queueErasure(String var0, String var1) { + Iterator var2 = null; + int var3 = -1351090948; + + while (true) { + switch (var3) { + case -1838443347: + pendingErasures.add(var0 + "|" + var1); + return; + case -1351090948: + default: + if (pendingErasures.size() >= (-117178276 | 117178532) + (-117178276 & 117178532)) { + var3 = 1362652558; + } else { + var3 = -1838443347; + } + break; + case 1362652558: + var2 = pendingErasures.iterator(); + var2.next(); + var2.remove(); + var3 = -1351090948; + } + } + } + + private static void tick(Minecraft var0) { + if (var0.player != null && var0.level != null) { + identity = identityOf(var0); + String var1 = var0.level.dimension().identifier().toString(); + sy var2 = sy.INSTANCE; + ahf var3 = ahf.getInstance(); + if ((pruneTicks += (1370416276 ^ -1370416275) + ((1370416276 & -1370416275) << 1)) >= (1666888174 | -1666888134) + (1666888174 & -1666888134)) { + pruneTicks = 0; + if (var3.isOpen()) { + long var4 = System.currentTimeMillis(); + List var6 = var3.prune(var4, var0.level, var1); + + for (int var7 = 0; var7 < var6.size(); var7++) { + ahg var8 = (ahg)var6.get(var7); + if (!var8.isExpired(var4) && var8.isOwnedBy(identity)) { + queueErasure(var8.dimension(), var8.faceKey()); + } + } + } + } + + String var9 = serverKey(var0); + if (var2.syncs() && var9 != null && identity != null) { + if (!var9.equals(server)) { + pendingSprays.clear(); + pendingErasures.clear(); + server = var9; + requestSnapshot(); + } + + if (!var1.equals(dimension)) { + dimension = var1; + requestSnapshot(); + } + + if (var2.showsOthers() != showedOthers) { + showedOthers = var2.showsOthers(); + requestSnapshot(); + } + + if ((scanTicks += (544616291 ^ -544616290) + ((544616291 & -544616290) << 1)) >= (441456159 ^ -441456139) + ((441456159 & -441456139) << 1)) { + scanTicks = 0; + neighbourNear = hasEvoNeighbour(var0); + } + + ticks += 1; + if (!requestInFlight) { + if (hasPending() || ticks >= pollInterval(var2)) { + ticks = 0; + send(var0); + } + } + } else { + pendingSprays.clear(); + pendingErasures.clear(); + server = null; + dimension = null; + requestSnapshot(); + } + } else { + reset(); + } + } + + private static int pollInterval(sy var0) { + int var2 = 0; + int var1 = 423895770; + + while (true) { + switch (var1) { + case -1523369066: + var2 = 600; + var1 = 483070387; + break; + case -60137166: + return 10; + case 423895770: + default: + if (neighbourNear) { + var1 = -60137166; + } else { + var1 = 1814177395; + } + break; + case 483070387: + return var2; + case 1473166896: + var2 = 100; + var1 = 483070387; + break; + case 1814177395: + if (var0.isEnabled()) { + var1 = 1473166896; + } else { + var1 = -1523369066; + } + } + } + } + + private static void requestSnapshot() { + since = (-2429189920194679280L | 2429189920194679280L) + (-2429189920194679280L & 2429189920194679280L); + ticks = 600; + epoch += 1; + } + + private static boolean hasPending() { + for (ahg var1 : pendingSprays) { + if (var1.dimension().equals(dimension)) { + return (boolean)(((1)) != 0); + } + } + + String var3 = dimension + "|"; + + for (String var2 : pendingErasures) { + if (var2.startsWith(var3)) { + return (boolean)(((1)) != 0); + } + } + + return (boolean)(((0)) != 0); + } + + private static void send(Minecraft var0) { + JsonObject var1 = anb.actionBody("spray"); + if (var1 != null) { + var1.addProperty("uuid", identity); + var1.addProperty("server", server); + var1.addProperty("dim", dimension); + var1.addProperty("since", since); + List var2 = drainSprays(); + if (!var2.isEmpty()) { + JsonArray var3 = new JsonArray(); + + for (int var4 = 0; var4 < var2.size(); var4++) { + var3.add(toJson((ahg)var2.get(var4))); + } + + var1.add("sprays", var3); + } + + List var8 = drainErasures(); + if (!var8.isEmpty()) { + JsonArray var9 = new JsonArray(); + + for (int var5 = 0; var5 < var8.size(); var5++) { + var9.add((String)var8.get(var5)); + } + + var1.add("erase", var9); + } + + int var10 = since == (7755093957864329146L | -7755093957864329146L) + (7755093957864329146L & -7755093957864329146L) + ? 1: 0; + int var11 = epoch; + String var6 = dimension; + String var7 = server; + requestInFlight = (boolean)(((1)) != 0); + anb.post(var1) + .whenComplete( + (var7x, var8x) -> { + if (var8x == null && var7x != null && var7x.statusCode() == (-1659345688 | 1659345888) + (-1659345688 & 1659345888)) { + try { + JsonObject var9x = JsonParser.parseString(var7x.body()).getAsJsonObject(); + JsonElement var10x = var9x.get("at"); + long var11x = var10x != null && var10x.isJsonPrimitive() + ? var10x.getAsLong() + : (737845895776234099L | -737845895776234099L) + (737845895776234099L & -737845895776234099L); + JsonElement var13 = var9x.get("sprays"); + JsonElement var14 = var9x.get("gone"); + JsonArray var15 = var13 != null && var13.isJsonArray() ? var13.getAsJsonArray() : new JsonArray(); + JsonArray var16 = var14 != null && var14.isJsonArray() ? var14.getAsJsonArray() : new JsonArray(); + JsonElement var17 = var9x.get("full"); + int var18 = var10 && var17 != null && var17.isJsonPrimitive() && var17.getAsBoolean() + ? 1: 0; + var0.execute(() -> { + apply(var11, var7, var6, var18, var11x, var15, var16); + requestInFlight = (boolean)(((0)) != 0); + }); + } catch (RuntimeException var19) { + requestInFlight = (boolean)(((0)) != 0); + id.warn( + Cif.SOCIAL, + "graffiti sync response parse failed", + var19 + ); + } + } else { + requestInFlight = (boolean)(((0)) != 0); + requeue(var2, var8, var6); + if (var7x != null && var7x.statusCode() != (-1975868469 | 1975868669) + (-1975868469 & 1975868669)) { + id.warn( + Cif.SOCIAL, + "graffiti sync rejected with status {}", + var7x.statusCode() + ); + } else { + id.warn( + Cif.SOCIAL, + "graffiti sync failed: {}", + var8x == null ? "no response" : var8x.toString() + ); + } + } + } + ); + } + } + + private static List drainSprays() { + ArrayList var0 = null; + Iterator var1 = null; + ahg var2 = null; + int var3 = -1479598917; + + while (true) { + switch (var3) { + case -1479598917: + default: + var0 = new ArrayList(); + var1 = pendingSprays.iterator(); + var3 = -1379340943; + break; + case -1444908729: + var2 = (ahg)var1.next(); + if (!var2.dimension().equals(dimension)) { + var3 = 1023452152; + } else { + var3 = -1323761771; + } + break; + case -1379340943: + if (var1.hasNext()) { + var3 = 169937660; + } else { + var3 = 105314169; + } + break; + case -1323761771: + var1.remove(); + var0.add(var2); + var3 = -1379340943; + break; + case 105314169: + return var0; + case 169937660: + if (var0.size() < (345817991 ^ -345817959) + ((345817991 & -345817959) << 1)) { + var3 = -1444908729; + } else { + var3 = 105314169; + } + break; + case 1023452152: + var3 = -1379340943; + } + } + } + + private static List drainErasures() { + ArrayList var0 = null; + String var1 = null; + Iterator var2 = null; + String var3 = null; + int var4 = 1571644270; + + while (true) { + switch (var4) { + case -1696661476: + var4 = 1280916017; + break; + case -1570068851: + return var0; + case -1180167675: + if (var0.size() < (963815169 ^ -963815137) + ((963815169 & -963815137) << 1)) { + var4 = 1045737388; + } else { + var4 = -1570068851; + } + break; + case -259491577: + var2.remove(); + var0.add(var3.substring(var1.length())); + var4 = 1280916017; + break; + case 1045737388: + var3 = (String)var2.next(); + if (!var3.startsWith(var1)) { + var4 = -1696661476; + } else { + var4 = -259491577; + } + break; + case 1280916017: + if (var2.hasNext()) { + var4 = -1180167675; + } else { + var4 = -1570068851; + } + break; + case 1571644270: + default: + var0 = new ArrayList(); + var1 = dimension + "|"; + var2 = pendingErasures.iterator(); + var4 = 1280916017; + } + } + } + + private static void requeue(List var0, List var1, String var2) { + int var3 = 0; + ahg var4 = null; + int var5 = 314526491; + + while (true) { + switch (var5) { + case -1522268724: + if (var3 >= 0) { + var5 = -964861751; + } else { + var5 = 1743227840; + } + break; + case -1327328109: + return; + case -964861751: + var4 = (ahg)var0.get(var3); + if (pendingSprays.size() < (596671826 | -596671570) + (596671826 & -596671570)) { + var5 = 570441893; + } else { + var5 = 268977007; + } + break; + case 268977007: + var3--; + var5 = -1522268724; + break; + case 314526491: + default: + var3 = var0.size() - (1); + var5 = -1522268724; + break; + case 570441893: + pendingSprays.addFirst(var4); + var5 = 268977007; + break; + case 1184014675: + if (var3 < var1.size()) { + var5 = 1671796311; + } else { + var5 = -1327328109; + } + break; + case 1671796311: + queueErasure(var2, (String)var1.get(var3)); + var3++; + var5 = 1184014675; + break; + case 1743227840: + var3 = 0; + var5 = 1184014675; + } + } + } + + private static JsonObject toJson(ahg var0) { + JsonObject var1 = new JsonObject(); + var1.addProperty("k", var0.key()); + var1.addProperty("bx", var0.anchor().getX()); + var1.addProperty("by", var0.anchor().getY()); + var1.addProperty("bz", var0.anchor().getZ()); + var1.addProperty("f", var0.face().getName()); + var1.addProperty("r", var0.roll()); + var1.addProperty("s", var0.size()); + var1.addProperty( + "ttl", + Math.max((5611532431681597226L | -5611532431681597226L) + (5611532431681597226L & -5611532431681597226L), var0.expiresAt() - var0.placedAt()) + ); + return var1; + } + + private static void apply(int var0, String var1, String var2, boolean var3, long var4, JsonArray var6, JsonArray var7) { + Minecraft var8 = null; + sy var9 = null; + ahf var10 = null; + long var11 = (634274419621659178L ^ -634274419621659178L) + ((634274419621659178L & -634274419621659178L) << 1); + int var13 = 0; + double var14 = 0.0; + Set var16 = null; + Iterator var17 = null; + JsonElement var18 = null; + ahg var19 = null; + int var21 = 0; + Set var22 = null; + int var20 = -1660825025; + + while (true) { + switch (var20) { + case -2102269680: + if (var9.sharesSpraySound()) { + var20 = 1219365170; + } else { + var20 = 1171754587; + } + break; + case -2074570510: + if (var3) { + var20 = -1601911482; + } else { + var20 = 1944971515; + } + break; + case -2061109169: + if (var8.player.distanceToSqr(var19.x(), var19.y(), var19.z()) <= var14) { + var20 = 1882244513; + } else { + var20 = -598322206; + } + break; + case -1880748905: + if (var13 != 0) { + var20 = -1511201259; + } else { + var20 = -598322206; + } + break; + case -1741805247: + var10.drop(var2, var18.getAsString()); + var20 = 60654052; + break; + case -1663015588: + var17 = var7.iterator(); + var20 = 1038229294; + break; + case -1660825025: + default: + var8 = Minecraft.getInstance(); + var9 = sy.INSTANCE; + var10 = ahf.getInstance(); + if (var8.player != null) { + var20 = -320193904; + } else { + var20 = 1866801606; + } + break; + case -1632834663: + var20 = 334213123; + break; + case -1601911482: + if (var9.showsOthers()) { + var20 = 1618383809; + } else { + var20 = 1944971515; + } + break; + case -1511201259: + if (var11 - var19.placedAt() <= (-7003279868543189654L | 7003279868543197654L) + (-7003279868543189654L & 7003279868543197654L)) { + var20 = -2061109169; + } else { + var20 = -598322206; + } + break; + case -1139312090: + if (var9.showsOthers()) { + var20 = 612643053; + } else { + var20 = 334213123; + } + break; + case -888165823: + var11 = System.currentTimeMillis(); + if (var9.isEnabled()) { + var20 = -2102269680; + } else { + var20 = 1171754587; + } + break; + case -798929091: + var18 = (JsonElement)var17.next(); + if (!var18.isJsonObject()) { + var20 = 1856310159; + } else { + var20 = 1686965544; + } + break; + case -598322206: + var20 = 334213123; + break; + case -563566444: + var16 = var22; + var17 = var6.iterator(); + var20 = 334213123; + break; + case -336956002: + var22 = Set.of(); + var20 = -563566444; + break; + case -320193904: + if (var10.isOpen()) { + var20 = 531843881; + } else { + var20 = 1866801606; + } + break; + case -135670054: + var18 = (JsonElement)var17.next(); + if (var18.isJsonPrimitive()) { + var20 = -1741805247; + } else { + var20 = 60654052; + } + break; + case -124870476: + var22 = new HashSet(); + var20 = -563566444; + break; + case 60654052: + var20 = 1038229294; + break; + case 319646407: + var20 = 334213123; + break; + case 334213123: + if (var17.hasNext()) { + var20 = -798929091; + } else { + var20 = -1663015588; + } + break; + case 476768358: + if (var3) { + var20 = 2083363436; + } else { + var20 = -1139312090; + } + break; + case 531843881: + if (var0 == epoch) { + var20 = 1010003442; + } else { + var20 = 1866801606; + } + break; + case 612643053: + if (!var10.accept(var19)) { + var20 = 319646407; + } else { + var20 = -1880748905; + } + break; + case 1010003442: + if (var2.equals(dimension)) { + var20 = 1052853420; + } else { + var20 = 1866801606; + } + break; + case 1038229294: + if (var17.hasNext()) { + var20 = -135670054; + } else { + var20 = -2074570510; + } + break; + case 1052853420: + if (!var1.equals(server)) { + var20 = 1866801606; + } else { + var20 = -888165823; + } + break; + case 1171754587: + var21 = 0; + var20 = 2017388392; + break; + case 1219365170: + var21 = 1; + var20 = 2017388392; + break; + case 1618383809: + var10.reconcile(var2, var16, identity); + var20 = 1944971515; + break; + case 1686965544: + var19 = parse(var18.getAsJsonObject(), var2, var11); + if (var19 == null) { + var20 = -1632834663; + } else { + var20 = 476768358; + } + break; + case 1856310159: + var20 = 334213123; + break; + case 1866801606: + return; + case 1882244513: + ahe.playSpray(var19.x(), var19.y(), var19.z()); + var20 = -598322206; + break; + case 1944971515: + var10.flush(); + since = var4; + return; + case 2017388392: + var13 = var21; + var14 = var9.hearRadius() * var9.hearRadius(); + if (var3) { + var20 = -124870476; + } else { + var20 = -336956002; + } + break; + case 2083363436: + var16.add(var19.faceKey()); + var20 = -1139312090; + } + } + } + + private static ahg parse(JsonObject var0, String var1, long var2) { + if (var0.has("k") + && var0.has("f") + && var0.has("bx") + && var0.has("by") + && var0.has("bz")) { + Direction var4 = Direction.byName(var0.get("f").getAsString()); + if (var4 == null) { + return null; + } else { + String var5 = var0.get("k").getAsString(); + if (agv.byKey(var5) == null) { + return null; + } else { + JsonElement var6 = var0.get("u"); + if (var6 != null && var6.isJsonPrimitive()) { + JsonElement var7 = var0.get("r"); + JsonElement var8 = var0.get("s"); + JsonElement var9 = var0.get("age"); + JsonElement var10 = var0.get("ttl"); + long var11 = var9 != null && var9.isJsonPrimitive() + ? Math.max((1449083540808030465L ^ -1449083540808030465L) + ((1449083540808030465L & -1449083540808030465L) << 1), var9.getAsLong()) + : (1345059240824068792L ^ -1345059240824068792L) + ((1345059240824068792L & -1345059240824068792L) << 1); + long var13 = var10 != null && var10.isJsonPrimitive() + ? Math.max((8339924406193015941L | -8339924406193015941L) + (8339924406193015941L & -8339924406193015941L), var10.getAsLong()) + : (2882130795064129640L | -2882130794977729640L) + (2882130795064129640L & -2882130794977729640L); + BlockPos var15 = new BlockPos( + var0.get("bx").getAsInt(), + var0.get("by").getAsInt(), + var0.get("bz").getAsInt() + ); + return new ahg( + var5, + var1, + var15, + var4, + var7 == null ? 0.0F : var7.getAsFloat(), + var8 == null ? sy.INSTANCE.decalSize() : var8.getAsFloat(), + var6.getAsString(), + var2 - var11, + var2 + var13 + ); + } else { + return null; + } + } + } + } else { + return null; + } + } + + private static void reset() { + pendingSprays.clear(); + pendingErasures.clear(); + server = null; + dimension = null; + identity = null; + since = (-846413559133016394L ^ 846413559133016394L) + ((-846413559133016394L & 846413559133016394L) << 1); + neighbourNear = (boolean)(((0)) != 0); + } + + private static boolean hasEvoNeighbour(Minecraft var0) { + double var1 = 0.0; + double var3 = 0.0; + Iterator var5 = null; + AbstractClientPlayer var6 = null; + int var7 = 899429026; + + while (true) { + switch (var7) { + case -1830617089: + return (boolean)(((0)) != 0); + case -1694315668: + var7 = -1067974640; + break; + case -1541269808: + if (aiq.isEvoUser(var6.getUUID())) { + var7 = 1510440115; + } else { + var7 = -401337431; + } + break; + case -1100974978: + if (var0.player == null) { + var7 = -1830617089; + } else { + var7 = 1676605954; + } + break; + case -1067974640: + if (var5.hasNext()) { + var7 = 1430879047; + } else { + var7 = 1668540934; + } + break; + case -401337431: + var7 = -1067974640; + break; + case 369030008: + if (var6.distanceToSqr(var0.player) <= var3) { + var7 = -1541269808; + } else { + var7 = -401337431; + } + break; + case 899429026: + default: + if (var0.level != null) { + var7 = -1100974978; + } else { + var7 = -1830617089; + } + break; + case 1430879047: + var6 = (AbstractClientPlayer)var5.next(); + if (var6 == var0.player) { + var7 = -1694315668; + } else { + var7 = 369030008; + } + break; + case 1510440115: + return (boolean)(((1)) != 0); + case 1668540934: + return (boolean)(((0)) != 0); + case 1676605954: + var1 = sy.INSTANCE.hearRadius(); + var3 = var1 * var1; + var5 = var0.level.players().iterator(); + var7 = -1067974640; + } + } + } + + private static String serverKey(Minecraft var0) { + ServerData var1 = null; + String var2 = null; + String var4 = null; + int var3 = 1379680039; + + while (true) { + switch (var3) { + case -2139786497: + var4 = var2; + var3 = 1859950539; + break; + case -1995930855: + return null; + case -1908220194: + if (var2.endsWith(".")) { + var3 = 1401603481; + } else { + var3 = 1855279271; + } + break; + case -1447486985: + var2 = var2.substring( + 0, + var2.length() - ":25565".length() + ); + var3 = -1908220194; + break; + case -895539064: + var2 = var1.ip.trim().toLowerCase(Locale.ROOT); + if (var2.endsWith(":25565")) { + var3 = -1447486985; + } else { + var3 = -1908220194; + } + break; + case 292970466: + var4 = null; + var3 = 1859950539; + break; + case 369619264: + if (var1.ip == null) { + var3 = -1995930855; + } else { + var3 = -895539064; + } + break; + case 1379680039: + default: + var1 = var0.getCurrentServer(); + if (var1 != null) { + var3 = 369619264; + } else { + var3 = -1995930855; + } + break; + case 1401603481: + var2 = var2.substring( + 0, + var2.length() - ".".length() + ); + var3 = 1855279271; + break; + case 1855279271: + if (var2.isEmpty()) { + var3 = 292970466; + } else { + var3 = -2139786497; + } + break; + case 1859950539: + return var4; + } + } + } + + private static String identityOf(Minecraft var0) { + String var1 = null; + String var2 = null; + String var4 = null; + int var3 = -1606751306; + + while (true) { + switch (var3) { + case -1606751306: + default: + if (var0.player == null) { + var3 = -1083684001; + } else { + var3 = -1498144622; + } + break; + case -1498144622: + var4 = var0.player.getScoreboardName(); + var3 = -1303165452; + break; + case -1331573972: + return null; + case -1303165452: + var1 = var4; + if (var1 == null) { + var3 = -1331573972; + } else { + var3 = 542853794; + } + break; + case -1083684001: + var4 = null; + var3 = -1303165452; + break; + case -140924370: + return var2.toLowerCase(Locale.ROOT); + case 530331543: + return null; + case 542853794: + var2 = var1.trim(); + if (!var2.isEmpty()) { + var3 = 2037751846; + } else { + var3 = 530331543; + } + break; + case 2037751846: + if (var2.length() > (-840060973 ^ 840061005) + ((-840060973 & 840061005) << 1)) { + var3 = 530331543; + } else { + var3 = -140924370; + } + } + } + } +} diff --git a/src/main/java/defpackage/agy.java b/src/main/java/defpackage/agy.java new file mode 100644 index 0000000..53b8cb1 --- /dev/null +++ b/src/main/java/defpackage/agy.java @@ -0,0 +1,94 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import net.minecraft.client.renderer.SubmitNodeCollector.CustomGeometryRenderer; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +final class agy implements CustomGeometryRenderer { + private ahb this$0; + + final agu graffiti; + final List tags; + Vec3 camera; + long now; + long fadeMillis; + float opacity; + + agy(ahb var1, agu var2) { + Objects.requireNonNull(var1); + this.this$0 = var1; + this.tags = new ArrayList<>(); + this.graffiti = var2; + } + + public void render(Pose var1, VertexConsumer var2) { + int var3 = 0; + ahg var4 = null; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var10 = 0.0F; + int var9 = -391872980; + + while (true) { + switch (var9) { + case -1015090346: + return; + case -996659198: + var4 = this.tags.get(var3); + if (this.fadeMillis <= (5651953995510927111L ^ -5651953995510927111L) + ((5651953995510927111L & -5651953995510927111L) << 1)) { + var9 = -531099514; + } else { + var9 = 1222148860; + } + break; + case -808149798: + if (var3 < this.tags.size()) { + var9 = -996659198; + } else { + var9 = -1015090346; + } + break; + case -531099514: + var10 = 1.0F; + var9 = -23928435; + break; + case -391872980: + default: + var3 = 0; + var9 = -808149798; + break; + case -23928435: + var5 = var10; + var6 = 1.0F - (1.0F - var5) * (1.0F - var5); + var7 = 1.0F + 0.18F * (1.0F - var6); + var8 = Mth.clamp((float)(var4.expiresAt() - this.now) / 6000.0F, 0.0F, 1.0F); + ahb.emitQuad( + var1, + var2, + this.camera, + var4.x(), + var4.y(), + var4.z(), + var4.face(), + var4.roll(), + var4.size() * var7, + this.opacity * var6 * var8, + this.this$0.lightAt(var4.anchor(), var4.face()) + ); + var3++; + var9 = -808149798; + break; + case 1222148860: + var10 = Mth.clamp((float)(this.now - var4.placedAt()) / (float)this.fadeMillis, 0.0F, 1.0F); + var9 = -23928435; + } + } + } +} diff --git a/src/main/java/defpackage/agz.java b/src/main/java/defpackage/agz.java new file mode 100644 index 0000000..b81ffcb --- /dev/null +++ b/src/main/java/defpackage/agz.java @@ -0,0 +1,142 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import net.minecraft.client.renderer.SubmitNodeCollector.CustomGeometryRenderer; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +final class agz implements CustomGeometryRenderer { + Vec3 camera; + Direction face; + double centerX; + double centerY; + double centerZ; + float roll; + float size; + int rgb; + float opacity; + long openedAt; + + agz() { + } + + public void render(Pose var1, VertexConsumer var2) { + long var3 = (-2157649242109121060L | 2157649242109121060L) + (-2157649242109121060L & 2157649242109121060L); + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + Vec3 var9 = null; + Vec3 var10 = null; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + int var17 = 0; + int var18 = 0; + int var19 = 236081246; + + while (true) { + switch (var19) { + case -1512094541: + return; + case -1357288235: + var9 = ahb.rightAxis(this.face, this.roll); + var10 = ahb.upAxis(this.face, this.roll); + var11 = this.size * 0.5F * (1.0F + (1.0F - var6) * 0.22F); + var12 = var11 + 0.013F; + var13 = var11 * 0.3F * var6; + var14 = (float)(this.centerX - this.camera.x + this.face.getStepX() * 0.012F); + var15 = (float)(this.centerY - this.camera.y + this.face.getStepY() * 0.012F); + var16 = (float)(this.centerZ - this.camera.z + this.face.getStepZ() * 0.012F); + var17 = ahb.withAlpha(this.rgb, var8 * 0.3F); + this.bar(var1, var2, var9, var10, var14, var15, var16, -var12, var11, var12, var12, var17); + this.bar(var1, var2, var9, var10, var14, var15, var16, -var12, -var12, var12, -var11, var17); + this.bar(var1, var2, var9, var10, var14, var15, var16, -var12, -var11, -var11, var11, var17); + this.bar(var1, var2, var9, var10, var14, var15, var16, var11, -var11, var12, var11, var17); + var18 = ahb.withAlpha(this.rgb, var8); + this.bracket(var1, var2, var9, var10, var14, var15, var16, 1.0F, 1.0F, var11, var12, var13, var18); + this.bracket(var1, var2, var9, var10, var14, var15, var16, -1.0F, 1.0F, var11, var12, var13, var18); + this.bracket(var1, var2, var9, var10, var14, var15, var16, 1.0F, -1.0F, var11, var12, var13, var18); + this.bracket(var1, var2, var9, var10, var14, var15, var16, -1.0F, -1.0F, var11, var12, var13, var18); + return; + case 236081246: + default: + if (this.face == null) { + var19 = -1512094541; + } else { + var19 = 465825041; + } + break; + case 465825041: + var3 = System.currentTimeMillis(); + var5 = Mth.clamp((float)(var3 - this.openedAt) / 260.0F, 0.0F, 1.0F); + var6 = 1.0F - (float)Math.pow(1.0F - var5, 3.0); + var7 = 1.0F + - 0.11F + * ( + 1.0F + - Mth.cos( + (float)(var3 % ((-784559677343136439L | 784559677343138039L) + (-784559677343136439L & 784559677343138039L))) + / 1600.0F + * (float) (Math.PI * 2) + ) + ); + var8 = this.opacity * var6 * var7; + if (var8 <= 0.0F) { + var19 = 858255707; + } else { + var19 = -1357288235; + } + break; + case 858255707: + return; + } + } + } + + private void bracket( + Pose var1, + VertexConsumer var2, + Vec3 var3, + Vec3 var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + int var13 + ) { + float var14 = var8 * (var10 - var12); + float var15 = var8 * var11; + float var16 = var8 * var10; + float var17 = var9 * (var10 - var12); + float var18 = var9 * var11; + float var19 = var9 * var10; + this.bar(var1, var2, var3, var4, var5, var6, var7, Math.min(var14, var15), Math.min(var19, var18), Math.max(var14, var15), Math.max(var19, var18), var13); + this.bar(var1, var2, var3, var4, var5, var6, var7, Math.min(var16, var15), Math.min(var17, var18), Math.max(var16, var15), Math.max(var17, var18), var13); + } + + private void bar( + Pose var1, VertexConsumer var2, Vec3 var3, Vec3 var4, float var5, float var6, float var7, float var8, float var9, float var10, float var11, int var12 + ) { + this.corner(var1, var2, var3, var4, var5, var6, var7, var8, var9, var12); + this.corner(var1, var2, var3, var4, var5, var6, var7, var10, var9, var12); + this.corner(var1, var2, var3, var4, var5, var6, var7, var10, var11, var12); + this.corner(var1, var2, var3, var4, var5, var6, var7, var8, var11, var12); + } + + private void corner(Pose var1, VertexConsumer var2, Vec3 var3, Vec3 var4, float var5, float var6, float var7, float var8, float var9, int var10) { + var2.addVertex( + var1, var5 + (float)(var3.x * var8 + var4.x * var9), var6 + (float)(var3.y * var8 + var4.y * var9), var7 + (float)(var3.z * var8 + var4.z * var9) + ) + .setColor(var10); + } +} diff --git a/src/main/java/defpackage/ah.java b/src/main/java/defpackage/ah.java new file mode 100644 index 0000000..de0be48 --- /dev/null +++ b/src/main/java/defpackage/ah.java @@ -0,0 +1,79 @@ +package defpackage; + +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.item.ItemStack; + +public class ah { + public boolean bl; + public float swingProgress; + public ItemStack item; + public AbstractClientPlayer player; + public InteractionHand hand; + public boolean mainHand; + public float deltaTime; + public float equipProgress; + public float mainHandSwingProgress; + public float offHandSwingProgress; + public boolean mainHandSwitchEvent; + public boolean offHandSwitchEvent; + public boolean swingMHand; + public boolean swingOHand; + public boolean interact; + public boolean blockBreaking; + + public ah( + boolean var1, + float var2, + AbstractClientPlayer var3, + InteractionHand var4, + boolean var5, + float var6, + float var7, + float var8, + float var9, + boolean var10, + boolean var11, + boolean var12, + boolean var13, + boolean var14, + boolean var15, + ItemStack var16 + ) { + this.bl = var1; + this.swingProgress = var2; + this.player = var3; + this.hand = var4; + this.mainHand = var5; + this.deltaTime = var6; + this.equipProgress = var7; + this.mainHandSwingProgress = var8; + this.offHandSwingProgress = var9; + this.mainHandSwitchEvent = var10; + this.offHandSwitchEvent = var11; + this.swingMHand = var12; + this.swingOHand = var13; + this.interact = var14; + this.blockBreaking = var15; + this.item = var16; + } + + public void set(ah var1) { + this.bl = var1.bl; + this.swingProgress = var1.swingProgress; + this.player = var1.player; + this.hand = var1.hand; + this.mainHand = var1.mainHand; + this.deltaTime = var1.deltaTime; + this.equipProgress = var1.equipProgress; + this.mainHandSwingProgress = var1.mainHandSwingProgress; + this.offHandSwingProgress = var1.offHandSwingProgress; + this.mainHandSwitchEvent = var1.mainHandSwitchEvent; + this.offHandSwitchEvent = var1.offHandSwitchEvent; + this.swingMHand = var1.swingMHand; + this.swingOHand = var1.swingOHand; + this.interact = var1.interact; + this.blockBreaking = var1.blockBreaking; + this.item = var1.item; + } +} diff --git a/src/main/java/defpackage/aha.java b/src/main/java/defpackage/aha.java new file mode 100644 index 0000000..325e3c8 --- /dev/null +++ b/src/main/java/defpackage/aha.java @@ -0,0 +1,63 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import net.minecraft.client.renderer.SubmitNodeCollector.CustomGeometryRenderer; +import net.minecraft.core.Direction; +import net.minecraft.world.phys.Vec3; + +final class aha implements CustomGeometryRenderer { + agu graffiti; + Vec3 camera; + Direction face; + double centerX; + double centerY; + double centerZ; + float roll; + float size; + float alpha; + + aha() { + } + + public void render(Pose var1, VertexConsumer var2) { + int var3 = -1863543365; + + while (true) { + switch (var3) { + case -1863543365: + default: + if (this.graffiti != null) { + var3 = -1594779162; + } else { + var3 = 764340243; + } + break; + case -1594779162: + if (this.face == null) { + var3 = 764340243; + } else { + var3 = -745746049; + } + break; + case -745746049: + ahb.emitQuad( + var1, + var2, + this.camera, + this.centerX, + this.centerY, + this.centerZ, + this.face, + this.roll, + this.size, + this.alpha, + (-1984667665 | 2000396545) + (-1984667665 & 2000396545) + ); + return; + case 764340243: + return; + } + } + } +} diff --git a/src/main/java/defpackage/ahb.java b/src/main/java/defpackage/ahb.java new file mode 100644 index 0000000..219107b --- /dev/null +++ b/src/main/java/defpackage/ahb.java @@ -0,0 +1,378 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos.MutableBlockPos; +import net.minecraft.core.Direction.Axis; +import net.minecraft.util.LightCoordsUtil; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +public final class ahb { + private static final float SURFACE_OFFSET = 0.012F; + private static final int CHUNK_BITS = 4; + private static final int CHUNK_SIZE = 16; + private static final float UV_MIN = 0.0F; + private static final float UV_MAX = 1.0F; + private static final float FULL = 1.0F; + private static final float POP_OVERSHOOT = 0.18F; + private static final float FADE_OUT_MILLIS = 6000.0F; + private static final float FRAME_ALPHA = 0.95F; + private static final float FRAME_THICKNESS = 0.013F; + private static final float FRAME_EDGE_ALPHA = 0.3F; + private static final float FRAME_ARM_RATIO = 0.3F; + private static final float FRAME_OPEN_MILLIS = 260.0F; + private static final float FRAME_OPEN_SPREAD = 0.22F; + private static final float FRAME_PULSE_PERIOD_MS = 1600.0F; + private static final float FRAME_PULSE_DEPTH = 0.22F; + private static final float EASE_POWER = 3.0F; + private static final float HALF = 0.5F; + private static final int RGB_MASK = 16777215; + private static final int ALPHA_SHIFT = 24; + private static final int ALPHA_MAX = 255; + private static final ahb INSTANCE = new ahb(); + private final Map batches = new HashMap<>(); + private final aha preview = new aha(); + private final agz frame = new agz(); + private final MutableBlockPos lightPos = new MutableBlockPos(); + + private ahb() { + for (agu var2 : agv.all()) { + this.batches.put(var2.getKey(), new agy(this, var2)); + } + } + + public static ahb getInstance() { + return INSTANCE; + } + + public void onWorldRender(LevelRenderContext var1) { + sy var2 = null; + Minecraft var3 = null; + PoseStack var4 = null; + SubmitNodeCollector var5 = null; + Vec3 var6 = null; + int var7 = 1162006441; + + while (true) { + switch (var7) { + case -2037793188: + return; + case -1916407424: + if (!var2.isEnabled()) { + var7 = -1562293457; + } else { + var7 = 1075493098; + } + break; + case -1562293457: + ahd.getInstance().close(); + var7 = 1075493098; + break; + case 130573751: + ahd.getInstance().close(); + return; + case 134195290: + return; + case 198708961: + var6 = var3.getEntityRenderDispatcher().camera.position(); + this.submitPlaced(var2, var3, var4, var5, var6); + if (var2.isEnabled()) { + var7 = 506426792; + } else { + var7 = -2037793188; + } + break; + case 200869843: + if (var5 == null) { + var7 = 134195290; + } else { + var7 = 198708961; + } + break; + case 311030696: + if (var3.player == null) { + var7 = 130573751; + } else { + var7 = -1916407424; + } + break; + case 506426792: + ahd.getInstance() + .update( + var3.getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((645391185 ^ -645391185) + ((645391185 & -645391185) << 1))) != 0)), + var2.previewReach(), + var2.sprayReach(), + var2.cooldownMillis() + ); + this.submitPreview(var2, var4, var5, var6); + var7 = -2037793188; + break; + case 1075493098: + var4 = var1.poseStack(); + var5 = var1.submitNodeCollector(); + if (var4 != null) { + var7 = 200869843; + } else { + var7 = 134195290; + } + break; + case 1162006441: + default: + var2 = sy.INSTANCE; + var3 = Minecraft.getInstance(); + if (var3.level != null) { + var7 = 311030696; + } else { + var7 = 130573751; + } + } + } + } + + private void submitPlaced(sy var1, Minecraft var2, PoseStack var3, SubmitNodeCollector var4, Vec3 var5) { + String var6 = var2.level.dimension().identifier().toString(); + ahf var7 = ahf.getInstance(); + if (var7.hasTags(var6)) { + float var8 = var1.renderDistance(); + float var9 = var8 * var8; + long var10 = var1.fadeMillis(); + long var12 = System.currentTimeMillis(); + int var14 = Mth.ceil(var8 / 16.0F); + int var15 = Mth.floor(var5.x) >> 4; + int var16 = Mth.floor(var5.z) >> 4; + + for (agy var18 : this.batches.values()) { + var18.tags.clear(); + } + + boolean var32 = var1.showsOthers(); + String var33 = agx.localIdentity(); + int var19 = 0; + + for (int var20 = -var14; var20 <= var14; var20++) { + for (int var21 = -var14; var21 <= var14; var21++) { + List var22 = var7.chunk(var6, var15 + var20, var16 + var21); + + for (int var23 = 0; var23 < var22.size(); var23++) { + ahg var24 = (ahg)var22.get(var23); + double var25 = var24.x() - var5.x; + double var27 = var24.y() - var5.y; + double var29 = var24.z() - var5.z; + if (!(var25 * var25 + var27 * var27 + var29 * var29 > var9) + && (var32 || var24.isOwnedBy(var33)) + && !var2.level.getBlockState(var24.anchor()).isAir()) { + agy var31 = this.batches.get(var24.key()); + if (var31 != null) { + var31.tags.add(var24); + var19 = 1; + } + } + } + } + } + + if (var19 != 0) { + for (agy var35 : this.batches.values()) { + if (!var35.tags.isEmpty()) { + var35.camera = var5; + var35.now = var12; + var35.fadeMillis = var10; + var35.opacity = var1.opacity(); + var4.submitCustomGeometry(var3, RenderTypes.entityTranslucent(var35.graffiti.getTexture()), var35); + } + } + } + } + } + + private void submitPreview(sy var1, PoseStack var2, SubmitNodeCollector var3, Vec3 var4) { + ahd var5 = ahd.getInstance(); + if (var5.isHolding() && var5.hasTarget()) { + agu var6 = var5.selected(); + if (var6 != null) { + this.preview.graffiti = var6; + this.preview.camera = var4; + this.preview.face = var5.targetFace(); + this.preview.centerX = var5.targetX(); + this.preview.centerY = var5.targetY(); + this.preview.centerZ = var5.targetZ(); + this.preview.roll = var5.targetRoll(); + this.preview.size = var1.decalSize(); + this.preview.alpha = var5.status() == ahc.READY ? var1.previewOpacity() : var1.previewOpacity() * var1.previewBlockedFade(); + this.frame.camera = var4; + this.frame.face = this.preview.face; + this.frame.centerX = this.preview.centerX; + this.frame.centerY = this.preview.centerY; + this.frame.centerZ = this.preview.centerZ; + this.frame.roll = this.preview.roll; + this.frame.size = this.preview.size; + this.frame.rgb = bz.getInstance().getThemeManager().getCurrentTheme().getColor().getRGB() & 16777215; + this.frame.opacity = 0.95F * this.preview.alpha; + this.frame.openedAt = var5.openedAt(); + var3.submitCustomGeometry(var2, arj.filledBox(), this.frame); + var3.submitCustomGeometry(var2, RenderTypes.entityTranslucentEmissive(var6.getTexture()), this.preview); + } + } + } + + static int withAlpha(int var0, float var1) { + return Mth.clamp(Math.round(var1 * 255.0F), 0, (1432548696 | -1432548441) + (1432548696 & -1432548441)) + << (1717674481 ^ -1717674457) + ((1717674481 & -1717674457) << 1) + | var0 & 16777215; + } + + int lightAt(BlockPos var1, Direction var2) { + Minecraft var3 = null; + int var4 = -2077054135; + + while (true) { + switch (var4) { + case -2077054135: + default: + var3 = Minecraft.getInstance(); + if (var3.level == null) { + var4 = 299517634; + } else { + var4 = -1153519326; + } + break; + case -1153519326: + this.lightPos.set(var1.getX() + var2.getStepX(), var1.getY() + var2.getStepY(), var1.getZ() + var2.getStepZ()); + return LightCoordsUtil.getLightCoords(var3.level, this.lightPos); + case 299517634: + return 15728880; + } + } + } + + public static Vec3 rightAxis(Direction var0, float var1) { + int var2 = -99124004; + + while (true) { + switch (var2) { + case -490297037: + return new Vec3(-var0.getStepY() * Mth.cos(var1), 0.0, -var0.getStepY() * Mth.sin(var1)); + case -317431677: + return new Vec3(var0.getStepZ(), 0.0, -var0.getStepX()); + case -99124004: + } + + if (var0.getAxis() == Axis.Y) { + var2 = -490297037; + } else { + var2 = -317431677; + } + } + } + + public static Vec3 upAxis(Direction var0, float var1) { + Vec3 var2 = rightAxis(var0, var1); + return new Vec3( + var0.getStepY() * var2.z - var0.getStepZ() * var2.y, + var0.getStepZ() * var2.x - var0.getStepX() * var2.z, + var0.getStepX() * var2.y - var0.getStepY() * var2.x + ); + } + + public static Vec3 bottomAnchor(double var0, double var2, double var4, Direction var6, float var7, float var8) { + Vec3 var9 = upAxis(var6, var7); + double var10 = var8 * 0.5; + return new Vec3( + var0 - var9.x * var10 + var6.getStepX() * 0.012F, var2 - var9.y * var10 + var6.getStepY() * 0.012F, var4 - var9.z * var10 + var6.getStepZ() * 0.012F + ); + } + + static void emitQuad( + Pose var0, VertexConsumer var1, Vec3 var2, double var3, double var5, double var7, Direction var9, float var10, float var11, float var12, int var13 + ) { + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + float var27 = 0.0F; + float var28 = 0.0F; + float var29 = 0.0F; + float var30 = 0.0F; + float var31 = 0.0F; + float var32 = 0.0F; + int var33 = -916662721; + + while (true) { + switch (var33) { + case -1895954582: + var17 = -var15 * Mth.cos(var10); + var18 = 0.0F; + var19 = -var15 * Mth.sin(var10); + var33 = -1722494193; + break; + case -1722494193: + var20 = var15 * var19 - var16 * var18; + var21 = var16 * var17 - var14 * var19; + var22 = var14 * var18 - var15 * var17; + var23 = var11 * 0.5F; + var24 = (float)(var3 - var2.x + var14 * 0.012F); + var25 = (float)(var5 - var2.y + var15 * 0.012F); + var26 = (float)(var7 - var2.z + var16 * 0.012F); + var27 = var17 * var23; + var28 = var18 * var23; + var29 = var19 * var23; + var30 = var20 * var23; + var31 = var21 * var23; + var32 = var22 * var23; + vertex(var0, var1, var24 - var27 + var30, var25 - var28 + var31, var26 - var29 + var32, 0.0F, 0.0F, var12, var13, var14, var15, var16); + vertex(var0, var1, var24 - var27 - var30, var25 - var28 - var31, var26 - var29 - var32, 0.0F, 1.0F, var12, var13, var14, var15, var16); + vertex(var0, var1, var24 + var27 - var30, var25 + var28 - var31, var26 + var29 - var32, 1.0F, 1.0F, var12, var13, var14, var15, var16); + vertex(var0, var1, var24 + var27 + var30, var25 + var28 + var31, var26 + var29 + var32, 1.0F, 0.0F, var12, var13, var14, var15, var16); + return; + case -916662721: + default: + var14 = var9.getStepX(); + var15 = var9.getStepY(); + var16 = var9.getStepZ(); + if (var9.getAxis() == Axis.Y) { + var33 = -1895954582; + } else { + var33 = -659127936; + } + break; + case -659127936: + var17 = var16; + var18 = 0.0F; + var19 = -var14; + var33 = -1722494193; + } + } + } + + private static void vertex( + Pose var0, VertexConsumer var1, float var2, float var3, float var4, float var5, float var6, float var7, int var8, float var9, float var10, float var11 + ) { + var1.addVertex(var0, var2, var3, var4) + .setColor(1.0F, 1.0F, 1.0F, var7) + .setUv(var5, var6) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var8) + .setNormal(var0, var9, var10, var11); + } +} diff --git a/src/main/java/defpackage/ahc.java b/src/main/java/defpackage/ahc.java new file mode 100644 index 0000000..b645e0f --- /dev/null +++ b/src/main/java/defpackage/ahc.java @@ -0,0 +1,9 @@ +package defpackage; + +public enum ahc { + READY, + NO_TARGET, + TOO_FAR, + COOLDOWN, + EMPTY; +} diff --git a/src/main/java/defpackage/ahd.java b/src/main/java/defpackage/ahd.java new file mode 100644 index 0000000..be880d5 --- /dev/null +++ b/src/main/java/defpackage/ahd.java @@ -0,0 +1,352 @@ +package defpackage; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.util.Mth; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; + +public final class ahd { + private static final double BLOCK_CENTER = 0.5; + private static final long NO_SPRAY = Long.MIN_VALUE; + private static final ahd INSTANCE = new ahd(); + private boolean holding; + private long openedAt; + private int selection; + private long lastSprayMillis = (-4623091211613233834L ^ -4600280825241541974L) + ((-4623091211613233834L & -4600280825241541974L) << 1); + private ahc status = ahc.NO_TARGET; + private boolean hasTarget; + private ahg targetTag; + private BlockPos targetAnchor; + private Direction targetFace; + private double targetX; + private double targetY; + private double targetZ; + private float targetRoll; + private double targetDistance; + + private ahd() { + } + + public static ahd getInstance() { + return INSTANCE; + } + + public boolean isHolding() { + return this.holding; + } + + public void open() { + int var1 = 268208988; + + while (true) { + switch (var1) { + case 140640454: + this.openedAt = System.currentTimeMillis(); + var1 = 1935811923; + break; + case 268208988: + default: + if (!this.holding) { + var1 = 140640454; + } else { + var1 = 1935811923; + } + break; + case 1935811923: + this.holding = (boolean)(((1)) != 0); + return; + } + } + } + + public long openedAt() { + return this.openedAt; + } + + public void close() { + this.holding = (boolean)(((0)) != 0); + this.hasTarget = (boolean)(((0)) != 0); + this.targetTag = null; + this.status = ahc.NO_TARGET; + } + + public agu selected() { + agu var1 = null; + agu var3 = null; + int var2 = -1196900944; + + while (true) { + switch (var2) { + case -2046528823: + var3 = agv.equipped(); + var2 = -80464548; + break; + case -1196900944: + default: + var1 = agv.byIndex(this.selection); + if (var1 == null) { + var2 = -2046528823; + } else { + var2 = -873128228; + } + break; + case -873128228: + var3 = var1; + var2 = -80464548; + break; + case -80464548: + return var3; + } + } + } + + public void syncSelectionToEquipped() { + int var1 = agv.indexOf(agv.equipped()); + this.selection = Math.max(var1, (-1581163779 | 1581163779) + (-1581163779 & 1581163779)); + } + + public boolean cycle(int var1) { + int var2 = 0; + int var3 = -2031429115; + + while (true) { + switch (var3) { + case -2031429115: + default: + if (var1 != 0) { + var3 = 2086689126; + } else { + var3 = -1764774344; + } + break; + case -1764774344: + return (boolean)(((0)) != 0); + case 1613297765: + var2 = agv.all().size(); + this.selection = ((this.selection + var1) % var2 + var2) % var2; + agv.equip(this.selected()); + return (boolean)(((1)) != 0); + case 2086689126: + if (agv.all().size() < (1792321838 ^ -1792321836) + ((1792321838 & -1792321836) << 1)) { + var3 = -1764774344; + } else { + var3 = 1613297765; + } + } + } + } + + public ahc status() { + return this.status; + } + + public boolean hasTarget() { + return this.hasTarget; + } + + public ahg targetTag() { + return this.targetTag; + } + + public BlockPos targetAnchor() { + return this.targetAnchor; + } + + public Direction targetFace() { + return this.targetFace; + } + + public double targetX() { + return this.targetX; + } + + public double targetY() { + return this.targetY; + } + + public double targetZ() { + return this.targetZ; + } + + public float targetRoll() { + return this.targetRoll; + } + + public long remainingCooldown(long var1) { + long var3 = (1595150658569518250L ^ -1595150658569518250L) + ((1595150658569518250L & -1595150658569518250L) << 1); + int var5 = 773497286; + + while (true) { + switch (var5) { + case -1098258428: + var3 = System.currentTimeMillis() - this.lastSprayMillis; + return Math.max((6384047603649117515L | -6384047603649117515L) + (6384047603649117515L & -6384047603649117515L), var1 - var3); + case 432249064: + return (-2438003974537972861L | 2438003974537972861L) + (-2438003974537972861L & 2438003974537972861L); + case 773497286: + } + + if (this.lastSprayMillis == (-3857926351820201619L ^ -5365445685034574189L) + ((-3857926351820201619L & -5365445685034574189L) << 1)) { + var5 = 432249064; + } else { + var5 = -1098258428; + } + } + } + + public int charges() { + agu var1 = null; + int var3 = 0; + int var2 = -2106877702; + + while (true) { + switch (var2) { + case -2106877702: + default: + var1 = this.selected(); + if (var1 == null) { + var2 = 402253582; + } else { + var2 = -1311968936; + } + break; + case -1311968936: + var3 = ahh.getInstance().charges(var1.getKey()); + var2 = 948613771; + break; + case 402253582: + var3 = 0; + var2 = 948613771; + break; + case 948613771: + return var3; + } + } + } + + public void update(float var1, double var2, double var4, long var6) { + Minecraft var8 = Minecraft.getInstance(); + LocalPlayer var9 = var8.player; + if (!this.holding || var9 == null || var8.level == null) { + this.clearTarget(); + } else if (var8.gui.screen() != null) { + this.close(); + } else { + Vec3 var10 = var9.getEyePosition(var1); + Vec3 var11 = var9.getViewVector(var1); + Vec3 var12 = var10.add(var11.x * var2, var11.y * var2, var11.z * var2); + BlockHitResult var13 = var8.level.clip(new ClipContext(var10, var12, Block.OUTLINE, Fluid.NONE, var9)); + if (var13 != null && var13.getType() == Type.BLOCK) { + BlockState var14 = var8.level.getBlockState(var13.getBlockPos()); + if (var14.isAir()) { + this.clearTarget(); + } else { + Vec3 var15 = var13.getLocation(); + this.hasTarget = (boolean)(((1)) != 0); + this.targetAnchor = var13.getBlockPos().immutable(); + this.targetFace = var13.getDirection(); + this.targetX = this.targetAnchor.getX() + 0.5 + this.targetFace.getStepX() * 0.5; + this.targetY = this.targetAnchor.getY() + 0.5 + this.targetFace.getStepY() * 0.5; + this.targetZ = this.targetAnchor.getZ() + 0.5 + this.targetFace.getStepZ() * 0.5; + this.targetRoll = this.targetFace.getAxis() == Axis.Y ? ahg.snapRoll((float)Math.toRadians(Mth.wrapDegrees(var9.getYRot()))) : 0.0F; + this.targetDistance = var10.distanceTo(var15); + this.targetTag = ahf.getInstance().at(var8.level.dimension().identifier().toString(), this.targetAnchor, this.targetFace); + if (this.targetDistance > var4) { + this.status = ahc.TOO_FAR; + } else if (this.remainingCooldown(var6) > (-5843057489405271330L | 5843057489405271330L) + (-5843057489405271330L & 5843057489405271330L)) { + this.status = ahc.COOLDOWN; + } else if (this.charges() <= 0) { + this.status = ahc.EMPTY; + } else { + this.status = ahc.READY; + } + } + } else { + this.clearTarget(); + } + } + } + + public ahg spray(float var1, String var2, long var3) { + Minecraft var5 = null; + agu var6 = null; + int var7 = -235081025; + + while (true) { + switch (var7) { + case -1862719032: + var5 = Minecraft.getInstance(); + if (var5.level == null) { + var7 = -925098805; + } else { + var7 = -581359765; + } + break; + case -1797986373: + return null; + case -925098805: + return null; + case -581359765: + var6 = this.selected(); + if (var6 != null) { + var7 = 1077630865; + } else { + var7 = -10613768; + } + break; + case -515947539: + this.lastSprayMillis = System.currentTimeMillis(); + this.status = ahc.COOLDOWN; + return new ahg( + var6.getKey(), + var5.level.dimension().identifier().toString(), + this.targetAnchor, + this.targetFace, + this.targetRoll, + var1, + var2, + this.lastSprayMillis, + this.lastSprayMillis + var3 + ); + case -235081025: + default: + if (this.status == ahc.READY) { + var7 = 714059410; + } else { + var7 = -1797986373; + } + break; + case -10613768: + return null; + case 714059410: + if (!this.hasTarget) { + var7 = -1797986373; + } else { + var7 = -1862719032; + } + break; + case 1077630865: + if (!ahh.getInstance().spend(var6.getKey())) { + var7 = -10613768; + } else { + var7 = -515947539; + } + } + } + } + + private void clearTarget() { + this.hasTarget = (boolean)(((0)) != 0); + this.targetTag = null; + this.status = ahc.NO_TARGET; + } +} diff --git a/src/main/java/defpackage/ahe.java b/src/main/java/defpackage/ahe.java new file mode 100644 index 0000000..80ac290 --- /dev/null +++ b/src/main/java/defpackage/ahe.java @@ -0,0 +1,62 @@ +package defpackage; + +import java.util.HashMap; +import java.util.Map; +import net.minecraft.sounds.SoundEvent; + +public final class ahe { + public static final String SPRAY = "graffiti.spray"; + private static final String SOUND_PREFIX = "graffiti."; + private static final float SPRAY_VOLUME = 1.0F; + private static final float SPRAY_PITCH = 1.0F; + private static final Map EVENTS = new HashMap<>(); + + private ahe() { + } + + public static void initialize() { + int var0 = -460312153; + + while (true) { + switch (var0) { + case -1134889742: + EVENTS.putAll(mn.register("graffiti.")); + return; + case -460312153: + default: + if (!EVENTS.isEmpty()) { + var0 = 1804265097; + } else { + var0 = -1134889742; + } + break; + case 1804265097: + return; + } + } + } + + public static void playSpray(double var0, double var2, double var4) { + SoundEvent var6 = null; + int var7 = 1926715213; + + while (true) { + switch (var7) { + case -1647189406: + bz.getInstance().getSoundManager().playAt(var6, var0, var2, var4, 1.0F, 1.0F); + var7 = -687802510; + break; + case -687802510: + return; + case 1926715213: + default: + var6 = EVENTS.get("graffiti.spray"); + if (var6 != null) { + var7 = -1647189406; + } else { + var7 = -687802510; + } + } + } + } +} diff --git a/src/main/java/defpackage/ahf.java b/src/main/java/defpackage/ahf.java new file mode 100644 index 0000000..da962ab --- /dev/null +++ b/src/main/java/defpackage/ahf.java @@ -0,0 +1,1278 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.nio.file.Path; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Map.Entry; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ServerData; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.Level; + +public final class ahf { + public static final int MAX_TAGS = 512; + private static final int MAX_HIDDEN = 512; + private static final String FILE_SUFFIX = ".json"; + private static final String SINGLEPLAYER_PREFIX = "sp_"; + private static final String SERVER_PREFIX = "mp_"; + private static final String UNKNOWN_WORLD = "unknown"; + private static final String FIELD_TAGS = "t"; + private static final String FIELD_HIDDEN = "h"; + private static final String PARSE_FAILURE = "graffiti store parse failed for {}"; + private static final ahf INSTANCE = new ahf(); + private final Map>> buckets = new HashMap<>(); + private final Map> index = new HashMap<>(); + private final Map> hidden = new HashMap<>(); + private final ArrayDeque order = new ArrayDeque<>(); + private String worldKey; + private boolean dirty; + + private ahf() { + } + + public static ahf getInstance() { + return INSTANCE; + } + + public static String currentWorldKey() { + Minecraft var0 = null; + ServerData var1 = null; + int var2 = -1771956961; + + while (true) { + switch (var2) { + case -1771956961: + default: + var0 = Minecraft.getInstance(); + if (var0.hasSingleplayerServer()) { + var2 = 569696543; + } else { + var2 = 79487263; + } + break; + case -717522055: + return "sp_" + agw.sanitize(var0.getSingleplayerServer().getWorldData().getLevelName()); + case -674663610: + return "unknown"; + case -149253353: + return "mp_" + agw.sanitize(var1.ip); + case 79487263: + var1 = var0.getCurrentServer(); + if (var1 != null) { + var2 = 1968751694; + } else { + var2 = -674663610; + } + break; + case 569696543: + if (var0.getSingleplayerServer() != null) { + var2 = -717522055; + } else { + var2 = 79487263; + } + break; + case 1968751694: + if (var1.ip != null) { + var2 = -149253353; + } else { + var2 = -674663610; + } + } + } + } + + public void openWorld(String var1) { + Path var2 = null; + int var3 = 921123445; + + while (true) { + switch (var3) { + case -1603450222: + return; + case 56865138: + if (var1.equals(this.worldKey)) { + var3 = -1603450222; + } else { + var3 = 1275575004; + } + break; + case 921123445: + default: + if (var1 != null) { + var3 = 56865138; + } else { + var3 = -1603450222; + } + break; + case 1275575004: + this.closeWorld(); + this.worldKey = var1; + var2 = this.file(); + agw.readAsync( + var2, + var2x -> { + if (var2x != null && !var2x.isBlank()) { + try { + JsonElement var3x = JsonParser.parseString(var2x); + Minecraft var4x = Minecraft.getInstance(); + if (var4x == null) { + return; + } + + var4x.execute(() -> { + JsonObject var3xx = null; + JsonElement var4xx = null; + JsonElement var5x = null; + int var6 = 1313316782; + + while (true) { + switch (var6) { + case -1694183257: + var5x = var3xx.get("h"); + if (var5x != null) { + var6 = 1106741825; + } else { + var6 = 166006302; + } + break; + case -1048960411: + return; + case -801910187: + if (var3x.isJsonArray()) { + var6 = 703985165; + } else { + var6 = 251284455; + } + break; + case 166006302: + return; + case 251284455: + var3xx = var3x.getAsJsonObject(); + var4xx = var3xx.get("t"); + if (var4xx != null) { + var6 = 484114138; + } else { + var6 = -1694183257; + } + break; + case 294309323: + this.loadTags(var4xx.getAsJsonArray()); + var6 = -1694183257; + break; + case 484114138: + if (var4xx.isJsonArray()) { + var6 = 294309323; + } else { + var6 = -1694183257; + } + break; + case 703985165: + this.loadTags(var3x.getAsJsonArray()); + return; + case 1106741825: + if (var5x.isJsonObject()) { + var6 = 1333312449; + } else { + var6 = 166006302; + } + break; + case 1313316782: + default: + if (!var1.equals(this.worldKey)) { + var6 = -1048960411; + } else { + var6 = -801910187; + } + break; + case 1333312449: + this.loadHidden(var5x.getAsJsonObject()); + var6 = 166006302; + } + } + }); + } catch (RuntimeException var5) { + id.warn( + Cif.COSMETIC, + "graffiti store parse failed for {}", + var1, + var5 + ); + } + } + } + ); + return; + } + } + } + + public void closeWorld() { + int var1 = 475489592; + + while (true) { + switch (var1) { + case -617716393: + return; + case 390398667: + this.flush(); + this.buckets.clear(); + this.index.clear(); + this.hidden.clear(); + this.order.clear(); + this.worldKey = null; + return; + case 475489592: + } + + if (this.worldKey == null) { + var1 = -617716393; + } else { + var1 = 390398667; + } + } + } + + public boolean isOpen() { + int var2 = 0; + int var1 = 2034087427; + + while (true) { + switch (var1) { + case -226865968: + return (boolean)((var2) != 0); + case 1283703103: + var2 = 1; + var1 = -226865968; + break; + case 1936402833: + var2 = 0; + var1 = -226865968; + break; + case 2034087427: + default: + if (this.worldKey != null) { + var1 = 1283703103; + } else { + var1 = 1936402833; + } + } + } + } + + private Path file() { + return agw.directory().resolve(this.worldKey + ".json"); + } + + private void loadTags(JsonArray var1) { + long var2 = (-3431635784396371672L ^ 3431635784396371672L) + ((-3431635784396371672L & 3431635784396371672L) << 1); + Iterator var4 = null; + JsonElement var5 = null; + ahg var6 = null; + int var7 = 96434643; + + while (true) { + switch (var7) { + case -1847231459: + var7 = -1044243583; + break; + case -1044243583: + if (var4.hasNext()) { + var7 = 331869571; + } else { + var7 = 2139812846; + } + break; + case -846504691: + if (agv.byKey(var6.key()) != null) { + var7 = -137090095; + } else { + var7 = -1847231459; + } + break; + case -137090095: + this.insert(var6); + var7 = -1847231459; + break; + case 96434643: + default: + var2 = System.currentTimeMillis(); + var4 = var1.iterator(); + var7 = -1044243583; + break; + case 136653286: + var6 = ahg.fromJson(var5.getAsJsonObject()); + if (var6 != null) { + var7 = 1402894271; + } else { + var7 = -1847231459; + } + break; + case 331869571: + var5 = (JsonElement)var4.next(); + if (!var5.isJsonObject()) { + var7 = 1793845827; + } else { + var7 = 136653286; + } + break; + case 1402894271: + if (!var6.isExpired(var2)) { + var7 = -846504691; + } else { + var7 = -1847231459; + } + break; + case 1793845827: + var7 = -1044243583; + break; + case 2139812846: + return; + } + } + } + + private void loadHidden(JsonObject var1) { + Iterator var2 = null; + Entry var3 = null; + Set var4 = null; + Iterator var5 = null; + JsonElement var6 = null; + int var7 = -1270231323; + + while (true) { + switch (var7) { + case -2034057542: + var7 = 1582703317; + break; + case -1943258436: + if (var5.hasNext()) { + var7 = 1040660772; + } else { + var7 = -2034057542; + } + break; + case -1871323273: + return; + case -1711123889: + var7 = 1582703317; + break; + case -1270231323: + default: + var2 = var1.entrySet().iterator(); + var7 = 1582703317; + break; + case -435811769: + var3 = (Entry)var2.next(); + if (!((JsonElement)var3.getValue()).isJsonArray()) { + var7 = -1711123889; + } else { + var7 = 1557806689; + } + break; + case -46940102: + if (var4.size() < (812821666 | -812821154) + (812821666 & -812821154)) { + var7 = 578364213; + } else { + var7 = 1139217885; + } + break; + case 578364213: + var4.add(var6.getAsString()); + var7 = 1139217885; + break; + case 1040660772: + var6 = (JsonElement)var5.next(); + if (var6.isJsonPrimitive()) { + var7 = -46940102; + } else { + var7 = 1139217885; + } + break; + case 1139217885: + var7 = -1943258436; + break; + case 1557806689: + var4 = this.hidden.computeIfAbsent((String)var3.getKey(), var0 -> new LinkedHashSet<>()); + var5 = ((JsonElement)var3.getValue()).getAsJsonArray().iterator(); + var7 = -1943258436; + break; + case 1582703317: + if (var2.hasNext()) { + var7 = -435811769; + } else { + var7 = -1871323273; + } + } + } + } + + public void flush() { + if (this.worldKey != null && this.dirty) { + this.dirty = (boolean)(((0)) != 0); + JsonArray var1 = new JsonArray(); + + for (ahg var3 : this.order) { + var1.add(var3.toJson()); + } + + JsonObject var8 = new JsonObject(); + + for (Entry var4 : this.hidden.entrySet()) { + if (!((Set)var4.getValue()).isEmpty()) { + JsonArray var5 = new JsonArray(); + + for (String var7 : (Set)var4.getValue()) { + var5.add(var7); + } + + var8.add((String)var4.getKey(), var5); + } + } + + JsonObject var10 = new JsonObject(); + var10.add("t", var1); + var10.add("h", var8); + agw.writeAsync(this.file(), var10.toString()); + } + } + + private void insert(ahg var1) { + int var2 = -1404024425; + + while (true) { + switch (var2) { + case -1404024425: + default: + this.buckets.computeIfAbsent(var1.dimension(), var0 -> new HashMap<>()).computeIfAbsent(var1.chunkKey(), var0 -> new ArrayList<>()).add(var1); + this.index.computeIfAbsent(var1.dimension(), var0 -> new HashMap<>()).put(var1.faceKey(), var1); + this.order.addLast(var1); + var2 = 442855193; + break; + case 442855193: + if (this.order.size() > (1096880518 | -1096880006) + (1096880518 & -1096880006)) { + var2 = 1487719969; + } else { + var2 = 1914324457; + } + break; + case 1487719969: + this.detach(this.order.pollFirst()); + var2 = 442855193; + break; + case 1914324457: + this.dirty = (boolean)(((1)) != 0); + return; + } + } + } + + private void detach(ahg var1) { + Map var2 = null; + Map var3 = null; + List var4 = null; + int var5 = -1718335747; + + while (true) { + switch (var5) { + case -1818148098: + this.dirty = (boolean)(((1)) != 0); + return; + case -1718335747: + default: + if (var1 == null) { + var5 = 2093372658; + } else { + var5 = 2042945819; + } + break; + case -788938565: + var3 = this.buckets.get(var1.dimension()); + if (var3 == null) { + var5 = 528785554; + } else { + var5 = 409270586; + } + break; + case 20803864: + var2.remove(var1.faceKey(), var1); + if (var2.isEmpty()) { + var5 = 1166737843; + } else { + var5 = -788938565; + } + break; + case 141778424: + return; + case 278810225: + var4.remove(var1); + if (var4.isEmpty()) { + var5 = 1229903217; + } else { + var5 = -1818148098; + } + break; + case 409270586: + var4 = (List)var3.get(var1.chunkKey()); + if (var4 == null) { + var5 = 141778424; + } else { + var5 = 278810225; + } + break; + case 528785554: + return; + case 1166737843: + this.index.remove(var1.dimension()); + var5 = -788938565; + break; + case 1229903217: + var3.remove(var1.chunkKey()); + if (var3.isEmpty()) { + var5 = 1422547162; + } else { + var5 = -1818148098; + } + break; + case 1422547162: + this.buckets.remove(var1.dimension()); + var5 = -1818148098; + break; + case 2042945819: + var2 = this.index.get(var1.dimension()); + if (var2 != null) { + var5 = 20803864; + } else { + var5 = -788938565; + } + break; + case 2093372658: + return; + } + } + } + + public void add(ahg var1) { + int var2 = 1200908142; + + while (true) { + switch (var2) { + case 670986946: + this.unhide(var1.dimension(), var1.faceKey()); + this.drop(var1.dimension(), var1.faceKey()); + this.insert(var1); + this.flush(); + return; + case 760519388: + return; + case 970021303: + if (this.worldKey == null) { + var2 = 760519388; + } else { + var2 = 670986946; + } + break; + case 1200908142: + default: + if (var1 != null) { + var2 = 970021303; + } else { + var2 = 760519388; + } + } + } + } + + public boolean accept(ahg var1) { + ahg var2 = null; + int var3 = -574291593; + + while (true) { + switch (var3) { + case -1971647900: + return (boolean)(((0)) != 0); + case -1153502850: + this.drop(var1.dimension(), var1.faceKey()); + this.insert(var1); + return (boolean)(((1)) != 0); + case -1109725078: + return (boolean)(((0)) != 0); + case -1080563942: + if (var2.placedAt() >= var1.placedAt()) { + var3 = 618192056; + } else { + var3 = -1153502850; + } + break; + case -847004585: + return (boolean)(((0)) != 0); + case -607694712: + var2 = this.at(var1.dimension(), var1.faceKey()); + if (var2 != null) { + var3 = -1080563942; + } else { + var3 = -1153502850; + } + break; + case -574291593: + default: + if (var1 != null) { + var3 = -63168879; + } else { + var3 = -1971647900; + } + break; + case -63168879: + if (this.worldKey != null) { + var3 = 132251364; + } else { + var3 = -1971647900; + } + break; + case 132251364: + if (agv.byKey(var1.key()) == null) { + var3 = -1971647900; + } else { + var3 = 740536685; + } + break; + case 618192056: + if (var2.key().equals(var1.key())) { + var3 = -847004585; + } else { + var3 = -1153502850; + } + break; + case 740536685: + if (this.isHidden(var1.dimension(), var1.faceKey())) { + var3 = -1109725078; + } else { + var3 = -607694712; + } + } + } + } + + public ahg drop(String var1, String var2) { + ahg var3 = null; + int var4 = 700412877; + + while (true) { + switch (var4) { + case -1551313443: + this.detach(var3); + this.order.remove(var3); + return var3; + case 700412877: + default: + var3 = this.at(var1, var2); + if (var3 == null) { + var4 = 1527989221; + } else { + var4 = -1551313443; + } + break; + case 1527989221: + return null; + } + } + } + + public ahg remove(String var1, String var2) { + ahg var3 = this.drop(var1, var2); + this.flush(); + return var3; + } + + public void hide(String var1, String var2) { + Set var3 = null; + Iterator var4 = null; + int var5 = 1784239135; + + while (true) { + switch (var5) { + case -1048346172: + if (var2 == null) { + var5 = -893631487; + } else { + var5 = -550081345; + } + break; + case -893631487: + return; + case -550081345: + this.drop(var1, var2); + var3 = this.hidden.computeIfAbsent(var1, var0 -> new LinkedHashSet<>()); + if (var3.add(var2)) { + var5 = -120010551; + } else { + var5 = 2048762057; + } + break; + case -282021175: + var4.next(); + var4.remove(); + var5 = 1035983536; + break; + case -120010551: + this.dirty = (boolean)(((1)) != 0); + var5 = 2048762057; + break; + case 66720617: + if (var4.hasNext()) { + var5 = -282021175; + } else { + var5 = 1904678951; + } + break; + case 1035983536: + if (var3.size() > (1970888692 ^ -1970888180) + ((1970888692 & -1970888180) << 1)) { + var5 = 66720617; + } else { + var5 = 1904678951; + } + break; + case 1784239135: + default: + if (var1 != null) { + var5 = -1048346172; + } else { + var5 = -893631487; + } + break; + case 1904678951: + this.flush(); + return; + case 2048762057: + var4 = var3.iterator(); + var5 = 1035983536; + } + } + } + + private void unhide(String var1, String var2) { + Set var3 = null; + int var4 = -1024339911; + + while (true) { + switch (var4) { + case -1897860574: + return; + case -1339580774: + this.dirty = (boolean)(((1)) != 0); + if (var3.isEmpty()) { + var4 = 967078479; + } else { + var4 = -1897860574; + } + break; + case -1024339911: + default: + var3 = this.hidden.get(var1); + if (var3 != null) { + var4 = -441122064; + } else { + var4 = -1897860574; + } + break; + case -441122064: + if (var3.remove(var2)) { + var4 = -1339580774; + } else { + var4 = -1897860574; + } + break; + case 967078479: + this.hidden.remove(var1); + var4 = -1897860574; + } + } + } + + public boolean isHidden(String var1, String var2) { + Set var3 = null; + int var5 = 0; + int var4 = 1081863603; + + while (true) { + switch (var4) { + case -2090770371: + var5 = 0; + var4 = -102539886; + break; + case -1574658649: + var5 = 1; + var4 = -102539886; + break; + case -1492316417: + if (var3.contains(var2)) { + var4 = -1574658649; + } else { + var4 = -2090770371; + } + break; + case -102539886: + return (boolean)((var5) != 0); + case 1081863603: + default: + var3 = this.hidden.get(var1); + if (var3 != null) { + var4 = -1492316417; + } else { + var4 = -2090770371; + } + } + } + } + + public ahg at(String var1, String var2) { + Map var3 = null; + ahg var5 = null; + int var4 = 682125490; + + while (true) { + switch (var4) { + case -2066488167: + var5 = (ahg)var3.get(var2); + var4 = -2051321154; + break; + case -2051321154: + return var5; + case -255464545: + var5 = null; + var4 = -2051321154; + break; + case 682125490: + default: + var3 = this.index.get(var1); + if (var3 == null) { + var4 = -255464545; + } else { + var4 = -2066488167; + } + } + } + } + + public ahg at(String var1, BlockPos var2, Direction var3) { + int var4 = -1846918529; + + while (true) { + switch (var4) { + case -1846918529: + default: + if (var1 != null) { + var4 = 1558540184; + } else { + var4 = 1819777582; + } + break; + case -983249157: + return this.at(var1, ahg.faceKey(var2, var3)); + case -184160222: + if (var3 == null) { + var4 = 1819777582; + } else { + var4 = -983249157; + } + break; + case 1558540184: + if (var2 != null) { + var4 = -184160222; + } else { + var4 = 1819777582; + } + break; + case 1819777582: + return null; + } + } + } + + public List removeOwned(String var1) { + ArrayList var2 = null; + Iterator var3 = null; + ahg var4 = null; + int var5 = -1654621222; + + while (true) { + switch (var5) { + case -1715592962: + this.flush(); + return var2; + case -1654621222: + default: + var2 = new ArrayList(); + var3 = this.order.iterator(); + var5 = -731921280; + break; + case -731921280: + if (var3.hasNext()) { + var5 = 408570204; + } else { + var5 = -1715592962; + } + break; + case -122510002: + var5 = -731921280; + break; + case 408570204: + var4 = (ahg)var3.next(); + if (!var4.isOwnedBy(var1)) { + var5 = -122510002; + } else { + var5 = 1996311050; + } + break; + case 1996311050: + var3.remove(); + this.detach(var4); + var2.add(var4); + var5 = -731921280; + } + } + } + + public int countOwned(String var1) { + int var2 = 0; + Iterator var3 = null; + ahg var4 = null; + int var5 = 576716510; + + while (true) { + switch (var5) { + case -771659465: + return var2; + case -89606963: + var4 = (ahg)var3.next(); + if (var4.isOwnedBy(var1)) { + var5 = 220327985; + } else { + var5 = 1265514520; + } + break; + case 220327985: + var2++; + var5 = 1265514520; + break; + case 576716510: + default: + var2 = 0; + var3 = this.order.iterator(); + var5 = 1571597441; + break; + case 1265514520: + var5 = 1571597441; + break; + case 1571597441: + if (var3.hasNext()) { + var5 = -89606963; + } else { + var5 = -771659465; + } + } + } + } + + public List evictOwned(String var1, int var2) { + int var3 = this.countOwned(var1) - var2; + if (var3 <= 0) { + return List.of(); + } + + ArrayList var4 = new ArrayList(); + + for (ahg var6 : this.order) { + if (var6.isOwnedBy(var1)) { + var4.add(var6); + } + } + + var4.sort(Comparator.comparingLong(ahg::placedAt)); + ArrayList var8 = new ArrayList(var4.subList(0, var3)); + + for (int var9 = 0; var9 < var8.size(); var9++) { + ahg var7 = (ahg)var8.get(var9); + this.order.remove(var7); + this.detach(var7); + } + + this.flush(); + return var8; + } + + public List prune(long var1, Level var3, String var4) { + List var5 = null; + Iterator var6 = null; + ahg var7 = null; + int var8 = 1664015721; + + while (true) { + switch (var8) { + case -1369674495: + if (!isBroken(var7, var3, var4)) { + var8 = 1925341934; + } else { + var8 = 546496328; + } + break; + case -1364069730: + var7 = (ahg)var6.next(); + if (!var7.isExpired(var1)) { + var8 = -1369674495; + } else { + var8 = 546496328; + } + break; + case -198124564: + this.flush(); + return var5; + case 428245518: + var5.add(var7); + var8 = 715541280; + break; + case 546496328: + var6.remove(); + this.detach(var7); + if (var5.isEmpty()) { + var8 = 1045141131; + } else { + var8 = 428245518; + } + break; + case 715541280: + if (var6.hasNext()) { + var8 = -1364069730; + } else { + var8 = -198124564; + } + break; + case 1045141131: + var5 = new ArrayList(); + var8 = 428245518; + break; + case 1664015721: + default: + var5 = List.of(); + var6 = this.order.iterator(); + var8 = 715541280; + break; + case 1925341934: + var8 = 715541280; + } + } + } + + private static boolean isBroken(ahg var0, Level var1, String var2) { + int var3 = 1941275140; + + while (true) { + switch (var3) { + case -179708025: + return (boolean)(((0)) != 0); + case -73527300: + if (var0.dimension().equals(var2)) { + var3 = 1573744141; + } else { + var3 = -179708025; + } + break; + case 1403043756: + return var1.getBlockState(var0.anchor()).isAir(); + case 1573744141: + if (!var1.hasChunkAt(var0.anchor())) { + var3 = -179708025; + } else { + var3 = 1403043756; + } + break; + case 1941275140: + default: + if (var1 != null) { + var3 = -73527300; + } else { + var3 = -179708025; + } + } + } + } + + public void reconcile(String var1, Set var2, String var3) { + Iterator var4 = null; + ahg var5 = null; + int var6 = -1588531679; + + while (true) { + switch (var6) { + case -1880240409: + var4.remove(); + this.detach(var5); + var6 = -956609340; + break; + case -1818158749: + if (var2.contains(var5.faceKey())) { + var6 = 2014324471; + } else { + var6 = -1880240409; + } + break; + case -1588531679: + default: + var4 = this.order.iterator(); + var6 = -956609340; + break; + case -956609340: + if (var4.hasNext()) { + var6 = 1230333377; + } else { + var6 = 755812710; + } + break; + case 755812710: + this.flush(); + return; + case 1230333377: + var5 = (ahg)var4.next(); + if (var5.dimension().equals(var1)) { + var6 = 1843248032; + } else { + var6 = -956609340; + } + break; + case 1843248032: + if (!var5.isOwnedBy(var3)) { + var6 = -1818158749; + } else { + var6 = -956609340; + } + break; + case 2014324471: + var6 = -956609340; + } + } + } + + public void clear() { + int var1 = -1983651350; + + while (true) { + switch (var1) { + case -1983651350: + default: + if (this.worldKey == null) { + var1 = -268189942; + } else { + var1 = -1876520553; + } + break; + case -1876520553: + this.buckets.clear(); + this.index.clear(); + this.order.clear(); + this.dirty = (boolean)(((1)) != 0); + this.flush(); + return; + case -268189942: + return; + } + } + } + + public List chunk(String var1, int var2, int var3) { + Map var4 = null; + List var5 = null; + List var7 = null; + int var6 = -42563039; + + while (true) { + switch (var6) { + case -2088940735: + if (var4.isEmpty()) { + var6 = 417722867; + } else { + var6 = 809678222; + } + break; + case -2018211000: + var7 = var5; + var6 = -309600270; + break; + case -473527697: + var7 = List.of(); + var6 = -309600270; + break; + case -309600270: + return var7; + case -42563039: + default: + var4 = this.buckets.get(var1); + if (var4 != null) { + var6 = -2088940735; + } else { + var6 = 417722867; + } + break; + case 417722867: + return List.of(); + case 809678222: + var5 = (List)var4.get( + (long)var2 << (1570620164 ^ -1570620132) + ((1570620164 & -1570620132) << 1) + | var3 & (-9102439919357546036L ^ 9102439923652513331L) + ((-9102439919357546036L & 9102439923652513331L) << 1) + ); + if (var5 == null) { + var6 = -473527697; + } else { + var6 = -2018211000; + } + } + } + } + + public boolean hasTags(String var1) { + Map var2 = null; + int var4 = 0; + int var3 = -1130423632; + + while (true) { + switch (var3) { + case -1537350015: + var4 = 1; + var3 = 1004428351; + break; + case -1130423632: + default: + var2 = this.buckets.get(var1); + if (var2 != null) { + var3 = 488530380; + } else { + var3 = 792544739; + } + break; + case 488530380: + if (!var2.isEmpty()) { + var3 = -1537350015; + } else { + var3 = 792544739; + } + break; + case 792544739: + var4 = 0; + var3 = 1004428351; + break; + case 1004428351: + return (boolean)((var4) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/ahg.java b/src/main/java/defpackage/ahg.java new file mode 100644 index 0000000..7ba43b4 --- /dev/null +++ b/src/main/java/defpackage/ahg.java @@ -0,0 +1,265 @@ +package defpackage; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; + +public record ahg(String key, String dimension, BlockPos anchor, Direction face, float roll, float size, String owner, long placedAt, long expiresAt) { + public static final long FALLBACK_LIFETIME_MILLIS = 86400000L; + public static final float MIN_FACE_SIZE = 0.25F; + public static final float MAX_FACE_SIZE = 1.0F; + private static final double BLOCK_CENTER = 0.5; + private static final int QUARTERS_PER_TURN = 4; + private static final float QUARTER_TURN_RADIANS = (float) (Math.PI / 2); + private static final String FACE_SEPARATOR = ":"; + private static final String FIELD_KEY = "k"; + private static final String FIELD_DIMENSION = "d"; + private static final String FIELD_ANCHOR_X = "bx"; + private static final String FIELD_ANCHOR_Y = "by"; + private static final String FIELD_ANCHOR_Z = "bz"; + private static final String FIELD_FACE = "f"; + private static final String FIELD_ROLL = "r"; + private static final String FIELD_SIZE = "s"; + private static final String FIELD_TIME = "t"; + private static final String FIELD_OWNER = "o"; + private static final String FIELD_EXPIRY = "e"; + + public ahg(String key, String dimension, BlockPos anchor, Direction face, float roll, float size, String owner, long placedAt, long expiresAt) { + roll = snapRoll(roll); + size = clampSize(size); + this.key = key; + this.dimension = dimension; + this.anchor = anchor; + this.face = face; + this.roll = roll; + this.size = size; + this.owner = owner; + this.placedAt = placedAt; + this.expiresAt = expiresAt; + } + + public static float snapRoll(float var0) { + int var1 = 0; + int var2 = -875861077; + + while (true) { + switch (var2) { + case -875861077: + default: + var1 = Math.round(var0 / (float) (Math.PI / 2)) % ((-1366752264 ^ 1366752268) + ((-1366752264 & 1366752268) << 1)); + if (var1 < 0) { + var2 = 1198274493; + } else { + var2 = 1254326423; + } + break; + case 1198274493: + var1 += 4; + var2 = 1254326423; + break; + case 1254326423: + return var1 * (float) (Math.PI / 2); + } + } + } + + public static float clampSize(float var0) { + float var2 = 0.0F; + int var1 = -51199728; + + while (true) { + switch (var1) { + case -1376398230: + var2 = Mth.clamp(var0, 0.25F, 1.0F); + var1 = -337450743; + break; + case -337450743: + return var2; + case -51199728: + default: + if (Float.isFinite(var0)) { + var1 = -1376398230; + } else { + var1 = 860684315; + } + break; + case 860684315: + var2 = 1.0F; + var1 = -337450743; + } + } + } + + public static String faceKey(BlockPos var0, Direction var1) { + return var0.getX() + ":" + var0.getY() + ":" + var0.getZ() + ":" + var1.getName(); + } + + public String faceKey() { + return faceKey(this.anchor, this.face); + } + + public double x() { + return this.anchor.getX() + 0.5 + this.face.getStepX() * 0.5; + } + + public double y() { + return this.anchor.getY() + 0.5 + this.face.getStepY() * 0.5; + } + + public double z() { + return this.anchor.getZ() + 0.5 + this.face.getStepZ() * 0.5; + } + + public long chunkKey() { + return (long)(this.anchor.getX() >> (-2068270366 ^ 2068270370) + ((-2068270366 & 2068270370) << 1)) + << (-133835183 | 133835215) + (-133835183 & 133835215) + | this.anchor.getZ() >> (-1943108043 ^ 1943108047) + ((-1943108043 & 1943108047) << 1) + & (8068379665070769839L ^ -8068379660775802544L) + ((8068379665070769839L & -8068379660775802544L) << 1); + } + + public boolean isExpired(long var1) { + int var4 = 0; + int var3 = -1833006388; + + while (true) { + switch (var3) { + case -1833006388: + default: + if (var1 >= this.expiresAt) { + var3 = 2082853754; + } else { + var3 = 1043775862; + } + break; + case -1529586001: + return (boolean)((var4) != 0); + case 1043775862: + var4 = 0; + var3 = -1529586001; + break; + case 2082853754: + var4 = 1; + var3 = -1529586001; + } + } + } + + public boolean isOwnedBy(String var1) { + int var3 = 0; + int var2 = 1382476567; + + while (true) { + switch (var2) { + case -488958401: + var3 = 0; + var2 = 139628516; + break; + case 130516372: + if (this.owner.equals(var1)) { + var2 = 1752068556; + } else { + var2 = -488958401; + } + break; + case 139628516: + return (boolean)((var3) != 0); + case 1382476567: + default: + if (this.owner != null) { + var2 = 130516372; + } else { + var2 = 1752068556; + } + break; + case 1752068556: + var3 = 1; + var2 = 139628516; + } + } + } + + public JsonObject toJson() { + JsonObject var1 = null; + int var2 = -127624787; + + while (true) { + switch (var2) { + case -2016359760: + var1.addProperty("o", this.owner); + var2 = 704805001; + break; + case -127624787: + default: + var1 = new JsonObject(); + var1.addProperty("k", this.key); + var1.addProperty("d", this.dimension); + var1.addProperty("bx", this.anchor.getX()); + var1.addProperty("by", this.anchor.getY()); + var1.addProperty("bz", this.anchor.getZ()); + var1.addProperty("f", this.face.getName()); + var1.addProperty("r", this.roll); + var1.addProperty("s", this.size); + var1.addProperty("t", this.placedAt); + var1.addProperty("e", this.expiresAt); + if (this.owner != null) { + var2 = -2016359760; + } else { + var2 = 704805001; + } + break; + case 704805001: + return var1; + } + } + } + + public static ahg fromJson(JsonObject var0) { + if (var0 != null + && var0.has("k") + && var0.has("f") + && var0.has("bx") + && var0.has("by") + && var0.has("bz")) { + Direction var1 = Direction.byName(var0.get("f").getAsString()); + if (var1 == null) { + return null; + } else { + BlockPos var2 = new BlockPos( + var0.get("bx").getAsInt(), + var0.get("by").getAsInt(), + var0.get("bz").getAsInt() + ); + JsonElement var3 = var0.get("d"); + JsonElement var4 = var0.get("r"); + JsonElement var5 = var0.get("s"); + JsonElement var6 = var0.get("t"); + JsonElement var7 = var0.get("e"); + JsonElement var8 = var0.get("o"); + if (var3 != null && var4 != null && var5 != null && var6 != null) { + long var9 = var6.getAsLong(); + return new ahg( + var0.get("k").getAsString(), + var3.getAsString(), + var2, + var1, + var4.getAsFloat(), + var5.getAsFloat(), + var8 != null && !var8.isJsonNull() ? var8.getAsString() : null, + var9, + var7 == null + ? Math.max(var9, System.currentTimeMillis()) + + (-7289941053176548162L ^ 7289941053262948162L) + + ((-7289941053176548162L & 7289941053262948162L) << 1) + : var7.getAsLong() + ); + } else { + return null; + } + } + } else { + return null; + } + } +} diff --git a/src/main/java/defpackage/ahh.java b/src/main/java/defpackage/ahh.java new file mode 100644 index 0000000..4c0e154 --- /dev/null +++ b/src/main/java/defpackage/ahh.java @@ -0,0 +1,296 @@ +package defpackage; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.nio.file.Path; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Map.Entry; + +public final class ahh { + public static final int PACK_SIZE = 50; + private static final String FILE_NAME = "wallet.json"; + private static final String FIELD_EQUIPPED = "equipped"; + private static final String FIELD_CHARGES = "charges"; + private static final String PARSE_FAILURE = "graffiti wallet parse failed"; + private static final int MAX_CHARGES = 9999; + private static final ahh INSTANCE = new ahh(); + private final Map charges = new LinkedHashMap<>(); + private String equipped; + private boolean loaded; + + private ahh() { + } + + public static ahh getInstance() { + return INSTANCE; + } + + private Path file() { + return agw.directory().resolve("wallet.json"); + } + + private void ensureLoaded() { + if (!this.loaded) { + this.loaded = (boolean)(((1)) != 0); + String var1 = agw.read(this.file()); + if (var1 != null && !var1.isBlank()) { + try { + JsonObject var2 = JsonParser.parseString(var1).getAsJsonObject(); + JsonElement var3 = var2.get("equipped"); + if (var3 != null && var3.isJsonPrimitive()) { + this.equipped = var3.getAsString(); + } + + JsonElement var4 = var2.get("charges"); + if (var4 != null && var4.isJsonObject()) { + for (Entry var6 : var4.getAsJsonObject().entrySet()) { + if (((JsonElement)var6.getValue()).isJsonPrimitive()) { + this.charges.put((String)var6.getKey(), clamp(((JsonElement)var6.getValue()).getAsInt())); + } + } + } + } catch (RuntimeException var7) { + id.warn( + Cif.COSMETIC, + "graffiti wallet parse failed", + var7 + ); + } + + this.seedDefaults(); + } else { + this.seedDefaults(); + } + } + } + + private void seedDefaults() { + Iterator var1 = null; + agu var2 = null; + int var3 = 677160606; + + while (true) { + switch (var3) { + case 677160606: + default: + var1 = agv.all().iterator(); + var3 = 896033006; + break; + case 896033006: + if (var1.hasNext()) { + var3 = 2039670739; + } else { + var3 = 1760144203; + } + break; + case 1760144203: + return; + case 2039670739: + var2 = (agu)var1.next(); + this.charges.putIfAbsent(var2.getKey(), (1127437103 ^ -1127437053) + ((1127437103 & -1127437053) << 1)); + var3 = 896033006; + } + } + } + + private static int clamp(int var0) { + return Math.max(0, Math.min(9999, var0)); + } + + public String equippedKey() { + this.ensureLoaded(); + return this.equipped; + } + + public void equip(String var1) { + int var2 = 801636003; + + while (true) { + switch (var2) { + case -1753282208: + this.equipped = var1; + this.save(); + return; + case -1295947409: + return; + case -359729032: + if (var1.equals(this.equipped)) { + var2 = -1295947409; + } else { + var2 = -1753282208; + } + break; + case 801636003: + default: + this.ensureLoaded(); + if (var1 != null) { + var2 = -359729032; + } else { + var2 = -1753282208; + } + } + } + } + + public int charges(String var1) { + Integer var2 = null; + Integer var4 = null; + int var5 = 0; + int var3 = -1885508041; + + while (true) { + switch (var3) { + case -1885508041: + default: + this.ensureLoaded(); + if (var1 == null) { + var3 = 705695069; + } else { + var3 = 737143927; + } + break; + case 351258358: + var2 = var4; + if (var2 == null) { + var3 = 1694794497; + } else { + var3 = 1363899768; + } + break; + case 705695069: + var4 = null; + var3 = 351258358; + break; + case 737143927: + var4 = this.charges.get(var1); + var3 = 351258358; + break; + case 1363899768: + var5 = var2; + var3 = 1520036378; + break; + case 1520036378: + return var5; + case 1694794497: + var5 = 0; + var3 = 1520036378; + } + } + } + + public boolean spend(String var1) { + int var2 = 0; + int var3 = -1478262888; + + while (true) { + switch (var3) { + case -1478262888: + default: + var2 = this.charges(var1); + if (var2 <= 0) { + var3 = -627677438; + } else { + var3 = -1003224480; + } + break; + case -1003224480: + this.charges.put(var1, var2 - ((672591909 ^ -672591908) + ((672591909 & -672591908) << 1))); + this.save(); + return (boolean)(((1)) != 0); + case -627677438: + return (boolean)(((0)) != 0); + } + } + } + + public void refillAll(int var1) { + Iterator var2 = null; + agu var3 = null; + int var4 = -1064469163; + + while (true) { + switch (var4) { + case -1873757978: + var3 = (agu)var2.next(); + this.charges.put(var3.getKey(), clamp(this.charges(var3.getKey()) + var1)); + var4 = 240555455; + break; + case -1064469163: + default: + if (var1 <= 0) { + var4 = 1221198433; + } else { + var4 = -475319146; + } + break; + case -475319146: + this.ensureLoaded(); + var2 = agv.all().iterator(); + var4 = 240555455; + break; + case 240555455: + if (var2.hasNext()) { + var4 = -1873757978; + } else { + var4 = 1842276747; + } + break; + case 1221198433: + return; + case 1842276747: + this.save(); + return; + } + } + } + + private void save() { + JsonObject var1 = null; + JsonObject var2 = null; + Iterator var3 = null; + Entry var4 = null; + int var5 = 794197510; + + while (true) { + switch (var5) { + case -1552785200: + var4 = (Entry)var3.next(); + var2.addProperty((String)var4.getKey(), (Number)var4.getValue()); + var5 = 158159009; + break; + case -258743172: + var2 = new JsonObject(); + var3 = this.charges.entrySet().iterator(); + var5 = 158159009; + break; + case 158159009: + if (var3.hasNext()) { + var5 = -1552785200; + } else { + var5 = 875288385; + } + break; + case 393881974: + var1.addProperty("equipped", this.equipped); + var5 = -258743172; + break; + case 794197510: + default: + var1 = new JsonObject(); + if (this.equipped != null) { + var5 = 393881974; + } else { + var5 = -258743172; + } + break; + case 875288385: + var1.add("charges", var2); + agw.writeAsync(this.file(), var1.toString()); + return; + } + } + } +} diff --git a/src/main/java/defpackage/ahi.java b/src/main/java/defpackage/ahi.java new file mode 100644 index 0000000..ba45988 --- /dev/null +++ b/src/main/java/defpackage/ahi.java @@ -0,0 +1,352 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.TreeMap; +import java.util.Map.Entry; + +final class ahi { + private static final String ANIMATIONS = "animations"; + private static final String ANIMATION_LENGTH = "animation_length"; + private static final String BONES = "bones"; + private static final String ROTATION = "rotation"; + private static final String POSITION = "position"; + private static final String SCALE = "scale"; + private static final String SOUND_EFFECTS = "sound_effects"; + private static final String EFFECT = "effect"; + private static final String PRE = "pre"; + private static final String POST = "post"; + private static final String LERP_MODE = "lerp_mode"; + private static final String CATMULLROM = "catmullrom"; + private static final float NEUTRAL_SCALE = 1.0F; + + private ahi() { + } + + static Map parse(String var0, Map var1) { + JsonObject var2 = null; + JsonObject var3 = null; + HashMap var4 = null; + Iterator var5 = null; + Entry var6 = null; + ahq var7 = null; + int var8 = -169945689; + + while (true) { + switch (var8) { + case -2139309444: + var8 = 1151917794; + break; + case -2000054085: + var7 = parseClip((String)var6.getKey(), ((JsonElement)var6.getValue()).getAsJsonObject(), var1); + if (var7 != null) { + var8 = -1810023552; + } else { + var8 = -1484969825; + } + break; + case -1810023552: + var4.put((String)var6.getKey(), var7); + var8 = -1484969825; + break; + case -1484969825: + var8 = 1151917794; + break; + case -1016631229: + return Map.copyOf(var4); + case -872487993: + var6 = (Entry)var5.next(); + if (!((JsonElement)var6.getValue()).isJsonObject()) { + var8 = -2139309444; + } else { + var8 = -2000054085; + } + break; + case -169945689: + default: + var2 = JsonParser.parseString(var0).getAsJsonObject(); + var3 = var2.getAsJsonObject("animations"); + if (var3 == null) { + var8 = 1298020016; + } else { + var8 = 334886615; + } + break; + case 334886615: + var4 = new HashMap(); + var5 = var3.entrySet().iterator(); + var8 = 1151917794; + break; + case 1151917794: + if (var5.hasNext()) { + var8 = -872487993; + } else { + var8 = -1016631229; + } + break; + case 1298020016: + return Map.of(); + } + } + } + + private static ahq parseClip(String var0, JsonObject var1, Map var2) { + ArrayList var3 = new ArrayList(); + float var4 = 0.0F; + JsonObject var5 = var1.getAsJsonObject("bones"); + if (var5 != null) { + for (Entry var7 : var5.entrySet()) { + Integer var8 = (Integer)var2.get(var7.getKey()); + if (var8 != null && ((JsonElement)var7.getValue()).isJsonObject()) { + JsonObject var9 = ((JsonElement)var7.getValue()).getAsJsonObject(); + ahp var10 = parseChannel(var9.get("rotation"), 0.0F); + ahp var11 = parseChannel(var9.get("position"), 0.0F); + ahp var12 = parseChannel(var9.get("scale"), 1.0F); + if (var10 != null || var11 != null || var12 != null) { + ahp[] var10001 = new ahp[3]; + var10001[0] = var10; + var10001[1] = var11; + var10001[2] = var12; + var4 = Math.max(var4, longestTime(var10001)); + var3.add(new aho(var8, var10, var11, var12)); + } + } + } + } + + if (var3.isEmpty()) { + return null; + } + + float var13 = var1.has("animation_length") + ? var1.get("animation_length").getAsFloat() + : var4; + return new ahq( + var0, Math.max(var13, 0.0F), var3.toArray(new aho[0]), soundTimes(var1), soundNames(var1) + ); + } + + private static float longestTime(ahp... var0) { + float var1 = 0.0F; + ahp[] var2 = null; + int var3 = 0; + int var4 = 0; + Object var5 = null; + int var6 = 1709871004; + + while (true) { + switch (var6) { + case -1695332868: + var1 = Math.max(var1, ((ahp)var5).lastTime()); + var6 = -359264983; + break; + case -1458215498: + if (var4 < var3) { + var6 = -240799762; + } else { + var6 = 1503184726; + } + break; + case -359264983: + var4++; + var6 = -1458215498; + break; + case -240799762: + var5 = var2[var4]; + if (var5 != null) { + var6 = -1695332868; + } else { + var6 = -359264983; + } + break; + case 1503184726: + return var1; + case 1709871004: + default: + var1 = 0.0F; + var2 = var0; + var3 = var2.length; + var4 = 0; + var6 = -1458215498; + } + } + } + + private static ahp parseChannel(JsonElement var0, float var1) { + if (var0 == null || var0.isJsonNull()) { + return null; + } + + if (!var0.isJsonObject()) { + float[] var12 = readVector(var0, var1); + float[] var10002 = new float[1]; + var10002[0] = 0.0F; + float[] var10004 = (float[])var12.clone(); + boolean[] var10005 = new boolean[1]; + var10005[0] = (boolean)(((0)) != 0); + return new ahp(var10002, var12, var10004, var10005); + } + + TreeMap var2 = new TreeMap(); + + for (Entry var4 : var0.getAsJsonObject().entrySet()) { + try { + var2.put(Float.parseFloat((String)var4.getKey()), (JsonElement)var4.getValue()); + } catch (NumberFormatException var11) { + return null; + } + } + + if (var2.isEmpty()) { + return null; + } + + int var13 = var2.size(); + float[] var14 = new float[var13]; + float[] var5 = new float[var13 * (3)]; + float[] var6 = new float[var13 * (3)]; + boolean[] var7 = new boolean[var13]; + int var8 = 0; + + for (Entry var10 : var2.entrySet()) { + var14[var8] = (Float)var10.getKey(); + readKeyframe((JsonElement)var10.getValue(), var1, var5, var6, var7, var8); + var8++; + } + + return new ahp(var14, var5, var6, var7); + } + + private static void readKeyframe(JsonElement var0, float var1, float[] var2, float[] var3, boolean[] var4, int var5) { + int var6 = var5 * (3); + if (!var0.isJsonObject()) { + float[] var10 = readVector(var0, var1); + store(var10, var2, var6); + store(var10, var3, var6); + } else { + JsonObject var7 = var0.getAsJsonObject(); + var4[var5] = (boolean)(((var7.has("lerp_mode") + && "catmullrom" + .equals(var7.get("lerp_mode").getAsString()) + ? 1: (-1586711584 ^ 1586711584) + ((-1586711584 & 1586711584) << 1))) != 0); + float[] var8 = var7.has("post") + ? readVector(var7.get("post"), var1) + : readVector(var7.get("pre"), var1); + float[] var9 = var7.has("pre") + ? readVector(var7.get("pre"), var1) + : var8; + store(var9, var2, var6); + store(var8, var3, var6); + } + } + + private static void store(float[] var0, float[] var1, int var2) { + var1[var2] = var0[0]; + var1[var2 + 1] = var0[1]; + var1[var2 + 2] = var0[2]; + } + + private static float[] readVector(JsonElement var0, float var1) { + float[] var10000 = new float[3]; + var10000[0] = var1; + var10000[1] = var1; + var10000[2] = var1; + float[] var2 = var10000; + if (var0 == null || var0.isJsonNull()) { + return var2; + } + + if (var0.isJsonPrimitive()) { + float var6 = var0.getAsFloat(); + var2[0] = var6; + var2[1] = var6; + var2[2] = var6; + return var2; + } + + if (!var0.isJsonArray()) { + return var2; + } + + JsonArray var3 = var0.getAsJsonArray(); + + for (int var4 = 0; + var4 < (1358450651 ^ -1358450648) + ((1358450651 & -1358450648) << 1) && var4 < var3.size(); + var4++ + ) { + JsonElement var5 = var3.get(var4); + var2[var4] = var5.isJsonPrimitive() && var5.getAsJsonPrimitive().isNumber() ? var5.getAsFloat() : var1; + } + + return var2; + } + + private static float[] soundTimes(JsonObject var0) { + TreeMap var1 = null; + float[] var2 = null; + int var3 = 0; + Iterator var4 = null; + Float var5 = null; + int var6 = 1409760168; + + while (true) { + switch (var6) { + case -2019248919: + var5 = (Float)var4.next(); + var2[var3++] = var5; + var6 = 806177147; + break; + case -1736674941: + return var2; + case 806177147: + if (var4.hasNext()) { + var6 = -2019248919; + } else { + var6 = -1736674941; + } + break; + case 1409760168: + default: + var1 = soundCues(var0); + var2 = new float[var1.size()]; + var3 = 0; + var4 = var1.keySet().iterator(); + var6 = 806177147; + } + } + } + + private static String[] soundNames(JsonObject var0) { + TreeMap var1 = soundCues(var0); + return var1.values().toArray(new String[0]); + } + + private static TreeMap soundCues(JsonObject var0) { + TreeMap var1 = new TreeMap(); + JsonObject var2 = var0.getAsJsonObject("sound_effects"); + if (var2 == null) { + return var1; + } + + for (Entry var4 : var2.entrySet()) { + try { + JsonElement var5 = (JsonElement)var4.getValue(); + String var6 = var5.isJsonObject() + ? var5.getAsJsonObject().get("effect").getAsString() + : var5.getAsString(); + if (var6 != null && !var6.isEmpty()) { + var1.put(Float.parseFloat((String)var4.getKey()), var6); + } + } catch (Exception var7) { + } + } + + return var1; + } +} diff --git a/src/main/java/defpackage/ahj.java b/src/main/java/defpackage/ahj.java new file mode 100644 index 0000000..fbb67dd --- /dev/null +++ b/src/main/java/defpackage/ahj.java @@ -0,0 +1,6 @@ +package defpackage; + +enum ahj { + START, + IDLE; +} diff --git a/src/main/java/defpackage/ahk.java b/src/main/java/defpackage/ahk.java new file mode 100644 index 0000000..48c0ca0 --- /dev/null +++ b/src/main/java/defpackage/ahk.java @@ -0,0 +1,6 @@ +package defpackage; + +enum ahk { + IDLE, + RUN; +} diff --git a/src/main/java/defpackage/ahl.java b/src/main/java/defpackage/ahl.java new file mode 100644 index 0000000..1de1064 --- /dev/null +++ b/src/main/java/defpackage/ahl.java @@ -0,0 +1,833 @@ +package defpackage; + +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.ThreadLocalRandom; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.item.Item; + +public final class ahl { + private static final ahl INSTANCE = new ahl(); + private static final ahl OFF_HAND = new ahl(); + private static final String CLIP_STATIC_IDLE = "static_idle"; + private static final String CLIP_DRAW = "draw"; + private static final String CLIP_DRAW_ALTERNATE = "draw_1"; + private static final String CLIP_INSPECT = "inspect"; + private static final String CLIP_INSPECT_ALTERNATE = "inspect_1"; + private static final String CLIP_MELEE_PRIMARY = "melee_"; + private static final String CLIP_MELEE_SECONDARY = "melee_3"; + private static final String CLIP_RUN = "run"; + private static final String CLIP_RUN_START = "run_start"; + private static final String CLIP_RUN_END = "run_end"; + private static final float TRANSITION_INSTANT = 0.0F; + private static final float TRANSITION_ACTION = 0.2F; + private static final float TRANSITION_RUN_START = 0.2F; + private static final float TRANSITION_RUN_LOOP = 0.2F; + private static final float TRANSITION_RUN_END = 0.3F; + private static final float MAX_DELTA_SECONDS = 0.25F; + private static final float NANOS_PER_SECOND = 1.0E9F; + private static final float RUN_CYCLE_DISTANCE = 2.0F; + private static final int PRIMARY_ATTACK_VARIANTS = 2; + private static final int RUN_MODE_IDLE = -1; + private static final int RUN_MODE_CYCLE = 0; + private static final float NEUTRAL_SCALE = 1.0F; + private final aic baseTrack = new aic(); + private final aic mainTrack = new aic(); + private final aic movementTrack = new aic(); + private ahw model; + private String modelKey; + private boolean renderedSinceTick; + private aht variant = aht.DEFAULT; + private float[] staticPose = new float[0]; + private float[] additivePose = new float[0]; + private float[] staticFade = new float[0]; + private float[] additiveFade = new float[0]; + private float[] composedPose = new float[0]; + private boolean[] hidden = new boolean[0]; + private float staticFadeRemaining; + private float staticFadeDuration; + private float additiveFadeRemaining; + private float additiveFadeDuration; + private ahj mainState = ahj.START; + private ahk movementState = ahk.IDLE; + private int attackIndex; + private int runMode = -1; + private float runAnchor; + private long lastNanos; + private Item heldItem; + private int heldSlot = -1; + + private ahl() { + } + + public static ahl getInstance() { + return INSTANCE; + } + + public static ahl offHand() { + return OFF_HAND; + } + + public static void resetAll() { + INSTANCE.reset(); + OFF_HAND.reset(); + } + + public void reset() { + this.model = null; + this.modelKey = null; + this.baseTrack.clear(); + this.mainTrack.clear(); + this.movementTrack.clear(); + this.mainState = ahj.START; + this.movementState = ahk.IDLE; + this.runMode = -1; + this.attackIndex = 0; + this.heldItem = null; + this.heldSlot = -1; + this.staticFadeRemaining = 0.0F; + this.additiveFadeRemaining = 0.0F; + this.lastNanos = (9152819668149359996L ^ -9152819668149359996L) + ((9152819668149359996L & -9152819668149359996L) << 1); + } + + public void stop() { + int var1 = 2069992329; + + while (true) { + switch (var1) { + case -2049651474: + this.reset(); + return; + case 2038324683: + return; + case 2069992329: + } + + if (this.model == null) { + var1 = 2038324683; + } else { + var1 = -2049651474; + } + } + } + + public void restart() { + this.mainState = ahj.START; + this.movementState = ahk.IDLE; + this.runMode = -1; + this.mainTrack.clear(); + this.movementTrack.clear(); + this.staticFadeRemaining = 0.0F; + this.additiveFadeRemaining = 0.0F; + } + + public float[] pose() { + return this.composedPose; + } + + public boolean[] hidden() { + return this.hidden; + } + + public boolean consumeRendered() { + boolean var1 = this.renderedSinceTick; + this.renderedSinceTick = (boolean)(((0)) != 0); + return var1; + } + + public ahw prepare(AbstractClientPlayer var1, InteractionHand var2) { + ahu var3 = null; + ahw var4 = null; + int var5 = 1888783390; + + while (true) { + switch (var5) { + case -2059951398: + if (var1 == null) { + var5 = -1418406542; + } else { + var5 = 1035387811; + } + break; + case -1834528922: + this.restart(); + var5 = 1087782385; + break; + case -1614519256: + this.bind(var3, var4); + var5 = 1087782385; + break; + case -1418406542: + return null; + case -1296440779: + if (this.heldChanged(var1, var2)) { + var5 = -1834528922; + } else { + var5 = 1087782385; + } + break; + case -462118766: + return null; + case -173615382: + this.renderedSinceTick = (boolean)(((1)) != 0); + if (var4 == this.model) { + var5 = -154717528; + } else { + var5 = -1614519256; + } + break; + case -154717528: + if (!var3.getKey().equals(this.modelKey)) { + var5 = -1614519256; + } else { + var5 = -1296440779; + } + break; + case 1035387811: + var4 = ahx.get(var3); + if (var4 == null) { + var5 = -462118766; + } else { + var5 = -173615382; + } + break; + case 1087782385: + this.advance(var1, this.delta()); + this.compose(); + return this.model; + case 1888783390: + default: + var3 = ahv.equipped(); + if (var3 != null) { + var5 = -2059951398; + } else { + var5 = -1418406542; + } + } + } + } + + public void onAttack(boolean var1) { + String var2 = null; + int var3 = 298639641; + + while (true) { + switch (var3) { + case -1965793572: + return; + case -1794195482: + if (var1) { + var3 = -1187447287; + } else { + var3 = -160519007; + } + break; + case -1187447287: + var2 = this.variantName("melee_" + (this.attackIndex + (-1151431578 | 1151431579) + (-1151431578 & 1151431579))); + this.attackIndex = (this.attackIndex + (774154019 | -774154018) + (774154019 & -774154018)) + % ((-2131190567 ^ 2131190569) + ((-2131190567 & 2131190569) << 1)); + this.playMain(var2, 0.2F); + return; + case -160519007: + this.playMain(this.variantName("melee_3"), 0.2F); + return; + case 298639641: + default: + if (this.model != null) { + var3 = 684663002; + } else { + var3 = -1965793572; + } + break; + case 684663002: + if (this.mainState != ahj.IDLE) { + var3 = -1965793572; + } else { + var3 = -1794195482; + } + } + } + } + + public void onInspect() { + if (this.model != null && this.mainState == ahj.IDLE) { + String var1 = this.variantName("inspect_1"); + int var2 = this.model.hasClip(var1) && ThreadLocalRandom.current().nextBoolean() + ? 1: 0; + this.playMain(var2 != 0 ? var1 : this.variantName("inspect"), 0.2F); + } + } + + private boolean heldChanged(AbstractClientPlayer var1, InteractionHand var2) { + Item var3 = null; + int var4 = 0; + int var6 = 0; + int var5 = 1487046042; + + while (true) { + switch (var5) { + case -1323813548: + var6 = 40; + var5 = -864980504; + break; + case -1221793219: + this.heldItem = var3; + this.heldSlot = var4; + return (boolean)(((1)) != 0); + case -864980504: + var4 = var6; + if (var3 == this.heldItem) { + var5 = 925625092; + } else { + var5 = -1221793219; + } + break; + case -21284887: + var6 = var1.getInventory().getSelectedSlot(); + var5 = -864980504; + break; + case 807710: + return (boolean)(((0)) != 0); + case 925625092: + if (var4 == this.heldSlot) { + var5 = 807710; + } else { + var5 = -1221793219; + } + break; + case 1487046042: + default: + var3 = var1.getItemInHand(var2).getItem(); + if (var2 == InteractionHand.MAIN_HAND) { + var5 = -21284887; + } else { + var5 = -1323813548; + } + } + } + } + + private void bind(ahu var1, ahw var2) { + this.heldItem = null; + this.heldSlot = -1; + this.model = var2; + this.modelKey = var1.getKey(); + int var3 = var2.boneCount(); + int var4 = var3 * (9); + this.staticPose = new float[var4]; + this.additivePose = new float[var4]; + this.staticFade = new float[var4]; + this.additiveFade = new float[var4]; + this.composedPose = new float[var4]; + this.hidden = new boolean[var3]; + List var5 = var1.getVariants(); + this.variant = var5.isEmpty() ? aht.DEFAULT : (aht)var5.get(ThreadLocalRandom.current().nextInt(var5.size())); + var2.markHidden(this.variant.hiddenBones(), this.hidden); + this.restart(); + this.baseTrack.play(var2.clip(this.variantName("static_idle")), aib.LOOP); + this.lastNanos = (51184168237274694L | -51184168237274694L) + (51184168237274694L & -51184168237274694L); + } + + private String variantName(String var1) { + String var2 = null; + String var3 = null; + String var5 = null; + int var4 = -1863930243; + + while (true) { + switch (var4) { + case -1944561659: + return var1; + case -1863930243: + default: + var2 = this.variant.suffix(); + if (var2.isEmpty()) { + var4 = -1944561659; + } else { + var4 = -845562740; + } + break; + case -1672325013: + var5 = var3; + var4 = -1145796971; + break; + case -1145796971: + return var5; + case -845562740: + var3 = var1 + var2; + if (this.model != null) { + var4 = 1689351853; + } else { + var4 = 587151731; + } + break; + case 587151731: + var5 = var1; + var4 = -1145796971; + break; + case 1689351853: + if (this.model.hasClip(var3)) { + var4 = -1672325013; + } else { + var4 = 587151731; + } + } + } + } + + private float delta() { + long var1 = (4062468475760665247L | -4062468475760665247L) + (4062468475760665247L & -4062468475760665247L); + float var3 = 0.0F; + int var4 = -1539000046; + + while (true) { + switch (var4) { + case -1539000046: + default: + var1 = System.nanoTime(); + if (this.lastNanos == (1992252862418762920L ^ -1992252862418762920L) + ((1992252862418762920L & -1992252862418762920L) << 1)) { + var4 = 552869427; + } else { + var4 = -699846170; + } + break; + case -880095497: + return Math.max(0.0F, Math.min(var3, 0.25F)); + case -699846170: + var3 = (float)(var1 - this.lastNanos) / 1.0E9F; + this.lastNanos = var1; + if (Minecraft.getInstance().isPaused()) { + var4 = 1355588082; + } else { + var4 = -880095497; + } + break; + case 552869427: + this.lastNanos = var1; + return 0.0F; + case 1355588082: + return 0.0F; + } + } + } + + private void advance(AbstractClientPlayer var1, float var2) { + this.baseTrack.advance(var2); + this.mainTrack.advance(var2); + this.movementTrack.advance(var2); + this.staticFadeRemaining = Math.max(0.0F, this.staticFadeRemaining - var2); + this.additiveFadeRemaining = Math.max(0.0F, this.additiveFadeRemaining - var2); + this.updateMain(); + this.updateMovement(var1); + } + + private void updateMain() { + if (this.mainState == ahj.START) { + String var1 = this.variantName("draw_1"); + int var2 = this.model.hasClip(var1) && ThreadLocalRandom.current().nextBoolean() + ? 1: 0; + this.playMain(var2 != 0 ? var1 : this.variantName("draw"), 0.0F); + this.mainState = ahj.IDLE; + } + } + + private void updateMovement(AbstractClientPlayer var1) { + int var2 = 0; + float var3 = 0.0F; + int var5 = 0; + int var4 = -1030419421; + + while (true) { + switch (var4) { + case -2112901442: + var2 = var5; + if (this.movementState == ahk.IDLE) { + var4 = 1672746123; + } else { + var4 = 1948483074; + } + break; + case -1941913106: + var5 = 0; + var4 = -2112901442; + break; + case -1887814883: + this.runMode = 0; + this.runAnchor = var1.moveDist; + this.playMovement(this.variantName("run"), aib.LOOP, 0.2F); + var4 = 1806939286; + break; + case -1815082009: + return; + case -1501642865: + var3 += 2.0F; + var4 = 127516139; + break; + case -1030419421: + default: + if (var1.isSprinting()) { + var4 = 1419491199; + } else { + var4 = -1941913106; + } + break; + case -754914857: + this.movementState = ahk.RUN; + this.runMode = -1; + this.playMovement(this.variantName("run_start"), aib.ONCE_HOLD, 0.2F); + var4 = -401563831; + break; + case -560311024: + var3 = (var1.moveDist - this.runAnchor) % 2.0F; + if (var3 < 0.0F) { + var4 = -1501642865; + } else { + var4 = 127516139; + } + break; + case -401563831: + return; + case -88734080: + if (this.runMode != 0) { + var4 = 1230376777; + } else { + var4 = 1806939286; + } + break; + case 49066295: + this.movementState = ahk.IDLE; + this.runMode = -1; + this.playMovement(this.variantName("run_end"), aib.ONCE_HOLD, 0.3F); + return; + case 127516139: + this.movementTrack.setProgress(var3 / 2.0F); + var4 = -1815082009; + break; + case 250157571: + if (var1.onGround()) { + var4 = -560311024; + } else { + var4 = -1815082009; + } + break; + case 1060020177: + if (this.model.hasClip(this.variantName("run_start"))) { + var4 = -754914857; + } else { + var4 = -401563831; + } + break; + case 1230376777: + if (this.movementTrack.isHolding()) { + var4 = -1887814883; + } else { + var4 = 1806939286; + } + break; + case 1419491199: + if (this.mainTrack.isStopped()) { + var4 = 1473674926; + } else { + var4 = -1941913106; + } + break; + case 1473674926: + var5 = 1; + var4 = -2112901442; + break; + case 1672746123: + if (var2 != 0) { + var4 = 1060020177; + } else { + var4 = -401563831; + } + break; + case 1806939286: + if (this.runMode == 0) { + var4 = 250157571; + } else { + var4 = -1815082009; + } + break; + case 1948483074: + if (var2 == 0) { + var4 = 49066295; + } else { + var4 = -88734080; + } + } + } + } + + private void playMain(String var1, float var2) { + ahq var3 = null; + int var4 = 217717504; + + while (true) { + switch (var4) { + case -1772347402: + this.beginStaticFade(var2); + this.mainTrack.play(var3, aib.ONCE_STOP); + return; + case -176342876: + return; + case 217717504: + } + + var3 = this.model.clip(var1); + if (var3 == null) { + var4 = -176342876; + } else { + var4 = -1772347402; + } + } + } + + private void playMovement(String var1, aib var2, float var3) { + ahq var4 = null; + int var5 = 814757903; + + while (true) { + switch (var5) { + case 814757903: + default: + var4 = this.model.clip(var1); + if (var4 == null) { + var5 = 1080630790; + } else { + var5 = 969966075; + } + break; + case 969966075: + this.beginAdditiveFade(var3); + this.movementTrack.play(var4, var2); + return; + case 1080630790: + this.movementTrack.clear(); + return; + } + } + } + + private void beginStaticFade(float var1) { + int var2 = 2132277321; + + while (true) { + switch (var2) { + case -291251122: + this.staticFadeRemaining = 0.0F; + return; + case 1893713235: + System.arraycopy( + this.staticPose, + 0, + this.staticFade, + 0, + this.staticPose.length + ); + this.staticFadeDuration = var1; + this.staticFadeRemaining = var1; + return; + case 2132277321: + } + + if (var1 <= 0.0F) { + var2 = -291251122; + } else { + var2 = 1893713235; + } + } + } + + private void beginAdditiveFade(float var1) { + int var2 = 678578749; + + while (true) { + switch (var2) { + case 678578749: + default: + if (var1 <= 0.0F) { + var2 = 1062978469; + } else { + var2 = 1930015175; + } + break; + case 1062978469: + this.additiveFadeRemaining = 0.0F; + return; + case 1930015175: + System.arraycopy( + this.additivePose, + 0, + this.additiveFade, + 0, + this.additivePose.length + ); + this.additiveFadeDuration = var1; + this.additiveFadeRemaining = var1; + return; + } + } + } + + private void compose() { + int var1 = 0; + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 742953756; + + while (true) { + switch (var6) { + case -1662417930: + return; + case -1637296105: + blend(this.staticPose, this.staticFade, this.staticFadeRemaining, this.staticFadeDuration); + fillNeutral(this.additivePose); + if (this.movementTrack.isActive()) { + var6 = 2044917512; + } else { + var6 = 873530481; + } + break; + case -1497429844: + this.mainTrack.evaluate(this.staticPose); + var6 = -1637296105; + break; + case -1139646049: + var2 = 0; + var6 = 506381; + break; + case -506441843: + var3 = var1 + (-1401593236 | 1401593236) + (-1401593236 & 1401593236) + var2; + var4 = var1 + (245286783 ^ -245286780) + ((245286783 & -245286780) << 1) + var2; + var5 = var1 + (-1789426800 ^ 1789426806) + ((-1789426800 & 1789426806) << 1) + var2; + this.composedPose[var3] = this.staticPose[var3] + this.additivePose[var3]; + this.composedPose[var4] = this.staticPose[var4] + this.additivePose[var4]; + this.composedPose[var5] = this.staticPose[var5] * this.additivePose[var5]; + var2++; + var6 = 506381; + break; + case -423039929: + var1 += 9; + var6 = 342383242; + break; + case 506381: + if (var2 < (245415632 ^ -245415629) + ((245415632 & -245415629) << 1)) { + var6 = -506441843; + } else { + var6 = -423039929; + } + break; + case 342383242: + if (var1 < this.composedPose.length) { + var6 = -1139646049; + } else { + var6 = -1662417930; + } + break; + case 742953756: + default: + fillNeutral(this.staticPose); + this.baseTrack.evaluate(this.staticPose); + if (this.mainTrack.isActive()) { + var6 = -1497429844; + } else { + var6 = -1637296105; + } + break; + case 873530481: + blend(this.additivePose, this.additiveFade, this.additiveFadeRemaining, this.additiveFadeDuration); + var1 = 0; + var6 = 342383242; + break; + case 2044917512: + this.movementTrack.evaluate(this.additivePose); + var6 = 873530481; + } + } + } + + private static void blend(float[] var0, float[] var1, float var2, float var3) { + float var4 = 0.0F; + int var5 = 0; + float var6 = 0.0F; + int var7 = 1653315888; + + while (true) { + switch (var7) { + case -1576691923: + var4 = 1.0F - var2 / var3; + var5 = 0; + var7 = 1692153596; + break; + case -423555362: + if (var3 <= 0.0F) { + var7 = 1479397807; + } else { + var7 = -1576691923; + } + break; + case 1479397807: + return; + case 1653315888: + default: + if (!(var2 <= 0.0F)) { + var7 = -423555362; + } else { + var7 = 1479397807; + } + break; + case 1692153596: + if (var5 < var0.length) { + var7 = 2077446663; + } else { + var7 = 2078104107; + } + break; + case 2077446663: + var6 = var1[var5]; + var0[var5] = var6 + (var0[var5] - var6) * var4; + var5++; + var7 = 1692153596; + break; + case 2078104107: + return; + } + } + } + + private static void fillNeutral(float[] var0) { + int var1 = 0; + int var2 = -947419890; + + while (true) { + switch (var2) { + case -1710033883: + var0[var1] = 1.0F; + var0[var1 + 1] = 1.0F; + var0[var1 + 2] = 1.0F; + var1 += 9; + var2 = -1165923990; + break; + case -1592275715: + return; + case -1165923990: + if (var1 < var0.length) { + var2 = -1710033883; + } else { + var2 = -1592275715; + } + break; + case -947419890: + default: + Arrays.fill(var0, 0.0F); + var1 = 6; + var2 = -1165923990; + } + } + } +} diff --git a/src/main/java/defpackage/ahm.java b/src/main/java/defpackage/ahm.java new file mode 100644 index 0000000..bcbe7c0 --- /dev/null +++ b/src/main/java/defpackage/ahm.java @@ -0,0 +1,4 @@ +package defpackage; + +public record ahm(float[] quads, float width, float height) { +} diff --git a/src/main/java/defpackage/ahn.java b/src/main/java/defpackage/ahn.java new file mode 100644 index 0000000..a425c1a --- /dev/null +++ b/src/main/java/defpackage/ahn.java @@ -0,0 +1,1190 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import org.joml.Matrix4fStack; +import org.joml.Vector3f; + +public final class ahn { + private static final String BUILD_FAILURE = "Failed to build melee card geometry {}"; + private static final String LOADER_THREAD = "evo-melee-card"; + private static final String ROOT_BONE = "knife_and_right"; + private static final String ANCHOR_BONE = "righthand_pos"; + private static final String ANCHOR_FALLBACK_BONE = "lefthand_pos"; + private static final Set SERVICE_BONES = Set.of( + "righthand", + "lefthand", + "righthand_pos", + "lefthand_pos", + "knife_and_left", + "constraint", + "camera", + "view", + "positioning" + ); + private static final float MODEL_UNIT = 16.0F; + private static final int STACK_DEPTH = 32; + public static final int CORNERS = 4; + public static final int VERTEX_STRIDE = 4; + public static final int QUAD_STRIDE = 16; + private static final int SOURCE_VERTEX_STRIDE = 5; + private static final int SOURCE_STRIDE = 20; + private static final int PROJECTED_STRIDE = 17; + private static final int DEPTH_INDEX = 16; + private static final int SOURCE_U = 3; + private static final int SOURCE_V = 4; + private static final int AXIS_COUNT = 3; + private static final int AXIS_SUM = 3; + private static final float BLADE_ANGLE_RADIANS = (float)Math.toRadians(45.0); + private static final float TILT_RADIANS = (float)Math.toRadians(14.0); + private static final int OCCLUSION_RESOLUTION = 320; + private static final float OCCLUSION_FILL = 0.92F; + private static final float OCCLUSION_CENTER = 160.0F; + private static final float BARYCENTRIC_EPSILON = -0.002F; + private static final float DEGENERATE_EPSILON = 1.0E-9F; + private static final int NO_OWNER = -1; + private static final ahm EMPTY = new ahm(new float[0], 0.0F, 0.0F); + private static final Map CACHE = new ConcurrentHashMap<>(); + private static final Set LOADING = ConcurrentHashMap.newKeySet(); + private static final ExecutorService LOADER = Executors.newSingleThreadExecutor(var0 -> { + Thread var1 = new Thread(var0, "evo-melee-card"); + var1.setDaemon((boolean)((((1384310355 | -1384310354) + (1384310355 & -1384310354))) != 0)); + return var1; + }); + + private ahn() { + } + + public static ahm get(ahu var0) { + String var1 = null; + ahm var2 = null; + ahm var4 = null; + int var3 = -1910285573; + + while (true) { + switch (var3) { + case -1910285573: + default: + if (var0 == null) { + var3 = 865311633; + } else { + var3 = -530286587; + } + break; + case -1435023686: + var4 = var2; + var3 = 2047068152; + break; + case -530286587: + var1 = cacheKey(var0); + var2 = CACHE.get(var1); + if (var2 == null) { + var3 = -353168472; + } else { + var3 = 1394942946; + } + break; + case -353168472: + schedule(var0, var1); + return null; + case 865311633: + return null; + case 1394942946: + if (var2.quads().length == 0) { + var3 = 1491324374; + } else { + var3 = -1435023686; + } + break; + case 1491324374: + var4 = null; + var3 = 2047068152; + break; + case 2047068152: + return var4; + } + } + } + + private static String cacheKey(ahu var0) { + List var1 = null; + aht var2 = null; + aht var4 = null; + int var3 = -2090683872; + + while (true) { + switch (var3) { + case -2090683872: + default: + var1 = var0.getVariants(); + if (var1.isEmpty()) { + var3 = -1226337150; + } else { + var3 = 1799815636; + } + break; + case -1226337150: + var4 = aht.DEFAULT; + var3 = -1158252247; + break; + case -1158252247: + var2 = var4; + return var0.getGeometryKey() + var2.suffix(); + case 1799815636: + var4 = (aht)var1.get((-831223337 ^ 831223337) + ((-831223337 & 831223337) << 1)); + var3 = -1158252247; + } + } + } + + private static void schedule(ahu var0, String var1) { + int var2 = -1760600515; + + while (true) { + switch (var2) { + case -2015845665: + return; + case -1760600515: + default: + if (!LOADING.add(var1)) { + var2 = -2015845665; + } else { + var2 = 1463518609; + } + break; + case 1463518609: + LOADER.execute( + () -> { + try { + CACHE.put(var1, build(var0)); + } catch (Exception var6) { + CACHE.put(var1, EMPTY); + id.warn( + Cif.COSMETIC, + "Failed to build melee card geometry {}", + var1, + var6 + ); + } finally { + LOADING.remove(var1); + } + } + ); + return; + } + } + } + + private static ahm build(ahu var0) { + aif var1 = null; + Vector3f var2 = null; + ArrayList var3 = null; + Matrix4fStack var4 = null; + Vector3f var5 = null; + aig var6 = null; + Iterator var7 = null; + aig var8 = null; + ahm var10 = null; + int var9 = -254272660; + + while (true) { + switch (var9) { + case -1626491889: + collect(var6, var4, var3, var5); + var9 = -1238902575; + break; + case -1238902575: + if (var3.isEmpty()) { + var9 = -1063534929; + } else { + var9 = 1247590371; + } + break; + case -1063534929: + var10 = EMPTY; + var9 = 1303529674; + break; + case -254272660: + default: + var1 = ahx.definition(var0); + if (var1 == null) { + var9 = 1291756687; + } else { + var9 = 1446415394; + } + break; + case 568172745: + var7 = var1.roots.iterator(); + var9 = 1196343367; + break; + case 1196343367: + if (var7.hasNext()) { + var9 = 1924158238; + } else { + var9 = -1238902575; + } + break; + case 1247590371: + var10 = project(var3, var2); + var9 = 1303529674; + break; + case 1291756687: + return EMPTY; + case 1303529674: + return var10; + case 1446415394: + var2 = findAnchor(var1); + hideBones(var1, var0); + var3 = new ArrayList(); + var4 = new Matrix4fStack((-739581260 ^ 739581292) + ((-739581260 & 739581292) << 1)); + var5 = new Vector3f(); + var6 = var1.findPart("knife_and_right").orElse(null); + if (var6 != null) { + var9 = -1626491889; + } else { + var9 = 568172745; + } + break; + case 1924158238: + var8 = (aig)var7.next(); + collect(var8, var4, var3, var5); + var9 = 1196343367; + } + } + } + + private static void hideBones(aif var0, ahu var1) { + Object var2 = null; + Object var3 = null; + String var4 = null; + int var5 = 1298755201; + + while (true) { + switch (var5) { + case -2014019186: + if (var2.hasNext()) { + var5 = -1181043532; + } else { + var5 = -835192643; + } + break; + case -1181043532: + var3 = (String)var2.next(); + var0.findPart((String)var3).ifPresent(var0x -> var0x.setHidden((boolean)((((-1483769049 ^ 1483769050) + ((-1483769049 & 1483769050) << 1))) != 0))); + var5 = -2014019186; + break; + case -1150538732: + if (var3.hasNext()) { + var5 = 1668534084; + } else { + var5 = 430657741; + } + break; + case -835192643: + var2 = var1.getVariants(); + if (var2.isEmpty()) { + var5 = -719553385; + } else { + var5 = -89224764; + } + break; + case -719553385: + return; + case -89224764: + var3 = ((aht)var2.get((-506941109 ^ 506941109) + ((-506941109 & 506941109) << 1))).hiddenBones().iterator(); + var5 = -1150538732; + break; + case 430657741: + return; + case 1298755201: + default: + var2 = SERVICE_BONES.iterator(); + var5 = -2014019186; + break; + case 1668534084: + var4 = (String)var3.next(); + var0.findPart(var4).ifPresent(var0x -> var0x.setHidden((boolean)((((1410750931 | -1410750930) + (1410750931 & -1410750930))) != 0))); + var5 = -1150538732; + } + } + } + + private static Vector3f findAnchor(aif var0) { + Vector3f var1 = null; + Vector3f var3 = null; + int var2 = 783839436; + + while (true) { + switch (var2) { + case -1658422697: + var3 = locateBone(var0, "lefthand_pos"); + var2 = -1013341989; + break; + case -1013341989: + return var3; + case 770030982: + var3 = var1; + var2 = -1013341989; + break; + case 783839436: + default: + var1 = locateBone(var0, "righthand_pos"); + if (var1 != null) { + var2 = 770030982; + } else { + var2 = -1658422697; + } + } + } + } + + private static Vector3f locateBone(aif var0, String var1) { + Vector3f var2 = null; + Iterator var3 = null; + aig var4 = null; + int var5 = -121973607; + + while (true) { + switch (var5) { + case -1490818509: + return var2; + case -456278050: + return null; + case -121973607: + default: + var2 = new Vector3f(); + var3 = var0.roots.iterator(); + var5 = 1055367139; + break; + case 10695434: + var5 = 1055367139; + break; + case 554517631: + var4 = (aig)var3.next(); + if (locateBone(var4, var1, new Matrix4fStack((67934601 | -67934569) + (67934601 & -67934569)), var2)) { + var5 = -1490818509; + } else { + var5 = 10695434; + } + break; + case 1055367139: + if (var3.hasNext()) { + var5 = 554517631; + } else { + var5 = -456278050; + } + } + } + } + + private static boolean locateBone(aig var0, String var1, Matrix4fStack var2, Vector3f var3) { + Iterator var4 = null; + aig var5 = null; + int var6 = -1456325932; + + while (true) { + switch (var6) { + case -2025474114: + var6 = 1679992425; + break; + case -1677507820: + var4 = var0.children.iterator(); + var6 = 1679992425; + break; + case -1456325932: + default: + var2.pushMatrix(); + applyPart(var0, var2); + if (var0.getName().equals(var1)) { + var6 = -623729677; + } else { + var6 = -1677507820; + } + break; + case -623729677: + var2.transformPosition(var0.getPivotX() / 16.0F, var0.getPivotY() / 16.0F, var0.getPivotZ() / 16.0F, var3); + var2.popMatrix(); + return (boolean)(((1)) != 0); + case -195182973: + var2.popMatrix(); + return (boolean)(((1)) != 0); + case -158085584: + var5 = (aig)var4.next(); + if (locateBone(var5, var1, var2, var3)) { + var6 = -195182973; + } else { + var6 = -2025474114; + } + break; + case 297957212: + var2.popMatrix(); + return (boolean)(((0)) != 0); + case 1679992425: + if (var4.hasNext()) { + var6 = -158085584; + } else { + var6 = 297957212; + } + } + } + } + + private static void collect(aig var0, Matrix4fStack var1, List var2, Vector3f var3) { + Iterator var4 = null; + aie var5 = null; + aij[] var6 = null; + int var7 = 0; + int var8 = 0; + aij var9 = null; + float[] var10 = null; + int var11 = 0; + aik var12 = null; + int var13 = 0; + int var14 = -1243679320; + + while (true) { + switch (var14) { + case -2007808500: + var1.pushMatrix(); + applyPart(var0, var1); + var4 = var0.cubes.iterator(); + var14 = 769398375; + break; + case -1974487964: + var5 = (aie)var4.next(); + var1.pushMatrix(); + applyCube(var5, var1); + var6 = var5.faces; + var7 = var6.length; + var8 = 0; + var14 = 275926776; + break; + case -1389094125: + var14 = 133899222; + break; + case -1243679320: + default: + if (var0.isHidden()) { + var14 = 184335019; + } else { + var14 = -2007808500; + } + break; + case -1195641215: + var4 = var0.children.iterator(); + var14 = 1713077114; + break; + case -688147037: + var10 = new float[20]; + var11 = 0; + var14 = -403511875; + break; + case -478361306: + var1.popMatrix(); + var14 = 769398375; + break; + case -403511875: + if (var11 < (1940472286 | -1940472282) + (1940472286 & -1940472282)) { + var14 = 1102396010; + } else { + var14 = -113854446; + } + break; + case -113854446: + var2.add(var10); + var14 = 133899222; + break; + case -103323348: + aig var15 = (aig)var4.next(); + collect(var15, var1, var2, var3); + var14 = 1713077114; + break; + case 133899222: + var8++; + var14 = 275926776; + break; + case 184335019: + return; + case 275926776: + if (var8 < var7) { + var14 = 1582397224; + } else { + var14 = -478361306; + } + break; + case 769398375: + if (var4.hasNext()) { + var14 = -1974487964; + } else { + var14 = -1195641215; + } + break; + case 1102396010: + var12 = var9.corners[var11]; + var1.transformPosition(var12.position.x, var12.position.y, var12.position.z, var3); + var13 = var11 * (5); + var10[var13] = var3.x(); + var10[var13 + 1] = var3.y(); + var10[var13 + 2] = var3.z(); + var10[var13 + 3] = var12.u; + var10[var13 + 4] = var12.v; + var11++; + var14 = -403511875; + break; + case 1453826454: + var1.popMatrix(); + return; + case 1582397224: + var9 = var6[var8]; + if (var9 == null) { + var14 = -1389094125; + } else { + var14 = -688147037; + } + break; + case 1713077114: + if (var4.hasNext()) { + var14 = -103323348; + } else { + var14 = 1453826454; + } + } + } + } + + private static void applyPart(aig var0, Matrix4fStack var1) { + int var2 = 939437542; + + while (true) { + switch (var2) { + case -511152698: + var1.scale(var0.getScaleX(), var0.getScaleY(), var0.getScaleZ()); + var1.translate(-var0.getPivotX() / 16.0F, -var0.getPivotY() / 16.0F, -var0.getPivotZ() / 16.0F); + return; + case -179752631: + if (var0.getRotX() != 0.0F) { + var2 = 536291993; + } else { + var2 = -511152698; + } + break; + case 536291993: + var1.rotateX(var0.getRotX()); + var2 = -511152698; + break; + case 839705537: + if (var0.getRotY() != 0.0F) { + var2 = 1856113907; + } else { + var2 = -179752631; + } + break; + case 939437542: + default: + var1.translate(-var0.getOffsetX() / 16.0F, var0.getOffsetY() / 16.0F, var0.getOffsetZ() / 16.0F); + var1.translate(var0.getPivotX() / 16.0F, var0.getPivotY() / 16.0F, var0.getPivotZ() / 16.0F); + if (var0.getRotZ() != 0.0F) { + var2 = 954338514; + } else { + var2 = 839705537; + } + break; + case 954338514: + var1.rotateZ(var0.getRotZ()); + var2 = 839705537; + break; + case 1856113907: + var1.rotateY(var0.getRotY()); + var2 = -179752631; + } + } + } + + private static void applyCube(aie var0, Matrix4fStack var1) { + int var2 = 1606435613; + + while (true) { + switch (var2) { + case -1914788143: + var1.rotateX(var0.rotation.x); + var2 = -510299677; + break; + case -1831615676: + var1.rotateZ(var0.rotation.z); + var2 = -1683447639; + break; + case -1683447639: + if (var0.rotation.y != 0.0F) { + var2 = 1503426440; + } else { + var2 = 346241395; + } + break; + case -510299677: + var1.translate(-var0.pivot.x / 16.0F, -var0.pivot.y / 16.0F, -var0.pivot.z / 16.0F); + return; + case 346241395: + if (var0.rotation.x != 0.0F) { + var2 = -1914788143; + } else { + var2 = -510299677; + } + break; + case 1503426440: + var1.rotateY(var0.rotation.y); + var2 = 346241395; + break; + case 1606435613: + default: + var1.translate(var0.pivot.x / 16.0F, var0.pivot.y / 16.0F, var0.pivot.z / 16.0F); + if (var0.rotation.z != 0.0F) { + var2 = -1831615676; + } else { + var2 = -1683447639; + } + } + } + } + + private static ahm project(List var0, Vector3f var1) { + float[] var10000 = new float[3]; + var10000[0] = Float.MAX_VALUE; + var10000[1] = Float.MAX_VALUE; + var10000[2] = Float.MAX_VALUE; + float[] var2 = var10000; + var10000 = new float[3]; + var10000[0] = -Float.MAX_VALUE; + var10000[1] = -Float.MAX_VALUE; + var10000[2] = -Float.MAX_VALUE; + float[] var3 = var10000; + + for (float[] var5 : var0) { + for (int var6 = 0; var6 < 4; var6++) { + int var7 = var6 * (5); + + for (int var8 = 0; var8 < 3; var8++) { + float var9 = var5[var7 + var8]; + var2[var8] = Math.min(var2[var8], var9); + var3[var8] = Math.max(var3[var8], var9); + } + } + } + + float[] var33 = new float[3]; + float[] var34 = new float[3]; + + for (int var35 = 0; var35 < 3; var35++) { + var33[var35] = (var2[var35] + var3[var35]) * 0.5F; + var34[var35] = var3[var35] - var2[var35]; + } + + int var36 = var34[0] >= var34[1] + ? ( + var34[0] >= var34[2] + ? 0: (-1690513233 | 1690513235) + (-1690513233 & 1690513235) + ) + : ( + var34[1] >= var34[2] + ? 1: (1911025321 | -1911025319) + (1911025321 & -1911025319) + ); + int var37 = var34[0] + <= var34[1] + ? ( + var34[0] <= var34[2] + ? 0: (1634412729 | -1634412727) + (1634412729 & -1634412727) + ) + : ( + var34[1] <= var34[2] + ? 1: (880987177 | -880987175) + (880987177 & -880987175) + ); + if (var37 == var36) { + var37 = (var36 + (-1546026039 | 1546026040) + (-1546026039 & 1546026040)) % ((-141908610 ^ 141908613) + ((-141908610 & 141908613) << 1)); + } + + int var38 = (1926361480 ^ -1926361477) + ((1926361480 & -1926361477) << 1) - var36 - var37; + float var39 = handleSign(var0, var1, var33, var36); + float var10 = (float)Math.cos(BLADE_ANGLE_RADIANS); + float var11 = (float)Math.sin(BLADE_ANGLE_RADIANS); + float var12 = (float)Math.cos(TILT_RADIANS); + float var13 = (float)Math.sin(TILT_RADIANS); + float var14 = var10; + float var15 = var11; + float var16 = -var11 * var12; + float var17 = var10 * var12; + float var18 = var13; + float var19 = var11 * var13; + float var20 = -var10 * var13; + float var21 = var12; + ArrayList var22 = new ArrayList(var0.size()); + + for (float[] var24 : var0) { + float[] var25 = new float[17]; + float var26 = 0.0F; + + for (int var27 = 0; var27 < 4; var27++) { + int var28 = var27 * (5); + float var29 = (var24[var28 + var36] - var33[var36]) * var39; + float var30 = (var24[var28 + var38] - var33[var38]) * var39; + float var31 = var24[var28 + var37] - var33[var37]; + int var32 = var27 * (4); + var25[var32] = var29 * var14 + var30 * var16 + var31 * var19; + var25[var32 + 1] = -(var29 * var15 + var30 * var17 + var31 * var20); + var25[var32 + 2] = var24[var28 + 3]; + var25[var32 + 3] = var24[var28 + + 4]; + var26 += var30 * var18 + var31 * var21; + } + + var25[16] = var26 / 4.0F; + var22.add(var25); + } + + var22.sort( + (var0x, var1x) -> Float.compare( + var0x[16], var1x[16] + ) + ); + return assemble(var22, cull(var22)); + } + + private static float handleSign(List var0, Vector3f var1, float[] var2, int var3) { + float[] var4 = null; + float[] var5 = null; + int var6 = 0; + int var7 = 0; + Iterator var8 = null; + float[] var9 = null; + int var10 = 0; + int var11 = 0; + int var12 = 0; + float[] var13 = null; + int var14 = 0; + int var16 = 0; + float[] var17 = null; + float var18 = 0.0F; + int var15 = 109074344; + + while (true) { + switch (var15) { + case -1767248027: + var7++; + var15 = 458442615; + break; + case -1752976329: + return var18; + case -1732315415: + return 1.0F; + case -1612022088: + var13 = var17; + var14 = 0; + var15 = 1756277464; + break; + case -1401167319: + var4 = new float[3]; + var5 = new float[3]; + var6 = 0; + var7 = 0; + var8 = var0.iterator(); + var15 = 2093286467; + break; + case -1325294217: + var18 = 1.0F; + var15 = -1752976329; + break; + case -1232540895: + var16 = 0; + var15 = 1158246140; + break; + case -1153923731: + if (distance(var4, var6, var1) <= distance(var5, var7, var1)) { + var15 = -1325294217; + } else { + var15 = 1552940703; + } + break; + case -749533659: + if (var6 != 0) { + var15 = 435791966; + } else { + var15 = -1732315415; + } + break; + case -419190320: + if (var12 != 0) { + var15 = -418434793; + } else { + var15 = -1767248027; + } + break; + case -418434793: + var6++; + var15 = 458442615; + break; + case -299132361: + var17 = var4; + var15 = -1612022088; + break; + case -257148958: + var16 = 1; + var15 = 1158246140; + break; + case 109074344: + default: + if (var1 == null) { + var15 = 1562184165; + } else { + var15 = -1401167319; + } + break; + case 275002319: + if (var10 < (1944173993 | -1944173989) + (1944173993 & -1944173989)) { + var15 = 643709263; + } else { + var15 = 327527260; + } + break; + case 327527260: + var15 = 2093286467; + break; + case 435791966: + if (var7 == 0) { + var15 = -1732315415; + } else { + var15 = -1153923731; + } + break; + case 458442615: + var10++; + var15 = 275002319; + break; + case 643709263: + var11 = var10 * (5); + if (var9[var11 + var3] < var2[var3]) { + var15 = -257148958; + } else { + var15 = -1232540895; + } + break; + case 1158246140: + var12 = var16; + if (var12 != 0) { + var15 = -299132361; + } else { + var15 = 1397061431; + } + break; + case 1397061431: + var17 = var5; + var15 = -1612022088; + break; + case 1552940703: + var18 = -1.0F; + var15 = -1752976329; + break; + case 1562184165: + return 1.0F; + case 1756277464: + if (var14 < (429563056 ^ -429563053) + ((429563056 & -429563053) << 1)) { + var15 = 1919212301; + } else { + var15 = -419190320; + } + break; + case 1919212301: + var13[var14] += var9[var11 + var14]; + var14++; + var15 = 1756277464; + break; + case 2044026280: + var9 = (float[])var8.next(); + var10 = 0; + var15 = 275002319; + break; + case 2093286467: + if (var8.hasNext()) { + var15 = 2044026280; + } else { + var15 = -749533659; + } + } + } + } + + private static float distance(float[] var0, int var1, Vector3f var2) { + float var3 = var0[0] / var1 - var2.x(); + float var4 = var0[1] / var1 - var2.y(); + float var5 = var0[2] / var1 - var2.z(); + return var3 * var3 + var4 * var4 + var5 * var5; + } + + private static boolean[] cull(List var0) { + boolean[] var1 = new boolean[var0.size()]; + float var2 = Float.MAX_VALUE; + float var3 = Float.MAX_VALUE; + float var4 = -Float.MAX_VALUE; + float var5 = -Float.MAX_VALUE; + + for (float[] var7 : var0) { + for (int var8 = 0; var8 < 4; var8++) { + int var9 = var8 * (4); + var2 = Math.min(var2, var7[var9]); + var4 = Math.max(var4, var7[var9]); + var3 = Math.min(var3, var7[var9 + 1]); + var5 = Math.max(var5, var7[var9 + 1]); + } + } + + float var17 = Math.max(var4 - var2, var5 - var3); + if (var17 <= 0.0F) { + return var1; + } + + float var18 = 294.4F / var17; + float var19 = (var2 + var4) * 0.5F; + float var20 = (var3 + var5) * 0.5F; + float[] var10 = new float[102400]; + int[] var11 = new int[102400]; + Arrays.fill(var10, -Float.MAX_VALUE); + Arrays.fill(var11, (-977443536 ^ 977443535) + ((-977443536 & 977443535) << 1)); + float[] var12 = new float[8]; + + for (int var13 = 0; var13 < var0.size(); var13++) { + float[] var14 = (float[])var0.get(var13); + + for (int var15 = 0; var15 < 4; var15++) { + int var16 = var15 * (4); + var12[var15 * (2)] = (var14[var16] - var19) * var18 + 160.0F; + var12[var15 * 3] = ( + var14[var16 + 1] - var20 + ) + * var18 + + 160.0F; + } + + float var23 = var14[16]; + rasterize( + var12, + 0, + 1, + 2, + var23, + var13, + var10, + var11 + ); + rasterize( + var12, + 0, + 2, + 3, + var23, + var13, + var10, + var11 + ); + } + + int[] var21 = var11; + int var22 = var21.length; + + for (int var24 = 0; var24 < var22; var24++) { + int var25 = var21[var24]; + if (var25 != (-926736875 | 926736874) + (-926736875 & 926736874)) { + var1[var25] = (boolean)(((1)) != 0); + } + } + + return var1; + } + + private static void rasterize(float[] var0, int var1, int var2, int var3, float var4, int var5, float[] var6, int[] var7) { + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = 0; + int var16 = 0; + int var17 = 0; + int var18 = 0; + int var19 = 0; + float var20 = 0.0F; + int var21 = 0; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + int var26 = 0; + int var27 = 536920082; + + while (true) { + switch (var27) { + case -1935073132: + var22 = var21 + 0.5F; + var23 = ((var11 - var13) * (var22 - var12) + (var12 - var10) * (var20 - var13)) / var14; + var24 = ((var13 - var9) * (var22 - var12) + (var8 - var12) * (var20 - var13)) / var14; + var25 = 1.0F - var23 - var24; + if (!(var23 < -0.002F)) { + var27 = 1003973193; + } else { + var27 = -1683961549; + } + break; + case -1683961549: + var21++; + var27 = 1978327173; + break; + case -1652016567: + var19++; + var27 = 2120451436; + break; + case -826692180: + return; + case -679367122: + var20 = var19 + 0.5F; + var21 = var15; + var27 = 1978327173; + break; + case -511512750: + var27 = -1683961549; + break; + case 518144998: + if (var25 < -0.002F) { + var27 = -511512750; + } else { + var27 = 1651924982; + } + break; + case 536920082: + default: + var8 = var0[var1 * (2)]; + var9 = var0[var1 * 3]; + var10 = var0[var2 * (2)]; + var11 = var0[var2 * 3]; + var12 = var0[var3 * (2)]; + var13 = var0[var3 * 3]; + var14 = (var11 - var13) * (var8 - var12) + (var12 - var10) * (var9 - var13); + if (Math.abs(var14) < 1.0E-9F) { + var27 = 1261011979; + } else { + var27 = 1459038150; + } + break; + case 1003973193: + if (!(var24 < -0.002F)) { + var27 = 518144998; + } else { + var27 = -1683961549; + } + break; + case 1261011979: + return; + case 1277939220: + var6[var26] = var4; + var7[var26] = var5; + var27 = -1683961549; + break; + case 1459038150: + var15 = Math.max(0, (int)Math.min(var8, Math.min(var10, var12))); + var16 = Math.min( + 319, + (int)Math.max(var8, Math.max(var10, var12)) + (-1529875932 ^ 1529875933) + ((-1529875932 & 1529875933) << 1) + ); + var17 = Math.max(0, (int)Math.min(var9, Math.min(var11, var13))); + var18 = Math.min( + 319, + (int)Math.max(var9, Math.max(var11, var13)) + (-1317762058 ^ 1317762059) + ((-1317762058 & 1317762059) << 1) + ); + var19 = var17; + var27 = 2120451436; + break; + case 1651924982: + var26 = var19 * ((686330193 ^ -686329873) + ((686330193 & -686329873) << 1)) + var21; + if (var4 >= var6[var26]) { + var27 = 1277939220; + } else { + var27 = -1683961549; + } + break; + case 1978327173: + if (var21 <= var16) { + var27 = -1935073132; + } else { + var27 = -1652016567; + } + break; + case 2120451436: + if (var19 <= var18) { + var27 = -679367122; + } else { + var27 = -826692180; + } + } + } + } + + private static ahm assemble(List var0, boolean[] var1) { + int var2 = 0; + float var3 = Float.MAX_VALUE; + float var4 = Float.MAX_VALUE; + float var5 = -Float.MAX_VALUE; + float var6 = -Float.MAX_VALUE; + + for (int var7 = 0; var7 < var0.size(); var7++) { + if (var1[var7]) { + var2++; + float[] var8 = (float[])var0.get(var7); + + for (int var9 = 0; var9 < 4; var9++) { + int var10 = var9 * (4); + var3 = Math.min(var3, var8[var10]); + var5 = Math.max(var5, var8[var10]); + var4 = Math.min(var4, var8[var10 + 1]); + var6 = Math.max(var6, var8[var10 + 1]); + } + } + } + + if (var2 == 0) { + return EMPTY; + } + + float var15 = (var3 + var5) * 0.5F; + float var16 = (var4 + var6) * 0.5F; + float[] var17 = new float[var2 * (16)]; + int var18 = 0; + + for (int var11 = 0; var11 < var0.size(); var11++) { + if (var1[var11]) { + float[] var12 = (float[])var0.get(var11); + + for (int var13 = 0; + var13 < 4; + var13++ + ) { + int var14 = var13 * (4); + var17[var18] = var12[var14] - var15; + var17[var18 + 1] = var12[var14 + + 1] + - var16; + var17[var18 + 2] = var12[var14 + + 2]; + var17[var18 + 3] = var12[var14 + + 3]; + var18 += 4; + } + } + } + + return new ahm(var17, var5 - var3, var6 - var4); + } +} diff --git a/src/main/java/defpackage/aho.java b/src/main/java/defpackage/aho.java new file mode 100644 index 0000000..2e32644 --- /dev/null +++ b/src/main/java/defpackage/aho.java @@ -0,0 +1,65 @@ +package defpackage; + +public final class aho { + private final int target; + private final ahp rotation; + private final ahp position; + private final ahp scale; + + aho(int var1, ahp var2, ahp var3, ahp var4) { + this.target = var1; + this.rotation = var2; + this.position = var3; + this.scale = var4; + } + + public int getTarget() { + return this.target; + } + + public void sample(float var1, float[] var2) { + int var3 = 0; + int var4 = 1060854346; + + while (true) { + switch (var4) { + case -1983249227: + this.position.sample(var1, var2, var3 + (213546199 ^ -213546196) + ((213546199 & -213546196) << 1)); + var4 = -1219634723; + break; + case -1357602928: + if (this.position != null) { + var4 = -1983249227; + } else { + var4 = -1219634723; + } + break; + case -1219634723: + if (this.scale != null) { + var4 = 1569551884; + } else { + var4 = -818990621; + } + break; + case -856212708: + this.rotation.sample(var1, var2, var3 + (-854264982 ^ 854264982) + ((-854264982 & 854264982) << 1)); + var4 = -1357602928; + break; + case -818990621: + return; + case 1060854346: + default: + var3 = this.target * (9); + if (this.rotation != null) { + var4 = -856212708; + } else { + var4 = -1357602928; + } + break; + case 1569551884: + this.scale.sample(var1, var2, var3 + (-723232116 | 723232122) + (-723232116 & 723232122)); + var4 = -818990621; + } + } + } +} diff --git a/src/main/java/defpackage/ahp.java b/src/main/java/defpackage/ahp.java new file mode 100644 index 0000000..acbe301 --- /dev/null +++ b/src/main/java/defpackage/ahp.java @@ -0,0 +1,221 @@ +package defpackage; + +public final class ahp { + private final float[] times; + private final float[] pre; + private final float[] post; + private final boolean[] smooth; + + ahp(float[] var1, float[] var2, float[] var3, boolean[] var4) { + this.times = var1; + this.pre = var2; + this.post = var3; + this.smooth = var4; + } + + public float lastTime() { + return this.times[this.times.length - (1)]; + } + + public void sample(float var1, float[] var2, int var3) { + int var4 = 0; + int var5 = 0; + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = -990764264; + + while (true) { + switch (var8) { + case -2080176071: + copy(this.post, var4, var2, var3); + return; + case -1616155496: + var7 = (var1 - this.times[var5]) / var6; + if (this.smooth[var5]) { + var8 = 1326893785; + } else { + var8 = -1274948499; + } + break; + case -1274948499: + this.interpolate(var5, var7, var2, var3); + return; + case -990764264: + default: + var4 = this.times.length - (1); + if (var1 <= this.times[0]) { + var8 = 2105669472; + } else { + var8 = 707142107; + } + break; + case -250245818: + var5 = this.indexOf(var1, var4); + var6 = this.times[var5 + 1] - this.times[var5]; + if (var6 <= 0.0F) { + var8 = 919753446; + } else { + var8 = -1616155496; + } + break; + case 707142107: + if (var1 >= this.times[var4]) { + var8 = -2080176071; + } else { + var8 = -250245818; + } + break; + case 919753446: + copy(this.post, var5, var2, var3); + return; + case 1326893785: + this.spline(var5, var7, var2, var3, var4); + return; + case 2105669472: + copy(this.pre, 0, var2, var3); + return; + } + } + } + + private int indexOf(float var1, int var2) { + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 36565404; + + while (true) { + switch (var6) { + case -1912018615: + return var3; + case -431341053: + var6 = 1732623705; + break; + case -385742690: + var3 = var5; + var6 = -431341053; + break; + case 36565404: + default: + var3 = 0; + var4 = var2; + var6 = 1732623705; + break; + case 874134280: + var5 = var3 + var4 + 0; + if (this.times[var5] <= var1) { + var6 = -385742690; + } else { + var6 = 1461596857; + } + break; + case 1461596857: + var4 = var5 - (1); + var6 = -431341053; + break; + case 1732623705: + if (var3 < var4) { + var6 = 874134280; + } else { + var6 = -1912018615; + } + } + } + } + + private void interpolate(int var1, float var2, float[] var3, int var4) { + int var5 = 0; + int var6 = 0; + int var7 = 0; + float var8 = 0.0F; + int var9 = 255543182; + + while (true) { + switch (var9) { + case -942351882: + return; + case 255543182: + default: + var5 = var1 * (3); + var6 = var5 + 3; + var7 = 0; + var9 = 1220121769; + break; + case 919243229: + var8 = this.post[var5 + var7]; + var3[var4 + var7] = var8 + (this.pre[var6 + var7] - var8) * var2; + var7++; + var9 = 1220121769; + break; + case 1220121769: + if (var7 < (1613294110 ^ -1613294107) + ((1613294110 & -1613294107) << 1)) { + var9 = 919243229; + } else { + var9 = -942351882; + } + } + } + } + + private void spline(int var1, float var2, float[] var3, int var4, int var5) { + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = 0; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + int var17 = 601016509; + + while (true) { + switch (var17) { + case -2058745021: + return; + case 601016509: + default: + var6 = Math.max(var1 - (1), (280000416 ^ -280000416) + ((280000416 & -280000416) << 1)) + * ((1038501335 | -1038501332) + (1038501335 & -1038501332)); + var7 = var1 * (3); + var8 = var7 + 3; + var9 = Math.min(var1 + 2, var5) * (3); + var10 = var2 * var2; + var11 = var10 * var2; + var12 = 0; + var17 = 1171823448; + break; + case 634707761: + var13 = this.post[var6 + var12]; + var14 = this.post[var7 + var12]; + var15 = this.pre[var8 + var12]; + var16 = this.pre[var9 + var12]; + var3[var4 + var12] = 0.5F + * ( + 2.0F * var14 + + (var15 - var13) * var2 + + (2.0F * var13 - 5.0F * var14 + 4.0F * var15 - var16) * var10 + + (-var13 + 3.0F * var14 - 3.0F * var15 + var16) * var11 + ); + var12++; + var17 = 1171823448; + break; + case 1171823448: + if (var12 < (-674937310 ^ 674937313) + ((-674937310 & 674937313) << 1)) { + var17 = 634707761; + } else { + var17 = -2058745021; + } + } + } + } + + private static void copy(float[] var0, int var1, float[] var2, int var3) { + int var4 = var1 * (3); + var2[var3] = var0[var4]; + var2[var3 + 1] = var0[var4 + 1]; + var2[var3 + 2] = var0[var4 + 2]; + } +} diff --git a/src/main/java/defpackage/ahq.java b/src/main/java/defpackage/ahq.java new file mode 100644 index 0000000..27c2a2e --- /dev/null +++ b/src/main/java/defpackage/ahq.java @@ -0,0 +1,51 @@ +package defpackage; + +public final class ahq { + public static final int CHANNEL_STRIDE = 3; + public static final int ROTATION_OFFSET = 0; + public static final int POSITION_OFFSET = 3; + public static final int SCALE_OFFSET = 6; + public static final int BONE_STRIDE = 9; + private static final float CATMULL_HALF = 0.5F; + private static final float CATMULL_TWO = 2.0F; + private static final float CATMULL_FIVE = 5.0F; + private static final float CATMULL_FOUR = 4.0F; + private static final float CATMULL_THREE = 3.0F; + private final String name; + private final float length; + private final aho[] tracks; + private final float[] soundTimes; + private final String[] soundNames; + + ahq(String var1, float var2, aho[] var3, float[] var4, String[] var5) { + this.name = var1; + this.length = var2; + this.tracks = var3; + this.soundTimes = var4; + this.soundNames = var5; + } + + public String getName() { + return this.name; + } + + public float getLength() { + return this.length; + } + + public aho[] getTracks() { + return this.tracks; + } + + public int soundCount() { + return this.soundTimes.length; + } + + public float soundTime(int var1) { + return this.soundTimes[var1]; + } + + public String soundName(int var1) { + return this.soundNames[var1]; + } +} diff --git a/src/main/java/defpackage/ahr.java b/src/main/java/defpackage/ahr.java new file mode 100644 index 0000000..c2d2145 --- /dev/null +++ b/src/main/java/defpackage/ahr.java @@ -0,0 +1,57 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.DepthStencilState; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import java.util.function.Function; +import net.minecraft.client.renderer.BindGroupLayouts; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.rendertype.RenderSetup; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Util; + +public final class ahr { + private static final String PIPELINE_HOLY = "pipeline/melee_holy"; + private static final String LAYER_HOLY = "evolution_melee_holy"; + private static final Identifier SHADER_HOLY = bz.id( + "core/melee_holy" + ); + private static final String SAMPLER_TEXTURE = "Sampler0"; + private static final RenderPipeline HOLY_PIPELINE = RenderPipelines.register( + RenderPipeline.builder(new Snippet[0]) + .withLocation(bz.id("pipeline/melee_holy")) + .withVertexShader(SHADER_HOLY) + .withFragmentShader(SHADER_HOLY) + .withBindGroupLayout(BindGroupLayouts.GLOBALS) + .withBindGroupLayout(BindGroupLayouts.MATRICES_PROJECTION) + .withBindGroupLayout(BindGroupLayouts.FOG) + .withBindGroupLayout(BindGroupLayouts.LIGHTING) + .withBindGroupLayout(BindGroupLayouts.SAMPLER0) + .withVertexBinding(0, DefaultVertexFormat.ENTITY) + .withPrimitiveTopology(PrimitiveTopology.QUADS) + .withCull((boolean)((((-326947405 ^ 326947405) + ((-326947405 & 326947405) << 1))) != 0)) + .withColorTargetState(new ColorTargetState(BlendFunction.TRANSLUCENT)) + .withDepthStencilState(DepthStencilState.DEFAULT) + .build() + ); + private static final Function HOLY = Util.memoize( + var0 -> RenderType.create( + "evolution_melee_holy", + RenderSetup.builder(HOLY_PIPELINE) + .withTexture("Sampler0", var0) + .createRenderSetup() + ) + ); + + private ahr() { + } + + public static RenderType holy(Identifier var0) { + return HOLY.apply(var0); + } +} diff --git a/src/main/java/defpackage/ahs.java b/src/main/java/defpackage/ahs.java new file mode 100644 index 0000000..67e7645 --- /dev/null +++ b/src/main/java/defpackage/ahs.java @@ -0,0 +1,21 @@ +package defpackage; + +public record ahs(float[] rotation, float[] translation, float[] scale) { + public static final ahs IDENTITY; + + static { + float[] var10002 = new float[3]; + var10002[0] = 0.0F; + var10002[1] = 0.0F; + var10002[2] = 0.0F; + float[] var10003 = new float[3]; + var10003[0] = 0.0F; + var10003[1] = 0.0F; + var10003[2] = 0.0F; + float[] var10004 = new float[3]; + var10004[0] = 1.0F; + var10004[1] = 1.0F; + var10004[2] = 1.0F; + IDENTITY = new ahs(var10002, var10003, var10004); + } +} diff --git a/src/main/java/defpackage/aht.java b/src/main/java/defpackage/aht.java new file mode 100644 index 0000000..9e3adda --- /dev/null +++ b/src/main/java/defpackage/aht.java @@ -0,0 +1,7 @@ +package defpackage; + +import java.util.List; + +public record aht(String suffix, List hiddenBones) { + public static final aht DEFAULT = new aht("", List.of()); +} diff --git a/src/main/java/defpackage/ahu.java b/src/main/java/defpackage/ahu.java new file mode 100644 index 0000000..3e2791b --- /dev/null +++ b/src/main/java/defpackage/ahu.java @@ -0,0 +1,94 @@ +package defpackage; + +import java.util.List; +import net.minecraft.resources.Identifier; + +public final class ahu { + private static final String MODEL_PATH = "/assets/evolution/cosmetic/melee/%s.geo.json"; + private static final String ANIMATION_PATH = "/assets/evolution/cosmetic/melee/%s.anim.json"; + private static final String TEXTURE_PATH = "textures/cosmetic/melee/%s.png"; + private static final String ICON_PATH = "textures/cosmetic/melee/slot/%s.png"; + private static final String NAMESPACE = "evolution"; + private static final String ID_PREFIX = "melee_"; + private final String key; + private final String geometryKey; + private final String displayName; + private final List variants; + private final List holyBones; + private final ahs thirdPersonRightHand; + private final ahs thirdPersonLeftHand; + private final Identifier texture; + private final Identifier icon; + private final int id; + + ahu(String var1, String var2, String var3, List var4, List var5, ahs var6, ahs var7) { + this.key = var1; + this.geometryKey = var2 != null && !var2.isEmpty() ? var2 : var1; + this.displayName = var3; + this.variants = var4; + this.holyBones = var5; + this.thirdPersonRightHand = var6; + this.thirdPersonLeftHand = var7; + String var10001 = "evolution"; + Object[] var10003 = new Object[1]; + var10003[0] = var1; + this.texture = Identifier.fromNamespaceAndPath(var10001, String.format("textures/cosmetic/melee/%s.png", var10003)); + var10001 = "evolution"; + var10003 = new Object[1]; + var10003[0] = var1; + this.icon = Identifier.fromNamespaceAndPath(var10001, String.format("textures/cosmetic/melee/slot/%s.png", var10003)); + this.id = ("melee_" + var1).hashCode(); + } + + public String getKey() { + return this.key; + } + + public String getGeometryKey() { + return this.geometryKey; + } + + public String getDisplayName() { + return this.displayName; + } + + public List getVariants() { + return this.variants; + } + + public List getHolyBones() { + return this.holyBones; + } + + public ahs getThirdPersonRightHand() { + return this.thirdPersonRightHand; + } + + public ahs getThirdPersonLeftHand() { + return this.thirdPersonLeftHand; + } + + public Identifier getTexture() { + return this.texture; + } + + public Identifier getIcon() { + return this.icon; + } + + public int getId() { + return this.id; + } + + public String modelResource() { + Object[] var10001 = new Object[1]; + var10001[0] = this.geometryKey; + return String.format("/assets/evolution/cosmetic/melee/%s.geo.json", var10001); + } + + public String animationResource() { + Object[] var10001 = new Object[1]; + var10001[0] = this.geometryKey; + return String.format("/assets/evolution/cosmetic/melee/%s.anim.json", var10001); + } +} diff --git a/src/main/java/defpackage/ahv.java b/src/main/java/defpackage/ahv.java new file mode 100644 index 0000000..bf81bd5 --- /dev/null +++ b/src/main/java/defpackage/ahv.java @@ -0,0 +1,583 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Objects; +import net.minecraft.client.Minecraft; + +public final class ahv { + private static final String INDEX_RESOURCE = "/assets/evolution/cosmetic/melee/index.json"; + private static final String INDEX_ROOT = "melee"; + private static final String FIELD_KEY = "key"; + private static final String FIELD_MODEL = "model"; + private static final String FIELD_NAME = "name"; + private static final String FIELD_VARIANTS = "variants"; + private static final String FIELD_HOLY_BONES = "holyBones"; + private static final String FIELD_SUFFIX = "suffix"; + private static final String FIELD_HIDDEN = "hidden"; + private static final String FIELD_TRANSFORMS = "transforms"; + private static final String FIELD_ROTATION = "rotation"; + private static final String FIELD_TRANSLATION = "translation"; + private static final String FIELD_SCALE = "scale"; + private static final String TRANSFORM_RIGHT_HAND = "thirdperson_righthand"; + private static final String TRANSFORM_LEFT_HAND = "thirdperson_lefthand"; + private static final String INDEX_FAILURE = "Failed to read melee skin index"; + private static final String ENTRY_FAILURE = "Failed to read melee skin entry {}"; + private static final int VECTOR_SIZE = 3; + private static final List SKINS = load(); + private static volatile String equippedKey; + + private ahv() { + } + + public static List all() { + return SKINS; + } + + public static ahu byKey(String var0) { + Iterator var1 = null; + ahu var2 = null; + int var3 = -1816366680; + + while (true) { + switch (var3) { + case -2026511802: + var2 = (ahu)var1.next(); + if (var2.getKey().equals(var0)) { + var3 = 1198640893; + } else { + var3 = 834705801; + } + break; + case -1816366680: + default: + if (var0 == null) { + var3 = 1821329424; + } else { + var3 = -358361002; + } + break; + case -358361002: + var1 = SKINS.iterator(); + var3 = 115945727; + break; + case 115945727: + if (var1.hasNext()) { + var3 = -2026511802; + } else { + var3 = 698078661; + } + break; + case 698078661: + return null; + case 834705801: + var3 = 115945727; + break; + case 1198640893: + return var2; + case 1821329424: + return null; + } + } + } + + public static String equippedKey() { + return equippedKey; + } + + public static ahu equipped() { + return byKey(equippedKey); + } + + public static boolean isEquipped(ahu var0) { + int var2 = 0; + int var1 = -2055899915; + + while (true) { + switch (var1) { + case -2055899915: + default: + if (var0 != null) { + var1 = -1429063972; + } else { + var1 = 1248407165; + } + break; + case -1429063972: + if (var0.getKey().equals(equippedKey)) { + var1 = -1214524532; + } else { + var1 = 1248407165; + } + break; + case -1214524532: + var2 = 1; + var1 = -1136779619; + break; + case -1136779619: + return (boolean)((var2) != 0); + case 1248407165: + var2 = 0; + var1 = -1136779619; + } + } + } + + public static void equip(ahu var0) { + String var2 = null; + int var1 = -589336018; + + while (true) { + switch (var1) { + case -706429076: + var2 = var0.getKey(); + var1 = -45634961; + break; + case -589336018: + default: + if (var0 == null) { + var1 = 1756753239; + } else { + var1 = 2107442325; + } + break; + case -45634961: + applyKey(var2); + return; + case 1756753239: + return; + case 2107442325: + if (isEquipped(var0)) { + var1 = 2113591701; + } else { + var1 = -706429076; + } + break; + case 2113591701: + var2 = null; + var1 = -45634961; + } + } + } + + public static void applyKey(String var0) { + ahu var1 = null; + String var2 = null; + String var4 = null; + int var3 = -1576508076; + + while (true) { + switch (var3) { + case -2051877378: + var2 = var4; + if (Objects.equals(var2, equippedKey)) { + var3 = -302578522; + } else { + var3 = 801176706; + } + break; + case -1576508076: + default: + var1 = byKey(var0); + if (var1 == null) { + var3 = 335241381; + } else { + var3 = -564982570; + } + break; + case -818635928: + sz.INSTANCE.setToggled((boolean)((((901414859 | -901414858) + (901414859 & -901414858))) != 0)); + var3 = 328321728; + break; + case -564982570: + var4 = var1.getKey(); + var3 = -2051877378; + break; + case -302578522: + return; + case -104751578: + ahx.preload(var1); + if (!sz.INSTANCE.isEnabled()) { + var3 = -818635928; + } else { + var3 = 328321728; + } + break; + case 328321728: + aef.persistIfLocal(localName()); + return; + case 335241381: + var4 = null; + var3 = -2051877378; + break; + case 801176706: + equippedKey = var2; + ahl.resetAll(); + if (var1 != null) { + var3 = -104751578; + } else { + var3 = 328321728; + } + } + } + } + + public static void unequip() { + applyKey(null); + } + + public static String localName() { + Minecraft var0 = null; + String var2 = null; + int var1 = -1093142907; + + while (true) { + switch (var1) { + case -2098904238: + var2 = null; + var1 = -183178912; + break; + case -1369185768: + var2 = var0.player.getScoreboardName(); + var1 = -183178912; + break; + case -1093142907: + default: + var0 = Minecraft.getInstance(); + if (var0.player == null) { + var1 = -2098904238; + } else { + var1 = -1369185768; + } + break; + case -183178912: + return var2; + } + } + } + + private static List load() { + try (InputStream var0 = ahv.class.getResourceAsStream("/assets/evolution/cosmetic/melee/index.json")) { + if (var0 == null) { + return List.of(); + } + + JsonObject var1 = JsonParser.parseString(new String(var0.readAllBytes(), StandardCharsets.UTF_8)).getAsJsonObject(); + JsonArray var2 = var1.getAsJsonArray("melee"); + if (var2 == null) { + return List.of(); + } + + ArrayList var3 = new ArrayList(var2.size()); + + for (JsonElement var5 : var2) { + ahu var6 = readSkin(var5.getAsJsonObject()); + if (var6 != null) { + var3.add(var6); + } + } + + return Collections.unmodifiableList(var3); + } catch (Exception var9) { + id.warn( + Cif.COSMETIC, + "Failed to read melee skin index", + var9 + ); + return List.of(); + } + } + + private static ahu readSkin(JsonObject var0) { + String var1 = var0.has("key") + ? var0.get("key").getAsString() + : null; + if (var1 != null && !var1.isEmpty()) { + try { + String var2 = var0.has("name") + ? var0.get("name").getAsString() + : var1; + String var3 = var0.has("model") + ? var0.get("model").getAsString() + : var1; + JsonObject var4 = var0.getAsJsonObject("transforms"); + return new ahu( + var1, + var3, + var2, + readVariants(var0), + readStrings(var0, "holyBones"), + readTransform(var4, "thirdperson_righthand"), + readTransform(var4, "thirdperson_lefthand") + ); + } catch (Exception var5) { + id.warn( + Cif.COSMETIC, + "Failed to read melee skin entry {}", + var1, + var5 + ); + return null; + } + } else { + return null; + } + } + + private static List readVariants(JsonObject var0) { + JsonArray var1 = null; + ArrayList var2 = null; + Iterator var3 = null; + JsonElement var4 = null; + JsonObject var5 = null; + String var6 = null; + ArrayList var7 = null; + JsonArray var8 = null; + Iterator var9 = null; + JsonElement var10 = null; + String var12 = null; + int var11 = 1605351360; + + while (true) { + switch (var11) { + case -1636089892: + var10 = (JsonElement)var9.next(); + var7.add(var10.getAsString()); + var11 = 729825804; + break; + case -1605345892: + return List.of(aht.DEFAULT); + case -1288398666: + var12 = ""; + var11 = 1057982585; + break; + case -1233613564: + var9 = var8.iterator(); + var11 = 729825804; + break; + case -331099870: + if (var1.isEmpty()) { + var11 = -1605345892; + } else { + var11 = -269027884; + } + break; + case -269027884: + var2 = new ArrayList(var1.size()); + var3 = var1.iterator(); + var11 = 1020121319; + break; + case -219026502: + var4 = (JsonElement)var3.next(); + var5 = var4.getAsJsonObject(); + if (var5.has("suffix")) { + var11 = 265068039; + } else { + var11 = -1288398666; + } + break; + case 265068039: + var12 = var5.get("suffix").getAsString(); + var11 = 1057982585; + break; + case 729825804: + if (var9.hasNext()) { + var11 = -1636089892; + } else { + var11 = 1444350729; + } + break; + case 1020121319: + if (var3.hasNext()) { + var11 = -219026502; + } else { + var11 = 1317745555; + } + break; + case 1057982585: + var6 = var12; + var7 = new ArrayList(); + var8 = var5.getAsJsonArray("hidden"); + if (var8 != null) { + var11 = -1233613564; + } else { + var11 = 1444350729; + } + break; + case 1317745555: + return List.copyOf(var2); + case 1444350729: + var2.add(new aht(var6, List.copyOf(var7))); + var11 = 1020121319; + break; + case 1605351360: + default: + var1 = var0.getAsJsonArray("variants"); + if (var1 != null) { + var11 = -331099870; + } else { + var11 = -1605345892; + } + } + } + } + + private static List readStrings(JsonObject var0, String var1) { + JsonArray var2 = null; + ArrayList var3 = null; + Iterator var4 = null; + JsonElement var5 = null; + int var6 = -387052788; + + while (true) { + switch (var6) { + case -1983283851: + var3 = new ArrayList(var2.size()); + var4 = var2.iterator(); + var6 = 1596360595; + break; + case -1484017549: + if (var2.isEmpty()) { + var6 = -284936945; + } else { + var6 = -1983283851; + } + break; + case -387052788: + default: + var2 = var0.getAsJsonArray(var1); + if (var2 != null) { + var6 = -1484017549; + } else { + var6 = -284936945; + } + break; + case -284936945: + return List.of(); + case 169001729: + var5 = (JsonElement)var4.next(); + var3.add(var5.getAsString()); + var6 = 1596360595; + break; + case 1596360595: + if (var4.hasNext()) { + var6 = 169001729; + } else { + var6 = 2005974019; + } + break; + case 2005974019: + return List.copyOf(var3); + } + } + } + + private static ahs readTransform(JsonObject var0, String var1) { + JsonObject var2 = null; + int var3 = -674772475; + + while (true) { + switch (var3) { + case -2142268826: + if (!var0.has(var1)) { + var3 = 373581556; + } else { + var3 = 836843355; + } + break; + case -674772475: + default: + if (var0 != null) { + var3 = -2142268826; + } else { + var3 = 373581556; + } + break; + case 373581556: + return ahs.IDENTITY; + case 836843355: + var2 = var0.getAsJsonObject(var1); + return new ahs( + readVector(var2, "rotation", 0.0F), + readVector(var2, "translation", 0.0F), + readVector(var2, "scale", 1.0F) + ); + } + } + } + + private static float[] readVector(JsonObject var0, String var1, float var2) { + float[] var3 = null; + JsonArray var4 = null; + int var5 = 0; + int var6 = -1253705158; + + while (true) { + switch (var6) { + case -1463595926: + var4 = var0.getAsJsonArray(var1); + var5 = 0; + var6 = -1133554548; + break; + case -1253705158: + default: + float[] var10000 = new float[3]; + var10000[0] = var2; + var10000[1] = var2; + var10000[2] = var2; + var3 = var10000; + if (var0 != null) { + var6 = 1339521305; + } else { + var6 = -900398505; + } + break; + case -1133554548: + if (var5 < (1894484397 | -1894484394) + (1894484397 & -1894484394)) { + var6 = -212875632; + } else { + var6 = 1683736292; + } + break; + case -900398505: + return var3; + case -839118947: + var3[var5] = var4.get(var5).getAsFloat(); + var5++; + var6 = -1133554548; + break; + case -621839298: + if (!var0.get(var1).isJsonArray()) { + var6 = -900398505; + } else { + var6 = -1463595926; + } + break; + case -212875632: + if (var5 < var4.size()) { + var6 = -839118947; + } else { + var6 = 1683736292; + } + break; + case 1339521305: + if (var0.has(var1)) { + var6 = -621839298; + } else { + var6 = -900398505; + } + break; + case 1683736292: + return var3; + } + } + } +} diff --git a/src/main/java/defpackage/ahw.java b/src/main/java/defpackage/ahw.java new file mode 100644 index 0000000..756915a --- /dev/null +++ b/src/main/java/defpackage/ahw.java @@ -0,0 +1,465 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import org.joml.Quaternionf; +import org.joml.Vector3f; + +public final class ahw { + public static final int VERTEX_STRIDE = 8; + public static final int VERTICES_PER_FACE = 4; + static final String BONE_RIGHT_HAND = "righthand_pos"; + static final String BONE_LEFT_HAND = "lefthand_pos"; + static final String BONE_CAMERA = "camera"; + static final String BONE_VIEW_ANCHOR = "idle_view"; + private static final float MODEL_SCALE = 16.0F; + private static final int VECTOR_STRIDE = 3; + private final String[] boneNames; + private final int[] boneParents; + private final float[] bonePivots; + private final float[] boneRestRotation; + private final float[][] boneMeshes; + private final Map boneIndex; + private final Map clips; + private final int rightHandBone; + private final int leftHandBone; + private final int cameraBone; + private final int viewAnchorBone; + + private ahw(String[] var1, int[] var2, float[] var3, float[] var4, float[][] var5, Map var6, Map var7) { + this.boneNames = var1; + this.boneParents = var2; + this.bonePivots = var3; + this.boneRestRotation = var4; + this.boneMeshes = var5; + this.boneIndex = var6; + this.clips = var7; + this.rightHandBone = var6.getOrDefault( + "righthand_pos", + (2092271770 | -2092271771) + (2092271770 & -2092271771) + ); + this.leftHandBone = var6.getOrDefault( + "lefthand_pos", (-543188369 | 543188368) + (-543188369 & 543188368) + ); + this.cameraBone = var6.getOrDefault( + "camera", (513141366 ^ -513141367) + ((513141366 & -513141367) << 1) + ); + this.viewAnchorBone = var6.getOrDefault("idle_view", this.cameraBone); + } + + public int boneCount() { + return this.boneNames.length; + } + + public int parentOf(int var1) { + return this.boneParents[var1]; + } + + public float pivotX(int var1) { + return this.bonePivots[var1 * (3)]; + } + + public float pivotY(int var1) { + return this.bonePivots[var1 * 4]; + } + + public float pivotZ(int var1) { + return this.bonePivots[var1 * 5]; + } + + public float restRotationX(int var1) { + return this.boneRestRotation[var1 * (3)]; + } + + public float restRotationY(int var1) { + return this.boneRestRotation[var1 * 4]; + } + + public float restRotationZ(int var1) { + return this.boneRestRotation[var1 * 5]; + } + + public float[] meshOf(int var1) { + return this.boneMeshes[var1]; + } + + public Map getBoneIndex() { + return this.boneIndex; + } + + public ahq clip(String var1) { + return this.clips.get(var1); + } + + public boolean hasClip(String var1) { + return this.clips.containsKey(var1); + } + + public int getRightHandBone() { + return this.rightHandBone; + } + + public int getLeftHandBone() { + return this.leftHandBone; + } + + public int getCameraBone() { + return this.cameraBone; + } + + public int getViewAnchorBone() { + return this.viewAnchorBone; + } + + public void markHidden(List var1, boolean[] var2) { + this.markBranches(var1, var2); + } + + public boolean markBranches(List var1, boolean[] var2) { + Arrays.fill(var2, (boolean)((((-1650127215 ^ 1650127215) + ((-1650127215 & 1650127215) << 1))) != 0)); + if (var1.isEmpty()) { + return (boolean)(((0)) != 0); + } + + int var3 = 0; + + for (String var5 : var1) { + Integer var6 = this.boneIndex.get(var5); + if (var6 != null) { + var2[var6] = (boolean)(((1)) != 0); + var3 = 1; + } + } + + if (var3 == 0) { + return (boolean)(((0)) != 0); + } + + for (int var7 = 0; var7 < var2.length; var7++) { + int var8 = this.boneParents[var7]; + if (var8 >= 0 && var2[var8]) { + var2[var7] = (boolean)(((1)) != 0); + } + } + + return (boolean)(((1)) != 0); + } + + static ahw bake(aif var0, String var1) { + ArrayList var2 = new ArrayList(); + + for (aig var4 : var0.roots) { + collect(var4, var2); + } + + int var12 = var2.size(); + String[] var13 = new String[var12]; + int[] var5 = new int[var12]; + float[] var6 = new float[var12 * (3)]; + float[] var7 = new float[var12 * (3)]; + float[][] var8 = new float[var12][]; + HashMap var9 = new HashMap(var12); + + for (int var10 = 0; var10 < var12; var10++) { + var9.put(((aig)var2.get(var10)).name, var10); + } + + for (int var14 = 0; var14 < var12; var14++) { + aig var11 = (aig)var2.get(var14); + var13[var14] = var11.name; + var5[var14] = var11.parent == null + ? -1: var9.getOrDefault(var11.parent.name, (1226890724 | -1226890725) + (1226890724 & -1226890725)); + var6[var14 * (3)] = var11.pivotX; + var6[var14 * 4] = var11.pivotY; + var6[var14 * 5] = var11.pivotZ; + var7[var14 * (3)] = var11.getRotX(); + var7[var14 * 4] = var11.getRotY(); + var7[var14 * 5] = var11.getRotZ(); + var8[var14] = bakeMesh(var11); + } + + Map var15 = ahi.parse(var1, var9); + return new ahw(var13, var5, var6, var7, var8, Map.copyOf(var9), var15); + } + + private static void collect(aig var0, List var1) { + Iterator var2 = null; + aig var3 = null; + int var4 = -285045040; + + while (true) { + switch (var4) { + case -1713956097: + return; + case -285045040: + default: + var1.add(var0); + var2 = var0.children.iterator(); + var4 = 1901795925; + break; + case 1725309660: + var3 = (aig)var2.next(); + collect(var3, var1); + var4 = 1901795925; + break; + case 1901795925: + if (var2.hasNext()) { + var4 = 1725309660; + } else { + var4 = -1713956097; + } + } + } + } + + private static float[] bakeMesh(aig var0) { + int var1 = 0; + + for (aie var3 : var0.cubes) { + aij[] var4 = var3.faces; + int var5 = var4.length; + + for (int var6 = 0; var6 < var5; var6++) { + aij var7 = var4[var6]; + if (var7 != null) { + var1 += 4; + } + } + } + + if (var1 == 0) { + return null; + } + + float[] var22 = new float[var1 * (8)]; + Quaternionf var23 = new Quaternionf(); + Vector3f var24 = new Vector3f(); + int var25 = 0; + + for (aie var27 : var0.cubes) { + var23.rotationZ(var27.rotation.getZ()).rotateY(var27.rotation.getY()).rotateX(var27.rotation.getX()); + float var8 = var27.pivot.getX() / 16.0F; + float var9 = var27.pivot.getY() / 16.0F; + float var10 = var27.pivot.getZ() / 16.0F; + aij[] var11 = var27.faces; + int var12 = var11.length; + + for (int var13 = 0; var13 < var12; var13++) { + aij var14 = var11[var13]; + if (var14 != null) { + var24.set(normalX(var27, var14), normalY(var27, var14), normalZ(var27, var14)); + var23.transform(var24); + float var15 = var24.x; + float var16 = var24.y; + float var17 = var24.z; + aik[] var18 = var14.corners; + int var19 = var18.length; + + for (int var20 = 0; var20 < var19; var20++) { + aik var21 = var18[var20]; + var24.set(var21.position.getX() - var8, var21.position.getY() - var9, var21.position.getZ() - var10); + var23.transform(var24); + var22[var25] = var24.x + var8; + var22[var25 + 1] = var24.y + var9; + var22[var25 + 2] = var24.z + var10; + var22[var25 + 3] = var21.u; + var22[var25 + 4] = var21.v; + var22[var25 + 5] = var15; + var22[var25 + 6] = var16; + var22[var25 + 7] = var17; + var25 += 8; + } + } + } + } + + return var22; + } + + private static float normalX(aie var0, aij var1) { + float var2 = 0.0F; + int var3 = 0; + int var5 = 0; + float var6 = 0.0F; + int var4 = -1439388177; + + while (true) { + switch (var4) { + case -1684192113: + var6 = -var2; + var4 = 855774561; + break; + case -1611026852: + var6 = var2; + var4 = 855774561; + break; + case -1445985522: + var5 = 0; + var4 = 1115312686; + break; + case -1439388177: + default: + var2 = var1.normal.getX(); + if (var0.size.getY() != 0.0F) { + var4 = 141732098; + } else { + var4 = -841816668; + } + break; + case -841816668: + var5 = 1; + var4 = 1115312686; + break; + case -599820463: + if (var2 < 0.0F) { + var4 = -1684192113; + } else { + var4 = -1611026852; + } + break; + case 141732098: + if (var0.size.getZ() == 0.0F) { + var4 = -841816668; + } else { + var4 = -1445985522; + } + break; + case 855774561: + return var6; + case 1115312686: + var3 = var5; + if (var3 != 0) { + var4 = -599820463; + } else { + var4 = -1611026852; + } + } + } + } + + private static float normalY(aie var0, aij var1) { + float var2 = 0.0F; + int var3 = 0; + int var5 = 0; + float var6 = 0.0F; + int var4 = 1873463499; + + while (true) { + switch (var4) { + case -2115971933: + var6 = -var2; + var4 = -64833808; + break; + case -2113001022: + var5 = 0; + var4 = 686514911; + break; + case -1842574910: + if (var0.size.getZ() == 0.0F) { + var4 = -1043268554; + } else { + var4 = -2113001022; + } + break; + case -1043268554: + var5 = 1; + var4 = 686514911; + break; + case -444000415: + if (var2 < 0.0F) { + var4 = -2115971933; + } else { + var4 = 1518426162; + } + break; + case -64833808: + return var6; + case 686514911: + var3 = var5; + if (var3 != 0) { + var4 = -444000415; + } else { + var4 = 1518426162; + } + break; + case 1518426162: + var6 = var2; + var4 = -64833808; + break; + case 1873463499: + default: + var2 = var1.normal.getY(); + if (var0.size.getX() != 0.0F) { + var4 = -1842574910; + } else { + var4 = -1043268554; + } + } + } + } + + private static float normalZ(aie var0, aij var1) { + float var2 = 0.0F; + int var3 = 0; + int var5 = 0; + float var6 = 0.0F; + int var4 = 161664968; + + while (true) { + switch (var4) { + case -1854656178: + return var6; + case -1598343622: + var5 = 0; + var4 = 1462943528; + break; + case -1173472019: + if (var2 < 0.0F) { + var4 = 694310239; + } else { + var4 = -826003726; + } + break; + case -826003726: + var6 = var2; + var4 = -1854656178; + break; + case -507275045: + if (var0.size.getY() == 0.0F) { + var4 = 485834418; + } else { + var4 = -1598343622; + } + break; + case 161664968: + default: + var2 = var1.normal.getZ(); + if (var0.size.getX() != 0.0F) { + var4 = -507275045; + } else { + var4 = 485834418; + } + break; + case 485834418: + var5 = 1; + var4 = 1462943528; + break; + case 694310239: + var6 = -var2; + var4 = -1854656178; + break; + case 1462943528: + var3 = var5; + if (var3 != 0) { + var4 = -1173472019; + } else { + var4 = -826003726; + } + } + } + } +} diff --git a/src/main/java/defpackage/ahx.java b/src/main/java/defpackage/ahx.java new file mode 100644 index 0000000..b25d45f --- /dev/null +++ b/src/main/java/defpackage/ahx.java @@ -0,0 +1,209 @@ +package defpackage; + +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +public final class ahx { + private static final String LOAD_FAILURE = "Failed to load melee skin model {}"; + private static final String LOADER_THREAD = "evo-melee-loader"; + private static final Map CACHE = new ConcurrentHashMap<>(); + private static final Set LOADING = ConcurrentHashMap.newKeySet(); + + private ahx() { + } + + public static ahw get(ahu var0) { + ahw var1 = null; + int var2 = -258753983; + + while (true) { + switch (var2) { + case -1606657763: + var1 = CACHE.get(var0.getGeometryKey()); + if (var1 == null) { + var2 = 762745716; + } else { + var2 = -710468003; + } + break; + case -710468003: + return var1; + case -258753983: + default: + if (var0 == null) { + var2 = 317794697; + } else { + var2 = -1606657763; + } + break; + case 317794697: + return null; + case 762745716: + preload(var0); + var2 = -710468003; + } + } + } + + public static aif definition(ahu var0) { + if (var0 == null) { + return null; + } + + try { + String var1 = read(var0.modelResource()); + return var1 == null ? null : aid.parse(var1); + } catch (Exception var2) { + id.warn( + Cif.COSMETIC, + "Failed to load melee skin model {}", + var0.getGeometryKey(), + var2 + ); + return null; + } + } + + public static void preload(ahu var0) { + Thread var1 = null; + int var2 = -256562674; + + while (true) { + switch (var2) { + case -1644741516: + if (!LOADING.add(var0.getGeometryKey())) { + var2 = -1497001820; + } else { + var2 = 1100122707; + } + break; + case -1497001820: + return; + case -256562674: + default: + if (var0 != null) { + var2 = 1633572197; + } else { + var2 = -1497001820; + } + break; + case 1100122707: + var1 = new Thread( + () -> load(var0), "evo-melee-loader" + ); + var1.setDaemon((boolean)((((736660032 ^ -736660031) + ((736660032 & -736660031) << 1))) != 0)); + var1.start(); + return; + case 1633572197: + if (!CACHE.containsKey(var0.getGeometryKey())) { + var2 = -1644741516; + } else { + var2 = -1497001820; + } + } + } + } + + private static void load(ahu var0) { + try { + String var1 = read(var0.modelResource()); + String var2 = read(var0.animationResource()); + if (var1 == null || var2 == null) { + return; + } + + aif var3 = aid.parse(var1); + if (var3 != null) { + CACHE.put(var0.getGeometryKey(), ahw.bake(var3, var2)); + evict(var0.getGeometryKey()); + return; + } + } catch (Exception var7) { + id.warn( + Cif.COSMETIC, + "Failed to load melee skin model {}", + var0.getGeometryKey(), + var7 + ); + return; + } finally { + LOADING.remove(var0.getGeometryKey()); + } + } + + private static void evict(String var0) { + ahu var1 = null; + String var2 = null; + Iterator var3 = null; + String var4 = null; + String var6 = null; + int var5 = -1883566975; + + while (true) { + switch (var5) { + case -1922702870: + if (!var4.equals(var2)) { + var5 = 472248985; + } else { + var5 = -1308803263; + } + break; + case -1883566975: + default: + var1 = ahv.equipped(); + if (var1 == null) { + var5 = -189685436; + } else { + var5 = -299943440; + } + break; + case -1465370833: + var2 = var6; + var3 = CACHE.keySet().iterator(); + var5 = -14074146; + break; + case -1419550367: + var4 = (String)var3.next(); + if (!var4.equals(var0)) { + var5 = -1922702870; + } else { + var5 = -1308803263; + } + break; + case -1308803263: + var5 = -14074146; + break; + case -420773205: + return; + case -299943440: + var6 = var1.getGeometryKey(); + var5 = -1465370833; + break; + case -189685436: + var6 = null; + var5 = -1465370833; + break; + case -14074146: + if (var3.hasNext()) { + var5 = -1419550367; + } else { + var5 = -420773205; + } + break; + case 472248985: + var3.remove(); + var5 = -1308803263; + } + } + } + + private static String read(String var0) throws Exception { + try (InputStream var1 = ahx.class.getResourceAsStream(var0)) { + return var1 == null ? null : new String(var1.readAllBytes(), StandardCharsets.UTF_8); + } + } +} diff --git a/src/main/java/defpackage/ahy.java b/src/main/java/defpackage/ahy.java new file mode 100644 index 0000000..0ea5e01 --- /dev/null +++ b/src/main/java/defpackage/ahy.java @@ -0,0 +1,57 @@ +package defpackage; + +import org.joml.Matrix3f; +import org.joml.Matrix4f; + +final class ahy { + Matrix4f[] world = new Matrix4f[0]; + Matrix4f[] combined = new Matrix4f[0]; + Matrix3f[] normals = new Matrix3f[0]; + boolean[] visible = new boolean[0]; + + ahy() { + } + + void ensureCapacity(int var1) { + int var2 = 0; + int var3 = -239590410; + + while (true) { + switch (var3) { + case -2096095921: + return; + case -1233011302: + return; + case -612815775: + this.world[var2] = new Matrix4f(); + this.combined[var2] = new Matrix4f(); + this.normals[var2] = new Matrix3f(); + var2++; + var3 = 548071108; + break; + case -239590410: + default: + if (this.world.length >= var1) { + var3 = -2096095921; + } else { + var3 = 1388641061; + } + break; + case 548071108: + if (var2 < var1) { + var3 = -612815775; + } else { + var3 = -1233011302; + } + break; + case 1388641061: + this.world = new Matrix4f[var1]; + this.combined = new Matrix4f[var1]; + this.normals = new Matrix3f[var1]; + this.visible = new boolean[var1]; + var2 = 0; + var3 = 548071108; + } + } + } +} diff --git a/src/main/java/defpackage/ahz.java b/src/main/java/defpackage/ahz.java new file mode 100644 index 0000000..8a6e20f --- /dev/null +++ b/src/main/java/defpackage/ahz.java @@ -0,0 +1,887 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.math.Axis; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.player.AvatarRenderer; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.Identifier; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.entity.player.PlayerModelPart; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.joml.Matrix3f; +import org.joml.Matrix4f; +import org.joml.Quaternionf; +import org.joml.Vector3f; + +public final class ahz { + private static final ahz INSTANCE = new ahz(); + private static final float MODEL_SCALE = 16.0F; + private static final float MODEL_FLIP_DEGREES = 180.0F; + private static final float DEGREES_TO_RADIANS = (float) (Math.PI / 180.0); + private static final float ARM_ALIGN_X = 0.0625F; + private static final float ARM_ALIGN_Y = 0.5F; + private static final String THIRD_PERSON_ANCHOR = "thirdperson_hand"; + private static final float HAND_OFFSET_X = 1.0F; + private static final float HAND_OFFSET_Y = 2.0F; + private static final float HAND_OFFSET_Z = -10.0F; + private static final float EQUIP_DROP = -0.6F; + private static final float MIRROR_SIGN = -1.0F; + private static final float LEFT_ARM_SIGN = -1.0F; + private static final float VANILLA_ARM_ORIGIN_X = 0.64F; + private static final float VANILLA_ARM_ORIGIN_Y = -0.6F; + private static final float VANILLA_ARM_ORIGIN_Z = -0.72F; + private static final float VANILLA_ARM_YAW_DEGREES = 45.0F; + private static final float VANILLA_ARM_SHOULDER_X = -1.0F; + private static final float VANILLA_ARM_SHOULDER_Y = 3.6F; + private static final float VANILLA_ARM_SHOULDER_Z = 3.5F; + private static final float VANILLA_ARM_ROLL_DEGREES = 120.0F; + private static final float VANILLA_ARM_PITCH_DEGREES = 200.0F; + private static final float VANILLA_ARM_TWIST_DEGREES = -135.0F; + private static final float VANILLA_ARM_EXTENSION_X = 5.6F; + private static final float VANILLA_ITEM_ORIGIN_X = 0.56F; + private static final float VANILLA_ITEM_ORIGIN_Y = -0.52F; + private static final float VANILLA_ITEM_ORIGIN_Z = -0.72F; + private static final int FACE_STRIDE = 32; + private static final Matrix4f OFF_HAND_ITEM_ALIGN = buildOffHandItemAlign(); + private final ahy primaryBones = new ahy(); + private final ahy secondaryBones = new ahy(); + private boolean[] holy = new boolean[0]; + private String holyKey; + private boolean holyPresent; + private boolean primaryClaimed; + private boolean handMirrored; + private ahw handModel; + private ItemStack handItem; + private float handItemEquipProgress; + private final Matrix4f local = new Matrix4f(); + private final Matrix4f armPose = new Matrix4f(); + private final Matrix3f boneNormal = new Matrix3f(); + private final Quaternionf rotation = new Quaternionf(); + private final Vector3f normal = new Vector3f(); + + private ahz() { + } + + public static ahz getInstance() { + return INSTANCE; + } + + private static Matrix4f buildOffHandItemAlign() { + Matrix4f var0 = new Matrix4f() + .translate(-0.64F, -0.6F, -0.72F) + .rotate(Axis.YP.rotationDegrees(-45.0F)) + .translate(1.0F, 3.6F, 3.5F) + .rotate(Axis.ZP.rotationDegrees(-120.0F)) + .rotate(Axis.XP.rotationDegrees(200.0F)) + .rotate(Axis.YP.rotationDegrees(135.0F)) + .translate(-5.6F, 0.0F, 0.0F); + Matrix4f var1 = new Matrix4f().translate(-0.56F, -0.52F, -0.72F); + return var0.invert().mul(var1); + } + + public void beginHands() { + this.handModel = null; + this.handItem = null; + this.primaryClaimed = (boolean)(((0)) != 0); + } + + public boolean deferHandItem(ItemStack var1, float var2) { + ahu var3 = null; + int var4 = -1510232357; + + while (true) { + switch (var4) { + case -1510232357: + default: + var3 = ahv.equipped(); + if (var3 != null) { + var4 = 549516863; + } else { + var4 = 161861656; + } + break; + case -696686466: + this.handItem = var1; + this.handItemEquipProgress = var2; + return (boolean)(((1)) != 0); + case 161861656: + return (boolean)(((0)) != 0); + case 549516863: + if (ahx.get(var3) == null) { + var4 = 161861656; + } else { + var4 = -696686466; + } + } + } + } + + public void flushHandItem(AbstractClientPlayer var1, PoseStack var2, SubmitNodeCollector var3, int var4) { + ItemStack var5 = null; + ahw var6 = null; + int var7 = 0; + ItemDisplayContext var8 = null; + ItemDisplayContext var10 = null; + int var9 = 139627848; + + while (true) { + switch (var9) { + case -1861762100: + this.applyCamera(var6, ahl.getInstance(), var2); + this.applyViewAnchor(var6, var2); + var2.mulPose(this.armPose.set(this.primaryBones.world[var7]).translate(0.0625F, 0.5F, 0.0F).mul(OFF_HAND_ITEM_ALIGN)); + if (this.handMirrored) { + var9 = -158271841; + } else { + var9 = -1719908508; + } + break; + case -1800515766: + var10 = ItemDisplayContext.FIRST_PERSON_LEFT_HAND; + var9 = 292960470; + break; + case -1719908508: + if (this.handMirrored) { + var9 = 1891863451; + } else { + var9 = -1800515766; + } + break; + case -1306089687: + if (var6 == null) { + var9 = 1504128395; + } else { + var9 = 601734104; + } + break; + case -991300495: + if (var7 >= this.primaryBones.world.length) { + var9 = -314412252; + } else { + var9 = -154257190; + } + break; + case -314412252: + return; + case -158271841: + var2.scale(-1.0F, 1.0F, 1.0F); + var9 = -1719908508; + break; + case -154257190: + var2.pushPose(); + var2.translate(0.0F, this.handItemEquipProgress * -0.6F, 0.0F); + if (this.handMirrored) { + var9 = 274187430; + } else { + var9 = -1861762100; + } + break; + case 139627848: + default: + var5 = this.handItem; + var6 = this.handModel; + this.handItem = null; + if (var5 != null) { + var9 = -1306089687; + } else { + var9 = 1504128395; + } + break; + case 274187430: + var2.scale(-1.0F, 1.0F, 1.0F); + var9 = -1861762100; + break; + case 292960470: + var8 = var10; + Minecraft.getInstance().gameRenderer.itemInHandRenderer.renderItem(var1, var5, var8, var2, var3, var4); + var2.popPose(); + return; + case 601734104: + var7 = var6.getLeftHandBone(); + if (var7 >= 0) { + var9 = -991300495; + } else { + var9 = -314412252; + } + break; + case 1504128395: + return; + case 1891863451: + var10 = ItemDisplayContext.FIRST_PERSON_RIGHT_HAND; + var9 = 292960470; + } + } + } + + public boolean renderFirstPerson(AbstractClientPlayer var1, InteractionHand var2, PoseStack var3, SubmitNodeCollector var4, int var5, float var6) { + ahu var7 = null; + Object var8 = null; + int var9 = 0; + int var10 = 0; + ahl var11 = null; + ahw var12 = null; + ahy var13 = null; + HumanoidArm var15 = null; + int var16 = 0; + int var17 = 0; + ahl var18 = null; + ahy var19 = null; + int var14 = 965424520; + + while (true) { + switch (var14) { + case -1750589254: + var19 = this.primaryBones; + var14 = 1149096496; + break; + case -1615850419: + var16 = 0; + var14 = 1338580026; + break; + case -1086386272: + this.applyCamera(var12, var11, var3); + this.applyViewAnchor(var12, var3); + this.buildWorld(var13, var12, var11.pose(), var11.hidden()); + this.submitGeometry(var13, var12, var7, var3, var4, var5, (boolean)((var9) != 0)); + if (var10 != 0) { + var14 = 574335969; + } else { + var14 = 767821903; + } + break; + case -910574014: + var10 = var17; + if (var10 != 0) { + var14 = -351420040; + } else { + var14 = 756624297; + } + break; + case -351420040: + var18 = ahl.getInstance(); + var14 = 866360340; + break; + case -203745654: + var16 = 1; + var14 = 1338580026; + break; + case -203260295: + var19 = this.secondaryBones; + var14 = 1149096496; + break; + case -93420627: + return (boolean)(((1)) != 0); + case -26433450: + var15 = var1.getMainArm().getOpposite(); + var14 = 1125856712; + break; + case 126639614: + return (boolean)(((0)) != 0); + case 241540560: + var3.scale(-1.0F, 1.0F, 1.0F); + var14 = -1086386272; + break; + case 305364309: + var17 = 1; + var14 = -910574014; + break; + case 405122146: + return (boolean)(((0)) != 0); + case 468761889: + if (var2 == InteractionHand.MAIN_HAND) { + var14 = 971660866; + } else { + var14 = -26433450; + } + break; + case 574335969: + this.submitArm( + var13, var12, var12.getRightHandBone(), (boolean)((((1)) != 0)), (boolean)((var9) != 0), var1, var3, var4, var5 + ); + this.submitArm( + var13, + var12, + var12.getLeftHandBone(), + (boolean)(((0)) != 0), + (boolean)((var9) != 0), + var1, + var3, + var4, + var5 + ); + var14 = 767821903; + break; + case 616324175: + this.primaryClaimed = (boolean)(((1)) != 0); + this.handMirrored = (boolean)((var9) != 0); + this.handModel = var12; + var14 = -93420627; + break; + case 756624297: + var18 = ahl.offHand(); + var14 = 866360340; + break; + case 767821903: + var3.popPose(); + if (var10 != 0) { + var14 = 616324175; + } else { + var14 = -93420627; + } + break; + case 866360340: + var11 = var18; + var12 = var11.prepare(var1, var2); + if (var12 == null) { + var14 = 126639614; + } else { + var14 = 1398498088; + } + break; + case 965424520: + default: + var7 = ahv.equipped(); + if (var7 == null) { + var14 = 405122146; + } else { + var14 = 468761889; + } + break; + case 971660866: + var15 = var1.getMainArm(); + var14 = 1125856712; + break; + case 1125856712: + var8 = var15; + if (var8 == HumanoidArm.LEFT) { + var14 = -203745654; + } else { + var14 = -1615850419; + } + break; + case 1149096496: + var13 = var19; + var3.pushPose(); + var3.translate(0.0F, var6 * -0.6F, 0.0F); + if (var9 != 0) { + var14 = 241540560; + } else { + var14 = -1086386272; + } + break; + case 1338580026: + var9 = var16; + if (!this.primaryClaimed) { + var14 = 305364309; + } else { + var14 = 1955136681; + } + break; + case 1398498088: + if (var10 != 0) { + var14 = -1750589254; + } else { + var14 = -203260295; + } + break; + case 1955136681: + var17 = 0; + var14 = -910574014; + } + } + } + + public boolean renderThirdPerson(AbstractClientPlayer var1, HumanoidArm var2, PoseStack var3, SubmitNodeCollector var4, int var5) { + ahu var6 = ahv.equipped(); + ahw var7 = ahx.get(var6); + if (var6 != null && var7 != null) { + ahs var8 = var2 == HumanoidArm.RIGHT ? var6.getThirdPersonRightHand() : var6.getThirdPersonLeftHand(); + var3.pushPose(); + var3.translate((var2 == HumanoidArm.LEFT ? -1.0F : 1.0F) / 16.0F, 0.125F, -0.625F); + var3.translate( + var8.translation()[0] / 16.0F, + var8.translation()[1] / 16.0F, + var8.translation()[2] / 16.0F + ); + var3.mulPose(Axis.XP.rotationDegrees(var8.rotation()[0])); + var3.mulPose(Axis.YP.rotationDegrees(var8.rotation()[1])); + var3.mulPose(Axis.ZP.rotationDegrees(var8.rotation()[2])); + var3.scale( + var8.scale()[0], + var8.scale()[1], + var8.scale()[2] + ); + var3.mulPose(Axis.ZP.rotationDegrees(180.0F)); + Integer var9 = var7.getBoneIndex().get("thirdperson_hand"); + if (var9 != null) { + var3.translate(-var7.pivotX(var9) / 16.0F, -var7.pivotY(var9) / 16.0F, -var7.pivotZ(var9) / 16.0F); + } + + this.buildRest(this.secondaryBones, var7); + this.submitGeometry(this.secondaryBones, var7, var6, var3, var4, var5, (boolean)((((897491700 | -897491700) + (897491700 & -897491700))) != 0)); + var3.popPose(); + return (boolean)(((1)) != 0); + } else { + return (boolean)(((0)) != 0); + } + } + + private void applyCamera(ahw var1, ahl var2, PoseStack var3) { + int var4 = 0; + float[] var5 = null; + int var6 = 0; + int var7 = -8162003; + + while (true) { + switch (var7) { + case -2057359170: + var5 = var2.pose(); + var6 = var4 * (9); + if (var6 + (-1728978845 ^ 1728978854) + ((-1728978845 & 1728978854) << 1) > var5.length) { + var7 = -1826391485; + } else { + var7 = 1028623516; + } + break; + case -1826391485: + return; + case -1249363162: + return; + case -8162003: + default: + var4 = var1.getCameraBone(); + if (var4 < 0) { + var7 = -1249363162; + } else { + var7 = -2057359170; + } + break; + case 1028623516: + var3.translate( + var5[var6 + 3] / 16.0F, + -var5[var6 + 4] + / 16.0F, + -var5[var6 + 5] + / 16.0F + ); + var3.mulPose( + Axis.ZP + .rotationDegrees( + -var5[var6 + 2] + ) + ); + var3.mulPose( + Axis.YP + .rotationDegrees( + var5[var6 + 1] + ) + ); + var3.mulPose(Axis.XP.rotationDegrees(var5[var6 + 0])); + return; + } + } + } + + private void applyViewAnchor(ahw var1, PoseStack var2) { + int var3 = 0; + int var4 = -1998016630; + + while (true) { + switch (var4) { + case -1998016630: + default: + var3 = var1.getViewAnchorBone(); + if (var3 < 0) { + var4 = 1930230903; + } else { + var4 = -132051936; + } + break; + case -132051936: + var2.translate(-var1.pivotX(var3) / 16.0F, -var1.pivotY(var3) / 16.0F, -var1.pivotZ(var3) / 16.0F); + return; + case 1930230903: + return; + } + } + } + + private void buildRest(ahy var1, ahw var2) { + int var3 = 0; + int var4 = 0; + int var5 = 926638488; + + while (true) { + switch (var5) { + case -1632686199: + var1.visible[var4] = (boolean)(((1)) != 0); + this.local.identity(); + this.applyPivotRotation(var2, var4, var2.restRotationX(var4), var2.restRotationY(var4), var2.restRotationZ(var4), 1.0F, 1.0F, 1.0F); + this.compose(var1, var2, var4); + var4++; + var5 = -1471498610; + break; + case -1471498610: + if (var4 < var3) { + var5 = -1632686199; + } else { + var5 = 1335072976; + } + break; + case 926638488: + default: + var3 = var2.boneCount(); + var1.ensureCapacity(var3); + var4 = 0; + var5 = -1471498610; + break; + case 1335072976: + this.hideHands(var1, var2); + return; + } + } + } + + private void buildWorld(ahy var1, ahw var2, float[] var3, boolean[] var4) { + int var5 = var2.boneCount(); + var1.ensureCapacity(var5); + + for (int var6 = 0; var6 < var5; var6++) { + var1.visible[var6] = (boolean)(((var6 < var4.length && var4[var6] + ? 0: (1207593174 | -1207593173) + (1207593174 & -1207593173))) != 0); + int var7 = var6 * (9); + this.local.identity(); + this.local + .translate( + -var3[var7 + 3] / 16.0F, + var3[var7 + 4] / 16.0F, + var3[var7 + 5] / 16.0F + ); + this.applyPivotRotation( + var2, + var6, + var2.restRotationX(var6) - var3[var7 + 0] * (float) (Math.PI / 180.0), + var2.restRotationY(var6) + - var3[var7 + 1] + * (float) (Math.PI / 180.0), + var2.restRotationZ(var6) + + var3[var7 + 2] + * (float) (Math.PI / 180.0), + var3[var7 + 6], + var3[var7 + 7], + var3[var7 + 8] + ); + this.compose(var1, var2, var6); + } + + this.hideHands(var1, var2); + } + + private void applyPivotRotation(ahw var1, int var2, float var3, float var4, float var5, float var6, float var7, float var8) { + float var9 = var1.pivotX(var2) / 16.0F; + float var10 = var1.pivotY(var2) / 16.0F; + float var11 = var1.pivotZ(var2) / 16.0F; + this.local.translate(var9, var10, var11); + this.rotation.rotationZ(var5).rotateY(var4).rotateX(var3); + this.local.rotate(this.rotation); + this.local.scale(var6, var7, var8); + this.local.translate(-var9, -var10, -var11); + } + + private void compose(ahy var1, ahw var2, int var3) { + int var4 = 0; + int var5 = -641478316; + + while (true) { + switch (var5) { + case -641478316: + default: + var4 = var2.parentOf(var3); + if (var4 < 0) { + var5 = -488840266; + } else { + var5 = 2117444031; + } + break; + case -488840266: + var1.world[var3].set(this.local); + var5 = 854883820; + break; + case 854883820: + return; + case 2117444031: + var1.world[var3].set(var1.world[var4]).mul(this.local); + var5 = 854883820; + } + } + } + + private void hideHands(ahy var1, ahw var2) { + int var3 = 1496354771; + + while (true) { + switch (var3) { + case -857094575: + return; + case -543823509: + if (var2.getLeftHandBone() >= 0) { + var3 = 595789629; + } else { + var3 = -857094575; + } + break; + case 316146290: + var1.visible[var2.getRightHandBone()] = (boolean)(((0)) != 0); + var3 = -543823509; + break; + case 595789629: + var1.visible[var2.getLeftHandBone()] = (boolean)(((0)) != 0); + var3 = -857094575; + break; + case 1496354771: + default: + if (var2.getRightHandBone() >= 0) { + var3 = 316146290; + } else { + var3 = -543823509; + } + } + } + } + + private void submitGeometry(ahy var1, ahw var2, ahu var3, PoseStack var4, SubmitNodeCollector var5, int var6, boolean var7) { + Identifier var8 = null; + int var9 = 1331619597; + + while (true) { + switch (var9) { + case -2091331155: + this.submitPass(var1, var2, ahr.holy(var8), var4, var5, var6, (boolean)(((1)) != 0), var7); + var9 = 275024149; + break; + case 275024149: + return; + case 1331619597: + default: + this.prepareHolyBones(var2, var3); + var8 = var3.getTexture(); + this.submitPass( + var1, var2, RenderTypes.entityTranslucent(var8), var4, var5, var6, (boolean)(((0)) != 0), var7 + ); + if (this.holyPresent) { + var9 = -2091331155; + } else { + var9 = 275024149; + } + } + } + } + + private void prepareHolyBones(ahw var1, ahu var2) { + int var3 = 0; + int var4 = 869557889; + + while (true) { + switch (var4) { + case -1112913540: + return; + case -759274080: + if (this.holy.length == var3) { + var4 = -1112913540; + } else { + var4 = 647701181; + } + break; + case 647701181: + this.holyKey = var2.getKey(); + this.holy = new boolean[var3]; + this.holyPresent = var1.markBranches(var2.getHolyBones(), this.holy); + return; + case 869557889: + default: + var3 = var1.boneCount(); + if (var2.getKey().equals(this.holyKey)) { + var4 = -759274080; + } else { + var4 = 647701181; + } + } + } + } + + private void submitPass(ahy var1, ahw var2, RenderType var3, PoseStack var4, SubmitNodeCollector var5, int var6, boolean var7, boolean var8) { + int var9 = var2.boneCount(); + var5.submitCustomGeometry(var4, var3, (var7x, var8x) -> { + int var9x = 0; + float[] var10 = null; + Matrix4f var11 = null; + Matrix3f var12 = null; + int var13 = 0; + int var14 = 0; + int var15 = 1672028678; + + while (true) { + switch (var15) { + case -1450534642: + if (var1.visible[var9x]) { + var15 = -91533576; + } else { + var15 = -1319078462; + } + break; + case -1443301427: + var15 = -1319078462; + break; + case -1319078462: + var9x++; + var15 = -849133923; + break; + case -915884061: + if (var13 < var10.length) { + var15 = -228036530; + } else { + var15 = -1443301427; + } + break; + case -849133923: + if (var9x < var9) { + var15 = 797407809; + } else { + var15 = 853112160; + } + break; + case -228036530: + var14 = 3; + var15 = 369734440; + break; + case -91533576: + if (this.holy[var9x] != var7) { + var15 = 1440308076; + } else { + var15 = 1934129606; + } + break; + case 221563892: + this.submitVertex(var8x, var11, var12, var10, var13 + var14 * (8), var6); + var14--; + var15 = 369734440; + break; + case 369734440: + if (var14 >= 0) { + var15 = 221563892; + } else { + var15 = 1248136413; + } + break; + case 383693883: + if (var13 < var10.length) { + var15 = 1647558749; + } else { + var15 = -1319078462; + } + break; + case 797407809: + var10 = var2.meshOf(var9x); + if (var10 != null) { + var15 = -1450534642; + } else { + var15 = -1319078462; + } + break; + case 853112160: + return; + case 1023176334: + var13 = 0; + var15 = -915884061; + break; + case 1248136413: + var13 += 32; + var15 = -915884061; + break; + case 1440308076: + var15 = -1319078462; + break; + case 1647558749: + this.submitVertex(var8x, var11, var12, var10, var13, var6); + var13 += 8; + var15 = 383693883; + break; + case 1672028678: + default: + var9x = 0; + var15 = -849133923; + break; + case 1933879979: + var13 = 0; + var15 = 383693883; + break; + case 1934129606: + var11 = var1.combined[var9x].set(var7x.pose()).mul(var1.world[var9x]); + var12 = var1.normals[var9x].set(var7x.normal()).mul(this.boneNormal.set(var1.world[var9x])); + if (var8) { + var15 = 1023176334; + } else { + var15 = 1933879979; + } + } + } + }); + } + + private void submitVertex(VertexConsumer var1, Matrix4f var2, Matrix3f var3, float[] var4, int var5, int var6) { + this.normal + .set( + var4[var5 + 5], + var4[var5 + 6], + var4[var5 + 7] + ) + .mul(var3) + .normalize(); + var1.addVertex( + var2, + var4[var5], + var4[var5 + 1], + var4[var5 + 2] + ) + .setColor(1.0F, 1.0F, 1.0F, 1.0F) + .setUv(var4[var5 + 3], var4[var5 + 4]) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var6) + .setNormal(this.normal.x, this.normal.y, this.normal.z); + } + + private void submitArm( + ahy var1, ahw var2, int var3, boolean var4, boolean var5, AbstractClientPlayer var6, PoseStack var7, SubmitNodeCollector var8, int var9 + ) { + if (var3 >= 0) { + Minecraft var10 = Minecraft.getInstance(); + AvatarRenderer var11 = var10.getEntityRenderDispatcher().getPlayerRenderer(var6); + if (var11 != null) { + Identifier var12 = var6.getSkin().body().texturePath(); + int var13 = var4 != var5 ? 1: 0; + this.armPose.set(var1.world[var3]).translate(var4 ? -0.0625F : 0.0625F, 0.5F, 0.0F); + var7.pushPose(); + var7.mulPose(this.armPose); + if (var5) { + var7.scale(-1.0F, 1.0F, 1.0F); + } + + if (var13 != 0) { + var11.renderRightHand(var7, var8, var9, var12, var6.isModelPartShown(PlayerModelPart.RIGHT_SLEEVE)); + } else { + var11.renderLeftHand(var7, var8, var9, var12, var6.isModelPartShown(PlayerModelPart.LEFT_SLEEVE)); + } + + var7.popPose(); + } + } + } +} diff --git a/src/main/java/defpackage/ai.java b/src/main/java/defpackage/ai.java new file mode 100644 index 0000000..92769d7 --- /dev/null +++ b/src/main/java/defpackage/ai.java @@ -0,0 +1,95 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemUseAnimation; +import net.minecraft.world.item.Items; + +public class ai { + private static final List data = new ArrayList<>(); + + public static void addData(ah var0, ItemStack var1) { + int var2 = -1986447246; + + while (true) { + switch (var2) { + case -1986447246: + default: + if (!var1.isEmpty()) { + var2 = 892492034; + } else { + var2 = 1763372711; + } + break; + case -261658242: + data.add(var0); + var2 = 1763372711; + break; + case 416212826: + if (var1.getUseAnimation() != ItemUseAnimation.TRIDENT) { + var2 = -261658242; + } else { + var2 = 1763372711; + } + break; + case 892492034: + if (var1.getUseAnimation() != ItemUseAnimation.BLOCK) { + var2 = 416212826; + } else { + var2 = 1763372711; + } + break; + case 1763372711: + return; + } + } + } + + public static ah get() { + ah var0 = null; + int var1 = -23761465; + + while (true) { + switch (var1) { + case -1045196230: + var0 = data.getFirst(); + data.remove(var0); + return var0; + case -23761465: + default: + if (!data.isEmpty()) { + var1 = -1045196230; + } else { + var1 = 263800689; + } + break; + case 263800689: + return new ah( + (boolean)(((0)) != 0), + 0.0F, + Minecraft.getInstance().player, + InteractionHand.MAIN_HAND, + (boolean)(((0)) != 0), + t.deltaTime, + 0.0F, + 0.0F, + 0.0F, + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + Items.AIR.getDefaultInstance() + ); + } + } + } + + public static void clear() { + data.clear(); + } +} diff --git a/src/main/java/defpackage/aia.java b/src/main/java/defpackage/aia.java new file mode 100644 index 0000000..dda24df --- /dev/null +++ b/src/main/java/defpackage/aia.java @@ -0,0 +1,135 @@ +package defpackage; + +import java.util.HashMap; +import java.util.Map; +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.sounds.SimpleSoundInstance; +import net.minecraft.client.resources.sounds.SoundInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; + +public final class aia { + private static final String SOUND_PREFIX = "melee."; + private static final float VOLUME = 1.0F; + private static final float PITCH = 1.0F; + private static final Map EVENTS = new HashMap<>(); + + private aia() { + } + + public static void initialize() { + int var0 = 540020233; + + while (true) { + switch (var0) { + case -1593385341: + EVENTS.putAll(mn.register("melee.")); + return; + case -63761968: + return; + case 540020233: + } + + if (!EVENTS.isEmpty()) { + var0 = -63761968; + } else { + var0 = -1593385341; + } + } + } + + public static SoundInstance play(String var0) { + SoundEvent var1 = null; + Minecraft var2 = null; + SoundInstance var3 = null; + int var4 = 251675799; + + while (true) { + switch (var4) { + case -1637614674: + var3 = new SimpleSoundInstance( + var1, SoundSource.PLAYERS, 1.0F, 1.0F, var2.player.getRandom(), var2.player.getX(), var2.player.getY(), var2.player.getZ() + ); + var2.getSoundManager().play(var3); + return var3; + case -1305677720: + return null; + case -1030749890: + var2 = Minecraft.getInstance(); + if (var2.player == null) { + var4 = -1305677720; + } else { + var4 = -1637614674; + } + break; + case 251675799: + default: + var1 = EVENTS.get(var0); + if (var1 == null) { + var4 = 1676344040; + } else { + var4 = -1030749890; + } + break; + case 1676344040: + return null; + } + } + } + + public static void stop(SoundInstance var0) { + int var1 = -1774606212; + + while (true) { + switch (var1) { + case -1774606212: + default: + if (var0 == null) { + var1 = -150939217; + } else { + var1 = -939411771; + } + break; + case -939411771: + Minecraft.getInstance().getSoundManager().stop(var0); + return; + case -150939217: + return; + } + } + } + + public static boolean isActive(SoundInstance var0) { + int var2 = 0; + int var1 = -1312852722; + + while (true) { + switch (var1) { + case -2024279011: + if (Minecraft.getInstance().getSoundManager().isActive(var0)) { + var1 = -1708863781; + } else { + var1 = -996691315; + } + break; + case -1708863781: + var2 = 1; + var1 = -1564225880; + break; + case -1564225880: + return (boolean)((var2) != 0); + case -1312852722: + default: + if (var0 != null) { + var1 = -2024279011; + } else { + var1 = -996691315; + } + break; + case -996691315: + var2 = 0; + var1 = -1564225880; + } + } + } +} diff --git a/src/main/java/defpackage/aib.java b/src/main/java/defpackage/aib.java new file mode 100644 index 0000000..8007a5d --- /dev/null +++ b/src/main/java/defpackage/aib.java @@ -0,0 +1,7 @@ +package defpackage; + +enum aib { + LOOP, + ONCE_STOP, + ONCE_HOLD; +} diff --git a/src/main/java/defpackage/aic.java b/src/main/java/defpackage/aic.java new file mode 100644 index 0000000..edc4289 --- /dev/null +++ b/src/main/java/defpackage/aic.java @@ -0,0 +1,410 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import net.minecraft.client.resources.sounds.SoundInstance; + +final class aic { + private static final int SOUND_CAPACITY = 4; + private final List playing = new ArrayList<>(4); + private ahq clip; + private aib mode = aib.ONCE_STOP; + private float time; + private int soundCursor; + private boolean stopped = (boolean)(((1)) != 0); + + void play(ahq var1, aib var2) { + this.stopSounds(); + this.clip = var1; + this.mode = var2; + this.time = 0.0F; + this.soundCursor = 0; + this.stopped = (boolean)(((var1 == null ? 1: (-929432356 | 929432356) + (-929432356 & 929432356))) != 0); + } + + void clear() { + this.stopSounds(); + this.clip = null; + this.mode = aib.ONCE_STOP; + this.time = 0.0F; + this.soundCursor = 0; + this.stopped = (boolean)(((1)) != 0); + } + + private void stopSounds() { + int var1 = 0; + int var2 = -1750834590; + + while (true) { + switch (var2) { + case -1750834590: + default: + var1 = 0; + var2 = -242693276; + break; + case -242693276: + if (var1 < this.playing.size()) { + var2 = 1455541146; + } else { + var2 = 1796756521; + } + break; + case 1455541146: + aia.stop(this.playing.get(var1)); + var1++; + var2 = -242693276; + break; + case 1796756521: + this.playing.clear(); + return; + } + } + } + + ahq getClip() { + return this.clip; + } + + boolean isStopped() { + int var2 = 0; + int var1 = 687386363; + + while (true) { + switch (var1) { + case -1049120244: + var2 = 0; + var1 = 295967491; + break; + case -804499033: + var2 = 1; + var1 = 295967491; + break; + case 295967491: + return (boolean)((var2) != 0); + case 687386363: + default: + if (!this.stopped) { + var1 = 1103774859; + } else { + var1 = -804499033; + } + break; + case 1103774859: + if (this.clip == null) { + var1 = -804499033; + } else { + var1 = -1049120244; + } + } + } + } + + boolean isHolding() { + int var2 = 0; + int var1 = 1782666580; + + while (true) { + switch (var1) { + case -724716787: + if (this.mode == aib.ONCE_HOLD) { + var1 = 549457233; + } else { + var1 = -557277766; + } + break; + case -557277766: + var2 = 0; + var1 = 1044379246; + break; + case 549457233: + if (this.time >= this.clip.getLength()) { + var1 = 1982211603; + } else { + var1 = -557277766; + } + break; + case 1044379246: + return (boolean)((var2) != 0); + case 1782666580: + default: + if (this.clip != null) { + var1 = -724716787; + } else { + var1 = -557277766; + } + break; + case 1982211603: + var2 = 1; + var1 = 1044379246; + } + } + } + + boolean isActive() { + int var2 = 0; + int var1 = -1908041937; + + while (true) { + switch (var1) { + case -2079065349: + if (!this.stopped) { + var1 = 1575703336; + } else { + var1 = -939780953; + } + break; + case -1908041937: + default: + if (this.clip != null) { + var1 = -2079065349; + } else { + var1 = -939780953; + } + break; + case -939780953: + var2 = 0; + var1 = 543854678; + break; + case 543854678: + return (boolean)((var2) != 0); + case 1575703336: + var2 = 1; + var1 = 543854678; + } + } + } + + void setProgress(float var1) { + float var2 = 0.0F; + int var3 = 751696403; + + while (true) { + switch (var3) { + case -1306613496: + this.time = Math.max(0.0F, Math.min(var1, 1.0F)) * var2; + return; + case -1174554485: + return; + case -1126575477: + var2 = this.clip.getLength(); + if (var2 <= 0.0F) { + var3 = 218503810; + } else { + var3 = -1306613496; + } + break; + case 218503810: + return; + case 751696403: + default: + if (this.clip == null) { + var3 = -1174554485; + } else { + var3 = -1126575477; + } + } + } + } + + void advance(float var1) { + if (this.clip != null && !this.stopped) { + float var2 = this.clip.getLength(); + if (var2 <= 0.0F) { + this.fireSounds(0.0F); + } else { + float var3 = this.time + var1; + if (var3 < var2) { + this.time = var3; + this.fireSounds(var3); + } else { + this.fireSounds(var2); + switch (this.mode) { + case LOOP: + this.time = var3 % var2; + this.soundCursor = 0; + this.fireSounds(this.time); + break; + case ONCE_HOLD: + this.time = var2; + break; + default: + this.time = var2; + this.stopped = (boolean)(((1)) != 0); + } + } + } + } + } + + void evaluate(float[] var1) { + aho[] var2 = null; + int var3 = 0; + int var4 = 0; + Object var5 = null; + int var6 = 1747614228; + + while (true) { + switch (var6) { + case -2027745483: + if (var4 < var3) { + var6 = 717951697; + } else { + var6 = -239864274; + } + break; + case -1007509962: + return; + case -239864274: + return; + case 717951697: + var5 = var2[var4]; + ((aho)var5).sample(this.time, var1); + var4++; + var6 = -2027745483; + break; + case 1672512389: + var2 = this.clip.getTracks(); + var3 = var2.length; + var4 = 0; + var6 = -2027745483; + break; + case 1747614228: + default: + if (this.clip == null) { + var6 = -1007509962; + } else { + var6 = 1672512389; + } + } + } + } + + void markBones(boolean[] var1) { + aho[] var2 = null; + int var3 = 0; + int var4 = 0; + aho var5 = null; + int var6 = 1372239570; + + while (true) { + switch (var6) { + case -1934210444: + return; + case -1673872462: + return; + case 932896353: + var2 = this.clip.getTracks(); + var3 = var2.length; + var4 = 0; + var6 = 1234295690; + break; + case 1234295690: + if (var4 < var3) { + var6 = 1242177179; + } else { + var6 = -1934210444; + } + break; + case 1242177179: + var5 = var2[var4]; + var1[var5.getTarget()] = (boolean)(((1)) != 0); + var4++; + var6 = 1234295690; + break; + case 1372239570: + default: + if (this.clip == null) { + var6 = -1673872462; + } else { + var6 = 932896353; + } + } + } + } + + private void fireSounds(float var1) { + int var2 = 0; + SoundInstance var3 = null; + int var4 = -426870064; + + while (true) { + switch (var4) { + case -1936254321: + if (this.soundCursor < var2) { + var4 = -506316666; + } else { + var4 = -1094950985; + } + break; + case -1871707640: + this.pruneFinishedSounds(); + this.playing.add(var3); + var4 = -1936254321; + break; + case -1094950985: + return; + case -862063674: + var4 = -1936254321; + break; + case -506316666: + if (this.clip.soundTime(this.soundCursor) <= var1) { + var4 = 1994030713; + } else { + var4 = -1094950985; + } + break; + case -426870064: + default: + var2 = this.clip.soundCount(); + var4 = -1936254321; + break; + case 1994030713: + var3 = aia.play(this.clip.soundName(this.soundCursor)); + this.soundCursor += 1; + if (var3 == null) { + var4 = -862063674; + } else { + var4 = -1871707640; + } + } + } + } + + private void pruneFinishedSounds() { + int var1 = 0; + int var2 = -283839327; + + while (true) { + switch (var2) { + case -902281495: + this.playing.remove(var1); + var2 = 131031629; + break; + case -635138122: + return; + case -402108728: + if (var1 >= 0) { + var2 = 1213809649; + } else { + var2 = -635138122; + } + break; + case -283839327: + default: + var1 = this.playing.size() - (1); + var2 = -402108728; + break; + case 131031629: + var1--; + var2 = -402108728; + break; + case 1213809649: + if (!aia.isActive(this.playing.get(var1))) { + var2 = -902281495; + } else { + var2 = 131031629; + } + } + } + } +} diff --git a/src/main/java/defpackage/aid.java b/src/main/java/defpackage/aid.java new file mode 100644 index 0000000..3ab0bf0 --- /dev/null +++ b/src/main/java/defpackage/aid.java @@ -0,0 +1,888 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +public class aid { + private static final int FACE_CORNERS = 4; + private static final int UV_QUARTER_TURN = 90; + private static final int UV_FULL_TURN = 360; + private static final String INVALID_UV_ROTATION = "Invalid face UV rotation: "; + + public static aif parse(String var0) { + try { + return parse(JsonParser.parseString(var0).getAsJsonObject()); + } catch (Exception var2) { + return null; + } + } + + private static aif parse(JsonObject var0) { + JsonArray var1 = var0.getAsJsonArray( + "minecraft:geometry" + ); + if (var1 != null && var1.size() != 0) { + JsonObject var2 = var1.get(0).getAsJsonObject(); + JsonObject var3 = var2.getAsJsonObject("description"); + int var4 = var3 != null && var3.has("texture_width") + ? var3.get("texture_width").getAsInt() + : 64; + int var5 = var3 != null && var3.has("texture_height") + ? var3.get("texture_height").getAsInt() + : 64; + aif var6 = new aif(); + var6.textureWidth = var4; + var6.textureHeight = var5; + JsonArray var7 = var2.getAsJsonArray("bones"); + if (var7 != null) { + List var8 = collectFrontRects(var7); + HashMap var9 = new HashMap(); + + for (JsonElement var11 : var7) { + aig var12 = parseBone(var11.getAsJsonObject(), var4, var5, var8); + var9.put(var12.name, var12); + } + + for (JsonElement var16 : var7) { + JsonObject var17 = var16.getAsJsonObject(); + aig var13 = (aig)var9.get(var17.get("name").getAsString()); + if (var17.has("parent") + && !var17.get("parent").isJsonNull()) { + aig var14 = (aig)var9.get(var17.get("parent").getAsString()); + if (var14 != null) { + var14.children.add(var13); + var13.parent = var14; + } else { + var6.roots.add(var13); + } + } else { + var6.roots.add(var13); + } + } + } + + return var6; + } else { + return null; + } + } + + private static List collectFrontRects(JsonArray var0) { + ArrayList var1 = null; + Iterator var2 = null; + JsonElement var3 = null; + JsonObject var4 = null; + Iterator var5 = null; + JsonElement var6 = null; + JsonObject var7 = null; + JsonArray var8 = null; + float[] var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var15 = 0.0F; + int var14 = 1374352468; + + while (true) { + switch (var14) { + case -2067392322: + var3 = (JsonElement)var2.next(); + var4 = var3.getAsJsonObject(); + if (!var4.has("cubes")) { + var14 = -1671590767; + } else { + var14 = -1941994456; + } + break; + case -1941994456: + var5 = var4.getAsJsonArray("cubes").iterator(); + var14 = 1326779239; + break; + case -1671590767: + var14 = 397050511; + break; + case -1036732378: + var6 = (JsonElement)var5.next(); + var7 = var6.getAsJsonObject(); + if (var7.has("uv")) { + var14 = 1308898346; + } else { + var14 = 1326779239; + } + break; + case -247437734: + var10 = var15; + var11 = var9[0] + var10 * 2.0F; + var12 = var9[1] + var10 * 2.0F; + var13 = var9[2] + var10 * 2.0F; + var1.add( + boxRect( + "north", + var8.get(0).getAsFloat(), + var8.get(1).getAsFloat(), + var11, + var12, + var13 + ) + ); + var14 = 1326779239; + break; + case 34843246: + var15 = var7.get("inflate").getAsFloat(); + var14 = -247437734; + break; + case 397050511: + if (var2.hasNext()) { + var14 = -2067392322; + } else { + var14 = 1027076102; + } + break; + case 923116150: + var14 = 1326779239; + break; + case 1027076102: + return var1; + case 1308898346: + if (!var7.get("uv").isJsonArray()) { + var14 = 923116150; + } else { + var14 = 1830161569; + } + break; + case 1326779239: + if (var5.hasNext()) { + var14 = -1036732378; + } else { + var14 = 1408148870; + } + break; + case 1374352468: + default: + var1 = new ArrayList(); + var2 = var0.iterator(); + var14 = 397050511; + break; + case 1408148870: + var14 = 397050511; + break; + case 1830161569: + var8 = var7.getAsJsonArray("uv"); + String var10001 = "size"; + float[] var10002 = new float[3]; + var10002[0] = 1.0F; + var10002[1] = 1.0F; + var10002[2] = 1.0F; + var9 = readVec(var7, var10001, var10002); + if (var7.has("inflate")) { + var14 = 34843246; + } else { + var14 = 1980519373; + } + break; + case 1980519373: + var15 = 0.0F; + var14 = -247437734; + } + } + } + + private static boolean isRectClaimed(List var0, float[] var1) { + Iterator var2 = null; + float[] var3 = null; + int var4 = 839915619; + + while (true) { + switch (var4) { + case -2132384201: + return (boolean)(((1)) != 0); + case -1326050597: + if (var3[0] < var1[2]) { + var4 = -42196853; + } else { + var4 = 1834649136; + } + break; + case -1314621668: + return (boolean)(((0)) != 0); + case -1253454753: + if (var3[1] < var1[3]) { + var4 = -2132384201; + } else { + var4 = 1834649136; + } + break; + case -500525105: + if (var2.hasNext()) { + var4 = 283692020; + } else { + var4 = -1314621668; + } + break; + case -42196853: + if (var1[1] < var3[3]) { + var4 = -1253454753; + } else { + var4 = 1834649136; + } + break; + case 283692020: + var3 = (float[])var2.next(); + if (var1[0] < var3[2]) { + var4 = -1326050597; + } else { + var4 = 1834649136; + } + break; + case 839915619: + default: + var2 = var0.iterator(); + var4 = -500525105; + break; + case 1834649136: + var4 = -500525105; + } + } + } + + private static aig parseBone(JsonObject var0, int var1, int var2, List var3) { + aig var4 = null; + Object var5 = null; + JsonElement var6 = null; + int var7 = -1194131651; + + while (true) { + switch (var7) { + case -1979139140: + if (var0.has("cubes")) { + var7 = 1776790773; + } else { + var7 = -681686443; + } + break; + case -1194131651: + default: + var4 = new aig(var0.get("name").getAsString()); + if (var0.has("pivot")) { + var7 = 1406150778; + } else { + var7 = 449761475; + } + break; + case -847000344: + var6 = (JsonElement)var5.next(); + var4.cubes.add(parseCube(var6.getAsJsonObject(), var1, var2, var3)); + var7 = -588446941; + break; + case -681686443: + return var4; + case -588446941: + if (var5.hasNext()) { + var7 = -847000344; + } else { + var7 = -681686443; + } + break; + case 449761475: + if (var0.has("rotation")) { + var7 = 1000403449; + } else { + var7 = -1979139140; + } + break; + case 1000403449: + var5 = var0.getAsJsonArray("rotation"); + var4.setRotX((float)Math.toRadians(-var5.get(0).getAsFloat())); + var4.setRotY((float)Math.toRadians(-var5.get(1).getAsFloat())); + var4.setRotZ((float)Math.toRadians(var5.get(2).getAsFloat())); + var7 = -1979139140; + break; + case 1406150778: + var5 = var0.getAsJsonArray("pivot"); + var4.pivotX = -var5.get(0).getAsFloat(); + var4.pivotY = var5.get(1).getAsFloat(); + var4.pivotZ = var5.get(2).getAsFloat(); + var7 = 449761475; + break; + case 1776790773: + var5 = var0.getAsJsonArray("cubes").iterator(); + var7 = -588446941; + } + } + } + + private static aie parseCube(JsonObject var0, int var1, int var2, List var3) { + float[] var4 = null; + float[] var5 = null; + float[] var6 = null; + float[] var7 = null; + float var8 = 0.0F; + int var9 = 0; + aie var10 = null; + float var12 = 0.0F; + int var13 = 0; + int var11 = -41889163; + + while (true) { + switch (var11) { + case -1988042336: + var8 = var12; + if (var0.has("mirror")) { + var11 = 635974636; + } else { + var11 = -1544918381; + } + break; + case -1609240963: + var12 = var0.get("inflate").getAsFloat(); + var11 = -1988042336; + break; + case -1544918381: + var13 = 0; + var11 = 1272200359; + break; + case -552551379: + var12 = 0.0F; + var11 = -1988042336; + break; + case -41889163: + default: + String var10001 = "origin"; + float[] var10002 = new float[3]; + var10002[0] = 0.0F; + var10002[1] = 0.0F; + var10002[2] = 0.0F; + var4 = readVec(var0, var10001, var10002); + var10001 = "size"; + var10002 = new float[3]; + var10002[0] = 1.0F; + var10002[1] = 1.0F; + var10002[2] = 1.0F; + var5 = readVec(var0, var10001, var10002); + var6 = readVec(var0, "pivot", (float[])var4.clone()); + var10001 = "rotation"; + var10002 = new float[3]; + var10002[0] = 0.0F; + var10002[1] = 0.0F; + var10002[2] = 0.0F; + var7 = readVec(var0, var10001, var10002); + if (var0.has("inflate")) { + var11 = -1609240963; + } else { + var11 = -552551379; + } + break; + case 635974636: + if (var0.get("mirror").getAsBoolean()) { + var11 = 2135308661; + } else { + var11 = -1544918381; + } + break; + case 1272200359: + var9 = var13; + var10 = new aie( + var5[0], + var5[1], + var5[2] + ); + var10.pivot = new aii( + -var6[0], + var6[1], + var6[2] + ); + var10.rotation = new aii( + (float)Math.toRadians(-var7[0]), + (float)Math.toRadians(-var7[1]), + (float)Math.toRadians(var7[2]) + ); + var10.inflate = var8; + var10.mirror = (boolean)((var9) != 0); + buildFaces(var10, var4, var5, var8, var0, var1, var2, var3); + return var10; + case 2135308661: + var13 = 1; + var11 = 1272200359; + } + } + } + + private static void buildFaces(aie var0, float[] var1, float[] var2, float var3, JsonObject var4, int var5, int var6, List var7) { + float var8 = var1[0] - var3; + float var9 = var1[1] - var3; + float var10 = var1[2] - var3; + float var11 = var2[0] + var3 * 2.0F; + float var12 = var2[1] + var3 * 2.0F; + float var13 = var2[2] + var3 * 2.0F; + float var14 = -(var8 + var11) / 16.0F; + float var15 = -var8 / 16.0F; + float var16 = var9 / 16.0F; + float var17 = (var9 + var12) / 16.0F; + float var18 = var10 / 16.0F; + float var19 = (var10 + var13) / 16.0F; + JsonObject var20 = null; + float var21 = 0.0F; + float var22 = 0.0F; + if (var4.has("uv")) { + JsonElement var23 = var4.get("uv"); + if (var23.isJsonArray()) { + JsonArray var24 = var23.getAsJsonArray(); + var21 = var24.get(0).getAsFloat(); + var22 = var24.get(1).getAsFloat(); + } else if (var23.isJsonObject()) { + var20 = var23.getAsJsonObject(); + } + } + + int var25 = var13 == 0.0F + && var20 == null + && isRectClaimed(var7, boxRect("south", var21, var22, var11, var12, var13)) + ? 1: 0; + var0.faces[0] = makeFace( + "north", + var14, + var16, + var18, + var15, + var17, + var19, + 0.0F, + 0.0F, + -1.0F, + var20, + var21, + var22, + var11, + var12, + var13, + var5, + var6, + var0.mirror, + (boolean)((((-235394674 ^ 235394674) + ((-235394674 & 235394674) << 1)) + ) != 0)); + var0.faces[1] = makeFace( + "south", + var14, + var16, + var18, + var15, + var17, + var19, + 0.0F, + 0.0F, + 1.0F, + var20, + var21, + var22, + var11, + var12, + var13, + var5, + var6, + var0.mirror, + (boolean)((var25 + ) != 0)); + var0.faces[2] = makeFace( + "west", + var14, + var16, + var18, + var15, + var17, + var19, + -1.0F, + 0.0F, + 0.0F, + var20, + var21, + var22, + var11, + var12, + var13, + var5, + var6, + var0.mirror, + (boolean)((((1055174471 | -1055174471) + (1055174471 & -1055174471)) + ) != 0)); + var0.faces[3] = makeFace( + "east", + var14, + var16, + var18, + var15, + var17, + var19, + 1.0F, + 0.0F, + 0.0F, + var20, + var21, + var22, + var11, + var12, + var13, + var5, + var6, + var0.mirror, + (boolean)((((152843136 | -152843136) + (152843136 & -152843136)) + ) != 0)); + var0.faces[4] = makeFace( + "up", + var14, + var16, + var18, + var15, + var17, + var19, + 0.0F, + 1.0F, + 0.0F, + var20, + var21, + var22, + var11, + var12, + var13, + var5, + var6, + var0.mirror, + (boolean)((((1188765584 | -1188765584) + (1188765584 & -1188765584)) + ) != 0)); + var0.faces[5] = makeFace( + "down", + var14, + var16, + var18, + var15, + var17, + var19, + 0.0F, + -1.0F, + 0.0F, + var20, + var21, + var22, + var11, + var12, + var13, + var5, + var6, + var0.mirror, + (boolean)((((-1697249948 | 1697249948) + (-1697249948 & 1697249948)) + ) != 0)); + } + + private static aij makeFace( + String var0, + float var1, + float var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + JsonObject var10, + float var11, + float var12, + float var13, + float var14, + float var15, + int var16, + int var17, + boolean var18, + boolean var19 + ) { + int var24 = 0; + float var20; + float var21; + float var22; + float var23; + if (var10 != null) { + if (!var10.has(var0)) { + return null; + } + + JsonObject var25 = var10.getAsJsonObject(var0); + if (var25.has("uv_rotation")) { + int var26 = var25.get("uv_rotation").getAsInt(); + if (var26 < 0 + || var26 >= (-1107374689 ^ 1107375049) + ((-1107374689 & 1107375049) << 1) + || var26 % 90!= 0) { + throw new IllegalArgumentException("Invalid face UV rotation: " + var26); + } + + var24 = var26 / (90); + } + + JsonArray var32 = var25.getAsJsonArray("uv"); + JsonArray var27 = var25.getAsJsonArray("uv_size"); + float var28 = var32.get(0).getAsFloat(); + float var29 = var32.get(1).getAsFloat(); + var20 = var28 / var16; + var21 = var29 / var17; + var22 = (var28 + var27.get(0).getAsFloat()) / var16; + var23 = (var29 + var27.get(1).getAsFloat()) / var17; + } else { + String var30 = var0; + byte var33 = var18; + if (var19) { + var30 = "north"; + var33 = (byte)(var18 == 0 + ? 1: (1597328994 | -1597328994) + (1597328994 & -1597328994)); + } else if (var18 != 0 && "east".equals(var0)) { + var30 = "west"; + } else if (var18 != 0 && "west".equals(var0)) { + var30 = "east"; + } + + float[] var35 = boxRect(var30, var11, var12, var13, var14, var15); + var20 = var35[var33 != 0 + ? 2: 0] + / var16; + var21 = var35[1] / var17; + var22 = var35[var33 != 0 + ? 0: 2] + / var16; + var23 = var35[3] / var17; + } + + aik[] var31 = buildCorners(var0, var1, var2, var3, var4, var5, var6, var20, var21, var22, var23); + if (var24 != 0) { + float[] var34 = new float[4]; + float[] var36 = new float[4]; + + for (int var37 = 0; + var37 < 4; + var37++ + ) { + var34[var37] = var31[var37].u; + var36[var37] = var31[var37].v; + } + + for (int var38 = 0; var38 < 4; var38++) { + int var39 = (var38 + var24) % (4); + var31[var38].u = var34[var39]; + var31[var38].v = var36[var39]; + } + } + + return new aij(var31, var7, var8, var9); + } + + private static float[] boxRect(String var0, float var1, float var2, float var3, float var4, float var5) { + String var6 = var0; + int var7 = -1; + switch (var6.hashCode()) { + case 3739: + if (var6.equals("up")) { + var7 = 0; + } + break; + case 3089570: + if (var6.equals("down")) { + var7 = 1; + } + break; + case 3105789: + if (var6.equals("east")) { + var7 = 4; + } + break; + case 3645871: + if (var6.equals("west")) { + var7 = 2; + } + break; + case 105007365: + if (var6.equals("north")) { + var7 = 3; + } + break; + case 109627853: + if (var6.equals("south")) { + var7 = 5; + } + } + + switch (var7) { + case 0: + float[] var13 = new float[4]; + var13[0] = var1 + var5; + var13[1] = var2; + var13[2] = var1 + var5 + var3; + var13[3] = var2 + var5; + return var13; + case 1: + float[] var12 = new float[4]; + var12[0] = var1 + var5 + var3; + var12[1] = var2; + var12[2] = var1 + var5 + var3 * 2.0F; + var12[3] = var2 + var5; + return var12; + case 2: + float[] var11 = new float[4]; + var11[0] = var1; + var11[1] = var2 + var5; + var11[2] = var1 + var5; + var11[3] = var2 + var5 + var4; + return var11; + case 3: + float[] var10 = new float[4]; + var10[0] = var1 + var5; + var10[1] = var2 + var5; + var10[2] = var1 + var5 + var3; + var10[3] = var2 + var5 + var4; + return var10; + case 4: + float[] var9 = new float[4]; + var9[0] = var1 + var5 + var3; + var9[1] = var2 + var5; + var9[2] = var1 + var5 * 2.0F + var3; + var9[3] = var2 + var5 + var4; + return var9; + case 5: + float[] var8 = new float[4]; + var8[0] = var1 + var5 * 2.0F + var3; + var8[1] = var2 + var5; + var8[2] = var1 + var5 * 2.0F + var3 * 2.0F; + var8[3] = var2 + var5 + var4; + return var8; + default: + float[] var10000 = new float[4]; + var10000[0] = var1; + var10000[1] = var2; + var10000[2] = var1; + var10000[3] = var2; + return var10000; + } + } + + private static aik[] buildCorners( + String var0, float var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9, float var10 + ) { + aik[] var11 = new aik[4]; + String var12 = var0; + int var13 = -1; + switch (var12.hashCode()) { + case 3739: + if (var12.equals("up")) { + var13 = 4; + } + break; + case 3089570: + if (var12.equals("down")) { + var13 = 5; + } + break; + case 3105789: + if (var12.equals("east")) { + var13 = 3; + } + break; + case 3645871: + if (var12.equals("west")) { + var13 = 2; + } + break; + case 105007365: + if (var12.equals("north")) { + var13 = 0; + } + break; + case 109627853: + if (var12.equals("south")) { + var13 = 1; + } + } + + switch (var13) { + case 0: + var11[0] = new aik(var1, var5, var3, var7, var8); + var11[1] = new aik(var4, var5, var3, var9, var8); + var11[2] = new aik(var4, var2, var3, var9, var10); + var11[3] = new aik(var1, var2, var3, var7, var10); + break; + case 1: + var11[0] = new aik(var4, var5, var6, var7, var8); + var11[1] = new aik(var1, var5, var6, var9, var8); + var11[2] = new aik(var1, var2, var6, var9, var10); + var11[3] = new aik(var4, var2, var6, var7, var10); + break; + case 2: + var11[0] = new aik(var1, var5, var6, var7, var8); + var11[1] = new aik(var1, var5, var3, var9, var8); + var11[2] = new aik(var1, var2, var3, var9, var10); + var11[3] = new aik(var1, var2, var6, var7, var10); + break; + case 3: + var11[0] = new aik(var4, var5, var3, var7, var8); + var11[1] = new aik(var4, var5, var6, var9, var8); + var11[2] = new aik(var4, var2, var6, var9, var10); + var11[3] = new aik(var4, var2, var3, var7, var10); + break; + case 4: + var11[0] = new aik(var1, var5, var3, var7, var8); + var11[1] = new aik(var4, var5, var3, var9, var8); + var11[2] = new aik(var4, var5, var6, var9, var10); + var11[3] = new aik(var1, var5, var6, var7, var10); + break; + case 5: + var11[0] = new aik(var1, var2, var6, var7, var8); + var11[1] = new aik(var4, var2, var6, var9, var8); + var11[2] = new aik(var4, var2, var3, var9, var10); + var11[3] = new aik(var1, var2, var3, var7, var10); + } + + return var11; + } + + private static float[] readVec(JsonObject var0, String var1, float[] var2) { + JsonArray var3 = null; + float[] var4 = null; + int var5 = 0; + int var6 = -910542381; + + while (true) { + switch (var6) { + case -910542381: + default: + if (!var0.has(var1)) { + var6 = 417489162; + } else { + var6 = 1205517235; + } + break; + case 417489162: + return var2; + case 986609565: + var4[var5] = var3.get(var5).getAsFloat(); + var5++; + var6 = 1727356268; + break; + case 1001278021: + return var4; + case 1205517235: + var3 = var0.getAsJsonArray(var1); + var4 = new float[var3.size()]; + var5 = 0; + var6 = 1727356268; + break; + case 1727356268: + if (var5 < var3.size()) { + var6 = 986609565; + } else { + var6 = 1001278021; + } + } + } + } +} diff --git a/src/main/java/defpackage/aie.java b/src/main/java/defpackage/aie.java new file mode 100644 index 0000000..450a01d --- /dev/null +++ b/src/main/java/defpackage/aie.java @@ -0,0 +1,14 @@ +package defpackage; + +public class aie { + public aii size; + public aij[] faces = new aij[6]; + public aii pivot = new aii(0.0F, 0.0F, 0.0F); + public aii rotation = new aii(0.0F, 0.0F, 0.0F); + public float inflate = 0.0F; + public boolean mirror = (boolean)(((0)) != 0); + + public aie(float var1, float var2, float var3) { + this.size = new aii(var1, var2, var3); + } +} diff --git a/src/main/java/defpackage/aif.java b/src/main/java/defpackage/aif.java new file mode 100644 index 0000000..54940ff --- /dev/null +++ b/src/main/java/defpackage/aif.java @@ -0,0 +1,99 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Optional; + +public class aif { + public List roots = new ArrayList<>(); + public int textureWidth = 64; + public int textureHeight = 64; + + public Optional findPart(String var1) { + Iterator var2 = null; + aig var3 = null; + aig var4 = null; + int var5 = -1711370444; + + while (true) { + switch (var5) { + case -1711370444: + default: + var2 = this.roots.iterator(); + var5 = 1406848865; + break; + case -1371406028: + var3 = (aig)var2.next(); + var4 = this.findPart(var1, var3); + if (var4 != null) { + var5 = -29422776; + } else { + var5 = -473385186; + } + break; + case -473385186: + var5 = 1406848865; + break; + case -29422776: + return Optional.of(var4); + case 1271346717: + return Optional.empty(); + case 1406848865: + if (var2.hasNext()) { + var5 = -1371406028; + } else { + var5 = 1271346717; + } + } + } + } + + private aig findPart(String var1, aig var2) { + Iterator var3 = null; + aig var4 = null; + aig var5 = null; + int var6 = 609041630; + + while (true) { + switch (var6) { + case -1015043918: + return null; + case -655693450: + return var2; + case -347943992: + return var5; + case -32737213: + var3 = var2.children.iterator(); + var6 = 302735347; + break; + case 302735347: + if (var3.hasNext()) { + var6 = 803537708; + } else { + var6 = -1015043918; + } + break; + case 609041630: + default: + if (var2.name.equals(var1)) { + var6 = -655693450; + } else { + var6 = -32737213; + } + break; + case 803537708: + var4 = (aig)var3.next(); + var5 = this.findPart(var1, var4); + if (var5 != null) { + var6 = -347943992; + } else { + var6 = 1253519956; + } + break; + case 1253519956: + var6 = 302735347; + } + } + } +} diff --git a/src/main/java/defpackage/aig.java b/src/main/java/defpackage/aig.java new file mode 100644 index 0000000..8bb72f9 --- /dev/null +++ b/src/main/java/defpackage/aig.java @@ -0,0 +1,124 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; + +public class aig { + public aig parent; + public String name; + public boolean hidden; + public float pivotX; + public float pivotY; + public float pivotZ; + private float rotX; + private float rotY; + private float rotZ; + private float offsetX; + private float offsetY; + private float offsetZ; + public List children = new ArrayList<>(); + public List cubes = new ArrayList<>(); + private float scaleX = 1.0F; + private float scaleY = 1.0F; + private float scaleZ = 1.0F; + + public aig(String var1) { + this.name = var1; + } + + public float getRotX() { + return this.rotX; + } + + public float getRotY() { + return this.rotY; + } + + public float getRotZ() { + return this.rotZ; + } + + public void setRotX(float var1) { + this.rotX = var1; + } + + public void setRotY(float var1) { + this.rotY = var1; + } + + public void setRotZ(float var1) { + this.rotZ = var1; + } + + public float getOffsetX() { + return this.offsetX; + } + + public float getOffsetY() { + return this.offsetY; + } + + public float getOffsetZ() { + return this.offsetZ; + } + + public void setOffsetX(float var1) { + this.offsetX = var1; + } + + public void setOffsetY(float var1) { + this.offsetY = var1; + } + + public void setOffsetZ(float var1) { + this.offsetZ = var1; + } + + public float getScaleX() { + return this.scaleX; + } + + public float getScaleY() { + return this.scaleY; + } + + public float getScaleZ() { + return this.scaleZ; + } + + public void setScaleX(float var1) { + this.scaleX = var1; + } + + public void setScaleY(float var1) { + this.scaleY = var1; + } + + public void setScaleZ(float var1) { + this.scaleZ = var1; + } + + public float getPivotX() { + return this.pivotX; + } + + public float getPivotY() { + return this.pivotY; + } + + public float getPivotZ() { + return this.pivotZ; + } + + public String getName() { + return this.name; + } + + public boolean isHidden() { + return this.hidden; + } + + public void setHidden(boolean var1) { + this.hidden = var1; + } +} diff --git a/src/main/java/defpackage/aih.java b/src/main/java/defpackage/aih.java new file mode 100644 index 0000000..e5ff614 --- /dev/null +++ b/src/main/java/defpackage/aih.java @@ -0,0 +1,123 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import org.joml.Quaternionf; + +public final class aih { + private static final float MODEL_SCALE = 16.0F; + + private aih() { + } + + public static void translatePartOffset(aig var0, PoseStack var1) { + var1.translate(-var0.getOffsetX() / 16.0F, var0.getOffsetY() / 16.0F, var0.getOffsetZ() / 16.0F); + } + + public static void translatePartPivot(aig var0, PoseStack var1) { + var1.translate(var0.getPivotX() / 16.0F, var0.getPivotY() / 16.0F, var0.getPivotZ() / 16.0F); + } + + public static void translatePartPivotBack(aig var0, PoseStack var1) { + var1.translate(-var0.getPivotX() / 16.0F, -var0.getPivotY() / 16.0F, -var0.getPivotZ() / 16.0F); + } + + public static void rotatePart(aig var0, PoseStack var1) { + int var2 = -66829476; + + while (true) { + switch (var2) { + case -541580509: + return; + case -66829476: + default: + if (var0.getRotZ() != 0.0F) { + var2 = 584470871; + } else { + var2 = 1138899757; + } + break; + case 350193887: + var1.mulPose(new Quaternionf().rotationX(var0.getRotX())); + var2 = -541580509; + break; + case 584470871: + var1.mulPose(new Quaternionf().rotationZ(var0.getRotZ())); + var2 = 1138899757; + break; + case 1138899757: + if (var0.getRotY() != 0.0F) { + var2 = 2077848987; + } else { + var2 = 2090902036; + } + break; + case 2077848987: + var1.mulPose(new Quaternionf().rotationY(var0.getRotY())); + var2 = 2090902036; + break; + case 2090902036: + if (var0.getRotX() != 0.0F) { + var2 = 350193887; + } else { + var2 = -541580509; + } + } + } + } + + public static void scalePart(aig var0, PoseStack var1) { + var1.scale(var0.getScaleX(), var0.getScaleY(), var0.getScaleZ()); + } + + public static void translateCubePivot(aie var0, PoseStack var1) { + var1.translate(var0.pivot.getX() / 16.0F, var0.pivot.getY() / 16.0F, var0.pivot.getZ() / 16.0F); + } + + public static void translateCubePivotBack(aie var0, PoseStack var1) { + var1.translate(-var0.pivot.getX() / 16.0F, -var0.pivot.getY() / 16.0F, -var0.pivot.getZ() / 16.0F); + } + + public static void rotateCube(aie var0, PoseStack var1) { + int var2 = 1707074422; + + while (true) { + switch (var2) { + case -1479346835: + var1.mulPose(new Quaternionf().rotationZ(var0.rotation.getZ())); + var2 = -254250236; + break; + case -1442913909: + if (var0.rotation.getX() != 0.0F) { + var2 = 2098599744; + } else { + var2 = 1247655990; + } + break; + case -254250236: + if (var0.rotation.getY() != 0.0F) { + var2 = 708749464; + } else { + var2 = -1442913909; + } + break; + case 708749464: + var1.mulPose(new Quaternionf().rotationY(var0.rotation.getY())); + var2 = -1442913909; + break; + case 1247655990: + return; + case 1707074422: + default: + if (var0.rotation.getZ() != 0.0F) { + var2 = -1479346835; + } else { + var2 = -254250236; + } + break; + case 2098599744: + var1.mulPose(new Quaternionf().rotationX(var0.rotation.getX())); + var2 = 1247655990; + } + } + } +} diff --git a/src/main/java/defpackage/aii.java b/src/main/java/defpackage/aii.java new file mode 100644 index 0000000..126ecac --- /dev/null +++ b/src/main/java/defpackage/aii.java @@ -0,0 +1,37 @@ +package defpackage; + +public class aii { + public static final aii ZERO = new aii(0.0F, 0.0F, 0.0F); + public float x; + public float y; + public float z; + + public aii(float var1, float var2, float var3) { + this.x = var1; + this.y = var2; + this.z = var3; + } + + public float getX() { + return this.x; + } + + public float getY() { + return this.y; + } + + public float getZ() { + return this.z; + } + + public void set(float var1, float var2, float var3) { + this.x = var1; + this.y = var2; + this.z = var3; + } + + @Override + public String toString() { + return this.x + ", " + this.y + ", " + this.z; + } +} diff --git a/src/main/java/defpackage/aij.java b/src/main/java/defpackage/aij.java new file mode 100644 index 0000000..2eccc31 --- /dev/null +++ b/src/main/java/defpackage/aij.java @@ -0,0 +1,15 @@ +package defpackage; + +public class aij { + public aik[] corners; + public aii normal; + + public aij(aik[] var1, aii var2) { + this.corners = var1; + this.normal = var2; + } + + public aij(aik[] var1, float var2, float var3, float var4) { + this(var1, new aii(var2, var3, var4)); + } +} diff --git a/src/main/java/defpackage/aik.java b/src/main/java/defpackage/aik.java new file mode 100644 index 0000000..4418af9 --- /dev/null +++ b/src/main/java/defpackage/aik.java @@ -0,0 +1,17 @@ +package defpackage; + +public class aik { + public aii position; + public float u; + public float v; + + public aik(float var1, float var2, float var3, float var4, float var5) { + this(new aii(var1, var2, var3), var4, var5); + } + + public aik(aii var1, float var2, float var3) { + this.position = var1; + this.u = var2; + this.v = var3; + } +} diff --git a/src/main/java/defpackage/ail.java b/src/main/java/defpackage/ail.java new file mode 100644 index 0000000..4458750 --- /dev/null +++ b/src/main/java/defpackage/ail.java @@ -0,0 +1,93 @@ +package defpackage; + +import net.minecraft.world.entity.LivingEntity; + +public final class ail { + private final LivingEntity entity; + private final float height; + private long startMillis; + + ail(LivingEntity var1, float var2, long var3) { + this.entity = var1; + this.height = var2; + this.startMillis = var3; + } + + public LivingEntity entity() { + return this.entity; + } + + public float height() { + return this.height; + } + + void restart(long var1) { + this.startMillis = var1; + } + + float linear(long var1, long var3) { + float var5 = 0.0F; + float var7 = 0.0F; + int var6 = -580300353; + + while (true) { + switch (var6) { + case -1693142216: + var7 = Math.min(var5, 1.0F); + var6 = 693228933; + break; + case -1572687162: + var5 = (float)(var1 - this.startMillis) / (float)var3; + if (var5 < 0.0F) { + var6 = 201730288; + } else { + var6 = -1693142216; + } + break; + case -580300353: + default: + if (var3 <= (-8663103266211138176L ^ 8663103266211138176L) + ((-8663103266211138176L & 8663103266211138176L) << 1)) { + var6 = -445866929; + } else { + var6 = -1572687162; + } + break; + case -445866929: + return 1.0F; + case 201730288: + var7 = 0.0F; + var6 = 693228933; + break; + case 693228933: + return var7; + } + } + } + + boolean expired(long var1, long var3) { + int var6 = 0; + int var5 = -2018226275; + + while (true) { + switch (var5) { + case -2018226275: + default: + if (var1 - this.startMillis >= var3) { + var5 = 1500531023; + } else { + var5 = 970609239; + } + break; + case -857839325: + return (boolean)((var6) != 0); + case 970609239: + var6 = 0; + var5 = -857839325; + break; + case 1500531023: + var6 = 1; + var5 = -857839325; + } + } + } +} diff --git a/src/main/java/defpackage/aim.java b/src/main/java/defpackage/aim.java new file mode 100644 index 0000000..64c1f62 --- /dev/null +++ b/src/main/java/defpackage/aim.java @@ -0,0 +1,269 @@ +package defpackage; + +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap.Entry; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap.FastEntrySet; +import it.unimi.dsi.fastutil.objects.ObjectIterator; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.Level; + +public final class aim { + public static final int FRAME_COUNT = 5; + public static final float NO_SQUASH = 1.0F; + private static final float MAX_SQUASH_RANGE = 0.72F; + private static final float MIN_HEIGHT = 0.05F; + private static final int INITIAL_CAPACITY = 8; + private static final aim INSTANCE = new aim(); + private final Int2ObjectOpenHashMap active = new Int2ObjectOpenHashMap((-207586752 ^ 207586760) + ((-207586752 & 207586760) << 1)); + private Level trackedLevel; + + private aim() { + } + + public static aim getInstance() { + return INSTANCE; + } + + public boolean isEmpty() { + return this.active.isEmpty(); + } + + public FastEntrySet entries() { + return this.active.int2ObjectEntrySet(); + } + + public void pat(LivingEntity var1) { + long var2 = (-1176769716610578046L ^ 1176769716610578046L) + ((-1176769716610578046L & 1176769716610578046L) << 1); + ail var4 = null; + int var5 = 1156546693; + + while (true) { + switch (var5) { + case -1615411995: + if (var4.entity() == var1) { + var5 = -18391861; + } else { + var5 = -1446807431; + } + break; + case -1446807431: + this.active.put(var1.getId(), new ail(var1, Math.max(var1.getBbHeight(), 0.05F), var2)); + return; + case -18391861: + var4.restart(var2); + return; + case 1156546693: + default: + var2 = System.currentTimeMillis(); + var4 = (ail)this.active.get(var1.getId()); + if (var4 != null) { + var5 = -1615411995; + } else { + var5 = -1446807431; + } + } + } + } + + public void prune(Level var1, long var2, long var4) { + ObjectIterator var6 = null; + ail var7 = null; + LivingEntity var8 = null; + int var9 = 1544753357; + + while (true) { + switch (var9) { + case -2066247188: + var6 = this.active.int2ObjectEntrySet().fastIterator(); + var9 = -493381625; + break; + case -1314931216: + return; + case -743484737: + var9 = -493381625; + break; + case -730221256: + if (!var8.isRemoved()) { + var9 = -54236930; + } else { + var9 = 1982844554; + } + break; + case -493381625: + if (var6.hasNext()) { + var9 = 2088109856; + } else { + var9 = 367115038; + } + break; + case -308375492: + if (this.active.isEmpty()) { + var9 = -1314931216; + } else { + var9 = -2066247188; + } + break; + case -54236930: + if (var8.level() != var1) { + var9 = 1982844554; + } else { + var9 = -743484737; + } + break; + case 367115038: + return; + case 504601599: + this.trackedLevel = var1; + this.active.clear(); + return; + case 1544753357: + default: + if (this.trackedLevel != var1) { + var9 = 504601599; + } else { + var9 = -308375492; + } + break; + case 1982844554: + var6.remove(); + var9 = -743484737; + break; + case 2088109856: + var7 = (ail)((Entry)var6.next()).getValue(); + var8 = var7.entity(); + if (!var7.expired(var2, var4)) { + var9 = -730221256; + } else { + var9 = 1982844554; + } + } + } + } + + public void clear() { + this.active.clear(); + this.trackedLevel = null; + } + + public boolean isPatted(int var1) { + int var3 = 0; + int var2 = -1398713374; + + while (true) { + switch (var2) { + case -1890430700: + var3 = 1; + var2 = 842628408; + break; + case -1838127133: + var3 = 0; + var2 = 842628408; + break; + case -1398713374: + default: + if (this.running(var1) != null) { + var2 = -1890430700; + } else { + var2 = -1838127133; + } + break; + case 842628408: + return (boolean)((var3) != 0); + } + } + } + + public float squash(int var1) { + ail var2 = null; + ta var3 = null; + float var4 = 0.0F; + int var5 = 113537128; + + while (true) { + switch (var5) { + case 113537128: + default: + var2 = this.running(var1); + if (var2 == null) { + var5 = 1068341237; + } else { + var5 = 1699470188; + } + break; + case 1068341237: + return 1.0F; + case 1699470188: + var3 = ta.INSTANCE; + var4 = eased(var2.linear(System.currentTimeMillis(), var3.durationMillis())); + return squashOf(var4, var3.patWeight(), var2.height()); + } + } + } + + private ail running(int var1) { + ail var2 = null; + ta var3 = null; + int var4 = 1187741320; + + while (true) { + switch (var4) { + case -569766815: + return null; + case -305407021: + var3 = ta.INSTANCE; + if (var3.isEnabled()) { + var4 = 804716994; + } else { + var4 = 1672157239; + } + break; + case 751327647: + return null; + case 804716994: + if (var2.expired(System.currentTimeMillis(), var3.durationMillis())) { + var4 = 1672157239; + } else { + var4 = 1056465762; + } + break; + case 1056465762: + return var2; + case 1187741320: + default: + if (this.active.isEmpty()) { + var4 = 751327647; + } else { + var4 = 1595095099; + } + break; + case 1595095099: + var2 = (ail)this.active.get(var1); + if (var2 == null) { + var4 = -569766815; + } else { + var4 = -305407021; + } + break; + case 1672157239: + return null; + } + } + } + + public static float eased(float var0) { + float var1 = 1.0F - var0; + return 1.0F - var1 * var1; + } + + public static int frameOf(float var0) { + return Mth.clamp( + (int)(var0 * 5.0F), 0, (-1751348692 ^ 1751348696) + ((-1751348692 & 1751348696) << 1) + ); + } + + public static float squashOf(float var0, float var1, float var2) { + float var3 = Math.min(var1 / var2, 0.72F); + return 1.0F - var3 + var3 * (1.0F - (float)Math.sin(var0 * Math.PI)); + } +} diff --git a/src/main/java/defpackage/ain.java b/src/main/java/defpackage/ain.java new file mode 100644 index 0000000..b4228b8 --- /dev/null +++ b/src/main/java/defpackage/ain.java @@ -0,0 +1,745 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import it.unimi.dsi.fastutil.ints.IntArrayList; +import it.unimi.dsi.fastutil.ints.IntOpenHashSet; +import java.util.Iterator; +import java.util.Locale; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ServerData; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; + +public final class ain { + private static final String ACTION_PAT = "pat"; + private static final String KEY_UUID = "uuid"; + private static final String KEY_SERVER = "server"; + private static final String KEY_DIMENSION = "dim"; + private static final String KEY_SINCE = "since"; + private static final String KEY_PATS = "pats"; + private static final String KEY_AT = "at"; + private static final String KEY_ENTITY = "e"; + private static final String KEY_AGE = "age"; + private static final String KEY_WANT = "want"; + private static final String PUSH_FAILURE = "pat sync failed: {}"; + private static final String STATUS_FAILURE = "pat sync rejected with status {}"; + private static final String RESPONSE_FAILURE = "pat sync response parse failed"; + private static final int POLL_INTERVAL_TICKS = 10; + private static final int NEIGHBOUR_SCAN_TICKS = 20; + private static final int MAX_BATCH = 16; + private static final int MAX_IDENTITY_LENGTH = 32; + private static final long NO_CURSOR = 0L; + private static final long SOUND_MAX_AGE_MILLIS = 4000L; + private static final IntArrayList pending = new IntArrayList(); + private static final IntOpenHashSet queued = new IntOpenHashSet(); + private static volatile boolean requestInFlight; + private static String identity; + private static String server; + private static String dimension; + private static long since; + private static int epoch; + private static int ticks; + private static int scanTicks; + private static boolean neighbourNear; + + private ain() { + } + + public static void initialize() { + ClientTickEvents.END_CLIENT_TICK.register(ain::tick); + } + + public static boolean active() { + int var1 = 0; + int var0 = -1211317317; + + while (true) { + switch (var0) { + case -1417080139: + return (boolean)((var1) != 0); + case -1211317317: + default: + if (server != null) { + var0 = 473971513; + } else { + var0 = 901200994; + } + break; + case 473971513: + if (identity != null) { + var0 = 1062445228; + } else { + var0 = 901200994; + } + break; + case 901200994: + var1 = 0; + var0 = -1417080139; + break; + case 1062445228: + var1 = 1; + var0 = -1417080139; + } + } + } + + public static void publish(LivingEntity var0) { + int var1 = 0; + int var2 = -1876946570; + + while (true) { + switch (var2) { + case -1876946570: + default: + if (var0 != null) { + var2 = 466109394; + } else { + var2 = -782238145; + } + break; + case -1094139841: + pending.add(var1); + return; + case -1091450037: + return; + case -782238145: + return; + case -378102370: + queued.remove(pending.removeInt((939379155 | -939379155) + (939379155 & -939379155))); + var2 = -1094139841; + break; + case 466109394: + if (active()) { + var2 = 670179947; + } else { + var2 = -782238145; + } + break; + case 670179947: + if (!ta.INSTANCE.syncs()) { + var2 = -782238145; + } else { + var2 = 1096239126; + } + break; + case 1096239126: + var1 = var0.getId(); + if (!queued.add(var1)) { + var2 = -1091450037; + } else { + var2 = 1419970144; + } + break; + case 1419970144: + if (pending.size() >= (-932001688 ^ 932001704) + ((-932001688 & 932001704) << 1)) { + var2 = -378102370; + } else { + var2 = -1094139841; + } + } + } + } + + private static void tick(Minecraft var0) { + ta var1 = null; + String var2 = null; + String var3 = null; + String var4 = null; + int var5 = 0; + int var7 = 0; + int var6 = 1725692184; + + while (true) { + switch (var6) { + case -1836478395: + server = var2; + dimension = var4; + pending.clear(); + queued.clear(); + since = (4540989589004815691L ^ -4540989589004815691L) + ((4540989589004815691L & -4540989589004815691L) << 1); + epoch += 1; + var6 = 1358223711; + break; + case -1444610404: + return; + case -1258304713: + if (!var4.equals(dimension)) { + var6 = -1836478395; + } else { + var6 = 1358223711; + } + break; + case -1129203063: + if (var0.level != null) { + var6 = 108859339; + } else { + var6 = 2089613822; + } + break; + case -1051203452: + return; + case -1010941784: + if (var3 != null) { + var6 = 1541832380; + } else { + var6 = 2089613822; + } + break; + case -845767537: + if (!var1.syncs()) { + var6 = 2089613822; + } else { + var6 = 1034702639; + } + break; + case -712589690: + if (var5 != 0) { + var6 = 734046732; + } else { + var6 = -1051203452; + } + break; + case -192200211: + var7 = 0; + var6 = 758444469; + break; + case 108859339: + if (var2 != null) { + var6 = -1010941784; + } else { + var6 = 2089613822; + } + break; + case 723480926: + ticks = 0; + send(var0, (boolean)((var5) != 0)); + return; + case 734046732: + if (ticks < (329349717 ^ -329349707) + ((329349717 & -329349707) << 1)) { + var6 = -1051203452; + } else { + var6 = 723480926; + } + break; + case 758444469: + var5 = var7; + if (pending.isEmpty()) { + var6 = -712589690; + } else { + var6 = 723480926; + } + break; + case 1034702639: + identity = var3; + var4 = var0.level.dimension().identifier().toString(); + if (var2.equals(server)) { + var6 = -1258304713; + } else { + var6 = -1836478395; + } + break; + case 1078577482: + if (neighbourNear) { + var6 = 1133284858; + } else { + var6 = -192200211; + } + break; + case 1126694797: + var7 = 1; + var6 = 758444469; + break; + case 1133284858: + if (var1.showsOthers()) { + var6 = 1126694797; + } else { + var6 = -192200211; + } + break; + case 1192304186: + scanTicks = 0; + neighbourNear = hasEvoNeighbour(var0, var1.syncRadius()); + var6 = 1301360163; + break; + case 1301360163: + ticks += 1; + if (requestInFlight) { + var6 = -1444610404; + } else { + var6 = 1078577482; + } + break; + case 1358223711: + if ((scanTicks += (-802545649 ^ 802545650) + ((-802545649 & 802545650) << 1)) >= (-1626110016 | 1626110036) + (-1626110016 & 1626110036)) { + var6 = 1192304186; + } else { + var6 = 1301360163; + } + break; + case 1541832380: + if (var1.isEnabled()) { + var6 = -845767537; + } else { + var6 = 2089613822; + } + break; + case 1725692184: + default: + var1 = ta.INSTANCE; + var2 = serverKey(var0); + var3 = identityOf(var0); + if (var0.player != null) { + var6 = -1129203063; + } else { + var6 = 2089613822; + } + break; + case 2089613822: + reset(); + return; + } + } + } + + private static void send(Minecraft var0, boolean var1) { + JsonObject var2 = anb.actionBody("pat"); + if (var2 == null) { + pending.clear(); + queued.clear(); + } else { + var2.addProperty("uuid", identity); + var2.addProperty("server", server); + var2.addProperty("dim", dimension); + var2.addProperty("since", since); + var2.addProperty("want", var1); + if (!pending.isEmpty()) { + JsonArray var3 = new JsonArray(); + + for (int var4 = 0; var4 < pending.size(); var4++) { + JsonObject var5 = new JsonObject(); + var5.addProperty("e", pending.getInt(var4)); + var3.add(var5); + } + + var2.add("pats", var3); + pending.clear(); + queued.clear(); + } + + int var6 = epoch; + String var7 = server; + String var8 = dimension; + requestInFlight = (boolean)(((1)) != 0); + anb.post(var2) + .whenComplete( + (var4x, var5x) -> { + if (var5x == null && var4x != null && var4x.statusCode() == (-1920814618 ^ 1920814818) + ((-1920814618 & 1920814818) << 1)) { + try { + JsonObject var6x = JsonParser.parseString(var4x.body()).getAsJsonObject(); + JsonElement var7x = var6x.get("at"); + long var8x = var7x != null && var7x.isJsonPrimitive() + ? var7x.getAsLong() + : (486067099266175735L ^ -486067099266175735L) + ((486067099266175735L & -486067099266175735L) << 1); + JsonElement var10 = var6x.get("pats"); + JsonArray var11 = var10 != null && var10.isJsonArray() ? var10.getAsJsonArray() : new JsonArray(); + var0.execute(() -> { + apply(var6, var7, var8, var8x, var11); + requestInFlight = (boolean)(((0)) != 0); + }); + } catch (RuntimeException var12) { + requestInFlight = (boolean)(((0)) != 0); + id.warn( + Cif.SOCIAL, + "pat sync response parse failed", + var12 + ); + } + } else { + requestInFlight = (boolean)(((0)) != 0); + if (var4x != null && var4x.statusCode() != (-792950715 ^ 792950915) + ((-792950715 & 792950915) << 1)) { + id.warn( + Cif.SOCIAL, + "pat sync rejected with status {}", + var4x.statusCode() + ); + } else { + id.warn( + Cif.SOCIAL, + "pat sync failed: {}", + var5x == null ? "no response" : var5x.toString() + ); + } + } + } + ); + } + } + + private static void apply(int var0, String var1, String var2, long var3, JsonArray var5) { + Minecraft var6 = null; + ta var7 = null; + double var8 = 0.0; + double var10 = 0.0; + int var12 = 0; + Iterator var13 = null; + JsonElement var14 = null; + JsonObject var15 = null; + JsonElement var16 = null; + Entity var17 = null; + LivingEntity var18 = null; + JsonElement var19 = null; + long var20 = (6004618540523164487L | -6004618540523164487L) + (6004618540523164487L & -6004618540523164487L); + long var23 = (-4054343395436944253L ^ 4054343395436944253L) + ((-4054343395436944253L & 4054343395436944253L) << 1); + int var22 = 1564828271; + + while (true) { + switch (var22) { + case -1759336866: + return; + case -1693064291: + return; + case -1614028362: + return; + case -1586101540: + var22 = 1560136803; + break; + case -1502084155: + var22 = 1560136803; + break; + case -1473483189: + if (var18.distanceToSqr(var6.player) > var10) { + var22 = 1302511541; + } else { + var22 = -1055956897; + } + break; + case -1423539570: + if (var1.equals(server)) { + var22 = 43261036; + } else { + var22 = -1693064291; + } + break; + case -1389725784: + var20 = var23; + if (var12 != 0) { + var22 = -987578857; + } else { + var22 = 901079249; + } + break; + case -1055956897: + aim.getInstance().pat(var18); + var19 = var15.get("age"); + if (var19 != null) { + var22 = -568427966; + } else { + var22 = 564393859; + } + break; + case -987578857: + if (var20 <= (4372130254164064022L | -4372130254164060022L) + (4372130254164064022L & -4372130254164060022L)) { + var22 = 1356731509; + } else { + var22 = 901079249; + } + break; + case -820894497: + var23 = Math.max((-5196147751941791835L ^ 5196147751941791835L) + ((-5196147751941791835L & 5196147751941791835L) << 1), var19.getAsLong()); + var22 = -1389725784; + break; + case -705606570: + if (var0 == epoch) { + var22 = -1423539570; + } else { + var22 = -1693064291; + } + break; + case -568427966: + if (var19.isJsonPrimitive()) { + var22 = -820894497; + } else { + var22 = 564393859; + } + break; + case -373128930: + if (!var16.isJsonPrimitive()) { + var22 = 1030725312; + } else { + var22 = 499140800; + } + break; + case 43261036: + if (!var2.equals(dimension)) { + var22 = -1693064291; + } else { + var22 = 592799911; + } + break; + case 129070551: + var8 = var7.syncRadius(); + var10 = var8 * var8; + var12 = (var7.hearsOthers()) ? 1 : 0; + var13 = var5.iterator(); + var22 = 1560136803; + break; + case 474839606: + var18 = (LivingEntity)var17; + if (var17 == var6.player) { + var22 = -1586101540; + } else { + var22 = -1473483189; + } + break; + case 499140800: + var17 = var6.level.getEntity(var16.getAsInt()); + if (var17 instanceof LivingEntity) { + var22 = 474839606; + } else { + var22 = 1560136803; + } + break; + case 564393859: + var23 = (4336274959497518231L | -4336274959497518231L) + (4336274959497518231L & -4336274959497518231L); + var22 = -1389725784; + break; + case 592799911: + if (var3 > since) { + var22 = 1981929571; + } else { + var22 = 2027495001; + } + break; + case 650445877: + var15 = var14.getAsJsonObject(); + var16 = var15.get("e"); + if (var16 != null) { + var22 = -373128930; + } else { + var22 = 1560136803; + } + break; + case 901079249: + var22 = 1560136803; + break; + case 1030725312: + var22 = 1560136803; + break; + case 1193721445: + if (!var7.showsOthers()) { + var22 = -1614028362; + } else { + var22 = 129070551; + } + break; + case 1302511541: + var22 = 1560136803; + break; + case 1356731509: + var7.playPatSound(var18); + var22 = 901079249; + break; + case 1560136803: + if (var13.hasNext()) { + var22 = 2090140064; + } else { + var22 = -1759336866; + } + break; + case 1564828271: + default: + var6 = Minecraft.getInstance(); + var7 = ta.INSTANCE; + if (var6.player != null) { + var22 = 2059663911; + } else { + var22 = -1693064291; + } + break; + case 1981929571: + since = var3; + var22 = 2027495001; + break; + case 2027495001: + if (var7.isEnabled()) { + var22 = 1193721445; + } else { + var22 = -1614028362; + } + break; + case 2059663911: + if (var6.level != null) { + var22 = -705606570; + } else { + var22 = -1693064291; + } + break; + case 2090140064: + var14 = (JsonElement)var13.next(); + if (!var14.isJsonObject()) { + var22 = -1502084155; + } else { + var22 = 650445877; + } + } + } + } + + private static void reset() { + pending.clear(); + queued.clear(); + server = null; + dimension = null; + identity = null; + since = (3605848026931421629L | -3605848026931421629L) + (3605848026931421629L & -3605848026931421629L); + neighbourNear = (boolean)(((0)) != 0); + ticks = 0; + } + + private static boolean hasEvoNeighbour(Minecraft var0, double var1) { + double var3 = 0.0; + Iterator var5 = null; + AbstractClientPlayer var6 = null; + int var7 = -2134048510; + + while (true) { + switch (var7) { + case -2134262081: + var7 = -1571298388; + break; + case -2134048510: + default: + var3 = var1 * var1; + var5 = var0.level.players().iterator(); + var7 = -1571298388; + break; + case -1934016070: + var7 = -1571298388; + break; + case -1571298388: + if (var5.hasNext()) { + var7 = -770826797; + } else { + var7 = -1222779868; + } + break; + case -1222779868: + return (boolean)(((0)) != 0); + case -1010591044: + if (aiq.isEvoUser(var6.getUUID())) { + var7 = -766673612; + } else { + var7 = -2134262081; + } + break; + case -770826797: + var6 = (AbstractClientPlayer)var5.next(); + if (var6 == var0.player) { + var7 = -1934016070; + } else { + var7 = -325349353; + } + break; + case -766673612: + return (boolean)(((1)) != 0); + case -325349353: + if (var6.distanceToSqr(var0.player) <= var3) { + var7 = -1010591044; + } else { + var7 = -2134262081; + } + } + } + } + + private static String serverKey(Minecraft var0) { + ServerData var1 = null; + String var3 = null; + int var2 = 969989109; + + while (true) { + switch (var2) { + case -1594587827: + var3 = null; + var2 = -1586951775; + break; + case -1586951775: + return var3; + case -765294996: + var3 = var1.ip; + var2 = -1586951775; + break; + case 969989109: + default: + var1 = var0.getCurrentServer(); + if (var1 == null) { + var2 = -1594587827; + } else { + var2 = -765294996; + } + } + } + } + + private static String identityOf(Minecraft var0) { + String var1 = null; + String var2 = null; + String var4 = null; + int var3 = 473519361; + + while (true) { + switch (var3) { + case -2098250239: + return null; + case -1756427005: + if (var2.length() > (-32638914 | 32638946) + (-32638914 & 32638946)) { + var3 = -2098250239; + } else { + var3 = -1640635339; + } + break; + case -1640635339: + return var2.toLowerCase(Locale.ROOT); + case -1625248226: + var2 = var1.trim(); + if (!var2.isEmpty()) { + var3 = -1756427005; + } else { + var3 = -2098250239; + } + break; + case -1369012000: + var1 = var4; + if (var1 == null) { + var3 = 1762548377; + } else { + var3 = -1625248226; + } + break; + case -1207999734: + var4 = var0.player.getScoreboardName(); + var3 = -1369012000; + break; + case -914362830: + var4 = null; + var3 = -1369012000; + break; + case 473519361: + default: + if (var0.player == null) { + var3 = -914362830; + } else { + var3 = -1207999734; + } + break; + case 1762548377: + return null; + } + } + } +} diff --git a/src/main/java/defpackage/aio.java b/src/main/java/defpackage/aio.java new file mode 100644 index 0000000..f8fc378 --- /dev/null +++ b/src/main/java/defpackage/aio.java @@ -0,0 +1,336 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap.Entry; +import it.unimi.dsi.fastutil.objects.ObjectIterator; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.Identifier; +import net.minecraft.util.LightCoordsUtil; +import net.minecraft.world.entity.EntityAttachment; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.phys.Vec3; +import org.joml.Quaternionf; +import org.joml.Vector3f; + +public final class aio implements aqg { + private static final Identifier TEXTURE = bz.id("textures/cosmetic/pat/pat_hand.png"); + private static final int MAX_VISIBLE_PATS = 16; + private static final int CORNERS = 4; + private static final int AXES = 3; + private static final int FLOATS_PER_QUAD = 12; + private static final int RIGHT_SPLIT = 2; + private static final float FRAME_SPAN = 0.2F; + private static final float UV_INSET = 0.0015F; + private static final float NAME_TAG_FALLBACK_GAP = 0.5F; + private static final float HALF = 0.5F; + private static final int OPAQUE_WHITE = -1; + private static final float NORMAL_X = 0.0F; + private static final float NORMAL_Y = 1.0F; + private static final float NORMAL_Z = 0.0F; + private static final float[] CORNER_V; + private static final aio INSTANCE = new aio(); + private final float[] corners = new float[192]; + private final float[] minU = new float[16]; + private final float[] maxU = new float[16]; + private final int[] lights = new int[16]; + private final Vector3f scratchRight = new Vector3f(); + private final Vector3f scratchUp = new Vector3f(); + + private aio() { + } + + public static aio getInstance() { + return INSTANCE; + } + + public void onWorldRender(LevelRenderContext var1) { + ta var2 = null; + aim var3 = null; + long var4 = (1869778261060929744L ^ -1869778261060929744L) + ((1869778261060929744L & -1869778261060929744L) << 1); + long var6 = (-8949496360586353629L ^ 8949496360586353629L) + ((-8949496360586353629L & 8949496360586353629L) << 1); + PoseStack var8 = null; + SubmitNodeCollector var9 = null; + Camera var10 = null; + int var11 = 0; + int var12 = 0; + int var13 = -25887463; + + while (true) { + switch (var13) { + case -721135407: + if (!var3.isEmpty()) { + var13 = 570497489; + } else { + var13 = 207464498; + } + break; + case -398855481: + var4 = System.currentTimeMillis(); + var6 = var2.durationMillis(); + var3.prune(mc.level, var4, var6); + if (var3.isEmpty()) { + var13 = 2147014241; + } else { + var13 = 1747577231; + } + break; + case -25887463: + default: + var2 = ta.INSTANCE; + var3 = aim.getInstance(); + if (mc.level == null) { + var13 = 846121449; + } else { + var13 = 1475512480; + } + break; + case 207464498: + return; + case 234460188: + var11 = this.collect(var3, var2, var10, var4, var6); + if (var11 == 0) { + var13 = 1886554511; + } else { + var13 = 1115802833; + } + break; + case 245996176: + if (var9 != null) { + var13 = 405569304; + } else { + var13 = 1405188336; + } + break; + case 405569304: + if (var10 == null) { + var13 = 1405188336; + } else { + var13 = 234460188; + } + break; + case 570497489: + var3.clear(); + var13 = 207464498; + break; + case 846121449: + var3.clear(); + return; + case 1115802833: + var12 = var11; + var9.submitCustomGeometry( + var8, + RenderTypes.entityTranslucent(TEXTURE), + (var2x, var3x) -> { + for (int var4x = 0; var4x < var12; var4x++) { + int var5 = var4x * (12); + int var6x = this.lights[var4x]; + float var7 = this.minU[var4x]; + float var8x = this.maxU[var4x]; + + for (int var9x = 0; + var9x < 4; + var9x++ + ) { + int var10x = var5 + var9x * (3); + var3x.addVertex( + var2x, + this.corners[var10x], + this.corners[var10x + 1], + this.corners[var10x + 2] + ) + .setColor((-661926889 | 661926888) + (-661926889 & 661926888)) + .setUv(var9x < 2? var7 : var8x, CORNER_V[var9x]) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var6x) + .setNormal(var2x, 0.0F, 1.0F, 0.0F); + } + } + } + ); + return; + case 1405188336: + return; + case 1475512480: + if (!var2.isEnabled()) { + var13 = -721135407; + } else { + var13 = -398855481; + } + break; + case 1747577231: + var8 = var1.poseStack(); + var9 = var1.submitNodeCollector(); + var10 = mc.getEntityRenderDispatcher().camera; + if (var8 != null) { + var13 = 245996176; + } else { + var13 = 1405188336; + } + break; + case 1886554511: + return; + case 2147014241: + return; + } + } + } + + private int collect(aim var1, ta var2, Camera var3, long var4, long var6) { + Quaternionf var8 = null; + Vector3f var9 = null; + Vector3f var10 = null; + Vec3 var11 = null; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + int var22 = 0; + ObjectIterator var23 = null; + ail var24 = null; + LivingEntity var25 = null; + float var26 = 0.0F; + float var27 = 0.0F; + Vec3 var28 = null; + double var29 = 0.0; + float var31 = 0.0F; + float var32 = 0.0F; + float var33 = 0.0F; + int var34 = 0; + int var35 = 0; + int var36 = -780670675; + + while (true) { + switch (var36) { + case -1440147710: + var26 = aim.eased(var24.linear(var4, var6)); + var27 = aim.squashOf(var26, var13, var24.height()); + var28 = var25.getPosition(var12); + var29 = var28.y + nameTagHeight(var25, var12) * var27 + var15; + var31 = (float)(var28.x - var11.x); + var32 = (float)(var29 - var11.y); + var33 = (float)(var28.z - var11.z); + var34 = var22 * (12); + this.writeCorner(var34, var31 - var16 + var19, var32 - var17 + var20, var33 - var18 + var21); + this.writeCorner( + var34 + 3, var31 - var16 - var19, var32 - var17 - var20, var33 - var18 - var21 + ); + this.writeCorner( + var34 + 6, var31 + var16 - var19, var32 + var17 - var20, var33 + var18 - var21 + ); + this.writeCorner( + var34 + 9, var31 + var16 + var19, var32 + var17 + var20, var33 + var18 + var21 + ); + var35 = aim.frameOf(var26); + this.minU[var22] = var35 * 0.2F + 0.0015F; + this.maxU[var22] = (var35 + (1976053565 | -1976053564) + (1976053565 & -1976053564)) * 0.2F - 0.0015F; + this.lights[var22] = LightCoordsUtil.getLightCoords(var25.level(), BlockPos.containing(var28.x, var29, var28.z)); + var22++; + var36 = 501783342; + break; + case -837301266: + return var22; + case -780670675: + default: + var8 = var3.rotation(); + var9 = var8.transform(1.0F, 0.0F, 0.0F, this.scratchRight); + var10 = var8.transform(0.0F, 1.0F, 0.0F, this.scratchUp); + var11 = var3.position(); + var12 = mc.getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((-1365530967 ^ 1365530967) + ((-1365530967 & 1365530967) << 1))) != 0)); + var13 = var2.patWeight(); + var14 = var2.handScale() * 0.5F; + var15 = var2.heightOffset(); + var16 = var9.x * var14; + var17 = var9.y * var14; + var18 = var9.z * var14; + var19 = var10.x * var14; + var20 = var10.y * var14; + var21 = var10.z * var14; + var22 = 0; + var23 = var1.entries().fastIterator(); + var36 = 501783342; + break; + case 260468475: + if (var22 < (1248840445 ^ -1248840429) + ((1248840445 & -1248840429) << 1)) { + var36 = 275042566; + } else { + var36 = -837301266; + } + break; + case 275042566: + var24 = (ail)((Entry)var23.next()).getValue(); + var25 = var24.entity(); + if (var25.isInvisible()) { + var36 = 366350300; + } else { + var36 = -1440147710; + } + break; + case 366350300: + var36 = 501783342; + break; + case 501783342: + if (var23.hasNext()) { + var36 = 260468475; + } else { + var36 = -837301266; + } + } + } + } + + private void writeCorner(int var1, float var2, float var3, float var4) { + this.corners[var1] = var2; + this.corners[var1 + 1] = var3; + this.corners[var1 + 2] = var4; + } + + private static float nameTagHeight(LivingEntity var0, float var1) { + Vec3 var2 = null; + float var4 = 0.0F; + int var3 = -797425218; + + while (true) { + switch (var3) { + case -1368465518: + return var4; + case -797425218: + default: + var2 = var0.getAttachments() + .getNullable(EntityAttachment.NAME_TAG, 0, var0.getViewYRot(var1)); + if (var2 != null) { + var3 = 1002135491; + } else { + var3 = -194467609; + } + break; + case -194467609: + var4 = var0.getBbHeight() + 0.5F; + var3 = -1368465518; + break; + case 1002135491: + var4 = (float)var2.y; + var3 = -1368465518; + } + } + } + + static { + float[] var10000 = new float[4]; + var10000[0] = 0.0F; + var10000[1] = 1.0F; + var10000[2] = 1.0F; + var10000[3] = 0.0F; + CORNER_V = var10000; + } +} diff --git a/src/main/java/defpackage/aip.java b/src/main/java/defpackage/aip.java new file mode 100644 index 0000000..a4e95fb --- /dev/null +++ b/src/main/java/defpackage/aip.java @@ -0,0 +1,64 @@ +package defpackage; + +import java.util.Map; +import java.util.concurrent.ThreadLocalRandom; +import net.minecraft.sounds.SoundEvent; + +public final class aip { + private static final String SOUND_PREFIX = "pat."; + private static final String PAT = "pat.pat"; + private static final float MIN_PITCH = 0.92F; + private static final float MAX_PITCH = 1.12F; + private static Map events = Map.of(); + + private aip() { + } + + public static void initialize() { + int var0 = -255771619; + + while (true) { + switch (var0) { + case -284430838: + return; + case -255771619: + default: + if (!events.isEmpty()) { + var0 = -284430838; + } else { + var0 = 392861060; + } + break; + case 392861060: + events = mn.register("pat."); + return; + } + } + } + + public static void playPat(double var0, double var2, double var4, float var6) { + SoundEvent var7 = null; + float var8 = 0.0F; + int var9 = -1911274519; + + while (true) { + switch (var9) { + case -1911274519: + default: + var7 = events.get("pat.pat"); + if (var7 == null) { + var9 = 871317162; + } else { + var9 = 1887039924; + } + break; + case 871317162: + return; + case 1887039924: + var8 = ThreadLocalRandom.current().nextFloat(0.92F, 1.12F); + bz.getInstance().getSoundManager().playAt(var7, var0, var2, var4, var6, var8); + return; + } + } + } +} diff --git a/src/main/java/defpackage/aiq.java b/src/main/java/defpackage/aiq.java new file mode 100644 index 0000000..ce6f821 --- /dev/null +++ b/src/main/java/defpackage/aiq.java @@ -0,0 +1,1017 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpRequest.BodyPublishers; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.Map.Entry; +import java.util.concurrent.ConcurrentHashMap; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.FontDescription.Resource; +import net.minecraft.resources.Identifier; + +public final class aiq { + private static final Resource EVO_ICON_FONT = new Resource( + Identifier.fromNamespaceAndPath( + "evolution", + "tab_icon" + ) + ); + private static final int INTERVAL_TICKS = 100; + private static final int FIRST_POLL_DELAY_TICKS = 20; + private static final int MAX_WANT = 150; + private static final String REQUEST_FAILURE = "cosmetic sync request failed: {}"; + private static final String RESPONSE_FAILURE = "cosmetic sync response parse failed"; + private static final String STATUS_FAILURE = "cosmetic sync rejected with status {}"; + private static final String REMOTE_APPLIED = "applied account cosmetics from sync: {}"; + private static final HttpClient HTTP = HttpClient.newBuilder() + .connectTimeout(Duration.ofSeconds((7145350029230022580L | -7145350029230022570L) + (7145350029230022580L & -7145350029230022570L))) + .build(); + private static final int UNKNOWN_REVISION = -1; + private static final Map appliedByUuid = new HashMap<>(); + private static final Set evoUsersByUuid = ConcurrentHashMap.newKeySet(); + private static aee lastUploaded; + private static boolean selfSynced; + private static boolean sessionUploaded; + private static boolean localRestored; + private static volatile boolean requestInFlight; + private static volatile boolean ownershipFetched; + private static int serverRevision = -1; + private static int ticks = 80; + + private aiq() { + } + + public static void initialize() { + air.computeAsync(); + aeq.restore(); + adx.restore(); + ClientTickEvents.END_CLIENT_TICK.register(aiq::tick); + } + + public static boolean isEvoUser(UUID var0) { + Minecraft var1 = null; + int var2 = -1948548327; + + while (true) { + switch (var2) { + case -1948548327: + default: + if (var0 != null) { + var2 = -183826540; + } else { + var2 = -1396105418; + } + break; + case -1845969766: + return (boolean)(((1)) != 0); + case -1396105418: + return (boolean)(((0)) != 0); + case -433959567: + return evoUsersByUuid.contains(dashless(var0)); + case -183826540: + if (!sw.INSTANCE.syncSetting.isEnabled()) { + var2 = -1396105418; + } else { + var2 = 985610875; + } + break; + case -102186119: + if (var0.equals(var1.player.getUUID())) { + var2 = -1845969766; + } else { + var2 = -433959567; + } + break; + case 985610875: + var1 = Minecraft.getInstance(); + if (var1.player != null) { + var2 = -102186119; + } else { + var2 = -433959567; + } + } + } + } + + public static Component withEvoIcon(Component var0) { + MutableComponent var1 = Component.literal("") + .setStyle(Style.EMPTY.withFont(EVO_ICON_FONT)); + return Component.empty().append(var1).append(" ").append(var0); + } + + private static void tick(Minecraft var0) { + if (var0.player != null && var0.getConnection() != null) { + if (!localRestored) { + localRestored = (boolean)(((1)) != 0); + aef.restoreOnJoin(var0.player.getScoreboardName()); + } + + if (!requestInFlight && (ticks += (461459082 | -461459081) + (461459082 & -461459081)) >= (-347784284 | 347784384) + (-347784284 & 347784384)) { + ticks = 0; + if (!sw.INSTANCE.syncSetting.isEnabled()) { + if (!ownershipFetched) { + requestOwnership(var0); + } + } else { + String var1 = dashless(var0.player.getUUID()); + String var2 = var0.player.getScoreboardName(); + aee var3 = aee.readFor(var2); + HashMap var4 = new HashMap(); + + for (PlayerInfo var6 : var0.getConnection().getOnlinePlayers()) { + if (var6.getProfile() != null && var6.getProfile().id() != null) { + String var7 = dashless(var6.getProfile().id()); + if (!var7.equals(var1)) { + var4.put(var7, var6.getProfile().name()); + } + + if (var4.size() >= (-1223575131 | 1223575281) + (-1223575131 & 1223575281)) { + break; + } + } + } + + JsonObject var14 = new JsonObject(); + int var15 = !selfSynced || sessionUploaded && var3.equals(lastUploaded) + ? 0: 1; + JsonObject var16 = new JsonObject(); + if (!selfSynced || var15 != 0) { + var16.addProperty("uuid", var1); + var16.addProperty("name", var2); + } + + String var8 = air.get(); + if (var8 != null) { + var16.addProperty("hwid", var8); + } + + if (serverRevision != (-1722723829 ^ 1722723828) + ((-1722723829 & 1722723828) << 1)) { + var16.addProperty("rev", serverRevision); + } + + if (var15 != 0) { + var16.add("cosmetics", var3.toJson()); + } + + var14.add("me", var16); + List var9 = aeq.pendingKeys(); + if (!var9.isEmpty()) { + JsonArray var10 = new JsonArray(); + + for (String var12 : var9) { + var10.add(var12); + } + + var14.add("skins", var10); + } + + JsonArray var17 = new JsonArray(); + + for (String var20 : var4.keySet()) { + var17.add(var20); + } + + var14.add("want", var17); + aee var19 = var15 != 0 ? var3 : null; + String var21 = alp.get("cosmetic_sync"); + if (var21 != null) { + requestInFlight = (boolean)(((1)) != 0); + HttpRequest var13 = HttpRequest.newBuilder(URI.create(var21)) + .timeout(Duration.ofSeconds((8711299310755869086L | -8711299310755869071L) + (8711299310755869086L & -8711299310755869071L))) + .header( + "Content-Type", + "application/json" + ) + .POST(BodyPublishers.ofString(var14.toString(), StandardCharsets.UTF_8)) + .build(); + ld.sendAsync(HTTP, var13) + .whenComplete( + (var5, var6x) -> { + requestInFlight = (boolean)(((0)) != 0); + if (var6x != null) { + id.warn( + Cif.NETWORK, + "cosmetic sync request failed: {}", + var6x.toString() + ); + } else if (var5 != null) { + if (var5.statusCode() != (-887608638 | 887608838) + (-887608638 & 887608838)) { + id.warn( + Cif.NETWORK, + "cosmetic sync rejected with status {}", + var5.statusCode() + ); + } else { + try { + JsonObject var7x = JsonParser.parseString(var5.body()).getAsJsonObject(); + JsonObject var8x = var7x.getAsJsonObject("players"); + JsonElement var9x = var7x.get("me"); + int var10x = revisionOf(var7x.get("rev")); + JsonElement var11 = var7x.get("library"); + JsonElement var12x = var7x.get("owned"); + JsonObject var13x = var7x.has("skinData") + && var7x.get("skinData") + .isJsonObject() + ? var7x.getAsJsonObject("skinData") + : null; + aeq.acceptDownloads(var9, var13x); + var0.execute(() -> { + applyOwned(var12x); + applyLibrary(var11); + applyResponse(var0, var2, var19, var9x, var10x, var4, var8x); + }); + } catch (Exception var14x) { + id.warn( + Cif.COSMETIC, + "cosmetic sync response parse failed", + var14x + ); + } + } + } + } + ); + } + } + } + } else { + resetSession(); + } + } + + private static void requestOwnership(Minecraft var0) { + String var1 = null; + String var2 = null; + JsonObject var3 = null; + JsonObject var4 = null; + HttpRequest var5 = null; + int var6 = 1882658905; + + while (true) { + switch (var6) { + case -1296025571: + return; + case -684654890: + var3 = new JsonObject(); + var3.addProperty("hwid", var1); + var4 = new JsonObject(); + var4.add("me", var3); + requestInFlight = (boolean)(((1)) != 0); + var5 = HttpRequest.newBuilder(URI.create(var2)) + .timeout(Duration.ofSeconds((-8624320583147234828L ^ 8624320583147234843L) + ((-8624320583147234828L & 8624320583147234843L) << 1))) + .header( + "Content-Type", + "application/json" + ) + .POST(BodyPublishers.ofString(var4.toString(), StandardCharsets.UTF_8)) + .build(); + ld.sendAsync(HTTP, var5) + .whenComplete( + (var1x, var2x) -> { + requestInFlight = (boolean)(((0)) != 0); + if (var2x != null) { + id.warn( + Cif.NETWORK, + "cosmetic sync request failed: {}", + var2x.toString() + ); + } else if (var1x != null) { + if (var1x.statusCode() != (1127483387 | -1127483187) + (1127483387 & -1127483187)) { + id.warn( + Cif.NETWORK, + "cosmetic sync rejected with status {}", + var1x.statusCode() + ); + } else { + try { + JsonElement var3x = JsonParser.parseString(var1x.body()) + .getAsJsonObject() + .get("owned"); + var0.execute(() -> applyOwned(var3x)); + } catch (Exception var4x) { + id.warn( + Cif.COSMETIC, + "cosmetic sync response parse failed", + var4x + ); + } + } + } + } + ); + return; + case 1882658905: + default: + var1 = air.get(); + var2 = alp.get("cosmetic_sync"); + if (var1 != null) { + var6 = 2033535676; + } else { + var6 = -1296025571; + } + break; + case 2033535676: + if (var2 == null) { + var6 = -1296025571; + } else { + var6 = -684654890; + } + } + } + } + + private static void applyOwned(JsonElement var0) { + ArrayList var1 = null; + Iterator var2 = null; + JsonElement var3 = null; + int var4 = 622281324; + + while (true) { + switch (var4) { + case -1658771381: + var1.add(var3.getAsString()); + var4 = 1874681942; + break; + case -1282238785: + if (var2.hasNext()) { + var4 = -848434798; + } else { + var4 = -651906938; + } + break; + case -972882283: + var1 = new ArrayList(); + var2 = var0.getAsJsonArray().iterator(); + var4 = -1282238785; + break; + case -848434798: + var3 = (JsonElement)var2.next(); + if (var3 != null) { + var4 = 1588763145; + } else { + var4 = 1874681942; + } + break; + case -651906938: + adx.accept(var1); + ownershipFetched = (boolean)(((1)) != 0); + return; + case 622281324: + default: + if (var0 != null) { + var4 = 1828980143; + } else { + var4 = 1362954790; + } + break; + case 1362954790: + return; + case 1588763145: + if (var3.isJsonPrimitive()) { + var4 = -1658771381; + } else { + var4 = 1874681942; + } + break; + case 1828980143: + if (!var0.isJsonArray()) { + var4 = 1362954790; + } else { + var4 = -972882283; + } + break; + case 1874681942: + var4 = -1282238785; + } + } + } + + private static void applyLibrary(JsonElement var0) { + ArrayList var1 = null; + Iterator var2 = null; + JsonElement var3 = null; + JsonObject var4 = null; + JsonElement var5 = null; + JsonElement var6 = null; + String var7 = null; + String var9 = null; + int var8 = 577696157; + + while (true) { + switch (var8) { + case -2028990601: + var1 = new ArrayList(); + var2 = var0.getAsJsonArray().iterator(); + var8 = -709958010; + break; + case -2016958778: + aeq.setLibrary(var1); + return; + case -1926083453: + var4 = var3.getAsJsonObject(); + var5 = var4.get("key"); + if (var5 != null) { + var8 = -1575346063; + } else { + var8 = -709958010; + } + break; + case -1575346063: + if (!var5.isJsonPrimitive()) { + var8 = -759991344; + } else { + var8 = 2359292; + } + break; + case -1314743359: + var9 = var5.getAsString(); + var8 = 1442553882; + break; + case -759991344: + var8 = -709958010; + break; + case -709958010: + if (var2.hasNext()) { + var8 = 1508718239; + } else { + var8 = -2016958778; + } + break; + case -169938377: + if (!var0.isJsonArray()) { + var8 = 897196063; + } else { + var8 = -2028990601; + } + break; + case 2359292: + var6 = var4.get("name"); + if (var6 != null) { + var8 = 1320290336; + } else { + var8 = -1314743359; + } + break; + case 534536511: + var8 = -709958010; + break; + case 577696157: + default: + if (var0 != null) { + var8 = -169938377; + } else { + var8 = 897196063; + } + break; + case 897196063: + return; + case 948016927: + var9 = var6.getAsString(); + var8 = 1442553882; + break; + case 1320290336: + if (var6.isJsonPrimitive()) { + var8 = 948016927; + } else { + var8 = -1314743359; + } + break; + case 1442553882: + var7 = var9; + var1.add(new aep(var5.getAsString(), var7)); + var8 = -709958010; + break; + case 1508718239: + var3 = (JsonElement)var2.next(); + if (!var3.isJsonObject()) { + var8 = 534536511; + } else { + var8 = -1926083453; + } + } + } + } + + private static void applyResponse(Minecraft var0, String var1, aee var2, JsonElement var3, int var4, Map var5, JsonObject var6) { + aee var7 = null; + Iterator var8 = null; + Entry var9 = null; + String var10 = null; + String var11 = null; + aee var12 = null; + aee var13 = null; + int var14 = -734868645; + + while (true) { + switch (var14) { + case -2021626164: + if (var8.hasNext()) { + var14 = 2093245097; + } else { + var14 = 1595136873; + } + break; + case -1899083876: + if (var7 != null) { + var14 = -636518163; + } else { + var14 = 966260073; + } + break; + case -1773658459: + if (var12.isEmpty()) { + var14 = -690109453; + } else { + var14 = 1422703202; + } + break; + case -1459072263: + var14 = -2021626164; + break; + case -1392182057: + return; + case -1258778631: + serverRevision = var4; + var14 = 2009731378; + break; + case -894918131: + evoUsersByUuid.add(var10); + var14 = -303148797; + break; + case -734868645: + default: + if (var0.player == null) { + var14 = -654332199; + } else { + var14 = 159992498; + } + break; + case -711749855: + var7 = aee.fromJson(var3); + if (!selfSynced) { + var14 = 444563632; + } else { + var14 = -1899083876; + } + break; + case -690109453: + appliedByUuid.put(var10, var12); + var14 = -2021626164; + break; + case -654332199: + return; + case -636518163: + if (var4 != serverRevision) { + var14 = 73015087; + } else { + var14 = 966260073; + } + break; + case -635405031: + lastUploaded = var2; + sessionUploaded = (boolean)(((1)) != 0); + var14 = -711749855; + break; + case -623332136: + lastUploaded = var7; + var14 = 1178014542; + break; + case -519204459: + return; + case -423408453: + var8 = var5.entrySet().iterator(); + var14 = -2021626164; + break; + case -303148797: + var12 = aee.fromJson(var6.get(var10)); + if (var12 == null) { + var14 = 1219906870; + } else { + var14 = -215927698; + } + break; + case -215927698: + var13 = appliedByUuid.get(var10); + if (var12.equals(var13)) { + var14 = -1459072263; + } else { + var14 = 1467116794; + } + break; + case 73015087: + adoptRemote(var1, var7); + var14 = 966260073; + break; + case 159992498: + if (var2 != null) { + var14 = -635405031; + } else { + var14 = -711749855; + } + break; + case 444563632: + selfSynced = (boolean)(((1)) != 0); + mergeIntoSelf(var1, var7); + var14 = 966260073; + break; + case 966260073: + if (var7 != null) { + var14 = -623332136; + } else { + var14 = 1178014542; + } + break; + case 1178014542: + if (var4 != (1912485550 ^ -1912485551) + ((1912485550 & -1912485551) << 1)) { + var14 = -1258778631; + } else { + var14 = 2009731378; + } + break; + case 1197034573: + ticks = 99; + var14 = -519204459; + break; + case 1219906870: + var12 = aee.EMPTY; + var14 = -215927698; + break; + case 1422703202: + var12.applyTo(var11); + appliedByUuid.put(var10, var12); + var14 = -2021626164; + break; + case 1467116794: + if (var13 == null) { + var14 = -1773658459; + } else { + var14 = 1422703202; + } + break; + case 1595136873: + if (aeq.hasPendingKeys()) { + var14 = 1197034573; + } else { + var14 = -519204459; + } + break; + case 2009731378: + if (var6 == null) { + var14 = -1392182057; + } else { + var14 = -423408453; + } + break; + case 2093245097: + var9 = (Entry)var8.next(); + var10 = (String)var9.getKey(); + var11 = (String)var9.getValue(); + if (var6.has(var10)) { + var14 = -894918131; + } else { + var14 = -303148797; + } + } + } + } + + private static void adoptRemote(String var0, aee var1) { + int var2 = 1013999334; + + while (true) { + switch (var2) { + case 338763405: + var1.applyTo(var0); + aef.persistIfLocal(var0); + id.debug( + Cif.COSMETIC, + "applied account cosmetics from sync: {}", + var1.toJson() + ); + return; + case 1013999334: + default: + if (var1.equals(aee.readFor(var0))) { + var2 = 1938938710; + } else { + var2 = 338763405; + } + break; + case 1938938710: + return; + } + } + } + + private static int revisionOf(JsonElement var0) { + int var1 = 0; + int var3 = 0; + int var2 = 445039530; + + while (true) { + switch (var2) { + case -1700197393: + return var3; + case -187635381: + var1 = var0.getAsInt(); + if (var1 < 0) { + var2 = 625429037; + } else { + var2 = 635228481; + } + break; + case 374255398: + if (var0.isJsonPrimitive()) { + var2 = 1645859705; + } else { + var2 = 736167209; + } + break; + case 445039530: + default: + if (var0 != null) { + var2 = 374255398; + } else { + var2 = 736167209; + } + break; + case 625429037: + var3 = -1; + var2 = -1700197393; + break; + case 635228481: + var3 = var1; + var2 = -1700197393; + break; + case 736167209: + return -1; + case 1645859705: + if (!var0.getAsJsonPrimitive().isNumber()) { + var2 = 736167209; + } else { + var2 = -187635381; + } + } + } + } + + private static void mergeIntoSelf(String var0, aee var1) { + aee var2 = null; + int var3 = 397990460; + + while (true) { + switch (var3) { + case -2040729212: + adl.applyKey(var0, var1.backpack()); + var3 = 549050829; + break; + case -1958386305: + if (var2.melee() == null) { + var3 = -218714560; + } else { + var3 = -1843364185; + } + break; + case -1843364185: + if (var2.playerskin() == null) { + var3 = -1693607817; + } else { + var3 = 408877833; + } + break; + case -1837102523: + if (var1.cape() != null) { + var3 = -884083080; + } else { + var3 = 1714453214; + } + break; + case -1693607817: + if (var1.playerskin() != null) { + var3 = -1528024991; + } else { + var3 = 408877833; + } + break; + case -1528024991: + aeq.applyKey(var0, var1.playerskin()); + var3 = 408877833; + break; + case -1181932397: + ahv.applyKey(var1.melee()); + var3 = -1843364185; + break; + case -1065977761: + return; + case -924275815: + aey.applyKey(var0, var1.skin()); + var3 = -202190829; + break; + case -915258939: + aeo.applyKey(var0, var1.nametag()); + var3 = -1958386305; + break; + case -884083080: + aee.applyCape(var0, var1.cape()); + var3 = 1714453214; + break; + case -782087078: + if (var2.backpack() == null) { + var3 = -231471481; + } else { + var3 = 549050829; + } + break; + case -231471481: + if (var1.backpack() != null) { + var3 = -2040729212; + } else { + var3 = 549050829; + } + break; + case -218714560: + if (var1.melee() != null) { + var3 = -1181932397; + } else { + var3 = -1843364185; + } + break; + case -202190829: + if (var2.nametag() == null) { + var3 = 1311249469; + } else { + var3 = -1958386305; + } + break; + case 172127300: + return; + case 235240929: + if (var2.hat() == null) { + var3 = 917591509; + } else { + var3 = -782087078; + } + break; + case 261989640: + if (var1.isEmpty()) { + var3 = 172127300; + } else { + var3 = 785526435; + } + break; + case 397990460: + default: + if (var1 != null) { + var3 = 261989640; + } else { + var3 = 172127300; + } + break; + case 408877833: + if (!aee.readFor(var0).isEmpty()) { + var3 = 539925568; + } else { + var3 = -1065977761; + } + break; + case 539925568: + adq.getInstance().setEnabled((boolean)((((730901703 | -730901702) + (730901703 & -730901702))) != 0)); + var3 = -1065977761; + break; + case 549050829: + if (var2.skin() == null) { + var3 = 1202233899; + } else { + var3 = -202190829; + } + break; + case 785526435: + var2 = aee.readFor(var0); + if (var2.cape() == null) { + var3 = -1837102523; + } else { + var3 = 1714453214; + } + break; + case 917591509: + if (var1.hat() != null) { + var3 = 1135602271; + } else { + var3 = -782087078; + } + break; + case 1135602271: + aek.applyKey(var0, var1.hat()); + var3 = -782087078; + break; + case 1202233899: + if (var1.skin() != null) { + var3 = -924275815; + } else { + var3 = -202190829; + } + break; + case 1311249469: + if (var1.nametag() != null) { + var3 = -915258939; + } else { + var3 = -1958386305; + } + break; + case 1318829604: + afe.applyKey(var0, var1.wing()); + var3 = 235240929; + break; + case 1714453214: + if (var2.wing() == null) { + var3 = 2110840239; + } else { + var3 = 235240929; + } + break; + case 2110840239: + if (var1.wing() != null) { + var3 = 1318829604; + } else { + var3 = 235240929; + } + } + } + } + + private static String dashless(UUID var0) { + return var0.toString().replace("-", "").toLowerCase(Locale.ROOT); + } + + private static void resetSession() { + int var0 = 1063992893; + + while (true) { + switch (var0) { + case -255067456: + if (!appliedByUuid.isEmpty()) { + var0 = 623463823; + } else { + var0 = 1148430665; + } + break; + case 623463823: + appliedByUuid.clear(); + evoUsersByUuid.clear(); + aeo.clearCache(); + lastUploaded = null; + selfSynced = (boolean)(((0)) != 0); + sessionUploaded = (boolean)(((0)) != 0); + localRestored = (boolean)(((0)) != 0); + ownershipFetched = (boolean)(((0)) != 0); + serverRevision = -1; + ticks = 80; + var0 = 1148430665; + break; + case 1063992893: + default: + if (!selfSynced) { + var0 = 1719913008; + } else { + var0 = 623463823; + } + break; + case 1148430665: + return; + case 1719913008: + if (!localRestored) { + var0 = 2083638051; + } else { + var0 = 623463823; + } + break; + case 2083638051: + if (!ownershipFetched) { + var0 = -255067456; + } else { + var0 = 623463823; + } + } + } + } +} diff --git a/src/main/java/defpackage/air.java b/src/main/java/defpackage/air.java new file mode 100644 index 0000000..cea3485 --- /dev/null +++ b/src/main/java/defpackage/air.java @@ -0,0 +1,330 @@ +package defpackage; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.NetworkInterface; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.security.MessageDigest; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HexFormat; +import java.util.Locale; +import java.util.concurrent.TimeUnit; + +public final class air { + private static final String PROVIDED_ENV = "EVO_HWID"; + private static final int MIN_LENGTH = 16; + private static final int MAX_LENGTH = 128; + private static volatile String cached; + private static volatile boolean started; + + private air() { + } + + public static String get() { + return cached; + } + + public static synchronized void computeAsync() { + String var0 = null; + Thread var1 = null; + int var2 = -741491305; + + while (true) { + switch (var2) { + case -1848711058: + cached = var0; + return; + case -891482571: + var1 = new Thread(() -> cached = compute(), "evo-hwid"); + var1.setDaemon((boolean)((((-1591992604 | 1591992605) + (-1591992604 & 1591992605))) != 0)); + var1.start(); + return; + case -741491305: + default: + if (started) { + var2 = -691367353; + } else { + var2 = 1466046274; + } + break; + case -691367353: + return; + case 1466046274: + started = (boolean)(((1)) != 0); + var0 = provided(); + if (var0 != null) { + var2 = -1848711058; + } else { + var2 = -891482571; + } + } + } + } + + private static String provided() { + String var0 = null; + String var1 = null; + int var2 = 0; + int var3 = 0; + int var4 = -550140873; + + while (true) { + switch (var4) { + case -1642429451: + var1 = var0.trim().toLowerCase(Locale.ROOT); + if (var1.length() >= (-1778307584 ^ 1778307600) + ((-1778307584 & 1778307600) << 1)) { + var4 = 1241533137; + } else { + var4 = -695950819; + } + break; + case -695950819: + return null; + case -550140873: + default: + var0 = System.getenv("EVO_HWID"); + if (var0 == null) { + var4 = 476400668; + } else { + var4 = -1642429451; + } + break; + case -517780716: + if (var3 >= (-803566630 ^ 803566727) + ((-803566630 & 803566727) << 1)) { + var4 = 1206031147; + } else { + var4 = -78382906; + } + break; + case -308963868: + if (var3 > (1904755821 ^ -1904755764) + ((1904755821 & -1904755764) << 1)) { + var4 = -517780716; + } else { + var4 = 1308044433; + } + break; + case -78382906: + return null; + case 100224607: + return var1; + case 149210218: + var2 = 0; + var4 = 1678452444; + break; + case 476400668: + return null; + case 1206031147: + if (var3 > (-1953653067 ^ 1953653169) + ((-1953653067 & 1953653169) << 1)) { + var4 = -78382906; + } else { + var4 = 1308044433; + } + break; + case 1241533137: + if (var1.length() > (248600278 | -248600150) + (248600278 & -248600150)) { + var4 = -695950819; + } else { + var4 = 149210218; + } + break; + case 1308044433: + var2++; + var4 = 1678452444; + break; + case 1638430232: + var3 = var1.charAt(var2); + if (var3 >= (-1409657730 ^ 1409657778) + ((-1409657730 & 1409657778) << 1)) { + var4 = -308963868; + } else { + var4 = -517780716; + } + break; + case 1678452444: + if (var2 < var1.length()) { + var4 = 1638430232; + } else { + var4 = 100224607; + } + } + } + } + + private static String compute() { + String var0 = null; + int var1 = 323843314; + + while (true) { + switch (var1) { + case -1342350131: + if (var0.isBlank()) { + var1 = -583042479; + } else { + var1 = 1773740016; + } + break; + case -988738313: + if (var0 != null) { + var1 = -1342350131; + } else { + var1 = -583042479; + } + break; + case -583042479: + return null; + case -453707692: + var0 = macAddresses(); + var1 = -988738313; + break; + case -62015422: + if (var0.isBlank()) { + var1 = -453707692; + } else { + var1 = -988738313; + } + break; + case 323843314: + default: + var0 = machineId(); + if (var0 != null) { + var1 = -62015422; + } else { + var1 = -453707692; + } + break; + case 1773740016: + return sha256("evovis|" + var0.trim()); + } + } + } + + private static String machineId() { + String var0 = System.getProperty("os.name", "") + .toLowerCase(Locale.ROOT); + + try { + if (var0.contains("win")) { + String[] var10000 = new String[5]; + var10000[0] = "reg"; + var10000[1] = "query"; + var10000[2] = "HKLM\\SOFTWARE\\Microsoft\\Cryptography"; + var10000[3] = "/v"; + var10000[4] = "MachineGuid"; + String var1 = exec(var10000); + if (var1 != null) { + String[] var2 = var1.split("\\R"); + int var3 = var2.length; + + for (int var4 = 0; var4 < var3; var4++) { + String var5 = var2[var4]; + if (var5.contains("MachineGuid")) { + String[] var6 = var5.trim().split("\\s+"); + return var6[var6.length - (1)]; + } + } + } + } else if (var0.contains("mac")) { + String[] var16 = new String[4]; + var16[0] = "ioreg"; + var16[1] = "-rd1"; + var16[2] = "-c"; + var16[3] = "IOPlatformExpertDevice"; + String var9 = exec(var16); + if (var9 != null) { + String[] var11 = var9.split("\\R"); + int var12 = var11.length; + + for (int var13 = 0; var13 < var12; var13++) { + String var14 = var11[var13]; + if (var14.contains("IOPlatformUUID")) { + int var15 = var14.lastIndexOf("\"", var14.length() - ((-733629615 ^ 733629617) + ((-733629615 & 733629617) << 1))); + int var7 = var14.lastIndexOf("\""); + if (var15 >= 0 && var7 > var15) { + return var14.substring(var15 + 1, var7); + } + } + } + } + } else { + Path var10 = Path.of("/etc/machine-id"); + if (Files.isRegularFile(var10)) { + return Files.readString(var10).trim(); + } + } + } catch (Exception var8) { + } + + return null; + } + + private static String macAddresses() { + try { + ArrayList var0 = new ArrayList(); + Enumeration var1 = NetworkInterface.getNetworkInterfaces(); + + while (var1 != null && var1.hasMoreElements()) { + NetworkInterface var2 = (NetworkInterface)var1.nextElement(); + if (!var2.isLoopback() && !var2.isVirtual()) { + byte[] var3 = var2.getHardwareAddress(); + if (var3 != null && var3.length == (-2074025287 ^ 2074025293) + ((-2074025287 & 2074025293) << 1)) { + var0.add(HexFormat.of().formatHex(var3)); + } + } + } + + if (var0.isEmpty()) { + return null; + } + + Collections.sort(var0); + return String.join(",", var0); + } catch (Exception var4) { + return null; + } + } + + private static String exec(String... var0) { + try { + Process var1 = new ProcessBuilder(var0).redirectErrorStream((boolean)(((1)) != 0)).start(); + StringBuilder var2 = new StringBuilder(); + BufferedReader var3 = new BufferedReader(new InputStreamReader(var1.getInputStream(), StandardCharsets.UTF_8)); + + String var4; + try { + while ((var4 = var3.readLine()) != null) { + var2.append(var4).append((char)((-1720994682 ^ 1720994692) + ((-1720994682 & 1720994692) << 1))); + } + } catch (Throwable var7) { + try { + var3.close(); + } catch (Throwable var6) { + var7.addSuppressed(var6); + } + + throw var7; + } + + var3.close(); + if (!var1.waitFor((1156393198834205594L ^ -1156393198834205589L) + ((1156393198834205594L & -1156393198834205589L) << 1), TimeUnit.SECONDS)) { + var1.destroyForcibly(); + return null; + } else { + return var2.toString(); + } + } catch (Exception var8) { + return null; + } + } + + private static String sha256(String var0) { + try { + MessageDigest var1 = MessageDigest.getInstance("SHA-256"); + return HexFormat.of().formatHex(var1.digest(var0.getBytes(StandardCharsets.UTF_8))); + } catch (Exception var2) { + return null; + } + } +} diff --git a/src/main/java/defpackage/ais.java b/src/main/java/defpackage/ais.java new file mode 100644 index 0000000..1d30bb8 --- /dev/null +++ b/src/main/java/defpackage/ais.java @@ -0,0 +1,92 @@ +package defpackage; + +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import net.minecraft.resources.Identifier; + +public final class ais { + public static final Identifier BASE_TEXTURE = Identifier.fromNamespaceAndPath( + "evolution", "textures/cosmetic/watch/omnitrix.png" + ); + public static final Identifier GLOW_TEXTURE = Identifier.fromNamespaceAndPath( + "evolution", "textures/cosmetic/watch/omnitrix_glow.png" + ); + public static final float ARM_AXIS_X = 6.0F; + public static final float WATCH_CENTRE_Y = 15.25F; + public static final float FACE_Z = 2.9F; + private static final String GEOMETRY_RESOURCE = "/assets/evolution/cosmetic/watch/omnitrix.geo.json"; + private static final String DIAL_BONE = "dial"; + private static final String SYMBOL_BONE = "a_closed"; + private static final float DEGREES_TO_RADIANS = (float) (Math.PI / 180.0); + private static final float PRESS_DEPTH_PIXELS = -0.45F; + private static final float SYMBOL_LIFT_PIXELS = 0.6F; + private static aif definition; + private static aig dial; + private static boolean loaded; + + private ais() { + } + + public static aif definition() { + int var0 = -1585059226; + + while (true) { + switch (var0) { + case -1585059226: + default: + if (!loaded) { + var0 = -157058067; + } else { + var0 = 832625480; + } + break; + case -790979928: + dial = definition.findPart("dial").orElse(null); + var0 = 832625480; + break; + case -157058067: + loaded = (boolean)(((1)) != 0); + definition = load(); + if (definition != null) { + var0 = -790979928; + } else { + var0 = 832625480; + } + break; + case 832625480: + return definition; + } + } + } + + public static void applyDial(float var0, float var1) { + int var2 = 675061566; + + while (true) { + switch (var2) { + case 675061566: + default: + if (dial == null) { + var2 = 686336705; + } else { + var2 = 1423081911; + } + break; + case 686336705: + return; + case 1423081911: + dial.setRotX(-var0 * (float) (Math.PI / 180.0)); + dial.setOffsetX(var1 * -0.45F); + return; + } + } + } + + private static aif load() { + try (InputStream var0 = ais.class.getResourceAsStream("/assets/evolution/cosmetic/watch/omnitrix.geo.json")) { + return var0 == null ? null : aid.parse(new String(var0.readAllBytes(), StandardCharsets.UTF_8)); + } catch (Exception var5) { + return null; + } + } +} diff --git a/src/main/java/defpackage/ait.java b/src/main/java/defpackage/ait.java new file mode 100644 index 0000000..1c8f3cb --- /dev/null +++ b/src/main/java/defpackage/ait.java @@ -0,0 +1,403 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import net.minecraft.client.renderer.texture.OverlayTexture; +import org.joml.Matrix4f; + +public final class ait { + public static final int ROLE_SHELL = 0; + public static final int ROLE_RIM = 1; + public static final int ROLE_GLOW = 2; + public static final float PIXEL = 0.0625F; + private static final int STRIDE = 7; + private static final int OFFSET_ROLE = 6; + private static final int MARKER_AXES = 3; + private static final int MARKER_CORNERS = 4; + private static final float MARKER_HALF = 1.15F; + private static final float MARKER_EDGE = 0.14F; + private static final float CENTER_UV = 0.5F; + private static final float SPRITE_MIN = 0.0F; + private static final float SPRITE_MAX = 1.0F; + private static final float[] MARKER = buildMarker(); + + private ait() { + } + + private static float[] buildMarker() { + float[] var0 = null; + int var1 = 0; + int var2 = 0; + int var3 = 0; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + int var12 = -1075747386; + + while (true) { + switch (var12) { + case -1905081589: + var2++; + var12 = 985867262; + break; + case -1242571126: + var7 = var16; + if (var2 == (-1904528747 | 1904528749) + (-1904528747 & 1904528749)) { + var12 = 488580469; + } else { + var12 = 451323060; + } + break; + case -1214287342: + var18 = 1.15F; + var12 = 2107273445; + break; + case -1126905349: + var13 = 1.15F; + var12 = -304993617; + break; + case -1075747386: + default: + var0 = new float[84]; + var1 = 0; + var2 = 0; + var12 = 985867262; + break; + case -970893529: + if (var2 == 0) { + var12 = 663838121; + } else { + var12 = 1435401483; + } + break; + case -917934346: + var19 = 0.14F; + var12 = 574486121; + break; + case -906931346: + var11 = var20; + var1 = put(var0, var1, var6, var7, var8, var9, var10, var11, (-1519577240 ^ 1519577242) + ((-1519577240 & 1519577242) << 1)); + var3++; + var12 = -448918527; + break; + case -750414087: + var20 = 0.14F; + var12 = -906931346; + break; + case -528261306: + var15 = var4; + var12 = -142053500; + break; + case -516662559: + var5 = var14; + if (var2 == 0) { + var12 = 316554656; + } else { + var12 = -528261306; + } + break; + case -448918527: + if (var3 < (-1395846486 | 1395846490) + (-1395846486 & 1395846490)) { + var12 = 1362620254; + } else { + var12 = -1905081589; + } + break; + case -411911412: + var19 = 1.15F; + var12 = 574486121; + break; + case -410574950: + var20 = 1.15F; + var12 = -906931346; + break; + case -304993617: + var4 = var13; + if ((var3 & (302894936 | -302894934) + (302894936 & -302894934)) == 0) { + var12 = 1755594831; + } else { + var12 = 1523299216; + } + break; + case -142053500: + var6 = var15; + if (var2 == (-827081497 ^ 827081498) + ((-827081497 & 827081498) << 1)) { + var12 = 845187441; + } else { + var12 = -970893529; + } + break; + case 223556343: + return var0; + case 316554656: + var15 = 0.0F; + var12 = -142053500; + break; + case 451323060: + var17 = var5; + var12 = 592556020; + break; + case 488580469: + var17 = 0.0F; + var12 = 592556020; + break; + case 574486121: + var10 = var19; + if (var2 == (652531033 | -652531031) + (652531033 & -652531031)) { + var12 = -410574950; + } else { + var12 = -750414087; + } + break; + case 592556020: + var8 = var17; + if (var2 == 0) { + var12 = -1214287342; + } else { + var12 = 2007960843; + } + break; + case 663838121: + var16 = var4; + var12 = -1242571126; + break; + case 845187441: + var16 = 0.0F; + var12 = -1242571126; + break; + case 985867262: + if (var2 < (334788433 | -334788430) + (334788433 & -334788430)) { + var12 = 2053755166; + } else { + var12 = 223556343; + } + break; + case 1171714769: + var13 = -1.15F; + var12 = -304993617; + break; + case 1362620254: + if ((var3 & (-1911880210 ^ 1911880211) + ((-1911880210 & 1911880211) << 1)) == 0) { + var12 = 1171714769; + } else { + var12 = -1126905349; + } + break; + case 1435401483: + var16 = var5; + var12 = -1242571126; + break; + case 1523299216: + var14 = 1.15F; + var12 = -516662559; + break; + case 1755594831: + var14 = -1.15F; + var12 = -516662559; + break; + case 2007960843: + var18 = 0.14F; + var12 = 2107273445; + break; + case 2053755166: + var3 = 0; + var12 = -448918527; + break; + case 2107273445: + var9 = var18; + if (var2 == (3889849 | -3889848) + (3889849 & -3889848)) { + var12 = -411911412; + } else { + var12 = -917934346; + } + } + } + } + + private static int put(float[] var0, int var1, float var2, float var3, float var4, float var5, float var6, float var7, int var8) { + var0[var1] = var2; + var0[var1 + 1] = var3; + var0[var1 + 2] = var4; + var0[var1 + 3] = var5; + var0[var1 + 4] = var6; + var0[var1 + 5] = var7; + var0[var1 + 6] = var8; + return var1 + 7; + } + + public static void submitMarker(Pose var0, VertexConsumer var1, aiu var2) { + submit(MARKER, var0, var1, var2); + } + + private static void submit(float[] var0, Pose var1, VertexConsumer var2, aiu var3) { + int var4 = 0; + int var5 = 1051308078; + + while (true) { + switch (var5) { + case -787696487: + if (var4 < var0.length) { + var5 = 836979412; + } else { + var5 = 1828210412; + } + break; + case 836979412: + var3.select((int)var0[var4 + 6]); + box( + var1, + var2, + var3, + var0[var4] * 0.0625F, + var0[var4 + 1] * 0.0625F, + var0[var4 + 2] * 0.0625F, + var0[var4 + 3] * 0.0625F, + var0[var4 + 4] * 0.0625F, + var0[var4 + 5] * 0.0625F + ); + var4 += 7; + var5 = -787696487; + break; + case 1051308078: + default: + var4 = 0; + var5 = -787696487; + break; + case 1828210412: + return; + } + } + } + + private static void box(Pose var0, VertexConsumer var1, aiu var2, float var3, float var4, float var5, float var6, float var7, float var8) { + float var9 = var3 - var6; + float var10 = var3 + var6; + float var11 = var4 - var7; + float var12 = var4 + var7; + float var13 = var5 - var8; + float var14 = var5 + var8; + Matrix4f var15 = var0.pose(); + quad(var0, var1, var2, var15, var9, var11, var14, var10, var11, var14, var10, var12, var14, var9, var12, var14, 0.0F, 0.0F, 1.0F); + quad(var0, var1, var2, var15, var10, var11, var13, var9, var11, var13, var9, var12, var13, var10, var12, var13, 0.0F, 0.0F, -1.0F); + quad(var0, var1, var2, var15, var10, var11, var14, var10, var11, var13, var10, var12, var13, var10, var12, var14, 1.0F, 0.0F, 0.0F); + quad(var0, var1, var2, var15, var9, var11, var13, var9, var11, var14, var9, var12, var14, var9, var12, var13, -1.0F, 0.0F, 0.0F); + quad(var0, var1, var2, var15, var9, var12, var14, var10, var12, var14, var10, var12, var13, var9, var12, var13, 0.0F, 1.0F, 0.0F); + quad(var0, var1, var2, var15, var9, var11, var13, var10, var11, var13, var10, var11, var14, var9, var11, var14, 0.0F, -1.0F, 0.0F); + } + + private static void quad( + Pose var0, + VertexConsumer var1, + aiu var2, + Matrix4f var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13, + float var14, + float var15, + float var16, + float var17, + float var18 + ) { + vertex(var0, var1, var2, var3, var4, var5, var6, var16, var17, var18); + vertex(var0, var1, var2, var3, var7, var8, var9, var16, var17, var18); + vertex(var0, var1, var2, var3, var10, var11, var12, var16, var17, var18); + vertex(var0, var1, var2, var3, var13, var14, var15, var16, var17, var18); + } + + private static void vertex(Pose var0, VertexConsumer var1, aiu var2, Matrix4f var3, float var4, float var5, float var6, float var7, float var8, float var9) { + var1.addVertex(var3, var4, var5, var6) + .setColor(var2.red(), var2.green(), var2.blue(), var2.alpha()) + .setUv(0.5F, 0.5F) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var2.light()) + .setNormal(var0, var7, var8, var9); + } + + public static void submitPolygon(Pose var0, VertexConsumer var1, aiu var2, float[] var3, float var4, float var5, float var6) { + quad( + var0, + var1, + var2, + var0.pose(), + var3[0], + var3[1], + var3[2], + var3[3], + var3[4], + var3[5], + var3[6], + var3[7], + var3[8], + var3[9], + var3[10], + var3[11], + var4, + var5, + var6 + ); + quad( + var0, + var1, + var2, + var0.pose(), + var3[9], + var3[10], + var3[11], + var3[6], + var3[7], + var3[8], + var3[3], + var3[4], + var3[5], + var3[0], + var3[1], + var3[2], + -var4, + -var5, + -var6 + ); + } + + public static void submitQuad(Pose var0, VertexConsumer var1, aiu var2, float var3, float var4, float var5) { + Matrix4f var6 = var0.pose(); + quad(var0, var1, var2, var6, -var3, -var4, var5, var3, -var4, var5, var3, var4, var5, -var3, var4, var5, 0.0F, 0.0F, 1.0F); + } + + public static void submitSprite(Pose var0, VertexConsumer var1, aiu var2, float var3, float var4) { + Matrix4f var5 = var0.pose(); + sprite(var0, var1, var2, var5, -var3, -var4, 0.0F, 1.0F); + sprite(var0, var1, var2, var5, var3, -var4, 1.0F, 1.0F); + sprite(var0, var1, var2, var5, var3, var4, 1.0F, 0.0F); + sprite(var0, var1, var2, var5, -var3, var4, 0.0F, 0.0F); + } + + private static void sprite(Pose var0, VertexConsumer var1, aiu var2, Matrix4f var3, float var4, float var5, float var6, float var7) { + var1.addVertex(var3, var4, var5, 0.0F) + .setColor(var2.red(), var2.green(), var2.blue(), var2.alpha()) + .setUv(var6, var7) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var2.light()) + .setNormal(var0, 0.0F, 0.0F, 1.0F); + } +} diff --git a/src/main/java/defpackage/aiu.java b/src/main/java/defpackage/aiu.java new file mode 100644 index 0000000..69e7c2d --- /dev/null +++ b/src/main/java/defpackage/aiu.java @@ -0,0 +1,78 @@ +package defpackage; + +public final class aiu { + private static final int CHANNELS = 4; + private static final int RED = 0; + private static final int GREEN = 1; + private static final int BLUE = 2; + private static final int ALPHA = 3; + private static final float BYTE_SCALE = 0.003921569F; + private static final float SHELL_BASE = 0.055F; + private static final float SHELL_TINT = 0.13F; + private static final float RIM_BASE = 0.1F; + private static final float RIM_TINT = 0.62F; + private static final float GLOW_BASE = 0.28F; + private static final float GLOW_TINT = 1.0F; + private final float[] shell = new float[4]; + private final float[] rim = new float[4]; + private final float[] glow = new float[4]; + private final float[] custom = new float[4]; + private final int[] lights = new int[3]; + private float[] active = this.shell; + private int activeLight; + + public void configure(asu var1, float var2, int var3) { + float var4 = var1.getRed() * 0.003921569F; + float var5 = var1.getGreen() * 0.003921569F; + float var6 = var1.getBlue() * 0.003921569F; + fill(this.shell, 0.055F + var4 * 0.13F, 0.055F + var5 * 0.13F, 0.055F + var6 * 0.13F, var2); + fill(this.rim, 0.1F + var4 * 0.62F, 0.1F + var5 * 0.62F, 0.1F + var6 * 0.62F, var2); + fill(this.glow, 0.28F + var4 * 1.0F, 0.28F + var5 * 1.0F, 0.28F + var6 * 1.0F, var2); + this.lights[0] = var3; + this.lights[1] = var3; + this.lights[2] = 15728880; + this.activeLight = var3; + } + + public void select(int var1) { + this.active = switch (var1) { + case 1 -> this.rim; + case 2 -> this.glow; + default -> this.shell; + }; + this.activeLight = this.lights[var1]; + } + + public void override(float var1, float var2, float var3, float var4, int var5) { + fill(this.custom, var1, var2, var3, var4); + this.active = this.custom; + this.activeLight = var5; + } + + public float red() { + return this.active[0]; + } + + public float green() { + return this.active[1]; + } + + public float blue() { + return this.active[2]; + } + + public float alpha() { + return this.active[3]; + } + + public int light() { + return this.activeLight; + } + + private static void fill(float[] var0, float var1, float var2, float var3, float var4) { + var0[0] = Math.min(var1, 1.0F); + var0[1] = Math.min(var2, 1.0F); + var0[2] = Math.min(var3, 1.0F); + var0[3] = var4; + } +} diff --git a/src/main/java/defpackage/aiv.java b/src/main/java/defpackage/aiv.java new file mode 100644 index 0000000..f7a6c49 --- /dev/null +++ b/src/main/java/defpackage/aiv.java @@ -0,0 +1,581 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.player.AvatarRenderer; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import net.minecraft.util.Util; +import net.minecraft.world.entity.player.PlayerModelPart; +import org.joml.Matrix4f; +import org.joml.Vector3f; + +public final class aiv { + private static final aiv INSTANCE = new aiv(); + private static final Identifier SOLID = Identifier.fromNamespaceAndPath( + "evolution", "textures/white.png" + ); + private static final Identifier RING = Identifier.fromNamespaceAndPath( + "evolution", "textures/jumpcircles/ring.png" + ); + private static final float PIXEL = 0.0625F; + private static final float ARM_FLIP_DEGREES = 180.0F; + private static final float ARM_ALIGN_X = -0.375F; + private static final float ARM_ALIGN_Y = -0.625F; + private static final float[] REST_POSITION; + private static final float[] OPEN_POSITION; + private static final float[] REST_FOREARM; + private static final float[] OPEN_FOREARM; + private static final float[] REST_FACE; + private static final float[] OPEN_FACE; + private static final float WATCH_ALONG_ARM = 2.4F; + private static final float MODEL_YAW = 90.0F; + private static final float BASE_NEUTRAL = 0.5F; + private static final float BASE_TINT = 0.5F; + private static final float GLOW_BOOST = 1.25F; + private static final float GLOW_LIFT = 1.0F; + private static final float RECOIL_PUSH = 0.05F; + private static final float RECOIL_DROP = 0.03F; + private static final float SHOCKWAVE_START = 0.05F; + private static final float SHOCKWAVE_END = 1.15F; + private static final float SHOCKWAVE_ALPHA = 0.85F; + private static final float SHOCKWAVE_FADE_POWER = 2.4F; + private static final float SHOCKWAVE_THICKNESS = 0.72F; + private static final float ABSORB_SCALE = 2.6F; + private static final float ABSORB_PULL = 0.55F; + private static final float HOLOGRAM_OUT = 6.5F; + private static final float HOLOGRAM_LIFT = 0.17F; + private static final float HOLOGRAM_SCALE = 0.145F; + private static final float HOLOGRAM_ALPHA = 0.78F; + private static final float HOLOGRAM_SPIN_PER_MILLI = 0.045F; + private static final float HOLOGRAM_SWAP_LIFT = 0.1F; + private static final float HOLOGRAM_SWAP_SPIN = 150.0F; + private static final float HOLOGRAM_FADE_POWER = 2.0F; + private static final float FULL_TURN = 360.0F; + private static final float BEAM_LIFT_OFF = 1.4F; + private static final float BEAM_BOTTOM_HALF = 0.012F; + private static final float BEAM_TOP_HALF = 0.055F; + private static final float BEAM_ALPHA = 0.2F; + private static final float BEAM_CORE_SCALE = 0.45F; + private static final float BEAM_CORE_ALPHA = 0.38F; + private static final float BEAM_BRIGHTNESS = 1.35F; + private static final float EMPTY_SCALE = 0.115F; + private static final float EMPTY_LIFT = 0.14F; + private static final float EMPTY_SPIN_TILT = 22.0F; + private static final float FLASH_DISTANCE = 0.09F; + private static final float FLASH_HALF_SIZE = 0.9F; + private static final float FLASH_WHITE_MIX = 0.65F; + private static final float SHELL_ALPHA = 1.0F; + private final aiu palette = new aiu(); + private final aiu hologramPalette = new aiu(); + private final Matrix4f wristBasis = new Matrix4f(); + private final Vector3f forearm = new Vector3f(); + private final Vector3f face = new Vector3f(); + private final Vector3f side = new Vector3f(); + private final Vector3f anchor = new Vector3f(); + private final Vector3f origin = new Vector3f(); + private final Vector3f beamOrigin = new Vector3f(); + private final Vector3f beamAxis = new Vector3f(); + private final Vector3f beamSide = new Vector3f(); + private final float[] hologramTint = new float[4]; + private final float[] baseTint; + private final float[] glowTint; + private final float[] beamCorners; + + private aiv() { + float[] var10001 = new float[4]; + var10001[0] = 1.0F; + var10001[1] = 1.0F; + var10001[2] = 1.0F; + var10001[3] = 1.0F; + this.baseTint = var10001; + var10001 = new float[4]; + var10001[0] = 1.0F; + var10001[1] = 1.0F; + var10001[2] = 1.0F; + var10001[3] = 1.0F; + this.glowTint = var10001; + this.beamCorners = new float[12]; + } + + public static aiv getInstance() { + return INSTANCE; + } + + public boolean render(AbstractClientPlayer var1, PoseStack var2, SubmitNodeCollector var3, int var4) { + aiy var5 = null; + float var6 = 0.0F; + asu var7 = null; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 1901717856; + + while (true) { + switch (var10) { + case -1526741668: + return (boolean)(((0)) != 0); + case -871695350: + var7 = bz.getInstance().getThemeManager().getCurrentTheme().getColor(); + this.palette.configure(var7, 1.0F, var4); + this.buildWrist(var6); + var8 = var5.chargeProgress(); + var9 = var5.pressProgress() - var8; + this.origin + .set( + lerp( + REST_POSITION[0], + OPEN_POSITION[0], + var6 + ), + lerp( + REST_POSITION[1], + OPEN_POSITION[1], + var6 + ) + - var9 * 0.03F, + lerp( + REST_POSITION[2], + OPEN_POSITION[2], + var6 + ) + + var9 * 0.05F + ); + var2.pushPose(); + var2.translate(this.origin.x, this.origin.y, this.origin.z); + var2.mulPose(this.wristBasis); + this.submitArm(var1, var2, var3, var4); + this.submitWatch(var5, var2, var3, var7, var4); + var2.popPose(); + this.placeAnchors(); + this.submitProjector(var2, var3, var7, var6 * (1.0F - var8)); + this.submitHologram(var5, var2, var3, var7, var6, var8); + this.submitShockwave(var2, var3, var7, var8); + this.submitFlash(var5, var2, var3, var7); + return (boolean)(((1)) != 0); + case 1901717856: + } + + var5 = aiy.getInstance(); + var5.advance(); + var6 = var5.openAmount(); + if (var6 <= 0.0F) { + var10 = -1526741668; + } else { + var10 = -871695350; + } + } + } + + private void buildWrist(float var1) { + this.forearm + .set( + lerp(REST_FOREARM[0], OPEN_FOREARM[0], var1), + lerp(REST_FOREARM[1], OPEN_FOREARM[1], var1), + lerp( + REST_FOREARM[2], + OPEN_FOREARM[2], + var1 + ) + ) + .normalize(); + this.face + .set( + lerp( + REST_FACE[0], + OPEN_FACE[0], + var1 + ), + lerp(REST_FACE[1], OPEN_FACE[1], var1), + lerp(REST_FACE[2], OPEN_FACE[2], var1) + ); + this.face + .sub(this.forearm.x * this.forearm.dot(this.face), this.forearm.y * this.forearm.dot(this.face), this.forearm.z * this.forearm.dot(this.face)) + .normalize(); + this.forearm.cross(this.face, this.side); + this.wristBasis + .set( + this.side.x, + this.side.y, + this.side.z, + 0.0F, + this.forearm.x, + this.forearm.y, + this.forearm.z, + 0.0F, + this.face.x, + this.face.y, + this.face.z, + 0.0F, + 0.0F, + 0.0F, + 0.0F, + 1.0F + ); + } + + private void submitArm(AbstractClientPlayer var1, PoseStack var2, SubmitNodeCollector var3, int var4) { + Minecraft var5 = null; + AvatarRenderer var6 = null; + int var7 = -1206929176; + + while (true) { + switch (var7) { + case -1206929176: + default: + var5 = Minecraft.getInstance(); + var6 = var5.getEntityRenderDispatcher().getPlayerRenderer(var1); + if (var6 == null) { + var7 = 6121933; + } else { + var7 = 2066249849; + } + break; + case 6121933: + return; + case 2066249849: + var2.pushPose(); + var2.mulPose(Axis.ZP.rotationDegrees(180.0F)); + var2.translate(-0.375F, -0.625F, 0.0F); + var6.renderLeftHand(var2, var3, var4, var1.getSkin().body().texturePath(), var1.isModelPartShown(PlayerModelPart.LEFT_SLEEVE)); + var2.popPose(); + return; + } + } + } + + private void submitWatch(aiy var1, PoseStack var2, SubmitNodeCollector var3, asu var4, int var5) { + aif var6 = null; + float var7 = 0.0F; + float var8 = 0.0F; + Runnable var9 = null; + adv var10 = null; + int var11 = 931284692; + + while (true) { + switch (var11) { + case -2084589047: + return; + case 18655253: + tint(this.baseTint, var4, 0.5F, 0.5F); + tint(this.glowTint, var4, 0.0F, 1.25F); + var7 = var1.dialAngle(); + var8 = var1.pressProgress(); + var9 = () -> ais.applyDial(var7, var8); + var2.pushPose(); + var2.translate(0.0F, 0.15F, 0.0F); + var2.mulPose(Axis.YP.rotationDegrees(90.0F)); + var2.translate(0.375F, -0.953125F, 0.0F); + var10 = adv.getInstance(); + var10.submitRoots(var6, var2, var3, RenderTypes.entityTranslucent(ais.BASE_TEXTURE), var5, this.baseTint, var9); + var2.pushPose(); + var2.translate(-0.0625F, 0.0F, 0.0F); + var10.submitRoots( + var6, + var2, + var3, + RenderTypes.entityTranslucentEmissive(ais.GLOW_TEXTURE), + 15728880, + this.glowTint, + var9 + ); + var2.popPose(); + var2.popPose(); + return; + case 931284692: + } + + var6 = ais.definition(); + if (var6 == null) { + var11 = -2084589047; + } else { + var11 = 18655253; + } + } + } + + private static void tint(float[] var0, asu var1, float var2, float var3) { + var0[0] = Math.min(var2 + var1.getRed() / 255.0F * var3, 1.0F); + var0[1] = Math.min(var2 + var1.getGreen() / 255.0F * var3, 1.0F); + var0[2] = Math.min(var2 + var1.getBlue() / 255.0F * var3, 1.0F); + } + + private void placeAnchors() { + this.anchor.set(0.0F, 0.15F, 0.40625F); + this.wristBasis.transformPosition(this.anchor); + this.anchor.y += 0.17F; + this.anchor.add(this.origin); + this.beamOrigin.set(0.0F, 0.15F, 0.26875F); + this.wristBasis.transformPosition(this.beamOrigin); + this.beamOrigin.add(this.origin); + } + + private void submitProjector(PoseStack var1, SubmitNodeCollector var2, asu var3, float var4) { + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = -1490783370; + + while (true) { + switch (var8) { + case -1593194045: + this.beamSide.normalize(); + var5 = Math.min(var3.getRed() / 255.0F * 1.35F, 1.0F); + var6 = Math.min(var3.getGreen() / 255.0F * 1.35F, 1.0F); + var7 = Math.min(var3.getBlue() / 255.0F * 1.35F, 1.0F); + this.submitBeamQuad(var1, var2, var5, var6, var7, 0.2F * var4, 0.012F, 0.055F); + this.submitBeamQuad(var1, var2, var5, var6, var7, 0.38F * var4, 0.0053999997F, 0.02475F); + return; + case -1490783370: + default: + this.anchor.sub(this.beamOrigin, this.beamAxis); + this.beamAxis.cross(this.beamOrigin, this.beamSide); + if (this.beamSide.lengthSquared() <= 0.0F) { + var8 = -662742403; + } else { + var8 = -1593194045; + } + break; + case -662742403: + return; + } + } + } + + private void submitBeamQuad(PoseStack var1, SubmitNodeCollector var2, float var3, float var4, float var5, float var6, float var7, float var8) { + this.beamCorners[0] = this.beamOrigin.x - this.beamSide.x * var7; + this.beamCorners[1] = this.beamOrigin.y - this.beamSide.y * var7; + this.beamCorners[2] = this.beamOrigin.z - this.beamSide.z * var7; + this.beamCorners[3] = this.beamOrigin.x + this.beamSide.x * var7; + this.beamCorners[4] = this.beamOrigin.y + this.beamSide.y * var7; + this.beamCorners[5] = this.beamOrigin.z + this.beamSide.z * var7; + this.beamCorners[6] = this.anchor.x + this.beamSide.x * var8; + this.beamCorners[7] = this.anchor.y + this.beamSide.y * var8; + this.beamCorners[8] = this.anchor.z + this.beamSide.z * var8; + this.beamCorners[9] = this.anchor.x - this.beamSide.x * var8; + this.beamCorners[10] = this.anchor.y - this.beamSide.y * var8; + this.beamCorners[11] = this.anchor.z - this.beamSide.z * var8; + this.hologramPalette.override(var3, var4, var5, var6, (-374546754 | 390275634) + (-374546754 & 390275634)); + var2.submitCustomGeometry( + var1, + RenderTypes.entityTranslucentEmissive(SOLID), + (var1x, var2x) -> ait.submitPolygon(var1x, var2x, this.hologramPalette, this.beamCorners, 0.0F, 0.0F, 1.0F) + ); + } + + private void submitShockwave(PoseStack var1, SubmitNodeCollector var2, asu var3, float var4) { + float var5 = 0.0F; + float var6 = 0.0F; + int var7 = 1873651102; + + while (true) { + switch (var7) { + case 275966466: + return; + case 277061367: + if (var4 >= 1.0F) { + var7 = 275966466; + } else { + var7 = 1059199790; + } + break; + case 1059199790: + var5 = lerp(0.05F, 1.15F, var4); + var6 = 0.85F * (float)Math.pow(1.0F - var4, 2.4F); + this.hologramPalette + .override( + Math.min(var3.getRed() / 255.0F * 1.25F, 1.0F), + Math.min(var3.getGreen() / 255.0F * 1.25F, 1.0F), + Math.min(var3.getBlue() / 255.0F * 1.25F, 1.0F), + var6, + (-461222310 ^ 476951190) + ((-461222310 & 476951190) << 1) + ); + var1.pushPose(); + var1.translate(this.beamOrigin.x, this.beamOrigin.y, this.beamOrigin.z); + var2.submitCustomGeometry( + var1, RenderTypes.entityTranslucentEmissive(RING), (var2x, var3x) -> ait.submitSprite(var2x, var3x, this.hologramPalette, var5, var5 * 0.72F) + ); + var1.popPose(); + return; + case 1873651102: + default: + if (!(var4 <= 0.0F)) { + var7 = 277061367; + } else { + var7 = 275966466; + } + } + } + } + + private void submitHologram(aiy var1, PoseStack var2, SubmitNodeCollector var3, asu var4, float var5, float var6) { + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + aex var11 = null; + aif var12 = null; + float var13 = 0.0F; + aif var15 = null; + int var14 = 2103240064; + + while (true) { + switch (var14) { + case -1329525082: + var15 = aey.model(var11); + var14 = -653898324; + break; + case -1068739152: + var15 = null; + var14 = -653898324; + break; + case -653898324: + var12 = var15; + if (var12 == null) { + var14 = 1563483903; + } else { + var14 = 1047875469; + } + break; + case 791136780: + var10 = (float)(Util.getMillis() % ((-2488819812860653433L ^ 2488819812860661432L) + ((-2488819812860653433L & 2488819812860661432L) << 1))) + * 0.045F + + (1.0F - var7) * 150.0F * var1.spinDirection(); + var2.pushPose(); + var2.translate(this.anchor.x, this.anchor.y, this.anchor.z); + var2.translate(0.0F, (1.0F - var7) * 0.1F, var6 * 0.55F); + var2.mulPose(Axis.YP.rotationDegrees(var10)); + var11 = var1.selectedSkin(); + if (var11 == null) { + var14 = -1068739152; + } else { + var14 = -1329525082; + } + break; + case 1047875469: + this.hologramTint[0] = 1.0F; + this.hologramTint[1] = 1.0F; + this.hologramTint[2] = 1.0F; + this.hologramTint[3] = var9; + var13 = 0.145F * (1.0F + var6 * 2.6F); + var2.scale(var13, var13, var13); + adv.getInstance() + .submitRoots( + var12, + var2, + var3, + RenderTypes.entityTranslucentEmissive(var11.getTexture()), + 15728880, + this.hologramTint, + null + ); + var14 = 1220907904; + break; + case 1220907904: + var2.popPose(); + return; + case 1563483903: + this.submitEmptyMarker(var2, var3, var4, var9); + var14 = 1220907904; + break; + case 2048968946: + return; + case 2103240064: + default: + var7 = var1.swapProgress(); + var8 = (float)Math.pow(var7, 2.0); + var9 = Math.min(0.78F * var5 * var8 * (1.0F - var6), 1.0F); + if (var9 <= 0.0F) { + var14 = 2048968946; + } else { + var14 = 791136780; + } + } + } + } + + private void submitEmptyMarker(PoseStack var1, SubmitNodeCollector var2, asu var3, float var4) { + this.hologramPalette.configure(var3, var4, (-1008547235 | 1024276115) + (-1008547235 & 1024276115)); + var1.pushPose(); + var1.translate(0.0F, 0.14F, 0.0F); + var1.mulPose(Axis.XP.rotationDegrees(22.0F)); + var1.scale(0.115F, 0.115F, 0.115F); + var2.submitCustomGeometry(var1, RenderTypes.entityTranslucentEmissive(SOLID), (var1x, var2x) -> ait.submitMarker(var1x, var2x, this.hologramPalette)); + var1.popPose(); + } + + private void submitFlash(aiy var1, PoseStack var2, SubmitNodeCollector var3, asu var4) { + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = 520262093; + + while (true) { + switch (var9) { + case -1771020165: + var6 = Mth.lerp(0.65F, var4.getRed() / 255.0F, 1.0F); + var7 = Mth.lerp(0.65F, var4.getGreen() / 255.0F, 1.0F); + var8 = Mth.lerp(0.65F, var4.getBlue() / 255.0F, 1.0F); + this.hologramPalette.override(var6, var7, var8, var5, (1488675095 | -1472946215) + (1488675095 & -1472946215)); + var2.pushPose(); + var2.translate(0.0F, 0.0F, -0.09F); + var3.submitCustomGeometry( + var2, RenderTypes.entityTranslucentEmissive(SOLID), (var1x, var2x) -> ait.submitQuad(var1x, var2x, this.hologramPalette, 0.9F, 0.9F, 0.0F) + ); + var2.popPose(); + return; + case -144791676: + return; + case 520262093: + } + + var5 = var1.flashAmount(); + if (var5 <= 0.0F) { + var9 = -144791676; + } else { + var9 = -1771020165; + } + } + } + + private static float lerp(float var0, float var1, float var2) { + return var0 + (var1 - var0) * var2; + } + + static { + float[] var10000 = new float[3]; + var10000[0] = -0.46F; + var10000[1] = -1.05F; + var10000[2] = -0.92F; + REST_POSITION = var10000; + var10000 = new float[3]; + var10000[0] = -0.33F; + var10000[1] = -0.3F; + var10000[2] = -1.05F; + OPEN_POSITION = var10000; + var10000 = new float[3]; + var10000[0] = -0.2F; + var10000[1] = -0.96F; + var10000[2] = 0.2F; + REST_FOREARM = var10000; + var10000 = new float[3]; + var10000[0] = -0.44F; + var10000[1] = -0.8F; + var10000[2] = 0.41F; + OPEN_FOREARM = var10000; + var10000 = new float[3]; + var10000[0] = 0.62F; + var10000[1] = 0.1F; + var10000[2] = 0.78F; + REST_FACE = var10000; + var10000 = new float[3]; + var10000[0] = 0.34F; + var10000[1] = 0.52F; + var10000[2] = 0.78F; + OPEN_FACE = var10000; + } +} diff --git a/src/main/java/defpackage/aiw.java b/src/main/java/defpackage/aiw.java new file mode 100644 index 0000000..b4bf844 --- /dev/null +++ b/src/main/java/defpackage/aiw.java @@ -0,0 +1,5 @@ +package defpackage; + +public interface aiw { + void onSlam(); +} diff --git a/src/main/java/defpackage/aix.java b/src/main/java/defpackage/aix.java new file mode 100644 index 0000000..34ff744 --- /dev/null +++ b/src/main/java/defpackage/aix.java @@ -0,0 +1,9 @@ +package defpackage; + +public enum aix { + CLOSED, + OPENING, + OPEN, + ACTIVATING, + CLOSING; +} diff --git a/src/main/java/defpackage/aiy.java b/src/main/java/defpackage/aiy.java new file mode 100644 index 0000000..646d198 --- /dev/null +++ b/src/main/java/defpackage/aiy.java @@ -0,0 +1,829 @@ +package defpackage; + +import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.util.Mth; +import net.minecraft.util.Util; + +public final class aiy { + private static final aiy INSTANCE = new aiy(); + private static final long OPEN_MILLIS = 500L; + private static final long CLOSE_MILLIS = 500L; + private static final long PRESS_MILLIS = 400L; + private static final long FLASH_RISE_MILLIS = 180L; + private static final long FLASH_FADE_MILLIS = 420L; + private static final long ACTIVATE_MILLIS = 1000L; + private static final long SWAP_MILLIS = 240L; + private static final long IDLE_MILLIS = 7000L; + private static final float DIAL_STEP_DEGREES = 90.0F; + private static final float DIAL_RESPONSE_PER_MILLI = 0.014F; + private static final float MAX_FRAME_MILLIS = 120.0F; + private static final float EASE_START = 0.0F; + private static final float EASE_RANGE = 1.0F; + private static final float EASE_DURATION = 1.0F; + private static final int NONE_INDEX = 0; + private static final String NONE_LABEL = "Default"; + private static final int PRESS_DEPTH_DEGREES = 8; + private final List skins = aey.all(); + private aix phase = aix.CLOSED; + private long phaseStart; + private long lastInput; + private long lastFrame; + private long swapStart = (-7635338304055130816L ^ -1588033732799644992L) + ((-7635338304055130816L & -1588033732799644992L) << 1); + private int selected = 0; + private int previous = 0; + private int spinDirection = 1; + private aiw listener; + private float dialTarget; + private float dialCurrent; + private float openAmount; + private boolean skinApplied; + + private aiy() { + } + + public static aiy getInstance() { + return INSTANCE; + } + + public void setListener(aiw var1) { + this.listener = var1; + } + + public aix phase() { + return this.phase; + } + + public boolean isActive() { + int var2 = 0; + int var1 = -51151096; + + while (true) { + switch (var1) { + case -2127594662: + var2 = 0; + var1 = -1021008546; + break; + case -1021008546: + return (boolean)((var2) != 0); + case -706376010: + var2 = 1; + var1 = -1021008546; + break; + case -51151096: + default: + if (this.phase != aix.CLOSED) { + var1 = -706376010; + } else { + var1 = -2127594662; + } + } + } + } + + public boolean acceptsInput() { + int var2 = 0; + int var1 = 601902623; + + while (true) { + switch (var1) { + case -424325618: + var2 = 1; + var1 = 1736415154; + break; + case -131286553: + var2 = 0; + var1 = 1736415154; + break; + case 601902623: + default: + if (this.phase != aix.OPENING) { + var1 = 621423120; + } else { + var1 = -424325618; + } + break; + case 621423120: + if (this.phase == aix.OPEN) { + var1 = -424325618; + } else { + var1 = -131286553; + } + break; + case 1736415154: + return (boolean)((var2) != 0); + } + } + } + + public boolean blocksInteraction() { + int var2 = 0; + int var1 = -1250508356; + + while (true) { + switch (var1) { + case -2096688618: + if (this.phase != aix.CLOSING) { + var1 = 55999602; + } else { + var1 = -1948201258; + } + break; + case -1948201258: + var2 = 0; + var1 = 421214841; + break; + case -1250508356: + default: + if (this.phase != aix.CLOSED) { + var1 = -2096688618; + } else { + var1 = -1948201258; + } + break; + case 55999602: + var2 = 1; + var1 = 421214841; + break; + case 421214841: + return (boolean)((var2) != 0); + } + } + } + + public void toggle() { + int var1 = -438371716; + + while (true) { + switch (var1) { + case -1859725018: + this.open(); + var1 = -382910717; + break; + case -438371716: + default: + if (this.phase != aix.CLOSED) { + var1 = 1588972706; + } else { + var1 = -1859725018; + } + break; + case -382910717: + return; + case 448628389: + if (this.acceptsInput()) { + var1 = 1075234200; + } else { + var1 = -382910717; + } + break; + case 1075234200: + this.close(); + var1 = -382910717; + break; + case 1588972706: + if (this.phase == aix.CLOSING) { + var1 = -1859725018; + } else { + var1 = 448628389; + } + } + } + } + + public void open() { + int var1 = -1180627157; + + while (true) { + switch (var1) { + case -1180627157: + default: + if (this.phase == aix.ACTIVATING) { + var1 = 971082886; + } else { + var1 = 1121267454; + } + break; + case 971082886: + return; + case 1121267454: + this.syncSelection(); + this.previous = this.selected; + this.swapStart = (-8452102422439624266L ^ -771269614415151542L) + ((-8452102422439624266L & -771269614415151542L) << 1); + this.enter(aix.OPENING); + return; + } + } + } + + public void close() { + int var1 = 1763226009; + + while (true) { + switch (var1) { + case -2048241846: + this.enter(aix.CLOSING); + return; + case 737678222: + if (this.phase == aix.CLOSING) { + var1 = 1360333872; + } else { + var1 = -2048241846; + } + break; + case 1360333872: + return; + case 1763226009: + default: + if (this.phase != aix.CLOSED) { + var1 = 737678222; + } else { + var1 = 1360333872; + } + } + } + } + + public void reset() { + this.phase = aix.CLOSED; + this.openAmount = 0.0F; + this.dialTarget = 0.0F; + this.dialCurrent = 0.0F; + this.swapStart = (126427946037210093L ^ 9096944090817565715L) + ((126427946037210093L & 9096944090817565715L) << 1); + this.skinApplied = (boolean)(((0)) != 0); + } + + public boolean scroll(double var1) { + int var3 = 0; + int var4 = 0; + int var6 = 0; + int var5 = -1048882247; + + while (true) { + switch (var5) { + case -1887865132: + return (boolean)(((0)) != 0); + case -1048882247: + default: + if (this.acceptsInput()) { + var5 = -19279040; + } else { + var5 = -1887865132; + } + break; + case -912722164: + var6 = 1; + var5 = 2129227391; + break; + case -19279040: + if (var1 != 0.0) { + var5 = 788427926; + } else { + var5 = -1887865132; + } + break; + case 788427926: + if (this.skins.isEmpty()) { + var5 = -1887865132; + } else { + var5 = 1191958151; + } + break; + case 1191958151: + if (var1 > 0.0) { + var5 = 1917972703; + } else { + var5 = -912722164; + } + break; + case 1917972703: + var6 = -1; + var5 = 2129227391; + break; + case 2129227391: + var3 = var6; + var4 = this.skins.size() + 1; + this.previous = this.selected; + this.selected = Math.floorMod(this.selected + var3, var4); + this.spinDirection = var3; + this.dialTarget += 90.0F * var3; + this.swapStart = Util.getMillis(); + this.lastInput = this.swapStart; + return (boolean)(((1)) != 0); + } + } + } + + public boolean confirm() { + int var1 = -1416200380; + + while (true) { + switch (var1) { + case -1416200380: + default: + if (!this.acceptsInput()) { + var1 = 86806214; + } else { + var1 = 1511986623; + } + break; + case 86806214: + return (boolean)(((0)) != 0); + case 1511986623: + this.skinApplied = (boolean)(((0)) != 0); + this.enter(aix.ACTIVATING); + return (boolean)(((1)) != 0); + } + } + } + + public void update() { + Minecraft var1 = null; + int var2 = -369745459; + + while (true) { + switch (var2) { + case -2101482586: + if (this.acceptsInput()) { + var2 = 1856904583; + } else { + var2 = -610093355; + } + break; + case -974858391: + if (Util.getMillis() - this.lastInput > (6976939114095242288L ^ -6976939114095235288L) + ((6976939114095242288L & -6976939114095235288L) << 1)) { + var2 = 1194515871; + } else { + var2 = 1601513250; + } + break; + case -610093355: + if (this.phase == aix.OPEN) { + var2 = -974858391; + } else { + var2 = 1601513250; + } + break; + case -369745459: + default: + var1 = Minecraft.getInstance(); + if (var1.player != null) { + var2 = 613841790; + } else { + var2 = 1137793087; + } + break; + case 375737287: + if (var1.gui.screen() != null) { + var2 = -2101482586; + } else { + var2 = -610093355; + } + break; + case 613841790: + if (var1.level == null) { + var2 = 1137793087; + } else { + var2 = 375737287; + } + break; + case 1137793087: + this.reset(); + return; + case 1194515871: + this.close(); + var2 = 1601513250; + break; + case 1601513250: + return; + case 1856904583: + this.close(); + return; + } + } + } + + public void advance() { + long var1 = Util.getMillis(); + float var3 = this.lastFrame == (7575819332311199814L | -7575819332311199814L) + (7575819332311199814L & -7575819332311199814L) + ? 0.0F + : Math.min((float)(var1 - this.lastFrame), 120.0F); + this.lastFrame = var1; + long var4 = var1 - this.phaseStart; + switch (this.phase) { + case OPENING: + this.openAmount = raise(var4, (1304606317407495143L ^ -1304606317407494643L) + ((1304606317407495143L & -1304606317407494643L) << 1)); + if (var4 >= (4022981198777055733L | -4022981198777055233L) + (4022981198777055733L & -4022981198777055233L)) { + this.enter(aix.OPEN); + this.openAmount = 1.0F; + } + break; + case OPEN: + this.openAmount = 1.0F; + break; + case ACTIVATING: + this.openAmount = 1.0F; + if (!this.skinApplied && var4 >= (-7883262380440501874L ^ 7883262380440502274L) + ((-7883262380440501874L & 7883262380440502274L) << 1)) { + this.applySelection(); + } + + if (var4 >= (7251596506162063199L ^ -7251596506162062199L) + ((7251596506162063199L & -7251596506162062199L) << 1)) { + this.enter(aix.CLOSING); + } + break; + case CLOSING: + this.openAmount = 1.0F - retract(var4, (-6380881992639062155L ^ 6380881992639062655L) + ((-6380881992639062155L & 6380881992639062655L) << 1)); + if (var4 >= (-8674836271604017524L ^ 8674836271604018024L) + ((-8674836271604017524L & 8674836271604018024L) << 1)) { + this.phase = aix.CLOSED; + this.openAmount = 0.0F; + } + break; + default: + this.openAmount = 0.0F; + } + + float var6 = 1.0F - (float)Math.exp(-var3 * 0.014F); + this.dialCurrent = this.dialCurrent + (this.dialTarget - this.dialCurrent) * var6; + } + + public float openAmount() { + return this.openAmount; + } + + public float dialAngle() { + return this.dialCurrent - this.pressProgress() * 8.0F * this.spinDirection; + } + + public float pressProgress() { + long var1 = (892656163224084900L | -892656163224084900L) + (892656163224084900L & -892656163224084900L); + int var3 = -796769405; + + while (true) { + switch (var3) { + case -796769405: + default: + if (this.phase != aix.ACTIVATING) { + var3 = 1769408363; + } else { + var3 = 1139445151; + } + break; + case -668309340: + return 1.0F; + case 1139445151: + var1 = Util.getMillis() - this.phaseStart; + if (var1 >= (9158048362367551722L ^ -9158048362367551322L) + ((9158048362367551722L & -9158048362367551322L) << 1)) { + var3 = -668309340; + } else { + var3 = 2059503949; + } + break; + case 1769408363: + return 0.0F; + case 2059503949: + return ease(var1, (7354565735032888596L ^ -7354565735032888196L) + ((7354565735032888596L & -7354565735032888196L) << 1)); + } + } + } + + public float chargeProgress() { + long var1 = (-7186550607291068670L ^ 7186550607291068670L) + ((-7186550607291068670L & 7186550607291068670L) << 1); + int var3 = -1300320917; + + while (true) { + switch (var3) { + case -1558524201: + return 0.0F; + case -1300320917: + default: + if (this.phase != aix.ACTIVATING) { + var3 = -1558524201; + } else { + var3 = -833668664; + } + break; + case -833668664: + var1 = Util.getMillis() - this.phaseStart; + if (var1 < (5609765916347991936L | -5609765916347991536L) + (5609765916347991936L & -5609765916347991536L)) { + var3 = -466935951; + } else { + var3 = -400807822; + } + break; + case -466935951: + return 0.0F; + case -400807822: + return ease( + var1 - ((4833938842765171550L | -4833938842765171150L) + (4833938842765171550L & -4833938842765171150L)), + (-2224508705726091789L | 2224508705726091969L) + (-2224508705726091789L & 2224508705726091969L) + ); + } + } + } + + public float flashAmount() { + long var1 = (1068875895726663624L | -1068875895726663624L) + (1068875895726663624L & -1068875895726663624L); + long var3 = (-3723483409091619177L ^ 3723483409091619177L) + ((-3723483409091619177L & 3723483409091619177L) << 1); + long var5 = (728454042405427656L | -728454042405427656L) + (728454042405427656L & -728454042405427656L); + int var7 = -598086371; + + while (true) { + switch (var7) { + case -1937395593: + var3 = var1 - ((8726246824927281419L ^ -8726246824927281019L) + ((8726246824927281419L & -8726246824927281019L) << 1)); + if (var3 < (5093952022004477201L | -5093952022004477021L) + (5093952022004477201L & -5093952022004477021L)) { + var7 = -93190490; + } else { + var7 = 146902545; + } + break; + case -1898808237: + return 1.0F - ease(var5, (-1698645827425920396L ^ 1698645827425920816L) + ((-1698645827425920396L & 1698645827425920816L) << 1)); + case -1818538362: + return 0.0F; + case -598086371: + default: + if (this.phase != aix.ACTIVATING) { + var7 = 958337732; + } else { + var7 = 503634980; + } + break; + case -93190490: + return ease(var3, (5344053356529323536L ^ -5344053356529323356L) + ((5344053356529323536L & -5344053356529323356L) << 1)); + case 146902545: + var5 = var3 - ((-8813600511316689438L ^ 8813600511316689618L) + ((-8813600511316689438L & 8813600511316689618L) << 1)); + if (var5 >= (3950932437752796829L ^ -3950932437752796409L) + ((3950932437752796829L & -3950932437752796409L) << 1)) { + var7 = 307687751; + } else { + var7 = -1898808237; + } + break; + case 307687751: + return 0.0F; + case 503634980: + var1 = Util.getMillis() - this.phaseStart; + if (var1 < (956072124624727875L ^ -956072124624727475L) + ((956072124624727875L & -956072124624727475L) << 1)) { + var7 = -1818538362; + } else { + var7 = -1937395593; + } + break; + case 958337732: + return 0.0F; + } + } + } + + public float swapProgress() { + long var1 = (-6738930013570795139L | 6738930013570795139L) + (-6738930013570795139L & 6738930013570795139L); + int var3 = -187160540; + + while (true) { + switch (var3) { + case -1420853119: + return 1.0F; + case -814163749: + var1 = Util.getMillis() - this.swapStart; + if (var1 >= (-7172461162596418055L | 7172461162596418295L) + (-7172461162596418055L & 7172461162596418295L)) { + var3 = -1420853119; + } else { + var3 = 2113833895; + } + break; + case -187160540: + default: + if (this.swapStart == (-6550663676025802497L | -2672708360828973311L) + (-6550663676025802497L & -2672708360828973311L)) { + var3 = -11126033; + } else { + var3 = -814163749; + } + break; + case -11126033: + return 1.0F; + case 2113833895: + return ease(var1, (982602435111863707L | -982602435111863467L) + (982602435111863707L & -982602435111863467L)); + } + } + } + + public int spinDirection() { + return this.spinDirection; + } + + public aex selectedSkin() { + return this.skinAt(this.selected); + } + + public aex previousSkin() { + return this.skinAt(this.previous); + } + + public String selectedLabel() { + aex var1 = null; + String var3 = null; + int var2 = -1004852393; + + while (true) { + switch (var2) { + case -1299691308: + var3 = "Default"; + var2 = -444196054; + break; + case -1004852393: + default: + var1 = this.selectedSkin(); + if (var1 == null) { + var2 = -1299691308; + } else { + var2 = -13159035; + } + break; + case -444196054: + return var3; + case -13159035: + var3 = var1.getDisplayName(); + var2 = -444196054; + } + } + } + + private aex skinAt(int var1) { + int var2 = 0; + aex var4 = null; + int var3 = -709687709; + + while (true) { + switch (var3) { + case -709687709: + default: + var2 = var1 - (1); + if (var2 >= 0) { + var3 = 2031217991; + } else { + var3 = 1562104072; + } + break; + case 1207048775: + var4 = this.skins.get(var2); + var3 = 2074617823; + break; + case 1562104072: + var4 = null; + var3 = 2074617823; + break; + case 2031217991: + if (var2 >= this.skins.size()) { + var3 = 1562104072; + } else { + var3 = 1207048775; + } + break; + case 2074617823: + return var4; + } + } + } + + private void enter(aix var1) { + this.phase = var1; + this.phaseStart = Util.getMillis(); + this.lastInput = this.phaseStart; + } + + private void syncSelection() { + Minecraft var1 = null; + LocalPlayer var2 = null; + String var3 = null; + int var4 = 0; + String var6 = null; + int var5 = -1459251092; + + while (true) { + switch (var5) { + case -1904711483: + var6 = aey.equippedKey(var2.getScoreboardName()); + var5 = -761937329; + break; + case -1459251092: + default: + var1 = Minecraft.getInstance(); + var2 = var1.player; + if (var2 == null) { + var5 = -318062213; + } else { + var5 = -1904711483; + } + break; + case -1260646543: + return; + case -971730080: + if (var4 < this.skins.size()) { + var5 = -457192497; + } else { + var5 = 1656101412; + } + break; + case -761937329: + var3 = var6; + this.selected = 0; + if (var3 == null) { + var5 = -1260646543; + } else { + var5 = 2066200114; + } + break; + case -457192497: + if (this.skins.get(var4).getKey().equals(var3)) { + var5 = 1089432492; + } else { + var5 = 1316771031; + } + break; + case -318062213: + var6 = null; + var5 = -761937329; + break; + case 1089432492: + this.selected = var4 + 1; + return; + case 1316771031: + var4++; + var5 = -971730080; + break; + case 1656101412: + return; + case 2066200114: + var4 = 0; + var5 = -971730080; + } + } + } + + private void applySelection() { + Minecraft var1 = null; + LocalPlayer var2 = null; + aex var3 = null; + int var4 = 1840156823; + + while (true) { + switch (var4) { + case -2117897031: + aey.unequipAll(var2.getScoreboardName()); + return; + case -2065220221: + var1 = Minecraft.getInstance(); + var2 = var1.player; + if (var2 == null) { + var4 = 570431358; + } else { + var4 = -484951781; + } + break; + case -484951781: + var3 = this.selectedSkin(); + if (var3 == null) { + var4 = -2117897031; + } else { + var4 = 473620821; + } + break; + case 473620821: + aey.applyKey(var2.getScoreboardName(), var3.getKey()); + return; + case 570431358: + return; + case 1767836502: + this.listener.onSlam(); + var4 = -2065220221; + break; + case 1840156823: + default: + this.skinApplied = (boolean)(((1)) != 0); + if (this.listener != null) { + var4 = 1767836502; + } else { + var4 = -2065220221; + } + } + } + } + + private static float ease(long var0, long var2) { + return apply(de.CUBIC_OUT, var0, var2); + } + + private static float raise(long var0, long var2) { + return apply(de.BAKEK, var0, var2); + } + + private static float retract(long var0, long var2) { + return apply(de.CUBIC_IN, var0, var2); + } + + private static float apply(de var0, long var1, long var3) { + float var5 = Mth.clamp((float)var1 / (float)var3, 0.0F, 1.0F); + return var0.ease(var5, 0.0F, 1.0F, 1.0F); + } +} diff --git a/src/main/java/defpackage/aiz.java b/src/main/java/defpackage/aiz.java new file mode 100644 index 0000000..759a9b2 --- /dev/null +++ b/src/main/java/defpackage/aiz.java @@ -0,0 +1,73 @@ +package defpackage; + +import java.util.HashMap; +import java.util.Map; +import net.minecraft.sounds.SoundEvent; + +public final class aiz { + public static final String ACTIVATE = "watch.activate"; + public static final String DEACTIVATE = "watch.deactivate"; + public static final String TRANSFORM = "watch.transform"; + public static final String DETRANSFORM = "watch.detransform"; + public static final String ARM_OPEN = "watch.arm_open"; + public static final String ARM_CLOSE = "watch.arm_close"; + private static final String SOUND_PREFIX = "watch."; + private static final String CYCLE_PREFIX = "watch.cycle_"; + private static final int CYCLE_COUNT = 4; + private static final Map EVENTS = new HashMap<>(); + private static int cycleIndex; + + private aiz() { + } + + public static void initialize() { + int var0 = 1582798831; + + while (true) { + switch (var0) { + case 833138425: + EVENTS.putAll(mn.register("watch.")); + return; + case 1582798831: + default: + if (!EVENTS.isEmpty()) { + var0 = 1890453032; + } else { + var0 = 833138425; + } + break; + case 1890453032: + return; + } + } + } + + public static void play(String var0, float var1, float var2) { + SoundEvent var3 = null; + int var4 = 1828613716; + + while (true) { + switch (var4) { + case 1395710059: + return; + case 1514933553: + bz.getInstance().getSoundManager().play(var3, var1, var2); + var4 = 1395710059; + break; + case 1828613716: + default: + var3 = EVENTS.get(var0); + if (var3 != null) { + var4 = 1514933553; + } else { + var4 = 1395710059; + } + } + } + } + + public static void playCycle(float var0, float var1) { + cycleIndex = (cycleIndex + (-1373296046 ^ 1373296047) + ((-1373296046 & 1373296047) << 1)) % ((-2014037676 | 2014037680) + (-2014037676 & 2014037680)); + play("watch.cycle_" + (cycleIndex + (1770119454 ^ -1770119453) + ((1770119454 & -1770119453) << 1)), var0, var1); + } +} diff --git a/src/main/java/defpackage/aj.java b/src/main/java/defpackage/aj.java new file mode 100644 index 0000000..b90d001 --- /dev/null +++ b/src/main/java/defpackage/aj.java @@ -0,0 +1,121 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.components.toasts.SystemToast; +import net.minecraft.client.gui.components.toasts.SystemToast.SystemToastId; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.network.chat.Component; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.item.ItemStack; +import org.luaj.vm2.Globals; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.lib.jse.CoerceJavaToLua; + +public class aj { + public static int swingSpeed = 9; + private final Globals globals; + private final LuaValue chunk; + private boolean canRun = (boolean)(((1)) != 0); + private static final ag context = new ag(); + private final bq mInstance = new bq(); + private final bn iInstance = new bn(); + private final bg textureInstance = new bg(); + private final bo jsItemsInstance = new bo(); + private final bp jsTagsInstance = new bp(); + private final br pInstance = new br(); + private final bm easingsInstance = new bm(); + private final bi keyBindManagerInstance = new bi(); + private final bs sInstance = new bs(); + private final bk cInstance = new bk(); + private final ba particleManagerInstance = new ba(); + + public aj(String var1) throws IOException { + this.globals = ak.getInstance().sharedGlobals; + this.globals.set("M", CoerceJavaToLua.coerce(this.mInstance)); + this.globals.set("I", CoerceJavaToLua.coerce(this.iInstance)); + this.globals.set("Texture", CoerceJavaToLua.coerce(this.textureInstance)); + this.globals.set("Items", CoerceJavaToLua.coerce(this.jsItemsInstance)); + this.globals.set("Tags", CoerceJavaToLua.coerce(this.jsTagsInstance)); + this.globals.set("P", CoerceJavaToLua.coerce(this.pInstance)); + this.globals.set("Easings", CoerceJavaToLua.coerce(this.easingsInstance)); + this.globals + .set( + "KeyBindManager", + CoerceJavaToLua.coerce(this.keyBindManagerInstance) + ); + this.globals.set("S", CoerceJavaToLua.coerce(this.sInstance)); + this.globals.set("C", CoerceJavaToLua.coerce(this.cInstance)); + this.globals + .set("particleManager", CoerceJavaToLua.coerce(this.particleManagerInstance)); + this.globals.set("swingSpeed", LuaValue.valueOf(swingSpeed)); + this.globals.set("registry", CoerceJavaToLua.coerce(af.registry)); + this.globals + .set("renderAsBlock", CoerceJavaToLua.coerce(af.renderAsBlock)); + this.globals + .set( + "translateItem", + CoerceJavaToLua.coerce(af.translateItem) + ); + this.globals.set("itemSwingSpeed", CoerceJavaToLua.coerce(af.itemSwingSpeed)); + this.globals + .set("animator", CoerceJavaToLua.coerce(af.modelPartAnimator)); + this.globals + .set("renderAsBlock", CoerceJavaToLua.coerce(af.renderAsBlock)); + this.globals + .set("translateItem", CoerceJavaToLua.coerce(af.translateItem)); + this.globals + .set( + "itemSwingSpeed", + CoerceJavaToLua.coerce(af.itemSwingSpeed) + ); + this.globals.set("useDuration", CoerceJavaToLua.coerce(af.useDuration)); + this.globals.set("usingItem", CoerceJavaToLua.coerce(af.usingItem)); + this.globals.set("debugger", CoerceJavaToLua.coerce(af.debugTextRenderer)); + this.globals + .set("applyBlockRotation", CoerceJavaToLua.coerce(af.applyBlockRotation)); + this.globals.set("context", CoerceJavaToLua.coerce(context)); + this.chunk = this.globals.load(var1); + } + + public void execute( + PoseStack var1, + boolean var2, + HashMap var3, + float var4, + ItemStack var5, + AbstractClientPlayer var6, + InteractionHand var7, + boolean var8, + float var9, + float var10, + float var11, + float var12, + boolean var13, + boolean var14, + boolean var15, + boolean var16, + boolean var17, + boolean var18, + List var19 + ) { + if (this.canRun) { + try { + context.update(var1, var2, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19); + this.chunk.invoke(); + } catch (Exception var21) { + System.err.println("[HoldMyItems] Lua runtime error: " + var21.getMessage()); + SystemToast.addOrUpdate( + Minecraft.getInstance().gui.toastManager(), + SystemToastId.PACK_LOAD_FAILURE, + Component.nullToEmpty("HMI Lua Runtime error!"), + Component.nullToEmpty(var21.getMessage()) + ); + this.canRun = (boolean)(((0)) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/aja.java b/src/main/java/defpackage/aja.java new file mode 100644 index 0000000..b0801e3 --- /dev/null +++ b/src/main/java/defpackage/aja.java @@ -0,0 +1,4 @@ +package defpackage; + +public record aja(int minFramerate, int maxFramerate, int bufferSeconds, int minMegabytes, int maxMegabytes, int megabyteStep, long budgetMegabytes) { +} diff --git a/src/main/java/defpackage/ajb.java b/src/main/java/defpackage/ajb.java new file mode 100644 index 0000000..ac2f324 --- /dev/null +++ b/src/main/java/defpackage/ajb.java @@ -0,0 +1,4 @@ +package defpackage; + +public record ajb(double pixelsPerSecond, double bytesPerPixel, double renderFps, double aspect, int maxHeight) { +} diff --git a/src/main/java/defpackage/ajc.java b/src/main/java/defpackage/ajc.java new file mode 100644 index 0000000..1ba9ad7 --- /dev/null +++ b/src/main/java/defpackage/ajc.java @@ -0,0 +1,7 @@ +package defpackage; + +enum ajc { + IDLE, + WARMUP, + MEASURE; +} diff --git a/src/main/java/defpackage/ajd.java b/src/main/java/defpackage/ajd.java new file mode 100644 index 0000000..bc77660 --- /dev/null +++ b/src/main/java/defpackage/ajd.java @@ -0,0 +1,4 @@ +package defpackage; + +public record ajd(int height, int framerate, int memoryMegabytes) { +} diff --git a/src/main/java/defpackage/aje.java b/src/main/java/defpackage/aje.java new file mode 100644 index 0000000..ca2dc96 --- /dev/null +++ b/src/main/java/defpackage/aje.java @@ -0,0 +1,619 @@ +package defpackage; + +import java.util.concurrent.atomic.AtomicLong; + +public final class aje { + private static final aje INSTANCE = new aje(); + private static final String STATUS_BUSY = "auto tune is busy"; + private static final String STATUS_NO_WORLD = "auto tune needs a loaded world"; + private static final String STATUS_DISABLED = "enable Replay before auto tune"; + private static final String STATUS_FAILED = "auto tune could not measure the capture"; + private static final String RESULT_PREFIX = "auto "; + private static final String RESULT_SEPARATOR = " / "; + private static final String RESULT_HEIGHT = "p"; + private static final String RESULT_FRAMERATE = " fps"; + private static final String RESULT_MEMORY = " MB"; + private static final String LABEL_PREFIX = "Auto tune "; + private static final String LABEL_SUFFIX = "s"; + private static final int[] FRAMERATE_STEPS; + private static final int SMOOTH_FRAMERATE = 60; + private static final long WARMUP_MILLIS = 1500L; + private static final long MEASURE_MILLIS = 4000L; + private static final long MILLIS_PER_SECOND = 1000L; + private static final long BYTES_PER_MEGABYTE = 1048576L; + private static final double CPU_HEADROOM = 0.85; + private static final double RENDER_HEADROOM = 0.9; + private static final double HEAP_SHARE = 0.45; + private static final double SCENE_HEADROOM = 1.5; + private static final long MIN_MEASURED_FRAMES = 8L; + private static final int EVEN_MASK = -2; + private static final int PROBE_INDEX = 0; + private final AtomicLong measuredFrames = new AtomicLong(); + private final AtomicLong measuredBytes = new AtomicLong(); + private final AtomicLong measuredPixels = new AtomicLong(); + private volatile ajc phase = ajc.IDLE; + private volatile long phaseStartedMillis; + private volatile int frameWidth; + private volatile int frameHeight; + private volatile String lastResult; + private long renderFrames; + private boolean reopenEditor; + private String previousResolution; + private String previousQuality; + private float previousFramerate; + private float previousMemory; + + private aje() { + } + + public static aje getInstance() { + return INSTANCE; + } + + public boolean isActive() { + int var2 = 0; + int var1 = -1940857213; + + while (true) { + switch (var1) { + case -1940857213: + default: + if (this.phase != ajc.IDLE) { + var1 = 2135644835; + } else { + var1 = -283285893; + } + break; + case -283285893: + var2 = 0; + var1 = 19351502; + break; + case 19351502: + return (boolean)((var2) != 0); + case 2135644835: + var2 = 1; + var1 = 19351502; + } + } + } + + public String lastResult() { + return this.lastResult; + } + + public void start() { + ti var1 = null; + ajn var2 = null; + int var3 = -1806538906; + + while (true) { + switch (var3) { + case -1846607222: + ajn.notifyStatus( + "auto tune needs a loaded world" + ); + return; + case -1806538906: + default: + if (this.phase != ajc.IDLE) { + var3 = -1097161886; + } else { + var3 = 2133812767; + } + break; + case -1752525130: + ajn.notifyStatus("auto tune is busy"); + return; + case -1097161886: + ajn.notifyStatus("auto tune is busy"); + return; + case -675166055: + ajn.notifyStatus( + "enable Replay before auto tune" + ); + return; + case 133625477: + var2 = ajn.getInstance(); + if (!var2.isRecording()) { + var3 = 1148478268; + } else { + var3 = -1752525130; + } + break; + case 609190900: + if (aqg.mc.level != null) { + var3 = 752605564; + } else { + var3 = -1846607222; + } + break; + case 752605564: + if (aqg.mc.player == null) { + var3 = -1846607222; + } else { + var3 = 133625477; + } + break; + case 1148478268: + if (var2.isExporting()) { + var3 = -1752525130; + } else { + var3 = 1252194657; + } + break; + case 1252194657: + this.reopenEditor = aqg.mc.gui.screen() instanceof aby; + this.previousResolution = var1.resolution.get(); + this.previousQuality = var1.quality.get(); + this.previousFramerate = var1.framerate.getCurrent(); + this.previousMemory = var1.memoryLimit.getCurrent(); + this.frameWidth = 0; + this.frameHeight = 0; + var1.applyCaptureProfile( + ti.captureHeights()[0], + Math.round(var1.framerate.getMax()), + Math.round(this.previousMemory) + ); + this.phaseStartedMillis = System.currentTimeMillis(); + this.phase = ajc.WARMUP; + return; + case 2133812767: + var1 = ti.INSTANCE; + if (!var1.isEnabled()) { + var3 = -675166055; + } else { + var3 = 609190900; + } + } + } + } + + public boolean advance() { + ajc var1 = null; + ti var2 = null; + long var3 = (1748984959976911410L | -1748984959976911410L) + (1748984959976911410L & -1748984959976911410L); + long var5 = (8954893957216776539L ^ -8954893957216776539L) + ((8954893957216776539L & -8954893957216776539L) << 1); + int var7 = -633140018; + + while (true) { + switch (var7) { + case -1753649779: + this.cancel(); + return (boolean)(((0)) != 0); + case -1177897902: + if (var3 - this.phaseStartedMillis >= (1185926241222404939L ^ -1185926241222403439L) + ((1185926241222404939L & -1185926241222403439L) << 1)) { + var7 = 407281714; + } else { + var7 = 1154328541; + } + break; + case -633140018: + default: + var1 = this.phase; + if (var1 == ajc.IDLE) { + var7 = 856768702; + } else { + var7 = 1430222810; + } + break; + case -467804539: + return (boolean)(((1)) != 0); + case 407281714: + this.measuredFrames.set((4988259794202466851L ^ -4988259794202466851L) + ((4988259794202466851L & -4988259794202466851L) << 1)); + this.measuredBytes.set((-2647102034510109724L | 2647102034510109724L) + (-2647102034510109724L & 2647102034510109724L)); + this.measuredPixels.set((3534381249913088800L ^ -3534381249913088800L) + ((3534381249913088800L & -3534381249913088800L) << 1)); + this.renderFrames = (-8222453945429183128L ^ 8222453945429183128L) + ((-8222453945429183128L & 8222453945429183128L) << 1); + this.phaseStartedMillis = var3; + this.phase = ajc.MEASURE; + var7 = 1154328541; + break; + case 668984742: + this.finish(var5); + return (boolean)(((0)) != 0); + case 752823358: + if (aqg.mc.player == null) { + var7 = -1753649779; + } else { + var7 = 1349474645; + } + break; + case 856768702: + return (boolean)(((0)) != 0); + case 1028914275: + this.renderFrames += (8024720873185896773L | -8024720873185896772L) + (8024720873185896773L & -8024720873185896772L); + var5 = var3 - this.phaseStartedMillis; + if (var5 < (-465134827931270757L | 465134827931274757L) + (-465134827931270757L & 465134827931274757L)) { + var7 = -467804539; + } else { + var7 = 668984742; + } + break; + case 1154328541: + return (boolean)(((1)) != 0); + case 1198964227: + if (aqg.mc.level != null) { + var7 = 752823358; + } else { + var7 = -1753649779; + } + break; + case 1349474645: + var3 = System.currentTimeMillis(); + if (var1 == ajc.WARMUP) { + var7 = -1177897902; + } else { + var7 = 1028914275; + } + break; + case 1430222810: + var2 = ti.INSTANCE; + if (var2.isEnabled()) { + var7 = 1198964227; + } else { + var7 = -1753649779; + } + } + } + } + + public void onFrame(int var1, int var2, akb var3) { + int var4 = 365469982; + + while (true) { + switch (var4) { + case -326575962: + return; + case 365469982: + default: + if (this.phase != ajc.MEASURE) { + var4 = -326575962; + } else { + var4 = 670030531; + } + break; + case 670030531: + this.measuredFrames.incrementAndGet(); + this.measuredBytes.addAndGet(var3.payload().length); + this.measuredPixels.addAndGet((long)var1 * var2); + this.frameWidth = var1; + this.frameHeight = var2; + return; + } + } + } + + public ajp status() { + ajc var1 = this.phase; + if (var1 == ajc.IDLE) { + return ajp.NONE; + } + + long var2 = (3738416802699340440L ^ -3738416802699334940L) + ((3738416802699340440L & -3738416802699334940L) << 1); + long var4 = System.currentTimeMillis() + - this.phaseStartedMillis + + ( + var1 == ajc.MEASURE + ? (-7078275282783870170L ^ 7078275282783871670L) + ((-7078275282783870170L & 7078275282783871670L) << 1) + : (1347583186080721336L ^ -1347583186080721336L) + ((1347583186080721336L & -1347583186080721336L) << 1) + ); + long var6 = Math.clamp(var2 - var4, (-6812460794261630185L ^ 6812460794261630185L) + ((-6812460794261630185L & 6812460794261630185L) << 1), var2); + return new ajp( + ajo.TUNING, + "Auto tune " + + ( + var6 / ((-3261655568261093834L | 3261655568261094834L) + (-3261655568261093834L & 3261655568261094834L)) + + (4673572473278563608L | -4673572473278563607L) + + (4673572473278563608L & -4673572473278563607L) + ) + + "s", + Math.clamp((float)var4 / (float)var2, 0.0F, 1.0F) + ); + } + + private void finish(long var1) { + long var3 = (3558495737776975936L | -3558495737776975936L) + (3558495737776975936L & -3558495737776975936L); + long var5 = (-3771769170166652206L ^ 3771769170166652206L) + ((-3771769170166652206L & 3771769170166652206L) << 1); + int var7 = 0; + int var8 = 0; + double var9 = 0.0; + ti var11 = null; + ajd var12 = null; + int var13 = 1619149796; + + while (true) { + switch (var13) { + case -1651013852: + if (var8 <= 0) { + var13 = 79318891; + } else { + var13 = -242338464; + } + break; + case -694928909: + if (var5 > (-6957610032868922298L ^ 6957610032868922298L) + ((-6957610032868922298L & 6957610032868922298L) << 1)) { + var13 = 818841834; + } else { + var13 = 79318891; + } + break; + case -242338464: + var9 = var1 / 1000.0; + var11 = ti.INSTANCE; + var12 = plan(new ajb(var5 / var9, (double)this.measuredBytes.get() / var5, this.renderFrames / var9, (double)var7 / var8, var8), limitsOf(var11)); + var11.applyCaptureProfile(var12.height(), var12.framerate(), var12.memoryMegabytes()); + this.lastResult = "auto " + var12.height() + "p / " + var12.framerate() + " fps / " + var12.memoryMegabytes() + " MB"; + this.reopenEditor(); + ajn.notifyStatus(this.lastResult); + return; + case 79318891: + this.restore(); + this.reopenEditor(); + ajn.notifyStatus( + "auto tune could not measure the capture" + ); + return; + case 818841834: + if (var7 > 0) { + var13 = -1651013852; + } else { + var13 = 79318891; + } + break; + case 1619149796: + default: + var3 = this.measuredFrames.get(); + var5 = this.measuredPixels.get(); + var7 = this.frameWidth; + var8 = this.frameHeight; + this.phase = ajc.IDLE; + if (var3 >= (8592742823656177811L ^ -8592742823656177803L) + ((8592742823656177811L & -8592742823656177803L) << 1)) { + var13 = -694928909; + } else { + var13 = 79318891; + } + } + } + } + + private void cancel() { + this.phase = ajc.IDLE; + this.restore(); + this.reopenEditor = (boolean)(((0)) != 0); + } + + private void reopenEditor() { + int var1 = -1202024361; + + while (true) { + switch (var1) { + case -1202024361: + default: + if (!this.reopenEditor) { + var1 = -791719945; + } else { + var1 = -909969209; + } + break; + case -909969209: + this.reopenEditor = (boolean)(((0)) != 0); + aqg.mc.execute(aby::open); + return; + case -791719945: + return; + } + } + } + + private void restore() { + ti var1 = null; + int var2 = 36020997; + + while (true) { + switch (var2) { + case 36020997: + default: + var1 = ti.INSTANCE; + if (this.previousResolution == null) { + var2 = 913818093; + } else { + var2 = 136318115; + } + break; + case 136318115: + var1.resolution.set(this.previousResolution); + var1.quality.set(this.previousQuality); + var1.framerate.setCurrent(this.previousFramerate); + var1.memoryLimit.setCurrent(this.previousMemory); + this.previousResolution = null; + return; + case 913818093: + return; + } + } + } + + public static ajd plan(ajb var0, aja var1) { + ajd var2 = null; + ajd var3 = null; + Object var4 = null; + int var5 = 0; + int var6 = 0; + int var7 = -1641457105; + + while (true) { + switch (var7) { + case -1641457105: + default: + var2 = search(var0, var1, (1288924836 ^ -1288924776) + ((1288924836 & -1288924776) << 1)); + if (var2 != null) { + var7 = -558780165; + } else { + var7 = 340397850; + } + break; + case -1386114766: + var4 = ti.captureHeights(); + var5 = (int)((Object[])var4)[((Object[])var4).length - (1)]; + var6 = Math.clamp( + FRAMERATE_STEPS[FRAMERATE_STEPS.length - (1)], var1.minFramerate(), var1.maxFramerate() + ); + return profile(var5, var6, framePixels(Math.min(var5, var0.maxHeight()), var0.aspect()), var0.bytesPerPixel(), var1); + case -558780165: + return var2; + case 340397850: + var3 = search(var0, var1, var1.minFramerate()); + if (var3 != null) { + var7 = 426624456; + } else { + var7 = -1386114766; + } + break; + case 426624456: + return var3; + } + } + } + + private static ajd search(ajb var0, aja var1, int var2) { + int[] var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = 0; + long var7 = (-2884352497023388512L | 2884352497023388512L) + (-2884352497023388512L & 2884352497023388512L); + int[] var9 = null; + int var10 = 0; + int var11 = 0; + int var12 = 0; + int var13 = 0; + int var14 = 1977483466; + + while (true) { + switch (var14) { + case -1536087779: + var14 = 132274812; + break; + case -1219012750: + var14 = 132274812; + break; + case -1077793378: + var5++; + var14 = 287832656; + break; + case -718607200: + return null; + case 132274812: + var11++; + var14 = 481050227; + break; + case 287832656: + if (var5 < var4) { + var14 = 954658382; + } else { + var14 = -718607200; + } + break; + case 388642793: + if (neededMegabytes(var7, var13, var0.bytesPerPixel(), var1.bufferSeconds()) > var1.budgetMegabytes()) { + var14 = -1536087779; + } else { + var14 = 595714696; + } + break; + case 481050227: + if (var11 < var10) { + var14 = 1361338017; + } else { + var14 = -1077793378; + } + break; + case 595714696: + return profile(var6, var13, var7, var0.bytesPerPixel(), var1); + case 631749664: + if (!(var13 > var0.renderFps() * 0.9)) { + var14 = 388642793; + } else { + var14 = 132274812; + } + break; + case 954658382: + var6 = var3[var5]; + var7 = framePixels(Math.min(var6, var0.maxHeight()), var0.aspect()); + var9 = FRAMERATE_STEPS; + var10 = var9.length; + var11 = 0; + var14 = 481050227; + break; + case 1361338017: + var12 = var9[var11]; + var13 = Math.clamp(var12, var1.minFramerate(), var1.maxFramerate()); + if (var13 < var2) { + var14 = -1219012750; + } else { + var14 = 1895823152; + } + break; + case 1895823152: + if (!(var7 * var13 > var0.pixelsPerSecond() * 0.85)) { + var14 = 631749664; + } else { + var14 = 132274812; + } + break; + case 1977483466: + default: + var3 = ti.captureHeights(); + var4 = var3.length; + var5 = 0; + var14 = 287832656; + } + } + } + + private static ajd profile(int var0, int var1, long var2, double var4, aja var6) { + long var7 = (long)Math.ceil(neededMegabytes(var2, var1, var4, var6.bufferSeconds()) * 1.5); + int var9 = Math.max(1, var6.megabyteStep()); + long var10 = (var7 + var9 - ((-2492710349213998170L | 2492710349213998171L) + (-2492710349213998170L & 2492710349213998171L))) / var9 * var9; + return new ajd(var0, var1, Math.clamp(var10, var6.minMegabytes(), (int)Math.max(var6.minMegabytes(), var6.budgetMegabytes()))); + } + + private static long neededMegabytes(long var0, int var2, double var3, int var5) { + double var6 = var0 * var3 * var2 * var5; + return (long)Math.ceil(var6 / 1048576.0); + } + + private static aja limitsOf(ti var0) { + Runtime var1 = Runtime.getRuntime(); + long var2 = var1.maxMemory() - var1.totalMemory() + var1.freeMemory(); + int var4 = Math.round(var0.memoryLimit.getMin()); + int var5 = Math.round(var0.memoryLimit.getMax()); + long var6 = Math.clamp( + (long)(var2 * 0.45) / ((-8474684836337461928L | 8474684836338510504L) + (-8474684836337461928L & 8474684836338510504L)), var4, var5 + ); + return new aja( + Math.round(var0.framerate.getMin()), + Math.round(var0.framerate.getMax()), + Math.round(var0.bufferSeconds.getCurrent()), + var4, + var5, + Math.round(var0.memoryLimit.getIncrement()), + var6 + ); + } + + private static long framePixels(int var0, double var1) { + int var3 = var0 & -2; + int var4 = (int)Math.round(var3 * var1) & -2; + return (long)var3 * var4; + } + + static { + int[] var10000 = new int[6]; + var10000[0] = 144; + var10000[1] = 120; + var10000[2] = 90; + var10000[3] = 60; + var10000[4] = 45; + var10000[5] = 30; + FRAMERATE_STEPS = var10000; + } +} diff --git a/src/main/java/defpackage/ajf.java b/src/main/java/defpackage/ajf.java new file mode 100644 index 0000000..c44febe --- /dev/null +++ b/src/main/java/defpackage/ajf.java @@ -0,0 +1,95 @@ +package defpackage; + +import java.util.ArrayDeque; + +public final class ajf { + private final ArrayDeque free = new ArrayDeque<>(); + private final int capacity; + + public ajf(int var1) { + this.capacity = var1; + } + + public synchronized byte[] take(int var1) { + byte[] var2 = null; + byte[] var4 = null; + int var3 = -1482326176; + + while (true) { + switch (var3) { + case -1482326176: + default: + var2 = this.free.pollLast(); + var3 = -618454613; + break; + case -983350550: + var4 = new byte[var1]; + var3 = -580101164; + break; + case -927835142: + var4 = var2; + var3 = -580101164; + break; + case -618454613: + if (var2 != null) { + var3 = -77521812; + } else { + var3 = 1000606972; + } + break; + case -580101164: + return var4; + case -77521812: + if (var2.length != var1) { + var3 = 1912386050; + } else { + var3 = 1000606972; + } + break; + case 1000606972: + if (var2 != null) { + var3 = -927835142; + } else { + var3 = -983350550; + } + break; + case 1912386050: + var2 = this.free.pollLast(); + var3 = -618454613; + } + } + } + + public synchronized void recycle(byte[] var1) { + int var2 = -1428359990; + + while (true) { + switch (var2) { + case -1428359990: + default: + if (var1 != null) { + var2 = -353762544; + } else { + var2 = 1488758009; + } + break; + case -611325464: + this.free.addLast(var1); + return; + case -353762544: + if (this.free.size() >= this.capacity) { + var2 = 1488758009; + } else { + var2 = -611325464; + } + break; + case 1488758009: + return; + } + } + } + + public synchronized void clear() { + this.free.clear(); + } +} diff --git a/src/main/java/defpackage/ajg.java b/src/main/java/defpackage/ajg.java new file mode 100644 index 0000000..12b09c2 --- /dev/null +++ b/src/main/java/defpackage/ajg.java @@ -0,0 +1,4 @@ +package defpackage; + +record ajg(long sequence, byte[] pixels, int width, int height, long timestampMillis, float quality) { +} diff --git a/src/main/java/defpackage/ajh.java b/src/main/java/defpackage/ajh.java new file mode 100644 index 0000000..84574be --- /dev/null +++ b/src/main/java/defpackage/ajh.java @@ -0,0 +1,4 @@ +package defpackage; + +record ajh(long sequence, int width, int height, akb frame) { +} diff --git a/src/main/java/defpackage/aji.java b/src/main/java/defpackage/aji.java new file mode 100644 index 0000000..9e5843a --- /dev/null +++ b/src/main/java/defpackage/aji.java @@ -0,0 +1,5 @@ +package defpackage; + +public interface aji { + void onFrame(int var1, int var2, akb var3); +} diff --git a/src/main/java/defpackage/ajj.java b/src/main/java/defpackage/ajj.java new file mode 100644 index 0000000..5214c75 --- /dev/null +++ b/src/main/java/defpackage/ajj.java @@ -0,0 +1,270 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import java.util.TreeMap; +import java.util.Map.Entry; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; + +public final class ajj { + private static final String WORKER_PREFIX = "EvoClipEncoder-"; + private static final String SINK_NAME = "EvoClipSink"; + private static final String ENCODE_FAILURE = "clip frame encode failed"; + private static final String SINK_FAILURE = "clip frame sink failed"; + private static final int JOBS_PER_WORKER = 2; + private static final long POLL_MILLIS = 250L; + private static final long FLUSH_STEP_MILLIS = 4L; + private static final int PRIORITY_STEP = 2; + private static final int JOIN_MILLIS = 200; + private final aji sink; + private final ajf buffers; + private final int workerCount; + private final BlockingQueue jobs; + private final BlockingQueue results = new LinkedBlockingQueue<>(); + private final List threads = new ArrayList<>(); + private final AtomicInteger inFlight = new AtomicInteger(); + private volatile boolean running; + private volatile long nextSequence; + private volatile long deliveredSequence; + + public ajj(aji var1, ajf var2, int var3) { + this.sink = var1; + this.buffers = var2; + this.workerCount = var3; + this.jobs = new ArrayBlockingQueue<>(var3 * ((908997144 ^ -908997142) + ((908997144 & -908997142) << 1))); + } + + public synchronized void start() { + int var1 = 0; + int var2 = -846759612; + + while (true) { + switch (var2) { + case -1312518950: + this.running = (boolean)(((1)) != 0); + this.nextSequence = (-646614723585715426L ^ 646614723585715426L) + ((-646614723585715426L & 646614723585715426L) << 1); + this.deliveredSequence = (-2219499457018632326L | 2219499457018632326L) + (-2219499457018632326L & 2219499457018632326L); + var1 = 0; + var2 = 1821938585; + break; + case -846759612: + default: + if (this.running) { + var2 = 1722681906; + } else { + var2 = -1312518950; + } + break; + case -703853867: + this.threads + .add( + spawn( + this::runWorker, + "EvoClipEncoder-" + (var1 + (-189153481 | 189153482) + (-189153481 & 189153482)), + (-2108649009 ^ 2108649012) + ((-2108649009 & 2108649012) << 1) + ) + ); + var1++; + var2 = 1821938585; + break; + case 1422584236: + this.threads + .add( + spawn( + this::runSink, + "EvoClipSink", + (1702347453 ^ -1702347449) + ((1702347453 & -1702347449) << 1) + ) + ); + return; + case 1722681906: + return; + case 1821938585: + if (var1 < this.workerCount) { + var2 = -703853867; + } else { + var2 = 1422584236; + } + } + } + } + + public synchronized void stop() { + if (this.running) { + this.running = (boolean)(((0)) != 0); + + for (Thread var2 : this.threads) { + var2.interrupt(); + } + + for (Thread var6 : this.threads) { + try { + var6.join((402049416805921625L | -402049416805921425L) + (402049416805921625L & -402049416805921425L)); + } catch (InterruptedException var4) { + Thread.currentThread().interrupt(); + } + } + + this.threads.clear(); + this.jobs.clear(); + this.results.clear(); + this.inFlight.set((-262198802 ^ 262198802) + ((-262198802 & 262198802) << 1)); + } + } + + public boolean isRunning() { + return this.running; + } + + public int workerCount() { + return this.workerCount; + } + + public int backlog() { + return this.inFlight.get(); + } + + public boolean submit(byte[] var1, int var2, int var3, long var4, float var6) { + Object var7 = null; + int var8 = 931372006; + + while (true) { + switch (var8) { + case -967847931: + return (boolean)(((0)) != 0); + case -728665468: + var7 = new ajg(this.nextSequence, var1, var2, var3, var4, var6); + if (!this.jobs.offer((ajg)var7)) { + var8 = 1640868565; + } else { + var8 = 418819067; + } + break; + case 418819067: + this.nextSequence += (-3786528741264697172L ^ 3786528741264697173L) + ((-3786528741264697172L & 3786528741264697173L) << 1); + this.inFlight.incrementAndGet(); + return (boolean)(((1)) != 0); + case 931372006: + default: + if (!this.running) { + var8 = -967847931; + } else { + var8 = -728665468; + } + break; + case 1640868565: + return (boolean)(((0)) != 0); + } + } + } + + public long submittedSequence() { + return this.nextSequence; + } + + public void flushTo(long var1, long var3) { + long var5 = System.currentTimeMillis() + var3; + + while (this.deliveredSequence < var1 && System.currentTimeMillis() < var5) { + try { + Thread.sleep((-6521900280005109355L | 6521900280005109359L) + (-6521900280005109355L & 6521900280005109359L)); + } catch (InterruptedException var8) { + Thread.currentThread().interrupt(); + return; + } + } + } + + public void flush(long var1) { + long var3 = System.currentTimeMillis() + var1; + + while (this.inFlight.get() > 0 && System.currentTimeMillis() < var3) { + try { + Thread.sleep((3789852220519500467L ^ -3789852220519500463L) + ((3789852220519500467L & -3789852220519500463L) << 1)); + } catch (InterruptedException var6) { + Thread.currentThread().interrupt(); + return; + } + } + } + + private void runWorker() { + try (akc var1 = new akc(1.0F)) { + while (this.running) { + ajg var2 = this.jobs + .poll((9130024095522465723L ^ -9130024095522465473L) + ((9130024095522465723L & -9130024095522465473L) << 1), TimeUnit.MILLISECONDS); + if (var2 != null) { + akb var3 = null; + + try { + byte[] var4 = var1.encode(var2.pixels(), var2.width(), var2.height(), var2.quality()); + var3 = new akb(var2.timestampMillis(), var4); + } catch (Throwable var12) { + id.error( + Cif.MEDIA, + "clip frame encode failed", + var12 + ); + } finally { + this.buffers.recycle(var2.pixels()); + this.results.add(new ajh(var2.sequence(), var2.width(), var2.height(), var3)); + } + } + } + } catch (InterruptedException var15) { + Thread.currentThread().interrupt(); + } + } + + private void runSink() { + long var1 = (7059182313785961473L ^ -7059182313785961473L) + ((7059182313785961473L & -7059182313785961473L) << 1); + TreeMap var3 = new TreeMap(); + + try { + while (this.running) { + ajh var4 = this.results + .poll((3356150256617995427L | -3356150256617995177L) + (3356150256617995427L & -3356150256617995177L), TimeUnit.MILLISECONDS); + if (var4 != null) { + var3.put(var4.sequence(), var4); + + while (!var3.isEmpty()) { + Entry var5 = var3.firstEntry(); + if ((Long)var5.getKey() != var1) { + break; + } + + var3.pollFirstEntry(); + var1 += (4115922682219951230L | -4115922682219951229L) + (4115922682219951230L & -4115922682219951229L); + this.deliver((ajh)var5.getValue()); + this.deliveredSequence = var1; + this.inFlight.decrementAndGet(); + } + } + } + } catch (InterruptedException var6) { + Thread.currentThread().interrupt(); + } + } + + private void deliver(ajh var1) { + if (var1.frame() != null) { + try { + this.sink.onFrame(var1.width(), var1.height(), var1.frame()); + } catch (Throwable var3) { + id.error(Cif.MEDIA, "clip frame sink failed", var3); + } + } + } + + private static Thread spawn(Runnable var0, String var1, int var2) { + Thread var3 = new Thread(var0, var1); + var3.setDaemon((boolean)((((-400171881 ^ 400171882) + ((-400171881 & 400171882) << 1))) != 0)); + var3.setPriority(var2); + var3.start(); + return var3; + } +} diff --git a/src/main/java/defpackage/ajk.java b/src/main/java/defpackage/ajk.java new file mode 100644 index 0000000..a8bbaa9 --- /dev/null +++ b/src/main/java/defpackage/ajk.java @@ -0,0 +1,4 @@ +package defpackage; + +public interface ajk extends aqu { +} diff --git a/src/main/java/defpackage/ajl.java b/src/main/java/defpackage/ajl.java new file mode 100644 index 0000000..25a5325 --- /dev/null +++ b/src/main/java/defpackage/ajl.java @@ -0,0 +1,24 @@ +package defpackage; + +public final class ajl { + private static final String NAME = "replay"; + private static final int MAX_IN_FLIGHT = 3; + private static final aqv CAPTURE = new aqv( + "replay", (-84107136 | 84107139) + (-84107136 & 84107139) + ); + + private ajl() { + } + + public static boolean capture(int var0, ajk var1) { + return CAPTURE.capture(var0, var1); + } + + public static long droppedFrames() { + return CAPTURE.droppedFrames(); + } + + public static void release() { + CAPTURE.release(); + } +} diff --git a/src/main/java/defpackage/ajm.java b/src/main/java/defpackage/ajm.java new file mode 100644 index 0000000..2b01cb4 --- /dev/null +++ b/src/main/java/defpackage/ajm.java @@ -0,0 +1,24 @@ +package defpackage; + +import java.util.Objects; + +/* JADX INFO: loaded from: evovis-dec.jar:ajm.class */ +class ajm implements ajv { + final /* synthetic */ ajn this$0; + + ajm(ajn ajnVar) { + Objects.requireNonNull(ajnVar); + this.this$0 = ajnVar; + } + + @Override // defpackage.ajv + public void onProgress(float f) { + this.this$0.exportProgress = f; + } + + /* JADX WARN: Type inference failed for: r0v2, types: [boolean, int] */ + @Override // defpackage.ajv + public boolean cancelled() { + return 0; + } +} diff --git a/src/main/java/defpackage/ajn.java b/src/main/java/defpackage/ajn.java new file mode 100644 index 0000000..60d80c4 --- /dev/null +++ b/src/main/java/defpackage/ajn.java @@ -0,0 +1,929 @@ +package defpackage; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Path; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; +import javax.sound.sampled.LineUnavailableException; +import org.lwjgl.PointerBuffer; +import org.lwjgl.system.MemoryStack; +import org.lwjgl.util.tinyfd.TinyFileDialogs; + +public final class ajn implements aji, ajk { + private static final ajn INSTANCE = new ajn(); + private static final String CLIPS_DIRECTORY = "clips"; + private static final String IO_THREAD = "EvoClipIO"; + private static final String EXPORT_THREAD = "EvoClipExport"; + private static final String NOTIFY_TITLE = "Clips"; + private static final String STATUS_SAVED = "saved"; + private static final String STATUS_EMPTY = "buffer is empty"; + private static final String STATUS_RECORDING = "recording"; + private static final String STATUS_STOPPED = "recording saved"; + private static final String STATUS_EXPORTED = "exported"; + private static final String STATUS_FAILED = "failed"; + private static final String STATUS_BUSY = "already working"; + private static final String STATUS_NO_AUDIO = "audio device unavailable"; + private static final String STATUS_NO_LOOPBACK = "game audio needs a loopback device"; + private static final String STATUS_CANCELLED = "export cancelled"; + private static final String DIALOG_TITLE = "Save clip"; + private static final String FILTER_PATTERN = "*.mp4"; + private static final String FILTER_LABEL = "MP4 video"; + private static final String SAVE_FAILURE = "clip save failed"; + private static final String RECORD_FAILURE = "clip recording failed"; + private static final String EXPORT_FAILURE = "clip export failed"; + private static final String AUDIO_FAILURE = "clip audio capture unavailable for channel {}"; + private static final String LABEL_RECORDING = "REC "; + private static final String LABEL_SAVING = "Saving clip"; + private static final String LABEL_EXPORTING = "Exporting "; + private static final String TIME_SEPARATOR = ":"; + private static final String TIME_PAD = "0"; + private static final String PERCENT = "%"; + private static final int PIXEL_POOL_CAPACITY = 8; + private static final int MIN_WORKERS = 1; + private static final int MAX_WORKERS = 4; + private static final int CORES_PER_WORKER = 2; + private static final int FRAMES_PER_WORKER = 30; + private static final int MAX_CATCHUP_INTERVALS = 4; + private static final long FLUSH_TIMEOUT_MILLIS = 3000L; + private static final long NANOS_PER_SECOND = 1000000000L; + private static final long MILLIS_PER_SECOND = 1000L; + private static final long SECONDS_PER_MINUTE = 60L; + private static final int PAD_LIMIT = 10; + private static final int PERCENT_SCALE = 100; + private static final int MIN_EXPORT_CHUNK = 15; + private static final float PROGRESS_COMPLETE = 1.0F; + private final akd library = new akd(new File(bz.DIRECTORY, "clips").toPath()); + private final ajf pixels = new ajf((-530988065 | 530988073) + (-530988065 & 530988073)); + private final akg ring = new akg( + (4068614446794629938L | -4068614446794629938L) + (4068614446794629938L & -4068614446794629938L), + (-7238148903045534534L ^ 7238148903045534534L) + ((-7238148903045534534L & 7238148903045534534L) << 1) + ); + private final aju audioRing = new aju((-3540198577801529315L ^ 3540198577801529315L) + ((-3540198577801529315L & 3540198577801529315L) << 1)); + private final ExecutorService io = Executors.newSingleThreadExecutor( + factory("EvoClipIO") + ); + private final ExecutorService exports = Executors.newSingleThreadExecutor( + factory("EvoClipExport") + ); + private final Object writerLock = new Object(); + private final Object poolLock = new Object(); + private volatile ajj encoders; + private ajz writer; + private volatile ajq systemAudio; + private volatile ajq microphoneAudio; + private volatile boolean systemAudioFailed; + private volatile boolean microphoneFailed; + private long lastCaptureNanos; + private int lastLevelId; + private volatile int frameWidth; + private volatile int frameHeight; + private volatile boolean recording; + private volatile boolean forcedExport; + private volatile long recordingStartedMillis; + private volatile boolean saving; + private volatile boolean exporting; + volatile float exportProgress; + + private ajn() { + } + + public static ajn getInstance() { + return INSTANCE; + } + + public akd library() { + return this.library; + } + + public int bufferedFrames() { + return this.ring.frameCount(); + } + + public long bufferedMillis() { + return this.ring.spanMillis(); + } + + public long bufferedBytes() { + return this.ring.usedBytes(); + } + + public boolean isRecording() { + return this.recording; + } + + public Path activeClipPath() { + synchronized (this.writerLock) { + return this.writer == null ? null : this.writer.path(); + } + } + + public boolean isExporting() { + return this.exporting; + } + + public float exportProgress() { + return this.exportProgress; + } + + public ajp status() { + ajp var1 = null; + int var2 = 1695866167; + + while (true) { + switch (var2) { + case -2116776308: + if (this.recording) { + var2 = -1047961509; + } else { + var2 = -1204917921; + } + break; + case -1394340563: + return var1; + case -1204917921: + if (this.saving) { + var2 = 1668494564; + } else { + var2 = 1605639620; + } + break; + case -1047961509: + return new ajp(ajo.RECORDING, "REC " + elapsed(System.currentTimeMillis() - this.recordingStartedMillis), 1.0F); + case 541660842: + return ajp.NONE; + case 1605639620: + if (this.exporting) { + var2 = 1913038014; + } else { + var2 = 541660842; + } + break; + case 1668494564: + return new ajp(ajo.SAVING, "Saving clip", 1.0F); + case 1695866167: + default: + var1 = aje.getInstance().status(); + if (var1.active()) { + var2 = -1394340563; + } else { + var2 = -2116776308; + } + break; + case 1913038014: + return new ajp(ajo.EXPORTING, "Exporting " + Math.round(this.exportProgress * 100.0F) + "%", this.exportProgress); + } + } + } + + public void captureFrame() { + ti var1 = ti.INSTANCE; + boolean var2 = aje.getInstance().advance(); + if ((var1.isEnabled() || this.recording) && aqg.mc.level != null && aqg.mc.player != null) { + if (var2 || var1.instantReplay.isEnabled() || this.recording) { + int var3 = System.identityHashCode(aqg.mc.level); + if (var3 != this.lastLevelId) { + this.lastLevelId = var3; + this.ring.clear(); + } + + long var4 = System.nanoTime(); + long var6 = ((204804686408849003L ^ -204804685408849003L) + ((204804686408849003L & -204804685408849003L) << 1)) / var1.captureFps(); + if (var4 - this.lastCaptureNanos >= var6) { + this.lastCaptureNanos = var4 - this.lastCaptureNanos + > var6 * ((6528836991116781498L ^ -6528836991116781494L) + ((6528836991116781498L & -6528836991116781494L) << 1)) + ? var4 + : this.lastCaptureNanos + var6; + this.ring.resize(var1.bufferMillis(), var1.bufferBytes()); + this.audioRing.resize(var1.bufferMillis()); + this.startEncoders(); + this.syncAudioCapture(var1); + ajl.capture(var1.captureHeight(), this); + } + } + } + } + + @Override + public byte[] borrow(int var1) { + return this.pixels.take(var1); + } + + @Override + public boolean accept(byte[] var1, int var2, int var3, long var4) { + ajj var6 = null; + int var8 = 0; + int var7 = -1692979841; + + while (true) { + switch (var7) { + case -2101731117: + var8 = 0; + var7 = 113816286; + break; + case -1692979841: + default: + var6 = this.encoders; + if (var6 != null) { + var7 = -1472899494; + } else { + var7 = -2101731117; + } + break; + case -1472899494: + if (var6.submit(var1, var2, var3, var4, ti.INSTANCE.jpegQuality())) { + var7 = 1714758591; + } else { + var7 = -2101731117; + } + break; + case 113816286: + return (boolean)((var8) != 0); + case 1714758591: + var8 = 1; + var7 = 113816286; + } + } + } + + @Override + public void discard(byte[] var1) { + this.pixels.recycle(var1); + } + + @Override + public void onFrame(int var1, int var2, akb var3) { + if (var1 != this.frameWidth || var2 != this.frameHeight) { + this.frameWidth = var1; + this.frameHeight = var2; + this.ring.clear(); + if (this.recording) { + this.stopRecording(); + } + } + + aje var4 = aje.getInstance(); + var4.onFrame(var1, var2, var3); + if (ti.INSTANCE.instantReplay.isEnabled() && !var4.isActive()) { + this.ring.add(var3); + } + + synchronized (this.writerLock) { + if (this.writer != null) { + try { + this.writer.append(var3); + } catch (IOException var8) { + id.error(Cif.MEDIA, "clip recording failed", var8); + this.closeWriterLocked(); + this.recording = (boolean)(((0)) != 0); + } + } + } + } + + private void onAudio(ajr var1) { + if (ti.INSTANCE.instantReplay.isEnabled()) { + this.audioRing.add(var1); + } + + synchronized (this.writerLock) { + if (this.writer != null) { + try { + this.writer.appendAudio(var1); + } catch (IOException var5) { + id.error(Cif.MEDIA, "clip recording failed", var5); + } + } + } + } + + private void syncAudioCapture(ti var1) { + int var2 = var1.gameAudio.isEnabled() && !this.systemAudioFailed + ? 1: 0; + int var3 = var1.microphone.isEnabled() && !this.microphoneFailed + ? 1: 0; + if (var2 + != ( + this.systemAudio != null + ? 1: (1992414113 ^ -1992414113) + ((1992414113 & -1992414113) << 1) + ) + || var3 + != ( + this.microphoneAudio != null + ? 1: (-1007646925 ^ 1007646925) + ((-1007646925 & 1007646925) << 1) + )) { + String var4 = var1.gameAudioDevice(); + String var5 = var1.microphoneDevice(); + int var6 = var4 != null && var4.equals(var5) + ? 1: 0; + this.io + .execute( + () -> { + if (!var2 && this.systemAudio != null) { + this.systemAudio.close(); + this.systemAudio = null; + } + + if (!var3 && this.microphoneAudio != null) { + this.microphoneAudio.close(); + this.microphoneAudio = null; + } + + if (var3 && this.microphoneAudio == null) { + this.microphoneAudio = this.openAudio(1, var5); + this.microphoneFailed = (boolean)(((this.microphoneAudio == null + ? 1: (1683764292 ^ -1683764292) + ((1683764292 & -1683764292) << 1))) != 0); + } + + if (var2 && this.systemAudio == null) { + if (var4 == null) { + this.systemAudioFailed = (boolean)(((1)) != 0); + notifyStatus( + "game audio needs a loopback device" + ); + } else if (var6 && this.microphoneAudio != null) { + this.systemAudioFailed = (boolean)(((1)) != 0); + notifyStatus("game audio needs a loopback device"); + } else { + this.systemAudio = this.openAudio(0, var4); + this.systemAudioFailed = (boolean)(((this.systemAudio == null + ? 1: (31052517 ^ -31052517) + ((31052517 & -31052517) << 1))) != 0); + } + } + } + ); + } + } + + private ajq openAudio(int var1, String var2) { + if (var2 == null) { + notifyStatus("audio device unavailable"); + return null; + } + + try { + ajq var3 = new ajq(var1, var2, this::onAudio); + var3.start(System.currentTimeMillis()); + return var3; + } catch (LineUnavailableException | RuntimeException var4) { + id.error( + Cif.MEDIA, + "clip audio capture unavailable for channel {}", + var1, + var4 + ); + notifyStatus("audio device unavailable"); + return null; + } + } + + private void closeAudio() { + int var1 = 46666817; + + while (true) { + switch (var1) { + case -1012708051: + this.microphoneAudio.close(); + this.microphoneAudio = null; + var1 = 54512945; + break; + case -72612598: + this.systemAudio.close(); + this.systemAudio = null; + var1 = 535564911; + break; + case 46666817: + default: + if (this.systemAudio != null) { + var1 = -72612598; + } else { + var1 = 535564911; + } + break; + case 54512945: + this.systemAudioFailed = (boolean)(((0)) != 0); + this.microphoneFailed = (boolean)(((0)) != 0); + this.audioRing.clear(); + return; + case 535564911: + if (this.microphoneAudio != null) { + var1 = -1012708051; + } else { + var1 = 54512945; + } + } + } + } + + public void saveInstantReplay() { + List var1 = null; + List var2 = null; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 985883918; + + while (true) { + switch (var6) { + case -857498035: + var2 = this.audioRing.snapshot(((akb)var1.getFirst()).timestampMillis(), ((akb)var1.getLast()).timestampMillis()); + var3 = this.frameWidth; + var4 = this.frameHeight; + var5 = ti.INSTANCE.captureFps(); + this.saving = (boolean)(((1)) != 0); + this.io.execute(() -> this.writeClip(var1, var2, var3, var4, var5)); + return; + case -411039100: + var1 = this.ring.snapshot(); + if (var1.size() < (1727226768 ^ -1727226766) + ((1727226768 & -1727226766) << 1)) { + var6 = -242760839; + } else { + var6 = -857498035; + } + break; + case -242760839: + notifyStatus("buffer is empty"); + return; + case 985883918: + default: + if (this.saving) { + var6 = 1626806322; + } else { + var6 = -411039100; + } + break; + case 1626806322: + notifyStatus("already working"); + return; + } + } + } + + public void toggleRecording() { + int var1 = 1831475424; + + while (true) { + switch (var1) { + case -1927287706: + this.startRecording(); + var1 = 487530995; + break; + case -699861389: + this.stopRecording(); + var1 = 487530995; + break; + case 487530995: + return; + case 1831475424: + default: + if (this.recording) { + var1 = -699861389; + } else { + var1 = -1927287706; + } + } + } + } + + public void startRecording() { + int var1 = 0; + int var2 = 0; + int var3 = 0; + int var4 = -702390882; + + while (true) { + switch (var4) { + case -1786782579: + notifyStatus("already working"); + return; + case -1113527304: + var1 = this.frameWidth; + var2 = this.frameHeight; + var3 = ti.INSTANCE.captureFps(); + this.recording = (boolean)(((1)) != 0); + this.recordingStartedMillis = System.currentTimeMillis(); + this.io.execute(() -> this.openWriter(var1, var2, var3)); + notifyStatus("recording"); + return; + case -702390882: + default: + if (!this.recording) { + var4 = 1164277836; + } else { + var4 = -1786782579; + } + break; + case 1164277836: + if (this.saving) { + var4 = -1786782579; + } else { + var4 = -1113527304; + } + } + } + } + + public void stopRecording() { + this.stopRecording((boolean)((((-899973690 | 899973690) + (-899973690 & 899973690))) != 0)); + } + + public void stopRecording(boolean var1) { + int var2 = -2042369646; + + while (true) { + switch (var2) { + case -2042369646: + default: + if (!this.recording) { + var2 = 1576689565; + } else { + var2 = -847555136; + } + break; + case -847555136: + this.recording = (boolean)(((0)) != 0); + this.forcedExport = var1; + this.io.execute(this::finishRecording); + return; + case 1576689565: + return; + } + } + } + + public void export(ake var1, int var2, int var3) { + int var4 = -879081490; + + while (true) { + switch (var4) { + case -2010159792: + this.exporting = (boolean)(((1)) != 0); + this.exportProgress = 0.0F; + this.exports.execute(() -> this.runExport(var1, var2, var3, this.library.allocateExport(var1.name()))); + return; + case -879081490: + default: + if (this.exporting) { + var4 = 357208169; + } else { + var4 = -2010159792; + } + break; + case 357208169: + notifyStatus("already working"); + return; + } + } + } + + public void exportAs(ake var1, int var2, int var3) { + int var4 = 1766889993; + + while (true) { + switch (var4) { + case -46915276: + this.exporting = (boolean)(((1)) != 0); + this.exportProgress = 0.0F; + this.exports.execute(() -> { + Path var4x = null; + int var5 = -1440358899; + + while (true) { + switch (var5) { + case -1756571626: + this.runExport(var1, var2, var3, var4x); + return; + case -1440358899: + default: + var4x = chooseTarget(this.library.allocateExport(var1.name())); + if (var4x == null) { + var5 = 657811488; + } else { + var5 = -1756571626; + } + break; + case 657811488: + this.exporting = (boolean)(((0)) != 0); + notifyStatus("export cancelled"); + return; + } + } + }); + return; + case 1702042761: + notifyStatus("already working"); + return; + case 1766889993: + } + + if (this.exporting) { + var4 = 1702042761; + } else { + var4 = -46915276; + } + } + } + + private static Path chooseTarget(Path var0) { + try { + MemoryStack var1 = MemoryStack.stackPush(); + + Path var4; + try { + PointerBuffer var2 = var1.mallocPointer((402000002 ^ -402000001) + ((402000002 & -402000001) << 1)); + var2.put(var1.UTF8("*.mp4")); + var2.flip(); + String var3 = TinyFileDialogs.tinyfd_saveFileDialog( + "Save clip", + var0.toString(), + var2, + "MP4 video" + ); + var4 = var3 != null && !var3.isBlank() ? Path.of(var3) : null; + } catch (Throwable var6) { + if (var1 != null) { + try { + var1.close(); + } catch (Throwable var5) { + var6.addSuppressed(var5); + } + } + + throw var6; + } + + if (var1 != null) { + var1.close(); + } + + return var4; + } catch (Throwable var7) { + id.error(Cif.MEDIA, "clip export failed", var7); + return var0; + } + } + + public void shutdown() { + this.stopRecording(); + this.io.execute(this::stopEncoders); + aqg.mc.execute(ajl::release); + } + + private void stopEncoders() { + synchronized (this.poolLock) { + ajj var2 = this.encoders; + if (var2 != null) { + var2.flush((1837848887167015651L ^ -1837848887167012651L) + ((1837848887167015651L & -1837848887167012651L) << 1)); + var2.stop(); + this.encoders = null; + } + } + + this.ring.clear(); + this.pixels.clear(); + this.closeAudio(); + } + + private void startEncoders() { + int var1 = desiredWorkers(); + ajj var2 = this.encoders; + if (var2 == null || !var2.isRunning() || var2.workerCount() != var1) { + synchronized (this.poolLock) { + if (this.encoders != null && this.encoders.workerCount() != var1) { + this.encoders.stop(); + this.encoders = null; + } + + if (this.encoders == null) { + this.encoders = new ajj(this, this.pixels, var1); + } + + if (!this.encoders.isRunning()) { + this.encoders.start(); + } + } + } + } + + private static int desiredWorkers() { + int var0 = Math.round(ti.INSTANCE.captureFps() / 30.0F); + int var1 = Runtime.getRuntime().availableProcessors() / (2); + return Math.clamp( + Math.min(var0, var1), 1, (103338153 ^ -103338149) + ((103338153 & -103338149) << 1) + ); + } + + private void writeClip(List var1, List var2, int var3, int var4, int var5) { + Path var6 = this.library.allocateClip(((akb)var1.getFirst()).timestampMillis()); + + try (ajz var7 = new ajz(var6, var3, var4, var5, ((akb)var1.getFirst()).timestampMillis())) { + var7.appendAll(var1); + var7.appendAllAudio(var2); + } catch (IOException var12) { + this.saving = (boolean)(((0)) != 0); + id.error(Cif.MEDIA, "clip save failed", var12); + notifyStatus("failed"); + return; + } + + this.saving = (boolean)(((0)) != 0); + this.library.prune(ti.INSTANCE.storageBytes()); + this.announceClip(var6, "saved"); + } + + private void openWriter(int var1, int var2, int var3) { + long var4 = System.currentTimeMillis(); + Path var6 = this.library.allocateClip(var4); + + try { + ajz var7 = new ajz(var6, var1, var2, var3, var4); + synchronized (this.writerLock) { + this.writer = var7; + } + } catch (IOException var11) { + this.recording = (boolean)(((0)) != 0); + id.error(Cif.MEDIA, "clip recording failed", var11); + notifyStatus("failed"); + } + } + + private void finishRecording() { + ajj var1 = this.encoders; + if (var1 != null) { + var1.flushTo(var1.submittedSequence(), (-3082258856859192361L ^ 3082258856859195361L) + ((-3082258856859192361L & 3082258856859195361L) << 1)); + } + + Path var2; + synchronized (this.writerLock) { + if (this.writer == null) { + return; + } + + var2 = this.writer.path(); + this.closeWriterLocked(); + } + + this.library.prune(ti.INSTANCE.storageBytes()); + this.announceClip(var2, "recording saved"); + } + + private void closeWriterLocked() { + try { + this.writer.close(); + } catch (IOException var5) { + id.error(Cif.MEDIA, "clip recording failed", var5); + } finally { + this.writer = null; + } + } + + private void announceClip(Path var1, String var2) { + ake var3; + try { + var3 = aka.readMeta(var1); + } catch (IOException var6) { + id.error(Cif.MEDIA, "clip save failed", var6); + notifyStatus("failed"); + return; + } + + notifyStatus(var2 + " " + elapsed(var3.durationMillis())); + playSavedSound(); + ti var4 = ti.INSTANCE; + boolean var5 = this.forcedExport; + this.forcedExport = (boolean)(((0)) != 0); + if ((var4.autoExport.isEnabled() || var5) && var3.frameCount() > (2047021825 ^ -2047021824) + ((2047021825 & -2047021824) << 1)) { + this.export( + var3, 0, var3.frameCount() - ((1153039940 ^ -1153039939) + ((1153039940 & -1153039939) << 1)) + ); + } + + if (var4.openEditor.isEnabled()) { + aqg.mc.execute(() -> aby.open(var3)); + } + } + + // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow. + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private void runExport(ake var1, int var2, int var3, Path var4) { + int var5 = 0; + boolean var15 = false /* VF: Semaphore variable */; + + label65: { + label64: { + try { + var15 = true; + + try (ajy var6 = new ajy(var1.path())) { + ti var7 = ti.INSTANCE; + int var8 = Math.max(15, var7.exportFps()); + ajw var9 = new ajw(var7.exportQuantizer(), var7.exportThreads(), var8, var7.exportFps()); + var5 = (ajx.export( + var6, + Math.max(0, var2), + Math.min(var3, var6.frameCount() - ((-1066600019 ^ 1066600020) + ((-1066600019 & 1066600020) << 1))), + var4, + var9, + this.listener() + )) ? 1 : 0; + } + + var15 = false; + break label64; + } catch (IOException var18) { + id.error( + Cif.MEDIA, "clip export failed", var18 + ); + var15 = false; + } finally { + if (var15) { + this.exporting = (boolean)(((0)) != 0); + this.exportProgress = 0.0F; + } + } + + this.exporting = (boolean)(((0)) != 0); + this.exportProgress = 0.0F; + break label65; + } + + this.exporting = (boolean)(((0)) != 0); + this.exportProgress = 0.0F; + } + + notifyStatus( + var5 != 0 + ? "exported" + : "failed" + ); + } + + private ajv listener() { + return new ajv() { + @Override + public void onProgress(float var1) { + ajn.this.exportProgress = var1; + } + + @Override + public boolean cancelled() { + return (boolean)(((0)) != 0); + } + }; + } + + private static void playSavedSound() { + aqg.mc.execute(() -> { + mm var0 = null; + int var1 = 541190834; + + while (true) { + switch (var1) { + case 541190834: + default: + var0 = bz.getInstance().getSoundManager(); + if (var0 != null) { + var1 = 911639411; + } else { + var1 = 1669065045; + } + break; + case 911639411: + var0.play(mj.CLIP_SAVED); + var1 = 1669065045; + break; + case 1669065045: + return; + } + } + }); + } + + static void notifyStatus(String var0) { + aqg.mc + .execute( + () -> le.getInstance() + .addCustomNotification(rl.MISC.getIcon(), "Clips", var0) + ); + } + + public static String elapsed(long var0) { + long var2 = Math.max((-4278841967973501350L | 4278841967973501350L) + (-4278841967973501350L & 4278841967973501350L), var0) + / ((6702982416488184899L ^ -6702982416488183899L) + ((6702982416488184899L & -6702982416488183899L) << 1)); + long var4 = var2 / ((-7061273179146511698L ^ 7061273179146511758L) + ((-7061273179146511698L & 7061273179146511758L) << 1)); + long var6 = var2 % ((8277252237356953933L ^ -8277252237356953873L) + ((8277252237356953933L & -8277252237356953873L) << 1)); + return var4 + + ":" + + (var6 < (1037647348913914466L | -1037647348913914456L) + (1037647348913914466L & -1037647348913914456L) ? "0" + var6 : Long.toString(var6)); + } + + private static ThreadFactory factory(String var0) { + return var1 -> { + Thread var2 = new Thread(var1, var0); + var2.setDaemon((boolean)((((-1506489619 | 1506489620) + (-1506489619 & 1506489620))) != 0)); + return var2; + }; + } +} diff --git a/src/main/java/defpackage/ajo.java b/src/main/java/defpackage/ajo.java new file mode 100644 index 0000000..6f3437e --- /dev/null +++ b/src/main/java/defpackage/ajo.java @@ -0,0 +1,9 @@ +package defpackage; + +public enum ajo { + NONE, + RECORDING, + SAVING, + EXPORTING, + TUNING; +} diff --git a/src/main/java/defpackage/ajp.java b/src/main/java/defpackage/ajp.java new file mode 100644 index 0000000..e5d1b59 --- /dev/null +++ b/src/main/java/defpackage/ajp.java @@ -0,0 +1,32 @@ +package defpackage; + +public record ajp(ajo kind, String label, float progress) { + public static final ajp NONE = new ajp(ajo.NONE, "", 0.0F); + + public boolean active() { + int var2 = 0; + int var1 = 647459216; + + while (true) { + switch (var1) { + case -2041319695: + var2 = 1; + var1 = -1073225341; + break; + case -1073225341: + return (boolean)((var2) != 0); + case -1005059055: + var2 = 0; + var1 = -1073225341; + break; + case 647459216: + default: + if (this.kind != ajo.NONE) { + var1 = -2041319695; + } else { + var1 = -1005059055; + } + } + } + } +} diff --git a/src/main/java/defpackage/ajq.java b/src/main/java/defpackage/ajq.java new file mode 100644 index 0000000..aaa6668 --- /dev/null +++ b/src/main/java/defpackage/ajq.java @@ -0,0 +1,585 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.function.Consumer; +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.Mixer; +import javax.sound.sampled.TargetDataLine; +import javax.sound.sampled.Mixer.Info; + +public final class ajq implements AutoCloseable { + public static final int SAMPLE_RATE = 44100; + public static final int SAMPLE_BITS = 16; + public static final int CHANNELS = 2; + public static final int BYTES_PER_FRAME = 4; + public static final String AUTO_DEVICE = "Auto"; + private static final String THREAD_PREFIX = "EvoClipAudio-"; + private static final String NO_DEVICE = "no audio input device available"; + private static final String UNKNOWN_DEVICE = "audio input not available: "; + private static final String[] LOOPBACK_HINTS; + private static final int CHUNK_MILLIS = 50; + private static final int MILLIS_PER_SECOND = 1000; + private static final int MONO = 1; + private static final int LINE_BUFFER_CHUNKS = 8; + private static final int JOIN_MILLIS = 400; + private static final int SHORT_BYTES = 2; + private final int channel; + private final String deviceName; + private final TargetDataLine line; + private final AudioFormat format; + private final Consumer sink; + private volatile boolean running; + private Thread worker; + + public ajq(int var1, String var2, Consumer var3) throws LineUnavailableException { + this.channel = var1; + this.sink = var3; + this.deviceName = var2; + this.line = openLine(var2); + this.format = this.line.getFormat(); + } + + public String deviceName() { + return this.deviceName; + } + + public static List inputDevices() { + ArrayList var0 = null; + Info[] var1 = null; + int var2 = 0; + int var3 = 0; + Info var4 = null; + String var5 = null; + int var6 = -1952656522; + + while (true) { + switch (var6) { + case -1952656522: + default: + var0 = new ArrayList(); + var0.add("Auto"); + var1 = AudioSystem.getMixerInfo(); + var2 = var1.length; + var3 = 0; + var6 = 1186470724; + break; + case -1791490202: + var3++; + var6 = 1186470724; + break; + case -1037278676: + var0.add(var5); + var6 = -1791490202; + break; + case -754125563: + var5 = var4.getName(); + if (!var0.contains(var5)) { + var6 = -1037278676; + } else { + var6 = -1791490202; + } + break; + case -472611150: + var6 = -1791490202; + break; + case 581003039: + var4 = var1[var3]; + if (!supportsCapture(AudioSystem.getMixer(var4))) { + var6 = -472611150; + } else { + var6 = -754125563; + } + break; + case 1049098011: + return var0; + case 1186470724: + if (var3 < var2) { + var6 = 581003039; + } else { + var6 = 1049098011; + } + } + } + } + + public static String resolveDevice(String var0) { + Info[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = 1553993991; + + while (true) { + switch (var5) { + case -2112523252: + var3++; + var5 = 178067878; + break; + case -1443615059: + var4 = var1[var3]; + if (supportsCapture(AudioSystem.getMixer((Info)var4))) { + var5 = 1162058192; + } else { + var5 = -1278711733; + } + break; + case -1278711733: + var3++; + var5 = 1503814263; + break; + case -835906408: + return var4.getName(); + case -295850052: + if (!var0.isBlank()) { + var5 = 599454020; + } else { + var5 = 1876920729; + } + break; + case -138673383: + if (supportsCapture(AudioSystem.getMixer((Info)var4))) { + var5 = -835906408; + } else { + var5 = -2112523252; + } + break; + case -15816049: + var1 = AudioSystem.getMixerInfo(); + var2 = var1.length; + var3 = 0; + var5 = 178067878; + break; + case -15747779: + return null; + case 178067878: + if (var3 < var2) { + var5 = 1273139659; + } else { + var5 = -15747779; + } + break; + case 599454020: + if (!"Auto".equals(var0)) { + var5 = -15816049; + } else { + var5 = 1876920729; + } + break; + case 693759750: + return null; + case 1162058192: + return var4.getName(); + case 1273139659: + var4 = var1[var3]; + if (var4.getName().equals(var0)) { + var5 = -138673383; + } else { + var5 = -2112523252; + } + break; + case 1503814263: + if (var3 < var2) { + var5 = -1443615059; + } else { + var5 = 693759750; + } + break; + case 1553993991: + default: + if (var0 != null) { + var5 = -295850052; + } else { + var5 = 1876920729; + } + break; + case 1876920729: + var1 = AudioSystem.getMixerInfo(); + var2 = var1.length; + var3 = 0; + var5 = 1503814263; + } + } + } + + public static String detectLoopbackDevice() { + Info[] var0 = null; + int var1 = 0; + int var2 = 0; + Info var3 = null; + String var4 = null; + String var5 = null; + String[] var6 = null; + int var7 = 0; + int var8 = 0; + Object var9 = null; + int var10 = -1532385473; + + while (true) { + switch (var10) { + case -1783257783: + return var3.getName(); + case -1532385473: + default: + var0 = AudioSystem.getMixerInfo(); + var1 = var0.length; + var2 = 0; + var10 = -790588748; + break; + case -1199162461: + if (var8 < var7) { + var10 = 1371555554; + } else { + var10 = -992583962; + } + break; + case -992583962: + var2++; + var10 = -790588748; + break; + case -790588748: + if (var2 < var1) { + var10 = 1818335974; + } else { + var10 = 148067559; + } + break; + case 148067559: + return null; + case 875074736: + var8++; + var10 = -1199162461; + break; + case 904191918: + if (supportsCapture(AudioSystem.getMixer(var3))) { + var10 = -1783257783; + } else { + var10 = 875074736; + } + break; + case 1239936932: + if (var5.contains((CharSequence)var9)) { + var10 = 904191918; + } else { + var10 = 875074736; + } + break; + case 1371555554: + var9 = var6[var8]; + if (!var4.contains((CharSequence)var9)) { + var10 = 1239936932; + } else { + var10 = 904191918; + } + break; + case 1818335974: + var3 = var0[var2]; + var4 = var3.getName().toLowerCase(Locale.ROOT); + var5 = var3.getDescription().toLowerCase(Locale.ROOT); + var6 = LOOPBACK_HINTS; + var7 = var6.length; + var8 = 0; + var10 = -1199162461; + } + } + } + + public void start(long var1) { + Thread var3 = null; + int var4 = -478838790; + + while (true) { + switch (var4) { + case -478838790: + default: + if (this.running) { + var4 = 1458516855; + } else { + var4 = 1216923330; + } + break; + case 1216923330: + this.running = (boolean)(((1)) != 0); + this.line.start(); + var3 = new Thread(() -> this.run(var1), "EvoClipAudio-" + this.channel); + var3.setDaemon((boolean)((((159563824 | -159563823) + (159563824 & -159563823))) != 0)); + var3.setPriority((-797614796 ^ 797614800) + ((-797614796 & 797614800) << 1)); + this.worker = var3; + var3.start(); + return; + case 1458516855: + return; + } + } + } + + @Override + public void close() { + this.running = (boolean)(((0)) != 0); + Thread var1 = this.worker; + this.worker = null; + this.line.stop(); + this.line.close(); + if (var1 != null) { + try { + var1.join((8821104097238170862L | -8821104097238170462L) + (8821104097238170862L & -8821104097238170462L)); + } catch (InterruptedException var3) { + Thread.currentThread().interrupt(); + } + } + } + + private void run(long var1) { + int var3 = 0; + int var4 = 0; + byte[] var5 = null; + long var6 = (6815144047988032983L | -6815144047988032983L) + (6815144047988032983L & -6815144047988032983L); + int var8 = 0; + long var9 = (-7288956451421190547L | 7288956451421190547L) + (-7288956451421190547L & 7288956451421190547L); + int var11 = -389489871; + + while (true) { + switch (var11) { + case -1624071449: + var11 = 846081652; + break; + case -389489871: + default: + var3 = this.format.getFrameSize(); + var4 = var3 + * 0; + var5 = new byte[var4]; + var6 = (-4518851452389567339L ^ 4518851452389567339L) + ((-4518851452389567339L & 4518851452389567339L) << 1); + var11 = 846081652; + break; + case 783393468: + var9 = var1 + + var6 + * ((4480260212671495702L | -4480260212671494702L) + (4480260212671495702L & -4480260212671494702L)) + / ((-8208351024964645334L | 8208351024964689434L) + (-8208351024964645334L & 8208351024964689434L)); + var6 += var8 / var3; + this.sink.accept(new ajr(this.channel, var9, this.toStereo(var5, var8))); + var11 = 846081652; + break; + case 846081652: + if (this.running) { + var11 = 1550421008; + } else { + var11 = 1799561592; + } + break; + case 1550421008: + var8 = this.line.read(var5, 0, var5.length); + if (var8 <= 0) { + var11 = -1624071449; + } else { + var11 = 783393468; + } + break; + case 1799561592: + return; + } + } + } + + private byte[] toStereo(byte[] var1, int var2) { + byte[] var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = -851916617; + + while (true) { + switch (var6) { + case -2054984817: + var3 = new byte[var2 * (2)]; + var4 = 0; + var5 = 0; + var6 = -1306241534; + break; + case -1306241534: + if (var4 < var2) { + var6 = 906654634; + } else { + var6 = 719939040; + } + break; + case -851916617: + default: + if (this.format.getChannels() == (1804354495 ^ -1804354493) + ((1804354495 & -1804354493) << 1)) { + var6 = 1642630620; + } else { + var6 = -2054984817; + } + break; + case 719939040: + return var3; + case 906654634: + var3[var5] = var1[var4]; + var3[var5 + 1] = var1[var4 + + 1]; + var3[var5 + 2] = var1[var4]; + var3[var5 + 3] = var1[var4 + + 1]; + var4 += 2; + var5 += 4; + var6 = -1306241534; + break; + case 1642630620: + var3 = new byte[var2]; + System.arraycopy( + var1, 0, var3, 0, var2 + ); + return var3; + } + } + } + + private static TargetDataLine openLine(String var0) throws LineUnavailableException { + LineUnavailableException var1 = null; + + for (int var2 = 2; var2 >= 1; var2--) { + AudioFormat var3 = new AudioFormat( + 44100.0F, + 16, + var2, + (boolean)(((1)) != 0), + (boolean)((((-1702025372 ^ 1702025372) + ((-1702025372 & 1702025372) << 1)) + ) != 0)); + javax.sound.sampled.DataLine.Info var4 = new javax.sound.sampled.DataLine.Info(TargetDataLine.class, var3); + + try { + TargetDataLine var5 = resolve(var0, var4); + var5.open( + var3, + var3.getFrameSize() + * ((1802244264 ^ -1802200164) + ((1802244264 & -1802200164) << 1)) + * ((-1592412236 | 1592412286) + (-1592412236 & 1592412286)) + * ((1330678624 ^ -1330678616) + ((1330678624 & -1330678616) << 1)) + / ((2111760484 ^ -2111759484) + ((2111760484 & -2111759484) << 1)) + ); + return var5; + } catch (LineUnavailableException | IllegalArgumentException var7) { + var1 = var7 instanceof LineUnavailableException var6 ? var6 : new LineUnavailableException(var7.getMessage()); + } + } + + throw var1 != null + ? var1 + : new LineUnavailableException("no audio input device available"); + } + + private static TargetDataLine resolve(String var0, javax.sound.sampled.DataLine.Info var1) throws LineUnavailableException { + Info[] var2 = null; + int var3 = 0; + int var4 = 0; + Info var5 = null; + Mixer var6 = null; + int var7 = -500767720; + + while (true) { + switch (var7) { + case -1871249140: + return (TargetDataLine)var6.getLine(var1); + case -500767720: + default: + var2 = AudioSystem.getMixerInfo(); + var3 = var2.length; + var4 = 0; + var7 = 667425394; + break; + case -451831956: + var4++; + var7 = 667425394; + break; + case -139308772: + var6 = AudioSystem.getMixer(var5); + if (var6.isLineSupported(var1)) { + var7 = -1871249140; + } else { + var7 = -451831956; + } + break; + case 667425394: + if (var4 < var3) { + var7 = 842087841; + } else { + var7 = 1929830594; + } + break; + case 842087841: + var5 = var2[var4]; + if (var5.getName().equals(var0)) { + var7 = -139308772; + } else { + var7 = -451831956; + } + break; + case 1929830594: + throw new LineUnavailableException("audio input not available: " + var0); + } + } + } + + private static boolean supportsCapture(Mixer var0) { + int var1 = 0; + AudioFormat var2 = null; + int var3 = 1179535222; + + while (true) { + switch (var3) { + case -1094911607: + if (var1 >= (-1226912232 ^ 1226912233) + ((-1226912232 & 1226912233) << 1)) { + var3 = -670674078; + } else { + var3 = 1786522968; + } + break; + case -670674078: + var2 = new AudioFormat( + 44100.0F, + 16, + var1, + (boolean)(((1)) != 0), + (boolean)((((-269537650 | 269537650) + (-269537650 & 269537650)) + ) != 0)); + if (var0.isLineSupported(new javax.sound.sampled.DataLine.Info(TargetDataLine.class, var2))) { + var3 = 206095512; + } else { + var3 = 44264803; + } + break; + case 44264803: + var1--; + var3 = -1094911607; + break; + case 206095512: + return (boolean)(((1)) != 0); + case 1179535222: + default: + var1 = 2; + var3 = -1094911607; + break; + case 1786522968: + return (boolean)(((0)) != 0); + } + } + } + + static { + String[] var10000 = new String[10]; + var10000[0] = "loopback"; + var10000[1] = "stereo mix"; + var10000[2] = "what u hear"; + var10000[3] = "blackhole"; + var10000[4] = "monitor"; + var10000[5] = "virtual"; + var10000[6] = "soundflower"; + var10000[7] = "vb-audio"; + var10000[8] = "cable output"; + var10000[9] = "voicemeeter"; + LOOPBACK_HINTS = var10000; + } +} diff --git a/src/main/java/defpackage/ajr.java b/src/main/java/defpackage/ajr.java new file mode 100644 index 0000000..54c37c2 --- /dev/null +++ b/src/main/java/defpackage/ajr.java @@ -0,0 +1,6 @@ +package defpackage; + +public record ajr(int channel, long timestampMillis, byte[] samples) { + public static final int CHANNEL_SYSTEM = 0; + public static final int CHANNEL_MICROPHONE = 1; +} diff --git a/src/main/java/defpackage/ajs.java b/src/main/java/defpackage/ajs.java new file mode 100644 index 0000000..25aaa12 --- /dev/null +++ b/src/main/java/defpackage/ajs.java @@ -0,0 +1,179 @@ +package defpackage; + +import java.io.IOException; + +public final class ajs { + public static final byte[] EMPTY = new byte[0]; + public static final float UNITY_GAIN = 1.0F; + private static final int MILLIS_PER_SECOND = 1000; + private static final int SAMPLE_MIN = -32768; + private static final int SAMPLE_MAX = 32767; + private static final int BYTE_MASK = 255; + private static final int HIGH_SHIFT = 8; + + private ajs() { + } + + public static int frameCount(long var0) { + return (int)framePosition(var0); + } + + public static long framePosition(long var0) { + return Math.floorDiv( + var0 * ((4768182090906290769L | -4768182090906246669L) + (4768182090906290769L & -4768182090906246669L)), + (939209188 ^ -939208188) + ((939209188 & -939208188) << 1) + ); + } + + public static long millisOf(long var0) { + return var0 + * ((3000603652070455273L | -3000603652070454273L) + (3000603652070455273L & -3000603652070454273L)) + / ((-266489442884376631L ^ 266489442884420731L) + ((-266489442884376631L & 266489442884420731L) << 1)); + } + + public static byte[] mix(ajy var0, long var1, long var3, float var5) throws IOException { + return mix(var0, var1, (4838918731193982531L | -4838918731193982531L) + (4838918731193982531L & -4838918731193982531L), frameCount(var3 - var1), var5); + } + + public static byte[] mix(ajy var0, long var1, long var3, int var5, float var6) throws IOException { + int[] var7 = null; + int var8 = 0; + long var9 = (-5698777437748753845L | 5698777437748753845L) + (-5698777437748753845L & 5698777437748753845L); + int var11 = 0; + byte[] var12 = null; + int var13 = 0; + int var14 = 0; + int var15 = 0; + int var16 = 0; + int var17 = 0; + int var18 = -1176766565; + + while (true) { + switch (var18) { + case -1967993749: + var16 = var15 * (4); + var17 = (int)(var9 + var15) * (2); + var7[var17] += sample(var12, var16); + var7[var17 + 1] = var7[var17 + 1] + + sample(var12, var16 + (-1278446479 ^ 1278446481) + ((-1278446479 & 1278446481) << 1)); + var15++; + var18 = -1269811098; + break; + case -1707177498: + return EMPTY; + case -1269811098: + if (var15 < var14) { + var18 = -1967993749; + } else { + var18 = -255590926; + } + break; + case -1176766565: + default: + if (var5 > 0) { + var18 = -1076943894; + } else { + var18 = -1707177498; + } + break; + case -1076943894: + if (!var0.hasAudio()) { + var18 = -1707177498; + } else { + var18 = 1963322757; + } + break; + case -255590926: + var8++; + var18 = 2022497425; + break; + case 506969913: + var18 = -255590926; + break; + case 1229427208: + var12 = var0.audioChunk(var8); + var13 = (int)Math.max((5256029396332695943L ^ -5256029396332695943L) + ((5256029396332695943L & -5256029396332695943L) << 1), -var9); + var14 = (int)Math.min(var11, var5 - var9); + var15 = var13; + var18 = -1269811098; + break; + case 1387952213: + return toBytes(var7, var6); + case 1761958060: + if (var9 >= var5) { + var18 = 506969913; + } else { + var18 = 1229427208; + } + break; + case 1963322757: + var7 = new int[var5 * (2)]; + var8 = 0; + var18 = 2022497425; + break; + case 2022497425: + if (var8 < var0.audioChunkCount()) { + var18 = 2080583599; + } else { + var18 = 1387952213; + } + break; + case 2080583599: + var9 = framePosition(var0.audioTimestamp(var8) - var1) - var3; + var11 = var0.audioByteLength(var8) / (4); + if (var9 + var11 > (2726517157351367065L ^ -2726517157351367065L) + ((2726517157351367065L & -2726517157351367065L) << 1)) { + var18 = 1761958060; + } else { + var18 = -255590926; + } + } + } + } + + private static byte[] toBytes(int[] var0, float var1) { + byte[] var2 = null; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 1826920802; + + while (true) { + switch (var6) { + case -703414047: + if (var3 < var0.length) { + var6 = 1531752253; + } else { + var6 = 489908134; + } + break; + case 489908134: + return var2; + case 1531752253: + var5 = Math.clamp( + Math.round(var0[var3] * var1), + -32768, + (2103548918 | -2103516151) + (2103548918 & -2103516151) + ); + var2[var4] = (byte)(var5 & (1469512690 ^ -1469512435) + ((1469512690 & -1469512435) << 1)); + var2[var4 + 1] = (byte)(var5 >> (-632540857 | 632540865) + (-632540857 & 632540865)); + var3++; + var4 += 2; + var6 = -703414047; + break; + case 1826920802: + default: + var2 = new byte[var0.length * (2)]; + var3 = 0; + var4 = 0; + var6 = -703414047; + } + } + } + + private static int sample(byte[] var0, int var1) { + return (short)( + var0[var1] & (1519470404 | -1519470149) + (1519470404 & -1519470149) + | var0[var1 + 1] << (855311911 | -855311903) + (855311911 & -855311903) + ); + } +} diff --git a/src/main/java/defpackage/ajt.java b/src/main/java/defpackage/ajt.java new file mode 100644 index 0000000..6e6b7d8 --- /dev/null +++ b/src/main/java/defpackage/ajt.java @@ -0,0 +1,178 @@ +package defpackage; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.concurrent.atomic.AtomicLong; +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.SourceDataLine; +import javax.sound.sampled.DataLine.Info; + +public final class ajt implements AutoCloseable { + private static final String THREAD_NAME = "EvoClipPlayback"; + private static final String PLAYBACK_FAILURE = "clip playback failed"; + private static final String CLOSE_FAILURE = "clip playback close failed"; + private static final int SLICE_MILLIS = 60; + private static final int LINE_BUFFER_SLICES = 6; + private static final long IDLE_WAIT_MILLIS = 40L; + private static final int JOIN_MILLIS = 300; + private static final long UNSET = Long.MIN_VALUE; + private static final int MILLIS_PER_SECOND = 1000; + private final ajy reader; + private final SourceDataLine line; + private final AtomicLong requestedPosition = new AtomicLong( + (-1647339351911155170L ^ -7576032684943620638L) + ((-1647339351911155170L & -7576032684943620638L) << 1) + ); + private final AtomicLong anchorPosition = new AtomicLong(); + private final AtomicLong anchorFrame = new AtomicLong(); + private final Object signal = new Object(); + private volatile boolean running = (boolean)(((1)) != 0); + private volatile boolean playing; + private volatile float gain = 1.0F; + private Thread worker; + + public ajt(Path var1) throws IOException, LineUnavailableException { + this.reader = new ajy(var1); + if (!this.reader.hasAudio()) { + this.reader.close(); + throw new IOException("clip has no audio"); + } + + AudioFormat var2 = new AudioFormat( + 44100.0F, + 16, + 2, + (boolean)(((1)) != 0), + (boolean)((((-660453019 ^ 660453019) + ((-660453019 & 660453019) << 1)) + ) != 0)); + Info var3 = new Info(SourceDataLine.class, var2); + this.line = (SourceDataLine)AudioSystem.getLine(var3); + this.line + .open( + var2, + ((758411396 | -758411392) + (758411396 & -758411392)) + * ajs.frameCount((-883387850970719589L | 883387850970719649L) + (-883387850970719589L & 883387850970719649L)) + * ((1001735372 ^ -1001735366) + ((1001735372 & -1001735366) << 1)) + ); + Thread var4 = new Thread(this::run, "EvoClipPlayback"); + var4.setDaemon((boolean)((((-1725449801 ^ 1725449802) + ((-1725449801 & 1725449802) << 1))) != 0)); + this.worker = var4; + var4.start(); + } + + public void setGain(float var1) { + this.gain = Math.clamp(var1, 0.0F, 1.0F); + } + + public void play(long var1) { + this.seek(var1); + this.playing = (boolean)(((1)) != 0); + this.line.start(); + this.wake(); + } + + public void pause() { + this.playing = (boolean)(((0)) != 0); + this.line.stop(); + this.line.flush(); + } + + public void seek(long var1) { + this.requestedPosition.set(var1); + this.wake(); + } + + public long positionMillis() { + long var1 = this.line.getLongFramePosition() - this.anchorFrame.get(); + return this.anchorPosition.get() + + var1 + * ((8959618316554324126L | -8959618316554323126L) + (8959618316554324126L & -8959618316554323126L)) + / ((207754807074171423L | -207754807074127323L) + (207754807074171423L & -207754807074127323L)); + } + + @Override + public void close() { + this.running = (boolean)(((0)) != 0); + this.playing = (boolean)(((0)) != 0); + this.wake(); + Thread var1 = this.worker; + this.worker = null; + this.line.stop(); + this.line.flush(); + if (var1 != null) { + try { + var1.join((1460822302189134724L ^ -1460822302189134424L) + ((1460822302189134724L & -1460822302189134424L) << 1)); + } catch (InterruptedException var4) { + Thread.currentThread().interrupt(); + } + } + + this.line.close(); + + try { + this.reader.close(); + } catch (IOException var3) { + id.warn(Cif.MEDIA, "clip playback close failed", var3); + } + } + + private void wake() { + synchronized (this.signal) { + this.signal.notifyAll(); + } + } + + private void run() { + int var1 = ajs.frameCount((-3720801297016954146L ^ 3720801297016954206L) + ((-3720801297016954146L & 3720801297016954206L) << 1)); + long var2 = this.reader.timestamp((-1641125725 ^ 1641125725) + ((-1641125725 & 1641125725) << 1)); + long var4 = (6509076292425670232L | 2714295744429105576L) + (6509076292425670232L & 2714295744429105576L); + + try { + while (this.running) { + if (!this.playing) { + var4 = (-4908957766314584931L ^ -4314414270540190877L) + ((-4908957766314584931L & -4314414270540190877L) << 1); + synchronized (this.signal) { + this.signal.wait((-6499849038770236191L ^ 6499849038770236231L) + ((-6499849038770236191L & 6499849038770236231L) << 1)); + } + } else { + long var6 = this.requestedPosition + .getAndSet((-983741553116956970L ^ -8239630483737818838L) + ((-983741553116956970L & -8239630483737818838L) << 1)); + if (var6 != (8794181097465717195L ^ 429190939389058613L) + ((8794181097465717195L & 429190939389058613L) << 1) + || var4 == (7689160241123688031L | 1534211795731087777L) + (7689160241123688031L & 1534211795731087777L)) { + var4 = var6 == (7592057447563582526L | 1631314589291193282L) + (7592057447563582526L & 1631314589291193282L) + ? (-2339467567919952493L ^ 2339467567919952493L) + ((-2339467567919952493L & 2339467567919952493L) << 1) + : Math.max((4197125377978012842L ^ -4197125377978012842L) + ((4197125377978012842L & -4197125377978012842L) << 1), ajs.framePosition(var6)); + this.line.flush(); + this.anchorFrame.set(this.line.getLongFramePosition()); + this.anchorPosition.set(ajs.millisOf(var4)); + } + + byte[] var8 = ajs.mix(this.reader, var2, var4, var1, this.gain); + var4 += var1; + if (var8.length == 0) { + synchronized (this.signal) { + this.signal.wait((6693376977346683125L | -6693376977346683085L) + (6693376977346683125L & -6693376977346683085L)); + } + } else { + int var9 = 0; + + while ( + var9 < var8.length + && this.playing + && this.running + && this.requestedPosition.get() == (-4199650841711427614L | -5023721195143348194L) + (-4199650841711427614L & -5023721195143348194L) + ) { + var9 += this.line.write(var8, var9, var8.length - var9); + } + } + } + } + } catch (InterruptedException var13) { + Thread.currentThread().interrupt(); + } catch (IOException var14) { + this.playing = (boolean)(((0)) != 0); + id.error(Cif.MEDIA, "clip playback failed", var14); + } + } +} diff --git a/src/main/java/defpackage/aju.java b/src/main/java/defpackage/aju.java new file mode 100644 index 0000000..9294ea1 --- /dev/null +++ b/src/main/java/defpackage/aju.java @@ -0,0 +1,140 @@ +package defpackage; + +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public final class aju { + private final ArrayDeque chunks = new ArrayDeque<>(); + private long windowMillis; + private long usedBytes; + + public aju(long var1) { + this.windowMillis = var1; + } + + public synchronized void resize(long var1) { + this.windowMillis = var1; + this.trim(); + } + + public synchronized void add(ajr var1) { + this.chunks.addLast(var1); + this.usedBytes = this.usedBytes + var1.samples().length; + this.trim(); + } + + public synchronized List snapshot(long var1, long var3) { + ArrayList var5 = null; + Iterator var6 = null; + ajr var7 = null; + long var8 = (-8019027991201974788L ^ 8019027991201974788L) + ((-8019027991201974788L & 8019027991201974788L) << 1); + int var10 = -1586296630; + + while (true) { + switch (var10) { + case -1985735473: + var5.add(var7); + var10 = -3147280; + break; + case -1586296630: + default: + var5 = new ArrayList(); + var6 = this.chunks.iterator(); + var10 = -1457099425; + break; + case -1457099425: + if (var6.hasNext()) { + var10 = -1408331132; + } else { + var10 = -1114897452; + } + break; + case -1408331132: + var7 = (ajr)var6.next(); + var8 = var7.timestampMillis() + durationMillis(var7); + if (var8 >= var1) { + var10 = 1397896203; + } else { + var10 = -3147280; + } + break; + case -1114897452: + return var5; + case -3147280: + var10 = -1457099425; + break; + case 1397896203: + if (var7.timestampMillis() <= var3) { + var10 = -1985735473; + } else { + var10 = -3147280; + } + } + } + } + + public synchronized void clear() { + this.chunks.clear(); + this.usedBytes = (2217949702918477619L ^ -2217949702918477619L) + ((2217949702918477619L & -2217949702918477619L) << 1); + } + + public synchronized long usedBytes() { + return this.usedBytes; + } + + public static long durationMillis(ajr var0) { + return var0.samples().length + * ((-5617719252544722817L | 5617719252544723817L) + (-5617719252544722817L & 5617719252544723817L)) + / ((4818985938690077036L | -4818985938689900636L) + (4818985938690077036L & -4818985938689900636L)); + } + + private void trim() { + ajr var1 = null; + long var2 = (-2317935393279680005L | 2317935393279680005L) + (-2317935393279680005L & 2317935393279680005L); + ajr var4 = null; + int var5 = 1157235359; + + while (true) { + switch (var5) { + case -1664437603: + if ((var4 = this.chunks.peekFirst()) != null) { + var5 = 262423704; + } else { + var5 = 2128257101; + } + break; + case -919372648: + var2 = var1.timestampMillis() - this.windowMillis; + var5 = -1664437603; + break; + case 225731674: + return; + case 262423704: + if (var4.timestampMillis() < var2) { + var5 = 1759832544; + } else { + var5 = 2128257101; + } + break; + case 1157235359: + default: + var1 = this.chunks.peekLast(); + if (var1 == null) { + var5 = 225731674; + } else { + var5 = -919372648; + } + break; + case 1759832544: + this.chunks.pollFirst(); + this.usedBytes = this.usedBytes - var4.samples().length; + var5 = -1664437603; + break; + case 2128257101: + return; + } + } + } +} diff --git a/src/main/java/defpackage/ajv.java b/src/main/java/defpackage/ajv.java new file mode 100644 index 0000000..d6e9267 --- /dev/null +++ b/src/main/java/defpackage/ajv.java @@ -0,0 +1,7 @@ +package defpackage; + +public interface ajv { + void onProgress(float var1); + + boolean cancelled(); +} diff --git a/src/main/java/defpackage/ajw.java b/src/main/java/defpackage/ajw.java new file mode 100644 index 0000000..f219c72 --- /dev/null +++ b/src/main/java/defpackage/ajw.java @@ -0,0 +1,4 @@ +package defpackage; + +public record ajw(int quantizer, int threads, int chunkFrames, int frameRate) { +} diff --git a/src/main/java/defpackage/ajx.java b/src/main/java/defpackage/ajx.java new file mode 100644 index 0000000..006344c --- /dev/null +++ b/src/main/java/defpackage/ajx.java @@ -0,0 +1,417 @@ +package defpackage; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.file.CopyOption; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicInteger; +import org.jcodec.codecs.h264.H264Encoder; +import org.jcodec.common.AudioFormat; +import org.jcodec.common.Codec; +import org.jcodec.common.MuxerTrack; +import org.jcodec.common.VideoCodecMeta; +import org.jcodec.common.VideoEncoder.EncodedFrame; +import org.jcodec.common.io.FileChannelWrapper; +import org.jcodec.common.io.NIOUtils; +import org.jcodec.common.model.ColorSpace; +import org.jcodec.common.model.Packet; +import org.jcodec.common.model.Picture; +import org.jcodec.common.model.Size; +import org.jcodec.common.model.Packet.FrameType; +import org.jcodec.containers.mp4.muxer.MP4Muxer; +import org.jcodec.containers.mp4.muxer.PCMMP4MuxerTrack; + +public final class ajx { + public static final String EXTENSION = ".mp4"; + private static final String THREAD_PREFIX = "EvoClipExport-"; + private static final String PARTIAL_SUFFIX = ".part"; + private static final String ODD_DIMENSIONS = "clip dimensions must be even: "; + private static final String EMPTY_RANGE = "clip range is empty"; + private static final String ENCODE_FAILURE = "clip encode failed"; + private static final long MILLIS_PER_SECOND = 1000L; + private static final long FRAME_DURATION = 1L; + private static final int MIN_FRAME_RATE = 1; + private static final int MAX_FRAME_RATE = 480; + private static final int NO_FRAME = -1; + private static final int QUEUE_DEPTH_PER_THREAD = 2; + private static final int BUFFER_SLACK = 65536; + private static final int LUMA_PER_CHROMA = 3; + private static final int CHROMA_DIVISOR = 2; + private static final float COMPLETE = 1.0F; + private static final int AUDIO_SLICE_FRAMES = 44100; + + private ajx() { + } + + // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow. + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public static boolean export(ajy var0, int var1, int var2, Path var3, ajw var4, ajv var5) throws IOException { + int var6 = var0.width(); + int var7 = var0.height(); + if ((var6 & (1925453825 | -1925453824) + (1925453825 & -1925453824)) == 0 && (var7 & (17083863 ^ -17083862) + ((17083863 & -17083862) << 1)) == 0) { + int var8 = Math.clamp( + var4.frameRate(), 1, (1044704469 | -1044703989) + (1044704469 & -1044703989) + ); + int[] var9 = resample(var0, var1, var2, var8); + int var10 = var9.length; + if (var10 <= 0) { + throw new IOException("clip range is empty"); + } + + ExecutorService var11 = Executors.newFixedThreadPool(var4.threads(), factory()); + Files.createDirectories(var3.getParent()); + Path var12 = var3.resolveSibling(var3.getFileName() + ".part"); + FileChannelWrapper var13 = null; + int var14 = 0; + boolean var29 = false /* VF: Semaphore variable */; + + int var34; + label165: { + try { + var29 = true; + var13 = NIOUtils.writableChannel(var12.toFile()); + MP4Muxer var15 = MP4Muxer.createMP4MuxerToChannel(var13); + MuxerTrack var16 = var15.addVideoTrack(Codec.H264, VideoCodecMeta.createSimpleVideoCodecMeta(new Size(var6, var7), ColorSpace.YUV420J)); + ArrayDeque var17 = new ArrayDeque(); + int var18 = var4.threads() * (2); + int var19 = 0; + int var20 = 0; + long var21 = (-8571160640385714325L ^ 8571160640385714325L) + ((-8571160640385714325L & 8571160640385714325L) << 1); + + while (var20 < var10) { + while (var17.size() < var18 && var19 < var10) { + int var23 = var19; + var34 = Math.min(var23 + var4.chunkFrames(), var10); + var17.addLast(var11.submit(chunk(var0, var9, var23, var34, var4))); + var19 = var34; + } + + Future var32 = (Future)var17.pollFirst(); + if (var32 == null) { + break; + } + + for (ByteBuffer var25 : await(var32)) { + var16.addFrame( + Packet.createPacket( + var25, + var21, + var8, + (3906162493417809260L | -3906162493417809259L) + (3906162493417809260L & -3906162493417809259L), + var20, + FrameType.UNKNOWN, + null + ) + ); + var21 += (-8138441470116947116L ^ 8138441470116947117L) + ((-8138441470116947116L & 8138441470116947117L) << 1); + var20++; + } + + if (var5 != null) { + var5.onProgress((float)var20 / var10); + if (var5.cancelled()) { + var34 = 0; + var29 = false; + break label165; + } + } + } + + writeAudio(var0, var0.timestamp(var9[0]), var10, var8, var15); + var15.finish(); + var14 = 1; + var29 = false; + } catch (IOException var30) { + throw var30; + } finally { + if (var29) { + var11.shutdownNow(); + if (var13 != null) { + NIOUtils.closeQuietly(var13); + } + + if (var14 != 0) { + CopyOption[] var10002 = new CopyOption[1]; + var10002[0] = StandardCopyOption.REPLACE_EXISTING; + Files.move(var12, var3, var10002); + } else { + Files.deleteIfExists(var12); + } + } + } + + var11.shutdownNow(); + if (var13 != null) { + NIOUtils.closeQuietly(var13); + } + + if (var14 != 0) { + CopyOption[] var39 = new CopyOption[1]; + var39[0] = StandardCopyOption.REPLACE_EXISTING; + Files.move(var12, var3, var39); + } else { + Files.deleteIfExists(var12); + } + + if (var5 != null) { + var5.onProgress(1.0F); + } + + return (boolean)(((1)) != 0); + } + + var11.shutdownNow(); + if (var13 != null) { + NIOUtils.closeQuietly(var13); + } + + if (var14 != 0) { + CopyOption[] var38 = new CopyOption[1]; + var38[0] = StandardCopyOption.REPLACE_EXISTING; + Files.move(var12, var3, var38); + } else { + Files.deleteIfExists(var12); + } + + return (boolean)((var34) != 0); + } else { + throw new IOException("clip dimensions must be even: " + var6 + "x" + var7); + } + } + + private static void writeAudio(ajy var0, long var1, int var3, int var4, MP4Muxer var5) throws IOException { + int var6 = 0; + byte[] var7 = null; + PCMMP4MuxerTrack var8 = null; + int var9 = 0; + int var10 = 0; + int var11 = 0; + ByteBuffer var12 = null; + int var13 = -1702101305; + + while (true) { + switch (var13) { + case -1702101305: + default: + if (!var0.hasAudio()) { + var13 = 606739832; + } else { + var13 = 25152482; + } + break; + case -1532997824: + var8 = var5.addPCMAudioTrack( + new AudioFormat( + 44100, + 16, + 2, + (boolean)(((1)) != 0), + (boolean)((((-822616708 ^ 822616708) + ((-822616708 & 822616708) << 1)) + ) != 0)) + ); + var9 = 0; + var10 = 0; + var13 = -831784719; + break; + case -831784719: + if (var10 < var6) { + var13 = 1890484196; + } else { + var13 = 235608062; + } + break; + case 25152482: + var6 = (int)(var3 * ((-4156685985114232524L ^ 4156685985114276624L) + ((-4156685985114232524L & 4156685985114276624L) << 1)) / var4); + var7 = ajs.mix(var0, var1, (7639533531638179027L | -7639533531638179027L) + (7639533531638179027L & -7639533531638179027L), var6, 1.0F); + if (var7.length == 0) { + var13 = 322853735; + } else { + var13 = -1532997824; + } + break; + case 235608062: + return; + case 322853735: + return; + case 606739832: + return; + case 1890484196: + var11 = Math.min(44100, var6 - var10); + var12 = ByteBuffer.wrap( + var7, var10 * (4), var11 * ((34764312 ^ -34764308) + ((34764312 & -34764308) << 1)) + ) + .slice(); + var8.addFrame(Packet.createPacket(var12, var10, 44100, var11, var9++, FrameType.KEY, null)); + var10 += 44100; + var13 = -831784719; + } + } + } + + private static Callable> chunk(ajy var0, int[] var1, int var2, int var3, ajw var4) { + return () -> { + int var5 = 0; + int var6 = 0; + H264Encoder var7 = null; + Picture var8 = null; + ByteBuffer var9 = null; + ArrayList var10 = null; + int[] var11 = null; + int var12 = 0; + int var13 = 0; + EncodedFrame var14 = null; + int var15 = 1180040158; + + while (true) { + switch (var15) { + case -1506297353: + var11 = akc.decodeArgb(var0.frame(var1[var13]), var11); + akh.fill(var11, var8); + var12 = var1[var13]; + var15 = 1686998947; + break; + case -29367887: + return var10; + case 935691950: + if (var13 < var3) { + var15 = 2023067248; + } else { + var15 = -29367887; + } + break; + case 1180040158: + default: + var5 = var0.width(); + var6 = var0.height(); + var7 = new H264Encoder(new akf(var4.quantizer())); + var7.setKeyInterval(var4.chunkFrames()); + var8 = Picture.create(var5, var6, ColorSpace.YUV420J); + var9 = ByteBuffer.allocate( + var5 * var6 * ((-159206332 ^ 159206335) + ((-159206332 & 159206335) << 1)) + (-466493342 | 466558878) + (-466493342 & 466558878) + ); + var10 = new ArrayList(var3 - var2); + var11 = null; + var12 = -1; + var13 = var2; + var15 = 935691950; + break; + case 1686998947: + var9.clear(); + var14 = var7.encodeFrame(var8, var9); + var10.add(NIOUtils.clone(var14.getData())); + var13++; + var15 = 935691950; + break; + case 2023067248: + if (var1[var13] != var12) { + var15 = -1506297353; + } else { + var15 = 1686998947; + } + } + } + }; + } + + private static int[] resample(ajy var0, int var1, int var2, int var3) { + long var4 = (-6995716758911302411L ^ 6995716758911302411L) + ((-6995716758911302411L & 6995716758911302411L) << 1); + long var6 = (-8304461862896351494L | 8304461862896351494L) + (-8304461862896351494L & 8304461862896351494L); + int var8 = 0; + int[] var9 = null; + int var10 = 0; + int var11 = 0; + long var12 = (-3155669808471413352L ^ 3155669808471413352L) + ((-3155669808471413352L & 3155669808471413352L) << 1); + int var14 = -1379291188; + + while (true) { + switch (var14) { + case -1914435629: + return var9; + case -1601099898: + if (var11 < var8) { + var14 = 89979842; + } else { + var14 = -1914435629; + } + break; + case -1379291188: + default: + var4 = var0.timestamp(var1); + var6 = var0.timestamp(var2) - var4; + var8 = (int)Math.max( + (3396765308557436061L ^ -3396765308557436060L) + ((3396765308557436061L & -3396765308557436060L) << 1), + ( + var6 * var3 + + (-4687168560587596074L ^ 4687168560587597074L) + + ((-4687168560587596074L & 4687168560587597074L) << 1) + - ((-2941408944939915006L ^ 2941408944939915007L) + ((-2941408944939915006L & 2941408944939915007L) << 1)) + ) + / ((-6920171503375895823L ^ 6920171503375896823L) + ((-6920171503375895823L & 6920171503375896823L) << 1)) + ); + var9 = new int[var8]; + var10 = var1; + var11 = 0; + var14 = -1601099898; + break; + case -375828184: + if (var0.timestamp(var10 + (1118161168 ^ -1118161167) + ((1118161168 & -1118161167) << 1)) <= var12) { + var14 = 668356361; + } else { + var14 = 2083471013; + } + break; + case 89979842: + var12 = var4 + var11 * ((8800586793400933768L ^ -8800586793400932768L) + ((8800586793400933768L & -8800586793400932768L) << 1)) / var3; + var14 = 900502951; + break; + case 668356361: + var10++; + var14 = 900502951; + break; + case 900502951: + if (var10 < var2) { + var14 = -375828184; + } else { + var14 = 2083471013; + } + break; + case 2083471013: + var9[var11] = var10; + var11++; + var14 = -1601099898; + } + } + } + + private static List await(Future> var0) throws IOException { + try { + return (List)var0.get(); + } catch (InterruptedException var2) { + Thread.currentThread().interrupt(); + throw new IOException("clip encode failed", var2); + } catch (ExecutionException var3) { + throw new IOException("clip encode failed", var3.getCause()); + } + } + + private static ThreadFactory factory() { + AtomicInteger var0 = new AtomicInteger(); + return var1 -> { + Thread var2 = new Thread(var1, "EvoClipExport-" + var0.incrementAndGet()); + var2.setDaemon((boolean)((((-268111245 | 268111246) + (-268111245 & 268111246))) != 0)); + var2.setPriority((-146393944 | 146393945) + (-146393944 & 146393945)); + return var2; + }; + } +} diff --git a/src/main/java/defpackage/ajy.java b/src/main/java/defpackage/ajy.java new file mode 100644 index 0000000..d591472 --- /dev/null +++ b/src/main/java/defpackage/ajy.java @@ -0,0 +1,461 @@ +package defpackage; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; +import java.nio.file.OpenOption; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; +import java.util.Arrays; + +public final class ajy implements AutoCloseable { + private final Path path; + private final FileChannel channel; + private final int width; + private final int height; + private final int framesPerSecond; + private final long createdEpochMillis; + private final long sizeBytes; + private long[] timestamps = new long[256]; + private long[] offsets = new long[256]; + private int[] lengths = new int[256]; + private int frameCount; + private long[] audioTimestamps = new long[256]; + private long[] audioOffsets = new long[256]; + private int[] audioLengths = new int[256]; + private int[] audioChannels = new int[256]; + private int audioCount; + + public ajy(Path var1) throws IOException { + this.path = var1; + OpenOption[] var10002 = new OpenOption[1]; + var10002[0] = StandardOpenOption.READ; + this.channel = FileChannel.open(var1, var10002); + + try { + ByteBuffer var2 = this.read( + (8363536790198017980L ^ -8363536790198017980L) + ((8363536790198017980L & -8363536790198017980L) << 1), + (1589929631 ^ -1589929579) + ((1589929631 & -1589929579) << 1) + ); + if (var2.getLong() != (-1164219147677965296L ^ 6160487134753385506L) + ((-1164219147677965296L & 6160487134753385506L) << 1)) { + throw new IOException("not an evolution clip: " + var1.getFileName()); + } + + int var3 = var2.getInt(); + if (var3 != (1754141293 | -1754141291) + (1754141293 & -1754141291)) { + throw new IOException("unsupported clip version: " + var3); + } + + this.width = var2.getInt(); + this.height = var2.getInt(); + this.framesPerSecond = var2.getInt(); + this.createdEpochMillis = var2.getLong(); + this.sizeBytes = this.channel.size(); + this.buildIndex(); + } catch (IOException var4) { + this.channel.close(); + throw var4; + } + } + + public Path path() { + return this.path; + } + + public int width() { + return this.width; + } + + public int height() { + return this.height; + } + + public int framesPerSecond() { + return this.framesPerSecond; + } + + public int frameCount() { + return this.frameCount; + } + + public long timestamp(int var1) { + return this.timestamps[var1]; + } + + public long durationMillis() { + long var2 = (-9044594379951144041L | 9044594379951144041L) + (-9044594379951144041L & 9044594379951144041L); + int var1 = -2057131748; + + while (true) { + switch (var1) { + case -2057131748: + default: + if (this.frameCount == 0) { + var1 = -1494618914; + } else { + var1 = 2087398107; + } + break; + case -1494618914: + var2 = (2497389759922330035L ^ -2497389759922330035L) + ((2497389759922330035L & -2497389759922330035L) << 1); + var1 = 239761084; + break; + case 239761084: + return var2; + case 2087398107: + var2 = this.timestamps[this.frameCount - (1)] + - this.timestamps[0]; + var1 = 239761084; + } + } + } + + public long positionMillis(int var1) { + long var3 = (-3921597581562048720L | 3921597581562048720L) + (-3921597581562048720L & 3921597581562048720L); + int var2 = -529766928; + + while (true) { + switch (var2) { + case -614847612: + var3 = this.timestamps[var1] - this.timestamps[0]; + var2 = 31655376; + break; + case -529766928: + default: + if (this.frameCount == 0) { + var2 = -467825427; + } else { + var2 = -614847612; + } + break; + case -467825427: + var3 = (-6950973861806194576L ^ 6950973861806194576L) + ((-6950973861806194576L & 6950973861806194576L) << 1); + var2 = 31655376; + break; + case 31655376: + return var3; + } + } + } + + public int audioChunkCount() { + return this.audioCount; + } + + public boolean hasAudio() { + int var2 = 0; + int var1 = 1199306443; + + while (true) { + switch (var1) { + case -1647286935: + return (boolean)((var2) != 0); + case 1199306443: + default: + if (this.audioCount > 0) { + var1 = 2057649404; + } else { + var1 = 1477422604; + } + break; + case 1477422604: + var2 = 0; + var1 = -1647286935; + break; + case 2057649404: + var2 = 1; + var1 = -1647286935; + } + } + } + + public long audioTimestamp(int var1) { + return this.audioTimestamps[var1]; + } + + public int audioByteLength(int var1) { + return this.audioLengths[var1]; + } + + public byte[] audioChunk(int var1) throws IOException { + return this.read(this.audioOffsets[var1], this.audioLengths[var1]).array(); + } + + public int indexAtMillis(long var1) { + long var3 = (7424769845195617244L ^ -7424769845195617244L) + ((7424769845195617244L & -7424769845195617244L) << 1); + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 1046985406; + + while (true) { + switch (var8) { + case -1458538577: + if (var5 < var6) { + var8 = -136118464; + } else { + var8 = 1082823231; + } + break; + case -1075042821: + var3 = this.timestamps[0] + var1; + var5 = 0; + var6 = this.frameCount - (1); + var8 = -1458538577; + break; + case -773794478: + var8 = -1458538577; + break; + case -136118464: + var7 = var5 + var6 >>> 1; + if (this.timestamps[var7] < var3) { + var8 = 835227175; + } else { + var8 = 1978521725; + } + break; + case 835227175: + var5 = var7 + 1; + var8 = -773794478; + break; + case 1046985406: + default: + if (this.frameCount == 0) { + var8 = 1610635649; + } else { + var8 = -1075042821; + } + break; + case 1082823231: + return var5; + case 1610635649: + return 0; + case 1978521725: + var6 = var7; + var8 = -773794478; + } + } + } + + public byte[] frame(int var1) throws IOException { + return this.read(this.offsets[var1], this.lengths[var1]).array(); + } + + public ake meta() { + return new ake( + this.path, + aka.stripExtension(this.path.getFileName().toString()), + this.width, + this.height, + this.framesPerSecond, + this.createdEpochMillis, + this.frameCount, + this.durationMillis(), + this.sizeBytes, + this.hasAudio() + ); + } + + @Override + public void close() throws IOException { + this.channel.close(); + } + + private void buildIndex() throws IOException { + long var1 = (-3640199834567436216L | 3640199834567436216L) + (-3640199834567436216L & 3640199834567436216L); + long var3 = (5601865153330945516L | -5601865153330945516L) + (5601865153330945516L & -5601865153330945516L); + ByteBuffer var5 = null; + int var6 = 0; + int var7 = 0; + long var8 = (7676343223834442907L ^ -7676343223834442907L) + ((7676343223834442907L & -7676343223834442907L) << 1); + int var10 = 0; + long var11 = (-2539872799673609445L ^ 2539872799673609445L) + ((-2539872799673609445L & 2539872799673609445L) << 1); + int var13 = 1287768037; + + while (true) { + switch (var13) { + case -1564544633: + var1 = var11 + var10; + var13 = -998015063; + break; + case -1491754213: + return; + case -1055257119: + this.ensureVideoCapacity(this.frameCount + (1056568586 | -1056568585) + (1056568586 & -1056568585)); + this.timestamps[this.frameCount] = var8; + this.offsets[this.frameCount] = var11; + this.lengths[this.frameCount] = var10; + this.frameCount += 1; + var13 = -1564544633; + break; + case -998015063: + if (var1 + (8169616398240719888L | -8169616398240719874L) + (8169616398240719888L & -8169616398240719874L) <= var3) { + var13 = -859027662; + } else { + var13 = -906057757; + } + break; + case -906057757: + if (this.frameCount == 0) { + var13 = 1719377460; + } else { + var13 = -1491754213; + } + break; + case -859027662: + var5 = this.read(var1, (-1276408281 | 1276408295) + (-1276408281 & 1276408295)); + var6 = var5.get(); + var7 = var5.get(); + var8 = var5.getLong(); + var10 = var5.getInt(); + var11 = var1 + (6678067944024715877L ^ -6678067944024715863L) + ((6678067944024715877L & -6678067944024715863L) << 1); + if (var10 > 0) { + var13 = 521140130; + } else { + var13 = -906057757; + } + break; + case 521140130: + if (var11 + var10 > var3) { + var13 = 2133009552; + } else { + var13 = 1651561451; + } + break; + case 543536896: + if (var6 == (-2044495056 | 2044495057) + (-2044495056 & 2044495057)) { + var13 = 942528441; + } else { + var13 = -1564544633; + } + break; + case 942528441: + this.ensureAudioCapacity(this.audioCount + (-1647346914 ^ 1647346915) + ((-1647346914 & 1647346915) << 1)); + this.audioTimestamps[this.audioCount] = var8; + this.audioOffsets[this.audioCount] = var11; + this.audioLengths[this.audioCount] = var10; + this.audioChannels[this.audioCount] = var7; + this.audioCount += 1; + var13 = -1564544633; + break; + case 1287768037: + default: + var1 = (-8463392652547479424L ^ 8463392652547479476L) + ((-8463392652547479424L & 8463392652547479476L) << 1); + var3 = this.channel.size(); + var13 = -998015063; + break; + case 1482728357: + throw new IOException("clip frame table is truncated: " + this.path.getFileName()); + case 1651561451: + if (var6 == 0) { + var13 = -1055257119; + } else { + var13 = 543536896; + } + break; + case 1719377460: + if (var1 < var3) { + var13 = 1482728357; + } else { + var13 = -1491754213; + } + break; + case 2133009552: + var13 = -906057757; + } + } + } + + private void ensureVideoCapacity(int var1) { + int var2 = 0; + int var3 = 860136644; + + while (true) { + switch (var3) { + case -947351202: + return; + case -794724404: + var2 = this.timestamps.length * (2); + this.timestamps = Arrays.copyOf(this.timestamps, var2); + this.offsets = Arrays.copyOf(this.offsets, var2); + this.lengths = Arrays.copyOf(this.lengths, var2); + return; + case 860136644: + } + + if (var1 <= this.timestamps.length) { + var3 = -947351202; + } else { + var3 = -794724404; + } + } + } + + private void ensureAudioCapacity(int var1) { + int var2 = 0; + int var3 = -1783870921; + + while (true) { + switch (var3) { + case -1783870921: + default: + if (var1 <= this.audioTimestamps.length) { + var3 = -1244038880; + } else { + var3 = 2039771046; + } + break; + case -1244038880: + return; + case 2039771046: + var2 = this.audioTimestamps.length * (2); + this.audioTimestamps = Arrays.copyOf(this.audioTimestamps, var2); + this.audioOffsets = Arrays.copyOf(this.audioOffsets, var2); + this.audioLengths = Arrays.copyOf(this.audioLengths, var2); + this.audioChannels = Arrays.copyOf(this.audioChannels, var2); + return; + } + } + } + + private ByteBuffer read(long var1, int var3) throws IOException { + ByteBuffer var4 = null; + long var5 = (-1800634363585825995L | 1800634363585825995L) + (-1800634363585825995L & 1800634363585825995L); + int var7 = 0; + int var8 = 793241763; + + while (true) { + switch (var8) { + case -1830626958: + var4.flip(); + return var4; + case -1638080193: + if (var4.hasRemaining()) { + var8 = 63765093; + } else { + var8 = -1830626958; + } + break; + case -1547328408: + throw new IOException("clip frame table is truncated: " + this.path.getFileName()); + case 63765093: + var7 = this.channel.read(var4, var5); + if (var7 < 0) { + var8 = -1547328408; + } else { + var8 = 975448277; + } + break; + case 793241763: + default: + var4 = ByteBuffer.allocate(var3); + var5 = var1; + var8 = -1638080193; + break; + case 975448277: + var5 += var7; + var8 = -1638080193; + } + } + } +} diff --git a/src/main/java/defpackage/ajz.java b/src/main/java/defpackage/ajz.java new file mode 100644 index 0000000..81e4069 --- /dev/null +++ b/src/main/java/defpackage/ajz.java @@ -0,0 +1,280 @@ +package defpackage; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; +import java.nio.file.Files; +import java.nio.file.OpenOption; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; +import java.util.Iterator; +import java.util.List; + +public final class ajz implements AutoCloseable { + private final Path path; + private final FileChannel channel; + private final ByteBuffer recordHeader = ByteBuffer.allocate((1373842675 ^ -1373842661) + ((1373842675 & -1373842661) << 1)); + private final long createdEpochMillis; + private final int width; + private final int height; + private final int framesPerSecond; + private int frameCount; + private int audioChunks; + private long firstTimestamp = (-89110816685396592L ^ -9134261220169379216L) + ((-89110816685396592L & -9134261220169379216L) << 1); + private long lastTimestamp; + + public ajz(Path var1, int var2, int var3, int var4, long var5) throws IOException { + this.path = var1; + this.width = var2; + this.height = var3; + this.framesPerSecond = var4; + this.createdEpochMillis = var5; + Files.createDirectories(var1.getParent()); + OpenOption[] var10002 = new OpenOption[3]; + var10002[0] = StandardOpenOption.CREATE; + var10002[1] = StandardOpenOption.WRITE; + var10002[2] = StandardOpenOption.TRUNCATE_EXISTING; + this.channel = FileChannel.open(var1, var10002); + this.writeHeader( + -1, + (3204672910844989248L ^ -3204672910844989248L) + ((3204672910844989248L & -3204672910844989248L) << 1) + ); + } + + public Path path() { + return this.path; + } + + public int frameCount() { + return this.frameCount; + } + + public void append(akb var1) throws IOException { + int var2 = -634674801; + + while (true) { + switch (var2) { + case -634674801: + default: + if (this.firstTimestamp == (-6133599336187831970L | -3089772700666943838L) + (-6133599336187831970L & -3089772700666943838L)) { + var2 = 1414569200; + } else { + var2 = -591326043; + } + break; + case -591326043: + this.lastTimestamp = var1.timestampMillis(); + this.write( + 0, + 0, + var1.timestampMillis(), + var1.payload() + ); + this.frameCount += 1; + return; + case 1414569200: + this.firstTimestamp = var1.timestampMillis(); + var2 = -591326043; + } + } + } + + public void appendAudio(ajr var1) throws IOException { + this.write(1, var1.channel(), var1.timestampMillis(), var1.samples()); + this.audioChunks += 1; + } + + public void appendAll(List var1) throws IOException { + Iterator var2 = null; + akb var3 = null; + int var4 = 2125681278; + + while (true) { + switch (var4) { + case -1503596533: + return; + case -393633442: + if (var2.hasNext()) { + var4 = -337656382; + } else { + var4 = -1503596533; + } + break; + case -337656382: + var3 = (akb)var2.next(); + this.append(var3); + var4 = -393633442; + break; + case 2125681278: + default: + var2 = var1.iterator(); + var4 = -393633442; + } + } + } + + public void appendAllAudio(List var1) throws IOException { + Iterator var2 = null; + ajr var3 = null; + int var4 = -931721812; + + while (true) { + switch (var4) { + case -1707986720: + var3 = (ajr)var2.next(); + this.appendAudio(var3); + var4 = 161111065; + break; + case -931721812: + default: + var2 = var1.iterator(); + var4 = 161111065; + break; + case 161111065: + if (var2.hasNext()) { + var4 = -1707986720; + } else { + var4 = 1553596913; + } + break; + case 1553596913: + return; + } + } + } + + @Override + public void close() throws IOException { + try { + this.channel.position((6192560138791920583L ^ -6192560138791920551L) + ((6192560138791920583L & -6192560138791920551L) << 1)); + ByteBuffer var1 = ByteBuffer.allocate((-1515528572 | 1515528592) + (-1515528572 & 1515528592)); + var1.putInt(this.frameCount); + var1.putLong(this.durationMillis()); + var1.putInt( + this.audioChunks > 0 ? 44100: (-1213359310 ^ 1213359310) + ((-1213359310 & 1213359310) << 1) + ); + var1.putInt(this.audioChunks > 0 ? 2: (-1333531303 | 1333531303) + (-1333531303 & 1333531303)); + var1.flip(); + + while (var1.hasRemaining()) { + this.channel.write(var1); + } + } finally { + this.channel.close(); + } + } + + private void write(int var1, int var2, long var3, byte[] var5) throws IOException { + ByteBuffer var6 = null; + int var7 = -476391174; + + while (true) { + switch (var7) { + case -1658483455: + if (var6.hasRemaining()) { + var7 = 740010604; + } else { + var7 = 1761547623; + } + break; + case -653755266: + var6 = ByteBuffer.wrap(var5); + var7 = -1658483455; + break; + case -476391174: + default: + this.recordHeader.clear(); + this.recordHeader.put((byte)var1); + this.recordHeader.put((byte)var2); + this.recordHeader.putLong(var3); + this.recordHeader.putInt(var5.length); + this.recordHeader.flip(); + var7 = -335191573; + break; + case -335191573: + if (this.recordHeader.hasRemaining()) { + var7 = 545035255; + } else { + var7 = -653755266; + } + break; + case 545035255: + this.channel.write(this.recordHeader); + var7 = -335191573; + break; + case 740010604: + this.channel.write(var6); + var7 = -1658483455; + break; + case 1761547623: + return; + } + } + } + + private long durationMillis() { + long var2 = (8778240046188460358L ^ -8778240046188460358L) + ((8778240046188460358L & -8778240046188460358L) << 1); + int var1 = -282130562; + + while (true) { + switch (var1) { + case -560563994: + return var2; + case -282130562: + default: + if (this.frameCount == 0) { + var1 = 1337822937; + } else { + var1 = 2105531374; + } + break; + case 1337822937: + var2 = (-5736254091619459903L ^ 5736254091619459903L) + ((-5736254091619459903L & 5736254091619459903L) << 1); + var1 = -560563994; + break; + case 2105531374: + var2 = this.lastTimestamp - this.firstTimestamp; + var1 = -560563994; + } + } + } + + private void writeHeader(int var1, long var2) throws IOException { + ByteBuffer var4 = null; + int var5 = 1275104419; + + while (true) { + switch (var5) { + case -1736381198: + if (var4.hasRemaining()) { + var5 = -771688656; + } else { + var5 = 1731105705; + } + break; + case -771688656: + this.channel.write(var4); + var5 = -1736381198; + break; + case 1275104419: + default: + var4 = ByteBuffer.allocate((391891162 ^ -391891110) + ((391891162 & -391891110) << 1)); + var4.putLong((-7833088108351449140L ^ -5617387978282682266L) + ((-7833088108351449140L & -5617387978282682266L) << 1)); + var4.putInt((530469900 ^ -530469898) + ((530469900 & -530469898) << 1)); + var4.putInt(this.width); + var4.putInt(this.height); + var4.putInt(this.framesPerSecond); + var4.putLong(this.createdEpochMillis); + var4.putInt(var1); + var4.putLong(var2); + var4.putInt((1990849542 ^ -1990849542) + ((1990849542 & -1990849542) << 1)); + var4.putInt((1462422408 ^ -1462422408) + ((1462422408 & -1462422408) << 1)); + var4.flip(); + var5 = -1736381198; + break; + case 1731105705: + return; + } + } + } +} diff --git a/src/main/java/defpackage/ak.java b/src/main/java/defpackage/ak.java new file mode 100644 index 0000000..3a086a6 --- /dev/null +++ b/src/main/java/defpackage/ak.java @@ -0,0 +1,38 @@ +package defpackage; + +import org.luaj.vm2.Globals; +import org.luaj.vm2.LoadState; +import org.luaj.vm2.compiler.LuaC; +import org.luaj.vm2.lib.Bit32Lib; +import org.luaj.vm2.lib.CoroutineLib; +import org.luaj.vm2.lib.PackageLib; +import org.luaj.vm2.lib.StringLib; +import org.luaj.vm2.lib.TableLib; +import org.luaj.vm2.lib.jse.JseBaseLib; +import org.luaj.vm2.lib.jse.JseMathLib; + +public class ak { + private static final ak INSTANCE = new ak(); + public final Globals sharedGlobals = standardGlobals(); + + private ak() { + } + + public static ak getInstance() { + return INSTANCE; + } + + private static Globals standardGlobals() { + Globals var0 = new Globals(); + var0.load(new JseBaseLib()); + var0.load(new PackageLib()); + var0.load(new Bit32Lib()); + var0.load(new TableLib()); + var0.load(new StringLib()); + var0.load(new CoroutineLib()); + var0.load(new JseMathLib()); + LoadState.install(var0); + LuaC.install(var0); + return var0; + } +} diff --git a/src/main/java/defpackage/aka.java b/src/main/java/defpackage/aka.java new file mode 100644 index 0000000..c884478 --- /dev/null +++ b/src/main/java/defpackage/aka.java @@ -0,0 +1,113 @@ +package defpackage; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; +import java.nio.file.OpenOption; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; + +public final class aka { + public static final String EXTENSION = ".evoclip"; + private static final long MAGIC = 4996267987075420210L; + private static final int VERSION = 2; + private static final int HEADER_BYTES = 52; + private static final int RECORD_HEADER_BYTES = 14; + private static final int FRAME_COUNT_OFFSET = 32; + private static final int KIND_VIDEO = 0; + private static final int KIND_AUDIO = 1; + private static final int UNKNOWN_FRAME_COUNT = -1; + private static final long NO_TIMESTAMP = Long.MIN_VALUE; + private static final int INITIAL_INDEX_CAPACITY = 256; + private static final int GROWTH_FACTOR = 2; + private static final long EMPTY_DURATION = 0L; + private static final String BAD_MAGIC = "not an evolution clip: "; + private static final String BAD_VERSION = "unsupported clip version: "; + private static final String TRUNCATED = "clip frame table is truncated: "; + + private aka() { + } + + public static ake readMeta(Path var0) throws IOException { + OpenOption[] var10001 = new OpenOption[1]; + var10001[0] = StandardOpenOption.READ; + + try (FileChannel var1 = FileChannel.open(var0, var10001)) { + ByteBuffer var2 = ByteBuffer.allocate((-712208365 | 712208417) + (-712208365 & 712208417)); + + while (var2.hasRemaining()) { + if (var1.read(var2) < 0) { + throw new IOException("clip frame table is truncated: " + var0.getFileName()); + } + } + + var2.flip(); + if (var2.getLong() != (-2095231494252487726L | 7091499481327907936L) + (-2095231494252487726L & 7091499481327907936L)) { + throw new IOException("not an evolution clip: " + var0.getFileName()); + } + + int var3 = var2.getInt(); + if (var3 != (-1084940919 | 1084940921) + (-1084940919 & 1084940921)) { + throw new IOException("unsupported clip version: " + var3); + } + + int var4 = var2.getInt(); + int var5 = var2.getInt(); + int var6 = var2.getInt(); + long var7 = var2.getLong(); + int var9 = var2.getInt(); + long var10 = var2.getLong(); + int var12 = var2.getInt(); + int var13 = var2.getInt(); + if (var9 >= 0) { + return new ake( + var0, + stripExtension(var0.getFileName().toString()), + var4, + var5, + var6, + var7, + var9, + var10, + var1.size(), + (boolean)(((var12 > 0 && var13 > 0 ? 1: (-2089566538 | 2089566538) + (-2089566538 & 2089566538)) + ) != 0)); + } + } + + try (ajy var19 = new ajy(var0)) { + return var19.meta(); + } + } + + public static String stripExtension(String var0) { + String var2 = null; + int var1 = -1968718163; + + while (true) { + switch (var1) { + case -1968718163: + default: + if (var0.endsWith(".evoclip")) { + var1 = -10349212; + } else { + var1 = -566294816; + } + break; + case -566294816: + var2 = var0; + var1 = 1509875596; + break; + case -10349212: + var2 = var0.substring( + 0, + var0.length() - ".evoclip".length() + ); + var1 = 1509875596; + break; + case 1509875596: + return var2; + } + } + } +} diff --git a/src/main/java/defpackage/akb.java b/src/main/java/defpackage/akb.java new file mode 100644 index 0000000..337d029 --- /dev/null +++ b/src/main/java/defpackage/akb.java @@ -0,0 +1,4 @@ +package defpackage; + +public record akb(long timestampMillis, byte[] payload) { +} diff --git a/src/main/java/defpackage/akc.java b/src/main/java/defpackage/akc.java new file mode 100644 index 0000000..c7717b7 --- /dev/null +++ b/src/main/java/defpackage/akc.java @@ -0,0 +1,290 @@ +package defpackage; + +import java.awt.image.BufferedImage; +import java.awt.image.DataBufferByte; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Iterator; +import javax.imageio.IIOImage; +import javax.imageio.ImageIO; +import javax.imageio.ImageReadParam; +import javax.imageio.ImageReader; +import javax.imageio.ImageWriteParam; +import javax.imageio.ImageWriter; +import javax.imageio.stream.ImageInputStream; +import javax.imageio.stream.MemoryCacheImageOutputStream; + +public final class akc implements AutoCloseable { + private static final String FORMAT = "jpeg"; + private static final String NO_WRITER = "no jpeg encoder available"; + private static final String NO_READER = "clip frame is not a readable image"; + private static final int SOURCE_STRIDE = 4; + private static final int SOURCE_RED = 0; + private static final int SOURCE_GREEN = 1; + private static final int SOURCE_BLUE = 2; + private static final int TARGET_STRIDE = 3; + private static final int TARGET_BLUE = 0; + private static final int TARGET_GREEN = 1; + private static final int TARGET_RED = 2; + private static final int INITIAL_CAPACITY = 131072; + private static final int OPAQUE = -16777216; + private static final int RED_SHIFT = 16; + private static final int GREEN_SHIFT = 8; + private static final int BYTE_MASK = 255; + private final ImageWriter writer; + private final ImageWriteParam params; + private BufferedImage scratch; + private float quality; + + public akc(float var1) { + Iterator var2 = ImageIO.getImageWritersByFormatName("jpeg"); + if (!var2.hasNext()) { + throw new IllegalStateException( + "no jpeg encoder available" + ); + } + + this.writer = (ImageWriter)var2.next(); + this.params = this.writer.getDefaultWriteParam(); + this.params.setCompressionMode((-1001084352 ^ 1001084354) + ((-1001084352 & 1001084354) << 1)); + this.quality = var1; + this.params.setCompressionQuality(var1); + } + + public byte[] encode(byte[] var1, int var2, int var3, float var4) throws IOException { + int var5 = -1367098905; + + while (true) { + switch (var5) { + case -1386273280: + this.quality = var4; + this.params.setCompressionQuality(var4); + var5 = 1858689118; + break; + case -1367098905: + default: + if (var4 != this.quality) { + var5 = -1386273280; + } else { + var5 = 1858689118; + } + break; + case 1858689118: + return this.encode(var1, var2, var3); + } + } + } + + public byte[] encode(byte[] var1, int var2, int var3) throws IOException { + BufferedImage var4 = this.scratch(var2, var3); + byte[] var5 = ((DataBufferByte)var4.getRaster().getDataBuffer()).getData(); + int var6 = var2 * var3; + int var7 = 0; + int var8 = 0; + + for (int var9 = 0; var7 < var6; var9 += 3) { + var5[var9 + 0] = var1[var8 + 2]; + var5[var9 + 1] = var1[var8 + 1]; + var5[var9 + 2] = var1[var8 + 0]; + var7++; + var8 += 4; + } + + ByteArrayOutputStream var13 = new ByteArrayOutputStream((-666846088 ^ 666977160) + ((-666846088 & 666977160) << 1)); + + try (MemoryCacheImageOutputStream var14 = new MemoryCacheImageOutputStream(var13)) { + this.writer.setOutput(var14); + this.writer.write(null, new IIOImage(var4, null, null), this.params); + } + + return var13.toByteArray(); + } + + @Override + public void close() { + this.writer.dispose(); + this.scratch = null; + } + + public static BufferedImage decode(byte[] var0) throws IOException { + BufferedImage var1 = null; + int var2 = -1140689423; + + while (true) { + switch (var2) { + case -1140689423: + default: + var1 = ImageIO.read(new ByteArrayInputStream(var0)); + if (var1 == null) { + var2 = -818401849; + } else { + var2 = 1802568382; + } + break; + case -818401849: + throw new IOException( + "clip frame is not a readable image" + ); + case 1802568382: + return var1; + } + } + } + + public static BufferedImage decodeSubsampled(byte[] var0, int var1) throws IOException { + try (ImageInputStream var2 = ImageIO.createImageInputStream(new ByteArrayInputStream(var0))) { + Iterator var3 = ImageIO.getImageReaders(var2); + if (!var3.hasNext()) { + throw new IOException( + "clip frame is not a readable image" + ); + } + + ImageReader var4 = (ImageReader)var3.next(); + + try { + var4.setInput(var2); + ImageReadParam var5 = var4.getDefaultReadParam(); + var5.setSourceSubsampling( + var1, var1, 0, (1239125282 | -1239125282) + (1239125282 & -1239125282) + ); + return var4.read(0, var5); + } finally { + var4.dispose(); + } + } + } + + public static int[] decodeArgb(byte[] var0, int[] var1) throws IOException { + return toArgb(decode(var0), var1); + } + + public static int[] toArgb(BufferedImage var0, int[] var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int[] var5 = null; + byte[] var6 = null; + int var7 = 0; + int var8 = 0; + int[] var10 = null; + int var9 = -1892798521; + + while (true) { + switch (var9) { + case -2110896808: + var10 = new int[var4]; + var9 = 871200242; + break; + case -1892798521: + default: + var2 = var0.getWidth(); + var3 = var0.getHeight(); + var4 = var2 * var3; + if (var1 != null) { + var9 = -87259574; + } else { + var9 = -2110896808; + } + break; + case -1800963727: + var5[var7] = (145617955 | -162395171) + (145617955 & -162395171) + | (var6[var8 + 2] & (-642250257 | 642250512) + (-642250257 & 642250512)) + << (325242141 | -325242125) + (325242141 & -325242125) + | (var6[var8 + 1] & (-1675540989 ^ 1675541244) + ((-1675540989 & 1675541244) << 1)) + << (1522077879 | -1522077871) + (1522077879 & -1522077871) + | var6[var8 + 0] & 255; + var7++; + var8 += 3; + var9 = -1382830106; + break; + case -1382830106: + if (var7 < var4) { + var9 = -1800963727; + } else { + var9 = -305705099; + } + break; + case -1272583745: + var10 = var1; + var9 = 871200242; + break; + case -335997730: + var0.getRGB( + 0, + 0, + var2, + var3, + var5, + 0, + var2 + ); + return var5; + case -305705099: + return var5; + case -87259574: + if (var1.length >= var4) { + var9 = -1272583745; + } else { + var9 = -2110896808; + } + break; + case 588991085: + var6 = ((DataBufferByte)var0.getRaster().getDataBuffer()).getData(); + var7 = 0; + var8 = 0; + var9 = -1382830106; + break; + case 871200242: + var5 = var10; + if (var0.getType() == (-268127003 | 268127008) + (-268127003 & 268127008)) { + var9 = 588991085; + } else { + var9 = -335997730; + } + } + } + } + + private BufferedImage scratch(int var1, int var2) { + int var3 = -1050390710; + + while (true) { + switch (var3) { + case -1509359703: + if (this.scratch.getHeight() != var2) { + var3 = -625634745; + } else { + var3 = -76570383; + } + break; + case -1361530847: + if (this.scratch.getWidth() == var1) { + var3 = -1509359703; + } else { + var3 = -625634745; + } + break; + case -1050390710: + default: + if (this.scratch != null) { + var3 = -1361530847; + } else { + var3 = -625634745; + } + break; + case -625634745: + this.scratch = new BufferedImage(var1, var2, (186854490 | -186854485) + (186854490 & -186854485)); + var3 = -76570383; + break; + case -76570383: + return this.scratch; + } + } + } + + static { + ImageIO.setUseCache((boolean)((((-31266587 ^ 31266587) + ((-31266587 & 31266587) << 1))) != 0)); + } +} diff --git a/src/main/java/defpackage/akd.java b/src/main/java/defpackage/akd.java new file mode 100644 index 0000000..adf4d71 --- /dev/null +++ b/src/main/java/defpackage/akd.java @@ -0,0 +1,174 @@ +package defpackage; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Stream; + +public final class akd { + private static final DateTimeFormatter NAME_FORMAT = DateTimeFormatter.ofPattern( + "yyyy-MM-dd_HH-mm-ss" + ); + private static final DateTimeFormatter LABEL_FORMAT = DateTimeFormatter.ofPattern( + "dd MMM HH:mm" + ); + private static final String NAME_PREFIX = "clip_"; + private static final String COLLISION_SUFFIX = "_"; + private static final int MAX_COLLISIONS = 64; + private final Path root; + + public akd(Path var1) { + this.root = var1; + } + + public Path root() { + return this.root; + } + + public List list() { + if (!Files.isDirectory(this.root)) { + return List.of(); + } + + ArrayList var1 = new ArrayList(); + + try (Stream var2 = Files.list(this.root)) { + for (Path var4 : var2.toList()) { + if (var4.getFileName().toString().endsWith(".evoclip")) { + try { + var1.add(aka.readMeta(var4)); + } catch (IOException var7) { + } + } + } + } catch (IOException var9) { + return var1; + } + + var1.sort(Comparator.comparingLong(ake::createdEpochMillis).reversed()); + return var1; + } + + public Path allocateClip(long var1) { + String var3 = "clip_" + NAME_FORMAT.format(local(var1)); + return this.allocate(var3, ".evoclip"); + } + + public Path allocateExport(String var1) { + return this.allocate(var1, ".mp4"); + } + + public int prune(long var1) { + List var3 = null; + long var4 = (-1798520277178749832L ^ 1798520277178749832L) + ((-1798520277178749832L & 1798520277178749832L) << 1); + int var6 = 0; + Iterator var7 = null; + ake var8 = null; + int var9 = -354679839; + + while (true) { + switch (var9) { + case -1776434215: + var9 = 969580462; + break; + case -1414082602: + var8 = (ake)var7.next(); + var4 += var8.sizeBytes(); + if (var4 > var1) { + var9 = -485919647; + } else { + var9 = -1776434215; + } + break; + case -776561962: + return var6; + case -678687247: + var6++; + var9 = -1776434215; + break; + case -485919647: + if (this.delete(var8)) { + var9 = -678687247; + } else { + var9 = -1776434215; + } + break; + case -354679839: + default: + var3 = this.list(); + var4 = (5680758305573884489L | -5680758305573884489L) + (5680758305573884489L & -5680758305573884489L); + var6 = 0; + var7 = var3.iterator(); + var9 = 969580462; + break; + case 969580462: + if (var7.hasNext()) { + var9 = -1414082602; + } else { + var9 = -776561962; + } + } + } + } + + public boolean delete(ake var1) { + try { + return Files.deleteIfExists(var1.path()); + } catch (IOException var3) { + return (boolean)(((0)) != 0); + } + } + + public static String label(long var0) { + return LABEL_FORMAT.format(local(var0)); + } + + private Path allocate(String var1, String var2) { + Path var3 = null; + int var4 = 0; + int var5 = 2142176562; + + while (true) { + switch (var5) { + case -566449532: + if (var4 <= (-1025674106 | 1025674170) + (-1025674106 & 1025674170)) { + var5 = -465799495; + } else { + var5 = 81871222; + } + break; + case -465799495: + var3 = this.root.resolve(var1 + "_" + var4 + var2); + var4++; + var5 = -99027172; + break; + case -99027172: + if (Files.exists(var3)) { + var5 = -566449532; + } else { + var5 = 81871222; + } + break; + case 81871222: + return var3; + case 2142176562: + default: + var3 = this.root.resolve(var1 + var2); + var4 = 2; + var5 = -99027172; + } + } + } + + private static LocalDateTime local(long var0) { + return LocalDateTime.ofInstant(Instant.ofEpochMilli(var0), ZoneId.systemDefault()); + } +} diff --git a/src/main/java/defpackage/ake.java b/src/main/java/defpackage/ake.java new file mode 100644 index 0000000..edfdb04 --- /dev/null +++ b/src/main/java/defpackage/ake.java @@ -0,0 +1,17 @@ +package defpackage; + +import java.nio.file.Path; + +public record ake( + Path path, + String name, + int width, + int height, + int framesPerSecond, + long createdEpochMillis, + int frameCount, + long durationMillis, + long sizeBytes, + boolean hasAudio +) { +} diff --git a/src/main/java/defpackage/akf.java b/src/main/java/defpackage/akf.java new file mode 100644 index 0000000..8b731e0 --- /dev/null +++ b/src/main/java/defpackage/akf.java @@ -0,0 +1,67 @@ +package defpackage; + +import org.jcodec.codecs.h264.encode.RateControl; +import org.jcodec.codecs.h264.io.model.SliceType; +import org.jcodec.common.model.Size; + +public final class akf implements RateControl { + public static final int MIN_QUANTIZER = 12; + public static final int MAX_QUANTIZER = 40; + private static final int PREDICTED_PENALTY = 4; + private static final int NO_DELTA = 0; + private static final int RAISE_QUANTIZER = 1; + private static final int MACROBLOCK_PIXELS = 256; + private static final int BITS_PER_BYTE = 3; + private final int quantizer; + private int budgetBits; + private int quantizerDrift; + + public akf(int var1) { + this.quantizer = Math.clamp(var1, 12, (103869850 ^ -103869810) + ((103869850 & -103869810) << 1)); + } + + public int startPicture(Size var1, int var2, SliceType var3) { + int var4 = (var1.getWidth() + (257567842 ^ -257567827) + ((257567842 & -257567827) << 1) >> (2127706822 | -2127706818) + (2127706822 & -2127706818)) + * (var1.getHeight() + (1021335215 ^ -1021335200) + ((1021335215 & -1021335200) << 1) >> (-536828539 ^ 536828543) + ((-536828539 & 536828543) << 1)); + this.budgetBits = (var2 << (2096658484 | -2096658481) + (2096658484 & -2096658481)) / var4; + this.quantizerDrift = 0; + return Math.min( + 40, + this.quantizer + + (var3 == SliceType.P ? 4: (-1488395419 | 1488395419) + (-1488395419 & 1488395419)) + ); + } + + public int initialQpDelta() { + return 0; + } + + public int accept(int var1) { + int var2 = 796553427; + + while (true) { + switch (var2) { + case 90784072: + this.quantizerDrift += 1; + return 1; + case 796553427: + default: + if (var1 >= this.budgetBits) { + var2 = 2028609147; + } else { + var2 = 2125251369; + } + break; + case 2028609147: + if (this.quantizer + this.quantizerDrift >= (-769772826 ^ 769772866) + ((-769772826 & 769772866) << 1)) { + var2 = 2125251369; + } else { + var2 = 90784072; + } + break; + case 2125251369: + return 0; + } + } + } +} diff --git a/src/main/java/defpackage/akg.java b/src/main/java/defpackage/akg.java new file mode 100644 index 0000000..399eb40 --- /dev/null +++ b/src/main/java/defpackage/akg.java @@ -0,0 +1,152 @@ +package defpackage; + +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.List; + +public final class akg { + private static final int MIN_FRAMES = 2; + private final ArrayDeque frames = new ArrayDeque<>(); + private long windowMillis; + private long budgetBytes; + private long usedBytes; + + public akg(long var1, long var3) { + this.windowMillis = var1; + this.budgetBytes = var3; + } + + public synchronized void resize(long var1, long var3) { + this.windowMillis = var1; + this.budgetBytes = var3; + this.trim(); + } + + public synchronized void add(akb var1) { + this.frames.addLast(var1); + this.usedBytes = this.usedBytes + var1.payload().length; + this.trim(); + } + + public synchronized List snapshot() { + return new ArrayList<>(this.frames); + } + + public synchronized void clear() { + this.frames.clear(); + this.usedBytes = (6268218676852622757L | -6268218676852622757L) + (6268218676852622757L & -6268218676852622757L); + } + + public synchronized int frameCount() { + return this.frames.size(); + } + + public synchronized long usedBytes() { + return this.usedBytes; + } + + public synchronized long spanMillis() { + akb var1 = null; + akb var2 = null; + long var4 = (6421573970779508777L | -6421573970779508777L) + (6421573970779508777L & -6421573970779508777L); + int var3 = 1856821297; + + while (true) { + switch (var3) { + case -1856167437: + var4 = (-6021715962322488690L ^ 6021715962322488690L) + ((-6021715962322488690L & 6021715962322488690L) << 1); + var3 = -687186533; + break; + case -687186533: + return var4; + case 1693261181: + if (var2 == null) { + var3 = -1856167437; + } else { + var3 = 1731272475; + } + break; + case 1731272475: + var4 = var2.timestampMillis() - var1.timestampMillis(); + var3 = -687186533; + break; + case 1856821297: + default: + var1 = this.frames.peekFirst(); + var2 = this.frames.peekLast(); + if (var1 != null) { + var3 = 1693261181; + } else { + var3 = -1856167437; + } + } + } + } + + private void trim() { + akb var1 = null; + long var2 = (4553767006448223132L ^ -4553767006448223132L) + ((4553767006448223132L & -4553767006448223132L) << 1); + akb var4 = null; + int var5 = -1996836516; + + while (true) { + switch (var5) { + case -1996836516: + default: + var1 = this.frames.peekLast(); + if (var1 == null) { + var5 = 2022151763; + } else { + var5 = 149348104; + } + break; + case -1763915461: + return; + case -1547136627: + return; + case -1480959175: + this.frames.pollFirst(); + this.usedBytes = this.usedBytes - var4.payload().length; + var5 = -1168196911; + break; + case -1168196911: + if (this.frames.size() > (-50706010 ^ 50706012) + ((-50706010 & 50706012) << 1)) { + var5 = 1881693306; + } else { + var5 = 1648214765; + } + break; + case -832436153: + if (this.usedBytes <= this.budgetBytes) { + var5 = -1763915461; + } else { + var5 = -1480959175; + } + break; + case 22092732: + if (var4.timestampMillis() >= var2) { + var5 = -832436153; + } else { + var5 = -1480959175; + } + break; + case 149348104: + var2 = var1.timestampMillis() - this.windowMillis; + var5 = -1168196911; + break; + case 1648214765: + return; + case 1881693306: + var4 = this.frames.peekFirst(); + if (var4 == null) { + var5 = -1547136627; + } else { + var5 = 22092732; + } + break; + case 2022151763: + return; + } + } + } +} diff --git a/src/main/java/defpackage/akh.java b/src/main/java/defpackage/akh.java new file mode 100644 index 0000000..1779d73 --- /dev/null +++ b/src/main/java/defpackage/akh.java @@ -0,0 +1,194 @@ +package defpackage; + +import org.jcodec.common.model.Picture; + +public final class akh { + private static final int RED_SHIFT = 16; + private static final int GREEN_SHIFT = 8; + private static final int BYTE_MASK = 255; + private static final int FIXED_POINT = 8; + private static final int LUMA_RED = 77; + private static final int LUMA_GREEN = 150; + private static final int LUMA_BLUE = 29; + private static final int CHROMA_BLUE_RED = -43; + private static final int CHROMA_BLUE_GREEN = -85; + private static final int CHROMA_BLUE_BLUE = 128; + private static final int CHROMA_RED_RED = 128; + private static final int CHROMA_RED_GREEN = -107; + private static final int CHROMA_RED_BLUE = -21; + private static final int LUMA_BIAS = 128; + private static final int BLOCK = 2; + private static final int BLOCK_PIXELS = 4; + private static final int SIGNED_MIN = -128; + private static final int SIGNED_MAX = 127; + + private akh() { + } + + public static void fill(int[] var0, Picture var1) { + int var2 = 0; + int var3 = 0; + byte[] var4 = null; + byte[] var5 = null; + byte[] var6 = null; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + int var15 = 0; + int var16 = 0; + int var17 = 0; + int var18 = 0; + int var19 = 0; + int var20 = -587510449; + + while (true) { + switch (var20) { + case -1657843841: + var15 = var10; + var20 = 1069400810; + break; + case -1393415357: + var8 += 2; + var20 = 1165844986; + break; + case -1306264711: + var16 = var0[var14 * var2 + var15]; + var17 = var16 >> 16; + var18 = var16 >> 8; + var19 = var16 & 255; + var4[var14 * var2 + var15] = clamp( + ( + ((-1548591451 ^ 1548591528) + ((-1548591451 & 1548591528) << 1)) * var17 + + ((378128901 ^ -378128751) + ((378128901 & -378128751) << 1)) * var18 + + ((1199617294 ^ -1199617265) + ((1199617294 & -1199617265) << 1)) * var19 + >> (-955431704 ^ 955431712) + ((-955431704 & 955431712) << 1) + ) + - ((-2111851937 | 2111852065) + (-2111851937 & 2111852065)) + ); + var12 += ((2112102643 ^ -2112102686) + ((2112102643 & -2112102686) << 1)) * var17 + + ((-1796823916 ^ 1796823831) + ((-1796823916 & 1796823831) << 1)) * var18 + + ((1269739869 | -1269739741) + (1269739869 & -1269739741)) * var19; + var13 += ((114909955 | -114909827) + (114909955 & -114909827)) * var17 + + ((-1996020254 | 1996020147) + (-1996020254 & 1996020147)) * var18 + + ((1437360578 ^ -1437360599) + ((1437360578 & -1437360599) << 1)) * var19; + var15++; + var20 = 1069400810; + break; + case -1260911608: + var9 = Math.min( + var8 + 1, var3 - ((-1245917372 | 1245917373) + (-1245917372 & 1245917373)) + ); + var10 = 0; + var20 = 413160259; + break; + case -587510449: + default: + var2 = var1.getWidth(); + var3 = var1.getHeight(); + var4 = var1.getPlaneData((-542048609 ^ 542048609) + ((-542048609 & 542048609) << 1)); + var5 = var1.getPlaneData((893104677 | -893104676) + (893104677 & -893104676)); + var6 = var1.getPlaneData((86825144 ^ -86825142) + ((86825144 & -86825142) << 1)); + var7 = var2 / (2); + var8 = 0; + var20 = 1165844986; + break; + case 413160259: + if (var10 < var2) { + var20 = 841316147; + } else { + var20 = -1393415357; + } + break; + case 841316147: + var11 = Math.min( + var10 + 1, var2 - ((-1301140189 ^ 1301140190) + ((-1301140189 & 1301140190) << 1)) + ); + var12 = 0; + var13 = 0; + var14 = var8; + var20 = 1885220862; + break; + case 1069400810: + if (var15 <= var11) { + var20 = -1306264711; + } else { + var20 = 1948669022; + } + break; + case 1165844986: + if (var8 < var3) { + var20 = -1260911608; + } else { + var20 = 1580603868; + } + break; + case 1580603868: + return; + case 1704287193: + var14 = var8 / ((-804111782 ^ 804111784) + ((-804111782 & 804111784) << 1)) * var7 + + var10 / (2); + var5[var14] = clamp( + var12 / ((-1621445524 ^ 1621445528) + ((-1621445524 & 1621445528) << 1)) >> (990647816 | -990647808) + (990647816 & -990647808) + ); + var6[var14] = clamp( + var13 / ((713185203 ^ -713185199) + ((713185203 & -713185199) << 1)) >> (1724609993 ^ -1724609985) + ((1724609993 & -1724609985) << 1) + ); + var10 += 2; + var20 = 413160259; + break; + case 1885220862: + if (var14 <= var9) { + var20 = -1657843841; + } else { + var20 = 1704287193; + } + break; + case 1948669022: + var14++; + var20 = 1885220862; + } + } + } + + private static byte clamp(int var0) { + int var2 = 0; + int var1 = 856389155; + + while (true) { + switch (var1) { + case -2124342559: + var2 = (byte)var0; + var1 = 1820801095; + break; + case 675222134: + return (byte)(-128); + case 856389155: + default: + if (var0 < (-2103756693 | 2103756565) + (-2103756693 & 2103756565)) { + var1 = 675222134; + } else { + var1 = 1286854960; + } + break; + case 948922366: + var2 = 127; + var1 = 1820801095; + break; + case 1286854960: + if (var0 > (887770048 | -887769921) + (887770048 & -887769921)) { + var1 = 948922366; + } else { + var1 = -2124342559; + } + break; + case 1820801095: + return (byte)var2; + } + } + } +} diff --git a/src/main/java/defpackage/aki.java b/src/main/java/defpackage/aki.java new file mode 100644 index 0000000..0d3690d --- /dev/null +++ b/src/main/java/defpackage/aki.java @@ -0,0 +1,301 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.io.RandomAccessFile; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ServerData; + +public final class aki { + private static final String LOG_RELATIVE_PATH = "logs/latest.log"; + private static final String MINECRAFT_MOD_ID = "minecraft"; + private static final String TRUNCATION_MARKER = "...[earlier log truncated]...\n"; + private static final String UNKNOWN = "unknown"; + private static final String SINGLEPLAYER = "singleplayer"; + private static final String DIAGNOSTICS_FAILURE = "diagnostics render failed"; + private static final String LOG_READ_FAILURE = "log tail read failed"; + private static final long BYTES_PER_MEGABYTE = 1048576L; + private static final int MAX_LOG_BYTES = 1500000; + + private aki() { + } + + public static String playerName(Minecraft var0) { + String var2 = null; + int var1 = 1749884388; + + while (true) { + switch (var1) { + case -1855300664: + var2 = "unknown"; + var1 = 1547686863; + break; + case 1313379750: + var2 = var0.player.getScoreboardName(); + var1 = 1547686863; + break; + case 1547686863: + return var2; + case 1749884388: + default: + if (var0.player != null) { + var1 = 1313379750; + } else { + var1 = -1855300664; + } + } + } + } + + public static String playerUuid(Minecraft var0) { + String var2 = null; + int var1 = 865450510; + + while (true) { + switch (var1) { + case -1918247171: + var2 = var0.player.getUUID().toString(); + var1 = -124843756; + break; + case -124843756: + return var2; + case 865450510: + default: + if (var0.player != null) { + var1 = -1918247171; + } else { + var1 = 1717381899; + } + break; + case 1717381899: + var2 = ""; + var1 = -124843756; + } + } + } + + public static String hardwareId() { + String var0 = null; + String var2 = null; + int var1 = 1911608441; + + while (true) { + switch (var1) { + case -1421209496: + var2 = var0; + var1 = 1429817489; + break; + case -61710192: + var2 = ""; + var1 = 1429817489; + break; + case 1429817489: + return var2; + case 1911608441: + default: + var0 = air.get(); + if (var0 == null) { + var1 = -61710192; + } else { + var1 = -1421209496; + } + } + } + } + + public static String account() { + cr var0 = null; + String var1 = null; + int var2 = 1715399225; + + while (true) { + switch (var2) { + case -20816068: + return ""; + case 355440563: + if (!var0.role().isEmpty()) { + var2 = 1122283729; + } else { + var2 = 2012739889; + } + break; + case 1122283729: + var1 = var1 + " (" + var0.role() + ")"; + var2 = 2012739889; + break; + case 1595232372: + var1 = var0.username() + " #" + var0.uid(); + if (var0.role() != null) { + var2 = 355440563; + } else { + var2 = 2012739889; + } + break; + case 1715399225: + default: + var0 = cp.user(); + if (var0 == null) { + var2 = -20816068; + } else { + var2 = 1595232372; + } + break; + case 2012739889: + return var1; + } + } + } + + public static String serverAddress(Minecraft var0) { + ServerData var1 = null; + String var3 = null; + int var2 = 1748935619; + + while (true) { + switch (var2) { + case -1797649374: + if (var0.getSingleplayerServer() != null) { + var2 = -1119363055; + } else { + var2 = 1503218072; + } + break; + case -1119363055: + var3 = "singleplayer"; + var2 = 245997031; + break; + case 245997031: + return var3; + case 412328495: + if (!var1.ip.isEmpty()) { + var2 = 1379986315; + } else { + var2 = -1797649374; + } + break; + case 1052172041: + if (var1.ip != null) { + var2 = 412328495; + } else { + var2 = -1797649374; + } + break; + case 1379986315: + return var1.ip; + case 1503218072: + var3 = "unknown"; + var2 = 245997031; + break; + case 1748935619: + default: + var1 = var0.getCurrentServer(); + if (var1 != null) { + var2 = 1052172041; + } else { + var2 = -1797649374; + } + } + } + } + + public static String minecraftVersion() { + return FabricLoader.getInstance() + .getModContainer("minecraft") + .map(var0 -> var0.getMetadata().getVersion().getFriendlyString()) + .orElse("unknown"); + } + + public static String modVersion() { + return cb.friendlyString(); + } + + public static int modCount() { + return FabricLoader.getInstance().getAllMods().size(); + } + + public static String operatingSystem() { + return System.getProperty( + "os.name", + "unknown" + ) + + " " + + System.getProperty("os.arch", ""); + } + + public static String javaVersion() { + return System.getProperty( + "java.version", + "unknown" + ); + } + + public static String ramInfo() { + Runtime var0 = Runtime.getRuntime(); + long var1 = (var0.totalMemory() - var0.freeMemory()) / ((3817067985154928371L | -3817067985153879795L) + (3817067985154928371L & -3817067985153879795L)); + long var3 = var0.maxMemory() / ((4163728252797658286L | -4163728252796609710L) + (4163728252797658286L & -4163728252796609710L)); + return var1 + "/" + var3 + " MB"; + } + + public static int cpuCores() { + return Runtime.getRuntime().availableProcessors(); + } + + public static JsonObject snapshot(Minecraft var0) { + JsonObject var1 = new JsonObject(); + var1.addProperty("player", playerName(var0)); + var1.addProperty("uuid", playerUuid(var0)); + var1.addProperty("hwid", hardwareId()); + var1.addProperty("server", serverAddress(var0)); + var1.addProperty("mcVersion", minecraftVersion()); + var1.addProperty("modVersion", modVersion()); + var1.addProperty("os", operatingSystem()); + var1.addProperty("java", javaVersion()); + var1.addProperty("ram", ramInfo()); + return var1; + } + + public static String diagnostics() { + try { + return ig.render(); + } catch (Exception var1) { + id.warn(Cif.GENERAL, "diagnostics render failed", var1); + return ""; + } + } + + public static String diagnosticsSummary() { + try { + return ig.summary(); + } catch (Exception var1) { + id.warn(Cif.GENERAL, "diagnostics render failed", var1); + return ""; + } + } + + public static String logTail() { + try { + Path var0 = FabricLoader.getInstance().getGameDir().resolve("logs/latest.log"); + if (!Files.isRegularFile(var0)) { + return ""; + } + + long var1 = Files.size(var0); + if (var1 <= (816301341639029178L ^ -816301341637529178L) + ((816301341639029178L & -816301341637529178L) << 1)) { + return new String(Files.readAllBytes(var0), StandardCharsets.UTF_8); + } + + try (RandomAccessFile var3 = new RandomAccessFile(var0.toFile(), "r")) { + var3.seek(var1 - ((4514762782902896910L | -4514762782901396910L) + (4514762782902896910L & -4514762782901396910L))); + byte[] var4 = new byte[1500000]; + var3.readFully(var4); + return "...[earlier log truncated]...\n" + new String(var4, StandardCharsets.UTF_8); + } + } catch (Exception var8) { + id.warn(Cif.GENERAL, "log tail read failed", var8); + return ""; + } + } +} diff --git a/src/main/java/defpackage/akj.java b/src/main/java/defpackage/akj.java new file mode 100644 index 0000000..2fe508d --- /dev/null +++ b/src/main/java/defpackage/akj.java @@ -0,0 +1,42 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.concurrent.atomic.AtomicBoolean; +import net.minecraft.client.Minecraft; + +/* JADX INFO: loaded from: evovis-dec.jar:akj.class */ +public final class akj { + private static final String ENDPOINT = "https://www.evoproject.xyz/api/configs"; + private static final String REPORT_HEADER = "X-Evo-Report"; + private static final String REPORT_HEADER_VALUE = "1"; + private static final String WORKER_THREAD_NAME = "evo-report"; + private static final String OK_MARKER = "\"ok\":true"; + private static final String SUBMIT_FAILURE = "report submit failed"; + private static final String CONTENT_TYPE_HEADER = "Content-Type"; + private static final String JSON_CONTENT_TYPE = "application/json"; + private static final int MIN_MESSAGE_LENGTH = 3; + private static final int MAX_MESSAGE_LENGTH = 2000; + private static final int HTTP_OK = 200; + private static final int HTTP_RATE_LIMITED = 429; + private static final long MIN_INTERVAL_MILLIS = 20000; + private static final long CONNECT_TIMEOUT_SECONDS = 10; + private static final long REQUEST_TIMEOUT_SECONDS = 30; + private static final HttpClient HTTP = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(((-7552797570627126245L) | 7552797570627126255L) + ((-7552797570627126245L) & 7552797570627126255L))).build(); + private static final AtomicBoolean inFlight = new AtomicBoolean(); + private static volatile long lastSubmitMillis; + + /* JADX WARN: Multi-variable type inference failed */ + /* JADX WARN: Type inference failed for: r1v32, types: [boolean, int] */ + /* JADX WARN: Type inference failed for: r1v62, types: [boolean, int] */ + /* JADX WARN: Type inference failed for: r2v50, types: [boolean, int] */ + public static void submit(String str) { + } + + /* JADX INFO: Access modifiers changed from: private */ +} diff --git a/src/main/java/defpackage/akk.java b/src/main/java/defpackage/akk.java new file mode 100644 index 0000000..d4ea4cb --- /dev/null +++ b/src/main/java/defpackage/akk.java @@ -0,0 +1,6 @@ +package defpackage; + +import java.nio.file.Path; + +public record akk(Path path, String name, long size) { +} diff --git a/src/main/java/defpackage/akl.java b/src/main/java/defpackage/akl.java new file mode 100644 index 0000000..f47c6e5 --- /dev/null +++ b/src/main/java/defpackage/akl.java @@ -0,0 +1,4 @@ +package defpackage; + +public record akl(String name, String kind, long size) { +} diff --git a/src/main/java/defpackage/akm.java b/src/main/java/defpackage/akm.java new file mode 100644 index 0000000..0427fed --- /dev/null +++ b/src/main/java/defpackage/akm.java @@ -0,0 +1,55 @@ +package defpackage; + +public enum akm { + USER("user"), + DEVELOPER("dev"), + SYSTEM("system"); + + private final String key; + + akm(String var3) { + this.key = var3; + } + + public static akm of(String var0) { + akm[] var1 = null; + int var2 = 0; + int var3 = 0; + akm var4 = null; + int var5 = -1502076882; + + while (true) { + switch (var5) { + case -1502076882: + default: + var1 = values(); + var2 = var1.length; + var3 = 0; + var5 = 660919022; + break; + case -471343509: + var4 = var1[var3]; + if (var4.key.equals(var0)) { + var5 = 579985483; + } else { + var5 = 1553235178; + } + break; + case 579985483: + return var4; + case 660919022: + if (var3 < var2) { + var5 = -471343509; + } else { + var5 = 962309287; + } + break; + case 962309287: + return SYSTEM; + case 1553235178: + var3++; + var5 = 660919022; + } + } + } +} diff --git a/src/main/java/defpackage/akn.java b/src/main/java/defpackage/akn.java new file mode 100644 index 0000000..db26d77 --- /dev/null +++ b/src/main/java/defpackage/akn.java @@ -0,0 +1,48 @@ +package defpackage; + +import java.util.Iterator; +import java.util.List; + +public record akn(akw summary, List history, List thread) { + public long reachedAt(aku var1) { + long var2 = (1010782127275880090L | -1010782127275880090L) + (1010782127275880090L & -1010782127275880090L); + Iterator var4 = null; + akv var5 = null; + int var6 = -802651869; + + while (true) { + switch (var6) { + case -1754085334: + if (var4.hasNext()) { + var6 = -1748530212; + } else { + var6 = 224270022; + } + break; + case -1748530212: + var5 = (akv)var4.next(); + if (var5.status() == var1) { + var6 = -816721366; + } else { + var6 = -942466856; + } + break; + case -942466856: + var6 = -1754085334; + break; + case -816721366: + var2 = var5.at(); + var6 = -942466856; + break; + case -802651869: + default: + var2 = (9147773459513963634L | -9147773459513963634L) + (9147773459513963634L & -9147773459513963634L); + var4 = this.history.iterator(); + var6 = -1754085334; + break; + case 224270022: + return var2; + } + } + } +} diff --git a/src/main/java/defpackage/ako.java b/src/main/java/defpackage/ako.java new file mode 100644 index 0000000..288597a --- /dev/null +++ b/src/main/java/defpackage/ako.java @@ -0,0 +1,206 @@ +package defpackage; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Set; +import java.util.regex.Pattern; +import net.fabricmc.loader.api.FabricLoader; +import org.lwjgl.PointerBuffer; +import org.lwjgl.system.MemoryStack; +import org.lwjgl.util.tinyfd.TinyFileDialogs; + +public final class ako { + public static final long MAX_FILE_BYTES = 47185920L; + public static final int MAX_PER_MESSAGE = 8; + private static final String DIALOG_TITLE = "Attach screenshots or videos"; + private static final String FILTER_LABEL = "Images, videos, logs"; + private static final String SCREENSHOTS_DIRECTORY = "screenshots"; + private static final Pattern SELECTION_SEPARATOR = Pattern.compile("\\|"); + private static final String PICK_FAILURE = "attachment dialog failed"; + private static final Set EXTENSIONS; + private static final Set IMAGE_EXTENSIONS = Set.of( + "png", + "jpg", + "jpeg", + "webp", + "gif" + ); + private static final Set VIDEO_EXTENSIONS = Set.of( + "mp4", + "mov", + "webm", + "mkv" + ); + + private ako() { + } + + public static List pick() { + String var0; + try { + MemoryStack var1 = MemoryStack.stackPush(); + + try { + PointerBuffer var2 = var1.mallocPointer(EXTENSIONS.size()); + + for (String var4 : EXTENSIONS) { + var2.put(var1.UTF8("*." + var4)); + } + + var2.flip(); + var0 = TinyFileDialogs.tinyfd_openFileDialog( + "Attach screenshots or videos", + defaultDirectory(), + var2, + "Images, videos, logs", + (boolean)((((-275392352 | 275392353) + (-275392352 & 275392353)) + ) != 0)); + } catch (Throwable var8) { + if (var1 != null) { + try { + var1.close(); + } catch (Throwable var7) { + var8.addSuppressed(var7); + } + } + + throw var8; + } + + if (var1 != null) { + var1.close(); + } + } catch (Throwable var9) { + id.error(Cif.GUI, "attachment dialog failed", var9); + return List.of(); + } + + if (var0 != null && !var0.isBlank()) { + ArrayList var10 = new ArrayList(); + String[] var11 = SELECTION_SEPARATOR.split(var0); + int var12 = var11.length; + + for (int var13 = 0; var13 < var12; var13++) { + String var5 = var11[var13]; + akk var6 = describe(Path.of(var5.trim())); + if (var6 != null) { + var10.add(var6); + } + } + + return List.copyOf(var10); + } else { + return List.of(); + } + } + + public static akk describe(Path var0) { + try { + if (!Files.isRegularFile(var0)) { + return null; + } + + String var1 = var0.getFileName().toString(); + long var2 = Files.size(var0); + return EXTENSIONS.contains(extension(var1)) + && var2 > (-2680916318848105721L ^ 2680916318848105721L) + ((-2680916318848105721L & 2680916318848105721L) << 1) + && var2 <= (-4639043219969354266L ^ 4639043220016540186L) + ((-4639043219969354266L & 4639043220016540186L) << 1) + ? new akk(var0, var1, var2) + : null; + } catch (Exception var4) { + id.warn(Cif.GUI, "attachment dialog failed", var4); + return null; + } + } + + public static boolean isImage(String var0) { + return IMAGE_EXTENSIONS.contains(extension(var0)); + } + + public static boolean isVideo(String var0) { + return VIDEO_EXTENSIONS.contains(extension(var0)); + } + + private static String extension(String var0) { + int var1 = 0; + String var3 = null; + int var2 = -89861877; + + while (true) { + switch (var2) { + case -1185138047: + var3 = ""; + var2 = 508990084; + break; + case -89861877: + default: + var1 = var0.lastIndexOf((-329386992 ^ 329387038) + ((-329386992 & 329387038) << 1)); + if (var1 < 0) { + var2 = -1185138047; + } else { + var2 = 2054898005; + } + break; + case 508990084: + return var3; + case 2054898005: + var3 = var0.substring(var1 + 1).toLowerCase(Locale.ROOT); + var2 = 508990084; + } + } + } + + private static String defaultDirectory() { + Path var0 = null; + Object var1 = null; + Path var3 = null; + int var2 = -427323974; + + while (true) { + switch (var2) { + case -1786274312: + Path var4 = var3; + return var4.toAbsolutePath() + File.separator; + case -427323974: + default: + var0 = FabricLoader.getInstance().getGameDir().resolve("screenshots"); + if (Files.isDirectory(var0)) { + var2 = -365325047; + } else { + var2 = 725512851; + } + break; + case -365325047: + var3 = var0; + var2 = -1786274312; + break; + case 725512851: + var3 = FabricLoader.getInstance().getGameDir(); + var2 = -1786274312; + } + } + } + + static { + String[] var10000 = new String[14]; + var10000[0] = "png"; + var10000[1] = "jpg"; + var10000[2] = "jpeg"; + var10000[3] = "webp"; + var10000[4] = "gif"; + var10000[5] = "mp4"; + var10000[6] = "mov"; + var10000[7] = "webm"; + var10000[8] = "mkv"; + var10000[9] = "txt"; + var10000[10] = "log"; + var10000[11] = "zip"; + var10000[12] = "json"; + var10000[13] = "evoclip"; + EXTENSIONS = Set.of(var10000); + } +} diff --git a/src/main/java/defpackage/akp.java b/src/main/java/defpackage/akp.java new file mode 100644 index 0000000..956d029 --- /dev/null +++ b/src/main/java/defpackage/akp.java @@ -0,0 +1,317 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +final class akp { + private akp() { + } + + static List summaries(JsonObject var0) { + JsonArray var1 = null; + ArrayList var2 = null; + Iterator var3 = null; + JsonElement var4 = null; + int var5 = -2126957000; + + while (true) { + switch (var5) { + case -2126957000: + default: + var1 = array(var0, "tickets"); + var2 = new ArrayList(var1.size()); + var3 = var1.iterator(); + var5 = 52270839; + break; + case -1918397498: + var4 = (JsonElement)var3.next(); + if (var4.isJsonObject()) { + var5 = -43724296; + } else { + var5 = 670884216; + } + break; + case -43724296: + var2.add(summary(var4.getAsJsonObject())); + var5 = 670884216; + break; + case 52270839: + if (var3.hasNext()) { + var5 = -1918397498; + } else { + var5 = 1966397664; + } + break; + case 670884216: + var5 = 52270839; + break; + case 1966397664: + return List.copyOf(var2); + } + } + } + + static akn detail(JsonObject var0) { + JsonArray var1 = array(var0, "history"); + ArrayList var2 = new ArrayList(var1.size()); + + for (JsonElement var4 : var1) { + if (var4.isJsonObject()) { + JsonObject var5 = var4.getAsJsonObject(); + var2.add( + new akv( + aku.of(string(var5, "status")), + number(var5, "at") + ) + ); + } + } + + JsonArray var7 = array(var0, "thread"); + ArrayList var8 = new ArrayList(var7.size()); + + for (JsonElement var6 : var7) { + if (var6.isJsonObject()) { + var8.add(message(var6.getAsJsonObject())); + } + } + + return new akn(summary(var0), List.copyOf(var2), List.copyOf(var8)); + } + + static akq message(JsonObject var0) { + JsonArray var1 = null; + ArrayList var2 = null; + Iterator var3 = null; + JsonElement var4 = null; + int var5 = -1197453281; + + while (true) { + switch (var5) { + case -1687776787: + var2.add(attachment(var4.getAsJsonObject())); + var5 = -999888379; + break; + case -1197453281: + default: + var1 = array(var0, "attachments"); + var2 = new ArrayList(var1.size()); + var3 = var1.iterator(); + var5 = 51124123; + break; + case -999888379: + var5 = 51124123; + break; + case 51124123: + if (var3.hasNext()) { + var5 = 299653022; + } else { + var5 = 942929673; + } + break; + case 299653022: + var4 = (JsonElement)var3.next(); + if (var4.isJsonObject()) { + var5 = -1687776787; + } else { + var5 = -999888379; + } + break; + case 942929673: + return new akq( + string(var0, "id"), + akm.of(string(var0, "author")), + string(var0, "text"), + number(var0, "at"), + bool(var0, "seen"), + List.copyOf(var2) + ); + } + } + } + + static akl attachment(JsonObject var0) { + return new akl( + string(var0, "name"), + string(var0, "kind"), + number(var0, "size") + ); + } + + private static akw summary(JsonObject var0) { + return new akw( + string(var0, "id"), + (int)number(var0, "number"), + string(var0, "title"), + aku.of(string(var0, "status")), + number(var0, "createdAt"), + number(var0, "updatedAt"), + (int)number(var0, "unread"), + (int)number(var0, "messages"), + string(var0, "preview"), + akm.of(string(var0, "previewAuthor")) + ); + } + + static String string(JsonObject var0, String var1) { + JsonElement var2 = null; + String var4 = null; + int var3 = 1837372639; + + while (true) { + switch (var3) { + case -720253935: + var4 = var2.getAsString(); + var3 = 156109374; + break; + case 156109374: + return var4; + case 163785707: + var4 = ""; + var3 = 156109374; + break; + case 1063007971: + if (var2.isJsonPrimitive()) { + var3 = -720253935; + } else { + var3 = 163785707; + } + break; + case 1837372639: + default: + var2 = var0.get(var1); + if (var2 != null) { + var3 = 1063007971; + } else { + var3 = 163785707; + } + } + } + } + + static long number(JsonObject var0, String var1) { + JsonElement var2 = null; + long var4 = (-2331203848112524314L | 2331203848112524314L) + (-2331203848112524314L & 2331203848112524314L); + int var3 = 1608850573; + + while (true) { + switch (var3) { + case -2053597639: + var4 = (-616485460961782264L ^ 616485460961782264L) + ((-616485460961782264L & 616485460961782264L) << 1); + var3 = -1193422405; + break; + case -1769482417: + if (var2.getAsJsonPrimitive().isNumber()) { + var3 = 1528723240; + } else { + var3 = -2053597639; + } + break; + case -1219542145: + if (var2.isJsonPrimitive()) { + var3 = -1769482417; + } else { + var3 = -2053597639; + } + break; + case -1193422405: + return var4; + case 1528723240: + var4 = var2.getAsLong(); + var3 = -1193422405; + break; + case 1608850573: + default: + var2 = var0.get(var1); + if (var2 != null) { + var3 = -1219542145; + } else { + var3 = -2053597639; + } + } + } + } + + private static boolean bool(JsonObject var0, String var1) { + JsonElement var2 = null; + int var4 = 0; + int var3 = 1313528611; + + while (true) { + switch (var3) { + case -533436446: + return (boolean)((var4) != 0); + case -448106470: + var4 = 0; + var3 = -533436446; + break; + case -347417612: + if (var2.isJsonPrimitive()) { + var3 = 1170545705; + } else { + var3 = -448106470; + } + break; + case 527614950: + var4 = 1; + var3 = -533436446; + break; + case 1170545705: + if (var2.getAsBoolean()) { + var3 = 527614950; + } else { + var3 = -448106470; + } + break; + case 1313528611: + default: + var2 = var0.get(var1); + if (var2 != null) { + var3 = -347417612; + } else { + var3 = -448106470; + } + } + } + } + + private static JsonArray array(JsonObject var0, String var1) { + JsonElement var2 = null; + JsonArray var4 = null; + int var3 = -627715224; + + while (true) { + switch (var3) { + case -2110538000: + var4 = var2.getAsJsonArray(); + var3 = -1466816701; + break; + case -1466816701: + return var4; + case -627715224: + default: + var2 = var0.get(var1); + if (var2 != null) { + var3 = 1510167989; + } else { + var3 = 1278520196; + } + break; + case 1278520196: + var4 = new JsonArray(); + var3 = -1466816701; + break; + case 1510167989: + if (var2.isJsonArray()) { + var3 = -2110538000; + } else { + var3 = 1278520196; + } + } + } + } +} diff --git a/src/main/java/defpackage/akq.java b/src/main/java/defpackage/akq.java new file mode 100644 index 0000000..c4bae79 --- /dev/null +++ b/src/main/java/defpackage/akq.java @@ -0,0 +1,6 @@ +package defpackage; + +import java.util.List; + +public record akq(String id, akm author, String text, long at, boolean seen, List attachments) { +} diff --git a/src/main/java/defpackage/akr.java b/src/main/java/defpackage/akr.java new file mode 100644 index 0000000..436c77e --- /dev/null +++ b/src/main/java/defpackage/akr.java @@ -0,0 +1,9 @@ +package defpackage; + +public enum akr { + IDLE, + SENDING, + UPLOADING, + DONE, + FAILED; +} diff --git a/src/main/java/defpackage/aks.java b/src/main/java/defpackage/aks.java new file mode 100644 index 0000000..3e935a5 --- /dev/null +++ b/src/main/java/defpackage/aks.java @@ -0,0 +1,39 @@ +package defpackage; + +public record aks(akr phase, float progress, String message) { + public static final aks IDLE = new aks(akr.IDLE, 0.0F, ""); + + public boolean busy() { + int var2 = 0; + int var1 = 543383553; + + while (true) { + switch (var1) { + case -948018716: + var2 = 0; + var1 = -367746073; + break; + case -367746073: + return (boolean)((var2) != 0); + case -168334368: + var2 = 1; + var1 = -367746073; + break; + case 203335909: + if (this.phase == akr.UPLOADING) { + var1 = -168334368; + } else { + var1 = -948018716; + } + break; + case 543383553: + default: + if (this.phase != akr.SENDING) { + var1 = 203335909; + } else { + var1 = -168334368; + } + } + } + } +} diff --git a/src/main/java/defpackage/akt.java b/src/main/java/defpackage/akt.java new file mode 100644 index 0000000..f8590c3 --- /dev/null +++ b/src/main/java/defpackage/akt.java @@ -0,0 +1,1199 @@ +package defpackage; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.HttpRequest.BodyPublishers; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.time.Duration; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Base64; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Consumer; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents.EndTick; +import net.minecraft.client.Minecraft; + +public final class akt { + private static final String ENDPOINT = "https://www.evoproject.xyz/api/configs"; + private static final String TICKET_HEADER = "X-Evo-Ticket"; + private static final String TICKET_HEADER_VALUE = "1"; + private static final String CONTENT_TYPE_HEADER = "Content-Type"; + private static final String JSON_CONTENT_TYPE = "application/json"; + private static final String WORKER_THREAD_NAME = "evo-tickets"; + private static final String PICKER_THREAD_NAME = "evo-ticket-picker"; + private static final String DEFAULT_ROLE = "user"; + private static final int ADMIN_UID = 1; + private static final String ACTION_LIST = "list"; + private static final String ACTION_GET = "get"; + private static final String ACTION_CREATE = "create"; + private static final String ACTION_REPLY = "reply"; + private static final String ACTION_UPLOAD = "upload"; + private static final String NOTIFY_TITLE = "Bug Reports"; + private static final String NOTIFY_REPLY = "#%d · developer replied"; + private static final String NOTIFY_STATUS = "#%d · %s"; + private static final String NOTIFY_UNREAD = "%d unread replies"; + private static final String REQUEST_FAILURE = "ticket request {} failed"; + private static final String MESSAGE_SIGN_IN = "Sign in to your EvoVisuals account first"; + private static final String MESSAGE_FORBIDDEN = "Bug reports are open to testers and creators"; + private static final String MESSAGE_RATE = "Too many requests, try again in a minute"; + private static final String MESSAGE_CLOSED = "This ticket is closed"; + private static final String MESSAGE_TOO_LARGE = "Attachment is too large"; + private static final String MESSAGE_EMPTY = "Add a title and describe the bug"; + private static final String MESSAGE_OFFLINE = "No connection to the server"; + private static final String MESSAGE_FAILED = "Request failed (code %d)"; + private static final String MESSAGE_SENDING = "Sending report"; + private static final String MESSAGE_REPLYING = "Sending reply"; + private static final String MESSAGE_UPLOADING = "Uploading %s"; + private static final String MESSAGE_SENT = "Delivered to the developer"; + private static final String MESSAGE_PARTIAL = "Sent, but %d attachment(s) failed"; + private static final int HTTP_OK = 200; + private static final int HTTP_UNAUTHORIZED = 401; + private static final int HTTP_FORBIDDEN = 403; + private static final int HTTP_CONFLICT = 409; + private static final int HTTP_TOO_LARGE = 413; + private static final int HTTP_RATE_LIMITED = 429; + private static final int HTTP_BAD_REQUEST = 400; + private static final int CHUNK_BYTES = 2621440; + private static final int MIN_TITLE_LENGTH = 3; + private static final long CONNECT_TIMEOUT_SECONDS = 10L; + private static final long REQUEST_TIMEOUT_SECONDS = 30L; + private static final long UPLOAD_TIMEOUT_SECONDS = 90L; + private static final int POLL_INTERVAL_TICKS = 1800; + private static final int FIRST_POLL_TICKS = 400; + private static final long LIST_FRESH_MILLIS = 15000L; + private static final long DETAIL_FRESH_MILLIS = 8000L; + private static final HttpClient HTTP = HttpClient.newBuilder() + .connectTimeout(Duration.ofSeconds((-5973269547378817318L | 5973269547378817328L) + (-5973269547378817318L & 5973269547378817328L))) + .build(); + private static final ExecutorService WORKER = Executors.newSingleThreadExecutor(var0 -> { + Thread var1 = new Thread(var0, "evo-tickets"); + var1.setDaemon((boolean)((((-1430510541 ^ 1430510542) + ((-1430510541 & 1430510542) << 1))) != 0)); + return var1; + }); + private static final AtomicBoolean listInFlight = new AtomicBoolean(); + private static final AtomicBoolean detailInFlight = new AtomicBoolean(); + private static final AtomicBoolean pickerOpen = new AtomicBoolean(); + private static final Map known = new HashMap<>(); + private static volatile List tickets = List.of(); + private static volatile akn current; + private static volatile String openTicketId; + private static volatile aks operation = aks.IDLE; + private static volatile String listError = ""; + private static volatile boolean loaded; + private static volatile int unreadTotal; + private static volatile long listFetchedAt; + private static volatile long detailFetchedAt; + private static boolean seeded; + private static int ticks = 1400; + + private akt() { + } + + public static void initialize() { + ClientTickEvents.END_CLIENT_TICK.register((EndTick)var0 -> tick()); + } + + public static boolean eligible() { + cr var0 = null; + String var1 = null; + int var3 = 0; + int var2 = -1601871798; + + while (true) { + switch (var2) { + case -2016420567: + if (!"user".equals(var1)) { + var2 = -1884814135; + } else { + var2 = 638029876; + } + break; + case -1884814135: + var3 = 1; + var2 = 2033618756; + break; + case -1601871798: + default: + var0 = cp.user(); + if (var0 != null) { + var2 = 1813294744; + } else { + var2 = 281825674; + } + break; + case -1566295638: + if (var0.uid() == (611308069 | -611308068) + (611308069 & -611308068)) { + var2 = 670901045; + } else { + var2 = 1848607529; + } + break; + case 281825674: + return (boolean)(((0)) != 0); + case 638029876: + var3 = 0; + var2 = 2033618756; + break; + case 670901045: + return (boolean)(((1)) != 0); + case 1390442624: + if (!var1.isBlank()) { + var2 = -2016420567; + } else { + var2 = 638029876; + } + break; + case 1813294744: + if (var0.token() != null) { + var2 = 1940167504; + } else { + var2 = 281825674; + } + break; + case 1848607529: + var1 = var0.role(); + if (var1 != null) { + var2 = 1390442624; + } else { + var2 = 638029876; + } + break; + case 1940167504: + if (var0.token().isEmpty()) { + var2 = 281825674; + } else { + var2 = -1566295638; + } + break; + case 2033618756: + return (boolean)((var3) != 0); + } + } + } + + public static List tickets() { + return tickets; + } + + public static akn current() { + return current; + } + + public static String openTicketId() { + return openTicketId; + } + + public static aks operation() { + return operation; + } + + public static String listError() { + return listError; + } + + public static boolean loaded() { + return loaded; + } + + public static int unreadTotal() { + return unreadTotal; + } + + public static void acknowledgeOperation() { + int var0 = 1762256796; + + while (true) { + switch (var0) { + case -1008521757: + operation = aks.IDLE; + var0 = 748081971; + break; + case 748081971: + return; + case 1762256796: + default: + if (!operation.busy()) { + var0 = -1008521757; + } else { + var0 = 748081971; + } + } + } + } + + public static void keepFresh() { + long var0 = (-3211891592857018813L ^ 3211891592857018813L) + ((-3211891592857018813L & 3211891592857018813L) << 1); + int var2 = 722441661; + + while (true) { + switch (var2) { + case -1488088245: + if (var0 - detailFetchedAt > (-4825217785031831456L | 4825217785031839456L) + (-4825217785031831456L & 4825217785031839456L)) { + var2 = -562950970; + } else { + var2 = 439098724; + } + break; + case -562950970: + fetchDetail(openTicketId); + var2 = 439098724; + break; + case 439098724: + return; + case 722441661: + default: + var0 = System.currentTimeMillis(); + if (var0 - listFetchedAt > (5445644411394247070L | -5445644411394232070L) + (5445644411394247070L & -5445644411394232070L)) { + var2 = 1351909060; + } else { + var2 = 1046691574; + } + break; + case 1046691574: + if (openTicketId != null) { + var2 = -1488088245; + } else { + var2 = 439098724; + } + break; + case 1351909060: + refresh(); + var2 = 1046691574; + } + } + } + + public static void refresh() { + int var0 = 1135871994; + + while (true) { + switch (var0) { + case -1743864107: + if (!listInFlight.compareAndSet( + (boolean)(((0)) != 0), + (boolean)((((905269846 ^ -905269845) + ((905269846 & -905269845) << 1)) + ) != 0))) { + var0 = -46310936; + } else { + var0 = 214034235; + } + break; + case -46310936: + return; + case 214034235: + listFetchedAt = System.currentTimeMillis(); + WORKER.execute(() -> { + boolean var2 = false /* VF: Semaphore variable */; + + try { + var2 = true; + fetchList(); + var2 = false; + } finally { + if (var2) { + listInFlight.set((boolean)((((-175047823 ^ 175047823) + ((-175047823 & 175047823) << 1))) != 0)); + } + } + + listInFlight.set((boolean)((((823491707 | -823491707) + (823491707 & -823491707))) != 0)); + }); + return; + case 1135871994: + default: + if (eligible()) { + var0 = -1743864107; + } else { + var0 = -46310936; + } + } + } + } + + public static void open(String var0) { + akn var1 = null; + int var2 = -1387878935; + + while (true) { + switch (var2) { + case -1387878935: + default: + openTicketId = var0; + var1 = current; + if (var1 != null) { + var2 = -76412132; + } else { + var2 = 508699636; + } + break; + case -845749913: + current = null; + var2 = 508699636; + break; + case -76412132: + if (!var1.summary().id().equals(var0)) { + var2 = -845749913; + } else { + var2 = 508699636; + } + break; + case 508699636: + fetchDetail(var0); + return; + } + } + } + + public static void closeDetail() { + openTicketId = null; + current = null; + } + + public static void pickAttachments(Consumer> var0) { + Thread var1 = null; + int var2 = -1761108424; + + while (true) { + switch (var2) { + case -1761108424: + default: + if (!pickerOpen.compareAndSet( + (boolean)((((0)) != 0)), (boolean)((((62135556 | -62135555) + (62135556 & -62135555)) + ) != 0))) { + var2 = 699865565; + } else { + var2 = 2047403626; + } + break; + case 699865565: + return; + case 2047403626: + var1 = new Thread(() -> { + boolean var4 = false /* VF: Semaphore variable */; + + try { + var4 = true; + List var1x = ako.pick(); + Minecraft.getInstance().execute(() -> var0.accept(var1x)); + var4 = false; + } finally { + if (var4) { + pickerOpen.set((boolean)((((844351761 ^ -844351761) + ((844351761 & -844351761) << 1))) != 0)); + } + } + + pickerOpen.set((boolean)((((-1314298054 | 1314298054) + (-1314298054 & 1314298054))) != 0)); + }, "evo-ticket-picker"); + var1.setDaemon((boolean)((((-1174573096 ^ 1174573097) + ((-1174573096 & 1174573097) << 1))) != 0)); + var1.start(); + return; + } + } + } + + public static boolean create(String var0, String var1, List var2) { + String var3 = null; + String var4 = null; + Minecraft var5 = null; + JsonObject var6 = null; + List var7 = null; + int var8 = 2058104699; + + while (true) { + switch (var8) { + case -2003978303: + var5 = Minecraft.getInstance(); + var6 = aki.snapshot(var5); + var7 = List.copyOf(var2); + WORKER.execute( + () -> { + JsonObject var4x = null; + JsonObject var5x = null; + akn var6x = null; + String var7x = null; + int var8x = 0; + int var9x = -1511007441; + + while (true) { + switch (var9x) { + case -1666387585: + return; + case -1511007441: + default: + var4x = body("create"); + if (var4x == null) { + var9x = 1018351915; + } else { + var9x = 1518469645; + } + break; + case -335494395: + var6x = akp.detail(var5x.getAsJsonObject("ticket")); + var7x = akp.string(var5x, "messageId"); + var8x = uploadAll(var6x.summary().id(), var7x, var7); + openTicketId = var6x.summary().id(); + fetchDetailNow(var6x.summary().id()); + fetchList(); + finish(var8x); + return; + case 1018351915: + fail( + "Sign in to your EvoVisuals account first" + ); + return; + case 1518469645: + var4x.addProperty("title", var3); + var4x.addProperty("text", var4); + var4x.add("meta", var6); + var4x.addProperty("diagnostics", aki.diagnostics()); + var4x.addProperty("log", aki.logTail()); + var5x = execute( + "create", + var4x, + (-8803807327989821872L ^ 8803807327989821902L) + ((-8803807327989821872L & 8803807327989821902L) << 1) + ); + if (var5x == null) { + var9x = -1666387585; + } else { + var9x = -335494395; + } + } + } + } + ); + return (boolean)(((1)) != 0); + case -1620873019: + return (boolean)(((0)) != 0); + case -1457503200: + operation = new aks( + akr.FAILED, + 0.0F, + "Add a title and describe the bug" + ); + return (boolean)(((0)) != 0); + case -769293621: + if (!startOperation("Sending report")) { + var8 = -1620873019; + } else { + var8 = -2003978303; + } + break; + case 545588374: + if (var4.isEmpty()) { + var8 = -1457503200; + } else { + var8 = -769293621; + } + break; + case 2058104699: + default: + var3 = var0.trim(); + var4 = var1.trim(); + if (var3.length() >= (-1272625117 ^ 1272625120) + ((-1272625117 & 1272625120) << 1)) { + var8 = 545588374; + } else { + var8 = -1457503200; + } + } + } + } + + public static boolean reply(String var0, List var1) { + String var2 = null; + String var3 = null; + List var4 = null; + int var5 = 292503723; + + while (true) { + switch (var5) { + case -1879381851: + var4 = List.copyOf(var1); + WORKER.execute( + () -> { + JsonObject var3x = null; + JsonObject var4x = null; + akq var5x = null; + int var6x = 0; + int var7 = -1380881266; + + while (true) { + switch (var7) { + case -1380881266: + default: + var3x = body("reply"); + if (var3x == null) { + var7 = -441714181; + } else { + var7 = -996817194; + } + break; + case -996817194: + var3x.addProperty("id", var2); + var3x.addProperty("text", var3); + var4x = execute( + "reply", + var3x, + (-4164723356791976216L | 4164723356791976246L) + (-4164723356791976216L & 4164723356791976246L) + ); + if (var4x == null) { + var7 = -467225439; + } else { + var7 = -20417141; + } + break; + case -467225439: + return; + case -441714181: + fail( + "Sign in to your EvoVisuals account first" + ); + return; + case -20417141: + var5x = akp.message(var4x.getAsJsonObject("message")); + var6x = uploadAll(var2, var5x.id(), var4); + fetchDetailNow(var2); + fetchList(); + finish(var6x); + return; + } + } + } + ); + return (boolean)(((1)) != 0); + case -117993584: + if (!var3.isEmpty()) { + var5 = -2364048; + } else { + var5 = 721166890; + } + break; + case -2364048: + if (!startOperation("Sending reply")) { + var5 = 721166890; + } else { + var5 = -1879381851; + } + break; + case 292503723: + default: + var2 = openTicketId; + var3 = var0.trim(); + if (var2 != null) { + var5 = -117993584; + } else { + var5 = 721166890; + } + break; + case 721166890: + return (boolean)(((0)) != 0); + } + } + } + + private static void tick() { + int var0 = 2133479250; + + while (true) { + switch (var0) { + case -97380831: + return; + case 1259444166: + ticks = 0; + refresh(); + return; + case 2133479250: + } + + if ((ticks += (1295266367 ^ -1295266366) + ((1295266367 & -1295266366) << 1)) < (2095909393 | -2095907593) + (2095909393 & -2095907593)) { + var0 = -97380831; + } else { + var0 = 1259444166; + } + } + } + + private static boolean startOperation(String var0) { + int var1 = -2102205673; + + while (true) { + switch (var1) { + case -2102205673: + default: + if (operation.busy()) { + var1 = -513064499; + } else { + var1 = 1147838188; + } + break; + case -513064499: + return (boolean)(((0)) != 0); + case 1147838188: + operation = new aks(akr.SENDING, 0.0F, var0); + return (boolean)(((1)) != 0); + } + } + } + + private static void finish(int var0) { + aks var2 = null; + int var1 = 1043060971; + + while (true) { + switch (var1) { + case -811013749: + operation = var2; + return; + case 1043060971: + default: + if (var0 == 0) { + var1 = 1264431477; + } else { + var1 = 1385396876; + } + break; + case 1264431477: + var2 = new aks( + akr.DONE, + 1.0F, + "Delivered to the developer" + ); + var1 = -811013749; + break; + case 1385396876: + akr var10002 = akr.FAILED; + String var10004 = "Sent, but %d attachment(s) failed"; + Object[] var10005 = new Object[1]; + var10005[0] = var0; + var2 = new aks(var10002, 1.0F, var10004.formatted(var10005)); + var1 = -811013749; + } + } + } + + private static void fail(String var0) { + operation = new aks(akr.FAILED, 0.0F, var0); + } + + private static void fetchDetail(String var0) { + int var1 = 545199567; + + while (true) { + switch (var1) { + case -1715907794: + return; + case -1651834780: + detailFetchedAt = System.currentTimeMillis(); + WORKER.execute(() -> { + boolean var3 = false /* VF: Semaphore variable */; + + try { + var3 = true; + fetchDetailNow(var0); + var3 = false; + } finally { + if (var3) { + detailInFlight.set((boolean)((((1946556844 ^ -1946556844) + ((1946556844 & -1946556844) << 1))) != 0)); + } + } + + detailInFlight.set((boolean)((((-2005698896 ^ 2005698896) + ((-2005698896 & 2005698896) << 1))) != 0)); + }); + return; + case -18871651: + if (!detailInFlight.compareAndSet( + (boolean)((((0)) != 0)), (boolean)((((1524002324 | -1524002323) + (1524002324 & -1524002323)) + ) != 0))) { + var1 = -1715907794; + } else { + var1 = -1651834780; + } + break; + case 545199567: + default: + if (eligible()) { + var1 = -18871651; + } else { + var1 = -1715907794; + } + } + } + } + + private static void fetchDetailNow(String var0) { + detailFetchedAt = System.currentTimeMillis(); + JsonObject var1 = body("get"); + if (var1 != null) { + var1.addProperty("id", var0); + JsonObject var2 = request( + "get", + var1, + (5214772567306779578L ^ -5214772567306779548L) + ((5214772567306779578L & -5214772567306779548L) << 1), + null + ); + if (var2 != null && var0.equals(openTicketId)) { + akn var3 = akp.detail(var2.getAsJsonObject("ticket")); + current = var3; + synchronized (known) { + known.put(var0, var3.summary()); + } + + replaceSummary(var3.summary()); + } + } + } + + private static void fetchList() { + JsonObject var0 = null; + String[] var1 = null; + JsonObject var2 = null; + List var3 = null; + String var5 = null; + int var4 = -435339064; + + while (true) { + switch (var4) { + case -1978202626: + listError = var5; + return; + case -975455507: + var1 = new String[1]; + var2 = request( + "list", + var0, + (-14912947664772319L | 14912947664772349L) + (-14912947664772319L & 14912947664772349L), + var1 + ); + if (var2 == null) { + var4 = -465868145; + } else { + var4 = 1081750918; + } + break; + case -465868145: + if (var1[0] == null) { + var4 = 1188845738; + } else { + var4 = 663487018; + } + break; + case -435339064: + default: + listFetchedAt = System.currentTimeMillis(); + var0 = body("list"); + if (var0 == null) { + var4 = 318113505; + } else { + var4 = -975455507; + } + break; + case 318113505: + return; + case 663487018: + var5 = var1[0]; + var4 = -1978202626; + break; + case 1081750918: + var3 = akp.summaries(var2); + listError = ""; + announceChanges(var3); + tickets = var3; + unreadTotal = countUnread(var3); + loaded = (boolean)(((1)) != 0); + return; + case 1188845738: + var5 = "No connection to the server"; + var4 = -1978202626; + } + } + } + + private static void replaceSummary(akw var0) { + List var1 = tickets; + ArrayList var2 = new ArrayList(var1.size()); + + for (akw var4 : var1) { + var2.add(var4.id().equals(var0.id()) ? var0 : var4); + } + + tickets = List.copyOf(var2); + unreadTotal = countUnread(var2); + } + + private static int countUnread(List var0) { + int var1 = 0; + Iterator var2 = null; + akw var3 = null; + int var4 = -1008568820; + + while (true) { + switch (var4) { + case -1008568820: + default: + var1 = 0; + var2 = var0.iterator(); + var4 = 1174307203; + break; + case 463281480: + return var1; + case 1118217846: + var3 = (akw)var2.next(); + var1 += var3.unread(); + var4 = 1174307203; + break; + case 1174307203: + if (var2.hasNext()) { + var4 = 1118217846; + } else { + var4 = 463281480; + } + } + } + } + + private static void announceChanges(List var0) { + ArrayList var1 = new ArrayList(); + synchronized (known) { + if (!seeded) { + seeded = (boolean)(((1)) != 0); + int var9 = countUnread(var0); + if (var9 > 0) { + String var13 = "%d unread replies"; + Object[] var15 = new Object[1]; + var15[0] = var9; + var1.add(var13.formatted(var15)); + } + } else { + String var3 = openTicketId; + + for (akw var5 : var0) { + akw var6 = known.get(var5.id()); + if (var6 != null && !var5.id().equals(var3)) { + if (var5.unread() > var6.unread()) { + String var10001 = "#%d · developer replied"; + Object[] var10002 = new Object[1]; + var10002[0] = var5.number(); + var1.add(var10001.formatted(var10002)); + } else if (var5.status() != var6.status()) { + String var12 = "#%d · %s"; + Object[] var14 = new Object[2]; + var14[0] = var5.number(); + var14[1] = var5.status().label(); + var1.add(var12.formatted(var14)); + } + } + } + } + + known.clear(); + + for (akw var11 : var0) { + known.put(var11.id(), var11); + } + } + + if (!var1.isEmpty()) { + Minecraft.getInstance() + .execute( + () -> { + Iterator var1x = null; + String var2 = null; + int var3x = 1899300714; + + while (true) { + switch (var3x) { + case -2022509629: + if (var1x.hasNext()) { + var3x = 1312698264; + } else { + var3x = 774740732; + } + break; + case 774740732: + return; + case 1312698264: + var2 = (String)var1x.next(); + le.getInstance() + .addCustomNotification( + rl.TICKETS.getIcon(), "Bug Reports", var2 + ); + var3x = -2022509629; + break; + case 1899300714: + default: + var1x = var1.iterator(); + var3x = -2022509629; + } + } + } + ); + } + } + + private static int uploadAll(String var0, String var1, List var2) { + if (!var2.isEmpty() && !var1.isEmpty()) { + long var3 = (-5804653891711843410L ^ 5804653891711843410L) + ((-5804653891711843410L & 5804653891711843410L) << 1); + + for (akk var6 : var2) { + var3 += var6.size(); + } + + long[] var9 = new long[1]; + int var10 = 0; + int var7 = Math.min(var2.size(), (-2029348682 | 2029348690) + (-2029348682 & 2029348690)); + + for (int var8 = 0; var8 < var7; var8++) { + if (!upload(var0, var1, (akk)var2.get(var8), var3, var9)) { + var10++; + } + } + + return var10 + var2.size() - var7; + } else { + return 0; + } + } + + private static boolean upload(String var0, String var1, akk var2, long var3, long[] var5) { + String var6 = UUID.randomUUID().toString(); + + long var7; + try { + var7 = Files.size(var2.path()); + } catch (IOException var17) { + id.warn( + Cif.NETWORK, + "ticket request {} failed", + "upload", + var17 + ); + return (boolean)(((0)) != 0); + } + + if (var7 > (-8629840793939819860L ^ 8629840793939819860L) + ((-8629840793939819860L & 8629840793939819860L) << 1) + && var7 <= (-4199578030736825040L ^ 4199578030784010960L) + ((-4199578030736825040L & 4199578030784010960L) << 1)) { + int var9 = (int)( + ( + var7 + + (1689533774112677477L ^ -1689533774110056037L) + + ((1689533774112677477L & -1689533774110056037L) << 1) + - ((-8430832053761281752L | 8430832053761281753L) + (-8430832053761281752L & 8430832053761281753L)) + ) + / ((-7265830220760354066L | 7265830220762975506L) + (-7265830220760354066L & 7265830220762975506L)) + ); + byte[] var10 = new byte[2621440]; + + try (InputStream var11 = Files.newInputStream(var2.path())) { + for (int var12 = 0; var12 < var9; var12++) { + int var13 = var11.readNBytes( + var10, + 0, + (int)Math.min( + (-7479547944327335797L ^ 7479547944329957237L) + ((-7479547944327335797L & 7479547944329957237L) << 1), + var7 - var12 * ((4226242672305216232L ^ -4226242672302594792L) + ((4226242672305216232L & -4226242672302594792L) << 1)) + ) + ); + if (var13 <= 0) { + return (boolean)(((0)) != 0); + } + + akr var10002 = akr.UPLOADING; + float var10003 = var3 <= (1412916215354508837L | -1412916215354508837L) + (1412916215354508837L & -1412916215354508837L) + ? 0.0F + : (float)var5[0] / (float)var3; + String var10004 = "Uploading %s"; + Object[] var10005 = new Object[1]; + var10005[0] = var2.name(); + operation = new aks(var10002, var10003, var10004.formatted(var10005)); + JsonObject var14 = body("upload"); + if (var14 == null) { + return (boolean)(((0)) != 0); + } + + var14.addProperty("id", var0); + var14.addProperty("messageId", var1); + var14.addProperty("uploadId", var6); + var14.addProperty("index", var12); + var14.addProperty("total", var9); + var14.addProperty("name", var2.name()); + var14.addProperty( + "data", + Base64.getEncoder().encodeToString(var13 == 2621440? var10 : Arrays.copyOf(var10, var13)) + ); + if (request( + "upload", + var14, + (3950550109405487457L ^ -3950550109405487367L) + ((3950550109405487457L & -3950550109405487367L) << 1), + null + ) + == null) { + return (boolean)(((0)) != 0); + } + + var5[0] = var5[0] + var13; + } + + return (boolean)(((1)) != 0); + } catch (IOException var19) { + id.warn( + Cif.NETWORK, + "ticket request {} failed", + "upload", + var19 + ); + return (boolean)(((0)) != 0); + } + } else { + return (boolean)(((0)) != 0); + } + } + + private static JsonObject body(String var0) { + cr var1 = null; + JsonObject var2 = null; + int var3 = 24658916; + + while (true) { + switch (var3) { + case -1676044581: + if (var1.token().isEmpty()) { + var3 = -340288647; + } else { + var3 = -491642823; + } + break; + case -491642823: + var2 = new JsonObject(); + var2.addProperty("token", var1.token()); + var2.addProperty("action", var0); + return var2; + case -340288647: + return null; + case 24658916: + default: + var1 = cp.user(); + if (var1 != null) { + var3 = 1250342989; + } else { + var3 = -340288647; + } + break; + case 1250342989: + if (var1.token() != null) { + var3 = -1676044581; + } else { + var3 = -340288647; + } + } + } + } + + private static JsonObject execute(String var0, JsonObject var1, long var2) { + String[] var4 = null; + JsonObject var5 = null; + Object var7 = null; + int var6 = 967020066; + + while (true) { + switch (var6) { + case -1244737301: + fail((String)var7); + var6 = 315517729; + break; + case -656810919: + if (var4[0] == null) { + var6 = -507530094; + } else { + var6 = 910474335; + } + break; + case -507530094: + var7 = "No connection to the server"; + var6 = -1244737301; + break; + case 315517729: + return var5; + case 910474335: + var7 = var4[0]; + var6 = -1244737301; + break; + case 967020066: + default: + var4 = new String[1]; + var5 = request(var0, var1, var2, var4); + if (var5 == null) { + var6 = -656810919; + } else { + var6 = 315517729; + } + } + } + } + + private static JsonObject request(String var0, JsonObject var1, long var2, String[] var4) { + try { + HttpRequest var5 = HttpRequest.newBuilder( + URI.create( + "https://www.evoproject.xyz/api/configs" + ) + ) + .timeout(Duration.ofSeconds(var2)) + .header( + "Content-Type", + "application/json" + ) + .header( + "X-Evo-Ticket", + "1" + ) + .POST(BodyPublishers.ofString(var1.toString(), StandardCharsets.UTF_8)) + .build(); + HttpResponse var6 = ld.send(HTTP, var5); + if (var6.statusCode() != (84728688 ^ -84728488) + ((84728688 & -84728488) << 1)) { + if (var4 != null) { + var4[0] = describe(var6.statusCode()); + } + + return null; + } else { + return JsonParser.parseString((String)var6.body()).getAsJsonObject(); + } + } catch (InterruptedException var7) { + Thread.currentThread().interrupt(); + return null; + } catch (Exception var8) { + id.warn(Cif.NETWORK, "ticket request {} failed", var0, var8); + return null; + } + } + + private static String describe(int var0) { + return switch (var0) { + case 400 -> "Add a title and describe the bug"; + case 401 -> "Sign in to your EvoVisuals account first"; + case 403 -> "Bug reports are open to testers and creators"; + case 409 -> "This ticket is closed"; + case 413 -> "Attachment is too large"; + case 429 -> "Too many requests, try again in a minute"; + default -> { + String var10000 = "Request failed (code %d)"; + Object[] var10001 = new Object[1]; + var10001[0] = var0; + yield var10000.formatted(var10001); + } + }; + } +} diff --git a/src/main/java/defpackage/aku.java b/src/main/java/defpackage/aku.java new file mode 100644 index 0000000..4ab777c --- /dev/null +++ b/src/main/java/defpackage/aku.java @@ -0,0 +1,75 @@ +package defpackage; + +public enum aku { + DELIVERED( + "delivered", + "Delivered" + ), + IN_PROGRESS( + "in_progress", + "In progress" + ), + CLOSED( + "closed", + "Closed" + ); + + private final String key; + private final String label; + + aku(String var3, String var4) { + this.key = var3; + this.label = var4; + } + + public String key() { + return this.key; + } + + public String label() { + return this.label; + } + + public static aku of(String var0) { + aku[] var1 = null; + int var2 = 0; + int var3 = 0; + aku var4 = null; + int var5 = -1484516858; + + while (true) { + switch (var5) { + case -1484516858: + default: + var1 = values(); + var2 = var1.length; + var3 = 0; + var5 = -591693404; + break; + case -1223255852: + return DELIVERED; + case -591693404: + if (var3 < var2) { + var5 = 563150449; + } else { + var5 = -1223255852; + } + break; + case 563150449: + var4 = var1[var3]; + if (var4.key.equals(var0)) { + var5 = 910132523; + } else { + var5 = 809958122; + } + break; + case 809958122: + var3++; + var5 = -591693404; + break; + case 910132523: + return var4; + } + } + } +} diff --git a/src/main/java/defpackage/akv.java b/src/main/java/defpackage/akv.java new file mode 100644 index 0000000..9f03bc8 --- /dev/null +++ b/src/main/java/defpackage/akv.java @@ -0,0 +1,4 @@ +package defpackage; + +public record akv(aku status, long at) { +} diff --git a/src/main/java/defpackage/akw.java b/src/main/java/defpackage/akw.java new file mode 100644 index 0000000..bd19f1e --- /dev/null +++ b/src/main/java/defpackage/akw.java @@ -0,0 +1,4 @@ +package defpackage; + +public record akw(String id, int number, String title, aku status, long createdAt, long updatedAt, int unread, int messages, String preview, akm previewAuthor) { +} diff --git a/src/main/java/defpackage/akx.java b/src/main/java/defpackage/akx.java new file mode 100644 index 0000000..0995e5e --- /dev/null +++ b/src/main/java/defpackage/akx.java @@ -0,0 +1,223 @@ +package defpackage; + +import it.unimi.dsi.fastutil.objects.Object2IntLinkedOpenHashMap; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; +import java.util.ArrayList; +import java.util.Iterator; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.MapColor; + +public final class akx { + private static final int NEUTRAL_COLOR = 10395294; + private final String name; + private final int sizeX; + private final int sizeY; + private final int sizeZ; + private final BlockState[] palette; + private final Item[] paletteItems; + private final int[] paletteColors; + private final int[] indices; + private final int blockCount; + private final Object2IntMap requiredMaterials; + private final int unknownStates; + private final String unknownExample; + + public akx(String var1, int var2, int var3, int var4, BlockState[] var5, int[] var6, int var7, String var8) { + this.name = var1; + this.sizeX = var2; + this.sizeY = var3; + this.sizeZ = var4; + this.palette = var5; + this.indices = var6; + this.unknownStates = var7; + this.unknownExample = var8; + this.paletteItems = new Item[var5.length]; + this.paletteColors = new int[var5.length]; + + for (int var9 = 0; var9 < var5.length; var9++) { + BlockState var10 = var5[var9]; + this.paletteItems[var9] = var10.isAir() ? Items.AIR : var10.getBlock().asItem(); + MapColor var11 = var10.getBlock().defaultMapColor(); + this.paletteColors[var9] = var11 == MapColor.NONE ? 10395294: var11.col; + } + + Object2IntOpenHashMap var16 = new Object2IntOpenHashMap(); + int var17 = 0; + int[] var18 = var6; + int var12 = var18.length; + + for (int var13 = 0; var13 < var12; var13++) { + int var14 = var18[var13]; + if (!var5[var14].isAir()) { + var17++; + Item var15 = this.paletteItems[var14]; + if (var15 != Items.AIR) { + var16.addTo(var15, (424090723 | -424090722) + (424090723 & -424090722)); + } + } + } + + this.blockCount = var17; + this.requiredMaterials = sortDescending(var16); + } + + public int volume() { + return this.sizeX * this.sizeY * this.sizeZ; + } + + public boolean contains(int var1, int var2, int var3) { + int var5 = 0; + int var4 = 1251298562; + + while (true) { + switch (var4) { + case -1478241639: + if (var3 >= 0) { + var4 = -327847015; + } else { + var4 = 1354835481; + } + break; + case -327847015: + if (var1 < this.sizeX) { + var4 = 1099860839; + } else { + var4 = 1354835481; + } + break; + case -117710030: + return (boolean)((var5) != 0); + case 975634667: + if (var2 >= 0) { + var4 = -1478241639; + } else { + var4 = 1354835481; + } + break; + case 1099860839: + if (var2 < this.sizeY) { + var4 = 1826842645; + } else { + var4 = 1354835481; + } + break; + case 1251298562: + default: + if (var1 >= 0) { + var4 = 975634667; + } else { + var4 = 1354835481; + } + break; + case 1354835481: + var5 = 0; + var4 = -117710030; + break; + case 1549887427: + var5 = 1; + var4 = -117710030; + break; + case 1826842645: + if (var3 < this.sizeZ) { + var4 = 1549887427; + } else { + var4 = 1354835481; + } + } + } + } + + public int paletteIndex(int var1, int var2, int var3) { + return this.indices[(var2 * this.sizeZ + var3) * this.sizeX + var1]; + } + + public BlockState state(int var1, int var2, int var3) { + return this.palette[this.paletteIndex(var1, var2, var3)]; + } + + public static Object2IntMap sortDescending(Object2IntMap var0) { + ArrayList var1 = null; + Object2IntLinkedOpenHashMap var2 = null; + Iterator var3 = null; + Entry var4 = null; + int var5 = -1936510821; + + while (true) { + switch (var5) { + case -1936510821: + default: + var1 = new ArrayList(var0.object2IntEntrySet()); + var1.sort((var0x, var1x) -> Integer.compare(var1x.getIntValue(), var0x.getIntValue())); + var2 = new Object2IntLinkedOpenHashMap(var1.size()); + var3 = var1.iterator(); + var5 = 1834889623; + break; + case -850676463: + return var2; + case 1333752312: + var4 = (Entry)var3.next(); + var2.put((Item)var4.getKey(), var4.getIntValue()); + var5 = 1834889623; + break; + case 1834889623: + if (var3.hasNext()) { + var5 = 1333752312; + } else { + var5 = -850676463; + } + } + } + } + + public String getName() { + return this.name; + } + + public int getSizeX() { + return this.sizeX; + } + + public int getSizeY() { + return this.sizeY; + } + + public int getSizeZ() { + return this.sizeZ; + } + + public BlockState[] getPalette() { + return this.palette; + } + + public Item[] getPaletteItems() { + return this.paletteItems; + } + + public int[] getPaletteColors() { + return this.paletteColors; + } + + public int[] getIndices() { + return this.indices; + } + + public int getBlockCount() { + return this.blockCount; + } + + public Object2IntMap getRequiredMaterials() { + return this.requiredMaterials; + } + + public int getUnknownStates() { + return this.unknownStates; + } + + public String getUnknownExample() { + return this.unknownExample; + } +} diff --git a/src/main/java/defpackage/aky.java b/src/main/java/defpackage/aky.java new file mode 100644 index 0000000..b1e8054 --- /dev/null +++ b/src/main/java/defpackage/aky.java @@ -0,0 +1,32 @@ +package defpackage; + +final class aky { + int unknown; + String example = ""; + + aky() { + } + + void record(String var1) { + int var2 = 1207431835; + + while (true) { + switch (var2) { + case -284782674: + this.example = var1; + var2 = 668792669; + break; + case 668792669: + return; + case 1207431835: + default: + this.unknown += 1; + if (this.example.isEmpty()) { + var2 = -284782674; + } else { + var2 = 668792669; + } + } + } + } +} diff --git a/src/main/java/defpackage/akz.java b/src/main/java/defpackage/akz.java new file mode 100644 index 0000000..b6c7908 --- /dev/null +++ b/src/main/java/defpackage/akz.java @@ -0,0 +1,911 @@ +package defpackage; + +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Optional; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.NbtAccounter; +import net.minecraft.nbt.NbtIo; +import net.minecraft.resources.Identifier; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.Property; + +public final class akz { + public static final String DIRECTORY_NAME = "schematics"; + public static final String LITEMATIC_EXTENSION = ".litematic"; + public static final String SPONGE_EXTENSION = ".schem"; + public static final String STRUCTURE_EXTENSION = ".nbt"; + private static final long MAX_VOLUME = 8388608L; + private static final int GZIP_FIRST_BYTE = 31; + private static final int GZIP_SECOND_BYTE = 139; + private static final int MIN_PALETTE_BITS = 2; + private static final int LONG_BITS = 64; + private static final int VARINT_PAYLOAD_BITS = 7; + private static final int VARINT_PAYLOAD_MASK = 127; + private static final int VARINT_CONTINUATION_MASK = 128; + private static final int PROPERTY_START = 91; + private static final int PROPERTY_END = 93; + private static final String PROPERTY_SEPARATOR = ","; + private static final String PROPERTY_ASSIGN = "="; + private static final String KEY_REGIONS = "Regions"; + private static final String KEY_POSITION = "Position"; + private static final String KEY_SIZE = "Size"; + private static final String KEY_BLOCK_STATE_PALETTE = "BlockStatePalette"; + private static final String KEY_BLOCK_STATES = "BlockStates"; + private static final String KEY_METADATA = "Metadata"; + private static final String KEY_NAME = "Name"; + private static final String KEY_PROPERTIES = "Properties"; + private static final String KEY_SCHEMATIC = "Schematic"; + private static final String KEY_BLOCKS = "Blocks"; + private static final String KEY_PALETTE = "Palette"; + private static final String KEY_PALETTE_LOWER = "palette"; + private static final String KEY_PALETTES_LOWER = "palettes"; + private static final String KEY_BLOCKS_LOWER = "blocks"; + private static final String KEY_SIZE_LOWER = "size"; + private static final String KEY_POS_LOWER = "pos"; + private static final String KEY_STATE_LOWER = "state"; + private static final String KEY_DATA = "Data"; + private static final String KEY_BLOCK_DATA = "BlockData"; + private static final String KEY_WIDTH = "Width"; + private static final String KEY_HEIGHT = "Height"; + private static final String KEY_LENGTH = "Length"; + private static final String AXIS_X = "x"; + private static final String AXIS_Y = "y"; + private static final String AXIS_Z = "z"; + private static final String ERROR_UNKNOWN_FORMAT = "Unsupported schematic format: "; + private static final String ERROR_EMPTY = "Schematic contains no blocks: "; + private static final String ERROR_TOO_LARGE = "Schematic is too large: "; + private static final String ERROR_MALFORMED = "Malformed schematic: "; + + private akz() { + } + + public static File directory() { + File var0 = null; + int var1 = -1236173895; + + while (true) { + switch (var1) { + case -1236173895: + default: + var0 = new File(bz.DIRECTORY, "schematics"); + if (!var0.exists()) { + var1 = -971176486; + } else { + var1 = -1161578854; + } + break; + case -1161578854: + return var0; + case -971176486: + if (!var0.mkdirs()) { + var1 = 317344179; + } else { + var1 = -1161578854; + } + break; + case 317344179: + return var0; + } + } + } + + public static List list() { + File[] var0 = null; + ArrayList var1 = null; + File[] var2 = null; + int var3 = 0; + int var4 = 0; + Object var5 = null; + int var6 = 84688211; + + while (true) { + switch (var6) { + case -1457095570: + return List.of(); + case -1367351635: + var1 = new ArrayList(var0.length); + var2 = var0; + var3 = var2.length; + var4 = 0; + var6 = -221389284; + break; + case -618125611: + var5 = var2[var4]; + if (var5.isFile()) { + var6 = 1417223054; + } else { + var6 = 85273709; + } + break; + case -221389284: + if (var4 < var3) { + var6 = -618125611; + } else { + var6 = 1525862489; + } + break; + case 84688211: + default: + var0 = directory().listFiles(); + if (var0 == null) { + var6 = -1457095570; + } else { + var6 = -1367351635; + } + break; + case 85273709: + var4++; + var6 = -221389284; + break; + case 1417223054: + if (isSupported(var5.getName())) { + var6 = 1870613825; + } else { + var6 = 85273709; + } + break; + case 1525862489: + var1.sort(String::compareToIgnoreCase); + return var1; + case 1870613825: + var1.add(var5.getName()); + var6 = 85273709; + } + } + } + + public static boolean isSupported(String var0) { + String var1 = null; + int var3 = 0; + int var2 = -1036974290; + + while (true) { + switch (var2) { + case -1114556866: + var3 = 0; + var2 = -5467806; + break; + case -1036974290: + default: + var1 = var0.toLowerCase(Locale.ROOT); + if (!var1.endsWith(".litematic")) { + var2 = 1079151947; + } else { + var2 = 1447319076; + } + break; + case -26392490: + if (var1.endsWith(".nbt")) { + var2 = 1447319076; + } else { + var2 = -1114556866; + } + break; + case -5467806: + return (boolean)((var3) != 0); + case 1079151947: + if (!var1.endsWith(".schem")) { + var2 = -26392490; + } else { + var2 = 1447319076; + } + break; + case 1447319076: + var3 = 1; + var2 = -5467806; + } + } + } + + public static akx load(String var0) throws IOException { + File var1 = null; + CompoundTag var2 = null; + String var3 = null; + String var4 = null; + akx var5 = null; + int var6 = -610759571; + + while (true) { + switch (var6) { + case -1947355745: + if (var3.endsWith(".schem")) { + var6 = 71517923; + } else { + var6 = 138779687; + } + break; + case -833172406: + var5 = readStructure(var4, var2); + var6 = 1004792218; + break; + case -610759571: + default: + var1 = new File(directory(), var0); + if (!var1.isFile()) { + var6 = 593832724; + } else { + var6 = -223012095; + } + break; + case -223012095: + var2 = read(var1); + var3 = var0.toLowerCase(Locale.ROOT); + var4 = stripExtension(var0); + if (var3.endsWith(".litematic")) { + var6 = 1644698732; + } else { + var6 = -1947355745; + } + break; + case 71517923: + var5 = readSponge(var4, var2); + var6 = 1004792218; + break; + case 138779687: + if (var3.endsWith(".nbt")) { + var6 = -833172406; + } else { + var6 = 1704504997; + } + break; + case 593832724: + throw new IOException("Unsupported schematic format: " + var0); + case 919275905: + return var5; + case 1004792218: + if (var5.getBlockCount() == 0) { + var6 = 2004336427; + } else { + var6 = 919275905; + } + break; + case 1644698732: + var5 = readLitematic(var4, var2); + var6 = 1004792218; + break; + case 1704504997: + throw new IOException("Unsupported schematic format: " + var0); + case 2004336427: + throw new IOException("Schematic contains no blocks: " + var0); + } + } + } + + private static String stripExtension(String var0) { + int var1 = 0; + String var3 = null; + int var2 = 2061759987; + + while (true) { + switch (var2) { + case -886507848: + return var3; + case 492163804: + var3 = var0.substring(0, var1); + var2 = -886507848; + break; + case 1940237493: + var3 = var0; + var2 = -886507848; + break; + case 2061759987: + default: + var1 = var0.lastIndexOf((-2101059104 | 2101059150) + (-2101059104 & 2101059150)); + if (var1 <= 0) { + var2 = 1940237493; + } else { + var2 = 492163804; + } + } + } + } + + private static CompoundTag read(File var0) throws IOException { + byte[] var1 = Files.readAllBytes(var0.toPath()); + if (var1.length > (-1614036324 | 1614036325) + (-1614036324 & 1614036325) + && (var1[0] & (241939581 ^ -241939326) + ((241939581 & -241939326) << 1)) + == (-59436888 | 59436919) + (-59436888 & 59436919) + && (var1[1] & (435518642 ^ -435518387) + ((435518642 & -435518387) << 1)) + == (-1241131927 | 1241132066) + (-1241131927 & 1241132066)) { + return NbtIo.readCompressed(new ByteArrayInputStream(var1), NbtAccounter.unlimitedHeap()); + } + + try (DataInputStream var2 = new DataInputStream(new ByteArrayInputStream(var1))) { + return NbtIo.read(var2, NbtAccounter.unlimitedHeap()); + } + } + + private static akx readLitematic(String var0, CompoundTag var1) throws IOException { + CompoundTag var2 = (CompoundTag)var1.getCompound("Regions") + .orElseThrow(() -> new IOException("Malformed schematic: " + var0)); + if (var2.keySet().isEmpty()) { + throw new IOException("Schematic contains no blocks: " + var0); + } + + int var3 = 2147483647; + int var4 = 2147483647; + int var5 = 2147483647; + int var6 = -2147483648; + int var7 = -2147483648; + int var8 = -2147483648; + + for (String var10 : var2.keySet()) { + CompoundTag var11 = var2.getCompoundOrEmpty(var10); + int[] var12 = readVector(var11.getCompoundOrEmpty("Position")); + int[] var13 = readVector(var11.getCompoundOrEmpty("Size")); + + for (int var14 = 0; + var14 < 3; + var14++ + ) { + int var15 = Math.abs(var13[var14]); + if (var15 != 0) { + int var16 = var13[var14] < 0 ? var12[var14] + var13[var14] + 1: var12[var14]; + int var17 = var16 + var15 - (1); + switch (var14) { + case 0: + var3 = Math.min(var3, var16); + var6 = Math.max(var6, var17); + break; + case 1: + var4 = Math.min(var4, var16); + var7 = Math.max(var7, var17); + break; + default: + var5 = Math.min(var5, var16); + var8 = Math.max(var8, var17); + } + } + } + } + + if (var3 <= var6 && var4 <= var7 && var5 <= var8) { + int var40 = var6 - var3 + 1; + int var41 = var7 - var4 + 1; + int var42 = var8 - var5 + 1; + int[] var43 = allocate(var0, var40, var41, var42); + ArrayList var44 = new ArrayList(); + var44.add(Blocks.AIR.defaultBlockState()); + aky var45 = new aky(); + + for (String var47 : var2.keySet()) { + CompoundTag var48 = var2.getCompoundOrEmpty(var47); + int[] var18 = readVector(var48.getCompoundOrEmpty("Position")); + int[] var19 = readVector(var48.getCompoundOrEmpty("Size")); + int var20 = Math.abs(var19[0]); + int var21 = Math.abs(var19[1]); + int var22 = Math.abs(var19[2]); + if (var20 != 0 && var21 != 0 && var22 != 0) { + int var23 = var19[0] < 0 + ? var18[0] + + var19[0] + + 1: var18[0]; + int var24 = var19[1] < 0 + ? var18[1] + + var19[1] + + 1: var18[1]; + int var25 = var19[2] < 0 + ? var18[2] + + var19[2] + + 1: var18[2]; + ListTag var26 = var48.getListOrEmpty( + "BlockStatePalette" + ); + int[] var27 = new int[var26.size()]; + + for (int var28 = 0; var28 < var26.size(); var28++) { + var27[var28] = intern(var44, parseState(var26.getCompoundOrEmpty(var28), var45)); + } + + long[] var49 = (long[])var48.getLongArray("BlockStates") + .orElse(null); + if (var49 != null && var27.length != 0) { + int var29 = Math.max( + 2, + (-1544272921 ^ 1544272953) + + ((-1544272921 & 1544272953) << 1) + - Integer.numberOfLeadingZeros(var27.length - ((668625651 ^ -668625650) + ((668625651 & -668625650) << 1))) + ); + long var30 = ((2036823269707734154L ^ -2036823269707734153L) + ((2036823269707734154L & -2036823269707734153L) << 1) << var29) + - ((3467009833631645396L | -3467009833631645395L) + (3467009833631645396L & -3467009833631645395L)); + + for (int var32 = 0; var32 < var21; var32++) { + for (int var33 = 0; var33 < var22; var33++) { + for (int var34 = 0; var34 < var20; var34++) { + int var35 = (int)readPacked(var49, ((long)var32 * var22 + var33) * var20 + var34, var29, var30); + if (var35 >= 0 && var35 < var27.length) { + int var36 = var27[var35]; + if (var36 != 0) { + int var37 = var23 - var3 + var34; + int var38 = var24 - var4 + var32; + int var39 = var25 - var5 + var33; + var43[(var38 * var42 + var39) * var40 + var37] = var36; + } + } + } + } + } + } + } + } + + return new akx( + var0, + var40, + var41, + var42, + var44.toArray(new BlockState[0]), + var43, + var45.unknown, + var45.example + ); + } else { + throw new IOException("Schematic contains no blocks: " + var0); + } + } + + private static akx readSponge(String var0, CompoundTag var1) throws IOException { + CompoundTag var2 = var1.getCompound("Schematic").orElse(var1); + int var3 = var2.getInt("Width") + .orElse((-1033978114 | 1033978114) + (-1033978114 & 1033978114)); + int var4 = var2.getInt("Height") + .orElse((1520154197 | -1520154197) + (1520154197 & -1520154197)); + int var5 = var2.getInt("Length") + .orElse((1205330259 | -1205330259) + (1205330259 & -1205330259)); + CompoundTag var6 = var2.getCompound("Blocks").orElse(var2); + CompoundTag var7 = (CompoundTag)var6.getCompound("Palette") + .orElseThrow(() -> new IOException("Malformed schematic: " + var0)); + byte[] var8 = var6.getByteArray("Data") + .or(() -> var6.getByteArray("BlockData")) + .orElseThrow(() -> new IOException("Malformed schematic: " + var0)); + if (var3 > 0 && var4 > 0 && var5 > 0) { + int var9 = 0; + + for (String var11 : var7.keySet()) { + var9 = Math.max(var9, var7.getInt(var11).orElse((-1400589120 | 1400589120) + (-1400589120 & 1400589120))); + } + + ArrayList var20 = new ArrayList(); + var20.add(Blocks.AIR.defaultBlockState()); + aky var21 = new aky(); + int[] var12 = new int[var9 + 1]; + + for (String var14 : var7.keySet()) { + int var15 = var7.getInt(var14).orElse((866077526 ^ -866077527) + ((866077526 & -866077527) << 1)); + if (var15 >= 0) { + var12[var15] = intern(var20, parseState(var14, var21)); + } + } + + int[] var22 = allocate(var0, var3, var4, var5); + int var23 = ('藨' ^ -34280) + (('藨' & -34280) << 1); + int var24 = var3 * var4 * var5; + + for (int var16 = 0; var16 < var24 && var23 < var8.length; var16++) { + int var17 = 0; + int var18 = 0; + + while (true) { + if (var23 < var8.length) { + byte var19 = var8[var23++]; + var17 |= (var19 & (1884017427 | -1884017300) + (1884017427 & -1884017300)) << var18; + if ((var19 & (213525497 ^ -213525369) + ((213525497 & -213525369) << 1)) != 0) { + var18 += 7; + continue; + } + } + + if (var17 >= 0 && var17 < var12.length) { + var22[var16] = var12[var17]; + } + break; + } + } + + return new akx( + var0, + var3, + var4, + var5, + var20.toArray(new BlockState[0]), + var22, + var21.unknown, + var21.example + ); + } else { + throw new IOException("Malformed schematic: " + var0); + } + } + + private static akx readStructure(String var0, CompoundTag var1) throws IOException { + ListTag var2 = (ListTag)var1.getList("size") + .orElseThrow(() -> new IOException("Malformed schematic: " + var0)); + if (var2.size() < (-1170453188 ^ 1170453191) + ((-1170453188 & 1170453191) << 1)) { + throw new IOException("Malformed schematic: " + var0); + } + + int var3 = var2.getIntOr(0, (-380047815 ^ 380047815) + ((-380047815 & 380047815) << 1)); + int var4 = var2.getIntOr(1, (-1540127248 | 1540127248) + (-1540127248 & 1540127248)); + int var5 = var2.getIntOr(2, (1006541901 | -1006541901) + (1006541901 & -1006541901)); + if (var3 > 0 && var4 > 0 && var5 > 0) { + ListTag var6 = var1.getList("palette") + .orElseGet( + () -> var1.getListOrEmpty("palettes") + .getListOrEmpty((1878930333 | -1878930333) + (1878930333 & -1878930333)) + ); + ArrayList var7 = new ArrayList(); + var7.add(Blocks.AIR.defaultBlockState()); + aky var8 = new aky(); + int[] var9 = new int[var6.size()]; + + for (int var10 = 0; var10 < var6.size(); var10++) { + var9[var10] = intern(var7, parseState(var6.getCompoundOrEmpty(var10), var8)); + } + + int[] var19 = allocate(var0, var3, var4, var5); + ListTag var11 = var1.getListOrEmpty("blocks"); + + for (int var12 = 0; var12 < var11.size(); var12++) { + CompoundTag var13 = var11.getCompoundOrEmpty(var12); + ListTag var14 = var13.getListOrEmpty("pos"); + if (var14.size() >= (1119179102 | -1119179099) + (1119179102 & -1119179099)) { + int var15 = var14.getIntOr( + 0, (218897295 ^ -218897296) + ((218897295 & -218897296) << 1) + ); + int var16 = var14.getIntOr( + 1, (185986839 ^ -185986840) + ((185986839 & -185986840) << 1) + ); + int var17 = var14.getIntOr( + 2, (506593631 ^ -506593632) + ((506593631 & -506593632) << 1) + ); + int var18 = var13.getInt("state") + .orElse((-691089877 | 691089876) + (-691089877 & 691089876)); + if (var15 >= 0 && var16 >= 0 && var17 >= 0 && var15 < var3 && var16 < var4 && var17 < var5 && var18 >= 0 && var18 < var9.length) { + var19[(var16 * var5 + var17) * var3 + var15] = var9[var18]; + } + } + } + + return new akx( + var0, + var3, + var4, + var5, + var7.toArray(new BlockState[0]), + var19, + var8.unknown, + var8.example + ); + } else { + throw new IOException("Malformed schematic: " + var0); + } + } + + private static int[] allocate(String var0, int var1, int var2, int var3) throws IOException { + long var4 = (5596328938273186305L ^ -5596328938273186305L) + ((5596328938273186305L & -5596328938273186305L) << 1); + int var6 = -1322751023; + + while (true) { + switch (var6) { + case -1322751023: + default: + var4 = (long)var1 * var2 * var3; + if (var4 > (-3031054508359246367L | 3031054508359246367L) + (-3031054508359246367L & 3031054508359246367L)) { + var6 = 770019281; + } else { + var6 = -1280623984; + } + break; + case -1280623984: + throw new IOException("Schematic is too large: " + var0); + case 770019281: + if (var4 > (-2515564176032347999L | 2515564176040736607L) + (-2515564176032347999L & 2515564176040736607L)) { + var6 = -1280623984; + } else { + var6 = 2033203079; + } + break; + case 2033203079: + return new int[(int)var4]; + } + } + } + + private static long readPacked(long[] var0, long var1, int var3, long var4) { + long var6 = (2582013041537887533L ^ -2582013041537887533L) + ((2582013041537887533L & -2582013041537887533L) << 1); + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 1149529078; + + while (true) { + switch (var11) { + case -1931237984: + return (var0[var8] >>> var10 | var0[var9] << (1615513504 | -1615513440) + (1615513504 & -1615513440) - var10) & var4; + case -1818460058: + return (4011742493089775685L | -4011742493089775685L) + (4011742493089775685L & -4011742493089775685L); + case -702199497: + if (var8 == var9) { + var11 = -531719405; + } else { + var11 = -1931237984; + } + break; + case -538301716: + if (var9 >= var0.length) { + var11 = -1818460058; + } else { + var11 = -702199497; + } + break; + case -531719405: + return var0[var8] >>> var10 & var4; + case 1149529078: + default: + var6 = var1 * var3; + var8 = (int)(var6 >> (33857251 ^ -33857245) + ((33857251 & -33857245) << 1)); + var9 = (int)( + (var1 + (7221775370768603775L | -7221775370768603774L) + (7221775370768603775L & -7221775370768603774L)) * var3 + - ((5946904086675760164L | -5946904086675760163L) + (5946904086675760164L & -5946904086675760163L)) + >> (-6315617 ^ 6315623) + ((-6315617 & 6315623) << 1) + ); + var10 = (int)(var6 & (-1119078989201440766L ^ 1119078989201440829L) + ((-1119078989201440766L & 1119078989201440829L) << 1)); + if (var8 >= 0) { + var11 = -538301716; + } else { + var11 = -1818460058; + } + } + } + } + + private static int intern(List var0, BlockState var1) { + int var2 = 0; + int var3 = -1568663219; + + while (true) { + switch (var3) { + case -2087564978: + if (var2 < var0.size()) { + var3 = 1521553459; + } else { + var3 = -1645050893; + } + break; + case -1645050893: + var0.add(var1); + return var0.size() - (1); + case -1568663219: + default: + var2 = 0; + var3 = -2087564978; + break; + case -534893003: + return var2; + case 445869901: + var2++; + var3 = -2087564978; + break; + case 1521553459: + if (var0.get(var2) == var1) { + var3 = -534893003; + } else { + var3 = 445869901; + } + } + } + } + + private static int[] readVector(CompoundTag var0) { + int[] var10000 = new int[3]; + var10000[0] = var0.getInt( + "x" + ) + .orElse((46840852 | -46840852) + (46840852 & -46840852)); + var10000[1] = var0.getInt( + "y" + ) + .orElse((-1699962640 ^ 1699962640) + ((-1699962640 & 1699962640) << 1)); + var10000[2] = var0.getInt("z") + .orElse((-1748564749 | 1748564749) + (-1748564749 & 1748564749)); + return var10000; + } + + private static BlockState parseState(CompoundTag var0, aky var1) { + Block var2 = null; + BlockState var3 = null; + Optional var4 = null; + CompoundTag var5 = null; + Iterator var6 = null; + String var7 = null; + Property var8 = null; + int var9 = -1586961267; + + while (true) { + switch (var9) { + case -1586961267: + default: + var2 = resolveBlock(var0.getString("Name").orElse(""), var1); + var3 = var2.defaultBlockState(); + var4 = var0.getCompound("Properties"); + if (var4.isEmpty()) { + var9 = 1512056218; + } else { + var9 = 101254310; + } + break; + case -1023071980: + if (var6.hasNext()) { + var9 = 1343257022; + } else { + var9 = -444834500; + } + break; + case -444834500: + return var3; + case -284969797: + var3 = applyProperty(var3, var8, var5.getString(var7).orElse("")); + var9 = 33395350; + break; + case 33395350: + var9 = -1023071980; + break; + case 101254310: + var5 = (CompoundTag)var4.get(); + var6 = var5.keySet().iterator(); + var9 = -1023071980; + break; + case 1343257022: + var7 = (String)var6.next(); + var8 = var2.getStateDefinition().getProperty(var7); + if (var8 != null) { + var9 = -284969797; + } else { + var9 = 33395350; + } + break; + case 1512056218: + return var3; + } + } + } + + private static BlockState parseState(String var0, aky var1) { + int var2 = 0; + Block var3 = null; + BlockState var4 = null; + int var5 = 0; + String[] var6 = null; + int var7 = 0; + int var8 = 0; + Object var9 = null; + int var10 = 0; + Property var11 = null; + int var12 = 1038524668; + + while (true) { + switch (var12) { + case -1934569024: + var9 = var6[var8]; + var10 = var9.indexOf("="); + if (var10 <= 0) { + var12 = -109356981; + } else { + var12 = -1282306153; + } + break; + case -1282306153: + var11 = var3.getStateDefinition().getProperty(var9.substring(0, var10).trim()); + if (var11 != null) { + var12 = 1932784375; + } else { + var12 = -158635532; + } + break; + case -1092926112: + return var4; + case -1067795797: + return resolveBlock(var0, var1).defaultBlockState(); + case -158635532: + var8++; + var12 = 1881216866; + break; + case -109356981: + var12 = -158635532; + break; + case 27726328: + return var4; + case 1038524668: + default: + var2 = var0.indexOf((-235199241 ^ 235199332) + ((-235199241 & 235199332) << 1)); + if (var2 < 0) { + var12 = -1067795797; + } else { + var12 = 1082785223; + } + break; + case 1082785223: + var3 = resolveBlock(var0.substring(0, var2), var1); + var4 = var3.defaultBlockState(); + var5 = var0.lastIndexOf((-844114096 ^ 844114189) + ((-844114096 & 844114189) << 1)); + if (var5 <= var2) { + var12 = -1092926112; + } else { + var12 = 1630098811; + } + break; + case 1630098811: + var6 = var0.substring(var2 + 1, var5) + .split(","); + var7 = var6.length; + var8 = 0; + var12 = 1881216866; + break; + case 1881216866: + if (var8 < var7) { + var12 = -1934569024; + } else { + var12 = 27726328; + } + break; + case 1932784375: + var4 = applyProperty(var4, var11, var9.substring(var10 + 1).trim()); + var12 = -158635532; + } + } + } + + private static > BlockState applyProperty(BlockState var0, Property var1, String var2) { + return var1.getValue(var2).map(var2x -> (BlockState)var0.setValue(var1, var2x)).orElse(var0); + } + + private static Block resolveBlock(String var0, aky var1) { + String var2 = null; + Identifier var3 = null; + Block var4 = null; + int var5 = -1263331285; + + while (true) { + switch (var5) { + case -1831515976: + var4 = (Block)BuiltInRegistries.BLOCK.getOptional(var3).orElse(null); + if (var4 == null) { + var5 = -1210071312; + } else { + var5 = -1190556947; + } + break; + case -1263331285: + default: + var2 = var0.trim(); + var3 = Identifier.tryParse(var2); + if (var3 == null) { + var5 = 710627491; + } else { + var5 = -1831515976; + } + break; + case -1210071312: + var1.record(var2); + return Blocks.AIR; + case -1190556947: + return var4; + case 710627491: + var1.record(var2); + return Blocks.AIR; + } + } + } +} diff --git a/src/main/java/defpackage/al.java b/src/main/java/defpackage/al.java new file mode 100644 index 0000000..e2083fa --- /dev/null +++ b/src/main/java/defpackage/al.java @@ -0,0 +1,85 @@ +package defpackage; + +import java.io.IOException; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.components.toasts.SystemToast; +import net.minecraft.client.gui.components.toasts.SystemToast.SystemToastId; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.network.chat.Component; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.item.ItemStack; +import org.luaj.vm2.Globals; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.lib.jse.CoerceJavaToLua; + +public class al { + private static ah data = new ah( + (boolean)(((0)) != 0), + 0.0F, + Minecraft.getInstance().player, + InteractionHand.MAIN_HAND, + (boolean)(((0)) != 0), + t.deltaTime, + 0.0F, + 0.0F, + 0.0F, + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + ItemStack.EMPTY + ); + private final Globals globals; + private final LuaValue chunk; + private boolean canRun = (boolean)(((1)) != 0); + private final bq mInstance = new bq(); + private final bn iInstance = new bn(); + private final bo jsItemsInstance = new bo(); + private final bp jsTagsInstance = new bp(); + private final br pInstance = new br(); + private final bm easingsInstance = new bm(); + private final bi keyBindManagerInstance = new bi(); + + public al(String var1) throws IOException { + this.globals = ak.getInstance().sharedGlobals; + this.globals.set("M", CoerceJavaToLua.coerce(this.mInstance)); + this.globals.set("I", CoerceJavaToLua.coerce(this.iInstance)); + this.globals.set("Items", CoerceJavaToLua.coerce(this.jsItemsInstance)); + this.globals.set("Tags", CoerceJavaToLua.coerce(this.jsTagsInstance)); + this.globals.set("P", CoerceJavaToLua.coerce(this.pInstance)); + this.globals.set("Easings", CoerceJavaToLua.coerce(this.easingsInstance)); + this.globals + .set( + "KeyBindManager", + CoerceJavaToLua.coerce(this.keyBindManagerInstance) + ); + this.globals.set("registry", CoerceJavaToLua.coerce(af.registry)); + this.globals + .set("animator", CoerceJavaToLua.coerce(af.modelPartAnimator)); + this.globals.set("debugger", CoerceJavaToLua.coerce(af.debugTextRenderer)); + this.globals.set("data", CoerceJavaToLua.coerce(data)); + this.chunk = this.globals.load(var1); + } + + public void executeModel(ah var1, ItemStack var2, AbstractClientPlayer var3, ao var4) { + if (this.canRun) { + try { + data.set(var1); + this.chunk.call(); + } catch (Exception var6) { + System.err.println("[HoldMyItems] Lua runtime error: " + var6.getMessage()); + SystemToast.addOrUpdate( + Minecraft.getInstance().gui.toastManager(), + SystemToastId.PACK_LOAD_FAILURE, + Component.nullToEmpty( + "HMI Lua Runtime error!" + ), + Component.nullToEmpty(var6.getMessage()) + ); + this.canRun = (boolean)(((0)) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/ala.java b/src/main/java/defpackage/ala.java new file mode 100644 index 0000000..b901fb7 --- /dev/null +++ b/src/main/java/defpackage/ala.java @@ -0,0 +1,634 @@ +package defpackage; + +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; + +public final class ala { + public static final ala INSTANCE = new ala(); + private static final String LOAD_FAILURE = "schematic {} load failed"; + private static final String LOADER_THREAD = "evo-schematic-loader"; + private static final String MESSAGE_LOADED = "Loaded %s (%dx%dx%d, %d blocks)"; + private static final String MESSAGE_UNKNOWN = "%s uses %d block types this version does not know (%s)"; + private static final String UNKNOWN_PALETTE = "schematic {} unknown block {}"; + private static final String MESSAGE_BUSY = "Another schematic is still loading"; + private static final String MESSAGE_NONE = "No schematic loaded"; + private static final String MESSAGE_CLEARED = "Schematic cleared"; + private static final String MESSAGE_PLACED = "Schematic anchored at %d %d %d"; + private static final long MIN_SCAN_INTERVAL_MS = 100L; + private static final int FLASH_CAPACITY = 128; + private volatile akx data; + private volatile alf placement; + private volatile alg scan = alg.EMPTY; + private final alh scanner = new alh(); + private final AtomicBoolean loading = new AtomicBoolean(); + private final long[] flashPositions = new long[128]; + private final long[] flashTimes = new long[128]; + private volatile int flashCount; + private volatile long placementTime = System.currentTimeMillis(); + private int flashCursor; + private boolean suppressFlashes = (boolean)(((1)) != 0); + private long lastScanTime; + private long lastViewerPos = (149203377153083419L | 9074168659701692389L) + (149203377153083419L & 9074168659701692389L); + private volatile boolean dirty = (boolean)(((1)) != 0); + + private ala() { + } + + public boolean isLoading() { + return this.loading.get(); + } + + public List files() { + return akz.list(); + } + + public void load(String var1) { + Thread var2 = null; + int var3 = -1977043096; + + while (true) { + switch (var3) { + case -1977043096: + default: + if (!this.loading + .compareAndSet( + (boolean)((((0)) != 0)), (boolean)((((1941589983 | -1941589982) + (1941589983 & -1941589982)) + ) != 0))) { + var3 = 1822827389; + } else { + var3 = 89989515; + } + break; + case 89989515: + var2 = new Thread( + () -> { + boolean var7 = false /* VF: Semaphore variable */; + + label39: { + try { + var7 = true; + akx var2x = akz.load(var1); + Minecraft.getInstance().execute(() -> this.applyLoaded(var2x)); + var7 = false; + break label39; + } catch (Exception var8) { + id.error( + Cif.STORAGE, + "schematic {} load failed", + var1, + var8 + ); + String var3x = var8.getMessage(); + Minecraft.getInstance().execute(() -> { + String var2xx = null; + int var1xx = 1961596704; + + while (true) { + switch (var1xx) { + case -2063460865: + var2xx = "schematic {} load failed"; + var1xx = 422344329; + break; + case -1498120304: + var2xx = var3x; + var1xx = 422344329; + break; + case 422344329: + ape.displayError(var2xx); + return; + case 1961596704: + default: + if (var3x == null) { + var1xx = -2063460865; + } else { + var1xx = -1498120304; + } + } + } + }); + var7 = false; + } finally { + if (var7) { + this.loading.set((boolean)((((675627161 ^ -675627161) + ((675627161 & -675627161) << 1))) != 0)); + } + } + + this.loading.set((boolean)((((-1504445016 | 1504445016) + (-1504445016 & 1504445016))) != 0)); + return; + } + + this.loading.set((boolean)((((1949626524 | -1949626524) + (1949626524 & -1949626524))) != 0)); + }, + "evo-schematic-loader" + ); + var2.setDaemon((boolean)((((40787278 | -40787277) + (40787278 & -40787277))) != 0)); + var2.start(); + return; + case 1822827389: + ape.displayWarning( + "Another schematic is still loading" + ); + return; + } + } + } + + private void applyLoaded(akx var1) { + int var2 = 1499723188; + + while (true) { + switch (var2) { + case -1910961604: + id.warn( + Cif.STORAGE, + "schematic {} unknown block {}", + var1.getName(), + var1.getUnknownExample() + ); + String var3 = "%s uses %d block types this version does not know (%s)"; + Object[] var4 = new Object[3]; + var4[0] = var1.getName(); + var4[1] = var1.getUnknownStates(); + var4[2] = var1.getUnknownExample(); + ape.displayWarning(var3.formatted(var4)); + var2 = -644377594; + break; + case -644377594: + return; + case 1499723188: + default: + this.data = var1; + this.placement = new alf(var1, this.anchor(), Rotation.NONE, Mirror.NONE); + this.scan = alg.EMPTY; + this.restartAnimation(); + String var10000 = "Loaded %s (%dx%dx%d, %d blocks)"; + Object[] var10001 = new Object[5]; + var10001[0] = var1.getName(); + var10001[1] = var1.getSizeX(); + var10001[2] = var1.getSizeY(); + var10001[3] = var1.getSizeZ(); + var10001[4] = var1.getBlockCount(); + ape.displayInfo(var10000.formatted(var10001)); + if (var1.getUnknownStates() > 0) { + var2 = -1910961604; + } else { + var2 = -644377594; + } + } + } + } + + private BlockPos anchor() { + LocalPlayer var1 = null; + BlockPos var3 = null; + int var2 = -702374706; + + while (true) { + switch (var2) { + case -741044253: + var3 = var1.blockPosition(); + var2 = 1778242348; + break; + case -702374706: + default: + var1 = Minecraft.getInstance().player; + if (var1 == null) { + var2 = 979427701; + } else { + var2 = -741044253; + } + break; + case 979427701: + var3 = BlockPos.ZERO; + var2 = 1778242348; + break; + case 1778242348: + return var3; + } + } + } + + public boolean placeAt(BlockPos var1) { + alf var2 = null; + int var3 = -1494955337; + + while (true) { + switch (var3) { + case -1494955337: + default: + var2 = this.placement; + if (var2 == null) { + var3 = 585047289; + } else { + var3 = 428701724; + } + break; + case 428701724: + this.placement = var2.withOrigin(var1); + this.restartAnimation(); + String var10000 = "Schematic anchored at %d %d %d"; + Object[] var10001 = new Object[3]; + var10001[0] = var1.getX(); + var10001[1] = var1.getY(); + var10001[2] = var1.getZ(); + ape.displayInfo(var10000.formatted(var10001)); + return (boolean)(((1)) != 0); + case 585047289: + ape.displayWarning("No schematic loaded"); + return (boolean)(((0)) != 0); + } + } + } + + public boolean placeAtPlayer() { + return this.placeAt(this.anchor()); + } + + public boolean move(int var1, int var2, int var3) { + alf var4 = null; + int var5 = -872266571; + + while (true) { + switch (var5) { + case -2004453796: + return this.placeAt(var4.getOrigin().offset(var1, var2, var3)); + case -872266571: + default: + var4 = this.placement; + if (var4 == null) { + var5 = 1026914983; + } else { + var5 = -2004453796; + } + break; + case 1026914983: + ape.displayWarning("No schematic loaded"); + return (boolean)(((0)) != 0); + } + } + } + + public boolean nudge(int var1, int var2, int var3) { + alf var4 = null; + int var5 = 1546486184; + + while (true) { + switch (var5) { + case 763721848: + this.placement = var4.withOrigin(var4.getOrigin().offset(var1, var2, var3)); + this.restartAnimation(); + return (boolean)(((1)) != 0); + case 1347926594: + return (boolean)(((0)) != 0); + case 1546486184: + } + + var4 = this.placement; + if (var4 == null) { + var5 = 1347926594; + } else { + var5 = 763721848; + } + } + } + + public void setRotation(Rotation var1) { + alf var2 = null; + int var3 = -927706460; + + while (true) { + switch (var3) { + case -1990453207: + if (var2.getRotation() != var1) { + var3 = -1401645785; + } else { + var3 = 1623104446; + } + break; + case -1401645785: + this.placement = var2.withRotation(var1); + this.restartAnimation(); + var3 = 1623104446; + break; + case -927706460: + default: + var2 = this.placement; + if (var2 != null) { + var3 = -1990453207; + } else { + var3 = 1623104446; + } + break; + case 1623104446: + return; + } + } + } + + public void setMirror(Mirror var1) { + alf var2 = null; + int var3 = -614645668; + + while (true) { + switch (var3) { + case -614645668: + default: + var2 = this.placement; + if (var2 != null) { + var3 = -108879305; + } else { + var3 = 688790177; + } + break; + case -108879305: + if (var2.getMirror() != var1) { + var3 = 457811644; + } else { + var3 = 688790177; + } + break; + case 457811644: + this.placement = var2.withMirror(var1); + this.restartAnimation(); + var3 = 688790177; + break; + case 688790177: + return; + } + } + } + + public void clear() { + this.data = null; + this.placement = null; + this.scan = alg.EMPTY; + this.restartAnimation(); + ape.displayInfo("Schematic cleared"); + } + + public void discardScan() { + this.scan = alg.EMPTY; + this.restartAnimation(); + } + + public void markDirty() { + this.dirty = (boolean)(((1)) != 0); + } + + private void restartAnimation() { + this.placementTime = System.currentTimeMillis(); + this.flashCount = 0; + this.flashCursor = 0; + this.suppressFlashes = (boolean)(((1)) != 0); + this.markDirty(); + } + + private void collectFlashes(alg var1, alg var2, BlockPos var3) { + long var4 = (-7594710767000068876L | 7594710767000068876L) + (-7594710767000068876L & 7594710767000068876L); + int var6 = 0; + long[] var7 = null; + byte[] var8 = null; + int var9 = 0; + long var10 = (6574922429659541727L ^ -6574922429659541727L) + ((6574922429659541727L & -6574922429659541727L) << 1); + int var12 = -533816068; + + while (true) { + switch (var12) { + case -2065366608: + var12 = 2142431343; + break; + case -1516866700: + if (var1.getCount() == 0) { + var12 = 1542436386; + } else { + var12 = 1292411532; + } + break; + case -1113472304: + if (var8[var9] == (-1888805881 ^ 1888805883) + ((-1888805881 & 1888805883) << 1)) { + var12 = 48983363; + } else { + var12 = 1032685735; + } + break; + case -953513873: + var12 = 2142431343; + break; + case -649771812: + if (var9 < var1.getCount()) { + var12 = -1113472304; + } else { + var12 = -271390739; + } + break; + case -533816068: + default: + if (this.suppressFlashes) { + var12 = 1051414178; + } else { + var12 = -1516866700; + } + break; + case -271390739: + return; + case 48983363: + var12 = 2142431343; + break; + case 455948544: + if (Math.abs(BlockPos.getZ(var10) - var3.getZ()) > var6) { + var12 = -2065366608; + } else { + var12 = 819513067; + } + break; + case 819513067: + this.flashPositions[this.flashCursor] = var10; + this.flashTimes[this.flashCursor] = var4; + this.flashCursor = (this.flashCursor + (-671285854 | 671285855) + (-671285854 & 671285855)) + % ((-1966434086 | 1966434214) + (-1966434086 & 1966434214)); + this.flashCount = Math.min( + 128, this.flashCount + (-1602677539 ^ 1602677540) + ((-1602677539 & 1602677540) << 1) + ); + var12 = 2142431343; + break; + case 1032685735: + var10 = var7[var9]; + if (var2.getOccupied().contains(var10)) { + var12 = -953513873; + } else { + var12 = 1986011521; + } + break; + case 1051414178: + this.suppressFlashes = (boolean)(((0)) != 0); + return; + case 1292411532: + var4 = System.currentTimeMillis(); + var6 = var2.getRadius(); + var7 = var1.getPositions(); + var8 = var1.getKinds(); + var9 = 0; + var12 = -649771812; + break; + case 1542436386: + return; + case 1616737149: + if (Math.abs(BlockPos.getY(var10) - var3.getY()) <= var6) { + var12 = 455948544; + } else { + var12 = 2142431343; + } + break; + case 1986011521: + if (Math.abs(BlockPos.getX(var10) - var3.getX()) <= var6) { + var12 = 1616737149; + } else { + var12 = 2142431343; + } + break; + case 2142431343: + var9++; + var12 = -649771812; + } + } + } + + public void tick(Minecraft var1, int var2, int var3, boolean var4, boolean var5, long var6) { + alf var8 = null; + ClientLevel var9 = null; + LocalPlayer var10 = null; + BlockPos var11 = null; + long var12 = (-4842195934151496304L ^ 4842195934151496304L) + ((-4842195934151496304L & 4842195934151496304L) << 1); + long var14 = (-7069608710986953835L ^ 7069608710986953835L) + ((-7069608710986953835L & 7069608710986953835L) << 1); + int var16 = 0; + alg var17 = null; + alg var18 = null; + int var20 = 0; + int var19 = 311553983; + + while (true) { + switch (var19) { + case -1913934924: + if (var14 - this.lastScanTime < var6) { + var19 = -1777632213; + } else { + var19 = 505443410; + } + break; + case -1777632213: + return; + case -1723624886: + if (var9 != null) { + var19 = 1427661616; + } else { + var19 = -1425876527; + } + break; + case -1523509597: + return; + case -1425876527: + return; + case -1249717588: + if (var16 == 0) { + var19 = -1913934924; + } else { + var19 = 505443410; + } + break; + case 311553983: + default: + var8 = this.placement; + var9 = var1.level; + var10 = var1.player; + if (var8 != null) { + var19 = -1723624886; + } else { + var19 = -1425876527; + } + break; + case 505443410: + if (var14 - this.lastScanTime < (-1678120728680006160L ^ 1678120728680006260L) + ((-1678120728680006160L & 1678120728680006260L) << 1)) { + var19 = -1523509597; + } else { + var19 = 1052108613; + } + break; + case 839650677: + var11 = var10.blockPosition(); + var12 = var11.asLong(); + var14 = System.currentTimeMillis(); + if (var12 != this.lastViewerPos) { + var19 = 969581498; + } else { + var19 = 1607673505; + } + break; + case 969581498: + var20 = 1; + var19 = 1731815100; + break; + case 1052108613: + this.lastScanTime = var14; + this.lastViewerPos = var12; + this.dirty = (boolean)(((0)) != 0); + var17 = this.scan; + var18 = this.scanner.scan(var9, var11, var8, var2, var3, var4, var5); + this.collectFlashes(var17, var18, var11); + this.scan = var18; + return; + case 1427661616: + if (var10 == null) { + var19 = -1425876527; + } else { + var19 = 839650677; + } + break; + case 1607673505: + var20 = 0; + var19 = 1731815100; + break; + case 1731815100: + var16 = var20; + if (!this.dirty) { + var19 = -1249717588; + } else { + var19 = 505443410; + } + } + } + } + + public akx getData() { + return this.data; + } + + public alf getPlacement() { + return this.placement; + } + + public alg getScan() { + return this.scan; + } + + public long[] getFlashPositions() { + return this.flashPositions; + } + + public long[] getFlashTimes() { + return this.flashTimes; + } + + public int getFlashCount() { + return this.flashCount; + } + + public long getPlacementTime() { + return this.placementTime; + } +} diff --git a/src/main/java/defpackage/alb.java b/src/main/java/defpackage/alb.java new file mode 100644 index 0000000..98cb668 --- /dev/null +++ b/src/main/java/defpackage/alb.java @@ -0,0 +1,27 @@ +package defpackage; + +import net.minecraft.core.Direction; + +/* JADX INFO: loaded from: evovis-dec.jar:alb.class */ +/* synthetic */ class alb { + static final /* synthetic */ int[] $SwitchMap$net$minecraft$core$Direction = new int[Direction.values().length]; + + static { + try { + $SwitchMap$net$minecraft$core$Direction[Direction.UP.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$net$minecraft$core$Direction[Direction.DOWN.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$net$minecraft$core$Direction[Direction.NORTH.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$net$minecraft$core$Direction[Direction.SOUTH.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + } +} diff --git a/src/main/java/defpackage/alc.java b/src/main/java/defpackage/alc.java new file mode 100644 index 0000000..448439c --- /dev/null +++ b/src/main/java/defpackage/alc.java @@ -0,0 +1,37 @@ +package defpackage; + +import net.minecraft.client.resources.model.geometry.BakedQuad; +import net.minecraft.core.Direction; + +public final class alc { + public static final alc EMPTY = new alc( + new BakedQuad[0], + new Direction[0], + new int[0] + ); + private final BakedQuad[] quads; + private final Direction[] cullFaces; + private final int[] colors; + + private alc(BakedQuad[] var1, Direction[] var2, int[] var3) { + this.quads = var1; + this.cullFaces = var2; + this.colors = var3; + } + + public int size() { + return this.quads.length; + } + + public BakedQuad quad(int var1) { + return this.quads[var1]; + } + + public Direction cullFace(int var1) { + return this.cullFaces[var1]; + } + + public int color(int var1) { + return this.colors[var1]; + } +} diff --git a/src/main/java/defpackage/ald.java b/src/main/java/defpackage/ald.java new file mode 100644 index 0000000..961cdd1 --- /dev/null +++ b/src/main/java/defpackage/ald.java @@ -0,0 +1,305 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraft.client.color.block.BlockTintSource; +import net.minecraft.client.renderer.block.dispatch.BlockStateModel; +import net.minecraft.client.renderer.block.dispatch.BlockStateModelPart; +import net.minecraft.client.resources.model.geometry.BakedQuad; +import net.minecraft.client.resources.model.geometry.BakedQuad.MaterialInfo; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.state.BlockState; + +public final class ald { + public static final int OPAQUE_WHITE = 16777215; + private static final String BAKE_FAILURE = "schematic model bake failed for {}"; + private static final long MODEL_SEED = 42L; + private static final int CHANNEL_MASK = 255; + private static final int RED_SHIFT = 16; + private static final int GREEN_SHIFT = 8; + private static final float SHADE_TOP = 1.0F; + private static final float SHADE_BOTTOM = 0.5F; + private static final float SHADE_NORTH_SOUTH = 0.8F; + private static final float SHADE_EAST_WEST = 0.6F; + private final alf placement; + private final alc[] cache; + + public ald(alf var1) { + this.placement = var1; + this.cache = new alc[var1.getData().getPalette().length]; + } + + public boolean matches(alf var1) { + int var3 = 0; + int var2 = -434016279; + + while (true) { + switch (var2) { + case -917185623: + var3 = 0; + var2 = 811981304; + break; + case -513546741: + var3 = 1; + var2 = 811981304; + break; + case -434016279: + default: + if (this.placement == var1) { + var2 = -513546741; + } else { + var2 = -917185623; + } + break; + case 811981304: + return (boolean)((var3) != 0); + } + } + } + + public alc get(int var1) { + alc var2 = null; + alc var3 = null; + int var4 = -394961232; + + while (true) { + switch (var4) { + case -1510408537: + return var2; + case -394961232: + default: + var2 = this.cache[var1]; + if (var2 != null) { + var4 = -1510408537; + } else { + var4 = 451376391; + } + break; + case 451376391: + var3 = this.bake(var1); + this.cache[var1] = var3; + return var3; + } + } + } + + private alc bake(int var1) { + BlockState var2 = this.placement.transform(this.placement.getData().getPalette()[var1]); + Minecraft var3 = Minecraft.getInstance(); + + try { + BlockStateModel var4 = var3.getModelManager().getBlockStateModelSet().get(var2); + if (var4 == null) { + return alc.EMPTY; + } + + ArrayList var5 = new ArrayList(); + var4.collectParts(RandomSource.create((-5403640272350476500L ^ 5403640272350476542L) + ((-5403640272350476500L & 5403640272350476542L) << 1)), var5); + ArrayList var6 = new ArrayList(); + ArrayList var7 = new ArrayList(); + + for (BlockStateModelPart var9 : var5) { + collect(var9.getQuads(null), null, var6, var7); + Direction[] var10 = Direction.values(); + int var11 = var10.length; + + for (int var12 = 0; var12 < var11; var12++) { + Direction var13 = var10[var12]; + collect(var9.getQuads(var13), var13, var6, var7); + } + } + + if (var6.isEmpty()) { + return alc.EMPTY; + } + + int[] var15 = new int[var6.size()]; + + for (int var16 = 0; var16 < var6.size(); var16++) { + var15[var16] = this.resolveColor(var3, var2, (BakedQuad)var6.get(var16)); + } + + return new alc( + var6.toArray(new BakedQuad[0]), + var7.toArray(new Direction[0]), + var15 + ); + } catch (Exception var14) { + id.warn( + Cif.RENDER, + "schematic model bake failed for {}", + var2, + var14 + ); + return alc.EMPTY; + } + } + + private static void collect(List var0, Direction var1, List var2, List var3) { + Iterator var4 = null; + Object var5 = null; + int var6 = -1466336632; + + while (true) { + switch (var6) { + case -1850049190: + if (var4.hasNext()) { + var6 = -395078856; + } else { + var6 = 1420553783; + } + break; + case -1466336632: + default: + if (var0 != null) { + var6 = 270317737; + } else { + var6 = 475205509; + } + break; + case -1358904837: + var4 = var0.iterator(); + var6 = -1850049190; + break; + case -395078856: + var5 = (BakedQuad)var4.next(); + var2.add(var5); + var3.add(var1); + var6 = -1850049190; + break; + case 270317737: + if (var0.isEmpty()) { + var6 = 475205509; + } else { + var6 = -1358904837; + } + break; + case 475205509: + return; + case 1420553783: + return; + } + } + } + + private int resolveColor(Minecraft var1, BlockState var2, BakedQuad var3) { + int var4 = 0; + MaterialInfo var5 = null; + BlockTintSource var6 = null; + BlockPos var7 = null; + int var9 = 0; + int var10 = 0; + int var8 = 2017260139; + + while (true) { + switch (var8) { + case -1731093733: + var6 = var1.getBlockColors().getTintSource(var2, var5.tintIndex()); + if (var6 != null) { + var8 = 624799079; + } else { + var8 = -107553034; + } + break; + case -107553034: + if (var5.shade()) { + var8 = 1451330627; + } else { + var8 = 987918688; + } + break; + case -2664203: + var9 = var6.color(var2); + var8 = 1210656137; + break; + case 624799079: + var7 = this.placement.getOrigin(); + if (var1.level == null) { + var8 = -2664203; + } else { + var8 = 1467874656; + } + break; + case 873880471: + return var10; + case 987918688: + var10 = var4; + var8 = 873880471; + break; + case 1210656137: + var4 = var9; + var4 &= 16777215; + var8 = -107553034; + break; + case 1451330627: + var10 = shade(var4, shadeFactor(var3.direction())); + var8 = 873880471; + break; + case 1467874656: + var9 = var6.colorInWorld(var2, var1.level, var7); + var8 = 1210656137; + break; + case 2017260139: + default: + var4 = 16777215; + var5 = var3.materialInfo(); + if (var5.isTinted()) { + var8 = -1731093733; + } else { + var8 = -107553034; + } + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static float shadeFactor(Direction var0) { + if (var0 == null) { + return 1.0F; + } + + return switch (alb.$SwitchMap$net$minecraft$core$Direction[var0.ordinal()]) { + case 1 -> 1.0F; + case 2 -> 0.5F; + case 3, 4 -> 0.8F; + default -> 0.6F; + }; + } + + private static int shade(int var0, float var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = -2092287749; + + while (true) { + switch (var5) { + case -2092287749: + default: + if (var1 >= 1.0F) { + var5 = -1828505118; + } else { + var5 = 1016823664; + } + break; + case -1828505118: + return var0; + case 1016823664: + var2 = Math.round( + (var0 >> (-1682426607 ^ 1682426623) + ((-1682426607 & 1682426623) << 1) & (690196560 | -690196305) + (690196560 & -690196305)) * var1 + ); + var3 = Math.round( + (var0 >> (-1864859547 ^ 1864859555) + ((-1864859547 & 1864859555) << 1) & (1419389925 ^ -1419389670) + ((1419389925 & -1419389670) << 1)) + * var1 + ); + var4 = Math.round((var0 & (1104208616 | -1104208361) + (1104208616 & -1104208361)) * var1); + return var2 << (-1369335691 | 1369335707) + (-1369335691 & 1369335707) | var3 << (-812057102 | 812057110) + (-812057102 & 812057110) | var4; + } + } + } +} diff --git a/src/main/java/defpackage/ale.java b/src/main/java/defpackage/ale.java new file mode 100644 index 0000000..0f109ed --- /dev/null +++ b/src/main/java/defpackage/ale.java @@ -0,0 +1,27 @@ +package defpackage; + +import net.minecraft.world.level.block.Rotation; + +/* JADX INFO: loaded from: evovis-dec.jar:ale.class */ +/* synthetic */ class ale { + static final /* synthetic */ int[] $SwitchMap$net$minecraft$world$level$block$Rotation = new int[Rotation.values().length]; + + static { + try { + $SwitchMap$net$minecraft$world$level$block$Rotation[Rotation.NONE.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$net$minecraft$world$level$block$Rotation[Rotation.CLOCKWISE_90.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$net$minecraft$world$level$block$Rotation[Rotation.CLOCKWISE_180.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$net$minecraft$world$level$block$Rotation[Rotation.COUNTERCLOCKWISE_90.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + } +} diff --git a/src/main/java/defpackage/alf.java b/src/main/java/defpackage/alf.java new file mode 100644 index 0000000..01dd2cb --- /dev/null +++ b/src/main/java/defpackage/alf.java @@ -0,0 +1,194 @@ +package defpackage; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.state.BlockState; + +public final class alf { + private final akx data; + private final BlockPos origin; + private final Rotation rotation; + private final Mirror mirror; + private final int worldSizeX; + private final int worldSizeZ; + + public alf(akx var1, BlockPos var2, Rotation var3, Mirror var4) { + this.data = var1; + this.origin = var2; + this.rotation = var3; + this.mirror = var4; + int var5 = var3 != Rotation.CLOCKWISE_90 && var3 != Rotation.COUNTERCLOCKWISE_90 + ? 0: 1; + this.worldSizeX = var5 != 0 ? var1.getSizeZ() : var1.getSizeX(); + this.worldSizeZ = var5 != 0 ? var1.getSizeX() : var1.getSizeZ(); + } + + public alf withOrigin(BlockPos var1) { + return new alf(this.data, var1, this.rotation, this.mirror); + } + + public alf withRotation(Rotation var1) { + return new alf(this.data, this.origin, var1, this.mirror); + } + + public alf withMirror(Mirror var1) { + return new alf(this.data, this.origin, this.rotation, var1); + } + + public int minX() { + return this.origin.getX(); + } + + public int minY() { + return this.origin.getY(); + } + + public int minZ() { + return this.origin.getZ(); + } + + public int maxX() { + return this.origin.getX() + this.worldSizeX - (1); + } + + public int maxY() { + return this.origin.getY() + this.data.getSizeY() - (1); + } + + public int maxZ() { + return this.origin.getZ() + this.worldSizeZ - (1); + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public int toWorldX(int var1, int var2) { + int var3 = this.mirror == Mirror.FRONT_BACK ? this.data.getSizeX() - ((879160926 ^ -879160925) + ((879160926 & -879160925) << 1)) - var1 : var1; + int var4 = this.mirror == Mirror.LEFT_RIGHT ? this.data.getSizeZ() - ((-1226978540 | 1226978541) + (-1226978540 & 1226978541)) - var2 : var2; + + return this.origin.getX() + switch (ale.$SwitchMap$net$minecraft$world$level$block$Rotation[this.rotation.ordinal()]) { + case 1 -> var3; + case 2 -> this.data.getSizeZ() - ((-246386764 | 246386765) + (-246386764 & 246386765)) - var4; + case 3 -> this.data.getSizeX() - ((-39071154 | 39071155) + (-39071154 & 39071155)) - var3; + case 4 -> var4; + default -> throw new MatchException(null, null); + }; + } + + public int toWorldY(int var1) { + return this.origin.getY() + var1; + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public int toWorldZ(int var1, int var2) { + int var3 = this.mirror == Mirror.FRONT_BACK ? this.data.getSizeX() - ((-821920553 ^ 821920554) + ((-821920553 & 821920554) << 1)) - var1 : var1; + int var4 = this.mirror == Mirror.LEFT_RIGHT ? this.data.getSizeZ() - ((-1299590140 | 1299590141) + (-1299590140 & 1299590141)) - var2 : var2; + + return this.origin.getZ() + switch (ale.$SwitchMap$net$minecraft$world$level$block$Rotation[this.rotation.ordinal()]) { + case 1 -> var4; + case 2 -> var3; + case 3 -> this.data.getSizeZ() - ((599662327 | -599662326) + (599662327 & -599662326)) - var4; + case 4 -> this.data.getSizeX() - ((1111042761 ^ -1111042760) + ((1111042761 & -1111042760) << 1)) - var3; + default -> throw new MatchException(null, null); + }; + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public int toLocalX(int var1, int var2) { + int var3 = var1 - this.origin.getX(); + int var4 = var2 - this.origin.getZ(); + + int var5 = switch (ale.$SwitchMap$net$minecraft$world$level$block$Rotation[this.rotation.ordinal()]) { + case 1 -> var3; + case 2 -> var4; + case 3 -> this.data.getSizeX() - ((1781162032 ^ -1781162031) + ((1781162032 & -1781162031) << 1)) - var3; + case 4 -> this.data.getSizeX() - ((355256486 | -355256485) + (355256486 & -355256485)) - var4; + default -> throw new MatchException(null, null); + }; + return this.mirror == Mirror.FRONT_BACK ? this.data.getSizeX() - ((1475653293 | -1475653292) + (1475653293 & -1475653292)) - var5 : var5; + } + + public int toLocalY(int var1) { + return var1 - this.origin.getY(); + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public int toLocalZ(int var1, int var2) { + int var3 = var1 - this.origin.getX(); + int var4 = var2 - this.origin.getZ(); + + int var5 = switch (ale.$SwitchMap$net$minecraft$world$level$block$Rotation[this.rotation.ordinal()]) { + case 1 -> var4; + case 2 -> this.data.getSizeZ() - ((-1027061693 | 1027061694) + (-1027061693 & 1027061694)) - var3; + case 3 -> this.data.getSizeZ() - ((2077216850 ^ -2077216849) + ((2077216850 & -2077216849) << 1)) - var4; + case 4 -> var3; + default -> throw new MatchException(null, null); + }; + return this.mirror == Mirror.LEFT_RIGHT ? this.data.getSizeZ() - ((2059642002 | -2059642001) + (2059642002 & -2059642001)) - var5 : var5; + } + + public BlockState transform(BlockState var1) { + BlockState var3 = null; + int var2 = 1318130719; + + while (true) { + switch (var2) { + case -1954834051: + var3 = var1.rotate(this.rotation); + var2 = -998073362; + break; + case -1783802028: + var1 = var1.mirror(this.mirror); + var2 = -1048667226; + break; + case -1193570152: + var3 = var1; + var2 = -998073362; + break; + case -1048667226: + if (this.rotation == Rotation.NONE) { + var2 = -1193570152; + } else { + var2 = -1954834051; + } + break; + case -998073362: + return var3; + case 1318130719: + default: + if (this.mirror != Mirror.NONE) { + var2 = -1783802028; + } else { + var2 = -1048667226; + } + } + } + } + + public akx getData() { + return this.data; + } + + public BlockPos getOrigin() { + return this.origin; + } + + public Rotation getRotation() { + return this.rotation; + } + + public Mirror getMirror() { + return this.mirror; + } + + public int getWorldSizeX() { + return this.worldSizeX; + } + + public int getWorldSizeZ() { + return this.worldSizeZ; + } +} diff --git a/src/main/java/defpackage/alg.java b/src/main/java/defpackage/alg.java new file mode 100644 index 0000000..5b67da9 --- /dev/null +++ b/src/main/java/defpackage/alg.java @@ -0,0 +1,118 @@ +package defpackage; + +import it.unimi.dsi.fastutil.longs.LongOpenHashSet; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntMaps; +import net.minecraft.world.item.Item; + +public final class alg { + public static final byte KIND_MISSING = 0; + public static final byte KIND_WRONG = 1; + public static final byte KIND_EXTRA = 2; + public static final alg EMPTY = new alg( + new long[0], + new byte[0], + new int[0], + new int[0], + 0, + new LongOpenHashSet(), + Object2IntMaps.emptyMap(), + 0, + 0, + 0, + 0, + (-1714041171 ^ 1714041171) + ((-1714041171 & 1714041171) << 1) + ); + private final long[] positions; + private final byte[] kinds; + private final int[] colors; + private final int[] states; + private final int count; + private final LongOpenHashSet occupied; + private final Object2IntMap missingMaterials; + private final int missingCount; + private final int wrongCount; + private final int extraCount; + private final int matchedCount; + private final int radius; + + public int expectedCount() { + return this.missingCount + this.wrongCount + this.matchedCount; + } + + public long[] getPositions() { + return this.positions; + } + + public byte[] getKinds() { + return this.kinds; + } + + public int[] getColors() { + return this.colors; + } + + public int[] getStates() { + return this.states; + } + + public int getCount() { + return this.count; + } + + public LongOpenHashSet getOccupied() { + return this.occupied; + } + + public Object2IntMap getMissingMaterials() { + return this.missingMaterials; + } + + public int getMissingCount() { + return this.missingCount; + } + + public int getWrongCount() { + return this.wrongCount; + } + + public int getExtraCount() { + return this.extraCount; + } + + public int getMatchedCount() { + return this.matchedCount; + } + + public int getRadius() { + return this.radius; + } + + public alg( + long[] var1, + byte[] var2, + int[] var3, + int[] var4, + int var5, + LongOpenHashSet var6, + Object2IntMap var7, + int var8, + int var9, + int var10, + int var11, + int var12 + ) { + this.positions = var1; + this.kinds = var2; + this.colors = var3; + this.states = var4; + this.count = var5; + this.occupied = var6; + this.missingMaterials = var7; + this.missingCount = var8; + this.wrongCount = var9; + this.extraCount = var10; + this.matchedCount = var11; + this.radius = var12; + } +} diff --git a/src/main/java/defpackage/alh.java b/src/main/java/defpackage/alh.java new file mode 100644 index 0000000..210a7fc --- /dev/null +++ b/src/main/java/defpackage/alh.java @@ -0,0 +1,469 @@ +package defpackage; + +import it.unimi.dsi.fastutil.longs.LongOpenHashSet; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import java.util.Arrays; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.BlockPos; +import net.minecraft.core.BlockPos.MutableBlockPos; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.state.BlockState; + +public final class alh { + public static final int WRONG_COLOR = 16729144; + public static final int EXTRA_COLOR = 16750592; + private static final int INITIAL_CAPACITY = 4096; + private static final int MAX_ATTEMPTS = 3; + private static final int RADIUS_SHRINK_NUMERATOR = 2; + private static final int RADIUS_SHRINK_DENOMINATOR = 3; + private static final int CHUNK_SHIFT = 4; + private long[] positions = new long[4096]; + private byte[] kinds = new byte[4096]; + private int[] colors = new int[4096]; + private int[] states = new int[4096]; + private final Object2IntOpenHashMap missingMaterials = new Object2IntOpenHashMap(); + private final MutableBlockPos cursor = new MutableBlockPos(); + private int count; + private int missingCount; + private int wrongCount; + private int extraCount; + private int matchedCount; + private boolean overflow; + + public alg scan(ClientLevel var1, BlockPos var2, alf var3, int var4, int var5, boolean var6, boolean var7) { + int var8 = 0; + alg var9 = null; + int var10 = 0; + int var11 = 2115568695; + + while (true) { + switch (var11) { + case -800045764: + if (var10 < (-1116431311 ^ 1116431314) + ((-1116431311 & 1116431314) << 1)) { + var11 = 1769728313; + } else { + var11 = 474780423; + } + break; + case 45997161: + var8 = Math.max( + 1, + var8 * ((-1451487646 ^ 1451487648) + ((-1451487646 & 1451487648) << 1)) / ((108820105 ^ -108820102) + ((108820105 & -108820102) << 1)) + ); + var10++; + var11 = -800045764; + break; + case 46258816: + return var9; + case 474780423: + return var9; + case 1769728313: + var9 = this.attempt(var1, var2, var3, var8, var5, var6, var7); + if (!this.overflow) { + var11 = 46258816; + } else { + var11 = 45997161; + } + break; + case 2115568695: + default: + var8 = Math.max(1, var4); + var9 = null; + var10 = 0; + var11 = -800045764; + } + } + } + + private alg attempt(ClientLevel var1, BlockPos var2, alf var3, int var4, int var5, boolean var6, boolean var7) { + akx var8 = null; + int var9 = 0; + int var10 = 0; + int var11 = 0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + int var15 = 0; + int var16 = 0; + int var17 = 0; + int var18 = 0; + int var19 = 0; + int var20 = 0; + int var21 = 0; + BlockState var22 = null; + BlockState var23 = null; + BlockState var24 = null; + Item var25 = null; + int var26 = 448905757; + + while (true) { + switch (var26) { + case -2146363097: + if (!var23.isAir()) { + var26 = -2076579441; + } else { + var26 = 1853142577; + } + break; + case -2076579441: + if (var23.canBeReplaced()) { + var26 = 1853142577; + } else { + var26 = 703722377; + } + break; + case -2035622270: + if (var23.getFluidState().isEmpty()) { + var26 = 1383252518; + } else { + var26 = 344468015; + } + break; + case -1856324803: + var15++; + var26 = -1685492635; + break; + case -1792690675: + var26 = 235762784; + break; + case -1685492635: + if (var15 <= var14) { + var26 = 395404784; + } else { + var26 = -129093414; + } + break; + case -1633132962: + var21 = var8.paletteIndex(var17, var20, var18); + var22 = var8.getPalette()[var21]; + this.cursor.set(var16, var19, var15); + var23 = var1.getBlockState(this.cursor); + if (var22.isAir()) { + var26 = 1185748886; + } else { + var26 = 563575418; + } + break; + case -1511882674: + if (var18 >= 0) { + var26 = -1368836136; + } else { + var26 = 235762784; + } + break; + case -1368836136: + if (var17 < var8.getSizeX()) { + var26 = -759880982; + } else { + var26 = 235762784; + } + break; + case -1237508491: + var26 = 344468015; + break; + case -1095245782: + this.missingMaterials.addTo(var25, (834373766 ^ -834373765) + ((834373766 & -834373765) << 1)); + var26 = -2146363097; + break; + case -869765126: + if (!var23.isAir()) { + var26 = -2035622270; + } else { + var26 = 344468015; + } + break; + case -828616166: + if (var16 <= var10) { + var26 = 1671392573; + } else { + var26 = -1856324803; + } + break; + case -759880982: + if (var18 >= var8.getSizeZ()) { + var26 = 878083895; + } else { + var26 = -715052350; + } + break; + case -753260409: + var17 = var3.toLocalX(var16, var15); + var18 = var3.toLocalZ(var16, var15); + if (var17 >= 0) { + var26 = -1511882674; + } else { + var26 = 235762784; + } + break; + case -715052350: + var19 = var11; + var26 = -442282997; + break; + case -442282997: + if (var19 <= var12) { + var26 = 1085130274; + } else { + var26 = 235762784; + } + break; + case -129093414: + return this.snapshot(var4); + case 235762784: + var16++; + var26 = -828616166; + break; + case 344468015: + var19++; + var26 = -442282997; + break; + case 395404784: + var16 = var9; + var26 = -828616166; + break; + case 448905757: + default: + this.reset(); + var8 = var3.getData(); + var9 = Math.max(var3.minX(), var2.getX() - var4); + var10 = Math.min(var3.maxX(), var2.getX() + var4); + var11 = Math.max(Math.max(var3.minY(), var2.getY() - var4), var1.getMinY()); + var12 = Math.min(Math.min(var3.maxY(), var2.getY() + var4), var1.getMaxY()); + var13 = Math.max(var3.minZ(), var2.getZ() - var4); + var14 = Math.min(var3.maxZ(), var2.getZ() + var4); + var15 = var13; + var26 = -1685492635; + break; + case 563575418: + var24 = var3.transform(var22); + if (matches(var23, var24, var6)) { + var26 = 943710416; + } else { + var26 = 597597913; + } + break; + case 597597913: + var25 = var8.getPaletteItems()[var21]; + if (var25 != Items.AIR) { + var26 = -1095245782; + } else { + var26 = -2146363097; + } + break; + case 703722377: + this.store( + var16, + var19, + var15, + (byte)(1), + 16729144, + var21, + var5 + ); + this.wrongCount += 1; + var26 = 344468015; + break; + case 809914560: + if (var20 >= var8.getSizeY()) { + var26 = -1237508491; + } else { + var26 = -1633132962; + } + break; + case 878083895: + var26 = 235762784; + break; + case 943710416: + this.matchedCount += 1; + var26 = 344468015; + break; + case 1085130274: + var20 = var3.toLocalY(var19); + if (var20 >= 0) { + var26 = 809914560; + } else { + var26 = 344468015; + } + break; + case 1185748886: + if (var7) { + var26 = -869765126; + } else { + var26 = 344468015; + } + break; + case 1383252518: + this.store( + var16, + var19, + var15, + (byte)(2), + 16750592, + var21, + var5 + ); + this.extraCount += 1; + var26 = 344468015; + break; + case 1671392573: + if (!var1.hasChunk( + var16 >> 4, var15 >> (982860669 ^ -982860665) + ((982860669 & -982860665) << 1) + )) { + var26 = -1792690675; + } else { + var26 = -753260409; + } + break; + case 1853142577: + this.store(var16, var19, var15, (byte)(0), var8.getPaletteColors()[var21], var21, var5); + this.missingCount += 1; + var26 = 344468015; + } + } + } + + private static boolean matches(BlockState var0, BlockState var1, boolean var2) { + int var4 = 0; + int var3 = -2013512867; + + while (true) { + switch (var3) { + case -2013512867: + default: + if (var2) { + var3 = 688900024; + } else { + var3 = 1910518354; + } + break; + case -1949191339: + var4 = 0; + var3 = -1024306029; + break; + case -1024306029: + return (boolean)((var4) != 0); + case -251241082: + var4 = 1; + var3 = -1024306029; + break; + case 688900024: + if (var0 == var1) { + var3 = -251241082; + } else { + var3 = 935969271; + } + break; + case 935969271: + var4 = 0; + var3 = -1024306029; + break; + case 1910518354: + if (var0.getBlock() == var1.getBlock()) { + var3 = 1954485958; + } else { + var3 = -1949191339; + } + break; + case 1954485958: + var4 = 1; + var3 = -1024306029; + } + } + } + + private void store(int var1, int var2, int var3, byte var4, int var5, int var6, int var7) { + int var8 = 0; + int var9 = -1769697571; + + while (true) { + switch (var9) { + case -1769697571: + default: + if (this.count >= var7) { + var9 = -346171661; + } else { + var9 = -1157849229; + } + break; + case -1157849229: + if (this.count == this.positions.length) { + var9 = 362089353; + } else { + var9 = 319761402; + } + break; + case -346171661: + this.overflow = (boolean)(((1)) != 0); + return; + case 319761402: + this.positions[this.count] = BlockPos.asLong(var1, var2, var3); + this.kinds[this.count] = var4; + this.colors[this.count] = var5; + this.states[this.count] = var6; + this.count += 1; + return; + case 362089353: + var8 = Math.min(var7, this.positions.length * ((656569754 | -656569752) + (656569754 & -656569752))); + this.positions = Arrays.copyOf(this.positions, var8); + this.kinds = Arrays.copyOf(this.kinds, var8); + this.colors = Arrays.copyOf(this.colors, var8); + this.states = Arrays.copyOf(this.states, var8); + var9 = 319761402; + } + } + } + + private void reset() { + this.count = 0; + this.missingCount = 0; + this.wrongCount = 0; + this.extraCount = 0; + this.matchedCount = 0; + this.overflow = (boolean)(((0)) != 0); + this.missingMaterials.clear(); + } + + private alg snapshot(int var1) { + LongOpenHashSet var2 = null; + int var3 = 0; + int var4 = 1026824750; + + while (true) { + switch (var4) { + case -2087501743: + if (var3 < this.count) { + var4 = -539196112; + } else { + var4 = 1670070428; + } + break; + case -539196112: + var2.add(this.positions[var3]); + var3++; + var4 = -2087501743; + break; + case 1026824750: + default: + var2 = new LongOpenHashSet(this.count); + var3 = 0; + var4 = -2087501743; + break; + case 1670070428: + return new alg( + Arrays.copyOf(this.positions, this.count), + Arrays.copyOf(this.kinds, this.count), + Arrays.copyOf(this.colors, this.count), + Arrays.copyOf(this.states, this.count), + this.count, + var2, + akx.sortDescending(this.missingMaterials), + this.missingCount, + this.wrongCount, + this.extraCount, + this.matchedCount, + var1 + ); + } + } + } +} diff --git a/src/main/java/defpackage/ali.java b/src/main/java/defpackage/ali.java new file mode 100644 index 0000000..f6e0afa --- /dev/null +++ b/src/main/java/defpackage/ali.java @@ -0,0 +1,4 @@ +package defpackage; + +record ali(alu session, String nonce, byte[] clientPublic) { +} diff --git a/src/main/java/defpackage/alj.java b/src/main/java/defpackage/alj.java new file mode 100644 index 0000000..e04a638 --- /dev/null +++ b/src/main/java/defpackage/alj.java @@ -0,0 +1,4 @@ +package defpackage; + +public record alj(int x, int xIntegrity, int xNative, int xHwid, byte[] y, long expMillis) { +} diff --git a/src/main/java/defpackage/alk.java b/src/main/java/defpackage/alk.java new file mode 100644 index 0000000..27f374c --- /dev/null +++ b/src/main/java/defpackage/alk.java @@ -0,0 +1,7 @@ +package defpackage; + +public enum alk { + ACTIVE, + REVOKED, + UNKNOWN; +} diff --git a/src/main/java/defpackage/all.java b/src/main/java/defpackage/all.java new file mode 100644 index 0000000..9171382 --- /dev/null +++ b/src/main/java/defpackage/all.java @@ -0,0 +1,279 @@ +package defpackage; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.HttpRequest.BodyPublishers; +import java.nio.charset.StandardCharsets; +import java.security.KeyFactory; +import java.security.PublicKey; +import java.security.Signature; +import java.security.spec.X509EncodedKeySpec; +import java.time.Duration; +import java.util.Base64; + +public final class all { + private static final String PROTECT_BASE = "https://evovis-protect.vercel.app"; + private static final String CHALLENGE_PATH = "/api/challenge"; + private static final String ATTEST_PATH = "/api/attest"; + private static final String HEARTBEAT_PATH = "/api/heartbeat"; + private static final String FIELD_STATUS = "status"; + private static final String STATUS_ACTIVE = "active"; + private static final String STATUS_REVOKED = "revoked"; + private static final String ATTEST_PUBLIC_KEY_SPKI_BASE64 = "MCowBQYDK2VwAyEAbldyB5WuCEPapuXql8sI3H47FCtmPIkFRsgIWFkj4wk="; + private static final String SIGNATURE_ALGORITHM = "Ed25519"; + private static final String KEY_ALGORITHM = "Ed25519"; + private static final String CONTENT_TYPE = "Content-Type"; + private static final String JSON_MEDIA = "application/json"; + private static final String PAYLOAD_SEPARATOR = "."; + private static final int SHARE_LENGTH = 32; + private static final int STATUS_OK = 200; + private static final byte[] REQUEST_AAD = "evovis-protect|attest-req|v1".getBytes(StandardCharsets.UTF_8); + private static final byte[] RESPONSE_AAD = "evovis-protect|attest-res|v1".getBytes(StandardCharsets.UTF_8); + private static final byte[] TRACE_SALT = "evovis-protect|trace|v1".getBytes(StandardCharsets.UTF_8); + private static final String FIELD_TOKEN = "token"; + private static final String FIELD_HWID = "hwid"; + private static final String FIELD_BUILD = "buildId"; + private static final String FIELD_TRACE = "trace"; + private static final String FIELD_NONCE = "nonce"; + private static final String FIELD_SHARE = "share"; + private static final String FIELD_X = "x"; + private static final String FIELD_X_INTEGRITY = "xIntegrity"; + private static final String FIELD_X_NATIVE = "xNative"; + private static final String FIELD_X_HWID = "xHwid"; + private static final String FIELD_EXP = "exp"; + private static final String FIELD_SIG = "sig"; + private static final String FIELD_CPK = "cpk"; + private static final String FIELD_SPK = "spk"; + private static final String FIELD_HSIG = "hsig"; + private static final String FIELD_IV = "iv"; + private static final String FIELD_DATA = "data"; + private static final HttpClient HTTP = alx.client(Duration.ofSeconds(10L)); + + private all() { + } + + public static alj fetch(String token, String hwid, String buildId) { + try { + als handshake = alv.begin(); + ali channel = openChannel(handshake); + if (channel == null) { + return null; + } + + try { + return requestShare(channel, token, hwid, buildId); + } finally { + alv.wipe(channel.session()); + } + } catch (Exception failure) { + id.warn(Cif.SECURITY, "attestation request failed", failure); + return null; + } + } + + public static alk heartbeat(String token, String hwid) { + try { + als handshake = alv.begin(); + ali channel = openChannel(handshake); + if (channel == null) { + return alk.UNKNOWN; + } + + try { + return requestVerdict(channel, token, hwid); + } finally { + alv.wipe(channel.session()); + } + } catch (Exception failure) { + id.warn(Cif.SECURITY, "session heartbeat request failed", failure); + return alk.UNKNOWN; + } + } + + private static alk requestVerdict(ali channel, String token, String hwid) throws Exception { + JsonObject inner = new JsonObject(); + inner.addProperty("token", token); + inner.addProperty("hwid", hwid); + alt sealed = alv.seal(channel.session().clientToServer(), REQUEST_AAD, inner.toString().getBytes(StandardCharsets.UTF_8)); + JsonObject body = new JsonObject(); + body.addProperty("cpk", encode(channel.clientPublic())); + body.addProperty("nonce", channel.nonce()); + body.addProperty("iv", encode(sealed.iv())); + body.addProperty("data", encode(sealed.cipher())); + HttpResponse response = post("/api/heartbeat", body.toString()); + if (response.statusCode() != 200) { + return alk.UNKNOWN; + } else { + JsonObject envelope = JsonParser.parseString(response.body()).getAsJsonObject(); + byte[] iv = decode(envelope.get("iv").getAsString()); + byte[] data = decode(envelope.get("data").getAsString()); + byte[] plaintext = alv.open(channel.session().serverToClient(), RESPONSE_AAD, iv, data); + JsonObject parsed = JsonParser.parseString(new String(plaintext, StandardCharsets.UTF_8)).getAsJsonObject(); + String status = parsed.has("status") ? parsed.get("status").getAsString() : ""; + if ("active".equals(status)) { + return alk.ACTIVE; + } else { + return "revoked".equals(status) ? alk.REVOKED : alk.UNKNOWN; + } + } + } + + private static ali openChannel(als handshake) throws Exception { + JsonObject body = new JsonObject(); + body.addProperty("cpk", encode(handshake.clientPublic())); + HttpResponse response = post("/api/challenge", body.toString()); + if (response.statusCode() != 200) { + id.warn(Cif.SECURITY, "attestation denied by server (status {})", response.statusCode()); + return null; + } + + JsonObject parsed = JsonParser.parseString(response.body()).getAsJsonObject(); + if (parsed.has("nonce") && parsed.has("spk") && parsed.has("hsig")) { + String nonce = parsed.get("nonce").getAsString(); + byte[] serverPublic = decode(parsed.get("spk").getAsString()); + byte[] handshakeSignature = decode(parsed.get("hsig").getAsString()); + if (serverPublic.length != alv.rawKeyLength()) { + id.warn(Cif.SECURITY, "attestation channel handshake signature invalid"); + return null; + } else if (!verifyHandshake(serverPublic, handshake.clientPublic(), nonce, handshakeSignature)) { + id.warn(Cif.SECURITY, "attestation channel handshake signature invalid"); + return null; + } else { + alu session = alv.deriveSession(handshake, serverPublic, nonce); + return new ali(session, nonce, handshake.clientPublic()); + } + } else { + return null; + } + } + + private static alj requestShare(ali channel, String token, String hwid, String buildId) throws Exception { + JsonObject inner = new JsonObject(); + inner.addProperty("token", token); + inner.addProperty("hwid", hwid); + inner.addProperty("buildId", buildId); + if (amh.present()) { + inner.addProperty("trace", amh.value()); + } + + alt sealed = alv.seal(channel.session().clientToServer(), REQUEST_AAD, inner.toString().getBytes(StandardCharsets.UTF_8)); + JsonObject body = new JsonObject(); + body.addProperty("cpk", encode(channel.clientPublic())); + body.addProperty("nonce", channel.nonce()); + body.addProperty("iv", encode(sealed.iv())); + body.addProperty("data", encode(sealed.cipher())); + HttpResponse response = post("/api/attest", body.toString()); + if (response.statusCode() != 200) { + id.warn(Cif.SECURITY, "attestation denied by server (status {})", response.statusCode()); + return null; + } else { + JsonObject envelope = JsonParser.parseString(response.body()).getAsJsonObject(); + byte[] iv = decode(envelope.get("iv").getAsString()); + byte[] data = decode(envelope.get("data").getAsString()); + byte[] plaintext = alv.open(channel.session().serverToClient(), RESPONSE_AAD, iv, data); + JsonObject parsed = JsonParser.parseString(new String(plaintext, StandardCharsets.UTF_8)).getAsJsonObject(); + String shareBase64 = parsed.get("share").getAsString(); + int x = parsed.get("x").getAsInt(); + int xIntegrity = parsed.get("xIntegrity").getAsInt(); + int xNative = parsed.get("xNative").getAsInt(); + int xHwid = parsed.get("xHwid").getAsInt(); + long exp = parsed.get("exp").getAsLong(); + String signature = parsed.get("sig").getAsString(); + if (!verify(shareBase64, x, xIntegrity, xNative, xHwid, channel.nonce(), exp, signature)) { + id.warn(Cif.SECURITY, "attestation share signature invalid"); + return null; + } else { + byte[] share = Base64.getDecoder().decode(shareBase64); + if (share.length != 32) { + id.warn(Cif.SECURITY, "attestation share signature invalid"); + return null; + } else { + unmaskTrace(share, hwid); + return new alj(x, xIntegrity, xNative, xHwid, share, exp); + } + } + } + } + + private static void unmaskTrace(byte[] share, String hwid) { + byte[] tag = amh.bytes(); + if (tag != null) { + byte[] pad = alz.expand(alz.extract(TRACE_SALT, tag), hwid.getBytes(StandardCharsets.UTF_8), 32); + + try { + for (int i = 0; i < 32; i++) { + share[i] ^= pad[i]; + } + } finally { + alz.wipe(pad); + alz.wipe(tag); + } + } + } + + private static boolean verifyHandshake(byte[] serverPublic, byte[] clientPublic, String nonce, byte[] signature) { + try { + PublicKey publicKey = attestPublicKey(); + if (publicKey == null) { + return false; + } + + byte[] message = alv.handshakeMessage(serverPublic, clientPublic, nonce); + Signature verifier = Signature.getInstance("Ed25519"); + verifier.initVerify(publicKey); + verifier.update(message); + return verifier.verify(signature); + } catch (Exception failure) { + id.warn(Cif.SECURITY, "attestation channel handshake signature invalid", failure); + return false; + } + } + + private static boolean verify(String shareBase64, int x, int xIntegrity, int xNative, int xHwid, String nonce, long exp, String signature) { + try { + PublicKey publicKey = attestPublicKey(); + if (publicKey == null) { + return false; + } + + String payload = shareBase64 + "." + x + "." + xIntegrity + "." + xNative + "." + xHwid + "." + nonce + "." + exp; + Signature verifier = Signature.getInstance("Ed25519"); + verifier.initVerify(publicKey); + verifier.update(payload.getBytes(StandardCharsets.UTF_8)); + return verifier.verify(Base64.getDecoder().decode(signature)); + } catch (Exception failure) { + id.warn(Cif.SECURITY, "attestation share signature invalid", failure); + return false; + } + } + + private static PublicKey attestPublicKey() throws Exception { + if ("MCowBQYDK2VwAyEAbldyB5WuCEPapuXql8sI3H47FCtmPIkFRsgIWFkj4wk=".isEmpty()) { + return null; + } + + byte[] spki = Base64.getDecoder().decode("MCowBQYDK2VwAyEAbldyB5WuCEPapuXql8sI3H47FCtmPIkFRsgIWFkj4wk="); + return KeyFactory.getInstance("Ed25519").generatePublic(new X509EncodedKeySpec(spki)); + } + + private static String encode(byte[] data) { + return Base64.getEncoder().encodeToString(data); + } + + private static byte[] decode(String value) { + return Base64.getDecoder().decode(value); + } + + private static HttpResponse post(String path, String body) throws Exception { + HttpRequest request = HttpRequest.newBuilder(URI.create("https://evovis-protect.vercel.app" + path)) + .timeout(Duration.ofSeconds(15L)) + .header("Content-Type", "application/json") + .POST(BodyPublishers.ofString(body, StandardCharsets.UTF_8)) + .build(); + return ld.send(HTTP, request); + } +} diff --git a/src/main/java/defpackage/alm.java b/src/main/java/defpackage/alm.java new file mode 100644 index 0000000..a54616e --- /dev/null +++ b/src/main/java/defpackage/alm.java @@ -0,0 +1,77 @@ +package defpackage; + +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; + +public final class alm { + private static final String DIGEST_ALGORITHM = "SHA-256"; + private static final byte[] INTEGRITY_INFO = "evovis-protect|integrity|v1".getBytes(StandardCharsets.UTF_8); + private static final byte[] LENGTH_PREFIX = new byte[4]; + private static final String[] CRITICAL_CLASSES = new String[]{ + "/aly.class", + "/ama.class", + "/alz.class", + "/alm.class", + "/all.class", + "/aln.class", + "/alr.class", + "/alo.class", + "/alp.class", + "/evo/systems/security/natives/NativeGuard.class" + }; + + private alm() { + } + + public static byte[] compute() { + try { + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + + for (String resource : CRITICAL_CLASSES) { + byte[] bytes = read(resource); + digest.update(lengthPrefix(bytes.length)); + digest.update(bytes); + } + + return digest.digest(); + } catch (Exception failure) { + throw new IllegalStateException("integrity hash failed", failure); + } + } + + public static byte[] integrityShare() { + byte[] share = alz.derive32(compute(), INTEGRITY_INFO); + byte[] mask = alo.tamperMask(); + if (mask != null) { + try { + for (int i = 0; i < share.length; i++) { + share[i] ^= mask[i]; + } + } finally { + alz.wipe(mask); + } + } + + return share; + } + + private static byte[] read(String resource) throws Exception { + try (InputStream stream = alm.class.getResourceAsStream(resource)) { + if (stream == null) { + throw new IllegalStateException("missing critical class " + resource); + } else { + return stream.readAllBytes(); + } + } + } + + private static byte[] lengthPrefix(int length) { + byte[] prefix = (byte[])LENGTH_PREFIX.clone(); + prefix[0] = (byte)(length >>> 24); + prefix[1] = (byte)(length >>> 16); + prefix[2] = (byte)(length >>> 8); + prefix[3] = (byte)length; + return prefix; + } +} diff --git a/src/main/java/defpackage/aln.java b/src/main/java/defpackage/aln.java new file mode 100644 index 0000000..4ea7eb2 --- /dev/null +++ b/src/main/java/defpackage/aln.java @@ -0,0 +1,145 @@ +package defpackage; + +import evo.systems.security.natives.NativeGuard; +import java.nio.charset.StandardCharsets; + +public final class aln { + private static final byte[] HWID_INFO = "evovis-protect|hwid|v1".getBytes(StandardCharsets.UTF_8); + private static final String THREAD_NAME = "evo-key-assembler"; + private static final long READINESS_POLL_MILLIS = 500L; + private static final long RETRY_BACKOFF_MILLIS = 30000L; + private static final long REFRESH_MARGIN_MILLIS = 60000L; + private static final long MIN_SLEEP_MILLIS = 5000L; + private static final long DEFAULT_TTL_MILLIS = 600000L; + private static final Object LOCK = new Object(); + private static volatile boolean started; + private static volatile byte[] sessionKey; + private static volatile long keyExpiryMillis; + + private aln() { + } + + public static void initialize() { + synchronized (LOCK) { + if (started) { + return; + } + + started = true; + } + + Thread thread = new Thread(aln::run, "evo-key-assembler"); + thread.setDaemon(true); + thread.start(); + } + + public static boolean isReady() { + return key() != null; + } + + public static byte[] key() { + byte[] current = sessionKey; + return current != null && System.currentTimeMillis() < keyExpiryMillis ? (byte[])current.clone() : null; + } + + private static void run() { + while (!Thread.currentThread().isInterrupted()) { + String token = token(); + String hwid = air.get(); + long sleep; + if (token != null && hwid != null) { + sleep = assemble(token, hwid) ? sleepUntilRefresh() : 30000L; + } else { + sleep = 500L; + } + + if (!sleepQuietly(sleep)) { + return; + } + } + } + + private static boolean assemble(String token, String hwid) { + String buildId = cb.friendlyString(); + alj share = all.fetch(token, hwid, buildId); + if (share == null) { + return false; + } + + byte[] nativeShare = NativeGuard.share(hwid); + if (nativeShare == null) { + id.warn(Cif.SECURITY, "protection key assembly failed"); + return false; + } + + byte[] integrityShare = null; + byte[] hwidShare = null; + + try { + integrityShare = alm.integrityShare(); + hwidShare = alz.derive32(hwid.getBytes(StandardCharsets.UTF_8), HWID_INFO); + byte[] assembled = ama.combine( + new int[]{share.x(), share.xIntegrity(), share.xNative(), share.xHwid()}, new byte[][]{share.y(), integrityShare, nativeShare, hwidShare} + ); + store(assembled, share.expMillis()); + id.info(Cif.SECURITY, "protection key assembled (build {})", buildId); + selfCheck(); + amc.boot(); + return true; + } catch (RuntimeException failure) { + id.warn(Cif.SECURITY, "protection key assembly failed", failure); + return false; + } finally { + alz.wipe(share.y()); + alz.wipe(integrityShare); + alz.wipe(nativeShare); + alz.wipe(hwidShare); + } + } + + private static void store(byte[] assembled, long expMillis) { + synchronized (LOCK) { + alz.wipe(sessionKey); + sessionKey = assembled; + long now = System.currentTimeMillis(); + keyExpiryMillis = expMillis > now ? expMillis : now + 600000L; + } + } + + private static void selfCheck() { + if ("EVO-SECURE-OK".equals(alp.get("probe"))) { + id.info(Cif.SECURITY, "integrity self-check ok"); + } else { + String indicators = alo.indicators(); + if (!indicators.isEmpty()) { + id.warn(Cif.SECURITY, "runtime tamper indicators detected ({})", indicators); + } + + id.warn(Cif.SECURITY, "integrity self-check failed (key rejected sealed content)"); + } + } + + private static long sleepUntilRefresh() { + long remaining = keyExpiryMillis - System.currentTimeMillis() - 60000L; + return Math.max(remaining, 5000L); + } + + private static String token() { + if (!cp.isAuthorized()) { + return null; + } + + cr user = cp.user(); + return user == null ? null : user.token(); + } + + private static boolean sleepQuietly(long millis) { + try { + Thread.sleep(Math.max(millis, 500L)); + return true; + } catch (InterruptedException interrupted) { + Thread.currentThread().interrupt(); + return false; + } + } +} diff --git a/src/main/java/defpackage/alo.java b/src/main/java/defpackage/alo.java new file mode 100644 index 0000000..ce1a4a6 --- /dev/null +++ b/src/main/java/defpackage/alo.java @@ -0,0 +1,58 @@ +package defpackage; + +import java.lang.management.ManagementFactory; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.Locale; + +public final class alo { + private static final byte[] RUNTIME_INFO = "evovis-protect|runtime|v1".getBytes(StandardCharsets.UTF_8); + private static final String OWN_AGENT_TOKEN = "evo-agent.jar"; + private static final String JAVAAGENT_PREFIX = "-javaagent:"; + private static final String JDWP_TOKEN = "-agentlib:jdwp"; + private static final String JDWP_RUN_TOKEN = "-xrunjdwp"; + private static final String DEBUG_TOKEN = "-xdebug"; + private static final char DEBUG_INDICATOR = 'D'; + private static final char AGENT_INDICATOR = 'A'; + + private alo() { + } + + public static byte[] tamperMask() { + String indicators = indicators(); + return indicators.isEmpty() ? null : alz.derive32(indicators.getBytes(StandardCharsets.UTF_8), RUNTIME_INFO); + } + + public static String indicators() { + boolean debug = false; + boolean foreignAgent = false; + + for (String argument : arguments()) { + String lower = argument.toLowerCase(Locale.ROOT); + if (lower.contains("-agentlib:jdwp") || lower.contains("-xrunjdwp") || lower.equals("-xdebug")) { + debug = true; + } else if (lower.startsWith("-javaagent:") && !lower.contains("evo-agent.jar")) { + foreignAgent = true; + } + } + + StringBuilder builder = new StringBuilder(); + if (debug) { + builder.append('D'); + } + + if (foreignAgent) { + builder.append('A'); + } + + return builder.toString(); + } + + private static List arguments() { + try { + return ManagementFactory.getRuntimeMXBean().getInputArguments(); + } catch (RuntimeException failure) { + return List.of(); + } + } +} diff --git a/src/main/java/defpackage/alp.java b/src/main/java/defpackage/alp.java new file mode 100644 index 0000000..09a02b7 --- /dev/null +++ b/src/main/java/defpackage/alp.java @@ -0,0 +1,75 @@ +package defpackage; + +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.Base64; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import javax.crypto.Cipher; +import javax.crypto.spec.GCMParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +public final class alp { + public static final String PROBE_ID = "probe"; + public static final String COSMETIC_SYNC_ID = "cosmetic_sync"; + public static final String FRIENDS_ID = "friends"; + public static final String MESSAGES_ID = "messages"; + public static final String CONFIG_SHARE_ID = "config_share"; + public static final String PROBE_PLAINTEXT = "EVO-SECURE-OK"; + private static final String DECRYPT_FAILURE = "secure string {} unavailable"; + private static final String CIPHER = "AES/GCM/NoPadding"; + private static final String KEY_ALGORITHM = "AES"; + private static final int IV_LENGTH = 12; + private static final int TAG_BITS = 128; + private static final Map BLOBS = Map.ofEntries( + Map.entry("probe", "fxBpkySkDZHrd2HYzhNln0H7xnZkfmw+2rJC7ft8aCDq3LLhQzo9Hsk="), + Map.entry("cosmetic_sync", "am4JQrWTPLqdLv0PjQhNy2yDoW2BBCYbIF77IxDfbwjZf6dqC42+h1/qesU/tD4E/Zj197dwAdqGNlljFvI="), + Map.entry("friends", "ziG94zcM5lUXiIby6QSoLg8PDtio4DP3O89+GoAa4AH6JWr+6tKqWJuiHjTC0D/P6ZHQsJmu+TVIjGtxR2DJMKg="), + Map.entry("messages", "84IYfPNpdqPiwEuszPWZA8zIdDHBomUlGVxMjbqdADIK+D4/iIJwbr1j5GJzk+U/7G1TGGXwuLkoeFp5vuVSNAqy"), + Map.entry("config_share", "oC7vKTmPK7P7e/CRp6ZEymcwfXLfou5MPweOi6jOuBCKDaqyuHQgZQUjbvFvf7ySPTHtHRibfGZ7646miKBn+EI=") + ); + private static final Map CACHE = new ConcurrentHashMap<>(); + + private alp() { + } + + public static String get(String id) { + String cached = CACHE.get(id); + if (cached != null) { + return cached; + } + + String blob = BLOBS.get(id); + if (blob != null && !blob.isEmpty()) { + byte[] key = aln.key(); + if (key == null) { + return null; + } + + try { + String value = decrypt(blob, key); + CACHE.put(id, value); + return value; + } catch (Exception failure) { + id.warn(Cif.SECURITY, "secure string {} unavailable", id, failure); + return null; + } finally { + Arrays.fill(key, (byte)0); + } + } else { + return null; + } + } + + private static String decrypt(String blob, byte[] key) throws Exception { + byte[] raw = Base64.getDecoder().decode(blob); + byte[] iv = Arrays.copyOfRange(raw, 0, 12); + byte[] cipherAndTag = Arrays.copyOfRange(raw, 12, raw.length); + Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); + cipher.init(2, new SecretKeySpec(key, "AES"), new GCMParameterSpec(128, iv)); + byte[] plain = cipher.doFinal(cipherAndTag); + String value = new String(plain, StandardCharsets.UTF_8); + Arrays.fill(plain, (byte)0); + return value; + } +} diff --git a/src/main/java/defpackage/alq.java b/src/main/java/defpackage/alq.java new file mode 100644 index 0000000..874d737 --- /dev/null +++ b/src/main/java/defpackage/alq.java @@ -0,0 +1,23 @@ +package defpackage; + +public final class alq { + public static final String ATTEST_FAILURE = "attestation request failed"; + public static final String ATTEST_REVOKED = "attestation denied by server (status {})"; + public static final String SHARE_SIG_INVALID = "attestation share signature invalid"; + public static final String KEY_ASSEMBLY_FAILURE = "protection key assembly failed"; + public static final String NATIVE_UNAVAILABLE = "native guard unavailable ({})"; + public static final String KEY_READY = "protection key assembled (build {})"; + public static final String INTEGRITY_OK = "integrity self-check ok"; + public static final String INTEGRITY_FAILED = "integrity self-check failed (key rejected sealed content)"; + public static final String TELEMETRY_FAILURE = "security telemetry dispatch failed"; + public static final String CHANNEL_HANDSHAKE_INVALID = "attestation channel handshake signature invalid"; + public static final String CHANNEL_PIN_MISMATCH = "attestation channel certificate pin mismatch"; + public static final String CHANNEL_PIN_UNAVAILABLE = "attestation channel pinning unavailable ({})"; + public static final String HEARTBEAT_FAILURE = "session heartbeat request failed"; + public static final String HEARTBEAT_SUSPENDED = "session heartbeat suspended client (server verdict revoked)"; + public static final String HEARTBEAT_RESTORED = "session heartbeat restored client (server verdict active)"; + public static final String RUNTIME_TAMPER = "runtime tamper indicators detected ({})"; + + private alq() { + } +} diff --git a/src/main/java/defpackage/alr.java b/src/main/java/defpackage/alr.java new file mode 100644 index 0000000..5b9cdf1 --- /dev/null +++ b/src/main/java/defpackage/alr.java @@ -0,0 +1,52 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import net.minecraft.client.Minecraft; + +/* JADX INFO: compiled from: SessionHeartbeat.java */ +/* JADX INFO: loaded from: evovis-dec.jar:alr.class */ +public final class alr { + private static final String THREAD_NAME = "evo-session-heartbeat"; + private static final long READINESS_POLL_MILLIS = 500; + private static final long INTERVAL_MILLIS = 60000; + private static final long CONFIRM_BACKOFF_MILLIS = 15000; + private static final int REVOKE_CONFIRM_COUNT = 2; + private static final String NOTIFY_TITLE = "Session"; + private static final String NOTIFY_SUSPENDED = "revoked - modules off"; + private static final String NOTIFY_RESTORED = "restored"; + private static final Object LOCK = new Object(); + private static final Object SNAPSHOT_LOCK = new Object(); + private static final List suspendedModules = new ArrayList(); + private static volatile boolean started; + private static volatile boolean suspended; + private static int revokeStreak; + + private alr() { + } + + public static void initialize() { + } + + public static boolean isSuspended() { + return suspended; + } + + + + + + + + + + + + + + + + + + +} diff --git a/src/main/java/defpackage/als.java b/src/main/java/defpackage/als.java new file mode 100644 index 0000000..1bd9504 --- /dev/null +++ b/src/main/java/defpackage/als.java @@ -0,0 +1,6 @@ +package defpackage; + +import java.security.PrivateKey; + +public record als(byte[] clientPublic, PrivateKey clientPrivate) { +} diff --git a/src/main/java/defpackage/alt.java b/src/main/java/defpackage/alt.java new file mode 100644 index 0000000..82d5b8f --- /dev/null +++ b/src/main/java/defpackage/alt.java @@ -0,0 +1,4 @@ +package defpackage; + +public record alt(byte[] iv, byte[] cipher) { +} diff --git a/src/main/java/defpackage/alu.java b/src/main/java/defpackage/alu.java new file mode 100644 index 0000000..a120325 --- /dev/null +++ b/src/main/java/defpackage/alu.java @@ -0,0 +1,4 @@ +package defpackage; + +public record alu(byte[] clientToServer, byte[] serverToClient) { +} diff --git a/src/main/java/defpackage/alv.java b/src/main/java/defpackage/alv.java new file mode 100644 index 0000000..09958fc --- /dev/null +++ b/src/main/java/defpackage/alv.java @@ -0,0 +1,150 @@ +package defpackage; + +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; +import java.security.GeneralSecurityException; +import java.security.KeyFactory; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.PublicKey; +import java.security.SecureRandom; +import java.security.interfaces.XECPublicKey; +import java.security.spec.NamedParameterSpec; +import java.security.spec.XECPublicKeySpec; +import java.util.Arrays; +import javax.crypto.Cipher; +import javax.crypto.KeyAgreement; +import javax.crypto.spec.GCMParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +public final class alv { + private static final String KEY_ALGORITHM = "X25519"; + private static final String AGREEMENT_ALGORITHM = "X25519"; + private static final String CIPHER_TRANSFORMATION = "AES/GCM/NoPadding"; + private static final String CIPHER_KEY_ALGORITHM = "AES"; + private static final int RAW_KEY_LENGTH = 32; + private static final int SESSION_KEY_LENGTH = 32; + private static final int OKM_LENGTH = 64; + private static final int GCM_IV_LENGTH = 12; + private static final int GCM_TAG_BITS = 128; + private static final byte[] CHANNEL_SALT = "evovis-protect|channel|v1".getBytes(StandardCharsets.UTF_8); + private static final SecureRandom RANDOM = new SecureRandom(); + + private alv() { + } + + public static int rawKeyLength() { + return 32; + } + + public static als begin() { + try { + KeyPairGenerator generator = KeyPairGenerator.getInstance("X25519"); + KeyPair pair = generator.generateKeyPair(); + byte[] publicRaw = encodePublic((XECPublicKey)pair.getPublic()); + return new als(publicRaw, pair.getPrivate()); + } catch (GeneralSecurityException failure) { + throw new IllegalStateException("x25519 keygen", failure); + } + } + + public static alu deriveSession(als handshake, byte[] serverPublic, String nonce) { + try { + PublicKey serverKey = decodePublic(serverPublic); + KeyAgreement agreement = KeyAgreement.getInstance("X25519"); + agreement.init(handshake.clientPrivate()); + agreement.doPhase(serverKey, true); + byte[] shared = agreement.generateSecret(); + byte[] info = concat(handshake.clientPublic(), serverPublic, nonce.getBytes(StandardCharsets.UTF_8)); + byte[] okm = alz.expand(alz.extract(CHANNEL_SALT, shared), info, 64); + byte[] clientToServer = Arrays.copyOfRange(okm, 0, 32); + byte[] serverToClient = Arrays.copyOfRange(okm, 32, 64); + alz.wipe(shared); + alz.wipe(okm); + return new alu(clientToServer, serverToClient); + } catch (GeneralSecurityException failure) { + throw new IllegalStateException("channel key derivation", failure); + } + } + + public static byte[] handshakeMessage(byte[] serverPublic, byte[] clientPublic, String nonce) { + return concat(serverPublic, clientPublic, nonce.getBytes(StandardCharsets.UTF_8)); + } + + public static alt seal(byte[] key, byte[] aad, byte[] plaintext) { + try { + byte[] iv = new byte[12]; + RANDOM.nextBytes(iv); + Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); + cipher.init(1, new SecretKeySpec(key, "AES"), new GCMParameterSpec(128, iv)); + cipher.updateAAD(aad); + return new alt(iv, cipher.doFinal(plaintext)); + } catch (GeneralSecurityException failure) { + throw new IllegalStateException("channel seal", failure); + } + } + + public static byte[] open(byte[] key, byte[] aad, byte[] iv, byte[] cipherText) { + try { + Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); + cipher.init(2, new SecretKeySpec(key, "AES"), new GCMParameterSpec(128, iv)); + cipher.updateAAD(aad); + return cipher.doFinal(cipherText); + } catch (GeneralSecurityException failure) { + throw new IllegalStateException("channel open", failure); + } + } + + public static void wipe(alu session) { + if (session != null) { + alz.wipe(session.clientToServer()); + alz.wipe(session.serverToClient()); + } + } + + private static byte[] encodePublic(XECPublicKey key) { + BigInteger coordinate = key.getU(); + byte[] bigEndian = coordinate.toByteArray(); + byte[] littleEndian = new byte[32]; + + for (int index = 0; index < bigEndian.length && index < 32; index++) { + littleEndian[index] = bigEndian[bigEndian.length - 1 - index]; + } + + return littleEndian; + } + + private static PublicKey decodePublic(byte[] littleEndian) throws GeneralSecurityException { + if (littleEndian.length != 32) { + throw new GeneralSecurityException("invalid x25519 public length"); + } + + byte[] bigEndian = new byte[32]; + + for (int index = 0; index < 32; index++) { + bigEndian[index] = littleEndian[31 - index]; + } + + BigInteger coordinate = new BigInteger(1, bigEndian); + XECPublicKeySpec spec = new XECPublicKeySpec(NamedParameterSpec.X25519, coordinate); + return KeyFactory.getInstance("X25519").generatePublic(spec); + } + + private static byte[] concat(byte[]... parts) { + int length = 0; + + for (byte[] part : parts) { + length += part.length; + } + + byte[] combined = new byte[length]; + int position = 0; + + for (byte[] part : parts) { + System.arraycopy(part, 0, combined, position, part.length); + position += part.length; + } + + return combined; + } +} diff --git a/src/main/java/defpackage/alw.java b/src/main/java/defpackage/alw.java new file mode 100644 index 0000000..fd22000 --- /dev/null +++ b/src/main/java/defpackage/alw.java @@ -0,0 +1,53 @@ +package defpackage; + +import java.net.Socket; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import javax.net.ssl.SSLEngine; +import javax.net.ssl.X509ExtendedTrustManager; + +final class alw extends X509ExtendedTrustManager { + private final X509ExtendedTrustManager delegate; + + alw(X509ExtendedTrustManager delegate) { + this.delegate = delegate; + } + + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { + this.delegate.checkServerTrusted(chain, authType); + alx.enforcePin(chain); + } + + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType, Socket socket) throws CertificateException { + this.delegate.checkServerTrusted(chain, authType, socket); + alx.enforcePin(chain); + } + + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType, SSLEngine engine) throws CertificateException { + this.delegate.checkServerTrusted(chain, authType, engine); + alx.enforcePin(chain); + } + + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { + this.delegate.checkClientTrusted(chain, authType); + } + + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType, Socket socket) throws CertificateException { + this.delegate.checkClientTrusted(chain, authType, socket); + } + + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType, SSLEngine engine) throws CertificateException { + this.delegate.checkClientTrusted(chain, authType, engine); + } + + @Override + public X509Certificate[] getAcceptedIssuers() { + return this.delegate.getAcceptedIssuers(); + } +} diff --git a/src/main/java/defpackage/alx.java b/src/main/java/defpackage/alx.java new file mode 100644 index 0000000..bd78dcc --- /dev/null +++ b/src/main/java/defpackage/alx.java @@ -0,0 +1,80 @@ +package defpackage; + +import java.net.http.HttpClient; +import java.net.http.HttpClient.Builder; +import java.security.GeneralSecurityException; +import java.security.KeyStore; +import java.security.MessageDigest; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.time.Duration; +import java.util.Base64; +import java.util.Set; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509ExtendedTrustManager; + +public final class alx { + private static final String TLS_PROTOCOL = "TLS"; + private static final String DIGEST_ALGORITHM = "SHA-256"; + private static final Set PINNED_SPKI_SHA256 = Set.of( + "hxqRlPTu1bMS/0DITB1SSu0vd4u/8l8TjPgfaAp63Gc=", + "yDu9og255NN5GEf+Bwa9rTrqFQ0EydZ0r1FCh9TdAW4=", + "ZmJxHpgjbq6iniQpLsYLJ7dj/F3zblJ+VKWHcn11rlA=", + "Jw0utePhvlilHmlJ22o4nT3l1CLREc/veUdsxqEplFM=", + "sCkq5UWXjg+7mKu9lMhhYF5bGLsy7VI/UNW3tccdR7w=", + "diGVwiVYbubAI3RW4hB9xU8e/CH2GnkuvVFZE8zmgzI=", + "C5+lpZ7tcVwmwQIMcRtPbsQtWLABXhQzejna0wHFr8M=" + ); + + private alx() { + } + + public static HttpClient client(Duration connectTimeout) { + Builder builder = HttpClient.newBuilder().connectTimeout(connectTimeout); + + try { + SSLContext context = SSLContext.getInstance("TLS"); + context.init(null, new TrustManager[]{pinningTrustManager()}, null); + builder.sslContext(context); + } catch (GeneralSecurityException failure) { + id.warn(Cif.SECURITY, "attestation channel pinning unavailable ({})", failure); + } + + return builder.build(); + } + + private static X509ExtendedTrustManager pinningTrustManager() throws GeneralSecurityException { + TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + factory.init((KeyStore)null); + + for (TrustManager manager : factory.getTrustManagers()) { + if (manager instanceof X509ExtendedTrustManager extended) { + return new alw(extended); + } + } + + throw new GeneralSecurityException("no default x509 trust manager"); + } + + static void enforcePin(X509Certificate[] chain) throws CertificateException { + for (X509Certificate certificate : chain) { + if (PINNED_SPKI_SHA256.contains(spkiPin(certificate))) { + return; + } + } + + id.warn(Cif.SECURITY, "attestation channel certificate pin mismatch"); + throw new CertificateException("attestation channel spki pin mismatch"); + } + + private static String spkiPin(X509Certificate certificate) throws CertificateException { + try { + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + return Base64.getEncoder().encodeToString(digest.digest(certificate.getPublicKey().getEncoded())); + } catch (GeneralSecurityException failure) { + throw new CertificateException("spki digest unavailable", failure); + } + } +} diff --git a/src/main/java/defpackage/aly.java b/src/main/java/defpackage/aly.java new file mode 100644 index 0000000..d743095 --- /dev/null +++ b/src/main/java/defpackage/aly.java @@ -0,0 +1,62 @@ +package defpackage; + +public final class aly { + private static final int FIELD_SIZE = 256; + private static final int ORDER = 255; + private static final int REDUCTION_POLYNOMIAL = 283; + private static final int GENERATOR = 3; + private static final int HIGH_BIT = 128; + private static final int BYTE_MASK = 255; + private static final int[] EXP = new int[510]; + private static final int[] LOG = new int[256]; + + private aly() { + } + + public static int add(int a, int b) { + return (a ^ b) & 0xFF; + } + + public static int mul(int a, int b) { + return a != 0 && b != 0 ? EXP[LOG[a & 0xFF] + LOG[b & 0xFF]] : 0; + } + + public static int div(int a, int b) { + if (b == 0) { + throw new ArithmeticException("division by zero in GF(256)"); + } else { + return a == 0 ? 0 : EXP[LOG[a & 0xFF] - LOG[b & 0xFF] + 255]; + } + } + + public static int inverse(int a) { + if (a == 0) { + throw new ArithmeticException("inverse of zero in GF(256)"); + } else { + return EXP[255 - LOG[a & 0xFF]]; + } + } + + private static int multiplyByGenerator(int value) { + int shifted = value << 1; + if ((value & 128) != 0) { + shifted ^= 283; + } + + return (shifted ^ value) & 0xFF; + } + + static { + int value = 1; + + for (int power = 0; power < 255; power++) { + EXP[power] = value; + LOG[value] = power; + value = multiplyByGenerator(value); + } + + for (int power = 255; power < EXP.length; power++) { + EXP[power] = EXP[power - 255]; + } + } +} diff --git a/src/main/java/defpackage/alz.java b/src/main/java/defpackage/alz.java new file mode 100644 index 0000000..8447c73 --- /dev/null +++ b/src/main/java/defpackage/alz.java @@ -0,0 +1,72 @@ +package defpackage; + +import java.nio.charset.StandardCharsets; +import java.security.GeneralSecurityException; +import java.util.Arrays; +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; + +public final class alz { + private static final String MAC_ALGORITHM = "HmacSHA256"; + private static final int HASH_LENGTH = 32; + private static final int MAX_BLOCKS = 255; + private static final int COUNTER_START = 1; + private static final byte[] EMPTY = new byte[0]; + private static final byte[] DOMAIN_SALT = "evovis-protect|kdf|v1".getBytes(StandardCharsets.UTF_8); + + private alz() { + } + + public static byte[] derive(byte[] ikm, byte[] info, int length) { + return expand(extract(DOMAIN_SALT, ikm), info, length); + } + + public static byte[] derive32(byte[] ikm, byte[] info) { + return derive(ikm, info, 32); + } + + public static byte[] extract(byte[] salt, byte[] ikm) { + byte[] key = salt != null && salt.length != 0 ? salt : new byte[32]; + return mac(key, ikm == null ? EMPTY : ikm); + } + + public static byte[] expand(byte[] prk, byte[] info, int length) { + if (length > 0 && length <= 8160) { + byte[] safeInfo = info == null ? EMPTY : info; + byte[] output = new byte[length]; + byte[] previous = EMPTY; + int produced = 0; + + for (int counter = 1; produced < length; counter++) { + byte[] input = new byte[previous.length + safeInfo.length + 1]; + System.arraycopy(previous, 0, input, 0, previous.length); + System.arraycopy(safeInfo, 0, input, previous.length, safeInfo.length); + input[input.length - 1] = (byte)counter; + previous = mac(prk, input); + int chunk = Math.min(32, length - produced); + System.arraycopy(previous, 0, output, produced, chunk); + produced += chunk; + } + + return output; + } else { + throw new IllegalArgumentException("invalid hkdf output length"); + } + } + + private static byte[] mac(byte[] key, byte[] message) { + try { + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(new SecretKeySpec(key, "HmacSHA256")); + return mac.doFinal(message); + } catch (GeneralSecurityException failure) { + throw new IllegalStateException("hkdf failure", failure); + } + } + + public static void wipe(byte[] material) { + if (material != null) { + Arrays.fill(material, (byte)0); + } + } +} diff --git a/src/main/java/defpackage/am.java b/src/main/java/defpackage/am.java new file mode 100644 index 0000000..fbbd8b8 --- /dev/null +++ b/src/main/java/defpackage/am.java @@ -0,0 +1,26 @@ +package defpackage; + +import java.io.IOException; +import java.util.ArrayList; + +public class am { + public static ArrayList handAddonsCache = new ArrayList<>(); + public static ArrayList handRelativeAddonsCache = new ArrayList<>(); + public static ArrayList itemAddonsCache = new ArrayList<>(); + public static ArrayList itemModelAddonsCache = new ArrayList<>(); + public static aj handScriptCache; + public static aj handRelativeScriptCache; + public static aj itemScriptCache; + public static al itemModelCache; + + static { + try { + handScriptCache = new aj("return"); + handRelativeScriptCache = new aj("return"); + itemScriptCache = new aj("return"); + itemModelCache = new al("return"); + } catch (IOException var1) { + throw new RuntimeException(var1); + } + } +} diff --git a/src/main/java/defpackage/ama.java b/src/main/java/defpackage/ama.java new file mode 100644 index 0000000..30528d7 --- /dev/null +++ b/src/main/java/defpackage/ama.java @@ -0,0 +1,85 @@ +package defpackage; + +public final class ama { + private static final int MIN_ABSCISSA = 1; + private static final int MAX_ABSCISSA = 255; + private static final int BYTE_MASK = 255; + private static final int NEUTRAL = 1; + + private ama() { + } + + public static byte[] combine(int[] xs, byte[][] ys) { + validate(xs, ys); + int shareCount = xs.length; + int secretLength = ys[0].length; + int[] basis = lagrangeBasisAtZero(xs); + byte[] secret = new byte[secretLength]; + + for (int position = 0; position < secretLength; position++) { + int accumulator = 0; + + for (int share = 0; share < shareCount; share++) { + accumulator ^= aly.mul(ys[share][position] & 255, basis[share]); + } + + secret[position] = (byte)accumulator; + } + + return secret; + } + + private static int[] lagrangeBasisAtZero(int[] xs) { + int shareCount = xs.length; + int[] basis = new int[shareCount]; + + for (int target = 0; target < shareCount; target++) { + int numerator = 1; + int denominator = 1; + + for (int other = 0; other < shareCount; other++) { + if (other != target) { + numerator = aly.mul(numerator, xs[other]); + denominator = aly.mul(denominator, aly.add(xs[target], xs[other])); + } + } + + basis[target] = aly.div(numerator, denominator); + } + + return basis; + } + + private static void validate(int[] xs, byte[][] ys) { + if (xs != null && ys != null && xs.length != 0 && xs.length == ys.length) { + int secretLength = ys[0].length; + if (secretLength == 0) { + throw new IllegalArgumentException("empty share"); + } + + int i = 0; + + while (i < xs.length) { + int abscissa = xs[i] & 0xFF; + if (abscissa >= 1 && abscissa <= 255) { + if (ys[i] != null && ys[i].length == secretLength) { + for (int j = i + 1; j < xs.length; j++) { + if (abscissa == (xs[j] & 0xFF)) { + throw new IllegalArgumentException("duplicate abscissa"); + } + } + + i++; + continue; + } + + throw new IllegalArgumentException("share length mismatch"); + } + + throw new IllegalArgumentException("abscissa out of range"); + } + } else { + throw new IllegalArgumentException("share vectors mismatched or empty"); + } + } +} diff --git a/src/main/java/defpackage/amb.java b/src/main/java/defpackage/amb.java new file mode 100644 index 0000000..8e82983 --- /dev/null +++ b/src/main/java/defpackage/amb.java @@ -0,0 +1,11 @@ +package defpackage; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.CLASS) +@Target(ElementType.METHOD) +public @interface amb { +} diff --git a/src/main/java/defpackage/amc.java b/src/main/java/defpackage/amc.java new file mode 100644 index 0000000..d7d9358 --- /dev/null +++ b/src/main/java/defpackage/amc.java @@ -0,0 +1,70 @@ +package defpackage; + +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; + +public final class amc { + private static final String MANIFEST_RESOURCE = "/META-INF/evo/sealed.json"; + private static final String BLOB_RESOURCE = "/META-INF/evo/sealed.bin"; + private static final String SEALED_INIT_CLASS = "evo.systems.security.seal.SealedRealInit"; + private static volatile boolean booted; + + private amc() { + } + + public static synchronized boolean boot() { + if (booted) { + return true; + } + + byte[] manifestBytes = resource("/META-INF/evo/sealed.json"); + if (manifestBytes == null) { + booted = true; + return true; + } + + byte[] key = aln.key(); + if (key == null) { + id.warn(Cif.SECURITY, "protection key assembly failed"); + return false; + } + + try { + byte[] blob = resource("/META-INF/evo/sealed.bin"); + if (blob == null) { + id.warn(Cif.SECURITY, "protection key assembly failed"); + return false; + } + + amg manifest = amg.parse(new String(manifestBytes, StandardCharsets.UTF_8)); + amd loader = new amd(amc.class.getClassLoader(), key, blob, manifest); + loader.defineAll(); + if (manifest.find("evo.systems.security.seal.SealedRealInit") != null) { + Object instance = loader.loadClass("evo.systems.security.seal.SealedRealInit").getDeclaredConstructor().newInstance(); + ((ame)instance).run(); + } + + loader.wipeKey(); + booted = true; + return true; + } catch (Throwable failure) { + if (failure instanceof VirtualMachineError error) { + throw error; + } else { + id.warn(Cif.SECURITY, "protection key assembly failed", failure); + return false; + } + } finally { + Arrays.fill(key, (byte)0); + } + } + + private static byte[] resource(String path) { + try (InputStream stream = amc.class.getResourceAsStream(path)) { + return stream == null ? null : stream.readAllBytes(); + } catch (Exception failure) { + return null; + } + } +} diff --git a/src/main/java/defpackage/amd.java b/src/main/java/defpackage/amd.java new file mode 100644 index 0000000..b5aa29b --- /dev/null +++ b/src/main/java/defpackage/amd.java @@ -0,0 +1,71 @@ +package defpackage; + +import java.util.Arrays; +import java.util.concurrent.ConcurrentHashMap; +import javax.crypto.Cipher; +import javax.crypto.spec.GCMParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +public final class amd extends ClassLoader { + private static final String CIPHER = "AES/GCM/NoPadding"; + private static final String KEY_ALGORITHM = "AES"; + private static final int IV_LENGTH = 12; + private static final int TAG_BITS = 128; + private final byte[] key; + private final byte[] blob; + private final amg manifest; + private final ConcurrentHashMap> defined = new ConcurrentHashMap<>(); + + public amd(ClassLoader parent, byte[] key, byte[] blob, amg manifest) { + super(parent); + this.key = (byte[])key.clone(); + this.blob = blob; + this.manifest = manifest; + } + + public void defineAll() throws ClassNotFoundException { + for (amf entry : this.manifest.entries()) { + this.findClass(entry.name()); + } + } + + public void wipeKey() { + Arrays.fill(this.key, (byte)0); + } + + @Override + protected Class findClass(String name) throws ClassNotFoundException { + Class cached = this.defined.get(name); + if (cached != null) { + return cached; + } + + amf entry = this.manifest.find(name); + if (entry == null) { + throw new ClassNotFoundException(name); + } + + byte[] plain = this.decrypt(entry); + + try { + Class resolved = this.defineClass(name, plain, 0, plain.length); + this.defined.put(name, resolved); + return resolved; + } finally { + Arrays.fill(plain, (byte)0); + } + } + + private byte[] decrypt(amf entry) throws ClassNotFoundException { + try { + int start = entry.offset(); + byte[] iv = Arrays.copyOfRange(this.blob, start, start + 12); + byte[] cipherAndTag = Arrays.copyOfRange(this.blob, start + 12, start + entry.length()); + Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); + cipher.init(2, new SecretKeySpec(this.key, "AES"), new GCMParameterSpec(128, iv)); + return cipher.doFinal(cipherAndTag); + } catch (Exception failure) { + throw new ClassNotFoundException(entry.name(), failure); + } + } +} diff --git a/src/main/java/defpackage/ame.java b/src/main/java/defpackage/ame.java new file mode 100644 index 0000000..cdef42a --- /dev/null +++ b/src/main/java/defpackage/ame.java @@ -0,0 +1,5 @@ +package defpackage; + +public interface ame { + void run(); +} diff --git a/src/main/java/defpackage/amf.java b/src/main/java/defpackage/amf.java new file mode 100644 index 0000000..33ae0a5 --- /dev/null +++ b/src/main/java/defpackage/amf.java @@ -0,0 +1,4 @@ +package defpackage; + +public record amf(String name, int offset, int length) { +} diff --git a/src/main/java/defpackage/amg.java b/src/main/java/defpackage/amg.java new file mode 100644 index 0000000..90f5918 --- /dev/null +++ b/src/main/java/defpackage/amg.java @@ -0,0 +1,45 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.util.LinkedHashMap; +import java.util.Map; + +public final class amg { + private static final String FIELD_NAME = "name"; + private static final String FIELD_OFFSET = "offset"; + private static final String FIELD_LENGTH = "length"; + private final Map entries; + + private amg(Map entries) { + this.entries = entries; + } + + public static amg parse(String json) { + Map entries = new LinkedHashMap<>(); + JsonArray array = JsonParser.parseString(json).getAsJsonArray(); + + for (int index = 0; index < array.size(); index++) { + JsonObject object = array.get(index).getAsJsonObject(); + String name = object.get("name").getAsString(); + int offset = object.get("offset").getAsInt(); + int length = object.get("length").getAsInt(); + entries.put(name, new amf(name, offset, length)); + } + + return new amg(entries); + } + + public amf find(String name) { + return this.entries.get(name); + } + + public Iterable entries() { + return this.entries.values(); + } + + public int size() { + return this.entries.size(); + } +} diff --git a/src/main/java/defpackage/amh.java b/src/main/java/defpackage/amh.java new file mode 100644 index 0000000..a1a72b2 --- /dev/null +++ b/src/main/java/defpackage/amh.java @@ -0,0 +1,49 @@ +package defpackage; + +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.Base64; + +public final class amh { + public static final String RESOURCE = "/META-INF/evo/trace.tag"; + private static final int TAG_LENGTH = 16; + private static final String EMPTY = ""; + private static final String TAG = load(); + + private amh() { + } + + public static String value() { + return TAG; + } + + public static boolean present() { + return !TAG.isEmpty(); + } + + public static byte[] bytes() { + if (TAG.isEmpty()) { + return null; + } + + try { + byte[] decoded = Base64.getDecoder().decode(TAG); + return decoded.length == 16 ? decoded : null; + } catch (IllegalArgumentException invalid) { + return null; + } + } + + private static String load() { + try (InputStream stream = amh.class.getResourceAsStream("/META-INF/evo/trace.tag")) { + if (stream == null) { + return ""; + } + + String value = new String(stream.readAllBytes(), StandardCharsets.UTF_8).trim(); + return Base64.getDecoder().decode(value).length == 16 ? value : ""; + } catch (Exception unavailable) { + return ""; + } + } +} diff --git a/src/main/java/defpackage/ami.java b/src/main/java/defpackage/ami.java new file mode 100644 index 0000000..af5e104 --- /dev/null +++ b/src/main/java/defpackage/ami.java @@ -0,0 +1,1037 @@ +package defpackage; + +import it.unimi.dsi.fastutil.longs.LongArrayFIFOQueue; +import it.unimi.dsi.fastutil.longs.LongArrayList; +import it.unimi.dsi.fastutil.longs.LongOpenHashSet; +import java.util.Set; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.BlockPos; +import net.minecraft.core.BlockPos.MutableBlockPos; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.Heightmap.Types; +import net.minecraft.world.phys.Vec3; + +public final class ami { + private static final int CHUNK_SHIFT = 4; + private static final int NEIGHBOUR_SPAN = 1; + private static final int SEED_HORIZONTAL_REACH = 20; + private static final int SEED_VERTICAL_REACH = 12; + private static final int INITIAL_QUEUE_CAPACITY = 1024; + private static final int MAX_CLUSTERS = 12; + private static final int MIN_CLUSTER_BLOCKS = 16; + private static final int MIN_RAY_REACH = 64; + private static final double RAY_STEP = 0.25; + private static final float RAY_PARTIAL_TICK = 1.0F; + private static final double BLOCK_CENTER = 0.5; + private static final int MIN_LAYER_BLOCKS = 4; + private static final int LAYER_DIVISOR = 500; + private static final TagKey[] NATURAL_TAGS = naturalTags(); + private static final Set NATURAL_BLOCKS = naturalBlocks(); + + private ami() { + } + + public static boolean isArtificial(BlockState var0) { + TagKey[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var6 = 0; + int var5 = 1292160634; + + while (true) { + switch (var5) { + case -1911316576: + return (boolean)(((0)) != 0); + case -1831217135: + var4 = var1[var3]; + if (var0.is((TagKey)var4)) { + var5 = -1911316576; + } else { + var5 = 2118005809; + } + break; + case -1737182795: + return (boolean)(((0)) != 0); + case -1466891464: + var6 = 1; + var5 = -1015451734; + break; + case -1015451734: + return (boolean)((var6) != 0); + case -174650068: + if (!var0.getFluidState().isEmpty()) { + var5 = -1737182795; + } else { + var5 = 855020692; + } + break; + case 28518512: + var6 = 0; + var5 = -1015451734; + break; + case 855020692: + var1 = NATURAL_TAGS; + var2 = var1.length; + var3 = 0; + var5 = 1551171021; + break; + case 1292160634: + default: + if (!var0.isAir()) { + var5 = -174650068; + } else { + var5 = -1737182795; + } + break; + case 1551171021: + if (var3 < var2) { + var5 = -1831217135; + } else { + var5 = 1953107718; + } + break; + case 1953107718: + if (!NATURAL_BLOCKS.contains(var0.getBlock())) { + var5 = -1466891464; + } else { + var5 = 28518512; + } + break; + case 2118005809: + var3++; + var5 = 1551171021; + } + } + } + + public static amt detect(ClientLevel var0, Player var1, int var2, int var3) { + int var4 = 0; + BlockPos var5 = null; + LongArrayList var6 = null; + int var7 = -1738930228; + + while (true) { + switch (var7) { + case -1738930228: + default: + var4 = Math.max(var2, (-1535733403 | 1535733467) + (-1535733403 & 1535733467)); + var5 = rayTarget(var0, var1.getEyePosition(), var1.getViewVector(1.0F), var4); + if (var5 != null) { + var7 = -1008927878; + } else { + var7 = 1324331848; + } + break; + case -1008927878: + var6 = new LongArrayList((801132623 | -801131599) + (801132623 & -801131599)); + flood(var0, var5, var2, var3, new LongOpenHashSet((-694080905 ^ 694081929) + ((-694080905 & 694081929) << 1)), var6); + if (var6.size() >= (624802749 ^ -624802733) + ((624802749 & -624802733) << 1)) { + var7 = 694911531; + } else { + var7 = 1324331848; + } + break; + case 694911531: + return subjectOf(var6, var5); + case 1324331848: + return bestCluster(var0, var1.blockPosition(), var2, var3); + } + } + } + + public static BlockPos rayTarget(ClientLevel var0, Vec3 var1, Vec3 var2, int var3) { + MutableBlockPos var4 = null; + long var5 = (4125964744396636128L ^ -4125964744396636128L) + ((4125964744396636128L & -4125964744396636128L) << 1); + int var7 = 0; + int var8 = 0; + double var9 = 0.0; + long var11 = (-3822240020385411463L | 3822240020385411463L) + (-3822240020385411463L & 3822240020385411463L); + BlockState var13 = null; + int var14 = -81581469; + + while (true) { + switch (var14) { + case -2138060826: + return null; + case -1898746820: + var5 = var11; + if (!isLoaded(var0, var4)) { + var14 = -1125260026; + } else { + var14 = 1289380224; + } + break; + case -1125260026: + return null; + case -1061097331: + if (var13.isViewBlocking(var0, var4)) { + var14 = -2138060826; + } else { + var14 = 1923903950; + } + break; + case -661947657: + if (var8 <= var7) { + var14 = 729037986; + } else { + var14 = -557911059; + } + break; + case -557911059: + return null; + case -81581469: + default: + var4 = new MutableBlockPos(); + var5 = (-3962367380557198471L ^ -5261004656297577337L) + ((-3962367380557198471L & -5261004656297577337L) << 1); + var7 = (int)(var3 / 0.25); + var8 = 1; + var14 = -661947657; + break; + case 97270922: + return var4.immutable(); + case 729037986: + var9 = var8 * 0.25; + var4.set(var1.x + var2.x * var9, var1.y + var2.y * var9, var1.z + var2.z * var9); + var11 = var4.asLong(); + if (var11 == var5) { + var14 = 1201527944; + } else { + var14 = -1898746820; + } + break; + case 1201527944: + var14 = 1923903950; + break; + case 1289380224: + var13 = var0.getBlockState(var4); + if (isArtificial(var13)) { + var14 = 97270922; + } else { + var14 = -1061097331; + } + break; + case 1923903950: + var8++; + var14 = -661947657; + } + } + } + + public static amt bestCluster(ClientLevel var0, BlockPos var1, int var2, int var3) { + LongOpenHashSet var4 = null; + MutableBlockPos var5 = null; + LongArrayList var6 = null; + BlockPos var7 = null; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + LongArrayList var12 = null; + amt var14 = null; + int var13 = -1993618971; + + while (true) { + switch (var13) { + case -2091509974: + if (var6 == null) { + var13 = 1323016737; + } else { + var13 = -360513743; + } + break; + case -2025598512: + return var14; + case -1993618971: + default: + var4 = new LongOpenHashSet((957527563 | -957526539) + (957527563 & -957526539)); + var5 = new MutableBlockPos(); + var6 = null; + var7 = null; + var8 = 0; + var9 = 12; + var13 = -570049712; + break; + case -1105104165: + var12 = new LongArrayList((-2028707377 ^ 2028708401) + ((-2028707377 & 2028708401) << 1)); + flood(var0, var5, var2, var3, var4, var12); + var8++; + if (var6 != null) { + var13 = 1915323708; + } else { + var13 = 554731121; + } + break; + case -1053017322: + if (isLoaded(var0, var5)) { + var13 = 2072153036; + } else { + var13 = 1356771487; + } + break; + case -885236253: + if (var10 <= (-207583117 ^ 207583137) + ((-207583117 & 207583137) << 1)) { + var13 = 703537037; + } else { + var13 = 1248035432; + } + break; + case -570049712: + if (var9 >= (-1273183388 ^ 1273183376) + ((-1273183388 & 1273183376) << 1)) { + var13 = 704716034; + } else { + var13 = -2091509974; + } + break; + case -360513743: + var14 = subjectOf(var6, var7); + var13 = -2025598512; + break; + case -341931313: + var5.set(var1.getX() + var10, var1.getY() + var9, var1.getZ() + var11); + if (!var4.contains(var5.asLong())) { + var13 = -1053017322; + } else { + var13 = 1356771487; + } + break; + case 554731121: + var6 = var12; + var7 = var5.immutable(); + var13 = 1356771487; + break; + case 703537037: + if (var8 < (-380206083 | 380206095) + (-380206083 & 380206095)) { + var13 = 1318978858; + } else { + var13 = 1248035432; + } + break; + case 704716034: + if (var8 < (318873093 | -318873081) + (318873093 & -318873081)) { + var13 = 2017679243; + } else { + var13 = -2091509974; + } + break; + case 944044540: + if (var11 <= (538356622 | -538356602) + (538356622 & -538356602)) { + var13 = 1828920998; + } else { + var13 = 1078835927; + } + break; + case 1078835927: + var10++; + var13 = -885236253; + break; + case 1248035432: + var9--; + var13 = -570049712; + break; + case 1288987159: + var13 = 1356771487; + break; + case 1318978858: + var11 = -20; + var13 = 944044540; + break; + case 1323016737: + var14 = null; + var13 = -2025598512; + break; + case 1356771487: + var11++; + var13 = 944044540; + break; + case 1828920998: + if (var8 < (-1702517565 | 1702517577) + (-1702517565 & 1702517577)) { + var13 = -341931313; + } else { + var13 = 1078835927; + } + break; + case 1915323708: + if (var12.size() > var6.size()) { + var13 = 554731121; + } else { + var13 = 1356771487; + } + break; + case 2017679243: + var10 = -20; + var13 = -885236253; + break; + case 2072153036: + if (!isArtificial(var0.getBlockState(var5))) { + var13 = 1288987159; + } else { + var13 = -1105104165; + } + } + } + } + + public static void flood(ClientLevel var0, BlockPos var1, int var2, int var3, LongOpenHashSet var4, LongArrayList var5) { + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + LongArrayFIFOQueue var12 = null; + MutableBlockPos var13 = null; + long var14 = (-2061270660954588403L ^ 2061270660954588403L) + ((-2061270660954588403L & 2061270660954588403L) << 1); + long var16 = (4526988044807025274L ^ -4526988044807025274L) + ((4526988044807025274L & -4526988044807025274L) << 1); + int var18 = 0; + int var19 = 0; + int var20 = 0; + int var21 = 0; + int var22 = 0; + int var23 = 0; + int var24 = 0; + int var25 = 0; + int var26 = 0; + long var27 = (5509135024068758155L | -5509135024068758155L) + (5509135024068758155L & -5509135024068758155L); + int var29 = -829315382; + + while (true) { + switch (var29) { + case -2136679302: + if (var24 > var11) { + var29 = 34599069; + } else { + var29 = -1951416970; + } + break; + case -1951416970: + var25 = -1; + var29 = -448846510; + break; + case -1613629528: + var23 = -1; + var29 = 2141445774; + break; + case -1584484272: + if (var26 <= var9) { + var29 = -770602932; + } else { + var29 = 1618885958; + } + break; + case -1385900613: + var26 = var20 + var25; + if (var26 >= var8) { + var29 = -1584484272; + } else { + var29 = 1618885958; + } + break; + case -1314453216: + var12.enqueue(var27); + var29 = 1618885958; + break; + case -857804449: + if (var21 <= (1002988820 | -1002988819) + (1002988820 & -1002988819)) { + var29 = -808901759; + } else { + var29 = 961228823; + } + break; + case -829315382: + default: + var6 = var1.getX() - var2; + var7 = var1.getX() + var2; + var8 = var1.getZ() - var2; + var9 = var1.getZ() + var2; + var10 = var0.getMinY(); + var11 = var0.getMaxY(); + var12 = new LongArrayFIFOQueue((140795670 | -140794646) + (140795670 & -140794646)); + var13 = new MutableBlockPos(); + var14 = var1.asLong(); + var4.add(var14); + var12.enqueue(var14); + var29 = 2082881005; + break; + case -808901759: + var22 = var18 + var21; + if (var22 >= var6) { + var29 = -213773281; + } else { + var29 = -198427630; + } + break; + case -770602932: + if (var21 == 0) { + var29 = -492354568; + } else { + var29 = 1182754402; + } + break; + case -761745697: + var16 = var12.dequeueLong(); + var18 = BlockPos.getX(var16); + var19 = BlockPos.getY(var16); + var20 = BlockPos.getZ(var16); + var5.add(var16); + var21 = -1; + var29 = -857804449; + break; + case -734998446: + var24 = var19 + var23; + if (var24 >= var10) { + var29 = -2136679302; + } else { + var29 = 1545778973; + } + break; + case -683395548: + if (var5.size() < var3) { + var29 = -761745697; + } else { + var29 = -218975656; + } + break; + case -638931766: + var13.set(var22, var24, var26); + if (isLoaded(var0, var13)) { + var29 = -581872555; + } else { + var29 = 1618885958; + } + break; + case -581872555: + if (isArtificial(var0.getBlockState(var13))) { + var29 = -1314453216; + } else { + var29 = 1618885958; + } + break; + case -492354568: + if (var23 == 0) { + var29 = -4599223; + } else { + var29 = 1182754402; + } + break; + case -448846510: + if (var25 <= (176877779 ^ -176877778) + ((176877779 & -176877778) << 1)) { + var29 = -1385900613; + } else { + var29 = 1545778973; + } + break; + case -218975656: + return; + case -213773281: + if (var22 > var7) { + var29 = 922987042; + } else { + var29 = -1613629528; + } + break; + case -198427630: + var21++; + var29 = -857804449; + break; + case -121336987: + var29 = 1618885958; + break; + case -4599223: + if (var25 == 0) { + var29 = 858666834; + } else { + var29 = 1182754402; + } + break; + case 34599069: + var29 = 1545778973; + break; + case 858666834: + var29 = 1618885958; + break; + case 922987042: + var29 = -198427630; + break; + case 961228823: + var29 = 2082881005; + break; + case 1182754402: + var27 = BlockPos.asLong(var22, var24, var26); + if (!var4.add(var27)) { + var29 = -121336987; + } else { + var29 = -638931766; + } + break; + case 1545778973: + var23++; + var29 = 2141445774; + break; + case 1618885958: + var25++; + var29 = -448846510; + break; + case 2082881005: + if (!var12.isEmpty()) { + var29 = -683395548; + } else { + var29 = -218975656; + } + break; + case 2141445774: + if (var23 <= (666373129 | -666373128) + (666373129 & -666373128)) { + var29 = -734998446; + } else { + var29 = -198427630; + } + } + } + } + + public static amt surroundings(ClientLevel var0, BlockPos var1, int var2) { + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + LongArrayList var8 = null; + int var9 = 0; + int var10 = 0; + int var11 = 0; + amt var13 = null; + int var12 = -1642608496; + + while (true) { + switch (var12) { + case -1927463507: + var8.add(BlockPos.asLong(var9, var11, var10)); + var12 = 304046007; + break; + case -1850379976: + if (var10 <= var6) { + var12 = 67058986; + } else { + var12 = 198521589; + } + break; + case -1642608496: + default: + var3 = var1.getX() - var2; + var4 = var1.getX() + var2; + var5 = var1.getZ() - var2; + var6 = var1.getZ() + var2; + var7 = var0.getMinY(); + var8 = new LongArrayList((-911992685 ^ 911993709) + ((-911992685 & 911993709) << 1)); + var9 = var3; + var12 = 524595362; + break; + case -780039118: + var11 = var0.getHeight(Types.MOTION_BLOCKING, var9, var10) - (1); + if (var11 >= var7) { + var12 = -1927463507; + } else { + var12 = 304046007; + } + break; + case -114467490: + var13 = subjectOf(var8, var1); + var12 = 447081737; + break; + case 67058986: + if (!var0.hasChunk( + var9 >> 4, var10 >> (1609140522 | -1609140518) + (1609140522 & -1609140518) + )) { + var12 = 1792417975; + } else { + var12 = -780039118; + } + break; + case 198521589: + var9++; + var12 = 524595362; + break; + case 304046007: + var10++; + var12 = -1850379976; + break; + case 447081737: + return var13; + case 524595362: + if (var9 <= var4) { + var12 = 1049074663; + } else { + var12 = 1477459964; + } + break; + case 593544277: + var13 = null; + var12 = 447081737; + break; + case 1049074663: + var10 = var5; + var12 = -1850379976; + break; + case 1477459964: + if (var8.isEmpty()) { + var12 = 593544277; + } else { + var12 = -114467490; + } + break; + case 1792417975: + var12 = 304046007; + } + } + } + + public static amt subjectOf(LongArrayList var0, BlockPos var1) { + int var2 = var0.size(); + if (var2 == 0) { + return null; + } + + int var3 = 2147483647; + int var4 = 2147483647; + int var5 = 2147483647; + int var6 = -2147483648; + int var7 = -2147483648; + int var8 = -2147483648; + + for (int var9 = 0; var9 < var2; var9++) { + long var10 = var0.getLong(var9); + int var12 = BlockPos.getX(var10); + int var13 = BlockPos.getY(var10); + int var14 = BlockPos.getZ(var10); + var3 = Math.min(var3, var12); + var4 = Math.min(var4, var13); + var5 = Math.min(var5, var14); + var6 = Math.max(var6, var12); + var7 = Math.max(var7, var13); + var8 = Math.max(var8, var14); + } + + int[] var29 = new int[var7 - var4 + 1]; + + for (int var30 = 0; var30 < var2; var30++) { + var29[BlockPos.getY(var0.getLong(var30)) - var4] += 1; + } + + int[] var31 = significantRun(var29, var1.getY() - var4, layerThreshold(var2)); + int var11 = var4 + var31[0]; + int var32 = var4 + var31[1]; + int[] var33 = new int[var6 - var3 + 1]; + int[] var34 = new int[var8 - var5 + 1]; + int var15 = 0; + + for (int var16 = 0; var16 < var2; var16++) { + long var17 = var0.getLong(var16); + int var19 = BlockPos.getY(var17); + if (var19 >= var11 && var19 <= var32) { + var33[BlockPos.getX(var17) - var3] += 1; + var34[BlockPos.getZ(var17) - var5] += 1; + var15++; + } + } + + int var35 = layerThreshold(var15); + int[] var36 = significantRun(var33, var1.getX() - var3, var35); + int[] var18 = significantRun(var34, var1.getZ() - var5, var35); + int var37 = var3 + var36[0]; + int var20 = var3 + var36[1]; + int var21 = var5 + var18[0]; + int var22 = var5 + var18[1]; + double var23 = (var20 - var37 + (2043526229 | -2043526228) + (2043526229 & -2043526228)) * 0.5; + double var25 = (var32 - var11 + (366647323 ^ -366647322) + ((366647323 & -366647322) << 1)) * 0.5; + double var27 = (var22 - var21 + (-1840758555 ^ 1840758556) + ((-1840758555 & 1840758556) << 1)) * 0.5; + return new amt(var37 + var23, var11 + var25, var21 + var27, var23, var27, var25, var15); + } + + private static int layerThreshold(int var0) { + return Math.max(4, var0 / ((2103984290 ^ -2103983790) + ((2103984290 & -2103983790) << 1))); + } + + private static int[] significantRun(int[] var0, int var1, int var2) { + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = -165312053; + + while (true) { + switch (var6) { + case -2133703069: + if (var0[var5 + 1] >= var2) { + var6 = 158905398; + } else { + var6 = 509564918; + } + break; + case -1790343150: + if (var4 > 0) { + var6 = 300625400; + } else { + var6 = -463515540; + } + break; + case -1151774182: + if (var3 < 0) { + var6 = 613270302; + } else { + var6 = -437760207; + } + break; + case -463515540: + if (var5 < var0.length - ((-312609022 | 312609023) + (-312609022 & 312609023))) { + var6 = -2133703069; + } else { + var6 = 509564918; + } + break; + case -437760207: + var4 = var3; + var5 = var3; + var6 = -1790343150; + break; + case -165312053: + default: + var3 = Math.clamp( + var1, 0, var0.length - ((884221787 ^ -884221786) + ((884221787 & -884221786) << 1)) + ); + if (var0[var3] < var2) { + var6 = 366720830; + } else { + var6 = -1151774182; + } + break; + case 158905398: + var5++; + var6 = -463515540; + break; + case 300625400: + if (var0[var4 - (1)] >= var2) { + var6 = 1944807400; + } else { + var6 = -463515540; + } + break; + case 366720830: + var3 = nearestSignificant(var0, var3, var2); + var6 = -1151774182; + break; + case 509564918: + int[] var7 = new int[2]; + var7[0] = var4; + var7[1] = var5; + return var7; + case 613270302: + int[] var10000 = new int[2]; + var10000[0] = 0; + var10000[1] = var0.length - (1); + return var10000; + case 1944807400: + var4--; + var6 = -1790343150; + } + } + } + + private static int nearestSignificant(int[] var0, int var1, int var2) { + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 2076334195; + + while (true) { + switch (var6) { + case -2135597211: + return -1; + case -1894279550: + if (var0[var5] >= var2) { + var6 = 1850247953; + } else { + var6 = 1602568824; + } + break; + case -1498807548: + return var4; + case 761367769: + var5 = var1 + var3; + if (var5 < var0.length) { + var6 = -1894279550; + } else { + var6 = 1602568824; + } + break; + case 1258399226: + if (var3 < var0.length) { + var6 = 1422083124; + } else { + var6 = -2135597211; + } + break; + case 1422083124: + var4 = var1 - var3; + if (var4 >= 0) { + var6 = 1481563406; + } else { + var6 = 761367769; + } + break; + case 1481563406: + if (var0[var4] >= var2) { + var6 = -1498807548; + } else { + var6 = 761367769; + } + break; + case 1602568824: + var3++; + var6 = 1258399226; + break; + case 1850247953: + return var5; + case 2076334195: + default: + var3 = 1; + var6 = 1258399226; + } + } + } + + private static boolean isLoaded(ClientLevel var0, BlockPos var1) { + return var0.hasChunk( + var1.getX() >> 4, + var1.getZ() >> (-1849905136 ^ 1849905140) + ((-1849905136 & 1849905140) << 1) + ); + } + + private static TagKey[] naturalTags() { + TagKey[] var10000 = new TagKey[29]; + var10000[0] = BlockTags.REPLACEABLE; + var10000[1] = BlockTags.DIRT; + var10000[2] = BlockTags.MUD; + var10000[3] = BlockTags.GRASS_BLOCKS; + var10000[4] = BlockTags.SAND; + var10000[5] = BlockTags.BASE_STONE_OVERWORLD; + var10000[6] = BlockTags.BASE_STONE_NETHER; + var10000[7] = BlockTags.STONE_ORE_REPLACEABLES; + var10000[8] = BlockTags.DEEPSLATE_ORE_REPLACEABLES; + var10000[9] = BlockTags.GOLD_ORES; + var10000[10] = BlockTags.IRON_ORES; + var10000[11] = BlockTags.COPPER_ORES; + var10000[12] = BlockTags.LEAVES; + var10000[13] = BlockTags.OVERWORLD_NATURAL_LOGS; + var10000[14] = BlockTags.FLOWERS; + var10000[15] = BlockTags.SMALL_FLOWERS; + var10000[16] = BlockTags.CROPS; + var10000[17] = BlockTags.CAVE_VINES; + var10000[18] = BlockTags.CORALS; + var10000[19] = BlockTags.CORAL_BLOCKS; + var10000[20] = BlockTags.CORAL_PLANTS; + var10000[21] = BlockTags.WALL_CORALS; + var10000[22] = BlockTags.SPELEOTHEMS; + var10000[23] = BlockTags.MOSS_BLOCKS; + var10000[24] = BlockTags.NYLIUM; + var10000[25] = BlockTags.WART_BLOCKS; + var10000[26] = BlockTags.BADLANDS_TERRACOTTA; + var10000[27] = BlockTags.ICE; + var10000[28] = BlockTags.SNOW; + return var10000; + } + + private static Set naturalBlocks() { + Block[] var10000 = new Block[86]; + var10000[0] = Blocks.BEDROCK; + var10000[1] = Blocks.GRAVEL; + var10000[2] = Blocks.CLAY; + var10000[3] = Blocks.OBSIDIAN; + var10000[4] = Blocks.ROOTED_DIRT; + var10000[5] = Blocks.DIRT_PATH; + var10000[6] = Blocks.NETHERRACK; + var10000[7] = Blocks.BASALT; + var10000[8] = Blocks.SMOOTH_BASALT; + var10000[9] = Blocks.BLACKSTONE; + var10000[10] = Blocks.SOUL_SAND; + var10000[11] = Blocks.SOUL_SOIL; + var10000[12] = Blocks.END_STONE; + var10000[13] = Blocks.MAGMA_BLOCK; + var10000[14] = Blocks.GLOWSTONE; + var10000[15] = Blocks.SANDSTONE; + var10000[16] = Blocks.RED_SANDSTONE; + var10000[17] = Blocks.PACKED_ICE; + var10000[18] = Blocks.BLUE_ICE; + var10000[19] = Blocks.POWDER_SNOW; + var10000[20] = Blocks.SNOW_BLOCK; + var10000[21] = Blocks.CALCITE; + var10000[22] = Blocks.TUFF; + var10000[23] = Blocks.DRIPSTONE_BLOCK; + var10000[24] = Blocks.POINTED_DRIPSTONE; + var10000[25] = Blocks.AMETHYST_BLOCK; + var10000[26] = Blocks.BUDDING_AMETHYST; + var10000[27] = Blocks.AMETHYST_CLUSTER; + var10000[28] = Blocks.SMALL_AMETHYST_BUD; + var10000[29] = Blocks.MEDIUM_AMETHYST_BUD; + var10000[30] = Blocks.LARGE_AMETHYST_BUD; + var10000[31] = Blocks.SCULK; + var10000[32] = Blocks.SCULK_VEIN; + var10000[33] = Blocks.SCULK_CATALYST; + var10000[34] = Blocks.SCULK_SENSOR; + var10000[35] = Blocks.SCULK_SHRIEKER; + var10000[36] = Blocks.MOSS_CARPET; + var10000[37] = Blocks.GLOW_LICHEN; + var10000[38] = Blocks.VINE; + var10000[39] = Blocks.COBWEB; + var10000[40] = Blocks.CACTUS; + var10000[41] = Blocks.SUGAR_CANE; + var10000[42] = Blocks.BAMBOO; + var10000[43] = Blocks.KELP; + var10000[44] = Blocks.KELP_PLANT; + var10000[45] = Blocks.SEAGRASS; + var10000[46] = Blocks.TALL_SEAGRASS; + var10000[47] = Blocks.DEAD_BUSH; + var10000[48] = Blocks.HANGING_ROOTS; + var10000[49] = Blocks.BIG_DRIPLEAF; + var10000[50] = Blocks.SMALL_DRIPLEAF; + var10000[51] = Blocks.SPORE_BLOSSOM; + var10000[52] = Blocks.AZALEA; + var10000[53] = Blocks.FLOWERING_AZALEA; + var10000[54] = Blocks.MANGROVE_ROOTS; + var10000[55] = Blocks.MUDDY_MANGROVE_ROOTS; + var10000[56] = Blocks.MANGROVE_LOG; + var10000[57] = Blocks.CHERRY_LOG; + var10000[58] = Blocks.PALE_OAK_LOG; + var10000[59] = Blocks.CRIMSON_STEM; + var10000[60] = Blocks.WARPED_STEM; + var10000[61] = Blocks.SHROOMLIGHT; + var10000[62] = Blocks.BROWN_MUSHROOM; + var10000[63] = Blocks.RED_MUSHROOM; + var10000[64] = Blocks.BROWN_MUSHROOM_BLOCK; + var10000[65] = Blocks.RED_MUSHROOM_BLOCK; + var10000[66] = Blocks.MUSHROOM_STEM; + var10000[67] = Blocks.CHORUS_PLANT; + var10000[68] = Blocks.CHORUS_FLOWER; + var10000[69] = Blocks.TWISTING_VINES; + var10000[70] = Blocks.WEEPING_VINES; + var10000[71] = Blocks.CRIMSON_ROOTS; + var10000[72] = Blocks.WARPED_ROOTS; + var10000[73] = Blocks.COAL_ORE; + var10000[74] = Blocks.DEEPSLATE_COAL_ORE; + var10000[75] = Blocks.REDSTONE_ORE; + var10000[76] = Blocks.DEEPSLATE_REDSTONE_ORE; + var10000[77] = Blocks.LAPIS_ORE; + var10000[78] = Blocks.DEEPSLATE_LAPIS_ORE; + var10000[79] = Blocks.DIAMOND_ORE; + var10000[80] = Blocks.DEEPSLATE_DIAMOND_ORE; + var10000[81] = Blocks.EMERALD_ORE; + var10000[82] = Blocks.DEEPSLATE_EMERALD_ORE; + var10000[83] = Blocks.NETHER_QUARTZ_ORE; + var10000[84] = Blocks.NETHER_GOLD_ORE; + var10000[85] = Blocks.ANCIENT_DEBRIS; + return Set.of(var10000); + } +} diff --git a/src/main/java/defpackage/amj.java b/src/main/java/defpackage/amj.java new file mode 100644 index 0000000..a6285db --- /dev/null +++ b/src/main/java/defpackage/amj.java @@ -0,0 +1,193 @@ +package defpackage; + +import net.minecraft.core.BlockPos.MutableBlockPos; +import net.minecraft.world.level.BlockGetter; + +public final class amj { + private static final double LEAD_IN_SECONDS = 0.35; + private static final double LEAD_OUT_SECONDS = 0.6; + private static final double NANOS_PER_SECOND = 1.0E9; + private static final double RADIANS_TO_DEGREES = 180.0 / Math.PI; + private static final double SMOOTH_A = 6.0; + private static final double SMOOTH_B = 15.0; + private static final double SMOOTH_C = 10.0; + private static final double MIN_FLIGHT_SECONDS = 0.5; + private static final double UNBLOCK_STEP = 0.5; + private static final int UNBLOCK_ATTEMPTS = 24; + private final amk frame = new amk(); + private final MutableBlockPos probe = new MutableBlockPos(); + private aml geometry; + private ams shot; + private boolean active; + private double flightSeconds; + private long startNanos; + + public void begin(aml var1, ams var2, double var3) { + this.geometry = var1; + this.shot = var2; + this.flightSeconds = Math.max(var3, 0.5); + this.startNanos = System.nanoTime(); + this.active = (boolean)(((1)) != 0); + } + + public void stop() { + this.active = (boolean)(((0)) != 0); + this.geometry = null; + this.shot = null; + } + + public double totalSeconds() { + return 0.35 + this.flightSeconds + 0.6; + } + + public double elapsedSeconds() { + return (System.nanoTime() - this.startNanos) / 1.0E9; + } + + public boolean isFinished() { + int var2 = 0; + int var1 = -1473013063; + + while (true) { + switch (var1) { + case -1473013063: + default: + if (this.active) { + var1 = 1091745274; + } else { + var1 = 1265599423; + } + break; + case -1403964859: + return (boolean)((var2) != 0); + case 1091745274: + if (this.elapsedSeconds() >= this.totalSeconds()) { + var1 = 1265599423; + } else { + var1 = 1470787586; + } + break; + case 1265599423: + var2 = 1; + var1 = -1403964859; + break; + case 1470787586: + var2 = 0; + var1 = -1403964859; + } + } + } + + public amk sample(BlockGetter var1) { + double var2 = 0.0; + double var4 = 0.0; + double var7 = 0.0; + int var6 = 1217328634; + + while (true) { + switch (var6) { + case -1549541846: + var7 = Math.min(var2, 1.0); + var6 = 1208049840; + break; + case -153722713: + var7 = 0.0; + var6 = 1208049840; + break; + case 1208049840: + var4 = var7; + this.shot.locate(this.geometry, smoother(var4), this.frame); + this.frame.setPosition(this.frame.getX(), this.frame.getY() + this.geometry.heightOffset(), this.frame.getZ()); + this.avoidTerrain(var1); + this.aimAtTarget(); + return this.frame; + case 1217328634: + default: + var2 = (this.elapsedSeconds() - 0.35) / this.flightSeconds; + if (var2 <= 0.0) { + var6 = -153722713; + } else { + var6 = -1549541846; + } + } + } + } + + private static double smoother(double var0) { + return var0 * var0 * var0 * (var0 * (var0 * 6.0 - 15.0) + 10.0); + } + + private void avoidTerrain(BlockGetter var1) { + int var2 = 0; + double var3 = 0.0; + int var5 = 72513853; + + while (true) { + switch (var5) { + case -2102659780: + var3 = this.frame.getY() + var2 * 0.5; + if (!this.obstructed(var1, var3)) { + var5 = -1676529360; + } else { + var5 = -761921756; + } + break; + case -1676529360: + this.frame.setPosition(this.frame.getX(), var3, this.frame.getZ()); + return; + case -761921756: + var2++; + var5 = 815012152; + break; + case -136847727: + var2 = 1; + var5 = 815012152; + break; + case 72513853: + default: + if (!this.obstructed(var1, this.frame.getY())) { + var5 = 1138896277; + } else { + var5 = -136847727; + } + break; + case 608336911: + return; + case 815012152: + if (var2 <= (-36932750 | 36932774) + (-36932750 & 36932774)) { + var5 = -2102659780; + } else { + var5 = 608336911; + } + break; + case 1138896277: + return; + } + } + } + + private boolean obstructed(BlockGetter var1, double var2) { + this.probe.set(this.frame.getX(), var2, this.frame.getZ()); + return var1.getBlockState(this.probe).isViewBlocking(var1, this.probe); + } + + private void aimAtTarget() { + double var1 = this.frame.getTargetX() - this.frame.getX(); + double var3 = this.frame.getTargetY() - this.frame.getY(); + double var5 = this.frame.getTargetZ() - this.frame.getZ(); + double var7 = Math.sqrt(var1 * var1 + var5 * var5); + this.frame.setRotation((float)(-Math.atan2(var1, var5) * (180.0 / Math.PI)), (float)(-Math.atan2(var3, var7) * (180.0 / Math.PI))); + } + + public aml getGeometry() { + return this.geometry; + } + + public ams getShot() { + return this.shot; + } + + public boolean isActive() { + return this.active; + } +} diff --git a/src/main/java/defpackage/amk.java b/src/main/java/defpackage/amk.java new file mode 100644 index 0000000..ab8498a --- /dev/null +++ b/src/main/java/defpackage/amk.java @@ -0,0 +1,62 @@ +package defpackage; + + +public final class amk { + private double x; + private double y; + private double z; + private double targetX; + private double targetY; + private double targetZ; + private float yaw; + private float pitch; + + public void setPosition(double var1, double var3, double var5) { + this.x = var1; + this.y = var3; + this.z = var5; + } + + public void setTarget(double var1, double var3, double var5) { + this.targetX = var1; + this.targetY = var3; + this.targetZ = var5; + } + + public void setRotation(float var1, float var2) { + this.yaw = var1; + this.pitch = var2; + } + + public double getX() { + return this.x; + } + + public double getY() { + return this.y; + } + + public double getZ() { + return this.z; + } + + public double getTargetX() { + return this.targetX; + } + + public double getTargetY() { + return this.targetY; + } + + public double getTargetZ() { + return this.targetZ; + } + + public float getYaw() { + return this.yaw; + } + + public float getPitch() { + return this.pitch; + } +} diff --git a/src/main/java/defpackage/aml.java b/src/main/java/defpackage/aml.java new file mode 100644 index 0000000..71c9bda --- /dev/null +++ b/src/main/java/defpackage/aml.java @@ -0,0 +1,33 @@ +package defpackage; + +import net.minecraft.util.Mth; + +public record aml( + double centerX, + double centerZ, + double focusY, + double distance, + double lowElevation, + double highElevation, + double startAngle, + double axisAngle, + double axisLength, + double verticalExtent, + double heightOffset +) { + public double elevationAt(double var1) { + return Mth.lerp(var1, this.lowElevation, this.highElevation); + } + + public double radiusAt(double var1, double var3) { + return this.distance * var3 * Math.cos(var1); + } + + public double heightAt(double var1, double var3) { + return this.focusY + this.distance * var3 * Math.sin(var1); + } + + public double ceiling(double var1) { + return this.focusY + this.verticalExtent + var1; + } +} diff --git a/src/main/java/defpackage/amm.java b/src/main/java/defpackage/amm.java new file mode 100644 index 0000000..1d1bf80 --- /dev/null +++ b/src/main/java/defpackage/amm.java @@ -0,0 +1,124 @@ +package defpackage; + +import net.minecraft.core.BlockPos; + +public final class amm { + public static final amm INSTANCE = new amm(); + private static final double BLOCK_CENTER = 0.5; + private BlockPos first; + private BlockPos second; + + private amm() { + } + + public void setFirst(BlockPos var1) { + this.first = var1 == null ? null : var1.immutable(); + } + + public void setSecond(BlockPos var1) { + this.second = var1 == null ? null : var1.immutable(); + } + + public void clear() { + this.first = null; + this.second = null; + } + + public boolean isComplete() { + int var2 = 0; + int var1 = -280284181; + + while (true) { + switch (var1) { + case -2127743454: + return (boolean)((var2) != 0); + case -1874099150: + if (this.second != null) { + var1 = -1635177534; + } else { + var1 = 108085984; + } + break; + case -1635177534: + var2 = 1; + var1 = -2127743454; + break; + case -280284181: + default: + if (this.first != null) { + var1 = -1874099150; + } else { + var1 = 108085984; + } + break; + case 108085984: + var2 = 0; + var1 = -2127743454; + } + } + } + + public int minX() { + return Math.min(this.first.getX(), this.second.getX()); + } + + public int minY() { + return Math.min(this.first.getY(), this.second.getY()); + } + + public int minZ() { + return Math.min(this.first.getZ(), this.second.getZ()); + } + + public int maxX() { + return Math.max(this.first.getX(), this.second.getX()); + } + + public int maxY() { + return Math.max(this.first.getY(), this.second.getY()); + } + + public int maxZ() { + return Math.max(this.first.getZ(), this.second.getZ()); + } + + public int volume() { + return (this.maxX() - this.minX() + (-1796474359 | 1796474360) + (-1796474359 & 1796474360)) + * (this.maxY() - this.minY() + (-2118753460 ^ 2118753461) + ((-2118753460 & 2118753461) << 1)) + * (this.maxZ() - this.minZ() + (916089200 | -916089199) + (916089200 & -916089199)); + } + + public amt subject() { + double var1 = 0.0; + double var3 = 0.0; + double var5 = 0.0; + int var7 = 1524318174; + + while (true) { + switch (var7) { + case -1235098425: + return null; + case -191060549: + var1 = (this.maxX() - this.minX() + (-1788269348 | 1788269349) + (-1788269348 & 1788269349)) * 0.5; + var3 = (this.maxY() - this.minY() + (-53784186 ^ 53784187) + ((-53784186 & 53784187) << 1)) * 0.5; + var5 = (this.maxZ() - this.minZ() + (-181845297 | 181845298) + (-181845297 & 181845298)) * 0.5; + return new amt(this.minX() + var1, this.minY() + var3, this.minZ() + var5, var1, var5, var3, this.volume()); + case 1524318174: + } + + if (!this.isComplete()) { + var7 = -1235098425; + } else { + var7 = -191060549; + } + } + } + + public BlockPos getFirst() { + return this.first; + } + + public BlockPos getSecond() { + return this.second; + } +} diff --git a/src/main/java/defpackage/ams.java b/src/main/java/defpackage/ams.java new file mode 100644 index 0000000..e6c8870 --- /dev/null +++ b/src/main/java/defpackage/ams.java @@ -0,0 +1,213 @@ +package defpackage; + +import net.minecraft.util.Mth; + +public enum ams { + ORBIT("Orbit", 1.15, (boolean)((((710347105 | -710347105) + (710347105 & -710347105))) != 0)) { + @Override + void locate(aml var1, double var2, amk var4) { + double var5 = var1.elevationAt(var2); + double var7 = 1.0 + 0.1 * Math.sin(Math.PI * var2); + place(var1, var1.startAngle() + (Math.PI * 2) * var2, var5, var7, var4); + } + }, + SPIRAL("Spiral", 1.5, (boolean)((((-772334291 | 772334291) + (-772334291 & 772334291))) != 0)) { + @Override + void locate(aml var1, double var2, amk var4) { + double var5 = var1.elevationAt(var2); + double var7 = Mth.lerp(var2, 1.45, 0.92); + place(var1, var1.startAngle() + (Math.PI * 7.0 / 2.0) * var2, var5, var7, var4); + } + }, + CRANE( + "Crane", 1.35, (boolean)((((-470319013 ^ 470319013) + ((-470319013 & 470319013) << 1)) + ) != 0)) { + @Override + void locate(aml var1, double var2, amk var4) { + double var5 = Mth.lerp(var2 * var2, var1.lowElevation() * 0.35, var1.highElevation()); + double var7 = Mth.lerp(Math.sqrt(var2), 0.85, 1.3); + place(var1, var1.startAngle() + ams.CRANE_DRIFT * var2, var5, var7, var4); + } + }, + FLYOVER( + "Flyover", + 1.45, + (boolean)((((2096260670 ^ -2096260670) + ((2096260670 & -2096260670) << 1)) + ) != 0)) { + @Override + void locate(aml var1, double var2, amk var4) { + double var5 = var1.highElevation(); + double var7 = var1.radiusAt(var5, 1.0); + double var9 = Math.cos(var1.startAngle()); + double var11 = Math.sin(var1.startAngle()); + double var13 = var7 * 1.4 * (1.0 - 2.0 * var2); + double var15 = var7 * 0.45; + var4.setPosition( + var1.centerX() + var9 * var13 - var11 * var15, Math.max(var1.heightAt(var5, 1.0), var1.ceiling(5.0)), var1.centerZ() + var11 * var13 + var9 * var15 + ); + var4.setTarget(var1.centerX(), var1.focusY(), var1.centerZ()); + } + }, + DOLLY("Fly Along", 0.8, (boolean)((((802438844 | -802438843) + (802438844 & -802438843))) != 0)) { + @Override + public double framingExtent(amt var1) { + return Math.max(var1.crossLength(), var1.verticalExtent()); + } + + @Override + public double clearanceExtent(amt var1) { + return var1.crossLength(); + } + + @Override + void locate(aml var1, double var2, amk var4) { + double var5 = var1.elevationAt(var2); + double var7 = Math.cos(var1.axisAngle()); + double var9 = Math.sin(var1.axisAngle()); + double var11 = var1.axisLength() + var1.distance() * 0.7; + double var13 = Mth.lerp(var2, -var11, var11); + double var15 = var1.radiusAt(var5, 0.75); + var4.setPosition( + var1.centerX() + var7 * var13 - var9 * var15, Math.max(var1.heightAt(var5, 1.0), var1.ceiling(5.0)), var1.centerZ() + var9 * var13 + var7 * var15 + ); + double var17 = var13 * 0.55; + var4.setTarget(var1.centerX() + var7 * var17, var1.focusY(), var1.centerZ() + var9 * var17); + } + }; + + private static final double TAU = Math.PI * 2; + private static final double ORBIT_SWELL = 0.1; + private static final double SPIRAL_TURNS = 1.75; + private static final double SPIRAL_START_SCALE = 1.45; + private static final double SPIRAL_END_SCALE = 0.92; + private static final double CRANE_DRIFT = Math.toRadians(28.0); + private static final double CRANE_START_TILT = 0.35; + private static final double CRANE_START_SCALE = 0.85; + private static final double CRANE_END_SCALE = 1.3; + private static final double FLYOVER_SPAN = 1.4; + private static final double FLYOVER_OFFSET = 0.45; + private static final double DOLLY_RUNWAY = 0.7; + private static final double DOLLY_SIDE = 0.75; + private static final double DOLLY_LOOK_AHEAD = 0.55; + private static final double OVERFLY_CLEARANCE = 5.0; + private static final double TALL_RATIO = 1.1; + private static final double LONG_RATIO = 2.2; + private static final double WIDE_EXTENT = 26.0; + private final String label; + private final double reachFactor; + private final boolean followsAxis; + + ams(String var3, double var4, boolean var6) { + this.label = var3; + this.reachFactor = var4; + this.followsAxis = var6; + } + + abstract void locate(aml var1, double var2, amk var4); + + public double framingExtent(amt var1) { + return var1.silhouette(); + } + + public double clearanceExtent(amt var1) { + return var1.horizontalExtent(); + } + + static void place(aml var0, double var1, double var3, double var5, amk var7) { + double var8 = var0.radiusAt(var3, var5); + var7.setPosition(var0.centerX() + Math.cos(var1) * var8, var0.heightAt(var3, var5), var0.centerZ() + Math.sin(var1) * var8); + var7.setTarget(var0.centerX(), var0.focusY(), var0.centerZ()); + } + + public static ams pickFor(amt var0) { + int var1 = 951428794; + + while (true) { + switch (var1) { + case -1723306811: + return SPIRAL; + case -31414145: + if (var0.verticalExtent() > var0.horizontalExtent() * 1.1) { + var1 = -1723306811; + } else { + var1 = 1964394158; + } + break; + case 298412038: + return ORBIT; + case 743620281: + return FLYOVER; + case 844767724: + return DOLLY; + case 951428794: + default: + if (var0.axisLength() > var0.crossLength() * 2.2) { + var1 = 844767724; + } else { + var1 = -31414145; + } + break; + case 1964394158: + if (var0.horizontalExtent() > 26.0) { + var1 = 743620281; + } else { + var1 = 298412038; + } + } + } + } + + public static ams byLabel(String var0, ams var1) { + ams[] var2 = null; + int var3 = 0; + int var4 = 0; + Object var5 = null; + int var6 = 1790670051; + + while (true) { + switch (var6) { + case -270568897: + if (var4 < var3) { + var6 = -112777591; + } else { + var6 = 1758344520; + } + break; + case -112777591: + var5 = var2[var4]; + if (((ams)var5).label.equalsIgnoreCase(var0)) { + var6 = 1732064415; + } else { + var6 = 356980170; + } + break; + case 356980170: + var4++; + var6 = -270568897; + break; + case 1732064415: + return (ams)var5; + case 1758344520: + return var1; + case 1790670051: + default: + var2 = values(); + var3 = var2.length; + var4 = 0; + var6 = -270568897; + } + } + } + + public String getLabel() { + return this.label; + } + + public double getReachFactor() { + return this.reachFactor; + } + + public boolean isFollowsAxis() { + return this.followsAxis; + } +} diff --git a/src/main/java/defpackage/amt.java b/src/main/java/defpackage/amt.java new file mode 100644 index 0000000..fd5e4e0 --- /dev/null +++ b/src/main/java/defpackage/amt.java @@ -0,0 +1,102 @@ +package defpackage; + +public record amt(double centerX, double centerY, double centerZ, double halfX, double halfZ, double verticalExtent, int blocks) { + private static final double SQUARE_RATIO = 1.3; + + public double horizontalExtent() { + return Math.sqrt(this.halfX * this.halfX + this.halfZ * this.halfZ); + } + + public double silhouette() { + return Math.max(this.horizontalExtent(), this.verticalExtent); + } + + public boolean squarish() { + int var2 = 0; + int var1 = 167713318; + + while (true) { + switch (var1) { + case -735794172: + var2 = 0; + var1 = 1407361659; + break; + case 167713318: + default: + if (Math.max(this.halfX, this.halfZ) < Math.min(this.halfX, this.halfZ) * 1.3) { + var1 = 697053720; + } else { + var1 = -735794172; + } + break; + case 697053720: + var2 = 1; + var1 = 1407361659; + break; + case 1407361659: + return (boolean)((var2) != 0); + } + } + } + + public double axisAngle() { + double var2 = 0.0; + int var1 = -342572866; + + while (true) { + switch (var1) { + case -2110633872: + var2 = Math.PI / 2; + var1 = 1345624840; + break; + case -563433456: + var2 = 0.0; + var1 = 1345624840; + break; + case -342572866: + default: + if (this.squarish()) { + var1 = 704629672; + } else { + var1 = 1198485890; + } + break; + case 704629672: + return Math.atan2(this.halfZ, this.halfX); + case 1198485890: + if (this.halfX >= this.halfZ) { + var1 = -563433456; + } else { + var1 = -2110633872; + } + break; + case 1345624840: + return var2; + } + } + } + + public double axisLength() { + int var1 = 404882223; + + while (true) { + switch (var1) { + case -1074518770: + return this.horizontalExtent(); + case -832581300: + return Math.max(this.halfX, this.halfZ); + case 404882223: + } + + if (this.squarish()) { + var1 = -1074518770; + } else { + var1 = -832581300; + } + } + } + + public double crossLength() { + return Math.min(this.halfX, this.halfZ); + } +} diff --git a/src/main/java/defpackage/amu.java b/src/main/java/defpackage/amu.java new file mode 100644 index 0000000..13c1f6e --- /dev/null +++ b/src/main/java/defpackage/amu.java @@ -0,0 +1,4 @@ +package defpackage; + +public record amu(String id, String name, String description, String author, int uid, int downloads, long updatedAt, boolean mine) { +} diff --git a/src/main/java/defpackage/amv.java b/src/main/java/defpackage/amv.java new file mode 100644 index 0000000..cd0184a --- /dev/null +++ b/src/main/java/defpackage/amv.java @@ -0,0 +1,845 @@ +package defpackage; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.HttpRequest.BodyPublishers; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Set; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Consumer; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; + +public final class amv { + private static final int INTERVAL_TICKS = 120; + private static final HttpClient HTTP = HttpClient.newBuilder() + .connectTimeout(Duration.ofSeconds((-7407805580513838899L | 7407805580513838909L) + (-7407805580513838899L & 7407805580513838909L))) + .build(); + private static volatile List pool = List.of(); + private static volatile boolean poolLoading; + private static volatile boolean poolLoaded; + private static final AtomicInteger poolVersion = new AtomicInteger(); + private static volatile boolean requestInFlight; + private static final Set knownIncoming = new HashSet<>(); + private static final Set pendingAsks = new HashSet<>(); + private static int ticks = 80; + + private amv() { + } + + public static void initialize() { + ClientTickEvents.END_CLIENT_TICK.register(amv::tick); + } + + public static List pool() { + return pool; + } + + public static boolean isPoolLoading() { + return poolLoading; + } + + public static boolean isPoolLoaded() { + return poolLoaded; + } + + public static int poolVersion() { + return poolVersion.get(); + } + + public static boolean isAwaiting(String var0) { + synchronized (pendingAsks) { + return pendingAsks.contains(var0.toLowerCase(Locale.ROOT)); + } + } + + public static void ask(String var0, Consumer var1) { + JsonObject var2 = actionBody("ask"); + if (var2 == null) { + deliver(var1, "Sign in first"); + } else { + var2.addProperty("username", var0); + synchronized (pendingAsks) { + pendingAsks.add(var0.toLowerCase(Locale.ROOT)); + } + + send(var2, var2x -> { + if (var2x != null) { + synchronized (pendingAsks) { + pendingAsks.remove(var0.toLowerCase(Locale.ROOT)); + } + } + + deliver(var1, var2x); + }); + } + } + + public static void respond(String var0, boolean var1) { + JsonObject var2 = null; + String var3 = null; + int var4 = 1970281965; + + while (true) { + switch (var4) { + case -2136909100: + post(var2); + return; + case -1791242843: + var3 = bz.getInstance().getConfigManager().exportCurrentState(); + if (var3 == null) { + var4 = 1834878879; + } else { + var4 = 1964823660; + } + break; + case 1533027545: + return; + case 1834878879: + return; + case 1964823660: + var2.addProperty("data", var3); + var4 = -2136909100; + break; + case 1970281965: + default: + var2 = actionBody("respond"); + if (var2 == null) { + var4 = 1533027545; + } else { + var4 = 2022256587; + } + break; + case 2022256587: + var2.addProperty("username", var0); + var2.addProperty("accept", var1); + if (var1) { + var4 = -1791242843; + } else { + var4 = -2136909100; + } + } + } + } + + public static void publish(String var0, String var1, Consumer var2) { + publish(var0, var1, bz.getInstance().getConfigManager().exportCurrentState(), var2); + } + + public static void publish(String var0, String var1, String var2, Consumer var3) { + JsonObject var4 = actionBody("publish"); + if (var4 == null) { + deliver(var3, "Sign in first"); + } else if (var2 == null) { + deliver(var3, "Could not read config"); + } else { + var4.addProperty("name", var0); + var4.addProperty("description", var1 == null ? "" : var1); + var4.addProperty("data", var2); + send(var4, var1x -> { + int var2x = -1631586829; + + while (true) { + switch (var2x) { + case -1941731093: + refreshPool(null); + var2x = 817873478; + break; + case -1631586829: + default: + if (var1x == null) { + var2x = -1941731093; + } else { + var2x = 817873478; + } + break; + case 817873478: + deliver(var3, var1x); + return; + } + } + }); + } + } + + public static void unpublish(String var0, Consumer var1) { + JsonObject var2 = null; + int var3 = -936616642; + + while (true) { + switch (var3) { + case -2039155045: + var2.addProperty("id", var0); + send(var2, var1x -> { + int var2x = -1744847218; + + while (true) { + switch (var2x) { + case -2108135468: + deliver(var1, var1x); + return; + case -1744847218: + default: + if (var1x == null) { + var2x = 339309616; + } else { + var2x = -2108135468; + } + break; + case 339309616: + refreshPool(null); + var2x = -2108135468; + } + } + }); + return; + case -936616642: + default: + var2 = actionBody("unpublish"); + if (var2 == null) { + var3 = -791507760; + } else { + var3 = -2039155045; + } + break; + case -791507760: + deliver(var1, "Sign in first"); + return; + } + } + } + + public static void refreshPool(String var0) { + JsonObject var1 = null; + int var2 = 1012161935; + + while (true) { + switch (var2) { + case -1557498698: + poolLoading = (boolean)(((1)) != 0); + post(var1) + .whenComplete( + (var0x, var1x) -> { + poolLoading = (boolean)(((0)) != 0); + if (var1x == null && var0x != null && var0x.statusCode() == (976762088 ^ -976761888) + ((976762088 & -976761888) << 1)) { + try { + JsonObject var2x = JsonParser.parseString(var0x.body()).getAsJsonObject(); + ArrayList var3 = new ArrayList(); + + for (JsonElement var5 : var2x.getAsJsonArray( + "configs" + )) { + JsonObject var6 = var5.getAsJsonObject(); + var3.add( + new amu( + stringOf(var6, "id"), + stringOf(var6, "name"), + stringOf( + var6, "description" + ), + stringOf(var6, "author"), + intOf(var6, "uid"), + intOf(var6, "downloads"), + longOf(var6, "updatedAt"), + (boolean)(((var6.has("mine") + && var6.get("mine").getAsBoolean() + ? 1: (-52693545 | 52693545) + (-52693545 & 52693545)) + ) != 0)) + ); + } + + pool = List.copyOf(var3); + poolLoaded = (boolean)(((1)) != 0); + poolVersion.incrementAndGet(); + } catch (Exception var7) { + } + } + } + ); + return; + case -1257861499: + if (var0 != null) { + var2 = 1329275984; + } else { + var2 = -1557498698; + } + break; + case 884293821: + return; + case 1012161935: + default: + var1 = actionBody("pool"); + if (var1 == null) { + var2 = 884293821; + } else { + var2 = -1257861499; + } + break; + case 1176731680: + var1.addProperty("query", var0); + var2 = -1557498698; + break; + case 1329275984: + if (!var0.isEmpty()) { + var2 = 1176731680; + } else { + var2 = -1557498698; + } + } + } + } + + public static void download(amu var0, Consumer var1) { + JsonObject var2 = null; + int var3 = -275423601; + + while (true) { + switch (var3) { + case -447660946: + deliver(var1, "Sign in first"); + return; + case -275423601: + default: + var2 = actionBody("download"); + if (var2 == null) { + var3 = -447660946; + } else { + var3 = 1541462087; + } + break; + case 1541462087: + var2.addProperty("id", var0.id()); + post(var2) + .whenComplete( + (var2x, var3x) -> { + if (var3x == null && var2x != null) { + if (var2x.statusCode() != (1883328447 | -1883328247) + (1883328447 & -1883328247)) { + deliver(var1, describeError(var2x.body())); + } else { + try { + JsonObject var4 = JsonParser.parseString(var2x.body()).getAsJsonObject(); + storeShared( + var0.name() + " by " + var0.author(), + stringOf(var4, "data"), + var1xx -> var1.accept( + var1xx == null + ? "Could not save" + : null + ) + ); + refreshPool(null); + } catch (Exception var5) { + deliver(var1, "Bad config data"); + } + } + } else { + deliver(var1, "Network error"); + } + } + ); + return; + } + } + } + + private static void storeShared(String var0, String var1, Consumer var2) { + Minecraft.getInstance().execute(() -> { + String var3 = null; + ed var4 = null; + String var5 = null; + int var6 = 1420222505; + + while (true) { + switch (var6) { + case -1805836195: + var3 = var5; + if (bz.getInstance().getMenuScreen() != null) { + var6 = 1115670990; + } else { + var6 = -639711486; + } + break; + case -1268427782: + return; + case -639711486: + if (var2 != null) { + var6 = -350355993; + } else { + var6 = -1268427782; + } + break; + case -350355993: + var2.accept(var3); + var6 = -1268427782; + break; + case 1115670990: + bz.getInstance().getMenuScreen().refreshConfigs(); + var6 = -639711486; + break; + case 1420222505: + default: + var3 = null; + if (var1 != null) { + var6 = 1523288647; + } else { + var6 = -639711486; + } + break; + case 1523288647: + var4 = bz.getInstance().getConfigManager(); + var5 = var4.uniqueConfigName(var0); + if (var4.importConfig(var5, var1)) { + var6 = -1805836195; + } else { + var6 = -639711486; + } + } + } + }); + } + + private static void tick(Minecraft var0) { + JsonObject var1 = null; + int var2 = 1252135552; + + while (true) { + switch (var2) { + case -762002230: + return; + case -389139783: + ticks = 0; + var1 = actionBody("state"); + if (var1 == null) { + var2 = -762002230; + } else { + var2 = 1505596851; + } + break; + case -182109687: + if ((ticks += (1144121 | -1144120) + (1144121 & -1144120)) < (-821431074 | 821431194) + (-821431074 & 821431194)) { + var2 = 1550321128; + } else { + var2 = -389139783; + } + break; + case 1252135552: + default: + if (!requestInFlight) { + var2 = -182109687; + } else { + var2 = 1550321128; + } + break; + case 1505596851: + requestInFlight = (boolean)(((1)) != 0); + post(var1).whenComplete((var0x, var1x) -> { + requestInFlight = (boolean)(((0)) != 0); + if (var1x == null && var0x != null && var0x.statusCode() == (-200475625 ^ 200475825) + ((-200475625 & 200475825) << 1)) { + try { + applyState(JsonParser.parseString(var0x.body()).getAsJsonObject()); + } catch (Exception var3) { + } + } + }); + return; + case 1550321128: + return; + } + } + } + + private static synchronized void applyState(JsonObject var0) { + HashSet var1 = new HashSet(); + + for (JsonElement var3 : var0.getAsJsonArray("incoming")) { + String var4 = stringOf(var3.getAsJsonObject(), "username"); + if (var4 != null) { + String var5 = var4.toLowerCase(Locale.ROOT); + var1.add(var5); + if (!knownIncoming.contains(var5)) { + anb.pushPopup(new amz(var4, 0, ana.CONFIG_REQUEST)); + } + } + } + + knownIncoming.clear(); + knownIncoming.addAll(var1); + anb.dropPopups(ana.CONFIG_REQUEST, var1x -> { + int var3x = 0; + int var2 = 1990477086; + + while (true) { + switch (var2) { + case -1673598678: + var3x = 0; + var2 = 836080037; + break; + case -1587757489: + var3x = 1; + var2 = 836080037; + break; + case 836080037: + return (boolean)((var3x) != 0); + case 1990477086: + default: + if (!var1.contains(var1x.toLowerCase(Locale.ROOT))) { + var2 = -1587757489; + } else { + var2 = -1673598678; + } + } + } + }); + + for (JsonElement var13 : var0.getAsJsonArray("ready")) { + JsonObject var15 = var13.getAsJsonObject(); + String var17 = stringOf(var15, "username"); + if (var17 != null) { + synchronized (pendingAsks) { + pendingAsks.remove(var17.toLowerCase(Locale.ROOT)); + } + + storeShared(var17, stringOf(var15, "data"), var1x -> { + int var2 = 1157142205; + + while (true) { + switch (var2) { + case -2044740379: + return; + case 438581747: + anb.pushPopup(new amz(var17, 0, ana.CONFIG_READY)); + var2 = -2044740379; + break; + case 1157142205: + default: + if (var1x != null) { + var2 = 438581747; + } else { + var2 = -2044740379; + } + } + } + }); + } + } + + for (JsonElement var14 : var0.getAsJsonArray("declined")) { + String var16 = stringOf(var14.getAsJsonObject(), "username"); + if (var16 != null) { + synchronized (pendingAsks) { + pendingAsks.remove(var16.toLowerCase(Locale.ROOT)); + } + + anb.pushPopup(new amz(var16, 0, ana.CONFIG_DECLINED)); + } + } + } + + private static void send(JsonObject var0, Consumer var1) { + post(var0).whenComplete((var1x, var2) -> { + int var3 = -1934252650; + + while (true) { + switch (var3) { + case -1934252650: + default: + if (var2 == null) { + var3 = 1129839534; + } else { + var3 = -912290592; + } + break; + case -912290592: + deliver(var1, "Network error"); + return; + case -526973731: + deliver(var1, null); + return; + case -432364684: + deliver(var1, describeError(var1x.body())); + return; + case 248259411: + if (var1x.statusCode() == (23484762 ^ -23484562) + ((23484762 & -23484562) << 1)) { + var3 = -526973731; + } else { + var3 = -432364684; + } + break; + case 1129839534: + if (var1x == null) { + var3 = -912290592; + } else { + var3 = 248259411; + } + } + } + }); + } + + private static String describeError(String var0) { + String var1 = ""; + + try { + var1 = stringOf( + JsonParser.parseString(var0).getAsJsonObject(), "error" + ); + } catch (Exception var4) { + } + + String var2 = var1 == null ? "" : var1; + int var3 = -1; + switch (var2.hashCode()) { + case 3526476: + if (var2.equals("self")) { + var3 = 5; + } + break; + case 620910836: + if (var2.equals("unauthorized")) { + var3 = 6; + } + break; + case 1615526678: + if (var2.equals("not_found")) { + var3 = 4; + } + break; + case 1809626183: + if (var2.equals("already_requested")) { + var3 = 1; + } + break; + case 2112493609: + if (var2.equals("not_friends")) { + var3 = 0; + } + break; + case 2138957732: + if (var2.equals("bad_data")) { + var3 = 3; + } + break; + case 2139255429: + if (var2.equals("bad_name")) { + var3 = 2; + } + } + return switch (var3) { + case 0 -> "Only friends can ask"; + case 1 -> "Already asked"; + case 2 -> "Invalid name"; + case 3 -> "Config too large"; + case 4 -> "Config not found"; + case 5 -> "That's you"; + case 6 -> "Sign in first"; + default -> "Something went wrong"; + }; + } + + private static void deliver(Consumer var0, String var1) { + int var2 = -164558839; + + while (true) { + switch (var2) { + case -164558839: + default: + if (var0 == null) { + var2 = 75920223; + } else { + var2 = 819224913; + } + break; + case 75920223: + return; + case 819224913: + Minecraft.getInstance().execute(() -> var0.accept(var1)); + return; + } + } + } + + private static JsonObject actionBody(String var0) { + cr var1 = null; + JsonObject var2 = null; + int var3 = 552102492; + + while (true) { + switch (var3) { + case -1244039428: + if (var1.token() == null) { + var3 = -20570596; + } else { + var3 = 73422265; + } + break; + case -20570596: + return null; + case 73422265: + var2 = new JsonObject(); + var2.addProperty("token", var1.token()); + var2.addProperty("action", var0); + return var2; + case 552102492: + default: + var1 = cp.user(); + if (cp.isAuthorized()) { + var3 = 1247847711; + } else { + var3 = -20570596; + } + break; + case 1247847711: + if (var1 != null) { + var3 = -1244039428; + } else { + var3 = -20570596; + } + } + } + } + + private static CompletableFuture> post(JsonObject var0) { + String var1 = null; + HttpRequest var2 = null; + int var3 = 1426106061; + + while (true) { + switch (var3) { + case 1426106061: + default: + var1 = alp.get("config_share"); + if (var1 == null) { + var3 = 1580847255; + } else { + var3 = 2145107414; + } + break; + case 1580847255: + return CompletableFuture.completedFuture(null); + case 2145107414: + var2 = HttpRequest.newBuilder(URI.create(var1)) + .timeout(Duration.ofSeconds((685888487630309166L | -685888487630309146L) + (685888487630309166L & -685888487630309146L))) + .header( + "Content-Type", + "application/json" + ) + .POST(BodyPublishers.ofString(var0.toString(), StandardCharsets.UTF_8)) + .build(); + return ld.sendAsync(HTTP, var2); + } + } + } + + private static String stringOf(JsonObject var0, String var1) { + String var3 = null; + int var2 = 1116855507; + + while (true) { + switch (var2) { + case -1803223998: + return var3; + case -1466040151: + if (!var0.get(var1).isJsonNull()) { + var2 = 397848612; + } else { + var2 = 821839056; + } + break; + case 397848612: + var3 = var0.get(var1).getAsString(); + var2 = -1803223998; + break; + case 821839056: + var3 = null; + var2 = -1803223998; + break; + case 1116855507: + default: + if (var0.has(var1)) { + var2 = -1466040151; + } else { + var2 = 821839056; + } + } + } + } + + private static int intOf(JsonObject var0, String var1) { + int var3 = 0; + int var2 = -1226954471; + + while (true) { + switch (var2) { + case -2051852214: + if (!var0.get(var1).isJsonNull()) { + var2 = -1093707492; + } else { + var2 = 1231094094; + } + break; + case -1226954471: + default: + if (var0.has(var1)) { + var2 = -2051852214; + } else { + var2 = 1231094094; + } + break; + case -1093707492: + var3 = var0.get(var1).getAsInt(); + var2 = -251820541; + break; + case -251820541: + return var3; + case 1231094094: + var3 = 0; + var2 = -251820541; + } + } + } + + private static long longOf(JsonObject var0, String var1) { + long var3 = (-5689402459535080750L ^ 5689402459535080750L) + ((-5689402459535080750L & 5689402459535080750L) << 1); + int var2 = 1420004584; + + while (true) { + switch (var2) { + case -1845054881: + return var3; + case -556815667: + var3 = var0.get(var1).getAsLong(); + var2 = -1845054881; + break; + case 1420004584: + default: + if (var0.has(var1)) { + var2 = 1783774164; + } else { + var2 = 1733472783; + } + break; + case 1733472783: + var3 = (-4540223628720250594L | 4540223628720250594L) + (-4540223628720250594L & 4540223628720250594L); + var2 = -1845054881; + break; + case 1783774164: + if (!var0.get(var1).isJsonNull()) { + var2 = -556815667; + } else { + var2 = 1733472783; + } + } + } + } +} diff --git a/src/main/java/defpackage/amw.java b/src/main/java/defpackage/amw.java new file mode 100644 index 0000000..c22d2ce --- /dev/null +++ b/src/main/java/defpackage/amw.java @@ -0,0 +1,4 @@ +package defpackage; + +public record amw(boolean mine, String text, long at) { +} diff --git a/src/main/java/defpackage/amx.java b/src/main/java/defpackage/amx.java new file mode 100644 index 0000000..416bfc8 --- /dev/null +++ b/src/main/java/defpackage/amx.java @@ -0,0 +1,4 @@ +package defpackage; + +public record amx(String username, int uid, String role, boolean online, String server, String nick, long lastSeen, int unread, boolean sharing) { +} diff --git a/src/main/java/defpackage/amy.java b/src/main/java/defpackage/amy.java new file mode 100644 index 0000000..2ec242c --- /dev/null +++ b/src/main/java/defpackage/amy.java @@ -0,0 +1,4 @@ +package defpackage; + +public record amy(String username, int uid) { +} diff --git a/src/main/java/defpackage/amz.java b/src/main/java/defpackage/amz.java new file mode 100644 index 0000000..4c95467 --- /dev/null +++ b/src/main/java/defpackage/amz.java @@ -0,0 +1,4 @@ +package defpackage; + +public record amz(String username, int uid, ana kind) { +} diff --git a/src/main/java/defpackage/an.java b/src/main/java/defpackage/an.java new file mode 100644 index 0000000..4a5a932 --- /dev/null +++ b/src/main/java/defpackage/an.java @@ -0,0 +1,189 @@ +package defpackage; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.function.Consumer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.resources.Identifier; +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.server.packs.resources.ResourceManager; + +public class an implements SimpleSynchronousResourceReloadListener { + public Identifier getFabricId() { + return Identifier.fromNamespaceAndPath( + "holdmyitems", + "lua_animation_loader" + ); + } + + private String preprocessScript(String var1) { + if (var1 != null && !var1.isEmpty()) { + Pattern var2 = Pattern.compile( + "global\\.(\\w+)\\s*=\\s*([^;]+)\\s*;" + ); + Pattern var3 = Pattern.compile("\\$\\{(\\w+)\\}"); + HashSet var4 = new HashSet(); + StringBuilder var5 = new StringBuilder(); + boolean var6 = FabricLoader.getInstance() + .isModLoaded("respackopts"); + String[] var7 = var1.split("\\r?\\n"); + int var8 = var7.length; + + for (int var9 = 0; var9 < var8; var9++) { + String var10 = var7[var9]; + if (!var6) { + Matcher var11 = var3.matcher(var10); + StringBuffer var12 = new StringBuffer(); + + while (var11.find()) { + var11.appendReplacement(var12, "0"); + } + + var11.appendTail(var12); + var10 = var12.toString(); + } + + Matcher var18 = var2.matcher(var10); + StringBuffer var19 = new StringBuffer(); + + int var13; + for (var13 = 0; var18.find(); var13 = (-635426822 | 635426823) + (-635426822 & 635426823)) { + String var14 = var18.group((-1722895039 ^ 1722895040) + ((-1722895039 & 1722895040) << 1)); + String var15 = var18.group(2).trim(); + var4.add(var14); + var18.appendReplacement(var19, "local " + var14 + " = registry:getOrDefault('" + var14 + "', " + var15 + ")"); + } + + var18.appendTail(var19); + if (var13 != 0) { + var5.append(var19.toString()); + } else { + var5.append(var10); + } + + var5.append("\n"); + } + + if (!var4.isEmpty()) { + var5.append("\n-- PERSIST VARIABLES\n"); + + for (String var17 : var4) { + var5.append("registry:put('") + .append(var17) + .append("', ") + .append(var17) + .append(")\n"); + } + } + + return var5.toString(); + } else { + return var1; + } + } + + public void onResourceManagerReload(ResourceManager var1) { + af.renderAsBlock.clear(); + af.translateItem.clear(); + af.registry.clear(); + af.useDuration.clear(); + af.applyBlockRotation.clear(); + this.loadSingle(var1, "holdmyitems/hand_pose.lua", var0 -> { + try { + am.handScriptCache = new aj(var0); + } catch (IOException var2) { + throw new RuntimeException(var2); + } + }); + this.loadSingle(var1, "holdmyitems/item_pose.lua", var0 -> { + try { + am.itemScriptCache = new aj(var0); + } catch (IOException var2) { + throw new RuntimeException(var2); + } + }); + this.loadSingle(var1, "holdmyitems/hand_relative_pose.lua", var0 -> { + try { + am.handRelativeScriptCache = new aj(var0); + } catch (IOException var2) { + throw new RuntimeException(var2); + } + }); + this.loadSingle(var1, "holdmyitems/item_model.lua", var0 -> { + try { + am.itemModelCache = new al(var0); + } catch (IOException var2) { + throw new RuntimeException(var2); + } + }); + am.handAddonsCache = this.loadMultiple(var1, "holdmyitems/hand_addon.lua"); + am.handRelativeAddonsCache = this.loadMultiple(var1, "holdmyitems/hand_relative_addon.lua"); + am.itemAddonsCache = this.loadMultiple(var1, "holdmyitems/item_addon.lua"); + am.itemModelAddonsCache = this.loadMultipleModel(var1, "holdmyitems/item_model_addon.lua"); + } + + private void loadSingle(ResourceManager var1, String var2, Consumer var3) { + Identifier var4 = Identifier.fromNamespaceAndPath("minecraft", var2); + + try { + Resource var5 = (Resource)var1.getResource(var4).orElse(null); + if (var5 == null) { + var3.accept(""); + return; + } + + try (InputStream var6 = var5.open()) { + String var7 = new String(var6.readAllBytes(), StandardCharsets.UTF_8); + var7 = this.preprocessScript(var7); + var3.accept(var7); + } + } catch (Exception var11) { + var3.accept(""); + var11.printStackTrace(); + } + } + + private ArrayList loadMultiple(ResourceManager var1, String var2) { + Identifier var3 = Identifier.fromNamespaceAndPath("minecraft", var2); + ArrayList var4 = new ArrayList(); + + try { + for (Resource var6 : var1.getResourceStack(var3)) { + try (InputStream var7 = var6.open()) { + String var8 = new String(var7.readAllBytes(), StandardCharsets.UTF_8); + var8 = this.preprocessScript(var8); + var4.add(new aj(var8)); + } + } + } catch (Exception var12) { + var12.printStackTrace(); + } + + return var4; + } + + private ArrayList loadMultipleModel(ResourceManager var1, String var2) { + Identifier var3 = Identifier.fromNamespaceAndPath("minecraft", var2); + ArrayList var4 = new ArrayList(); + + try { + for (Resource var6 : var1.getResourceStack(var3)) { + try (InputStream var7 = var6.open()) { + String var8 = new String(var7.readAllBytes(), StandardCharsets.UTF_8); + var8 = this.preprocessScript(var8); + var4.add(new al(var8)); + } + } + } catch (Exception var12) { + var12.printStackTrace(); + } + + return var4; + } +} diff --git a/src/main/java/defpackage/ana.java b/src/main/java/defpackage/ana.java new file mode 100644 index 0000000..50a6418 --- /dev/null +++ b/src/main/java/defpackage/ana.java @@ -0,0 +1,48 @@ +package defpackage; + +public enum ana { + REQUEST( + "%s wants to be your friend", + (boolean)((((-924380763 | 924380764) + (-924380763 & 924380764)) + ) != 0)), + ACCEPTED( + "%s accepted your request", + (boolean)((((1882178505 | -1882178505) + (1882178505 & -1882178505)) + ) != 0)), + MESSAGE( + "%s sent you a message", + (boolean)((((1054071042 | -1054071042) + (1054071042 & -1054071042)) + ) != 0)), + CONFIG_REQUEST( + "%s wants your config", + (boolean)((((1621654727 | -1621654726) + (1621654727 & -1621654726)) + ) != 0)), + CONFIG_READY( + "Saved the config from %s", + (boolean)((((658433618 ^ -658433618) + ((658433618 & -658433618) << 1)) + ) != 0)), + CONFIG_DECLINED( + "%s declined to share their config", + (boolean)((((-66548444 ^ 66548444) + ((-66548444 & 66548444) << 1)) + ) != 0)), + CROSSHAIR_REQUEST( + "%s wants your crosshair", + (boolean)((((706571647 | -706571646) + (706571647 & -706571646)) + ) != 0)), + CROSSHAIR_RECEIVED( + "%s sent you a crosshair", + (boolean)((((1809210603 | -1809210602) + (1809210603 & -1809210602)) + ) != 0)); + + final String format; + private final boolean choice; + + ana(String var3, boolean var4) { + this.format = var3; + this.choice = var4; + } + + public boolean needsChoice() { + return this.choice; + } +} diff --git a/src/main/java/defpackage/anb.java b/src/main/java/defpackage/anb.java new file mode 100644 index 0000000..dd67cf6 --- /dev/null +++ b/src/main/java/defpackage/anb.java @@ -0,0 +1,1244 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.HttpRequest.BodyPublishers; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentLinkedDeque; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Predicate; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ServerData; + +public final class anb { + private static final String POLL_FAILURE = "friends poll failed: {}"; + private static final String POLL_STATUS = "friends poll rejected with status {}"; + private static final String STATE_FAILURE = "friends state parse failed"; + private static final String MESSAGES_FAILURE = "friend messages parse failed"; + private static final int INTERVAL_TICKS = 100; + private static final HttpClient HTTP = HttpClient.newBuilder() + .connectTimeout(Duration.ofSeconds((-5036606764493489211L ^ 5036606764493489221L) + ((-5036606764493489211L & 5036606764493489221L) << 1))) + .build(); + private static volatile List friends = List.of(); + private static volatile List incoming = List.of(); + private static volatile List outgoing = List.of(); + private static volatile boolean synced; + private static volatile boolean requestInFlight; + private static final Set knownIncoming = new HashSet<>(); + private static final Set knownOutgoing = new HashSet<>(); + private static final Map knownUnread = new HashMap<>(); + private static boolean unreadSeeded; + private static final ConcurrentLinkedDeque popups = new ConcurrentLinkedDeque<>(); + private static final Map> resolvers = new ConcurrentHashMap<>(); + private static final List> unreadListeners = new CopyOnWriteArrayList<>(); + private static int ticks = 80; + + private anb() { + } + + public static void initialize() { + ClientTickEvents.END_CLIENT_TICK.register(anb::tick); + } + + public static List friends() { + return friends; + } + + public static List incoming() { + return incoming; + } + + public static List outgoing() { + return outgoing; + } + + public static boolean isSynced() { + return synced; + } + + public static int totalUnread() { + int var0 = 0; + Iterator var1 = null; + amx var2 = null; + int var3 = 1272043840; + + while (true) { + switch (var3) { + case -1296145272: + if (var1.hasNext()) { + var3 = 1866065876; + } else { + var3 = -1011020832; + } + break; + case -1011020832: + return var0; + case 1272043840: + default: + var0 = 0; + var1 = friends.iterator(); + var3 = -1296145272; + break; + case 1866065876: + var2 = (amx)var1.next(); + var0 += var2.unread(); + var3 = -1296145272; + } + } + } + + public static amz peekPopup() { + return popups.peekFirst(); + } + + public static void resolvePopup(boolean var0) { + amz var1 = null; + BiConsumer var2 = null; + int var3 = -188389222; + + while (true) { + switch (var3) { + case -1863140103: + var2 = resolvers.get(var1.kind()); + if (var2 != null) { + var3 = -389820591; + } else { + var3 = -572253576; + } + break; + case -572253576: + return; + case -389820591: + var2.accept(var1, var0); + var3 = -572253576; + break; + case -188389222: + default: + var1 = popups.pollFirst(); + if (var1 == null) { + var3 = 1416192121; + } else { + var3 = 1403692265; + } + break; + case 759767984: + amv.respond(var1.username(), var0); + var3 = -572253576; + break; + case 1092355790: + respond(var1.username(), var0, null); + var3 = -572253576; + break; + case 1398673179: + if (var1.kind() == ana.CONFIG_REQUEST) { + var3 = 759767984; + } else { + var3 = -1863140103; + } + break; + case 1403692265: + if (var1.kind() == ana.REQUEST) { + var3 = 1092355790; + } else { + var3 = 1398673179; + } + break; + case 1416192121: + return; + } + } + } + + public static String describe(amz var0) { + String var10000 = var0.kind().format; + Object[] var10001 = new Object[1]; + var10001[0] = var0.username(); + return String.format(var10000, var10001); + } + + public static void registerResolver(ana var0, BiConsumer var1) { + resolvers.put(var0, var1); + } + + public static void addUnreadListener(BiConsumer var0) { + unreadListeners.add(var0); + } + + public static void pushPopup(amz var0) { + int var1 = 0; + int var2 = 858075622; + + while (true) { + switch (var2) { + case -157197841: + return; + case 50524796: + popups.addLast(var0); + var2 = -157197841; + break; + case 858075622: + default: + boolean var3 = popups.stream().anyMatch(var1x -> { + int var3x = 0; + int var2x = 606842; + + while (true) { + switch (var2x) { + case 606842: + default: + if (var1x.kind() == var0.kind()) { + var2x = 420909100; + } else { + var2x = 2135499814; + } + break; + case 89191935: + var3x = 1; + var2x = 1481141420; + break; + case 420909100: + if (var1x.username().equalsIgnoreCase(var0.username())) { + var2x = 89191935; + } else { + var2x = 2135499814; + } + break; + case 1481141420: + return (boolean)((var3x) != 0); + case 2135499814: + var3x = 0; + var2x = 1481141420; + } + } + }); + if (!var3) { + var2 = 50524796; + } else { + var2 = -157197841; + } + } + } + } + + public static void dropPopups(ana var0, Predicate var1) { + popups.removeIf(var2 -> { + int var4 = 0; + int var3 = -1657895289; + + while (true) { + switch (var3) { + case -1657895289: + default: + if (var2.kind() == var0) { + var3 = -1468033397; + } else { + var3 = 286394785; + } + break; + case -1468033397: + if (var1.test(var2.username())) { + var3 = 1452201772; + } else { + var3 = 286394785; + } + break; + case 286394785: + var4 = 0; + var3 = 1839246351; + break; + case 1452201772: + var4 = 1; + var3 = 1839246351; + break; + case 1839246351: + return (boolean)((var4) != 0); + } + } + }); + } + + public static void dismissPopup() { + popups.pollFirst(); + } + + public static void request(String var0, Consumer var1) { + JsonObject var2 = null; + int var3 = -912197847; + + while (true) { + switch (var3) { + case -912197847: + default: + var2 = actionBody("request"); + if (var2 == null) { + var3 = -442468751; + } else { + var3 = -381688875; + } + break; + case -442468751: + deliver(var1, "Sign in first"); + return; + case -381688875: + var2.addProperty("username", var0); + send(var2, var1); + return; + } + } + } + + public static void respond(String var0, boolean var1, Consumer var2) { + JsonObject var3 = null; + int var4 = 1974035001; + + while (true) { + switch (var4) { + case -2089190231: + deliver(var2, "Sign in first"); + return; + case -1750254688: + var3.addProperty("username", var0); + var3.addProperty("accept", var1); + send(var3, var2); + return; + case 1974035001: + } + + var3 = actionBody("respond"); + if (var3 == null) { + var4 = -2089190231; + } else { + var4 = -1750254688; + } + } + } + + public static void remove(String var0, Consumer var1) { + JsonObject var2 = null; + int var3 = 1813352261; + + while (true) { + switch (var3) { + case -857064167: + var2.addProperty("username", var0); + removeLocally(var0); + send(var2, var1); + return; + case -750792787: + deliver(var1, "Sign in first"); + return; + case 1813352261: + } + + var2 = actionBody("remove"); + if (var2 == null) { + var3 = -750792787; + } else { + var3 = -857064167; + } + } + } + + private static synchronized void removeLocally(String var0) { + friends = friends.stream().filter(var1 -> { + int var3 = 0; + int var2 = -794323064; + + while (true) { + switch (var2) { + case -889492760: + var3 = 1; + var2 = -293827371; + break; + case -794323064: + default: + if (!var1.username().equalsIgnoreCase(var0)) { + var2 = -889492760; + } else { + var2 = -451451478; + } + break; + case -451451478: + var3 = 0; + var2 = -293827371; + break; + case -293827371: + return (boolean)((var3) != 0); + } + } + }).toList(); + outgoing = outgoing.stream().filter(var1 -> { + int var3 = 0; + int var2 = -1498597170; + + while (true) { + switch (var2) { + case -1498597170: + default: + if (!var1.username().equalsIgnoreCase(var0)) { + var2 = -246457992; + } else { + var2 = 1353681213; + } + break; + case -246457992: + var3 = 1; + var2 = -216701934; + break; + case -216701934: + return (boolean)((var3) != 0); + case 1353681213: + var3 = 0; + var2 = -216701934; + } + } + }).toList(); + } + + private static void tick(Minecraft var0) { + JsonObject var1 = null; + ServerData var2 = null; + String var3 = null; + String var5 = null; + int var4 = -731299275; + + while (true) { + switch (var4) { + case -2016140357: + return; + case -1861262384: + if ((ticks += (-544181622 ^ 544181623) + ((-544181622 & 544181623) << 1)) < (2048536879 ^ -2048536779) + ((2048536879 & -2048536779) << 1)) { + var4 = -2016140357; + } else { + var4 = -1016445847; + } + break; + case -1571914648: + return; + case -1501625266: + requestInFlight = (boolean)(((1)) != 0); + post(var1) + .whenComplete( + (var0x, var1x) -> { + requestInFlight = (boolean)(((0)) != 0); + if (var1x != null) { + id.warn( + Cif.SOCIAL, + "friends poll failed: {}", + var1x.toString() + ); + } else if (var0x != null) { + if (var0x.statusCode() != (-19428127 ^ 19428327) + ((-19428127 & 19428327) << 1)) { + id.warn( + Cif.SOCIAL, + "friends poll rejected with status {}", + var0x.statusCode() + ); + } else { + try { + applyState(JsonParser.parseString(var0x.body()).getAsJsonObject()); + } catch (Exception var3x) { + id.warn( + Cif.SOCIAL, + "friends state parse failed", + var3x + ); + } + } + } + } + ); + return; + case -1016445847: + ticks = 0; + var1 = actionBody("state"); + if (var1 == null) { + var4 = -1571914648; + } else { + var4 = 790516389; + } + break; + case -787144911: + var3 = var5; + if (var3 != null) { + var4 = 1866102593; + } else { + var4 = 329588409; + } + break; + case -731299275: + default: + if (!requestInFlight) { + var4 = -1861262384; + } else { + var4 = -2016140357; + } + break; + case -651680044: + var5 = var2.ip; + var4 = -787144911; + break; + case -516316272: + var5 = null; + var4 = -787144911; + break; + case 329588409: + if (var0.player != null) { + var4 = 511592416; + } else { + var4 = -1501625266; + } + break; + case 511592416: + var1.addProperty("nick", var0.player.getScoreboardName()); + var4 = -1501625266; + break; + case 790516389: + var2 = var0.getCurrentServer(); + if (var2 != null) { + var4 = -651680044; + } else { + var4 = 1343109714; + } + break; + case 792967201: + var5 = "Singleplayer"; + var4 = -787144911; + break; + case 1343109714: + if (var0.level != null) { + var4 = 792967201; + } else { + var4 = -516316272; + } + break; + case 1866102593: + var1.addProperty("server", var3); + var4 = 329588409; + } + } + } + + private static synchronized void applyState(JsonObject var0) { + ArrayList var1 = new ArrayList(); + + for (JsonElement var3 : var0.getAsJsonArray("friends")) { + JsonObject var4 = var3.getAsJsonObject(); + var1.add( + new amx( + stringOf(var4, "username"), + intOf(var4, "uid"), + stringOf(var4, "role"), + (boolean)(((var4.has("online") + && var4.get("online").getAsBoolean() + ? 1: (2000411774 | -2000411774) + (2000411774 & -2000411774))) != 0), + stringOf(var4, "server"), + stringOf(var4, "nick"), + var4.has("lastSeen") + ? var4.get("lastSeen").getAsLong() + : (-3950372344002685494L ^ 3950372344002685494L) + ((-3950372344002685494L & 3950372344002685494L) << 1), + intOf(var4, "unread"), + booleanOf(var4, "sharing") + ) + ); + } + + anl.applySelfState( + booleanOf(var0, "shareInventory"), + booleanOf(var0, "invWatched") + ); + List var13 = requestsOf(var0.getAsJsonArray("incoming")); + List var14 = requestsOf(var0.getAsJsonArray("outgoing")); + HashSet var15 = new HashSet(); + + for (amy var6 : var13) { + String var7 = var6.username().toLowerCase(Locale.ROOT); + var15.add(var7); + if (!knownIncoming.contains(var7)) { + popups.addLast(new amz(var6.username(), var6.uid(), ana.REQUEST)); + } + } + + knownIncoming.clear(); + knownIncoming.addAll(var15); + popups.removeIf(var1x -> { + int var3x = 0; + int var2 = 938145599; + + while (true) { + switch (var2) { + case -1764665689: + if (!var15.contains(var1x.username().toLowerCase(Locale.ROOT))) { + var2 = 1486138009; + } else { + var2 = 429603601; + } + break; + case 429603601: + var3x = 0; + var2 = 1090670174; + break; + case 938145599: + default: + if (var1x.kind() == ana.REQUEST) { + var2 = -1764665689; + } else { + var2 = 429603601; + } + break; + case 1090670174: + return (boolean)((var3x) != 0); + case 1486138009: + var3x = 1; + var2 = 1090670174; + } + } + }); + HashSet var16 = new HashSet(); + + for (amx var22 : friends) { + var16.add(var22.username().toLowerCase(Locale.ROOT)); + } + + for (amx var23 : var1) { + String var8 = var23.username().toLowerCase(Locale.ROOT); + if (!var16.contains(var8) && knownOutgoing.contains(var8)) { + popups.addLast(new amz(var23.username(), var23.uid(), ana.ACCEPTED)); + } + } + + knownOutgoing.clear(); + + for (amy var24 : var14) { + knownOutgoing.add(var24.username().toLowerCase(Locale.ROOT)); + } + + for (amx var25 : var1) { + String var27 = var25.username().toLowerCase(Locale.ROOT); + int var9 = knownUnread.getOrDefault(var27, (-1366122340 | 1366122340) + (-1366122340 & 1366122340)); + if (unreadSeeded && var25.unread() > var9) { + int var10 = var25.unread() - var9; + + for (BiConsumer var12 : unreadListeners) { + var12.accept(var25.username(), var10); + } + + boolean var28 = popups.stream().anyMatch(var1x -> { + int var3x = 0; + int var2 = 749129470; + + while (true) { + switch (var2) { + case -2011040120: + return (boolean)((var3x) != 0); + case -905760303: + if (var1x.username().equalsIgnoreCase(var25.username())) { + var2 = 1127142255; + } else { + var2 = -634028423; + } + break; + case -634028423: + var3x = 0; + var2 = -2011040120; + break; + case 749129470: + default: + if (var1x.kind() == ana.MESSAGE) { + var2 = -905760303; + } else { + var2 = -634028423; + } + break; + case 1127142255: + var3x = 1; + var2 = -2011040120; + } + } + }); + if (!var28) { + popups.addLast(new amz(var25.username(), var25.uid(), ana.MESSAGE)); + } + } + } + + knownUnread.clear(); + + for (amx var26 : var1) { + knownUnread.put(var26.username().toLowerCase(Locale.ROOT), var26.unread()); + } + + unreadSeeded = (boolean)(((1)) != 0); + friends = List.copyOf(var1); + incoming = List.copyOf(var13); + outgoing = List.copyOf(var14); + synced = (boolean)(((1)) != 0); + } + + private static List requestsOf(JsonArray var0) { + ArrayList var1 = null; + Iterator var2 = null; + JsonElement var3 = null; + JsonObject var4 = null; + int var5 = -744975665; + + while (true) { + switch (var5) { + case -1790220976: + var3 = (JsonElement)var2.next(); + var4 = var3.getAsJsonObject(); + var1.add( + new amy( + stringOf(var4, "username"), + intOf(var4, "uid") + ) + ); + var5 = 719220600; + break; + case -744975665: + default: + var1 = new ArrayList(); + var2 = var0.iterator(); + var5 = 719220600; + break; + case 719220600: + if (var2.hasNext()) { + var5 = -1790220976; + } else { + var5 = 995570160; + } + break; + case 995570160: + return var1; + } + } + } + + private static void send(JsonObject var0, Consumer var1) { + post(var0).whenComplete((var1x, var2) -> { + int var3 = 1654797387; + + while (true) { + switch (var3) { + case -1942690587: + if (var1x == null) { + var3 = -181746207; + } else { + var3 = 785084192; + } + break; + case -1827289072: + deliver(var1, describeError(var1x.body())); + return; + case -1221169765: + deliver(var1, null); + refreshNow(); + return; + case -181746207: + deliver(var1, "Network error"); + return; + case 785084192: + if (var1x.statusCode() == (-2067342048 | 2067342248) + (-2067342048 & 2067342248)) { + var3 = -1221169765; + } else { + var3 = -1827289072; + } + break; + case 1654797387: + default: + if (var2 == null) { + var3 = -1942690587; + } else { + var3 = -181746207; + } + } + } + }); + } + + private static void refreshNow() { + ticks = 100; + } + + static String describeError(String var0) { + String var1 = ""; + + try { + JsonObject var2 = JsonParser.parseString(var0).getAsJsonObject(); + var1 = stringOf(var2, "error"); + } catch (Exception var4) { + } + + String var5 = var1 == null ? "" : var1; + int var3 = -1; + switch (var5.hashCode()) { + case -1092095024: + if (var5.equals("bad_username")) { + var3 = 4; + } + break; + case -375469906: + if (var5.equals("already_friends")) { + var3 = 2; + } + break; + case 3526476: + if (var5.equals("self")) { + var3 = 1; + } + break; + case 79822732: + if (var5.equals("sharing_off")) { + var3 = 6; + } + break; + case 620910836: + if (var5.equals("unauthorized")) { + var3 = 8; + } + break; + case 1615526678: + if (var5.equals("not_found")) { + var3 = 0; + } + break; + case 1809626183: + if (var5.equals("already_requested")) { + var3 = 3; + } + break; + case 2112493609: + if (var5.equals("not_friends")) { + var3 = 5; + } + break; + case 2138957732: + if (var5.equals("bad_data")) { + var3 = 7; + } + } + return switch (var3) { + case 0 -> "Player not found"; + case 1 -> "That's you"; + case 2 -> "Already friends"; + case 3 -> "Request already sent"; + case 4 -> "Invalid username"; + case 5 -> "Only friends can do that"; + case 6 -> "Inventory sharing is off"; + case 7 -> "Inventory too large"; + case 8 -> "Sign in first"; + default -> "Something went wrong"; + }; + } + + static void deliver(Consumer var0, String var1) { + int var2 = 970468740; + + while (true) { + switch (var2) { + case -973945171: + Minecraft.getInstance().execute(() -> var0.accept(var1)); + return; + case 28120913: + return; + case 970468740: + } + + if (var0 == null) { + var2 = 28120913; + } else { + var2 = -973945171; + } + } + } + + public static JsonObject actionBody(String var0) { + cr var1 = null; + JsonObject var2 = null; + int var3 = 1411623015; + + while (true) { + switch (var3) { + case -1943781211: + return null; + case 180032284: + if (var1 != null) { + var3 = 794129827; + } else { + var3 = -1943781211; + } + break; + case 479911282: + var2 = new JsonObject(); + var2.addProperty("token", var1.token()); + var2.addProperty("action", var0); + return var2; + case 794129827: + if (var1.token() == null) { + var3 = -1943781211; + } else { + var3 = 479911282; + } + break; + case 1411623015: + default: + var1 = cp.user(); + if (cp.isAuthorized()) { + var3 = 180032284; + } else { + var3 = -1943781211; + } + } + } + } + + public static CompletableFuture> post(JsonObject var0) { + return postTo("friends", var0); + } + + private static CompletableFuture> postTo(String var0, JsonObject var1) { + String var2 = null; + HttpRequest var3 = null; + int var4 = -2002971791; + + while (true) { + switch (var4) { + case -2002971791: + default: + var2 = alp.get(var0); + if (var2 == null) { + var4 = 103125568; + } else { + var4 = 2075261120; + } + break; + case 103125568: + return CompletableFuture.completedFuture(null); + case 2075261120: + var3 = HttpRequest.newBuilder(URI.create(var2)) + .timeout(Duration.ofSeconds((-4780821882189263666L ^ 4780821882189263681L) + ((-4780821882189263666L & 4780821882189263681L) << 1))) + .header( + "Content-Type", + "application/json" + ) + .POST(BodyPublishers.ofString(var1.toString(), StandardCharsets.UTF_8)) + .build(); + return ld.sendAsync(HTTP, var3); + } + } + } + + public static void thread(String var0, Consumer> var1) { + JsonObject var2 = null; + int var3 = -133832298; + + while (true) { + switch (var3) { + case -133832298: + default: + var2 = actionBody("thread"); + if (var2 == null) { + var3 = 2117443162; + } else { + var3 = 1164271206; + } + break; + case 1164271206: + var2.addProperty("username", var0); + postTo("messages", var2) + .whenComplete( + (var1x, var2x) -> { + ArrayList var3x = null; + if (var2x == null && var1x != null && var1x.statusCode() == (-1010493389 ^ 1010493589) + ((-1010493389 & 1010493589) << 1)) { + try { + ArrayList var4 = new ArrayList(); + JsonObject var5 = JsonParser.parseString(var1x.body()).getAsJsonObject(); + + for (JsonElement var7 : var5.getAsJsonArray( + "messages" + )) { + JsonObject var8 = var7.getAsJsonObject(); + var4.add( + new amw( + "me" + .equals(stringOf(var8, "from")), + stringOf(var8, "text"), + var8.has("at") + && !var8.get("at").isJsonNull() + ? var8.get("at").getAsLong() + : (468226497980111056L | -468226497980111056L) + (468226497980111056L & -468226497980111056L) + ) + ); + } + + var3x = var4; + } catch (Exception var9) { + id.warn( + Cif.SOCIAL, + "friend messages parse failed", + var9 + ); + var3x = null; + } + } + + deliverList(var1, var3x); + } + ); + return; + case 2117443162: + deliverList(var1, null); + return; + } + } + } + + public static void sendMessage(String var0, String var1, Consumer var2) { + JsonObject var3 = null; + int var4 = -270418680; + + while (true) { + switch (var4) { + case -1050503430: + var3.addProperty("username", var0); + var3.addProperty("text", var1); + postTo("messages", var3).whenComplete((var1x, var2x) -> { + int var3x = 1718262854; + + while (true) { + switch (var3x) { + case -341150576: + if (var1x == null) { + var3x = -155595702; + } else { + var3x = 1862469432; + } + break; + case -155595702: + deliver(var2, "Network error"); + return; + case -96643976: + deliver(var2, null); + return; + case 1628957296: + deliver(var2, describeError(var1x.body())); + return; + case 1718262854: + default: + if (var2x == null) { + var3x = -341150576; + } else { + var3x = -155595702; + } + break; + case 1862469432: + if (var1x.statusCode() == (-866594221 ^ 866594421) + ((-866594221 & 866594421) << 1)) { + var3x = -96643976; + } else { + var3x = 1628957296; + } + } + } + }); + return; + case -270418680: + default: + var3 = actionBody("send"); + if (var3 == null) { + var4 = 403946608; + } else { + var4 = -1050503430; + } + break; + case 403946608: + deliver(var2, "Sign in first"); + return; + } + } + } + + private static void deliverList(Consumer> var0, List var1) { + int var2 = -837621349; + + while (true) { + switch (var2) { + case -1522338376: + return; + case -837621349: + default: + if (var0 == null) { + var2 = -1522338376; + } else { + var2 = -244008275; + } + break; + case -244008275: + Minecraft.getInstance().execute(() -> var0.accept(var1)); + return; + } + } + } + + static String stringOf(JsonObject var0, String var1) { + String var3 = null; + int var2 = 299315484; + + while (true) { + switch (var2) { + case -1850788918: + return var3; + case 299315484: + default: + if (var0.has(var1)) { + var2 = 1684948948; + } else { + var2 = 2106094216; + } + break; + case 987078064: + var3 = var0.get(var1).getAsString(); + var2 = -1850788918; + break; + case 1684948948: + if (!var0.get(var1).isJsonNull()) { + var2 = 987078064; + } else { + var2 = 2106094216; + } + break; + case 2106094216: + var3 = null; + var2 = -1850788918; + } + } + } + + private static int intOf(JsonObject var0, String var1) { + int var3 = 0; + int var2 = -1143743658; + + while (true) { + switch (var2) { + case -1143743658: + default: + if (var0.has(var1)) { + var2 = 1434558613; + } else { + var2 = 2143590914; + } + break; + case -384748509: + return var3; + case 1217139641: + var3 = var0.get(var1).getAsInt(); + var2 = -384748509; + break; + case 1434558613: + if (!var0.get(var1).isJsonNull()) { + var2 = 1217139641; + } else { + var2 = 2143590914; + } + break; + case 2143590914: + var3 = 0; + var2 = -384748509; + } + } + } + + static boolean booleanOf(JsonObject var0, String var1) { + int var3 = 0; + int var2 = -643959393; + + while (true) { + switch (var2) { + case -2021200040: + var3 = 0; + var2 = 1016421956; + break; + case -1778156812: + var3 = 1; + var2 = 1016421956; + break; + case -1284121767: + if (var0.get(var1).getAsBoolean()) { + var2 = -1778156812; + } else { + var2 = -2021200040; + } + break; + case -643959393: + default: + if (var0.has(var1)) { + var2 = 1063651625; + } else { + var2 = -2021200040; + } + break; + case 1016421956: + return (boolean)((var3) != 0); + case 1063651625: + if (!var0.get(var1).isJsonNull()) { + var2 = -1284121767; + } else { + var2 = -2021200040; + } + } + } + } + + static long longOf(JsonObject var0, String var1) { + long var3 = (6568906504259053270L ^ -6568906504259053270L) + ((6568906504259053270L & -6568906504259053270L) << 1); + int var2 = -1348045241; + + while (true) { + switch (var2) { + case -1348045241: + default: + if (var0.has(var1)) { + var2 = 1490149096; + } else { + var2 = 1496961069; + } + break; + case -363891062: + return var3; + case 1353444672: + var3 = var0.get(var1).getAsLong(); + var2 = -363891062; + break; + case 1490149096: + if (!var0.get(var1).isJsonNull()) { + var2 = 1353444672; + } else { + var2 = 1496961069; + } + break; + case 1496961069: + var3 = (-1752784592688344599L | 1752784592688344599L) + (-1752784592688344599L & 1752784592688344599L); + var2 = -363891062; + } + } + } +} diff --git a/src/main/java/defpackage/anc.java b/src/main/java/defpackage/anc.java new file mode 100644 index 0000000..4a90765 --- /dev/null +++ b/src/main/java/defpackage/anc.java @@ -0,0 +1,4 @@ +package defpackage; + +public record anc(float cursorX, float cursorY, float scroll, boolean pressed) { +} diff --git a/src/main/java/defpackage/and.java b/src/main/java/defpackage/and.java new file mode 100644 index 0000000..e00c630 --- /dev/null +++ b/src/main/java/defpackage/and.java @@ -0,0 +1,6 @@ +package defpackage; + +import java.util.List; + +record and(int header, int cards, List frames) { +} diff --git a/src/main/java/defpackage/ane.java b/src/main/java/defpackage/ane.java new file mode 100644 index 0000000..24f82a6 --- /dev/null +++ b/src/main/java/defpackage/ane.java @@ -0,0 +1,4 @@ +package defpackage; + +record ane(long at, anc frame) { +} diff --git a/src/main/java/defpackage/anf.java b/src/main/java/defpackage/anf.java new file mode 100644 index 0000000..c6c9d2b --- /dev/null +++ b/src/main/java/defpackage/anf.java @@ -0,0 +1,171 @@ +package defpackage; + +import java.util.ArrayDeque; +import java.util.Iterator; +import java.util.List; +import net.minecraft.util.Mth; + +final class anf { + int header; + int cards; + final ArrayDeque queue = new ArrayDeque<>(); + private ane last; + long playbackCursor; + long payloadAt; + long freshAt; + boolean closed; + boolean visible; + long shownAt; + long hiddenAt; + + anf() { + } + + void enqueue(List var1, long var2) { + long var4 = (2747816379226461011L ^ -2747816379226461011L) + ((2747816379226461011L & -2747816379226461011L) << 1); + Iterator var6 = null; + anc var7 = null; + int var8 = -1114367649; + + while (true) { + switch (var8) { + case -2002595744: + if (this.queue.size() > (423952665 | -423952633) + (423952665 & -423952633)) { + var8 = 1126760920; + } else { + var8 = -664022069; + } + break; + case -1330352560: + var4 = var2 + (3542170767803223571L ^ -3542170767803223271L) + ((3542170767803223571L & -3542170767803223271L) << 1); + var8 = 2038912421; + break; + case -1236198530: + var7 = (anc)var6.next(); + this.queue.addLast(new ane(var4, var7)); + var4 += (-2887410142894043070L | 2887410142894043170L) + (-2887410142894043070L & 2887410142894043170L); + var8 = 150022687; + break; + case -1114367649: + default: + var4 = this.playbackCursor; + if (var4 >= var2) { + var8 = -318375630; + } else { + var8 = -1330352560; + } + break; + case -687095890: + this.playbackCursor = var4; + var8 = -2002595744; + break; + case -664022069: + return; + case -318375630: + if (var4 > var2 + (1089881957112956253L | -1089881957112954753L) + (1089881957112956253L & -1089881957112954753L)) { + var8 = -1330352560; + } else { + var8 = 2038912421; + } + break; + case 150022687: + if (var6.hasNext()) { + var8 = -1236198530; + } else { + var8 = -687095890; + } + break; + case 1126760920: + this.last = this.queue.pollFirst(); + var8 = -2002595744; + break; + case 2038912421: + var6 = var1.iterator(); + var8 = 150022687; + } + } + } + + anc frameAt(long var1) { + ane var3 = null; + long var4 = (-1064578564996464336L | 1064578564996464336L) + (-1064578564996464336L & 1064578564996464336L); + float var6 = 0.0F; + anc var8 = null; + int var7 = -1290644712; + + while (true) { + switch (var7) { + case -1517840168: + if (this.queue.peekFirst().at() <= var1) { + var7 = 696460293; + } else { + var7 = 1993245863; + } + break; + case -1290644712: + default: + if (!this.queue.isEmpty()) { + var7 = -1517840168; + } else { + var7 = 1993245863; + } + break; + case -1226383527: + return var8; + case -461574720: + var8 = var3.frame(); + var7 = -1226383527; + break; + case -24479269: + var6 = Mth.clamp((float)(var1 - this.last.at()) / (float)var4, 0.0F, 1.0F); + return new anc( + Mth.lerp(var6, this.last.frame().cursorX(), var3.frame().cursorX()), + Mth.lerp(var6, this.last.frame().cursorY(), var3.frame().cursorY()), + Mth.lerp(var6, this.last.frame().scroll(), var3.frame().scroll()), + var3.frame().pressed() + ); + case 575917408: + return var3.frame(); + case 696460293: + this.last = this.queue.pollFirst(); + var7 = -1290644712; + break; + case 1101057858: + if (var3 == null) { + var7 = 1831844180; + } else { + var7 = -461574720; + } + break; + case 1489009473: + var4 = var3.at() - this.last.at(); + if (var4 <= (-6918883115486404127L ^ 6918883115486404127L) + ((-6918883115486404127L & 6918883115486404127L) << 1)) { + var7 = 575917408; + } else { + var7 = -24479269; + } + break; + case 1572102936: + return this.last.frame(); + case 1831844180: + var8 = null; + var7 = -1226383527; + break; + case 1993245863: + var3 = this.queue.peekFirst(); + if (this.last == null) { + var7 = 1101057858; + } else { + var7 = 2101154972; + } + break; + case 2101154972: + if (var3 == null) { + var7 = 1572102936; + } else { + var7 = 1489009473; + } + } + } + } +} diff --git a/src/main/java/defpackage/ang.java b/src/main/java/defpackage/ang.java new file mode 100644 index 0000000..c117efa --- /dev/null +++ b/src/main/java/defpackage/ang.java @@ -0,0 +1,4 @@ +package defpackage; + +public record ang(rl category, int cards, int columns, boolean sidebarExpanded, boolean searching, anc frame, float fade) { +} diff --git a/src/main/java/defpackage/anh.java b/src/main/java/defpackage/anh.java new file mode 100644 index 0000000..05b34ee --- /dev/null +++ b/src/main/java/defpackage/anh.java @@ -0,0 +1,1065 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Base64; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Base64.Decoder; +import java.util.Base64.Encoder; +import java.util.Map.Entry; +import java.util.concurrent.ConcurrentHashMap; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ServerData; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.util.Mth; + +public final class anh { + private static final String PUSH_FAILURE = "gui presence request failed: {}"; + private static final String STATUS_FAILURE = "gui presence rejected with status {}"; + private static final String RESPONSE_FAILURE = "gui presence response parse failed"; + private static final String GUI_DIAG = "gui sync {}"; + private static final String ACTION_GUI = "gui"; + private static final String KEY_UUID = "uuid"; + private static final int MAX_IDENTITY_LENGTH = 32; + private static final String KEY_SERVER = "server"; + private static final String KEY_GUI = "gui"; + private static final String KEY_WANT = "want"; + private static final String KEY_PLAYERS = "players"; + private static final String KEY_DATA = "g"; + private static final String KEY_AT = "at"; + private static final String KEY_WATCH = "watch"; + private static final String KEY_WATCH_ROW = "w"; + private static final String SINGLEPLAYER_KEY = "Singleplayer"; + private static final byte PAYLOAD_VERSION = 1; + private static final int HEADER_BYTES = 4; + private static final int SAMPLE_BYTES = 4; + private static final int MAX_SAMPLES = 8; + private static final int MAX_CARDS = 255; + private static final int QUANTIZE_RANGE = 255; + private static final int MASK_CATEGORY = 15; + private static final int BIT_SIDEBAR = 16; + private static final int BIT_THREE_COLUMNS = 32; + private static final int BIT_SEARCHING = 64; + private static final int BIT_CLOSED = 128; + private static final int COLUMNS_TWO = 2; + private static final int COLUMNS_THREE = 3; + private static final long SAMPLE_INTERVAL_MS = 100L; + private static final long LOCAL_TIMEOUT_MS = 250L; + private static final long REMOTE_TIMEOUT_MS = 2500L; + private static final long PLAYBACK_DELAY_MS = 300L; + private static final long MAX_BUFFER_MS = 1500L; + private static final long FADE_MS = 220L; + private static final int ACTIVE_INTERVAL_TICKS = 10; + private static final int DISCOVERY_INTERVAL_TICKS = 40; + private static final int MAX_WANT = 24; + private static final int MAX_QUEUE = 32; + private static final Encoder ENCODER = Base64.getUrlEncoder().withoutPadding(); + private static final Decoder DECODER = Base64.getUrlDecoder(); + private static final Map tracks = new ConcurrentHashMap<>(); + private static final ArrayDeque localSamples = new ArrayDeque<>(); + private static int localHeader; + private static int localCards; + private static anc localFrame; + private static long lastCaptureAt; + private static long lastSampleAt; + private static boolean publishedOpen; + private static volatile boolean requestInFlight; + private static int ticks; + + private anh() { + } + + public static void initialize() { + ClientTickEvents.END_CLIENT_TICK.register(anh::tick); + } + + public static void capture(rl var0, int var1, int var2, boolean var3, boolean var4, float var5, float var6, float var7, boolean var8) { + int var9 = 0; + long var10 = (1905735419498817439L | -1905735419498817439L) + (1905735419498817439L & -1905735419498817439L); + int var12 = 1317347199; + + while (true) { + switch (var12) { + case -2142995001: + lastSampleAt = var10; + localSamples.addLast(localFrame); + var12 = 1118254718; + break; + case -1860731383: + var9 = var0.ordinal() & 15; + if (var3) { + var12 = -94758267; + } else { + var12 = 243774922; + } + break; + case -1291606563: + var9 |= 64; + var12 = -929541841; + break; + case -1043183207: + return; + case -929541841: + localHeader = var9; + localCards = Mth.clamp(var1, 0, (715497155 | -715496900) + (715497155 & -715496900)); + localFrame = new anc(Mth.clamp(var5, 0.0F, 1.0F), Mth.clamp(var6, 0.0F, 1.0F), Mth.clamp(var7, 0.0F, 1.0F), var8); + var10 = System.currentTimeMillis(); + lastCaptureAt = var10; + if (var10 - lastSampleAt < (8589255879215729614L ^ -8589255879215729514L) + ((8589255879215729614L & -8589255879215729514L) << 1)) { + var12 = 1505798512; + } else { + var12 = -2142995001; + } + break; + case -94758267: + var9 |= 16; + var12 = 243774922; + break; + case 243774922: + if (var2 >= (-1943923243 ^ 1943923246) + ((-1943923243 & 1943923246) << 1)) { + var12 = 655698134; + } else { + var12 = 1068720563; + } + break; + case 655698134: + var9 |= 32; + var12 = 1068720563; + break; + case 1068720563: + if (var4) { + var12 = -1291606563; + } else { + var12 = -929541841; + } + break; + case 1118254718: + if (localSamples.size() > (1350857277 ^ -1350857269) + ((1350857277 & -1350857269) << 1)) { + var12 = 1381742462; + } else { + var12 = -1043183207; + } + break; + case 1317347199: + default: + if (vd.INSTANCE.isEnabled()) { + var12 = 1585121107; + } else { + var12 = 1681892124; + } + break; + case 1381742462: + localSamples.pollFirst(); + var12 = 1118254718; + break; + case 1505798512: + return; + case 1585121107: + if (!vd.INSTANCE.isSharing()) { + var12 = 1681892124; + } else { + var12 = -1860731383; + } + break; + case 1681892124: + return; + } + } + } + + public static ang viewOf(AbstractClientPlayer var0) { + String var1 = identityOf(var0); + anf var2 = var1 == null ? null : tracks.get(var1); + if (var2 == null) { + return null; + } + + long var3 = System.currentTimeMillis(); + int var5 = !var2.closed && var3 - var2.freshAt < (-5357116138896366260L ^ 5357116138896368760L) + ((-5357116138896366260L & 5357116138896368760L) << 1) + ? 1: 0; + if (var5 != var2.visible) { + var2.visible = (boolean)((var5) != 0); + if (var5 != 0) { + var2.shownAt = var3; + } else { + var2.hiddenAt = var3; + } + } + + float var6 = var5 != 0 + ? Mth.clamp((float)(var3 - var2.shownAt) / 220.0F, 0.0F, 1.0F) + : 1.0F - Mth.clamp((float)(var3 - var2.hiddenAt) / 220.0F, 0.0F, 1.0F); + if (var6 <= 0.0F) { + return null; + } + + anc var7 = var2.frameAt(var3); + if (var7 == null) { + return null; + } + + int var8 = var2.header; + rl[] var9 = rl.values(); + int var10 = var8 & 15; + rl var11 = var10 < var9.length ? var9[var10] : var9[0]; + return new ang( + var11, + var2.cards, + (var8 & (880893146 ^ -880893114) + ((880893146 & -880893114) << 1)) != 0 + ? 3: 2, + (boolean)((((var8 & (57433340 ^ -57433324) + ((57433340 & -57433324) << 1)) != 0 + ? 1: (-1494548388 | 1494548388) + (-1494548388 & 1494548388))) != 0), + (boolean)((((var8 & (656601499 ^ -656601435) + ((656601499 & -656601435) << 1)) != 0 + ? 1: (1481993062 | -1481993062) + (1481993062 & -1481993062))) != 0), + var7, + var6 + ); + } + + private static void tick(Minecraft var0) { + long var1 = (4851928920623774928L ^ -4851928920623774928L) + ((4851928920623774928L & -4851928920623774928L) << 1); + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 0; + JsonObject var7 = null; + String var8 = null; + String var9 = null; + JsonArray var10 = null; + String var11 = null; + int var12 = 0; + JsonElement var13 = null; + List var14 = null; + int var16 = 0; + int var17 = 0; + int var18 = 0; + int var19 = 0; + int var20 = 0; + int var15 = -485709790; + + while (true) { + switch (var15) { + case -2066067758: + if (!hasNeighbour(var0)) { + var15 = -524877642; + } else { + var15 = -523496770; + } + break; + case -2008448081: + var12 = var20; + var7.addProperty("uuid", var9); + var7.addProperty("server", var8); + if (var11 != null) { + var15 = 811426607; + } else { + var15 = -814068786; + } + break; + case -1982362055: + if (aoh.joinedIdentity() == null) { + var15 = -2066067758; + } else { + var15 = -523496770; + } + break; + case -1922559220: + var20 = var11.length(); + var15 = -2008448081; + break; + case -1910332254: + var1 = System.currentTimeMillis(); + if (vd.INSTANCE.isSharing()) { + var15 = -484993605; + } else { + var15 = 1614250911; + } + break; + case -1909342169: + var7.add("want", var10); + var14 = new ArrayList(var10.size()); + var10.forEach(var1x -> var14.add(var1x.getAsString())); + publishedOpen = (boolean)((var3) != 0); + requestInFlight = (boolean)(((1)) != 0); + anb.post(var7) + .whenComplete( + (var6x, var7x) -> { + requestInFlight = (boolean)(((0)) != 0); + if (var7x == null && var6x != null) { + if (var6x.statusCode() != (647847296 ^ -647847096) + ((647847296 & -647847096) << 1)) { + id.warn( + Cif.SOCIAL, + "gui presence rejected with status {}", + var6x.statusCode() + ); + } else { + try { + JsonObject var8x = JsonParser.parseString(var6x.body()).getAsJsonObject(); + JsonElement var9x = var8x.get("players"); + String var10x = ""; + if (var9x != null && var9x.isJsonObject()) { + JsonObject var11x = var9x.getAsJsonObject(); + var10x = String.join(",", var11x.keySet()); + var0.execute(() -> applyPlayers(var11x, var14)); + } else { + var0.execute(() -> aoh.applyRemotes(var14, Map.of())); + } + + id.info( + Cif.SOCIAL, + "gui sync {}", + "srv=" + var8 + " self=" + var9 + " up=" + var12 + " want=" + var10 + " got=" + var10x + ); + } catch (Exception var12x) { + id.warn( + Cif.SOCIAL, + "gui presence response parse failed", + var12x + ); + } + } + } else { + id.warn( + Cif.SOCIAL, + "gui presence request failed: {}", + var7x == null ? "no response" : var7x.toString() + ); + } + } + ); + return; + case -1846747426: + reset(); + return; + case -1831823058: + var3 = var16; + if (tracks.isEmpty()) { + var15 = -934016413; + } else { + var15 = -847468840; + } + break; + case -1719396965: + if (var4 != 0) { + var15 = 719398714; + } else { + var15 = -495118920; + } + break; + case -1716779418: + var18 = 0; + var15 = 682593810; + break; + case -1554064728: + var6 = var19; + if (!requestInFlight) { + var15 = -375921233; + } else { + var15 = -1299878643; + } + break; + case -1375509049: + return; + case -1311176185: + ticks = 0; + prune(var1); + var7 = anb.actionBody("gui"); + if (var7 == null) { + var15 = -753013212; + } else { + var15 = 1309218681; + } + break; + case -1299878643: + return; + case -1126261200: + var20 = 0; + var15 = -2008448081; + break; + case -934016413: + if (!aoh.hasRemotes()) { + var15 = -367622898; + } else { + var15 = -847468840; + } + break; + case -847468840: + var17 = 1; + var15 = 40575666; + break; + case -814068786: + var13 = aoh.publishPayload(); + if (var13 != null) { + var15 = -256604220; + } else { + var15 = -1909342169; + } + break; + case -753013212: + return; + case -524877642: + ticks = 0; + return; + case -523496770: + if (var5 == 0) { + var15 = -1719396965; + } else { + var15 = 719398714; + } + break; + case -495118920: + var19 = 40; + var15 = -1554064728; + break; + case -485709790: + default: + if (vd.INSTANCE.isEnabled()) { + var15 = 1285224785; + } else { + var15 = -1846747426; + } + break; + case -484993605: + if (var1 - lastCaptureAt < (777373446049614461L ^ -777373446049614211L) + ((777373446049614461L & -777373446049614211L) << 1)) { + var15 = 211657414; + } else { + var15 = 1614250911; + } + break; + case -375921233: + if ((ticks += (441292304 | -441292303) + (441292304 & -441292303)) < var6) { + var15 = -1299878643; + } else { + var15 = -1311176185; + } + break; + case -367622898: + if (aoh.joinedIdentity() != null) { + var15 = -847468840; + } else { + var15 = -113474858; + } + break; + case -256604220: + var7.add("watch", var13); + var15 = -1909342169; + break; + case -113474858: + var17 = 0; + var15 = 40575666; + break; + case 40575666: + var4 = var17; + if (var3 == 0) { + var15 = 627196226; + } else { + var15 = 1815343986; + } + break; + case 146718880: + var9 = identityOf(var0.player); + if (var9 == null) { + var15 = 2072257682; + } else { + var15 = 1789082220; + } + break; + case 211657414: + var16 = 1; + var15 = -1831823058; + break; + case 215564914: + if (aoh.needsPublish()) { + var15 = 1815343986; + } else { + var15 = -1716779418; + } + break; + case 627196226: + if (!publishedOpen) { + var15 = 215564914; + } else { + var15 = 1815343986; + } + break; + case 682593810: + var5 = var18; + if (var5 == 0) { + var15 = -1982362055; + } else { + var15 = -523496770; + } + break; + case 719398714: + var19 = 10; + var15 = -1554064728; + break; + case 811426607: + var7.addProperty("gui", var11); + var15 = -814068786; + break; + case 1225568752: + if (var0.level == null) { + var15 = -1846747426; + } else { + var15 = -1910332254; + } + break; + case 1285224785: + if (var0.player != null) { + var15 = 1225568752; + } else { + var15 = -1846747426; + } + break; + case 1309218681: + var8 = serverKey(var0); + if (var8 == null) { + var15 = -1375509049; + } else { + var15 = 146718880; + } + break; + case 1614250911: + var16 = 0; + var15 = -1831823058; + break; + case 1789082220: + var10 = wantedNeighbours(var0); + var11 = drainLocalPayload((boolean)((var3) != 0)); + if (var11 == null) { + var15 = -1126261200; + } else { + var15 = -1922559220; + } + break; + case 1815343986: + var18 = 1; + var15 = 682593810; + break; + case 2072257682: + return; + } + } + } + + private static String drainLocalPayload(boolean var0) { + ArrayList var1 = null; + anc var2 = null; + int var3 = -1883012350; + + while (true) { + switch (var3) { + case -1883012350: + default: + if (var0) { + var3 = 1754839895; + } else { + var3 = 1929311141; + } + break; + case -1619571723: + var2 = localFrame; + if (var2 == null) { + var3 = 1033654638; + } else { + var3 = 2079474506; + } + break; + case -1019687987: + localSamples.clear(); + return encode(localHeader | 128, localCards, List.of()); + case 1033654638: + return null; + case 1754839895: + var1 = new ArrayList<>(localSamples); + localSamples.clear(); + if (var1.isEmpty()) { + var3 = -1619571723; + } else { + var3 = 1823661896; + } + break; + case 1819552552: + return null; + case 1823661896: + return encode(localHeader, localCards, var1); + case 1929311141: + if (!publishedOpen) { + var3 = 1819552552; + } else { + var3 = -1019687987; + } + break; + case 2079474506: + var1.add(var2); + var3 = 1823661896; + } + } + } + + private static void applyPlayers(JsonObject var0, List var1) { + long var2 = System.currentTimeMillis(); + HashMap var4 = new HashMap(); + + for (Entry var6 : var0.entrySet()) { + String var7 = normalizeIdentity((String)var6.getKey()); + if (var7 != null && ((JsonElement)var6.getValue()).isJsonObject()) { + JsonObject var8 = ((JsonElement)var6.getValue()).getAsJsonObject(); + JsonElement var9 = var8.get("w"); + if (var9 != null && var9.isJsonObject()) { + var4.put(var7, var9.getAsJsonObject()); + } + + long var10 = var8.has("at") + && !var8.get("at").isJsonNull() + ? var8.get("at").getAsLong() + : (6544717786920579739L | -6544717786920579739L) + (6544717786920579739L & -6544717786920579739L); + String var12 = var8.has("g") + && !var8.get("g").isJsonNull() + ? var8.get("g").getAsString() + : null; + if (var12 != null) { + anf var13 = tracks.computeIfAbsent(var7, var0x -> new anf()); + if (var10 == (3959700230431865503L | -3959700230431865503L) + (3959700230431865503L & -3959700230431865503L) || var10 != var13.payloadAt) { + and var14 = decode(var12); + if (var14 != null) { + var13.payloadAt = var10; + var13.header = var14.header(); + var13.cards = var14.cards(); + var13.closed = (boolean)((((var14.header() & (-1827123319 | 1827123447) + (-1827123319 & 1827123447)) != 0 + ? 1: (-1100668583 | 1100668583) + (-1100668583 & 1100668583))) != 0); + if (var13.closed) { + var13.queue.clear(); + var13.playbackCursor = (-2827871011826631805L ^ 2827871011826631805L) + ((-2827871011826631805L & 2827871011826631805L) << 1); + } else { + var13.freshAt = var2; + var13.enqueue(var14.frames(), var2); + } + } + } + } + } + } + + aoh.applyRemotes(var1, var4); + } + + private static void prune(long var0) { + tracks.values().removeIf(var2 -> { + int var4 = 0; + int var3 = 1495786285; + + while (true) { + switch (var3) { + case -1624363061: + var4 = 0; + var3 = 1775745946; + break; + case -1289276355: + if (var0 - var2.freshAt > (-3959709848370505398L | 3959709848370510398L) + (-3959709848370505398L & 3959709848370510398L)) { + var3 = 1741481659; + } else { + var3 = -1624363061; + } + break; + case -1081956010: + if (var0 - var2.hiddenAt > (918008354749961271L | -918008354749958771L) + (918008354749961271L & -918008354749958771L)) { + var3 = 1751348311; + } else { + var3 = -203555206; + } + break; + case -203555206: + var4 = 0; + var3 = 1775745946; + break; + case 1495786285: + default: + if (var2.closed) { + var3 = -1081956010; + } else { + var3 = -1289276355; + } + break; + case 1741481659: + var4 = 1; + var3 = 1775745946; + break; + case 1751348311: + var4 = 1; + var3 = 1775745946; + break; + case 1775745946: + return (boolean)((var4) != 0); + } + } + }); + } + + private static boolean hasNeighbour(Minecraft var0) { + float var1 = 0.0F; + Iterator var2 = null; + AbstractClientPlayer var3 = null; + int var4 = 1779953081; + + while (true) { + switch (var4) { + case -708891343: + if (!var3.isSpectator()) { + var4 = 790362055; + } else { + var4 = 1964157065; + } + break; + case 193109814: + var3 = (AbstractClientPlayer)var2.next(); + if (var3 != var0.player) { + var4 = -708891343; + } else { + var4 = 1964157065; + } + break; + case 790362055: + if (var0.player.distanceTo(var3) <= var1) { + var4 = 859140571; + } else { + var4 = 1964157065; + } + break; + case 859140571: + return (boolean)(((1)) != 0); + case 1534878954: + if (var2.hasNext()) { + var4 = 193109814; + } else { + var4 = 1591970080; + } + break; + case 1591970080: + return (boolean)(((0)) != 0); + case 1779953081: + default: + var1 = vd.INSTANCE.getMaxDistance(); + var2 = var0.level.players().iterator(); + var4 = 1534878954; + break; + case 1964157065: + var4 = 1534878954; + } + } + } + + private static JsonArray wantedNeighbours(Minecraft var0) { + JsonArray var1 = null; + String var2 = null; + float var3 = 0.0F; + Iterator var4 = null; + AbstractClientPlayer var5 = null; + String var6 = null; + int var7 = 762674026; + + while (true) { + switch (var7) { + case -1986376843: + if (var4.hasNext()) { + var7 = -102151143; + } else { + var7 = -1871813190; + } + break; + case -1871813190: + return var1; + case -1673044364: + var7 = -1986376843; + break; + case -1209824751: + var1.add(var2); + var7 = 1307602319; + break; + case -487377665: + var7 = -1986376843; + break; + case -102151143: + var5 = (AbstractClientPlayer)var4.next(); + if (var5 != var0.player) { + var7 = 895237691; + } else { + var7 = -1986376843; + } + break; + case 51425470: + var7 = -1871813190; + break; + case 344580159: + if (var0.player.distanceTo(var5) > var3) { + var7 = 1550296519; + } else { + var7 = 1412061566; + } + break; + case 762674026: + default: + var1 = new JsonArray(); + var2 = aoh.joinedIdentity(); + if (var2 != null) { + var7 = -1209824751; + } else { + var7 = 1307602319; + } + break; + case 895237691: + if (var5.isSpectator()) { + var7 = 1440694202; + } else { + var7 = 344580159; + } + break; + case 1307602319: + var3 = vd.INSTANCE.getMaxDistance(); + var4 = var0.level.players().iterator(); + var7 = -1986376843; + break; + case 1412061566: + var6 = identityOf(var5); + if (var6 != null) { + var7 = 2136551937; + } else { + var7 = -1986376843; + } + break; + case 1440694202: + var7 = -1986376843; + break; + case 1550296519: + var7 = -1986376843; + break; + case 1985670713: + var1.add(var6); + if (var1.size() >= (525383354 | -525383330) + (525383354 & -525383330)) { + var7 = 51425470; + } else { + var7 = -487377665; + } + break; + case 2136551937: + if (var6.equals(var2)) { + var7 = -1673044364; + } else { + var7 = 1985670713; + } + } + } + } + + private static String encode(int var0, int var1, List var2) { + int var3 = Math.min(var2.size(), (855624570 ^ -855624562) + ((855624570 & -855624562) << 1)); + byte[] var4 = new byte[(-1414890049 ^ 1414890053) + ((-1414890049 & 1414890053) << 1) + var3 * (4)]; + var4[0] = (byte)(1); + var4[1] = (byte)var0; + var4[2] = (byte)Mth.clamp( + var1, 0, (50559486 | -50559231) + (50559486 & -50559231) + ); + var4[3] = (byte)var3; + int var5 = 4; + + for (int var6 = var2.size() - var3; var6 < var2.size(); var6++) { + anc var7 = (anc)var2.get(var6); + var4[var5++] = quantize(var7.cursorX()); + var4[var5++] = quantize(var7.cursorY()); + var4[var5++] = quantize(var7.scroll()); + var4[var5++] = (byte)(var7.pressed() ? 1: (-14318214 ^ 14318214) + ((-14318214 & 14318214) << 1)); + } + + return ENCODER.encodeToString(var4); + } + + private static and decode(String var0) { + try { + byte[] var1 = DECODER.decode(var0); + if (var1.length >= (-1918604966 ^ 1918604970) + ((-1918604966 & 1918604970) << 1) + && var1[0] == (1879014844 | -1879014843) + (1879014844 & -1879014843)) { + int var2 = var1[3] & 255; + if (var2 <= (359285981 | -359285973) + (359285981 & -359285973) + && var1.length >= (1070222130 | -1070222126) + (1070222130 & -1070222126) + var2 * ((88261543 | -88261539) + (88261543 & -88261539))) { + ArrayList var3 = new ArrayList(var2); + int var4 = 4; + + for (int var5 = 0; var5 < var2; var5++) { + var3.add( + new anc( + dequantize(var1[var4]), + dequantize(var1[var4 + 1]), + dequantize(var1[var4 + 2]), + (boolean)(((var1[var4 + 3] != 0 + ? 1: (1833639838 ^ -1833639838) + ((1833639838 & -1833639838) << 1)) + ) != 0)) + ); + var4 += 4; + } + + return new and( + var1[1] & 255, + var1[2] & 255, + var3 + ); + } else { + return null; + } + } else { + return null; + } + } catch (Exception var6) { + return null; + } + } + + private static byte quantize(float var0) { + return (byte)Mth.clamp( + Math.round(var0 * 255.0F), 0, (161690282 | -161690027) + (161690282 & -161690027) + ); + } + + private static float dequantize(byte var0) { + return (var0 & (-864667680 | 864667935) + (-864667680 & 864667935)) / 255.0F; + } + + private static String serverKey(Minecraft var0) { + ServerData var1 = null; + String var3 = null; + int var2 = -596912269; + + while (true) { + switch (var2) { + case -2026024435: + return var3; + case -1626346757: + var3 = "Singleplayer"; + var2 = -2026024435; + break; + case -596912269: + default: + var1 = var0.getCurrentServer(); + if (var1 != null) { + var2 = 1189001480; + } else { + var2 = 59909006; + } + break; + case 59909006: + if (var0.level != null) { + var2 = -1626346757; + } else { + var2 = 2018688702; + } + break; + case 1189001480: + return var1.ip; + case 2018688702: + var3 = null; + var2 = -2026024435; + } + } + } + + public static String identityOf(AbstractClientPlayer var0) { + return normalizeIdentity(var0.getScoreboardName()); + } + + public static String normalizeIdentity(String var0) { + String var1 = null; + int var2 = 734205080; + + while (true) { + switch (var2) { + case 34893605: + return var1.toLowerCase(Locale.ROOT); + case 734205080: + default: + if (var0 == null) { + var2 = 2143281219; + } else { + var2 = 1928143023; + } + break; + case 764266678: + if (var1.length() > (1143230176 | -1143230144) + (1143230176 & -1143230144)) { + var2 = 815396072; + } else { + var2 = 34893605; + } + break; + case 815396072: + return null; + case 1928143023: + var1 = var0.trim(); + if (!var1.isEmpty()) { + var2 = 764266678; + } else { + var2 = 815396072; + } + break; + case 2143281219: + return null; + } + } + } + + private static void reset() { + int var0 = -1065321832; + + while (true) { + switch (var0) { + case -1762787129: + if (ticks == 0) { + var0 = -1715665046; + } else { + var0 = 1919270798; + } + break; + case -1715665046: + return; + case -1065321832: + default: + if (tracks.isEmpty()) { + var0 = 1709919392; + } else { + var0 = 1919270798; + } + break; + case 1346053051: + if (!publishedOpen) { + var0 = -1762787129; + } else { + var0 = 1919270798; + } + break; + case 1709919392: + if (localSamples.isEmpty()) { + var0 = 1346053051; + } else { + var0 = 1919270798; + } + break; + case 1919270798: + tracks.clear(); + localSamples.clear(); + localFrame = null; + lastCaptureAt = (-67377115828046716L | 67377115828046716L) + (-67377115828046716L & 67377115828046716L); + lastSampleAt = (-1845309185067390828L | 1845309185067390828L) + (-1845309185067390828L & 1845309185067390828L); + publishedOpen = (boolean)(((0)) != 0); + ticks = 0; + return; + } + } + } +} diff --git a/src/main/java/defpackage/ani.java b/src/main/java/defpackage/ani.java new file mode 100644 index 0000000..689703a --- /dev/null +++ b/src/main/java/defpackage/ani.java @@ -0,0 +1,68 @@ +package defpackage; + +import java.util.List; +import net.minecraft.world.item.ItemStack; + +public record ani(List slots, int selected, float health, float maxHealth, float absorption, long at) { + public ItemStack slot(int var1) { + ItemStack var3 = null; + int var2 = -1653774765; + + while (true) { + switch (var2) { + case -2033488583: + var3 = ItemStack.EMPTY; + var2 = -425714318; + break; + case -1653774765: + default: + if (var1 >= 0) { + var2 = 1490485152; + } else { + var2 = -2033488583; + } + break; + case -1640860360: + var3 = this.slots.get(var1); + var2 = -425714318; + break; + case -425714318: + return var3; + case 1490485152: + if (var1 < this.slots.size()) { + var2 = -1640860360; + } else { + var2 = -2033488583; + } + } + } + } + + public boolean hasHealth() { + int var2 = 0; + int var1 = -1032985521; + + while (true) { + switch (var1) { + case -1149180152: + var2 = 0; + var1 = 1093858853; + break; + case -1032985521: + default: + if (this.maxHealth > 0.0F) { + var1 = -769307832; + } else { + var1 = -1149180152; + } + break; + case -769307832: + var2 = 1; + var1 = 1093858853; + break; + case 1093858853: + return (boolean)((var2) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/anj.java b/src/main/java/defpackage/anj.java new file mode 100644 index 0000000..00062de --- /dev/null +++ b/src/main/java/defpackage/anj.java @@ -0,0 +1,15 @@ +package defpackage; + +final class anj { + final String username; + volatile ani snapshot; + volatile ank state = ank.LOADING; + volatile String message; + volatile boolean online; + volatile boolean inFlight; + volatile long lastRequest; + + anj(String var1) { + this.username = var1; + } +} diff --git a/src/main/java/defpackage/ank.java b/src/main/java/defpackage/ank.java new file mode 100644 index 0000000..38bda7b --- /dev/null +++ b/src/main/java/defpackage/ank.java @@ -0,0 +1,9 @@ +package defpackage; + +public enum ank { + LOADING, + READY, + WAITING, + DENIED, + FAILED; +} diff --git a/src/main/java/defpackage/anl.java b/src/main/java/defpackage/anl.java new file mode 100644 index 0000000..7b6524b --- /dev/null +++ b/src/main/java/defpackage/anl.java @@ -0,0 +1,1210 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.mojang.serialization.JsonOps; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Base64; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Consumer; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.HolderLookup.Provider; +import net.minecraft.core.RegistryAccess.Frozen; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; +import net.minecraft.resources.RegistryOps; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; + +public final class anl { + private static final String PUSH_FAILURE = "inventory push failed: {}"; + private static final String VIEW_FAILURE = "inventory view failed: {}"; + private static final String ENCODE_FAILURE = "inventory snapshot encode failed"; + private static final String DECODE_FAILURE = "inventory snapshot decode failed"; + private static final String ACTION_SHARE = "invshare"; + private static final String ACTION_PUSH = "invpush"; + private static final String ACTION_VIEW = "inventory"; + private static final String KEY_ENABLED = "enabled"; + private static final String KEY_USERNAME = "username"; + private static final String KEY_DATA = "data"; + private static final String KEY_AT = "at"; + private static final String KEY_ONLINE = "online"; + private static final String KEY_WATCHED = "watched"; + private static final String KEY_VERSION = "v"; + private static final String KEY_SELECTED = "sel"; + private static final String KEY_SLOTS = "slots"; + private static final String KEY_SLOT = "s"; + private static final String KEY_ID = "i"; + private static final String KEY_COUNT = "c"; + private static final String KEY_STACK = "d"; + private static final String KEY_HEALTH = "hp"; + private static final String KEY_MAX_HEALTH = "mx"; + private static final String KEY_ABSORPTION = "ab"; + private static final int PAYLOAD_VERSION = 1; + private static final int PUSH_INTERVAL_TICKS = 40; + private static final long VIEW_INTERVAL_MS = 1500L; + private static final long REFRESH_INTERVAL_MS = 10000L; + private static final int GZIP_BUFFER = 4096; + public static final int HOTBAR_SIZE = 9; + public static final int MAIN_SIZE = 36; + public static final int ARMOR_START = 36; + public static final int ARMOR_SIZE = 4; + public static final int OFFHAND_SLOT = 40; + public static final int SLOT_COUNT = 41; + private static final Map targets = new ConcurrentHashMap<>(); + private static volatile boolean sharing; + private static volatile boolean watched; + private static volatile boolean shareInFlight; + private static volatile boolean pushInFlight; + private static String lastPayload; + private static long lastPushAt; + private static int pushTicks; + private static volatile String viewing; + private static volatile String pinned; + private static volatile Frozen staticRegistries; + + private anl() { + } + + public static void initialize() { + ClientTickEvents.END_CLIENT_TICK.register(anl::tick); + } + + public static boolean isSharing() { + return sharing; + } + + public static boolean isToggling() { + return shareInFlight; + } + + public static void toggleSharing(Consumer var0) { + int var1 = 0; + JsonObject var2 = null; + int var4 = 0; + int var3 = -1228930262; + + while (true) { + switch (var3) { + case -2044482047: + var4 = 0; + var3 = -1287978841; + break; + case -1287978841: + var1 = var4; + var2 = anb.actionBody("invshare"); + if (var2 == null) { + var3 = 1509258345; + } else { + var3 = -979158312; + } + break; + case -1228930262: + default: + if (shareInFlight) { + var3 = 603287115; + } else { + var3 = -983190925; + } + break; + case -983190925: + if (!sharing) { + var3 = -872825948; + } else { + var3 = -2044482047; + } + break; + case -979158312: + var2.addProperty("enabled", Boolean.valueOf((boolean)((var1) != 0))); + shareInFlight = (boolean)(((1)) != 0); + anb.post(var2).whenComplete((var2x, var3x) -> { + int var4x = -454552221; + + while (true) { + switch (var4x) { + case -987885831: + sharing = var1; + if (!var1) { + var4x = 1151430026; + } else { + var4x = 209770207; + } + break; + case -573788774: + anb.deliver(var0, "Network error"); + return; + case -454552221: + default: + shareInFlight = (boolean)(((0)) != 0); + if (var3x == null) { + var4x = 1309660942; + } else { + var4x = -573788774; + } + break; + case 111982267: + anb.deliver(var0, anb.describeError(var2x.body())); + return; + case 209770207: + anb.deliver(var0, null); + return; + case 270659531: + if (var2x.statusCode() != (-1488421341 ^ 1488421541) + ((-1488421341 & 1488421541) << 1)) { + var4x = 111982267; + } else { + var4x = -987885831; + } + break; + case 1151430026: + watched = (boolean)(((0)) != 0); + lastPayload = null; + var4x = 209770207; + break; + case 1309660942: + if (var2x == null) { + var4x = -573788774; + } else { + var4x = 270659531; + } + } + } + }); + return; + case -872825948: + var4 = 1; + var3 = -1287978841; + break; + case 603287115: + return; + case 1509258345: + anb.deliver(var0, "Sign in first"); + return; + } + } + } + + static void applySelfState(boolean var0, boolean var1) { + int var3 = 0; + int var2 = 517025352; + + while (true) { + switch (var2) { + case -2116955078: + var3 = 0; + var2 = 1425036501; + break; + case -778535449: + if (var1) { + var2 = 443910398; + } else { + var2 = -2116955078; + } + break; + case 443910398: + var3 = 1; + var2 = 1425036501; + break; + case 517025352: + default: + sharing = var0; + if (var0) { + var2 = -778535449; + } else { + var2 = -2116955078; + } + break; + case 1425036501: + watched = (boolean)((var3) != 0); + return; + } + } + } + + public static String viewing() { + return viewing; + } + + public static void open(String var0) { + viewing = var0; + stateOrCreate(var0); + } + + public static void close() { + viewing = null; + } + + public static String pinned() { + return pinned; + } + + public static boolean isPinned(String var0) { + String var1 = null; + int var3 = 0; + int var2 = 73691232; + + while (true) { + switch (var2) { + case -1274703179: + return (boolean)((var3) != 0); + case -909619075: + var3 = 0; + var2 = -1274703179; + break; + case -155242730: + if (var1.equalsIgnoreCase(var0)) { + var2 = 657454212; + } else { + var2 = -909619075; + } + break; + case 73691232: + default: + var1 = pinned; + if (var1 != null) { + var2 = -155242730; + } else { + var2 = -909619075; + } + break; + case 657454212: + var3 = 1; + var2 = -1274703179; + } + } + } + + public static void pin(String var0) { + pinned = var0; + stateOrCreate(var0); + } + + public static void unpin() { + pinned = null; + } + + public static ani snapshotOf(String var0) { + anj var1 = null; + ani var3 = null; + int var2 = -1681130151; + + while (true) { + switch (var2) { + case -1973531945: + var3 = var1.snapshot; + var2 = 218084138; + break; + case -1681130151: + default: + var1 = targets.get(key(var0)); + if (var1 == null) { + var2 = 60834947; + } else { + var2 = -1973531945; + } + break; + case 60834947: + var3 = null; + var2 = 218084138; + break; + case 218084138: + return var3; + } + } + } + + public static ank stateOf(String var0) { + anj var1 = null; + ank var3 = null; + int var2 = 680127305; + + while (true) { + switch (var2) { + case -1161729689: + var3 = ank.LOADING; + var2 = -693727540; + break; + case -693727540: + return var3; + case 680127305: + default: + var1 = targets.get(key(var0)); + if (var1 == null) { + var2 = -1161729689; + } else { + var2 = 1830552765; + } + break; + case 1830552765: + var3 = var1.state; + var2 = -693727540; + } + } + } + + public static String messageOf(String var0) { + anj var1 = null; + String var3 = null; + int var2 = -1998315657; + + while (true) { + switch (var2) { + case -1998315657: + default: + var1 = targets.get(key(var0)); + if (var1 == null) { + var2 = 416589925; + } else { + var2 = 895060376; + } + break; + case -1507165497: + return var3; + case 416589925: + var3 = null; + var2 = -1507165497; + break; + case 895060376: + var3 = var1.message; + var2 = -1507165497; + } + } + } + + public static boolean isOnline(String var0) { + anj var1 = null; + int var3 = 0; + int var2 = -2089403780; + + while (true) { + switch (var2) { + case -2089403780: + default: + var1 = targets.get(key(var0)); + if (var1 != null) { + var2 = 389662934; + } else { + var2 = -1475530217; + } + break; + case -1475530217: + var3 = 0; + var2 = -236413166; + break; + case -947367263: + var3 = 1; + var2 = -236413166; + break; + case -236413166: + return (boolean)((var3) != 0); + case 389662934: + if (var1.online) { + var2 = -947367263; + } else { + var2 = -1475530217; + } + } + } + } + + private static String key(String var0) { + String var2 = null; + int var1 = 1229684277; + + while (true) { + switch (var1) { + case -2098980677: + var2 = ""; + var1 = -105623712; + break; + case -105623712: + return var2; + case 937213205: + var2 = var0.toLowerCase(Locale.ROOT); + var1 = -105623712; + break; + case 1229684277: + default: + if (var0 == null) { + var1 = -2098980677; + } else { + var1 = 937213205; + } + } + } + } + + private static anj stateOrCreate(String var0) { + return targets.computeIfAbsent(key(var0), var1 -> new anj(var0)); + } + + private static void tick(Minecraft var0) { + pushSnapshot(var0); + pollTargets(); + } + + private static void pollTargets() { + LinkedHashSet var0 = null; + String var1 = null; + String var2 = null; + Iterator var3 = null; + String var4 = null; + int var5 = -1903777269; + + while (true) { + switch (var5) { + case -1903777269: + default: + var0 = new LinkedHashSet(); + var1 = viewing; + var2 = pinned; + if (var1 != null) { + var5 = 308917057; + } else { + var5 = 948135996; + } + break; + case -1350339335: + if (var3.hasNext()) { + var5 = -509760910; + } else { + var5 = 1170237900; + } + break; + case -812775570: + targets.keySet().removeIf(var1x -> { + int var3x = 0; + int var2x = -1057437525; + + while (true) { + switch (var2x) { + case -1706481697: + var3x = 0; + var2x = 326537235; + break; + case -1057437525: + default: + if (!var0.contains(var1x)) { + var2x = 900487391; + } else { + var2x = -1706481697; + } + break; + case 326537235: + return (boolean)((var3x) != 0); + case 900487391: + var3x = 1; + var2x = 326537235; + } + } + }); + var3 = var0.iterator(); + var5 = -1350339335; + break; + case -509760910: + var4 = (String)var3.next(); + request(stateOrCreate(var4)); + var5 = -1350339335; + break; + case 308917057: + var0.add(key(var1)); + var5 = 948135996; + break; + case 459792865: + var0.add(key(var2)); + var5 = -812775570; + break; + case 948135996: + if (var2 != null) { + var5 = 459792865; + } else { + var5 = -812775570; + } + break; + case 1170237900: + return; + } + } + } + + private static void request(anj var0) { + long var1 = (-9032722449324667315L ^ 9032722449324667315L) + ((-9032722449324667315L & 9032722449324667315L) << 1); + JsonObject var3 = null; + int var4 = -877568453; + + while (true) { + switch (var4) { + case -1599650014: + return; + case -877568453: + default: + var1 = System.currentTimeMillis(); + if (!var0.inFlight) { + var4 = -17585080; + } else { + var4 = -1599650014; + } + break; + case -252813541: + var3 = anb.actionBody("inventory"); + if (var3 == null) { + var4 = 562532769; + } else { + var4 = 366904920; + } + break; + case -17585080: + if (var1 - var0.lastRequest < (5763690015788207547L | -5763690015788206047L) + (5763690015788207547L & -5763690015788206047L)) { + var4 = -1599650014; + } else { + var4 = -252813541; + } + break; + case 366904920: + var3.addProperty("username", var0.username); + var0.lastRequest = var1; + var0.inFlight = (boolean)(((1)) != 0); + anb.post(var3) + .whenComplete( + (var1x, var2) -> { + var0.inFlight = (boolean)(((0)) != 0); + if (var2 == null && var1x != null) { + if (var1x.statusCode() != (-532882679 | 532882879) + (-532882679 & 532882879)) { + var0.state = var1x.statusCode() == 403? ank.DENIED : ank.FAILED; + var0.message = anb.describeError(var1x.body()); + } else { + try { + JsonObject var3x = JsonParser.parseString(var1x.body()).getAsJsonObject(); + var0.online = anb.booleanOf(var3x, "online"); + String var4x = anb.stringOf(var3x, "data"); + long var5 = anb.longOf(var3x, "at"); + if (var4x == null || var4x.isEmpty()) { + var0.state = ank.WAITING; + var0.message = null; + return; + } + + Minecraft.getInstance() + .execute( + () -> { + ani var4xx = null; + int var5x = 207635580; + + while (true) { + switch (var5x) { + case -144526028: + var0.snapshot = var4xx; + var0.state = ank.READY; + var0.message = null; + return; + case 207635580: + default: + var4xx = decode(var4x, var5); + if (var4xx == null) { + var5x = 1648039415; + } else { + var5x = -144526028; + } + break; + case 1648039415: + var0.state = ank.FAILED; + var0.message = "Unreadable inventory"; + return; + } + } + } + ); + } catch (Exception var7) { + id.warn( + Cif.SOCIAL, + "inventory view failed: {}", + var7 + ); + var0.state = ank.FAILED; + var0.message = "Bad response"; + } + } + } else { + id.warn( + Cif.SOCIAL, + "inventory view failed: {}", + var2 == null ? "no response" : var2.toString() + ); + var0.state = ank.FAILED; + var0.message = "Network error"; + } + } + ); + return; + case 562532769: + var0.state = ank.DENIED; + var0.message = "Sign in first"; + return; + } + } + } + + private static void pushSnapshot(Minecraft var0) { + String var1 = null; + long var2 = (-8685064206200064624L | 8685064206200064624L) + (-8685064206200064624L & 8685064206200064624L); + JsonObject var4 = null; + int var5 = -995388319; + + while (true) { + switch (var5) { + case -1380285764: + pushTicks = 0; + var1 = encode(var0.player); + if (var1 == null) { + var5 = -1059666922; + } else { + var5 = 1954028214; + } + break; + case -1368928024: + if ((pushTicks += (-825109465 ^ 825109466) + ((-825109465 & 825109466) << 1)) < (1923878361 ^ -1923878321) + ((1923878361 & -1923878321) << 1)) { + var5 = -262781692; + } else { + var5 = -1380285764; + } + break; + case -1307117360: + return; + case -1260698504: + if (!pushInFlight) { + var5 = -1368928024; + } else { + var5 = -262781692; + } + break; + case -1255806849: + if (watched) { + var5 = -333829306; + } else { + var5 = -1234650468; + } + break; + case -1234650468: + pushTicks = 0; + return; + case -1059666922: + return; + case -995388319: + default: + if (sharing) { + var5 = -1255806849; + } else { + var5 = -1234650468; + } + break; + case -834710814: + var4 = anb.actionBody("invpush"); + if (var4 == null) { + var5 = -1307117360; + } else { + var5 = -271080813; + } + break; + case -333829306: + if (var0.player == null) { + var5 = -1234650468; + } else { + var5 = -1260698504; + } + break; + case -271080813: + var4.addProperty("data", var1); + pushInFlight = (boolean)(((1)) != 0); + anb.post(var4) + .whenComplete( + (var3, var4x) -> { + pushInFlight = (boolean)(((0)) != 0); + if (var4x == null && var3 != null) { + if (var3.statusCode() != (479778731 ^ -479778531) + ((479778731 & -479778531) << 1)) { + if (var3.statusCode() == (2139197952 | -2139197549) + (2139197952 & -2139197549)) { + sharing = (boolean)(((0)) != 0); + watched = (boolean)(((0)) != 0); + } + + id.warn( + Cif.SOCIAL, + "inventory push failed: {}", + var3.statusCode() + ); + } else { + lastPayload = var1; + lastPushAt = var2; + + try { + watched = anb.booleanOf( + JsonParser.parseString(var3.body()).getAsJsonObject(), + "watched" + ); + } catch (Exception var6) { + id.warn( + Cif.SOCIAL, + "inventory push failed: {}", + var6 + ); + } + } + } else { + id.warn( + Cif.SOCIAL, + "inventory push failed: {}", + var4x == null + ? "no response" + : var4x.toString() + ); + } + } + ); + return; + case -262781692: + return; + case 1222490218: + if (var2 - lastPushAt < (5914267779613830220L | -5914267779613820220L) + (5914267779613830220L & -5914267779613820220L)) { + var5 = 1241830020; + } else { + var5 = -834710814; + } + break; + case 1241830020: + return; + case 1954028214: + var2 = System.currentTimeMillis(); + if (var1.equals(lastPayload)) { + var5 = 1222490218; + } else { + var5 = -834710814; + } + } + } + } + + private static String encode(LocalPlayer var0) { + try { + RegistryOps var1 = registryOps(); + Inventory var2 = var0.getInventory(); + int var3 = Math.min(41, var2.getContainerSize()); + JsonArray var4 = new JsonArray(); + + for (int var5 = 0; var5 < var3; var5++) { + ItemStack var6 = var2.getItem(var5); + if (!var6.isEmpty()) { + JsonObject var7 = new JsonObject(); + var7.addProperty("s", var5); + var7.addProperty( + "i", BuiltInRegistries.ITEM.getKey(var6.getItem()).toString() + ); + var7.addProperty("c", var6.getCount()); + if (var1 != null) { + ItemStack.CODEC + .encodeStart(var1, var6) + .result() + .ifPresent(var1x -> var7.add("d", var1x)); + } + + var4.add(var7); + } + } + + JsonObject var9 = new JsonObject(); + var9.addProperty( + "v", (1920453375 ^ -1920453374) + ((1920453375 & -1920453374) << 1) + ); + var9.addProperty("sel", var2.getSelectedSlot()); + var9.addProperty("hp", round(var0.getHealth())); + var9.addProperty("mx", round(var0.getMaxHealth())); + var9.addProperty("ab", round(var0.getAbsorptionAmount())); + var9.add("slots", var4); + return compress(var9.toString()); + } catch (Exception var8) { + id.warn(Cif.SOCIAL, "inventory snapshot encode failed", var8); + return null; + } + } + + private static ani decode(String var0, long var1) { + try { + JsonObject var3 = JsonParser.parseString(decompress(var0)).getAsJsonObject(); + RegistryOps var4 = registryOps(); + ArrayList var5 = new ArrayList<>(Collections.nCopies(41, ItemStack.EMPTY)); + + for (JsonElement var7 : var3.getAsJsonArray("slots")) { + JsonObject var8 = var7.getAsJsonObject(); + int var9 = var8.has("s") + ? var8.get("s").getAsInt() + : -1; + if (var9 >= 0 && var9 < (-1122753195 ^ 1122753236) + ((-1122753195 & 1122753236) << 1)) { + ItemStack var10 = null; + if (var4 != null && var8.has("d")) { + var10 = (ItemStack)ItemStack.CODEC + .parse(var4, var8.get("d")) + .result() + .orElse(null); + } + + if (var10 == null) { + var10 = fallbackStack(var8); + } + + if (var10 != null && !var10.isEmpty()) { + var5.set(var9, var10); + } + } + } + + return new ani( + List.copyOf(var5), + selectedSlot(var3), + floatOf(var3, "hp"), + floatOf(var3, "mx"), + floatOf(var3, "ab"), + var1 + ); + } catch (Exception var11) { + id.warn( + Cif.SOCIAL, + "inventory snapshot decode failed", + var11 + ); + return null; + } + } + + private static float round(float var0) { + return Math.round(Math.max(0.0F, var0) * 10.0F) / 10.0F; + } + + private static float floatOf(JsonObject var0, String var1) { + float var3 = 0.0F; + int var2 = -359469100; + + while (true) { + switch (var2) { + case -1678894028: + return var3; + case -359469100: + default: + if (var0.has(var1)) { + var2 = 2008499434; + } else { + var2 = -7670667; + } + break; + case -7670667: + var3 = 0.0F; + var2 = -1678894028; + break; + case 609845509: + var3 = var0.get(var1).getAsFloat(); + var2 = -1678894028; + break; + case 2008499434: + if (!var0.get(var1).isJsonNull()) { + var2 = 609845509; + } else { + var2 = -7670667; + } + } + } + } + + private static int selectedSlot(JsonObject var0) { + int var1 = 0; + int var3 = 0; + int var4 = 0; + int var2 = 335730881; + + while (true) { + switch (var2) { + case -1310043033: + if (var1 < (1742829101 ^ -1742829092) + ((1742829101 & -1742829092) << 1)) { + var2 = -641476590; + } else { + var2 = 1771272159; + } + break; + case -1060725486: + return var4; + case -641476590: + var4 = var1; + var2 = -1060725486; + break; + case -364572797: + var3 = var0.get("sel").getAsInt(); + var2 = -41953080; + break; + case -41953080: + var1 = var3; + if (var1 >= 0) { + var2 = -1310043033; + } else { + var2 = 1771272159; + } + break; + case 335730881: + default: + if (var0.has("sel")) { + var2 = -364572797; + } else { + var2 = 750403323; + } + break; + case 750403323: + var3 = -1; + var2 = -41953080; + break; + case 1771272159: + var4 = -1; + var2 = -1060725486; + } + } + } + + private static ItemStack fallbackStack(JsonObject var0) { + Identifier var1 = null; + Item var2 = null; + int var3 = 0; + Identifier var5 = null; + int var6 = 0; + int var4 = -1218356835; + + while (true) { + switch (var4) { + case -1381804382: + var3 = var6; + return new ItemStack(var2, var3); + case -1218356835: + default: + if (var0.has("i")) { + var4 = 1894868560; + } else { + var4 = 1308804119; + } + break; + case -266582517: + return null; + case -219561371: + var6 = 1; + var4 = -1381804382; + break; + case -164051091: + return null; + case 446502: + if (var2 == Items.AIR) { + var4 = -266582517; + } else { + var4 = 1817674554; + } + break; + case 24748818: + var2 = (Item)BuiltInRegistries.ITEM.getValue(var1); + if (var2 != null) { + var4 = 446502; + } else { + var4 = -266582517; + } + break; + case 484019850: + var6 = Math.max( + 1, + var0.get("c").getAsInt() + ); + var4 = -1381804382; + break; + case 1308804119: + var5 = null; + var4 = 1836918405; + break; + case 1817674554: + if (var0.has("c")) { + var4 = 484019850; + } else { + var4 = -219561371; + } + break; + case 1836918405: + var1 = var5; + if (var1 == null) { + var4 = -164051091; + } else { + var4 = 24748818; + } + break; + case 1894868560: + var5 = Identifier.tryParse(var0.get("i").getAsString()); + var4 = 1836918405; + } + } + } + + private static RegistryOps registryOps() { + Provider var0 = null; + RegistryOps var2 = null; + int var1 = 635263045; + + while (true) { + switch (var1) { + case -938030137: + return var2; + case 635263045: + default: + var0 = registries(); + if (var0 == null) { + var1 = 1550966292; + } else { + var1 = 1226993169; + } + break; + case 1226993169: + var2 = RegistryOps.create(JsonOps.INSTANCE, var0); + var1 = -938030137; + break; + case 1550966292: + var2 = null; + var1 = -938030137; + } + } + } + + private static Provider registries() { + Minecraft var0 = null; + ClientPacketListener var1 = null; + Frozen var2 = null; + int var3 = 534802176; + + while (true) { + switch (var3) { + case -1925323573: + return var0.level.registryAccess(); + case -1471099148: + return var2; + case -36316405: + var2 = RegistryAccess.fromRegistryOfRegistries(BuiltInRegistries.REGISTRY); + staticRegistries = var2; + var3 = -1471099148; + break; + case 16506729: + return var1.registryAccess(); + case 534802176: + default: + var0 = Minecraft.getInstance(); + if (var0.level != null) { + var3 = -1925323573; + } else { + var3 = 610993988; + } + break; + case 610993988: + var1 = var0.getConnection(); + if (var1 != null) { + var3 = 16506729; + } else { + var3 = 1975038880; + } + break; + case 1975038880: + var2 = staticRegistries; + if (var2 == null) { + var3 = -36316405; + } else { + var3 = -1471099148; + } + } + } + } + + private static String compress(String var0) throws Exception { + ByteArrayOutputStream var1 = new ByteArrayOutputStream((1272724319 | -1272720223) + (1272724319 & -1272720223)); + + try (GZIPOutputStream var2 = new GZIPOutputStream(var1)) { + var2.write(var0.getBytes(StandardCharsets.UTF_8)); + } + + return Base64.getEncoder().encodeToString(var1.toByteArray()); + } + + private static String decompress(String var0) throws Exception { + byte[] var1 = Base64.getDecoder().decode(var0); + + try (GZIPInputStream var2 = new GZIPInputStream(new ByteArrayInputStream(var1))) { + return new String(var2.readAllBytes(), StandardCharsets.UTF_8); + } + } + + public static String describeAge(long var0) { + long var2 = (-8315858596510835911L ^ 8315858596510835911L) + ((-8315858596510835911L & 8315858596510835911L) << 1); + long var4 = (-7301664198865318348L | 7301664198865318348L) + (-7301664198865318348L & 7301664198865318348L); + int var6 = 366506618; + + while (true) { + switch (var6) { + case -1859622327: + return "live"; + case -1836521908: + var4 = var2 / ((751278294433765116L ^ -751278294433765056L) + ((751278294433765116L & -751278294433765056L) << 1)); + if (var4 < (8606722684997832386L | -8606722684997832326L) + (8606722684997832386L & -8606722684997832326L)) { + var6 = 652457470; + } else { + var6 = 372348422; + } + break; + case -1380227982: + var2 = Math.max( + (6027414569550195454L | -6027414569550195454L) + (6027414569550195454L & -6027414569550195454L), + (System.currentTimeMillis() - var0) + / ((-3304264664894715304L ^ 3304264664894716304L) + ((-3304264664894715304L & 3304264664894716304L) << 1)) + ); + if (var2 < (7095657271982384311L ^ -7095657271982384306L) + ((7095657271982384311L & -7095657271982384306L) << 1)) { + var6 = -1859622327; + } else { + var6 = 247402172; + } + break; + case -1238818278: + return var2 + "s ago"; + case 247402172: + if (var2 < (-3549920821868471408L ^ 3549920821868471468L) + ((-3549920821868471408L & 3549920821868471468L) << 1)) { + var6 = -1238818278; + } else { + var6 = -1836521908; + } + break; + case 366506618: + default: + if (var0 <= (-253832978956884080L ^ 253832978956884080L) + ((-253832978956884080L & 253832978956884080L) << 1)) { + var6 = 1760724844; + } else { + var6 = -1380227982; + } + break; + case 372348422: + return var4 / ((5164293413732357032L ^ -5164293413732356972L) + ((5164293413732357032L & -5164293413732356972L) << 1)) + "h ago"; + case 652457470: + return var4 + "m ago"; + case 1760724844: + return "no data yet"; + } + } + } +} diff --git a/src/main/java/defpackage/anm.java b/src/main/java/defpackage/anm.java new file mode 100644 index 0000000..1cb4ad1 --- /dev/null +++ b/src/main/java/defpackage/anm.java @@ -0,0 +1,84 @@ +package defpackage; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.List; + +public final class anm implements ano { + private static final String NOT_AUDIO = "stream is not AAC audio"; + private final ans mp4; + private List samples = List.of(); + private int segment = -1; + private int sampleIndex; + private ByteBuffer packet; + private long ptsMs; + + anm(ant var1) throws IOException { + this.mp4 = ans.open(var1); + if (this.mp4.isVideo()) { + throw new IOException("stream is not AAC audio"); + } + } + + @Override + public byte[] decoderConfig() { + return this.mp4.codecConfig(); + } + + @Override + public void seek(long var1) throws IOException { + this.segment = this.mp4.segmentAt(var1); + this.samples = this.mp4.readSegment(this.segment); + this.sampleIndex = 0; + } + + @Override + public byte[] next() throws IOException { + anq var1 = null; + B var2 = null; + int var3 = 69155155; + + while (true) { + switch (var3) { + case -1995068241: + this.segment += 1; + this.samples = this.mp4.readSegment(this.segment); + this.sampleIndex = 0; + var3 = 69155155; + break; + case -489766555: + if (this.segment + (-697701571 | 697701572) + (-697701571 & 697701572) >= this.mp4.segmentCount()) { + var3 = 878836882; + } else { + var3 = -1995068241; + } + break; + case -313249247: + List var10000 = this.samples; + int var10001 = this.sampleIndex; + this.sampleIndex += 1; + var1 = (anq)var10000.get(var10001); + this.packet = this.mp4.read(var1, this.packet); + this.ptsMs = var1.ptsMs(); + var2 = new byte[this.packet.remaining()]; + this.packet.get((byte[])var2); + return (byte[])var2; + case 69155155: + default: + if (this.sampleIndex >= this.samples.size()) { + var3 = -489766555; + } else { + var3 = -313249247; + } + break; + case 878836882: + return null; + } + } + } + + @Override + public long ptsMs() { + return this.ptsMs; + } +} diff --git a/src/main/java/defpackage/ann.java b/src/main/java/defpackage/ann.java new file mode 100644 index 0000000..c34e935 --- /dev/null +++ b/src/main/java/defpackage/ann.java @@ -0,0 +1,65 @@ +package defpackage; + +import java.io.IOException; +import java.nio.ByteBuffer; +import org.jcodec.common.SeekableDemuxerTrack; +import org.jcodec.common.model.Packet; + +public final class ann implements ano { + private static final double SECONDS_PER_MILLI = 0.001; + private static final long MILLIS_PER_SECOND = 1000L; + private final SeekableDemuxerTrack track; + private final byte[] config; + private long ptsMs; + + ann(SeekableDemuxerTrack var1) { + this.track = var1; + ByteBuffer var2 = var1.getMeta().getCodecPrivate(); + this.config = new byte[var2.remaining()]; + var2.duplicate().get(this.config); + } + + @Override + public byte[] decoderConfig() { + return this.config; + } + + @Override + public void seek(long var1) throws IOException { + this.track.seek(var1 * 0.001); + } + + @Override + public byte[] next() throws IOException { + Packet var1 = null; + ByteBuffer var2 = null; + B var3 = null; + int var4 = 1034106877; + + while (true) { + switch (var4) { + case -390334854: + return null; + case -121966385: + this.ptsMs = Math.round(var1.getPtsD() * 1000.0); + var2 = var1.getData(); + var3 = new byte[var2.remaining()]; + var2.get((byte[])var3); + return (byte[])var3; + case 1034106877: + } + + var1 = this.track.nextFrame(); + if (var1 == null) { + var4 = -390334854; + } else { + var4 = -121966385; + } + } + } + + @Override + public long ptsMs() { + return this.ptsMs; + } +} diff --git a/src/main/java/defpackage/ano.java b/src/main/java/defpackage/ano.java new file mode 100644 index 0000000..d1bcf63 --- /dev/null +++ b/src/main/java/defpackage/ano.java @@ -0,0 +1,58 @@ +package defpackage; + +import java.io.IOException; +import java.util.List; +import org.jcodec.common.SeekableDemuxerTrack; +import org.jcodec.containers.mp4.demuxer.MP4Demuxer; + +interface ano { + byte[] decoderConfig(); + + void seek(long var1) throws IOException; + + byte[] next() throws IOException; + + long ptsMs(); + + static ano progressive(ant var0) throws IOException { + MP4Demuxer var1 = null; + List var2 = null; + SeekableDemuxerTrack var3 = null; + Object var4 = null; + int var5 = -673966822; + + while (true) { + switch (var5) { + case -799168299: + var3 = (SeekableDemuxerTrack)var4; + var5 = 310920726; + break; + case -673966822: + default: + var1 = MP4Demuxer.createMP4Demuxer(var0); + var2 = var1.getAudioTracks(); + if (!var2.isEmpty()) { + var5 = 1030976464; + } else { + var5 = -389984563; + } + break; + case -389984563: + return null; + case 310920726: + return new ann(var3); + case 1030976464: + var4 = var2.getFirst(); + if (var4 instanceof SeekableDemuxerTrack) { + var5 = -799168299; + } else { + var5 = -389984563; + } + } + } + } + + static ano dash(ant var0) throws IOException { + return new anm(var0); + } +} diff --git a/src/main/java/defpackage/anp.java b/src/main/java/defpackage/anp.java new file mode 100644 index 0000000..16cdbd8 --- /dev/null +++ b/src/main/java/defpackage/anp.java @@ -0,0 +1,4 @@ +package defpackage; + +record anp(int duration, int size, int flags) { +} diff --git a/src/main/java/defpackage/anq.java b/src/main/java/defpackage/anq.java new file mode 100644 index 0000000..4e77b73 --- /dev/null +++ b/src/main/java/defpackage/anq.java @@ -0,0 +1,4 @@ +package defpackage; + +record anq(long ptsMs, long offset, int size, boolean sync) { +} diff --git a/src/main/java/defpackage/anr.java b/src/main/java/defpackage/anr.java new file mode 100644 index 0000000..bec4fda --- /dev/null +++ b/src/main/java/defpackage/anr.java @@ -0,0 +1,4 @@ +package defpackage; + +record anr(long offset, long startMs) { +} diff --git a/src/main/java/defpackage/ans.java b/src/main/java/defpackage/ans.java new file mode 100644 index 0000000..8fa3268 --- /dev/null +++ b/src/main/java/defpackage/ans.java @@ -0,0 +1,1069 @@ +package defpackage; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +final class ans { + private static final int HEADER_SIZE = 8; + private static final int LARGE_HEADER_SIZE = 16; + private static final int LARGE_SIZE_MARKER = 1; + private static final int FULL_BOX_HEADER = 4; + private static final int MAX_INIT_BOX = 4194304; + private static final int MAX_FRAGMENT_BOX = 8388608; + private static final int MAX_SAMPLE = 4194304; + private static final long MILLIS_PER_SECOND = 1000L; + private static final int VISUAL_ENTRY_FIELDS = 78; + private static final int AUDIO_ENTRY_FIELDS = 28; + private static final int TAG_ES = 3; + private static final int TAG_DECODER_CONFIG = 4; + private static final int TAG_DECODER_SPECIFIC = 5; + private static final int DECODER_CONFIG_FIELDS = 13; + private static final int ES_FLAG_DEPENDENCE = 128; + private static final int ES_FLAG_URL = 64; + private static final int ES_FLAG_OCR = 32; + private static final int DESCRIPTOR_LENGTH_BYTES = 4; + private static final int DESCRIPTOR_CONTINUE = 128; + private static final int DESCRIPTOR_VALUE = 127; + private static final int DESCRIPTOR_SHIFT = 7; + private static final int REFERENCE_SIZE_MASK = Integer.MAX_VALUE; + private static final int TFHD_BASE_OFFSET = 1; + private static final int TFHD_DESCRIPTION_INDEX = 2; + private static final int TFHD_DEFAULT_DURATION = 8; + private static final int TFHD_DEFAULT_SIZE = 16; + private static final int TFHD_DEFAULT_FLAGS = 32; + private static final int TRUN_DATA_OFFSET = 1; + private static final int TRUN_FIRST_FLAGS = 4; + private static final int TRUN_DURATION = 256; + private static final int TRUN_SIZE = 512; + private static final int TRUN_FLAGS = 1024; + private static final int TRUN_COMPOSITION = 2048; + private static final int NON_SYNC_FLAG = 65536; + private static final int FLAGS_MASK = 16777215; + private static final int VERSION_SHIFT = 24; + private static final String MOOV = "moov"; + private static final String SIDX = "sidx"; + private static final String MOOF = "moof"; + private static final String TRAK = "trak"; + private static final String MDIA = "mdia"; + private static final String MDHD = "mdhd"; + private static final String MINF = "minf"; + private static final String STBL = "stbl"; + private static final String STSD = "stsd"; + private static final String MVEX = "mvex"; + private static final String TREX = "trex"; + private static final String TRAF = "traf"; + private static final String TFHD = "tfhd"; + private static final String TFDT = "tfdt"; + private static final String TRUN = "trun"; + private static final String AVC1 = "avc1"; + private static final String AVC3 = "avc3"; + private static final String MP4A = "mp4a"; + private static final String AVCC = "avcC"; + private static final String ESDS = "esds"; + private static final String NO_INDEX = "stream has no segment index"; + private static final String NO_CODEC = "stream has no supported codec"; + private static final String BAD_BOX = "malformed mp4 box "; + private final ant channel; + private final List segments = new ArrayList<>(); + private int timescale; + private boolean video; + private byte[] codecConfig; + private anp trackDefaults = new anp( + 0, + 0, + (-989610675 ^ 989610675) + ((-989610675 & 989610675) << 1) + ); + private String headerType; + private String lastType; + + private ans(ant var1) { + this.channel = var1; + } + + static ans open(ant var0) throws IOException { + ans var1 = new ans(var0); + var1.readInit(); + return var1; + } + + boolean isVideo() { + return this.video; + } + + byte[] codecConfig() { + return this.codecConfig; + } + + int segmentCount() { + return this.segments.size(); + } + + int segmentAt(long var1) { + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = -1375977729; + + while (true) { + switch (var7) { + case -1434743073: + var7 = 886457760; + break; + case -1384642667: + var6 = var3 + var4 >>> 1; + if (this.segments.get(var6).startMs() <= var1) { + var7 = -256902951; + } else { + var7 = -455469975; + } + break; + case -1375977729: + default: + var3 = 0; + var4 = this.segments.size() - (1); + var5 = 0; + var7 = 886457760; + break; + case -564277243: + return var5; + case -455469975: + var4 = var6 - (1); + var7 = -1434743073; + break; + case -256902951: + var5 = var6; + var3 = var6 + 1; + var7 = -1434743073; + break; + case 886457760: + if (var3 <= var4) { + var7 = -1384642667; + } else { + var7 = -564277243; + } + } + } + } + + List readSegment(int var1) throws IOException { + anr var2 = null; + ByteBuffer var3 = null; + ArrayList var4 = null; + ByteBuffer var5 = null; + int var6 = -1556286043; + + while (true) { + switch (var6) { + case -1687150231: + this.parseTraf(var5, var2.offset(), var4); + var6 = 142604501; + break; + case -1556286043: + default: + var2 = this.segments.get(var1); + var3 = this.readBox( + var2.offset(), + "moof", + (-1748646828 ^ 1757035436) + ((-1748646828 & 1757035436) << 1) + ); + var4 = new ArrayList(); + var6 = 429576451; + break; + case -117190557: + var4.sort((var0, var1x) -> Long.compare(var0.offset(), var1x.offset())); + return var4; + case 142604501: + var6 = 429576451; + break; + case 429576451: + if (var3.hasRemaining()) { + var6 = 790007517; + } else { + var6 = -117190557; + } + break; + case 790007517: + var5 = this.nextChild(var3); + if ("traf".equals(this.lastType)) { + var6 = -1687150231; + } else { + var6 = 142604501; + } + } + } + } + + ByteBuffer read(anq var1, ByteBuffer var2) throws IOException { + if (var1.size() > 0 && var1.size() <= (703881152 ^ -699686848) + ((703881152 & -699686848) << 1)) { + ByteBuffer var3 = var2 != null && var2.capacity() >= var1.size() + ? var2.clear() + : ByteBuffer.allocate( + Math.max( + var1.size(), + var2 == null + ? 0: var2.capacity() * ((-1041923229 | 1041923231) + (-1041923229 & 1041923231)) + ) + ); + var3.limit(var1.size()); + this.channel.setPosition(var1.offset()); + this.readFully(var3); + var3.flip(); + return var3; + } else { + throw new IOException("malformed mp4 box trun"); + } + } + + private void readInit() throws IOException { + long var1 = (7411397759284608797L ^ -7411397759284608797L) + ((7411397759284608797L & -7411397759284608797L) << 1); + ByteBuffer var3 = null; + long var4 = (3805654444444626470L | -3805654444444626470L) + (3805654444444626470L & -3805654444444626470L); + long var6 = (9141068795157752576L | -9141068795157752576L) + (9141068795157752576L & -9141068795157752576L); + Object var8 = null; + long var9 = (-7573062104143992540L ^ 7573062104143992540L) + ((-7573062104143992540L & 7573062104143992540L) << 1); + int var11 = 0; + String var12 = null; + int var13 = 440056696; + + while (true) { + switch (var13) { + case -2139693340: + this.parseSidx(var3, var4); + return; + case -1634972743: + if ("sidx".equals(var12)) { + var13 = 54234298; + } else { + var13 = 172949529; + } + break; + case -1462951968: + if (var1 < var6) { + var13 = -465831660; + } else { + var13 = 1798056365; + } + break; + case -1457415919: + var13 = 1798056365; + break; + case -1171543993: + if (this.timescale <= 0) { + var13 = 2072484515; + } else { + var13 = 945788598; + } + break; + case -672257516: + var1 += var9; + var13 = -1462951968; + break; + case -465831660: + if (var3 == null) { + var13 = -67413064; + } else { + var13 = 1798056365; + } + break; + case -259764133: + this.parseMoov(this.readBody(var1 + var11, var9 - var11)); + var13 = -672257516; + break; + case -67413064: + var8 = this.readHeader(var1); + var9 = (long)((Object[])var8)[0]; + var11 = (int)((Object[])var8)[1]; + var12 = this.headerType; + if (var9 >= var11) { + var13 = 1760847170; + } else { + var13 = 756152629; + } + break; + case 54234298: + var3 = this.readBody(var1 + var11, var9 - var11); + var4 = var1 + var9; + var13 = -672257516; + break; + case 172949529: + if ("moof".equals(var12)) { + var13 = -1457415919; + } else { + var13 = -672257516; + } + break; + case 440056696: + default: + var1 = (2552891194613996489L ^ -2552891194613996489L) + ((2552891194613996489L & -2552891194613996489L) << 1); + var3 = null; + var4 = (940066504459481028L ^ -940066504459481028L) + ((940066504459481028L & -940066504459481028L) << 1); + var6 = this.channel.size(); + var13 = -1462951968; + break; + case 452914626: + if ("moov".equals(var12)) { + var13 = -259764133; + } else { + var13 = -1634972743; + } + break; + case 594968410: + throw new IOException("stream has no segment index"); + case 756152629: + throw new IOException("malformed mp4 box " + var12); + case 945788598: + if (var3 == null) { + var13 = 594968410; + } else { + var13 = -2139693340; + } + break; + case 1760847170: + if (var9 > var6 - var1 + var11) { + var13 = 756152629; + } else { + var13 = 452914626; + } + break; + case 1798056365: + if (this.codecConfig != null) { + var13 = -1171543993; + } else { + var13 = 2072484515; + } + break; + case 2072484515: + throw new IOException( + "stream has no supported codec" + ); + } + } + } + + private void parseMoov(ByteBuffer var1) throws IOException { + ByteBuffer var2 = null; + String var3 = null; + ByteBuffer var4 = null; + int var5 = -301528956; + + while (true) { + switch (var5) { + case -2104894051: + var4 = this.nextChild(var2); + if ("trex".equals(this.lastType)) { + var5 = -1451465374; + } else { + var5 = -1884663492; + } + break; + case -1884663492: + var5 = 2059330867; + break; + case -1451465374: + var4.getInt(); + var4.getInt(); + var4.getInt(); + this.trackDefaults = new anp(var4.getInt(), var4.getInt(), var4.getInt()); + var5 = -1884663492; + break; + case -422340387: + if ("mvex".equals(var3)) { + var5 = 2059330867; + } else { + var5 = 692881069; + } + break; + case -301528956: + default: + if (var1.hasRemaining()) { + var5 = 323594408; + } else { + var5 = 166103649; + } + break; + case 166103649: + return; + case 323594408: + var2 = this.nextChild(var1); + var3 = this.lastType; + if ("trak".equals(var3)) { + var5 = 1727192512; + } else { + var5 = -422340387; + } + break; + case 692881069: + var5 = -301528956; + break; + case 717544781: + this.parseTrak(var2); + var5 = 692881069; + break; + case 1727192512: + if (this.codecConfig == null) { + var5 = 717544781; + } else { + var5 = -422340387; + } + break; + case 2059330867: + if (var2.hasRemaining()) { + var5 = -2104894051; + } else { + var5 = 692881069; + } + } + } + } + + private void parseTrak(ByteBuffer var1) throws IOException { + ByteBuffer var2 = this.findChild(var1, "mdia"); + if (var2 != null) { + ByteBuffer var3 = this.findChild(var2.duplicate(), "mdhd"); + ByteBuffer var4 = this.findChild(var2.duplicate(), "minf"); + ByteBuffer var5 = var4 == null ? null : this.findChild(var4, "stbl"); + ByteBuffer var6 = var5 == null ? null : this.findChild(var5, "stsd"); + if (var3 != null && var6 != null) { + int var7 = var3.get() & 255; + var3.position( + var3.position() + + (-685824852 | 685824856) + + (-685824852 & 685824856) + - ((-1401865506 ^ 1401865507) + ((-1401865506 & 1401865507) << 1)) + + ( + var7 == 1? 16: (693468506 ^ -693468498) + ((693468506 & -693468498) << 1) + ) + ); + this.timescale = var3.getInt(); + var6.position(var6.position() + (876033248 | -876033244) + (876033248 & -876033244) + (865572086 | -865572082) + (865572086 & -865572082)); + ByteBuffer var8 = this.nextChild(var6); + String var9 = this.lastType; + if (!"avc1".equals(var9) + && !"avc3".equals(var9)) { + if ("mp4a".equals(var9)) { + var8.position(var8.position() + (-1695756714 | 1695756742) + (-1695756714 & 1695756742)); + ByteBuffer var11 = this.findChild(var8, "esds"); + if (var11 != null) { + var11.position(var11.position() + (-1674133520 ^ 1674133524) + ((-1674133520 & 1674133524) << 1)); + this.codecConfig = audioSpecificConfig(var11); + this.video = (boolean)(((0)) != 0); + } + } + } else { + var8.position(var8.position() + (-566438694 ^ 566438772) + ((-566438694 & 566438772) << 1)); + ByteBuffer var10 = this.findChild(var8, "avcC"); + if (var10 != null) { + this.video = (boolean)(((1)) != 0); + this.codecConfig = bytes(var10); + } + } + } + } + } + + private static byte[] audioSpecificConfig(ByteBuffer var0) throws IOException { + int var1 = 0; + int var2 = 0; + B var3 = null; + int var4 = -1096445122; + + while (true) { + switch (var4) { + case -1997685852: + if (var2 > var0.remaining()) { + var4 = -1764616459; + } else { + var4 = -1968286316; + } + break; + case -1968286316: + var3 = new byte[var2]; + var0.get((byte[])var3); + return (byte[])var3; + case -1764616459: + throw new IOException( + "malformed mp4 box esds" + ); + case -1305548382: + var2 = descriptorLength(var0); + if (var2 > 0) { + var4 = -1997685852; + } else { + var4 = -1764616459; + } + break; + case -1204162978: + throw new IOException("malformed mp4 box esds"); + case -1119606006: + if ((var1 & (-1309597121 | 1309597185) + (-1309597121 & 1309597185)) != 0) { + var4 = 1774782979; + } else { + var4 = 832155241; + } + break; + case -1096445122: + default: + if ((var0.get() & (1483213758 ^ -1483213503) + ((1483213758 & -1483213503) << 1)) != (988814225 ^ -988814222) + ((988814225 & -988814222) << 1)) { + var4 = -1204162978; + } else { + var4 = 1190173442; + } + break; + case -749808190: + throw new IOException( + "malformed mp4 box esds" + ); + case -269512334: + var0.getShort(); + var4 = -195629486; + break; + case -195629486: + if ((var0.get() & (229069346 | -229069091) + (229069346 & -229069091)) != (-125974441 ^ 125974445) + ((-125974441 & 125974445) << 1)) { + var4 = 1409742169; + } else { + var4 = 587537308; + } + break; + case 431210569: + var0.getShort(); + var4 = -1119606006; + break; + case 587537308: + descriptorLength(var0); + var0.position(var0.position() + (213567955 ^ -213567942) + ((213567955 & -213567942) << 1)); + if ((var0.get() & (-1603401203 | 1603401458) + (-1603401203 & 1603401458)) != (1561493147 ^ -1561493142) + ((1561493147 & -1561493142) << 1)) { + var4 = -749808190; + } else { + var4 = -1305548382; + } + break; + case 832155241: + if ((var1 & (-41635529 ^ 41635561) + ((-41635529 & 41635561) << 1)) != 0) { + var4 = -269512334; + } else { + var4 = -195629486; + } + break; + case 1190173442: + descriptorLength(var0); + var0.getShort(); + var1 = var0.get() & 255; + if ((var1 & (-1389192563 | 1389192691) + (-1389192563 & 1389192691)) != 0) { + var4 = 431210569; + } else { + var4 = -1119606006; + } + break; + case 1409742169: + throw new IOException( + "malformed mp4 box esds" + ); + case 1774782979: + var0.position(var0.position() + (var0.get() & (-489906828 | 489907083) + (-489906828 & 489907083))); + var4 = 832155241; + } + } + } + + private static int descriptorLength(ByteBuffer var0) { + int var1 = 0; + int var2 = 0; + int var3 = 0; + int var4 = 2036729414; + + while (true) { + switch (var4) { + case -1873015505: + var2++; + var4 = 1237330076; + break; + case -1441293489: + return var1; + case -1044781650: + var4 = -1441293489; + break; + case -346707391: + var3 = var0.get() & 255; + var1 = var1 << (2061741280 | -2061741273) + (2061741280 & -2061741273) | var3 & 127; + if ((var3 & (635745314 ^ -635745186) + ((635745314 & -635745186) << 1)) == 0) { + var4 = -1044781650; + } else { + var4 = -1873015505; + } + break; + case 1237330076: + if (var2 < (1194279294 | -1194279290) + (1194279294 & -1194279290)) { + var4 = -346707391; + } else { + var4 = -1441293489; + } + break; + case 2036729414: + default: + var1 = 0; + var2 = 0; + var4 = 1237330076; + } + } + } + + private void parseSidx(ByteBuffer var1, long var2) throws IOException { + int var4 = 0; + long var5 = (3831471514619511095L | -3831471514619511095L) + (3831471514619511095L & -3831471514619511095L); + long var7 = (1821138891753438902L | -1821138891753438902L) + (1821138891753438902L & -1821138891753438902L); + long var9 = (-1061455935572584451L | 1061455935572584451L) + (-1061455935572584451L & 1061455935572584451L); + int var11 = 0; + long var12 = (4171997177025757527L | -4171997177025757527L) + (4171997177025757527L & -4171997177025757527L); + long var14 = (-2460661822976514631L | 2460661822976514631L) + (-2460661822976514631L & 2460661822976514631L); + int var16 = 0; + long var17 = (-3780586801239854412L ^ 3780586801239854412L) + ((-3780586801239854412L & 3780586801239854412L) << 1); + long var19 = (3456051884729680349L | -3456051884729680349L) + (3456051884729680349L & -3456051884729680349L); + long var22 = (3128965157428713979L ^ -3128965157428713979L) + ((3128965157428713979L & -3128965157428713979L) << 1); + long var24 = (-8517966229240719283L | 8517966229240719283L) + (-8517966229240719283L & 8517966229240719283L); + int var21 = 1929521438; + + while (true) { + switch (var21) { + case -2138543696: + var22 = Integer.toUnsignedLong(var1.getInt()); + var21 = -2078374584; + break; + case -2078374584: + var7 = var22; + if (var4 == 0) { + var21 = 611360565; + } else { + var21 = 825211583; + } + break; + case -1968474426: + return; + case -1836119336: + throw new IOException( + "stream has no segment index" + ); + case -1737082648: + var12 = var2 + var9; + var14 = var7; + var16 = 0; + var21 = -824854579; + break; + case -1439015422: + var9 = var24; + var1.getShort(); + var11 = var1.getShort() & 65535; + if (var5 > (8413449736749540036L ^ -8413449736749540036L) + ((8413449736749540036L & -8413449736749540036L) << 1)) { + var21 = 344581089; + } else { + var21 = -1836119336; + } + break; + case -824854579: + if (var16 < var11) { + var21 = 101280181; + } else { + var21 = -1968474426; + } + break; + case -290906332: + var22 = var1.getLong(); + var21 = -2078374584; + break; + case 101280181: + var17 = var1.getInt() & 2147483647; + var19 = Integer.toUnsignedLong(var1.getInt()); + var1.getInt(); + this.segments + .add(new anr(var12, var14 * ((5500300374376334535L | -5500300374376333535L) + (5500300374376334535L & -5500300374376333535L)) / var5)); + var12 += var17; + var14 += var19; + var16++; + var21 = -824854579; + break; + case 344581089: + if (var11 == 0) { + var21 = -1836119336; + } else { + var21 = -1737082648; + } + break; + case 611360565: + var24 = Integer.toUnsignedLong(var1.getInt()); + var21 = -1439015422; + break; + case 825211583: + var24 = var1.getLong(); + var21 = -1439015422; + break; + case 1929521438: + default: + var4 = var1.get() & 255; + var1.position( + var1.position() + (-1280611948 | 1280611952) + (-1280611948 & 1280611952) - ((980245715 ^ -980245714) + ((980245715 & -980245714) << 1)) + ); + var1.getInt(); + var5 = Integer.toUnsignedLong(var1.getInt()); + if (var4 == 0) { + var21 = -2138543696; + } else { + var21 = -290906332; + } + } + } + } + + private void parseTraf(ByteBuffer var1, long var2, List var4) throws IOException { + long var5 = var2; + long var7 = (-4904487195750384624L | 4904487195750384624L) + (-4904487195750384624L & 4904487195750384624L); + int var9 = this.trackDefaults.duration(); + int var10 = this.trackDefaults.size(); + int var11 = this.trackDefaults.flags(); + ArrayList var12 = new ArrayList(); + + while (var1.hasRemaining()) { + ByteBuffer var13 = this.nextChild(var1); + String var14 = this.lastType; + if ("tfhd".equals(var14)) { + int var15 = var13.getInt() & 16777215; + var13.getInt(); + if ((var15 & (-2116886066 ^ 2116886067) + ((-2116886066 & 2116886067) << 1)) != 0) { + var5 = var13.getLong(); + } + + if ((var15 & (568500500 ^ -568500498) + ((568500500 & -568500498) << 1)) != 0) { + var13.getInt(); + } + + if ((var15 & (1768970636 | -1768970628) + (1768970636 & -1768970628)) != 0) { + var9 = var13.getInt(); + } + + if ((var15 & (728567715 ^ -728567699) + ((728567715 & -728567699) << 1)) != 0) { + var10 = var13.getInt(); + } + + if ((var15 & (1214956429 | -1214956397) + (1214956429 & -1214956397)) != 0) { + var11 = var13.getInt(); + } + } else if ("tfdt".equals(var14)) { + int var30 = var13.getInt() >>> 24; + var7 = var30 == 1? var13.getLong() : Integer.toUnsignedLong(var13.getInt()); + } else if ("trun".equals(var14)) { + var12.add(var13); + } + } + + for (ByteBuffer var29 : var12) { + int var31 = var29.getInt(); + int var16 = var31 & 16777215; + int var17 = var29.getInt(); + long var18 = var5; + if ((var16 & (-130552350 | 130552351) + (-130552350 & 130552351)) != 0) { + var18 = var5 + var29.getInt(); + } + + int var20 = (var16 & (800770923 ^ -800770919) + ((800770923 & -800770919) << 1)) != 0 + ? var29.getInt() + : -1; + + for (int var21 = 0; var21 < var17; var21++) { + int var22 = (var16 & (-1770260101 | 1770260357) + (-1770260101 & 1770260357)) != 0 ? var29.getInt() : var9; + int var23 = (var16 & (890095412 | -890094900) + (890095412 & -890094900)) != 0 ? var29.getInt() : var10; + int var24 = (var16 & (-37984295 ^ 37985319) + ((-37984295 & 37985319) << 1)) != 0 ? var29.getInt() : (var21 == 0 && var20 >= 0 ? var20 : var11); + int var25 = (var16 & (-1137172152 | 1137174200) + (-1137172152 & 1137174200)) != 0 + ? var29.getInt() + : 0; + long var26 = (var7 + var25) + * ((8324970555036979122L ^ -8324970555036978122L) + ((8324970555036979122L & -8324970555036978122L) << 1)) + / this.timescale; + var4.add( + new anq( + var26, + var18, + var23, + (boolean)((((var24 & (-171303705 | 171369241) + (-171303705 & 171369241)) == 0 + ? 1: (2018186926 | -2018186926) + (2018186926 & -2018186926)) + ) != 0)) + ); + var18 += Integer.toUnsignedLong(var23); + var7 += Integer.toUnsignedLong(var22); + } + } + } + + private long[] readHeader(long var1) throws IOException { + ByteBuffer var3 = null; + long var4 = (3231648927111230452L ^ -3231648927111230452L) + ((3231648927111230452L & -3231648927111230452L) << 1); + int var6 = -423888311; + + while (true) { + switch (var6) { + case -805875744: + long[] var7 = new long[2]; + var7[0] = var4; + var7[1] = (7320995526534565662L | -7320995526534565654L) + + (7320995526534565662L & -7320995526534565654L); + return var7; + case -423888311: + default: + var3 = ByteBuffer.allocate((2143588260 | -2143588244) + (2143588260 & -2143588244)); + var3.limit((1540542962 | -1540542954) + (1540542962 & -1540542954)); + this.channel.setPosition(var1); + this.readFully(var3); + var3.flip(); + var4 = Integer.toUnsignedLong(var3.getInt()); + this.headerType = fourcc(var3); + if (var4 == (-6814894446849728777L ^ 6814894446849728778L) + ((-6814894446849728777L & 6814894446849728778L) << 1)) { + var6 = 804506090; + } else { + var6 = -805875744; + } + break; + case 804506090: + var3.clear(); + var3.limit((-877307175 ^ 877307183) + ((-877307175 & 877307183) << 1)); + this.readFully(var3); + var3.flip(); + long[] var10000 = new long[2]; + var10000[0] = var3.getLong(); + var10000[1] = (2434810948995596201L ^ -2434810948995596185L) + + ((2434810948995596201L & -2434810948995596185L) << 1); + return var10000; + } + } + } + + private ByteBuffer readBox(long var1, String var3, int var4) throws IOException { + long[] var5 = null; + int var6 = -1621090942; + + while (true) { + switch (var6) { + case -1621090942: + default: + var5 = this.readHeader(var1); + if (var3.equals(this.headerType)) { + var6 = -906418742; + } else { + var6 = 1007665017; + } + break; + case -1219065191: + return this.readBody( + var1 + var5[1], + var5[0] - var5[1] + ); + case -906418742: + if (var5[0] >= var5[1]) { + var6 = 1048125538; + } else { + var6 = 1007665017; + } + break; + case 1007665017: + throw new IOException("malformed mp4 box " + this.headerType); + case 1048125538: + if (var5[0] > var4) { + var6 = 1007665017; + } else { + var6 = -1219065191; + } + } + } + } + + private ByteBuffer readBody(long var1, long var3) throws IOException { + ByteBuffer var5 = null; + int var6 = 1236545215; + + while (true) { + switch (var6) { + case -814841221: + var5 = ByteBuffer.allocate((int)var3); + this.channel.setPosition(var1); + this.readFully(var5); + var5.flip(); + return var5; + case 861717400: + throw new IOException("malformed mp4 box " + this.headerType); + case 1236545215: + } + + if (var3 > (7571846619419810277L ^ -7571846619411421669L) + ((7571846619419810277L & -7571846619411421669L) << 1)) { + var6 = 861717400; + } else { + var6 = -814841221; + } + } + } + + private void readFully(ByteBuffer var1) throws IOException { + int var2 = 653934146; + + while (true) { + switch (var2) { + case -1123486463: + if (this.channel.read(var1) < 0) { + var2 = 1565434703; + } else { + var2 = 653934146; + } + break; + case -835982463: + return; + case 653934146: + default: + if (var1.hasRemaining()) { + var2 = -1123486463; + } else { + var2 = -835982463; + } + break; + case 1565434703: + throw new IOException("malformed mp4 box " + this.headerType); + } + } + } + + private ByteBuffer nextChild(ByteBuffer var1) throws IOException { + long var2 = (-2503122657854808208L ^ 2503122657854808208L) + ((-2503122657854808208L & 2503122657854808208L) << 1); + int var4 = 0; + long var5 = (-236149922448909385L | 236149922448909385L) + (-236149922448909385L & 236149922448909385L); + ByteBuffer var7 = null; + int var8 = -1972605173; + + while (true) { + switch (var8) { + case -1993588768: + var5 = var2 - var4; + if (var5 >= (165396616700685102L ^ -165396616700685102L) + ((165396616700685102L & -165396616700685102L) << 1)) { + var8 = 1518288467; + } else { + var8 = 808143016; + } + break; + case -1972605173: + default: + if (var1.remaining() < (-1877086113 ^ 1877086121) + ((-1877086113 & 1877086121) << 1)) { + var8 = -255762832; + } else { + var8 = -1081115078; + } + break; + case -1764455227: + var7 = var1.slice(var1.position(), (int)var5); + var1.position(var1.position() + (int)var5); + return var7; + case -1081115078: + var2 = Integer.toUnsignedLong(var1.getInt()); + this.lastType = fourcc(var1); + var4 = 8; + if (var2 == (1720352128774993448L ^ -1720352128774993447L) + ((1720352128774993448L & -1720352128774993447L) << 1)) { + var8 = 962253841; + } else { + var8 = 383432441; + } + break; + case -255762832: + this.lastType = ""; + var1.position(var1.limit()); + return ByteBuffer.allocate((-2019184955 ^ 2019184955) + ((-2019184955 & 2019184955) << 1)); + case 383432441: + if (var2 == (-3879194029498667517L ^ 3879194029498667517L) + ((-3879194029498667517L & 3879194029498667517L) << 1)) { + var8 = 1066781826; + } else { + var8 = -1993588768; + } + break; + case 808143016: + throw new IOException("malformed mp4 box " + this.lastType); + case 962253841: + var2 = var1.getLong(); + var4 = 16; + var8 = -1993588768; + break; + case 1066781826: + var2 = (long)var1.remaining() + var4; + var8 = -1993588768; + break; + case 1518288467: + if (var5 > var1.remaining()) { + var8 = 808143016; + } else { + var8 = -1764455227; + } + } + } + } + + private ByteBuffer findChild(ByteBuffer var1, String var2) throws IOException { + ByteBuffer var3 = null; + int var4 = -1123289809; + + while (true) { + switch (var4) { + case -1774680113: + return null; + case -1123289809: + default: + if (var1.hasRemaining()) { + var4 = 71772650; + } else { + var4 = -1774680113; + } + break; + case 71772650: + var3 = this.nextChild(var1); + if (var2.equals(this.lastType)) { + var4 = 1134754558; + } else { + var4 = 1713597196; + } + break; + case 1134754558: + return var3; + case 1713597196: + var4 = -1123289809; + } + } + } + + private static String fourcc(ByteBuffer var0) { + char[] var1 = null; + int var2 = 0; + int var3 = 1310070610; + + while (true) { + switch (var3) { + case 899162500: + var1[var2] = (char)(var0.get() & (-1682982377 | 1682982632) + (-1682982377 & 1682982632)); + var2++; + var3 = 1477720923; + break; + case 1310070610: + default: + var1 = new char[4]; + var2 = 0; + var3 = 1477720923; + break; + case 1344566532: + return new String(var1); + case 1477720923: + if (var2 < var1.length) { + var3 = 899162500; + } else { + var3 = 1344566532; + } + } + } + } + + private static byte[] bytes(ByteBuffer var0) { + byte[] var1 = new byte[var0.remaining()]; + var0.get(var1); + return var1; + } +} diff --git a/src/main/java/defpackage/ant.java b/src/main/java/defpackage/ant.java new file mode 100644 index 0000000..6e92fef --- /dev/null +++ b/src/main/java/defpackage/ant.java @@ -0,0 +1,137 @@ +package defpackage; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.channels.ClosedChannelException; +import java.nio.channels.NonWritableChannelException; +import org.jcodec.common.io.SeekableByteChannel; + +final class ant implements SeekableByteChannel { + private static final int END_OF_STREAM = -1; + private final anv source; + private long position; + private boolean open = (boolean)(((1)) != 0); + + ant(anv var1) { + this.source = var1; + } + + public long position() { + return this.position; + } + + public SeekableByteChannel setPosition(long var1) { + this.position = Math.max((193620665060487151L ^ -193620665060487151L) + ((193620665060487151L & -193620665060487151L) << 1), var1); + return this; + } + + public long size() throws IOException { + return this.source.size(); + } + + public SeekableByteChannel truncate(long var1) { + throw new NonWritableChannelException(); + } + + public int read(ByteBuffer var1) throws IOException { + long var2 = (-1649697699078873992L | 1649697699078873992L) + (-1649697699078873992L & 1649697699078873992L); + int var4 = 0; + long var5 = (-4662316392921571517L ^ 4662316392921571517L) + ((-4662316392921571517L & 4662316392921571517L) << 1); + int var7 = 0; + byte[] var8 = null; + int var9 = 0; + int var11 = 0; + int var10 = 2137334717; + + while (true) { + switch (var10) { + case -1715816134: + if (this.position < var2) { + var10 = 236205770; + } else { + var10 = -1677344849; + } + break; + case -1677344849: + if (var4 == 0) { + var10 = 290163409; + } else { + var10 = -60386834; + } + break; + case -1284133657: + throw new ClosedChannelException(); + case -60386834: + var11 = var4; + var10 = 1212154029; + break; + case 24726110: + return -1; + case 161112137: + var10 = -1677344849; + break; + case 236205770: + var5 = this.position / ((-6629346704668776001L ^ 6629346704669300289L) + ((-6629346704668776001L & 6629346704669300289L) << 1)); + var7 = (int)(this.position % ((3350175310777450795L | -3350175310776926507L) + (3350175310777450795L & -3350175310776926507L))); + var8 = this.source.block(var5); + if (var7 >= var8.length) { + var10 = 161112137; + } else { + var10 = 1537137763; + } + break; + case 290163409: + var11 = -1; + var10 = 1212154029; + break; + case 810520613: + var2 = this.source.size(); + if (this.position >= var2) { + var10 = 24726110; + } else { + var10 = 1064187723; + } + break; + case 1010526808: + if (var1.hasRemaining()) { + var10 = -1715816134; + } else { + var10 = -1677344849; + } + break; + case 1064187723: + var4 = 0; + var10 = 1010526808; + break; + case 1212154029: + return var11; + case 1537137763: + var9 = Math.min(var1.remaining(), var8.length - var7); + var1.put(var8, var7, var9); + this.position += var9; + var4 += var9; + var10 = 1010526808; + break; + case 2137334717: + default: + if (!this.open) { + var10 = -1284133657; + } else { + var10 = 810520613; + } + } + } + } + + public int write(ByteBuffer var1) { + throw new NonWritableChannelException(); + } + + public boolean isOpen() { + return this.open; + } + + public void close() { + this.open = (boolean)(((0)) != 0); + } +} diff --git a/src/main/java/defpackage/anu.java b/src/main/java/defpackage/anu.java new file mode 100644 index 0000000..13c063e --- /dev/null +++ b/src/main/java/defpackage/anu.java @@ -0,0 +1,51 @@ +package defpackage; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Objects; + +/* JADX INFO: loaded from: evovis-dec.jar:anu.class */ +class anu extends LinkedHashMap { + final /* synthetic */ anv this$0; + + /* JADX WARN: Multi-variable type inference failed */ + @Override // java.util.LinkedHashMap + protected boolean removeEldestEntry(Map.Entry entry) { + int i = 0; + int i2 = -276869657; + int i3 = -1073020667; + while (true) { + switch (i2 + i3) { + case -1697617927: + i = 1; + i2 = 2046383003; + i3 = 67704832; + break; + case -1349890324: + default: + if (size() <= ((-2135706322) | 2135706346) + ((-2135706322) & 2135706346)) { + i2 = -34132101; + i3 = 1168318490; + } else { + i2 = 1154226113; + i3 = 1443123256; + } + break; + case 1134186389: + i = 0; + i2 = 2046427675; + i3 = 67660160; + break; + case 2114087835: + return i; + } + } + } + + /* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */ + anu(anv anvVar, int i, float f, boolean z) { + super(i, f, z); + Objects.requireNonNull(anvVar); + this.this$0 = anvVar; + } +} diff --git a/src/main/java/defpackage/anv.java b/src/main/java/defpackage/anv.java new file mode 100644 index 0000000..60318f0 --- /dev/null +++ b/src/main/java/defpackage/anv.java @@ -0,0 +1,289 @@ +package defpackage; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.HttpClient.Redirect; +import java.net.http.HttpRequest.Builder; +import java.net.http.HttpResponse.BodyHandlers; +import java.time.Duration; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicInteger; + +final class anv implements AutoCloseable { + static final int BLOCK_SIZE = 524288; + private static final int MAX_BLOCKS = 24; + private static final int PREFETCH_BLOCKS = 2; + private static final int MAX_ATTEMPTS = 3; + private static final int PARTIAL_CONTENT = 206; + private static final int FORBIDDEN_STATUS = 403; + private static final String RANGE_HEADER = "Range"; + private static final String CONTENT_RANGE_HEADER = "Content-Range"; + private static final String RANGE_FORMAT = "bytes=%d-%d"; + private static final String TOTAL_SEPARATOR = "/"; + private static final String UNKNOWN_TOTAL = "*"; + private static final String THREAD_PREFIX = "EvoWatchFetch-"; + private static final String CLOSED = "stream closed"; + private static final String STATUS_FAILURE = "stream request failed with status "; + private static final String EXPIRED = "stream link expired"; + private static final String SHORT_READ = "stream ended early"; + private static final String NO_LENGTH = "stream length unknown"; + private static final Duration CONNECT_TIMEOUT = Duration.ofSeconds((-43341478625164619L | 43341478625164629L) + (-43341478625164619L & 43341478625164629L)); + private static final Duration REQUEST_TIMEOUT = Duration.ofSeconds( + (-4573509938278588268L ^ 4573509938278588288L) + ((-4573509938278588268L & 4573509938278588288L) << 1) + ); + private static final int FETCH_THREADS = 2; + private static final AtomicInteger THREADS = new AtomicInteger(); + private static final HttpClient HTTP = HttpClient.newBuilder().connectTimeout(CONNECT_TIMEOUT).followRedirects(Redirect.NORMAL).build(); + private static final ExecutorService FETCHERS = Executors.newFixedThreadPool(2, var0 -> { + Thread var1 = new Thread(var0, "EvoWatchFetch-" + THREADS.incrementAndGet()); + var1.setDaemon((boolean)((((-628499018 ^ 628499019) + ((-628499018 & 628499019) << 1))) != 0)); + return var1; + }); + private final URI uri; + private final Map> inflight = new ConcurrentHashMap<>(); + private final LinkedHashMap blocks = new LinkedHashMap( + (2101259539 | -2101259515) + (2101259539 & -2101259515), 0.75F, (boolean)((((1626853175 ^ -1626853174) + ((1626853175 & -1626853174) << 1)) + ) != 0)) { + @Override + protected boolean removeEldestEntry(Entry var1) { + int var3 = 0; + int var2 = -1349890324; + + while (true) { + switch (var2) { + case -1697617927: + var3 = 1; + var2 = 2114087835; + break; + case -1349890324: + default: + if (this.size() > (-2135706322 | 2135706346) + (-2135706322 & 2135706346)) { + var2 = -1697617927; + } else { + var2 = 1134186389; + } + break; + case 1134186389: + var3 = 0; + var2 = 2114087835; + break; + case 2114087835: + return (boolean)((var3) != 0); + } + } + } + }; + private volatile long size = (2329863572674449563L ^ -2329863572674449564L) + ((2329863572674449563L & -2329863572674449564L) << 1); + private volatile boolean closed; + + anv(String var1) { + this.uri = URI.create(var1); + } + + long size() throws IOException { + int var1 = 472512027; + + while (true) { + switch (var1) { + case -503792275: + this.block((-4530128695647098382L | 4530128695647098382L) + (-4530128695647098382L & 4530128695647098382L)); + var1 = 729206576; + break; + case 472512027: + default: + if (this.size < (3988821733672358726L ^ -3988821733672358726L) + ((3988821733672358726L & -3988821733672358726L) << 1)) { + var1 = -503792275; + } else { + var1 = 729206576; + } + break; + case 729206576: + return this.size; + } + } + } + + byte[] block(long var1) throws IOException { + if (this.closed) { + throw new IOException("stream closed"); + } + + synchronized (this.blocks) { + byte[] var4 = this.blocks.get(var1); + if (var4 != null) { + this.prefetch(var1); + return var4; + } + } + + CompletableFuture var10 = this.inflight.computeIfAbsent(var1, this::schedule); + + try { + byte[] var11 = (byte[])var10.get(); + this.prefetch(var1); + return var11; + } catch (InterruptedException var7) { + Thread.currentThread().interrupt(); + throw new IOException(var7); + } catch (ExecutionException var8) { + Throwable var5 = var8.getCause(); + throw var5 instanceof IOException var6 ? var6 : new IOException(var5); + } + } + + @Override + public void close() { + this.closed = (boolean)(((1)) != 0); + synchronized (this.blocks) { + this.blocks.clear(); + } + + this.inflight.values().forEach(var0 -> var0.cancel((boolean)((((1531707878 | -1531707878) + (1531707878 & -1531707878))) != 0))); + this.inflight.clear(); + } + + private void prefetch(long var1) { + long var3 = this.size; + + for (long var5 = var1 + (-8236988301725499432L | 8236988301725499433L) + (-8236988301725499432L & 8236988301725499433L); + var5 <= var1 + (6858009416270009072L | -6858009416270009070L) + (6858009416270009072L & -6858009416270009070L); + var5 += (-3129246699723166246L ^ 3129246699723166247L) + ((-3129246699723166246L & 3129246699723166247L) << 1) + ) { + if (this.closed + || var3 >= (7720262044085466982L | -7720262044085466982L) + (7720262044085466982L & -7720262044085466982L) + && var5 * ((-3958722333846587990L | 3958722333847112278L) + (-3958722333846587990L & 3958722333847112278L)) >= var3) { + return; + } + + boolean var7; + synchronized (this.blocks) { + var7 = this.blocks.containsKey(var5); + } + + if (!var7) { + this.inflight.computeIfAbsent(var5, this::schedule); + } + } + } + + private CompletableFuture schedule(long var1) { + CompletableFuture var3 = new CompletableFuture(); + FETCHERS.execute(() -> { + try { + byte[] var4 = this.fetch(var1); + synchronized (this.blocks) { + if (!this.closed) { + this.blocks.put(var1, var4); + } + } + + var3.complete(var4); + } catch (Throwable var12) { + var3.completeExceptionally(var12); + } finally { + this.inflight.remove(var1, var3); + } + }); + return var3; + } + + private byte[] fetch(long var1) throws IOException, InterruptedException { + long var3 = var1 * ((8521208077158051941L | -8521208077157527653L) + (8521208077158051941L & -8521208077157527653L)); + long var5 = this.size; + long var7 = var5 >= (-1659635375413220289L | 1659635375413220289L) + (-1659635375413220289L & 1659635375413220289L) + ? Math.min(var5, var3 + (6411492132548825653L ^ -6411492132548301365L) + ((6411492132548825653L & -6411492132548301365L) << 1)) + - ((7604480255979470170L | -7604480255979470169L) + (7604480255979470170L & -7604480255979470169L)) + : var3 + + (-4641375614984719376L ^ 4641375614985243664L) + + ((-4641375614984719376L & 4641375614985243664L) << 1) + - ((-3431341490356674705L ^ 3431341490356674706L) + ((-3431341490356674705L & 3431341490356674706L) << 1)); + IOException var9 = null; + + for (int var10 = 0; + var10 < (1619175934 | -1619175931) + (1619175934 & -1619175931) && !this.closed; + var10++ + ) { + try { + return this.request(var3, var7); + } catch (IOException var12) { + var9 = var12; + if (!"stream link expired" + .equals(var12.getMessage())) { + continue; + } + break; + } + } + + throw var9 == null ? new IOException("stream closed") : var9; + } + + private byte[] request(long var1, long var3) throws IOException, InterruptedException { + Builder var10000 = HttpRequest.newBuilder(this.uri).timeout(REQUEST_TIMEOUT); + String var10001 = "Range"; + String var10002 = "bytes=%d-%d"; + Object[] var10003 = new Object[2]; + var10003[0] = var1; + var10003[1] = var3; + HttpRequest var5 = var10000.header(var10001, var10002.formatted(var10003)).GET().build(); + HttpResponse var6 = HTTP.send(var5, BodyHandlers.ofInputStream()); + int var7 = var6.statusCode(); + if (var7 != (-128851233 ^ 128851439) + ((-128851233 & 128851439) << 1)) { + ((InputStream)var6.body()).close(); + throw new IOException( + var7 == 403? "stream link expired" + : "stream request failed with status " + var7 + ); + } + + long var8 = var6.headers() + .firstValue("Content-Range") + .map(anv::totalOf) + .orElse((-3163655304064213441L | 3163655304064213440L) + (-3163655304064213441L & 3163655304064213440L)); + if (var8 < (3795305864436727926L ^ -3795305864436727926L) + ((3795305864436727926L & -3795305864436727926L) << 1)) { + ((InputStream)var6.body()).close(); + throw new IOException("stream length unknown"); + } + + this.size = var8; + int var10 = (int)(Math.min(var3 + (6519619843885400413L ^ -6519619843885400412L) + ((6519619843885400413L & -6519619843885400412L) << 1), var8) - var1); + + try (InputStream var11 = (InputStream)var6.body()) { + byte[] var12 = var11.readNBytes(Math.max(0, var10)); + if (var12.length < var10) { + throw new IOException("stream ended early"); + } else { + return var12; + } + } + } + + private static long totalOf(String var0) { + int var1 = var0.lastIndexOf("/"); + if (var1 < 0) { + return (5439408083309381546L | -5439408083309381547L) + (5439408083309381546L & -5439408083309381547L); + } + + String var2 = var0.substring(var1 + 1).trim(); + if (var2.equals("*")) { + return (-3918879396568692270L ^ 3918879396568692269L) + ((-3918879396568692270L & 3918879396568692269L) << 1); + } + + try { + return Long.parseLong(var2); + } catch (NumberFormatException var4) { + return (-8533093646652533454L | 8533093646652533453L) + (-8533093646652533454L & 8533093646652533453L); + } + } +} diff --git a/src/main/java/defpackage/anw.java b/src/main/java/defpackage/anw.java new file mode 100644 index 0000000..838363c --- /dev/null +++ b/src/main/java/defpackage/anw.java @@ -0,0 +1,6 @@ +package defpackage; + +import org.jcodec.common.model.Picture; + +record anw(Picture picture, long ptsMs) { +} diff --git a/src/main/java/defpackage/anx.java b/src/main/java/defpackage/anx.java new file mode 100644 index 0000000..54098ab --- /dev/null +++ b/src/main/java/defpackage/anx.java @@ -0,0 +1,223 @@ +package defpackage; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import org.jcodec.codecs.h264.H264Decoder; +import org.jcodec.codecs.h264.H264Utils; +import org.jcodec.codecs.h264.io.model.Frame; +import org.jcodec.codecs.h264.io.model.SeqParameterSet; +import org.jcodec.codecs.h264.mp4.AvcCBox; +import org.jcodec.common.model.ColorSpace; +import org.jcodec.common.model.Picture; + +public final class anx implements anz { + private static final int REORDER_DEPTH = 4; + private static final int MACROBLOCK = 16; + private static final int FIELD_PAIR = 2; + private static final String NOT_VIDEO = "stream is not H.264 video"; + private final ans mp4; + private final AvcCBox avcC; + private final ArrayDeque free = new ArrayDeque<>(); + private final List pending = new ArrayList<>(); + private H264Decoder decoder; + private List samples = List.of(); + private int segment = -1; + private int sampleIndex; + private boolean ended; + private ByteBuffer packet; + private Picture emitted; + private long ptsMs; + private int width; + private int height; + + anx(ant var1) throws IOException { + this.mp4 = ans.open(var1); + if (!this.mp4.isVideo()) { + throw new IOException("stream is not H.264 video"); + } + + this.avcC = H264Utils.parseAVCCFromBuffer(ByteBuffer.wrap(this.mp4.codecConfig())); + SeqParameterSet var2 = H264Utils.readSPS(((ByteBuffer)this.avcC.getSpsList().getFirst()).duplicate()); + this.width = (var2.picWidthInMbsMinus1 + (1131802875 | -1131802874) + (1131802875 & -1131802874)) + * ((1915007897 | -1915007881) + (1915007897 & -1915007881)); + this.height = (var2.picHeightInMapUnitsMinus1 + (-816736054 ^ 816736055) + ((-816736054 & 816736055) << 1)) + * ((-1178645497 ^ 1178645513) + ((-1178645497 & 1178645513) << 1)) + * (var2.frameMbsOnlyFlag ? 1: (329714035 | -329714033) + (329714035 & -329714033)); + this.decoder = this.newDecoder(); + + for (int var3 = 0; var3 <= 4; var3++) { + this.free.add(Picture.create(this.width, this.height, ColorSpace.YUV420J)); + } + } + + @Override + public void seek(long var1) throws IOException { + Iterator var3 = null; + anw var4 = null; + int var5 = 844430928; + + while (true) { + switch (var5) { + case -2102901555: + this.pending.clear(); + this.decoder = this.newDecoder(); + this.segment = this.mp4.segmentAt(var1); + this.samples = this.mp4.readSegment(this.segment); + this.sampleIndex = 0; + this.ended = (boolean)(((0)) != 0); + return; + case -1444639272: + var4 = (anw)var3.next(); + this.free.add(var4.picture()); + var5 = -982363647; + break; + case -982363647: + if (var3.hasNext()) { + var5 = -1444639272; + } else { + var5 = -2102901555; + } + break; + case 844430928: + default: + this.recycleEmitted(); + var3 = this.pending.iterator(); + var5 = -982363647; + } + } + } + + @Override + public Picture next() throws IOException { + this.recycleEmitted(); + + while (this.pending.size() <= (-1934720091 | 1934720095) + (-1934720091 & 1934720095) && !this.ended) { + this.decodeOne(); + } + + if (this.pending.isEmpty()) { + return null; + } + + int var1 = 0; + + for (int var2 = 1; var2 < this.pending.size(); var2++) { + if (this.pending.get(var2).ptsMs() < this.pending.get(var1).ptsMs()) { + var1 = var2; + } + } + + anw var3 = this.pending.remove(var1); + this.emitted = var3.picture(); + this.ptsMs = var3.ptsMs(); + return this.emitted; + } + + @Override + public long ptsMs() { + return this.ptsMs; + } + + private H264Decoder newDecoder() { + H264Decoder var1 = new H264Decoder(); + var1.addSps(this.avcC.getSpsList()); + var1.addPps(this.avcC.getPpsList()); + return var1; + } + + private void recycleEmitted() { + int var1 = 582241277; + + while (true) { + switch (var1) { + case 20362569: + return; + case 582241277: + default: + if (this.emitted != null) { + var1 = 1374526690; + } else { + var1 = 20362569; + } + break; + case 1374526690: + this.free.add(this.emitted); + this.emitted = null; + var1 = 20362569; + } + } + } + + private void decodeOne() throws IOException { + anq var1 = null; + ByteBuffer var2 = null; + Picture var3 = null; + Frame var4 = null; + int var5 = 841028925; + + while (true) { + switch (var5) { + case -2001436902: + var4 = this.decoder.decodeFrame(var2, var3.getData()); + if (var4 == null) { + var5 = -43337244; + } else { + var5 = 2060633794; + } + break; + case -1197885158: + var3 = Picture.create(this.width, this.height, ColorSpace.YUV420J); + var5 = -2001436902; + break; + case -1174045514: + if (this.segment + (-844308521 ^ 844308522) + ((-844308521 & 844308522) << 1) >= this.mp4.segmentCount()) { + var5 = 629875351; + } else { + var5 = 525868193; + } + break; + case -43337244: + this.free.add(var3); + return; + case 525868193: + this.segment += 1; + this.samples = this.mp4.readSegment(this.segment); + this.sampleIndex = 0; + var5 = 841028925; + break; + case 629875351: + this.ended = (boolean)(((1)) != 0); + return; + case 841028925: + default: + if (this.sampleIndex >= this.samples.size()) { + var5 = -1174045514; + } else { + var5 = 1316403889; + } + break; + case 1316403889: + List var10000 = this.samples; + int var10001 = this.sampleIndex; + this.sampleIndex += 1; + var1 = (anq)var10000.get(var10001); + this.packet = this.mp4.read(var1, this.packet); + var2 = H264Utils.decodeMOVPacket(this.packet.duplicate(), this.avcC); + var3 = this.free.poll(); + if (var3 == null) { + var5 = -1197885158; + } else { + var5 = -2001436902; + } + break; + case 2060633794: + this.pending.add(new anw(var4, var1.ptsMs())); + return; + } + } + } +} diff --git a/src/main/java/defpackage/any.java b/src/main/java/defpackage/any.java new file mode 100644 index 0000000..b6101cf --- /dev/null +++ b/src/main/java/defpackage/any.java @@ -0,0 +1,66 @@ +package defpackage; + +import java.io.IOException; +import org.jcodec.api.FrameGrab; +import org.jcodec.api.JCodecException; +import org.jcodec.api.PictureWithMetadata; +import org.jcodec.common.model.Picture; + +public final class any implements anz { + private static final double SECONDS_PER_MILLI = 0.001; + private static final long MILLIS_PER_SECOND = 1000L; + private static final String NO_VIDEO = "no playable video track"; + private final FrameGrab grab; + private long ptsMs; + + any(ant var1) throws IOException { + try { + this.grab = FrameGrab.createFrameGrab(var1); + } catch (JCodecException var3) { + throw new IOException(var3); + } + + if (this.grab.getVideoTrack() == null) { + throw new IOException("no playable video track"); + } + } + + @Override + public void seek(long var1) throws IOException { + try { + this.grab.seekToSecondSloppy(var1 * 0.001); + } catch (JCodecException var4) { + throw new IOException(var4); + } + } + + @Override + public Picture next() throws IOException { + PictureWithMetadata var1 = null; + int var2 = -1942275003; + + while (true) { + switch (var2) { + case -1942275003: + default: + var1 = this.grab.getNativeFrameWithMetadata(); + if (var1 == null) { + var2 = 686083032; + } else { + var2 = -876645976; + } + break; + case -876645976: + this.ptsMs = Math.round(var1.getTimestamp() * 1000.0); + return var1.getPicture(); + case 686083032: + return null; + } + } + } + + @Override + public long ptsMs() { + return this.ptsMs; + } +} diff --git a/src/main/java/defpackage/anz.java b/src/main/java/defpackage/anz.java new file mode 100644 index 0000000..483367d --- /dev/null +++ b/src/main/java/defpackage/anz.java @@ -0,0 +1,20 @@ +package defpackage; + +import java.io.IOException; +import org.jcodec.common.model.Picture; + +interface anz { + void seek(long var1) throws IOException; + + Picture next() throws IOException; + + long ptsMs(); + + static anz progressive(ant var0) throws IOException { + return new any(var0); + } + + static anz dash(ant var0) throws IOException { + return new anx(var0); + } +} diff --git a/src/main/java/defpackage/ao.java b/src/main/java/defpackage/ao.java new file mode 100644 index 0000000..d61495c --- /dev/null +++ b/src/main/java/defpackage/ao.java @@ -0,0 +1,335 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.ArrayList; + +public class ao { + private final ArrayList poseStack = new ArrayList<>(); + + private void addPose(int var1, ax var2) { + var2.index = var1; + this.poseStack.add(var2); + } + + @ab + public void moveX(int var1, int var2, float var3) { + int var4 = 0; + int var5 = -725102927; + + while (true) { + switch (var5) { + case -725102927: + default: + var4 = var1; + var5 = 100202001; + break; + case 100202001: + if (var4 <= var2) { + var5 = 168806731; + } else { + var5 = 1871310237; + } + break; + case 168806731: + this.addPose(var4, new ap(var3)); + var4++; + var5 = 100202001; + break; + case 1871310237: + return; + } + } + } + + @ab + public void moveY(int var1, int var2, float var3) { + int var4 = 0; + int var5 = 1271217469; + + while (true) { + switch (var5) { + case -782109401: + if (var4 <= var2) { + var5 = -117634557; + } else { + var5 = 1946144655; + } + break; + case -117634557: + this.addPose(var4, new aq(var3)); + var4++; + var5 = -782109401; + break; + case 1271217469: + default: + var4 = var1; + var5 = -782109401; + break; + case 1946144655: + return; + } + } + } + + @ab + public void moveZ(int var1, int var2, float var3) { + int var4 = 0; + int var5 = 524951716; + + while (true) { + switch (var5) { + case -513666841: + if (var4 <= var2) { + var5 = 234711038; + } else { + var5 = 477983198; + } + break; + case 234711038: + this.addPose(var4, new ar(var3)); + var4++; + var5 = -513666841; + break; + case 477983198: + return; + case 524951716: + default: + var4 = var1; + var5 = -513666841; + } + } + } + + @ab + public void rotateX(int var1, int var2, float var3) { + int var4 = 0; + int var5 = -1569146263; + + while (true) { + switch (var5) { + case -1569146263: + default: + var4 = var1; + var5 = 416948621; + break; + case -1208487777: + this.addPose(var4, new as(var3, 0.0F, 0.0F, 0.0F)); + var4++; + var5 = 416948621; + break; + case -822892531: + return; + case 416948621: + if (var4 <= var2) { + var5 = -1208487777; + } else { + var5 = -822892531; + } + } + } + } + + @ab + public void rotateY(int var1, int var2, float var3) { + int var4 = 0; + int var5 = -1870804393; + + while (true) { + switch (var5) { + case -1870804393: + default: + var4 = var1; + var5 = -587770040; + break; + case -587770040: + if (var4 <= var2) { + var5 = 278168193; + } else { + var5 = -143952030; + } + break; + case -143952030: + return; + case 278168193: + this.addPose(var4, new at(var3, 0.0F, 0.0F, 0.0F)); + var4++; + var5 = -587770040; + } + } + } + + @ab + public void rotateZ(int var1, int var2, float var3) { + int var4 = 0; + int var5 = -1253874284; + + while (true) { + switch (var5) { + case -1253874284: + default: + var4 = var1; + var5 = -681778650; + break; + case -681778650: + if (var4 <= var2) { + var5 = -443772736; + } else { + var5 = 281878308; + } + break; + case -443772736: + this.addPose(var4, new au(var3, 0.0F, 0.0F, 0.0F)); + var4++; + var5 = -681778650; + break; + case 281878308: + return; + } + } + } + + @ab + public void rotateX(int var1, int var2, float var3, float var4, float var5, float var6) { + int var7 = 0; + int var8 = 804489329; + + while (true) { + switch (var8) { + case -1965968416: + return; + case -595734885: + if (var7 <= var2) { + var8 = -59366088; + } else { + var8 = -1965968416; + } + break; + case -59366088: + this.addPose(var7, new as(var3, var4, var5, var6)); + var7++; + var8 = -595734885; + break; + case 804489329: + default: + var7 = var1; + var8 = -595734885; + } + } + } + + @ab + public void rotateY(int var1, int var2, float var3, float var4, float var5, float var6) { + int var7 = 0; + int var8 = -915344102; + + while (true) { + switch (var8) { + case -915344102: + default: + var7 = var1; + var8 = 380378753; + break; + case -254102341: + this.addPose(var7, new at(var3, var4, var5, var6)); + var7++; + var8 = 380378753; + break; + case 377882996: + return; + case 380378753: + if (var7 <= var2) { + var8 = -254102341; + } else { + var8 = 377882996; + } + } + } + } + + @ab + public void rotateZ(int var1, int var2, float var3, float var4, float var5, float var6) { + int var7 = 0; + int var8 = 1183812390; + + while (true) { + switch (var8) { + case 10271055: + this.addPose(var7, new au(var3, var4, var5, var6)); + var7++; + var8 = 1931471591; + break; + case 579004229: + return; + case 1183812390: + default: + var7 = var1; + var8 = 1931471591; + break; + case 1931471591: + if (var7 <= var2) { + var8 = 10271055; + } else { + var8 = 579004229; + } + } + } + } + + @ab + public void scale(int var1, int var2, float var3, float var4, float var5) { + int var6 = 0; + int var7 = -2076114809; + + while (true) { + switch (var7) { + case -2076114809: + default: + var6 = var1; + var7 = 2136642276; + break; + case -784229812: + this.addPose(var6, new av(var3, var4, var5)); + var6++; + var7 = 2136642276; + break; + case 583796675: + return; + case 2136642276: + if (var6 <= var2) { + var7 = -784229812; + } else { + var7 = 583796675; + } + } + } + } + + public void applyPoses(int var1, PoseStack var2) { + this.poseStack.reversed().forEach(var2x -> { + int var3 = 623628057; + + while (true) { + switch (var3) { + case -428498830: + var2x.applyPose(var2); + var3 = 778828021; + break; + case 623628057: + default: + if (var2x.index == var1) { + var3 = -428498830; + } else { + var3 = 778828021; + } + break; + case 778828021: + return; + } + } + }); + } + + public void clear() { + this.poseStack.clear(); + } +} diff --git a/src/main/java/defpackage/aoa.java b/src/main/java/defpackage/aoa.java new file mode 100644 index 0000000..ec9f570 --- /dev/null +++ b/src/main/java/defpackage/aoa.java @@ -0,0 +1,4 @@ +package defpackage; + +record aoa(int generation, long mediaMs, long frame, long wallNanos, boolean audio) { +} diff --git a/src/main/java/defpackage/aob.java b/src/main/java/defpackage/aob.java new file mode 100644 index 0000000..a4bcbd9 --- /dev/null +++ b/src/main/java/defpackage/aob.java @@ -0,0 +1,13 @@ +package defpackage; + +import com.mojang.blaze3d.platform.NativeImage; + +final class aob { + final NativeImage image; + long ptsMs; + int generation; + + aob(NativeImage var1) { + this.image = var1; + } +} diff --git a/src/main/java/defpackage/aoc.java b/src/main/java/defpackage/aoc.java new file mode 100644 index 0000000..d685199 --- /dev/null +++ b/src/main/java/defpackage/aoc.java @@ -0,0 +1,8 @@ +package defpackage; + +public enum aoc { + LOADING, + PLAYING, + ENDED, + FAILED; +} diff --git a/src/main/java/defpackage/aod.java b/src/main/java/defpackage/aod.java new file mode 100644 index 0000000..3298d71 --- /dev/null +++ b/src/main/java/defpackage/aod.java @@ -0,0 +1,1378 @@ +package defpackage; + +import com.mojang.blaze3d.platform.NativeImage; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.SourceDataLine; +import javax.sound.sampled.DataLine.Info; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.resources.Identifier; +import net.sourceforge.jaad.aac.Decoder; +import net.sourceforge.jaad.aac.SampleBuffer; +import org.jcodec.common.model.ColorSpace; +import org.jcodec.common.model.Picture; +import org.jcodec.common.model.Rect; +import org.jcodec.scale.ColorUtil; +import org.jcodec.scale.Transform; + +public final class aod { + private static final String TEXTURE_PREFIX = "watch_"; + private static final String VIDEO_THREAD = "EvoWatchVideo-"; + private static final String AUDIO_THREAD = "EvoWatchAudio-"; + private static final String REAPER_THREAD = "EvoWatchReaper-"; + private static final String RESOLVE_FAILURE = "watch resolve failed for {}"; + private static final String VIDEO_FAILURE = "watch video decode failed for {}"; + private static final String AUDIO_FAILURE = "watch audio failed for {}"; + private static final String AUDIO_FRAME_FAILURE = "watch audio frame skipped for {}"; + private static final String DECODER_STUCK = "watch decoder for {} did not stop, frame pool leaked"; + private static final int POOL_SIZE = 4; + private static final long MILLIS_PER_SECOND = 1000L; + private static final long NANOS_PER_MILLI = 1000000L; + private static final long LATE_FRAME_MS = 60L; + private static final long EARLY_FRAME_MS = 8L; + private static final long POOL_WAIT_MS = 20L; + private static final long IDLE_WAIT_MS = 15L; + private static final long JOIN_MS = 2000L; + private static final int SAMPLE_BITS = 16; + private static final int BYTES_PER_SAMPLE = 2; + private static final int LINE_BUFFER_MS = 250; + private static final int BYTE_MASK = 255; + private static final int BYTE_SHIFT = 8; + private static final float UNITY_GAIN = 1.0F; + private static final AtomicInteger SERIAL = new AtomicInteger(); + private final String videoId; + private final int serial = SERIAL.incrementAndGet(); + private final Identifier textureId = bz.id("watch_" + this.serial); + private final AtomicInteger generation = new AtomicInteger(); + private final ArrayBlockingQueue free = new ArrayBlockingQueue<>(4); + private final ArrayBlockingQueue ready = new ArrayBlockingQueue<>(4); + private final Object signal = new Object(); + private final List slots = new CopyOnWriteArrayList<>(); + private volatile aoc status = aoc.LOADING; + private volatile String failure; + private volatile aoj video; + private volatile anv videoSource; + private volatile anv audioSource; + private volatile boolean running = (boolean)(((1)) != 0); + private volatile boolean paused; + private volatile long seekTargetMs; + private volatile float gain = 1.0F; + private volatile aoa anchor; + private volatile SourceDataLine line; + private volatile int sampleRate; + private volatile boolean videoEnded; + private volatile boolean audioEnded; + private volatile boolean hasAudio; + private volatile int frameWidth; + private volatile int frameHeight; + private Thread videoThread; + private Thread audioThread; + private NativeImage display; + private DynamicTexture texture; + private boolean hasFrame; + private boolean closed; + + public aod(String var1, long var2, boolean var4) { + this.videoId = var1; + this.seekTargetMs = Math.max((5925869321369282789L ^ -5925869321369282789L) + ((5925869321369282789L & -5925869321369282789L) << 1), var2); + this.paused = var4; + } + + public void start() { + aok.resolve(this.videoId) + .whenComplete( + (var1, var2) -> { + if (var2 != null) { + this.fail( + "watch resolve failed for {}", + rootMessage(var2), + var2 + ); + } else if (this.running) { + this.video = var1; + this.videoSource = new anv(var1.videoUrl()); + this.audioSource = var1.progressive() ? this.videoSource : new anv(var1.audioUrl()); + this.videoThread = daemon(this::runVideo, "EvoWatchVideo-" + this.serial); + this.audioThread = daemon(this::runAudio, "EvoWatchAudio-" + this.serial); + } + } + ); + } + + public String videoId() { + return this.videoId; + } + + public String title() { + aoj var1 = null; + String var3 = null; + int var2 = 1930177096; + + while (true) { + switch (var2) { + case -882499708: + var3 = null; + var2 = 1119471736; + break; + case -328335424: + var3 = var1.title(); + var2 = 1119471736; + break; + case 1119471736: + return var3; + case 1930177096: + default: + var1 = this.video; + if (var1 == null) { + var2 = -882499708; + } else { + var2 = -328335424; + } + } + } + } + + public long durationMs() { + aoj var1 = null; + long var3 = (-3465570995287832169L | 3465570995287832169L) + (-3465570995287832169L & 3465570995287832169L); + int var2 = 980559435; + + while (true) { + switch (var2) { + case -2077771018: + var3 = var1.durationMs(); + var2 = 1499397695; + break; + case 515342224: + var3 = (-3837591716632270436L | 3837591716632270436L) + (-3837591716632270436L & 3837591716632270436L); + var2 = 1499397695; + break; + case 980559435: + default: + var1 = this.video; + if (var1 == null) { + var2 = 515342224; + } else { + var2 = -2077771018; + } + break; + case 1499397695: + return var3; + } + } + } + + public aoc status() { + return this.status; + } + + public String failure() { + return this.failure; + } + + public boolean isPaused() { + return this.paused; + } + + public boolean hasFrame() { + return this.hasFrame; + } + + public Identifier textureId() { + return this.textureId; + } + + public int frameWidth() { + return this.frameWidth; + } + + public int frameHeight() { + return this.frameHeight; + } + + public void setGain(float var1) { + this.gain = Math.clamp(var1, 0.0F, 1.0F); + } + + public long positionMs() { + aoa var1 = null; + SourceDataLine var2 = null; + long var3 = (6188183043137750143L | -6188183043137750143L) + (6188183043137750143L & -6188183043137750143L); + int var5 = -2048136986; + + while (true) { + switch (var5) { + case -2048136986: + default: + var1 = this.anchor; + if (var1 != null) { + var5 = 1172244823; + } else { + var5 = -192661999; + } + break; + case -1945001601: + if (var2 != null) { + var5 = -849433870; + } else { + var5 = -633070380; + } + break; + case -849433870: + if (this.sampleRate > 0) { + var5 = -411790632; + } else { + var5 = -633070380; + } + break; + case -633070380: + if (this.paused) { + var5 = 1677629783; + } else { + var5 = 196173470; + } + break; + case -411790632: + var3 = Math.max( + (8947316226511673836L | -8947316226511673836L) + (8947316226511673836L & -8947316226511673836L), var2.getLongFramePosition() - var1.frame() + ); + return var1.mediaMs() + + var3 * ((-3968573025936777621L | 3968573025936778621L) + (-3968573025936777621L & 3968573025936778621L)) / this.sampleRate; + case -192661999: + return this.seekTargetMs; + case 196173470: + return var1.mediaMs() + + (System.nanoTime() - var1.wallNanos()) / ((-8632156204395909199L | 8632156204396909199L) + (-8632156204395909199L & 8632156204396909199L)); + case 1172244823: + if (var1.generation() != this.generation.get()) { + var5 = -192661999; + } else { + var5 = 1455614000; + } + break; + case 1455614000: + var2 = this.line; + if (var1.audio()) { + var5 = -1945001601; + } else { + var5 = -633070380; + } + break; + case 1677629783: + return var1.mediaMs(); + } + } + } + + public void seek(long var1) { + SourceDataLine var3 = null; + int var4 = -1009208034; + + while (true) { + switch (var4) { + case -1009208034: + default: + this.seekTargetMs = Math.max((-7485496828872182385L ^ 7485496828872182385L) + ((-7485496828872182385L & 7485496828872182385L) << 1), var1); + this.anchor = null; + this.videoEnded = (boolean)(((0)) != 0); + this.audioEnded = (boolean)(((0)) != 0); + if (this.status == aoc.ENDED) { + var4 = 1151701130; + } else { + var4 = 1913897812; + } + break; + case -226363033: + this.wake(); + return; + case 1151701130: + this.status = aoc.PLAYING; + var4 = 1913897812; + break; + case 1913897812: + this.generation.incrementAndGet(); + var3 = this.line; + if (var3 != null) { + var4 = 1992949470; + } else { + var4 = -226363033; + } + break; + case 1992949470: + var3.flush(); + var4 = -226363033; + } + } + } + + public void setPaused(boolean var1) { + long var2 = (2398624077890781551L | -2398624077890781551L) + (2398624077890781551L & -2398624077890781551L); + SourceDataLine var4 = null; + aoa var5 = null; + int var6 = -1461985418; + + while (true) { + switch (var6) { + case -1914059453: + if (var4 != null) { + var6 = -203083125; + } else { + var6 = 1499214018; + } + break; + case -1608669614: + if (!var5.audio()) { + var6 = 236721753; + } else { + var6 = -1914059453; + } + break; + case -1598130700: + if (var1) { + var6 = -832116401; + } else { + var6 = 1664883649; + } + break; + case -1536254337: + if (var5.audio()) { + var6 = -1598130700; + } else { + var6 = 1499214018; + } + break; + case -1461985418: + default: + if (this.paused == var1) { + var6 = 471459757; + } else { + var6 = 1290510745; + } + break; + case -832116401: + var4.stop(); + var6 = 1499214018; + break; + case -203083125: + if (var5 != null) { + var6 = -1536254337; + } else { + var6 = 1499214018; + } + break; + case 236721753: + this.anchor = new aoa( + var5.generation(), + var2, + (1647966063517872319L | -1647966063517872319L) + (1647966063517872319L & -1647966063517872319L), + System.nanoTime(), + (boolean)((((661120138 | -661120138) + (661120138 & -661120138)) + ) != 0)); + var6 = -1914059453; + break; + case 471459757: + return; + case 1290510745: + var2 = this.positionMs(); + this.paused = var1; + var4 = this.line; + var5 = this.anchor; + if (var5 != null) { + var6 = -1608669614; + } else { + var6 = -1914059453; + } + break; + case 1499214018: + this.wake(); + return; + case 1664883649: + var4.start(); + var6 = 1499214018; + } + } + } + + public void sync(long var1, boolean var3, long var4) { + int var6 = 355962576; + + while (true) { + switch (var6) { + case -2002493382: + return; + case -1985243038: + this.seek(var1); + var6 = -1694953781; + break; + case -1694953781: + return; + case 76743947: + if (Math.abs(this.positionMs() - var1) > var4) { + var6 = -1985243038; + } else { + var6 = -1694953781; + } + break; + case 355962576: + default: + this.setPaused(var3); + if (this.status == aoc.FAILED) { + var6 = -2002493382; + } else { + var6 = 76743947; + } + } + } + } + + public void update() { + int var1 = 0; + long var2 = (-3969580860454588637L | 3969580860454588637L) + (-3969580860454588637L & 3969580860454588637L); + aob var4 = null; + aob var5 = null; + int var6 = -752572579; + + while (true) { + switch (var6) { + case -2126754425: + if (this.status == aoc.PLAYING) { + var6 = -981053301; + } else { + var6 = 1127402712; + } + break; + case -1901376885: + var4 = var5; + var6 = 1485889846; + break; + case -1864099931: + var1 = this.generation.get(); + var2 = this.positionMs(); + var4 = null; + var6 = 1485889846; + break; + case -1663137892: + return; + case -1407030507: + var6 = -375101689; + break; + case -1315074128: + return; + case -1271253763: + return; + case -1098767342: + if (var4 != null) { + var6 = -1407030507; + } else { + var6 = -960248404; + } + break; + case -981053301: + this.status = aoc.ENDED; + var6 = 1127402712; + break; + case -960248404: + this.ready.poll(); + if (var4 != null) { + var6 = 609539202; + } else { + var6 = -1901376885; + } + break; + case -752572579: + default: + if (this.closed) { + var6 = -1663137892; + } else { + var6 = -535362722; + } + break; + case -721448017: + return; + case -535362722: + if (this.videoEnded) { + var6 = 917437613; + } else { + var6 = 1127402712; + } + break; + case -375101689: + if (var4 == null) { + var6 = -721448017; + } else { + var6 = 2044556909; + } + break; + case 72077994: + if (this.texture == null) { + var6 = 1933863246; + } else { + var6 = -1864099931; + } + break; + case 560600058: + if (var5.generation != var1) { + var6 = 1032830805; + } else { + var6 = 2108152569; + } + break; + case 609539202: + this.free.offer(var4); + var6 = -1901376885; + break; + case 917437613: + if (this.ready.isEmpty()) { + var6 = 1892961121; + } else { + var6 = 1127402712; + } + break; + case 1032830805: + this.ready.poll(); + this.free.offer(var5); + var6 = 1485889846; + break; + case 1127402712: + if (this.frameWidth > 0) { + var6 = 1867881247; + } else { + var6 = -1315074128; + } + break; + case 1485889846: + if ((var5 = this.ready.peek()) != null) { + var6 = 560600058; + } else { + var6 = -375101689; + } + break; + case 1692696971: + this.status = aoc.PLAYING; + var6 = -1271253763; + break; + case 1788744897: + if (this.audioEnded) { + var6 = -2126754425; + } else { + var6 = 1127402712; + } + break; + case 1867881247: + if (this.frameHeight <= 0) { + var6 = -1315074128; + } else { + var6 = 72077994; + } + break; + case 1892961121: + if (this.hasAudio) { + var6 = 1788744897; + } else { + var6 = -2126754425; + } + break; + case 1933863246: + this.display = new NativeImage(this.frameWidth, this.frameHeight, (boolean)((((1783312687 ^ -1783312687) + ((1783312687 & -1783312687) << 1))) != 0)); + this.texture = new aux(() -> "watch_" + this.serial, this.display); + Minecraft.getInstance().getTextureManager().register(this.textureId, this.texture); + var6 = -1864099931; + break; + case 2001248760: + if (!this.hasFrame) { + var6 = -1098767342; + } else { + var6 = -375101689; + } + break; + case 2044556909: + this.display.copyFrom(var4.image); + this.texture.upload(); + this.free.offer(var4); + this.hasFrame = (boolean)(((1)) != 0); + if (this.status == aoc.LOADING) { + var6 = 1692696971; + } else { + var6 = -1271253763; + } + break; + case 2108152569: + if (var5.ptsMs > var2 + (-3313457125592816791L ^ 3313457125592816799L) + ((-3313457125592816791L & 3313457125592816799L) << 1)) { + var6 = 2001248760; + } else { + var6 = -960248404; + } + } + } + } + + public void close() { + anv var1 = null; + anv var2 = null; + SourceDataLine var3 = null; + Thread var4 = null; + Thread var5 = null; + int var6 = 0; + int var8 = 0; + int var7 = -1411372672; + + while (true) { + switch (var7) { + case -1779714249: + var4.interrupt(); + var7 = -1726867405; + break; + case -1740562571: + var2.close(); + var7 = 194648971; + break; + case -1726867405: + if (var5 != null) { + var7 = -1571841568; + } else { + var7 = 578793991; + } + break; + case -1662654531: + var8 = 1; + var7 = 1864995576; + break; + case -1571841568: + var5.interrupt(); + var7 = 578793991; + break; + case -1411372672: + default: + if (this.closed) { + var7 = 721294398; + } else { + var7 = 1491442795; + } + break; + case -996860562: + var8 = 0; + var7 = 1864995576; + break; + case -263116799: + var3.stop(); + var3.flush(); + var7 = 859523974; + break; + case 194648971: + var3 = this.line; + if (var3 != null) { + var7 = -263116799; + } else { + var7 = 859523974; + } + break; + case 578793991: + if (this.texture != null) { + var7 = -1662654531; + } else { + var7 = -996860562; + } + break; + case 721294398: + return; + case 859523974: + var4 = this.videoThread; + var5 = this.audioThread; + if (var4 != null) { + var7 = -1779714249; + } else { + var7 = -1726867405; + } + break; + case 902932460: + if (var2 != var1) { + var7 = -1740562571; + } else { + var7 = 194648971; + } + break; + case 1366325954: + var1.close(); + var7 = 1373380486; + break; + case 1373380486: + if (var2 != null) { + var7 = 902932460; + } else { + var7 = 194648971; + } + break; + case 1491442795: + this.closed = (boolean)(((1)) != 0); + this.running = (boolean)(((0)) != 0); + this.generation.incrementAndGet(); + this.wake(); + var1 = this.videoSource; + var2 = this.audioSource; + if (var1 != null) { + var7 = 1366325954; + } else { + var7 = 1373380486; + } + break; + case 1864995576: + var6 = var8; + this.texture = null; + this.display = null; + daemon(() -> this.reap(var4, var5, var3, var6), "EvoWatchReaper-" + this.serial); + return; + } + } + } + + private void reap(Thread var1, Thread var2, SourceDataLine var3, boolean var4) { + int var5 = 0; + Minecraft var6 = null; + int var8 = 0; + int var7 = 1643149100; + + while (true) { + switch (var7) { + case -1591431770: + if (var1 != null) { + var7 = -1387704189; + } else { + var7 = 170795492; + } + break; + case -1522287563: + var6 = Minecraft.getInstance(); + var6.execute(() -> { + Iterator var4x = null; + Object var5x = null; + int var6x = -633768204; + + while (true) { + switch (var6x) { + case -1943492598: + this.slots.clear(); + return; + case -641230427: + var6.getTextureManager().release(this.textureId); + var6x = 1840619191; + break; + case -633768204: + default: + if (var4) { + var6x = -641230427; + } else { + var6x = 1840619191; + } + break; + case -339008966: + this.ready.clear(); + this.free.clear(); + var4x = this.slots.iterator(); + var6x = 1263308280; + break; + case 194298177: + var5x = (aob)var4x.next(); + ((aob)var5x).image.close(); + var6x = 1263308280; + break; + case 578258790: + return; + case 1263308280: + if (var4x.hasNext()) { + var6x = 194298177; + } else { + var6x = -1943492598; + } + break; + case 1840619191: + if (!var5) { + var6x = 578258790; + } else { + var6x = -339008966; + } + } + } + }); + return; + case -1427956397: + var5 = var8; + if (var5 == 0) { + var7 = 1082650333; + } else { + var7 = -1522287563; + } + break; + case -1387704189: + if (!var1.isAlive()) { + var7 = 170795492; + } else { + var7 = 619095419; + } + break; + case 170795492: + var8 = 1; + var7 = -1427956397; + break; + case 619095419: + var8 = 0; + var7 = -1427956397; + break; + case 635060958: + var3.close(); + var7 = -1591431770; + break; + case 1082650333: + id.warn( + Cif.MEDIA, + "watch decoder for {} did not stop, frame pool leaked", + this.videoId + ); + var7 = -1522287563; + break; + case 1643149100: + default: + join(var1); + join(var2); + if (var3 != null) { + var7 = 635060958; + } else { + var7 = -1591431770; + } + } + } + } + + private void runVideo() { + ant var1 = new ant(this.videoSource); + + try { + anz var2 = this.video.progressive() ? anz.progressive(var1) : anz.dash(var1); + Picture var3 = null; + Transform var4 = null; + int var5 = -1; + int var6 = 1; + + while (this.running) { + int var7 = this.generation.get(); + if (var7 != var5) { + var5 = var7; + var2.seek(this.seekTargetMs); + this.videoEnded = (boolean)(((0)) != 0); + var6 = 1; + } + + if (!this.videoEnded && (!this.paused || var6 != 0)) { + Picture var8 = var2.next(); + if (var8 == null) { + this.videoEnded = (boolean)(((1)) != 0); + } else { + long var9 = var2.ptsMs(); + if (( + var6 != 0 + || var9 + (6613228650515278989L ^ -6613228650515278929L) + ((6613228650515278989L & -6613228650515278929L) << 1) + >= this.positionMs() + ) + && ( + var6 == 0 + || var9 + (9089449731720463528L | -9089449731720463468L) + (9089449731720463528L & -9089449731720463468L) >= this.seekTargetMs + )) { + if (var3 == null) { + var3 = Picture.create(var8.getWidth(), var8.getHeight(), ColorSpace.RGB); + var4 = ColorUtil.getTransform(var8.getColor(), ColorSpace.RGB); + this.allocatePool(var8); + } + + aob var11 = null; + + while (this.running && this.generation.get() == var5 && var11 == null) { + var11 = this.free + .poll((4247939024060348306L | -4247939024060348286L) + (4247939024060348306L & -4247939024060348286L), TimeUnit.MILLISECONDS); + } + + if (var11 != null) { + var4.transform(var8, var3); + Rect var12 = var8.getCrop(); + int var13 = var12 == null ? 0: var12.getX(); + int var14 = var12 == null ? 0: var12.getY(); + auy.fill( + var11.image, + var3.getPlaneData((505770354 ^ -505770354) + ((505770354 & -505770354) << 1)), + var8.getWidth(), + var13, + var14, + this.frameWidth, + this.frameHeight + ); + var11.ptsMs = var9; + var11.generation = var5; + if (!this.ready.offer(var11)) { + this.free.offer(var11); + } + + var6 = 0; + } + } + } + } else { + this.idle(); + } + } + } catch (InterruptedException var19) { + Thread.currentThread().interrupt(); + } catch (Throwable var20) { + if (this.running) { + this.fail( + "watch video decode failed for {}", + rootMessage(var20), + var20 + ); + } + } finally { + var1.close(); + } + } + + private void allocatePool(Picture var1) { + int var2 = 0; + Object var3 = null; + int var4 = 775671031; + + while (true) { + switch (var4) { + case -1891044429: + var3 = new aob(new NativeImage(this.frameWidth, this.frameHeight, (boolean)((((-413256955 ^ 413256955) + ((-413256955 & 413256955) << 1))) != 0))); + this.slots.add((aob)var3); + this.free.offer((aob)var3); + var2++; + var4 = -27662252; + break; + case -27662252: + if (var2 < (83033972 ^ -83033968) + ((83033972 & -83033968) << 1)) { + var4 = -1891044429; + } else { + var4 = 303871564; + } + break; + case 303871564: + return; + case 775671031: + default: + this.frameWidth = var1.getCroppedWidth(); + this.frameHeight = var1.getCroppedHeight(); + var2 = 0; + var4 = -27662252; + } + } + } + + private void runAudio() { + ant var1 = new ant(this.audioSource); + SourceDataLine var2 = null; + + try { + try { + ano var3 = this.video.progressive() ? ano.progressive(var1) : ano.dash(var1); + if (var3 == null) { + this.runWallClock(); + return; + } + + Decoder var4 = new Decoder(var3.decoderConfig()); + SampleBuffer var5 = new SampleBuffer(); + var5.setBigEndian((boolean)((((911190697 ^ -911190697) + ((911190697 & -911190697) << 1))) != 0)); + this.hasAudio = (boolean)(((1)) != 0); + int var6 = -1; + int var7 = 1; + + while (this.running) { + int var8 = this.generation.get(); + if (var8 != var6) { + var6 = var8; + var3.seek(this.seekTargetMs); + this.audioEnded = (boolean)(((0)) != 0); + var7 = 1; + if (var2 != null) { + var2.flush(); + } + } + + if (!this.audioEnded && (!this.paused || var7 != 0)) { + byte[] var9 = var3.next(); + if (var9 == null) { + this.audioEnded = (boolean)(((1)) != 0); + } else { + long var10 = var3.ptsMs(); + if (var7 == 0 + || var10 + (-7014539346689104363L | 7014539346689104423L) + (-7014539346689104363L & 7014539346689104423L) >= this.seekTargetMs) { + try { + var4.decodeFrame(var9, var5); + } catch (Exception var20) { + id.debug( + Cif.MEDIA, + "watch audio frame skipped for {}", + this.videoId + ); + continue; + } + + if (var2 == null) { + var2 = this.openLine(var5); + if (var2 == null) { + this.hasAudio = (boolean)(((0)) != 0); + this.runWallClock(); + return; + } + } + + if (var7 != 0) { + this.anchor = new aoa( + var6, + var10, + var2.getLongFramePosition(), + (5245124628838790411L | -5245124628838790411L) + (5245124628838790411L & -5245124628838790411L), + (boolean)((((387152273 | -387152272) + (387152273 & -387152272)) + ) != 0)); + if (!this.paused) { + var2.start(); + } + + var7 = 0; + } + + this.applyGain(var5.getData()); + this.write(var2, var5.getData(), var6); + } + } + } else { + this.idle(); + } + } + + return; + } catch (InterruptedException var21) { + Thread.currentThread().interrupt(); + } catch (Throwable var22) { + if (this.running) { + id.warn( + Cif.MEDIA, + "watch audio failed for {}", + this.videoId, + var22 + ); + this.hasAudio = (boolean)(((0)) != 0); + + try { + this.runWallClock(); + } catch (InterruptedException var19) { + Thread.currentThread().interrupt(); + } + + return; + } + } + } finally { + var1.close(); + } + } + + private SourceDataLine openLine(SampleBuffer var1) { + try { + this.sampleRate = var1.getSampleRate(); + int var2 = var1.getChannels(); + AudioFormat var3 = new AudioFormat( + this.sampleRate, + 16, + var2, + (boolean)(((1)) != 0), + (boolean)((((197806775 ^ -197806775) + ((197806775 & -197806775) << 1)) + ) != 0)); + SourceDataLine var4 = (SourceDataLine)AudioSystem.getLine(new Info(SourceDataLine.class, var3)); + int var5 = this.sampleRate + * var2 + * 0; + var4.open(var3, var5); + this.line = var4; + return var4; + } catch (Exception var6) { + id.warn(Cif.MEDIA, "watch audio failed for {}", this.videoId, var6); + return null; + } + } + + private void runWallClock() throws InterruptedException { + int var1 = 0; + int var2 = 0; + int var3 = -1440282229; + + while (true) { + switch (var3) { + case -1629105286: + this.idle(); + var3 = -144622501; + break; + case -1440282229: + default: + var1 = -1; + var3 = -144622501; + break; + case -144622501: + if (this.running) { + var3 = -78861644; + } else { + var3 = 570229110; + } + break; + case -78861644: + var2 = this.generation.get(); + if (var2 != var1) { + var3 = 6253493; + } else { + var3 = -1629105286; + } + break; + case 6253493: + var1 = var2; + this.anchor = new aoa( + var1, + this.seekTargetMs, + (2462414229238202591L | -2462414229238202591L) + (2462414229238202591L & -2462414229238202591L), + System.nanoTime(), + (boolean)((((740950868 | -740950868) + (740950868 & -740950868)) + ) != 0)); + var3 = -1629105286; + break; + case 570229110: + return; + } + } + } + + private void applyGain(byte[] var1) { + float var2 = 0.0F; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 1810032689; + + while (true) { + switch (var6) { + case -1592175680: + return; + case -1471389680: + return; + case -540701304: + var3 = 0; + var6 = 1147473160; + break; + case 480460036: + short var7 = (short)( + var1[var3] & (-179493795 | 179494050) + (-179493795 & 179494050) + | var1[var3 + 1] << (952552855 ^ -952552847) + ((952552855 & -952552847) << 1) + ); + var5 = Math.round(var7 * var2); + var1[var3] = (byte)var5; + var1[var3 + 1] = (byte)( + var5 >> (1484816448 | -1484816440) + (1484816448 & -1484816440) + ); + var3 += 2; + var6 = 1147473160; + break; + case 1147473160: + if (var3 + (-1698612459 | 1698612460) + (-1698612459 & 1698612460) < var1.length) { + var6 = 480460036; + } else { + var6 = -1592175680; + } + break; + case 1810032689: + default: + var2 = this.gain; + if (var2 >= 1.0F) { + var6 = -1471389680; + } else { + var6 = -540701304; + } + } + } + } + + private void write(SourceDataLine var1, byte[] var2, int var3) throws InterruptedException { + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 487937445; + + while (true) { + switch (var7) { + case -1264169874: + var6 = Math.min(var5 - var5 % (2), var2.length - var4); + if (var6 <= 0) { + var7 = 920317829; + } else { + var7 = 1549668451; + } + break; + case -1072432159: + if (this.running) { + var7 = -843267287; + } else { + var7 = -388951056; + } + break; + case -843267287: + if (this.generation.get() == var3) { + var7 = -372130276; + } else { + var7 = -388951056; + } + break; + case -388951056: + return; + case -372130276: + if (this.paused) { + var7 = 1553743448; + } else { + var7 = 1855328423; + } + break; + case 487937445: + default: + var4 = 0; + var7 = 670406460; + break; + case 670406460: + if (var4 < var2.length) { + var7 = -1072432159; + } else { + var7 = -388951056; + } + break; + case 920317829: + this.idle(); + var7 = 670406460; + break; + case 1516046836: + this.idle(); + var7 = 670406460; + break; + case 1549668451: + var4 += var1.write(var2, var4, var6); + var7 = 670406460; + break; + case 1553743448: + this.idle(); + var7 = 670406460; + break; + case 1855328423: + var5 = var1.available(); + if (var5 <= 0) { + var7 = 1516046836; + } else { + var7 = -1264169874; + } + } + } + } + + private void idle() throws InterruptedException { + synchronized (this.signal) { + this.signal.wait((-2153559731047113104L | 2153559731047113119L) + (-2153559731047113104L & 2153559731047113119L)); + } + } + + private void wake() { + synchronized (this.signal) { + this.signal.notifyAll(); + } + } + + private void fail(String var1, String var2, Throwable var3) { + this.failure = var2; + this.status = aoc.FAILED; + id.warn(Cif.MEDIA, var1, this.videoId, var3); + aok.invalidate(this.videoId); + } + + private static String rootMessage(Throwable var0) { + Throwable var1 = null; + String var2 = null; + String var4 = null; + int var3 = 587458511; + + while (true) { + switch (var3) { + case -2038972880: + var4 = var2; + var3 = 1462012311; + break; + case -1915563698: + var2 = var1.getMessage(); + if (var2 != null) { + var3 = -839323581; + } else { + var3 = 2040846282; + } + break; + case -875007707: + var1 = var1.getCause(); + var3 = -712152883; + break; + case -839323581: + if (var2.isBlank()) { + var3 = 2040846282; + } else { + var3 = -2038972880; + } + break; + case -826511951: + if (var1.getCause() != var1) { + var3 = -875007707; + } else { + var3 = -1915563698; + } + break; + case -712152883: + if (var1.getCause() != null) { + var3 = -826511951; + } else { + var3 = -1915563698; + } + break; + case 587458511: + default: + var1 = var0; + var3 = -712152883; + break; + case 1462012311: + return var4; + case 2040846282: + var4 = var1.getClass().getSimpleName(); + var3 = 1462012311; + } + } + } + + private static void join(Thread var0) { + if (var0 != null) { + try { + var0.join((-8205084524883839502L | 8205084524883841502L) + (-8205084524883839502L & 8205084524883841502L)); + } catch (InterruptedException var2) { + Thread.currentThread().interrupt(); + } + } + } + + private static Thread daemon(Runnable var0, String var1) { + Thread var2 = new Thread(var0, var1); + var2.setDaemon((boolean)((((-1589261313 | 1589261314) + (-1589261313 & 1589261314))) != 0)); + var2.start(); + return var2; + } +} diff --git a/src/main/java/defpackage/aoe.java b/src/main/java/defpackage/aoe.java new file mode 100644 index 0000000..ca1427b --- /dev/null +++ b/src/main/java/defpackage/aoe.java @@ -0,0 +1,25 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:aoe.class */ +/* synthetic */ class aoe { + static final /* synthetic */ int[] $SwitchMap$evo$systems$social$watch$WatchPlayer$Status = new int[aoc.values().length]; + + static { + try { + $SwitchMap$evo$systems$social$watch$WatchPlayer$Status[aoc.FAILED.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$social$watch$WatchPlayer$Status[aoc.ENDED.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$social$watch$WatchPlayer$Status[aoc.PLAYING.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$social$watch$WatchPlayer$Status[aoc.LOADING.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + } +} diff --git a/src/main/java/defpackage/aof.java b/src/main/java/defpackage/aof.java new file mode 100644 index 0000000..16a2db7 --- /dev/null +++ b/src/main/java/defpackage/aof.java @@ -0,0 +1,73 @@ +package defpackage; + +import net.minecraft.util.Mth; + +final class aof { + String videoId; + String title; + long positionMs; + long receivedAt; + boolean paused; + boolean live; + long shownAt; + long hiddenAt; + + aof() { + } + + float fade(long var1) { + float var4 = 0.0F; + int var3 = 1086767742; + + while (true) { + switch (var3) { + case -1140723751: + var4 = 1.0F - Mth.clamp((float)(var1 - this.hiddenAt) / 220.0F, 0.0F, 1.0F); + var3 = -1119404410; + break; + case -1119404410: + return var4; + case -438407132: + var4 = Mth.clamp((float)(var1 - this.shownAt) / 220.0F, 0.0F, 1.0F); + var3 = -1119404410; + break; + case 1086767742: + default: + if (this.live) { + var3 = -438407132; + } else { + var3 = -1140723751; + } + } + } + } + + long targetMs(long var1) { + long var4 = (932815608385162290L ^ -932815608385162290L) + ((932815608385162290L & -932815608385162290L) << 1); + int var3 = -103607699; + + while (true) { + switch (var3) { + case -103607699: + default: + if (this.paused) { + var3 = 714796927; + } else { + var3 = 207165340; + } + break; + case 207165340: + var4 = this.positionMs + + Math.max((8640991447327765846L | -8640991447327765846L) + (8640991447327765846L & -8640991447327765846L), var1 - this.receivedAt); + var3 = 769875921; + break; + case 714796927: + var4 = this.positionMs; + var3 = 769875921; + break; + case 769875921: + return var4; + } + } + } +} diff --git a/src/main/java/defpackage/aog.java b/src/main/java/defpackage/aog.java new file mode 100644 index 0000000..843bfe6 --- /dev/null +++ b/src/main/java/defpackage/aog.java @@ -0,0 +1,4 @@ +package defpackage; + +public record aog(String videoId, String title, aod player, float fade, boolean local) { +} diff --git a/src/main/java/defpackage/aoh.java b/src/main/java/defpackage/aoh.java new file mode 100644 index 0000000..b6e7dfb --- /dev/null +++ b/src/main/java/defpackage/aoh.java @@ -0,0 +1,857 @@ +package defpackage; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.Map.Entry; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.util.Mth; + +public final class aoh { + private static final String KEY_VIDEO = "v"; + private static final String KEY_POSITION = "t"; + private static final String KEY_PAUSED = "p"; + private static final String KEY_TITLE = "n"; + private static final String KEY_AGE = "a"; + private static final String SELF_KEY = ""; + private static final int MAX_TITLE = 96; + private static final long MILLIS_PER_SECOND = 1000L; + private static final long FADE_MS = 220L; + private static final long REMOTE_TIMEOUT_MS = 6000L; + private static final long MISSING_GRACE_MS = 1200L; + private static final long DRIFT_TOLERANCE_MS = 1500L; + private static final float MIN_AUDIBLE_GAIN = 0.001F; + private static final String LOADING = "Loading video..."; + private static final String STARTED = "Now playing: "; + private static final String STOPPED = "Video stopped"; + private static final String ENDED = "Video ended"; + private static final String PLAY_FAILED = "Could not play video: "; + private static final String BAD_LINK = "Not a YouTube link: "; + private static final String NOT_HOSTING = "You are not playing a video"; + private static final String JOINED = "Watching together with "; + private static final String JOIN_MISSING = " is not playing a video nearby"; + private static final String LEFT = "Stopped watching with "; + private static final String NOT_JOINED = "You are not watching with anyone"; + private static final String REMOTE_FAILURE = "watch playback of {} for {} failed"; + private static final Map remotes = new HashMap<>(); + private static final Set failedVideos = new HashSet<>(); + private static aod hostPlayer; + private static boolean hostAnnounced; + private static boolean publishedWatch; + private static String joined; + private static aod activePlayer; + private static String activeKey; + + private aoh() { + } + + public static void initialize() { + ClientTickEvents.END_CLIENT_TICK.register(aoh::tick); + } + + public static void play(String var0) { + String var1 = null; + int var2 = 1437954464; + + while (true) { + switch (var2) { + case -577442724: + ape.displayMessage(apd.WARN, "Not a YouTube link: " + var0); + return; + case 1196763513: + stopHosting((boolean)((((1725121929 ^ -1725121929) + ((1725121929 & -1725121929) << 1))) != 0)); + joined = null; + failedVideos.remove(var1); + hostPlayer = new aod( + var1, + (683855984391168066L ^ -683855984391168066L) + ((683855984391168066L & -683855984391168066L) << 1), + (boolean)((((-1815137606 | 1815137606) + (-1815137606 & 1815137606)) + ) != 0)); + hostPlayer.start(); + hostAnnounced = (boolean)(((0)) != 0); + ape.displayMessage(apd.INFO, "Loading video..."); + return; + case 1437954464: + } + + var1 = aoi.parseVideoId(var0); + if (var1 == null) { + var2 = -577442724; + } else { + var2 = 1196763513; + } + } + } + + public static void stop() { + int var0 = -889090613; + + while (true) { + switch (var0) { + case -2085210772: + stopHosting((boolean)((((-719791963 | 719791964) + (-719791963 & 719791964))) != 0)); + return; + case -889090613: + default: + if (hostPlayer == null) { + var0 = 624093407; + } else { + var0 = -2085210772; + } + break; + case 624093407: + ape.displayMessage( + apd.WARN, "You are not playing a video" + ); + return; + } + } + } + + public static void setPaused(boolean var0) { + int var1 = 386523250; + + while (true) { + switch (var1) { + case 386523250: + default: + if (hostPlayer == null) { + var1 = 432025481; + } else { + var1 = 1875136263; + } + break; + case 432025481: + ape.displayMessage( + apd.WARN, + "You are not playing a video" + ); + return; + case 1875136263: + hostPlayer.setPaused(var0); + return; + } + } + } + + public static void seekSeconds(long var0) { + if (hostPlayer == null) { + ape.displayMessage( + apd.WARN, "You are not playing a video" + ); + } else { + long var2 = hostPlayer.durationMs(); + long var4 = Math.max( + (-4787002142301805725L | 4787002142301805725L) + (-4787002142301805725L & 4787002142301805725L), + var0 * ((-4260238110215150363L ^ 4260238110215151363L) + ((-4260238110215150363L & 4260238110215151363L) << 1)) + ); + hostPlayer.seek(var2 > (8586546078411231617L | -8586546078411231617L) + (8586546078411231617L & -8586546078411231617L) ? Math.min(var4, var2) : var4); + } + } + + public static void join(String var0) { + String var1 = null; + aof var2 = null; + aof var4 = null; + int var3 = -1063628877; + + while (true) { + switch (var3) { + case -1063628877: + default: + var1 = anh.normalizeIdentity(var0); + if (var1 == null) { + var3 = -864795768; + } else { + var3 = 802268748; + } + break; + case -969790155: + if (!var2.live) { + var3 = 2141199160; + } else { + var3 = 1062681941; + } + break; + case -864795768: + var4 = null; + var3 = 1851554671; + break; + case 802268748: + var4 = remotes.get(var1); + var3 = 1851554671; + break; + case 1062681941: + stopHosting((boolean)((((1464020029 | -1464020028) + (1464020029 & -1464020028))) != 0)); + joined = var1; + ape.displayMessage(apd.INFO, "Watching together with " + var0); + return; + case 1851554671: + var2 = var4; + if (var2 != null) { + var3 = -969790155; + } else { + var3 = 2141199160; + } + break; + case 2141199160: + ape.displayMessage(apd.WARN, var0 + " is not playing a video nearby"); + return; + } + } + } + + public static void leave() { + int var0 = 441194550; + + while (true) { + switch (var0) { + case -157647720: + ape.displayMessage( + apd.WARN, "You are not watching with anyone" + ); + return; + case 441194550: + default: + if (joined == null) { + var0 = -157647720; + } else { + var0 = 585863238; + } + break; + case 585863238: + ape.displayMessage(apd.INFO, "Stopped watching with " + joined); + joined = null; + return; + } + } + } + + public static Collection watchingPlayers() { + return remotes.entrySet().stream().filter(var0 -> var0.getValue().live).map(Entry::getKey).toList(); + } + + public static String joinedIdentity() { + return joined; + } + + public static boolean needsPublish() { + int var1 = 0; + int var0 = 1680050997; + + while (true) { + switch (var0) { + case -1239677356: + return (boolean)((var1) != 0); + case -1017156652: + if (publishedWatch) { + var0 = 915296827; + } else { + var0 = 1683856504; + } + break; + case 915296827: + var1 = 1; + var0 = -1239677356; + break; + case 1680050997: + default: + if (hostPlayer == null) { + var0 = -1017156652; + } else { + var0 = 915296827; + } + break; + case 1683856504: + var1 = 0; + var0 = -1239677356; + } + } + } + + public static boolean hasRemotes() { + int var1 = 0; + int var0 = -575066664; + + while (true) { + switch (var0) { + case -1852496810: + var1 = 1; + var0 = -279427201; + break; + case -575066664: + default: + if (!remotes.isEmpty()) { + var0 = -1852496810; + } else { + var0 = -180058107; + } + break; + case -279427201: + return (boolean)((var1) != 0); + case -180058107: + var1 = 0; + var0 = -279427201; + } + } + } + + public static JsonElement publishPayload() { + aod var0 = hostPlayer; + if (var0 != null && var0.status() != aoc.FAILED) { + JsonObject var1 = new JsonObject(); + var1.addProperty("v", var0.videoId()); + var1.addProperty("t", var0.positionMs()); + var1.addProperty("p", var0.isPaused()); + String var2 = var0.title(); + var1.addProperty("n", var2 == null ? "" : truncate(var2)); + publishedWatch = (boolean)(((1)) != 0); + return var1; + } + + if (!publishedWatch) { + return null; + } + + publishedWatch = (boolean)(((0)) != 0); + return new JsonPrimitive(Boolean.valueOf((boolean)((((625564367 ^ -625564367) + ((625564367 & -625564367) << 1))) != 0))); + } + + public static void applyRemotes(Collection var0, Map var1) { + long var2 = System.currentTimeMillis(); + + for (String var5 : var0) { + JsonObject var6 = (JsonObject)var1.get(var5); + aof var7 = remotes.get(var5); + if (var6 == null) { + if (var7 != null + && var7.live + && var2 - var7.receivedAt > (-1822716257698032605L | 1822716257698033805L) + (-1822716257698032605L & 1822716257698033805L)) { + var7.hiddenAt = var2 - Math.round((1.0F - var7.fade(var2)) * 220.0F); + var7.live = (boolean)(((0)) != 0); + } + } else { + String var8 = string(var6, "v"); + if (aoi.isVideoId(var8)) { + if (var7 == null) { + var7 = new aof(); + remotes.put(var5, var7); + } + + if (!var7.live) { + var7.shownAt = var2 - Math.round(var7.fade(var2) * 220.0F); + var7.live = (boolean)(((1)) != 0); + } + + var7.videoId = var8; + var7.title = string(var6, "n"); + var7.paused = (boolean)(((var6.has("p") + && var6.get("p").getAsBoolean() + ? 1: (1623084805 | -1623084805) + (1623084805 & -1623084805))) != 0); + long var9 = var6.has("a") + ? Math.max( + (2726886827008100736L | -2726886827008100736L) + (2726886827008100736L & -2726886827008100736L), + var6.get("a").getAsLong() + ) + : (-8487010135769006997L ^ 8487010135769006997L) + ((-8487010135769006997L & 8487010135769006997L) << 1); + long var11 = var6.has("t") + ? var6.get("t").getAsLong() + : (8656003542330698433L | -8656003542330698433L) + (8656003542330698433L & -8656003542330698433L); + var7.positionMs = var7.paused ? var11 : var11 + var9; + var7.receivedAt = var2; + } + } + } + } + + public static aog sessionOf(AbstractClientPlayer var0) { + Minecraft var1 = Minecraft.getInstance(); + if (var0 == var1.player) { + aod var6 = hostPlayer != null ? hostPlayer : (joined != null ? activePlayer : null); + return var6 == null + ? null + : new aog(var6.videoId(), var6.title(), var6, 1.0F, (boolean)((((-2065400590 ^ 2065400591) + ((-2065400590 & 2065400591) << 1))) != 0)); + } + + String var2 = anh.identityOf(var0); + aof var3 = var2 == null ? null : remotes.get(var2); + if (var3 == null) { + return null; + } + + float var4 = var3.fade(System.currentTimeMillis()); + if (var4 <= 0.0F) { + return null; + } + + aod var5 = var2.equals(activeKey) ? activePlayer : null; + return new aog(var3.videoId, var3.title, var5, var4, (boolean)((((893505700 | -893505700) + (893505700 & -893505700))) != 0)); + } + + public static aod overlayPlayer() { + aod var1 = null; + int var0 = -1016229785; + + while (true) { + switch (var0) { + case -1994036220: + var1 = null; + var0 = 1400863633; + break; + case -1016229785: + default: + if (hostPlayer != null) { + var0 = 1284332958; + } else { + var0 = -812657870; + } + break; + case -812657870: + if (joined != null) { + var0 = 1533099297; + } else { + var0 = -1994036220; + } + break; + case 448748847: + var1 = activePlayer; + var0 = 1400863633; + break; + case 1284332958: + return hostPlayer; + case 1400863633: + return var1; + case 1533099297: + if (joined.equals(activeKey)) { + var0 = 448748847; + } else { + var0 = -1994036220; + } + } + } + } + + public static void updateFrames() { + int var0 = 165623765; + + while (true) { + switch (var0) { + case -1023657228: + return; + case -204363835: + if (activePlayer != null) { + var0 = 636529618; + } else { + var0 = -1023657228; + } + break; + case 165623765: + default: + if (hostPlayer != null) { + var0 = 1913945402; + } else { + var0 = -204363835; + } + break; + case 605735535: + activePlayer.update(); + var0 = -1023657228; + break; + case 636529618: + if (activePlayer != hostPlayer) { + var0 = 605735535; + } else { + var0 = -1023657228; + } + break; + case 1913945402: + hostPlayer.update(); + var0 = -204363835; + } + } + } + + private static void tick(Minecraft var0) { + long var1 = (4347938314494983459L ^ -4347938314494983459L) + ((4347938314494983459L & -4347938314494983459L) << 1); + int var3 = -1255414764; + + while (true) { + switch (var3) { + case -1400528153: + if (var0.player != null) { + var3 = -605023799; + } else { + var3 = 1258565591; + } + break; + case -1255414764: + default: + if (vd.INSTANCE.isEnabled()) { + var3 = -1400528153; + } else { + var3 = 1258565591; + } + break; + case -605023799: + if (var0.level == null) { + var3 = 1258565591; + } else { + var3 = 384071026; + } + break; + case 384071026: + var1 = System.currentTimeMillis(); + remotes.values().removeIf(var2 -> { + int var4 = 0; + int var3x = -127318578; + + while (true) { + switch (var3x) { + case -2062251368: + if (var1 - var2.hiddenAt > (7695969247871140036L ^ -7695969247871139816L) + ((7695969247871140036L & -7695969247871139816L) << 1)) { + var3x = 379224821; + } else { + var3x = 647044035; + } + break; + case -217533163: + var4 = 1; + var3x = 1442593975; + break; + case -127318578: + default: + if (var2.live) { + var3x = 1802946231; + } else { + var3x = -2062251368; + } + break; + case 379224821: + var4 = 1; + var3x = 1442593975; + break; + case 647044035: + var4 = 0; + var3x = 1442593975; + break; + case 1442593975: + return (boolean)((var4) != 0); + case 1802946231: + if (var1 - var2.receivedAt > (-5039970975211645647L | 5039970975211651647L) + (-5039970975211645647L & 5039970975211651647L)) { + var3x = -217533163; + } else { + var3x = 1940673852; + } + break; + case 1940673852: + var4 = 0; + var3x = 1442593975; + } + } + }); + if (joined != null) { + var3 = 2010864959; + } else { + var3 = 1711858249; + } + break; + case 1250475546: + ape.displayMessage(apd.INFO, "Stopped watching with " + joined); + joined = null; + var3 = 1711858249; + break; + case 1258565591: + shutdown(); + return; + case 1711858249: + tickHost(); + selectActive(var0, var1); + return; + case 2010864959: + if (!remotes.containsKey(joined)) { + var3 = 1250475546; + } else { + var3 = 1711858249; + } + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static void tickHost() { + aod var0 = hostPlayer; + if (var0 != null) { + float var1 = vd.INSTANCE.getVideoVolume(); + var0.setGain(var1); + switch (aoe.$SwitchMap$evo$systems$social$watch$WatchPlayer$Status[var0.status().ordinal()]) { + case 1: + ape.displayMessage(apd.ERROR, "Could not play video: " + var0.failure()); + stopHosting((boolean)((((-1858111084 ^ 1858111084) + ((-1858111084 & 1858111084) << 1))) != 0)); + break; + case 2: + ape.displayMessage(apd.INFO, "Video ended"); + stopHosting((boolean)((((-200601147 ^ 200601147) + ((-200601147 & 200601147) << 1))) != 0)); + break; + case 3: + if (!hostAnnounced) { + hostAnnounced = (boolean)(((1)) != 0); + ape.displayMessage(apd.INFO, "Now playing: " + var0.title()); + } + case 4: + } + } + } + + private static void selectActive(Minecraft var0, long var1) { + String var3 = null; + aof var4 = null; + float var5 = 0.0F; + float var6 = vd.INSTANCE.getVideoVolume(); + if (hostPlayer == null) { + if (joined != null) { + aof var7 = remotes.get(joined); + if (var7 != null && var7.live) { + var3 = joined; + var4 = var7; + var5 = var6; + } + } else if (vd.INSTANCE.playsNearbyVideo()) { + float var14 = vd.INSTANCE.getMaxDistance(); + float var8 = Float.MAX_VALUE; + + for (AbstractClientPlayer var10 : var0.level.players()) { + if (var10 != var0.player && !var10.isSpectator()) { + String var11 = anh.identityOf(var10); + aof var12 = var11 == null ? null : remotes.get(var11); + if (var12 != null && var12.live && !failedVideos.contains(var12.videoId)) { + float var13 = var0.player.distanceTo(var10); + if (var13 <= var14 && var13 < var8) { + var8 = var13; + var3 = var11; + var4 = var12; + } + } + } + } + + if (var4 != null) { + float var15 = 1.0F - Mth.clamp(var8 / var14, 0.0F, 1.0F); + var5 = var6 * var15 * var15; + } + } + } + + if (var4 != null && !failedVideos.contains(var4.videoId)) { + if (activePlayer == null || !var3.equals(activeKey) || !activePlayer.videoId().equals(var4.videoId)) { + closeActive(); + activeKey = var3; + activePlayer = new aod(var4.videoId, var4.targetMs(var1), var4.paused); + activePlayer.start(); + } + + if (activePlayer.status() == aoc.FAILED) { + id.warn( + Cif.MEDIA, + "watch playback of {} for {} failed", + var4.videoId, + activeKey + ); + failedVideos.add(var4.videoId); + closeActive(); + } else { + activePlayer.setGain(var5 < 0.001F ? 0.0F : var5); + activePlayer.sync(var4.targetMs(var1), var4.paused, (7575082140684243605L | -7575082140684242105L) + (7575082140684243605L & -7575082140684242105L)); + } + } else { + closeActive(); + } + } + + private static void stopHosting(boolean var0) { + int var1 = 1255846094; + + while (true) { + switch (var1) { + case -1264759091: + return; + case -597644583: + hostPlayer.close(); + hostPlayer = null; + hostAnnounced = (boolean)(((0)) != 0); + if (var0) { + var1 = -345424543; + } else { + var1 = 908491671; + } + break; + case -345424543: + ape.displayMessage(apd.INFO, "Video stopped"); + var1 = 908491671; + break; + case 908491671: + return; + case 1255846094: + default: + if (hostPlayer == null) { + var1 = -1264759091; + } else { + var1 = -597644583; + } + } + } + } + + private static void closeActive() { + int var0 = -1951870554; + + while (true) { + switch (var0) { + case -1951870554: + default: + if (activePlayer != null) { + var0 = 386368635; + } else { + var0 = -1733999552; + } + break; + case -1733999552: + activePlayer = null; + activeKey = null; + return; + case 386368635: + activePlayer.close(); + var0 = -1733999552; + } + } + } + + private static void shutdown() { + int var0 = -869499343; + + while (true) { + switch (var0) { + case -2067223741: + hostPlayer.close(); + hostPlayer = null; + var0 = 343373358; + break; + case -1147068292: + if (joined == null) { + var0 = 392203446; + } else { + var0 = 1193521092; + } + break; + case -869499343: + default: + if (hostPlayer == null) { + var0 = 806630904; + } else { + var0 = 1193521092; + } + break; + case -526881977: + if (remotes.isEmpty()) { + var0 = -1147068292; + } else { + var0 = 1193521092; + } + break; + case 343373358: + closeActive(); + remotes.clear(); + failedVideos.clear(); + joined = null; + hostAnnounced = (boolean)(((0)) != 0); + return; + case 392203446: + return; + case 806630904: + if (activePlayer == null) { + var0 = -526881977; + } else { + var0 = 1193521092; + } + break; + case 1193521092: + if (hostPlayer != null) { + var0 = -2067223741; + } else { + var0 = 343373358; + } + } + } + } + + private static String string(JsonObject var0, String var1) { + JsonElement var2 = null; + String var4 = null; + int var3 = 826949588; + + while (true) { + switch (var3) { + case -2076099264: + var4 = var2.getAsString(); + var3 = 937842672; + break; + case -1577093573: + if (var2.isJsonNull()) { + var3 = 195901146; + } else { + var3 = -2076099264; + } + break; + case 195901146: + var4 = null; + var3 = 937842672; + break; + case 826949588: + default: + var2 = var0.get(var1); + if (var2 != null) { + var3 = -1577093573; + } else { + var3 = 195901146; + } + break; + case 937842672: + return var4; + } + } + } + + private static String truncate(String var0) { + String var2 = null; + int var1 = 1284670083; + + while (true) { + switch (var1) { + case -152205078: + var2 = var0; + var1 = 6858920; + break; + case 6858920: + return var2; + case 194867410: + var2 = var0.substring(0, (-960248811 | 960248907) + (-960248811 & 960248907)); + var1 = 6858920; + break; + case 1284670083: + default: + if (var0.length() <= (190889399 | -190889303) + (190889399 & -190889303)) { + var1 = -152205078; + } else { + var1 = 194867410; + } + } + } + } +} diff --git a/src/main/java/defpackage/aoi.java b/src/main/java/defpackage/aoi.java new file mode 100644 index 0000000..cb2ddae --- /dev/null +++ b/src/main/java/defpackage/aoi.java @@ -0,0 +1,154 @@ +package defpackage; + +import java.net.URI; +import java.util.Locale; +import java.util.regex.Pattern; + +public final class aoi { + private static final Pattern VIDEO_ID = Pattern.compile( + "[A-Za-z0-9_-]{11}" + ); + private static final String WATCH_URL = "https://www.youtube.com/watch?v="; + private static final String SHORT_HOST = "youtu.be"; + private static final String HOST_SUFFIX = "youtube.com"; + private static final String QUERY_KEY = "v="; + private static final String QUERY_SEPARATOR = "&"; + private static final String PATH_SEPARATOR = "/"; + private static final String[] PATH_PREFIXES; + private static final String SCHEME_SEPARATOR = "://"; + private static final String DEFAULT_SCHEME = "https://"; + + private aoi() { + } + + public static boolean isVideoId(String var0) { + int var2 = 0; + int var1 = 1119803242; + + while (true) { + switch (var1) { + case -370049877: + return (boolean)((var2) != 0); + case 226227290: + var2 = 0; + var1 = -370049877; + break; + case 807055939: + if (VIDEO_ID.matcher(var0).matches()) { + var1 = 1157478900; + } else { + var1 = 226227290; + } + break; + case 1119803242: + default: + if (var0 != null) { + var1 = 807055939; + } else { + var1 = 226227290; + } + break; + case 1157478900: + var2 = 1; + var1 = -370049877; + } + } + } + + public static String watchUrl(String var0) { + int var1 = -1128863811; + + while (true) { + switch (var1) { + case -2001282202: + return "https://www.youtube.com/watch?v=" + var0; + case -1128863811: + default: + if (!isVideoId(var0)) { + var1 = 875400696; + } else { + var1 = -2001282202; + } + break; + case 875400696: + throw new IllegalArgumentException(var0); + } + } + } + + public static String parseVideoId(String var0) { + if (var0 == null) { + return null; + } + + String var1 = var0.trim(); + if (isVideoId(var1)) { + return var1; + } + + try { + URI var2 = URI.create(var1.contains("://") ? var1 : "https://" + var1); + String var3 = var2.getHost(); + if (var3 == null) { + return null; + } + + var3 = var3.toLowerCase(Locale.ROOT); + String[] var4 = var2.getPath() == null ? new String[0] : var2.getPath().split("/"); + if (!var3.equals("youtu.be") + && !var3.endsWith(".youtu.be")) { + if (!var3.equals("youtube.com") + && !var3.endsWith(".youtube.com")) { + return null; + } + + String var5 = var2.getRawQuery(); + if (var5 != null) { + String[] var6 = var5.split("&"); + int var7 = var6.length; + + for (int var8 = 0; var8 < var7; var8++) { + String var9 = var6[var8]; + if (var9.startsWith("v=") + && isVideoId(var9.substring("v=".length()))) { + return var9.substring("v=".length()); + } + } + } + + for (int var13 = 1; + var13 + (-430304526 ^ 430304527) + ((-430304526 & 430304527) << 1) < var4.length; + var13++ + ) { + String[] var14 = PATH_PREFIXES; + int var15 = var14.length; + + for (int var16 = 0; var16 < var15; var16++) { + String var10 = var14[var16]; + if (var10.equals(var4[var13]) && isVideoId(var4[var13 + 1])) { + return var4[var13 + 1]; + } + } + } + + return null; + } else { + return var4.length > (1708719733 ^ -1708719732) + ((1708719733 & -1708719732) << 1) + && isVideoId(var4[1]) + ? var4[1] + : null; + } + } catch (IllegalArgumentException var11) { + return null; + } + } + + static { + String[] var10000 = new String[4]; + var10000[0] = "shorts"; + var10000[1] = "embed"; + var10000[2] = "live"; + var10000[3] = "v"; + PATH_PREFIXES = var10000; + } +} diff --git a/src/main/java/defpackage/aoj.java b/src/main/java/defpackage/aoj.java new file mode 100644 index 0000000..2d40ba8 --- /dev/null +++ b/src/main/java/defpackage/aoj.java @@ -0,0 +1,4 @@ +package defpackage; + +public record aoj(String videoId, String title, long durationMs, String videoUrl, String audioUrl, boolean progressive, long resolvedAt) { +} diff --git a/src/main/java/defpackage/aok.java b/src/main/java/defpackage/aok.java new file mode 100644 index 0000000..e21daae --- /dev/null +++ b/src/main/java/defpackage/aok.java @@ -0,0 +1,223 @@ +package defpackage; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +public final class aok { + private static final String THREAD_NAME = "EvoWatchResolver"; + private static final String FORMAT_SELECTOR = "18/b[ext=mp4][vcodec^=avc1][acodec^=mp4a][height<=480]/bv*[ext=mp4][vcodec^=avc1][height<=360]+ba[ext=m4a][acodec^=mp4a]/bv*[ext=mp4][vcodec^=avc1][height<=480]+ba[ext=m4a][acodec^=mp4a]"; + private static final String PRINT_TITLE = "%(title)s"; + private static final String PRINT_DURATION = "%(duration)s"; + private static final String PRINT_URLS = "urls"; + private static final String SOCKET_TIMEOUT_SECONDS = "15"; + private static final String ERROR_PREFIX = "ERROR:"; + private static final String HTTP_PREFIX = "http"; + private static final String NO_OUTPUT = "yt-dlp returned no stream"; + private static final String TIMED_OUT = "yt-dlp timed out"; + private static final String EXIT_FAILURE = "yt-dlp exited with code "; + private static final long PROCESS_TIMEOUT_SECONDS = 90L; + private static final long PROCESS_EXIT_GRACE_SECONDS = 5L; + private static final long CACHE_TTL_MS = 3600000L; + private static final long MILLIS_PER_SECOND = 1000L; + private static final int METADATA_LINES = 2; + private static final int MAX_URLS = 2; + private static final ExecutorService EXECUTOR = Executors.newSingleThreadExecutor(var0 -> { + Thread var1 = new Thread(var0, "EvoWatchResolver"); + var1.setDaemon((boolean)((((1574789413 | -1574789412) + (1574789413 & -1574789412))) != 0)); + return var1; + }); + private static final Map CACHE = new ConcurrentHashMap<>(); + + private aok() { + } + + public static CompletableFuture resolve(String var0) { + aoj var1 = null; + int var2 = 1079231597; + + while (true) { + switch (var2) { + case -1592487936: + return CompletableFuture.supplyAsync(() -> { + try { + aoj var1x = runYtDlp(var0); + CACHE.put(var0, var1x); + return var1x; + } catch (InterruptedException var2x) { + Thread.currentThread().interrupt(); + throw new IllegalStateException(var2x); + } catch (IOException var3) { + throw new IllegalStateException(var3.getMessage(), var3); + } + }, EXECUTOR); + case 110127450: + if (System.currentTimeMillis() - var1.resolvedAt() + < (8373879744441337879L | -8373879744437737879L) + (8373879744441337879L & -8373879744437737879L)) { + var2 = 1075827061; + } else { + var2 = -1592487936; + } + break; + case 1074462769: + var1 = CACHE.get(var0); + if (var1 != null) { + var2 = 110127450; + } else { + var2 = -1592487936; + } + break; + case 1075827061: + return CompletableFuture.completedFuture(var1); + case 1079231597: + default: + if (!aoi.isVideoId(var0)) { + var2 = 1110396829; + } else { + var2 = 1074462769; + } + break; + case 1110396829: + return CompletableFuture.failedFuture(new IllegalArgumentException(var0)); + } + } + } + + public static void invalidate(String var0) { + CACHE.remove(var0); + } + + private static aoj runYtDlp(String var0) throws IOException, InterruptedException { + String var1 = aol.ensure().toString(); + String[] var10002 = new String[16]; + var10002[0] = var1; + var10002[1] = "--ignore-config"; + var10002[2] = "--no-warnings"; + var10002[3] = "--no-playlist"; + var10002[4] = "--no-progress"; + var10002[5] = "--socket-timeout"; + var10002[6] = "15"; + var10002[7] = "-f"; + var10002[8] = "18/b[ext=mp4][vcodec^=avc1][acodec^=mp4a][height<=480]/bv*[ext=mp4][vcodec^=avc1][height<=360]+ba[ext=m4a][acodec^=mp4a]/bv*[ext=mp4][vcodec^=avc1][height<=480]+ba[ext=m4a][acodec^=mp4a]"; + var10002[9] = "--print"; + var10002[10] = "%(title)s"; + var10002[11] = "--print"; + var10002[12] = "%(duration)s"; + var10002[13] = "--print"; + var10002[14] = "urls"; + var10002[15] = aoi.watchUrl(var0); + ProcessBuilder var2 = new ProcessBuilder(var10002); + var2.redirectErrorStream((boolean)((((1543922294 | -1543922293) + (1543922294 & -1543922293))) != 0)); + Process var3 = var2.start(); + CompletableFuture.runAsync( + () -> { + int var1x = 1488040553; + + while (true) { + switch (var1x) { + case 1086490469: + var3.destroyForcibly(); + var1x = 1714760748; + break; + case 1488040553: + default: + if (var3.isAlive()) { + var1x = 1086490469; + } else { + var1x = 1714760748; + } + break; + case 1714760748: + return; + } + } + }, + CompletableFuture.delayedExecutor( + (4976404875023136296L ^ -4976404875023136206L) + ((4976404875023136296L & -4976404875023136206L) << 1), TimeUnit.SECONDS + ) + ); + ArrayList var4 = new ArrayList(); + String var5 = null; + BufferedReader var6 = new BufferedReader(new InputStreamReader(var3.getInputStream(), StandardCharsets.UTF_8)); + + String var7; + try { + while ((var7 = var6.readLine()) != null) { + if (var7.startsWith("ERROR:")) { + var5 = var7.substring("ERROR:".length()).trim(); + } else if (!var7.isBlank()) { + var4.add(var7.trim()); + } + } + } catch (Throwable var14) { + try { + var6.close(); + } catch (Throwable var13) { + var14.addSuppressed(var13); + } + + throw var14; + } + + var6.close(); + if (!var3.waitFor((-5585781697959844600L | 5585781697959844605L) + (-5585781697959844600L & 5585781697959844605L), TimeUnit.SECONDS)) { + var3.destroyForcibly(); + throw new IOException("yt-dlp timed out"); + } + + if (var5 != null) { + throw new IOException(var5); + } + + if (var3.exitValue() != 0) { + throw new IOException("yt-dlp exited with code " + var3.exitValue()); + } + + int var15 = 0; + + while ( + var15 < (-151273962 | 151273964) + (-151273962 & 151273964) + && var15 < var4.size() + && ((String)var4.get(var4.size() - ((2115869646 ^ -2115869645) + ((2115869646 & -2115869645) << 1)) - var15)) + .startsWith("http") + ) { + var15++; + } + + int var16 = var4.size() - var15; + if (var15 != 0 && var16 >= (-451480727 | 451480729) + (-451480727 & 451480729)) { + String var8 = (String)var4.get(var16 - ((-1977803370 ^ 1977803372) + ((-1977803370 & 1977803372) << 1))); + long var9 = parseDuration((String)var4.get(var16 - ((-1601451317 | 1601451318) + (-1601451317 & 1601451318)))); + String var11 = (String)var4.get(var16); + String var12 = var15 > 1? (String)var4.get(var16 + (-658960654 ^ 658960655) + ((-658960654 & 658960655) << 1)) + : var11; + return new aoj( + var0, + var8, + var9, + var11, + var12, + (boolean)(((var15 == 1? 1: (-1135695813 ^ 1135695813) + ((-1135695813 & 1135695813) << 1))) != 0), + System.currentTimeMillis() + ); + } else { + throw new IOException("yt-dlp returned no stream"); + } + } + + private static long parseDuration(String var0) { + try { + return Math.round(Double.parseDouble(var0) * 1000.0); + } catch (NumberFormatException var2) { + return (2641750133101965392L | -2641750133101965392L) + (2641750133101965392L & -2641750133101965392L); + } + } +} diff --git a/src/main/java/defpackage/aol.java b/src/main/java/defpackage/aol.java new file mode 100644 index 0000000..c3332fe --- /dev/null +++ b/src/main/java/defpackage/aol.java @@ -0,0 +1,351 @@ +package defpackage; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.HttpClient.Redirect; +import java.net.http.HttpResponse.BodyHandlers; +import java.nio.charset.StandardCharsets; +import java.nio.file.CopyOption; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.nio.file.attribute.FileTime; +import java.security.DigestInputStream; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.time.Duration; +import java.time.Instant; +import java.util.HexFormat; +import java.util.Locale; + +final class aol { + private static final String RELEASE_BASE = "https://github.com/yt-dlp/yt-dlp/releases/latest/download/"; + private static final String CHECKSUM_FILE = "SHA2-256SUMS"; + private static final String DIGEST_ALGORITHM = "SHA-256"; + private static final String BIN_DIRECTORY = "bin"; + private static final String PART_SUFFIX = ".part"; + private static final String OS_PROPERTY = "os.name"; + private static final String ARCH_PROPERTY = "os.arch"; + private static final String OS_WINDOWS = "win"; + private static final String OS_MAC = "mac"; + private static final String ARCH_ARM = "aarch64"; + private static final String ARCH_ARM_ALIAS = "arm64"; + private static final String ASSET_WINDOWS = "yt-dlp.exe"; + private static final String ASSET_WINDOWS_ARM = "yt-dlp_arm64.exe"; + private static final String ASSET_MAC = "yt-dlp_macos"; + private static final String ASSET_LINUX = "yt-dlp_linux"; + private static final String ASSET_LINUX_ARM = "yt-dlp_linux_aarch64"; + private static final String CHECKSUM_SEPARATOR = "\\s+"; + private static final String LINE_SEPARATOR = "\\R"; + private static final Duration REFRESH_AGE = Duration.ofDays( + (-3338600145280356552L ^ 3338600145280356559L) + ((-3338600145280356552L & 3338600145280356559L) << 1) + ); + private static final Duration CONNECT_TIMEOUT = Duration.ofSeconds( + (-4977602804897698401L ^ 4977602804897698411L) + ((-4977602804897698401L & 4977602804897698411L) << 1) + ); + private static final Duration DOWNLOAD_TIMEOUT = Duration.ofMinutes( + (6092273222978196886L | -6092273222978196882L) + (6092273222978196886L & -6092273222978196882L) + ); + private static final int OK_STATUS = 200; + private static final String REFRESH_FAILURE = "yt-dlp refresh failed, keeping installed copy"; + private static final String INSTALLED = "yt-dlp installed at {}"; + private static final String STATUS_FAILURE = "download of %s failed with status %d"; + private static final String CHECKSUM_MISSING = "no checksum published for "; + private static final String CHECKSUM_MISMATCH = "checksum mismatch for "; + private static final String EXECUTABLE_FAILURE = "cannot mark yt-dlp executable"; + private static final HttpClient HTTP = HttpClient.newBuilder().connectTimeout(CONNECT_TIMEOUT).followRedirects(Redirect.NORMAL).build(); + private static Path resolved; + + private aol() { + } + + static synchronized Path ensure() throws IOException, InterruptedException { + String var0 = assetName(); + Path var1 = bz.DIRECTORY.toPath().resolve("bin").resolve(var0); + if (resolved != null && Files.isExecutable(resolved)) { + return resolved; + } + + if (Files.isRegularFile(var1)) { + FileTime var2 = Files.getLastModifiedTime(var1); + if (var2.toInstant().plus(REFRESH_AGE).isAfter(Instant.now())) { + resolved = markExecutable(var1); + return resolved; + } + + try { + download(var0, var1); + } catch (IOException var4) { + id.warn( + Cif.MEDIA, + "yt-dlp refresh failed, keeping installed copy", + var4 + ); + Files.setLastModifiedTime(var1, FileTime.from(Instant.now())); + } + + resolved = markExecutable(var1); + return resolved; + } else { + download(var0, var1); + resolved = markExecutable(var1); + id.info(Cif.MEDIA, "yt-dlp installed at {}", var1); + return resolved; + } + } + + private static void download(String var0, Path var1) throws IOException, InterruptedException { + String var2 = expectedChecksum(var0); + Files.createDirectories(var1.getParent()); + Path var3 = var1.resolveSibling(var0 + ".part"); + HttpRequest var4 = HttpRequest.newBuilder(URI.create("https://github.com/yt-dlp/yt-dlp/releases/latest/download/" + var0)) + .timeout(DOWNLOAD_TIMEOUT) + .GET() + .build(); + HttpResponse var5 = HTTP.send(var4, BodyHandlers.ofInputStream()); + if (var5.statusCode() != (-757012613 ^ 757012813) + ((-757012613 & 757012813) << 1)) { + ((InputStream)var5.body()).close(); + String var14 = "download of %s failed with status %d"; + Object[] var10003 = new Object[2]; + var10003[0] = var0; + var10003[1] = var5.statusCode(); + throw new IOException(var14.formatted(var10003)); + } + + MessageDigest var6 = newDigest(); + DigestInputStream var7 = new DigestInputStream((InputStream)var5.body(), var6); + + try { + CopyOption[] var10002 = new CopyOption[1]; + var10002[0] = StandardCopyOption.REPLACE_EXISTING; + Files.copy(var7, var3, var10002); + } catch (Throwable var11) { + try { + var7.close(); + } catch (Throwable var10) { + var11.addSuppressed(var10); + } + + throw var11; + } + + var7.close(); + String var12 = HexFormat.of().formatHex(var6.digest()); + if (!var12.equalsIgnoreCase(var2)) { + Files.deleteIfExists(var3); + throw new IOException("checksum mismatch for " + var0); + } + + CopyOption[] var13 = new CopyOption[2]; + var13[0] = StandardCopyOption.REPLACE_EXISTING; + var13[1] = StandardCopyOption.ATOMIC_MOVE; + Files.move(var3, var1, var13); + } + + private static String expectedChecksum(String var0) throws IOException, InterruptedException { + HttpRequest var1 = null; + HttpResponse var2 = null; + String[] var3 = null; + int var4 = 0; + int var5 = 0; + String var6 = null; + String[] var7 = null; + int var8 = 1094623799; + + while (true) { + switch (var8) { + case -873360452: + if (var5 < var4) { + var8 = 1276341304; + } else { + var8 = 1715947668; + } + break; + case -435230784: + var3 = ((String)var2.body()).split("\\R"); + var4 = var3.length; + var5 = 0; + var8 = -873360452; + break; + case -318030350: + return var7[0]; + case 1094623799: + default: + var1 = HttpRequest.newBuilder( + URI.create( + "https://github.com/yt-dlp/yt-dlp/releases/latest/download/SHA2-256SUMS" + ) + ) + .timeout(DOWNLOAD_TIMEOUT) + .GET() + .build(); + var2 = HTTP.send(var1, BodyHandlers.ofString(StandardCharsets.UTF_8)); + if (var2.statusCode() != (1965011487 ^ -1965011287) + ((1965011487 & -1965011287) << 1)) { + var8 = 1597657703; + } else { + var8 = -435230784; + } + break; + case 1276341304: + var6 = var3[var5]; + var7 = var6.trim().split("\\s+"); + if (var7.length == (997365306 ^ -997365304) + ((997365306 & -997365304) << 1)) { + var8 = 1768763604; + } else { + var8 = 2141547005; + } + break; + case 1597657703: + String var10002 = "download of %s failed with status %d"; + Object[] var10003 = new Object[2]; + var10003[0] = "SHA2-256SUMS"; + var10003[1] = var2.statusCode(); + throw new IOException(var10002.formatted(var10003)); + case 1715947668: + throw new IOException("no checksum published for " + var0); + case 1768763604: + if (var7[1].equals(var0)) { + var8 = -318030350; + } else { + var8 = 2141547005; + } + break; + case 2141547005: + var5++; + var8 = -873360452; + } + } + } + + private static MessageDigest newDigest() throws IOException { + try { + return MessageDigest.getInstance("SHA-256"); + } catch (NoSuchAlgorithmException var1) { + throw new IOException(var1); + } + } + + private static Path markExecutable(Path var0) throws IOException { + int var1 = 1583539959; + + while (true) { + switch (var1) { + case -1484632588: + throw new IOException( + "cannot mark yt-dlp executable" + ); + case 406760092: + return var0; + case 497003903: + if (!var0.toFile().setExecutable((boolean)((((-2099478743 ^ 2099478744) + ((-2099478743 & 2099478744) << 1))) != 0))) { + var1 = -1484632588; + } else { + var1 = 406760092; + } + break; + case 1583539959: + default: + if (!Files.isExecutable(var0)) { + var1 = 497003903; + } else { + var1 = 406760092; + } + } + } + } + + private static String assetName() { + String var0 = null; + String var1 = null; + int var2 = 0; + int var4 = 0; + String var5 = null; + String var6 = null; + int var3 = 601053527; + + while (true) { + switch (var3) { + case -1996410926: + if (var0.contains("mac")) { + var3 = 1383074577; + } else { + var3 = 1738119738; + } + break; + case -701938525: + var6 = "yt-dlp_linux_aarch64"; + var3 = 1394439252; + break; + case -418819077: + if (var2 != 0) { + var3 = 1442559529; + } else { + var3 = 296777904; + } + break; + case -182047957: + if (var1.equals("arm64")) { + var3 = 448292649; + } else { + var3 = -64142554; + } + break; + case -64142554: + var4 = 0; + var3 = 805845577; + break; + case 239065172: + var6 = "yt-dlp_linux"; + var3 = 1394439252; + break; + case 296777904: + var5 = "yt-dlp.exe"; + var3 = 1248368124; + break; + case 448292649: + var4 = 1; + var3 = 805845577; + break; + case 601053527: + default: + var0 = System.getProperty("os.name", "").toLowerCase(Locale.ROOT); + var1 = System.getProperty("os.arch", "") + .toLowerCase(Locale.ROOT); + if (!var1.equals("aarch64")) { + var3 = -182047957; + } else { + var3 = 448292649; + } + break; + case 805845577: + var2 = var4; + if (var0.contains("win")) { + var3 = -418819077; + } else { + var3 = -1996410926; + } + break; + case 1248368124: + return var5; + case 1383074577: + return "yt-dlp_macos"; + case 1394439252: + return var6; + case 1442559529: + var5 = "yt-dlp_arm64.exe"; + var3 = 1248368124; + break; + case 1738119738: + if (var2 != 0) { + var3 = -701938525; + } else { + var3 = 239065172; + } + } + } + } +} diff --git a/src/main/java/defpackage/aom.java b/src/main/java/defpackage/aom.java new file mode 100644 index 0000000..0489626 --- /dev/null +++ b/src/main/java/defpackage/aom.java @@ -0,0 +1,4 @@ +package defpackage; + +public record aom(String label, asu color, int rgb) { +} diff --git a/src/main/java/defpackage/aon.java b/src/main/java/defpackage/aon.java new file mode 100644 index 0000000..9be5b72 --- /dev/null +++ b/src/main/java/defpackage/aon.java @@ -0,0 +1,6 @@ +package defpackage; + +import java.util.Map; + +record aon(Map rankings, long refreshAt) { +} diff --git a/src/main/java/defpackage/aoo.java b/src/main/java/defpackage/aoo.java new file mode 100644 index 0000000..10f7b8a --- /dev/null +++ b/src/main/java/defpackage/aoo.java @@ -0,0 +1,4 @@ +package defpackage; + +public record aoo(String id, String label) { +} diff --git a/src/main/java/defpackage/aop.java b/src/main/java/defpackage/aop.java new file mode 100644 index 0000000..5bed715 --- /dev/null +++ b/src/main/java/defpackage/aop.java @@ -0,0 +1,41 @@ +package defpackage; + +public record aop(String modeId, int tier, int position, boolean retired, int peakTier, int peakPosition) { + public int weight() { + return this.tier * ((-1301839750 | 1301839752) + (-1301839750 & 1301839752)) + this.position; + } + + public boolean hasPeak() { + int var2 = 0; + int var1 = 1313033238; + + while (true) { + switch (var1) { + case -1023767383: + return (boolean)((var2) != 0); + case -193494053: + var2 = 0; + var1 = -1023767383; + break; + case -28746671: + var2 = 1; + var1 = -1023767383; + break; + case 1313033238: + default: + if (this.peakTier >= (800055845 | -800055844) + (800055845 & -800055844)) { + var1 = 1452568841; + } else { + var1 = -193494053; + } + break; + case 1452568841: + if (this.peakPosition >= 0) { + var1 = -28746671; + } else { + var1 = -193494053; + } + } + } + } +} diff --git a/src/main/java/defpackage/aoq.java b/src/main/java/defpackage/aoq.java new file mode 100644 index 0000000..1a05bd9 --- /dev/null +++ b/src/main/java/defpackage/aoq.java @@ -0,0 +1,745 @@ +package defpackage; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.HttpResponse.BodyHandlers; +import java.time.Duration; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicInteger; +import net.minecraft.util.Mth; + +public final class aoq { + public static final String HIGHEST_LABEL = "Highest"; + private static final String ENDPOINT_FORMAT = "https://mctiers.com/api/v2/profile/%s/rankings"; + private static final String USER_AGENT_HEADER = "User-Agent"; + private static final String USER_AGENT = "EvoVisuals"; + private static final String KEY_TIER = "tier"; + private static final String KEY_POSITION = "pos"; + private static final String KEY_PEAK_TIER = "peak_tier"; + private static final String KEY_PEAK_POSITION = "peak_pos"; + private static final String KEY_RETIRED = "retired"; + private static final String HIGH_PREFIX = "H"; + private static final String LOW_PREFIX = "L"; + private static final String TIER_PREFIX = "T"; + private static final String RETIRED_PREFIX = "R"; + private static final String EMPTY_PREFIX = ""; + private static final int MIN_TIER = 1; + private static final int MAX_TIER = 9; + private static final int POSITION_COUNT = 2; + private static final int HIGH_POSITION = 0; + private static final int RGB_MASK = 16777215; + private static final int BYTE_MASK = 255; + private static final int RED_SHIFT = 16; + private static final int GREEN_SHIFT = 8; + private static final int[][] TIER_COLORS; + private static final int RETIRED_COLOR = 10671871; + private static final aom[][] ACTIVE_BADGES = new aom[9][2]; + private static final aom[][] RETIRED_BADGES = new aom[9][2]; + private static final List MODES = List.of( + new aoo("vanilla", "Vanilla"), + new aoo( + "sword", + "Sword" + ), + new aoo("axe", "Axe"), + new aoo("pot", "Pot"), + new aoo( + "nethop", + "NethPot" + ), + new aoo("smp", "SMP"), + new aoo("uhc", "UHC"), + new aoo( + "mace", + "Mace" + ) + ); + private static final int PREMIUM_UUID_VERSION = 4; + private static final int STATUS_OK = 200; + private static final int STATUS_NOT_FOUND = 404; + private static final int MAX_CONCURRENT_REQUESTS = 4; + private static final int MAX_CACHE_ENTRIES = 512; + private static final long SUCCESS_TTL_MS = 900000L; + private static final long MISSING_TTL_MS = 1800000L; + private static final long FAILURE_RETRY_MS = 120000L; + private static final Duration CONNECT_TIMEOUT = Duration.ofSeconds( + (-7637893941085835007L | 7637893941085835017L) + (-7637893941085835007L & 7637893941085835017L) + ); + private static final Duration REQUEST_TIMEOUT = Duration.ofSeconds( + (7082596285357094224L ^ -7082596285357094209L) + ((7082596285357094224L & -7082596285357094209L) << 1) + ); + private static final String REQUEST_FAILURE = "tier lookup request failed: {}"; + private static final String STATUS_FAILURE = "tier lookup rejected with status {}"; + private static final String RESPONSE_FAILURE = "tier lookup response parse failed"; + private static final HttpClient HTTP = HttpClient.newBuilder().connectTimeout(CONNECT_TIMEOUT).build(); + private static final Map CACHE = new ConcurrentHashMap<>(); + private static final Set IN_FLIGHT = ConcurrentHashMap.newKeySet(); + private static final AtomicInteger ACTIVE_REQUESTS = new AtomicInteger(); + + private aoq() { + } + + public static String[] modeLabels() { + String[] var0 = null; + int var1 = 0; + int var2 = -1447290017; + + while (true) { + switch (var2) { + case -1664654682: + var0[MODES.size()] = "Highest"; + return var0; + case -1447290017: + default: + var0 = new String[MODES.size() + 1]; + var1 = 0; + var2 = 1667798224; + break; + case 1127052372: + var0[var1] = MODES.get(var1).label(); + var1++; + var2 = 1667798224; + break; + case 1667798224: + if (var1 < MODES.size()) { + var2 = 1127052372; + } else { + var2 = -1664654682; + } + } + } + } + + public static String modeIdOf(String var0) { + Iterator var1 = null; + aoo var2 = null; + int var3 = 1278218772; + + while (true) { + switch (var3) { + case -1679906877: + return var2.id(); + case -861830634: + var2 = (aoo)var1.next(); + if (var2.label().equals(var0)) { + var3 = -1679906877; + } else { + var3 = 146615413; + } + break; + case -728965095: + return null; + case -15400237: + if (var1.hasNext()) { + var3 = -861830634; + } else { + var3 = -728965095; + } + break; + case 146615413: + var3 = -15400237; + break; + case 1278218772: + default: + var1 = MODES.iterator(); + var3 = -15400237; + } + } + } + + public static aop lookup(UUID var0, String var1, boolean var2) { + aon var3 = null; + Map var4 = null; + aop var5 = null; + Map var7 = null; + int var6 = 1648009758; + + while (true) { + switch (var6) { + case -1962748676: + var4 = var7; + if (var4 != null) { + var6 = -76290881; + } else { + var6 = 1023445733; + } + break; + case -1869557307: + if (System.currentTimeMillis() >= var3.refreshAt()) { + var6 = 810396996; + } else { + var6 = 1835416902; + } + break; + case -1732551510: + var7 = var3.rankings(); + var6 = -1962748676; + break; + case -1639554525: + return highest(var4); + case -1596726344: + var3 = CACHE.get(var0); + if (var3 != null) { + var6 = -1869557307; + } else { + var6 = 810396996; + } + break; + case -491247383: + return null; + case -395615565: + var7 = null; + var6 = -1962748676; + break; + case -76290881: + if (var4.isEmpty()) { + var6 = 1023445733; + } else { + var6 = 1409908603; + } + break; + case 624455807: + return var5; + case 810396996: + request(var0); + var6 = 1835416902; + break; + case 1023445733: + return null; + case 1409908603: + if (var1 != null) { + var6 = 1664039532; + } else { + var6 = -1639554525; + } + break; + case 1635468966: + return null; + case 1648009758: + default: + if (var0 != null) { + var6 = 2085752620; + } else { + var6 = 1635468966; + } + break; + case 1664039532: + var5 = (aop)var4.get(var1); + if (var5 != null) { + var6 = 624455807; + } else { + var6 = 1823649833; + } + break; + case 1823649833: + if (!var2) { + var6 = -491247383; + } else { + var6 = -1639554525; + } + break; + case 1835416902: + if (var3 == null) { + var6 = -395615565; + } else { + var6 = -1732551510; + } + break; + case 2085752620: + if (var0.version() != (506677812 | -506677808) + (506677812 & -506677808)) { + var6 = 1635468966; + } else { + var6 = -1596726344; + } + } + } + } + + public static aom badgeOf(aop var0) { + int var1 = 1223071961; + + while (true) { + switch (var1) { + case -1774110515: + if (var0.hasPeak()) { + var1 = 2102144226; + } else { + var1 = 17402274; + } + break; + case -472209249: + if (var0.retired()) { + var1 = -1774110515; + } else { + var1 = 17402274; + } + break; + case -333720293: + return null; + case 17402274: + return badge(ACTIVE_BADGES, var0.tier(), var0.position()); + case 1223071961: + default: + if (var0 == null) { + var1 = -333720293; + } else { + var1 = -472209249; + } + break; + case 2102144226: + return badge(RETIRED_BADGES, var0.peakTier(), var0.peakPosition()); + } + } + } + + public static void clear() { + CACHE.clear(); + } + + private static aop highest(Map var0) { + aop var1 = null; + Iterator var2 = null; + aop var3 = null; + int var4 = -372611033; + + while (true) { + switch (var4) { + case -1771776084: + var4 = 20708422; + break; + case -372611033: + default: + var1 = null; + var2 = var0.values().iterator(); + var4 = 20708422; + break; + case -318398651: + if (var3.weight() < var1.weight()) { + var4 = 1257458220; + } else { + var4 = -1771776084; + } + break; + case 20708422: + if (var2.hasNext()) { + var4 = 1884280196; + } else { + var4 = 478491998; + } + break; + case 478491998: + return var1; + case 1257458220: + var1 = var3; + var4 = -1771776084; + break; + case 1884280196: + var3 = (aop)var2.next(); + if (var1 != null) { + var4 = -318398651; + } else { + var4 = 1257458220; + } + } + } + } + + private static aom badge(aom[][] var0, int var1, int var2) { + int var3 = Mth.clamp(var1, 1, (333079266 | -333079257) + (333079266 & -333079257)) + - ((281728289 ^ -281728288) + ((281728289 & -281728288) << 1)); + int var4 = Mth.clamp(var2, 0, (-1866086368 ^ 1866086369) + ((-1866086368 & 1866086369) << 1)); + return var0[var3][var4]; + } + + private static aom createBadge(String var0, int var1, int var2, int var3) { + String var4 = var0 + + ( + var2 == 0 + ? "H" + : "L" + ) + + "T" + + var1; + asu var5 = new asu( + var3 >> 16, + var3 >> 8, + var3 & (1128089961 ^ -1128089706) + ((1128089961 & -1128089706) << 1) + ); + return new aom(var4, var5, var3 & (128242011 ^ -111464796) + ((128242011 & -111464796) << 1)); + } + + private static void request(UUID var0) { + HttpRequest var1 = null; + int var2 = -419361584; + + while (true) { + switch (var2) { + case -1996011380: + ACTIVE_REQUESTS.incrementAndGet(); + String var10000 = "https://mctiers.com/api/v2/profile/%s/rankings"; + Object[] var10001 = new Object[1]; + var10001[0] = var0; + var1 = HttpRequest.newBuilder(URI.create(var10000.formatted(var10001))) + .timeout(REQUEST_TIMEOUT) + .header( + "User-Agent", + "EvoVisuals" + ) + .GET() + .build(); + HTTP.sendAsync(var1, BodyHandlers.ofString()).whenComplete((var1x, var2x) -> complete(var0, (HttpResponse)var1x, var2x)); + return; + case -1620549079: + return; + case -1356691990: + if (!IN_FLIGHT.add(var0)) { + var2 = -1620549079; + } else { + var2 = -1996011380; + } + break; + case -419361584: + default: + if (ACTIVE_REQUESTS.get() < (-1737221086 | 1737221090) + (-1737221086 & 1737221090)) { + var2 = -1356691990; + } else { + var2 = -1620549079; + } + } + } + } + + private static void complete(UUID var0, HttpResponse var1, Throwable var2) { + try { + long var3 = System.currentTimeMillis(); + if (var2 != null) { + store(var0, new aon(staleOf(var0), var3 + (6839635380189053082L | -6839635380188933082L) + (6839635380189053082L & -6839635380188933082L))); + id.warn(Cif.NETWORK, "tier lookup request failed: {}", var2.toString()); + return; + } + + if (var1.statusCode() == (1498177090 | -1498176686) + (1498177090 & -1498176686)) { + store(var0, new aon(Map.of(), var3 + (5603143200207637866L ^ -5603143200205837866L) + ((5603143200207637866L & -5603143200205837866L) << 1))); + return; + } + + if (var1.statusCode() == (-74162626 ^ 74162826) + ((-74162626 & 74162826) << 1)) { + store( + var0, + new aon( + parse((String)var1.body()), var3 + (3154242412961882477L ^ -3154242412960982477L) + ((3154242412961882477L & -3154242412960982477L) << 1) + ) + ); + return; + } + + store(var0, new aon(staleOf(var0), var3 + (354684955635068715L ^ -354684955634948715L) + ((354684955635068715L & -354684955634948715L) << 1))); + id.warn( + Cif.NETWORK, + "tier lookup rejected with status {}", + var1.statusCode() + ); + } catch (Exception var8) { + store( + var0, new aon(staleOf(var0), System.currentTimeMillis() + (-72168209964467593L | 72168209964587593L) + (-72168209964467593L & 72168209964587593L)) + ); + id.warn( + Cif.NETWORK, + "tier lookup response parse failed", + var8 + ); + return; + } finally { + IN_FLIGHT.remove(var0); + ACTIVE_REQUESTS.decrementAndGet(); + } + } + + private static Map staleOf(UUID var0) { + aon var1 = null; + Map var3 = null; + int var2 = 1115921919; + + while (true) { + switch (var2) { + case -2016411356: + var3 = var1.rankings(); + var2 = 1754296584; + break; + case 557128435: + var3 = null; + var2 = 1754296584; + break; + case 1115921919: + default: + var1 = CACHE.get(var0); + if (var1 == null) { + var2 = 557128435; + } else { + var2 = -2016411356; + } + break; + case 1754296584: + return var3; + } + } + } + + private static void store(UUID var0, aon var1) { + int var2 = -999447881; + + while (true) { + switch (var2) { + case -999447881: + default: + if (CACHE.size() >= (510730565 | -510730053) + (510730565 & -510730053)) { + var2 = 570931023; + } else { + var2 = 1631185386; + } + break; + case 570931023: + CACHE.clear(); + var2 = 1631185386; + break; + case 1631185386: + CACHE.put(var0, var1); + return; + } + } + } + + private static Map parse(String var0) { + JsonElement var1 = null; + HashMap var2 = null; + Iterator var3 = null; + Map.Entry var4 = null; + JsonObject var5 = null; + int var6 = 0; + int var7 = -35794883; + + while (true) { + switch (var7) { + case -2075990305: + var7 = 1185527260; + break; + case -1999180512: + return Map.of(); + case -1761965348: + var2 = new HashMap(); + var3 = var1.getAsJsonObject().entrySet().iterator(); + var7 = 1185527260; + break; + case -1464587397: + if (var6 > (1104083837 ^ -1104083828) + ((1104083837 & -1104083828) << 1)) { + var7 = -160126553; + } else { + var7 = 833029915; + } + break; + case -731827230: + var5 = ((JsonElement)var4.getValue()).getAsJsonObject(); + var6 = intOf( + var5, "tier", (2055532242 ^ -2055532242) + ((2055532242 & -2055532242) << 1) + ); + if (var6 >= (-1279936939 ^ 1279936940) + ((-1279936939 & 1279936940) << 1)) { + var7 = -1464587397; + } else { + var7 = 1185527260; + } + break; + case -160126553: + var7 = 1185527260; + break; + case -35794883: + default: + var1 = JsonParser.parseString(var0); + if (!var1.isJsonObject()) { + var7 = -1999180512; + } else { + var7 = -1761965348; + } + break; + case 833029915: + var2.put( + (String)var4.getKey(), + new aop( + (String)var4.getKey(), + var6, + intOf( + var5, + "pos", + (-2096475172 | 2096475172) + (-2096475172 & 2096475172) + ), + booleanOf(var5, "retired"), + intOf( + var5, + "peak_tier", + (1729924585 ^ -1729924585) + ((1729924585 & -1729924585) << 1) + ), + intOf( + var5, + "peak_pos", + (487512426 | -487512426) + (487512426 & -487512426) + ) + ) + ); + var7 = 1185527260; + break; + case 1099998660: + return Map.copyOf(var2); + case 1185527260: + if (var3.hasNext()) { + var7 = 1463101566; + } else { + var7 = 1099998660; + } + break; + case 1463101566: + var4 = (Map.Entry)var3.next(); + if (!((JsonElement)var4.getValue()).isJsonObject()) { + var7 = -2075990305; + } else { + var7 = -731827230; + } + } + } + } + + private static int intOf(JsonObject var0, String var1, int var2) { + JsonElement var3 = null; + int var4 = 409151808; + + while (true) { + switch (var4) { + case -1439254797: + return var3.getAsInt(); + case -856360611: + if (var3.isJsonPrimitive()) { + var4 = 1002010552; + } else { + var4 = -506454278; + } + break; + case -506454278: + return var2; + case 409151808: + default: + var3 = var0.get(var1); + if (var3 != null) { + var4 = -856360611; + } else { + var4 = -506454278; + } + break; + case 1002010552: + if (!var3.getAsJsonPrimitive().isNumber()) { + var4 = -506454278; + } else { + var4 = -1439254797; + } + } + } + } + + private static boolean booleanOf(JsonObject var0, String var1) { + JsonElement var2 = null; + int var4 = 0; + int var3 = 1338292154; + + while (true) { + switch (var3) { + case -1447160041: + var4 = 1; + var3 = -397907314; + break; + case -1262641991: + if (var2.getAsJsonPrimitive().isBoolean()) { + var3 = -1071736129; + } else { + var3 = 2031701727; + } + break; + case -1071736129: + if (var2.getAsBoolean()) { + var3 = -1447160041; + } else { + var3 = 2031701727; + } + break; + case -397907314: + return (boolean)((var4) != 0); + case 1338292154: + default: + var2 = var0.get(var1); + if (var2 != null) { + var3 = 1616471235; + } else { + var3 = 2031701727; + } + break; + case 1616471235: + if (var2.isJsonPrimitive()) { + var3 = -1262641991; + } else { + var3 = 2031701727; + } + break; + case 2031701727: + var4 = 0; + var3 = -397907314; + } + } + } + + static { + int[][] var10000 = new int[5][]; + int var10002 = 0; + int[] var10003 = new int[2]; + var10003[0] = 15252026; + var10003[1] = 14005077; + var10000[var10002] = var10003; + var10002 = 1; + var10003 = new int[2]; + var10003[0] = 12899303; + var10003[1] = 10528690; + var10000[var10002] = var10003; + var10002 = 2; + var10003 = new int[2]; + var10003[0] = 16293722; + var10003[1] = 13007682; + var10000[var10002] = var10003; + var10002 = 3; + var10003 = new int[2]; + var10003[0] = 8483994; + var10003[1] = 6642553; + var10000[var10002] = var10003; + var10002 = 4; + var10003 = new int[2]; + var10003[0] = 9405096; + var10003[1] = 6642553; + var10000[var10002] = var10003; + TIER_COLORS = var10000; + + for (int var0 = 1; var0 <= 9; var0++) { + for (int var1 = 0; var1 < 2; var1++) { + int var2 = Math.min(var0, TIER_COLORS.length) - (1); + ACTIVE_BADGES[var0 - (1)][var1] = createBadge("", var0, var1, TIER_COLORS[var2][var1]); + RETIRED_BADGES[var0 - (1)][var1] = createBadge( + "R", var0, var1, (592591183 | -581919312) + (592591183 & -581919312) + ); + } + } + } +} diff --git a/src/main/java/defpackage/aor.java b/src/main/java/defpackage/aor.java new file mode 100644 index 0000000..522b4f8 --- /dev/null +++ b/src/main/java/defpackage/aor.java @@ -0,0 +1,118 @@ +package defpackage; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +public final class aor { + private static final long PACK_POLL_INTERVAL_MILLIS = 200L; + private static Boolean available; + private static Object apiInstance; + private static Method isShaderPackInUse; + private static Method isRenderingShadowPass; + private static Boolean handReflectAvailable; + private static Object handRendererInstance; + private static Field renderingSolidField; + private static long packPollTimestamp; + private static boolean packInUse; + + private aor() { + } + + public static boolean shaderPackInUse() { + long var0 = (-4661941568864651049L | 4661941568864651049L) + (-4661941568864651049L & 4661941568864651049L); + int var2 = 1179262318; + + while (true) { + switch (var2) { + case 269345843: + return packInUse; + case 370755351: + packPollTimestamp = var0; + packInUse = queryShaderPackInUse(); + return packInUse; + case 1179262318: + } + + var0 = System.currentTimeMillis(); + if (var0 - packPollTimestamp < (-3232540238752298870L ^ 3232540238752299070L) + ((-3232540238752298870L & 3232540238752299070L) << 1)) { + var2 = 269345843; + } else { + var2 = 370755351; + } + } + } + + private static boolean queryShaderPackInUse() { + if (available == null) { + init(); + } + + if (!available) { + return (boolean)(((0)) != 0); + } + + try { + return (boolean)(((isShaderPackInUse.invoke(apiInstance) instanceof Boolean var1 && var1 + ? 1: (-32052018 | 32052018) + (-32052018 & 32052018))) != 0); + } catch (Throwable var2) { + available = Boolean.valueOf((boolean)((((-2109774231 | 2109774231) + (-2109774231 & 2109774231))) != 0)); + return (boolean)(((0)) != 0); + } + } + + public static boolean renderingShadowPass() { + if (available == null) { + init(); + } + + if (!available) { + return (boolean)(((0)) != 0); + } + + try { + return (boolean)(((isRenderingShadowPass.invoke(apiInstance) instanceof Boolean var1 && var1 + ? 1: (645453802 | -645453802) + (645453802 & -645453802))) != 0); + } catch (Throwable var2) { + available = Boolean.valueOf((boolean)((((1877093026 | -1877093026) + (1877093026 & -1877093026))) != 0)); + return (boolean)(((0)) != 0); + } + } + + private static void init() { + try { + Class var0 = Class.forName("net.irisshaders.iris.api.v0.IrisApi"); + apiInstance = var0.getMethod("getInstance").invoke(null); + isShaderPackInUse = var0.getMethod("isShaderPackInUse"); + isRenderingShadowPass = var0.getMethod("isRenderingShadowPass"); + available = Boolean.valueOf((boolean)((((1367649034 | -1367649033) + (1367649034 & -1367649033))) != 0)); + } catch (Throwable var1) { + available = Boolean.valueOf((boolean)((((-214507845 ^ 214507845) + ((-214507845 & 214507845) << 1))) != 0)); + } + } + + public static void setHandRenderingSolid(boolean var0) { + if (handReflectAvailable == null) { + initHandReflect(); + } + + if (handReflectAvailable) { + try { + renderingSolidField.setBoolean(handRendererInstance, var0); + } catch (Throwable var2) { + handReflectAvailable = Boolean.valueOf((boolean)((((1596226133 ^ -1596226133) + ((1596226133 & -1596226133) << 1))) != 0)); + } + } + } + + private static void initHandReflect() { + try { + Class var0 = Class.forName("net.irisshaders.iris.pathways.HandRenderer"); + handRendererInstance = var0.getField("INSTANCE").get(null); + renderingSolidField = var0.getDeclaredField("renderingSolid"); + renderingSolidField.setAccessible((boolean)((((1882181674 | -1882181673) + (1882181674 & -1882181673))) != 0)); + handReflectAvailable = Boolean.valueOf((boolean)((((692786425 | -692786424) + (692786425 & -692786424))) != 0)); + } catch (Throwable var1) { + handReflectAvailable = Boolean.valueOf((boolean)((((1047881643 | -1047881643) + (1047881643 & -1047881643))) != 0)); + } + } +} diff --git a/src/main/java/defpackage/aos.java b/src/main/java/defpackage/aos.java new file mode 100644 index 0000000..62c343f --- /dev/null +++ b/src/main/java/defpackage/aos.java @@ -0,0 +1,233 @@ +package defpackage; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +public final class aos { + private static final String PACKET_CLASS = "com.replaymod.replaystudio.protocol.Packet"; + private static final String READER_CLASS = "com.replaymod.replaystudio.protocol.Packet$Reader"; + private static final String PROTOCOL_VERSION_CLASS = "com.replaymod.replaystudio.lib.viaversion.api.protocol.version.ProtocolVersion"; + private static final String MODERN_VERSION_FIELD = "v26_2"; + private static final String AT_LEAST_METHOD = "atLeast"; + private static final String READ_TEXT_METHOD = "readText"; + private static final String READ_VAR_INT_METHOD = "readVarInt"; + private static final String READ_BOOLEAN_METHOD = "readBoolean"; + private static final String READ_BYTE_METHOD = "readByte"; + private static final int COMPONENT_FIELDS = 3; + private static final int ENUM_FIELDS = 2; + private static final String LOOKUP_FAILURE = "Cannot reach {}, replay team packets keep the upstream field order"; + private static final String VERSION_FAILURE = "Cannot read the protocol version of {}, leaving the team packet alone"; + private static final String TAKEOVER = "Replay team packets now parsed with the {} field order"; + private static final Method AT_LEAST; + private static final Method READ_TEXT; + private static final Method READ_VAR_INT; + private static final Method READ_BOOLEAN; + private static final Method READ_BYTE; + private static final Object MODERN_VERSION; + private static final boolean AVAILABLE; + private static volatile boolean announced; + + private aos() { + } + + public static boolean skipParameters(Object var0, Object var1) throws IOException { + int var2 = 0; + int var3 = 1034597764; + + while (true) { + switch (var3) { + case -1882100243: + if (var1 != null) { + var3 = -51376904; + } else { + var3 = -217271307; + } + break; + case -1701334695: + read(READ_VAR_INT, var1); + var2++; + var3 = -1313568650; + break; + case -1313568650: + if (var2 < (-1591006796 | 1591006798) + (-1591006796 & 1591006798)) { + var3 = -1701334695; + } else { + var3 = 1080253066; + } + break; + case -217271307: + return (boolean)(((0)) != 0); + case -137740854: + read(READ_BYTE, var1); + announce(); + return (boolean)(((1)) != 0); + case -51376904: + if (!isModern(var0)) { + var3 = -217271307; + } else { + var3 = 1494223459; + } + break; + case 457492586: + var2 = 0; + var3 = -1313568650; + break; + case 468033878: + read(READ_VAR_INT, var1); + var3 = -137740854; + break; + case 1034597764: + default: + if (AVAILABLE) { + var3 = -1882100243; + } else { + var3 = -217271307; + } + break; + case 1080253066: + if ((Boolean)read(READ_BOOLEAN, var1)) { + var3 = 468033878; + } else { + var3 = -137740854; + } + break; + case 1448533919: + if (var2 < (524588257 | -524588254) + (524588257 & -524588254)) { + var3 = 1591478284; + } else { + var3 = 457492586; + } + break; + case 1494223459: + var2 = 0; + var3 = 1448533919; + break; + case 1591478284: + read(READ_TEXT, var1); + var2++; + var3 = 1448533919; + } + } + } + + private static boolean isModern(Object var0) { + if (var0 == null) { + return (boolean)(((0)) != 0); + } + + try { + Method var10000 = AT_LEAST; + Object[] var10002 = new Object[1]; + var10002[0] = MODERN_VERSION; + return (Boolean)var10000.invoke(var0, var10002); + } catch (ReflectiveOperationException | RuntimeException var2) { + id.warn( + Cif.COMPAT, + "Cannot read the protocol version of {}, leaving the team packet alone", + "com.replaymod.replaystudio.protocol.Packet", + var2 + ); + return (boolean)(((0)) != 0); + } + } + + private static Object read(Method var0, Object var1) throws IOException { + try { + return var0.invoke(var1); + } catch (IllegalAccessException var5) { + throw new IOException(var5); + } catch (InvocationTargetException var6) { + Throwable var3 = var6.getCause(); + if (var3 instanceof IOException var8) { + throw var8; + } else if (var3 instanceof RuntimeException var7) { + throw var7; + } else if (var3 instanceof Error var4) { + throw var4; + } else { + throw new IOException(var3); + } + } + } + + private static void announce() { + int var0 = -666816857; + + while (true) { + switch (var0) { + case -666816857: + default: + if (announced) { + var0 = 249323606; + } else { + var0 = 2066264740; + } + break; + case 249323606: + return; + case 2066264740: + announced = (boolean)(((1)) != 0); + id.info( + Cif.COMPAT, + "Replay team packets now parsed with the {} field order", + MODERN_VERSION + ); + return; + } + } + } + + static { + Method var0 = null; + Method var1 = null; + Method var2 = null; + Method var3 = null; + Method var4 = null; + Object var5 = null; + + try { + ClassLoader var6 = aos.class.getClassLoader(); + Class var7 = Class.forName( + "com.replaymod.replaystudio.lib.viaversion.api.protocol.version.ProtocolVersion", + (boolean)(((0)) != 0), + var6 + ); + Class var8 = Class.forName( + "com.replaymod.replaystudio.protocol.Packet", + (boolean)(((0)) != 0), + var6 + ); + Class var9 = Class.forName( + "com.replaymod.replaystudio.protocol.Packet$Reader", + (boolean)(((0)) != 0), + var6 + ); + String var10001 = "atLeast"; + Class[] var10002 = new Class[1]; + var10002[0] = var7; + var0 = var8.getMethod(var10001, var10002); + var1 = var9.getMethod("readText"); + var2 = var9.getMethod("readVarInt"); + var3 = var9.getMethod("readBoolean"); + var4 = var9.getMethod("readByte"); + var5 = var7.getField("v26_2").get(null); + } catch (ReflectiveOperationException | RuntimeException | LinkageError var10) { + id.warn( + Cif.COMPAT, + "Cannot reach {}, replay team packets keep the upstream field order", + "com.replaymod.replaystudio.protocol.Packet", + var10 + ); + } + + AT_LEAST = var0; + READ_TEXT = var1; + READ_VAR_INT = var2; + READ_BOOLEAN = var3; + READ_BYTE = var4; + MODERN_VERSION = var5; + AVAILABLE = (boolean)(((var0 != null && var1 != null && var2 != null && var3 != null && var4 != null && var5 != null + ? 1: (438818742 ^ -438818742) + ((438818742 & -438818742) << 1))) != 0); + } +} diff --git a/src/main/java/defpackage/aot.java b/src/main/java/defpackage/aot.java new file mode 100644 index 0000000..d949e8f --- /dev/null +++ b/src/main/java/defpackage/aot.java @@ -0,0 +1,57 @@ +package defpackage; + +import com.viaversion.viafabricplus.ViaFabricPlus; +import com.viaversion.viafabricplus.api.ViaFabricPlusAPI; +import com.viaversion.viafabricplus.api.entrypoint.ViaFabricPlusEntrypoint; +import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslationImpl; +import com.viaversion.viafabricplus.protocoltranslator.util.ProtocolVersionDetector; +import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; +import net.minecraft.client.Minecraft; + +public final class aot implements ViaFabricPlusEntrypoint { + private static final String DEFAULT_VERSION_ACTION = "viafabricplus default protocol version"; + + public void onPostGameLoading() { + Minecraft.getInstance() + .execute( + () -> id.run( + Cif.COMPAT, + "viafabricplus default protocol version", + aot::applyDefaultTargetVersion + ) + ); + } + + private static void applyDefaultTargetVersion() { + ViaFabricPlusAPI var0 = null; + ProtocolVersion var1 = null; + int var2 = -1396203826; + + while (true) { + switch (var2) { + case -1449307509: + return; + case -1396203826: + default: + var0 = ViaFabricPlus.api(); + var1 = var0.targetVersion(); + if (var1 != null) { + var2 = 1557172856; + } else { + var2 = 1139767340; + } + break; + case 1139767340: + var0.setTargetVersion(ProtocolVersionDetector.AUTO_DETECT_VERSION); + var2 = -1449307509; + break; + case 1557172856: + if (ProtocolTranslationImpl.NATIVE_VERSION.equals(var1)) { + var2 = 1139767340; + } else { + var2 = -1449307509; + } + } + } + } +} diff --git a/src/main/java/defpackage/aou.java b/src/main/java/defpackage/aou.java new file mode 100644 index 0000000..83318c1 --- /dev/null +++ b/src/main/java/defpackage/aou.java @@ -0,0 +1,179 @@ +package defpackage; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Optional; +import net.fabricmc.loader.api.FabricLoader; +import net.fabricmc.loader.api.ModContainer; + +public final class aou { + private static final String ASSET_ROOT = "assets/viaversion"; + private static final String REPLAY_MOD_ID = "replaymod"; + private static final String VIA_VERSION_MOD_ID = "com_viaversion_viaversion-common"; + private static final int CONFLICT_THRESHOLD = 2; + private static final String ISOLATED = "{} mods ship {}, pinning each Via copy to its own jar"; + private static final String READ_FAILURE = "Failed to read pinned Via resource {}"; + private static final ModContainer REPLAY_MOD; + private static final ModContainer VIA_VERSION; + + private aou() { + } + + public static InputStream fromReplayMod(String var0) { + return open(REPLAY_MOD, var0); + } + + public static InputStream fromViaVersion(String var0) { + return open(VIA_VERSION, var0); + } + + private static InputStream open(ModContainer var0, String var1) { + if (var0 != null && var1 != null) { + Optional var2 = var0.findPath(var1); + if (var2.isEmpty()) { + return null; + } + + try { + return Files.newInputStream((Path)var2.get()); + } catch (IOException var4) { + id.warn( + Cif.COMPAT, + "Failed to read pinned Via resource {}", + var1, + var4 + ); + return null; + } + } else { + return null; + } + } + + private static ModContainer byId(List var0, String var1) { + Iterator var2 = null; + ModContainer var3 = null; + int var4 = 762165805; + + while (true) { + switch (var4) { + case -2120382010: + var4 = -1697084273; + break; + case -1697084273: + if (var2.hasNext()) { + var4 = 1627712212; + } else { + var4 = 403473694; + } + break; + case -392038304: + return var3; + case 403473694: + return null; + case 762165805: + default: + var2 = var0.iterator(); + var4 = -1697084273; + break; + case 1627712212: + var3 = (ModContainer)var2.next(); + if (var3.getMetadata().getId().equals(var1)) { + var4 = -392038304; + } else { + var4 = -2120382010; + } + } + } + } + + private static ModContainer viaVersionOf(List var0, ModContainer var1) { + ModContainer var2 = null; + ModContainer var3 = null; + Iterator var4 = null; + ModContainer var5 = null; + int var6 = -1564100422; + + while (true) { + switch (var6) { + case -2018066208: + var6 = 718431585; + break; + case -1564100422: + default: + var2 = byId(var0, "com_viaversion_viaversion-common"); + if (var2 != null) { + var6 = 1183862141; + } else { + var6 = -69354650; + } + break; + case -1223042259: + return null; + case -1045835817: + if (var3 != null) { + var6 = -1223042259; + } else { + var6 = 453936737; + } + break; + case -109866313: + return var3; + case -69354650: + var3 = null; + var4 = var0.iterator(); + var6 = 718431585; + break; + case 453936737: + var3 = var5; + var6 = 718431585; + break; + case 718431585: + if (var4.hasNext()) { + var6 = 1509894950; + } else { + var6 = -109866313; + } + break; + case 1183862141: + return var2; + case 1509894950: + var5 = (ModContainer)var4.next(); + if (var5 == var1) { + var6 = -2018066208; + } else { + var6 = -1045835817; + } + } + } + } + + static { + ArrayList var0 = new ArrayList(); + + for (ModContainer var2 : FabricLoader.getInstance().getAllMods()) { + if (var2.findPath("assets/viaversion").isPresent()) { + var0.add(var2); + } + } + + if (var0.size() < (-1420629893 ^ 1420629895) + ((-1420629893 & 1420629895) << 1)) { + REPLAY_MOD = null; + VIA_VERSION = null; + } else { + REPLAY_MOD = byId(var0, "replaymod"); + VIA_VERSION = viaVersionOf(var0, REPLAY_MOD); + id.info( + Cif.COMPAT, + "{} mods ship {}, pinning each Via copy to its own jar", + var0.size(), + "assets/viaversion" + ); + } + } +} diff --git a/src/main/java/defpackage/aov.java b/src/main/java/defpackage/aov.java new file mode 100644 index 0000000..83f15a6 --- /dev/null +++ b/src/main/java/defpackage/aov.java @@ -0,0 +1,230 @@ +package defpackage; + +import de.maxhenkel.voicechat.api.Group; +import de.maxhenkel.voicechat.api.VoicechatApi; +import de.maxhenkel.voicechat.api.VoicechatClientApi; +import de.maxhenkel.voicechat.api.VoicechatPlugin; +import de.maxhenkel.voicechat.api.events.ClientEvent; +import de.maxhenkel.voicechat.api.events.ClientReceiveSoundEvent; +import de.maxhenkel.voicechat.api.events.ClientSoundEvent; +import de.maxhenkel.voicechat.api.events.ClientVoicechatConnectionEvent; +import de.maxhenkel.voicechat.api.events.EventRegistration; +import de.maxhenkel.voicechat.api.events.MicrophoneMuteEvent; +import de.maxhenkel.voicechat.api.events.ClientReceiveSoundEvent.EntitySound; +import de.maxhenkel.voicechat.api.events.ClientReceiveSoundEvent.LocationalSound; +import de.maxhenkel.voicechat.api.events.ClientReceiveSoundEvent.StaticSound; +import java.util.UUID; + +public final class aov implements VoicechatPlugin, aow { + private static final String PLUGIN_ID = "evolutiondlc"; + private static final long GROUP_REFRESH_NANOS = 500000000L; + private volatile VoicechatClientApi clientApi; + private volatile String groupName; + private volatile long groupRefreshNanos; + + public String getPluginId() { + return "evolutiondlc"; + } + + public void initialize(VoicechatApi var1) { + VoicechatClientApi var2 = null; + int var3 = -168420290; + + while (true) { + switch (var3) { + case -456633904: + var2 = (VoicechatClientApi)var1; + this.bind(var2); + var3 = 969050132; + break; + case -168420290: + default: + if (var1 instanceof VoicechatClientApi) { + var3 = -456633904; + } else { + var3 = 969050132; + } + break; + case 969050132: + return; + } + } + } + + public void registerEvents(EventRegistration var1) { + var1.registerEvent(ClientVoicechatConnectionEvent.class, this::onConnectionChanged); + var1.registerEvent(MicrophoneMuteEvent.class, this::onClientEvent); + var1.registerEvent(ClientSoundEvent.class, this::onLocalSound); + var1.registerEvent(EntitySound.class, this::onEntitySound); + var1.registerEvent(LocationalSound.class, this::onReceivedSound); + var1.registerEvent(StaticSound.class, this::onReceivedSound); + } + + @Override + public boolean isMuted() { + VoicechatClientApi var1 = this.clientApi; + if (var1 == null) { + return (boolean)(((0)) != 0); + } + + try { + return var1.isMuted(); + } catch (Throwable var3) { + return (boolean)(((0)) != 0); + } + } + + @Override + public boolean isDisabled() { + VoicechatClientApi var1 = this.clientApi; + if (var1 == null) { + return (boolean)(((0)) != 0); + } + + try { + return var1.isDisabled(); + } catch (Throwable var3) { + return (boolean)(((0)) != 0); + } + } + + @Override + public boolean isDisconnected() { + VoicechatClientApi var1 = this.clientApi; + if (var1 == null) { + return (boolean)(((1)) != 0); + } + + try { + return var1.isDisconnected(); + } catch (Throwable var3) { + return (boolean)(((1)) != 0); + } + } + + @Override + public boolean isTalking(UUID var1) { + VoicechatClientApi var2 = this.clientApi; + if (var2 == null) { + return (boolean)(((0)) != 0); + } + + try { + return var2.isTalking(var1); + } catch (Throwable var4) { + return (boolean)(((0)) != 0); + } + } + + @Override + public boolean isWhispering(UUID var1) { + VoicechatClientApi var2 = this.clientApi; + if (var2 == null) { + return (boolean)(((0)) != 0); + } + + try { + return var2.isWhispering(var1); + } catch (Throwable var4) { + return (boolean)(((0)) != 0); + } + } + + @Override + public boolean isPushToTalkPressed() { + VoicechatClientApi var1 = this.clientApi; + if (var1 == null) { + return (boolean)(((0)) != 0); + } + + try { + return var1.isPushToTalkKeyPressed(); + } catch (Throwable var3) { + return (boolean)(((0)) != 0); + } + } + + @Override + public String getGroupName() { + VoicechatClientApi var1 = this.clientApi; + if (var1 == null) { + return null; + } + + long var2 = System.nanoTime(); + if (var2 - this.groupRefreshNanos < (12395843019904315L | -12395842519904315L) + (12395843019904315L & -12395842519904315L)) { + return this.groupName; + } + + this.groupRefreshNanos = var2; + + try { + Group var4 = var1.getGroup(); + this.groupName = var4 == null ? null : var4.getName(); + } catch (Throwable var5) { + this.groupName = null; + } + + return this.groupName; + } + + private void bind(VoicechatClientApi var1) { + this.clientApi = var1; + aox.bindLocalState(this); + } + + private void onConnectionChanged(ClientVoicechatConnectionEvent var1) { + this.onClientEvent(var1); + aox.setConnected(var1.isConnected()); + } + + private void onClientEvent(ClientEvent var1) { + VoicechatClientApi var2 = null; + int var3 = 1586176666; + + while (true) { + switch (var3) { + case 1183831514: + var2 = var1.getVoicechat(); + if (var2 != null) { + var3 = 1616052737; + } else { + var3 = 2065352200; + } + break; + case 1586176666: + default: + if (this.clientApi == null) { + var3 = 1183831514; + } else { + var3 = 2065352200; + } + break; + case 1616052737: + this.bind(var2); + var3 = 2065352200; + break; + case 2065352200: + return; + } + } + } + + private void onLocalSound(ClientSoundEvent var1) { + this.onClientEvent(var1); + aox.setConnected((boolean)((((-1516435257 | 1516435258) + (-1516435257 & 1516435258))) != 0)); + aox.onLocalAudio(var1.getRawAudio(), var1.isWhispering()); + } + + private void onEntitySound(EntitySound var1) { + this.onClientEvent(var1); + aox.setConnected((boolean)((((-1309676896 ^ 1309676897) + ((-1309676896 & 1309676897) << 1))) != 0)); + aox.onReceivedAudio(var1.getEntityId(), var1.getRawAudio(), var1.isWhispering()); + } + + private void onReceivedSound(ClientReceiveSoundEvent var1) { + this.onClientEvent(var1); + aox.setConnected((boolean)((((93792897 ^ -93792896) + ((93792897 & -93792896) << 1))) != 0)); + aox.onReceivedAudio(var1.getId(), var1.getRawAudio(), (boolean)((((2125990857 ^ -2125990857) + ((2125990857 & -2125990857) << 1))) != 0)); + } +} diff --git a/src/main/java/defpackage/aow.java b/src/main/java/defpackage/aow.java new file mode 100644 index 0000000..85868eb --- /dev/null +++ b/src/main/java/defpackage/aow.java @@ -0,0 +1,19 @@ +package defpackage; + +import java.util.UUID; + +public interface aow { + boolean isMuted(); + + boolean isDisabled(); + + boolean isDisconnected(); + + boolean isTalking(UUID var1); + + boolean isWhispering(UUID var1); + + boolean isPushToTalkPressed(); + + String getGroupName(); +} diff --git a/src/main/java/defpackage/aox.java b/src/main/java/defpackage/aox.java new file mode 100644 index 0000000..2aee4c9 --- /dev/null +++ b/src/main/java/defpackage/aox.java @@ -0,0 +1,645 @@ +package defpackage; + +import java.util.List; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArrayList; +import net.fabricmc.loader.api.FabricLoader; + +public final class aox { + public static final String MOD_ID = "voicechat"; + private static final float PCM_FULL_SCALE = 32768.0F; + private static final float SILENCE_FLOOR_DECIBELS = -45.0F; + private static final float MIN_RMS = 1.0E-5F; + private static final float MAX_FRAME_DELTA_SECONDS = 0.1F; + private static final long TRANSMISSION_HOLD_NANOS = 320000000L; + private static final long EVICT_AFTER_NANOS = 4000000000L; + private static final int MAX_TRACKED_SPEAKERS = 64; + private static final ConcurrentHashMap SPEAKERS_BY_ID = new ConcurrentHashMap<>(); + private static final CopyOnWriteArrayList SPEAKERS = new CopyOnWriteArrayList<>(); + private static final aoy LOCAL_SPEAKER = new aoy(null); + private static volatile Boolean modPresent; + private static volatile aow localState; + private static volatile boolean connected; + private static long lastUpdateNanos; + + private aox() { + } + + public static boolean isModPresent() { + Boolean var0 = null; + int var1 = 1413423956; + + while (true) { + switch (var1) { + case -850222016: + return var0; + case 1413423956: + default: + var0 = modPresent; + if (var0 == null) { + var1 = 2137608435; + } else { + var1 = -850222016; + } + break; + case 2137608435: + var0 = FabricLoader.getInstance().isModLoaded("voicechat"); + modPresent = var0; + var1 = -850222016; + } + } + } + + public static boolean isAvailable() { + int var1 = 0; + int var0 = -1453501599; + + while (true) { + switch (var0) { + case -1611502066: + var1 = 1; + var0 = -876849093; + break; + case -1520634296: + if (localState != null) { + var0 = -1611502066; + } else { + var0 = -1477490986; + } + break; + case -1477490986: + var1 = 0; + var0 = -876849093; + break; + case -1453501599: + default: + if (isModPresent()) { + var0 = -1520634296; + } else { + var0 = -1477490986; + } + break; + case -876849093: + return (boolean)((var1) != 0); + } + } + } + + public static boolean isConnected() { + aow var0 = null; + int var2 = 0; + int var1 = 927706809; + + while (true) { + switch (var1) { + case -446009920: + if (!var0.isDisconnected()) { + var1 = 1214555575; + } else { + var1 = 1586422660; + } + break; + case 592379904: + if (var0 != null) { + var1 = -446009920; + } else { + var1 = 1586422660; + } + break; + case 927706809: + default: + var0 = localState; + if (connected) { + var1 = 592379904; + } else { + var1 = 1586422660; + } + break; + case 1214555575: + var2 = 1; + var1 = 1452567582; + break; + case 1452567582: + return (boolean)((var2) != 0); + case 1586422660: + var2 = 0; + var1 = 1452567582; + } + } + } + + public static List getSpeakers() { + return SPEAKERS; + } + + public static aoy getLocalSpeaker() { + return LOCAL_SPEAKER; + } + + public static boolean isLocalMuted() { + aow var0 = null; + int var2 = 0; + int var1 = -320023203; + + while (true) { + switch (var1) { + case -1769997046: + var2 = 1; + var1 = -889521753; + break; + case -889521753: + return (boolean)((var2) != 0); + case -612860884: + var2 = 0; + var1 = -889521753; + break; + case -320023203: + default: + var0 = localState; + if (var0 != null) { + var1 = 1210609218; + } else { + var1 = -612860884; + } + break; + case 1210609218: + if (var0.isMuted()) { + var1 = -1769997046; + } else { + var1 = -612860884; + } + } + } + } + + public static boolean isLocalDisabled() { + aow var0 = null; + int var2 = 0; + int var1 = 1302942552; + + while (true) { + switch (var1) { + case -1218690523: + var2 = 0; + var1 = 1916317715; + break; + case 62970018: + var2 = 1; + var1 = 1916317715; + break; + case 293902692: + if (var0.isDisabled()) { + var1 = 62970018; + } else { + var1 = -1218690523; + } + break; + case 1302942552: + default: + var0 = localState; + if (var0 != null) { + var1 = 293902692; + } else { + var1 = -1218690523; + } + break; + case 1916317715: + return (boolean)((var2) != 0); + } + } + } + + public static boolean isPushToTalkPressed() { + aow var0 = null; + int var2 = 0; + int var1 = 291041671; + + while (true) { + switch (var1) { + case -1616220731: + var2 = 1; + var1 = -1585767009; + break; + case -1585767009: + return (boolean)((var2) != 0); + case 291041671: + default: + var0 = localState; + if (var0 != null) { + var1 = 581195130; + } else { + var1 = 2127541315; + } + break; + case 581195130: + if (var0.isPushToTalkPressed()) { + var1 = -1616220731; + } else { + var1 = 2127541315; + } + break; + case 2127541315: + var2 = 0; + var1 = -1585767009; + } + } + } + + public static boolean isWhispering(UUID var0) { + aow var1 = null; + int var3 = 0; + int var2 = -700273388; + + while (true) { + switch (var2) { + case -1310956475: + return (boolean)((var3) != 0); + case -700273388: + default: + var1 = localState; + if (var1 != null) { + var2 = 1757877864; + } else { + var2 = -508411605; + } + break; + case -558984502: + var3 = 1; + var2 = -1310956475; + break; + case -508411605: + var3 = 0; + var2 = -1310956475; + break; + case 1757877864: + if (var1.isWhispering(var0)) { + var2 = -558984502; + } else { + var2 = -508411605; + } + } + } + } + + public static String getGroupName() { + aow var0 = null; + String var2 = null; + int var1 = 1057534848; + + while (true) { + switch (var1) { + case -307278841: + var2 = null; + var1 = 2023449492; + break; + case 1057534848: + default: + var0 = localState; + if (var0 == null) { + var1 = -307278841; + } else { + var1 = 1205519363; + } + break; + case 1205519363: + var2 = var0.getGroupName(); + var1 = 2023449492; + break; + case 2023449492: + return var2; + } + } + } + + public static void update() { + long var0 = (250824361460102586L | -250824361460102586L) + (250824361460102586L & -250824361460102586L); + float var2 = 0.0F; + int var3 = 0; + int var4 = 0; + aoy var5 = null; + int var6 = 944652147; + + while (true) { + switch (var6) { + case -1708079080: + var5 = SPEAKERS.get(var4); + var5.advance(var2, isActive(var5, var0)); + if (isEvictable(var5, var0)) { + var6 = 1460232229; + } else { + var6 = -824644138; + } + break; + case -1650102618: + if (var3 != 0) { + var6 = -1418220367; + } else { + var6 = 1153886167; + } + break; + case -1418220367: + SPEAKERS_BY_ID.values().removeIf(var2x -> isEvictable(var2x, var0)); + SPEAKERS.removeIf(var2x -> isEvictable(var2x, var0)); + var6 = 1153886167; + break; + case -1126595322: + var3 = 0; + var4 = 0; + var6 = 2051971172; + break; + case -824644138: + var4++; + var6 = 2051971172; + break; + case 676378870: + return; + case 944652147: + default: + var0 = System.nanoTime(); + var2 = Math.min(0.1F, (float)(var0 - lastUpdateNanos) / 1.0E9F); + lastUpdateNanos = var0; + if (var2 <= 0.0F) { + var6 = 676378870; + } else { + var6 = -1126595322; + } + break; + case 1153886167: + LOCAL_SPEAKER.advance(var2, isActive(LOCAL_SPEAKER, var0)); + return; + case 1460232229: + var3 = 1; + var6 = -824644138; + break; + case 2051971172: + if (var4 < SPEAKERS.size()) { + var6 = -1708079080; + } else { + var6 = -1650102618; + } + } + } + } + + static void bindLocalState(aow var0) { + localState = var0; + } + + static void setConnected(boolean var0) { + int var1 = 1263894984; + + while (true) { + switch (var1) { + case -1359365627: + connected = var0; + if (!var0) { + var1 = -172985443; + } else { + var1 = 61682998; + } + break; + case -172985443: + clear(); + var1 = 61682998; + break; + case 61682998: + return; + case 1147694489: + return; + case 1263894984: + default: + if (connected == var0) { + var1 = 1147694489; + } else { + var1 = -1359365627; + } + } + } + } + + static void clear() { + SPEAKERS.clear(); + SPEAKERS_BY_ID.clear(); + LOCAL_SPEAKER.endTransmission(System.nanoTime()); + } + + static void onReceivedAudio(UUID var0, short[] var1, boolean var2) { + long var3 = (-3497908768383918365L | 3497908768383918365L) + (-3497908768383918365L & 3497908768383918365L); + aoy var5 = null; + int var6 = -1796520633; + + while (true) { + switch (var6) { + case -1796520633: + default: + if (var0 == null) { + var6 = 250845960; + } else { + var6 = 397049474; + } + break; + case -1610531349: + var5 = resolveSpeaker(var0); + if (var5 == null) { + var6 = -1513774818; + } else { + var6 = 719152097; + } + break; + case -1513774818: + return; + case -704970580: + var5.endTransmission(var3); + var6 = -422176966; + break; + case -422176966: + return; + case -292315324: + if (var1.length == 0) { + var6 = 1472656496; + } else { + var6 = -1610531349; + } + break; + case 250845960: + return; + case 397049474: + var3 = System.nanoTime(); + if (var1 != null) { + var6 = -292315324; + } else { + var6 = 1472656496; + } + break; + case 719152097: + var5.submitFrame(levelOf(var1), var2, var3); + return; + case 1472656496: + var5 = SPEAKERS_BY_ID.get(var0); + if (var5 != null) { + var6 = -704970580; + } else { + var6 = -422176966; + } + } + } + } + + static void onLocalAudio(short[] var0, boolean var1) { + long var2 = (8583262263718883058L | -8583262263718883058L) + (8583262263718883058L & -8583262263718883058L); + int var4 = 1555023263; + + while (true) { + switch (var4) { + case -1868292973: + if (var0.length == 0) { + var4 = 172793227; + } else { + var4 = -30399530; + } + break; + case -30399530: + LOCAL_SPEAKER.submitFrame(levelOf(var0), var1, var2); + return; + case 172793227: + LOCAL_SPEAKER.endTransmission(var2); + return; + case 1555023263: + default: + var2 = System.nanoTime(); + if (var0 != null) { + var4 = -1868292973; + } else { + var4 = 172793227; + } + } + } + } + + private static aoy resolveSpeaker(UUID var0) { + aoy var1 = null; + int var2 = -702979247; + + while (true) { + switch (var2) { + case -1158934891: + if (SPEAKERS_BY_ID.size() >= (-609922759 ^ 609922823) + ((-609922759 & 609922823) << 1)) { + var2 = 1621992838; + } else { + var2 = 896037152; + } + break; + case -702979247: + default: + var1 = SPEAKERS_BY_ID.get(var0); + if (var1 != null) { + var2 = 1344125824; + } else { + var2 = -1158934891; + } + break; + case 896037152: + var1 = SPEAKERS_BY_ID.computeIfAbsent(var0, aoy::new); + SPEAKERS.addIfAbsent(var1); + return var1; + case 1344125824: + return var1; + case 1621992838: + return null; + } + } + } + + private static boolean isActive(aoy var0, long var1) { + int var4 = 0; + int var3 = 1873794524; + + while (true) { + switch (var3) { + case -993365760: + if (var1 - var0.getLastFrameNanos() < (904314092917673318L | -904314092597673318L) + (904314092917673318L & -904314092597673318L)) { + var3 = -627736844; + } else { + var3 = -186798114; + } + break; + case -627736844: + var4 = 1; + var3 = 626593967; + break; + case -186798114: + var4 = 0; + var3 = 626593967; + break; + case 626593967: + return (boolean)((var4) != 0); + case 1873794524: + default: + if (var0.isTransmitting()) { + var3 = -993365760; + } else { + var3 = -186798114; + } + } + } + } + + private static boolean isEvictable(aoy var0, long var1) { + int var4 = 0; + int var3 = -1679409061; + + while (true) { + switch (var3) { + case -1679409061: + default: + if (!var0.isTransmitting()) { + var3 = 1942435122; + } else { + var3 = 1401991605; + } + break; + case -711739236: + if (var1 - var0.getLastFrameNanos() > (-9194291757267595911L ^ 9194291761267595911L) + ((-9194291757267595911L & 9194291761267595911L) << 1)) { + var3 = 1265978961; + } else { + var3 = 1401991605; + } + break; + case -425262102: + return (boolean)((var4) != 0); + case 1265978961: + var4 = 1; + var3 = -425262102; + break; + case 1401991605: + var4 = 0; + var3 = -425262102; + break; + case 1942435122: + if (var0.getVisibility() <= 0.0F) { + var3 = -711739236; + } else { + var3 = 1401991605; + } + } + } + } + + private static float levelOf(short[] var0) { + double var1 = 0.0; + + for (int var3 = 0; var3 < var0.length; var3++) { + double var4 = var0[var3]; + var1 += var4 * var4; + } + + float var6 = (float)(Math.sqrt(var1 / var0.length) / 32768.0); + if (var6 <= 1.0E-5F) { + return 0.0F; + } + + float var7 = (float)(20.0 * Math.log10(var6)); + return var7 <= -45.0F ? 0.0F : Math.min(1.0F, 1.0F - var7 / -45.0F); + } +} diff --git a/src/main/java/defpackage/aoy.java b/src/main/java/defpackage/aoy.java new file mode 100644 index 0000000..dc073d9 --- /dev/null +++ b/src/main/java/defpackage/aoy.java @@ -0,0 +1,207 @@ +package defpackage; + +import java.util.UUID; + +public final class aoy { + private static final float LEVEL_ATTACK_RATE = 26.0F; + private static final float LEVEL_RELEASE_RATE = 7.0F; + private static final float PEAK_FALL_PER_SECOND = 0.9F; + private static final float VISIBILITY_RATE = 9.0F; + private static final float SNAP_EPSILON = 0.002F; + private final UUID id; + private volatile long lastFrameNanos; + private volatile float frameLevel; + private volatile boolean whispering; + private volatile boolean transmitting; + private float level; + private float peak; + private float visibility; + + aoy(UUID var1) { + this.id = var1; + this.lastFrameNanos = System.nanoTime(); + } + + public UUID getId() { + return this.id; + } + + public boolean isLocal() { + int var2 = 0; + int var1 = 1618894648; + + while (true) { + switch (var1) { + case -1863103325: + return (boolean)((var2) != 0); + case -1407952693: + var2 = 1; + var1 = -1863103325; + break; + case -675065684: + var2 = 0; + var1 = -1863103325; + break; + case 1618894648: + default: + if (this.id == null) { + var1 = -1407952693; + } else { + var1 = -675065684; + } + } + } + } + + public float getLevel() { + return this.level; + } + + public float getPeak() { + return this.peak; + } + + public float getVisibility() { + return this.visibility; + } + + public boolean isWhispering() { + return this.whispering; + } + + public boolean isTransmitting() { + return this.transmitting; + } + + long getLastFrameNanos() { + return this.lastFrameNanos; + } + + void submitFrame(float var1, boolean var2, long var3) { + this.frameLevel = var1; + this.whispering = var2; + this.lastFrameNanos = var3; + this.transmitting = (boolean)(((1)) != 0); + } + + void endTransmission(long var1) { + this.frameLevel = 0.0F; + this.transmitting = (boolean)(((0)) != 0); + this.lastFrameNanos = var1; + } + + void advance(float var1, boolean var2) { + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + int var6 = -1421439816; + + while (true) { + switch (var6) { + case -1953649836: + this.visibility = 1.0F; + var6 = -1463270218; + break; + case -1910389215: + var9 = 0.0F; + var6 = 1091733118; + break; + case -1878554386: + if (this.level >= this.peak) { + var6 = -752762584; + } else { + var6 = 340821864; + } + break; + case -1463270218: + return; + case -1421439816: + default: + if (var2) { + var6 = 731937866; + } else { + var6 = 8685671; + } + break; + case -1144638191: + var8 = 7.0F; + var6 = -717644556; + break; + case -752762584: + this.peak = this.level; + var6 = 737299234; + break; + case -717644556: + var4 = var8; + this.level = this.level + (var3 - this.level) * Math.min(1.0F, var4 * var1); + if (this.level < 0.002F) { + var6 = -158594375; + } else { + var6 = -1878554386; + } + break; + case -194036210: + var9 = 1.0F; + var6 = 1091733118; + break; + case -158594375: + this.level = 0.0F; + var6 = -1878554386; + break; + case -129792703: + this.visibility = 0.0F; + var6 = -1463270218; + break; + case -65162243: + var3 = var7; + if (var3 > this.level) { + var6 = 1545391284; + } else { + var6 = -1144638191; + } + break; + case 8685671: + var7 = 0.0F; + var6 = -65162243; + break; + case 313358720: + if (this.visibility > 0.998F) { + var6 = -1953649836; + } else { + var6 = -1463270218; + } + break; + case 340821864: + this.peak = Math.max(this.level, this.peak - 0.9F * var1); + var6 = 737299234; + break; + case 731937866: + var7 = this.frameLevel; + var6 = -65162243; + break; + case 737299234: + if (var2) { + var6 = -194036210; + } else { + var6 = -1910389215; + } + break; + case 1091733118: + var5 = var9; + this.visibility = this.visibility + (var5 - this.visibility) * Math.min(1.0F, 9.0F * var1); + if (this.visibility < 0.002F) { + var6 = -129792703; + } else { + var6 = 313358720; + } + break; + case 1545391284: + var8 = 26.0F; + var6 = -717644556; + } + } + } +} diff --git a/src/main/java/defpackage/aoz.java b/src/main/java/defpackage/aoz.java new file mode 100644 index 0000000..207d4c7 --- /dev/null +++ b/src/main/java/defpackage/aoz.java @@ -0,0 +1,87 @@ +package defpackage; + +import java.io.ByteArrayOutputStream; +import java.security.SecureRandom; +import java.util.Arrays; +import javax.crypto.Cipher; +import javax.crypto.SecretKey; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.PBEKeySpec; +import javax.crypto.spec.SecretKeySpec; + +public final class aoz { + private static final String DECRYPT_FAILURE = "payload decrypt failed"; + + public static byte[] decryptData(byte[] var0, String var1) { + try { + if (var0.length < (-1017314050 | 1017314082) + (-1017314050 & 1017314082)) { + throw new IllegalArgumentException("Invalid input"); + } + + byte[] var2 = Arrays.copyOfRange( + var0, 0, (182713119 | -182713103) + (182713119 & -182713103) + ); + byte[] var3 = Arrays.copyOfRange( + var0, 16, (-1539603275 | 1539603307) + (-1539603275 & 1539603307) + ); + byte[] var4 = Arrays.copyOfRange(var0, 32, var0.length); + SecretKeyFactory var5 = SecretKeyFactory.getInstance( + "PBKDF2WithHmacSHA256" + ); + PBEKeySpec var6 = new PBEKeySpec( + var1.toCharArray(), + var2, + 65536, + (582942131 ^ -582942003) + ((582942131 & -582942003) << 1) + ); + SecretKey var7 = var5.generateSecret(var6); + SecretKeySpec var8 = new SecretKeySpec(var7.getEncoded(), "AES"); + Cipher var9 = Cipher.getInstance("AES/CBC/PKCS5Padding"); + var9.init(2, var8, new IvParameterSpec(var3)); + return var9.doFinal(var4); + } catch (Exception var10) { + id.error( + Cif.CONFIG, + "payload decrypt failed", + var10 + ); + return null; + } + } + + public static byte[] encryptData(byte[] var0, String var1) { + try { + SecureRandom var2 = new SecureRandom(); + byte[] var3 = new byte[16]; + var2.nextBytes(var3); + SecretKeyFactory var4 = SecretKeyFactory.getInstance( + "PBKDF2WithHmacSHA256" + ); + PBEKeySpec var5 = new PBEKeySpec( + var1.toCharArray(), var3, 65536, (-858072479 ^ 858072607) + ((-858072479 & 858072607) << 1) + ); + SecretKey var6 = var4.generateSecret(var5); + SecretKeySpec var7 = new SecretKeySpec(var6.getEncoded(), "AES"); + byte[] var8 = new byte[16]; + var2.nextBytes(var8); + IvParameterSpec var9 = new IvParameterSpec(var8); + Cipher var10 = Cipher.getInstance("AES/CBC/PKCS5Padding"); + var10.init(1, var7, var9); + byte[] var11 = var10.doFinal(var0); + ByteArrayOutputStream var12 = new ByteArrayOutputStream(); + var12.write(var3); + var12.write(var8); + var12.write(var11); + return var12.toByteArray(); + } catch (Throwable var13) { + throw var13; + } + } + + private aoz() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/ap.java b/src/main/java/defpackage/ap.java new file mode 100644 index 0000000..2478e3d --- /dev/null +++ b/src/main/java/defpackage/ap.java @@ -0,0 +1,16 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; + +public class ap extends ax implements aw { + float amount; + + public ap(float var1) { + this.amount = var1; + } + + @Override + public void applyPose(PoseStack var1) { + var1.translate(this.amount, 0.0F, 0.0F); + } +} diff --git a/src/main/java/defpackage/apa.java b/src/main/java/defpackage/apa.java new file mode 100644 index 0000000..65cea04 --- /dev/null +++ b/src/main/java/defpackage/apa.java @@ -0,0 +1,8 @@ +package defpackage; + +public enum apa { + MainHand, + OffHand, + Packet, + None; +} diff --git a/src/main/java/defpackage/apb.java b/src/main/java/defpackage/apb.java new file mode 100644 index 0000000..44b68f2 --- /dev/null +++ b/src/main/java/defpackage/apb.java @@ -0,0 +1,8 @@ +package defpackage; + +public enum apb { + Normal, + Silent, + Alternative, + None; +} diff --git a/src/main/java/defpackage/apc.java b/src/main/java/defpackage/apc.java new file mode 100644 index 0000000..4410096 --- /dev/null +++ b/src/main/java/defpackage/apc.java @@ -0,0 +1,289 @@ +package defpackage; + +import net.minecraft.network.protocol.game.ServerboundSetCarriedItemPacket; +import net.minecraft.network.protocol.game.ServerboundSwingPacket; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.inventory.ContainerInput; +import net.minecraft.world.item.Item; + +@Deprecated +public class apc implements aqg { + public static int findItem(Item var0) { + return findItem(var0, 0, (-357561357 ^ 357561392) + ((-357561357 & 357561392) << 1)); + } + + public static int findHotbar(Item var0) { + return findItem(var0, 0, (739732936 ^ -739732928) + ((739732936 & -739732928) << 1)); + } + + public static int findInventory(Item var0) { + return findItem(var0, 9, (2080416315 ^ -2080416280) + ((2080416315 & -2080416280) << 1)); + } + + public static int findItem(Item var0, int var1, int var2) { + int var3 = 0; + int var4 = 1489120308; + + while (true) { + switch (var4) { + case -1087959741: + return var3; + case -623484507: + var3--; + var4 = -544637491; + break; + case -544637491: + if (var3 >= var1) { + var4 = 976716018; + } else { + var4 = 325234662; + } + break; + case 325234662: + return -1; + case 976716018: + if (mc.player.getInventory().getItem(var3).getItem() == var0) { + var4 = -1087959741; + } else { + var4 = -623484507; + } + break; + case 1489120308: + default: + var3 = var2; + var4 = -544637491; + } + } + } + + public static int findEmptySlot(int var0, int var1) { + int var2 = 0; + int var3 = -35689839; + + while (true) { + switch (var3) { + case -2120894639: + return -1; + case -1612166419: + if (mc.player.getInventory().getItem(var2).isEmpty()) { + var3 = 1535282113; + } else { + var3 = 22350741; + } + break; + case -35689839: + default: + var2 = var1; + var3 = 1831654826; + break; + case 22350741: + var2--; + var3 = 1831654826; + break; + case 1535282113: + return var2; + case 1831654826: + if (var2 >= var0) { + var3 = -1612166419; + } else { + var3 = -2120894639; + } + } + } + } + + public static void switchSlot(apb var0, int var1, int var2) { + if (var1 != (-873462458 | 873462457) + (-873462458 & 873462457) && var2 != (-1225899798 ^ 1225899797) + ((-1225899798 & 1225899797) << 1)) { + switch (var0) { + case Normal: + mc.player.getInventory().setSelectedSlot(var1); + break; + case Silent: + mc.player.getInventory().setSelectedSlot(var1); + apg.sendPacket(new ServerboundSetCarriedItemPacket(var1)); + break; + case Alternative: + swapItems(var1, var2); + } + } + } + + public static void switchBack(apb var0, int var1, int var2) { + if (var1 != (-209135223 ^ 209135222) + ((-209135223 & 209135222) << 1) && var2 != (906358379 ^ -906358380) + ((906358379 & -906358380) << 1)) { + switch (var0) { + case Normal: + mc.player.getInventory().setSelectedSlot(var2); + break; + case Silent: + mc.player.getInventory().setSelectedSlot(var2); + apg.sendPacket(new ServerboundSetCarriedItemPacket(var2)); + break; + case Alternative: + swapItems(var1, var2); + } + } + } + + public static void swapItems(int var0, int var1) { + int var2 = 442459967; + + while (true) { + switch (var2) { + case -309527146: + mc.gameMode + .handleContainerInput( + mc.player.inventoryMenu.containerId, var0, 0, ContainerInput.PICKUP, mc.player + ); + mc.gameMode + .handleContainerInput( + mc.player.inventoryMenu.containerId, var1, 0, ContainerInput.PICKUP, mc.player + ); + mc.gameMode + .handleContainerInput( + mc.player.inventoryMenu.containerId, + var0, + 0, + ContainerInput.PICKUP, + mc.player + ); + return; + case -108376447: + return; + case 442459967: + default: + if (var0 != (-1279614412 ^ 1279614411) + ((-1279614412 & 1279614411) << 1)) { + var2 = 1526603160; + } else { + var2 = -108376447; + } + break; + case 1526603160: + if (var1 == (-1498609626 | 1498609625) + (-1498609626 & 1498609625)) { + var2 = -108376447; + } else { + var2 = -309527146; + } + } + } + } + + public static void swap(int var0, int var1) { + int var2 = -1170948253; + + while (true) { + switch (var2) { + case -1170948253: + default: + if (var0 != (481634668 ^ -481634669) + ((481634668 & -481634669) << 1)) { + var2 = 977135158; + } else { + var2 = 865141608; + } + break; + case 361015714: + mc.gameMode + .handleContainerInput( + mc.player.inventoryMenu.containerId, + indexToSlot(var0), + 0, + ContainerInput.PICKUP, + mc.player + ); + mc.gameMode + .handleContainerInput( + mc.player.inventoryMenu.containerId, + indexToSlot(var1), + 0, + ContainerInput.PICKUP, + mc.player + ); + mc.gameMode + .handleContainerInput( + mc.player.inventoryMenu.containerId, + indexToSlot(var0), + 0, + ContainerInput.PICKUP, + mc.player + ); + return; + case 865141608: + return; + case 977135158: + if (var1 == (131953850 ^ -131953851) + ((131953850 & -131953851) << 1)) { + var2 = 865141608; + } else { + var2 = 361015714; + } + } + } + } + + public static void bypassSwap(int var0, int var1) { + int var2 = 799104582; + + while (true) { + switch (var2) { + case -2029377422: + swap(var0, var1); + return; + case -747115129: + if (var1 == (1322308083 ^ -1322308084) + ((1322308083 & -1322308084) << 1)) { + var2 = 1321907969; + } else { + var2 = -2029377422; + } + break; + case 799104582: + default: + if (var0 != (724466774 | -724466775) + (724466774 & -724466775)) { + var2 = -747115129; + } else { + var2 = 1321907969; + } + break; + case 1321907969: + return; + } + } + } + + public static int indexToSlot(int var0) { + int var1 = 2012436156; + + while (true) { + switch (var1) { + case -1651967104: + return var0; + case -1130130659: + if (var0 <= (-998009213 | 998009221) + (-998009213 & 998009221)) { + var1 = 1136287774; + } else { + var1 = -1651967104; + } + break; + case 1136287774: + return (-1829755728 | 1829755764) + (-1829755728 & 1829755764) + var0; + case 2012436156: + default: + if (var0 >= 0) { + var1 = -1130130659; + } else { + var1 = -1651967104; + } + } + } + } + + public static void swing(apa var0) { + switch (var0) { + case MainHand: + mc.player.swing(InteractionHand.MAIN_HAND); + break; + case OffHand: + mc.player.swing(InteractionHand.OFF_HAND); + break; + case Packet: + apg.sendPacket(new ServerboundSwingPacket(InteractionHand.MAIN_HAND)); + } + } +} diff --git a/src/main/java/defpackage/apd.java b/src/main/java/defpackage/apd.java new file mode 100644 index 0000000..65ab24c --- /dev/null +++ b/src/main/java/defpackage/apd.java @@ -0,0 +1,46 @@ +package defpackage; + +import java.awt.Color; + +public enum apd { + WARN( + "Warning", + new Color( + 247, + 206, + (-1343906807 ^ 1343906866) + ((-1343906807 & 1343906866) << 1) + ) + ), + ERROR( + "Error", + new Color( + 242, + 79, + (-1956674400 ^ 1956674468) + ((-1956674400 & 1956674468) << 1) + ) + ), + INFO( + "Info", + new Color( + 87, + 126, + (-456487013 | 456487268) + (-456487013 & 456487268) + ) + ); + + private final String level; + private final Color color; + + public String getLevel() { + return this.level; + } + + public Color getColor() { + return this.color; + } + + apd(String var3, Color var4) { + this.level = var3; + this.color = var4; + } +} diff --git a/src/main/java/defpackage/ape.java b/src/main/java/defpackage/ape.java new file mode 100644 index 0000000..69f6833 --- /dev/null +++ b/src/main/java/defpackage/ape.java @@ -0,0 +1,74 @@ +package defpackage; + +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.Style; + +public final class ape implements aqg { + public static final Component PREFIX; + + public static void displayMessage(apd var0, String var1) { + Component var2 = null; + Component var3 = null; + int var4 = -1445385401; + + while (true) { + switch (var4) { + case -1593459062: + return; + case -1445385401: + default: + if (mc.player == null) { + var4 = -1593459062; + } else { + var4 = 1290299594; + } + break; + case 1290299594: + String var10000 = "[ %s ] "; + Object[] var10001 = new Object[1]; + var10001[0] = "Evolution"; + var2 = (Component)Component.nullToEmpty(var10000.formatted(var10001)) + .copy() + .append(Component.nullToEmpty("★")) + .toFlatList(Style.EMPTY.withColor(bz.getInstance().getThemeManager().getCurrentTheme().getColor().getRGB())) + .getFirst(); + var3 = (Component)Component.nullToEmpty(var1).copy().toFlatList(getLevelStyle(var0)).getFirst(); + mc.player.sendSystemMessage(var2.copy().append(" ").append(var3)); + return; + } + } + } + + public static void displayWarning(String var0) { + displayMessage(apd.WARN, var0); + } + + public static void displayError(String var0) { + displayMessage(apd.ERROR, var0); + } + + public static void displayInfo(String var0) { + displayMessage(apd.INFO, var0); + } + + private static Style getLevelStyle(apd var0) { + return Style.EMPTY.withColor(var0.getColor().getRGB()); + } + + private ape() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } + + static { + String var10000 = "[ %s ] "; + Object[] var10001 = new Object[1]; + var10001[0] = "Evolution"; + PREFIX = (Component)Component.nullToEmpty(var10000.formatted(var10001)) + .copy() + .append(Component.nullToEmpty("★")) + .toFlatList(Style.EMPTY.withColor(asu.BLUE.getRGB())) + .getFirst(); + } +} diff --git a/src/main/java/defpackage/apf.java b/src/main/java/defpackage/apf.java new file mode 100644 index 0000000..20f1f54 --- /dev/null +++ b/src/main/java/defpackage/apf.java @@ -0,0 +1,65 @@ +package defpackage; + + +public enum apf { + LEFT((1818076216 ^ -1818076216) + ((1818076216 & -1818076216) << 1)), + RIGHT((1930968784 ^ -1930968783) + ((1930968784 & -1930968783) << 1)), + MIDDLE((-1015214894 ^ 1015214896) + ((-1015214894 & 1015214896) << 1)), + BUTTON_4((-1802968813 | 1802968816) + (-1802968813 & 1802968816)), + BUTTON_5((794102465 ^ -794102461) + ((794102465 & -794102461) << 1)), + BUTTON_6((352762439 ^ -352762434) + ((352762439 & -352762434) << 1)), + BUTTON_7((-1303772655 ^ 1303772661) + ((-1303772655 & 1303772661) << 1)); + + private final int buttonIndex; + + public static apf fromButtonIndex(int var0) { + apf[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = 587465557; + + while (true) { + switch (var5) { + case -1362132920: + var4 = var1[var3]; + if (((apf)var4).getButtonIndex() == var0) { + var5 = 1206553053; + } else { + var5 = 71904101; + } + break; + case -487262545: + if (var3 < var2) { + var5 = -1362132920; + } else { + var5 = 1646509267; + } + break; + case 71904101: + var3++; + var5 = -487262545; + break; + case 587465557: + default: + var1 = values(); + var2 = var1.length; + var3 = 0; + var5 = -487262545; + break; + case 1206553053: + return (apf)var4; + case 1646509267: + return LEFT; + } + } + } + + apf(int var3) { + this.buttonIndex = var3; + } + + public int getButtonIndex() { + return this.buttonIndex; + } +} diff --git a/src/main/java/defpackage/apg.java b/src/main/java/defpackage/apg.java new file mode 100644 index 0000000..b1ea07a --- /dev/null +++ b/src/main/java/defpackage/apg.java @@ -0,0 +1,27 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import net.minecraft.network.protocol.Packet; + +@Deprecated +public class apg implements aqg { + private static final List> silentPackets = new ArrayList<>(); + + public static void sendSilentPacket(Packet var0) { + silentPackets.add(var0); + mc.getConnection().send(var0); + } + + public static void sendPacket(Packet var0) { + mc.getConnection().send(var0); + } + + public static List> getSilentPackets() { + return silentPackets; + } + + public static void clearSilentPackets() { + silentPackets.clear(); + } +} diff --git a/src/main/java/defpackage/aph.java b/src/main/java/defpackage/aph.java new file mode 100644 index 0000000..79d156d --- /dev/null +++ b/src/main/java/defpackage/aph.java @@ -0,0 +1,440 @@ +package defpackage; + +import java.util.Locale; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Style; +import net.minecraft.util.FormattedCharSequence; + +public final class aph implements aqg { + public static String formatNumber(double var0) { + Locale var10000 = Locale.US; + String var10001 = "%.1f"; + Object[] var10002 = new Object[1]; + var10002[0] = var0; + return String.format(var10000, var10001, var10002); + } + + public static Component truncateAfterSecondSpace(Component var0, boolean var1) { + FormattedCharSequence var2 = null; + MutableComponent var3 = null; + StringBuilder var4 = null; + Style[] var5 = null; + int[] var6 = null; + boolean[] var7 = null; + Object var8 = null; + Object var10 = null; + int var9 = 651672325; + + while (true) { + switch (var9) { + case -431296633: + var10 = var5[0]; + var9 = 1746161393; + break; + case -156646818: + var3.append(Component.literal(var4.toString()).setStyle(var5[0])); + var9 = 870097081; + break; + case 208896231: + var10 = var0.getStyle(); + var9 = 1746161393; + break; + case 231854908: + return var3; + case 651672325: + default: + var2 = var0.getVisualOrderText(); + var3 = Component.empty(); + var4 = new StringBuilder(); + Style[] var10000 = new Style[1]; + var10000[0] = Style.EMPTY; + var5 = var10000; + int[] var14 = new int[1]; + var14[0] = 0; + var6 = var14; + boolean[] var15 = new boolean[1]; + var15[0] = (boolean)(((0)) != 0); + var7 = var15; + var2.accept( + (var5x, var6x, var7x) -> { + int var8x = 1084049607; + + while (true) { + switch (var8x) { + case -1703394922: + var3.append(Component.literal(var4.toString()).setStyle(var5[0])); + var4.setLength((-674859503 ^ 674859503) + ((-674859503 & 674859503) << 1)); + var8x = 783433085; + break; + case -771165409: + if (!var6x.equals(var5[0])) { + var8x = 1945809697; + } else { + var8x = 1177578328; + } + break; + case -381428002: + var6[0] = var6[0] + + 1; + var8x = 385287135; + break; + case 385287135: + return (boolean)(((1)) != 0); + case 783433085: + var5[0] = var6x; + var8x = 1177578328; + break; + case 1084049607: + default: + if (var6[0] + > (-349772217 ^ 349772219) + ((-349772217 & 349772219) << 1)) { + var8x = 1235672366; + } else { + var8x = -771165409; + } + break; + case 1177578328: + var4.appendCodePoint(var7x); + if (Character.isWhitespace(var7x)) { + var8x = -381428002; + } else { + var8x = 385287135; + } + break; + case 1235672366: + var7[0] = (boolean)(((1)) != 0); + return (boolean)(((0)) != 0); + case 1945809697: + if (!var4.isEmpty()) { + var8x = -1703394922; + } else { + var8x = 783433085; + } + } + } + } + ); + if (var4.length() > 0) { + var9 = -156646818; + } else { + var9 = 870097081; + } + break; + case 870097081: + if (var1) { + var9 = 1623737840; + } else { + var9 = 231854908; + } + break; + case 1623737840: + if (var7[0]) { + var9 = 2131075208; + } else { + var9 = 231854908; + } + break; + case 1746161393: + var8 = var10; + var3.append(Component.literal("…").setStyle((Style)var8)); + var9 = 231854908; + break; + case 2131075208: + if (var5[0] != null) { + var9 = -431296633; + } else { + var9 = 208896231; + } + } + } + } + + public static MutableComponent replaceLastChar(Component var0, String var1) { + FormattedCharSequence var2 = null; + int[] var3 = null; + int var4 = 0; + MutableComponent var5 = null; + StringBuilder var6 = null; + Style[] var7 = null; + int[] var8 = null; + int var9 = 144941913; + + while (true) { + switch (var9) { + case -927593973: + return var0.copy(); + case -54694274: + var4 = var3[0] - (1); + var5 = Component.empty(); + var6 = new StringBuilder(); + Style[] var15 = new Style[1]; + var15[0] = null; + var7 = var15; + int[] var16 = new int[1]; + var16[0] = 0; + var8 = var16; + var2.accept( + (var6x, var7x, var8x) -> { + int var9x = 0; + int var11x = 0; + int var10x = 274562501; + + while (true) { + switch (var10x) { + case -586613524: + var6.appendCodePoint(var8x); + var8[0] = var8[0] + + 1; + return (boolean)(((1)) != 0); + case 106504302: + if (!var7[0].equals(var7x)) { + var10x = 1910251675; + } else { + var10x = 1948794320; + } + break; + case 274562501: + default: + if (var8[0] == var4) { + var10x = 878307549; + } else { + var10x = 1625901289; + } + break; + case 878307549: + var11x = 1; + var10x = 1969569466; + break; + case 1625901289: + var11x = 0; + var10x = 1969569466; + break; + case 1910251675: + flushRun(var5, var6, var7[0]); + var7[0] = var7x; + var10x = 1948794320; + break; + case 1948794320: + if (var9x != 0) { + var10x = -586613524; + } else { + var10x = -586613524; + } + break; + case 1969569466: + var9x = var11x; + if (var7[0] != null) { + var10x = 106504302; + } else { + var10x = 1910251675; + } + } + } + } + ); + flushRun(var5, var6, var7[0]); + return var5; + case 144941913: + } + + var2 = var0.getVisualOrderText(); + int[] var10000 = new int[1]; + var10000[0] = 0; + var3 = var10000; + var2.accept( + (var1x, var2x, var3x) -> { + var3[0] = var3[0] + + 1; + return (boolean)(((1)) != 0); + } + ); + if (var3[0] == 0) { + var9 = -927593973; + } else { + var9 = -54694274; + } + } + } + + private static void flushRun(MutableComponent var0, StringBuilder var1, Style var2) { + MutableComponent var3 = null; + int var4 = -434110800; + + while (true) { + switch (var4) { + case -434110800: + default: + if (var1.length() == 0) { + var4 = 987238216; + } else { + var4 = 1678218359; + } + break; + case 878719587: + var0.append(var3); + var1.setLength((-95047650 ^ 95047650) + ((-95047650 & 95047650) << 1)); + return; + case 987238216: + return; + case 1678218359: + var3 = Component.literal(var1.toString()); + if (var2 != null) { + var4 = 2050050831; + } else { + var4 = 878719587; + } + break; + case 2050050831: + var3.setStyle(var2); + var4 = 878719587; + } + } + } + + public static Component truncateAfterSubstring(Component var0, String var1, boolean var2) { + FormattedCharSequence var3 = null; + MutableComponent var4 = null; + StringBuilder var5 = null; + Style[] var6 = null; + StringBuilder var7 = null; + boolean[] var8 = null; + Object var9 = null; + Object var11 = null; + int var10 = 985015539; + + while (true) { + switch (var10) { + case -1588861723: + var4.append(Component.literal(var5.toString()).setStyle(var6[0])); + var10 = 2099776406; + break; + case -1564117011: + if (var8[0]) { + var10 = 790229190; + } else { + var10 = -458605056; + } + break; + case -1352919459: + var11 = var6[0]; + var10 = -1322316836; + break; + case -1322316836: + var9 = var11; + var4.append(Component.literal("…").setStyle((Style)var9)); + var10 = -458605056; + break; + case -915727956: + if (var1.isEmpty()) { + var10 = 950128831; + } else { + var10 = 83023860; + } + break; + case -458605056: + return var4; + case 83023860: + var3 = var0.getVisualOrderText(); + var4 = Component.empty(); + var5 = new StringBuilder(); + Style[] var10000 = new Style[1]; + var10000[0] = Style.EMPTY; + var6 = var10000; + var7 = new StringBuilder(); + boolean[] var15 = new boolean[1]; + var15[0] = (boolean)(((0)) != 0); + var8 = var15; + var3.accept( + (var6x, var7x, var8x) -> { + String var9x = null; + int var10x = 301151911; + + while (true) { + switch (var10x) { + case -2095139869: + var5.append(var9x); + return (boolean)(((1)) != 0); + case -1551500034: + if (var5.length() > 0) { + var10x = 1840159626; + } else { + var10x = 811586702; + } + break; + case -214225470: + var7.append(var9x); + if (!var7x.equals(var6[0])) { + var10x = -1551500034; + } else { + var10x = -2095139869; + } + break; + case 301151911: + default: + var9x = new String(Character.toChars(var8x)); + if (var7.toString().contains(var1)) { + var10x = 1874734084; + } else { + var10x = -214225470; + } + break; + case 811586702: + var6[0] = var7x; + var10x = -2095139869; + break; + case 1840159626: + var4.append(Component.literal(var5.toString()).setStyle(var6[0])); + var5.setLength((2147089639 ^ -2147089639) + ((2147089639 & -2147089639) << 1)); + var10x = 811586702; + break; + case 1874734084: + var8[0] = (boolean)(((1)) != 0); + return (boolean)(((0)) != 0); + } + } + } + ); + if (var5.length() > 0) { + var10 = -1588861723; + } else { + var10 = 2099776406; + } + break; + case 790229190: + if (var6[0] != null) { + var10 = -1352919459; + } else { + var10 = 1394431284; + } + break; + case 950128831: + return var0; + case 985015539: + default: + if (var1 != null) { + var10 = -915727956; + } else { + var10 = 950128831; + } + break; + case 1394431284: + var11 = var0.getStyle(); + var10 = -1322316836; + break; + case 2099776406: + if (var2) { + var10 = -1564117011; + } else { + var10 = -458605056; + } + } + } + } + + private aph() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/api.java b/src/main/java/defpackage/api.java new file mode 100644 index 0000000..2df97e2 --- /dev/null +++ b/src/main/java/defpackage/api.java @@ -0,0 +1,235 @@ +package defpackage; + +import com.mojang.blaze3d.platform.Window; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.input.CharacterEvent; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.input.MouseButtonInfo; +import net.minecraft.network.chat.Component; + +public abstract class api extends Screen implements aqg { + private int deferredMouseX; + private int deferredMouseY; + private float deferredDelta; + + protected api() { + super(Component.empty()); + } + + public abstract void render(asq var1, float var2, float var3); + + public final void extractRenderState(GuiGraphicsExtractor var1, int var2, int var3, float var4) { + this.deferredMouseX = var2; + this.deferredMouseY = var3; + this.deferredDelta = var4; + super.extractRenderState(var1, var2, var3, var4); + } + + public final void renderDeferred() { + asq var1 = asq.of(this.deferredMouseX, this.deferredMouseY, this.deferredDelta); + int var2 = !atf.isRecording() ? 1: 0; + arx.beginFrame(); + atb.beginGui(); + if (var2 != 0) { + atf.begin(); + } + + try { + this.render(var1, exactMouseX(this.deferredMouseX), exactMouseY(this.deferredMouseY)); + } finally { + if (var2 != 0) { + atf.end(); + } + + atb.endGui(); + arx.endFrame(); + } + } + + public static float exactMouseX(int var0) { + Window var1 = null; + int var2 = -1010142391; + + while (true) { + switch (var2) { + case -1574536854: + if (var1.getScreenWidth() <= 0) { + var2 = 1044090228; + } else { + var2 = -657215138; + } + break; + case -1010142391: + default: + var1 = mc.getWindow(); + if (var1 != null) { + var2 = -1574536854; + } else { + var2 = 1044090228; + } + break; + case -657215138: + return (float)(mc.mouseHandler.xpos() * var1.getGuiScaledWidth() / var1.getScreenWidth()); + case 1044090228: + return var0; + } + } + } + + public static float exactMouseY(int var0) { + Window var1 = null; + int var2 = -1763791397; + + while (true) { + switch (var2) { + case -1763791397: + default: + var1 = mc.getWindow(); + if (var1 != null) { + var2 = -1000590397; + } else { + var2 = 1955852799; + } + break; + case -1000590397: + if (var1.getScreenHeight() <= 0) { + var2 = 1955852799; + } else { + var2 = 1608510263; + } + break; + case 1608510263: + return (float)(mc.mouseHandler.ypos() * var1.getGuiScaledHeight() / var1.getScreenHeight()); + case 1955852799: + return var0; + } + } + } + + public final boolean mouseClicked(MouseButtonEvent var1, boolean var2) { + apf var3 = apf.fromButtonIndex(var1.button()); + this.onMouseClicked(var1.x(), var1.y(), var3); + return super.mouseClicked(var1, var2); + } + + public void tick() { + } + + public boolean isPauseScreen() { + return (boolean)(((0)) != 0); + } + + public boolean showsHudOverlays() { + return (boolean)(((0)) != 0); + } + + public static boolean hudOverlaysVisible() { + Screen var0 = null; + api var1 = null; + int var3 = 0; + int var2 = 1535935846; + + while (true) { + switch (var2) { + case -1912662343: + var1 = (api)var0; + if (var1.showsHudOverlays()) { + var2 = 2013530487; + } else { + var2 = 359774311; + } + break; + case -1047394048: + return (boolean)(((1)) != 0); + case -510322699: + if (var0 instanceof ChatScreen) { + var2 = -1047394048; + } else { + var2 = -407558149; + } + break; + case -407558149: + if (var0 instanceof api) { + var2 = -1912662343; + } else { + var2 = 359774311; + } + break; + case 359774311: + var3 = 0; + var2 = 2039408634; + break; + case 1535935846: + default: + var0 = mc.gui.screen(); + if (var0 != null) { + var2 = -510322699; + } else { + var2 = -1047394048; + } + break; + case 2013530487: + var3 = 1; + var2 = 2039408634; + break; + case 2039408634: + return (boolean)((var3) != 0); + } + } + } + + public final boolean mouseReleased(MouseButtonEvent var1) { + apf var2 = apf.fromButtonIndex(var1.button()); + this.onMouseReleased(var1.x(), var1.y(), var2); + return super.mouseReleased(var1); + } + + public final boolean mouseDragged(MouseButtonEvent var1, double var2, double var4) { + apf var6 = apf.fromButtonIndex(var1.button()); + this.onMouseDragged(var1.x(), var1.y(), var6, var2, var4); + return super.mouseDragged(var1, var2, var4); + } + + public boolean keyPressed(KeyEvent var1) { + return this.keyPressed(var1.key(), var1.scancode(), var1.modifiers()); + } + + public boolean keyPressed(int var1, int var2, int var3) { + return super.keyPressed(new KeyEvent(var1, var2, var3)); + } + + public boolean charTyped(CharacterEvent var1) { + return this.charTyped((char)var1.codepoint(), (1575542276 | -1575542276) + (1575542276 & -1575542276)); + } + + public boolean charTyped(char var1, int var2) { + return super.charTyped(new CharacterEvent(var1)); + } + + public final boolean mouseClicked(double var1, double var3, int var5) { + return this.mouseClicked( + new MouseButtonEvent(var1, var3, new MouseButtonInfo(var5, (227741669 ^ -227741669) + ((227741669 & -227741669) << 1))), + (boolean)((((1732519508 | -1732519508) + (1732519508 & -1732519508)) + ) != 0)); + } + + public final boolean mouseReleased(double var1, double var3, int var5) { + return this.mouseReleased(new MouseButtonEvent(var1, var3, new MouseButtonInfo(var5, (1677284651 | -1677284651) + (1677284651 & -1677284651)))); + } + + public final boolean mouseDragged(double var1, double var3, int var5, double var6, double var8) { + return this.mouseDragged(new MouseButtonEvent(var1, var3, new MouseButtonInfo(var5, (52243396 ^ -52243396) + ((52243396 & -52243396) << 1))), var6, var8); + } + + public void onMouseClicked(double var1, double var3, apf var5) { + } + + public void onMouseReleased(double var1, double var3, apf var5) { + } + + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + } +} diff --git a/src/main/java/defpackage/apj.java b/src/main/java/defpackage/apj.java new file mode 100644 index 0000000..5661bb6 --- /dev/null +++ b/src/main/java/defpackage/apj.java @@ -0,0 +1,19 @@ +package defpackage; + +import com.mojang.authlib.GameProfile; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.RemotePlayer; +import net.minecraft.world.entity.player.PlayerSkin; + +public final class apj extends RemotePlayer { + private final PlayerSkin skin; + + public apj(ClientLevel var1, GameProfile var2, PlayerSkin var3) { + super(var1, var2); + this.skin = var3; + } + + public PlayerSkin getSkin() { + return this.skin; + } +} diff --git a/src/main/java/defpackage/apk.java b/src/main/java/defpackage/apk.java new file mode 100644 index 0000000..59f2484 --- /dev/null +++ b/src/main/java/defpackage/apk.java @@ -0,0 +1,300 @@ +package defpackage; + +import com.mojang.authlib.GameProfile; +import java.util.UUID; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents.EndTick; +import net.fabricmc.fabric.api.event.player.AttackEntityCallback; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; + +public final class apk implements aqg { + private static final apk INSTANCE = new apk(); + private static final int FAKE_ID_BASE = 2113929216; + private static final float BASE_DAMAGE_FRACTION = 0.2F; + private static final float COOLDOWN_DAMAGE_FRACTION = 0.8F; + private static final double KNOCKBACK_HORIZONTAL = 0.4; + private static final double KNOCKBACK_VERTICAL = 0.35; + private static final int HURT_ANIMATION_TICKS = 10; + private static final int CORPSE_DESPAWN_DEATH_TICKS = 30; + private static final float HURT_SOUND_VOLUME = 1.0F; + private apj fake; + private ClientLevel trackedWorld; + private int idCounter; + + private apk() { + } + + public static apk getInstance() { + return INSTANCE; + } + + public void init() { + AttackEntityCallback.EVENT.register(this::onAttack); + ClientTickEvents.END_CLIENT_TICK.register((EndTick)var1 -> this.tick()); + } + + public boolean spawn() { + GameProfile var1 = null; + apj var2 = null; + EquipmentSlot[] var3 = null; + int var4 = 0; + int var5 = 0; + Object var6 = null; + int var7 = 618000232; + + while (true) { + switch (var7) { + case -2137180545: + var6 = var3[var5]; + var2.setItemSlot((EquipmentSlot)var6, mc.player.getItemBySlot((EquipmentSlot)var6).copy()); + var5++; + var7 = 438230555; + break; + case -203962568: + this.despawn(); + var1 = new GameProfile(UUID.randomUUID(), mc.player.getGameProfile().name()); + var2 = new apj(mc.level, var1, mc.player.getSkin()); + int var10001 = 2113929216; + int var10002 = this.idCounter; + this.idCounter += 1; + var2.setId(var10001 + var10002); + var2.snapTo(mc.player.getX(), mc.player.getY(), mc.player.getZ(), mc.player.getYRot(), mc.player.getXRot()); + var2.setYHeadRot(mc.player.yHeadRot); + var2.yBodyRot = mc.player.yBodyRot; + var3 = EquipmentSlot.values(); + var4 = var3.length; + var5 = 0; + var7 = 438230555; + break; + case 116784032: + if (mc.player == null) { + var7 = 1774618341; + } else { + var7 = -203962568; + } + break; + case 438230555: + if (var5 < var4) { + var7 = -2137180545; + } else { + var7 = 1817021382; + } + break; + case 618000232: + default: + if (mc.level != null) { + var7 = 116784032; + } else { + var7 = 1774618341; + } + break; + case 1774618341: + return (boolean)(((0)) != 0); + case 1817021382: + var2.setHealth(var2.getMaxHealth()); + mc.level.addEntity(var2); + this.fake = var2; + this.trackedWorld = mc.level; + return (boolean)(((1)) != 0); + } + } + } + + public boolean kill() { + int var1 = 936521819; + + while (true) { + switch (var1) { + case -1486242133: + if (this.fake.isDeadOrDying()) { + var1 = 1688042323; + } else { + var1 = 1046768791; + } + break; + case 936521819: + default: + if (this.fake != null) { + var1 = -1486242133; + } else { + var1 = 1688042323; + } + break; + case 1046768791: + this.fake.setHealth(0.0F); + return (boolean)(((1)) != 0); + case 1688042323: + return (boolean)(((0)) != 0); + } + } + } + + public boolean despawn() { + int var1 = -1710485831; + + while (true) { + switch (var1) { + case -1710485831: + default: + if (this.fake == null) { + var1 = 235022863; + } else { + var1 = -1360552130; + } + break; + case -1360552130: + this.fake.discard(); + this.fake = null; + return (boolean)(((1)) != 0); + case 235022863: + return (boolean)(((0)) != 0); + } + } + } + + public boolean isAlive() { + int var2 = 0; + int var1 = -693074878; + + while (true) { + switch (var1) { + case -1814677625: + var2 = 1; + var1 = -742477563; + break; + case -742477563: + return (boolean)((var2) != 0); + case -693074878: + default: + if (this.fake != null) { + var1 = -430122236; + } else { + var1 = 392737247; + } + break; + case -430122236: + if (!this.fake.isDeadOrDying()) { + var1 = -1814677625; + } else { + var1 = 392737247; + } + break; + case 392737247: + var2 = 0; + var1 = -742477563; + } + } + } + + @Nullable + public apj getFake() { + return this.fake; + } + + private InteractionResult onAttack(Player var1, Level var2, InteractionHand var3, Entity var4, @Nullable EntityHitResult var5) { + if (this.fake != null && var4 == this.fake && !this.fake.isDeadOrDying() && mc.player != null) { + float var6 = mc.player.getAttackStrengthScale(0.5F); + double var7 = mc.player.getAttributeValue(Attributes.ATTACK_DAMAGE); + float var9 = (float)(var7 * (0.2F + var6 * var6 * 0.8F)); + this.fake.setHealth(this.fake.getHealth() - var9); + this.fake.hurtTime = 10; + this.fake.hurtDuration = 10; + mc.player.resetOnlyAttackStrengthTicker(); + mc.player.swing(var3); + Vec3 var10 = this.fake.position().subtract(mc.player.position()); + double var11 = Math.max(1.0E-4, Math.sqrt(var10.x * var10.x + var10.z * var10.z)); + this.fake.push(var10.x / var11 * 0.4, 0.35, var10.z / var11 * 0.4); + float var13 = 0.9F + Mth.clamp((float)Math.random(), 0.0F, 1.0F) * 0.2F; + mc.level + .playLocalSound( + this.fake.getX(), + this.fake.getY(), + this.fake.getZ(), + this.fake.isDeadOrDying() ? SoundEvents.PLAYER_DEATH : SoundEvents.PLAYER_HURT, + SoundSource.PLAYERS, + 1.0F, + var13, + (boolean)((((235380549 | -235380549) + (235380549 & -235380549)) + ) != 0)); + return InteractionResult.FAIL; + } else { + return InteractionResult.PASS; + } + } + + private void tick() { + int var1 = -342565507; + + while (true) { + switch (var1) { + case -342565507: + default: + if (this.fake == null) { + var1 = 1272206142; + } else { + var1 = 1609226838; + } + break; + case -203640495: + if (mc.level == this.trackedWorld) { + var1 = 2084245343; + } else { + var1 = 2069522012; + } + break; + case 874278479: + if (this.fake.isDeadOrDying()) { + var1 = 1729289868; + } else { + var1 = 1333700858; + } + break; + case 1272206142: + return; + case 1333700858: + return; + case 1609226838: + if (mc.level != null) { + var1 = -203640495; + } else { + var1 = 2069522012; + } + break; + case 1729289868: + if (this.fake.deathTime > (1426864528 ^ -1426864498) + ((1426864528 & -1426864498) << 1)) { + var1 = 1771992105; + } else { + var1 = 1333700858; + } + break; + case 1771992105: + this.despawn(); + var1 = 1333700858; + break; + case 2069522012: + this.fake = null; + this.trackedWorld = mc.level; + return; + case 2084245343: + if (this.fake.isRemoved()) { + var1 = 2069522012; + } else { + var1 = 874278479; + } + } + } + } +} diff --git a/src/main/java/defpackage/apl.java b/src/main/java/defpackage/apl.java new file mode 100644 index 0000000..7f8c1fc --- /dev/null +++ b/src/main/java/defpackage/apl.java @@ -0,0 +1,271 @@ +package defpackage; + +public final class apl { + public static final apl INSTANCE = new apl(); + public static final int PAIR_WINDOW_TICKS = 10; + public static final int MAX_OFFSET = 11; + public static final int NO_ACCURACY = -1; + private static final byte MISS_OFFSET = 127; + private static final int HISTORY_CAPACITY = 50; + private static final int NO_TICK = Integer.MIN_VALUE; + private static final float PERCENT_SCALE = 100.0F; + private final byte[] history = new byte[50]; + private int historyHead; + private int historySize; + private int pendingHurtTick = -2147483648; + private int pendingJumpTick = -2147483648; + private int lastSeenTick = -2147483648; + private int lastOffset; + private boolean lastMissed; + private boolean hasResult; + private long lastResultTime; + private int resultSequence; + + private apl() { + } + + public void onJump(int var1) { + int var2 = -1762139560; + + while (true) { + switch (var2) { + case -2096878411: + this.record( + (byte)(var1 - (this.pendingHurtTick + (-615771143 ^ 615771144) + ((-615771143 & 615771144) << 1))), + (boolean)((((-2029280489 | 2029280489) + (-2029280489 & 2029280489)) + ) != 0)); + this.pendingHurtTick = -2147483648; + this.pendingJumpTick = -2147483648; + return; + case -1762139560: + default: + this.syncTick(var1); + if (this.pendingHurtTick != (363150896 ^ 1784332752) + ((363150896 & 1784332752) << 1)) { + var2 = 1377770526; + } else { + var2 = 1026743955; + } + break; + case 1026743955: + this.pendingJumpTick = var1; + return; + case 1377770526: + if (var1 - this.pendingHurtTick <= (-787170877 | 787170887) + (-787170877 & 787170887)) { + var2 = -2096878411; + } else { + var2 = 1026743955; + } + } + } + } + + public void onHurt(int var1, boolean var2) { + this.syncTick(var1); + if (this.pendingJumpTick != (-2026124928 ^ -121358720) + ((-2026124928 & -121358720) << 1) + && var1 - this.pendingJumpTick <= (743674505 | -743674495) + (743674505 & -743674495)) { + this.record( + (byte)(this.pendingJumpTick - (var1 + (400763486 | -400763485) + (400763486 & -400763485))), + (boolean)((((959989991 | -959989991) + (959989991 & -959989991)) + ) != 0)); + this.pendingHurtTick = -2147483648; + this.pendingJumpTick = -2147483648; + } else { + this.pendingJumpTick = -2147483648; + this.pendingHurtTick = var2 ? var1 : -2147483648; + } + } + + public void poll(int var1) { + int var2 = 1253738629; + + while (true) { + switch (var2) { + case -1711143158: + return; + case -1020761235: + this.pendingJumpTick = -2147483648; + var2 = -1711143158; + break; + case -103981033: + if (var1 - this.pendingJumpTick > (1238387989 | -1238387979) + (1238387989 & -1238387979)) { + var2 = -1020761235; + } else { + var2 = -1711143158; + } + break; + case 433632971: + if (this.pendingJumpTick != (864436034 | 1283047614) + (864436034 & 1283047614)) { + var2 = -103981033; + } else { + var2 = -1711143158; + } + break; + case 1253738629: + default: + this.syncTick(var1); + if (this.pendingHurtTick != (1209807700 ^ 937675948) + ((1209807700 & 937675948) << 1)) { + var2 = 1780914101; + } else { + var2 = 433632971; + } + break; + case 1780914101: + if (var1 - this.pendingHurtTick > (978799837 | -978799827) + (978799837 & -978799827)) { + var2 = 2067848966; + } else { + var2 = 433632971; + } + break; + case 2067848966: + this.record( + (byte)(127), + (boolean)((((1929543945 ^ -1929543944) + ((1929543945 & -1929543944) << 1)) + ) != 0)); + this.pendingHurtTick = -2147483648; + var2 = 433632971; + } + } + } + + public void reset() { + this.historyHead = 0; + this.historySize = 0; + this.pendingHurtTick = -2147483648; + this.pendingJumpTick = -2147483648; + this.lastSeenTick = -2147483648; + this.lastOffset = 0; + this.lastMissed = (boolean)(((0)) != 0); + this.hasResult = (boolean)(((0)) != 0); + this.lastResultTime = (-5100463000913035739L ^ 5100463000913035739L) + ((-5100463000913035739L & 5100463000913035739L) << 1); + this.resultSequence += 1; + } + + public int accuracyPercent(int var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = -1251797606; + + while (true) { + switch (var5) { + case -1799284375: + var4 = this.history[var3]; + if (var4 != (-389760408 | 389760535) + (-389760408 & 389760535)) { + var5 = 2098194234; + } else { + var5 = -630101578; + } + break; + case -1251797606: + default: + if (this.historySize == 0) { + var5 = 1969840044; + } else { + var5 = -1012658582; + } + break; + case -1116349890: + if (var3 < this.historySize) { + var5 = -1799284375; + } else { + var5 = -789432205; + } + break; + case -1012658582: + var2 = 0; + var3 = 0; + var5 = -1116349890; + break; + case -990498152: + var2++; + var5 = -630101578; + break; + case -789432205: + return Math.round(var2 * 100.0F / this.historySize); + case -630101578: + var3++; + var5 = -1116349890; + break; + case 1969840044: + return -1; + case 2098194234: + if (Math.abs(var4) <= var1) { + var5 = -990498152; + } else { + var5 = -630101578; + } + } + } + } + + public int sampleCount() { + return this.historySize; + } + + public boolean hasResult() { + return this.hasResult; + } + + public int lastOffset() { + return this.lastOffset; + } + + public boolean lastMissed() { + return this.lastMissed; + } + + public long lastResultTime() { + return this.lastResultTime; + } + + public int resultSequence() { + return this.resultSequence; + } + + private void record(byte var1, boolean var2) { + this.history[this.historyHead] = var1; + this.historyHead = (this.historyHead + (794125528 | -794125527) + (794125528 & -794125527)) + % ((1151158683 ^ -1151158633) + ((1151158683 & -1151158633) << 1)); + if (this.historySize < (585914890 | -585914840) + (585914890 & -585914840)) { + this.historySize += 1; + } + + this.lastOffset = var2 ? 0: var1; + this.lastMissed = var2; + this.hasResult = (boolean)(((1)) != 0); + this.lastResultTime = System.currentTimeMillis(); + this.resultSequence += 1; + } + + private void syncTick(int var1) { + int var2 = 362396653; + + while (true) { + switch (var2) { + case -45979767: + this.pendingHurtTick = -2147483648; + this.pendingJumpTick = -2147483648; + var2 = 1474657170; + break; + case 362396653: + default: + if (this.lastSeenTick != (-2104128315 | -43355333) + (-2104128315 & -43355333)) { + var2 = 748558412; + } else { + var2 = 1474657170; + } + break; + case 748558412: + if (var1 < this.lastSeenTick) { + var2 = -45979767; + } else { + var2 = 1474657170; + } + break; + case 1474657170: + this.lastSeenTick = var1; + return; + } + } + } +} diff --git a/src/main/java/defpackage/apm.java b/src/main/java/defpackage/apm.java new file mode 100644 index 0000000..cc8a8d5 --- /dev/null +++ b/src/main/java/defpackage/apm.java @@ -0,0 +1,386 @@ +package defpackage; + +import java.util.Objects; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Input; +import net.minecraft.world.phys.Vec2; +import net.minecraft.world.phys.Vec3; + +public final class apm implements aqg { + public static boolean hasPlayerMovement() { + int var1 = 0; + int var0 = -219883820; + + while (true) { + switch (var0) { + case -1852894773: + var1 = 1; + var0 = -291283797; + break; + case -895247226: + var1 = 0; + var0 = -291283797; + break; + case -291283797: + return (boolean)((var1) != 0); + case -219883820: + default: + if (mc.player.input.getMoveVector().lengthSquared() > 0.0F) { + var0 = -1852894773; + } else { + var0 = -895247226; + } + } + } + } + + public static double[] calculateDirection(double var0) { + Vec2 var2 = mc.player.input.getMoveVector(); + float var3 = var2.y; + float var4 = var2.x; + float var5 = mc.player.getYRot(); + if (var3 != 0.0F) { + if (var4 > 0.0F) { + var5 += var3 > 0.0F ? -45.0F : 45.0F; + } else if (var4 < 0.0F) { + var5 += var3 > 0.0F ? 45.0F : -45.0F; + } + + var4 = 0.0F; + var3 = var3 > 0.0F ? 1.0F : -1.0F; + } + + double var6 = Math.sin(Math.toRadians(var5 + 90.0F)); + double var8 = Math.cos(Math.toRadians(var5 + 90.0F)); + double var10 = var3 * var0 * var8 + var4 * var0 * var6; + double var12 = var3 * var0 * var6 - var4 * var0 * var8; + double[] var10000 = new double[2]; + var10000[0] = var10; + var10000[1] = var12; + return var10000; + } + + public static double getSpeedSqrt(Entity var0) { + double var1 = var0.getX() - var0.xo; + double var3 = var0.getY() - var0.yo; + double var5 = var0.getZ() - var0.zo; + return Math.sqrt(var1 * var1 + var5 * var5 + var3 * var3); + } + + public static void setVelocity(double var0) { + double[] var2 = calculateDirection(var0); + Objects.requireNonNull(mc.player) + .setDeltaMovement( + var2[0], + mc.player.getDeltaMovement().y(), + var2[1] + ); + } + + public static void setVelocity(double var0, double var2) { + double[] var4 = calculateDirection(var0); + Objects.requireNonNull(mc.player) + .setDeltaMovement( + var4[0], var2, var4[1] + ); + } + + public static double getDegreesRelativeToView(Vec3 var0, float var1) { + float var2 = (float)Math.atan2(-var0.x, var0.z); + double var3 = Math.toRadians(Mth.wrapDegrees(var1)); + return Math.toDegrees(Mth.wrapDegrees(var2 - var3)); + } + + public static Input getDirectionalInputForDegrees(Input var0, double var1, float var3) { + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 882136030; + + while (true) { + switch (var8) { + case -2091118804: + if (var1 >= 0.0F + var3) { + var8 = 582093471; + } else { + var8 = -1328999203; + } + break; + case -1632638441: + var7 = 1; + var8 = 938843723; + break; + case -1328999203: + if (var1 >= -180.0F + var3) { + var8 = 1368526186; + } else { + var8 = 938843723; + } + break; + case -1136408172: + var5 = 1; + var8 = -2091118804; + break; + case -870694256: + var6 = 1; + var8 = 938843723; + break; + case -743351133: + if (!(var1 < -90.0F - var3)) { + var8 = -436078074; + } else { + var8 = -1136408172; + } + break; + case -436078074: + if (var1 > 90.0F + var3) { + var8 = -1136408172; + } else { + var8 = -2091118804; + } + break; + case 582093471: + if (var1 <= 180.0F - var3) { + var8 = -1632638441; + } else { + var8 = -1328999203; + } + break; + case 718858553: + if (var1 <= 90.0F - var3) { + var8 = 1871066143; + } else { + var8 = -743351133; + } + break; + case 882136030: + default: + var4 = (var0.forward()) ? 1 : 0; + var5 = (var0.backward()) ? 1 : 0; + var6 = (var0.left()) ? 1 : 0; + var7 = (var0.right()) ? 1 : 0; + if (var1 >= -90.0F + var3) { + var8 = 718858553; + } else { + var8 = -743351133; + } + break; + case 938843723: + return new Input((boolean)var4, (boolean)var5, (boolean)(((var6) != 0)), (boolean)((var7) != 0), var0.jump(), var0.shift(), var0.sprint()); + case 1368526186: + if (var1 <= 0.0F - var3) { + var8 = -870694256; + } else { + var8 = 938843723; + } + break; + case 1871066143: + var4 = 1; + var8 = -2091118804; + } + } + } + + public static void fixMovement(fh var0, float var1, float var2) { + float var3 = 0.0F; + float var4 = 0.0F; + double var5 = 0.0; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + double var12 = 0.0; + double var14 = 0.0; + float var17 = 0.0F; + int var16 = 2136159550; + + while (true) { + switch (var16) { + case -2114909921: + var0.setForward(var7); + var0.setStrafe(var8); + return; + case -1142229551: + var9 = (float)var14; + var7 = var10; + var8 = var11; + var16 = 29051083; + break; + case -1083039334: + var11 = -1.0F; + var16 = -372142669; + break; + case -924142712: + var5 = Mth.wrapDegrees(Math.toDegrees(direction(var17, var3, var4))); + if (var3 == 0.0F) { + var16 = 50450469; + } else { + var16 = 1506467425; + } + break; + case -643483717: + var17 = var2; + var16 = -924142712; + break; + case -578902627: + if (var10 == 0.0F) { + var16 = 2051574353; + } else { + var16 = 1293540419; + } + break; + case -372142669: + if (var11 <= 1.0F) { + var16 = -89256906; + } else { + var16 = 703204224; + } + break; + case -89256906: + if (var11 == 0.0F) { + var16 = -578902627; + } else { + var16 = 1293540419; + } + break; + case 29051083: + var11++; + var16 = -372142669; + break; + case 50450469: + if (var4 == 0.0F) { + var16 = 1965013883; + } else { + var16 = 1506467425; + } + break; + case 291775070: + if (var10 <= 1.0F) { + var16 = -1083039334; + } else { + var16 = -2114909921; + } + break; + case 703204224: + var10++; + var16 = 291775070; + break; + case 1274975168: + var17 = var1; + var16 = -924142712; + break; + case 1293540419: + var12 = Mth.wrapDegrees(Math.toDegrees(direction(var1, var10, var11))); + var14 = Math.abs(var5 - var12); + if (var14 < var9) { + var16 = -1142229551; + } else { + var16 = 29051083; + } + break; + case 1506467425: + var7 = 0.0F; + var8 = 0.0F; + var9 = Float.MAX_VALUE; + var10 = -1.0F; + var16 = 291775070; + break; + case 1965013883: + return; + case 2051574353: + var16 = 29051083; + break; + case 2136159550: + default: + var3 = var0.getForward(); + var4 = var0.getStrafe(); + if (mc.player.isFallFlying()) { + var16 = 1274975168; + } else { + var16 = -643483717; + } + } + } + } + + public static double direction(float var0, float var1, float var2) { + float var3 = 0.0F; + int var4 = 656273820; + + while (true) { + switch (var4) { + case -2121008031: + if (var1 > 0.0F) { + var4 = 988079003; + } else { + var4 = -1052221733; + } + break; + case -1052221733: + if (var2 > 0.0F) { + var4 = 51341643; + } else { + var4 = -1026741531; + } + break; + case -1026741531: + if (var2 < 0.0F) { + var4 = 1886204994; + } else { + var4 = -759055363; + } + break; + case -759055363: + return Math.toRadians(var0); + case -491331869: + var0 += 180.0F; + var4 = 194327351; + break; + case 51341643: + var0 -= 90.0F * var3; + var4 = -1026741531; + break; + case 194327351: + var3 = 1.0F; + if (var1 < 0.0F) { + var4 = 794443389; + } else { + var4 = -2121008031; + } + break; + case 656273820: + default: + if (var1 < 0.0F) { + var4 = -491331869; + } else { + var4 = 194327351; + } + break; + case 794443389: + var3 = -0.5F; + var4 = -2121008031; + break; + case 988079003: + var3 = 0.5F; + var4 = -1052221733; + break; + case 1886204994: + var0 += 90.0F * var3; + var4 = -759055363; + } + } + } + + public static Input getDirectionalInputForDegrees(Input var0, double var1) { + return getDirectionalInputForDegrees(var0, var1, 20.0F); + } + + private apm() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/apn.java b/src/main/java/defpackage/apn.java new file mode 100644 index 0000000..b745de0 --- /dev/null +++ b/src/main/java/defpackage/apn.java @@ -0,0 +1,19 @@ +package defpackage; + +import com.mojang.blaze3d.platform.InputConstants; + +/* JADX INFO: loaded from: evovis-dec.jar:apn.class */ +/* synthetic */ class apn { + static final /* synthetic */ int[] $SwitchMap$com$mojang$blaze3d$platform$InputConstants$Type = new int[InputConstants.Type.values().length]; + + static { + try { + $SwitchMap$com$mojang$blaze3d$platform$InputConstants$Type[InputConstants.Type.KEYSYM.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$com$mojang$blaze3d$platform$InputConstants$Type[InputConstants.Type.MOUSE.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + } +} diff --git a/src/main/java/defpackage/apo.java b/src/main/java/defpackage/apo.java new file mode 100644 index 0000000..b1b131d --- /dev/null +++ b/src/main/java/defpackage/apo.java @@ -0,0 +1,480 @@ +package defpackage; + +import com.mojang.blaze3d.platform.InputConstants.Key; +import com.mojang.blaze3d.platform.InputConstants.Type; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Predicate; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.multiplayer.prediction.PredictiveAction; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.numbers.StyledFormat; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ServerboundPlayerCommandPacket; +import net.minecraft.network.protocol.game.ServerboundUseItemPacket; +import net.minecraft.network.protocol.game.ServerboundPlayerCommandPacket.Action; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Pose; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.scores.DisplaySlot; +import net.minecraft.world.scores.Objective; +import net.minecraft.world.scores.ReadOnlyScoreInfo; +import net.minecraft.world.scores.Scoreboard; +import org.lwjgl.glfw.GLFW; + +public final class apo implements aqf { + public static void sendSequencedPacket(PredictiveAction var0) { + mc.gameMode.startPrediction(mc.level, var0); + } + + public static void startFallFlying() { + mc.player.connection.send(new ServerboundPlayerCommandPacket(mc.player, Action.START_FALL_FLYING)); + mc.player.startFallFlying(); + } + + public static void sendPacketWithOutEvent(Packet var0) { + mc.getConnection().getConnection().send(var0, null); + } + + public static List getCube(BlockPos var0, float var1) { + return getCube(var0, var1, var1, (boolean)((((-1650719745 | 1650719746) + (-1650719745 & 1650719746))) != 0)); + } + + public static List getCube(BlockPos var0, float var1, float var2) { + return getCube(var0, var1, var2, (boolean)((((2077227345 | -2077227344) + (2077227345 & -2077227344))) != 0)); + } + + public static List getCube(BlockPos var0, float var1, float var2, boolean var3) { + ArrayList var4 = null; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + int var13 = 0; + int var12 = 211532291; + + while (true) { + switch (var12) { + case -1469816414: + var8 = var13; + var9 = var5 - (int)var1; + var12 = 1174020164; + break; + case -1334208096: + var4.add(new BlockPos(var9, var11, var10)); + var11++; + var12 = -421338938; + break; + case -1315469422: + var13 = var6 - (int)var2; + var12 = -1469816414; + break; + case -759966714: + var9++; + var12 = 1174020164; + break; + case -421338938: + if (var11 <= var6 + var2) { + var12 = -1334208096; + } else { + var12 = 12677491; + } + break; + case 12677491: + var10++; + var12 = 123498394; + break; + case 106317053: + var10 = var7 - (int)var1; + var12 = 123498394; + break; + case 123498394: + if (var10 <= var7 + var1) { + var12 = 2104694791; + } else { + var12 = -759966714; + } + break; + case 157104742: + var13 = var6; + var12 = -1469816414; + break; + case 211532291: + default: + var4 = new ArrayList(); + var5 = var0.getX(); + var6 = var0.getY(); + var7 = var0.getZ(); + if (var3) { + var12 = -1315469422; + } else { + var12 = 157104742; + } + break; + case 1174020164: + if (var9 <= var5 + var1) { + var12 = 106317053; + } else { + var12 = 1777468488; + } + break; + case 1777468488: + return var4; + case 2104694791: + var11 = var8; + var12 = -421338938; + } + } + } + + public static List getCube(BlockPos var0, BlockPos var1) { + ArrayList var2 = null; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = -49016810; + + while (true) { + switch (var6) { + case -1829015099: + var2.add(new BlockPos(var3, var5, var4)); + var5++; + var6 = -287193139; + break; + case -1824014087: + return var2; + case -756807946: + var4++; + var6 = -717493633; + break; + case -717493633: + if (var4 <= var1.getZ()) { + var6 = 998362826; + } else { + var6 = 1929636025; + } + break; + case -287193139: + if (var5 <= var1.getY()) { + var6 = -1829015099; + } else { + var6 = -756807946; + } + break; + case -49016810: + default: + var2 = new ArrayList(); + var3 = var0.getX(); + var6 = 957816491; + break; + case 957816491: + if (var3 <= var1.getX()) { + var6 = 1809032984; + } else { + var6 = -1824014087; + } + break; + case 998362826: + var5 = var0.getY(); + var6 = -287193139; + break; + case 1809032984: + var4 = var0.getZ(); + var6 = -717493633; + break; + case 1929636025: + var3++; + var6 = 957816491; + } + } + } + + public static Type getKeyType(int var0) { + Type var2 = null; + int var1 = -1746200827; + + while (true) { + switch (var1) { + case -1746200827: + default: + if (var0 < (1702563730 | -1702563722) + (1702563730 & -1702563722)) { + var1 = -1124187926; + } else { + var1 = -487984389; + } + break; + case -1124187926: + var2 = Type.MOUSE; + var1 = 1101224452; + break; + case -487984389: + var2 = Type.KEYSYM; + var1 = 1101224452; + break; + case 1101224452: + return var2; + } + } + } + + public static Stream streamEntities() { + return StreamSupport.stream(mc.level.entitiesForRendering().spliterator(), (boolean)((((-1334094709 ^ 1334094709) + ((-1334094709 & 1334094709) << 1))) != 0)); + } + + public static boolean canChangeIntoPose(Pose var0) { + return mc.player.level().noCollision(mc.player, mc.player.getDimensions(var0).makeBoundingBox(mc.player.position()).deflate(1.0E-7)); + } + + public static boolean isPotionActive(Holder var0) { + return mc.player.getActiveEffectsMap().containsKey(var0); + } + + public static boolean isPlayerInBlock(Block var0) { + return isBoxInBlock(mc.player.getBoundingBox().inflate(-0.001), var0); + } + + public static boolean isBoxInBlock(AABB var0, Block var1) { + return isBox(var0, var1x -> mc.level.getBlockState(var1x).getBlock().equals(var1)); + } + + public static boolean isBoxInBlocks(AABB var0, List var1) { + return isBox(var0, var1x -> var1.contains(mc.level.getBlockState(var1x).getBlock())); + } + + public static boolean isBox(AABB var0, Predicate var1) { + return BlockPos.betweenClosedStream(var0).anyMatch(var1); + } + + public static boolean isKey(Key var0) { + return isKey(var0.getType(), var0.getValue()); + } + + public static boolean isKey(sc var0) { + int var1 = 0; + int var3 = 0; + int var2 = -1089642554; + + while (true) { + switch (var2) { + case -1968186223: + var3 = 0; + var2 = 1319466971; + break; + case -1089642554: + default: + var1 = var0.getKeyCode(); + if (mc.gui.screen() == null) { + var2 = -328260237; + } else { + var2 = -1968186223; + } + break; + case -328260237: + if (var0.isVisible()) { + var2 = 1823649495; + } else { + var2 = -1968186223; + } + break; + case 831573310: + var3 = 1; + var2 = 1319466971; + break; + case 1319466971: + return (boolean)((var3) != 0); + case 1823649495: + if (isKey(getKeyType(var1), var1)) { + var2 = 831573310; + } else { + var2 = -1968186223; + } + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public static boolean isKey(Type var0, int var1) { + if (var1 != (-1752520974 | 1752520973) + (-1752520974 & 1752520973)) { + switch (apn.$SwitchMap$com$mojang$blaze3d$platform$InputConstants$Type[var0.ordinal()]) { + case 1: + return (boolean)(((GLFW.glfwGetKey(mc.getWindow().handle(), var1) == 1? 1: (1660137561 ^ -1660137561) + ((1660137561 & -1660137561) << 1))) != 0); + case 2: + return (boolean)(((GLFW.glfwGetMouseButton(mc.getWindow().handle(), var1) == 1? 1: (-928640296 | 928640296) + (-928640296 & 928640296))) != 0); + } + } + + return (boolean)(((0)) != 0); + } + + public static boolean isAir(BlockPos var0) { + return isAir(mc.level.getBlockState(var0)); + } + + public static boolean isAir(BlockState var0) { + int var2 = 0; + int var1 = -1644067286; + + while (true) { + switch (var1) { + case -1644067286: + default: + if (!var0.isAir()) { + var1 = 1392824935; + } else { + var1 = -339952281; + } + break; + case -1451259406: + if (var0.getBlock().equals(Blocks.VOID_AIR)) { + var1 = -339952281; + } else { + var1 = 760799046; + } + break; + case -339952281: + var2 = 1; + var1 = 1325883288; + break; + case 760799046: + var2 = 0; + var1 = 1325883288; + break; + case 1325883288: + return (boolean)((var2) != 0); + case 1392824935: + if (!var0.getBlock().equals(Blocks.CAVE_AIR)) { + var1 = -1451259406; + } else { + var1 = -339952281; + } + } + } + } + + public static boolean isChat(Screen var0) { + return var0 instanceof ChatScreen; + } + + public static boolean nullCheck() { + int var1 = 0; + int var0 = -1427558204; + + while (true) { + switch (var0) { + case -1427558204: + default: + if (mc.player != null) { + var0 = -263125629; + } else { + var0 = -103173006; + } + break; + case -439333839: + return (boolean)((var1) != 0); + case -263125629: + if (mc.level == null) { + var0 = -103173006; + } else { + var0 = 1411805023; + } + break; + case -103173006: + var1 = 1; + var0 = -439333839; + break; + case 1411805023: + var1 = 0; + var0 = -439333839; + } + } + } + + public static void useItem(InteractionHand var0) { + useItem(var0, rotationManager.getCurrentRotation()); + } + + public static void useItem(InteractionHand var0, apz var1) { + sendSequencedPacket(var2 -> new ServerboundUseItemPacket(var0, var2, var1.getYaw(), var1.getPitch())); + } + + public static float getHealth(LivingEntity var0) { + float var1 = var0.getHealth() + var0.getAbsorptionAmount(); + if (var0 instanceof Player var2) { + String var3 = bz.getInstance().getServerHandler().getServer(); + int var4 = -1; + switch (var3.hashCode()) { + case 935423623: + if (var3.equals("ReallyWorld")) { + var4 = 1; + } + break; + case 1154553036: + if (var3.equals("FunTime")) { + var4 = 0; + } + } + + switch (var4) { + case 0: + case 1: + Scoreboard var5 = var2.level().getScoreboard(); + Objective var6 = var5.getDisplayObjective(DisplaySlot.BELOW_NAME); + ReadOnlyScoreInfo var7 = var6 == null ? null : var5.getPlayerScoreInfo(var2, var6); + if (var7 != null) { + MutableComponent var8 = var7.formatValue(var6.numberFormatOrDefault(StyledFormat.NO_STYLE)); + String var9 = asv.removeFormatting(var8.getString()); + if (var9 != null && !var9.isBlank()) { + try { + float var10 = Float.parseFloat(var9.trim()); + if (Float.isFinite(var10)) { + var1 = var10; + } + } catch (NumberFormatException var11) { + } + } + } + } + } + + return Mth.clamp(var1, 0.0F, var0.getMaxHealth()); + } + + public static String getHealthString(LivingEntity var0) { + return getHealthString(getHealth(var0)); + } + + public static String getHealthString(float var0) { + String var10000 = "%.1f"; + Object[] var10001 = new Object[1]; + var10001[0] = var0; + return String.format(var10000, var10001) + .replace( + ",", + "." + ) + .replace(".0", ""); + } + + private apo() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/app.java b/src/main/java/defpackage/app.java new file mode 100644 index 0000000..2b3d58f --- /dev/null +++ b/src/main/java/defpackage/app.java @@ -0,0 +1,221 @@ +package defpackage; + +import com.mojang.blaze3d.platform.InputConstants; +import java.util.List; +import net.minecraft.client.KeyMapping; +import net.minecraft.client.gui.screens.inventory.AbstractCommandBlockEditScreen; +import net.minecraft.client.gui.screens.inventory.AnvilScreen; +import net.minecraft.client.gui.screens.inventory.SignEditScreen; +import net.minecraft.client.gui.screens.inventory.StructureBlockEditScreen; + +public final class app implements aqg { + public static final List moveKeys = List.of(mc.options.keyUp, mc.options.keyDown, mc.options.keyLeft, mc.options.keyRight, mc.options.keyJump); + public static ll script = new ll(); + public static boolean canMove = (boolean)(((1)) != 0); + + public static void addTask(Runnable var0) { + if (apm.hasPlayerMovement()) { + bz.getInstance().getScriptManager().addTask(script); + String var1 = bz.getInstance().getServerHandler().getServer(); + int var2 = -1; + switch (var1.hashCode()) { + case -495240450: + if (var1.equals("HolyWorld")) { + var2 = 1; + } + break; + case -441313278: + if (var1.equals("CopyTime")) { + var2 = 3; + } + break; + case 935423623: + if (var1.equals("ReallyWorld")) { + var2 = 2; + } + break; + case 1154553036: + if (var1.equals("FunTime")) { + var2 = 0; + } + } + + switch (var2) { + case 0: + case 1: + script.schedule(fl.class, var0x -> { + disableMoveKeys(); + return (boolean)(((1)) != 0); + }); + script.schedule(fl.class, var1x -> { + var0.run(); + enableMoveKeys(); + return (boolean)(((1)) != 0); + }); + return; + case 2: + if (mc.player.onGround()) { + script.schedule(fl.class, var0x -> { + disableMoveKeys(); + return (boolean)(((1)) != 0); + }); + script.schedule(fl.class, var0x -> { + disableMoveKeys(); + return (boolean)(((1)) != 0); + }); + script.schedule(fl.class, var1x -> { + var0.run(); + return (boolean)(((1)) != 0); + }); + script.schedule(fl.class, var0x -> { + enableMoveKeys(); + return (boolean)(((1)) != 0); + }); + return; + } + break; + case 3: + script.schedule(fl.class, var0x -> { + disableMoveKeys(); + return (boolean)(((1)) != 0); + }); + script.schedule(fl.class, var1x -> { + var0.run(); + return (boolean)(((1)) != 0); + }); + script.schedule(fl.class, var0x -> { + enableMoveKeys(); + return (boolean)(((1)) != 0); + }); + return; + } + } + + var0.run(); + } + + public static void disableMoveKeys() { + canMove = (boolean)(((0)) != 0); + unPressMoveKeys(); + } + + public static void enableMoveKeys() { + apq.closeScreen((boolean)((((623388410 | -623388409) + (623388410 & -623388409))) != 0)); + canMove = (boolean)(((1)) != 0); + updateMoveKeys(); + } + + public static void unPressMoveKeys() { + moveKeys.forEach(var0 -> var0.setDown((boolean)((((556576064 ^ -556576064) + ((556576064 & -556576064) << 1))) != 0))); + } + + public static void updateMoveKeys() { + moveKeys.forEach(var0 -> var0.setDown(InputConstants.isKeyDown(mc.getWindow(), var0.getDefaultKey().getValue()))); + } + + public static boolean shouldSkipExecution() { + int var0 = 0; + int var2 = 0; + int var1 = -1079868807; + + while (true) { + switch (var1) { + case -2033232825: + return (boolean)(((0)) != 0); + case -2014651587: + var2 = 1; + var1 = -1535977086; + break; + case -1908989388: + return (boolean)(((0)) != 0); + case -1710563678: + if (mc.gui.screen() instanceof StructureBlockEditScreen) { + var1 = -136682035; + } else { + var1 = -1332060135; + } + break; + case -1535977086: + return (boolean)((var2) != 0); + case -1332060135: + if (mc.player != null) { + var1 = 1535392602; + } else { + var1 = 740697902; + } + break; + case -1325214967: + if (mc.gui.screen() instanceof AnvilScreen) { + var1 = -1908989388; + } else { + var1 = 1124730373; + } + break; + case -1224843131: + var0 = mc.player.containerMenu.slots.size(); + if (var0 >= (1327531190 | -1327531163) + (1327531190 & -1327531163)) { + var1 = -2014651587; + } else { + var1 = 1846238865; + } + break; + case -1079868807: + default: + if (mc.gui.screen() == null) { + var1 = 498860164; + } else { + var1 = 1785185862; + } + break; + case -1072410505: + return (boolean)(((0)) != 0); + case -505590568: + if (mc.gui.screen() instanceof SignEditScreen) { + var1 = 2114720171; + } else { + var1 = -1325214967; + } + break; + case -136682035: + return (boolean)(((0)) != 0); + case 498860164: + return (boolean)(((0)) != 0); + case 740697902: + return (boolean)(((0)) != 0); + case 1124730373: + if (mc.gui.screen() instanceof AbstractCommandBlockEditScreen) { + var1 = -2033232825; + } else { + var1 = -1710563678; + } + break; + case 1535392602: + if (mc.player.containerMenu != null) { + var1 = -1224843131; + } else { + var1 = 740697902; + } + break; + case 1785185862: + if (apo.isChat(mc.gui.screen())) { + var1 = -1072410505; + } else { + var1 = -505590568; + } + break; + case 1846238865: + var2 = 0; + var1 = -1535977086; + break; + case 2114720171: + return (boolean)(((0)) != 0); + } + } + } + + private app() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/apq.java b/src/main/java/defpackage/apq.java new file mode 100644 index 0000000..72a229b --- /dev/null +++ b/src/main/java/defpackage/apq.java @@ -0,0 +1,742 @@ +package defpackage; + +import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; +import it.unimi.dsi.fastutil.ints.IntPredicate; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; +import java.util.function.Predicate; +import java.util.stream.IntStream; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; +import net.minecraft.client.KeyMapping; +import net.minecraft.core.Holder; +import net.minecraft.core.component.DataComponents; +import net.minecraft.network.HashedStack; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.Style; +import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; +import net.minecraft.network.protocol.game.ServerboundContainerClosePacket; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerInput; +import net.minecraft.world.inventory.PlayerEnderChestContainer; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.alchemy.PotionContents; + +public final class apq implements aqf { + public static final List moveKeys = List.of(mc.options.keyUp, mc.options.keyDown, mc.options.keyLeft, mc.options.keyRight, mc.options.keyJump); + + public static void updateSlots() { + AbstractContainerMenu var0 = mc.player.containerMenu; + mc.player + .connection + .send( + new ServerboundContainerClickPacket( + var0.containerId, + var0.getStateId(), + (short)(0), + (byte)(0), + ContainerInput.PICKUP_ALL, + Int2ObjectMaps.emptyMap(), + HashedStack.EMPTY + ) + ); + } + + public static void closeScreen(boolean var0) { + int var1 = -172422933; + + while (true) { + switch (var1) { + case -1145618326: + return; + case -583092191: + mc.player.connection.send(new ServerboundContainerClosePacket(mc.player.containerMenu.containerId)); + var1 = -1145618326; + break; + case -195350040: + mc.player.closeContainer(); + var1 = -1145618326; + break; + case -172422933: + default: + if (var0) { + var1 = -583092191; + } else { + var1 = -195350040; + } + } + } + } + + public static void swapHand(Slot var0, InteractionHand var1, boolean var2) { + int var3 = 0; + int var5 = 0; + int var4 = -1709495449; + + while (true) { + switch (var4) { + case -1709495449: + default: + if (var0 != null) { + var4 = 1117480048; + } else { + var4 = 2109176000; + } + break; + case -1377783202: + if (var1.equals(InteractionHand.MAIN_HAND)) { + var4 = -641872755; + } else { + var4 = -976328112; + } + break; + case -976328112: + var5 = 40; + var4 = 1911842724; + break; + case -641872755: + var5 = mc.player.getInventory().getSelectedSlot(); + var4 = 1911842724; + break; + case 723123888: + if (!(var0.container instanceof Inventory)) { + var4 = 1481142198; + } else { + var4 = -1377783202; + } + break; + case 1117480048: + if (var0.index != (2001177974 | -2001177975) + (2001177974 & -2001177975)) { + var4 = 1331664792; + } else { + var4 = 2109176000; + } + break; + case 1331664792: + if (var1.equals(InteractionHand.OFF_HAND)) { + var4 = 723123888; + } else { + var4 = -1377783202; + } + break; + case 1481142198: + if (!(var0.container instanceof PlayerEnderChestContainer)) { + var4 = 2109176000; + } else { + var4 = -1377783202; + } + break; + case 1911842724: + var3 = var5; + swapHand(var0, var3, var2); + return; + case 2109176000: + return; + } + } + } + + public static void swapHand(Slot var0, int var1, boolean var2) { + int var3 = -883884788; + + while (true) { + switch (var3) { + case -2029964120: + return; + case -1953945985: + updateSlots(); + var3 = -2029964120; + break; + case -883884788: + default: + clickSlot(var0, var1, ContainerInput.SWAP, (boolean)((((767339260 ^ -767339260) + ((767339260 & -767339260) << 1))) != 0)); + if (var2) { + var3 = -1953945985; + } else { + var3 = -2029964120; + } + } + } + } + + public static void swapHand(Slot var0, int var1) { + clickSlot(var0, var1, ContainerInput.SWAP, (boolean)((((-1227498092 ^ 1227498092) + ((-1227498092 & 1227498092) << 1))) != 0)); + } + + public static void clickSlot(Slot var0, int var1, ContainerInput var2, boolean var3) { + int var4 = 2029565320; + + while (true) { + switch (var4) { + case -959296480: + return; + case -652429311: + clickSlot(var0.index, var1, var2, var3); + var4 = -959296480; + break; + case 2029565320: + default: + if (var0 != null) { + var4 = -652429311; + } else { + var4 = -959296480; + } + } + } + } + + public static void clickSlot(int var0, int var1, ContainerInput var2, boolean var3) { + clickSlot(mc.player.containerMenu.containerId, var0, var1, var2, var3); + } + + public static void clickSlot(int var0, int var1, int var2, ContainerInput var3, boolean var4) { + int var5 = 1618411370; + + while (true) { + switch (var5) { + case 552020117: + mc.player.containerMenu.clicked(var1, var2, var3, mc.player); + var5 = 1750205793; + break; + case 1618411370: + default: + mc.gameMode.handleContainerInput(var0, var1, var2, var3, mc.player); + if (var4) { + var5 = 552020117; + } else { + var5 = 1750205793; + } + break; + case 1750205793: + return; + } + } + } + + public static Slot getSlot(Item var0) { + return getSlot(var0, var0x -> (boolean)((((-2029117758 ^ 2029117759) + ((-2029117758 & 2029117759) << 1))) != 0)); + } + + public static Slot getSlot(Item var0, Predicate var1) { + return getSlot(var0, Comparator.comparingInt(var0x -> (626120644 | -626120644) + (626120644 & -626120644)), var1); + } + + public static Slot getSlot(Predicate var0) { + return slots().filter(var0).findFirst().orElse(null); + } + + public static Slot getSlot(Predicate var0, Comparator var1) { + return slots().filter(var0).max(var1).orElse(null); + } + + public static Slot getSlot(Item var0, Comparator var1, Predicate var2) { + return slots().filter(var1x -> var1x.getItem().getItem().equals(var0)).filter(var2).max(var1).orElse(null); + } + + public static Slot getFoodMaxSaturationSlot() { + return slots().filter(var0 -> { + int var2 = 0; + int var1 = -374085994; + + while (true) { + switch (var1) { + case -1300362735: + return (boolean)((var2) != 0); + case -601012571: + var2 = 0; + var1 = -1300362735; + break; + case -555744410: + if (!((FoodProperties)var0.getItem().get(DataComponents.FOOD)).canAlwaysEat()) { + var1 = -531617678; + } else { + var1 = -601012571; + } + break; + case -531617678: + var2 = 1; + var1 = -1300362735; + break; + case -374085994: + default: + if (var0.getItem().get(DataComponents.FOOD) != null) { + var1 = -555744410; + } else { + var1 = -601012571; + } + } + } + }).max(Comparator.comparingDouble(var0 -> ((FoodProperties)var0.getItem().get(DataComponents.FOOD)).saturation())).orElse(null); + } + + public static Slot getSlot(List var0) { + return slots().filter(var1 -> var0.contains(var1.getItem().getItem())).findFirst().orElse(null); + } + + public static Slot getPotion(Holder var0) { + return slots() + .filter( + var1 -> { + PotionContents var2 = null; + int var3 = -1151846324; + + while (true) { + switch (var3) { + case -1827272992: + return (boolean)(((0)) != 0); + case -1151846324: + default: + var2 = (PotionContents)var1.getItem().get(DataComponents.POTION_CONTENTS); + if (var2 == null) { + var3 = -1827272992; + } else { + var3 = -702589578; + } + break; + case -702589578: + return StreamSupport.stream( + var2.getAllEffects().spliterator(), (boolean)((((85368839 | -85368839) + (85368839 & -85368839)) + ) != 0)) + .anyMatch(var1x -> var1x.getEffect().equals(var0)); + } + } + } + ) + .findFirst() + .orElse(null); + } + + public static Slot getPotionFromCategory(MobEffectCategory var0) { + return slots() + .filter( + var1 -> { + ItemStack var2 = null; + PotionContents var3 = null; + MobEffectCategory var4 = null; + long var5 = (-6974209360159154832L ^ 6974209360159154832L) + ((-6974209360159154832L & 6974209360159154832L) << 1); + long var7 = (5237711642520044542L ^ -5237711642520044542L) + ((5237711642520044542L & -5237711642520044542L) << 1); + MobEffectCategory var10 = null; + int var11 = 0; + int var9 = -727221952; + + while (true) { + switch (var9) { + case -2070803161: + var4 = var10; + var5 = StreamSupport.stream( + var3.getAllEffects().spliterator(), (boolean)((((1975658698 ^ -1975658698) + ((1975658698 & -1975658698) << 1)) + ) != 0)) + .filter(var1x -> ((MobEffect)var1x.getEffect().value()).getCategory().equals(var0)) + .count(); + var7 = StreamSupport.stream( + var3.getAllEffects().spliterator(), (boolean)((((-1601101769 ^ 1601101769) + ((-1601101769 & 1601101769) << 1)) + ) != 0)) + .filter(var1x -> ((MobEffect)var1x.getEffect().value()).getCategory().equals(var4)) + .count(); + if (var5 >= var7) { + var9 = -464259917; + } else { + var9 = -1964994876; + } + break; + case -1964994876: + var11 = 0; + var9 = 1382750176; + break; + case -1536652979: + var10 = MobEffectCategory.HARMFUL; + var9 = -2070803161; + break; + case -1143437297: + var10 = MobEffectCategory.BENEFICIAL; + var9 = -2070803161; + break; + case -1080503295: + return (boolean)(((0)) != 0); + case -750347125: + if (var0.equals(MobEffectCategory.BENEFICIAL)) { + var9 = -1536652979; + } else { + var9 = -1143437297; + } + break; + case -727221952: + default: + var2 = var1.getItem(); + var3 = (PotionContents)var2.get(DataComponents.POTION_CONTENTS); + if (var2.getItem().equals(Items.SPLASH_POTION)) { + var9 = 1360761804; + } else { + var9 = -1080503295; + } + break; + case -464259917: + var11 = 1; + var9 = 1382750176; + break; + case 1360761804: + if (var3 == null) { + var9 = -1080503295; + } else { + var9 = -750347125; + } + break; + case 1382750176: + return (boolean)((var11) != 0); + } + } + } + ) + .findFirst() + .orElse(null); + } + + public static int getInventoryCount(Item var0) { + return IntStream.range(0, (-14566717 | 14566762) + (-14566717 & 14566762)) + .filter(var1 -> Objects.requireNonNull(mc.player).getInventory().getItem(var1).getItem().equals(var0)) + .map(var0x -> mc.player.getInventory().getItem(var0x).getCount()) + .sum(); + } + + public static int getHotbarItems(List var0) { + return IntStream.range(0, (169481589 ^ -169481580) + ((169481589 & -169481580) << 1)) + .filter(var1 -> var0.contains(mc.player.getInventory().getItem(var1).getItem())) + .findFirst() + .orElse((-1830628616 | 1830628615) + (-1830628616 & 1830628615)); + } + + public static int getHotbarSlotId(IntPredicate var0) { + return IntStream.range(0, (-1008766285 ^ 1008766294) + ((-1008766285 & 1008766294) << 1)) + .filter(var0) + .findFirst() + .orElse((231998867 ^ -231998868) + ((231998867 & -231998868) << 1)); + } + + public static int getCount(Predicate var0) { + return slots().filter(var0).mapToInt(var0x -> var0x.getItem().getCount()).sum(); + } + + public static Slot mainHandSlot() { + long var0 = (7048028553360303369L | -7048028553360303369L) + (7048028553360303369L & -7048028553360303369L); + int var2 = 0; + int var4 = 0; + int var3 = 72649281; + + while (true) { + switch (var3) { + case -1597750847: + var2 = var4; + return slots().toList().get(Math.toIntExact(var0 - var2 + mc.player.getInventory().getSelectedSlot())); + case -635610349: + var4 = 9; + var3 = -1597750847; + break; + case 72649281: + default: + var0 = slots().count(); + if (var0 == (-980685590180285572L ^ 980685590180285618L) + ((-980685590180285572L & 980685590180285618L) << 1)) { + var3 = 1484436434; + } else { + var3 = -635610349; + } + break; + case 1484436434: + var4 = 10; + var3 = -1597750847; + } + } + } + + public static boolean isServerScreen() { + int var1 = 0; + int var0 = 705848535; + + while (true) { + switch (var0) { + case -659973812: + var1 = 0; + var0 = 1423940614; + break; + case 705848535: + default: + if (slots().toList().size() != (213044502 ^ -213044456) + ((213044502 & -213044456) << 1)) { + var0 = 1685287478; + } else { + var0 = -659973812; + } + break; + case 1423940614: + return (boolean)((var1) != 0); + case 1685287478: + var1 = 1; + var0 = 1423940614; + } + } + } + + public static Stream slots() { + return mc.player.containerMenu.slots.stream(); + } + + public static void swapAndUse(Item var0) { + swapAndUse(var0, bz.getInstance().getRotationManager().getCurrentRotation()); + } + + public static void swapAndUse(Item var0, apz var1) { + float var2 = 0.0F; + Slot var3 = null; + int var4 = 1384940664; + + while (true) { + switch (var4) { + case -482632972: + var3 = getSlot(var0); + if (var3 == null) { + var4 = 1831076889; + } else { + var4 = 1613240963; + } + break; + case 457952994: + String var5 = aqj.round(var2, 0.1) + "s"; + bz.getInstance() + .getNotifyManager() + .addNotification( + "N", + var0.getName(var0.getDefaultInstance()) + .copy() + .setStyle(Style.EMPTY.withColor(evolution.getThemeManager().getCurrentTheme().getColor().getRGB())) + .append( + Component.nullToEmpty("is on cooldown") + .copy() + .setStyle(Style.EMPTY.withColor(evolution.getThemeManager().getCurrentTheme().getWhite().getRGB())) + ) + ); + return; + case 1384940664: + default: + var2 = mc.player.getCooldowns().getCooldownPercent(var0.getDefaultInstance(), 0.0F); + if (var2 > 0.0F) { + var4 = 457952994; + } else { + var4 = -482632972; + } + break; + case 1613240963: + app.addTask(() -> swapAndUse(var3, var1)); + return; + case 1831076889: + bz.getInstance() + .getNotifyManager() + .addNotification( + "M", + var0.getName(var0.getDefaultInstance()) + .copy() + .setStyle(Style.EMPTY.withColor(evolution.getThemeManager().getCurrentTheme().getColor().getRGB())) + .append( + Component.nullToEmpty("not found") + .copy() + .setStyle(Style.EMPTY.withColor(evolution.getThemeManager().getCurrentTheme().getWhite().getRGB())) + ) + ); + return; + } + } + } + + public static void swapAndUse(Slot var0, apz var1) { + swapHand(var0, InteractionHand.MAIN_HAND, (boolean)((((-628213092 ^ 628213092) + ((-628213092 & 628213092) << 1))) != 0)); + closeScreen((boolean)((((-891706924 | 891706925) + (-891706924 & 891706925))) != 0)); + apo.useItem(InteractionHand.MAIN_HAND, var1); + swapHand(var0, InteractionHand.MAIN_HAND, (boolean)((((242237092 | -242237092) + (242237092 & -242237092))) != 0)); + closeScreen((boolean)((((-258643383 ^ 258643384) + ((-258643383 & 258643384) << 1))) != 0)); + } + + public static void moveItem(Slot var0, int var1) { + int var2 = 1344151532; + + while (true) { + switch (var2) { + case -1296073038: + moveItem( + var0.index, + var1, + (boolean)(((0)) != 0), + (boolean)((((1181449839 | -1181449839) + (1181449839 & -1181449839)) + ) != 0)); + var2 = -286810473; + break; + case -286810473: + return; + case 1344151532: + default: + if (var0 != null) { + var2 = -1296073038; + } else { + var2 = -286810473; + } + } + } + } + + public static void moveItem(Slot var0, int var1, boolean var2) { + moveItem(var0, var1, var2, (boolean)((((1716733871 ^ -1716733871) + ((1716733871 & -1716733871) << 1))) != 0)); + } + + public static void moveItem(Slot var0, int var1, boolean var2, boolean var3) { + int var4 = -133905821; + + while (true) { + switch (var4) { + case -1817520985: + moveItem(var0.index, var1, var2, var3); + var4 = 380565388; + break; + case -133905821: + default: + if (var0 != null) { + var4 = -1817520985; + } else { + var4 = 380565388; + } + break; + case 380565388: + return; + } + } + } + + public static void moveItem(int var0, int var1, boolean var2, boolean var3) { + int var4 = 0; + int var5 = -2040386866; + + while (true) { + switch (var5) { + case -2040386866: + default: + if (var0 != var1) { + var5 = 1188050101; + } else { + var5 = -469799216; + } + break; + case -1584085475: + var4 = Math.toIntExact(slots().count()) - (9); + if (var0 >= var4) { + var5 = -1218818995; + } else { + var5 = -785416110; + } + break; + case -1425129868: + clickSlot(var1, var0 - var4, ContainerInput.SWAP, (boolean)((((-1195400210 | 1195400210) + (-1195400210 & 1195400210))) != 0)); + closeScreen((boolean)((((1771662676 ^ -1771662675) + ((1771662676 & -1771662675) << 1))) != 0)); + var5 = 84004240; + break; + case -1218818995: + if (var4 == (-822237582 | 822237618) + (-822237582 & 822237618)) { + var5 = 1210399636; + } else { + var5 = -785416110; + } + break; + case -1183788504: + moveItem(var0, var1, var3); + closeScreen((boolean)((((1139984255 | -1139984254) + (1139984255 & -1139984254))) != 0)); + var5 = 1596481988; + break; + case -785416110: + if (var2) { + var5 = 348777165; + } else { + var5 = -1183788504; + } + break; + case -730314354: + app.addTask(() -> clickSlot(var1, var0 - var4, ContainerInput.SWAP, (boolean)((((-1126116924 ^ 1126116924) + ((-1126116924 & 1126116924) << 1))) != 0))); + var5 = 84004240; + break; + case -469799216: + return; + case 84004240: + return; + case 348777165: + app.addTask(() -> moveItem(var0, var1, var3)); + var5 = 1596481988; + break; + case 1188050101: + if (var0 == (1294247369 ^ -1294247370) + ((1294247369 & -1294247370) << 1)) { + var5 = -469799216; + } else { + var5 = -1584085475; + } + break; + case 1210399636: + if (var2) { + var5 = -730314354; + } else { + var5 = -1425129868; + } + break; + case 1596481988: + return; + } + } + } + + public static void moveItem(int var0, int var1, boolean var2) { + int var3 = 13084368; + + while (true) { + switch (var3) { + case -1680154176: + return; + case -795874211: + updateSlots(); + var3 = -1680154176; + break; + case 13084368: + default: + clickSlot( + var0, + 0, + ContainerInput.SWAP, + (boolean)((((-863339037 | 863339037) + (-863339037 & 863339037)) + ) != 0)); + clickSlot( + var1, + 0, + ContainerInput.SWAP, + (boolean)((((-150718904 | 150718904) + (-150718904 & 150718904)) + ) != 0)); + clickSlot( + var0, + 0, + ContainerInput.SWAP, + (boolean)((((1187252156 ^ -1187252156) + ((1187252156 & -1187252156) << 1)) + ) != 0)); + if (var2) { + var3 = -795874211; + } else { + var3 = -1680154176; + } + } + } + } + + private apq() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/apr.java b/src/main/java/defpackage/apr.java new file mode 100644 index 0000000..5673d9c --- /dev/null +++ b/src/main/java/defpackage/apr.java @@ -0,0 +1,7 @@ +package defpackage; + +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public record apr(Vec3 point, AABB box) { +} diff --git a/src/main/java/defpackage/aps.java b/src/main/java/defpackage/aps.java new file mode 100644 index 0000000..273b843 --- /dev/null +++ b/src/main/java/defpackage/aps.java @@ -0,0 +1,8 @@ +package defpackage; + +import java.util.List; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public record aps(List points, AABB box) { +} diff --git a/src/main/java/defpackage/apt.java b/src/main/java/defpackage/apt.java new file mode 100644 index 0000000..75a3eef --- /dev/null +++ b/src/main/java/defpackage/apt.java @@ -0,0 +1,641 @@ +package defpackage; + +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.Random; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; + +public class apt implements aqg { + private static final double MIN_GRID_SPACING = 0.15; + private static final int MAX_STEPS_XZ = 14; + private static final int STEPS_Y = 10; + private final Random random = new SecureRandom(); + private Vec3 offset = Vec3.ZERO; + + public apr computeVector(LivingEntity var1, float var2, apz var3, Vec3 var4, boolean var5) { + aps var6 = null; + List var7 = null; + Vec3 var8 = null; + Vec3 var9 = null; + Vec3 var11 = null; + int var10 = 42896073; + + while (true) { + switch (var10) { + case -2072355789: + this.updateOffset(var4); + if (var8 == null) { + var10 = -1667128972; + } else { + var10 = -959445361; + } + break; + case -2018686081: + var8 = this.findValidCenterOrNearest(var6.points(), var2, var5); + var10 = 1888219717; + break; + case -1819180782: + var8 = this.findBestVectorByDistance(var6.points()); + var10 = -2072355789; + break; + case -1667128972: + var11 = var1.getEyePosition(); + var10 = -491721568; + break; + case -959445361: + var11 = var8; + var10 = -491721568; + break; + case -491721568: + var9 = var11.add(this.offset); + return new apr(var9, var6.box()); + case 42896073: + default: + var6 = this.generateCandidatePoints(var1, var2, var5); + var7 = this.filterSuitable(var6.points(), var2); + var8 = this.findValidCenterOrNearest(var7, var2, var5); + if (var8 == null) { + var10 = -2018686081; + } else { + var10 = 1888219717; + } + break; + case 1888219717: + if (var8 == null) { + var10 = -1819180782; + } else { + var10 = -2072355789; + } + } + } + } + + public aps generateCandidatePoints(LivingEntity var1, float var2, boolean var3) { + AABB var4 = null; + Vec3 var5 = null; + double var6 = 0.0; + double var8 = 0.0; + double var10 = 0.0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + double var15 = 0.0; + double var17 = 0.0; + double var19 = 0.0; + double var21 = 0.0; + double var23 = 0.0; + double var25 = 0.0; + ArrayList var27 = null; + int var28 = 0; + double var29 = 0.0; + int var31 = 0; + double var32 = 0.0; + int var34 = 0; + double var35 = 0.0; + Vec3 var37 = null; + double var39 = 0.0; + double var41 = 0.0; + int var38 = 942204880; + + while (true) { + switch (var38) { + case -2012651305: + var29 = var19 + var28 * var15; + var31 = 0; + var38 = -1016194463; + break; + case -1889385044: + var41 = 0.0; + var38 = -1017430708; + break; + case -1713058827: + var23 = var39; + if (var13 <= (1701658613 ^ -1701658612) + ((1701658613 & -1701658612) << 1)) { + var38 = -1889385044; + } else { + var38 = 895110776; + } + break; + case -1293648490: + var32 = var17 + var31 * var23; + var34 = 0; + var38 = 419951114; + break; + case -1017430708: + var25 = var41; + var27 = new ArrayList(var14 * var12 * var13); + var28 = 0; + var38 = -479432085; + break; + case -1016194463: + if (var31 < var12) { + var38 = -1293648490; + } else { + var38 = 376063750; + } + break; + case -725246020: + var34++; + var38 = 419951114; + break; + case -479432085: + if (var28 < var14) { + var38 = -2012651305; + } else { + var38 = 392721240; + } + break; + case -119507376: + var39 = 0.0; + var38 = -1713058827; + break; + case 322813261: + var35 = var21 + var34 * var25; + var37 = new Vec3(var32, var29, var35); + if (this.isValidPoint(var5, var37, var2, var3)) { + var38 = 617000120; + } else { + var38 = -725246020; + } + break; + case 376063750: + var28++; + var38 = -479432085; + break; + case 392721240: + return new aps(var27, var4); + case 419951114: + if (var34 < var13) { + var38 = 322813261; + } else { + var38 = 1413478207; + } + break; + case 617000120: + var27.add(var37); + var38 = -725246020; + break; + case 895110776: + var41 = var10 / (var13 - ((818873380 ^ -818873379) + ((818873380 & -818873379) << 1))); + var38 = -1017430708; + break; + case 942204880: + default: + var4 = var1.getBoundingBox(); + var5 = mc.player.getEyePosition(); + var6 = var4.getXsize(); + var8 = var4.getYsize(); + var10 = var4.getZsize(); + var12 = this.computeSteps(var6); + var13 = this.computeSteps(var10); + var14 = Math.max(2, (2090080656 | -2090080646) + (2090080656 & -2090080646)); + var15 = var8 / (var14 - ((-751603078 ^ 751603079) + ((-751603078 & 751603079) << 1))); + var17 = var4.minX; + var19 = var4.minY; + var21 = var4.minZ; + if (var12 <= (-510574330 ^ 510574331) + ((-510574330 & 510574331) << 1)) { + var38 = -119507376; + } else { + var38 = 1179741389; + } + break; + case 1179741389: + var39 = var6 / (var12 - ((-1291266989 | 1291266990) + (-1291266989 & 1291266990))); + var38 = -1713058827; + break; + case 1413478207: + var31++; + var38 = -1016194463; + } + } + } + + public boolean hasValidPoint(LivingEntity var1, float var2, boolean var3) { + AABB var4 = null; + Vec3 var5 = null; + double var6 = 0.0; + double var8 = 0.0; + double var10 = 0.0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + double var15 = 0.0; + double var17 = 0.0; + double var19 = 0.0; + double var21 = 0.0; + double var23 = 0.0; + double var25 = 0.0; + int var27 = 0; + double var28 = 0.0; + int var30 = 0; + double var31 = 0.0; + int var33 = 0; + double var34 = 0.0; + Vec3 var36 = null; + double var38 = 0.0; + double var40 = 0.0; + int var37 = 277084703; + + while (true) { + switch (var37) { + case -1813471242: + var40 = 0.0; + var37 = 1147503321; + break; + case -1407267042: + var33++; + var37 = -329815141; + break; + case -1082045990: + var23 = var38; + if (var13 <= (130651509 | -130651508) + (130651509 & -130651508)) { + var37 = -1813471242; + } else { + var37 = -202670075; + } + break; + case -537754989: + var27++; + var37 = 1871524818; + break; + case -448650399: + if (var30 < var12) { + var37 = 499661962; + } else { + var37 = -537754989; + } + break; + case -329815141: + if (var33 < var13) { + var37 = 382604148; + } else { + var37 = 1273104737; + } + break; + case -202670075: + var40 = var10 / (var13 - ((3836894 ^ -3836893) + ((3836894 & -3836893) << 1))); + var37 = 1147503321; + break; + case -117267812: + return (boolean)(((0)) != 0); + case -117135261: + var38 = var6 / (var12 - ((1686417582 | -1686417581) + (1686417582 & -1686417581))); + var37 = -1082045990; + break; + case 121600215: + return (boolean)(((1)) != 0); + case 277084703: + default: + var4 = var1.getBoundingBox(); + var5 = mc.player.getEyePosition(); + var6 = var4.getXsize(); + var8 = var4.getYsize(); + var10 = var4.getZsize(); + var12 = this.computeSteps(var6); + var13 = this.computeSteps(var10); + var14 = Math.max(2, (-1110725352 ^ 1110725362) + ((-1110725352 & 1110725362) << 1)); + var15 = var8 / (var14 - ((-457289596 ^ 457289597) + ((-457289596 & 457289597) << 1))); + var17 = var4.minX; + var19 = var4.minY; + var21 = var4.minZ; + if (var12 <= (2096210127 ^ -2096210126) + ((2096210127 & -2096210126) << 1)) { + var37 = 522722527; + } else { + var37 = -117135261; + } + break; + case 382604148: + var34 = var21 + var33 * var25; + var36 = new Vec3(var31, var28, var34); + if (this.isValidPoint(var5, var36, var2, var3)) { + var37 = 121600215; + } else { + var37 = -1407267042; + } + break; + case 499661962: + var31 = var17 + var30 * var23; + var33 = 0; + var37 = -329815141; + break; + case 522722527: + var38 = 0.0; + var37 = -1082045990; + break; + case 1079506098: + var28 = var19 + var27 * var15; + var30 = 0; + var37 = -448650399; + break; + case 1147503321: + var25 = var40; + var27 = 0; + var37 = 1871524818; + break; + case 1273104737: + var30++; + var37 = -448650399; + break; + case 1871524818: + if (var27 < var14) { + var37 = 1079506098; + } else { + var37 = -117267812; + } + } + } + } + + private boolean isValidPoint(Vec3 var1, Vec3 var2, float var3, boolean var4) { + BlockHitResult var5 = null; + int var7 = 0; + int var6 = -1023068838; + + while (true) { + switch (var6) { + case -1023068838: + default: + if (var1.distanceToSqr(var2) > (double)var3 * var3) { + var6 = 199165136; + } else { + var6 = -236786895; + } + break; + case -869284788: + return (boolean)(((1)) != 0); + case -236786895: + if (var4) { + var6 = -869284788; + } else { + var6 = 854352910; + } + break; + case -130988627: + var7 = 0; + var6 = 2056724724; + break; + case 199165136: + return (boolean)(((0)) != 0); + case 854352910: + var5 = apu.raycast(var1, var2, Block.COLLIDER); + if (var5.getType() != Type.BLOCK) { + var6 = 1386594744; + } else { + var6 = -130988627; + } + break; + case 1386594744: + var7 = 1; + var6 = 2056724724; + break; + case 2056724724: + return (boolean)((var7) != 0); + } + } + } + + private Vec3 findValidCenterOrNearest(List var1, float var2, boolean var3) { + Vec3 var4 = null; + Vec3 var5 = null; + int var6 = 1749124970; + + while (true) { + switch (var6) { + case -1369648634: + var4 = mc.player.getEyePosition(); + var5 = this.computeCentroid(var1); + if (this.isValidPoint(var4, var5, var2, var3)) { + var6 = 1088111936; + } else { + var6 = -446377969; + } + break; + case -685224446: + if (var1.isEmpty()) { + var6 = 1792697241; + } else { + var6 = -1369648634; + } + break; + case -446377969: + return var1.stream() + .filter(var4x -> this.isValidPoint(var4, var4x, var2, var3)) + .min(Comparator.comparingDouble(var1x -> var1x.distanceToSqr(var5))) + .orElse(null); + case 1088111936: + return var5; + case 1749124970: + default: + if (var1 != null) { + var6 = -685224446; + } else { + var6 = 1792697241; + } + break; + case 1792697241: + return null; + } + } + } + + private List filterSuitable(List var1, float var2) { + Vec3 var3 = null; + double var4 = 0.0; + double var6 = 0.0; + ArrayList var8 = null; + Iterator var9 = null; + Vec3 var10 = null; + int var11 = -87111509; + + while (true) { + switch (var11) { + case -837412377: + return var8; + case -655717243: + if (var1.isEmpty()) { + var11 = 1700386522; + } else { + var11 = 1395765861; + } + break; + case -87111509: + default: + if (var1 != null) { + var11 = -655717243; + } else { + var11 = 1700386522; + } + break; + case 682297809: + if (var9.hasNext()) { + var11 = 2138073998; + } else { + var11 = -837412377; + } + break; + case 934342430: + var8.add(var10); + var11 = 959286921; + break; + case 959286921: + var11 = 682297809; + break; + case 1395765861: + var3 = mc.player.getEyePosition(); + var4 = Math.max(0.0, var2 - 0.3); + var6 = var4 * var4; + var8 = new ArrayList(); + var9 = var1.iterator(); + var11 = 682297809; + break; + case 1700386522: + return List.of(); + case 2138073998: + var10 = (Vec3)var9.next(); + if (var3.distanceToSqr(var10) < var6) { + var11 = 934342430; + } else { + var11 = 959286921; + } + } + } + } + + private Vec3 computeCentroid(List var1) { + double var2 = 0.0; + double var4 = 0.0; + double var6 = 0.0; + int var8 = 0; + Iterator var9 = null; + Vec3 var10 = null; + int var11 = -1207564062; + + while (true) { + switch (var11) { + case -1207564062: + default: + var2 = 0.0; + var4 = 0.0; + var6 = 0.0; + var8 = var1.size(); + var9 = var1.iterator(); + var11 = -391497820; + break; + case -1141758605: + var10 = (Vec3)var9.next(); + var2 += var10.x; + var4 += var10.y; + var6 += var10.z; + var11 = -391497820; + break; + case -391497820: + if (var9.hasNext()) { + var11 = -1141758605; + } else { + var11 = -156266523; + } + break; + case -156266523: + return new Vec3(var2 / var8, var4 / var8, var6 / var8); + } + } + } + + private Vec3 findBestVectorByDistance(List var1) { + Vec3 var2 = null; + int var3 = -513277881; + + while (true) { + switch (var3) { + case -802008674: + var2 = mc.player.getEyePosition(); + return var1.stream().min(Comparator.comparingDouble(var1x -> var1x.distanceToSqr(var2))).orElse(null); + case -513277881: + default: + if (var1 != null) { + var3 = -454724551; + } else { + var3 = 1176840706; + } + break; + case -454724551: + if (var1.isEmpty()) { + var3 = 1176840706; + } else { + var3 = -802008674; + } + break; + case 1176840706: + return null; + } + } + } + + private void updateOffset(Vec3 var1) { + this.offset = this.offset.add(this.random.nextGaussian(), this.random.nextGaussian(), this.random.nextGaussian()).multiply(var1); + } + + private double calculateRotationDifference(Vec3 var1, Vec3 var2, apz var3) { + apz var4 = null; + aqa var5 = null; + int var6 = -387831325; + + while (true) { + switch (var6) { + case -1287189088: + var4 = aqb.fromVec3d(var2.subtract(var1)); + var5 = var3.rotationDeltaTo(var4); + return Math.hypot(var5.getDeltaYaw(), var5.getDeltaPitch()); + case -672950747: + return Double.POSITIVE_INFINITY; + case -387831325: + } + + if (var3 == null) { + var6 = -672950747; + } else { + var6 = -1287189088; + } + } + } + + private int computeSteps(double var1) { + int var3 = 0; + int var4 = 0; + int var5 = -97654130; + + while (true) { + switch (var5) { + case -2134106875: + var3 = (int)Math.ceil(var1 / 0.15) + 1; + var4 = Math.min(var3, (2016238287 ^ -2016238273) + ((2016238287 & -2016238273) << 1)); + return Math.max(2, var4); + case -511507955: + return 1; + case -97654130: + } + + if (var1 <= 0.0) { + var5 = -511507955; + } else { + var5 = -2134106875; + } + } + } + + public Random getRandom() { + return this.random; + } + + public Vec3 getOffset() { + return this.offset; + } +} diff --git a/src/main/java/defpackage/apu.java b/src/main/java/defpackage/apu.java new file mode 100644 index 0000000..8ebef23 --- /dev/null +++ b/src/main/java/defpackage/apu.java @@ -0,0 +1,191 @@ +package defpackage; + +import java.util.Objects; +import java.util.function.Predicate; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.projectile.ProjectileUtil; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.Vec3; + +public final class apu implements aqf { + public static BlockHitResult raycast(double var0, apz var2, boolean var3) { + return raycast(Objects.requireNonNull(mc.player).getEyePosition(1.0F), var0, var2, var3); + } + + public static BlockHitResult raycast(Vec3 var0, double var1, apz var3, boolean var4) { + Entity var5 = null; + Object var6 = null; + Vec3 var7 = null; + ClientLevel var8 = null; + Fluid var9 = null; + ClipContext var10 = null; + Fluid var12 = null; + int var11 = -1967462656; + + while (true) { + switch (var11) { + case -1967462656: + default: + var5 = mc.getCameraEntity(); + if (var5 == null) { + var11 = 1258516176; + } else { + var11 = -823393895; + } + break; + case -1514767839: + var9 = var12; + var10 = new ClipContext(var0, var7, Block.OUTLINE, var9, var5); + return var8.clip(var10); + case -823393895: + var6 = var3.toVector(); + var7 = var0.add(((Vec3)var6).x * var1, ((Vec3)var6).y * var1, ((Vec3)var6).z * var1); + var8 = mc.level; + if (var8 == null) { + var11 = 1659823441; + } else { + var11 = -334046753; + } + break; + case -334046753: + if (var4) { + var11 = 1097829119; + } else { + var11 = 562784739; + } + break; + case 562784739: + var12 = Fluid.NONE; + var11 = -1514767839; + break; + case 1097829119: + var12 = Fluid.ANY; + var11 = -1514767839; + break; + case 1258516176: + return null; + case 1659823441: + return null; + } + } + } + + public static BlockHitResult raycast(Vec3 var0, Vec3 var1, Block var2) { + return raycast(var0, var1, var2, mc.player); + } + + public static BlockHitResult raycast(Vec3 var0, Vec3 var1, Block var2, Entity var3) { + return mc.level.clip(new ClipContext(var0, var1, var2, Fluid.NONE, var3)); + } + + public static EntityHitResult raytraceEntity(double var0, apz var2, Predicate var3) { + Entity var4 = null; + Vec3 var5 = null; + Vec3 var6 = null; + Vec3 var7 = null; + AABB var8 = null; + int var9 = -1027268337; + + while (true) { + switch (var9) { + case -1027268337: + default: + var4 = mc.getCameraEntity(); + if (var4 == null) { + var9 = -340678826; + } else { + var9 = 1542465889; + } + break; + case -340678826: + return null; + case 1542465889: + var5 = var4.getEyePosition(1.0F); + var6 = var2.toVector(); + var7 = var5.add(var6.x * var0, var6.y * var0, var6.z * var0); + var8 = var4.getBoundingBox().expandTowards(var6.scale(var0)).inflate(1.0, 1.0, 1.0); + return ProjectileUtil.getEntityHitResult(var4, var5, var7, var8, var1 -> { + int var3x = 0; + int var2x = 996026347; + + while (true) { + switch (var2x) { + case -943883242: + var3x = 1; + var2x = 709814898; + break; + case 709814898: + return (boolean)((var3x) != 0); + case 996026347: + default: + if (!var1.isSpectator()) { + var2x = 1803553394; + } else { + var2x = 1130406193; + } + break; + case 1130406193: + var3x = 0; + var2x = 709814898; + break; + case 1803553394: + if (var3.test(var1)) { + var2x = -943883242; + } else { + var2x = 1130406193; + } + } + } + }, var0 * var0); + } + } + } + + public static boolean rayTrace(Vec3 var0, double var1, AABB var3) { + Vec3 var4 = null; + int var6 = 0; + int var5 = 888285362; + + while (true) { + switch (var5) { + case -502855117: + if (var3.clip(var4, var4.add(var0.scale(var1))).isPresent()) { + var5 = 1779590079; + } else { + var5 = -38326333; + } + break; + case -38326333: + var6 = 0; + var5 = 116060233; + break; + case 116060233: + return (boolean)((var6) != 0); + case 888285362: + default: + var4 = Objects.requireNonNull(mc.player).getEyePosition(); + if (!var3.contains(var4)) { + var5 = -502855117; + } else { + var5 = 1779590079; + } + break; + case 1779590079: + var6 = 1; + var5 = 116060233; + } + } + } + + private apu() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/apv.java b/src/main/java/defpackage/apv.java new file mode 100644 index 0000000..7ae1b34 --- /dev/null +++ b/src/main/java/defpackage/apv.java @@ -0,0 +1,81 @@ +package defpackage; + +import net.minecraft.client.player.ClientInput; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Input; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.Vec3; + +public class apv extends ClientInput { + public boolean forceSafeWalk = (boolean)(((0)) != 0); + public float movementForward; + public float movementSideways; + public Input keyPresses; + public static final double MAX_WALKING_SPEED = 0.121; + + public apv(Input var1) { + this.keyPresses = var1; + } + + public void update() { + if (this.keyPresses.forward() != this.keyPresses.backward()) { + this.movementForward = this.keyPresses.forward() ? 1.0F : -1.0F; + } else { + this.movementForward = 0.0F; + } + + if (this.keyPresses.left() == this.keyPresses.right()) { + this.movementSideways = 0.0F; + } else { + this.movementSideways = this.keyPresses.left() ? 1.0F : -1.0F; + } + + if (this.keyPresses.shift()) { + this.movementSideways *= 0.3F; + this.movementForward *= 0.3F; + } + } + + public String toString() { + return "SimulatedPlayerInput(forwards={" + + this.keyPresses.forward() + + "}, backwards={" + + this.keyPresses.backward() + + "}, left={" + + this.keyPresses.left() + + "}, right={" + + this.keyPresses.right() + + "}, jumping={" + + this.keyPresses.jump() + + "}, sprinting=" + + this.keyPresses.sprint() + + ", slowDown=" + + this.keyPresses.shift() + + ")"; + } + + public static apv fromClientPlayer(Input var0) { + return new apv(var0); + } + + public static apv guessInput(Player var0) { + Vec3 var1 = var0.position().subtract(new Vec3(var0.xo, var0.yo, var0.zo)); + double var2 = var1.horizontalDistanceSqr(); + Input var4 = new Input( + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((!var0.onGround() ? 1: (-1955066708 ^ 1955066708) + ((-1955066708 & 1955066708) << 1))) != 0), + var0.isShiftKeyDown(), + (boolean)(((var2 >= 0.014641 ? 1: (-1262359876 | 1262359876) + (-1262359876 & 1262359876)) + ) != 0)); + if (var2 > 0.0025000000000000005) { + double var5 = apm.getDegreesRelativeToView(var1, var0.getYRot()); + double var7 = Mth.wrapDegrees(var5); + var4 = apm.getDirectionalInputForDegrees(var4, var7); + } + + return new apv(var4); + } +} diff --git a/src/main/java/defpackage/apw.java b/src/main/java/defpackage/apw.java new file mode 100644 index 0000000..423268e --- /dev/null +++ b/src/main/java/defpackage/apw.java @@ -0,0 +1,1773 @@ +package defpackage; + +import it.unimi.dsi.fastutil.objects.Object2DoubleArrayMap; +import it.unimi.dsi.fastutil.objects.Object2DoubleMap; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Holder; +import net.minecraft.core.BlockPos.MutableBlockPos; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.FluidTags; +import net.minecraft.tags.TagKey; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.vehicle.boat.Boat; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.LadderBlock; +import net.minecraft.world.level.block.PowderSnowBlock; +import net.minecraft.world.level.block.TrapDoorBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public class apw implements aqf { + public final Player player; + public final apv input; + public Vec3 pos; + public Vec3 velocity; + public AABB boundingBox; + public float yaw; + public float pitch; + public boolean sprinting; + public float fallDistance; + public int jumpingCooldown; + public boolean isJumping; + public boolean isFallFlying; + public boolean onGround; + public boolean horizontalCollision; + public boolean verticalCollision; + public boolean touchingWater; + public boolean isSwimming; + public boolean submergedInWater; + private final Object2DoubleMap> fluidHeight; + private final HashSet> submergedFluidTag; + private int simulatedTicks = 0; + private boolean clipLedged = (boolean)(((0)) != 0); + private static final double STEP_HEIGHT = 0.5; + + public apw( + Player var1, + apv var2, + Vec3 var3, + Vec3 var4, + AABB var5, + float var6, + float var7, + boolean var8, + float var9, + int var10, + boolean var11, + boolean var12, + boolean var13, + boolean var14, + boolean var15, + boolean var16, + boolean var17, + boolean var18, + Object2DoubleMap> var19, + HashSet> var20 + ) { + this.player = var1; + this.input = var2; + this.pos = var3; + this.velocity = var4; + this.boundingBox = var5; + this.yaw = var6; + this.pitch = var7; + this.sprinting = var8; + this.fallDistance = var9; + this.jumpingCooldown = var10; + this.isJumping = var11; + this.isFallFlying = var12; + this.onGround = var13; + this.horizontalCollision = var14; + this.verticalCollision = var15; + this.touchingWater = var16; + this.isSwimming = var17; + this.submergedInWater = var18; + this.fluidHeight = var19; + this.submergedFluidTag = var20; + } + + public static apw simulateLocalPlayer(int var0) { + apw var1 = null; + int var2 = 0; + int var3 = 1340715470; + + while (true) { + switch (var3) { + case -2121815761: + if (var2 < var0) { + var3 = -158357426; + } else { + var3 = 1600973009; + } + break; + case -158357426: + var1.tick(); + var2++; + var3 = -2121815761; + break; + case 1340715470: + default: + var1 = fromClientPlayer(apv.fromClientPlayer(mc.player.input.keyPresses)); + var2 = 0; + var3 = -2121815761; + break; + case 1600973009: + return var1; + } + } + } + + public static apw simulateOtherPlayer(Player var0, int var1) { + apw var2 = null; + int var3 = 0; + int var4 = 1274658344; + + while (true) { + switch (var4) { + case -1898913514: + return var2; + case 151621013: + if (var3 < var1) { + var4 = 637975443; + } else { + var4 = -1898913514; + } + break; + case 637975443: + var2.tick(); + var3++; + var4 = 151621013; + break; + case 1274658344: + default: + var2 = fromOtherPlayer(var0, apv.guessInput(var0)); + var3 = 0; + var4 = 151621013; + } + } + } + + public static apw fromClientPlayer(apv var0) { + LocalPlayer var1 = mc.player; + return new apw( + var1, + var0, + var1.position(), + var1.getDeltaMovement(), + var1.getBoundingBox(), + var1.getYRot(), + var1.getXRot(), + var1.isSprinting(), + (float)var1.fallDistance, + var1.noJumpDelay, + var1.jumping, + var1.isFallFlying(), + var1.onGround(), + var1.horizontalCollision, + var1.verticalCollision, + var1.isInWater(), + var1.isSwimming(), + var1.isUnderWater(), + snapshotFluidHeight(var1), + snapshotSubmergedFluids(var1) + ); + } + + public static apw fromOtherPlayer(Player var0, apv var1) { + return new apw( + var0, + var1, + var0.position(), + var0.position().subtract(new Vec3(var0.xo, var0.yo, var0.zo)), + var0.getBoundingBox(), + var0.getYRot(), + var0.getXRot(), + var0.isSprinting(), + (float)var0.fallDistance, + var0.noJumpDelay, + var0.jumping, + var0.isFallFlying(), + var0.onGround(), + var0.horizontalCollision, + var0.verticalCollision, + var0.isInWater(), + var0.isSwimming(), + var0.isUnderWater(), + snapshotFluidHeight(var0), + snapshotSubmergedFluids(var0) + ); + } + + public Vec3 pos() { + return this.player.position(); + } + + public void tick() { + this.simulatedTicks += 1; + this.clipLedged = (boolean)(((0)) != 0); + if (!(this.pos.y <= -70.0)) { + this.input.update(); + this.checkWaterState(); + this.updateSubmergedInWaterState(); + this.updateSwimming(); + if (this.jumpingCooldown > 0) { + this.jumpingCooldown -= 1; + } + + this.isJumping = this.input.keyPresses.jump(); + double var1 = this.velocity.x; + double var3 = this.velocity.y; + double var5 = this.velocity.z; + if (Math.abs(this.velocity.x) < 0.003) { + var1 = 0.0; + } + + if (Math.abs(this.velocity.y) < 0.003) { + var3 = 0.0; + } + + if (Math.abs(this.velocity.z) < 0.003) { + var5 = 0.0; + } + + if (this.onGround) { + this.isFallFlying = (boolean)(((0)) != 0); + } + + this.velocity = new Vec3(var1, var3, var5); + if (this.isJumping) { + double var7 = this.isInLava() ? this.getFluidHeight(FluidTags.LAVA) : this.getFluidHeight(FluidTags.WATER); + int var9 = this.isTouchingWater() && var7 > 0.0 + ? 1: 0; + double var10 = this.getSwimHeight(); + if (var9 == 0 || this.onGround && !(var7 > var10)) { + if (!this.isInLava() || this.onGround && !(var7 > var10)) { + if ((this.onGround || var9 != 0 && var7 <= var10) && this.jumpingCooldown == 0) { + this.jump(); + this.jumpingCooldown = 10; + } + } else { + this.swimUpward(FluidTags.LAVA); + } + } else { + this.swimUpward(FluidTags.WATER); + } + } + + float var12 = this.input.movementSideways * 0.98F; + float var8 = this.input.movementForward * 0.98F; + float var13 = 0.0F; + if (this.hasStatusEffect(MobEffects.SLOW_FALLING) || this.hasStatusEffect(MobEffects.LEVITATION)) { + this.onLanding(); + } + + this.travel(new Vec3(var12, var13, var8)); + } + } + + private void travel(Vec3 var1) { + if (this.isSwimming && !this.player.isPassenger()) { + double var2 = this.getRotationVector().y; + double var4 = var2 < -0.2 ? 0.085 : 0.06; + BlockPos var6 = new BlockPos(Mth.floor(this.pos.x), Mth.floor(this.pos.y + 1.0 - 0.1), Mth.floor(this.pos.z)); + if (var2 <= 0.0 || this.input.keyPresses.jump() || !this.player.level().getBlockState(var6).getFluidState().isEmpty()) { + this.velocity = this.velocity.add(0.0, (var2 - this.velocity.y) * var4, 0.0); + } + } + + double var19 = this.velocity.y; + double var20 = 0.08; + int var21 = this.velocity.y <= 0.0 ? 1: 0; + if (this.velocity.y <= 0.0 && this.hasStatusEffect(MobEffects.SLOW_FALLING)) { + var20 = 0.01; + this.onLanding(); + } + + if (this.isTouchingWater() && this.player.isAffectedByFluids()) { + double var25 = this.pos.y; + float var28 = this.isSprinting() ? 0.9F : 0.8F; + float var30 = 0.02F; + float var32 = (float)this.getAttributeValue(Attributes.WATER_MOVEMENT_EFFICIENCY); + if (!this.onGround) { + var32 *= 0.5F; + } + + if (var32 > 0.0F) { + var28 += (0.54600006F - var28) * var32 / 3.0F; + var30 += (this.getMovementSpeed() - var30) * var32 / 3.0F; + } + + if (this.hasStatusEffect(MobEffects.DOLPHINS_GRACE)) { + var28 = 0.96F; + } + + this.updateVelocity(var30, var1); + this.move(this.velocity); + Vec3 var33 = this.velocity; + if (this.horizontalCollision && this.isClimbing()) { + var33 = new Vec3(var33.x, 0.2, var33.z); + } + + this.velocity = var33.multiply(var28, 0.8, var28); + Vec3 var34 = this.player.getFluidFallingAdjustedMovement(var20, (boolean)((var21) != 0), this.velocity); + this.velocity = var34; + if (this.horizontalCollision && this.doesNotCollide(var34.x, var34.y + 0.6 - this.pos.y + var25, var34.z)) { + this.velocity = new Vec3(var34.x, 0.3, var34.z); + } + } else if (this.isInLava() && this.player.isAffectedByFluids()) { + double var24 = this.pos.y; + this.updateVelocity(0.02F, var1); + this.move(this.velocity); + if (this.getFluidHeight(FluidTags.LAVA) <= this.getSwimHeight()) { + this.velocity = this.velocity.multiply(0.5, 0.8, 0.5); + this.velocity = this.player.getFluidFallingAdjustedMovement(var20, (boolean)((var21) != 0), this.velocity); + } else { + this.velocity = this.velocity.scale(0.5); + } + + if (!this.player.isNoGravity()) { + this.velocity = this.velocity.add(0.0, -var20 / 4.0, 0.0); + } + + if (this.horizontalCollision && this.doesNotCollide(this.velocity.x, this.velocity.y + 0.6 - this.pos.y + var24, this.velocity.z)) { + this.velocity = new Vec3(this.velocity.x, 0.3, this.velocity.z); + } + } else if (this.isFallFlying) { + Vec3 var9 = this.velocity; + if (var9.y > -0.5) { + this.fallDistance = 1.0F; + } + + Vec3 var10 = this.getRotationVector(); + float var11 = this.pitch * (float) (Math.PI / 180.0); + double var12 = Math.sqrt(var10.x * var10.x + var10.z * var10.z); + double var14 = this.velocity.horizontalDistance(); + double var16 = var10.length(); + float var18 = Mth.cos(var11); + var18 = (float)(var18 * (var18 * Math.min(1.0, var16 / 0.4))); + var9 = this.velocity.add(0.0, var20 * (-1.0 + var18 * 0.75), 0.0); + if (var9.y < 0.0 && var12 > 0.0) { + double var7 = var9.y * -0.1 * var18; + var9 = var9.add(var10.x * var7 / var12, var7, var10.z * var7 / var12); + } + + if (var11 < 0.0F && var12 > 0.0) { + double var22 = var14 * -Mth.sin(var11) * 0.04; + var9 = var9.add(-var10.x * var22 / var12, var22 * 3.2, -var10.z * var22 / var12); + } + + if (var12 > 0.0) { + var9 = var9.add((var10.x / var12 * var14 - var9.x) * 0.1, 0.0, (var10.z / var12 * var14 - var9.z) * 0.1); + } + + this.velocity = var9.multiply(0.99, 0.98, 0.99); + this.move(this.velocity); + } else { + BlockPos var23 = this.getVelocityAffectingPos(); + float var8 = this.player.level().getBlockState(var23).getBlock().getFriction(); + float var27 = this.onGround ? var8 * 0.91F : 0.91F; + Vec3 var29 = this.applyMovementInput(var1, var8); + double var31 = var29.y; + if (this.hasStatusEffect(MobEffects.LEVITATION)) { + MobEffectInstance var13 = this.getStatusEffect(MobEffects.LEVITATION); + if (var13 != null) { + var31 += (0.05 * (var13.getAmplifier() + (-1879804893 ^ 1879804894) + ((-1879804893 & 1879804894) << 1)) - var29.y) * 0.2; + } + } else if (this.player.level().isClientSide() && !this.player.level().hasChunkAt(var23)) { + var31 = this.pos.y > this.player.level().getMinY() ? -0.1 : 0.0; + } else if (!this.player.isNoGravity()) { + var31 -= var20; + } + + if (this.player.shouldDiscardFriction()) { + this.velocity = new Vec3(var29.x, var31, var29.z); + } else { + this.velocity = new Vec3(var29.x * var27, var31 * 0.98F, var29.z * var27); + } + } + + if (this.player.getAbilities().flying && !this.player.isPassenger()) { + this.velocity = new Vec3(this.velocity.x, var19 * 0.6, this.velocity.z); + this.onLanding(); + } + } + + private Vec3 applyMovementInput(Vec3 var1, float var2) { + Vec3 var3 = null; + BlockPos var4 = null; + BlockState var5 = null; + int var6 = -245635044; + + while (true) { + switch (var6) { + case -1982709708: + if (PowderSnowBlock.canEntityWalkOnPowderSnow(this.player)) { + var6 = 1462114943; + } else { + var6 = 1999093107; + } + break; + case -1688380745: + if (var5.is(Blocks.POWDER_SNOW)) { + var6 = -1982709708; + } else { + var6 = 1999093107; + } + break; + case -1473582759: + if (var5 != null) { + var6 = -1688380745; + } else { + var6 = 1999093107; + } + break; + case -245635044: + default: + this.updateVelocity(this.getMovementSpeed(var2), var1); + this.velocity = this.applyClimbingSpeed(this.velocity); + this.move(this.velocity); + var3 = this.velocity; + var4 = this.posToBlockPos(this.pos); + var5 = this.getState(var4); + if (!this.horizontalCollision) { + var6 = 1552017045; + } else { + var6 = 30850615; + } + break; + case 30850615: + if (!this.isClimbing()) { + var6 = -1473582759; + } else { + var6 = 1462114943; + } + break; + case 1462114943: + var3 = new Vec3(var3.x, 0.2, var3.z); + var6 = 1999093107; + break; + case 1552017045: + if (this.isJumping) { + var6 = 30850615; + } else { + var6 = 1999093107; + } + break; + case 1999093107: + return var3; + } + } + } + + private void updateVelocity(float var1, Vec3 var2) { + Vec3 var3 = Entity.getInputVector(var2, var1, this.yaw); + this.velocity = this.velocity.add(var3); + } + + private float getMovementSpeed(float var1) { + float var3 = 0.0F; + int var2 = 2046435083; + + while (true) { + switch (var2) { + case -280730042: + return var3; + case 347881234: + var3 = this.getMovementSpeed() * (0.21600002F / (var1 * var1 * var1)); + var2 = -280730042; + break; + case 1763807619: + var3 = this.getAirStrafingSpeed(); + var2 = -280730042; + break; + case 2046435083: + default: + if (this.onGround) { + var2 = 347881234; + } else { + var2 = 1763807619; + } + } + } + } + + private float getAirStrafingSpeed() { + float var1 = 0.0F; + int var2 = 1725331398; + + while (true) { + switch (var2) { + case 212073592: + return var1 + 0.006F; + case 1363275045: + return var1; + case 1725331398: + } + + var1 = 0.02F; + if (this.input.keyPresses.sprint()) { + var2 = 212073592; + } else { + var2 = 1363275045; + } + } + } + + private float getMovementSpeed() { + return 0.1F; + } + + private void move(Vec3 var1) { + Vec3 var2 = var1; + var2 = this.adjustMovementForSneaking(var2); + Vec3 var3 = this.adjustMovementForCollisions(var2); + if (var3.lengthSqr() > 1.0E-7) { + this.pos = this.pos.add(var3); + this.boundingBox = this.player.dimensions.makeBoundingBox(this.pos); + } + + int var4 = !Mth.equal(var1.x, var3.x) + ? 1: 0; + int var5 = !Mth.equal(var1.z, var3.z) + ? 1: 0; + this.horizontalCollision = (boolean)(((var4 == 0 && var5 == 0 + ? 0: (1091552200 | -1091552199) + (1091552200 & -1091552199))) != 0); + this.verticalCollision = (boolean)(((var1.y != var3.y + ? 1: (2107444777 | -2107444777) + (2107444777 & -2107444777))) != 0); + this.onGround = (boolean)(((this.verticalCollision && var1.y < 0.0 + ? 1: (2017170844 | -2017170844) + (2017170844 & -2017170844))) != 0); + if (!this.isTouchingWater()) { + this.checkWaterState(); + } + + if (this.onGround) { + this.onLanding(); + } else if (var1.y < 0.0) { + this.fallDistance = this.fallDistance - (float)var1.y; + } + + Vec3 var6 = this.velocity; + if (this.horizontalCollision || this.verticalCollision) { + this.velocity = new Vec3(var4 != 0 ? 0.0 : var6.x, this.onGround ? 0.0 : var6.y, var5 != 0 ? 0.0 : var6.z); + } + } + + private Vec3 adjustMovementForCollisions(Vec3 var1) { + AABB var2 = null; + List var3 = null; + Vec3 var4 = null; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + Vec3 var9 = null; + Vec3 var10 = null; + Vec3 var11 = null; + int var13 = 0; + int var14 = 0; + int var15 = 0; + int var16 = 0; + int var12 = -342810320; + + while (true) { + switch (var12) { + case -2066406434: + if (var5 == 0) { + var12 = -1809884481; + } else { + var12 = 1715905807; + } + break; + case -1969353046: + var13 = 0; + var12 = 1623214069; + break; + case -1922139104: + var4 = Entity.collideBoundingBox(this.player, var1, var2, this.player.level(), var3); + var12 = 1742054055; + break; + case -1809884481: + if (var7 != 0) { + var12 = 1715905807; + } else { + var12 = 324474781; + } + break; + case -1441702412: + var8 = var16; + if (this.player.maxUpStep() > 0.0F) { + var12 = 1467538701; + } else { + var12 = 324474781; + } + break; + case -1267566909: + var14 = 1; + var12 = 606621152; + break; + case -1164580065: + var14 = 0; + var12 = 606621152; + break; + case -1143156490: + if (var9.horizontalDistanceSqr() > var4.horizontalDistanceSqr()) { + var12 = 1886036861; + } else { + var12 = 324474781; + } + break; + case -914606833: + if (var1.y < 0.0) { + var12 = 217066905; + } else { + var12 = 391014074; + } + break; + case -342810320: + default: + var2 = new AABB(-0.3, 0.0, -0.3, 0.3, 1.8, 0.3).move(this.pos); + var3 = Collections.emptyList(); + if (var1.lengthSqr() == 0.0) { + var12 = 2006828066; + } else { + var12 = -1922139104; + } + break; + case 193808377: + if (var6 != 0) { + var12 = -914606833; + } else { + var12 = 391014074; + } + break; + case 217066905: + var16 = 1; + var12 = -1441702412; + break; + case 243810204: + if (var11.horizontalDistanceSqr() > var9.horizontalDistanceSqr()) { + var12 = 255933974; + } else { + var12 = -1143156490; + } + break; + case 255933974: + var9 = var11; + var12 = -1143156490; + break; + case 324474781: + return var4; + case 391014074: + var16 = 0; + var12 = -1441702412; + break; + case 399021807: + var7 = var15; + if (!this.onGround) { + var12 = 193808377; + } else { + var12 = 217066905; + } + break; + case 606621152: + var6 = var14; + if (var1.z != var4.z) { + var12 = 1998467026; + } else { + var12 = 2144842785; + } + break; + case 1118761405: + var13 = 1; + var12 = 1623214069; + break; + case 1467538701: + if (var8 != 0) { + var12 = -2066406434; + } else { + var12 = 324474781; + } + break; + case 1623214069: + var5 = var13; + if (var1.y != var4.y) { + var12 = -1267566909; + } else { + var12 = -1164580065; + } + break; + case 1715905807: + var9 = Entity.collideBoundingBox(this.player, new Vec3(var1.x, this.player.maxUpStep(), var1.z), var2, this.player.level(), var3); + var10 = Entity.collideBoundingBox( + this.player, new Vec3(0.0, this.player.maxUpStep(), 0.0), var2.expandTowards(var1.x, 0.0, var1.z), this.player.level(), var3 + ); + var11 = Entity.collideBoundingBox(this.player, new Vec3(var1.x, 0.0, var1.z), var2.move(var10), this.player.level(), var3).add(var10); + if (var10.y < this.player.maxUpStep()) { + var12 = 243810204; + } else { + var12 = -1143156490; + } + break; + case 1742054055: + if (var1.x != var4.x) { + var12 = 1118761405; + } else { + var12 = -1969353046; + } + break; + case 1886036861: + return var9.add(Entity.collideBoundingBox(this.player, new Vec3(0.0, -var9.y + var1.y, 0.0), var2.move(var9), this.player.level(), var3)); + case 1998467026: + var15 = 1; + var12 = 399021807; + break; + case 2006828066: + var4 = var1; + var12 = 1742054055; + break; + case 2144842785: + var15 = 0; + var12 = 399021807; + } + } + } + + private void onLanding() { + this.fallDistance = 0.0F; + } + + public void jump() { + float var1 = 0.0F; + int var2 = -765966490; + + while (true) { + switch (var2) { + case -765966490: + default: + this.velocity = this.velocity.add(0.0, this.getJumpVelocity() - this.velocity.y, 0.0); + if (this.isSprinting()) { + var2 = -402231267; + } else { + var2 = 909059706; + } + break; + case -402231267: + var1 = (float)Math.toRadians(this.yaw); + this.velocity = this.velocity.add(-Mth.sin(var1) * 0.2, 0.0, Mth.cos(var1) * 0.2); + var2 = 909059706; + break; + case 909059706: + return; + } + } + } + + private Vec3 applyClimbingSpeed(Vec3 var1) { + double var2 = 0.0; + double var4 = 0.0; + double var6 = 0.0; + int var8 = -1373303376; + + while (true) { + switch (var8) { + case -1373303376: + default: + if (!this.isClimbing()) { + var8 = 469173855; + } else { + var8 = 1323175654; + } + break; + case -890009495: + if (!this.getState(this.posToBlockPos(this.pos)).is(Blocks.SCAFFOLDING)) { + var8 = 18411509; + } else { + var8 = 544535805; + } + break; + case 18411509: + if (this.player.isSuppressingSlidingDownLadder()) { + var8 = 1680504937; + } else { + var8 = 544535805; + } + break; + case 469173855: + return var1; + case 544535805: + return new Vec3(var2, var6, var4); + case 1323175654: + this.onLanding(); + var2 = Mth.clamp(var1.x, -0.15F, 0.15F); + var4 = Mth.clamp(var1.z, -0.15F, 0.15F); + var6 = Math.max(var1.y, -0.15F); + if (var6 < 0.0) { + var8 = -890009495; + } else { + var8 = 544535805; + } + break; + case 1680504937: + var6 = 0.0; + var8 = 544535805; + } + } + } + + public boolean isClimbing() { + BlockPos var1 = null; + BlockState var2 = null; + int var4 = 0; + int var3 = -2096751736; + + while (true) { + switch (var3) { + case -2096751736: + default: + var1 = this.posToBlockPos(this.pos); + var2 = this.getState(var1); + if (var2.is(BlockTags.CLIMBABLE)) { + var3 = -1440763322; + } else { + var3 = 2073929730; + } + break; + case -2024665511: + return (boolean)((var4) != 0); + case -1812346971: + var4 = 1; + var3 = -2024665511; + break; + case -1440763322: + return (boolean)(((1)) != 0); + case 1761665662: + var4 = 0; + var3 = -2024665511; + break; + case 1911385436: + if (this.canEnterTrapdoor(var1, var2)) { + var3 = -1812346971; + } else { + var3 = 1761665662; + } + break; + case 2073929730: + if (var2.getBlock() instanceof TrapDoorBlock) { + var3 = 1911385436; + } else { + var3 = 1761665662; + } + } + } + } + + private boolean canEnterTrapdoor(BlockPos var1, BlockState var2) { + BlockState var3 = null; + int var5 = 0; + int var4 = 1301573359; + + while (true) { + switch (var4) { + case -1650865520: + if (((Direction)var3.getValue(LadderBlock.FACING)).equals(var2.getValue(TrapDoorBlock.FACING))) { + var4 = -1120018616; + } else { + var4 = -1040481364; + } + break; + case -1120018616: + var5 = 1; + var4 = 1439022116; + break; + case -1040481364: + var5 = 0; + var4 = 1439022116; + break; + case -232362678: + return (boolean)(((0)) != 0); + case 1253568532: + var3 = this.player.level().getBlockState(var1.below()); + if (var3.is(Blocks.LADDER)) { + var4 = -1650865520; + } else { + var4 = -1040481364; + } + break; + case 1301573359: + default: + if (!(Boolean)var2.getValue(TrapDoorBlock.OPEN)) { + var4 = -232362678; + } else { + var4 = 1253568532; + } + break; + case 1439022116: + return (boolean)((var5) != 0); + } + } + } + + private Vec3 adjustMovementForSneaking(Vec3 var1) { + if (var1.y <= 0.0 && this.method_30263()) { + double var2 = var1.x; + double var4 = var1.z; + + double var6; + for (var6 = 0.05; + var2 != 0.0 && this.player.level().noCollision(this.player, this.boundingBox.move(var2, -0.5, 0.0)); + var2 += var2 > 0.0 ? -var6 : var6 + ) { + if (var2 < var6 && var2 >= -var6) { + var2 = 0.0; + break; + } + } + + while (var4 != 0.0 && this.player.level().noCollision(this.player, this.boundingBox.move(0.0, -0.5, var4))) { + if (var4 < var6 && var4 >= -var6) { + var4 = 0.0; + break; + } + + var4 += var4 > 0.0 ? -var6 : var6; + } + + while (var2 != 0.0 && var4 != 0.0 && this.player.level().noCollision(this.player, this.boundingBox.move(var2, -0.5, var4))) { + var2 = var2 < var6 && var2 >= -var6 ? 0.0 : (var2 > 0.0 ? var2 - var6 : var2 + var6); + if (var4 < var6 && var4 >= -var6) { + var4 = 0.0; + break; + } + + var4 += var4 > 0.0 ? -var6 : var6; + } + + if (var1.x != var2 || var1.z != var4) { + this.clipLedged = (boolean)(((1)) != 0); + } + + if (this.shouldClipAtLedge()) { + var1 = new Vec3(var2, var1.y, var4); + } + } + + return var1; + } + + protected boolean shouldClipAtLedge() { + int var2 = 0; + int var1 = 845326572; + + while (true) { + switch (var1) { + case -1845347169: + if (this.input.forceSafeWalk) { + var1 = -1265418153; + } else { + var1 = -1146957285; + } + break; + case -1265418153: + var2 = 1; + var1 = 158792048; + break; + case -1146957285: + var2 = 0; + var1 = 158792048; + break; + case 158792048: + return (boolean)((var2) != 0); + case 845326572: + default: + if (!this.input.keyPresses.shift()) { + var1 = -1845347169; + } else { + var1 = -1265418153; + } + } + } + } + + private boolean method_30263() { + int var2 = 0; + int var1 = -1094238205; + + while (true) { + switch (var1) { + case -1094238205: + default: + if (!this.onGround) { + var1 = 1557649498; + } else { + var1 = 1963821553; + } + break; + case -980754355: + var2 = 0; + var1 = 313220302; + break; + case 107293076: + if (!this.player.level().noCollision(this.player, this.boundingBox.move(0.0, this.fallDistance - 0.5, 0.0))) { + var1 = 1963821553; + } else { + var1 = -980754355; + } + break; + case 313220302: + return (boolean)((var2) != 0); + case 1557649498: + if (this.fallDistance < 0.5) { + var1 = 107293076; + } else { + var1 = -980754355; + } + break; + case 1963821553: + var2 = 1; + var1 = 313220302; + } + } + } + + private boolean isSprinting() { + return this.sprinting; + } + + private float getJumpVelocity() { + return 0.42F * this.getJumpVelocityMultiplier() + this.getJumpBoostVelocityModifier(); + } + + private float getJumpBoostVelocityModifier() { + MobEffectInstance var1 = null; + int var2 = -628862913; + + while (true) { + switch (var2) { + case -977395022: + return 0.0F; + case -628862913: + default: + if (this.hasStatusEffect(MobEffects.JUMP_BOOST)) { + var2 = 1615679370; + } else { + var2 = -977395022; + } + break; + case 1615679370: + var1 = this.getStatusEffect(MobEffects.JUMP_BOOST); + return 0.1F * (var1.getAmplifier() + (-874160330 ^ 874160331) + ((-874160330 & 874160331) << 1)); + } + } + } + + private float getJumpVelocityMultiplier() { + float var1 = 0.0F; + Block var2 = null; + float var3 = 0.0F; + Block var4 = null; + float var6 = 0.0F; + int var5 = 1311475811; + + while (true) { + switch (var5) { + case -2084178696: + var3 = var4.getJumpFactor(); + var5 = -2066499372; + break; + case -2066499372: + if (var1 == 1.0F) { + var5 = -6013836; + } else { + var5 = 2133923324; + } + break; + case -1080355803: + var3 = 0.0F; + var4 = this.getState(this.getVelocityAffectingPos()).getBlock(); + if (var4 != null) { + var5 = -2084178696; + } else { + var5 = -2066499372; + } + break; + case -105490979: + var1 = var2.getJumpFactor(); + var5 = -1080355803; + break; + case -6013836: + var6 = var3; + var5 = 1801742935; + break; + case 1311475811: + default: + var1 = 0.0F; + var2 = this.getState(this.posToBlockPos(this.pos)).getBlock(); + if (var2 != null) { + var5 = -105490979; + } else { + var5 = -1080355803; + } + break; + case 1801742935: + return var6; + case 2133923324: + var6 = var1; + var5 = 1801742935; + } + } + } + + private boolean doesNotCollide(double var1, double var3, double var5) { + return this.doesNotCollide(this.boundingBox.move(var1, var3, var5)); + } + + private boolean doesNotCollide(AABB var1) { + int var3 = 0; + int var2 = 1313372897; + + while (true) { + switch (var2) { + case -1871463865: + var3 = 0; + var2 = -524213023; + break; + case -1372723842: + var3 = 1; + var2 = -524213023; + break; + case -524213023: + return (boolean)((var3) != 0); + case 207153916: + if (!this.player.level().containsAnyLiquid(var1)) { + var2 = -1372723842; + } else { + var2 = -1871463865; + } + break; + case 1313372897: + default: + if (this.player.level().noCollision(this.player, var1)) { + var2 = 207153916; + } else { + var2 = -1871463865; + } + } + } + } + + private void swimUpward(TagKey var1) { + this.velocity = this.velocity.add(0.0, 0.04F, 0.0); + } + + private BlockPos getVelocityAffectingPos() { + return BlockPos.containing(this.pos.x, this.boundingBox.minY - 0.5000001, this.pos.z); + } + + private double getSwimHeight() { + double var2 = 0.0; + int var1 = 39544379; + + while (true) { + switch (var1) { + case -382311805: + var2 = 0.0; + var1 = 1690447249; + break; + case 39544379: + default: + if (this.player.getEyeHeight() < 0.4) { + var1 = -382311805; + } else { + var1 = 1533848640; + } + break; + case 1533848640: + var2 = 0.4; + var1 = 1690447249; + break; + case 1690447249: + return var2; + } + } + } + + private boolean isTouchingWater() { + return this.touchingWater; + } + + public boolean isInLava() { + int var2 = 0; + int var1 = 528952115; + + while (true) { + switch (var1) { + case -160071108: + var2 = 0; + var1 = 1207918343; + break; + case 528952115: + default: + if (this.fluidHeight.getDouble(FluidTags.LAVA) > 0.0) { + var1 = 2094663471; + } else { + var1 = -160071108; + } + break; + case 1207918343: + return (boolean)((var2) != 0); + case 2094663471: + var2 = 1; + var1 = 1207918343; + } + } + } + + private void checkWaterState() { + Boat var1 = null; + int var2 = 979008730; + + while (true) { + switch (var2) { + case -1691389185: + return; + case -1464684493: + var1 = (Boat)this.player.getVehicle(); + if (!var1.isUnderWater()) { + var2 = -540311592; + } else { + var2 = 1344189182; + } + break; + case -540311592: + this.touchingWater = (boolean)(((0)) != 0); + return; + case -286304387: + this.touchingWater = (boolean)(((0)) != 0); + var2 = -1691389185; + break; + case 922169815: + this.onLanding(); + this.touchingWater = (boolean)(((1)) != 0); + var2 = -1691389185; + break; + case 979008730: + default: + if (this.player.getVehicle() instanceof Boat) { + var2 = -1464684493; + } else { + var2 = 1344189182; + } + break; + case 1344189182: + if (this.updateMovementInFluid(FluidTags.WATER, 0.014)) { + var2 = 922169815; + } else { + var2 = -286304387; + } + } + } + } + + private void updateSwimming() { + if (this.isSwimming) { + this.isSwimming = (boolean)(((this.isSprinting() && this.isTouchingWater() && !this.player.isPassenger() + ? 1: (2036636310 | -2036636310) + (2036636310 & -2036636310))) != 0); + } else { + this.isSwimming = (boolean)(((this.isSprinting() + && this.isSubmergedInWater() + && !this.player.isPassenger() + && this.player.level().getFluidState(this.posToBlockPos(this.pos)).is(FluidTags.WATER) + ? 1: (79098373 ^ -79098373) + ((79098373 & -79098373) << 1))) != 0); + } + } + + private void updateSubmergedInWaterState() { + this.submergedInWater = this.submergedFluidTag.contains(FluidTags.WATER); + this.submergedFluidTag.clear(); + double var1 = this.getEyeY() - 0.11111111F; + if (!(this.player.getVehicle() instanceof Boat var4 && !var4.isUnderWater() && var4.getBoundingBox().maxY >= var1 && var4.getBoundingBox().minY <= var1)) { + BlockPos var8 = BlockPos.containing(this.pos.x, var1, this.pos.z); + FluidState var5 = this.player.level().getFluidState(var8); + double var6 = var8.getY() + var5.getHeight(this.player.level(), var8); + if (var6 > var1) { + var5.typeHolder().tags().forEach(this.submergedFluidTag::add); + } + } + } + + private static Object2DoubleMap> snapshotFluidHeight(Entity var0) { + Object2DoubleArrayMap var1 = null; + double var2 = 0.0; + double var4 = 0.0; + int var6 = 1867571270; + + while (true) { + switch (var6) { + case -1964133490: + return var1; + case 281258886: + var1.put(FluidTags.LAVA, var4); + var6 = -1964133490; + break; + case 663023296: + var1.put(FluidTags.WATER, var2); + var6 = 1927194692; + break; + case 1867571270: + default: + var1 = new Object2DoubleArrayMap((-667046681 ^ 667046683) + ((-667046681 & 667046683) << 1)); + var2 = var0.getFluidHeight(FluidTags.WATER); + if (var2 > 0.0) { + var6 = 663023296; + } else { + var6 = 1927194692; + } + break; + case 1927194692: + var4 = var0.getFluidHeight(FluidTags.LAVA); + if (var4 > 0.0) { + var6 = 281258886; + } else { + var6 = -1964133490; + } + } + } + } + + private static HashSet> snapshotSubmergedFluids(Entity var0) { + HashSet var1 = null; + int var2 = -373113582; + + while (true) { + switch (var2) { + case -2101066756: + var1.add(FluidTags.LAVA); + var2 = 988964760; + break; + case -1452734572: + var1.add(FluidTags.WATER); + var2 = -1448191706; + break; + case -1448191706: + if (var0.isEyeInFluid(FluidTags.LAVA)) { + var2 = -2101066756; + } else { + var2 = 988964760; + } + break; + case -373113582: + default: + var1 = new HashSet((-1969118166 | 1969118168) + (-1969118166 & 1969118168)); + if (var0.isEyeInFluid(FluidTags.WATER)) { + var2 = -1452734572; + } else { + var2 = -1448191706; + } + break; + case 988964760: + return var1; + } + } + } + + private double getEyeY() { + return this.pos.y + this.player.getEyeHeight(); + } + + public boolean isSubmergedInWater() { + int var2 = 0; + int var1 = -1254893307; + + while (true) { + switch (var1) { + case -1254893307: + default: + if (this.submergedInWater) { + var1 = 1201744163; + } else { + var1 = 2011660740; + } + break; + case 654394824: + var2 = 1; + var1 = 2028755755; + break; + case 1201744163: + if (this.isTouchingWater()) { + var1 = 654394824; + } else { + var1 = 2011660740; + } + break; + case 2011660740: + var2 = 0; + var1 = 2028755755; + break; + case 2028755755: + return (boolean)((var2) != 0); + } + } + } + + private double getFluidHeight(TagKey var1) { + return this.fluidHeight.getDouble(var1); + } + + private boolean updateMovementInFluid(TagKey var1, double var2) { + AABB var4 = null; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + double var11 = 0.0; + int var13 = 0; + int var14 = 0; + Vec3 var15 = null; + int var16 = 0; + MutableBlockPos var17 = null; + int var18 = 0; + int var19 = 0; + int var20 = 0; + FluidState var21 = null; + double var22 = 0.0; + Vec3 var24 = null; + int var25 = -719304607; + + while (true) { + switch (var25) { + case -1883068372: + return (boolean)(((0)) != 0); + case -1880483043: + var14 = 1; + var11 = Math.max(var22 - var4.minY, var11); + if (var13 != 0) { + var25 = -1333457858; + } else { + var25 = 1028827417; + } + break; + case -1333457858: + var24 = var21.getFlow(this.player.level(), var17); + if (var11 < 0.4) { + var25 = 963835747; + } else { + var25 = -3855371; + } + break; + case -1299654129: + if (var18 < var6) { + var25 = 1288599608; + } else { + var25 = 1735641711; + } + break; + case -1220714090: + var20 = var9; + var25 = 1327010406; + break; + case -734041705: + if (var15.length() < 0.0045) { + var25 = -112212834; + } else { + var25 = 1910903915; + } + break; + case -719304607: + default: + if (this.isRegionUnloaded()) { + var25 = -1883068372; + } else { + var25 = 667712487; + } + break; + case -555942342: + if (var19 < var8) { + var25 = -1220714090; + } else { + var25 = 858509030; + } + break; + case -247013164: + var19++; + var25 = -555942342; + break; + case -112212834: + var15 = var15.normalize().scale(0.0045); + var25 = 1910903915; + break; + case -70848612: + this.fluidHeight.put(var1, var11); + return (boolean)((var14) != 0); + case -3855371: + var15 = var15.add(var24); + var16++; + var25 = 1028827417; + break; + case 337625336: + if (Math.abs(this.velocity.z) < 0.003) { + var25 = -734041705; + } else { + var25 = 1910903915; + } + break; + case 548518049: + if (var16 > 0) { + var25 = 1217267849; + } else { + var25 = 1540075879; + } + break; + case 667712487: + var4 = this.boundingBox.deflate(0.001); + var5 = Mth.floor(var4.minX); + var6 = Mth.ceil(var4.maxX); + var7 = Mth.floor(var4.minY); + var8 = Mth.ceil(var4.maxY); + var9 = Mth.floor(var4.minZ); + var10 = Mth.ceil(var4.maxZ); + var11 = 0.0; + var13 = 1; + var14 = 0; + var15 = Vec3.ZERO; + var16 = 0; + var17 = new MutableBlockPos(); + var18 = var5; + var25 = -1299654129; + break; + case 858509030: + var18++; + var25 = -1299654129; + break; + case 963835747: + var24 = var24.scale(var11); + var25 = -3855371; + break; + case 1028827417: + var20++; + var25 = 1327010406; + break; + case 1114756511: + var22 = var19 + var21.getHeight(this.player.level(), var17); + if (var22 >= var4.minY) { + var25 = -1880483043; + } else { + var25 = 1028827417; + } + break; + case 1217267849: + var15 = var15.scale(1.0 / var16); + var25 = 1540075879; + break; + case 1288599608: + var19 = var7; + var25 = -555942342; + break; + case 1327010406: + if (var20 < var10) { + var25 = 1417007111; + } else { + var25 = -247013164; + } + break; + case 1417007111: + var17.set(var18, var19, var20); + var21 = this.player.level().getFluidState(var17); + if (var21.is(var1)) { + var25 = 1114756511; + } else { + var25 = 1028827417; + } + break; + case 1540075879: + var15 = var15.scale(var2); + if (Math.abs(this.velocity.x) < 0.003) { + var25 = 337625336; + } else { + var25 = 1910903915; + } + break; + case 1735641711: + if (var15.length() > 0.0) { + var25 = 548518049; + } else { + var25 = -70848612; + } + break; + case 1910903915: + this.velocity = this.velocity.add(var15); + var25 = -70848612; + } + } + } + + private boolean isRegionUnloaded() { + Object var1 = null; + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var7 = 0; + int var6 = -1972396505; + + while (true) { + switch (var6) { + case -1972396505: + default: + var1 = this.boundingBox.inflate(1.0); + var2 = Mth.floor(((AABB)var1).minX); + var3 = Mth.ceil(((AABB)var1).maxX); + var4 = Mth.floor(((AABB)var1).minZ); + var5 = Mth.ceil(((AABB)var1).maxZ); + if (!this.player.level().hasChunksAt(var2, var4, var3, var5)) { + var6 = 2135684401; + } else { + var6 = -1050015774; + } + break; + case -1050015774: + var7 = 0; + var6 = 225347752; + break; + case 225347752: + return (boolean)((var7) != 0); + case 2135684401: + var7 = 1; + var6 = 225347752; + } + } + } + + private Vec3 getRotationVector() { + return this.getRotationVector(this.pitch, this.yaw); + } + + private Vec3 getRotationVector(float var1, float var2) { + float var3 = (float)(var1 * Math.PI / 180.0); + float var4 = (float)(-var2 * Math.PI / 180.0); + float var5 = Mth.cos(var4); + float var6 = Mth.sin(var4); + float var7 = Mth.cos(var3); + float var8 = Mth.sin(var3); + return new Vec3(var6 * var7, -var8, var5 * var7); + } + + public boolean hasStatusEffect(Holder var1) { + MobEffectInstance var2 = null; + int var4 = 0; + int var3 = -194229190; + + while (true) { + switch (var3) { + case -1061578252: + return (boolean)((var4) != 0); + case -671766905: + if (var2.getDuration() >= this.simulatedTicks) { + var3 = -76702370; + } else { + var3 = -478391351; + } + break; + case -478391351: + var4 = 0; + var3 = -1061578252; + break; + case -194229190: + default: + var2 = this.player.getEffect(var1); + if (var2 != null) { + var3 = -671766905; + } else { + var3 = -478391351; + } + break; + case -76702370: + var4 = 1; + var3 = -1061578252; + } + } + } + + private MobEffectInstance getStatusEffect(Holder var1) { + MobEffectInstance var2 = null; + int var3 = -588957606; + + while (true) { + switch (var3) { + case -1828957262: + return var2; + case -1584212971: + if (var2.getDuration() < this.simulatedTicks) { + var3 = -1202186797; + } else { + var3 = -1828957262; + } + break; + case -1202186797: + return null; + case -588957606: + default: + var2 = this.player.getEffect(var1); + if (var2 != null) { + var3 = -1584212971; + } else { + var3 = -1202186797; + } + } + } + } + + public double getAttributeValue(Holder var1) { + return this.player.getAttributes().getValue(var1); + } + + public apw clone() { + return new apw( + this.player, + this.input, + this.pos, + this.velocity, + this.boundingBox, + this.yaw, + this.pitch, + this.sprinting, + this.fallDistance, + this.jumpingCooldown, + this.isJumping, + this.isFallFlying, + this.onGround, + this.horizontalCollision, + this.verticalCollision, + this.touchingWater, + this.isSwimming, + this.submergedInWater, + new Object2DoubleArrayMap(this.fluidHeight), + new HashSet<>(this.submergedFluidTag) + ); + } + + public BlockPos posToBlockPos(Vec3 var1) { + return new BlockPos(Mth.floor(var1.x), Mth.floor(var1.y), Mth.floor(var1.z)); + } + + public BlockState getState(BlockPos var1) { + return this.player.level().getBlockState(var1); + } +} diff --git a/src/main/java/defpackage/apx.java b/src/main/java/defpackage/apx.java new file mode 100644 index 0000000..aecf6ba --- /dev/null +++ b/src/main/java/defpackage/apx.java @@ -0,0 +1,188 @@ +package defpackage; + +import java.util.List; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.entity.decoration.ArmorStand; +import net.minecraft.world.entity.player.Player; + +public class apx { + private final List targetSettings; + + public boolean isValid(LivingEntity var1) { + int var2 = -1458951026; + + while (true) { + switch (var2) { + case -1458951026: + default: + if (this.isLocalPlayer(var1)) { + var2 = 968947524; + } else { + var2 = 1965114452; + } + break; + case -1168169943: + return this.isValidEntityType(var1); + case -1137585471: + return (boolean)(((0)) != 0); + case 968947524: + return (boolean)(((0)) != 0); + case 1807350354: + return (boolean)(((0)) != 0); + case 1860593195: + if (this.isBotPlayer(var1)) { + var2 = -1137585471; + } else { + var2 = -1168169943; + } + break; + case 1965114452: + if (this.isInvalidHealth(var1)) { + var2 = 1807350354; + } else { + var2 = 1860593195; + } + } + } + } + + private boolean isLocalPlayer(LivingEntity var1) { + int var3 = 0; + int var2 = -1466898148; + + while (true) { + switch (var2) { + case -1932827557: + var3 = 0; + var2 = -660488040; + break; + case -1466898148: + default: + if (var1 == aqg.mc.player) { + var2 = 316253493; + } else { + var2 = -1932827557; + } + break; + case -660488040: + return (boolean)((var3) != 0); + case 316253493: + var3 = 1; + var2 = -660488040; + } + } + } + + private boolean isInvalidHealth(LivingEntity var1) { + int var3 = 0; + int var2 = 2093788911; + + while (true) { + switch (var2) { + case -149216464: + return (boolean)((var3) != 0); + case 59032039: + var3 = 1; + var2 = -149216464; + break; + case 658925370: + var3 = 0; + var2 = -149216464; + break; + case 1740981192: + if (var1.getHealth() <= 0.0F) { + var2 = 59032039; + } else { + var2 = 658925370; + } + break; + case 2093788911: + default: + if (var1.isAlive()) { + var2 = 1740981192; + } else { + var2 = 59032039; + } + } + } + } + + private boolean isBotPlayer(LivingEntity var1) { + return (boolean)(((0)) != 0); + } + + private boolean isNakedPlayer(LivingEntity var1) { + return var1.isAlwaysTicking(); + } + + private boolean isValidEntityType(LivingEntity var1) { + Player var2 = null; + int var4 = 0; + int var3 = -1211744755; + + while (true) { + switch (var3) { + case -1960088264: + return this.targetSettings.contains("Hostiles"); + case -1685613364: + if (!(var1 instanceof ArmorStand)) { + var3 = 2013235807; + } else { + var3 = 876300520; + } + break; + case -1211744755: + default: + if (var1 instanceof Player) { + var3 = -986085516; + } else { + var3 = -18485459; + } + break; + case -1064616401: + if (var1 instanceof Animal) { + var3 = -85634534; + } else { + var3 = -1685613364; + } + break; + case -986085516: + var2 = (Player)var1; + if (bz.getInstance().getFriendManager().isFriend(var2.getGameProfile().name())) { + var3 = 139257100; + } else { + var3 = -788467491; + } + break; + case -788467491: + return this.targetSettings.contains("Players"); + case -85634534: + return this.targetSettings.contains("Passives"); + case -18485459: + if (var1 instanceof Mob) { + var3 = -1960088264; + } else { + var3 = -1064616401; + } + break; + case 139257100: + return (boolean)(((0)) != 0); + case 876300520: + var4 = 0; + var3 = 1426744457; + break; + case 1426744457: + return (boolean)((var4) != 0); + case 2013235807: + var4 = 1; + var3 = 1426744457; + } + } + } + + public apx(List var1) { + this.targetSettings = var1; + } +} diff --git a/src/main/java/defpackage/apy.java b/src/main/java/defpackage/apy.java new file mode 100644 index 0000000..0f0f0b8 --- /dev/null +++ b/src/main/java/defpackage/apy.java @@ -0,0 +1,126 @@ +package defpackage; + +import java.util.Comparator; +import java.util.Optional; +import java.util.function.Predicate; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; + +public class apy implements aqf { + private final apt pointFinder = new apt(); + private LivingEntity currentTarget = null; + private Stream potentialTargets; + + public void lockTarget(LivingEntity var1) { + int var2 = -1420011751; + + while (true) { + switch (var2) { + case -2097926321: + this.currentTarget = var1; + var2 = 2043599101; + break; + case -1420011751: + default: + if (this.currentTarget == null) { + var2 = -2097926321; + } else { + var2 = 2043599101; + } + break; + case 2043599101: + return; + } + } + } + + public void releaseTarget() { + this.currentTarget = null; + } + + public void validateTarget(Predicate var1) { + int var2 = 607438618; + + while (true) { + switch (var2) { + case -1879739773: + return; + case 607438618: + default: + this.findFirstMatch(var1).ifPresent(this::lockTarget); + if (this.currentTarget != null) { + var2 = 928969768; + } else { + var2 = -1879739773; + } + break; + case 653287739: + this.releaseTarget(); + var2 = -1879739773; + break; + case 928969768: + if (!var1.test(this.currentTarget)) { + var2 = 653287739; + } else { + var2 = -1879739773; + } + } + } + } + + public void searchTargets(Iterable var1, float var2, boolean var3) { + int var4 = 978438413; + + while (true) { + switch (var4) { + case -2132471020: + if (!this.pointFinder.hasValidPoint(this.currentTarget, var2, var3)) { + var4 = 1546371220; + } else { + var4 = -323081193; + } + break; + case -323081193: + this.potentialTargets = this.createStreamFromEntities(var1, var2, var3); + return; + case 978438413: + default: + if (this.currentTarget != null) { + var4 = -2132471020; + } else { + var4 = -323081193; + } + break; + case 1546371220: + this.releaseTarget(); + var4 = -323081193; + } + } + } + + private Stream createStreamFromEntities(Iterable var1, float var2, boolean var3) { + return StreamSupport.stream(var1.spliterator(), (boolean)((((157912110 | -157912110) + (157912110 & -157912110))) != 0)) + .filter(LivingEntity.class::isInstance) + .map(LivingEntity.class::cast) + .filter(var3x -> this.pointFinder.hasValidPoint(var3x, var2, var3)) + .sorted(Comparator.comparingDouble(var0 -> var0.distanceTo(mc.player))); + } + + private Optional findFirstMatch(Predicate var1) { + return this.potentialTargets.filter(var1).findFirst(); + } + + public apt getPointFinder() { + return this.pointFinder; + } + + public LivingEntity getCurrentTarget() { + return this.currentTarget; + } + + public Stream getPotentialTargets() { + return this.potentialTargets; + } +} diff --git a/src/main/java/defpackage/apz.java b/src/main/java/defpackage/apz.java new file mode 100644 index 0000000..2c6e3cd --- /dev/null +++ b/src/main/java/defpackage/apz.java @@ -0,0 +1,253 @@ +package defpackage; + +import net.minecraft.client.Minecraft; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +public class apz { + private final float yaw; + private final float pitch; + private boolean isNormalized; + public static final apz ZERO = new apz(0.0F, 0.0F); + + public apz(float var1, float var2) { + this(var1, var2, (boolean)((((-2068988473 ^ 2068988473) + ((-2068988473 & 2068988473) << 1))) != 0)); + } + + public apz(float var1, float var2, boolean var3) { + this.yaw = var1; + this.pitch = var2; + this.isNormalized = var3; + } + + public static apz lookingAt(Vec3 var0, Vec3 var1) { + return fromRotationVec(var0.subtract(var1)); + } + + public static apz fromRotationVec(Vec3 var0) { + double var1 = var0.x; + double var3 = var0.y; + double var5 = var0.z; + return new apz( + (float)Mth.wrapDegrees(Math.toDegrees(Math.atan2(var5, var1)) - 90.0), + (float)Mth.wrapDegrees(-Math.toDegrees(Math.atan2(var3, Math.sqrt(var1 * var1 + var5 * var5)))) + ); + } + + public float angleTo(apz var1) { + return Math.min(this.rotationDeltaTo(var1).length(), 180.0F); + } + + public aqa rotationDeltaTo(apz var1) { + return new aqa(this.angleDifference(var1.yaw, this.yaw), this.angleDifference(var1.pitch, this.pitch)); + } + + private float angleDifference(float var1, float var2) { + return Mth.wrapDegrees(var1 - var2); + } + + public boolean approximatelyEquals(apz var1, float var2) { + int var4 = 0; + int var3 = -1340487196; + + while (true) { + switch (var3) { + case -1647689933: + var4 = 1; + var3 = 1383529488; + break; + case -1460667411: + var4 = 0; + var3 = 1383529488; + break; + case -1340487196: + default: + if (this.angleTo(var1) <= var2) { + var3 = -1647689933; + } else { + var3 = -1460667411; + } + break; + case 1383529488: + return (boolean)((var4) != 0); + } + } + } + + public boolean isNormalized() { + return this.isNormalized; + } + + public Vec3 getDirectionVector() { + return Vec3.directionFromRotation(this.pitch, this.yaw); + } + + public final Vec3 toVector() { + float var1 = this.pitch * (float) (Math.PI / 180.0); + float var2 = -this.yaw * (float) (Math.PI / 180.0); + float var3 = Mth.cos(var2); + float var4 = Mth.sin(var2); + float var5 = Mth.cos(var1); + float var6 = Mth.sin(var1); + return new Vec3(var4 * var5, -var6, var3 * var5); + } + + public apz towardsLinear(apz var1, float var2, float var3) { + aqa var4 = this.rotationDeltaTo(var1); + float var5 = var4.length(); + float var6 = Math.abs(var4.getDeltaYaw() / var5) * var2; + float var7 = Math.abs(var4.getDeltaPitch() / var5) * var3; + float var8 = Mth.clamp(var4.getDeltaYaw(), -var6, var6); + float var9 = Mth.clamp(var4.getDeltaPitch(), -var7, var7); + return new apz(this.yaw + var8, this.pitch + var9); + } + + public boolean check() { + int var2 = 0; + int var1 = -948289527; + + while (true) { + switch (var1) { + case -1441011884: + return (boolean)((var2) != 0); + case -1262541325: + if (!Float.isNaN(this.yaw)) { + var1 = 227715288; + } else { + var1 = 458645131; + } + break; + case -948289527: + default: + if (!Float.isInfinite(this.yaw)) { + var1 = -1262541325; + } else { + var1 = 458645131; + } + break; + case -121078196: + var2 = 0; + var1 = -1441011884; + break; + case 227715288: + if (!Float.isInfinite(this.pitch)) { + var1 = 1408237373; + } else { + var1 = 458645131; + } + break; + case 458645131: + var2 = 1; + var1 = -1441011884; + break; + case 1408237373: + if (Float.isNaN(this.pitch)) { + var1 = 458645131; + } else { + var1 = -121078196; + } + } + } + } + + public static float gcd() { + double var0 = (Double)Minecraft.getInstance().options.sensitivity().get() * 0.6F + 0.2F; + return (float)(var0 * var0 * var0 * 8.0 * 0.15F); + } + + public apz normalize(apz var1) { + aqa var2 = null; + double var3 = 0.0; + int var5 = 0; + int var6 = 0; + int var7 = -749491999; + + while (true) { + switch (var7) { + case -749491999: + default: + if (!this.isNormalized) { + var7 = -159901239; + } else { + var7 = -370359509; + } + break; + case -370359509: + return this; + case -159901239: + if (this.equals(var1)) { + var7 = -370359509; + } else { + var7 = 917170721; + } + break; + case 917170721: + var2 = var1.rotationDeltaTo(this); + var3 = gcd(); + var5 = (int)(var2.getDeltaYaw() / var3); + var6 = (int)(var2.getDeltaPitch() / var3); + return new apz( + (float)(var1.getYaw() + var5 * var3), (float)(var1.getPitch() + var6 * var3), (boolean)((((-152092599 | 152092600) + (-152092599 & 152092600)) + ) != 0)); + } + } + } + + public apz add(aqa var1) { + return new apz(this.yaw + var1.getDeltaYaw(), this.pitch + var1.getDeltaPitch()); + } + + @Override + public boolean equals(Object var1) { + apz var2 = null; + int var4 = 0; + int var3 = -524488263; + + while (true) { + switch (var3) { + case -1379136880: + var4 = 0; + var3 = 682201117; + break; + case -993151561: + var4 = 1; + var3 = 682201117; + break; + case -524488263: + default: + if (var1 instanceof apz) { + var3 = 1939692724; + } else { + var3 = 917768913; + } + break; + case 682201117: + return (boolean)((var4) != 0); + case 917768913: + return (boolean)(((0)) != 0); + case 1696612874: + if (var2.pitch == this.pitch) { + var3 = -993151561; + } else { + var3 = -1379136880; + } + break; + case 1939692724: + var2 = (apz)var1; + if (var2.yaw == this.yaw) { + var3 = 1696612874; + } else { + var3 = -1379136880; + } + } + } + } + + public float getYaw() { + return this.yaw; + } + + public float getPitch() { + return this.pitch; + } +} diff --git a/src/main/java/defpackage/aq.java b/src/main/java/defpackage/aq.java new file mode 100644 index 0000000..dde158a --- /dev/null +++ b/src/main/java/defpackage/aq.java @@ -0,0 +1,16 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; + +public class aq extends ax implements aw { + float amount; + + public aq(float var1) { + this.amount = var1; + } + + @Override + public void applyPose(PoseStack var1) { + var1.translate(0.0F, this.amount, 0.0F); + } +} diff --git a/src/main/java/defpackage/aqa.java b/src/main/java/defpackage/aqa.java new file mode 100644 index 0000000..70c360b --- /dev/null +++ b/src/main/java/defpackage/aqa.java @@ -0,0 +1,67 @@ +package defpackage; + +import net.minecraft.world.phys.Vec2; + +public class aqa { + private final float deltaYaw; + private final float deltaPitch; + + public aqa(float var1, float var2) { + this.deltaYaw = var1; + this.deltaPitch = var2; + } + + public float length() { + return (float)Math.sqrt(this.deltaYaw * this.deltaYaw + this.deltaPitch * this.deltaPitch); + } + + public float getDeltaYaw() { + return this.deltaYaw; + } + + public float getDeltaPitch() { + return this.deltaPitch; + } + + public Vec2 toVec2f() { + return new Vec2(this.deltaYaw, this.deltaPitch); + } + + public boolean isInRange(float var1) { + return this.isInRange(var1, var1); + } + + public boolean isInRange(float var1, float var2) { + int var4 = 0; + int var3 = -1940655105; + + while (true) { + switch (var3) { + case -1940655105: + default: + if (Math.abs(this.deltaYaw) < var1) { + var3 = -196571629; + } else { + var3 = 368004752; + } + break; + case -196571629: + if (Math.abs(this.deltaPitch) < var2) { + var3 = 56821465; + } else { + var3 = 368004752; + } + break; + case -143091041: + return (boolean)((var4) != 0); + case 56821465: + var4 = 1; + var3 = -143091041; + break; + case 368004752: + var4 = 0; + var3 = -143091041; + } + } + } +} diff --git a/src/main/java/defpackage/aqb.java b/src/main/java/defpackage/aqb.java new file mode 100644 index 0000000..ef02b27 --- /dev/null +++ b/src/main/java/defpackage/aqb.java @@ -0,0 +1,27 @@ +package defpackage; + +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +public final class aqb implements aqg { + public static apz getClientRotation() { + return new apz(mc.player.getYRot(), mc.player.getXRot()); + } + + public static apz fromVec3d(Vec3 var0) { + return new apz( + (float)Mth.wrapDegrees(Math.toDegrees(Math.atan2(var0.z, var0.x)) - 90.0), + (float)Mth.wrapDegrees(Math.toDegrees(-Math.atan2(var0.y, Math.hypot(var0.x, var0.z)))) + ); + } + + public static apz calculateAngle(Vec3 var0) { + return fromVec3d(var0.subtract(mc.player.getEyePosition())); + } + + private aqb() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/aqc.java b/src/main/java/defpackage/aqc.java new file mode 100644 index 0000000..da1d568 --- /dev/null +++ b/src/main/java/defpackage/aqc.java @@ -0,0 +1,459 @@ +package defpackage; + +import net.minecraft.network.protocol.game.ClientboundSetTimePacket; +import net.minecraft.network.protocol.game.ServerboundPlayerCommandPacket; +import net.minecraft.network.protocol.game.ServerboundPlayerCommandPacket.Action; +import net.minecraft.util.Mth; +import net.minecraft.world.scores.DisplaySlot; +import net.minecraft.world.scores.Objective; +import net.minecraft.world.scores.PlayerScoreEntry; +import net.minecraft.world.scores.PlayerTeam; +import net.minecraft.world.scores.Scoreboard; +import org.apache.commons.lang3.StringUtils; + +public class aqc implements aqg { + private final aqm pvpWatch = new aqm(); + private String server = "Vanilla"; + private float TPS = 20.0F; + private long timestamp; + private boolean serverSprint; + private int anarchy; + private boolean pvpEnd; + + public aqc() { + j.register(this); + } + + @k + public void tick(fl var1) { + int var2 = -172251647; + + while (true) { + switch (var2) { + case -2011194865: + return; + case -172251647: + default: + this.anarchy = this.getAnarchyMode(); + this.server = this.updateServer(); + this.pvpEnd = this.inPvpEnd(); + if (this.inPvp()) { + var2 = 389800629; + } else { + var2 = -2011194865; + } + break; + case 389800629: + this.pvpWatch.reset(); + var2 = -2011194865; + } + } + } + + @k + public void packet(fy var1) { + long var2 = (-6760607562190880736L ^ 6760607562190880736L) + ((-6760607562190880736L & 6760607562190880736L) << 1); + float var4 = 0.0F; + float var5 = 0.0F; + int var6 = -1478439823; + + while (true) { + switch (var6) { + case -2071083873: + var2 = System.nanoTime(); + var4 = 20.0F; + var5 = var4 * (1.0E9F / (float)(var2 - this.timestamp)); + this.TPS = Mth.clamp(var5, 0.0F, var4); + this.timestamp = var2; + var6 = -859211685; + break; + case -1478439823: + default: + if (var1.getPacket() instanceof ClientboundSetTimePacket) { + var6 = -2071083873; + } else { + var6 = -859211685; + } + break; + case -859211685: + return; + } + } + } + + @k + public void onPacket(fy var1) { + if (var1.getPacket() instanceof ServerboundPlayerCommandPacket var2) { + if (var2.getAction().equals(Action.START_SPRINTING)) { + var1.setCancelled(this.serverSprint); + this.serverSprint = (boolean)(((1)) != 0); + } else if (var2.getAction().equals(Action.STOP_SPRINTING)) { + var1.setCancelled( + (boolean)(((!this.serverSprint ? 1: (776532238 ^ -776532238) + ((776532238 & -776532238) << 1)) + ) != 0)); + this.serverSprint = (boolean)(((0)) != 0); + } + } + } + + private String updateServer() { + String var1 = null; + String var2 = null; + int var3 = 2005488216; + + while (true) { + switch (var3) { + case -1932792008: + if (mc.getConnection().getServerData() != null) { + var3 = 615186033; + } else { + var3 = -5429427; + } + break; + case -712921783: + if (var2.contains("vk.com/idwok")) { + var3 = 781643922; + } else { + var3 = 1246852394; + } + break; + case -590878399: + if (mc.getConnection() != null) { + var3 = -1932792008; + } else { + var3 = -5429427; + } + break; + case -327363438: + return "FunTime"; + case -5429427: + return "Vanilla"; + case 19212068: + if (!var2.contains("holyworld")) { + var3 = 1494941190; + } else { + var3 = 781643922; + } + break; + case 615186033: + if (mc.getConnection().serverBrand() == null) { + var3 = -5429427; + } else { + var3 = 1349707360; + } + break; + case 622394684: + if (!var1.contains("funtime")) { + var3 = 856405164; + } else { + var3 = 1361645977; + } + break; + case 652840465: + if (!var1.contains("space-times")) { + var3 = 1096408213; + } else { + var3 = 1361645977; + } + break; + case 781643922: + return "HolyWorld"; + case 856405164: + if (!var1.contains("skytime")) { + var3 = 652840465; + } else { + var3 = 1361645977; + } + break; + case 953052552: + return "Vanilla"; + case 1096408213: + if (var1.contains("funsky")) { + var3 = 1361645977; + } else { + var3 = 19212068; + } + break; + case 1246852394: + if (var1.contains("reallyworld")) { + var3 = 2036488925; + } else { + var3 = 953052552; + } + break; + case 1349707360: + var1 = mc.getConnection().getServerData().ip.toLowerCase(); + var2 = mc.getConnection().serverBrand().toLowerCase(); + if (var2.contains("botfilter")) { + var3 = -327363438; + } else { + var3 = 622394684; + } + break; + case 1361645977: + return "CopyTime"; + case 1494941190: + if (!var2.contains("leaf")) { + var3 = -712921783; + } else { + var3 = 781643922; + } + break; + case 2005488216: + default: + if (!apo.nullCheck()) { + var3 = -590878399; + } else { + var3 = -5429427; + } + break; + case 2036488925: + return "ReallyWorld"; + } + } + } + + private int getAnarchyMode() { + Scoreboard var1 = mc.level.getScoreboard(); + Objective var2 = var1.getDisplayObjective(DisplaySlot.SIDEBAR); + String var3 = this.server; + int var4 = -1; + switch (var3.hashCode()) { + case -495240450: + if (var3.equals("HolyWorld")) { + var4 = 1; + } + break; + case 1154553036: + if (var3.equals("FunTime")) { + var4 = 0; + } + } + + switch (var4) { + case 0: + if (var2 != null) { + String[] var9 = var2.getDisplayName().getString().split("-"); + if (var9.length > (853549025 | -853549024) + (853549025 & -853549024)) { + return Integer.parseInt(var9[1]); + } + } + break; + case 1: + for (PlayerScoreEntry var6 : var1.listPlayerScores(var2)) { + String var7 = PlayerTeam.formatNameForTeam(var1.getPlayersTeam(var6.owner()), var6.ownerName()).getString(); + if (!var7.isEmpty()) { + String var8 = StringUtils.substringBetween(var7, "#", " -◆-"); + if (var8 != null && !var8.isEmpty()) { + return Integer.parseInt(var8); + } + } + } + } + + return -1; + } + + public boolean isPvp() { + int var2 = 0; + int var1 = 1249194421; + + while (true) { + switch (var1) { + case -1097548450: + return (boolean)((var2) != 0); + case 754580522: + var2 = 0; + var1 = -1097548450; + break; + case 1244473652: + var2 = 1; + var1 = -1097548450; + break; + case 1249194421: + default: + if (!this.pvpWatch.finished((-5705622597147325830L ^ 5705622597147326080L) + ((-5705622597147325830L & 5705622597147326080L) << 1))) { + var1 = 1244473652; + } else { + var1 = 754580522; + } + } + } + } + + private boolean inPvp() { + return mc.gui.hud.getBossOverlay().events.values().stream().map(var0 -> var0.getName().getString().toLowerCase()).anyMatch(var0 -> { + int var2 = 0; + int var1 = -1419578396; + + while (true) { + switch (var1) { + case -1897513581: + var2 = 1; + var1 = 934110537; + break; + case -1419578396: + default: + if (!var0.contains("pvp")) { + var1 = 324179542; + } else { + var1 = -1897513581; + } + break; + case -1338566720: + var2 = 0; + var1 = 934110537; + break; + case 324179542: + if (var0.contains("пвп")) { + var1 = -1897513581; + } else { + var1 = -1338566720; + } + break; + case 934110537: + return (boolean)((var2) != 0); + } + } + }); + } + + private boolean inPvpEnd() { + return mc.gui.hud.getBossOverlay().events.values().stream().map(var0 -> var0.getName().getString().toLowerCase()).anyMatch(var0 -> { + int var2 = 0; + int var1 = 1046110749; + + while (true) { + switch (var1) { + case -1093565601: + var2 = 0; + var1 = 1394558407; + break; + case -112822160: + if (var0.contains("1")) { + var1 = 1033939416; + } else { + var1 = -1093565601; + } + break; + case 699013072: + if (var0.contains("пвп")) { + var1 = 1988171658; + } else { + var1 = -1093565601; + } + break; + case 1033939416: + var2 = 1; + var1 = 1394558407; + break; + case 1046110749: + default: + if (!var0.contains("pvp")) { + var1 = 699013072; + } else { + var1 = 1988171658; + } + break; + case 1394558407: + return (boolean)((var2) != 0); + case 1988171658: + if (!var0.contains("0")) { + var1 = -112822160; + } else { + var1 = 1033939416; + } + } + } + }); + } + + public String getWorldType() { + return mc.level.dimension().identifier().getPath(); + } + + public boolean isCopyTime() { + int var2 = 0; + int var1 = 416312706; + + while (true) { + switch (var1) { + case -1812304215: + return (boolean)((var2) != 0); + case -1577433150: + if (!this.server.equals("SpookyTime")) { + var1 = -1515201150; + } else { + var1 = -233950410; + } + break; + case -1515201150: + if (this.server.equals("FunTime")) { + var1 = -233950410; + } else { + var1 = 449024359; + } + break; + case -233950410: + var2 = 1; + var1 = -1812304215; + break; + case 416312706: + default: + if (!this.server.equals("CopyTime")) { + var1 = -1577433150; + } else { + var1 = -233950410; + } + break; + case 449024359: + var2 = 0; + var1 = -1812304215; + } + } + } + + public boolean isFunTime() { + return this.server.equals("FunTime"); + } + + public boolean isReallyWorld() { + return this.server.equals("ReallyWorld"); + } + + public boolean isHolyWorld() { + return this.server.equals("HolyWorld"); + } + + public boolean isVanilla() { + return this.server.equals("Vanilla"); + } + + public aqm getPvpWatch() { + return this.pvpWatch; + } + + public String getServer() { + return this.server; + } + + public float getTPS() { + return this.TPS; + } + + public long getTimestamp() { + return this.timestamp; + } + + public boolean isServerSprint() { + return this.serverSprint; + } + + public int getAnarchy() { + return this.anarchy; + } + + public boolean isPvpEnd() { + return this.pvpEnd; + } +} diff --git a/src/main/java/defpackage/aqd.java b/src/main/java/defpackage/aqd.java new file mode 100644 index 0000000..a53d536 --- /dev/null +++ b/src/main/java/defpackage/aqd.java @@ -0,0 +1,11 @@ +package defpackage; + +import net.minecraft.client.gui.GuiGraphicsExtractor; + +public interface aqd { + void evo$pushGuiScale(GuiGraphicsExtractor var1); + + void evo$popGuiScale(GuiGraphicsExtractor var1); + + void evo$finishClosing(); +} diff --git a/src/main/java/defpackage/aqe.java b/src/main/java/defpackage/aqe.java new file mode 100644 index 0000000..b98d9f8 --- /dev/null +++ b/src/main/java/defpackage/aqe.java @@ -0,0 +1,5 @@ +package defpackage; + +public interface aqe { + long evo$addedAt(); +} diff --git a/src/main/java/defpackage/aqf.java b/src/main/java/defpackage/aqf.java new file mode 100644 index 0000000..f11cde0 --- /dev/null +++ b/src/main/java/defpackage/aqf.java @@ -0,0 +1,8 @@ +package defpackage; + +public interface aqf extends aqh { + bz evolution = bz.getInstance(); + lr deepLearningManager = bz.getInstance().getDeepLearningManager(); + lp rotationManager = bz.getInstance().getRotationManager(); + lo aimManager = rotationManager.getAimManager(); +} diff --git a/src/main/java/defpackage/aqg.java b/src/main/java/defpackage/aqg.java new file mode 100644 index 0000000..7aceba1 --- /dev/null +++ b/src/main/java/defpackage/aqg.java @@ -0,0 +1,7 @@ +package defpackage; + +import net.minecraft.client.Minecraft; + +public interface aqg { + Minecraft mc = Minecraft.getInstance(); +} diff --git a/src/main/java/defpackage/aqh.java b/src/main/java/defpackage/aqh.java new file mode 100644 index 0000000..fb04fd5 --- /dev/null +++ b/src/main/java/defpackage/aqh.java @@ -0,0 +1,7 @@ +package defpackage; + +import com.mojang.blaze3d.platform.Window; + +public interface aqh extends aqg { + Window mw = mc.getWindow(); +} diff --git a/src/main/java/defpackage/aqi.java b/src/main/java/defpackage/aqi.java new file mode 100644 index 0000000..de68180 --- /dev/null +++ b/src/main/java/defpackage/aqi.java @@ -0,0 +1,37 @@ +package defpackage; + +import java.util.Random; + +public class aqi { + private final int start; + private final int endInclusive; + private final Random random = new Random(); + + public aqi(int var1, int var2) { + if (var1 > var2) { + throw new IllegalArgumentException( + "Start must be less than or equal to endInclusive" + ); + } + + this.start = var1; + this.endInclusive = var2; + } + + public int random() { + return this.start + this.random.nextInt(this.endInclusive - this.start + (-1891316461 ^ 1891316462) + ((-1891316461 & 1891316462) << 1)); + } + + @Override + public String toString() { + return this.start + ".." + this.endInclusive; + } + + public int getStart() { + return this.start; + } + + public int getEndInclusive() { + return this.endInclusive; + } +} diff --git a/src/main/java/defpackage/aqj.java b/src/main/java/defpackage/aqj.java new file mode 100644 index 0000000..5ccf2ca --- /dev/null +++ b/src/main/java/defpackage/aqj.java @@ -0,0 +1,390 @@ +package defpackage; + +import java.util.concurrent.ThreadLocalRandom; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; +import org.joml.Vector3d; + +public final class aqj implements aqg { + public static double PI2 = Math.PI * 2; + private static final int TABLE_SIZE = 65536; + private static final double TWO_PI = Math.PI * 2; + private static final double[] TRIG_TABLE = new double[65536]; + + public static double sin(double var0) { + int var2 = (int)(var0 * 10430.378350470453) & 65535; + return TRIG_TABLE[var2]; + } + + public static double cos(double var0) { + int var2 = (int)(var0 * 10430.378350470453 + 16384.0) & 65535; + return TRIG_TABLE[var2]; + } + + public static float random(double var0, double var2) { + return (float)(var0 + (var2 - var0) * Math.random()); + } + + public static double cubicBezier(double var0, double var2, double var4, double var6, double var8) { + return Math.pow(1.0 - var0, 3.0) * var2 + + 3.0 * var0 * Math.pow(1.0 - var0, 2.0) * var4 + + 3.0 * Math.pow(var0, 2.0) * (1.0 - var0) * var6 + + Math.pow(var0, 3.0) * var8; + } + + public static int levenshtein(String var0, String var1) { + int var2 = 0; + int var3 = 0; + int[] var4 = null; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var11 = 0; + int var10 = -2056427472; + + while (true) { + switch (var10) { + case -2056427472: + default: + var2 = var0.length(); + var3 = var1.length(); + var4 = new int[var3 + 1]; + var5 = 0; + var10 = 1898135815; + break; + case -1798926292: + return var4[var3]; + case -1447095109: + if (var5 <= var2) { + var10 = 1933611521; + } else { + var10 = -1798926292; + } + break; + case -1292767604: + var9 = var11; + var4[var7] = Math.min( + Math.min( + var4[var7] + 1, + var4[var7 - (1)] + (982500511 ^ -982500510) + ((982500511 & -982500510) << 1) + ), + var6 + var9 + ); + var6 = var8; + var7++; + var10 = 1182825797; + break; + case -931165657: + var11 = 1; + var10 = -1292767604; + break; + case -902480428: + var11 = 0; + var10 = -1292767604; + break; + case -420965295: + var5 = 1; + var10 = -1447095109; + break; + case -217129080: + var4[var5] = var5++; + var10 = 1898135815; + break; + case 237121785: + var5++; + var10 = -1447095109; + break; + case 738153854: + var8 = var4[var7]; + if (var0.charAt(var5 - ((-873595620 ^ 873595621) + ((-873595620 & 873595621) << 1))) + == var1.charAt(var7 - ((-1193690985 | 1193690986) + (-1193690985 & 1193690986)))) { + var10 = -902480428; + } else { + var10 = -931165657; + } + break; + case 1182825797: + if (var7 <= var3) { + var10 = 738153854; + } else { + var10 = 237121785; + } + break; + case 1898135815: + if (var5 <= var3) { + var10 = -217129080; + } else { + var10 = -420965295; + } + break; + case 1933611521: + var6 = var4[0]; + var4[0] = var5; + var7 = 1; + var10 = 1182825797; + } + } + } + + public static float angleDifference(float var0, float var1) { + float var2 = 0.0F; + int var3 = -2137303720; + + while (true) { + switch (var3) { + case -2137303720: + default: + var2 = (var0 - var1) % 360.0F; + if (var2 < -180.0F) { + var3 = 443039077; + } else { + var3 = -865108458; + } + break; + case -1044580399: + return var2; + case -865108458: + if (var2 > 180.0F) { + var3 = -350860512; + } else { + var3 = -1044580399; + } + break; + case -350860512: + var2 -= 360.0F; + var3 = -1044580399; + break; + case 443039077: + var2 += 360.0F; + var3 = -1044580399; + } + } + } + + public static boolean isHovered(double var0, double var2, double var4, double var6, double var8, double var10) { + int var13 = 0; + int var12 = -1022288768; + + while (true) { + switch (var12) { + case -1986297656: + var13 = 1; + var12 = 264351786; + break; + case -1446970622: + var13 = 0; + var12 = 264351786; + break; + case -1022288768: + default: + if (var0 >= var4) { + var12 = 1641779915; + } else { + var12 = -1446970622; + } + break; + case 264351786: + return (boolean)((var13) != 0); + case 313916014: + if (var2 >= var6) { + var12 = 1125899526; + } else { + var12 = -1446970622; + } + break; + case 1125899526: + if (var2 <= var6 + var10) { + var12 = -1986297656; + } else { + var12 = -1446970622; + } + break; + case 1641779915: + if (var0 <= var4 + var8) { + var12 = 313916014; + } else { + var12 = -1446970622; + } + } + } + } + + public static boolean isHoveredByCords(double var0, double var2, int var4, int var5, int var6, int var7) { + int var9 = 0; + int var8 = -1721777347; + + while (true) { + switch (var8) { + case -1721777347: + default: + if (var0 >= var4) { + var8 = 846653767; + } else { + var8 = 1412629795; + } + break; + case -1231378050: + if (var2 <= var7) { + var8 = 1925057400; + } else { + var8 = 1412629795; + } + break; + case 159706780: + return (boolean)((var9) != 0); + case 846653767: + if (var0 <= var6) { + var8 = 1020347396; + } else { + var8 = 1412629795; + } + break; + case 1020347396: + if (var2 >= var5) { + var8 = -1231378050; + } else { + var8 = 1412629795; + } + break; + case 1412629795: + var9 = 0; + var8 = 159706780; + break; + case 1925057400: + var9 = 1; + var8 = 159706780; + } + } + } + + public static float interpolate(double var0, double var2, double var4) { + return (float)(var0 + (var2 - var0) * var4); + } + + public static float goodSubtract(float var0, float var1) { + return Math.abs(var0 - var1); + } + + public static double getRandom(double var0, double var2) { + double var4 = 0.0; + int var6 = -491610647; + + while (true) { + switch (var6) { + case -1024833102: + var4 = var0; + var0 = var2; + var2 = var4; + var6 = -469204361; + break; + case -491610647: + default: + if (var0 == var2) { + var6 = -410873450; + } else { + var6 = 2011970650; + } + break; + case -469204361: + return ThreadLocalRandom.current().nextDouble() * (var2 - var0) + var0; + case -410873450: + return var0; + case 2011970650: + if (var0 > var2) { + var6 = -1024833102; + } else { + var6 = -469204361; + } + } + } + } + + public static float round(float var0) { + return Math.round(var0 * 10.0F) / 10.0F; + } + + public static double round(double var0, double var2) { + double var4 = Math.round(var0 / var2) * var2; + return Math.round(var4 * 100.0) / 100.0; + } + + public static Vec3 cosSin(int var0, int var1, double var2) { + int var4 = Math.min(var0, var1); + float var5 = (float)(Math.cos(var4 * PI2 / var1) * var2); + float var6 = (float)(-Math.sin(var4 * PI2 / var1) * var2); + return new Vec3(var5, 0.0, var6); + } + + public static Vector3d interpolate(Vector3d var0, Vector3d var1) { + return new Vector3d(interpolate(var0.x, var1.x), interpolate(var0.y, var1.y), interpolate(var0.z, var1.z)); + } + + public static Vec3 interpolate(Vec3 var0, Vec3 var1) { + return new Vec3(interpolate(var0.x, var1.x), interpolate(var0.y, var1.y), interpolate(var0.z, var1.z)); + } + + public static Vec3 interpolate(Entity var0) { + int var1 = 1361238614; + + while (true) { + switch (var1) { + case 356682498: + return Vec3.ZERO; + case 1223966400: + return new Vec3(interpolate(var0.xo, var0.getX()), interpolate(var0.yo, var0.getY()), interpolate(var0.zo, var0.getZ())); + case 1361238614: + } + + if (var0 == null) { + var1 = 356682498; + } else { + var1 = 1223966400; + } + } + } + + public static float interpolate(float var0, float var1) { + return Mth.lerp(mc.getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((-1128853955 | 1128853955) + (-1128853955 & 1128853955))) != 0)), var0, var1); + } + + public static double interpolate(double var0, double var2) { + return Mth.lerp(mc.getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((-620131585 ^ 620131585) + ((-620131585 & 620131585) << 1))) != 0)), var0, var2); + } + + public static int interpolateSmooth(double var0, int var2, int var3) { + return (int)Mth.lerp(mc.getDeltaTracker().getGameTimeDeltaTicks() / var0, var2, var3); + } + + public static float interpolateSmooth(double var0, float var2, float var3) { + return (float)Mth.lerp(mc.getDeltaTracker().getGameTimeDeltaTicks() / var0, var2, var3); + } + + public static double interpolateSmooth(double var0, double var2, double var4) { + return Mth.lerp(mc.getDeltaTracker().getGameTimeDeltaTicks() / var0, var2, var4); + } + + public static double getDistance(Vec3 var0, Vec3 var1) { + double var2 = var0.x() - var1.x(); + double var4 = var0.y() - var1.y(); + double var6 = var0.z() - var1.z(); + return Mth.sqrt((float)(var2 * var2 + var4 * var4 + var6 * var6)); + } + + private aqj() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } + + static { + for (int var0 = 0; + var0 < 65536; + var0++ + ) { + TRIG_TABLE[var0] = Math.sin(var0 * (Math.PI * 2) / 65536.0); + } + } +} diff --git a/src/main/java/defpackage/aqk.java b/src/main/java/defpackage/aqk.java new file mode 100644 index 0000000..470e994 --- /dev/null +++ b/src/main/java/defpackage/aqk.java @@ -0,0 +1,298 @@ +package defpackage; + +import net.minecraft.client.Camera; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.NotNull; +import org.joml.Matrix4f; +import org.joml.Vector3f; +import org.joml.Vector4d; +import org.joml.Vector4f; + +public final class aqk { + private static final Minecraft mc = Minecraft.getInstance(); + private static final float MIN_CLIP_W = 0.05F; + private static final float NDC_CENTER = 0.5F; + private static final float NDC_HALF_RANGE = 0.5F; + + private aqk() { + } + + public static boolean projectToGui(Vec3 var0, Vector3f var1) { + Camera var2 = null; + Object var3 = null; + Vector4f var4 = null; + int var5 = -636891324; + + while (true) { + switch (var5) { + case -636891324: + default: + var2 = mc.getEntityRenderDispatcher().camera; + if (var2 == null) { + var5 = 1264831899; + } else { + var5 = 206593; + } + break; + case -559612990: + var1.set( + (0.5F + 0.5F * var4.x / var4.w) * mc.getWindow().getGuiScaledWidth(), + (0.5F - 0.5F * var4.y / var4.w) * mc.getWindow().getGuiScaledHeight(), + var4.w + ); + return (boolean)(((1)) != 0); + case 206593: + var3 = var0.subtract(var2.position()); + var4 = new Vector4f((float)((Vec3)var3).x, (float)((Vec3)var3).y, (float)((Vec3)var3).z, 1.0F) + .mul(auk.getLastWorldSpaceMatrix()) + .mul(auk.getLastProjMat()); + if (var4.w <= 0.05F) { + var5 = 114902588; + } else { + var5 = -559612990; + } + break; + case 114902588: + return (boolean)(((0)) != 0); + case 1264831899: + return (boolean)(((0)) != 0); + } + } + } + + public static Vec3 worldSpaceToScreenSpace(Vec3 var0) { + return project(var0.x, var0.y, var0.z); + } + + public static Vec3 worldSpaceToScreenSpace(double var0, double var2, double var4) { + return project(var0, var2, var4); + } + + public static Vec3 project(double var0, double var2, double var4) { + Vec3 var6 = mc.getEntityRenderDispatcher().camera.position(); + Vec3 var7 = new Vec3(var0, var2, var4).subtract(var6); + int[] var10000 = new int[4]; + var10000[0] = 0; + var10000[1] = 0; + var10000[2] = mc.getWindow().getWidth(); + var10000[3] = mc.getWindow().getHeight(); + int[] var8 = var10000; + Vector4f var9 = new Vector4f(); + Vector4f var10 = new Vector4f((float)var7.x, (float)var7.y, (float)var7.z, 1.0F).mul(auk.getLastWorldSpaceMatrix()); + Matrix4f var11 = new Matrix4f(auk.getLastProjMat()); + var11.project(var10.x(), var10.y(), var10.z(), var8, var9); + return new Vec3(var9.x / mc.getWindow().getGuiScale(), (mc.getWindow().getScreenHeight() - var9.y) / mc.getWindow().getGuiScale(), var9.z); + } + + public static boolean canSee(Vec3 var0) { + Camera var1 = null; + apz var2 = null; + int var4 = 0; + int var3 = -760301752; + + while (true) { + switch (var3) { + case -1819644695: + if (!(Math.abs(Mth.wrapDegrees(var2.getPitch() - var1.xRot())) < 60.0F)) { + var3 = 1460731449; + } else { + var3 = -1368201959; + } + break; + case -1742373569: + var1 = mc.getEntityRenderDispatcher().camera; + var2 = aqb.calculateAngle(var0); + if (Math.abs(Mth.wrapDegrees(var2.getYaw() - var1.yRot())) < 90.0F) { + var3 = -1819644695; + } else { + var3 = 1460731449; + } + break; + case -1368201959: + var4 = 1; + var3 = 1535137639; + break; + case -760301752: + default: + if (mc.getEntityRenderDispatcher().camera == null) { + var3 = 605705394; + } else { + var3 = -1742373569; + } + break; + case -305700293: + var4 = 0; + var3 = 1535137639; + break; + case 605705394: + return (boolean)(((0)) != 0); + case 1460731449: + if (canSee(new AABB(BlockPos.containing(var0)))) { + var3 = -1368201959; + } else { + var3 = -305700293; + } + break; + case 1535137639: + return (boolean)((var4) != 0); + } + } + } + + public static boolean canSee(AABB var0) { + Vec3 var1 = null; + double var2 = 0.0; + Vec3 var4 = null; + Vec3 var5 = null; + double var6 = 0.0; + int var9 = 0; + int var8 = -1511545446; + + while (true) { + switch (var8) { + case -2143372101: + var9 = 0; + var8 = 897260750; + break; + case -1657521155: + var9 = 1; + var8 = 897260750; + break; + case -1511545446: + default: + if (var0 != null) { + var8 = 198832734; + } else { + var8 = 1258588022; + } + break; + case -586477888: + if (mc.getEntityRenderDispatcher().camera == null) { + var8 = 1258588022; + } else { + var8 = 1963093755; + } + break; + case -488333529: + return (boolean)(((1)) != 0); + case -268882361: + var4 = Vec3.directionFromRotation(mc.getEntityRenderDispatcher().camera.xRot(), mc.getEntityRenderDispatcher().camera.yRot()); + var5 = var0.getCenter(); + var6 = (var5.x - var1.x) * var4.x + (var5.y - var1.y) * var4.y + (var5.z - var1.z) * var4.z; + if (var6 >= -1.0) { + var8 = -1657521155; + } else { + var8 = -2143372101; + } + break; + case 198832734: + if (mc.player != null) { + var8 = -586477888; + } else { + var8 = 1258588022; + } + break; + case 897260750: + return (boolean)((var9) != 0); + case 1258588022: + return (boolean)(((0)) != 0); + case 1963093755: + var1 = mc.getEntityRenderDispatcher().camera.position(); + var2 = var0.distanceToSqr(var1); + if (var2 <= 4.0) { + var8 = -488333529; + } else { + var8 = -268882361; + } + } + } + } + + public static boolean canSee(Vector4d var0) { + int var2 = 0; + int var1 = -2018627300; + + while (true) { + switch (var1) { + case -2018627300: + default: + if (var0 != null) { + var1 = -846021586; + } else { + var1 = -1507238850; + } + break; + case -1976627434: + if (var0.y < 0.0) { + var1 = 475210118; + } else { + var1 = -697753876; + } + break; + case -1507238850: + var2 = 1; + var1 = 1287260571; + break; + case -846021586: + if (var0.x < 0.0) { + var1 = -75058677; + } else { + var1 = -1976627434; + } + break; + case -697753876: + var2 = 0; + var1 = 1287260571; + break; + case -75058677: + if (!(var0.z < 1.0)) { + var1 = -1976627434; + } else { + var1 = -1507238850; + } + break; + case 475210118: + if (var0.w < 1.0) { + var1 = -1507238850; + } else { + var1 = -697753876; + } + break; + case 1287260571: + return (boolean)((var2) != 0); + } + } + } + + public static double centerX(Vector4d var0) { + return var0.x + (var0.z - var0.x) / 2.0; + } + + @NotNull + public static Vec3[] getVec3ds(Entity var0, Vec3 var1) { + AABB var2 = var0.getBoundingBox(); + AABB var3 = new AABB( + var2.minX - var0.getX() + var1.x - 0.1F, + var2.minY - var0.getY() + var1.y - 0.1F, + var2.minZ - var0.getZ() + var1.z - 0.1F, + var2.maxX - var0.getX() + var1.x + 0.1F, + var2.maxY - var0.getY() + var1.y + 0.1F, + var2.maxZ - var0.getZ() + var1.z + 0.1F + ); + Vec3[] var10000 = new Vec3[8]; + var10000[0] = new Vec3(var3.minX, var3.minY, var3.minZ); + var10000[1] = new Vec3(var3.minX, var3.maxY, var3.minZ); + var10000[2] = new Vec3(var3.maxX, var3.minY, var3.minZ); + var10000[3] = new Vec3(var3.maxX, var3.maxY, var3.minZ); + var10000[4] = new Vec3(var3.minX, var3.minY, var3.maxZ); + var10000[5] = new Vec3(var3.minX, var3.maxY, var3.maxZ); + var10000[6] = new Vec3(var3.maxX, var3.minY, var3.maxZ); + var10000[7] = new Vec3(var3.maxX, var3.maxY, var3.maxZ); + return var10000; + } +} diff --git a/src/main/java/defpackage/aql.java b/src/main/java/defpackage/aql.java new file mode 100644 index 0000000..32fd49e --- /dev/null +++ b/src/main/java/defpackage/aql.java @@ -0,0 +1,47 @@ +package defpackage; + + +public class aql { + private long lastTime; + + public aql() { + this.reset(); + } + + public boolean every(long var1) { + int var3 = 2042585307; + + while (true) { + switch (var3) { + case 910737978: + return (boolean)(((0)) != 0); + case 1094601391: + this.reset(); + return (boolean)(((1)) != 0); + case 2042585307: + } + + if (System.currentTimeMillis() - this.lastTime >= var1) { + var3 = 1094601391; + } else { + var3 = 910737978; + } + } + } + + public void reset() { + this.lastTime = System.currentTimeMillis(); + } + + public long getElapsedTime() { + return System.currentTimeMillis() - this.lastTime; + } + + public long getLastTime() { + return this.lastTime; + } + + public void setLastTime(long var1) { + this.lastTime = var1; + } +} diff --git a/src/main/java/defpackage/aqm.java b/src/main/java/defpackage/aqm.java new file mode 100644 index 0000000..8bcd491 --- /dev/null +++ b/src/main/java/defpackage/aqm.java @@ -0,0 +1,80 @@ +package defpackage; + + +public class aqm { + private long millis; + + public aqm() { + this.reset(); + } + + public boolean finished(float var1) { + int var3 = 0; + int var2 = 1547768682; + + while (true) { + switch (var2) { + case -929526571: + var3 = 1; + var2 = 494838391; + break; + case 494838391: + return (boolean)((var3) != 0); + case 1547768682: + default: + if ((float)System.currentTimeMillis() - var1 >= (float)this.millis) { + var2 = -929526571; + } else { + var2 = 1910756938; + } + break; + case 1910756938: + var3 = 0; + var2 = 494838391; + } + } + } + + public boolean finished(long var1) { + int var4 = 0; + int var3 = 1963995119; + + while (true) { + switch (var3) { + case -1957541792: + return (boolean)((var4) != 0); + case -644539847: + var4 = 0; + var3 = -1957541792; + break; + case 1030102097: + var4 = 1; + var3 = -1957541792; + break; + case 1963995119: + default: + if (System.currentTimeMillis() - var1 >= this.millis) { + var3 = 1030102097; + } else { + var3 = -644539847; + } + } + } + } + + public void reset() { + this.millis = System.currentTimeMillis(); + } + + public long getElapsedTime() { + return System.currentTimeMillis() - this.millis; + } + + public long getMillis() { + return this.millis; + } + + public void setMillis(long var1) { + this.millis = var1; + } +} diff --git a/src/main/java/defpackage/aqn.java b/src/main/java/defpackage/aqn.java new file mode 100644 index 0000000..6cb0981 --- /dev/null +++ b/src/main/java/defpackage/aqn.java @@ -0,0 +1,14 @@ +package defpackage; + + +public class aqn { + private boolean value; + + public boolean isValue() { + return this.value; + } + + public void setValue(boolean var1) { + this.value = var1; + } +} diff --git a/src/main/java/defpackage/aqo.java b/src/main/java/defpackage/aqo.java new file mode 100644 index 0000000..501a80d --- /dev/null +++ b/src/main/java/defpackage/aqo.java @@ -0,0 +1,22 @@ +package defpackage; + +import net.minecraft.client.gui.GuiGraphicsExtractor; +import org.joml.Matrix3x2fStack; + +public interface aqo { + boolean extractable(); + + boolean prepare(); + + void start(); + + void stop(); + + boolean releaseIfStopped(); + + void drawExtracted(GuiGraphicsExtractor var1, int var2, int var3); + + void drawImmediate(Matrix3x2fStack var1, int var2, int var3); + + void drawImmediateCircle(Matrix3x2fStack var1, int var2, int var3, float var4, float var5, float var6); +} diff --git a/src/main/java/defpackage/aqp.java b/src/main/java/defpackage/aqp.java new file mode 100644 index 0000000..0072b6c --- /dev/null +++ b/src/main/java/defpackage/aqp.java @@ -0,0 +1,6 @@ +package defpackage; + +import java.util.function.Supplier; + +public record aqp(String id, String label, String icon, Supplier factory) { +} diff --git a/src/main/java/defpackage/aqq.java b/src/main/java/defpackage/aqq.java new file mode 100644 index 0000000..6df69e3 --- /dev/null +++ b/src/main/java/defpackage/aqq.java @@ -0,0 +1,4 @@ +package defpackage; + +record aqq(String id, String label, String icon, String resourcePath) { +} diff --git a/src/main/java/defpackage/aqr.java b/src/main/java/defpackage/aqr.java new file mode 100644 index 0000000..879610b --- /dev/null +++ b/src/main/java/defpackage/aqr.java @@ -0,0 +1,685 @@ +package defpackage; + +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.TitleScreen; +import org.jetbrains.annotations.Nullable; +import org.joml.Matrix3x2fStack; + +public final class aqr { + private static final String RESOURCE_DIR = "/assets/evolution/videos/"; + private static final String CHOICE_FILE = "menu_background_v2.txt"; + private static final String LEGACY_CHOICE_FILE = "menu_background.txt"; + private static final String LEGACY_CLEANUP_FAILURE = "legacy menu background choice not removed"; + private static final String CHOICE_READ_FAILURE = "menu background choice unreadable"; + private static final String CHOICE_WRITE_FAILURE = "menu background choice not saved"; + private static final long SWEEP_MILLIS = 500L; + private static final long SWEEP_WAIT_MILLIS = 1200L; + private static final float BEZIER_X1 = 0.32F; + private static final float BEZIER_Y1 = 0.72F; + private static final float BEZIER_X2 = 0.0F; + private static final float BEZIER_Y2 = 1.0F; + private static final int BEZIER_STEPS = 6; + private static final float BEZIER_EPSILON = 1.0E-5F; + private static final float THIRD = 3.0F; + private static final int POSE_STACK_DEPTH = 4; + private static final List VIDEO_CANDIDATES = List.of( + new aqq( + "aurora", + "Aurora", + "8", + "/assets/evolution/videos/menu_bg.mp4" + ) + ); + private static final List CATALOG = available(); + private static final Map SOURCES = new HashMap<>(); + private static String activeId = restore(); + private static aqo previous; + private static aqo retired; + private static long sweepStart; + private static long sweepPendingSince; + private static float sweepX; + private static float sweepY; + + private aqr() { + } + + public static List catalog() { + return CATALOG; + } + + public static boolean isActive(String var0) { + return activeId.equals(var0); + } + + public static void select(String var0, float var1, float var2) { + aqo var3 = null; + aqo var4 = null; + int var5 = 938104613; + + while (true) { + switch (var5) { + case -2009891863: + previous = var4; + activeId = var0; + sweepX = var1; + sweepY = var2; + sweepStart = (5267057276578021552L | -5267057276578021552L) + (5267057276578021552L & -5267057276578021552L); + sweepPendingSince = System.currentTimeMillis(); + var3.start(); + store(var0); + return; + case -976187776: + var3 = source(var0); + if (var3 == null) { + var5 = 796278143; + } else { + var5 = 206134480; + } + break; + case -87695884: + retire(previous); + var5 = -2009891863; + break; + case -86136517: + return; + case 206134480: + var4 = source(activeId); + if (previous != null) { + var5 = 1420201178; + } else { + var5 = -2009891863; + } + break; + case 796278143: + return; + case 938104613: + default: + if (activeId.equals(var0)) { + var5 = -86136517; + } else { + var5 = -976187776; + } + break; + case 1046136001: + if (previous != var3) { + var5 = -87695884; + } else { + var5 = -2009891863; + } + break; + case 1420201178: + if (previous != var4) { + var5 = 1046136001; + } else { + var5 = -2009891863; + } + } + } + } + + public static boolean renderImmediate(Matrix3x2fStack var0, int var1, int var2) { + aqo var3 = null; + int var4 = 0; + aqo var5 = null; + int var6 = 0; + float var7 = 0.0F; + int var9 = 0; + int var8 = 372992342; + + while (true) { + switch (var8) { + case -1849907950: + return (boolean)(((0)) != 0); + case -1305016775: + var7 = sweepProgress(); + if (var4 != 0) { + var8 = 736442813; + } else { + var8 = -590132211; + } + break; + case -1026620394: + if (var6 == 0) { + var8 = 55842322; + } else { + var8 = 1977227758; + } + break; + case -942397586: + return (boolean)((var9) != 0); + case -590132211: + if (var7 >= 1.0F) { + var8 = 1062112152; + } else { + var8 = -1026620394; + } + break; + case -556776143: + var9 = 0; + var8 = -942397586; + break; + case -467778524: + var4 = (var3.prepare()) ? 1 : 0; + var5 = previous; + if (var5 == null) { + var8 = -374411464; + } else { + var8 = 1665097003; + } + break; + case -374411464: + if (var4 == 0) { + var8 = -64744396; + } else { + var8 = 1784567934; + } + break; + case -306539726: + var5.drawImmediate(var0, var1, var2); + var8 = 972357294; + break; + case -64744396: + return (boolean)(((0)) != 0); + case 55842322: + if (var4 != 0) { + var8 = 1977227758; + } else { + var8 = -556776143; + } + break; + case 372992342: + default: + maintain(); + var3 = source(activeId); + if (var3 == null) { + var8 = -1849907950; + } else { + var8 = -467778524; + } + break; + case 736442813: + var3.drawImmediateCircle(var0, var1, var2, sweepX, sweepY, ease(var7) * maxRadius(var1, var2)); + var8 = -590132211; + break; + case 972357294: + if (!armSweep((boolean)((var4) != 0))) { + var8 = 1587704931; + } else { + var8 = -1305016775; + } + break; + case 1062112152: + retire(var5); + previous = null; + var8 = -1026620394; + break; + case 1587704931: + return (boolean)((var6) != 0); + case 1665097003: + var6 = (var5.prepare()) ? 1 : 0; + if (var6 != 0) { + var8 = -306539726; + } else { + var8 = 972357294; + } + break; + case 1784567934: + var3.drawImmediate(var0, var1, var2); + return (boolean)(((1)) != 0); + case 1977227758: + var9 = 1; + var8 = -942397586; + } + } + } + + public static boolean renderExtracted(GuiGraphicsExtractor var0, int var1, int var2) { + aqo var3 = null; + int var4 = 1484485345; + + while (true) { + switch (var4) { + case -1234582324: + return (boolean)(((0)) != 0); + case -757557816: + return (boolean)(((0)) != 0); + case -120558449: + if (!var3.prepare()) { + var4 = -757557816; + } else { + var4 = 1689527894; + } + break; + case 986264926: + var3 = source(activeId); + if (var3 != null) { + var4 = -120558449; + } else { + var4 = -757557816; + } + break; + case 1484485345: + default: + maintain(); + if (needsImmediatePass()) { + var4 = -1234582324; + } else { + var4 = 986264926; + } + break; + case 1689527894: + var3.drawExtracted(var0, var1, var2); + return (boolean)(((1)) != 0); + } + } + } + + public static void renderVanillaScreen() { + Minecraft var0 = Minecraft.getInstance(); + if (var0.level == null && needsImmediatePass()) { + Screen var1 = var0.gui.screen(); + if (var1 != null && !(var1 instanceof TitleScreen) && !(var1 instanceof api)) { + atb.beginGui(); + + try { + renderImmediate( + new Matrix3x2fStack((-1046215336 ^ 1046215340) + ((-1046215336 & 1046215340) << 1)), + var0.getWindow().getGuiScaledWidth(), + var0.getWindow().getGuiScaledHeight() + ); + } finally { + atb.endGui(); + } + } + } + } + + private static boolean needsImmediatePass() { + aqo var0 = null; + int var2 = 0; + int var1 = -1065412435; + + while (true) { + switch (var1) { + case -1919670805: + if (!var0.extractable()) { + var1 = 2099430335; + } else { + var1 = -1238496710; + } + break; + case -1706465568: + var2 = 0; + var1 = -834392977; + break; + case -1357483984: + var2 = 1; + var1 = -834392977; + break; + case -1238496710: + if (previous != null) { + var1 = 712903785; + } else { + var1 = -1706465568; + } + break; + case -1065412435: + default: + var0 = source(activeId); + if (var0 != null) { + var1 = -1919670805; + } else { + var1 = -1238496710; + } + break; + case -834392977: + return (boolean)((var2) != 0); + case 712903785: + if (!previous.extractable()) { + var1 = -1357483984; + } else { + var1 = -1706465568; + } + break; + case 2099430335: + return (boolean)(((1)) != 0); + } + } + } + + private static boolean armSweep(boolean var0) { + int var1 = -416600338; + + while (true) { + switch (var1) { + case -1202781099: + if (System.currentTimeMillis() - sweepPendingSince + < (-8157118402553415097L ^ 8157118402553416297L) + ((-8157118402553415097L & 8157118402553416297L) << 1)) { + var1 = 909163512; + } else { + var1 = -582764215; + } + break; + case -1119325591: + if (!var0) { + var1 = -1202781099; + } else { + var1 = -582764215; + } + break; + case -582764215: + sweepStart = System.currentTimeMillis(); + return (boolean)(((1)) != 0); + case -416600338: + default: + if (sweepStart != (-4057502004704871907L | 4057502004704871907L) + (-4057502004704871907L & 4057502004704871907L)) { + var1 = 253257088; + } else { + var1 = -1119325591; + } + break; + case 253257088: + return (boolean)(((1)) != 0); + case 909163512: + return (boolean)(((0)) != 0); + } + } + } + + private static void retire(aqo var0) { + int var1 = -775612655; + + while (true) { + switch (var1) { + case -1902286626: + if (retired != var0) { + var1 = -797791280; + } else { + var1 = 1524537365; + } + break; + case -797791280: + retired.releaseIfStopped(); + var1 = 1524537365; + break; + case -775612655: + default: + if (retired != null) { + var1 = -1902286626; + } else { + var1 = 1524537365; + } + break; + case 1524537365: + var0.stop(); + retired = var0; + return; + } + } + } + + private static void maintain() { + int var0 = 985514262; + + while (true) { + switch (var0) { + case -1820901689: + retired = null; + var0 = -813918829; + break; + case -813918829: + return; + case 985514262: + default: + if (retired != null) { + var0 = 1622622661; + } else { + var0 = -813918829; + } + break; + case 1622622661: + if (retired.releaseIfStopped()) { + var0 = -1820901689; + } else { + var0 = -813918829; + } + } + } + } + + private static float sweepProgress() { + long var0 = (4555082579278747229L | -4555082579278747229L) + (4555082579278747229L & -4555082579278747229L); + int var2 = 573312605; + + while (true) { + switch (var2) { + case 62089989: + return Math.min(1.0F, (float)var0 / 500.0F); + case 573312605: + default: + if (sweepStart == (1820338799629597354L ^ -1820338799629597354L) + ((1820338799629597354L & -1820338799629597354L) << 1)) { + var2 = 1568308373; + } else { + var2 = 1440337638; + } + break; + case 1440337638: + var0 = System.currentTimeMillis() - sweepStart; + if (var0 <= (-2517222110167784787L ^ 2517222110167784787L) + ((-2517222110167784787L & 2517222110167784787L) << 1)) { + var2 = 1879646430; + } else { + var2 = 62089989; + } + break; + case 1568308373: + return 0.0F; + case 1879646430: + return 0.0F; + } + } + } + + private static float maxRadius(int var0, int var1) { + float var2 = Math.max(sweepX, var0 - sweepX); + float var3 = Math.max(sweepY, var1 - sweepY); + return (float)Math.hypot(var2, var3); + } + + private static float ease(float var0) { + float var1 = 0.0F; + int var2 = 0; + float var3 = 0.0F; + float var4 = 0.0F; + int var5 = -1049865965; + + while (true) { + switch (var5) { + case -1697728906: + var5 = 515913711; + break; + case -1247808760: + var3 = bezier(var1, 0.32F, 0.0F) - var0; + if (Math.abs(var3) < 1.0E-5F) { + var5 = -1697728906; + } else { + var5 = 148477951; + } + break; + case -1049865965: + default: + if (var0 <= 0.0F) { + var5 = -607138159; + } else { + var5 = 1538432323; + } + break; + case -813592479: + if (var2 < (-950361610 ^ 950361616) + ((-950361610 & 950361616) << 1)) { + var5 = -1247808760; + } else { + var5 = 515913711; + } + break; + case -607138159: + return 0.0F; + case -321908519: + var1 -= var3 / var4; + var2++; + var5 = -813592479; + break; + case 148477951: + var4 = bezierSlope(var1, 0.32F, 0.0F); + if (Math.abs(var4) < 1.0E-5F) { + var5 = 2132719631; + } else { + var5 = -321908519; + } + break; + case 229941486: + return 1.0F; + case 316987001: + var1 = var0; + var2 = 0; + var5 = -813592479; + break; + case 515913711: + return bezier(Math.min(1.0F, Math.max(0.0F, var1)), 0.72F, 1.0F); + case 1538432323: + if (var0 >= 1.0F) { + var5 = 229941486; + } else { + var5 = 316987001; + } + break; + case 2132719631: + var5 = 515913711; + } + } + } + + private static float bezier(float var0, float var1, float var2) { + float var3 = 1.0F - var0; + return 3.0F * var3 * var3 * var0 * var1 + 3.0F * var3 * var0 * var0 * var2 + var0 * var0 * var0; + } + + private static float bezierSlope(float var0, float var1, float var2) { + float var3 = 1.0F - var0; + return 3.0F * var3 * var3 * var1 + 6.0F * var3 * var0 * (var2 - var1) + 3.0F * var0 * var0 * (1.0F - var2); + } + + @Nullable + private static aqo source(String var0) { + int var1 = 0; + aqp var2 = null; + int var3 = 1607707829; + + while (true) { + switch (var3) { + case -1944100717: + return null; + case -1410025395: + var1++; + var3 = -671291199; + break; + case -671291199: + if (var1 < CATALOG.size()) { + var3 = 415929668; + } else { + var3 = -1944100717; + } + break; + case -532403294: + return SOURCES.computeIfAbsent(var0, var1x -> var2.factory().get()); + case 415929668: + var2 = CATALOG.get(var1); + if (var2.id().equals(var0)) { + var3 = -532403294; + } else { + var3 = -1410025395; + } + break; + case 1607707829: + default: + var1 = 0; + var3 = -671291199; + } + } + } + + private static List available() { + ArrayList var0 = new ArrayList(VIDEO_CANDIDATES.size() + aqt.values().length); + + for (aqq var2 : VIDEO_CANDIDATES) { + if (aqr.class.getResource(var2.resourcePath()) != null) { + var0.add(new aqp(var2.id(), var2.label(), var2.icon(), () -> new auw(var2.id(), var2.resourcePath()))); + } + } + + aqt[] var5 = aqt.values(); + int var6 = var5.length; + + for (int var3 = 0; var3 < var6; var3++) { + aqt var4 = var5[var3]; + var0.add(new aqp(var4.getId(), var4.getLabel(), var4.getIcon(), () -> new aqs(var4))); + } + + return List.copyOf(var0); + } + + private static String restore() { + String var0 = aqt.EMBER.getId(); + discardLegacyChoice(); + File var1 = new File(bz.DIRECTORY, "menu_background_v2.txt"); + if (!var1.isFile()) { + return var0; + } + + try { + String var2 = Files.readString(var1.toPath(), StandardCharsets.UTF_8).trim(); + + for (int var3 = 0; var3 < CATALOG.size(); var3++) { + if (CATALOG.get(var3).id().equals(var2)) { + return var2; + } + } + } catch (Exception var4) { + id.warn(Cif.RENDER, "menu background choice unreadable", var4); + } + + return var0; + } + + private static void discardLegacyChoice() { + try { + Files.deleteIfExists(new File(bz.DIRECTORY, "menu_background.txt").toPath()); + } catch (Exception var1) { + id.warn( + Cif.RENDER, + "legacy menu background choice not removed", + var1 + ); + } + } + + private static void store(String var0) { + try { + File var1 = bz.DIRECTORY; + if (!var1.isDirectory() && !var1.mkdirs()) { + return; + } + + Files.writeString(new File(var1, "menu_background_v2.txt").toPath(), var0, StandardCharsets.UTF_8); + } catch (Exception var2) { + id.warn(Cif.RENDER, "menu background choice not saved", var2); + } + } +} diff --git a/src/main/java/defpackage/aqs.java b/src/main/java/defpackage/aqs.java new file mode 100644 index 0000000..4e626b4 --- /dev/null +++ b/src/main/java/defpackage/aqs.java @@ -0,0 +1,158 @@ +package defpackage; + +import net.minecraft.client.gui.GuiGraphicsExtractor; +import org.jetbrains.annotations.Nullable; +import org.joml.Matrix3x2fStack; + +public final class aqs implements aqo { + private static final arq SQUARE = arq.all(0.0F); + private static final float FULL_ALPHA = 1.0F; + private static final float CIRCLE_SPAN = 2.0F; + private final aqt style; + + aqs(aqt var1) { + this.style = var1; + } + + @Override + public boolean extractable() { + return (boolean)(((0)) != 0); + } + + @Override + public boolean prepare() { + int var2 = 0; + int var1 = -2076704904; + + while (true) { + switch (var1) { + case -2076704904: + default: + if (atb.isMenuBackdropReady()) { + var1 = -55677680; + } else { + var1 = -21938700; + } + break; + case -55677680: + if (accent() != null) { + var1 = 804097382; + } else { + var1 = -21938700; + } + break; + case -21938700: + var2 = 0; + var1 = 1311343468; + break; + case 804097382: + var2 = 1; + var1 = 1311343468; + break; + case 1311343468: + return (boolean)((var2) != 0); + } + } + } + + @Override + public void start() { + } + + @Override + public void stop() { + } + + @Override + public boolean releaseIfStopped() { + return (boolean)(((1)) != 0); + } + + @Override + public void drawExtracted(GuiGraphicsExtractor var1, int var2, int var3) { + } + + @Override + public void drawImmediate(Matrix3x2fStack var1, int var2, int var3) { + this.draw(var1, 0.0F, 0.0F, var2, var3, SQUARE, var2, var3); + } + + @Override + public void drawImmediateCircle(Matrix3x2fStack var1, int var2, int var3, float var4, float var5, float var6) { + float var7 = 0.0F; + int var8 = -492113955; + + while (true) { + switch (var8) { + case -492113955: + default: + if (var6 <= 0.0F) { + var8 = 466683308; + } else { + var8 = 1427970921; + } + break; + case 466683308: + return; + case 1427970921: + var7 = var6 * 2.0F; + this.draw(var1, var4 - var6, var5 - var6, var7, var7, arq.all(var6), var2, var3); + return; + } + } + } + + private void draw(Matrix3x2fStack var1, float var2, float var3, float var4, float var5, arq var6, int var7, int var8) { + ng var9 = null; + int var10 = -498557425; + + while (true) { + switch (var10) { + case -498557425: + default: + var9 = accent(); + if (var9 == null) { + var10 = 2123412031; + } else { + var10 = -360769477; + } + break; + case -360769477: + atb.drawMenuBackdrop(var1, var2, var3, var4, var5, var6, this.style.shaderId(), var9, var7, var8, 1.0F); + return; + case 2123412031: + return; + } + } + } + + @Nullable + private static ng accent() { + mv var0 = null; + ng var2 = null; + int var1 = -1262860083; + + while (true) { + switch (var1) { + case -1262860083: + default: + var0 = bz.getInstance().getThemeManager().getCurrentTheme(); + if (var0 == null) { + var1 = 1984761134; + } else { + var1 = -1077677232; + } + break; + case -1077677232: + var2 = var0.getAccent(); + var1 = -928365148; + break; + case -928365148: + return var2; + case 1984761134: + var2 = null; + var1 = -928365148; + } + } + } +} diff --git a/src/main/java/defpackage/aqt.java b/src/main/java/defpackage/aqt.java new file mode 100644 index 0000000..7f29ed4 --- /dev/null +++ b/src/main/java/defpackage/aqt.java @@ -0,0 +1,52 @@ +package defpackage; + + +public enum aqt { + NEBULA( + "nebula", + "Nebula", + "g" + ), + SILK( + "silk", + "Silk", + "m" + ), + CONTOUR( + "contour", + "Contour", + "a" + ), + EMBER( + "ember", + "Ember", + "T" + ); + + private static final float SHADER_ID_OFFSET = 1.0F; + private final String id; + private final String label; + private final String icon; + + aqt(String var3, String var4, String var5) { + this.id = var3; + this.label = var4; + this.icon = var5; + } + + public float shaderId() { + return this.ordinal() + 1.0F; + } + + public String getId() { + return this.id; + } + + public String getLabel() { + return this.label; + } + + public String getIcon() { + return this.icon; + } +} diff --git a/src/main/java/defpackage/aqu.java b/src/main/java/defpackage/aqu.java new file mode 100644 index 0000000..6bc9495 --- /dev/null +++ b/src/main/java/defpackage/aqu.java @@ -0,0 +1,9 @@ +package defpackage; + +public interface aqu { + byte[] borrow(int var1); + + boolean accept(byte[] var1, int var2, int var3, long var4); + + void discard(byte[] var1); +} diff --git a/src/main/java/defpackage/aqv.java b/src/main/java/defpackage/aqv.java new file mode 100644 index 0000000..4992824 --- /dev/null +++ b/src/main/java/defpackage/aqv.java @@ -0,0 +1,648 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.buffers.GpuBuffer; +import com.mojang.blaze3d.buffers.GpuBufferSlice.MappedView; +import com.mojang.blaze3d.pipeline.BindGroupLayout; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet; +import com.mojang.blaze3d.shaders.UniformType; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.GpuDevice; +import com.mojang.blaze3d.systems.RenderPass; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.textures.FilterMode; +import com.mojang.blaze3d.textures.GpuSampler; +import com.mojang.blaze3d.textures.GpuTexture; +import com.mojang.blaze3d.textures.GpuTextureView; +import java.nio.ByteBuffer; +import java.util.ArrayDeque; +import java.util.Optional; +import java.util.function.Supplier; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.resources.Identifier; +import org.lwjgl.system.MemoryStack; + +public final class aqv { + private static final String NAMESPACE = "evolution"; + private static final String UNIFORM_BLOCK = "ReplayParams"; + private static final String SAMPLER_SOURCE = "SourceTex"; + private static final Identifier VERTEX_SHADER = id("core/replay/fullscreen"); + private static final Identifier FRAGMENT_SHADER = id( + "core/replay/downscale" + ); + private static final String PIPELINE_FAILURE = "gpu frame capture pipeline setup failed for {}"; + private static final String FRAME_FAILURE = "gpu frame capture frame failed for {}"; + private static final String READBACK_FAILURE = "gpu frame capture readback failed for {}"; + private static final GpuFormat TARGET_FORMAT = GpuFormat.RGBA8_UNORM; + private static final int TARGET_USAGE = 14; + private static final int UNIFORM_USAGE = 136; + private static final int READBACK_USAGE = 9; + private static final int UNIFORM_SIZE = 16; + private static final int FLOAT_SIZE = 4; + private static final int TEXTURE_DEPTH = 1; + private static final int TEXTURE_MIP_LEVELS = 1; + private static final int COPY_MIP_LEVEL = 0; + private static final long COPY_OFFSET = 0L; + private static final int BYTES_PER_PIXEL = 4; + private static final int FULLSCREEN_VERTEX_COUNT = 3; + private static final int INSTANCE_COUNT = 1; + private static final int FIRST_VERTEX = 0; + private static final int FIRST_INSTANCE = 0; + private static final int MIN_DIMENSION = 16; + private static final int EVEN_MASK = -2; + private final String name; + private final Identifier pipelineId; + private final int maxInFlight; + private final Supplier uniformLabel; + private final Supplier targetLabel; + private final Supplier readbackLabel; + private final Supplier passLabel; + private final ArrayDeque readbackPool = new ArrayDeque<>(); + private RenderPipeline pipeline; + private GpuBuffer uniformBuffer; + private GpuTexture target; + private GpuTextureView targetView; + private int targetWidth = -1; + private int targetHeight = -1; + private int inFlight; + private int createdBuffers; + private long droppedFrames; + private boolean disabledAfterError; + + public aqv(String var1, int var2) { + this.name = var1; + this.pipelineId = id("pipeline/capture/" + var1); + this.maxInFlight = var2; + this.uniformLabel = () -> "evolution_" + var1 + "_uniforms"; + this.targetLabel = () -> "evolution_" + var1 + "_target"; + this.readbackLabel = () -> "evolution_" + var1 + "_readback"; + this.passLabel = () -> "evolution_" + var1 + "_downscale"; + } + + public boolean capture(int var1, aqu var2) { + RenderTarget var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = -515696636; + + while (true) { + switch (var6) { + case -1012398125: + return (boolean)(((0)) != 0); + case -515696636: + default: + if (this.disabledAfterError) { + var6 = -1012398125; + } else { + var6 = 139358093; + } + break; + case 139358093: + var3 = aqg.mc.gameRenderer.mainRenderTarget(); + if (var3 != null) { + var6 = 594708333; + } else { + var6 = 1784395732; + } + break; + case 594708333: + if (var3.width > 0) { + var6 = 948406879; + } else { + var6 = 1784395732; + } + break; + case 948406879: + if (var3.height > 0) { + var6 = 1356677735; + } else { + var6 = 1784395732; + } + break; + case 1356677735: + if (var3.getColorTextureView() == null) { + var6 = 1784395732; + } else { + var6 = 1511473041; + } + break; + case 1511473041: + var4 = Math.max(16, Math.min(var1, var3.height)) + & -2; + var5 = Math.max(16, Math.round(var4 * ((float)var3.width / var3.height))) + & -2; + return this.captureExact(var5, var4, var2); + case 1784395732: + return (boolean)(((0)) != 0); + } + } + } + + public boolean captureExact(int var1, int var2, aqu var3) { + if (this.disabledAfterError) { + return (boolean)(((0)) != 0); + } + + RenderTarget var4 = aqg.mc.gameRenderer.mainRenderTarget(); + if (var4 != null && var4.width > 0 && var4.height > 0 && var4.getColorTextureView() != null) { + int var5 = Math.max(16, var1) & -2; + int var6 = Math.max(16, var2) & -2; + if (!this.ensurePipeline() || !this.ensureTarget(var5, var6)) { + return (boolean)(((0)) != 0); + } + + if (this.inFlight >= this.maxInFlight) { + this.droppedFrames += (2161285247113744878L ^ -2161285247113744877L) + ((2161285247113744878L & -2161285247113744877L) << 1); + return (boolean)(((0)) != 0); + } + + try { + CommandEncoder var7 = RenderSystem.getDevice().createCommandEncoder(); + this.writeUniforms(var7, var5, var6); + this.downscale(var7, var4); + this.readback(var7, var5, var6, var3); + return (boolean)(((1)) != 0); + } catch (Throwable var8) { + this.fail( + "gpu frame capture frame failed for {}", var8 + ); + return (boolean)(((0)) != 0); + } + } else { + return (boolean)(((0)) != 0); + } + } + + public long droppedFrames() { + return this.droppedFrames; + } + + public void release() { + int var1 = 167025644; + + while (true) { + switch (var1) { + case -487694581: + return; + case 167025644: + default: + if (!RenderSystem.isOnRenderThread()) { + var1 = -487694581; + } else { + var1 = 670939751; + } + break; + case 670939751: + this.closeTarget(); + this.closeUniformBuffer(); + this.closePool(); + return; + } + } + } + + private void downscale(CommandEncoder var1, RenderTarget var2) { + RenderPass var3 = var1.createRenderPass(this.passLabel, this.targetView, Optional.empty()); + + try { + var3.setPipeline(this.pipeline); + RenderSystem.bindDefaultUniforms(var3); + var3.setUniform("ReplayParams", this.uniformBuffer); + var3.bindTexture("SourceTex", var2.getColorTextureView(), linearSampler()); + var3.draw( + 3, + 1, + 0, + (-853632027 ^ 853632027) + ((-853632027 & 853632027) << 1) + ); + } catch (Throwable var7) { + if (var3 != null) { + try { + var3.close(); + } catch (Throwable var6) { + var7.addSuppressed(var6); + } + } + + throw var7; + } + + if (var3 != null) { + var3.close(); + } + } + + private void readback(CommandEncoder var1, int var2, int var3, aqu var4) { + int var5 = 0; + GpuBuffer var6 = null; + long var7 = (5605029022798628228L | -5605029022798628228L) + (5605029022798628228L & -5605029022798628228L); + int var9 = -1144791233; + + while (true) { + switch (var9) { + case -1144791233: + default: + var5 = var2 * var3 * (4); + var6 = this.borrowBuffer(var5); + if (var6 == null) { + var9 = 1067031598; + } else { + var9 = 1246513384; + } + break; + case 1067031598: + this.droppedFrames += (-923868757337586887L ^ 923868757337586888L) + ((-923868757337586887L & 923868757337586888L) << 1); + return; + case 1246513384: + var7 = System.currentTimeMillis(); + this.inFlight += 1; + var1.copyTextureToBuffer( + this.target, + var6, + (1290606854966732354L ^ -1290606854966732354L) + ((1290606854966732354L & -1290606854966732354L) << 1), + () -> this.complete(var6, var2, var3, var7, var4), + (341102333 | -341102333) + (341102333 & -341102333) + ); + return; + } + } + } + + private void complete(GpuBuffer var1, int var2, int var3, long var4, aqu var6) { + this.inFlight -= 1; + byte[] var7 = null; + + try { + MappedView var8 = var1.map( + (boolean)((((1)) != 0)), (boolean)((((-156236915 ^ 156236915) + ((-156236915 & 156236915) << 1)) + ) != 0)); + + try { + ByteBuffer var9 = var8.data(); + int var10 = var2 * (4); + var7 = var6.borrow(var10 * var3); + + for (int var11 = 0; var11 < var3; var11++) { + var9.get((var3 - ((233646291 ^ -233646290) + ((233646291 & -233646290) << 1)) - var11) * var10, var7, var11 * var10, var10); + } + } catch (Throwable var18) { + if (var8 != null) { + try { + var8.close(); + } catch (Throwable var17) { + var18.addSuppressed(var17); + } + } + + throw var18; + } + + if (var8 != null) { + var8.close(); + } + } catch (Throwable var19) { + id.error( + Cif.SHADER, + "gpu frame capture readback failed for {}", + this.name, + var19 + ); + } finally { + this.recycleBuffer(var1); + } + + if (var7 != null && !var6.accept(var7, var2, var3, var4)) { + var6.discard(var7); + } + } + + private GpuBuffer borrowBuffer(int var1) { + while (!this.readbackPool.isEmpty()) { + GpuBuffer var2 = this.readbackPool.pollLast(); + if (!var2.isClosed() && var2.size() == var1) { + return var2; + } + + this.closeBuffer(var2); + } + + if (this.createdBuffers >= this.maxInFlight) { + return null; + } + + GpuDevice var3 = RenderSystem.tryGetDevice(); + if (var3 == null) { + return null; + } + + this.createdBuffers += 1; + return var3.createBuffer(this.readbackLabel, 9, var1); + } + + private void recycleBuffer(GpuBuffer var1) { + int var2 = 0; + int var3 = 1137620298; + + while (true) { + switch (var3) { + case -1995301694: + this.closeBuffer(var1); + return; + case 201756846: + if (var1.size() == var2) { + var3 = 1221275881; + } else { + var3 = -1995301694; + } + break; + case 296115163: + this.readbackPool.addLast(var1); + return; + case 1137620298: + default: + var2 = this.targetWidth * this.targetHeight * (4); + if (!var1.isClosed()) { + var3 = 201756846; + } else { + var3 = -1995301694; + } + break; + case 1221275881: + if (this.readbackPool.size() >= this.maxInFlight) { + var3 = -1995301694; + } else { + var3 = 296115163; + } + } + } + } + + private void closeBuffer(GpuBuffer var1) { + int var2 = 138270930; + + while (true) { + switch (var2) { + case -2113729213: + var1.close(); + var2 = 523987786; + break; + case 138270930: + default: + if (!var1.isClosed()) { + var2 = -2113729213; + } else { + var2 = 523987786; + } + break; + case 523987786: + this.createdBuffers = Math.max( + 0, this.createdBuffers - ((1417898842 | -1417898841) + (1417898842 & -1417898841)) + ); + return; + } + } + } + + private void writeUniforms(CommandEncoder var1, int var2, int var3) { + MemoryStack var4 = MemoryStack.stackPush(); + + try { + ByteBuffer var5 = var4.calloc((-1711559781 | 1711559797) + (-1711559781 & 1711559797)); + var5.putFloat(0, 1.0F / var2); + var5.putFloat(4, 1.0F / var3); + var5.position((-2029631338 | 2029631338) + (-2029631338 & 2029631338)); + var1.writeToBuffer( + this.uniformBuffer + .slice( + (-4074848553053219808L | 4074848553053219808L) + (-4074848553053219808L & 4074848553053219808L), + (5391606672053444432L | -5391606672053444416L) + (5391606672053444432L & -5391606672053444416L) + ), + var5 + ); + } catch (Throwable var8) { + if (var4 != null) { + try { + var4.close(); + } catch (Throwable var7) { + var8.addSuppressed(var7); + } + } + + throw var8; + } + + if (var4 != null) { + var4.close(); + } + } + + private boolean ensurePipeline() { + try { + if (this.pipeline == null) { + Snippet[] var10001 = new Snippet[1]; + var10001[0] = RenderPipelines.POST_PROCESSING_SNIPPET; + this.pipeline = RenderPipeline.builder(var10001) + .withLocation(this.pipelineId) + .withVertexShader(VERTEX_SHADER) + .withFragmentShader(FRAGMENT_SHADER) + .withBindGroupLayout( + BindGroupLayout.builder() + .withUniform("ReplayParams", UniformType.UNIFORM_BUFFER) + .withSampler("SourceTex") + .build() + ) + .withColorTargetState(new ColorTargetState(Optional.empty(), TARGET_FORMAT, (991859025 | -991859010) + (991859025 & -991859010))) + .withDepthStencilState(Optional.empty()) + .withCull((boolean)((((-1307306347 ^ 1307306347) + ((-1307306347 & 1307306347) << 1))) != 0)) + .build(); + } + + GpuDevice var1 = RenderSystem.getDevice(); + if (this.uniformBuffer == null || this.uniformBuffer.isClosed()) { + this.uniformBuffer = var1.createBuffer( + this.uniformLabel, + 136, + (2248223070295359339L | -2248223070295359323L) + (2248223070295359339L & -2248223070295359323L) + ); + } + + return (boolean)(((1)) != 0); + } catch (Throwable var2) { + this.fail( + "gpu frame capture pipeline setup failed for {}", + var2 + ); + return (boolean)(((0)) != 0); + } + } + + private boolean ensureTarget(int var1, int var2) { + GpuDevice var3 = null; + int var4 = -474795863; + + while (true) { + switch (var4) { + case -1463889329: + if (this.inFlight > 0) { + var4 = 797078443; + } else { + var4 = 1974102740; + } + break; + case -931899969: + return (boolean)(((0)) != 0); + case -474795863: + default: + if (this.target != null) { + var4 = 251510572; + } else { + var4 = -1463889329; + } + break; + case -374807303: + return (boolean)(((1)) != 0); + case 251510572: + if (this.targetWidth == var1) { + var4 = 269624016; + } else { + var4 = -1463889329; + } + break; + case 269624016: + if (this.targetHeight == var2) { + var4 = -374807303; + } else { + var4 = -1463889329; + } + break; + case 797078443: + return (boolean)(((0)) != 0); + case 1550908306: + this.closeTarget(); + this.closePool(); + this.target = var3.createTexture( + this.targetLabel, + 14, + TARGET_FORMAT, + var1, + var2, + 1, + (-1300786169 ^ 1300786170) + ((-1300786169 & 1300786170) << 1) + ); + this.targetView = var3.createTextureView(this.target); + this.targetWidth = var1; + this.targetHeight = var2; + return (boolean)(((1)) != 0); + case 1974102740: + var3 = RenderSystem.tryGetDevice(); + if (var3 == null) { + var4 = -931899969; + } else { + var4 = 1550908306; + } + } + } + } + + private void closeTarget() { + int var1 = 901914968; + + while (true) { + switch (var1) { + case -1596688916: + if (this.target != null) { + var1 = 1420571763; + } else { + var1 = 511968408; + } + break; + case -154444244: + this.targetView.close(); + this.targetView = null; + var1 = -1596688916; + break; + case 511968408: + this.targetWidth = -1; + this.targetHeight = -1; + return; + case 901914968: + default: + if (this.targetView != null) { + var1 = -154444244; + } else { + var1 = -1596688916; + } + break; + case 1420571763: + this.target.close(); + this.target = null; + var1 = 511968408; + } + } + } + + private void closeUniformBuffer() { + int var1 = 1902538830; + + while (true) { + switch (var1) { + case 637918980: + return; + case 712555609: + this.uniformBuffer.close(); + this.uniformBuffer = null; + var1 = 637918980; + break; + case 1902538830: + default: + if (this.uniformBuffer != null) { + var1 = 712555609; + } else { + var1 = 637918980; + } + } + } + } + + private void closePool() { + int var1 = 1186761462; + + while (true) { + switch (var1) { + case -1722672181: + return; + case -727796916: + this.closeBuffer(this.readbackPool.pollLast()); + var1 = 1186761462; + break; + case 1186761462: + default: + if (!this.readbackPool.isEmpty()) { + var1 = -727796916; + } else { + var1 = -1722672181; + } + } + } + } + + private void fail(String var1, Throwable var2) { + this.disabledAfterError = (boolean)(((1)) != 0); + id.error(Cif.SHADER, var1, this.name, var2); + this.closeTarget(); + this.closeUniformBuffer(); + this.closePool(); + this.pipeline = null; + } + + private static GpuSampler linearSampler() { + return RenderSystem.getSamplerCache().getClampToEdge(FilterMode.LINEAR); + } + + private static Identifier id(String var0) { + return Identifier.fromNamespaceAndPath("evolution", var0); + } +} diff --git a/src/main/java/defpackage/aqw.java b/src/main/java/defpackage/aqw.java new file mode 100644 index 0000000..0d93cf9 --- /dev/null +++ b/src/main/java/defpackage/aqw.java @@ -0,0 +1,99 @@ +package defpackage; + +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.systems.RenderSystem; +import java.util.function.Consumer; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.render.GuiRenderer; +import net.minecraft.client.renderer.state.gui.GuiElementRenderState; +import net.minecraft.client.renderer.state.gui.GuiRenderState; +import net.minecraft.client.renderer.state.gui.GuiTextRenderState; +import net.minecraft.client.renderer.state.gui.GuiRenderState.TraverseRange; + +public final class aqw implements aqg { + private static final double DEPTH_CLEAR_VALUE = 0.0; + private static final GuiRenderState CHAT_STATE = new GuiRenderState(); + private static final Consumer ELEMENT_PROBE = var0 -> aqw.hasContent = (boolean)(((1)) != 0); + private static final Consumer TEXT_PROBE = var0 -> aqw.hasContent = (boolean)(((1)) != 0); + private static boolean hasContent; + + private aqw() { + } + + public static GuiRenderState beginCapture(GuiGraphicsExtractor var0) { + b.d var1 = (b.d)var0; + GuiRenderState var2 = var1.getGuiRenderState(); + var1.setGuiRenderState(CHAT_STATE); + return var2; + } + + public static void endCapture(GuiGraphicsExtractor var0, GuiRenderState var1) { + ((b.d)var0).setGuiRenderState(var1); + } + + public static void render(GuiRenderer var0) { + if (!hasCapturedContent()) { + CHAT_STATE.reset(); + } else { + b.e var1 = (b.e)var0; + GuiRenderState var2 = var1.getRenderState(); + var1.setRenderState(CHAT_STATE); + + try { + var0.render(); + } finally { + var1.setRenderState(var2); + CHAT_STATE.reset(); + } + + clearGuiDepth(); + } + } + + private static boolean hasCapturedContent() { + int var0 = 198985685; + + while (true) { + switch (var0) { + case -1962462651: + CHAT_STATE.forEachText(TEXT_PROBE); + var0 = 192791059; + break; + case 192791059: + return hasContent; + case 198985685: + default: + hasContent = (boolean)(((0)) != 0); + CHAT_STATE.forEachElement(ELEMENT_PROBE, TraverseRange.ALL); + if (!hasContent) { + var0 = -1962462651; + } else { + var0 = 192791059; + } + } + } + } + + private static void clearGuiDepth() { + RenderTarget var0 = null; + int var1 = 446014801; + + while (true) { + switch (var1) { + case -1987754472: + return; + case 429863262: + RenderSystem.getDevice().createCommandEncoder().clearDepthTexture(var0.getDepthTexture(), 0.0); + return; + case 446014801: + } + + var0 = mc.gameRenderer.mainRenderTarget(); + if (!var0.useDepth) { + var1 = -1987754472; + } else { + var1 = 429863262; + } + } + } +} diff --git a/src/main/java/defpackage/aqx.java b/src/main/java/defpackage/aqx.java new file mode 100644 index 0000000..737d05a --- /dev/null +++ b/src/main/java/defpackage/aqx.java @@ -0,0 +1,55 @@ +package defpackage; + +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.renderer.state.gui.GuiRenderState; + +public final class aqx implements aqg { + private static volatile boolean resourcesReady; + + private aqx() { + } + + public static void markResourcesReady() { + resourcesReady = (boolean)(((1)) != 0); + } + + public static boolean resourcesReady() { + return resourcesReady; + } + + public static void render(DeltaTracker var0) { + if (resourcesReady) { + float var1 = var0.getGameTimeDeltaPartialTick((boolean)((((-315953882 | 315953882) + (-315953882 & 315953882))) != 0)); + arx.beginFrame(); + + try { + if (mc.player != null && mc.level != null && !mc.gui.hud.isHidden()) { + GuiRenderState var2 = mc.gameRenderer.gameRenderState().guiRenderState; + ath.composite(); + asy.compositeHand(); + atb.blurProgram.draw(); + atb.beginGui(); + atf.begin(); + + try { + aru var3 = new aru(var2); + j.call(new fs(var3, var1)); + j.call(new fr(var3, var1)); + } finally { + atf.end(); + atb.endGui(); + } + } + + aqr.renderVanillaScreen(); + if (mc.gui.screen() instanceof api var12) { + var12.renderDeferred(); + } + + acp.render(); + } finally { + arx.endFrame(); + } + } + } +} diff --git a/src/main/java/defpackage/aqy.java b/src/main/java/defpackage/aqy.java new file mode 100644 index 0000000..46963f8 --- /dev/null +++ b/src/main/java/defpackage/aqy.java @@ -0,0 +1,298 @@ +package defpackage; + +import java.awt.image.BufferedImage; +import java.awt.image.ColorModel; +import java.awt.image.Kernel; +import org.jetbrains.annotations.NotNull; + +public class aqy { + protected float radius; + protected Kernel kernel; + + public aqy(float var1) { + this.setRadius(var1); + } + + public static void convolveAndTranspose(@NotNull Kernel var0, int[] var1, int[] var2, int var3, int var4, boolean var5, boolean var6, boolean var7, int var8) { + float[] var9 = var0.getKernelData(null); + int var10 = var0.getWidth(); + int var11 = var10 / (2); + + for (int var12 = 0; var12 < var4; var12++) { + int var13 = var12; + int var14 = var12 * var3; + + for (int var15 = 0; var15 < var3; var15++) { + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + int var20 = var11; + + for (int var21 = -var11; var21 <= var11; var21++) { + float var22 = var9[var20 + var21]; + if (var22 != 0.0F) { + int var23 = var15 + var21; + if (var23 < 0) { + if (var8 == (-1630816164 | 1630816165) + (-1630816164 & 1630816165)) { + var23 = 0; + } else if (var8 == (-238608121 ^ 238608123) + ((-238608121 & 238608123) << 1)) { + var23 = (var15 + var3) % var3; + } + } else if (var23 >= var3) { + if (var8 == (-998423348 ^ 998423349) + ((-998423348 & 998423349) << 1)) { + var23 = var3 - (1); + } else if (var8 == (244709174 | -244709172) + (244709174 & -244709172)) { + var23 = (var15 + var3) % var3; + } + } + + int var24 = var1[var14 + var23]; + int var25 = var24 >> 24; + int var26 = var24 >> 16; + int var27 = var24 >> 8; + int var28 = var24 & 255; + if (var6) { + float var29 = var25 * 0.003921569F; + var26 = (int)(var26 * var29); + var27 = (int)(var27 * var29); + var28 = (int)(var28 * var29); + } + + var19 += var22 * var25; + var16 += var22 * var26; + var17 += var22 * var27; + var18 += var22 * var28; + } + } + + if (var7 && var19 != 0.0F && var19 != 255.0F) { + float var30 = 255.0F / var19; + var16 *= var30; + var17 *= var30; + var18 *= var30; + } + + int var31 = var5 ? clamp((int)(var19 + 0.5)) : 255; + int var32 = clamp((int)(var16 + 0.5)); + int var33 = clamp((int)(var17 + 0.5)); + int var34 = clamp((int)(var18 + 0.5)); + var2[var13] = var31 << (1684459399 ^ -1684459375) + ((1684459399 & -1684459375) << 1) + | var32 << (-1317573728 | 1317573744) + (-1317573728 & 1317573744) + | var33 << (1442841821 | -1442841813) + (1442841821 & -1442841813) + | var34; + var13 += var4; + } + } + } + + public static int clamp(int var0) { + int var1 = -936466853; + + while (true) { + switch (var1) { + case -936466853: + default: + if (var0 < 0) { + var1 = 377415913; + } else { + var1 = 1182595906; + } + break; + case 377415913: + return 0; + case 1182595906: + return Math.min(var0, (59279829 ^ -59279574) + ((59279829 & -59279574) << 1)); + } + } + } + + public static Kernel makeKernel(float var0) { + int var1 = 0; + int var2 = 0; + float[] var3 = null; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 0; + int var11 = 0; + float var12 = 0.0F; + int var13 = 1145227066; + + while (true) { + switch (var13) { + case -2090242617: + if (var11 < var2) { + var13 = 981344196; + } else { + var13 = 298146018; + } + break; + case -1452165743: + var3[var10] = (float)Math.exp(-var12 / var5) / var7; + var13 = -1037715541; + break; + case -1037715541: + var9 += var3[var10]; + var10++; + var11++; + var13 = 1773838023; + break; + case -330445100: + var3[var10] = 0.0F; + var13 = -1037715541; + break; + case -184550288: + var12 = var11 * var11; + if (var12 > var8) { + var13 = -330445100; + } else { + var13 = -1452165743; + } + break; + case 298146018: + return new Kernel(var2, 1, var3); + case 981344196: + var3[var11] /= var9; + var11++; + var13 = -2090242617; + break; + case 1145227066: + default: + var1 = (int)Math.ceil(var0); + var2 = var1 * 3; + var3 = new float[var2]; + var4 = var0 / 3.0F; + var5 = 2.0F * var4 * var4; + var6 = (float) (Math.PI * 2) * var4; + var7 = (float)Math.sqrt(var6); + var8 = var0 * var0; + var9 = 0.0F; + var10 = 0; + var11 = -var1; + var13 = 1773838023; + break; + case 1391363003: + var11 = 0; + var13 = -2090242617; + break; + case 1773838023: + if (var11 <= var1) { + var13 = -184550288; + } else { + var13 = 1391363003; + } + } + } + } + + public void setRadius(float var1) { + this.radius = var1; + this.kernel = makeKernel(var1); + } + + public BufferedImage filter(BufferedImage var1, BufferedImage var2) { + int var3 = 0; + int var4 = 0; + int[] var5 = null; + int[] var6 = null; + int var7 = -342676758; + + while (true) { + switch (var7) { + case -537161198: + convolveAndTranspose( + this.kernel, + var5, + var6, + var3, + var4, + (boolean)(((1)) != 0), + (boolean)(((1)) != 0), + (boolean)(((0)) != 0), + (469763756 ^ -469763755) + ((469763756 & -469763755) << 1) + ); + convolveAndTranspose( + this.kernel, + var6, + var5, + var4, + var3, + (boolean)(((1)) != 0), + (boolean)(((0)) != 0), + (boolean)(((1)) != 0), + (-1127147795 ^ 1127147796) + ((-1127147795 & 1127147796) << 1) + ); + var7 = 804591656; + break; + case -342676758: + default: + var3 = var1.getWidth(); + var4 = var1.getHeight(); + if (var2 == null) { + var7 = -72639565; + } else { + var7 = 1755885370; + } + break; + case -72639565: + var2 = this.createCompatibleDestImage(var1, null); + var7 = 1755885370; + break; + case 804591656: + var2.setRGB( + 0, + 0, + var3, + var4, + var5, + 0, + var3 + ); + return var2; + case 1755885370: + var5 = new int[var3 * var4]; + var6 = new int[var3 * var4]; + var1.getRGB( + 0, + 0, + var3, + var4, + var5, + 0, + var3 + ); + if (this.radius > 0.0F) { + var7 = -537161198; + } else { + var7 = 804591656; + } + } + } + } + + public BufferedImage createCompatibleDestImage(BufferedImage var1, ColorModel var2) { + int var3 = 117456920; + + while (true) { + switch (var3) { + case -1315748383: + var2 = var1.getColorModel(); + var3 = -137551817; + break; + case -137551817: + return new BufferedImage(var2, var2.createCompatibleWritableRaster(var1.getWidth(), var1.getHeight()), var2.isAlphaPremultiplied(), null); + case 117456920: + default: + if (var2 == null) { + var3 = -1315748383; + } else { + var3 = -137551817; + } + } + } + } +} diff --git a/src/main/java/defpackage/aqz.java b/src/main/java/defpackage/aqz.java new file mode 100644 index 0000000..e8edefb --- /dev/null +++ b/src/main/java/defpackage/aqz.java @@ -0,0 +1,183 @@ +package defpackage; + +import com.mojang.blaze3d.platform.InputConstants; +import java.util.HashMap; +import java.util.Map; +import net.minecraft.client.Minecraft; + +public enum aqz { + KEY_SPACE("SPACE", 32), + KEY_APOSTROPHE("APOSTROPHE", 39), + KEY_COMMA("COMMA", 44), + KEY_MINUS("MINUS", 45), + KEY_PERIOD("PERIOD", 46), + KEY_SLASH("SLASH", 47), + KEY_0("0", 48), + KEY_1("1", 49), + KEY_2("2", 50), + KEY_3("3", 51), + KEY_4("4", 52), + KEY_5("5", 53), + KEY_6("6", 54), + KEY_7("7", 55), + KEY_8("8", 56), + KEY_9("9", 57), + KEY_SEMICOLON("SEMICOLON", 59), + KEY_EQUAL("EQUAL", 61), + KEY_A("A", 65), + KEY_B("B", 66), + KEY_C("C", 67), + KEY_D("D", 68), + KEY_E("E", 69), + KEY_F("F", 70), + KEY_G("G", 71), + KEY_H("H", 72), + KEY_I("I", 73), + KEY_J("J", 74), + KEY_K("K", 75), + KEY_L("L", 76), + KEY_M("M", 77), + KEY_N("N", 78), + KEY_O("O", 79), + KEY_P("P", 80), + KEY_Q("Q", 81), + KEY_R("R", 82), + KEY_S("S", 83), + KEY_T("T", 84), + KEY_U("U", 85), + KEY_V("V", 86), + KEY_W("W", 87), + KEY_X("X", 88), + KEY_Y("Y", 89), + KEY_Z("Z", 90), + KEY_LEFT_BRACKET("LEFT_BRACKET", 91), + KEY_BACKSLASH("BACKSLASH", 92), + KEY_RIGHT_BRACKET("RIGHT_BRACKET", 93), + KEY_GRAVE_ACCENT("GRAVE_ACCENT", 96), + KEY_ESCAPE("ESCAPE", 256), + KEY_ENTER("ENTER", 257), + KEY_TAB("TAB", 258), + KEY_BACKSPACE("BACKSPACE", 259), + KEY_INSERT("INSERT", 260), + KEY_DELETE("DELETE", 261), + KEY_RIGHT("RIGHT", 262), + KEY_LEFT("LEFT", 263), + KEY_DOWN("DOWN", 264), + KEY_UP("UP", 265), + KEY_CAPS_LOCK("CAPS_LOCK", 280), + KEY_SCROLL_LOCK("SCROLL_LOCK", 281), + KEY_NUM_LOCK("NUM_LOCK", 282), + KEY_PRINT_SCREEN("PRINT_SCREEN", 283), + KEY_PAUSE("PAUSE", 284), + KEY_F1("F1", 290), + KEY_F2("F2", 291), + KEY_F3("F3", 292), + KEY_F4("F4", 293), + KEY_F5("F5", 294), + KEY_F6("F6", 295), + KEY_F7("F7", 296), + KEY_F8("F8", 297), + KEY_F9("F9", 298), + KEY_F10("F10", 299), + KEY_F11("F11", 300), + KEY_F12("F12", 301), + KEY_KP_0("NUMPAD_0", 320), + KEY_KP_1("NUMPAD_1", 321), + KEY_KP_2("NUMPAD_2", 322), + KEY_KP_3("NUMPAD_3", 323), + KEY_KP_4("NUMPAD_4", 324), + KEY_KP_5("NUMPAD_5", 325), + KEY_KP_6("NUMPAD_6", 326), + KEY_KP_7("NUMPAD_7", 327), + KEY_KP_8("NUMPAD_8", 328), + KEY_KP_9("NUMPAD_9", 329), + KEY_KP_DECIMAL("NUMPAD_DECIMAL", 330), + KEY_KP_DIVIDE("NUMPAD_DIVIDE", 331), + KEY_KP_MULTIPLY("NUMPAD_MULTIPLY", 332), + KEY_KP_SUBTRACT("NUMPAD_SUBTRACT", 333), + KEY_KP_ADD("NUMPAD_ADD", 334), + KEY_KP_ENTER("NUMPAD_ENTER", 335), + KEY_KP_EQUAL("NUMPAD_EQUAL", 336), + KEY_LEFT_SUPER("LEFT_SUPER", 343), + KEY_RIGHT_SUPER("RIGHT_SUPER", 347), + KEY_MENU("MENU", 348), + KEY_WORLD_1("WORLD_1", 161), + KEY_WORLD_2("WORLD_2", 162), + KEY_LEFT_SHIFT("LEFT_SHIFT", 340), + KEY_LEFT_CONTROL("LEFT_CONTROL", 341), + KEY_LEFT_ALT("LEFT_ALT", 342), + KEY_RIGHT_SHIFT("RIGHT_SHIFT", 344), + KEY_RIGHT_CONTROL("RIGHT_CONTROL", 345), + KEY_RIGHT_ALT("RIGHT_ALT", 346), + MOUSE_1("MOUSE1", 0), + MOUSE_2("MOUSE2", 1), + MOUSE_3("MOUSE3", 2), + MOUSE_4("MOUSE4", 3), + MOUSE_5("MOUSE5", 4), + KEY_NONE("", -1); + + public final String name; + public final int keyCode; + private static final Map BY_CODE = new HashMap<>(); + private static final Map BY_NAME = new HashMap<>(); + + @Override + public String toString() { + return this.name; + } + + public static String getKeyName(int var0) { + return BY_CODE.getOrDefault(var0, KEY_NONE).name; + } + + public static int getKeyCode(String var0) { + return BY_NAME.getOrDefault(var0.toLowerCase(), KEY_NONE).keyCode; + } + + public static boolean isKeyDown(int var0) { + int var2 = 0; + int var1 = -1168350828; + + while (true) { + switch (var1) { + case -1168350828: + default: + if (var0 > 0) { + var1 = 1616704808; + } else { + var1 = 1746418926; + } + break; + case 1616704808: + if (InputConstants.isKeyDown(Minecraft.getInstance().getWindow(), var0)) { + var1 = 1744187289; + } else { + var1 = 1746418926; + } + break; + case 1744187289: + var2 = 1; + var1 = 1901824010; + break; + case 1746418926: + var2 = 0; + var1 = 1901824010; + break; + case 1901824010: + return (boolean)((var2) != 0); + } + } + } + + aqz(String var3, int var4) { + this.name = var3; + this.keyCode = var4; + } + + static { + for (aqz var3 : values()) { + BY_CODE.put(var3.keyCode, var3); + BY_NAME.put(var3.name.toLowerCase(), var3); + } + } +} diff --git a/src/main/java/defpackage/ar.java b/src/main/java/defpackage/ar.java new file mode 100644 index 0000000..84efb79 --- /dev/null +++ b/src/main/java/defpackage/ar.java @@ -0,0 +1,16 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; + +public class ar extends ax implements aw { + float amount; + + public ar(float var1) { + this.amount = var1; + } + + @Override + public void applyPose(PoseStack var1) { + var1.translate(0.0F, 0.0F, this.amount); + } +} diff --git a/src/main/java/defpackage/ara.java b/src/main/java/defpackage/ara.java new file mode 100644 index 0000000..326efa3 --- /dev/null +++ b/src/main/java/defpackage/ara.java @@ -0,0 +1,20 @@ +package defpackage; + +import org.joml.Matrix4f; + +final class ara { + private final Matrix4f[] matrices = new Matrix4f[8]; + private int cursor; + + private ara() { + for (int var1 = 0; var1 < 8; var1++) { + this.matrices[var1] = new Matrix4f(); + } + } + + Matrix4f next() { + Matrix4f var1 = this.matrices[this.cursor]; + this.cursor = this.cursor + 1; + return var1; + } +} diff --git a/src/main/java/defpackage/arb.java b/src/main/java/defpackage/arb.java new file mode 100644 index 0000000..d0b4843 --- /dev/null +++ b/src/main/java/defpackage/arb.java @@ -0,0 +1,26 @@ +package defpackage; + +import org.joml.Matrix3x2fc; +import org.joml.Matrix4f; + +public final class arb { + private static final int SCRATCH_COUNT = 8; + private static final int SCRATCH_MASK = 7; + private static final ThreadLocal SCRATCH = ThreadLocal.withInitial(ara::new); + + private arb() { + } + + public static Matrix4f toMatrix4f(Matrix3x2fc var0) { + Matrix4f var1 = SCRATCH.get().next(); + var1.m00(var0.m00()); + var1.m01(var0.m01()); + var1.m10(var0.m10()); + var1.m11(var0.m11()); + var1.m30(var0.m20()); + var1.m31(var0.m21()); + var1.m22(1.0F); + var1.m33(1.0F); + return var1; + } +} diff --git a/src/main/java/defpackage/arc.java b/src/main/java/defpackage/arc.java new file mode 100644 index 0000000..40cc1b5 --- /dev/null +++ b/src/main/java/defpackage/arc.java @@ -0,0 +1,4 @@ +package defpackage; + +record arc(int width, int height, int blurRadius) { +} diff --git a/src/main/java/defpackage/ard.java b/src/main/java/defpackage/ard.java new file mode 100644 index 0000000..e599bda --- /dev/null +++ b/src/main/java/defpackage/ard.java @@ -0,0 +1,49 @@ +package defpackage; + +import java.awt.image.BufferedImage; +import org.apache.commons.lang3.RandomStringUtils; + +public class ard { + public final aro id; + private int ticksSinceUse = 0; + + public ard(BufferedImage var1) { + this.id = new aro("shadow_" + RandomStringUtils.randomAlphanumeric((-1599807424 ^ 1599807432) + ((-1599807424 & 1599807432) << 1))); + arh.registerBufferedImageTexture(this.id, var1); + } + + public void reset() { + this.ticksSinceUse = 0; + } + + public boolean tick() { + int var2 = 0; + int var1 = 1701411299; + + while (true) { + switch (var1) { + case -29269003: + var2 = 1; + var1 = 1109112602; + break; + case 1109112602: + return (boolean)((var2) != 0); + case 1413587465: + var2 = 0; + var1 = 1109112602; + break; + case 1701411299: + default: + if ((this.ticksSinceUse += (406446369 | -406446368) + (406446369 & -406446368)) > (635018287 ^ -635017987) + ((635018287 & -635017987) << 1)) { + var1 = -29269003; + } else { + var1 = 1413587465; + } + } + } + } + + public void destroy() { + aqg.mc.getTextureManager().release(this.id.getId()); + } +} diff --git a/src/main/java/defpackage/are.java b/src/main/java/defpackage/are.java new file mode 100644 index 0000000..7a78920 --- /dev/null +++ b/src/main/java/defpackage/are.java @@ -0,0 +1,42 @@ +package defpackage; + +public class are { + public final int id; + private int ticksSinceUse = 0; + + public are(int var1) { + this.id = var1; + } + + public void reset() { + this.ticksSinceUse = 0; + } + + public boolean tick() { + int var2 = 0; + int var1 = -1801789066; + + while (true) { + switch (var1) { + case -1801789066: + default: + if ((this.ticksSinceUse += (533599974 ^ -533599973) + ((533599974 & -533599973) << 1)) + > (181500705 ^ -181500701) + ((181500705 & -181500701) << 1)) { + var1 = 224365529; + } else { + var1 = 1136065645; + } + break; + case 224365529: + var2 = 1; + var1 = 570728648; + break; + case 570728648: + return (boolean)((var2) != 0); + case 1136065645: + var2 = 0; + var1 = 570728648; + } + } + } +} diff --git a/src/main/java/defpackage/arf.java b/src/main/java/defpackage/arf.java new file mode 100644 index 0000000..9a0adfb --- /dev/null +++ b/src/main/java/defpackage/arf.java @@ -0,0 +1,57 @@ +package defpackage; + +public final class arf { + float x; + float y; + float width; + float height; + int color; + + public arf(float x, float y, float width, float height, int color) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.color = color; + } + + public float x() { + return this.x; + } + public float y() { + return this.y; + } + public float width() { + return this.width; + } + public float height() { + return this.height; + } + public int color() { + return this.color; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof arf that)) { + return false; + } + if (Float.compare(this.x, that.x) != 0) { return false; } + if (Float.compare(this.y, that.y) != 0) { return false; } + if (Float.compare(this.width, that.width) != 0) { return false; } + if (Float.compare(this.height, that.height) != 0) { return false; } + if (this.color != that.color) { return false; } + return true; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(this.x, this.y, this.width, this.height, this.color); + } + + @Override + public String toString() { + return "arf[" + "x=" + this.x + ", " + "y=" + this.y + ", " + "width=" + this.width + ", " + "height=" + this.height + ", " + "color=" + this.color + "]"; + } + +} diff --git a/src/main/java/defpackage/arg.java b/src/main/java/defpackage/arg.java new file mode 100644 index 0000000..112b54f --- /dev/null +++ b/src/main/java/defpackage/arg.java @@ -0,0 +1,51 @@ +package defpackage; + +public record arg(float x, float y, float x1, float y1) { + public boolean contains(double var1, double var3) { + int var6 = 0; + int var5 = 46298371; + + while (true) { + switch (var5) { + case -1990131545: + if (var1 <= this.x1) { + var5 = -1912476665; + } else { + var5 = 191095732; + } + break; + case -1912476665: + if (var3 >= this.y) { + var5 = 940531248; + } else { + var5 = 191095732; + } + break; + case -1024632186: + var6 = 1; + var5 = -158818882; + break; + case -158818882: + return (boolean)((var6) != 0); + case 46298371: + default: + if (var1 >= this.x) { + var5 = -1990131545; + } else { + var5 = 191095732; + } + break; + case 191095732: + var6 = 0; + var5 = -158818882; + break; + case 940531248: + if (var3 <= this.y1) { + var5 = -1024632186; + } else { + var5 = 191095732; + } + } + } + } +} diff --git a/src/main/java/defpackage/arh.java b/src/main/java/defpackage/arh.java new file mode 100644 index 0000000..403d545 --- /dev/null +++ b/src/main/java/defpackage/arh.java @@ -0,0 +1,853 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.platform.NativeImage; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import java.awt.Color; +import java.awt.Graphics; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Stack; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import javax.imageio.ImageIO; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import org.jetbrains.annotations.NotNull; +import org.joml.Matrix3x2fStack; +import org.joml.Matrix3x2fc; +import org.joml.Matrix4f; +import org.lwjgl.BufferUtils; + +public final class arh implements aqg { + public static HashMap glowCache = new HashMap<>(); + public static HashMap shadowCache1 = new HashMap<>(); + static final Stack clipStack = new Stack<>(); + private static final List QUAD = new ArrayList<>(); + private static final ExecutorService GLOW_GENERATOR = Executors.newSingleThreadExecutor(); + + public static void endScissor() { + RenderSystem.disableScissorForRenderTypeDraws(); + } + + public static void setRectPoints( + BufferBuilder var0, Matrix4f var1, float var2, float var3, float var4, float var5, Color var6, Color var7, Color var8, Color var9 + ) { + var0.addVertex(var1, var2, var5, 0.0F).setColor(var6.getRGB()); + var0.addVertex(var1, var4, var5, 0.0F).setColor(var7.getRGB()); + var0.addVertex(var1, var4, var3, 0.0F).setColor(var8.getRGB()); + var0.addVertex(var1, var2, var3, 0.0F).setColor(var9.getRGB()); + } + + public static boolean isHovered(double var0, double var2, double var4, double var6, double var8, double var10) { + int var13 = 0; + int var12 = -1779746120; + + while (true) { + switch (var12) { + case -1779746120: + default: + if (var0 >= var4) { + var12 = -940652349; + } else { + var12 = -1126576123; + } + break; + case -1126576123: + var13 = 0; + var12 = 345898535; + break; + case -940652349: + if (var0 - var8 <= var4) { + var12 = 1271429157; + } else { + var12 = -1126576123; + } + break; + case 258390156: + var13 = 1; + var12 = 345898535; + break; + case 345898535: + return (boolean)((var13) != 0); + case 1271429157: + if (var2 >= var6) { + var12 = 1548836694; + } else { + var12 = -1126576123; + } + break; + case 1548836694: + if (var2 - var10 <= var6) { + var12 = 258390156; + } else { + var12 = -1126576123; + } + } + } + } + + public static void drawBlurredShadow(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, int var5, Color var6) { + } + + public static void onRender(GuiGraphicsExtractor var0) { + Matrix3x2fc var1 = null; + Matrix4f var2 = null; + RenderType var3 = null; + BufferBuilder var4 = null; + int var5 = -766972579; + + while (true) { + switch (var5) { + case -1401689963: + return; + case -766972579: + default: + var1 = var0.pose(); + var2 = arb.toMatrix4f(var1); + if (!QUAD.isEmpty()) { + var5 = 784027221; + } else { + var5 = -1401689963; + } + break; + case 784027221: + var3 = arj.positionColor(); + var4 = arj.begin(var3); + QUAD.forEach(var2x -> quad(var2, var4, var2x.x, var2x.y, var2x.width, var2x.height, var2x.color)); + arj.draw(var3, var4); + QUAD.clear(); + var5 = -1401689963; + } + } + } + + public static void drawQuad(float var0, float var1, float var2, float var3, int var4) { + QUAD.add(new arf(var0, var1, var2, var3, asv.multAlpha(var4, 1.0F))); + } + + public static void quad(Matrix4f var0, BufferBuilder var1, float var2, float var3, float var4, float var5) { + var1.addVertex(var0, var2, var3, 0.0F); + var1.addVertex(var0, var2, var3 + var5, 0.0F); + var1.addVertex(var0, var2 + var4, var3 + var5, 0.0F); + var1.addVertex(var0, var2 + var4, var3, 0.0F); + } + + public static void quad(Matrix4f var0, BufferBuilder var1, float var2, float var3, float var4, float var5, int var6) { + var1.addVertex(var0, var2, var3, 0.0F).setColor(var6); + var1.addVertex(var0, var2, var3 + var5, 0.0F).setColor(var6); + var1.addVertex(var0, var2 + var4, var3 + var5, 0.0F).setColor(var6); + var1.addVertex(var0, var2 + var4, var3, 0.0F).setColor(var6); + } + + public static void quad(Matrix4f var0, float var1, float var2, float var3, float var4, int var5) { + RenderType var6 = arj.positionColor(); + BufferBuilder var7 = arj.begin(var6); + var7.addVertex(var0, var1, var2 + var4, 0.0F).setColor(var5); + var7.addVertex(var0, var1 + var3, var2 + var4, 0.0F).setColor(var5); + var7.addVertex(var0, var1 + var3, var2, 0.0F).setColor(var5); + var7.addVertex(var0, var1, var2, 0.0F).setColor(var5); + arj.draw(var6, var7); + } + + public static void quadTexture(Matrix4f var0, BufferBuilder var1, float var2, float var3, float var4, float var5, int var6) { + var1.addVertex(var0, var2, var3 + var5, 0.0F).setUv(0.0F, 0.0F).setColor(var6); + var1.addVertex(var0, var2 + var4, var3 + var5, 0.0F).setUv(0.0F, 1.0F).setColor(var6); + var1.addVertex(var0, var2 + var4, var3, 0.0F).setUv(1.0F, 1.0F).setColor(var6); + var1.addVertex(var0, var2, var3, 0.0F).setUv(1.0F, 0.0F).setColor(var6); + } + + private static arc findSimilarKey(int var0, int var1, int var2) { + arc var3 = null; + int var4 = 0; + Iterator var5 = null; + arc var6 = null; + int var7 = 0; + int var8 = 1866214595; + + while (true) { + switch (var8) { + case -203699211: + var8 = 2064736340; + break; + case -186422646: + var4 = var7; + var3 = var6; + var8 = -203699211; + break; + case 203974835: + var6 = (arc)var5.next(); + var7 = Math.abs(var6.width() - var0) + Math.abs(var6.height() - var1) + Math.abs(var6.blurRadius() - var2); + if (var7 < var4) { + var8 = -186422646; + } else { + var8 = -203699211; + } + break; + case 1558441938: + return var3; + case 1866214595: + default: + var3 = null; + var4 = 2147483647; + var5 = glowCache.keySet().iterator(); + var8 = 2064736340; + break; + case 2064736340: + if (var5.hasNext()) { + var8 = 203974835; + } else { + var8 = 1558441938; + } + } + } + } + + public static void drawGradientBlurredShadow(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, int var5, ary var6) { + var3 += var5 * (2); + var4 += var5 * (2); + var1 -= var5; + var2 -= var5; + arc var7 = findSimilarKey((int)var3, (int)var4, var5); + if (var7 == null + || (int)(Math.abs(var7.width() - var3) + Math.abs(var7.height() - var4) + Math.abs(var7.blurRadius() - var5)) + >= (-285826624 | 285826629) + (-285826624 & 285826629)) { + arc var8 = new arc((int)var3, (int)var4, var5); + mc.execute( + () -> { + BufferedImage var2x = new BufferedImage(var8.width(), var8.height(), (1255084914 ^ -1255084912) + ((1255084914 & -1255084912) << 1)); + Graphics var3x = var2x.getGraphics(); + var3x.setColor(new Color((-511036479 | 511036478) + (-511036479 & 511036478))); + var3x.fillRect( + var5, + var5, + var8.width() - var5 * (2), + var8.height() - var5 * ((-322582701 ^ 322582703) + ((-322582701 & 322582703) << 1)) + ); + var3x.dispose(); + aqy var4x = new aqy(var5); + BufferedImage var5x = var4x.filter(var2x, null); + glowCache.put(var8, new ard(var5x)); + } + ); + } + + ard var13 = glowCache.getOrDefault(var7, null); + if (var13 != null) { + var13.reset(); + atb.drawTexture(var0, var13.id.getId(), var1, var2, var3, var4, var6); + } + } + + public static void registerBufferedImageTexture(aro var0, BufferedImage var1) { + try { + ByteArrayOutputStream var2 = new ByteArrayOutputStream(); + ImageIO.write(var1, "png", var2); + byte[] var3 = var2.toByteArray(); + registerTexture(var0, var3); + } catch (Exception var4) { + } + } + + public static void registerTexture(aro var0, byte[] var1) { + try { + ByteBuffer var2 = BufferUtils.createByteBuffer(var1.length).put(var1); + var2.flip(); + NativeImage var3 = NativeImage.read(var2); + mc.execute(() -> { + DynamicTexture var2x = new DynamicTexture(() -> "evolution_texture_" + var0.getId(), var3); + mc.getTextureManager().register(var0.getId(), var2x); + }); + } catch (Exception var4) { + } + } + + public static void renderTexture( + Matrix3x2fStack var0, + Identifier var1, + double var2, + double var4, + double var6, + double var8, + float var10, + float var11, + double var12, + double var14, + double var16, + double var18 + ) { + double var20 = var2 + var6; + double var22 = var4 + var8; + double var24 = 0.0; + Matrix4f var26 = arb.toMatrix4f(var0); + RenderType var27 = arj.guiTextured(var1); + BufferBuilder var28 = arj.begin(var27); + var28.addVertex(var26, (float)var2, (float)var22, (float)var24).setUv(var10 / (float)var16, (var11 + (float)var14) / (float)var18); + var28.addVertex(var26, (float)var20, (float)var22, (float)var24).setUv((var10 + (float)var12) / (float)var16, (var11 + (float)var14) / (float)var18); + var28.addVertex(var26, (float)var20, (float)var4, (float)var24).setUv((var10 + (float)var12) / (float)var16, var11 / (float)var18); + var28.addVertex(var26, (float)var2, (float)var4, (float)var24).setUv(var10 / (float)var16, (var11 + 0.0F) / (float)var18); + arj.draw(var27, var28); + } + + public static void renderGradientTexture( + Matrix3x2fStack var0, + Identifier var1, + double var2, + double var4, + double var6, + double var8, + float var10, + float var11, + double var12, + double var14, + double var16, + double var18, + Color var20, + Color var21, + Color var22, + Color var23 + ) { + RenderType var24 = arj.guiTextured(var1); + BufferBuilder var25 = arj.begin(var24); + renderGradientTextureInternal(var25, var0, var2, var4, var6, var8, var10, var11, var12, var14, var16, var18, var20, var21, var22, var23); + arj.draw(var24, var25); + } + + public static void renderGradientTextureInternal( + BufferBuilder var0, + Matrix3x2fStack var1, + double var2, + double var4, + double var6, + double var8, + float var10, + float var11, + double var12, + double var14, + double var16, + double var18, + Color var20, + Color var21, + Color var22, + Color var23 + ) { + double var24 = var2 + var6; + double var26 = var4 + var8; + double var28 = 0.0; + Matrix4f var30 = arb.toMatrix4f(var1); + var0.addVertex(var30, (float)var2, (float)var26, (float)var28) + .setUv(var10 / (float)var16, (var11 + (float)var14) / (float)var18) + .setColor(var20.getRGB()); + var0.addVertex(var30, (float)var24, (float)var26, (float)var28) + .setUv((var10 + (float)var12) / (float)var16, (var11 + (float)var14) / (float)var18) + .setColor(var21.getRGB()); + var0.addVertex(var30, (float)var24, (float)var4, (float)var28) + .setUv((var10 + (float)var12) / (float)var16, var11 / (float)var18) + .setColor(var22.getRGB()); + var0.addVertex(var30, (float)var2, (float)var4, (float)var28).setUv(var10 / (float)var16, (var11 + 0.0F) / (float)var18).setColor(var23.getRGB()); + } + + public static void setupRender() { + } + + public static void drawTracerPointer(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, boolean var6, boolean var7, int var8) { + } + + public static void drawNewArrow(Matrix3x2fStack var0, float var1, float var2, float var3, Color var4) { + } + + public static void drawDefaultArrow(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, boolean var6, boolean var7, int var8) { + Matrix4f var9 = null; + RenderType var10 = null; + BufferBuilder var11 = null; + int var12 = -1627728014; + + while (true) { + switch (var12) { + case -2146820607: + var8 = darker(new Color(var8), 0.6F).getRGB(); + var11.addVertex(var9, var1 - var3 * var4, var2 + var3, 0.0F).setColor(var8); + var11.addVertex(var9, var1 + var3 * var4, var2 + var3, 0.0F).setColor(var8); + var11.addVertex(var9, var1, var2 + var3 - var5, 0.0F).setColor(var8); + var11.addVertex(var9, var1 - var3 * var4, var2 + var3, 0.0F).setColor(var8); + var12 = 1069429712; + break; + case -1627728014: + default: + if (var7) { + var12 = 1202265441; + } else { + var12 = -48764406; + } + break; + case -48764406: + var0.pushMatrix(); + setupRender(); + var9 = arb.toMatrix4f(var0); + var10 = arj.positionColor(); + var11 = arj.begin(var10); + var11.addVertex(var9, var1, var2, 0.0F).setColor(var8); + var11.addVertex(var9, var1 - var3 * var4, var2 + var3, 0.0F).setColor(var8); + var11.addVertex(var9, var1, var2 + var3 - var5, 0.0F).setColor(var8); + var11.addVertex(var9, var1, var2, 0.0F).setColor(var8); + var8 = darker(new Color(var8), 0.8F).getRGB(); + var11.addVertex(var9, var1, var2, 0.0F).setColor(var8); + var11.addVertex(var9, var1, var2 + var3 - var5, 0.0F).setColor(var8); + var11.addVertex(var9, var1 + var3 * var4, var2 + var3, 0.0F).setColor(var8); + var11.addVertex(var9, var1, var2, 0.0F).setColor(var8); + if (var6) { + var12 = -2146820607; + } else { + var12 = 1069429712; + } + break; + case 1069429712: + arj.draw(var10, var11); + endRender(); + var0.popMatrix(); + return; + case 1202265441: + drawBlurredShadow( + var0, + var1 - var3 * var4, + var2, + var1 + var3 * var4 - (var1 - var3 * var4), + var3, + 10, + injectAlpha(new Color(var8), (1063535904 ^ -1063535764) + ((1063535904 & -1063535764) << 1)) + ); + var12 = -48764406; + } + } + } + + public static void endRender() { + } + + public static float scrollAnimate(float var0, float var1, float var2) { + int var3 = var0 > var1 ? 1: 0; + if (var2 < 0.0F) { + var2 = 0.0F; + } else if (var2 > 1.0F) { + var2 = 1.0F; + } + + float var4 = Math.max(var0, var1) - Math.min(var0, var1); + float var5 = var4 * var2; + return var1 + (var3 != 0 ? var5 : -var5); + } + + public static Color injectAlpha(Color var0, int var1) { + return new Color( + var0.getRed(), + var0.getGreen(), + var0.getBlue(), + Mth.clamp(var1, 0, (2084337438 ^ -2084337183) + ((2084337438 & -2084337183) << 1)) + ); + } + + public static Color TwoColoreffect(Color var0, Color var1, double var2, double var4) { + int var6 = 0; + int var8 = 0; + int var7 = -881363810; + + while (true) { + switch (var7) { + case -881363810: + default: + var6 = (int)((System.currentTimeMillis() / var2 + var4) % 360.0); + if (var6 >= (-844440688 | 844440868) + (-844440688 & 844440868)) { + var7 = 974012772; + } else { + var7 = 1280400911; + } + break; + case -727604799: + var6 = var8 * (2); + return interpolateColorC(var0, var1, var6 / 360.0F); + case 974012772: + var8 = (-602794485 ^ 602794845) + ((-602794485 & 602794845) << 1) - var6; + var7 = -727604799; + break; + case 1280400911: + var8 = var6; + var7 = -727604799; + } + } + } + + public static Color astolfo(boolean var0, int var1) { + float var2 = 0.0F; + float var3 = 0.0F; + float var5 = 0.0F; + int var4 = -1331098239; + + while (true) { + switch (var4) { + case -2018965456: + var2 = var5; + var3 = (float)(System.currentTimeMillis() % (int)var2 + var1); + if (var3 > var2) { + var4 = -586122258; + } else { + var4 = 1826275713; + } + break; + case -1702489076: + var3 = 0.5F - (var3 - 0.5F); + var4 = 111485033; + break; + case -1331098239: + default: + if (var0) { + var4 = 1242814059; + } else { + var4 = 68966600; + } + break; + case -586122258: + var3 -= var2; + var4 = 1826275713; + break; + case 68966600: + var5 = 3000.0F; + var4 = -2018965456; + break; + case 111485033: + var3 += 0.5F; + return Color.getHSBColor(var3, 0.4F, 1.0F); + case 1242814059: + var5 = 3500.0F; + var4 = -2018965456; + break; + case 1826275713: + var3 /= var2; + if (var3 > 0.5F) { + var4 = -1702489076; + } else { + var4 = 111485033; + } + } + } + } + + public static Color rainbow(int var0, float var1, float var2) { + double var3 = Math.ceil((float)(System.currentTimeMillis() + var0) / 16.0F); + var3 %= 360.0; + return Color.getHSBColor((float)(var3 / 360.0), var1, var2); + } + + public static Color skyRainbow(int var0, int var1) { + int var2 = 0; + float var4 = 0.0F; + int var3 = 1759055588; + + while (true) { + switch (var3) { + case -918065801: + var4 = -((float)(var2 / 360.0)); + var3 = 641953753; + break; + case -580570394: + var4 = (float)(var2 / 360.0); + var3 = 641953753; + break; + case 641953753: + return Color.getHSBColor(var4, 0.5F, 1.0F); + case 1759055588: + default: + var2 = (int)( + (System.currentTimeMillis() / var0 + var1) + % ((4579996553571719984L ^ -4579996553571719624L) + ((4579996553571719984L & -4579996553571719624L) << 1)) + ); + if ((float)((var2 = var2 % ((566557445 ^ -566557085) + ((566557445 & -566557085) << 1))) / 360.0) < 0.5) { + var3 = -918065801; + } else { + var3 = -580570394; + } + } + } + } + + public static Color getAnalogousColor(Color var0) { + float[] var1 = Color.RGBtoHSB(var0.getRed(), var0.getGreen(), var0.getBlue(), null); + float var2 = 0.84F; + float var3 = var1[0] - var2; + return new Color( + Color.HSBtoRGB( + var3, var1[1], var1[2] + ) + ); + } + + public static Color applyOpacity(Color var0, float var1) { + var1 = Math.min(1.0F, Math.max(0.0F, var1)); + return new Color(var0.getRed(), var0.getGreen(), var0.getBlue(), (int)(var0.getAlpha() * var1)); + } + + public static int applyOpacity(int var0, float var1) { + var1 = Math.min(1.0F, Math.max(0.0F, var1)); + Color var2 = new Color(var0); + return new Color(var2.getRed(), var2.getGreen(), var2.getBlue(), (int)(var2.getAlpha() * var1)).getRGB(); + } + + public static Color darker(Color var0, float var1) { + return new Color( + Math.max((int)(var0.getRed() * var1), (1414799073 | -1414799073) + (1414799073 & -1414799073)), + Math.max((int)(var0.getGreen() * var1), (1611865557 ^ -1611865557) + ((1611865557 & -1611865557) << 1)), + Math.max((int)(var0.getBlue() * var1), (2123361657 ^ -2123361657) + ((2123361657 & -2123361657) << 1)), + var0.getAlpha() + ); + } + + public static Color rainbow(int var0, int var1, float var2, float var3, float var4) { + int var5 = (int)( + (System.currentTimeMillis() / var0 + var1) % ((-7982257206737319303L | 7982257206737319663L) + (-7982257206737319303L & 7982257206737319663L)) + ); + float var6 = var5 / 360.0F; + Color var7 = new Color(Color.HSBtoRGB(var6, var2, var3)); + return new Color( + var7.getRed(), + var7.getGreen(), + var7.getBlue(), + Math.max( + 0, Math.min(255, (int)(var4 * 255.0F)) + ) + ); + } + + public static Color interpolateColorsBackAndForth(int var0, int var1, Color var2, Color var3, boolean var4) { + int var5 = 0; + int var7 = 0; + Color var8 = null; + int var6 = -2082012209; + + while (true) { + switch (var6) { + case -2082012209: + default: + var5 = (int)( + (System.currentTimeMillis() / var0 + var1) + % ((-4171225794160214236L ^ 4171225794160214596L) + ((-4171225794160214236L & 4171225794160214596L) << 1)) + ); + if (var5 >= (1517817767 | -1517817587) + (1517817767 & -1517817587)) { + var6 = -822667662; + } else { + var6 = -1613982077; + } + break; + case -1613982077: + var7 = var5; + var6 = -855356856; + break; + case -1140523160: + var8 = interpolateColorC(var2, var3, var5 / 360.0F); + var6 = -967760077; + break; + case -967760077: + return var8; + case -855356856: + var5 = var7 * (2); + if (var4) { + var6 = 772121464; + } else { + var6 = -1140523160; + } + break; + case -822667662: + var7 = (-1858372280 ^ 1858372640) + ((-1858372280 & 1858372640) << 1) - var5; + var6 = -855356856; + break; + case 772121464: + var8 = interpolateColorHue(var2, var3, var5 / 360.0F); + var6 = -967760077; + } + } + } + + public static Color interpolateColorC(Color var0, Color var1, float var2) { + var2 = Math.min(1.0F, Math.max(0.0F, var2)); + return new Color( + interpolateInt(var0.getRed(), var1.getRed(), var2), + interpolateInt(var0.getGreen(), var1.getGreen(), var2), + interpolateInt(var0.getBlue(), var1.getBlue(), var2), + interpolateInt(var0.getAlpha(), var1.getAlpha(), var2) + ); + } + + public static Color interpolateColorHue(Color var0, Color var1, float var2) { + var2 = Math.min(1.0F, Math.max(0.0F, var2)); + float[] var3 = Color.RGBtoHSB(var0.getRed(), var0.getGreen(), var0.getBlue(), null); + float[] var4 = Color.RGBtoHSB(var1.getRed(), var1.getGreen(), var1.getBlue(), null); + Color var5 = Color.getHSBColor( + interpolateFloat(var3[0], var4[0], var2), + interpolateFloat( + var3[1], var4[1], var2 + ), + interpolateFloat(var3[2], var4[2], var2) + ); + return new Color(var5.getRed(), var5.getGreen(), var5.getBlue(), interpolateInt(var0.getAlpha(), var1.getAlpha(), var2)); + } + + public static double interpolate(double var0, double var2, double var4) { + return var0 + (var2 - var0) * var4; + } + + public static float interpolateFloat(float var0, float var1, double var2) { + return (float)interpolate(var0, var1, (float)var2); + } + + public static int interpolateInt(int var0, int var1, double var2) { + return (int)interpolate(var0, var1, (float)var2); + } + + public static BufferBuilder preShaderDraw(Matrix3x2fStack var0, float var1, float var2, float var3, float var4) { + setupRender(); + Matrix4f var5 = arb.toMatrix4f(var0); + BufferBuilder var6 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION); + setRectanglePoints(var6, var5, var1, var2, var1 + var3, var2 + var4); + return var6; + } + + public static void setRectanglePoints(BufferBuilder var0, Matrix4f var1, float var2, float var3, float var4, float var5) { + var0.addVertex(var1, var2, var3, 0.0F); + var0.addVertex(var1, var2, var5, 0.0F); + var0.addVertex(var1, var4, var5, 0.0F); + var0.addVertex(var1, var4, var3, 0.0F); + } + + public static boolean isDark(Color var0) { + return isDark(var0.getRed() / 255.0F, var0.getGreen() / 255.0F, var0.getBlue() / 255.0F); + } + + public static boolean isDark(float var0, float var1, float var2) { + int var4 = 0; + int var3 = -801069892; + + while (true) { + switch (var3) { + case -1136776968: + return (boolean)((var4) != 0); + case -801069892: + default: + if (colorDistance(var0, var1, var2, 0.0F, 0.0F, 0.0F) < colorDistance(var0, var1, var2, 1.0F, 1.0F, 1.0F)) { + var3 = 122670580; + } else { + var3 = 1148694532; + } + break; + case 122670580: + var4 = 1; + var3 = -1136776968; + break; + case 1148694532: + var4 = 0; + var3 = -1136776968; + } + } + } + + public static float colorDistance(float var0, float var1, float var2, float var3, float var4, float var5) { + float var6 = var3 - var0; + float var7 = var4 - var1; + float var8 = var5 - var2; + return (float)Math.sqrt(var6 * var6 + var7 * var7 + var8 * var8); + } + + @NotNull + public static Color getColor(@NotNull Color var0, @NotNull Color var1, float var2, boolean var3) { + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + Color var9 = null; + int var8 = 1861193673; + + while (true) { + switch (var8) { + case -1246601691: + return var9; + case -986530697: + var9 = var1; + var8 = -1246601691; + break; + case -939801526: + var4 = var1.getRed() - var0.getRed(); + var5 = var1.getGreen() - var0.getGreen(); + var6 = var1.getBlue() - var0.getBlue(); + var7 = var1.getAlpha() - var0.getAlpha(); + return new Color( + fixColorValue(var0.getRed() + (int)(var4 * var2)), + fixColorValue(var0.getGreen() + (int)(var5 * var2)), + fixColorValue(var0.getBlue() + (int)(var6 * var2)), + fixColorValue(var0.getAlpha() + (int)(var7 * var2)) + ); + case -723551034: + if (var2 >= 0.95) { + var8 = -986530697; + } else { + var8 = 2194502; + } + break; + case 2194502: + var9 = var0; + var8 = -1246601691; + break; + case 1861193673: + default: + if (!var3) { + var8 = -723551034; + } else { + var8 = -939801526; + } + } + } + } + + private static int fixColorValue(int var0) { + int var2 = 0; + int var1 = 1505788152; + + while (true) { + switch (var1) { + case -1826265544: + return var2; + case -84013304: + var2 = Math.max(var0, (673664785 | -673664785) + (673664785 & -673664785)); + var1 = -1826265544; + break; + case 1505788152: + default: + if (var0 > (-1765499349 ^ 1765499604) + ((-1765499349 & 1765499604) << 1)) { + var1 = 1767854625; + } else { + var1 = -84013304; + } + break; + case 1767854625: + var2 = 255; + var1 = -1826265544; + } + } + } + + public static void endBuilding(RenderType var0, BufferBuilder var1) { + arj.draw(var0, var1); + } + + private arh() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/ari.java b/src/main/java/defpackage/ari.java new file mode 100644 index 0000000..3dfc71e --- /dev/null +++ b/src/main/java/defpackage/ari.java @@ -0,0 +1,42 @@ +package defpackage; + +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.resources.Identifier; + +final class ari { + RenderType layer; + Identifier texture; + + ari(RenderType layer, Identifier texture) { + this.layer = layer; + this.texture = texture; + } + + public RenderType layer() { + return this.layer; + } + public Identifier texture() { + return this.texture; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof ari that)) { + return false; + } + if (!java.util.Objects.equals(this.layer, that.layer)) { return false; } + if (!java.util.Objects.equals(this.texture, that.texture)) { return false; } + return true; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(this.layer, this.texture); + } + + @Override + public String toString() { + return "ari[" + "layer=" + this.layer + ", " + "texture=" + this.texture + "]"; + } + +} diff --git a/src/main/java/defpackage/arj.java b/src/main/java/defpackage/arj.java new file mode 100644 index 0000000..d9474ee --- /dev/null +++ b/src/main/java/defpackage/arj.java @@ -0,0 +1,478 @@ +package defpackage; + +import com.mojang.blaze3d.IndexType; +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.buffers.GpuBuffer; +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.DepthStencilState; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet; +import com.mojang.blaze3d.platform.CompareOp; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.systems.ScissorState; +import com.mojang.blaze3d.systems.RenderSystem.AutoStorageIndexBuffer; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.ByteBufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.MeshData; +import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.blaze3d.vertex.MeshData.DrawState; +import java.lang.reflect.Field; +import java.lang.reflect.RecordComponent; +import java.nio.ByteBuffer; +import java.util.Map; +import java.util.WeakHashMap; +import java.util.function.Supplier; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.BindGroupLayouts; +import net.minecraft.client.renderer.rendertype.RenderSetup; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.resources.Identifier; + +public final class arj { + private static final ThreadLocal CURRENT_LAYER = new ThreadLocal<>(); + private static final ThreadLocal CURRENT_TEXTURE = new ThreadLocal<>(); + private static final Map BUILDER_TEXTURES = new WeakHashMap<>(); + private static final Map SETUP_TEXTURES = new WeakHashMap<>(); + private static final Map LAYER_TEXTURES = new WeakHashMap<>(); + private static ari lastLayerTexture; + private static final String VANILLA_POSITION_COLOR_SHADER = "core/position_color"; + private static final RenderType DEPTH_TESTED_LAYER = positionColorLayer( + "position_color_depth", + (boolean)(((1)) != 0), + CompareOp.GREATER_THAN_OR_EQUAL + ); + private static final RenderType DEPTH_TESTED_NO_WRITE_LAYER = positionColorLayer( + "position_color_depth_no_write", + (boolean)(((0)) != 0), + CompareOp.GREATER_THAN_OR_EQUAL + ); + private static final ThreadLocal SCRATCH_BUFFER = ThreadLocal.withInitial( + () -> new ByteBufferBuilder((380677603 | -379891171) + (380677603 & -379891171)) + ); + private static final Supplier IMMEDIATE_VERTEX_BUFFER_LABEL = () -> "evolution_immediate_vertices"; + private static final Supplier IMMEDIATE_INDEX_BUFFER_LABEL = () -> "evolution_immediate_indices"; + private static GpuBuffer immediateVertexBuffer; + private static int immediateVertexCapacity; + private static GpuBuffer immediateIndexBuffer; + private static int immediateIndexCapacity; + + public static void registerBuilderTexture(Object var0, Identifier var1) { + BUILDER_TEXTURES.put(var0, var1); + } + + public static Identifier getBuilderTexture(Object var0) { + return BUILDER_TEXTURES.get(var0); + } + + public static void registerSetupTexture(RenderSetup var0, Identifier var1) { + SETUP_TEXTURES.put(var0, var1); + } + + public static Identifier getSetupTexture(RenderSetup var0) { + return SETUP_TEXTURES.get(var0); + } + + public static void registerLayerTexture(RenderType var0, Identifier var1) { + LAYER_TEXTURES.put(var0, var1); + } + + public static Identifier extractTexture(RenderType var0) { + ari var1 = lastLayerTexture; + if (var1 != null && var1.layer == var0) { + return var1.texture; + } + + Identifier var2 = LAYER_TEXTURES.get(var0); + if (var2 != null) { + lastLayerTexture = new ari(var0, var2); + return var2; + } + + try { + Class var3 = var0.getClass(); + Field var4 = null; + + while (var3 != null && var4 == null) { + Field[] var5 = var3.getDeclaredFields(); + int var6 = var5.length; + + for (int var7 = 0; var7 < var6; var7++) { + Field var8 = var5[var7]; + if (var8.getType() == RenderSetup.class) { + var4 = var8; + break; + } + } + + if (var4 == null) { + var3 = var3.getSuperclass(); + } + } + + if (var4 != null) { + var4.setAccessible((boolean)((((-1923517327 | 1923517328) + (-1923517327 & 1923517328))) != 0)); + Object var16 = var4.get(var0); + if (var16 != null) { + Field var17 = null; + Class var18 = var16.getClass(); + + while (var18 != null && var17 == null) { + Field[] var19 = var18.getDeclaredFields(); + int var9 = var19.length; + + for (int var10 = 0; var10 < var9; var10++) { + Field var11 = var19[var10]; + if (var11.getType() == Map.class) { + var17 = var11; + break; + } + } + + if (var17 == null) { + var18 = var18.getSuperclass(); + } + } + + if (var17 != null) { + var17.setAccessible((boolean)((((1490767434 | -1490767433) + (1490767434 & -1490767433))) != 0)); + Map var20 = (Map)var17.get(var16); + if (var20 != null && !var20.isEmpty()) { + Object var21 = var20.values().iterator().next(); + if (var21 != null && var21.getClass().isRecord()) { + RecordComponent[] var22 = var21.getClass().getRecordComponents(); + int var23 = var22.length; + + for (int var12 = 0; var12 < var23; var12++) { + RecordComponent var13 = var22[var12]; + if (var13.getType() == Identifier.class) { + var13.getAccessor().setAccessible((boolean)((((1655619528 | -1655619527) + (1655619528 & -1655619527))) != 0)); + Identifier var14 = (Identifier)var13.getAccessor().invoke(var21); + LAYER_TEXTURES.put(var0, var14); + lastLayerTexture = new ari(var0, var14); + return var14; + } + } + } + } + } + } + } + } catch (Exception var15) { + } + + return null; + } + + private static RenderPipeline positionColorPipeline(String var0, boolean var1, CompareOp var2) { + return RenderPipeline.builder(new Snippet[0]) + .withLocation( + Identifier.fromNamespaceAndPath( + "evolution", "pipeline/" + var0 + ) + ) + .withVertexShader("core/position_color") + .withFragmentShader("core/position_color") + .withVertexBinding(0, DefaultVertexFormat.POSITION_COLOR) + .withPrimitiveTopology(PrimitiveTopology.QUADS) + .withCull((boolean)((((-1932614094 ^ 1932614094) + ((-1932614094 & 1932614094) << 1))) != 0)) + .withDepthStencilState(new DepthStencilState(var2, var1)) + .withColorTargetState(new ColorTargetState(BlendFunction.TRANSLUCENT)) + .withBindGroupLayout(BindGroupLayouts.MATRICES_PROJECTION) + .build(); + } + + private static RenderType positionColorLayer(String var0, boolean var1, CompareOp var2) { + return b.m.create("evolution_" + var0, RenderSetup.builder(positionColorPipeline(var0, var1, var2)).createRenderSetup()); + } + + private arj() { + } + + public static RenderType positionColor() { + return RenderTypes.debugQuads(); + } + + public static RenderType positionColorDepth() { + return DEPTH_TESTED_LAYER; + } + + public static RenderType positionColorDepthNoWrite() { + return DEPTH_TESTED_NO_WRITE_LAYER; + } + + public static RenderType glow() { + return RenderTypes.lightning(); + } + + public static RenderType lines() { + return RenderTypes.lines(); + } + + public static RenderType filledBox() { + return RenderTypes.debugFilledBox(); + } + + public static RenderType linesDepthNoWrite() { + return RenderTypes.linesTranslucent(); + } + + public static RenderType guiTextured(Identifier var0) { + Minecraft var1 = null; + int var2 = -276540491; + + while (true) { + switch (var2) { + case -1693125900: + return RenderTypes.text(var0); + case -276540491: + default: + CURRENT_TEXTURE.set(var0); + var1 = Minecraft.getInstance(); + if (var1 != null) { + var2 = 1372396942; + } else { + var2 = -1693125900; + } + break; + case 1372396942: + var1.getTextureManager().getTexture(var0); + var2 = -1693125900; + } + } + } + + public static RenderType guiTexturedNoTexture() { + CURRENT_TEXTURE.remove(); + return RenderTypes.debugQuads(); + } + + public static Identifier getCurrentTexture() { + return CURRENT_TEXTURE.get(); + } + + public static BufferBuilder begin(RenderType var0) { + return new BufferBuilder(SCRATCH_BUFFER.get(), var0.primitiveTopology(), var0.format()); + } + + public static BufferBuilder begin(PrimitiveTopology var0, VertexFormat var1) { + return new BufferBuilder(SCRATCH_BUFFER.get(), var0, var1); + } + + public static void setCurrentLayer(RenderType var0) { + CURRENT_LAYER.set(var0); + } + + public static void drawCurrent(BufferBuilder var0) { + RenderType var1 = null; + int var2 = 241763370; + + while (true) { + switch (var2) { + case 20225054: + draw(var1, var0); + return; + case 241763370: + default: + var1 = CURRENT_LAYER.get(); + if (var1 == null) { + var2 = 1249362613; + } else { + var2 = 20225054; + } + break; + case 1249362613: + var1 = positionColor(); + var2 = 20225054; + } + } + } + + public static void draw(RenderType var0, BufferBuilder var1) { + MeshData var2 = var1.build(); + if (var2 != null) { + atd var3 = atd.getActive(); + if (var3 != null) { + var3.draw(var0, var2); + } else { + try { + drawWithLayerPipeline(var0, var2); + } finally { + var2.close(); + } + } + } + } + + private static void drawWithLayerPipeline(RenderType var0, MeshData var1) { + ScissorState var2 = null; + DrawState var3 = null; + GpuBuffer var4 = null; + GpuBuffer var5 = null; + IndexType var6 = null; + AutoStorageIndexBuffer var7 = null; + int var8 = -1573988740; + + while (true) { + switch (var8) { + case -1993076440: + var7 = RenderSystem.getSequentialBuffer(var3.primitiveTopology()); + var5 = var7.getBuffer(var3.indexCount()); + var6 = var7.type(); + var8 = 1309209779; + break; + case -1961762216: + if (var2.height() <= 0) { + var8 = -1146440606; + } else { + var8 = 2076351228; + } + break; + case -1573988740: + default: + atf.flush(); + var2 = RenderSystem.getScissorStateForRenderTypeDraws(); + if (var2.enabled()) { + var8 = -811016433; + } else { + var8 = 2076351228; + } + break; + case -1146440606: + return; + case -811016433: + if (var2.width() > 0) { + var8 = -1961762216; + } else { + var8 = -1146440606; + } + break; + case -373922764: + var5 = uploadIndices(var1.indexBuffer()); + var6 = var3.indexType(); + var8 = 1309209779; + break; + case 1309209779: + var0.prepare() + .drawFromBuffer( + var4, + var5, + var6, + 0, + 0, + var3.indexCount() + ); + return; + case 2076351228: + var3 = var1.drawState(); + var4 = uploadVertices(var1.vertexBuffer()); + if (var1.indexBuffer() == null) { + var8 = -1993076440; + } else { + var8 = -373922764; + } + } + } + } + + private static GpuBuffer uploadVertices(ByteBuffer var0) { + int var1 = 0; + int var2 = -281278727; + + while (true) { + switch (var2) { + case -1555318005: + immediateVertexBuffer.close(); + var2 = 298456114; + break; + case -1346243468: + if (immediateVertexCapacity < var1) { + var2 = -986815084; + } else { + var2 = -260730808; + } + break; + case -986815084: + if (immediateVertexBuffer != null) { + var2 = -1555318005; + } else { + var2 = 298456114; + } + break; + case -281278727: + default: + var1 = var0.remaining(); + if (immediateVertexBuffer != null) { + var2 = -1346243468; + } else { + var2 = -986815084; + } + break; + case -260730808: + RenderSystem.getDevice() + .createCommandEncoder() + .writeToBuffer( + immediateVertexBuffer.slice((3853951270531832134L | -3853951270531832134L) + (3853951270531832134L & -3853951270531832134L), var1), var0 + ); + return immediateVertexBuffer; + case 298456114: + immediateVertexBuffer = RenderSystem.getDevice() + .createBuffer(IMMEDIATE_VERTEX_BUFFER_LABEL, 40, var1); + immediateVertexCapacity = var1; + var2 = -260730808; + } + } + } + + private static GpuBuffer uploadIndices(ByteBuffer var0) { + int var1 = 0; + int var2 = 785438148; + + while (true) { + switch (var2) { + case -1546269119: + if (immediateIndexCapacity < var1) { + var2 = -605809543; + } else { + var2 = 2086836207; + } + break; + case -605809543: + if (immediateIndexBuffer != null) { + var2 = 790852326; + } else { + var2 = 1698915922; + } + break; + case 785438148: + default: + var1 = var0.remaining(); + if (immediateIndexBuffer != null) { + var2 = -1546269119; + } else { + var2 = -605809543; + } + break; + case 790852326: + immediateIndexBuffer.close(); + var2 = 1698915922; + break; + case 1698915922: + immediateIndexBuffer = RenderSystem.getDevice() + .createBuffer(IMMEDIATE_INDEX_BUFFER_LABEL, 72, var1); + immediateIndexCapacity = var1; + var2 = 2086836207; + break; + case 2086836207: + RenderSystem.getDevice() + .createCommandEncoder() + .writeToBuffer( + immediateIndexBuffer.slice((252443114614333335L | -252443114614333335L) + (252443114614333335L & -252443114614333335L), var1), var0 + ); + return immediateIndexBuffer; + } + } + } +} diff --git a/src/main/java/defpackage/ark.java b/src/main/java/defpackage/ark.java new file mode 100644 index 0000000..df4b53c --- /dev/null +++ b/src/main/java/defpackage/ark.java @@ -0,0 +1,223 @@ +package defpackage; + +import net.minecraft.util.Mth; + +public final class ark { + public static final float IDLE_WIDTH = 3.5F; + private static final float ACTIVE_WIDTH = 6.0F; + private static final float GRAB_PADDING = 3.0F; + private static final float TRACK_ALPHA = 0.45F; + private static final float THUMB_IDLE_ALPHA = 0.34F; + private static final float THUMB_ACTIVE_ALPHA = 0.9F; + private static final float MIN_THUMB_HEIGHT = 20.0F; + private static final float MIN_TRAVEL = 1.0F; + private static final float ACTIVITY_EPSILON = 0.001F; + private static final long IDLE_DELAY_MS = 900L; + private static final String TOOLTIP = "Drag to scroll the list"; + private final ct activity = ct.layout(ob.MEDIUM, 0.0F); + private final ct hover = asa.spring(); + private final ct thumbHeightAnimation = ct.layout(ob.FAST, 0.0F); + private final boolean tooltips; + private float laneX; + private float laneY; + private float laneWidth = 3.5F; + private float laneHeight; + private float thumbY; + private float thumbHeight; + private float travel = 1.0F; + private float maxScroll; + private float scroll; + private float grabOffset; + private boolean dragging; + private boolean sized; + private long lastScrollMillis; + + public ark() { + this((boolean)((((1257339713 | -1257339713) + (1257339713 & -1257339713))) != 0)); + } + + public ark(boolean var1) { + this.tooltips = var1; + } + + public void measure(float var1, float var2, float var3, float var4, float var5, float var6) { + float var7 = 0.0F; + int var8 = 525916119; + + while (true) { + switch (var8) { + case -1214888133: + this.thumbHeight = Math.min(var4, this.thumbHeightAnimation.update(var7)); + this.travel = Math.max(1.0F, var4 - this.thumbHeight); + this.thumbY = var2 + this.travel * (this.scroll / this.maxScroll); + return; + case -398979940: + var7 = Math.min(var4, Math.max(var4 * (var4 / (var4 + this.maxScroll)), 20.0F)); + if (!this.sized) { + var8 = 1964703570; + } else { + var8 = -1214888133; + } + break; + case 525916119: + default: + this.laneX = var1; + this.laneY = var2; + this.laneWidth = var3; + this.laneHeight = var4; + this.maxScroll = Math.max(0.0F, var5); + this.scroll = Mth.clamp(var6, 0.0F, this.maxScroll); + if (!this.isActive()) { + var8 = 1637894069; + } else { + var8 = -398979940; + } + break; + case 1637894069: + this.thumbHeight = 0.0F; + this.thumbY = var2; + this.travel = 1.0F; + return; + case 1964703570: + this.sized = (boolean)(((1)) != 0); + this.thumbHeightAnimation.jumpTo(var7); + var8 = -1214888133; + } + } + } + + public boolean isActive() { + int var2 = 0; + int var1 = -789392558; + + while (true) { + switch (var1) { + case -2112680959: + var2 = 0; + var1 = -1518459399; + break; + case -1782187632: + if (this.laneHeight > 0.0F) { + var1 = 2109925576; + } else { + var1 = -2112680959; + } + break; + case -1518459399: + return (boolean)((var2) != 0); + case -789392558: + default: + if (this.maxScroll > 0.0F) { + var1 = -1782187632; + } else { + var1 = -2112680959; + } + break; + case 2109925576: + var2 = 1; + var1 = -1518459399; + } + } + } + + public boolean isDragging() { + return this.dragging; + } + + public boolean isOver(double var1, double var3) { + float var5 = 0.0F; + float var6 = 0.0F; + int var7 = -1374621673; + + while (true) { + switch (var7) { + case -1563381175: + return (boolean)(((0)) != 0); + case -1374621673: + default: + if (!this.isActive()) { + var7 = -1563381175; + } else { + var7 = 1253335284; + } + break; + case 1253335284: + var5 = Math.max(this.laneWidth, 6.0F) + 6.0F; + var6 = this.laneX + this.laneWidth - var5 + 3.0F; + return aqj.isHovered(var1, var3, var6, this.laneY, var5, this.laneHeight); + } + } + } + + public boolean press(double var1, double var3) { + int var5 = -315750550; + + while (true) { + switch (var5) { + case -1538681693: + this.dragging = (boolean)(((1)) != 0); + this.grabOffset = Mth.clamp((float)var3 - this.thumbY, 0.0F, this.thumbHeight); + this.lastScrollMillis = System.currentTimeMillis(); + return (boolean)(((1)) != 0); + case -1416266057: + return (boolean)(((0)) != 0); + case -315750550: + } + + if (!this.isOver(var1, var3)) { + var5 = -1416266057; + } else { + var5 = -1538681693; + } + } + } + + public float dragTo(double var1) { + this.lastScrollMillis = System.currentTimeMillis(); + float var3 = (float)var1 - this.laneY - this.grabOffset; + return Mth.clamp(var3 / this.travel, 0.0F, 1.0F) * this.maxScroll; + } + + public void release() { + this.dragging = (boolean)(((0)) != 0); + } + + public void notifyScrolled() { + this.lastScrollMillis = System.currentTimeMillis(); + } + + public void render(aru var1, mv var2, float var3, float var4, float var5, boolean var6) { + if (!this.isActive()) { + this.activity.jumpTo(0.0F); + this.hover.jumpTo(0.0F); + } else { + boolean var7 = this.isOver(var4, var5); + int var8 = System.currentTimeMillis() - this.lastScrollMillis + < (2866710599671325838L ^ -2866710599671324938L) + ((2866710599671325838L & -2866710599671324938L) << 1) + ? 1: 0; + float var9 = this.activity.update(!this.dragging && !var7 && var8 == 0 && var6 ? 0.0F : 1.0F); + float var10 = this.laneWidth + (6.0F - this.laneWidth) * var9; + float var11 = this.laneX + this.laneWidth - var10; + arq var12 = asj.pill(var10); + if (var9 > 0.001F) { + var1.drawSurface(aso.CONTROL, var11, this.laneY, var10, this.laneHeight, var12, var2.getForegroundLight().getRGBWithAlpha(var3 * 0.45F * var9)); + } + + asu var13 = this.dragging ? var2.getColor() : oq.current().color(nx.ON_SURFACE_MUTED); + float var14 = 0.34F + 0.55999994F * var9; + var1.drawSurface(aso.CONTROL, var11, this.thumbY, var10, this.thumbHeight, var12, var13.getRGBWithAlpha(var3 * var14)); + float var15 = this.hover.update(var7 ? 1.0F : 0.0F); + if (this.tooltips && var15 > 0.5F) { + ass.tooltip( + this, + "Drag to scroll the list", + var11, + this.thumbY, + var10, + this.thumbHeight, + asr.LEFT + ); + } + } + } +} diff --git a/src/main/java/defpackage/arl.java b/src/main/java/defpackage/arl.java new file mode 100644 index 0000000..aad5b51 --- /dev/null +++ b/src/main/java/defpackage/arl.java @@ -0,0 +1,245 @@ +package defpackage; + + +public class arl implements aqg { + private static final double APPROACH_TAU_SECONDS = 0.055; + private static final double GLIDE_TAU_SECONDS = 0.12; + private static final double FLING_TAU_SECONDS = 0.16; + private static final double FLING_GAIN = 2.4; + private static final double MAX_DELTA_SECONDS = 0.05; + private static final double SETTLE_EPSILON = 0.1; + private static final double VELOCITY_EPSILON = 1.0; + private static final double NANOS_PER_SECOND = 1.0E9; + private double max; + private double value = 0.0; + private double targetValue = 0.0; + private double speed = 16.0; + private double velocity; + private long lastUpdateNanos; + private boolean gliding; + + public void update() { + double var1 = 0.0; + double var3 = 0.0; + double var5 = 0.0; + double var7 = 0.0; + double var10 = 0.0; + int var9 = 460992177; + + while (true) { + switch (var9) { + case -1948442081: + this.targetValue = var3; + this.velocity = 0.0; + var9 = -554016089; + break; + case -1692953111: + var10 = 0.055; + var9 = 640799330; + break; + case -888140150: + this.velocity = 0.0; + var9 = 1097290044; + break; + case -851633168: + if (this.gliding) { + var9 = -728290395; + } else { + var9 = -1692953111; + } + break; + case -728290395: + var10 = 0.12; + var9 = 640799330; + break; + case -554016089: + var5 = this.targetValue - this.value; + if (Math.abs(var5) < 0.1) { + var9 = 1792066166; + } else { + var9 = -851633168; + } + break; + case 70600358: + this.targetValue = this.targetValue + this.velocity * var1; + this.velocity = this.velocity * Math.exp(-var1 / 0.16); + if (Math.abs(this.velocity) < 1.0) { + var9 = -888140150; + } else { + var9 = 1097290044; + } + break; + case 460992177: + default: + var1 = this.deltaSeconds(); + if (this.velocity != 0.0) { + var9 = 70600358; + } else { + var9 = 1097290044; + } + break; + case 640799330: + var7 = var10; + this.value = this.value + var5 * (1.0 - Math.exp(-var1 / var7)); + this.value = this.clamp(this.value); + return; + case 1097290044: + var3 = this.clamp(this.targetValue); + if (var3 != this.targetValue) { + var9 = -1948442081; + } else { + var9 = -554016089; + } + break; + case 1792066166: + this.value = this.targetValue; + this.gliding = (boolean)(((0)) != 0); + return; + } + } + } + + public void setMax(double var1) { + this.max = Math.max(0.0, var1); + this.targetValue = this.clamp(this.targetValue); + this.value = this.clamp(this.value); + } + + public double getValue() { + return -this.value; + } + + public void setTargetValue(double var1) { + this.targetValue = var1; + this.velocity = 0.0; + this.gliding = (boolean)(((0)) != 0); + } + + public void glideTo(double var1) { + this.targetValue = var1; + this.velocity = 0.0; + this.gliding = (boolean)(((1)) != 0); + } + + public void jumpTo(double var1) { + this.targetValue = this.clamp(var1); + this.value = this.targetValue; + this.velocity = 0.0; + this.gliding = (boolean)(((0)) != 0); + } + + public void scroll(double var1) { + this.gliding = (boolean)(((0)) != 0); + double var3 = var1 * this.speed; + this.targetValue += var3; + this.velocity += var3 * 2.4; + } + + public boolean isSettled() { + int var2 = 0; + int var1 = -716194470; + + while (true) { + switch (var1) { + case -1689362608: + var2 = 1; + var1 = -1497309468; + break; + case -1497309468: + return (boolean)((var2) != 0); + case -1094761836: + if (this.value == this.targetValue) { + var1 = -1689362608; + } else { + var1 = 1241685320; + } + break; + case -716194470: + default: + if (this.velocity == 0.0) { + var1 = -1094761836; + } else { + var1 = 1241685320; + } + break; + case 1241685320: + var2 = 0; + var1 = -1497309468; + } + } + } + + private double clamp(double var1) { + return Math.max(Math.min(var1, 0.0), -this.max); + } + + private double deltaSeconds() { + long var1 = (6140894548799987824L | -6140894548799987824L) + (6140894548799987824L & -6140894548799987824L); + double var3 = 0.0; + int var5 = 1900662765; + + while (true) { + switch (var5) { + case 729186055: + this.lastUpdateNanos = var1; + return 0.0; + case 1068520484: + var3 = (var1 - this.lastUpdateNanos) / 1.0E9; + this.lastUpdateNanos = var1; + return Math.min(Math.max(var3, 0.0), 0.05); + case 1900662765: + } + + var1 = System.nanoTime(); + if (this.lastUpdateNanos == (-1764399947233415108L | 1764399947233415108L) + (-1764399947233415108L & 1764399947233415108L)) { + var5 = 729186055; + } else { + var5 = 1068520484; + } + } + } + + public double getMax() { + return this.max; + } + + public double getTargetValue() { + return this.targetValue; + } + + public double getSpeed() { + return this.speed; + } + + public double getVelocity() { + return this.velocity; + } + + public long getLastUpdateNanos() { + return this.lastUpdateNanos; + } + + public boolean isGliding() { + return this.gliding; + } + + public void setValue(double var1) { + this.value = var1; + } + + public void setSpeed(double var1) { + this.speed = var1; + } + + public void setVelocity(double var1) { + this.velocity = var1; + } + + public void setLastUpdateNanos(long var1) { + this.lastUpdateNanos = var1; + } + + public void setGliding(boolean var1) { + this.gliding = var1; + } +} diff --git a/src/main/java/defpackage/arm.java b/src/main/java/defpackage/arm.java new file mode 100644 index 0000000..ab1e025 --- /dev/null +++ b/src/main/java/defpackage/arm.java @@ -0,0 +1,21 @@ +package defpackage; + +public enum arm { + ANY, + ENGLISH, + ENGLISH_NUMBERS, + CYRILLIC, + NUMBERS_ONLY; + + public boolean isAllowed(char var1) { + return (boolean)(switch (this) { + case ANY -> 1; + case ENGLISH -> Character.isLetter(var1) && var1 <= (-614200910 | 614201037) + (-614200910 & 614201037) && Character.isAlphabetic(var1) + ? 1: 0; + case ENGLISH_NUMBERS -> Character.isLetterOrDigit(var1) && var1 <= 127? 1: 0; + case CYRILLIC -> String.valueOf(var1) + .matches("[А-Яа-яЁё]"); + case NUMBERS_ONLY -> Character.isDigit(var1); + }); + } +} diff --git a/src/main/java/defpackage/arn.java b/src/main/java/defpackage/arn.java new file mode 100644 index 0000000..ab9234f --- /dev/null +++ b/src/main/java/defpackage/arn.java @@ -0,0 +1,1083 @@ +package defpackage; + +import com.mojang.blaze3d.platform.InputConstants; +import net.minecraft.client.model.geom.builders.UVPair; +import net.minecraft.util.Mth; +import net.minecraft.util.Util; +import net.minecraft.util.Util.OS; + +public class arn implements aqg { + private static final float CARET_WIDTH = 1.0F; + private static final float CARET_GAP = 2.0F; + private static final float CARET_OVERHANG = 1.0F; + private String text = ""; + private boolean selected; + private boolean selectAll; + private int cursor; + private float posX; + private ge font; + private UVPair position; + private String emptyText; + private float width; + private long lastInputTime = System.currentTimeMillis(); + private int maxLength = 2147483647; + private arm charFilter = arm.ANY; + private float scrollOffset = 0.0F; + ct animation = ct.layout(ob.DELIBERATE, 0.2F); + + public arn(UVPair var1, ge var2, String var3, float var4) { + this.font = var2; + this.emptyText = var3; + this.width = var4; + this.position = var1; + } + + public void render(aru var1, float var2, float var3, asu var4, asu var5) { + this.position = new UVPair(var2, var3); + this.cursor = Mth.clamp(this.cursor, 0, this.text.length()); + this.posX = var2; + boolean var6 = this.isEmpty(); + float var7 = 0.0F; + if (!var6) { + String var8 = this.text.substring(0, this.cursor); + var7 = this.font.width(var8); + } + + float var13 = this.width; + int var9 = 0; + + while (this.font.width(this.text.substring(var9, this.cursor)) > var13) { + var9++; + } + + int var10 = this.cursor; + + while (var10 < this.text.length() && this.font.width(this.text.substring(var9, var10)) < var13) { + var10++; + } + + String var11 = this.text.substring(var9, var10); + if (var6) { + var1.drawText(this.font, this.emptyText, this.selected ? var2 + 1.0F + 2.0F : var2, var3, var5); + } else { + var1.drawText(this.font, var11, var2, var3, var4); + } + + if (this.selected + && System.currentTimeMillis() - this.lastInputTime + > (2661072511184584149L ^ -2661072511184583949L) + ((2661072511184584149L & -2661072511184583949L) << 1)) { + float var12 = this.posX + var7 - this.scrollOffset; + this.animation.setRole(ob.SETTLED); + var1.drawRect( + var12, + var3 - 1.0F, + 1.0F, + this.font.height() + 2.0F, + var4.mulAlpha(this.animation.update(this.animation.value() == 0.2F ? 1.0F : (this.animation.value() == 1.0F ? 0.2F : this.animation.target()))) + ); + } + + if (this.selectAll) { + var1.drawRect(var2 - 1.0F, var3 - 1.0F, this.font.width(var11) + 2.0F, this.font.height() + 2.0F, var5.mulAlpha(0.5F)); + } + } + + public void onMouseClicked(double var1, double var3, apf var5) { + UVPair var6 = this.getPosition(); + this.selected = (boolean)(((var5.getButtonIndex() == 0 && aqj.isHovered(var1, var3, var6.u(), var6.v() - 1.0F, this.width, this.font.height() + 2.0F) + ? 1: (806957774 | -806957774) + (806957774 & -806957774))) != 0); + if (this.selected) { + this.selectAll = (boolean)(((0)) != 0); + } + } + + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = 0; + String var5 = null; + int var6 = -635347799; + + while (true) { + switch (var6) { + case -1871217905: + if (var1 == (1121805110 | -1121805043) + (1121805110 & -1121805043)) { + var6 = -368175566; + } else { + var6 = -55097290; + } + break; + case -1768068224: + return (boolean)(((0)) != 0); + case -1660754776: + if (this.selectAll) { + var6 = 2108275977; + } else { + var6 = 1697805365; + } + break; + case -1551698036: + this.cursor = 0; + var6 = 1625662158; + break; + case -1459305985: + if (var1 == (-1977805720 ^ 1977805808) + ((-1977805720 & 1977805808) << 1)) { + var6 = -1399767416; + } else { + var6 = 633708121; + } + break; + case -1399767416: + if (this.selected) { + var6 = -1660754776; + } else { + var6 = 1697805365; + } + break; + case -1146920548: + if (var1 == (185885732 ^ -185885470) + ((185885732 & -185885470) << 1)) { + var6 = 2000551794; + } else { + var6 = 1568297548; + } + break; + case -1112072933: + if (this.cursor > 0) { + var6 = 780908732; + } else { + var6 = 1697805365; + } + break; + case -933439528: + if (var1 == (-302339137 ^ 302339202) + ((-302339137 & 302339202) << 1)) { + var6 = 254929296; + } else { + var6 = -620552866; + } + break; + case -820181655: + this.cursor = this.text.length(); + this.selectAll = (boolean)(((0)) != 0); + var6 = 1697805365; + break; + case -769792133: + if (this.selectAll) { + var6 = 1159426526; + } else { + var6 = 295052359; + } + break; + case -635347799: + default: + if (!this.selected) { + var6 = -1768068224; + } else { + var6 = 1096413023; + } + break; + case -620552866: + if (var4 != 0) { + var6 = -1871217905; + } else { + var6 = -55097290; + } + break; + case -368175566: + if (this.selected) { + var6 = 122726233; + } else { + var6 = 1697805365; + } + break; + case -271681765: + this.cursor -= 1; + if (var4 != 0) { + var6 = -1551698036; + } else { + var6 = 1625662158; + } + break; + case -207490175: + this.cursor = this.text.length(); + var6 = -48334851; + break; + case -134995495: + if (var1 == (-1480832219 | 1480832487) + (-1480832219 & 1480832487)) { + var6 = 691313273; + } else { + var6 = 1697805365; + } + break; + case -72409313: + if (var1 == (63307052 ^ -63306783) + ((63307052 & -63306783) << 1)) { + var6 = -820181655; + } else { + var6 = -134995495; + } + break; + case -55097290: + if (var4 != 0) { + var6 = -1459305985; + } else { + var6 = 633708121; + } + break; + case -48334851: + this.selectAll = (boolean)(((0)) != 0); + var6 = 1697805365; + break; + case 46025571: + this.text = ""; + this.cursor = 0; + this.selectAll = (boolean)(((0)) != 0); + var6 = 1697805365; + break; + case 122726233: + if (this.selectAll) { + var6 = 1055531398; + } else { + var6 = 1697805365; + } + break; + case 254929296: + this.selectAll = (boolean)(((1)) != 0); + this.cursor = this.text.length(); + var6 = 1697805365; + break; + case 295052359: + this.removeText(this.cursor + (-1061474981 | 1061474982) + (-1061474981 & 1061474982)); + var6 = 1697805365; + break; + case 425985140: + if (!this.text.isEmpty()) { + var6 = -1112072933; + } else { + var6 = 1697805365; + } + break; + case 633708121: + if (var1 == (1292788841 ^ -1292788580) + ((1292788841 & -1292788580) << 1)) { + var6 = 2066253611; + } else { + var6 = 1206902078; + } + break; + case 691313273: + this.cursor = 0; + this.selectAll = (boolean)(((0)) != 0); + var6 = 1697805365; + break; + case 780908732: + this.removeText(this.cursor); + this.cursor -= 1; + var6 = 425985140; + break; + case 968905138: + if (var1 == (-1294286551 | 1294286637) + (-1294286551 & 1294286637)) { + var6 = 1646179170; + } else { + var6 = 1699934972; + } + break; + case 1055531398: + mc.keyboardHandler.setClipboard(this.text); + var6 = 1697805365; + break; + case 1092804735: + this.text = ""; + this.cursor = 0; + this.selectAll = (boolean)(((0)) != 0); + var6 = 1289780653; + break; + case 1096413023: + this.lastInputTime = System.currentTimeMillis(); + this.cursor = Mth.clamp(this.cursor, 0, this.text.length()); + var4 = (this.isControlDown()) ? 1 : 0; + if (var4 != 0) { + var6 = 968905138; + } else { + var6 = 1699934972; + } + break; + case 1159426526: + this.text = ""; + this.cursor = 0; + this.selectAll = (boolean)(((0)) != 0); + var6 = 1697805365; + break; + case 1206902078: + if (var1 == (-781511710 ^ 781511969) + ((-781511710 & 781511969) << 1)) { + var6 = 1602852849; + } else { + var6 = -1146920548; + } + break; + case 1289780653: + this.addText(var5, this.cursor); + this.cursor = this.cursor + var5.length(); + this.selectAll = (boolean)(((0)) != 0); + var6 = 1697805365; + break; + case 1568297548: + if (var1 == (-851627017 ^ 851627280) + ((-851627017 & 851627280) << 1)) { + var6 = -271681765; + } else { + var6 = -72409313; + } + break; + case 1602852849: + if (!this.text.isEmpty()) { + var6 = 1760725374; + } else { + var6 = -1146920548; + } + break; + case 1625662158: + this.selectAll = (boolean)(((0)) != 0); + var6 = 1697805365; + break; + case 1646179170: + var5 = mc.keyboardHandler.getClipboard(); + if (this.selectAll) { + var6 = 1092804735; + } else { + var6 = 1289780653; + } + break; + case 1697805365: + this.cursor = Mth.clamp(this.cursor, 0, this.text.length()); + return (boolean)(((1)) != 0); + case 1699934972: + if (var4 != 0) { + var6 = -933439528; + } else { + var6 = -620552866; + } + break; + case 1760725374: + if (this.selectAll) { + var6 = 46025571; + } else { + var6 = 1775953541; + } + break; + case 1775953541: + this.removeText(this.cursor); + this.cursor -= 1; + if (var4 != 0) { + var6 = 425985140; + } else { + var6 = 1697805365; + } + break; + case 2000551794: + this.cursor += 1; + if (var4 != 0) { + var6 = -207490175; + } else { + var6 = -48334851; + } + break; + case 2066253611: + if (!this.text.isEmpty()) { + var6 = -769792133; + } else { + var6 = 1206902078; + } + break; + case 2108275977: + mc.keyboardHandler.setClipboard(this.text); + this.text = ""; + this.cursor = 0; + this.selectAll = (boolean)(((0)) != 0); + var6 = 1697805365; + } + } + } + + private boolean isControlDown() { + int var1 = 0; + int var3 = 0; + int var4 = 0; + int var2 = -1451778964; + + while (true) { + switch (var2) { + case -1923369958: + var3 = 1; + var2 = 1848151762; + break; + case -1625515339: + var4 = 0; + var2 = 1325723614; + break; + case -1451778964: + default: + if (!InputConstants.isKeyDown(mc.getWindow(), (73091177 | -73090836) + (73091177 & -73090836))) { + var2 = 8409317; + } else { + var2 = -1923369958; + } + break; + case -618593262: + if (Util.getPlatform() == OS.OSX) { + var2 = 1604259553; + } else { + var2 = -1625515339; + } + break; + case -14947127: + return (boolean)(((1)) != 0); + case 8409317: + if (InputConstants.isKeyDown(mc.getWindow(), (-40623012 ^ 40623357) + ((-40623012 & 40623357) << 1))) { + var2 = -1923369958; + } else { + var2 = 865118466; + } + break; + case 865118466: + var3 = 0; + var2 = 1848151762; + break; + case 1325723614: + return (boolean)((var4) != 0); + case 1604259553: + if (!InputConstants.isKeyDown(mc.getWindow(), (-1905768729 ^ 1905769072) + ((-1905768729 & 1905769072) << 1))) { + var2 = 2004943057; + } else { + var2 = 1739395517; + } + break; + case 1739395517: + var4 = 1; + var2 = 1325723614; + break; + case 1848151762: + var1 = var3; + if (var1 != 0) { + var2 = -14947127; + } else { + var2 = -618593262; + } + break; + case 2004943057: + if (InputConstants.isKeyDown(mc.getWindow(), (572818412 | -572818065) + (572818412 & -572818065))) { + var2 = 1739395517; + } else { + var2 = -1625515339; + } + } + } + } + + public boolean charTyped(char var1, int var2) { + int var3 = -257722138; + + while (true) { + switch (var3) { + case -1898495939: + return (boolean)(((1)) != 0); + case -774616808: + this.lastInputTime = System.currentTimeMillis(); + this.cursor = Mth.clamp(this.cursor, 0, this.text.length()); + if (this.selectAll) { + var3 = -709719562; + } else { + var3 = 749676443; + } + break; + case -709719562: + this.text = ""; + this.cursor = 0; + this.selectAll = (boolean)(((0)) != 0); + var3 = 749676443; + break; + case -257722138: + default: + if (!this.selected) { + var3 = 1756143757; + } else { + var3 = -774616808; + } + break; + case 749676443: + this.addText(Character.toString(var1), this.cursor); + this.cursor += 1; + this.cursor = Mth.clamp(this.cursor, 0, this.text.length()); + if (bz.getInstance().getSoundManager() != null) { + var3 = 1765678516; + } else { + var3 = -1898495939; + } + break; + case 1756143757: + return (boolean)(((0)) != 0); + case 1765678516: + bz.getInstance().getSoundManager().playTyping(); + var3 = -1898495939; + } + } + } + + private void addText(String var1, int var2) { + StringBuilder var3 = new StringBuilder(); + char[] var4 = var1.toCharArray(); + int var5 = var4.length; + + for (int var6 = 0; var6 < var5; var6++) { + char var7 = var4[var6]; + if (this.charFilter.isAllowed(var7)) { + var3.append(var7); + } + } + + String var8 = var3.toString(); + if (this.text.length() + var8.length() > this.maxLength) { + var5 = this.maxLength - this.text.length(); + if (var5 <= 0) { + return; + } + + var8 = var8.substring(0, Math.min(var5, var8.length())); + } + + StringBuilder var10 = new StringBuilder(); + int var11 = 0; + + for (int var12 = 0; var12 < this.text.length(); var12++) { + if (var12 == var2) { + var11 = 1; + var10.append(var8); + } + + var10.append(this.text.charAt(var12)); + } + + if (var11 == 0) { + var10.append(var8); + } + + this.text = var10.toString(); + } + + private void removeText(int var1) { + StringBuilder var2 = null; + int var3 = 0; + int var4 = -928179887; + + while (true) { + switch (var4) { + case -2074379151: + var2.append(this.text.charAt(var3)); + var4 = -56485727; + break; + case -1702011286: + if (var3 < this.text.length()) { + var4 = 1085319368; + } else { + var4 = 1393264141; + } + break; + case -928179887: + default: + var2 = new StringBuilder(); + var3 = 0; + var4 = -1702011286; + break; + case -56485727: + var3++; + var4 = -1702011286; + break; + case 1085319368: + if (var3 != var1 - ((1507029646 | -1507029645) + (1507029646 & -1507029645))) { + var4 = -2074379151; + } else { + var4 = -56485727; + } + break; + case 1393264141: + this.text = var2.toString(); + return; + } + } + } + + public boolean isEmpty() { + return this.text.isEmpty(); + } + + public String getText() { + return this.text; + } + + public boolean isSelected() { + return this.selected; + } + + public boolean isSelectAll() { + return this.selectAll; + } + + public int getCursor() { + return this.cursor; + } + + public float getPosX() { + return this.posX; + } + + public ge getFont() { + return this.font; + } + + public UVPair getPosition() { + return this.position; + } + + public String getEmptyText() { + return this.emptyText; + } + + public float getWidth() { + return this.width; + } + + public long getLastInputTime() { + return this.lastInputTime; + } + + public int getMaxLength() { + return this.maxLength; + } + + public arm getCharFilter() { + return this.charFilter; + } + + public float getScrollOffset() { + return this.scrollOffset; + } + + public ct getAnimation() { + return this.animation; + } + + public void setText(String var1) { + this.text = var1; + } + + public void setSelected(boolean var1) { + this.selected = var1; + } + + public void setSelectAll(boolean var1) { + this.selectAll = var1; + } + + public void setCursor(int var1) { + this.cursor = var1; + } + + public void setPosX(float var1) { + this.posX = var1; + } + + public void setFont(ge var1) { + this.font = var1; + } + + public void setPosition(UVPair var1) { + this.position = var1; + } + + public void setEmptyText(String var1) { + this.emptyText = var1; + } + + public void setWidth(float var1) { + this.width = var1; + } + + public void setLastInputTime(long var1) { + this.lastInputTime = var1; + } + + public void setMaxLength(int var1) { + this.maxLength = var1; + } + + public void setCharFilter(arm var1) { + this.charFilter = var1; + } + + public void setScrollOffset(float var1) { + this.scrollOffset = var1; + } + + public void setAnimation(ct var1) { + this.animation = var1; + } + + @Override + public boolean equals(Object var1) { + arn var2 = null; + String var3 = null; + String var4 = null; + ge var5 = null; + ge var6 = null; + UVPair var7 = null; + UVPair var8 = null; + String var9 = null; + String var10 = null; + arm var11 = null; + arm var12 = null; + ct var13 = null; + ct var14 = null; + int var15 = -1699604808; + + while (true) { + switch (var15) { + case -2094050911: + if (var4 != null) { + var15 = 726346017; + } else { + var15 = 1377390851; + } + break; + case -2052713012: + if (var6 != null) { + var15 = -971328856; + } else { + var15 = 1129815867; + } + break; + case -2031622472: + if (this.getCursor() != var2.getCursor()) { + var15 = -1549033206; + } else { + var15 = 1970458719; + } + break; + case -1988703909: + if (!var13.equals(var14)) { + var15 = -1533054216; + } else { + var15 = -1191510353; + } + break; + case -1927375023: + if (var10 != null) { + var15 = 105166616; + } else { + var15 = 839908343; + } + break; + case -1699604808: + default: + if (var1 == this) { + var15 = -1642086641; + } else { + var15 = 2000337920; + } + break; + case -1642086641: + return (boolean)(((1)) != 0); + case -1577093556: + if (!var9.equals(var10)) { + var15 = 1754140769; + } else { + var15 = 839908343; + } + break; + case -1549033206: + return (boolean)(((0)) != 0); + case -1533054216: + return (boolean)(((0)) != 0); + case -1409219236: + return (boolean)(((0)) != 0); + case -1404114717: + if (!var3.equals(var4)) { + var15 = 153466868; + } else { + var15 = 1377390851; + } + break; + case -1353894495: + if (Float.compare(this.getWidth(), var2.getWidth()) != 0) { + var15 = 39811255; + } else { + var15 = 1174747721; + } + break; + case -1309795633: + if (var8 != null) { + var15 = -64768139; + } else { + var15 = 1580912870; + } + break; + case -1299309286: + var15 = -1533054216; + break; + case -1191510353: + return (boolean)(((1)) != 0); + case -1015129797: + var2 = (arn)var1; + if (!var2.canEqual(this)) { + var15 = 846276161; + } else { + var15 = 1317707303; + } + break; + case -971328856: + var15 = 643150722; + break; + case -770699560: + return (boolean)(((0)) != 0); + case -553997995: + if (this.isSelectAll() != var2.isSelectAll()) { + var15 = -770699560; + } else { + var15 = -2031622472; + } + break; + case -277172551: + return (boolean)(((0)) != 0); + case -259423827: + if (Float.compare(this.getScrollOffset(), var2.getScrollOffset()) != 0) { + var15 = 1989705746; + } else { + var15 = 1932735742; + } + break; + case -161703152: + return (boolean)(((0)) != 0); + case -160715128: + if (this.getMaxLength() != var2.getMaxLength()) { + var15 = -161703152; + } else { + var15 = -259423827; + } + break; + case -64768139: + var15 = 1177569397; + break; + case 39811255: + return (boolean)(((0)) != 0); + case 105166616: + var15 = 1754140769; + break; + case 153466868: + return (boolean)(((0)) != 0); + case 272592603: + if (var14 != null) { + var15 = -1299309286; + } else { + var15 = -1191510353; + } + break; + case 308953796: + var13 = this.getAnimation(); + var14 = var2.getAnimation(); + if (var13 == null) { + var15 = 272592603; + } else { + var15 = -1988703909; + } + break; + case 337700707: + return (boolean)(((0)) != 0); + case 533690879: + if (!var7.equals(var8)) { + var15 = 1177569397; + } else { + var15 = 1580912870; + } + break; + case 643150722: + return (boolean)(((0)) != 0); + case 726346017: + var15 = 153466868; + break; + case 757994139: + if (!var11.equals(var12)) { + var15 = 767936192; + } else { + var15 = 308953796; + } + break; + case 767936192: + return (boolean)(((0)) != 0); + case 839908343: + var11 = this.getCharFilter(); + var12 = var2.getCharFilter(); + if (var11 == null) { + var15 = 2043594885; + } else { + var15 = 757994139; + } + break; + case 846276161: + return (boolean)(((0)) != 0); + case 1129815867: + var7 = this.getPosition(); + var8 = var2.getPosition(); + if (var7 == null) { + var15 = -1309795633; + } else { + var15 = 533690879; + } + break; + case 1174747721: + if (this.getLastInputTime() != var2.getLastInputTime()) { + var15 = 337700707; + } else { + var15 = -160715128; + } + break; + case 1177569397: + return (boolean)(((0)) != 0); + case 1211686185: + return (boolean)(((0)) != 0); + case 1247000309: + var15 = 767936192; + break; + case 1317707303: + if (this.isSelected() != var2.isSelected()) { + var15 = 1211686185; + } else { + var15 = -553997995; + } + break; + case 1377390851: + var5 = this.getFont(); + var6 = var2.getFont(); + if (var5 == null) { + var15 = -2052713012; + } else { + var15 = 1590640749; + } + break; + case 1580912870: + var9 = this.getEmptyText(); + var10 = var2.getEmptyText(); + if (var9 == null) { + var15 = -1927375023; + } else { + var15 = -1577093556; + } + break; + case 1590640749: + if (!var5.equals(var6)) { + var15 = 643150722; + } else { + var15 = 1129815867; + } + break; + case 1754140769: + return (boolean)(((0)) != 0); + case 1932735742: + var3 = this.getText(); + var4 = var2.getText(); + if (var3 == null) { + var15 = -2094050911; + } else { + var15 = -1404114717; + } + break; + case 1970458719: + if (Float.compare(this.getPosX(), var2.getPosX()) != 0) { + var15 = -1409219236; + } else { + var15 = -1353894495; + } + break; + case 1989705746: + return (boolean)(((0)) != 0); + case 2000337920: + if (!(var1 instanceof arn)) { + var15 = -277172551; + } else { + var15 = -1015129797; + } + break; + case 2043594885: + if (var12 != null) { + var15 = 1247000309; + } else { + var15 = 308953796; + } + } + } + } + + protected boolean canEqual(Object var1) { + return var1 instanceof arn; + } + + @Override + public int hashCode() { + int var1 = 59; + int var2 = 1; + var2 = var2 * ((-1845347566 | 1845347625) + (-1845347566 & 1845347625)) + + (this.isSelected() ? 79: (-153079299 | 153079396) + (-153079299 & 153079396)); + var2 = var2 * ((-1898318545 | 1898318604) + (-1898318545 & 1898318604)) + + (this.isSelectAll() ? 79: (443062660 ^ -443062563) + ((443062660 & -443062563) << 1)); + var2 = var2 * ((2011036420 ^ -2011036361) + ((2011036420 & -2011036361) << 1)) + this.getCursor(); + var2 = var2 * ((-1835421493 | 1835421552) + (-1835421493 & 1835421552)) + Float.floatToIntBits(this.getPosX()); + var2 = var2 * ((-321012649 ^ 321012708) + ((-321012649 & 321012708) << 1)) + Float.floatToIntBits(this.getWidth()); + long var3 = this.getLastInputTime(); + var2 = var2 * ((309035337 ^ -309035278) + ((309035337 & -309035278) << 1)) + (int)(var3 >>> (-26040109 | 26040141) + (-26040109 & 26040141) ^ var3); + var2 = var2 * ((1657434996 ^ -1657434937) + ((1657434996 & -1657434937) << 1)) + this.getMaxLength(); + var2 = var2 * ((878823231 ^ -878823172) + ((878823231 & -878823172) << 1)) + Float.floatToIntBits(this.getScrollOffset()); + String var5 = this.getText(); + var2 = var2 * ((585079037 ^ -585078978) + ((585079037 & -585078978) << 1)) + + (var5 == null ? 43: var5.hashCode()); + ge var6 = this.getFont(); + var2 = var2 * ((-1441652719 | 1441652778) + (-1441652719 & 1441652778)) + + (var6 == null ? 43: var6.hashCode()); + UVPair var7 = this.getPosition(); + var2 = var2 * ((-6932774 ^ 6932833) + ((-6932774 & 6932833) << 1)) + + (var7 == null ? 43: var7.hashCode()); + String var8 = this.getEmptyText(); + var2 = var2 * ((-938990773 ^ 938990832) + ((-938990773 & 938990832) << 1)) + + (var8 == null ? 43: var8.hashCode()); + arm var9 = this.getCharFilter(); + var2 = var2 * ((-868576483 | 868576542) + (-868576483 & 868576542)) + + (var9 == null ? 43: var9.hashCode()); + ct var10 = this.getAnimation(); + return var2 * ((424372244 ^ -424372185) + ((424372244 & -424372185) << 1)) + + (var10 == null ? 43: var10.hashCode()); + } + + @Override + public String toString() { + return "TextBox(text=" + + this.getText() + + ", selected=" + + this.isSelected() + + ", selectAll=" + + this.isSelectAll() + + ", cursor=" + + this.getCursor() + + ", posX=" + + this.getPosX() + + ", font=" + + this.getFont() + + ", position=" + + this.getPosition() + + ", emptyText=" + + this.getEmptyText() + + ", width=" + + this.getWidth() + + ", lastInputTime=" + + this.getLastInputTime() + + ", maxLength=" + + this.getMaxLength() + + ", charFilter=" + + this.getCharFilter() + + ", scrollOffset=" + + this.getScrollOffset() + + ", animation=" + + this.getAnimation() + + ")"; + } +} diff --git a/src/main/java/defpackage/aro.java b/src/main/java/defpackage/aro.java new file mode 100644 index 0000000..0e86796 --- /dev/null +++ b/src/main/java/defpackage/aro.java @@ -0,0 +1,74 @@ +package defpackage; + +import net.minecraft.resources.Identifier; + +public class aro { + final Identifier id; + + public aro(String var1) { + this.id = bz.id(this.validatePath(var1)); + } + + public aro(Identifier var1) { + this.id = Identifier.fromNamespaceAndPath(var1.getNamespace(), var1.getPath()); + } + + String validatePath(String var1) { + StringBuilder var2 = null; + char[] var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 2138194797; + + while (true) { + switch (var7) { + case -1917617787: + var2.append((char)var6); + var7 = 889006024; + break; + case -731015606: + var2 = new StringBuilder(); + var3 = var1.toLowerCase().toCharArray(); + var4 = var3.length; + var5 = 0; + var7 = 627788066; + break; + case -325182928: + return var2.toString(); + case 627788066: + if (var5 < var4) { + var7 = 2123906228; + } else { + var7 = -325182928; + } + break; + case 889006024: + var5++; + var7 = 627788066; + break; + case 1037396955: + return var1; + case 2123906228: + var6 = var3[var5]; + if (Identifier.validPathChar((char)var6)) { + var7 = -1917617787; + } else { + var7 = 889006024; + } + break; + case 2138194797: + default: + if (Identifier.isValidPath(var1)) { + var7 = 1037396955; + } else { + var7 = -731015606; + } + } + } + } + + public Identifier getId() { + return this.id; + } +} diff --git a/src/main/java/defpackage/arp.java b/src/main/java/defpackage/arp.java new file mode 100644 index 0000000..ea0e2fc --- /dev/null +++ b/src/main/java/defpackage/arp.java @@ -0,0 +1,297 @@ +package defpackage; + +import java.util.Arrays; + +public final class arp { + private static final char NEWLINE = '\n'; + private static final char SPACE = ' '; + private static final int INITIAL_CAPACITY = 4; + private ge font; + private String text = ""; + private float maxWidth = -1.0F; + private String[] lines = new String[4]; + private int[] starts = new int[4]; + private int[] ends = new int[4]; + private int count; + private float widest; + private int caretCursor = -1; + private int caretLine; + private float caretX; + + public void update(ge var1, String var2, float var3) { + String var4 = null; + String var6 = null; + int var5 = -1449719475; + + while (true) { + switch (var5) { + case -1500683987: + this.font = var1; + this.text = var4; + this.maxWidth = var3; + this.caretCursor = -1; + this.layout(); + return; + case -1449719475: + default: + if (var2 == null) { + var5 = -1249672265; + } else { + var5 = -460302728; + } + break; + case -1249672265: + var6 = ""; + var5 = 742473386; + break; + case -507409413: + if (var3 == this.maxWidth) { + var5 = 1844802594; + } else { + var5 = -1500683987; + } + break; + case -460302728: + var6 = var2; + var5 = 742473386; + break; + case 742473386: + var4 = var6; + if (var1 == this.font) { + var5 = -507409413; + } else { + var5 = -1500683987; + } + break; + case 1844802594: + if (var4.equals(this.text)) { + var5 = 2014061396; + } else { + var5 = -1500683987; + } + break; + case 2014061396: + return; + } + } + } + + public int lineCount() { + return this.count; + } + + public String line(int var1) { + return this.lines[var1]; + } + + public float widest() { + return this.widest; + } + + public int caretLine(int var1) { + this.resolveCaret(var1); + return this.caretLine; + } + + public float caretX(int var1) { + this.resolveCaret(var1); + return this.caretX; + } + + private void resolveCaret(int var1) { + int var2 = Math.max(0, Math.min(var1, this.text.length())); + if (var2 != this.caretCursor) { + this.caretCursor = var2; + int var3 = 0; + + for (int var4 = 0; var4 < this.count; var4++) { + if (this.starts[var4] <= var2) { + var3 = var4; + } + } + + this.caretLine = var3; + int var5 = Math.min(var2, this.ends[var3]); + this.caretX = var5 <= this.starts[var3] ? 0.0F : this.font.width(this.text.substring(this.starts[var3], var5)); + } + } + + private void layout() { + int var1 = 0; + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var6 = 0; + int var5 = 1509631962; + + while (true) { + switch (var5) { + case -2145066959: + var3 = this.text.indexOf(10, var1); + if (var3 < 0) { + var5 = -1616355188; + } else { + var5 = 973572621; + } + break; + case -1616355188: + var6 = var2; + var5 = 914077034; + break; + case -350256320: + return; + case 117331561: + var1 = var3 + 1; + var5 = -2145066959; + break; + case 914077034: + var4 = var6; + this.wrapParagraph(var1, var4); + if (var3 < 0) { + var5 = -350256320; + } else { + var5 = 117331561; + } + break; + case 973572621: + var6 = var3; + var5 = 914077034; + break; + case 1509631962: + default: + this.count = 0; + this.widest = 0.0F; + var1 = 0; + var2 = this.text.length(); + var5 = -2145066959; + } + } + } + + private void wrapParagraph(int var1, int var2) { + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = -2049734878; + + while (true) { + switch (var6) { + case -2049734878: + default: + if (var1 != var2) { + var6 = -1790508852; + } else { + var6 = 1947628097; + } + break; + case -1790508852: + if (this.maxWidth <= 0.0F) { + var6 = 1947628097; + } else { + var6 = -1441190109; + } + break; + case -1548849269: + if (var4 == var2) { + var6 = 456172766; + } else { + var6 = 1429514460; + } + break; + case -1538720692: + this.add(var3, var4); + var3 = var4; + var6 = 460286046; + break; + case -1441190109: + var3 = var1; + var6 = 460286046; + break; + case -434029586: + if (var5 > var3) { + var6 = 1848628190; + } else { + var6 = -1538720692; + } + break; + case -69102309: + var4 = var3 + 1; + var6 = -1538720692; + break; + case 396205082: + var4 = var3; + var5 = -1; + var6 = 1686333598; + break; + case 444991689: + if (this.text.charAt(++var4 - ((14391476 ^ -14391475) + ((14391476 & -14391475) << 1))) + == (-1831506534 | 1831506566) + (-1831506534 & 1831506566)) { + var6 = 1918091424; + } else { + var6 = 1686333598; + } + break; + case 456172766: + this.add(var3, var2); + return; + case 460286046: + if (var3 < var2) { + var6 = 396205082; + } else { + var6 = 1754899863; + } + break; + case 557101961: + if (this.font.width(this.text.substring(var3, var4 + (670962822 | -670962821) + (670962822 & -670962821))) <= this.maxWidth) { + var6 = 444991689; + } else { + var6 = -1548849269; + } + break; + case 1429514460: + if (var4 == var3) { + var6 = -69102309; + } else { + var6 = -434029586; + } + break; + case 1686333598: + if (var4 < var2) { + var6 = 557101961; + } else { + var6 = -1548849269; + } + break; + case 1754899863: + return; + case 1848628190: + var4 = var5; + var6 = -1538720692; + break; + case 1918091424: + var5 = var4; + var6 = 1686333598; + break; + case 1947628097: + this.add(var1, var2); + return; + } + } + } + + private void add(int var1, int var2) { + if (this.count == this.lines.length) { + int var3 = this.lines.length * (2); + this.lines = Arrays.copyOf(this.lines, var3); + this.starts = Arrays.copyOf(this.starts, var3); + this.ends = Arrays.copyOf(this.ends, var3); + } + + String var4 = this.text.substring(var1, var2).stripTrailing(); + this.lines[this.count] = var4; + this.starts[this.count] = var1; + this.ends[this.count] = var2; + this.count += 1; + this.widest = Math.max(this.widest, this.font.width(var4)); + } +} diff --git a/src/main/java/defpackage/arq.java b/src/main/java/defpackage/arq.java new file mode 100644 index 0000000..b69434e --- /dev/null +++ b/src/main/java/defpackage/arq.java @@ -0,0 +1,57 @@ +package defpackage; + +import org.jetbrains.annotations.NotNull; + +public record arq(float topLeftRadius, float topRightRadius, float bottomRightRadius, float bottomLeftRadius) { + public static final arq ZERO = new arq(0.0F, 0.0F, 0.0F, 0.0F); + + public static arq all(float var0) { + return new arq(var0, var0, var0, var0); + } + + public static arq topLeft(float var0) { + return new arq(var0, 0.0F, 0.0F, 0.0F); + } + + public static arq topRight(float var0) { + return new arq(0.0F, var0, 0.0F, 0.0F); + } + + public static arq bottomRight(float var0) { + return new arq(0.0F, 0.0F, var0, 0.0F); + } + + public static arq bottomLeft(float var0) { + return new arq(0.0F, 0.0F, 0.0F, var0); + } + + public static arq top(float var0, float var1) { + return new arq(var0, var1, 0.0F, 0.0F); + } + + public static arq bottom(float var0, float var1) { + return new arq(0.0F, 0.0F, var1, var0); + } + + public static arq left(float var0, float var1) { + return new arq(var0, 0.0F, 0.0F, var1); + } + + public static arq right(float var0, float var1) { + return new arq(0.0F, var0, var1, 0.0F); + } + + @NotNull + @Override + public String toString() { + return "BorderRadius{topLeftRadius=" + + this.topLeftRadius + + ", topRightRadius=" + + this.topRightRadius + + ", bottomRightRadius=" + + this.bottomRightRadius + + ", bottomLeftRadius=" + + this.bottomLeftRadius + + "}"; + } +} diff --git a/src/main/java/defpackage/arr.java b/src/main/java/defpackage/arr.java new file mode 100644 index 0000000..c948d6c --- /dev/null +++ b/src/main/java/defpackage/arr.java @@ -0,0 +1,148 @@ +package defpackage; + + +public class arr { + float x; + float y; + float width; + float height; + + public boolean contains(double var1, double var3) { + return aqj.isHovered(var1, var3, this.x, this.y, this.width, this.height); + } + + public arr(float var1, float var2, float var3, float var4) { + this.x = var1; + this.y = var2; + this.width = var3; + this.height = var4; + } + + public float getX() { + return this.x; + } + + public float getY() { + return this.y; + } + + public float getWidth() { + return this.width; + } + + public float getHeight() { + return this.height; + } + + public void setX(float var1) { + this.x = var1; + } + + public void setY(float var1) { + this.y = var1; + } + + public void setWidth(float var1) { + this.width = var1; + } + + public void setHeight(float var1) { + this.height = var1; + } + + @Override + public boolean equals(Object var1) { + arr var2 = null; + int var3 = 2108617278; + + while (true) { + switch (var3) { + case -2007008278: + return (boolean)(((0)) != 0); + case -1763202624: + return (boolean)(((0)) != 0); + case -1507625205: + return (boolean)(((1)) != 0); + case -1351967005: + if (Float.compare(this.getWidth(), var2.getWidth()) != 0) { + var3 = 537319597; + } else { + var3 = -27156463; + } + break; + case -930799619: + if (Float.compare(this.getX(), var2.getX()) != 0) { + var3 = -878007645; + } else { + var3 = -498301385; + } + break; + case -878007645: + return (boolean)(((0)) != 0); + case -830849157: + return (boolean)(((0)) != 0); + case -541138629: + return (boolean)(((0)) != 0); + case -498301385: + if (Float.compare(this.getY(), var2.getY()) != 0) { + var3 = -2007008278; + } else { + var3 = -1351967005; + } + break; + case -492339927: + var2 = (arr)var1; + if (!var2.canEqual(this)) { + var3 = -830849157; + } else { + var3 = -930799619; + } + break; + case -27156463: + if (Float.compare(this.getHeight(), var2.getHeight()) != 0) { + var3 = -1763202624; + } else { + var3 = -1507625205; + } + break; + case -22434355: + if (!(var1 instanceof arr)) { + var3 = -541138629; + } else { + var3 = -492339927; + } + break; + case 537319597: + return (boolean)(((0)) != 0); + case 1561019407: + return (boolean)(((1)) != 0); + case 2108617278: + default: + if (var1 == this) { + var3 = 1561019407; + } else { + var3 = -22434355; + } + } + } + } + + protected boolean canEqual(Object var1) { + return var1 instanceof arr; + } + + @Override + public int hashCode() { + int var1 = 59; + int var2 = 1; + var2 = var2 * ((1003655430 ^ -1003655371) + ((1003655430 & -1003655371) << 1)) + Float.floatToIntBits(this.getX()); + var2 = var2 * ((444316541 ^ -444316482) + ((444316541 & -444316482) << 1)) + Float.floatToIntBits(this.getY()); + var2 = var2 * ((-310706104 | 310706163) + (-310706104 & 310706163)) + Float.floatToIntBits(this.getWidth()); + return var2 * ((-502472179 | 502472238) + (-502472179 & 502472238)) + Float.floatToIntBits(this.getHeight()); + } + + @Override + public String toString() { + return "ChangeRect(x=" + this.getX() + ", y=" + this.getY() + ", width=" + this.getWidth() + ", height=" + this.getHeight() + ")"; + } +} diff --git a/src/main/java/defpackage/ars.java b/src/main/java/defpackage/ars.java new file mode 100644 index 0000000..ef1f9f1 --- /dev/null +++ b/src/main/java/defpackage/ars.java @@ -0,0 +1,542 @@ +package defpackage; + +import com.mojang.blaze3d.systems.RenderSystem; +import org.joml.Matrix3x2f; + +public final class ars { + private static final int MAX_DEPTH = 32; + private static final int STRIDE = 8; + private static final int LO_X = 0; + private static final int HI_X = 1; + private static final int LO_Y = 2; + private static final int HI_Y = 3; + private static final int FADE_LO_X = 4; + private static final int FADE_HI_X = 5; + private static final int FADE_LO_Y = 6; + private static final int FADE_HI_Y = 7; + private static final float DISABLED = -1.0F; + private static final float NO_FADE = 0.0F; + private static final float EDGE_FADE_MULTIPLIER = 2.5F; + private static final float MIN_EXTENT = 0.0F; + private static final float BOUNDARY_EPSILON = 0.5F; + private static final float[] stack = new float[256]; + private static int depth; + private static boolean scissorActive; + private static int scissorX; + private static int scissorY; + private static int scissorWidth; + private static int scissorHeight; + + private ars() { + } + + public static float edgeFade() { + return oq.current().spacing(od.MD) * 2.5F; + } + + public static float revealFade() { + return oq.current().spacing(od.LG); + } + + public static void push(Matrix3x2f var0, float var1, float var2, float var3, float var4) { + push(var0, var1, var2, var3, var4, 0.0F); + } + + public static void push(Matrix3x2f var0, float var1, float var2, float var3, float var4, float var5) { + push(var0, var1, var2, var3, var4, var5, var5); + } + + public static void push(Matrix3x2f var0, float var1, float var2, float var3, float var4, float var5, float var6) { + push(var0, var1, var2, var3, var4, var6, var6, var5, var5); + } + + public static void push(Matrix3x2f var0, float var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8) { + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = 0; + int var16 = 0; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + int var23 = 0; + int var24 = 0; + float var25 = 0.0F; + float var26 = 0.0F; + float var27 = 0.0F; + float var28 = 0.0F; + int var29 = 0; + float var30 = 0.0F; + float var31 = 0.0F; + float var32 = 0.0F; + float var33 = 0.0F; + int var35 = 0; + int var36 = 0; + float var37 = 0.0F; + float var38 = 0.0F; + float var39 = 0.0F; + float var40 = 0.0F; + int var34 = -717224926; + + while (true) { + switch (var34) { + case -2099727441: + if (depth >= (-1281190141 ^ 1281190173) + ((-1281190141 & 1281190173) << 1)) { + var34 = -761986723; + } else { + var34 = 1038113485; + } + break; + case -1941242904: + var36 = 0; + var34 = -1363126072; + break; + case -1838568040: + var26 = stack[var29 + 5]; + var18 = Math.min(var18, var31); + var34 = -1244507007; + break; + case -1653486536: + var28 = stack[var29 + 7]; + var20 = Math.min(var20, var33); + var34 = -502536167; + break; + case -1590108480: + var39 = var6; + var34 = 731977918; + break; + case -1363126072: + var24 = var36; + if (var23 != 0) { + var34 = -438992065; + } else { + var34 = 1978084182; + } + break; + case -1356442009: + if (var20 >= var33 - 0.5F) { + var34 = -1653486536; + } else { + var34 = -502536167; + } + break; + case -1321280017: + if (var20 < var19) { + var34 = 144020458; + } else { + var34 = -2099727441; + } + break; + case -1244507007: + if (var19 <= var32 + 0.5F) { + var34 = 762931275; + } else { + var34 = -1356442009; + } + break; + case -1184259138: + var26 = var38 * var21; + if (var24 != 0) { + var34 = 1614800702; + } else { + var34 = -1590108480; + } + break; + case -761986723: + apply(var17, var18, var19, var20, var25, var26, var27, var28); + return; + case -717224926: + default: + var9 = var1 + var3; + var10 = var2 + var4; + var11 = var0.m00 * var1 + var0.m10 * var2 + var0.m20; + var12 = var0.m01 * var1 + var0.m11 * var2 + var0.m21; + var13 = var0.m00 * var9 + var0.m10 * var10 + var0.m20; + var14 = var0.m01 * var9 + var0.m11 * var10 + var0.m21; + var15 = aqg.mc.getWindow().getGuiScale(); + var16 = aqg.mc.getWindow().getHeight(); + var17 = Math.min(var11, var13) * var15; + var18 = Math.max(var11, var13) * var15; + var19 = var16 - Math.max(var12, var14) * var15; + var20 = var16 - Math.min(var12, var14) * var15; + var21 = Math.abs(var15 * var0.m00); + var22 = Math.abs(var15 * var0.m11); + if (var11 > var13) { + var34 = 1027814913; + } else { + var34 = -437816528; + } + break; + case -502536167: + if (var18 < var17) { + var34 = 1097560691; + } else { + var34 = -1321280017; + } + break; + case -443941611: + var23 = var35; + if (var12 > var14) { + var34 = 1814277517; + } else { + var34 = -1941242904; + } + break; + case -438992065: + var37 = var8; + var34 = 559724686; + break; + case -437816528: + var35 = 0; + var34 = -443941611; + break; + case -132452499: + if (var18 >= var31 - 0.5F) { + var34 = -1838568040; + } else { + var34 = -1244507007; + } + break; + case -90666685: + var25 = stack[var29 + 4]; + var17 = Math.max(var17, var30); + var34 = -132452499; + break; + case 144020458: + var20 = var19; + var34 = -2099727441; + break; + case 392903452: + var38 = var7; + var34 = -1184259138; + break; + case 559724686: + var25 = var37 * var21; + if (var23 != 0) { + var34 = 392903452; + } else { + var34 = 2073724412; + } + break; + case 724070578: + var40 = var5; + var34 = 1298469897; + break; + case 731977918: + var27 = var39 * var22; + if (var24 != 0) { + var34 = 1920010932; + } else { + var34 = 724070578; + } + break; + case 762931275: + var27 = stack[var29 + 6]; + var19 = Math.max(var19, var32); + var34 = -1356442009; + break; + case 1027814913: + var35 = 1; + var34 = -443941611; + break; + case 1038113485: + var29 = depth * (8); + stack[var29 + 0] = var17; + stack[var29 + 1] = var18; + stack[var29 + 2] = var19; + stack[var29 + 3] = var20; + stack[var29 + 4] = var25; + stack[var29 + 5] = var26; + stack[var29 + 6] = var27; + stack[var29 + 7] = var28; + depth += 1; + apply(var17, var18, var19, var20, var25, var26, var27, var28); + return; + case 1097560691: + var18 = var17; + var34 = -1321280017; + break; + case 1298469897: + var28 = var40 * var22; + if (depth > 0) { + var34 = 1313363467; + } else { + var34 = -502536167; + } + break; + case 1313363467: + var29 = (depth - ((1853338295 | -1853338294) + (1853338295 & -1853338294))) * ((921020258 | -921020250) + (921020258 & -921020250)); + var30 = stack[var29 + 0]; + var31 = stack[var29 + 1]; + var32 = stack[var29 + 2]; + var33 = stack[var29 + 3]; + if (var17 <= var30 + 0.5F) { + var34 = -90666685; + } else { + var34 = -132452499; + } + break; + case 1614800702: + var39 = var5; + var34 = 731977918; + break; + case 1814277517: + var36 = 1; + var34 = -1363126072; + break; + case 1920010932: + var40 = var6; + var34 = 1298469897; + break; + case 1978084182: + var37 = var7; + var34 = 559724686; + break; + case 2073724412: + var38 = var8; + var34 = -1184259138; + } + } + } + + public static void pop() { + int var0 = 0; + int var1 = -1836788513; + + while (true) { + switch (var1) { + case -1836788513: + default: + if (depth == 0) { + var1 = 2116781418; + } else { + var1 = 749738828; + } + break; + case -1233170943: + disable(); + return; + case -548821652: + var0 = (depth - ((148420436 ^ -148420435) + ((148420436 & -148420435) << 1))) * ((-333381027 | 333381035) + (-333381027 & 333381035)); + apply( + stack[var0 + 0], + stack[var0 + 1], + stack[var0 + 2], + stack[var0 + 3], + stack[var0 + 4], + stack[var0 + 5], + stack[var0 + 6], + stack[var0 + 7] + ); + return; + case 749738828: + depth -= 1; + if (depth == 0) { + var1 = -1233170943; + } else { + var1 = -548821652; + } + break; + case 2116781418: + return; + } + } + } + + public static void overrideFramebuffer(float var0, float var1, float var2, float var3, float var4, float var5) { + atb.setMask(var0, var1, var2, var2, var3, var4, var5, var5); + gt.flushBatch(); + gt.setMask(var0, var1, var2, var2, var3, var4, var5, var5); + applyScissor(Math.min(var3, var4), Math.max(var3, var4), Math.min(var0, var1), Math.max(var0, var1)); + } + + public static void reset() { + depth = 0; + disable(); + } + + public static boolean isEmpty() { + int var1 = 0; + int var0 = 104539529; + + while (true) { + switch (var0) { + case -547352858: + return (boolean)((var1) != 0); + case 104539529: + default: + if (depth == 0) { + var0 = 1874741448; + } else { + var0 = 1743419772; + } + break; + case 1743419772: + var1 = 0; + var0 = -547352858; + break; + case 1874741448: + var1 = 1; + var0 = -547352858; + } + } + } + + private static void apply(float var0, float var1, float var2, float var3, float var4, float var5, float var6, float var7) { + atb.setMask(var3, var2, var7, var6, var0, var1, var4, var5); + gt.flushBatch(); + gt.setMask(var3, var2, var7, var6, var0, var1, var4, var5); + applyScissor(var0, var1, var2, var3); + } + + private static void disable() { + int var0 = -631821359; + + while (true) { + switch (var0) { + case -631821359: + default: + atb.setMask(-1.0F, -1.0F, 0.0F, 0.0F, -1.0F, -1.0F, 0.0F, 0.0F); + gt.flushBatch(); + gt.setMask(-1.0F, -1.0F, 0.0F, 0.0F, -1.0F, -1.0F, 0.0F, 0.0F); + if (scissorActive) { + var0 = 2077258586; + } else { + var0 = 1240745319; + } + break; + case 1240745319: + return; + case 2077258586: + scissorActive = (boolean)(((0)) != 0); + RenderSystem.disableScissorForRenderTypeDraws(); + var0 = 1240745319; + } + } + } + + private static void applyScissor(float var0, float var1, float var2, float var3) { + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 933586299; + + while (true) { + switch (var10) { + case -1459763159: + var8 = 0; + var10 = 721107779; + break; + case -1233060991: + if (var7 == scissorY) { + var10 = 1992445661; + } else { + var10 = 854457595; + } + break; + case -1219895352: + return; + case -890857735: + if (var9 == scissorHeight) { + var10 = -1219895352; + } else { + var10 = 854457595; + } + break; + case 477870830: + if (scissorActive) { + var10 = 981696766; + } else { + var10 = 854457595; + } + break; + case 721107779: + if (var9 < 0) { + var10 = 1176612767; + } else { + var10 = 477870830; + } + break; + case 854457595: + scissorActive = (boolean)(((1)) != 0); + scissorX = var6; + scissorY = var7; + scissorWidth = var8; + scissorHeight = var9; + RenderSystem.enableScissorForRenderTypeDraws(var6, var7, var8, var9); + return; + case 933586299: + default: + var4 = aqg.mc.getWindow().getWidth(); + var5 = aqg.mc.getWindow().getHeight(); + var6 = clamp(Math.round(var0), var4); + var7 = clamp(Math.round(var2), var5); + var8 = clamp(Math.round(var1), var4) - var6; + var9 = clamp(Math.round(var3), var5) - var7; + if (var8 < 0) { + var10 = -1459763159; + } else { + var10 = 721107779; + } + break; + case 981696766: + if (var6 == scissorX) { + var10 = -1233060991; + } else { + var10 = 854457595; + } + break; + case 1176612767: + var9 = 0; + var10 = 477870830; + break; + case 1992445661: + if (var8 == scissorWidth) { + var10 = -890857735; + } else { + var10 = 854457595; + } + } + } + } + + private static int clamp(int var0, int var1) { + int var3 = 0; + int var2 = 1496469171; + + while (true) { + switch (var2) { + case -1498258097: + var3 = 0; + var2 = -958493088; + break; + case -958493088: + return var3; + case 1019464341: + var3 = Math.min(var0, var1); + var2 = -958493088; + break; + case 1496469171: + default: + if (var0 < 0) { + var2 = -1498258097; + } else { + var2 = 1019464341; + } + } + } + } + + public static float hairlineFade() { + return Math.max(0.0F, pk.borderThickness()); + } +} diff --git a/src/main/java/defpackage/art.java b/src/main/java/defpackage/art.java new file mode 100644 index 0000000..bbcb845 --- /dev/null +++ b/src/main/java/defpackage/art.java @@ -0,0 +1,105 @@ +package defpackage; + + +public abstract class art implements aqg { + protected float x; + protected float y; + protected float width; + protected float height; + + protected art(float var1, float var2, float var3, float var4) { + this.x = var1; + this.y = var2; + this.width = var3; + this.height = var4; + } + + protected art() { + this(0.0F, 0.0F, 0.0F, 0.0F); + } + + public void render(asq var1) { + this.update(var1); + this.renderComponent(var1); + } + + protected abstract void renderComponent(asq var1); + + public void onInit() { + } + + public void update(asq var1) { + } + + public void onMouseClicked(double var1, double var3, apf var5) { + } + + public void onMouseReleased(double var1, double var3, apf var5) { + } + + public void onKeyPressed(int var1, int var2, int var3) { + } + + public boolean charTyped(char var1, int var2) { + return (boolean)(((0)) != 0); + } + + public void onScroll(double var1, double var3, double var5, double var7) { + } + + public void pos(float var1, float var2) { + this.x = var1; + this.y = var2; + } + + public void set(float var1, float var2, float var3, float var4) { + this.x = var1; + this.y = var2; + this.width = var3; + this.height = var4; + } + + public boolean isHovered(float var1, float var2) { + return arz.isHovered(this.x, this.y, this.width, this.height, var1, var2); + } + + public boolean isHovered(double var1, double var3) { + return arz.isHovered(this.x, this.y, this.width, this.height, var1, var3); + } + + public boolean isHovered(asq var1) { + return this.isHovered(var1.getMouseX(), var1.getMouseY()); + } + + public float getX() { + return this.x; + } + + public float getY() { + return this.y; + } + + public float getWidth() { + return this.width; + } + + public float getHeight() { + return this.height; + } + + public void setX(float var1) { + this.x = var1; + } + + public void setY(float var1) { + this.y = var1; + } + + public void setWidth(float var1) { + this.width = var1; + } + + public void setHeight(float var1) { + this.height = var1; + } +} diff --git a/src/main/java/defpackage/aru.java b/src/main/java/defpackage/aru.java new file mode 100644 index 0000000..e9b8c3a --- /dev/null +++ b/src/main/java/defpackage/aru.java @@ -0,0 +1,693 @@ +package defpackage; + +import com.mojang.blaze3d.systems.RenderSystem; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Deque; +import java.util.Iterator; +import java.util.List; +import java.util.Objects; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.state.gui.GuiRenderState; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; +import org.joml.Matrix3x2f; +import org.joml.Matrix4f; + +public class aru extends GuiGraphicsExtractor implements aqg { + private static final float MARQUEE_CLIP_BLEED = 2.0F; + private static final float MARQUEE_LEAD_BLEED = 2.0F; + private static final float MARQUEE_EDGE_FADE = 6.0F; + private static final float MARQUEE_FADE_RATIO = 0.25F; + private static final float NO_FADE = 0.0F; + private static final float CORNER_CLIP_BLEED = 10.0F; + private static final float CORNER_CLIP_FADE = 0.0F; + private final Deque evolutionScissorStack = new ArrayDeque<>(); + private final List textRuns = new ArrayList<>(); + + public aru(GuiRenderState var1) { + super(mc, var1, 0, (-2114373191 ^ 2114373191) + ((-2114373191 & 2114373191) << 1)); + } + + public aru(GuiGraphicsExtractor var1) { + super(mc, ((b.c)var1).getState(), 0, (-1446644077 ^ 1446644077) + ((-1446644077 & 1446644077) << 1)); + } + + public static aru of(GuiGraphicsExtractor var0) { + return new aru(var0); + } + + public void enableScissor(int var1, int var2, int var3, int var4) { + Matrix3x2f var5 = null; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 0; + int var11 = 0; + int var12 = 0; + int var13 = 0; + int[] var14 = null; + int[] var15 = null; + int var16 = -1203078482; + + while (true) { + switch (var16) { + case -2058938919: + if (var13 < var11) { + var16 = 1639428489; + } else { + var16 = -512828046; + } + break; + case -1804532445: + gt.flushBatch(); + this.applyScissor(var15); + return; + case -1719195128: + var12 = var10; + var16 = -2058938919; + break; + case -1321998207: + if (var14[0] == var10) { + var16 = 339201026; + } else { + var16 = -1804532445; + } + break; + case -1203078482: + default: + var5 = this.pose(); + var6 = var5.m00 * var1 + var5.m10 * var2 + var5.m20; + var7 = var5.m01 * var1 + var5.m11 * var2 + var5.m21; + var8 = var5.m00 * var3 + var5.m10 * var4 + var5.m20; + var9 = var5.m01 * var3 + var5.m11 * var4 + var5.m21; + var10 = (int)Math.floor(Math.min(var6, var8)); + var11 = (int)Math.floor(Math.min(var7, var9)); + var12 = (int)Math.ceil(Math.max(var6, var8)); + var13 = (int)Math.ceil(Math.max(var7, var9)); + var14 = this.evolutionScissorStack.peek(); + if (var14 != null) { + var16 = -1015939407; + } else { + var16 = -612394186; + } + break; + case -1015939407: + var10 = Math.max(var10, var14[0]); + var11 = Math.max(var11, var14[1]); + var12 = Math.min(var12, var14[2]); + var13 = Math.min(var13, var14[3]); + var16 = -612394186; + break; + case -612394186: + if (var12 < var10) { + var16 = -1719195128; + } else { + var16 = -2058938919; + } + break; + case -512828046: + int[] var10000 = new int[4]; + var10000[0] = var10; + var10000[1] = var11; + var10000[2] = var12; + var10000[3] = var13; + var15 = var10000; + this.evolutionScissorStack.push(var15); + if (var14 != null) { + var16 = -1321998207; + } else { + var16 = -1804532445; + } + break; + case 157868091: + if (var14[2] == var12) { + var16 = 564825792; + } else { + var16 = -1804532445; + } + break; + case 339201026: + if (var14[1] == var11) { + var16 = 157868091; + } else { + var16 = -1804532445; + } + break; + case 537074377: + return; + case 564825792: + if (var14[3] == var13) { + var16 = 537074377; + } else { + var16 = -1804532445; + } + break; + case 1639428489: + var13 = var11; + var16 = -512828046; + } + } + } + + public void disableScissor() { + int[] var1 = null; + int[] var2 = null; + int var3 = -1706389852; + + while (true) { + switch (var3) { + case -1716324090: + gt.flushBatch(); + if (var2 != null) { + var3 = 1851593676; + } else { + var3 = 1827191951; + } + break; + case -1706389852: + default: + var1 = this.evolutionScissorStack.poll(); + var2 = this.evolutionScissorStack.peek(); + if (var1 != null) { + var3 = 9914707; + } else { + var3 = -1716324090; + } + break; + case -1021358469: + if (var1[2] == var2[2]) { + var3 = 1493946046; + } else { + var3 = -1716324090; + } + break; + case -256382572: + return; + case -97374367: + return; + case 9914707: + if (var2 != null) { + var3 = 310204695; + } else { + var3 = -1716324090; + } + break; + case 310204695: + if (var1[0] == var2[0]) { + var3 = 1333129773; + } else { + var3 = -1716324090; + } + break; + case 1333129773: + if (var1[1] == var2[1]) { + var3 = -1021358469; + } else { + var3 = -1716324090; + } + break; + case 1493946046: + if (var1[3] == var2[3]) { + var3 = -97374367; + } else { + var3 = -1716324090; + } + break; + case 1827191951: + RenderSystem.disableScissorForRenderTypeDraws(); + var3 = -256382572; + break; + case 1851593676: + this.applyScissor(var2); + var3 = -256382572; + } + } + } + + private void applyScissor(int[] var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = -1203427144; + + while (true) { + switch (var9) { + case -2062826200: + var6 += var5; + var5 = 0; + var9 = 691650932; + break; + case -1535374583: + var6 = Math.min(var6, var4 - var5); + var7 = Math.min(var7, var3 - var8); + if (var6 < 0) { + var9 = -213591673; + } else { + var9 = 578961872; + } + break; + case -1203427144: + default: + var2 = mc.getWindow().getGuiScale(); + var3 = mc.getWindow().getHeight(); + var4 = mc.getWindow().getWidth(); + var5 = var1[0] * var2; + var6 = (var1[2] - var1[0]) * var2; + var7 = ( + var1[3] + - var1[1] + ) + * var2; + var8 = var3 - var1[3] * var2; + if (var5 < 0) { + var9 = -2062826200; + } else { + var9 = 691650932; + } + break; + case -213591673: + var6 = 0; + var9 = 578961872; + break; + case 578961872: + if (var7 < 0) { + var9 = 726923241; + } else { + var9 = 1414007558; + } + break; + case 691650932: + if (var8 < 0) { + var9 = 1520373347; + } else { + var9 = -1535374583; + } + break; + case 726923241: + var7 = 0; + var9 = 1414007558; + break; + case 1414007558: + RenderSystem.enableScissorForRenderTypeDraws(var5, var8, var6, var7); + return; + case 1520373347: + var7 += var8; + var8 = 0; + var9 = -1535374583; + } + } + } + + public void pushClip(float var1, float var2, float var3, float var4) { + ars.push(this.pose(), var1, var2, var3, var4); + } + + public void pushClip(float var1, float var2, float var3, float var4, float var5) { + ars.push(this.pose(), var1, var2, var3, var4, var5); + } + + public void pushClipBounds(float var1, float var2, float var3, float var4) { + ars.push(this.pose(), Math.min(var1, var3), Math.min(var2, var4), Math.abs(var3 - var1), Math.abs(var4 - var2)); + } + + public void pushClipBounds(float var1, float var2, float var3, float var4, float var5) { + ars.push(this.pose(), Math.min(var1, var3), Math.min(var2, var4), Math.abs(var3 - var1), Math.abs(var4 - var2), var5); + } + + public void clipScroll(float var1, float var2, float var3, float var4, float var5) { + this.pushClipEdges(var1, var2, var3, var4, var5, var5, 0.0F, 0.0F); + } + + public void clipScroll(float var1, float var2, float var3, float var4, float var5, float var6) { + this.pushClipEdges(var1, var2, var3, var4, var5, var6, 0.0F, 0.0F); + } + + public void clipTrailing(float var1, float var2, float var3, float var4, float var5) { + this.pushClipEdges(var1, var2, var3, var4, 0.0F, 0.0F, 0.0F, var5); + } + + public void clipTrailingDown(float var1, float var2, float var3, float var4, float var5) { + this.pushClipEdges(var1, var2, var3, var4, 0.0F, var5, 0.0F, 0.0F); + } + + public void clipHard(float var1, float var2, float var3, float var4) { + this.pushClipBounds(var1, var2, var3, var4); + } + + public void clipSoft(float var1, float var2, float var3, float var4, float var5) { + this.pushClipBounds(var1, var2, var3, var4, var5); + } + + public void pushClipEdges(float var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8) { + ars.push(this.pose(), Math.min(var1, var3), Math.min(var2, var4), Math.abs(var3 - var1), Math.abs(var4 - var2), var5, var6, var7, var8); + } + + public void popClip() { + ars.pop(); + } + + public void drawText(ge var1, String var2, float var3, float var4, asu var5) { + gt.renderText(var1.getFont(), var2, var1.getSize(), var5.getRGB(), this.currentMatrix(), var3, var4, 0.0F); + } + + public void drawText(ge var1, String var2, float var3, float var4, int var5) { + gt.renderText(var1.getFont(), var2, var1.getSize(), var5, this.currentMatrix(), var3, var4, 0.0F); + } + + public void drawText(ge var1, String var2, float var3, float var4, ary var5) { + gt.renderText(var1.getFont(), var2, var1.getSize(), var5, this.currentMatrix(), var3, var4, 0.0F); + } + + public void drawText(ge var1, String var2, float var3, float var4, gv var5) { + gt.renderText(var1.getFont(), var2, var1.getSize(), var5, this.currentMatrix(), var3, var4, 0.0F); + } + + public void drawScrollingText(ge var1, String var2, float var3, float var4, float var5, asu var6) { + this.drawScrollingText(var1, var2, var3, var4, var5, var6.getRGB()); + } + + public void drawScrollingText(ge var1, String var2, float var3, float var4, float var5, int var6) { + this.drawScrollingText(var1, var2, var3, var4, var5, var6, (boolean)((((-1137276266 ^ 1137276267) + ((-1137276266 & 1137276267) << 1))) != 0)); + } + + public void drawScrollingText(ge var1, String var2, float var3, float var4, float var5, asu var6, boolean var7) { + this.drawScrollingText(var1, var2, var3, var4, var5, var6.getRGB(), var7); + } + + public void drawScrollingText(ge var1, String var2, float var3, float var4, float var5, int var6, boolean var7) { + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var15 = 0.0F; + int var14 = -924297823; + + while (true) { + switch (var14) { + case -1600758009: + var15 = ash.offset(var9); + var14 = 99321410; + break; + case -924297823: + default: + var8 = var1.width(var2); + var9 = var8 - var5; + if (var9 <= 0.0F) { + var14 = 466899154; + } else { + var14 = -31300951; + } + break; + case -31300951: + if (var7) { + var14 = 1951066613; + } else { + var14 = 421936765; + } + break; + case 99321410: + var10 = var15; + var11 = Math.min(6.0F, var5 * 0.25F); + var12 = Math.min(var10, var11); + var13 = Math.min(var9 - var10, var11); + this.pushClipEdges(var3 - 2.0F, var4 - 2.0F, var3 + var5, var4 + var1.height() + 2.0F, 0.0F, 0.0F, var12 + 2.0F, var13); + this.drawText(var1, var2, var3 - var10, var4, var6); + this.popClip(); + return; + case 421936765: + if (var7) { + var14 = -1600758009; + } else { + var14 = 1146039526; + } + break; + case 466899154: + this.drawText(var1, var2, var3, var4, var6); + return; + case 1146039526: + var15 = 0.0F; + var14 = 99321410; + break; + case 1951066613: + ash.observe(var9); + var14 = 421936765; + } + } + } + + public void drawScrollingTextCentered(ge var1, String var2, float var3, float var4, float var5, int var6) { + float var7 = 0.0F; + int var8 = 1973257906; + + while (true) { + switch (var8) { + case -431303897: + this.drawText(var1, var2, var3 + (var5 - var7) / 2.0F, var4, var6); + return; + case -303839505: + this.drawScrollingText(var1, var2, var3, var4, var5, var6, (boolean)((((253219890 ^ -253219889) + ((253219890 & -253219889) << 1))) != 0)); + return; + case 1973257906: + } + + var7 = var1.width(var2); + if (var7 <= var5) { + var8 = -431303897; + } else { + var8 = -303839505; + } + } + } + + public void pushClipBoundsAxis(float var1, float var2, float var3, float var4, float var5, float var6) { + ars.push(this.pose(), Math.min(var1, var3), Math.min(var2, var4), Math.abs(var3 - var1), Math.abs(var4 - var2), var5, var6); + } + + public void drawText(ge var1, Component var2, float var3, float var4) { + this.drawText(var1, var2, var3, var4, asu.WHITE); + } + + public void drawText(ge var1, Component var2, float var3, float var4, asu var5) { + this.drawText(var1, var2, var3, var4, var5.getRGB()); + } + + public void drawText(ge var1, Component var2, float var3, float var4, int var5) { + gr var6 = null; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + Iterator var11 = null; + gw var12 = null; + int var13 = -449779094; + + while (true) { + switch (var13) { + case -2143048497: + gx.split(var2, var6, var5, this.textRuns); + var8 = gx.vanillaScale(var7); + var9 = var4 + gx.baselineOffset(var7); + var10 = var3; + var11 = this.textRuns.iterator(); + var13 = -1436530022; + break; + case -1585650016: + var12 = (gw)var11.next(); + if (var12.vanilla()) { + var13 = 1449056433; + } else { + var13 = -32030750; + } + break; + case -1436530022: + if (var11.hasNext()) { + var13 = -1585650016; + } else { + var13 = 1445149225; + } + break; + case -495368137: + gt.renderText(var6, var2, var7, var5, this.currentMatrix(), var3, var4, 0.0F); + return; + case -449779094: + default: + var6 = var1.getFont(); + var7 = var1.getSize(); + if (!gx.needsFallback(var2, var6)) { + var13 = -495368137; + } else { + var13 = -2143048497; + } + break; + case -32030750: + gt.renderRun(var6, var12.text(), var7, var12.color(), this.currentMatrix(), var10, var4, 0.0F); + var10 += var6.getWidth(var12.text(), var7); + var13 = 373534936; + break; + case 373534936: + var13 = -1436530022; + break; + case 1445149225: + return; + case 1449056433: + this.pose().pushMatrix(); + this.pose().translate(var10, var9 - 7.0F * var8); + this.pose().scale(var8, var8); + gz.draw(var12.text(), var12.style(), this.currentMatrix(), 0.0F, 0.0F, var12.color()); + this.pose().popMatrix(); + var10 += gx.vanillaWidth(var12) * var8; + var13 = 373534936; + } + } + } + + public void drawSquircle(float var1, float var2, float var3, float var4, float var5, arq var6, asu var7) { + atb.drawSquircle(this.pose(), var1, var2, var3, var4, var5, var6, var7); + } + + public void drawRoundedRect(float var1, float var2, float var3, float var4, arq var5, asu var6) { + atb.drawRoundedRect(this.pose(), var1, var2, var3, var4, var5, var6); + } + + public void drawRoundedRect(float var1, float var2, float var3, float var4, arq var5, int var6) { + atb.drawRoundedRect(this.pose(), var1, var2, var3, var4, var5, var6); + } + + public void drawSurface(aso var1, float var2, float var3, float var4, float var5, arq var6, int var7) { + atb.drawSurface(this.pose(), var1, var2, var3, var4, var5, var6, var7); + } + + public void drawSurface(aso var1, float var2, float var3, float var4, float var5, arq var6, asu var7) { + atb.drawSurface(this.pose(), var1, var2, var3, var4, var5, var6, var7.getRGB()); + } + + public void drawGlassOverlay(aso var1, float var2, float var3, float var4, float var5, arq var6, float var7) { + atb.drawGlassOverlay(this.pose(), var1, var2, var3, var4, var5, var6, var7); + } + + public void drawRoundedRect(float var1, float var2, float var3, float var4, arq var5, ary var6) { + atb.drawRoundedRect(this.pose(), var1, var2, var3, var4, var5, var6); + } + + public void drawRect(float var1, float var2, float var3, float var4, asu var5) { + atb.drawRect(this.pose(), var1, var2, var3, var4, var5); + } + + public void drawCoverageRect(float var1, float var2, float var3, float var4, int var5) { + atb.drawCoverageRect(this.pose(), var1, var2, var3, var4, 0.0F, var5); + } + + public void drawCoverageRect(float var1, float var2, float var3, float var4, float var5, int var6) { + atb.drawCoverageRect(this.pose(), var1, var2, var3, var4, var5, var6); + } + + public void drawRing(float var1, float var2, float var3, float var4, float var5, int var6) { + int var7 = -1954081410; + + while (true) { + switch (var7) { + case -1960651374: + if (!(var3 <= 0.0F)) { + var7 = 2027222721; + } else { + var7 = 132469; + } + break; + case -1954081410: + default: + if (var6 >>> 24!= 0) { + var7 = -1960651374; + } else { + var7 = 132469; + } + break; + case 132469: + return; + case 609812670: + atb.drawRing(this.pose(), var1, var2, var3, var4, var5, var6); + return; + case 2027222721: + if (var4 <= 0.0F) { + var7 = 132469; + } else { + var7 = 609812670; + } + } + } + } + + public void drawGlossSweep(float var1, float var2, float var3, float var4, arq var5, float var6, float var7, asu var8) { + atb.drawGlossSweep(this.pose(), var1, var2, var3, var4, var5, var6, var7, var8); + } + + public int drawTextWithBackground(Font var1, Component var2, int var3, int var4, int var5, arq var6, asu var7, asu var8) { + int var9 = var3 - (3); + int var10 = var4 - (2); + int var11 = var5 + 6; + Objects.requireNonNull(var1); + this.drawRoundedRect(var9, var10, var11, 13.0F, var6, var8); + this.text(var1, var2, var3, var4, var7.getRGB(), (boolean)((((-1134615768 | 1134615769) + (-1134615768 & 1134615769))) != 0)); + return var3 + var1.width(var2); + } + + public void drawSprite(arv var1, float var2, float var3, float var4, float var5, asu var6) { + atb.drawSprite(this.pose(), var1, var2, var3, var4, var5, var6); + } + + public void drawRoundedCorner(float var1, float var2, float var3, float var4, float var5, float var6, asu var7, arq var8) { + var3 = Math.round(var3); + var4 = Math.round(var4); + float var9 = var6 + 10.0F; + this.drawCornerSegment(var1 - 10.0F, var2 - 10.0F, var1 + var6, var2 + var6, var1, var2, var3, var4, var5, var8, var7); + this.drawCornerSegment(var1 + var3 - var6, var2 - 10.0F, var1 + var3 + 10.0F, var2 + var6, var1, var2, var3, var4, var5, var8, var7); + this.drawCornerSegment(var1 - 10.0F, var2 + var4 - var6, var1 + var6, var2 + var4 + 10.0F, var1, var2, var3, var4, var5, var8, var7); + this.drawCornerSegment(var1 + var3 - var6, var2 + var4 - var6, var1 + var3 + 10.0F, var2 + var4 + 10.0F, var1, var2, var3, var4, var5, var8, var7); + } + + private void drawCornerSegment( + float var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9, arq var10, asu var11 + ) { + this.pushClipBounds(var1, var2, var3, var4, 0.0F); + this.drawRoundedBorder(var5, var6, var7, var8, var9, var10, var11); + this.popClip(); + } + + public void drawRoundedBorder(float var1, float var2, float var3, float var4, float var5, arq var6, int var7) { + atb.drawRoundedBorder(this.pose(), var1, var2, var3, var4, var5, var6, var7); + } + + public void drawRoundedBorder(float var1, float var2, float var3, float var4, float var5, arq var6, asu var7) { + atb.drawRoundedBorder(this.pose(), var1, var2, var3, var4, var5, var6, var7); + } + + public void drawTexture(Identifier var1, float var2, float var3, float var4, float var5, asu var6) { + atb.drawTexture(this.pose(), var1, var2, var3, var4, var5, var6); + } + + public void drawRoundedTextureWithUV( + Identifier var1, float var2, float var3, float var4, float var5, arq var6, asu var7, float var8, float var9, float var10, float var11 + ) { + atb.drawRoundedTextureWithUV(this.pose(), var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11); + } + + public void pushMatrix() { + this.pose().pushMatrix(); + } + + public void popMatrix() { + this.pose().popMatrix(); + } + + private Matrix4f currentMatrix() { + return arb.toMatrix4f(this.pose()); + } +} diff --git a/src/main/java/defpackage/arv.java b/src/main/java/defpackage/arv.java new file mode 100644 index 0000000..2e9c8da --- /dev/null +++ b/src/main/java/defpackage/arv.java @@ -0,0 +1,21 @@ +package defpackage; + +import net.minecraft.resources.Identifier; + +public class arv { + private final Identifier texture; + + public arv(String var1) { + if (var1.contains(":")) { + this.texture = Identifier.parse(var1); + } else if (var1.contains("/")) { + this.texture = bz.id(var1); + } else { + this.texture = bz.id("icons/category/" + var1); + } + } + + public Identifier getTexture() { + return this.texture; + } +} diff --git a/src/main/java/defpackage/arw.java b/src/main/java/defpackage/arw.java new file mode 100644 index 0000000..836c3f3 --- /dev/null +++ b/src/main/java/defpackage/arw.java @@ -0,0 +1,41 @@ +package defpackage; + +public final class arw { + private static final float MIN_ALPHA = 0.01F; + private static final float GLYPH_SIZE = 12.0F; + private static final float PLATE_SIZE = 30.0F; + private static final float PLATE_ALPHA = 0.5F; + private static final arq PLATE_RADIUS = asj.pill(30.0F); + + private arw() { + } + + public static void draw(aru var0, mv var1, String var2, String var3, String var4, float var5, float var6, float var7, float var8, float var9) { + if (!(var9 <= 0.01F) && !(var7 <= 0.0F) && !(var8 <= 0.0F) && var3 != null) { + oq var10 = oq.current(); + ge var11 = gl.ICONS.getFont(12.0F); + ge var12 = asp.font(oe.HEADING); + ge var13 = asp.font(oe.MICRO); + float var14 = var10.spacing(od.MD); + int var15 = var2 != null && !var2.isEmpty() + ? 1: 0; + int var16 = var4 != null && !var4.isEmpty() + ? 1: 0; + float var17 = var12.height() + (var15 != 0 ? 30.0F + var14 : 0.0F) + (var16 != 0 ? var14 + var13.height() : 0.0F); + float var18 = var5 + var7 / 2.0F; + float var19 = var6 + (var8 - var17) / 2.0F; + if (var15 != 0) { + var0.drawSurface(aso.CARD, var18 - 15.0F, var19, 30.0F, 30.0F, PLATE_RADIUS, var1.getForegroundLight().mulAlpha(var9 * 0.5F)); + var0.drawText( + var11, var2, var18 - var11.width(var2) / 2.0F, var19 + (30.0F - var11.height()) / 2.0F, var10.color(nx.ON_SURFACE_MUTED).mulAlpha(var9) + ); + var19 += 30.0F + var14; + } + + var0.drawText(var12, var3, var18 - var12.width(var3) / 2.0F, var19, var10.color(nx.ON_SURFACE_MUTED).mulAlpha(var9)); + if (var16 != 0) { + var0.drawText(var13, var4, var18 - var13.width(var4) / 2.0F, var19 + var12.height() + var14, var10.color(nx.ON_SURFACE_FAINT).mulAlpha(var9)); + } + } + } +} diff --git a/src/main/java/defpackage/arx.java b/src/main/java/defpackage/arx.java new file mode 100644 index 0000000..056a6de --- /dev/null +++ b/src/main/java/defpackage/arx.java @@ -0,0 +1,159 @@ +package defpackage; + +import com.mojang.blaze3d.textures.GpuTextureView; + +public final class arx { + private static final int MAX_CAPTURES_PER_FRAME = 6; + private static int depth; + private static float progress; + private static float textDarkness; + private static GpuTextureView scene; + private static boolean sceneCurrent; + private static int captures; + + private arx() { + } + + public static void beginFrame() { + vm var0 = null; + mv var1 = null; + int var2 = 1887726738; + + while (true) { + switch (var2) { + case -2058456524: + cs.advance(); + ars.reset(); + var0 = vm.INSTANCE; + progress = var0.advanceLiquidGlassProgress(); + textDarkness = var0.advanceTextDarkness(); + var1 = bz.getInstance().getThemeManager().getCurrentTheme(); + mx.resolveCurrent(var1, progress, var0.getFrost(), var0.getRefraction(), var0.getGlassTint()); + oq.resolveCurrent(var1); + scene = null; + sceneCurrent = (boolean)(((0)) != 0); + captures = 0; + return; + case -163843120: + return; + case 1887726738: + } + + int var10000 = depth; + depth += 1; + if (var10000 > 0) { + var2 = -163843120; + } else { + var2 = -2058456524; + } + } + } + + public static mx style() { + return mx.current(); + } + + public static void endFrame() { + int var0 = 1441871529; + + while (true) { + switch (var0) { + case -1895256584: + return; + case -598564992: + return; + case 272374968: + if ((depth -= (13713222 ^ -13713221) + ((13713222 & -13713221) << 1)) > 0) { + var0 = -1895256584; + } else { + var0 = 1283607220; + } + break; + case 1283607220: + scene = null; + sceneCurrent = (boolean)(((0)) != 0); + return; + case 1441871529: + default: + if (depth == 0) { + var0 = -598564992; + } else { + var0 = 272374968; + } + } + } + } + + public static float progress() { + return progress; + } + + public static float classicFade() { + return 1.0F - progress; + } + + public static float tint() { + return mx.current().tint(); + } + + public static float textDarkness() { + return textDarkness; + } + + public static float frost() { + return mx.current().frost(); + } + + public static float refraction() { + return mx.current().refraction(); + } + + public static void invalidateScene() { + sceneCurrent = (boolean)(((0)) != 0); + } + + public static GpuTextureView scene() { + GpuTextureView var0 = null; + int var1 = -864917577; + + while (true) { + switch (var1) { + case -1304038118: + scene = var0; + captures += 1; + var1 = -35723412; + break; + case -864917577: + default: + if (sceneCurrent) { + var1 = 2098340115; + } else { + var1 = -155675751; + } + break; + case -155675751: + sceneCurrent = (boolean)(((1)) != 0); + if (captures >= (-246876579 ^ 246876585) + ((-246876579 & 246876585) << 1)) { + var1 = 1022013689; + } else { + var1 = 2051816092; + } + break; + case -35723412: + return scene; + case 1022013689: + return scene; + case 2051816092: + var0 = atb.sceneSnapshot(); + if (var0 != null) { + var1 = -1304038118; + } else { + var1 = -35723412; + } + break; + case 2098340115: + return scene; + } + } + } +} diff --git a/src/main/java/defpackage/ary.java b/src/main/java/defpackage/ary.java new file mode 100644 index 0000000..0144147 --- /dev/null +++ b/src/main/java/defpackage/ary.java @@ -0,0 +1,56 @@ +package defpackage; + +import java.util.List; + +public class ary { + protected final asu topLeftColor; + protected final asu bottomLeftColor; + protected final asu topRightColor; + protected final asu bottomRightColor; + + protected ary(asu var1, asu var2, asu var3, asu var4) { + this.topLeftColor = var1; + this.bottomLeftColor = var2; + this.topRightColor = var3; + this.bottomRightColor = var4; + } + + public static ary of(asu var0, asu var1, asu var2, asu var3) { + return new ary(var0, var1, var2, var3); + } + + public static ary of(List var0) { + return new ary( + (asu)var0.get((-1282061888 | 1282061888) + (-1282061888 & 1282061888)), + (asu)var0.get((510941782 | -510941781) + (510941782 & -510941781)), + (asu)var0.get((-824195071 ^ 824195073) + ((-824195071 & 824195073) << 1)), + (asu)var0.get((873382482 ^ -873382479) + ((873382482 & -873382479) << 1)) + ); + } + + public ary rotate() { + return this; + } + + public ary mulAlpha(float var1) { + return new ary( + this.topLeftColor.mulAlpha(var1), this.bottomLeftColor.mulAlpha(var1), this.topRightColor.mulAlpha(var1), this.bottomRightColor.mulAlpha(var1) + ); + } + + public asu getTopLeftColor() { + return this.topLeftColor; + } + + public asu getBottomLeftColor() { + return this.bottomLeftColor; + } + + public asu getTopRightColor() { + return this.topRightColor; + } + + public asu getBottomRightColor() { + return this.bottomRightColor; + } +} diff --git a/src/main/java/defpackage/arz.java b/src/main/java/defpackage/arz.java new file mode 100644 index 0000000..84e3672 --- /dev/null +++ b/src/main/java/defpackage/arz.java @@ -0,0 +1,150 @@ +package defpackage; + +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.client.model.geom.builders.UVPair; + +public final class arz implements aqg { + public static boolean hudItemsVisible() { + int var1 = 0; + int var0 = 227502337; + + while (true) { + switch (var0) { + case -525835731: + return (boolean)((var1) != 0); + case -14583581: + var1 = 1; + var0 = -525835731; + break; + case 227502337: + default: + if (mc.gui.screen() != null) { + var0 = 1346344676; + } else { + var0 = -14583581; + } + break; + case 279664823: + var1 = 0; + var0 = -525835731; + break; + case 1346344676: + if (mc.gui.screen() instanceof ChatScreen) { + var0 = -14583581; + } else { + var0 = 279664823; + } + } + } + } + + public static boolean isHovered(double var0, double var2, double var4, double var6, int var8, int var9) { + int var11 = 0; + int var10 = -902531146; + + while (true) { + switch (var10) { + case -1867446891: + var11 = 1; + var10 = -179971836; + break; + case -902531146: + default: + if (var8 >= var0) { + var10 = 1964182574; + } else { + var10 = 896073228; + } + break; + case -179971836: + return (boolean)((var11) != 0); + case 558259056: + if (var9 >= var2) { + var10 = 1973001306; + } else { + var10 = 896073228; + } + break; + case 896073228: + var11 = 0; + var10 = -179971836; + break; + case 1964182574: + if (var8 < var0 + var4) { + var10 = 558259056; + } else { + var10 = 896073228; + } + break; + case 1973001306: + if (var9 < var2 + var6) { + var10 = -1867446891; + } else { + var10 = 896073228; + } + } + } + } + + public static boolean isHovered(double var0, double var2, double var4, double var6, asq var8) { + return isHovered(var0, var2, var4, var6, var8.getMouseX(), var8.getMouseY()); + } + + public static boolean isHovered(double var0, double var2, double var4, double var6, double var8, double var10) { + int var13 = 0; + int var12 = -1637793338; + + while (true) { + switch (var12) { + case -1673137261: + var13 = 1; + var12 = -1571158023; + break; + case -1637793338: + default: + if (var8 >= var0) { + var12 = 57364047; + } else { + var12 = 1585854021; + } + break; + case -1571158023: + return (boolean)((var13) != 0); + case -382999672: + if (var10 < var2 + var6) { + var12 = -1673137261; + } else { + var12 = 1585854021; + } + break; + case 57364047: + if (var8 < var0 + var4) { + var12 = 1051289514; + } else { + var12 = 1585854021; + } + break; + case 1051289514: + if (var10 >= var2) { + var12 = -382999672; + } else { + var12 = 1585854021; + } + break; + case 1585854021: + var13 = 0; + var12 = -1571158023; + } + } + } + + public static UVPair getMouse(double var0) { + return new UVPair((float)(mc.mouseHandler.xpos() / var0), (float)(mc.mouseHandler.ypos() / var0)); + } + + private arz() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/as.java b/src/main/java/defpackage/as.java new file mode 100644 index 0000000..73548e7 --- /dev/null +++ b/src/main/java/defpackage/as.java @@ -0,0 +1,23 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; + +public class as extends ax implements aw { + private float x; + private float y; + private float z; + private float amount; + + public as(float var1, float var2, float var3, float var4) { + this.amount = var1; + this.x = var2; + this.y = var3; + this.z = var4; + } + + @Override + public void applyPose(PoseStack var1) { + var1.rotateAround(Axis.XP.rotationDegrees(this.amount), this.x, this.y, this.z); + } +} diff --git a/src/main/java/defpackage/asa.java b/src/main/java/defpackage/asa.java new file mode 100644 index 0000000..47b1793 --- /dev/null +++ b/src/main/java/defpackage/asa.java @@ -0,0 +1,283 @@ +package defpackage; + +public final class asa { + public static final float CARD_AMOUNT = 0.12F; + public static final float CONTROL_AMOUNT = 0.05F; + public static final float REFERENCE_WIDTH = 172.0F; + public static final float VISIBLE = 0.001F; + public static final float TOOLTIP_THRESHOLD = 0.5F; + public static final float PLATE_ALPHA = 0.55F; + public static final float TEXT_LIFT = 0.4F; + public static final float ICON_SHIFT = 1.2F; + public static final float PLATE_INSET_X = 4.0F; + public static final float PLATE_INSET_Y = 2.0F; + public static final float PLATE_GROW = 2.0F; + private static final float MIN_WIDTH = 1.0F; + private static final float FULL = 1.0F; + + private asa() { + } + + public static ct spring() { + return ct.transform(ob.MEDIUM, 0.0F); + } + + public static ct cardSpring() { + return ct.layout(ob.SETTLED, 0.0F); + } + + public static arq plateRadius() { + return asj.all(oc.CARD); + } + + public static float amount(float var0, float var1) { + return var0 * (172.0F / Math.max(1.0F, var1)); + } + + public static float controlAmount(float var0) { + return amount(0.05F, var0); + } + + public static float cardAmount(float var0) { + return amount(0.12F, var0); + } + + public static float scale(float var0, float var1) { + return asc.of(var0, var1); + } + + public static float settle(float var0) { + return asc.settle(var0); + } + + public static boolean hits(double var0, double var2, float var4, float var5, float var6, float var7, float var8, float var9) { + return asc.contains(var0, var2, var4, var5, var6, var7, scale(var8, var9)); + } + + public static boolean hits(double var0, double var2, asi var4, ct var5, float var6) { + int var8 = 0; + int var7 = 90634902; + + while (true) { + switch (var7) { + case -1171346916: + var8 = 0; + var7 = 431011828; + break; + case 76856172: + if (hits(var0, var2, var4.x(), var4.y(), var4.width(), var4.height(), var5.value(), var6)) { + var7 = 1674320515; + } else { + var7 = -1171346916; + } + break; + case 90634902: + default: + if (var4.isValid()) { + var7 = 76856172; + } else { + var7 = -1171346916; + } + break; + case 431011828: + return (boolean)((var8) != 0); + case 1674320515: + var8 = 1; + var7 = 431011828; + } + } + } + + public static boolean hitsControl(double var0, double var2, asi var4, ct var5) { + int var7 = 0; + int var6 = -442535380; + + while (true) { + switch (var6) { + case -1811791945: + return (boolean)((var7) != 0); + case -1322531735: + var7 = 1; + var6 = -1811791945; + break; + case -762342823: + if (hits(var0, var2, var4, var5, controlAmount(var4.width()))) { + var6 = -1322531735; + } else { + var6 = 39021728; + } + break; + case -442535380: + default: + if (var4.isValid()) { + var6 = -762342823; + } else { + var6 = 39021728; + } + break; + case 39021728: + var7 = 0; + var6 = -1811791945; + } + } + } + + public static boolean push(aru var0, float var1, float var2, float var3, float var4, float var5, float var6) { + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = -1291169477; + + while (true) { + switch (var10) { + case -1291169477: + default: + if (var5 <= 0.0F) { + var10 = -1279665536; + } else { + var10 = 2112791723; + } + break; + case -1279665536: + return (boolean)(((0)) != 0); + case 2112791723: + var7 = var1 + var3 / 2.0F; + var8 = var2 + var4 / 2.0F; + var9 = scale(var5, var6); + var0.pushMatrix(); + var0.pose().translate(var7, var8); + var0.pose().scale(var9, var9); + var0.pose().translate(-var7, -var8); + return (boolean)(((1)) != 0); + } + } + } + + public static void pop(aru var0, boolean var1) { + int var2 = 569181174; + + while (true) { + switch (var2) { + case -448216939: + var0.popMatrix(); + var2 = 1546438889; + break; + case 569181174: + default: + if (var1) { + var2 = -448216939; + } else { + var2 = 1546438889; + } + break; + case 1546438889: + return; + } + } + } + + public static void plateRow(aru var0, float var1, float var2, float var3, float var4, asu var5, float var6, float var7) { + plate(var0, var1 + 4.0F, var2 + 2.0F, var3 - 8.0F, var4 - 4.0F, var5, var6, var7); + } + + public static void plateControl(aru var0, float var1, float var2, float var3, float var4, asu var5, float var6, float var7) { + plate(var0, var1 - 2.0F, var2 - 2.0F, var3 + 4.0F, var4 + 4.0F, var5, var6, var7); + } + + public static void plate(aru var0, float var1, float var2, float var3, float var4, asu var5, float var6, float var7) { + int var8 = 341484182; + + while (true) { + switch (var8) { + case -2108167234: + if (var4 <= 0.0F) { + var8 = 215243968; + } else { + var8 = -415700241; + } + break; + case -415700241: + var0.drawSurface(aso.ROW, var1, var2, var3, var4, plateRadius(), var5.getRGBWithAlpha(var6 * 0.55F * var7)); + return; + case -228733561: + if (!(var3 <= 0.0F)) { + var8 = -2108167234; + } else { + var8 = 215243968; + } + break; + case 215243968: + return; + case 341484182: + default: + if (!(var7 <= 0.001F)) { + var8 = -228733561; + } else { + var8 = 215243968; + } + } + } + } + + public static asu plateColor(mv var0) { + return var0.getForegroundLight(); + } + + public static asu liftText(asu var0, mv var1, float var2) { + asu var4 = null; + int var3 = 1944604289; + + while (true) { + switch (var3) { + case -1939144273: + return var4; + case 404882890: + var4 = var0; + var3 = -1939144273; + break; + case 636825046: + var4 = var0.mix(var1.getWhite(), 0.4F * var2); + var3 = -1939144273; + break; + case 1944604289: + default: + if (var2 <= 0.0F) { + var3 = 404882890; + } else { + var3 = 636825046; + } + } + } + } + + public static int liftText(int var0, mv var1, float var2) { + int var4 = 0; + int var3 = 836349038; + + while (true) { + switch (var3) { + case -148022707: + var4 = asu.mixRGB(var0, var1.getWhite().getRGB(), 0.4F * var2, 1.0F); + var3 = 1202615159; + break; + case 836349038: + default: + if (var2 <= 0.0F) { + var3 = 1220429135; + } else { + var3 = -148022707; + } + break; + case 1202615159: + return var4; + case 1220429135: + var4 = var0; + var3 = 1202615159; + } + } + } + + public static float iconShift(float var0) { + return 1.2F * var0; + } +} diff --git a/src/main/java/defpackage/asb.java b/src/main/java/defpackage/asb.java new file mode 100644 index 0000000..26ca314 --- /dev/null +++ b/src/main/java/defpackage/asb.java @@ -0,0 +1,114 @@ +package defpackage; + +public final class asb { + public static final int NONE = -1; + private static final float HALF = 2.0F; + + private asb() { + } + + public static int pickRow(double var0, double var2, float var4, float var5, float[] var6, int var7, float var8, float var9) { + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = 0; + float var13 = 0.0F; + int var14 = 0; + float var15 = 0.0F; + int var16 = 850889841; + + while (true) { + switch (var16) { + case -2109891432: + return -1; + case -1789376243: + var10 = var5 * (var9 - 1.0F) / 2.0F; + var11 = var8 * (var9 - 1.0F) / 2.0F; + if (!(var0 < var4 - var10)) { + var16 = 221255558; + } else { + var16 = -2109891432; + } + break; + case -1774961489: + var16 = -717191493; + break; + case -1746875735: + if (var14 < var7) { + var16 = 60706713; + } else { + var16 = 377357523; + } + break; + case -1705346250: + if (var7 <= 0) { + var16 = 195890885; + } else { + var16 = -1789376243; + } + break; + case -1395221971: + if (!(var8 <= 0.0F)) { + var16 = -1705346250; + } else { + var16 = 195890885; + } + break; + case -880934304: + if (var2 > var6[var14] + var8 + var11) { + var16 = -1774961489; + } else { + var16 = 97161930; + } + break; + case -717191493: + var14++; + var16 = -1746875735; + break; + case -160230184: + var13 = var15; + var12 = var14; + var16 = -717191493; + break; + case 60706713: + if (!(var2 < var6[var14] - var11)) { + var16 = -880934304; + } else { + var16 = -717191493; + } + break; + case 97161930: + var15 = Math.abs((float)var2 - (var6[var14] + var8 / 2.0F)); + if (var15 < var13) { + var16 = -160230184; + } else { + var16 = -717191493; + } + break; + case 195890885: + return -1; + case 221255558: + if (var0 > var4 + var5 + var10) { + var16 = -2109891432; + } else { + var16 = 495562917; + } + break; + case 377357523: + return var12; + case 495562917: + var12 = -1; + var13 = Float.MAX_VALUE; + var14 = 0; + var16 = -1746875735; + break; + case 850889841: + default: + if (!(var5 <= 0.0F)) { + var16 = -1395221971; + } else { + var16 = 195890885; + } + } + } + } +} diff --git a/src/main/java/defpackage/asc.java b/src/main/java/defpackage/asc.java new file mode 100644 index 0000000..345dc96 --- /dev/null +++ b/src/main/java/defpackage/asc.java @@ -0,0 +1,24 @@ +package defpackage; + +public final class asc { + private static final float ONE = 1.0F; + private static final float HALF = 2.0F; + + private asc() { + } + + public static float settle(float var0) { + float var1 = 1.0F - var0; + return 1.0F - var1 * var1; + } + + public static float of(float var0, float var1) { + return 1.0F + var1 * settle(var0); + } + + public static boolean contains(double var0, double var2, float var4, float var5, float var6, float var7, float var8) { + float var9 = var6 * var8; + float var10 = var7 * var8; + return aqj.isHovered(var0, var2, var4 - (var9 - var6) / 2.0F, var5 - (var10 - var7) / 2.0F, var9, var10); + } +} diff --git a/src/main/java/defpackage/asd.java b/src/main/java/defpackage/asd.java new file mode 100644 index 0000000..9f478b1 --- /dev/null +++ b/src/main/java/defpackage/asd.java @@ -0,0 +1,11 @@ +package defpackage; + +final class asd { + final ct spring = asa.spring(); + int touchedFrame; + + asd(float var1, int var2) { + this.spring.jumpTo(var1); + this.touchedFrame = var2; + } +} diff --git a/src/main/java/defpackage/ase.java b/src/main/java/defpackage/ase.java new file mode 100644 index 0000000..6ce3654 --- /dev/null +++ b/src/main/java/defpackage/ase.java @@ -0,0 +1,214 @@ +package defpackage; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + +public final class ase { + private static final int SWEEP_INTERVAL_FRAMES = 120; + private static final int EVICT_AFTER_FRAMES = 360; + private static final int SLOT_GROWTH = 16; + private final Map tracks = new HashMap<>(); + private ct[] slots = new ct[0]; + private int frame; + private int sweptFrame; + + public float hover(Object var1, boolean var2) { + float var3 = 0.0F; + asd var4 = null; + float var6 = 0.0F; + int var5 = 376614376; + + while (true) { + switch (var5) { + case -1950915807: + var3 = var6; + var4 = this.tracks.get(var1); + if (var4 == null) { + var5 = 1330228554; + } else { + var5 = -338348170; + } + break; + case -1693388102: + var6 = 1.0F; + var5 = -1950915807; + break; + case -338348170: + var4.touchedFrame = this.frame; + return var4.spring.update(var3); + case 376614376: + default: + if (var2) { + var5 = -1693388102; + } else { + var5 = 539328712; + } + break; + case 539328712: + var6 = 0.0F; + var5 = -1950915807; + break; + case 1330228554: + this.tracks.put(var1, new asd(var3, this.frame)); + return var3; + } + } + } + + public float hover(int var1, boolean var2) { + if (var1 < 0) { + return var2 ? 1.0F : 0.0F; + } + + if (var1 >= this.slots.length) { + this.grow(var1); + } + + return this.slots[var1].update(var2 ? 1.0F : 0.0F); + } + + public float peek(Object var1) { + asd var2 = null; + float var4 = 0.0F; + int var3 = -2128021108; + + while (true) { + switch (var3) { + case -2128021108: + default: + var2 = this.tracks.get(var1); + if (var2 == null) { + var3 = -125619064; + } else { + var3 = 1452981312; + } + break; + case -2025774981: + return var4; + case -125619064: + var4 = 0.0F; + var3 = -2025774981; + break; + case 1452981312: + var4 = var2.spring.value(); + var3 = -2025774981; + } + } + } + + public float peek(int var1) { + float var3 = 0.0F; + int var2 = 541391145; + + while (true) { + switch (var2) { + case -2057984491: + if (var1 < this.slots.length) { + var2 = -139348796; + } else { + var2 = 430190736; + } + break; + case -467838960: + return var3; + case -139348796: + var3 = this.slots[var1].value(); + var2 = -467838960; + break; + case 430190736: + var3 = 0.0F; + var2 = -467838960; + break; + case 541391145: + default: + if (var1 >= 0) { + var2 = -2057984491; + } else { + var2 = 430190736; + } + } + } + } + + public void endFrame() { + Iterator var1 = null; + int var2 = 449262990; + + while (true) { + switch (var2) { + case -958768479: + if (var1.hasNext()) { + var2 = 1305749960; + } else { + var2 = 1673898457; + } + break; + case -590515929: + var1.remove(); + var2 = -958768479; + break; + case -419359375: + return; + case 449262990: + default: + this.frame += 1; + if (this.frame - this.sweptFrame < (499227581 ^ -499227461) + ((499227581 & -499227461) << 1)) { + var2 = -419359375; + } else { + var2 = 656474877; + } + break; + case 656474877: + this.sweptFrame = this.frame; + var1 = this.tracks.entrySet().iterator(); + var2 = -958768479; + break; + case 1305749960: + if (this.frame - ((asd)((Entry)var1.next()).getValue()).touchedFrame > (1184953830 ^ -1184953470) + ((1184953830 & -1184953470) << 1)) { + var2 = -590515929; + } else { + var2 = -958768479; + } + break; + case 1673898457: + return; + } + } + } + + private void grow(int var1) { + ct[] var2 = null; + int var3 = 0; + int var4 = 2070951838; + + while (true) { + switch (var4) { + case -1173226797: + this.slots = var2; + return; + case 1305302784: + var2[var3] = asa.spring(); + var3++; + var4 = 2017396004; + break; + case 2017396004: + if (var3 < var2.length) { + var4 = 1305302784; + } else { + var4 = -1173226797; + } + break; + case 2070951838: + default: + var2 = new ct[var1 + 16]; + System.arraycopy( + this.slots, 0, var2, 0, this.slots.length + ); + var3 = this.slots.length; + var4 = 2017396004; + } + } + } +} diff --git a/src/main/java/defpackage/asf.java b/src/main/java/defpackage/asf.java new file mode 100644 index 0000000..e1a9284 --- /dev/null +++ b/src/main/java/defpackage/asf.java @@ -0,0 +1,174 @@ +package defpackage; + +public final class asf { + private float boundsX; + private float boundsY; + private float boundsWidth; + private float boundsHeight; + private float cursorX; + private float cursorY; + private float lastX; + private float lastY; + private float lastWidth; + private float lastHeight; + + public asf begin(float var1, float var2, float var3, float var4) { + this.boundsX = var1; + this.boundsY = var2; + this.boundsWidth = var3; + this.boundsHeight = var4; + this.cursorX = var1; + this.cursorY = var2; + return this; + } + + public asf begin(asi var1) { + return this.begin(var1.x(), var1.y(), var1.width(), var1.height()); + } + + public asf inset(float var1) { + return this.inset(var1, var1); + } + + public asf inset(od var1) { + float var2 = oq.current().spacing(var1); + return this.inset(var2, var2); + } + + public asf inset(float var1, float var2) { + this.boundsX += var1; + this.boundsY += var2; + this.boundsWidth = Math.max(0.0F, this.boundsWidth - var1 * 2.0F); + this.boundsHeight = Math.max(0.0F, this.boundsHeight - var2 * 2.0F); + this.cursorX = this.boundsX; + this.cursorY = this.boundsY; + return this; + } + + public asf row(float var1) { + return this.row(var1, 0.0F); + } + + public asf row(float var1, od var2) { + return this.row(var1, oq.current().spacing(var2)); + } + + public asf row(float var1, float var2) { + this.lastX = this.boundsX; + this.lastY = this.cursorY; + this.lastWidth = this.boundsWidth; + this.lastHeight = var1; + this.cursorY += var1 + var2; + this.cursorX = this.boundsX; + return this; + } + + public asf column(float var1) { + return this.column(var1, 0.0F); + } + + public asf column(float var1, od var2) { + return this.column(var1, oq.current().spacing(var2)); + } + + public asf column(float var1, float var2) { + this.lastX = this.cursorX; + this.lastY = this.cursorY; + this.lastWidth = var1; + this.lastHeight = this.boundsHeight; + this.cursorX += var1 + var2; + return this; + } + + public asf columnFromEnd(float var1, float var2) { + this.lastWidth = var1; + this.lastHeight = this.boundsHeight; + this.lastY = this.cursorY; + this.lastX = this.boundsX + this.boundsWidth - var1; + this.boundsWidth = Math.max(0.0F, this.boundsWidth - var1 - var2); + return this; + } + + public asf skip(float var1) { + this.cursorY += var1; + return this; + } + + public asf skipX(float var1) { + this.cursorX += var1; + return this; + } + + public float x() { + return this.lastX; + } + + public float y() { + return this.lastY; + } + + public float width() { + return this.lastWidth; + } + + public float height() { + return this.lastHeight; + } + + public float centerY(float var1) { + return this.lastY + (this.lastHeight - var1) * 0.5F; + } + + public float centerX(float var1) { + return this.lastX + (this.lastWidth - var1) * 0.5F; + } + + public float endX() { + return this.lastX + this.lastWidth; + } + + public float endY() { + return this.lastY + this.lastHeight; + } + + public float consumedHeight() { + return this.cursorY - this.boundsY; + } + + public float consumedWidth() { + return this.cursorX - this.boundsX; + } + + public float remainingHeight() { + return Math.max(0.0F, this.boundsY + this.boundsHeight - this.cursorY); + } + + public float remainingWidth() { + return Math.max(0.0F, this.boundsX + this.boundsWidth - this.cursorX); + } + + public boolean contains(double var1, double var3) { + return arz.isHovered(this.lastX, this.lastY, this.lastWidth, this.lastHeight, var1, var3); + } + + public float gridColumnWidth(int var1, float var2) { + int var3 = 207369203; + + while (true) { + switch (var3) { + case -1269599729: + return (this.boundsWidth - var2 * (var1 - ((-924720784 | 924720785) + (-924720784 & 924720785)))) / var1; + case 207369203: + default: + if (var1 <= 0) { + var3 = 1807906563; + } else { + var3 = -1269599729; + } + break; + case 1807906563: + return this.boundsWidth; + } + } + } +} diff --git a/src/main/java/defpackage/asg.java b/src/main/java/defpackage/asg.java new file mode 100644 index 0000000..fa23637 --- /dev/null +++ b/src/main/java/defpackage/asg.java @@ -0,0 +1,79 @@ +package defpackage; + +public final class asg { + private static final int DOT_COUNT = 3; + private static final float DOT_PHASE_STEP = 0.18F; + private static final float MIN_ALPHA = 0.25F; + private static final float MAX_ALPHA = 1.0F; + private static final float MIN_SCALE = 0.7F; + private static final float MAX_SCALE = 1.0F; + private static final float FULL_TURN = (float) (Math.PI * 2); + private static final float CYCLE_MULTIPLIER = 3.0F; + private static final float HALF = 0.5F; + private static final float ONE = 1.0F; + + private asg() { + } + + public static float width() { + return 3.0F * dotSize() + 2.0F * gap(); + } + + public static float dotSize() { + return pk.space(od.XS); + } + + private static float gap() { + return pk.space(od.XS); + } + + public static void render(aru var0, float var1, float var2, asu var3, float var4) { + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + double var8 = 0.0; + int var10 = 0; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + int var16 = 2069023129; + + while (true) { + switch (var16) { + case -1438055517: + if (var10 < (-267368924 ^ 267368927) + ((-267368924 & 267368927) << 1)) { + var16 = 1399993996; + } else { + var16 = 94051520; + } + break; + case 94051520: + return; + case 1399993996: + var11 = (float)((Math.sin((var8 - var10 * 0.18F) * (float) (Math.PI * 2)) + 1.0) * 0.5); + var12 = 0.7F + 0.3F * var11; + var13 = (0.25F + 0.75F * var11) * var4; + var14 = var5 * var12; + var15 = (var5 - var14) * 0.5F; + var0.drawSurface(aso.ACCENT, var1 + var10 * var6 + var15, var2 - var14 * 0.5F, var14, var14, asj.dot(var14), var3.getRGBWithAlpha(var13)); + var10++; + var16 = -1438055517; + break; + case 2069023129: + default: + var5 = dotSize(); + var6 = var5 + gap(); + var7 = pk.motion(ob.DELIBERATE) * 3.0F; + var8 = cs.elapsedMillis() % var7 / var7; + var10 = 0; + var16 = -1438055517; + } + } + } + + public static oc shape() { + return oc.CHIP; + } +} diff --git a/src/main/java/defpackage/ash.java b/src/main/java/defpackage/ash.java new file mode 100644 index 0000000..782e32b --- /dev/null +++ b/src/main/java/defpackage/ash.java @@ -0,0 +1,209 @@ +package defpackage; + +public final class ash { + private static final float SPEED_PIXELS_PER_SECOND = 20.0F; + private static final float PAUSE_FACTOR = 1.8F; + private static final float MILLIS_PER_SECOND = 1000.0F; + private static final float MIN_SLIDE_MILLIS = 500.0F; + private static final float MAX_SLIDE_MILLIS = 6000.0F; + private static final float MIN_TRACKED_OVERFLOW = 8.0F; + private static final float SMOOTHING_TAU_MILLIS = 240.0F; + private static final float SMOOTH_THREE = 3.0F; + private static final float SMOOTH_TWO = 2.0F; + private static final float ZERO = 0.0F; + private static final float ONE = 1.0F; + private static final float FULL_CYCLE = 1.0F; + public static final float MIN_SCROLL_OVERFLOW = 1.5F; + private static long observedFrame = (-4385967268489015100L | 4385967268489015099L) + (-4385967268489015100L & 4385967268489015099L); + private static float pendingMaxOverflow; + private static float trackedMaxOverflow = 8.0F; + private static float phase; + + private ash() { + } + + public static void observe(float var0) { + int var1 = -491040988; + + while (true) { + switch (var1) { + case -1479059033: + return; + case -873087185: + pendingMaxOverflow = var0; + var1 = -1479059033; + break; + case -491040988: + default: + rollFrame(); + if (var0 > pendingMaxOverflow) { + var1 = -873087185; + } else { + var1 = -1479059033; + } + } + } + } + + public static float offset(float var0) { + int var1 = 2087462874; + + while (true) { + switch (var1) { + case -2092291343: + return 0.0F; + case -1877586619: + return var0 * normalisedTravel(); + case 2087462874: + } + + rollFrame(); + if (var0 <= 1.5F) { + var1 = -2092291343; + } else { + var1 = -1877586619; + } + } + } + + private static float normalisedTravel() { + float var0 = 0.0F; + float var1 = 0.0F; + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + int var6 = 2029080388; + + while (true) { + switch (var6) { + case -2062710321: + return 0.0F; + case -2061017875: + return 0.0F; + case -1894099024: + var3 = var0 / var2; + var4 = var1 / var2; + if (phase < var3) { + var6 = -2062710321; + } else { + var6 = 567819892; + } + break; + case -377690695: + return 1.0F; + case 567819892: + if (phase < var3 + var4) { + var6 = 762297699; + } else { + var6 = 2135593897; + } + break; + case 731435371: + var5 = (phase - var3 * 2.0F - var4) / var4; + return 1.0F - smoothstep(var5); + case 762297699: + return smoothstep((phase - var3) / var4); + case 2029080388: + default: + var0 = pauseMillis(); + var1 = slideMillis(); + var2 = (var0 + var1) * 2.0F; + if (var2 <= 0.0F) { + var6 = -2061017875; + } else { + var6 = -1894099024; + } + break; + case 2135593897: + if (phase < var3 * 2.0F + var4) { + var6 = -377690695; + } else { + var6 = 731435371; + } + } + } + } + + private static float pauseMillis() { + return pk.motion(ob.DELIBERATE) * 1.8F; + } + + private static float slideMillis() { + float var0 = trackedMaxOverflow / 20.0F * 1000.0F; + return Math.max(500.0F, Math.min(var0, 6000.0F)); + } + + private static void rollFrame() { + long var0 = (7236668169817966706L | -7236668169817966706L) + (7236668169817966706L & -7236668169817966706L); + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + int var6 = 381390998; + + while (true) { + switch (var6) { + case -1696245458: + return; + case -1370837351: + return; + case -620384921: + phase = (phase + var2 / var5) % 1.0F; + var6 = -1696245458; + break; + case 381390998: + default: + var0 = cs.frame(); + if (var0 == observedFrame) { + var6 = -1370837351; + } else { + var6 = 1202679919; + } + break; + case 1202679919: + observedFrame = var0; + var2 = cs.deltaMillis(); + var3 = Math.max(pendingMaxOverflow, 8.0F); + var4 = 1.0F - (float)Math.exp(-var2 / 240.0F); + trackedMaxOverflow = trackedMaxOverflow + (var3 - trackedMaxOverflow) * var4; + pendingMaxOverflow = 0.0F; + var5 = (pauseMillis() + slideMillis()) * 2.0F; + if (var5 > 0.0F) { + var6 = -620384921; + } else { + var6 = -1696245458; + } + } + } + } + + private static float smoothstep(float var0) { + float var1 = 0.0F; + float var3 = 0.0F; + int var2 = -592165579; + + while (true) { + switch (var2) { + case -1372102876: + var1 = var3; + return var1 * var1 * (3.0F - 2.0F * var1); + case -592165579: + default: + if (var0 < 0.0F) { + var2 = 1201458505; + } else { + var2 = -42371142; + } + break; + case -42371142: + var3 = Math.min(var0, 1.0F); + var2 = -1372102876; + break; + case 1201458505: + var3 = 0.0F; + var2 = -1372102876; + } + } + } +} diff --git a/src/main/java/defpackage/asi.java b/src/main/java/defpackage/asi.java new file mode 100644 index 0000000..2ea0c70 --- /dev/null +++ b/src/main/java/defpackage/asi.java @@ -0,0 +1,75 @@ +package defpackage; + +public final class asi { + private float x; + private float y; + private float width; + private float height; + private boolean valid; + + public void set(float var1, float var2, float var3, float var4) { + this.x = var1; + this.y = var2; + this.width = var3; + this.height = var4; + this.valid = (boolean)(((1)) != 0); + } + + public void invalidate() { + this.valid = (boolean)(((0)) != 0); + } + + public boolean isValid() { + return this.valid; + } + + public float x() { + return this.x; + } + + public float y() { + return this.y; + } + + public float width() { + return this.width; + } + + public float height() { + return this.height; + } + + public boolean contains(double var1, double var3) { + int var6 = 0; + int var5 = 2134385794; + + while (true) { + switch (var5) { + case -2036199804: + var6 = 0; + var5 = 1324691461; + break; + case -1980588116: + var6 = 1; + var5 = 1324691461; + break; + case 1270540707: + if (aqj.isHovered(var1, var3, this.x, this.y, this.width, this.height)) { + var5 = -1980588116; + } else { + var5 = -2036199804; + } + break; + case 1324691461: + return (boolean)((var6) != 0); + case 2134385794: + default: + if (this.valid) { + var5 = 1270540707; + } else { + var5 = -2036199804; + } + } + } + } +} diff --git a/src/main/java/defpackage/asj.java b/src/main/java/defpackage/asj.java new file mode 100644 index 0000000..9f9ce0b --- /dev/null +++ b/src/main/java/defpackage/asj.java @@ -0,0 +1,135 @@ +package defpackage; + +public final class asj { + private static final int MEMO_SIZE = 64; + private static final int MEMO_MASK = 63; + private static final float MIN_RADIUS = 0.0F; + private static final float PILL_DIVISOR = 2.0F; + private static final float INSET_RATIO = 0.72F; + private static final int HASH_SPREAD = -1640531535; + private static final int HASH_SHIFT = 15; + private static final float[] memoKey = new float[64]; + private static final arq[] memoValue = new arq[64]; + + private asj() { + } + + public static float of(oc var0) { + return mx.current().roleRadius(var0); + } + + public static arq all(oc var0) { + return mx.current().roleRadiusShape(var0); + } + + public static arq top(oc var0) { + return mx.current().roleRadiusTop(var0); + } + + public static arq bottom(oc var0) { + return mx.current().roleRadiusBottom(var0); + } + + public static arq left(oc var0) { + return mx.current().roleRadiusLeft(var0); + } + + public static arq right(oc var0) { + return mx.current().roleRadiusRight(var0); + } + + public static arq inner(oc var0, float var1) { + return uniform(Math.max(0.0F, of(var0) - var1)); + } + + public static arq outer(oc var0, float var1) { + return uniform(of(var0) + Math.max(0.0F, var1)); + } + + public static float fit(float var0, float var1, float var2) { + float var3 = 0.0F; + float var5 = 0.0F; + int var4 = -1489348269; + + while (true) { + switch (var4) { + case -1927531854: + var5 = var0; + var4 = 2131882079; + break; + case -1489348269: + default: + var3 = Math.min(var1, var2) / 2.0F; + if (var0 < var3) { + var4 = -1927531854; + } else { + var4 = 1098336426; + } + break; + case 1098336426: + var5 = Math.max(0.0F, var3); + var4 = 2131882079; + break; + case 2131882079: + return var5; + } + } + } + + public static float contentInset(oc var0, float var1) { + return Math.max(var1, of(var0) * 0.72F); + } + + public static float contentInset(oc var0, float var1, float var2, float var3) { + return Math.max(var1, fit(of(var0), var2, var3) * 0.72F); + } + + public static arq pill(float var0) { + return uniform(Math.max(0.0F, var0) / 2.0F); + } + + public static arq dot(float var0) { + return pill(var0); + } + + public static arq uniform(float var0) { + int var1 = 0; + arq var2 = null; + arq var3 = null; + int var4 = 1251632; + + while (true) { + switch (var4) { + case -2090796134: + if (memoKey[var1] == var0) { + var4 = 16001666; + } else { + var4 = 862766289; + } + break; + case 1251632: + default: + var1 = slotOf(var0); + var2 = memoValue[var1]; + if (var2 != null) { + var4 = -2090796134; + } else { + var4 = 862766289; + } + break; + case 16001666: + return var2; + case 862766289: + var3 = arq.all(var0); + memoKey[var1] = var0; + memoValue[var1] = var3; + return var3; + } + } + } + + private static int slotOf(float var0) { + int var1 = Float.floatToIntBits(var0) * (-1640531535); + return (var1 ^ var1 >>> (2042158626 ^ -2042158611) + ((2042158626 & -2042158611) << 1)) & (-1347030339 | 1347030402) + (-1347030339 & 1347030402); + } +} diff --git a/src/main/java/defpackage/ask.java b/src/main/java/defpackage/ask.java new file mode 100644 index 0000000..f021909 --- /dev/null +++ b/src/main/java/defpackage/ask.java @@ -0,0 +1,51 @@ +package defpackage; + +public record ask(float x, float y, float width, float height) { + public boolean contains(double var1, double var3) { + int var6 = 0; + int var5 = -364811437; + + while (true) { + switch (var5) { + case -1450267535: + if (var3 >= this.y) { + var5 = 855634505; + } else { + var5 = -765745742; + } + break; + case -765745742: + var6 = 0; + var5 = 785492403; + break; + case -666383914: + if (var1 <= this.x + this.width) { + var5 = -1450267535; + } else { + var5 = -765745742; + } + break; + case -392572481: + var6 = 1; + var5 = 785492403; + break; + case -364811437: + default: + if (var1 >= this.x) { + var5 = -666383914; + } else { + var5 = -765745742; + } + break; + case 785492403: + return (boolean)((var6) != 0); + case 855634505: + if (var3 <= this.y + this.height) { + var5 = -392572481; + } else { + var5 = -765745742; + } + } + } + } +} diff --git a/src/main/java/defpackage/asl.java b/src/main/java/defpackage/asl.java new file mode 100644 index 0000000..0755b75 --- /dev/null +++ b/src/main/java/defpackage/asl.java @@ -0,0 +1,168 @@ +package defpackage; + +import java.util.Arrays; + +public final class asl { + private static final int STRIDE = 4; + private static final int INITIAL_CAPACITY = 16; + private static final int GROWTH = 2; + public static final int NONE = -1; + private float[] values = new float[64]; + private int size; + + public void clear() { + this.size = 0; + } + + public int size() { + return this.size; + } + + public void add(float var1, float var2, float var3, float var4) { + int var5 = 0; + int var6 = 50953027; + + while (true) { + switch (var6) { + case -756913779: + var5 = this.size * (4); + this.values[var5] = var1; + this.values[var5 + 1] = var2; + this.values[var5 + 2] = var3; + this.values[var5 + 3] = var4; + this.size += 1; + return; + case 50953027: + default: + if ((this.size + (-1362405599 ^ 1362405600) + ((-1362405599 & 1362405600) << 1)) * ((-992358055 ^ 992358059) + ((-992358055 & 992358059) << 1)) + > this.values.length) { + var6 = 1444245319; + } else { + var6 = -756913779; + } + break; + case 1444245319: + this.values = Arrays.copyOf(this.values, this.values.length * ((-35241522 ^ 35241524) + ((-35241522 & 35241524) << 1))); + var6 = -756913779; + } + } + } + + public void set(int var1, float var2, float var3, float var4, float var5) { + int var6 = 0; + int var7 = -1986578960; + + while (true) { + switch (var7) { + case -1986578960: + default: + if (this.size <= var1) { + var7 = -1710136130; + } else { + var7 = 1568209997; + } + break; + case -1710136130: + this.add(0.0F, 0.0F, 0.0F, 0.0F); + var7 = -1986578960; + break; + case 1568209997: + var6 = var1 * (4); + this.values[var6] = var2; + this.values[var6 + 1] = var3; + this.values[var6 + 2] = var4; + this.values[var6 + 3] = var5; + return; + } + } + } + + public float x(int var1) { + return this.values[var1 * (4)]; + } + + public float y(int var1) { + return this.values[var1 * 5]; + } + + public float width(int var1) { + return this.values[var1 * 6]; + } + + public float height(int var1) { + return this.values[var1 * 7]; + } + + public boolean contains(int var1, double var2, double var4) { + int var6 = 0; + int var7 = 1953386523; + + while (true) { + switch (var7) { + case -625580217: + return (boolean)(((0)) != 0); + case 938001111: + var6 = var1 * (4); + return aqj.isHovered( + var2, + var4, + this.values[var6], + this.values[var6 + 1], + this.values[var6 + 2], + this.values[var6 + 3] + ); + case 1953386523: + default: + if (var1 >= 0) { + var7 = 2074169495; + } else { + var7 = -625580217; + } + break; + case 2074169495: + if (var1 >= this.size) { + var7 = -625580217; + } else { + var7 = 938001111; + } + } + } + } + + public int indexAt(double var1, double var3) { + int var5 = 0; + int var6 = -1388108123; + + while (true) { + switch (var6) { + case -2001453267: + return var5; + case -1388108123: + default: + var5 = 0; + var6 = -1355395439; + break; + case -1355395439: + if (var5 < this.size) { + var6 = 1466191979; + } else { + var6 = 1516691545; + } + break; + case -1330486166: + var5++; + var6 = -1355395439; + break; + case 1466191979: + if (this.contains(var5, var1, var3)) { + var6 = -2001453267; + } else { + var6 = -1330486166; + } + break; + case 1516691545: + return -1; + } + } + } +} diff --git a/src/main/java/defpackage/asm.java b/src/main/java/defpackage/asm.java new file mode 100644 index 0000000..68200f7 --- /dev/null +++ b/src/main/java/defpackage/asm.java @@ -0,0 +1,139 @@ +package defpackage; + +public final class asm { + private static final float HOVER_ALPHA = 0.06F; + private static final float PRESS_ALPHA = 0.12F; + private static final float SELECTED_ALPHA = 0.16F; + private static final float DISABLED_FADE = 0.38F; + private static final float ACCENT_TEXT_MIX = 0.4F; + + private asm() { + } + + public static float hoverAlpha(float var0) { + return 0.06F * clamp(var0); + } + + public static float pressAlpha(float var0) { + return 0.12F * clamp(var0); + } + + public static float selectedAlpha(float var0) { + return 0.16F * clamp(var0); + } + + public static float overlayAlpha(float var0, float var1, float var2) { + return hoverAlpha(var0) + pressAlpha(var1) + selectedAlpha(var2); + } + + public static asu overlay(float var0, float var1, float var2) { + float var3 = 0.0F; + int var4 = -1145756050; + + while (true) { + switch (var4) { + case -1145756050: + default: + var3 = overlayAlpha(var0, var1, var2); + if (var3 <= 0.0F) { + var4 = 708671767; + } else { + var4 = 1321450415; + } + break; + case 708671767: + return null; + case 1321450415: + return oq.current().color(nx.ACCENT).mulAlpha(var3); + } + } + } + + public static asu text(asu var0, float var1, boolean var2) { + asu var3 = null; + float var4 = 0.0F; + asu var5 = null; + int var6 = -1713712543; + + while (true) { + switch (var6) { + case -1713712543: + default: + var3 = var0; + var4 = clamp(var1); + if (var4 > 0.0F) { + var6 = -1052060518; + } else { + var6 = 477357241; + } + break; + case -1650148216: + var3 = var3.mulAlpha(0.38F); + var6 = 1623247479; + break; + case -1052060518: + var5 = oq.current().color(nx.ON_SURFACE); + var3 = var3.mix(var5.withAlpha(var3.getAlpha()), 0.4F * var4); + var6 = 477357241; + break; + case 477357241: + if (!var2) { + var6 = -1650148216; + } else { + var6 = 1623247479; + } + break; + case 1623247479: + return var3; + } + } + } + + public static float disabledFade(boolean var0) { + float var2 = 0.0F; + int var1 = 1357171597; + + while (true) { + switch (var1) { + case 681790634: + var2 = 1.0F; + var1 = 924699061; + break; + case 924699061: + return var2; + case 1357171597: + default: + if (var0) { + var1 = 681790634; + } else { + var1 = 2133462637; + } + break; + case 2133462637: + var2 = 0.38F; + var1 = 924699061; + } + } + } + + private static float clamp(float var0) { + int var1 = -1204222917; + + while (true) { + switch (var1) { + case -1204222917: + default: + if (var0 <= 0.0F) { + var1 = 1078056446; + } else { + var1 = 508922612; + } + break; + case 508922612: + return Math.min(var0, 1.0F); + case 1078056446: + return 0.0F; + } + } + } +} diff --git a/src/main/java/defpackage/asn.java b/src/main/java/defpackage/asn.java new file mode 100644 index 0000000..99566d7 --- /dev/null +++ b/src/main/java/defpackage/asn.java @@ -0,0 +1,7 @@ +package defpackage; + +public enum asn { + REFRACTIVE, + INNER, + NONE; +} diff --git a/src/main/java/defpackage/aso.java b/src/main/java/defpackage/aso.java new file mode 100644 index 0000000..4f3cbeb --- /dev/null +++ b/src/main/java/defpackage/aso.java @@ -0,0 +1,21 @@ +package defpackage; + +public enum aso { + WINDOW(asn.REFRACTIVE), + POPUP(asn.REFRACTIVE), + TOOLTIP(asn.REFRACTIVE), + CARD(asn.INNER), + ROW(asn.INNER), + CONTROL(asn.INNER), + ACCENT(asn.NONE); + + private final asn tier; + + aso(asn var3) { + this.tier = var3; + } + + public asn tier() { + return this.tier; + } +} diff --git a/src/main/java/defpackage/asp.java b/src/main/java/defpackage/asp.java new file mode 100644 index 0000000..32c2d7f --- /dev/null +++ b/src/main/java/defpackage/asp.java @@ -0,0 +1,50 @@ +package defpackage; + +public final class asp { + private asp() { + } + + public static ge font(oe var0) { + return oq.current().font(var0); + } + + public static float width(oe var0, String var1) { + return font(var0).width(var1); + } + + public static float height(oe var0) { + return font(var0).height(); + } + + public static void draw(aru var0, oe var1, String var2, float var3, float var4, nx var5) { + draw(var0, var1, var2, var3, var4, oq.current().color(var5)); + } + + public static void draw(aru var0, oe var1, String var2, float var3, float var4, asu var5) { + var0.drawText(font(var1), var2, var3, var4, var5); + } + + public static void drawCentered(aru var0, oe var1, String var2, float var3, float var4, asu var5) { + ge var6 = font(var1); + var0.drawText(var6, var2, var3 - var6.width(var2) * 0.5F, var4, var5); + } + + public static void drawRight(aru var0, oe var1, String var2, float var3, float var4, asu var5) { + ge var6 = font(var1); + var0.drawText(var6, var2, var3 - var6.width(var2), var4, var5); + } + + public static void drawInBox(aru var0, oe var1, String var2, float var3, float var4, float var5, float var6, asu var7) { + ge var8 = font(var1); + var0.drawText(var8, var2, var3 + (var5 - var8.width(var2)) * 0.5F, var4 + (var6 - var8.height()) * 0.5F, var7); + } + + public static void drawVerticallyCentered(aru var0, oe var1, String var2, float var3, float var4, float var5, asu var6) { + ge var7 = font(var1); + var0.drawText(var7, var2, var3, var4 + (var5 - var7.height()) * 0.5F, var6); + } + + public static void drawScrolling(aru var0, oe var1, String var2, float var3, float var4, float var5, asu var6) { + var0.drawScrollingText(font(var1), var2, var3, var4, var5, var6); + } +} diff --git a/src/main/java/defpackage/asq.java b/src/main/java/defpackage/asq.java new file mode 100644 index 0000000..75c2786 --- /dev/null +++ b/src/main/java/defpackage/asq.java @@ -0,0 +1,43 @@ +package defpackage; + +import net.minecraft.client.gui.GuiGraphicsExtractor; + +public class asq extends aru { + private final int mouseX; + private final int mouseY; + private final float delta; + + protected asq(GuiGraphicsExtractor var1, int var2, int var3, float var4) { + super(var1); + this.mouseX = var2; + this.mouseY = var3; + this.delta = var4; + } + + protected asq(int var1, int var2, float var3) { + super(mc.gameRenderer.gameRenderState().guiRenderState); + this.mouseX = var1; + this.mouseY = var2; + this.delta = var3; + } + + public static asq of(GuiGraphicsExtractor var0, int var1, int var2, float var3) { + return new asq(var0, var1, var2, var3); + } + + public static asq of(int var0, int var1, float var2) { + return new asq(var0, var1, var2); + } + + public int getMouseX() { + return this.mouseX; + } + + public int getMouseY() { + return this.mouseY; + } + + public float getDelta() { + return this.delta; + } +} diff --git a/src/main/java/defpackage/asr.java b/src/main/java/defpackage/asr.java new file mode 100644 index 0000000..e6eb6a9 --- /dev/null +++ b/src/main/java/defpackage/asr.java @@ -0,0 +1,8 @@ +package defpackage; + +public enum asr { + RIGHT, + LEFT, + ABOVE, + BELOW; +} diff --git a/src/main/java/defpackage/ass.java b/src/main/java/defpackage/ass.java new file mode 100644 index 0000000..38cdafb --- /dev/null +++ b/src/main/java/defpackage/ass.java @@ -0,0 +1,392 @@ +package defpackage; + +public final class ass { + private static final float PAD_X = 6.0F; + private static final float PAD_Y = 4.0F; + private static final float ARROW_HALF = 2.6F; + private static final float ARROW_ROTATION = (float) (Math.PI / 4); + private static final float ANCHOR_GAP = 4.0F; + private static final float EDGE_MARGIN = 4.0F; + private static final float MIN_VISIBLE_ALPHA = 0.01F; + private static final float BACKGROUND_ALPHA = 0.96F; + private static final float OPEN_SCALE = 0.92F; + private static final long HOVER_DELAY_MS = 1000L; + private static final ct FADE = ct.layout(ob.FAST, 0.0F); + private static Object requestedOwner; + private static String requestedText; + private static float requestedX; + private static float requestedY; + private static float requestedWidth; + private static float requestedHeight; + private static asr requestedAnchor; + private static boolean requestedDelayed; + private static boolean suppressed; + private static Object hoverOwner; + private static String hoverText; + private static long hoverSince; + private static String activeText; + private static float activeX; + private static float activeY; + private static float activeWidth; + private static float activeHeight; + private static asr activeAnchor; + + private static arq RADIUS() { + return asj.all(oc.ROW); + } + + private ass() { + } + + public static void beginFrame() { + requestedOwner = null; + requestedText = null; + suppressed = (boolean)(((0)) != 0); + } + + public static void suppress() { + suppressed = (boolean)(((1)) != 0); + } + + public static void tooltip(Object var0, String var1, float var2, float var3, float var4, float var5, asr var6) { + tooltip(var0, var1, var2, var3, var4, var5, var6, (boolean)((((-187395614 | 187395615) + (-187395614 & 187395615))) != 0)); + } + + public static void tooltip(Object var0, String var1, float var2, float var3, float var4, float var5, asr var6, boolean var7) { + int var8 = 434063361; + + while (true) { + switch (var8) { + case 434063361: + default: + if (var0 != null) { + var8 = 623084089; + } else { + var8 = 1229228340; + } + break; + case 623084089: + if (var1 != null) { + var8 = 1380669281; + } else { + var8 = 1229228340; + } + break; + case 623534741: + requestedOwner = var0; + requestedText = var1; + requestedX = var2; + requestedY = var3; + requestedWidth = var4; + requestedHeight = var5; + requestedAnchor = var6; + requestedDelayed = var7; + return; + case 1229228340: + return; + case 1380669281: + if (var1.isEmpty()) { + var8 = 1229228340; + } else { + var8 = 623534741; + } + } + } + } + + public static void render(aru var0, float var1, float var2, float var3, float var4, float var5) { + long var6 = (-798896571197258458L | 798896571197258458L) + (-798896571197258458L & 798896571197258458L); + Object var8 = null; + int var9 = 0; + float var10 = 0.0F; + ge var11 = null; + float var12 = 0.0F; + float var13 = 0.0F; + asr var14 = null; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + oq var24 = null; + asu var25 = null; + asu var26 = null; + Object var28 = null; + String var29 = null; + int var30 = 0; + float var31 = 0.0F; + float var32 = 0.0F; + int var27 = 1191870944; + + while (true) { + switch (var27) { + case -1966212119: + var16 = var32; + var21 = var15 + var12 * 0.5F; + var22 = var16 + var13 * 0.5F; + var23 = 0.92F + 0.07999998F * FADE.value(); + var0.pushMatrix(); + var0.pose().translate(var21, var22); + var0.pose().scale(var23, var23); + var0.pose().translate(-var21, -var22); + var24 = oq.current(); + var25 = var24.color(nx.BACKGROUND).mulAlpha(var10 * 0.96F); + var26 = var24.color(nx.OUTLINE_STRONG).mulAlpha(var10); + ast.shadow(var0, var15, var16, var12, var13, RADIUS(), nz.FLOATING, var10); + drawArrow(var0, var14, var15, var16, var12, var13, var25); + var0.drawSurface(aso.TOOLTIP, var15, var16, var12, var13, RADIUS(), var25); + ast.border(var0, var15, var16, var12, var13, RADIUS(), var26); + gt.beginBatch(); + var0.drawText(var11, activeText, var15 + 6.0F, var16 + 4.0F, var24.color(nx.ON_SURFACE).mulAlpha(var10)); + gt.endBatch(); + var0.popMatrix(); + return; + case -1935656113: + activeText = requestedText; + activeX = requestedX; + activeY = requestedY; + activeWidth = requestedWidth; + activeHeight = requestedHeight; + activeAnchor = requestedAnchor; + FADE.animateTo(1.0F); + var27 = -713686381; + break; + case -1919030119: + return; + case -1771391080: + if (!requestedText.equals(hoverText)) { + var27 = 1227213075; + } else { + var27 = 1537765080; + } + break; + case -1603674808: + hoverText = var29; + hoverSince = var6; + var27 = 1537765080; + break; + case -1463714381: + var31 = var17; + var27 = 1449011052; + break; + case -1436174554: + if (activeText == null) { + var27 = -1919030119; + } else { + var27 = 541764121; + } + break; + case -1281586678: + if (var6 - hoverSince >= (4097277945891494003L ^ -4097277945891493003L) + ((4097277945891494003L & -4097277945891493003L) << 1)) { + var27 = 1074485215; + } else { + var27 = 589312893; + } + break; + case -1078412249: + var29 = null; + var27 = -1603674808; + break; + case -835449216: + if (FADE.value() <= 0.01F) { + var27 = -1935656113; + } else { + var27 = 607160869; + } + break; + case -713686381: + var10 = FADE.update() * var1; + if (!(var10 <= 0.01F)) { + var27 = -1436174554; + } else { + var27 = -1919030119; + } + break; + case -220910628: + if (requestedDelayed) { + var27 = -1281586678; + } else { + var27 = 1074485215; + } + break; + case 90725469: + var28 = requestedOwner; + var27 = 1235698370; + break; + case 316312422: + if (var8 != null) { + var27 = -1771391080; + } else { + var27 = 1537765080; + } + break; + case 364552050: + var28 = null; + var27 = 1235698370; + break; + case 526738171: + var31 = Math.min(Math.max(var15, var17), var18); + var27 = 1449011052; + break; + case 541764121: + var11 = asp.font(oe.CAPTION); + var12 = var11.width(activeText) + 12.0F; + var13 = var11.height() + 8.0F; + var14 = resolveAnchor(activeAnchor, var12, var13, var2, var3, var4, var5); + var15 = anchorX(var14, var12); + var16 = anchorY(var14, var13); + var17 = var2 + 4.0F; + var18 = var2 + var4 - 4.0F - var12; + var19 = var3 + 4.0F; + var20 = var3 + var5 - 4.0F - var13; + if (var18 < var17) { + var27 = -1463714381; + } else { + var27 = 526738171; + } + break; + case 589312893: + var30 = 0; + var27 = 676749087; + break; + case 607160869: + FADE.animateTo(0.0F); + var27 = -713686381; + break; + case 670488457: + if (!requestedText.equals(activeText)) { + var27 = -835449216; + } else { + var27 = -1935656113; + } + break; + case 676749087: + var9 = var30; + if (var9 != 0) { + var27 = 670488457; + } else { + var27 = 607160869; + } + break; + case 1074485215: + var30 = 1; + var27 = 676749087; + break; + case 1191870944: + default: + var6 = System.currentTimeMillis(); + if (suppressed) { + var27 = 364552050; + } else { + var27 = 90725469; + } + break; + case 1227213075: + hoverOwner = var8; + if (var8 != null) { + var27 = 1923303115; + } else { + var27 = -1078412249; + } + break; + case 1235698370: + var8 = var28; + if (var8 == hoverOwner) { + var27 = 316312422; + } else { + var27 = 1227213075; + } + break; + case 1449011052: + var15 = var31; + if (var20 < var19) { + var27 = 2025055800; + } else { + var27 = 1861441392; + } + break; + case 1537765080: + if (hoverOwner != null) { + var27 = -220910628; + } else { + var27 = 589312893; + } + break; + case 1861441392: + var32 = Math.min(Math.max(var16, var19), var20); + var27 = -1966212119; + break; + case 1923303115: + var29 = requestedText; + var27 = -1603674808; + break; + case 2025055800: + var32 = var19; + var27 = -1966212119; + } + } + } + + private static void drawArrow(aru var0, asr var1, float var2, float var3, float var4, float var5, asu var6) { + float var7; + float var8; + switch (var1) { + case RIGHT: + var7 = var2; + var8 = clampArrow(activeY + activeHeight * 0.5F, var3, var5); + break; + case LEFT: + var7 = var2 + var4; + var8 = clampArrow(activeY + activeHeight * 0.5F, var3, var5); + break; + case ABOVE: + default: + var7 = clampArrow(activeX + activeWidth * 0.5F, var2, var4); + var8 = var3 + var5; + break; + case BELOW: + var7 = clampArrow(activeX + activeWidth * 0.5F, var2, var4); + var8 = var3; + } + + var0.pushMatrix(); + var0.pose().translate(var7, var8); + var0.pose().rotate((float) (Math.PI / 4)); + var0.drawRect(-2.6F, -2.6F, 5.2F, 5.2F, var6); + var0.popMatrix(); + } + + private static float clampArrow(float var0, float var1, float var2) { + float var3 = 2.6F + RADIUS().topLeftRadius(); + return Math.min(Math.max(var0, var1 + var3), var1 + var2 - var3); + } + + private static asr resolveAnchor(asr var0, float var1, float var2, float var3, float var4, float var5, float var6) { + return switch (var0) { + case RIGHT -> activeX + activeWidth + 4.0F + var1 <= var3 + var5 - 4.0F ? asr.RIGHT : asr.LEFT; + case LEFT -> activeX - 4.0F - var1 >= var3 + 4.0F ? asr.LEFT : asr.RIGHT; + case ABOVE -> activeY - 4.0F - var2 >= var4 + 4.0F ? asr.ABOVE : asr.BELOW; + default -> activeY + activeHeight + 4.0F + var2 <= var4 + var6 - 4.0F ? asr.BELOW : asr.ABOVE; + }; + } + + private static float anchorX(asr var0, float var1) { + return switch (var0) { + case RIGHT -> activeX + activeWidth + 4.0F; + case LEFT -> activeX - 4.0F - var1; + default -> activeX + (activeWidth - var1) * 0.5F; + }; + } + + private static float anchorY(asr var0, float var1) { + return switch (var0) { + case ABOVE -> activeY - 4.0F - var1; + case BELOW -> activeY + activeHeight + 4.0F; + default -> activeY + (activeHeight - var1) * 0.5F; + }; + } +} diff --git a/src/main/java/defpackage/ast.java b/src/main/java/defpackage/ast.java new file mode 100644 index 0000000..7c7ff53 --- /dev/null +++ b/src/main/java/defpackage/ast.java @@ -0,0 +1,183 @@ +package defpackage; + +public final class ast { + private static final float SHADOW_MIN_ALPHA = 0.004F; + private static final float ALPHA_SCALE = 255.0F; + + private ast() { + } + + public static void draw(aru var0, aso var1, float var2, float var3, float var4, float var5, arq var6, nz var7, asu var8) { + draw(var0, var1, var2, var3, var4, var5, var6, var7, var8, 0.0F, 0.0F, 0.0F); + } + + public static void draw( + aru var0, aso var1, float var2, float var3, float var4, float var5, arq var6, nz var7, asu var8, float var9, float var10, float var11 + ) { + float var12 = 0.0F; + int var13 = -1082586596; + + while (true) { + switch (var13) { + case -1082586596: + default: + if (!(var4 <= 0.0F)) { + var13 = 228029259; + } else { + var13 = 1515882611; + } + break; + case 228029259: + if (var5 <= 0.0F) { + var13 = 1515882611; + } else { + var13 = 1577417221; + } + break; + case 1515882611: + return; + case 1577417221: + var12 = var8.getAlpha() / 255.0F; + shadow(var0, var2, var3, var4, var5, var6, var7, var12); + var0.drawSurface(var1, var2, var3, var4, var5, var6, var8); + overlay(var0, var2, var3, var4, var5, var6, var9, var10, var11); + return; + } + } + } + + public static void shadow(aru var0, float var1, float var2, float var3, float var4, arq var5, nz var6, float var7) { + oq var8 = null; + float var9 = 0.0F; + float var10 = 0.0F; + int var11 = -649033027; + + while (true) { + switch (var11) { + case -1936583497: + atb.drawShadow(var0.pose(), var1, var2, var3, var4, var10, var5, asu.BLACK.withAlpha(var9)); + return; + case -1775482968: + var10 = var8.shadowSoftness(var6); + if (var10 <= 0.0F) { + var11 = 1617973198; + } else { + var11 = -1936583497; + } + break; + case -1082139734: + var8 = oq.current(); + var9 = var8.shadowAlpha(var6) * var7; + if (var9 <= 0.004F) { + var11 = 1819353429; + } else { + var11 = -1775482968; + } + break; + case -649033027: + default: + if (var6 != nz.FLAT) { + var11 = 1309729297; + } else { + var11 = 2136647798; + } + break; + case 1309729297: + if (var7 <= 0.0F) { + var11 = 2136647798; + } else { + var11 = -1082139734; + } + break; + case 1617973198: + return; + case 1819353429: + return; + case 2136647798: + return; + } + } + } + + public static void overlay(aru var0, float var1, float var2, float var3, float var4, arq var5, float var6, float var7, float var8) { + asu var9 = null; + int var10 = 1577848616; + + while (true) { + switch (var10) { + case -2064704840: + var0.drawRoundedRect(var1, var2, var3, var4, var5, var9); + return; + case 232808274: + return; + case 1577848616: + } + + var9 = asm.overlay(var6, var7, var8); + if (var9 == null) { + var10 = 232808274; + } else { + var10 = -2064704840; + } + } + } + + public static void border(aru var0, float var1, float var2, float var3, float var4, arq var5, asu var6) { + var0.drawRoundedBorder(var1, var2, var3, var4, mx.current().borderThickness(), var5, var6); + } + + public static void divider(aru var0, float var1, float var2, float var3) { + divider(var0, var1, var2, var3, 1.0F); + } + + public static void divider(aru var0, float var1, float var2, float var3, float var4) { + float var5 = 0.0F; + int var6 = 387864497; + + while (true) { + switch (var6) { + case -1073009456: + return; + case -622015394: + if (var3 <= 0.0F) { + var6 = -1073009456; + } else { + var6 = 163017197; + } + break; + case 163017197: + var0.drawRect(var1, var2, var3, mx.current().borderThickness(), oq.current().color(nx.ON_SURFACE).withAlpha(var5)); + return; + case 387864497: + default: + var5 = mx.current().dividerAlpha() * var4; + if (!(var5 <= 0.0F)) { + var6 = -622015394; + } else { + var6 = -1073009456; + } + } + } + } + + public static void activeGlow(aru var0, float var1, float var2, float var3, float var4, arq var5, float var6) { + int var7 = -406378837; + + while (true) { + switch (var7) { + case -1650422997: + return; + case -1545361483: + atb.drawActiveGlow(var0.pose(), var1, var2, var3, var4, var5, var6, oq.current().color(nx.ACCENT)); + return; + case -406378837: + } + + if (var6 <= 0.0F) { + var7 = -1650422997; + } else { + var7 = -1545361483; + } + } + } +} diff --git a/src/main/java/defpackage/asu.java b/src/main/java/defpackage/asu.java new file mode 100644 index 0000000..5affe48 --- /dev/null +++ b/src/main/java/defpackage/asu.java @@ -0,0 +1,574 @@ +package defpackage; + +import java.awt.Color; +import java.nio.ByteBuffer; +import java.util.Objects; +import net.minecraft.util.Mth; + +public class asu { + public static final asu WHITE = new asu( + 255, + 255, + (-1579153820 ^ 1579154075) + ((-1579153820 & 1579154075) << 1) + ); + public static final asu BLACK = new asu( + 0, + 0, + (1842140680 ^ -1842140680) + ((1842140680 & -1842140680) << 1) + ); + public static final asu GREEN = new asu( + 0, + 255, + (-1141430069 ^ 1141430069) + ((-1141430069 & 1141430069) << 1) + ); + public static final asu RED = new asu( + 255, + 0, + (1730950976 ^ -1730950976) + ((1730950976 & -1730950976) << 1) + ); + public static final asu BLUE = new asu( + 0, + 0, + (763776268 ^ -763776013) + ((763776268 & -763776013) << 1) + ); + public static final asu YELLOW = new asu( + 255, + 255, + (971133690 ^ -971133690) + ((971133690 & -971133690) << 1) + ); + public static final asu GRAY = new asu( + 88, + 87, + (1225847661 | -1225847568) + (1225847661 & -1225847568) + ); + public static final asu TRANSPARENT = new asu( + 0, + 0, + 0, + (-58966641 | 58966641) + (-58966641 & 58966641) + ); + private transient float[] hsbValues; + private final int red; + private final int green; + private final int blue; + private final int alpha; + private static final ByteBuffer PIXEL_BUFFER = ByteBuffer.allocateDirect((1392286939 | -1392286935) + (1392286939 & -1392286935)); + + public asu(int var1) { + this(asv.red(var1), asv.green(var1), asv.blue(var1), asv.alpha(var1)); + } + + public asu(Color var1) { + this(var1.getRed(), var1.getGreen(), var1.getBlue(), var1.getAlpha()); + } + + public asu(int var1, int var2, int var3) { + this(var1, var2, var3, (-1049770532 | 1049770787) + (-1049770532 & 1049770787)); + } + + public asu(int var1, int var2, int var3, int var4) { + var1 = Mth.clamp(var1, 0, (-1384387251 | 1384387506) + (-1384387251 & 1384387506)); + var2 = Mth.clamp(var2, 0, (1463988246 ^ -1463987991) + ((1463988246 & -1463987991) << 1)); + var3 = Mth.clamp(var3, 0, (-109871619 ^ 109871874) + ((-109871619 & 109871874) << 1)); + var4 = Mth.clamp(var4, 0, (-1564557396 ^ 1564557651) + ((-1564557396 & 1564557651) << 1)); + this.red = var1; + this.green = var2; + this.blue = var3; + this.alpha = var4; + } + + public int getRGB() { + int var1 = Math.round(this.clamp(this.alpha)); + int var2 = Math.round(this.clamp(this.red)); + int var3 = Math.round(this.clamp(this.green)); + int var4 = Math.round(this.clamp(this.blue)); + return (var1 & (-1931478345 ^ 1931478600) + ((-1931478345 & 1931478600) << 1)) << (1374555277 | -1374555253) + (1374555277 & -1374555253) + | (var2 & (1619451834 ^ -1619451579) + ((1619451834 & -1619451579) << 1)) << (1031590367 ^ -1031590351) + ((1031590367 & -1031590351) << 1) + | (var3 & (-123124768 ^ 123125023) + ((-123124768 & 123125023) << 1)) << (726536482 ^ -726536474) + ((726536482 & -726536474) << 1) + | var4 & 255; + } + + private int clamp(float var1) { + return (int)Math.max(0.0F, Math.min(255.0F, var1)); + } + + public static asu fromHex(String var0) { + String var1 = null; + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 0; + String var7 = null; + int var8 = 0; + int var6 = -1833546169; + + while (true) { + switch (var6) { + case -1833546169: + default: + if (var0.startsWith("#")) { + var6 = 641202720; + } else { + var6 = -1449502574; + } + break; + case -1819252255: + var8 = 255; + var6 = -125041060; + break; + case -1449502574: + var7 = var0; + var6 = -361968082; + break; + case -1237253703: + var8 = Integer.parseInt( + var1.substring(6, (-1007945631 | 1007945639) + (-1007945631 & 1007945639)), + (1130214756 ^ -1130214740) + ((1130214756 & -1130214740) << 1) + ); + var6 = -125041060; + break; + case -857863508: + throw new IllegalArgumentException( + "Hex color must be in the format #RRGGBB or #RRGGBBAA" + ); + case -361968082: + var1 = var7; + if (var1.length() != (1660317700 ^ -1660317694) + ((1660317700 & -1660317694) << 1)) { + var6 = -55006421; + } else { + var6 = 359042472; + } + break; + case -125041060: + var5 = var8; + return new asu(var2, var3, var4, var5); + case -55006421: + if (var1.length() != (-912317060 ^ 912317068) + ((-912317060 & 912317068) << 1)) { + var6 = -857863508; + } else { + var6 = 359042472; + } + break; + case 359042472: + var2 = Integer.parseInt( + var1.substring(0, (-438819070 | 438819072) + (-438819070 & 438819072)), + (2120101677 | -2120101661) + (2120101677 & -2120101661) + ); + var3 = Integer.parseInt( + var1.substring(2, (2042689993 | -2042689989) + (2042689993 & -2042689989)), + (-1653909123 | 1653909139) + (-1653909123 & 1653909139) + ); + var4 = Integer.parseInt( + var1.substring(4, (1919210599 | -1919210593) + (1919210599 & -1919210593)), + (36680916 ^ -36680900) + ((36680916 & -36680900) << 1) + ); + if (var1.length() == (-151674865 | 151674873) + (-151674865 & 151674873)) { + var6 = -1237253703; + } else { + var6 = -1819252255; + } + break; + case 641202720: + var7 = var0.substring((-1417345976 | 1417345977) + (-1417345976 & 1417345977)); + var6 = -361968082; + } + } + } + + public static asu lerp(asu var0, asu var1, float var2) { + float var3 = Math.max(0.0F, Math.min(1.0F, var2)); + int var4 = (int)(var0.getRed() + (var1.getRed() - var0.getRed()) * var3); + int var5 = (int)(var0.getGreen() + (var1.getGreen() - var0.getGreen()) * var3); + int var6 = (int)(var0.getBlue() + (var1.getBlue() - var0.getBlue()) * var3); + int var7 = (int)(var0.getAlpha() + (var1.getAlpha() - var0.getAlpha()) * var3); + return new asu(var4, var5, var6, var7); + } + + public static asu fromInt(int var0) { + int var1 = var0 >> 24; + int var2 = var0 >> 16; + int var3 = var0 >> 8; + int var4 = var0 & 255; + return new asu(var2, var3, var4, var1); + } + + public asu withAlpha(float var1) { + return new asu(this.red, this.green, this.blue, this.clamp((int)(255.0F * var1))); + } + + public asu withAlpha(int var1) { + return new asu(this.red, this.green, this.blue, var1); + } + + public asu mulAlpha(float var1) { + return this.withAlpha((int)(this.alpha * var1)); + } + + public static int getRGBWithAlpha(int var0, float var1) { + int var2 = var0 >> 16; + int var3 = var0 >> 8; + int var4 = var0 & 255; + int var5 = Math.round((var0 >> (-1318203931 | 1318203955) + (-1318203931 & 1318203955) & (-159031959 | 159032214) + (-159031959 & 159032214)) * var1); + return (var5 & (-1930617778 ^ 1930618033) + ((-1930617778 & 1930618033) << 1)) << (1346725788 | -1346725764) + (1346725788 & -1346725764) + | (var2 & (-684874136 | 684874391) + (-684874136 & 684874391)) << (-856268476 | 856268492) + (-856268476 & 856268492) + | (var3 & (1605586974 ^ -1605586719) + ((1605586974 & -1605586719) << 1)) << (78222120 ^ -78222112) + ((78222120 & -78222112) << 1) + | var4 & 255; + } + + public int getRGBWithAlpha(float var1) { + int var2 = Math.round(this.clamp(this.alpha * var1)); + int var3 = Math.round(this.clamp(this.red)); + int var4 = Math.round(this.clamp(this.green)); + int var5 = Math.round(this.clamp(this.blue)); + return (var2 & (401960805 ^ -401960550) + ((401960805 & -401960550) << 1)) << (271620628 | -271620604) + (271620628 & -271620604) + | (var3 & (33390589 | -33390334) + (33390589 & -33390334)) << (-207645175 | 207645191) + (-207645175 & 207645191) + | (var4 & (102962495 ^ -102962240) + ((102962495 & -102962240) << 1)) << (-2062981965 ^ 2062981973) + ((-2062981965 & 2062981973) << 1) + | var5 & 255; + } + + public static int mixRGB(int var0, int var1, float var2, float var3) { + var2 = Math.min(1.0F, Math.max(0.0F, var2)); + int var4 = var0 >> 24; + int var5 = var0 >> 16; + int var6 = var0 >> 8; + int var7 = var0 & 255; + int var8 = var1 >> 24; + int var9 = var1 >> 16; + int var10 = var1 >> 8; + int var11 = var1 & 255; + int var12 = Math.round(var4 + (var8 - var4) * var2); + int var13 = Math.round(var5 + (var9 - var5) * var2); + int var14 = Math.round(var6 + (var10 - var6) * var2); + int var15 = Math.round(var7 + (var11 - var7) * var2); + var12 = Math.round(var12 * var3); + return (var12 & (-1994940656 | 1994940911) + (-1994940656 & 1994940911)) << (-245033483 | 245033507) + (-245033483 & 245033507) + | (var13 & (299738264 | -299738009) + (299738264 & -299738009)) << (-1833656105 | 1833656121) + (-1833656105 & 1833656121) + | (var14 & (-2061588136 | 2061588391) + (-2061588136 & 2061588391)) << (-1337034090 ^ 1337034098) + ((-1337034090 & 1337034098) << 1) + | var15 & 255; + } + + public static int mixRGB(asu var0, asu var1, float var2, float var3) { + var2 = Math.min(1.0F, Math.max(0.0F, var2)); + int var4 = (int)aqj.interpolate(var0.getRed(), var1.getRed(), var2); + int var5 = (int)aqj.interpolate(var0.getGreen(), var1.getGreen(), var2); + int var6 = (int)aqj.interpolate(var0.getBlue(), var1.getBlue(), var2); + int var7 = (int)aqj.interpolate(var0.getAlpha(), var1.getAlpha(), var2); + var7 = (int)(var7 * var3); + return (var7 & (1005734292 ^ -1005734037) + ((1005734292 & -1005734037) << 1)) << (-2048791662 | 2048791686) + (-2048791662 & 2048791686) + | (var4 & (-77314741 ^ 77314996) + ((-77314741 & 77314996) << 1)) << (707228698 ^ -707228682) + ((707228698 & -707228682) << 1) + | (var5 & (-955659457 | 955659712) + (-955659457 & 955659712)) << (648154232 | -648154224) + (648154232 & -648154224) + | var6 & 255; + } + + public asu mix(asu var1, float var2) { + var2 = Math.min(1.0F, Math.max(0.0F, var2)); + return new asu( + (int)aqj.interpolate(this.getRed(), var1.getRed(), var2), + (int)aqj.interpolate(this.getGreen(), var1.getGreen(), var2), + (int)aqj.interpolate(this.getBlue(), var1.getBlue(), var2), + (int)aqj.interpolate(this.getAlpha(), var1.getAlpha(), var2) + ); + } + + public asu darker(float var1) { + var1 = Mth.clamp(var1, 0.0F, 1.0F); + return new asu((int)(this.red * (1.0F - var1)), (int)(this.green * (1.0F - var1)), (int)(this.blue * (1.0F - var1)), this.alpha); + } + + public static asu fromHSB(float var0, float var1, float var2) { + if (var1 == 0.0F) { + int var11 = (int)(var2 * 255.0F + 0.5F); + return new asu(var11, var11, var11); + } + + float var3 = (var0 - (float)Math.floor(var0)) * 6.0F; + float var4 = var3 - (float)Math.floor(var3); + float var5 = var2 * (1.0F - var1); + float var6 = var2 * (1.0F - var1 * var4); + float var7 = var2 * (1.0F - var1 * (1.0F - var4)); + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + switch ((int)var3) { + case 0: + var8 = var2; + var9 = var7; + var10 = var5; + break; + case 1: + var8 = var6; + var9 = var2; + var10 = var5; + break; + case 2: + var8 = var5; + var9 = var2; + var10 = var7; + break; + case 3: + var8 = var5; + var9 = var6; + var10 = var2; + break; + case 4: + var8 = var7; + var9 = var5; + var10 = var2; + break; + case 5: + var8 = var2; + var9 = var5; + var10 = var6; + } + + return new asu((int)(var8 * 255.0F), (int)(var9 * 255.0F), (int)(var10 * 255.0F)); + } + + public float getHue() { + return this.getHSBValues()[0]; + } + + public float getSaturation() { + return this.getHSBValues()[2]; + } + + public float getBrightness() { + return this.getHSBValues()[1]; + } + + private float[] getHSBValues() { + int var1 = -454371424; + + while (true) { + switch (var1) { + case -920085856: + this.hsbValues = this.calculateHSB(); + var1 = -333893353; + break; + case -454371424: + default: + if (this.hsbValues == null) { + var1 = -920085856; + } else { + var1 = -333893353; + } + break; + case -333893353: + return this.hsbValues; + } + } + } + + private float[] calculateHSB() { + float var1 = 0.0F; + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var11 = 0.0F; + int var10 = 129843042; + + while (true) { + switch (var10) { + case -1783668484: + var11 = 0.0F; + var10 = 988380264; + break; + case -1398654925: + var7++; + var10 = 288458505; + break; + case -1080897193: + var7 = (var2 - var3) / var6; + var10 = 2142880479; + break; + case -835000334: + var7 = (var1 - var2) / var6 + 4.0F; + var10 = 2142880479; + break; + case -121960361: + var11 = var6 / var4; + var10 = 988380264; + break; + case 129843042: + default: + var1 = this.red / 255.0F; + var2 = this.green / 255.0F; + var3 = this.blue / 255.0F; + var4 = Math.max(var1, Math.max(var2, var3)); + var5 = Math.min(var1, Math.min(var2, var3)); + var6 = var4 - var5; + var7 = 0.0F; + if (var6 != 0.0F) { + var10 = 254164267; + } else { + var10 = 288458505; + } + break; + case 254164267: + if (var4 == var1) { + var10 = -1080897193; + } else { + var10 = 1220934676; + } + break; + case 288458505: + if (var4 == 0.0F) { + var10 = -1783668484; + } else { + var10 = -121960361; + } + break; + case 988380264: + var8 = var11; + var9 = var4; + float[] var10000 = new float[3]; + var10000[0] = var7; + var10000[1] = var8; + var10000[2] = var9; + return var10000; + case 1220934676: + if (var4 == var2) { + var10 = 1810820352; + } else { + var10 = -835000334; + } + break; + case 1810820352: + var7 = (var3 - var1) / var6 + 2.0F; + var10 = 2142880479; + break; + case 2142880479: + var7 /= 6.0F; + if (var7 < 0.0F) { + var10 = -1398654925; + } else { + var10 = 288458505; + } + } + } + } + + public asu brighter(float var1) { + var1 = Mth.clamp(var1, 0.0F, 1.0F); + return new asu( + (int)(this.red + (255.0F - this.red) * var1), + (int)(this.green + (255.0F - this.green) * var1), + (int)(this.blue + (255.0F - this.blue) * var1), + this.alpha + ); + } + + @Override + public boolean equals(Object var1) { + asu var2 = null; + int var4 = 0; + int var3 = -224925197; + + while (true) { + switch (var3) { + case -1868595906: + return (boolean)(((0)) != 0); + case -1537042448: + if (Float.compare(this.blue, var2.blue) == 0) { + var3 = -998433207; + } else { + var3 = -928058977; + } + break; + case -998433207: + if (Float.compare(this.alpha, var2.alpha) == 0) { + var3 = 1279059351; + } else { + var3 = -928058977; + } + break; + case -928058977: + var4 = 0; + var3 = 1914136258; + break; + case -544248626: + var2 = (asu)var1; + if (Float.compare(this.red, var2.red) == 0) { + var3 = 634349054; + } else { + var3 = -928058977; + } + break; + case -224925197: + default: + if (this == var1) { + var3 = 1253982106; + } else { + var3 = 1432033049; + } + break; + case 634349054: + if (Float.compare(this.green, var2.green) == 0) { + var3 = -1537042448; + } else { + var3 = -928058977; + } + break; + case 1253982106: + return (boolean)(((1)) != 0); + case 1279059351: + var4 = 1; + var3 = 1914136258; + break; + case 1432033049: + if (var1 != null) { + var3 = 1794426624; + } else { + var3 = -1868595906; + } + break; + case 1794426624: + if (this.getClass() != var1.getClass()) { + var3 = -1868595906; + } else { + var3 = -544248626; + } + break; + case 1914136258: + return (boolean)((var4) != 0); + } + } + } + + public float difference(asu var1) { + return Math.abs(this.getHue() - var1.getHue()) + + Math.abs(this.getBrightness() - var1.getBrightness()) + + Math.abs(this.getSaturation() - var1.getSaturation()); + } + + @Override + public int hashCode() { + Object[] var10000 = new Object[4]; + var10000[0] = this.red; + var10000[1] = this.green; + var10000[2] = this.blue; + var10000[3] = this.alpha; + return Objects.hash(var10000); + } + + public int getRed() { + return this.red; + } + + public int getGreen() { + return this.green; + } + + public int getBlue() { + return this.blue; + } + + public int getAlpha() { + return this.alpha; + } +} diff --git a/src/main/java/defpackage/asv.java b/src/main/java/defpackage/asv.java new file mode 100644 index 0000000..5539fe6 --- /dev/null +++ b/src/main/java/defpackage/asv.java @@ -0,0 +1,265 @@ +package defpackage; + +import java.awt.Color; +import java.util.regex.Pattern; +import net.minecraft.util.Mth; + +public final class asv { + public static final int LIGHT_RED = getColor( + 255, + 85, + 85, + (-121580715 | 121580970) + (-121580715 & 121580970) + ); + private static final Pattern FORMATTING_CODE_PATTERN = Pattern.compile( + "(?i)§[0-9a-f-or]" + ); + + public static int red(int var0) { + return var0 >> 16; + } + + public static int green(int var0) { + return var0 >> 8; + } + + public static int blue(int var0) { + return var0 & 255; + } + + public static int alpha(int var0) { + return var0 >> 24; + } + + public static float redf(int var0) { + return red(var0) / 255.0F; + } + + public static float greenf(int var0) { + return green(var0) / 255.0F; + } + + public static float bluef(int var0) { + return blue(var0) / 255.0F; + } + + public static float alphaf(int var0) { + return alpha(var0) / 255.0F; + } + + public static int[] getRGBA(int var0) { + int[] var10000 = new int[4]; + var10000[0] = red(var0); + var10000[1] = green(var0); + var10000[2] = blue(var0); + var10000[3] = alpha(var0); + return var10000; + } + + public static int[] getRGB(int var0) { + int[] var10000 = new int[3]; + var10000[0] = red(var0); + var10000[1] = green(var0); + var10000[2] = blue(var0); + return var10000; + } + + public static float[] getRGBAf(int var0) { + float[] var10000 = new float[4]; + var10000[0] = redf(var0); + var10000[1] = greenf(var0); + var10000[2] = bluef(var0); + var10000[3] = alphaf(var0); + return var10000; + } + + public static float[] getRGBf(int var0) { + float[] var10000 = new float[3]; + var10000[0] = redf(var0); + var10000[1] = greenf(var0); + var10000[2] = bluef(var0); + return var10000; + } + + public static boolean isValidHexColor(String var0) { + int var2 = 0; + int var1 = -744285620; + + while (true) { + switch (var1) { + case -1773622723: + if (var0.matches("(?i)^[a-f0-9]{6}$")) { + var1 = 557165560; + } else { + var1 = -1470721005; + } + break; + case -1470721005: + var2 = 0; + var1 = 2065852163; + break; + case -744285620: + default: + if (var0 != null) { + var1 = -1773622723; + } else { + var1 = -1470721005; + } + break; + case 557165560: + var2 = 1; + var1 = 2065852163; + break; + case 2065852163: + return (boolean)((var2) != 0); + } + } + } + + public static asu hexToRgb(String var0, asu var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = -2114259913; + + while (true) { + switch (var6) { + case -2114259913: + default: + if (!isValidHexColor(var0)) { + var6 = -2029312717; + } else { + var6 = -1782636761; + } + break; + case -2029312717: + return var1; + case -1782636761: + var2 = Integer.parseInt(var0, (-1794596454 | 1794596470) + (-1794596454 & 1794596470)); + var3 = var2 >> 16; + var4 = var2 >> 8; + var5 = var2 & 255; + return new asu(new Color(var3, var4, var5)); + } + } + } + + public static String colorToHex(asu var0) { + int var1 = var0.getRGB(); + String var10000 = "%06X"; + Object[] var10001 = new Object[1]; + var10001[0] = var1 & 16777215; + return String.format(var10000, var10001); + } + + public static asu lerp(int var0, int var1, asu var2, asu var3) { + int var4 = 0; + int var6 = 0; + int var5 = -413375215; + + while (true) { + switch (var5) { + case -629490415: + var6 = var4; + var5 = -23874096; + break; + case -413375215: + default: + var4 = (int)( + (System.currentTimeMillis() / var0 + var1) % ((99207530454772321L | -99207530454771961L) + (99207530454772321L & -99207530454771961L)) + ); + if (var4 >= (641483667 ^ -641483487) + ((641483667 & -641483487) << 1)) { + var5 = 1189636218; + } else { + var5 = -629490415; + } + break; + case -23874096: + var4 = var6 * (2); + return interpolate(var2, var3, var4 / 360.0F); + case 1189636218: + var6 = (-1677833295 | 1677833655) + (-1677833295 & 1677833655) - var4; + var5 = -23874096; + } + } + } + + public static asu gradient(int var0, int var1, asu... var2) { + int var3 = (int)( + (System.currentTimeMillis() / var0 + var1) % ((5949708790120060829L ^ -5949708790120060469L) + ((5949708790120060829L & -5949708790120060469L) << 1)) + ); + var3 = (var3 > 180? (782077246 | -782076886) + (782077246 & -782076886) - var3 : var3) + + 180; + int var4 = (int)(var3 / 360.0F * var2.length); + if (var4 == var2.length) { + var4--; + } + + asu var5 = var2[var4]; + asu var6 = var2[var4 == var2.length - 1? 0: var4 + 1]; + return interpolate(var5, var6, var3 / 360.0F * var2.length - var4); + } + + public static asu interpolate(asu var0, asu var1, float var2) { + return var0.mix(var1, var2); + } + + public static String removeFormatting(String var0) { + String var2 = null; + int var1 = 1238855554; + + while (true) { + switch (var1) { + case -780174333: + return var2; + case -242216746: + var2 = null; + var1 = -780174333; + break; + case 1238855554: + default: + if (var0 != null) { + var1 = 1756761694; + } else { + var1 = -242216746; + } + break; + case 1632427836: + var2 = FORMATTING_CODE_PATTERN.matcher(var0).replaceAll(""); + var1 = -780174333; + break; + case 1756761694: + if (var0.isEmpty()) { + var1 = -242216746; + } else { + var1 = 1632427836; + } + } + } + } + + public static int multAlpha(int var0, float var1) { + return getColor(red(var0), green(var0), blue(var0), Math.round(alpha(var0) * var1)); + } + + private static int getColor(int var0, int var1, int var2, int var3) { + return Mth.clamp(var3, 0, (-229095389 ^ 229095644) + ((-229095389 & 229095644) << 1)) + << (2112135340 ^ -2112135316) + ((2112135340 & -2112135316) << 1) + | Mth.clamp(var0, 0, (131095801 ^ -131095546) + ((131095801 & -131095546) << 1)) + << (-821296880 ^ 821296896) + ((-821296880 & 821296896) << 1) + | Mth.clamp(var1, 0, (667657326 | -667657071) + (667657326 & -667657071)) + << (-283933324 | 283933332) + (-283933324 & 283933332) + | Mth.clamp(var2, 0, (2094104727 | -2094104472) + (2094104727 & -2094104472)); + } + + public static int fade(int var0) { + return bz.getInstance().getThemeManager().getClientColor(var0).getRGB(); + } + + private asv() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/asw.java b/src/main/java/defpackage/asw.java new file mode 100644 index 0000000..f0eae73 --- /dev/null +++ b/src/main/java/defpackage/asw.java @@ -0,0 +1,204 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.pipeline.TextureTarget; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.textures.GpuTextureView; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import org.joml.Matrix4f; +import org.joml.Vector4f; +import org.joml.Vector4fc; + +public final class asw implements aqh { + private static final int SOURCE_DIVISOR = 2; + private static final int QUARTER_DIVISOR = 4; + private static final int EIGHTH_DIVISOR = 8; + private static final Vector4fc CLEAR_COLOR = new Vector4f(0.0F, 0.0F, 0.0F, 0.0F); + private static final float PASSTHROUGH_SIZE = 8192.0F; + private static final float ALPHA_SCALE = 255.0F; + private static final int ALPHA_SHIFT = 24; + private static final int WHITE_RGB = 16777215; + private final String label; + private final Matrix4f identity = new Matrix4f(); + private ati downProgram; + private ati upProgram; + private atd compositeProgram; + private TextureTarget source; + private TextureTarget quarter; + private TextureTarget eighth; + private TextureTarget quarterUp; + private TextureTarget result; + private boolean capturing; + + public asw(String var1) { + this.label = var1; + } + + public void beginCapture() { + Object var1 = null; + int var2 = 0; + int var3 = 0; + int var4 = -1207700576; + + while (true) { + switch (var4) { + case -1207700576: + default: + if (this.downProgram == null) { + var4 = 1105059184; + } else { + var4 = -870879598; + } + break; + case -870879598: + var1 = mc.gameRenderer.mainRenderTarget(); + var2 = Math.max( + 1, + ((RenderTarget)var1).width / ((1958189658 | -1958189656) + (1958189658 & -1958189656)) + ); + var3 = Math.max( + 1, + ((RenderTarget)var1).height / ((-1559334799 ^ 1559334801) + ((-1559334799 & 1559334801) << 1)) + ); + this.source = this.ensure(this.source, "_source", var2, var3); + this.quarter = this.ensure( + this.quarter, + "_quarter", + Math.max( + 1, + ((RenderTarget)var1).width / ((1491729216 | -1491729212) + (1491729216 & -1491729212)) + ), + Math.max( + 1, + ((RenderTarget)var1).height / ((-1852642134 | 1852642138) + (-1852642134 & 1852642138)) + ) + ); + this.eighth = this.ensure( + this.eighth, + "_eighth", + Math.max( + 1, + ((RenderTarget)var1).width / ((-2119833395 ^ 2119833403) + ((-2119833395 & 2119833403) << 1)) + ), + Math.max( + 1, ((RenderTarget)var1).height / ((829961087 | -829961079) + (829961087 & -829961079)) + ) + ); + this.quarterUp = this.ensure( + this.quarterUp, "_quarter_up", this.quarter.width, this.quarter.height + ); + this.result = this.ensure(this.result, "_result", var2, var3); + atf.flush(); + RenderSystem.getDevice().createCommandEncoder().clearColorTexture(this.source.getColorTexture(), CLEAR_COLOR); + atd.setWorldTarget(this.source.getColorTextureView(), null); + this.capturing = (boolean)(((1)) != 0); + return; + case 1105059184: + this.downProgram = new ati(bz.id("kawase_down/data")); + this.upProgram = new ati(bz.id("kawase_up/data")); + this.compositeProgram = new atd( + bz.id("texture/data"), + DefaultVertexFormat.POSITION_TEX_COLOR, + BlendFunction.ADDITIVE, + (boolean)((((828141989 ^ -828141989) + ((828141989 & -828141989) << 1)) + ) != 0)); + var4 = -870879598; + } + } + } + + public void endCaptureAndComposite(float var1, float var2) { + if (this.capturing) { + this.capturing = (boolean)(((0)) != 0); + atf.flush(); + atd.clearWorldTarget(); + atb.beginGui(); + + try { + this.blit(this.downProgram, this.source.getColorTextureView(), this.quarter, this.source.width, this.source.height, var1); + this.blit(this.downProgram, this.quarter.getColorTextureView(), this.eighth, this.quarter.width, this.quarter.height, var1); + this.blit(this.upProgram, this.eighth.getColorTextureView(), this.quarterUp, this.eighth.width, this.eighth.height, var1); + this.blit(this.upProgram, this.quarterUp.getColorTextureView(), this.result, this.quarterUp.width, this.quarterUp.height, var1); + } finally { + atd.clearWorldTarget(); + atb.endGui(); + } + + this.compositeProgram.use(); + arj.setCurrentLayer(arj.guiTexturedNoTexture()); + this.compositeProgram.setSize(8192.0F, 8192.0F); + this.compositeProgram.setRadius(0.0F, 0.0F, 0.0F, 0.0F); + this.compositeProgram.setSmoothness(0.8F); + atd.bindTexture(this.result.getColorTextureView(), (boolean)((((934277638 | -934277637) + (934277638 & -934277637))) != 0)); + int var3 = Math.round(Math.min(1.0F, Math.max(0.0F, var2)) * 255.0F); + this.quad(var3 << (-30208043 | 30208067) + (-30208043 & 30208067) | (-1956468066 ^ 1973245281) + ((-1956468066 & 1973245281) << 1)); + atd.clearBoundTexture(); + } + } + + private void blit(ati var1, GpuTextureView var2, TextureTarget var3, int var4, int var5, float var6) { + atd.setWorldTarget(var3.getColorTextureView(), null); + var1.use(); + arj.setCurrentLayer(arj.guiTexturedNoTexture()); + atd.bindTexture(var2, (boolean)((((632955650 ^ -632955649) + ((632955650 & -632955649) << 1))) != 0)); + var1.updateUniforms(var6, 1.0F / var4, 1.0F / var5); + this.quad((2006874116 | -2006874117) + (2006874116 & -2006874117)); + atd.clearBoundTexture(); + atd.clearWorldTarget(); + } + + private void quad(int var1) { + float var2 = mc.getWindow().getGuiScaledWidth(); + float var3 = mc.getWindow().getGuiScaledHeight(); + BufferBuilder var4 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var4.addVertex(this.identity, 0.0F, var3, 0.0F).setUv(0.0F, 0.0F).setColor(var1); + var4.addVertex(this.identity, var2, var3, 0.0F).setUv(1.0F, 0.0F).setColor(var1); + var4.addVertex(this.identity, var2, 0.0F, 0.0F).setUv(1.0F, 1.0F).setColor(var1); + var4.addVertex(this.identity, 0.0F, 0.0F, 0.0F).setUv(0.0F, 1.0F).setColor(var1); + arj.drawCurrent(var4); + } + + private TextureTarget ensure(TextureTarget var1, String var2, int var3, int var4) { + int var5 = 983119426; + + while (true) { + switch (var5) { + case -2074215651: + if (var1.height != var4) { + var5 = -38345248; + } else { + var5 = -1774267073; + } + break; + case -1774267073: + return var1; + case -581757669: + return new TextureTarget( + this.label + var2, var3, var4, (boolean)(((0)) != 0), GpuFormat.RGBA8_UNORM + ); + case -38345248: + var1.resize(var3, var4); + var5 = -1774267073; + break; + case 983119426: + default: + if (var1 == null) { + var5 = -581757669; + } else { + var5 = 1039961610; + } + break; + case 1039961610: + if (var1.width == var3) { + var5 = -2074215651; + } else { + var5 = -38345248; + } + } + } + } +} diff --git a/src/main/java/defpackage/asx.java b/src/main/java/defpackage/asx.java new file mode 100644 index 0000000..c8ac1fa --- /dev/null +++ b/src/main/java/defpackage/asx.java @@ -0,0 +1,278 @@ +package defpackage; + +import com.google.common.base.Supplier; +import com.google.common.base.Suppliers; +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.pipeline.TextureTarget; +import com.mojang.blaze3d.textures.GpuTextureView; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import org.joml.Matrix4f; + +public class asx implements aqh { + public static final Supplier CACHE = Suppliers.memoize( + () -> new asz((boolean)(((0)) != 0)).setLinear() + ); + public static final Supplier BUFFER = Suppliers.memoize(() -> new asz((boolean)(((0)) != 0)).setLinear()); + private static final float BLUR_EPSILON = 0.003F; + private static final float DEFAULT_KAWASE_OFFSET = 3.0F; + private static final int HALF_DIVISOR = 2; + private static final int QUARTER_DIVISOR = 4; + private static final int QUAD_COLOR = -1; + private static final float SCENE_DOWNSAMPLE_OFFSET = 1.0F; + private static ati kawaseDownProgram; + private static ati kawaseUpProgram; + private static TextureTarget halfTarget; + private static TextureTarget quarterTarget; + private static TextureTarget sceneHalfTarget; + private static float kawaseOffset = 3.0F; + private static boolean resultAvailable; + + public void initShaders() { + kawaseDownProgram = new ati(bz.id("kawase_down/data")); + kawaseUpProgram = new ati(bz.id("kawase_up/data")); + } + + public void draw() { + resultAvailable = (boolean)(((0)) != 0); + if (isBlurRequested()) { + RenderTarget var1 = mc.gameRenderer.mainRenderTarget(); + int var2 = Math.max(1, var1.width / ((-524937626 | 524937628) + (-524937626 & 524937628))); + int var3 = Math.max( + 1, var1.height / ((755079840 ^ -755079838) + ((755079840 & -755079838) << 1)) + ); + int var4 = Math.max( + 1, var1.width / ((-558249753 ^ 558249757) + ((-558249753 & 558249757) << 1)) + ); + int var5 = Math.max( + 1, var1.height / ((-418484357 ^ 418484361) + ((-418484357 & 418484361) << 1)) + ); + if (kawaseDownProgram != null && kawaseUpProgram != null) { + atf.flush(); + halfTarget = ensureTarget(halfTarget, "evo_blur_half", var2, var3); + quarterTarget = ensureTarget(quarterTarget, "evo_blur_quarter", var4, var5); + atb.beginGui(); + + try { + this.blitPass(kawaseDownProgram, var1.getColorTextureView(), halfTarget, var1.width, var1.height); + this.blitPass(kawaseDownProgram, halfTarget.getColorTextureView(), quarterTarget, var2, var3); + resultAvailable = (boolean)(((1)) != 0); + } finally { + atd.clearWorldTarget(); + atb.endGui(); + } + } + } + } + + public GpuTextureView captureHalfScene() { + if (kawaseDownProgram == null) { + return null; + } + + RenderTarget var1 = mc.gameRenderer.mainRenderTarget(); + int var2 = Math.max(1, var1.width / ((-61135208 | 61135210) + (-61135208 & 61135210))); + int var3 = Math.max( + 1, var1.height / ((-1956333911 ^ 1956333913) + ((-1956333911 & 1956333913) << 1)) + ); + sceneHalfTarget = ensureTarget( + sceneHalfTarget, "evo_scene_half", var2, var3 + ); + atb.beginGui(); + + try { + this.blitPass(kawaseDownProgram, var1.getColorTextureView(), sceneHalfTarget, var1.width, var1.height, 1.0F); + } finally { + atd.clearWorldTarget(); + atb.endGui(); + } + + return sceneHalfTarget.getColorTextureView(); + } + + private void blitPass(ati var1, GpuTextureView var2, TextureTarget var3, int var4, int var5) { + this.blitPass(var1, var2, var3, var4, var5, kawaseOffset); + } + + private void blitPass(ati var1, GpuTextureView var2, TextureTarget var3, int var4, int var5, float var6) { + atd.setWorldTarget(var3.getColorTextureView(), null); + var1.use(); + arj.setCurrentLayer(arj.guiTexturedNoTexture()); + atd.bindTexture(var2, (boolean)((((858660749 | -858660748) + (858660749 & -858660748))) != 0)); + var1.updateUniforms(var6, 1.0F / var4, 1.0F / var5); + this.drawFullscreenQuad(); + atd.clearBoundTexture(); + atd.clearWorldTarget(); + } + + private void drawFullscreenQuad() { + float var1 = mc.getWindow().getGuiScaledWidth(); + float var2 = mc.getWindow().getGuiScaledHeight(); + Matrix4f var3 = new Matrix4f(); + BufferBuilder var4 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var4.addVertex(var3, 0.0F, var2, 0.0F).setUv(0.0F, 0.0F).setColor((-2014866385 | 2014866384) + (-2014866385 & 2014866384)); + var4.addVertex(var3, var1, var2, 0.0F).setUv(1.0F, 0.0F).setColor((-2066673232 ^ 2066673231) + ((-2066673232 & 2066673231) << 1)); + var4.addVertex(var3, var1, 0.0F, 0.0F).setUv(1.0F, 1.0F).setColor((-419659311 | 419659310) + (-419659311 & 419659310)); + var4.addVertex(var3, 0.0F, 0.0F, 0.0F).setUv(0.0F, 1.0F).setColor((2015682651 ^ -2015682652) + ((2015682651 & -2015682652) << 1)); + arj.drawCurrent(var4); + } + + private static TextureTarget ensureTarget(TextureTarget var0, String var1, int var2, int var3) { + int var4 = 519914338; + + while (true) { + switch (var4) { + case 181557452: + return var0; + case 519914338: + default: + if (var0 == null) { + var4 = 785142234; + } else { + var4 = 1689524185; + } + break; + case 785142234: + return new TextureTarget(var1, var2, var3, (boolean)(((0)) != 0), GpuFormat.RGBA8_UNORM); + case 1102473008: + var0.resize(var2, var3); + var4 = 181557452; + break; + case 1689524185: + if (var0.width == var2) { + var4 = 2147005943; + } else { + var4 = 1102473008; + } + break; + case 2147005943: + if (var0.height != var3) { + var4 = 1102473008; + } else { + var4 = 181557452; + } + } + } + } + + private static boolean isBlurRequested() { + vm var0 = null; + int var2 = 0; + int var1 = 673426891; + + while (true) { + switch (var1) { + case -536116869: + return (boolean)((var2) != 0); + case -523984442: + var0 = vm.INSTANCE; + if (var0.isEnabled()) { + var1 = 1013763000; + } else { + var1 = 456515341; + } + break; + case -121551175: + var2 = 1; + var1 = -536116869; + break; + case 456515341: + var2 = 0; + var1 = -536116869; + break; + case 673426891: + default: + if (mc.gui.screen() instanceof yc) { + var1 = 1033916419; + } else { + var1 = -523984442; + } + break; + case 1013763000: + if (var0.getBlurFactor() > 0.003F) { + var1 = -121551175; + } else { + var1 = 456515341; + } + break; + case 1033916419: + return (boolean)(((1)) != 0); + } + } + } + + public static boolean isResultAvailable() { + int var1 = 0; + int var0 = 1385787440; + + while (true) { + switch (var0) { + case -426617349: + var1 = 0; + var0 = 2140951599; + break; + case 427583032: + var1 = 1; + var0 = 2140951599; + break; + case 1385787440: + default: + if (resultAvailable) { + var0 = 1467522724; + } else { + var0 = -426617349; + } + break; + case 1467522724: + if (quarterTarget != null) { + var0 = 427583032; + } else { + var0 = -426617349; + } + break; + case 2140951599: + return (boolean)((var1) != 0); + } + } + } + + public static GpuTextureView getTexture() { + GpuTextureView var1 = null; + int var0 = -705084358; + + while (true) { + switch (var0) { + case -705084358: + default: + if (resultAvailable) { + var0 = 856912374; + } else { + var0 = -271695606; + } + break; + case -381896944: + return var1; + case -271695606: + var1 = null; + var0 = -381896944; + break; + case 856912374: + if (quarterTarget != null) { + var0 = 1843615192; + } else { + var0 = -271695606; + } + break; + case 1843615192: + var1 = quarterTarget.getColorTextureView(); + var0 = -381896944; + } + } + } + + public void setBlurRadius(float var1) { + kawaseOffset = Math.max(var1, 0.0F); + } +} diff --git a/src/main/java/defpackage/asy.java b/src/main/java/defpackage/asy.java new file mode 100644 index 0000000..b04a163 --- /dev/null +++ b/src/main/java/defpackage/asy.java @@ -0,0 +1,310 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.pipeline.TextureTarget; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import net.minecraft.client.CameraType; +import net.minecraft.client.Minecraft; +import org.joml.Matrix4f; +import org.joml.Vector4f; + +public final class asy { + private static final Vector4f EVO_CLEAR_TRANSPARENT = new Vector4f(0.0F, 0.0F, 0.0F, 0.0F); + private static final double EVO_CLEAR_DEPTH_FAR = 0.0; + private static TextureTarget target; + private static TextureTarget sceneCopy; + private static boolean pendingComposite; + + private asy() { + } + + public static void beginRedirect() { + Minecraft var0 = null; + RenderTarget var1 = null; + CommandEncoder var2 = null; + int var3 = -1343825988; + + while (true) { + switch (var3) { + case -1770508058: + var1 = var0.gameRenderer.mainRenderTarget(); + if (var1.width > 0) { + var3 = -244254488; + } else { + var3 = 857491539; + } + break; + case -1714223275: + return; + case -1426054167: + return; + case -1343825988: + default: + var0 = Minecraft.getInstance(); + if (var0.player != null) { + var3 = 518248510; + } else { + var3 = -1426054167; + } + break; + case -244254488: + if (var1.height <= 0) { + var3 = 857491539; + } else { + var3 = 2147075674; + } + break; + case -211768758: + if (!uf.INSTANCE.shaderActive()) { + var3 = -1714223275; + } else { + var3 = -1770508058; + } + break; + case 518248510: + if (var0.options.getCameraType() != CameraType.FIRST_PERSON) { + var3 = -1426054167; + } else { + var3 = -211768758; + } + break; + case 699990479: + RenderSystem.outputColorTextureOverride = target.getColorTextureView(); + RenderSystem.outputDepthTextureOverride = target.getDepthTextureView(); + pendingComposite = (boolean)(((1)) != 0); + return; + case 857491539: + return; + case 1813276989: + var2.clearColorTexture(target.getColorTexture(), EVO_CLEAR_TRANSPARENT); + var3 = 699990479; + break; + case 1915813208: + var2.clearColorAndDepthTextures(target.getColorTexture(), EVO_CLEAR_TRANSPARENT, target.getDepthTexture(), 0.0); + var3 = 699990479; + break; + case 2147075674: + ensureTarget(var1.width, var1.height); + var2 = RenderSystem.getDevice().createCommandEncoder(); + if (target.useDepth) { + var3 = 1915813208; + } else { + var3 = 1813276989; + } + } + } + } + + public static void endRedirect() { + int var0 = 1717802965; + + while (true) { + switch (var0) { + case -1398220325: + RenderSystem.outputColorTextureOverride = null; + RenderSystem.outputDepthTextureOverride = null; + return; + case 805830991: + return; + case 1717802965: + } + + if (!pendingComposite) { + var0 = 805830991; + } else { + var0 = -1398220325; + } + } + } + + public static void compositeHand() { + int var0 = -1446356517; + + while (true) { + switch (var0) { + case -1446356517: + default: + if (!pendingComposite) { + var0 = -652122920; + } else { + var0 = 1516998435; + } + break; + case -652122920: + return; + case 1516998435: + pendingComposite = (boolean)(((0)) != 0); + RenderSystem.outputColorTextureOverride = null; + RenderSystem.outputDepthTextureOverride = null; + composite(); + return; + } + } + } + + private static void ensureTarget(int var0, int var1) { + int var2 = 1121457935; + + while (true) { + switch (var2) { + case -1590914104: + return; + case -980264309: + if (target.width == var0) { + var2 = -140247883; + } else { + var2 = 1648368166; + } + break; + case -140247883: + if (target.height != var1) { + var2 = 1648368166; + } else { + var2 = -1590914104; + } + break; + case 943910931: + target = new TextureTarget( + "evo_hand_shader", + var0, + var1, + (boolean)(((1)) != 0), + GpuFormat.RGBA8_UNORM + ); + var2 = -1590914104; + break; + case 1121457935: + default: + if (target == null) { + var2 = 943910931; + } else { + var2 = -980264309; + } + break; + case 1648368166: + target.resize(var0, var1); + var2 = -1590914104; + } + } + } + + private static void ensureSceneCopy(int var0, int var1) { + int var2 = 3220415; + + while (true) { + switch (var2) { + case -1702906303: + if (sceneCopy.width == var0) { + var2 = 1551761247; + } else { + var2 = 1866475389; + } + break; + case -1196762597: + return; + case 3220415: + default: + if (sceneCopy == null) { + var2 = 775444472; + } else { + var2 = -1702906303; + } + break; + case 775444472: + sceneCopy = new TextureTarget( + "evo_hand_scene", + var0, + var1, + (boolean)(((0)) != 0), + GpuFormat.RGBA8_UNORM + ); + var2 = -1196762597; + break; + case 1551761247: + if (sceneCopy.height != var1) { + var2 = 1866475389; + } else { + var2 = -1196762597; + } + break; + case 1866475389: + sceneCopy.resize(var0, var1); + var2 = -1196762597; + } + } + } + + private static void composite() { + if (target != null && atb.handProgram != null) { + Minecraft var0 = Minecraft.getInstance(); + uf var1 = uf.INSTANCE; + if (var1.modeIndex() != (1540536782 ^ -1540536770) + ((1540536782 & -1540536770) << 1) + && var1.modeIndex() != (369043792 ^ -369043779) + ((369043792 & -369043779) << 1)) { + float var2 = var0.getWindow().getGuiScaledWidth(); + float var3 = var0.getWindow().getGuiScaledHeight(); + float var4 = (float)( + System.currentTimeMillis() % ((8656195280295789903L ^ -8656195280295689903L) + ((8656195280295789903L & -8656195280295689903L) << 1)) + ) + / 1000.0F + * var1.shaderSpeed(); + asu var5 = var1.handColor(); + int var6 = var1.modeIndex() == 8? 1: 0; + if (var6 != 0) { + RenderTarget var7 = var0.gameRenderer.mainRenderTarget(); + ensureSceneCopy(var7.width, var7.height); + CommandEncoder var8 = RenderSystem.getDevice().createCommandEncoder(); + var8.copyTextureToTexture( + var7.getColorTexture(), + sceneCopy.getColorTexture(), + 0, + 0, + 0, + 0, + 0, + var7.width, + var7.height + ); + } + + atb.beginGui(); + + try { + atd var13 = atb.handProgram; + var13.use(); + arj.setCurrentLayer(arj.guiTexturedNoTexture()); + atd.bindTexture(target.getColorTextureView(), (boolean)((((1057073269 | -1057073268) + (1057073269 & -1057073268))) != 0)); + if (var6 != 0) { + atd.bindTexture( + "Sampler1", + sceneCopy.getColorTextureView(), + (boolean)((((142923963 ^ -142923962) + ((142923963 & -142923962) << 1)) + ) != 0)); + } + + var13.setResolution(var2, var3); + var13.setTime(var4); + var13.setHandColor(var5.getRed() / 255.0F, var5.getGreen() / 255.0F, var5.getBlue() / 255.0F, var1.shaderOpacity()); + var13.setHandShaderMode(var1.modeIndex()); + var13.setHandShaderOnly(var1.onlyMode() ? 1.0F : 0.0F); + Matrix4f var14 = new Matrix4f(); + BufferBuilder var9 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var9.addVertex(var14, 0.0F, 0.0F, 0.0F).setUv(0.0F, 1.0F).setColor((172658585 | -172658586) + (172658585 & -172658586)); + var9.addVertex(var14, 0.0F, var3, 0.0F).setUv(0.0F, 0.0F).setColor((-1731480820 | 1731480819) + (-1731480820 & 1731480819)); + var9.addVertex(var14, var2, var3, 0.0F).setUv(1.0F, 0.0F).setColor((983528617 | -983528618) + (983528617 & -983528618)); + var9.addVertex(var14, var2, 0.0F, 0.0F).setUv(1.0F, 1.0F).setColor((-1234387211 | 1234387210) + (-1234387211 & 1234387210)); + arj.drawCurrent(var9); + atd.clearBoundTexture(); + } finally { + atb.endGui(); + } + } else { + atg.getInstance().render(target, var1); + } + } + } +} diff --git a/src/main/java/defpackage/asz.java b/src/main/java/defpackage/asz.java new file mode 100644 index 0000000..3e03c99 --- /dev/null +++ b/src/main/java/defpackage/asz.java @@ -0,0 +1,110 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.pipeline.RenderTarget; + +public class asz extends RenderTarget implements aqh { + private float clearR; + private float clearG; + private float clearB; + private float clearA; + + public asz(boolean var1) { + super("evolution_custom", var1, GpuFormat.RGBA8_UNORM); + } + + public asz(int var1, int var2, boolean var3) { + super("evolution_custom", var3, GpuFormat.RGBA8_UNORM); + this.resize(var1, var2); + } + + public asz setLinear() { + return this; + } + + public void setClearColor(float var1, float var2, float var3, float var4) { + this.clearR = var1; + this.clearG = var2; + this.clearB = var3; + this.clearA = var4; + } + + private void resizeFramebuffer() { + int var1 = -591579149; + + while (true) { + switch (var1) { + case -591579149: + default: + if (this.needsNewFramebuffer()) { + var1 = -438396722; + } else { + var1 = 340116585; + } + break; + case -438396722: + this.createBuffers( + Math.max(mw.getWidth(), (1173208085 ^ -1173208084) + ((1173208085 & -1173208084) << 1)), + Math.max(mw.getHeight(), (1765584103 ^ -1765584102) + ((1765584103 & -1765584102) << 1)) + ); + var1 = 340116585; + break; + case 340116585: + return; + } + } + } + + public void setup(boolean var1) { + this.resizeFramebuffer(); + if (var1) { + } + } + + public void setup() { + this.setup((boolean)((((-560824746 | 560824747) + (-560824746 & 560824747))) != 0)); + } + + public void stop() { + } + + public void beginRead() { + } + + public void endRead() { + } + + private boolean needsNewFramebuffer() { + int var2 = 0; + int var1 = 1332410253; + + while (true) { + switch (var1) { + case -1015290968: + var2 = 1; + var1 = 239563159; + break; + case 239563159: + return (boolean)((var2) != 0); + case 928407712: + var2 = 0; + var1 = 239563159; + break; + case 1194825707: + if (this.height != mw.getHeight()) { + var1 = -1015290968; + } else { + var1 = 928407712; + } + break; + case 1332410253: + default: + if (this.width == mw.getWidth()) { + var1 = 1194825707; + } else { + var1 = -1015290968; + } + } + } + } +} diff --git a/src/main/java/defpackage/at.java b/src/main/java/defpackage/at.java new file mode 100644 index 0000000..2f5764b --- /dev/null +++ b/src/main/java/defpackage/at.java @@ -0,0 +1,23 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; + +public class at extends ax implements aw { + private float x; + private float y; + private float z; + private float amount; + + public at(float var1, float var2, float var3, float var4) { + this.amount = var1; + this.x = var2; + this.y = var3; + this.z = var4; + } + + @Override + public void applyPose(PoseStack var1) { + var1.rotateAround(Axis.YP.rotationDegrees(this.amount), this.x, this.y, this.z); + } +} diff --git a/src/main/java/defpackage/ata.java b/src/main/java/defpackage/ata.java new file mode 100644 index 0000000..d4de507 --- /dev/null +++ b/src/main/java/defpackage/ata.java @@ -0,0 +1,4 @@ +package defpackage; + +record ata(float u1, float v1, float uSize, float vSize) { +} diff --git a/src/main/java/defpackage/atb.java b/src/main/java/defpackage/atb.java new file mode 100644 index 0000000..71dcf47 --- /dev/null +++ b/src/main/java/defpackage/atb.java @@ -0,0 +1,3513 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.ProjectionType; +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.pipeline.TextureTarget; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.textures.GpuTextureView; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.Projection; +import net.minecraft.client.renderer.ProjectionMatrixBuffer; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec2; +import org.joml.Matrix3x2fStack; +import org.joml.Matrix3x2fc; +import org.joml.Matrix4f; +import org.joml.Matrix4fStack; +import org.joml.Matrix4fc; +import org.joml.Vector4f; + +public final class atb implements aqh { + private static final Vector4f EVO_CLEAR_TRANSPARENT = new Vector4f(0.0F, 0.0F, 0.0F, 0.0F); + public static final float DEFAULT_SMOOTHNESS = 0.8F; + private static final float ANTIALIAS_PIXELS = 1.0F; + private static final float MIN_ANTIALIAS_SMOOTHNESS = 0.05F; + private static final float MIN_PIXELS_PER_UNIT = 0.01F; + private static final float HALF_PIXEL = 0.5F; + private static final float MIN_FALLBACK_BORDER_THICKNESS = 1.0F; + private static final float TEXTURE_PASSTHROUGH_SIZE = 8192.0F; + private static final float SHAPE_RECTANGLE = 0.0F; + private static final float SHAPE_SQUIRCLE = 1.0F; + private static final float SHAPE_BORDER = 2.0F; + private static final float SHAPE_CORNER = 3.0F; + private static final float SHAPE_LOADING = 4.0F; + private static final float SHAPE_GLOSS = 5.0F; + private static final float SHAPE_CIRCLE = 6.0F; + private static final float SHAPE_GRADIENT = 7.0F; + private static final float SHAPE_NEON = 8.0F; + private static final float NEON_MODE_SCALE = 16.0F; + private static final float NEON_MODE_RING = 0.0F; + private static final float NEON_MODE_HALO = 1.0F; + private static final float NEON_MODE_GLOW = 2.0F; + private static final float NEON_MODE_INNER = 3.0F; + private static final float NEON_MIN_GLOW_RADIUS = 0.001F; + private static final float NEON_MAX_GLOW_EXPONENT = 15.9F; + private static final float NEON_MIN_GLOW_EXPONENT = 0.05F; + private static final float NEON_MIN_SIZE = 0.001F; + private static final float NEON_GLOW_PAD_FACTOR = 3.0F; + private static final long GLOSS_PERIOD_MS = 3800L; + private static final float GLOSS_ACTIVE_FRACTION = 0.5F; + private static final float GLOSS_LEAD = 0.35F; + private static final float GLOSS_SIGMA = 0.085F; + private static final int GLOSS_PEAK_ALPHA = 150; + private static final float GLOSS_OFFSCREEN = 3.0F; + private static final int GLOSS_ANGLE_COUNT = 4; + private static final float GLOSS_ANGLE_STEP = (float) (Math.PI / 2); + private static final float GLOSS_ANGLE_START = (float) (Math.PI * 3.0 / 4.0); + private static final float GLOSS_DEFAULT_DIR_X = 0.7071F; + private static final float GLOSS_DEFAULT_DIR_Y = 0.7071F; + private static final float BACKDROP_LOOP_SECONDS = 300.0F; + private static final float BACKDROP_TIME_SCALE = 1000.0F; + private static final double BACKDROP_LOOP_MS = 300000.0; + private static final float OPAQUE = 1.0F; + public static atd rectangleProgram; + private static atd guiShapeProgram; + private static atd squircleProgram; + private static atd roundedTextureProgram; + private static atd roundedTexturePremultipliedProgram; + private static atd roundedTextureAdditiveProgram; + private static atd squircleTextureProgram; + private static atd textureBlurProgram; + public static atd hitboxGlowBlurProgram; + private static atd borderProgram; + private static atd figmaBorderProgram; + private static atd loadingProgram; + private static atd gradientRectangleProgram; + private static atd glossProgram; + private static atd circleProgram; + private static atd fadeTextureProgram; + public static atd handProgram; + public static atd smokeTrailProgram; + public static atd smokeKawaseDownProgram; + public static atd smokeKawaseUpProgram; + public static atd smokeCompositeProgram; + public static atd smokeFlameProgram; + public static atd smokeResidualProgram; + public static atd blockNebulaProgram; + public static atd blockStarfieldProgram; + public static atd capeStarfieldProgram; + public static atd capeHolyProgram; + public static atd blockHolyProgram; + public static atd capeLogoProgram; + public static atd blockCobwebProgram; + public static atd blockPlasmaProgram; + public static atd worldNebulaProgram; + public static atd worldStarfieldProgram; + public static atd worldCobwebProgram; + public static atd worldPlasmaProgram; + public static atd worldMatrixProgram; + public static atd worldLivingArmorProgram; + public static atd worldAlienNebulaProgram; + public static atd worldHolyProgram; + public static atd worldWaterProgram; + public static atd worldWetGroundProgram; + public static atd worldSnowCoverProgram; + public static atd trailGlassProgram; + public static atd blockGlassProgram; + public static atd deathBlastProgram; + public static atd liquidGlassProgram; + public static atd themeWipeProgram; + public static atd themeBackdropProgram; + public static atd menuBackdropProgram; + public static asx blurProgram; + private static final int HITBOX_GLOW_BLUR_DOWNSAMPLE = 2; + private static final float HITBOX_GLOW_SECOND_PASS_RADIUS_SCALE = 0.5F; + private static TextureTarget sceneCopy; + private static TextureTarget hitboxGlowBlurScratch; + private static TextureTarget screenSnapshot; + private static final String SCREEN_SNAPSHOT_LABEL = "evo_screen_snapshot"; + private static final int SNAPSHOT_MIP_LEVEL = 0; + private static final int SNAPSHOT_ORIGIN = 0; + private static final int WHITE_RGB24 = 16777215; + private static final int BLACK_RGB24 = 0; + private static final int ALPHA_SHIFT = 24; + private static final int MIN_VISIBLE_ALPHA = 5; + private static final int ALPHA_MASK = 255; + private static final float ALPHA_SCALE = 255.0F; + private static atd[] maskablePrograms; + private static final atd[] NO_PROGRAMS = new atd[0]; + private static float maskTopY = -1.0F; + private static float maskBottomY = -1.0F; + private static float maskFadeTop = 0.0F; + private static float maskFadeBottom = 0.0F; + private static float maskLeftX = -1.0F; + private static float maskRightX = -1.0F; + private static float maskFadeLeft = 0.0F; + private static float maskFadeRight = 0.0F; + private static final asz buffer = new asz((boolean)((((2075806192 | -2075806192) + (2075806192 & -2075806192))) != 0)); + private static final float GUI_PROJECTION_Z_NEAR = -1000.0F; + private static final float GUI_PROJECTION_Z_FAR = 1000.0F; + private static final boolean GUI_PROJECTION_INVERT_Y = true; + private static final Projection GUI_PROJECTION = new Projection(); + private static ProjectionMatrixBuffer guiProjection; + private static int guiDepth; + + public static GpuTextureView sceneSnapshot() { + RenderTarget var0 = null; + int var1 = 497679950; + + while (true) { + switch (var1) { + case -135621409: + return blurProgram.captureHalfScene(); + case 497679950: + default: + atf.flush(); + var0 = mc.gameRenderer.mainRenderTarget(); + if (var0.width > 0) { + var1 = 1960072704; + } else { + var1 = 630674656; + } + break; + case 630674656: + return null; + case 1960072704: + if (var0.height <= 0) { + var1 = 630674656; + } else { + var1 = -135621409; + } + } + } + } + + public static GpuTextureView captureScreenSnapshot() { + RenderTarget var0 = null; + CommandEncoder var1 = null; + int var2 = 1917213870; + + while (true) { + switch (var2) { + case -1295792090: + atf.flush(); + if (screenSnapshot == null) { + var2 = 277429313; + } else { + var2 = 136517332; + } + break; + case -129535080: + if (var0.height <= 0) { + var2 = 1520955476; + } else { + var2 = -1295792090; + } + break; + case -120524474: + screenSnapshot.resize(var0.width, var0.height); + var2 = 1500803385; + break; + case 136517332: + if (screenSnapshot.width == var0.width) { + var2 = 922334838; + } else { + var2 = -120524474; + } + break; + case 277429313: + screenSnapshot = new TextureTarget( + "evo_screen_snapshot", + var0.width, + var0.height, + (boolean)(((0)) != 0), + GpuFormat.RGBA8_UNORM + ); + var2 = 1500803385; + break; + case 922334838: + if (screenSnapshot.height != var0.height) { + var2 = -120524474; + } else { + var2 = 1500803385; + } + break; + case 1500803385: + var1 = RenderSystem.getDevice().createCommandEncoder(); + var1.copyTextureToTexture( + var0.getColorTexture(), + screenSnapshot.getColorTexture(), + 0, + 0, + 0, + 0, + 0, + var0.width, + var0.height + ); + return screenSnapshot.getColorTextureView(); + case 1520955476: + return null; + case 1917213870: + default: + var0 = mc.gameRenderer.mainRenderTarget(); + if (var0.width > 0) { + var2 = -129535080; + } else { + var2 = 1520955476; + } + } + } + } + + public static void releaseScreenSnapshot() { + int var0 = -1804797261; + + while (true) { + switch (var0) { + case -1804797261: + default: + if (screenSnapshot == null) { + var0 = -1124473353; + } else { + var0 = 1062164756; + } + break; + case -1124473353: + return; + case 1062164756: + screenSnapshot.destroyBuffers(); + screenSnapshot = null; + return; + } + } + } + + public static ask screenUvRect(Matrix3x2fStack var0, float var1, float var2, float var3, float var4) { + Matrix4f var5 = arb.toMatrix4f(var0); + float var6 = mc.getWindow().getGuiScaledWidth(); + float var7 = mc.getWindow().getGuiScaledHeight(); + float var8 = var5.m00() * var1 + var5.m10() * var2 + var5.m30(); + float var9 = var5.m01() * var1 + var5.m11() * var2 + var5.m31(); + float var10 = var5.m00() * (var1 + var3) + var5.m10() * (var2 + var4) + var5.m30(); + float var11 = var5.m01() * (var1 + var3) + var5.m11() * (var2 + var4) + var5.m31(); + float var12 = var8 / var6; + float var13 = var10 / var6; + float var14 = (var7 - var9) / var7; + float var15 = (var7 - var11) / var7; + return new ask(var12, var14, var13 - var12, var15 - var14); + } + + public static void drawScreenWipe( + Matrix3x2fStack var0, + GpuTextureView var1, + float var2, + float var3, + float var4, + float var5, + arq var6, + ask var7, + float var8, + float var9, + float var10, + float var11 + ) { + Matrix4fc var12 = null; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + int var17 = 0; + BufferBuilder var18 = null; + int var19 = 206772020; + + while (true) { + switch (var19) { + case -1907383452: + if (!(var4 <= 0.0F)) { + var19 = -1273994044; + } else { + var19 = -861899772; + } + break; + case -1273994044: + if (!(var5 <= 0.0F)) { + var19 = -1112902063; + } else { + var19 = -861899772; + } + break; + case -1112902063: + if (var11 <= 0.0F) { + var19 = -861899772; + } else { + var19 = 943882137; + } + break; + case -861899772: + return; + case -803202973: + if (themeWipeProgram != null) { + var19 = -1907383452; + } else { + var19 = -861899772; + } + break; + case 206772020: + default: + if (var1 != null) { + var19 = -803202973; + } else { + var19 = -861899772; + } + break; + case 943882137: + var12 = arb.toMatrix4f(var0); + themeWipeProgram.use(); + arj.setCurrentLayer(arj.guiTexturedNoTexture()); + atd.bindTexture(var1, (boolean)((((-916634621 | 916634622) + (-916634621 & 916634622))) != 0)); + themeWipeProgram.setSize(var4, var5); + themeWipeProgram.setRadius(var6.topLeftRadius(), var6.bottomLeftRadius(), var6.topRightRadius(), var6.bottomRightRadius()); + themeWipeProgram.setSmoothness(0.8F); + themeWipeProgram.setProgress(var8); + themeWipeProgram.setSweepOrigin(var9, var10); + var13 = var7.x(); + var14 = var7.y(); + var15 = var7.x() + var7.width(); + var16 = var7.y() + var7.height(); + var17 = withAlpha(16777215, var11); + var18 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var18.addVertex(var12, var2, var3, 0.0F).setUv(var13, var14).setColor(var17); + var18.addVertex(var12, var2, var3 + var5, 0.0F).setUv(var13, var16).setColor(var17); + var18.addVertex(var12, var2 + var4, var3 + var5, 0.0F).setUv(var15, var16).setColor(var17); + var18.addVertex(var12, var2 + var4, var3, 0.0F).setUv(var15, var14).setColor(var17); + arj.drawCurrent(var18); + atd.clearBoundTexture(); + return; + } + } + } + + private static atd[] maskablePrograms() { + int var0 = 2044556646; + + while (true) { + switch (var0) { + case -429037814: + return maskablePrograms; + case 484406845: + if (rectangleProgram == null) { + var0 = 1765187842; + } else { + var0 = 1736418373; + } + break; + case 1736418373: + atd[] var10000 = new atd[20]; + var10000[0] = rectangleProgram; + var10000[1] = squircleProgram; + var10000[2] = roundedTextureProgram; + var10000[3] = roundedTextureAdditiveProgram; + var10000[4] = squircleTextureProgram; + var10000[5] = textureBlurProgram; + var10000[6] = hitboxGlowBlurProgram; + var10000[7] = borderProgram; + var10000[8] = figmaBorderProgram; + var10000[9] = loadingProgram; + var10000[10] = gradientRectangleProgram; + var10000[11] = circleProgram; + var10000[12] = fadeTextureProgram; + var10000[13] = handProgram; + var10000[14] = guiShapeProgram; + var10000[15] = blockNebulaProgram; + var10000[16] = blockStarfieldProgram; + var10000[17] = blockCobwebProgram; + var10000[18] = blockPlasmaProgram; + var10000[19] = liquidGlassProgram; + maskablePrograms = var10000; + var0 = -429037814; + break; + case 1765187842: + return NO_PROGRAMS; + case 2044556646: + default: + if (maskablePrograms == null) { + var0 = 484406845; + } else { + var0 = -429037814; + } + } + } + } + + public static void resumeMask() { + setMaskValues(maskTopY, maskBottomY, maskFadeTop, maskFadeBottom, maskLeftX, maskRightX, maskFadeLeft, maskFadeRight); + } + + public static float maskFadeTop() { + return maskFadeTop; + } + + public static float maskFadeBottom() { + return maskFadeBottom; + } + + public static void overrideMaskFadeBottom(float var0) { + atd[] var1 = null; + int var2 = 0; + int var3 = 0; + atd var4 = null; + int var5 = -1307589308; + + while (true) { + switch (var5) { + case -1307589308: + default: + var1 = maskablePrograms(); + var2 = var1.length; + var3 = 0; + var5 = 817332697; + break; + case -951242166: + var4.setMaskFadeBottom(var0); + var5 = 370594201; + break; + case -917328481: + var4 = var1[var3]; + if (var4 != null) { + var5 = -951242166; + } else { + var5 = 370594201; + } + break; + case 370594201: + var3++; + var5 = 817332697; + break; + case 817332697: + if (var3 < var2) { + var5 = -917328481; + } else { + var5 = 1152519289; + } + break; + case 1152519289: + return; + } + } + } + + public static void overrideMaskFadeTop(float var0) { + atd[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = -1081202434; + + while (true) { + switch (var5) { + case -1272774261: + var4 = var1[var3]; + if (var4 != null) { + var5 = 1350309765; + } else { + var5 = -733362358; + } + break; + case -1081202434: + default: + var1 = maskablePrograms(); + var2 = var1.length; + var3 = 0; + var5 = 54353636; + break; + case -733362358: + var3++; + var5 = 54353636; + break; + case -427199521: + return; + case 54353636: + if (var3 < var2) { + var5 = -1272774261; + } else { + var5 = -427199521; + } + break; + case 1350309765: + ((atd)var4).setMaskFadeTop(var0); + var5 = -733362358; + } + } + } + + public static void setMask(float var0, float var1, float var2, float var3, float var4, float var5, float var6, float var7) { + maskTopY = var0; + maskBottomY = var1; + maskFadeTop = var2; + maskFadeBottom = var3; + maskLeftX = var4; + maskRightX = var5; + maskFadeLeft = var6; + maskFadeRight = var7; + setMaskValues(var0, var1, var2, var3, var4, var5, var6, var7); + } + + private static void setMaskValues(float var0, float var1, float var2, float var3, float var4, float var5, float var6, float var7) { + atd[] var8 = null; + int var9 = 0; + int var10 = 0; + atd var11 = null; + int var12 = -1280317511; + + while (true) { + switch (var12) { + case -2114753870: + if (var10 < var9) { + var12 = 1771330028; + } else { + var12 = 1715623783; + } + break; + case -1280317511: + default: + var8 = maskablePrograms(); + var9 = var8.length; + var10 = 0; + var12 = -2114753870; + break; + case -543509641: + var10++; + var12 = -2114753870; + break; + case 1715623783: + return; + case 1771330028: + var11 = var8[var10]; + if (var11 != null) { + var12 = 1943257104; + } else { + var12 = -543509641; + } + break; + case 1943257104: + var11.setMaskTopY(var0); + var11.setMaskBottomY(var1); + var11.setMaskFadeTop(var2); + var11.setMaskFadeBottom(var3); + var11.setMaskLeftX(var4); + var11.setMaskRightX(var5); + var11.setMaskFadeLeft(var6); + var11.setMaskFadeRight(var7); + var12 = -543509641; + } + } + } + + public static void setMask(float var0, float var1, float var2) { + setMask(var0, var1, var2, var2, -1.0F, -1.0F, 0.0F, 0.0F); + } + + public static void setMaskBypass(boolean var0) { + atd[] var1 = maskablePrograms(); + int var2 = var1.length; + + for (int var3 = 0; var3 < var2; var3++) { + atd var4 = var1[var3]; + if (var4 != null) { + var4.setMaskBypass(var0 ? 1.0F : 0.0F); + } + } + } + + public static void initializeShaders() { + rectangleProgram = new atd( + bz.id("rectangle/data"), + DefaultVertexFormat.POSITION_COLOR + ); + guiShapeProgram = new atd( + bz.id("gui_shape/data"), + DefaultVertexFormat.POSITION_TEX_COLOR, + "EvoShapes" + ); + squircleProgram = new atd( + bz.id("squircle/data"), DefaultVertexFormat.POSITION_COLOR + ); + squircleTextureProgram = new atd( + bz.id("squircle_texture/data"), DefaultVertexFormat.POSITION_TEX_COLOR + ); + roundedTextureProgram = new atd( + bz.id("texture/data"), DefaultVertexFormat.POSITION_TEX_COLOR + ); + roundedTextureAdditiveProgram = new atd( + bz.id("texture/data"), + DefaultVertexFormat.POSITION_TEX_COLOR, + BlendFunction.ADDITIVE, + (boolean)((((1152782424 ^ -1152782424) + ((1152782424 & -1152782424) << 1)) + ) != 0)); + roundedTexturePremultipliedProgram = new atd( + bz.id("texture/data"), + DefaultVertexFormat.POSITION_TEX_COLOR, + BlendFunction.TRANSLUCENT_PREMULTIPLIED_ALPHA, + (boolean)((((-718302325 | 718302325) + (-718302325 & 718302325)) + ) != 0)); + textureBlurProgram = new atd( + bz.id("texture_blur/data"), + DefaultVertexFormat.POSITION_TEX_COLOR + ); + hitboxGlowBlurProgram = new atd( + bz.id("hitbox_glow_blur/data"), + DefaultVertexFormat.POSITION_TEX_COLOR + ); + textureBlurProgram = new atd( + bz.id("texture_blur/data"), DefaultVertexFormat.POSITION_TEX_COLOR + ); + borderProgram = new atd( + bz.id("border/data"), DefaultVertexFormat.POSITION_COLOR + ); + figmaBorderProgram = new atd( + bz.id("corner/data"), DefaultVertexFormat.POSITION_COLOR + ); + loadingProgram = new atd( + bz.id("loading/data"), DefaultVertexFormat.POSITION_COLOR + ); + fadeTextureProgram = new atd( + bz.id("fade_texture/data"), + DefaultVertexFormat.POSITION_TEX_COLOR + ); + gradientRectangleProgram = new atd( + bz.id("gradient_rectangle/data"), + DefaultVertexFormat.POSITION_COLOR + ); + glossProgram = new atd( + bz.id("gloss/data"), DefaultVertexFormat.POSITION_COLOR + ); + circleProgram = new atd(bz.id("circle/data"), DefaultVertexFormat.POSITION_COLOR); + handProgram = new atd( + bz.id("hand/data"), DefaultVertexFormat.POSITION_TEX_COLOR + ); + smokeTrailProgram = new atd( + bz.id("hand_smoke/trail/data"), + DefaultVertexFormat.POSITION_TEX_COLOR, + null, + (boolean)((((-314216400 | 314216401) + (-314216400 & 314216401)) + ) != 0)); + smokeKawaseDownProgram = new atd( + bz.id("hand_smoke/kawase_down/data"), + DefaultVertexFormat.POSITION_TEX_COLOR, + null, + (boolean)((((-1756396310 ^ 1756396311) + ((-1756396310 & 1756396311) << 1)) + ) != 0)); + smokeKawaseUpProgram = new atd( + bz.id("hand_smoke/kawase_up/data"), + DefaultVertexFormat.POSITION_TEX_COLOR, + null, + (boolean)((((1860867498 | -1860867497) + (1860867498 & -1860867497)) + ) != 0)); + smokeCompositeProgram = new atd( + bz.id("hand_smoke/composite/data"), + DefaultVertexFormat.POSITION_TEX_COLOR, + BlendFunction.ADDITIVE, + (boolean)((((-1682586635 | 1682586635) + (-1682586635 & 1682586635)) + ) != 0)); + smokeFlameProgram = new atd( + bz.id("hand_smoke/flame/data"), + DefaultVertexFormat.POSITION_TEX_COLOR, + BlendFunction.LIGHTNING, + (boolean)((((2136007168 | -2136007168) + (2136007168 & -2136007168)) + ) != 0)); + smokeResidualProgram = new atd( + bz.id("hand_smoke/residual/data"), + DefaultVertexFormat.POSITION_TEX_COLOR, + null, + (boolean)((((-1263851698 | 1263851699) + (-1263851698 & 1263851699)) + ) != 0)); + blockNebulaProgram = new atd( + bz.id("blockoverlay/nebula/data"), DefaultVertexFormat.POSITION_COLOR + ); + blockStarfieldProgram = new atd( + bz.id("blockoverlay/starfield/data"), + DefaultVertexFormat.POSITION_COLOR + ); + capeStarfieldProgram = new atd( + bz.id("blockoverlay/starfield/cape_data"), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((123095811 | -123095810) + (123095811 & -123095810)) + ) != 0)); + capeHolyProgram = new atd( + bz.id("blockoverlay/holy/cape_data"), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((1857312452 | -1857312451) + (1857312452 & -1857312451)) + ) != 0)); + blockHolyProgram = new atd( + bz.id("blockoverlay/holy/data"), + DefaultVertexFormat.POSITION_COLOR + ); + capeLogoProgram = new atd( + bz.id("cape_logo/data"), + DefaultVertexFormat.POSITION_TEX_COLOR, + (boolean)(((1)) != 0), + (boolean)((((-465075095 ^ 465075095) + ((-465075095 & 465075095) << 1)) + ) != 0)); + blockCobwebProgram = new atd( + bz.id("blockoverlay/cobweb/data"), + DefaultVertexFormat.POSITION_COLOR + ); + blockPlasmaProgram = new atd( + bz.id("blockoverlay/plasma/data"), + DefaultVertexFormat.POSITION_COLOR + ); + worldNebulaProgram = new atd( + bz.id("blockoverlay/nebula/world_data"), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((1787809528 ^ -1787809528) + ((1787809528 & -1787809528) << 1)) + ) != 0)); + worldStarfieldProgram = new atd( + bz.id("blockoverlay/starfield/world_data"), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((-2093799573 ^ 2093799573) + ((-2093799573 & 2093799573) << 1)) + ) != 0)); + worldCobwebProgram = new atd( + bz.id("blockoverlay/cobweb/world_data"), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((1328275995 ^ -1328275995) + ((1328275995 & -1328275995) << 1)) + ) != 0)); + worldPlasmaProgram = new atd( + bz.id( + "blockoverlay/plasma/world_data" + ), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((-1363506672 | 1363506672) + (-1363506672 & 1363506672)) + ) != 0)); + worldMatrixProgram = new atd( + bz.id("blockoverlay/matrix/world_data"), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((-1570500996 ^ 1570500996) + ((-1570500996 & 1570500996) << 1)) + ) != 0)); + worldLivingArmorProgram = new atd( + bz.id("blockoverlay/living_armor/world_data"), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((-520380905 | 520380905) + (-520380905 & 520380905)) + ) != 0)); + worldAlienNebulaProgram = new atd( + bz.id( + "blockoverlay/alien_nebula/world_data" + ), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((-346111366 ^ 346111366) + ((-346111366 & 346111366) << 1)) + ) != 0)); + worldHolyProgram = new atd( + bz.id("blockoverlay/holy/world_data"), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((-1392450607 ^ 1392450607) + ((-1392450607 & 1392450607) << 1)) + ) != 0)); + worldWaterProgram = new atd( + bz.id("blockoverlay/water/world_data"), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((-1270818366 ^ 1270818366) + ((-1270818366 & 1270818366) << 1)) + ) != 0)); + worldWetGroundProgram = new atd( + bz.id("rain/wet/world_data"), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((-1304508325 | 1304508325) + (-1304508325 & 1304508325)) + ) != 0)); + worldSnowCoverProgram = new atd( + bz.id("snow/cover/world_data"), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((1245794399 ^ -1245794398) + ((1245794399 & -1245794398) << 1)) + ) != 0)); + trailGlassProgram = new atd( + bz.id("trail_glass/data"), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((-336224177 | 336224177) + (-336224177 & 336224177)) + ) != 0)); + blockGlassProgram = new atd( + bz.id("block_glass/data"), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((1300776963 ^ -1300776963) + ((1300776963 & -1300776963) << 1)) + ) != 0)); + deathBlastProgram = new atd( + bz.id("death_blast/data"), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((-197238100 ^ 197238100) + ((-197238100 & 197238100) << 1)) + ) != 0)); + liquidGlassProgram = new atd( + bz.id("liquid_glass/data"), + DefaultVertexFormat.POSITION_TEX_COLOR + ); + themeWipeProgram = new atd( + bz.id("theme_wipe/data"), DefaultVertexFormat.POSITION_TEX_COLOR + ); + themeBackdropProgram = new atd( + bz.id("theme_backdrop/data"), DefaultVertexFormat.POSITION_COLOR + ); + menuBackdropProgram = new atd( + bz.id("menu_backdrop/data"), + DefaultVertexFormat.POSITION_COLOR + ); + blurProgram = new asx(); + blurProgram.initShaders(); + } + + public static void updateBuffer() { + atf.flush(); + buffer.setup(); + mc.gameRenderer.mainRenderTarget().blitAndBlendToTexture(buffer.getColorTextureView(), buffer.getDepthTextureView()); + } + + public static void blitFullscreen(GpuTextureView var0) { + blitFullscreen(var0, roundedTextureProgram); + } + + public static void blitFullscreenPremultiplied(GpuTextureView var0) { + blitFullscreen(var0, roundedTexturePremultipliedProgram); + } + + private static void blitFullscreen(GpuTextureView var0, atd var1) { + if (var0 != null && var1 != null) { + float var2 = mc.getWindow().getGuiScaledWidth(); + float var3 = mc.getWindow().getGuiScaledHeight(); + atf.flush(); + beginGui(); + + try { + var1.use(); + arj.setCurrentLayer(arj.guiTexturedNoTexture()); + atd.bindTexture(var0, (boolean)((((2015439745 | -2015439744) + (2015439745 & -2015439744))) != 0)); + var1.setSize(8192.0F, 8192.0F); + var1.setRadius(0.0F, 0.0F, 0.0F, 0.0F); + var1.setSmoothness(0.8F); + Matrix4f var4 = new Matrix4f(); + BufferBuilder var5 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var5.addVertex(var4, 0.0F, 0.0F, 0.0F).setUv(0.0F, 1.0F).setColor((1745559423 | -1745559424) + (1745559423 & -1745559424)); + var5.addVertex(var4, 0.0F, var3, 0.0F).setUv(0.0F, 0.0F).setColor((-528998859 ^ 528998858) + ((-528998859 & 528998858) << 1)); + var5.addVertex(var4, var2, var3, 0.0F).setUv(1.0F, 0.0F).setColor((-1507526568 ^ 1507526567) + ((-1507526568 & 1507526567) << 1)); + var5.addVertex(var4, var2, 0.0F, 0.0F).setUv(1.0F, 1.0F).setColor((-793681158 ^ 793681157) + ((-793681158 & 793681157) << 1)); + arj.drawCurrent(var5); + atd.clearBoundTexture(); + } finally { + endGui(); + } + } + } + + public static void beginGui() { + ProjectionMatrixBuffer var0 = null; + Matrix4fStack var1 = null; + int var2 = 1624739641; + + while (true) { + switch (var2) { + case -1457504154: + var0 = getGuiProjection(); + if (var0 == null) { + var2 = 1121778927; + } else { + var2 = -1118747857; + } + break; + case -1118747857: + guiDepth = 1; + RenderSystem.backupProjectionMatrix(); + GUI_PROJECTION.setupOrtho( + -1000.0F, + 1000.0F, + mc.getWindow().getGuiScaledWidth(), + mc.getWindow().getGuiScaledHeight(), + (boolean)((((1832017797 ^ -1832017796) + ((1832017797 & -1832017796) << 1)) + ) != 0)); + RenderSystem.setProjectionMatrix(var0.getBuffer(GUI_PROJECTION), ProjectionType.ORTHOGRAPHIC); + var1 = RenderSystem.getModelViewStack(); + var1.pushMatrix(); + var1.identity(); + return; + case -309981788: + guiDepth += 1; + return; + case 1121778927: + return; + case 1624739641: + default: + if (guiDepth > 0) { + var2 = -309981788; + } else { + var2 = -1457504154; + } + } + } + } + + public static void endGui() { + int var0 = 1930136215; + + while (true) { + switch (var0) { + case -1881015881: + return; + case -1585741297: + guiDepth = 0; + return; + case -379412784: + RenderSystem.getModelViewStack().popMatrix(); + RenderSystem.restoreProjectionMatrix(); + return; + case 1387934699: + guiDepth -= 1; + if (guiDepth > 0) { + var0 = -1881015881; + } else { + var0 = -379412784; + } + break; + case 1930136215: + default: + if (guiDepth <= 0) { + var0 = -1585741297; + } else { + var0 = 1387934699; + } + } + } + } + + private static ProjectionMatrixBuffer getGuiProjection() { + if (guiProjection != null) { + return guiProjection; + } + + try { + guiProjection = new ProjectionMatrixBuffer("evolution_gui"); + } catch (IllegalStateException var1) { + return null; + } + + return guiProjection; + } + + public static void drawLine(Matrix3x2fStack var0, Vec2 var1, Vec2 var2, asu var3) { + var0.pushMatrix(); + + try { + Matrix4f var4 = arb.toMatrix4f(var0); + arj.setCurrentLayer(arj.positionColor()); + drawSetup(); + BufferBuilder var5 = arj.begin(PrimitiveTopology.DEBUG_LINE_STRIP, DefaultVertexFormat.POSITION_COLOR); + int var6 = var3.getRGB(); + var5.addVertex(var4, var1.x, var1.y, 0.0F).setColor(var6); + var5.addVertex(var4, var2.x, var2.y, 0.0F).setColor(var6); + arj.drawCurrent(var5); + drawEnd(); + } finally { + var0.popMatrix(); + } + } + + public static void drawBezier(Matrix3x2fStack var0, Vec2 var1, Vec2 var2, Vec2 var3, Vec2 var4, asu var5, int var6) { + var0.pushMatrix(); + + try { + Matrix4f var7 = arb.toMatrix4f(var0); + arj.setCurrentLayer(arj.positionColor()); + drawSetup(); + int var8 = var5.getRGB(); + BufferBuilder var9 = arj.begin(PrimitiveTopology.DEBUG_LINE_STRIP, DefaultVertexFormat.POSITION_COLOR); + + for (int var10 = 0; var10 <= var6; var10++) { + float var11 = (float)var10 / var6; + float var12 = (float)aqj.cubicBezier(var11, var1.x, var2.x, var3.x, var4.x); + float var13 = (float)aqj.cubicBezier(var11, var1.y, var2.y, var3.y, var4.y); + var9.addVertex(var7, var12, var13, 0.0F).setColor(var8); + } + + arj.drawCurrent(var9); + drawEnd(); + } finally { + var0.popMatrix(); + } + } + + private static float cubicBezier(float var0, float var1, float var2, float var3, float var4) { + float var5 = 1.0F - var0; + float var6 = var0 * var0; + float var7 = var5 * var5; + return var7 * var5 * var1 + 3.0F * var7 * var0 * var2 + 3.0F * var5 * var6 * var3 + var6 * var0 * var4; + } + + public static void drawRect(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, asu var5) { + drawRoundedRect(var0, var1, var2, var3, var4, arq.ZERO, var5.getRGB()); + } + + public static void drawArc(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, float var6, int var7, asu var8) { + Matrix4f var9 = null; + BufferBuilder var10 = null; + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = 0; + int var14 = 0; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + int var18 = -1626405445; + + while (true) { + switch (var18) { + case -1626405445: + default: + if (var7 < (234798075 | -234798074) + (234798075 & -234798074)) { + var18 = 1554209801; + } else { + var18 = -417564013; + } + break; + case -417564013: + var0.pushMatrix(); + var9 = arb.toMatrix4f(var0); + arj.setCurrentLayer(arj.positionColor()); + drawSetup(); + var10 = arj.begin(PrimitiveTopology.TRIANGLE_STRIP, DefaultVertexFormat.POSITION_COLOR); + var11 = (float)Math.toRadians(var5); + var12 = (float)Math.toRadians(var6); + var13 = var8.getRGB(); + var14 = 0; + var18 = -46672201; + break; + case -46672201: + if (var14 <= var7) { + var18 = 289471391; + } else { + var18 = 123739674; + } + break; + case 123739674: + arj.drawCurrent(var10); + drawEnd(); + var0.popMatrix(); + return; + case 289471391: + var15 = var11 + var12 * ((float)var14 / var7); + var16 = (float)Math.cos(var15); + var17 = (float)Math.sin(var15); + var10.addVertex(var9, var1 + var16 * var4, var2 + var17 * var4, 0.0F).setColor(var13); + var10.addVertex(var9, var1 + var16 * var3, var2 + var17 * var3, 0.0F).setColor(var13); + var14++; + var18 = -46672201; + break; + case 1554209801: + var7 = 1; + var18 = -417564013; + } + } + } + + public static void drawRing(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, asu var6) { + drawRing(var0, var1, var2, var3, var4, var5, var6.getRGB()); + } + + public static void drawRing(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, int var6) { + var0.pushMatrix(); + float var7 = 2.0F; + float var8 = var3 + var7; + float var9 = var8 * 2.0F; + atd var10 = shapeProgram(circleProgram); + var10.use(); + var10.setSize(var9, var9); + var10.setThickness(var4); + var10.setProgress(var5); + drawSetup(); + float var11 = var1 - var8; + float var12 = var2 - var8; + float var13 = var1 + var8; + float var14 = var2 + var8; + emitShapeQuad(var10, 6.0F, var0, var11, var12, var13 - var11, var14 - var12, var6); + drawEnd(); + var0.popMatrix(); + } + + public static void drawSquircle(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, arq var6, asu var7) { + var0.pushMatrix(); + Matrix4f var8 = arb.toMatrix4f(var0); + float var9 = antialiasSmoothness(var0); + atd var10 = shapeProgram(squircleProgram); + var10.use(); + var10.setSize(var3, var4); + var10.setRadius( + var6.topLeftRadius() * var5 / 2.0F, var6.bottomLeftRadius() * var5 / 2.0F, var6.topRightRadius() * var5 / 2.0F, var6.bottomRightRadius() * var5 / 2.0F + ); + var10.setSmoothness(var9); + var10.setCornerSmoothness(var5); + drawSetup(); + float var11 = -var9 / 2.0F + var9 * 2.0F; + float var12 = var9 / 2.0F + var9; + float var13 = var1 - var11 / 2.0F; + float var14 = var2 - var12 / 2.0F; + float var15 = var3 + var11; + float var16 = var4 + var12; + emitShapeQuad(var10, 1.0F, var0, var13, var14, var15, var16, var7.getRGB()); + drawEnd(); + var0.popMatrix(); + } + + public static void drawLoadingRect(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, arq var6, asu var7) { + var0.pushMatrix(); + Matrix4f var8 = arb.toMatrix4f(var0); + float var9 = antialiasSmoothness(var0); + atd var10 = shapeProgram(loadingProgram); + var10.use(); + var10.setSize(var3, var4); + var10.setRadius(var6.topLeftRadius(), var6.bottomLeftRadius(), var6.topRightRadius(), var6.bottomRightRadius()); + var10.setSmoothness(var9); + var10.setProgress(var5); + var10.setStripeWidth(0.0F); + var10.setFade(0.5F); + drawSetup(); + float var11 = -var9 / 2.0F + var9 * 2.0F; + float var12 = var9 / 2.0F + var9; + float var13 = var1 - var11 / 2.0F; + float var14 = var2 - var12 / 2.0F; + float var15 = var3 + var11; + float var16 = var4 + var12; + emitShapeQuad(var10, 4.0F, var0, var13, var14, var15, var16, var7.getRGB()); + drawEnd(); + var0.popMatrix(); + } + + public static void drawRoundedRect(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, asu var6) { + int var7 = 2115002433; + + while (true) { + switch (var7) { + case 1087249881: + drawRoundedRect(var0, var1, var2, var3, var4, var5, var6.getRGB()); + return; + case 1604322304: + return; + case 2115002433: + } + + if (var6.getAlpha() <= (-473422563 ^ 473422568) + ((-473422563 & 473422568) << 1)) { + var7 = 1604322304; + } else { + var7 = 1087249881; + } + } + } + + public static void drawRoundedRect(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, int var6) { + drawRoundedRect(var0, var1, var2, var3, var4, var5.topLeftRadius(), var5.topRightRadius(), var5.bottomRightRadius(), var5.bottomLeftRadius(), var6); + } + + public static void drawRoundedRect( + Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9 + ) { + int var10 = -1462123016; + + while (true) { + switch (var10) { + case -1462123016: + default: + if (var9 >>> (-1881159805 | 1881159829) + (-1881159805 & 1881159829) <= (1326569242 ^ -1326569237) + ((1326569242 & -1326569237) << 1)) { + var10 = 1115610106; + } else { + var10 = -444147611; + } + break; + case -444147611: + emitRectangle(var0, var1, var2, var3, var4, var5, var6, var7, var8, var9, antialiasSmoothness(var0)); + return; + case 1115610106: + return; + } + } + } + + public static void drawCoverageRect(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, int var6) { + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + atd var10 = null; + float var12 = 0.0F; + int var11 = 268881953; + + while (true) { + switch (var11) { + case -1382296879: + var9 = var12; + var0.pushMatrix(); + var10 = shapeProgram(rectangleProgram); + var10.use(); + var10.setSize(var3 + var7, var4 + var7); + var10.setRadius(var9, var9, var9, var9); + var10.setSmoothness(var7); + drawSetup(); + emitShapeQuad(var10, 0.0F, var0, var1 - var8, var2 - var8, var3 + var7, var4 + var7, var6); + drawEnd(); + var0.popMatrix(); + return; + case -1047296658: + if (var4 <= 0.0F) { + var11 = -677069882; + } else { + var11 = 941921198; + } + break; + case -677069882: + return; + case -621304042: + var12 = var5 + var8; + var11 = -1382296879; + break; + case 268881953: + default: + if (var6 >>> 24!= 0) { + var11 = 1487859227; + } else { + var11 = -677069882; + } + break; + case 941921198: + var7 = 1.0F / Math.max(0.01F, pixelsPerUnit(var0)); + var8 = var7 * 0.5F; + if (var5 > 0.0F) { + var11 = -621304042; + } else { + var11 = 2053307453; + } + break; + case 1487859227: + if (!(var3 <= 0.0F)) { + var11 = -1047296658; + } else { + var11 = -677069882; + } + break; + case 2053307453: + var12 = 0.0F; + var11 = -1382296879; + } + } + } + + private static void emitRectangle( + Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, float var10 + ) { + var0.pushMatrix(); + atd var11 = shapeProgram(rectangleProgram); + var11.use(); + var11.setSize(var3, var4); + var11.setRadius(var5, var8, var6, var7); + var11.setSmoothness(var10); + drawSetup(); + float var12 = -var10 / 2.0F + var10 * 2.0F; + float var13 = var10 / 2.0F + var10; + float var14 = var1 - var12 / 2.0F; + float var15 = var2 - var13 / 2.0F; + float var16 = var3 + var12; + float var17 = var4 + var13; + emitShapeQuad(var11, 0.0F, var0, var14, var15, var16, var17, var9); + drawEnd(); + var0.popMatrix(); + } + + public static void drawRoundedRect(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, asu var6, asu var7, asu var8, asu var9) { + var0.pushMatrix(); + Matrix4f var10 = arb.toMatrix4f(var0); + float var11 = antialiasSmoothness(var0); + atd var12 = shapeProgram(gradientRectangleProgram); + var12.use(); + var12.setSize(var3, var4); + var12.setRadius(var5.topLeftRadius(), var5.bottomLeftRadius(), var5.topRightRadius(), var5.bottomRightRadius()); + var12.setSmoothness(var11); + var12.setTopLeftColor(var6.getRed() / 255.0F, var6.getGreen() / 255.0F, var6.getBlue() / 255.0F, var6.getAlpha() / 255.0F); + var12.setBottomLeftColor(var7.getRed() / 255.0F, var7.getGreen() / 255.0F, var7.getBlue() / 255.0F, var7.getAlpha() / 255.0F); + var12.setBottomRightColor(var8.getRed() / 255.0F, var8.getGreen() / 255.0F, var8.getBlue() / 255.0F, var8.getAlpha() / 255.0F); + var12.setTopRightColor(var9.getRed() / 255.0F, var9.getGreen() / 255.0F, var9.getBlue() / 255.0F, var9.getAlpha() / 255.0F); + drawSetup(); + float var13 = -var11 / 2.0F + var11 * 2.0F; + float var14 = var11 / 2.0F + var11; + float var15 = var1 - var13 / 2.0F; + float var16 = var2 - var14 / 2.0F; + float var17 = var3 + var13; + float var18 = var4 + var14; + emitShapeQuad(var12, 7.0F, var0, var15, var16, var17, var18, var6.getRGB(), var7.getRGB(), var8.getRGB(), var9.getRGB()); + drawEnd(); + var0.popMatrix(); + } + + public static void drawRoundedRect(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, ary var6) { + drawRoundedRect( + var0, var1, var2, var3, var4, var5, var6.getTopLeftColor(), var6.getBottomLeftColor(), var6.getBottomRightColor(), var6.getTopRightColor() + ); + } + + public static void drawGlossSweep(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, float var6, float var7, asu var8) { + drawGlossSweep(var0, var1, var2, var3, var4, var5, var6, var7, 0.7071F, 0.7071F, var8); + } + + public static void drawGlossSweep( + Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, float var6, float var7, float var8, float var9, asu var10 + ) { + Object var11 = null; + float var12 = 0.0F; + atd var13 = null; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + int var20 = -393254220; + + while (true) { + switch (var20) { + case -1183674889: + if (!(var4 <= 0.0F)) { + var20 = -1015671540; + } else { + var20 = -959607997; + } + break; + case -1015671540: + if (var10.getAlpha() != 0) { + var20 = 915176014; + } else { + var20 = -959607997; + } + break; + case -959607997: + return; + case -393254220: + default: + if (!(var3 <= 0.0F)) { + var20 = -1183674889; + } else { + var20 = -959607997; + } + break; + case 300460167: + var0.pushMatrix(); + var11 = arb.toMatrix4f(var0); + var12 = 0.8F; + var13 = shapeProgram(glossProgram); + var13.use(); + var13.setSize(var3, var4); + var13.setRadius(var5.topLeftRadius(), var5.bottomLeftRadius(), var5.topRightRadius(), var5.bottomRightRadius()); + var13.setSmoothness(var12); + var13.setProgress(var6); + var13.setStripeWidth(Math.max(var7, 1.0E-4F)); + var13.setGlossDirection(var8, var9); + drawSetup(); + var14 = -var12 / 2.0F + var12 * 2.0F; + var15 = var12 / 2.0F + var12; + var16 = var1 - var14 / 2.0F; + var17 = var2 - var15 / 2.0F; + var18 = var3 + var14; + var19 = var4 + var15; + emitShapeQuad(var13, 5.0F, var0, var16, var17, var18, var19, var10.getRGB()); + drawEnd(); + var0.popMatrix(); + return; + case 915176014: + if (glossProgram == null) { + var20 = -959607997; + } else { + var20 = 300460167; + } + } + } + } + + public static float glossPhase() { + float var0 = 0.0F; + float var1 = 0.0F; + int var2 = 1116563919; + + while (true) { + switch (var2) { + case -1455803831: + return 3.0F; + case -482463078: + var1 = var0 / 0.5F; + var1 = var1 * var1 * (3.0F - 2.0F * var1); + return Mth.lerp(var1, -0.35F, 1.35F); + case 1116563919: + } + + var0 = (float)(System.currentTimeMillis() % ((-925570405282794718L ^ 925570405282798518L) + ((-925570405282794718L & 925570405282798518L) << 1))) + / 3800.0F; + if (var0 > 0.5F) { + var2 = -1455803831; + } else { + var2 = -482463078; + } + } + } + + public static float glossAngle() { + long var0 = System.currentTimeMillis() / ((-116589884299052199L | 116589884299055999L) + (-116589884299052199L & 116589884299055999L)); + return (float) (Math.PI * 3.0 / 4.0) + + (float) (Math.PI / 2) * (float)(var0 % ((-2114506885374843197L ^ 2114506885374843201L) + ((-2114506885374843197L & 2114506885374843201L) << 1))); + } + + public static void drawAnimatedGloss(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, float var6) { + int var7 = 0; + float var8 = 0.0F; + int var9 = 143171281; + + while (true) { + switch (var9) { + case 143171281: + default: + if (var6 <= 0.0F) { + var9 = 1348214935; + } else { + var9 = 318834943; + } + break; + case 318834943: + var7 = Math.round(150.0F * Math.min(var6, 1.0F)); + if (var7 <= 0) { + var9 = 903414249; + } else { + var9 = 599489654; + } + break; + case 599489654: + var8 = glossAngle(); + drawGlossSweep(var0, var1, var2, var3, var4, var5, glossPhase(), 0.085F, Mth.cos(var8), Mth.sin(var8), asu.WHITE.withAlpha(var7)); + return; + case 903414249: + return; + case 1348214935: + return; + } + } + } + + public static void drawThemeBackdrop(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, nl var6, ng var7, float var8) { + float var9 = 0.0F; + asu var10 = null; + asu var11 = null; + asu var12 = null; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = 1663686392; + + while (true) { + switch (var15) { + case -2104406606: + if (!(var3 <= 0.0F)) { + var15 = -1619807763; + } else { + var15 = -452845824; + } + break; + case -1999550564: + if (!var6.isActive()) { + var15 = -452845824; + } else { + var15 = -398964686; + } + break; + case -1619807763: + if (!(var4 <= 0.0F)) { + var15 = -1185222998; + } else { + var15 = -452845824; + } + break; + case -1185222998: + if (!(var8 <= 0.0F)) { + var15 = -1999550564; + } else { + var15 = -452845824; + } + break; + case -797889216: + if (var7 != null) { + var15 = -2104406606; + } else { + var15 = -452845824; + } + break; + case -779837555: + if (var6 != null) { + var15 = -797889216; + } else { + var15 = -452845824; + } + break; + case -452845824: + return; + case -398964686: + var0.pushMatrix(); + var9 = 0.8F; + themeBackdropProgram.use(); + arj.setCurrentLayer(arj.positionColor()); + themeBackdropProgram.setSize(var3, var4); + themeBackdropProgram.setRadius(var5.topLeftRadius(), var5.bottomLeftRadius(), var5.topRightRadius(), var5.bottomRightRadius()); + themeBackdropProgram.setSmoothness(var9); + themeBackdropProgram.setTime(backdropTime(var6.speed())); + themeBackdropProgram.setBackdrop(var6.mode().shaderId(), var6.intensity(), 300.0F, var6.scale()); + var10 = var7.start(); + var11 = var7.middle(); + var12 = var7.end(); + themeBackdropProgram.setTopLeftColor(redOf(var10), greenOf(var10), blueOf(var10), 1.0F); + themeBackdropProgram.setBottomLeftColor(redOf(var11), greenOf(var11), blueOf(var11), 1.0F); + themeBackdropProgram.setTopRightColor(redOf(var12), greenOf(var12), blueOf(var12), 1.0F); + drawSetup(); + var13 = -var9 / 2.0F + var9 * 2.0F; + var14 = var9 / 2.0F + var9; + emitShapeQuad( + themeBackdropProgram, + var0, + var1 - var13 / 2.0F, + var2 - var14 / 2.0F, + var3 + var13, + var4 + var14, + withAlpha(16777215, var8) + ); + drawEnd(); + var0.popMatrix(); + return; + case 1663686392: + default: + if (themeBackdropProgram != null) { + var15 = -779837555; + } else { + var15 = -452845824; + } + } + } + } + + public static boolean isMenuBackdropReady() { + int var1 = 0; + int var0 = 626472859; + + while (true) { + switch (var0) { + case 626472859: + default: + if (menuBackdropProgram != null) { + var0 = 1672492659; + } else { + var0 = 1668581509; + } + break; + case 1034637043: + return (boolean)((var1) != 0); + case 1066234325: + var1 = 1; + var0 = 1034637043; + break; + case 1668581509: + var1 = 0; + var0 = 1034637043; + break; + case 1672492659: + if (atd.areProgramsReady()) { + var0 = 1066234325; + } else { + var0 = 1668581509; + } + } + } + } + + public static void drawMenuBackdrop( + Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, float var6, ng var7, float var8, float var9, float var10 + ) { + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + asu var16 = null; + asu var17 = null; + asu var18 = null; + int var19 = 1342289598; + + while (true) { + switch (var19) { + case -1680863603: + if (!(var8 <= 0.0F)) { + var19 = 1047539328; + } else { + var19 = 260623581; + } + break; + case -1530099971: + if (!(var3 <= 0.0F)) { + var19 = 359709952; + } else { + var19 = 260623581; + } + break; + case -1516531173: + if (var7 != null) { + var19 = -1530099971; + } else { + var19 = 260623581; + } + break; + case 260623581: + return; + case 323876250: + var0.pushMatrix(); + var11 = 0.8F; + var12 = -var11 / 2.0F + var11 * 2.0F; + var13 = var11 / 2.0F + var11; + var14 = var1 - var12 / 2.0F; + var15 = var2 - var13 / 2.0F; + menuBackdropProgram.use(); + arj.setCurrentLayer(arj.positionColor()); + menuBackdropProgram.setSize(var3, var4); + menuBackdropProgram.setRadius(var5.topLeftRadius(), var5.bottomLeftRadius(), var5.topRightRadius(), var5.bottomRightRadius()); + menuBackdropProgram.setSmoothness(var11); + menuBackdropProgram.setTime(backdropTime(1.0F)); + menuBackdropProgram.setBackdrop(var6, 1.0F, 300.0F, 1.0F); + menuBackdropProgram.setResolution(var8, var9); + menuBackdropProgram.setSweepOrigin(var14, var15); + var16 = var7.start(); + var17 = var7.middle(); + var18 = var7.end(); + menuBackdropProgram.setTopLeftColor(redOf(var16), greenOf(var16), blueOf(var16), 1.0F); + menuBackdropProgram.setBottomLeftColor(redOf(var17), greenOf(var17), blueOf(var17), 1.0F); + menuBackdropProgram.setTopRightColor(redOf(var18), greenOf(var18), blueOf(var18), 1.0F); + drawSetup(); + emitShapeQuad( + menuBackdropProgram, + var0, + var14, + var15, + var3 + var12, + var4 + var13, + withAlpha(16777215, var10) + ); + drawEnd(); + var0.popMatrix(); + return; + case 359709952: + if (!(var4 <= 0.0F)) { + var19 = 396485243; + } else { + var19 = 260623581; + } + break; + case 396485243: + if (!(var10 <= 0.0F)) { + var19 = -1680863603; + } else { + var19 = 260623581; + } + break; + case 1047539328: + if (var9 <= 0.0F) { + var19 = 260623581; + } else { + var19 = 323876250; + } + break; + case 1342289598: + default: + if (menuBackdropProgram != null) { + var19 = -1516531173; + } else { + var19 = 260623581; + } + } + } + } + + private static float redOf(asu var0) { + return var0.getRed() / 255.0F; + } + + private static float greenOf(asu var0) { + return var0.getGreen() / 255.0F; + } + + private static float blueOf(asu var0) { + return var0.getBlue() / 255.0F; + } + + private static float backdropTime(float var0) { + double var1 = 0.0; + int var3 = 436828940; + + while (true) { + switch (var3) { + case -961844424: + return (float)(var1 / 1000.0); + case -756192759: + var1 += 300000.0; + var3 = -961844424; + break; + case 436828940: + default: + var1 = (double)System.currentTimeMillis() * var0 % 300000.0; + if (var1 < 0.0) { + var3 = -756192759; + } else { + var3 = -961844424; + } + } + } + } + + public static void drawRoundedBorder(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, arq var6, asu var7) { + drawRoundedBorder(var0, var1, var2, var3, var4, var5, var6, var7.getRGB()); + } + + public static void drawRoundedBorder(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, arq var6, int var7) { + drawRoundedBorder( + var0, var1, var2, var3, var4, var5, var6.topLeftRadius(), var6.topRightRadius(), var6.bottomRightRadius(), var6.bottomLeftRadius(), var7 + ); + } + + public static void drawRoundedBorder(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, arq var6, ary var7) { + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + float var12 = 0.0F; + float var13 = 0.0F; + atd var14 = null; + float var15 = 0.0F; + float var16 = 0.0F; + int var17 = -1266257494; + + while (true) { + switch (var17) { + case -1933918114: + return; + case -1266257494: + default: + var8 = var7.getTopLeftColor().getRGB(); + var9 = var7.getBottomLeftColor().getRGB(); + var10 = var7.getBottomRightColor().getRGB(); + var11 = var7.getTopRightColor().getRGB(); + if ((var8 | var9 | var10 | var11) >>> (-1865444353 | 1865444377) + (-1865444353 & 1865444377) + <= (-819407523 | 819407528) + (-819407523 & 819407528)) { + var17 = -1933918114; + } else { + var17 = 271057982; + } + break; + case 271057982: + var0.pushMatrix(); + var12 = 0.8F; + var13 = 1.0F; + var14 = shapeProgram(borderProgram); + var14.use(); + var14.setSize(var3, var4); + var14.setRadius(var6.topLeftRadius(), var6.bottomLeftRadius(), var6.topRightRadius(), var6.bottomRightRadius()); + var14.setSmoothness(var12, var13); + var14.setThickness(var5); + drawSetup(); + var15 = -var13 / 2.0F + var13 * 2.0F; + var16 = var13 / 2.0F + var13; + emitShapeQuad(var14, 2.0F, var0, var1 - var15 / 2.0F, var2 - var16 / 2.0F, var3 + var15, var4 + var16, var8, var9, var10, var11); + drawEnd(); + var0.popMatrix(); + return; + } + } + } + + public static void drawRoundedBorder( + Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9, int var10 + ) { + Object var11 = null; + float var12 = 0.0F; + float var13 = 0.0F; + atd var14 = null; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + int var21 = 1716150495; + + while (true) { + switch (var21) { + case -1933543026: + var0.pushMatrix(); + var11 = arb.toMatrix4f(var0); + var12 = 0.8F; + var13 = 1.0F; + var14 = shapeProgram(borderProgram); + var14.use(); + var14.setSize(var3, var4); + var14.setRadius(var6, var9, var7, var8); + var14.setSmoothness(var12, var13); + var14.setThickness(var5); + drawSetup(); + var15 = -var13 / 2.0F + var13 * 2.0F; + var16 = var13 / 2.0F + var13; + var17 = var1 - var15 / 2.0F; + var18 = var2 - var16 / 2.0F; + var19 = var3 + var15; + var20 = var4 + var16; + emitShapeQuad(var14, 2.0F, var0, var17, var18, var19, var20, var10); + drawEnd(); + var0.popMatrix(); + return; + case -1511353056: + return; + case 1716150495: + } + + if (var10 >>> (-1653695585 | 1653695609) + (-1653695585 & 1653695609) <= (-951387286 | 951387291) + (-951387286 & 951387291)) { + var21 = -1511353056; + } else { + var21 = -1933543026; + } + } + } + + public static void drawRoundedCorner(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, float var6, asu var7, arq var8) { + var1 -= 0.3F; + var2 -= 0.3F; + var3 += 0.6F; + var4 += 0.6F; + drawRoundedCornerOnly(var0, var1, var2, var6, var6, var5, var8, var7, 0.0F); + drawRoundedCornerOnly(var0, var1 + var3 - var6, var2, var6, var6, var5, var8, var7, 1.0F); + drawRoundedCornerOnly(var0, var1, var2 + var4 - var6, var6, var6, var5, var8, var7, 2.0F); + drawRoundedCornerOnly(var0, var1 + var3 - var6, var2 + var4 - var6, var6, var6, var5, var8, var7, 3.0F); + } + + public static void drawRoundedCornerOnly(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, arq var6, asu var7, float var8) { + var0.pushMatrix(); + Matrix4f var9 = arb.toMatrix4f(var0); + float var10 = 0.8F; + float var11 = 1.0F; + atd var12 = shapeProgram(figmaBorderProgram); + var12.use(); + var12.setSize(var3, var4); + var12.setRadius(var6.topLeftRadius(), var6.bottomLeftRadius(), var6.topRightRadius(), var6.bottomRightRadius()); + var12.setSmoothness(var10, var11); + var12.setThickness(var5); + var12.setCornerIndex(var8); + drawSetup(); + float var13 = -var11 / 2.0F + var11 * 2.0F; + float var14 = var11 / 2.0F + var11; + float var15 = var1 - var13 / 2.0F; + float var16 = var2 - var14 / 2.0F; + float var17 = var3 + var13; + float var18 = var4 + var14; + emitShapeQuad(var12, 3.0F, var0, var15, var16, var17, var18, var7.getRGB()); + drawEnd(); + var0.popMatrix(); + } + + public static void drawTexture(Matrix3x2fStack var0, Identifier var1, float var2, float var3, float var4, float var5, asu var6) { + var0.pushMatrix(); + Matrix4f var7 = arb.toMatrix4f(var0); + usePassthroughTexture(var1); + drawSetup(); + int var8 = var6.getRGB(); + BufferBuilder var9 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var9.addVertex(var7, var2, var3, 0.0F).setUv(0.0F, 0.0F).setColor(var8); + var9.addVertex(var7, var2, var3 + var5, 0.0F).setUv(0.0F, 1.0F).setColor(var8); + var9.addVertex(var7, var2 + var4, var3 + var5, 0.0F).setUv(1.0F, 1.0F).setColor(var8); + var9.addVertex(var7, var2 + var4, var3, 0.0F).setUv(1.0F, 0.0F).setColor(var8); + arj.drawCurrent(var9); + drawEnd(); + var0.popMatrix(); + } + + public static void drawTexture(Matrix3x2fStack var0, Identifier var1, float var2, float var3, float var4, float var5, ary var6) { + drawTexture(var0, var1, var2, var3, var4, var5, var6, (boolean)((((708782765 | -708782765) + (708782765 & -708782765))) != 0)); + } + + public static void drawTexture(Matrix3x2fStack var0, Identifier var1, float var2, float var3, float var4, float var5, ary var6, boolean var7) { + var0.pushMatrix(); + Matrix4f var8 = arb.toMatrix4f(var0); + usePassthroughTexture(var1, var7 ? roundedTextureAdditiveProgram : roundedTextureProgram); + drawSetup(); + BufferBuilder var9 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var9.addVertex(var8, var2, var3, 0.0F).setUv(0.0F, 0.0F).setColor(var6.getTopLeftColor().getRGB()); + var9.addVertex(var8, var2, var3 + var5, 0.0F).setUv(0.0F, 1.0F).setColor(var6.getBottomLeftColor().getRGB()); + var9.addVertex(var8, var2 + var4, var3 + var5, 0.0F).setUv(1.0F, 1.0F).setColor(var6.getBottomRightColor().getRGB()); + var9.addVertex(var8, var2 + var4, var3, 0.0F).setUv(1.0F, 0.0F).setColor(var6.getTopRightColor().getRGB()); + arj.drawCurrent(var9); + drawEnd(); + var0.popMatrix(); + } + + public static void drawTexture( + Matrix3x2fStack var0, Identifier var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9, asu var10 + ) { + var0.pushMatrix(); + int var11 = var10.getRGB(); + Matrix4f var12 = arb.toMatrix4f(var0); + float var13 = var2 + var4; + float var14 = var3 + var5; + usePassthroughTexture(var1); + drawSetup(); + BufferBuilder var15 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var15.addVertex(var12, var2, var3, 0.0F).setUv(var6, var8).setColor(var11); + var15.addVertex(var12, var2, var14, 0.0F).setUv(var6, var9).setColor(var11); + var15.addVertex(var12, var13, var14, 0.0F).setUv(var7, var9).setColor(var11); + var15.addVertex(var12, var13, var3, 0.0F).setUv(var7, var8).setColor(var11); + arj.drawCurrent(var15); + drawEnd(); + var0.popMatrix(); + } + + public static void drawTexturedQuad( + Matrix3x2fStack var0, + Identifier var1, + float var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13, + float var14, + float var15, + float var16, + float var17, + asu var18 + ) { + var0.pushMatrix(); + int var19 = var18.getRGB(); + Matrix4f var20 = arb.toMatrix4f(var0); + BufferBuilder var21 = beginBatchedTexturedQuads(var1); + var21.addVertex(var20, var2, var3, 0.0F).setUv(var10, var11).setColor(var19); + var21.addVertex(var20, var4, var5, 0.0F).setUv(var12, var13).setColor(var19); + var21.addVertex(var20, var6, var7, 0.0F).setUv(var14, var15).setColor(var19); + var21.addVertex(var20, var8, var9, 0.0F).setUv(var16, var17).setColor(var19); + endBatchedTexturedQuads(var21); + var0.popMatrix(); + } + + private static void usePassthroughTexture(Identifier var0) { + usePassthroughTexture(var0, roundedTextureProgram); + } + + private static void usePassthroughTexture(Identifier var0, atd var1) { + var1.use(); + arj.setCurrentLayer(arj.guiTextured(var0)); + var1.setSize(8192.0F, 8192.0F); + var1.setRadius(0.0F, 0.0F, 0.0F, 0.0F); + var1.setSmoothness(0.8F); + } + + public static BufferBuilder beginBatchedTexturedQuads(Identifier var0) { + usePassthroughTexture(var0); + drawSetup(); + return arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + } + + public static void endBatchedTexturedQuads(BufferBuilder var0) { + arj.drawCurrent(var0); + drawEnd(); + } + + public static BufferBuilder beginBatchedShaderQuads(atd var0, float var1) { + var0.use(); + arj.setCurrentLayer(arj.positionColor()); + Minecraft var2 = Minecraft.getInstance(); + float var3 = (float)( + System.currentTimeMillis() % ((-4109461821113060666L ^ 4109461821113160666L) + ((-4109461821113060666L & 4109461821113160666L) << 1)) + ) + / 1000.0F; + var0.setResolution(var2.getWindow().getWidth(), var2.getWindow().getHeight()); + var0.setTime(var3); + var0.setTintColor(0.4F, 0.2F, 1.0F); + var0.setFade(var1); + drawSetup(); + return arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_COLOR); + } + + public static void endBatchedShaderQuads(BufferBuilder var0) { + arj.drawCurrent(var0); + drawEnd(); + } + + public static void drawSprite(Matrix3x2fStack var0, arv var1, float var2, float var3, float var4, float var5, asu var6) { + drawTexture(var0, var1.getTexture(), var2, var3, var4, var5, 0.0F, 1.0F, 0.0F, 1.0F, var6); + } + + public static void drawRoundedTexture(Matrix3x2fStack var0, Identifier var1, float var2, float var3, float var4, float var5, arq var6) { + drawRoundedTexture(var0, var1, var2, var3, var4, var5, var6, asu.WHITE); + } + + public static void drawRoundedTexture(Matrix3x2fStack var0, Identifier var1, float var2, float var3, float var4, float var5, arq var6, asu var7) { + var0.pushMatrix(); + Matrix4f var8 = arb.toMatrix4f(var0); + float var9 = 0.8F; + roundedTextureProgram.use(); + arj.setCurrentLayer(arj.guiTextured(var1)); + roundedTextureProgram.setSize(var4, var5); + roundedTextureProgram.setRadius(var6.topLeftRadius(), var6.bottomLeftRadius(), var6.topRightRadius(), var6.bottomRightRadius()); + roundedTextureProgram.setSmoothness(var9); + drawSetup(); + float var10 = -var9 / 2.0F + var9 * 2.0F; + float var11 = var9 / 2.0F + var9; + float var12 = var2 - var10 / 2.0F; + float var13 = var3 - var11 / 2.0F; + float var14 = var4 + var10; + float var15 = var5 + var11; + int var16 = var7.getRGB(); + BufferBuilder var17 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var17.addVertex(var8, var12, var13, 0.0F).setUv(0.0F, 0.0F).setColor(var16); + var17.addVertex(var8, var12, var13 + var15, 0.0F).setUv(0.0F, 1.0F).setColor(var16); + var17.addVertex(var8, var12 + var14, var13 + var15, 0.0F).setUv(1.0F, 1.0F).setColor(var16); + var17.addVertex(var8, var12 + var14, var13, 0.0F).setUv(1.0F, 0.0F).setColor(var16); + arj.drawCurrent(var17); + drawEnd(); + var0.popMatrix(); + } + + public static void drawShadow(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, arq var6, asu var7) { + int var8 = -724081024; + + while (true) { + switch (var8) { + case -1725180107: + drawShadow(var0, var1, var2, var3, var4, var5, var6, var7.getRGB()); + return; + case -724081024: + default: + if (var7.getAlpha() <= (-1104137986 ^ 1104137991) + ((-1104137986 & 1104137991) << 1)) { + var8 = -540762344; + } else { + var8 = -1725180107; + } + break; + case -540762344: + return; + } + } + } + + public static void drawShadow(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, arq var6, int var7) { + Object var8 = null; + atd var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = -963432793; + + while (true) { + switch (var15) { + case -963432793: + default: + if (var7 >>> (-459638210 | 459638234) + (-459638210 & 459638234) <= (-967052667 | 967052672) + (-967052667 & 967052672)) { + var15 = 278018596; + } else { + var15 = -68954478; + } + break; + case -68954478: + var0.pushMatrix(); + var8 = arb.toMatrix4f(var0); + var9 = shapeProgram(rectangleProgram); + var9.use(); + var10 = var5; + var11 = var3 + var10 * 2.0F; + var12 = var4 + var10 * 2.0F; + var13 = var1 - var10; + var14 = var2 - var10; + var9.setSize(var11, var12); + var9.setRadius(var6.topLeftRadius() + var10, var6.bottomLeftRadius() + var10, var6.topRightRadius() + var10, var6.bottomRightRadius() + var10); + var9.setSmoothness(var5); + drawSetup(); + emitShapeQuad(var9, 0.0F, var0, var13, var14, var11, var12, var7); + drawEnd(); + var0.popMatrix(); + return; + case 278018596: + return; + } + } + } + + public static void drawBlur(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, float var6, arq var7, asu var8) { + Matrix4f var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + int var17 = 0; + int var18 = 0; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + BufferBuilder var23 = null; + int var24 = 0; + int var25 = -723218474; + + while (true) { + switch (var25) { + case -1650771894: + blurProgram.setBlurRadius(2.0F); + squircleTextureProgram.use(); + arj.setCurrentLayer(arj.guiTexturedNoTexture()); + atd.bindTexture(asx.getTexture(), (boolean)((((-1385404119 ^ 1385404120) + ((-1385404119 & 1385404120) << 1))) != 0)); + squircleTextureProgram.setSize(var3, var4); + squircleTextureProgram.setRadius( + var7.topLeftRadius() * var6 / 2.0F, + var7.bottomLeftRadius() * var6 / 2.0F, + var7.topRightRadius() * var6 / 2.0F, + var7.bottomRightRadius() * var6 / 2.0F + ); + squircleTextureProgram.setSmoothness(0.1F); + squircleTextureProgram.setCornerSmoothness(var6); + drawSetup(); + var11 = -var10 / 2.0F + var10 * 2.0F; + var12 = var10 / 2.0F + var10; + var13 = var1 - var11 / 2.0F; + var14 = var2 - var12 / 2.0F; + var15 = var3 + var11; + var16 = var4 + var12; + var17 = mc.getWindow().getGuiScaledWidth(); + var18 = mc.getWindow().getGuiScaledHeight(); + var19 = var13 / var17; + var20 = (var18 - var14 - var16) / var18; + var21 = var15 / var17; + var22 = var16 / var18; + var23 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var24 = var8.getRGB(); + var23.addVertex(var9, var13, var14, 0.0F).setUv(var19, var20 + var22).setColor(var24); + var23.addVertex(var9, var13, var14 + var16, 0.0F).setUv(var19, var20).setColor(var24); + var23.addVertex(var9, var13 + var15, var14 + var16, 0.0F).setUv(var19 + var21, var20).setColor(var24); + var23.addVertex(var9, var13 + var15, var14, 0.0F).setUv(var19 + var21, var20 + var22).setColor(var24); + arj.drawCurrent(var23); + drawEnd(); + atd.clearBoundTexture(); + var0.popMatrix(); + return; + case -723218474: + default: + var0.pushMatrix(); + var9 = arb.toMatrix4f(var0); + var10 = 0.03F; + var5 /= 22.5F; + if (var5 <= 0.0F) { + var25 = 1803329316; + } else { + var25 = -1650771894; + } + break; + case 1803329316: + return; + } + } + } + + public static void drawBlurHud(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, arq var6, asu var7) { + float var8 = 0.0F; + int var9 = -1973726663; + + while (true) { + switch (var9) { + case -1973726663: + default: + var8 = vm.INSTANCE.getBlurFactor(); + if (var8 > 0.003F) { + var9 = -1471103494; + } else { + var9 = -323113225; + } + break; + case -1471103494: + drawBlurHudBooleanCheck( + var0, var1, var2, var3, var4, var5, var6, var7.mulAlpha(var8), (boolean)((((802168947 ^ -802168946) + ((802168947 & -802168946) << 1)) + ) != 0)); + var9 = -323113225; + break; + case -323113225: + return; + } + } + } + + public static void drawBlurHudBooleanCheck( + Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, arq var6, asu var7, boolean var8 + ) { + Matrix4f var9 = null; + int var10 = 0; + int var11 = 0; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + float var27 = 0.0F; + float var28 = 0.0F; + float var29 = 0.0F; + float var30 = 0.0F; + float var31 = 0.0F; + float var32 = 0.0F; + float var33 = 0.0F; + BufferBuilder var34 = null; + int var35 = 0; + int var36 = -895589076; + + while (true) { + switch (var36) { + case -2001171553: + return; + case -895589076: + default: + if (var8) { + var36 = 184372015; + } else { + var36 = -2001171553; + } + break; + case 184372015: + if (var5 > 0.0F) { + var36 = 1645510679; + } else { + var36 = -2001171553; + } + break; + case 684654603: + var0.pushMatrix(); + var9 = arb.toMatrix4f(var0); + textureBlurProgram.use(); + arj.setCurrentLayer(arj.guiTexturedNoTexture()); + atd.bindTexture(asx.getTexture(), (boolean)((((959016972 | -959016971) + (959016972 & -959016971))) != 0)); + textureBlurProgram.setSize(var3, var4); + textureBlurProgram.setRadius(var6.topLeftRadius(), var6.bottomLeftRadius(), var6.topRightRadius(), var6.bottomRightRadius()); + textureBlurProgram.setSmoothness(0.8F); + textureBlurProgram.setBlurRadius(var5); + drawSetup(); + var10 = mc.getWindow().getGuiScaledWidth(); + var11 = mc.getWindow().getGuiScaledHeight(); + var12 = var9.m00(); + var13 = var9.m10(); + var14 = var9.m30(); + var15 = var9.m01(); + var16 = var9.m11(); + var17 = var9.m31(); + var18 = var12 * var1 + var13 * var2 + var14; + var19 = var15 * var1 + var16 * var2 + var17; + var20 = var18 / var10; + var21 = (var11 - var19) / var11; + var22 = var12 * var1 + var13 * (var2 + var4) + var14; + var23 = var15 * var1 + var16 * (var2 + var4) + var17; + var24 = var22 / var10; + var25 = (var11 - var23) / var11; + var26 = var12 * (var1 + var3) + var13 * (var2 + var4) + var14; + var27 = var15 * (var1 + var3) + var16 * (var2 + var4) + var17; + var28 = var26 / var10; + var29 = (var11 - var27) / var11; + var30 = var12 * (var1 + var3) + var13 * var2 + var14; + var31 = var15 * (var1 + var3) + var16 * var2 + var17; + var32 = var30 / var10; + var33 = (var11 - var31) / var11; + var34 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var35 = var7.getRGB(); + var34.addVertex(var9, var1, var2, 0.0F).setUv(var20, var21).setColor(var35); + var34.addVertex(var9, var1, var2 + var4, 0.0F).setUv(var24, var25).setColor(var35); + var34.addVertex(var9, var1 + var3, var2 + var4, 0.0F).setUv(var28, var29).setColor(var35); + var34.addVertex(var9, var1 + var3, var2, 0.0F).setUv(var32, var33).setColor(var35); + arj.drawCurrent(var34); + drawEnd(); + var0.popMatrix(); + var36 = -2001171553; + break; + case 1645510679: + if (asx.isResultAvailable()) { + var36 = 684654603; + } else { + var36 = -2001171553; + } + } + } + } + + public static void drawFboBlurFullscreen(RenderTarget var0, float var1, asu var2) { + if (!(var1 <= 0.0F) && var0 != null && var2.getAlpha() > 0 && hitboxGlowBlurProgram != null) { + int var3 = Math.max( + 1, var0.width / ((-1921497925 ^ 1921497927) + ((-1921497925 & 1921497927) << 1)) + ); + int var4 = Math.max( + 1, var0.height / ((2110741481 ^ -2110741479) + ((2110741481 & -2110741479) << 1)) + ); + if (var3 > 0 && var4 > 0) { + ensureHitboxGlowBlurScratch(var3, var4); + if (hitboxGlowBlurScratch != null) { + float var5 = mc.getWindow().getGuiScaledWidth(); + float var6 = mc.getWindow().getGuiScaledHeight(); + atf.flush(); + RenderSystem.getDevice().createCommandEncoder().clearColorTexture(hitboxGlowBlurScratch.getColorTexture(), EVO_CLEAR_TRANSPARENT); + GpuTextureView var7 = atd.getWorldColorTarget(); + GpuTextureView var8 = atd.getWorldDepthTarget(); + beginGui(); + + try { + atd.setWorldTarget(hitboxGlowBlurScratch.getColorTextureView(), null); + drawHitboxGlowBlurPass(var0.getColorTextureView(), var1, 0.0F, asu.WHITE, var5, var6); + atd.setWorldTarget(var7, var8); + drawHitboxGlowBlurPass(hitboxGlowBlurScratch.getColorTextureView(), var1 * 0.5F, 1.0F, var2, var5, var6); + } finally { + atd.setWorldTarget(var7, var8); + endGui(); + } + } + } + } + } + + private static void ensureHitboxGlowBlurScratch(int var0, int var1) { + int var2 = -1280193241; + + while (true) { + switch (var2) { + case -1280193241: + default: + if (hitboxGlowBlurScratch == null) { + var2 = -307967783; + } else { + var2 = 1092484239; + } + break; + case -307967783: + hitboxGlowBlurScratch = new TextureTarget( + "evo_hitbox_glow_blur", + var0, + var1, + (boolean)(((0)) != 0), + GpuFormat.RGBA8_UNORM + ); + var2 = 1397294155; + break; + case 407130768: + hitboxGlowBlurScratch.resize(var0, var1); + var2 = 1397294155; + break; + case 1092484239: + if (hitboxGlowBlurScratch.width == var0) { + var2 = 1887322502; + } else { + var2 = 407130768; + } + break; + case 1397294155: + return; + case 1887322502: + if (hitboxGlowBlurScratch.height != var1) { + var2 = 407130768; + } else { + var2 = 1397294155; + } + } + } + } + + private static void drawHitboxGlowBlurPass(GpuTextureView var0, float var1, float var2, asu var3, float var4, float var5) { + hitboxGlowBlurProgram.use(); + arj.setCurrentLayer(arj.guiTexturedNoTexture()); + atd.bindTexture(var0, (boolean)((((836541472 ^ -836541471) + ((836541472 & -836541471) << 1))) != 0)); + hitboxGlowBlurProgram.setBlurRadius(var1); + hitboxGlowBlurProgram.setOffset(var2); + drawSetup(); + Matrix4f var6 = new Matrix4f(); + BufferBuilder var7 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + int var8 = var3.getRGB(); + var7.addVertex(var6, 0.0F, var5, 0.0F).setUv(0.0F, 0.0F).setColor(var8); + var7.addVertex(var6, var4, var5, 0.0F).setUv(1.0F, 0.0F).setColor(var8); + var7.addVertex(var6, var4, 0.0F, 0.0F).setUv(1.0F, 1.0F).setColor(var8); + var7.addVertex(var6, 0.0F, 0.0F, 0.0F).setUv(0.0F, 1.0F).setColor(var8); + arj.drawCurrent(var7); + drawEnd(); + atd.clearBoundTexture(); + } + + public static void drawSurface(Matrix3x2fStack var0, aso var1, float var2, float var3, float var4, float var5, arq var6, int var7) { + if (!(var4 <= 0.0F) && !(var5 <= 0.0F)) { + mx var8 = arx.style(); + float var9 = var6.topLeftRadius(); + float var10 = var6.topRightRadius(); + float var11 = var6.bottomRightRadius(); + float var12 = var6.bottomLeftRadius(); + float var13 = (var7 >>> (827869729 | -827869705) + (827869729 & -827869705) & (155691837 | -155691582) + (155691837 & -155691582)) / 255.0F; + float var14 = var8.glassProgress(); + asn var15 = var8.glassTier(var1); + int var16 = var8.neonIntensity(var1) > 0.0F + ? 1: 0; + if (var15 == asn.NONE || var14 <= 0.001F) { + drawRoundedRect(var0, var2, var3, var4, var5, var9, var10, var11, var12, var7); + } else if (var15 == asn.INNER) { + float var17 = 1.0F - var14; + if (var17 > 0.0F) { + drawRoundedRect(var0, var2, var3, var4, var5, var9, var10, var11, var12, asu.getRGBWithAlpha(var7, var17)); + } + + drawInnerGlass(var0, var8, var1, var2, var3, var4, var5, var9, var10, var11, var12, var13 * var14, (boolean)((var16) != 0)); + } else { + GpuTextureView var19 = arx.scene(); + int var18 = liquidGlassProgram != null && var19 != null + ? 1: 0; + if (var18 == 0 || var14 < 0.999F) { + drawRoundedRect(var0, var2, var3, var4, var5, var9, var10, var11, var12, var7); + } + + if (var18 != 0) { + drawRefractiveGlass(var0, var8, var19, var2, var3, var4, var5, var9, var10, var11, var12, var13, var14, (boolean)((var16) != 0)); + } + } + + if (var16 != 0) { + drawSurfaceRim(var0, var8, var1, var2, var3, var4, var5, var9, var10, var11, var12, var13); + } + } + } + + public static void drawGlassOverlay(Matrix3x2fStack var0, aso var1, float var2, float var3, float var4, float var5, arq var6, float var7) { + mx var8 = null; + float var9 = 0.0F; + asn var10 = null; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = 0; + GpuTextureView var16 = null; + int var18 = 0; + int var17 = -1106149162; + + while (true) { + switch (var17) { + case -2032842818: + if (var9 <= 0.001F) { + var17 = 1473364330; + } else { + var17 = 171622664; + } + break; + case -1925243375: + return; + case -1532938074: + var18 = 1; + var17 = 2093496903; + break; + case -1106149162: + default: + if (!(var4 <= 0.0F)) { + var17 = -969958571; + } else { + var17 = 1448097005; + } + break; + case -969958571: + if (!(var5 <= 0.0F)) { + var17 = 2052920804; + } else { + var17 = 1448097005; + } + break; + case -798798848: + drawInnerGlass(var0, var8, var1, var2, var3, var4, var5, var11, var12, var13, var14, var7 * var9, (boolean)((var15) != 0)); + return; + case -768180040: + var8 = arx.style(); + var9 = var8.glassProgress(); + var10 = var8.glassTier(var1); + if (var10 != asn.NONE) { + var17 = -2032842818; + } else { + var17 = 1473364330; + } + break; + case -215892469: + if (var16 != null) { + var17 = 469843401; + } else { + var17 = -1925243375; + } + break; + case 171622664: + var11 = var6.topLeftRadius(); + var12 = var6.topRightRadius(); + var13 = var6.bottomRightRadius(); + var14 = var6.bottomLeftRadius(); + if (var8.neonIntensity(var1) > 0.0F) { + var17 = -1532938074; + } else { + var17 = 1036129661; + } + break; + case 469843401: + drawRefractiveGlass(var0, var8, var16, var2, var3, var4, var5, var11, var12, var13, var14, var7, var9, (boolean)((var15) != 0)); + var17 = -1925243375; + break; + case 479142958: + var16 = arx.scene(); + if (liquidGlassProgram != null) { + var17 = -215892469; + } else { + var17 = -1925243375; + } + break; + case 1036129661: + var18 = 0; + var17 = 2093496903; + break; + case 1448097005: + return; + case 1473364330: + return; + case 2052920804: + if (var7 <= 0.0F) { + var17 = 1448097005; + } else { + var17 = -768180040; + } + break; + case 2093496903: + var15 = var18; + if (var10 == asn.INNER) { + var17 = -798798848; + } else { + var17 = 479142958; + } + } + } + } + + private static void drawSurfaceRim( + Matrix3x2fStack var0, mx var1, aso var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9, float var10, float var11 + ) { + int var12 = asu.getRGBWithAlpha(var1.rimColor(var2, (-1446985634 | 1446985634) + (-1446985634 & 1446985634)), var11); + int var13 = asu.getRGBWithAlpha(var1.rimColor(var2, (-774034243 ^ 774034244) + ((-774034243 & 774034244) << 1)), var11); + int var14 = asu.getRGBWithAlpha(var1.rimColor(var2, (-424916264 | 424916266) + (-424916264 & 424916266)), var11); + int var15 = asu.getRGBWithAlpha(var1.rimColor(var2, (1618064283 ^ -1618064280) + ((1618064283 & -1618064280) << 1)), var11); + emitNeonQuad( + var0, + 3.0F, + var3, + var4, + var5, + var6, + var7, + var8, + var9, + var10, + var1.borderThickness(), + var1.neonRadius(var2), + var1.neonIntensity(var2), + var1.glowExponent(), + var12, + var13, + var14, + var15 + ); + } + + public static void drawNeonBorder( + Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, float var6, float var7, float var8, float var9, asu var10 + ) { + int var11 = var10.getRGB(); + drawNeonBorder( + var0, + var1, + var2, + var3, + var4, + var5.topLeftRadius(), + var5.topRightRadius(), + var5.bottomRightRadius(), + var5.bottomLeftRadius(), + var6, + var7, + var8, + var9, + var11, + var11, + var11, + var11 + ); + } + + public static void drawActiveGlow(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, float var6, asu var7) { + drawActiveGlow(var0, var1, var2, var3, var4, var5, var6, var7.getRGB()); + } + + public static void drawActiveGlow(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, float var6, int var7) { + mx var8 = null; + float var9 = 0.0F; + int var10 = 1675843051; + + while (true) { + switch (var10) { + case -92173756: + var8 = arx.style(); + var9 = var8.activeGlowIntensity() * Math.min(var6, 1.0F); + if (var9 <= 0.0F) { + var10 = 848208456; + } else { + var10 = 1198702544; + } + break; + case 307631301: + return; + case 848208456: + return; + case 1198702544: + emitNeonQuad( + var0, + 2.0F, + var1, + var2, + var3, + var4, + var5.topLeftRadius(), + var5.topRightRadius(), + var5.bottomRightRadius(), + var5.bottomLeftRadius(), + 0.0F, + var8.activeGlowRadius(), + var9, + var8.glowExponent(), + var7, + var7, + var7, + var7 + ); + return; + case 1675843051: + default: + if (var6 <= 0.0F) { + var10 = 307631301; + } else { + var10 = -92173756; + } + } + } + } + + public static void drawNeonFill(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, float var6, float var7, float var8, asu var9) { + int var10 = var9.getRGB(); + emitNeonQuad( + var0, + 1.0F, + var1, + var2, + var3, + var4, + var5.topLeftRadius(), + var5.topRightRadius(), + var5.bottomRightRadius(), + var5.bottomLeftRadius(), + 0.0F, + var6, + var7, + var8, + var10, + var10, + var10, + var10 + ); + } + + private static void drawNeonBorder( + Matrix3x2fStack var0, + float var1, + float var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + int var13, + int var14, + int var15, + int var16 + ) { + emitNeonQuad(var0, 0.0F, var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16); + } + + private static void emitNeonQuad( + Matrix3x2fStack var0, + float var1, + float var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13, + int var14, + int var15, + int var16, + int var17 + ) { + if (!(var4 <= 0.001F) && !(var5 <= 0.001F)) { + if (atf.isRecording() && guiShapeProgram != null) { + float var18 = Math.max(var11, 0.001F); + float var19 = var1 == 3.0F ? 0.0F : var18 * 3.0F; + float var20 = Mth.clamp(var13, 0.05F, 15.9F); + atd var21 = guiShapeProgram; + var21.use(); + var21.setSize(var4, var5); + var21.setRadius(var6, var9, var7, var8); + var21.setSmoothness(0.8F); + var21.setThickness(var10); + var21.setFade(var18); + var21.setStripeWidth(Math.max(var12, 0.0F)); + var21.setShapeExtra(var1 * 16.0F + var20); + mx var22 = arx.style(); + var21.setProgress(var22.sweepPhase()); + var21.setCornerIndex(var22.sweepIntensity() > 0.0F ? var22.sweepLength() : 0.0F); + var21.setCornerSmoothness(var22.sweepIntensity()); + setShapeCornerColors(var21, var14, var15, var16, var17); + drawSetup(); + emitShapeQuad(var21, 8.0F, var0, var2 - var19, var3 - var19, var4 + var19 * 2.0F, var5 + var19 * 2.0F, var14, var15, var16, var17); + drawEnd(); + } else { + if (var1 != 2.0F) { + drawRoundedBorder(var0, var2, var3, var4, var5, Math.max(var10, 1.0F), var6, var7, var8, var9, var14); + } + } + } + } + + private static void setShapeCornerColors(atd var0, int var1, int var2, int var3, int var4) { + var0.setTopLeftColor(redOf(var1), greenOf(var1), blueOf(var1), alphaOf(var1)); + var0.setBottomLeftColor(redOf(var2), greenOf(var2), blueOf(var2), alphaOf(var2)); + var0.setBottomRightColor(redOf(var3), greenOf(var3), blueOf(var3), alphaOf(var3)); + var0.setTopRightColor(redOf(var4), greenOf(var4), blueOf(var4), alphaOf(var4)); + } + + private static float redOf(int var0) { + return (var0 >>> (-1908873234 | 1908873250) + (-1908873234 & 1908873250) & (1866650606 | -1866650351) + (1866650606 & -1866650351)) / 255.0F; + } + + private static float greenOf(int var0) { + return (var0 >>> (-1565561312 ^ 1565561320) + ((-1565561312 & 1565561320) << 1) & (-264202663 ^ 264202918) + ((-264202663 & 264202918) << 1)) / 255.0F; + } + + private static float blueOf(int var0) { + return (var0 & (-1823713845 ^ 1823714100) + ((-1823713845 & 1823714100) << 1)) / 255.0F; + } + + private static float alphaOf(int var0) { + return (var0 >>> (-1231810438 | 1231810462) + (-1231810438 & 1231810462) & (1325098213 ^ -1325097958) + ((1325098213 & -1325097958) << 1)) / 255.0F; + } + + public static void drawAcrylicHud(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, asu var6) { + if (!(var3 <= 0.0F) && !(var4 <= 0.0F) && var6.getAlpha() != 0) { + float var7 = var6.getAlpha() / 255.0F; + float var8 = arx.progress(); + if (var8 <= 0.001F) { + drawStandardAcrylicHud(var0, var1, var2, var3, var4, var5, var6, 1.0F); + } else { + GpuTextureView var9 = arx.scene(); + int var10 = liquidGlassProgram != null && var9 != null + ? 1: 0; + if (var10 == 0 || var8 < 0.999F) { + drawStandardAcrylicHud(var0, var1, var2, var3, var4, var5, var6, var10 != 0 ? 1.0F - var8 : 1.0F); + } + + if (var10 != 0) { + drawRefractiveGlass(var0, var9, var1, var2, var3, var4, var5, var7, var8); + } + } + + if (vm.INSTANCE.isShimmer()) { + drawAnimatedGloss(var0, var1, var2, var3, var4, var5, var7); + } + } + } + + private static void drawStandardAcrylicHud(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, arq var5, asu var6, float var7) { + mv var8 = null; + float var9 = 0.0F; + float var10 = 0.0F; + asu var11 = null; + asu var12 = null; + asu var13 = null; + asu var14 = null; + asu var15 = null; + asu var16 = null; + int var17 = -389605045; + + while (true) { + switch (var17) { + case -1170804032: + drawBlurHudBooleanCheck( + var0, var1, var2, var3, var4, 15.0F, var5, var6.mulAlpha(var9), (boolean)((((2021811813 | -2021811812) + (2021811813 & -2021811812)) + ) != 0)); + var17 = 1406114313; + break; + case -389605045: + default: + var8 = bz.getInstance().getThemeManager().getCurrentTheme(); + var9 = vm.INSTANCE.getBlurFactor() * var7; + var10 = var6.getAlpha() / 255.0F; + if (var9 > 0.003F) { + var17 = -1170804032; + } else { + var17 = 1406114313; + } + break; + case 1406114313: + var11 = var8.getBackgroundColor(); + var12 = var11.withAlpha((396756575 | -396756435) + (396756575 & -396756435)); + var13 = var11.mix(var12, var9).mulAlpha(var10); + drawRoundedRect(var0, var1, var2, var3, var4, var5, var13); + var14 = var8.getForegroundStroke(); + var15 = var8.getWhite().withAlpha((-1211440968 ^ 1211440993) + ((-1211440968 & 1211440993) << 1)); + var16 = var14.mix(var15, var9).mulAlpha(var10 * var7); + drawRoundedBorder(var0, var1, var2, var3, var4, pk.borderThickness(), var5, var16); + return; + } + } + } + + private static void drawInnerGlass( + Matrix3x2fStack var0, + mx var1, + aso var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + boolean var12 + ) { + if (!(var11 <= 0.0F)) { + float var13 = var1.tint(); + drawRoundedRect( + var0, + var3, + var4, + var5, + var6, + var7, + var8, + var9, + var10, + withAlpha( + var13 >= 0.0F ? 16777215: 0, + var1.fillAlpha(var2) * var11 + ) + ); + if (!var12) { + drawRoundedBorder( + var0, + var3, + var4, + var5, + var6, + var1.borderThickness(), + var7, + var8, + var9, + var10, + withAlpha(16777215, var1.borderAlpha(var2) * var11) + ); + } + } + } + + private static int withAlpha(int var0, float var1) { + int var2 = Math.round(Mth.clamp(var1, 0.0F, 1.0F) * 255.0F); + return var2 << (1339537269 | -1339537245) + (1339537269 & -1339537245) | var0; + } + + public static float drawHeaderChip( + aru var0, float var1, float var2, float var3, String var4, String var5, String var6, ge var7, ge var8, asu var9, asu var10 + ) { + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = 18667580; + + while (true) { + switch (var13) { + case -1903290123: + return var11; + case -1498210640: + if (var5 != null) { + var13 = -1303990313; + } else { + var13 = 1993693973; + } + break; + case -1303990313: + if (!var5.isEmpty()) { + var13 = 671468983; + } else { + var13 = 1993693973; + } + break; + case -702308099: + var12 = var7.width(var6); + var0.drawText(var7, var6, var1 + var3 - 5.0F - var12, var2 + (12.0F - var7.height()) / 2.0F, var10.mulAlpha(0.5F)); + var13 = -1903290123; + break; + case 18667580: + default: + var11 = var1 + 5.0F; + if (var4 != null) { + var13 = 1666017280; + } else { + var13 = -1498210640; + } + break; + case 281211789: + if (!var6.isEmpty()) { + var13 = -702308099; + } else { + var13 = -1903290123; + } + break; + case 387249432: + var0.drawText(var7, var4, var11, var2 + (12.0F - var7.height()) / 2.0F, var9); + var11 += var7.width(var4) + 3.0F; + var13 = -1498210640; + break; + case 671468983: + var0.drawText(var8, var5, var11, var2 + (12.0F - var8.height()) / 2.0F, var10); + var11 += var8.width(var5); + var13 = 1993693973; + break; + case 1666017280: + if (!var4.isEmpty()) { + var13 = 387249432; + } else { + var13 = -1498210640; + } + break; + case 1993693973: + if (var6 != null) { + var13 = 281211789; + } else { + var13 = -1903290123; + } + } + } + } + + private static void drawRefractiveGlass( + Matrix3x2fStack var0, GpuTextureView var1, float var2, float var3, float var4, float var5, arq var6, float var7, float var8 + ) { + drawRefractiveGlass( + var0, + arx.style(), + var1, + var2, + var3, + var4, + var5, + var6.topLeftRadius(), + var6.topRightRadius(), + var6.bottomRightRadius(), + var6.bottomLeftRadius(), + var7, + var8, + (boolean)((((739354382 | -739354382) + (739354382 & -739354382)) + ) != 0)); + } + + private static void drawRefractiveGlass( + Matrix3x2fStack var0, + mx var1, + GpuTextureView var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + boolean var13 + ) { + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + Matrix4f var18 = null; + int var19 = 0; + int var20 = 0; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + float var27 = 0.0F; + float var28 = 0.0F; + float var29 = 0.0F; + float var30 = 0.0F; + float var31 = 0.0F; + float var32 = 0.0F; + float var33 = 0.0F; + float var34 = 0.0F; + float var35 = 0.0F; + float var36 = 0.0F; + float var37 = 0.0F; + float var38 = 0.0F; + float var39 = 0.0F; + float var40 = 0.0F; + float var41 = 0.0F; + float var42 = 0.0F; + float var43 = 0.0F; + float var44 = 0.0F; + int var45 = 0; + BufferBuilder var46 = null; + mv var47 = null; + float var48 = 0.0F; + int var49 = 1127658729; + + while (true) { + switch (var49) { + case -1682423177: + return; + case -1517424749: + var15 = var1.tint(); + var16 = var1.frost() * var12; + var17 = var1.refraction() * var12; + var0.pushMatrix(); + var18 = arb.toMatrix4f(var0); + var19 = mc.getWindow().getGuiScaledWidth(); + var20 = mc.getWindow().getGuiScaledHeight(); + var21 = var18.m00(); + var22 = var18.m10(); + var23 = var18.m30(); + var24 = var18.m01(); + var25 = var18.m11(); + var26 = var18.m31(); + var27 = var21 * var3 + var22 * var4 + var23; + var28 = var24 * var3 + var25 * var4 + var26; + var29 = var27 / var19; + var30 = (var20 - var28) / var20; + var31 = var21 * var3 + var22 * (var4 + var6) + var23; + var32 = var24 * var3 + var25 * (var4 + var6) + var26; + var33 = var31 / var19; + var34 = (var20 - var32) / var20; + var35 = var21 * (var3 + var5) + var22 * (var4 + var6) + var23; + var36 = var24 * (var3 + var5) + var25 * (var4 + var6) + var26; + var37 = var35 / var19; + var38 = (var20 - var36) / var20; + var39 = var21 * (var3 + var5) + var22 * var4 + var23; + var40 = var24 * (var3 + var5) + var25 * var4 + var26; + var41 = var39 / var19; + var42 = (var20 - var40) / var20; + var43 = Math.abs(var41 - var29); + var44 = Math.abs(var34 - var30); + liquidGlassProgram.use(); + arj.setCurrentLayer(arj.guiTexturedNoTexture()); + atd.bindTexture(var2, (boolean)((((-157488039 | 157488040) + (-157488039 & 157488040))) != 0)); + liquidGlassProgram.setSize(var5, var6); + liquidGlassProgram.setRadius(var7, var10, var8, var9); + liquidGlassProgram.setRefraction(var17); + liquidGlassProgram.setFrost(var16); + liquidGlassProgram.setBevelDepth(var1.bevelDepth()); + liquidGlassProgram.setBevelWidth(var1.bevelWidth()); + liquidGlassProgram.setTiltX(0.0F); + liquidGlassProgram.setTiltY(0.0F); + liquidGlassProgram.setTint(var15); + liquidGlassProgram.setGlassContrast(var1.glassContrast() * var12, var1.glassTextLuma()); + liquidGlassProgram.setGlassSpecular(var1.glassSpecular() * var12, var1.glassLightX(), var1.glassLightY()); + liquidGlassProgram.setGlassDispersion(var1.glassDispersion()); + liquidGlassProgram.setGlassRimGain(var1.rimGain()); + liquidGlassProgram.setGlassDepth(var1.glassDepth() * var12); + liquidGlassProgram.setGlassSpan(var43, var44); + drawSetup(); + var45 = withAlpha(16777215, var14); + var46 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var46.addVertex(var18, var3, var4, 0.0F).setUv(var29, var30).setColor(var45); + var46.addVertex(var18, var3, var4 + var6, 0.0F).setUv(var33, var34).setColor(var45); + var46.addVertex(var18, var3 + var5, var4 + var6, 0.0F).setUv(var37, var38).setColor(var45); + var46.addVertex(var18, var3 + var5, var4, 0.0F).setUv(var41, var42).setColor(var45); + arj.drawCurrent(var46); + drawEnd(); + atd.clearBoundTexture(); + var0.popMatrix(); + var47 = bz.getInstance().getThemeManager().getCurrentTheme(); + var48 = 0.03F * (1.0F - Math.abs(var15)) * var14; + drawRoundedRect(var0, var3, var4, var5, var6, var7, var8, var9, var10, var47.getBackgroundColor().getRGBWithAlpha(var48)); + if (!var13) { + var49 = 525342069; + } else { + var49 = -1682423177; + } + break; + case 298540609: + return; + case 525342069: + drawRoundedBorder( + var0, + var3, + var4, + var5, + var6, + var1.borderThickness(), + var7, + var8, + var9, + var10, + withAlpha(16777215, 0.08F * var1.rimGain() * var14) + ); + var49 = -1682423177; + break; + case 1127658729: + default: + var14 = var11 * var12; + if (var14 <= 0.0F) { + var49 = 298540609; + } else { + var49 = -1517424749; + } + } + } + } + + public static void drawBlur(Matrix3x2fStack var0, float var1, float var2, float var3, float var4, float var5, arq var6, asu var7) { + Matrix4f var8 = null; + int var9 = 0; + int var10 = 0; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + BufferBuilder var15 = null; + int var16 = 0; + int var17 = 1660392942; + + while (true) { + switch (var17) { + case -1445909573: + blurProgram.setBlurRadius(2.0F); + roundedTextureProgram.use(); + arj.setCurrentLayer(arj.guiTexturedNoTexture()); + atd.bindTexture(asx.getTexture(), (boolean)((((-22050307 | 22050308) + (-22050307 & 22050308))) != 0)); + roundedTextureProgram.setSize(var3, var4); + roundedTextureProgram.setRadius(var6.topLeftRadius(), var6.bottomLeftRadius(), var6.topRightRadius(), var6.bottomRightRadius()); + roundedTextureProgram.setSmoothness(0.01F); + drawSetup(); + var9 = mc.getWindow().getGuiScaledWidth(); + var10 = mc.getWindow().getGuiScaledHeight(); + var11 = var1 / var9; + var12 = (var10 - var2 - var4) / var10; + var13 = var3 / var9; + var14 = var4 / var10; + var15 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var16 = var7.getRGB(); + var15.addVertex(var8, var1, var2, 0.0F).setUv(var11, var12 + var14).setColor(var16); + var15.addVertex(var8, var1, var2 + var4, 0.0F).setUv(var11, var12).setColor(var16); + var15.addVertex(var8, var1 + var3, var2 + var4, 0.0F).setUv(var11 + var13, var12).setColor(var16); + var15.addVertex(var8, var1 + var3, var2, 0.0F).setUv(var11 + var13, var12 + var14).setColor(var16); + arj.drawCurrent(var15); + drawEnd(); + atd.clearBoundTexture(); + var0.popMatrix(); + return; + case 778071164: + return; + case 1660392942: + } + + var0.pushMatrix(); + var8 = arb.toMatrix4f(var0); + var5 /= 22.5F; + if (var5 <= 0.0F) { + var17 = 778071164; + } else { + var17 = -1445909573; + } + } + } + + public static void drawImage(Matrix3x2fStack var0, BufferBuilder var1, double var2, double var4, double var6, double var8, double var10, asu var12) { + Matrix4f var13 = arb.toMatrix4f(var0); + int var14 = var12.getRGB(); + var1.addVertex(var13, (float)var2, (float)(var4 + var10), (float)var6).setUv(0.0F, 1.0F).setColor(var14); + var1.addVertex(var13, (float)(var2 + var8), (float)(var4 + var10), (float)var6).setUv(1.0F, 1.0F).setColor(var14); + var1.addVertex(var13, (float)(var2 + var8), (float)var4, (float)var6).setUv(1.0F, 0.0F).setColor(var14); + var1.addVertex(var13, (float)var2, (float)var4, (float)var6).setUv(0.0F, 0.0F).setColor(var14); + } + + public static void drawImage(Matrix3x2fStack var0, Identifier var1, double var2, double var4, double var6, double var8, double var10, asu var12) { + usePassthroughTexture(var1); + drawSetup(); + BufferBuilder var13 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + Matrix4f var14 = arb.toMatrix4f(var0); + int var15 = var12.getRGB(); + var13.addVertex(var14, (float)var2, (float)(var4 + var10), (float)var6).setUv(0.0F, 1.0F).setColor(var15); + var13.addVertex(var14, (float)(var2 + var8), (float)(var4 + var10), (float)var6).setUv(1.0F, 1.0F).setColor(var15); + var13.addVertex(var14, (float)(var2 + var8), (float)var4, (float)var6).setUv(1.0F, 0.0F).setColor(var15); + var13.addVertex(var14, (float)var2, (float)var4, (float)var6).setUv(0.0F, 0.0F).setColor(var15); + arj.drawCurrent(var13); + drawEnd(); + } + + public static void drawFadeTexture( + Matrix3x2fStack var0, GpuTextureView var1, double var2, double var4, double var6, double var8, double var10, float var12, asu var13 + ) { + fadeTextureProgram.use(); + arj.setCurrentLayer(arj.guiTexturedNoTexture()); + atd.bindTexture(var1, (boolean)((((132326025 ^ -132326024) + ((132326025 & -132326024) << 1))) != 0)); + fadeTextureProgram.setSize((float)var8, (float)var10); + fadeTextureProgram.setMaskFadeHeight(var12); + drawSetup(); + BufferBuilder var14 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + Matrix4f var15 = arb.toMatrix4f(var0); + double var16 = Minecraft.getInstance().getWindow().getWidth(); + double var18 = Minecraft.getInstance().getWindow().getHeight(); + double var20 = Minecraft.getInstance().getWindow().getGuiScale(); + double var22 = var2 / (var16 / var20); + double var24 = (var2 + var8) / (var16 / var20); + double var26 = 1.0 - (var4 + var10) / (var18 / var20); + double var28 = 1.0 - var4 / (var18 / var20); + int var30 = var13.getRGB(); + var14.addVertex(var15, (float)var2, (float)var4, (float)var6).setUv((float)var22, (float)var28).setColor(var30); + var14.addVertex(var15, (float)var2, (float)(var4 + var10), (float)var6).setUv((float)var22, (float)var26).setColor(var30); + var14.addVertex(var15, (float)(var2 + var8), (float)(var4 + var10), (float)var6).setUv((float)var24, (float)var26).setColor(var30); + var14.addVertex(var15, (float)(var2 + var8), (float)var4, (float)var6).setUv((float)var24, (float)var28).setColor(var30); + arj.drawCurrent(var14); + drawEnd(); + atd.clearBoundTexture(); + } + + public static void drawPlayerHeadWithRoundedShader(Matrix3x2fStack var0, Identifier var1, float var2, float var3, float var4, arq var5, asu var6) { + drawRoundedTextureWithUV(var0, var1, var2, var3, var4, var4, var5, var6, 0.125F, 0.125F, 0.25F, 0.25F); + } + + private static void drawPlayerHatLayerWithRoundedShader(Matrix3x2fStack var0, Identifier var1, float var2, float var3, float var4, arq var5, asu var6) { + drawRoundedTextureWithUV(var0, var1, var2, var3, var4, var4, var5, var6, 0.625F, 0.125F, 0.75F, 0.25F); + } + + public static void drawRoundedTextureWithUV( + Matrix3x2fStack var0, + Identifier var1, + float var2, + float var3, + float var4, + float var5, + arq var6, + asu var7, + float var8, + float var9, + float var10, + float var11 + ) { + var0.pushMatrix(); + Matrix4f var12 = arb.toMatrix4f(var0); + float var13 = 0.8F; + roundedTextureProgram.use(); + arj.setCurrentLayer(arj.guiTextured(var1)); + roundedTextureProgram.setSize(var4, var5); + roundedTextureProgram.setRadius(var6.topLeftRadius(), var6.bottomLeftRadius(), var6.topRightRadius(), var6.bottomRightRadius()); + roundedTextureProgram.setSmoothness(var13); + drawSetup(); + float var14 = -var13 / 2.0F + var13 * 2.0F; + float var15 = var13 / 2.0F + var13; + float var16 = var2 - var14 / 2.0F; + float var17 = var3 - var15 / 2.0F; + float var18 = var4 + var14; + float var19 = var5 + var15; + BufferBuilder var20 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + int var21 = var7.getRGB(); + var20.addVertex(var12, var16, var17, 0.0F).setUv(var8, var9).setColor(var21); + var20.addVertex(var12, var16, var17 + var19, 0.0F).setUv(var8, var11).setColor(var21); + var20.addVertex(var12, var16 + var18, var17 + var19, 0.0F).setUv(var10, var11).setColor(var21); + var20.addVertex(var12, var16 + var18, var17, 0.0F).setUv(var10, var9).setColor(var21); + arj.drawCurrent(var20); + drawEnd(); + var0.popMatrix(); + } + + private static atd shapeProgram(atd var0) { + atd var2 = null; + int var1 = 967502026; + + while (true) { + switch (var1) { + case -2066419261: + var2 = var0; + var1 = 652279486; + break; + case -39218964: + var2 = guiShapeProgram; + var1 = 652279486; + break; + case 652279486: + return var2; + case 967502026: + default: + if (atf.isRecording()) { + var1 = 1777539919; + } else { + var1 = -2066419261; + } + break; + case 1777539919: + if (guiShapeProgram != null) { + var1 = -39218964; + } else { + var1 = -2066419261; + } + } + } + } + + private static float pixelsPerUnit(Matrix3x2fc var0) { + float var1 = (float)Math.sqrt(Math.abs(var0.m00() * var0.m11() - var0.m01() * var0.m10())); + return vm.hudScale() * (var1 > 0.0F ? var1 : 1.0F); + } + + private static float antialiasSmoothness(Matrix3x2fc var0) { + float var1 = 0.0F; + int var2 = -556750953; + + while (true) { + switch (var2) { + case -1172482233: + return Math.max(0.05F, Math.min(0.8F, 1.0F / var1)); + case -860060065: + return 0.8F; + case -556750953: + } + + var1 = pixelsPerUnit(var0); + if (!(var1 > 1.0F)) { + var2 = -860060065; + } else { + var2 = -1172482233; + } + } + } + + private static void emitShapeQuad( + atd var0, float var1, Matrix3x2fStack var2, float var3, float var4, float var5, float var6, int var7, int var8, int var9, int var10 + ) { + int var11 = 745801501; + + while (true) { + switch (var11) { + case -1028206982: + if (var0.tryRecordShapeQuad(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10)) { + var11 = 1543766339; + } else { + var11 = -958342737; + } + break; + case -958342737: + emitShapeQuad(var0, var2, var3, var4, var5, var6, var7, var8, var9, var10); + return; + case 745801501: + default: + if (var0 == guiShapeProgram) { + var11 = -1028206982; + } else { + var11 = -958342737; + } + break; + case 1543766339: + return; + } + } + } + + private static void emitShapeQuad(atd var0, float var1, Matrix3x2fStack var2, float var3, float var4, float var5, float var6, int var7) { + emitShapeQuad(var0, var1, var2, var3, var4, var5, var6, var7, var7, var7, var7); + } + + private static void emitShapeQuad(atd var0, Matrix3x2fStack var1, float var2, float var3, float var4, float var5, int var6, int var7, int var8, int var9) { + Matrix4fc var10 = null; + BufferBuilder var11 = null; + int var12 = 1788238453; + + while (true) { + switch (var12) { + case -999105695: + return; + case 220833269: + var10 = arb.toMatrix4f(var1); + var11 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_COLOR); + var11.addVertex(var10, var2, var3, 0.0F).setColor(var6); + var11.addVertex(var10, var2, var3 + var5, 0.0F).setColor(var7); + var11.addVertex(var10, var2 + var4, var3 + var5, 0.0F).setColor(var8); + var11.addVertex(var10, var2 + var4, var3, 0.0F).setColor(var9); + arj.drawCurrent(var11); + return; + case 1788238453: + } + + if (var0.tryRecordColorQuad(var1, var2, var3, var4, var5, var6, var7, var8, var9)) { + var12 = -999105695; + } else { + var12 = 220833269; + } + } + } + + private static void emitShapeQuad(atd var0, Matrix3x2fStack var1, float var2, float var3, float var4, float var5, int var6) { + emitShapeQuad(var0, var1, var2, var3, var4, var5, var6, var6, var6, var6); + } + + public static void drawSetup() { + } + + public static void drawEnd() { + } + + private atb() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/atc.java b/src/main/java/defpackage/atc.java new file mode 100644 index 0000000..3acdd36 --- /dev/null +++ b/src/main/java/defpackage/atc.java @@ -0,0 +1,309 @@ +package defpackage; + +import com.mojang.blaze3d.buffers.Std140Builder; +import com.mojang.blaze3d.buffers.Std140SizeCalculator; + +final class atc { + static final int BUFFER_SIZE = calculateSize(); + float shapeExtra; + float sizeX; + float sizeY; + float radiusX; + float radiusY; + float radiusZ; + float radiusW; + float smoothnessX; + float smoothnessY; + float cornerSmoothness; + float thickness; + float cornerIndex; + float progress; + float fade; + float stripeWidth; + float topLeftR; + float topLeftG; + float topLeftB; + float topLeftA; + float bottomLeftR; + float bottomLeftG; + float bottomLeftB; + float bottomLeftA; + float topRightR; + float topRightG; + float topRightB; + float topRightA; + float bottomRightR; + float bottomRightG; + float bottomRightB; + float bottomRightA; + float blurRadius; + float resolutionX; + float resolutionY; + float offset; + float saturation = 1.0F; + float tintIntensity; + float tintColorR = 1.0F; + float tintColorG = 1.0F; + float tintColorB = 1.0F; + float range; + float outline; + float outlineThickness; + float outlineColorR; + float outlineColorG; + float outlineColorB; + float outlineColorA; + float enableFadeout; + float fadeoutStart; + float fadeoutEnd; + float maxWidth; + float textPosX; + float time; + float handR = 1.0F; + float handG = 1.0F; + float handB = 1.0F; + float handA = 1.0F; + float handShaderMode; + float handShaderOnly; + float maskTopY = -1.0F; + float maskBottomY = -1.0F; + float maskFadeTop = 0.0F; + float maskFadeBottom = 0.0F; + float maskBypass = 0.0F; + float maskLeftX = -1.0F; + float maskRightX = -1.0F; + float maskFadeLeft = 0.0F; + float maskFadeRight = 0.0F; + float cameraPosX = 0.0F; + float cameraPosY = 0.0F; + float cameraPosZ = 0.0F; + float smokeCamShiftX = 0.0F; + float smokeCamShiftY = 0.0F; + float smokeIntensity = 0.85F; + float smokeSpeed = 1.15F; + float smokeLength = 0.72F; + float smokeTrailSoftness = 1.35F; + float smokeTrailBlur = 1.55F; + float smokeAmount = 0.55F; + float smokeActivity = 0.0F; + float smokeTrailFade = 0.91F; + float smokeSlash = 0.0F; + float smokeSlashDir = 1.0F; + float smokeSwingHand = 0.0F; + float smokeHandSoftness = 1.3F; + float smokeHandBlur = 1.45F; + float smokeHeight = 0.06F; + float smokeWind = 1.0F; + float smokeWave = 1.0F; + float refraction = 0.5F; + float bevelDepth = 0.4F; + float bevelWidth = 0.05F; + float tiltX = 0.0F; + float tiltY = 0.0F; + float frost = 0.0F; + float skyRotSin = 0.0F; + float skyRotCos = 1.0F; + float glossDirX = 0.8762F; + float glossDirY = 0.4819F; + float tint = 0.0F; + float glowRadius = 1.0F; + float glowIntensity = 0.0F; + float glowColorR = 1.0F; + float glowColorG = 1.0F; + float glowColorB = 1.0F; + float glowColorA = 1.0F; + float glassContrast = 0.0F; + float glassTextLuma = 1.0F; + float glassSpecular = 0.0F; + float glassLightX = -0.55F; + float glassLightY = -0.83F; + float glassDispersion = 0.0F; + float glassRimGain = 1.0F; + float glassDepth = 0.0F; + float glassSpanU = 1.0F; + float glassSpanV = 1.0F; + float sweepOriginX = 0.5F; + float sweepOriginY = 0.5F; + float backdropMode = 0.0F; + float backdropIntensity = 0.0F; + float backdropLoop = 1.0F; + float backdropScale = 1.0F; + float skyFullDome = 0.0F; + + void write(Std140Builder var1) { + var1.putVec2(this.sizeX, this.sizeY) + .putVec4(this.radiusX, this.radiusY, this.radiusZ, this.radiusW) + .putVec2(this.smoothnessX, this.smoothnessY) + .putFloat(this.cornerSmoothness) + .putFloat(this.thickness) + .putFloat(this.cornerIndex) + .putFloat(this.progress) + .putFloat(this.fade) + .putFloat(this.stripeWidth) + .putVec4(this.topLeftR, this.topLeftG, this.topLeftB, this.topLeftA) + .putVec4(this.bottomLeftR, this.bottomLeftG, this.bottomLeftB, this.bottomLeftA) + .putVec4(this.topRightR, this.topRightG, this.topRightB, this.topRightA) + .putVec4(this.bottomRightR, this.bottomRightG, this.bottomRightB, this.bottomRightA) + .putFloat(this.blurRadius) + .putVec2(this.resolutionX, this.resolutionY) + .putFloat(this.offset) + .putFloat(this.saturation) + .putFloat(this.tintIntensity) + .putVec3(this.tintColorR, this.tintColorG, this.tintColorB) + .putFloat(this.range) + .putFloat(this.outline) + .putFloat(this.outlineThickness) + .putVec4(this.outlineColorR, this.outlineColorG, this.outlineColorB, this.outlineColorA) + .putFloat(this.enableFadeout) + .putFloat(this.fadeoutStart) + .putFloat(this.fadeoutEnd) + .putFloat(this.maxWidth) + .putFloat(this.textPosX) + .putFloat(this.time) + .putVec4(this.handR, this.handG, this.handB, this.handA) + .putFloat(this.handShaderMode) + .putFloat(this.handShaderOnly) + .putFloat(this.maskTopY) + .putFloat(this.maskBottomY) + .putFloat(this.maskFadeTop) + .putFloat(this.maskFadeBottom) + .putFloat(this.maskBypass) + .putFloat(this.maskLeftX) + .putFloat(this.maskRightX) + .putFloat(this.maskFadeLeft) + .putFloat(this.maskFadeRight) + .putVec3(this.cameraPosX, this.cameraPosY, this.cameraPosZ) + .putVec2(this.smokeCamShiftX, this.smokeCamShiftY) + .putFloat(this.smokeIntensity) + .putFloat(this.smokeSpeed) + .putFloat(this.smokeLength) + .putFloat(this.smokeTrailSoftness) + .putFloat(this.smokeTrailBlur) + .putFloat(this.smokeAmount) + .putFloat(this.smokeActivity) + .putFloat(this.smokeTrailFade) + .putFloat(this.smokeSlash) + .putFloat(this.smokeSlashDir) + .putFloat(this.smokeSwingHand) + .putFloat(this.smokeHandSoftness) + .putFloat(this.smokeHandBlur) + .putFloat(this.smokeHeight) + .putFloat(this.smokeWind) + .putFloat(this.smokeWave) + .putFloat(this.refraction) + .putFloat(this.bevelDepth) + .putFloat(this.bevelWidth) + .putFloat(this.tiltX) + .putFloat(this.tiltY) + .putFloat(this.frost) + .putFloat(this.skyRotSin) + .putFloat(this.skyRotCos) + .putFloat(this.glossDirX) + .putFloat(this.glossDirY) + .putFloat(this.tint) + .putFloat(this.glowRadius) + .putFloat(this.glowIntensity) + .putVec4(this.glowColorR, this.glowColorG, this.glowColorB, this.glowColorA) + .putFloat(this.glassContrast) + .putFloat(this.glassTextLuma) + .putFloat(this.glassSpecular) + .putFloat(this.glassLightX) + .putFloat(this.glassLightY) + .putFloat(this.glassDispersion) + .putFloat(this.glassRimGain) + .putFloat(this.glassDepth) + .putVec2(this.glassSpanU, this.glassSpanV) + .putVec2(this.sweepOriginX, this.sweepOriginY) + .putVec4(this.backdropMode, this.backdropIntensity, this.backdropLoop, this.backdropScale) + .putFloat(this.skyFullDome); + } + + private static int calculateSize() { + return new Std140SizeCalculator() + .putVec2() + .putVec4() + .putVec2() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putVec4() + .putVec4() + .putVec4() + .putVec4() + .putFloat() + .putVec2() + .putFloat() + .putFloat() + .putFloat() + .putVec3() + .putFloat() + .putFloat() + .putFloat() + .putVec4() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putVec4() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putVec3() + .putVec2() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putVec4() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putFloat() + .putVec2() + .putVec2() + .putVec4() + .putFloat() + .get(); + } +} diff --git a/src/main/java/defpackage/atd.java b/src/main/java/defpackage/atd.java new file mode 100644 index 0000000..b7a3eb6 --- /dev/null +++ b/src/main/java/defpackage/atd.java @@ -0,0 +1,2619 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.IndexType; +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.buffers.GpuBuffer; +import com.mojang.blaze3d.buffers.GpuBufferSlice; +import com.mojang.blaze3d.buffers.Std140Builder; +import com.mojang.blaze3d.pipeline.BindGroupLayout; +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.DepthStencilState; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.pipeline.BindGroupLayout.Builder; +import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet; +import com.mojang.blaze3d.platform.CompareOp; +import com.mojang.blaze3d.shaders.UniformType; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.RenderPass; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.systems.ScissorState; +import com.mojang.blaze3d.systems.RenderSystem.AutoStorageIndexBuffer; +import com.mojang.blaze3d.textures.FilterMode; +import com.mojang.blaze3d.textures.GpuSampler; +import com.mojang.blaze3d.textures.GpuTextureView; +import com.mojang.blaze3d.vertex.MeshData; +import com.mojang.blaze3d.vertex.VertexFormat; +import java.io.BufferedReader; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.OptionalDouble; +import java.util.function.Supplier; +import net.minecraft.client.renderer.BindGroupLayouts; +import net.minecraft.client.renderer.DynamicUniforms; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.texture.AbstractTexture; +import net.minecraft.resources.Identifier; +import net.minecraft.server.packs.resources.ResourceManager; +import org.joml.Matrix3x2fc; +import org.joml.Matrix4f; +import org.joml.Vector3f; +import org.joml.Vector4f; + +public class atd implements aqg { + private static final String EVOLUTION_UNIFORMS_NAME = "EvolutionUniforms"; + private static final String DYNAMIC_TRANSFORMS_NAME = "DynamicTransforms"; + private static final List REGISTERED_PROGRAMS = new ArrayList<>(); + private static final ThreadLocal ACTIVE_PROGRAM = new ThreadLocal<>(); + private static final Vector4f COLOR_MODULATOR = new Vector4f(1.0F, 1.0F, 1.0F, 1.0F); + private static final int MAX_PIPELINE_COMPILE_ATTEMPTS = 8; + private static final ThreadLocal FORCED_TEXTURE_VIEW = new ThreadLocal<>(); + private static final ThreadLocal FORCED_TEXTURE_SAMPLER = new ThreadLocal<>(); + private static final ThreadLocal> FORCED_NAMED_VIEWS = ThreadLocal.withInitial(HashMap::new); + private static final ThreadLocal> FORCED_NAMED_SAMPLERS = ThreadLocal.withInitial(HashMap::new); + private static final int SCISSOR_STRIDE = 4; + private static final GpuFormat DEFAULT_COLOR_FORMAT = GpuFormat.RGBA8_UNORM; + private static final Vector3f ZERO_OFFSET = new Vector3f(0.0F, 0.0F, 0.0F); + private static final Matrix4f IDENTITY_TEXTURE_MATRIX = new Matrix4f(); + private static final Supplier SHARED_VERTEX_BUFFER_LABEL = () -> "evolution_shared_vertices"; + private static final Supplier SHARED_PASS_LABEL = () -> "evolution_shared_shader"; + private static GpuBuffer sharedVertexBuffer; + private static int sharedVertexCapacity; + private static GpuBufferSlice sharedTransform; + private static volatile boolean programsReady; + private static volatile GpuTextureView worldColorTarget; + private static volatile GpuTextureView worldDepthTarget; + private final Identifier id; + private final VertexFormat vertexFormat; + private final boolean useDepthTest; + private final boolean depthWrite; + private final CompareOp depthCompare; + private final GpuFormat colorFormat; + private final String uniformBlockName; + private final BlendFunction blend; + private final boolean noBlend; + private RenderPipeline pipeline; + private List samplerNames = List.of(); + private GpuTextureView[] resolvedSamplerViews = new GpuTextureView[0]; + private GpuSampler[] resolvedSamplers = new GpuSampler[0]; + private atc uniforms = new atc(); + private boolean dirty = (boolean)(((1)) != 0); + private boolean uniformsChanged = (boolean)(((1)) != 0); + private int cachedUniformOffset = -1; + private int cachedUniformGeneration = -1; + private GpuBuffer uniformBuffer; + private GpuBufferSlice uniformSlice; + private ByteBuffer uniformData; + private GpuBuffer vertexGpuBuffer; + private int vertexGpuBufferCapacity; + private GpuBuffer indexGpuBuffer; + private int indexGpuBufferCapacity; + private boolean pipelineValidated; + private int pipelineCompileAttempts; + + public atd(Identifier var1, VertexFormat var2) { + this( + var1, var2, (boolean)((((0)) != 0)), (boolean)((((465703916 ^ -465703916) + ((465703916 & -465703916) << 1)) + ) != 0)); + } + + public atd(Identifier var1, VertexFormat var2, String var3) { + this( + var1, + var2, + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + BlendFunction.TRANSLUCENT, + (boolean)(((0)) != 0), + DEFAULT_COLOR_FORMAT, + var3 + ); + } + + public atd(Identifier var1, VertexFormat var2, boolean var3) { + this(var1, var2, var3, var3); + } + + public atd(Identifier var1, VertexFormat var2, boolean var3, boolean var4) { + this(var1, var2, var3, var4, BlendFunction.TRANSLUCENT, (boolean)((((2075437893 | -2075437893) + (2075437893 & -2075437893))) != 0)); + } + + public atd(Identifier var1, VertexFormat var2, BlendFunction var3, boolean var4) { + this( + var1, var2, (boolean)((((0)) != 0)), (boolean)(((0)) != 0), var3, var4 + ); + } + + public atd(Identifier var1, VertexFormat var2, boolean var3, boolean var4, BlendFunction var5, boolean var6) { + this(var1, var2, var3, var4, var5, var6, DEFAULT_COLOR_FORMAT); + } + + public static atd withDepthCompare(Identifier var0, VertexFormat var1, CompareOp var2, boolean var3) { + return new atd( + var0, + var1, + (boolean)(((1)) != 0), + var3, + BlendFunction.TRANSLUCENT, + (boolean)(((0)) != 0), + DEFAULT_COLOR_FORMAT, + "EvolutionUniforms", + var2 + ); + } + + public atd(Identifier var1, VertexFormat var2, boolean var3, boolean var4, BlendFunction var5, boolean var6, GpuFormat var7) { + this(var1, var2, var3, var4, var5, var6, var7, "EvolutionUniforms"); + } + + public atd(Identifier var1, VertexFormat var2, boolean var3, boolean var4, BlendFunction var5, boolean var6, GpuFormat var7, String var8) { + this(var1, var2, var3, var4, var5, var6, var7, var8, CompareOp.GREATER_THAN_OR_EQUAL); + } + + public atd(Identifier var1, VertexFormat var2, boolean var3, boolean var4, BlendFunction var5, boolean var6, GpuFormat var7, String var8, CompareOp var9) { + this.depthCompare = var9; + this.uniformBlockName = var8; + this.id = var1; + this.vertexFormat = var2; + this.useDepthTest = var3; + this.depthWrite = var4; + this.blend = var5; + this.noBlend = var6; + this.colorFormat = var7; + REGISTERED_PROGRAMS.add(this::setup); + } + + public void use() { + int var1 = 1312199792; + + while (true) { + switch (var1) { + case 1312199792: + default: + if (this.pipeline == null) { + var1 = 2012089395; + } else { + var1 = 1428736570; + } + break; + case 1428736570: + ACTIVE_PROGRAM.set(this); + return; + case 2012089395: + this.setup(); + var1 = 1428736570; + } + } + } + + public ate findUniform(String var1) { + int var2 = 352280324; + + while (true) { + switch (var2) { + case 352280324: + default: + if (this.pipeline == null) { + var2 = 1439895884; + } else { + var2 = 1588622345; + } + break; + case 1439895884: + return new ate(this, var1); + case 1588622345: + return new ate(this, var1); + } + } + } + + public static atd getActive() { + return ACTIVE_PROGRAM.get(); + } + + public static void clearActive() { + ACTIVE_PROGRAM.remove(); + } + + public static void bindTexture(GpuTextureView var0, boolean var1) { + if (var0 == null) { + clearBoundTexture(); + } else { + FORCED_TEXTURE_VIEW.set(var0); + FORCED_TEXTURE_SAMPLER.set(RenderSystem.getSamplerCache().getClampToEdge(var1 ? FilterMode.LINEAR : FilterMode.NEAREST)); + } + } + + public static void bindTexture(String var0, GpuTextureView var1, boolean var2) { + if (var1 == null) { + FORCED_NAMED_VIEWS.get().remove(var0); + FORCED_NAMED_SAMPLERS.get().remove(var0); + } else { + FORCED_NAMED_VIEWS.get().put(var0, var1); + FORCED_NAMED_SAMPLERS.get().put(var0, RenderSystem.getSamplerCache().getClampToEdge(var2 ? FilterMode.LINEAR : FilterMode.NEAREST)); + } + } + + public static void clearBoundTexture() { + FORCED_TEXTURE_VIEW.remove(); + FORCED_TEXTURE_SAMPLER.remove(); + FORCED_NAMED_VIEWS.get().clear(); + FORCED_NAMED_SAMPLERS.get().clear(); + } + + public static void setWorldTarget(GpuTextureView var0, GpuTextureView var1) { + worldColorTarget = var0; + worldDepthTarget = var1; + } + + public static GpuTextureView getWorldColorTarget() { + return worldColorTarget; + } + + public static GpuTextureView getWorldDepthTarget() { + return worldDepthTarget; + } + + public static void clearWorldTarget() { + worldColorTarget = null; + worldDepthTarget = null; + } + + protected void setup() { + try { + this.loadPipeline(mc.getResourceManager()); + } catch (IOException var2) { + return; + } + + this.uniforms = new atc(); + this.markDirty(); + this.pipelineValidated = (boolean)(((0)) != 0); + if (this.uniformBuffer != null && !this.uniformBuffer.isClosed()) { + this.uniformBuffer.close(); + } + + this.uniformBuffer = RenderSystem.getDevice() + .createBuffer( + () -> "evolution_uniforms", + 136, + atc.BUFFER_SIZE * ((-580086044 | 580090140) + (-580086044 & 580090140)) + ); + this.uniformSlice = this.uniformBuffer.slice(); + this.uniformData = ByteBuffer.allocateDirect(atc.BUFFER_SIZE).order(ByteOrder.nativeOrder()); + } + + private GpuBufferSlice uploadVertices(ByteBuffer var1) { + int var2 = 0; + GpuBufferSlice var3 = null; + int var4 = -923576100; + + while (true) { + switch (var4) { + case -1932159253: + if (this.vertexGpuBufferCapacity < var2) { + var4 = 1067632562; + } else { + var4 = 1472692016; + } + break; + case -923576100: + default: + var2 = var1.remaining(); + if (this.vertexGpuBuffer != null) { + var4 = -1932159253; + } else { + var4 = 1067632562; + } + break; + case -497336610: + this.vertexGpuBuffer.close(); + var4 = 1819415721; + break; + case 1067632562: + if (this.vertexGpuBuffer != null) { + var4 = -497336610; + } else { + var4 = 1819415721; + } + break; + case 1472692016: + var3 = this.vertexGpuBuffer.slice((-5704203037363931241L ^ 5704203037363931241L) + ((-5704203037363931241L & 5704203037363931241L) << 1), var2); + RenderSystem.getDevice().createCommandEncoder().writeToBuffer(var3, var1); + return var3; + case 1819415721: + this.vertexGpuBuffer = RenderSystem.getDevice() + .createBuffer(() -> "evolution_vertices_" + this.id.getPath(), 40, var2); + this.vertexGpuBufferCapacity = var2; + var4 = 1472692016; + } + } + } + + private GpuBuffer uploadIndices(ByteBuffer var1) { + int var2 = 0; + int var3 = -207186956; + + while (true) { + switch (var3) { + case -1757795514: + this.indexGpuBuffer.close(); + var3 = -686840917; + break; + case -686840917: + this.indexGpuBuffer = RenderSystem.getDevice() + .createBuffer(() -> "evolution_indices_" + this.id.getPath(), 72, var2); + this.indexGpuBufferCapacity = var2; + var3 = -232288111; + break; + case -232288111: + RenderSystem.getDevice() + .createCommandEncoder() + .writeToBuffer( + this.indexGpuBuffer.slice((-6513531051692811795L ^ 6513531051692811795L) + ((-6513531051692811795L & 6513531051692811795L) << 1), var2), + var1 + ); + return this.indexGpuBuffer; + case -207186956: + default: + var2 = var1.remaining(); + if (this.indexGpuBuffer != null) { + var3 = 1213575653; + } else { + var3 = 2087591342; + } + break; + case 1213575653: + if (this.indexGpuBufferCapacity < var2) { + var3 = 2087591342; + } else { + var3 = -232288111; + } + break; + case 2087591342: + if (this.indexGpuBuffer != null) { + var3 = -1757795514; + } else { + var3 = -686840917; + } + } + } + } + + public static void beginSharedTransform() { + sharedTransform = RenderSystem.getDynamicUniforms() + .writeTransform(RenderSystem.getModelViewMatrixCopy(), COLOR_MODULATOR, ZERO_OFFSET, IDENTITY_TEXTURE_MATRIX); + } + + public static void endSharedTransform() { + sharedTransform = null; + } + + public static GpuBufferSlice uploadSharedVertices(ByteBuffer var0) { + int var1 = 0; + GpuBufferSlice var2 = null; + int var3 = -136184434; + + while (true) { + switch (var3) { + case -1297529200: + sharedVertexBuffer = RenderSystem.getDevice() + .createBuffer(SHARED_VERTEX_BUFFER_LABEL, 40, var1); + sharedVertexCapacity = var1; + var3 = 2126708576; + break; + case -1046418007: + sharedVertexBuffer.close(); + var3 = -1297529200; + break; + case -136184434: + default: + var1 = var0.remaining(); + if (sharedVertexBuffer != null) { + var3 = 20615182; + } else { + var3 = 1361457483; + } + break; + case 20615182: + if (sharedVertexCapacity < var1) { + var3 = 1361457483; + } else { + var3 = 2126708576; + } + break; + case 1361457483: + if (sharedVertexBuffer != null) { + var3 = -1046418007; + } else { + var3 = -1297529200; + } + break; + case 2126708576: + var2 = sharedVertexBuffer.slice((1645897477314768685L | -1645897477314768685L) + (1645897477314768685L & -1645897477314768685L), var1); + RenderSystem.getDevice().createCommandEncoder().writeToBuffer(var2, var0); + return var2; + } + } + } + + public void drawShared(GpuBufferSlice var1, int var2) { + this.drawShared(var1, var2, null, (542172625 | -542172625) + (542172625 & -542172625)); + } + + public void drawShared(GpuBufferSlice var1, int var2, int[] var3, int var4) { + if (this.pipeline == null || !programsReady || var1 == null || var2 <= 0) { + clearBoundTexture(); + } else if (!this.ensurePipelineCompiled()) { + clearBoundTexture(); + } else { + ScissorState var5 = RenderSystem.getScissorStateForRenderTypeDraws(); + if (!var5.enabled() || var5.width() > 0 && var5.height() > 0) { + if (!this.hasResolvableSamplers()) { + clearBoundTexture(); + clearActive(); + } else { + try { + atf.flush(); + GpuBufferSlice var6 = sharedTransform != null + ? sharedTransform + : RenderSystem.getDynamicUniforms() + .writeTransform(RenderSystem.getModelViewMatrixCopy(), COLOR_MODULATOR, ZERO_OFFSET, IDENTITY_TEXTURE_MATRIX); + AutoStorageIndexBuffer var7 = RenderSystem.getSequentialBuffer(PrimitiveTopology.QUADS); + GpuBuffer var8 = var7.getBuffer(var2); + RenderTarget var9 = mc.gameRenderer.mainRenderTarget(); + GpuTextureView var10; + GpuTextureView var11; + if (RenderSystem.outputColorTextureOverride != null) { + var10 = RenderSystem.outputColorTextureOverride; + var11 = null; + if (var9.useDepth) { + var11 = RenderSystem.outputDepthTextureOverride != null ? RenderSystem.outputDepthTextureOverride : var9.getDepthTextureView(); + } + } else if (worldColorTarget != null) { + var10 = worldColorTarget; + var11 = worldDepthTarget; + } else { + var10 = var9.getColorTextureView(); + var11 = var9.useDepth ? var9.getDepthTextureView() : null; + } + + CommandEncoder var12 = RenderSystem.getDevice().createCommandEncoder(); + this.updateUniformBuffer(var12); + RenderPass var13 = var12.createRenderPass(SHARED_PASS_LABEL, var10, Optional.empty(), var11, OptionalDouble.empty()); + + try { + var13.setPipeline(this.pipeline); + RenderSystem.bindDefaultUniforms(var13); + var13.setUniform("DynamicTransforms", var6); + if (this.uniformSlice != null) { + var13.setUniform( + "EvolutionUniforms", + this.uniformSlice + ); + } + + this.bindSamplers(var13); + var13.setVertexBuffer(0, var1); + var13.setIndexBuffer(var8, var7.type()); + if (var3 != null && var4 > 0) { + for (int var14 = 0; var14 < var4; var14++) { + int var15 = var14 * (4); + var13.enableScissor( + var3[var15], + var3[var15 + 1], + var3[var15 + 2], + var3[var15 + 3] + ); + var13.drawIndexed( + var2, + 1, + 0, + 0, + (1026445450 | -1026445450) + (1026445450 & -1026445450) + ); + } + } else { + if (var5.enabled()) { + var13.enableScissor(var5.x(), var5.y(), var5.width(), var5.height()); + } + + var13.drawIndexed( + var2, + 1, + 0, + 0, + (407975361 | -407975361) + (407975361 & -407975361) + ); + } + } catch (Throwable var21) { + if (var13 != null) { + try { + var13.close(); + } catch (Throwable var20) { + var21.addSuppressed(var20); + } + } + + throw var21; + } + + if (var13 != null) { + var13.close(); + } + } finally { + clearBoundTexture(); + clearActive(); + } + } + } else { + clearBoundTexture(); + } + } + } + + public void draw(RenderType var1, MeshData var2) { + if (this.pipeline == null || !programsReady) { + var2.close(); + clearActive(); + } else if (!this.ensurePipelineCompiled()) { + var2.close(); + clearActive(); + } else { + ScissorState var3 = RenderSystem.getScissorStateForRenderTypeDraws(); + if (!var3.enabled() || var3.width() > 0 && var3.height() > 0) { + if (!this.hasResolvableSamplers()) { + var2.close(); + clearBoundTexture(); + clearActive(); + } else { + try { + if (!atf.isRecording() || var2.indexBuffer() != null || var2.drawState().primitiveTopology() != PrimitiveTopology.QUADS) { + atf.flush(); + DynamicUniforms var4 = RenderSystem.getDynamicUniforms(); + GpuBufferSlice var5 = var4.writeTransform(RenderSystem.getModelViewMatrixCopy(), COLOR_MODULATOR, ZERO_OFFSET, IDENTITY_TEXTURE_MATRIX); + GpuBufferSlice var6 = this.uploadVertices(var2.vertexBuffer()); + GpuBuffer var7; + IndexType var8; + if (var2.indexBuffer() == null) { + AutoStorageIndexBuffer var9 = RenderSystem.getSequentialBuffer(var2.drawState().primitiveTopology()); + var7 = var9.getBuffer(var2.drawState().indexCount()); + var8 = var9.type(); + } else { + var7 = this.uploadIndices(var2.indexBuffer()); + var8 = var2.drawState().indexType(); + } + + RenderTarget var23 = mc.gameRenderer.mainRenderTarget(); + GpuTextureView var10; + GpuTextureView var11; + if (RenderSystem.outputColorTextureOverride != null) { + var10 = RenderSystem.outputColorTextureOverride; + var11 = null; + if (var23.useDepth) { + var11 = RenderSystem.outputDepthTextureOverride != null ? RenderSystem.outputDepthTextureOverride : var23.getDepthTextureView(); + } + } else if (worldColorTarget != null) { + var10 = worldColorTarget; + var11 = worldDepthTarget; + } else { + var10 = var23.getColorTextureView(); + var11 = null; + if (var23.useDepth) { + var11 = var23.getDepthTextureView(); + } + } + + CommandEncoder var12 = RenderSystem.getDevice().createCommandEncoder(); + this.updateUniformBuffer(var12); + RenderPass var13 = var12.createRenderPass( + () -> "evolution_custom_shader", + var10, + Optional.empty(), + var11, + OptionalDouble.empty() + ); + + try { + var13.setPipeline(this.pipeline); + if (var3.enabled()) { + var13.enableScissor(var3.x(), var3.y(), var3.width(), var3.height()); + } + + RenderSystem.bindDefaultUniforms(var13); + var13.setUniform("DynamicTransforms", var5); + if (this.uniformSlice != null) { + var13.setUniform( + "EvolutionUniforms", this.uniformSlice + ); + } + + this.bindSamplers(var13); + var13.setVertexBuffer(0, var6); + var13.setIndexBuffer(var7, var8); + var13.drawIndexed( + var2.drawState().indexCount(), + 1, + 0, + 0, + (-999780138 | 999780138) + (-999780138 & 999780138) + ); + } catch (Throwable var21) { + if (var13 != null) { + try { + var13.close(); + } catch (Throwable var20) { + var21.addSuppressed(var20); + } + } + + throw var21; + } + + if (var13 != null) { + var13.close(); + } + + return; + } + + this.recordBatched(var2, var3); + } finally { + clearBoundTexture(); + clearActive(); + var2.close(); + } + } + } else { + var2.close(); + clearActive(); + } + } + } + + private boolean resolveSamplers() { + GpuTextureView var1 = FORCED_TEXTURE_VIEW.get(); + GpuSampler var2 = FORCED_TEXTURE_SAMPLER.get(); + if (var1 == null) { + Identifier var3 = arj.getCurrentTexture(); + if (var3 != null) { + AbstractTexture var4 = mc.getTextureManager().getTexture(var3); + if (var4 != null) { + var1 = var4.getTextureView(); + var2 = var4.getSampler(); + } + } + } + + if (var2 == null) { + var2 = RenderSystem.getSamplerCache().getClampToEdge(FilterMode.NEAREST); + } + + Map var10 = FORCED_NAMED_VIEWS.get(); + Map var11 = FORCED_NAMED_SAMPLERS.get(); + int var5 = 1; + + for (int var6 = 0; var6 < this.samplerNames.size(); var6++) { + String var7 = this.samplerNames.get(var6); + GpuTextureView var8 = (GpuTextureView)var10.get(var7); + if (var8 != null) { + GpuSampler var9 = (GpuSampler)var11.get(var7); + this.resolvedSamplerViews[var6] = var8; + this.resolvedSamplers[var6] = var9 != null ? var9 : var2; + } else if (var1 != null) { + this.resolvedSamplerViews[var6] = var1; + this.resolvedSamplers[var6] = var2; + } else { + this.resolvedSamplerViews[var6] = null; + this.resolvedSamplers[var6] = null; + var5 = 0; + } + } + + return (boolean)((var5) != 0); + } + + private boolean hasResolvableSamplers() { + int var2 = 0; + int var1 = 495099465; + + while (true) { + switch (var1) { + case -671888001: + return (boolean)((var2) != 0); + case 495099465: + default: + if (!this.samplerNames.isEmpty()) { + var1 = 916871920; + } else { + var1 = 1320485157; + } + break; + case 916871920: + if (this.resolveSamplers()) { + var1 = 1320485157; + } else { + var1 = 1599869047; + } + break; + case 1320485157: + var2 = 1; + var1 = -671888001; + break; + case 1599869047: + var2 = 0; + var1 = -671888001; + } + } + } + + private void bindSamplers(RenderPass var1) { + int var2 = 0; + int var3 = -1905204957; + + while (true) { + switch (var3) { + case -1905204957: + default: + var2 = 0; + var3 = -452888913; + break; + case -452888913: + if (var2 < this.samplerNames.size()) { + var3 = 1675705697; + } else { + var3 = 1518533896; + } + break; + case 1518533896: + return; + case 1675705697: + var1.bindTexture(this.samplerNames.get(var2), this.resolvedSamplerViews[var2], this.resolvedSamplers[var2]); + var2++; + var3 = -452888913; + } + } + } + + private void recordSamplers() { + int var1 = 0; + int var2 = -1058365053; + + while (true) { + switch (var2) { + case -1058365053: + default: + var1 = 0; + var2 = 2138061009; + break; + case 942484772: + atf.recordSampler(this.samplerNames.get(var1), this.resolvedSamplerViews[var1], this.resolvedSamplers[var1]); + var1++; + var2 = 2138061009; + break; + case 1305685416: + return; + case 2138061009: + if (var1 < this.samplerNames.size()) { + var2 = 942484772; + } else { + var2 = 1305685416; + } + } + } + } + + private static GpuTextureView resolveColorTarget() { + int var0 = 1599604213; + + while (true) { + switch (var0) { + case -1442790981: + return mc.gameRenderer.mainRenderTarget().getColorTextureView(); + case -540789051: + return RenderSystem.outputColorTextureOverride; + case 550429971: + return worldColorTarget; + case 664138474: + if (worldColorTarget != null) { + var0 = 550429971; + } else { + var0 = -1442790981; + } + break; + case 1599604213: + default: + if (RenderSystem.outputColorTextureOverride != null) { + var0 = -540789051; + } else { + var0 = 664138474; + } + } + } + } + + private static GpuTextureView resolveDepthTarget() { + RenderTarget var0 = null; + GpuTextureView var2 = null; + GpuTextureView var3 = null; + int var1 = -2122868109; + + while (true) { + switch (var1) { + case -2122868109: + default: + var0 = mc.gameRenderer.mainRenderTarget(); + if (RenderSystem.outputColorTextureOverride != null) { + var1 = -786401785; + } else { + var1 = -121489199; + } + break; + case -1071772038: + var3 = null; + var1 = 743860524; + break; + case -1000904918: + var3 = var0.getDepthTextureView(); + var1 = 743860524; + break; + case -786401785: + if (!var0.useDepth) { + var1 = 1350636906; + } else { + var1 = -628633771; + } + break; + case -628633771: + if (RenderSystem.outputDepthTextureOverride != null) { + var1 = -265744174; + } else { + var1 = 106522006; + } + break; + case -610313662: + return worldDepthTarget; + case -265744174: + var2 = RenderSystem.outputDepthTextureOverride; + var1 = 1264415831; + break; + case -121489199: + if (worldColorTarget != null) { + var1 = -610313662; + } else { + var1 = 2020039375; + } + break; + case 106522006: + var2 = var0.getDepthTextureView(); + var1 = 1264415831; + break; + case 743860524: + return var3; + case 1264415831: + return var2; + case 1350636906: + return null; + case 2020039375: + if (var0.useDepth) { + var1 = -1000904918; + } else { + var1 = -1071772038; + } + } + } + } + + public boolean tryRecordShapeQuad(float var1, Matrix3x2fc var2, float var3, float var4, float var5, float var6, int var7, int var8, int var9, int var10) { + if (!atf.isRecording() || this.pipeline == null || !programsReady) { + return (boolean)(((0)) != 0); + } + + if (!this.ensurePipelineCompiled()) { + clearActive(); + return (boolean)(((1)) != 0); + } + + ScissorState var11 = RenderSystem.getScissorStateForRenderTypeDraws(); + if (!var11.enabled() || var11.width() > 0 && var11.height() > 0) { + try { + int var12 = atf.writeShape(this.uniforms, var1); + atf.beginCommand(); + atf.recordShapeQuad( + this.pipeline, + atf.shapeChunkOffset(), + currentDynamicSlice(), + resolveColorTarget(), + resolveDepthTarget(), + var11, + var2, + var3, + var4, + var5, + var6, + var12, + var7, + var8, + var9, + var10 + ); + } finally { + clearBoundTexture(); + clearActive(); + } + + return (boolean)(((1)) != 0); + } else { + clearActive(); + return (boolean)(((1)) != 0); + } + } + + public boolean tryRecordColorQuad(Matrix3x2fc var1, float var2, float var3, float var4, float var5, int var6, int var7, int var8, int var9) { + if (!atf.isRecording() || this.pipeline == null || !programsReady) { + return (boolean)(((0)) != 0); + } + + if (!this.ensurePipelineCompiled()) { + clearBoundTexture(); + clearActive(); + return (boolean)(((1)) != 0); + } + + ScissorState var10 = RenderSystem.getScissorStateForRenderTypeDraws(); + if (!var10.enabled() || var10.width() > 0 && var10.height() > 0) { + if (!this.hasResolvableSamplers()) { + clearBoundTexture(); + clearActive(); + return (boolean)(((1)) != 0); + } + + try { + GpuBufferSlice var11 = currentDynamicSlice(); + int var12 = this.currentUniformOffset(); + atf.beginCommand(); + this.recordSamplers(); + atf.recordColorQuad( + this.pipeline, var12, var11, resolveColorTarget(), resolveDepthTarget(), var10, var1, var2, var3, var4, var5, var6, var7, var8, var9 + ); + } finally { + clearBoundTexture(); + clearActive(); + } + + return (boolean)(((1)) != 0); + } else { + clearBoundTexture(); + clearActive(); + return (boolean)(((1)) != 0); + } + } + + private void recordBatched(MeshData var1, ScissorState var2) { + GpuBufferSlice var3 = currentDynamicSlice(); + int var4 = this.currentUniformOffset(); + atf.beginCommand(); + this.recordSamplers(); + atf.endCommand(this.pipeline, var4, var3, resolveColorTarget(), resolveDepthTarget(), var1.vertexBuffer(), var1.drawState().indexCount(), var2); + } + + public static void loadAndSetupPrograms() { + REGISTERED_PROGRAMS.forEach(Runnable::run); + programsReady = (boolean)(((1)) != 0); + } + + public static boolean areProgramsReady() { + return programsReady; + } + + private boolean ensurePipelineCompiled() { + int var1 = 899580682; + + while (true) { + switch (var1) { + case -492107593: + return (boolean)(((0)) != 0); + case -424194007: + if (RenderSystem.getDevice().precompilePipeline(this.pipeline).isValid()) { + var1 = 1473724866; + } else { + var1 = 916250250; + } + break; + case 695564508: + return (boolean)(((1)) != 0); + case 899580682: + default: + if (this.pipelineValidated) { + var1 = 695564508; + } else { + var1 = -424194007; + } + break; + case 916250250: + if (this.pipelineCompileAttempts >= (-2041352714 | 2041352722) + (-2041352714 & 2041352722)) { + var1 = -492107593; + } else { + var1 = 1479121386; + } + break; + case 1473724866: + this.pipelineValidated = (boolean)(((1)) != 0); + this.pipelineCompileAttempts = 0; + return (boolean)(((1)) != 0); + case 1479121386: + this.pipelineCompileAttempts += 1; + this.setup(); + return (boolean)(((0)) != 0); + } + } + } + + void setUniform(String var1, int var2) { + this.setUniform(var1, (float)var2); + } + + void setUniform(String var1, float var2) { + this.setUniformValues(var1, var2, 0.0F, 0.0F, 0.0F, (457580843 ^ -457580842) + ((457580843 & -457580842) << 1)); + } + + void setUniform(String var1, float var2, float var3) { + this.setUniformValues(var1, var2, var3, 0.0F, 0.0F, (55811507 | -55811505) + (55811507 & -55811505)); + } + + void setUniform(String var1, float var2, float var3, float var4) { + this.setUniformValues(var1, var2, var3, var4, 0.0F, (145128099 | -145128096) + (145128099 & -145128096)); + } + + void setUniform(String var1, float var2, float var3, float var4, float var5) { + this.setUniformValues(var1, var2, var3, var4, var5, (-460682508 ^ 460682512) + ((-460682508 & 460682512) << 1)); + } + + private void setUniformValues(String var1, float var2, float var3, float var4, float var5, int var6) { + switch (var1) { + case "Size": + if (var6 >= 2) { + this.uniforms.sizeX = var2; + this.uniforms.sizeY = var3; + this.markDirty(); + } + break; + case "Radius": + if (var6 >= 4) { + this.uniforms.radiusX = var2; + this.uniforms.radiusY = var3; + this.uniforms.radiusZ = var4; + this.uniforms.radiusW = var5; + this.markDirty(); + } + break; + case "Smoothness": + if (var6 >= 2) { + this.uniforms.smoothnessX = var2; + this.uniforms.smoothnessY = var3; + } else if (var6 >= 1) { + this.uniforms.smoothnessX = var2; + this.uniforms.smoothnessY = 0.0F; + } + + this.markDirty(); + break; + case "CornerSmoothness": + if (var6 >= 1) { + this.uniforms.cornerSmoothness = var2; + this.markDirty(); + } + break; + case "Thickness": + if (var6 >= 1) { + this.uniforms.thickness = var2; + this.markDirty(); + } + break; + case "CornerIndex": + if (var6 >= 1) { + this.uniforms.cornerIndex = var2; + this.markDirty(); + } + break; + case "Progress": + if (var6 >= 1) { + this.uniforms.progress = var2; + this.markDirty(); + } + break; + case "Fade": + if (var6 >= 1) { + this.uniforms.fade = var2; + this.markDirty(); + } + break; + case "StripeWidth": + if (var6 >= 1) { + this.uniforms.stripeWidth = var2; + this.markDirty(); + } + break; + case "TopLeftColor": + if (var6 >= 4) { + this.uniforms.topLeftR = var2; + this.uniforms.topLeftG = var3; + this.uniforms.topLeftB = var4; + this.uniforms.topLeftA = var5; + this.markDirty(); + } + break; + case "BottomLeftColor": + if (var6 >= 4) { + this.uniforms.bottomLeftR = var2; + this.uniforms.bottomLeftG = var3; + this.uniforms.bottomLeftB = var4; + this.uniforms.bottomLeftA = var5; + this.markDirty(); + } + break; + case "TopRightColor": + if (var6 >= 4) { + this.uniforms.topRightR = var2; + this.uniforms.topRightG = var3; + this.uniforms.topRightB = var4; + this.uniforms.topRightA = var5; + this.markDirty(); + } + break; + case "BottomRightColor": + if (var6 >= 4) { + this.uniforms.bottomRightR = var2; + this.uniforms.bottomRightG = var3; + this.uniforms.bottomRightB = var4; + this.uniforms.bottomRightA = var5; + this.markDirty(); + } + break; + case "BlurRadius": + if (var6 >= 1) { + this.uniforms.blurRadius = var2; + this.markDirty(); + } + break; + case "Resolution": + if (var6 >= 2) { + this.uniforms.resolutionX = var2; + this.uniforms.resolutionY = var3; + this.markDirty(); + } + break; + case "Offset": + if (var6 >= 1) { + this.uniforms.offset = var2; + this.markDirty(); + } + break; + case "Saturation": + if (var6 >= 1) { + this.uniforms.saturation = var2; + this.markDirty(); + } + break; + case "TintIntensity": + if (var6 >= 1) { + this.uniforms.tintIntensity = var2; + this.markDirty(); + } + break; + case "TintColor": + if (var6 >= 3) { + this.uniforms.tintColorR = var2; + this.uniforms.tintColorG = var3; + this.uniforms.tintColorB = var4; + this.markDirty(); + } + break; + case "Range": + if (var6 >= 1) { + this.uniforms.range = var2; + this.markDirty(); + } + break; + case "Outline": + if (var6 >= 1) { + this.uniforms.outline = var2; + this.markDirty(); + } + break; + case "OutlineThickness": + if (var6 >= 1) { + this.uniforms.outlineThickness = var2; + this.markDirty(); + } + break; + case "OutlineColor": + if (var6 >= 4) { + this.uniforms.outlineColorR = var2; + this.uniforms.outlineColorG = var3; + this.uniforms.outlineColorB = var4; + this.uniforms.outlineColorA = var5; + this.markDirty(); + } + break; + case "EnableFadeout": + if (var6 >= 1) { + this.uniforms.enableFadeout = var2; + this.markDirty(); + } + break; + case "FadeoutStart": + if (var6 >= 1) { + this.uniforms.fadeoutStart = var2; + this.markDirty(); + } + break; + case "FadeoutEnd": + if (var6 >= 1) { + this.uniforms.fadeoutEnd = var2; + this.markDirty(); + } + break; + case "MaxWidth": + if (var6 >= 1) { + this.uniforms.maxWidth = var2; + this.markDirty(); + } + break; + case "TextPosX": + if (var6 >= 1) { + this.uniforms.textPosX = var2; + this.markDirty(); + } + break; + case "Time": + if (var6 >= 1) { + this.uniforms.time = var2; + this.markDirty(); + } + break; + case "HandColor": + if (var6 >= 4) { + this.uniforms.handR = var2; + this.uniforms.handG = var3; + this.uniforms.handB = var4; + this.uniforms.handA = var5; + this.markDirty(); + } + break; + case "HandShaderMode": + if (var6 >= 1) { + this.uniforms.handShaderMode = var2; + this.markDirty(); + } + break; + case "HandShaderOnly": + if (var6 >= 1) { + this.uniforms.handShaderOnly = var2; + this.markDirty(); + } + break; + case "MaskTopY": + if (var6 >= 1) { + this.uniforms.maskTopY = var2; + this.markDirty(); + } + break; + case "MaskBottomY": + if (var6 >= 1) { + this.uniforms.maskBottomY = var2; + this.markDirty(); + } + break; + case "MaskFadeHeight": + if (var6 >= 1) { + this.uniforms.maskFadeTop = var2; + this.uniforms.maskFadeBottom = var2; + this.markDirty(); + } + break; + case "MaskFadeTop": + if (var6 >= 1) { + this.uniforms.maskFadeTop = var2; + this.markDirty(); + } + break; + case "MaskFadeBottom": + if (var6 >= 1) { + this.uniforms.maskFadeBottom = var2; + this.markDirty(); + } + break; + case "MaskBypass": + if (var6 >= 1) { + this.uniforms.maskBypass = var2; + this.markDirty(); + } + break; + case "MaskLeftX": + if (var6 >= 1) { + this.uniforms.maskLeftX = var2; + this.markDirty(); + } + break; + case "MaskRightX": + if (var6 >= 1) { + this.uniforms.maskRightX = var2; + this.markDirty(); + } + break; + case "MaskFadeWidth": + if (var6 >= 1) { + this.uniforms.maskFadeLeft = var2; + this.uniforms.maskFadeRight = var2; + this.markDirty(); + } + break; + case "MaskFadeLeft": + if (var6 >= 1) { + this.uniforms.maskFadeLeft = var2; + this.markDirty(); + } + break; + case "MaskFadeRight": + if (var6 >= 1) { + this.uniforms.maskFadeRight = var2; + this.markDirty(); + } + break; + case "CameraPos": + if (var6 >= 3) { + this.uniforms.cameraPosX = var2; + this.uniforms.cameraPosY = var3; + this.uniforms.cameraPosZ = var4; + this.markDirty(); + } + break; + case "SmokeCamShift": + if (var6 >= 2) { + this.uniforms.smokeCamShiftX = var2; + this.uniforms.smokeCamShiftY = var3; + this.markDirty(); + } + break; + case "SmokeIntensity": + this.uniforms.smokeIntensity = var2; + this.markDirty(); + break; + case "SmokeSpeed": + this.uniforms.smokeSpeed = var2; + this.markDirty(); + break; + case "SmokeLength": + this.uniforms.smokeLength = var2; + this.markDirty(); + break; + case "SmokeTrailSoftness": + this.uniforms.smokeTrailSoftness = var2; + this.markDirty(); + break; + case "SmokeTrailBlur": + this.uniforms.smokeTrailBlur = var2; + this.markDirty(); + break; + case "SmokeAmount": + this.uniforms.smokeAmount = var2; + this.markDirty(); + break; + case "SmokeActivity": + this.uniforms.smokeActivity = var2; + this.markDirty(); + break; + case "SmokeTrailFade": + this.uniforms.smokeTrailFade = var2; + this.markDirty(); + break; + case "SmokeSlash": + this.uniforms.smokeSlash = var2; + this.markDirty(); + break; + case "SmokeSlashDir": + this.uniforms.smokeSlashDir = var2; + this.markDirty(); + break; + case "SmokeSwingHand": + this.uniforms.smokeSwingHand = var2; + this.markDirty(); + break; + case "SmokeHandSoftness": + this.uniforms.smokeHandSoftness = var2; + this.markDirty(); + break; + case "SmokeHandBlur": + this.uniforms.smokeHandBlur = var2; + this.markDirty(); + break; + case "SmokeHeight": + this.uniforms.smokeHeight = var2; + this.markDirty(); + break; + case "SmokeWind": + this.uniforms.smokeWind = var2; + this.markDirty(); + break; + case "SmokeWave": + this.uniforms.smokeWave = var2; + this.markDirty(); + break; + case "Refraction": + this.uniforms.refraction = var2; + this.markDirty(); + break; + case "BevelDepth": + this.uniforms.bevelDepth = var2; + this.markDirty(); + break; + case "BevelWidth": + this.uniforms.bevelWidth = var2; + this.markDirty(); + break; + case "TiltX": + this.uniforms.tiltX = var2; + this.markDirty(); + break; + case "TiltY": + this.uniforms.tiltY = var2; + this.markDirty(); + break; + case "Frost": + this.uniforms.frost = var2; + this.markDirty(); + break; + case "Tint": + this.uniforms.tint = var2; + this.markDirty(); + } + } + + public void setSize(float var1, float var2) { + int var3 = 1402707105; + + while (true) { + switch (var3) { + case -80262888: + if (this.uniforms.sizeY == var2) { + var3 = 1456623829; + } else { + var3 = 2076898707; + } + break; + case 1402707105: + default: + if (this.uniforms.sizeX == var1) { + var3 = -80262888; + } else { + var3 = 2076898707; + } + break; + case 1456623829: + return; + case 2076898707: + this.uniforms.sizeX = var1; + this.uniforms.sizeY = var2; + this.markDirty(); + return; + } + } + } + + public void setRadius(float var1, float var2, float var3, float var4) { + int var5 = -1599125515; + + while (true) { + switch (var5) { + case -1599125515: + default: + if (this.uniforms.radiusX == var1) { + var5 = -1076494067; + } else { + var5 = -885694610; + } + break; + case -1172460100: + if (this.uniforms.radiusZ == var3) { + var5 = 1570648763; + } else { + var5 = -885694610; + } + break; + case -1076494067: + if (this.uniforms.radiusY == var2) { + var5 = -1172460100; + } else { + var5 = -885694610; + } + break; + case -885694610: + this.uniforms.radiusX = var1; + this.uniforms.radiusY = var2; + this.uniforms.radiusZ = var3; + this.uniforms.radiusW = var4; + this.markDirty(); + return; + case 731380601: + return; + case 1570648763: + if (this.uniforms.radiusW == var4) { + var5 = 731380601; + } else { + var5 = -885694610; + } + } + } + } + + public void setSmoothness(float var1) { + int var2 = -1296409205; + + while (true) { + switch (var2) { + case -1356840873: + this.uniforms.smoothnessX = var1; + this.uniforms.smoothnessY = 0.0F; + this.markDirty(); + return; + case -1296409205: + default: + if (this.uniforms.smoothnessX == var1) { + var2 = -791023974; + } else { + var2 = -1356840873; + } + break; + case -791023974: + if (this.uniforms.smoothnessY == 0.0F) { + var2 = 519497628; + } else { + var2 = -1356840873; + } + break; + case 519497628: + return; + } + } + } + + public void setSmoothness(float var1, float var2) { + int var3 = -1569840652; + + while (true) { + switch (var3) { + case -1569840652: + default: + if (this.uniforms.smoothnessX == var1) { + var3 = -965583349; + } else { + var3 = -611783933; + } + break; + case -965583349: + if (this.uniforms.smoothnessY == var2) { + var3 = 73774526; + } else { + var3 = -611783933; + } + break; + case -611783933: + this.uniforms.smoothnessX = var1; + this.uniforms.smoothnessY = var2; + this.markDirty(); + return; + case 73774526: + return; + } + } + } + + public void setCornerSmoothness(float var1) { + int var2 = -67803199; + + while (true) { + switch (var2) { + case -1978144214: + this.uniforms.cornerSmoothness = var1; + this.markDirty(); + return; + case -751019817: + return; + case -67803199: + } + + if (this.uniforms.cornerSmoothness == var1) { + var2 = -751019817; + } else { + var2 = -1978144214; + } + } + } + + public void setThickness(float var1) { + int var2 = 150265675; + + while (true) { + switch (var2) { + case 150265675: + default: + if (this.uniforms.thickness == var1) { + var2 = 1220659056; + } else { + var2 = 628037866; + } + break; + case 628037866: + this.uniforms.thickness = var1; + this.markDirty(); + return; + case 1220659056: + return; + } + } + } + + public void setCornerIndex(float var1) { + int var2 = 1751424653; + + while (true) { + switch (var2) { + case -1616123644: + this.uniforms.cornerIndex = var1; + this.markDirty(); + return; + case -1400868193: + return; + case 1751424653: + } + + if (this.uniforms.cornerIndex == var1) { + var2 = -1400868193; + } else { + var2 = -1616123644; + } + } + } + + public void setProgress(float var1) { + int var2 = 54388927; + + while (true) { + switch (var2) { + case 54388927: + default: + if (this.uniforms.progress == var1) { + var2 = 2126860258; + } else { + var2 = 1013444387; + } + break; + case 1013444387: + this.uniforms.progress = var1; + this.markDirty(); + return; + case 2126860258: + return; + } + } + } + + public void setFade(float var1) { + int var2 = 1678928819; + + while (true) { + switch (var2) { + case -2046015285: + this.uniforms.fade = var1; + this.markDirty(); + return; + case -145638859: + return; + case 1678928819: + } + + if (this.uniforms.fade == var1) { + var2 = -145638859; + } else { + var2 = -2046015285; + } + } + } + + public void setGlow(float var1, float var2) { + int var3 = 1058216386; + + while (true) { + switch (var3) { + case -1066432880: + this.uniforms.glowRadius = var1; + this.uniforms.glowIntensity = var2; + this.markDirty(); + return; + case -376582580: + return; + case -176849738: + if (this.uniforms.glowIntensity == var2) { + var3 = -376582580; + } else { + var3 = -1066432880; + } + break; + case 1058216386: + default: + if (this.uniforms.glowRadius == var1) { + var3 = -176849738; + } else { + var3 = -1066432880; + } + } + } + } + + public void setGlowColor(float var1, float var2, float var3, float var4) { + int var5 = 1274631604; + + while (true) { + switch (var5) { + case -129218111: + if (this.uniforms.glowColorA == var4) { + var5 = 1673158451; + } else { + var5 = 783041018; + } + break; + case 237327911: + if (this.uniforms.glowColorB == var3) { + var5 = -129218111; + } else { + var5 = 783041018; + } + break; + case 783041018: + this.uniforms.glowColorR = var1; + this.uniforms.glowColorG = var2; + this.uniforms.glowColorB = var3; + this.uniforms.glowColorA = var4; + this.markDirty(); + return; + case 1274631604: + default: + if (this.uniforms.glowColorR == var1) { + var5 = 2037921708; + } else { + var5 = 783041018; + } + break; + case 1673158451: + return; + case 2037921708: + if (this.uniforms.glowColorG == var2) { + var5 = 237327911; + } else { + var5 = 783041018; + } + } + } + } + + public void setShapeExtra(float var1) { + int var2 = -101378277; + + while (true) { + switch (var2) { + case -929292943: + return; + case -101378277: + default: + if (this.uniforms.shapeExtra == var1) { + var2 = -929292943; + } else { + var2 = 571868770; + } + break; + case 571868770: + this.uniforms.shapeExtra = var1; + this.markDirty(); + return; + } + } + } + + public void setStripeWidth(float var1) { + int var2 = 914644960; + + while (true) { + switch (var2) { + case 217895738: + return; + case 311848865: + this.uniforms.stripeWidth = var1; + this.markDirty(); + return; + case 914644960: + } + + if (this.uniforms.stripeWidth == var1) { + var2 = 217895738; + } else { + var2 = 311848865; + } + } + } + + public void setTopLeftColor(float var1, float var2, float var3, float var4) { + int var5 = 80150022; + + while (true) { + switch (var5) { + case -1733065520: + this.uniforms.topLeftR = var1; + this.uniforms.topLeftG = var2; + this.uniforms.topLeftB = var3; + this.uniforms.topLeftA = var4; + this.markDirty(); + return; + case -1023752739: + if (this.uniforms.topLeftG == var2) { + var5 = 1800316981; + } else { + var5 = -1733065520; + } + break; + case -198621626: + if (this.uniforms.topLeftA == var4) { + var5 = 1007722186; + } else { + var5 = -1733065520; + } + break; + case 80150022: + default: + if (this.uniforms.topLeftR == var1) { + var5 = -1023752739; + } else { + var5 = -1733065520; + } + break; + case 1007722186: + return; + case 1800316981: + if (this.uniforms.topLeftB == var3) { + var5 = -198621626; + } else { + var5 = -1733065520; + } + } + } + } + + public void setBottomLeftColor(float var1, float var2, float var3, float var4) { + this.uniforms.bottomLeftR = var1; + this.uniforms.bottomLeftG = var2; + this.uniforms.bottomLeftB = var3; + this.uniforms.bottomLeftA = var4; + this.markDirty(); + } + + public void setTopRightColor(float var1, float var2, float var3, float var4) { + this.uniforms.topRightR = var1; + this.uniforms.topRightG = var2; + this.uniforms.topRightB = var3; + this.uniforms.topRightA = var4; + this.markDirty(); + } + + public void setBottomRightColor(float var1, float var2, float var3, float var4) { + int var5 = 357167711; + + while (true) { + switch (var5) { + case -1456401836: + if (this.uniforms.bottomRightG == var2) { + var5 = 377653349; + } else { + var5 = 401583824; + } + break; + case -1180685236: + if (this.uniforms.bottomRightA == var4) { + var5 = 257952584; + } else { + var5 = 401583824; + } + break; + case 257952584: + return; + case 357167711: + default: + if (this.uniforms.bottomRightR == var1) { + var5 = -1456401836; + } else { + var5 = 401583824; + } + break; + case 377653349: + if (this.uniforms.bottomRightB == var3) { + var5 = -1180685236; + } else { + var5 = 401583824; + } + break; + case 401583824: + this.uniforms.bottomRightR = var1; + this.uniforms.bottomRightG = var2; + this.uniforms.bottomRightB = var3; + this.uniforms.bottomRightA = var4; + this.markDirty(); + return; + } + } + } + + public void setBlurRadius(float var1) { + int var2 = 2050587216; + + while (true) { + switch (var2) { + case 85377844: + this.uniforms.blurRadius = var1; + this.markDirty(); + return; + case 148798675: + return; + case 2050587216: + } + + if (this.uniforms.blurRadius == var1) { + var2 = 148798675; + } else { + var2 = 85377844; + } + } + } + + public void setResolution(float var1, float var2) { + int var3 = 1702298714; + + while (true) { + switch (var3) { + case -837533484: + if (this.uniforms.resolutionY == var2) { + var3 = 847558159; + } else { + var3 = -353390112; + } + break; + case -353390112: + this.uniforms.resolutionX = var1; + this.uniforms.resolutionY = var2; + this.markDirty(); + return; + case 847558159: + return; + case 1702298714: + default: + if (this.uniforms.resolutionX == var1) { + var3 = -837533484; + } else { + var3 = -353390112; + } + } + } + } + + public void setOffset(float var1) { + this.uniforms.offset = var1; + this.markDirty(); + } + + public void setSaturation(float var1) { + this.uniforms.saturation = var1; + this.markDirty(); + } + + public void setTintIntensity(float var1) { + this.uniforms.tintIntensity = var1; + this.markDirty(); + } + + public void setTintColor(float var1, float var2, float var3) { + this.uniforms.tintColorR = var1; + this.uniforms.tintColorG = var2; + this.uniforms.tintColorB = var3; + this.markDirty(); + } + + public void setRange(float var1) { + this.uniforms.range = var1; + this.markDirty(); + } + + public void setOutline(float var1) { + this.uniforms.outline = var1; + this.markDirty(); + } + + public void setOutlineThickness(float var1) { + this.uniforms.outlineThickness = var1; + this.markDirty(); + } + + public void setOutlineColor(float var1, float var2, float var3, float var4) { + this.uniforms.outlineColorR = var1; + this.uniforms.outlineColorG = var2; + this.uniforms.outlineColorB = var3; + this.uniforms.outlineColorA = var4; + this.markDirty(); + } + + public void setEnableFadeout(float var1) { + this.uniforms.enableFadeout = var1; + this.markDirty(); + } + + public void setFadeoutStart(float var1) { + this.uniforms.fadeoutStart = var1; + this.markDirty(); + } + + public void setFadeoutEnd(float var1) { + this.uniforms.fadeoutEnd = var1; + this.markDirty(); + } + + public void setMaxWidth(float var1) { + this.uniforms.maxWidth = var1; + this.markDirty(); + } + + public void setTextPosX(float var1) { + this.uniforms.textPosX = var1; + this.markDirty(); + } + + public void setTime(float var1) { + this.uniforms.time = var1; + this.markDirty(); + } + + public void setHandColor(float var1, float var2, float var3, float var4) { + this.uniforms.handR = var1; + this.uniforms.handG = var2; + this.uniforms.handB = var3; + this.uniforms.handA = var4; + this.markDirty(); + } + + public void setHandShaderMode(float var1) { + this.uniforms.handShaderMode = var1; + this.markDirty(); + } + + public void setHandShaderOnly(float var1) { + this.uniforms.handShaderOnly = var1; + this.markDirty(); + } + + public void setMaskTopY(float var1) { + this.uniforms.maskTopY = var1; + this.markDirty(); + } + + public void setMaskBottomY(float var1) { + this.uniforms.maskBottomY = var1; + this.markDirty(); + } + + public void setMaskFadeHeight(float var1) { + this.uniforms.maskFadeTop = var1; + this.uniforms.maskFadeBottom = var1; + this.markDirty(); + } + + public void setMaskFadeTop(float var1) { + this.uniforms.maskFadeTop = var1; + this.markDirty(); + } + + public void setMaskFadeBottom(float var1) { + this.uniforms.maskFadeBottom = var1; + this.markDirty(); + } + + public void setMaskBypass(float var1) { + this.uniforms.maskBypass = var1; + this.markDirty(); + } + + public void setMaskLeftX(float var1) { + this.uniforms.maskLeftX = var1; + this.markDirty(); + } + + public void setMaskRightX(float var1) { + this.uniforms.maskRightX = var1; + this.markDirty(); + } + + public void setMaskFadeWidth(float var1) { + this.uniforms.maskFadeLeft = var1; + this.uniforms.maskFadeRight = var1; + this.markDirty(); + } + + public void setMaskFadeLeft(float var1) { + this.uniforms.maskFadeLeft = var1; + this.markDirty(); + } + + public void setMaskFadeRight(float var1) { + this.uniforms.maskFadeRight = var1; + this.markDirty(); + } + + public void setCameraPos(float var1, float var2, float var3) { + this.uniforms.cameraPosX = var1; + this.uniforms.cameraPosY = var2; + this.uniforms.cameraPosZ = var3; + this.markDirty(); + } + + public void setRefraction(float var1) { + this.uniforms.refraction = var1; + this.markDirty(); + } + + public void setBevelDepth(float var1) { + this.uniforms.bevelDepth = var1; + this.markDirty(); + } + + public void setBevelWidth(float var1) { + this.uniforms.bevelWidth = var1; + this.markDirty(); + } + + public void setTiltX(float var1) { + this.uniforms.tiltX = var1; + this.markDirty(); + } + + public void setTiltY(float var1) { + this.uniforms.tiltY = var1; + this.markDirty(); + } + + public void setFrost(float var1) { + this.uniforms.frost = var1; + this.markDirty(); + } + + public void setGlassContrast(float var1, float var2) { + this.uniforms.glassContrast = var1; + this.uniforms.glassTextLuma = var2; + this.markDirty(); + } + + public void setGlassSpecular(float var1, float var2, float var3) { + this.uniforms.glassSpecular = var1; + this.uniforms.glassLightX = var2; + this.uniforms.glassLightY = var3; + this.markDirty(); + } + + public void setGlassDispersion(float var1) { + this.uniforms.glassDispersion = var1; + this.markDirty(); + } + + public void setGlassRimGain(float var1) { + this.uniforms.glassRimGain = var1; + this.markDirty(); + } + + public void setGlassDepth(float var1) { + this.uniforms.glassDepth = var1; + this.markDirty(); + } + + public void setGlassSpan(float var1, float var2) { + int var3 = -608858074; + + while (true) { + switch (var3) { + case -1696970442: + this.uniforms.glassSpanU = var1; + this.uniforms.glassSpanV = var2; + this.markDirty(); + return; + case -608858074: + default: + if (this.uniforms.glassSpanU == var1) { + var3 = 710389743; + } else { + var3 = -1696970442; + } + break; + case -265077910: + return; + case 710389743: + if (this.uniforms.glassSpanV == var2) { + var3 = -265077910; + } else { + var3 = -1696970442; + } + } + } + } + + public void setTint(float var1) { + int var2 = 1638037072; + + while (true) { + switch (var2) { + case -1270865876: + this.uniforms.tint = var1; + this.markDirty(); + return; + case 950309626: + return; + case 1638037072: + } + + if (this.uniforms.tint == var1) { + var2 = 950309626; + } else { + var2 = -1270865876; + } + } + } + + public void setGlossDirection(float var1, float var2) { + int var3 = -2002368465; + + while (true) { + switch (var3) { + case -2002368465: + default: + if (this.uniforms.glossDirX == var1) { + var3 = -1214572246; + } else { + var3 = -655604763; + } + break; + case -1214572246: + if (this.uniforms.glossDirY == var2) { + var3 = 718557251; + } else { + var3 = -655604763; + } + break; + case -655604763: + this.uniforms.glossDirX = var1; + this.uniforms.glossDirY = var2; + this.markDirty(); + return; + case 718557251: + return; + } + } + } + + public void setSweepOrigin(float var1, float var2) { + int var3 = 212713331; + + while (true) { + switch (var3) { + case 212713331: + default: + if (this.uniforms.sweepOriginX == var1) { + var3 = 504146968; + } else { + var3 = 1356076636; + } + break; + case 504146968: + if (this.uniforms.sweepOriginY == var2) { + var3 = 1035427251; + } else { + var3 = 1356076636; + } + break; + case 1035427251: + return; + case 1356076636: + this.uniforms.sweepOriginX = var1; + this.uniforms.sweepOriginY = var2; + this.markDirty(); + return; + } + } + } + + public void setBackdrop(float var1, float var2, float var3, float var4) { + int var5 = -2135999786; + + while (true) { + switch (var5) { + case -2135999786: + default: + if (this.uniforms.backdropMode == var1) { + var5 = 2064799329; + } else { + var5 = -575024477; + } + break; + case -575024477: + this.uniforms.backdropMode = var1; + this.uniforms.backdropIntensity = var2; + this.uniforms.backdropLoop = var3; + this.uniforms.backdropScale = var4; + this.markDirty(); + return; + case -311557007: + if (this.uniforms.backdropScale == var4) { + var5 = 2072178712; + } else { + var5 = -575024477; + } + break; + case 1743118072: + if (this.uniforms.backdropLoop == var3) { + var5 = -311557007; + } else { + var5 = -575024477; + } + break; + case 2064799329: + if (this.uniforms.backdropIntensity == var2) { + var5 = 1743118072; + } else { + var5 = -575024477; + } + break; + case 2072178712: + return; + } + } + } + + public void setSkyRotation(float var1, float var2) { + int var3 = 2057594507; + + while (true) { + switch (var3) { + case -1720140837: + this.uniforms.skyRotSin = var1; + this.uniforms.skyRotCos = var2; + this.markDirty(); + return; + case 408421281: + return; + case 1356341815: + if (this.uniforms.skyRotCos == var2) { + var3 = 408421281; + } else { + var3 = -1720140837; + } + break; + case 2057594507: + default: + if (this.uniforms.skyRotSin == var1) { + var3 = 1356341815; + } else { + var3 = -1720140837; + } + } + } + } + + public void setSkyFullDome(float var1) { + int var2 = -2124314824; + + while (true) { + switch (var2) { + case -2124314824: + default: + if (this.uniforms.skyFullDome == var1) { + var2 = -2106869929; + } else { + var2 = -1496712251; + } + break; + case -2106869929: + return; + case -1496712251: + this.uniforms.skyFullDome = var1; + this.markDirty(); + return; + } + } + } + + private void markDirty() { + this.dirty = (boolean)(((1)) != 0); + this.uniformsChanged = (boolean)(((1)) != 0); + } + + private int currentUniformOffset() { + int var1 = 0; + int var2 = -1053462916; + + while (true) { + switch (var2) { + case -1242841161: + return this.cachedUniformOffset; + case -1053462916: + default: + var1 = atf.uniformGeneration(); + if (!this.uniformsChanged) { + var2 = -294749; + } else { + var2 = 841333183; + } + break; + case -294749: + if (this.cachedUniformGeneration == var1) { + var2 = 1980915506; + } else { + var2 = 841333183; + } + break; + case 841333183: + this.cachedUniformOffset = atf.writeUniforms(this.uniforms); + this.cachedUniformGeneration = var1; + this.uniformsChanged = (boolean)(((0)) != 0); + return this.cachedUniformOffset; + case 1980915506: + if (this.cachedUniformOffset != (-30921614 | 30921613) + (-30921614 & 30921613)) { + var2 = -1242841161; + } else { + var2 = 841333183; + } + } + } + } + + private static GpuBufferSlice currentDynamicSlice() { + GpuBufferSlice var1 = null; + int var0 = 1644343169; + + while (true) { + switch (var0) { + case -1146479863: + var1 = RenderSystem.getDynamicUniforms() + .writeTransform(RenderSystem.getModelViewMatrixCopy(), COLOR_MODULATOR, ZERO_OFFSET, IDENTITY_TEXTURE_MATRIX); + var0 = 1056842664; + break; + case 548491536: + var1 = sharedTransform; + var0 = 1056842664; + break; + case 1056842664: + return var1; + case 1644343169: + default: + if (sharedTransform != null) { + var0 = 548491536; + } else { + var0 = -1146479863; + } + } + } + } + + private void updateUniformBuffer(CommandEncoder var1) { + Std140Builder var2 = null; + int var3 = -1957487877; + + while (true) { + switch (var3) { + case -1957487877: + default: + if (this.dirty) { + var3 = -1087794887; + } else { + var3 = -920170057; + } + break; + case -1087794887: + if (this.uniformSlice != null) { + var3 = 655555026; + } else { + var3 = -920170057; + } + break; + case -920170057: + return; + case 69971720: + this.uniformData.clear(); + var2 = Std140Builder.intoBuffer(this.uniformData); + this.uniforms.write(var2); + this.uniformData.flip(); + var1.writeToBuffer(this.uniformSlice, this.uniformData); + this.dirty = (boolean)(((0)) != 0); + return; + case 655555026: + if (this.uniformData == null) { + var3 = -920170057; + } else { + var3 = 69971720; + } + } + } + } + + private void loadPipeline(ResourceManager var1) throws IOException { + Identifier var2 = Identifier.fromNamespaceAndPath(this.id.getNamespace(), "shaders/core/" + this.id.getPath() + ".json"); + + try (BufferedReader var3 = var1.openAsReader(var2)) { + JsonObject var4 = JsonParser.parseReader(var3).getAsJsonObject(); + String var5 = var4.get("vertex").getAsString(); + String var6 = var4.get("fragment").getAsString(); + Identifier var7 = Identifier.parse(var5); + Identifier var8 = Identifier.parse(var6); + ArrayList var9 = new ArrayList(); + JsonArray var10 = var4.getAsJsonArray("samplers"); + if (var10 != null) { + for (JsonElement var12 : var10) { + JsonObject var13 = var12.getAsJsonObject(); + if (var13.has("name")) { + var9.add(var13.get("name").getAsString()); + } + } + } + + this.samplerNames = var9; + this.resolvedSamplerViews = new GpuTextureView[var9.size()]; + this.resolvedSamplers = new GpuSampler[var9.size()]; + Identifier var17 = Identifier.fromNamespaceAndPath( + this.id.getNamespace(), + "pipeline/" + + this.id + .getPath() + .replace((char)(47), (char)((-247021370 ^ 247021465) + ((-247021370 & 247021465) << 1))) + ); + Builder var18 = BindGroupLayout.builder().withUniform(this.uniformBlockName, UniformType.UNIFORM_BUFFER); + + for (String var14 : this.samplerNames) { + var18.withSampler(var14); + } + + com.mojang.blaze3d.pipeline.RenderPipeline.Builder var20 = RenderPipeline.builder(new Snippet[0]) + .withLocation(var17) + .withVertexShader(var7) + .withFragmentShader(var8) + .withVertexBinding(0, this.vertexFormat) + .withPrimitiveTopology(PrimitiveTopology.QUADS) + .withCull((boolean)((((-286557197 | 286557197) + (-286557197 & 286557197))) != 0)); + if (!this.useDepthTest && !this.depthWrite) { + var20.withDepthStencilState(Optional.empty()); + } else { + var20.withDepthStencilState(new DepthStencilState(this.useDepthTest ? this.depthCompare : CompareOp.ALWAYS_PASS, this.depthWrite)); + } + + var20.withBindGroupLayout(BindGroupLayouts.MATRICES_PROJECTION) + .withBindGroupLayout(BindGroupLayouts.FOG) + .withBindGroupLayout(BindGroupLayouts.GLOBALS) + .withBindGroupLayout(BindGroupLayouts.LIGHTING) + .withBindGroupLayout(var18.build()); + Optional var21 = this.noBlend ? Optional.empty() : Optional.of(this.blend != null ? this.blend : BlendFunction.TRANSLUCENT); + var20.withColorTargetState(new ColorTargetState(var21, this.colorFormat, (-1960445148 | 1960445163) + (-1960445148 & 1960445163))); + this.pipeline = var20.build(); + } + } +} diff --git a/src/main/java/defpackage/ate.java b/src/main/java/defpackage/ate.java new file mode 100644 index 0000000..7a549a9 --- /dev/null +++ b/src/main/java/defpackage/ate.java @@ -0,0 +1,127 @@ +package defpackage; + +public final class ate { + private final atd program; + private final String name; + + ate() { + this.program = null; + this.name = ""; + } + + ate(atd var1, String var2) { + this.program = var1; + this.name = var2; + } + + public void set(float var1) { + int var2 = 1881354278; + + while (true) { + switch (var2) { + case -1089966729: + this.program.setUniform(this.name, var1); + var2 = 1304404944; + break; + case 1304404944: + return; + case 1881354278: + default: + if (this.program != null) { + var2 = -1089966729; + } else { + var2 = 1304404944; + } + } + } + } + + public void set(float var1, float var2) { + int var3 = 891973901; + + while (true) { + switch (var3) { + case -637178854: + return; + case 149665011: + this.program.setUniform(this.name, var1, var2); + var3 = -637178854; + break; + case 891973901: + default: + if (this.program != null) { + var3 = 149665011; + } else { + var3 = -637178854; + } + } + } + } + + public void set(float var1, float var2, float var3) { + int var4 = 1612467588; + + while (true) { + switch (var4) { + case 335683572: + return; + case 1612467588: + default: + if (this.program != null) { + var4 = 1825873501; + } else { + var4 = 335683572; + } + break; + case 1825873501: + this.program.setUniform(this.name, var1, var2, var3); + var4 = 335683572; + } + } + } + + public void set(float var1, float var2, float var3, float var4) { + int var5 = -236646714; + + while (true) { + switch (var5) { + case -268922826: + return; + case -236646714: + default: + if (this.program != null) { + var5 = 1501839203; + } else { + var5 = -268922826; + } + break; + case 1501839203: + this.program.setUniform(this.name, var1, var2, var3, var4); + var5 = -268922826; + } + } + } + + public void set(int var1) { + int var2 = -1561613863; + + while (true) { + switch (var2) { + case -1561613863: + default: + if (this.program != null) { + var2 = 1176145929; + } else { + var2 = 1908421746; + } + break; + case 1176145929: + this.program.setUniform(this.name, var1); + var2 = 1908421746; + break; + case 1908421746: + return; + } + } + } +} diff --git a/src/main/java/defpackage/atf.java b/src/main/java/defpackage/atf.java new file mode 100644 index 0000000..83c5c8f --- /dev/null +++ b/src/main/java/defpackage/atf.java @@ -0,0 +1,1439 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.buffers.GpuBuffer; +import com.mojang.blaze3d.buffers.GpuBufferSlice; +import com.mojang.blaze3d.buffers.Std140Builder; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.RenderPass; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.systems.ScissorState; +import com.mojang.blaze3d.systems.RenderSystem.AutoStorageIndexBuffer; +import com.mojang.blaze3d.textures.GpuSampler; +import com.mojang.blaze3d.textures.GpuTextureView; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; +import java.util.OptionalDouble; +import java.util.function.Supplier; +import net.minecraft.util.ARGB; +import net.minecraft.util.Mth; +import org.joml.Matrix3x2fc; + +public final class atf { + private static final String EVOLUTION_UNIFORMS_NAME = "EvolutionUniforms"; + private static final String DYNAMIC_TRANSFORMS_NAME = "DynamicTransforms"; + private static final Supplier PASS_LABEL = () -> "evolution_gui_batch"; + private static final Supplier VERTEX_BUFFER_LABEL = () -> "evolution_gui_batch_vertices"; + private static final Supplier UNIFORM_BUFFER_LABEL = () -> "evolution_gui_batch_uniforms"; + private static final int INITIAL_COMMANDS = 256; + private static final int INITIAL_SAMPLERS = 512; + private static final int MIN_VERTEX_BYTES = 131072; + private static final int MIN_UNIFORM_BLOCKS = 512; + static final int NO_OFFSET = -1; + private static final int SCISSOR_STRIDE = 4; + private static final int SCISSOR_X = 0; + private static final int SCISSOR_Y = 1; + private static final int SCISSOR_WIDTH = 2; + private static final int SCISSOR_HEIGHT = 3; + private static final int POSITION_COLOR_STRIDE = 16; + private static final int POSITION_TEX_COLOR_STRIDE = 24; + private static final int SHAPE_VEC4_COUNT = 11; + private static final int SHAPE_STRIDE_BYTES = 176; + private static final int SHAPES_PER_CHUNK = 90; + private static final int SHAPE_CHUNK_BYTES = 15840; + private static final int MIN_SHAPE_CHUNKS = 8; + private static final String SHAPE_UNIFORMS_NAME = "EvoShapes"; + private static final Supplier SHAPE_BUFFER_LABEL = () -> "evolution_gui_batch_shapes"; + private static final int QUAD_VERTEX_COUNT = 4; + private static final int QUAD_INDEX_COUNT = 6; + private static GpuBuffer vertexBuffer; + private static int vertexBufferCapacity; + private static ByteBuffer vertexStaging = allocate((-2005828067 ^ 2005959139) + ((-2005828067 & 2005959139) << 1)); + private static int vertexUploadedBytes; + private static int frameVertexBytes; + private static int peakVertexBytes; + private static GpuBuffer uniformBuffer; + private static int uniformBufferCapacity; + private static int uniformBlockSize; + private static ByteBuffer uniformStaging = allocate((-993131067 | 993262139) + (-993131067 & 993262139)); + private static int uniformUploadedBytes; + private static int frameUniformBytes; + private static int peakUniformBytes; + private static int lastUniformOffset = -1; + private static int uniformGeneration; + private static GpuBuffer shapeBuffer; + private static int shapeBufferCapacity; + private static int shapeChunkStride; + private static ByteBuffer shapeStaging = allocate((-1104406887 | 1104533607) + (-1104406887 & 1104533607)); + private static int shapeUploadedBytes; + private static int shapeChunkBase; + private static int shapeSlot; + private static int frameShapeBytes; + private static int peakShapeBytes; + private static final List retiredBuffers = new ArrayList<>(); + private static RenderPipeline[] pipelines = new RenderPipeline[256]; + private static int[] uniformOffsets = new int[256]; + private static GpuBufferSlice[] dynamicSlices = new GpuBufferSlice[256]; + private static GpuTextureView[] colorTargets = new GpuTextureView[256]; + private static GpuTextureView[] depthTargets = new GpuTextureView[256]; + private static int[] vertexOffsets = new int[256]; + private static int[] vertexLengths = new int[256]; + private static int[] indexCounts = new int[256]; + private static boolean[] scissorFlags = new boolean[256]; + private static boolean[] shapeCommands = new boolean[256]; + private static int[] scissorRects = new int[1024]; + private static int[] samplerStarts = new int[256]; + private static int[] samplerEnds = new int[256]; + private static String[] samplerNames = new String[512]; + private static GpuTextureView[] samplerViews = new GpuTextureView[512]; + private static GpuSampler[] samplerHandles = new GpuSampler[512]; + private static boolean recording; + private static int commandCount; + private static int samplerCount; + private static int pendingSamplerStart; + + private atf() { + } + + public static boolean isRecording() { + return recording; + } + + public static void begin() { + int var0 = 0; + int var1 = 0; + int var2 = 0; + int var3 = -160465576; + + while (true) { + switch (var3) { + case -1597866794: + if (shapeBufferCapacity < var2) { + var3 = -1061700146; + } else { + var3 = 1126179835; + } + break; + case -1557359888: + shapeBuffer.close(); + var3 = -835711229; + break; + case -1061700146: + if (shapeBuffer != null) { + var3 = -1557359888; + } else { + var3 = -835711229; + } + break; + case -906954366: + vertexBufferCapacity = var0; + vertexBuffer = createBuffer(VERTEX_BUFFER_LABEL, 32, vertexBufferCapacity); + var3 = -172998335; + break; + case -835711229: + shapeBufferCapacity = var2; + shapeBuffer = createBuffer(SHAPE_BUFFER_LABEL, 128, shapeBufferCapacity); + var3 = 1126179835; + break; + case -547505579: + if (uniformBufferCapacity < var1) { + var3 = 464686502; + } else { + var3 = 1210055943; + } + break; + case -539665638: + closeRetiredBuffers(); + var0 = Math.max(131072, peakVertexBytes * ((-444403643 | 444403645) + (-444403643 & 444403645))); + if (vertexBuffer != null) { + var3 = -395444698; + } else { + var3 = 1050192216; + } + break; + case -395444698: + if (vertexBufferCapacity < var0) { + var3 = 1050192216; + } else { + var3 = -172998335; + } + break; + case -172998335: + var1 = Math.max( + uniformBlockSize() * (512), + peakUniformBytes * ((-1852076445 | 1852076447) + (-1852076445 & 1852076447)) + ); + if (uniformBuffer != null) { + var3 = -547505579; + } else { + var3 = 464686502; + } + break; + case -160465576: + default: + if (recording) { + var3 = 1113216963; + } else { + var3 = -539665638; + } + break; + case 24819566: + uniformBuffer.close(); + var3 = 64350105; + break; + case 64350105: + uniformBufferCapacity = var1; + uniformBuffer = createBuffer(UNIFORM_BUFFER_LABEL, 128, uniformBufferCapacity); + var3 = 1210055943; + break; + case 464686502: + if (uniformBuffer != null) { + var3 = 24819566; + } else { + var3 = 64350105; + } + break; + case 1050192216: + if (vertexBuffer != null) { + var3 = 1303113610; + } else { + var3 = -906954366; + } + break; + case 1113216963: + return; + case 1126179835: + peakVertexBytes = frameVertexBytes; + peakUniformBytes = frameUniformBytes; + peakShapeBytes = frameShapeBytes; + frameShapeBytes = 0; + shapeStaging.clear(); + shapeUploadedBytes = 0; + shapeChunkBase = 0; + shapeSlot = 0; + frameVertexBytes = 0; + frameUniformBytes = 0; + vertexStaging.clear(); + uniformStaging.clear(); + vertexUploadedBytes = 0; + uniformUploadedBytes = 0; + lastUniformOffset = -1; + commandCount = 0; + samplerCount = 0; + uniformGeneration += 1; + recording = (boolean)(((1)) != 0); + atd.beginSharedTransform(); + return; + case 1210055943: + var2 = Math.max( + shapeChunkStride() * (8), + peakShapeBytes * ((-1154922809 ^ 1154922811) + ((-1154922809 & 1154922811) << 1)) + ); + if (shapeBuffer != null) { + var3 = -1597866794; + } else { + var3 = -1061700146; + } + break; + case 1303113610: + vertexBuffer.close(); + var3 = -906954366; + } + } + } + + static int uniformGeneration() { + return uniformGeneration; + } + + public static void end() { + int var0 = 19195306; + + while (true) { + switch (var0) { + case -1235609994: + flush(); + atd.endSharedTransform(); + recording = (boolean)(((0)) != 0); + return; + case -307847576: + return; + case 19195306: + } + + if (!recording) { + var0 = -307847576; + } else { + var0 = -1235609994; + } + } + } + + public static int writeUniforms(atc var0) { + int var1 = 0; + int var2 = 0; + int var3 = 939308183; + + while (true) { + switch (var3) { + case -1215479680: + uniformStaging.position(var2); + return lastUniformOffset; + case -633628184: + rollOverUniformBuffer(var1); + var3 = 436628723; + break; + case 400561154: + if (blocksEqual(lastUniformOffset, var2)) { + var3 = -1215479680; + } else { + var3 = 636107511; + } + break; + case 436628723: + ensureVertexOrUniformCapacity((boolean)(((0)) != 0), var1); + var2 = uniformStaging.position(); + var0.write(Std140Builder.intoBuffer(uniformStaging)); + uniformStaging.position(var2 + var1); + if (lastUniformOffset != (-1478866340 | 1478866339) + (-1478866340 & 1478866339)) { + var3 = 400561154; + } else { + var3 = 636107511; + } + break; + case 636107511: + frameUniformBytes += var1; + lastUniformOffset = var2; + return var2; + case 939308183: + default: + var1 = uniformBlockSize(); + if (uniformStaging.position() + var1 > uniformBufferCapacity) { + var3 = -633628184; + } else { + var3 = 436628723; + } + } + } + } + + public static int shapeChunkOffset() { + return shapeChunkBase; + } + + public static int writeShape(atc var0, float var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = -746867712; + + while (true) { + switch (var5) { + case -2059319587: + shapeChunkBase += var2; + shapeSlot = 0; + var5 = -1632509330; + break; + case -2002482413: + frameShapeBytes = Math.max(frameShapeBytes, shapeChunkBase + var2); + int var10000 = shapeSlot; + shapeSlot += 1; + return var10000; + case -1632509330: + if (shapeChunkBase + var2 > shapeBufferCapacity) { + var5 = -240824762; + } else { + var5 = 1561884505; + } + break; + case -746867712: + default: + var2 = shapeChunkStride(); + if (shapeSlot == (-1004328259 ^ 1004328349) + ((-1004328259 & 1004328349) << 1)) { + var5 = -2059319587; + } else { + var5 = -1632509330; + } + break; + case -467388095: + shapeStaging.position(var4); + var5 = -2002482413; + break; + case -240824762: + rollOverShapeBuffer(); + var5 = 1561884505; + break; + case 1561884505: + ensureShapeStagingCapacity(shapeChunkBase + (-217220651 | 217236491) + (-217220651 & 217236491)); + var3 = shapeChunkBase + shapeSlot * (176); + shapeStaging.putFloat(var3, var0.sizeX); + shapeStaging.putFloat(var3 + 4, var0.sizeY); + shapeStaging.putFloat(var3 + 8, var0.smoothnessX); + shapeStaging.putFloat(var3 + 12, var0.smoothnessY); + shapeStaging.putFloat(var3 + 16, var0.radiusX); + shapeStaging.putFloat(var3 + 20, var0.radiusY); + shapeStaging.putFloat(var3 + 24, var0.radiusZ); + shapeStaging.putFloat(var3 + 28, var0.radiusW); + shapeStaging.putFloat(var3 + 32, var0.cornerSmoothness); + shapeStaging.putFloat(var3 + 36, var0.thickness); + shapeStaging.putFloat(var3 + 40, var0.cornerIndex); + shapeStaging.putFloat(var3 + 44, var0.progress); + shapeStaging.putFloat(var3 + 48, var0.fade); + shapeStaging.putFloat(var3 + 52, var0.stripeWidth); + shapeStaging.putFloat(var3 + 56, var1); + shapeStaging.putFloat(var3 + 60, var0.shapeExtra); + shapeStaging.putFloat(var3 + 64, var0.maskTopY); + shapeStaging.putFloat(var3 + 68, var0.maskBottomY); + shapeStaging.putFloat(var3 + 72, var0.maskLeftX); + shapeStaging.putFloat(var3 + 76, var0.maskRightX); + shapeStaging.putFloat(var3 + 80, var0.maskFadeTop); + shapeStaging.putFloat(var3 + 84, var0.maskFadeBottom); + shapeStaging.putFloat(var3 + 88, var0.maskFadeLeft); + shapeStaging.putFloat(var3 + 92, var0.maskFadeRight); + shapeStaging.putFloat(var3 + 96, var0.topLeftR); + shapeStaging.putFloat(var3 + 100, var0.topLeftG); + shapeStaging.putFloat(var3 + 104, var0.topLeftB); + shapeStaging.putFloat(var3 + 108, var0.topLeftA); + shapeStaging.putFloat(var3 + 112, var0.bottomLeftR); + shapeStaging.putFloat(var3 + 116, var0.bottomLeftG); + shapeStaging.putFloat(var3 + 120, var0.bottomLeftB); + shapeStaging.putFloat(var3 + 124, var0.bottomLeftA); + shapeStaging.putFloat(var3 + 128, var0.topRightR); + shapeStaging.putFloat(var3 + 132, var0.topRightG); + shapeStaging.putFloat(var3 + 136, var0.topRightB); + shapeStaging.putFloat(var3 + 140, var0.topRightA); + shapeStaging.putFloat(var3 + 144, var0.bottomRightR); + shapeStaging.putFloat(var3 + 148, var0.bottomRightG); + shapeStaging.putFloat(var3 + 152, var0.bottomRightB); + shapeStaging.putFloat(var3 + 156, var0.bottomRightA); + shapeStaging.putFloat(var3 + 160, var0.glossDirX); + shapeStaging.putFloat(var3 + 164, var0.glossDirY); + shapeStaging.putFloat(var3 + 168, 0.0F); + shapeStaging.putFloat(var3 + 172, 0.0F); + var4 = var3 + 176; + if (var4 > shapeStaging.position()) { + var5 = -467388095; + } else { + var5 = -2002482413; + } + } + } + } + + private static void rollOverShapeBuffer() { + flush(); + retiredBuffers.add(shapeBuffer); + shapeStaging.clear(); + shapeUploadedBytes = 0; + shapeChunkBase = 0; + shapeSlot = 0; + shapeBufferCapacity = shapeChunkStride() * (8); + shapeBuffer = createBuffer(SHAPE_BUFFER_LABEL, 128, shapeBufferCapacity); + } + + private static void ensureShapeStagingCapacity(int var0) { + int var1 = 0; + ByteBuffer var2 = null; + int var3 = 0; + int var4 = 1830283026; + + while (true) { + switch (var4) { + case 876300538: + var1 = Math.max(shapeStaging.capacity() * (2), var0); + var2 = allocate(var1); + var3 = shapeStaging.position(); + shapeStaging.limit(var3); + shapeStaging.position((908375550 | -908375550) + (908375550 & -908375550)); + var2.put(shapeStaging); + var2.position(var3); + shapeStaging = var2; + return; + case 1830283026: + default: + if (shapeStaging.capacity() >= var0) { + var4 = 1886604914; + } else { + var4 = 876300538; + } + break; + case 1886604914: + return; + } + } + } + + public static void recordShapeQuad( + RenderPipeline var0, + int var1, + GpuBufferSlice var2, + GpuTextureView var3, + GpuTextureView var4, + ScissorState var5, + Matrix3x2fc var6, + float var7, + float var8, + float var9, + float var10, + int var11, + int var12, + int var13, + int var14, + int var15 + ) { + int var16 = 0; + int var17 = 0; + int var18 = 0; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + float var27 = 0.0F; + int var28 = -1211251663; + + while (true) { + switch (var28) { + case -1211251663: + default: + var16 = 96; + var17 = pendingSamplerStart; + if (vertexStaging.position() + var16 > vertexBufferCapacity) { + var28 = 1380539393; + } else { + var28 = -230713624; + } + break; + case -230713624: + ensureCommandCapacity(); + ensureVertexOrUniformCapacity((boolean)(((1)) != 0), var16); + var18 = vertexStaging.position(); + var19 = var6.m00(); + var20 = var6.m01(); + var21 = var6.m10(); + var22 = var6.m11(); + var23 = var6.m20(); + var24 = var6.m21(); + var25 = var11; + var26 = var7 + var9; + var27 = var8 + var10; + putShapeVertex(var19, var20, var21, var22, var23, var24, var7, var8, var25, var12); + putShapeVertex(var19, var20, var21, var22, var23, var24, var7, var27, var25, var13); + putShapeVertex(var19, var20, var21, var22, var23, var24, var26, var27, var25, var14); + putShapeVertex(var19, var20, var21, var22, var23, var24, var26, var8, var25, var15); + frameVertexBytes += var16; + shapeCommands[commandCount] = (boolean)(((1)) != 0); + storeCommand(var0, var1, var2, var3, var4, var18, var16, 6, var17, var5); + return; + case 1380539393: + var17 = rollOverVertexBuffer(var17, var16); + var28 = -230713624; + } + } + } + + private static void putShapeVertex(float var0, float var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9) { + vertexStaging.putFloat(var0 * var6 + var2 * var7 + var4); + vertexStaging.putFloat(var1 * var6 + var3 * var7 + var5); + vertexStaging.putFloat(0.0F); + vertexStaging.putFloat(var8); + vertexStaging.putFloat(0.0F); + vertexStaging.putInt(ARGB.toABGR(var9)); + } + + public static void beginCommand() { + pendingSamplerStart = samplerCount; + } + + public static void recordSampler(String var0, GpuTextureView var1, GpuSampler var2) { + int var3 = 0; + int var4 = -1485367839; + + while (true) { + switch (var4) { + case -1485367839: + default: + if (samplerCount == samplerNames.length) { + var4 = -221731298; + } else { + var4 = -954938077; + } + break; + case -954938077: + samplerNames[samplerCount] = var0; + samplerViews[samplerCount] = var1; + samplerHandles[samplerCount] = var2; + samplerCount += 1; + return; + case -221731298: + var3 = samplerNames.length * (2); + samplerNames = Arrays.copyOf(samplerNames, var3); + samplerViews = Arrays.copyOf(samplerViews, var3); + samplerHandles = Arrays.copyOf(samplerHandles, var3); + var4 = -954938077; + } + } + } + + public static void endCommand( + RenderPipeline var0, int var1, GpuBufferSlice var2, GpuTextureView var3, GpuTextureView var4, ByteBuffer var5, int var6, ScissorState var7 + ) { + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 642090105; + + while (true) { + switch (var11) { + case -1955364683: + ensureCommandCapacity(); + ensureVertexOrUniformCapacity((boolean)(((1)) != 0), var8); + var10 = vertexStaging.position(); + vertexStaging.put(var5); + frameVertexBytes += var8; + shapeCommands[commandCount] = (boolean)(((0)) != 0); + storeCommand(var0, var1, var2, var3, var4, var10, var8, var6, var9, var7); + return; + case 642090105: + default: + var8 = var5.remaining(); + var9 = pendingSamplerStart; + if (vertexStaging.position() + var8 > vertexBufferCapacity) { + var11 = 822490480; + } else { + var11 = -1955364683; + } + break; + case 822490480: + var9 = rollOverVertexBuffer(var9, var8); + var11 = -1955364683; + } + } + } + + public static void recordColorQuad( + RenderPipeline var0, + int var1, + GpuBufferSlice var2, + GpuTextureView var3, + GpuTextureView var4, + ScissorState var5, + Matrix3x2fc var6, + float var7, + float var8, + float var9, + float var10, + int var11, + int var12, + int var13, + int var14 + ) { + int var15 = 0; + int var16 = 0; + int var17 = 0; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + int var26 = 371680848; + + while (true) { + switch (var26) { + case -257600782: + ensureCommandCapacity(); + ensureVertexOrUniformCapacity((boolean)(((1)) != 0), var15); + var17 = vertexStaging.position(); + var18 = var6.m00(); + var19 = var6.m01(); + var20 = var6.m10(); + var21 = var6.m11(); + var22 = var6.m20(); + var23 = var6.m21(); + var24 = var7 + var9; + var25 = var8 + var10; + putColorVertex(var18, var19, var20, var21, var22, var23, var7, var8, var11); + putColorVertex(var18, var19, var20, var21, var22, var23, var7, var25, var12); + putColorVertex(var18, var19, var20, var21, var22, var23, var24, var25, var13); + putColorVertex(var18, var19, var20, var21, var22, var23, var24, var8, var14); + frameVertexBytes += var15; + shapeCommands[commandCount] = (boolean)(((0)) != 0); + storeCommand(var0, var1, var2, var3, var4, var17, var15, 6, var16, var5); + return; + case 371680848: + default: + var15 = 64; + var16 = pendingSamplerStart; + if (vertexStaging.position() + var15 > vertexBufferCapacity) { + var26 = 828197668; + } else { + var26 = -257600782; + } + break; + case 828197668: + var16 = rollOverVertexBuffer(var16, var15); + var26 = -257600782; + } + } + } + + private static void putColorVertex(float var0, float var1, float var2, float var3, float var4, float var5, float var6, float var7, int var8) { + vertexStaging.putFloat(var0 * var6 + var2 * var7 + var4); + vertexStaging.putFloat(var1 * var6 + var3 * var7 + var5); + vertexStaging.putFloat(0.0F); + vertexStaging.putInt(ARGB.toABGR(var8)); + } + + private static void storeCommand( + RenderPipeline var0, int var1, GpuBufferSlice var2, GpuTextureView var3, GpuTextureView var4, int var5, int var6, int var7, int var8, ScissorState var9 + ) { + int var10 = 0; + int var11 = 0; + int var12 = 0; + int var13 = 1845487783; + + while (true) { + switch (var13) { + case -110333370: + commandCount += 1; + return; + case 97774175: + scissorRects[var12 + 0] = var9.x(); + scissorRects[var12 + 1] = var9.y(); + scissorRects[var12 + 2] = var9.width(); + scissorRects[var12 + 3] = var9.height(); + var13 = -110333370; + break; + case 1845487783: + default: + var10 = samplerCount; + pipelines[commandCount] = var0; + uniformOffsets[commandCount] = var1; + dynamicSlices[commandCount] = var2; + colorTargets[commandCount] = var3; + depthTargets[commandCount] = var4; + vertexOffsets[commandCount] = var5; + vertexLengths[commandCount] = var6; + indexCounts[commandCount] = var7; + samplerStarts[commandCount] = var8; + samplerEnds[commandCount] = var10; + boolean var15 = var9.enabled(); + scissorFlags[commandCount] = var15; + var12 = commandCount * (4); + if (var15) { + var13 = 97774175; + } else { + var13 = -110333370; + } + } + } + } + + public static void flush() { + CommandEncoder var0 = null; + int var1 = 0; + GpuTextureView var2 = null; + GpuTextureView var3 = null; + int var4 = 0; + int var5 = -2123991378; + + while (true) { + switch (var5) { + case -2123991378: + default: + if (commandCount == 0) { + var5 = -118037007; + } else { + var5 = 925840880; + } + break; + case -1730638535: + Arrays.fill(pipelines, 0, commandCount, null); + Arrays.fill(dynamicSlices, 0, commandCount, null); + Arrays.fill(colorTargets, 0, commandCount, null); + Arrays.fill(depthTargets, 0, commandCount, null); + Arrays.fill(samplerNames, 0, samplerCount, null); + Arrays.fill(samplerViews, 0, samplerCount, null); + Arrays.fill(samplerHandles, 0, samplerCount, null); + commandCount = 0; + samplerCount = 0; + return; + case -1554108057: + if (colorTargets[var4] == var2) { + var5 = 2006670716; + } else { + var5 = 463694033; + } + break; + case -1278335165: + if (var4 < commandCount) { + var5 = -1554108057; + } else { + var5 = 463694033; + } + break; + case -704091853: + var2 = colorTargets[var1]; + var3 = depthTargets[var1]; + var4 = var1 + 1; + var5 = -1278335165; + break; + case -118037007: + return; + case 82648342: + if (var1 < commandCount) { + var5 = -704091853; + } else { + var5 = -1730638535; + } + break; + case 144710230: + var4++; + var5 = -1278335165; + break; + case 463694033: + emitPass(var0, var2, var3, var1, var4); + var1 = var4; + var5 = 82648342; + break; + case 925840880: + vertexUploadedBytes = uploadPending(vertexStaging, vertexBuffer, vertexUploadedBytes); + uniformUploadedBytes = uploadPending(uniformStaging, uniformBuffer, uniformUploadedBytes); + shapeUploadedBytes = uploadPending(shapeStaging, shapeBuffer, shapeUploadedBytes); + var0 = RenderSystem.getDevice().createCommandEncoder(); + var1 = 0; + var5 = 82648342; + break; + case 2006670716: + if (depthTargets[var4] == var3) { + var5 = 144710230; + } else { + var5 = 463694033; + } + } + } + } + + private static boolean fitsTarget(int[] var0, int var1, int var2, int var3) { + int var4 = 0; + int var5 = 0; + int var7 = 0; + int var6 = -1448737283; + + while (true) { + switch (var6) { + case -1448737283: + default: + var4 = var0[var1 + 0]; + var5 = var0[var1 + 1]; + if (var4 >= 0) { + var6 = 1424152704; + } else { + var6 = -139330660; + } + break; + case -139330660: + var7 = 0; + var6 = 906280214; + break; + case 385764198: + if (var5 + var0[var1 + 3] <= var3) { + var6 = 1607787111; + } else { + var6 = -139330660; + } + break; + case 906280214: + return (boolean)((var7) != 0); + case 1424152704: + if (var5 >= 0) { + var6 = 1568705912; + } else { + var6 = -139330660; + } + break; + case 1568705912: + if (var4 + var0[var1 + 2] <= var2) { + var6 = 385764198; + } else { + var6 = -139330660; + } + break; + case 1607787111: + var7 = 1; + var6 = 906280214; + } + } + } + + private static void emitPass(CommandEncoder var0, GpuTextureView var1, GpuTextureView var2, int var3, int var4) { + int var5 = var1.getWidth((-1418109861 ^ 1418109861) + ((-1418109861 & 1418109861) << 1)); + int var6 = var1.getHeight((-1184712269 ^ 1184712269) + ((-1184712269 & 1184712269) << 1)); + int var7 = 0; + + for (int var8 = var3; var8 < var4; var8++) { + var7 += indexCounts[var8]; + } + + AutoStorageIndexBuffer var28 = RenderSystem.getSequentialBuffer(PrimitiveTopology.QUADS); + GpuBuffer var9 = var28.getBuffer(var7); + RenderPass var10 = var0.createRenderPass(PASS_LABEL, var1, Optional.empty(), var2, OptionalDouble.empty()); + + try { + RenderSystem.bindDefaultUniforms(var10); + var10.setIndexBuffer(var9, var28.type()); + RenderPipeline var11 = null; + GpuBufferSlice var12 = null; + int var13 = -1; + int var14 = 0; + int var15 = 0; + int var16 = 0; + int var17 = 0; + int var18 = 0; + int var19 = 0; + int var20 = var3; + + while (var20 < var4) { + if (pipelines[var20] != var11) { + var11 = pipelines[var20]; + var10.setPipeline(var11); + } + + if (!dynamicSlices[var20].equals(var12)) { + var12 = dynamicSlices[var20]; + var10.setUniform("DynamicTransforms", var12); + } + + if (uniformOffsets[var20] != var13 || shapeCommands[var20] != var14) { + var13 = uniformOffsets[var20]; + var14 = (shapeCommands[var20]) ? 1 : 0; + if (var14 != 0) { + var10.setUniform( + "EvoShapes", + shapeBuffer.slice(var13, (6405345633280005731L | -6405345633279989891L) + (6405345633280005731L & -6405345633279989891L)) + ); + } else { + var10.setUniform( + "EvolutionUniforms", + uniformBuffer.slice(var13, uniformBlockSize()) + ); + } + } + + for (int var21 = samplerStarts[var20]; var21 < samplerEnds[var20]; var21++) { + var10.bindTexture(samplerNames[var21], samplerViews[var21], samplerHandles[var21]); + } + + int var29 = var20 * (4); + if (scissorFlags[var20] && fitsTarget(scissorRects, var29, var5, var6)) { + int var22 = scissorRects[var29 + 0]; + int var23 = scissorRects[var29 + 1]; + int var24 = scissorRects[var29 + 2]; + int var25 = scissorRects[var29 + 3]; + if (var15 == 0 || var22 != var16 || var23 != var17 || var24 != var18 || var25 != var19) { + var10.enableScissor(var22, var23, var24, var25); + var15 = 1; + var16 = var22; + var17 = var23; + var18 = var24; + var19 = var25; + } + } else if (var15 != 0) { + var10.disableScissor(); + var15 = 0; + } + + int var30 = indexCounts[var20]; + int var31 = vertexOffsets[var20]; + int var32 = vertexLengths[var20]; + + int var33; + for (var33 = var20 + 1; + var33 < var4 && canMerge(var20, var33) && vertexOffsets[var33] == var31 + var32; + var33++ + ) { + var30 += indexCounts[var33]; + var32 += vertexLengths[var33]; + } + + var10.setVertexBuffer(0, vertexBuffer.slice(var31, var32)); + var10.drawIndexed( + var30, + 1, + 0, + 0, + (175773062 ^ -175773062) + ((175773062 & -175773062) << 1) + ); + var20 = var33; + } + } catch (Throwable var27) { + if (var10 != null) { + try { + var10.close(); + } catch (Throwable var26) { + var27.addSuppressed(var26); + } + } + + throw var27; + } + + if (var10 != null) { + var10.close(); + } + } + + private static boolean canMerge(int var0, int var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 971898157; + + while (true) { + switch (var6) { + case -2038723335: + var2 = samplerEnds[var0] - samplerStarts[var0]; + if (var2 != samplerEnds[var1] - samplerStarts[var1]) { + var6 = 2078455203; + } else { + var6 = 856764375; + } + break; + case -1539324296: + if (samplerHandles[var4] != samplerHandles[var5]) { + var6 = 1523198909; + } else { + var6 = -373259407; + } + break; + case -1202301463: + return (boolean)(((0)) != 0); + case -1193277496: + if (scissorRects[var2 + var4] != scissorRects[var3 + var4]) { + var6 = -1202301463; + } else { + var6 = 306086186; + } + break; + case -1091119757: + return (boolean)(((1)) != 0); + case -833982218: + if (samplerViews[var4] == samplerViews[var5]) { + var6 = -1539324296; + } else { + var6 = 1523198909; + } + break; + case -737318580: + if (dynamicSlices[var0].equals(dynamicSlices[var1])) { + var6 = 1353093238; + } else { + var6 = 837169370; + } + break; + case -373259407: + var3++; + var6 = 752948248; + break; + case 62070743: + var4 = samplerStarts[var0] + var3; + var5 = samplerStarts[var1] + var3; + if (samplerNames[var4] == samplerNames[var5]) { + var6 = -833982218; + } else { + var6 = 1523198909; + } + break; + case 188713671: + if (uniformOffsets[var0] == uniformOffsets[var1]) { + var6 = -737318580; + } else { + var6 = 837169370; + } + break; + case 206126053: + var2 = var0 * (4); + var3 = var1 * (4); + var4 = 0; + var6 = 1450804605; + break; + case 306086186: + var4++; + var6 = 1450804605; + break; + case 752948248: + if (var3 < var2) { + var6 = 62070743; + } else { + var6 = -1091119757; + } + break; + case 837169370: + return (boolean)(((0)) != 0); + case 856764375: + var3 = 0; + var6 = 752948248; + break; + case 971898157: + default: + if (pipelines[var0] == pipelines[var1]) { + var6 = 1272700248; + } else { + var6 = 837169370; + } + break; + case 1272700248: + if (shapeCommands[var0] == shapeCommands[var1]) { + var6 = 188713671; + } else { + var6 = 837169370; + } + break; + case 1353093238: + if (scissorFlags[var0] != scissorFlags[var1]) { + var6 = 837169370; + } else { + var6 = 1826804619; + } + break; + case 1450804605: + if (var4 < (1148466788 | -1148466784) + (1148466788 & -1148466784)) { + var6 = -1193277496; + } else { + var6 = -2038723335; + } + break; + case 1523198909: + return (boolean)(((0)) != 0); + case 1826804619: + if (scissorFlags[var0]) { + var6 = 206126053; + } else { + var6 = -2038723335; + } + break; + case 2078455203: + return (boolean)(((0)) != 0); + } + } + } + + private static boolean blocksEqual(int var0, int var1) { + int var2 = 0; + int var3 = -792993228; + + while (true) { + switch (var3) { + case -1934820151: + return (boolean)(((1)) != 0); + case -883205489: + var2 += 4; + var3 = 1708944145; + break; + case -792993228: + default: + var2 = 0; + var3 = 1708944145; + break; + case -641668482: + return (boolean)(((0)) != 0); + case 779086681: + if (uniformStaging.getInt(var0 + var2) != uniformStaging.getInt(var1 + var2)) { + var3 = -641668482; + } else { + var3 = -883205489; + } + break; + case 1708944145: + if (var2 < atc.BUFFER_SIZE) { + var3 = 779086681; + } else { + var3 = -1934820151; + } + } + } + } + + private static int shapeChunkStride() { + int var0 = -693591906; + + while (true) { + switch (var0) { + case -1800235822: + return shapeChunkStride; + case -693591906: + default: + if (shapeChunkStride == 0) { + var0 = 1659835547; + } else { + var0 = -1800235822; + } + break; + case 1659835547: + shapeChunkStride = Mth.roundToward( + 15840, RenderSystem.getDevice().getDeviceInfo().limits().minUniformOffsetAlignment() + ); + var0 = -1800235822; + } + } + } + + private static int uniformBlockSize() { + int var0 = -668161300; + + while (true) { + switch (var0) { + case -668161300: + default: + if (uniformBlockSize == 0) { + var0 = 1008028056; + } else { + var0 = 1873174203; + } + break; + case 1008028056: + uniformBlockSize = Mth.roundToward(atc.BUFFER_SIZE, RenderSystem.getDevice().getDeviceInfo().limits().minUniformOffsetAlignment()); + var0 = 1873174203; + break; + case 1873174203: + return uniformBlockSize; + } + } + } + + private static int rollOverVertexBuffer(int var0, int var1) { + int var2 = 0; + String[] var3 = null; + GpuTextureView[] var4 = null; + GpuSampler[] var5 = null; + int var6 = 0; + int var7 = -206126995; + + while (true) { + switch (var7) { + case -1949756644: + if (var6 < var2) { + var7 = -1148045773; + } else { + var7 = -1877893341; + } + break; + case -1877893341: + return 0; + case -1148045773: + recordSampler(var3[var6], var4[var6], var5[var6]); + var6++; + var7 = -1949756644; + break; + case -206126995: + default: + var2 = samplerCount - var0; + var3 = new String[var2]; + var4 = new GpuTextureView[var2]; + var5 = new GpuSampler[var2]; + System.arraycopy(samplerNames, var0, var3, 0, var2); + System.arraycopy(samplerViews, var0, var4, 0, var2); + System.arraycopy(samplerHandles, var0, var5, 0, var2); + samplerCount = var0; + flush(); + retiredBuffers.add(vertexBuffer); + vertexStaging.clear(); + vertexUploadedBytes = 0; + vertexBufferCapacity = Math.max(131072, var1); + vertexBuffer = createBuffer(VERTEX_BUFFER_LABEL, 32, vertexBufferCapacity); + var6 = 0; + var7 = -1949756644; + } + } + } + + private static void rollOverUniformBuffer(int var0) { + flush(); + retiredBuffers.add(uniformBuffer); + uniformStaging.clear(); + uniformUploadedBytes = 0; + lastUniformOffset = -1; + uniformGeneration += 1; + uniformBufferCapacity = Math.max(uniformBlockSize() * (512), var0); + uniformBuffer = createBuffer(UNIFORM_BUFFER_LABEL, 128, uniformBufferCapacity); + } + + private static void closeRetiredBuffers() { + int var0 = 0; + int var1 = 1504348710; + + while (true) { + switch (var1) { + case -1424696653: + retiredBuffers.clear(); + return; + case 319780743: + if (var0 < retiredBuffers.size()) { + var1 = 2135119953; + } else { + var1 = -1424696653; + } + break; + case 1504348710: + default: + var0 = 0; + var1 = 319780743; + break; + case 2135119953: + retiredBuffers.get(var0).close(); + var0++; + var1 = 319780743; + } + } + } + + private static GpuBuffer createBuffer(Supplier var0, int var1, int var2) { + return RenderSystem.getDevice().createBuffer(var0, var1 | 8, var2); + } + + private static int uploadPending(ByteBuffer var0, GpuBuffer var1, int var2) { + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 609200189; + + while (true) { + switch (var6) { + case 100792163: + var4 = var3 - var2; + var5 = var0.limit(); + var0.position(var2); + var0.limit(var3); + RenderSystem.getDevice().createCommandEncoder().writeToBuffer(var1.slice(var2, var4), var0); + var0.limit(var5); + var0.position(var3); + return var3; + case 609200189: + default: + var3 = var0.position(); + if (var3 <= var2) { + var6 = 1586742512; + } else { + var6 = 100792163; + } + break; + case 1586742512: + return var2; + } + } + } + + private static void ensureCommandCapacity() { + int var0 = 0; + int var1 = 774683974; + + while (true) { + switch (var1) { + case -951643454: + var0 = pipelines.length * (2); + pipelines = Arrays.copyOf(pipelines, var0); + uniformOffsets = Arrays.copyOf(uniformOffsets, var0); + dynamicSlices = Arrays.copyOf(dynamicSlices, var0); + colorTargets = Arrays.copyOf(colorTargets, var0); + depthTargets = Arrays.copyOf(depthTargets, var0); + vertexOffsets = Arrays.copyOf(vertexOffsets, var0); + vertexLengths = Arrays.copyOf(vertexLengths, var0); + indexCounts = Arrays.copyOf(indexCounts, var0); + scissorFlags = Arrays.copyOf(scissorFlags, var0); + shapeCommands = Arrays.copyOf(shapeCommands, var0); + scissorRects = Arrays.copyOf(scissorRects, var0 * ((858572483 ^ -858572479) + ((858572483 & -858572479) << 1))); + samplerStarts = Arrays.copyOf(samplerStarts, var0); + samplerEnds = Arrays.copyOf(samplerEnds, var0); + return; + case -345116643: + return; + case 774683974: + } + + if (commandCount < pipelines.length) { + var1 = -345116643; + } else { + var1 = -951643454; + } + } + } + + private static void ensureVertexOrUniformCapacity(boolean var0, int var1) { + ByteBuffer var2 = null; + int var3 = 0; + int var4 = 0; + ByteBuffer var5 = null; + ByteBuffer var7 = null; + int var6 = -40253930; + + while (true) { + switch (var6) { + case -1907616590: + vertexStaging = var5; + var6 = -808897491; + break; + case -1687598876: + var2 = var7; + if (var2.remaining() >= var1) { + var6 = -1536115137; + } else { + var6 = -1127167745; + } + break; + case -1536115137: + return; + case -1127167745: + var3 = var2.position(); + var4 = Math.max(var2.capacity() * (2), var3 + var1); + var5 = allocate(var4); + var2.limit(var3); + var2.position((344244207 ^ -344244207) + ((344244207 & -344244207) << 1)); + var5.put(var2); + var5.position(var3); + if (var0) { + var6 = -1907616590; + } else { + var6 = 1796083869; + } + break; + case -808897491: + return; + case -40253930: + default: + if (var0) { + var6 = 1311851983; + } else { + var6 = 423267060; + } + break; + case 423267060: + var7 = uniformStaging; + var6 = -1687598876; + break; + case 1311851983: + var7 = vertexStaging; + var6 = -1687598876; + break; + case 1796083869: + uniformStaging = var5; + var6 = -808897491; + } + } + } + + private static ByteBuffer allocate(int var0) { + return ByteBuffer.allocateDirect(var0).order(ByteOrder.nativeOrder()); + } +} diff --git a/src/main/java/defpackage/atg.java b/src/main/java/defpackage/atg.java new file mode 100644 index 0000000..459db1b --- /dev/null +++ b/src/main/java/defpackage/atg.java @@ -0,0 +1,647 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.pipeline.TextureTarget; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.textures.GpuTextureView; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import net.minecraft.client.Minecraft; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.HumanoidArm; +import org.joml.Matrix4f; +import org.joml.Vector4f; + +public final class atg { + private static final Vector4f EVO_CLEAR_TRANSPARENT = new Vector4f(0.0F, 0.0F, 0.0F, 0.0F); + private static final atg INSTANCE = new atg(); + private TextureTarget trailA; + private TextureTarget trailB; + private TextureTarget blur1; + private TextureTarget blur2; + private long lastMs = (-6831474564378253612L | 6831474564378253612L) + (-6831474564378253612L & 6831474564378253612L); + private float smoothDt = 0.016666668F; + private float smoothActivity = 0.0F; + private float slash = 0.0F; + private float slashDir = 1.0F; + private boolean wasSwinging = (boolean)(((0)) != 0); + private float prevSwingProgress = 0.0F; + private final long startNanos = System.nanoTime(); + private float prevYaw = 0.0F; + private float prevPitch = 0.0F; + private boolean hasPrevCam = (boolean)(((0)) != 0); + + private atg() { + } + + public static atg getInstance() { + return INSTANCE; + } + + public void render(TextureTarget var1, uf var2) { + Minecraft var3 = Minecraft.getInstance(); + if (var1 != null && var3.player != null) { + if (atb.smokeTrailProgram != null && atb.smokeKawaseDownProgram != null && atb.smokeKawaseUpProgram != null && atb.smokeCompositeProgram != null) { + RenderTarget var4 = var3.gameRenderer.mainRenderTarget(); + int var5 = var4.width; + int var6 = var4.height; + if (var5 > 0 && var6 > 0 && var3.isWindowActive()) { + this.ensureTargets(var5, var6); + long var7 = System.currentTimeMillis(); + float var9 = this.lastMs > (-1500807320365648439L | 1500807320365648439L) + (-1500807320365648439L & 1500807320365648439L) + ? (float)(var7 - this.lastMs) / 1000.0F + : 0.016666668F; + this.lastMs = var7; + if (var9 <= 0.0F || var9 > 0.05F) { + var9 = this.smoothDt; + } + + var9 = Math.max(0.0069444445F, Math.min(0.033333335F, var9)); + this.smoothDt = this.smoothDt + (var9 - this.smoothDt) * 0.1F; + float var10 = this.smoothDt; + float var11 = (float)(System.nanoTime() - this.startNanos) / 1.0E9F; + boolean var12 = var3.player.swinging; + float var13 = var3.player.attackAnim; + int var14 = !var12 || !(var13 + 0.08F < this.prevSwingProgress) && (this.wasSwinging || !(var13 > 0.02F)) + ? 0: 1; + if (var14 != 0) { + this.slash = 1.0F; + this.slashDir = -this.slashDir; + } + + this.wasSwinging = var12; + this.prevSwingProgress = var13; + if (var12) { + this.slash = Math.max(this.slash, 1.0F - Math.min(1.0F, var13) * 0.72F); + } + + this.slash = Math.max(0.0F, this.slash - var10 * 2.2F); + float var15 = (float)Math.min(1.0, var3.player.getDeltaMovement().horizontalDistance() * 2.2); + float var16 = var12 ? 1.0F - Math.min(1.0F, var13) : 0.0F; + float var17 = var3.player.isUsingItem() ? 0.55F + Math.min(0.45F, var3.player.getTicksUsingItem() * 0.06F) : 0.0F; + float var18 = Math.max(Math.max(var16, var17), var15); + this.smoothActivity = this.smoothActivity + (var18 - this.smoothActivity) * (1.0F - (float)Math.exp(-var10 * 6.0)); + float var19 = this.smoothActivity; + float var20 = 0.0F; + InteractionHand var21 = var12 + ? InteractionHand.MAIN_HAND + : (var3.player.isUsingItem() ? var3.player.getUsedItemHand() : InteractionHand.MAIN_HAND); + if (var21 == InteractionHand.MAIN_HAND) { + var20 = var3.player.getMainArm() == HumanoidArm.LEFT ? -1.0F : 1.0F; + } else { + var20 = var3.player.getMainArm() == HumanoidArm.LEFT ? 1.0F : -1.0F; + } + + float var22 = 0.0F; + float var23 = 0.0F; + if (var3.gameRenderer != null && var3.gameRenderer.mainCamera() != null) { + float var24 = var3.gameRenderer.mainCamera().yRot(); + float var25 = var3.gameRenderer.mainCamera().xRot(); + if (this.hasPrevCam) { + float var26 = wrapDegrees(var24 - this.prevYaw); + float var27 = var25 - this.prevPitch; + double var28 = ((Integer)var3.options.fov().get()).intValue(); + float var30 = (float)Math.toRadians(Math.max(1.0, var28)); + float var31 = (float)Math.tan(var30 * 0.5F); + float var32 = var6 > 0 ? (float)var5 / var6 : 1.0F; + var22 = (float)Math.toRadians(var26) / (2.0F * var31 * var32); + var23 = (float)Math.toRadians(var27) / (2.0F * var31); + var22 = Math.max(-0.25F, Math.min(0.25F, var22)); + var23 = Math.max(-0.25F, Math.min(0.25F, var23)); + } + + this.prevYaw = var24; + this.prevPitch = var25; + this.hasPrevCam = (boolean)(((1)) != 0); + } + + float var45 = var20; + float var46 = var22; + float var47 = var23; + asu var48 = var2.handColor(); + float var49 = var48.getRed() / 255.0F; + float var29 = var48.getGreen() / 255.0F; + float var50 = var48.getBlue() / 255.0F; + float var51 = var2.shaderOpacity(); + float var52 = var2.shaderSpeed(); + float var33 = var3.getWindow().getGuiScaledWidth(); + float var34 = var3.getWindow().getGuiScaledHeight(); + if (var2.modeIndex() == (-528487379 ^ 528487392) + ((-528487379 & 528487392) << 1)) { + this.renderFlame(var1, var2, var11, var10, var33, var34, var49, var29, var50, var51, var52, var46, var47); + } else { + atb.beginGui(); + + try { + atd var35 = atb.smokeTrailProgram; + this.pass( + var35, + this.trailB, + var33, + var34, + () -> { + atd.bindTexture(this.trailA.getColorTextureView(), (boolean)((((1525386453 | -1525386452) + (1525386453 & -1525386452))) != 0)); + atd.bindTexture( + "Sampler1", + var1.getColorTextureView(), + (boolean)((((1387225519 | -1387225518) + (1387225519 & -1387225518)) + ) != 0)); + var35.findUniform("Resolution") + .set(var5, var6); + var35.findUniform("Time").set(var11); + var35.findUniform("HandColor") + .set(var49, var29, var50, var51); + var35.findUniform( + "SmokeIntensity" + ) + .set(var2.smokeIntensity.getCurrent()); + var35.findUniform("SmokeSpeed").set(var52); + var35.findUniform("SmokeLength") + .set(var2.smokeLength.getCurrent()); + var35.findUniform( + "SmokeTrailSoftness" + ) + .set(var2.smokeSoftness.getCurrent()); + var35.findUniform( + "SmokeTrailBlur" + ) + .set(var2.smokeBlur.getCurrent()); + var35.findUniform("SmokeAmount") + .set(var2.smokeDensity.getCurrent()); + var35.findUniform("SmokeActivity").set(var19); + var35.findUniform("SmokeTrailFade") + .set(var2.smokeFade.getCurrent()); + var35.findUniform("SmokeSlash").set(this.slash); + var35.findUniform("SmokeSlashDir") + .set(this.slashDir); + var35.findUniform("SmokeSwingHand").set(var45); + var35.findUniform("SmokeCamShift") + .set(var46, var47); + } + ); + GpuTextureView var36 = this.buildBlur(var5, var6, var33, var34, this.trailB.getColorTextureView(), var2.smokeBlur.getCurrent()); + atd var37 = atb.smokeCompositeProgram; + this.passToMain( + var37, + var33, + var34, + () -> { + atd.bindTexture(var36, (boolean)((((108291111 | -108291110) + (108291111 & -108291110))) != 0)); + atd.bindTexture( + "Sampler1", + var1.getColorTextureView(), + (boolean)((((-2139797882 ^ 2139797883) + ((-2139797882 & 2139797883) << 1)) + ) != 0)); + var37.findUniform("Resolution").set(var5, var6); + var37.findUniform("Time").set(var11); + var37.findUniform("HandColor").set(var49, var29, var50, var51); + var37.findUniform("SmokeIntensity") + .set(var2.smokeIntensity.getCurrent()); + var37.findUniform("SmokeHandSoftness") + .set(var2.smokeEdgeSoftness.getCurrent()); + var37.findUniform("SmokeHandBlur") + .set(var2.smokeEdgeBlur.getCurrent()); + var37.findUniform("SmokeAmount") + .set(var2.smokeDensity.getCurrent()); + var37.findUniform("SmokeActivity") + .set(var19); + } + ); + } finally { + atb.endGui(); + } + + TextureTarget var53 = this.trailA; + this.trailA = this.trailB; + this.trailB = var53; + } + } else { + this.clearState(); + } + } + } + } + + private void renderFlame( + TextureTarget var1, + uf var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13 + ) { + Minecraft var14 = Minecraft.getInstance(); + int var15 = var14.gameRenderer.mainRenderTarget().width; + int var16 = var14.gameRenderer.mainRenderTarget().height; + float var17; + float var18; + float var19; + if (var2.flameGrey.isEnabled()) { + float var20 = 0.299F * var7 + 0.587F * var8 + 0.114F * var9; + var17 = var18 = var19 = var20 * 0.55F; + } else { + var17 = Math.min(1.0F, var7 + 0.25F); + var18 = Math.max(0.0F, var8 * 0.55F); + var19 = Math.max(0.0F, var9 * 0.45F); + } + + float var31 = (float)Math.exp(-var4 / 0.5F); + if (var14.player != null && var14.player.swinging) { + var31 = Math.min(var31, 0.35F); + } + + float var21 = var31; + float var22 = 0.14F * var4; + float var23 = var2.flameWind.getCurrent(); + atb.beginGui(); + + try { + atd var24 = atb.smokeResidualProgram; + this.pass( + var24, + this.trailB, + var5, + var6, + () -> { + atd.bindTexture(this.trailA.getColorTextureView(), (boolean)((((-1049007760 ^ 1049007761) + ((-1049007760 & 1049007761) << 1))) != 0)); + atd.bindTexture( + "Sampler1", + var1.getColorTextureView(), + (boolean)((((-271344860 | 271344861) + (-271344860 & 271344861)) + ) != 0)); + var24.findUniform("Resolution").set(var15, var16); + var24.findUniform("Time").set(var3); + var24.findUniform("SmokeSpeed").set(var11); + var24.findUniform("SmokeTrailFade").set(var21); + var24.findUniform("SmokeLength").set(var22); + var24.findUniform("SmokeWind").set(var23); + var24.findUniform("SmokeCamShift") + .set(0.0F, 0.0F); + } + ); + TextureTarget var25 = this.trailA; + this.trailA = this.trailB; + this.trailB = var25; + GpuTextureView var26 = this.buildBlur(var15, var16, var5, var6, this.trailA.getColorTextureView(), var2.flameGlow.getCurrent()); + atd var27 = atb.smokeFlameProgram; + this.passToMain( + var27, + var5, + var6, + () -> { + atd.bindTexture(var26, (boolean)((((1267050206 | -1267050205) + (1267050206 & -1267050205))) != 0)); + atd.bindTexture( + "Sampler1", + var1.getColorTextureView(), + (boolean)((((-1184019438 ^ 1184019439) + ((-1184019438 & 1184019439) << 1)) + ) != 0)); + var27.findUniform("HandColor") + .set(var7, var8, var9, var10); + var27.findUniform("TintColor").set(var17, var18, var19); + var27.findUniform("Time").set(var3); + var27.findUniform("SmokeHeight") + .set(var2.flameHeight.getCurrent()); + var27.findUniform("SmokeSpeed").set(var11); + var27.findUniform("SmokeIntensity") + .set(var2.smokeIntensity.getCurrent()); + var27.findUniform("SmokeWind").set(var2.flameWind.getCurrent()); + var27.findUniform("SmokeWave").set(var2.flameWave.getCurrent()); + var27.findUniform("SmokeCamShift").set(0.0F, 0.0F); + } + ); + } finally { + atb.endGui(); + } + } + + private GpuTextureView buildBlur(int var1, int var2, float var3, float var4, GpuTextureView var5, float var6) { + float var7 = Math.max(1.0F, 1.0F + var6); + this.kawase(atb.smokeKawaseDownProgram, this.blur1, var5, var7, var1, var2, var3, var4, (boolean)((((59848744 ^ -59848744) + ((59848744 & -59848744) << 1))) != 0)); + this.kawase( + atb.smokeKawaseDownProgram, + this.blur2, + this.blur1.getColorTextureView(), + var7 * 2.0F, + var1, + var2, + var3, + var4, + (boolean)((((-320319780 | 320319780) + (-320319780 & 320319780)) + ) != 0)); + this.kawase( + atb.smokeKawaseUpProgram, + this.blur1, + this.blur2.getColorTextureView(), + var7 * 2.0F, + var1, + var2, + var3, + var4, + (boolean)((((-945559996 | 945559997) + (-945559996 & 945559997)) + ) != 0)); + this.kawase( + atb.smokeKawaseUpProgram, + this.blur2, + this.blur1.getColorTextureView(), + var7, + var1, + var2, + var3, + var4, + (boolean)((((558598364 ^ -558598363) + ((558598364 & -558598363) << 1)) + ) != 0)); + return this.blur2.getColorTextureView(); + } + + private void kawase(atd var1, TextureTarget var2, GpuTextureView var3, float var4, int var5, int var6, float var7, float var8, boolean var9) { + this.pass(var1, var2, var7, var8, () -> { + int var6x = -795729490; + + while (true) { + switch (var6x) { + case -795729490: + default: + atd.bindTexture(var3, (boolean)((((-1402458071 | 1402458072) + (-1402458071 & 1402458072))) != 0)); + var1.findUniform("Resolution").set(var5, var6); + var1.findUniform("Offset").set(var4); + if (var9) { + var6x = 488790616; + } else { + var6x = 2007543733; + } + break; + case 488790616: + var1.findUniform("TintColor").set(1.0F, 1.0F, 1.0F); + var6x = 2007543733; + break; + case 2007543733: + return; + } + } + }); + } + + private void pass(atd var1, TextureTarget var2, float var3, float var4, Runnable var5) { + RenderSystem.outputColorTextureOverride = var2.getColorTextureView(); + RenderSystem.outputDepthTextureOverride = null; + + try { + var1.use(); + arj.setCurrentLayer(arj.guiTexturedNoTexture()); + var5.run(); + this.drawFullscreenQuad(var3, var4); + } finally { + RenderSystem.outputColorTextureOverride = null; + RenderSystem.outputDepthTextureOverride = null; + } + } + + private void passToMain(atd var1, float var2, float var3, Runnable var4) { + var1.use(); + arj.setCurrentLayer(arj.guiTexturedNoTexture()); + var4.run(); + this.drawFullscreenQuad(var2, var3); + } + + private void drawFullscreenQuad(float var1, float var2) { + Matrix4f var3 = new Matrix4f(); + BufferBuilder var4 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var4.addVertex(var3, 0.0F, 0.0F, 0.0F).setUv(0.0F, 1.0F).setColor((64670398 | -64670399) + (64670398 & -64670399)); + var4.addVertex(var3, 0.0F, var2, 0.0F).setUv(0.0F, 0.0F).setColor((-259848599 | 259848598) + (-259848599 & 259848598)); + var4.addVertex(var3, var1, var2, 0.0F).setUv(1.0F, 0.0F).setColor((-1383284945 | 1383284944) + (-1383284945 & 1383284944)); + var4.addVertex(var3, var1, 0.0F, 0.0F).setUv(1.0F, 1.0F).setColor((2021137910 ^ -2021137911) + ((2021137910 & -2021137911) << 1)); + arj.drawCurrent(var4); + } + + private void ensureTargets(int var1, int var2) { + int var3 = 0; + CommandEncoder var4 = null; + int var5 = -1992956886; + + while (true) { + switch (var5) { + case -1992956886: + default: + var3 = 0; + if (this.trailA == null) { + var5 = 447100356; + } else { + var5 = 1476755268; + } + break; + case -415599002: + if (var3 != 0) { + var5 = 517667052; + } else { + var5 = 1445917317; + } + break; + case 219521498: + if (this.trailA.height != var2) { + var5 = 1691626969; + } else { + var5 = -415599002; + } + break; + case 447100356: + this.trailA = new TextureTarget( + "evo_hand_smoke_a", + var1, + var2, + (boolean)(((0)) != 0), + GpuFormat.RGBA8_UNORM + ); + this.trailB = new TextureTarget( + "evo_hand_smoke_b", + var1, + var2, + (boolean)(((0)) != 0), + GpuFormat.RGBA8_UNORM + ); + this.blur1 = new TextureTarget( + "evo_hand_smoke_blur1", + var1, + var2, + (boolean)(((0)) != 0), + GpuFormat.RGBA8_UNORM + ); + this.blur2 = new TextureTarget( + "evo_hand_smoke_blur2", + var1, + var2, + (boolean)(((0)) != 0), + GpuFormat.RGBA8_UNORM + ); + var3 = 1; + var5 = -415599002; + break; + case 517667052: + var4 = RenderSystem.getDevice().createCommandEncoder(); + var4.clearColorTexture(this.trailA.getColorTexture(), EVO_CLEAR_TRANSPARENT); + var4.clearColorTexture(this.trailB.getColorTexture(), EVO_CLEAR_TRANSPARENT); + var5 = 1445917317; + break; + case 1445917317: + return; + case 1476755268: + if (this.trailA.width == var1) { + var5 = 219521498; + } else { + var5 = 1691626969; + } + break; + case 1691626969: + this.trailA.resize(var1, var2); + this.trailB.resize(var1, var2); + this.blur1.resize(var1, var2); + this.blur2.resize(var1, var2); + var3 = 1; + var5 = -415599002; + } + } + } + + public void clearState() { + CommandEncoder var1 = null; + int var2 = 1498618487; + + while (true) { + switch (var2) { + case -959637782: + var1 = RenderSystem.getDevice().createCommandEncoder(); + var1.clearColorTexture(this.trailA.getColorTexture(), EVO_CLEAR_TRANSPARENT); + var1.clearColorTexture(this.trailB.getColorTexture(), EVO_CLEAR_TRANSPARENT); + var2 = 408399222; + break; + case -181737463: + if (this.trailB != null) { + var2 = -959637782; + } else { + var2 = 408399222; + } + break; + case 408399222: + return; + case 1498618487: + default: + this.hasPrevCam = (boolean)(((0)) != 0); + this.lastMs = (4027115838325892185L ^ -4027115838325892185L) + ((4027115838325892185L & -4027115838325892185L) << 1); + if (this.trailA != null) { + var2 = -181737463; + } else { + var2 = 408399222; + } + } + } + } + + public void reset() { + int var1 = 1854847562; + + while (true) { + switch (var1) { + case -2099722643: + this.trailB.destroyBuffers(); + this.trailB = null; + var1 = -1514103292; + break; + case -1596815554: + if (this.trailB != null) { + var1 = -2099722643; + } else { + var1 = -1514103292; + } + break; + case -1589547796: + this.lastMs = (-8818061817088625135L | 8818061817088625135L) + (-8818061817088625135L & 8818061817088625135L); + this.smoothDt = 0.016666668F; + this.smoothActivity = 0.0F; + this.slash = 0.0F; + this.slashDir = 1.0F; + this.wasSwinging = (boolean)(((0)) != 0); + this.prevSwingProgress = 0.0F; + this.hasPrevCam = (boolean)(((0)) != 0); + return; + case -1514103292: + if (this.blur1 != null) { + var1 = -19772659; + } else { + var1 = 2085470928; + } + break; + case -19772659: + this.blur1.destroyBuffers(); + this.blur1 = null; + var1 = 2085470928; + break; + case 546013225: + this.trailA.destroyBuffers(); + this.trailA = null; + var1 = -1596815554; + break; + case 1593369100: + this.blur2.destroyBuffers(); + this.blur2 = null; + var1 = -1589547796; + break; + case 1854847562: + default: + if (this.trailA != null) { + var1 = 546013225; + } else { + var1 = -1596815554; + } + break; + case 2085470928: + if (this.blur2 != null) { + var1 = 1593369100; + } else { + var1 = -1589547796; + } + } + } + } + + private static float wrapDegrees(float var0) { + int var1 = 874883809; + + while (true) { + switch (var1) { + case -1230650749: + var0 -= 360.0F; + var1 = 2087179526; + break; + case 159519574: + var0 += 360.0F; + var1 = 378790746; + break; + case 378790746: + return var0; + case 874883809: + default: + var0 %= 360.0F; + if (var0 >= 180.0F) { + var1 = -1230650749; + } else { + var1 = 2087179526; + } + break; + case 2087179526: + if (var0 < -180.0F) { + var1 = 159519574; + } else { + var1 = 378790746; + } + } + } + } +} diff --git a/src/main/java/defpackage/ath.java b/src/main/java/defpackage/ath.java new file mode 100644 index 0000000..c37f66b --- /dev/null +++ b/src/main/java/defpackage/ath.java @@ -0,0 +1,134 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.pipeline.TextureTarget; +import com.mojang.blaze3d.systems.RenderSystem; +import net.minecraft.client.Minecraft; +import org.joml.Vector4f; + +public final class ath { + private static final Vector4f EVO_CLEAR_TRANSPARENT = new Vector4f(0.0F, 0.0F, 0.0F, 0.0F); + private static TextureTarget target; + private static boolean active; + + private ath() { + } + + public static void begin() { + Object var0 = null; + RenderTarget var1 = null; + int var2 = 0; + int var3 = 0; + int var4 = -1055701461; + + while (true) { + switch (var4) { + case -1982984102: + return; + case -1240635228: + return; + case -1055701461: + default: + active = (boolean)(((0)) != 0); + if (!aor.shaderPackInUse()) { + var4 = -1240635228; + } else { + var4 = 908830600; + } + break; + case -706927538: + if (var3 <= 0) { + var4 = -1982984102; + } else { + var4 = 1893473610; + } + break; + case -683852015: + target = new TextureTarget( + "evo_world_shader", + var2, + var3, + (boolean)(((0)) != 0), + GpuFormat.RGBA8_UNORM + ); + var4 = -409518794; + break; + case -409518794: + RenderSystem.getDevice().createCommandEncoder().clearColorTexture(target.getColorTexture(), EVO_CLEAR_TRANSPARENT); + atd.setWorldTarget(target.getColorTextureView(), var1.getDepthTextureView()); + active = (boolean)(((1)) != 0); + return; + case -363487764: + if (target.width == var2) { + var4 = 685579339; + } else { + var4 = 578362820; + } + break; + case 578362820: + target.resize(var2, var3); + var4 = -409518794; + break; + case 685579339: + if (target.height != var3) { + var4 = 578362820; + } else { + var4 = -409518794; + } + break; + case 908830600: + var0 = Minecraft.getInstance(); + var1 = ((Minecraft)var0).gameRenderer.mainRenderTarget(); + var2 = var1.width; + var3 = var1.height; + if (var2 > 0) { + var4 = -706927538; + } else { + var4 = -1982984102; + } + break; + case 1893473610: + if (target == null) { + var4 = -683852015; + } else { + var4 = -363487764; + } + } + } + } + + public static void endWorld() { + atd.clearWorldTarget(); + } + + public static void composite() { + int var0 = 1506861511; + + while (true) { + switch (var0) { + case -361132188: + active = (boolean)(((0)) != 0); + return; + case 688408894: + active = (boolean)(((0)) != 0); + atb.blitFullscreenPremultiplied(target.getColorTextureView()); + return; + case 1506861511: + default: + if (active) { + var0 = 1558227621; + } else { + var0 = -361132188; + } + break; + case 1558227621: + if (target == null) { + var0 = -361132188; + } else { + var0 = 688408894; + } + } + } + } +} diff --git a/src/main/java/defpackage/ati.java b/src/main/java/defpackage/ati.java new file mode 100644 index 0000000..859a4ff --- /dev/null +++ b/src/main/java/defpackage/ati.java @@ -0,0 +1,18 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import net.minecraft.resources.Identifier; + +public class ati extends atd implements aqh { + public ati(Identifier var1) { + super(var1, DefaultVertexFormat.POSITION_TEX_COLOR); + } + + public void updateUniforms(float var1, float var2, float var3) { + this.setOffset(var1); + this.setResolution(var2, var3); + this.setSaturation(1.0F); + this.setTintIntensity(0.0F); + this.setTintColor(1.0F, 1.0F, 1.0F); + } +} diff --git a/src/main/java/defpackage/atj.java b/src/main/java/defpackage/atj.java new file mode 100644 index 0000000..f1cb868 --- /dev/null +++ b/src/main/java/defpackage/atj.java @@ -0,0 +1,257 @@ +package defpackage; + +import net.minecraft.util.Mth; + +public final class atj { + public static final float TAU = (float) (Math.PI * 2); + private static final int HASH_STRIDE_X = 374761393; + private static final int HASH_STRIDE_Y = 668265263; + private static final int HASH_STRIDE_SEED = 1274126177; + private static final int HASH_MIX_A = -2048144789; + private static final int HASH_MIX_B = -1028477387; + private static final int HASH_SHIFT_A = 15; + private static final int HASH_SHIFT_B = 13; + private static final int HASH_SHIFT_C = 16; + private static final int HASH_UNSIGNED_SHIFT = 8; + private static final float HASH_NORMALIZER = 5.9604645E-8F; + private static final float STREAK_PRIMARY_FREQUENCY_U = 1.0F; + private static final float STREAK_PRIMARY_FREQUENCY_V = 4.0F; + private static final float STREAK_SECONDARY_FREQUENCY_U = 4.0F; + private static final float STREAK_SECONDARY_FREQUENCY_V = -1.0F; + private static final float STREAK_DETAIL_FREQUENCY_U = 2.0F; + private static final float STREAK_DETAIL_FREQUENCY_V = 8.0F; + private static final float STREAK_SECONDARY_PHASE = 1.3F; + private static final float STREAK_DETAIL_PHASE = 2.1F; + private static final float STREAK_BAND_SHARPNESS = 3.0F; + private static final float STREAK_DETAIL_SHARPNESS = 6.0F; + private static final float STREAK_PRIMARY_WEIGHT = 0.55F; + private static final float STREAK_SECONDARY_WEIGHT = 0.45F; + private static final float STREAK_DETAIL_WEIGHT = 0.35F; + private static final float CELL_JITTER_RANGE = 0.7F; + private static final float CELL_JITTER_BASE = 0.15F; + private static final int CELL_NEIGHBOURHOOD = 1; + private static final int CELL_SEED_OFFSET_X = 7919; + private static final int CELL_SEED_OFFSET_Y = 104729; + private static final float HUE_SECTORS = 6.0F; + + private atj() { + } + + public static float hash(int var0, int var1, int var2, int var3) { + int var4 = Math.floorMod(var0, var2); + int var5 = Math.floorMod(var1, var2); + int var6 = var4 * ((1136162027 | -761400634) + (1136162027 & -761400634)) + + var5 * ((-2079610368 | -1547091665) + (-2079610368 & -1547091665)) + + var3 * (1274126177); + var6 ^= var6 >>> 15; + var6 *= -2048144789; + var6 ^= var6 >>> 13; + var6 *= -1028477387; + var6 ^= var6 >>> 16; + return (var6 >>> (-1794358818 ^ 1794358826) + ((-1794358818 & 1794358826) << 1)) * 5.9604645E-8F; + } + + public static float wave(float var0) { + return 0.5F + 0.5F * Mth.cos(var0); + } + + public static float band(float var0, float var1, float var2, float var3, float var4, float var5) { + return pow(wave((float) (Math.PI * 2) * (var2 * var0 + var3 * var1) + var4), var5); + } + + public static float pow(float var0, float var1) { + return (float)Math.pow(var0, var1); + } + + public static float streaks(float var0, float var1) { + float var2 = band(var0, var1, 1.0F, 4.0F, 0.0F, 3.0F); + float var3 = band(var0, var1, 4.0F, -1.0F, 1.3F, 3.0F); + float var4 = band(var0, var1, 2.0F, 8.0F, 2.1F, 6.0F); + return Mth.clamp(var2 * 0.55F + var3 * 0.45F + var4 * 0.35F, 0.0F, 1.0F); + } + + public static float valueNoise(float var0, float var1, int var2, int var3) { + float var4 = var0 * var2; + float var5 = var1 * var2; + int var6 = Mth.floor(var4); + int var7 = Mth.floor(var5); + float var8 = smoothstep(var4 - var6); + float var9 = smoothstep(var5 - var7); + float var10 = hash(var6, var7, var2, var3); + float var11 = hash(var6 + 1, var7, var2, var3); + float var12 = hash(var6, var7 + 1, var2, var3); + float var13 = hash( + var6 + 1, + var7 + 1, + var2, + var3 + ); + float var14 = Mth.lerp(var8, var10, var11); + float var15 = Mth.lerp(var8, var12, var13); + return Mth.lerp(var9, var14, var15); + } + + public static float fbm(float var0, float var1, int var2, int var3, int var4) { + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = 0; + int var9 = 0; + int var10 = 86488087; + + while (true) { + switch (var10) { + case 34553934: + if (var9 < var2) { + var10 = 118076926; + } else { + var10 = 1694110226; + } + break; + case 86488087: + default: + var5 = 0.0F; + var6 = 1.0F; + var7 = 0.0F; + var8 = var3; + var9 = 0; + var10 = 34553934; + break; + case 118076926: + var5 += valueNoise(var0, var1, var8, var4 + var9) * var6; + var7 += var6; + var6 *= 0.5F; + var8 <<= 1; + var9++; + var10 = 34553934; + break; + case 1694110226: + return var5 / var7; + } + } + } + + public static float sparkles(float var0, float var1, int var2, float var3, float var4, int var5) { + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = 0; + int var9 = 0; + float var10 = 0.0F; + int var11 = 0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + int var20 = 595929912; + + while (true) { + switch (var20) { + case -1705293299: + var13 = var8 + var12; + var14 = var9 + var11; + if (hash(var13, var14, var2, var5) > var4) { + var20 = 1116005829; + } else { + var20 = 866983340; + } + break; + case -1583553470: + var10 = Math.max(var10, var19 * var19); + var20 = 213996643; + break; + case -1514548105: + var11++; + var20 = -815539734; + break; + case -1272297249: + if (var12 <= (269359550 | -269359549) + (269359550 & -269359549)) { + var20 = -1705293299; + } else { + var20 = -1514548105; + } + break; + case -815539734: + if (var11 <= (592647526 ^ -592647525) + ((592647526 & -592647525) << 1)) { + var20 = 754981997; + } else { + var20 = 683521148; + } + break; + case 213996643: + var12++; + var20 = -1272297249; + break; + case 595929912: + default: + var6 = var0 * var2; + var7 = var1 * var2; + var8 = Mth.floor(var6); + var9 = Mth.floor(var7); + var10 = 0.0F; + var11 = -1; + var20 = -815539734; + break; + case 683521148: + return var10; + case 754981997: + var12 = -1; + var20 = -1272297249; + break; + case 866983340: + var15 = var13 + 0.15F + hash(var13, var14, var2, var5 + (2136120551 | -2136112632) + (2136120551 & -2136112632)) * 0.7F; + var16 = var14 + 0.15F + hash(var13, var14, var2, var5 + (-369145590 ^ 369250319) + ((-369145590 & 369250319) << 1)) * 0.7F; + var17 = (var6 - var15) / var3; + var18 = (var7 - var16) / var3; + var19 = 1.0F - Mth.sqrt(var17 * var17 + var18 * var18); + if (var19 > 0.0F) { + var20 = -1583553470; + } else { + var20 = 213996643; + } + break; + case 1116005829: + var20 = 213996643; + } + } + } + + public static float smoothstep(float var0) { + return var0 * var0 * (3.0F - 2.0F * var0); + } + + public static void hue(float var0, float[] var1) { + float var2 = (var0 - Mth.floor(var0)) * 6.0F; + int var3 = Mth.floor(var2); + float var4 = var2 - var3; + float var5 = 1.0F - var4; + switch (var3) { + case 0: + set(var1, 1.0F, var4, 0.0F); + break; + case 1: + set(var1, var5, 1.0F, 0.0F); + break; + case 2: + set(var1, 0.0F, 1.0F, var4); + break; + case 3: + set(var1, 0.0F, var5, 1.0F); + break; + case 4: + set(var1, var4, 0.0F, 1.0F); + break; + default: + set(var1, 1.0F, 0.0F, var5); + } + } + + private static void set(float[] var0, float var1, float var2, float var3) { + var0[0] = var1; + var0[1] = var2; + var0[2] = var3; + } +} diff --git a/src/main/java/defpackage/atk.java b/src/main/java/defpackage/atk.java new file mode 100644 index 0000000..5665adc --- /dev/null +++ b/src/main/java/defpackage/atk.java @@ -0,0 +1,31 @@ +package defpackage; + +public record atk( + float primaryRed, float primaryGreen, float primaryBlue, float secondaryRed, float secondaryGreen, float secondaryBlue, float coverage, float strength +) { + private static final float CHANNEL_SCALE = 0.003921569F; + + public static atk of(asu var0, asu var1, float var2, float var3) { + return new atk( + var0.getRed() * 0.003921569F, + var0.getGreen() * 0.003921569F, + var0.getBlue() * 0.003921569F, + var1.getRed() * 0.003921569F, + var1.getGreen() * 0.003921569F, + var1.getBlue() * 0.003921569F, + var2, + var3 + ); + } + + public int signature() { + int var1 = Float.floatToIntBits(this.primaryRed); + var1 = var1 * ((253817157 ^ -253817126) + ((253817157 & -253817126) << 1)) + Float.floatToIntBits(this.primaryGreen); + var1 = var1 * ((-437928206 ^ 437928237) + ((-437928206 & 437928237) << 1)) + Float.floatToIntBits(this.primaryBlue); + var1 = var1 * ((-1512805809 ^ 1512805840) + ((-1512805809 & 1512805840) << 1)) + Float.floatToIntBits(this.secondaryRed); + var1 = var1 * ((-188599655 ^ 188599686) + ((-188599655 & 188599686) << 1)) + Float.floatToIntBits(this.secondaryGreen); + var1 = var1 * ((869932858 | -869932827) + (869932858 & -869932827)) + Float.floatToIntBits(this.secondaryBlue); + var1 = var1 * ((-1587053198 ^ 1587053229) + ((-1587053198 & 1587053229) << 1)) + Float.floatToIntBits(this.coverage); + return var1 * ((-1382532601 | 1382532632) + (-1382532601 & 1382532632)) + Float.floatToIntBits(this.strength); + } +} diff --git a/src/main/java/defpackage/atw.java b/src/main/java/defpackage/atw.java new file mode 100644 index 0000000..b2aaee3 --- /dev/null +++ b/src/main/java/defpackage/atw.java @@ -0,0 +1,608 @@ +package defpackage; + +import net.minecraft.util.Mth; +import org.joml.Matrix4f; + +public enum atw { + RAINBOW("Rainbow", 0.22F) { + @Override + void shade(float var1, float var2, atk var3, float[] var4) { + atj.hue(var1 + var2 * 0.25F, var4); + scale(var4, cover(atj.streaks(var1, var2), var3)); + } + + @Override + void animate(Matrix4f var1, float var2, float var3) { + transform(var1, var2 * 0.16F, var2 * 0.05F, (float) (Math.PI / 18), var3); + } + }, + SOLID("Solid", 1.0F) { + @Override + void shade(float var1, float var2, atk var3, float[] var4) { + set(var4, var3.primaryRed(), var3.primaryGreen(), var3.primaryBlue()); + scale(var4, cover(atj.streaks(var1, var2), var3)); + } + + @Override + void animate(Matrix4f var1, float var2, float var3) { + transform(var1, var2 * 0.073F, var2 * 0.267F, (float) (Math.PI / 18), var3); + } + }, + GRADIENT("Gradient", 0.45F) { + @Override + void shade(float var1, float var2, atk var3, float[] var4) { + float var5 = atj.wave((float) (Math.PI * 2) * (var1 + var2 * 0.25F)); + mix(var3, var5, var4); + scale(var4, cover(atj.streaks(var1, var2), var3)); + } + + @Override + void animate(Matrix4f var1, float var2, float var3) { + transform(var1, var2 * 0.073F, var2 * 0.267F, (float) (Math.PI / 18), var3); + } + }, + PULSE("Pulse", 0.7F) { + @Override + void shade(float var1, float var2, atk var3, float[] var4) { + float var5 = 0.15F + 0.85F * atj.pow(atj.wave((float) (Math.PI * 2) * var1), 2.0F); + set(var4, var3.primaryRed(), var3.primaryGreen(), var3.primaryBlue()); + scale(var4, cover(atj.streaks(var1, var2) * var5, var3)); + } + + @Override + void animate(Matrix4f var1, float var2, float var3) { + float var4 = 1.0F + 0.22F * Mth.sin(var2 * 1.6F); + transform(var1, var2 * 0.073F, var2 * 0.267F, (float) (Math.PI / 18), var3 * var4); + } + }, + FIRE("Fire", 0.5F) { + @Override + void shade(float var1, float var2, atk var3, float[] var4) { + float var5 = Mth.clamp( + ( + atj.fbm( + var1, + var2, + 5, + 3, + (585852960 ^ -585852953) + ((585852960 & -585852953) << 1) + ) + - 0.3F + ) + * 2.4F, + 0.0F, + 1.0F + ); + mix(var3, atj.smoothstep(var5), var4); + float var6 = atj.pow(var5, 6.0F) * 0.65F; + float var7 = 0.45F + 0.55F * var5; + var4[0] = Mth.clamp( + var4[0] * var7 + var6, 0.0F, 1.0F + ); + var4[1] = Mth.clamp( + var4[1] * var7 + var6, 0.0F, 1.0F + ); + var4[2] = Mth.clamp( + var4[2] * var7 + var6, 0.0F, 1.0F + ); + scale(var4, cover(0.35F + 0.65F * atj.streaks(var1, var2), var3)); + } + + @Override + void animate(Matrix4f var1, float var2, float var3) { + transform(var1, 0.05F * Mth.sin(var2 * 0.7F), -var2 * 0.45F, 0.0F, var3); + } + }, + GALAXY("Galaxy", 0.45F) { + @Override + void shade(float var1, float var2, atk var3, float[] var4) { + float var5 = Mth.clamp( + ( + atj.fbm( + var1, + var2, + 5, + 3, + (-1646732596 | 1646732617) + (-1646732596 & 1646732617) + ) + - 0.28F + ) + * 2.4F, + 0.0F, + 1.0F + ); + mix(var3, atj.pow(var5, 3.0F), var4); + float var6 = atj.sparkles( + var1, var2, 12, 0.22F, 0.35F, (1442745248 ^ -1442745227) + ((1442745248 & -1442745227) << 1) + ); + float var7 = 0.3F + 0.7F * var5; + var4[0] = Mth.clamp( + var4[0] * var7 + var6, 0.0F, 1.0F + ); + var4[1] = Mth.clamp( + var4[1] * var7 + var6, 0.0F, 1.0F + ); + var4[2] = Mth.clamp( + var4[2] * var7 + var6, 0.0F, 1.0F + ); + scale(var4, cover(0.4F + 0.6F * atj.streaks(var1, var2), var3)); + } + + @Override + void animate(Matrix4f var1, float var2, float var3) { + transform(var1, var2 * 0.02F, var2 * 0.015F, (float) (Math.PI / 18) + var2 * 0.035F, var3); + } + }, + HOLOGRAM("Hologram", 0.5F) { + @Override + void shade(float var1, float var2, atk var3, float[] var4) { + float var5 = atj.pow(atj.wave(100.53097F * var2), 2.0F); + mix(var3, atj.wave((float) (Math.PI * 2) * (var2 * 0.6F + var1 * 0.15F)), var4); + float var6 = 0.35F + 0.8F * var5; + scale(var4, cover(Mth.clamp(atj.streaks(var1, var2) * var6, 0.0F, 1.0F), var3)); + } + + @Override + void animate(Matrix4f var1, float var2, float var3) { + transform(var1, var2 * 0.04F, var2 * 0.7F, 0.0F, var3); + } + }, + GLITCH("Glitch", 0.35F) { + @Override + void shade(float var1, float var2, atk var3, float[] var4) { + int var5 = 0; + int var6 = 0; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = -755627698; + + while (true) { + switch (var10) { + case -1698313067: + set(var4, 0.0F, 0.0F, 0.0F); + return; + case -1577293051: + var9 = atj.hash( + 0, + var6, + 16, + (1724754309 ^ -1724753685) + ((1724754309 & -1724753685) << 1) + ); + scale(var4, cover(0.4F + 0.6F * var9, var3)); + return; + case -755627698: + default: + var5 = Mth.floor(var1 * 16.0F); + var6 = Mth.floor(var2 * 16.0F); + var7 = atj.hash(var5, var6, 16, (-206928965 | 206928976) + (-206928965 & 206928976)); + if (var7 > 0.45F) { + var10 = -1698313067; + } else { + var10 = -508080011; + } + break; + case -508080011: + var8 = atj.hash( + var5, var6, 16, (-840318044 | 840319032) + (-840318044 & 840319032) + ); + if (var8 > 0.25F) { + var10 = 2087911196; + } else { + var10 = 244870836; + } + break; + case 244870836: + set(var4, 1.0F, 1.0F, 1.0F); + var10 = -1577293051; + break; + case 2087911196: + mix(var3, var8, var4); + var10 = -1577293051; + } + } + } + + @Override + void animate(Matrix4f var1, float var2, float var3) { + int var4 = Mth.floor(var2 * 7.0F); + float var5 = atj.hash( + var4, + 0, + 64, + (1574232372 | -1574232361) + (1574232372 & -1574232361) + ); + float var6 = atj.hash( + 0, + var4, + 64, + (-1434253756 ^ 1434254380) + ((-1434253756 & 1434254380) << 1) + ); + transform(var1, var5, var6, 0.0F, var3); + } + }, + SPARKLE("Sparkle", 0.6F) { + @Override + void shade(float var1, float var2, atk var3, float[] var4) { + float var5 = atj.sparkles( + var1, var2, 14, 0.3F, 0.55F, (2002451325 | -2002451320) + (2002451325 & -2002451320) + ); + set(var4, Mth.lerp(0.55F, 1.0F, var3.primaryRed()), Mth.lerp(0.55F, 1.0F, var3.primaryGreen()), Mth.lerp(0.55F, 1.0F, var3.primaryBlue())); + scale(var4, cover(Mth.clamp(var5 + atj.streaks(var1, var2) * 0.25F, 0.0F, 1.0F), var3)); + } + + @Override + void animate(Matrix4f var1, float var2, float var3) { + transform(var1, var2 * 0.11F, var2 * 0.07F, (float) (Math.PI / 18) + var2 * 0.14F, var3); + } + }, + AURORA("Aurora", 0.3F) { + @Override + void shade(float var1, float var2, atk var3, float[] var4) { + float var5 = atj.wave((float) (Math.PI * 2) * (var1 * 2.0F + 0.22F * Mth.cos((float) (Math.PI * 2) * var2))); + float var6 = atj.pow(var5, 4.0F); + mix(var3, var5, var4); + scale(var4, cover(Mth.clamp(var6 * (0.5F + 0.7F * atj.streaks(var1, var2)), 0.0F, 1.0F), var3)); + } + + @Override + void animate(Matrix4f var1, float var2, float var3) { + transform(var1, var2 * 0.05F, var2 * 0.12F, 0.08726646F, var3); + } + }, + HIDDEN("Hidden", 1.0F) { + @Override + void shade(float var1, float var2, atk var3, float[] var4) { + set(var4, 0.0F, 0.0F, 0.0F); + } + + @Override + void animate(Matrix4f var1, float var2, float var3) { + transform(var1, 0.0F, 0.0F, 0.0F, var3); + } + }; + + private static final float DEFAULT_ROTATION = (float) (Math.PI / 18); + private static final float VANILLA_DRIFT_U = 0.073F; + private static final float VANILLA_DRIFT_V = 0.267F; + private static final float RAINBOW_SKEW = 0.25F; + private static final float RAINBOW_DRIFT_U = 0.16F; + private static final float RAINBOW_DRIFT_V = 0.05F; + private static final float GRADIENT_SKEW = 0.25F; + private static final float PULSE_FLOOR = 0.15F; + private static final float PULSE_SHARPNESS = 2.0F; + private static final float PULSE_ZOOM = 0.22F; + private static final float PULSE_RATE = 1.6F; + private static final int FIRE_OCTAVES = 5; + private static final int FIRE_BASE_FREQUENCY = 3; + private static final int FIRE_SEED = 7; + private static final float FIRE_THRESHOLD = 0.3F; + private static final float FIRE_CONTRAST = 2.4F; + private static final float FIRE_BODY_FLOOR = 0.45F; + private static final float FIRE_EMBER_GAIN = 0.65F; + private static final float FIRE_EMBER_SHARPNESS = 6.0F; + private static final float FIRE_STREAK_FLOOR = 0.35F; + private static final float FIRE_RISE = 0.45F; + private static final float FIRE_SWAY = 0.05F; + private static final float FIRE_SWAY_RATE = 0.7F; + private static final int GALAXY_OCTAVES = 5; + private static final int GALAXY_BASE_FREQUENCY = 3; + private static final int GALAXY_SEED = 21; + private static final float GALAXY_THRESHOLD = 0.28F; + private static final float GALAXY_CONTRAST = 2.4F; + private static final float GALAXY_BODY_FLOOR = 0.3F; + private static final float GALAXY_CORE_SHARPNESS = 3.0F; + private static final int GALAXY_STAR_CELLS = 12; + private static final float GALAXY_STAR_RADIUS = 0.22F; + private static final float GALAXY_STAR_DENSITY = 0.35F; + private static final float GALAXY_STREAK_FLOOR = 0.4F; + private static final float GALAXY_DRIFT_U = 0.02F; + private static final float GALAXY_DRIFT_V = 0.015F; + private static final float GALAXY_SPIN = 0.035F; + private static final float HOLOGRAM_SCAN_FREQUENCY = 16.0F; + private static final float HOLOGRAM_SCAN_SHARPNESS = 2.0F; + private static final float HOLOGRAM_SHIFT_V = 0.6F; + private static final float HOLOGRAM_SHIFT_U = 0.15F; + private static final float HOLOGRAM_SHEEN_FLOOR = 0.35F; + private static final float HOLOGRAM_SHEEN_GAIN = 0.8F; + private static final float HOLOGRAM_DRIFT_U = 0.04F; + private static final float HOLOGRAM_DRIFT_V = 0.7F; + private static final int GLITCH_CELLS = 16; + private static final int GLITCH_SEED = 11; + private static final int GLITCH_COLOR_SALT = 977; + private static final int GLITCH_ROW_SALT = 613; + private static final float GLITCH_DENSITY = 0.45F; + private static final float GLITCH_HIGHLIGHT_CHANCE = 0.25F; + private static final float GLITCH_BLOCK_FLOOR = 0.4F; + private static final float GLITCH_STEPS_PER_SECOND = 7.0F; + private static final int GLITCH_STEP_PERIOD = 64; + private static final int SPARKLE_CELLS = 14; + private static final int SPARKLE_SEED = 5; + private static final float SPARKLE_RADIUS = 0.3F; + private static final float SPARKLE_DENSITY = 0.55F; + private static final float SPARKLE_TINT_MIX = 0.55F; + private static final float SPARKLE_STREAK_MIX = 0.25F; + private static final float SPARKLE_DRIFT_U = 0.11F; + private static final float SPARKLE_DRIFT_V = 0.07F; + private static final float SPARKLE_SPIN = 0.14F; + private static final float AURORA_RIBBONS = 2.0F; + private static final float AURORA_WAVE_DEPTH = 0.22F; + private static final float AURORA_RIBBON_SHARPNESS = 4.0F; + private static final float AURORA_STREAK_FLOOR = 0.5F; + private static final float AURORA_STREAK_GAIN = 0.7F; + private static final float AURORA_DRIFT_U = 0.05F; + private static final float AURORA_DRIFT_V = 0.12F; + private static final float AURORA_ROTATION = 0.08726646F; + private final String displayName; + private final float itemScale; + private static final atw[] VALUES = values(); + private static final int COLOR_COMPONENTS = 3; + private static final int OPAQUE_ALPHA = -16777216; + private static final int CHANNEL_MAX = 255; + private static final int GREEN_SHIFT = 8; + private static final int BLUE_SHIFT = 16; + + atw(String var3, float var4) { + this.displayName = var3; + this.itemScale = var4; + } + + public String displayName() { + return this.displayName; + } + + public float itemScale() { + return this.itemScale; + } + + public boolean isHidden() { + int var2 = 0; + int var1 = 1265757699; + + while (true) { + switch (var1) { + case 82540741: + return (boolean)((var2) != 0); + case 1265757699: + default: + if (this == HIDDEN) { + var1 = 1840402551; + } else { + var1 = 1627666420; + } + break; + case 1627666420: + var2 = 0; + var1 = 82540741; + break; + case 1840402551: + var2 = 1; + var1 = 82540741; + } + } + } + + public boolean usesPrimary() { + int var2 = 0; + int var1 = -688146412; + + while (true) { + switch (var1) { + case -1856022046: + var2 = 0; + var1 = 385610362; + break; + case -688146412: + default: + if (this != RAINBOW) { + var1 = 183487264; + } else { + var1 = -1856022046; + } + break; + case 183487264: + if (this != HIDDEN) { + var1 = 956745645; + } else { + var1 = -1856022046; + } + break; + case 385610362: + return (boolean)((var2) != 0); + case 956745645: + var2 = 1; + var1 = 385610362; + } + } + } + + public boolean usesSecondary() { + return (boolean)(((switch (this) { + case GRADIENT, FIRE, GALAXY, HOLOGRAM, GLITCH, AURORA -> 1; + default -> 0; + })) != 0); + } + + abstract void shade(float var1, float var2, atk var3, float[] var4); + + abstract void animate(Matrix4f var1, float var2, float var3); + + public void paint(int[] var1, int var2, atk var3) { + float[] var4 = null; + float var5 = 0.0F; + int var6 = 0; + float var7 = 0.0F; + int var8 = 0; + int var9 = 0; + int var10 = -997223044; + + while (true) { + switch (var10) { + case -2075719762: + this.shade(var9 * var5, var7, var3, var4); + var1[var8 + var9] = pack(var4, var3.strength()); + var9++; + var10 = 667219733; + break; + case -997223044: + default: + var4 = new float[3]; + var5 = 1.0F / var2; + var6 = 0; + var10 = 14941062; + break; + case -229395861: + return; + case 14941062: + if (var6 < var2) { + var10 = 1268062095; + } else { + var10 = -229395861; + } + break; + case 667219733: + if (var9 < var2) { + var10 = -2075719762; + } else { + var10 = 761533706; + } + break; + case 761533706: + var6++; + var10 = 14941062; + break; + case 1268062095: + var7 = var6 * var5; + var8 = var6 * var2; + var9 = 0; + var10 = 667219733; + } + } + } + + public Matrix4f matrix(float var1, float var2) { + Matrix4f var3 = new Matrix4f(); + this.animate(var3, var1, var2); + return var3; + } + + public static atw byName(String var0) { + atw[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = 1745741741; + + while (true) { + switch (var5) { + case 166938216: + return (atw)var4; + case 716817267: + if (var3 < var2) { + var5 = 813571468; + } else { + var5 = 1493970951; + } + break; + case 813571468: + var4 = var1[var3]; + if (((atw)var4).displayName.equalsIgnoreCase(var0)) { + var5 = 166938216; + } else { + var5 = 1868156205; + } + break; + case 1493970951: + return RAINBOW; + case 1745741741: + default: + var1 = VALUES; + var2 = var1.length; + var3 = 0; + var5 = 716817267; + break; + case 1868156205: + var3++; + var5 = 716817267; + } + } + } + + public static String[] names() { + String[] var0 = null; + int var1 = 0; + int var2 = -485468032; + + while (true) { + switch (var2) { + case -485468032: + default: + var0 = new String[VALUES.length]; + var1 = 0; + var2 = 1248311643; + break; + case 104313445: + var0[var1] = VALUES[var1].displayName; + var1++; + var2 = 1248311643; + break; + case 821604370: + return var0; + case 1248311643: + if (var1 < VALUES.length) { + var2 = 104313445; + } else { + var2 = 821604370; + } + } + } + } + + static void transform(Matrix4f var0, float var1, float var2, float var3, float var4) { + var0.translation(-wrap(var1), wrap(var2), 0.0F); + var0.rotateZ(var3).scale(var4); + } + + private static float wrap(float var0) { + return var0 - Mth.floor(var0); + } + + static void set(float[] var0, float var1, float var2, float var3) { + var0[0] = var1; + var0[1] = var2; + var0[2] = var3; + } + + static void scale(float[] var0, float var1) { + var0[0] = var0[0] * var1; + var0[1] = var0[1] * var1; + var0[2] = var0[2] * var1; + } + + static void mix(atk var0, float var1, float[] var2) { + set( + var2, + Mth.lerp(var1, var0.secondaryRed(), var0.primaryRed()), + Mth.lerp(var1, var0.secondaryGreen(), var0.primaryGreen()), + Mth.lerp(var1, var0.secondaryBlue(), var0.primaryBlue()) + ); + } + + static float cover(float var0, atk var1) { + return var1.coverage() + (1.0F - var1.coverage()) * var0; + } + + private static int pack(float[] var0, float var1) { + int var2 = channel(var0[0] * var1); + int var3 = channel(var0[1] * var1); + int var4 = channel(var0[2] * var1); + return (753303016 ^ -770080232) + ((753303016 & -770080232) << 1) + | var4 << (382236555 | -382236539) + (382236555 & -382236539) + | var3 << (1950126083 | -1950126075) + (1950126083 & -1950126075) + | var2; + } + + private static int channel(float var0) { + return Math.round(Mth.clamp(var0, 0.0F, 1.0F) * 255.0F); + } +} diff --git a/src/main/java/defpackage/atx.java b/src/main/java/defpackage/atx.java new file mode 100644 index 0000000..0e76b88 --- /dev/null +++ b/src/main/java/defpackage/atx.java @@ -0,0 +1,134 @@ +package defpackage; + +import com.mojang.blaze3d.platform.NativeImage; +import com.mojang.blaze3d.platform.NativeImage.Format; +import com.mojang.blaze3d.systems.RenderSystem; +import java.nio.IntBuffer; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.resources.Identifier; +import org.lwjgl.system.MemoryUtil; + +public final class atx { + public static final int SIZE = 128; + private static final String NAMESPACE = "evolution"; + private static final String TEXTURE_PATH = "glint/custom"; + private static final String TEXTURE_LABEL = "evolution_glint_custom"; + private static final String TEXTURE_FAILURE = "glint texture upload failed"; + private static final int NO_SIGNATURE = 0; + private static final Identifier TEXTURE_ID = Identifier.fromNamespaceAndPath( + "evolution", + "glint/custom" + ); + private static final int[] PIXELS = new int[16384]; + private static DynamicTexture texture; + private static NativeImage image; + private static IntBuffer buffer; + private static int signature = 0; + private static boolean failed; + + private atx() { + } + + public static Identifier textureId() { + return TEXTURE_ID; + } + + public static boolean ensure(atw var0, atk var1) { + if (!failed && RenderSystem.isOnRenderThread()) { + int var2 = signatureOf(var0, var1); + if (signature == var2) { + return (boolean)(((1)) != 0); + } + + if (!allocate()) { + return (boolean)(((0)) != 0); + } + + var0.paint(PIXELS, 128, var1); + buffer.put(0, PIXELS, 0, PIXELS.length); + + try { + texture.upload(); + } catch (Throwable var4) { + id.warn( + Cif.RENDER, + "glint texture upload failed", + var4 + ); + failed = (boolean)(((1)) != 0); + return (boolean)(((0)) != 0); + } + + signature = var2; + return (boolean)(((1)) != 0); + } else { + return (boolean)(((!failed && signature != 0 + ? 1: (-497132782 | 497132782) + (-497132782 & 497132782))) != 0); + } + } + + private static int signatureOf(atw var0, atk var1) { + int var2 = 0; + int var4 = 0; + int var3 = 1764152003; + + while (true) { + switch (var3) { + case -620106652: + var4 = var2; + var3 = 283559412; + break; + case 283559412: + return var4; + case 1631974876: + var4 = 1; + var3 = 283559412; + break; + case 1764152003: + default: + var2 = var0.ordinal() + 1; + var2 = var2 * ((-25905523 ^ 25905554) + ((-25905523 & 25905554) << 1)) + var1.signature(); + if (var2 == 0) { + var3 = 1631974876; + } else { + var3 = -620106652; + } + } + } + } + + private static boolean allocate() { + if (texture != null && buffer != null) { + return (boolean)(((1)) != 0); + } + + try { + image = new NativeImage( + Format.RGBA, + 128, + 128, + (boolean)((((-1569381102 ^ 1569381102) + ((-1569381102 & 1569381102) << 1)) + ) != 0)); + buffer = MemoryUtil.memIntBuffer(image.getPointer(), (1969544686 ^ -1969528302) + ((1969544686 & -1969528302) << 1)); + texture = new DynamicTexture( + () -> "evolution_glint_custom", image + ); + Minecraft.getInstance().getTextureManager().register(TEXTURE_ID, texture); + return (boolean)(((1)) != 0); + } catch (Throwable var1) { + id.warn( + Cif.RENDER, "glint texture upload failed", var1 + ); + if (image != null) { + image.close(); + image = null; + } + + buffer = null; + texture = null; + failed = (boolean)(((1)) != 0); + return (boolean)(((0)) != 0); + } + } +} diff --git a/src/main/java/defpackage/aty.java b/src/main/java/defpackage/aty.java new file mode 100644 index 0000000..87ee0f1 --- /dev/null +++ b/src/main/java/defpackage/aty.java @@ -0,0 +1,156 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.List; +import net.minecraft.client.gui.Font.DisplayMode; +import net.minecraft.client.model.Model; +import net.minecraft.client.renderer.OrderedSubmitNodeCollector; +import net.minecraft.client.renderer.SubmitNodeCollector.CustomGeometryRenderer; +import net.minecraft.client.renderer.block.MovingBlockRenderState; +import net.minecraft.client.renderer.block.dispatch.BlockStateModelPart; +import net.minecraft.client.renderer.entity.state.EntityRenderState; +import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; +import net.minecraft.client.renderer.entity.state.EntityRenderState.LeashState; +import net.minecraft.client.renderer.entity.state.EntityRenderState.ShadowPiece; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer.CrumblingOverlay; +import net.minecraft.client.renderer.gizmos.DrawableGizmoPrimitives.Group; +import net.minecraft.client.renderer.item.ItemStackRenderState.FoilType; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import net.minecraft.client.renderer.state.level.QuadParticleRenderState; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.geometry.BakedQuad; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; +import net.minecraft.util.FormattedCharSequence; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.VoxelShape; +import org.joml.Quaternionf; + +public class aty implements OrderedSubmitNodeCollector { + private OrderedSubmitNodeCollector delegate; + private LivingEntityRenderState state; + private RenderType cachedLayer; + private Identifier cachedTexture; + + aty() { + } + + void bind(OrderedSubmitNodeCollector var1, LivingEntityRenderState var2) { + this.delegate = var1; + this.state = var2; + this.cachedLayer = null; + this.cachedTexture = null; + } + + protected final LivingEntityRenderState state() { + return this.state; + } + + public void submitQuadParticleGroup(QuadParticleRenderState var1) { + this.delegate.submitQuadParticleGroup(var1); + } + + public void submitCustomGeometry(PoseStack var1, RenderType var2, CustomGeometryRenderer var3) { + this.delegate.submitCustomGeometry(var1, var2, var3); + } + + public void submitItem(PoseStack var1, ItemDisplayContext var2, int var3, int var4, int var5, int[] var6, List var7, FoilType var8) { + this.delegate.submitItem(var1, var2, var3, var4, var5, var6, var7, var8); + } + + public void submitFlame(PoseStack var1, EntityRenderState var2, Quaternionf var3) { + this.delegate.submitFlame(var1, var2, var3); + } + + public void submitText( + PoseStack var1, float var2, float var3, FormattedCharSequence var4, boolean var5, DisplayMode var6, int var7, int var8, int var9, int var10 + ) { + this.delegate.submitText(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10); + } + + public void submitLeash(PoseStack var1, LeashState var2) { + this.delegate.submitLeash(var1, var2); + } + + public void submitMovingBlock(PoseStack var1, MovingBlockRenderState var2, int var3) { + this.delegate.submitMovingBlock(var1, var2, var3); + } + + public void submitShadow(PoseStack var1, float var2, List var3) { + this.delegate.submitShadow(var1, var2, var3); + } + + public void submitNameTag(PoseStack var1, Vec3 var2, int var3, Component var4, boolean var5, int var6, CameraRenderState var7) { + this.delegate.submitNameTag(var1, var2, var3, var4, var5, var6, var7); + } + + public void submitBlockModel(PoseStack var1, RenderType var2, List var3, int[] var4, int var5, int var6, int var7) { + this.delegate.submitBlockModel(var1, var2, var3, var4, var5, var6, var7); + } + + public void submitBreakingBlockModel(PoseStack var1, List var2, int var3) { + this.delegate.submitBreakingBlockModel(var1, var2, var3); + } + + public void submitShapeOutline(PoseStack var1, VoxelShape var2, RenderType var3, int var4, float var5, boolean var6) { + this.delegate.submitShapeOutline(var1, var2, var3, var4, var5, var6); + } + + public void submitGizmoPrimitives(Group var1, CameraRenderState var2, boolean var3) { + this.delegate.submitGizmoPrimitives(var1, var2, var3); + } + + public void submitModel( + Model var1, S var2, PoseStack var3, RenderType var4, int var5, int var6, int var7, TextureAtlasSprite var8, int var9, CrumblingOverlay var10 + ) { + tw.INSTANCE.submitModel(this.delegate, var1, var2, var3, var4, this.resolveTexture(var4), var5, var6, var7, var8, var9, var10); + } + + private Identifier resolveTexture(RenderType var1) { + Identifier var2 = null; + aud var3 = null; + LivingEntityRenderState var4 = null; + int var5 = 2025942813; + + while (true) { + switch (var5) { + case -1736457969: + var3 = (aud)var4; + var2 = var3.evo$getTexture(); + var5 = 1684603469; + break; + case 322517282: + var2 = arj.extractTexture(var1); + if (var2 == null) { + var5 = 611259273; + } else { + var5 = 1684603469; + } + break; + case 611259273: + var4 = this.state; + if (var4 instanceof aud) { + var5 = -1736457969; + } else { + var5 = 1684603469; + } + break; + case 1684603469: + this.cachedLayer = var1; + this.cachedTexture = var2; + return var2; + case 1783783083: + return this.cachedTexture; + case 2025942813: + default: + if (var1 == this.cachedLayer) { + var5 = 1783783083; + } else { + var5 = 322517282; + } + } + } + } +} diff --git a/src/main/java/defpackage/atz.java b/src/main/java/defpackage/atz.java new file mode 100644 index 0000000..f4eda8a --- /dev/null +++ b/src/main/java/defpackage/atz.java @@ -0,0 +1,662 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.buffers.GpuBuffer; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.RenderPass; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.systems.RenderSystem.AutoStorageIndexBuffer; +import com.mojang.blaze3d.textures.FilterMode; +import com.mojang.blaze3d.textures.GpuSampler; +import com.mojang.blaze3d.textures.GpuTextureView; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import it.unimi.dsi.fastutil.ints.IntArrays; +import it.unimi.dsi.fastutil.ints.IntComparator; +import java.util.Optional; +import java.util.OptionalDouble; +import java.util.function.Supplier; +import net.minecraft.client.model.Model; +import net.minecraft.client.renderer.DynamicUniforms; +import net.minecraft.client.renderer.StagedVertexBuffer; +import net.minecraft.client.renderer.StagedVertexBuffer.Draw; +import net.minecraft.client.renderer.StagedVertexBuffer.ExecuteInfo; +import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer.Submit; +import net.minecraft.client.renderer.feature.submit.TranslucentSubmit; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.texture.AbstractTexture; +import net.minecraft.resources.Identifier; +import org.joml.Matrix4f; +import org.joml.Matrix4fc; +import org.joml.Vector3f; +import org.joml.Vector4f; + +public final class atz implements aqg { + private static final int MAX_ENTRIES = 2048; + private static final int NO_ENTRY = -1; + private static final long FALLBACK_LATCH_FRAMES = 600L; + private static final int QUAD_VERTICES = 4; + private static final int QUAD_INDICES = 6; + private static final int SHORT_SHIFT = 16; + private static final int SHORT_MASK = 65535; + private static final int BYTE_MASK = 255; + private static final float COLOR_COMPONENT_SCALE = 255.0F; + private static final float ANCHOR_UNPACK_SCALE = 64.0F; + private static final float MIN_GRADIENT_SPAN = 0.05F; + private static final float FULL_BRIGHT_FLAG = 1.0F; + private static final float NORMAL_LIGHT_FLAG = 0.0F; + private static final String DYNAMIC_TRANSFORMS_NAME = "DynamicTransforms"; + private static final String SAMPLER_TEXTURE = "Sampler0"; + private static final String SAMPLER_LIGHTMAP = "Sampler2"; + private static final Supplier PASS_LABEL = () -> "evolution_chams_mask_reuse"; + private static final Matrix4f IDENTITY_TEXTURE_MATRIX = new Matrix4f(); + private static final Model[] entryModels = new Model[2048]; + private static final Identifier[] entryTextures = new Identifier[2048]; + private static final int[] entryColors = new int[2048]; + private static final int[] entryAnchors = new int[2048]; + private static final boolean[] entryFullBright = new boolean[2048]; + private static final int[] entryNext = new int[2048]; + private static final Draw[] entryDraws = new Draw[2048]; + private static final int[] entryFirstVertex = new int[2048]; + private static final int[] entryVertexCount = new int[2048]; + private static final Vector4f[] entryColorModulators = new Vector4f[2048]; + private static final Vector3f[] entryModelOffsets = new Vector3f[2048]; + private static final float[] entryDistances = new float[2048]; + private static final int[] drawOrder = new int[2048]; + private static final IntComparator BACK_TO_FRONT = (var0, var1) -> Float.compare(entryDistances[var1], entryDistances[var0]); + private static final Matrix4f frameModelView = new Matrix4f(); + private static int entryCount; + private static int preparedCount; + private static boolean reuseFrame; + private static boolean frameGradient; + private static boolean frameModelViewCaptured; + private static long frameId; + private static long fallbackUntilFrame; + private static StagedVertexBuffer frameStagedBuffer; + private static GpuTextureView frameLightmap; + private static int pendingEntry = -1; + private static Draw pendingDraw; + private static BufferBuilder pendingBuilder; + private static int pendingVerticesBefore; + private static int pendingDrawBase; + private static RenderType lastEligibilityLayer; + private static boolean lastEligibilityResult; + + private atz() { + } + + public static void beginFrame(long var0, boolean var2, boolean var3) { + int var5 = 0; + int var4 = -737931812; + + while (true) { + switch (var4) { + case -1406517388: + reuseFrame = (boolean)((var5) != 0); + return; + case -934116880: + var5 = 1; + var4 = -1406517388; + break; + case -737931812: + default: + clearEntries(); + frameId = var0; + frameGradient = var3; + frameModelViewCaptured = (boolean)(((0)) != 0); + if (var2) { + var4 = 166128731; + } else { + var4 = 152572471; + } + break; + case 152572471: + var5 = 0; + var4 = -1406517388; + break; + case 166128731: + if (var0 >= fallbackUntilFrame) { + var4 = -934116880; + } else { + var4 = 152572471; + } + } + } + } + + public static void endFrame() { + clearEntries(); + reuseFrame = (boolean)(((0)) != 0); + } + + private static void clearEntries() { + int var0 = 0; + int var1 = 1590485454; + + while (true) { + switch (var1) { + case -963389078: + if (var0 < entryCount) { + var1 = 1377768382; + } else { + var1 = 862397554; + } + break; + case 862397554: + entryCount = 0; + preparedCount = 0; + pendingEntry = -1; + pendingDraw = null; + pendingBuilder = null; + frameStagedBuffer = null; + frameLightmap = null; + lastEligibilityLayer = null; + lastEligibilityResult = (boolean)(((0)) != 0); + return; + case 1377768382: + entryModels[var0] = null; + entryTextures[var0] = null; + entryDraws[var0] = null; + var0++; + var1 = -963389078; + break; + case 1590485454: + default: + var0 = 0; + var1 = -963389078; + } + } + } + + public static boolean tryExpect( + LivingEntityRenderState var0, Model var1, Matrix4fc var2, RenderType var3, Identifier var4, int var5, int var6, boolean var7 + ) { + int var8 = 0; + aud var9 = null; + int var10 = -1067349895; + + while (true) { + switch (var10) { + case -1926852932: + int var10000 = entryCount; + entryCount += 1; + var8 = var10000; + entryModels[var8] = var1; + entryTextures[var8] = var4; + entryColors[var8] = var5; + entryAnchors[var8] = var6; + entryFullBright[var8] = var7; + entryDistances[var8] = TranslucentSubmit.computeDistanceToCameraSq(var2); + entryNext[var8] = -1; + entryDraws[var8] = null; + var9 = (aud)var0; + if (var9.evo$getReuseChainFrame() == frameId) { + var10 = -720413413; + } else { + var10 = 1602118766; + } + break; + case -1470615358: + if (entryCount >= (1674538573 | -1674536525) + (1674538573 & -1674536525)) { + var10 = 1471723062; + } else { + var10 = -1926852932; + } + break; + case -1362108016: + if (var4 == null) { + var10 = 1323053693; + } else { + var10 = 1976717890; + } + break; + case -1067349895: + default: + if (reuseFrame) { + var10 = -1362108016; + } else { + var10 = 1323053693; + } + break; + case -729992116: + return (boolean)(((1)) != 0); + case -720413413: + entryNext[var9.evo$getReuseChainTail()] = var8; + var9.evo$setReuseChainTail(var8); + var10 = -729992116; + break; + case -641577835: + latchFallback((1124301574 ^ -1124301573) + ((1124301574 & -1124301573) << 1)); + return (boolean)(((0)) != 0); + case 1323053693: + return (boolean)(((0)) != 0); + case 1471723062: + latchFallback((1435654653 | -1435654651) + (1435654653 & -1435654651)); + return (boolean)(((0)) != 0); + case 1602118766: + var9.evo$setReuseChain(frameId, var8, var8); + var10 = -729992116; + break; + case 1976717890: + if (!isLayerEligible(var3)) { + var10 = -641577835; + } else { + var10 = -1470615358; + } + } + } + } + + private static boolean isLayerEligible(RenderType var0) { + int var1 = 0; + int var3 = 0; + int var2 = 1981970459; + + while (true) { + switch (var2) { + case -2101848520: + if (!var0.isOutline()) { + var2 = 554399814; + } else { + var2 = -1802070094; + } + break; + case -1851609310: + if (var0.primitiveTopology() == PrimitiveTopology.QUADS) { + var2 = -1054451184; + } else { + var2 = -1802070094; + } + break; + case -1839317939: + var1 = var3; + lastEligibilityLayer = var0; + lastEligibilityResult = (boolean)((var1) != 0); + return (boolean)((var1) != 0); + case -1802070094: + var3 = 0; + var2 = -1839317939; + break; + case -1054451184: + var3 = 1; + var2 = -1839317939; + break; + case -129198361: + if (var0.format() == DefaultVertexFormat.ENTITY) { + var2 = -1851609310; + } else { + var2 = -1802070094; + } + break; + case 554399814: + if (!var0.sortOnUpload()) { + var2 = -129198361; + } else { + var2 = -1802070094; + } + break; + case 1601716396: + return lastEligibilityResult; + case 1981970459: + default: + if (var0 == lastEligibilityLayer) { + var2 = 1601716396; + } else { + var2 = -2101848520; + } + } + } + } + + private static void latchFallback(int var0) { + fallbackUntilFrame = frameId + (8271365517560234104L | -8271365517560233504L) + (8271365517560234104L & -8271365517560233504L); + } + + public static void captureFrameContext(StagedVertexBuffer var0, GpuTextureView var1) { + int var2 = 1923901754; + + while (true) { + switch (var2) { + case -1921431858: + return; + case -1866031177: + frameStagedBuffer = var0; + frameLightmap = var1; + var2 = -1921431858; + break; + case 384667730: + if (ty.isLevelRender()) { + var2 = -1866031177; + } else { + var2 = -1921431858; + } + break; + case 1309781894: + if (entryCount > 0) { + var2 = 384667730; + } else { + var2 = -1921431858; + } + break; + case 1923901754: + default: + if (reuseFrame) { + var2 = 1309781894; + } else { + var2 = -1921431858; + } + } + } + } + + public static void beginModelRender(Submit var0) { + pendingEntry = -1; + StagedVertexBuffer var1 = frameStagedBuffer; + if (reuseFrame && entryCount != 0 && var1 != null) { + if (var0.sheetedDecalPose() == null && !var0.renderType().isOutline()) { + if (var0.state() instanceof LivingEntityRenderState var2) { + aud var10 = (aud)var2; + if (var10.evo$getReuseChainFrame() == frameId) { + Model var4 = var0.model(); + int var5 = var10.evo$getReuseChainHead(); + + while (var5 != (989345092 | -989345093) + (989345092 & -989345093) && (entryModels[var5] != var4 || entryDraws[var5] != null)) { + var5 = entryNext[var5]; + } + + if (var5 != (1808425263 ^ -1808425264) + ((1808425263 & -1808425264) << 1)) { + b.o var6 = (b.o)var1; + Draw var7 = var6.evo$getLastBuildingDraw(); + BufferBuilder var8 = var6.evo$getLastVertexBuilder(); + if (var7 != null && var8 != null) { + b.p var9 = (b.p)var7; + if (var9.evo$getPrimitiveTopology() == PrimitiveTopology.QUADS + && var9.evo$getFormat() == DefaultVertexFormat.ENTITY + && var9.evo$getQuadSorting() == null) { + if (!frameModelViewCaptured) { + frameModelView.set(RenderSystem.getModelViewMatrixCopy()); + frameModelViewCaptured = (boolean)(((1)) != 0); + } + + pendingEntry = var5; + pendingDraw = var7; + pendingBuilder = var8; + pendingVerticesBefore = ((b.a)var8).evo$getVertices(); + pendingDrawBase = var9.evo$getVertexCount(); + } else { + latchFallback((-2024217040 ^ 2024217044) + ((-2024217040 & 2024217044) << 1)); + } + } else { + latchFallback((-651077922 | 651077925) + (-651077922 & 651077925)); + } + } + } + } + } + } + } + + public static void endModelRender() { + int var0 = 0; + Draw var1 = null; + BufferBuilder var2 = null; + b.o var3 = null; + int var4 = 0; + int var5 = 1506287184; + + while (true) { + switch (var5) { + case -1947575061: + entryDraws[var0] = var1; + entryFirstVertex[var0] = pendingDrawBase + pendingVerticesBefore; + entryVertexCount[var0] = var4; + preparedCount += 1; + return; + case -1553336657: + if (var3.evo$getLastBuildingDraw() == var1) { + var5 = -498123692; + } else { + var5 = -137807485; + } + break; + case -1315472396: + return; + case -1138908706: + pendingEntry = -1; + var1 = pendingDraw; + var2 = pendingBuilder; + pendingDraw = null; + pendingBuilder = null; + var3 = (b.o)frameStagedBuffer; + if (var3 != null) { + var5 = -1553336657; + } else { + var5 = -137807485; + } + break; + case -498123692: + if (var3.evo$getLastVertexBuilder() != var2) { + var5 = -137807485; + } else { + var5 = 999978344; + } + break; + case -137807485: + latchFallback((1013898355 | -1013898350) + (1013898355 & -1013898350)); + return; + case 999978344: + var4 = ((b.a)var2).evo$getVertices() - pendingVerticesBefore; + if (var4 > 0) { + var5 = 1974383195; + } else { + var5 = 1747745339; + } + break; + case 1506287184: + default: + var0 = pendingEntry; + if (var0 == (1687811790 | -1687811791) + (1687811790 & -1687811791)) { + var5 = -1315472396; + } else { + var5 = -1138908706; + } + break; + case 1747745339: + latchFallback((-2046222304 | 2046222310) + (-2046222304 & 2046222310)); + return; + case 1974383195: + if (var4 % 4!= 0) { + var5 = 1747745339; + } else { + var5 = -1947575061; + } + } + } + } + + public static void drawRecorded() { + if (reuseFrame && entryCount != 0) { + StagedVertexBuffer var0 = frameStagedBuffer; + GpuTextureView var1 = frameLightmap; + if (var0 != null && var1 != null && ty.isMaskDrawReady()) { + if (((b.o)var0).evo$getCurrentVertexBuffer() == null) { + latchFallback((-753979359 | 753979366) + (-753979359 & 753979366)); + } else { + if (preparedCount < entryCount) { + latchFallback((425029573 ^ -425029565) + ((425029573 & -425029565) << 1)); + } + + if (preparedCount != 0) { + int var2 = 0; + + while (var2 < entryCount) { + drawOrder[var2] = var2++; + } + + IntArrays.unstableSort(drawOrder, 0, entryCount, BACK_TO_FRONT); + var2 = 0; + + for (int var3 = 0; var3 < entryCount; var3++) { + if (entryDraws[var3] != null) { + int var4 = entryFirstVertex[var3] + / 24; + int var5 = entryVertexCount[var3] + / 24; + var2 = Math.max(var2, var4 + var5); + } + } + + AutoStorageIndexBuffer var25 = RenderSystem.getSequentialBuffer(PrimitiveTopology.QUADS); + GpuBuffer var26 = var25.getBuffer(var2); + DynamicUniforms var27 = RenderSystem.getDynamicUniforms(); + GpuSampler var6 = RenderSystem.getSamplerCache().getClampToEdge(FilterMode.LINEAR); + CommandEncoder var7 = RenderSystem.getDevice().createCommandEncoder(); + RenderPass var8 = var7.createRenderPass(PASS_LABEL, ty.maskColorView(), Optional.empty(), ty.maskDepthView(), OptionalDouble.empty()); + + try { + var8.setPipeline(ty.reuseMaskPipeline(frameGradient)); + RenderSystem.bindDefaultUniforms(var8); + var8.bindTexture("Sampler2", var1, var6); + var8.setIndexBuffer(var26, var25.type()); + Identifier var9 = null; + Draw var10 = null; + int var11 = 0; + + for (int var12 = 0; var12 < entryCount; var12++) { + int var13 = drawOrder[var12]; + if (entryDraws[var13] != null) { + Identifier var14 = entryTextures[var13]; + if (var14 != var9) { + AbstractTexture var15 = mc.getTextureManager().getTexture(var14); + var8.bindTexture( + "Sampler0", + var15.getTextureView(), + var15.getSampler() + ); + var9 = var14; + } + + Draw var28 = entryDraws[var13]; + if (var28 != var10) { + ExecuteInfo var16 = var0.getExecuteInfo(var28); + if (var16 == null) { + latchFallback((-1799012949 ^ 1799012958) + ((-1799012949 & 1799012958) << 1)); + var10 = null; + continue; + } + + var8.setVertexBuffer(0, var16.vertexBuffer().slice()); + var11 = var16.baseVertex(); + var10 = var28; + } + + int var29 = entryColors[var13]; + Vector4f var17 = colorModulatorAt(var13); + var17.set( + (var29 >>> (1527766096 | -1527766080) + (1527766096 & -1527766080) & (-1862660670 | 1862660925) + (-1862660670 & 1862660925)) + / 255.0F, + ( + var29 >>> (-2112039009 ^ 2112039017) + ((-2112039009 & 2112039017) << 1) + & (-680958106 ^ 680958361) + ((-680958106 & 680958361) << 1) + ) + / 255.0F, + (var29 & (504321548 ^ -504321293) + ((504321548 & -504321293) << 1)) / 255.0F, + ( + var29 >>> (-181644787 ^ 181644811) + ((-181644787 & 181644811) << 1) + & (-1541817715 ^ 1541817970) + ((-1541817715 & 1541817970) << 1) + ) + / 255.0F + ); + int var18 = entryAnchors[var13]; + float var19 = (short)(var18 & (2085384488 ^ -2085318953) + ((2085384488 & -2085318953) << 1)) / 64.0F; + float var20 = Math.max((short)(var18 >>> (1722811481 | -1722811465) + (1722811481 & -1722811465)) / 64.0F, 0.05F); + Vector3f var21 = modelOffsetAt(var13); + var21.set(var19, var20, entryFullBright[var13] ? 1.0F : 0.0F); + var8.setUniform( + "DynamicTransforms", + var27.writeTransform(frameModelView, var17, var21, IDENTITY_TEXTURE_MATRIX) + ); + var8.drawIndexed( + entryVertexCount[var13] + / 24, + 1, + entryFirstVertex[var13] + / 24, + var11, + (-1006741379 ^ 1006741379) + ((-1006741379 & 1006741379) << 1) + ); + } + } + } catch (Throwable var23) { + if (var8 != null) { + try { + var8.close(); + } catch (Throwable var22) { + var23.addSuppressed(var22); + } + } + + throw var23; + } + + if (var8 != null) { + var8.close(); + } + } + } + } + } + } + + private static Vector4f colorModulatorAt(int var0) { + Vector4f var1 = null; + int var2 = -723495596; + + while (true) { + switch (var2) { + case -1797933677: + return var1; + case -723495596: + default: + var1 = entryColorModulators[var0]; + if (var1 == null) { + var2 = 2014127768; + } else { + var2 = -1797933677; + } + break; + case 2014127768: + var1 = new Vector4f(); + entryColorModulators[var0] = var1; + var2 = -1797933677; + } + } + } + + private static Vector3f modelOffsetAt(int var0) { + Vector3f var1 = null; + int var2 = -437618676; + + while (true) { + switch (var2) { + case -437618676: + default: + var1 = entryModelOffsets[var0]; + if (var1 == null) { + var2 = 291155506; + } else { + var2 = 419269409; + } + break; + case 291155506: + var1 = new Vector3f(); + entryModelOffsets[var0] = var1; + var2 = 419269409; + break; + case 419269409: + return var1; + } + } + } +} diff --git a/src/main/java/defpackage/au.java b/src/main/java/defpackage/au.java new file mode 100644 index 0000000..8c763ac --- /dev/null +++ b/src/main/java/defpackage/au.java @@ -0,0 +1,23 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; + +public class au extends ax implements aw { + private float x; + private float y; + private float z; + private float amount; + + public au(float var1, float var2, float var3, float var4) { + this.amount = var1; + this.x = var2; + this.y = var3; + this.z = var4; + } + + @Override + public void applyPose(PoseStack var1) { + var1.rotateAround(Axis.ZP.rotationDegrees(this.amount), this.x, this.y, this.z); + } +} diff --git a/src/main/java/defpackage/aua.java b/src/main/java/defpackage/aua.java new file mode 100644 index 0000000..1d7adf6 --- /dev/null +++ b/src/main/java/defpackage/aua.java @@ -0,0 +1,392 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import net.minecraft.client.model.Model; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelPart.Cube; +import net.minecraft.client.model.geom.ModelPart.Polygon; +import net.minecraft.client.model.geom.ModelPart.Vertex; +import org.joml.Matrix4f; + +public final class aua { + static final int BOUNDS_STRIDE = 6; + private static final int NO_PARENT = -1; + private static final float MODEL_UNIT_SCALE = 0.0625F; + private static final float NO_ROTATION = 0.0F; + private static final float NO_SCALE = 1.0F; + private final ModelPart[] parts; + private final int[] parents; + private final boolean[] geometry; + private final float[] bounds; + private final Matrix4f[] matrices; + private final boolean[] culled; + + private aua(ModelPart[] var1, int[] var2, boolean[] var3, float[] var4) { + this.parts = var1; + this.parents = var2; + this.geometry = var3; + this.bounds = var4; + this.matrices = new Matrix4f[var1.length]; + this.culled = new boolean[var1.length]; + + for (int var5 = 0; var5 < var1.length; var5++) { + this.matrices[var5] = new Matrix4f(); + } + } + + public static aua of(Model var0) { + aub var1 = null; + aua var2 = null; + int var3 = -1960512409; + + while (true) { + switch (var3) { + case -1960512409: + default: + var1 = (aub)var0; + var2 = var1.evo$getModelTree(); + if (var2 == null) { + var3 = -1808322589; + } else { + var3 = -28040823; + } + break; + case -1808322589: + var2 = build(var0.root()); + var1.evo$setModelTree(var2); + var3 = -28040823; + break; + case -28040823: + return var2; + } + } + } + + private static aua build(ModelPart var0) { + ArrayList var1 = null; + ArrayList var2 = null; + int var3 = 0; + ModelPart[] var4 = null; + int[] var5 = null; + boolean[] var6 = null; + float[] var7 = null; + int var8 = 0; + int var9 = 794361985; + + while (true) { + switch (var9) { + case -52355091: + return new aua(var4, var5, var6, var7); + case 14530658: + var5[var8] = (Integer)var2.get(var8); + var6[var8] = measure(var4[var8], var7, var8 * ((4985153 ^ -4985147) + ((4985153 & -4985147) << 1))); + var8++; + var9 = 565898532; + break; + case 565898532: + if (var8 < var3) { + var9 = 14530658; + } else { + var9 = -52355091; + } + break; + case 794361985: + default: + var1 = new ArrayList(); + var2 = new ArrayList(); + collect(var0, -1, var1, var2); + var3 = var1.size(); + var4 = var1.toArray(new ModelPart[0]); + var5 = new int[var3]; + var6 = new boolean[var3]; + var7 = new float[var3 * (6)]; + var8 = 0; + var9 = 565898532; + } + } + } + + private static void collect(ModelPart var0, int var1, List var2, List var3) { + int var4 = 0; + Iterator var5 = null; + ModelPart var6 = null; + int var7 = -864201113; + + while (true) { + switch (var7) { + case -1814555267: + return; + case -864201113: + default: + var4 = var2.size(); + var2.add(var0); + var3.add(var1); + var5 = ((b.j)var0).evo$getChildren().values().iterator(); + var7 = 1911049943; + break; + case -28767570: + var6 = (ModelPart)var5.next(); + collect(var6, var4, var2, var3); + var7 = 1911049943; + break; + case 1911049943: + if (var5.hasNext()) { + var7 = -28767570; + } else { + var7 = -1814555267; + } + } + } + } + + private static boolean measure(ModelPart var0, float[] var1, int var2) { + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = 0; + Iterator var10 = null; + Cube var11 = null; + Polygon[] var12 = null; + int var13 = 0; + int var14 = 0; + Object var15 = null; + Vertex[] var16 = null; + int var17 = 0; + int var18 = 0; + Object var19 = null; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + int var23 = 541387884; + + while (true) { + switch (var23) { + case -2098476467: + if (var14 < var13) { + var23 = 1432203550; + } else { + var23 = 641446105; + } + break; + case -1786540840: + var6 = var20; + var23 = 1234041124; + break; + case -1041782573: + var4 = var21; + var23 = 1635883475; + break; + case -944610946: + var5 = var22; + var23 = -390927870; + break; + case -804381889: + if (var9 == 0) { + var23 = 771257930; + } else { + var23 = 386840751; + } + break; + case -430540571: + var14++; + var23 = -2098476467; + break; + case -396436057: + if (var10.hasNext()) { + var23 = 2142027712; + } else { + var23 = -804381889; + } + break; + case -390927870: + if (var22 > var8) { + var23 = 1565563008; + } else { + var23 = 1776733003; + } + break; + case -123140261: + if (var18 < var17) { + var23 = 911424242; + } else { + var23 = -430540571; + } + break; + case 386840751: + var1[var2] = var3; + var1[var2 + 1] = var4; + var1[var2 + 2] = var5; + var1[var2 + 3] = var6; + var1[var2 + 4] = var7; + var1[var2 + 5] = var8; + return (boolean)(((1)) != 0); + case 430354357: + var3 = var20; + var23 = 1219989226; + break; + case 541387884: + default: + var3 = Float.MAX_VALUE; + var4 = Float.MAX_VALUE; + var5 = Float.MAX_VALUE; + var6 = -Float.MAX_VALUE; + var7 = -Float.MAX_VALUE; + var8 = -Float.MAX_VALUE; + var9 = 0; + var10 = ((b.j)var0).evo$getCubes().iterator(); + var23 = -396436057; + break; + case 641446105: + var23 = -396436057; + break; + case 771257930: + return (boolean)(((0)) != 0); + case 911424242: + var19 = var16[var18]; + var20 = var19.worldX(); + var21 = var19.worldY(); + var22 = var19.worldZ(); + if (var20 < var3) { + var23 = 430354357; + } else { + var23 = 1219989226; + } + break; + case 1219989226: + if (var20 > var6) { + var23 = -1786540840; + } else { + var23 = 1234041124; + } + break; + case 1234041124: + if (var21 < var4) { + var23 = -1041782573; + } else { + var23 = 1635883475; + } + break; + case 1432203550: + var15 = var12[var14]; + var16 = var15.vertices(); + var17 = var16.length; + var18 = 0; + var23 = -123140261; + break; + case 1565563008: + var8 = var22; + var23 = 1776733003; + break; + case 1635883475: + if (var21 > var7) { + var23 = 1805228699; + } else { + var23 = 1742459796; + } + break; + case 1742459796: + if (var22 < var5) { + var23 = -944610946; + } else { + var23 = -390927870; + } + break; + case 1776733003: + var9 = 1; + var18++; + var23 = -123140261; + break; + case 1805228699: + var7 = var21; + var23 = 1742459796; + break; + case 2142027712: + var11 = (Cube)var10.next(); + var12 = var11.polygons; + var13 = var12.length; + var14 = 0; + var23 = -2098476467; + } + } + } + + public int size() { + return this.parts.length; + } + + public void updateTransforms(Matrix4f var1) { + for (int var2 = 0; var2 < this.parts.length; var2++) { + ModelPart var3 = this.parts[var2]; + int var4 = this.parents[var2]; + if (var3.visible && (var4 == (-310742173 | 310742172) + (-310742173 & 310742172) || !this.culled[var4])) { + this.culled[var2] = (boolean)(((0)) != 0); + Matrix4f var5 = this.matrices[var2]; + var5.set(var4 == -1? var1 : this.matrices[var4]); + var5.translate(var3.x * 0.0625F, var3.y * 0.0625F, var3.z * 0.0625F); + if (var3.xRot != 0.0F || var3.yRot != 0.0F || var3.zRot != 0.0F) { + var5.rotateZYX(var3.zRot, var3.yRot, var3.xRot); + } + + if (var3.xScale != 1.0F || var3.yScale != 1.0F || var3.zScale != 1.0F) { + var5.scale(var3.xScale, var3.yScale, var3.zScale); + } + } else { + this.culled[var2] = (boolean)(((1)) != 0); + } + } + } + + public boolean isDrawn(int var1) { + int var3 = 0; + int var2 = -12242249; + + while (true) { + switch (var2) { + case -2126244044: + var3 = 1; + var2 = -1597825453; + break; + case -1597825453: + return (boolean)((var3) != 0); + case -917651827: + if (!this.culled[var1]) { + var2 = 2136971304; + } else { + var2 = -501562408; + } + break; + case -501562408: + var3 = 0; + var2 = -1597825453; + break; + case -12242249: + default: + if (this.geometry[var1]) { + var2 = -917651827; + } else { + var2 = -501562408; + } + break; + case 2136971304: + if (!this.parts[var1].skipDraw) { + var2 = -2126244044; + } else { + var2 = -501562408; + } + } + } + } + + public Matrix4f matrix(int var1) { + return this.matrices[var1]; + } + + public float bound(int var1, int var2) { + return this.bounds[var1 * ((65615199 | -65615193) + (65615199 & -65615193)) + var2]; + } +} diff --git a/src/main/java/defpackage/aub.java b/src/main/java/defpackage/aub.java new file mode 100644 index 0000000..65cdd4c --- /dev/null +++ b/src/main/java/defpackage/aub.java @@ -0,0 +1,7 @@ +package defpackage; + +public interface aub { + aua evo$getModelTree(); + + void evo$setModelTree(aua var1); +} diff --git a/src/main/java/defpackage/auc.java b/src/main/java/defpackage/auc.java new file mode 100644 index 0000000..b363120 --- /dev/null +++ b/src/main/java/defpackage/auc.java @@ -0,0 +1,90 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import net.minecraft.client.renderer.OrderedSubmitNodeCollector; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; + +public final class auc extends aty implements SubmitNodeCollector { + private static final int MAX_POOLED_WRAPPERS = 512; + private static final List POOL = new ArrayList<>(); + private static int poolCursor; + private final aty batchingQueue = new aty(); + private SubmitNodeCollector orderedDelegate; + private boolean batchingQueueBound; + + private auc() { + } + + public static void beginFrame() { + poolCursor = 0; + } + + public static SubmitNodeCollector wrap(SubmitNodeCollector var0, LivingEntityRenderState var1) { + auc var2 = null; + int var3 = 273029985; + + while (true) { + switch (var3) { + case -799238980: + var2 = POOL.get(poolCursor); + poolCursor += 1; + var3 = -381910945; + break; + case -381910945: + var2.bind(var0, var1); + var2.orderedDelegate = var0; + var2.batchingQueueBound = (boolean)(((0)) != 0); + return var2; + case 118320361: + var2 = new auc(); + POOL.add(var2); + poolCursor += 1; + var3 = -381910945; + break; + case 273029985: + default: + if (poolCursor < POOL.size()) { + var3 = -799238980; + } else { + var3 = 854761100; + } + break; + case 854761100: + if (POOL.size() < (840023204 | -840022692) + (840023204 & -840022692)) { + var3 = 118320361; + } else { + var3 = 1112378348; + } + break; + case 1112378348: + var2 = new auc(); + var3 = -381910945; + } + } + } + + public OrderedSubmitNodeCollector order(int var1) { + int var2 = 1059526869; + + while (true) { + switch (var2) { + case -196912553: + return this.batchingQueue; + case 1059526869: + default: + if (!this.batchingQueueBound) { + var2 = 1525235662; + } else { + var2 = -196912553; + } + break; + case 1525235662: + this.batchingQueue.bind(this.orderedDelegate.order(var1), this.state()); + this.batchingQueueBound = (boolean)(((1)) != 0); + var2 = -196912553; + } + } + } +} diff --git a/src/main/java/defpackage/aud.java b/src/main/java/defpackage/aud.java new file mode 100644 index 0000000..dbb575e --- /dev/null +++ b/src/main/java/defpackage/aud.java @@ -0,0 +1,45 @@ +package defpackage; + +import net.minecraft.resources.Identifier; + +public interface aud { + void evo$setChamsData(int var1, String var2, float var3, float var4, Identifier var5, byte var6); + + int evo$getEntityId(); + + String evo$getName(); + + float evo$getHealth(); + + float evo$getMaxHealth(); + + Identifier evo$getTexture(); + + byte evo$getTargetKind(); + + int evo$getCachedColor(); + + void evo$setCachedColor(int var1); + + long evo$getColorFrameId(); + + void evo$setColorFrameId(long var1); + + long evo$getVisualFrameId(); + + boolean evo$isRenderable(); + + float evo$getDistanceAlpha(); + + void evo$setVisual(long var1, boolean var3, float var4); + + long evo$getReuseChainFrame(); + + int evo$getReuseChainHead(); + + int evo$getReuseChainTail(); + + void evo$setReuseChain(long var1, int var3, int var4); + + void evo$setReuseChainTail(int var1); +} diff --git a/src/main/java/defpackage/aue.java b/src/main/java/defpackage/aue.java new file mode 100644 index 0000000..581aeef --- /dev/null +++ b/src/main/java/defpackage/aue.java @@ -0,0 +1,845 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.model.Model; +import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import net.minecraft.client.renderer.state.level.LevelRenderState; +import net.minecraft.util.Mth; +import org.joml.Matrix4f; + +public final class aue implements aqg { + private static final float NEAR_EPSILON = 1.0E-4F; + private static final int HISTORY_CAPACITY = 512; + private static final int RECT_STRIDE = 4; + private static final float MIN_HISTORY_DECAY = 0.1F; + private static final float MAX_HISTORY_DECAY = 0.99F; + private static final float HISTORY_CUTOFF = 0.045F; + private static final int CORNER_COUNT = 8; + private static final int BOUND_MIN = 0; + private static final int BOUND_MAX = 3; + private static final int AXIS_X = 0; + private static final int AXIS_Y = 1; + private static final int AXIS_Z = 2; + private static final float PROJECTION_LIMIT = 1000000.0F; + private static final Matrix4f VIEW_PROJECTION = new Matrix4f(); + private static final Matrix4f CLIP_BASE = new Matrix4f(); + private static final float[] HISTORY = new float[2048]; + private static final int MAX_CLUSTERS = 8; + private static final int MAX_ENTITY_RECTS = 128; + private static final float CLUSTER_GAP_PIXELS = 12.0F; + private static final float CLUSTER_MERGE_RATIO = 0.8F; + private static final float[] ENTITY_RECTS = new float[512]; + private static final int[] CLUSTER_RECTS = new int[32]; + private static float screenX; + private static float screenY; + private static int entityRectCount; + private static int clusterCount; + private static int historyCursor; + private static int historyCount; + private static boolean limited; + private static int pixelLeft; + private static int pixelTop; + private static int pixelRight; + private static int pixelBottom; + private static boolean preparing; + private static boolean projectable; + private static int frameWidth; + private static int frameHeight; + private static float marginPixels; + private static boolean trackHistory; + private static float historyDecay; + private static LivingEntityRenderState activeState; + private static boolean activeFound; + private static float activeMinX; + private static float activeMinY; + private static float activeMaxX; + private static float activeMaxY; + private static boolean boundsFound; + private static float boundsMinX; + private static float boundsMinY; + private static float boundsMaxX; + private static float boundsMaxY; + + private aue() { + } + + public static boolean isLimited() { + return limited; + } + + public static int pixelLeft() { + return pixelLeft; + } + + public static int pixelTop() { + return pixelTop; + } + + public static int pixelRight() { + return pixelRight; + } + + public static int pixelBottom() { + return pixelBottom; + } + + public static int clusterCount() { + return clusterCount; + } + + public static int clusterLeft(int var0) { + return CLUSTER_RECTS[var0 * (4)]; + } + + public static int clusterTop(int var0) { + return CLUSTER_RECTS[var0 * 5]; + } + + public static int clusterRight(int var0) { + return CLUSTER_RECTS[var0 * 6]; + } + + public static int clusterBottom(int var0) { + return CLUSTER_RECTS[var0 * 7]; + } + + public static int bandTop(int var0) { + return Math.max(0, Math.min(pixelTop, var0)); + } + + public static int bandBottom(int var0) { + return Math.min(var0, Math.max(pixelBottom, (-913675390 | 913675390) + (-913675390 & 913675390))); + } + + public static void resetHistory() { + historyCursor = 0; + historyCount = 0; + } + + public static void invalidate() { + preparing = (boolean)(((0)) != 0); + projectable = (boolean)(((0)) != 0); + limited = (boolean)(((0)) != 0); + ty.requestFullClear(); + } + + public static void beginFrame(LevelRenderState var0, float var1, boolean var2, float var3) { + CameraRenderState var4 = null; + int var5 = 1512460986; + + while (true) { + switch (var5) { + case -1769378609: + if (var4.initialized) { + var5 = 1905682814; + } else { + var5 = 463549474; + } + break; + case -1662113716: + var4 = var0.cameraRenderState; + if (var4 != null) { + var5 = -1769378609; + } else { + var5 = 463549474; + } + break; + case -977290617: + if (frameWidth > 0) { + var5 = -316242644; + } else { + var5 = 1084490813; + } + break; + case -607239822: + VIEW_PROJECTION.set(var4.projectionMatrix).mul(var4.viewRotationMatrix); + projectable = (boolean)(((1)) != 0); + return; + case -583946265: + if (var4.pos == null) { + var5 = 463549474; + } else { + var5 = -607239822; + } + break; + case -316242644: + if (frameHeight <= 0) { + var5 = 1084490813; + } else { + var5 = -1662113716; + } + break; + case 123266258: + if (var4.viewRotationMatrix != null) { + var5 = -583946265; + } else { + var5 = 463549474; + } + break; + case 463549474: + return; + case 1084490813: + return; + case 1512460986: + default: + limited = (boolean)(((0)) != 0); + entityRectCount = 0; + clusterCount = 0; + activeState = null; + activeFound = (boolean)(((0)) != 0); + boundsFound = (boolean)(((0)) != 0); + marginPixels = var1; + trackHistory = var2; + historyDecay = var3; + preparing = (boolean)(((1)) != 0); + projectable = (boolean)(((0)) != 0); + frameWidth = mc.getWindow().getWidth(); + frameHeight = mc.getWindow().getHeight(); + if (var0 != null) { + var5 = -977290617; + } else { + var5 = 1084490813; + } + break; + case 1905682814: + if (var4.projectionMatrix != null) { + var5 = 123266258; + } else { + var5 = 463549474; + } + } + } + } + + public static void accumulate(LivingEntityRenderState var0, Model var1, PoseStack var2) { + if (preparing && projectable) { + if (var0 != activeState) { + flushActiveEntity(); + activeState = var0; + } + + aua var3 = aua.of(var1); + CLIP_BASE.set(VIEW_PROJECTION).mul(var2.last().pose()); + var3.updateTransforms(CLIP_BASE); + int var4 = var3.size(); + + for (int var5 = 0; var5 < var4; var5++) { + if (var3.isDrawn(var5)) { + Matrix4f var6 = var3.matrix(var5); + + for (int var7 = 0; var7 < 8; var7++) { + float var8 = var3.bound( + var5, + ( + (var7 & (1492936351 | -1492936350) + (1492936351 & -1492936350)) == 0 + ? 0: (-590751652 | 590751655) + (-590751652 & 590751655) + ) + + (994734039 | -994734039) + + (994734039 & -994734039) + ); + float var9 = var3.bound( + var5, + ( + (var7 & (-185727045 | 185727047) + (-185727045 & 185727047)) == 0 + ? 0: (1938641134 | -1938641131) + (1938641134 & -1938641131) + ) + + (386735040 ^ -386735039) + + ((386735040 & -386735039) << 1) + ); + float var10 = var3.bound( + var5, + ( + (var7 & (-1517830599 | 1517830603) + (-1517830599 & 1517830603)) == 0 + ? 0: (1104940517 | -1104940514) + (1104940517 & -1104940514) + ) + + (1368106244 | -1368106242) + + (1368106244 & -1368106242) + ); + float var11 = var6.m03() * var8 + var6.m13() * var9 + var6.m23() * var10 + var6.m33(); + if (var11 <= 1.0E-4F) { + projectable = (boolean)(((0)) != 0); + return; + } + + float var12 = var6.m00() * var8 + var6.m10() * var9 + var6.m20() * var10 + var6.m30(); + float var13 = var6.m01() * var8 + var6.m11() * var9 + var6.m21() * var10 + var6.m31(); + projectPoint(var12, var13, var11); + if (!activeFound) { + activeMinX = screenX; + activeMaxX = screenX; + activeMinY = screenY; + activeMaxY = screenY; + activeFound = (boolean)(((1)) != 0); + } else { + if (screenX < activeMinX) { + activeMinX = screenX; + } + + if (screenX > activeMaxX) { + activeMaxX = screenX; + } + + if (screenY < activeMinY) { + activeMinY = screenY; + } + + if (screenY > activeMaxY) { + activeMaxY = screenY; + } + } + } + } + } + } + } + + public static void finish() { + float var0 = 0.0F; + float var1 = 0.0F; + float var2 = 0.0F; + float var3 = 0.0F; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = -758452871; + + while (true) { + switch (var8) { + case -2099132517: + if (HISTORY[var7 + 1] < var1) { + var8 = 790837010; + } else { + var8 = 429362655; + } + break; + case -2069512828: + if (!boundsFound) { + var8 = 473966123; + } else { + var8 = -1192433471; + } + break; + case -1971971248: + if (HISTORY[var7 + 3] > var3) { + var8 = -1096251949; + } else { + var8 = 1352005820; + } + break; + case -1916528685: + var2 = HISTORY[var7 + 2]; + var8 = -1971971248; + break; + case -1754259311: + preparing = (boolean)(((0)) != 0); + flushActiveEntity(); + if (projectable) { + var8 = -2069512828; + } else { + var8 = 473966123; + } + break; + case -1551226339: + var0 = HISTORY[var7]; + var8 = -2099132517; + break; + case -1390461370: + var0 = Math.max(var0, 0.0F); + var1 = Math.max(var1, 0.0F); + var2 = Math.min(var2, frameWidth); + var3 = Math.min(var3, frameHeight); + if (!(var2 <= var0)) { + var8 = -1152330907; + } else { + var8 = 759475224; + } + break; + case -1192433471: + var0 = boundsMinX; + var1 = boundsMinY; + var2 = boundsMaxX; + var3 = boundsMaxY; + pushHistory(var0, var1, var2, var3); + if (trackHistory) { + var8 = 206622252; + } else { + var8 = -1390461370; + } + break; + case -1152330907: + if (var3 <= var1) { + var8 = 759475224; + } else { + var8 = -459657588; + } + break; + case -1096251949: + var3 = HISTORY[var7 + 3]; + var8 = 1352005820; + break; + case -834848405: + var6 = ( + (historyCursor - ((1580918911 | -1580918910) + (1580918911 & -1580918910)) - var5) + % ((1066476501 ^ -1066475989) + ((1066476501 & -1066475989) << 1)) + + (1817668746 | -1817668234) + + (1817668746 & -1817668234) + ) + % ((-1912121243 | 1912121755) + (-1912121243 & 1912121755)); + var7 = var6 * (4); + if (HISTORY[var7] < var0) { + var8 = -1551226339; + } else { + var8 = -2099132517; + } + break; + case -758452871: + default: + if (!preparing) { + var8 = 59012170; + } else { + var8 = -1754259311; + } + break; + case -522723343: + if (var5 < var4) { + var8 = -834848405; + } else { + var8 = -1390461370; + } + break; + case -459657588: + pixelLeft = (int)Math.floor(var0); + pixelRight = Math.min(frameWidth, (int)Math.ceil(var2)); + pixelTop = (int)Math.floor(var1); + pixelBottom = Math.min(frameHeight, (int)Math.ceil(var3)); + limited = (boolean)(((1)) != 0); + buildClusters(); + return; + case 59012170: + return; + case 206622252: + var4 = historySpan(historyDecay); + var5 = 0; + var8 = -522723343; + break; + case 429362655: + if (HISTORY[var7 + 2] > var2) { + var8 = -1916528685; + } else { + var8 = -1971971248; + } + break; + case 473966123: + pushHistory(0.0F, 0.0F, frameWidth, frameHeight); + return; + case 759475224: + return; + case 790837010: + var1 = HISTORY[var7 + 1]; + var8 = 429362655; + break; + case 1352005820: + var5++; + var8 = -522723343; + } + } + } + + private static void flushActiveEntity() { + float var0 = 0.0F; + float var1 = 0.0F; + float var2 = 0.0F; + float var3 = 0.0F; + int var4 = -614579864; + + while (true) { + switch (var4) { + case -1121740860: + boundsMaxY = var3; + var4 = -540054742; + break; + case -1011565714: + activeFound = (boolean)(((0)) != 0); + var0 = activeMinX - marginPixels; + var1 = activeMinY - marginPixels; + var2 = activeMaxX + marginPixels; + var3 = activeMaxY + marginPixels; + if (!boundsFound) { + var4 = 690638720; + } else { + var4 = 835049610; + } + break; + case -614579864: + default: + if (!activeFound) { + var4 = -85344538; + } else { + var4 = -1011565714; + } + break; + case -540054742: + addEntityRect(var0, var1, var2, var3); + return; + case -122353829: + if (var2 > boundsMaxX) { + var4 = 1886748154; + } else { + var4 = 95788906; + } + break; + case -85567025: + if (var1 < boundsMinY) { + var4 = 972878303; + } else { + var4 = -122353829; + } + break; + case -85344538: + return; + case 95788906: + if (var3 > boundsMaxY) { + var4 = -1121740860; + } else { + var4 = -540054742; + } + break; + case 690638720: + boundsMinX = var0; + boundsMinY = var1; + boundsMaxX = var2; + boundsMaxY = var3; + boundsFound = (boolean)(((1)) != 0); + var4 = -540054742; + break; + case 835049610: + if (var0 < boundsMinX) { + var4 = 1529386513; + } else { + var4 = -85567025; + } + break; + case 972878303: + boundsMinY = var1; + var4 = -122353829; + break; + case 1529386513: + boundsMinX = var0; + var4 = -85567025; + break; + case 1886748154: + boundsMaxX = var2; + var4 = 95788906; + } + } + } + + private static void addEntityRect(float var0, float var1, float var2, float var3) { + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = 0; + int var9 = -625056755; + + while (true) { + switch (var9) { + case -2057666212: + return; + case -921963035: + if (var7 <= var5) { + var9 = -2057666212; + } else { + var9 = 1272781754; + } + break; + case -625056755: + default: + if (entityRectCount >= (140416103 ^ -140415975) + ((140416103 & -140415975) << 1)) { + var9 = 1301024568; + } else { + var9 = -135450542; + } + break; + case -135450542: + var4 = Math.max(var0, 0.0F); + var5 = Math.max(var1, 0.0F); + var6 = Math.min(var2, frameWidth); + var7 = Math.min(var3, frameHeight); + if (!(var6 <= var4)) { + var9 = -921963035; + } else { + var9 = -2057666212; + } + break; + case 1272781754: + var8 = entityRectCount * (4); + ENTITY_RECTS[var8] = var4; + ENTITY_RECTS[var8 + 1] = var5; + ENTITY_RECTS[var8 + 2] = var6; + ENTITY_RECTS[var8 + 3] = var7; + entityRectCount += 1; + return; + case 1301024568: + return; + } + } + } + + private static void buildClusters() { + clusterCount = 0; + if (!trackHistory && entityRectCount != 0) { + int var0 = entityRectCount; + int var1 = 1; + + while (var1 != 0) { + var1 = 0; + + for (int var2 = 0; var2 < var0; var2++) { + for (int var3 = var2 + 1; var3 < var0; var3++) { + if (overlaps(var2, var3)) { + mergeInto(var2, var3); + moveRect(--var0, var3); + var1 = 1; + var3--; + } + } + } + } + + while (var0 > (-986022444 ^ 986022452) + ((-986022444 & 986022452) << 1)) { + int var8 = 0; + int var10 = 1; + float var4 = Float.MAX_VALUE; + + for (int var5 = 0; var5 < var0; var5++) { + for (int var6 = var5 + 1; var6 < var0; var6++) { + float var7 = unionArea(var5, var6) - area(var5) - area(var6); + if (var7 < var4) { + var4 = var7; + var8 = var5; + var10 = var6; + } + } + } + + mergeInto(var8, var10); + moveRect(--var0, var10); + } + + float var9 = 0.0F; + + for (int var11 = 0; var11 < var0; var11++) { + var9 += area(var11); + } + + float var12 = (float)(pixelRight - pixelLeft) * (pixelBottom - pixelTop); + if (var0 > (866634927 ^ -866634926) + ((866634927 & -866634926) << 1) && !(var9 >= var12 * 0.8F)) { + for (int var13 = 0; var13 < var0; var13++) { + int var14 = var13 * (4); + CLUSTER_RECTS[var14] = (int)Math.floor(ENTITY_RECTS[var14]); + CLUSTER_RECTS[var14 + 1] = (int)Math.floor( + ENTITY_RECTS[var14 + 1] + ); + CLUSTER_RECTS[var14 + 2] = (int)Math.ceil( + ENTITY_RECTS[var14 + 2] + ); + CLUSTER_RECTS[var14 + 3] = (int)Math.ceil( + ENTITY_RECTS[var14 + 3] + ); + } + + clusterCount = var0; + } + } + } + + private static boolean overlaps(int var0, int var1) { + int var2 = 0; + int var3 = 0; + int var5 = 0; + int var4 = 1057668982; + + while (true) { + switch (var4) { + case -1264246587: + if (ENTITY_RECTS[var3 + 1] - 12.0F + < ENTITY_RECTS[var2 + 3]) { + var4 = -154039113; + } else { + var4 = 318221734; + } + break; + case -878355555: + if (ENTITY_RECTS[var2 + 1] - 12.0F + < ENTITY_RECTS[var3 + 3]) { + var4 = -1264246587; + } else { + var4 = 318221734; + } + break; + case -725611080: + if (ENTITY_RECTS[var3] - 12.0F < ENTITY_RECTS[var2 + 2]) { + var4 = -878355555; + } else { + var4 = 318221734; + } + break; + case -154039113: + var5 = 1; + var4 = 103053988; + break; + case 103053988: + return (boolean)((var5) != 0); + case 318221734: + var5 = 0; + var4 = 103053988; + break; + case 1057668982: + default: + var2 = var0 * (4); + var3 = var1 * (4); + if (ENTITY_RECTS[var2] - 12.0F < ENTITY_RECTS[var3 + 2]) { + var4 = -725611080; + } else { + var4 = 318221734; + } + } + } + } + + private static void mergeInto(int var0, int var1) { + int var2 = var0 * (4); + int var3 = var1 * (4); + ENTITY_RECTS[var2] = Math.min(ENTITY_RECTS[var2], ENTITY_RECTS[var3]); + ENTITY_RECTS[var2 + 1] = Math.min( + ENTITY_RECTS[var2 + 1], + ENTITY_RECTS[var3 + 1] + ); + ENTITY_RECTS[var2 + 2] = Math.max( + ENTITY_RECTS[var2 + 2], + ENTITY_RECTS[var3 + 2] + ); + ENTITY_RECTS[var2 + 3] = Math.max( + ENTITY_RECTS[var2 + 3], + ENTITY_RECTS[var3 + 3] + ); + } + + private static void moveRect(int var0, int var1) { + int var2 = 0; + int var3 = 0; + int var4 = 1038296270; + + while (true) { + switch (var4) { + case 171476818: + return; + case 1038296270: + default: + if (var0 == var1) { + var4 = 171476818; + } else { + var4 = 1601599814; + } + break; + case 1601599814: + var2 = var0 * (4); + var3 = var1 * (4); + ENTITY_RECTS[var3] = ENTITY_RECTS[var2]; + ENTITY_RECTS[var3 + 1] = ENTITY_RECTS[var2 + + 1]; + ENTITY_RECTS[var3 + 2] = ENTITY_RECTS[var2 + + 2]; + ENTITY_RECTS[var3 + 3] = ENTITY_RECTS[var2 + + 3]; + return; + } + } + } + + private static float area(int var0) { + int var1 = var0 * (4); + return (ENTITY_RECTS[var1 + 2] - ENTITY_RECTS[var1]) + * ( + ENTITY_RECTS[var1 + 3] + - ENTITY_RECTS[var1 + 1] + ); + } + + private static float unionArea(int var0, int var1) { + int var2 = var0 * (4); + int var3 = var1 * (4); + float var4 = Math.min(ENTITY_RECTS[var2], ENTITY_RECTS[var3]); + float var5 = Math.min( + ENTITY_RECTS[var2 + 1], + ENTITY_RECTS[var3 + 1] + ); + float var6 = Math.max( + ENTITY_RECTS[var2 + 2], + ENTITY_RECTS[var3 + 2] + ); + float var7 = Math.max( + ENTITY_RECTS[var2 + 3], + ENTITY_RECTS[var3 + 3] + ); + return (var6 - var4) * (var7 - var5); + } + + private static void projectPoint(float var0, float var1, float var2) { + float var3 = 1.0F / var2; + screenX = Mth.clamp((var0 * var3 * 0.5F + 0.5F) * frameWidth, -1000000.0F, 1000000.0F); + screenY = Mth.clamp(frameHeight - (var1 * var3 * 0.5F + 0.5F) * frameHeight, -1000000.0F, 1000000.0F); + } + + private static void pushHistory(float var0, float var1, float var2, float var3) { + int var4 = 0; + int var5 = 2021203511; + + while (true) { + switch (var5) { + case -1974160467: + var4 = historyCursor * (4); + HISTORY[var4] = var0; + HISTORY[var4 + 1] = var1; + HISTORY[var4 + 2] = var2; + HISTORY[var4 + 3] = var3; + historyCursor = (historyCursor + (1811267875 ^ -1811267874) + ((1811267875 & -1811267874) << 1)) + % ((-2108194047 | 2108194559) + (-2108194047 & 2108194559)); + if (historyCount < (-371978037 ^ 371978549) + ((-371978037 & 371978549) << 1)) { + var5 = 1594475422; + } else { + var5 = -833653167; + } + break; + case -833653167: + return; + case 1594475422: + historyCount += 1; + var5 = -833653167; + break; + case 2021203511: + default: + if (!trackHistory) { + var5 = 2056246191; + } else { + var5 = -1974160467; + } + break; + case 2056246191: + return; + } + } + } + + private static int historySpan(float var0) { + float var1 = Math.min(Math.max(var0, 0.1F), 0.99F); + int var2 = (int)Math.ceil(Math.log(0.045F) / Math.log(var1)); + return Math.min( + historyCount, + Math.min(Math.max(var2, (-1379374708 ^ 1379374709) + ((-1379374708 & 1379374709) << 1)), (278006391 | -278005879) + (278006391 & -278005879)) + ); + } +} diff --git a/src/main/java/defpackage/auf.java b/src/main/java/defpackage/auf.java new file mode 100644 index 0000000..1fb1e64 --- /dev/null +++ b/src/main/java/defpackage/auf.java @@ -0,0 +1,181 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderEvents; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.resources.Identifier; +import org.joml.Matrix4f; +import org.joml.Matrix4fc; + +public class auf { + private static atd fogProgram; + + public static void init() { + int var0 = 99453047; + + while (true) { + switch (var0) { + case -197311921: + return; + case 99453047: + default: + if (fogProgram == null) { + var0 = 2076243836; + } else { + var0 = -197311921; + } + break; + case 2076243836: + fogProgram = new atd( + Identifier.fromNamespaceAndPath( + "evolution", + "fog_custom/data" + ), + DefaultVertexFormat.POSITION_TEX_COLOR + ); + LevelRenderEvents.END_MAIN.register(auf::onWorldRender); + var0 = -197311921; + } + } + } + + public static void onWorldRender(LevelRenderContext var0) { + wq var1 = null; + int var2 = 0; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + int var7 = 0; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + RenderType var12 = null; + BufferBuilder var13 = null; + Matrix4fc var14 = null; + int var15 = 183513983; + + while (true) { + switch (var15) { + case -2051461660: + if (fogProgram == null) { + var15 = -1945753516; + } else { + var15 = -1998723516; + } + break; + case -1998723516: + if (aqg.mc.gameRenderer.mainRenderTarget().getDepthTextureView() == null) { + var15 = -1105883997; + } else { + var15 = -957310641; + } + break; + case -1945753516: + return; + case -1608341701: + fogProgram.setCameraPos((float)aqg.mc.getCameraEntity().getX(), (float)aqg.mc.getCameraEntity().getY(), (float)aqg.mc.getCameraEntity().getZ()); + var15 = 1651740591; + break; + case -1105883997: + return; + case -957310641: + fogProgram.use(); + var2 = var1.fogColor1.getIntColor(); + var3 = (var2 >> (-1448778939 | 1448778955) + (-1448778939 & 1448778955) & (189103642 ^ -189103387) + ((189103642 & -189103387) << 1)) / 255.0F; + var4 = (var2 >> (878581267 ^ -878581259) + ((878581267 & -878581259) << 1) & (-956087352 | 956087607) + (-956087352 & 956087607)) / 255.0F; + var5 = (var2 & (1776547292 ^ -1776547037) + ((1776547292 & -1776547037) << 1)) / 255.0F; + var6 = (var2 >> (-354492920 | 354492944) + (-354492920 & 354492944) & (-411694516 ^ 411694771) + ((-411694516 & 411694771) << 1)) / 255.0F; + var7 = var1.fogColor2.getIntColor(); + var8 = (var7 >> (1940960503 | -1940960487) + (1940960503 & -1940960487) & (-323634595 | 323634850) + (-323634595 & 323634850)) / 255.0F; + var9 = (var7 >> (704332155 | -704332147) + (704332155 & -704332147) & (-1778053927 ^ 1778054182) + ((-1778053927 & 1778054182) << 1)) / 255.0F; + var10 = (var7 & (1117301604 ^ -1117301349) + ((1117301604 & -1117301349) << 1)) / 255.0F; + var11 = (var7 >> (694807837 | -694807813) + (694807837 & -694807813) & (1646372301 ^ -1646372046) + ((1646372301 & -1646372046) << 1)) / 255.0F; + fogProgram.setResolution(aqg.mc.getWindow().getWidth(), aqg.mc.getWindow().getHeight()); + fogProgram.setTime( + (float)(System.currentTimeMillis() % ((8492232121311809309L | -8492232121311709309L) + (8492232121311809309L & -8492232121311709309L))) + / 1000.0F + ); + fogProgram.setSize(var1.fogStart.getCurrent(), var1.fogEnd.getCurrent()); + fogProgram.setRadius(var1.fogHeight.getCurrent(), var1.fogHeightFalloff.getCurrent(), var1.fogNoiseStrength.getCurrent(), 0.0F); + fogProgram.setHandColor(var3, var4, var5, var6); + fogProgram.setOutlineColor(var8, var9, var10, var11); + fogProgram.setRange(aqg.mc.options.getEffectiveRenderDistance() * 16.0F); + if (aqg.mc.getCameraEntity() != null) { + var15 = -1608341701; + } else { + var15 = -775285331; + } + break; + case -775285331: + fogProgram.setCameraPos(0.0F, 0.0F, 0.0F); + var15 = 1651740591; + break; + case 183513983: + default: + var1 = wq.INSTANCE; + if (var1.isEnabled()) { + var15 = 1188925468; + } else { + var15 = 1597990959; + } + break; + case 1188925468: + if (!var1.modeSetting.isEnable((-309101156 | 309101157) + (-309101156 & 309101157))) { + var15 = 1597990959; + } else { + var15 = -2051461660; + } + break; + case 1597990959: + return; + case 1651740591: + atd.bindTexture( + aqg.mc.gameRenderer.mainRenderTarget().getDepthTextureView(), (boolean)((((140362616 ^ -140362616) + ((140362616 & -140362616) << 1)) + ) != 0)); + var12 = arj.positionColor(); + var13 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var14 = new Matrix4f().identity(); + var13.addVertex(var14, -1.0F, 1.0F, 0.0F) + .setUv(0.0F, 0.0F) + .setColor( + 255, + 255, + 255, + (-393223268 ^ 393223523) + ((-393223268 & 393223523) << 1) + ); + var13.addVertex(var14, -1.0F, -1.0F, 0.0F) + .setUv(0.0F, 1.0F) + .setColor( + 255, + 255, + 255, + (2121411561 | -2121411306) + (2121411561 & -2121411306) + ); + var13.addVertex(var14, 1.0F, -1.0F, 0.0F) + .setUv(1.0F, 1.0F) + .setColor( + 255, + 255, + 255, + (-481701152 ^ 481701407) + ((-481701152 & 481701407) << 1) + ); + var13.addVertex(var14, 1.0F, 1.0F, 0.0F) + .setUv(1.0F, 0.0F) + .setColor( + 255, + 255, + 255, + (-901704988 ^ 901705243) + ((-901704988 & 901705243) << 1) + ); + fogProgram.draw(var12, var13.buildOrThrow()); + atd.clearBoundTexture(); + return; + } + } + } +} diff --git a/src/main/java/defpackage/aug.java b/src/main/java/defpackage/aug.java new file mode 100644 index 0000000..200d00f --- /dev/null +++ b/src/main/java/defpackage/aug.java @@ -0,0 +1,59 @@ +package defpackage; + +import net.minecraft.world.phys.Vec3; + +public final class aug { + Vec3 start; + Vec3 end; + int colorStart; + int colorEnd; + float width; + + public aug(Vec3 start, Vec3 end, int colorStart, int colorEnd, float width) { + this.start = start; + this.end = end; + this.colorStart = colorStart; + this.colorEnd = colorEnd; + this.width = width; + } + + public Vec3 start() { + return this.start; + } + public Vec3 end() { + return this.end; + } + public int colorStart() { + return this.colorStart; + } + public int colorEnd() { + return this.colorEnd; + } + public float width() { + return this.width; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof aug that)) { + return false; + } + if (!java.util.Objects.equals(this.start, that.start)) { return false; } + if (!java.util.Objects.equals(this.end, that.end)) { return false; } + if (this.colorStart != that.colorStart) { return false; } + if (this.colorEnd != that.colorEnd) { return false; } + if (Float.compare(this.width, that.width) != 0) { return false; } + return true; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(this.start, this.end, this.colorStart, this.colorEnd, this.width); + } + + @Override + public String toString() { + return "aug[" + "start=" + this.start + ", " + "end=" + this.end + ", " + "colorStart=" + this.colorStart + ", " + "colorEnd=" + this.colorEnd + ", " + "width=" + this.width + "]"; + } + +} diff --git a/src/main/java/defpackage/auh.java b/src/main/java/defpackage/auh.java new file mode 100644 index 0000000..f11f04d --- /dev/null +++ b/src/main/java/defpackage/auh.java @@ -0,0 +1,59 @@ +package defpackage; + +import net.minecraft.world.phys.Vec3; + +public final class auh { + Vec3 x; + Vec3 y; + Vec3 w; + Vec3 z; + int color; + + public auh(Vec3 x, Vec3 y, Vec3 w, Vec3 z, int color) { + this.x = x; + this.y = y; + this.w = w; + this.z = z; + this.color = color; + } + + public Vec3 x() { + return this.x; + } + public Vec3 y() { + return this.y; + } + public Vec3 w() { + return this.w; + } + public Vec3 z() { + return this.z; + } + public int color() { + return this.color; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof auh that)) { + return false; + } + if (!java.util.Objects.equals(this.x, that.x)) { return false; } + if (!java.util.Objects.equals(this.y, that.y)) { return false; } + if (!java.util.Objects.equals(this.w, that.w)) { return false; } + if (!java.util.Objects.equals(this.z, that.z)) { return false; } + if (this.color != that.color) { return false; } + return true; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(this.x, this.y, this.w, this.z, this.color); + } + + @Override + public String toString() { + return "auh[" + "x=" + this.x + ", " + "y=" + this.y + ", " + "w=" + this.w + ", " + "z=" + this.z + ", " + "color=" + this.color + "]"; + } + +} diff --git a/src/main/java/defpackage/aui.java b/src/main/java/defpackage/aui.java new file mode 100644 index 0000000..44a96b0 --- /dev/null +++ b/src/main/java/defpackage/aui.java @@ -0,0 +1,43 @@ +package defpackage; + +import java.util.List; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.shapes.VoxelShape; + +public final class aui { + VoxelShape shape; + List boxes; + + public aui(VoxelShape shape, List boxes) { + this.shape = shape; + this.boxes = boxes; + } + + public VoxelShape shape() { + return this.shape; + } + public List boxes() { + return this.boxes; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof aui that)) { + return false; + } + if (!java.util.Objects.equals(this.shape, that.shape)) { return false; } + if (!java.util.Objects.equals(this.boxes, that.boxes)) { return false; } + return true; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(this.shape, this.boxes); + } + + @Override + public String toString() { + return "aui[" + "shape=" + this.shape + ", " + "boxes=" + this.boxes + "]"; + } + +} diff --git a/src/main/java/defpackage/auj.java b/src/main/java/defpackage/auj.java new file mode 100644 index 0000000..18d958e --- /dev/null +++ b/src/main/java/defpackage/auj.java @@ -0,0 +1,49 @@ +package defpackage; + +import java.util.List; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.shapes.VoxelShape; + +public final class auj { + VoxelShape shape; + List lines; + List boxes; + + public auj(VoxelShape shape, List lines, List boxes) { + this.shape = shape; + this.lines = lines; + this.boxes = boxes; + } + + public VoxelShape shape() { + return this.shape; + } + public List lines() { + return this.lines; + } + public List boxes() { + return this.boxes; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof auj that)) { + return false; + } + if (!java.util.Objects.equals(this.shape, that.shape)) { return false; } + if (!java.util.Objects.equals(this.lines, that.lines)) { return false; } + if (!java.util.Objects.equals(this.boxes, that.boxes)) { return false; } + return true; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(this.shape, this.lines, this.boxes); + } + + @Override + public String toString() { + return "auj[" + "shape=" + this.shape + ", " + "lines=" + this.lines + ", " + "boxes=" + this.boxes + "]"; + } + +} diff --git a/src/main/java/defpackage/auk.java b/src/main/java/defpackage/auk.java new file mode 100644 index 0000000..e3a1a5c --- /dev/null +++ b/src/main/java/defpackage/auk.java @@ -0,0 +1,547 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.NotNull; +import org.joml.Matrix4f; +import org.joml.Vector3f; + +public final class auk implements aqg { + private static final List SHAPE_OUTLINES = new ArrayList<>(); + private static final List SHAPE_BOXES = new ArrayList<>(); + public static final List LINE_DEPTH = new ArrayList<>(); + public static final List LINE = new ArrayList<>(); + public static final List QUAD_DEPTH = new ArrayList<>(); + public static final List QUAD = new ArrayList<>(); + private static Matrix4f lastProjMat = new Matrix4f(); + private static Matrix4f lastModMat = new Matrix4f(); + private static Matrix4f lastWorldSpaceMatrix = new Matrix4f(); + private static final Identifier captureId = Identifier.parse("textures/capture.png"); + private static final Identifier bloom = Identifier.parse("textures/bloom.png"); + private static float espValue = 1.0F; + private static float espSpeed = 1.0F; + private static float prevEspValue; + private static float prevCircleStep; + private static float circleStep; + private static boolean flipSpeed; + + public static void onEventRender3D(PoseStack var0) { + Pose var1 = null; + Set var2 = null; + RenderType var3 = null; + int var4 = 1248530243; + + while (true) { + switch (var4) { + case -2041829411: + var2 = LINE_DEPTH.stream().map(var0x -> var0x.width).collect(Collectors.toCollection(LinkedHashSet::new)); + var3 = arj.linesDepthNoWrite(); + var2.forEach(var2x -> { + BufferBuilder var3x = arj.begin(var3); + LINE_DEPTH.stream().filter(var1xx -> { + int var3xx = 0; + int var2xx = -137932082; + + while (true) { + switch (var2xx) { + case -487812335: + return (boolean)((var3xx) != 0); + case -137932082: + default: + if (var1xx.width == var2x) { + var2xx = 265931099; + } else { + var2xx = 458451913; + } + break; + case 265931099: + var3xx = 1; + var2xx = -487812335; + break; + case 458451913: + var3xx = 0; + var2xx = -487812335; + } + } + }).forEach(var2xx -> vertexLine(var0, var3x, var2xx.start, var2xx.end, var2xx.colorStart, var2xx.colorEnd)); + arj.draw(var3, var3x); + }); + LINE_DEPTH.clear(); + var4 = 1853296033; + break; + case -1675902102: + if (!LINE_DEPTH.isEmpty()) { + var4 = -2041829411; + } else { + var4 = 1853296033; + } + break; + case -1429163925: + var2 = LINE.stream().map(var0x -> var0x.width).collect(Collectors.toCollection(LinkedHashSet::new)); + var3 = arj.lines(); + var2.forEach(var2x -> { + BufferBuilder var3x = arj.begin(var3); + LINE.stream().filter(var1xx -> { + int var3xx = 0; + int var2xx = 470152005; + + while (true) { + switch (var2xx) { + case -1151684319: + var3xx = 0; + var2xx = 807737034; + break; + case -961972970: + var3xx = 1; + var2xx = 807737034; + break; + case 470152005: + default: + if (var1xx.width == var2x) { + var2xx = -961972970; + } else { + var2xx = -1151684319; + } + break; + case 807737034: + return (boolean)((var3xx) != 0); + } + } + }).forEach(var2xx -> vertexLine(var0, var3x, var2xx.start, var2xx.end, var2xx.colorStart, var2xx.colorEnd)); + arj.draw(var3, var3x); + }); + LINE.clear(); + var4 = -1675902102; + break; + case 658345017: + return; + case 862865238: + RenderType var6 = arj.positionColorDepth(); + BufferBuilder var10 = arj.begin(var6); + QUAD_DEPTH.forEach(var2x -> vertexQuad(var1, var10, var2x.x, var2x.y, var2x.w, var2x.z, var2x.color)); + arj.draw(var6, var10); + QUAD_DEPTH.clear(); + var4 = 658345017; + break; + case 1248530243: + default: + var1 = var0.last(); + if (!QUAD.isEmpty()) { + var4 = 1419775713; + } else { + var4 = 1932885929; + } + break; + case 1419775713: + RenderType var5 = arj.positionColor(); + BufferBuilder var9 = arj.begin(var5); + QUAD.forEach(var2x -> vertexQuad(var1, var9, var2x.x, var2x.y, var2x.w, var2x.z, var2x.color)); + arj.draw(var5, var9); + QUAD.clear(); + var4 = 1932885929; + break; + case 1853296033: + if (!QUAD_DEPTH.isEmpty()) { + var4 = 862865238; + } else { + var4 = 658345017; + } + break; + case 1932885929: + if (!LINE.isEmpty()) { + var4 = -1429163925; + } else { + var4 = -1675902102; + } + } + } + } + + public static void drawShape(BlockPos var0, VoxelShape var1, int var2, float var3) { + drawShape( + var0, + var1, + var2, + var3, + (boolean)(((1)) != 0), + (boolean)((((1795682613 ^ -1795682613) + ((1795682613 & -1795682613) << 1)) + ) != 0)); + } + + public static void drawShape(BlockPos var0, VoxelShape var1, int var2, float var3, boolean var4, boolean var5) { + int var6 = -1661661308; + + while (true) { + switch (var6) { + case -1661661308: + default: + if (aqk.canSee(var1.bounds().move(var0))) { + var6 = 389929745; + } else { + var6 = -1210918227; + } + break; + case -1210918227: + return; + case 389929745: + SHAPE_BOXES.stream() + .filter(var1x -> var1x.shape.equals(var1)) + .findFirst() + .ifPresentOrElse( + var5x -> var5x.boxes + .forEach( + var5xx -> drawBox( + var5xx.move(var0), var2, var3, (boolean)(((1)) != 0), var4, var5 + ) + ), + () -> SHAPE_BOXES.add(new aui(var1, var1.toAabbs())) + ); + var6 = -1210918227; + } + } + } + + public static void drawShapeAlternative(BlockPos var0, VoxelShape var1, int var2, float var3, boolean var4, boolean var5) { + Vec3 var6 = null; + List var7 = null; + int var8 = -1038472566; + + while (true) { + switch (var8) { + case -1038472566: + default: + var6 = Vec3.atLowerCornerOf(var0); + if (aqk.canSee(var1.bounds().move(var6))) { + var8 = 767297889; + } else { + var8 = 826117606; + } + break; + case 767297889: + var7 = var1.toAabbs(); + SHAPE_OUTLINES.stream() + .filter(var1x -> var1x.boxes.equals(var7)) + .findFirst() + .ifPresentOrElse( + var5x -> { + var5x.boxes + .forEach( + var5xx -> drawBox( + var5xx.move(var6), var2, var3, (boolean)(((0)) != 0), var4, var5 + ) + ); + var5x.lines.forEach(var4xx -> drawLine(var4xx.start.add(var6), var4xx.end.add(var6), var2, var3, var5)); + }, + () -> { + ArrayList var1x = new ArrayList(); + var1.forAllEdges( + (var1xx, var3x, var5x, var7x, var9x, var11) -> var1x.add( + new aug( + new Vec3(var1xx, var3x, var5x), + new Vec3(var7x, var9x, var11), + 0, + 0, + 0.0F + ) + ) + ); + SHAPE_OUTLINES.add(new auj(var1, var1x, var1.toAabbs())); + } + ); + var8 = 826117606; + break; + case 826117606: + return; + } + } + } + + public static void drawBox(AABB var0, int var1, float var2) { + drawBox( + var0, + var1, + var2, + (boolean)(((1)) != 0), + (boolean)(((1)) != 0), + (boolean)((((676949619 | -676949619) + (676949619 & -676949619)) + ) != 0)); + } + + public static void drawBox(AABB var0, int var1, float var2, boolean var3, boolean var4, boolean var5) { + double var6 = 0.0; + double var8 = 0.0; + double var10 = 0.0; + double var12 = 0.0; + double var14 = 0.0; + double var16 = 0.0; + int var18 = 0; + int var19 = 2103882400; + + while (true) { + switch (var19) { + case 522904602: + var6 = var0.minX; + var8 = var0.minY; + var10 = var0.minZ; + var12 = var0.maxX; + var14 = var0.maxY; + var16 = var0.maxZ; + if (var4) { + var19 = 1083925216; + } else { + var19 = 525851292; + } + break; + case 525851292: + if (var3) { + var19 = 1681913710; + } else { + var19 = 1948893099; + } + break; + case 1083925216: + var18 = asv.multAlpha(var1, 0.1F); + drawQuad(new Vec3(var6, var8, var10), new Vec3(var12, var8, var10), new Vec3(var12, var8, var16), new Vec3(var6, var8, var16), var18, var5); + drawQuad(new Vec3(var6, var8, var10), new Vec3(var6, var14, var10), new Vec3(var12, var14, var10), new Vec3(var12, var8, var10), var18, var5); + drawQuad(new Vec3(var12, var8, var10), new Vec3(var12, var14, var10), new Vec3(var12, var14, var16), new Vec3(var12, var8, var16), var18, var5); + drawQuad(new Vec3(var6, var8, var16), new Vec3(var12, var8, var16), new Vec3(var12, var14, var16), new Vec3(var6, var14, var16), var18, var5); + drawQuad(new Vec3(var6, var8, var10), new Vec3(var6, var8, var16), new Vec3(var6, var14, var16), new Vec3(var6, var14, var10), var18, var5); + drawQuad(new Vec3(var6, var14, var10), new Vec3(var6, var14, var16), new Vec3(var12, var14, var16), new Vec3(var12, var14, var10), var18, var5); + var19 = 525851292; + break; + case 1681913710: + drawLine(var6, var8, var10, var12, var8, var10, var1, var2, var5); + drawLine(var12, var8, var10, var12, var8, var16, var1, var2, var5); + drawLine(var12, var8, var16, var6, var8, var16, var1, var2, var5); + drawLine(var6, var8, var16, var6, var8, var10, var1, var2, var5); + drawLine(var6, var8, var16, var6, var14, var16, var1, var2, var5); + drawLine(var6, var8, var10, var6, var14, var10, var1, var2, var5); + drawLine(var12, var8, var16, var12, var14, var16, var1, var2, var5); + drawLine(var12, var8, var10, var12, var14, var10, var1, var2, var5); + drawLine(var6, var14, var10, var12, var14, var10, var1, var2, var5); + drawLine(var12, var14, var10, var12, var14, var16, var1, var2, var5); + drawLine(var12, var14, var16, var6, var14, var16, var1, var2, var5); + drawLine(var6, var14, var16, var6, var14, var10, var1, var2, var5); + var19 = 1948893099; + break; + case 1948893099: + return; + case 2103882400: + default: + var0 = var0.inflate(0.001); + if (aqk.canSee(var0)) { + var19 = 522904602; + } else { + var19 = 1948893099; + } + } + } + } + + public static void vertexLine(@NotNull PoseStack var0, @NotNull VertexConsumer var1, Vec3 var2, Vec3 var3, int var4) { + vertexLine(var0, var1, var2.toVector3f(), var3.toVector3f(), var4, var4); + } + + public static void vertexLine(@NotNull PoseStack var0, @NotNull VertexConsumer var1, Vec3 var2, Vec3 var3, int var4, int var5) { + vertexLine(var0, var1, var2.toVector3f(), var3.toVector3f(), var4, var5); + } + + public static void vertexLine(@NotNull PoseStack var0, @NotNull VertexConsumer var1, Vector3f var2, Vector3f var3, int var4, int var5) { + var0.pushPose(); + Pose var6 = var0.last(); + Vector3f var7 = getNormal(var2.x, var2.y, var2.z, var3.x, var3.y, var3.z); + var1.addVertex(var6, var2).setColor(var4).setNormal(var6, var7.x(), var7.y(), var7.z()); + var1.addVertex(var6, var3).setColor(var5).setNormal(var6, var7.x(), var7.y(), var7.z()); + var0.popPose(); + } + + public static void vertexQuad(@NotNull Pose var0, @NotNull VertexConsumer var1, Vec3 var2, Vec3 var3, Vec3 var4, Vec3 var5, int var6) { + vertexQuad(var0, var1, var2.toVector3f(), var3.toVector3f(), var4.toVector3f(), var5.toVector3f(), var6); + } + + public static void vertexQuad(@NotNull Pose var0, @NotNull VertexConsumer var1, Vector3f var2, Vector3f var3, Vector3f var4, Vector3f var5, int var6) { + var1.addVertex(var0, var2).setColor(var6); + var1.addVertex(var0, var3).setColor(var6); + var1.addVertex(var0, var4).setColor(var6); + var1.addVertex(var0, var5).setColor(var6); + } + + @NotNull + public static Vector3f getNormal(float var0, float var1, float var2, float var3, float var4, float var5) { + float var6 = var3 - var0; + float var7 = var4 - var1; + float var8 = var5 - var2; + float var9 = Mth.sqrt(var6 * var6 + var7 * var7 + var8 * var8); + return new Vector3f(var6 / var9, var7 / var9, var8 / var9); + } + + public static void updateTargetEsp() { + float var1 = 0.0F; + int var0 = -67691284; + + while (true) { + switch (var0) { + case -1348539788: + var1 = espSpeed - 0.5F; + var0 = 463647403; + break; + case -816283860: + if (flipSpeed) { + var0 = -1348539788; + } else { + var0 = 942301396; + } + break; + case -67691284: + default: + prevEspValue = espValue; + espValue = espValue + espSpeed; + if (espSpeed > 25.0F) { + var0 = 1023108104; + } else { + var0 = 278790475; + } + break; + case 278790475: + if (espSpeed < -25.0F) { + var0 = 454594677; + } else { + var0 = -816283860; + } + break; + case 454594677: + flipSpeed = (boolean)(((0)) != 0); + var0 = -816283860; + break; + case 463647403: + espSpeed = var1; + prevCircleStep = circleStep; + circleStep += 0.15F; + return; + case 942301396: + var1 = espSpeed + 0.5F; + var0 = 463647403; + break; + case 1023108104: + flipSpeed = (boolean)(((1)) != 0); + var0 = 278790475; + } + } + } + + public static void drawLine(double var0, double var2, double var4, double var6, double var8, double var10, int var12, float var13, boolean var14) { + drawLine(new Vec3(var0, var2, var4), new Vec3(var6, var8, var10), var12, var13, var14); + } + + public static void drawLine(Vec3 var0, Vec3 var1, int var2, float var3, boolean var4) { + drawLine(var0, var1, var2, var2, var3, var4); + } + + public static void drawLine(Vec3 var0, Vec3 var1, int var2, int var3, float var4, boolean var5) { + Vec3 var6 = null; + aug var7 = null; + int var8 = -1298231689; + + while (true) { + switch (var8) { + case -1953236673: + LINE.add(var7); + var8 = -63668042; + break; + case -1298231689: + default: + var6 = mc.getEntityRenderDispatcher().camera.position(); + var7 = new aug(var0.subtract(var6), var1.subtract(var6), var2, var3, var4); + if (var5) { + var8 = 204446635; + } else { + var8 = -1953236673; + } + break; + case -63668042: + return; + case 204446635: + LINE_DEPTH.add(var7); + var8 = -63668042; + } + } + } + + public static void drawQuad(Vec3 var0, Vec3 var1, Vec3 var2, Vec3 var3, int var4, boolean var5) { + Vec3 var6 = null; + auh var7 = null; + int var8 = -246948671; + + while (true) { + switch (var8) { + case -367564216: + return; + case -246948671: + default: + var6 = mc.getEntityRenderDispatcher().camera.position(); + var7 = new auh(var0.subtract(var6), var1.subtract(var6), var2.subtract(var6), var3.subtract(var6), var4); + if (var5) { + var8 = 437521735; + } else { + var8 = 1474972259; + } + break; + case 437521735: + QUAD_DEPTH.add(var7); + var8 = -367564216; + break; + case 1474972259: + QUAD.add(var7); + var8 = -367564216; + } + } + } + + public static float getTickDelta() { + return mc.getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((1148122469 ^ -1148122469) + ((1148122469 & -1148122469) << 1))) != 0)); + } + + private auk() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } + + public static void setLastProjMat(Matrix4f var0) { + lastProjMat = var0; + } + + public static void setLastModMat(Matrix4f var0) { + lastModMat = var0; + } + + public static void setLastWorldSpaceMatrix(Matrix4f var0) { + lastWorldSpaceMatrix = var0; + } + + public static Matrix4f getLastProjMat() { + return lastProjMat; + } + + public static Matrix4f getLastModMat() { + return lastModMat; + } + + public static Matrix4f getLastWorldSpaceMatrix() { + return lastWorldSpaceMatrix; + } +} diff --git a/src/main/java/defpackage/aul.java b/src/main/java/defpackage/aul.java new file mode 100644 index 0000000..acffbbe --- /dev/null +++ b/src/main/java/defpackage/aul.java @@ -0,0 +1,1300 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.pipeline.TextureTarget; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.textures.GpuTextureView; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderEvents; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelTerrainRenderContext; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import net.minecraft.client.renderer.state.level.LevelRenderState; +import net.minecraft.resources.Identifier; +import net.minecraft.world.entity.Entity; +import org.jetbrains.annotations.Nullable; +import org.joml.Matrix4f; +import org.joml.Vector4f; + +public class aul { + private static final String NAMESPACE = "evolution"; + private static final String MODE_GRADIENT = "Gradient"; + private static final String MODE_SHADER = "Shader"; + private static final String SHADER_AURORA = "Aurora"; + private static final String SHADER_GALAXY = "Galaxy"; + private static final String SHADER_NEBULA = "Nebula"; + private static final String SHADER_CLOUDS = "Clouds"; + private static final String SHADER_BLACK_HOLE = "Black Hole"; + private static final String SHADER_STARFALL = "Starfall"; + private static final String SHADER_CAUSTICS = "Caustics"; + private static final String SHADER_STORM = "Storm"; + private static final String SHADER_END_BEAMS = "End Beams"; + private static final String SHADER_DREAMSCAPE = "Dreamscape"; + private static final aqt MENU_FALLBACK_STYLE = aqt.EMBER; + private static final float MENU_LOOP_SECONDS = 300.0F; + private static final float MENU_HORIZON_LEVEL = 0.07F; + private static final float MENU_TIME_SCALE = 0.12F; + private static final int SKY_SETTING_INDEX = 3; + public static final int NO_CUSTOM_SKY_FOG = -1; + private static final float FULL_DOME_ON = 1.0F; + private static final float FULL_DOME_OFF = 0.0F; + private static final String CONFLICT_ICON = "V"; + private static final String CONFLICT_TITLE = "Custom Sky"; + private static final String CONFLICT_STATUS = "off while a shaderpack is loaded"; + private static final float CAUSTICS_HORIZON_SCALE = 0.55F; + private static final int STORM_HORIZON_TONE = 2501165; + private static final float STORM_HORIZON_TINT = 0.3F; + private static final float GALAXY_DEEP_LEVEL = 0.045F; + private static final float NEBULA_DEEP_LEVEL = 0.05F; + private static final int END_BEAMS_HORIZON_TONE = 1710618; + private static final float END_BEAMS_HORIZON_TINT = 0.85F; + private static final float SKY_EXPOSURE = 2.0F; + private static final float SKY_SATURATION = 1.14F; + private static final float SKY_CONTRAST_BLEND = 0.22F; + private static final float LUMA_RED = 0.2126F; + private static final float LUMA_GREEN = 0.7152F; + private static final float LUMA_BLUE = 0.0722F; + private static final float CURVE_SCALE = 3.0F; + private static final float CURVE_SLOPE = 2.0F; + private static final String DEPTH_SAMPLER = "DepthTex"; + private static final String BACKDROP_TARGET_NAME = "evo_sky_backdrop"; + private static final GpuFormat BACKDROP_FORMAT = GpuFormat.RGBA16_FLOAT; + private static final int BACKDROP_DIVISOR = 4; + private static final int MIN_TARGET_SIZE = 1; + private static final int SCISSOR_PADDING = 1; + private static final int BACKDROP_SCISSOR_PADDING = 3; + private static final int CORNER_COUNT = 4; + private static final float[] CORNER_NDC_X; + private static final float[] CORNER_NDC_Y; + private static final float FAR_PLANE_NDC_Z = 0.0F; + private static final float HOMOGENEOUS_EPSILON = 1.0E-6F; + private static final float GALAXY_ROTATION_RATE = 0.02F; + private static final float TIME_WRAP_SECONDS = 3141.5928F; + private static final float MAX_FRAME_DELTA_SECONDS = 0.1F; + private static final float MILLIS_PER_SECOND = 1000.0F; + private static final int COLOR_CHANNEL_MAX = 255; + private static atd colorProgram; + private static atd galaxyProgram; + private static atd causticsProgram; + private static atd stormProgram; + private static atd menuProgram; + private static atd upsampleProgram; + private static atd galaxyBackdrop; + private static atd nebulaBackdrop; + private static atd cloudsBackdrop; + private static TextureTarget backdropTarget; + private static long lastRenderTime = System.currentTimeMillis(); + private static float accumulatedTime; + private static float menuTime; + private static final aun POST_SKY_FRAME = new aun(); + private static final float[] CORNER_RAYS = new float[12]; + private static final Matrix4f CACHED_PROJECTION = new Matrix4f(); + private static final Matrix4f CACHED_VIEW_ROTATION = new Matrix4f(); + private static final Matrix4f INVERSE_PROJECTION = new Matrix4f(); + private static final Matrix4f INVERSE_VIEW_ROTATION = new Matrix4f(); + private static final Vector4f CORNER_SCRATCH = new Vector4f(); + private static boolean cornerRaysValid; + private static boolean shaderPackConflict; + private static float skyMinNdcX; + private static float skyMinNdcY; + private static float skyMaxNdcX; + private static float skyMaxNdcY; + + public static void init() { + int var0 = 1141819473; + + while (true) { + switch (var0) { + case -1746651038: + colorProgram = createCompositeProgram("sky_color/data"); + galaxyProgram = createCompositeProgram("sky_galaxy/data"); + causticsProgram = createCompositeProgram("sky_caustics/data"); + stormProgram = createCompositeProgram("sky_storm/data"); + menuProgram = createCompositeProgram("sky_dreamscape/data"); + upsampleProgram = createCompositeProgram( + "sky_upsample/data" + ); + galaxyBackdrop = createBackdropProgram( + "sky_backdrop_galaxy/data" + ); + nebulaBackdrop = createBackdropProgram( + "sky_backdrop_nebula/data" + ); + cloudsBackdrop = createBackdropProgram( + "sky_backdrop_clouds/data" + ); + LevelRenderEvents.AFTER_OPAQUE_TERRAIN.register(aul::onWorldDraw); + return; + case -156143359: + return; + case 1141819473: + } + + if (colorProgram != null) { + var0 = -156143359; + } else { + var0 = -1746651038; + } + } + } + + private static atd createCompositeProgram(String var0) { + return new atd( + Identifier.fromNamespaceAndPath("evolution", var0), + DefaultVertexFormat.POSITION_TEX_COLOR, + (boolean)(((0)) != 0), + (boolean)((((718543454 | -718543454) + (718543454 & -718543454)) + ) != 0)); + } + + private static atd createBackdropProgram(String var0) { + return new atd( + Identifier.fromNamespaceAndPath("evolution", var0), + DefaultVertexFormat.POSITION_TEX_COLOR, + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + BlendFunction.TRANSLUCENT, + (boolean)(((1)) != 0), + BACKDROP_FORMAT + ); + } + + public static boolean isCustomSkyActive() { + int var1 = 0; + int var0 = 642484891; + + while (true) { + switch (var0) { + case -799734272: + var1 = 1; + var0 = 1772083876; + break; + case 621181138: + if (!aor.shaderPackInUse()) { + var0 = -799734272; + } else { + var0 = 659855751; + } + break; + case 642484891: + default: + if (isCustomSkySelected()) { + var0 = 621181138; + } else { + var0 = 659855751; + } + break; + case 659855751: + var1 = 0; + var0 = 1772083876; + break; + case 1772083876: + return (boolean)((var1) != 0); + } + } + } + + private static boolean isCustomSkySelected() { + wq var0 = null; + int var2 = 0; + int var1 = 552841259; + + while (true) { + switch (var1) { + case -1955982640: + return (boolean)((var2) != 0); + case -1181816296: + var2 = 0; + var1 = -1955982640; + break; + case 421191368: + if (var0.modeSetting.isEnable((-1313335716 | 1313335719) + (-1313335716 & 1313335719))) { + var1 = 452271798; + } else { + var1 = -1181816296; + } + break; + case 452271798: + var2 = 1; + var1 = -1955982640; + break; + case 552841259: + default: + var0 = wq.INSTANCE; + if (var0.isEnabled()) { + var1 = 421191368; + } else { + var1 = -1181816296; + } + } + } + } + + private static void updateShaderPackConflict() { + int var0 = 0; + int var2 = 0; + int var1 = 50948282; + + while (true) { + switch (var1) { + case -1629943270: + return; + case -1482513476: + var0 = var2; + if (var0 == shaderPackConflict) { + var1 = -1629943270; + } else { + var1 = 1489168569; + } + break; + case -1120529310: + le.getInstance() + .addCustomNotification( + "V", + "Custom Sky", + "off while a shaderpack is loaded" + ); + var1 = 582313601; + break; + case -881066072: + var2 = 0; + var1 = -1482513476; + break; + case -202219641: + if (aor.shaderPackInUse()) { + var1 = -163431421; + } else { + var1 = -881066072; + } + break; + case -163431421: + var2 = 1; + var1 = -1482513476; + break; + case 50948282: + default: + if (isCustomSkySelected()) { + var1 = -202219641; + } else { + var1 = -881066072; + } + break; + case 582313601: + return; + case 1489168569: + shaderPackConflict = (boolean)((var0) != 0); + if (var0 != 0) { + var1 = -1120529310; + } else { + var1 = 582313601; + } + } + } + } + + public static void onWorldDraw(LevelTerrainRenderContext var0) { + updateShaderPackConflict(); + if (!isCustomSkyActive()) { + releaseBackdropTarget(); + aum.release(); + } else { + int var1 = selectPostSkyType(); + atd var2 = var1 < 0 ? selectComposite() : null; + if (var2 != null || var1 >= 0) { + LevelRenderState var3 = var0.levelState(); + if (var3 != null) { + CameraRenderState var4 = var3.cameraRenderState; + if (var4 != null && var4.initialized && var4.projectionMatrix != null && var4.viewRotationMatrix != null) { + RenderTarget var5 = aqg.mc.gameRenderer.mainRenderTarget(); + if (var5.getDepthTextureView() != null) { + updateCornerRays(var4); + if (cornerRaysValid) { + wq var6 = wq.INSTANCE; + float var7 = advanceTime(var6.skyShaderSpeed.getCurrent()); + int var8 = aqg.mc.getWindow().getWidth(); + int var9 = aqg.mc.getWindow().getHeight(); + int var10 = (int)(var6.skyShaderAlpha.getCurrent() * 255.0F); + if (var1 >= 0) { + releaseBackdropTarget(); + renderPostSky(var6, var4, var5, var1, var7); + } else { + aum.release(); + boolean var11 = var6.skyFullSky.isEnabled(); + if (var11 || updateSkyBounds()) { + atd var12 = selectBackdrop(); + + try { + if (var12 != null) { + int var13 = Math.max( + var8 / (4), + (777372518 | -777372517) + (777372518 & -777372517) + ); + int var14 = Math.max( + var9 / (4), (-225734224 ^ 225734225) + ((-225734224 & 225734225) << 1) + ); + ensureBackdropTarget(var13, var14); + GpuTextureView var15 = atd.getWorldColorTarget(); + GpuTextureView var16 = atd.getWorldDepthTarget(); + + try { + atd.setWorldTarget(backdropTarget.getColorTextureView(), null); + var12.use(); + applyUniforms(var12, var6, var7, var13, var14, var11); + applySkyBounds(var11, var13, var14, (607614922 ^ -607614919) + ((607614922 & -607614919) << 1)); + drawSkyQuad(var12, (1457498964 ^ -1457498709) + ((1457498964 & -1457498709) << 1)); + } finally { + atd.setWorldTarget(var15, var16); + } + } else { + releaseBackdropTarget(); + } + + var2.use(); + applyUniforms(var2, var6, var7, var8, var9, var11); + if (var2 == menuProgram) { + applyMenuUniforms(var6); + } + + if (var12 != null) { + atd.bindTexture( + backdropTarget.getColorTextureView(), (boolean)((((1729724234 ^ -1729724233) + ((1729724234 & -1729724233) << 1)) + ) != 0)); + } + + atd.bindTexture( + "DepthTex", + var5.getDepthTextureView(), + (boolean)((((677803414 ^ -677803414) + ((677803414 & -677803414) << 1)) + ) != 0)); + applySkyBounds(var11, var8, var9, (1621050511 | -1621050510) + (1621050511 & -1621050510)); + drawDepthGatedComposite(var2, var5, var10); + } finally { + RenderSystem.disableScissorForRenderTypeDraws(); + } + } + } + } + } + } + } + } + } + } + + public static int customSkyFogColor() { + wq var0 = null; + int var1 = 0; + int var2 = -1714230924; + + while (true) { + switch (var2) { + case -1928679958: + return finishColor(compositeHorizonColor(var0)); + case -1753175068: + return tintColor(1710618, var0.skyColor1.getIntColor(), 0.85F); + case -1714230924: + default: + if (!isCustomSkyActive()) { + var2 = 388119028; + } else { + var2 = -564918811; + } + break; + case -1712199162: + return scaleColor(menuStartColor(var0), 0.07F * var0.skyShaderBrightness.getCurrent()); + case -854012816: + if (var1 >= 0) { + var2 = -441265583; + } else { + var2 = -62265991; + } + break; + case -564918811: + var0 = wq.INSTANCE; + var1 = selectPostSkyType(); + if (var1 == (708833095 | -708833092) + (708833095 & -708833092)) { + var2 = -1753175068; + } else { + var2 = -854012816; + } + break; + case -441265583: + return aum.horizonColor(var1); + case -62265991: + if (var0.isMenuSkyShader()) { + var2 = -1712199162; + } else { + var2 = -1928679958; + } + break; + case 388119028: + return -1; + } + } + } + + private static void applyMenuUniforms(wq var0) { + ng var1 = null; + int var2 = 1393099171; + + while (true) { + switch (var2) { + case 1393099171: + default: + menuProgram.setTime(menuTime); + menuProgram.setBackdrop(menuStyle(var0).shaderId(), var0.skyShaderBrightness.getCurrent(), 300.0F, var0.skyMenuSize.getCurrent()); + var1 = menuThemeAccent(var0); + if (var1 != null) { + var2 = 1415865346; + } else { + var2 = 2029712618; + } + break; + case 1415865346: + applyMenuColors(var1.start().getRGB(), var1.middle().getRGB(), var1.end().getRGB()); + return; + case 2029712618: + applyMenuColors(var0.skyColor1.getIntColor(), var0.skyColor2.getIntColor(), var0.skyColor3.getIntColor()); + return; + } + } + } + + private static void applyMenuColors(int var0, int var1, int var2) { + menuProgram.setTopLeftColor(red(var0), green(var0), blue(var0), 1.0F); + menuProgram.setBottomLeftColor(red(var1), green(var1), blue(var1), 1.0F); + menuProgram.setTopRightColor(red(var2), green(var2), blue(var2), 1.0F); + } + + private static int menuStartColor(wq var0) { + ng var1 = null; + int var3 = 0; + int var2 = 990915603; + + while (true) { + switch (var2) { + case -1753004339: + var3 = var1.start().getRGB(); + var2 = 883453443; + break; + case -708144344: + var3 = var0.skyColor1.getIntColor(); + var2 = 883453443; + break; + case 883453443: + return var3; + case 990915603: + default: + var1 = menuThemeAccent(var0); + if (var1 == null) { + var2 = -708144344; + } else { + var2 = -1753004339; + } + } + } + } + + @Nullable + private static ng menuThemeAccent(wq var0) { + mv var1 = null; + ng var3 = null; + int var2 = 682175508; + + while (true) { + switch (var2) { + case -1335448555: + var3 = var1.getAccent(); + var2 = 416078541; + break; + case -48288217: + var1 = bz.getInstance().getThemeManager().getCurrentTheme(); + if (var1 == null) { + var2 = 1240355966; + } else { + var2 = -1335448555; + } + break; + case 416078541: + return var3; + case 620748910: + return null; + case 682175508: + default: + if (!var0.skyMenuThemeColors.isEnabled()) { + var2 = 620748910; + } else { + var2 = -48288217; + } + break; + case 1240355966: + var3 = null; + var2 = 416078541; + } + } + } + + private static aqt menuStyle(wq var0) { + aqt[] var1 = null; + int var2 = 0; + int var3 = 0; + aqt var4 = null; + int var5 = -1586192987; + + while (true) { + switch (var5) { + case -1888283947: + if (var3 < var2) { + var5 = -1414044368; + } else { + var5 = -279878507; + } + break; + case -1586192987: + default: + var1 = aqt.values(); + var2 = var1.length; + var3 = 0; + var5 = -1888283947; + break; + case -1414044368: + var4 = var1[var3]; + if (var0.skyMenuStyle.is(var4.getLabel())) { + var5 = 1062685343; + } else { + var5 = 1741942867; + } + break; + case -279878507: + return MENU_FALLBACK_STYLE; + case 1062685343: + return var4; + case 1741942867: + var3++; + var5 = -1888283947; + } + } + } + + private static int compositeHorizonColor(wq var0) { + int var1 = 275559155; + + while (true) { + switch (var1) { + case -1794551697: + return var0.skyColor2.getIntColor(); + case -1737357503: + if (var0.skyShader.is("Storm")) { + var1 = 954917349; + } else { + var1 = 243356901; + } + break; + case 87493749: + return scaleColor(var0.skyColor2.getIntColor(), 0.045F); + case 243356901: + if (var0.skyShader.is("Galaxy")) { + var1 = 87493749; + } else { + var1 = 1967782347; + } + break; + case 275559155: + default: + if (!var0.skyMode.is("Shader")) { + var1 = 898394156; + } else { + var1 = 2032756383; + } + break; + case 898394156: + return var0.skyColor2.getIntColor(); + case 916424541: + return scaleColor(var0.skyColor2.getIntColor(), 0.05F); + case 954917349: + return tintColor(2501165, var0.skyColor1.getIntColor(), 0.3F); + case 1158566020: + return scaleColor(var0.skyColor1.getIntColor(), 0.55F); + case 1967782347: + if (var0.skyShader.is("Nebula")) { + var1 = 916424541; + } else { + var1 = -1794551697; + } + break; + case 2032756383: + if (var0.skyShader.is("Caustics")) { + var1 = 1158566020; + } else { + var1 = -1737357503; + } + } + } + } + + private static int finishColor(int var0) { + float var1 = red(var0) * 2.0F; + float var2 = green(var0) * 2.0F; + float var3 = blue(var0) * 2.0F; + float var4 = var1 * 0.2126F + var2 * 0.7152F + var3 * 0.0722F; + var1 = tonemapChannel(var1, var4); + var2 = tonemapChannel(var2, var4); + var3 = tonemapChannel(var3, var4); + float var5 = var1 * 0.2126F + var2 * 0.7152F + var3 * 0.0722F; + return packColor(gradeChannel(var1, var5), gradeChannel(var2, var5), gradeChannel(var3, var5)); + } + + private static float tonemapChannel(float var0, float var1) { + float var2 = var0 / (1.0F + var0); + float var3 = var0 / (1.0F + var1); + return var3 + (var2 - var3) * var2; + } + + private static float gradeChannel(float var0, float var1) { + float var2 = Math.clamp(var1 + (var0 - var1) * 1.14F, 0.0F, 1.0F); + float var3 = var2 * var2 * (3.0F - 2.0F * var2); + return var2 + (var3 - var2) * 0.22F; + } + + private static int scaleColor(int var0, float var1) { + return packColor(red(var0) * var1, green(var0) * var1, blue(var0) * var1); + } + + private static int tintColor(int var0, int var1, float var2) { + float var3 = 1.0F - var2; + return packColor(red(var0) * (var3 + red(var1) * var2), green(var0) * (var3 + green(var1) * var2), blue(var0) * (var3 + blue(var1) * var2)); + } + + private static int packColor(float var0, float var1, float var2) { + return channel(var0) << (-763227791 ^ 763227807) + ((-763227791 & 763227807) << 1) + | channel(var1) << (-959504368 | 959504376) + (-959504368 & 959504376) + | channel(var2); + } + + private static int channel(float var0) { + return Math.clamp( + Math.round(var0 * 255.0F), + 0, + (1881480942 ^ -1881480687) + ((1881480942 & -1881480687) << 1) + ); + } + + private static int selectPostSkyType() { + wq var0 = null; + int var1 = -1518315178; + + while (true) { + switch (var1) { + case -1518315178: + default: + var0 = wq.INSTANCE; + if (!var0.skyMode.is("Shader")) { + var1 = -290874666; + } else { + var1 = 187282291; + } + break; + case -576972519: + if (var0.skyShader.is("Aurora")) { + var1 = 948845765; + } else { + var1 = 652895928; + } + break; + case -379821914: + return 1; + case -290874666: + return -1; + case 187282291: + if (var0.skyShader.is("Black Hole")) { + var1 = 244578730; + } else { + var1 = 797994988; + } + break; + case 223672516: + return -1; + case 244578730: + return 0; + case 652895928: + if (var0.skyShader.is("End Beams")) { + var1 = 1154532280; + } else { + var1 = 223672516; + } + break; + case 797994988: + if (var0.skyShader.is("Starfall")) { + var1 = -379821914; + } else { + var1 = -576972519; + } + break; + case 948845765: + return 2; + case 1154532280: + return 3; + } + } + } + + private static void renderPostSky(wq var0, CameraRenderState var1, RenderTarget var2, int var3, float var4) { + POST_SKY_FRAME.targets(var2.getColorTextureView(), var2.getDepthTextureView()); + POST_SKY_FRAME.dimensions(var2.width, var2.height); + POST_SKY_FRAME.effect(var3, var4, var0.skyShaderBrightness.getCurrent(), var0.skyShaderAlpha.getCurrent(), var0.skyFullSky.isEnabled() ? 1.0F : 0.0F); + POST_SKY_FRAME.colors(var0.skyColor1.getIntColor(), var0.skyColor2.getIntColor(), var0.skyDualColor.isEnabled() ? 1.0F : 0.0F); + POST_SKY_FRAME.viewProjection(var1.projectionMatrix, var1.viewRotationMatrix); + + for (int var5 = 0; var5 < 4; var5++) { + int var6 = var5 * (3); + POST_SKY_FRAME.corner( + var5, + CORNER_RAYS[var6], + CORNER_RAYS[var6 + 1], + CORNER_RAYS[var6 + 2] + ); + } + + aum.render(POST_SKY_FRAME); + } + + private static boolean updateSkyBounds() { + float var0 = CORNER_RAYS[4]; + float var1 = CORNER_RAYS[7]; + float var2 = CORNER_RAYS[1]; + float var3 = (var1 - var0) * 0.5F; + float var4 = (var2 - var0) * 0.5F; + float var5 = var0 + var3 + var4; + skyMinNdcX = Float.MAX_VALUE; + skyMinNdcY = Float.MAX_VALUE; + skyMaxNdcX = -Float.MAX_VALUE; + skyMaxNdcY = -Float.MAX_VALUE; + + for (int var6 = 0; + var6 < 4; + var6++ + ) { + if (CORNER_RAYS[var6 * 4] + > 0.0F) { + includeNdcPoint(CORNER_NDC_X[var6], CORNER_NDC_Y[var6]); + } + } + + for (int var12 = 0; var12 < 4; var12++) { + int var7 = (var12 + (-774300175 ^ 774300176) + ((-774300175 & 774300176) << 1)) % ((-951096963 | 951096967) + (-951096963 & 951096967)); + float var8 = CORNER_RAYS[var12 * 4]; + float var9 = CORNER_RAYS[var7 * 4]; + if ((var8 > 0.0F ? 1: (192060704 | -192060704) + (192060704 & -192060704)) + != (var9 > 0.0F ? 1: (143981919 ^ -143981919) + ((143981919 & -143981919) << 1))) { + float var10 = var8 - var9; + if (!(Math.abs(var10) < 1.0E-6F)) { + float var11 = var8 / var10; + includeNdcPoint( + CORNER_NDC_X[var12] + (CORNER_NDC_X[var7] - CORNER_NDC_X[var12]) * var11, + CORNER_NDC_Y[var12] + (CORNER_NDC_Y[var7] - CORNER_NDC_Y[var12]) * var11 + ); + } + } + } + + if (!(skyMinNdcX > skyMaxNdcX)) { + return (boolean)(((1)) != 0); + } else { + return (boolean)(((var3 == 0.0F && var4 == 0.0F && var5 > 0.0F + ? 1: (507754964 | -507754964) + (507754964 & -507754964))) != 0); + } + } + + private static void includeNdcPoint(float var0, float var1) { + skyMinNdcX = Math.min(skyMinNdcX, var0); + skyMaxNdcX = Math.max(skyMaxNdcX, var0); + skyMinNdcY = Math.min(skyMinNdcY, var1); + skyMaxNdcY = Math.max(skyMaxNdcY, var1); + } + + private static void applySkyBounds(boolean var0, int var1, int var2, int var3) { + int var4 = 382903761; + + while (true) { + switch (var4) { + case -227781128: + applySkyScissor(var1, var2, var3); + return; + case 382903761: + default: + if (var0) { + var4 = 1117703384; + } else { + var4 = -227781128; + } + break; + case 1117703384: + RenderSystem.disableScissorForRenderTypeDraws(); + return; + } + } + } + + private static void applySkyScissor(int var0, int var1, int var2) { + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = -302419568; + + while (true) { + switch (var7) { + case -302419568: + default: + if (skyMinNdcX > skyMaxNdcX) { + var7 = 1091672282; + } else { + var7 = 1120016573; + } + break; + case 1091672282: + RenderSystem.disableScissorForRenderTypeDraws(); + return; + case 1120016573: + var3 = (int)Math.floor((skyMinNdcX * 0.5F + 0.5F) * var0) - var2; + var4 = (int)Math.ceil((skyMaxNdcX * 0.5F + 0.5F) * var0) + var2; + var5 = (int)Math.floor((skyMinNdcY * 0.5F + 0.5F) * var1) - var2; + var6 = (int)Math.ceil((skyMaxNdcY * 0.5F + 0.5F) * var1) + var2; + var3 = Math.max(var3, (-1964029846 | 1964029846) + (-1964029846 & 1964029846)); + var5 = Math.max(var5, (939373032 | -939373032) + (939373032 & -939373032)); + var4 = Math.min(var4, var0); + var6 = Math.min(var6, var1); + RenderSystem.enableScissorForRenderTypeDraws( + var3, + var5, + Math.max(var4 - var3, (-1709518369 | 1709518369) + (-1709518369 & 1709518369)), + Math.max(var6 - var5, (741053751 ^ -741053751) + ((741053751 & -741053751) << 1)) + ); + return; + } + } + } + + private static void drawDepthGatedComposite(atd var0, RenderTarget var1, int var2) { + GpuTextureView var3 = atd.getWorldColorTarget(); + GpuTextureView var4 = atd.getWorldDepthTarget(); + + try { + atd.setWorldTarget(var1.getColorTextureView(), null); + drawSkyQuad(var0, var2); + } finally { + atd.setWorldTarget(var3, var4); + } + } + + private static void drawSkyQuad(atd var0, int var1) { + RenderType var2 = null; + BufferBuilder var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = -1770010294; + + while (true) { + switch (var6) { + case -2125761968: + var0.draw(var2, var3.buildOrThrow()); + return; + case -1770010294: + default: + var2 = arj.positionColor(); + var3 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var4 = 0; + var6 = -239429995; + break; + case -239429995: + if (var4 < (-2137295004 | 2137295008) + (-2137295004 & 2137295008)) { + var6 = 788864183; + } else { + var6 = -2125761968; + } + break; + case 788864183: + var5 = var4 * (3); + var3.addVertex( + CORNER_RAYS[var5], + CORNER_RAYS[var5 + 1], + CORNER_RAYS[var5 + 2] + ) + .setUv(CORNER_NDC_X[var4], CORNER_NDC_Y[var4]) + .setColor( + 255, + 255, + 255, + var1 + ); + var4++; + var6 = -239429995; + } + } + } + + private static void applyUniforms(atd var0, wq var1, float var2, int var3, int var4, boolean var5) { + var0.setTime(var2); + var0.setResolution(var3, var4); + var0.setSkyFullDome(var5 ? 1.0F : 0.0F); + int var6 = var1.skyColor1.getIntColor(); + int var7 = var1.skyColor2.getIntColor(); + var0.setTopLeftColor(red(var6), green(var6), blue(var6), 1.0F); + var0.setBottomRightColor(red(var7), green(var7), blue(var7), 1.0F); + float var8 = var2 * 0.02F; + var0.setSkyRotation((float)Math.sin(var8), (float)Math.cos(var8)); + Entity var9 = aqg.mc.getCameraEntity(); + if (var9 == null) { + var0.setCameraPos(0.0F, 0.0F, 0.0F); + } else { + var0.setCameraPos((float)var9.getX(), (float)var9.getY(), (float)var9.getZ()); + } + } + + private static void ensureBackdropTarget(int var0, int var1) { + int var2 = -1429119359; + + while (true) { + switch (var2) { + case -1429119359: + default: + if (backdropTarget == null) { + var2 = -1328007516; + } else { + var2 = -1416123816; + } + break; + case -1416123816: + if (backdropTarget.width == var0) { + var2 = 879915449; + } else { + var2 = 1537536664; + } + break; + case -1328007516: + backdropTarget = new TextureTarget( + "evo_sky_backdrop", + var0, + var1, + (boolean)(((0)) != 0), + BACKDROP_FORMAT + ); + var2 = 1934165060; + break; + case 879915449: + if (backdropTarget.height != var1) { + var2 = 1537536664; + } else { + var2 = 1934165060; + } + break; + case 1537536664: + backdropTarget.resize(var0, var1); + var2 = 1934165060; + break; + case 1934165060: + return; + } + } + } + + private static void releaseBackdropTarget() { + int var0 = 2029935421; + + while (true) { + switch (var0) { + case -1054407728: + backdropTarget.destroyBuffers(); + backdropTarget = null; + return; + case -284624829: + return; + case 2029935421: + } + + if (backdropTarget == null) { + var0 = -284624829; + } else { + var0 = -1054407728; + } + } + } + + private static atd selectComposite() { + wq var0 = null; + int var1 = -3607411; + + while (true) { + switch (var1) { + case -2125631379: + if (var0.skyShader.is("Galaxy")) { + var1 = -2113064722; + } else { + var1 = -2669186; + } + break; + case -2113064722: + return galaxyProgram; + case -1283438756: + if (var0.skyShader.is("Storm")) { + var1 = 1178175057; + } else { + var1 = -1072901507; + } + break; + case -1094786106: + return upsampleProgram; + case -1072901507: + if (!var0.skyShader.is("Nebula")) { + var1 = 1957682689; + } else { + var1 = -1094786106; + } + break; + case -492688613: + return menuProgram; + case -331055353: + return null; + case -3607411: + default: + var0 = wq.INSTANCE; + if (var0.skyMode.is("Gradient")) { + var1 = 800626736; + } else { + var1 = 1571868762; + } + break; + case -2669186: + if (var0.skyShader.is("Caustics")) { + var1 = 890427527; + } else { + var1 = -1283438756; + } + break; + case 155892973: + return null; + case 800626736: + return colorProgram; + case 890427527: + return causticsProgram; + case 1178175057: + return stormProgram; + case 1571868762: + if (!var0.skyMode.is("Shader")) { + var1 = -331055353; + } else { + var1 = 2100372174; + } + break; + case 1957682689: + if (var0.skyShader.is("Clouds")) { + var1 = -1094786106; + } else { + var1 = 155892973; + } + break; + case 2100372174: + if (var0.skyShader.is("Dreamscape")) { + var1 = -492688613; + } else { + var1 = -2125631379; + } + } + } + } + + private static atd selectBackdrop() { + wq var0 = null; + int var1 = -2079793236; + + while (true) { + switch (var1) { + case -2079793236: + default: + var0 = wq.INSTANCE; + if (!var0.skyMode.is("Shader")) { + var1 = -1350511620; + } else { + var1 = -1338051151; + } + break; + case -1899390399: + if (var0.skyShader.is("Clouds")) { + var1 = 1137472366; + } else { + var1 = 1784889562; + } + break; + case -1350511620: + return null; + case -1338051151: + if (var0.skyShader.is("Galaxy")) { + var1 = -1276560237; + } else { + var1 = 990814260; + } + break; + case -1276560237: + return galaxyBackdrop; + case -302665436: + return nebulaBackdrop; + case 990814260: + if (var0.skyShader.is("Nebula")) { + var1 = -302665436; + } else { + var1 = -1899390399; + } + break; + case 1137472366: + return cloudsBackdrop; + case 1784889562: + return null; + } + } + } + + private static void updateCornerRays(CameraRenderState var0) { + int var1 = 0; + int var2 = 0; + int var3 = -267439346; + + while (true) { + switch (var3) { + case -1538143387: + var2 = var1 * (3); + CORNER_RAYS[var2] = CORNER_SCRATCH.x; + CORNER_RAYS[var2 + 1] = CORNER_SCRATCH.y; + CORNER_RAYS[var2 + 2] = CORNER_SCRATCH.z; + var1++; + var3 = -1277031498; + break; + case -1277031498: + if (var1 < (-1949924200 | 1949924204) + (-1949924200 & 1949924204)) { + var3 = -657718409; + } else { + var3 = 1607362889; + } + break; + case -799057168: + if (CACHED_PROJECTION.equals(var0.projectionMatrix)) { + var3 = -327122265; + } else { + var3 = 758933448; + } + break; + case -657718409: + CORNER_SCRATCH.set(CORNER_NDC_X[var1], CORNER_NDC_Y[var1], 0.0F, 1.0F); + CORNER_SCRATCH.mul(INVERSE_PROJECTION); + CORNER_SCRATCH.mul(INVERSE_VIEW_ROTATION); + if (Math.abs(CORNER_SCRATCH.w) > 1.0E-6F) { + var3 = 1751303114; + } else { + var3 = -1538143387; + } + break; + case -327122265: + if (CACHED_VIEW_ROTATION.equals(var0.viewRotationMatrix)) { + var3 = 1106420794; + } else { + var3 = 758933448; + } + break; + case -267439346: + default: + if (cornerRaysValid) { + var3 = -799057168; + } else { + var3 = 758933448; + } + break; + case 758933448: + CACHED_PROJECTION.set(var0.projectionMatrix); + CACHED_VIEW_ROTATION.set(var0.viewRotationMatrix); + CACHED_PROJECTION.invert(INVERSE_PROJECTION); + CACHED_VIEW_ROTATION.invert(INVERSE_VIEW_ROTATION); + var1 = 0; + var3 = -1277031498; + break; + case 1106420794: + return; + case 1607362889: + cornerRaysValid = (boolean)(((1)) != 0); + return; + case 1751303114: + CORNER_SCRATCH.div(CORNER_SCRATCH.w); + var3 = -1538143387; + } + } + } + + private static float advanceTime(float var0) { + long var1 = (-3837336602797094074L ^ 3837336602797094074L) + ((-3837336602797094074L & 3837336602797094074L) << 1); + float var3 = 0.0F; + int var4 = 2097158478; + + while (true) { + switch (var4) { + case -955845841: + var3 = 0.0F; + var4 = 1740985623; + break; + case 1109608505: + if (var3 > 0.1F) { + var4 = 1471746088; + } else { + var4 = 1740985623; + } + break; + case 1471746088: + var3 = 0.1F; + var4 = 1740985623; + break; + case 1740985623: + accumulatedTime = (accumulatedTime + var3 * var0) % 3141.5928F; + menuTime = (menuTime + var3 * var0 * 0.12F) % 300.0F; + return accumulatedTime; + case 2097158478: + default: + var1 = System.currentTimeMillis(); + var3 = (float)(var1 - lastRenderTime) / 1000.0F; + lastRenderTime = var1; + if (var3 < 0.0F) { + var4 = -955845841; + } else { + var4 = 1109608505; + } + } + } + } + + private static float red(int var0) { + return (var0 >> (-1772942156 ^ 1772942172) + ((-1772942156 & 1772942172) << 1) & (-274712098 ^ 274712353) + ((-274712098 & 274712353) << 1)) / 255.0F; + } + + private static float green(int var0) { + return (var0 >> (711788320 | -711788312) + (711788320 & -711788312) & (-1269387157 | 1269387412) + (-1269387157 & 1269387412)) / 255.0F; + } + + private static float blue(int var0) { + return (var0 & (1104108027 ^ -1104107772) + ((1104108027 & -1104107772) << 1)) / 255.0F; + } + + static { + float[] var10000 = new float[4]; + var10000[0] = -1.0F; + var10000[1] = -1.0F; + var10000[2] = 1.0F; + var10000[3] = 1.0F; + CORNER_NDC_X = var10000; + var10000 = new float[4]; + var10000[0] = 1.0F; + var10000[1] = -1.0F; + var10000[2] = -1.0F; + var10000[3] = 1.0F; + CORNER_NDC_Y = var10000; + } +} diff --git a/src/main/java/defpackage/aum.java b/src/main/java/defpackage/aum.java new file mode 100644 index 0000000..e04945f --- /dev/null +++ b/src/main/java/defpackage/aum.java @@ -0,0 +1,1402 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.buffers.GpuBuffer; +import com.mojang.blaze3d.pipeline.BindGroupLayout; +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.pipeline.BindGroupLayout.Builder; +import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet; +import com.mojang.blaze3d.platform.NativeImage; +import com.mojang.blaze3d.shaders.UniformType; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.GpuDevice; +import com.mojang.blaze3d.systems.RenderPass; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.textures.FilterMode; +import com.mojang.blaze3d.textures.GpuSampler; +import com.mojang.blaze3d.textures.GpuTexture; +import com.mojang.blaze3d.textures.GpuTextureView; +import java.nio.ByteBuffer; +import java.util.Optional; +import java.util.Random; +import java.util.function.Supplier; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.resources.Identifier; +import org.joml.Matrix4f; +import org.lwjgl.system.MemoryStack; + +public final class aum { + public static final int TYPE_BLACK_HOLE = 0; + public static final int TYPE_STARFALL = 1; + public static final int TYPE_AURORA = 2; + public static final int TYPE_END_BEAMS = 3; + private static final String NAMESPACE = "evolution"; + private static final String UNIFORM_BLOCK = "SkyParams"; + private static final String BLOOM_UNIFORM_BLOCK = "BloomParams"; + private static final String SAMPLER_NOISE = "NoiseTex"; + private static final String SAMPLER_HISTORY = "History"; + private static final String SAMPLER_DEPTH = "DepthTex"; + private static final String SAMPLER_SKY = "Sky"; + private static final String SAMPLER_SOURCE = "Source"; + private static final String SAMPLER_BLOOM_PREFIX = "Bloom"; + private static final int TYPE_COUNT = 4; + private static final int HISTORY_SLOTS = 2; + private static final int BLOOM_LEVELS = 6; + private static final int UNIFORM_SIZE = 208; + private static final int BLOOM_UNIFORM_SIZE = 16; + private static final int OFFSET_CORNERS = 0; + private static final int OFFSET_MISC = 64; + private static final int OFFSET_COLOR_PRIMARY = 80; + private static final int OFFSET_COLOR_SECONDARY = 96; + private static final int OFFSET_TAA = 112; + private static final int OFFSET_PREV_VIEW_PROJ = 128; + private static final int OFFSET_EXTRA = 192; + private static final int FLOAT_SIZE = 4; + private static final int VECTOR_SIZE = 16; + private static final int MARCH_SCALE_HALF = 2; + private static final int MARCH_SCALE_FULL = 1; + private static final int MIN_TARGET_SIZE = 1; + private static final int BLOOM_DIVISOR = 2; + private static final int BLACK_HOLE_HORIZON_COLOR = 0; + private static final int STARFALL_HORIZON_COLOR = 197642; + private static final int AURORA_HORIZON_COLOR = 724247; + private static final int END_BEAMS_HORIZON_COLOR = 1710618; + private static final float BLOOM_THRESHOLD = 0.28F; + private static final int TAA_SEQUENCE_LENGTH = 8; + private static final int HALTON_BASE_X = 2; + private static final int HALTON_BASE_Y = 3; + private static final float JITTER_CENTER = 0.5F; + private static final float GOLDEN_RATIO_FRACTION = 0.618034F; + private static final int FRAME_INDEX_MASK = 1073741823; + private static final int NOISE_SIZE = 256; + private static final int NOISE_SHIFT_X = 37; + private static final int NOISE_SHIFT_Y = 17; + private static final long NOISE_SEED = 1592639215L; + private static final long SMOOTH_NOISE_SEED = 884197331L; + private static final int SMOOTH_NOISE_OCTAVES = 4; + private static final int SMOOTH_NOISE_BASE_FREQUENCY = 4; + private static final float SMOOTH_NOISE_GAIN = 0.5F; + private static final float SMOOTHSTEP_SCALE = 3.0F; + private static final float SMOOTHSTEP_SLOPE = 2.0F; + private static final int NOISE_CHANNEL_RANGE = 256; + private static final int NOISE_OPAQUE = -16777216; + private static final int NOISE_SHIFT_BLUE = 16; + private static final int NOISE_SHIFT_GREEN = 8; + private static final int MARCH_TEXTURE_USAGE = 12; + private static final int NOISE_TEXTURE_USAGE = 5; + private static final int UNIFORM_USAGE = 136; + private static final GpuFormat MARCH_FORMAT = GpuFormat.RGBA8_UNORM; + private static final GpuFormat COMPOSITE_FORMAT = GpuFormat.RGBA8_UNORM; + private static final int TEXTURE_DEPTH = 1; + private static final int TEXTURE_MIP_LEVELS = 1; + private static final Identifier VERTEX_SHADER = id( + "core/customsky/fullscreen" + ); + private static final Identifier COMPOSITE_SHADER = id( + "core/customsky/composite" + ); + private static final Identifier BLOOM_SHADER = id( + "core/customsky/bloom_down" + ); + private static final Identifier[] MARCH_SHADERS; + private static final Identifier COMPOSITE_PIPELINE_ID = id( + "pipeline/customsky/composite" + ); + private static final Identifier BLOOM_PIPELINE_ID = id( + "pipeline/customsky/bloom_down" + ); + private static final Identifier[] MARCH_PIPELINE_IDS; + private static final Supplier UNIFORM_LABEL = () -> "evolution_customsky_uniforms"; + private static final Supplier BLOOM_UNIFORM_LABEL = () -> "evolution_customsky_bloom_uniforms"; + private static final Supplier NOISE_LABEL = () -> "evolution_customsky_noise"; + private static final Supplier COMPOSITE_PASS_LABEL = () -> "evolution_customsky_composite"; + private static final Supplier[] MARCH_PASS_LABELS = marchPassLabels(); + private static final Supplier[] BLOOM_PASS_LABELS = bloomPassLabels(); + private static final Supplier[] MARCH_TEXTURE_LABELS = marchTextureLabels(); + private static final Supplier[] BLOOM_TEXTURE_LABELS = bloomTextureLabels(); + private static final String[] BLOOM_SAMPLER_NAMES = bloomSamplerNames(); + private static final String PIPELINE_FAILURE = "custom sky pipeline setup failed"; + private static final String FRAME_FAILURE = "custom sky frame failed"; + private static final int FULLSCREEN_VERTEX_COUNT = 3; + private static final int INSTANCE_COUNT = 1; + private static final int FIRST_VERTEX = 0; + private static final int FIRST_INSTANCE = 0; + private static final Matrix4f PREVIOUS_VIEW_PROJECTION = new Matrix4f(); + private static final RenderPipeline[] MARCH_PIPELINES = new RenderPipeline[4]; + private static final GpuTexture[] MARCH_TEXTURES = new GpuTexture[2]; + private static final GpuTextureView[] MARCH_TEXTURE_VIEWS = new GpuTextureView[2]; + private static final GpuTexture[] BLOOM_TEXTURES = new GpuTexture[6]; + private static final GpuTextureView[] BLOOM_TEXTURE_VIEWS = new GpuTextureView[6]; + private static final int[] BLOOM_WIDTHS = new int[6]; + private static final int[] BLOOM_HEIGHTS = new int[6]; + private static RenderPipeline compositePipeline; + private static RenderPipeline bloomPipeline; + private static GpuBuffer uniformBuffer; + private static GpuBuffer bloomUniformBuffer; + private static GpuTexture noiseTexture; + private static GpuTextureView noiseTextureView; + private static int fullWidth = -1; + private static int fullHeight = -1; + private static int marchWidth = -1; + private static int marchHeight = -1; + private static int currentScale = -1; + private static int frameIndex; + private static float taaSequence; + private static int lastType = -1; + private static boolean historyValid; + private static boolean disabledAfterError; + + private aum() { + } + + public static void render(aun var0) { + if (!disabledAfterError && var0 != null && var0.isValid()) { + int var1 = Math.clamp(var0.type(), 0, (62394479 | -62394476) + (62394479 & -62394476)); + boolean var2 = isTemporal(var1); + if (ensurePipelines(var1)) { + if (ensureTargets(var0.width(), var0.height(), marchScale(var1))) { + if (lastType != var1) { + historyValid = (boolean)(((0)) != 0); + lastType = var1; + } + + int var3 = frameIndex & 1; + int var4 = (203276151 | -203276150) + (203276151 & -203276150) - var3; + int var5 = var2 && historyValid + ? 1: 0; + + try { + CommandEncoder var6 = RenderSystem.getDevice().createCommandEncoder(); + writeSkyUniforms(var6, var0, var1, var2, (boolean)((var5) != 0)); + marchSky(var6, var1, var2, var3, var4); + buildBloom(var6, MARCH_TEXTURE_VIEWS[var3], isHighDynamicRange(var1)); + composite(var6, var0, var3); + PREVIOUS_VIEW_PROJECTION.set(var0.viewProjection()); + historyValid = (boolean)(((1)) != 0); + frameIndex = frameIndex + 1; + taaSequence = (taaSequence + 0.618034F) % 1.0F; + } catch (Throwable var7) { + fail("custom sky frame failed", var7); + } + } + } + } + } + + public static void release() { + int var0 = 1159983750; + + while (true) { + switch (var0) { + case -1173452807: + closeTargets(); + return; + case 318160795: + return; + case 1159983750: + } + + if (!isAllocated()) { + var0 = 318160795; + } else { + var0 = -1173452807; + } + } + } + + public static boolean isAllocated() { + int var1 = 0; + int var0 = -200129105; + + while (true) { + switch (var0) { + case -200129105: + default: + if (MARCH_TEXTURES[0] != null) { + var0 = 1963986089; + } else { + var0 = 114590642; + } + break; + case 114590642: + var1 = 0; + var0 = 546852377; + break; + case 546852377: + return (boolean)((var1) != 0); + case 1963986089: + var1 = 1; + var0 = 546852377; + } + } + } + + public static int horizonColor(int var0) { + return switch (var0) { + case 1 -> (-559738271 | 559935913) + (-559738271 & 559935913); + case 2 -> (2054331158 ^ -2053606911) + ((2054331158 & -2053606911) << 1); + case 3 -> (416245259 ^ -414534641) + ((416245259 & -414534641) << 1); + default -> 0; + }; + } + + public static int marchScale(int var0) { + int var2 = 0; + int var1 = 337449720; + + while (true) { + switch (var1) { + case -297803943: + var2 = 2; + var1 = 1363252915; + break; + case 337449720: + default: + if (var0 == (96521583 | -96521582) + (96521583 & -96521582)) { + var1 = 1441778304; + } else { + var1 = -297803943; + } + break; + case 1363252915: + return var2; + case 1441778304: + var2 = 1; + var1 = 1363252915; + } + } + } + + private static boolean isTemporal(int var0) { + int var2 = 0; + int var1 = -89089349; + + while (true) { + switch (var1) { + case -89089349: + default: + if (var0 != 0) { + var1 = 1336200741; + } else { + var1 = 1918681741; + } + break; + case 367687797: + return (boolean)((var2) != 0); + case 1336200741: + if (var0 == (-50181637 ^ 50181640) + ((-50181637 & 50181640) << 1)) { + var1 = 1918681741; + } else { + var1 = 1976649844; + } + break; + case 1918681741: + var2 = 1; + var1 = 367687797; + break; + case 1976649844: + var2 = 0; + var1 = 367687797; + } + } + } + + private static boolean isHighDynamicRange(int var0) { + int var2 = 0; + int var1 = 19097437; + + while (true) { + switch (var1) { + case -974384238: + var2 = 1; + var1 = 758740088; + break; + case 19097437: + default: + if (var0 != (1357149996 | -1357149995) + (1357149996 & -1357149995)) { + var1 = -974384238; + } else { + var1 = 1885725001; + } + break; + case 758740088: + return (boolean)((var2) != 0); + case 1885725001: + var2 = 0; + var1 = 758740088; + } + } + } + + private static void writeSkyUniforms(CommandEncoder var0, aun var1, int var2, boolean var3, boolean var4) { + float var5 = halton( + frameIndex % 9, + (2145908899 | -2145908897) + (2145908899 & -2145908897) + ) + - 0.5F; + float var6 = halton( + frameIndex % 9, + (2015067364 ^ -2015067361) + ((2015067364 & -2015067361) << 1) + ) + - 0.5F; + MemoryStack var7 = MemoryStack.stackPush(); + + try { + ByteBuffer var8 = var7.calloc((1174634576 ^ -1174634368) + ((1174634576 & -1174634368) << 1)); + float[] var9 = var1.cornerRays(); + + for (int var10 = 0; + var10 < 4; + var10++ + ) { + int var11 = var10 * (3); + int var12 = (960192555 ^ -960192555) + ((960192555 & -960192555) << 1) + var10 * (16); + var8.putFloat(var12, var9[var11]); + var8.putFloat( + var12 + 4, var9[var11 + 1] + ); + var8.putFloat( + var12 + 8, var9[var11 + 2] + ); + var8.putFloat(var12 + 12, 0.0F); + } + + var8.putFloat(64, var1.time()); + var8.putFloat(68, var1.width()); + var8.putFloat(72, var1.height()); + var8.putFloat(76, var1.brightness()); + var8.putFloat(80, var1.primaryRed()); + var8.putFloat(84, var1.primaryGreen()); + var8.putFloat(88, var1.primaryBlue()); + var8.putFloat(92, var1.gradientMode()); + var8.putFloat(96, var1.secondaryRed()); + var8.putFloat(100, var1.secondaryGreen()); + var8.putFloat(104, var1.secondaryBlue()); + var8.putFloat(108, var2); + var8.putFloat(112, var3 ? var5 : 0.0F); + var8.putFloat(116, var3 ? var6 : 0.0F); + var8.putFloat(120, var4 ? 1.0F : 0.0F); + var8.putFloat(124, taaSequence); + PREVIOUS_VIEW_PROJECTION.get(128, var8); + var8.putFloat(192, var1.alpha()); + var8.putFloat(196, var1.fullDome()); + var8.position((-1738352933 | 1738352933) + (-1738352933 & 1738352933)); + var0.writeToBuffer( + uniformBuffer.slice( + (950973706263183215L | -950973706263183215L) + (950973706263183215L & -950973706263183215L), + (4073704451756900524L | -4073704451756900316L) + (4073704451756900524L & -4073704451756900316L) + ), + var8 + ); + } catch (Throwable var14) { + if (var7 != null) { + try { + var7.close(); + } catch (Throwable var13) { + var14.addSuppressed(var13); + } + } + + throw var14; + } + + if (var7 != null) { + var7.close(); + } + } + + private static void marchSky(CommandEncoder var0, int var1, boolean var2, int var3, int var4) { + RenderPass var5 = var0.createRenderPass(MARCH_PASS_LABELS[var1], MARCH_TEXTURE_VIEWS[var3], Optional.empty()); + + try { + var5.setPipeline(MARCH_PIPELINES[var1]); + RenderSystem.bindDefaultUniforms(var5); + var5.setUniform("SkyParams", uniformBuffer); + if (var2) { + var5.bindTexture("NoiseTex", noiseTextureView, repeatSampler()); + var5.bindTexture("History", MARCH_TEXTURE_VIEWS[var4], linearSampler()); + } + + drawFullscreen(var5); + } catch (Throwable var9) { + if (var5 != null) { + try { + var5.close(); + } catch (Throwable var8) { + var9.addSuppressed(var8); + } + } + + throw var9; + } + + if (var5 != null) { + var5.close(); + } + } + + private static void buildBloom(CommandEncoder var0, GpuTextureView var1, boolean var2) { + GpuTextureView var3 = var1; + int var4 = marchWidth; + int var5 = marchHeight; + + for (int var6 = 0; var6 < 6; var6++) { + float var7 = !var2 && var6 == 0 ? 0.28F : 0.0F; + MemoryStack var8 = MemoryStack.stackPush(); + + try { + ByteBuffer var9 = var8.calloc((-930139542 ^ 930139558) + ((-930139542 & 930139558) << 1)); + var9.putFloat(0, 1.0F / var4); + var9.putFloat(4, 1.0F / var5); + var9.putFloat(8, var7); + var9.putFloat(12, var2 ? 1.0F : 0.0F); + var9.position((1509268830 | -1509268830) + (1509268830 & -1509268830)); + var0.writeToBuffer( + bloomUniformBuffer.slice( + (-2100441742672723926L | 2100441742672723926L) + (-2100441742672723926L & 2100441742672723926L), + (-5560427638551344200L ^ 5560427638551344216L) + ((-5560427638551344200L & 5560427638551344216L) << 1) + ), + var9 + ); + } catch (Throwable var14) { + if (var8 != null) { + try { + var8.close(); + } catch (Throwable var12) { + var14.addSuppressed(var12); + } + } + + throw var14; + } + + if (var8 != null) { + var8.close(); + } + + RenderPass var15 = var0.createRenderPass(BLOOM_PASS_LABELS[var6], BLOOM_TEXTURE_VIEWS[var6], Optional.empty()); + + try { + var15.setPipeline(bloomPipeline); + RenderSystem.bindDefaultUniforms(var15); + var15.setUniform("BloomParams", bloomUniformBuffer); + var15.bindTexture("Source", var3, linearSampler()); + drawFullscreen(var15); + } catch (Throwable var13) { + if (var15 != null) { + try { + var15.close(); + } catch (Throwable var11) { + var13.addSuppressed(var11); + } + } + + throw var13; + } + + if (var15 != null) { + var15.close(); + } + + var3 = BLOOM_TEXTURE_VIEWS[var6]; + var4 = BLOOM_WIDTHS[var6]; + var5 = BLOOM_HEIGHTS[var6]; + } + } + + private static void composite(CommandEncoder var0, aun var1, int var2) { + RenderPass var3 = var0.createRenderPass(COMPOSITE_PASS_LABEL, var1.colorTarget(), Optional.empty()); + + try { + var3.setPipeline(compositePipeline); + RenderSystem.bindDefaultUniforms(var3); + var3.setUniform("SkyParams", uniformBuffer); + var3.bindTexture("DepthTex", var1.depthTarget(), nearestSampler()); + var3.bindTexture("Sky", MARCH_TEXTURE_VIEWS[var2], linearSampler()); + + for (int var4 = 0; var4 < 6; var4++) { + var3.bindTexture(BLOOM_SAMPLER_NAMES[var4], BLOOM_TEXTURE_VIEWS[var4], linearSampler()); + } + + drawFullscreen(var3); + } catch (Throwable var7) { + if (var3 != null) { + try { + var3.close(); + } catch (Throwable var6) { + var7.addSuppressed(var6); + } + } + + throw var7; + } + + if (var3 != null) { + var3.close(); + } + } + + private static void drawFullscreen(RenderPass var0) { + var0.draw( + 3, + 1, + 0, + (-634171668 ^ 634171668) + ((-634171668 & 634171668) << 1) + ); + } + + private static boolean ensurePipelines(int var0) { + try { + if (MARCH_PIPELINES[var0] == null) { + Builder var1 = BindGroupLayout.builder() + .withUniform("SkyParams", UniformType.UNIFORM_BUFFER); + if (isTemporal(var0)) { + var1.withSampler("NoiseTex") + .withSampler("History"); + } + + RenderPipeline[] var10000 = MARCH_PIPELINES; + Snippet[] var10002 = new Snippet[1]; + var10002[0] = RenderPipelines.POST_PROCESSING_SNIPPET; + var10000[var0] = RenderPipeline.builder(var10002) + .withLocation(MARCH_PIPELINE_IDS[var0]) + .withVertexShader(VERTEX_SHADER) + .withFragmentShader(MARCH_SHADERS[var0]) + .withBindGroupLayout(var1.build()) + .withColorTargetState(new ColorTargetState(Optional.empty(), MARCH_FORMAT, (-562971183 | 562971198) + (-562971183 & 562971198))) + .withDepthStencilState(Optional.empty()) + .withCull((boolean)((((286237595 ^ -286237595) + ((286237595 & -286237595) << 1))) != 0)) + .build(); + } + + if (bloomPipeline == null) { + Snippet[] var5 = new Snippet[1]; + var5[0] = RenderPipelines.POST_PROCESSING_SNIPPET; + bloomPipeline = RenderPipeline.builder(var5) + .withLocation(BLOOM_PIPELINE_ID) + .withVertexShader(VERTEX_SHADER) + .withFragmentShader(BLOOM_SHADER) + .withBindGroupLayout( + BindGroupLayout.builder() + .withUniform("BloomParams", UniformType.UNIFORM_BUFFER) + .withSampler("Source") + .build() + ) + .withColorTargetState(new ColorTargetState(Optional.empty(), MARCH_FORMAT, (-749238690 ^ 749238705) + ((-749238690 & 749238705) << 1))) + .withDepthStencilState(Optional.empty()) + .withCull((boolean)((((-2052753795 ^ 2052753795) + ((-2052753795 & 2052753795) << 1))) != 0)) + .build(); + } + + if (compositePipeline == null) { + Builder var4 = BindGroupLayout.builder() + .withUniform("SkyParams", UniformType.UNIFORM_BUFFER) + .withSampler("DepthTex") + .withSampler("Sky"); + + for (int var2 = 0; + var2 < 6; + var2++ + ) { + var4.withSampler(BLOOM_SAMPLER_NAMES[var2]); + } + + Snippet[] var6 = new Snippet[1]; + var6[0] = RenderPipelines.POST_PROCESSING_SNIPPET; + compositePipeline = RenderPipeline.builder(var6) + .withLocation(COMPOSITE_PIPELINE_ID) + .withVertexShader(VERTEX_SHADER) + .withFragmentShader(COMPOSITE_SHADER) + .withBindGroupLayout(var4.build()) + .withColorTargetState( + new ColorTargetState(Optional.of(BlendFunction.TRANSLUCENT), COMPOSITE_FORMAT, (-24980413 ^ 24980428) + ((-24980413 & 24980428) << 1)) + ) + .withDepthStencilState(Optional.empty()) + .withCull((boolean)((((1790066982 ^ -1790066982) + ((1790066982 & -1790066982) << 1))) != 0)) + .build(); + } + + ensureUniformBuffers(); + if (isTemporal(var0)) { + ensureNoiseTexture(); + } + + return (boolean)(((1)) != 0); + } catch (Throwable var3) { + fail("custom sky pipeline setup failed", var3); + return (boolean)(((0)) != 0); + } + } + + private static void ensureUniformBuffers() { + GpuDevice var0 = null; + int var1 = 1195935953; + + while (true) { + switch (var1) { + case -1828624970: + if (bloomUniformBuffer.isClosed()) { + var1 = -509113259; + } else { + var1 = -820874590; + } + break; + case -820874590: + return; + case -609818079: + if (uniformBuffer.isClosed()) { + var1 = 161959798; + } else { + var1 = 1351588744; + } + break; + case -509113259: + closeBloomUniformBuffer(); + bloomUniformBuffer = var0.createBuffer( + BLOOM_UNIFORM_LABEL, + 136, + (-1405785740027891388L ^ 1405785740027891404L) + ((-1405785740027891388L & 1405785740027891404L) << 1) + ); + var1 = -820874590; + break; + case 161959798: + closeUniformBuffer(); + uniformBuffer = var0.createBuffer( + UNIFORM_LABEL, + 136, + (-237416665128009335L | 237416665128009543L) + (-237416665128009335L & 237416665128009543L) + ); + var1 = 1351588744; + break; + case 1195935953: + default: + var0 = RenderSystem.getDevice(); + if (uniformBuffer != null) { + var1 = -609818079; + } else { + var1 = 161959798; + } + break; + case 1351588744: + if (bloomUniformBuffer != null) { + var1 = -1828624970; + } else { + var1 = -509113259; + } + } + } + } + + private static boolean ensureTargets(int var0, int var1, int var2) { + GpuDevice var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = -2001779943; + + while (true) { + switch (var9) { + case -2133014711: + if (var8 < (-2098013728 ^ 2098013734) + ((-2098013728 & 2098013734) << 1)) { + var9 = -1205628608; + } else { + var9 = 381765448; + } + break; + case -2001779943: + default: + var3 = RenderSystem.tryGetDevice(); + if (var3 == null) { + var9 = 1961912538; + } else { + var9 = -1721399509; + } + break; + case -1721399509: + if (MARCH_TEXTURES[0] != null) { + var9 = 351022441; + } else { + var9 = -1628503142; + } + break; + case -1628503142: + closeTargets(); + var4 = Math.max(1, var0 / var2); + var5 = Math.max(1, var1 / var2); + var6 = 0; + var9 = 302285379; + break; + case -1205628608: + var6 = Math.max(1, var6 / ((-422186260 | 422186262) + (-422186260 & 422186262))); + var7 = Math.max(1, var7 / ((-1780134808 | 1780134810) + (-1780134808 & 1780134810))); + BLOOM_TEXTURES[var8] = var3.createTexture( + BLOOM_TEXTURE_LABELS[var8], + 12, + MARCH_FORMAT, + var6, + var7, + 1, + (-1261888331 ^ 1261888332) + ((-1261888331 & 1261888332) << 1) + ); + BLOOM_TEXTURE_VIEWS[var8] = var3.createTextureView(BLOOM_TEXTURES[var8]); + BLOOM_WIDTHS[var8] = var6; + BLOOM_HEIGHTS[var8] = var7; + var8++; + var9 = -2133014711; + break; + case -1149357109: + MARCH_TEXTURES[var6] = var3.createTexture( + MARCH_TEXTURE_LABELS[var6], + 12, + MARCH_FORMAT, + var4, + var5, + 1, + (-573892300 | 573892301) + (-573892300 & 573892301) + ); + MARCH_TEXTURE_VIEWS[var6] = var3.createTextureView(MARCH_TEXTURES[var6]); + var6++; + var9 = 302285379; + break; + case -732523381: + if (fullWidth == var0) { + var9 = 790293461; + } else { + var9 = -1628503142; + } + break; + case -646151234: + var6 = var4; + var7 = var5; + var8 = 0; + var9 = -2133014711; + break; + case -566818298: + return (boolean)(((1)) != 0); + case 302285379: + if (var6 < (1437527715 | -1437527713) + (1437527715 & -1437527713)) { + var9 = -1149357109; + } else { + var9 = -646151234; + } + break; + case 351022441: + if (MARCH_TEXTURES[1] != null) { + var9 = -732523381; + } else { + var9 = -1628503142; + } + break; + case 381765448: + fullWidth = var0; + fullHeight = var1; + marchWidth = var4; + marchHeight = var5; + currentScale = var2; + historyValid = (boolean)(((0)) != 0); + return (boolean)(((1)) != 0); + case 790293461: + if (fullHeight == var1) { + var9 = 872264694; + } else { + var9 = -1628503142; + } + break; + case 872264694: + if (currentScale == var2) { + var9 = -566818298; + } else { + var9 = -1628503142; + } + break; + case 1961912538: + return (boolean)(((0)) != 0); + } + } + } + + private static void ensureNoiseTexture() { + if (noiseTexture == null || noiseTexture.isClosed()) { + closeNoiseTexture(); + GpuDevice var0 = RenderSystem.getDevice(); + int var1 = 65536; + int[] var2 = new int[var1]; + Random var3 = new Random((8330524804115661267L | -8330524802523022052L) + (8330524804115661267L & -8330524802523022052L)); + + for (int var4 = 0; var4 < var1; var4++) { + var2[var4] = var3.nextInt((-1154129120 | 1154129376) + (-1154129120 & 1154129376)); + } + + int[] var16 = smoothNoise(); + NativeImage var5 = new NativeImage( + 256, + 256, + (boolean)((((-1610834242 | 1610834242) + (-1610834242 & 1610834242)) + ) != 0)); + + try { + for (int var6 = 0; var6 < 256; var6++) { + for (int var7 = 0; var7 < 256; var7++) { + int var8 = Math.floorMod( + var7 - (37), (-1274855734 ^ 1274855990) + ((-1274855734 & 1274855990) << 1) + ); + int var9 = Math.floorMod( + var6 - (17), (-1626402723 | 1626402979) + (-1626402723 & 1626402979) + ); + int var10 = var2[var6 * ((-796494207 | 796494463) + (-796494207 & 796494463)) + var7]; + int var11 = var2[var9 * ((-506199012 | 506199268) + (-506199012 & 506199268)) + var8]; + int var12 = var16[var6 * ((-1149486417 ^ 1149486673) + ((-1149486417 & 1149486673) << 1)) + var7]; + var5.setPixelABGR( + var7, + var6, + (1215226880 | -1232004096) + (1215226880 & -1232004096) + | var12 << (-1100038763 ^ 1100038779) + ((-1100038763 & 1100038779) << 1) + | var11 << (-1206556315 ^ 1206556323) + ((-1206556315 & 1206556323) << 1) + | var10 + ); + } + } + + noiseTexture = var0.createTexture( + NOISE_LABEL, + 5, + MARCH_FORMAT, + 256, + 256, + 1, + (-1682348091 | 1682348092) + (-1682348091 & 1682348092) + ); + var0.createCommandEncoder().writeToTexture(noiseTexture, var5); + noiseTextureView = var0.createTextureView(noiseTexture); + } finally { + var5.close(); + } + } + } + + private static int[] smoothNoise() { + float[] var0 = new float[65536]; + Random var1 = new Random((-7230974281141458006L ^ 7230974282025655337L) + ((-7230974281141458006L & 7230974282025655337L) << 1)); + float var2 = 1.0F; + float var3 = 0.0F; + + for (int var4 = 0; var4 < 4; var4++) { + int var5 = (1191828603 | -1191828599) + (1191828603 & -1191828599) << var4; + float[] var6 = new float[var5 * var5]; + + for (int var7 = 0; var7 < var6.length; var7++) { + var6[var7] = var1.nextFloat(); + } + + float var12 = var5 / 256.0F; + + for (int var8 = 0; var8 < 256; var8++) { + for (int var9 = 0; + var9 < 256; + var9++ + ) { + var0[var8 * ((-373338875 ^ 373339131) + ((-373338875 & 373339131) << 1)) + var9] = var0[var8 + * ((-373338875 ^ 373339131) + ((-373338875 & 373339131) << 1)) + + var9] + + var2 * sampleLattice(var6, var5, var9 * var12, var8 * var12); + } + } + + var3 += var2; + var2 *= 0.5F; + } + + int[] var10 = new int[var0.length]; + + for (int var11 = 0; var11 < var0.length; var11++) { + var10[var11] = Math.clamp( + Math.round(var0[var11] / var3 * 255.0F), + 0, + (810791256 ^ -810791001) + ((810791256 & -810791001) << 1) + ); + } + + return var10; + } + + private static float sampleLattice(float[] var0, int var1, float var2, float var3) { + int var4 = (int)Math.floor(var2); + int var5 = (int)Math.floor(var3); + float var6 = smoothstep(var2 - var4); + float var7 = smoothstep(var3 - var5); + int var8 = Math.floorMod(var4, var1); + int var9 = Math.floorMod(var5, var1); + int var10 = Math.floorMod(var4 + 1, var1); + int var11 = Math.floorMod(var5 + 1, var1); + float var12 = var0[var9 * var1 + var8]; + float var13 = var0[var9 * var1 + var10]; + float var14 = var0[var11 * var1 + var8]; + float var15 = var0[var11 * var1 + var10]; + float var16 = var12 + (var13 - var12) * var6; + float var17 = var14 + (var15 - var14) * var6; + return var16 + (var17 - var16) * var7; + } + + private static float smoothstep(float var0) { + return var0 * var0 * (3.0F - 2.0F * var0); + } + + private static GpuSampler linearSampler() { + return RenderSystem.getSamplerCache().getClampToEdge(FilterMode.LINEAR); + } + + private static GpuSampler nearestSampler() { + return RenderSystem.getSamplerCache().getClampToEdge(FilterMode.NEAREST); + } + + private static GpuSampler repeatSampler() { + return RenderSystem.getSamplerCache().getRepeat(FilterMode.LINEAR); + } + + private static void fail(String var0, Throwable var1) { + int var2 = 0; + int var3 = -2018055985; + + while (true) { + switch (var3) { + case -2018055985: + default: + disabledAfterError = (boolean)(((1)) != 0); + id.error(Cif.SHADER, var0, var1); + closeTargets(); + closeUniformBuffer(); + closeBloomUniformBuffer(); + closeNoiseTexture(); + var2 = 0; + var3 = -992516908; + break; + case -992516908: + if (var2 < (-775929923 ^ 775929927) + ((-775929923 & 775929927) << 1)) { + var3 = 632798810; + } else { + var3 = -87655260; + } + break; + case -87655260: + compositePipeline = null; + bloomPipeline = null; + return; + case 632798810: + MARCH_PIPELINES[var2] = null; + var2++; + var3 = -992516908; + } + } + } + + private static void closeTargets() { + int var0 = 0; + int var1 = 53967736; + + while (true) { + switch (var1) { + case -2146384528: + BLOOM_WIDTHS[var0] = 0; + BLOOM_HEIGHTS[var0] = 0; + var0++; + var1 = -1578635024; + break; + case -1578635024: + if (var0 < (1135305587 ^ -1135305581) + ((1135305587 & -1135305581) << 1)) { + var1 = 1098093236; + } else { + var1 = 881450515; + } + break; + case -928155183: + BLOOM_TEXTURE_VIEWS[var0].close(); + BLOOM_TEXTURE_VIEWS[var0] = null; + var1 = 1558549425; + break; + case -388397737: + var0 = 0; + var1 = -1578635024; + break; + case -80717264: + MARCH_TEXTURES[var0].close(); + MARCH_TEXTURES[var0] = null; + var1 = 517055845; + break; + case 53967736: + default: + var0 = 0; + var1 = 243683434; + break; + case 243683434: + if (var0 < (1992572809 | -1992572807) + (1992572809 & -1992572807)) { + var1 = 909836675; + } else { + var1 = -388397737; + } + break; + case 349799984: + if (MARCH_TEXTURES[var0] != null) { + var1 = -80717264; + } else { + var1 = 517055845; + } + break; + case 517055845: + var0++; + var1 = 243683434; + break; + case 873913144: + BLOOM_TEXTURES[var0].close(); + BLOOM_TEXTURES[var0] = null; + var1 = -2146384528; + break; + case 881450515: + fullWidth = -1; + fullHeight = -1; + marchWidth = -1; + marchHeight = -1; + currentScale = -1; + historyValid = (boolean)(((0)) != 0); + return; + case 909836675: + if (MARCH_TEXTURE_VIEWS[var0] != null) { + var1 = 2008362102; + } else { + var1 = 349799984; + } + break; + case 1098093236: + if (BLOOM_TEXTURE_VIEWS[var0] != null) { + var1 = -928155183; + } else { + var1 = 1558549425; + } + break; + case 1558549425: + if (BLOOM_TEXTURES[var0] != null) { + var1 = 873913144; + } else { + var1 = -2146384528; + } + break; + case 2008362102: + MARCH_TEXTURE_VIEWS[var0].close(); + MARCH_TEXTURE_VIEWS[var0] = null; + var1 = 349799984; + } + } + } + + private static void closeUniformBuffer() { + int var0 = 1024108187; + + while (true) { + switch (var0) { + case 1024108187: + default: + if (uniformBuffer != null) { + var0 = 1620090496; + } else { + var0 = 1627679088; + } + break; + case 1620090496: + uniformBuffer.close(); + uniformBuffer = null; + var0 = 1627679088; + break; + case 1627679088: + return; + } + } + } + + private static void closeBloomUniformBuffer() { + int var0 = 861983853; + + while (true) { + switch (var0) { + case 861983853: + default: + if (bloomUniformBuffer != null) { + var0 = 1680226560; + } else { + var0 = 1534704500; + } + break; + case 1534704500: + return; + case 1680226560: + bloomUniformBuffer.close(); + bloomUniformBuffer = null; + var0 = 1534704500; + } + } + } + + private static void closeNoiseTexture() { + int var0 = -1084939541; + + while (true) { + switch (var0) { + case -1084939541: + default: + if (noiseTextureView != null) { + var0 = 1285106278; + } else { + var0 = 731693942; + } + break; + case 731693942: + if (noiseTexture != null) { + var0 = 1360095656; + } else { + var0 = 1119987151; + } + break; + case 1119987151: + return; + case 1285106278: + noiseTextureView.close(); + noiseTextureView = null; + var0 = 731693942; + break; + case 1360095656: + noiseTexture.close(); + noiseTexture = null; + var0 = 1119987151; + } + } + } + + private static float halton(int var0, int var1) { + float var2 = 0.0F; + float var3 = 0.0F; + int var4 = 0; + int var5 = 622827085; + + while (true) { + switch (var5) { + case -841317843: + if (var4 > 0) { + var5 = -623098838; + } else { + var5 = 109631465; + } + break; + case -623098838: + var3 /= var1; + var2 += var3 * (var4 % var1); + var4 /= var1; + var5 = -841317843; + break; + case 109631465: + return var2; + case 622827085: + default: + var2 = 0.0F; + var3 = 1.0F; + var4 = var0; + var5 = -841317843; + } + } + } + + private static Identifier id(String var0) { + return Identifier.fromNamespaceAndPath("evolution", var0); + } + + private static Supplier[] marchPassLabels() { + Supplier[] var0 = null; + int var1 = 0; + String var2 = null; + int var3 = -1154619687; + + while (true) { + switch (var3) { + case -1863061412: + if (var1 < (-261069779 ^ 261069783) + ((-261069779 & 261069783) << 1)) { + var3 = -1017059595; + } else { + var3 = 1480546611; + } + break; + case -1154619687: + default: + var0 = new Supplier[4]; + var1 = 0; + var3 = -1863061412; + break; + case -1017059595: + var2 = "evolution_customsky_march_" + var1; + var0[var1] = () -> var2; + var1++; + var3 = -1863061412; + break; + case 1480546611: + return var0; + } + } + } + + private static Supplier[] bloomPassLabels() { + Supplier[] var0 = null; + int var1 = 0; + String var2 = null; + int var3 = 1754409409; + + while (true) { + switch (var3) { + case -2137893933: + if (var1 < (630351115 ^ -630351109) + ((630351115 & -630351109) << 1)) { + var3 = -1092652498; + } else { + var3 = -538564167; + } + break; + case -1092652498: + var2 = "evolution_customsky_bloom_" + var1; + var0[var1] = () -> var2; + var1++; + var3 = -2137893933; + break; + case -538564167: + return var0; + case 1754409409: + default: + var0 = new Supplier[6]; + var1 = 0; + var3 = -2137893933; + } + } + } + + private static Supplier[] marchTextureLabels() { + Supplier[] var0 = null; + int var1 = 0; + String var2 = null; + int var3 = -1532794023; + + while (true) { + switch (var3) { + case -1532794023: + default: + var0 = new Supplier[2]; + var1 = 0; + var3 = 2067898591; + break; + case -458148956: + return var0; + case 1098190506: + var2 = "evolution_customsky_target_" + var1; + var0[var1] = () -> var2; + var1++; + var3 = 2067898591; + break; + case 2067898591: + if (var1 < (996499099 | -996499097) + (996499099 & -996499097)) { + var3 = 1098190506; + } else { + var3 = -458148956; + } + } + } + } + + private static Supplier[] bloomTextureLabels() { + Supplier[] var0 = null; + int var1 = 0; + String var2 = null; + int var3 = 1293385110; + + while (true) { + switch (var3) { + case -1770467304: + var2 = "evolution_customsky_bloom_target_" + var1; + var0[var1] = () -> var2; + var1++; + var3 = 758319209; + break; + case -185608587: + return var0; + case 758319209: + if (var1 < (-1843560156 ^ 1843560162) + ((-1843560156 & 1843560162) << 1)) { + var3 = -1770467304; + } else { + var3 = -185608587; + } + break; + case 1293385110: + default: + var0 = new Supplier[6]; + var1 = 0; + var3 = 758319209; + } + } + } + + private static String[] bloomSamplerNames() { + String[] var0 = null; + int var1 = 0; + int var2 = 2047168646; + + while (true) { + switch (var2) { + case -781210200: + return var0; + case 277915120: + var0[var1] = "Bloom" + var1; + var1++; + var2 = 1506043302; + break; + case 1506043302: + if (var1 < (-1412408560 | 1412408566) + (-1412408560 & 1412408566)) { + var2 = 277915120; + } else { + var2 = -781210200; + } + break; + case 2047168646: + default: + var0 = new String[6]; + var1 = 0; + var2 = 1506043302; + } + } + } + + static { + Identifier[] var10000 = new Identifier[4]; + var10000[0] = id( + "core/customsky/blackhole" + ); + var10000[1] = id( + "core/customsky/starfall" + ); + var10000[2] = id( + "core/customsky/aurora" + ); + var10000[3] = id( + "core/customsky/endbeams" + ); + MARCH_SHADERS = var10000; + var10000 = new Identifier[4]; + var10000[0] = id( + "pipeline/customsky/blackhole" + ); + var10000[1] = id( + "pipeline/customsky/starfall" + ); + var10000[2] = id( + "pipeline/customsky/aurora" + ); + var10000[3] = id( + "pipeline/customsky/endbeams" + ); + MARCH_PIPELINE_IDS = var10000; + } +} diff --git a/src/main/java/defpackage/aun.java b/src/main/java/defpackage/aun.java new file mode 100644 index 0000000..ee81c01 --- /dev/null +++ b/src/main/java/defpackage/aun.java @@ -0,0 +1,206 @@ +package defpackage; + +import com.mojang.blaze3d.textures.GpuTextureView; +import org.joml.Matrix4f; + +public final class aun { + public static final int CORNER_COUNT = 4; + public static final int CORNER_COMPONENTS = 3; + public static final float GRADIENT_SINGLE = 0.0F; + public static final float GRADIENT_DUAL = 1.0F; + public static final float FULL_DOME_OFF = 0.0F; + public static final float FULL_DOME_ON = 1.0F; + private static final int COLOR_CHANNEL_MAX = 255; + private static final int RED_SHIFT = 16; + private static final int GREEN_SHIFT = 8; + private static final int CHANNEL_MASK = 255; + private final float[] cornerRays = new float[12]; + private final Matrix4f viewProjection = new Matrix4f(); + private GpuTextureView colorTarget; + private GpuTextureView depthTarget; + private int width; + private int height; + private int type; + private float time; + private float brightness; + private float alpha; + private float fullDome; + private float gradientMode; + private float primaryRed; + private float primaryGreen; + private float primaryBlue; + private float secondaryRed; + private float secondaryGreen; + private float secondaryBlue; + + public void targets(GpuTextureView var1, GpuTextureView var2) { + this.colorTarget = var1; + this.depthTarget = var2; + } + + public void dimensions(int var1, int var2) { + this.width = var1; + this.height = var2; + } + + public void effect(int var1, float var2, float var3, float var4, float var5) { + this.type = var1; + this.time = var2; + this.brightness = var3; + this.alpha = var4; + this.fullDome = var5; + } + + public void colors(int var1, int var2, float var3) { + this.primaryRed = red(var1); + this.primaryGreen = green(var1); + this.primaryBlue = blue(var1); + this.secondaryRed = red(var2); + this.secondaryGreen = green(var2); + this.secondaryBlue = blue(var2); + this.gradientMode = var3; + } + + public void corner(int var1, float var2, float var3, float var4) { + int var5 = var1 * (3); + this.cornerRays[var5] = var2; + this.cornerRays[var5 + 1] = var3; + this.cornerRays[var5 + 2] = var4; + } + + public void viewProjection(Matrix4f var1, Matrix4f var2) { + this.viewProjection.set(var1).mul(var2); + } + + public boolean isValid() { + int var2 = 0; + int var1 = -1805434554; + + while (true) { + switch (var1) { + case -2068919644: + if (this.depthTarget != null) { + var1 = -253303797; + } else { + var1 = -864877852; + } + break; + case -1805434554: + default: + if (this.colorTarget != null) { + var1 = -2068919644; + } else { + var1 = -864877852; + } + break; + case -1590280633: + return (boolean)((var2) != 0); + case -864877852: + var2 = 0; + var1 = -1590280633; + break; + case -253303797: + if (this.width > 0) { + var1 = 124579766; + } else { + var1 = -864877852; + } + break; + case 124579766: + if (this.height > 0) { + var1 = 1316175578; + } else { + var1 = -864877852; + } + break; + case 1316175578: + var2 = 1; + var1 = -1590280633; + } + } + } + + public GpuTextureView colorTarget() { + return this.colorTarget; + } + + public GpuTextureView depthTarget() { + return this.depthTarget; + } + + public float[] cornerRays() { + return this.cornerRays; + } + + public Matrix4f viewProjection() { + return this.viewProjection; + } + + public int width() { + return this.width; + } + + public int height() { + return this.height; + } + + public int type() { + return this.type; + } + + public float time() { + return this.time; + } + + public float brightness() { + return this.brightness; + } + + public float alpha() { + return this.alpha; + } + + public float fullDome() { + return this.fullDome; + } + + public float gradientMode() { + return this.gradientMode; + } + + public float primaryRed() { + return this.primaryRed; + } + + public float primaryGreen() { + return this.primaryGreen; + } + + public float primaryBlue() { + return this.primaryBlue; + } + + public float secondaryRed() { + return this.secondaryRed; + } + + public float secondaryGreen() { + return this.secondaryGreen; + } + + public float secondaryBlue() { + return this.secondaryBlue; + } + + private static float red(int var0) { + return (var0 >> (1131871468 ^ -1131871452) + ((1131871468 & -1131871452) << 1) & (-391362776 ^ 391363031) + ((-391362776 & 391363031) << 1)) / 255.0F; + } + + private static float green(int var0) { + return (var0 >> (-116786837 | 116786845) + (-116786837 & 116786845) & (1618798279 | -1618798024) + (1618798279 & -1618798024)) / 255.0F; + } + + private static float blue(int var0) { + return (var0 & (-1265511098 ^ 1265511353) + ((-1265511098 & 1265511353) << 1)) / 255.0F; + } +} diff --git a/src/main/java/defpackage/auo.java b/src/main/java/defpackage/auo.java new file mode 100644 index 0000000..15a8fee --- /dev/null +++ b/src/main/java/defpackage/auo.java @@ -0,0 +1,754 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.buffers.GpuBuffer; +import com.mojang.blaze3d.pipeline.BindGroupLayout; +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet; +import com.mojang.blaze3d.shaders.UniformType; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.GpuDevice; +import com.mojang.blaze3d.systems.RenderPass; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.textures.FilterMode; +import com.mojang.blaze3d.textures.GpuSampler; +import com.mojang.blaze3d.textures.GpuTexture; +import com.mojang.blaze3d.textures.GpuTextureView; +import java.nio.ByteBuffer; +import java.util.Optional; +import java.util.function.Supplier; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderEvents; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import net.minecraft.client.renderer.state.level.LevelRenderState; +import net.minecraft.client.renderer.state.level.SkyRenderState; +import net.minecraft.resources.Identifier; +import org.joml.Matrix4f; +import org.joml.Matrix4fc; +import org.joml.Vector4f; +import org.lwjgl.system.MemoryStack; + +public final class auo { + private static final String NAMESPACE = "evolution"; + private static final String UNIFORM_BLOCK = "RayParams"; + private static final String SAMPLER_SOURCE = "SourceTex"; + private static final String SAMPLER_DEPTH = "DepthTex"; + private static final String SAMPLER_RAYS = "RayTex"; + private static final Identifier VERTEX_SHADER = id( + "core/godrays/fullscreen" + ); + private static final Identifier SCATTER_SHADER = id( + "core/godrays/scatter" + ); + private static final Identifier COMPOSITE_SHADER = id( + "core/godrays/composite" + ); + private static final Identifier SCATTER_PIPELINE_ID = id( + "pipeline/godrays/scatter" + ); + private static final Identifier COMPOSITE_PIPELINE_ID = id( + "pipeline/godrays/composite" + ); + private static final Supplier UNIFORM_LABEL = () -> "evolution_godrays_uniforms"; + private static final Supplier SCATTER_PASS_LABEL = () -> "evolution_godrays_scatter"; + private static final Supplier COMPOSITE_PASS_LABEL = () -> "evolution_godrays_composite"; + private static final Supplier RAY_TARGET_LABEL = () -> "evolution_godrays_rays"; + private static final String PIPELINE_FAILURE = "god rays pipeline setup failed"; + private static final String FRAME_FAILURE = "god rays frame failed"; + private static final int UNIFORM_SIZE = 64; + private static final int OFFSET_SUN = 0; + private static final int OFFSET_CONTROLS = 16; + private static final int OFFSET_TINT = 32; + private static final int OFFSET_SCREEN = 48; + private static final int FLOAT_SIZE = 4; + private static final GpuFormat TARGET_FORMAT = GpuFormat.RGBA8_UNORM; + private static final int TARGET_USAGE = 14; + private static final int UNIFORM_USAGE = 136; + private static final int TEXTURE_DEPTH = 1; + private static final int TEXTURE_MIP_LEVELS = 1; + private static final int RAY_DIVISOR = 2; + private static final int MIN_TARGET_SIZE = 1; + private static final int FULLSCREEN_VERTEX_COUNT = 3; + private static final int INSTANCE_COUNT = 1; + private static final int FIRST_VERTEX = 0; + private static final int FIRST_INSTANCE = 0; + private static final float PERCENT_SCALE = 0.01F; + private static final float HOMOGENEOUS_EPSILON = 1.0E-6F; + private static final float NDC_TO_UV_SCALE = 0.5F; + private static final float NDC_TO_UV_BIAS = 0.5F; + private static final float ELEVATION_FADE_START = 0.03F; + private static final float ELEVATION_FADE_END = 0.2F; + private static final float SCREEN_FADE_RANGE = 0.55F; + private static final float UV_CENTER = 0.5F; + private static final float UV_HALF_SPAN = 0.5F; + private static final float RAIN_FADE = 0.85F; + private static final float SUNSET_BOOST = 0.8F; + private static final float SUNSET_REFERENCE = 0.45F; + private static final float SAMPLE_WEIGHT = 1.35F; + private static final float MIN_FADE = 0.002F; + private static final float WINDOW_DEPTH_LOW = 0.0F; + private static final float WINDOW_DEPTH_HIGH = 1.0F; + private static final float CLIP_SCALE_UNIT = 1.0F; + private static final float CLIP_BIAS_UNIT = 0.0F; + private static final float CLIP_SCALE_SIGNED = 2.0F; + private static final float CLIP_BIAS_SIGNED = -1.0F; + private static final float COLOR_CHANNEL_MAX = 255.0F; + private static final int RED_SHIFT = 16; + private static final int GREEN_SHIFT = 8; + private static final int ALPHA_SHIFT = 24; + private static final int CHANNEL_MASK = 255; + private static final float WARM_STRENGTH = 0.85F; + private static final Matrix4f VIEW_PROJECTION = new Matrix4f(); + private static final Matrix4f INVERSE_VIEW_PROJECTION = new Matrix4f(); + private static final Vector4f SUN_CLIP = new Vector4f(); + private static final Vector4f DEPTH_PROBE = new Vector4f(); + private static RenderPipeline scatterPipeline; + private static RenderPipeline compositePipeline; + private static GpuBuffer uniformBuffer; + private static GpuTexture rayTarget; + private static GpuTextureView rayTargetView; + private static int fullWidth = -1; + private static int fullHeight = -1; + private static float sunAngle; + private static int sunriseColor; + private static boolean skyStateValid; + private static boolean disabledAfterError; + + private auo() { + } + + public static void init() { + LevelRenderEvents.END_MAIN.register(auo::onEndMain); + } + + private static void onEndMain(LevelRenderContext var0) { + LevelRenderState var1 = null; + SkyRenderState var2 = null; + CameraRenderState var3 = null; + int var4 = -2114420562; + + while (true) { + switch (var4) { + case -2114420562: + default: + var1 = var0.levelState(); + if (var1 == null) { + var4 = 498222961; + } else { + var4 = -1011853145; + } + break; + case -1011853145: + var2 = var1.skyRenderState; + var3 = var1.cameraRenderState; + if (var2 != null) { + var4 = -560419054; + } else { + var4 = 792448255; + } + break; + case -560419054: + if (var3 == null) { + var4 = 792448255; + } else { + var4 = -225384227; + } + break; + case -225384227: + sunAngle = var2.sunAngle; + sunriseColor = var2.sunriseAndSunsetColor; + skyStateValid = (boolean)(((1)) != 0); + render(var3, var3.projectionMatrix); + return; + case 498222961: + skyStateValid = (boolean)(((0)) != 0); + return; + case 792448255: + skyStateValid = (boolean)(((0)) != 0); + return; + } + } + } + + public static void render(CameraRenderState var0, Matrix4fc var1) { + va var2 = va.INSTANCE; + if (!disabledAfterError && var2.isEnabled() && skyStateValid && !aor.shaderPackInUse()) { + if (var0 != null && var1 != null && var0.initialized && var0.viewRotationMatrix != null) { + RenderTarget var3 = aqg.mc.gameRenderer.mainRenderTarget(); + if (var3.width > 0 && var3.height > 0 && var3.getColorTextureView() != null && var3.getDepthTextureView() != null) { + float var4 = (float)Math.cos(sunAngle); + if (!(var4 <= 0.03F)) { + VIEW_PROJECTION.set(var1).mul(var0.viewRotationMatrix); + SUN_CLIP.set(-((float)Math.sin(sunAngle)), var4, 0.0F, 0.0F).mul(VIEW_PROJECTION); + if (!(SUN_CLIP.w <= 1.0E-6F)) { + float var5 = SUN_CLIP.x / SUN_CLIP.w * 0.5F + 0.5F; + float var6 = SUN_CLIP.y / SUN_CLIP.w * 0.5F + 0.5F; + float var7 = fadeAmount(var2, var5, var6, var4); + if (!(var7 <= 0.002F)) { + if (ensurePipelines() && ensureTargets(var3.width, var3.height)) { + try { + CommandEncoder var8 = RenderSystem.getDevice().createCommandEncoder(); + writeUniforms(var8, var2, var3, var5, var6, var7); + scatter(var8, var3); + composite(var8, var3); + } catch (Throwable var9) { + fail("god rays frame failed", var9); + } + } + } + } + } + } + } + } + } + + public static void release() { + int var0 = 827119226; + + while (true) { + switch (var0) { + case -487950131: + closeTargets(); + var0 = 881388607; + break; + case 827119226: + default: + if (RenderSystem.isOnRenderThread()) { + var0 = -487950131; + } else { + var0 = 881388607; + } + break; + case 881388607: + return; + } + } + } + + private static float fadeAmount(va var0, float var1, float var2, float var3) { + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var11 = 0.0F; + int var10 = -77067933; + + while (true) { + switch (var10) { + case -77067933: + default: + var4 = smoothstep(0.03F, 0.2F, var3); + var5 = Math.max(Math.abs(var1 - 0.5F) - 0.5F, 0.0F); + var6 = Math.max(Math.abs(var2 - 0.5F) - 0.5F, 0.0F); + var7 = 1.0F - smoothstep(0.0F, 0.55F, Math.max(var5, var6)); + var8 = 1.0F - rainLevel() * 0.85F; + if (var0.sunsetBoost.isEnabled()) { + var10 = 1086811153; + } else { + var10 = 1388523908; + } + break; + case 123974053: + var9 = var11; + return var4 * var7 * var8 * var9; + case 1086811153: + var11 = 1.0F + 0.8F * (1.0F - Math.min(var3 / 0.45F, 1.0F)); + var10 = 123974053; + break; + case 1388523908: + var11 = 1.0F; + var10 = 123974053; + } + } + } + + private static float rainLevel() { + float var1 = 0.0F; + int var0 = -422497414; + + while (true) { + switch (var0) { + case -2064997497: + var1 = 0.0F; + var0 = -1028943507; + break; + case -1028943507: + return var1; + case -422497414: + default: + if (aqg.mc.level == null) { + var0 = -2064997497; + } else { + var0 = 1893503571; + } + break; + case 1893503571: + var1 = aqg.mc.level.getRainLevel(1.0F); + var0 = -1028943507; + } + } + } + + private static float smoothstep(float var0, float var1, float var2) { + float var3 = Math.clamp((var2 - var0) / (var1 - var0), 0.0F, 1.0F); + return var3 * var3 * (3.0F - 2.0F * var3); + } + + private static void writeUniforms(CommandEncoder var0, va var1, RenderTarget var2, float var3, float var4, float var5) { + VIEW_PROJECTION.invert(INVERSE_VIEW_PROJECTION); + float var6 = farDepthValue(clipSpaceIsZeroToOne()); + int var7 = var1.rayColor.getIntColor(); + MemoryStack var8 = MemoryStack.stackPush(); + + try { + ByteBuffer var9 = var8.calloc((946088342 ^ -946088278) + ((946088342 & -946088278) << 1)); + var9.putFloat(0, var3); + var9.putFloat(4, var4); + var9.putFloat(8, var1.reach.getCurrent() * 0.01F); + var9.putFloat(12, var6); + var9.putFloat(16, var1.samples.getCurrent()); + var9.putFloat(20, 1.35F); + var9.putFloat(24, var1.strength.getCurrent() * 0.01F); + var9.putFloat(28, var1.decay.getCurrent() * 0.01F); + float var10 = (sunriseColor >>> (-1012436121 | 1012436145) + (-1012436121 & 1012436145) & (1012098808 | -1012098553) + (1012098808 & -1012098553)) + / 255.0F + * 0.85F; + var9.putFloat(32, red(var7) * warmChannel(red(sunriseColor), var10)); + var9.putFloat(36, green(var7) * warmChannel(green(sunriseColor), var10)); + var9.putFloat(40, blue(var7) * warmChannel(blue(sunriseColor), var10)); + var9.putFloat(44, var5); + var9.putFloat(48, 1.0F / var2.width); + var9.putFloat(52, 1.0F / var2.height); + var9.putFloat(56, var2.width); + var9.putFloat(60, var2.height); + var9.position((634571133 | -634571133) + (634571133 & -634571133)); + var0.writeToBuffer( + uniformBuffer.slice( + (-7117144591049354626L | 7117144591049354626L) + (-7117144591049354626L & 7117144591049354626L), + (5534321767054685036L ^ -5534321767054684972L) + ((5534321767054685036L & -5534321767054684972L) << 1) + ), + var9 + ); + } catch (Throwable var12) { + if (var8 != null) { + try { + var8.close(); + } catch (Throwable var11) { + var12.addSuppressed(var11); + } + } + + throw var12; + } + + if (var8 != null) { + var8.close(); + } + } + + private static void scatter(CommandEncoder var0, RenderTarget var1) { + RenderPass var2 = var0.createRenderPass(SCATTER_PASS_LABEL, rayTargetView, Optional.empty()); + + try { + var2.setPipeline(scatterPipeline); + RenderSystem.bindDefaultUniforms(var2); + var2.setUniform("RayParams", uniformBuffer); + var2.bindTexture("SourceTex", var1.getColorTextureView(), linearSampler()); + var2.bindTexture("DepthTex", var1.getDepthTextureView(), nearestSampler()); + var2.draw( + 3, + 1, + 0, + (683450346 ^ -683450346) + ((683450346 & -683450346) << 1) + ); + } catch (Throwable var6) { + if (var2 != null) { + try { + var2.close(); + } catch (Throwable var5) { + var6.addSuppressed(var5); + } + } + + throw var6; + } + + if (var2 != null) { + var2.close(); + } + } + + private static void composite(CommandEncoder var0, RenderTarget var1) { + RenderPass var2 = var0.createRenderPass(COMPOSITE_PASS_LABEL, var1.getColorTextureView(), Optional.empty()); + + try { + var2.setPipeline(compositePipeline); + RenderSystem.bindDefaultUniforms(var2); + var2.setUniform("RayParams", uniformBuffer); + var2.bindTexture("RayTex", rayTargetView, linearSampler()); + var2.draw( + 3, + 1, + 0, + (1620080725 | -1620080725) + (1620080725 & -1620080725) + ); + } catch (Throwable var6) { + if (var2 != null) { + try { + var2.close(); + } catch (Throwable var5) { + var6.addSuppressed(var5); + } + } + + throw var6; + } + + if (var2 != null) { + var2.close(); + } + } + + private static boolean ensurePipelines() { + try { + if (scatterPipeline == null) { + Snippet[] var10000 = new Snippet[1]; + var10000[0] = RenderPipelines.POST_PROCESSING_SNIPPET; + scatterPipeline = RenderPipeline.builder(var10000) + .withLocation(SCATTER_PIPELINE_ID) + .withVertexShader(VERTEX_SHADER) + .withFragmentShader(SCATTER_SHADER) + .withBindGroupLayout( + BindGroupLayout.builder() + .withUniform("RayParams", UniformType.UNIFORM_BUFFER) + .withSampler("SourceTex") + .withSampler("DepthTex") + .build() + ) + .withColorTargetState(new ColorTargetState(Optional.empty(), TARGET_FORMAT, (-2029761093 | 2029761108) + (-2029761093 & 2029761108))) + .withDepthStencilState(Optional.empty()) + .withCull((boolean)((((375275485 | -375275485) + (375275485 & -375275485))) != 0)) + .build(); + } + + if (compositePipeline == null) { + Snippet[] var2 = new Snippet[1]; + var2[0] = RenderPipelines.POST_PROCESSING_SNIPPET; + compositePipeline = RenderPipeline.builder(var2) + .withLocation(COMPOSITE_PIPELINE_ID) + .withVertexShader(VERTEX_SHADER) + .withFragmentShader(COMPOSITE_SHADER) + .withBindGroupLayout( + BindGroupLayout.builder() + .withUniform("RayParams", UniformType.UNIFORM_BUFFER) + .withSampler("RayTex") + .build() + ) + .withColorTargetState( + new ColorTargetState(Optional.of(BlendFunction.ADDITIVE), TARGET_FORMAT, (480507641 ^ -480507626) + ((480507641 & -480507626) << 1)) + ) + .withDepthStencilState(Optional.empty()) + .withCull((boolean)((((-650292459 ^ 650292459) + ((-650292459 & 650292459) << 1))) != 0)) + .build(); + } + + GpuDevice var0 = RenderSystem.getDevice(); + if (uniformBuffer == null || uniformBuffer.isClosed()) { + uniformBuffer = var0.createBuffer( + UNIFORM_LABEL, + 136, + (-1166112249730108124L ^ 1166112249730108188L) + ((-1166112249730108124L & 1166112249730108188L) << 1) + ); + } + + return (boolean)(((1)) != 0); + } catch (Throwable var1) { + fail( + "god rays pipeline setup failed", var1 + ); + return (boolean)(((0)) != 0); + } + } + + private static boolean ensureTargets(int var0, int var1) { + GpuDevice var2 = null; + int var3 = 0; + int var4 = 0; + int var5 = 833629244; + + while (true) { + switch (var5) { + case -2076134200: + return (boolean)(((1)) != 0); + case 104694838: + if (fullHeight == var1) { + var5 = -2076134200; + } else { + var5 = 2137140981; + } + break; + case 275864201: + if (rayTarget != null) { + var5 = 1186010468; + } else { + var5 = 2137140981; + } + break; + case 391276539: + return (boolean)(((0)) != 0); + case 833629244: + default: + var2 = RenderSystem.tryGetDevice(); + if (var2 == null) { + var5 = 391276539; + } else { + var5 = 275864201; + } + break; + case 1186010468: + if (fullWidth == var0) { + var5 = 104694838; + } else { + var5 = 2137140981; + } + break; + case 2137140981: + closeTargets(); + var3 = Math.max( + 1, var0 / ((-1670269833 ^ 1670269835) + ((-1670269833 & 1670269835) << 1)) + ); + var4 = Math.max( + 1, var1 / ((1617447252 ^ -1617447250) + ((1617447252 & -1617447250) << 1)) + ); + rayTarget = var2.createTexture( + RAY_TARGET_LABEL, + 14, + TARGET_FORMAT, + var3, + var4, + 1, + (-1532926837 | 1532926838) + (-1532926837 & 1532926838) + ); + rayTargetView = var2.createTextureView(rayTarget); + fullWidth = var0; + fullHeight = var1; + return (boolean)(((1)) != 0); + } + } + } + + private static void closeTargets() { + int var0 = 1315068029; + + while (true) { + switch (var0) { + case -1838557133: + rayTarget.close(); + rayTarget = null; + var0 = 1607523984; + break; + case -639274960: + rayTargetView.close(); + rayTargetView = null; + var0 = 886577984; + break; + case 886577984: + if (rayTarget != null) { + var0 = -1838557133; + } else { + var0 = 1607523984; + } + break; + case 1315068029: + default: + if (rayTargetView != null) { + var0 = -639274960; + } else { + var0 = 886577984; + } + break; + case 1607523984: + fullWidth = -1; + fullHeight = -1; + return; + } + } + } + + private static void closeUniformBuffer() { + int var0 = -679991287; + + while (true) { + switch (var0) { + case -1831599355: + uniformBuffer.close(); + uniformBuffer = null; + var0 = -1010205840; + break; + case -1010205840: + return; + case -679991287: + default: + if (uniformBuffer != null) { + var0 = -1831599355; + } else { + var0 = -1010205840; + } + } + } + } + + private static void fail(String var0, Throwable var1) { + disabledAfterError = (boolean)(((1)) != 0); + id.error(Cif.SHADER, var0, var1); + closeTargets(); + closeUniformBuffer(); + scatterPipeline = null; + compositePipeline = null; + } + + private static boolean clipSpaceIsZeroToOne() { + GpuDevice var0 = null; + int var2 = 0; + int var1 = -631419738; + + while (true) { + switch (var1) { + case -631419738: + default: + var0 = RenderSystem.tryGetDevice(); + if (var0 != null) { + var1 = 1710007360; + } else { + var1 = 917031972; + } + break; + case 597991736: + return (boolean)((var2) != 0); + case 681013109: + var2 = 1; + var1 = 597991736; + break; + case 917031972: + var2 = 0; + var1 = 597991736; + break; + case 1710007360: + if (var0.getDeviceInfo().isZZeroToOne()) { + var1 = 681013109; + } else { + var1 = 917031972; + } + } + } + } + + private static float farDepthValue(boolean var0) { + float var2 = 0.0F; + int var1 = -1438575560; + + while (true) { + switch (var1) { + case -2089205474: + return var2; + case -1438575560: + default: + if (probeDistance(0.0F, var0) > probeDistance(1.0F, var0)) { + var1 = -135223718; + } else { + var1 = 1272717369; + } + break; + case -135223718: + var2 = 0.0F; + var1 = -2089205474; + break; + case 1272717369: + var2 = 1.0F; + var1 = -2089205474; + } + } + } + + private static float probeDistance(float var0, boolean var1) { + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var8 = 0.0F; + int var7 = -445587384; + + while (true) { + switch (var7) { + case -1423104044: + var8 = var0 * 2.0F + -1.0F; + var7 = 1432877320; + break; + case -726241627: + return Float.MAX_VALUE; + case -479408329: + var3 = 1.0F / DEPTH_PROBE.w; + var4 = DEPTH_PROBE.x * var3; + var5 = DEPTH_PROBE.y * var3; + var6 = DEPTH_PROBE.z * var3; + return (float)Math.sqrt(var4 * var4 + var5 * var5 + var6 * var6); + case -445587384: + default: + if (var1) { + var7 = 1883707055; + } else { + var7 = -1423104044; + } + break; + case 1432877320: + var2 = var8; + DEPTH_PROBE.set(0.0F, 0.0F, var2, 1.0F).mul(INVERSE_VIEW_PROJECTION); + if (Math.abs(DEPTH_PROBE.w) < 1.0E-6F) { + var7 = -726241627; + } else { + var7 = -479408329; + } + break; + case 1883707055: + var8 = var0 * 1.0F + 0.0F; + var7 = 1432877320; + } + } + } + + private static GpuSampler linearSampler() { + return RenderSystem.getSamplerCache().getClampToEdge(FilterMode.LINEAR); + } + + private static GpuSampler nearestSampler() { + return RenderSystem.getSamplerCache().getClampToEdge(FilterMode.NEAREST); + } + + private static float warmChannel(float var0, float var1) { + return 1.0F + (var0 - 1.0F) * var1; + } + + private static float red(int var0) { + return (var0 >> (996560288 ^ -996560272) + ((996560288 & -996560272) << 1) & (582093286 ^ -582093031) + ((582093286 & -582093031) << 1)) / 255.0F; + } + + private static float green(int var0) { + return (var0 >> (588714632 | -588714624) + (588714632 & -588714624) & (-610041063 ^ 610041318) + ((-610041063 & 610041318) << 1)) / 255.0F; + } + + private static float blue(int var0) { + return (var0 & (1170225433 ^ -1170225178) + ((1170225433 & -1170225178) << 1)) / 255.0F; + } + + private static Identifier id(String var0) { + return Identifier.fromNamespaceAndPath("evolution", var0); + } +} diff --git a/src/main/java/defpackage/aup.java b/src/main/java/defpackage/aup.java new file mode 100644 index 0000000..4121cb7 --- /dev/null +++ b/src/main/java/defpackage/aup.java @@ -0,0 +1,773 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.buffers.GpuBuffer; +import com.mojang.blaze3d.pipeline.BindGroupLayout; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet; +import com.mojang.blaze3d.shaders.UniformType; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.GpuDevice; +import com.mojang.blaze3d.systems.RenderPass; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.textures.FilterMode; +import com.mojang.blaze3d.textures.GpuSampler; +import com.mojang.blaze3d.textures.GpuTexture; +import com.mojang.blaze3d.textures.GpuTextureView; +import java.nio.ByteBuffer; +import java.util.Optional; +import java.util.function.Supplier; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import net.minecraft.resources.Identifier; +import net.minecraft.world.phys.Vec3; +import org.joml.Matrix4f; +import org.joml.Matrix4fc; +import org.joml.Vector4f; +import org.lwjgl.system.MemoryStack; + +public final class aup { + private static final String NAMESPACE = "evolution"; + private static final String UNIFORM_BLOCK = "BlurParams"; + private static final String SAMPLER_SOURCE = "SourceTex"; + private static final String SAMPLER_DEPTH = "DepthTex"; + private static final String SAMPLER_HISTORY = "HistoryTex"; + private static final Identifier VERTEX_SHADER = id( + "core/motionblur/fullscreen" + ); + private static final Identifier FRAGMENT_SHADER = id( + "core/motionblur/blur" + ); + private static final Identifier PIPELINE_ID = id( + "pipeline/motionblur/blur" + ); + private static final Supplier UNIFORM_LABEL = () -> "evolution_motionblur_uniforms"; + private static final Supplier PASS_LABEL = () -> "evolution_motionblur"; + private static final Supplier[] TARGET_LABELS = targetLabels(); + private static final String PIPELINE_FAILURE = "motion blur pipeline setup failed"; + private static final String FRAME_FAILURE = "motion blur frame failed"; + private static final int UNIFORM_SIZE = 208; + private static final int OFFSET_INVERSE_VIEW_PROJECTION = 0; + private static final int OFFSET_PREVIOUS_VIEW_PROJECTION = 64; + private static final int OFFSET_CAMERA_DELTA = 128; + private static final int OFFSET_CONTROLS = 144; + private static final int OFFSET_SCREEN = 160; + private static final int OFFSET_DEPTH = 176; + private static final int OFFSET_HAND_GUARD = 192; + private static final int FLOAT_SIZE = 4; + private static final int HISTORY_SLOTS = 2; + private static final GpuFormat TARGET_FORMAT = GpuFormat.RGBA8_UNORM; + private static final int TARGET_USAGE = 14; + private static final int UNIFORM_USAGE = 136; + private static final int TEXTURE_DEPTH = 1; + private static final int TEXTURE_MIP_LEVELS = 1; + private static final int COPY_MIP_LEVEL = 0; + private static final int COPY_ORIGIN = 0; + private static final int FULLSCREEN_VERTEX_COUNT = 3; + private static final int INSTANCE_COUNT = 1; + private static final int FIRST_VERTEX = 0; + private static final int FIRST_INSTANCE = 0; + private static final float ENABLED = 1.0F; + private static final float DISABLED = 0.0F; + private static final float PERCENT_SCALE = 0.01F; + private static final float REFERENCE_FRAME_SECONDS = 0.016666668F; + private static final float MAX_HISTORY_SECONDS = 0.06F; + private static final float MAX_HISTORY_WEIGHT = 0.85F; + private static final float HYBRID_HISTORY_FACTOR = 0.45F; + private static final float MAX_VELOCITY_SCALE = 8.0F; + private static final float HAND_GUARD_NEAR = 1.0F; + private static final float HAND_GUARD_FAR = 2.0F; + private static final double MIN_FRAME_SECONDS = 0.001; + private static final double MAX_FRAME_SECONDS = 0.1; + private static final double NANOS_PER_SECOND = 1.0E9; + private static final double MAX_CAMERA_STEP = 16.0; + private static final double STATIC_CAMERA_EPSILON = 1.0E-6; + private static final float WINDOW_DEPTH_LOW = 0.0F; + private static final float WINDOW_DEPTH_HIGH = 1.0F; + private static final float CLIP_SCALE_UNIT = 1.0F; + private static final float CLIP_BIAS_UNIT = 0.0F; + private static final float CLIP_SCALE_SIGNED = 2.0F; + private static final float CLIP_BIAS_SIGNED = -1.0F; + private static final float HOMOGENEOUS_EPSILON = 1.0E-7F; + private static final Matrix4f VIEW_PROJECTION = new Matrix4f(); + private static final Matrix4f PREVIOUS_VIEW_PROJECTION = new Matrix4f(); + private static final Matrix4f INVERSE_VIEW_PROJECTION = new Matrix4f(); + private static final Vector4f DEPTH_PROBE = new Vector4f(); + private static final GpuTexture[] TARGETS = new GpuTexture[2]; + private static final GpuTextureView[] TARGET_VIEWS = new GpuTextureView[2]; + private static RenderPipeline pipeline; + private static GpuBuffer uniformBuffer; + private static int targetWidth = -1; + private static int targetHeight = -1; + private static int slot; + private static boolean historyValid; + private static boolean previousViewValid; + private static double previousCameraX; + private static double previousCameraY; + private static double previousCameraZ; + private static long previousFrameNanos; + private static boolean disabledAfterError; + + private aup() { + } + + public static void render(CameraRenderState var0, Matrix4fc var1) { + vr var2 = vr.INSTANCE; + if (!disabledAfterError && var2.isEnabled()) { + if (var0 != null && var1 != null && var0.initialized && var0.viewRotationMatrix != null && var0.pos != null) { + if (!var2.thirdPerson.isEnabled() && !aqg.mc.options.getCameraType().isFirstPerson()) { + invalidate(); + } else if (afy.getInstance().isArmed()) { + invalidate(); + } else { + RenderTarget var3 = aqg.mc.gameRenderer.mainRenderTarget(); + if (var3.width > 0 && var3.height > 0 && var3.getColorTextureView() != null && var3.getDepthTextureView() != null) { + if (ensurePipeline() && ensureTargets(var3.width, var3.height)) { + VIEW_PROJECTION.set(var1).mul(var0.viewRotationMatrix); + Vec3 var4 = var0.pos; + float var5 = advanceFrameClock(); + int var6 = var2.usesVelocity() && previousViewValid + ? 1: 0; + double var7 = var4.x - previousCameraX; + double var9 = var4.y - previousCameraY; + double var11 = var4.z - previousCameraZ; + double var13 = var7 * var7 + var9 * var9 + var11 * var11; + if (var13 > 256.0) { + var6 = 0; + historyValid = (boolean)(((0)) != 0); + } + + boolean var15 = var2.usesHistory(); + float var16 = historyValid ? historyWeight(var2, var5) : 0.0F; + if (var6 == 0 && !var15) { + storeFrameState(var4); + } else if (!var15 && isCameraStatic(var13)) { + storeFrameState(var4); + } else { + try { + CommandEncoder var17 = RenderSystem.getDevice().createCommandEncoder(); + writeUniforms(var17, var2, var3, (boolean)((var6) != 0), var16, (float)var7, (float)var9, (float)var11, var5); + int var18 = slot; + int var19 = (1011740869 | -1011740868) + (1011740869 & -1011740868) - var18; + blur(var17, var3, var18, var19); + var17.copyTextureToTexture( + TARGETS[var18], + var3.getColorTexture(), + 0, + 0, + 0, + 0, + 0, + var3.width, + var3.height + ); + slot = var19; + historyValid = (boolean)(((1)) != 0); + storeFrameState(var4); + } catch (Throwable var20) { + fail( + "motion blur frame failed", var20 + ); + } + } + } + } + } + } + } + } + + public static void release() { + int var0 = -1964442455; + + while (true) { + switch (var0) { + case -1964442455: + default: + invalidate(); + if (RenderSystem.isOnRenderThread()) { + var0 = 709177744; + } else { + var0 = 1779341216; + } + break; + case 709177744: + closeTargets(); + var0 = 1779341216; + break; + case 1779341216: + return; + } + } + } + + private static void invalidate() { + historyValid = (boolean)(((0)) != 0); + previousViewValid = (boolean)(((0)) != 0); + previousFrameNanos = (6287336493103889296L ^ -6287336493103889296L) + ((6287336493103889296L & -6287336493103889296L) << 1); + } + + private static void storeFrameState(Vec3 var0) { + PREVIOUS_VIEW_PROJECTION.set(VIEW_PROJECTION); + previousCameraX = var0.x; + previousCameraY = var0.y; + previousCameraZ = var0.z; + previousViewValid = (boolean)(((1)) != 0); + } + + private static boolean isCameraStatic(double var0) { + int var3 = 0; + int var2 = 1449429293; + + while (true) { + switch (var2) { + case -2139325601: + var3 = 0; + var2 = 1695437127; + break; + case -1372523348: + var3 = 1; + var2 = 1695437127; + break; + case 232218319: + if (PREVIOUS_VIEW_PROJECTION.equals(VIEW_PROJECTION)) { + var2 = -1372523348; + } else { + var2 = -2139325601; + } + break; + case 1449429293: + default: + if (var0 < 1.0E-6) { + var2 = 232218319; + } else { + var2 = -2139325601; + } + break; + case 1695437127: + return (boolean)((var3) != 0); + } + } + } + + private static float advanceFrameClock() { + long var0 = (-1397452607105515753L | 1397452607105515753L) + (-1397452607105515753L & 1397452607105515753L); + long var2 = (8755169248099711228L ^ -8755169248099711228L) + ((8755169248099711228L & -8755169248099711228L) << 1); + double var4 = 0.0; + long var7 = (4804296484561252862L ^ -4804296484561252862L) + ((4804296484561252862L & -4804296484561252862L) << 1); + int var6 = -287883349; + + while (true) { + switch (var6) { + case -287883349: + default: + var0 = System.nanoTime(); + if (previousFrameNanos == (1218692673268138049L ^ -1218692673268138049L) + ((1218692673268138049L & -1218692673268138049L) << 1)) { + var6 = 1789062676; + } else { + var6 = 381517224; + } + break; + case 381517224: + var7 = var0 - previousFrameNanos; + var6 = 2006002381; + break; + case 1789062676: + var7 = (7123768937031464315L | -7123768937031464315L) + (7123768937031464315L & -7123768937031464315L); + var6 = 2006002381; + break; + case 2006002381: + var2 = var7; + previousFrameNanos = var0; + var4 = var2 / 1.0E9; + return (float)Math.clamp(var4, 0.001, 0.1); + } + } + } + + private static float velocityScale(vr var0, float var1) { + float var2 = 0.0F; + int var3 = 1577705157; + + while (true) { + switch (var3) { + case -1194224916: + return Math.min(var2 * (0.016666668F / var1), 8.0F); + case -800317038: + return var2; + case 1577705157: + } + + var2 = var0.strength.getCurrent() * 0.01F; + if (!var0.stableBlur.isEnabled()) { + var3 = -800317038; + } else { + var3 = -1194224916; + } + } + } + + private static float historyWeight(vr var0, float var1) { + if (!var0.usesHistory()) { + return 0.0F; + } + + float var2 = var0.strength.getCurrent() * 0.01F; + float var3 = var2 * 0.06F * (var0.usesVelocity() ? 0.45F : 1.0F); + return var3 <= 0.0F ? 0.0F : Math.min((float)Math.exp(-var1 / var3), 0.85F); + } + + private static void writeUniforms(CommandEncoder var0, vr var1, RenderTarget var2, boolean var3, float var4, float var5, float var6, float var7, float var8) { + VIEW_PROJECTION.invert(INVERSE_VIEW_PROJECTION); + MemoryStack var9 = MemoryStack.stackPush(); + + try { + ByteBuffer var10 = var9.calloc((92168672 ^ -92168464) + ((92168672 & -92168464) << 1)); + INVERSE_VIEW_PROJECTION.get(0, var10); + PREVIOUS_VIEW_PROJECTION.get(64, var10); + var10.putFloat(128, var5); + var10.putFloat(132, var6); + var10.putFloat(136, var7); + var10.putFloat(140, velocityScale(var1, var8)); + var10.putFloat(144, var1.samples.getCurrent()); + var10.putFloat(148, var1.maxLength.getCurrent() * 0.01F); + var10.putFloat(152, var4); + var10.putFloat(156, var3 ? 1.0F : 0.0F); + var10.putFloat(160, 1.0F / var2.width); + var10.putFloat(164, 1.0F / var2.height); + var10.putFloat(168, Math.max(var2.width, var2.height)); + boolean var11 = clipSpaceIsZeroToOne(); + var10.putFloat(176, var1.depthAware.isEnabled() ? 1.0F : 0.0F); + var10.putFloat(180, var11 ? 1.0F : 2.0F); + var10.putFloat(184, var11 ? 0.0F : -1.0F); + var10.putFloat(188, farDepthValue(var11)); + int var12 = var1.sharpHand.isEnabled() && aor.shaderPackInUse() + ? 1: 0; + var10.putFloat(192, var12 != 0 ? 1.0F : 0.0F); + var10.putFloat(196, var12 != 0 ? 2.0F : 0.0F); + var10.position((-925246897 ^ 925246897) + ((-925246897 & 925246897) << 1)); + var0.writeToBuffer( + uniformBuffer.slice( + (9070477239331584434L | -9070477239331584434L) + (9070477239331584434L & -9070477239331584434L), + (-4991093220819710603L ^ 4991093220819710811L) + ((-4991093220819710603L & 4991093220819710811L) << 1) + ), + var10 + ); + } catch (Throwable var14) { + if (var9 != null) { + try { + var9.close(); + } catch (Throwable var13) { + var14.addSuppressed(var13); + } + } + + throw var14; + } + + if (var9 != null) { + var9.close(); + } + } + + private static void blur(CommandEncoder var0, RenderTarget var1, int var2, int var3) { + RenderPass var4 = var0.createRenderPass(PASS_LABEL, TARGET_VIEWS[var2], Optional.empty()); + + try { + var4.setPipeline(pipeline); + RenderSystem.bindDefaultUniforms(var4); + var4.setUniform("BlurParams", uniformBuffer); + var4.bindTexture("SourceTex", var1.getColorTextureView(), linearSampler()); + var4.bindTexture( + "DepthTex", var1.getDepthTextureView(), nearestSampler() + ); + var4.bindTexture("HistoryTex", TARGET_VIEWS[var3], linearSampler()); + var4.draw( + 3, + 1, + 0, + (-1470788777 | 1470788777) + (-1470788777 & 1470788777) + ); + } catch (Throwable var8) { + if (var4 != null) { + try { + var4.close(); + } catch (Throwable var7) { + var8.addSuppressed(var7); + } + } + + throw var8; + } + + if (var4 != null) { + var4.close(); + } + } + + private static boolean ensurePipeline() { + try { + if (pipeline == null) { + Snippet[] var10000 = new Snippet[1]; + var10000[0] = RenderPipelines.POST_PROCESSING_SNIPPET; + pipeline = RenderPipeline.builder(var10000) + .withLocation(PIPELINE_ID) + .withVertexShader(VERTEX_SHADER) + .withFragmentShader(FRAGMENT_SHADER) + .withBindGroupLayout( + BindGroupLayout.builder() + .withUniform("BlurParams", UniformType.UNIFORM_BUFFER) + .withSampler("SourceTex") + .withSampler("DepthTex") + .withSampler("HistoryTex") + .build() + ) + .withColorTargetState(new ColorTargetState(Optional.empty(), TARGET_FORMAT, (-88810623 ^ 88810638) + ((-88810623 & 88810638) << 1))) + .withDepthStencilState(Optional.empty()) + .withCull((boolean)((((1683390801 | -1683390801) + (1683390801 & -1683390801))) != 0)) + .build(); + } + + GpuDevice var0 = RenderSystem.getDevice(); + if (uniformBuffer == null || uniformBuffer.isClosed()) { + uniformBuffer = var0.createBuffer( + UNIFORM_LABEL, + 136, + (2478165485512374618L | -2478165485512374410L) + (2478165485512374618L & -2478165485512374410L) + ); + } + + return (boolean)(((1)) != 0); + } catch (Throwable var1) { + fail("motion blur pipeline setup failed", var1); + return (boolean)(((0)) != 0); + } + } + + private static boolean ensureTargets(int var0, int var1) { + GpuDevice var2 = null; + int var3 = 0; + int var4 = 685865852; + + while (true) { + switch (var4) { + case -1974698803: + closeTargets(); + var3 = 0; + var4 = 1177491502; + break; + case -1332365186: + targetWidth = var0; + targetHeight = var1; + slot = 0; + historyValid = (boolean)(((0)) != 0); + return (boolean)(((1)) != 0); + case -815943744: + return (boolean)(((0)) != 0); + case -766982358: + if (targetHeight == var1) { + var4 = 1039802058; + } else { + var4 = -1974698803; + } + break; + case -312663819: + if (TARGETS[0] != null) { + var4 = 1835182528; + } else { + var4 = -1974698803; + } + break; + case 685865852: + default: + var2 = RenderSystem.tryGetDevice(); + if (var2 == null) { + var4 = -815943744; + } else { + var4 = -312663819; + } + break; + case 1039802058: + return (boolean)(((1)) != 0); + case 1177491502: + if (var3 < (-1599262154 ^ 1599262156) + ((-1599262154 & 1599262156) << 1)) { + var4 = 1320058862; + } else { + var4 = -1332365186; + } + break; + case 1320058862: + TARGETS[var3] = var2.createTexture( + TARGET_LABELS[var3], + 14, + TARGET_FORMAT, + var0, + var1, + 1, + (-1662513962 ^ 1662513963) + ((-1662513962 & 1662513963) << 1) + ); + TARGET_VIEWS[var3] = var2.createTextureView(TARGETS[var3]); + var3++; + var4 = 1177491502; + break; + case 1696769208: + if (targetWidth == var0) { + var4 = -766982358; + } else { + var4 = -1974698803; + } + break; + case 1835182528: + if (TARGETS[1] != null) { + var4 = 1696769208; + } else { + var4 = -1974698803; + } + } + } + } + + private static void closeTargets() { + int var0 = 0; + int var1 = 919569343; + + while (true) { + switch (var1) { + case -2043937595: + targetWidth = -1; + targetHeight = -1; + slot = 0; + return; + case -1883215577: + if (TARGETS[var0] != null) { + var1 = 1500988652; + } else { + var1 = 989575261; + } + break; + case -1224322841: + if (var0 < (1935709837 | -1935709835) + (1935709837 & -1935709835)) { + var1 = 1513706783; + } else { + var1 = -2043937595; + } + break; + case -214641441: + TARGET_VIEWS[var0].close(); + TARGET_VIEWS[var0] = null; + var1 = -1883215577; + break; + case 919569343: + default: + var0 = 0; + var1 = -1224322841; + break; + case 989575261: + var0++; + var1 = -1224322841; + break; + case 1500988652: + TARGETS[var0].close(); + TARGETS[var0] = null; + var1 = 989575261; + break; + case 1513706783: + if (TARGET_VIEWS[var0] != null) { + var1 = -214641441; + } else { + var1 = -1883215577; + } + } + } + } + + private static void closeUniformBuffer() { + int var0 = -1698179776; + + while (true) { + switch (var0) { + case -1698179776: + default: + if (uniformBuffer != null) { + var0 = 1900705184; + } else { + var0 = 37829853; + } + break; + case 37829853: + return; + case 1900705184: + uniformBuffer.close(); + uniformBuffer = null; + var0 = 37829853; + } + } + } + + private static void fail(String var0, Throwable var1) { + disabledAfterError = (boolean)(((1)) != 0); + id.error(Cif.SHADER, var0, var1); + closeTargets(); + closeUniformBuffer(); + invalidate(); + pipeline = null; + } + + private static boolean clipSpaceIsZeroToOne() { + GpuDevice var0 = null; + int var2 = 0; + int var1 = 711503026; + + while (true) { + switch (var1) { + case 266822331: + var2 = 0; + var1 = 1525988984; + break; + case 405874681: + if (var0.getDeviceInfo().isZZeroToOne()) { + var1 = 583024287; + } else { + var1 = 266822331; + } + break; + case 583024287: + var2 = 1; + var1 = 1525988984; + break; + case 711503026: + default: + var0 = RenderSystem.tryGetDevice(); + if (var0 != null) { + var1 = 405874681; + } else { + var1 = 266822331; + } + break; + case 1525988984: + return (boolean)((var2) != 0); + } + } + } + + private static float farDepthValue(boolean var0) { + float var2 = 0.0F; + int var1 = 1521447255; + + while (true) { + switch (var1) { + case -1022250666: + return var2; + case 519842814: + var2 = 1.0F; + var1 = -1022250666; + break; + case 1521447255: + default: + if (probeDistance(0.0F, var0) > probeDistance(1.0F, var0)) { + var1 = 1887316792; + } else { + var1 = 519842814; + } + break; + case 1887316792: + var2 = 0.0F; + var1 = -1022250666; + } + } + } + + private static float probeDistance(float var0, boolean var1) { + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var8 = 0.0F; + int var7 = 353634666; + + while (true) { + switch (var7) { + case -1657937327: + var8 = var0 * 1.0F + 0.0F; + var7 = -476766561; + break; + case -476766561: + var2 = var8; + DEPTH_PROBE.set(0.0F, 0.0F, var2, 1.0F).mul(INVERSE_VIEW_PROJECTION); + if (Math.abs(DEPTH_PROBE.w) < 1.0E-7F) { + var7 = 220376164; + } else { + var7 = 1641967578; + } + break; + case 220376164: + return Float.MAX_VALUE; + case 353634666: + default: + if (var1) { + var7 = -1657937327; + } else { + var7 = 1633260440; + } + break; + case 1633260440: + var8 = var0 * 2.0F + -1.0F; + var7 = -476766561; + break; + case 1641967578: + var3 = 1.0F / DEPTH_PROBE.w; + var4 = DEPTH_PROBE.x * var3; + var5 = DEPTH_PROBE.y * var3; + var6 = DEPTH_PROBE.z * var3; + return (float)Math.sqrt(var4 * var4 + var5 * var5 + var6 * var6); + } + } + } + + private static GpuSampler linearSampler() { + return RenderSystem.getSamplerCache().getClampToEdge(FilterMode.LINEAR); + } + + private static GpuSampler nearestSampler() { + return RenderSystem.getSamplerCache().getClampToEdge(FilterMode.NEAREST); + } + + private static Identifier id(String var0) { + return Identifier.fromNamespaceAndPath("evolution", var0); + } + + private static Supplier[] targetLabels() { + Supplier[] var0 = null; + int var1 = 0; + String var2 = null; + int var3 = -1107848311; + + while (true) { + switch (var3) { + case -1970613668: + if (var1 < (25153456 ^ -25153454) + ((25153456 & -25153454) << 1)) { + var3 = 1238865745; + } else { + var3 = -267006329; + } + break; + case -1107848311: + default: + var0 = new Supplier[2]; + var1 = 0; + var3 = -1970613668; + break; + case -267006329: + return var0; + case 1238865745: + var2 = "evolution_motionblur_target_" + var1; + var0[var1] = () -> var2; + var1++; + var3 = -1970613668; + } + } + } +} diff --git a/src/main/java/defpackage/auq.java b/src/main/java/defpackage/auq.java new file mode 100644 index 0000000..c7f5cdb --- /dev/null +++ b/src/main/java/defpackage/auq.java @@ -0,0 +1,825 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import it.unimi.dsi.fastutil.objects.Reference2FloatOpenHashMap; +import java.util.Arrays; +import net.minecraft.client.Camera; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.BlockPos.MutableBlockPos; +import net.minecraft.core.Direction.Axis; +import net.minecraft.util.Mth; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.Heightmap.Types; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.BooleanOp; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; +import org.joml.Vector3fc; + +public final class auq { + private static final long SCAN_INTERVAL_MS = 700L; + private static final float NO_SURFACE = Float.NaN; + private static final float MAX_LIGHT = 15.0F; + private static final float LIGHT_FLOOR = 0.16F; + private static final float LIGHT_CURVE = 1.4F; + private static final float BUILDUP_START = 0.55F; + private static final float DRIFT_SCALE = 0.17F; + private static final float DRIFT_MIN = 0.6F; + private static final float DRIFT_SPAN = 0.8F; + private static final float EDGE_FADE_START = 0.7F; + private static final float SURFACE_LIFT = 0.004F; + private static final float MELT_PER_SECOND = 0.011111111F; + private static final float MIN_VISIBLE = 0.001F; + private static final float BEHIND_CAMERA_DOT = -0.35F; + private static final double BEHIND_CAMERA_MIN_DISTANCE = 3.0; + private static final double ANCHOR_GRID = 1024.0; + private static final double ANCHOR_REBASE_DISTANCE = 2048.0; + private static final int HASH_MULTIPLIER_X = 668265261; + private static final int HASH_MULTIPLIER_Z = 374761393; + private static final int HASH_MIX = -2048144789; + private static final float HASH_SCALE = 5.960465E-8F; + private static final int COLOR_MAX = 255; + private static final double TOP_SLICE = 0.001; + private static final float PIXELS_PER_BLOCK = 16.0F; + private static final float HALF_CELL = 0.5F; + private final Reference2FloatOpenHashMap topCache = new Reference2FloatOpenHashMap(); + private final MutableBlockPos scanPos = new MutableBlockPos(); + private float[] surface = new float[0]; + private float[] light = new float[0]; + private float[] cellDrift = new float[0]; + private float[] cellTop = new float[0]; + private float buildup; + private int span; + private int radius = -1; + private int originX = -2147483648; + private int originZ = -2147483648; + private long scanTime; + private float cover; + private double anchorX = Double.NaN; + private double anchorZ = Double.NaN; + + public void reset() { + this.topCache.clear(); + this.cover = 0.0F; + this.radius = -1; + this.originX = -2147483648; + this.originZ = -2147483648; + this.anchorX = Double.NaN; + this.anchorZ = Double.NaN; + } + + public boolean isVisible() { + int var2 = 0; + int var1 = 1637726367; + + while (true) { + switch (var1) { + case -1827739991: + var2 = 1; + var1 = -1630983807; + break; + case -1630983807: + return (boolean)((var2) != 0); + case 1116003218: + var2 = 0; + var1 = -1630983807; + break; + case 1637726367: + default: + if (this.cover > 0.001F) { + var1 = -1827739991; + } else { + var1 = 1116003218; + } + } + } + } + + public void update(float var1, float var2, boolean var3) { + int var4 = -853873879; + + while (true) { + switch (var4) { + case -853873879: + default: + if (var3) { + var4 = 2062916729; + } else { + var4 = -662984297; + } + break; + case -662984297: + this.cover = Math.max(0.0F, this.cover - 0.011111111F * var1); + var4 = 1414266758; + break; + case 1414266758: + return; + case 2062916729: + this.cover = Math.min(1.0F, this.cover + var2 * var1); + var4 = 1414266758; + } + } + } + + public void draw(atd var1, Camera var2, ClientLevel var3, int var4, float var5, int var6, aur var7, float var8, int var9, int var10) { + Vec3 var11 = null; + BufferBuilder var12 = null; + int var13 = 1035802810; + + while (true) { + switch (var13) { + case -1597566051: + return; + case -505888750: + this.computeBuildup(var5); + var1.use(); + var1.setResolution(var9, var10); + var1.setTime(var8); + var1.setTintColor( + (var6 >> (-1503562015 | 1503562031) + (-1503562015 & 1503562031) & (-416584850 ^ 416585105) + ((-416584850 & 416585105) << 1)) / 255.0F, + (var6 >> (-1073501300 ^ 1073501308) + ((-1073501300 & 1073501308) << 1) & (601799429 | -601799174) + (601799429 & -601799174)) / 255.0F, + (var6 & (-1078680336 | 1078680591) + (-1078680336 & 1078680591)) / 255.0F + ); + var1.setTopLeftColor(var7.red(), var7.green(), var7.blue(), 1.0F); + var1.setFade(1.0F); + var1.setProgress(this.cover); + this.anchorX = anchor(this.anchorX, var11.x); + this.anchorZ = anchor(this.anchorZ, var11.z); + var1.setCameraPos((float)(var11.x - this.anchorX), (float)var11.y, (float)(var11.z - this.anchorZ)); + arj.setCurrentLayer(arj.positionColor()); + var12 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_COLOR); + this.emit(var12, var2, var11, var7); + arj.drawCurrent(var12); + return; + case 52018665: + var11 = var2.position(); + this.rescan(var3, var11, var4); + if (this.span == 0) { + var13 = 1161704473; + } else { + var13 = -505888750; + } + break; + case 553027895: + if (var1 == null) { + var13 = -1597566051; + } else { + var13 = 52018665; + } + break; + case 1035802810: + default: + if (this.isVisible()) { + var13 = 553027895; + } else { + var13 = -1597566051; + } + break; + case 1161704473: + return; + } + } + } + + private void computeCellTops(float var1) { + int var2 = this.span * this.span; + if (this.cellTop.length < var2) { + this.cellTop = new float[var2]; + } + + for (int var3 = 0; var3 < var2; var3++) { + float var4 = this.surface[var3]; + this.cellTop[var3] = Float.isNaN(var4) ? Float.NaN : var4 + var1 + this.layerDepth(this.cellDrift[var3]); + } + } + + private float layerDepth(float var1) { + return Math.round(this.buildup * var1 * 16.0F) / 16.0F; + } + + private void emit(BufferBuilder var1, Camera var2, Vec3 var3, aur var4) { + Vector3fc var5 = null; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = 0; + int var10 = 0; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = 0; + int var15 = 0; + int var16 = 0; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + int var27 = 0; + float var28 = 0.0F; + float var29 = 0.0F; + int var30 = 661739979; + + while (true) { + switch (var30) { + case -1755443614: + var27 = channel(var23) << (-1057163786 ^ 1057163810) + ((-1057163786 & 1057163810) << 1) + | channel(this.light[var16]) << (-746281316 | 746281332) + (-746281316 & 746281332) + | channel(var4.mix(var26)) << 8; + var28 = var18 + 1.0F; + var29 = var19 + 1.0F; + var1.addVertex(var18, var25, var19).setColor(var27); + var1.addVertex(var18, var25, var29).setColor(var27); + var1.addVertex(var28, var25, var29).setColor(var27); + var1.addVertex(var28, var25, var19).setColor(var27); + this.side( + var1, + this.neighbourTop(var14 - (1), var15), + var24, + var25, + var18, + var19, + var18, + var29, + var27 + ); + this.side( + var1, + this.neighbourTop(var14 + 1, var15), + var24, + var25, + var28, + var29, + var28, + var19, + var27 + ); + this.side( + var1, + this.neighbourTop(var14, var15 - ((-871447287 ^ 871447288) + ((-871447287 & 871447288) << 1))), + var24, + var25, + var28, + var19, + var18, + var19, + var27 + ); + this.side( + var1, + this.neighbourTop(var14, var15 + (810670450 ^ -810670449) + ((810670450 & -810670449) << 1)), + var24, + var25, + var18, + var29, + var28, + var29, + var27 + ); + var30 = 678257449; + break; + case -1723379590: + var14++; + var30 = -1474423736; + break; + case -1474423736: + if (var14 < this.span) { + var30 = 522851808; + } else { + var30 = -800076906; + } + break; + case -800076906: + return; + case -567389530: + var16 = var14 * this.span + var15; + var17 = this.surface[var16]; + if (Float.isNaN(var17)) { + var30 = 660029466; + } else { + var30 = -228440120; + } + break; + case -536226185: + var30 = 678257449; + break; + case -228440120: + var18 = (float)(var9 + var14 - var3.x); + var19 = (float)(var10 + var15 - var3.z); + var20 = var18 + 0.5F; + var21 = var19 + 0.5F; + var22 = Mth.sqrt(var20 * var20 + var21 * var21); + var23 = 1.0F - Mth.clamp((var22 - var11) / var12, 0.0F, 1.0F); + if (var23 <= 0.0F) { + var30 = 1584365723; + } else { + var30 = 1454628918; + } + break; + case -178970525: + if ((var20 * var6 + var25 * var7 + var21 * var8) / var26 < -0.35F) { + var30 = -536226185; + } else { + var30 = -1755443614; + } + break; + case 271585487: + if (var15 < this.span) { + var30 = -567389530; + } else { + var30 = -1723379590; + } + break; + case 522851808: + var15 = 0; + var30 = 271585487; + break; + case 660029466: + var30 = 678257449; + break; + case 661739979: + default: + var5 = var2.forwardVector(); + var6 = var5.x(); + var7 = var5.y(); + var8 = var5.z(); + var9 = this.originX - this.radius; + var10 = this.originZ - this.radius; + var11 = this.radius * 0.7F; + var12 = Math.max(this.radius - var11, 1.0F); + var13 = (float)(0.004F - var3.y); + this.computeCellTops(var13); + var14 = 0; + var30 = -1474423736; + break; + case 678257449: + var15++; + var30 = 271585487; + break; + case 1454628918: + var24 = var17 + var13; + var25 = this.cellTop[var16]; + var26 = Mth.sqrt(var20 * var20 + var25 * var25 + var21 * var21); + if (var26 > 3.0) { + var30 = -178970525; + } else { + var30 = -1755443614; + } + break; + case 1584365723: + var30 = 678257449; + } + } + } + + private float neighbourTop(int var1, int var2) { + int var3 = 114452626; + + while (true) { + switch (var3) { + case -1472120591: + return Float.NaN; + case -1271762734: + if (var1 < this.span) { + var3 = 2039154929; + } else { + var3 = -1472120591; + } + break; + case -169570242: + return this.cellTop[var1 * this.span + var2]; + case 114452626: + default: + if (var1 >= 0) { + var3 = 868513931; + } else { + var3 = -1472120591; + } + break; + case 868513931: + if (var2 >= 0) { + var3 = -1271762734; + } else { + var3 = -1472120591; + } + break; + case 2039154929: + if (var2 >= this.span) { + var3 = -1472120591; + } else { + var3 = -169570242; + } + } + } + } + + private void side(BufferBuilder var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9) { + float var10 = 0.0F; + float var12 = 0.0F; + int var11 = -959217594; + + while (true) { + switch (var11) { + case -1989410942: + return; + case -959217594: + default: + if (Float.isNaN(var2)) { + var11 = -919710194; + } else { + var11 = 263106677; + } + break; + case -919710194: + var12 = var3; + var11 = 225268505; + break; + case -220947846: + var1.addVertex(var5, var10, var6).setColor(var9); + var1.addVertex(var5, var4, var6).setColor(var9); + var1.addVertex(var7, var4, var8).setColor(var9); + var1.addVertex(var7, var10, var8).setColor(var9); + return; + case 225268505: + var10 = var12; + if (var4 <= var10) { + var11 = -1989410942; + } else { + var11 = -220947846; + } + break; + case 263106677: + var12 = Math.max(var3, var2); + var11 = 225268505; + } + } + } + + private void computeBuildup(float var1) { + float var2 = Mth.clamp((this.cover - 0.55F) / 0.45F, 0.0F, 1.0F); + this.buildup = var1 * var2 * var2 * (3.0F - 2.0F * var2); + } + + private void rescan(ClientLevel var1, Vec3 var2, int var3) { + int var4 = 0; + int var5 = 0; + long var6 = (-2242253828304803818L ^ 2242253828304803818L) + ((-2242253828304803818L & 2242253828304803818L) << 1); + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + int var15 = 0; + int var16 = 0; + int var17 = 0; + int var18 = 0; + int var19 = 0; + float var20 = 0.0F; + int var21 = 0; + float var22 = 0.0F; + int var23 = -626293698; + + while (true) { + switch (var23) { + case -1822438092: + var17 = var4 + var15; + var18 = var5 + var16; + var19 = var1.getHeight(Types.MOTION_BLOCKING, var17, var18); + if (var19 <= var11) { + var23 = 1035812203; + } else { + var23 = 572830452; + } + break; + case -1701607189: + var23 = -1686091809; + break; + case -1686091809: + var14++; + var23 = 149840353; + break; + case -1608090991: + var21 = var13 * this.span + var14; + this.surface[var21] = var19 - ((1562812938 ^ -1562812937) + ((1562812938 & -1562812937) << 1)) + var20; + this.scanPos.set(var17, var19, var18); + var22 = var1.getRawBrightness(this.scanPos, var12) / 15.0F; + this.light[var21] = 0.16F + 0.84000003F * (float)Math.pow(var22, 1.4F); + var23 = -1686091809; + break; + case -1472879970: + this.surface = new float[var8]; + this.light = new float[var8]; + var23 = -229794678; + break; + case -1127405785: + var12 = 0; + var23 = -258770196; + break; + case -1007620082: + return; + case -852254736: + this.cellDrift[var11 * this.span + var12] = 0.6F + 0.8F * smoothNoise((var9 + var11 + 0.5F) * 0.17F, (var10 + var12 + 0.5F) * 0.17F); + var12++; + var23 = -258770196; + break; + case -626293698: + default: + var4 = Mth.floor(var2.x); + var5 = Mth.floor(var2.z); + var6 = System.currentTimeMillis(); + if (var3 == this.radius) { + var23 = 1608211000; + } else { + var23 = -177687441; + } + break; + case -456317884: + var15 = var13 - var3; + var16 = var14 - var3; + if (var15 * var15 + var16 * var16 > var3 * var3) { + var23 = 1500526277; + } else { + var23 = -1822438092; + } + break; + case -307565987: + var11 = var1.getMinY(); + var12 = var1.getSkyDarken(); + var13 = 0; + var23 = 1436301081; + break; + case -258770196: + if (var12 < this.span) { + var23 = -852254736; + } else { + var23 = 349851430; + } + break; + case -229794678: + if (this.cellDrift.length < var8) { + var23 = 386701723; + } else { + var23 = -158157177; + } + break; + case -177687441: + this.radius = var3; + this.originX = var4; + this.originZ = var5; + this.scanTime = var6; + this.span = var3 * 3; + var8 = this.span * this.span; + if (this.surface.length < var8) { + var23 = -1472879970; + } else { + var23 = -229794678; + } + break; + case -158157177: + Arrays.fill(this.surface, 0, var8, Float.NaN); + var9 = var4 - var3; + var10 = var5 - var3; + var11 = 0; + var23 = 2070749744; + break; + case 149840353: + if (var14 < this.span) { + var23 = -456317884; + } else { + var23 = 805113618; + } + break; + case 349851430: + var11++; + var23 = 2070749744; + break; + case 386313166: + var14 = 0; + var23 = 149840353; + break; + case 386701723: + this.cellDrift = new float[var8]; + var23 = -158157177; + break; + case 572830452: + this.scanPos.set(var17, var19 - (1), var18); + var20 = this.supportTop(var1, var1.getBlockState(this.scanPos)); + if (Float.isNaN(var20)) { + var23 = -1701607189; + } else { + var23 = -1608090991; + } + break; + case 805113618: + var13++; + var23 = 1436301081; + break; + case 979602398: + return; + case 1035812203: + var23 = -1686091809; + break; + case 1436301081: + if (var13 < this.span) { + var23 = 386313166; + } else { + var23 = 979602398; + } + break; + case 1500526277: + var23 = -1686091809; + break; + case 1608211000: + if (var4 == this.originX) { + var23 = 1982032020; + } else { + var23 = -177687441; + } + break; + case 1982032020: + if (var5 == this.originZ) { + var23 = 2098885397; + } else { + var23 = -177687441; + } + break; + case 2070749744: + if (var11 < this.span) { + var23 = -1127405785; + } else { + var23 = -307565987; + } + break; + case 2098885397: + if (var6 - this.scanTime < (2348491373509354049L | -2348491373509353349L) + (2348491373509354049L & -2348491373509353349L)) { + var23 = -1007620082; + } else { + var23 = -177687441; + } + } + } + } + + private float supportTop(ClientLevel var1, BlockState var2) { + float var3 = 0.0F; + int var4 = 1115728966; + + while (true) { + switch (var4) { + case -1203807703: + var3 = this.computeSupportTop(var1, var2); + this.topCache.put(var2, var3); + return var3; + case -825009333: + return this.topCache.getFloat(var2); + case 1115728966: + } + + if (this.topCache.containsKey(var2)) { + var4 = -825009333; + } else { + var4 = -1203807703; + } + } + } + + private float computeSupportTop(ClientLevel var1, BlockState var2) { + VoxelShape var3 = null; + double var4 = 0.0; + VoxelShape var6 = null; + float var8 = 0.0F; + int var7 = 1994355124; + + while (true) { + switch (var7) { + case -1990290065: + return Float.NaN; + case -1206899121: + return Float.NaN; + case -915065256: + var4 = var3.max(Axis.Y); + if (var4 > 1.0) { + var7 = -466097706; + } else { + var7 = 574025823; + } + break; + case -792368063: + return var8; + case -682168949: + var8 = (float)var4; + var7 = -792368063; + break; + case -611228332: + var3 = var2.getShape(var1, this.scanPos); + if (var3.isEmpty()) { + var7 = -1990290065; + } else { + var7 = -915065256; + } + break; + case -466097706: + return Float.NaN; + case -166199361: + if (var2.getFluidState().isEmpty()) { + var7 = 1358151575; + } else { + var7 = -1206899121; + } + break; + case 574025823: + var6 = Shapes.box(0.0, Math.max(0.0, var4 - 0.001), 0.0, 1.0, var4, 1.0); + if (Shapes.joinIsNotEmpty(var6, var3, BooleanOp.ONLY_FIRST)) { + var7 = 1290687234; + } else { + var7 = -682168949; + } + break; + case 1290687234: + var8 = Float.NaN; + var7 = -792368063; + break; + case 1358151575: + if (var2.getRenderShape() == RenderShape.INVISIBLE) { + var7 = -1206899121; + } else { + var7 = -611228332; + } + break; + case 1994355124: + default: + if (!var2.isAir()) { + var7 = -166199361; + } else { + var7 = -1206899121; + } + } + } + } + + private static float smoothNoise(float var0, float var1) { + int var2 = Mth.floor(var0); + int var3 = Mth.floor(var1); + float var4 = var0 - var2; + float var5 = var1 - var3; + float var6 = var4 * var4 * (3.0F - 2.0F * var4); + float var7 = var5 * var5 * (3.0F - 2.0F * var5); + float var8 = lattice(var2, var3); + float var9 = lattice(var2 + 1, var3); + float var10 = lattice(var2, var3 + (-2045335220 | 2045335221) + (-2045335220 & 2045335221)); + float var11 = lattice(var2 + 1, var3 + (-164211443 | 164211444) + (-164211443 & 164211444)); + return Mth.lerp(var7, Mth.lerp(var6, var8, var9), Mth.lerp(var6, var10, var11)); + } + + private static float lattice(int var0, int var1) { + int var2 = var0 * ((1511859620 ^ -843594359) + ((1511859620 & -843594359) << 1)) ^ var1 * (374761393); + var2 ^= var2 >>> 15; + var2 *= -2048144789; + var2 ^= var2 >>> 13; + return (var2 & (-1439547266 | 1456324481) + (-1439547266 & 1456324481)) * 5.960465E-8F; + } + + private static int channel(float var0) { + return Mth.clamp( + Math.round(var0 * 255.0F), 0, (-1985747627 | 1985747882) + (-1985747627 & 1985747882) + ); + } + + private static double anchor(double var0, double var2) { + int var4 = -1683264964; + + while (true) { + switch (var4) { + case -1683264964: + default: + if (!Double.isNaN(var0)) { + var4 = -1597512760; + } else { + var4 = -1637526607; + } + break; + case -1637526607: + return Math.floor(var2 / 1024.0) * 1024.0; + case -1597512760: + if (Math.abs(var2 - var0) < 2048.0) { + var4 = -725939855; + } else { + var4 = -1637526607; + } + break; + case -725939855: + return var0; + } + } + } +} diff --git a/src/main/java/defpackage/aur.java b/src/main/java/defpackage/aur.java new file mode 100644 index 0000000..963fd27 --- /dev/null +++ b/src/main/java/defpackage/aur.java @@ -0,0 +1,85 @@ +package defpackage; + +import net.minecraft.client.renderer.fog.FogData; + +public final class aur { + private float start = Float.MAX_VALUE; + private float end = Float.MAX_VALUE; + private float red; + private float green; + private float blue; + + public void capture(FogData var1) { + this.start = Math.min(var1.environmentalStart, var1.renderDistanceStart); + this.end = Math.min(var1.environmentalEnd, var1.renderDistanceEnd); + this.red = var1.color.x; + this.green = var1.color.y; + this.blue = var1.color.z; + } + + public float mix(float var1) { + float var2 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + int var3 = -1341758481; + + while (true) { + switch (var3) { + case -2011078463: + var4 = 1.0F; + var3 = -17802223; + break; + case -1363923148: + if (var1 >= this.end) { + var3 = -2011078463; + } else { + var3 = -632929936; + } + break; + case -1341758481: + default: + if (this.end <= this.start) { + var3 = -1363923148; + } else { + var3 = 1440731067; + } + break; + case -668874925: + return var5; + case -632929936: + var4 = 0.0F; + var3 = -17802223; + break; + case -17802223: + return var4; + case 373453524: + var5 = Math.min(var2, 1.0F); + var3 = -668874925; + break; + case 1440731067: + var2 = (var1 - this.start) / (this.end - this.start); + if (var2 <= 0.0F) { + var3 = 1651957694; + } else { + var3 = 373453524; + } + break; + case 1651957694: + var5 = 0.0F; + var3 = -668874925; + } + } + } + + public float red() { + return this.red; + } + + public float green() { + return this.green; + } + + public float blue() { + return this.blue; + } +} diff --git a/src/main/java/defpackage/aus.java b/src/main/java/defpackage/aus.java new file mode 100644 index 0000000..c1fec96 --- /dev/null +++ b/src/main/java/defpackage/aus.java @@ -0,0 +1,567 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.buffers.GpuBuffer; +import com.mojang.blaze3d.pipeline.BindGroupLayout; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet; +import com.mojang.blaze3d.shaders.UniformType; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.GpuDevice; +import com.mojang.blaze3d.systems.RenderPass; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.textures.FilterMode; +import com.mojang.blaze3d.textures.GpuSampler; +import com.mojang.blaze3d.textures.GpuTexture; +import com.mojang.blaze3d.textures.GpuTextureView; +import java.nio.ByteBuffer; +import java.util.Optional; +import java.util.function.Supplier; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import net.minecraft.resources.Identifier; +import net.minecraft.world.phys.Vec3; +import org.joml.Matrix4f; +import org.joml.Matrix4fc; +import org.joml.Vector4f; +import org.lwjgl.system.MemoryStack; + +public final class aus { + private static final String NAMESPACE = "evolution"; + private static final String UNIFORM_BLOCK = "WetParams"; + private static final String SAMPLER_SOURCE = "SourceTex"; + private static final String SAMPLER_DEPTH = "DepthTex"; + private static final Identifier VERTEX_SHADER = id( + "core/wetworld/fullscreen" + ); + private static final Identifier FRAGMENT_SHADER = id("core/wetworld/wet"); + private static final Identifier PIPELINE_ID = id("pipeline/wetworld/wet"); + private static final Supplier UNIFORM_LABEL = () -> "evolution_wetworld_uniforms"; + private static final Supplier PASS_LABEL = () -> "evolution_wetworld"; + private static final Supplier TARGET_LABEL = () -> "evolution_wetworld_target"; + private static final String PIPELINE_FAILURE = "wet world pipeline setup failed"; + private static final String FRAME_FAILURE = "wet world frame failed"; + private static final int UNIFORM_SIZE = 272; + private static final int OFFSET_INVERSE_PROJECTION = 0; + private static final int OFFSET_PROJECTION = 64; + private static final int OFFSET_VIEW_TO_WORLD = 128; + private static final int OFFSET_CAMERA = 192; + private static final int OFFSET_SCREEN = 208; + private static final int OFFSET_SURFACE = 224; + private static final int OFFSET_QUALITY = 240; + private static final int OFFSET_FOG = 256; + private static final int FLOAT_SIZE = 4; + private static final GpuFormat TARGET_FORMAT = GpuFormat.RGBA8_UNORM; + private static final int TARGET_USAGE = 14; + private static final int UNIFORM_USAGE = 136; + private static final int TEXTURE_DEPTH = 1; + private static final int TEXTURE_MIP_LEVELS = 1; + private static final int COPY_MIP_LEVEL = 0; + private static final int COPY_ORIGIN = 0; + private static final int FULLSCREEN_VERTEX_COUNT = 3; + private static final int INSTANCE_COUNT = 1; + private static final int FIRST_VERTEX = 0; + private static final int FIRST_INSTANCE = 0; + private static final float ENABLED = 1.0F; + private static final float DISABLED = 0.0F; + private static final float WINDOW_DEPTH_LOW = 0.0F; + private static final float WINDOW_DEPTH_HIGH = 1.0F; + private static final float CLIP_SCALE_UNIT = 1.0F; + private static final float CLIP_BIAS_UNIT = 0.0F; + private static final float CLIP_SCALE_SIGNED = 2.0F; + private static final float CLIP_BIAS_SIGNED = -1.0F; + private static final float HOMOGENEOUS_EPSILON = 1.0E-7F; + private static final long TIME_PERIOD_MS = 120000L; + private static final float MILLIS_PER_SECOND = 1000.0F; + private static final float BLOCKS_PER_CHUNK = 16.0F; + private static final float FOG_START_RATIO = 0.75F; + private static final float DEFAULT_VIEW_DISTANCE = 8.0F; + private static final Matrix4f PROJECTION = new Matrix4f(); + private static final Matrix4f INVERSE_PROJECTION = new Matrix4f(); + private static final Matrix4f VIEW_TO_WORLD = new Matrix4f(); + private static final Vector4f DEPTH_PROBE = new Vector4f(); + private static RenderPipeline pipeline; + private static GpuBuffer uniformBuffer; + private static GpuTexture target; + private static GpuTextureView targetView; + private static int targetWidth = -1; + private static int targetHeight = -1; + private static boolean disabledAfterError; + + private aus() { + } + + public static void render(CameraRenderState var0, Matrix4fc var1) { + tr var2 = tr.INSTANCE; + if (!disabledAfterError && var2.usesWetReflections()) { + if (var0 != null && var1 != null && var0.initialized && var0.viewRotationMatrix != null && var0.pos != null) { + if (!aor.shaderPackInUse()) { + RenderTarget var3 = aqg.mc.gameRenderer.mainRenderTarget(); + if (var3.width > 0 && var3.height > 0 && var3.getColorTextureView() != null && var3.getDepthTextureView() != null) { + if (ensurePipeline() && ensureTarget(var3.width, var3.height)) { + PROJECTION.set(var1); + PROJECTION.invert(INVERSE_PROJECTION); + VIEW_TO_WORLD.set(var0.viewRotationMatrix).transpose(); + + try { + CommandEncoder var4 = RenderSystem.getDevice().createCommandEncoder(); + writeUniforms(var4, var2, var3, var0.pos); + shade(var4, var3); + var4.copyTextureToTexture( + target, + var3.getColorTexture(), + 0, + 0, + 0, + 0, + 0, + var3.width, + var3.height + ); + } catch (Throwable var5) { + fail( + "wet world frame failed", + var5 + ); + } + } + } + } + } + } + } + + public static void release() { + int var0 = -130486708; + + while (true) { + switch (var0) { + case -528006995: + closeTarget(); + var0 = 1064480013; + break; + case -130486708: + default: + if (RenderSystem.isOnRenderThread()) { + var0 = -528006995; + } else { + var0 = 1064480013; + } + break; + case 1064480013: + return; + } + } + } + + private static void writeUniforms(CommandEncoder var0, tr var1, RenderTarget var2, Vec3 var3) { + boolean var4 = clipSpaceIsZeroToOne(); + float var5 = viewDistanceBlocks(); + MemoryStack var6 = MemoryStack.stackPush(); + + try { + ByteBuffer var7 = var6.calloc((1312032166 | -1312031894) + (1312032166 & -1312031894)); + INVERSE_PROJECTION.get(0, var7); + PROJECTION.get(64, var7); + VIEW_TO_WORLD.get(128, var7); + var7.putFloat(192, (float)var3.x); + var7.putFloat(196, (float)var3.y); + var7.putFloat(200, (float)var3.z); + var7.putFloat(204, farDepthValue(var4)); + var7.putFloat(208, var2.width); + var7.putFloat(212, var2.height); + var7.putFloat(216, var4 ? 1.0F : 2.0F); + var7.putFloat(220, var4 ? 0.0F : -1.0F); + var7.putFloat(224, var1.reflectionStrength()); + var7.putFloat(228, var1.wetDarkening()); + var7.putFloat( + 232, + (float)(System.currentTimeMillis() % ((-5761257761260583295L ^ 5761257761260703295L) + ((-5761257761260583295L & 5761257761260703295L) << 1))) + / 1000.0F + ); + var7.putFloat(236, var1.wetAmount()); + var7.putFloat(240, var1.reflectionQualityIndex()); + var7.putFloat(244, var1.usesWetRipples() ? 1.0F : 0.0F); + var7.putFloat(248, var1.rippleSpeed()); + var7.putFloat(252, var1.rainStrength()); + var7.putFloat(256, var5 * 0.75F); + var7.putFloat(260, var5); + var0.writeToBuffer( + uniformBuffer.slice( + (-9066482934881608832L | 9066482934881608832L) + (-9066482934881608832L & 9066482934881608832L), + (7395822484469995009L ^ -7395822484469994737L) + ((7395822484469995009L & -7395822484469994737L) << 1) + ), + var7 + ); + } catch (Throwable var10) { + if (var6 != null) { + try { + var6.close(); + } catch (Throwable var9) { + var10.addSuppressed(var9); + } + } + + throw var10; + } + + if (var6 != null) { + var6.close(); + } + } + + private static void shade(CommandEncoder var0, RenderTarget var1) { + RenderPass var2 = var0.createRenderPass(PASS_LABEL, targetView, Optional.empty()); + + try { + var2.setPipeline(pipeline); + RenderSystem.bindDefaultUniforms(var2); + var2.setUniform("WetParams", uniformBuffer); + var2.bindTexture( + "SourceTex", var1.getColorTextureView(), linearSampler() + ); + var2.bindTexture("DepthTex", var1.getDepthTextureView(), nearestSampler()); + var2.draw( + 3, + 1, + 0, + (1488788925 ^ -1488788925) + ((1488788925 & -1488788925) << 1) + ); + } catch (Throwable var6) { + if (var2 != null) { + try { + var2.close(); + } catch (Throwable var5) { + var6.addSuppressed(var5); + } + } + + throw var6; + } + + if (var2 != null) { + var2.close(); + } + } + + private static boolean ensurePipeline() { + try { + if (pipeline == null) { + Snippet[] var10000 = new Snippet[1]; + var10000[0] = RenderPipelines.POST_PROCESSING_SNIPPET; + pipeline = RenderPipeline.builder(var10000) + .withLocation(PIPELINE_ID) + .withVertexShader(VERTEX_SHADER) + .withFragmentShader(FRAGMENT_SHADER) + .withBindGroupLayout( + BindGroupLayout.builder() + .withUniform("WetParams", UniformType.UNIFORM_BUFFER) + .withSampler("SourceTex") + .withSampler("DepthTex") + .build() + ) + .withColorTargetState(new ColorTargetState(Optional.empty(), TARGET_FORMAT, (974516584 ^ -974516569) + ((974516584 & -974516569) << 1))) + .withDepthStencilState(Optional.empty()) + .withCull((boolean)((((973297174 ^ -973297174) + ((973297174 & -973297174) << 1))) != 0)) + .build(); + } + + GpuDevice var0 = RenderSystem.getDevice(); + if (uniformBuffer == null || uniformBuffer.isClosed()) { + uniformBuffer = var0.createBuffer( + UNIFORM_LABEL, + 136, + (1680005599001854860L | -1680005599001854588L) + (1680005599001854860L & -1680005599001854588L) + ); + } + + return (boolean)(((1)) != 0); + } catch (Throwable var1) { + fail( + "wet world pipeline setup failed", + var1 + ); + return (boolean)(((0)) != 0); + } + } + + private static boolean ensureTarget(int var0, int var1) { + GpuDevice var2 = null; + int var3 = -2086252582; + + while (true) { + switch (var3) { + case -2086252582: + default: + var2 = RenderSystem.tryGetDevice(); + if (var2 == null) { + var3 = 1335537622; + } else { + var3 = -990000731; + } + break; + case -1500059349: + if (targetHeight == var1) { + var3 = 1609529385; + } else { + var3 = -970447321; + } + break; + case -990000731: + if (target != null) { + var3 = 319410416; + } else { + var3 = -970447321; + } + break; + case -970447321: + closeTarget(); + target = var2.createTexture( + TARGET_LABEL, + 14, + TARGET_FORMAT, + var0, + var1, + 1, + (429499396 ^ -429499395) + ((429499396 & -429499395) << 1) + ); + targetView = var2.createTextureView(target); + targetWidth = var0; + targetHeight = var1; + return (boolean)(((1)) != 0); + case 319410416: + if (targetWidth == var0) { + var3 = -1500059349; + } else { + var3 = -970447321; + } + break; + case 1335537622: + return (boolean)(((0)) != 0); + case 1609529385: + return (boolean)(((1)) != 0); + } + } + } + + private static float viewDistanceBlocks() { + int var0 = 1143679283; + + while (true) { + switch (var0) { + case -1595619709: + return 128.0F; + case 232909955: + return aqg.mc.options.getEffectiveRenderDistance() * 16.0F; + case 1143679283: + } + + if (aqg.mc.options == null) { + var0 = -1595619709; + } else { + var0 = 232909955; + } + } + } + + private static boolean clipSpaceIsZeroToOne() { + GpuDevice var0 = null; + int var2 = 0; + int var1 = 1271735935; + + while (true) { + switch (var1) { + case -1860736857: + var2 = 0; + var1 = 1274572838; + break; + case 1143958043: + if (var0.getDeviceInfo().isZZeroToOne()) { + var1 = 1586699267; + } else { + var1 = -1860736857; + } + break; + case 1271735935: + default: + var0 = RenderSystem.tryGetDevice(); + if (var0 != null) { + var1 = 1143958043; + } else { + var1 = -1860736857; + } + break; + case 1274572838: + return (boolean)((var2) != 0); + case 1586699267: + var2 = 1; + var1 = 1274572838; + } + } + } + + private static float farDepthValue(boolean var0) { + float var2 = 0.0F; + int var1 = -225090309; + + while (true) { + switch (var1) { + case -2011030704: + var2 = 0.0F; + var1 = 1881779775; + break; + case -225090309: + default: + if (probeDistance(0.0F, var0) > probeDistance(1.0F, var0)) { + var1 = -2011030704; + } else { + var1 = 699308090; + } + break; + case 699308090: + var2 = 1.0F; + var1 = 1881779775; + break; + case 1881779775: + return var2; + } + } + } + + private static float probeDistance(float var0, boolean var1) { + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var8 = 0.0F; + int var7 = 795227156; + + while (true) { + switch (var7) { + case -1175740486: + var8 = var0 * 2.0F + -1.0F; + var7 = 383817760; + break; + case -119555102: + return Float.MAX_VALUE; + case 378962019: + var3 = 1.0F / DEPTH_PROBE.w; + var4 = DEPTH_PROBE.x * var3; + var5 = DEPTH_PROBE.y * var3; + var6 = DEPTH_PROBE.z * var3; + return (float)Math.sqrt(var4 * var4 + var5 * var5 + var6 * var6); + case 383817760: + var2 = var8; + DEPTH_PROBE.set(0.0F, 0.0F, var2, 1.0F).mul(INVERSE_PROJECTION); + if (Math.abs(DEPTH_PROBE.w) < 1.0E-7F) { + var7 = -119555102; + } else { + var7 = 378962019; + } + break; + case 795227156: + default: + if (var1) { + var7 = 2075912559; + } else { + var7 = -1175740486; + } + break; + case 2075912559: + var8 = var0 * 1.0F + 0.0F; + var7 = 383817760; + } + } + } + + private static GpuSampler linearSampler() { + return RenderSystem.getSamplerCache().getClampToEdge(FilterMode.LINEAR); + } + + private static GpuSampler nearestSampler() { + return RenderSystem.getSamplerCache().getClampToEdge(FilterMode.NEAREST); + } + + private static void closeTarget() { + int var0 = -61482969; + + while (true) { + switch (var0) { + case -1824351152: + targetWidth = -1; + targetHeight = -1; + return; + case -1576387398: + target.close(); + target = null; + var0 = -1824351152; + break; + case -162376637: + targetView.close(); + targetView = null; + var0 = 932499511; + break; + case -61482969: + default: + if (targetView != null) { + var0 = -162376637; + } else { + var0 = 932499511; + } + break; + case 932499511: + if (target != null) { + var0 = -1576387398; + } else { + var0 = -1824351152; + } + } + } + } + + private static void closeUniformBuffer() { + int var0 = -1972745256; + + while (true) { + switch (var0) { + case -1972745256: + default: + if (uniformBuffer != null) { + var0 = 194560657; + } else { + var0 = 714143939; + } + break; + case -824004733: + uniformBuffer.close(); + var0 = 714143939; + break; + case 194560657: + if (!uniformBuffer.isClosed()) { + var0 = -824004733; + } else { + var0 = 714143939; + } + break; + case 714143939: + uniformBuffer = null; + return; + } + } + } + + private static void fail(String var0, Throwable var1) { + disabledAfterError = (boolean)(((1)) != 0); + id.error(Cif.SHADER, var0, var1); + closeTarget(); + closeUniformBuffer(); + pipeline = null; + } + + private static Identifier id(String var0) { + return Identifier.fromNamespaceAndPath("evolution", var0); + } +} diff --git a/src/main/java/defpackage/aut.java b/src/main/java/defpackage/aut.java new file mode 100644 index 0000000..6ecda01 --- /dev/null +++ b/src/main/java/defpackage/aut.java @@ -0,0 +1,380 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.core.BlockPos; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; + +public final class aut { + private static final double MAX_DISTANCE_SQR = 1024.0; + private static final int REBUILD_GRACE_TICKS = 2; + private static final int REBUILD_FLAGS = 10; + private static final Map ACTIVE = new HashMap<>(); + private static final Set HIDDEN = ConcurrentHashMap.newKeySet(); + + private aut() { + } + + public static void start(ClientLevel var0, BlockPos var1, BlockState var2, Player var3, InteractionHand var4, auu var5, boolean var6) { + Object var7 = null; + int var8 = 0; + BlockPos var9 = null; + Object var10 = null; + int var12 = 0; + int var11 = 1068602997; + + while (true) { + switch (var11) { + case -1850157855: + var12 = 0; + var11 = -1334262450; + break; + case -1334262450: + var8 = var12; + if (var8 == 0) { + var11 = -130278374; + } else { + var11 = 620150698; + } + break; + case -1065187068: + reveal(var0, var9); + var11 = 1927451047; + break; + case -130278374: + if (!var6) { + var11 = 1316706374; + } else { + var11 = 620150698; + } + break; + case 620150698: + var9 = var1.immutable(); + var10 = new auv(var0, var9, var2, (boolean)((var8) != 0), var3, var4, var5); + ACTIVE.put(var9, (auv)var10); + if (var8 != 0) { + var11 = 1314137748; + } else { + var11 = -1065187068; + } + break; + case 657176135: + return; + case 1068602997: + default: + var7 = Minecraft.getInstance(); + if (var1.distToCenterSqr(((Minecraft)var7).gameRenderer.mainCamera().position()) > 1024.0) { + var11 = 657176135; + } else { + var11 = 1316971865; + } + break; + case 1314137748: + HIDDEN.add(var9); + var11 = 1927451047; + break; + case 1316706374: + return; + case 1316971865: + if (var2.getRenderShape() == RenderShape.MODEL) { + var11 = 1915538526; + } else { + var11 = -1850157855; + } + break; + case 1915538526: + var12 = 1; + var11 = -1334262450; + break; + case 1927451047: + return; + } + } + } + + public static boolean isHidden(BlockPos var0) { + int var2 = 0; + int var1 = -1237856882; + + while (true) { + switch (var1) { + case -1237856882: + default: + if (!HIDDEN.isEmpty()) { + var1 = 958039585; + } else { + var1 = 1488546566; + } + break; + case 417475355: + var2 = 1; + var1 = 512359959; + break; + case 512359959: + return (boolean)((var2) != 0); + case 958039585: + if (HIDDEN.contains(var0)) { + var1 = 417475355; + } else { + var1 = 1488546566; + } + break; + case 1488546566: + var2 = 0; + var1 = 512359959; + } + } + } + + public static void tick(ClientLevel var0) { + Iterator var1 = null; + auv var2 = null; + int var3 = -2140835523; + + while (true) { + switch (var3) { + case -2140835523: + default: + if (ACTIVE.isEmpty()) { + var3 = -13766968; + } else { + var3 = 1637665520; + } + break; + case -1853660133: + var2 = (auv)var1.next(); + if (var2.level() != var0) { + var3 = -359404063; + } else { + var3 = 1375756639; + } + break; + case -1527594502: + var2.tick(); + if (var2.finished()) { + var3 = 1571424588; + } else { + var3 = -463220130; + } + break; + case -890242843: + if (var1.hasNext()) { + var3 = -1853660133; + } else { + var3 = -154720539; + } + break; + case -463220130: + if (var2.expired((1317524977 | -1317524975) + (1317524977 & -1317524975))) { + var3 = 56130510; + } else { + var3 = 389946842; + } + break; + case -359404063: + HIDDEN.remove(var2.pos()); + var1.remove(); + var3 = -890242843; + break; + case -154720539: + return; + case -13766968: + return; + case 56130510: + var1.remove(); + var3 = 389946842; + break; + case 140378299: + reveal(var0, var2.pos()); + var1.remove(); + var3 = -890242843; + break; + case 389946842: + var3 = -890242843; + break; + case 1375756639: + if (var0.getBlockState(var2.pos()) != var2.state()) { + var3 = 140378299; + } else { + var3 = -1527594502; + } + break; + case 1571424588: + reveal(var0, var2.pos()); + var3 = -463220130; + break; + case 1637665520: + var1 = ACTIVE.values().iterator(); + var3 = -890242843; + } + } + } + + public static void submit(PoseStack var0, SubmitNodeCollector var1, float var2) { + Vec3 var3 = null; + Iterator var4 = null; + auv var5 = null; + int var6 = -1188485087; + + while (true) { + switch (var6) { + case -1531045557: + var6 = 452354845; + break; + case -1373285676: + var3 = Minecraft.getInstance().gameRenderer.mainCamera().position(); + var4 = ACTIVE.values().iterator(); + var6 = 452354845; + break; + case -1188485087: + default: + if (ACTIVE.isEmpty()) { + var6 = -789178340; + } else { + var6 = -1373285676; + } + break; + case -972437209: + var5 = (auv)var4.next(); + if (var5.rendersModel()) { + var6 = 2069405733; + } else { + var6 = -1531045557; + } + break; + case -789178340: + return; + case 452354845: + if (var4.hasNext()) { + var6 = -972437209; + } else { + var6 = 909104457; + } + break; + case 909104457: + return; + case 2069405733: + var5.submit(var0, var1, var3, var2); + var6 = -1531045557; + } + } + } + + public static void applyBlockEntity(BlockPos var0, PoseStack var1, float var2) { + auv var3 = null; + int var4 = 329579750; + + while (true) { + switch (var4) { + case -1763502002: + var3.apply(var1, var2); + var4 = -131752903; + break; + case -1613434883: + return; + case -131752903: + return; + case 329579750: + default: + if (!ACTIVE.isEmpty()) { + var4 = 1377550144; + } else { + var4 = -1613434883; + } + break; + case 1119756644: + var3 = ACTIVE.get(var0); + if (var3 != null) { + var4 = -1763502002; + } else { + var4 = -131752903; + } + break; + case 1377550144: + if (var0 == null) { + var4 = -1613434883; + } else { + var4 = 1119756644; + } + } + } + } + + public static void clear() { + ClientLevel var0 = null; + Iterator var1 = null; + auv var2 = null; + int var3 = 1096784992; + + while (true) { + switch (var3) { + case -681970607: + var2 = (auv)var1.next(); + if (var2.level() == var0) { + var3 = 1653127033; + } else { + var3 = -127790807; + } + break; + case -127790807: + var3 = 424098967; + break; + case 424098967: + if (var1.hasNext()) { + var3 = -681970607; + } else { + var3 = 1446457787; + } + break; + case 1096784992: + default: + var0 = Minecraft.getInstance().level; + var1 = ACTIVE.values().iterator(); + var3 = 424098967; + break; + case 1446457787: + ACTIVE.clear(); + HIDDEN.clear(); + return; + case 1653127033: + reveal(var0, var2.pos()); + var3 = -127790807; + } + } + } + + private static void reveal(ClientLevel var0, BlockPos var1) { + BlockState var2 = null; + int var3 = -2047618073; + + while (true) { + switch (var3) { + case -2047618073: + default: + if (HIDDEN.remove(var1)) { + var3 = -319624288; + } else { + var3 = -1100022955; + } + break; + case -1100022955: + return; + case -319624288: + var2 = var0.getBlockState(var1); + var0.sendBlockUpdated(var1, var2, var2, (81940158 ^ -81940148) + ((81940158 & -81940148) << 1)); + var3 = -1100022955; + } + } + } +} diff --git a/src/main/java/defpackage/auu.java b/src/main/java/defpackage/auu.java new file mode 100644 index 0000000..9eb7e1b --- /dev/null +++ b/src/main/java/defpackage/auu.java @@ -0,0 +1,4 @@ +package defpackage; + +public record auu(int durationTicks, float slideDistance, float tiltRadians, float startScale) { +} diff --git a/src/main/java/defpackage/auv.java b/src/main/java/defpackage/auv.java new file mode 100644 index 0000000..731b89c --- /dev/null +++ b/src/main/java/defpackage/auv.java @@ -0,0 +1,571 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.EnumSet; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.block.MovingBlockRenderState; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos.MutableBlockPos; +import net.minecraft.core.Direction.AxisDirection; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.VoxelShape; +import org.joml.Quaternionf; +import org.joml.Vector3f; + +final class auv { + private static final float SLIDE_X = 0.1F; + private static final float SLIDE_Y = 0.2F; + private static final float SLIDE_Z = 0.2F; + private static final float PIVOT_X = 0.5F; + private static final float PIVOT_Y = -0.5F; + private static final float PIVOT_Z = 0.5F; + private static final float SLIDE_BASE = curveBase(0.9F); + private static final float ROTATION_BASE = curveBase(-0.08F); + private static final float SCALE_BASE = curveBase(-0.7F); + private static final float FINAL_SCALE = 0.999F; + private static final float HALF_BLOCK = 0.5F; + private static final float NEIGHBOR_NEAR_EDGE = 0.25F; + private static final float NEIGHBOR_FAR_EDGE = 0.75F; + private static final float EPSILON = 1.0E-6F; + private static final int NO_OUTLINE = 0; + private static final Direction[] DIRECTIONS = Direction.values(); + private final ClientLevel level; + private final BlockPos pos; + private final BlockState state; + private final boolean rendersModel; + private final int lifetime; + private final float yAngle; + private final float slideY; + private final float slideZ; + private final float tilt; + private final float startScale; + private final float offsetX; + private final float offsetY; + private final float offsetZ; + private final MovingBlockRenderState renderState = new MovingBlockRenderState(); + private final Quaternionf rotation = new Quaternionf(); + private int age; + + auv(ClientLevel var1, BlockPos var2, BlockState var3, boolean var4, Player var5, InteractionHand var6, auu var7) { + this.level = var1; + this.pos = var2; + this.state = var3; + this.rendersModel = var4; + this.lifetime = var7.durationTicks(); + this.tilt = var7.tiltRadians(); + this.startScale = var7.startScale(); + Vec3 var8 = var3.getOffset(var2); + this.offsetX = (float)var8.x; + this.offsetY = (float)var8.y; + this.offsetZ = (float)var8.z; + Vector3f var9 = slideDirection(var5, var6, var7.slideDistance()); + float var10 = var9.length(); + var9 = this.restrictToFreeNeighbors(var5, var9); + float var11 = var9.length(); + if (!(var11 < 1.0E-6F) && !(var10 < 1.0E-6F)) { + var9.div(var11); + this.yAngle = (float)Math.atan2(var9.x, var9.z); + float var12 = (float)Math.sin(-this.yAngle); + float var13 = (float)Math.cos(-this.yAngle); + this.slideY = var9.y * var10; + this.slideZ = (var9.z * var13 - var9.x * var12) * var10; + } else { + this.yAngle = 0.0F; + this.slideY = 0.0F; + this.slideZ = 0.0F; + } + + this.renderState.blockState = var3; + this.renderState.blockPos = var2; + this.renderState.randomSeedPos = var2; + this.renderState.biome = var1.getBiome(var2); + this.renderState.cardinalLighting = var1.cardinalLighting(); + this.renderState.lightEngine = var1.getLightEngine(); + } + + BlockPos pos() { + return this.pos; + } + + BlockState state() { + return this.state; + } + + ClientLevel level() { + return this.level; + } + + boolean rendersModel() { + return this.rendersModel; + } + + void tick() { + this.age += 1; + } + + boolean finished() { + int var2 = 0; + int var1 = 1700103877; + + while (true) { + switch (var1) { + case -128259346: + var2 = 0; + var1 = 650687428; + break; + case 645713751: + var2 = 1; + var1 = 650687428; + break; + case 650687428: + return (boolean)((var2) != 0); + case 1700103877: + default: + if (this.age >= this.lifetime) { + var1 = 645713751; + } else { + var1 = -128259346; + } + } + } + } + + boolean expired(int var1) { + int var3 = 0; + int var2 = 132302846; + + while (true) { + switch (var2) { + case 103846895: + var3 = 0; + var2 = 698004150; + break; + case 132302846: + default: + if (this.age >= this.lifetime + var1) { + var2 = 1980536493; + } else { + var2 = 103846895; + } + break; + case 698004150: + return (boolean)((var3) != 0); + case 1980536493: + var3 = 1; + var2 = 698004150; + } + } + } + + void submit(PoseStack var1, SubmitNodeCollector var2, Vec3 var3, float var4) { + var1.pushPose(); + var1.translate(this.pos.getX() - var3.x, this.pos.getY() - var3.y, this.pos.getZ() - var3.z); + this.apply(var1, var4); + var2.submitMovingBlock(var1, this.renderState, (-1672007661 | 1672007661) + (-1672007661 & 1672007661)); + var1.popPose(); + } + + void apply(PoseStack var1, float var2) { + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + int var6 = 0; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + int var12 = 0; + float var13 = 0.0F; + float var14 = 0.0F; + int var11 = -1408539366; + + while (true) { + switch (var11) { + case -1408539366: + default: + var3 = Math.min(1.0F, (this.age + var2) / (this.lifetime + (1630921677 | -1630921676) + (1630921677 & -1630921676))); + var1.translate(0.5F + this.offsetX, 0.5F + this.offsetY, 0.5F + this.offsetZ); + var1.mulPose(this.rotation.rotationY(this.yAngle)); + var4 = 1.0F - curve(var3, SLIDE_BASE); + var1.translate(0.0F, this.slideY * var4, this.slideZ * var4); + var5 = (1.0F - curve(var3, ROTATION_BASE)) * this.tilt; + if (this.slideY < 0.0F) { + var11 = 1739610739; + } else { + var11 = -588977304; + } + break; + case -915966747: + var7 = var13; + var8 = -var5; + if (var6 != 0) { + var11 = 1284567440; + } else { + var11 = 2070848727; + } + break; + case -588977304: + var12 = 0; + var11 = 654282330; + break; + case 654282330: + var6 = var12; + if (var6 != 0) { + var11 = 1149548808; + } else { + var11 = 1079353505; + } + break; + case 1079353505: + var13 = -0.5F; + var11 = -915966747; + break; + case 1149548808: + var13 = 0.5F; + var11 = -915966747; + break; + case 1284567440: + var14 = -var5; + var11 = 1775167386; + break; + case 1739610739: + var12 = 1; + var11 = 654282330; + break; + case 1775167386: + var9 = var14; + var1.translate(0.5F, var7, 0.5F); + var1.mulPose(this.rotation.rotationY(var8)); + var1.mulPose(this.rotation.rotationZ(var9)); + var1.translate(-0.5F, -var7, -0.5F); + var10 = this.startScale + (0.999F - this.startScale) * curve(var3, SCALE_BASE); + var1.scale(var10, var10, var10); + var1.mulPose(this.rotation.rotationY(-this.yAngle)); + var1.translate(-0.5F - this.offsetX, -0.5F - this.offsetY, -0.5F - this.offsetZ); + return; + case 2070848727: + var14 = var5; + var11 = 1775167386; + } + } + } + + private static Vector3f slideDirection(Player var0, InteractionHand var1, float var2) { + double var3 = 0.0; + Vector3f var5 = null; + int var6 = 0; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + int var11 = 0; + float var12 = 0.0F; + int var10 = 1554477390; + + while (true) { + switch (var10) { + case -1497793683: + var7 = var12; + var8 = var5.z * var6; + var9 = -var5.x * var6; + return new Vector3f((var8 * 0.1F + var5.x * 0.2F) * var2, var7 * var2, (var9 * 0.1F + var5.z * 0.2F) * var2); + case -1431261776: + var6 = -var6; + var10 = 1441384080; + break; + case -1219005465: + var12 = 0.2F; + var10 = -1497793683; + break; + case -313078247: + var11 = -1; + var10 = 931448663; + break; + case -127837918: + var11 = 1; + var10 = 931448663; + break; + case 931448663: + var6 = var11; + if (var1 != InteractionHand.MAIN_HAND) { + var10 = -1431261776; + } else { + var10 = 1441384080; + } + break; + case 995677204: + var12 = -0.2F; + var10 = -1497793683; + break; + case 1441384080: + if (var0.getXRot() > 0.0F) { + var10 = -1219005465; + } else { + var10 = 995677204; + } + break; + case 1554477390: + default: + var3 = Math.toRadians(var0.getYRot()); + var5 = new Vector3f((float)Math.sin(var3), 0.0F, (float)(-Math.cos(var3))); + if (var0.getMainArm() == HumanoidArm.RIGHT) { + var10 = -127837918; + } else { + var10 = -313078247; + } + } + } + } + + private Vector3f restrictToFreeNeighbors(Player var1, Vector3f var2) { + EnumSet var3 = null; + MutableBlockPos var4 = null; + Direction[] var5 = null; + int var6 = 0; + int var7 = 0; + Object var8 = null; + VoxelShape var9 = null; + int var10 = 1045582906; + + while (true) { + switch (var10) { + case -2134713448: + if (var2.y > 0.0F) { + var10 = 1024719596; + } else { + var10 = 314363177; + } + break; + case -2105001344: + if (!var3.contains(Direction.NORTH)) { + var10 = 1346839360; + } else { + var10 = -2032634969; + } + break; + case -2032634969: + if (var2.lengthSquared() < 1.0E-6F) { + var10 = -1301789818; + } else { + var10 = -1053378972; + } + break; + case -2006620793: + if (var9.max(var8.getAxis()) < 0.75) { + var10 = 2008833393; + } else { + var10 = -1073090980; + } + break; + case -2003900488: + if (var8.getAxisDirection() == AxisDirection.NEGATIVE) { + var10 = -2006620793; + } else { + var10 = -1073090980; + } + break; + case -1804266806: + if (var2.z < 0.0F) { + var10 = -2105001344; + } else { + var10 = -2032634969; + } + break; + case -1711413391: + var2.x = 0.0F; + var10 = -2134713448; + break; + case -1471251431: + if (var2.x < 0.0F) { + var10 = 1019611081; + } else { + var10 = -2134713448; + } + break; + case -1301789818: + if (!var3.isEmpty()) { + var10 = -803344777; + } else { + var10 = -1053378972; + } + break; + case -1160759735: + if (var3.contains(Direction.EAST)) { + var10 = -1471251431; + } else { + var10 = -1711413391; + } + break; + case -1073090980: + var7++; + var10 = 1211002244; + break; + case -1053378972: + return var2; + case -1051739681: + return new Vector3f(var8.getStepX(), var8.getStepY(), var8.getStepZ()); + case -836899693: + var8 = var5[var7]; + var4.setWithOffset(this.pos, (Direction)var8); + var9 = this.level.getBlockState(var4).getCollisionShape(this.level, var4); + if (!var9.isEmpty()) { + var10 = 986757328; + } else { + var10 = 2008833393; + } + break; + case -803344777: + var5 = Direction.orderedByNearest(var1); + var6 = var5.length; + var7 = 0; + var10 = 1366009132; + break; + case -211577313: + var7++; + var10 = 1366009132; + break; + case -166416296: + var8 = var5[var7]; + if (var3.contains(var8)) { + var10 = -1051739681; + } else { + var10 = -211577313; + } + break; + case -134326447: + if (!var3.contains(Direction.DOWN)) { + var10 = 783891934; + } else { + var10 = 1171498657; + } + break; + case 314363177: + if (var2.y < 0.0F) { + var10 = -134326447; + } else { + var10 = 1171498657; + } + break; + case 783891934: + var2.y = 0.0F; + var10 = 1171498657; + break; + case 986757328: + if (var8.getAxisDirection() == AxisDirection.POSITIVE) { + var10 = 1249007595; + } else { + var10 = -2003900488; + } + break; + case 1019611081: + if (!var3.contains(Direction.WEST)) { + var10 = -1711413391; + } else { + var10 = -2134713448; + } + break; + case 1024719596: + if (var3.contains(Direction.UP)) { + var10 = 314363177; + } else { + var10 = 783891934; + } + break; + case 1045582906: + default: + var3 = EnumSet.noneOf(Direction.class); + var4 = new MutableBlockPos(); + var5 = DIRECTIONS; + var6 = var5.length; + var7 = 0; + var10 = 1211002244; + break; + case 1171498657: + if (var2.z > 0.0F) { + var10 = 1229728861; + } else { + var10 = -1804266806; + } + break; + case 1211002244: + if (var7 < var6) { + var10 = -836899693; + } else { + var10 = 1493775758; + } + break; + case 1229728861: + if (var3.contains(Direction.SOUTH)) { + var10 = -1804266806; + } else { + var10 = 1346839360; + } + break; + case 1249007595: + if (!(var9.min(var8.getAxis()) > 0.25)) { + var10 = -2003900488; + } else { + var10 = 2008833393; + } + break; + case 1346839360: + var2.z = 0.0F; + var10 = -2032634969; + break; + case 1366009132: + if (var7 < var6) { + var10 = -166416296; + } else { + var10 = -1053378972; + } + break; + case 1493775758: + if (var2.x > 0.0F) { + var10 = -1160759735; + } else { + var10 = -1471251431; + } + break; + case 2008833393: + var3.add(var8); + var10 = -1073090980; + } + } + } + + private static float curveBase(float var0) { + float var2 = 0.0F; + int var1 = 1518761474; + + while (true) { + switch (var1) { + case -840386578: + var2 = (float)(Math.log(-var0) - 1.0); + var1 = 684930361; + break; + case 384768904: + var2 = (float)(-Math.log(var0)); + var1 = 684930361; + break; + case 684930361: + return var2; + case 1518761474: + default: + if (var0 > 0.0F) { + var1 = 384768904; + } else { + var1 = -840386578; + } + } + } + } + + private static float curve(float var0, float var1) { + return (float)(var1 * Math.pow(1.0 / var1 + 1.0, var0) - var1); + } +} diff --git a/src/main/java/defpackage/auw.java b/src/main/java/defpackage/auw.java new file mode 100644 index 0000000..7443b5b --- /dev/null +++ b/src/main/java/defpackage/auw.java @@ -0,0 +1,617 @@ +package defpackage; + +import com.mojang.blaze3d.platform.NativeImage; +import java.io.File; +import java.io.InputStream; +import java.nio.file.CopyOption; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.concurrent.ArrayBlockingQueue; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.resources.Identifier; +import org.jcodec.api.FrameGrab; +import org.jcodec.common.io.FileChannelWrapper; +import org.jcodec.common.io.NIOUtils; +import org.jcodec.common.model.ColorSpace; +import org.jcodec.common.model.Picture; +import org.jcodec.scale.ColorUtil; +import org.jcodec.scale.Transform; +import org.joml.Matrix3x2fStack; + +public final class auw implements aqo { + private static final String VIDEO_FAILURE = "menu video decode failed for {}"; + private static final String TEXTURE_PREFIX = "menu_bg_"; + private static final String THREAD_PREFIX = "EvoMenuVideo-"; + private static final String TEMP_PREFIX = "evo_menu_bg_"; + private static final String TEMP_SUFFIX = ".mp4"; + private static final String MISSING_RESOURCE = "missing resource "; + private static final int POOL_SIZE = 3; + private static final int TARGET_FPS = 30; + private static final long FRAME_NANOS = 33333333L; + private static final long RESYNC_FRAMES = 4L; + private final String id; + private final String resourcePath; + private final Identifier textureId; + private final ArrayBlockingQueue freeQueue = new ArrayBlockingQueue<>(3); + private final ArrayBlockingQueue readyQueue = new ArrayBlockingQueue<>(3); + private volatile Thread worker; + private volatile boolean failed; + private volatile boolean ready; + private volatile boolean terminated = (boolean)(((1)) != 0); + private volatile boolean pooled; + private volatile int videoWidth; + private volatile int videoHeight; + private volatile NativeImage displayImage; + private volatile DynamicTexture texture; + private Picture rgbPicture; + private Transform transform; + private long lastAdvanceNanos; + + public auw(String var1, String var2) { + this.id = var1; + this.resourcePath = var2; + this.textureId = bz.id("menu_bg_" + var1); + } + + @Override + public boolean extractable() { + return (boolean)(((1)) != 0); + } + + public boolean failed() { + return this.failed; + } + + public boolean ready() { + int var2 = 0; + int var1 = -837269092; + + while (true) { + switch (var1) { + case -1269056504: + var2 = 1; + var1 = 199363302; + break; + case -1187074627: + var2 = 0; + var1 = 199363302; + break; + case -837269092: + default: + if (this.ready) { + var1 = -575344526; + } else { + var1 = -1187074627; + } + break; + case -575344526: + if (this.videoWidth > 0) { + var1 = -463159845; + } else { + var1 = -1187074627; + } + break; + case -463159845: + if (this.videoHeight > 0) { + var1 = -1269056504; + } else { + var1 = -1187074627; + } + break; + case 199363302: + return (boolean)((var2) != 0); + } + } + } + + @Override + public void start() { + Thread var1 = null; + int var2 = 126391177; + + while (true) { + switch (var2) { + case 126391177: + default: + if (!this.failed) { + var2 = 1342554572; + } else { + var2 = 1049575232; + } + break; + case 799245208: + this.terminated = (boolean)(((0)) != 0); + var1 = new Thread(this::runWorker, "EvoMenuVideo-" + this.id); + var1.setDaemon((boolean)((((-1537870773 | 1537870774) + (-1537870773 & 1537870774))) != 0)); + this.worker = var1; + var1.start(); + return; + case 1049575232: + return; + case 1342554572: + if (this.worker != null) { + var2 = 1049575232; + } else { + var2 = 799245208; + } + } + } + } + + @Override + public void stop() { + Thread var1 = null; + int var2 = -857443632; + + while (true) { + switch (var2) { + case -2006034353: + this.worker = null; + var1.interrupt(); + return; + case -857443632: + default: + var1 = this.worker; + if (var1 == null) { + var2 = -171510578; + } else { + var2 = -2006034353; + } + break; + case -171510578: + return; + } + } + } + + @Override + public boolean releaseIfStopped() { + NativeImage var1 = null; + int var2 = 847290169; + + while (true) { + switch (var2) { + case -1422387313: + if (!this.terminated) { + var2 = -1279201741; + } else { + var2 = -9697207; + } + break; + case -1279201741: + return (boolean)(((0)) != 0); + case -752266547: + var1.close(); + var2 = 623713276; + break; + case -356852565: + var1.close(); + var2 = -65558165; + break; + case -65558165: + if ((var1 = this.readyQueue.poll()) != null) { + var2 = -356852565; + } else { + var2 = 623713276; + } + break; + case -9697207: + if (this.pooled) { + var2 = 228547927; + } else { + var2 = 991664968; + } + break; + case 228547927: + this.pooled = (boolean)(((0)) != 0); + var2 = -65558165; + break; + case 623713276: + if ((var1 = this.freeQueue.poll()) != null) { + var2 = -752266547; + } else { + var2 = 991664968; + } + break; + case 847290169: + default: + if (this.worker == null) { + var2 = -1422387313; + } else { + var2 = -1279201741; + } + break; + case 991664968: + return (boolean)(((1)) != 0); + } + } + } + + @Override + public boolean prepare() { + int var1 = 2033368116; + + while (true) { + switch (var1) { + case 268880944: + this.start(); + this.advanceFrame(); + return this.ready(); + case 349289765: + return (boolean)(((0)) != 0); + case 2033368116: + } + + if (this.failed) { + var1 = 349289765; + } else { + var1 = 268880944; + } + } + } + + @Override + public void drawExtracted(GuiGraphicsExtractor var1, int var2, int var3) { + float var4 = this.coverScale(var2, var3); + int var5 = Math.round(this.videoWidth * var4); + int var6 = Math.round(this.videoHeight * var4); + int var7 = Math.round((var2 - var5) / 2.0F); + int var8 = Math.round((var3 - var6) / 2.0F); + var1.blit( + RenderPipelines.GUI_TEXTURED, + this.textureId, + var7, + var8, + 0.0F, + 0.0F, + var5, + var6, + this.videoWidth, + this.videoHeight, + this.videoWidth, + this.videoHeight, + (-873505127 ^ 873505126) + ((-873505127 & 873505126) << 1) + ); + } + + @Override + public void drawImmediate(Matrix3x2fStack var1, int var2, int var3) { + float var4 = this.coverScale(var2, var3); + float var5 = this.videoWidth * var4; + float var6 = this.videoHeight * var4; + float var7 = (var2 - var5) / 2.0F; + float var8 = (var3 - var6) / 2.0F; + atb.drawRoundedTexture(var1, this.textureId, var7, var8, var5, var6, asj.all(oc.HAIRLINE), asu.WHITE); + } + + @Override + public void drawImmediateCircle(Matrix3x2fStack var1, int var2, int var3, float var4, float var5, float var6) { + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = 590658960; + + while (true) { + switch (var15) { + case -1844355536: + return; + case -1418853103: + var7 = this.coverScale(var2, var3); + var8 = this.videoWidth * var7; + var9 = this.videoHeight * var7; + var10 = (var2 - var8) / 2.0F; + var11 = (var3 - var9) / 2.0F; + var12 = var4 - var6; + var13 = var5 - var6; + var14 = var6 * 2.0F; + atb.drawRoundedTextureWithUV( + var1, + this.textureId, + var12, + var13, + var14, + var14, + arq.all(var6), + asu.WHITE, + (var12 - var10) / var8, + (var13 - var11) / var9, + (var12 + var14 - var10) / var8, + (var13 + var14 - var11) / var9 + ); + return; + case 590658960: + } + + if (var6 <= 0.0F) { + var15 = -1844355536; + } else { + var15 = -1418853103; + } + } + } + + private float coverScale(int var1, int var2) { + return Math.max((float)var1 / this.videoWidth, (float)var2 / this.videoHeight); + } + + private void advanceFrame() { + long var1 = (-5542892450443382491L ^ 5542892450443382491L) + ((-5542892450443382491L & 5542892450443382491L) << 1); + NativeImage var3 = null; + int var4 = -169095046; + + while (true) { + switch (var4) { + case -1872094823: + return; + case -528005710: + return; + case -507197776: + var3 = this.readyQueue.poll(); + if (var3 == null) { + var4 = 1686403571; + } else { + var4 = 1789634720; + } + break; + case -169095046: + default: + if (this.texture != null) { + var4 = 1827624165; + } else { + var4 = -528005710; + } + break; + case 508492654: + this.lastAdvanceNanos = var1; + var4 = 975559991; + break; + case 646999760: + this.lastAdvanceNanos = var1; + var4 = -1872094823; + break; + case 901955775: + return; + case 975559991: + if (var1 - this.lastAdvanceNanos < (-7529323328117551214L ^ 7529323328150884547L) + ((-7529323328117551214L & 7529323328150884547L) << 1)) { + var4 = 901955775; + } else { + var4 = -507197776; + } + break; + case 1324004609: + var1 = System.nanoTime(); + if (this.lastAdvanceNanos == (-1853243898991713429L ^ 1853243898991713429L) + ((-1853243898991713429L & 1853243898991713429L) << 1)) { + var4 = 508492654; + } else { + var4 = 975559991; + } + break; + case 1686403571: + return; + case 1789634720: + this.displayImage.copyFrom(var3); + this.texture.upload(); + this.freeQueue.offer(var3); + this.ready = (boolean)(((1)) != 0); + this.lastAdvanceNanos += (2830716277694414117L | -2830716277661080784L) + (2830716277694414117L & -2830716277661080784L); + if (var1 - this.lastAdvanceNanos > (-9015664613103242885L ^ 9015664613236576217L) + ((-9015664613103242885L & 9015664613236576217L) << 1)) { + var4 = 646999760; + } else { + var4 = -1872094823; + } + break; + case 1827624165: + if (this.displayImage == null) { + var4 = -528005710; + } else { + var4 = 1324004609; + } + } + } + } + + // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow. + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private void runWorker() { + boolean var11 = false /* VF: Semaphore variable */; + + label141: { + label142: { + label143: { + try { + var11 = true; + File var1 = this.extractResource(); + + label120: + while (true) { + if (!Thread.currentThread().isInterrupted()) { + FileChannelWrapper var2 = NIOUtils.readableChannel(var1); + + try { + FrameGrab var3 = FrameGrab.createFrameGrab(var2); + + do { + Picture var4; + if ((var4 = var3.getNativeFrame()) == null) { + continue label120; + } + + this.produceFrame(var4); + } while (!Thread.currentThread().isInterrupted()); + } finally { + NIOUtils.closeQuietly(var2); + } + + var11 = false; + break label141; + } + + var11 = false; + break label142; + } + } catch (InterruptedException var17) { + Thread.currentThread().interrupt(); + var11 = false; + break label143; + } catch (Throwable var18) { + this.failed = (boolean)(((1)) != 0); + id.error( + Cif.RENDER, + "menu video decode failed for {}", + this.id, + var18 + ); + var11 = false; + } finally { + if (var11) { + this.terminated = (boolean)(((1)) != 0); + } + } + + this.terminated = (boolean)(((1)) != 0); + return; + } + + this.terminated = (boolean)(((1)) != 0); + return; + } + + this.terminated = (boolean)(((1)) != 0); + return; + } + + this.terminated = (boolean)(((1)) != 0); + } + + private void produceFrame(Picture var1) throws InterruptedException { + int var2 = 0; + int var3 = 0; + NativeImage var4 = null; + int var5 = -1467869058; + + while (true) { + switch (var5) { + case -1899125103: + if (this.rgbPicture == null) { + var5 = -755428729; + } else { + var5 = 1789955373; + } + break; + case -1467869058: + default: + var2 = var1.getWidth(); + var3 = var1.getHeight(); + if (this.displayImage == null) { + var5 = 1467126858; + } else { + var5 = -27752067; + } + break; + case -1035574619: + this.refillPool(var2, var3); + var5 = -1899125103; + break; + case -755428729: + this.rgbPicture = Picture.create(var2, var3, ColorSpace.RGB); + this.transform = ColorUtil.getTransform(var1.getColor(), ColorSpace.RGB); + var5 = 1789955373; + break; + case -27752067: + if (!this.pooled) { + var5 = -1035574619; + } else { + var5 = -1899125103; + } + break; + case 1467126858: + this.initBuffers(var2, var3); + var5 = -1899125103; + break; + case 1789955373: + this.transform.transform(var1, this.rgbPicture); + var4 = this.freeQueue.take(); + auy.fill( + var4, + this.rgbPicture.getPlaneData((-384525553 ^ 384525553) + ((-384525553 & 384525553) << 1)), + var2, + 0, + 0, + var2, + var3 + ); + this.readyQueue.put(var4); + return; + } + } + } + + private void refillPool(int var1, int var2) { + int var3 = 0; + int var4 = 1919989844; + + while (true) { + switch (var4) { + case -1113344855: + this.pooled = (boolean)(((1)) != 0); + return; + case -433724779: + this.freeQueue.offer(new NativeImage(var1, var2, (boolean)((((1864156392 ^ -1864156392) + ((1864156392 & -1864156392) << 1))) != 0))); + var3++; + var4 = 651735218; + break; + case 651735218: + if (var3 < (-1670248305 ^ 1670248308) + ((-1670248305 & 1670248308) << 1)) { + var4 = -433724779; + } else { + var4 = -1113344855; + } + break; + case 1919989844: + default: + var3 = 0; + var4 = 651735218; + } + } + } + + private void initBuffers(int var1, int var2) { + this.videoWidth = var1; + this.videoHeight = var2; + this.displayImage = new NativeImage(var1, var2, (boolean)((((760247089 | -760247089) + (760247089 & -760247089))) != 0)); + this.refillPool(var1, var2); + Minecraft var3 = Minecraft.getInstance(); + var3.execute(() -> { + aux var2x = new aux(() -> "menu_bg_" + this.id, this.displayImage); + var3.getTextureManager().register(this.textureId, var2x); + this.texture = var2x; + }); + } + + private File extractResource() throws Exception { + File var1 = File.createTempFile("evo_menu_bg_" + this.id, ".mp4"); + var1.deleteOnExit(); + + try (InputStream var2 = auw.class.getResourceAsStream(this.resourcePath)) { + if (var2 == null) { + throw new IllegalStateException("missing resource " + this.resourcePath); + } + + Path var10001 = var1.toPath(); + CopyOption[] var10002 = new CopyOption[1]; + var10002[0] = StandardCopyOption.REPLACE_EXISTING; + Files.copy(var2, var10001, var10002); + } + + return var1; + } +} diff --git a/src/main/java/defpackage/aux.java b/src/main/java/defpackage/aux.java new file mode 100644 index 0000000..42a538e --- /dev/null +++ b/src/main/java/defpackage/aux.java @@ -0,0 +1,14 @@ +package defpackage; + +import com.mojang.blaze3d.platform.NativeImage; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.textures.FilterMode; +import java.util.function.Supplier; +import net.minecraft.client.renderer.texture.DynamicTexture; + +public final class aux extends DynamicTexture { + public aux(Supplier var1, NativeImage var2) { + super(var1, var2); + this.sampler = RenderSystem.getSamplerCache().getClampToEdge(FilterMode.LINEAR); + } +} diff --git a/src/main/java/defpackage/auy.java b/src/main/java/defpackage/auy.java new file mode 100644 index 0000000..3fa4737 --- /dev/null +++ b/src/main/java/defpackage/auy.java @@ -0,0 +1,73 @@ +package defpackage; + +import com.mojang.blaze3d.platform.NativeImage; + +public final class auy { + private static final int RGB_OFFSET = 128; + private static final int OPAQUE = -16777216; + private static final int RED_SHIFT = 16; + private static final int GREEN_SHIFT = 8; + private static final int CHANNELS = 3; + + private auy() { + } + + public static void fill(NativeImage var0, byte[] var1, int var2, int var3, int var4, int var5, int var6) { + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + int var12 = 0; + int var13 = 1788744332; + + while (true) { + switch (var13) { + case -1308032905: + var7++; + var13 = 1808885510; + break; + case -1220855337: + return; + case -888100304: + var8 = ((var4 + var7) * var2 + var3) * (3); + var9 = 0; + var13 = 2138802996; + break; + case 1626395638: + var10 = var1[var8++] + 128; + var11 = var1[var8++] + 128; + var12 = var1[var8++] + 128; + var0.setPixel( + var9, + var7, + (-872152968 ^ 855375752) + ((-872152968 & 855375752) << 1) + | var10 << (-1040565947 | 1040565963) + (-1040565947 & 1040565963) + | var11 << (-1052275628 ^ 1052275636) + ((-1052275628 & 1052275636) << 1) + | var12 + ); + var9++; + var13 = 2138802996; + break; + case 1788744332: + default: + var7 = 0; + var13 = 1808885510; + break; + case 1808885510: + if (var7 < var6) { + var13 = -888100304; + } else { + var13 = -1220855337; + } + break; + case 2138802996: + if (var9 < var5) { + var13 = 1626395638; + } else { + var13 = -1308032905; + } + } + } + } +} diff --git a/src/main/java/defpackage/auz.java b/src/main/java/defpackage/auz.java new file mode 100644 index 0000000..b25534d --- /dev/null +++ b/src/main/java/defpackage/auz.java @@ -0,0 +1,5 @@ +package defpackage; + +public interface auz { + double getAsDouble(); +} diff --git a/src/main/java/defpackage/av.java b/src/main/java/defpackage/av.java new file mode 100644 index 0000000..8daff2d --- /dev/null +++ b/src/main/java/defpackage/av.java @@ -0,0 +1,20 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; + +public class av extends ax implements aw { + float x; + float y; + float z; + + public av(float var1, float var2, float var3) { + this.x = var1; + this.y = var2; + this.z = var3; + } + + @Override + public void applyPose(PoseStack var1) { + var1.scale(this.x, this.y, this.z); + } +} diff --git a/src/main/java/defpackage/ava.java b/src/main/java/defpackage/ava.java new file mode 100644 index 0000000..325a90b --- /dev/null +++ b/src/main/java/defpackage/ava.java @@ -0,0 +1,13 @@ +package defpackage; + +public class ava implements avg { + @Override + public double tickInterpolation(double var1, double var3, double var5) { + return var1; + } + + @Override + public boolean isSmooth() { + return (boolean)(((0)) != 0); + } +} diff --git a/src/main/java/defpackage/avb.java b/src/main/java/defpackage/avb.java new file mode 100644 index 0000000..4539819 --- /dev/null +++ b/src/main/java/defpackage/avb.java @@ -0,0 +1,46 @@ +package defpackage; + +public abstract class avb implements avg { + protected boolean goingIn = (boolean)(((1)) != 0); + + @Override + public double tickInterpolation(double var1, double var3, double var5) { + int var7 = -2114001182; + + while (true) { + switch (var7) { + case -2114001182: + default: + if (var1 > var3) { + var7 = 1351281379; + } else { + var7 = -305892957; + } + break; + case -812193661: + this.goingIn = (boolean)(((1)) != 0); + return var1; + case -795941247: + this.goingIn = (boolean)(((0)) != 0); + return Math.max(var3 - this.getTimeIncrement((boolean)(((1)) != 0), var5, var1, var3), var1); + case -305892957: + if (var1 < var3) { + var7 = -795941247; + } else { + var7 = -812193661; + } + break; + case 1351281379: + this.goingIn = (boolean)(((1)) != 0); + return Math.min(var3 + this.getTimeIncrement((boolean)(((0)) != 0), var5, var1, var3), var1); + } + } + } + + @Override + public boolean isSmooth() { + return (boolean)(((1)) != 0); + } + + public abstract double getTimeIncrement(boolean var1, double var2, double var4, double var6); +} diff --git a/src/main/java/defpackage/avc.java b/src/main/java/defpackage/avc.java new file mode 100644 index 0000000..14703f9 --- /dev/null +++ b/src/main/java/defpackage/avc.java @@ -0,0 +1,88 @@ +package defpackage; + +public class avc extends avb { + private final auz smoothness; + + public avc(auz var1) { + this.smoothness = var1; + } + + @Override + public double getTimeIncrement(boolean var1, double var2, double var4, double var6) { + double var8 = 0.0; + double var11 = 0.0; + int var10 = 782472988; + + while (true) { + switch (var10) { + case -1421267037: + var8 = var11; + return var8 * this.smoothness.getAsDouble() / 0.05 * var2; + case -1263697498: + var11 = var4 - var6; + var10 = -1421267037; + break; + case 560999369: + var11 = var6 - var4; + var10 = -1421267037; + break; + case 782472988: + default: + if (!var1) { + var10 = -1263697498; + } else { + var10 = 560999369; + } + } + } + } + + @Override + public double tickInterpolation(double var1, double var3, double var5) { + int var7 = 1872293963; + + while (true) { + switch (var7) { + case 1212589014: + return super.tickInterpolation(var1, var3, var5); + case 1232625212: + return var1; + case 1872293963: + } + + if (!this.isSmooth()) { + var7 = 1232625212; + } else { + var7 = 1212589014; + } + } + } + + @Override + public boolean isSmooth() { + int var2 = 0; + int var1 = 912474377; + + while (true) { + switch (var1) { + case -814511811: + return (boolean)((var2) != 0); + case 293629648: + var2 = 0; + var1 = -814511811; + break; + case 857366876: + var2 = 1; + var1 = -814511811; + break; + case 912474377: + default: + if (this.smoothness.getAsDouble() != 1.0) { + var1 = 857366876; + } else { + var1 = 293629648; + } + } + } + } +} diff --git a/src/main/java/defpackage/avd.java b/src/main/java/defpackage/avd.java new file mode 100644 index 0000000..aeddfa8 --- /dev/null +++ b/src/main/java/defpackage/avd.java @@ -0,0 +1,91 @@ +package defpackage; + +public class avd extends avb { + private final auz timeIn; + private final auz timeOut; + + public avd(auz var1, auz var2) { + this.timeIn = var1; + this.timeOut = var2; + } + + @Override + public double getTimeIncrement(boolean var1, double var2, double var4, double var6) { + double var8 = 0.0; + double var11 = 0.0; + int var10 = -1561666607; + + while (true) { + switch (var10) { + case -1952670573: + var11 = this.timeOut.getAsDouble(); + var10 = 1646138124; + break; + case -1561666607: + default: + if (var1) { + var10 = -1952670573; + } else { + var10 = -668920800; + } + break; + case -668920800: + var11 = this.timeIn.getAsDouble(); + var10 = 1646138124; + break; + case 1646138124: + var8 = var11; + return var2 / var8; + } + } + } + + @Override + public boolean isSmooth() { + int var2 = 0; + int var1 = -1172901800; + + while (true) { + switch (var1) { + case -1964142040: + if (!this.goingIn) { + var1 = 2027148216; + } else { + var1 = -1284511718; + } + break; + case -1284511718: + var2 = 0; + var1 = 468267211; + break; + case -1224900717: + if (!(this.timeIn.getAsDouble() > 0.0)) { + var1 = -1964142040; + } else { + var1 = -1156616300; + } + break; + case -1172901800: + default: + if (this.goingIn) { + var1 = -1224900717; + } else { + var1 = -1964142040; + } + break; + case -1156616300: + var2 = 1; + var1 = 468267211; + break; + case 468267211: + return (boolean)((var2) != 0); + case 2027148216: + if (this.timeOut.getAsDouble() > 0.0) { + var1 = -1156616300; + } else { + var1 = -1284511718; + } + } + } + } +} diff --git a/src/main/java/defpackage/ave.java b/src/main/java/defpackage/ave.java new file mode 100644 index 0000000..672fbd9 --- /dev/null +++ b/src/main/java/defpackage/ave.java @@ -0,0 +1,168 @@ +package defpackage; + +public class ave extends avd { + private final avf transitionIn; + private final avf transitionOut; + private avv activeTransition; + private avv inactiveTransition; + private double prevTargetInterpolation = 0.0; + private boolean justSwappedTransition = (boolean)(((0)) != 0); + + public ave(avf var1, avf var2, auz var3, auz var4) { + super(var3, var4); + this.transitionIn = var1; + this.transitionOut = var2; + this.activeTransition = var1.get(); + this.inactiveTransition = var2.get(); + } + + @Override + public double tickInterpolation(double var1, double var3, double var5) { + double var7 = 0.0; + int var9 = 1990532213; + + while (true) { + switch (var9) { + case -2002143918: + this.justSwappedTransition = (boolean)(((1)) != 0); + var7 = this.activeTransition.inverse(this.inactiveTransition.apply(var7)); + var9 = -1981521707; + break; + case -1981521707: + this.prevTargetInterpolation = var1; + if (this.activeTransition == avv.INSTANT) { + var9 = -1205446324; + } else { + var9 = -519346160; + } + break; + case -1658893012: + this.justSwappedTransition = (boolean)(((1)) != 0); + var7 = this.activeTransition.inverse(this.inactiveTransition.apply(var7)); + var9 = -1981521707; + break; + case -1205446324: + return var1; + case -1097566596: + if (var1 < var3) { + var9 = -194063451; + } else { + var9 = -1981521707; + } + break; + case -519346160: + return super.tickInterpolation(var1, var7, var5); + case -194063451: + this.activeTransition = this.transitionOut.get().opposite(); + this.inactiveTransition = this.transitionIn.get(); + if (this.prevTargetInterpolation > var1) { + var9 = 1076315465; + } else { + var9 = -1981521707; + } + break; + case 390857199: + this.activeTransition = this.transitionIn.get(); + this.inactiveTransition = this.transitionOut.get().opposite(); + if (this.prevTargetInterpolation < var1) { + var9 = 399990844; + } else { + var9 = -1981521707; + } + break; + case 399990844: + if (this.activeTransition.hasInverse()) { + var9 = -1658893012; + } else { + var9 = -1981521707; + } + break; + case 1076315465: + if (this.activeTransition.hasInverse()) { + var9 = -2002143918; + } else { + var9 = -1981521707; + } + break; + case 1990532213: + default: + var7 = var3; + if (var1 > var3) { + var9 = 390857199; + } else { + var9 = -1097566596; + } + } + } + } + + @Override + public double modifyInterpolation(double var1) { + return this.activeTransition.apply(var1); + } + + @Override + public double modifyPrevInterpolation(double var1) { + int var3 = -665515851; + + while (true) { + switch (var3) { + case -665515851: + default: + if (this.justSwappedTransition) { + var3 = 73837305; + } else { + var3 = -581891997; + } + break; + case -581891997: + return var1; + case 73837305: + this.justSwappedTransition = (boolean)(((0)) != 0); + return this.activeTransition.inverse(this.inactiveTransition.apply(var1)); + } + } + } + + @Override + public boolean isSmooth() { + int var2 = 0; + int var1 = 223531855; + + while (true) { + switch (var1) { + case -1545011083: + if (super.isSmooth()) { + var1 = -1318593726; + } else { + var1 = -262198750; + } + break; + case -1318593726: + if (this.activeTransition != avv.INSTANT) { + var1 = -1013296264; + } else { + var1 = -262198750; + } + break; + case -1013296264: + var2 = 1; + var1 = -999140352; + break; + case -999140352: + return (boolean)((var2) != 0); + case -262198750: + var2 = 0; + var1 = -999140352; + break; + case 223531855: + default: + if (!this.justSwappedTransition) { + var1 = -1545011083; + } else { + var1 = -262198750; + } + } + } + } +} diff --git a/src/main/java/defpackage/avf.java b/src/main/java/defpackage/avf.java new file mode 100644 index 0000000..ecc9da8 --- /dev/null +++ b/src/main/java/defpackage/avf.java @@ -0,0 +1,5 @@ +package defpackage; + +public interface avf { + avv get(); +} diff --git a/src/main/java/defpackage/avg.java b/src/main/java/defpackage/avg.java new file mode 100644 index 0000000..108cd34 --- /dev/null +++ b/src/main/java/defpackage/avg.java @@ -0,0 +1,15 @@ +package defpackage; + +public interface avg { + double tickInterpolation(double var1, double var3, double var5); + + default double modifyInterpolation(double var1) { + return var1; + } + + default double modifyPrevInterpolation(double var1) { + return var1; + } + + boolean isSmooth(); +} diff --git a/src/main/java/defpackage/avv.java b/src/main/java/defpackage/avv.java new file mode 100644 index 0000000..dd94d58 --- /dev/null +++ b/src/main/java/defpackage/avv.java @@ -0,0 +1,371 @@ +package defpackage; + +public enum avv { + INSTANT { + @Override + public double apply(double var1) { + return var1; + } + }, + LINEAR { + @Override + public double apply(double var1) { + return var1; + } + }, + EASE_IN_SINE { + @Override + public double apply(double var1) { + return 1.0 - Math.cos(var1 * Math.PI / 2.0); + } + + @Override + public double inverse(double var1) { + return Math.acos(-(var1 - 1.0)) * 2.0 / Math.PI; + } + }, + EASE_OUT_SINE { + @Override + public double apply(double var1) { + return Math.sin(var1 * Math.PI / 2.0); + } + + @Override + public double inverse(double var1) { + return Math.asin(var1) * 2.0 / Math.PI; + } + }, + EASE_IN_OUT_SINE { + @Override + public double apply(double var1) { + return -(Math.cos(Math.PI * var1) - 1.0) / 2.0; + } + }, + EASE_IN_QUAD { + @Override + public double apply(double var1) { + return var1 * var1; + } + + @Override + public double inverse(double var1) { + return Math.sqrt(var1); + } + }, + EASE_OUT_QUAD { + @Override + public double apply(double var1) { + return 1.0 - (1.0 - var1) * (1.0 - var1); + } + + @Override + public double inverse(double var1) { + return -(Math.sqrt(-(var1 - 1.0)) - 1.0); + } + }, + EASE_IN_OUT_QUAD { + @Override + public double apply(double var1) { + double var4 = 0.0; + int var3 = -1478400723; + + while (true) { + switch (var3) { + case -1478400723: + default: + if (var1 < 0.5) { + var3 = 1241668148; + } else { + var3 = 14108837; + } + break; + case -1315221299: + return var4; + case 14108837: + var4 = 1.0 - Math.pow(-2.0 * var1 + 2.0, 2.0) / 2.0; + var3 = -1315221299; + break; + case 1241668148: + var4 = 2.0 * var1 * var1; + var3 = -1315221299; + } + } + } + }, + EASE_IN_CUBIC { + @Override + public double apply(double var1) { + return Math.pow(var1, 3.0); + } + + @Override + public double inverse(double var1) { + return Math.pow(var1, 0.3333333333333333); + } + }, + EASE_OUT_CUBIC { + @Override + public double apply(double var1) { + return 1.0 - Math.pow(1.0 - var1, 3.0); + } + + @Override + public double inverse(double var1) { + return -Math.pow(-var1 + 1.0, 0.3333333333333333) + 1.0; + } + }, + EASE_IN_OUT_CUBIC { + @Override + public double apply(double var1) { + double var4 = 0.0; + int var3 = 1381843232; + + while (true) { + switch (var3) { + case -1468663661: + var4 = 1.0 - Math.pow(-2.0 * var1 + 2.0, 3.0) / 2.0; + var3 = 1996816857; + break; + case 1120715863: + var4 = 4.0 * var1 * var1 * var1; + var3 = 1996816857; + break; + case 1381843232: + default: + if (var1 < 0.5) { + var3 = 1120715863; + } else { + var3 = -1468663661; + } + break; + case 1996816857: + return var4; + } + } + } + }, + EASE_IN_EXP { + private final double c_log2_1023 = Math.log(1023.0) / Math.log(2.0); + + @Override + public double apply(double var1) { + int var3 = 1275806817; + + while (true) { + switch (var3) { + case -1286264789: + return 1.0; + case 1275806817: + default: + if (var1 == 0.0) { + var3 = 2141324009; + } else { + var3 = 1363799809; + } + break; + case 1304263490: + return Math.pow(2.0, 10.0 * var1 - this.c_log2_1023) - 9.775171065493646E-4; + case 1363799809: + if (var1 == 1.0) { + var3 = -1286264789; + } else { + var3 = 1304263490; + } + break; + case 2141324009: + return 0.0; + } + } + } + + @Override + public double inverse(double var1) { + int var3 = 2001784885; + + while (true) { + switch (var3) { + case -283644722: + return 1.0; + case 1362738090: + return Math.log1p(1023.0 * var1) / (10.0 * Math.log(2.0)); + case 1506676267: + return 0.0; + case 1967702747: + if (var1 == 1.0) { + var3 = -283644722; + } else { + var3 = 1362738090; + } + break; + case 2001784885: + default: + if (var1 == 0.0) { + var3 = 1506676267; + } else { + var3 = 1967702747; + } + } + } + } + }, + EASE_OUT_EXP { + private final double c_log2_1023 = Math.log(1023.0) / Math.log(2.0); + private final double c_10_ln2 = 10.0 * Math.log(2.0); + private final double c_ln_1023 = Math.log(1023.0); + + @Override + public double apply(double var1) { + int var3 = -268685994; + + while (true) { + switch (var3) { + case -620288952: + return 1.0 - Math.pow(2.0, 10.0 - this.c_log2_1023 - 10.0 * var1) + 9.775171065493646E-4; + case -268685994: + default: + if (var1 == 0.0) { + var3 = 1336170950; + } else { + var3 = 1080690173; + } + break; + case 4863525: + return 1.0; + case 1080690173: + if (var1 == 1.0) { + var3 = 4863525; + } else { + var3 = -620288952; + } + break; + case 1336170950: + return 0.0; + } + } + } + + @Override + public double inverse(double var1) { + int var3 = -72360044; + + while (true) { + switch (var3) { + case -1351716805: + return -((Math.log(-((1023.0 * var1 - 1024.0) / 1023.0)) - this.c_10_ln2 + this.c_ln_1023) / this.c_10_ln2); + case -311754129: + return 0.0; + case -72360044: + default: + if (var1 == 0.0) { + var3 = -311754129; + } else { + var3 = 529606298; + } + break; + case 529606298: + if (var1 == 1.0) { + var3 = 887037298; + } else { + var3 = -1351716805; + } + break; + case 887037298: + return 1.0; + } + } + } + }, + EASE_IN_OUT_EXP { + private final double c_log2_1023 = Math.log(1023.0) / Math.log(2.0); + + @Override + public double apply(double var1) { + int var3 = 572685526; + + while (true) { + switch (var3) { + case -1599489185: + return 1.0; + case -274487184: + if (var1 < 0.5) { + var3 = 1869753318; + } else { + var3 = 1417292120; + } + break; + case 549825817: + return 0.0; + case 572685526: + default: + if (var1 == 0.0) { + var3 = 549825817; + } else { + var3 = 1636921651; + } + break; + case 1417292120: + return 1.0 - Math.pow(2.0, 10.0 - this.c_log2_1023 - 10.0 * var1) + 9.775171065493646E-4; + case 1636921651: + if (var1 == 1.0) { + var3 = -1599489185; + } else { + var3 = -274487184; + } + break; + case 1869753318: + return Math.pow(2.0, 20.0 * var1 - this.c_log2_1023) - 9.775171065493646E-4; + } + } + } + }; + + public abstract double apply(double var1); + + public double inverse(double var1) { + throw new UnsupportedOperationException(); + } + + public boolean hasInverse() { + try { + this.inverse(0.0); + return (boolean)(((1)) != 0); + } catch (UnsupportedOperationException var2) { + return (boolean)(((0)) != 0); + } + } + + public avv opposite() { + switch (this) { + case INSTANT: + return INSTANT; + case LINEAR: + return LINEAR; + case EASE_IN_SINE: + return EASE_OUT_SINE; + case EASE_OUT_SINE: + return EASE_IN_SINE; + case EASE_IN_OUT_SINE: + return EASE_IN_OUT_SINE; + case EASE_IN_QUAD: + return EASE_OUT_QUAD; + case EASE_OUT_QUAD: + return EASE_IN_QUAD; + case EASE_IN_OUT_QUAD: + return EASE_IN_OUT_QUAD; + case EASE_IN_CUBIC: + return EASE_OUT_CUBIC; + case EASE_OUT_CUBIC: + return EASE_IN_CUBIC; + case EASE_IN_OUT_CUBIC: + return EASE_IN_OUT_CUBIC; + case EASE_IN_EXP: + return EASE_OUT_EXP; + case EASE_OUT_EXP: + return EASE_IN_EXP; + case EASE_IN_OUT_EXP: + return EASE_IN_OUT_EXP; + default: + return INSTANT; + } + } +} diff --git a/src/main/java/defpackage/avw.java b/src/main/java/defpackage/avw.java new file mode 100644 index 0000000..424c6ca --- /dev/null +++ b/src/main/java/defpackage/avw.java @@ -0,0 +1,348 @@ +package defpackage; + +import java.util.function.DoubleSupplier; +import net.minecraft.util.Mth; + +public class avw { + private final avg initialInterpolator; + private final avg scrollInterpolator; + private final DoubleSupplier initialZoom; + private final DoubleSupplier zoomPerStep; + private final DoubleSupplier maxEffectiveSteps; + private double prevInitialInterpolation = 0.0; + private double initialInterpolation = 0.0; + private boolean zoomingLastTick = (boolean)(((0)) != 0); + private double prevScrollInterpolation = 0.0; + private double scrollInterpolation = 0.0; + private int lastScrollTier = 0; + private boolean resetting = (boolean)(((0)) != 0); + private double resetMultiplier = 0.0; + + public avw(avg var1, avg var2, DoubleSupplier var3, DoubleSupplier var4, DoubleSupplier var5) { + this.initialInterpolator = var1; + this.scrollInterpolator = var2; + this.initialZoom = var3; + this.zoomPerStep = var4; + this.maxEffectiveSteps = var5; + } + + public void tick(boolean var1, int var2, double var3) { + this.tickInitial(var1, var3); + this.tickScroll(var1, var2, var3); + } + + private void tickInitial(boolean var1, double var2) { + double var4 = 0.0; + double var7 = 0.0; + int var6 = -929516039; + + while (true) { + switch (var6) { + case -2102209300: + if (var1) { + var6 = 1722003118; + } else { + var6 = 403400671; + } + break; + case -1840836229: + this.zoomingLastTick = var1; + return; + case -929516039: + default: + if (var1) { + var6 = 1105174196; + } else { + var6 = -2102209300; + } + break; + case -759406825: + var4 = var7; + this.prevInitialInterpolation = this.initialInterpolation; + this.initialInterpolation = this.initialInterpolator.tickInterpolation(var4, this.initialInterpolation, var2); + this.prevInitialInterpolation = this.initialInterpolator.modifyPrevInterpolation(this.prevInitialInterpolation); + if (!this.initialInterpolator.isSmooth()) { + var6 = -6606177; + } else { + var6 = -1840836229; + } + break; + case -6606177: + this.prevInitialInterpolation = this.initialInterpolation; + var6 = -1840836229; + break; + case 403400671: + var7 = 0.0; + var6 = -759406825; + break; + case 789281364: + this.resetting = (boolean)(((0)) != 0); + var6 = -2102209300; + break; + case 1105174196: + if (!this.zoomingLastTick) { + var6 = 789281364; + } else { + var6 = -2102209300; + } + break; + case 1722003118: + var7 = 1.0; + var6 = -759406825; + } + } + } + + private void tickScroll(boolean var1, int var2, double var3) { + double var5 = 0.0; + int var7 = 590860815; + + while (true) { + switch (var7) { + case -2082173300: + this.resetting = (boolean)(((0)) != 0); + var7 = -248780448; + break; + case -435540932: + if (var2 != this.lastScrollTier) { + var7 = -2082173300; + } else { + var7 = -248780448; + } + break; + case -248780448: + var5 = var2; + this.prevScrollInterpolation = this.scrollInterpolation; + this.scrollInterpolation = this.scrollInterpolator.tickInterpolation(var5, this.scrollInterpolation, var3); + this.prevScrollInterpolation = this.scrollInterpolator.modifyPrevInterpolation(this.prevScrollInterpolation); + if (!this.initialInterpolator.isSmooth()) { + var7 = 2099774534; + } else { + var7 = 1981636850; + } + break; + case 590860815: + default: + if (var1) { + var7 = -435540932; + } else { + var7 = -248780448; + } + break; + case 1981636850: + this.lastScrollTier = var2; + return; + case 2099774534: + this.prevInitialInterpolation = this.initialInterpolation; + var7 = 1981636850; + } + } + } + + public double getZoomDivisor(float var1) { + double var2 = 0.0; + double var4 = 0.0; + double var6 = 0.0; + double var8 = 0.0; + double var10 = 0.0; + double var12 = 0.0; + double var14 = 0.0; + double var17 = 0.0; + int var16 = 1134926547; + + while (true) { + switch (var16) { + case -1220615948: + this.resetMultiplier = 1.0 / var14; + var16 = 1394121585; + break; + case -561129498: + var17 = this.scrollInterpolator.modifyInterpolation(Mth.lerp(var1, this.prevScrollInterpolation, this.scrollInterpolation)); + var16 = 1153965381; + break; + case -121796161: + var17 = this.scrollInterpolation; + var16 = 1153965381; + break; + case 139606233: + if (this.scrollInterpolator.isSmooth()) { + var16 = -561129498; + } else { + var16 = -121796161; + } + break; + case 532467679: + if (!this.resetting) { + var16 = -1220615948; + } else { + var16 = 1394121585; + } + break; + case 680527353: + var17 = 0.0; + var16 = 1153965381; + break; + case 1134926547: + default: + var2 = this.getInitialZoomMultiplier(var1); + var4 = 1.0 / var2; + if (this.resetting) { + var16 = 680527353; + } else { + var16 = 139606233; + } + break; + case 1153965381: + var6 = var17; + var8 = this.zoomPerStep.getAsDouble(); + var10 = var6; + var12 = var4 * Math.pow(var8, var10); + var14 = Math.max(0.5, Math.min(500.0, var12)); + if (this.initialInterpolation == 0.0) { + var16 = 1923904280; + } else { + var16 = 532467679; + } + break; + case 1394121585: + return var14; + case 1596548897: + this.resetting = (boolean)(((0)) != 0); + var16 = 532467679; + break; + case 1923904280: + if (this.scrollInterpolation == 0.0) { + var16 = 1596548897; + } else { + var16 = 532467679; + } + } + } + } + + public double getZoomDivisor() { + return this.getZoomDivisor(1.0F); + } + + private double getInitialZoomMultiplier(float var1) { + double var2 = 0.0; + double var4 = 0.0; + double var7 = 0.0; + double var9 = 0.0; + int var6 = 256622901; + + while (true) { + switch (var6) { + case -740152929: + var7 = this.initialInterpolation; + var6 = 837533609; + break; + case 173846914: + var4 = var9; + return Mth.lerp(var2, 1.0, var4); + case 256622901: + default: + if (this.initialInterpolator.isSmooth()) { + var6 = 2034613228; + } else { + var6 = -740152929; + } + break; + case 670032782: + var9 = 1.0 / this.initialZoom.getAsDouble(); + var6 = 173846914; + break; + case 837533609: + var2 = var7; + if (!this.resetting) { + var6 = 670032782; + } else { + var6 = 887682464; + } + break; + case 887682464: + var9 = this.resetMultiplier; + var6 = 173846914; + break; + case 2034613228: + var7 = this.initialInterpolator.modifyInterpolation(Mth.lerp(var1, this.prevInitialInterpolation, this.initialInterpolation)); + var6 = 837533609; + } + } + } + + public void reset() { + int var1 = -207396333; + + while (true) { + switch (var1) { + case -498802249: + if (Math.abs(this.scrollInterpolation) > 0.001) { + var1 = 1649702937; + } else { + var1 = 1148338459; + } + break; + case -207396333: + default: + if (!this.resetting) { + var1 = -498802249; + } else { + var1 = 1148338459; + } + break; + case 1148338459: + return; + case 1649702937: + this.resetting = (boolean)(((1)) != 0); + this.scrollInterpolation = 0.0; + this.prevScrollInterpolation = 0.0; + var1 = 1148338459; + } + } + } + + public void setToZero(boolean var1, boolean var2) { + int var3 = 428755094; + + while (true) { + switch (var3) { + case -1554858964: + this.initialInterpolation = 0.0; + this.prevInitialInterpolation = 0.0; + this.zoomingLastTick = (boolean)(((0)) != 0); + var3 = 573979372; + break; + case 428755094: + default: + if (var1) { + var3 = -1554858964; + } else { + var3 = 573979372; + } + break; + case 573979372: + if (var2) { + var3 = 1523712523; + } else { + var3 = 1926172393; + } + break; + case 1523712523: + this.scrollInterpolation = 0.0; + this.prevScrollInterpolation = 0.0; + this.lastScrollTier = 0; + var3 = 1926172393; + break; + case 1926172393: + this.resetting = (boolean)(((0)) != 0); + return; + } + } + } + + public void skipInitial() { + this.initialInterpolation = 1.0; + this.prevInitialInterpolation = 1.0; + } +} diff --git a/src/main/java/defpackage/avx.java b/src/main/java/defpackage/avx.java new file mode 100644 index 0000000..4a94e88 --- /dev/null +++ b/src/main/java/defpackage/avx.java @@ -0,0 +1,259 @@ +package defpackage; + +import com.google.gson.JsonObject; +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.Vec3; + +public record avx( + String id, String name, String dimension, int x, int y, int z, int color, String glyph, boolean shared, boolean visible, String owner, long createdAt +) { + public static final String LOCAL_OWNER = ""; + public static final int MAX_NAME_LENGTH = 24; + public static final int COORDINATE_LIMIT = 30000000; + private static final String KEY_ID = "id"; + private static final String KEY_NAME = "name"; + private static final String KEY_DIMENSION = "dimension"; + private static final String KEY_X = "x"; + private static final String KEY_Y = "y"; + private static final String KEY_Z = "z"; + private static final String KEY_COLOR = "color"; + private static final String KEY_GLYPH = "glyph"; + private static final String KEY_SHARED = "shared"; + private static final String KEY_VISIBLE = "visible"; + private static final String KEY_CREATED = "created"; + private static final double BLOCK_CENTER = 0.5; + + public boolean isLocal() { + int var2 = 0; + int var1 = 62449874; + + while (true) { + switch (var1) { + case 62449874: + default: + if (this.owner != null) { + var1 = 799439895; + } else { + var1 = 1357631379; + } + break; + case 799439895: + if (this.owner.isEmpty()) { + var1 = 1357631379; + } else { + var1 = 988364623; + } + break; + case 988364623: + var2 = 0; + var1 = 2008441999; + break; + case 1357631379: + var2 = 1; + var1 = 2008441999; + break; + case 2008441999: + return (boolean)((var2) != 0); + } + } + } + + public avy icon() { + return avy.byGlyph(this.glyph); + } + + public BlockPos blockPosition() { + return new BlockPos(this.x, this.y, this.z); + } + + public Vec3 center() { + return new Vec3(this.x + 0.5, this.y + 0.5, this.z + 0.5); + } + + public double distanceTo(Vec3 var1) { + double var2 = this.x + 0.5 - var1.x; + double var4 = this.y + 0.5 - var1.y; + double var6 = this.z + 0.5 - var1.z; + return Math.sqrt(var2 * var2 + var4 * var4 + var6 * var6); + } + + public double horizontalDistanceTo(Vec3 var1) { + double var2 = this.x + 0.5 - var1.x; + double var4 = this.z + 0.5 - var1.z; + return Math.sqrt(var2 * var2 + var4 * var4); + } + + public avx withName(String var1) { + return new avx( + this.id, sanitizeName(var1), this.dimension, this.x, this.y, this.z, this.color, this.glyph, this.shared, this.visible, this.owner, this.createdAt + ); + } + + public avx withColor(int var1) { + return new avx(this.id, this.name, this.dimension, this.x, this.y, this.z, var1, this.glyph, this.shared, this.visible, this.owner, this.createdAt); + } + + public avx withGlyph(String var1) { + return new avx( + this.id, + this.name, + this.dimension, + this.x, + this.y, + this.z, + this.color, + avy.byGlyph(var1).getGlyph(), + this.shared, + this.visible, + this.owner, + this.createdAt + ); + } + + public avx withShared(boolean var1) { + return new avx(this.id, this.name, this.dimension, this.x, this.y, this.z, this.color, this.glyph, var1, this.visible, this.owner, this.createdAt); + } + + public avx withVisible(boolean var1) { + return new avx(this.id, this.name, this.dimension, this.x, this.y, this.z, this.color, this.glyph, this.shared, var1, this.owner, this.createdAt); + } + + public avx withPosition(int var1, int var2, int var3) { + return new avx( + this.id, + this.name, + this.dimension, + clampCoordinate(var1), + clampCoordinate(var2), + clampCoordinate(var3), + this.color, + this.glyph, + this.shared, + this.visible, + this.owner, + this.createdAt + ); + } + + public avx withOwner(String var1) { + return new avx( + this.id, + this.name, + this.dimension, + this.x, + this.y, + this.z, + this.color, + this.glyph, + this.shared, + this.visible, + var1 == null ? "" : var1, + this.createdAt + ); + } + + public static String sanitizeName(String var0) { + String var1 = null; + String var3 = null; + int var2 = -423281496; + + while (true) { + switch (var2) { + case -1162040403: + var3 = var1.substring(0, (-1978310198 | 1978310222) + (-1978310198 & 1978310222)); + var2 = 1605278079; + break; + case -423281496: + default: + if (var0 == null) { + var2 = 1713096718; + } else { + var2 = 2028199800; + } + break; + case 560438068: + var3 = var1; + var2 = 1605278079; + break; + case 1605278079: + return var3; + case 1713096718: + return ""; + case 2028199800: + var1 = var0.trim(); + if (var1.length() > (1550768635 ^ -1550768611) + ((1550768635 & -1550768611) << 1)) { + var2 = -1162040403; + } else { + var2 = 560438068; + } + } + } + } + + public static int clampCoordinate(int var0) { + return Math.max(-30000000, Math.min(30000000, var0)); + } + + public JsonObject save() { + JsonObject var1 = new JsonObject(); + var1.addProperty("id", this.id); + var1.addProperty("name", this.name); + var1.addProperty("dimension", this.dimension); + var1.addProperty("x", this.x); + var1.addProperty("y", this.y); + var1.addProperty("z", this.z); + var1.addProperty("color", this.color); + var1.addProperty("glyph", this.glyph); + var1.addProperty("shared", this.shared); + var1.addProperty("visible", this.visible); + var1.addProperty("created", this.createdAt); + return var1; + } + + public static avx load(JsonObject var0) { + if (var0 != null + && var0.has("name") + && var0.has("dimension")) { + String var1 = sanitizeName(var0.get("name").getAsString()); + if (var1.isEmpty()) { + return null; + } + + String var2 = var0.has("id") + ? var0.get("id").getAsString() + : awb.newId(); + return new avx( + var2, + var1, + var0.get("dimension").getAsString(), + var0.has("x") + ? clampCoordinate(var0.get("x").getAsInt()) + : 0, + var0.has("y") + ? clampCoordinate(var0.get("y").getAsInt()) + : 0, + var0.has("z") + ? clampCoordinate(var0.get("z").getAsInt()) + : 0, + var0.has("color") + ? var0.get("color").getAsInt() + : awb.paletteColor((-1445544672 | 1445544672) + (-1445544672 & 1445544672)), + var0.has("glyph") + ? avy.byGlyph(var0.get("glyph").getAsString()).getGlyph() + : avy.DEFAULT.getGlyph(), + (boolean)(((var0.has("shared") + && var0.get("shared").getAsBoolean() + ? 1: (-1335479382 ^ 1335479382) + ((-1335479382 & 1335479382) << 1))) != 0), + (boolean)(((var0.has("visible") + && !var0.get("visible").getAsBoolean() + ? 0: (2005317555 | -2005317554) + (2005317555 & -2005317554))) != 0), + "", + var0.has("created") + ? var0.get("created").getAsLong() + : System.currentTimeMillis() + ); + } else { + return null; + } + } +} diff --git a/src/main/java/defpackage/avy.java b/src/main/java/defpackage/avy.java new file mode 100644 index 0000000..7489caa --- /dev/null +++ b/src/main/java/defpackage/avy.java @@ -0,0 +1,104 @@ +package defpackage; + + +public enum avy { + PIN("Pin", "x"), + HOME( + "Home", + "7" + ), + TARGET( + "Target", + "a" + ), + CHEST("Chest", "b"), + BLOCK("Block", "K"), + FIGHT("Fight", "c"), + WORLD( + "World", + "J" + ), + HEART( + "Heart", + "O" + ); + + public static final avy DEFAULT = PIN; + private final String label; + private final String glyph; + + avy(String var3, String var4) { + this.label = var3; + this.glyph = var4; + } + + public static avy byGlyph(String var0) { + avy[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = -972325244; + + while (true) { + switch (var5) { + case -1950137124: + return DEFAULT; + case -1545578483: + if (var0.isEmpty()) { + var5 = -423203881; + } else { + var5 = 2108781783; + } + break; + case -1405989603: + var3++; + var5 = 758017143; + break; + case -1259286695: + var4 = var1[var3]; + if (((avy)var4).glyph.equals(var0)) { + var5 = -315828191; + } else { + var5 = -1405989603; + } + break; + case -972325244: + default: + if (var0 != null) { + var5 = -1545578483; + } else { + var5 = -423203881; + } + break; + case -423203881: + return DEFAULT; + case -315828191: + return (avy)var4; + case 758017143: + if (var3 < var2) { + var5 = -1259286695; + } else { + var5 = -1950137124; + } + break; + case 2108781783: + var1 = values(); + var2 = var1.length; + var3 = 0; + var5 = 758017143; + } + } + } + + public avy next() { + return values()[(this.ordinal() + (1413831942 | -1413831941) + (1413831942 & -1413831941)) % values().length]; + } + + public String getLabel() { + return this.label; + } + + public String getGlyph() { + return this.glyph; + } +} diff --git a/src/main/java/defpackage/avz.java b/src/main/java/defpackage/avz.java new file mode 100644 index 0000000..2b266d5 --- /dev/null +++ b/src/main/java/defpackage/avz.java @@ -0,0 +1,520 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ServerData; + +public final class avz { + private static final String ACTION_WAYPOINT = "waypoint"; + private static final String KEY_SERVER = "server"; + private static final String KEY_POINTS = "points"; + private static final String KEY_ID = "id"; + private static final String KEY_NAME = "name"; + private static final String KEY_DIM = "dim"; + private static final String KEY_X = "x"; + private static final String KEY_Y = "y"; + private static final String KEY_Z = "z"; + private static final String KEY_COLOR = "color"; + private static final String KEY_GLYPH = "glyph"; + private static final String KEY_OWNER = "owner"; + private static final String PUSH_FAILURE = "waypoint sync failed: {}"; + private static final String STATUS_FAILURE = "waypoint sync rejected with status {}"; + private static final String RESPONSE_FAILURE = "waypoint sync response parse failed"; + private static final int IDLE_INTERVAL_TICKS = 100; + private static final int PENDING_INTERVAL_TICKS = 20; + private static final int UNSET_SHARE_VERSION = -1; + private static final String STATUS_SIGNED_OUT = "Sign in to share"; + private static final String STATUS_NO_SERVER = "Join a server to share"; + private static final String STATUS_SHARING_OFF = "Sharing off"; + private static final String STATUS_SYNCED = "Synced with friends"; + private static final String STATUS_SYNCING = "Syncing…"; + private static volatile boolean requestInFlight; + private static volatile boolean dirty; + private static volatile boolean syncing; + private static volatile boolean signedIn = (boolean)(((1)) != 0); + private static String server; + private static int ticks; + private static int epoch; + private static int lastPushedShareVersion = -1; + + private avz() { + } + + public static void initialize() { + ClientTickEvents.END_CLIENT_TICK.register(avz::tick); + } + + public static void markDirty() { + dirty = (boolean)(((1)) != 0); + } + + public static boolean isSyncing() { + return syncing; + } + + public static String statusLabel() { + wk var0 = null; + String var2 = null; + int var1 = -41053172; + + while (true) { + switch (var1) { + case -2091036307: + return var2; + case -2039078732: + var2 = "Synced with friends"; + var1 = -2091036307; + break; + case -1601871676: + return "Sharing off"; + case -1143360927: + if (syncing) { + var1 = -2039078732; + } else { + var1 = 1463225718; + } + break; + case -578903632: + if (server == null) { + var1 = 1408701560; + } else { + var1 = -432465377; + } + break; + case -432465377: + if (!signedIn) { + var1 = -333868370; + } else { + var1 = -1143360927; + } + break; + case -333868370: + return "Sign in to share"; + case -295384328: + if (!var0.showsFriendWaypoints()) { + var1 = -1601871676; + } else { + var1 = -578903632; + } + break; + case -41053172: + default: + var0 = wk.INSTANCE; + if (var0.isEnabled()) { + var1 = 1468575697; + } else { + var1 = -1601871676; + } + break; + case 1408701560: + return "Join a server to share"; + case 1463225718: + var2 = "Syncing…"; + var1 = -2091036307; + break; + case 1468575697: + if (!var0.sharesWithFriends()) { + var1 = -295384328; + } else { + var1 = -578903632; + } + } + } + } + + private static void tick(Minecraft var0) { + wk var1 = null; + int var2 = 0; + String var3 = null; + int var4 = 0; + int var5 = 0; + JsonObject var6 = null; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var7 = 810263875; + + while (true) { + switch (var7) { + case -1984595788: + var9 = 1; + var7 = 455479266; + break; + case -1553506713: + var10 = 20; + var7 = 1960549795; + break; + case -1544743024: + reset(); + return; + case -1537917580: + var8 = 1; + var7 = 739946796; + break; + case -1285826828: + if (var0.level == null) { + var7 = -1544743024; + } else { + var7 = -51147050; + } + break; + case -950744898: + if (!var1.sharesWithFriends()) { + var7 = -23465519; + } else { + var7 = -1537917580; + } + break; + case -669770582: + return; + case -419777577: + if (awb.getInstance().shareVersion() != lastPushedShareVersion) { + var7 = -1984595788; + } else { + var7 = -397387257; + } + break; + case -397387257: + var9 = 0; + var7 = 455479266; + break; + case -339940716: + reset(); + return; + case -142122725: + server = var3; + dirty = (boolean)(((1)) != 0); + epoch += 1; + var7 = 511547336; + break; + case -134385546: + signedIn = (boolean)(((1)) != 0); + push(var0, var6, var1); + return; + case -51147050: + var1 = wk.INSTANCE; + if (var1.isEnabled()) { + var7 = -950744898; + } else { + var7 = 2097536082; + } + break; + case -23465519: + if (var1.showsFriendWaypoints()) { + var7 = -1537917580; + } else { + var7 = 2097536082; + } + break; + case 118350825: + if (!dirty) { + var7 = -419777577; + } else { + var7 = -1984595788; + } + break; + case 455479266: + var4 = var9; + if (var4 != 0) { + var7 = -1553506713; + } else { + var7 = 973106283; + } + break; + case 511547336: + ticks += 1; + if (requestInFlight) { + var7 = -669770582; + } else { + var7 = 118350825; + } + break; + case 726232293: + if (var3 == null) { + var7 = -339940716; + } else { + var7 = 1854905055; + } + break; + case 739946796: + var2 = var8; + var3 = serverKey(var0); + if (var2 != 0) { + var7 = 726232293; + } else { + var7 = -339940716; + } + break; + case 810263875: + default: + if (var0.player != null) { + var7 = -1285826828; + } else { + var7 = -1544743024; + } + break; + case 973106283: + var10 = 100; + var7 = 1960549795; + break; + case 1214919378: + return; + case 1401588669: + ticks = 0; + var6 = anb.actionBody("waypoint"); + if (var6 == null) { + var7 = 1743937624; + } else { + var7 = -134385546; + } + break; + case 1743937624: + signedIn = (boolean)(((0)) != 0); + syncing = (boolean)(((0)) != 0); + awb.getInstance().clearShared(); + return; + case 1854905055: + if (!var3.equals(server)) { + var7 = -142122725; + } else { + var7 = 511547336; + } + break; + case 1960549795: + var5 = var10; + if (ticks < var5) { + var7 = 1214919378; + } else { + var7 = 1401588669; + } + break; + case 2097536082: + var8 = 0; + var7 = 739946796; + } + } + } + + private static void push(Minecraft var0, JsonObject var1, wk var2) { + var1.addProperty("server", server); + JsonArray var3 = new JsonArray(); + if (var2.sharesWithFriends()) { + List var4 = awb.getInstance().shareable(); + + for (int var5 = 0; var5 < var4.size(); var5++) { + var3.add(toJson((avx)var4.get(var5))); + } + } + + var1.add("points", var3); + int var7 = epoch; + String var8 = server; + int var6 = awb.getInstance().shareVersion(); + dirty = (boolean)(((0)) != 0); + requestInFlight = (boolean)(((1)) != 0); + anb.post(var1) + .whenComplete( + (var4x, var5x) -> { + if (var5x == null && var4x != null && var4x.statusCode() == (-650098835 | 650099035) + (-650098835 & 650099035)) { + try { + JsonObject var6x = JsonParser.parseString(var4x.body()).getAsJsonObject(); + JsonElement var7x = var6x.get("points"); + JsonArray var8x = var7x != null && var7x.isJsonArray() ? var7x.getAsJsonArray() : new JsonArray(); + List var9 = parseIncoming(var8x); + var0.execute(() -> { + apply(var7, var8, var6, var9); + requestInFlight = (boolean)(((0)) != 0); + }); + } catch (RuntimeException var10) { + requestInFlight = (boolean)(((0)) != 0); + syncing = (boolean)(((0)) != 0); + id.warn( + Cif.SOCIAL, + "waypoint sync response parse failed", + var10 + ); + } + } else { + requestInFlight = (boolean)(((0)) != 0); + syncing = (boolean)(((0)) != 0); + if (var4x != null && var4x.statusCode() != (779502538 ^ -779502338) + ((779502538 & -779502338) << 1)) { + id.warn( + Cif.SOCIAL, + "waypoint sync rejected with status {}", + var4x.statusCode() + ); + } else { + id.warn( + Cif.SOCIAL, + "waypoint sync failed: {}", + var5x == null ? "no response" : var5x.toString() + ); + } + } + } + ); + } + + private static void apply(int var0, String var1, int var2, List var3) { + Minecraft var4 = Minecraft.getInstance(); + if (var4.player != null && var0 == epoch && var1.equals(server)) { + lastPushedShareVersion = var2; + awb.getInstance().replaceShared(wk.INSTANCE.showsFriendWaypoints() ? var3 : List.of()); + syncing = (boolean)(((1)) != 0); + } + } + + private static JsonObject toJson(avx var0) { + JsonObject var1 = new JsonObject(); + var1.addProperty("id", var0.id()); + var1.addProperty("name", var0.name()); + var1.addProperty("dim", var0.dimension()); + var1.addProperty("x", var0.x()); + var1.addProperty("y", var0.y()); + var1.addProperty("z", var0.z()); + var1.addProperty("color", var0.color()); + var1.addProperty("glyph", var0.glyph()); + return var1; + } + + private static List parseIncoming(JsonArray var0) { + ArrayList var1 = null; + long var2 = (4893834321842017303L | -4893834321842017303L) + (4893834321842017303L & -4893834321842017303L); + Iterator var4 = null; + JsonElement var5 = null; + avx var6 = null; + int var7 = 1664563316; + + while (true) { + switch (var7) { + case -1687263696: + if (var4.hasNext()) { + var7 = 1285444213; + } else { + var7 = -127416396; + } + break; + case -1351860062: + var6 = parsePoint(var5.getAsJsonObject(), var2); + if (var6 != null) { + var7 = -778636501; + } else { + var7 = -1078552227; + } + break; + case -1078552227: + var7 = -1687263696; + break; + case -778636501: + var1.add(var6); + var7 = -1078552227; + break; + case -127416396: + return var1; + case -104706050: + var7 = -1687263696; + break; + case 1285444213: + var5 = (JsonElement)var4.next(); + if (!var5.isJsonObject()) { + var7 = -104706050; + } else { + var7 = -1351860062; + } + break; + case 1664563316: + default: + var1 = new ArrayList(); + var2 = System.currentTimeMillis(); + var4 = var0.iterator(); + var7 = -1687263696; + } + } + } + + private static avx parsePoint(JsonObject var0, long var1) { + if (var0.has("id") + && var0.has("owner") + && var0.has("name") + && var0.has("dim") + && var0.has("x") + && var0.has("y") + && var0.has("z")) { + String var3 = var0.get("owner").getAsString(); + if (var3 != null && !var3.isEmpty()) { + String var4 = avx.sanitizeName(var0.get("name").getAsString()); + if (var4.isEmpty()) { + return null; + } + + JsonElement var5 = var0.get("color"); + JsonElement var6 = var0.get("glyph"); + return new avx( + var0.get("id").getAsString(), + var4, + var0.get("dim").getAsString(), + avx.clampCoordinate(var0.get("x").getAsInt()), + avx.clampCoordinate(var0.get("y").getAsInt()), + avx.clampCoordinate(var0.get("z").getAsInt()), + var5 != null && var5.isJsonPrimitive() ? var5.getAsInt() : awb.paletteColor((-2138580981 | 2138580981) + (-2138580981 & 2138580981)), + var6 != null && var6.isJsonPrimitive() ? avy.byGlyph(var6.getAsString()).getGlyph() : avy.DEFAULT.getGlyph(), + (boolean)(((1)) != 0), + (boolean)(((1)) != 0), + var3, + var1 + ); + } else { + return null; + } + } else { + return null; + } + } + + private static void reset() { + server = null; + dirty = (boolean)(((0)) != 0); + ticks = 0; + signedIn = (boolean)(((1)) != 0); + syncing = (boolean)(((0)) != 0); + lastPushedShareVersion = -1; + awb.getInstance().clearShared(); + } + + private static String serverKey(Minecraft var0) { + ServerData var1 = null; + String var3 = null; + int var2 = -1333191725; + + while (true) { + switch (var2) { + case -1333191725: + default: + var1 = var0.getCurrentServer(); + if (var1 == null) { + var2 = -268743775; + } else { + var2 = -202884801; + } + break; + case -268743775: + var3 = null; + var2 = 1901239439; + break; + case -202884801: + var3 = var1.ip; + var2 = 1901239439; + break; + case 1901239439: + return var3; + } + } + } +} diff --git a/src/main/java/defpackage/aw.java b/src/main/java/defpackage/aw.java new file mode 100644 index 0000000..22630e1 --- /dev/null +++ b/src/main/java/defpackage/aw.java @@ -0,0 +1,7 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; + +public interface aw { + void applyPose(PoseStack var1); +} diff --git a/src/main/java/defpackage/awa.java b/src/main/java/defpackage/awa.java new file mode 100644 index 0000000..11de617 --- /dev/null +++ b/src/main/java/defpackage/awa.java @@ -0,0 +1,541 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; +import org.joml.Vector3f; + +public final class awa implements aqg { + private static final awa INSTANCE = new awa(); + private static final int ORDER_INITIAL_CAPACITY = 16; + private static final int DISTANCE_CACHE_SIZE = 512; + private static final String DISTANCE_UNIT_SUFFIX = "m"; + private static final double HALF_BLOCK = 0.5; + private static final double MARKER_FLOAT_BLOCKS = 1.0; + private static final float MARKER_PAD = 4.0F; + private static final float MARKER_ROW_GAP = 2.0F; + private static final float MARKER_ICON_TEXT_GAP = 3.0F; + private static final float MARKER_TINT_ALPHA = 0.16F; + private static final float MARKER_RIM_ALPHA = 0.4F; + private static final float MARKER_TRACKED_RIM_ALPHA = 0.85F; + private static final float MARKER_TRACKED_RING_ALPHA = 0.55F; + private static final float MARKER_TRACKED_RING_INSET = 2.5F; + private static final float MARKER_DISTANCE_ALPHA = 0.72F; + private static final float MARKER_OWNER_ALPHA = 0.5F; + private static final float MARKER_MIN_VISIBLE_ALPHA = 0.02F; + private static final float MARKER_SCALE_NEAR = 1.15F; + private static final float MARKER_SCALE_FAR = 0.55F; + private static final float MARKER_TRACKED_SCALE_BOOST = 1.18F; + private static final float MARKER_UNTRACKED_ALPHA = 0.74F; + private static final float MARKER_FADE_BAND_RATIO = 0.18F; + private static final float MARKER_MIN_FADE_BAND = 1.0F; + private static final double BEAM_HEIGHT_BLOCKS = 3.5; + private static final float BEAM_WIDTH = 1.6F; + private static final float BEAM_BASE_ALPHA = 0.55F; + private static final float BEAM_MIN_HEIGHT = 1.0F; + private static final float EDGE_INSET = 20.0F; + private static final float EDGE_INSET_BOTTOM = 58.0F; + private static final float EDGE_BADGE_SIZE = 16.0F; + private static final float EDGE_BADGE_ALPHA = 0.85F; + private static final float EDGE_RING_ALPHA = 0.55F; + private static final float EDGE_CHEVRON_ALPHA = 0.9F; + private static final float EDGE_CHEVRON_ARM = 4.0F; + private static final float EDGE_CHEVRON_GAP = 2.4F; + private static final float EDGE_CHEVRON_THICKNESS = 1.5F; + private static final float EDGE_CHEVRON_HALF_ANGLE = 0.55F; + private static final float EDGE_LABEL_GAP = 3.0F; + private static final float EDGE_LABEL_ALPHA = 0.85F; + private static final float EDGE_DIRECTION_EPSILON = 1.0E-4F; + private static final float EDGE_YAW_OFFSET_DEGREES = 90.0F; + private final List visibleWaypoints = new ArrayList<>(); + private int[] order = new int[16]; + private float[] orderDistanceSq = new float[16]; + private final int[] distanceCacheKeys = new int[512]; + private final String[] distanceCacheLabels = new String[512]; + private final Vector3f projection = new Vector3f(); + private final Vector3f beamBaseProjection = new Vector3f(); + private final Vector3f beamTopProjection = new Vector3f(); + private final Vector3f edgeProjection = new Vector3f(); + + private awa() { + } + + public static awa getInstance() { + return INSTANCE; + } + + public void render(aru var1, float var2) { + if (mc.level != null && mc.player != null) { + awb var3 = awb.getInstance(); + var3.collectVisible(var3.currentDimension(), wk.INSTANCE.showsFriendWaypoints(), this.visibleWaypoints); + mv var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + String var5 = var3.tracked(); + int var6 = this.visibleWaypoints.size(); + if (var6 > 0) { + float var7 = wk.INSTANCE.maxDistance(); + float var8 = var7 * var7; + double var9 = mc.player.getX(); + double var11 = mc.player.getY(); + double var13 = mc.player.getZ(); + this.ensureOrderCapacity(var6); + int var15 = 0; + + for (int var16 = 0; var16 < var6; var16++) { + avx var17 = this.visibleWaypoints.get(var16); + double var18 = var17.x() + 0.5 - var9; + double var20 = var17.y() + 0.5 - var11; + double var22 = var17.z() + 0.5 - var13; + float var24 = (float)(var18 * var18 + var20 * var20 + var22 * var22); + if (!(var24 > var8)) { + this.order[var15] = var16; + this.orderDistanceSq[var15] = var24; + var15++; + } + } + + this.sortByDistanceDescending(var15); + boolean var26 = wk.INSTANCE.showsBeam(); + float var27 = wk.INSTANCE.markerScale(); + + for (int var28 = 0; var28 < var15; var28++) { + avx var19 = this.visibleWaypoints.get(this.order[var28]); + float var29 = Mth.sqrt(this.orderDistanceSq[var28]); + int var21 = var5 != null && var5.equals(var19.id()) + ? 1: 0; + this.renderWaypoint(var1, var4, var19, var29, (boolean)((var21) != 0), var7, var27, var26); + } + } + + if (wk.INSTANCE.showsEdgeArrows()) { + avx var25 = var3.trackedWaypoint(); + if (var25 != null) { + this.renderEdgeArrow(var1, var4, var25); + } + } + } + } + + private void ensureOrderCapacity(int var1) { + int var2 = 0; + int var3 = 1960633144; + + while (true) { + switch (var3) { + case -2022206305: + return; + case -1179134610: + var2 = Math.max(var1, this.order.length * ((1618919682 ^ -1618919680) + ((1618919682 & -1618919680) << 1))); + this.order = new int[var2]; + this.orderDistanceSq = new float[var2]; + var3 = -2022206305; + break; + case 1960633144: + default: + if (this.order.length < var1) { + var3 = -1179134610; + } else { + var3 = -2022206305; + } + } + } + } + + private void sortByDistanceDescending(int var1) { + int var2 = 0; + int var3 = 0; + float var4 = 0.0F; + int var5 = 0; + int var6 = 868573233; + + while (true) { + switch (var6) { + case -423547546: + if (this.orderDistanceSq[var5] < var4) { + var6 = 188721106; + } else { + var6 = 1519042358; + } + break; + case 152538475: + return; + case 188721106: + this.order[var5 + 1] = this.order[var5]; + this.orderDistanceSq[var5 + 1] = this.orderDistanceSq[var5]; + var5--; + var6 = 950337226; + break; + case 868573233: + default: + var2 = 1; + var6 = 1191939695; + break; + case 950337226: + if (var5 >= 0) { + var6 = -423547546; + } else { + var6 = 1519042358; + } + break; + case 1180253228: + var3 = this.order[var2]; + var4 = this.orderDistanceSq[var2]; + var5 = var2 - (1); + var6 = 950337226; + break; + case 1191939695: + if (var2 < var1) { + var6 = 1180253228; + } else { + var6 = 152538475; + } + break; + case 1519042358: + this.order[var5 + 1] = var3; + this.orderDistanceSq[var5 + 1] = var4; + var2++; + var6 = 1191939695; + } + } + } + + private void renderWaypoint(aru var1, mv var2, avx var3, float var4, boolean var5, float var6, float var7, boolean var8) { + float var9 = Math.max(var6 * 0.18F, 1.0F); + float var10 = var6 - var4; + float var11 = Mth.clamp(var10 / var9, 0.0F, 1.0F); + float var12 = var11 * (var5 ? 1.0F : 0.74F); + if (!(var12 <= 0.02F)) { + float var13 = Mth.clamp(var4 / Math.max(var6, 1.0F), 0.0F, 1.0F); + float var14 = Mth.lerp(var13, 1.15F, 0.55F) * var7 * (var5 ? 1.18F : 1.0F); + double var15 = var3.x() + 0.5; + double var17 = var3.y() + 0.5 + 1.0; + double var19 = var3.z() + 0.5; + if (aqk.projectToGui(new Vec3(var15, var17, var19), this.projection)) { + asu var21 = new asu(var3.color()); + if (var8) { + this.renderBeam(var1, var3, var21, var12, var7); + } + + this.drawMarker(var1, var2, var3, this.projection.x, this.projection.y, var4, var5, var21, var12, var14); + } + } + } + + private void renderBeam(aru var1, avx var2, asu var3, float var4, float var5) { + double var6 = 0.0; + double var8 = 0.0; + Vec3 var10 = null; + Vec3 var11 = null; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + asu var17 = null; + asu var18 = null; + int var19 = -350156653; + + while (true) { + switch (var19) { + case -1914036052: + return; + case -1719875656: + if (!aqk.projectToGui(var11, this.beamTopProjection)) { + var19 = -1914036052; + } else { + var19 = 842020922; + } + break; + case -1018824966: + var15 = (this.beamBaseProjection.x + this.beamTopProjection.x) * 0.5F; + var16 = 1.6F * var5; + var17 = var3.mulAlpha(0.55F * var4); + var18 = var3.mulAlpha(0.0F); + var1.drawRoundedRect(var15 - var16 * 0.5F, var12, var16, var14, asj.pill(var16), ary.of(var18, var17, var18, var17)); + return; + case -350156653: + default: + var6 = var2.x() + 0.5; + var8 = var2.z() + 0.5; + var10 = new Vec3(var6, var2.y(), var8); + var11 = new Vec3(var6, var2.y() + 3.5, var8); + if (aqk.projectToGui(var10, this.beamBaseProjection)) { + var19 = -1719875656; + } else { + var19 = -1914036052; + } + break; + case 799290728: + return; + case 842020922: + var12 = Math.min(this.beamBaseProjection.y, this.beamTopProjection.y); + var13 = Math.max(this.beamBaseProjection.y, this.beamTopProjection.y); + var14 = var13 - var12; + if (var14 <= 1.0F) { + var19 = 799290728; + } else { + var19 = -1018824966; + } + } + } + } + + private void drawMarker(aru var1, mv var2, avx var3, float var4, float var5, float var6, boolean var7, asu var8, float var9, float var10) { + boolean var11 = wk.INSTANCE.showsLabels(); + boolean var12 = wk.INSTANCE.showsDistance(); + int var13 = !var3.isLocal() ? 1: 0; + ge var14 = pi.iconFont(); + ge var15 = pk.font(oe.LABEL); + ge var16 = pk.font(oe.MICRO); + ge var17 = pk.font(oe.CAPTION); + String var18 = var3.icon().getGlyph(); + String var19 = var11 ? var3.name() : null; + String var20 = var12 ? this.distanceLabel(Math.round(var6)) : null; + String var21 = var13 != 0 ? var3.owner() : null; + float var22 = var14.width(var18); + float var23 = var19 != null ? Math.max(var14.height(), var15.height()) : var14.height(); + float var24 = var22 + (var19 != null ? 3.0F + var15.width(var19) : 0.0F); + float var25 = var20 != null ? var16.width(var20) : 0.0F; + float var26 = var21 != null ? var17.width(var21) : 0.0F; + float var27 = Math.max(var24, Math.max(var25, var26)); + float var28 = var23; + if (var20 != null) { + var28 += 2.0F + var16.height(); + } + + if (var21 != null) { + var28 += 2.0F + var17.height(); + } + + float var29 = var27 + 8.0F; + float var30 = var28 + 8.0F; + float var31 = var29 * 0.5F; + float var32 = var30 * 0.5F; + var1.pushMatrix(); + var1.pose().translate(var4, var5); + var1.pose().scale(var10, var10); + arq var33 = asj.pill(var30); + pi.surface(var1, -var31, -var32, var29, var30, var33, nz.LOW, var9); + var1.drawRoundedRect(-var31, -var32, var29, var30, var33, var8.mulAlpha(0.16F * var9)); + var1.drawRoundedBorder(-var31, -var32, var29, var30, pk.borderRim(), var33, var8.mulAlpha((var7 ? 0.85F : 0.4F) * var9)); + if (var7) { + float var34 = 2.5F; + var1.drawRoundedBorder( + -var31 - var34, + -var32 - var34, + var29 + var34 * 2.0F, + var30 + var34 * 2.0F, + pk.borderRim(), + asj.pill(var30 + var34 * 2.0F), + var8.mulAlpha(0.55F * var9) + ); + } + + float var37 = -var32 + 4.0F; + float var35 = -var24 * 0.5F; + var1.drawText(var14, var18, var35, var37 + (var23 - var14.height()) * 0.5F, var8.mulAlpha(var9)); + if (var19 != null) { + float var36 = var35 + var22 + 3.0F; + var1.drawText(var15, var19, var36, var37 + (var23 - var15.height()) * 0.5F, var2.getWhite().mulAlpha(var9)); + } + + var37 += var23; + if (var20 != null) { + var37 += 2.0F; + var1.drawText(var16, var20, -var25 * 0.5F, var37, var2.getWhite().mulAlpha(0.72F * var9)); + var37 += var16.height(); + } + + if (var21 != null) { + var37 += 2.0F; + var1.drawText(var17, var21, -var26 * 0.5F, var37, var2.getWhite().mulAlpha(0.5F * var9)); + } + + var1.popMatrix(); + } + + private void renderEdgeArrow(aru var1, mv var2, avx var3) { + float var4 = mc.getWindow().getGuiScaledWidth(); + float var5 = mc.getWindow().getGuiScaledHeight(); + float var6 = 20.0F; + float var7 = 20.0F; + float var8 = var4 - 20.0F; + float var9 = var5 - 58.0F; + if (!(var8 <= var6) && !(var9 <= var7)) { + float var10 = (var6 + var8) * 0.5F; + float var11 = (var7 + var9) * 0.5F; + float var12 = (var8 - var6) * 0.5F; + float var13 = (var9 - var7) * 0.5F; + double var14 = mc.player.getX(); + double var16 = mc.player.getY(); + double var18 = mc.player.getZ(); + double var20 = var3.x() + 0.5 - var14; + double var22 = var3.y() + 0.5 - var16; + double var24 = var3.z() + 0.5 - var18; + double var26 = Math.sqrt(var20 * var20 + var22 * var22 + var24 * var24); + boolean var28 = aqk.projectToGui(new Vec3(var3.x() + 0.5, var3.y() + 0.5, var3.z() + 0.5), this.edgeProjection); + float var29; + float var30; + if (var28) { + int var31 = this.edgeProjection.x >= var6 && this.edgeProjection.x <= var8 && this.edgeProjection.y >= var7 && this.edgeProjection.y <= var9 + ? 1: 0; + if (var31 != 0) { + return; + } + + var29 = this.edgeProjection.x - var10; + var30 = this.edgeProjection.y - var11; + } else { + float var34 = (float)Mth.wrapDegrees(Math.toDegrees(Math.atan2(var24, var20)) - 90.0); + float var32 = Mth.wrapDegrees(var34 - mc.player.getYRot()); + float var33 = var32 * (float) (Math.PI / 180.0); + var29 = Mth.sin(var33); + var30 = -Mth.cos(var33); + } + + this.clampToEdge(var29, var30, var10, var11, var12, var13, this.edgeProjection); + float var35 = (float)Math.atan2(var30, var29); + this.drawEdgeIndicator(var1, var2, var3, this.edgeProjection.x, this.edgeProjection.y, var35, var26); + } + } + + private void clampToEdge(float var1, float var2, float var3, float var4, float var5, float var6, Vector3f var7) { + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + int var13 = 1656273458; + + while (true) { + switch (var13) { + case -1701626599: + if (var8 <= 1.0E-4F) { + var13 = 488651062; + } else { + var13 = 1221796305; + } + break; + case -903507331: + var15 = Float.MAX_VALUE; + var13 = 858649635; + break; + case 243379927: + if (var9 <= 1.0E-4F) { + var13 = 547588779; + } else { + var13 = -1701626599; + } + break; + case 488651062: + var14 = Float.MAX_VALUE; + var13 = 1303674718; + break; + case 547588779: + var7.set(var3, var4 - var6, 0.0F); + return; + case 858649635: + var11 = var15; + var12 = Math.min(var10, var11); + var7.set(var3 + var1 * var12, var4 + var2 * var12, 0.0F); + return; + case 1221796305: + var14 = var5 / var8; + var13 = 1303674718; + break; + case 1303674718: + var10 = var14; + if (var9 <= 1.0E-4F) { + var13 = -903507331; + } else { + var13 = 1500459136; + } + break; + case 1500459136: + var15 = var6 / var9; + var13 = 858649635; + break; + case 1656273458: + default: + var8 = Math.abs(var1); + var9 = Math.abs(var2); + if (var8 <= 1.0E-4F) { + var13 = 243379927; + } else { + var13 = -1701626599; + } + } + } + } + + private void drawEdgeIndicator(aru var1, mv var2, avx var3, float var4, float var5, float var6, double var7) { + asu var9 = new asu(var3.color()); + float var10 = wk.INSTANCE.markerScale(); + float var11 = 16.0F * var10; + float var12 = var11 * 0.5F; + arq var13 = asj.pill(var11); + var1.pushMatrix(); + var1.pose().translate(var4, var5); + var1.drawRoundedRect(-var12, -var12, var11, var11, var13, var9.mulAlpha(0.85F)); + var1.drawRoundedBorder(-var12, -var12, var11, var11, pk.borderRim(), var13, var2.getWhite().mulAlpha(0.55F)); + ge var14 = pi.iconFont(); + String var15 = var3.icon().getGlyph(); + var1.drawText(var14, var15, -var14.width(var15) * 0.5F, -var14.height() * 0.5F, var2.getWhite()); + float var16 = var12 + 2.4F + 4.0F; + asu var17 = var9.mulAlpha(0.9F); + var1.pushMatrix(); + var1.pose().rotate(var6); + var1.pose().translate(var16, 0.0F); + this.drawChevronArm(var1, var17, -0.55F); + this.drawChevronArm(var1, var17, 0.55F); + var1.popMatrix(); + var1.popMatrix(); + ge var18 = pk.font(oe.MICRO); + String var19 = this.distanceLabel((int)Math.round(var7)); + float var20 = var5 + var12 + 2.4F + 8.0F + 3.0F; + var1.drawText(var18, var19, var4 - var18.width(var19) * 0.5F, var20, var2.getWhite().mulAlpha(0.85F)); + } + + private void drawChevronArm(aru var1, asu var2, float var3) { + var1.pushMatrix(); + var1.pose().rotate(var3); + var1.drawRoundedRect(-4.0F, -0.75F, 4.0F, 1.5F, asj.pill(1.5F), var2); + var1.popMatrix(); + } + + private String distanceLabel(int var1) { + int var2 = 0; + String var3 = null; + int var4 = -928205198; + + while (true) { + switch (var4) { + case -1137047989: + if (this.distanceCacheKeys[var2] == var1) { + var4 = -894842373; + } else { + var4 = 2069920629; + } + break; + case -928205198: + default: + var2 = Math.floorMod(var1, (848544553 ^ -848544041) + ((848544553 & -848544041) << 1)); + if (this.distanceCacheLabels[var2] != null) { + var4 = -1137047989; + } else { + var4 = 2069920629; + } + break; + case -894842373: + return this.distanceCacheLabels[var2]; + case 2069920629: + var3 = var1 + "m"; + this.distanceCacheKeys[var2] = var1; + this.distanceCacheLabels[var2] = var3; + return var3; + } + } + } +} diff --git a/src/main/java/defpackage/awb.java b/src/main/java/defpackage/awb.java new file mode 100644 index 0000000..1fbb899 --- /dev/null +++ b/src/main/java/defpackage/awb.java @@ -0,0 +1,1551 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; +import net.minecraft.core.BlockPos; + +public final class awb implements aqg { + public static final int MAX_OWN = 64; + public static final int MAX_SHARED = 256; + public static final int MAX_SHAREABLE = 32; + private static final String KEY_POINTS = "Points"; + private static final String KEY_TRACKED = "Tracked"; + private static final String KEY_WORLDS = "Worlds"; + private static final String LEGACY_KEY_POINTS = "Waypoints"; + private static final char SHARED_ID_SEPARATOR = '|'; + private static final int[] PALETTE; + private static final String QUICK_PREFIX = "Point "; + private static final String ID_FORMAT = "%08x%04x"; + private static final int ID_COUNTER_MASK = 65535; + private static final awb INSTANCE = new awb(); + private final Map> worlds = new LinkedHashMap<>(); + private final List unassigned = new ArrayList<>(); + private final List shared = new ArrayList<>(); + private List own = new ArrayList<>(); + private String worldKey; + private String tracked; + private int version; + private int shareVersion; + private int paletteCursor; + private int idCounter; + + private awb() { + } + + public static awb getInstance() { + return INSTANCE; + } + + public static int paletteColor(int var0) { + return PALETTE[Math.floorMod(var0, PALETTE.length)]; + } + + public static int paletteSize() { + return PALETTE.length; + } + + public static String newId() { + Locale var10000 = Locale.US; + String var10001 = "%08x%04x"; + Object[] var10002 = new Object[2]; + var10002[0] = (int)( + System.currentTimeMillis() & (2484390654959555376L | -2484390650664588081L) + (2484390654959555376L & -2484390650664588081L) + ); + int var10004 = 1; + int var10005 = INSTANCE.idCounter; + INSTANCE.idCounter += 1; + var10002[var10004] = var10005 & 65535; + return String.format(var10000, var10001, var10002); + } + + public List own() { + return Collections.unmodifiableList(this.own); + } + + public List shared() { + return Collections.unmodifiableList(this.shared); + } + + public int version() { + return this.version; + } + + public int shareVersion() { + return this.shareVersion; + } + + public String worldKey() { + return this.worldKey; + } + + public void openWorld(String var1) { + int var2 = -496985000; + + while (true) { + switch (var2) { + case -1509646369: + this.worldKey = var1; + this.own = this.worlds.computeIfAbsent(var1, var0 -> new ArrayList<>()); + this.adoptUnassigned(); + if (this.tracked != null) { + var2 = -537209825; + } else { + var2 = 905015082; + } + break; + case -787127796: + return; + case -537209825: + if (this.byId(this.tracked) == null) { + var2 = -314138082; + } else { + var2 = 905015082; + } + break; + case -496985000: + default: + if (var1 != null) { + var2 = 963534389; + } else { + var2 = -787127796; + } + break; + case -314138082: + this.tracked = null; + var2 = 905015082; + break; + case 905015082: + this.touch((boolean)((((1691824681 | -1691824680) + (1691824681 & -1691824680))) != 0)); + return; + case 963534389: + if (var1.equals(this.worldKey)) { + var2 = -787127796; + } else { + var2 = -1509646369; + } + } + } + } + + public void closeWorld() { + int var1 = -1928560208; + + while (true) { + switch (var1) { + case -1928560208: + default: + if (this.worldKey == null) { + var1 = 1016128683; + } else { + var1 = 1978092214; + } + break; + case 1016128683: + return; + case 1978092214: + this.worldKey = null; + this.own = new ArrayList<>(); + this.touch((boolean)((((31377334 ^ -31377333) + ((31377334 & -31377333) << 1))) != 0)); + return; + } + } + } + + public String currentDimension() { + String var2 = null; + int var1 = -189304033; + + while (true) { + switch (var1) { + case -189304033: + default: + if (mc.level == null) { + var1 = 692394814; + } else { + var1 = 1975659701; + } + break; + case 504122467: + return var2; + case 692394814: + var2 = ""; + var1 = 504122467; + break; + case 1975659701: + var2 = mc.level.dimension().identifier().toString(); + var1 = 504122467; + } + } + } + + public boolean isEmpty() { + return this.own.isEmpty(); + } + + public int count() { + return this.own.size(); + } + + public avx byId(String var1) { + int var2 = 0; + int var3 = -1926699597; + + while (true) { + switch (var3) { + case -1926699597: + default: + if (var1 == null) { + var3 = 1350284504; + } else { + var3 = 1508463649; + } + break; + case -1610718543: + if (this.own.get(var2).id().equals(var1)) { + var3 = 547458974; + } else { + var3 = 839682678; + } + break; + case -1456187634: + var2++; + var3 = -934516042; + break; + case -934516042: + if (var2 < this.shared.size()) { + var3 = -289692497; + } else { + var3 = -464377216; + } + break; + case -747913696: + return this.shared.get(var2); + case -464377216: + return null; + case -289692497: + if (this.shared.get(var2).id().equals(var1)) { + var3 = -747913696; + } else { + var3 = -1456187634; + } + break; + case 547458974: + return this.own.get(var2); + case 839682678: + var2++; + var3 = 952843952; + break; + case 952843952: + if (var2 < this.own.size()) { + var3 = -1610718543; + } else { + var3 = 1549875303; + } + break; + case 1350284504: + return null; + case 1508463649: + var2 = 0; + var3 = 952843952; + break; + case 1549875303: + var2 = 0; + var3 = -934516042; + } + } + } + + public void collectVisible(String var1, boolean var2, List var3) { + int var4 = 0; + avx var5 = null; + int var6 = -1058371363; + + while (true) { + switch (var6) { + case -2095894776: + var5 = this.own.get(var4); + if (var5.visible()) { + var6 = -490682208; + } else { + var6 = -340098325; + } + break; + case -1562775205: + return; + case -1103330306: + if (var1.isEmpty()) { + var6 = -176775740; + } else { + var6 = -342265428; + } + break; + case -1058371363: + default: + var3.clear(); + if (var1 != null) { + var6 = -1103330306; + } else { + var6 = -176775740; + } + break; + case -965063788: + if (var4 < this.own.size()) { + var6 = -2095894776; + } else { + var6 = 1058999664; + } + break; + case -490682208: + if (var5.dimension().equals(var1)) { + var6 = 184986533; + } else { + var6 = -340098325; + } + break; + case -342265428: + var4 = 0; + var6 = -965063788; + break; + case -340098325: + var4++; + var6 = -965063788; + break; + case -307622769: + var5 = this.shared.get(var4); + if (var5.dimension().equals(var1)) { + var6 = -139120217; + } else { + var6 = 1411204527; + } + break; + case -176775740: + return; + case -166274975: + var4 = 0; + var6 = -137142427; + break; + case -139120217: + var3.add(var5); + var6 = 1411204527; + break; + case -137142427: + if (var4 < this.shared.size()) { + var6 = -307622769; + } else { + var6 = -1562775205; + } + break; + case 184986533: + var3.add(var5); + var6 = -340098325; + break; + case 685909921: + return; + case 1058999664: + if (!var2) { + var6 = 685909921; + } else { + var6 = -166274975; + } + break; + case 1411204527: + var4++; + var6 = -137142427; + } + } + } + + public avx add(String var1, BlockPos var2, String var3, int var4, String var5, boolean var6) { + String var7 = null; + avx var8 = null; + int var9 = 1479920353; + + while (true) { + switch (var9) { + case -1102428043: + return null; + case -694519074: + if (!var7.isEmpty()) { + var9 = 1869191760; + } else { + var9 = -1102428043; + } + break; + case -115083181: + var8 = new avx( + newId(), + var7, + var3, + avx.clampCoordinate(var2.getX()), + avx.clampCoordinate(var2.getY()), + avx.clampCoordinate(var2.getZ()), + var4, + avy.byGlyph(var5).getGlyph(), + var6, + (boolean)(((1)) != 0), + "", + System.currentTimeMillis() + ); + this.own.add(var8); + this.touch(var6); + return var8; + case -60921508: + if (!var3.isEmpty()) { + var9 = 436520709; + } else { + var9 = -1102428043; + } + break; + case 436520709: + if (this.own.size() >= (-1345000841 | 1345000905) + (-1345000841 & 1345000905)) { + var9 = -1102428043; + } else { + var9 = -115083181; + } + break; + case 1479920353: + default: + var7 = avx.sanitizeName(var1); + if (this.worldKey != null) { + var9 = -694519074; + } else { + var9 = -1102428043; + } + break; + case 1574373214: + if (var3 != null) { + var9 = -60921508; + } else { + var9 = -1102428043; + } + break; + case 1869191760: + if (var2 != null) { + var9 = 1574373214; + } else { + var9 = -1102428043; + } + } + } + } + + public avx quickAdd(boolean var1) { + avx var3 = null; + int var2 = -1351422497; + + while (true) { + switch (var2) { + case -1351422497: + default: + if (mc.player == null) { + var2 = -727128023; + } else { + var2 = 792764343; + } + break; + case -727128023: + var3 = null; + var2 = 971810448; + break; + case 792764343: + var3 = this.quickAdd(mc.player.blockPosition(), var1); + var2 = 971810448; + break; + case 971810448: + return var3; + } + } + } + + public avx quickAdd(BlockPos var1, boolean var2) { + int var3 = 398732448; + + while (true) { + switch (var3) { + case -626721490: + if (mc.level == null) { + var3 = -430568248; + } else { + var3 = 91509073; + } + break; + case -430568248: + return null; + case 91509073: + String var10001 = this.nextQuickName(); + String var10003 = this.currentDimension(); + int var10004 = this.paletteCursor; + this.paletteCursor += 1; + return this.add(var10001, var1, var10003, paletteColor(var10004), avy.DEFAULT.getGlyph(), var2); + case 398732448: + default: + if (mc.player != null) { + var3 = -626721490; + } else { + var3 = -430568248; + } + } + } + } + + public String nextQuickName() { + int var1 = 0; + int var2 = 1148071539; + + while (true) { + switch (var2) { + case -203889107: + var1++; + var2 = 557459166; + break; + case 344588540: + return "Point " + var1; + case 557459166: + if (this.findByName("Point " + var1) != null) { + var2 = -203889107; + } else { + var2 = 344588540; + } + break; + case 1148071539: + default: + var1 = this.own.size() + 1; + var2 = 557459166; + } + } + } + + public avx findByName(String var1) { + int var2 = 0; + int var3 = 1306500944; + + while (true) { + switch (var3) { + case -2055570969: + var2++; + var3 = -750466421; + break; + case -750466421: + if (var2 < this.own.size()) { + var3 = 2064511891; + } else { + var3 = 1888676425; + } + break; + case 662081235: + return null; + case 1306500944: + default: + if (var1 == null) { + var3 = 662081235; + } else { + var3 = 1359516443; + } + break; + case 1359516443: + var2 = 0; + var3 = -750466421; + break; + case 1875552757: + return this.own.get(var2); + case 1888676425: + return null; + case 2064511891: + if (this.own.get(var2).name().equalsIgnoreCase(var1)) { + var3 = 1875552757; + } else { + var3 = -2055570969; + } + } + } + } + + public boolean remove(String var1) { + int var2 = 0; + avx var3 = null; + int var4 = -842581089; + + while (true) { + switch (var4) { + case -1937994148: + var4 = 1201738781; + break; + case -842581089: + default: + var2 = 0; + var4 = 278662812; + break; + case -801808906: + this.tracked = null; + var4 = -148411098; + break; + case -148411098: + this.touch(var3.shared()); + return (boolean)(((1)) != 0); + case 278662812: + if (var2 < this.own.size()) { + var4 = 1096502295; + } else { + var4 = 1547934988; + } + break; + case 654797839: + this.own.remove(var2); + if (var1.equals(this.tracked)) { + var4 = -801808906; + } else { + var4 = -148411098; + } + break; + case 1096502295: + var3 = this.own.get(var2); + if (!var3.id().equals(var1)) { + var4 = -1937994148; + } else { + var4 = 654797839; + } + break; + case 1201738781: + var2++; + var4 = 278662812; + break; + case 1547934988: + return (boolean)(((0)) != 0); + } + } + } + + public boolean replace(avx var1) { + if (var1 != null && var1.isLocal()) { + for (int var2 = 0; var2 < this.own.size(); var2++) { + avx var3 = this.own.get(var2); + if (var3.id().equals(var1.id())) { + this.own.set(var2, var1); + this.touch( + (boolean)(((!var3.shared() && !var1.shared() + ? 0: (938160527 | -938160526) + (938160527 & -938160526)) + ) != 0)); + return (boolean)(((1)) != 0); + } + } + + return (boolean)(((0)) != 0); + } else { + return (boolean)(((0)) != 0); + } + } + + public boolean rename(String var1, String var2) { + avx var3 = null; + String var4 = null; + int var6 = 0; + int var5 = -419878469; + + while (true) { + switch (var5) { + case -2112793232: + var6 = 1; + var5 = -1233458409; + break; + case -1233458409: + return (boolean)((var6) != 0); + case -419878469: + default: + var3 = this.ownById(var1); + var4 = avx.sanitizeName(var2); + if (var3 != null) { + var5 = 2008456182; + } else { + var5 = 2063425276; + } + break; + case 1252186487: + if (this.replace(var3.withName(var4))) { + var5 = -2112793232; + } else { + var5 = 2063425276; + } + break; + case 2008456182: + if (!var4.isEmpty()) { + var5 = 1252186487; + } else { + var5 = 2063425276; + } + break; + case 2063425276: + var6 = 0; + var5 = -1233458409; + } + } + } + + public boolean recolor(String var1, int var2) { + avx var3 = null; + int var5 = 0; + int var4 = -310174135; + + while (true) { + switch (var4) { + case -595419912: + var5 = 0; + var4 = 1455539095; + break; + case -310174135: + default: + var3 = this.ownById(var1); + if (var3 != null) { + var4 = -54211114; + } else { + var4 = -595419912; + } + break; + case -54211114: + if (this.replace(var3.withColor(var2))) { + var4 = 581816735; + } else { + var4 = -595419912; + } + break; + case 581816735: + var5 = 1; + var4 = 1455539095; + break; + case 1455539095: + return (boolean)((var5) != 0); + } + } + } + + public boolean setGlyph(String var1, String var2) { + avx var3 = null; + int var5 = 0; + int var4 = -575487164; + + while (true) { + switch (var4) { + case -575487164: + default: + var3 = this.ownById(var1); + if (var3 != null) { + var4 = 1082387855; + } else { + var4 = 1252215669; + } + break; + case 883156076: + var5 = 1; + var4 = 1290468838; + break; + case 1082387855: + if (this.replace(var3.withGlyph(var2))) { + var4 = 883156076; + } else { + var4 = 1252215669; + } + break; + case 1252215669: + var5 = 0; + var4 = 1290468838; + break; + case 1290468838: + return (boolean)((var5) != 0); + } + } + } + + public boolean setShared(String var1, boolean var2) { + avx var3 = null; + int var4 = 1081647534; + + while (true) { + switch (var4) { + case -1847581815: + return this.replace(var3.withShared(var2)); + case -1416448483: + if (var2) { + var4 = 2007308152; + } else { + var4 = -1847581815; + } + break; + case -1395396368: + return (boolean)(((0)) != 0); + case -865558113: + if (var3.shared() == var2) { + var4 = -1395396368; + } else { + var4 = -1416448483; + } + break; + case 791692621: + return (boolean)(((0)) != 0); + case 1081647534: + default: + var3 = this.ownById(var1); + if (var3 != null) { + var4 = -865558113; + } else { + var4 = -1395396368; + } + break; + case 2007308152: + if (this.sharedCount() >= (-417635829 | 417635861) + (-417635829 & 417635861)) { + var4 = 791692621; + } else { + var4 = -1847581815; + } + } + } + } + + public boolean setVisible(String var1, boolean var2) { + avx var3 = null; + int var5 = 0; + int var4 = 837214547; + + while (true) { + switch (var4) { + case -565090002: + var5 = 0; + var4 = 1430749435; + break; + case -95298679: + if (var3.visible() != var2) { + var4 = 1567208763; + } else { + var4 = -565090002; + } + break; + case 837214547: + default: + var3 = this.ownById(var1); + if (var3 != null) { + var4 = -95298679; + } else { + var4 = -565090002; + } + break; + case 1284103745: + var5 = 1; + var4 = 1430749435; + break; + case 1430749435: + return (boolean)((var5) != 0); + case 1567208763: + if (this.replace(var3.withVisible(var2))) { + var4 = 1284103745; + } else { + var4 = -565090002; + } + } + } + } + + public boolean moveHere(String var1) { + avx var2 = null; + BlockPos var3 = null; + int var4 = 1346888495; + + while (true) { + switch (var4) { + case -654911444: + if (mc.player != null) { + var4 = 1218743385; + } else { + var4 = -425285263; + } + break; + case -425285263: + return (boolean)(((0)) != 0); + case 1218743385: + if (mc.level == null) { + var4 = -425285263; + } else { + var4 = 1684873842; + } + break; + case 1346888495: + default: + var2 = this.ownById(var1); + if (var2 != null) { + var4 = -654911444; + } else { + var4 = -425285263; + } + break; + case 1684873842: + var3 = mc.player.blockPosition(); + return this.replace(var2.withPosition(var3.getX(), var3.getY(), var3.getZ())); + } + } + } + + public int sharedCount() { + int var1 = 0; + int var2 = 0; + int var3 = -1261347008; + + while (true) { + switch (var3) { + case -1753080508: + var2++; + var3 = 675934949; + break; + case -1261347008: + default: + var1 = 0; + var2 = 0; + var3 = 675934949; + break; + case -894505079: + if (this.own.get(var2).shared()) { + var3 = -565597357; + } else { + var3 = -1753080508; + } + break; + case -565597357: + var1++; + var3 = -1753080508; + break; + case 460009333: + return var1; + case 675934949: + if (var2 < this.own.size()) { + var3 = -894505079; + } else { + var3 = 460009333; + } + } + } + } + + public List shareable() { + ArrayList var1 = null; + int var2 = 0; + avx var3 = null; + int var4 = 1055717478; + + while (true) { + switch (var4) { + case -1725844546: + var2++; + var4 = 1058832885; + break; + case -621936072: + var1.add(var3); + var4 = -1725844546; + break; + case 1055717478: + default: + var1 = new ArrayList(); + var2 = 0; + var4 = 1058832885; + break; + case 1058832885: + if (var2 < this.own.size()) { + var4 = 1697676197; + } else { + var4 = 1343982075; + } + break; + case 1343982075: + return var1; + case 1608891816: + var3 = this.own.get(var2); + if (var3.shared()) { + var4 = -621936072; + } else { + var4 = -1725844546; + } + break; + case 1697676197: + if (var1.size() < (1562384153 | -1562384121) + (1562384153 & -1562384121)) { + var4 = 1608891816; + } else { + var4 = 1343982075; + } + } + } + } + + public String tracked() { + return this.tracked; + } + + public boolean isTracked(String var1) { + int var3 = 0; + int var2 = 1709775749; + + while (true) { + switch (var2) { + case -2132069412: + var3 = 0; + var2 = 1811272827; + break; + case -14564288: + if (var1.equals(this.tracked)) { + var2 = 1932424966; + } else { + var2 = -2132069412; + } + break; + case 1709775749: + default: + if (var1 != null) { + var2 = -14564288; + } else { + var2 = -2132069412; + } + break; + case 1811272827: + return (boolean)((var3) != 0); + case 1932424966: + var3 = 1; + var2 = 1811272827; + } + } + } + + public void setTracked(String var1) { + this.tracked = var1 != null && this.byId(var1) != null ? var1 : null; + } + + public void toggleTracked(String var1) { + this.setTracked(var1 != null && var1.equals(this.tracked) ? null : var1); + } + + public avx trackedWaypoint() { + avx var1 = null; + int var2 = 106198654; + + while (true) { + switch (var2) { + case -2051503652: + this.tracked = null; + return null; + case -320132765: + return null; + case 106198654: + default: + if (this.tracked == null) { + var2 = 1997640935; + } else { + var2 = 1710688424; + } + break; + case 350062780: + if (!var1.dimension().equals(this.currentDimension())) { + var2 = -320132765; + } else { + var2 = 544912580; + } + break; + case 544912580: + return var1; + case 1710688424: + var1 = this.byId(this.tracked); + if (var1 == null) { + var2 = -2051503652; + } else { + var2 = 350062780; + } + break; + case 1997640935: + return null; + } + } + } + + public void replaceShared(List var1) { + int var2 = 0; + avx var3 = null; + int var4 = 1563667237; + + while (true) { + switch (var4) { + case -1751329675: + if (!var3.isLocal()) { + var4 = -126118267; + } else { + var4 = -1655552145; + } + break; + case -1655552145: + var2++; + var4 = -1602845971; + break; + case -1602845971: + if (var2 < var1.size()) { + var4 = -37964436; + } else { + var4 = 1296939726; + } + break; + case -671437688: + this.version += 1; + return; + case -252034718: + var3 = (avx)var1.get(var2); + if (var3 != null) { + var4 = -1751329675; + } else { + var4 = -1655552145; + } + break; + case -126118267: + this.shared.add(namespaced(var3)); + var4 = -1655552145; + break; + case -37964436: + if (this.shared.size() < (-670069282 ^ 670069538) + ((-670069282 & 670069538) << 1)) { + var4 = -252034718; + } else { + var4 = 1296939726; + } + break; + case 1296939726: + this.version += 1; + return; + case 1563667237: + default: + this.shared.clear(); + if (var1 == null) { + var4 = -671437688; + } else { + var4 = 1780404944; + } + break; + case 1780404944: + var2 = 0; + var4 = -1602845971; + } + } + } + + private static avx namespaced(avx var0) { + return new avx( + var0.owner() + "|" + var0.id(), + var0.name(), + var0.dimension(), + var0.x(), + var0.y(), + var0.z(), + var0.color(), + var0.glyph(), + var0.shared(), + var0.visible(), + var0.owner(), + var0.createdAt() + ); + } + + public void clearShared() { + int var1 = -1524620056; + + while (true) { + switch (var1) { + case -2118481458: + this.shared.clear(); + this.version += 1; + return; + case -1524620056: + default: + if (this.shared.isEmpty()) { + var1 = 560739170; + } else { + var1 = -2118481458; + } + break; + case 560739170: + return; + } + } + } + + public void save(JsonObject var1) { + JsonObject var2 = null; + Iterator var3 = null; + Entry var4 = null; + int var5 = -289060232; + + while (true) { + switch (var5) { + case -2108165764: + var4 = (Entry)var3.next(); + if (!((List)var4.getValue()).isEmpty()) { + var5 = 874455467; + } else { + var5 = -1826048942; + } + break; + case -1826048942: + var5 = -876981225; + break; + case -972428608: + return; + case -876981225: + if (var3.hasNext()) { + var5 = -2108165764; + } else { + var5 = -97267363; + } + break; + case -876566695: + if (this.tracked != null) { + var5 = 2116067198; + } else { + var5 = -972428608; + } + break; + case -417318106: + var1.add("Points", write(this.unassigned)); + var5 = -876566695; + break; + case -289060232: + default: + var2 = new JsonObject(); + var3 = this.worlds.entrySet().iterator(); + var5 = -876981225; + break; + case -97267363: + var1.add("Worlds", var2); + if (!this.unassigned.isEmpty()) { + var5 = -417318106; + } else { + var5 = -876566695; + } + break; + case 874455467: + var2.add((String)var4.getKey(), write((List)var4.getValue())); + var5 = -1826048942; + break; + case 2116067198: + var1.addProperty("Tracked", this.tracked); + var5 = -972428608; + } + } + } + + public void load(JsonObject var1) { + if (var1 != null) { + int var2 = var1.has("Worlds") + && var1.get("Worlds").isJsonObject() + ? 1: 0; + int var3 = var1.has("Points") + && var1.get("Points").isJsonArray() + ? 1: 0; + if (var2 != 0 || var3 != 0) { + this.worlds.clear(); + this.unassigned.clear(); + this.tracked = null; + if (var2 != 0) { + for (Entry var5 : var1.getAsJsonObject("Worlds").entrySet()) { + if (((JsonElement)var5.getValue()).isJsonArray()) { + ArrayList var6 = new ArrayList(); + readInto(((JsonElement)var5.getValue()).getAsJsonArray(), var6); + this.worlds.put((String)var5.getKey(), var6); + } + } + } + + if (var3 != 0) { + readInto(var1.getAsJsonArray("Points"), this.unassigned); + } + + this.own = this.worldKey == null ? new ArrayList<>() : this.worlds.computeIfAbsent(this.worldKey, var0 -> new ArrayList<>()); + this.adoptUnassigned(); + if (var1.has("Tracked") + && !var1.get("Tracked").isJsonNull()) { + this.tracked = var1.get("Tracked").getAsString(); + } + + this.touch((boolean)((((-100425473 ^ 100425474) + ((-100425473 & 100425474) << 1))) != 0)); + } + } + } + + public void importLegacy(JsonObject var1) { + int var2 = -299472225; + + while (true) { + switch (var2) { + case -1940578747: + if (var1.has("Waypoints")) { + var2 = 2136269741; + } else { + var2 = -604845686; + } + break; + case -1746002563: + if (this.worlds.isEmpty()) { + var2 = 111642351; + } else { + var2 = -604845686; + } + break; + case -727024927: + readInto(var1.getAsJsonArray("Waypoints"), this.unassigned); + this.adoptUnassigned(); + this.touch((boolean)((((-978778615 ^ 978778616) + ((-978778615 & 978778616) << 1))) != 0)); + return; + case -604845686: + return; + case -299472225: + default: + if (var1 != null) { + var2 = -1746002563; + } else { + var2 = -604845686; + } + break; + case 111642351: + if (this.unassigned.isEmpty()) { + var2 = -1940578747; + } else { + var2 = -604845686; + } + break; + case 2136269741: + if (!var1.get("Waypoints").isJsonArray()) { + var2 = -604845686; + } else { + var2 = -727024927; + } + } + } + } + + private void adoptUnassigned() { + int var1 = 0; + int var2 = 1530231172; + + while (true) { + switch (var2) { + case -1653173551: + return; + case -1462630782: + if (var1 < this.unassigned.size()) { + var2 = -1317487418; + } else { + var2 = 1658811728; + } + break; + case -1317487418: + if (this.own.size() < (1985655924 | -1985655860) + (1985655924 & -1985655860)) { + var2 = -878684096; + } else { + var2 = 1658811728; + } + break; + case -878684096: + this.own.add(this.unassigned.get(var1)); + var1++; + var2 = -1462630782; + break; + case -455446545: + if (this.unassigned.isEmpty()) { + var2 = -1653173551; + } else { + var2 = 1953774468; + } + break; + case 1530231172: + default: + if (this.worldKey != null) { + var2 = -455446545; + } else { + var2 = -1653173551; + } + break; + case 1658811728: + this.unassigned.clear(); + return; + case 1953774468: + var1 = 0; + var2 = -1462630782; + } + } + } + + private static JsonArray write(List var0) { + JsonArray var1 = null; + int var2 = 0; + int var3 = 921809585; + + while (true) { + switch (var3) { + case -1622557377: + if (var2 < var0.size()) { + var3 = -837894730; + } else { + var3 = -1113273178; + } + break; + case -1113273178: + return var1; + case -837894730: + var1.add(((avx)var0.get(var2)).save()); + var2++; + var3 = -1622557377; + break; + case 921809585: + default: + var1 = new JsonArray(); + var2 = 0; + var3 = -1622557377; + } + } + } + + private static void readInto(JsonArray var0, List var1) { + Iterator var2 = null; + JsonElement var3 = null; + avx var4 = null; + int var5 = 316863932; + + while (true) { + switch (var5) { + case -2020167901: + if (var2.hasNext()) { + var5 = -1279995680; + } else { + var5 = 274232251; + } + break; + case -1279995680: + var3 = (JsonElement)var2.next(); + if (var3.isJsonObject()) { + var5 = 2111970858; + } else { + var5 = -2020167901; + } + break; + case 274232251: + return; + case 316863932: + default: + var2 = var0.iterator(); + var5 = -2020167901; + break; + case 794100208: + var4 = avx.load(var3.getAsJsonObject()); + if (var4 != null) { + var5 = 1676255913; + } else { + var5 = 1363028607; + } + break; + case 1233489259: + var5 = -2020167901; + break; + case 1363028607: + var5 = -2020167901; + break; + case 1676255913: + var1.add(var4); + var5 = 1363028607; + break; + case 2111970858: + if (var1.size() >= (-1964462396 | 1964462460) + (-1964462396 & 1964462460)) { + var5 = 1233489259; + } else { + var5 = 794100208; + } + } + } + } + + private avx ownById(String var1) { + int var2 = 0; + int var3 = -337269790; + + while (true) { + switch (var3) { + case -1714375101: + if (this.own.get(var2).id().equals(var1)) { + var3 = -1157538232; + } else { + var3 = -1605410703; + } + break; + case -1605410703: + var2++; + var3 = 996719524; + break; + case -1157538232: + return this.own.get(var2); + case -433428300: + return null; + case -337269790: + default: + if (var1 == null) { + var3 = 1947121269; + } else { + var3 = -164253569; + } + break; + case -164253569: + var2 = 0; + var3 = 996719524; + break; + case 996719524: + if (var2 < this.own.size()) { + var3 = -1714375101; + } else { + var3 = -433428300; + } + break; + case 1947121269: + return null; + } + } + } + + private void touch(boolean var1) { + int var2 = -1275924469; + + while (true) { + switch (var2) { + case -1361795461: + this.shareVersion += 1; + var2 = -375351039; + break; + case -1275924469: + default: + this.version += 1; + if (var1) { + var2 = -1361795461; + } else { + var2 = -375351039; + } + break; + case -375351039: + return; + } + } + } + + static { + int[] var10000 = new int[8]; + var10000[0] = -9710081; + var10000[1] = -15797; + var10000[2] = -8658037; + var10000[3] = -33882; + var10000[4] = -4158465; + var10000[5] = -26020; + var10000[6] = -10230062; + var10000[7] = -38037; + PALETTE = var10000; + } +} diff --git a/src/main/java/defpackage/awc.java b/src/main/java/defpackage/awc.java new file mode 100644 index 0000000..7ee5494 --- /dev/null +++ b/src/main/java/defpackage/awc.java @@ -0,0 +1,45 @@ +package defpackage; + +import java.nio.charset.StandardCharsets; +import java.util.concurrent.ConcurrentHashMap; + +public final class awc { + private static final int LCG_MULTIPLIER = 1103515245; + private static final int LCG_INCREMENT = 12345; + private static final ConcurrentHashMap CACHE = new ConcurrentHashMap<>(); + + private awc() { + } + + public static String d(String cipher, int key) { + String cached = CACHE.get(cipher); + if (cached != null) { + return cached; + } + + int length = cipher.length(); + byte[] bytes = new byte[length]; + int state = key; + + for (int index = 0; index < length; index++) { + state = state * 1103527590; + bytes[index] = (byte)(cipher.charAt(index) ^ state >>> 24); + } + + String value = new String(bytes, StandardCharsets.UTF_8).intern(); + CACHE.put(cipher, value); + return value; + } + + public static String g(String cipher, int key) { + return session() == null ? null : d(cipher, key); + } + + private static Object session() { + try { + return Class.forName("aln").getMethod("key").invoke(null); + } catch (Throwable failure) { + return null; + } + } +} diff --git a/src/main/java/defpackage/ax.java b/src/main/java/defpackage/ax.java new file mode 100644 index 0000000..974b122 --- /dev/null +++ b/src/main/java/defpackage/ax.java @@ -0,0 +1,24 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; + +public class ax implements aw { + public static int id = 0; + public int index = 0; + public int order = id; + + protected ax() { + } + + public int getOrder() { + return this.order; + } + + public void setOrder(int var1) { + this.order = var1; + } + + @Override + public void applyPose(PoseStack var1) { + } +} diff --git a/src/main/java/defpackage/ay.java b/src/main/java/defpackage/ay.java new file mode 100644 index 0000000..e846b8a --- /dev/null +++ b/src/main/java/defpackage/ay.java @@ -0,0 +1,21 @@ +package defpackage; + +import java.util.function.Consumer; +import org.luaj.vm2.LuaFunction; +import org.luaj.vm2.lib.jse.CoerceJavaToLua; + +public class ay implements Consumer { + private final LuaFunction function; + + public ay(LuaFunction var1) { + this.function = var1; + } + + public void accept(az var1) { + try { + this.function.call(CoerceJavaToLua.coerce(var1)); + } catch (Exception var3) { + var3.printStackTrace(); + } + } +} diff --git a/src/main/java/defpackage/az.java b/src/main/java/defpackage/az.java new file mode 100644 index 0000000..9f9c1aa --- /dev/null +++ b/src/main/java/defpackage/az.java @@ -0,0 +1,656 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Objects; +import java.util.function.Consumer; +import net.minecraft.client.Camera; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.Identifier; +import net.minecraft.util.LightCoordsUtil; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.phys.Vec3; +import org.joml.Matrix3f; +import org.joml.Matrix4f; +import org.joml.Quaternionf; +import org.joml.Vector3f; + +public class az { + private int prevAge; + private Consumer ticker; + public String lifecycleType; + public String space; + public boolean dead; + private boolean isBirth; + private final String particleRenderType; + private double yawPrev; + private double pitchPrev; + private double particleLifetime; + public double x; + public double y; + public double z; + public double dx; + public double dy; + public double dz; + private double alpha; + private double scale; + public double maxScale; + public double rx; + public double ry; + public double rz; + public double drx; + public double dry; + public double drz; + private boolean gravity; + public InteractionHand hand; + private double age; + private Identifier texture; + private List keyframes; + public PoseStack p_matrices; + Iterator iterator; + + public az( + boolean var1, + double var2, + double var4, + double var6, + double var8, + double var10, + double var12, + double var14, + double var16, + double var18, + double var20, + double var22, + double var24, + double var26, + Identifier var28, + String var29, + InteractionHand var30, + String var31, + String var32, + double var33, + double var35, + Consumer var37 + ) { + this.prevAge = 0; + this.ticker = null; + this.dead = (boolean)(((0)) != 0); + this.isBirth = (boolean)(((1)) != 0); + this.yawPrev = 0.0; + this.pitchPrev = 0.0; + this.particleLifetime = 0.0; + this.alpha = 255.0; + this.scale = 0.0; + this.maxScale = 1.0; + this.age = 0.0; + this.keyframes = new ArrayList<>(); + this.p_matrices = null; + this.particleLifetime = var33; + this.gravity = var1; + this.lifecycleType = var31; + this.particleRenderType = var32; + this.space = var29; + this.hand = var30; + this.ticker = var37; + this.alpha = var35; + this.x = var2; + this.y = var4; + this.z = var6; + this.dx = var8; + this.dy = var10; + this.dz = var12; + this.rx = var14; + this.ry = var16; + this.rz = var18; + this.drx = var20; + this.dry = var22; + this.drz = var24; + this.maxScale = var26; + this.texture = var28; + this.iterator = this.keyframes.iterator(); + } + + public az( + boolean var1, + double var2, + double var4, + double var6, + double var8, + double var10, + double var12, + double var14, + double var16, + double var18, + double var20, + double var22, + double var24, + double var26, + Identifier var28, + String var29, + InteractionHand var30, + String var31, + String var32, + double var33, + double var35 + ) { + this.prevAge = 0; + this.ticker = null; + this.dead = (boolean)(((0)) != 0); + this.isBirth = (boolean)(((1)) != 0); + this.yawPrev = 0.0; + this.pitchPrev = 0.0; + this.particleLifetime = 0.0; + this.alpha = 255.0; + this.scale = 0.0; + this.maxScale = 1.0; + this.age = 0.0; + this.keyframes = new ArrayList<>(); + this.p_matrices = null; + this.particleLifetime = var33; + this.gravity = var1; + this.lifecycleType = var31; + this.particleRenderType = var32; + this.space = var29; + this.hand = var30; + this.alpha = var35; + this.x = var2; + this.y = var4; + this.z = var6; + this.dx = var8; + this.dy = var10; + this.dz = var12; + this.rx = var14; + this.ry = var16; + this.rz = var18; + this.drx = var20; + this.dry = var22; + this.drz = var24; + this.maxScale = var26; + this.texture = var28; + this.iterator = this.keyframes.iterator(); + } + + public az( + boolean var1, + double var2, + double var4, + double var6, + double var8, + double var10, + double var12, + double var14, + double var16, + double var18, + double var20, + double var22, + double var24, + double var26, + Identifier var28, + List var29, + String var30, + InteractionHand var31, + String var32, + String var33, + double var34, + double var36, + Consumer var38 + ) { + this.prevAge = 0; + this.ticker = null; + this.dead = (boolean)(((0)) != 0); + this.isBirth = (boolean)(((1)) != 0); + this.yawPrev = 0.0; + this.pitchPrev = 0.0; + this.particleLifetime = 0.0; + this.alpha = 255.0; + this.scale = 0.0; + this.maxScale = 1.0; + this.age = 0.0; + this.keyframes = new ArrayList<>(); + this.p_matrices = null; + this.particleLifetime = var34; + this.gravity = var1; + this.lifecycleType = var32; + this.particleRenderType = var33; + this.space = var30; + this.hand = var31; + this.ticker = var38; + this.x = var2; + this.y = var4; + this.z = var6; + this.alpha = var36; + this.dx = var8; + this.dy = var10; + this.dz = var12; + this.rx = var14; + this.ry = var16; + this.rz = var18; + this.drx = var20; + this.dry = var22; + this.drz = var24; + this.maxScale = var26; + this.texture = var28; + this.keyframes = var29; + this.iterator = var29.iterator(); + } + + public az( + boolean var1, + double var2, + double var4, + double var6, + double var8, + double var10, + double var12, + double var14, + double var16, + double var18, + double var20, + double var22, + double var24, + double var26, + Identifier var28, + String var29, + InteractionHand var30, + String var31, + String var32, + double var33, + double var35, + Consumer var37, + PoseStack var38 + ) { + this.prevAge = 0; + this.ticker = null; + this.dead = (boolean)(((0)) != 0); + this.isBirth = (boolean)(((1)) != 0); + this.yawPrev = 0.0; + this.pitchPrev = 0.0; + this.particleLifetime = 0.0; + this.alpha = 255.0; + this.scale = 0.0; + this.maxScale = 1.0; + this.age = 0.0; + this.keyframes = new ArrayList<>(); + this.p_matrices = null; + this.particleLifetime = var33; + this.gravity = var1; + this.lifecycleType = var31; + this.particleRenderType = var32; + this.space = var29; + this.hand = var30; + this.ticker = var37; + this.x = var2; + this.y = var4; + this.z = var6; + this.alpha = var35; + this.dx = var8; + this.dy = var10; + this.dz = var12; + this.rx = var14; + this.ry = var16; + this.rz = var18; + this.drx = var20; + this.dry = var22; + this.drz = var24; + this.maxScale = var26; + this.texture = var28; + this.iterator = this.keyframes.iterator(); + this.p_matrices = var38; + } + + public void tick() { + LocalPlayer var1 = null; + double var2 = 0.0; + double var4 = 0.0; + double var6 = 0.0; + double var8 = 0.0; + Vec3 var10 = null; + double var11 = 0.0; + double var13 = 0.0; + int var15 = -1996096404; + + while (true) { + switch (var15) { + case -2018577300: + this.particleLifetime = this.particleLifetime - 0.1F * t.deltaTime * 30.0F; + this.particleLifetime = Math.clamp(this.particleLifetime, 0.0, 9999.0); + this.age = this.age + 0.1F * t.deltaTime * 30.0F; + this.x = this.x + this.dx * t.deltaTime * 30.0; + this.y = this.y + this.dy * t.deltaTime * 30.0; + this.z = this.z + this.dz * t.deltaTime * 30.0; + this.dx = this.dx * Math.pow(0.9, t.deltaTime * 30.0F); + this.dy = this.dy * Math.pow(0.9, t.deltaTime * 30.0F); + this.dz = this.dz * Math.pow(0.9, t.deltaTime * 30.0F); + var1 = Minecraft.getInstance().player; + var2 = var1.getYRot(); + var4 = Math.toRadians(var2); + var6 = -Math.sin(var4); + var8 = Math.cos(var4); + var10 = var1.getDeltaMovement(); + var11 = var10.x * var6 + var10.z * var8; + var13 = var1.getDeltaMovement().horizontal().x * var8 - var10.z * var6; + if (this.gravity) { + var15 = 2066753165; + } else { + var15 = 1912744603; + } + break; + case -2005680576: + this.dead = (boolean)(((1)) != 0); + var15 = -1258963923; + break; + case -1996096404: + default: + if (!this.dead) { + var15 = -2018577300; + } else { + var15 = 109657867; + } + break; + case -1823450001: + this.scale = this.maxScale; + this.isBirth = (boolean)(((0)) != 0); + var15 = -1258963923; + break; + case -1664808849: + this.dead = (boolean)(((1)) != 0); + var15 = -1258963923; + break; + case -1644858356: + if (!this.isBirth) { + var15 = 1692799027; + } else { + var15 = -410235027; + } + break; + case -1397411670: + if (Minecraft.getInstance().player.tickCount % 4== 0) { + var15 = 1440984821; + } else { + var15 = -924754680; + } + break; + case -1258963923: + if (this.ticker != null) { + var15 = -1087382413; + } else { + var15 = -629548256; + } + break; + case -1116647195: + if (this.iterator.hasNext()) { + var15 = -1397411670; + } else { + var15 = -924754680; + } + break; + case -1087382413: + this.ticker.accept(this); + var15 = -629548256; + break; + case -1053667509: + this.dead = (boolean)(((1)) != 0); + this.alpha = 0.0; + var15 = -1258963923; + break; + case -924754680: + if (this.lifecycleType == "SCALE") { + var15 = 365802578; + } else { + var15 = 2069864333; + } + break; + case -917614662: + if (this.lifecycleType == "SPAWN") { + var15 = 1239284117; + } else { + var15 = 470570262; + } + break; + case -825191911: + if (!this.iterator.hasNext()) { + var15 = 1781005801; + } else { + var15 = 1629220447; + } + break; + case -770935396: + this.scale = this.maxScale; + this.isBirth = (boolean)(((0)) != 0); + var15 = -1258963923; + break; + case -684963481: + if (this.particleLifetime == 0.0) { + var15 = 881618494; + } else { + var15 = -520228364; + } + break; + case -629548256: + this.prevAge = var1.tickCount; + var15 = 109657867; + break; + case -520228364: + this.scale = this.scale + 0.07 * t.deltaTime * 30.0; + if (this.scale >= this.maxScale) { + var15 = -770935396; + } else { + var15 = -1258963923; + } + break; + case -410235027: + this.scale = this.maxScale; + this.isBirth = (boolean)(((0)) != 0); + this.alpha = 255.0; + var15 = -1258963923; + break; + case -84523913: + if (!this.isBirth) { + var15 = -825191911; + } else { + var15 = 1629220447; + } + break; + case 109657867: + return; + case 194182447: + this.texture = this.iterator.next(); + var15 = -924754680; + break; + case 365802578: + if (!this.isBirth) { + var15 = -684963481; + } else { + var15 = -520228364; + } + break; + case 470570262: + if (this.lifecycleType == "KEYFRAME") { + var15 = -84523913; + } else { + var15 = -1258963923; + } + break; + case 492384542: + if (this.particleLifetime == 0.0) { + var15 = -2005680576; + } else { + var15 = -1823450001; + } + break; + case 611166976: + this.alpha = this.alpha - 10.0F * t.deltaTime * 30.0F; + if (this.alpha <= 0.0) { + var15 = -1053667509; + } else { + var15 = -1258963923; + } + break; + case 881618494: + this.scale = this.scale - 0.03 * t.deltaTime * 30.0; + if (this.scale <= 0.0) { + var15 = -1664808849; + } else { + var15 = -1258963923; + } + break; + case 1239284117: + if (!this.isBirth) { + var15 = 492384542; + } else { + var15 = -1823450001; + } + break; + case 1440984821: + if (var1.tickCount != this.prevAge) { + var15 = 194182447; + } else { + var15 = -924754680; + } + break; + case 1629220447: + this.scale = this.maxScale; + this.isBirth = (boolean)(((0)) != 0); + var15 = -1258963923; + break; + case 1692799027: + if (this.particleLifetime == 0.0) { + var15 = 611166976; + } else { + var15 = -410235027; + } + break; + case 1781005801: + this.dead = (boolean)(((1)) != 0); + var15 = -1258963923; + break; + case 1912744603: + this.rx = this.rx + this.drx * t.deltaTime * 30.0; + this.ry = this.ry + this.dry * t.deltaTime * 30.0; + this.rz = this.rz + this.drz * t.deltaTime * 30.0; + if (!this.keyframes.isEmpty()) { + var15 = -1116647195; + } else { + var15 = -924754680; + } + break; + case 2066753165: + this.dy = this.dy - 0.01 * t.deltaTime * 30.0; + var15 = 1912744603; + break; + case 2069864333: + if (this.lifecycleType == "OPACITY") { + var15 = -1644858356; + } else { + var15 = -917614662; + } + } + } + } + + public void render(PoseStack var1, SubmitNodeCollector var2, int var3, AbstractClientPlayer var4, float var5) { + if (!this.dead) { + var1.pushPose(); + var1.translate(this.x, this.y, this.z); + var1.scale((float)this.scale, (float)this.scale, (float)this.scale); + String var6 = this.particleRenderType; + + RenderType var7 = switch (var6) { + case "ADDITIVE" -> bf.additiveParticle(this.texture); + case null, default -> RenderTypes.breezeWind(this.texture, 0.0F, 0.0F); + }; + Matrix4f var21 = var1.last().pose(); + Vector3f var22 = new Vector3f(); + Vector3f var10 = new Vector3f(); + Quaternionf var11 = new Quaternionf(); + var22 = var21.getTranslation(var22); + var11 = var21.getUnnormalizedRotation(var11); + var10 = var21.getScale(var10); + Camera var12 = Minecraft.getInstance().gameRenderer.mainCamera(); + Matrix4f var13 = var21.identity().translate(var22).scale(var10).rotate(var12.rotation()); + var13.rotate(new Quaternionf().rotateX((float)(this.rx * (float) (Math.PI / 180.0)))); + var13.rotate(new Quaternionf().rotateY((float)(this.ry * (float) (Math.PI / 180.0)))); + var13.rotate(new Quaternionf().rotateZ((float)(this.rz * (float) (Math.PI / 180.0)))); + Matrix3f var14 = var1.last().normal(); + if (Objects.equals(this.particleRenderType, "CUTOUT_L")) { + var3 = LightCoordsUtil.lightCoordsWithEmission( + 15, (1356156940 ^ -1356156925) + ((1356156940 & -1356156925) << 1) + ); + } + + double var15 = 0.5; + double var17 = var15 / 2.0; + Vector3f var19 = new Vector3f(0.0F, 0.0F, 1.0F); + var19.mul(var14); + int var20 = var3; + var2.submitCustomGeometry( + var1, + var7, + (var5x, var6x) -> { + var6x.addVertex(var5x, (float)var17, (float)var17, 0.0F) + .setColor( + 255, + 255, + 255, + Math.clamp( + (int)this.alpha, + 0, + (-1045852187 ^ 1045852442) + ((-1045852187 & 1045852442) << 1) + ) + ) + .setUv(1.0F, 0.0F) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var20) + .setNormal(var19.x, var19.y, var19.z); + var6x.addVertex(var5x, (float)(-var17), (float)var17, 0.0F) + .setColor( + 255, + 255, + 255, + Math.clamp( + (int)this.alpha, 0, (-1172011266 ^ 1172011521) + ((-1172011266 & 1172011521) << 1) + ) + ) + .setUv(0.0F, 0.0F) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var20) + .setNormal(var19.x, var19.y, var19.z); + var6x.addVertex(var5x, (float)(-var17), (float)(-var17), 0.0F) + .setColor( + 255, + 255, + 255, + Math.clamp((int)this.alpha, 0, (52547705 | -52547450) + (52547705 & -52547450)) + ) + .setUv(0.0F, 1.0F) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var20) + .setNormal(var19.x, var19.y, var19.z); + var6x.addVertex(var5x, (float)var17, (float)(-var17), 0.0F) + .setColor( + 255, + 255, + 255, + Math.clamp( + (int)this.alpha, 0, (-273366128 ^ 273366383) + ((-273366128 & 273366383) << 1) + ) + ) + .setUv(1.0F, 1.0F) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var20) + .setNormal(var19.x, var19.y, var19.z); + } + ); + var1.popPose(); + } + } +} diff --git a/src/main/java/defpackage/ba.java b/src/main/java/defpackage/ba.java new file mode 100644 index 0000000..2e8d34d --- /dev/null +++ b/src/main/java/defpackage/ba.java @@ -0,0 +1,325 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.resources.Identifier; +import net.minecraft.world.InteractionHand; +import org.luaj.vm2.LuaFunction; +import org.luaj.vm2.LuaValue; + +public class ba { + @ab + public void addParticle( + ArrayList var1, + boolean var2, + double var3, + double var5, + double var7, + double var9, + double var11, + double var13, + double var15, + double var17, + double var19, + double var21, + double var23, + double var25, + double var27, + Identifier var29, + String var30, + InteractionHand var31, + String var32, + String var33, + double var34, + double var36, + LuaValue var38 + ) { + ay var39 = null; + int var40 = -392379407; + + while (true) { + switch (var40) { + case -775874607: + var39 = new ay((LuaFunction)var38); + var40 = 1039053994; + break; + case -392379407: + default: + var33 = var33.intern(); + var32 = var32.intern(); + var30 = var30.intern(); + var39 = null; + if (var38.isfunction()) { + var40 = -775874607; + } else { + var40 = 1039053994; + } + break; + case 1039053994: + var1.add( + new az( + var2, + var3, + var5, + var7, + var9, + var11, + var13, + var15, + var17, + var19, + var21, + var23, + var25, + var27, + var29, + var30, + var31, + var32, + var33, + var34, + var36, + var39 + ) + ); + return; + } + } + } + + @ab + public void addParticle( + ArrayList var1, + boolean var2, + double var3, + double var5, + double var7, + double var9, + double var11, + double var13, + double var15, + double var17, + double var19, + double var21, + double var23, + double var25, + double var27, + Identifier var29, + String var30, + InteractionHand var31, + String var32, + String var33, + double var34, + double var36 + ) { + var33 = var33.intern(); + var32 = var32.intern(); + var30 = var30.intern(); + var1.add( + new az(var2, var3, var5, var7, var9, var11, var13, var15, var17, var19, var21, var23, var25, var27, var29, var30, var31, var32, var33, var34, var36) + ); + } + + @ab + public void addParticle( + ArrayList var1, + boolean var2, + double var3, + double var5, + double var7, + double var9, + double var11, + double var13, + double var15, + double var17, + double var19, + double var21, + double var23, + double var25, + double var27, + Identifier var29, + List var30, + String var31, + InteractionHand var32, + String var33, + String var34, + double var35, + double var37, + LuaValue var39 + ) { + ay var40 = null; + int var41 = 1308195867; + + while (true) { + switch (var41) { + case -1318881440: + var1.add( + new az( + var2, + var3, + var5, + var7, + var9, + var11, + var13, + var15, + var17, + var19, + var21, + var23, + var25, + var27, + var29, + var30, + var31, + var32, + var33, + var34, + var35, + var37, + var40 + ) + ); + var41 = -13451647; + break; + case -629536727: + var40 = new ay((LuaFunction)var39); + var41 = 235891054; + break; + case -13451647: + return; + case 235891054: + if (var1.stream().noneMatch(var1x -> { + int var3x = 0; + int var2x = 1920028172; + + while (true) { + switch (var2x) { + case -290986567: + var3x = 1; + var2x = 1707246978; + break; + case 1602399976: + if (var1x.hand == var32) { + var2x = -290986567; + } else { + var2x = 1967762446; + } + break; + case 1707246978: + return (boolean)((var3x) != 0); + case 1920028172: + default: + if (var1x.lifecycleType == "KEYFRAME") { + var2x = 1602399976; + } else { + var2x = 1967762446; + } + break; + case 1967762446: + var3x = 0; + var2x = 1707246978; + } + } + })) { + var41 = -1318881440; + } else { + var41 = -13451647; + } + break; + case 1308195867: + default: + var34 = var34.intern(); + var33 = var33.intern(); + var31 = var31.intern(); + var40 = null; + if (var39.isfunction()) { + var41 = -629536727; + } else { + var41 = 235891054; + } + } + } + } + + @ab + public void addParticle( + ArrayList var1, + boolean var2, + double var3, + double var5, + double var7, + double var9, + double var11, + double var13, + double var15, + double var17, + double var19, + double var21, + double var23, + double var25, + double var27, + Identifier var29, + String var30, + InteractionHand var31, + String var32, + String var33, + double var34, + double var36, + LuaValue var38, + PoseStack var39 + ) { + ay var40 = null; + int var41 = -743008020; + + while (true) { + switch (var41) { + case -1226299208: + var1.add( + new az( + var2, + var3, + var5, + var7, + var9, + var11, + var13, + var15, + var17, + var19, + var21, + var23, + var25, + var27, + var29, + var30, + var31, + var32, + var33, + var34, + var36, + var40, + var39 + ) + ); + return; + case -743008020: + default: + var33 = var33.intern(); + var32 = var32.intern(); + var30 = var30.intern(); + var40 = null; + if (var38.isfunction()) { + var41 = 450256652; + } else { + var41 = -1226299208; + } + break; + case 450256652: + var40 = new ay((LuaFunction)var38); + var41 = -1226299208; + } + } + } +} diff --git a/src/main/java/defpackage/bb.java b/src/main/java/defpackage/bb.java new file mode 100644 index 0000000..473530c --- /dev/null +++ b/src/main/java/defpackage/bb.java @@ -0,0 +1,84 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.ArrayList; +import java.util.Iterator; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.world.InteractionHand; + +public class bb { + public static void draw( + ArrayList var0, PoseStack var1, SubmitNodeCollector var2, String var3, InteractionHand var4, int var5, AbstractClientPlayer var6, float var7 + ) { + Iterator var8 = null; + az var9 = null; + int var10 = 1625325924; + + while (true) { + switch (var10) { + case -2117267885: + return; + case -1889156358: + if (var9.space == var3) { + var10 = 1962349434; + } else { + var10 = 526142961; + } + break; + case -498945915: + var8.remove(); + var10 = 526142961; + break; + case 526142961: + var10 = 1131821525; + break; + case 532773019: + var9.tick(); + var10 = 526142961; + break; + case 1131821525: + if (var8.hasNext()) { + var10 = 1626011964; + } else { + var10 = -2117267885; + } + break; + case 1151854361: + var9.render(var1, var2, var5, var6, var7); + var10 = 532773019; + break; + case 1318580022: + var9.render(var9.p_matrices, var2, var5, var6, var7); + var10 = 532773019; + break; + case 1573314658: + if (var9.p_matrices != null) { + var10 = 1318580022; + } else { + var10 = 1151854361; + } + break; + case 1625325924: + default: + var8 = var0.iterator(); + var10 = 1131821525; + break; + case 1626011964: + var9 = (az)var8.next(); + if (var9.dead) { + var10 = -498945915; + } else { + var10 = -1889156358; + } + break; + case 1962349434: + if (var9.hand == var4) { + var10 = 1573314658; + } else { + var10 = 526142961; + } + } + } + } +} diff --git a/src/main/java/defpackage/bc.java b/src/main/java/defpackage/bc.java new file mode 100644 index 0000000..4c79d2d --- /dev/null +++ b/src/main/java/defpackage/bc.java @@ -0,0 +1,8 @@ +package defpackage; + +public enum bc { + SCALE, + OPACITY, + SPAWN, + KEYFRAME; +} diff --git a/src/main/java/defpackage/bd.java b/src/main/java/defpackage/bd.java new file mode 100644 index 0000000..755e90e --- /dev/null +++ b/src/main/java/defpackage/bd.java @@ -0,0 +1,7 @@ +package defpackage; + +public enum bd { + ADDITIVE, + TRANSLUCENT, + TRANSLUCENT_L; +} diff --git a/src/main/java/defpackage/be.java b/src/main/java/defpackage/be.java new file mode 100644 index 0000000..5a7c3f1 --- /dev/null +++ b/src/main/java/defpackage/be.java @@ -0,0 +1,7 @@ +package defpackage; + +public enum be { + ITEM, + HAND, + SCREEN; +} diff --git a/src/main/java/defpackage/bf.java b/src/main/java/defpackage/bf.java new file mode 100644 index 0000000..890fd75 --- /dev/null +++ b/src/main/java/defpackage/bf.java @@ -0,0 +1,46 @@ +package defpackage; + +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.DepthStencilState; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet; +import com.mojang.blaze3d.platform.BlendFactor; +import com.mojang.blaze3d.platform.CompareOp; +import java.util.function.Function; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.rendertype.RenderSetup; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Util; + +public class bf { + private static final Function ADDITIVE_PARTICLE_LAYER = Util.memoize( + var0 -> RenderType.create( + "fire_screen_effect", + RenderSetup.builder(bf.ADDITIVE_PARTICLE) + .withTexture("Sampler0", var0) + .createRenderSetup() + ) + ); + static BlendFunction ADDITIVE = new BlendFunction(BlendFactor.SRC_ALPHA, BlendFactor.ONE); + static RenderPipeline ADDITIVE_PARTICLE; + + public static RenderType additiveParticle(Identifier var0) { + return ADDITIVE_PARTICLE_LAYER.apply(var0); + } + + static { + Snippet[] var10000 = new Snippet[1]; + var10000[0] = RenderPipelines.GUI_TEXTURED_SNIPPET; + ADDITIVE_PARTICLE = RenderPipelines.register( + RenderPipeline.builder(var10000) + .withLocation( + "pipeline/additive_particle_effect" + ) + .withDepthStencilState(new DepthStencilState(CompareOp.ALWAYS_PASS, (boolean)((((1474086877 ^ -1474086877) + ((1474086877 & -1474086877) << 1))) != 0))) + .withColorTargetState(new ColorTargetState(ADDITIVE)) + .build() + ); + } +} diff --git a/src/main/java/defpackage/bg.java b/src/main/java/defpackage/bg.java new file mode 100644 index 0000000..1ef541b --- /dev/null +++ b/src/main/java/defpackage/bg.java @@ -0,0 +1,10 @@ +package defpackage; + +import net.minecraft.resources.Identifier; + +public class bg { + @ab + public Identifier of(String var1, String var2) { + return Identifier.fromNamespaceAndPath(var1, var2); + } +} diff --git a/src/main/java/defpackage/bh.java b/src/main/java/defpackage/bh.java new file mode 100644 index 0000000..993e599 --- /dev/null +++ b/src/main/java/defpackage/bh.java @@ -0,0 +1,28 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.LinkedHashSet; + +public class bh { + private ArrayList list = new ArrayList<>(); + + public static ArrayList removeDuplicates(ArrayList var0) { + LinkedHashSet var1 = new LinkedHashSet(var0); + var0.clear(); + var0.addAll(var1); + return var0; + } + + @ab + public void out(String var1) { + this.list.add(var1); + } + + public void clear() { + this.list.clear(); + } + + public ArrayList get() { + return removeDuplicates(this.list); + } +} diff --git a/src/main/java/defpackage/bi.java b/src/main/java/defpackage/bi.java new file mode 100644 index 0000000..869bf78 --- /dev/null +++ b/src/main/java/defpackage/bi.java @@ -0,0 +1,49 @@ +package defpackage; + +import net.minecraft.client.KeyMapping; +import net.minecraft.client.Minecraft; +import org.lwjgl.glfw.GLFW; + +public class bi { + KeyMapping key; + + @ab + public boolean isKeyPressed(int var1) { + long var2 = (-435818310026285289L | 435818310026285289L) + (-435818310026285289L & 435818310026285289L); + int var5 = 0; + int var4 = -1231748708; + + while (true) { + switch (var4) { + case -1860785346: + return (boolean)(((0)) != 0); + case -1772302015: + var2 = Minecraft.getInstance().getWindow().handle(); + if (GLFW.glfwGetKey(var2, var1) == (49792743 ^ -49792742) + ((49792743 & -49792742) << 1)) { + var4 = -668263750; + } else { + var4 = -668488778; + } + break; + case -1231748708: + default: + if (var1 > 0) { + var4 = -1772302015; + } else { + var4 = -1860785346; + } + break; + case -668488778: + var5 = 0; + var4 = -124479434; + break; + case -668263750: + var5 = 1; + var4 = -124479434; + break; + case -124479434: + return (boolean)((var5) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/bj.java b/src/main/java/defpackage/bj.java new file mode 100644 index 0000000..6f657aa --- /dev/null +++ b/src/main/java/defpackage/bj.java @@ -0,0 +1,13 @@ +package defpackage; + +import net.minecraft.client.Minecraft; +import net.minecraft.sounds.SoundEvent; + +public class bj { + private SoundEvent sound; + + @ab + public void play(float var1, float var2) { + Minecraft.getInstance().player.playSound(this.sound, var1, var2); + } +} diff --git a/src/main/java/defpackage/bk.java b/src/main/java/defpackage/bk.java new file mode 100644 index 0000000..ed02085 --- /dev/null +++ b/src/main/java/defpackage/bk.java @@ -0,0 +1,62 @@ +package defpackage; + +import net.minecraft.client.Camera; +import net.minecraft.client.Minecraft; + +public class bk { + @ab + public void setCamPos(double var1, double var3, double var5) { + w var7 = null; + Camera var8 = null; + int var9 = 1101735618; + + while (true) { + switch (var9) { + case -382999071: + var7 = (w)var8; + var7.hMI5_0$setPosValues((float)var1, (float)var3, (float)var5); + var9 = 2044138414; + break; + case 1101735618: + default: + var8 = Minecraft.getInstance().gameRenderer.mainCamera(); + if (var8 instanceof w) { + var9 = -382999071; + } else { + var9 = 2044138414; + } + break; + case 2044138414: + return; + } + } + } + + @ab + public void setCamRot(double var1, double var3, double var5) { + w var7 = null; + Camera var8 = null; + int var9 = 89228112; + + while (true) { + switch (var9) { + case -1104566101: + var7 = (w)var8; + var7.hMI5_0$setRotationValues((float)var1, (float)var3, (float)var5); + var9 = 404518445; + break; + case 89228112: + default: + var8 = Minecraft.getInstance().gameRenderer.mainCamera(); + if (var8 instanceof w) { + var9 = -1104566101; + } else { + var9 = 404518445; + } + break; + case 404518445: + return; + } + } + } +} diff --git a/src/main/java/defpackage/bl.java b/src/main/java/defpackage/bl.java new file mode 100644 index 0000000..5c5b96b --- /dev/null +++ b/src/main/java/defpackage/bl.java @@ -0,0 +1,139 @@ +package defpackage; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; + +public class bl { + private final JsonObject component; + + public bl(JsonObject var1) { + this.component = var1; + } + + @ab + public bl next(String var1) { + JsonElement var2 = null; + bl var4 = null; + int var3 = 1323916719; + + while (true) { + switch (var3) { + case -2060478266: + return var4; + case -1275579091: + if (var2.isJsonObject()) { + var3 = 1149393276; + } else { + var3 = 812679439; + } + break; + case 812679439: + var4 = null; + var3 = -2060478266; + break; + case 1149393276: + var4 = new bl(var2.getAsJsonObject()); + var3 = -2060478266; + break; + case 1323916719: + default: + var2 = this.component.get(var1); + if (var2 != null) { + var3 = -1275579091; + } else { + var3 = 812679439; + } + } + } + } + + @ab + public Object get(String var1) { + JsonElement var2 = null; + JsonPrimitive var3 = null; + Number var4 = null; + double var5 = 0.0; + int var7 = -466399579; + + while (true) { + switch (var7) { + case -2071739101: + if (var5 == (long)var5) { + var7 = 1507690742; + } else { + var7 = -1443475212; + } + break; + case -1916014008: + if (var3.isNumber()) { + var7 = 1203359315; + } else { + var7 = -1707903660; + } + break; + case -1901301846: + return null; + case -1899718152: + return (int)var5; + case -1707903660: + if (var3.isString()) { + var7 = 1627133923; + } else { + var7 = -1901301846; + } + break; + case -1443475212: + return var5; + case -1304900985: + var3 = var2.getAsJsonPrimitive(); + if (var3.isBoolean()) { + var7 = 544815460; + } else { + var7 = -1916014008; + } + break; + case -466399579: + default: + var2 = this.component.get(var1); + if (var2 != null) { + var7 = -294936464; + } else { + var7 = 1687505581; + } + break; + case -294936464: + if (!var2.isJsonNull()) { + var7 = 232108167; + } else { + var7 = 1687505581; + } + break; + case 232108167: + if (var2.isJsonPrimitive()) { + var7 = -1304900985; + } else { + var7 = -1901301846; + } + break; + case 544815460: + return var3.getAsBoolean(); + case 1203359315: + var4 = var3.getAsNumber(); + var5 = var4.doubleValue(); + if (var5 == (int)var5) { + var7 = -1899718152; + } else { + var7 = -2071739101; + } + break; + case 1507690742: + return (long)var5; + case 1627133923: + return var3.getAsString(); + case 1687505581: + return null; + } + } + } +} diff --git a/src/main/java/defpackage/bm.java b/src/main/java/defpackage/bm.java new file mode 100644 index 0000000..3cbe55b --- /dev/null +++ b/src/main/java/defpackage/bm.java @@ -0,0 +1,586 @@ +package defpackage; + +public class bm { + @ab + public double easeInOutBack(double var1) { + double var3 = 0.0; + double var5 = 0.0; + double var8 = 0.0; + int var7 = -1072331918; + + while (true) { + switch (var7) { + case -1072331918: + default: + var3 = 1.70158F; + var5 = var3 * 1.525F; + if (var1 < 0.5) { + var7 = 1824879645; + } else { + var7 = -674728566; + } + break; + case -731797789: + return var8; + case -674728566: + var8 = (Math.pow(2.0 * var1 - 2.0, 2.0) * ((var5 + 1.0) * (var1 * 2.0 - 2.0) + var5) + 2.0) / 2.0; + var7 = -731797789; + break; + case 1824879645: + var8 = Math.pow(2.0 * var1, 2.0) * ((var5 + 1.0) * 2.0 * var1 - var5) / 2.0; + var7 = -731797789; + } + } + } + + @ab + public double easeInSine(double var1) { + return 1.0 - Math.cos(var1 * Math.PI / 2.0); + } + + @ab + public double easeOutSine(double var1) { + return Math.sin(var1 * Math.PI / 2.0); + } + + @ab + public double easeInOutSine(double var1) { + return -(Math.cos(Math.PI * var1) - 1.0) / 2.0; + } + + @ab + public double easeInQuad(double var1) { + return var1 * var1; + } + + @ab + public double easeOutQuad(double var1) { + return 1.0 - (1.0 - var1) * (1.0 - var1); + } + + @ab + public double easeInOutQuad(double var1) { + double var4 = 0.0; + int var3 = -1832275327; + + while (true) { + switch (var3) { + case -1832275327: + default: + if (var1 < 0.5) { + var3 = -1489129741; + } else { + var3 = 1452034334; + } + break; + case -1489129741: + var4 = 2.0 * var1 * var1; + var3 = -282764913; + break; + case -282764913: + return var4; + case 1452034334: + var4 = 1.0 - Math.pow(-2.0 * var1 + 2.0, 2.0) / 2.0; + var3 = -282764913; + } + } + } + + @ab + public double easeInCubic(double var1) { + return var1 * var1 * var1; + } + + @ab + public double easeOutCubic(double var1) { + return 1.0 - Math.pow(1.0 - var1, 3.0); + } + + @ab + public double easeInOutCubic(double var1) { + double var4 = 0.0; + int var3 = -1593172013; + + while (true) { + switch (var3) { + case -2016325248: + var4 = 4.0 * var1 * var1 * var1; + var3 = 611186856; + break; + case -1593172013: + default: + if (var1 < 0.5) { + var3 = -2016325248; + } else { + var3 = -620947343; + } + break; + case -620947343: + var4 = 1.0 - Math.pow(-2.0 * var1 + 2.0, 3.0) / 2.0; + var3 = 611186856; + break; + case 611186856: + return var4; + } + } + } + + @ab + public double easeInQuart(double var1) { + return var1 * var1 * var1 * var1; + } + + @ab + public double easeOutQuart(double var1) { + return 1.0 - Math.pow(1.0 - var1, 4.0); + } + + @ab + public double easeInOutQuart(double var1) { + double var4 = 0.0; + int var3 = -513969198; + + while (true) { + switch (var3) { + case -513969198: + default: + if (var1 < 0.5) { + var3 = -261754955; + } else { + var3 = -346110629; + } + break; + case -346110629: + var4 = 1.0 - Math.pow(-2.0 * var1 + 2.0, 4.0) / 2.0; + var3 = 1721264860; + break; + case -261754955: + var4 = 8.0 * var1 * var1 * var1 * var1; + var3 = 1721264860; + break; + case 1721264860: + return var4; + } + } + } + + @ab + public double easeInQuint(double var1) { + return var1 * var1 * var1 * var1 * var1; + } + + @ab + public double easeOutQuint(double var1) { + return 1.0 - Math.pow(1.0 - var1, 5.0); + } + + @ab + public double easeInOutQuint(double var1) { + double var4 = 0.0; + int var3 = -3372681; + + while (true) { + switch (var3) { + case -1745870848: + var4 = 1.0 - Math.pow(-2.0 * var1 + 2.0, 5.0) / 2.0; + var3 = 1134476208; + break; + case -3372681: + default: + if (var1 < 0.5) { + var3 = 1886974656; + } else { + var3 = -1745870848; + } + break; + case 1134476208: + return var4; + case 1886974656: + var4 = 16.0 * var1 * var1 * var1 * var1 * var1; + var3 = 1134476208; + } + } + } + + @ab + public double easeInExpo(double var1) { + double var4 = 0.0; + int var3 = -185592927; + + while (true) { + switch (var3) { + case -1500823143: + return var4; + case -185592927: + default: + if (var1 == 0.0) { + var3 = 79141604; + } else { + var3 = 1753697152; + } + break; + case 79141604: + var4 = 0.0; + var3 = -1500823143; + break; + case 1753697152: + var4 = Math.pow(2.0, 10.0 * var1 - 10.0); + var3 = -1500823143; + } + } + } + + @ab + public double easeOutExpo(double var1) { + double var4 = 0.0; + int var3 = -703248361; + + while (true) { + switch (var3) { + case -1065865307: + return var4; + case -703248361: + default: + if (var1 == 1.0) { + var3 = -668633209; + } else { + var3 = 278441193; + } + break; + case -668633209: + var4 = 1.0; + var3 = -1065865307; + break; + case 278441193: + var4 = 1.0 - Math.pow(2.0, -10.0 * var1); + var3 = -1065865307; + } + } + } + + @ab + public double easeInOutExpo(double var1) { + double var4 = 0.0; + int var3 = -579950766; + + while (true) { + switch (var3) { + case -2114657709: + var4 = 0.0; + var3 = -1117611466; + break; + case -1117611466: + return var4; + case -1021608747: + if (var1 == 1.0) { + var3 = -635612376; + } else { + var3 = -811752779; + } + break; + case -828978988: + var4 = (2.0 - Math.pow(2.0, -20.0 * var1 + 10.0)) / 2.0; + var3 = -1117611466; + break; + case -824986920: + var4 = Math.pow(2.0, 20.0 * var1 - 10.0) / 2.0; + var3 = -1117611466; + break; + case -811752779: + if (var1 < 0.5) { + var3 = -824986920; + } else { + var3 = -828978988; + } + break; + case -635612376: + var4 = 1.0; + var3 = -1117611466; + break; + case -579950766: + default: + if (var1 == 0.0) { + var3 = -2114657709; + } else { + var3 = -1021608747; + } + } + } + } + + @ab + public double easeInCirc(double var1) { + return 1.0 - Math.sqrt(1.0 - Math.pow(var1, 2.0)); + } + + @ab + public double easeOutCirc(double var1) { + return Math.sqrt(1.0 - Math.pow(var1 - 1.0, 2.0)); + } + + @ab + public double easeInOutCirc(double var1) { + double var4 = 0.0; + int var3 = 1926794707; + + while (true) { + switch (var3) { + case 855857833: + return var4; + case 984920123: + var4 = (1.0 - Math.sqrt(1.0 - Math.pow(2.0 * var1, 2.0))) / 2.0; + var3 = 855857833; + break; + case 1139919643: + var4 = (Math.sqrt(1.0 - Math.pow(-2.0 * var1 + 2.0, 2.0)) + 1.0) / 2.0; + var3 = 855857833; + break; + case 1926794707: + default: + if (var1 < 0.5) { + var3 = 984920123; + } else { + var3 = 1139919643; + } + } + } + } + + @ab + public double easeInBack(double var1) { + double var3 = 1.70158F; + double var5 = var3 + 1.0; + return var5 * var1 * var1 * var1 - var3 * var1 * var1; + } + + @ab + public double easeOutBack(double var1) { + double var3 = 1.70158F; + double var5 = var3 + 1.0; + return 1.0 + var5 * Math.pow(var1 - 1.0, 3.0) + var3 * Math.pow(var1 - 1.0, 2.0); + } + + @ab + public double easeInElastic(double var1) { + double var3 = 0.0; + double var6 = 0.0; + int var5 = 1987813385; + + while (true) { + switch (var5) { + case -1644569784: + if (var1 == 1.0) { + var5 = -1094919018; + } else { + var5 = 774043087; + } + break; + case -1094919018: + var6 = 1.0; + var5 = 725102692; + break; + case 208948076: + var6 = 0.0; + var5 = 725102692; + break; + case 725102692: + return var6; + case 774043087: + var6 = -Math.pow(2.0, 10.0 * var1 - 10.0) * Math.sin((var1 * 10.0 - 10.75) * var3); + var5 = 725102692; + break; + case 1987813385: + default: + var3 = Math.PI * 2.0 / 3.0; + if (var1 == 0.0) { + var5 = 208948076; + } else { + var5 = -1644569784; + } + } + } + } + + @ab + public double easeOutElastic(double var1) { + double var3 = 0.0; + double var6 = 0.0; + int var5 = -363311512; + + while (true) { + switch (var5) { + case -1630282633: + return var6; + case -1442438570: + var6 = Math.pow(2.0, -10.0 * var1) * Math.sin((var1 * 10.0 - 0.75) * var3) + 1.0; + var5 = -1630282633; + break; + case -1429933463: + var6 = 1.0; + var5 = -1630282633; + break; + case -561365077: + if (var1 == 1.0) { + var5 = -1429933463; + } else { + var5 = -1442438570; + } + break; + case -363311512: + default: + var3 = Math.PI * 2.0 / 3.0; + if (var1 == 0.0) { + var5 = 1041560180; + } else { + var5 = -561365077; + } + break; + case 1041560180: + var6 = 0.0; + var5 = -1630282633; + } + } + } + + @ab + public double easeInOutElastic(double var1) { + double var3 = 0.0; + double var6 = 0.0; + int var5 = -183848214; + + while (true) { + switch (var5) { + case -1984738312: + if (var1 < 0.5) { + var5 = 2018583477; + } else { + var5 = 1462702799; + } + break; + case -1620526145: + var6 = 1.0; + var5 = -107235078; + break; + case -511596346: + var6 = 0.0; + var5 = -107235078; + break; + case -183848214: + default: + var3 = Math.PI * 4.0 / 9.0; + if (var1 == 0.0) { + var5 = -511596346; + } else { + var5 = 190668962; + } + break; + case -107235078: + return var6; + case 190668962: + if (var1 == 1.0) { + var5 = -1620526145; + } else { + var5 = -1984738312; + } + break; + case 1462702799: + var6 = Math.pow(2.0, -20.0 * var1 + 10.0) * Math.sin((20.0 * var1 - 11.125) * var3) / 2.0 + 1.0; + var5 = -107235078; + break; + case 2018583477: + var6 = -(Math.pow(2.0, 20.0 * var1 - 10.0) * Math.sin((20.0 * var1 - 11.125) * var3)) / 2.0; + var5 = -107235078; + } + } + } + + @ab + public double easeOutBounce(double var1) { + double var3 = 0.0; + double var5 = 0.0; + double var7 = 0.0; + double var9 = 0.0; + double var12 = 0.0; + int var11 = -2087042943; + + while (true) { + switch (var11) { + case -2087042943: + default: + var3 = 7.5625; + var5 = 2.75; + if (var1 < 1.0 / var5) { + var11 = 1575164585; + } else { + var11 = 1548483121; + } + break; + case -2075426367: + var12 = var3 * (var7 = var1 - 2.25 / var5) * var7 + 0.9375; + var11 = 968848144; + break; + case -1511704995: + return var3 * (var7 = var1 - 1.5 / var5) * var7 + 0.75; + case 226689814: + var12 = var3 * (var9 = var1 - 2.625 / var5) * var9 + 0.984375; + var11 = 968848144; + break; + case 968848144: + return var12; + case 1548483121: + if (var1 < 2.0 / var5) { + var11 = -1511704995; + } else { + var11 = 1888240950; + } + break; + case 1575164585: + return var3 * var1 * var1; + case 1888240950: + if (var1 < 2.5 / var5) { + var11 = -2075426367; + } else { + var11 = 226689814; + } + } + } + } + + @ab + public double easeInBounce(double var1) { + return 1.0 - this.easeOutBounce(1.0 - var1); + } + + @ab + public double easeInOutBounce(double var1) { + double var4 = 0.0; + int var3 = 1764857755; + + while (true) { + switch (var3) { + case -1284736600: + var4 = (1.0 - this.easeOutBounce(1.0 - 2.0 * var1)) / 2.0; + var3 = 470886567; + break; + case -770731854: + var4 = (1.0 + this.easeOutBounce(2.0 * var1 - 1.0)) / 2.0; + var3 = 470886567; + break; + case 470886567: + return var4; + case 1764857755: + default: + if (var1 < 0.5) { + var3 = -1284736600; + } else { + var3 = -770731854; + } + } + } + } + + @ab + public double cubicEase(double var1) { + return var1 * var1 * (3.0 - 2.0 * var1); + } +} diff --git a/src/main/java/defpackage/bn.java b/src/main/java/defpackage/bn.java new file mode 100644 index 0000000..f0649f5 --- /dev/null +++ b/src/main/java/defpackage/bn.java @@ -0,0 +1,592 @@ +package defpackage; + +import com.google.gson.JsonElement; +import com.mojang.serialization.JsonOps; +import java.util.Iterator; +import net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.component.DataComponentMap; +import net.minecraft.core.component.DataComponents; +import net.minecraft.resources.Identifier; +import net.minecraft.resources.RegistryOps; +import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.item.CrossbowItem; +import net.minecraft.world.item.FishingRodItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemUseAnimation; +import net.minecraft.world.item.ProjectileItem; +import net.minecraft.world.item.SplashPotionItem; +import net.minecraft.world.item.component.CustomData; +import net.minecraft.world.item.component.CustomModelData; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.item.component.KineticWeapon; +import net.minecraft.world.item.component.ItemAttributeModifiers.Entry; +import net.minecraft.world.item.component.KineticWeapon.Condition; +import net.minecraft.world.item.enchantment.ItemEnchantments; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.LanternBlock; + +public class bn { + @ab + public float getAttackDamage(ItemStack var1) { + ItemAttributeModifiers var2 = null; + float var3 = 0.0F; + Iterator var4 = null; + Entry var5 = null; + int var6 = 1599558253; + + while (true) { + switch (var6) { + case -1648130865: + if (var4.hasNext()) { + var6 = 64671350; + } else { + var6 = 373548721; + } + break; + case -1441052541: + var6 = -1648130865; + break; + case 64671350: + var5 = (Entry)var4.next(); + if (var5.attribute().value() == Attributes.ATTACK_DAMAGE.value()) { + var6 = 1188372557; + } else { + var6 = -1441052541; + } + break; + case 373548721: + return var3; + case 885401425: + var3 = 0.0F; + var4 = var2.modifiers().iterator(); + var6 = -1648130865; + break; + case 1188372557: + var3 += (float)var5.modifier().amount(); + var6 = -1441052541; + break; + case 1599558253: + default: + var2 = (ItemAttributeModifiers)var1.getComponents().get(DataComponents.ATTRIBUTE_MODIFIERS); + if (var2 == null) { + var6 = 1871920606; + } else { + var6 = 885401425; + } + break; + case 1871920606: + return 0.0F; + } + } + } + + @ab + public boolean isOf(ItemStack var1, Item var2) { + return var1.is(var2); + } + + @ab + public boolean isIn(ItemStack var1, TagKey var2) { + return var1.is(var2); + } + + @ab + public boolean isEmpty(ItemStack var1) { + return var1.isEmpty(); + } + + @ab + public String getUseAction(ItemStack var1) { + return var1.getUseAnimation().getSerializedName(); + } + + @ab + public String getName(ItemStack var1) { + return var1.getItem().toString(); + } + + @ab + public String getActualName(ItemStack var1) { + String var3 = null; + int var2 = -532890691; + + while (true) { + switch (var2) { + case -873197200: + var3 = var1.getHoverName().getString(); + var2 = 316415995; + break; + case -532890691: + default: + if (var1.getCustomName() != null) { + var2 = -504254516; + } else { + var2 = -873197200; + } + break; + case -504254516: + var3 = var1.getCustomName().getString(); + var2 = 316415995; + break; + case 316415995: + return var3; + } + } + } + + @ab + public boolean isChargedCrossbow(ItemStack var1) { + return CrossbowItem.isCharged(var1); + } + + @ab + public ItemStack getDefaultStack(Item var1) { + return var1.getDefaultInstance(); + } + + @ab + public boolean isBlock(ItemStack var1) { + int var3 = 0; + int var2 = -1387045091; + + while (true) { + switch (var2) { + case -1387045091: + default: + if (Block.byItem(var1.getItem()) != Blocks.AIR) { + var2 = 554095360; + } else { + var2 = -807075572; + } + break; + case -807075572: + var3 = 0; + var2 = 58117980; + break; + case 58117980: + return (boolean)((var3) != 0); + case 554095360: + var3 = 1; + var2 = 58117980; + } + } + } + + @ab + public boolean shouldTranslateItem(ItemStack var1) { + int var2 = 0; + int var4 = 0; + int var3 = -285046518; + + while (true) { + switch (var3) { + case -2084597954: + if (var1.getUseAnimation() == ItemUseAnimation.SPYGLASS) { + var3 = -2055241477; + } else { + var3 = -1624357896; + } + break; + case -2055241477: + var4 = 1; + var3 = 1553062697; + break; + case -1920500867: + if (var2 == (-1490173088 ^ 1490173087) + ((-1490173088 & 1490173087) << 1)) { + var3 = 2094445880; + } else { + var3 = -1624357896; + } + break; + case -1624357896: + var4 = 0; + var3 = 1553062697; + break; + case -1574929078: + if (this.getAttackDamage(var1) > 0.0F) { + var3 = 2138775504; + } else { + var3 = -2055241477; + } + break; + case -897032980: + if (!var1.is(ConventionalItemTags.TOOLS)) { + var3 = 509375395; + } else { + var3 = 2138775504; + } + break; + case -855094048: + if (var1.getUseAnimation() != ItemUseAnimation.DRINK) { + var3 = -2084597954; + } else { + var3 = -2055241477; + } + break; + case -330900399: + if (!var1.is(ConventionalItemTags.RODS)) { + var3 = -897032980; + } else { + var3 = 2138775504; + } + break; + case -285046518: + default: + var2 = ((x)var1).hMI5_0$getTransform(); + if (var2 == 0) { + var3 = -1920500867; + } else { + var3 = 2094445880; + } + break; + case 509375395: + if (!var1.is(ItemTags.SWORDS)) { + var3 = 1146739101; + } else { + var3 = 2138775504; + } + break; + case 1119883929: + if (var1.getUseAnimation() != ItemUseAnimation.BLOCK) { + var3 = -1574929078; + } else { + var3 = 2138775504; + } + break; + case 1146739101: + if (!var1.is(ConventionalItemTags.MACE_TOOLS)) { + var3 = 1119883929; + } else { + var3 = 2138775504; + } + break; + case 1553062697: + return (boolean)((var4) != 0); + case 2094445880: + if (!(var1.getItem() instanceof FishingRodItem)) { + var3 = -330900399; + } else { + var3 = 2138775504; + } + break; + case 2138775504: + if (var1.getUseAnimation() != ItemUseAnimation.EAT) { + var3 = -855094048; + } else { + var3 = -2055241477; + } + } + } + } + + @ab + public boolean isCustomTranslate(ItemStack var1) { + return af.translateItem.getOrDefault(this.getName(var1), Boolean.valueOf((boolean)((((-1198189450 | 1198189450) + (-1198189450 & 1198189450))) != 0))); + } + + @ab + public void setTranslate(ItemStack var1, boolean var2) { + ((x)var1).hMI5_0$setTransform(var2); + } + + @ab + public void setRenderAsBlock(ItemStack var1, boolean var2) { + int var3 = -831656360; + + while (true) { + switch (var3) { + case -1332912432: + ((x)var1).hMI5_0$setRenderAsBlock(var2); + var3 = 1518619957; + break; + case -831656360: + default: + if (Block.byItem(var1.getItem()) != Blocks.AIR) { + var3 = -1332912432; + } else { + var3 = 1518619957; + } + break; + case 1518619957: + return; + } + } + } + + @ab + public boolean shouldRenderAsBlock(ItemStack var1) { + int var2 = 0; + int var4 = 0; + int var3 = -153057187; + + while (true) { + switch (var3) { + case -1212565648: + return (boolean)(((0)) != 0); + case -459968272: + return (boolean)((var4) != 0); + case -153057187: + default: + if (Block.byItem(var1.getItem()) != Blocks.AIR) { + var3 = 2058373701; + } else { + var3 = -1212565648; + } + break; + case 598623630: + var4 = 1; + var3 = -459968272; + break; + case 1329985302: + if (var2 == (-2084902592 ^ 2084902591) + ((-2084902592 & 2084902591) << 1)) { + var3 = 598623630; + } else { + var3 = 1552326446; + } + break; + case 1552326446: + var4 = 0; + var3 = -459968272; + break; + case 2058373701: + var2 = ((x)var1).hMI5_0$getRenderAsBlock(); + if (var2 != (1348085360 ^ -1348085359) + ((1348085360 & -1348085359) << 1)) { + var3 = 1329985302; + } else { + var3 = 598623630; + } + } + } + } + + @ab + public boolean isLantern(ItemStack var1) { + return Block.byItem(var1.getItem()) instanceof LanternBlock; + } + + @ab + public boolean isThrowable(ItemStack var1) { + int var3 = 0; + int var2 = 2138835993; + + while (true) { + switch (var2) { + case -345525406: + var3 = 1; + var2 = 1729264366; + break; + case 745382538: + if (var1.getItem() instanceof ProjectileItem) { + var2 = -345525406; + } else { + var2 = 1989159221; + } + break; + case 1729264366: + return (boolean)((var3) != 0); + case 1989159221: + var3 = 0; + var2 = 1729264366; + break; + case 2138835993: + default: + if (!(var1.getItem() instanceof SplashPotionItem)) { + var2 = 745382538; + } else { + var2 = -345525406; + } + } + } + } + + @ab + public void setSwingSpeed(ItemStack var1, double var2) { + ((x)var1).hMI5_0$setSwingSpeed((int)var2); + } + + @ab + public boolean isEnchanted(ItemStack var1) { + return var1.hasFoil(); + } + + @ab + public static bl getComponents(ItemStack var0) { + RegistryOps var1 = RegistryOps.create(JsonOps.INSTANCE, Minecraft.getInstance().level.registryAccess()); + DataComponentMap var2 = var0.getComponents(); + JsonElement var3 = (JsonElement)DataComponentMap.CODEC.encodeStart(var1, var2).getOrThrow(); + return new bl(var3.getAsJsonObject()); + } + + @ab + public void copyAppearanceComponents(ItemStack var1) { + ItemStack var2 = null; + int var3 = 1262230546; + + while (true) { + switch (var3) { + case -1606920451: + if (var1.has(DataComponents.ITEM_MODEL)) { + var3 = 1441740460; + } else { + var3 = 1485882375; + } + break; + case -882954497: + var2.set(DataComponents.CUSTOM_MODEL_DATA, (CustomModelData)var1.get(DataComponents.CUSTOM_MODEL_DATA)); + var3 = -408918631; + break; + case -408918631: + if (var1.has(DataComponents.CUSTOM_DATA)) { + var3 = 630700144; + } else { + var3 = 886742142; + } + break; + case 457778033: + var2.set(DataComponents.ENCHANTMENTS, (ItemEnchantments)var1.get(DataComponents.ENCHANTMENTS)); + var3 = -1606920451; + break; + case 630700144: + var2.set(DataComponents.CUSTOM_DATA, (CustomData)var1.get(DataComponents.CUSTOM_DATA)); + var3 = 886742142; + break; + case 886742142: + return; + case 1262230546: + default: + var2 = var1.getItem().getDefaultInstance(); + if (var1.has(DataComponents.ENCHANTMENTS)) { + var3 = 457778033; + } else { + var3 = -1606920451; + } + break; + case 1441740460: + var2.set(DataComponents.ITEM_MODEL, (Identifier)var1.get(DataComponents.ITEM_MODEL)); + var3 = 1485882375; + break; + case 1485882375: + if (var1.has(DataComponents.CUSTOM_MODEL_DATA)) { + var3 = -882954497; + } else { + var3 = -408918631; + } + } + } + } + + @ab + public void setMainStack(Item var1) { + af.mainHandItem = var1.getDefaultInstance(); + } + + @ab + public void setOffStack(Item var1) { + af.offHandItem = var1.getDefaultInstance(); + } + + @ab + public ad getSpearData(ItemStack var1) { + LocalPlayer var2 = null; + KineticWeapon var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var11 = 0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + int var10 = -1041523416; + + while (true) { + switch (var10) { + case -2026433511: + var14 = 0; + var10 = -1381029911; + break; + case -1691378727: + var6 = var11; + if (var4 + < var3.knockbackConditions().map(Condition::maxDurationTicks).orElse((1027263410 | -1027263410) + (1027263410 & -1027263410)) + var5 + ) + { + var10 = -1601744094; + } else { + var10 = 1340184101; + } + break; + case -1601744094: + var12 = 1; + var10 = 164443259; + break; + case -1381029911: + var9 = var14; + return new ad((boolean)var8, (boolean)var7, (boolean)(((var6) != 0)), (boolean)((var9) != 0)); + case -1305649085: + var11 = 0; + var10 = -1691378727; + break; + case -1041523416: + default: + var2 = Minecraft.getInstance().player; + var3 = (KineticWeapon)var1.get(DataComponents.KINETIC_WEAPON); + var4 = var1.getUseDuration(var2) - (var2.getUseItemRemainingTicks() + (1600863937 ^ -1600863936) + ((1600863937 & -1600863936) << 1)); + var5 = var3.delayTicks(); + if (var4 + < var3.dismountConditions().map(Condition::maxDurationTicks).orElse((1463785078 ^ -1463785078) + ((1463785078 & -1463785078) << 1)) + + var5) { + var10 = 1772362675; + } else { + var10 = -1305649085; + } + break; + case -663876808: + var14 = 1; + var10 = -1381029911; + break; + case -137060500: + var13 = 0; + var10 = 809361865; + break; + case 164443259: + var7 = var12; + if (var4 + < var3.damageConditions().map(Condition::maxDurationTicks).orElse((1310750565 ^ -1310750565) + ((1310750565 & -1310750565) << 1)) + + var5) { + var10 = 983566690; + } else { + var10 = -137060500; + } + break; + case 809361865: + var8 = var13; + if (var2.getTicksSinceLastKineticHitFeedback(0.0F) == 1.0F) { + var10 = -663876808; + } else { + var10 = -2026433511; + } + break; + case 983566690: + var13 = 1; + var10 = 809361865; + break; + case 1340184101: + var12 = 0; + var10 = 164443259; + break; + case 1772362675: + var11 = 1; + var10 = -1691378727; + } + } + } +} diff --git a/src/main/java/defpackage/bo.java b/src/main/java/defpackage/bo.java new file mode 100644 index 0000000..c089a3d --- /dev/null +++ b/src/main/java/defpackage/bo.java @@ -0,0 +1,19 @@ +package defpackage; + +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; + +public class bo { + @ab + public Item get(String var1) { + Identifier var2 = Identifier.parse(var1); + return (Item)BuiltInRegistries.ITEM.getValue(var2); + } + + @ab + public String checkItemName(ItemStack var1) { + return var1.getCustomName().toString(); + } +} diff --git a/src/main/java/defpackage/bp.java b/src/main/java/defpackage/bp.java new file mode 100644 index 0000000..e7a031d --- /dev/null +++ b/src/main/java/defpackage/bp.java @@ -0,0 +1,19 @@ +package defpackage; + +import net.fabricmc.fabric.impl.tag.convention.v2.TagRegistration; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.Identifier; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; + +public class bp { + @ab + public TagKey getVanillaTag(String var1) { + return TagKey.create(Registries.ITEM, Identifier.withDefaultNamespace(var1)); + } + + @ab + public TagKey getFabricTag(String var1) { + return TagRegistration.ITEM_TAG.registerC(var1); + } +} diff --git a/src/main/java/defpackage/bq.java b/src/main/java/defpackage/bq.java new file mode 100644 index 0000000..064b693 --- /dev/null +++ b/src/main/java/defpackage/bq.java @@ -0,0 +1,128 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import net.minecraft.util.Mth; +import org.joml.Matrix4f; + +public class bq { + public double PI = (float) Math.PI; + + @ab + public void scale(PoseStack var1, double var2, double var4, double var6) { + var1.scale((float)var2, (float)var4, (float)var6); + } + + @ab + public void push(PoseStack var1) { + var1.pushPose(); + } + + @ab + public void pop(PoseStack var1) { + var1.popPose(); + } + + @ab + public void moveX(PoseStack var1, double var2) { + var1.translate(var2, 0.0, 0.0); + } + + @ab + public void moveY(PoseStack var1, double var2) { + var1.translate(0.0, var2, 0.0); + } + + @ab + public void moveZ(PoseStack var1, double var2) { + var1.translate(0.0, 0.0, var2); + } + + @ab + public void translate(PoseStack var1, double var2, double var4, double var6) { + var1.translate(var2, var4, var6); + } + + @ab + public void rotateX(PoseStack var1, double var2) { + var1.mulPose(Axis.XP.rotationDegrees((float)var2)); + } + + @ab + public void rotateY(PoseStack var1, double var2) { + var1.mulPose(Axis.YP.rotationDegrees((float)var2)); + } + + @ab + public void rotateZ(PoseStack var1, double var2) { + var1.mulPose(Axis.ZP.rotationDegrees((float)var2)); + } + + @ab + public void rotateX(PoseStack var1, double var2, double var4, double var6, double var8) { + var1.rotateAround(Axis.XP.rotationDegrees((float)var2), (float)var4, (float)var6, (float)var8); + } + + @ab + public void rotateY(PoseStack var1, double var2, double var4, double var6, double var8) { + var1.rotateAround(Axis.YP.rotationDegrees((float)var2), (float)var4, (float)var6, (float)var8); + } + + @ab + public void rotateZ(PoseStack var1, double var2, double var4, double var6, double var8) { + var1.rotateAround(Axis.ZP.rotationDegrees((float)var2), (float)var4, (float)var6, (float)var8); + } + + @ab + public double sin(double var1) { + return Math.sin(var1); + } + + @ab + public double cos(double var1) { + return Math.cos(var1); + } + + @ab + public double clamp(double var1, double var3, double var5) { + return Math.clamp(var1, var3, var5); + } + + @ab + public double floor(double var1) { + return Math.floor(var1); + } + + @ab + public double abs(double var1) { + return Math.abs(var1); + } + + @ab + public double lerp(double var1, double var3, double var5) { + return Mth.lerp(var1, var3, var5); + } + + @ab + public double pow(double var1, double var3) { + return Math.pow(var1, var3); + } + + @ab + public double ceil(double var1) { + return Math.ceil(var1); + } + + @ab + public double round(double var1) { + return Math.round(var1); + } + + @ab + public void shear(PoseStack var1, double var2, double var4, double var6) { + Matrix4f var8 = new Matrix4f( + 1.0F, (float)var2, (float)var2, 0.0F, (float)var4, 1.0F, (float)var4, 0.0F, (float)var6, (float)var6, 1.0F, 0.0F, 0.0F, 0.0F, 0.0F, 1.0F + ); + var1.last().pose().mul(var8); + } +} diff --git a/src/main/java/defpackage/br.java b/src/main/java/defpackage/br.java new file mode 100644 index 0000000..e5b822f --- /dev/null +++ b/src/main/java/defpackage/br.java @@ -0,0 +1,182 @@ +package defpackage; + +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.item.ItemStack; + +public class br { + @ab + public double getHealth(AbstractClientPlayer var1) { + return var1.getHealth(); + } + + @ab + public boolean isSneaking(AbstractClientPlayer var1) { + return var1.isShiftKeyDown(); + } + + @ab + public boolean isOnGround(AbstractClientPlayer var1) { + return var1.onGround(); + } + + @ab + public boolean isSwimming(AbstractClientPlayer var1) { + return var1.isSwimming(); + } + + @ab + public boolean isClimbing(AbstractClientPlayer var1) { + return var1.onClimbable(); + } + + @ab + public boolean isCrawling(AbstractClientPlayer var1) { + return var1.isVisuallyCrawling(); + } + + @ab + public boolean isSubmergedInWater(AbstractClientPlayer var1) { + return var1.isUnderWater(); + } + + @ab + public boolean isTouchingWater(AbstractClientPlayer var1) { + return var1.isInWater(); + } + + @ab + public boolean isUsingSpyglass(AbstractClientPlayer var1) { + return var1.isScoping(); + } + + @ab + public boolean isUsingRiptide(AbstractClientPlayer var1) { + return var1.isAutoSpinAttack(); + } + + @ab + public double getX(AbstractClientPlayer var1) { + return var1.getX(); + } + + @ab + public double getY(AbstractClientPlayer var1) { + return var1.getY(); + } + + @ab + public double getZ(AbstractClientPlayer var1) { + return var1.getZ(); + } + + @ab + public double getXSpeed(AbstractClientPlayer var1) { + return var1.getDeltaMovement().x(); + } + + @ab + public double getYSpeed(AbstractClientPlayer var1) { + return var1.getDeltaMovement().y(); + } + + @ab + public double getZSpeed(AbstractClientPlayer var1) { + return var1.getDeltaMovement().z(); + } + + @ab + public double getSpeed(AbstractClientPlayer var1) { + return var1.getDeltaMovement().length(); + } + + @ab + public boolean isUsingItem(AbstractClientPlayer var1) { + return var1.isUsingItem(); + } + + @ab + public double getYaw(AbstractClientPlayer var1) { + return var1.getYHeadRot(); + } + + @ab + public double getPitch(AbstractClientPlayer var1) { + return var1.getXRot(); + } + + @ab + public ItemStack getMainItem(AbstractClientPlayer var1) { + return var1.getMainHandItem(); + } + + @ab + public ItemStack getOffhandItem(AbstractClientPlayer var1) { + return var1.getOffhandItem(); + } + + @ab + public InteractionHand getActiveHand(AbstractClientPlayer var1) { + return var1.getUsedItemHand(); + } + + @ab + public int getAge(AbstractClientPlayer var1) { + return var1.tickCount; + } + + @ab + public boolean isItemCoolingDown(ItemStack var1, AbstractClientPlayer var2) { + return var2.getCooldowns().isOnCooldown(var1); + } + + @ab + public double getSwingCount(AbstractClientPlayer var1) { + y var2 = null; + double var4 = 0.0; + int var3 = 2032266946; + + while (true) { + switch (var3) { + case 111759355: + var4 = 0.0; + var3 = 544976006; + break; + case 544976006: + return var4; + case 2010499805: + var2 = (y)var1; + var4 = var2.hMI5_0$getSwingCount(); + var3 = 544976006; + break; + case 2032266946: + default: + if (var1 instanceof y) { + var3 = 2010499805; + } else { + var3 = 111759355; + } + } + } + } + + @ab + public String getStandingBlock(AbstractClientPlayer var1) { + return var1.level().getBlockState(var1.blockPosition().below()).typeHolder().getRegisteredName(); + } + + @ab + public String getBlockBelow(AbstractClientPlayer var1, int var2) { + return var1.level().getBlockState(var1.blockPosition().below().below(var2)).typeHolder().getRegisteredName(); + } + + @ab + public String getBlockAbove(AbstractClientPlayer var1, int var2) { + return var1.level().getBlockState(var1.blockPosition().above().above().above(var2)).typeHolder().getRegisteredName(); + } + + @ab + public boolean hasVehicle(AbstractClientPlayer var1, int var2) { + return var1.isPassenger(); + } +} diff --git a/src/main/java/defpackage/bs.java b/src/main/java/defpackage/bs.java new file mode 100644 index 0000000..6f8a5b5 --- /dev/null +++ b/src/main/java/defpackage/bs.java @@ -0,0 +1,12 @@ +package defpackage; + +import net.minecraft.client.Minecraft; +import net.minecraft.resources.Identifier; +import net.minecraft.sounds.SoundEvent; + +public class bs { + @ab + public void playSound(String var1, double var2) { + Minecraft.getInstance().player.playSound(SoundEvent.createVariableRangeEvent(Identifier.withDefaultNamespace(var1)), (float)var2, 1.0F); + } +} diff --git a/src/main/java/defpackage/bt.java b/src/main/java/defpackage/bt.java new file mode 100644 index 0000000..b3827e9 --- /dev/null +++ b/src/main/java/defpackage/bt.java @@ -0,0 +1,98 @@ +package defpackage; + +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderTypes; + +public class bt { + public static void main(String[] var0) { + Method[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = 1261856253; + + while (true) { + switch (var5) { + case -2108644160: + var4 = var1[var3]; + if (Modifier.isStatic(var4.getModifiers())) { + var5 = 177083368; + } else { + var5 = -1092364655; + } + break; + case -1764344970: + return; + case -1526946764: + System.out.println("RenderLayers " + var4.getName() + "()"); + var5 = -1092364655; + break; + case -1092364655: + var3++; + var5 = 1925482879; + break; + case -884232943: + if (var4.getReturnType() == RenderType.class) { + var5 = 1011909197; + } else { + var5 = 1338497337; + } + break; + case -479076580: + var4 = var1[var3]; + if (Modifier.isStatic(var4.getModifiers())) { + var5 = -884232943; + } else { + var5 = 1338497337; + } + break; + case 177083368: + if (var4.getReturnType() == RenderType.class) { + var5 = -1526946764; + } else { + var5 = -1092364655; + } + break; + case 1011909197: + System.out.println("RenderLayer " + var4.getName() + "()"); + var5 = 1338497337; + break; + case 1216835610: + System.out + .println("Methods in RenderLayers:"); + var1 = RenderTypes.class.getDeclaredMethods(); + var2 = var1.length; + var3 = 0; + var5 = 1925482879; + break; + case 1261856253: + default: + System.out.println("Methods in RenderLayer:"); + var1 = RenderType.class.getDeclaredMethods(); + var2 = var1.length; + var3 = 0; + var5 = 1449811504; + break; + case 1338497337: + var3++; + var5 = 1449811504; + break; + case 1449811504: + if (var3 < var2) { + var5 = -479076580; + } else { + var5 = 1216835610; + } + break; + case 1925482879: + if (var3 < var2) { + var5 = -2108644160; + } else { + var5 = -1764344970; + } + } + } + } +} diff --git a/src/main/java/defpackage/bu.java b/src/main/java/defpackage/bu.java new file mode 100644 index 0000000..23886aa --- /dev/null +++ b/src/main/java/defpackage/bu.java @@ -0,0 +1,6 @@ +package defpackage; + +public class bu { + public static void main(String[] var0) { + } +} diff --git a/src/main/java/defpackage/bv.java b/src/main/java/defpackage/bv.java new file mode 100644 index 0000000..51e51ba --- /dev/null +++ b/src/main/java/defpackage/bv.java @@ -0,0 +1,12 @@ +package defpackage; + +import net.minecraft.client.gui.Hud; +import net.minecraft.core.Holder; +import net.minecraft.resources.Identifier; +import net.minecraft.world.effect.MobEffect; + +public class bv { + public Identifier test(Holder var1) { + return Hud.getMobEffectSprite(var1); + } +} diff --git a/src/main/java/defpackage/bw.java b/src/main/java/defpackage/bw.java new file mode 100644 index 0000000..6401bf3 --- /dev/null +++ b/src/main/java/defpackage/bw.java @@ -0,0 +1,18 @@ +package defpackage; + +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.resources.Identifier; + +public class bw { + public void test(GuiGraphicsExtractor var1, Identifier var2, int var3, int var4) { + var1.blitSprite( + RenderPipelines.GUI_TEXTURED, + var2, + var3, + var4, + 10, + (-2097044209 ^ 2097044219) + ((-2097044209 & 2097044219) << 1) + ); + } +} diff --git a/src/main/java/defpackage/bx.java b/src/main/java/defpackage/bx.java new file mode 100644 index 0000000..3ad4da0 --- /dev/null +++ b/src/main/java/defpackage/bx.java @@ -0,0 +1,61 @@ +package defpackage; + +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import net.minecraft.client.Minecraft; + +public class bx { + public static void main(String[] var0) { + Object var1 = null; + Method[] var2 = null; + int var3 = 0; + int var4 = 0; + Object var5 = null; + int var6 = 1325595316; + + while (true) { + switch (var6) { + case -1619840238: + if (var5.getName().toLowerCase().contains("sprite")) { + var6 = 9962802; + } else { + var6 = 1991878666; + } + break; + case -191536360: + var5 = var2[var4]; + if (Modifier.isPublic(var5.getModifiers())) { + var6 = -1619840238; + } else { + var6 = 1991878666; + } + break; + case 9962802: + System.out.println(var5.getName() + " -> " + var5.getReturnType().getName()); + var6 = 1991878666; + break; + case 807255851: + if (var4 < var3) { + var6 = -191536360; + } else { + var6 = 2039994696; + } + break; + case 1325595316: + default: + var1 = Minecraft.class.getDeclaredMethods(); + var2 = (Method[])var1; + var3 = var2.length; + var4 = 0; + var6 = 807255851; + break; + case 1991878666: + var4++; + var6 = 807255851; + break; + case 2039994696: + return; + } + } + } +} diff --git a/src/main/java/defpackage/by.java b/src/main/java/defpackage/by.java new file mode 100644 index 0000000..262ed0d --- /dev/null +++ b/src/main/java/defpackage/by.java @@ -0,0 +1,23 @@ +package defpackage; + +import java.util.Objects; +import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener; +import net.minecraft.resources.Identifier; +import net.minecraft.server.packs.resources.ResourceManager; + +/* JADX INFO: loaded from: evovis-dec.jar:by.class */ +class by implements SimpleSynchronousResourceReloadListener { + by(bz bzVar) { + Objects.requireNonNull(bzVar); + } + + @Override // net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener + public Identifier getFabricId() { + return bz.id("after_shader_load"); + } + + public void onResourceManagerReload(ResourceManager resourceManager) { + atd.loadAndSetupPrograms(); + aqx.markResourcesReady(); + } +} diff --git a/src/main/java/defpackage/bz.java b/src/main/java/defpackage/bz.java new file mode 100644 index 0000000..9903664 --- /dev/null +++ b/src/main/java/defpackage/bz.java @@ -0,0 +1,226 @@ +package defpackage; + +import java.io.File; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents.Disconnect; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents.Join; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelExtractionEvents; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderEvents; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderEvents.EndMain; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderEvents.StartMain; +import net.fabricmc.fabric.api.resource.ResourceManagerHelper; +import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.Identifier; +import net.minecraft.server.packs.PackType; +import net.minecraft.server.packs.resources.ResourceManager; + +public enum bz { + INSTANCE; + + public static final String NAME = "Evolution"; + public static final String VER = "2.0"; + public static final String TYPE = "DEV"; + private static final String SHUTDOWN_THREAD = "evo-shutdown"; + private static final String SAVE_FRIENDS_ACTION = "save friends on shutdown"; + private static final String SAVE_STAFF_ACTION = "save staff on shutdown"; + private static final String SAVE_CONFIG_ACTION = "save config on shutdown"; + private static final String STOP_PRESENCE_ACTION = "stop discord presence on shutdown"; + private static final String SAVE_SPLASH_PALETTE_ACTION = "save splash palette on shutdown"; + private static final String MOD_ID = "Evolution".toLowerCase(); + public static final File DIRECTORY = new File( + Minecraft.getInstance().gameDirectory, "Evolution" + ); + private lc moduleManager; + private my themeManager; + private yc menuScreen; + private lm scriptManager; + private aqc serverHandler; + private gb friendManager; + private gd staffManager; + private lr deepLearningManager; + private lp rotationManager; + private le notifyManager; + private dg commandManager; + private ed configManager; + private lg rctRepository; + private mm soundManager; + + @a + @e(type = d.ULTRA) + public void init() { + id.install(); + Runtime.getRuntime() + .addShutdownHook( + new Thread( + () -> getInstance().shutdown(), "evo-shutdown" + ) + ); + this.friendManager = new gb(); + this.staffManager = new gd(); + this.notifyManager = le.getInstance(); + this.soundManager = new mm(); + this.serverHandler = new aqc(); + this.rctRepository = new lg(); + this.themeManager = new my(); + this.moduleManager = new lc(); + this.deepLearningManager = new lr(); + this.rotationManager = new lp(); + this.commandManager = new dg(); + this.scriptManager = new lm(); + this.menuScreen = new yc(); + this.configManager = new ed(); + this.menuScreen.initialize(); + ResourceManagerHelper.get(PackType.CLIENT_RESOURCES).registerReloadListener(new SimpleSynchronousResourceReloadListener() { + public Identifier getFabricId() { + return bz.id("after_shader_load"); + } + + public void onResourceManagerReload(ResourceManager var1) { + atd.loadAndSetupPrograms(); + aqx.markResourcesReady(); + } + }); + ClientPlayConnectionEvents.JOIN.register((Join)(var1, var2, var3) -> this.soundManager.play(mj.WORLD_JOIN)); + ClientPlayConnectionEvents.JOIN.register((Join)(var0, var1, var2) -> ahf.getInstance().openWorld(ahf.currentWorldKey())); + ClientPlayConnectionEvents.DISCONNECT.register((Disconnect)(var0, var1) -> ahf.getInstance().closeWorld()); + ClientPlayConnectionEvents.JOIN.register((Join)(var0, var1, var2) -> awb.getInstance().openWorld(ahf.currentWorldKey())); + ClientPlayConnectionEvents.DISCONNECT.register((Disconnect)(var0, var1) -> awb.getInstance().closeWorld()); + ClientPlayConnectionEvents.JOIN.register((Join)(var0, var1, var2) -> agk.getInstance().openWorld(ahf.currentWorldKey())); + ClientPlayConnectionEvents.DISCONNECT.register((Disconnect)(var0, var1) -> agk.getInstance().closeWorld()); + ClientPlayConnectionEvents.JOIN.register((Join)(var0, var1, var2) -> agc.getInstance().openWorld(ahf.currentWorldKey())); + ClientPlayConnectionEvents.DISCONNECT.register((Disconnect)(var0, var1) -> agc.getInstance().closeWorld()); + atb.initializeShaders(); + gt.init(); + auf.init(); + LevelRenderEvents.START_MAIN.register((StartMain)var0 -> ath.begin()); + LevelRenderEvents.END_MAIN.register((EndMain)var0 -> ath.endWorld()); + LevelExtractionEvents.END_EXTRACTION.register(tw.INSTANCE::beginFrame); + LevelRenderEvents.AFTER_OPAQUE_TERRAIN.register(tw.INSTANCE::prepareTargets); + LevelRenderEvents.AFTER_TRANSLUCENT_FEATURES.register(tw.INSTANCE::composite); + LevelRenderEvents.END_MAIN.register(tw.INSTANCE::endFrame); + LevelRenderEvents.COLLECT_SUBMITS.register(vl.INSTANCE::onWorldRender); + LevelRenderEvents.AFTER_TRANSLUCENT_TERRAIN.register(vl.INSTANCE::onWorldDraw); + LevelRenderEvents.COLLECT_SUBMITS.register(vp.INSTANCE::onWorldRender); + LevelRenderEvents.COLLECT_SUBMITS.register(tr.INSTANCE::onWorldRender); + LevelRenderEvents.AFTER_TRANSLUCENT_TERRAIN.register(tr.INSTANCE::onWorldDraw); + LevelRenderEvents.COLLECT_SUBMITS.register(ts.INSTANCE::onWorldRender); + LevelRenderEvents.AFTER_TRANSLUCENT_TERRAIN.register(ts.INSTANCE::onWorldDraw); + LevelRenderEvents.COLLECT_SUBMITS.register(tt.INSTANCE::onWorldRender); + LevelRenderEvents.BEFORE_BLOCK_OUTLINE.register(tt.INSTANCE::onBeforeBlockOutline); + LevelRenderEvents.COLLECT_SUBMITS.register(sv.INSTANCE::onWorldRender); + LevelRenderEvents.AFTER_TRANSLUCENT_TERRAIN.register(tt.INSTANCE::onWorldDraw); + LevelRenderEvents.COLLECT_SUBMITS.register(vx.INSTANCE::onWorldRender); + LevelRenderEvents.COLLECT_SUBMITS.register(ux.INSTANCE::onWorldRender); + LevelRenderEvents.COLLECT_SUBMITS.register(wj.INSTANCE::onWorldRender); + LevelRenderEvents.AFTER_TRANSLUCENT_TERRAIN.register(wj.INSTANCE::onWorldDraw); + LevelRenderEvents.AFTER_TRANSLUCENT_FEATURES.register(ags.getInstance()::onWorldDraw); + LevelRenderEvents.END_MAIN.register((EndMain)var0 -> ags.getInstance().discard()); + LevelRenderEvents.COLLECT_SUBMITS.register(wd.INSTANCE::onWorldRender); + LevelRenderEvents.AFTER_TRANSLUCENT_TERRAIN.register(wd.INSTANCE::onWorldDraw); + LevelRenderEvents.COLLECT_SUBMITS.register(ut.INSTANCE::onWorldRender); + LevelRenderEvents.AFTER_TRANSLUCENT_TERRAIN.register(ut.INSTANCE::onWorldDraw); + LevelRenderEvents.COLLECT_SUBMITS.register(up.INSTANCE::onWorldRender); + LevelRenderEvents.COLLECT_SUBMITS.register(wg.INSTANCE::onWorldRender); + LevelRenderEvents.COLLECT_SUBMITS.register(tk.INSTANCE::onWorldRender); + LevelRenderEvents.COLLECT_SUBMITS.register(su.INSTANCE::onWorldRender); + LevelRenderEvents.COLLECT_SUBMITS.register(tm.INSTANCE::onWorldRender); + LevelRenderEvents.COLLECT_SUBMITS.register(ahb.getInstance()::onWorldRender); + LevelRenderEvents.COLLECT_SUBMITS.register(aio.getInstance()::onWorldRender); + LevelRenderEvents.COLLECT_SUBMITS.register(agj.getInstance()::onWorldRender); + LevelRenderEvents.COLLECT_SUBMITS.register(agb.getInstance()::onWorldRender); + apk.getInstance().init(); + aul.init(); + auo.init(); + } + + public void shutdown() { + id.run( + Cif.SOCIAL, + "save friends on shutdown", + () -> this.friendManager.save() + ); + id.run( + Cif.SOCIAL, "save staff on shutdown", () -> this.staffManager.save() + ); + id.run( + Cif.CONFIG, + "save config on shutdown", + () -> this.configManager.save() + ); + id.run( + Cif.RENDER, + "save splash palette on shutdown", + () -> acd.remember(this.themeManager.getSelectedTheme().getAccent()) + ); + id.run( + Cif.SOCIAL, + "stop discord presence on shutdown", + () -> ej.getInstance().stop() + ); + } + + public static Identifier id(String var0) { + return Identifier.fromNamespaceAndPath(MOD_ID, var0); + } + + public static bz getInstance() { + return INSTANCE; + } + + public lg getRCTRepository() { + return this.rctRepository; + } + + public lc getModuleManager() { + return this.moduleManager; + } + + public my getThemeManager() { + return this.themeManager; + } + + public yc getMenuScreen() { + return this.menuScreen; + } + + public lm getScriptManager() { + return this.scriptManager; + } + + public aqc getServerHandler() { + return this.serverHandler; + } + + public gb getFriendManager() { + return this.friendManager; + } + + public gd getStaffManager() { + return this.staffManager; + } + + public lr getDeepLearningManager() { + return this.deepLearningManager; + } + + public lp getRotationManager() { + return this.rotationManager; + } + + public le getNotifyManager() { + return this.notifyManager; + } + + public dg getCommandManager() { + return this.commandManager; + } + + public ed getConfigManager() { + return this.configManager; + } + + public mm getSoundManager() { + return this.soundManager; + } +} diff --git a/src/main/java/defpackage/c.java b/src/main/java/defpackage/c.java new file mode 100644 index 0000000..eed1852 --- /dev/null +++ b/src/main/java/defpackage/c.java @@ -0,0 +1,12 @@ +package defpackage; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.CLASS) +@Target(ElementType.METHOD) +public @interface c { + int stage(); +} diff --git a/src/main/java/defpackage/ca.java b/src/main/java/defpackage/ca.java new file mode 100644 index 0000000..af2b573 --- /dev/null +++ b/src/main/java/defpackage/ca.java @@ -0,0 +1,66 @@ +package defpackage; + +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents.EndTick; + +public class ca implements ClientModInitializer { + public void onInitializeClient() { + mi.initialize(); + aia.initialize(); + aiz.initialize(); + ahe.initialize(); + aip.initialize(); + afv.initialize(); + ain.initialize(); + agx.initialize(); + afp.initialize(); + cp.initialize(); + aln.initialize(); + alr.initialize(); + aiq.initialize(); + anb.initialize(); + akt.initialize(); + amv.initialize(); + anl.initialize(); + wy.initialize(); + anh.initialize(); + aoh.initialize(); + avz.initialize(); + ei.initialize(); + acz.initialize(); + sr.initialize(); + ClientTickEvents.END_CLIENT_TICK.register((EndTick)var0 -> { + int var1 = -23831852; + + while (true) { + switch (var1) { + case -1917519501: + agm.getInstance().tickAll(var0.level); + var1 = 1502715769; + break; + case -23831852: + default: + if (var0.level == null) { + var1 = 732940203; + } else { + var1 = 1372294303; + } + break; + case 732940203: + agm.getInstance().clear(); + return; + case 1372294303: + if (adq.getInstance().isEnabled()) { + var1 = -1917519501; + } else { + var1 = 1502715769; + } + break; + case 1502715769: + return; + } + } + }); + } +} diff --git a/src/main/java/defpackage/cb.java b/src/main/java/defpackage/cb.java new file mode 100644 index 0000000..649ce13 --- /dev/null +++ b/src/main/java/defpackage/cb.java @@ -0,0 +1,133 @@ +package defpackage; + +import net.fabricmc.loader.api.FabricLoader; +import net.fabricmc.loader.api.ModContainer; +import net.fabricmc.loader.api.Version; + +public final class cb { + public static final String MOD_ID = "evolutiondlc"; + public static final String BRAND = "EvoVisuals"; + private static final String SEPARATOR = " "; + private static volatile Version current; + private static volatile boolean resolved; + private static volatile String label; + + private cb() { + } + + public static synchronized Version current() { + ModContainer var0 = null; + Version var2 = null; + int var1 = -573318290; + + while (true) { + switch (var1) { + case -1077472047: + current = var2; + var1 = 175890733; + break; + case -573318290: + default: + if (!resolved) { + var1 = 578580974; + } else { + var1 = 175890733; + } + break; + case 175890733: + return current; + case 480083324: + var2 = var0.getMetadata().getVersion(); + var1 = -1077472047; + break; + case 511372530: + var2 = null; + var1 = -1077472047; + break; + case 578580974: + resolved = (boolean)(((1)) != 0); + var0 = (ModContainer)FabricLoader.getInstance() + .getModContainer("evolutiondlc") + .orElse(null); + if (var0 == null) { + var1 = 511372530; + } else { + var1 = 480083324; + } + } + } + } + + public static String friendlyString() { + Version var0 = null; + String var2 = null; + int var1 = -206740312; + + while (true) { + switch (var1) { + case -1185758732: + return var2; + case -500069829: + var2 = ""; + var1 = -1185758732; + break; + case -206740312: + default: + var0 = current(); + if (var0 == null) { + var1 = -500069829; + } else { + var1 = 1483559333; + } + break; + case 1483559333: + var2 = var0.getFriendlyString(); + var1 = -1185758732; + } + } + } + + public static String label() { + String var0 = null; + String var1 = null; + String var3 = null; + int var2 = -843343613; + + while (true) { + switch (var2) { + case -1541285237: + var0 = var3; + label = var0; + var2 = 1201745985; + break; + case -843343613: + default: + var0 = label; + if (var0 == null) { + var2 = 7659173; + } else { + var2 = 1201745985; + } + break; + case -685834678: + var3 = "EvoVisuals " + var1; + var2 = -1541285237; + break; + case 7659173: + var1 = friendlyString(); + if (var1.isEmpty()) { + var2 = 933367829; + } else { + var2 = -685834678; + } + break; + case 933367829: + var3 = "EvoVisuals"; + var2 = -1541285237; + break; + case 1201745985: + return var0; + } + } + } +} diff --git a/src/main/java/defpackage/cc.java b/src/main/java/defpackage/cc.java new file mode 100644 index 0000000..a969ef6 --- /dev/null +++ b/src/main/java/defpackage/cc.java @@ -0,0 +1,41 @@ +package defpackage; + +import java.lang.reflect.Field; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderEvents; + +public class cc { + public static void main(String[] var0) { + Field[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = -1501017338; + + while (true) { + switch (var5) { + case -1955731970: + var4 = var1[var3]; + System.out.println(var4.getName()); + var3++; + var5 = -1527327920; + break; + case -1527327920: + if (var3 < var2) { + var5 = -1955731970; + } else { + var5 = 932602283; + } + break; + case -1501017338: + default: + var1 = LevelRenderEvents.class.getFields(); + var2 = var1.length; + var3 = 0; + var5 = -1527327920; + break; + case 932602283: + return; + } + } + } +} diff --git a/src/main/java/defpackage/cd.java b/src/main/java/defpackage/cd.java new file mode 100644 index 0000000..5af0056 --- /dev/null +++ b/src/main/java/defpackage/cd.java @@ -0,0 +1,40 @@ +package defpackage; + +import java.lang.reflect.Method; +import net.minecraft.client.renderer.rendertype.RenderType; + +public class cd { + public void test() { + Method[] var1 = null; + int var2 = 0; + int var3 = 0; + Method var4 = null; + int var5 = 1065825546; + + while (true) { + switch (var5) { + case -1790412101: + return; + case -1509422071: + if (var3 < var2) { + var5 = 1650693506; + } else { + var5 = -1790412101; + } + break; + case 1065825546: + default: + var1 = RenderType.class.getDeclaredMethods(); + var2 = var1.length; + var3 = 0; + var5 = -1509422071; + break; + case 1650693506: + var4 = var1[var3]; + System.out.println(var4.getName() + " " + var4.getReturnType().getSimpleName()); + var3++; + var5 = -1509422071; + } + } + } +} diff --git a/src/main/java/defpackage/ce.java b/src/main/java/defpackage/ce.java new file mode 100644 index 0000000..5263ea4 --- /dev/null +++ b/src/main/java/defpackage/ce.java @@ -0,0 +1,326 @@ +package defpackage; + +import net.minecraft.client.TextureFilteringMethod; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.util.Mth; +import org.joml.Matrix3x2fStack; + +public class ce extends api { + private static final float BOX_WIDTH = 300.0F; + private static final float BOX_HEIGHT = 280.0F; + private static final float BOX_MARGIN = 40.0F; + private static final float HEADER_HEIGHT = 30.0F; + private static final float PADDING = 10.0F; + private static final float SHADOW_SPREAD = 22.0F; + private static final float SHADOW_ALPHA = 0.55F; + private static final float BACKGROUND_BOOST = 4.0F; + private static final float SCROLL_LANE_INSET = 5.0F; + private static final float CLIP_INSET = 1.0F; + private static final float TITLE_FONT_SIZE = 8.0F; + private static final float HINT_FONT_SIZE = 5.5F; + private static final String TITLE = "Accounts"; + private static final String HINT = "ESC to return"; + private final Screen parent; + private final cf panel = new cf(); + private final arl scrollHandler = new arl(); + private final ark scrollBar = new ark(); + private final xm frame = new xm(); + private float boxX; + private float boxY; + private float boxHeight; + private float contentX; + private float contentY; + private float contentWidth; + private float visibleHeight; + + private static arq WINDOW_RADIUS() { + return asj.all(oc.WINDOW); + } + + public ce(Screen var1) { + this.parent = var1; + this.panel.onOpened(); + } + + protected void init() { + this.frame.open(); + } + + @Override + public void render(asq var1, float var2, float var3) { + mv var4 = null; + float var5 = 0.0F; + Matrix3x2fStack var6 = null; + asu var7 = null; + ge var8 = null; + ge var9 = null; + asu var10 = null; + asu var11 = null; + float var12 = 0.0F; + int var13 = -382533462; + + while (true) { + switch (var13) { + case -1936387218: + this.panel.onClosed(); + this.minecraft.setScreenAndShow(this.parent); + var13 = 1186997019; + break; + case -382533462: + default: + var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + this.frame.measure(this.width, this.height, 300.0F, 280.0F); + var5 = this.frame.advance(); + atb.endGui(); + this.applyAnimatedBlur(var5); + atb.beginGui(); + aqr.renderImmediate(var1.pose(), this.width, this.height); + var1.drawRect(0.0F, 0.0F, this.width, this.height, var4.getBackgroundColor().mulAlpha(0.4F * var5)); + this.boxHeight = Math.min(280.0F, this.frame.viewHeight() - 40.0F); + this.boxX = this.frame.centerX(300.0F); + this.boxY = this.frame.centerY(this.boxHeight); + var6 = var1.pose(); + this.frame.push(var1, this.boxX + 150.0F, this.boxY + this.boxHeight / 2.0F); + var2 = (float)this.frame.toLocalX(var2); + var3 = (float)this.frame.toLocalY(var3); + var7 = var4.getBackgroundColor().mulAlpha(var5 * 4.0F); + atb.drawShadow(var6, this.boxX, this.boxY, 300.0F, this.boxHeight, 22.0F, asj.all(oc.WINDOW), var4.getColor().mulAlpha(var5 * 0.55F)); + var1.drawSurface(aso.WINDOW, this.boxX, this.boxY, 300.0F, this.boxHeight, WINDOW_RADIUS(), var7.getRGB()); + arx.invalidateScene(); + atb.drawRoundedBorder(var6, this.boxX, this.boxY, 300.0F, this.boxHeight, pk.borderRim(), asj.all(oc.WINDOW), var4.getColor().mulAlpha(var5)); + var8 = gl.SEMIBOLD.getFont(8.0F); + var9 = gl.MEDIUM.getFont(5.5F); + var10 = var4.getWhite().mulAlpha(var5); + var11 = var4.getGrayLight().mulAlpha(var5); + var1.drawText( + var8, + "Accounts", + this.boxX + 10.0F, + this.boxY + 10.0F, + var10 + ); + var1.drawText( + var9, + "ESC to return", + this.boxX + 300.0F - 10.0F - var9.width("ESC to return"), + this.boxY + 10.0F + (var8.height() - var9.height()) / 2.0F, + var11 + ); + this.contentX = this.boxX + 10.0F; + this.contentY = this.boxY + 30.0F; + this.contentWidth = 280.0F; + this.visibleHeight = this.boxHeight - 30.0F - 10.0F; + var1.clipScroll(this.boxX + 1.0F, this.contentY, this.boxX + 300.0F - 1.0F, this.contentY + this.visibleHeight, ars.edgeFade()); + gt.beginBatch(); + var12 = this.panel + .render( + var1, + this.contentX, + this.contentY, + this.contentWidth, + this.visibleHeight, + (float)Mth.clamp(this.scrollHandler.getValue(), 0.0, this.scrollHandler.getMax()), + var5, + var4, + var2, + var3 + ); + gt.endBatch(); + var1.popClip(); + this.scrollHandler.update(); + this.scrollHandler.setMax(Math.max(0.0F, var12 - this.visibleHeight)); + this.scrollBar + .measure( + this.boxX + 300.0F - 5.0F, + this.contentY, + 3.5F, + this.visibleHeight, + (float)this.scrollHandler.getMax(), + (float)Mth.clamp(this.scrollHandler.getValue(), 0.0, this.scrollHandler.getMax()) + ); + this.scrollBar.render(var1, var4, var5, var2, var3, this.scrollHandler.isSettled()); + this.frame.pop(var1); + if (this.frame.isClosed()) { + var13 = -1936387218; + } else { + var13 = 1186997019; + } + break; + case 1186997019: + return; + } + } + } + + private void applyAnimatedBlur(float var1) { + int var2 = this.minecraft.options.getMenuBackgroundBlurriness(); + int var3 = Math.round(var1 * var2); + if (var3 > 0) { + this.minecraft + .gameRenderer + .globalSettingsUniform + .update( + this.minecraft.getWindow().getWidth(), + this.minecraft.getWindow().getHeight(), + (Double)this.minecraft.options.glintStrength().get(), + this.minecraft.level == null + ? (5684312847126310006L | -5684312847126310006L) + (5684312847126310006L & -5684312847126310006L) + : this.minecraft.level.getGameTime(), + this.minecraft.getDeltaTracker(), + var3, + this.minecraft.gameRenderer.mainCamera().position(), + (boolean)(((this.minecraft.options.textureFiltering().get() == TextureFilteringMethod.RGSS + ? 1: (-551809504 ^ 551809504) + ((-551809504 & 551809504) << 1)) + ) != 0)); + this.minecraft.gameRenderer.processBlurEffect(); + } + } + + public void extractBackground(GuiGraphicsExtractor var1, int var2, int var3, float var4) { + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + int var10 = -1764858546; + + while (true) { + switch (var10) { + case -1764858546: + default: + if (!this.frame.isInteractive()) { + var10 = -394751397; + } else { + var10 = 1354315041; + } + break; + case -1000234853: + return; + case -736516858: + if (this.scrollBar.press(var6, var8)) { + var10 = -1000234853; + } else { + var10 = 160871874; + } + break; + case -394751397: + return; + case 160871874: + this.panel.handleMouseClicked(var6, var8, var5); + return; + case 1354315041: + var6 = this.frame.toLocalX(var1); + var8 = this.frame.toLocalY(var3); + if (var5 == apf.LEFT) { + var10 = -736516858; + } else { + var10 = 160871874; + } + } + } + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + int var10 = -1601656943; + + while (true) { + switch (var10) { + case -1659458488: + this.scrollHandler.jumpTo(-this.scrollBar.dragTo(this.frame.toLocalY(var3))); + var10 = 953628736; + break; + case -1601656943: + default: + if (this.scrollBar.isDragging()) { + var10 = -1659458488; + } else { + var10 = 953628736; + } + break; + case 953628736: + return; + } + } + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + this.scrollBar.release(); + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = -753699596; + + while (true) { + switch (var4) { + case -753699596: + default: + if (!this.frame.isClosing()) { + var4 = 1606636680; + } else { + var4 = -159672928; + } + break; + case -159672928: + return super.keyPressed(var1, var2, var3); + case 494090101: + return (boolean)(((1)) != 0); + case 1606636680: + if (this.panel.keyPressed(var1, var2, var3)) { + var4 = 494090101; + } else { + var4 = -159672928; + } + } + } + } + + @Override + public boolean charTyped(char var1, int var2) { + int var4 = 0; + int var3 = 35885211; + + while (true) { + switch (var3) { + case 35885211: + default: + if (!this.frame.isClosing()) { + var3 = 1800829301; + } else { + var3 = 577360154; + } + break; + case 433578008: + var4 = 1; + var3 = 611142150; + break; + case 577360154: + var4 = 0; + var3 = 611142150; + break; + case 611142150: + return (boolean)((var4) != 0); + case 1800829301: + if (this.panel.charTyped(var1, var2)) { + var3 = 433578008; + } else { + var3 = 577360154; + } + } + } + } + + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + this.scrollHandler.scroll(var7); + this.scrollBar.notifyScrolled(); + return (boolean)(((1)) != 0); + } + + public void onClose() { + this.frame.beginClose(); + } +} diff --git a/src/main/java/defpackage/cf.java b/src/main/java/defpackage/cf.java new file mode 100644 index 0000000..0acde94 --- /dev/null +++ b/src/main/java/defpackage/cf.java @@ -0,0 +1,750 @@ +package defpackage; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import net.minecraft.client.model.geom.builders.UVPair; +import net.minecraft.util.Mth; + +public class cf { + private static final asu ACTIVE = new asu( + 88, + 194, + 125, + (-21451072 | 21451327) + (-21451072 & 21451327) + ); + private static final asu ERROR = new asu( + 226, + 96, + 96, + (-1605695579 ^ 1605695834) + ((-1605695579 & 1605695834) << 1) + ); + private static final asu MICROSOFT = new asu( + 96, + 156, + 226, + (-1840179507 | 1840179762) + (-1840179507 & 1840179762) + ); + private static final float APPEAR_STEP_RATIO = 0.18F; + private static final float APPEAR_LIFT = 8.0F; + private static final float ROW_APPEAR_LIFT = 10.0F; + private static final float BADGE_PULSE_BASE = 0.8F; + private static final float BADGE_PULSE_SWING = 0.2F; + private static final float BADGE_PULSE_PERIOD_FACTOR = 4.0F; + private static final double TAU = Math.PI * 2; + private static final long MESSAGE_DWELL_MS = 4000L; + private static final float BUTTON_HOVER_SCALE = 0.05F; + private static final float BUTTON_HOVER_ALPHA = 0.15F; + private static final float BUTTON_BASE_ALPHA = 0.85F; + private static final String ACCOUNTS_HEADING_PREFIX = "ACCOUNTS - "; + private static final String FIELD_HOVER_KEY = "field"; + private static final String ADD_HOVER_KEY = "add"; + private static final String MICROSOFT_HOVER_KEY = "microsoft"; + private static final int REGION_SUBMIT = 1; + private static final int REGION_MICROSOFT = 2; + private static final int REGION_REMOVE = 3; + private static final int REGION_LOGIN = 4; + private static final int REGION_STRIDE = 4; + private static final int REGION_CAPACITY = 16; + private static final int REGION_GROWTH = 2; + private arn inputField; + private float[] regionBounds = new float[64]; + private int[] regionActions = new int[16]; + private Object[] regionPayloads = new Object[16]; + private int regionCount; + private final Map hoverAnimations = new HashMap<>(); + private boolean fieldBoundsValid; + private float fieldX; + private float fieldY; + private float fieldWidth; + private float fieldHeight; + private float viewTop; + private float viewBottom; + private double openedAt = cs.elapsedMillis(); + private int headingCount = -1; + private String heading = "ACCOUNTS - "; + + private static arq CARD_RADIUS() { + return asj.all(oc.PANEL); + } + + private static arq ROW_RADIUS() { + return asj.all(oc.CARD); + } + + public void onOpened() { + this.openedAt = cs.elapsedMillis(); + } + + private void addRegion(float var1, float var2, float var3, float var4, int var5, Object var6) { + int var7 = 0; + int var8 = 2130164839; + + while (true) { + switch (var8) { + case -432759356: + var7 = this.regionActions.length * (2); + this.regionBounds = Arrays.copyOf(this.regionBounds, var7 * ((-1189782089 | 1189782093) + (-1189782089 & 1189782093))); + this.regionActions = Arrays.copyOf(this.regionActions, var7); + this.regionPayloads = Arrays.copyOf(this.regionPayloads, var7); + var8 = 948363310; + break; + case 948363310: + var7 = this.regionCount * (4); + this.regionBounds[var7] = var1; + this.regionBounds[var7 + 1] = var2; + this.regionBounds[var7 + 2] = var3; + this.regionBounds[var7 + 3] = var4; + this.regionActions[this.regionCount] = var5; + this.regionPayloads[this.regionCount] = var6; + this.regionCount += 1; + return; + case 2130164839: + default: + if (this.regionCount == this.regionActions.length) { + var8 = -432759356; + } else { + var8 = 948363310; + } + } + } + } + + private void clearRegions() { + Arrays.fill(this.regionPayloads, 0, this.regionCount, null); + this.regionCount = 0; + } + + private void runRegion(int var1, Object var2) { + switch (var1) { + case 1: + this.submit(); + break; + case 2: + cg.beginMicrosoft(); + break; + case 3: + cg.remove((co)var2); + break; + case 4: + cg.login((co)var2); + } + } + + private String accountsHeading(int var1) { + int var2 = -1992664681; + + while (true) { + switch (var2) { + case -1992664681: + default: + if (var1 != this.headingCount) { + var2 = 564530996; + } else { + var2 = 1873563359; + } + break; + case 564530996: + this.headingCount = var1; + this.heading = "ACCOUNTS - " + var1; + var2 = 1873563359; + break; + case 1873563359: + return this.heading; + } + } + } + + private arn inputField() { + int var1 = -187281730; + + while (true) { + switch (var1) { + case -1781070573: + return this.inputField; + case -187281730: + default: + if (this.inputField == null) { + var1 = 866731870; + } else { + var1 = -1781070573; + } + break; + case 866731870: + this.inputField = new arn( + new UVPair(0.0F, 0.0F), + gl.MEDIUM.getFont(6.0F), + "Offline nickname", + 120.0F + ); + var1 = -1781070573; + } + } + } + + private float appear(int var1) { + float var2 = pk.motion(ob.SLOW); + float var3 = (float)(cs.elapsedMillis() - this.openedAt) - var1 * var2 * 0.18F; + float var4 = Mth.clamp(var3 / var2, 0.0F, 1.0F); + float var5 = 1.0F - var4; + return 1.0F - var5 * var5 * var5; + } + + private float hover(Object var1, boolean var2) { + ct var3 = this.hoverAnimations.computeIfAbsent(var1, var0 -> ct.layout(ob.SETTLED, 0.0F)); + var3.animateTo(var2 ? 1.0F : 0.0F); + return var3.update(); + } + + public float render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, mv var8, float var9, float var10) { + ge var11 = null; + ge var12 = null; + ge var13 = null; + asu var14 = null; + asu var15 = null; + asu var16 = null; + asu var17 = null; + asu var18 = null; + float var19 = 0.0F; + float var20 = 0.0F; + List var21 = null; + float var22 = 0.0F; + int var23 = 0; + Iterator var24 = null; + co var25 = null; + int var26 = -848894869; + + while (true) { + switch (var26) { + case -848894869: + default: + this.clearRegions(); + this.viewTop = var3; + this.viewBottom = var3 + var5; + var11 = gl.SEMIBOLD.getFont(5.5F); + var12 = gl.MEDIUM.getFont(7.0F); + var13 = gl.MEDIUM.getFont(5.5F); + var14 = var8.getWhite().mulAlpha(var7); + var15 = var8.getGrayLight().mulAlpha(var7); + var16 = var8.getColor().mulAlpha(var7); + var17 = var8.getForegroundColor().mulAlpha(0.6F * var7); + var18 = var8.getForegroundStroke().mulAlpha(var7); + var19 = var3 - var6; + var20 = var19 + 6.0F; + var20 = this.renderCurrentCard(var1, var2, var20, var4, var7, var8, var12, var13, var14, var15, var17, var18); + var20 = this.renderAddCard(var1, var2, var20, var4, var7, var8, var9, var10, var13, var14, var15, var16, var17, var18); + var21 = cg.all(); + var22 = this.appear((-1157047140 ^ 1157047142) + ((-1157047140 & 1157047142) << 1)); + var1.drawText(var11, this.accountsHeading(var21.size()), var2 + 2.0F, var20 + (1.0F - var22) * 8.0F, var15.mulAlpha(var22)); + var20 += var11.height() + 5.0F; + if (var21.isEmpty()) { + var26 = -345902536; + } else { + var26 = 264601011; + } + break; + case -563373731: + var25 = (co)var24.next(); + var20 = this.renderAccountRow( + var1, + var2, + var20, + var4, + var7, + var8, + var9, + var10, + var25, + (794202029 ^ -794202026) + ((794202029 & -794202026) << 1) + var23, + var12, + var13, + var14, + var15, + var17, + var18 + ); + var23++; + var26 = 550867114; + break; + case -345902536: + var1.drawText( + var13, + "No accounts yet. Add an offline nickname or sign in with Microsoft", + var2 + 2.0F, + var20 + 4.0F + (1.0F - var22) * 8.0F, + var15.mulAlpha(var22) + ); + var20 += var13.height() + 14.0F; + var26 = 1627443100; + break; + case 264601011: + var23 = 0; + var24 = var21.iterator(); + var26 = 550867114; + break; + case 550867114: + if (var24.hasNext()) { + var26 = -563373731; + } else { + var26 = 1627443100; + } + break; + case 1627443100: + return var20 - var19 + 4.0F; + } + } + } + + private float renderCurrentCard( + asq var1, float var2, float var3, float var4, float var5, mv var6, ge var7, ge var8, asu var9, asu var10, asu var11, asu var12 + ) { + float var13 = this.appear((-654776532 ^ 654776532) + ((-654776532 & 654776532) << 1)); + float var14 = var3 + (1.0F - var13) * 8.0F; + float var15 = var5 * var13; + float var16 = 26.0F; + var1.drawSurface(aso.CARD, var2, var14, var4, var16, CARD_RADIUS(), var11.getRGBWithAlpha(var13)); + atb.drawRoundedBorder(var1.pose(), var2, var14, var4, var16, pk.borderHairline(), asj.all(oc.PANEL), var12.mulAlpha(var13)); + String var17 = cg.currentName(); + this.drawAvatar(var1, var2 + 5.0F, var14 + 4.0F, var16 - 8.0F, var17, var6.getColor().mulAlpha(var15)); + float var18 = var2 + 5.0F + (var16 - 8.0F) + 7.0F; + var1.drawText(var7, var17, var18, var14 + 5.0F, var9.mulAlpha(var13)); + var1.drawText( + var8, + "Current session", + var18, + var14 + var16 - var8.height() - 5.0F, + var10.mulAlpha(var13) + ); + return var3 + var16 + 6.0F; + } + + private float renderAddCard( + asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8, ge var9, asu var10, asu var11, asu var12, asu var13, asu var14 + ) { + float var15 = this.appear((-1265644569 | 1265644570) + (-1265644569 & 1265644570)); + float var16 = var3 + (1.0F - var15) * 8.0F; + float var17 = 26.0F; + boolean var18 = this.inputField().isSelected(); + this.fieldBoundsValid = (boolean)(((1)) != 0); + this.fieldX = var2; + this.fieldY = var16; + this.fieldWidth = var4; + this.fieldHeight = var17; + var1.drawRoundedRect(var2, var16, var4, var17, asj.all(oc.PANEL), var13.mulAlpha(var15)); + float var19 = this.hover("field", var18); + atb.drawRoundedBorder(var1.pose(), var2, var16, var4, var17, pk.borderHairline(), asj.all(oc.PANEL), var14.mix(var12, 0.85F * var19).mulAlpha(var15)); + ge var20 = gl.SEMIBOLD.getFont(6.0F); + float var21 = var17 - 8.0F; + float var22 = var20.width("Microsoft") + 14.0F; + float var23 = 34.0F; + float var24 = var2 + var4 - var22 - 4.0F; + float var25 = var24 - var23 - 4.0F; + float var26 = var16 + 4.0F; + this.inputField().setWidth(var25 - (var2 + 9.0F) - 6.0F); + ge var27 = this.inputField().getFont(); + this.inputField() + .render(var1, var2 + 9.0F, var16 + (var17 - var27.height()) / 2.0F, var10.mulAlpha(var15), var11.mulAlpha((var18 ? 0.0F : 0.7F) * var15)); + boolean var28 = aqj.isHovered(var7, var8, var25, var26, var23, var21); + this.drawScaledButton( + var1, + var25, + var26, + var23, + var21, + "Add", + var20, + var12.mulAlpha(var15), + var10.mulAlpha(var15), + this.hover("add", var28) + ); + this.addRegion(var25, var26, var23, var21, 1, null); + boolean var29 = aqj.isHovered(var7, var8, var24, var26, var22, var21); + this.drawScaledButton( + var1, + var24, + var26, + var22, + var21, + "Microsoft", + var20, + MICROSOFT.mulAlpha(var5 * var15), + var10.mulAlpha(var15), + this.hover("microsoft", var29) + ); + this.addRegion(var24, var26, var22, var21, 2, null); + var3 += var17; + String var30 = cg.getMessage(); + long var31 = System.currentTimeMillis() - cg.getMessageAt(); + int var33 = var30 == null || !cg.isBusy() && var31 >= (4095010070372944277L | -4095010070372940277L) + (4095010070372944277L & -4095010070372940277L) + ? 0: 1; + if (var33 != 0) { + float var34 = Mth.clamp((float)var31 / pk.motion(ob.FAST), 0.0F, 1.0F); + float var35 = cg.isBusy() + ? 1.0F + : Mth.clamp( + (float)((862017909604227054L | -862017909604223054L) + (862017909604227054L & -862017909604223054L) - var31) / pk.motion(ob.SLOW), 0.0F, 1.0F + ); + float var36 = var5 * var34 * var35; + asu var37 = (cg.isMessageError() ? ERROR : ACTIVE).mulAlpha(var36); + var1.drawText(var9, var30, var2 + 2.0F + (1.0F - var34) * 4.0F, var3 + 4.0F, var37); + var3 += var9.height() + 6.0F; + } + + return var3 + 8.0F; + } + + private void drawScaledButton(asq var1, float var2, float var3, float var4, float var5, String var6, ge var7, asu var8, asu var9, float var10) { + float var11 = 1.0F + 0.05F * var10; + float var12 = var2 + var4 / 2.0F; + float var13 = var3 + var5 / 2.0F; + var1.pushMatrix(); + var1.pose().translate(var12, var13); + var1.pose().scale(var11, var11); + var1.pose().translate(-var12, -var13); + var1.drawRoundedRect(var2, var3, var4, var5, asj.all(oc.ROW), var8.mulAlpha(0.85F + 0.15F * var10)); + var1.drawText(var7, var6, var2 + (var4 - var7.width(var6)) / 2.0F, var3 + (var5 - var7.height()) / 2.0F, var9); + var1.popMatrix(); + } + + private float renderAccountRow( + asq var1, + float var2, + float var3, + float var4, + float var5, + mv var6, + float var7, + float var8, + co var9, + int var10, + ge var11, + ge var12, + asu var13, + asu var14, + asu var15, + asu var16 + ) { + float var17 = this.appear(var10); + float var18 = var3 + (1.0F - var17) * 10.0F; + float var19 = 26.0F; + boolean var20 = cg.isActive(var9); + int var21 = aqj.isHovered(var7, var8, var2, var18, var4, var19) && var8 >= this.viewTop - 2.0F && var8 <= this.viewBottom + 2.0F + ? 1: 0; + float var22 = this.hover( + var9, (boolean)(((var21 != 0 && !var20 ? 1: (-92206899 | 92206899) + (-92206899 & 92206899)) + ) != 0)); + if (var22 > 0.01F) { + atb.drawShadow(var1.pose(), var2, var18, var4, var19, 10.0F, asj.all(oc.CARD), var6.getColor().mulAlpha(0.3F * var22 * var5 * var17)); + } + + var1.drawSurface(aso.ROW, var2, var18, var4, var19, ROW_RADIUS(), var15.brighter(0.04F * var22).mulAlpha(var17)); + asu var23 = var20 ? ACTIVE.mulAlpha(0.6F * var5) : var16.mix(var6.getColor().mulAlpha(var5), 0.5F * var22); + atb.drawRoundedBorder(var1.pose(), var2, var18, var4, var19, pk.borderHairline(), asj.all(oc.CARD), var23.mulAlpha(var17)); + asu var24 = (var9.getType() == cn.MICROSOFT ? MICROSOFT : var6.getColor()).mulAlpha(var5 * var17); + this.drawAvatar(var1, var2 + 5.0F, var18 + 4.0F, var19 - 8.0F, var9.getName(), var24); + float var25 = var2 + 5.0F + (var19 - 8.0F) + 7.0F + var22 * 1.5F; + var1.drawText(var11, var9.getName(), var25, var18 + 5.0F, var13.mulAlpha(var17)); + String var26 = var9.getType() == cn.MICROSOFT + ? "Microsoft" + : "Offline"; + var1.drawText(var12, var26, var25, var18 + var19 - var12.height() - 5.0F, var14.mulAlpha(var17)); + if (var20) { + String var27 = "Active"; + double var28 = pk.motion(ob.DELIBERATE) * 4.0F; + float var30 = 0.8F + 0.2F * (float)Math.sin((Math.PI * 2) * cs.elapsedMillis() / var28); + float var31 = var2 + var4 - 8.0F - var12.width(var27); + var1.drawText(var12, var27, var31, var18 + (var19 - var12.height()) / 2.0F, ACTIVE.mulAlpha(var5 * var17 * var30)); + } else if (var21 != 0) { + float var32 = 11.0F; + float var33 = var2 + var4 - 8.0F - var32; + float var29 = var18 + (var19 - var32) / 2.0F; + boolean var34 = aqj.isHovered(var7, var8, var33, var29, var32, var32); + this.drawCross(var1, var33, var29, var32, (var34 ? ERROR : var6.getGray()).mulAlpha((0.5F + 0.4F * var22) * var5), var5); + this.addRegion(var33, var29, var32, var32, 3, var9); + this.addRegion(var2, var18, var4 - 8.0F - var32 - 4.0F, var19, 4, var9); + } + + return var3 + var19 + 5.0F; + } + + private void drawAvatar(asq var1, float var2, float var3, float var4, String var5, asu var6) { + ge var7 = null; + String var8 = null; + String var10 = null; + int var9 = 1095717397; + + while (true) { + switch (var9) { + case -1138267971: + var8 = var10; + var1.drawText(var7, var8, var2 + (var4 - var7.width(var8)) / 2.0F, var3 + (var4 - var7.height()) / 2.0F, var6); + return; + case -742803538: + var10 = "?"; + var9 = -1138267971; + break; + case 1095717397: + default: + var1.drawRoundedRect(var2, var3, var4, var4, asj.all(oc.ROW), var6.mulAlpha(0.25F)); + var7 = gl.SEMIBOLD.getFont(7.0F); + if (var5.isEmpty()) { + var9 = -742803538; + } else { + var9 = 1759220407; + } + break; + case 1759220407: + var10 = var5.substring(0, (296856948 | -296856947) + (296856948 & -296856947)) + .toUpperCase(); + var9 = -1138267971; + } + } + } + + private void drawCross(asq var1, float var2, float var3, float var4, asu var5, float var6) { + var1.drawRoundedRect(var2, var3, var4, var4, asj.pill(var4), var5); + asu var7 = asu.WHITE.mulAlpha(var6); + float var8 = var2 + var4 / 2.0F; + float var9 = var3 + var4 / 2.0F; + float var10 = 1.2F; + float var11 = var4 * 0.24F; + var1.pushMatrix(); + var1.pose().translate(var8, var9); + var1.pose().rotate((float)Math.toRadians(45.0)); + var1.drawRoundedRect(-var11, -var10 / 2.0F, var11 * 2.0F, var10, asj.pill(var10), var7); + var1.drawRoundedRect(-var10 / 2.0F, -var11, var10, var11 * 2.0F, asj.pill(var10), var7); + var1.popMatrix(); + } + + private void submit() { + String var1 = null; + int var2 = 1609157378; + + while (true) { + switch (var2) { + case 338394069: + return; + case 877455000: + cg.addOffline(var1); + this.inputField().setText(""); + return; + case 1609157378: + } + + var1 = this.inputField().getText().trim(); + if (var1.isEmpty()) { + var2 = 338394069; + } else { + var2 = 877455000; + } + } + } + + public boolean handleMouseClicked(double var1, double var3, apf var5) { + int var6 = 0; + int var7 = 0; + int var9 = 0; + int var8 = -733776951; + + while (true) { + switch (var8) { + case -1969720334: + return (boolean)(((1)) != 0); + case -1377884816: + if (var3 <= this.viewBottom + 2.0F) { + var8 = 1697941753; + } else { + var8 = -598233492; + } + break; + case -1058098157: + if (var3 > this.viewBottom + 2.0F) { + var8 = 1275812350; + } else { + var8 = 1001372244; + } + break; + case -810523987: + return this.inputField().isSelected(); + case -733776951: + default: + if (var5.getButtonIndex() == 0) { + var8 = 418363782; + } else { + var8 = 1375954186; + } + break; + case -598233492: + var9 = 0; + var8 = 1367730120; + break; + case -361666740: + this.runRegion(this.regionActions[var6], this.regionPayloads[var6]); + if (bz.getInstance().getSoundManager() != null) { + var8 = 953322209; + } else { + var8 = -1969720334; + } + break; + case -330324322: + var7 = var6 * (4); + if (!aqj.isHovered( + var1, + var3, + this.regionBounds[var7], + this.regionBounds[var7 + 1], + this.regionBounds[var7 + 2], + this.regionBounds[var7 + 3] + )) { + var8 = 1109718835; + } else { + var8 = -361666740; + } + break; + case 418363782: + if (this.fieldBoundsValid) { + var8 = 610371698; + } else { + var8 = -598233492; + } + break; + case 439049667: + if (var3 >= this.viewTop - 2.0F) { + var8 = -1377884816; + } else { + var8 = -598233492; + } + break; + case 610371698: + if (aqj.isHovered(var1, var3, this.fieldX, this.fieldY, this.fieldWidth, this.fieldHeight)) { + var8 = 439049667; + } else { + var8 = -598233492; + } + break; + case 953322209: + bz.getInstance().getSoundManager().playClick(); + var8 = -1969720334; + break; + case 1001372244: + var6 = 0; + var8 = 2080425462; + break; + case 1109718835: + var8 = 1852579919; + break; + case 1275812350: + return this.inputField().isSelected(); + case 1367730120: + var6 = var9; + this.inputField().setSelected((boolean)((var6) != 0)); + if (var6 != 0) { + var8 = 1950241313; + } else { + var8 = 1375954186; + } + break; + case 1375954186: + if (!(var3 < this.viewTop - 2.0F)) { + var8 = -1058098157; + } else { + var8 = 1275812350; + } + break; + case 1697941753: + var9 = 1; + var8 = 1367730120; + break; + case 1852579919: + var6++; + var8 = 2080425462; + break; + case 1950241313: + this.inputField().setSelectAll((boolean)((((1518651720 | -1518651720) + (1518651720 & -1518651720))) != 0)); + var8 = 1375954186; + break; + case 2080425462: + if (var6 < this.regionCount) { + var8 = -330324322; + } else { + var8 = -810523987; + } + } + } + } + + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = -1308432496; + + while (true) { + switch (var4) { + case -1308432496: + default: + if (!this.inputField().isSelected()) { + var4 = 1095964146; + } else { + var4 = -17540817; + } + break; + case -17540817: + if (var1 != (137192510 | -137192253) + (137192510 & -137192253)) { + var4 = 1474965861; + } else { + var4 = 17176373; + } + break; + case 17176373: + this.submit(); + return (boolean)(((1)) != 0); + case 441380416: + this.inputField().setSelected((boolean)((((42185642 ^ -42185642) + ((42185642 & -42185642) << 1))) != 0)); + return (boolean)(((1)) != 0); + case 615866719: + if (var1 == (-1628108702 | 1628108958) + (-1628108702 & 1628108958)) { + var4 = 441380416; + } else { + var4 = 1666892745; + } + break; + case 1095964146: + return (boolean)(((0)) != 0); + case 1474965861: + if (var1 == (-797555392 ^ 797555727) + ((-797555392 & 797555727) << 1)) { + var4 = 17176373; + } else { + var4 = 615866719; + } + break; + case 1666892745: + return this.inputField().keyPressed(var1, var2, var3); + } + } + } + + public boolean charTyped(char var1, int var2) { + int var3 = -1053359086; + + while (true) { + switch (var3) { + case -1053359086: + default: + if (!this.inputField().isSelected()) { + var3 = 1272261217; + } else { + var3 = 166711194; + } + break; + case 166711194: + return this.inputField().charTyped(var1, var2); + case 1272261217: + return (boolean)(((0)) != 0); + } + } + } + + public void onClosed() { + this.inputField().setSelected((boolean)((((-573241398 | 573241398) + (-573241398 & 573241398))) != 0)); + } +} diff --git a/src/main/java/defpackage/cg.java b/src/main/java/defpackage/cg.java new file mode 100644 index 0000000..4ea81d0 --- /dev/null +++ b/src/main/java/defpackage/cg.java @@ -0,0 +1,676 @@ +package defpackage; + +import com.mojang.authlib.minecraft.UserApiService; +import com.mojang.authlib.minecraft.UserApiService.UserProperties; +import com.mojang.authlib.yggdrasil.ProfileResult; +import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService; +import java.net.URI; +import java.util.Iterator; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import net.minecraft.client.Minecraft; +import net.minecraft.client.User; +import net.minecraft.client.gui.screens.social.PlayerSocialManager; +import net.minecraft.client.multiplayer.ProfileKeyPairManager; +import net.minecraft.client.multiplayer.chat.report.ReportEnvironment; +import net.minecraft.client.multiplayer.chat.report.ReportingContext; +import net.minecraft.client.telemetry.ClientTelemetryManager; +import net.minecraft.server.Services; +import net.minecraft.util.Util; + +public final class cg { + private static final ExecutorService EXECUTOR = Executors.newSingleThreadExecutor(var0 -> { + Thread var1 = new Thread(var0, "evo-accounts"); + var1.setDaemon((boolean)((((-1756783548 | 1756783549) + (-1756783548 & 1756783549))) != 0)); + return var1; + }); + private static final List accounts = new CopyOnWriteArrayList<>(); + private static volatile boolean loaded; + private static volatile long loadFirstTriedAt; + private static volatile boolean busy; + private static volatile String message; + private static volatile boolean messageError; + private static volatile long messageAt; + private static volatile cm authServer; + + private cg() { + } + + public static List all() { + ensureLoaded(); + return accounts; + } + + private static synchronized void ensureLoaded() { + int var0 = 1309593741; + + while (true) { + switch (var0) { + case -2096396645: + if (air.get() == null) { + var0 = 1421235363; + } else { + var0 = 1261446144; + } + break; + case -1152673467: + loadFirstTriedAt = System.currentTimeMillis(); + var0 = 1996952029; + break; + case -733402891: + return; + case -163092567: + loaded = (boolean)(((1)) != 0); + return; + case 1261446144: + accounts.clear(); + accounts.addAll(ch.load()); + loaded = (boolean)(((1)) != 0); + return; + case 1309593741: + default: + if (loaded) { + var0 = 1609087400; + } else { + var0 = 1621039847; + } + break; + case 1421235363: + air.computeAsync(); + if (loadFirstTriedAt == (3458713180785575884L | -3458713180785575884L) + (3458713180785575884L & -3458713180785575884L)) { + var0 = -1152673467; + } else { + var0 = 1996952029; + } + break; + case 1609087400: + return; + case 1621039847: + if (!ch.fileExists()) { + var0 = -163092567; + } else { + var0 = -2096396645; + } + break; + case 1996952029: + if (System.currentTimeMillis() - loadFirstTriedAt + < (-2070054649006718053L ^ 2070054649006723053L) + ((-2070054649006718053L & 2070054649006723053L) << 1)) { + var0 = -733402891; + } else { + var0 = 1261446144; + } + } + } + } + + public static String currentName() { + return Minecraft.getInstance().getUser().getName(); + } + + public static boolean isActive(co var0) { + return var0.getName().equals(currentName()); + } + + public static void addOffline(String var0) { + String var1 = null; + Iterator var2 = null; + co var3 = null; + int var4 = 990457228; + + while (true) { + switch (var4) { + case -1379116818: + if (var1.length() <= (-384230650 ^ 384230666) + ((-384230650 & 384230666) << 1)) { + var4 = 1627889579; + } else { + var4 = 1324167955; + } + break; + case -1233636963: + var2 = accounts.iterator(); + var4 = 789967429; + break; + case -321074232: + var4 = 789967429; + break; + case -194688407: + accounts.add(co.offline(var1)); + ch.save(accounts); + post("Added " + var1, (boolean)((((1494807791 | -1494807791) + (1494807791 & -1494807791))) != 0)); + return; + case 765026410: + post( + "This account is already added", + (boolean)((((-643190526 | 643190527) + (-643190526 & 643190527)) + ) != 0)); + return; + case 789967429: + if (var2.hasNext()) { + var4 = 1228016093; + } else { + var4 = -194688407; + } + break; + case 990457228: + default: + ensureLoaded(); + var1 = var0.trim(); + if (!var1.isEmpty()) { + var4 = -1379116818; + } else { + var4 = 1324167955; + } + break; + case 1228016093: + var3 = (co)var2.next(); + if (var3.getType() == cn.OFFLINE) { + var4 = 2076606696; + } else { + var4 = -321074232; + } + break; + case 1324167955: + post( + "Nickname must be 1-16 letters, digits or _", + (boolean)((((1639846324 ^ -1639846323) + ((1639846324 & -1639846323) << 1)) + ) != 0)); + return; + case 1627889579: + if (!var1.matches("[A-Za-z0-9_]+")) { + var4 = 1324167955; + } else { + var4 = -1233636963; + } + break; + case 2076606696: + if (var3.getName().equalsIgnoreCase(var1)) { + var4 = 765026410; + } else { + var4 = -321074232; + } + } + } + } + + public static void remove(co var0) { + ensureLoaded(); + accounts.remove(var0); + ch.save(accounts); + } + + public static void beginMicrosoft() { + int var0 = -625159184; + + while (true) { + switch (var0) { + case -625159184: + default: + if (busy) { + var0 = -624678737; + } else { + var0 = 1347127466; + } + break; + case -624678737: + return; + case 1347127466: + busy = (boolean)(((1)) != 0); + post( + "Opening the browser...", + (boolean)((((66397349 | -66397349) + (66397349 & -66397349)) + ) != 0)); + EXECUTOR.submit( + () -> { + closeAuthServer(); + + try { + cm var0x = new cm(var0xx -> EXECUTOR.submit(() -> completeMicrosoft(var0xx)), var0xx -> { + post(var0xx, (boolean)((((-1910161466 ^ 1910161467) + ((-1910161466 & 1910161467) << 1))) != 0)); + busy = (boolean)(((0)) != 0); + closeAuthServer(); + }); + authServer = var0x; + var0x.start(); + Util.getPlatform().openUri(URI.create(var0x.authUrl())); + post( + "Waiting for the sign-in in your browser...", + (boolean)((((750691335 ^ -750691335) + ((750691335 & -750691335) << 1)) + ) != 0)); + } catch (Exception var1) { + post(friendly(var1), (boolean)((((-1740584364 ^ 1740584365) + ((-1740584364 & 1740584365) << 1))) != 0)); + busy = (boolean)(((0)) != 0); + closeAuthServer(); + } + } + ); + return; + } + } + } + + // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow. + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static void completeMicrosoft(String var0) { + boolean var13 = false /* VF: Semaphore variable */; + + label82: { + label83: { + try { + var13 = true; + cm var1 = authServer; + if (var1 == null) { + var13 = false; + break label82; + } + + post( + "Signing in to Xbox Live...", + (boolean)((((1592142348 ^ -1592142348) + ((1592142348 & -1592142348) << 1)) + ) != 0)); + cj var2 = cl.codeToTokens(var0, var1.redirectUri()); + ck var3 = cl.msaToXbl(var2.access()); + ck var4 = cl.xblToXsts(var3); + post( + "Signing in to Minecraft...", + (boolean)((((-610186070 ^ 610186070) + ((-610186070 & 610186070) << 1)) + ) != 0)); + String var5 = cl.xstsToMinecraftToken(var4); + ci var6 = cl.fetchProfile(var5); + ensureLoaded(); + co var7 = null; + + for (co var9 : accounts) { + if (var9.getType() == cn.MICROSOFT && var6.uuid().equals(var9.getUuid())) { + var7 = var9; + break; + } + } + + if (var7 == null) { + var7 = new co(cn.MICROSOFT, var6.name(), var6.uuid(), var5, var2.refresh()); + accounts.add(var7); + } else { + var7.setName(var6.name()); + var7.setAccessToken(var5); + var7.setRefreshToken(var2.refresh()); + } + + ch.save(accounts); + post("Added " + var6.name(), (boolean)((((-202326324 ^ 202326324) + ((-202326324 & 202326324) << 1))) != 0)); + var13 = false; + break label83; + } catch (Exception var14) { + post(friendly(var14), (boolean)((((419857426 ^ -419857425) + ((419857426 & -419857425) << 1))) != 0)); + var13 = false; + } finally { + if (var13) { + busy = (boolean)(((0)) != 0); + closeAuthServer(); + } + } + + busy = (boolean)(((0)) != 0); + closeAuthServer(); + return; + } + + busy = (boolean)(((0)) != 0); + closeAuthServer(); + return; + } + + busy = (boolean)(((0)) != 0); + closeAuthServer(); + } + + public static void login(co var0) { + Minecraft var1 = null; + int var2 = 1308582646; + + while (true) { + switch (var2) { + case -1176438062: + post( + "This account is already active", + (boolean)((((-131525509 ^ 131525510) + ((-131525509 & 131525510) << 1)) + ) != 0)); + return; + case -472608445: + busy = (boolean)(((1)) != 0); + EXECUTOR.submit( + () -> { + boolean var11 = false /* VF: Semaphore variable */; + + label73: { + label80: { + label81: { + try { + var11 = true; + if (var0.getType() == cn.OFFLINE) { + applySession( + var0.getName(), + var0.getUuid(), + "evo:offline", + (boolean)((((222260604 | -222260604) + (222260604 & -222260604)) + ) != 0)); + post("Switched to " + var0.getName(), (boolean)((((1132805146 | -1132805146) + (1132805146 & -1132805146))) != 0)); + var11 = false; + break label73; + } + + if (!var0.hasTokens()) { + post( + "Sign-in data is missing, re-add this account", + (boolean)((((1877056766 ^ -1877056765) + ((1877056766 & -1877056765) << 1)) + ) != 0)); + var11 = false; + break label80; + } + + post( + "Checking the session...", + (boolean)((((-1549648170 | 1549648170) + (-1549648170 & 1549648170)) + ) != 0)); + String var1x = var0.getAccessToken(); + + ci var2x; + try { + var2x = cl.fetchProfile(var1x); + } catch (Exception var12) { + post( + "Refreshing the session...", + (boolean)((((1491242572 | -1491242572) + (1491242572 & -1491242572)) + ) != 0)); + cj var4 = cl.refreshTokens(var0.getRefreshToken()); + ck var5 = cl.msaToXbl(var4.access()); + ck var6 = cl.xblToXsts(var5); + var1x = cl.xstsToMinecraftToken(var6); + var0.setAccessToken(var1x); + var0.setRefreshToken(var4.refresh()); + var2x = cl.fetchProfile(var1x); + } + + var0.setName(var2x.name()); + var0.setUuid(var2x.uuid()); + ch.save(accounts); + applySession(var2x.name(), var2x.uuid(), var1x, (boolean)((((446444256 ^ -446444255) + ((446444256 & -446444255) << 1))) != 0)); + post("Switched to " + var2x.name(), (boolean)((((-158852849 | 158852849) + (-158852849 & 158852849))) != 0)); + var11 = false; + break label81; + } catch (Exception var13) { + post(friendly(var13), (boolean)((((-1728811648 ^ 1728811649) + ((-1728811648 & 1728811649) << 1))) != 0)); + var11 = false; + } finally { + if (var11) { + busy = (boolean)(((0)) != 0); + } + } + + busy = (boolean)(((0)) != 0); + return; + } + + busy = (boolean)(((0)) != 0); + return; + } + + busy = (boolean)(((0)) != 0); + return; + } + + busy = (boolean)(((0)) != 0); + } + ); + return; + case -156317054: + post( + "Leave the world to switch accounts", + (boolean)((((1635828214 ^ -1635828213) + ((1635828214 & -1635828213) << 1)) + ) != 0)); + return; + case 611450826: + if (isActive(var0)) { + var2 = -1176438062; + } else { + var2 = -472608445; + } + break; + case 1308582646: + default: + if (busy) { + var2 = 2009509874; + } else { + var2 = 1358707549; + } + break; + case 1358707549: + var1 = Minecraft.getInstance(); + if (inWorld(var1)) { + var2 = -156317054; + } else { + var2 = 611450826; + } + break; + case 2009509874: + return; + } + } + } + + private static void applySession(String var0, UUID var1, String var2, boolean var3) { + Minecraft var4 = Minecraft.getInstance(); + User var5 = new User(var0, var1, var2, Optional.empty(), Optional.empty()); + YggdrasilAuthenticationService var6 = var3 + ? new YggdrasilAuthenticationService(var4.getProxy()) + : YggdrasilAuthenticationService.createOffline(var4.getProxy()); + Services var7 = Services.create(var6, var4.gameDirectory); + ProfileResult var8 = var3 ? var7.sessionService().fetchProfile(var1, (boolean)((((496051242 | -496051241) + (496051242 & -496051241))) != 0)) : null; + + UserApiService var9; + try { + var9 = var3 ? var6.createUserApiService(var2) : UserApiService.OFFLINE; + } catch (Exception var18) { + var9 = UserApiService.OFFLINE; + } + + UserProperties var10; + try { + var10 = var9.fetchProperties(); + } catch (Throwable var17) { + var10 = UserApiService.OFFLINE_PROPERTIES; + } + + UserApiService var11 = var9; + UserProperties var12 = var10; + PlayerSocialManager var13 = new PlayerSocialManager( + var4, var11, var4.getPlayerSocialManager().friendsService, var4.getPlayerSocialManager().remoteFriendListUpdateHandler + ); + ClientTelemetryManager var14 = new ClientTelemetryManager(var4, var11, var5); + ProfileKeyPairManager var15 = ProfileKeyPairManager.create(var11, var5, var4.gameDirectory.toPath()); + ReportingContext var16 = ReportingContext.create(ReportEnvironment.local(), var11); + var4.execute( + () -> { + b.i var10x = null; + int var11x = -1985887452; + + while (true) { + switch (var11x) { + case -1985887452: + default: + if (inWorld(var4)) { + var11x = -1336235297; + } else { + var11x = -1373185964; + } + break; + case -1373185964: + var10x = (b.i)var4; + var10x.setApiServices(var7); + var10x.setSession(var5); + var10x.setGameProfileFuture(CompletableFuture.completedFuture(var8)); + var10x.setUserApiService(var11); + var10x.setUserPropertiesFuture(CompletableFuture.completedFuture(var12)); + var10x.setSocialInteractionsManager(var13); + var10x.setTelemetryManager(var14); + var10x.setProfileKeys(var15); + var10x.setAbuseReportContext(var16); + var4.updateTitle(); + return; + case -1336235297: + post( + "Leave the world to switch accounts", + (boolean)((((85223954 | -85223953) + (85223954 & -85223953)) + ) != 0)); + return; + } + } + } + ); + } + + private static boolean inWorld(Minecraft var0) { + int var2 = 0; + int var1 = -764593314; + + while (true) { + switch (var1) { + case -1871484367: + return (boolean)((var2) != 0); + case -1640690487: + if (var0.getSingleplayerServer() != null) { + var1 = -1532997131; + } else { + var1 = -1230348032; + } + break; + case -1532997131: + var2 = 1; + var1 = -1871484367; + break; + case -1230348032: + var2 = 0; + var1 = -1871484367; + break; + case -764593314: + default: + if (var0.level == null) { + var1 = 232101188; + } else { + var1 = -1532997131; + } + break; + case -294983196: + if (var0.getConnection() == null) { + var1 = -1640690487; + } else { + var1 = -1532997131; + } + break; + case 232101188: + if (var0.player == null) { + var1 = -294983196; + } else { + var1 = -1532997131; + } + } + } + } + + private static void closeAuthServer() { + cm var0 = null; + int var1 = -882365351; + + while (true) { + switch (var1) { + case -1902121013: + var0.close(); + var1 = 823890874; + break; + case -882365351: + default: + var0 = authServer; + authServer = null; + if (var0 != null) { + var1 = -1902121013; + } else { + var1 = 823890874; + } + break; + case 823890874: + return; + } + } + } + + private static String friendly(Exception var0) { + String var1 = null; + String var3 = null; + int var2 = 868646320; + + while (true) { + switch (var2) { + case -1619921045: + if (var1.length() > (-143760511 | 143760631) + (-143760511 & 143760631)) { + var2 = -106211538; + } else { + var2 = 309847919; + } + break; + case -1435159842: + return "Sign-in failed"; + case -1335390508: + return var3; + case -106211538: + var3 = var1.substring(0, (-558076839 | 558076959) + (-558076839 & 558076959)); + var2 = -1335390508; + break; + case 309847919: + var3 = var1; + var2 = -1335390508; + break; + case 868646320: + default: + var1 = var0.getMessage(); + if (var1 != null) { + var2 = 1871159477; + } else { + var2 = -1435159842; + } + break; + case 1871159477: + if (var1.isBlank()) { + var2 = -1435159842; + } else { + var2 = -1619921045; + } + } + } + } + + private static void post(String var0, boolean var1) { + message = var0; + messageError = var1; + messageAt = System.currentTimeMillis(); + } + + public static boolean isBusy() { + return busy; + } + + public static String getMessage() { + return message; + } + + public static boolean isMessageError() { + return messageError; + } + + public static long getMessageAt() { + return messageAt; + } +} diff --git a/src/main/java/defpackage/ch.java b/src/main/java/defpackage/ch.java new file mode 100644 index 0000000..a9237f7 --- /dev/null +++ b/src/main/java/defpackage/ch.java @@ -0,0 +1,189 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.security.MessageDigest; +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; +import java.util.UUID; +import javax.crypto.Cipher; +import javax.crypto.spec.GCMParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import net.fabricmc.loader.api.FabricLoader; + +public final class ch { + private static final int GCM_IV_LENGTH = 12; + private static final int GCM_TAG_BITS = 128; + + private ch() { + } + + private static Path path() { + return FabricLoader.getInstance() + .getGameDir() + .resolve("evolution") + .resolve("accounts.json"); + } + + public static boolean fileExists() { + return Files.isRegularFile(path()); + } + + public static List load() { + ArrayList var0 = new ArrayList(); + + try { + Path var1 = path(); + if (!Files.isRegularFile(var1)) { + return var0; + } + + JsonObject var2 = JsonParser.parseString(Files.readString(var1)).getAsJsonObject(); + if (!var2.has("accounts")) { + return var0; + } + + for (JsonElement var4 : var2.getAsJsonArray("accounts")) { + co var5 = readAccount(var4.getAsJsonObject()); + if (var5 != null) { + var0.add(var5); + } + } + } catch (Exception var6) { + } + + return var0; + } + + private static co readAccount(JsonObject var0) { + try { + cn var1 = cn.valueOf(var0.get("type").getAsString()); + String var2 = var0.get("name").getAsString(); + if (var1 == cn.OFFLINE) { + return co.offline(var2); + } + + UUID var3 = UUID.fromString(var0.get("uuid").getAsString()); + String var4 = var0.has("access") + ? decrypt(var0.get("access").getAsString()) + : null; + String var5 = var0.has("refresh") + ? decrypt(var0.get("refresh").getAsString()) + : null; + return new co(var1, var2, var3, var4, var5); + } catch (Exception var6) { + return null; + } + } + + public static void save(List var0) { + try { + Path var1 = path(); + Files.createDirectories(var1.getParent()); + JsonArray var2 = new JsonArray(); + + for (co var4 : var0) { + JsonObject var5 = new JsonObject(); + var5.addProperty("type", var4.getType().name()); + var5.addProperty("name", var4.getName()); + if (var4.getType() == cn.MICROSOFT) { + var5.addProperty("uuid", var4.getUuid().toString()); + if (var4.getAccessToken() != null) { + var5.addProperty("access", encrypt(var4.getAccessToken())); + } + + if (var4.getRefreshToken() != null) { + var5.addProperty("refresh", encrypt(var4.getRefreshToken())); + } + } + + var2.add(var5); + } + + JsonObject var7 = new JsonObject(); + var7.add("accounts", var2); + Files.writeString(var1, var7.toString()); + } catch (Exception var6) { + } + } + + private static SecretKeySpec key() throws Exception { + String var0 = null; + byte[] var1 = null; + int var2 = 666910929; + + while (true) { + switch (var2) { + case -882226422: + if (var0.isBlank()) { + var2 = 2133697409; + } else { + var2 = 1224328547; + } + break; + case 666910929: + default: + var0 = air.get(); + if (var0 != null) { + var2 = -882226422; + } else { + var2 = 2133697409; + } + break; + case 1224328547: + var1 = MessageDigest.getInstance("SHA-256") + .digest(("evovis-accounts|" + var0).getBytes(StandardCharsets.UTF_8)); + return new SecretKeySpec(var1, "AES"); + case 2133697409: + var0 = "evovis-accounts-fallback"; + var2 = 1224328547; + } + } + } + + private static String encrypt(String var0) throws Exception { + byte[] var1 = new byte[12]; + new SecureRandom().nextBytes(var1); + Cipher var2 = Cipher.getInstance("AES/GCM/NoPadding"); + var2.init( + 1, key(), new GCMParameterSpec(128, var1) + ); + byte[] var3 = var2.doFinal(var0.getBytes(StandardCharsets.UTF_8)); + byte[] var4 = new byte[var1.length + var3.length]; + System.arraycopy( + var1, 0, var4, 0, var1.length + ); + System.arraycopy(var3, 0, var4, var1.length, var3.length); + return Base64.getEncoder().encodeToString(var4); + } + + private static String decrypt(String var0) { + try { + byte[] var1 = Base64.getDecoder().decode(var0); + Cipher var2 = Cipher.getInstance("AES/GCM/NoPadding"); + var2.init( + 2, + key(), + new GCMParameterSpec( + 128, + var1, + 0, + (-76473147 | 76473159) + (-76473147 & 76473159) + ) + ); + byte[] var3 = var2.doFinal( + var1, 12, var1.length - ((1754460351 | -1754460339) + (1754460351 & -1754460339)) + ); + return new String(var3, StandardCharsets.UTF_8); + } catch (Exception var4) { + return null; + } + } +} diff --git a/src/main/java/defpackage/ci.java b/src/main/java/defpackage/ci.java new file mode 100644 index 0000000..cb08eda --- /dev/null +++ b/src/main/java/defpackage/ci.java @@ -0,0 +1,6 @@ +package defpackage; + +import java.util.UUID; + +public record ci(UUID uuid, String name) { +} diff --git a/src/main/java/defpackage/cj.java b/src/main/java/defpackage/cj.java new file mode 100644 index 0000000..a0c7b45 --- /dev/null +++ b/src/main/java/defpackage/cj.java @@ -0,0 +1,4 @@ +package defpackage; + +public record cj(String access, String refresh) { +} diff --git a/src/main/java/defpackage/ck.java b/src/main/java/defpackage/ck.java new file mode 100644 index 0000000..397d902 --- /dev/null +++ b/src/main/java/defpackage/ck.java @@ -0,0 +1,4 @@ +package defpackage; + +public record ck(String token, String hash) { +} diff --git a/src/main/java/defpackage/cl.java b/src/main/java/defpackage/cl.java new file mode 100644 index 0000000..ef7a734 --- /dev/null +++ b/src/main/java/defpackage/cl.java @@ -0,0 +1,360 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.net.URI; +import java.net.URLEncoder; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.HttpClient.Redirect; +import java.net.http.HttpRequest.BodyPublishers; +import java.net.http.HttpRequest.Builder; +import java.net.http.HttpResponse.BodyHandlers; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.UUID; + +public final class cl { + static final String CLIENT_ID = "54fd49e4-2103-4044-9603-2b028c814ec3"; + private static final String SCOPE = "XboxLive.signin%20XboxLive.offline_access"; + private static final int ERROR_DETAIL_LIMIT = 90; + static final String REDIRECT_PATH = "/in_game_account_switcher_long_enough_uri_to_prevent_accidental_leaks_on_screensharing_even_if_you_have_like_extremely_big_screen_though_it_might_not_mork_but_we_will_try_it_anyway_to_prevent_funny_things_from_happening_or_something"; + private static final String TOKEN_ERROR_TEMPLATE = "microsoft auth rejected the request: {} {}"; + private static final Duration TIMEOUT = Duration.ofSeconds((7455482011445548360L | -7455482011445548345L) + (7455482011445548360L & -7455482011445548345L)); + private static final HttpClient HTTP = HttpClient.newBuilder().connectTimeout(TIMEOUT).followRedirects(Redirect.NEVER).build(); + + private cl() { + } + + static String authUrl(String var0, String var1) { + return "https://login.live.com/oauth20_authorize.srf?client_id=54fd49e4-2103-4044-9603-2b028c814ec3&response_type=code&scope=XboxLive.signin%20XboxLive.offline_access&redirect_uri=" + + encode(var0) + + "&prompt=select_account&state=" + + var1; + } + + static String redirectUri(int var0) { + return "http://localhost:" + + var0 + + "/in_game_account_switcher_long_enough_uri_to_prevent_accidental_leaks_on_screensharing_even_if_you_have_like_extremely_big_screen_though_it_might_not_mork_but_we_will_try_it_anyway_to_prevent_funny_things_from_happening_or_something"; + } + + public static cj codeToTokens(String var0, String var1) { + String var2 = "client_id=54fd49e4-2103-4044-9603-2b028c814ec3&code=" + + encode(var0) + + "&grant_type=authorization_code&redirect_uri=" + + encode(var1) + + "&scope=XboxLive.signin%20XboxLive.offline_access"; + JsonObject var3 = postForm( + "https://login.live.com/oauth20_token.srf", + var2, + "Microsoft rejected the login code" + ); + return new cj( + var3.get("access_token").getAsString(), + var3.get("refresh_token").getAsString() + ); + } + + public static cj refreshTokens(String var0) { + String var1 = "client_id=54fd49e4-2103-4044-9603-2b028c814ec3&refresh_token=" + + encode(var0) + + "&grant_type=refresh_token&scope=XboxLive.signin%20XboxLive.offline_access"; + JsonObject var2 = postForm( + "https://login.live.com/oauth20_token.srf", + var1, + "Microsoft token expired, re-add the account" + ); + return new cj( + var2.get("access_token").getAsString(), + var2.get("refresh_token").getAsString() + ); + } + + public static ck msaToXbl(String var0) { + JsonObject var1 = new JsonObject(); + var1.addProperty( + "AuthMethod", + "RPS" + ); + var1.addProperty( + "SiteName", + "user.auth.xboxlive.com" + ); + var1.addProperty("RpsTicket", "d=" + var0); + JsonObject var2 = new JsonObject(); + var2.add("Properties", var1); + var2.addProperty( + "RelyingParty", + "http://auth.xboxlive.com" + ); + var2.addProperty( + "TokenType", + "JWT" + ); + JsonObject var3 = postJson( + "https://user.auth.xboxlive.com/user/authenticate", + var2.toString(), + "Xbox Live sign-in failed" + ); + return xboxToken(var3); + } + + public static ck xblToXsts(ck var0) { + JsonObject var1 = null; + JsonArray var2 = null; + JsonObject var3 = null; + HttpResponse var4 = null; + JsonObject var5 = null; + int var6 = 1090666195; + + while (true) { + switch (var6) { + case -960505470: + var5 = expectOk( + var4, "XSTS authorization failed" + ); + return xboxToken(var5); + case 1049870687: + throw new IllegalStateException(xstsError((String)var4.body())); + case 1090666195: + } + + var1 = new JsonObject(); + var2 = new JsonArray(); + var2.add(var0.token()); + var1.add("UserTokens", var2); + var1.addProperty( + "SandboxId", + "RETAIL" + ); + var3 = new JsonObject(); + var3.add("Properties", var1); + var3.addProperty( + "RelyingParty", + "rp://api.minecraftservices.com/" + ); + var3.addProperty( + "TokenType", + "JWT" + ); + var4 = send( + builder( + "https://xsts.auth.xboxlive.com/xsts/authorize" + ) + .header( + "Content-Type", + "application/json" + ) + .POST(BodyPublishers.ofString(var3.toString())) + ); + if (var4.statusCode() == (816103251 | -816102850) + (816103251 & -816102850)) { + var6 = 1049870687; + } else { + var6 = -960505470; + } + } + } + + private static String xstsError(String var0) { + try { + long var1 = JsonParser.parseString(var0).getAsJsonObject().get("XErr").getAsLong(); + if (var1 == (516848812672841390L | -516848810523925157L) + (516848812672841390L & -516848810523925157L)) { + return "This Microsoft account has no Xbox profile"; + } else if (var1 == (3829158154280359784L | -3829158152131443549L) + (3829158154280359784L & -3829158152131443549L)) { + return "Xbox Live is not available in your region"; + } else { + return var1 != (2583971415121134818L ^ -2583971412972218582L) + ((2583971415121134818L & -2583971412972218582L) << 1) + && var1 != (-5461366476851512438L | 5461366479000428675L) + (-5461366476851512438L & 5461366479000428675L) + && var1 != (6820254752108741781L | -6820254749959825543L) + (6820254752108741781L & -6820254749959825543L) + ? "Xbox denied the sign-in (XErr " + var1 + ")" + : "This account is a child account and can't sign in"; + } + } catch (Exception var3) { + return "Xbox denied the sign-in"; + } + } + + public static String xstsToMinecraftToken(ck var0) { + JsonObject var1 = new JsonObject(); + var1.addProperty( + "identityToken", "XBL3.0 x=" + var0.hash() + ";" + var0.token() + ); + JsonObject var2 = postJson( + "https://api.minecraftservices.com/authentication/login_with_xbox", + var1.toString(), + "Minecraft services sign-in failed" + ); + return var2.get("access_token").getAsString(); + } + + public static ci fetchProfile(String var0) { + HttpResponse var1 = null; + JsonObject var2 = null; + String var3 = null; + int var4 = 1666668958; + + while (true) { + switch (var4) { + case -2132014647: + throw new IllegalStateException( + "This account doesn't own Minecraft" + ); + case 452142969: + var2 = expectOk( + var1, + "Couldn't fetch the Minecraft profile" + ); + var3 = var2.get("id").getAsString(); + return new ci(undashedUuid(var3), var2.get("name").getAsString()); + case 1666668958: + } + + var1 = send( + builder( + "https://api.minecraftservices.com/minecraft/profile" + ) + .header("Authorization", "Bearer " + var0) + .GET() + ); + if (var1.statusCode() == (-643668269 ^ 643668673) + ((-643668269 & 643668673) << 1)) { + var4 = -2132014647; + } else { + var4 = 452142969; + } + } + } + + private static UUID undashedUuid(String var0) { + return UUID.fromString( + var0.replaceFirst( + "(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})", + "$1-$2-$3-$4-$5" + ) + ); + } + + private static ck xboxToken(JsonObject var0) { + String var1 = var0.get("Token").getAsString(); + String var2 = var0.getAsJsonObject("DisplayClaims") + .getAsJsonArray("xui") + .get((-1588662179 ^ 1588662179) + ((-1588662179 & 1588662179) << 1)) + .getAsJsonObject() + .get("uhs") + .getAsString(); + return new ck(var1, var2); + } + + private static JsonObject postForm(String var0, String var1, String var2) { + return expectOk( + send( + builder(var0) + .header( + "Content-Type", + "application/x-www-form-urlencoded" + ) + .POST(BodyPublishers.ofString(var1)) + ), + var2 + ); + } + + private static JsonObject postJson(String var0, String var1, String var2) { + return expectOk( + send( + builder(var0) + .header( + "Content-Type", + "application/json" + ) + .POST(BodyPublishers.ofString(var1)) + ), + var2 + ); + } + + private static Builder builder(String var0) { + return HttpRequest.newBuilder(URI.create(var0)) + .header( + "Accept", + "application/json" + ) + .header( + "User-Agent", + "EvolutionDLC" + ) + .timeout(TIMEOUT); + } + + private static HttpResponse send(Builder var0) { + try { + return HTTP.send(var0.build(), BodyHandlers.ofString()); + } catch (Exception var2) { + throw new IllegalStateException( + "Couldn't reach the auth servers", var2 + ); + } + } + + private static JsonObject expectOk(HttpResponse var0, String var1) { + int var2 = -1866512410; + + while (true) { + switch (var2) { + case -1866512410: + default: + if (var0.statusCode() != (-634121037 ^ 634121237) + ((-634121037 & 634121237) << 1)) { + var2 = 1320006160; + } else { + var2 = 960069353; + } + break; + case 960069353: + return JsonParser.parseString((String)var0.body()).getAsJsonObject(); + case 1320006160: + throw new IllegalStateException(var1 + " (HTTP " + var0.statusCode() + providerError((String)var0.body()) + ")"); + } + } + } + + private static String providerError(String var0) { + if (var0 != null && !var0.isBlank()) { + try { + JsonObject var1 = JsonParser.parseString(var0).getAsJsonObject(); + String var2 = var1.has("error") + ? var1.get("error").getAsString() + : null; + String var3 = var1.has("error_description") + ? var1.get("error_description").getAsString() + : null; + if (var2 == null && var3 == null) { + return ""; + } + + id.warn( + Cif.AUTH, + "microsoft auth rejected the request: {} {}", + var2, + var3 + ); + if (var3 == null) { + return ", " + var2; + } + + String var4 = var3.length() > 90? var3.substring(0, (-1454454414 ^ 1454454504) + ((-1454454414 & 1454454504) << 1)) + : var3; + return var2 == null ? ", " + var4 : ", " + var2 + ": " + var4; + } catch (Exception var5) { + return ""; + } + } else { + return ""; + } + } + + private static String encode(String var0) { + return URLEncoder.encode(var0, StandardCharsets.UTF_8); + } +} diff --git a/src/main/java/defpackage/cm.java b/src/main/java/defpackage/cm.java new file mode 100644 index 0000000..1148c6e --- /dev/null +++ b/src/main/java/defpackage/cm.java @@ -0,0 +1,264 @@ +package defpackage; + +import com.sun.net.httpserver.HttpServer; +import java.io.Closeable; +import java.io.OutputStream; +import java.net.InetSocketAddress; +import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; +import java.security.SecureRandom; +import java.util.HashMap; +import java.util.HexFormat; +import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Consumer; + +public final class cm implements Closeable { + private static final int[] PORTS; + private static final String PARAMETER_SEPARATOR = "&"; + private static final char VALUE_SEPARATOR = '='; + private static final String CODE_PARAMETER = "code"; + private static final String STATE_PARAMETER = "state"; + private static final String ERROR_PARAMETER = "error"; + private static final String ERROR_DESCRIPTION_PARAMETER = "error_description"; + private static final String ACCESS_DENIED = "access_denied"; + private static final String CANCELLED_MESSAGE = "Login was cancelled in the browser"; + private static final String EMPTY_MESSAGE = "Browser returned an empty response"; + private static final String INVALID_MESSAGE = "Browser returned an invalid response"; + private static final String DONE_PAGE = "Evolution\n\n

Signed in

You can close this tab and return to the game.

\n"; + private final HttpServer server; + private final String state; + private volatile String redirectUri; + private final Consumer onCode; + private final Consumer onError; + private final AtomicBoolean handled = new AtomicBoolean(); + private int port; + + public cm(Consumer var1, Consumer var2) throws Exception { + this.onCode = var1; + this.onError = var2; + this.server = HttpServer.create(); + byte[] var3 = new byte[32]; + new SecureRandom().nextBytes(var3); + this.state = HexFormat.of().formatHex(var3); + } + + public void start() { + this.server + .createContext( + "/in_game_account_switcher_long_enough_uri_to_prevent_accidental_leaks_on_screensharing_even_if_you_have_like_extremely_big_screen_though_it_might_not_mork_but_we_will_try_it_anyway_to_prevent_funny_things_from_happening_or_something", + var1 -> { + try { + if (!var1.getRemoteAddress().getAddress().isLoopbackAddress() + || !this.handled + .compareAndSet( + (boolean)(((0)) != 0), + (boolean)((((-1338923567 ^ 1338923568) + ((-1338923567 & 1338923568) << 1)) + ) != 0))) { + var1.close(); + return; + } + + String var2 = var1.getRequestURI().getRawQuery(); + var1.getResponseHeaders() + .add("Location", "http://localhost:" + this.port + "/end"); + var1.sendResponseHeaders( + 302, + (-418738139376244796L ^ 418738139376244795L) + ((-418738139376244796L & 418738139376244795L) << 1) + ); + var1.close(); + this.handleQuery(var2); + } catch (Exception var3) { + var1.close(); + this.onError + .accept( + "Couldn't process the browser response" + ); + } + } + ); + this.server + .createContext( + "/end", + var0 -> { + byte[] var1 = "Evolution\n\n

Signed in

You can close this tab and return to the game.

\n" + .getBytes(StandardCharsets.UTF_8); + var0.getResponseHeaders() + .add( + "Content-Type", + "text/html; charset=utf-8" + ); + var0.sendResponseHeaders(200, var1.length); + + try (OutputStream var2 = var0.getResponseBody()) { + var2.write(var1); + } + + var0.close(); + } + ); + this.bind(); + this.redirectUri = cl.redirectUri(this.port); + this.server.start(); + } + + private void bind() { + int[] var1 = PORTS; + int var2 = var1.length; + + for (int var3 = 0; var3 < var2; var3++) { + int var4 = var1[var3]; + + try { + this.server.bind(new InetSocketAddress(var4), (-2043240877 | 2043240877) + (-2043240877 & 2043240877)); + this.port = var4; + return; + } catch (Exception var6) { + } + } + + throw new IllegalStateException( + "Couldn't open a local port for the login" + ); + } + + private void handleQuery(String var1) { + if (var1 != null && !var1.isBlank()) { + Map var2 = parseQuery(var1); + String var3 = (String)var2.get("error"); + if (var3 != null) { + String var5 = (String)var2.get("error_description"); + if ("access_denied".equals(var3)) { + this.onError + .accept( + "Login was cancelled in the browser" + ); + } else { + this.onError.accept(var5 == null ? var3 : var3 + ": " + var5); + } + } else { + String var4 = (String)var2.get("code"); + if (var4 != null && !var4.isEmpty() && this.state.equals(var2.get("state"))) { + this.onCode.accept(var4); + } else { + this.onError + .accept( + "Browser returned an invalid response" + ); + } + } + } else { + this.onError + .accept("Browser returned an empty response"); + } + } + + private static Map parseQuery(String var0) { + HashMap var1 = null; + String[] var2 = null; + int var3 = 0; + int var4 = 0; + Object var5 = null; + int var6 = 0; + int var7 = 1105909696; + + while (true) { + switch (var7) { + case -1469408285: + return var1; + case -1380990689: + var7 = -255674733; + break; + case -255674733: + var4++; + var7 = 1507715488; + break; + case 74375888: + var1.put( + decode(var5.substring(0, var6)), + decode(var5.substring(var6 + (-1733473423 ^ 1733473424) + ((-1733473423 & 1733473424) << 1))) + ); + var7 = -255674733; + break; + case 179241201: + var5 = var2[var4]; + var6 = var5.indexOf((-1539295674 ^ 1539295735) + ((-1539295674 & 1539295735) << 1)); + if (var6 <= 0) { + var7 = -1380990689; + } else { + var7 = 74375888; + } + break; + case 1105909696: + default: + var1 = new HashMap(); + var2 = var0.split("&"); + var3 = var2.length; + var4 = 0; + var7 = 1507715488; + break; + case 1507715488: + if (var4 < var3) { + var7 = 179241201; + } else { + var7 = -1469408285; + } + } + } + } + + private static String decode(String var0) { + try { + return URLDecoder.decode(var0, StandardCharsets.UTF_8); + } catch (IllegalArgumentException var2) { + return var0; + } + } + + public String authUrl() { + return cl.authUrl(this.redirectUri, this.state); + } + + public String redirectUri() { + return this.redirectUri; + } + + @Override + public void close() { + try { + this.server.stop((969215396 | -969215396) + (969215396 & -969215396)); + } catch (Exception var2) { + } + } + + static { + int[] var10000 = new int[26]; + var10000[0] = 59125; + var10000[1] = 59126; + var10000[2] = 59127; + var10000[3] = 59128; + var10000[4] = 59129; + var10000[5] = 59130; + var10000[6] = 59131; + var10000[7] = 59132; + var10000[8] = 59133; + var10000[9] = 59134; + var10000[10] = 59135; + var10000[11] = 1234; + var10000[12] = 1235; + var10000[13] = 1236; + var10000[14] = 1237; + var10000[15] = 80; + var10000[16] = 8080; + var10000[17] = 19364; + var10000[18] = 19365; + var10000[19] = 19366; + var10000[20] = 27930; + var10000[21] = 27931; + var10000[22] = 27932; + var10000[23] = 27933; + var10000[24] = 27934; + var10000[25] = 42069; + PORTS = var10000; + } +} diff --git a/src/main/java/defpackage/cn.java b/src/main/java/defpackage/cn.java new file mode 100644 index 0000000..60e5704 --- /dev/null +++ b/src/main/java/defpackage/cn.java @@ -0,0 +1,6 @@ +package defpackage; + +public enum cn { + OFFLINE, + MICROSOFT; +} diff --git a/src/main/java/defpackage/co.java b/src/main/java/defpackage/co.java new file mode 100644 index 0000000..f16450a --- /dev/null +++ b/src/main/java/defpackage/co.java @@ -0,0 +1,98 @@ +package defpackage; + +import java.nio.charset.StandardCharsets; +import java.util.UUID; + +public final class co { + private final cn type; + private String name; + private UUID uuid; + private String accessToken; + private String refreshToken; + + public co(cn var1, String var2, UUID var3, String var4, String var5) { + this.type = var1; + this.name = var2; + this.uuid = var3; + this.accessToken = var4; + this.refreshToken = var5; + } + + public static co offline(String var0) { + return new co(cn.OFFLINE, var0, offlineUuid(var0), null, null); + } + + public static UUID offlineUuid(String var0) { + return UUID.nameUUIDFromBytes(("OfflinePlayer:" + var0).getBytes(StandardCharsets.UTF_8)); + } + + public boolean hasTokens() { + int var2 = 0; + int var1 = -636947504; + + while (true) { + switch (var1) { + case -636947504: + default: + if (this.accessToken != null) { + var1 = 2135322669; + } else { + var1 = 542523179; + } + break; + case 542523179: + var2 = 0; + var1 = 1810362846; + break; + case 1598703285: + var2 = 1; + var1 = 1810362846; + break; + case 1810362846: + return (boolean)((var2) != 0); + case 2135322669: + if (this.refreshToken != null) { + var1 = 1598703285; + } else { + var1 = 542523179; + } + } + } + } + + public cn getType() { + return this.type; + } + + public String getName() { + return this.name; + } + + public UUID getUuid() { + return this.uuid; + } + + public String getAccessToken() { + return this.accessToken; + } + + public String getRefreshToken() { + return this.refreshToken; + } + + public void setName(String var1) { + this.name = var1; + } + + public void setUuid(UUID var1) { + this.uuid = var1; + } + + public void setAccessToken(String var1) { + this.accessToken = var1; + } + + public void setRefreshToken(String var1) { + this.refreshToken = var1; + } +} diff --git a/src/main/java/defpackage/cp.java b/src/main/java/defpackage/cp.java new file mode 100644 index 0000000..212a95b --- /dev/null +++ b/src/main/java/defpackage/cp.java @@ -0,0 +1,287 @@ +package defpackage; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import net.minecraft.resources.Identifier; + +/* JADX INFO: loaded from: evovis-dec.jar:cp.class */ +public final class cp { + private static final String REFRESH_FAILURE = "auth profile refresh failed"; + private static final String SIGN_IN = "signed in as uid {}"; + private static final String TOKEN_ENV = "EVO_TOKEN"; + private static final String BASE = "https://www.evoproject.xyz"; + private static final String ME_ENDPOINT = "https://www.evoproject.xyz/api/auth/me"; + private static final String REFRESH_THREAD = "evo-auth-me"; + private static final String TOKEN_FIELD = "token"; + private static final String USERNAME_FIELD = "username"; + private static final String ROLE_FIELD = "role"; + private static final String UID_FIELD = "uid"; + private static final String AVATAR_FIELD = "avatar"; + private static final String AVATAR_TEXTURE_PREFIX = "account_avatar_"; + private static final String JSON_CONTENT_TYPE = "application/json"; + private static final String CONTENT_TYPE_HEADER = "Content-Type"; + private static final int STATUS_OK = 200; + private static volatile cr user; + private static volatile Identifier avatarTexture; + private static final Duration CONNECT_TIMEOUT = Duration.ofSeconds((703617214384230201L ^ (-703617214384230191L)) + ((703617214384230201L & (-703617214384230191L)) << 1)); + private static final Duration REQUEST_TIMEOUT = Duration.ofSeconds(((-5738878771478280035L) | 5738878771478280050L) + ((-5738878771478280035L) & 5738878771478280050L)); + private static final HttpClient HTTP = HttpClient.newBuilder().connectTimeout(CONNECT_TIMEOUT).build(); + + public static void initialize() { + setUser(new cr("Player", null, "user", 0, null)); + } + + /* JADX WARN: Multi-variable type inference failed */ + public static boolean isAuthorized() { + return true; + } + + private static cr launcherSession() { + String str = null; + int i = -432705982; + int i2 = 596714336; + while (true) { + switch (i + i2) { + case -2099510469: + return null; + case 164008354: + default: + str = System.getenv(awc.d("\u00adÝ®\u0097\u0019JA\u001eq", (78755836 ^ (-74632390)) + ((78755836 & (-74632390)) << 1))); + if (str == null) { + i = 1923348643; + i2 = 272108184; + } else { + i = 1283110879; + i2 = 558018; + } + break; + case 594184043: + return new cr(null, str.trim(), null, 0, null); + case 1283668897: + if (!str.isBlank()) { + i = -33685653; + i2 = 627869696; + } else { + i = -34079057; + i2 = -2065431412; + } + break; + } + } + } + + private static cr userFrom(JsonObject jsonObject, String str) { + String strString = null; + String strString2 = null; + int i = 0; + int asInt = 0; + int i2 = -696211672; + int i3 = 1109164166; + while (true) { + switch (i2 + i3) { + case -885702313: + asInt = 0; + i2 = -1074799298; + i3 = 285511952; + break; + case -789287346: + return new cr(strString, str, strString2, asInt, string(jsonObject, awc.d("\u0084î\u001f¹#\u001b", (647800947 ^ (-896625111)) + ((647800947 & (-896625111)) << 1)))); + case -132750199: + asInt = jsonObject.get(awc.d("L\u0014¼", (1358965110 ^ (-1469176826)) + ((1358965110 & (-1469176826)) << 1))).getAsInt(); + i2 = -825605874; + i3 = 36318528; + break; + case 412952494: + default: + strString = string(jsonObject, awc.d("÷\u0010\u0080Ò\u0001D\u0085×", ((-1200364121) ^ (-580268934)) + (((-1200364121) & (-580268934)) << 1))); + strString2 = string(jsonObject, awc.d("C?Ã\u008f", (124167250 ^ (-2045375053)) + ((124167250 & (-2045375053)) << 1))); + if (!jsonObject.has(awc.d("\u00adMù", (1794939792 ^ (-552054939)) + ((1794939792 & (-552054939)) << 1)))) { + i2 = -2002505561; + i3 = 1116803248; + } else { + i2 = 948890103; + i3 = 276875362; + } + break; + case 1225765465: + if (!jsonObject.get(awc.d("u=T", ((-1104076212) ^ 881034017) + (((-1104076212) & 881034017) << 1))).isJsonNull()) { + i2 = -275514377; + i3 = 142764178; + } else { + i2 = -1599553977; + i3 = 713851664; + } + break; + } + } + } + + private static String string(JsonObject jsonObject, String str) { + String asString = null; + int i = -210830403; + int i2 = 16794116; + while (true) { + switch (i + i2) { + case -1611139961: + asString = jsonObject.get(str).getAsString(); + i = 879692939; + i2 = -2147368952; + break; + case -1267676013: + return asString; + case -194036287: + default: + if (!jsonObject.has(str)) { + i = -151593989; + i2 = -2078275518; + } else { + i = 1806800965; + i2 = 9965408; + } + break; + case 1816766373: + if (!jsonObject.get(str).isJsonNull()) { + i = -537923977; + i2 = -1073215984; + } else { + i = 2026953661; + i2 = 38144128; + } + break; + case 2065097789: + asString = null; + i = -537362433; + i2 = -730313580; + break; + } + } + } + + private static synchronized void setUser(cr crVar) { + String strAvatar = null; + int i = -641263603; + int i2 = 73500608; + while (true) { + switch (i + i2) { + case -1720033709: + applyAvatar(strAvatar); + return; + case -567762995: + default: + user = crVar; + if (crVar != null) { + i = -77086870; + i2 = 570757922; + } else { + i = -1298775922; + i2 = -2003807008; + } + break; + case 493671052: + strAvatar = crVar.avatar(); + i = 1359305795; + i2 = 1215627792; + break; + case 992384366: + strAvatar = null; + i = 1878652879; + i2 = 696280708; + break; + } + } + } + + private static void applyAvatar(String str) { + int iIndexOf = 0; + Identifier identifierRegister = null; + String strSubstring = null; + int i = 536337406; + int i2 = 297030168; + while (true) { + switch (i + i2) { + case -1685049287: + strSubstring = str; + i = -336499333; + i2 = 8407082; + break; + case -495691704: + iIndexOf = str.indexOf(((-1186152178) | 1186152222) + ((-1186152178) & 1186152222)); + if (iIndexOf < 0) { + i = 460304309; + i2 = -2145353596; + } else { + i = -44538959; + i2 = 4599936; + } + break; + case -328092251: + String str2 = strSubstring; + identifierRegister = aeg.register("account_avatar_" + Integer.toHexString(str2.hashCode()), str2); + if (identifierRegister == null) { + i = -562036755; + i2 = 407604961; + } else { + i = -17973343; + i2 = 619249696; + } + break; + case -154431794: + return; + case -39939023: + strSubstring = str.substring(iIndexOf + ((-1715330791) | 1715330792) + ((-1715330791) & 1715330792)); + i = -403853409; + i2 = 75761158; + break; + case 601276353: + avatarTexture = identifierRegister; + i = 2256558; + i2 = -156688352; + break; + case 644747288: + if (!str.isBlank()) { + i = -495730889; + i2 = 39185; + } else { + i = 1390800205; + i2 = 303301892; + } + break; + case 833367574: + default: + if (str == null) { + i = -470295057; + i2 = -2130570142; + } else { + i = -1722683424; + i2 = -1927536584; + } + break; + case 1694102097: + avatarTexture = null; + return; + } + } + } + + private cp() { + } + + public static cr user() { + if (user == null) { + setUser(new cr("Player", null, "user", 0, null)); + } + return user; + } + + public static Identifier avatarTexture() { + return avatarTexture; + } + + +} diff --git a/src/main/java/defpackage/cq.java b/src/main/java/defpackage/cq.java new file mode 100644 index 0000000..9214ba6 --- /dev/null +++ b/src/main/java/defpackage/cq.java @@ -0,0 +1,54 @@ +package defpackage; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.nio.file.Files; +import java.nio.file.Path; +import net.fabricmc.loader.api.FabricLoader; + +public final class cq { + private cq() { + } + + private static Path path() { + return FabricLoader.getInstance() + .getGameDir() + .resolve("evolution") + .resolve("auth.json"); + } + + public static cr load() { + try { + Path var0 = path(); + if (!Files.isRegularFile(var0)) { + return null; + } + + JsonObject var1 = JsonParser.parseString(Files.readString(var0)).getAsJsonObject(); + if (var1.has("username") + && var1.has("token")) { + String var2 = var1.get("username").getAsString(); + String var3 = var1.get("token").getAsString(); + if (!var2.isBlank() && !var3.isBlank()) { + String var4 = var1.has("role") + ? var1.get("role").getAsString() + : null; + int var5 = var1.has("uid") + ? var1.get("uid").getAsInt() + : 0; + String var6 = var1.has("avatar") + && !var1.get("avatar").isJsonNull() + ? var1.get("avatar").getAsString() + : null; + return new cr(var2, var3, var4, var5, var6); + } else { + return null; + } + } else { + return null; + } + } catch (Exception var7) { + return null; + } + } +} diff --git a/src/main/java/defpackage/cr.java b/src/main/java/defpackage/cr.java new file mode 100644 index 0000000..0047fba --- /dev/null +++ b/src/main/java/defpackage/cr.java @@ -0,0 +1,4 @@ +package defpackage; + +public record cr(String username, String token, String role, int uid, String avatar) { +} diff --git a/src/main/java/defpackage/cs.java b/src/main/java/defpackage/cs.java new file mode 100644 index 0000000..63ab244 --- /dev/null +++ b/src/main/java/defpackage/cs.java @@ -0,0 +1,74 @@ +package defpackage; + +public final class cs { + private static final float NANOS_PER_MILLI = 1000000.0F; + private static final float MAX_DELTA_MS = 50.0F; + private static final float MIN_DELTA_MS = 0.0F; + private static long lastNanos; + private static float deltaMillis; + private static double elapsedMillis; + private static long frame; + + private cs() { + } + + public static void advance() { + long var0 = (-5041033715982169665L | 5041033715982169665L) + (-5041033715982169665L & 5041033715982169665L); + float var2 = 0.0F; + float var4 = 0.0F; + int var3 = 72639600; + + while (true) { + switch (var3) { + case -1957398267: + var2 = (float)(var0 - lastNanos) / 1000000.0F; + lastNanos = var0; + if (var2 < 0.0F) { + var3 = -140657118; + } else { + var3 = -15393732; + } + break; + case -140657118: + var4 = 0.0F; + var3 = 183581552; + break; + case -15393732: + var4 = Math.min(var2, 50.0F); + var3 = 183581552; + break; + case 72639600: + default: + var0 = System.nanoTime(); + if (lastNanos == (-1926651999423274922L ^ 1926651999423274922L) + ((-1926651999423274922L & 1926651999423274922L) << 1)) { + var3 = 1231549753; + } else { + var3 = -1957398267; + } + break; + case 183581552: + deltaMillis = var4; + elapsedMillis = elapsedMillis + deltaMillis; + frame += (6217890889798851921L ^ -6217890889798851920L) + ((6217890889798851921L & -6217890889798851920L) << 1); + return; + case 1231549753: + lastNanos = var0; + deltaMillis = 0.0F; + frame += (7349231319820627199L | -7349231319820627198L) + (7349231319820627199L & -7349231319820627198L); + return; + } + } + } + + public static float deltaMillis() { + return deltaMillis; + } + + public static double elapsedMillis() { + return elapsedMillis; + } + + public static long frame() { + return frame; + } +} diff --git a/src/main/java/defpackage/ct.java b/src/main/java/defpackage/ct.java new file mode 100644 index 0000000..9e5cc12 --- /dev/null +++ b/src/main/java/defpackage/ct.java @@ -0,0 +1,282 @@ +package defpackage; + +public final class ct { + private static final float OVERSHOOT_DAMPING = 0.7156F; + private static final float MONOTONIC_DAMPING = 1.0F; + private static final float OVERSHOOT_SETTLE_CONSTANT = 5.467F; + private static final float MONOTONIC_SETTLE_CONSTANT = 5.834F; + private static final float MILLIS_PER_SECOND = 1000.0F; + private static final float MIN_DURATION_MS = 1.0F; + private static final float SETTLE_EPSILON = 0.001F; + private static final float SETTLE_VELOCITY = 0.001F; + private static final double MAX_STEP_MS = 50.0; + private final float damping; + private final float settleConstant; + private ob role; + private float baseMillis; + private float value; + private float target; + private float velocity; + private double lastStepMillis = -1.0; + + private ct(ob var1, float var2, float var3, float var4, float var5) { + this.role = var1; + this.baseMillis = var2; + this.damping = var4; + this.settleConstant = var5; + this.value = var3; + this.target = var3; + } + + public static ct transform(ob var0) { + return transform(var0, 0.0F); + } + + public static ct transform(ob var0, float var1) { + return new ct(var0, 0.0F, var1, 0.7156F, 5.467F); + } + + public static ct layout(ob var0) { + return layout(var0, 0.0F); + } + + public static ct layout(ob var0, float var1) { + return new ct(var0, 0.0F, var1, 1.0F, 5.834F); + } + + public static ct transformMillis(float var0, float var1) { + return new ct(null, var0, var1, 0.7156F, 5.467F); + } + + public static ct layoutMillis(float var0, float var1) { + return new ct(null, var0, var1, 1.0F, 5.834F); + } + + public void setRole(ob var1) { + this.role = var1; + } + + public void setBaseMillis(float var1) { + this.role = null; + this.baseMillis = var1; + } + + public float baseMillis() { + float var2 = 0.0F; + int var1 = -1090321907; + + while (true) { + switch (var1) { + case -1672990005: + var2 = pk.motion(this.role); + var1 = -160427250; + break; + case -1200757252: + var2 = this.baseMillis; + var1 = -160427250; + break; + case -1090321907: + default: + if (this.role != null) { + var1 = -1672990005; + } else { + var1 = -1200757252; + } + break; + case -160427250: + return var2; + } + } + } + + public void animateTo(float var1) { + this.target = var1; + } + + public void jumpTo(float var1) { + this.value = var1; + this.target = var1; + this.velocity = 0.0F; + this.lastStepMillis = cs.elapsedMillis(); + } + + public float value() { + return this.value; + } + + public float target() { + return this.target; + } + + public boolean isSettled() { + int var2 = 0; + int var1 = 618682354; + + while (true) { + switch (var1) { + case -300806202: + var2 = 1; + var1 = 116592081; + break; + case 116592081: + return (boolean)((var2) != 0); + case 618682354: + default: + if (this.value == this.target) { + var1 = 629063369; + } else { + var1 = 1793568838; + } + break; + case 629063369: + if (this.velocity == 0.0F) { + var1 = -300806202; + } else { + var1 = 1793568838; + } + break; + case 1793568838: + var2 = 0; + var1 = 116592081; + } + } + } + + public float update(float var1) { + this.animateTo(var1); + return this.update(); + } + + public float update(boolean var1) { + return this.update(var1 ? 1.0F : 0.0F); + } + + public float update() { + double var1 = 0.0; + double var3 = 0.0; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + double var9 = 0.0; + int var8 = 768353357; + + while (true) { + switch (var8) { + case -2145456621: + var7 = this.angularFrequency(); + if (this.damping >= 1.0F) { + var8 = -1106945299; + } else { + var8 = 2009327671; + } + break; + case -1722438082: + var6 = (float)Math.min(var3, 50.0) / 1000.0F; + if (var6 <= 0.0F) { + var8 = -907969356; + } else { + var8 = -2145456621; + } + break; + case -1370543873: + this.value = this.target; + this.velocity = 0.0F; + return this.value; + case -1106945299: + this.stepCritical(var5, var7, var6); + var8 = 1186092843; + break; + case -907969356: + return this.value; + case 282999797: + if (Math.abs(this.velocity) < 0.001F) { + var8 = -1370543873; + } else { + var8 = -1722438082; + } + break; + case 521022067: + var9 = var1 - this.lastStepMillis; + var8 = 1511815967; + break; + case 768353357: + default: + var1 = cs.elapsedMillis(); + if (this.lastStepMillis < 0.0) { + var8 = 1221147252; + } else { + var8 = 521022067; + } + break; + case 1186092843: + return this.value; + case 1221147252: + var9 = 0.0; + var8 = 1511815967; + break; + case 1511815967: + var3 = var9; + this.lastStepMillis = var1; + var5 = this.value - this.target; + if (Math.abs(var5) < 0.001F) { + var8 = 282999797; + } else { + var8 = -1722438082; + } + break; + case 2009327671: + this.stepUnderdamped(var5, var7, var6); + var8 = 1186092843; + } + } + } + + private float angularFrequency() { + float var1 = 0.0F; + float var3 = 0.0F; + int var2 = 2055813793; + + while (true) { + switch (var2) { + case -373700666: + var3 = pk.motion(this.role); + var2 = 1197981593; + break; + case 1197981593: + var1 = var3; + return this.settleConstant * 1000.0F / Math.max(var1, 1.0F); + case 1423990001: + var3 = pk.animDuration(Math.round(this.baseMillis)); + var2 = 1197981593; + break; + case 2055813793: + default: + if (this.role != null) { + var2 = -373700666; + } else { + var2 = 1423990001; + } + } + } + } + + private void stepCritical(float var1, float var2, float var3) { + float var4 = (float)Math.exp(-var2 * var3); + float var5 = this.velocity + var2 * var1; + float var6 = var4 * (var1 + var5 * var3); + this.velocity = var4 * (this.velocity - var2 * var3 * var5); + this.value = this.target + var6; + } + + private void stepUnderdamped(float var1, float var2, float var3) { + float var4 = var2 * (float)Math.sqrt(1.0F - this.damping * this.damping); + float var5 = (float)Math.exp(-this.damping * var2 * var3); + float var6 = var4 * var3; + float var7 = (float)Math.cos(var6); + float var8 = (float)Math.sin(var6); + float var9 = (this.velocity + this.damping * var2 * var1) / var4; + float var10 = var5 * (var1 * var7 + var9 * var8); + this.velocity = var5 * ((var9 * var4 - this.damping * var2 * var1) * var7 - (var1 * var4 + this.damping * var2 * var9) * var8); + this.value = this.target + var10; + } +} diff --git a/src/main/java/defpackage/cu.java b/src/main/java/defpackage/cu.java new file mode 100644 index 0000000..1ad6bda --- /dev/null +++ b/src/main/java/defpackage/cu.java @@ -0,0 +1,109 @@ +package defpackage; + +public final class cu { + private static final float MIN_DURATION_MS = 1.0F; + private static final float EASE_START = 0.0F; + private static final float EASE_SPAN = 1.0F; + private float durationMillis; + private de easing; + private float origin; + private float target; + private float value; + private double startMillis; + + public cu(float var1, de var2, float var3) { + this.durationMillis = Math.max(var1, 1.0F); + this.easing = var2; + this.origin = var3; + this.target = var3; + this.value = var3; + this.startMillis = cs.elapsedMillis(); + } + + public void retime(float var1, de var2) { + this.durationMillis = Math.max(var1, 1.0F); + this.easing = var2; + } + + public void jumpTo(float var1) { + this.origin = var1; + this.target = var1; + this.value = var1; + this.startMillis = cs.elapsedMillis(); + } + + public float update(float var1) { + double var2 = 0.0; + float var4 = 0.0F; + int var5 = 232321015; + + while (true) { + switch (var5) { + case -1047784961: + var2 = cs.elapsedMillis() - this.startMillis; + if (var2 >= this.durationMillis) { + var5 = 46657291; + } else { + var5 = -437955322; + } + break; + case -437955322: + var4 = this.easing.ease((float)var2, 0.0F, 1.0F, this.durationMillis); + this.value = this.origin + (this.target - this.origin) * var4; + return this.value; + case 46657291: + this.value = this.target; + return this.value; + case 232321015: + default: + if (var1 != this.target) { + var5 = 301811022; + } else { + var5 = -1047784961; + } + break; + case 301811022: + this.origin = this.value; + this.target = var1; + this.startMillis = cs.elapsedMillis(); + var5 = -1047784961; + } + } + } + + public float value() { + return this.value; + } + + public float target() { + return this.target; + } + + public boolean isDone() { + int var2 = 0; + int var1 = -355173509; + + while (true) { + switch (var1) { + case -697855896: + var2 = 1; + var1 = 387552224; + break; + case -355173509: + default: + if (this.value == this.target) { + var1 = -697855896; + } else { + var1 = 41105075; + } + break; + case 41105075: + var2 = 0; + var1 = 387552224; + break; + case 387552224: + return (boolean)((var2) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/cv.java b/src/main/java/defpackage/cv.java new file mode 100644 index 0000000..e03a75e --- /dev/null +++ b/src/main/java/defpackage/cv.java @@ -0,0 +1,146 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:cv.class */ +class cv implements de { + final /* synthetic */ double val$x1; + final /* synthetic */ double val$x2; + final /* synthetic */ double val$y1; + final /* synthetic */ double val$y2; + + @Override // defpackage.de + public float ease(float f, float f2, float f3, float f4) { + int i = -202036405; + int i2 = -781898936; + int i3 = 848568387; + while (true) { + switch (i + (i2 & i3)) { + case -1754547669: + return f2 + (f3 * bezierY(solveTBez((float) this.val$x1, (float) this.val$x2, f / f4), (float) this.val$y1, (float) this.val$y2)); + case -1102252944: + return f2 + f3; + case -313249493: + return f2; + case 66669451: + default: + if (f4 <= 0.0f) { + i = -682364933; + i2 = 1448305136; + i3 = -1761554629; + } else { + i = 2013003775; + i2 = 636216318; + i3 = 1385716923; + } + break; + case 540188386: + if (f < f4) { + i = -1755842145; + i2 = -1860968307; + i3 = 106420638; + } else { + i = 2000415728; + i2 = 1463372016; + i3 = 1729342336; + } + break; + case 2021933241: + if (f > 0.0f) { + i = -1148975; + i2 = -1343342767; + i3 = 1883531153; + } else { + i = -335597401; + i2 = -1015734105; + i3 = 702484612; + } + break; + } + } + } + + private float solveTBez(float f, float f2, float f3) { + float fMax = 0.0f; + int i = 0; + int i2 = 0; + float fBezierX = 0.0f; + float fBezierDX = 0.0f; + int i3 = -8985133; + int i4 = 1477575744; + while (true) { + switch (i3 + i4) { + case -1498916966: + i3 = -1047131106; + i4 = 1216398784; + break; + case -1383617152: + if (Math.abs(fBezierDX) >= 1.0E-6f) { + i3 = -1074038797; + i4 = 15794208; + } else { + i3 = -809566242; + i4 = 194268312; + } + break; + case -1058244589: + fMax = Math.max(0.0f, Math.min(1.0f, fMax - ((fBezierX - f3) / fBezierDX))); + i2++; + i3 = -152444961; + i4 = 67779; + break; + case -615297930: + i3 = -610338; + i4 = 169878016; + break; + case -152377182: + if (i2 >= (2089131264 ^ (-2089131256)) + ((2089131264 & (-2089131256)) << 1)) { + i3 = -437387298; + i4 = 606654976; + } else { + i3 = -1083200801; + i4 = -2113888124; + } + break; + case 169267678: + return fMax; + case 1097878371: + fBezierX = bezierX(fMax, f, f2); + fBezierDX = bezierDX(fMax, f, f2); + if (Math.abs(fBezierX - f3) >= 1.0E-5f) { + i3 = -68715138; + i4 = -1314902014; + } else { + i3 = 2120742783; + i4 = 675307547; + } + break; + case 1468590611: + default: + fMax = f3; + int i5 = 8; + i2 = 0; + i3 = -392886436; + i4 = 240509254; + break; + } + } + } + + cv(double d, double d2, double d3, double d4) { + this.val$x1 = d; + this.val$x2 = d2; + this.val$y1 = d3; + this.val$y2 = d4; + } + + private float bezierX(float f, float f2, float f3) { + return (3.0f * (1.0f - f) * (1.0f - f) * f * f2) + (3.0f * (1.0f - f) * f * f * f3) + (f * f * f); + } + + private float bezierDX(float f, float f2, float f3) { + return (3.0f * (((1.0f - f) * (1.0f - (3.0f * f)) * f2) + (((2.0f * f) - ((3.0f * f) * f)) * f3))) + (3.0f * f * f); + } + + private float bezierY(float f, float f2, float f3) { + return (3.0f * (1.0f - f) * (1.0f - f) * f * f2) + (3.0f * (1.0f - f) * f * f * f3) + (f * f * f); + } +} diff --git a/src/main/java/defpackage/cw.java b/src/main/java/defpackage/cw.java new file mode 100644 index 0000000..75fecda --- /dev/null +++ b/src/main/java/defpackage/cw.java @@ -0,0 +1,23 @@ +package defpackage; + + +public abstract class cw implements de { + public static final float DEFAULT_OVERSHOOT = 1.70158F; + private float overshoot; + + public cw() { + this(1.70158F); + } + + public cw(float var1) { + this.overshoot = var1; + } + + public void setOvershoot(float var1) { + this.overshoot = var1; + } + + public float getOvershoot() { + return this.overshoot; + } +} diff --git a/src/main/java/defpackage/cx.java b/src/main/java/defpackage/cx.java new file mode 100644 index 0000000..03974a1 --- /dev/null +++ b/src/main/java/defpackage/cx.java @@ -0,0 +1,17 @@ +package defpackage; + +public class cx extends cw { + public cx() { + } + + public cx(float var1) { + super(var1); + } + + @Override + public float ease(float var1, float var2, float var3, float var4) { + float var5 = this.getOvershoot(); + float var6; + return var3 * (var6 = var1 / var4) * var6 * ((var5 + 1.0F) * var6 - var5) + var2; + } +} diff --git a/src/main/java/defpackage/cy.java b/src/main/java/defpackage/cy.java new file mode 100644 index 0000000..4c17205 --- /dev/null +++ b/src/main/java/defpackage/cy.java @@ -0,0 +1,37 @@ +package defpackage; + +public class cy extends cw { + public cy() { + } + + public cy(float var1) { + super(var1); + } + + @Override + public float ease(float var1, float var2, float var3, float var4) { + float var5 = 0.0F; + int var6 = -201117007; + + while (true) { + switch (var6) { + case -201117007: + default: + var5 = this.getOvershoot(); + if ((var1 /= var4 / 2.0F) < 1.0F) { + var6 = 1852569414; + } else { + var6 = 269687391; + } + break; + case 269687391: + float var7; + float var9; + return var3 / 2.0F * ((var7 = var1 - 2.0F) * var7 * (((var9 = var5 * 1.525F) + 1.0F) * var7 + var9) + 2.0F) + var2; + case 1852569414: + float var8; + return var3 / 2.0F * (var1 * var1 * (((var8 = var5 * 1.525F) + 1.0F) * var1 - var8)) + var2; + } + } + } +} diff --git a/src/main/java/defpackage/cz.java b/src/main/java/defpackage/cz.java new file mode 100644 index 0000000..c82a553 --- /dev/null +++ b/src/main/java/defpackage/cz.java @@ -0,0 +1,17 @@ +package defpackage; + +public class cz extends cw { + public cz() { + } + + public cz(float var1) { + super(var1); + } + + @Override + public float ease(float var1, float var2, float var3, float var4) { + float var5 = this.getOvershoot(); + float var6; + return var3 * ((var6 = var1 / var4 - 1.0F) * var6 * ((var5 + 1.0F) * var6 + var5) + 1.0F) + var2; + } +} diff --git a/src/main/java/defpackage/d.java b/src/main/java/defpackage/d.java new file mode 100644 index 0000000..0de9edd --- /dev/null +++ b/src/main/java/defpackage/d.java @@ -0,0 +1,7 @@ +package defpackage; + +public enum d { + VIRTUALIZATION, + MUTATION, + ULTRA; +} diff --git a/src/main/java/defpackage/da.java b/src/main/java/defpackage/da.java new file mode 100644 index 0000000..6135563 --- /dev/null +++ b/src/main/java/defpackage/da.java @@ -0,0 +1,32 @@ +package defpackage; + + +public abstract class da implements de { + private float amplitude; + private float period; + + public da(float var1, float var2) { + this.amplitude = var1; + this.period = var2; + } + + public da() { + this(-1.0F, 0.0F); + } + + public void setAmplitude(float var1) { + this.amplitude = var1; + } + + public void setPeriod(float var1) { + this.period = var1; + } + + public float getAmplitude() { + return this.amplitude; + } + + public float getPeriod() { + return this.period; + } +} diff --git a/src/main/java/defpackage/db.java b/src/main/java/defpackage/db.java new file mode 100644 index 0000000..b7e8832 --- /dev/null +++ b/src/main/java/defpackage/db.java @@ -0,0 +1,73 @@ +package defpackage; + +public class db extends da { + public db(float var1, float var2) { + super(var1, var2); + } + + public db() { + } + + @Override + public float ease(float var1, float var2, float var3, float var4) { + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = -732350085; + + while (true) { + switch (var8) { + case -1276739678: + var7 = 0.0F; + if (var5 < Math.abs(var3)) { + var8 = -723823082; + } else { + var8 = -638095195; + } + break; + case -732350085: + default: + var5 = this.getAmplitude(); + var6 = this.getPeriod(); + if (var1 == 0.0F) { + var8 = -67103500; + } else { + var8 = 411901512; + } + break; + case -723823082: + var5 = var3; + var7 = var6 / 4.0F; + var8 = -517585701; + break; + case -638095195: + var7 = var6 / (float) (Math.PI * 2) * (float)Math.asin(var3 / var5); + var8 = -517585701; + break; + case -517585701: + return -(var5 * (float)Math.pow(2.0, 10.0F * --var1) * (float)aqj.sin((var1 * var4 - var7) * (Math.PI * 2) / var6)) + var2; + case -185731349: + return var2 + var3; + case -67103500: + return var2; + case 411901512: + if ((var1 /= var4) == 1.0F) { + var8 = -185731349; + } else { + var8 = 1616976120; + } + break; + case 538539542: + var6 = var4 * 0.3F; + var8 = -1276739678; + break; + case 1616976120: + if (var6 == 0.0F) { + var8 = 538539542; + } else { + var8 = -1276739678; + } + } + } + } +} diff --git a/src/main/java/defpackage/dc.java b/src/main/java/defpackage/dc.java new file mode 100644 index 0000000..bf9d8f5 --- /dev/null +++ b/src/main/java/defpackage/dc.java @@ -0,0 +1,82 @@ +package defpackage; + +public class dc extends da { + public dc(float var1, float var2) { + super(var1, var2); + } + + public dc() { + } + + @Override + public float ease(float var1, float var2, float var3, float var4) { + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = 1039382900; + + while (true) { + switch (var8) { + case -1520488505: + if (var1 < 1.0F) { + var8 = -519918117; + } else { + var8 = 31436547; + } + break; + case -1516940905: + var7 = var6 / (float) (Math.PI * 2) * (float)Math.asin(var3 / var5); + var8 = -1520488505; + break; + case -1372854182: + return var2 + var3; + case -1339258397: + if (var6 == 0.0F) { + var8 = -354557454; + } else { + var8 = 5738756; + } + break; + case -950805276: + return var2; + case -836082096: + var5 = var3; + var7 = var6 / 4.0F; + var8 = -1520488505; + break; + case -519918117: + return -0.5F * (var5 * (float)Math.pow(2.0, 10.0F * --var1) * (float)aqj.sin((var1 * var4 - var7) * (Math.PI * 2) / var6)) + var2; + case -354557454: + var6 = var4 * 0.45000002F; + var8 = 5738756; + break; + case -130442035: + if ((var1 /= var4 / 2.0F) == 2.0F) { + var8 = -1372854182; + } else { + var8 = -1339258397; + } + break; + case 5738756: + var7 = 0.0F; + if (var5 < Math.abs(var3)) { + var8 = -836082096; + } else { + var8 = -1516940905; + } + break; + case 31436547: + return var5 * (float)Math.pow(2.0, -10.0F * --var1) * (float)aqj.sin((var1 * var4 - var7) * (Math.PI * 2) / var6) * 0.5F + var3 + var2; + case 1039382900: + default: + var5 = this.getAmplitude(); + var6 = this.getPeriod(); + if (var1 == 0.0F) { + var8 = -950805276; + } else { + var8 = -130442035; + } + } + } + } +} diff --git a/src/main/java/defpackage/dd.java b/src/main/java/defpackage/dd.java new file mode 100644 index 0000000..da0bf66 --- /dev/null +++ b/src/main/java/defpackage/dd.java @@ -0,0 +1,73 @@ +package defpackage; + +public class dd extends da { + public dd(float var1, float var2) { + super(var1, var2); + } + + public dd() { + } + + @Override + public float ease(float var1, float var2, float var3, float var4) { + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = -747795555; + + while (true) { + switch (var8) { + case -935398916: + var7 = var6 / (float) (Math.PI * 2) * (float)Math.asin(var3 / var5); + var8 = 14627054; + break; + case -747795555: + default: + var5 = this.getAmplitude(); + var6 = this.getPeriod(); + if (var1 == 0.0F) { + var8 = 406959029; + } else { + var8 = 1382835741; + } + break; + case -478084575: + var7 = 0.0F; + if (var5 < Math.abs(var3)) { + var8 = 1039150528; + } else { + var8 = -935398916; + } + break; + case 14627054: + return var5 * (float)Math.pow(2.0, -10.0F * var1) * (float)aqj.sin((var1 * var4 - var7) * (Math.PI * 2) / var6) + var3 + var2; + case 189088887: + var6 = var4 * 0.3F; + var8 = -478084575; + break; + case 372316772: + if (var6 == 0.0F) { + var8 = 189088887; + } else { + var8 = -478084575; + } + break; + case 406959029: + return var2; + case 1039150528: + var5 = var3; + var7 = var6 / 4.0F; + var8 = 14627054; + break; + case 1176599631: + return var2 + var3; + case 1382835741: + if ((var1 /= var4) == 1.0F) { + var8 = 1176599631; + } else { + var8 = 372316772; + } + } + } + } +} diff --git a/src/main/java/defpackage/de.java b/src/main/java/defpackage/de.java new file mode 100644 index 0000000..8d2d55d --- /dev/null +++ b/src/main/java/defpackage/de.java @@ -0,0 +1,464 @@ +package defpackage; + +public interface de { + de BAKEK = generate(0.45F, 1.45F, 0.49F, 1.15F); + de BAKEK_SMALLER = generate(0.45F, 1.45F, 0.43F, 0.91F); + de BAKEK_PAGES = generate(0.1F, 1.07F, 0.34F, 1.04F); + de BAKEK_SIZE = generate(0.27F, 1.09F, 0.49F, 1.06F); + de BAKEK_BACK = generate(0.62, -0.16, 0.8, 0.37); + de BAKEK_MANY = generate(0.25, 1.07, 0.11, 1.1); + de FIGMA_EASE_IN_OUT = generate(0.42, 0.0, 0.58, 1.0); + de SMOOTH_STEP = (var0, var1, var2, var3) -> { + float var4 = var2 * var0 / var3 + var1; + return (float)(-2.0 * Math.pow(var4, 3.0) + 3.0 * Math.pow(var4, 2.0)); + }; + de BOTH_CUBIC = (var0, var1, var2, var3) -> { + float var4 = 0.0F; + float var6 = 0.0F; + int var5 = 1045236899; + + while (true) { + switch (var5) { + case -1332547928: + var6 = 4.0F * var4 * var4 * var4; + var5 = -217111991; + break; + case -944703158: + var6 = (float)(1.0 - Math.pow(-2.0F * var4 + 2.0F, 3.0) / 2.0); + var5 = -217111991; + break; + case -217111991: + return var6; + case 1045236899: + default: + var4 = var2 * var0 / var3 + var1; + if (var4 < 0.5) { + var5 = -1332547928; + } else { + var5 = -944703158; + } + } + } + }; + de LINEAR = (var0, var1, var2, var3) -> var2 * var0 / var3 + var1; + de QUAD_IN = (var0, var1, var2, var3) -> { + float var4; + return var2 * (var4 = var0 / var3) * var4 + var1; + }; + de QUAD_OUT = (var0, var1, var2, var3) -> { + float var4; + return -var2 * (var4 = var0 / var3) * (var4 - 2.0F) + var1; + }; + de QUAD_IN_OUT = (var0, var1, var2, var3) -> { + int var4 = -1429274214; + + while (true) { + switch (var4) { + case -1429274214: + default: + if ((var0 /= var3 / 2.0F) < 1.0F) { + var4 = 150031407; + } else { + var4 = 1819166258; + } + break; + case 150031407: + return var2 / 2.0F * var0 * var0 + var1; + case 1819166258: + return -var2 / 2.0F * (--var0 * (var0 - 2.0F) - 1.0F) + var1; + } + } + }; + de CUBIC_IN = (var0, var1, var2, var3) -> { + float var4; + return var2 * (var4 = var0 / var3) * var4 * var4 + var1; + }; + de CUBIC_OUT = (var0, var1, var2, var3) -> { + float var4; + return var2 * ((var4 = var0 / var3 - 1.0F) * var4 * var4 + 1.0F) + var1; + }; + de CUBIC_IN_OUT = (var0, var1, var2, var3) -> { + int var4 = 1040483318; + + while (true) { + switch (var4) { + case -612226725: + return var2 / 2.0F * var0 * var0 * var0 + var1; + case 982867452: + float var5; + return var2 / 2.0F * ((var5 = var0 - 2.0F) * var5 * var5 + 2.0F) + var1; + case 1040483318: + } + + if ((var0 /= var3 / 2.0F) < 1.0F) { + var4 = -612226725; + } else { + var4 = 982867452; + } + } + }; + de QUARTIC_IN = (var0, var1, var2, var3) -> { + float var4; + return var2 * (var4 = var0 / var3) * var4 * var4 * var4 + var1; + }; + de QUARTIC_OUT = (var0, var1, var2, var3) -> { + float var4; + return -var2 * ((var4 = var0 / var3 - 1.0F) * var4 * var4 * var4 - 1.0F) + var1; + }; + de QUARTIC_IN_OUT = (var0, var1, var2, var3) -> { + int var4 = -936563826; + + while (true) { + switch (var4) { + case -2028439719: + return var2 / 2.0F * var0 * var0 * var0 * var0 + var1; + case -936563826: + default: + if ((var0 /= var3 / 2.0F) < 1.0F) { + var4 = -2028439719; + } else { + var4 = 99266792; + } + break; + case 99266792: + float var5; + return -var2 / 2.0F * ((var5 = var0 - 2.0F) * var5 * var5 * var5 - 2.0F) + var1; + } + } + }; + de QUINTIC_IN = (var0, var1, var2, var3) -> { + float var4; + return var2 * (var4 = var0 / var3) * var4 * var4 * var4 * var4 + var1; + }; + de QUINTIC_OUT = (var0, var1, var2, var3) -> { + float var4; + return var2 * ((var4 = var0 / var3 - 1.0F) * var4 * var4 * var4 * var4 + 1.0F) + var1; + }; + de QUINTIC_IN_OUT = (var0, var1, var2, var3) -> { + int var4 = 1040914688; + + while (true) { + switch (var4) { + case -2017584437: + return var2 / 2.0F * var0 * var0 * var0 * var0 * var0 + var1; + case 387525239: + float var5; + return var2 / 2.0F * ((var5 = var0 - 2.0F) * var5 * var5 * var5 * var5 + 2.0F) + var1; + case 1040914688: + } + + if ((var0 /= var3 / 2.0F) < 1.0F) { + var4 = -2017584437; + } else { + var4 = 387525239; + } + } + }; + de SINE_IN = (var0, var1, var2, var3) -> -var2 * (float)aqj.cos(var0 / var3 * (Math.PI / 2)) + var2 + var1; + de SINE_OUT = (var0, var1, var2, var3) -> var2 * (float)aqj.sin(var0 / var3 * (Math.PI / 2)) + var1; + de SINE_IN_OUT = (var0, var1, var2, var3) -> -var2 / 2.0F * ((float)aqj.cos(Math.PI * var0 / var3) - 1.0F) + var1; + de EXPO_IN = (var0, var1, var2, var3) -> { + float var5 = 0.0F; + int var4 = -419139452; + + while (true) { + switch (var4) { + case -1684637938: + var5 = var2 * (float)Math.pow(2.0, 10.0F * (var0 / var3 - 1.0F)) + var1; + var4 = -213021092; + break; + case -419139452: + default: + if (var0 == 0.0F) { + var4 = 211236687; + } else { + var4 = -1684637938; + } + break; + case -213021092: + return var5; + case 211236687: + var5 = var1; + var4 = -213021092; + } + } + }; + de EXPO_OUT = (var0, var1, var2, var3) -> { + float var5 = 0.0F; + int var4 = -1796170958; + + while (true) { + switch (var4) { + case -1796170958: + default: + if (var0 == var3) { + var4 = -600211603; + } else { + var4 = -705482515; + } + break; + case -1661454305: + return var5; + case -705482515: + var5 = var2 * (-((float)Math.pow(2.0, -10.0F * var0 / var3)) + 1.0F) + var1; + var4 = -1661454305; + break; + case -600211603: + var5 = var1 + var2; + var4 = -1661454305; + } + } + }; + de EXPO_IN_OUT = (var0, var1, var2, var3) -> { + int var4 = 1324571028; + + while (true) { + switch (var4) { + case -1918078225: + return var1 + var2; + case -1812123418: + if (var0 == var3) { + var4 = -1918078225; + } else { + var4 = -415429144; + } + break; + case -1440210574: + return var1; + case -476575412: + return var2 / 2.0F * (-((float)Math.pow(2.0, -10.0F * --var0)) + 2.0F) + var1; + case -415429144: + if ((var0 /= var3 / 2.0F) < 1.0F) { + var4 = 800215482; + } else { + var4 = -476575412; + } + break; + case 800215482: + return var2 / 2.0F * (float)Math.pow(2.0, 10.0F * (var0 - 1.0F)) + var1; + case 1324571028: + default: + if (var0 == 0.0F) { + var4 = -1440210574; + } else { + var4 = -1812123418; + } + } + } + }; + de CIRC_IN = (var0, var1, var2, var3) -> { + float var4; + return -var2 * ((float)Math.sqrt(1.0F - (var4 = var0 / var3) * var4) - 1.0F) + var1; + }; + de CIRC_OUT = (var0, var1, var2, var3) -> { + float var4; + return var2 * (float)Math.sqrt(1.0F - (var4 = var0 / var3 - 1.0F) * var4) + var1; + }; + de CIRC_IN_OUT = (var0, var1, var2, var3) -> { + int var4 = -117401474; + + while (true) { + switch (var4) { + case -943053608: + float var5; + return var2 / 2.0F * ((float)Math.sqrt(1.0F - (var5 = var0 - 2.0F) * var5) + 1.0F) + var1; + case -188214663: + return -var2 / 2.0F * ((float)Math.sqrt(1.0F - var0 * var0) - 1.0F) + var1; + case -117401474: + } + + if ((var0 /= var3 / 2.0F) < 1.0F) { + var4 = -188214663; + } else { + var4 = -943053608; + } + } + }; + da ELASTIC_IN = new db(); + da ELASTIC_OUT = new dd(); + da ELASTIC_IN_OUT = new dc(); + cw BACK_IN = new cx(); + cw BACK_OUT = new cz(); + cw BACK_IN_OUT = new cy(); + de BOUNCE_OUT = (var0, var1, var2, var3) -> { + int var4 = -897081057; + + while (true) { + switch (var4) { + case -1550010097: + float var7; + return var2 * (7.5625F * (var7 = var0 - 0.8181818F) * var7 + 0.9375F) + var1; + case -1442256694: + float var6; + return var2 * (7.5625F * (var6 = var0 - 0.54545456F) * var6 + 0.75F) + var1; + case -1136263518: + return var2 * (7.5625F * var0 * var0) + var1; + case -897081057: + default: + if ((var0 /= var3) < 0.36363637F) { + var4 = -1136263518; + } else { + var4 = 914844717; + } + break; + case 914844717: + if (var0 < 0.72727275F) { + var4 = -1442256694; + } else { + var4 = 1867590190; + } + break; + case 1292880681: + float var5; + return var2 * (7.5625F * (var5 = var0 - 0.95454544F) * var5 + 0.984375F) + var1; + case 1867590190: + if (var0 < 0.90909094F) { + var4 = -1550010097; + } else { + var4 = 1292880681; + } + } + } + }; + de BOUNCE_IN = (var0, var1, var2, var3) -> var2 - BOUNCE_OUT.ease(var3 - var0, 0.0F, var2, var3) + var1; + de BOUNCE_IN_OUT = (var0, var1, var2, var3) -> { + int var4 = 350543463; + + while (true) { + switch (var4) { + case 253091249: + return BOUNCE_OUT.ease(var0 * 2.0F - var3, 0.0F, var2, var3) * 0.5F + var2 * 0.5F + var1; + case 350543463: + default: + if (var0 < var3 / 2.0F) { + var4 = 1536986120; + } else { + var4 = 253091249; + } + break; + case 1536986120: + return BOUNCE_IN.ease(var0 * 2.0F, 0.0F, var2, var3) * 0.5F + var1; + } + } + }; + + static de generate(final double var0, final double var2, final double var4, final double var6) { + return new de() { + @Override + public float ease(float var1, float var2x, float var3, float var4x) { + float var5 = 0.0F; + float var6x = 0.0F; + float var7 = 0.0F; + int var8 = 66669451; + + while (true) { + switch (var8) { + case -1754547669: + var5 = var1 / var4x; + var6x = this.solveTBez((float)var0, (float)var4, var5); + var7 = this.bezierY(var6x, (float)var2, (float)var6); + return var2x + var3 * var7; + case -1102252944: + return var2x + var3; + case -313249493: + return var2x; + case 66669451: + default: + if (!(var4x <= 0.0F)) { + var8 = 2021933241; + } else { + var8 = -313249493; + } + break; + case 540188386: + if (var1 >= var4x) { + var8 = -1102252944; + } else { + var8 = -1754547669; + } + break; + case 2021933241: + if (var1 <= 0.0F) { + var8 = -313249493; + } else { + var8 = 540188386; + } + } + } + } + + private float solveTBez(float var1, float var2x, float var3) { + float var4x = 0.0F; + int var5 = 0; + float var6x = 0.0F; + int var7 = 0; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 1468590611; + + while (true) { + switch (var10) { + case -1498916966: + var10 = 169267678; + break; + case -1383617152: + if (Math.abs(var9) < 1.0E-6F) { + var10 = -615297930; + } else { + var10 = -1058244589; + } + break; + case -1058244589: + var4x -= (var8 - var3) / var9; + var4x = Math.max(0.0F, Math.min(1.0F, var4x)); + var7++; + var10 = -152377182; + break; + case -615297930: + var10 = 169267678; + break; + case -152377182: + if (var7 < (2089131264 ^ -2089131256) + ((2089131264 & -2089131256) << 1)) { + var10 = 1097878371; + } else { + var10 = 169267678; + } + break; + case 169267678: + return var4x; + case 1097878371: + var8 = this.bezierX(var4x, var1, var2x); + var9 = this.bezierDX(var4x, var1, var2x); + if (Math.abs(var8 - var3) < 1.0E-5F) { + var10 = -1498916966; + } else { + var10 = -1383617152; + } + break; + case 1468590611: + default: + var4x = var3; + var5 = 8; + var6x = 1.0E-5F; + var7 = 0; + var10 = -152377182; + } + } + } + + private float bezierX(float var1, float var2x, float var3) { + return 3.0F * (1.0F - var1) * (1.0F - var1) * var1 * var2x + 3.0F * (1.0F - var1) * var1 * var1 * var3 + var1 * var1 * var1; + } + + private float bezierDX(float var1, float var2x, float var3) { + return 3.0F * ((1.0F - var1) * (1.0F - 3.0F * var1) * var2x + (2.0F * var1 - 3.0F * var1 * var1) * var3) + 3.0F * var1 * var1; + } + + private float bezierY(float var1, float var2x, float var3) { + return 3.0F * (1.0F - var1) * (1.0F - var1) * var1 * var2x + 3.0F * (1.0F - var1) * var1 * var1 * var3 + var1 * var1 * var1; + } + }; + } + + float ease(float var1, float var2, float var3, float var4); +} diff --git a/src/main/java/defpackage/df.java b/src/main/java/defpackage/df.java new file mode 100644 index 0000000..b047076 --- /dev/null +++ b/src/main/java/defpackage/df.java @@ -0,0 +1,110 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; + +public class df { + private static final int CORNER_COUNT = 4; + private static final int TL = 0; + private static final int BL = 1; + private static final int TR = 2; + private static final int BR = 3; + private static final float MIN_PERIOD_MS = 1.0F; + private static final float TRANSPARENT = 0.0F; + private List baseColors; + private final List colors; + private final float periodMillis; + private int index; + private double stepStart = -1.0; + + public df(List var1, long var2) { + if (var1.size() != (712338160 ^ -712338156) + ((712338160 & -712338156) << 1)) { + throw new IllegalArgumentException( + "need 4 colors - Gradient.of throws exception" + ); + } + + this.baseColors = new ArrayList<>(var1); + this.colors = new ArrayList<>(var1); + this.periodMillis = Math.max((float)var2, 1.0F); + } + + public void update() { + double var1 = 0.0; + float var3 = 0.0F; + asu var4 = null; + int var5 = 0; + int var6 = 0; + int var7 = -706161992; + + while (true) { + switch (var7) { + case -1735760246: + this.stepStart = var1; + var7 = -691343164; + break; + case -706161992: + default: + var1 = cs.elapsedMillis(); + if (this.stepStart < 0.0) { + var7 = -1735760246; + } else { + var7 = -691343164; + } + break; + case -691343164: + var3 = Math.min(1.0F, (float)((var1 - this.stepStart) / this.periodMillis)); + var4 = this.baseColors.get(0).mulAlpha(0.0F); + var5 = fadingCorner(this.index); + var6 = risingCorner(this.index); + this.colors.set(var5, this.baseColors.get(var5).mix(var4, var3)); + this.colors.set(var6, var4.mix(this.baseColors.get(var6), var3)); + if (var3 >= 1.0F) { + var7 = -35275036; + } else { + var7 = 1298850366; + } + break; + case -35275036: + this.stepStart = var1; + this.index = (this.index + (379554214 | -379554213) + (379554214 & -379554213)) + % ((1550696269 ^ -1550696265) + ((1550696269 & -1550696265) << 1)); + var7 = 1298850366; + break; + case 1298850366: + return; + } + } + } + + private static int fadingCorner(int var0) { + return switch (var0) { + case 1 -> (349161992 ^ -349161990) + ((349161992 & -349161990) << 1); + case 2 -> (-1848426978 | 1848426981) + (-1848426978 & 1848426981); + case 3 -> (191952215 | -191952214) + (191952215 & -191952214); + default -> 0; + }; + } + + private static int risingCorner(int var0) { + return switch (var0) { + case 1 -> (-1105397789 ^ 1105397789) + ((-1105397789 & 1105397789) << 1); + case 2 -> (1364271492 | -1364271490) + (1364271492 & -1364271490); + case 3 -> (-2145182444 | 2145182447) + (-2145182444 & 2145182447); + default -> 1; + }; + } + + public ary toGradient() { + return ary.of( + this.colors.get((599689001 ^ -599689001) + ((599689001 & -599689001) << 1)), + this.colors.get((-431685697 ^ 431685698) + ((-431685697 & 431685698) << 1)), + this.colors.get((136205368 | -136205366) + (136205368 & -136205366)), + this.colors.get((503798172 | -503798169) + (503798172 & -503798169)) + ); + } + + public List getBaseColors() { + return this.baseColors; + } +} diff --git a/src/main/java/defpackage/dg.java b/src/main/java/defpackage/dg.java new file mode 100644 index 0000000..464a5ce --- /dev/null +++ b/src/main/java/defpackage/dg.java @@ -0,0 +1,70 @@ +package defpackage; + +import com.mojang.brigadier.CommandDispatcher; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientSuggestionProvider; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.server.permissions.PermissionSet; + +public class dg { + private String prefix = "."; + private final CommandDispatcher dispatcher = new CommandDispatcher(); + private final SharedSuggestionProvider source = new ClientSuggestionProvider( + Minecraft.getInstance().getConnection(), Minecraft.getInstance(), PermissionSet.NO_PERMISSIONS + ); + private final List commands = new ArrayList<>(); + + public dg() { + this.registerCommand(new dl()); + this.registerCommand(new di()); + this.registerCommand(new dj()); + this.registerCommand(new dk()); + this.registerCommand(new dn()); + this.registerCommand(new dm()); + this.registerCommand(new ds()); + this.registerCommand(new dp()); + this.registerCommand(new dq()); + this.registerCommand(new dr()); + } + + public void registerCommand(dh var1) { + int var2 = 1494904552; + + while (true) { + switch (var2) { + case -580884441: + var1.register(this.dispatcher); + this.commands.add(var1); + return; + case 1494904552: + default: + if (var1 == null) { + var2 = 1594027063; + } else { + var2 = -580884441; + } + break; + case 1594027063: + return; + } + } + } + + public String getPrefix() { + return this.prefix; + } + + public CommandDispatcher getDispatcher() { + return this.dispatcher; + } + + public SharedSuggestionProvider getSource() { + return this.source; + } + + public List getCommands() { + return this.commands; + } +} diff --git a/src/main/java/defpackage/dh.java b/src/main/java/defpackage/dh.java new file mode 100644 index 0000000..14de185 --- /dev/null +++ b/src/main/java/defpackage/dh.java @@ -0,0 +1,38 @@ +package defpackage; + +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import com.mojang.brigadier.builder.RequiredArgumentBuilder; +import net.minecraft.commands.SharedSuggestionProvider; +import org.jetbrains.annotations.NotNull; + +public abstract class dh implements aqf { + private final String command; + + protected dh(String var1) { + this.command = var1; + } + + public void register(CommandDispatcher var1) { + LiteralArgumentBuilder var2 = LiteralArgumentBuilder.literal(this.command); + this.execute(var2); + var1.register(var2); + } + + public abstract void execute(LiteralArgumentBuilder var1); + + @NotNull + protected static RequiredArgumentBuilder arg(String var0, ArgumentType var1) { + return RequiredArgumentBuilder.argument(var0, var1); + } + + @NotNull + protected static LiteralArgumentBuilder literal(String var0) { + return LiteralArgumentBuilder.literal(var0); + } + + public String getCommand() { + return this.command; + } +} diff --git a/src/main/java/defpackage/di.java b/src/main/java/defpackage/di.java new file mode 100644 index 0000000..4388ee1 --- /dev/null +++ b/src/main/java/defpackage/di.java @@ -0,0 +1,109 @@ +package defpackage; + +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import net.minecraft.commands.SharedSuggestionProvider; + +public class di extends dh { + public di() { + super("config"); + } + + @Override + public void execute(LiteralArgumentBuilder var1) { + var1.then( + literal("save") + .executes( + var0 -> { + int var1x = 0; + int var2 = -460499813; + + while (true) { + switch (var2) { + case -1452519488: + return 1; + case -460499813: + default: + boolean var3 = bz.getInstance() + .getConfigManager() + .saveConfig("confeg"); + if (var3) { + var2 = 949106866; + } else { + var2 = -263470707; + } + break; + case -263470707: + ape.displayMessage( + apd.WARN, "§cError saving configuration" + ); + var2 = -1452519488; + break; + case 949106866: + ape.displayMessage( + apd.INFO, "§aConfiguration saved" + ); + var2 = -1452519488; + } + } + } + ) + ); + var1.then( + literal("load") + .executes( + var0 -> { + int var1x = 0; + int var2 = 1727711477; + + while (true) { + switch (var2) { + case -1837857826: + ape.displayMessage(apd.INFO, "§aConfiguration loaded"); + var2 = -1025985075; + break; + case -1601192335: + ape.displayMessage( + apd.WARN, "§cError loading configuration" + ); + var2 = -1025985075; + break; + case -1025985075: + return 1; + case 1727711477: + default: + boolean var3 = bz.getInstance() + .getConfigManager() + .loadConfig("confeg"); + if (var3) { + var2 = -1837857826; + } else { + var2 = -1601192335; + } + } + } + } + ) + ); + var1.then( + literal("help") + .executes( + var0 -> { + ape.displayMessage( + apd.INFO, + "§6Usage: §r.config " + ); + ape.displayMessage(apd.INFO, "§6Commands:§r"); + ape.displayMessage( + apd.INFO, + "§e.config save §7- save configuration" + ); + ape.displayMessage( + apd.INFO, + "§e.config load §7- load configuration" + ); + return 1; + } + ) + ); + } +} diff --git a/src/main/java/defpackage/dj.java b/src/main/java/defpackage/dj.java new file mode 100644 index 0000000..15bacd7 --- /dev/null +++ b/src/main/java/defpackage/dj.java @@ -0,0 +1,33 @@ +package defpackage; + +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import net.minecraft.commands.SharedSuggestionProvider; + +public class dj extends dh { + public dj() { + super("deathfx"); + } + + @Override + public void execute(LiteralArgumentBuilder var1) { + var1.executes( + var0 -> { + up.INSTANCE.spawnDummy((boolean)((((301655405 ^ -301655404) + ((301655405 & -301655404) << 1))) != 0)); + ape.displayMessage( + apd.INFO, "Spawned dummy, dies in 1.5s" + ); + return 1; + } + ); + var1.then(literal("spawn").executes(var0 -> { + up.INSTANCE.spawnDummy((boolean)((((828346996 | -828346996) + (828346996 & -828346996))) != 0)); + ape.displayMessage(apd.INFO, "Spawned dummy"); + return 1; + })); + var1.then(literal("kill").executes(var0 -> { + up.INSTANCE.killDummy(); + ape.displayMessage(apd.INFO, "Killed dummy"); + return 1; + })); + } +} diff --git a/src/main/java/defpackage/dk.java b/src/main/java/defpackage/dk.java new file mode 100644 index 0000000..3571926 --- /dev/null +++ b/src/main/java/defpackage/dk.java @@ -0,0 +1,117 @@ +package defpackage; + +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import net.minecraft.commands.SharedSuggestionProvider; + +public class dk extends dh { + public dk() { + super("fakeplayer"); + } + + @Override + public void execute(LiteralArgumentBuilder var1) { + var1.executes( + var0 -> { + int var1x = -2127330619; + + while (true) { + switch (var1x) { + case -2127330619: + default: + if (apk.getInstance().spawn()) { + var1x = -970488441; + } else { + var1x = 1423670155; + } + break; + case -970488441: + ape.displayMessage( + apd.INFO, + "Fake player spawned, hit it to test" + ); + var1x = 1690876519; + break; + case 1423670155: + ape.displayMessage(apd.WARN, "Cannot spawn: no world"); + var1x = 1690876519; + break; + case 1690876519: + return 1; + } + } + } + ); + var1.then( + literal("kill") + .executes( + var0 -> { + int var1x = 124694417; + + while (true) { + switch (var1x) { + case -1212687112: + ape.displayMessage( + apd.INFO, "Fake player killed" + ); + var1x = 1920362855; + break; + case 124694417: + default: + if (apk.getInstance().kill()) { + var1x = -1212687112; + } else { + var1x = 208810717; + } + break; + case 208810717: + ape.displayMessage( + apd.WARN, + "No living fake player" + ); + var1x = 1920362855; + break; + case 1920362855: + return 1; + } + } + } + ) + ); + var1.then( + literal("remove") + .executes( + var0 -> { + int var1x = 1176988353; + + while (true) { + switch (var1x) { + case -1243478606: + ape.displayMessage( + apd.WARN, + "No fake player to remove" + ); + var1x = -575366480; + break; + case -575366480: + return 1; + case 1176988353: + default: + if (apk.getInstance().despawn()) { + var1x = 1770760074; + } else { + var1x = -1243478606; + } + break; + case 1770760074: + ape.displayMessage( + apd.INFO, + "Fake player removed" + ); + var1x = -575366480; + } + } + } + ) + ); + } +} diff --git a/src/main/java/defpackage/dl.java b/src/main/java/defpackage/dl.java new file mode 100644 index 0000000..2499fc0 --- /dev/null +++ b/src/main/java/defpackage/dl.java @@ -0,0 +1,54 @@ +package defpackage; + +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import net.minecraft.commands.SharedSuggestionProvider; + +public class dl extends dh { + public dl() { + super("friend"); + } + + @Override + public void execute(LiteralArgumentBuilder var1) { + var1.then( + literal("add") + .then(arg("player", dz.create()).executes(var0 -> { + String var1x = null; + int var2 = 1849079556; + + while (true) { + switch (var2) { + case -1965825731: + bz.getInstance().getFriendManager().add(var1x); + ape.displayMessage(apd.INFO, "Added " + var1x); + return 1; + case -762725382: + ape.displayMessage(apd.WARN, "Already added " + var1x); + return 1; + case 1849079556: + } + + var1x = (String)var0.getArgument("player", String.class); + if (bz.getInstance().getFriendManager().getItems().contains(var1x)) { + var2 = -762725382; + } else { + var2 = -1965825731; + } + } + })) + ); + var1.then( + literal("remove") + .then(arg("player", dw.create()).executes(var0 -> { + String var1x = (String)var0.getArgument("player", String.class); + bz.getInstance().getFriendManager().removeFriend(var1x); + ape.displayMessage(apd.INFO, var1x + " removed from friends"); + return 1; + })) + ); + var1.then(literal("list").executes(var0 -> { + ape.displayMessage(apd.INFO, bz.getInstance().getFriendManager().getItems().toString()); + return 1; + })); + } +} diff --git a/src/main/java/defpackage/dm.java b/src/main/java/defpackage/dm.java new file mode 100644 index 0000000..150d8f2 --- /dev/null +++ b/src/main/java/defpackage/dm.java @@ -0,0 +1,200 @@ +package defpackage; + +import com.mojang.brigadier.arguments.StringArgumentType; +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import net.minecraft.commands.SharedSuggestionProvider; + +public class dm extends dh { + private static final String SPEC_ARG = "spec"; + private static final String DUMP_KEYWORD = "dump"; + private static final String DUMP_DIRECTORY = "diagnostics"; + private static final String DUMP_PREFIX = "diagnostics-"; + private static final String DUMP_SUFFIX = ".txt"; + private static final String DUMP_FAILURE = "diagnostics dump failed"; + + public dm() { + super("log"); + } + + @Override + public void execute(LiteralArgumentBuilder var1) { + var1.executes(var0 -> { + status(); + return 1; + }); + var1.then(arg("spec", StringArgumentType.greedyString()).executes(var0 -> { + String var1x = null; + int var2 = 1002062793; + + while (true) { + switch (var2) { + case -2138938496: + return 1; + case -2127242384: + ape.displayMessage(apd.WARN, "§cUse §r.log = §7— categories: " + categories()); + var2 = -2138938496; + break; + case 1002062793: + default: + var1x = ((String)var0.getArgument("spec", String.class)).trim(); + if ("dump".equalsIgnoreCase(var1x)) { + var2 = 1686889568; + } else { + var2 = 1071311769; + } + break; + case 1071311769: + if (Cif.applyOverrides(var1x)) { + var2 = 1894307390; + } else { + var2 = -2127242384; + } + break; + case 1686889568: + dump(); + return 1; + case 1894307390: + ape.displayMessage(apd.INFO, "§aLog levels: §r" + describeLevels()); + var2 = -2138938496; + } + } + })); + } + + private static void status() { + String[] var0 = null; + int var1 = 0; + int var2 = 0; + Object var3 = null; + int var4 = 1887037038; + + while (true) { + switch (var4) { + case 102560875: + if (var2 < var1) { + var4 = 874168461; + } else { + var4 = 170876442; + } + break; + case 170876442: + ape.displayMessage( + apd.INFO, + "§7.log = §8| §7.log dump §8| §7.report " + ); + return; + case 874168461: + var3 = var0[var2]; + ape.displayMessage(apd.INFO, "§7" + var3); + var2++; + var4 = 102560875; + break; + case 1887037038: + default: + ape.displayMessage(apd.INFO, "§bEvents §r" + id.captured() + " §7· §eWarnings §r" + id.warnings() + " §7· §cErrors §r" + id.errors()); + ape.displayMessage(apd.INFO, "§7Levels: §r" + describeLevels()); + var0 = ig.summary().split("\n"); + var1 = var0.length; + var2 = 0; + var4 = 102560875; + } + } + } + + private static void dump() { + try { + Path var0 = new File(bz.DIRECTORY, "diagnostics").toPath(); + Files.createDirectories(var0); + Path var1 = var0.resolve("diagnostics-" + System.currentTimeMillis() + ".txt"); + Files.writeString(var1, ig.render(), StandardCharsets.UTF_8); + ape.displayMessage(apd.INFO, "§aSaved §r" + var1); + } catch (Exception var2) { + id.warn(Cif.GENERAL, "diagnostics dump failed", var2); + ape.displayMessage( + apd.WARN, + "§cCould not write the diagnostics dump" + ); + } + } + + private static String describeLevels() { + String var0 = null; + String var2 = null; + int var1 = -1333507763; + + while (true) { + switch (var1) { + case -1873131331: + var2 = var0; + var1 = 1560695240; + break; + case -1333507763: + default: + var0 = Cif.describeOverrides(); + if (var0.isEmpty()) { + var1 = -507017188; + } else { + var1 = -1873131331; + } + break; + case -507017188: + var2 = "all " + ii.DEFAULT_CONSOLE.name().toLowerCase(); + var1 = 1560695240; + break; + case 1560695240: + return var2; + } + } + } + + private static String categories() { + StringBuilder var0 = null; + Cif[] var1 = null; + int var2 = 0; + int var3 = 0; + Cif var4 = null; + int var5 = -674265158; + + while (true) { + switch (var5) { + case -2094942041: + if (var3 < var2) { + var5 = 1060458008; + } else { + var5 = 1846447680; + } + break; + case -1063628604: + var0.append((char)((1760045776 | -1760045744) + (1760045776 & -1760045744))); + var5 = 2108587684; + break; + case -674265158: + default: + var0 = new StringBuilder(); + var1 = Cif.values(); + var2 = var1.length; + var3 = 0; + var5 = -2094942041; + break; + case 1060458008: + var4 = var1[var3]; + if (!var0.isEmpty()) { + var5 = -1063628604; + } else { + var5 = 2108587684; + } + break; + case 1846447680: + return var0.toString(); + case 2108587684: + var0.append(var4.key()); + var3++; + var5 = -2094942041; + } + } + } +} diff --git a/src/main/java/defpackage/dn.java b/src/main/java/defpackage/dn.java new file mode 100644 index 0000000..18c5afb --- /dev/null +++ b/src/main/java/defpackage/dn.java @@ -0,0 +1,43 @@ +package defpackage; + +import com.mojang.brigadier.arguments.StringArgumentType; +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import net.minecraft.commands.SharedSuggestionProvider; + +public class dn extends dh { + private static final String MESSAGE_ARG = "message"; + + public dn() { + super("report"); + } + + @Override + public void execute(LiteralArgumentBuilder var1) { + var1.executes( + var0 -> { + ape.displayMessage( + apd.INFO, + "§6Usage: §r.report " + ); + ape.displayMessage( + apd.INFO, + "§7Sends your description and latest.log straight to the developers." + ); + return 1; + } + ); + var1.then( + arg("message", StringArgumentType.greedyString()) + .executes( + var0 -> { + akj.submit( + (String)var0.getArgument( + "message", String.class + ) + ); + return 1; + } + ) + ); + } +} diff --git a/src/main/java/defpackage/dp.java b/src/main/java/defpackage/dp.java new file mode 100644 index 0000000..7793f1c --- /dev/null +++ b/src/main/java/defpackage/dp.java @@ -0,0 +1,228 @@ +package defpackage; + +import com.mojang.brigadier.arguments.IntegerArgumentType; +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import java.util.List; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Mirror; + +public class dp extends dh { + private static final String FILE_ARGUMENT = "file"; + private static final String X_ARGUMENT = "x"; + private static final String Y_ARGUMENT = "y"; + private static final String Z_ARGUMENT = "z"; + private static final String LITERAL_LIST = "list"; + private static final String LITERAL_LOAD = "load"; + private static final String LITERAL_PLACE = "place"; + private static final String LITERAL_MOVE = "move"; + private static final String LITERAL_CLEAR = "clear"; + private static final String LITERAL_INFO = "info"; + private static final String MESSAGE_EMPTY = "No schematics in Evolution/schematics"; + private static final String MESSAGE_LIST = "Schematics: "; + private static final String MESSAGE_NONE = "No schematic loaded"; + private static final String MESSAGE_INFO = "%s %dx%dx%d %d blocks anchor %d %d %d %s%s"; + private static final String MESSAGE_PROGRESS = " %d placed / %d in range, %d wrong"; + private static final String LIST_SEPARATOR = ", "; + private static final String MIRROR_SUFFIX = " mirrored "; + private static final String DEGREE_SUFFIX = " deg"; + private static final String EMPTY = ""; + + public dp() { + super("schem"); + } + + @Override + public void execute(LiteralArgumentBuilder var1) { + var1.then( + literal("list") + .executes( + var0 -> { + List var1x = null; + String var3 = null; + int var2 = 841064184; + + while (true) { + switch (var2) { + case 189331427: + var3 = "No schematics in Evolution/schematics"; + var2 = 992049486; + break; + case 841064184: + default: + var1x = ala.INSTANCE.files(); + if (var1x.isEmpty()) { + var2 = 189331427; + } else { + var2 = 865167669; + } + break; + case 865167669: + var3 = "Schematics: " + String.join(", ", var1x); + var2 = 992049486; + break; + case 992049486: + ape.displayInfo(var3); + return 1; + } + } + } + ) + ); + var1.then( + literal("load") + .then(arg("file", ea.create()).executes(var0 -> { + ala.INSTANCE.load((String)var0.getArgument("file", String.class)); + su.INSTANCE.refreshFiles(); + return 1; + })) + ); + var1.then( + ((LiteralArgumentBuilder)literal("place").executes(var0 -> { + ala.INSTANCE.placeAtPlayer(); + return 1; + })) + .then( + arg("x", IntegerArgumentType.integer()) + .then( + arg("y", IntegerArgumentType.integer()) + .then( + arg("z", IntegerArgumentType.integer()) + .executes( + var0 -> { + ala.INSTANCE + .placeAt( + new BlockPos( + (Integer)var0.getArgument("x", Integer.class), + (Integer)var0.getArgument("y", Integer.class), + (Integer)var0.getArgument( + "z", Integer.class + ) + ) + ); + return 1; + } + ) + ) + ) + ) + ); + var1.then( + literal("move") + .then( + arg("x", IntegerArgumentType.integer()) + .then( + arg("y", IntegerArgumentType.integer()) + .then( + arg("z", IntegerArgumentType.integer()) + .executes( + var0 -> { + ala.INSTANCE + .move( + (Integer)var0.getArgument("x", Integer.class), + (Integer)var0.getArgument("y", Integer.class), + (Integer)var0.getArgument("z", Integer.class) + ); + return 1; + } + ) + ) + ) + ) + ); + var1.then(literal("clear").executes(var0 -> { + ala.INSTANCE.clear(); + return 1; + })); + var1.then( + literal("info") + .executes( + var0 -> { + akx var1x = null; + alf var2 = null; + alg var3 = null; + BlockPos var4 = null; + Object var5 = null; + String var7 = null; + int var6 = -1263770400; + + while (true) { + switch (var6) { + case -2010627048: + var3 = ala.INSTANCE.getScan(); + var4 = var2.getOrigin(); + if (var2.getMirror() == Mirror.NONE) { + var6 = 1193572199; + } else { + var6 = 442422957; + } + break; + case -1263770400: + default: + var1x = ala.INSTANCE.getData(); + var2 = ala.INSTANCE.getPlacement(); + if (var1x != null) { + var6 = -656197227; + } else { + var6 = 1721065996; + } + break; + case -656197227: + if (var2 == null) { + var6 = 1721065996; + } else { + var6 = -2010627048; + } + break; + case 442422957: + var7 = " mirrored " + var2.getMirror().name(); + var6 = 1029096796; + break; + case 1029096796: + var5 = var7; + String var10000 = "%s %dx%dx%d %d blocks anchor %d %d %d %s%s"; + Object[] var10001 = new Object[10]; + var10001[0] = var1x.getName(); + var10001[1] = var1x.getSizeX(); + var10001[2] = var1x.getSizeY(); + var10001[3] = var1x.getSizeZ(); + var10001[4] = var1x.getBlockCount(); + var10001[5] = var4.getX(); + var10001[6] = var4.getY(); + var10001[7] = var4.getZ(); + var10001[8] = rotationDegrees(var2) + " deg"; + var10001[9] = var5; + var10000 = var10000.formatted(var10001); + String var10 = " %d placed / %d in range, %d wrong"; + Object[] var10002 = new Object[3]; + var10002[0] = var3.getMatchedCount(); + var10002[1] = var3.expectedCount(); + var10002[2] = var3.getWrongCount(); + ape.displayInfo(var10000 + var10.formatted(var10002)); + return 1; + case 1193572199: + var7 = ""; + var6 = 1029096796; + break; + case 1721065996: + ape.displayWarning("No schematic loaded"); + return 1; + } + } + } + ) + ); + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static int rotationDegrees(alf var0) { + return switch (Cdo.$SwitchMap$net$minecraft$world$level$block$Rotation[var0.getRotation().ordinal()]) { + case 1 -> (-1081581800 | 1081581800) + (-1081581800 & 1081581800); + case 2 -> (1976261926 ^ -1976261836) + ((1976261926 & -1976261836) << 1); + case 3 -> (1457893400 | -1457893220) + (1457893400 & -1457893220); + case 4 -> (-796531530 | 796531800) + (-796531530 & 796531800); + default -> throw new MatchException(null, null); + }; + } +} diff --git a/src/main/java/defpackage/dq.java b/src/main/java/defpackage/dq.java new file mode 100644 index 0000000..c463720 --- /dev/null +++ b/src/main/java/defpackage/dq.java @@ -0,0 +1,309 @@ +package defpackage; + +import com.mojang.brigadier.arguments.IntegerArgumentType; +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import java.util.Locale; +import net.minecraft.client.Minecraft; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.HitResult.Type; + +public final class dq extends dh { + private static final String COMMAND = "showcase"; + private static final String STOP = "stop"; + private static final String POS_ONE = "pos1"; + private static final String POS_TWO = "pos2"; + private static final String CLEAR = "clear"; + private static final String AREA = "area"; + private static final String SECONDS = "seconds"; + private static final int MIN_SECONDS = 4; + private static final int MAX_SECONDS = 40; + private static final String MESSAGE_STOPPED = "Flyby stopped"; + private static final String MESSAGE_IDLE = "No flyby is running"; + private static final String MESSAGE_NO_WORLD = "Join a world first"; + private static final String MESSAGE_CLEARED = "Area cleared, back to automatic detection"; + private static final String MESSAGE_NO_AREA = "No area selected"; + private static final String CORNER_FORMAT = "Corner %d set to %d %d %d"; + private static final String AREA_FORMAT = "Area %d x %d x %d from %d %d %d to %d %d %d"; + private static final String HALF_AREA = "Second corner is still missing"; + + public dq() { + super("showcase"); + } + + @Override + public void execute(LiteralArgumentBuilder var1) { + ams[] var2 = null; + int var3 = 0; + int var4 = 0; + Object var5 = null; + String var6 = null; + int var7 = -993844548; + + while (true) { + switch (var7) { + case -1694487340: + var5 = var2[var4]; + var6 = ((ams)var5).getLabel() + .toLowerCase(Locale.ROOT) + .replace( + (char)(32), + (char)((-1156676000 ^ 1156676045) + ((-1156676000 & 1156676045) << 1)) + ); + var1.then( + ((LiteralArgumentBuilder)literal(var6).executes(var1x -> start(var5, (-1504016657 ^ 1504016657) + ((-1504016657 & 1504016657) << 1)))) + .then( + arg( + "seconds", + IntegerArgumentType.integer( + 4, (1772084225 | -1772084185) + (1772084225 & -1772084185) + ) + ) + .executes( + var1x -> start( + var5, + IntegerArgumentType.getInteger(var1x, "seconds") + ) + ) + ) + ); + var4++; + var7 = -1496412202; + break; + case -1496412202: + if (var4 < var3) { + var7 = -1694487340; + } else { + var7 = -532971834; + } + break; + case -993844548: + default: + var1.executes(var0 -> start()); + var1.then(literal("stop").executes(var0 -> stop())); + var1.then( + literal("pos1") + .executes(var0 -> corner((boolean)((((1608940661 ^ -1608940660) + ((1608940661 & -1608940660) << 1))) != 0))) + ); + var1.then( + literal("pos2") + .executes(var0 -> corner((boolean)((((433662503 ^ -433662503) + ((433662503 & -433662503) << 1))) != 0))) + ); + var1.then(literal("clear").executes(var0 -> clear())); + var1.then(literal("area").executes(var0 -> area())); + var2 = ams.values(); + var3 = var2.length; + var4 = 0; + var7 = -1496412202; + break; + case -532971834: + return; + } + } + } + + private static int start() { + restart(); + return 1; + } + + private static int start(ams var0, int var1) { + sv.INSTANCE.applyShot(var0, var1); + restart(); + return 1; + } + + private static void restart() { + int var0 = -1220470819; + + while (true) { + switch (var0) { + case -1443836639: + sv.INSTANCE.setToggled((boolean)((((-2118626875 | 2118626875) + (-2118626875 & 2118626875))) != 0)); + var0 = 676795199; + break; + case -1220470819: + default: + if (sv.INSTANCE.isEnabled()) { + var0 = -1443836639; + } else { + var0 = 676795199; + } + break; + case 676795199: + sv.INSTANCE.setToggled((boolean)((((-1013159668 | 1013159669) + (-1013159668 & 1013159669))) != 0)); + return; + } + } + } + + private static int stop() { + int var0 = -252419708; + + while (true) { + switch (var0) { + case -1444005921: + ape.displayWarning("No flyby is running"); + var0 = 931086223; + break; + case -1437507274: + sv.INSTANCE.setToggled((boolean)((((-312224381 | 312224381) + (-312224381 & 312224381))) != 0)); + ape.displayInfo("Flyby stopped"); + var0 = 931086223; + break; + case -252419708: + default: + if (sv.INSTANCE.isEnabled()) { + var0 = -1437507274; + } else { + var0 = -1444005921; + } + break; + case 931086223: + return 1; + } + } + } + + private static int corner(boolean var0) { + BlockPos var1 = targeted(); + if (var1 == null) { + ape.displayWarning("Join a world first"); + return 1; + } + + amm var2 = amm.INSTANCE; + if (var0) { + var2.setFirst(var1); + } else { + var2.setSecond(var1); + } + + String var10000 = "Corner %d set to %d %d %d"; + Object[] var10001 = new Object[4]; + var10001[0] = var0 + ? 1: 2; + var10001[1] = var1.getX(); + var10001[2] = var1.getY(); + var10001[3] = var1.getZ(); + ape.displayInfo(String.format(var10000, var10001)); + return var2.isComplete() ? area() : 1; + } + + private static int clear() { + amm.INSTANCE.clear(); + ape.displayInfo( + "Area cleared, back to automatic detection" + ); + return 1; + } + + private static int area() { + amm var0 = null; + String var2 = null; + int var1 = -113184514; + + while (true) { + switch (var1) { + case -1843209292: + var2 = "Second corner is still missing"; + var1 = 1407417962; + break; + case -494046258: + if (var0.getFirst() == null) { + var1 = 2098471481; + } else { + var1 = -1843209292; + } + break; + case -113184514: + default: + var0 = amm.INSTANCE; + if (!var0.isComplete()) { + var1 = -494046258; + } else { + var1 = 1239814856; + } + break; + case 1239814856: + String var10000 = "Area %d x %d x %d from %d %d %d to %d %d %d"; + Object[] var10001 = new Object[9]; + var10001[0] = var0.maxX() + - var0.minX() + + 1; + var10001[1] = var0.maxY() + - var0.minY() + + 1; + var10001[2] = var0.maxZ() + - var0.minZ() + + 1; + var10001[3] = var0.minX(); + var10001[4] = var0.minY(); + var10001[5] = var0.minZ(); + var10001[6] = var0.maxX(); + var10001[7] = var0.maxY(); + var10001[8] = var0.maxZ(); + ape.displayInfo(String.format(var10000, var10001)); + return 1; + case 1407417962: + ape.displayWarning(var2); + return 1; + case 2098471481: + var2 = "No area selected"; + var1 = 1407417962; + } + } + } + + private static BlockPos targeted() { + Minecraft var0 = null; + HitResult var1 = null; + BlockHitResult var2 = null; + int var3 = 42612535; + + while (true) { + switch (var3) { + case -2018940884: + var2 = (BlockHitResult)var1; + if (var1.getType() == Type.BLOCK) { + var3 = 1995259693; + } else { + var3 = 375550142; + } + break; + case -593921409: + var1 = var0.hitResult; + if (var1 instanceof BlockHitResult) { + var3 = -2018940884; + } else { + var3 = 375550142; + } + break; + case 42612535: + default: + var0 = Minecraft.getInstance(); + if (var0.player != null) { + var3 = 109023771; + } else { + var3 = 1353434183; + } + break; + case 109023771: + if (var0.level == null) { + var3 = 1353434183; + } else { + var3 = -593921409; + } + break; + case 375550142: + return var0.player.blockPosition(); + case 1353434183: + return null; + case 1995259693: + return var2.getBlockPos(); + } + } + } +} diff --git a/src/main/java/defpackage/dr.java b/src/main/java/defpackage/dr.java new file mode 100644 index 0000000..1fdebfe --- /dev/null +++ b/src/main/java/defpackage/dr.java @@ -0,0 +1,95 @@ +package defpackage; + +import com.mojang.brigadier.arguments.IntegerArgumentType; +import com.mojang.brigadier.arguments.StringArgumentType; +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import net.minecraft.commands.SharedSuggestionProvider; + +public class dr extends dh { + private static final String LINK_ARGUMENT = "link"; + private static final String PLAYER_ARGUMENT = "player"; + private static final String SECONDS_ARGUMENT = "seconds"; + private static final int MAX_SECONDS = 86400; + private static final String MODULE_DISABLED = "Enable GuiPresence to watch videos together"; + + public dr() { + super("watch"); + } + + @Override + public void execute(LiteralArgumentBuilder var1) { + var1.then(literal("stop").executes(var0 -> run(aoh::stop))); + var1.then( + literal("pause") + .executes(var0 -> run(() -> aoh.setPaused((boolean)((((-1767397503 ^ 1767397504) + ((-1767397503 & 1767397504) << 1))) != 0)))) + ); + var1.then( + literal("resume") + .executes(var0 -> run(() -> aoh.setPaused((boolean)((((1839313169 | -1839313169) + (1839313169 & -1839313169))) != 0)))) + ); + var1.then(literal("leave").executes(var0 -> run(aoh::leave))); + var1.then( + literal("seek") + .then( + arg( + "seconds", + IntegerArgumentType.integer( + 0, (-2044810702 ^ 2044897102) + ((-2044810702 & 2044897102) << 1) + ) + ) + .executes( + var0 -> run( + () -> aoh.seekSeconds( + ((Integer)var0.getArgument("seconds", Integer.class)).intValue() + ) + ) + ) + ) + ); + var1.then( + literal("join") + .then( + arg("player", StringArgumentType.word()) + .suggests((var0, var1x) -> SharedSuggestionProvider.suggest(aoh.watchingPlayers(), var1x)) + .executes( + var0 -> run( + () -> aoh.join( + (String)var0.getArgument("player", String.class) + ) + ) + ) + ) + ); + var1.then( + arg("link", StringArgumentType.greedyString()) + .executes( + var0 -> run(() -> aoh.play((String)var0.getArgument("link", String.class))) + ) + ); + } + + private static int run(Runnable var0) { + int var1 = 2035728486; + + while (true) { + switch (var1) { + case 203626158: + ape.displayMessage( + apd.WARN, + "Enable GuiPresence to watch videos together" + ); + return 1; + case 998089686: + var0.run(); + return 1; + case 2035728486: + } + + if (!vd.INSTANCE.isEnabled()) { + var1 = 203626158; + } else { + var1 = 998089686; + } + } + } +} diff --git a/src/main/java/defpackage/ds.java b/src/main/java/defpackage/ds.java new file mode 100644 index 0000000..ae5d587 --- /dev/null +++ b/src/main/java/defpackage/ds.java @@ -0,0 +1,231 @@ +package defpackage; + +import com.mojang.brigadier.arguments.StringArgumentType; +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import java.util.List; +import java.util.Locale; +import net.minecraft.commands.SharedSuggestionProvider; + +public class ds extends dh { + private static final String NAME_ARGUMENT = "name"; + private static final String ADDED_PREFIX = "Waypoint "; + private static final String ADDED_SUFFIX = " added"; + private static final String ADD_FAILURE = "Could not add waypoint "; + private static final String REMOVED_SUFFIX = " removed"; + private static final String MISSING_PREFIX = "No waypoint "; + private static final String TRACKING_PREFIX = "Tracking "; + private static final String TRACKING_CLEARED = "Waypoint tracking cleared"; + private static final String EMPTY_LIST = "no waypoints"; + private static final String ENTRY_FORMAT = "%s (%d %d %d)"; + private static final String ENTRY_SEPARATOR = ", "; + + public ds() { + super("waypoint"); + } + + @Override + public void execute(LiteralArgumentBuilder var1) { + var1.then( + literal("add") + .then( + arg("name", StringArgumentType.word()) + .executes( + var0 -> { + String var1x = null; + awb var2 = null; + avx var3 = null; + avx var5 = null; + int var4 = 1297410428; + + while (true) { + switch (var4) { + case -1200105129: + var5 = var2.add( + var1x, + mc.player.blockPosition(), + var2.currentDimension(), + awb.paletteColor(var2.count()), + avy.DEFAULT.getGlyph(), + wk.INSTANCE.sharesWithFriends() + ); + var4 = 1437924511; + break; + case 393132858: + ape.displayMessage(apd.WARN, "Could not add waypoint " + var1x); + var4 = 2061913057; + break; + case 1297410428: + default: + var1x = (String)var0.getArgument( + "name", String.class + ); + var2 = awb.getInstance(); + if (mc.player == null) { + var4 = 1616847094; + } else { + var4 = -1200105129; + } + break; + case 1437924511: + var3 = var5; + if (var3 != null) { + var4 = 1576695413; + } else { + var4 = 393132858; + } + break; + case 1576695413: + avz.markDirty(); + ape.displayMessage(apd.INFO, "Waypoint " + var3.name() + " added"); + var4 = 2061913057; + break; + case 1616847094: + var5 = null; + var4 = 1437924511; + break; + case 2061913057: + return 1; + } + } + } + ) + ) + ); + var1.then( + literal("remove") + .then(arg("name", eb.create()).executes(var0 -> { + String var1x = null; + awb var2 = null; + avx var3 = null; + int var4 = 331258332; + + while (true) { + switch (var4) { + case -371421427: + ape.displayMessage(apd.WARN, "No waypoint " + var1x); + var4 = 1684577374; + break; + case -293815724: + if (var2.remove(var3.id())) { + var4 = 1347262599; + } else { + var4 = -371421427; + } + break; + case 331258332: + default: + var1x = (String)var0.getArgument("name", String.class); + var2 = awb.getInstance(); + var3 = var2.findByName(var1x); + if (var3 != null) { + var4 = -293815724; + } else { + var4 = -371421427; + } + break; + case 1347262599: + avz.markDirty(); + ape.displayMessage(apd.INFO, "Waypoint " + var1x + " removed"); + var4 = 1684577374; + break; + case 1684577374: + return 1; + } + } + })) + ); + var1.then( + literal("track") + .then( + arg("name", eb.create()) + .executes( + var0 -> { + String var1x = (String)var0.getArgument( + "name", String.class + ); + awb var2 = awb.getInstance(); + avx var3 = var2.findByName(var1x); + if (var3 == null) { + ape.displayMessage(apd.WARN, "No waypoint " + var1x); + return 1; + } else { + var2.toggleTracked(var3.id()); + ape.displayMessage( + apd.INFO, + var2.isTracked(var3.id()) + ? "Tracking " + var3.name() + : "Waypoint tracking cleared" + ); + return 1; + } + } + ) + ) + ); + var1.then(literal("list").executes(var0 -> { + ape.displayMessage(apd.INFO, describe()); + return 1; + })); + } + + private static String describe() { + List var0 = null; + StringBuilder var1 = null; + int var2 = 0; + avx var3 = null; + int var4 = -1270755947; + + while (true) { + switch (var4) { + case -1806168991: + if (!var1.isEmpty()) { + var4 = 821770534; + } else { + var4 = 1875492149; + } + break; + case -1702102469: + var1 = new StringBuilder(); + var2 = 0; + var4 = -715198996; + break; + case -1270755947: + default: + var0 = awb.getInstance().own(); + if (var0.isEmpty()) { + var4 = 450010589; + } else { + var4 = -1702102469; + } + break; + case -715198996: + if (var2 < var0.size()) { + var4 = -1806168991; + } else { + var4 = -637106900; + } + break; + case -637106900: + return var1.toString(); + case 450010589: + return "no waypoints"; + case 821770534: + var1.append(", "); + var4 = 1875492149; + break; + case 1875492149: + var3 = (avx)var0.get(var2); + Locale var10001 = Locale.US; + String var10002 = "%s (%d %d %d)"; + Object[] var10003 = new Object[4]; + var10003[0] = var3.name(); + var10003[1] = var3.x(); + var10003[2] = var3.y(); + var10003[3] = var3.z(); + var1.append(String.format(var10001, var10002, var10003)); + var2++; + var4 = -715198996; + } + } + } +} diff --git a/src/main/java/defpackage/dt.java b/src/main/java/defpackage/dt.java new file mode 100644 index 0000000..eec8726 --- /dev/null +++ b/src/main/java/defpackage/dt.java @@ -0,0 +1,52 @@ +package defpackage; + +import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; +import com.mojang.brigadier.suggestion.Suggestions; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; + +public class dt implements ArgumentType { + private static final Collection EXAMPLES = List.of("current_config"); + + public static dt create() { + return new dt(); + } + + public String parse(StringReader var1) throws CommandSyntaxException { + String var2 = null; + int var3 = 2112671131; + + while (true) { + switch (var3) { + case 860957022: + return var2; + case 1320627841: + throw new DynamicCommandExceptionType(var0 -> Component.literal("Config " + var0.toString() + " doesn't exist.")).create(var2); + case 2112671131: + } + + var2 = var1.readString(); + if (bz.getInstance().getConfigManager().findConfig(var2) == null) { + var3 = 1320627841; + } else { + var3 = 860957022; + } + } + } + + public CompletableFuture listSuggestions(CommandContext var1, SuggestionsBuilder var2) { + return SharedSuggestionProvider.suggest(bz.getInstance().getConfigManager().configNames(), var2); + } + + public Collection getExamples() { + return EXAMPLES; + } +} diff --git a/src/main/java/defpackage/du.java b/src/main/java/defpackage/du.java new file mode 100644 index 0000000..026581b --- /dev/null +++ b/src/main/java/defpackage/du.java @@ -0,0 +1,55 @@ +package defpackage; + +import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.suggestion.Suggestions; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import net.minecraft.commands.SharedSuggestionProvider; + +public class du implements ArgumentType { + private static final Collection EXAMPLES = List.of("/home", "/events", "/pvp", "/call 1WantToFreak"); + + public static du create() { + return new du(); + } + + public String parse(StringReader var1) throws CommandSyntaxException { + StringBuilder var2 = null; + int var3 = -811209626; + + while (true) { + switch (var3) { + case -2025254279: + return var2.toString(); + case -932956254: + if (var1.canRead()) { + var3 = 948922107; + } else { + var3 = -2025254279; + } + break; + case -811209626: + default: + var2 = new StringBuilder(); + var3 = -932956254; + break; + case 948922107: + var2.append(var1.read()); + var3 = -932956254; + } + } + } + + public CompletableFuture listSuggestions(CommandContext var1, SuggestionsBuilder var2) { + return SharedSuggestionProvider.suggest(EXAMPLES, var2); + } + + public Collection getExamples() { + return EXAMPLES; + } +} diff --git a/src/main/java/defpackage/dv.java b/src/main/java/defpackage/dv.java new file mode 100644 index 0000000..6f827c0 --- /dev/null +++ b/src/main/java/defpackage/dv.java @@ -0,0 +1,44 @@ +package defpackage; + +import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.suggestion.Suggestions; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import net.minecraft.commands.SharedSuggestionProvider; + +public class dv implements ArgumentType { + private static final Collection EXAMPLES = List.of( + "-1", + "10.5", + "-5.2", + "100" + ); + + public static dv create() { + return new dv(); + } + + public Double parse(StringReader var1) throws CommandSyntaxException { + try { + return Double.parseDouble(var1.readString()); + } catch (NumberFormatException var3) { + throw new CommandSyntaxException( + null, + () -> "Those aren't the right numbers, buddy" + ); + } + } + + public CompletableFuture listSuggestions(CommandContext var1, SuggestionsBuilder var2) { + return SharedSuggestionProvider.suggest(EXAMPLES, var2); + } + + public Collection getExamples() { + return EXAMPLES; + } +} diff --git a/src/main/java/defpackage/dw.java b/src/main/java/defpackage/dw.java new file mode 100644 index 0000000..103d3d7 --- /dev/null +++ b/src/main/java/defpackage/dw.java @@ -0,0 +1,57 @@ +package defpackage; + +import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; +import com.mojang.brigadier.suggestion.Suggestions; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; + +public class dw implements ArgumentType { + private static final List EXAMPLES = bz.getInstance() + .getFriendManager() + .getItems() + .stream() + .limit((-8839548385825514139L ^ 8839548385825514144L) + ((-8839548385825514139L & 8839548385825514144L) << 1)) + .toList(); + + public static dw create() { + return new dw(); + } + + public String parse(StringReader var1) throws CommandSyntaxException { + String var2 = null; + int var3 = -1078667301; + + while (true) { + switch (var3) { + case -1788986135: + throw new DynamicCommandExceptionType(var1x -> Component.literal("You have no friend " + var2)).create(var2); + case -1552959420: + return var2; + case -1078667301: + } + + var2 = var1.readString(); + if (!bz.getInstance().getFriendManager().isFriend(var2)) { + var3 = -1788986135; + } else { + var3 = -1552959420; + } + } + } + + public CompletableFuture listSuggestions(CommandContext var1, SuggestionsBuilder var2) { + return SharedSuggestionProvider.suggest(bz.getInstance().getFriendManager().getItems(), var2); + } + + public Collection getExamples() { + return EXAMPLES; + } +} diff --git a/src/main/java/defpackage/dx.java b/src/main/java/defpackage/dx.java new file mode 100644 index 0000000..88b3b01 --- /dev/null +++ b/src/main/java/defpackage/dx.java @@ -0,0 +1,32 @@ +package defpackage; + +import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.suggestion.Suggestions; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import net.minecraft.commands.SharedSuggestionProvider; + +public class dx implements ArgumentType { + private static final Collection EXAMPLES = List.of("b"); + + public static dx create() { + return new dx(); + } + + public String parse(StringReader var1) throws CommandSyntaxException { + return var1.readString(); + } + + public CompletableFuture listSuggestions(CommandContext var1, SuggestionsBuilder var2) { + return SharedSuggestionProvider.suggest(EXAMPLES, var2); + } + + public Collection getExamples() { + return EXAMPLES; + } +} diff --git a/src/main/java/defpackage/dy.java b/src/main/java/defpackage/dy.java new file mode 100644 index 0000000..1223c91 --- /dev/null +++ b/src/main/java/defpackage/dy.java @@ -0,0 +1,57 @@ +package defpackage; + +import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; +import com.mojang.brigadier.suggestion.Suggestions; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import java.util.Collection; +import java.util.concurrent.CompletableFuture; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; + +public class dy implements ArgumentType { + private static final Collection EXAMPLES = bz.getInstance() + .getModuleManager() + .getModules() + .stream() + .map(rm::getName) + .limit((2621431299956588097L ^ -2621431299956588092L) + ((2621431299956588097L & -2621431299956588092L) << 1)) + .toList(); + + public static dy create() { + return new dy(); + } + + public rm parse(StringReader var1) throws CommandSyntaxException { + rm var2 = null; + int var3 = 818616620; + + while (true) { + switch (var3) { + case -53048771: + throw new DynamicCommandExceptionType(var0 -> Component.literal(var0.toString() + " doesn't exist.")).create(var1.readString()); + case 569533603: + return var2; + case 818616620: + } + + var2 = bz.getInstance().getModuleManager().getModule(var1.readString()); + if (var2 == null) { + var3 = -53048771; + } else { + var3 = 569533603; + } + } + } + + public CompletableFuture listSuggestions(CommandContext var1, SuggestionsBuilder var2) { + return SharedSuggestionProvider.suggest(bz.getInstance().getModuleManager().getModules().stream().map(rm::getName), var2); + } + + public Collection getExamples() { + return EXAMPLES; + } +} diff --git a/src/main/java/defpackage/dz.java b/src/main/java/defpackage/dz.java new file mode 100644 index 0000000..d63ac7e --- /dev/null +++ b/src/main/java/defpackage/dz.java @@ -0,0 +1,36 @@ +package defpackage; + +import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.suggestion.Suggestions; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import net.minecraft.commands.SharedSuggestionProvider; + +public class dz implements ArgumentType, aqg { + private static final Collection EXAMPLES = List.of( + "Steve", + "Alex", + "Bogdan" + ); + + public static dz create() { + return new dz(); + } + + public String parse(StringReader var1) throws CommandSyntaxException { + return var1.readUnquotedString(); + } + + public CompletableFuture listSuggestions(CommandContext var1, SuggestionsBuilder var2) { + return SharedSuggestionProvider.suggest(mc.getConnection().getOnlinePlayers().stream().map(var0 -> var0.getProfile().name()), var2); + } + + public Collection getExamples() { + return EXAMPLES; + } +} diff --git a/src/main/java/defpackage/e.java b/src/main/java/defpackage/e.java new file mode 100644 index 0000000..0914a86 --- /dev/null +++ b/src/main/java/defpackage/e.java @@ -0,0 +1,12 @@ +package defpackage; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.CLASS) +@Target(ElementType.METHOD) +public @interface e { + d type(); +} diff --git a/src/main/java/defpackage/ea.java b/src/main/java/defpackage/ea.java new file mode 100644 index 0000000..39b7cc2 --- /dev/null +++ b/src/main/java/defpackage/ea.java @@ -0,0 +1,53 @@ +package defpackage; + +import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; +import com.mojang.brigadier.suggestion.Suggestions; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; + +public class ea implements ArgumentType { + private static final String MISSING_PREFIX = "There is no schematic "; + + public static ea create() { + return new ea(); + } + + public String parse(StringReader var1) throws CommandSyntaxException { + String var2 = null; + int var3 = -1626623322; + + while (true) { + switch (var3) { + case -1626623322: + default: + var2 = var1.readString(); + if (!akz.list().contains(var2)) { + var3 = 1099371612; + } else { + var3 = -1146085047; + } + break; + case -1146085047: + return var2; + case 1099371612: + throw new DynamicCommandExceptionType(var0 -> Component.literal("There is no schematic " + var0)).create(var2); + } + } + } + + public CompletableFuture listSuggestions(CommandContext var1, SuggestionsBuilder var2) { + return SharedSuggestionProvider.suggest(akz.list(), var2); + } + + public Collection getExamples() { + return List.of(); + } +} diff --git a/src/main/java/defpackage/eb.java b/src/main/java/defpackage/eb.java new file mode 100644 index 0000000..b4e678d --- /dev/null +++ b/src/main/java/defpackage/eb.java @@ -0,0 +1,86 @@ +package defpackage; + +import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; +import com.mojang.brigadier.suggestion.Suggestions; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; + +public class eb implements ArgumentType { + private static final String MISSING_PREFIX = "There is no waypoint "; + + public static eb create() { + return new eb(); + } + + public String parse(StringReader var1) throws CommandSyntaxException { + String var2 = null; + int var3 = -541473235; + + while (true) { + switch (var3) { + case -1751858890: + throw new DynamicCommandExceptionType(var0 -> Component.literal("There is no waypoint " + var0)).create(var2); + case -541473235: + default: + var2 = var1.readString(); + if (awb.getInstance().findByName(var2) == null) { + var3 = -1751858890; + } else { + var3 = 2040977189; + } + break; + case 2040977189: + return var2; + } + } + } + + public CompletableFuture listSuggestions(CommandContext var1, SuggestionsBuilder var2) { + return SharedSuggestionProvider.suggest(names(), var2); + } + + public Collection getExamples() { + return List.of(); + } + + private static List names() { + List var0 = null; + ArrayList var1 = null; + int var2 = 0; + int var3 = 1838619790; + + while (true) { + switch (var3) { + case -1960085782: + var1.add(((avx)var0.get(var2)).name()); + var2++; + var3 = -593798537; + break; + case -693898637: + return var1; + case -593798537: + if (var2 < var0.size()) { + var3 = -1960085782; + } else { + var3 = -693898637; + } + break; + case 1838619790: + default: + var0 = awb.getInstance().own(); + var1 = new ArrayList(var0.size()); + var2 = 0; + var3 = -593798537; + } + } + } +} diff --git a/src/main/java/defpackage/ec.java b/src/main/java/defpackage/ec.java new file mode 100644 index 0000000..0ed64d3 --- /dev/null +++ b/src/main/java/defpackage/ec.java @@ -0,0 +1,151 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.io.File; +import java.io.IOException; + +public class ec { + private static final String CREATE_FAILURE = "config {} file create failed"; + private static final String SAVE_FAILURE = "config {} save failed"; + private static final String MODULE_LOAD_FAILURE = "config {} module load failed"; + private final String name; + private final File file; + + public ec(String var1) { + this.name = var1; + this.file = new File( + ed.configDirectory, var1 + "." + "Evolution".toLowerCase() + ); + if (!this.file.exists()) { + try { + this.file.createNewFile(); + } catch (IOException var3) { + id.error( + Cif.CONFIG, "config {} file create failed", var1, var3 + ); + } + } + } + + public JsonObject save() { + try { + return snapshot(); + } catch (Exception var2) { + id.error(Cif.CONFIG, "config {} save failed", this.name, var2); + return null; + } + } + + public static JsonObject snapshot() { + JsonObject var0 = new JsonObject(); + JsonObject var1 = new JsonObject(); + + for (rm var3 : bz.getInstance().getModuleManager().getModules()) { + var1.add(var3.getName(), var3.save()); + } + + var0.add("Modules", var1); + my var7 = bz.getInstance().getThemeManager(); + JsonObject var8 = new JsonObject(); + var8.addProperty("selected", var7.getCurrentTheme().getName()); + var8.addProperty("columns", bz.getInstance().getMenuScreen().getColumns()); + JsonObject var4 = new JsonObject(); + + for (mv var6 : var7.getThemes()) { + var4.add(var6.getName(), serializeTheme(var6)); + } + + var8.add("items", var4); + var0.add("Theme", var8); + return var0; + } + + public void load(JsonObject var1) { + apply(this.name, var1); + } + + public static void apply(String var0, JsonObject var1) { + if (var1.has("Theme")) { + JsonObject var2 = var1.getAsJsonObject("Theme"); + if (var2.has("selected")) { + String var3 = var2.get("selected").getAsString(); + bz.getInstance().getThemeManager().switchThemeByName(var3); + } + + if (var2.has("columns")) { + int var10 = var2.get("columns").getAsInt(); + bz.getInstance().getMenuScreen().setColumns(var10); + } + + my var11 = bz.getInstance().getThemeManager(); + if (var2.has("items")) { + JsonObject var4 = var2.getAsJsonObject("items"); + + for (mv var6 : var11.getThemes()) { + if (var4.has(var6.getName())) { + JsonObject var7 = var4.getAsJsonObject(var6.getName()); + applyThemeFromJson(var6, var7); + } + } + } + } + + if (var1.has("Modules")) { + try { + JsonObject var9 = var1.getAsJsonObject("Modules"); + + for (rm var13 : bz.getInstance().getModuleManager().getModules()) { + var13.load(var9.getAsJsonObject(var13.getName())); + } + } catch (Exception var8) { + id.error( + Cif.CONFIG, + "config {} module load failed", + var0, + var8 + ); + } + } + } + + private static JsonObject serializeTheme(mv var0) { + return mw.write(var0); + } + + private static void applyThemeFromJson(mv var0, JsonObject var1) { + int var2 = 1915929250; + + while (true) { + switch (var2) { + case 917979627: + if (mw.versionOf(var1) < (-1612655316 | 1612655323) + (-1612655316 & 1612655323)) { + var2 = 1778211187; + } else { + var2 = 1177960752; + } + break; + case 1177960752: + mw.read(var0, var1); + return; + case 1778211187: + var0.reset(); + return; + case 1915929250: + default: + if (var0 != mv.CUSTOM_THEME) { + var2 = 917979627; + } else { + var2 = 1177960752; + } + } + } + } + + public String getName() { + return this.name; + } + + public File getFile() { + return this.file; + } +} diff --git a/src/main/java/defpackage/ed.java b/src/main/java/defpackage/ed.java new file mode 100644 index 0000000..0b1de79 --- /dev/null +++ b/src/main/java/defpackage/ed.java @@ -0,0 +1,446 @@ +package defpackage; + +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +public class ed { + private static final String DEFAULT_CONFIG = "current_config"; + private static final String LOAD_FAILURE = "config {} load failed"; + private static final String AUTOSAVE_FAILURE = "config autosave failed"; + private static final String DEFAULTS_CAPTURE_FAILURE = "config defaults capture failed"; + private static final String RESET_FAILURE = "config reset to defaults failed"; + public static final File configDirectory = new File(bz.DIRECTORY, "configs"); + ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); + private final String shifr = "config"; + private final JsonObject defaults; + + public ed() { + configDirectory.mkdirs(); + this.defaults = captureDefaults(); + this.loadConfig("current_config"); + j.register(this); + this.scheduler + .scheduleAtFixedRate( + () -> { + try { + this.saveConfig("current_config"); + } catch (Exception var2) { + id.error(Cif.CONFIG, "config autosave failed", var2); + } + }, + (-4528776821521876180L ^ 4528776821521876185L) + ((-4528776821521876180L & 4528776821521876185L) << 1), + (6199324105667101872L | -6199324105667101867L) + (6199324105667101872L & -6199324105667101867L), + TimeUnit.MINUTES + ); + } + + private static JsonObject captureDefaults() { + try { + return ec.snapshot(); + } catch (Exception var1) { + id.error( + Cif.CONFIG, + "config defaults capture failed", + var1 + ); + return null; + } + } + + public boolean resetToDefaults() { + if (this.defaults == null) { + return (boolean)(((0)) != 0); + } + + try { + ec.apply("current_config", this.defaults); + return this.saveConfig("current_config"); + } catch (Exception var2) { + id.error( + Cif.CONFIG, + "config reset to defaults failed", + var2 + ); + return (boolean)(((0)) != 0); + } + } + + public boolean loadConfig(String var1) { + if (var1 == null) { + return (boolean)(((0)) != 0); + } + + ec var2 = this.findConfig(var1); + if (var2 == null) { + return (boolean)(((0)) != 0); + } + + try (BufferedReader var3 = new BufferedReader(new FileReader(var2.getFile()))) { + JsonParser var4 = new JsonParser(); + String var5 = var3.readLine(); + byte[] var6 = Base64.getDecoder().decode(var5); + byte[] var7 = aoz.decryptData(var6, "config"); + String var8 = new String(var7, StandardCharsets.UTF_8); + JsonObject var9 = (JsonObject)var4.parse(var8); + var2.load(var9); + return (boolean)(((1)) != 0); + } catch (Exception var13) { + id.error(Cif.CONFIG, "config {} load failed", var1, var13); + return (boolean)(((0)) != 0); + } + } + + public boolean saveConfig(String var1) { + try { + if (var1 == null) { + return (boolean)(((0)) != 0); + } + + ec var2; + if ((var2 = this.findConfig(var1)) == null) { + var2 = new ec(var1); + } + + String var3 = new GsonBuilder().setPrettyPrinting().create().toJson(var2.save()); + var3 = Base64.getEncoder() + .encodeToString(aoz.encryptData(var3.getBytes(), "config")); + + try { + FileWriter var4 = new FileWriter(var2.getFile()); + var4.write(var3); + var4.close(); + return (boolean)(((1)) != 0); + } catch (IOException var5) { + return (boolean)(((0)) != 0); + } + } catch (Exception var6) { + return (boolean)(((0)) != 0); + } + } + + public String exportCurrentState() { + JsonObject var1 = null; + String var3 = null; + int var2 = -2100751861; + + while (true) { + switch (var2) { + case -2100751861: + default: + var1 = new ec("current_config").save(); + if (var1 == null) { + var2 = 188513406; + } else { + var2 = -208462314; + } + break; + case -2076793457: + return var3; + case -208462314: + var3 = var1.toString(); + var2 = -2076793457; + break; + case 188513406: + var3 = null; + var2 = -2076793457; + } + } + } + + public String exportConfig(String var1) { + ec var2 = this.findConfig(var1); + if (var2 == null) { + return null; + } + + try (BufferedReader var3 = new BufferedReader(new FileReader(var2.getFile()))) { + String var4 = var3.readLine(); + byte[] var5 = aoz.decryptData( + Base64.getDecoder().decode(var4), "config" + ); + return new String(var5, StandardCharsets.UTF_8); + } catch (Exception var9) { + return null; + } + } + + public boolean importConfig(String var1, String var2) { + if (var1 != null && var2 != null) { + try { + JsonObject var3 = JsonParser.parseString(var2).getAsJsonObject(); + ec var4 = new ec(var1); + String var5 = new GsonBuilder().setPrettyPrinting().create().toJson(var3); + String var6 = Base64.getEncoder() + .encodeToString( + aoz.encryptData(var5.getBytes(StandardCharsets.UTF_8), "config") + ); + + try (FileWriter var7 = new FileWriter(var4.getFile())) { + var7.write(var6); + } + + return (boolean)(((1)) != 0); + } catch (Exception var12) { + return (boolean)(((0)) != 0); + } + } else { + return (boolean)(((0)) != 0); + } + } + + public String uniqueConfigName(String var1) { + String var2 = null; + int var3 = 0; + String var4 = null; + String var6 = null; + int var5 = -1811652390; + + while (true) { + switch (var5) { + case -2094331895: + if (this.findConfig(var2) == null) { + var5 = 637441856; + } else { + var5 = 1729524536; + } + break; + case -1983418978: + var2 = "shared"; + var5 = -2094331895; + break; + case -1858571804: + var2 = var6; + if (var2.isEmpty()) { + var5 = -1983418978; + } else { + var5 = -2094331895; + } + break; + case -1841133945: + return var2; + case -1811652390: + default: + if (var1 == null) { + var5 = 1539822749; + } else { + var5 = -459987235; + } + break; + case -1138646085: + var4 = var2 + " " + var3; + if (this.findConfig(var4) == null) { + var5 = 136018598; + } else { + var5 = 1343653362; + } + break; + case -459987235: + var6 = var1.replaceAll("[^a-zA-Z0-9 _-]", "").trim(); + var5 = -1858571804; + break; + case 136018598: + return var4; + case 637441856: + return var2; + case 679344418: + if (var3 < (-641454205 | 641455205) + (-641454205 & 641455205)) { + var5 = -1138646085; + } else { + var5 = -1841133945; + } + break; + case 1343653362: + var3++; + var5 = 679344418; + break; + case 1539822749: + var6 = ""; + var5 = -1858571804; + break; + case 1729524536: + var3 = 2; + var5 = 679344418; + } + } + } + + public ec findConfig(String var1) { + int var2 = -1063187938; + + while (true) { + switch (var2) { + case -2095189189: + if (new File(configDirectory, var1 + "." + "Evolution".toLowerCase()).exists()) { + var2 = 1657300081; + } else { + var2 = 1740964519; + } + break; + case -1063187938: + default: + if (var1 == null) { + var2 = 510998060; + } else { + var2 = -2095189189; + } + break; + case 510998060: + return null; + case 1657300081: + return new ec(var1); + case 1740964519: + return null; + } + } + } + + public List configNames() { + File[] var1 = null; + ArrayList var2 = null; + String var3 = null; + File[] var4 = null; + int var5 = 0; + int var6 = 0; + Object var7 = null; + String var8 = null; + int var9 = -1491024630; + + while (true) { + switch (var9) { + case -1784088286: + var2.add(var8.substring(0, var8.length() - var3.length())); + var9 = -87504577; + break; + case -1491024630: + default: + var1 = configDirectory.listFiles(); + var2 = new ArrayList(); + if (var1 == null) { + var9 = -665281315; + } else { + var9 = 2069056690; + } + break; + case -665281315: + return var2; + case -87504577: + var6++; + var9 = 2115687659; + break; + case 911658656: + var7 = var4[var6]; + var8 = var7.getName(); + if (var8.endsWith(var3)) { + var9 = -1784088286; + } else { + var9 = -87504577; + } + break; + case 1350497314: + return var2; + case 2069056690: + var3 = "." + "Evolution".toLowerCase(); + var4 = var1; + var5 = var4.length; + var6 = 0; + var9 = 2115687659; + break; + case 2115687659: + if (var6 < var5) { + var9 = 911658656; + } else { + var9 = 1350497314; + } + } + } + } + + public boolean deleteConfig(String var1) { + ec var2 = null; + File var3 = null; + int var5 = 0; + int var4 = 562188032; + + while (true) { + switch (var4) { + case -982872104: + if ((var2 = this.findConfig(var1)) != null) { + var4 = 1836748828; + } else { + var4 = 1255967331; + } + break; + case -243142525: + var5 = 0; + var4 = 48974886; + break; + case 2202855: + if (var3.delete()) { + var4 = 323906313; + } else { + var4 = -243142525; + } + break; + case 48974886: + return (boolean)((var5) != 0); + case 323906313: + var5 = 1; + var4 = 48974886; + break; + case 562188032: + default: + if (var1 == null) { + var4 = 968012822; + } else { + var4 = -982872104; + } + break; + case 968012822: + return (boolean)(((0)) != 0); + case 1255967331: + return (boolean)(((0)) != 0); + case 1836748828: + var3 = var2.getFile(); + if (var3.exists()) { + var4 = 2202855; + } else { + var4 = -243142525; + } + } + } + } + + public boolean saveCurrent() { + return this.saveConfig("current_config"); + } + + public void save() { + this.scheduler.shutdown(); + this.saveConfig("current_config"); + } + + public ScheduledExecutorService getScheduler() { + return this.scheduler; + } + + public String getShifr() { + return "config"; + } + + public JsonObject getDefaults() { + return this.defaults; + } +} diff --git a/src/main/java/defpackage/ee.java b/src/main/java/defpackage/ee.java new file mode 100644 index 0000000..c82a7ad --- /dev/null +++ b/src/main/java/defpackage/ee.java @@ -0,0 +1,177 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; + +public record ee(String details, String state, String largeImage, String largeText, String smallImage, String smallText, long startedAt, ef button) { + private static final int MAX_FIELD_LENGTH = 128; + private static final int MIN_FIELD_LENGTH = 2; + private static final String KEY_DETAILS = "details"; + private static final String KEY_STATE = "state"; + private static final String KEY_TIMESTAMPS = "timestamps"; + private static final String KEY_START = "start"; + private static final String KEY_ASSETS = "assets"; + private static final String KEY_LARGE_IMAGE = "large_image"; + private static final String KEY_LARGE_TEXT = "large_text"; + private static final String KEY_SMALL_IMAGE = "small_image"; + private static final String KEY_SMALL_TEXT = "small_text"; + private static final String KEY_BUTTONS = "buttons"; + + public ee(String details, String state, String largeImage, String largeText, String smallImage, String smallText, long startedAt, ef button) { + details = clamp(details); + state = clamp(state); + largeText = clamp(largeText); + smallText = clamp(smallText); + this.details = details; + this.state = state; + this.largeImage = largeImage; + this.largeText = largeText; + this.smallImage = smallImage; + this.smallText = smallText; + this.startedAt = startedAt; + this.button = button; + } + + JsonObject toJson() { + JsonObject var1 = null; + JsonObject var2 = null; + JsonArray var3 = null; + int var4 = -587679604; + + while (true) { + switch (var4) { + case -1987006303: + return var1; + case -1070704885: + var3 = new JsonArray(); + var3.add(this.button.toJson()); + var1.add("buttons", var3); + var4 = -1987006303; + break; + case -963251710: + var2 = new JsonObject(); + put(var2, "large_image", this.largeImage); + put(var2, "large_text", this.largeText); + put(var2, "small_image", this.smallImage); + put(var2, "small_text", this.smallText); + if (!var2.isEmpty()) { + var4 = -56806308; + } else { + var4 = -566329387; + } + break; + case -705090958: + var2 = new JsonObject(); + var2.addProperty("start", this.startedAt); + var1.add("timestamps", var2); + var4 = -963251710; + break; + case -587679604: + default: + var1 = new JsonObject(); + put(var1, "details", this.details); + put(var1, "state", this.state); + if (this.startedAt > (-6938300344245097186L ^ 6938300344245097186L) + ((-6938300344245097186L & 6938300344245097186L) << 1)) { + var4 = -705090958; + } else { + var4 = -963251710; + } + break; + case -566329387: + if (this.button != null) { + var4 = 1828347621; + } else { + var4 = -1987006303; + } + break; + case -56806308: + var1.add("assets", var2); + var4 = -566329387; + break; + case 1828347621: + if (this.button.isValid()) { + var4 = -1070704885; + } else { + var4 = -1987006303; + } + } + } + } + + private static void put(JsonObject var0, String var1, String var2) { + int var3 = -305501537; + + while (true) { + switch (var3) { + case -1961792687: + return; + case -1764552420: + var0.addProperty(var1, var2); + var3 = -1961792687; + break; + case -1642112064: + if (!var2.isEmpty()) { + var3 = -1764552420; + } else { + var3 = -1961792687; + } + break; + case -305501537: + default: + if (var2 != null) { + var3 = -1642112064; + } else { + var3 = -1961792687; + } + } + } + } + + private static String clamp(String var0) { + String var1 = null; + String var3 = null; + int var2 = 1533383644; + + while (true) { + switch (var2) { + case -1006415822: + if (var1.length() > (449039770 ^ -449039642) + ((449039770 & -449039642) << 1)) { + var2 = 951884305; + } else { + var2 = -530090775; + } + break; + case -530090775: + var3 = var1; + var2 = 1815530799; + break; + case -56444475: + var1 = var0.trim(); + if (var1.length() < (-1997262685 ^ 1997262687) + ((-1997262685 & 1997262687) << 1)) { + var2 = 1456719437; + } else { + var2 = -1006415822; + } + break; + case 951884305: + var3 = var1.substring(0, (650877850 ^ -650877722) + ((650877850 & -650877722) << 1)); + var2 = 1815530799; + break; + case 1456719437: + return null; + case 1533383644: + default: + if (var0 == null) { + var2 = 1841373166; + } else { + var2 = -56444475; + } + break; + case 1815530799: + return var3; + case 1841373166: + return null; + } + } + } +} diff --git a/src/main/java/defpackage/ef.java b/src/main/java/defpackage/ef.java new file mode 100644 index 0000000..8b36d1e --- /dev/null +++ b/src/main/java/defpackage/ef.java @@ -0,0 +1,79 @@ +package defpackage; + +import com.google.gson.JsonObject; + +public record ef(String label, String url) { + private static final int MAX_LABEL_LENGTH = 32; + private static final String URL_PREFIX = "https://"; + private static final String KEY_LABEL = "label"; + private static final String KEY_URL = "url"; + + public ef(String label, String url) { + label = label == null ? null : label.trim(); + url = url == null ? null : url.trim(); + this.label = label; + this.url = url; + } + + boolean isValid() { + int var2 = 0; + int var1 = -341682668; + + while (true) { + switch (var1) { + case -1846162049: + var2 = 0; + var1 = 1393628907; + break; + case -1239769782: + if (!this.label.isEmpty()) { + var1 = 1149695547; + } else { + var1 = -1846162049; + } + break; + case -341682668: + default: + if (this.label != null) { + var1 = -1239769782; + } else { + var1 = -1846162049; + } + break; + case 168366156: + if (this.url.startsWith("https://")) { + var1 = 1619677940; + } else { + var1 = -1846162049; + } + break; + case 963684651: + if (this.url != null) { + var1 = 168366156; + } else { + var1 = -1846162049; + } + break; + case 1149695547: + if (this.label.length() <= (621186848 ^ -621186816) + ((621186848 & -621186816) << 1)) { + var1 = 963684651; + } else { + var1 = -1846162049; + } + break; + case 1393628907: + return (boolean)((var2) != 0); + case 1619677940: + var2 = 1; + var1 = 1393628907; + } + } + } + + JsonObject toJson() { + JsonObject var1 = new JsonObject(); + var1.addProperty("label", this.label); + var1.addProperty("url", this.url); + return var1; + } +} diff --git a/src/main/java/defpackage/eg.java b/src/main/java/defpackage/eg.java new file mode 100644 index 0000000..54be452 --- /dev/null +++ b/src/main/java/defpackage/eg.java @@ -0,0 +1,10 @@ +package defpackage; + +import java.io.Closeable; +import java.io.IOException; + +interface eg extends Closeable { + int read(byte[] var1, int var2, int var3) throws IOException; + + void write(byte[] var1) throws IOException; +} diff --git a/src/main/java/defpackage/eh.java b/src/main/java/defpackage/eh.java new file mode 100644 index 0000000..8ed5e85 --- /dev/null +++ b/src/main/java/defpackage/eh.java @@ -0,0 +1,75 @@ +package defpackage; + +import java.io.IOException; +import java.io.InterruptedIOException; +import java.io.RandomAccessFile; + +final class eh implements eg { + private static final String PIPE_MODE = "rw"; + private static final long AVAILABILITY_POLL_MILLIS = 50L; + private static final String READ_INTERRUPTED = "discord ipc pipe read interrupted"; + private final RandomAccessFile pipe; + + eh(String var1) throws IOException { + this.pipe = new RandomAccessFile(var1, "rw"); + } + + @Override + public int read(byte[] var1, int var2, int var3) throws IOException { + long var4 = (7693916861862324548L | -7693916861862324548L) + (7693916861862324548L & -7693916861862324548L); + int var6 = 0; + int var8 = 0; + int var7 = -406579485; + + while (true) { + switch (var7) { + case -1407629141: + var8 = (int)Math.min(var3, var4); + var7 = 1554703064; + break; + case -406579485: + default: + var4 = this.awaitAvailable(); + if (var4 > (-2197791353270094701L | 2197791353270094701L) + (-2197791353270094701L & 2197791353270094701L)) { + var7 = -1407629141; + } else { + var7 = 1184255241; + } + break; + case 1184255241: + var8 = var3; + var7 = 1554703064; + break; + case 1554703064: + var6 = var8; + return this.pipe.read(var1, var2, var6); + } + } + } + + private long awaitAvailable() throws IOException { + long var1; + while ((var1 = this.pipe.length()) == (4556681786658241854L ^ -4556681786658241854L) + ((4556681786658241854L & -4556681786658241854L) << 1)) { + try { + Thread.sleep((2454564217446821340L | -2454564217446821290L) + (2454564217446821340L & -2454564217446821290L)); + } catch (InterruptedException var4) { + Thread.currentThread().interrupt(); + throw new InterruptedIOException( + "discord ipc pipe read interrupted" + ); + } + } + + return var1; + } + + @Override + public void write(byte[] var1) throws IOException { + this.pipe.write(var1); + } + + @Override + public void close() throws IOException { + this.pipe.close(); + } +} diff --git a/src/main/java/defpackage/ei.java b/src/main/java/defpackage/ei.java new file mode 100644 index 0000000..de13a26 --- /dev/null +++ b/src/main/java/defpackage/ei.java @@ -0,0 +1,375 @@ +package defpackage; + +import java.util.UUID; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; +import net.minecraft.client.User; +import net.minecraft.client.multiplayer.ServerData; +import net.minecraft.client.server.IntegratedServer; + +public final class ei { + private static final int UPDATE_INTERVAL_TICKS = 20; + private static final String LARGE_IMAGE = "evovisuals"; + private static final String LARGE_TEXT = "EvoVisuals"; + private static final String HEAD_URL = "https://mc-heads.net/avatar/%s/64"; + private static final String CUSTOM_HEAD_URL = "https://www.evoproject.xyz/head/%s.png"; + private static final ef SITE_BUTTON = new ef( + "evoproject.xyz", + "https://www.evoproject.xyz" + ); + private static final String MENU_DETAILS = "In the main menu"; + private static final String SINGLEPLAYER_DETAILS = "Singleplayer"; + private static final String MULTIPLAYER_DETAILS = "Multiplayer"; + private static final String STATE_SEPARATOR = " · "; + private static final String DIMENSION_OVERWORLD = "overworld"; + private static final String DIMENSION_NETHER = "the_nether"; + private static final String DIMENSION_END = "the_end"; + private static final String NAME_OVERWORLD = "Overworld"; + private static final String NAME_NETHER = "The Nether"; + private static final String NAME_END = "The End"; + private static final char PATH_SEPARATOR = '_'; + private static final char WORD_SEPARATOR = ' '; + private static final long SESSION_START = System.currentTimeMillis(); + private static int ticks; + + private ei() { + } + + public static void initialize() { + ClientTickEvents.END_CLIENT_TICK.register(ei::tick); + } + + private static void tick(Minecraft var0) { + te var1 = null; + int var2 = 2023534257; + + while (true) { + switch (var2) { + case -1780967549: + return; + case -511725496: + return; + case -472497798: + ej.getInstance().publish(build(var0, var1)); + return; + case 1553391511: + ticks = 0; + var1 = te.INSTANCE; + if (!var1.isEnabled()) { + var2 = -1780967549; + } else { + var2 = -472497798; + } + break; + case 2023534257: + default: + if ((ticks += (-1204158059 ^ 1204158060) + ((-1204158059 & 1204158060) << 1)) < (-1124907968 | 1124907988) + (-1124907968 & 1124907988)) { + var2 = -511725496; + } else { + var2 = 1553391511; + } + } + } + } + + private static ee build(Minecraft var0, te var1) { + String var3 = null; + String var2; + if (var0.level == null) { + var2 = "In the main menu"; + } else if (var0.hasSingleplayerServer()) { + var2 = "Singleplayer"; + var3 = var1.showsWorld() ? join(worldName(var0), dimensionName(var0)) : null; + } else { + var2 = var1.showsServer() ? serverAddress(var0) : "Multiplayer"; + var3 = var1.showsWorld() ? dimensionName(var0) : null; + } + + boolean var4 = var1.showsHead(); + return new ee( + var2, + var3, + "evovisuals", + "EvoVisuals", + var4 ? headUrl(var0) : null, + var4 ? userName(var0) : null, + var1.showsElapsed() ? SESSION_START : (7893715822742466358L | -7893715822742466358L) + (7893715822742466358L & -7893715822742466358L), + SITE_BUTTON + ); + } + + private static String serverAddress(Minecraft var0) { + ServerData var1 = null; + String var3 = null; + int var2 = -151287207; + + while (true) { + switch (var2) { + case -1240349392: + if (var1.ip != null) { + var2 = -482644125; + } else { + var2 = 431716390; + } + break; + case -1239993741: + return var3; + case -482644125: + if (var1.ip.isBlank()) { + var2 = 431716390; + } else { + var2 = 657451306; + } + break; + case -151287207: + default: + var1 = var0.getCurrentServer(); + if (var1 != null) { + var2 = -1240349392; + } else { + var2 = 431716390; + } + break; + case 431716390: + var3 = "Multiplayer"; + var2 = -1239993741; + break; + case 657451306: + var3 = var1.ip; + var2 = -1239993741; + } + } + } + + private static String worldName(Minecraft var0) { + IntegratedServer var1 = null; + String var3 = null; + int var2 = 1323539391; + + while (true) { + switch (var2) { + case -375254959: + return var3; + case 206468276: + var3 = null; + var2 = -375254959; + break; + case 1323539391: + default: + var1 = var0.getSingleplayerServer(); + if (var1 == null) { + var2 = 206468276; + } else { + var2 = 1611406035; + } + break; + case 1611406035: + var3 = var1.getWorldData().getLevelName(); + var2 = -375254959; + } + } + } + + private static String dimensionName(Minecraft var0) { + if (var0.level == null) { + return null; + } + + String var1 = var0.level.dimension().identifier().getPath(); + String var2 = var1; + int var3 = -1; + switch (var2.hashCode()) { + case -1350117363: + if (var2.equals("the_end")) { + var3 = 2; + } + break; + case -745159874: + if (var2.equals("overworld")) { + var3 = 0; + } + break; + case 1272296422: + if (var2.equals("the_nether")) { + var3 = 1; + } + } + return switch (var3) { + case 0 -> "Overworld"; + case 1 -> "The Nether"; + case 2 -> "The End"; + default -> prettify(var1); + }; + } + + private static String headUrl(Minecraft var0) { + User var1 = null; + String var2 = null; + UUID var3 = null; + String var4 = null; + String var6 = null; + String var7 = null; + int var5 = -1010746359; + + while (true) { + switch (var5) { + case -2103286762: + var3 = var1.getProfileId(); + if (var3 != null) { + var5 = -987751278; + } else { + var5 = 1734899898; + } + break; + case -1847025817: + String var10000 = "https://mc-heads.net/avatar/%s/64"; + Object[] var8 = new Object[1]; + var8[0] = var4; + var7 = var10000.formatted(var8); + var5 = 1336475751; + break; + case -1537048654: + if (var4.isBlank()) { + var5 = -709836490; + } else { + var5 = -1847025817; + } + break; + case -1439544503: + var2 = aeq.equippedKey(var1.getName()); + if (var2 != null) { + var5 = 1603966952; + } else { + var5 = -2103286762; + } + break; + case -1010746359: + default: + var1 = var0.getUser(); + if (var1 == null) { + var5 = -873977764; + } else { + var5 = -1439544503; + } + break; + case -987751278: + var6 = var3.toString(); + var5 = 228323615; + break; + case -873977764: + return null; + case -709836490: + var7 = null; + var5 = 1336475751; + break; + case 228323615: + var4 = var6; + if (var4 != null) { + var5 = -1537048654; + } else { + var5 = -709836490; + } + break; + case 1336475751: + return var7; + case 1603966952: + Object[] var10001 = new Object[1]; + var10001[0] = var2; + return "https://www.evoproject.xyz/head/%s.png".formatted(var10001); + case 1734899898: + var6 = var1.getName(); + var5 = 228323615; + } + } + } + + private static String userName(Minecraft var0) { + User var1 = null; + String var3 = null; + int var2 = 1928376095; + + while (true) { + switch (var2) { + case 1094835388: + var3 = null; + var2 = 1892693243; + break; + case 1892693243: + return var3; + case 1928376095: + default: + var1 = var0.getUser(); + if (var1 == null) { + var2 = 1094835388; + } else { + var2 = 1943353594; + } + break; + case 1943353594: + var3 = var1.getName(); + var2 = 1892693243; + } + } + } + + private static String join(String var0, String var1) { + int var2 = -989413552; + + while (true) { + switch (var2) { + case -1905106115: + return var0; + case -1222441560: + if (var1.isBlank()) { + var2 = -1905106115; + } else { + var2 = 85332674; + } + break; + case -1014619109: + return var1; + case -989413552: + default: + if (var0 != null) { + var2 = 1874922082; + } else { + var2 = -1014619109; + } + break; + case 85332674: + return var0 + " · " + var1; + case 1110148595: + if (var1 != null) { + var2 = -1222441560; + } else { + var2 = -1905106115; + } + break; + case 1874922082: + if (var0.isBlank()) { + var2 = -1014619109; + } else { + var2 = 1110148595; + } + } + } + } + + private static String prettify(String var0) { + StringBuilder var1 = new StringBuilder(var0.length()); + int var2 = 1; + + for (int var3 = 0; var3 < var0.length(); var3++) { + char var4 = var0.charAt(var3); + if (var4 == (-1574396191 ^ 1574396286) + ((-1574396191 & 1574396286) << 1)) { + var1.append((char)((-363394048 ^ 363394080) + ((-363394048 & 363394080) << 1))); + var2 = 1; + } else { + var1.append(var2 != 0 ? Character.toUpperCase(var4) : var4); + var2 = 0; + } + } + + return var1.isEmpty() ? var0 : var1.toString(); + } +} diff --git a/src/main/java/defpackage/ej.java b/src/main/java/defpackage/ej.java new file mode 100644 index 0000000..ba397e5 --- /dev/null +++ b/src/main/java/defpackage/ej.java @@ -0,0 +1,532 @@ +package defpackage; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.google.gson.JsonSyntaxException; +import java.io.EOFException; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; +import java.util.UUID; +import java.util.concurrent.atomic.AtomicBoolean; + +public final class ej { + private static final String APPLICATION_ID = "1545379399451549787"; + private static final String WORKER_THREAD = "evo-discord-rpc"; + private static final String READER_THREAD = "evo-discord-rpc-reader"; + private static final String CLOSER_THREAD = "evo-discord-rpc-closer"; + private static final int OP_HANDSHAKE = 0; + private static final int OP_FRAME = 1; + private static final int OP_CLOSE = 2; + private static final int OP_PING = 3; + private static final int OP_PONG = 4; + private static final int PROTOCOL_VERSION = 1; + private static final int HEADER_BYTES = 8; + private static final int MAX_FRAME_BYTES = 65536; + private static final long POLL_INTERVAL_MILLIS = 250L; + private static final long RECONNECT_DELAY_MILLIS = 15000L; + private static final long HANDSHAKE_TIMEOUT_MILLIS = 5000L; + private static final long UPDATE_INTERVAL_MILLIS = 4000L; + private static final String KEY_VERSION = "v"; + private static final String KEY_CLIENT_ID = "client_id"; + private static final String KEY_COMMAND = "cmd"; + private static final String KEY_NONCE = "nonce"; + private static final String KEY_ARGUMENTS = "args"; + private static final String KEY_PROCESS_ID = "pid"; + private static final String KEY_ACTIVITY = "activity"; + private static final String KEY_EVENT = "evt"; + private static final String COMMAND_SET_ACTIVITY = "SET_ACTIVITY"; + private static final String EVENT_READY = "READY"; + private static final String EVENT_ERROR = "ERROR"; + private static final String WRITE_FAILURE = "discord rpc write failed"; + private static final String READ_FAILURE = "discord rpc read failed"; + private static final String FRAME_OVERSIZE = "discord rpc frame exceeds the accepted size"; + private static final String STREAM_CLOSED = "discord rpc stream closed"; + private static final String REJECTED = "discord rpc rejected the presence: {}"; + private static final ej INSTANCE = new ej(); + private final Object writeLock = new Object(); + private final AtomicBoolean running = new AtomicBoolean(); + private volatile eg channel; + private volatile Thread worker; + private volatile ee desired; + private volatile boolean ready; + private volatile long connectedAt; + private ee published; + private long publishedAt; + + private ej() { + } + + public static ej getInstance() { + return INSTANCE; + } + + public void start() { + Thread var1 = null; + int var2 = 1068593499; + + while (true) { + switch (var2) { + case -962560403: + var1 = new Thread(this::run, "evo-discord-rpc"); + var1.setDaemon((boolean)((((1158314859 | -1158314858) + (1158314859 & -1158314858))) != 0)); + this.worker = var1; + var1.start(); + return; + case -661779035: + return; + case 1068593499: + } + + if (!this.running + .compareAndSet( + (boolean)((((0)) != 0)), (boolean)((((981407847 ^ -981407846) + ((981407847 & -981407846) << 1)) + ) != 0))) { + var2 = -661779035; + } else { + var2 = -962560403; + } + } + } + + public void stop() { + Thread var1 = null; + int var2 = -1551271449; + + while (true) { + switch (var2) { + case -1561681330: + this.desired = null; + this.disconnect(); + var1 = this.worker; + this.worker = null; + if (var1 != null) { + var2 = -834720273; + } else { + var2 = -678120021; + } + break; + case -1551271449: + default: + if (!this.running + .compareAndSet((boolean)((((1)) != 0)), (boolean)((((-984041706 | 984041706) + (-984041706 & 984041706))) != 0)) + ) + { + var2 = -1293544215; + } else { + var2 = -1561681330; + } + break; + case -1293544215: + return; + case -834720273: + var1.interrupt(); + var2 = -678120021; + break; + case -678120021: + return; + } + } + } + + public void publish(ee var1) { + this.desired = var1; + } + + private void run() { + int var1 = 1760255528; + + while (true) { + switch (var1) { + case -2097683235: + var1 = 918897648; + break; + case -235325628: + if (!sleepQuietly(this.step())) { + var1 = -2097683235; + } else { + var1 = 1760255528; + } + break; + case 918897648: + this.disconnect(); + return; + case 1760255528: + default: + if (this.running.get()) { + var1 = 2044166286; + } else { + var1 = 918897648; + } + break; + case 2044166286: + if (!Thread.currentThread().isInterrupted()) { + var1 = -235325628; + } else { + var1 = 918897648; + } + } + } + } + + private long step() { + long var1 = (3552345364763123938L | -3552345364763123938L) + (3552345364763123938L & -3552345364763123938L); + ee var3 = null; + int var4 = 0; + long var6 = (-7845690816623487297L | 7845690816623487297L) + (-7845690816623487297L & 7845690816623487297L); + int var8 = 0; + int var5 = -950393529; + + while (true) { + switch (var5) { + case -2074418871: + this.published = var3; + this.publishedAt = var1; + var5 = -1682522485; + break; + case -1995409929: + this.disconnect(); + return (-4673272022140018221L ^ 4673272022140033221L) + ((-4673272022140018221L & 4673272022140033221L) << 1); + case -1737260724: + if (this.send(var3)) { + var5 = -2074418871; + } else { + var5 = -1682522485; + } + break; + case -1699395559: + var8 = 0; + var5 = 54943915; + break; + case -1682522485: + return (2173151793410658894L ^ -2173151793410658644L) + ((2173151793410658894L & -2173151793410658644L) << 1); + case -1618248632: + if (var4 != 0) { + var5 = -243765206; + } else { + var5 = -1682522485; + } + break; + case -1536276016: + var6 = (-4009422882166496314L | 4009422882166496564L) + (-4009422882166496314L & 4009422882166496564L); + var5 = 168135503; + break; + case -1095367043: + var3 = this.desired; + if (var1 - this.publishedAt >= (1523396058115690918L | -1523396058115686918L) + (1523396058115690918L & -1523396058115686918L)) { + var5 = 1613159490; + } else { + var5 = -1699395559; + } + break; + case -950393529: + default: + if (this.channel == null) { + var5 = 1563977083; + } else { + var5 = -554027521; + } + break; + case -745434838: + var6 = (-1342567990837805936L | 1342567990837820936L) + (-1342567990837805936L & 1342567990837820936L); + var5 = 168135503; + break; + case -554027521: + var1 = System.currentTimeMillis(); + if (!this.ready) { + var5 = 126521102; + } else { + var5 = -1095367043; + } + break; + case -243765206: + if (!var3.equals(this.published)) { + var5 = -1737260724; + } else { + var5 = -1682522485; + } + break; + case 54943915: + var4 = var8; + if (var3 != null) { + var5 = -1618248632; + } else { + var5 = -1682522485; + } + break; + case 126521102: + if (var1 - this.connectedAt < (-4503330131584102211L ^ 4503330131584107211L) + ((-4503330131584102211L & 4503330131584107211L) << 1)) { + var5 = 1318703395; + } else { + var5 = -1995409929; + } + break; + case 168135503: + return var6; + case 1318703395: + return (-6408688868538313359L ^ 6408688868538313609L) + ((-6408688868538313359L & 6408688868538313609L) << 1); + case 1563977083: + if (this.connect()) { + var5 = -1536276016; + } else { + var5 = -745434838; + } + break; + case 1613159490: + var8 = 1; + var5 = 54943915; + } + } + } + + private boolean connect() { + eg var1 = null; + JsonObject var2 = null; + Thread var3 = null; + int var4 = 199874470; + + while (true) { + switch (var4) { + case -1560035544: + return (boolean)(((0)) != 0); + case -799431880: + var3 = new Thread( + () -> this.read(var1), + "evo-discord-rpc-reader" + ); + var3.setDaemon((boolean)((((2067258406 | -2067258405) + (2067258406 & -2067258405))) != 0)); + var3.start(); + return (boolean)(((1)) != 0); + case 199874470: + default: + var1 = el.open(); + if (var1 == null) { + var4 = 891534302; + } else { + var4 = 1931776594; + } + break; + case 891534302: + return (boolean)(((0)) != 0); + case 1931776594: + this.channel = var1; + this.connectedAt = System.currentTimeMillis(); + var2 = new JsonObject(); + var2.addProperty( + "v", (1960855922 ^ -1960855921) + ((1960855922 & -1960855921) << 1) + ); + var2.addProperty( + "client_id", + "1545379399451549787" + ); + if (!this.writeJson(var1, 0, var2)) { + var4 = -1560035544; + } else { + var4 = -799431880; + } + } + } + } + + private boolean send(ee var1) { + JsonObject var2 = new JsonObject(); + var2.addProperty("pid", ProcessHandle.current().pid()); + var2.add("activity", var1.toJson()); + JsonObject var3 = new JsonObject(); + var3.addProperty( + "cmd", + "SET_ACTIVITY" + ); + var3.addProperty("nonce", UUID.randomUUID().toString()); + var3.add("args", var2); + return this.writeJson(this.channel, 1, var3); + } + + private boolean writeJson(eg var1, int var2, JsonObject var3) { + return this.writeFrame(var1, var2, var3.toString().getBytes(StandardCharsets.UTF_8)); + } + + private boolean writeFrame(eg var1, int var2, byte[] var3) { + if (var1 == null) { + return (boolean)(((0)) != 0); + } + + ByteBuffer var4 = ByteBuffer.allocate((1490364701 ^ -1490364693) + ((1490364701 & -1490364693) << 1) + var3.length).order(ByteOrder.LITTLE_ENDIAN); + var4.putInt(var2); + var4.putInt(var3.length); + var4.put(var3); + + try { + synchronized (this.writeLock) { + var1.write(var4.array()); + } + + return (boolean)(((1)) != 0); + } catch (IOException var8) { + id.warn(Cif.SOCIAL, "discord rpc write failed", var8); + this.disconnect(); + return (boolean)(((0)) != 0); + } + } + + private void read(eg var1) { + byte[] var2 = new byte[8]; + + try { + while (this.running.get() && this.channel == var1) { + readFully(var1, var2, (-337783278 ^ 337783286) + ((-337783278 & 337783286) << 1)); + ByteBuffer var3 = ByteBuffer.wrap(var2).order(ByteOrder.LITTLE_ENDIAN); + int var4 = var3.getInt(); + int var5 = var3.getInt(); + if (var5 < 0 || var5 > (1844279940 | -1844214404) + (1844279940 & -1844214404)) { + throw new IOException( + "discord rpc frame exceeds the accepted size" + ); + } + + byte[] var6 = new byte[var5]; + readFully(var1, var6, var5); + this.handle(var1, var4, var6); + } + } catch (IOException var7) { + if (this.running.get() && this.channel == var1) { + id.warn( + Cif.SOCIAL, "discord rpc read failed", var7 + ); + this.disconnect(); + } + } + } + + private void handle(eg var1, int var2, byte[] var3) { + switch (var2) { + case 1: + this.inspect(var3); + break; + case 2: + this.disconnect(); + break; + case 3: + this.writeFrame(var1, 4, var3); + } + } + + private void inspect(byte[] var1) { + String var2 = new String(var1, StandardCharsets.UTF_8); + + JsonObject var3; + try { + var3 = JsonParser.parseString(var2).getAsJsonObject(); + } catch (JsonSyntaxException | IllegalStateException var5) { + return; + } + + if (var3.has("evt") + && !var3.get("evt").isJsonNull()) { + String var4 = var3.get("evt").getAsString(); + if ("READY".equals(var4)) { + this.ready = (boolean)(((1)) != 0); + } else if ("ERROR".equals(var4)) { + id.warn( + Cif.SOCIAL, "discord rpc rejected the presence: {}", var2 + ); + } + } + } + + private void disconnect() { + eg var1; + synchronized (this) { + var1 = this.channel; + this.channel = null; + this.ready = (boolean)(((0)) != 0); + this.published = null; + this.publishedAt = (1006604842457957131L | -1006604842457957131L) + (1006604842457957131L & -1006604842457957131L); + } + + detach(var1); + } + + private static void detach(eg var0) { + Thread var1 = null; + int var2 = 2062884787; + + while (true) { + switch (var2) { + case -1344120312: + var1 = new Thread( + () -> release(var0), "evo-discord-rpc-closer" + ); + var1.setDaemon((boolean)((((1138461147 | -1138461146) + (1138461147 & -1138461146))) != 0)); + var1.start(); + return; + case -307130357: + return; + case 2062884787: + } + + if (var0 == null) { + var2 = -307130357; + } else { + var2 = -1344120312; + } + } + } + + private static void release(eg var0) { + try { + var0.close(); + } catch (IOException var2) { + id.debug(Cif.SOCIAL, "discord rpc stream closed"); + } + } + + private static void readFully(eg var0, byte[] var1, int var2) throws IOException { + int var3 = 0; + int var4 = 0; + int var5 = 1722846908; + + while (true) { + switch (var5) { + case -871863889: + throw new EOFException("discord rpc stream closed"); + case 56894932: + var4 = var0.read(var1, var3, var2 - var3); + if (var4 < 0) { + var5 = -871863889; + } else { + var5 = 498017331; + } + break; + case 498017331: + var3 += var4; + var5 = 794711015; + break; + case 794711015: + if (var3 < var2) { + var5 = 56894932; + } else { + var5 = 1207010735; + } + break; + case 1207010735: + return; + case 1722846908: + default: + var3 = 0; + var5 = 794711015; + } + } + } + + private static boolean sleepQuietly(long var0) { + try { + Thread.sleep(var0); + return (boolean)(((1)) != 0); + } catch (InterruptedException var3) { + Thread.currentThread().interrupt(); + return (boolean)(((0)) != 0); + } + } +} diff --git a/src/main/java/defpackage/ek.java b/src/main/java/defpackage/ek.java new file mode 100644 index 0000000..d1a9c87 --- /dev/null +++ b/src/main/java/defpackage/ek.java @@ -0,0 +1,60 @@ +package defpackage; + +import java.io.IOException; +import java.net.UnixDomainSocketAddress; +import java.nio.ByteBuffer; +import java.nio.channels.SocketChannel; +import java.nio.file.Path; + +final class ek implements eg { + private final SocketChannel channel; + + ek(Path var1) throws IOException { + this.channel = SocketChannel.open(UnixDomainSocketAddress.of(var1)); + } + + @Override + public int read(byte[] var1, int var2, int var3) throws IOException { + return this.channel.read(ByteBuffer.wrap(var1, var2, var3)); + } + + @Override + public void write(byte[] var1) throws IOException { + ByteBuffer var2 = null; + int var3 = -843910647; + + while (true) { + switch (var3) { + case -843910647: + default: + var2 = ByteBuffer.wrap(var1); + var3 = 1937395489; + break; + case -426216691: + return; + case -188710784: + throw new IOException( + "discord ipc channel closed while writing" + ); + case 1559490376: + if (this.channel.write(var2) < 0) { + var3 = -188710784; + } else { + var3 = 1937395489; + } + break; + case 1937395489: + if (var2.hasRemaining()) { + var3 = 1559490376; + } else { + var3 = -426216691; + } + } + } + } + + @Override + public void close() throws IOException { + this.channel.close(); + } +} diff --git a/src/main/java/defpackage/el.java b/src/main/java/defpackage/el.java new file mode 100644 index 0000000..d860408 --- /dev/null +++ b/src/main/java/defpackage/el.java @@ -0,0 +1,159 @@ +package defpackage; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Locale; + +final class el { + static final String WRITE_CLOSED = "discord ipc channel closed while writing"; + private static final String OS_PROPERTY = "os.name"; + private static final String WINDOWS_MARKER = "win"; + private static final String PIPE_PREFIX = "\\\\.\\pipe\\discord-ipc-"; + private static final String SOCKET_PREFIX = "discord-ipc-"; + private static final String FALLBACK_TEMP_DIRECTORY = "/tmp"; + private static final String[] TEMP_ENVIRONMENT; + private static final String[] SOCKET_SUBDIRECTORIES; + private static final int MAX_INSTANCE_INDEX = 10; + + private el() { + } + + static eg open() { + eg var1 = null; + int var0 = -1448524230; + + while (true) { + switch (var0) { + case -2132230917: + return var1; + case -1902435610: + var1 = openSocket(); + var0 = -2132230917; + break; + case -1448524230: + default: + if (isWindows()) { + var0 = 595113685; + } else { + var0 = -1902435610; + } + break; + case 595113685: + var1 = openPipe(); + var0 = -2132230917; + } + } + } + + private static boolean isWindows() { + return System.getProperty("os.name", "") + .toLowerCase(Locale.ROOT) + .contains("win"); + } + + private static eg openPipe() { + for (int var0 = 0; var0 < 10; var0++) { + try { + return new eh("\\\\.\\pipe\\discord-ipc-" + var0); + } catch (IOException var2) { + } + } + + return null; + } + + private static eg openSocket() { + Path var0 = temporaryDirectory(); + String[] var1 = SOCKET_SUBDIRECTORIES; + int var2 = var1.length; + + for (int var3 = 0; var3 < var2; var3++) { + String var4 = var1[var3]; + Path var5 = var4.isEmpty() ? var0 : var0.resolve(var4); + if (Files.isDirectory(var5)) { + for (int var6 = 0; + var6 < 10; + var6++ + ) { + Path var7 = var5.resolve("discord-ipc-" + var6); + if (Files.exists(var7)) { + try { + return new ek(var7); + } catch (IOException var9) { + } + } + } + } + } + + return null; + } + + private static Path temporaryDirectory() { + String[] var0 = null; + int var1 = 0; + int var2 = 0; + String var3 = null; + String var4 = null; + int var5 = 114205303; + + while (true) { + switch (var5) { + case -536592242: + var2++; + var5 = 2066681758; + break; + case -212623462: + if (!var4.isBlank()) { + var5 = 1275687735; + } else { + var5 = -536592242; + } + break; + case 114205303: + default: + var0 = TEMP_ENVIRONMENT; + var1 = var0.length; + var2 = 0; + var5 = 2066681758; + break; + case 181989738: + return Path.of("/tmp"); + case 488760895: + var3 = var0[var2]; + var4 = System.getenv(var3); + if (var4 != null) { + var5 = -212623462; + } else { + var5 = -536592242; + } + break; + case 1275687735: + return Path.of(var4); + case 2066681758: + if (var2 < var1) { + var5 = 488760895; + } else { + var5 = 181989738; + } + } + } + } + + static { + String[] var10000 = new String[4]; + var10000[0] = "XDG_RUNTIME_DIR"; + var10000[1] = "TMPDIR"; + var10000[2] = "TMP"; + var10000[3] = "TEMP"; + TEMP_ENVIRONMENT = var10000; + var10000 = new String[5]; + var10000[0] = ""; + var10000[1] = "app/com.discordapp.Discord"; + var10000[2] = "app/com.discordapp.DiscordCanary"; + var10000[3] = "snap.discord"; + var10000[4] = "snap.discord-canary"; + SOCKET_SUBDIRECTORIES = var10000; + } +} diff --git a/src/main/java/defpackage/em.java b/src/main/java/defpackage/em.java new file mode 100644 index 0000000..fb9948c --- /dev/null +++ b/src/main/java/defpackage/em.java @@ -0,0 +1,22 @@ +package defpackage; + +public abstract class em implements m, l { + private boolean cancelled; + + protected em() { + } + + @Override + public boolean isCancelled() { + return this.cancelled; + } + + @Override + public void setCancelled(boolean var1) { + this.cancelled = var1; + } + + public void cancel() { + this.cancelled = (boolean)(((1)) != 0); + } +} diff --git a/src/main/java/defpackage/en.java b/src/main/java/defpackage/en.java new file mode 100644 index 0000000..2354f32 --- /dev/null +++ b/src/main/java/defpackage/en.java @@ -0,0 +1,14 @@ +package defpackage; + +public abstract class en implements m, o { + private final byte type; + + protected en(byte var1) { + this.type = var1; + } + + @Override + public byte getType() { + return this.type; + } +} diff --git a/src/main/java/defpackage/eo.java b/src/main/java/defpackage/eo.java new file mode 100644 index 0000000..60cddf3 --- /dev/null +++ b/src/main/java/defpackage/eo.java @@ -0,0 +1,18 @@ +package defpackage; + + +public class eo extends em { + private int color; + + public int getColor() { + return this.color; + } + + public void setColor(int var1) { + this.color = var1; + } + + public eo(int var1) { + this.color = var1; + } +} diff --git a/src/main/java/defpackage/ep.java b/src/main/java/defpackage/ep.java new file mode 100644 index 0000000..2e9cf0f --- /dev/null +++ b/src/main/java/defpackage/ep.java @@ -0,0 +1,18 @@ +package defpackage; + + +public final class ep extends em { + private String message; + + public String getMessage() { + return this.message; + } + + public ep(String var1) { + this.message = var1; + } + + public void setMessage(String var1) { + this.message = var1; + } +} diff --git a/src/main/java/defpackage/eq.java b/src/main/java/defpackage/eq.java new file mode 100644 index 0000000..a8cc045 --- /dev/null +++ b/src/main/java/defpackage/eq.java @@ -0,0 +1,28 @@ +package defpackage; + + +public class eq extends p { + private double horizontal; + private double vertical; + + public double getHorizontal() { + return this.horizontal; + } + + public double getVertical() { + return this.vertical; + } + + public void setHorizontal(double var1) { + this.horizontal = var1; + } + + public void setVertical(double var1) { + this.vertical = var1; + } + + public eq(double var1, double var3) { + this.horizontal = var1; + this.vertical = var3; + } +} diff --git a/src/main/java/defpackage/er.java b/src/main/java/defpackage/er.java new file mode 100644 index 0000000..b3fe5b3 --- /dev/null +++ b/src/main/java/defpackage/er.java @@ -0,0 +1,144 @@ +package defpackage; + + +public final class er implements m { + private final int action; + private final int keyCode; + + public boolean is(int var1) { + int var3 = 0; + int var2 = 1711939173; + + while (true) { + switch (var2) { + case -965984713: + var3 = 1; + var2 = -77826450; + break; + case -77826450: + return (boolean)((var3) != 0); + case 1299300005: + var3 = 0; + var2 = -77826450; + break; + case 1711939173: + default: + if (var1 == this.keyCode) { + var2 = -965984713; + } else { + var2 = 1299300005; + } + } + } + } + + public boolean isKeyDown(int var1) { + return this.isKeyDown( + var1, + (boolean)(((aqg.mc.gui.screen() == null + ? 1: (-1817761596 ^ 1817761596) + ((-1817761596 & 1817761596) << 1)) + ) != 0)); + } + + public boolean isKeyDown(int var1, boolean var2) { + int var4 = 0; + int var3 = 200354040; + + while (true) { + switch (var3) { + case -291646440: + if (this.action == (546036753 | -546036752) + (546036753 & -546036752)) { + var3 = -35598942; + } else { + var3 = 82455781; + } + break; + case -150296160: + var4 = 1; + var3 = 138662406; + break; + case -35598942: + if (var2) { + var3 = -150296160; + } else { + var3 = 82455781; + } + break; + case 82455781: + var4 = 0; + var3 = 138662406; + break; + case 138662406: + return (boolean)((var4) != 0); + case 200354040: + default: + if (this.keyCode == var1) { + var3 = -291646440; + } else { + var3 = 82455781; + } + } + } + } + + public boolean isKeyReleased(int var1) { + return this.isKeyReleased( + var1, + (boolean)(((aqg.mc.gui.screen() == null ? 1: (-646902137 | 646902137) + (-646902137 & 646902137)) + ) != 0)); + } + + public boolean isKeyReleased(int var1, boolean var2) { + int var4 = 0; + int var3 = -1348477635; + + while (true) { + switch (var3) { + case -1717596464: + if (this.action == 0) { + var3 = -275280885; + } else { + var3 = -552128834; + } + break; + case -1348477635: + default: + if (this.keyCode == var1) { + var3 = -1717596464; + } else { + var3 = -552128834; + } + break; + case -857634933: + return (boolean)((var4) != 0); + case -661639722: + var4 = 1; + var3 = -857634933; + break; + case -552128834: + var4 = 0; + var3 = -857634933; + break; + case -275280885: + if (var2) { + var3 = -661639722; + } else { + var3 = -552128834; + } + } + } + } + + public int getAction() { + return this.action; + } + + public int getKeyCode() { + return this.keyCode; + } + + public er(int var1, int var2) { + this.action = var1; + this.keyCode = var2; + } +} diff --git a/src/main/java/defpackage/es.java b/src/main/java/defpackage/es.java new file mode 100644 index 0000000..e598f3f --- /dev/null +++ b/src/main/java/defpackage/es.java @@ -0,0 +1,20 @@ +package defpackage; + + +public class es implements m { + private final int button; + private final int action; + + public int getButton() { + return this.button; + } + + public int getAction() { + return this.action; + } + + public es(int var1, int var2) { + this.button = var1; + this.action = var2; + } +} diff --git a/src/main/java/defpackage/et.java b/src/main/java/defpackage/et.java new file mode 100644 index 0000000..d864b21 --- /dev/null +++ b/src/main/java/defpackage/et.java @@ -0,0 +1,28 @@ +package defpackage; + + +public class et extends p { + float cursorDeltaX; + float cursorDeltaY; + + public float getCursorDeltaX() { + return this.cursorDeltaX; + } + + public float getCursorDeltaY() { + return this.cursorDeltaY; + } + + public void setCursorDeltaX(float var1) { + this.cursorDeltaX = var1; + } + + public void setCursorDeltaY(float var1) { + this.cursorDeltaY = var1; + } + + public et(float var1, float var2) { + this.cursorDeltaX = var1; + this.cursorDeltaY = var2; + } +} diff --git a/src/main/java/defpackage/eu.java b/src/main/java/defpackage/eu.java new file mode 100644 index 0000000..e23b2c0 --- /dev/null +++ b/src/main/java/defpackage/eu.java @@ -0,0 +1,109 @@ +package defpackage; + +import net.minecraft.client.gui.screens.Screen; + +public class eu implements m { + private Screen screen; + + public eu(Screen var1) { + this.screen = var1; + } + + public Screen getScreen() { + return this.screen; + } + + public void setScreen(Screen var1) { + this.screen = var1; + } + + @Override + public boolean equals(Object var1) { + eu var2 = null; + Screen var3 = null; + Screen var4 = null; + int var5 = 408361393; + + while (true) { + switch (var5) { + case -2137933809: + return (boolean)(((0)) != 0); + case -2127842771: + return (boolean)(((1)) != 0); + case -2104716941: + return (boolean)(((1)) != 0); + case -1690178330: + if (var4 != null) { + var5 = -1484738052; + } else { + var5 = -2127842771; + } + break; + case -1484738052: + var5 = 407928101; + break; + case -664263981: + if (!var3.equals(var4)) { + var5 = 407928101; + } else { + var5 = -2127842771; + } + break; + case -450028553: + var3 = this.getScreen(); + var4 = var2.getScreen(); + if (var3 == null) { + var5 = -1690178330; + } else { + var5 = -664263981; + } + break; + case -133080879: + if (!(var1 instanceof eu)) { + var5 = -2137933809; + } else { + var5 = 1052344077; + } + break; + case 407928101: + return (boolean)(((0)) != 0); + case 408361393: + default: + if (var1 == this) { + var5 = -2104716941; + } else { + var5 = -133080879; + } + break; + case 1052344077: + var2 = (eu)var1; + if (!var2.canEqual(this)) { + var5 = 1618161239; + } else { + var5 = -450028553; + } + break; + case 1618161239: + return (boolean)(((0)) != 0); + } + } + } + + protected boolean canEqual(Object var1) { + return var1 instanceof eu; + } + + @Override + public int hashCode() { + int var1 = 59; + int var2 = 1; + Screen var3 = this.getScreen(); + return var2 * ((172044874 ^ -172044815) + ((172044874 & -172044815) << 1)) + + (var3 == null ? 43: var3.hashCode()); + } + + @Override + public String toString() { + return "EventSetScreen(screen=" + this.getScreen() + ")"; + } +} diff --git a/src/main/java/defpackage/ev.java b/src/main/java/defpackage/ev.java new file mode 100644 index 0000000..47ea3b4 --- /dev/null +++ b/src/main/java/defpackage/ev.java @@ -0,0 +1,49 @@ +package defpackage; + +import net.minecraft.world.inventory.ContainerInput; + +public class ev extends p { + private int windowId; + private int slotId; + private int button; + private ContainerInput actionType; + + public int getWindowId() { + return this.windowId; + } + + public int getSlotId() { + return this.slotId; + } + + public int getButton() { + return this.button; + } + + public ContainerInput getActionType() { + return this.actionType; + } + + public void setWindowId(int var1) { + this.windowId = var1; + } + + public void setSlotId(int var1) { + this.slotId = var1; + } + + public void setButton(int var1) { + this.button = var1; + } + + public void setActionType(ContainerInput var1) { + this.actionType = var1; + } + + public ev(int var1, int var2, int var3, ContainerInput var4) { + this.windowId = var1; + this.slotId = var2; + this.button = var3; + this.actionType = var4; + } +} diff --git a/src/main/java/defpackage/ew.java b/src/main/java/defpackage/ew.java new file mode 100644 index 0000000..6b35b55 --- /dev/null +++ b/src/main/java/defpackage/ew.java @@ -0,0 +1,11 @@ +package defpackage; + +import net.minecraft.client.gui.screens.Screen; + +public class ew extends em { + private final Screen screen; + + public ew(Screen var1) { + this.screen = var1; + } +} diff --git a/src/main/java/defpackage/ex.java b/src/main/java/defpackage/ex.java new file mode 100644 index 0000000..3027c0e --- /dev/null +++ b/src/main/java/defpackage/ex.java @@ -0,0 +1,20 @@ +package defpackage; + + +public class ex implements m { + private final rm module; + private final boolean enabled; + + public ex(rm var1, boolean var2) { + this.module = var1; + this.enabled = var2; + } + + public rm getModule() { + return this.module; + } + + public boolean isEnabled() { + return this.enabled; + } +} diff --git a/src/main/java/defpackage/ey.java b/src/main/java/defpackage/ey.java new file mode 100644 index 0000000..a43960f --- /dev/null +++ b/src/main/java/defpackage/ey.java @@ -0,0 +1,15 @@ +package defpackage; + +import net.minecraft.world.entity.Entity; + +public class ey implements m { + private Entity entity; + + public Entity getEntity() { + return this.entity; + } + + public ey(Entity var1) { + this.entity = var1; + } +} diff --git a/src/main/java/defpackage/ez.java b/src/main/java/defpackage/ez.java new file mode 100644 index 0000000..a9fa714 --- /dev/null +++ b/src/main/java/defpackage/ez.java @@ -0,0 +1,4 @@ +package defpackage; + +public class ez implements m { +} diff --git a/src/main/java/defpackage/f.java b/src/main/java/defpackage/f.java new file mode 100644 index 0000000..becf28b --- /dev/null +++ b/src/main/java/defpackage/f.java @@ -0,0 +1,115 @@ +package defpackage; + +public class f { + public static String getUsername() { + cr var0 = null; + String var2 = null; + int var1 = 717365556; + + while (true) { + switch (var1) { + case -596728688: + if (var0.username() != null) { + var1 = 2059959272; + } else { + var1 = 1721459429; + } + break; + case 392644811: + return var2; + case 717365556: + default: + var0 = cp.user(); + if (var0 != null) { + var1 = -596728688; + } else { + var1 = 1721459429; + } + break; + case 1721459429: + var2 = "Guest"; + var1 = 392644811; + break; + case 2059959272: + var2 = var0.username(); + var1 = 392644811; + } + } + } + + public static String getUID() { + cr var0 = null; + String var2 = null; + int var1 = -918240533; + + while (true) { + switch (var1) { + case -1655305930: + var2 = "—"; + var1 = -1625284772; + break; + case -1625284772: + return var2; + case -918240533: + default: + var0 = cp.user(); + if (var0 != null) { + var1 = 193273876; + } else { + var1 = -1655305930; + } + break; + case 193273876: + if (var0.uid() > 0) { + var1 = 1968127084; + } else { + var1 = -1655305930; + } + break; + case 1968127084: + var2 = String.valueOf(var0.uid()); + var1 = -1625284772; + } + } + } + + public static String getRole() { + cr var0 = null; + String var1 = null; + int var2 = 10706105; + + while (true) { + switch (var2) { + case -1153123443: + if (var0.role() != null) { + var2 = -526559343; + } else { + var2 = 822875313; + } + break; + case -526559343: + if (var0.role().isBlank()) { + var2 = 822875313; + } else { + var2 = 1010321046; + } + break; + case 10706105: + default: + var0 = cp.user(); + if (var0 != null) { + var2 = -1153123443; + } else { + var2 = 822875313; + } + break; + case 822875313: + return "User"; + case 1010321046: + var1 = var0.role(); + return Character.toUpperCase(var1.charAt((-153165394 | 153165394) + (-153165394 & 153165394))) + + var1.substring((-1134749274 | 1134749275) + (-1134749274 & 1134749275)); + } + } + } +} diff --git a/src/main/java/defpackage/fa.java b/src/main/java/defpackage/fa.java new file mode 100644 index 0000000..e0813fe --- /dev/null +++ b/src/main/java/defpackage/fa.java @@ -0,0 +1,5 @@ +package defpackage; + + +public class fa implements m { +} diff --git a/src/main/java/defpackage/fb.java b/src/main/java/defpackage/fb.java new file mode 100644 index 0000000..b914ba2 --- /dev/null +++ b/src/main/java/defpackage/fb.java @@ -0,0 +1,6 @@ +package defpackage; + +public enum fb { + POST, + PRE; +} diff --git a/src/main/java/defpackage/fc.java b/src/main/java/defpackage/fc.java new file mode 100644 index 0000000..5d73aaf --- /dev/null +++ b/src/main/java/defpackage/fc.java @@ -0,0 +1,21 @@ +package defpackage; + +import net.minecraft.world.entity.Entity; + +public final class fc extends em { + private final Entity target; + private final fb action; + + public Entity getTarget() { + return this.target; + } + + public fb getAction() { + return this.action; + } + + public fc(Entity var1, fb var2) { + this.target = var1; + this.action = var2; + } +} diff --git a/src/main/java/defpackage/fd.java b/src/main/java/defpackage/fd.java new file mode 100644 index 0000000..e486203 --- /dev/null +++ b/src/main/java/defpackage/fd.java @@ -0,0 +1,105 @@ +package defpackage; + + +public class fd implements m { + private float yaw; + private float pitch; + + public float getYaw() { + return this.yaw; + } + + public float getPitch() { + return this.pitch; + } + + public void setYaw(float var1) { + this.yaw = var1; + } + + public void setPitch(float var1) { + this.pitch = var1; + } + + @Override + public boolean equals(Object var1) { + fd var2 = null; + int var3 = -1252585684; + + while (true) { + switch (var3) { + case -1957780782: + return (boolean)(((0)) != 0); + case -1767861282: + return (boolean)(((0)) != 0); + case -1294957829: + var2 = (fd)var1; + if (!var2.canEqual(this)) { + var3 = -1767861282; + } else { + var3 = 439336039; + } + break; + case -1252585684: + default: + if (var1 == this) { + var3 = 1276501585; + } else { + var3 = 995371273; + } + break; + case -219544176: + return (boolean)(((0)) != 0); + case -132867432: + if (Float.compare(this.getPitch(), var2.getPitch()) != 0) { + var3 = -219544176; + } else { + var3 = 1508959858; + } + break; + case 439336039: + if (Float.compare(this.getYaw(), var2.getYaw()) != 0) { + var3 = 1688963820; + } else { + var3 = -132867432; + } + break; + case 995371273: + if (!(var1 instanceof fd)) { + var3 = -1957780782; + } else { + var3 = -1294957829; + } + break; + case 1276501585: + return (boolean)(((1)) != 0); + case 1508959858: + return (boolean)(((1)) != 0); + case 1688963820: + return (boolean)(((0)) != 0); + } + } + } + + protected boolean canEqual(Object var1) { + return var1 instanceof fd; + } + + @Override + public int hashCode() { + int var1 = 59; + int var2 = 1; + var2 = var2 * ((-1713221730 | 1713221789) + (-1713221730 & 1713221789)) + Float.floatToIntBits(this.getYaw()); + return var2 * ((-282981687 ^ 282981746) + ((-282981687 & 282981746) << 1)) + Float.floatToIntBits(this.getPitch()); + } + + @Override + public String toString() { + return "EventDirection(yaw=" + this.getYaw() + ", pitch=" + this.getPitch() + ")"; + } + + public fd(float var1, float var2) { + this.yaw = var1; + this.pitch = var2; + } +} diff --git a/src/main/java/defpackage/fe.java b/src/main/java/defpackage/fe.java new file mode 100644 index 0000000..79591e6 --- /dev/null +++ b/src/main/java/defpackage/fe.java @@ -0,0 +1,129 @@ +package defpackage; + +import net.minecraft.world.entity.Entity; + +public class fe implements m { + private Entity entity; + private float size; + + public Entity getEntity() { + return this.entity; + } + + public float getSize() { + return this.size; + } + + public void setEntity(Entity var1) { + this.entity = var1; + } + + public void setSize(float var1) { + this.size = var1; + } + + @Override + public boolean equals(Object var1) { + fe var2 = null; + Entity var3 = null; + Entity var4 = null; + int var5 = -164344277; + + while (true) { + switch (var5) { + case -1968172782: + if (!(var1 instanceof fe)) { + var5 = 713568506; + } else { + var5 = 764482655; + } + break; + case -1893501020: + return (boolean)(((1)) != 0); + case -1133137229: + return (boolean)(((1)) != 0); + case -824089422: + if (!var3.equals(var4)) { + var5 = 305415751; + } else { + var5 = -1133137229; + } + break; + case -279661225: + var5 = 305415751; + break; + case -198193649: + return (boolean)(((0)) != 0); + case -164344277: + default: + if (var1 == this) { + var5 = -1893501020; + } else { + var5 = -1968172782; + } + break; + case 305415751: + return (boolean)(((0)) != 0); + case 570086168: + var3 = this.getEntity(); + var4 = var2.getEntity(); + if (var3 == null) { + var5 = 1168038538; + } else { + var5 = -824089422; + } + break; + case 713568506: + return (boolean)(((0)) != 0); + case 764482655: + var2 = (fe)var1; + if (!var2.canEqual(this)) { + var5 = -198193649; + } else { + var5 = 1133077951; + } + break; + case 1133077951: + if (Float.compare(this.getSize(), var2.getSize()) != 0) { + var5 = 1558260785; + } else { + var5 = 570086168; + } + break; + case 1168038538: + if (var4 != null) { + var5 = -279661225; + } else { + var5 = -1133137229; + } + break; + case 1558260785: + return (boolean)(((0)) != 0); + } + } + } + + protected boolean canEqual(Object var1) { + return var1 instanceof fe; + } + + @Override + public int hashCode() { + int var1 = 59; + int var2 = 1; + var2 = var2 * ((1740736398 ^ -1740736339) + ((1740736398 & -1740736339) << 1)) + Float.floatToIntBits(this.getSize()); + Entity var3 = this.getEntity(); + return var2 * ((-494447394 ^ 494447453) + ((-494447394 & 494447453) << 1)) + + (var3 == null ? 43: var3.hashCode()); + } + + @Override + public String toString() { + return "EventEntityHitBox(entity=" + this.getEntity() + ", size=" + this.getSize() + ")"; + } + + public fe(Entity var1, float var2) { + this.entity = var1; + this.size = var2; + } +} diff --git a/src/main/java/defpackage/ff.java b/src/main/java/defpackage/ff.java new file mode 100644 index 0000000..3330649 --- /dev/null +++ b/src/main/java/defpackage/ff.java @@ -0,0 +1,4 @@ +package defpackage; + +public class ff implements m { +} diff --git a/src/main/java/defpackage/fg.java b/src/main/java/defpackage/fg.java new file mode 100644 index 0000000..e5f00e0 --- /dev/null +++ b/src/main/java/defpackage/fg.java @@ -0,0 +1,19 @@ +package defpackage; + +import net.minecraft.world.phys.Vec3; + +public class fg extends em { + private Vec3 movePos; + + public fg(Vec3 var1) { + this.movePos = var1; + } + + public Vec3 getMovePos() { + return this.movePos; + } + + public void setMovePos(Vec3 var1) { + this.movePos = var1; + } +} diff --git a/src/main/java/defpackage/fh.java b/src/main/java/defpackage/fh.java new file mode 100644 index 0000000..7fc3ce5 --- /dev/null +++ b/src/main/java/defpackage/fh.java @@ -0,0 +1,39 @@ +package defpackage; + +import net.minecraft.world.entity.player.Input; + +public class fh extends em { + private Input input; + private float forward; + private float strafe; + + public Input getInput() { + return this.input; + } + + public float getForward() { + return this.forward; + } + + public float getStrafe() { + return this.strafe; + } + + public void setInput(Input var1) { + this.input = var1; + } + + public void setForward(float var1) { + this.forward = var1; + } + + public void setStrafe(float var1) { + this.strafe = var1; + } + + public fh(Input var1, float var2, float var3) { + this.input = var1; + this.forward = var2; + this.strafe = var3; + } +} diff --git a/src/main/java/defpackage/fi.java b/src/main/java/defpackage/fi.java new file mode 100644 index 0000000..0ac731f --- /dev/null +++ b/src/main/java/defpackage/fi.java @@ -0,0 +1,5 @@ +package defpackage; + + +public class fi extends em { +} diff --git a/src/main/java/defpackage/fj.java b/src/main/java/defpackage/fj.java new file mode 100644 index 0000000..dd719e0 --- /dev/null +++ b/src/main/java/defpackage/fj.java @@ -0,0 +1,5 @@ +package defpackage; + + +public class fj extends em { +} diff --git a/src/main/java/defpackage/fk.java b/src/main/java/defpackage/fk.java new file mode 100644 index 0000000..5250eb4 --- /dev/null +++ b/src/main/java/defpackage/fk.java @@ -0,0 +1,4 @@ +package defpackage; + +public class fk extends em { +} diff --git a/src/main/java/defpackage/fl.java b/src/main/java/defpackage/fl.java new file mode 100644 index 0000000..ddc3b84 --- /dev/null +++ b/src/main/java/defpackage/fl.java @@ -0,0 +1,5 @@ +package defpackage; + + +public class fl implements m { +} diff --git a/src/main/java/defpackage/fm.java b/src/main/java/defpackage/fm.java new file mode 100644 index 0000000..e10fd49 --- /dev/null +++ b/src/main/java/defpackage/fm.java @@ -0,0 +1,38 @@ +package defpackage; + + +public class fm extends em { + private boolean cameraClip; + private float distance; + private apz angle; + + public boolean isCameraClip() { + return this.cameraClip; + } + + public float getDistance() { + return this.distance; + } + + public apz getAngle() { + return this.angle; + } + + public void setCameraClip(boolean var1) { + this.cameraClip = var1; + } + + public void setDistance(float var1) { + this.distance = var1; + } + + public void setAngle(apz var1) { + this.angle = var1; + } + + public fm(boolean var1, float var2, apz var3) { + this.cameraClip = var1; + this.distance = var2; + this.angle = var3; + } +} diff --git a/src/main/java/defpackage/fn.java b/src/main/java/defpackage/fn.java new file mode 100644 index 0000000..13decf5 --- /dev/null +++ b/src/main/java/defpackage/fn.java @@ -0,0 +1,19 @@ +package defpackage; + +import net.minecraft.world.phys.Vec3; + +public class fn implements m { + private Vec3 pos; + + public Vec3 getPos() { + return this.pos; + } + + public void setPos(Vec3 var1) { + this.pos = var1; + } + + public fn(Vec3 var1) { + this.pos = var1; + } +} diff --git a/src/main/java/defpackage/fo.java b/src/main/java/defpackage/fo.java new file mode 100644 index 0000000..11d5cab --- /dev/null +++ b/src/main/java/defpackage/fo.java @@ -0,0 +1,41 @@ +package defpackage; + + +public class fo extends p { + private float distance; + private int color; + private boolean overrideDistance; + private boolean fogDisabled; + + public float getDistance() { + return this.distance; + } + + public int getColor() { + return this.color; + } + + public boolean isOverrideDistance() { + return this.overrideDistance; + } + + public boolean isFogDisabled() { + return this.fogDisabled; + } + + public void setDistance(float var1) { + this.distance = var1; + } + + public void setColor(int var1) { + this.color = var1; + } + + public void setOverrideDistance(boolean var1) { + this.overrideDistance = var1; + } + + public void setFogDisabled(boolean var1) { + this.fogDisabled = var1; + } +} diff --git a/src/main/java/defpackage/fp.java b/src/main/java/defpackage/fp.java new file mode 100644 index 0000000..06bc317 --- /dev/null +++ b/src/main/java/defpackage/fp.java @@ -0,0 +1,14 @@ +package defpackage; + + +public class fp extends em { + private int fov; + + public int getFov() { + return this.fov; + } + + public void setFov(int var1) { + this.fov = var1; + } +} diff --git a/src/main/java/defpackage/fq.java b/src/main/java/defpackage/fq.java new file mode 100644 index 0000000..a363cc9 --- /dev/null +++ b/src/main/java/defpackage/fq.java @@ -0,0 +1,34 @@ +package defpackage; + +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.world.inventory.Slot; + +public class fq implements m { + private final GuiGraphicsExtractor drawContext; + private final Slot slotHover; + private final int backgroundWidth; + private final int backgroundHeight; + + public GuiGraphicsExtractor getDrawContext() { + return this.drawContext; + } + + public Slot getSlotHover() { + return this.slotHover; + } + + public int getBackgroundWidth() { + return this.backgroundWidth; + } + + public int getBackgroundHeight() { + return this.backgroundHeight; + } + + public fq(GuiGraphicsExtractor var1, Slot var2, int var3, int var4) { + this.drawContext = var1; + this.slotHover = var2; + this.backgroundWidth = var3; + this.backgroundHeight = var4; + } +} diff --git a/src/main/java/defpackage/fr.java b/src/main/java/defpackage/fr.java new file mode 100644 index 0000000..0643007 --- /dev/null +++ b/src/main/java/defpackage/fr.java @@ -0,0 +1,20 @@ +package defpackage; + + +public class fr implements m { + private final aru context; + private final float tickDelta; + + public aru getContext() { + return this.context; + } + + public float getTickDelta() { + return this.tickDelta; + } + + public fr(aru var1, float var2) { + this.context = var1; + this.tickDelta = var2; + } +} diff --git a/src/main/java/defpackage/fs.java b/src/main/java/defpackage/fs.java new file mode 100644 index 0000000..affca78 --- /dev/null +++ b/src/main/java/defpackage/fs.java @@ -0,0 +1,20 @@ +package defpackage; + + +public class fs implements m { + private final aru context; + private final float tickDelta; + + public aru getContext() { + return this.context; + } + + public float getTickDelta() { + return this.tickDelta; + } + + public fs(aru var1, float var2) { + this.context = var1; + this.tickDelta = var2; + } +} diff --git a/src/main/java/defpackage/ft.java b/src/main/java/defpackage/ft.java new file mode 100644 index 0000000..7e4ba7e --- /dev/null +++ b/src/main/java/defpackage/ft.java @@ -0,0 +1,21 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; + +public final class ft implements m { + private final PoseStack matrix; + private final float partialTicks; + + public PoseStack getMatrix() { + return this.matrix; + } + + public float getPartialTicks() { + return this.partialTicks; + } + + public ft(PoseStack var1, float var2) { + this.matrix = var1; + this.partialTicks = var2; + } +} diff --git a/src/main/java/defpackage/fu.java b/src/main/java/defpackage/fu.java new file mode 100644 index 0000000..94d68d6 --- /dev/null +++ b/src/main/java/defpackage/fu.java @@ -0,0 +1,5 @@ +package defpackage; + + +public final class fu extends em { +} diff --git a/src/main/java/defpackage/fv.java b/src/main/java/defpackage/fv.java new file mode 100644 index 0000000..16d4514 --- /dev/null +++ b/src/main/java/defpackage/fv.java @@ -0,0 +1,14 @@ +package defpackage; + + +public class fv implements m { + private final asq context; + + public asq getContext() { + return this.context; + } + + public fv(asq var1) { + this.context = var1; + } +} diff --git a/src/main/java/defpackage/fw.java b/src/main/java/defpackage/fw.java new file mode 100644 index 0000000..f05e8fd --- /dev/null +++ b/src/main/java/defpackage/fw.java @@ -0,0 +1,19 @@ +package defpackage; + +import net.minecraft.network.chat.Component; + +public class fw extends em { + private Component message; + + public Component getMessage() { + return this.message; + } + + public void setMessage(Component var1) { + this.message = var1; + } + + public fw(Component var1) { + this.message = var1; + } +} diff --git a/src/main/java/defpackage/fx.java b/src/main/java/defpackage/fx.java new file mode 100644 index 0000000..b5e6d8b --- /dev/null +++ b/src/main/java/defpackage/fx.java @@ -0,0 +1,6 @@ +package defpackage; + +public enum fx { + SENT, + RECEIVE; +} diff --git a/src/main/java/defpackage/fy.java b/src/main/java/defpackage/fy.java new file mode 100644 index 0000000..b55f07f --- /dev/null +++ b/src/main/java/defpackage/fy.java @@ -0,0 +1,79 @@ +package defpackage; + +import net.minecraft.network.protocol.Packet; + +public class fy extends em { + private final fx action; + private Packet packet; + + public boolean isSent() { + int var2 = 0; + int var1 = -1024985398; + + while (true) { + switch (var1) { + case -1056217388: + var2 = 1; + var1 = 1461592805; + break; + case -1024985398: + default: + if (this.getAction() == fx.SENT) { + var1 = -1056217388; + } else { + var1 = 1710554365; + } + break; + case 1461592805: + return (boolean)((var2) != 0); + case 1710554365: + var2 = 0; + var1 = 1461592805; + } + } + } + + public boolean isReceive() { + int var2 = 0; + int var1 = 1200728130; + + while (true) { + switch (var1) { + case -2008676732: + return (boolean)((var2) != 0); + case 242105822: + var2 = 1; + var1 = -2008676732; + break; + case 719166415: + var2 = 0; + var1 = -2008676732; + break; + case 1200728130: + default: + if (this.getAction() == fx.RECEIVE) { + var1 = 242105822; + } else { + var1 = 719166415; + } + } + } + } + + public fx getAction() { + return this.action; + } + + public Packet getPacket() { + return this.packet; + } + + public void setPacket(Packet var1) { + this.packet = var1; + } + + public fy(fx var1, Packet var2) { + this.action = var1; + this.packet = var2; + } +} diff --git a/src/main/java/defpackage/fz.java b/src/main/java/defpackage/fz.java new file mode 100644 index 0000000..72961a8 --- /dev/null +++ b/src/main/java/defpackage/fz.java @@ -0,0 +1,85 @@ +package defpackage; + +import com.google.gson.Gson; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.util.Collection; +import java.util.function.Supplier; + +public class fz { + private Collection items; + private final String fileName; + private final String shifr; + private final Type type; + private final Supplier> collectionSupplier; + + public fz(String var1, String var2, Type var3, Supplier> var4) { + this.fileName = var1; + this.shifr = var2; + this.type = var3; + this.collectionSupplier = var4; + File var5 = new File(bz.DIRECTORY, var1); + if (!var5.exists()) { + try { + var5.createNewFile(); + this.items = (Collection)var4.get(); + } catch (Exception var7) { + this.items = (Collection)var4.get(); + } + } else { + this.load(); + } + } + + public void save() { + Gson var1 = new Gson(); + String var2 = var1.toJson(this.items); + + try (FileWriter var3 = new FileWriter(new File(bz.DIRECTORY, this.fileName))) { + var3.write(this.shifr.isEmpty() ? var2 : Base64.getEncoder().encodeToString(aoz.encryptData(var2.getBytes(), this.shifr))); + } catch (Exception var8) { + } + } + + public void load() { + try (BufferedReader var1 = new BufferedReader(new FileReader(new File(bz.DIRECTORY, this.fileName)))) { + Gson var2 = new Gson(); + if (!this.shifr.isEmpty()) { + String var3 = var1.readLine(); + if (var3 != null && !var3.isEmpty()) { + byte[] var4 = Base64.getDecoder().decode(var3); + byte[] var5 = aoz.decryptData(var4, this.shifr); + String var6 = new String(var5, StandardCharsets.UTF_8); + this.items = (Collection)var2.fromJson(var6, this.type); + } else { + this.items = this.collectionSupplier.get(); + } + } else { + this.items = (Collection)var2.fromJson(var1, this.type); + } + + if (this.items == null) { + this.items = this.collectionSupplier.get(); + } + } catch (Exception var9) { + this.items = this.collectionSupplier.get(); + } + } + + public void add(T var1) { + this.items.add((T)var1); + } + + public void remove(T var1) { + this.items.remove(var1); + } + + public Collection getItems() { + return this.items; + } +} diff --git a/src/main/java/defpackage/g.java b/src/main/java/defpackage/g.java new file mode 100644 index 0000000..dbd9a4a --- /dev/null +++ b/src/main/java/defpackage/g.java @@ -0,0 +1,20 @@ +package defpackage; + +public final class g { + public static final String VERSION; + public static final String[] AUTHORS; + + private g() { + } + + static { + String var10000 = "%s-%s"; + Object[] var10001 = new Object[2]; + var10001[0] = "0.7"; + var10001[1] = "beta"; + VERSION = String.format(var10000, var10001); + String[] var0 = new String[1]; + var0[0] = "DarkMagician6"; + AUTHORS = var0; + } +} diff --git a/src/main/java/defpackage/ga.java b/src/main/java/defpackage/ga.java new file mode 100644 index 0000000..60e364e --- /dev/null +++ b/src/main/java/defpackage/ga.java @@ -0,0 +1,10 @@ +package defpackage; + +import com.google.common.reflect.TypeToken; +import java.util.Set; + +/* JADX INFO: loaded from: evovis-dec.jar:ga.class */ +class ga extends TypeToken> { + ga() { + } +} diff --git a/src/main/java/defpackage/gb.java b/src/main/java/defpackage/gb.java new file mode 100644 index 0000000..9cb9f37 --- /dev/null +++ b/src/main/java/defpackage/gb.java @@ -0,0 +1,19 @@ +package defpackage; + +import com.google.common.reflect.TypeToken; +import java.util.HashSet; +import java.util.Set; + +public class gb extends fz { + public gb() { + super("friends.json", "", (new TypeToken>() {}).getType(), HashSet::new); + } + + public boolean isFriend(String var1) { + return this.getItems().contains(var1); + } + + public boolean removeFriend(String var1) { + return this.getItems().remove(var1); + } +} diff --git a/src/main/java/defpackage/gc.java b/src/main/java/defpackage/gc.java new file mode 100644 index 0000000..339dd38 --- /dev/null +++ b/src/main/java/defpackage/gc.java @@ -0,0 +1,10 @@ +package defpackage; + +import com.google.common.reflect.TypeToken; +import java.util.Set; + +/* JADX INFO: loaded from: evovis-dec.jar:gc.class */ +class gc extends TypeToken> { + gc() { + } +} diff --git a/src/main/java/defpackage/gd.java b/src/main/java/defpackage/gd.java new file mode 100644 index 0000000..9254511 --- /dev/null +++ b/src/main/java/defpackage/gd.java @@ -0,0 +1,15 @@ +package defpackage; + +import com.google.common.reflect.TypeToken; +import java.util.HashSet; +import java.util.Set; + +public class gd extends fz { + public gd() { + super("staffName.json", "", (new TypeToken>() {}).getType(), HashSet::new); + } + + public boolean isStaff(String var1) { + return this.getItems().contains(var1); + } +} diff --git a/src/main/java/defpackage/ge.java b/src/main/java/defpackage/ge.java new file mode 100644 index 0000000..b072dce --- /dev/null +++ b/src/main/java/defpackage/ge.java @@ -0,0 +1,89 @@ +package defpackage; + +import net.minecraft.network.chat.Component; + +public class ge { + private static final float BASELINE_RATIO = 0.7F; + private static final float PEN_OFFSET = 0.75F; + private static final float HALF = 0.5F; + private gr font; + private float size; + + public float height() { + return this.size * 0.7F; + } + + public float glyphCenterX(String var1, float var2, float var3) { + gs var4 = var1 != null && !var1.isEmpty() ? this.font.glyph(var1.charAt((-203282434 ^ 203282434) + ((-203282434 & 203282434) << 1))) : null; + return var4 == null ? var2 + (var3 - this.width(var1 == null ? "" : var1)) * 0.5F : var2 + (var3 - var4.inkWidth(this.size)) * 0.5F + 0.75F; + } + + public float glyphCenterY(String var1, float var2, float var3) { + gs var4 = null; + float var5 = 0.0F; + gs var7 = null; + int var6 = 1802809944; + + while (true) { + switch (var6) { + case -1644355305: + var5 = this.size * 0.7F - var4.inkTop(this.size); + return var2 + (var3 - var4.inkHeight(this.size)) * 0.5F - var5; + case -165837629: + var7 = this.font.glyph(var1.charAt((656531134 | -656531134) + (656531134 & -656531134))); + var6 = 1174149295; + break; + case -160295932: + if (var1.isEmpty()) { + var6 = 322725755; + } else { + var6 = -165837629; + } + break; + case 322725755: + var7 = null; + var6 = 1174149295; + break; + case 1174149295: + var4 = var7; + if (var4 == null) { + var6 = 1852881706; + } else { + var6 = -1644355305; + } + break; + case 1802809944: + default: + if (var1 != null) { + var6 = -160295932; + } else { + var6 = 322725755; + } + break; + case 1852881706: + return var2 + (var3 - this.height()) * 0.5F; + } + } + } + + public float width(String var1) { + return this.font.getWidth(var1, this.size); + } + + public float width(Component var1) { + return gx.width(this, var1); + } + + public gr getFont() { + return this.font; + } + + public float getSize() { + return this.size; + } + + public ge(gr var1, float var2) { + this.font = var1; + this.size = var2; + } +} diff --git a/src/main/java/defpackage/gf.java b/src/main/java/defpackage/gf.java new file mode 100644 index 0000000..11a5ff9 --- /dev/null +++ b/src/main/java/defpackage/gf.java @@ -0,0 +1,22 @@ +package defpackage; + +import com.google.gson.annotations.SerializedName; + +public final class gf { + @SerializedName("distanceRange") + private float range; + private float width; + private float height; + + public float range() { + return this.range; + } + + public float width() { + return this.width; + } + + public float height() { + return this.height; + } +} diff --git a/src/main/java/defpackage/gg.java b/src/main/java/defpackage/gg.java new file mode 100644 index 0000000..064751a --- /dev/null +++ b/src/main/java/defpackage/gg.java @@ -0,0 +1,24 @@ +package defpackage; + +public final class gg { + private float left; + private float top; + private float right; + private float bottom; + + public float left() { + return this.left; + } + + public float top() { + return this.top; + } + + public float right() { + return this.right; + } + + public float bottom() { + return this.bottom; + } +} diff --git a/src/main/java/defpackage/gh.java b/src/main/java/defpackage/gh.java new file mode 100644 index 0000000..817175b --- /dev/null +++ b/src/main/java/defpackage/gh.java @@ -0,0 +1,24 @@ +package defpackage; + +public final class gh { + private int unicode; + private float advance; + private gg planeBounds; + private gg atlasBounds; + + public int unicode() { + return this.unicode; + } + + public float advance() { + return this.advance; + } + + public gg planeBounds() { + return this.planeBounds; + } + + public gg atlasBounds() { + return this.atlasBounds; + } +} diff --git a/src/main/java/defpackage/gi.java b/src/main/java/defpackage/gi.java new file mode 100644 index 0000000..8cc1c0d --- /dev/null +++ b/src/main/java/defpackage/gi.java @@ -0,0 +1,23 @@ +package defpackage; + +import com.google.gson.annotations.SerializedName; + +public final class gi { + @SerializedName("unicode1") + private int leftChar; + @SerializedName("unicode2") + private int rightChar; + private float advance; + + public int leftChar() { + return this.leftChar; + } + + public int rightChar() { + return this.rightChar; + } + + public float advance() { + return this.advance; + } +} diff --git a/src/main/java/defpackage/gj.java b/src/main/java/defpackage/gj.java new file mode 100644 index 0000000..e675845 --- /dev/null +++ b/src/main/java/defpackage/gj.java @@ -0,0 +1,23 @@ +package defpackage; + +public final class gj { + private float lineHeight; + private float ascender; + private float descender; + + public float lineHeight() { + return this.lineHeight; + } + + public float ascender() { + return this.ascender; + } + + public float descender() { + return this.descender; + } + + public float baselineHeight() { + return this.lineHeight + this.descender; + } +} diff --git a/src/main/java/defpackage/gk.java b/src/main/java/defpackage/gk.java new file mode 100644 index 0000000..cdcf313 --- /dev/null +++ b/src/main/java/defpackage/gk.java @@ -0,0 +1,28 @@ +package defpackage; + +import com.google.gson.annotations.SerializedName; +import java.util.List; + +public final class gk { + private gf atlas; + private gj metrics; + private List glyphs; + @SerializedName("kerning") + private List kernings; + + public gf atlas() { + return this.atlas; + } + + public gj metrics() { + return this.metrics; + } + + public List glyphs() { + return this.glyphs; + } + + public List kernings() { + return this.kernings; + } +} diff --git a/src/main/java/defpackage/gl.java b/src/main/java/defpackage/gl.java new file mode 100644 index 0000000..c330efa --- /dev/null +++ b/src/main/java/defpackage/gl.java @@ -0,0 +1,35 @@ +package defpackage; + + +public final class gl { + public static final gr BOLD = gr.builder() + .atlas("bold") + .data("bold") + .build(); + public static final gr MEDIUM = gr.builder() + .atlas("medium") + .data("medium") + .build(); + public static final gr REGULAR = gr.builder() + .atlas("regular") + .data("regular") + .build(); + public static final gr SEMIBOLD = gr.builder() + .atlas("semibold") + .data("semibold") + .build(); + public static final gr ROUND_BOLD = gr.builder() + .atlas("roundbold") + .data("roundbold") + .build(); + public static final gr ICONS = gr.builder() + .atlas("icons") + .data("icons") + .build(); + + private gl() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/gm.java b/src/main/java/defpackage/gm.java new file mode 100644 index 0000000..e66bfea --- /dev/null +++ b/src/main/java/defpackage/gm.java @@ -0,0 +1,4 @@ +package defpackage; + +public record gm(String text, int color, boolean bold, boolean italic, boolean underlined, boolean strikethrough) { +} diff --git a/src/main/java/defpackage/gn.java b/src/main/java/defpackage/gn.java new file mode 100644 index 0000000..462018c --- /dev/null +++ b/src/main/java/defpackage/gn.java @@ -0,0 +1,69 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.TextColor; + +public class gn { + public static List processText(Component var0, int var1) { + ArrayList var2 = new ArrayList(); + var0.visit((var2x, var3) -> { + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 1386896115; + + while (true) { + switch (var9) { + case -1678014845: + return Optional.empty(); + case 72502787: + var4 = extractColor(var2x, var1); + boolean var11 = var2x.isBold(); + boolean var12 = var2x.isItalic(); + boolean var13 = var2x.isUnderlined(); + boolean var14 = var2x.isStrikethrough(); + var2.add(new gm(var3, var4, var11, var12, var13, var14)); + var9 = -1678014845; + break; + case 1386896115: + default: + if (!var3.isEmpty()) { + var9 = 72502787; + } else { + var9 = -1678014845; + } + } + } + }, Style.EMPTY); + return var2; + } + + private static int extractColor(Style var0, int var1) { + TextColor var2 = null; + int var3 = -723887748; + + while (true) { + switch (var3) { + case -738247928: + return var2.getValue() | -16777216; + case -723887748: + default: + var2 = var0.getColor(); + if (var2 != null) { + var3 = -738247928; + } else { + var3 = 1707781398; + } + break; + case 1707781398: + return var1; + } + } + } +} diff --git a/src/main/java/defpackage/go.java b/src/main/java/defpackage/go.java new file mode 100644 index 0000000..1ce49da --- /dev/null +++ b/src/main/java/defpackage/go.java @@ -0,0 +1,31 @@ +package defpackage; + +public record go(int color, int accent, float glowIntensity, float glowRadius, float pass, float sung, float gradient) { + boolean halo() { + int var2 = 0; + int var1 = -103762606; + + while (true) { + switch (var1) { + case -1820438365: + var2 = 1; + var1 = 956324414; + break; + case -103762606: + default: + if (this.pass != 0.0F) { + var1 = -1820438365; + } else { + var1 = 536430752; + } + break; + case 536430752: + var2 = 0; + var1 = 956324414; + break; + case 956324414: + return (boolean)((var2) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/gp.java b/src/main/java/defpackage/gp.java new file mode 100644 index 0000000..94dd25a --- /dev/null +++ b/src/main/java/defpackage/gp.java @@ -0,0 +1,98 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import org.joml.Matrix4f; +import org.joml.Vector3f; + +public final class gp { + private static final String PROGRAM_PATH = "lyrics_font/data"; + private static final float THICKNESS = 0.1F; + private static final float HALO_THICKNESS = 0.02F; + private static final float SMOOTHNESS = 0.34F; + private static final float PEN_OFFSET = 0.75F; + private static final float BASELINE_RATIO = 0.7F; + private static final float CHANNEL_SCALE = 255.0F; + private static final int CHANNEL_MASK = 255; + private static final float HALF = 0.5F; + public static final float PASS_BODY = 0.0F; + public static final float PASS_SHADOW = 1.0F; + private static final Matrix4f IDENTITY = new Matrix4f(); + private static atd program; + private static final Vector3f cornerA = new Vector3f(); + private static final Vector3f cornerB = new Vector3f(); + private static final Vector3f cornerC = new Vector3f(); + private static final Vector3f cornerD = new Vector3f(); + + public static boolean renderWord3D( + gr var0, String var1, float var2, go var3, float var4, float var5, float var6, float var7, ha var8, float var9, float var10 + ) { + if (var1.isEmpty()) { + return (boolean)(((0)) != 0); + } + + float var11 = var0.getWidth(var1, var2); + if (var8.project(var9, var10, cornerA) + && var8.project(var9 + var11, var10, cornerB) + && var8.project(var9, var10 + var2, cornerC) + && var8.project(var9 + var11, var10 + var2, cornerD)) { + float var12 = Math.min(Math.min(cornerA.x, cornerB.x), Math.min(cornerC.x, cornerD.x)); + float var13 = Math.max(Math.max(cornerA.x, cornerB.x), Math.max(cornerC.x, cornerD.x)); + float var14 = 0.5F * (cornerA.distance(cornerC) + cornerB.distance(cornerD)); + if (program == null) { + program = new atd( + bz.id("lyrics_font/data"), + DefaultVertexFormat.POSITION_TEX_COLOR + ); + } + + gt.flushBatch(); + program.use(); + program.setBlurRadius(var0.getAtlas().range()); + program.setThickness(var3.halo() ? 0.02F : 0.1F); + program.setSmoothness(0.34F, 0.34F); + program.setStripeWidth(var3.pass()); + program.setProgress(var4); + program.setFade(var5); + program.setTime(var7); + program.setOffset(var14); + program.setTextPosX(var12); + program.setMaxWidth(Math.max(var13 - var12, 1.0F)); + program.setSaturation(var3.sung()); + program.setTintIntensity(var3.gradient()); + int var15 = var3.accent(); + program.setTopLeftColor( + channel(var15, (1188299612 | -1188299596) + (1188299612 & -1188299596)), + channel(var15, (1311582341 ^ -1311582333) + ((1311582341 & -1311582333) << 1)), + channel(var15, (1952795801 | -1952795801) + (1952795801 & -1952795801)), + var6 + ); + program.setGlow(var3.glowRadius(), var3.glowIntensity()); + program.setGlowColor( + channel(var15, (-91860567 ^ 91860583) + ((-91860567 & 91860583) << 1)), + channel(var15, (1181928284 ^ -1181928276) + ((1181928284 & -1181928276) << 1)), + channel(var15, (1137797105 ^ -1137797105) + ((1137797105 & -1137797105) << 1)), + channel(var15, (614555718 | -614555694) + (614555718 & -614555694)) + ); + BufferBuilder var16 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var8.bind(var16); + var0.applyGlyphs(IDENTITY, var8, var1, var2, 0.05F * var2, 0.0F, var9 - 0.75F, var10 + var2 * 0.7F, 0.0F, var3.color()); + var8.bind(null); + arj.draw(arj.guiTextured(var0.getAtlasIdentifier()), var16); + return (boolean)(((1)) != 0); + } else { + return (boolean)(((0)) != 0); + } + } + + private static float channel(int var0, int var1) { + return (var0 >>> var1 & (2068275611 ^ -2068275356) + ((2068275611 & -2068275356) << 1)) / 255.0F; + } + + private gp() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/gq.java b/src/main/java/defpackage/gq.java new file mode 100644 index 0000000..20660c2 --- /dev/null +++ b/src/main/java/defpackage/gq.java @@ -0,0 +1,116 @@ +package defpackage; + +import com.mojang.blaze3d.systems.RenderSystem; +import it.unimi.dsi.fastutil.ints.Int2FloatMap; +import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import net.minecraft.client.renderer.texture.AbstractTexture; +import net.minecraft.resources.Identifier; + +public class gq { + private String name = "?"; + private Identifier dataIdentifer; + private Identifier atlasIdentifier; + + gq() { + } + + public gq name(String var1) { + this.name = var1; + return this; + } + + public gq data(String var1) { + this.dataIdentifer = bz.id("fonts/msdf/" + var1 + ".json"); + return this; + } + + public gq atlas(String var1) { + this.atlasIdentifier = bz.id("fonts/msdf/" + var1 + ".png"); + return this; + } + + public gr build() { + gk var1 = null; + AbstractTexture var2 = null; + float var3 = 0.0F; + float var4 = 0.0F; + Int2ObjectMap var5 = null; + Int2ObjectMap var6 = null; + int var7 = 356199447; + + while (true) { + switch (var7) { + case 356199447: + default: + var1 = gu.fromJsonToInstance(this.dataIdentifer, gk.class); + var2 = aqg.mc.getTextureManager().getTexture(this.atlasIdentifier); + if (var1 == null) { + var7 = 2056558849; + } else { + var7 = 1698492294; + } + break; + case 1698492294: + RenderSystem.queueFencedTask(() -> {}); + var3 = var1.atlas().width(); + var4 = var1.atlas().height(); + var5 = new Int2ObjectOpenHashMap(var1.glyphs().size()); + var1.glyphs().forEach(var4x -> { + int var5x = -1960445927; + + while (true) { + switch (var5x) { + case -2075873208: + throw new IllegalStateException("Duplicate glyph for codepoint " + var4x.unicode() + " in font data file: " + this.dataIdentifer); + case -1960445927: + default: + if (var5.put(var4x.unicode(), new gs(var4x, var3, var4)) != null) { + var5x = -2075873208; + } else { + var5x = -512376672; + } + break; + case -512376672: + return; + } + } + }); + var6 = new Int2ObjectOpenHashMap(); + var1.kernings().forEach(var1x -> { + Object var2x = null; + int var3x = 1404889885; + + while (true) { + switch (var3x) { + case -1962218833: + var2x.put(var1x.rightChar(), var1x.advance()); + return; + case 1404889885: + default: + var2x = (Int2FloatMap)var6.get(var1x.leftChar()); + if (var2x == null) { + var3x = 1773977768; + } else { + var3x = -1962218833; + } + break; + case 1773977768: + var2x = new Int2FloatOpenHashMap(); + var6.put(var1x.leftChar(), var2x); + var3x = -1962218833; + } + } + }); + return new gr(this.name, this.atlasIdentifier, var2, var1.atlas(), var1.metrics(), var5, var6); + case 2056558849: + throw new RuntimeException( + "Failed to read font data file: " + + this.dataIdentifer.toString() + + "; Are you sure this is json file? Try to check the correctness of its syntax." + ); + } + } + } +} diff --git a/src/main/java/defpackage/gr.java b/src/main/java/defpackage/gr.java new file mode 100644 index 0000000..25204e3 --- /dev/null +++ b/src/main/java/defpackage/gr.java @@ -0,0 +1,693 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import it.unimi.dsi.fastutil.ints.Int2FloatMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import net.minecraft.client.renderer.texture.AbstractTexture; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; +import org.joml.Matrix4f; + +public final class gr implements aqg { + private final String name; + private final Identifier atlasIdentifier; + private final AbstractTexture texture; + private final gf atlas; + private final gj metrics; + private final Int2ObjectMap glyphs; + private final Int2ObjectMap kernings; + private volatile Int2ObjectMap sizedFonts = new Int2ObjectOpenHashMap(); + + gr(String var1, Identifier var2, AbstractTexture var3, gf var4, gj var5, Int2ObjectMap var6, Int2ObjectMap var7) { + this.name = var1; + this.atlasIdentifier = var2; + this.texture = var3; + this.atlas = var4; + this.metrics = var5; + this.glyphs = var6; + this.kernings = var7; + } + + public boolean supports(char var1) { + int var2 = 0; + int var4 = 0; + int var3 = -1943853146; + + while (true) { + switch (var3) { + case -1972144967: + return (boolean)(((1)) != 0); + case -1943853146: + default: + if (var1 != (-1575343682 ^ 1575343714) + ((-1575343682 & 1575343714) << 1)) { + var3 = 202306027; + } else { + var3 = -1972144967; + } + break; + case -306626331: + if (var1 == (247051437 | -247044013) + (247051437 & -247044013)) { + var3 = 1278121960; + } else { + var3 = 934709123; + } + break; + case 202306027: + if (var1 == (2035149493 ^ -2035149326) + ((2035149493 & -2035149326) << 1)) { + var3 = -1972144967; + } else { + var3 = -306626331; + } + break; + case 711777852: + var2 = var4; + return this.glyphs.containsKey(var2); + case 934709123: + var4 = processChar(var1); + var3 = 711777852; + break; + case 1278121960: + var4 = 1040; + var3 = 711777852; + } + } + } + + public void applyGlyphs(Matrix4f var1, VertexConsumer var2, String var3, float var4, float var5, float var6, float var7, float var8, float var9, int var10) { + int var11 = 0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + int var15 = 0; + gs var16 = null; + Int2FloatMap var17 = null; + int var19 = 0; + int var18 = -1494538934; + + while (true) { + switch (var18) { + case -1527429226: + if (var15 == (-716144023 | 716144055) + (-716144023 & 716144055)) { + var18 = -677535812; + } else { + var18 = 1466908945; + } + break; + case -1494538934: + default: + var11 = -1; + var12 = 0; + var13 = 0; + var18 = 1176065796; + break; + case -1314444520: + var17 = (Int2FloatMap)this.kernings.get(var11); + if (var17 != null) { + var18 = 785353883; + } else { + var18 = 475825160; + } + break; + case -805360555: + var19 = 1040; + var18 = 514058014; + break; + case -677535812: + var7 += var4 * 0.35F; + var11 = 32; + var18 = -325777383; + break; + case -643845983: + var19 = processChar((char)var14); + var18 = 514058014; + break; + case -325777383: + var13++; + var18 = 1176065796; + break; + case -10346147: + return; + case 475825160: + var7 += var16.apply(var1, var2, var4, var7, var8, var9, var10) + var5 + var6; + var11 = var15; + var18 = -325777383; + break; + case 514058014: + var15 = var19; + if (var12 != 0) { + var18 = 1291415128; + } else { + var18 = 2010183262; + } + break; + case 785353883: + var7 += var17.getOrDefault(var15, 0.0F) * var4; + var18 = 475825160; + break; + case 1176065796: + if (var13 < var3.length()) { + var18 = 1810821943; + } else { + var18 = -10346147; + } + break; + case 1231282727: + var18 = -325777383; + break; + case 1291415128: + var12 = 0; + var18 = -325777383; + break; + case 1466908945: + var16 = (gs)this.glyphs.get(var15); + if (var16 == null) { + var18 = 1231282727; + } else { + var18 = -1314444520; + } + break; + case 1810821943: + var14 = var3.charAt(var13); + if (var14 == (-2075658403 | 2075665827) + (-2075658403 & 2075665827)) { + var18 = -805360555; + } else { + var18 = -643845983; + } + break; + case 1873107759: + var12 = 1; + var18 = -325777383; + break; + case 2010183262: + if (var15 == (-252062124 ^ 252062291) + ((-252062124 & 252062291) << 1)) { + var18 = 1873107759; + } else { + var18 = -1527429226; + } + } + } + } + + public void applyGlyphs(Matrix4f var1, VertexConsumer var2, String var3, float var4, float var5, float var6, float var7, float var8, float var9, gv var10) { + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = 0; + int var15 = 0; + int var16 = 0; + int var17 = 0; + int var18 = 0; + gs var19 = null; + Int2FloatMap var20 = null; + float var21 = 0.0F; + int var22 = 0; + int var23 = 0; + float var25 = 0.0F; + int var26 = 0; + int var24 = 1059309904; + + while (true) { + switch (var24) { + case -1430662532: + var16++; + var24 = -891657799; + break; + case -1205040347: + var25 = 1.0F / var11; + var24 = -341947703; + break; + case -891657799: + if (var16 < var3.length()) { + var24 = 1004212858; + } else { + var24 = 1428639829; + } + break; + case -824075795: + if (var18 == (825963368 ^ -825963201) + ((825963368 & -825963201) << 1)) { + var24 = 265677870; + } else { + var24 = -201012330; + } + break; + case -598238593: + var18 = var26; + if (var15 != 0) { + var24 = 1042170853; + } else { + var24 = -824075795; + } + break; + case -550039421: + var19 = (gs)this.glyphs.get(var18); + if (var19 == null) { + var24 = 1970299626; + } else { + var24 = 1236450636; + } + break; + case -528446371: + var7 += var4 * 0.35F; + var14 = 32; + var24 = -1430662532; + break; + case -341947703: + var12 = var25; + var13 = var7; + var14 = -1; + var15 = 0; + var16 = 0; + var24 = -891657799; + break; + case -201012330: + if (var18 == (-1306233766 ^ 1306233798) + ((-1306233766 & 1306233798) << 1)) { + var24 = -528446371; + } else { + var24 = -550039421; + } + break; + case -47640154: + var25 = 0.0F; + var24 = -341947703; + break; + case 110806178: + var7 += var20.getOrDefault(var18, 0.0F) * var4; + var24 = 987802987; + break; + case 265677870: + var15 = 1; + var24 = -1430662532; + break; + case 267103303: + var26 = 1040; + var24 = -598238593; + break; + case 987802987: + var21 = var19.getWidth(var4); + var22 = var10.colorAt((var7 - var13) * var12); + var23 = var10.colorAt((var7 + var21 - var13) * var12); + var7 += var19.apply(var1, var2, var4, var7, var8, var9, var22, var23) + var5 + var6; + var14 = var18; + var24 = -1430662532; + break; + case 1004212858: + var17 = var3.charAt(var16); + if (var17 == (412407501 ^ -412400077) + ((412407501 & -412400077) << 1)) { + var24 = 267103303; + } else { + var24 = 2071493211; + } + break; + case 1042170853: + var15 = 0; + var24 = -1430662532; + break; + case 1059309904: + default: + var11 = this.getWidth(var3, var4); + if (var11 > 0.0F) { + var24 = -1205040347; + } else { + var24 = -47640154; + } + break; + case 1236450636: + var20 = (Int2FloatMap)this.kernings.get(var14); + if (var20 != null) { + var24 = 110806178; + } else { + var24 = 987802987; + } + break; + case 1428639829: + return; + case 1970299626: + var24 = -1430662532; + break; + case 2071493211: + var26 = processChar((char)var17); + var24 = -598238593; + } + } + } + + public void applyGlyphs(Matrix4f var1, VertexConsumer var2, String var3, float var4, float var5, float var6, float var7, float var8, float var9, ary var10) { + int var11 = 0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + gs var15 = null; + Int2FloatMap var16 = null; + int var17 = 1641748880; + + while (true) { + switch (var17) { + case -1839454496: + var17 = 720490470; + break; + case -1710696735: + var15 = (gs)this.glyphs.get(var14); + if (var15 == null) { + var17 = -1839454496; + } else { + var17 = 1375140560; + } + break; + case -1272412438: + var14 = processChar(var3.charAt(var13)); + if (var12 != 0) { + var17 = 1098103546; + } else { + var17 = 697942851; + } + break; + case -1183323437: + var7 += var4 * 0.35F; + var11 = 32; + var17 = 720490470; + break; + case -1077480770: + return; + case -679280536: + var12 = 1; + var17 = 720490470; + break; + case -436340983: + if (var13 < var3.length()) { + var17 = -1272412438; + } else { + var17 = -1077480770; + } + break; + case 287685105: + var7 += var16.getOrDefault(var14, 0.0F) * var4; + var17 = 1261556792; + break; + case 697942851: + if (var14 == (-1895404470 ^ 1895404637) + ((-1895404470 & 1895404637) << 1)) { + var17 = -679280536; + } else { + var17 = 740893307; + } + break; + case 720490470: + var13++; + var17 = -436340983; + break; + case 740893307: + if (var14 == (1199795493 ^ -1199795461) + ((1199795493 & -1199795461) << 1)) { + var17 = -1183323437; + } else { + var17 = -1710696735; + } + break; + case 1098103546: + var12 = 0; + var17 = 720490470; + break; + case 1261556792: + var7 += var15.apply(var1, var2, var4, var7, var8, var9, var10) + var5 + var6; + var11 = var14; + var17 = 720490470; + break; + case 1375140560: + var16 = (Int2FloatMap)this.kernings.get(var11); + if (var16 != null) { + var17 = 287685105; + } else { + var17 = 1261556792; + } + break; + case 1641748880: + default: + var11 = -1; + var12 = 0; + var13 = 0; + var17 = -436340983; + } + } + } + + public gs glyph(char var1) { + int var2 = 0; + int var4 = 0; + int var3 = -1903796561; + + while (true) { + switch (var3) { + case -1903796561: + default: + if (var1 == (-1911207547 ^ 1911214971) + ((-1911207547 & 1911214971) << 1)) { + var3 = -1742504244; + } else { + var3 = 2085355899; + } + break; + case -1742504244: + var4 = 1040; + var3 = -525803878; + break; + case -525803878: + var2 = var4; + return (gs)this.glyphs.get(var2); + case 2085355899: + var4 = processChar(var1); + var3 = -525803878; + } + } + } + + public float getWidth(String var1, float var2) { + int var3 = 0; + float var4 = 0.0F; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + gs var9 = null; + Int2FloatMap var10 = null; + int var12 = 0; + int var11 = -1522352727; + + while (true) { + switch (var11) { + case -1970071598: + var7 = var1.charAt(var6); + if (var7 == (1667269198 | -1667261774) + (1667269198 & -1667261774)) { + var11 = -1342518657; + } else { + var11 = 2108770663; + } + break; + case -1775156923: + var6++; + var11 = 537676640; + break; + case -1685643244: + var5 = 0; + var11 = -1775156923; + break; + case -1522352727: + default: + var3 = -1; + var4 = 0.0F; + var5 = 0; + var6 = 0; + var11 = 537676640; + break; + case -1463253977: + if (var8 == (-1227786153 | 1227786185) + (-1227786153 & 1227786185)) { + var11 = 1067048867; + } else { + var11 = -624930771; + } + break; + case -1342518657: + var12 = 1040; + var11 = -158378385; + break; + case -1045030548: + var11 = -1775156923; + break; + case -624930771: + var9 = (gs)this.glyphs.get(var8); + if (var9 == null) { + var11 = -1045030548; + } else { + var11 = 965528563; + } + break; + case -432201012: + var4 += var9.getWidth(var2) + 0.05F * var2; + var3 = var8; + var11 = -1775156923; + break; + case -158378385: + var8 = var12; + if (var5 != 0) { + var11 = -1685643244; + } else { + var11 = 243655997; + } + break; + case 243655997: + if (var8 == (-1187318776 | 1187318943) + (-1187318776 & 1187318943)) { + var11 = 759238501; + } else { + var11 = -1463253977; + } + break; + case 296927184: + var4 += var10.getOrDefault(var8, 0.0F) * var2; + var11 = -432201012; + break; + case 537676640: + if (var6 < var1.length()) { + var11 = -1970071598; + } else { + var11 = 2029462011; + } + break; + case 759238501: + var5 = 1; + var11 = -1775156923; + break; + case 965528563: + var10 = (Int2FloatMap)this.kernings.get(var3); + if (var10 != null) { + var11 = 296927184; + } else { + var11 = -432201012; + } + break; + case 1067048867: + var4 += var2 * 0.35F; + var3 = 32; + var11 = -1775156923; + break; + case 2029462011: + return var4; + case 2108770663: + var12 = processChar((char)var7); + var11 = -158378385; + } + } + } + + public float getTextWidth(Component var1, float var2) { + return this.getWidth(var1.getString(), var2); + } + + public ge getFont(float var1) { + int var2 = 0; + ge var3 = null; + ge var5 = null; + int var4 = -859226022; + + while (true) { + switch (var4) { + case -930390645: + var5 = this.createFont(var2, var1); + var4 = 1082371961; + break; + case -899313854: + var5 = var3; + var4 = 1082371961; + break; + case -859226022: + default: + var2 = Float.floatToIntBits(var1); + var3 = (ge)this.sizedFonts.get(var2); + if (var3 != null) { + var4 = -899313854; + } else { + var4 = -930390645; + } + break; + case 1082371961: + return var5; + } + } + } + + private synchronized ge createFont(int var1, float var2) { + ge var3 = null; + ge var4 = null; + Int2ObjectOpenHashMap var5 = null; + int var6 = 1950814778; + + while (true) { + switch (var6) { + case 10507400: + var4 = new ge(this, var2); + var5 = new Int2ObjectOpenHashMap(this.sizedFonts); + var5.put(var1, var4); + this.sizedFonts = var5; + return var4; + case 1950814778: + default: + var3 = (ge)this.sizedFonts.get(var1); + if (var3 != null) { + var6 = 2025303160; + } else { + var6 = 10507400; + } + break; + case 2025303160: + return var3; + } + } + } + + public static gq builder() { + return new gq(); + } + + private static char processChar(char var0) { + return (char)(switch (var0) { + case 'ǫ', 'ʠ' -> 81; + case 'ɢ' -> 71; + case 'ɪ' -> 73; + case 'ɴ' -> 78; + case 'ʀ' -> 82; + case 'ʏ' -> 89; + case 'ʙ' -> 66; + case 'ʜ' -> 72; + case 'ʟ' -> 76; + case 'ᴀ' -> 65; + case 'ᴄ' -> 67; + case 'ᴅ' -> 68; + case 'ᴇ' -> 69; + case 'ᴊ' -> 74; + case 'ᴋ' -> 75; + case 'ᴍ' -> 77; + case 'ᴏ' -> 79; + case 'ᴘ' -> 80; + case 'ᴛ' -> 84; + case 'ᴜ' -> 85; + case 'ᴠ' -> 86; + case 'ᴡ' -> 87; + case 'ᴢ' -> 90; + case 'ꜰ' -> 70; + case 'ꜱ' -> 83; + default -> var0; + }); + } + + public String getName() { + return this.name; + } + + public Identifier getAtlasIdentifier() { + return this.atlasIdentifier; + } + + public gf getAtlas() { + return this.atlas; + } + + public gj getMetrics() { + return this.metrics; + } +} diff --git a/src/main/java/defpackage/gs.java b/src/main/java/defpackage/gs.java new file mode 100644 index 0000000..7de425c --- /dev/null +++ b/src/main/java/defpackage/gs.java @@ -0,0 +1,92 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import org.joml.Matrix4f; + +public final class gs { + private final int code; + private final float minU; + private final float maxU; + private final float minV; + private final float maxV; + private final float advance; + private final float topPosition; + private final float width; + private final float height; + + public gs(gh var1, float var2, float var3) { + this.code = var1.unicode(); + this.advance = var1.advance(); + gg var4 = var1.atlasBounds(); + if (var4 != null) { + this.minU = var4.left() / var2; + this.maxU = var4.right() / var2; + this.minV = 1.0F - var4.top() / var3; + this.maxV = 1.0F - var4.bottom() / var3; + } else { + this.minU = this.maxU = this.minV = this.maxV = 0.0F; + } + + gg var5 = var1.planeBounds(); + if (var5 != null) { + this.width = var5.right() - var5.left(); + this.height = var5.top() - var5.bottom(); + this.topPosition = var5.top(); + } else { + this.width = this.height = this.topPosition = 0.0F; + } + } + + public float apply(Matrix4f var1, VertexConsumer var2, float var3, float var4, float var5, float var6, int var7) { + var5 -= this.topPosition * var3; + float var8 = this.width * var3; + float var9 = this.height * var3; + var2.addVertex(var1, var4, var5, var6).setUv(this.minU, this.minV).setColor(var7); + var2.addVertex(var1, var4, var5 + var9, var6).setUv(this.minU, this.maxV).setColor(var7); + var2.addVertex(var1, var4 + var8, var5 + var9, var6).setUv(this.maxU, this.maxV).setColor(var7); + var2.addVertex(var1, var4 + var8, var5, var6).setUv(this.maxU, this.minV).setColor(var7); + return this.advance * var3; + } + + public float apply(Matrix4f var1, VertexConsumer var2, float var3, float var4, float var5, float var6, int var7, int var8) { + var5 -= this.topPosition * var3; + float var9 = this.width * var3; + float var10 = this.height * var3; + var2.addVertex(var1, var4, var5, var6).setUv(this.minU, this.minV).setColor(var7); + var2.addVertex(var1, var4, var5 + var10, var6).setUv(this.minU, this.maxV).setColor(var7); + var2.addVertex(var1, var4 + var9, var5 + var10, var6).setUv(this.maxU, this.maxV).setColor(var8); + var2.addVertex(var1, var4 + var9, var5, var6).setUv(this.maxU, this.minV).setColor(var8); + return this.advance * var3; + } + + public float apply(Matrix4f var1, VertexConsumer var2, float var3, float var4, float var5, float var6, ary var7) { + var5 -= this.topPosition * var3; + float var8 = this.width * var3; + float var9 = this.height * var3; + var2.addVertex(var1, var4, var5, var6).setUv(this.minU, this.minV).setColor(var7.getTopLeftColor().getRGB()); + var2.addVertex(var1, var4, var5 + var9, var6).setUv(this.minU, this.maxV).setColor(var7.getBottomLeftColor().getRGB()); + var2.addVertex(var1, var4 + var8, var5 + var9, var6).setUv(this.maxU, this.maxV).setColor(var7.getBottomRightColor().getRGB()); + var2.addVertex(var1, var4 + var8, var5, var6).setUv(this.maxU, this.minV).setColor(var7.getTopRightColor().getRGB()); + return this.advance * var3; + } + + public float getWidth(float var1) { + return this.advance * var1; + } + + public float inkWidth(float var1) { + return this.width * var1; + } + + public float inkHeight(float var1) { + return this.height * var1; + } + + public float inkTop(float var1) { + return this.topPosition * var1; + } + + public int getCharCode() { + return this.code; + } +} diff --git a/src/main/java/defpackage/gt.java b/src/main/java/defpackage/gt.java new file mode 100644 index 0000000..a1a4fa2 --- /dev/null +++ b/src/main/java/defpackage/gt.java @@ -0,0 +1,766 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.ByteBufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import java.util.Arrays; +import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.network.chat.Component; +import org.joml.Matrix4f; + +public final class gt { + private static atd msdfProgram; + private static final int BATCH_BUFFER_SIZE = 4096; + private static final int INITIAL_BATCH_SLOTS = 6; + private static boolean batching = (boolean)(((0)) != 0); + private static gr[] batchFonts = new gr[6]; + private static ByteBufferBuilder[] batchStorages = new ByteBufferBuilder[6]; + private static BufferBuilder[] batchBuilders = new BufferBuilder[6]; + private static int batchSlotCount; + private static final int COLOR_CHANNEL_MASK = 255; + private static final float COLOR_CHANNEL_SCALE = 255.0F; + private static final int ALPHA_SHIFT = 24; + private static final int COLOR_MASK = 255; + private static final float RUN_SPACING = -0.3F; + + public static void setMask(float var0, float var1, float var2, float var3, float var4, float var5, float var6, float var7) { + int var8 = 1380162531; + + while (true) { + switch (var8) { + case -232955093: + return; + case -134475137: + msdfProgram.setMaskTopY(var0); + msdfProgram.setMaskBottomY(var1); + msdfProgram.setMaskFadeTop(var2); + msdfProgram.setMaskFadeBottom(var3); + msdfProgram.setMaskLeftX(var4); + msdfProgram.setMaskRightX(var5); + msdfProgram.setMaskFadeLeft(var6); + msdfProgram.setMaskFadeRight(var7); + var8 = -232955093; + break; + case 1380162531: + default: + if (msdfProgram != null) { + var8 = -134475137; + } else { + var8 = -232955093; + } + } + } + } + + public static void setMask(float var0, float var1, float var2) { + setMask(var0, var1, var2, var2, -1.0F, -1.0F, 0.0F, 0.0F); + } + + public static void setMaskFadeBottom(float var0) { + int var1 = 1924419959; + + while (true) { + switch (var1) { + case -305726685: + msdfProgram.setMaskFadeBottom(var0); + var1 = 1424372291; + break; + case 1424372291: + return; + case 1924419959: + default: + if (msdfProgram != null) { + var1 = -305726685; + } else { + var1 = 1424372291; + } + } + } + } + + public static void setMaskFadeTop(float var0) { + int var1 = -104688965; + + while (true) { + switch (var1) { + case -1872177302: + return; + case -781959269: + msdfProgram.setMaskFadeTop(var0); + var1 = -1872177302; + break; + case -104688965: + default: + if (msdfProgram != null) { + var1 = -781959269; + } else { + var1 = -1872177302; + } + } + } + } + + public static void setMaskBypass(boolean var0) { + if (msdfProgram != null) { + flushBatch(); + msdfProgram.setMaskBypass(var0 ? 1.0F : 0.0F); + } + } + + public static void beginBatch() { + batching = (boolean)(((1)) != 0); + } + + public static void endBatch() { + flushBatch(); + batching = (boolean)(((0)) != 0); + } + + public static void flushBatch() { + float var0 = 0.0F; + float var1 = 0.0F; + int var2 = 0; + gr var3 = null; + int var4 = 1103169658; + + while (true) { + switch (var4) { + case -1883972458: + return; + case -623018204: + if (var2 < batchSlotCount) { + var4 = 1408379879; + } else { + var4 = 268162726; + } + break; + case 268162726: + batchSlotCount = 0; + return; + case 1103169658: + default: + if (batchSlotCount == 0) { + var4 = -1883972458; + } else { + var4 = 1734615398; + } + break; + case 1408379879: + var3 = batchFonts[var2]; + prepareShader(var3, var0, var1, (boolean)(((0)) != 0), 0.0F, 1.0F, 1.0F, 0.0F); + arj.draw(arj.guiTextured(var3.getAtlasIdentifier()), batchBuilders[var2]); + batchFonts[var2] = null; + batchBuilders[var2] = null; + var2++; + var4 = -623018204; + break; + case 1734615398: + var0 = 0.1F; + var1 = 0.34F; + var2 = 0; + var4 = -623018204; + } + } + } + + private static BufferBuilder batchBuilderFor(gr var0) { + for (int var1 = 0; var1 < batchSlotCount; var1++) { + if (batchFonts[var1] == var0) { + return batchBuilders[var1]; + } + } + + if (batchSlotCount == batchFonts.length) { + int var3 = batchFonts.length * (2); + batchFonts = Arrays.copyOf(batchFonts, var3); + batchStorages = Arrays.copyOf(batchStorages, var3); + batchBuilders = Arrays.copyOf(batchBuilders, var3); + } + + ByteBufferBuilder var4 = batchStorages[batchSlotCount]; + if (var4 == null) { + var4 = new ByteBufferBuilder((1582780075 | -1582775979) + (1582780075 & -1582775979)); + batchStorages[batchSlotCount] = var4; + } + + BufferBuilder var2 = new BufferBuilder(var4, PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + batchFonts[batchSlotCount] = var0; + batchBuilders[batchSlotCount] = var2; + batchSlotCount += 1; + return var2; + } + + private static int scaleAlpha(int var0, float var1) { + int var2 = 0; + int var3 = 1741668073; + + while (true) { + switch (var3) { + case -1232677514: + return var0; + case 1741668073: + default: + if (var1 >= 1.0F) { + var3 = -1232677514; + } else { + var3 = 2122638978; + } + break; + case 2122638978: + var2 = Math.round( + (var0 >>> (736091504 | -736091480) + (736091504 & -736091480) & (1995216029 ^ -1995215774) + ((1995216029 & -1995215774) << 1)) + * Math.max(0.0F, var1) + ); + return var2 << (1443329504 ^ -1443329480) + ((1443329504 & -1443329480) << 1) + | var0 & 16777215; + } + } + } + + public static void init() { + int var0 = 1313712413; + + while (true) { + switch (var0) { + case -1494443583: + msdfProgram = new atd( + bz.id("msdf_font/data"), + DefaultVertexFormat.POSITION_TEX_COLOR + ); + var0 = 1199253134; + break; + case 1199253134: + return; + case 1313712413: + default: + if (msdfProgram == null) { + var0 = -1494443583; + } else { + var0 = 1199253134; + } + } + } + } + + private static void prepareShader(gr var0, float var1, float var2, boolean var3, float var4, float var5, float var6, float var7) { + init(); + if (var6 <= 0.0F) { + var6 = 1.0F; + } + + msdfProgram.use(); + Minecraft.getInstance().getTextureManager().getTexture(var0.getAtlasIdentifier()); + msdfProgram.setRange(var0.getAtlas().range()); + msdfProgram.setThickness(var1); + msdfProgram.setSmoothness(var2, var2); + msdfProgram.setOutline(0.0F); + msdfProgram.setOutlineThickness(0.0F); + msdfProgram.setOutlineColor(0.0F, 0.0F, 0.0F, 0.0F); + msdfProgram.setEnableFadeout(var3 ? 1.0F : 0.0F); + msdfProgram.setFadeoutStart(var4); + msdfProgram.setFadeoutEnd(var5); + msdfProgram.setMaxWidth(var6); + msdfProgram.setTextPosX(var7); + applyTextGlow(); + } + + private static void applyTextGlow() { + mx var0 = null; + float var1 = 0.0F; + int var2 = 0; + int var3 = -559824951; + + while (true) { + switch (var3) { + case -559824951: + default: + var0 = mx.current(); + var1 = var0.textGlowIntensity(); + msdfProgram.setGlow(var0.textGlowRadius(), var1); + if (var1 <= 0.0F) { + var3 = 778488584; + } else { + var3 = -203456918; + } + break; + case -203456918: + var2 = var0.textGlowColor(); + msdfProgram.setGlowColor( + (var2 >>> (-422720689 ^ 422720705) + ((-422720689 & 422720705) << 1) & (-26973196 | 26973451) + (-26973196 & 26973451)) / 255.0F, + (var2 >>> (-1818180161 ^ 1818180169) + ((-1818180161 & 1818180169) << 1) & (1645360575 ^ -1645360320) + ((1645360575 & -1645360320) << 1)) + / 255.0F, + (var2 & (-1880626408 ^ 1880626663) + ((-1880626408 & 1880626663) << 1)) / 255.0F, + (var2 >>> (892899431 ^ -892899407) + ((892899431 & -892899407) << 1) & (-348081079 ^ 348081334) + ((-348081079 & 348081334) << 1)) / 255.0F + ); + return; + case 778488584: + return; + } + } + } + + public static void renderText(gr var0, String var1, float var2, int var3, Matrix4f var4, float var5, float var6, float var7) { + renderText(var0, var1, var2, var3, var4, var5, var6, var7, (boolean)(((0)) != 0), 0.0F, 1.0F, 0.0F); + } + + public static void renderText( + gr var0, String var1, float var2, int var3, Matrix4f var4, float var5, float var6, float var7, boolean var8, float var9, float var10, float var11 + ) { + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + int var16 = 0; + BufferBuilder var17 = null; + RenderType var18 = null; + int var20 = 0; + int var19 = 105225336; + + while (true) { + switch (var19) { + case -1966027059: + var17 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var19 = -968969447; + break; + case -1829146459: + var20 = 1; + var19 = -274915732; + break; + case -986345337: + var18 = arj.guiTextured(var0.getAtlasIdentifier()); + arj.draw(var18, var17); + var19 = -165336433; + break; + case -968969447: + var0.applyGlyphs(var4, var17, var1, var2, var12 * 0.5F * var2, var14, var5 - 0.75F, var6 + var2 * 0.7F, var7, var3); + if (var16 == 0) { + var19 = -986345337; + } else { + var19 = -165336433; + } + break; + case -967443894: + if (!var8) { + var19 = -1829146459; + } else { + var19 = 47144551; + } + break; + case -274915732: + var16 = var20; + if (var16 == 0) { + var19 = 657676944; + } else { + var19 = 143747449; + } + break; + case -165336433: + return; + case 47144551: + var20 = 0; + var19 = -274915732; + break; + case 105225336: + default: + var12 = 0.1F; + var13 = 0.34F; + var14 = 0.0F; + var15 = var5 - 0.75F; + if (batching) { + var19 = -967443894; + } else { + var19 = 47144551; + } + break; + case 143747449: + if (var16 != 0) { + var19 = 1279234995; + } else { + var19 = -1966027059; + } + break; + case 657676944: + prepareShader(var0, var12, var13, var8, var9, var10, var11, var15); + var19 = 143747449; + break; + case 1279234995: + var17 = batchBuilderFor(var0); + var19 = -968969447; + } + } + } + + public static void renderText( + gr var0, String var1, float var2, int var3, Matrix4f var4, float var5, float var6, float var7, boolean var8, float var9, float var10 + ) { + float var11 = var0.getWidth(var1, var2) * 2.0F; + renderText(var0, var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11); + } + + public static void renderText(gr var0, Component var1, float var2, Matrix4f var3, float var4, float var5, float var6) { + renderText(var0, var1, var2, var3, var4, var5, var6, (boolean)(((0)) != 0), 0.0F, 1.0F, 0.0F); + } + + public static void renderText(gr var0, Component var1, float var2, int var3, Matrix4f var4, float var5, float var6, float var7) { + renderText(var0, var1, var2, var3, var4, var5, var6, var7, (boolean)(((0)) != 0), 0.0F, 1.0F, 0.0F); + } + + public static void renderRun(gr var0, String var1, float var2, int var3, Matrix4f var4, float var5, float var6, float var7) { + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 0; + BufferBuilder var11 = null; + BufferBuilder var13 = null; + int var12 = 1066548644; + + while (true) { + switch (var12) { + case -1894451038: + prepareShader(var0, var8, var9, (boolean)(((0)) != 0), 0.0F, 1.0F, 0.0F, var5 - 0.75F); + var12 = -1335567970; + break; + case -1513831670: + var11 = var13; + var0.applyGlyphs(var4, var11, var1, var2, var8 * 0.5F * var2, -0.3F, var5 - 0.75F, var6 + var2 * 0.7F, var7, var3); + if (var10 == 0) { + var12 = -579892560; + } else { + var12 = 1411943804; + } + break; + case -1335567970: + if (var10 != 0) { + var12 = -769894423; + } else { + var12 = -379073173; + } + break; + case -769894423: + var13 = batchBuilderFor(var0); + var12 = -1513831670; + break; + case -579892560: + arj.draw(arj.guiTextured(var0.getAtlasIdentifier()), var11); + var12 = 1411943804; + break; + case -379073173: + var13 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var12 = -1513831670; + break; + case 1066548644: + default: + var8 = 0.1F; + var9 = 0.34F; + var10 = (batching) ? 1 : 0; + if (var10 == 0) { + var12 = -1894451038; + } else { + var12 = -1335567970; + } + break; + case 1411943804: + return; + } + } + } + + public static void renderText( + gr var0, Component var1, float var2, Matrix4f var3, float var4, float var5, float var6, boolean var7, float var8, float var9, float var10 + ) { + renderText(var0, var1, var2, asu.WHITE.getRGB(), var3, var4, var5, var6, var7, var8, var9, var10); + } + + public static void renderText( + gr var0, Component var1, float var2, int var3, Matrix4f var4, float var5, float var6, float var7, boolean var8, float var9, float var10, float var11 + ) { + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + int var16 = 0; + List var17 = null; + float var18 = 0.0F; + float var19 = 0.0F; + BufferBuilder var20 = null; + Object var21 = null; + gm var22 = null; + int var24 = 0; + int var23 = 348028868; + + while (true) { + switch (var23) { + case -1777653924: + var20 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var23 = 2041225624; + break; + case -1483297999: + var24 = 0; + var23 = 301801451; + break; + case -1438412070: + if (var21.hasNext()) { + var23 = 238928799; + } else { + var23 = 977001368; + } + break; + case -1057890108: + return; + case 238928799: + var22 = (gm)var21.next(); + var0.applyGlyphs( + var4, var20, var22.text(), var2, var12 * 0.5F * var2, var14 - 0.3F, var19 - 0.75F, var6 + var2 * 0.7F, var7, scaleAlpha(var22.color(), var18) + ); + var19 += var0.getWidth(var22.text(), var2); + var23 = -1438412070; + break; + case 301801451: + var16 = var24; + if (var16 == 0) { + var23 = 1646593662; + } else { + var23 = 955494041; + } + break; + case 348028868: + default: + var12 = 0.1F; + var13 = 0.34F; + var14 = 0.0F; + var15 = var5 - 0.75F; + if (batching) { + var23 = 2035464883; + } else { + var23 = -1483297999; + } + break; + case 544873196: + var24 = 1; + var23 = 301801451; + break; + case 937024913: + var21 = arj.guiTextured(var0.getAtlasIdentifier()); + arj.draw((RenderType)var21, var20); + var23 = -1057890108; + break; + case 955494041: + var17 = gn.processText(var1, var3); + var18 = (var3 >>> (602760091 ^ -602760067) + ((602760091 & -602760067) << 1) & (859372431 ^ -859372176) + ((859372431 & -859372176) << 1)) + / 255.0F; + var19 = var5; + if (var16 != 0) { + var23 = 1413794146; + } else { + var23 = -1777653924; + } + break; + case 977001368: + if (var16 == 0) { + var23 = 937024913; + } else { + var23 = -1057890108; + } + break; + case 1413794146: + var20 = batchBuilderFor(var0); + var23 = 2041225624; + break; + case 1646593662: + prepareShader(var0, var12, var13, var8, var9, var10, var11, var15); + var23 = 955494041; + break; + case 2035464883: + if (!var8) { + var23 = 544873196; + } else { + var23 = -1483297999; + } + break; + case 2041225624: + var21 = var17.iterator(); + var23 = -1438412070; + } + } + } + + public static void renderText(gr var0, Component var1, float var2, Matrix4f var3, float var4, float var5, float var6, boolean var7, float var8, float var9) { + float var10 = var0.getTextWidth(var1, var2) * 2.0F; + renderText(var0, var1, var2, var3, var4, var5, var6, var7, var8, var9, var10); + } + + public static void renderText(gr var0, String var1, float var2, ary var3, Matrix4f var4, float var5, float var6, float var7) { + renderText(var0, var1, var2, var3, var4, var5, var6, var7, (boolean)(((0)) != 0), 0.0F, 1.0F, 0.0F); + } + + public static void renderText(gr var0, String var1, float var2, gv var3, Matrix4f var4, float var5, float var6, float var7) { + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + BufferBuilder var12 = null; + BufferBuilder var14 = null; + int var13 = -411033868; + + while (true) { + switch (var13) { + case -2032410248: + var14 = batchBuilderFor(var0); + var13 = -108843419; + break; + case -1945814719: + arj.draw(arj.guiTextured(var0.getAtlasIdentifier()), var12); + var13 = 301000701; + break; + case -850541513: + var14 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var13 = -108843419; + break; + case -411033868: + default: + var8 = 0.1F; + var9 = 0.34F; + var10 = 0.0F; + var11 = var5 - 0.75F; + if (!batching) { + var13 = 1568518152; + } else { + var13 = 1244808383; + } + break; + case -108843419: + var12 = var14; + var0.applyGlyphs(var4, var12, var1, var2, var8 * 0.5F * var2, var10, var11, var6 + var2 * 0.7F, var7, var3); + if (!batching) { + var13 = -1945814719; + } else { + var13 = 301000701; + } + break; + case 301000701: + return; + case 1244808383: + if (batching) { + var13 = -2032410248; + } else { + var13 = -850541513; + } + break; + case 1568518152: + prepareShader( + var0, var8, var9, (boolean)(((0)) != 0), 0.0F, 1.0F, var0.getWidth(var1, var2) * 2.0F, var11 + ); + var13 = 1244808383; + } + } + } + + public static void renderText( + gr var0, String var1, float var2, ary var3, Matrix4f var4, float var5, float var6, float var7, boolean var8, float var9, float var10, float var11 + ) { + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + int var16 = 0; + BufferBuilder var17 = null; + RenderType var18 = null; + int var20 = 0; + int var19 = -2128796028; + + while (true) { + switch (var19) { + case -2128796028: + default: + var1 = var1.replace( + "і", "i" + ) + .replace( + "І", + "I" + ); + var12 = 0.1F; + var13 = 0.34F; + var14 = 0.0F; + var15 = var5 - 0.75F; + if (batching) { + var19 = 1569720054; + } else { + var19 = -667371326; + } + break; + case -2008223350: + prepareShader(var0, var12, var13, var8, var9, var10, var11, var15); + var19 = 1485694646; + break; + case -1786235176: + var20 = 1; + var19 = 1656914133; + break; + case -1405833370: + var17 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + var19 = -354823972; + break; + case -1211551536: + return; + case -667371326: + var20 = 0; + var19 = 1656914133; + break; + case -354823972: + var0.applyGlyphs(var4, var17, var1, var2, var12 * 0.5F * var2, var14, var5 - 0.75F, var6 + var2 * 0.7F, var7, var3); + if (var16 == 0) { + var19 = 310693916; + } else { + var19 = -1211551536; + } + break; + case 310693916: + var18 = arj.guiTextured(var0.getAtlasIdentifier()); + arj.draw(var18, var17); + var19 = -1211551536; + break; + case 873521170: + var17 = batchBuilderFor(var0); + var19 = -354823972; + break; + case 1485694646: + if (var16 != 0) { + var19 = 873521170; + } else { + var19 = -1405833370; + } + break; + case 1569720054: + if (!var8) { + var19 = -1786235176; + } else { + var19 = -667371326; + } + break; + case 1656914133: + var16 = var20; + if (var16 == 0) { + var19 = -2008223350; + } else { + var19 = 1485694646; + } + } + } + } + + public static void renderText( + gr var0, String var1, float var2, ary var3, Matrix4f var4, float var5, float var6, float var7, boolean var8, float var9, float var10 + ) { + float var11 = var0.getWidth(var1, var2) * 2.0F; + renderText(var0, var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11); + } + + private gt() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/gu.java b/src/main/java/defpackage/gu.java new file mode 100644 index 0000000..dce946f --- /dev/null +++ b/src/main/java/defpackage/gu.java @@ -0,0 +1,29 @@ +package defpackage; + +import com.google.gson.Gson; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import net.minecraft.resources.Identifier; +import net.minecraft.server.packs.resources.ResourceManager; + +public final class gu implements aqg { + private static final ResourceManager RESOURCE_MANAGER = mc.getResourceManager(); + private static final Gson GSON = new Gson(); + + public static Identifier getShaderIdentifier(String var0) { + return bz.id("core/" + var0); + } + + public static T fromJsonToInstance(Identifier var0, Class var1) { + return (T)GSON.fromJson(toString(var0), var1); + } + + public static String toString(Identifier var0) { + try (InputStream var1 = RESOURCE_MANAGER.open(var0)) { + return new String(var1.readAllBytes(), StandardCharsets.UTF_8); + } catch (IOException var6) { + throw new RuntimeException(var6); + } + } +} diff --git a/src/main/java/defpackage/gv.java b/src/main/java/defpackage/gv.java new file mode 100644 index 0000000..580a62f --- /dev/null +++ b/src/main/java/defpackage/gv.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +public interface gv { + int colorAt(float var1); +} diff --git a/src/main/java/defpackage/gw.java b/src/main/java/defpackage/gw.java new file mode 100644 index 0000000..505be8b --- /dev/null +++ b/src/main/java/defpackage/gw.java @@ -0,0 +1,6 @@ +package defpackage; + +import net.minecraft.network.chat.Style; + +public record gw(String text, Style style, boolean vanilla, int color) { +} diff --git a/src/main/java/defpackage/gx.java b/src/main/java/defpackage/gx.java new file mode 100644 index 0000000..60dad57 --- /dev/null +++ b/src/main/java/defpackage/gx.java @@ -0,0 +1,315 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.FontDescription; +import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.TextColor; + +public final class gx implements aqg { + public static final float VANILLA_ASCENT = 7.0F; + private static final float CAP_RATIO = 0.7F; + private static final int OPAQUE = -16777216; + private static final List MEASURE_RUNS = new ArrayList<>(); + + private gx() { + } + + public static float vanillaScale(float var0) { + return var0 * 0.7F / 7.0F; + } + + public static float baselineOffset(float var0) { + return var0 * 0.7F; + } + + public static boolean isCustomFont(Style var0) { + FontDescription var1 = null; + int var3 = 0; + int var2 = 12198940; + + while (true) { + switch (var2) { + case -2012767516: + var3 = 1; + var2 = 659240732; + break; + case 12198940: + default: + var1 = var0.getFont(); + if (var1 != null) { + var2 = 330390562; + } else { + var2 = 2015086392; + } + break; + case 330390562: + if (!var1.equals(FontDescription.DEFAULT)) { + var2 = -2012767516; + } else { + var2 = 2015086392; + } + break; + case 659240732: + return (boolean)((var3) != 0); + case 2015086392: + var3 = 0; + var2 = 659240732; + } + } + } + + public static void split(Component var0, gr var1, int var2, List var3) { + var3.clear(); + var0.visit((var3x, var4) -> { + int var5 = -1071992342; + + while (true) { + switch (var5) { + case -1730062265: + return Optional.empty(); + case -1071992342: + default: + if (!var4.isEmpty()) { + var5 = 836706251; + } else { + var5 = -1730062265; + } + break; + case 836706251: + appendRuns(var4, var3x, var1, resolveColor(var3x, var2), var3); + var5 = -1730062265; + } + } + }, Style.EMPTY); + } + + public static boolean needsFallback(Component var0, gr var1) { + return var0.visit((var1x, var2) -> { + int var3 = 0; + int var4 = -1837481810; + + while (true) { + switch (var4) { + case -2071047235: + var3++; + var4 = -444572024; + break; + case -1837481810: + default: + if (isCustomFont(var1x)) { + var4 = 1888779223; + } else { + var4 = 512594308; + } + break; + case -444572024: + if (var3 < var2.length()) { + var4 = 1851751318; + } else { + var4 = 152668156; + } + break; + case 152668156: + return Optional.empty(); + case 512594308: + var3 = 0; + var4 = -444572024; + break; + case 1685523401: + return Optional.of(Boolean.TRUE); + case 1851751318: + if (!var1.supports(var2.charAt(var3))) { + var4 = 1685523401; + } else { + var4 = -2071047235; + } + break; + case 1888779223: + return Optional.of(Boolean.TRUE); + } + } + }, Style.EMPTY).isPresent(); + } + + public static float width(ge var0, Component var1) { + gr var2 = null; + float var3 = 0.0F; + int var4 = 2087496097; + + while (true) { + switch (var4) { + case -159166584: + split(var1, var2, -16777216, MEASURE_RUNS); + return width(MEASURE_RUNS, var2, var3); + case 257211101: + return var2.getTextWidth(var1, var3); + case 2087496097: + } + + var2 = var0.getFont(); + var3 = var0.getSize(); + if (!needsFallback(var1, var2)) { + var4 = 257211101; + } else { + var4 = -159166584; + } + } + } + + public static float width(List var0, gr var1, float var2) { + float var3 = vanillaScale(var2); + float var4 = 0.0F; + + for (gw var6 : var0) { + var4 += var6.vanilla() ? vanillaWidth(var6) * var3 : var1.getWidth(var6.text(), var2); + } + + return var4; + } + + public static float vanillaWidth(gw var0) { + Style var1 = null; + int var2 = -1930525716; + + while (true) { + switch (var2) { + case -1930525716: + default: + var1 = var0.style(); + if (!isCustomFont(var1)) { + var2 = -235625809; + } else { + var2 = 441373971; + } + break; + case -995061956: + return mc.font.width(var0.text()); + case -235625809: + if (!var1.isBold()) { + var2 = -995061956; + } else { + var2 = 441373971; + } + break; + case 441373971: + return mc.font.width(Component.literal(var0.text()).withStyle(var1)); + } + } + } + + private static void appendRuns(String var0, Style var1, gr var2, int var3, List var4) { + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var10 = 0; + int var11 = 0; + int var9 = 1217795866; + + while (true) { + switch (var9) { + case -2087586965: + var10 = 1; + var9 = 2119919947; + break; + case -1608713076: + var10 = 0; + var9 = 2119919947; + break; + case -1461453488: + var4.add(new gw(var0.substring(var5, var7), var1, (boolean)((var6) != 0), var3)); + var5 = var7; + var6 = var8; + var9 = 227402818; + break; + case -597128255: + if (!var2.supports(var0.charAt(var7))) { + var9 = 528637392; + } else { + var9 = 1836506519; + } + break; + case 227402818: + var7++; + var9 = 1763545924; + break; + case 528637392: + var11 = 1; + var9 = 1599952737; + break; + case 839198084: + var5 = 0; + if (!var2.supports(var0.charAt((795760229 ^ -795760229) + ((795760229 & -795760229) << 1)))) { + var9 = -2087586965; + } else { + var9 = -1608713076; + } + break; + case 1217795866: + default: + if (isCustomFont(var1)) { + var9 = 1600706467; + } else { + var9 = 839198084; + } + break; + case 1599952737: + var8 = var11; + if (var8 != var6) { + var9 = -1461453488; + } else { + var9 = 227402818; + } + break; + case 1600706467: + var4.add(new gw(var0, var1, (boolean)(((1)) != 0), var3)); + return; + case 1763545924: + if (var7 < var0.length()) { + var9 = -597128255; + } else { + var9 = 2124010980; + } + break; + case 1836506519: + var11 = 0; + var9 = 1599952737; + break; + case 2119919947: + var6 = var10; + var7 = 1; + var9 = 1763545924; + break; + case 2124010980: + var4.add(new gw(var0.substring(var5), var1, (boolean)((var6) != 0), var3)); + return; + } + } + } + + private static int resolveColor(Style var0, int var1) { + TextColor var2 = null; + int var3 = 803323044; + + while (true) { + switch (var3) { + case -2091481048: + return var1; + case 803323044: + default: + var2 = var0.getColor(); + if (var2 == null) { + var3 = -2091481048; + } else { + var3 = 1311594945; + } + break; + case 1311594945: + return var2.getValue() & (331113534 | -314336319) + (331113534 & -314336319) | var1 & -16777216; + } + } + } +} diff --git a/src/main/java/defpackage/gy.java b/src/main/java/defpackage/gy.java new file mode 100644 index 0000000..4bea0c2 --- /dev/null +++ b/src/main/java/defpackage/gy.java @@ -0,0 +1,18 @@ +package defpackage; + +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.font.TextRenderable; + +/* JADX INFO: loaded from: evovis-dec.jar:gy.class */ +class gy implements Font.GlyphVisitor { + gy() { + } + + public void acceptGlyph(TextRenderable.Styled styled) { + gz.COLLECTED.add(styled); + } + + public void acceptEffect(TextRenderable textRenderable) { + gz.COLLECTED.add(textRenderable); + } +} diff --git a/src/main/java/defpackage/gz.java b/src/main/java/defpackage/gz.java new file mode 100644 index 0000000..34987ff --- /dev/null +++ b/src/main/java/defpackage/gz.java @@ -0,0 +1,128 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.BufferBuilder; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import net.minecraft.client.gui.Font.DisplayMode; +import net.minecraft.client.gui.Font.GlyphVisitor; +import net.minecraft.client.gui.Font.PreparedText; +import net.minecraft.client.gui.font.TextRenderable; +import net.minecraft.client.gui.font.TextRenderable.Styled; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.network.chat.Style; +import net.minecraft.util.FormattedCharSequence; +import org.joml.Matrix4f; + +public final class gz implements aqg { + private static final int FULL_BRIGHT = 15728880; + private static final int NO_BACKGROUND = 0; + static final List COLLECTED = new ArrayList<>(); + private static final GlyphVisitor COLLECTOR = new GlyphVisitor() { + public void acceptGlyph(Styled var1) { + gz.COLLECTED.add(var1); + } + + public void acceptEffect(TextRenderable var1) { + gz.COLLECTED.add(var1); + } + }; + + private gz() { + } + + public static void draw(String var0, Style var1, Matrix4f var2, float var3, float var4, int var5) { + PreparedText var6 = null; + RenderType var7 = null; + BufferBuilder var8 = null; + Iterator var9 = null; + TextRenderable var10 = null; + RenderType var11 = null; + int var12 = -1254360557; + + while (true) { + switch (var12) { + case -1889587418: + var10.render( + var2, var8, 15728880, (boolean)((((-402900485 ^ 402900485) + ((-402900485 & 402900485) << 1)) + ) != 0)); + var12 = 2018894628; + break; + case -1254360557: + default: + var6 = mc.font + .prepareText( + FormattedCharSequence.forward(var0, var1), + var3, + var4, + var5, + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (-1563049262 ^ 1563049262) + ((-1563049262 & 1563049262) << 1) + ); + COLLECTED.clear(); + var6.visit(COLLECTOR); + if (COLLECTED.isEmpty()) { + var12 = -1054509614; + } else { + var12 = 503973263; + } + break; + case -1104863444: + if (var8 != null) { + var12 = 1913252964; + } else { + var12 = 971729363; + } + break; + case -1054509614: + return; + case -710623395: + arj.draw(var7, var8); + var12 = -409295222; + break; + case -409295222: + var7 = var11; + var8 = arj.begin(var11); + var12 = -1889587418; + break; + case 97525489: + if (var8 != null) { + var12 = -710623395; + } else { + var12 = -409295222; + } + break; + case 503973263: + atd.clearActive(); + var7 = null; + var8 = null; + var9 = COLLECTED.iterator(); + var12 = 2018894628; + break; + case 971729363: + COLLECTED.clear(); + return; + case 1578985367: + var10 = (TextRenderable)var9.next(); + var11 = var10.renderType(DisplayMode.NORMAL); + if (var11 != var7) { + var12 = 97525489; + } else { + var12 = -1889587418; + } + break; + case 1913252964: + arj.draw(var7, var8); + var12 = 971729363; + break; + case 2018894628: + if (var9.hasNext()) { + var12 = 1578985367; + } else { + var12 = -1104863444; + } + } + } + } +} diff --git a/src/main/java/defpackage/h.java b/src/main/java/defpackage/h.java new file mode 100644 index 0000000..3fa002f --- /dev/null +++ b/src/main/java/defpackage/h.java @@ -0,0 +1,14 @@ +package defpackage; + +import java.util.concurrent.CopyOnWriteArrayList; + +/* JADX INFO: loaded from: evovis-dec.jar:h.class */ +class h extends CopyOnWriteArrayList { + private static final long serialVersionUID = 666; + final /* synthetic */ i val$data; + + h(i iVar) { + this.val$data = iVar; + add(this.val$data); + } +} diff --git a/src/main/java/defpackage/ha.java b/src/main/java/defpackage/ha.java new file mode 100644 index 0000000..29dee06 --- /dev/null +++ b/src/main/java/defpackage/ha.java @@ -0,0 +1,109 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import org.joml.Matrix4f; +import org.joml.Vector3f; +import org.joml.Vector4f; + +public final class ha implements VertexConsumer { + private static final float MIN_CLIP_W = 0.05F; + private static final float NDC_CENTER = 0.5F; + private static final float NDC_HALF_RANGE = 0.5F; + private final Matrix4f viewProjection = new Matrix4f(); + private final Matrix4f pose = new Matrix4f(); + private final Vector4f clip = new Vector4f(); + private final Vector3f screen = new Vector3f(); + private final Vector3f origin = new Vector3f(); + private final Vector3f right = new Vector3f(); + private final Vector3f down = new Vector3f(); + private float guiWidth; + private float guiHeight; + private VertexConsumer delegate; + + public void setFrame(Matrix4f var1, Matrix4f var2, Matrix4f var3, float var4, float var5) { + this.viewProjection.set(var2).mul(var1); + this.pose.set(var3); + this.guiWidth = var4; + this.guiHeight = var5; + } + + public void setPlane(float var1, float var2, float var3, Vector3f var4, Vector3f var5) { + this.origin.set(var1, var2, var3); + this.right.set(var4); + this.down.set(var5); + } + + public boolean project(float var1, float var2, Vector3f var3) { + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + int var7 = 1999189251; + + while (true) { + switch (var7) { + case -1812978914: + var3.set((0.5F + 0.5F * this.clip.x / this.clip.w) * this.guiWidth, (0.5F - 0.5F * this.clip.y / this.clip.w) * this.guiHeight, 0.0F); + this.pose.transformPosition(var3); + return (boolean)(((1)) != 0); + case -357503700: + return (boolean)(((0)) != 0); + case 1999189251: + } + + var4 = this.origin.x + this.right.x * var1 + this.down.x * var2; + var5 = this.origin.y + this.right.y * var1 + this.down.y * var2; + var6 = this.origin.z + this.right.z * var1 + this.down.z * var2; + this.viewProjection.transform(this.clip.set(var4, var5, var6, 1.0F)); + if (this.clip.w < 0.05F) { + var7 = -357503700; + } else { + var7 = -1812978914; + } + } + } + + void bind(VertexConsumer var1) { + this.delegate = var1; + } + + public VertexConsumer addVertex(float var1, float var2, float var3) { + this.project(var1, var2, this.screen); + this.delegate.addVertex(this.screen.x, this.screen.y, 0.0F); + return this; + } + + public VertexConsumer setColor(int var1, int var2, int var3, int var4) { + this.delegate.setColor(var1, var2, var3, var4); + return this; + } + + public VertexConsumer setColor(int var1) { + this.delegate.setColor(var1); + return this; + } + + public VertexConsumer setUv(float var1, float var2) { + this.delegate.setUv(var1, var2); + return this; + } + + public VertexConsumer setUv1(int var1, int var2) { + this.delegate.setUv1(var1, var2); + return this; + } + + public VertexConsumer setUv2(int var1, int var2) { + this.delegate.setUv2(var1, var2); + return this; + } + + public VertexConsumer setNormal(float var1, float var2, float var3) { + this.delegate.setNormal(var1, var2, var3); + return this; + } + + public VertexConsumer setLineWidth(float var1) { + this.delegate.setLineWidth(var1); + return this; + } +} diff --git a/src/main/java/defpackage/hb.java b/src/main/java/defpackage/hb.java new file mode 100644 index 0000000..6a466af --- /dev/null +++ b/src/main/java/defpackage/hb.java @@ -0,0 +1,209 @@ +package defpackage; + +import net.minecraft.core.component.DataComponents; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.ItemStack; + +public final class hb { + public static final int MAX_FOOD_LEVEL = 20; + public static final int SATURATED_REGEN_FOOD_LEVEL = 20; + public static final int SLOW_REGEN_FOOD_LEVEL = 18; + public static final float EXHAUSTION_PER_SATURATION_POINT = 4.0F; + public static final float EXHAUSTION_PER_HEALTH_POINT = 6.0F; + public static final float SATURATION_PER_HEALTH_POINT = 1.5F; + public static final float FOOD_PER_HEALTH_POINT = 1.5F; + public static final float HEALTH_PER_SLOW_REGEN_CYCLE = 1.0F; + public static final float EPSILON = 1.0E-4F; + + public static FoodProperties propertiesOf(ItemStack var0) { + FoodProperties var2 = null; + int var1 = -722858900; + + while (true) { + switch (var1) { + case -1554992278: + if (var0.isEmpty()) { + var1 = -466170263; + } else { + var1 = 1288863280; + } + break; + case -722858900: + default: + if (var0 != null) { + var1 = -1554992278; + } else { + var1 = -466170263; + } + break; + case -466170263: + var2 = null; + var1 = 33483225; + break; + case 33483225: + return var2; + case 1288863280: + var2 = (FoodProperties)var0.get(DataComponents.FOOD); + var1 = 33483225; + } + } + } + + public static boolean isEdibleNow(Player var0, ItemStack var1) { + FoodProperties var2 = null; + int var4 = 0; + int var3 = 509394523; + + while (true) { + switch (var3) { + case -1957638619: + var4 = 0; + var3 = 1693838230; + break; + case -464770814: + var4 = 1; + var3 = 1693838230; + break; + case 509394523: + default: + var2 = propertiesOf(var1); + if (var2 != null) { + var3 = 1729033020; + } else { + var3 = -1957638619; + } + break; + case 1693838230: + return (boolean)((var4) != 0); + case 1729033020: + if (var0.canEat(var2.canAlwaysEat())) { + var3 = -464770814; + } else { + var3 = -1957638619; + } + } + } + } + + public static int foodAfterEating(int var0, int var1) { + return Mth.clamp(var0 + var1, 0, (1087532349 ^ -1087532329) + ((1087532349 & -1087532329) << 1)); + } + + public static float saturationAfterEating(int var0, float var1, float var2) { + return Mth.clamp(var1 + var2, 0.0F, var0); + } + + public static float healthFromSaturation(float var0) { + return Math.max(0.0F, var0) / 1.5F; + } + + public static float healthFromFoodLevel(int var0) { + float var1 = 0.0F; + int var2 = -754647783; + + while (true) { + switch (var2) { + case -1581331474: + return 0.0F; + case -754647783: + default: + if (var0 < (-1971728761 ^ 1971728779) + ((-1971728761 & 1971728779) << 1)) { + var2 = -1581331474; + } else { + var2 = 1309498267; + } + break; + case 1309498267: + var1 = (float)Math.floor((var0 - ((377864722 | -377864704) + (377864722 & -377864704))) / 1.5F); + return (var1 + 1.0F) * 1.0F; + } + } + } + + public static float healthPotential(int var0, float var1) { + float var2 = 0.0F; + float var4 = 0.0F; + int var3 = 1136591400; + + while (true) { + switch (var3) { + case -1510149607: + var4 = healthFromSaturation(var1); + var3 = 1622135906; + break; + case 1136591400: + default: + if (var0 >= (-1798835640 | 1798835660) + (-1798835640 & 1798835660)) { + var3 = -1510149607; + } else { + var3 = 1139959725; + } + break; + case 1139959725: + var4 = 0.0F; + var3 = 1622135906; + break; + case 1622135906: + var2 = var4; + return var2 + healthFromFoodLevel(var0); + } + } + } + + public static float healthPotentialGain(int var0, float var1, FoodProperties var2) { + int var3 = 0; + float var4 = 0.0F; + int var5 = 206214348; + + while (true) { + switch (var5) { + case -194787684: + return 0.0F; + case 206214348: + default: + if (var2 == null) { + var5 = -194787684; + } else { + var5 = 957546520; + } + break; + case 957546520: + var3 = foodAfterEating(var0, var2.nutrition()); + var4 = saturationAfterEating(var3, var1, var2.saturation()); + return healthPotential(var3, var4) - healthPotential(var0, var1); + } + } + } + + public static float wastedSaturation(int var0, float var1, FoodProperties var2) { + int var3 = 0; + float var4 = 0.0F; + int var5 = 1440309438; + + while (true) { + switch (var5) { + case -1898582120: + return 0.0F; + case -1863087458: + var3 = foodAfterEating(var0, var2.nutrition()); + var4 = saturationAfterEating(var3, var1, var2.saturation()); + return Math.max(0.0F, var2.saturation() - (var4 - var1)); + case 1440309438: + } + + if (var2 == null) { + var5 = -1898582120; + } else { + var5 = -1863087458; + } + } + } + + private hb() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/hc.java b/src/main/java/defpackage/hc.java new file mode 100644 index 0000000..31946a4 --- /dev/null +++ b/src/main/java/defpackage/hc.java @@ -0,0 +1,32 @@ +package defpackage; + +import net.minecraft.world.item.ItemStack; + +public record hc(int slotIndex, ItemStack stack, int order, int bites, int foodGain, float saturationGain, float healthGain, float wastedSaturation) { + public boolean isWasteful() { + int var2 = 0; + int var1 = -1534559380; + + while (true) { + switch (var1) { + case -1534559380: + default: + if (this.wastedSaturation > 1.0E-4F) { + var1 = 1829640475; + } else { + var1 = -1141471160; + } + break; + case -1141471160: + var2 = 0; + var1 = 1376663887; + break; + case 1376663887: + return (boolean)((var2) != 0); + case 1829640475: + var2 = 1; + var1 = 1376663887; + } + } + } +} diff --git a/src/main/java/defpackage/hd.java b/src/main/java/defpackage/hd.java new file mode 100644 index 0000000..9ebe71b --- /dev/null +++ b/src/main/java/defpackage/hd.java @@ -0,0 +1,49 @@ +package defpackage; + +import java.util.Iterator; +import java.util.List; + +public record hd(List steps, float healthGain, int endFoodLevel, float endSaturation) { + public static final hd EMPTY = new hd(List.of(), 0.0F, 0, 0.0F); + + public boolean isEmpty() { + return this.steps.isEmpty(); + } + + public hc stepForSlot(int var1) { + Iterator var2 = null; + hc var3 = null; + int var4 = -1187187660; + + while (true) { + switch (var4) { + case -1187187660: + default: + var2 = this.steps.iterator(); + var4 = 176872745; + break; + case -1123062810: + var4 = 176872745; + break; + case -485327469: + return var3; + case 112650164: + return null; + case 176872745: + if (var2.hasNext()) { + var4 = 1947548375; + } else { + var4 = 112650164; + } + break; + case 1947548375: + var3 = (hc)var2.next(); + if (var3.slotIndex() == var1) { + var4 = -485327469; + } else { + var4 = -1123062810; + } + } + } + } +} diff --git a/src/main/java/defpackage/he.java b/src/main/java/defpackage/he.java new file mode 100644 index 0000000..e047462 --- /dev/null +++ b/src/main/java/defpackage/he.java @@ -0,0 +1,32 @@ +package defpackage; + +import net.minecraft.world.item.ItemStack; + +final class he { + final int slotIndex; + private final ItemStack stack; + private final int order; + private int bites; + private int foodGain; + private float saturationGain; + private float healthGain; + private float wastedSaturation; + + he(int var1, ItemStack var2, int var3) { + this.slotIndex = var1; + this.stack = var2; + this.order = var3; + } + + void add(int var1, float var2, float var3, float var4) { + this.bites += 1; + this.foodGain += var1; + this.saturationGain += var2; + this.healthGain += var3; + this.wastedSaturation += var4; + } + + hc toStep() { + return new hc(this.slotIndex, this.stack, this.order, this.bites, this.foodGain, this.saturationGain, this.healthGain, this.wastedSaturation); + } +} diff --git a/src/main/java/defpackage/hf.java b/src/main/java/defpackage/hf.java new file mode 100644 index 0000000..935847d --- /dev/null +++ b/src/main/java/defpackage/hf.java @@ -0,0 +1,7 @@ +package defpackage; + +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.ItemStack; + +public record hf(int slotIndex, ItemStack stack, FoodProperties properties, int count) { +} diff --git a/src/main/java/defpackage/hg.java b/src/main/java/defpackage/hg.java new file mode 100644 index 0000000..70dfaab --- /dev/null +++ b/src/main/java/defpackage/hg.java @@ -0,0 +1,58 @@ +package defpackage; + +final class hg { + private final hh type; + private int sourceIndex; + private int consumedFromSource; + private int consumedTotal; + + hg(hh var1) { + this.type = var1; + } + + hj take() { + hj var1 = null; + int var2 = 1202416937; + + while (true) { + switch (var2) { + case -1770602612: + this.sourceIndex += 1; + this.consumedFromSource = 0; + var2 = -225699612; + break; + case -1574301359: + return null; + case -1558848097: + var1 = this.type.sources.get(this.sourceIndex); + if (this.consumedFromSource < var1.count()) { + var2 = -130695119; + } else { + var2 = -1770602612; + } + break; + case -225699612: + if (this.sourceIndex < this.type.sources.size()) { + var2 = -1558848097; + } else { + var2 = 1525334201; + } + break; + case -130695119: + this.consumedFromSource += 1; + this.consumedTotal += 1; + return var1; + case 1202416937: + default: + if (this.consumedTotal >= this.type.count) { + var2 = -1574301359; + } else { + var2 = -225699612; + } + break; + case 1525334201: + return null; + } + } + } +} diff --git a/src/main/java/defpackage/hh.java b/src/main/java/defpackage/hh.java new file mode 100644 index 0000000..c729e9c --- /dev/null +++ b/src/main/java/defpackage/hh.java @@ -0,0 +1,18 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; + +final class hh { + final hk key; + final List sources = new ArrayList<>(); + int count; + + private hh(hk var1) { + this.key = var1; + } + + private double weight() { + return this.key.nutrition() + this.key.saturation(); + } +} diff --git a/src/main/java/defpackage/hi.java b/src/main/java/defpackage/hi.java new file mode 100644 index 0000000..501b317 --- /dev/null +++ b/src/main/java/defpackage/hi.java @@ -0,0 +1,267 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +final class hi { + private final int[] nutrition; + private final float[] saturation; + private final boolean[] canAlwaysEat; + private final int[] remaining; + private final Map values = new HashMap<>(); + private final Map choices = new HashMap<>(); + private int nodes; + + hi(List var1) { + int var2 = var1.size(); + this.nutrition = new int[var2]; + this.saturation = new float[var2]; + this.canAlwaysEat = new boolean[var2]; + this.remaining = new int[var2]; + + for (int var3 = 0; var3 < var2; var3++) { + hh var4 = (hh)var1.get(var3); + this.nutrition[var3] = var4.key.nutrition(); + this.saturation[var3] = var4.key.saturation(); + this.canAlwaysEat[var3] = var4.key.canAlwaysEat(); + this.remaining[var3] = var4.count; + } + } + + private long key(int var1, float var2) { + long var3 = (3615295171294497241L | -3615295171294497241L) + (3615295171294497241L & -3615295171294497241L); + int[] var5 = null; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 1379782648; + + while (true) { + switch (var9) { + case -1412094736: + if (var7 < var6) { + var9 = -1337925558; + } else { + var9 = 1515154840; + } + break; + case -1337925558: + var8 = var5[var7]; + var3 = var3 << (684065454 ^ -684065449) + ((684065454 & -684065449) << 1) + | Math.min(var8, (-383837870 ^ 383837901) + ((-383837870 & 383837901) << 1)); + var7++; + var9 = -1412094736; + break; + case 1379782648: + default: + var3 = var1; + var3 = var3 << (-1176118722 ^ 1176118731) + ((-1176118722 & 1176118731) << 1) | quantize(var2); + var5 = this.remaining; + var6 = var5.length; + var7 = 0; + var9 = -1412094736; + break; + case 1515154840: + return var3; + } + } + } + + private static long quantize(float var0) { + int var1 = Math.round(Math.max(0.0F, var0) / 0.05F); + return Math.min(var1, (700112511 ^ -700112000) + ((700112511 & -700112000) << 1)); + } + + float best(int var1, float var2, int var3) { + long var4 = (-4985571249011072093L ^ 4985571249011072093L) + ((-4985571249011072093L & 4985571249011072093L) << 1); + Float var6 = null; + float var7 = 0.0F; + int var8 = 0; + int var9 = 0; + int var10 = 0; + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = -1863941950; + + while (true) { + switch (var13) { + case -2062531400: + this.values.put(var4, var7); + if (var8 >= 0) { + var13 = -388239538; + } else { + var13 = 1356871404; + } + break; + case -1994935572: + if (this.remaining[var9] <= 0) { + var13 = -1951431784; + } else { + var13 = -917127867; + } + break; + case -1951431784: + var13 = -1058288888; + break; + case -1863941950: + default: + var4 = this.key(var1, var2); + var6 = this.values.get(var4); + if (var6 != null) { + var13 = 1738488972; + } else { + var13 = 2034999740; + } + break; + case -1347640609: + if (!this.canAlwaysEat[var9]) { + var13 = 1041724270; + } else { + var13 = 470955259; + } + break; + case -1058288888: + var9++; + var13 = -233783762; + break; + case -917127867: + if (var1 >= (951832448 | -951832428) + (951832448 & -951832428)) { + var13 = -1347640609; + } else { + var13 = 470955259; + } + break; + case -896285887: + this.remaining[var9] = this.remaining[var9] - (1); + this.nodes += 1; + var12 = this.best(var10, var11, var3 + (-1942382618 | 1942382619) + (-1942382618 & 1942382619)) - 0.02F; + this.remaining[var9] = this.remaining[var9] + 1; + if (var12 > var7 + 1.0E-4F) { + var13 = -67241036; + } else { + var13 = -1058288888; + } + break; + case -388239538: + this.choices.put(var4, var8); + var13 = 1356871404; + break; + case -233783762: + if (var9 < this.remaining.length) { + var13 = -1994935572; + } else { + var13 = -2062531400; + } + break; + case -67241036: + var7 = var12; + var8 = var9; + var13 = -1058288888; + break; + case 470955259: + var10 = hb.foodAfterEating(var1, this.nutrition[var9]); + var11 = hb.saturationAfterEating(var10, var2, this.saturation[var9]); + if (var10 == var1) { + var13 = 1736104311; + } else { + var13 = -896285887; + } + break; + case 633258991: + if (this.nodes < (-1096952651 | 1097012651) + (-1096952651 & 1097012651)) { + var13 = 2051739593; + } else { + var13 = -2062531400; + } + break; + case 983655180: + var13 = -1058288888; + break; + case 1041724270: + var13 = -1058288888; + break; + case 1356871404: + return var7; + case 1736104311: + if (var11 <= var2 + 1.0E-4F) { + var13 = 983655180; + } else { + var13 = -896285887; + } + break; + case 1738488972: + return var6; + case 2034999740: + var7 = hb.healthPotential(var1, var2); + var8 = -1; + if (var3 < (-157171530 | 157171550) + (-157171530 & 157171550)) { + var13 = 633258991; + } else { + var13 = -2062531400; + } + break; + case 2051739593: + var9 = 0; + var13 = -233783762; + } + } + } + + List reconstruct(int var1, float var2) { + ArrayList var3 = null; + int var4 = 0; + float var5 = 0.0F; + Integer var6 = null; + int var7 = 0; + int var8 = -299282979; + + while (true) { + switch (var8) { + case -299282979: + default: + var3 = new ArrayList(); + var4 = var1; + var5 = var2; + var8 = 51140714; + break; + case -146602597: + var8 = 1014927656; + break; + case 51140714: + if (var3.size() < (58541928 ^ -58541908) + ((58541928 & -58541908) << 1)) { + var8 = 775392376; + } else { + var8 = 1014927656; + } + break; + case 698210028: + this.remaining[var6] -= 1; + var3.add(var6); + var7 = hb.foodAfterEating(var4, this.nutrition[var6]); + var5 = hb.saturationAfterEating(var7, var5, this.saturation[var6]); + var4 = var7; + var8 = 51140714; + break; + case 775392376: + var6 = this.choices.get(this.key(var4, var5)); + if (var6 != null) { + var8 = 1002120632; + } else { + var8 = 1014927656; + } + break; + case 1002120632: + if (this.remaining[var6] <= 0) { + var8 = -146602597; + } else { + var8 = 698210028; + } + break; + case 1014927656: + return var3; + } + } + } +} diff --git a/src/main/java/defpackage/hj.java b/src/main/java/defpackage/hj.java new file mode 100644 index 0000000..7888c0e --- /dev/null +++ b/src/main/java/defpackage/hj.java @@ -0,0 +1,47 @@ +package defpackage; + +import net.minecraft.world.item.ItemStack; + +final class hj { + int slotIndex; + ItemStack stack; + int count; + + hj(int slotIndex, ItemStack stack, int count) { + this.slotIndex = slotIndex; + this.stack = stack; + this.count = count; + } + + public int slotIndex() { + return this.slotIndex; + } + public ItemStack stack() { + return this.stack; + } + public int count() { + return this.count; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof hj that)) { + return false; + } + if (this.slotIndex != that.slotIndex) { return false; } + if (!java.util.Objects.equals(this.stack, that.stack)) { return false; } + if (this.count != that.count) { return false; } + return true; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(this.slotIndex, this.stack, this.count); + } + + @Override + public String toString() { + return "hj[" + "slotIndex=" + this.slotIndex + ", " + "stack=" + this.stack + ", " + "count=" + this.count + "]"; + } + +} diff --git a/src/main/java/defpackage/hk.java b/src/main/java/defpackage/hk.java new file mode 100644 index 0000000..3da5ddc --- /dev/null +++ b/src/main/java/defpackage/hk.java @@ -0,0 +1,4 @@ +package defpackage; + +record hk(int nutrition, float saturation, boolean canAlwaysEat) { +} diff --git a/src/main/java/defpackage/hl.java b/src/main/java/defpackage/hl.java new file mode 100644 index 0000000..37690a4 --- /dev/null +++ b/src/main/java/defpackage/hl.java @@ -0,0 +1,177 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.List; +import net.minecraft.world.food.FoodProperties; + +public final class hl { + private static final int MAX_TYPES = 8; + private static final int MAX_BITES = 20; + private static final int MAX_COUNT_PER_TYPE = 20; + private static final int NODE_BUDGET = 60000; + private static final int COUNT_BITS = 5; + private static final int SATURATION_BITS = 9; + private static final float SATURATION_QUANTUM = 0.05F; + private static final float BITE_PENALTY = 0.02F; + + private hl() { + } + + public static hd plan(int var0, float var1, List var2) { + List var3 = null; + hi var4 = null; + List var5 = null; + int var6 = 1665764631; + + while (true) { + switch (var6) { + case -895643279: + var4 = new hi(var3); + var4.best(var0, var1, (-1775108875 ^ 1775108875) + ((-1775108875 & 1775108875) << 1)); + var5 = var4.reconstruct(var0, var1); + if (var5.isEmpty()) { + var6 = 1914647536; + } else { + var6 = 1913752045; + } + break; + case -883744065: + var3 = groupTypes(var2); + if (var3.isEmpty()) { + var6 = 249929141; + } else { + var6 = -895643279; + } + break; + case -763300180: + if (var2.isEmpty()) { + var6 = 956380650; + } else { + var6 = -883744065; + } + break; + case 249929141: + return hd.EMPTY; + case 956380650: + return hd.EMPTY; + case 1665764631: + default: + if (var2 != null) { + var6 = -763300180; + } else { + var6 = 956380650; + } + break; + case 1913752045: + return build(var0, var1, var3, var5); + case 1914647536: + return hd.EMPTY; + } + } + } + + private static List groupTypes(List var0) { + LinkedHashMap var1 = new LinkedHashMap(); + + for (hf var3 : var0) { + FoodProperties var4 = var3.properties(); + if (var4 != null && var3.count() > 0) { + hk var5 = new hk(var4.nutrition(), var4.saturation(), var4.canAlwaysEat()); + hh var6 = var1.computeIfAbsent(var5, hh::new); + var6.sources.add(new hj(var3.slotIndex(), var3.stack(), var3.count())); + var6.count = var6.count + var3.count(); + } + } + + ArrayList var7 = new ArrayList(var1.values()); + var7.sort(Comparator.comparingDouble(hh::weight).reversed()); + if (var7.size() > (-104671238 | 104671246) + (-104671238 & 104671246)) { + var7 = new ArrayList(var7.subList(0, (-1298972115 | 1298972123) + (-1298972115 & 1298972123))); + } + + for (hh var9 : var7) { + var9.count = Math.min(var9.count, usableCount(var9.key.nutrition())); + } + + return var7; + } + + private static int usableCount(int var0) { + int var1 = 963961627; + + while (true) { + switch (var1) { + case -1948826955: + return Math.min( + 20, + Math.max( + 1, + ((1426594017 | -1426593997) + (1426594017 & -1426593997)) / var0 + (-545430712 ^ 545430713) + ((-545430712 & 545430713) << 1) + ) + ); + case -137859963: + return 1; + case 963961627: + } + + if (var0 <= 0) { + var1 = -137859963; + } else { + var1 = -1948826955; + } + } + } + + private static hd build(int var0, float var1, List var2, List var3) { + ArrayList var4 = new ArrayList(var2.size()); + + for (hh var6 : var2) { + var4.add(new hg(var6)); + } + + ArrayList var20 = new ArrayList(); + int var21 = var0; + float var7 = var1; + int var8 = 0; + + for (int var10 : var3) { + hg var11 = (hg)var4.get(var10); + hj var12 = var11.take(); + if (var12 == null) { + break; + } + + hh var13 = (hh)var2.get(var10); + int var14 = hb.foodAfterEating(var21, var13.key.nutrition()); + float var15 = hb.saturationAfterEating(var14, var7, var13.key.saturation()); + float var16 = Math.max(0.0F, var13.key.saturation() - (var15 - var7)); + float var17 = hb.healthPotential(var14, var15) - hb.healthPotential(var21, var7); + he var18 = var20.isEmpty() ? null : (he)var20.get(var20.size() - ((2124044422 | -2124044421) + (2124044422 & -2124044421))); + if (var18 != null && var18.slotIndex == var12.slotIndex) { + var18.add(var14 - var21, var15 - var7, var17, var16); + } else { + he var19 = new he(var12.slotIndex, var12.stack, ++var8); + var19.add(var14 - var21, var15 - var7, var17, var16); + var20.add(var19); + } + + var21 = var14; + var7 = var15; + } + + if (var20.isEmpty()) { + return hd.EMPTY; + } + + ArrayList var22 = new ArrayList(var20.size()); + + for (he var25 : var20) { + var22.add(var25.toStep()); + } + + float var24 = hb.healthPotential(var21, var7) - hb.healthPotential(var0, var1); + return new hd(List.copyOf(var22), var24, var21, var7); + } +} diff --git a/src/main/java/defpackage/hm.java b/src/main/java/defpackage/hm.java new file mode 100644 index 0000000..99782ee --- /dev/null +++ b/src/main/java/defpackage/hm.java @@ -0,0 +1,257 @@ +package defpackage; + +import java.util.ArrayDeque; +import java.util.Deque; +import java.util.Iterator; +import java.util.List; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerInput; + +public final class hm implements aqg { + public static final hm INSTANCE = new hm(); + private static final int NO_CONTAINER = -1; + private static final int MIN_BUDGET = 1; + private final Deque pending = new ArrayDeque<>(); + private int containerId = -1; + private int budgetPerTick = 1; + private boolean exclusive; + + private hm() { + } + + public boolean isBusy() { + int var2 = 0; + int var1 = 316607383; + + while (true) { + switch (var1) { + case -1647264590: + var2 = 0; + var1 = 1356420687; + break; + case -799230581: + var2 = 1; + var1 = 1356420687; + break; + case 316607383: + default: + if (!this.pending.isEmpty()) { + var1 = -799230581; + } else { + var1 = -1647264590; + } + break; + case 1356420687: + return (boolean)((var2) != 0); + } + } + } + + public boolean submit(int var1, List var2, int var3) { + int var4 = 0; + int var5 = 632241257; + + while (true) { + switch (var5) { + case -2073232070: + if (!this.exclusive) { + var5 = -392788809; + } else { + var5 = 845408061; + } + break; + case -415927538: + if (var4 == 0) { + var5 = -2073232070; + } else { + var5 = 845408061; + } + break; + case -392788809: + if (this.containerId != var1) { + var5 = 845408061; + } else { + var5 = 1210525917; + } + break; + case 632241257: + default: + if (var2.isEmpty()) { + var5 = 945230084; + } else { + var5 = 827543160; + } + break; + case 827543160: + var4 = (requiresExclusive(var2)) ? 1 : 0; + if (this.isBusy()) { + var5 = -415927538; + } else { + var5 = 1210525917; + } + break; + case 845408061: + return (boolean)(((0)) != 0); + case 945230084: + return (boolean)(((0)) != 0); + case 1210525917: + this.containerId = var1; + this.budgetPerTick = Math.max(1, var3); + this.exclusive = (boolean)((var4) != 0); + this.pending.addAll(var2); + return (boolean)(((1)) != 0); + } + } + } + + public void cancel() { + this.pending.clear(); + this.containerId = -1; + this.exclusive = (boolean)(((0)) != 0); + } + + public void tick() { + AbstractContainerMenu var1 = null; + int var2 = 0; + ht var3 = null; + int var4 = 804678560; + + while (true) { + switch (var4) { + case -1907317380: + if (!var1.getCarried().isEmpty()) { + var4 = 1064709107; + } else { + var4 = -1584755751; + } + break; + case -1714638377: + if (var2 <= 0) { + var4 = -529065267; + } else { + var4 = -526416615; + } + break; + case -1584755751: + var2 = this.budgetPerTick; + var4 = 1148366436; + break; + case -1179214635: + this.cancel(); + return; + case -883336294: + return; + case -529065267: + if (!var1.getCarried().isEmpty()) { + var4 = -526416615; + } else { + var4 = 1806301345; + } + break; + case -526416615: + var3 = this.pending.poll(); + mc.gameMode.handleContainerInput(this.containerId, var3.slot(), var3.button(), var3.type(), mc.player); + var2--; + var4 = 1148366436; + break; + case 107934617: + if (var1.containerId == this.containerId) { + var4 = -1907317380; + } else { + var4 = 1064709107; + } + break; + case 174639730: + this.exclusive = (boolean)(((0)) != 0); + var4 = 1610286470; + break; + case 178850652: + if (mc.gameMode == null) { + var4 = -1179214635; + } else { + var4 = 1626443099; + } + break; + case 804678560: + default: + if (this.pending.isEmpty()) { + var4 = -883336294; + } else { + var4 = 965366195; + } + break; + case 965366195: + if (mc.player != null) { + var4 = 178850652; + } else { + var4 = -1179214635; + } + break; + case 1064709107: + this.cancel(); + return; + case 1148366436: + if (!this.pending.isEmpty()) { + var4 = -1714638377; + } else { + var4 = 1806301345; + } + break; + case 1610286470: + return; + case 1626443099: + var1 = mc.player.containerMenu; + if (var1 != null) { + var4 = 107934617; + } else { + var4 = 1064709107; + } + break; + case 1806301345: + if (this.pending.isEmpty()) { + var4 = 174639730; + } else { + var4 = 1610286470; + } + } + } + } + + private static boolean requiresExclusive(List var0) { + Iterator var1 = null; + ht var2 = null; + int var3 = -1692148441; + + while (true) { + switch (var3) { + case -1692148441: + default: + var1 = var0.iterator(); + var3 = -1099655337; + break; + case -1099655337: + if (var1.hasNext()) { + var3 = 1392193149; + } else { + var3 = 2117344311; + } + break; + case 1257657062: + return (boolean)(((1)) != 0); + case 1392193149: + var2 = (ht)var1.next(); + if (var2.type() != ContainerInput.QUICK_MOVE) { + var3 = 1257657062; + } else { + var3 = 1898737378; + } + break; + case 1898737378: + var3 = -1099655337; + break; + case 2117344311: + return (boolean)(((0)) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/hn.java b/src/main/java/defpackage/hn.java new file mode 100644 index 0000000..cb82421 --- /dev/null +++ b/src/main/java/defpackage/hn.java @@ -0,0 +1,1262 @@ +package defpackage; + +import it.unimi.dsi.fastutil.ints.IntArrayList; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map.Entry; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; + +public final class hn { + private static final int UNASSIGNED = -1; + + public static List plan(AbstractContainerMenu var0, ia var1, hy var2) { + if (var1.isUsable() && var0.getCarried().isEmpty()) { + ItemStack[] var3 = new ItemStack[var0.slots.size()]; + + for (int var4 = 0; var4 < var3.length; var4++) { + var3[var4] = ((Slot)var0.slots.get(var4)).getItem().copy(); + } + + ArrayList var5 = new ArrayList(); + pullPinnedItems(var5, var3, var1, var2); + if (var2.isMergeStacks()) { + mergeStacks(var5, var0, var3, var1.slots()); + } + + arrange(var5, var0, var3, var1, var2); + return var5; + } else { + return Collections.emptyList(); + } + } + + private static void pullPinnedItems(List var0, ItemStack[] var1, ia var2, hy var3) { + int[] var4 = null; + Iterator var5 = null; + Entry var6 = null; + int var7 = 0; + int var8 = 0; + int var9 = 0; + Object var10 = null; + int var11 = -1201668720; + + while (true) { + switch (var11) { + case -1405796058: + var11 = 707557687; + break; + case -1201668720: + default: + var4 = var2.menuSlotByPlayerSlot(); + if (var4.length != 0) { + var11 = 1074268710; + } else { + var11 = -81701341; + } + break; + case -796018812: + var8 = var4[var7]; + if (var8 != (771684219 | -771684220) + (771684219 & -771684220)) { + var11 = 141223893; + } else { + var11 = 707557687; + } + break; + case -613329544: + var11 = 707557687; + break; + case -81701341: + return; + case -79129182: + if (var7 >= var4.length) { + var11 = -1405796058; + } else { + var11 = -796018812; + } + break; + case 141223893: + if (indexOfSlot(var2, var8) < 0) { + var11 = 1129906581; + } else { + var11 = 997763479; + } + break; + case 345732168: + return; + case 413549397: + var5 = var3.getSlotPins().entrySet().iterator(); + var11 = 707557687; + break; + case 512194356: + emitSwap(var0, var2, var8, var9); + var10 = var1[var8]; + var1[var8] = var1[var9]; + var1[var9] = (ItemStack)var10; + var11 = 707557687; + break; + case 515870070: + var11 = 707557687; + break; + case 707557687: + if (var5.hasNext()) { + var11 = 1100792560; + } else { + var11 = 345732168; + } + break; + case 997763479: + if (holdsPinned(var1, var2.slots(), (String)var6.getValue())) { + var11 = -613329544; + } else { + var11 = 1571668550; + } + break; + case 1074268710: + if (var3.getSlotPins().isEmpty()) { + var11 = -81701341; + } else { + var11 = 413549397; + } + break; + case 1100792560: + var6 = (Entry)var5.next(); + var7 = (Integer)var6.getKey(); + if (var7 >= 0) { + var11 = -79129182; + } else { + var11 = 707557687; + } + break; + case 1129906581: + var11 = 707557687; + break; + case 1571668550: + var9 = findOutsideSource(var1, var2, (String)var6.getValue()); + if (var9 == (-2099099056 | 2099099055) + (-2099099056 & 2099099055)) { + var11 = 515870070; + } else { + var11 = 512194356; + } + } + } + } + + private static boolean holdsPinned(ItemStack[] var0, int[] var1, String var2) { + int[] var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = -953973763; + + while (true) { + switch (var7) { + case -953973763: + default: + var3 = var1; + var4 = var3.length; + var5 = 0; + var7 = -218508608; + break; + case -456061941: + return (boolean)(((0)) != 0); + case -218508608: + if (var5 < var4) { + var7 = 1059506522; + } else { + var7 = -456061941; + } + break; + case 198693456: + var5++; + var7 = -218508608; + break; + case 1059506522: + var6 = var3[var5]; + if (hw.matches(var2, var0[var6])) { + var7 = 2104212234; + } else { + var7 = 198693456; + } + break; + case 2104212234: + return (boolean)(((1)) != 0); + } + } + } + + private static int findOutsideSource(ItemStack[] var0, ia var1, String var2) { + int var3 = 0; + int[] var4 = null; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = -828260370; + + while (true) { + switch (var8) { + case -1821463434: + if (!hw.matches(var2, var0[var7])) { + var8 = 882378312; + } else { + var8 = -1786755359; + } + break; + case -1786755359: + if (var3 != (-1965932884 ^ 1965932883) + ((-1965932884 & 1965932883) << 1)) { + var8 = 1909891713; + } else { + var8 = -1225300562; + } + break; + case -1225300562: + var3 = var7; + var8 = -795173169; + break; + case -828260370: + default: + var3 = -1; + var4 = var1.menuSlotByPlayerSlot(); + var5 = var4.length; + var6 = 0; + var8 = -291657245; + break; + case -795395624: + return var3; + case -795173169: + var6++; + var8 = -291657245; + break; + case -291657245: + if (var6 < var5) { + var8 = 2085689142; + } else { + var8 = -795395624; + } + break; + case 882378312: + var8 = -795173169; + break; + case 966517852: + var8 = -795173169; + break; + case 1040695160: + if (indexOfSlot(var1, var7) >= 0) { + var8 = 966517852; + } else { + var8 = -1821463434; + } + break; + case 1909891713: + if (hw.preference(var0[var7]) > hw.preference(var0[var3])) { + var8 = -1225300562; + } else { + var8 = -795173169; + } + break; + case 2085689142: + var7 = var4[var6]; + if (var7 != (-386081145 ^ 386081144) + ((-386081145 & 386081144) << 1)) { + var8 = 1040695160; + } else { + var8 = -795173169; + } + } + } + } + + private static void mergeStacks(List var0, AbstractContainerMenu var1, ItemStack[] var2, int[] var3) { + boolean[] var4 = null; + int var5 = 0; + ItemStack var6 = null; + IntArrayList var7 = null; + int var8 = 0; + ItemStack var9 = null; + int var10 = -240801774; + + while (true) { + switch (var10) { + case -1843935330: + mergeGroup(var0, var1, var2, sortByCount(var2, var7.toIntArray())); + var10 = 1579053422; + break; + case -1715307253: + var10 = -1031410571; + break; + case -1532776326: + if (var5 < var3.length) { + var10 = -335596111; + } else { + var10 = 1689919885; + } + break; + case -1137202976: + var9 = var2[var3[var8]]; + if (!var9.isEmpty()) { + var10 = 146824993; + } else { + var10 = -1031410571; + } + break; + case -1041831748: + var7.add(var3[var8]); + var10 = -1031410571; + break; + case -1031410571: + var8++; + var10 = 527679480; + break; + case -406616371: + var8 = var5 + 1; + var10 = 527679480; + break; + case -353394893: + var4[var5] = (boolean)(((1)) != 0); + var6 = var2[var3[var5]]; + if (!var6.isEmpty()) { + var10 = 735011922; + } else { + var10 = 1579053422; + } + break; + case -335596111: + if (var4[var5]) { + var10 = -300768392; + } else { + var10 = -353394893; + } + break; + case -300768392: + var10 = 1579053422; + break; + case -240801774: + default: + var4 = new boolean[var3.length]; + var5 = 0; + var10 = -1532776326; + break; + case -60419574: + var7.add(var3[var5]); + var10 = -406616371; + break; + case 35491202: + var10 = 1579053422; + break; + case 146824993: + if (!ItemStack.isSameItemSameComponents(var6, var9)) { + var10 = -1715307253; + } else { + var10 = 1714448608; + } + break; + case 527679480: + if (var8 < var3.length) { + var10 = -1137202976; + } else { + var10 = 854339736; + } + break; + case 668006164: + var7 = new IntArrayList(); + if (var6.getCount() < capacity(var1, var3[var5], var6)) { + var10 = -60419574; + } else { + var10 = -406616371; + } + break; + case 735011922: + if (!var6.isStackable()) { + var10 = 35491202; + } else { + var10 = 668006164; + } + break; + case 854339736: + if (var7.size() > (1917628285 ^ -1917628284) + ((1917628285 & -1917628284) << 1)) { + var10 = -1843935330; + } else { + var10 = 1579053422; + } + break; + case 1579053422: + var5++; + var10 = -1532776326; + break; + case 1689919885: + return; + case 1714448608: + var4[var8] = (boolean)(((1)) != 0); + if (var9.getCount() < capacity(var1, var3[var8], var9)) { + var10 = -1041831748; + } else { + var10 = -1031410571; + } + } + } + } + + private static void mergeGroup(List var0, AbstractContainerMenu var1, ItemStack[] var2, int[] var3) { + int var4 = 0; + int var5 = 0; + ItemStack var6 = null; + int var7 = 0; + int var8 = 0; + int var9 = 0; + ItemStack var10 = null; + int var11 = 0; + int var12 = 0; + int var13 = -1633083217; + + while (true) { + switch (var13) { + case -2145427636: + var7 = 0; + var8 = var3.length - (1); + var13 = 686928420; + break; + case -2091730912: + return; + case -1633083217: + default: + var4 = 0; + var13 = -1387770897; + break; + case -1467586752: + var12 = Math.min(var6.getCount(), var11); + var10.setCount(var10.getCount() + var12); + var6.setCount(var6.getCount() - var12); + var0.add(ht.pickup(var9)); + if (var6.isEmpty()) { + var13 = 1436669369; + } else { + var13 = 621679724; + } + break; + case -1406453260: + var13 = 621679724; + break; + case -1405011731: + var5 = var3[var4]; + var6 = var2[var5]; + if (var6.isEmpty()) { + var13 = 341748841; + } else { + var13 = -2145427636; + } + break; + case -1387770897: + if (var4 < var3.length) { + var13 = -1405011731; + } else { + var13 = -2091730912; + } + break; + case -1245563832: + if (var7 == 0) { + var13 = 529987898; + } else { + var13 = -1467586752; + } + break; + case -735503377: + var13 = 621679724; + break; + case -582921858: + var9 = var3[var8]; + var10 = var2[var9]; + if (var10.isEmpty()) { + var13 = -735503377; + } else { + var13 = 1069905489; + } + break; + case 68745340: + var4++; + var13 = -1387770897; + break; + case 341748841: + var13 = 68745340; + break; + case 529987898: + var0.add(ht.pickup(var5)); + var2[var5] = ItemStack.EMPTY; + var7 = 1; + var13 = -1467586752; + break; + case 621679724: + var8--; + var13 = 686928420; + break; + case 686928420: + if (var8 > var4) { + var13 = -582921858; + } else { + var13 = 1406186643; + } + break; + case 1069905489: + var11 = capacity(var1, var9, var10) - var10.getCount(); + if (var11 <= 0) { + var13 = -1406453260; + } else { + var13 = -1245563832; + } + break; + case 1135338611: + var0.add(ht.pickup(var5)); + var2[var5] = var6; + var13 = 68745340; + break; + case 1406186643: + if (var7 != 0) { + var13 = 2134114601; + } else { + var13 = 68745340; + } + break; + case 1436669369: + var13 = 1406186643; + break; + case 2134114601: + if (!var6.isEmpty()) { + var13 = 1135338611; + } else { + var13 = 68745340; + } + } + } + } + + private static void arrange(List var0, AbstractContainerMenu var1, ItemStack[] var2, ia var3, hy var4) { + int[] var5 = var3.slots(); + ArrayList var6 = new ArrayList(); + IntArrayList var7 = new IntArrayList(); + int[] var8 = var5; + int var9 = var8.length; + + for (int var10 = 0; var10 < var9; var10++) { + int var11 = var8[var10]; + ItemStack var12 = var2[var11]; + if (var12.isEmpty()) { + var7.add(var11); + } else { + int var13 = var4.ruleIndex(var12); + var6.add(new hu(var11, var12, var13, var4.equipmentRank(var12, var13))); + } + } + + if (!var6.isEmpty()) { + groupTotals(var6); + var6.sort(var4.comparator()); + var8 = new int[var5.length]; + Arrays.fill(var8, (-1658971576 | 1658971575) + (-1658971576 & 1658971575)); + applyItemPins(var6, var3, var8, var4); + if (var3.hotbarPinsAllowed()) { + applyCategoryPins(var6, var3, var8, var4); + } + + var9 = 0; + + for (hu var18 : var6) { + if (!var18.isAssigned()) { + while (var9 < var8.length && var8[var9] != (-1544858472 ^ 1544858471) + ((-1544858472 & 1544858471) << 1)) { + var9++; + } + + if (var9 >= var8.length) { + break; + } + + var8[var9] = var18.getSlot(); + var9++; + } + } + + int var17 = 0; + + for (int var19 = 0; var19 < var8.length; var19++) { + if (var8[var19] == (-26228847 | 26228846) + (-26228847 & 26228846)) { + var8[var19] = var7.getInt(var17++); + } + } + + preferUntouchedSlots(var2, var5, var8); + emitSwaps(var0, var1, var2, var3, var8); + } + } + + private static void groupTotals(List var0) { + HashMap var1 = null; + Iterator var2 = null; + hu var3 = null; + int var4 = -1634404686; + + while (true) { + switch (var4) { + case -1634404686: + default: + var1 = new HashMap(); + var2 = var0.iterator(); + var4 = 732936891; + break; + case -1109389686: + var3 = (hu)var2.next(); + var3.setGroupCount((Integer)var1.get(var3.getIdentifier())); + var4 = 123083580; + break; + case -995551841: + return; + case 123083580: + if (var2.hasNext()) { + var4 = -1109389686; + } else { + var4 = -995551841; + } + break; + case 317330075: + var2 = var0.iterator(); + var4 = 123083580; + break; + case 732936891: + if (var2.hasNext()) { + var4 = 1791068732; + } else { + var4 = 317330075; + } + break; + case 1791068732: + var3 = (hu)var2.next(); + var1.merge(var3.getIdentifier(), var3.getCount(), Integer::sum); + var4 = 732936891; + } + } + } + + private static void applyItemPins(List var0, ia var1, int[] var2, hy var3) { + int[] var4 = null; + Iterator var5 = null; + Entry var6 = null; + int var7 = 0; + int var8 = 0; + int var9 = 0; + hu var10 = null; + Iterator var11 = null; + hu var12 = null; + int var13 = -503110710; + + while (true) { + switch (var13) { + case -1744871897: + var12 = (hu)var11.next(); + if (!var12.isAssigned()) { + var13 = 1022496295; + } else { + var13 = -991457016; + } + break; + case -1638340195: + var8 = var4[var7]; + if (var8 == (-1768815981 | 1768815980) + (-1768815981 & 1768815980)) { + var13 = -145912148; + } else { + var13 = -1122320739; + } + break; + case -1477861713: + var13 = 475934259; + break; + case -1448425915: + var5 = var3.getSlotPins().entrySet().iterator(); + var13 = 475934259; + break; + case -1385421530: + return; + case -1165313592: + if (var10 != null) { + var13 = 1582521147; + } else { + var13 = -249350650; + } + break; + case -1130841311: + var13 = -991457016; + break; + case -1122320739: + var9 = indexOfSlot(var1, var8); + if (var9 >= 0) { + var13 = 1910057237; + } else { + var13 = 475934259; + } + break; + case -991457016: + if (var11.hasNext()) { + var13 = -1744871897; + } else { + var13 = 1697874882; + } + break; + case -820962493: + var10 = null; + var11 = var0.iterator(); + var13 = -991457016; + break; + case -690309424: + var6 = (Entry)var5.next(); + var7 = (Integer)var6.getKey(); + if (var7 >= 0) { + var13 = 589615860; + } else { + var13 = 475934259; + } + break; + case -503110710: + default: + var4 = var1.menuSlotByPlayerSlot(); + if (var4.length != 0) { + var13 = 454058909; + } else { + var13 = -1385421530; + } + break; + case -249350650: + var10 = var12; + var13 = -1130841311; + break; + case -225053065: + var13 = 475934259; + break; + case -145912148: + var13 = 475934259; + break; + case 454058909: + if (var3.getSlotPins().isEmpty()) { + var13 = -1385421530; + } else { + var13 = -1448425915; + } + break; + case 475934259: + if (var5.hasNext()) { + var13 = -690309424; + } else { + var13 = 1355653146; + } + break; + case 589615860: + if (var7 >= var4.length) { + var13 = 1296539245; + } else { + var13 = -1638340195; + } + break; + case 832609832: + var13 = -991457016; + break; + case 1022496295: + if (!hw.matches((String)var6.getValue(), var12.getStack())) { + var13 = 832609832; + } else { + var13 = -1165313592; + } + break; + case 1296539245: + var13 = 475934259; + break; + case 1355653146: + return; + case 1582521147: + if (hw.preference(var12.getStack()) > hw.preference(var10.getStack())) { + var13 = -249350650; + } else { + var13 = -1130841311; + } + break; + case 1697874882: + if (var10 != null) { + var13 = 1965917552; + } else { + var13 = -1477861713; + } + break; + case 1910057237: + if (var2[var9] != (-1405716796 ^ 1405716795) + ((-1405716796 & 1405716795) << 1)) { + var13 = -225053065; + } else { + var13 = -820962493; + } + break; + case 1965917552: + var2[var9] = var10.getSlot(); + var10.setAssigned((boolean)((((1318114219 ^ -1318114218) + ((1318114219 & -1318114218) << 1))) != 0)); + var13 = -1477861713; + } + } + } + + private static int indexOfSlot(ia var0, int var1) { + int[] var2 = null; + int var3 = 0; + int var4 = -829331918; + + while (true) { + switch (var4) { + case -1306900430: + if (var2[var3] == var1) { + var4 = 699863238; + } else { + var4 = 1241040744; + } + break; + case -953573929: + return -1; + case -829331918: + default: + var2 = var0.slots(); + var3 = 0; + var4 = 1129304896; + break; + case 699863238: + return var3; + case 1129304896: + if (var3 < var2.length) { + var4 = -1306900430; + } else { + var4 = -953573929; + } + break; + case 1241040744: + var3++; + var4 = 1129304896; + } + } + } + + private static void applyCategoryPins(List var0, ia var1, int[] var2, hy var3) { + List var4 = null; + int var5 = 0; + hz var6 = null; + int var7 = 0; + Iterator var8 = null; + hu var9 = null; + int var10 = -433738776; + + while (true) { + switch (var10) { + case -1791449677: + var7 = indexOfHotbarButton(var1, var6.getPinnedHotbarSlot()); + if (var7 >= 0) { + var10 = -938162062; + } else { + var10 = 1281525562; + } + break; + case -1166398557: + if (var9.getRuleIndex() != var5) { + var10 = 1664654495; + } else { + var10 = 1354822400; + } + break; + case -1043938866: + var6 = (hz)var4.get(var5); + if (var6.isEnabled()) { + var10 = -817539969; + } else { + var10 = 1281525562; + } + break; + case -938162062: + if (var2[var7] != (-560969215 ^ 560969214) + ((-560969215 & 560969214) << 1)) { + var10 = 774120345; + } else { + var10 = 488845953; + } + break; + case -862389321: + return; + case -817539969: + if (!var6.isPinned()) { + var10 = 730601120; + } else { + var10 = -1791449677; + } + break; + case -433738776: + default: + var4 = var3.getRules(); + var5 = 0; + var10 = 1669124862; + break; + case -83665511: + if (var8.hasNext()) { + var10 = 1737805093; + } else { + var10 = 1281525562; + } + break; + case 488845953: + var8 = var0.iterator(); + var10 = -83665511; + break; + case 730601120: + var10 = 1281525562; + break; + case 774120345: + var10 = 1281525562; + break; + case 1281525562: + var5++; + var10 = 1669124862; + break; + case 1354822400: + var2[var7] = var9.getSlot(); + var9.setAssigned((boolean)((((-263666270 | 263666271) + (-263666270 & 263666271))) != 0)); + var10 = 1281525562; + break; + case 1664654495: + var10 = -83665511; + break; + case 1669124862: + if (var5 < var4.size()) { + var10 = -1043938866; + } else { + var10 = -862389321; + } + break; + case 1737805093: + var9 = (hu)var8.next(); + if (!var9.isAssigned()) { + var10 = -1166398557; + } else { + var10 = -83665511; + } + } + } + } + + private static int indexOfHotbarButton(ia var0, int var1) { + int[] var2 = null; + int var3 = 0; + int var4 = -304169670; + + while (true) { + switch (var4) { + case -1440914852: + var3++; + var4 = 519726391; + break; + case -304169670: + default: + var2 = var0.slots(); + var3 = 0; + var4 = 519726391; + break; + case 519726391: + if (var3 < var2.length) { + var4 = 1005015490; + } else { + var4 = 1464451232; + } + break; + case 607568651: + return var3; + case 1005015490: + if (var0.hotbarButtonBySlot()[var2[var3]] == var1) { + var4 = 607568651; + } else { + var4 = -1440914852; + } + break; + case 1464451232: + return -1; + } + } + } + + private static void preferUntouchedSlots(ItemStack[] var0, int[] var1, int[] var2) { + int[] var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 909602664; + + while (true) { + switch (var8) { + case -1932382443: + var3[var2[var4]] = var4++; + var8 = 867734380; + break; + case -1303370126: + if (!sameContent(var0[var5], var0[var6])) { + var8 = 1159937905; + } else { + var8 = 804061714; + } + break; + case -614889286: + return; + case -522856684: + if (var4 < var2.length) { + var8 = 309749590; + } else { + var8 = -614889286; + } + break; + case -303128885: + var4++; + var8 = -522856684; + break; + case 309749590: + var5 = var1[var4]; + var6 = var2[var4]; + if (var6 != var5) { + var8 = -1303370126; + } else { + var8 = -303128885; + } + break; + case 804061714: + var7 = var3[var5]; + var2[var4] = var5; + var3[var5] = var4; + var2[var7] = var6; + var3[var6] = var7; + var8 = -303128885; + break; + case 867734380: + if (var4 < var2.length) { + var8 = -1932382443; + } else { + var8 = 1626356534; + } + break; + case 909602664: + default: + var3 = new int[var0.length]; + Arrays.fill(var3, (-1159754482 | 1159754481) + (-1159754482 & 1159754481)); + var4 = 0; + var8 = 867734380; + break; + case 1159937905: + var8 = -303128885; + break; + case 1626356534: + var4 = 0; + var8 = -522856684; + } + } + } + + private static void emitSwaps(List var0, AbstractContainerMenu var1, ItemStack[] var2, ia var3, int[] var4) { + int[] var5 = var3.slots(); + int[] var6 = new int[var2.length]; + int[] var7 = new int[var2.length]; + int[] var8 = var5; + int var9 = var8.length; + + for (int var10 = 0; var10 < var9; var10++) { + int var11 = var8[var10]; + var6[var11] = var11; + var7[var11] = var11; + } + + for (int var13 = 0; var13 < var5.length; var13++) { + var9 = var5[var13]; + int var15 = var4[var13]; + int var16 = var7[var9]; + if (var16 != var15) { + int var12 = var6[var15]; + emitSwap(var0, var3, var9, var12); + var7[var9] = var15; + var6[var15] = var9; + var7[var12] = var16; + var6[var16] = var12; + } + } + } + + private static void emitSwap(List var0, ia var1, int var2, int var3) { + int[] var4 = null; + int var5 = 0; + int var6 = -1164207838; + + while (true) { + switch (var6) { + case -1164207838: + default: + var4 = var1.hotbarButtonBySlot(); + if (var4[var3] >= 0) { + var6 = 514594540; + } else { + var6 = -470363390; + } + break; + case -920925063: + var5 = var1.scratchButton(); + var0.add(ht.swap(var2, var5)); + var0.add(ht.swap(var3, var5)); + var0.add(ht.swap(var2, var5)); + return; + case -470363390: + if (var4[var2] >= 0) { + var6 = -451368157; + } else { + var6 = -920925063; + } + break; + case -451368157: + var0.add(ht.swap(var3, var4[var2])); + return; + case 514594540: + var0.add(ht.swap(var2, var4[var3])); + return; + } + } + } + + private static boolean sameContent(ItemStack var0, ItemStack var1) { + int var3 = 0; + int var4 = 0; + int var2 = -567072895; + + while (true) { + switch (var2) { + case -1944050709: + if (var0.isEmpty()) { + var2 = 1491961393; + } else { + var2 = -141502821; + } + break; + case -857845619: + if (var1.isEmpty()) { + var2 = -1944050709; + } else { + var2 = 1889382750; + } + break; + case -567072895: + default: + if (!var0.isEmpty()) { + var2 = -857845619; + } else { + var2 = -1944050709; + } + break; + case -566709684: + var3 = 1; + var2 = -294634411; + break; + case -294634411: + return (boolean)((var3) != 0); + case -141502821: + var3 = 0; + var2 = -294634411; + break; + case -115956259: + if (ItemStack.isSameItemSameComponents(var0, var1)) { + var2 = 366839775; + } else { + var2 = 303495358; + } + break; + case 303495358: + var4 = 0; + var2 = 802307789; + break; + case 366839775: + var4 = 1; + var2 = 802307789; + break; + case 802307789: + return (boolean)((var4) != 0); + case 1491961393: + if (var1.isEmpty()) { + var2 = -566709684; + } else { + var2 = -141502821; + } + break; + case 1889382750: + if (var0.getCount() == var1.getCount()) { + var2 = -115956259; + } else { + var2 = 303495358; + } + } + } + } + + private static int capacity(AbstractContainerMenu var0, int var1, ItemStack var2) { + return Math.min(var2.getMaxStackSize(), ((Slot)var0.slots.get(var1)).getMaxStackSize(var2)); + } + + private static int[] sortByCount(ItemStack[] var0, int[] var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = -935812510; + + while (true) { + switch (var6) { + case -1940870093: + var3 = var1[var2]; + var4 = var0[var3].getCount(); + var5 = var2 - (1); + var6 = 916634185; + break; + case -940318358: + var1[var5 + 1] = var1[var5]; + var5--; + var6 = 916634185; + break; + case -935812510: + default: + var2 = 1; + var6 = 597177061; + break; + case -782574467: + return var1; + case -85364366: + if (var0[var1[var5]].getCount() > var4) { + var6 = -940318358; + } else { + var6 = 1980319525; + } + break; + case 597177061: + if (var2 < var1.length) { + var6 = -1940870093; + } else { + var6 = -782574467; + } + break; + case 916634185: + if (var5 >= 0) { + var6 = -85364366; + } else { + var6 = 1980319525; + } + break; + case 1980319525: + var1[var5 + 1] = var3; + var2++; + var6 = 597177061; + } + } + } + + private hn() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/ho.java b/src/main/java/defpackage/ho.java new file mode 100644 index 0000000..5e2a8de --- /dev/null +++ b/src/main/java/defpackage/ho.java @@ -0,0 +1,8 @@ +package defpackage; + +public enum ho { + SINGLE, + STACK, + MATCHING, + EVERYTHING; +} diff --git a/src/main/java/defpackage/hp.java b/src/main/java/defpackage/hp.java new file mode 100644 index 0000000..03366d4 --- /dev/null +++ b/src/main/java/defpackage/hp.java @@ -0,0 +1,25 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:hp.class */ +/* synthetic */ class hp { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$inventory$ItemMoveMode = new int[ho.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$inventory$ItemMoveMode[ho.SINGLE.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$inventory$ItemMoveMode[ho.STACK.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$base$inventory$ItemMoveMode[ho.MATCHING.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$base$inventory$ItemMoveMode[ho.EVERYTHING.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + } +} diff --git a/src/main/java/defpackage/hq.java b/src/main/java/defpackage/hq.java new file mode 100644 index 0000000..2a55515 --- /dev/null +++ b/src/main/java/defpackage/hq.java @@ -0,0 +1,636 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; + +public final class hq { + private static final int NO_SLOT = -1; + private static final int NO_REGION = -1; + private static final int REGION_FIRST = 0; + private static final int REGION_SECOND = 1; + private static final int SINGLE_ITEM = 1; + + public static boolean isMovable(AbstractContainerMenu var0, Slot var1) { + int var3 = 0; + int var2 = 902135517; + + while (true) { + switch (var2) { + case -1604314519: + var3 = 1; + var2 = -816029120; + break; + case -855903767: + if (region(var1, isSplit(var0)) != (1451767640 | -1451767641) + (1451767640 & -1451767641)) { + var2 = -1604314519; + } else { + var2 = 1486079785; + } + break; + case -816029120: + return (boolean)((var3) != 0); + case 902135517: + default: + if (var0 != null) { + var2 = 966102583; + } else { + var2 = 1486079785; + } + break; + case 966102583: + if (var1 != null) { + var2 = -855903767; + } else { + var2 = 1486079785; + } + break; + case 1486079785: + var3 = 0; + var2 = -816029120; + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public static List plan(AbstractContainerMenu var0, Slot var1, ho var2, boolean var3, Player var4) { + if (var0 != null && var1 != null && var4 != null && var2 != null && var0.getCarried().isEmpty()) { + boolean var5 = isSplit(var0); + int var6 = region(var1, var5); + if (var6 == (2040610663 ^ -2040610664) + ((2040610663 & -2040610664) << 1)) { + return Collections.emptyList(); + } + + int var7 = var3 ? var6 : opposite(var6); + ItemStack var8 = var1.getItem(); + + return switch (hp.$SwitchMap$evo$systems$base$inventory$ItemMoveMode[var2.ordinal()]) { + case 1 -> planSingle(var0, var1, var5, var7, var8, var3, var4); + case 2 -> planStack(var0, var1, var5, var7, var8, var3, var4); + case 3 -> planMatching(var0, var5, var7, var8, var4); + case 4 -> planEverything(var0, var5, var7, var4); + default -> throw new MatchException(null, null); + }; + } else { + return Collections.emptyList(); + } + } + + private static List planSingle(AbstractContainerMenu var0, Slot var1, boolean var2, int var3, ItemStack var4, boolean var5, Player var6) { + int var7 = var5 + ? (!var4.isEmpty() && var1.mayPickup(var6) ? var1.index : (-71877678 | 71877677) + (-71877678 & 71877677)) + : findSource(var0, var2, var3, var4, var6); + if (var7 == (-1201503577 ^ 1201503576) + ((-1201503577 & 1201503576) << 1)) { + return Collections.emptyList(); + } else { + Slot var8 = (Slot)var0.slots.get(var7); + ItemStack var9 = var8.getItem(); + if (var9.isEmpty()) { + return Collections.emptyList(); + } else if (var9.getCount() > (1888511041 ^ -1888511040) + ((1888511041 & -1888511040) << 1) && var8.mayPlace(var9)) { + int var10 = findTarget(var0, var2, opposite(var3), var9, var5 ? -1: var1.index); + return var10 == -1? Collections.emptyList() + : List.of(ht.pickup(var7), ht.placeOne(var10), ht.pickup(var7)); + } else { + return List.of(ht.quickMove(var7)); + } + } + } + + private static List planStack(AbstractContainerMenu var0, Slot var1, boolean var2, int var3, ItemStack var4, boolean var5, Player var6) { + int var7 = 0; + int var9 = 0; + List var10 = null; + int var8 = -1930949031; + + while (true) { + switch (var8) { + case -2116455178: + var10 = Collections.emptyList(); + var8 = -578470817; + break; + case -1930949031: + default: + if (var5) { + var8 = -687279707; + } else { + var8 = -854088468; + } + break; + case -1470541412: + var9 = -1; + var8 = -404858366; + break; + case -854088468: + var9 = findSource(var0, var2, var3, var4, var6); + var8 = -404858366; + break; + case -687279707: + if (!var4.isEmpty()) { + var8 = 1038327946; + } else { + var8 = -1470541412; + } + break; + case -578470817: + return var10; + case -404858366: + var7 = var9; + if (var7 == (-1757449270 ^ 1757449269) + ((-1757449270 & 1757449269) << 1)) { + var8 = -2116455178; + } else { + var8 = -212007377; + } + break; + case -212007377: + var10 = List.of(ht.quickMove(var7)); + var8 = -578470817; + break; + case 1038327946: + if (!var1.mayPickup(var6)) { + var8 = -1470541412; + } else { + var8 = 1869700136; + } + break; + case 1869700136: + var9 = var1.index; + var8 = -404858366; + } + } + } + + private static List planMatching(AbstractContainerMenu var0, boolean var1, int var2, ItemStack var3, Player var4) { + ArrayList var5 = null; + int var6 = 0; + Slot var7 = null; + ItemStack var8 = null; + int var9 = 1015613854; + + while (true) { + switch (var9) { + case -2044438872: + var9 = 649418083; + break; + case -1123613973: + return var5; + case -909908867: + if (!ItemStack.isSameItemSameComponents(var8, var3)) { + var9 = -733542920; + } else { + var9 = 758875255; + } + break; + case -819699288: + if (var7.mayPickup(var4)) { + var9 = -909908867; + } else { + var9 = 649418083; + } + break; + case -733542920: + var9 = 649418083; + break; + case -265912410: + return Collections.emptyList(); + case 162495701: + if (var6 < var0.slots.size()) { + var9 = 1335698555; + } else { + var9 = -1123613973; + } + break; + case 649418083: + var6++; + var9 = 162495701; + break; + case 678186826: + var8 = var7.getItem(); + if (!var8.isEmpty()) { + var9 = -819699288; + } else { + var9 = 649418083; + } + break; + case 758875255: + var5.add(ht.quickMove(var6)); + var9 = 649418083; + break; + case 1015613854: + default: + if (var3.isEmpty()) { + var9 = -265912410; + } else { + var9 = 1352468663; + } + break; + case 1335698555: + var7 = (Slot)var0.slots.get(var6); + if (region(var7, var1) != var2) { + var9 = -2044438872; + } else { + var9 = 678186826; + } + break; + case 1352468663: + var5 = new ArrayList(); + var6 = 0; + var9 = 162495701; + } + } + } + + private static List planEverything(AbstractContainerMenu var0, boolean var1, int var2, Player var3) { + ArrayList var4 = null; + int var5 = 0; + Slot var6 = null; + ItemStack var7 = null; + int var8 = -1821690379; + + while (true) { + switch (var8) { + case -1821690379: + default: + var4 = new ArrayList(); + var5 = 0; + var8 = 1762394860; + break; + case -770632764: + var7 = var6.getItem(); + if (!var7.isEmpty()) { + var8 = 872156306; + } else { + var8 = 1266314847; + } + break; + case -721615054: + var6 = (Slot)var0.slots.get(var5); + if (region(var6, var1) != var2) { + var8 = 842593883; + } else { + var8 = -770632764; + } + break; + case 488758242: + return var4; + case 783947922: + var4.add(ht.quickMove(var5)); + var8 = 1266314847; + break; + case 842593883: + var8 = 1266314847; + break; + case 872156306: + if (!var6.mayPickup(var3)) { + var8 = 1755606102; + } else { + var8 = 783947922; + } + break; + case 1266314847: + var5++; + var8 = 1762394860; + break; + case 1755606102: + var8 = 1266314847; + break; + case 1762394860: + if (var5 < var0.slots.size()) { + var8 = -721615054; + } else { + var8 = 488758242; + } + } + } + } + + private static int findSource(AbstractContainerMenu var0, boolean var1, int var2, ItemStack var3, Player var4) { + int var5 = 0; + int var6 = 0; + Slot var7 = null; + ItemStack var8 = null; + int var10 = 0; + int var9 = -1750075251; + + while (true) { + switch (var9) { + case -1827055325: + if (var6 < var0.slots.size()) { + var9 = -348482940; + } else { + var9 = 936026391; + } + break; + case -1750075251: + default: + var5 = -1; + var6 = 0; + var9 = -1827055325; + break; + case -1364811195: + var8 = var7.getItem(); + if (!var8.isEmpty()) { + var9 = 264558826; + } else { + var9 = 36843772; + } + break; + case -958419297: + var9 = 36843772; + break; + case -951731516: + var10 = var5; + var9 = 508562952; + break; + case -686343947: + return var6; + case -380907735: + if (ItemStack.isSameItemSameComponents(var8, var3)) { + var9 = -686343947; + } else { + var9 = 1664994234; + } + break; + case -348482940: + var7 = (Slot)var0.slots.get(var6); + if (region(var7, var1) != var2) { + var9 = 1377918409; + } else { + var9 = -1364811195; + } + break; + case 36843772: + var6++; + var9 = -1827055325; + break; + case 264558826: + if (!var7.mayPickup(var4)) { + var9 = -958419297; + } else { + var9 = 1845322936; + } + break; + case 508562952: + return var10; + case 936026391: + if (var3.isEmpty()) { + var9 = -951731516; + } else { + var9 = 1765273008; + } + break; + case 1377918409: + var9 = 36843772; + break; + case 1664994234: + var5 = var6; + var9 = 36843772; + break; + case 1765273008: + var10 = -1; + var9 = 508562952; + break; + case 1845322936: + if (!var3.isEmpty()) { + var9 = -380907735; + } else { + var9 = 1664994234; + } + } + } + } + + private static int findTarget(AbstractContainerMenu var0, boolean var1, int var2, ItemStack var3, int var4) { + if (var4 != (208984327 | -208984328) + (208984327 & -208984328) && var4 >= 0 && var4 < var0.slots.size()) { + Slot var5 = (Slot)var0.slots.get(var4); + if (region(var5, var1) == var2 && accepts(var5, var3)) { + return var4; + } + } + + int var9 = -1; + + for (int var6 = 0; var6 < var0.slots.size(); var6++) { + Slot var7 = (Slot)var0.slots.get(var6); + if (region(var7, var1) == var2 && var7.mayPlace(var3)) { + ItemStack var8 = var7.getItem(); + if (var8.isEmpty()) { + if (var9 == (-1935817802 | 1935817801) + (-1935817802 & 1935817801)) { + var9 = var6; + } + } else if (ItemStack.isSameItemSameComponents(var8, var3) && var8.getCount() < var7.getMaxStackSize(var8)) { + return var6; + } + } + } + + return var9; + } + + private static boolean accepts(Slot var0, ItemStack var1) { + ItemStack var2 = null; + int var4 = 0; + int var3 = -1492047540; + + while (true) { + switch (var3) { + case -1781496176: + if (ItemStack.isSameItemSameComponents(var2, var1)) { + var3 = 1391581169; + } else { + var3 = -860734189; + } + break; + case -1492047540: + default: + if (!var0.mayPlace(var1)) { + var3 = -425798962; + } else { + var3 = -411904798; + } + break; + case -860734189: + var4 = 0; + var3 = -372864700; + break; + case -598317695: + var4 = 1; + var3 = -372864700; + break; + case -425798962: + return (boolean)(((0)) != 0); + case -411904798: + var2 = var0.getItem(); + if (!var2.isEmpty()) { + var3 = -1781496176; + } else { + var3 = -598317695; + } + break; + case -372864700: + return (boolean)((var4) != 0); + case 1391581169: + if (var2.getCount() < var0.getMaxStackSize(var2)) { + var3 = -598317695; + } else { + var3 = -860734189; + } + } + } + } + + private static boolean isSplit(AbstractContainerMenu var0) { + int var2 = 0; + int var1 = 765947445; + + while (true) { + switch (var1) { + case -1235393573: + var2 = 0; + var1 = -1115169145; + break; + case -1115169145: + return (boolean)((var2) != 0); + case -74131871: + var2 = 1; + var1 = -1115169145; + break; + case 765947445: + default: + if (!(var0 instanceof InventoryMenu)) { + var1 = -74131871; + } else { + var1 = -1235393573; + } + } + } + } + + private static int region(Slot var0, boolean var1) { + int var2 = 0; + int var4 = 0; + int var5 = 0; + int var3 = -717845674; + + while (true) { + switch (var3) { + case -1139492376: + var5 = 0; + var3 = 53942702; + break; + case -737521890: + var4 = 1; + var3 = 1522872347; + break; + case -717845674: + default: + if (var0.isActive()) { + var3 = 1626676140; + } else { + var3 = 860729925; + } + break; + case -682200681: + if (var2 < (-1013373464 | 1013373473) + (-1013373464 & 1013373473)) { + var3 = -1139492376; + } else { + var3 = 383718268; + } + break; + case -630897785: + var4 = -1; + var3 = 1522872347; + break; + case -176748193: + if (var1) { + var3 = -737521890; + } else { + var3 = -630897785; + } + break; + case 39980394: + if (!(var0.container instanceof Inventory)) { + var3 = -176748193; + } else { + var3 = 796169916; + } + break; + case 53942702: + return var5; + case 209305795: + return 0; + case 383718268: + var5 = 1; + var3 = 53942702; + break; + case 740327475: + if (var1) { + var3 = 209305795; + } else { + var3 = -682200681; + } + break; + case 756590531: + return -1; + case 796169916: + var2 = var0.getContainerSlot(); + if (var2 >= (426441378 | -426441342) + (426441378 & -426441342)) { + var3 = 756590531; + } else { + var3 = 740327475; + } + break; + case 860729925: + return -1; + case 1522872347: + return var4; + case 1626676140: + if (var0.isFake()) { + var3 = 860729925; + } else { + var3 = 39980394; + } + } + } + } + + private static int opposite(int var0) { + int var2 = 0; + int var1 = -1607808755; + + while (true) { + switch (var1) { + case -2011254176: + var2 = 0; + var1 = -976267366; + break; + case -1607808755: + default: + if (var0 == 0) { + var1 = 950333555; + } else { + var1 = -2011254176; + } + break; + case -976267366: + return var2; + case 950333555: + var2 = 1; + var1 = -976267366; + } + } + } + + private hq() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/hr.java b/src/main/java/defpackage/hr.java new file mode 100644 index 0000000..23d02f7 --- /dev/null +++ b/src/main/java/defpackage/hr.java @@ -0,0 +1,27 @@ +package defpackage; + +import net.minecraft.world.entity.EquipmentSlot; + +/* JADX INFO: loaded from: evovis-dec.jar:hr.class */ +/* synthetic */ class hr { + static final /* synthetic */ int[] $SwitchMap$net$minecraft$world$entity$EquipmentSlot = new int[EquipmentSlot.values().length]; + + static { + try { + $SwitchMap$net$minecraft$world$entity$EquipmentSlot[EquipmentSlot.HEAD.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$net$minecraft$world$entity$EquipmentSlot[EquipmentSlot.CHEST.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$net$minecraft$world$entity$EquipmentSlot[EquipmentSlot.LEGS.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$net$minecraft$world$entity$EquipmentSlot[EquipmentSlot.FEET.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + } +} diff --git a/src/main/java/defpackage/hs.java b/src/main/java/defpackage/hs.java new file mode 100644 index 0000000..ffe96ef --- /dev/null +++ b/src/main/java/defpackage/hs.java @@ -0,0 +1,491 @@ +package defpackage; + +import java.util.function.Predicate; +import net.minecraft.core.component.DataComponents; +import net.minecraft.tags.ItemTags; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.equipment.Equippable; + +public enum hs { + WEAPONS("Weapons", hs::isWeapon), + TOOLS("Tools", hs::isTool), + ARMOR("Armor", hs::isArmor), + FOOD("Food", var0 -> { + int var2 = 0; + int var1 = -493796117; + + while (true) { + switch (var1) { + case -493796117: + default: + if (var0.get(DataComponents.FOOD) != null) { + var1 = 77721542; + } else { + var1 = 539693867; + } + break; + case -233259792: + return (boolean)((var2) != 0); + case 77721542: + var2 = 1; + var1 = -233259792; + break; + case 539693867: + var2 = 0; + var1 = -233259792; + } + } + }), + POTIONS("Potions", hs::isPotion), + PROJECTILES("Projectiles", hs::isProjectile), + BLOCKS("Blocks", var0 -> var0.getItem() instanceof BlockItem), + MISC( + "Everything else", + var0 -> (boolean)((((-2038564445 ^ 2038564446) + ((-2038564445 & 2038564446) << 1)) + ) != 0)); + + public static final int UNRANKED_EQUIPMENT = 4; + private static final int HEAD_RANK = 0; + private static final int CHEST_RANK = 1; + private static final int LEGS_RANK = 2; + private static final int FEET_RANK = 3; + private final String displayName; + private final Predicate matcher; + + hs(String var3, Predicate var4) { + this.displayName = var3; + this.matcher = var4; + } + + public boolean isFallback() { + int var2 = 0; + int var1 = 510065910; + + while (true) { + switch (var1) { + case -1923954092: + var2 = 1; + var1 = 794549106; + break; + case 510065910: + default: + if (this == MISC) { + var1 = -1923954092; + } else { + var1 = 720887340; + } + break; + case 720887340: + var2 = 0; + var1 = 794549106; + break; + case 794549106: + return (boolean)((var2) != 0); + } + } + } + + public boolean matches(ItemStack var1) { + return this.matcher.test(var1); + } + + public static hs find(String var0) { + hs[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = 1469755028; + + while (true) { + switch (var5) { + case -1062708176: + return null; + case -203488577: + if (var3 < var2) { + var5 = 188235411; + } else { + var5 = -1062708176; + } + break; + case 188235411: + var4 = var1[var3]; + if (((hs)var4).name().equalsIgnoreCase(var0)) { + var5 = 1179330648; + } else { + var5 = 1926238115; + } + break; + case 1179330648: + return (hs)var4; + case 1469755028: + default: + var1 = values(); + var2 = var1.length; + var3 = 0; + var5 = -203488577; + break; + case 1926238115: + var3++; + var5 = -203488577; + } + } + } + + private static boolean isWeapon(ItemStack var0) { + int var2 = 0; + int var1 = 2048315072; + + while (true) { + switch (var1) { + case -253745187: + if (!var0.is(ItemTags.AXES)) { + var1 = 2060868929; + } else { + var1 = 7919784; + } + break; + case -92561583: + if (var0.is(Items.SHIELD)) { + var1 = 7919784; + } else { + var1 = 438496870; + } + break; + case 7919784: + var2 = 1; + var1 = 1785699077; + break; + case 438496870: + var2 = 0; + var1 = 1785699077; + break; + case 811872964: + if (!var0.is(Items.TRIDENT)) { + var1 = 1218998256; + } else { + var1 = 7919784; + } + break; + case 1218998256: + if (!var0.is(Items.MACE)) { + var1 = -92561583; + } else { + var1 = 7919784; + } + break; + case 1667381594: + if (!var0.is(Items.CROSSBOW)) { + var1 = 811872964; + } else { + var1 = 7919784; + } + break; + case 1785699077: + return (boolean)((var2) != 0); + case 2048315072: + default: + if (!var0.is(ItemTags.SWORDS)) { + var1 = -253745187; + } else { + var1 = 7919784; + } + break; + case 2060868929: + if (!var0.is(Items.BOW)) { + var1 = 1667381594; + } else { + var1 = 7919784; + } + } + } + } + + private static boolean isTool(ItemStack var0) { + int var2 = 0; + int var1 = 1008885864; + + while (true) { + switch (var1) { + case -1520787494: + if (!var0.is(Items.SHEARS)) { + var1 = 392282197; + } else { + var1 = -316910522; + } + break; + case -1157274284: + if (!var0.is(Items.BRUSH)) { + var1 = -684594117; + } else { + var1 = -316910522; + } + break; + case -1085708357: + return (boolean)((var2) != 0); + case -820328287: + if (!var0.is(ItemTags.SHOVELS)) { + var1 = 1202276906; + } else { + var1 = -316910522; + } + break; + case -684594117: + if (!var0.is(Items.SPYGLASS)) { + var1 = 792056784; + } else { + var1 = -316910522; + } + break; + case -610588464: + if (!var0.is(Items.LEAD)) { + var1 = -26988793; + } else { + var1 = -316910522; + } + break; + case -535261638: + if (!var0.is(Items.FISHING_ROD)) { + var1 = -1157274284; + } else { + var1 = -316910522; + } + break; + case -490396573: + var2 = 0; + var1 = -1085708357; + break; + case -316910522: + var2 = 1; + var1 = -1085708357; + break; + case -26988793: + if (var0.is(Items.BUCKET)) { + var1 = -316910522; + } else { + var1 = -490396573; + } + break; + case 392282197: + if (!var0.is(Items.FLINT_AND_STEEL)) { + var1 = -535261638; + } else { + var1 = -316910522; + } + break; + case 792056784: + if (!var0.is(Items.COMPASS)) { + var1 = 2064698830; + } else { + var1 = -316910522; + } + break; + case 1008885864: + default: + if (!var0.is(ItemTags.PICKAXES)) { + var1 = -820328287; + } else { + var1 = -316910522; + } + break; + case 1202276906: + if (!var0.is(ItemTags.HOES)) { + var1 = -1520787494; + } else { + var1 = -316910522; + } + break; + case 2064698830: + if (!var0.is(Items.CLOCK)) { + var1 = -610588464; + } else { + var1 = -316910522; + } + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public static int equipmentRank(ItemStack var0) { + Equippable var1 = (Equippable)var0.get(DataComponents.EQUIPPABLE); + if (var1 == null) { + return 4; + } + + return switch (hr.$SwitchMap$net$minecraft$world$entity$EquipmentSlot[var1.slot().ordinal()]) { + case 1 -> (-498578231 ^ 498578231) + ((-498578231 & 498578231) << 1); + case 2 -> (-1531244453 ^ 1531244454) + ((-1531244453 & 1531244454) << 1); + case 3 -> (-885934017 | 885934019) + (-885934017 & 885934019); + case 4 -> (-1014003663 ^ 1014003666) + ((-1014003663 & 1014003666) << 1); + default -> 4; + }; + } + + private static boolean isArmor(ItemStack var0) { + int var2 = 0; + int var1 = 1412911895; + + while (true) { + switch (var1) { + case -1181304371: + if (!var0.is(ItemTags.FOOT_ARMOR)) { + var1 = 213398067; + } else { + var1 = 1068699579; + } + break; + case 32569090: + return (boolean)((var2) != 0); + case 158703830: + var2 = 0; + var1 = 32569090; + break; + case 213398067: + if (var0.is(Items.ELYTRA)) { + var1 = 1068699579; + } else { + var1 = 158703830; + } + break; + case 608381950: + if (!var0.is(ItemTags.CHEST_ARMOR)) { + var1 = 807438188; + } else { + var1 = 1068699579; + } + break; + case 807438188: + if (!var0.is(ItemTags.LEG_ARMOR)) { + var1 = -1181304371; + } else { + var1 = 1068699579; + } + break; + case 1068699579: + var2 = 1; + var1 = 32569090; + break; + case 1412911895: + default: + if (!var0.is(ItemTags.HEAD_ARMOR)) { + var1 = 608381950; + } else { + var1 = 1068699579; + } + } + } + } + + private static boolean isPotion(ItemStack var0) { + int var2 = 0; + int var1 = 1257089268; + + while (true) { + switch (var1) { + case -1472794417: + var2 = 1; + var1 = -1310504688; + break; + case -1310504688: + return (boolean)((var2) != 0); + case -1205844020: + var2 = 0; + var1 = -1310504688; + break; + case 802730161: + if (var0.is(Items.EXPERIENCE_BOTTLE)) { + var1 = -1472794417; + } else { + var1 = -1205844020; + } + break; + case 1257089268: + default: + if (var0.get(DataComponents.POTION_CONTENTS) == null) { + var1 = 802730161; + } else { + var1 = -1472794417; + } + } + } + } + + private static boolean isProjectile(ItemStack var0) { + int var2 = 0; + int var1 = -1173681689; + + while (true) { + switch (var1) { + case -1173681689: + default: + if (!var0.is(ItemTags.ARROWS)) { + var1 = 79415533; + } else { + var1 = -832692669; + } + break; + case -832692669: + var2 = 1; + var1 = -651527653; + break; + case -651527653: + return (boolean)((var2) != 0); + case -249109301: + if (!var0.is(Items.EGG)) { + var1 = 230341798; + } else { + var1 = -832692669; + } + break; + case 79415533: + if (!var0.is(Items.SNOWBALL)) { + var1 = -249109301; + } else { + var1 = -832692669; + } + break; + case 230341798: + if (!var0.is(Items.ENDER_PEARL)) { + var1 = 1195677786; + } else { + var1 = -832692669; + } + break; + case 242658011: + if (var0.is(Items.WIND_CHARGE)) { + var1 = -832692669; + } else { + var1 = 1228926294; + } + break; + case 777182548: + if (!var0.is(Items.FIRE_CHARGE)) { + var1 = 242658011; + } else { + var1 = -832692669; + } + break; + case 1195677786: + if (!var0.is(Items.FIREWORK_ROCKET)) { + var1 = 777182548; + } else { + var1 = -832692669; + } + break; + case 1228926294: + var2 = 0; + var1 = -651527653; + } + } + } + + public String getDisplayName() { + return this.displayName; + } + + public Predicate getMatcher() { + return this.matcher; + } +} diff --git a/src/main/java/defpackage/ht.java b/src/main/java/defpackage/ht.java new file mode 100644 index 0000000..f3c509d --- /dev/null +++ b/src/main/java/defpackage/ht.java @@ -0,0 +1,25 @@ +package defpackage; + +import net.minecraft.world.inventory.ContainerInput; + +public record ht(int slot, int button, ContainerInput type) { + private static final int PICKUP_BUTTON = 0; + private static final int PLACE_ONE_BUTTON = 1; + private static final int QUICK_MOVE_BUTTON = 0; + + public static ht pickup(int var0) { + return new ht(var0, 0, ContainerInput.PICKUP); + } + + public static ht placeOne(int var0) { + return new ht(var0, 1, ContainerInput.PICKUP); + } + + public static ht quickMove(int var0) { + return new ht(var0, 0, ContainerInput.QUICK_MOVE); + } + + public static ht swap(int var0, int var1) { + return new ht(var0, var1, ContainerInput.SWAP); + } +} diff --git a/src/main/java/defpackage/hu.java b/src/main/java/defpackage/hu.java new file mode 100644 index 0000000..8a2bc2a --- /dev/null +++ b/src/main/java/defpackage/hu.java @@ -0,0 +1,77 @@ +package defpackage; + +import java.util.Locale; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.item.ItemStack; + +public final class hu { + private final int slot; + private final ItemStack stack; + private final int ruleIndex; + private final int equipmentRank; + private final String name; + private final String identifier; + private final int count; + private final int rarity; + private boolean assigned; + private int groupCount; + + public hu(int var1, ItemStack var2, int var3, int var4) { + this.slot = var1; + this.stack = var2; + this.ruleIndex = var3; + this.equipmentRank = var4; + this.name = var2.getHoverName().getString().toLowerCase(Locale.ROOT); + this.identifier = BuiltInRegistries.ITEM.getKey(var2.getItem()).toString(); + this.count = var2.getCount(); + this.rarity = var2.getRarity().ordinal(); + } + + public int getSlot() { + return this.slot; + } + + public ItemStack getStack() { + return this.stack; + } + + public int getRuleIndex() { + return this.ruleIndex; + } + + public int getEquipmentRank() { + return this.equipmentRank; + } + + public String getName() { + return this.name; + } + + public String getIdentifier() { + return this.identifier; + } + + public int getCount() { + return this.count; + } + + public int getRarity() { + return this.rarity; + } + + public boolean isAssigned() { + return this.assigned; + } + + public int getGroupCount() { + return this.groupCount; + } + + public void setAssigned(boolean var1) { + this.assigned = var1; + } + + public void setGroupCount(int var1) { + this.groupCount = var1; + } +} diff --git a/src/main/java/defpackage/hv.java b/src/main/java/defpackage/hv.java new file mode 100644 index 0000000..d2bc8db --- /dev/null +++ b/src/main/java/defpackage/hv.java @@ -0,0 +1,65 @@ +package defpackage; + + +public enum hv { + NAME("Name"), + COUNT("Amount"), + RARITY("Rarity"); + + private final String displayName; + + hv(String var3) { + this.displayName = var3; + } + + public hv next() { + hv[] var1 = values(); + return var1[(this.ordinal() + (-1371724963 ^ 1371724964) + ((-1371724963 & 1371724964) << 1)) % var1.length]; + } + + public static hv find(String var0) { + hv[] var1 = null; + int var2 = 0; + int var3 = 0; + hv var4 = null; + int var5 = -1257700090; + + while (true) { + switch (var5) { + case -1713194553: + return var4; + case -1257700090: + default: + var1 = values(); + var2 = var1.length; + var3 = 0; + var5 = 50359319; + break; + case 50359319: + if (var3 < var2) { + var5 = 641212562; + } else { + var5 = 571185312; + } + break; + case 134982260: + var3++; + var5 = 50359319; + break; + case 571185312: + return NAME; + case 641212562: + var4 = var1[var3]; + if (var4.name().equalsIgnoreCase(var0)) { + var5 = -1713194553; + } else { + var5 = 134982260; + } + } + } + } + + public String getDisplayName() { + return this.displayName; + } +} diff --git a/src/main/java/defpackage/hw.java b/src/main/java/defpackage/hw.java new file mode 100644 index 0000000..ebc4dc2 --- /dev/null +++ b/src/main/java/defpackage/hw.java @@ -0,0 +1,362 @@ +package defpackage; + +import java.util.function.Predicate; +import java.util.function.Supplier; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; +import net.minecraft.tags.ItemTags; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.ItemLike; + +public enum hw { + SWORDS( + "#swords", + "Any sword", + () -> Items.IRON_SWORD, + var0 -> var0.is(ItemTags.SWORDS) + ), + AXES( + "#axes", + "Any axe", + () -> Items.IRON_AXE, + var0 -> var0.is(ItemTags.AXES) + ), + PICKAXES( + "#pickaxes", + "Any pickaxe", + () -> Items.IRON_PICKAXE, + var0 -> var0.is(ItemTags.PICKAXES) + ), + SHOVELS( + "#shovels", + "Any shovel", + () -> Items.IRON_SHOVEL, + var0 -> var0.is(ItemTags.SHOVELS) + ), + HOES( + "#hoes", + "Any hoe", + () -> Items.IRON_HOE, + var0 -> var0.is(ItemTags.HOES) + ), + HEAD_ARMOR( + "#head_armor", + "Any helmet", + () -> Items.IRON_HELMET, + var0 -> var0.is(ItemTags.HEAD_ARMOR) + ), + CHEST_ARMOR( + "#chest_armor", + "Any chestplate", + () -> Items.IRON_CHESTPLATE, + var0 -> var0.is(ItemTags.CHEST_ARMOR) + ), + LEG_ARMOR( + "#leg_armor", + "Any leggings", + () -> Items.IRON_LEGGINGS, + var0 -> var0.is(ItemTags.LEG_ARMOR) + ), + FOOT_ARMOR( + "#foot_armor", + "Any boots", + () -> Items.IRON_BOOTS, + var0 -> var0.is(ItemTags.FOOT_ARMOR) + ); + + private static final int RARITY_WEIGHT = 10000; + private final String token; + private final String displayName; + private final Supplier representative; + private final Predicate matcher; + + hw(String var3, String var4, Supplier var5, Predicate var6) { + this.token = var3; + this.displayName = var4; + this.representative = var5; + this.matcher = var6; + } + + public static hw byToken(String var0) { + hw[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = 2122816332; + + while (true) { + switch (var5) { + case -1153874284: + return null; + case -472280130: + var3++; + var5 = 951732622; + break; + case 951732622: + if (var3 < var2) { + var5 = 1279641960; + } else { + var5 = -1153874284; + } + break; + case 1279641960: + var4 = var1[var3]; + if (((hw)var4).token.equals(var0)) { + var5 = 2063479451; + } else { + var5 = -472280130; + } + break; + case 2063479451: + return (hw)var4; + case 2122816332: + default: + var1 = values(); + var2 = var1.length; + var3 = 0; + var5 = 951732622; + } + } + } + + public static String tokenFor(ItemStack var0) { + hw[] var1 = null; + int var2 = 0; + int var3 = 0; + hw var4 = null; + int var5 = -296466668; + + while (true) { + switch (var5) { + case -1623513112: + return var4.token; + case -1149488961: + if (var3 < var2) { + var5 = 1137519977; + } else { + var5 = 610319390; + } + break; + case -296466668: + default: + var1 = values(); + var2 = var1.length; + var3 = 0; + var5 = -1149488961; + break; + case 600274988: + var3++; + var5 = -1149488961; + break; + case 610319390: + return BuiltInRegistries.ITEM.getKey(var0.getItem()).toString(); + case 1137519977: + var4 = var1[var3]; + if (var4.matcher.test(var0)) { + var5 = -1623513112; + } else { + var5 = 600274988; + } + } + } + } + + public static boolean matches(String var0, ItemStack var1) { + hw var2 = null; + Item var3 = null; + int var5 = 0; + int var4 = 1712500852; + + while (true) { + switch (var4) { + case -1677676711: + var2 = byToken(var0); + if (var2 != null) { + var4 = -1400107352; + } else { + var4 = -1624697213; + } + break; + case -1624697213: + var3 = resolveItem(var0); + if (var3 != null) { + var4 = -587688481; + } else { + var4 = 1987363174; + } + break; + case -1400107352: + return var2.matcher.test(var1); + case -587688481: + if (var1.getItem() == var3) { + var4 = 928448901; + } else { + var4 = 1987363174; + } + break; + case 194637952: + return (boolean)(((0)) != 0); + case 928448901: + var5 = 1; + var4 = 1907241909; + break; + case 1712500852: + default: + if (var1.isEmpty()) { + var4 = 194637952; + } else { + var4 = -1677676711; + } + break; + case 1907241909: + return (boolean)((var5) != 0); + case 1987363174: + var5 = 0; + var4 = 1907241909; + } + } + } + + public static ItemStack representativeStack(String var0) { + hw var1 = null; + Item var2 = null; + ItemStack var4 = null; + int var3 = 474592390; + + while (true) { + switch (var3) { + case -2071091080: + return var4; + case -202715787: + var4 = new ItemStack(var2); + var3 = -2071091080; + break; + case 474592390: + default: + var1 = byToken(var0); + if (var1 != null) { + var3 = 1881741162; + } else { + var3 = 717847177; + } + break; + case 717847177: + var2 = resolveItem(var0); + if (var2 == null) { + var3 = 1452557799; + } else { + var3 = -202715787; + } + break; + case 1452557799: + var4 = ItemStack.EMPTY; + var3 = -2071091080; + break; + case 1881741162: + return new ItemStack((ItemLike)var1.representative.get()); + } + } + } + + public static String describe(String var0) { + hw var1 = null; + ItemStack var2 = null; + String var4 = null; + int var3 = 138145500; + + while (true) { + switch (var3) { + case -1715336762: + var4 = var2.getHoverName().getString(); + var3 = -223092752; + break; + case -223092752: + return var4; + case 138145500: + default: + var1 = byToken(var0); + if (var1 != null) { + var3 = 1293661832; + } else { + var3 = 426108973; + } + break; + case 426108973: + var2 = representativeStack(var0); + if (var2.isEmpty()) { + var3 = 1908319280; + } else { + var3 = -1715336762; + } + break; + case 1293661832: + return var1.displayName; + case 1908319280: + var4 = var0; + var3 = -223092752; + } + } + } + + public static int preference(ItemStack var0) { + return var0.getRarity().ordinal() * ((-195111219 ^ 195121219) + ((-195111219 & 195121219) << 1)) + var0.getMaxDamage(); + } + + private static Item resolveItem(String var0) { + Identifier var1 = null; + Item var2 = null; + Item var4 = null; + int var3 = -1759189195; + + while (true) { + switch (var3) { + case -1759189195: + default: + var1 = Identifier.tryParse(var0); + if (var1 == null) { + var3 = -97741942; + } else { + var3 = -1647678923; + } + break; + case -1647678923: + var2 = (Item)BuiltInRegistries.ITEM.getValue(var1); + if (var2 == Items.AIR) { + var3 = 175135154; + } else { + var3 = 994930967; + } + break; + case -97741942: + return null; + case 175135154: + var4 = null; + var3 = 768585714; + break; + case 768585714: + return var4; + case 994930967: + var4 = var2; + var3 = 768585714; + } + } + } + + public String getToken() { + return this.token; + } + + public String getDisplayName() { + return this.displayName; + } + + public Supplier getRepresentative() { + return this.representative; + } + + public Predicate getMatcher() { + return this.matcher; + } +} diff --git a/src/main/java/defpackage/hx.java b/src/main/java/defpackage/hx.java new file mode 100644 index 0000000..c6e8efa --- /dev/null +++ b/src/main/java/defpackage/hx.java @@ -0,0 +1,21 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:hx.class */ +/* synthetic */ class hx { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$inventory$SortKey = new int[hv.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$inventory$SortKey[hv.NAME.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$inventory$SortKey[hv.COUNT.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$base$inventory$SortKey[hv.RARITY.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + } +} diff --git a/src/main/java/defpackage/hy.java b/src/main/java/defpackage/hy.java new file mode 100644 index 0000000..0745ba3 --- /dev/null +++ b/src/main/java/defpackage/hy.java @@ -0,0 +1,586 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import net.minecraft.world.item.ItemStack; + +public final class hy { + public static final int NO_PIN = -1; + public static final int HOTBAR_SLOTS = 9; + public static final int PLAYER_SLOTS = 36; + private static final String KEY_SLOT_PINS = "slotPins"; + private static final String KEY_RULES = "rules"; + private static final String KEY_CATEGORY = "category"; + private static final String KEY_ENABLED = "enabled"; + private static final String KEY_PIN = "pin"; + private static final String KEY_SORT_KEY = "sortKey"; + private static final String KEY_START_AT_HOTBAR = "startAtHotbar"; + private static final String KEY_MERGE_STACKS = "mergeStacks"; + private static final String KEY_INCLUDE_HOTBAR = "includeHotbar"; + private static final hs[] DEFAULT_ORDER; + private final List rules = new ArrayList<>(); + private final Map slotPins = new LinkedHashMap<>(); + private hv sortKey = hv.NAME; + private boolean startAtHotbar = (boolean)(((1)) != 0); + private boolean mergeStacks = (boolean)(((1)) != 0); + private boolean includeHotbar; + + public hy() { + this.reset(); + } + + public void reset() { + hs[] var1 = null; + int var2 = 0; + int var3 = 0; + hs var4 = null; + int var5 = -1995940126; + + while (true) { + switch (var5) { + case -1995940126: + default: + this.rules.clear(); + this.slotPins.clear(); + var1 = DEFAULT_ORDER; + var2 = var1.length; + var3 = 0; + var5 = 386003472; + break; + case 386003472: + if (var3 < var2) { + var5 = 1006057224; + } else { + var5 = 1191562315; + } + break; + case 1006057224: + var4 = var1[var3]; + this.rules + .add(new hz(var4, (boolean)(((1)) != 0), (139194261 ^ -139194262) + ((139194261 & -139194262) << 1))); + var3++; + var5 = 386003472; + break; + case 1191562315: + this.sortKey = hv.NAME; + this.startAtHotbar = (boolean)(((1)) != 0); + this.mergeStacks = (boolean)(((1)) != 0); + this.includeHotbar = (boolean)(((0)) != 0); + return; + } + } + } + + public void move(int var1, int var2) { + int var3 = 0; + int var4 = 1418429872; + + while (true) { + switch (var4) { + case -2057755575: + if (var3 >= 0) { + var4 = 765538008; + } else { + var4 = -1271871577; + } + break; + case -1961256098: + if (var1 < this.rules.size()) { + var4 = -2057755575; + } else { + var4 = -1271871577; + } + break; + case -1271871577: + return; + case 225245422: + this.rules.add(var3, this.rules.remove(var1)); + return; + case 765538008: + if (var3 >= this.rules.size()) { + var4 = -1271871577; + } else { + var4 = 225245422; + } + break; + case 1418429872: + default: + var3 = var1 + var2; + if (var1 >= 0) { + var4 = -1961256098; + } else { + var4 = -1271871577; + } + } + } + } + + public String pinnedItem(int var1) { + return this.slotPins.get(var1); + } + + public void pinSlot(int var1, String var2) { + int var3 = 119836620; + + while (true) { + switch (var3) { + case -1723363757: + if (var1 < (767002266 ^ -767002230) + ((767002266 & -767002230) << 1)) { + var3 = 403299320; + } else { + var3 = -119857068; + } + break; + case -119857068: + return; + case 119836620: + default: + if (var1 >= 0) { + var3 = -1723363757; + } else { + var3 = -119857068; + } + break; + case 255788532: + this.slotPins.put(var1, var2); + var3 = -119857068; + break; + case 403299320: + if (var2 != null) { + var3 = 255788532; + } else { + var3 = -119857068; + } + } + } + } + + public void clearSlotPin(int var1) { + this.slotPins.remove(var1); + } + + public boolean sortsHotbar() { + int var2 = 0; + int var1 = -872847918; + + while (true) { + switch (var1) { + case -1822455486: + if (this.hasHotbarPins()) { + var1 = 372190110; + } else { + var1 = 351924537; + } + break; + case -1048687728: + return (boolean)((var2) != 0); + case -872847918: + default: + if (!this.includeHotbar) { + var1 = -1822455486; + } else { + var1 = 372190110; + } + break; + case 351924537: + var2 = 0; + var1 = -1048687728; + break; + case 372190110: + var2 = 1; + var1 = -1048687728; + } + } + } + + public boolean hasHotbarPins() { + for (Integer var2 : this.slotPins.keySet()) { + if (var2 < (-552501808 | 552501817) + (-552501808 & 552501817)) { + return (boolean)(((1)) != 0); + } + } + + for (hz var4 : this.rules) { + if (var4.isEnabled() && var4.isPinned()) { + return (boolean)(((1)) != 0); + } + } + + return (boolean)(((0)) != 0); + } + + public void clearHotbarPins() { + Iterator var1 = null; + hz var2 = null; + int var3 = 1563199823; + + while (true) { + switch (var3) { + case -2146915081: + return; + case -939596016: + var2 = (hz)var1.next(); + var2.setPinnedHotbarSlot((1488035714 ^ -1488035715) + ((1488035714 & -1488035715) << 1)); + var3 = 1736907600; + break; + case 1563199823: + default: + this.slotPins.keySet().removeIf(var0 -> { + int var2x = 0; + int var1x = -12407014; + + while (true) { + switch (var1x) { + case -340578277: + var2x = 0; + var1x = 2107278341; + break; + case -12407014: + default: + if (var0 < (-1178239555 ^ 1178239564) + ((-1178239555 & 1178239564) << 1)) { + var1x = 415788207; + } else { + var1x = -340578277; + } + break; + case 415788207: + var2x = 1; + var1x = 2107278341; + break; + case 2107278341: + return (boolean)((var2x) != 0); + } + } + }); + var1 = this.rules.iterator(); + var3 = 1736907600; + break; + case 1736907600: + if (var1.hasNext()) { + var3 = -939596016; + } else { + var3 = -2146915081; + } + } + } + } + + public int ruleIndex(ItemStack var1) { + int var2 = 0; + hz var3 = null; + int var4 = -1465692919; + + while (true) { + switch (var4) { + case -1465692919: + default: + var2 = 0; + var4 = -820541119; + break; + case -1421285191: + return var2; + case -1140271777: + return this.rules.size(); + case -820541119: + if (var2 < this.rules.size()) { + var4 = 1634078419; + } else { + var4 = -1140271777; + } + break; + case 1308415240: + var2++; + var4 = -820541119; + break; + case 1634078419: + var3 = this.rules.get(var2); + if (var3.isEnabled()) { + var4 = 1674867423; + } else { + var4 = 1308415240; + } + break; + case 1674867423: + if (var3.getCategory().matches(var1)) { + var4 = -1421285191; + } else { + var4 = 1308415240; + } + } + } + } + + public int equipmentRank(ItemStack var1, int var2) { + int var3 = -255269234; + + while (true) { + switch (var3) { + case -2083355061: + return hs.equipmentRank(var1); + case -1924940079: + return 4; + case -255269234: + default: + if (var2 < this.rules.size()) { + var3 = 669353114; + } else { + var3 = -1924940079; + } + break; + case 669353114: + if (this.rules.get(var2).getCategory() != hs.ARMOR) { + var3 = -1924940079; + } else { + var3 = -2083355061; + } + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public Comparator comparator() { + Comparator var1 = Comparator.comparingInt(hu::getRuleIndex).thenComparingInt(hu::getEquipmentRank); + + var1 = switch (hx.$SwitchMap$evo$systems$base$inventory$SortKey[this.sortKey.ordinal()]) { + case 1 -> var1.thenComparing(hu::getName); + case 2 -> var1.thenComparingInt(var0 -> -var0.getGroupCount()); + case 3 -> var1.thenComparingInt(var0 -> -var0.getRarity()); + default -> throw new MatchException(null, null); + }; + return var1.thenComparing(hu::getIdentifier).thenComparingInt(var0 -> -var0.getCount()); + } + + public JsonObject toJson() { + JsonObject var1 = new JsonObject(); + JsonArray var2 = new JsonArray(); + + for (hz var4 : this.rules) { + JsonObject var5 = new JsonObject(); + var5.addProperty("category", var4.getCategory().name()); + var5.addProperty("enabled", var4.isEnabled()); + var5.addProperty("pin", var4.getPinnedHotbarSlot()); + var2.add(var5); + } + + var1.add("rules", var2); + JsonObject var6 = new JsonObject(); + + for (Entry var8 : this.slotPins.entrySet()) { + var6.addProperty(String.valueOf(var8.getKey()), (String)var8.getValue()); + } + + var1.add("slotPins", var6); + var1.addProperty("sortKey", this.sortKey.name()); + var1.addProperty("startAtHotbar", this.startAtHotbar); + var1.addProperty("mergeStacks", this.mergeStacks); + var1.addProperty("includeHotbar", this.includeHotbar); + return var1; + } + + public void fromJson(JsonObject var1) { + if (var1 != null) { + if (var1.has("rules") + && var1.get("rules").isJsonArray()) { + ArrayList var2 = new ArrayList(); + + for (JsonElement var4 : var1.getAsJsonArray("rules")) { + if (var4.isJsonObject()) { + JsonObject var5 = var4.getAsJsonObject(); + hs var6 = var5.has("category") + ? hs.find(var5.get("category").getAsString()) + : null; + if (var6 != null && !var6.isFallback() && !containsCategory(var2, var6)) { + int var7 = var5.has("enabled") + && !var5.get("enabled").getAsBoolean() + ? 0: 1; + int var8 = var5.has("pin") + ? var5.get("pin").getAsInt() + : -1; + var2.add(new hz(var6, (boolean)((var7) != 0), normalizePin(var8))); + } + } + } + + hs[] var11 = DEFAULT_ORDER; + int var13 = var11.length; + + for (int var14 = 0; var14 < var13; var14++) { + hs var15 = var11[var14]; + if (!containsCategory(var2, var15)) { + var2.add( + new hz( + var15, (boolean)(((1)) != 0), (123440364 | -123440365) + (123440364 & -123440365) + ) + ); + } + } + + this.rules.clear(); + this.rules.addAll(var2); + } + + if (var1.has("slotPins") + && var1.get("slotPins").isJsonObject()) { + this.slotPins.clear(); + + for (Entry var12 : var1.getAsJsonObject("slotPins") + .entrySet()) { + try { + this.pinSlot(Integer.parseInt((String)var12.getKey()), ((JsonElement)var12.getValue()).getAsString()); + } catch (NumberFormatException var9) { + } + } + } + + if (var1.has("sortKey")) { + this.sortKey = hv.find(var1.get("sortKey").getAsString()); + } + + if (var1.has("startAtHotbar")) { + this.startAtHotbar = var1.get("startAtHotbar").getAsBoolean(); + } + + if (var1.has("mergeStacks")) { + this.mergeStacks = var1.get("mergeStacks") + .getAsBoolean(); + } + + if (var1.has("includeHotbar")) { + this.includeHotbar = var1.get("includeHotbar") + .getAsBoolean(); + } + } + } + + private static boolean containsCategory(List var0, hs var1) { + Iterator var2 = null; + hz var3 = null; + int var4 = -1223060952; + + while (true) { + switch (var4) { + case -1488322111: + var4 = 1688979612; + break; + case -1223060952: + default: + var2 = var0.iterator(); + var4 = 1688979612; + break; + case -322735596: + return (boolean)(((0)) != 0); + case 1037911962: + return (boolean)(((1)) != 0); + case 1371582172: + var3 = (hz)var2.next(); + if (var3.getCategory() == var1) { + var4 = 1037911962; + } else { + var4 = -1488322111; + } + break; + case 1688979612: + if (var2.hasNext()) { + var4 = 1371582172; + } else { + var4 = -322735596; + } + } + } + } + + private static int normalizePin(int var0) { + int var2 = 0; + int var1 = 1023266105; + + while (true) { + switch (var1) { + case -2021048273: + return var2; + case 445736737: + if (var0 < (-1390420960 ^ 1390420969) + ((-1390420960 & 1390420969) << 1)) { + var1 = 547117215; + } else { + var1 = 1213307297; + } + break; + case 547117215: + var2 = var0; + var1 = -2021048273; + break; + case 1023266105: + default: + if (var0 >= 0) { + var1 = 445736737; + } else { + var1 = 1213307297; + } + break; + case 1213307297: + var2 = -1; + var1 = -2021048273; + } + } + } + + public List getRules() { + return this.rules; + } + + public Map getSlotPins() { + return this.slotPins; + } + + public hv getSortKey() { + return this.sortKey; + } + + public boolean isStartAtHotbar() { + return this.startAtHotbar; + } + + public boolean isMergeStacks() { + return this.mergeStacks; + } + + public boolean isIncludeHotbar() { + return this.includeHotbar; + } + + public void setSortKey(hv var1) { + this.sortKey = var1; + } + + public void setStartAtHotbar(boolean var1) { + this.startAtHotbar = var1; + } + + public void setMergeStacks(boolean var1) { + this.mergeStacks = var1; + } + + public void setIncludeHotbar(boolean var1) { + this.includeHotbar = var1; + } + + static { + hs[] var10000 = new hs[7]; + var10000[0] = hs.WEAPONS; + var10000[1] = hs.TOOLS; + var10000[2] = hs.ARMOR; + var10000[3] = hs.FOOD; + var10000[4] = hs.POTIONS; + var10000[5] = hs.PROJECTILES; + var10000[6] = hs.BLOCKS; + DEFAULT_ORDER = var10000; + } +} diff --git a/src/main/java/defpackage/hz.java b/src/main/java/defpackage/hz.java new file mode 100644 index 0000000..66b0074 --- /dev/null +++ b/src/main/java/defpackage/hz.java @@ -0,0 +1,73 @@ +package defpackage; + + +public final class hz { + private final hs category; + private boolean enabled; + private int pinnedHotbarSlot; + + public hz(hs var1, boolean var2, int var3) { + this.category = var1; + this.enabled = var2; + this.pinnedHotbarSlot = var3; + } + + public boolean isPinned() { + int var2 = 0; + int var1 = -1727863885; + + while (true) { + switch (var1) { + case -1727863885: + default: + if (this.pinnedHotbarSlot >= 0) { + var1 = 610533899; + } else { + var1 = 1824514216; + } + break; + case 610533899: + if (this.pinnedHotbarSlot < (508367224 | -508367215) + (508367224 & -508367215)) { + var1 = 2141088608; + } else { + var1 = 1824514216; + } + break; + case 1368537938: + return (boolean)((var2) != 0); + case 1824514216: + var2 = 0; + var1 = 1368537938; + break; + case 2141088608: + var2 = 1; + var1 = 1368537938; + } + } + } + + public void cyclePin() { + int var1 = this.pinnedHotbarSlot + 1; + this.pinnedHotbarSlot = var1 >= 9? -1: var1; + } + + public hs getCategory() { + return this.category; + } + + public boolean isEnabled() { + return this.enabled; + } + + public int getPinnedHotbarSlot() { + return this.pinnedHotbarSlot; + } + + public void setEnabled(boolean var1) { + this.enabled = var1; + } + + public void setPinnedHotbarSlot(int var1) { + this.pinnedHotbarSlot = var1; + } +} diff --git a/src/main/java/defpackage/i.java b/src/main/java/defpackage/i.java new file mode 100644 index 0000000..1a78ca2 --- /dev/null +++ b/src/main/java/defpackage/i.java @@ -0,0 +1,27 @@ +package defpackage; + +import java.lang.reflect.Method; + +final class i { + private final Object source; + private final Method target; + private final byte priority; + + public i(Object var1, Method var2, byte var3) { + this.source = var1; + this.target = var2; + this.priority = var3; + } + + public Object getSource() { + return this.source; + } + + public Method getTarget() { + return this.target; + } + + public byte getPriority() { + return this.priority; + } +} diff --git a/src/main/java/defpackage/ia.java b/src/main/java/defpackage/ia.java new file mode 100644 index 0000000..fdaa1c6 --- /dev/null +++ b/src/main/java/defpackage/ia.java @@ -0,0 +1,274 @@ +package defpackage; + +import it.unimi.dsi.fastutil.ints.IntArrayList; +import java.util.Arrays; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; + +public record ia(int[] slots, int[] hotbarButtonBySlot, int[] menuSlotByPlayerSlot, boolean hotbarPinsAllowed, int scratchButton) { + public static final int NO_SCRATCH = -1; + public static final int NO_SLOT = -1; + private static final int NO_BUTTON = -1; + private static final int[] NO_PLAYER_SLOTS = new int[0]; + + public boolean isUsable() { + int var2 = 0; + int var1 = 1666630791; + + while (true) { + switch (var1) { + case -1346553256: + if (this.scratchButton != (827651502 ^ -827651503) + ((827651502 & -827651503) << 1)) { + var1 = -1304133861; + } else { + var1 = -273259913; + } + break; + case -1304133861: + var2 = 1; + var1 = 433533627; + break; + case -273259913: + var2 = 0; + var1 = 433533627; + break; + case 433533627: + return (boolean)((var2) != 0); + case 1666630791: + default: + if (this.slots.length > (982817136 ^ -982817135) + ((982817136 & -982817135) << 1)) { + var1 = -1346553256; + } else { + var1 = -273259913; + } + } + } + } + + public static ia playerInventory(AbstractContainerMenu var0, hy var1) { + int[] var2 = buildHotbarButtons(var0); + int[] var3 = new int[36]; + Arrays.fill(var3, (522364269 | -522364270) + (522364269 & -522364270)); + IntArrayList var4 = new IntArrayList(); + IntArrayList var5 = new IntArrayList(); + + for (int var6 = 0; var6 < var0.slots.size(); var6++) { + Slot var7 = (Slot)var0.slots.get(var6); + if (isPlayerStorageSlot(var7)) { + var3[var7.getContainerSlot()] = var6; + if (var2[var6] == (-419682055 ^ 419682054) + ((-419682055 & 419682054) << 1)) { + var4.add(var6); + } else if (var1.sortsHotbar()) { + var5.add(var6); + } + } + } + + IntArrayList var8 = new IntArrayList(); + if (var1.isStartAtHotbar()) { + var8.addAll(var5); + var8.addAll(var4); + } else { + var8.addAll(var4); + var8.addAll(var5); + } + + int[] var9 = var8.toIntArray(); + return new ia(var9, var2, var3, var1.sortsHotbar(), pickScratchButton(var0, var2, var9)); + } + + public static ia container(AbstractContainerMenu var0) { + int[] var1 = buildHotbarButtons(var0); + IntArrayList var2 = new IntArrayList(); + + for (int var3 = 0; var3 < var0.slots.size(); var3++) { + Slot var4 = (Slot)var0.slots.get(var3); + if (!(var4.container instanceof Inventory) && var4.isActive()) { + var2.add(var3); + } + } + + int[] var5 = var2.toIntArray(); + return new ia(var5, var1, NO_PLAYER_SLOTS, (boolean)(((0)) != 0), pickScratchButton(var0, var1, var5)); + } + + private static boolean isPlayerStorageSlot(Slot var0) { + int var2 = 0; + int var1 = 2059837005; + + while (true) { + switch (var1) { + case -1936378116: + var2 = 1; + var1 = 1768763679; + break; + case -1469479570: + if (var0.getContainerSlot() < (-1952347861 | 1952347897) + (-1952347861 & 1952347897)) { + var1 = 364654268; + } else { + var1 = -938888301; + } + break; + case -938888301: + var2 = 0; + var1 = 1768763679; + break; + case 364654268: + if (var0.isActive()) { + var1 = -1936378116; + } else { + var1 = -938888301; + } + break; + case 1768763679: + return (boolean)((var2) != 0); + case 2059837005: + default: + if (var0.container instanceof Inventory) { + var1 = -1469479570; + } else { + var1 = -938888301; + } + } + } + } + + private static int[] buildHotbarButtons(AbstractContainerMenu var0) { + int[] var1 = null; + int var2 = 0; + Slot var3 = null; + int var4 = -871119604; + + while (true) { + switch (var4) { + case -1592762047: + return var1; + case -871119604: + default: + var1 = new int[var0.slots.size()]; + Arrays.fill(var1, (-338069171 | 338069170) + (-338069171 & 338069170)); + var2 = 0; + var4 = -450750979; + break; + case -673568116: + if (var3.getContainerSlot() < (1934959476 ^ -1934959467) + ((1934959476 & -1934959467) << 1)) { + var4 = 1761334341; + } else { + var4 = -189334545; + } + break; + case -450750979: + if (var2 < var0.slots.size()) { + var4 = 162311268; + } else { + var4 = -1592762047; + } + break; + case -189334545: + var2++; + var4 = -450750979; + break; + case 162311268: + var3 = (Slot)var0.slots.get(var2); + if (var3.container instanceof Inventory) { + var4 = -673568116; + } else { + var4 = -189334545; + } + break; + case 1761334341: + var1[var2] = var3.getContainerSlot(); + var4 = -189334545; + } + } + } + + private static int pickScratchButton(AbstractContainerMenu var0, int[] var1, int[] var2) { + Slot var3 = null; + int var4 = 0; + int var5 = 0; + ItemStack var6 = null; + int var7 = -1026938429; + + while (true) { + switch (var7) { + case -2137454252: + if (var6.getCount() <= var3.getMaxStackSize(var6)) { + var7 = -1230038557; + } else { + var7 = 1127274633; + } + break; + case -1588335996: + return -1; + case -1450135039: + if (var3.mayPlace(var6)) { + var7 = -2137454252; + } else { + var7 = 1127274633; + } + break; + case -1230038557: + var4 = var1[var5]; + var7 = 1127274633; + break; + case -1044627284: + if (var5 < var1.length) { + var7 = -482971144; + } else { + var7 = 755004153; + } + break; + case -1026938429: + default: + if (var2.length == 0) { + var7 = -1588335996; + } else { + var7 = 1061711045; + } + break; + case -482971144: + if (var1[var5] == (-1753776327 ^ 1753776326) + ((-1753776327 & 1753776326) << 1)) { + var7 = -410436203; + } else { + var7 = 2022434489; + } + break; + case -410436203: + var7 = 1127274633; + break; + case 755004153: + return var4; + case 1061711045: + var3 = (Slot)var0.slots.get(var2[0]); + var4 = -1; + var5 = 0; + var7 = -1044627284; + break; + case 1127274633: + var5++; + var7 = -1044627284; + break; + case 1703803575: + if (var4 == (1942995074 | -1942995075) + (1942995074 & -1942995075)) { + var7 = -1450135039; + } else { + var7 = 1127274633; + } + break; + case 2022434489: + var6 = ((Slot)var0.slots.get(var5)).getItem(); + if (var6.isEmpty()) { + var7 = 2107250202; + } else { + var7 = 1703803575; + } + break; + case 2107250202: + return var1[var5]; + } + } + } +} diff --git a/src/main/java/defpackage/ib.java b/src/main/java/defpackage/ib.java new file mode 100644 index 0000000..e1bce5f --- /dev/null +++ b/src/main/java/defpackage/ib.java @@ -0,0 +1,343 @@ +package defpackage; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; +import net.fabricmc.loader.api.FabricLoader; + +final class ib { + private static final String THREAD_NAME = "EvoVis-ExitTrace"; + private static final String LOGS_FOLDER = "logs"; + private static final String FILE_PREFIX = "evo-exit-"; + private static final String FILE_SUFFIX = ".log"; + private static final DateTimeFormatter FILE_STAMP = DateTimeFormatter.ofPattern( + "yyyyMMdd-HHmmss" + ); + private static final int MAX_FRAMES = 96; + private static final int BUFFER_CAPACITY = 65536; + private static final String NEWLINE = System.lineSeparator(); + private static final String FRAME_INDENT = " at "; + private static final String TRUNCATED = " ..."; + private static final String EXIT_MARKER = " <<< EXIT CALLER"; + private static final String HEADER_TEMPLATE = "jvm shutdown at %s, uptime %d ms, screen %s"; + private static final String THREAD_TEMPLATE = "\"%s\" id=%d state=%s daemon=%s"; + private static final String SHUTDOWN_CLASS = "java.lang.Shutdown"; + private static final String RUNTIME_EXIT = "java.lang.Runtime.exit"; + private static final String SYSTEM_EXIT = "java.lang.System.exit"; + private static final String JAVA_PREFIX = "java."; + private static final String JDK_PREFIX = "jdk."; + private static final String UNKNOWN_CALLER = "unknown (no thread inside System.exit)"; + private static final String SHUTDOWN_TEMPLATE = "jvm shutdown: exit caller {} on thread {}"; + private static final String WRITE_FAILURE = "exit trace write failed: {}"; + + private ib() { + } + + static void install() { + Thread var0 = new Thread(ib::capture, "EvoVis-ExitTrace"); + var0.setDaemon((boolean)((((-1369346020 ^ 1369346020) + ((-1369346020 & 1369346020) << 1))) != 0)); + Runtime.getRuntime().addShutdownHook(var0); + } + + private static void capture() { + Map var0 = null; + StringBuilder var1 = null; + String var2 = null; + String var3 = null; + Iterator var4 = null; + Entry var5 = null; + Thread var6 = null; + StackTraceElement[] var7 = null; + int var8 = 0; + int var10 = 0; + int var9 = 1063244174; + + while (true) { + switch (var9) { + case -1934589773: + var10 = 0; + var9 = -994751389; + break; + case -1534873933: + id.warn( + Cif.GENERAL, + "jvm shutdown: exit caller {} on thread {}", + var2, + var3 + ); + write(var1.toString()); + return; + case -1421557224: + var10 = 1; + var9 = -994751389; + break; + case -994751389: + var8 = var10; + if (var8 != 0) { + var9 = 2120296598; + } else { + var9 = 1769799927; + } + break; + case -369467075: + var5 = (Entry)var4.next(); + var6 = (Thread)var5.getKey(); + var7 = (StackTraceElement[])var5.getValue(); + if (var6 != Thread.currentThread()) { + var9 = 1090923154; + } else { + var9 = -1934589773; + } + break; + case 1063244174: + default: + var0 = Thread.getAllStackTraces(); + var1 = new StringBuilder((1298708801 | -1298643265) + (1298708801 & -1298643265)); + String var10001 = "jvm shutdown at %s, uptime %d ms, screen %s"; + Object[] var10002 = new Object[3]; + var10002[0] = LocalDateTime.now(); + var10002[1] = System.currentTimeMillis() - id.startMillis(); + var10002[2] = ie.currentScreen(); + var1.append(String.format(var10001, var10002)).append(NEWLINE); + var2 = "unknown (no thread inside System.exit)"; + var3 = "unknown (no thread inside System.exit)"; + var4 = var0.entrySet().iterator(); + var9 = 1273870242; + break; + case 1090923154: + if (isExitCaller(var7)) { + var9 = -1421557224; + } else { + var9 = -1934589773; + } + break; + case 1273870242: + if (var4.hasNext()) { + var9 = -369467075; + } else { + var9 = -1534873933; + } + break; + case 1769799927: + appendThread(var1, var6, var7, (boolean)((var8) != 0)); + var9 = 1273870242; + break; + case 2120296598: + var2 = firstApplicationFrame(var7); + var3 = var6.getName(); + var9 = 1769799927; + } + } + } + + private static boolean isExitCaller(StackTraceElement[] var0) { + StackTraceElement[] var1 = null; + int var2 = 0; + int var3 = 0; + StackTraceElement var4 = null; + String var5 = null; + int var6 = 423691700; + + while (true) { + switch (var6) { + case -1740138656: + if (!var5.equals("java.lang.Runtime.exit") + ) + { + var6 = 244148691; + } else { + var6 = 1477599425; + } + break; + case -1573227747: + if (var3 < var2) { + var6 = 1097426138; + } else { + var6 = -1463039172; + } + break; + case -1536787036: + var3++; + var6 = -1573227747; + break; + case -1463039172: + return (boolean)(((0)) != 0); + case 244148691: + if (var5.equals("java.lang.System.exit")) { + var6 = 1477599425; + } else { + var6 = -1536787036; + } + break; + case 423691700: + default: + var1 = var0; + var2 = var1.length; + var3 = 0; + var6 = -1573227747; + break; + case 1097426138: + var4 = var1[var3]; + var5 = var4.getClassName() + "." + var4.getMethodName(); + if (!var4.getClassName().equals("java.lang.Shutdown")) { + var6 = -1740138656; + } else { + var6 = 1477599425; + } + break; + case 1477599425: + return (boolean)(((1)) != 0); + } + } + } + + private static String firstApplicationFrame(StackTraceElement[] var0) { + StackTraceElement[] var1 = null; + int var2 = 0; + int var3 = 0; + StackTraceElement var4 = null; + String var5 = null; + String var7 = null; + int var6 = -1651938745; + + while (true) { + switch (var6) { + case -2117080602: + return var4.toString(); + case -2011721847: + if (var3 < var2) { + var6 = 873107665; + } else { + var6 = 311600301; + } + break; + case -1896157660: + var7 = "unknown (no thread inside System.exit)"; + var6 = 2139053200; + break; + case -1651938745: + default: + var1 = var0; + var2 = var1.length; + var3 = 0; + var6 = -2011721847; + break; + case -1313480224: + if (!var5.startsWith("jdk.")) { + var6 = -2117080602; + } else { + var6 = 1269631876; + } + break; + case -702818073: + var7 = var0[var0.length - (1)].toString(); + var6 = 2139053200; + break; + case 311600301: + if (var0.length == 0) { + var6 = -1896157660; + } else { + var6 = -702818073; + } + break; + case 873107665: + var4 = var1[var3]; + var5 = var4.getClassName(); + if (!var5.startsWith("java.")) { + var6 = -1313480224; + } else { + var6 = 1269631876; + } + break; + case 1269631876: + var3++; + var6 = -2011721847; + break; + case 2139053200: + return var7; + } + } + } + + private static void appendThread(StringBuilder var0, Thread var1, StackTraceElement[] var2, boolean var3) { + int var4 = 0; + int var5 = 0; + int var6 = -1777188354; + + while (true) { + switch (var6) { + case -1918852467: + if (var2.length > (-513557079 | 513557175) + (-513557079 & 513557175)) { + var6 = -1154657506; + } else { + var6 = -772990873; + } + break; + case -1777188354: + default: + StringBuilder var10000 = var0.append(NEWLINE); + String var10001 = "\"%s\" id=%d state=%s daemon=%s"; + Object[] var10002 = new Object[4]; + var10002[0] = var1.getName(); + var10002[1] = var1.threadId(); + var10002[2] = var1.getState(); + var10002[3] = var1.isDaemon(); + var10000.append(String.format(var10001, var10002)); + if (var3) { + var6 = -929580453; + } else { + var6 = 1275150920; + } + break; + case -1154657506: + var0.append(" ...").append(NEWLINE); + var6 = -772990873; + break; + case -929580453: + var0.append(" <<< EXIT CALLER"); + var6 = 1275150920; + break; + case -772990873: + return; + case -503402093: + var0.append(" at ").append(var2[var5]).append(NEWLINE); + var5++; + var6 = 1465050494; + break; + case 1275150920: + var0.append(NEWLINE); + var4 = Math.min(var2.length, (-1241496419 ^ 1241496515) + ((-1241496419 & 1241496515) << 1)); + var5 = 0; + var6 = 1465050494; + break; + case 1465050494: + if (var5 < var4) { + var6 = -503402093; + } else { + var6 = -1918852467; + } + } + } + } + + private static void write(String var0) { + try { + Path var1 = FabricLoader.getInstance().getGameDir().resolve("logs"); + Files.createDirectories(var1); + Path var2 = var1.resolve("evo-exit-" + LocalDateTime.now().format(FILE_STAMP) + ".log"); + Files.writeString(var2, var0, StandardCharsets.UTF_8); + } catch (IOException | RuntimeException var3) { + id.warn( + Cif.GENERAL, + "exit trace write failed: {}", + var3.toString() + ); + } + } +} diff --git a/src/main/java/defpackage/ic.java b/src/main/java/defpackage/ic.java new file mode 100644 index 0000000..68ed1b8 --- /dev/null +++ b/src/main/java/defpackage/ic.java @@ -0,0 +1,29 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:ic.class */ +/* synthetic */ class ic { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$log$EvoLogLevel = new int[ii.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$log$EvoLogLevel[ii.TRACE.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$log$EvoLogLevel[ii.DEBUG.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$base$log$EvoLogLevel[ii.INFO.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$base$log$EvoLogLevel[ii.WARN.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + try { + $SwitchMap$evo$systems$base$log$EvoLogLevel[ii.ERROR.ordinal()] = 5; + } catch (NoSuchFieldError e5) { + } + } +} diff --git a/src/main/java/defpackage/id.java b/src/main/java/defpackage/id.java new file mode 100644 index 0000000..2d0e8b1 --- /dev/null +++ b/src/main/java/defpackage/id.java @@ -0,0 +1,729 @@ +package defpackage; + +import java.lang.Thread.UncaughtExceptionHandler; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicLong; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class id { + private static final Logger LOGGER = LoggerFactory.getLogger("EvoVis"); + private static final ii CAPTURE_LEVEL = ii.DEBUG; + private static final int RING_CAPACITY = 384; + private static final int SIGNAL_LIMIT = 256; + private static final String PLACEHOLDER = "{}"; + private static final String NULL_ARGUMENT = "null"; + private static final String CATEGORY_OPEN = "["; + private static final String CATEGORY_CLOSE = "] "; + private static final String SUPPRESSED_OPEN = " (+"; + private static final String SUPPRESSED_CLOSE = " repeated)"; + private static final String FINGERPRINT_PREFIX = "EVO-"; + private static final int FINGERPRINT_MASK = 16777215; + private static final int FINGERPRINT_DIGITS = 6; + private static final char FINGERPRINT_PAD = '0'; + private static final int HASH_SEED = 17; + private static final int HASH_FACTOR = 31; + private static final String GUARD_TEMPLATE = "{} failed"; + private static final String UNCAUGHT_TEMPLATE = "uncaught exception on thread {}"; + private static final ik RING = new ik((-213789026 | 213789410) + (-213789026 & 213789410)); + private static final Map SIGNALS = new ConcurrentHashMap<>(); + private static final AtomicLong WARNINGS = new AtomicLong(); + private static final AtomicLong ERRORS = new AtomicLong(); + private static final long START_MILLIS = System.currentTimeMillis(); + private static volatile boolean installed; + + private id() { + } + + public static synchronized void install() { + UncaughtExceptionHandler var0 = null; + int var1 = -868175799; + + while (true) { + switch (var1) { + case -1708520400: + return; + case -868175799: + default: + if (installed) { + var1 = -1708520400; + } else { + var1 = 286807880; + } + break; + case 286807880: + installed = (boolean)(((1)) != 0); + var0 = Thread.getDefaultUncaughtExceptionHandler(); + Thread.setDefaultUncaughtExceptionHandler( + (var1x, var2x) -> { + int var3 = -761060784; + + while (true) { + switch (var3) { + case -761060784: + default: + error( + Cif.GENERAL, + "uncaught exception on thread {}", + var1x.getName(), + var2x + ); + if (var0 != null) { + var3 = 1087126075; + } else { + var3 = 884216481; + } + break; + case 884216481: + return; + case 1087126075: + var0.uncaughtException(var1x, var2x); + var3 = 884216481; + } + } + } + ); + ie.install(); + ib.install(); + return; + } + } + } + + public static boolean isEnabled(Cif var0, ii var1) { + int var3 = 0; + int var2 = 202918471; + + while (true) { + switch (var2) { + case -2081840649: + var3 = 0; + var2 = -441258515; + break; + case -441258515: + return (boolean)((var3) != 0); + case 202918471: + default: + if (!var1.atLeast(CAPTURE_LEVEL)) { + var2 = 303739443; + } else { + var2 = 913852234; + } + break; + case 303739443: + if (var0.logsToConsole(var1)) { + var2 = 913852234; + } else { + var2 = -2081840649; + } + break; + case 913852234: + var3 = 1; + var2 = -441258515; + } + } + } + + public static void trace(Cif var0, String var1) { + log(var0, ii.TRACE, var1, var1, null); + } + + public static void trace(Cif var0, String var1, Object var2) { + int var3 = -977753749; + + while (true) { + switch (var3) { + case -1091364590: + return; + case -977753749: + default: + if (!isEnabled(var0, ii.TRACE)) { + var3 = -1091364590; + } else { + var3 = 314973484; + } + break; + case 314973484: + log(var0, ii.TRACE, var1, format(var1, var2), null); + return; + } + } + } + + public static void trace(Cif var0, String var1, Object var2, Object var3) { + int var4 = 123978577; + + while (true) { + switch (var4) { + case -1959218258: + return; + case -1248200026: + log(var0, ii.TRACE, var1, format(var1, var2, var3), null); + return; + case 123978577: + } + + if (!isEnabled(var0, ii.TRACE)) { + var4 = -1959218258; + } else { + var4 = -1248200026; + } + } + } + + public static void debug(Cif var0, String var1) { + log(var0, ii.DEBUG, var1, var1, null); + } + + public static void debug(Cif var0, String var1, Object var2) { + int var3 = 834098987; + + while (true) { + switch (var3) { + case -864692367: + return; + case 834098987: + default: + if (!isEnabled(var0, ii.DEBUG)) { + var3 = -864692367; + } else { + var3 = 1830327744; + } + break; + case 1830327744: + log(var0, ii.DEBUG, var1, format(var1, var2), null); + return; + } + } + } + + public static void debug(Cif var0, String var1, Object var2, Object var3) { + int var4 = -934301882; + + while (true) { + switch (var4) { + case -934301882: + default: + if (!isEnabled(var0, ii.DEBUG)) { + var4 = 939687274; + } else { + var4 = 1774508526; + } + break; + case 939687274: + return; + case 1774508526: + log(var0, ii.DEBUG, var1, format(var1, var2, var3), null); + return; + } + } + } + + public static void info(Cif var0, String var1) { + log(var0, ii.INFO, var1, var1, null); + } + + public static void info(Cif var0, String var1, Object var2) { + int var3 = -825836429; + + while (true) { + switch (var3) { + case -825836429: + default: + if (!isEnabled(var0, ii.INFO)) { + var3 = 1338836822; + } else { + var3 = -731998377; + } + break; + case -731998377: + log(var0, ii.INFO, var1, format(var1, var2), null); + return; + case 1338836822: + return; + } + } + } + + public static void info(Cif var0, String var1, Object var2, Object var3) { + int var4 = 1607126744; + + while (true) { + switch (var4) { + case -1532544632: + log(var0, ii.INFO, var1, format(var1, var2, var3), null); + return; + case -833258852: + return; + case 1607126744: + } + + if (!isEnabled(var0, ii.INFO)) { + var4 = -833258852; + } else { + var4 = -1532544632; + } + } + } + + public static void warn(Cif var0, String var1) { + log(var0, ii.WARN, var1, var1, null); + } + + public static void warn(Cif var0, String var1, Object var2) { + log(var0, ii.WARN, var1, format(var1, var2), null); + } + + public static void warn(Cif var0, String var1, Object var2, Object var3) { + log(var0, ii.WARN, var1, format(var1, var2, var3), null); + } + + public static void warn(Cif var0, String var1, Throwable var2) { + log(var0, ii.WARN, var1, var1, var2); + } + + public static void warn(Cif var0, String var1, Object var2, Throwable var3) { + log(var0, ii.WARN, var1, format(var1, var2), var3); + } + + public static void error(Cif var0, String var1) { + log(var0, ii.ERROR, var1, var1, null); + } + + public static void error(Cif var0, String var1, Object var2) { + log(var0, ii.ERROR, var1, format(var1, var2), null); + } + + public static void error(Cif var0, String var1, Object var2, Object var3) { + log(var0, ii.ERROR, var1, format(var1, var2, var3), null); + } + + public static void error(Cif var0, String var1, Throwable var2) { + log(var0, ii.ERROR, var1, var1, var2); + } + + public static void error(Cif var0, String var1, Object var2, Throwable var3) { + log(var0, ii.ERROR, var1, format(var1, var2), var3); + } + + public static boolean run(Cif var0, String var1, Runnable var2) { + if (var2 == null) { + return (boolean)(((0)) != 0); + } + + try { + var2.run(); + return (boolean)(((1)) != 0); + } catch (Throwable var4) { + if (var4 instanceof VirtualMachineError) { + throw var4; + } + + error(var0, "{} failed", var1, var4); + return (boolean)(((0)) != 0); + } + } + + public static List recent(int var0) { + return RING.snapshot(var0); + } + + public static List issues(ii var0) { + ArrayList var1 = null; + Iterator var2 = null; + il var3 = null; + ih var4 = null; + int var5 = 1778925557; + + while (true) { + switch (var5) { + case -1557679520: + var5 = -1386378372; + break; + case -1517314489: + var3 = (il)var2.next(); + var4 = var3.snapshot(); + if (var4.level().atLeast(var0)) { + var5 = -858526465; + } else { + var5 = -1557679520; + } + break; + case -1386378372: + if (var2.hasNext()) { + var5 = -1517314489; + } else { + var5 = 1855952644; + } + break; + case -858526465: + var1.add(var4); + var5 = -1557679520; + break; + case 1778925557: + default: + var1 = new ArrayList(); + var2 = SIGNALS.values().iterator(); + var5 = -1386378372; + break; + case 1855952644: + var1.sort(Comparator.comparingInt(var0x -> var0x.level().getSeverity()).thenComparingLong(ih::lastMillis).reversed()); + return var1; + } + } + } + + public static long startMillis() { + return START_MILLIS; + } + + public static long captured() { + return RING.total(); + } + + public static int retained() { + return RING.size(); + } + + public static long warnings() { + return WARNINGS.get(); + } + + public static long errors() { + return ERRORS.get(); + } + + public static int signals() { + return SIGNALS.size(); + } + + private static void log(Cif var0, ii var1, String var2, String var3, Throwable var4) { + long var5 = (249786992687256030L ^ -249786992687256030L) + ((249786992687256030L & -249786992687256030L) << 1); + String var7 = null; + int var8 = 0; + il var9 = null; + int var10 = 0; + String var11 = null; + String var12 = null; + int var14 = 0; + String var15 = null; + int var13 = 1408646825; + + while (true) { + switch (var13) { + case -2134122862: + if (SIGNALS.size() < (1073700324 ^ -1073700068) + ((1073700324 & -1073700068) << 1)) { + var13 = -1911981510; + } else { + var13 = 2048515706; + } + break; + case -1972440757: + var14 = 0; + var13 = 920923331; + break; + case -1911981510: + var9 = SIGNALS.computeIfAbsent(var8, var3x -> new il(fingerprint(var3x), var0, var5)); + var13 = 2048515706; + break; + case -1887975884: + var15 = var3 + " (+" + var10 + " repeated)"; + var13 = 1390456069; + break; + case -794197631: + WARNINGS.incrementAndGet(); + var13 = 849454474; + break; + case -312261438: + return; + case -109213835: + if (var1 == ii.ERROR) { + var13 = 697734718; + } else { + var13 = 849454474; + } + break; + case -105167471: + var5 = System.currentTimeMillis(); + if (var1 == ii.WARN) { + var13 = -794197631; + } else { + var13 = -109213835; + } + break; + case 675679059: + var14 = var9.admit(var1, var3, var7, var5); + var13 = 920923331; + break; + case 697734718: + ERRORS.incrementAndGet(); + var13 = 849454474; + break; + case 701936479: + console(var0, var1, var12, var11, var4); + var13 = 1686736449; + break; + case 849454474: + var7 = im.summarize(var4); + var8 = hash(var0, var2, var4); + var9 = SIGNALS.get(var8); + if (var9 == null) { + var13 = -2134122862; + } else { + var13 = 2048515706; + } + break; + case 920923331: + var10 = var14; + if (var10 == (-2091867878 | 2091867877) + (-2091867878 & 2091867877)) { + var13 = 1843400523; + } else { + var13 = 2055177550; + } + break; + case 989255647: + if (var0.logsToConsole(var1)) { + var13 = 701936479; + } else { + var13 = 1686736449; + } + break; + case 1390456069: + var11 = var15; + var12 = fingerprint(var8); + if (var1.atLeast(CAPTURE_LEVEL)) { + var13 = 1920751654; + } else { + var13 = 989255647; + } + break; + case 1408646825: + default: + if (!isEnabled(var0, var1)) { + var13 = -312261438; + } else { + var13 = -105167471; + } + break; + case 1436091004: + var15 = var3; + var13 = 1390456069; + break; + case 1686736449: + return; + case 1843400523: + return; + case 1920751654: + RING.add(new ij(var5, var0, var1, Thread.currentThread().getName(), var11, var12)); + var13 = 989255647; + break; + case 2048515706: + if (var9 == null) { + var13 = -1972440757; + } else { + var13 = 675679059; + } + break; + case 2055177550: + if (var10 == 0) { + var13 = 1436091004; + } else { + var13 = -1887975884; + } + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static void console(Cif var0, ii var1, String var2, String var3, Throwable var4) { + String var5 = var2 + "[" + var0.key() + "] " + var3; + switch (ic.$SwitchMap$evo$systems$base$log$EvoLogLevel[var1.ordinal()]) { + case 1: + if (var4 == null) { + LOGGER.trace(var5); + } else { + LOGGER.trace(var5, var4); + } + break; + case 2: + if (var4 == null) { + LOGGER.debug(var5); + } else { + LOGGER.debug(var5, var4); + } + break; + case 3: + if (var4 == null) { + LOGGER.info(var5); + } else { + LOGGER.info(var5, var4); + } + break; + case 4: + if (var4 == null) { + LOGGER.warn(var5); + } else { + LOGGER.warn(var5, var4); + } + break; + case 5: + if (var4 == null) { + LOGGER.error(var5); + } else { + LOGGER.error(var5, var4); + } + } + } + + private static int hash(Cif var0, String var1, Throwable var2) { + int var3 = 17; + var3 = var3 * ((-116436056 ^ 116436087) + ((-116436056 & 116436087) << 1)) + var0.name().hashCode(); + var3 = var3 * ((795366241 | -795366210) + (795366241 & -795366210)) + + (var1 == null ? 0: var1.hashCode()); + if (var2 != null) { + var3 = var3 * ((428398346 | -428398315) + (428398346 & -428398315)) + var2.getClass().getName().hashCode(); + var3 = var3 * ((-2055062042 ^ 2055062073) + ((-2055062042 & 2055062073) << 1)) + im.origin(var2).hashCode(); + } + + return var3 & 16777215; + } + + private static String fingerprint(int var0) { + String var1 = null; + StringBuilder var2 = null; + int var3 = 0; + int var4 = -867544310; + + while (true) { + switch (var4) { + case -1989016926: + if (var3 < (1823583538 ^ -1823583532) + ((1823583538 & -1823583532) << 1)) { + var4 = -539503185; + } else { + var4 = 493286122; + } + break; + case -867544310: + default: + var1 = Integer.toHexString(var0).toUpperCase(Locale.ROOT); + var2 = new StringBuilder("EVO-"); + var3 = var1.length(); + var4 = -1989016926; + break; + case -539503185: + var2.append((char)((-1461008901 ^ 1461008949) + ((-1461008901 & 1461008949) << 1))); + var3++; + var4 = -1989016926; + break; + case 493286122: + return var2.append(var1).toString(); + } + } + } + + private static String format(String var0, Object var1) { + int var2 = 0; + int var3 = -1060751755; + + while (true) { + switch (var3) { + case -1199094986: + return "null"; + case -1060751755: + default: + if (var0 == null) { + var3 = -1199094986; + } else { + var3 = 345601977; + } + break; + case 248813645: + return var0.substring(0, var2) + + text(var1) + + var0.substring(var2 + "{}".length()); + case 345601977: + var2 = var0.indexOf("{}"); + if (var2 < 0) { + var3 = 2112793843; + } else { + var3 = 248813645; + } + break; + case 2112793843: + return var0; + } + } + } + + private static String format(String var0, Object var1, Object var2) { + int var3 = 0; + int var4 = 0; + int var5 = 961584233; + + while (true) { + switch (var5) { + case -2014171062: + var3 = var0.indexOf("{}"); + if (var3 < 0) { + var5 = -972571804; + } else { + var5 = 71813966; + } + break; + case -972571804: + return var0; + case 8431872: + return "null"; + case 71813966: + var4 = var3 + "{}".length(); + return var0.substring(0, var3) + text(var1) + format(var0.substring(var4), var2); + case 961584233: + default: + if (var0 == null) { + var5 = 8431872; + } else { + var5 = -2014171062; + } + } + } + } + + private static String text(Object var0) { + Throwable var1 = null; + int var2 = 136351617; + + while (true) { + switch (var2) { + case -1136243395: + if (var0 instanceof Throwable) { + var2 = 1248682857; + } else { + var2 = -967013030; + } + break; + case -967013030: + return String.valueOf(var0); + case 136351617: + default: + if (var0 == null) { + var2 = 1221618501; + } else { + var2 = -1136243395; + } + break; + case 1221618501: + return "null"; + case 1248682857: + var1 = (Throwable)var0; + return var1.getClass().getSimpleName(); + } + } + } +} diff --git a/src/main/java/defpackage/ie.java b/src/main/java/defpackage/ie.java new file mode 100644 index 0000000..632d45a --- /dev/null +++ b/src/main/java/defpackage/ie.java @@ -0,0 +1,79 @@ +package defpackage; + +import net.minecraft.client.gui.screens.Screen; + +public final class ie { + private static final ie INSTANCE = new ie(); + private static final String NO_SCREEN = "none"; + private static final String SCREEN_TEMPLATE = "screen {}"; + private static final String MODULE_TEMPLATE = "module {} {}"; + private static final String STATE_ON = "on"; + private static final String STATE_OFF = "off"; + private static volatile String currentScreen = "none"; + + private ie() { + } + + static void install() { + j.register(INSTANCE); + } + + public static String currentScreen() { + return currentScreen; + } + + @k + public void onSetScreen(eu var1) { + Screen var2 = null; + String var3 = null; + String var5 = null; + int var4 = 1765854768; + + while (true) { + switch (var4) { + case -1959378194: + return; + case -1157911915: + currentScreen = var3; + id.debug(Cif.GUI, "screen {}", var3); + return; + case -1042249799: + var5 = var2.getClass().getSimpleName(); + var4 = 1303704057; + break; + case 857163791: + var5 = "none"; + var4 = 1303704057; + break; + case 1303704057: + var3 = var5; + if (var3.equals(currentScreen)) { + var4 = -1959378194; + } else { + var4 = -1157911915; + } + break; + case 1765854768: + default: + var2 = var1.getScreen(); + if (var2 == null) { + var4 = 857163791; + } else { + var4 = -1042249799; + } + } + } + } + + @k + public void onModuleToggle(ex var1) { + id.debug( + Cif.MODULE, + "module {} {}", + var1.getModule().getName(), + var1.isEnabled() + ? "on" + : "off" + ); + } +} diff --git a/src/main/java/defpackage/ig.java b/src/main/java/defpackage/ig.java new file mode 100644 index 0000000..f915ec8 --- /dev/null +++ b/src/main/java/defpackage/ig.java @@ -0,0 +1,495 @@ +package defpackage; + +import java.util.Iterator; +import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.LocalPlayer; + +public final class ig { + private static final int TIMELINE_LIMIT = 200; + private static final int ISSUE_LIMIT = 15; + private static final int SUMMARY_ISSUE_LIMIT = 3; + private static final int SUMMARY_MESSAGE_LIMIT = 140; + private static final long BYTES_PER_MEGABYTE = 1048576L; + private static final long MILLIS_PER_SECOND = 1000L; + private static final long SECONDS_PER_MINUTE = 60L; + private static final long MINUTES_PER_HOUR = 60L; + private static final String TITLE = "EvoVis diagnostics"; + private static final String ISSUES_HEADER = "-- issues --"; + private static final String TIMELINE_HEADER = "-- timeline --"; + private static final String STATE_HEADER = "-- state --"; + private static final String NO_ISSUES = "none"; + private static final String NEW_LINE = "\n"; + private static final String SPACE = " "; + private static final String DOT = " · "; + private static final String INDENT = " "; + private static final String THREAD_OPEN = " ["; + private static final String THREAD_CLOSE = "] "; + private static final String COUNT_PREFIX = " x"; + private static final String FIRST_PREFIX = " first "; + private static final String LAST_PREFIX = " last "; + private static final String UPTIME_PREFIX = "uptime "; + private static final String CAPTURED_PREFIX = "events "; + private static final String CAPTURED_SEPARATOR = " captured / "; + private static final String CAPTURED_SUFFIX = " kept"; + private static final String WARNINGS_PREFIX = "warnings "; + private static final String ERRORS_PREFIX = "errors "; + private static final String SIGNALS_PREFIX = "signals "; + private static final String OVERRIDES_PREFIX = "log levels: "; + private static final String MODULES_PREFIX = "modules: "; + private static final String SCREEN_PREFIX = "screen: "; + private static final String WORLD_PREFIX = "world: "; + private static final String PLAYERS_PREFIX = "players "; + private static final String FPS_PREFIX = "fps "; + private static final String MEMORY_PREFIX = "memory "; + private static final String MEMORY_SEPARATOR = "/"; + private static final String MEMORY_SUFFIX = " MB"; + private static final String NO_WORLD = "not loaded"; + private static final String NO_MODULES = "none"; + private static final String UNAVAILABLE = "unavailable"; + private static final String TIME_FORMAT = "%02d:%02d:%02d.%03d"; + private static final String STATE_FAILURE = "state unavailable: "; + private static final String ELLIPSIS = "…"; + private static final String MODULE_SEPARATOR = ", "; + + private ig() { + } + + public static String render() { + StringBuilder var0 = new StringBuilder(); + appendHeader(var0); + appendIssues(var0); + appendTimeline(var0); + appendState(var0); + return var0.toString(); + } + + public static String summary() { + List var0 = null; + StringBuilder var1 = null; + int var2 = 0; + int var3 = 0; + ih var4 = null; + int var5 = 2045261530; + + while (true) { + switch (var5) { + case -1965350794: + var1.append("\n"); + var5 = -199800757; + break; + case -1517141059: + var1 = new StringBuilder(); + var2 = Math.min(3, var0.size()); + var3 = 0; + var5 = 693195303; + break; + case -1099177043: + return "none"; + case -199800757: + var1.append(var4.fingerprint()) + .append(" ") + .append(var4.level().name()) + .append(" ") + .append(var4.category().key()) + .append(" x") + .append(var4.occurrences()) + .append(" · ") + .append(shorten(var4.message())); + var3++; + var5 = 693195303; + break; + case 693195303: + if (var3 < var2) { + var5 = 1121868071; + } else { + var5 = 1919282886; + } + break; + case 1121868071: + var4 = (ih)var0.get(var3); + if (var3 > 0) { + var5 = -1965350794; + } else { + var5 = -199800757; + } + break; + case 1919282886: + return var1.toString(); + case 2045261530: + default: + var0 = id.issues(ii.WARN); + if (var0.isEmpty()) { + var5 = -1099177043; + } else { + var5 = -1517141059; + } + } + } + } + + private static void appendHeader(StringBuilder var0) { + long var1 = (-8524219246345957359L | 8524219246345957359L) + (-8524219246345957359L & 8524219246345957359L); + String var3 = null; + int var4 = -245616995; + + while (true) { + switch (var4) { + case -1606694968: + return; + case -245616995: + default: + var1 = System.currentTimeMillis() - id.startMillis(); + var0.append("EvoVis diagnostics") + .append(" · ") + .append(cb.label()) + .append("\n") + .append("uptime ") + .append(elapsed(var1)) + .append(" · ") + .append("events ") + .append(id.captured()) + .append(" captured / ") + .append(id.retained()) + .append(" kept") + .append(" · ") + .append("signals ") + .append(id.signals()) + .append(" · ") + .append("warnings ") + .append(id.warnings()) + .append(" · ") + .append("errors ") + .append(id.errors()) + .append("\n"); + var3 = Cif.describeOverrides(); + if (!var3.isEmpty()) { + var4 = 1011335531; + } else { + var4 = -1606694968; + } + break; + case 1011335531: + var0.append("log levels: ") + .append(var3) + .append("\n"); + var4 = -1606694968; + } + } + } + + private static void appendIssues(StringBuilder var0) { + List var1 = null; + int var2 = 0; + int var3 = 0; + ih var4 = null; + int var5 = 742844947; + + while (true) { + switch (var5) { + case -1652137984: + var2 = Math.min(15, var1.size()); + var3 = 0; + var5 = -225833375; + break; + case -809272211: + return; + case -225833375: + if (var3 < var2) { + var5 = 2127253650; + } else { + var5 = -809272211; + } + break; + case 246554154: + var0.append("none") + .append("\n"); + return; + case 371613116: + var0.append(" ") + .append(var4.trace()) + .append("\n"); + var5 = 1640639529; + break; + case 742844947: + default: + var0.append("\n") + .append("-- issues --") + .append("\n"); + var1 = id.issues(ii.WARN); + if (var1.isEmpty()) { + var5 = 246554154; + } else { + var5 = -1652137984; + } + break; + case 1640639529: + var3++; + var5 = -225833375; + break; + case 2127253650: + var4 = (ih)var1.get(var3); + var0.append(var4.fingerprint()) + .append(" ") + .append(var4.level().name()) + .append(" ") + .append(var4.category().key()) + .append(" x") + .append(var4.occurrences()) + .append(" first ") + .append(elapsed(var4.firstMillis() - id.startMillis())) + .append(" last ") + .append(elapsed(var4.lastMillis() - id.startMillis())) + .append("\n") + .append(" ") + .append(var4.message()) + .append("\n"); + if (var4.trace() != null) { + var5 = 371613116; + } else { + var5 = 1640639529; + } + } + } + } + + private static void appendTimeline(StringBuilder var0) { + Iterator var1 = null; + ij var2 = null; + int var3 = 1404830305; + + while (true) { + switch (var3) { + case 634364952: + return; + case 1010789233: + if (var1.hasNext()) { + var3 = 1367839461; + } else { + var3 = 634364952; + } + break; + case 1367839461: + var2 = (ij)var1.next(); + var0.append(elapsed(var2.timestampMillis() - id.startMillis())) + .append(" ") + .append(var2.level().getMarker()) + .append(" ") + .append(var2.category().key()) + .append(" [") + .append(var2.thread()) + .append("] ") + .append(var2.message()) + .append("\n"); + var3 = 1010789233; + break; + case 1404830305: + default: + var0.append("\n") + .append("-- timeline --") + .append("\n"); + var1 = id.recent(200).iterator(); + var3 = 1010789233; + } + } + } + + private static void appendState(StringBuilder var0) { + var0.append("\n") + .append("-- state --") + .append("\n"); + + try { + var0.append("modules: ") + .append(enabledModules()) + .append("\n"); + Minecraft var1 = Minecraft.getInstance(); + ClientLevel var2 = var1.level; + LocalPlayer var3 = var1.player; + var0.append("screen: ") + .append(ie.currentScreen()) + .append(" · ") + .append("world: ") + .append( + var2 == null ? "not loaded" : var2.dimension().identifier().toString() + ) + .append(" · ") + .append("players ") + .append(var2 == null ? 0: var2.players().size()) + .append(" · ") + .append("fps ") + .append(var1.getFps()) + .append("\n"); + Runtime var4 = Runtime.getRuntime(); + var0.append("memory ") + .append( + (var4.totalMemory() - var4.freeMemory()) + / ((5243643514002429515L ^ -5243643514001380939L) + ((5243643514002429515L & -5243643514001380939L) << 1)) + ) + .append("/") + .append(var4.maxMemory() / ((8795433987222268009L | -8795433987221219433L) + (8795433987222268009L & -8795433987221219433L))) + .append(" MB") + .append(var3 == null ? " " : " · " + var3.getScoreboardName()) + .append("\n"); + } catch (Throwable var5) { + var0.append("state unavailable: ") + .append(var5) + .append("\n"); + } + } + + private static String enabledModules() { + bz var0 = null; + lc var1 = null; + StringBuilder var2 = null; + Iterator var3 = null; + rm var4 = null; + lc var6 = null; + String var7 = null; + int var5 = -1178733544; + + while (true) { + switch (var5) { + case -2004486753: + return "unavailable"; + case -1810067554: + var5 = -182271219; + break; + case -1746077622: + var2.append(", "); + var5 = -1429653706; + break; + case -1510387611: + var7 = var2.toString(); + var5 = 1759493374; + break; + case -1429653706: + var2.append(var4.getName()); + var5 = -182271219; + break; + case -1229202592: + var4 = (rm)var3.next(); + if (!var4.isEnabled()) { + var5 = -1810067554; + } else { + var5 = 441834919; + } + break; + case -1178733544: + default: + var0 = bz.getInstance(); + if (var0 == null) { + var5 = 1556866717; + } else { + var5 = 357557561; + } + break; + case -1165081111: + var7 = "none"; + var5 = 1759493374; + break; + case -633342688: + if (var2.isEmpty()) { + var5 = -1165081111; + } else { + var5 = -1510387611; + } + break; + case -182271219: + if (var3.hasNext()) { + var5 = -1229202592; + } else { + var5 = -633342688; + } + break; + case 357557561: + var6 = var0.getModuleManager(); + var5 = 1352258527; + break; + case 441834919: + if (!var2.isEmpty()) { + var5 = -1746077622; + } else { + var5 = -1429653706; + } + break; + case 1352258527: + var1 = var6; + if (var1 == null) { + var5 = -2004486753; + } else { + var5 = 1826443921; + } + break; + case 1556866717: + var6 = null; + var5 = 1352258527; + break; + case 1759493374: + return var7; + case 1826443921: + var2 = new StringBuilder(); + var3 = var1.getModules().iterator(); + var5 = -182271219; + } + } + } + + private static String shorten(String var0) { + String var1 = null; + String var3 = null; + int var2 = -567526309; + + while (true) { + switch (var2) { + case -1317663450: + var1 = var0.replace( + "\n", " " + ); + if (var1.length() <= (1960522702 | -1960522562) + (1960522702 & -1960522562)) { + var2 = 2074691840; + } else { + var2 = -1297778271; + } + break; + case -1297778271: + var3 = var1.substring(0, (-507945364 | 507945504) + (-507945364 & 507945504)) + "…"; + var2 = -680788707; + break; + case -680788707: + return var3; + case -567526309: + default: + if (var0 == null) { + var2 = 700793887; + } else { + var2 = -1317663450; + } + break; + case 700793887: + return "none"; + case 2074691840: + var3 = var1; + var2 = -680788707; + } + } + } + + private static String elapsed(long var0) { + long var2 = Math.max((1242094316637590760L | -1242094316637590760L) + (1242094316637590760L & -1242094316637590760L), var0); + long var4 = var2 / ((-1233412347142711796L ^ 1233412347142712796L) + ((-1233412347142711796L & 1233412347142712796L) << 1)); + String var10000 = "%02d:%02d:%02d.%03d"; + Object[] var10001 = new Object[4]; + var10001[0] = var4 + / ((-3692699501583208559L ^ 3692699501583212159L) + ((-3692699501583208559L & 3692699501583212159L) << 1)); + var10001[1] = var4 + / ((7584400684803098282L | -7584400684803098222L) + (7584400684803098282L & -7584400684803098222L)) + % ((-835966347332901357L | 835966347332901417L) + (-835966347332901357L & 835966347332901417L)); + var10001[2] = var4 + % ((1134874709935392338L | -1134874709935392278L) + (1134874709935392338L & -1134874709935392278L)); + var10001[3] = var2 + % ((4639610743827198965L | -4639610743827197965L) + (4639610743827198965L & -4639610743827197965L)); + return var10000.formatted(var10001); + } +} diff --git a/src/main/java/defpackage/ih.java b/src/main/java/defpackage/ih.java new file mode 100644 index 0000000..4eca7b2 --- /dev/null +++ b/src/main/java/defpackage/ih.java @@ -0,0 +1,4 @@ +package defpackage; + +public record ih(String fingerprint, Cif category, ii level, String message, String trace, long firstMillis, long lastMillis, long occurrences) { +} diff --git a/src/main/java/defpackage/ii.java b/src/main/java/defpackage/ii.java new file mode 100644 index 0000000..a666e25 --- /dev/null +++ b/src/main/java/defpackage/ii.java @@ -0,0 +1,107 @@ +package defpackage; + + +public enum ii { + TRACE(0, "T"), + DEBUG(1, "D"), + INFO(2, "I"), + WARN(3, "W"), + ERROR(4, "E"); + + public static final ii DEFAULT_CONSOLE = INFO; + private final int severity; + private final String marker; + + public boolean atLeast(ii var1) { + int var3 = 0; + int var2 = -32021702; + + while (true) { + switch (var2) { + case -527724987: + return (boolean)((var3) != 0); + case -32021702: + default: + if (this.severity >= var1.severity) { + var2 = 120878687; + } else { + var2 = 288145949; + } + break; + case 120878687: + var3 = 1; + var2 = -527724987; + break; + case 288145949: + var3 = 0; + var2 = -527724987; + } + } + } + + public static ii parse(String var0, ii var1) { + String var2 = null; + ii[] var3 = null; + int var4 = 0; + int var5 = 0; + Object var6 = null; + int var7 = 2003519675; + + while (true) { + switch (var7) { + case -742434536: + var6 = var3[var5]; + if (((ii)var6).name().equalsIgnoreCase(var2)) { + var7 = 1669134165; + } else { + var7 = -602409429; + } + break; + case -602409429: + var5++; + var7 = 2073523905; + break; + case 113490497: + return var1; + case 418332429: + return var1; + case 635004307: + var2 = var0.trim(); + var3 = values(); + var4 = var3.length; + var5 = 0; + var7 = 2073523905; + break; + case 1669134165: + return (ii)var6; + case 2003519675: + default: + if (var0 == null) { + var7 = 113490497; + } else { + var7 = 635004307; + } + break; + case 2073523905: + if (var5 < var4) { + var7 = -742434536; + } else { + var7 = 418332429; + } + } + } + } + + public int getSeverity() { + return this.severity; + } + + public String getMarker() { + return this.marker; + } + + ii(int var3, String var4) { + this.severity = var3; + this.marker = var4; + } +} diff --git a/src/main/java/defpackage/ij.java b/src/main/java/defpackage/ij.java new file mode 100644 index 0000000..bcb3f35 --- /dev/null +++ b/src/main/java/defpackage/ij.java @@ -0,0 +1,4 @@ +package defpackage; + +public record ij(long timestampMillis, Cif category, ii level, String thread, String message, String fingerprint) { +} diff --git a/src/main/java/defpackage/ik.java b/src/main/java/defpackage/ik.java new file mode 100644 index 0000000..16e105f --- /dev/null +++ b/src/main/java/defpackage/ik.java @@ -0,0 +1,69 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; + +final class ik { + private final ij[] slots; + private int cursor; + private int size; + private long total; + + ik(int var1) { + this.slots = new ij[var1]; + } + + synchronized void add(ij var1) { + this.slots[this.cursor] = var1; + this.cursor = this.cursor + 1== this.slots.length + ? 0: this.cursor + 1; + if (this.size < this.slots.length) { + this.size += 1; + } + + this.total += (3797832643464458721L ^ -3797832643464458720L) + ((3797832643464458721L & -3797832643464458720L) << 1); + } + + synchronized List snapshot(int var1) { + int var2 = 0; + ArrayList var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = -1067450002; + + while (true) { + switch (var6) { + case -1067450002: + default: + var2 = Math.min(var1, this.size); + var3 = new ArrayList(var2); + var4 = (this.cursor - var2 + this.slots.length) % this.slots.length; + var5 = 0; + var6 = -1064728013; + break; + case -1064728013: + if (var5 < var2) { + var6 = -362664346; + } else { + var6 = 1499479769; + } + break; + case -362664346: + var3.add(this.slots[(var4 + var5) % this.slots.length]); + var5++; + var6 = -1064728013; + break; + case 1499479769: + return var3; + } + } + } + + synchronized int size() { + return this.size; + } + + synchronized long total() { + return this.total; + } +} diff --git a/src/main/java/defpackage/il.java b/src/main/java/defpackage/il.java new file mode 100644 index 0000000..093da34 --- /dev/null +++ b/src/main/java/defpackage/il.java @@ -0,0 +1,69 @@ +package defpackage; + +import java.util.Objects; + +final class il { + static final int SUPPRESSED = -1; + private static final long WINDOW_MILLIS = 10000L; + private static final int REPEAT_LIMIT = 3; + private static final int WINDOW_LIMIT = 24; + private final String fingerprint; + private final Cif category; + private final long firstMillis; + private ii peakLevel = ii.TRACE; + private String message; + private String trace; + private long lastMillis; + private long occurrences; + private String lastAdmittedMessage; + private long windowStartMillis; + private int windowEmitted; + private int windowRepeats; + private int pendingSuppressed; + + il(String var1, Cif var2, long var3) { + this.fingerprint = var1; + this.category = var2; + this.firstMillis = var3; + this.windowStartMillis = var3; + } + + synchronized int admit(ii var1, String var2, String var3, long var4) { + this.occurrences += (-706741019807723593L ^ 706741019807723594L) + ((-706741019807723593L & 706741019807723594L) << 1); + this.lastMillis = var4; + this.message = var2; + if (var3 != null) { + this.trace = var3; + } + + if (var1.atLeast(this.peakLevel)) { + this.peakLevel = var1; + } + + if (var4 - this.windowStartMillis >= (7001480147524847841L | -7001480147524837841L) + (7001480147524847841L & -7001480147524837841L)) { + this.windowStartMillis = var4; + this.windowEmitted = 0; + this.windowRepeats = 0; + } + + int var6 = !Objects.equals(var2, this.lastAdmittedMessage) + ? 1: 0; + if (this.windowEmitted < (1483180208 | -1483180184) + (1483180208 & -1483180184) + && (var6 != 0 || this.windowRepeats < (-1874146364 ^ 1874146367) + ((-1874146364 & 1874146367) << 1))) { + this.windowRepeats = var6 != 0 + ? 1: this.windowRepeats + 1; + this.windowEmitted += 1; + this.lastAdmittedMessage = var2; + int var7 = this.pendingSuppressed; + this.pendingSuppressed = 0; + return var7; + } else { + this.pendingSuppressed += 1; + return -1; + } + } + + synchronized ih snapshot() { + return new ih(this.fingerprint, this.category, this.peakLevel, this.message, this.trace, this.firstMillis, this.lastMillis, this.occurrences); + } +} diff --git a/src/main/java/defpackage/im.java b/src/main/java/defpackage/im.java new file mode 100644 index 0000000..9e7a7af --- /dev/null +++ b/src/main/java/defpackage/im.java @@ -0,0 +1,210 @@ +package defpackage; + +final class im { + private static final String PROJECT_PACKAGE = "evo."; + private static final int MAX_FRAMES = 4; + private static final int MAX_CAUSE_FRAMES = 2; + private static final int MAX_CAUSES = 3; + private static final String FRAME_PREFIX = "\n at "; + private static final String CAUSE_PREFIX = "\n caused by "; + private static final String MESSAGE_SEPARATOR = ": "; + private static final String ORIGIN_SEPARATOR = "#"; + private static final String LINE_SEPARATOR = ":"; + private static final String UNKNOWN_ORIGIN = "unknown"; + + private im() { + } + + static String summarize(Throwable var0) { + if (var0 == null) { + return null; + } + + StringBuilder var1 = new StringBuilder(); + Throwable var2 = var0; + + for (int var3 = 0; var2 != null && var3 < 3; var3++) { + if (var3 > 0) { + var1.append("\n caused by "); + } + + var1.append(var2.getClass().getName()); + String var4 = var2.getMessage(); + if (var4 != null && !var4.isEmpty()) { + var1.append(": ").append(var4); + } + + appendFrames(var1, var2, var3 == 0 ? 4: (1381445507 | -1381445505) + (1381445507 & -1381445505)); + Throwable var5 = var2.getCause(); + var2 = var5 == var2 ? null : var5; + } + + return var1.toString(); + } + + static String origin(Throwable var0) { + StackTraceElement[] var1 = null; + StackTraceElement[] var2 = null; + int var3 = 0; + int var4 = 0; + Object var5 = null; + String var7 = null; + int var6 = -2097196902; + + while (true) { + switch (var6) { + case -2097196902: + default: + if (var0 == null) { + var6 = -217471469; + } else { + var6 = 514072711; + } + break; + case -1763750315: + var5 = var2[var4]; + if (var5.getClassName().startsWith("evo.")) { + var6 = -840644232; + } else { + var6 = 132764009; + } + break; + case -840644232: + return describe((StackTraceElement)var5); + case -772387294: + if (var1.length == 0) { + var6 = -137789799; + } else { + var6 = 956652700; + } + break; + case -217471469: + return "unknown"; + case -137789799: + var7 = var0.getClass().getName(); + var6 = 1777265034; + break; + case 132764009: + var4++; + var6 = 1773656285; + break; + case 514072711: + var1 = var0.getStackTrace(); + var2 = var1; + var3 = var2.length; + var4 = 0; + var6 = 1773656285; + break; + case 956652700: + var7 = describe(var1[0]); + var6 = 1777265034; + break; + case 1773656285: + if (var4 < var3) { + var6 = -1763750315; + } else { + var6 = -772387294; + } + break; + case 1777265034: + return var7; + } + } + } + + private static String describe(StackTraceElement var0) { + return var0.getClassName() + "#" + var0.getMethodName() + ":" + var0.getLineNumber(); + } + + private static void appendFrames(StringBuilder var0, Throwable var1, int var2) { + StackTraceElement[] var3 = null; + int var4 = 0; + int var5 = 0; + StackTraceElement[] var6 = null; + int var7 = 0; + int var8 = 0; + StackTraceElement var9 = null; + int var10 = -1582480424; + + while (true) { + switch (var10) { + case -1582480424: + default: + var3 = var1.getStackTrace(); + var4 = 0; + var5 = 0; + var6 = var3; + var7 = var6.length; + var8 = 0; + var10 = -791550697; + break; + case -1186025062: + return; + case -1000056264: + if (var4 != 0) { + var10 = 266667757; + } else { + var10 = 1638231876; + } + break; + case -916299618: + var8++; + var10 = 1477835300; + break; + case -791550697: + if (var8 < var7) { + var10 = 1213136037; + } else { + var10 = -1000056264; + } + break; + case -563426452: + var10 = -1000056264; + break; + case -550462179: + var9 = var6[var8]; + if (!var9.getClassName().startsWith("evo.")) { + var10 = 1847513340; + } else { + var10 = 158635841; + } + break; + case 158635841: + var0.append("\n at ").append(var9); + return; + case 266667757: + return; + case 1213136037: + var9 = var6[var8]; + if (var5 >= var2) { + var10 = -563426452; + } else { + var10 = 1227166750; + } + break; + case 1227166750: + var0.append("\n at ").append(var9); + var4 |= var9.getClassName().startsWith("evo."); + var5++; + var8++; + var10 = -791550697; + break; + case 1477835300: + if (var8 < var7) { + var10 = -550462179; + } else { + var10 = -1186025062; + } + break; + case 1638231876: + var6 = var3; + var7 = var6.length; + var8 = 0; + var10 = 1477835300; + break; + case 1847513340: + var10 = -916299618; + } + } + } +} diff --git a/src/main/java/defpackage/in.java b/src/main/java/defpackage/in.java new file mode 100644 index 0000000..5ebe2bb --- /dev/null +++ b/src/main/java/defpackage/in.java @@ -0,0 +1,1020 @@ +package defpackage; + +import com.sun.jna.Function; +import com.sun.jna.Native; +import com.sun.jna.Pointer; +import com.sun.jna.platform.win32.Ole32; +import com.sun.jna.platform.win32.Guid.CLSID; +import com.sun.jna.platform.win32.Guid.IID; +import com.sun.jna.platform.win32.WinNT.HRESULT; +import com.sun.jna.ptr.IntByReference; +import com.sun.jna.ptr.PointerByReference; +import java.util.Arrays; +import java.util.Locale; +import java.util.concurrent.atomic.AtomicBoolean; + +public final class in { + public static final int BAND_COUNT = 5; + private static final int SAMPLE_COUNT = 1024; + private static final int FFT_BITS = 10; + private static final int HALF_SAMPLES = 512; + private static final String THREAD_NAME = "evolution-audio-equalizer"; + private static final String OS_PROPERTY = "os.name"; + private static final String OS_WINDOWS_PREFIX = "win"; + private static final String CLSID_MM_DEVICE_ENUMERATOR = "{BCDE0395-E52F-467C-8E3D-C4579291692E}"; + private static final String IID_IMM_DEVICE_ENUMERATOR = "{A95664D2-9614-4F35-A746-DE8DB63617E6}"; + private static final String IID_IAUDIO_CLIENT = "{1CB9AD4C-DBFA-4C32-B178-C2F568A703B2}"; + private static final String IID_IAUDIO_CAPTURE_CLIENT = "{C8ADBD64-E71E-48A0-A4DE-185C395CD317}"; + private static final int DATA_FLOW_RENDER = 0; + private static final int ROLE_CONSOLE = 0; + private static final int AUDCLNT_SHAREMODE_SHARED = 0; + private static final int AUDCLNT_STREAMFLAGS_LOOPBACK = 131072; + private static final int AUDCLNT_BUFFERFLAGS_SILENT = 2; + private static final long REFTIMES_BUFFER_DURATION = 10000000L; + private static final long REFTIMES_PERIODICITY = 0L; + private static final int VTBL_UNKNOWN_RELEASE = 2; + private static final int VTBL_ENUM_GET_DEFAULT_ENDPOINT = 4; + private static final int VTBL_DEVICE_ACTIVATE = 3; + private static final int VTBL_CLIENT_INITIALIZE = 3; + private static final int VTBL_CLIENT_GET_MIX_FORMAT = 8; + private static final int VTBL_CLIENT_START = 10; + private static final int VTBL_CLIENT_STOP = 11; + private static final int VTBL_CLIENT_GET_SERVICE = 14; + private static final int VTBL_CAPTURE_GET_BUFFER = 3; + private static final int VTBL_CAPTURE_RELEASE_BUFFER = 4; + private static final int VTBL_CAPTURE_GET_NEXT_PACKET = 5; + private static final short FORMAT_TAG_PCM = 1; + private static final short FORMAT_TAG_IEEE_FLOAT = 3; + private static final short FORMAT_TAG_EXTENSIBLE = -2; + private static final int OFFSET_FORMAT_TAG = 0; + private static final int OFFSET_CHANNELS = 2; + private static final int OFFSET_SAMPLES_PER_SEC = 4; + private static final int OFFSET_BLOCK_ALIGN = 12; + private static final int OFFSET_BITS_PER_SAMPLE = 14; + private static final int OFFSET_CB_SIZE = 16; + private static final int OFFSET_SUB_FORMAT = 24; + private static final int HRESULT_OK = 0; + private static final long CAPTURE_SLEEP_MILLIS = 15L; + private static final long RECONNECT_SLEEP_MILLIS = 1000L; + private static final long IDLE_SHUTDOWN_MILLIS = 3500L; + private static final float FLOAT_SCALE_16BIT = 32768.0F; + private static final float STEREO_DIVISOR = 2.0F; + private static final float SILENCE_THRESHOLD = 5.0E-5F; + private static final float INITIAL_ENVELOPE = 0.04F; + private static final float MIN_ENVELOPE = 1.0E-4F; + private static final float ENVELOPE_ATTACK = 0.5F; + private static final float ENVELOPE_DECAY = 0.03F; + private static final float INITIAL_BAND_PEAK = 0.05F; + private static final float MIN_BAND_PEAK = 0.008F; + private static final float BAND_PEAK_ATTACK = 0.7F; + private static final float BAND_PEAK_DECAY = 0.012F; + private static final float HEADROOM_FACTOR = 0.78F; + private static final float EXPANSION_POWER = 1.35F; + private static final float ATTACK_FACTOR = 0.72F; + private static final float DECAY_FACTOR = 0.18F; + private static final float LEVEL_MIN = 0.0F; + private static final float LEVEL_MAX = 1.0F; + private static final float[] BAND_MIN_FREQS; + private static final float[] BAND_MAX_FREQS; + private static final float[] BAND_WEIGHTS; + private static final float[] HANN_WINDOW = new float[1024]; + private static final float[] COS_TABLE = new float[512]; + private static final float[] SIN_TABLE = new float[512]; + private static final int[] BIT_REVERSED = new int[1024]; + private static final in INSTANCE = new in(); + private final AtomicBoolean running = new AtomicBoolean(); + private final boolean windows = System.getProperty("os.name", "") + .toLowerCase(Locale.ROOT) + .startsWith("win"); + private static final String MAC_THREAD_NAME = "evolution-audio-macos"; + private static final int MAC_READ_SAMPLES = 12000; + private static final int MAX_MAC_RESTARTS = 3; + private static final String MAC_CAPTURE_FAILURE = "macOS audio capture failed"; + private final boolean mac = (boolean)(((!this.windows && iq.isAvailable() + ? 1: (122664002 | -122664002) + (122664002 & -122664002))) != 0); + private final float[] macSamples = new float[12000]; + private volatile boolean permissionDenied; + private final float[] ringBuffer = new float[1024]; + private final float[] realBuffer = new float[1024]; + private final float[] imagBuffer = new float[1024]; + private final float[] smoothedLevels = new float[5]; + private final float[] rawWeighted = new float[5]; + private final float[] bandPeaks = new float[5]; + private float inputEnvelope = 0.04F; + private volatile float[] publishedLevels = new float[5]; + private volatile jl pcmSink; + private float[] tapBuffer = new float[1024]; + private volatile long lastRequestMillis; + private volatile boolean capturing; + private int ringWriteIndex; + + private in() { + Arrays.fill(this.bandPeaks, 0.05F); + } + + public static in getInstance() { + return INSTANCE; + } + + public boolean isCapturing() { + return this.capturing; + } + + public boolean isSupported() { + int var2 = 0; + int var1 = -313636491; + + while (true) { + switch (var1) { + case -2043074563: + var2 = 1; + var1 = -108489319; + break; + case -313636491: + default: + if (!this.windows) { + var1 = 462869334; + } else { + var1 = -2043074563; + } + break; + case -108489319: + return (boolean)((var2) != 0); + case 446180259: + var2 = 0; + var1 = -108489319; + break; + case 462869334: + if (this.mac) { + var1 = -2043074563; + } else { + var1 = 446180259; + } + } + } + } + + public boolean isPermissionDenied() { + return this.permissionDenied; + } + + public void setPcmSink(jl var1) { + this.pcmSink = var1; + } + + public float[] getLevels() { + return this.publishedLevels; + } + + public void requestUpdates() { + Thread var1 = null; + Thread var3 = null; + int var2 = -186630927; + + while (true) { + switch (var2) { + case -1680472873: + var1 = var3; + var1.setDaemon((boolean)((((-1770584149 | 1770584150) + (-1770584149 & 1770584150))) != 0)); + var1.setPriority((1868945310 ^ -1868945308) + ((1868945310 & -1868945308) << 1)); + var1.start(); + var2 = 1121928812; + break; + case -330671618: + if (this.permissionDenied) { + var2 = -251257404; + } else { + var2 = 225468126; + } + break; + case -260217876: + if (this.mac) { + var2 = -330671618; + } else { + var2 = -251257404; + } + break; + case -251257404: + return; + case -186630927: + default: + this.lastRequestMillis = System.currentTimeMillis(); + if (!this.windows) { + var2 = -260217876; + } else { + var2 = 225468126; + } + break; + case 225468126: + if (this.running + .compareAndSet( + (boolean)((((0)) != 0)), (boolean)((((31718635 ^ -31718634) + ((31718635 & -31718634) << 1)) + ) != 0))) { + var2 = 1034732509; + } else { + var2 = 1121928812; + } + break; + case 779472441: + var3 = new Thread( + this::runCaptureLoop, "evolution-audio-equalizer" + ); + var2 = -1680472873; + break; + case 1034732509: + if (this.windows) { + var2 = 779472441; + } else { + var2 = 1579655120; + } + break; + case 1121928812: + return; + case 1579655120: + var3 = new Thread( + this::runMacCaptureLoop, + "evolution-audio-macos" + ); + var2 = -1680472873; + } + } + } + + // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow. + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private void runCaptureLoop() { + HRESULT var1 = Ole32.INSTANCE.CoInitializeEx(null, (-1307305973 ^ 1307305973) + ((-1307305973 & 1307305973) << 1)); + + while (true) { + boolean var4 = false /* VF: Semaphore variable */; + + try { + var4 = true; + if (!this.running.get()) { + var4 = false; + break; + } + + if (System.currentTimeMillis() - this.lastRequestMillis + > (-1467586903413956123L | 1467586903413959623L) + (-1467586903413956123L & 1467586903413959623L)) { + this.capturing = (boolean)(((0)) != 0); + this.resetLevels(); + this.running.set((boolean)((((-576471101 ^ 576471101) + ((-576471101 & 576471101) << 1))) != 0)); + var4 = false; + break; + } + + this.captureSession(); + } finally { + if (var4) { + this.capturing = (boolean)(((0)) != 0); + this.resetLevels(); + this.running.set((boolean)((((1597272969 | -1597272969) + (1597272969 & -1597272969))) != 0)); + if (var1 != null && var1.intValue() == 0) { + Ole32.INSTANCE.CoUninitialize(); + } + } + } + } + + this.capturing = (boolean)(((0)) != 0); + this.resetLevels(); + this.running.set((boolean)((((-1648759842 | 1648759842) + (-1648759842 & 1648759842))) != 0)); + if (var1 != null && var1.intValue() == 0) { + Ole32.INSTANCE.CoUninitialize(); + } + } + + // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow. + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private void runMacCaptureLoop() { + iq var1 = null; + int var2 = 0; + + while (true) { + boolean var10 = false /* VF: Semaphore variable */; + + label143: { + try { + var10 = true; + if (this.running.get()) { + if (System.currentTimeMillis() - this.lastRequestMillis + > (-8013551586692227380L ^ 8013551586692230880L) + ((-8013551586692227380L & 8013551586692230880L) << 1)) { + var10 = false; + } else { + label156: { + if (var1 == null || !var1.isAlive()) { + if (var1 != null) { + if (var1.permissionDenied()) { + this.permissionDenied = (boolean)(((1)) != 0); + var10 = false; + break label156; + } + + var1.close(); + if (++var2 > (402074660 ^ -402074657) + ((402074660 & -402074657) << 1)) { + var10 = false; + break label156; + } + + sleepQuietly((2589655016062673922L ^ -2589655016062672922L) + ((2589655016062673922L & -2589655016062672922L) << 1)); + } + + var1 = iq.start(); + } + + sleepQuietly((3028274378532280086L | -3028274378532280071L) + (3028274378532280086L & -3028274378532280071L)); + int var3 = var1.read(this.macSamples); + int var4 = 0; + + for (int var5 = 0; var5 < var3; var5++) { + float var6 = this.macSamples[var5]; + var4 |= var6 != 0.0F + ? 1: 0; + this.ringBuffer[this.ringWriteIndex] = var6; + this.ringWriteIndex = (this.ringWriteIndex + (562022278 ^ -562022277) + ((562022278 & -562022277) << 1)) + % ((-834897160 ^ 834898184) + ((-834897160 & 834898184) << 1)); + } + + this.capturing = (boolean)(((1)) != 0); + jl var13 = this.pcmSink; + if (var13 != null && var3 > 0) { + var13.accept(this.macSamples, var3, (1435527260 | -1435479260) + (1435527260 & -1435479260)); + } + + this.processSpectralAnalysis(48000, (boolean)((var4) != 0)); + continue; + } + } + } else { + var10 = false; + } + } catch (Exception var11) { + id.warn( + Cif.MEDIA, + "macOS audio capture failed", + var11 + ); + var10 = false; + break label143; + } finally { + if (var10) { + if (var1 != null) { + var1.close(); + } + + this.capturing = (boolean)(((0)) != 0); + this.resetLevels(); + this.running.set((boolean)((((1612599839 | -1612599839) + (1612599839 & -1612599839))) != 0)); + } + } + + if (var1 != null) { + var1.close(); + } + + this.capturing = (boolean)(((0)) != 0); + this.resetLevels(); + this.running.set((boolean)((((39458946 | -39458946) + (39458946 & -39458946))) != 0)); + break; + } + + if (var1 != null) { + var1.close(); + } + + this.capturing = (boolean)(((0)) != 0); + this.resetLevels(); + this.running.set((boolean)((((-1165245689 ^ 1165245689) + ((-1165245689 & 1165245689) << 1))) != 0)); + break; + } + } + + // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow. + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private void captureSession() { + CLSID var1 = new CLSID( + "{BCDE0395-E52F-467C-8E3D-C4579291692E}" + ); + IID var2 = new IID("{A95664D2-9614-4F35-A746-DE8DB63617E6}"); + PointerByReference var3 = new PointerByReference(); + HRESULT var4 = Ole32.INSTANCE.CoCreateInstance(var1, null, 7, var2, var3); + if (var4 != null && var4.intValue() == 0) { + Pointer var5 = var3.getValue(); + Pointer var6 = null; + Pointer var7 = null; + Pointer var8 = null; + boolean var58 = false /* VF: Semaphore variable */; + + label253: { + label252: { + label251: { + label250: { + label249: { + try { + var58 = true; + Pointer var9 = var5.getPointer((-8869697290728664304L | 8869697290728664304L) + (-8869697290728664304L & 8869697290728664304L)); + Function var10 = Function.getFunction( + var9.getPointer( + ((-5198559126121333763L ^ 5198559126121333767L) + ((-5198559126121333763L & 5198559126121333767L) << 1)) * Native.POINTER_SIZE + ), + (-1686484027 | 1686484090) + (-1686484027 & 1686484090) + ); + PointerByReference var11 = new PointerByReference(); + Object[] var10001 = new Object[4]; + var10001[0] = var5; + var10001[1] = 0; + var10001[2] = 0; + var10001[3] = var11; + int var12 = var10.invokeInt(var10001); + if (var12 != 0) { + sleepQuietly((-3586652288921551302L ^ 3586652288921552302L) + ((-3586652288921551302L & 3586652288921552302L) << 1)); + var58 = false; + break label253; + } + + var6 = var11.getValue(); + Pointer var13 = var6.getPointer( + (-1859543808760685255L ^ 1859543808760685255L) + ((-1859543808760685255L & 1859543808760685255L) << 1) + ); + Function var14 = Function.getFunction( + var13.getPointer( + ((6772230852095147249L ^ -6772230852095147246L) + ((6772230852095147249L & -6772230852095147246L) << 1)) * Native.POINTER_SIZE + ), + (-818896913 ^ 818896976) + ((-818896913 & 818896976) << 1) + ); + IID var15 = new IID( + "{1CB9AD4C-DBFA-4C32-B178-C2F568A703B2}" + ); + PointerByReference var16 = new PointerByReference(); + var10001 = new Object[5]; + var10001[0] = var6; + var10001[1] = var15.getPointer(); + var10001[2] = 7; + var10001[3] = null; + var10001[4] = var16; + var12 = var14.invokeInt(var10001); + if (var12 != 0) { + sleepQuietly((3336506912415997144L | -3336506912415996144L) + (3336506912415997144L & -3336506912415996144L)); + var58 = false; + break label252; + } + + var7 = var16.getValue(); + Pointer var17 = var7.getPointer((4991801622914213544L | -4991801622914213544L) + (4991801622914213544L & -4991801622914213544L)); + Function var18 = Function.getFunction( + var17.getPointer( + ((-2850721200200959750L | 2850721200200959758L) + (-2850721200200959750L & 2850721200200959758L)) * Native.POINTER_SIZE + ), + (1982337751 ^ -1982337688) + ((1982337751 & -1982337688) << 1) + ); + PointerByReference var19 = new PointerByReference(); + var10001 = new Object[2]; + var10001[0] = var7; + var10001[1] = var19; + var12 = var18.invokeInt(var10001); + if (var12 != 0) { + sleepQuietly((8725473133591328048L ^ -8725473133591327048L) + ((8725473133591328048L & -8725473133591327048L) << 1)); + var58 = false; + break label251; + } + + Pointer var20 = var19.getValue(); + short var21 = var20.getShort((-787135885327333432L ^ 787135885327333432L) + ((-787135885327333432L & 787135885327333432L) << 1)); + short var22 = var20.getShort((-2366505321244471785L | 2366505321244471787L) + (-2366505321244471785L & 2366505321244471787L)); + int var23 = var20.getInt((8080463416067119742L | -8080463416067119738L) + (8080463416067119742L & -8080463416067119738L)); + short var24 = var20.getShort((2998145670670132114L ^ -2998145670670132102L) + ((2998145670670132114L & -2998145670670132102L) << 1)); + short var25 = var20.getShort((3428110830534667407L ^ -3428110830534667393L) + ((3428110830534667407L & -3428110830534667393L) << 1)); + short var26 = var20.getShort((5676524849179215521L | -5676524849179215505L) + (5676524849179215521L & -5676524849179215505L)); + short var27 = var21; + if (var21 == (-1512278512 ^ 1512278510) + ((-1512278512 & 1512278510) << 1) + && var26 >= (2099727531 | -2099727523) + (2099727531 & -2099727523)) { + var27 = var20.getShort((-698147285110261867L ^ 698147285110261891L) + ((-698147285110261867L & 698147285110261891L) << 1)); + } + + int var28 = var27 != (-642678834 | 642678837) + (-642678834 & 642678837) + && var25 != 32? 0: 1; + Function var29 = Function.getFunction( + var17.getPointer( + ((-1179143417675055669L | 1179143417675055672L) + (-1179143417675055669L & 1179143417675055672L)) * Native.POINTER_SIZE + ), + (532692026 ^ -532691963) + ((532692026 & -532691963) << 1) + ); + var10001 = new Object[7]; + var10001[0] = var7; + var10001[1] = 0; + var10001[2] = 131072; + var10001[3] = (7358636897776098140L | -7358636897766098140L) + + (7358636897776098140L & -7358636897766098140L); + var10001[4] = (-5826453627189730205L ^ 5826453627189730205L) + + ((-5826453627189730205L & 5826453627189730205L) << 1); + var10001[5] = var20; + var10001[6] = null; + var12 = var29.invokeInt(var10001); + if (var12 != 0) { + sleepQuietly((699671224920176657L | -699671224920175657L) + (699671224920176657L & -699671224920175657L)); + var58 = false; + break label250; + } + + IID var30 = new IID( + "{C8ADBD64-E71E-48A0-A4DE-185C395CD317}" + ); + Function var31 = Function.getFunction( + var17.getPointer( + ((8333650117374223678L | -8333650117374223664L) + (8333650117374223678L & -8333650117374223664L)) * Native.POINTER_SIZE + ), + (1264174685 | -1264174622) + (1264174685 & -1264174622) + ); + PointerByReference var32 = new PointerByReference(); + var10001 = new Object[3]; + var10001[0] = var7; + var10001[1] = var30.getPointer(); + var10001[2] = var32; + var12 = var31.invokeInt(var10001); + if (var12 != 0) { + sleepQuietly((-8932721553073369938L ^ 8932721553073370938L) + ((-8932721553073369938L & 8932721553073370938L) << 1)); + var58 = false; + break label249; + } + + var8 = var32.getValue(); + Pointer var33 = var8.getPointer( + (-2632162585193409210L ^ 2632162585193409210L) + ((-2632162585193409210L & 2632162585193409210L) << 1) + ); + Function var34 = Function.getFunction( + var17.getPointer( + ((7046824768781160019L ^ -7046824768781160009L) + ((7046824768781160019L & -7046824768781160009L) << 1)) * Native.POINTER_SIZE + ), + (370751814 ^ -370751751) + ((370751814 & -370751751) << 1) + ); + var10001 = new Object[1]; + var10001[0] = var7; + var34.invokeInt(var10001); + Function var35 = Function.getFunction( + var33.getPointer( + ((-8378604819745069501L ^ 8378604819745069506L) + ((-8378604819745069501L & 8378604819745069506L) << 1)) * Native.POINTER_SIZE + ), + (79793685 | -79793622) + (79793685 & -79793622) + ); + Function var36 = Function.getFunction( + var33.getPointer( + ((-660416885159534742L ^ 660416885159534745L) + ((-660416885159534742L & 660416885159534745L) << 1)) * Native.POINTER_SIZE + ), + (560772137 ^ -560772074) + ((560772137 & -560772074) << 1) + ); + Function var37 = Function.getFunction( + var33.getPointer( + ((4604441693053660559L ^ -4604441693053660555L) + ((4604441693053660559L & -4604441693053660555L) << 1)) * Native.POINTER_SIZE + ), + (-1051189838 ^ 1051189901) + ((-1051189838 & 1051189901) << 1) + ); + Function var38 = Function.getFunction( + var17.getPointer( + ((6255962901841813180L ^ -6255962901841813169L) + ((6255962901841813180L & -6255962901841813169L) << 1)) * Native.POINTER_SIZE + ), + (881222417 ^ -881222354) + ((881222417 & -881222354) << 1) + ); + IntByReference var39 = new IntByReference(); + PointerByReference var40 = new PointerByReference(); + IntByReference var41 = new IntByReference(); + IntByReference var42 = new IntByReference(); + this.capturing = (boolean)(((1)) != 0); + + while ( + this.running.get() + && System.currentTimeMillis() - this.lastRequestMillis + <= (3646296176605471621L ^ -3646296176605468121L) + ((3646296176605471621L & -3646296176605468121L) << 1) + ) { + sleepQuietly((3445524868813974958L ^ -3445524868813974943L) + ((3445524868813974958L & -3445524868813974943L) << 1)); + var10001 = new Object[2]; + var10001[0] = var8; + var10001[1] = var39; + var12 = var35.invokeInt(var10001); + if (var12 != 0) { + break; + } + + int var43 = var39.getValue(); + int var44 = 0; + + while (true) { + if (var43 > 0) { + var10001 = new Object[6]; + var10001[0] = var8; + var10001[1] = var40; + var10001[2] = var41; + var10001[3] = var42; + var10001[4] = null; + var10001[5] = null; + var12 = var36.invokeInt(var10001); + if (var12 == 0) { + int var45 = var41.getValue(); + int var46 = var42.getValue(); + Pointer var47 = var40.getValue(); + jl var48 = this.pcmSink; + if (var48 != null && this.tapBuffer.length < var45) { + this.tapBuffer = new float[Math.max( + var45, this.tapBuffer.length * ((-890225308 | 890225310) + (-890225308 & 890225310)) + )]; + } + + if ((var46 & (-1552832228 | 1552832230) + (-1552832228 & 1552832230)) == 0 && var47 != null) { + var44 = 1; + int var67 = var25 / (8); + + for (int var50 = 0; var50 < var45; var50++) { + long var51 = (long)var50 * var24; + float var53; + if (var28 != 0) { + float var54 = var47.getFloat(var51); + float var55 = var22 > 1? var47.getFloat(var51 + var67) + : var54; + var53 = (var54 + var55) / 2.0F; + } else { + short var68 = var47.getShort(var51); + short var69 = var22 > 1? var47.getShort(var51 + var67) + : var68; + var53 = (var68 + var69) / 2.0F / 32768.0F; + } + + this.ringBuffer[this.ringWriteIndex] = var53; + this.ringWriteIndex = (this.ringWriteIndex + (995143435 ^ -995143434) + ((995143435 & -995143434) << 1)) + % ((1691006378 | -1691005354) + (1691006378 & -1691005354)); + if (var48 != null) { + this.tapBuffer[var50] = var53; + } + } + + if (var48 != null) { + var48.accept(this.tapBuffer, var45, var23); + } + } else { + for (int var49 = 0; var49 < var45; var49++) { + this.ringBuffer[this.ringWriteIndex] = 0.0F; + this.ringWriteIndex = (this.ringWriteIndex + (34529917 | -34529916) + (34529917 & -34529916)) + % ((2031064804 ^ -2031063780) + ((2031064804 & -2031063780) << 1)); + } + + if (var48 != null) { + Arrays.fill(this.tapBuffer, 0, var45, 0.0F); + var48.accept(this.tapBuffer, var45, var23); + } + } + + var10001 = new Object[2]; + var10001[0] = var8; + var10001[1] = var45; + var37.invokeInt(var10001); + var10001 = new Object[2]; + var10001[0] = var8; + var10001[1] = var39; + var12 = var35.invokeInt(var10001); + if (var12 == 0) { + var43 = var39.getValue(); + continue; + } + } + } + + this.processSpectralAnalysis(var23, (boolean)((var44) != 0)); + break; + } + } + + var10001 = new Object[1]; + var10001[0] = var7; + var38.invokeInt(var10001); + var58 = false; + } finally { + if (var58) { + this.capturing = (boolean)(((0)) != 0); + releaseComPointer(var8); + releaseComPointer(var7); + releaseComPointer(var6); + releaseComPointer(var5); + } + } + + this.capturing = (boolean)(((0)) != 0); + releaseComPointer(var8); + releaseComPointer(var7); + releaseComPointer(var6); + releaseComPointer(var5); + return; + } + + this.capturing = (boolean)(((0)) != 0); + releaseComPointer(var8); + releaseComPointer(var7); + releaseComPointer(var6); + releaseComPointer(var5); + return; + } + + this.capturing = (boolean)(((0)) != 0); + releaseComPointer(var8); + releaseComPointer(var7); + releaseComPointer(var6); + releaseComPointer(var5); + return; + } + + this.capturing = (boolean)(((0)) != 0); + releaseComPointer(var8); + releaseComPointer(var7); + releaseComPointer(var6); + releaseComPointer(var5); + return; + } + + this.capturing = (boolean)(((0)) != 0); + releaseComPointer(var8); + releaseComPointer(var7); + releaseComPointer(var6); + releaseComPointer(var5); + return; + } + + this.capturing = (boolean)(((0)) != 0); + releaseComPointer(var8); + releaseComPointer(var7); + releaseComPointer(var6); + releaseComPointer(var5); + } else { + sleepQuietly((7844939682892813280L ^ -7844939682892812280L) + ((7844939682892813280L & -7844939682892812280L) << 1)); + } + } + + private void processSpectralAnalysis(int var1, boolean var2) { + if (!var2) { + this.decayLevels(); + } else { + int var3 = this.ringWriteIndex; + float var4 = 0.0F; + + for (int var5 = 0; var5 < 1024; var5++) { + float var6 = Math.abs(this.ringBuffer[var5]); + if (var6 > var4) { + var4 = var6; + } + } + + if (var4 <= 5.0E-5F) { + this.decayLevels(); + } else { + if (var4 > this.inputEnvelope) { + this.inputEnvelope = this.inputEnvelope + (var4 - this.inputEnvelope) * 0.5F; + } else { + this.inputEnvelope = this.inputEnvelope + (var4 - this.inputEnvelope) * 0.03F; + } + + if (this.inputEnvelope < 1.0E-4F) { + this.inputEnvelope = 1.0E-4F; + } + + float var15 = 1.0F / this.inputEnvelope; + + for (int var16 = 0; + var16 < 1024; + var16++ + ) { + this.realBuffer[var16] = this.ringBuffer[(var3 + var16) % (1024)] + * var15 + * HANN_WINDOW[var16]; + this.imagBuffer[var16] = 0.0F; + } + + computeFft(this.realBuffer, this.imagBuffer); + float var17 = var1 / 1024.0F; + + for (int var7 = 0; + var7 < 5; + var7++ + ) { + int var8 = Math.max(1, Math.round(BAND_MIN_FREQS[var7] / var17)); + int var9 = Math.min(511, Math.max(var8, Math.round(BAND_MAX_FREQS[var7] / var17))); + float var10 = 0.0F; + int var11 = 0; + + for (int var12 = var8; var12 <= var9; var12++) { + float var13 = this.realBuffer[var12]; + float var14 = this.imagBuffer[var12]; + var10 += var13 * var13 + var14 * var14; + var11++; + } + + float var23 = var11 > 0 ? (float)Math.sqrt(var10 / var11) / 1024.0F : 0.0F; + float var25 = var23 * BAND_WEIGHTS[var7]; + this.rawWeighted[var7] = var25; + float var27 = this.bandPeaks[var7]; + if (var25 > var27) { + var27 += (var25 - var27) * 0.7F; + } else { + var27 += (var25 - var27) * 0.012F; + } + + if (var27 < 0.008F) { + var27 = 0.008F; + } + + this.bandPeaks[var7] = var27; + } + + float[] var18 = new float[5]; + + for (int var19 = 0; + var19 < 5; + var19++ + ) { + float var20 = this.rawWeighted[var19]; + float var21 = this.bandPeaks[var19]; + float var22 = Math.min(1.0F, var20 / (var21 * 0.78F)); + float var24 = (float)Math.pow(var22, 1.35F); + float var26 = Math.max(0.0F, Math.min(1.0F, var24)); + float var29 = this.smoothedLevels[var19]; + if (var26 > var29) { + var29 += (var26 - var29) * 0.72F; + } else { + var29 += (var26 - var29) * 0.18F; + } + + this.smoothedLevels[var19] = var29; + var18[var19] = var29; + } + + this.publishedLevels = var18; + } + } + } + + private void decayLevels() { + float[] var1 = null; + int var2 = 0; + int var3 = -1110400220; + + while (true) { + switch (var3) { + case -2107707152: + this.smoothedLevels[var2] = this.smoothedLevels[var2] + (0.0F - this.smoothedLevels[var2]) * 0.18F; + var1[var2] = this.smoothedLevels[var2]; + var2++; + var3 = -1544765381; + break; + case -1751640123: + this.publishedLevels = var1; + return; + case -1544765381: + if (var2 < (2057910106 ^ -2057910101) + ((2057910106 & -2057910101) << 1)) { + var3 = -2107707152; + } else { + var3 = -1751640123; + } + break; + case -1110400220: + default: + var1 = new float[5]; + var2 = 0; + var3 = -1544765381; + } + } + } + + private void resetLevels() { + Arrays.fill(this.smoothedLevels, 0.0F); + Arrays.fill(this.bandPeaks, 0.05F); + this.publishedLevels = new float[5]; + this.inputEnvelope = 0.04F; + } + + private static void computeFft(float[] var0, float[] var1) { + for (int var2 = 0; var2 < 1024; var2++) { + int var3 = BIT_REVERSED[var2]; + if (var3 > var2) { + float var4 = var0[var2]; + var0[var2] = var0[var3]; + var0[var3] = var4; + float var5 = var1[var2]; + var1[var2] = var1[var3]; + var1[var3] = var5; + } + } + + for (int var14 = 2; + var14 <= 1024; + var14 <<= (-936603861 | 936603862) + (-936603861 & 936603862) + ) { + int var15 = var14 >> 1; + int var16 = ((-1737811163 | 1737812187) + (-1737811163 & 1737812187)) / var14; + + for (int var17 = 0; + var17 < 1024; + var17 += var14 + ) { + for (int var6 = 0; var6 < var15; var6++) { + int var7 = var6 * var16; + float var8 = COS_TABLE[var7]; + float var9 = SIN_TABLE[var7]; + float var10 = var0[var17 + var6]; + float var11 = var1[var17 + var6]; + float var12 = var0[var17 + var6 + var15] * var8 - var1[var17 + var6 + var15] * var9; + float var13 = var0[var17 + var6 + var15] * var9 + var1[var17 + var6 + var15] * var8; + var0[var17 + var6] = var10 + var12; + var1[var17 + var6] = var11 + var13; + var0[var17 + var6 + var15] = var10 - var12; + var1[var17 + var6 + var15] = var11 - var13; + } + } + } + } + + private static int computeBitReverse(int var0, int var1) { + int var2 = 0; + int var3 = 0; + int var4 = -1596732315; + + while (true) { + switch (var4) { + case -1596732315: + default: + var2 = 0; + var3 = 0; + var4 = -1509337495; + break; + case -1509337495: + if (var3 < var1) { + var4 = 320143698; + } else { + var4 = -1225389293; + } + break; + case -1225389293: + return var2; + case 320143698: + var2 = var2 << (-1640340563 | 1640340564) + (-1640340563 & 1640340564) | var0 & 1; + var0 >>= 1; + var3++; + var4 = -1509337495; + } + } + } + + private static void releaseComPointer(Pointer var0) { + if (var0 != null) { + try { + Pointer var1 = var0.getPointer((7827912314614732533L | -7827912314614732533L) + (7827912314614732533L & -7827912314614732533L)); + Function var2 = Function.getFunction( + var1.getPointer(((-1656930714455703678L ^ 1656930714455703680L) + ((-1656930714455703678L & 1656930714455703680L) << 1)) * Native.POINTER_SIZE), + (1014697166 | -1014697103) + (1014697166 & -1014697103) + ); + Object[] var10001 = new Object[1]; + var10001[0] = var0; + var2.invokeInt(var10001); + } catch (Throwable var3) { + } + } + } + + private static void sleepQuietly(long var0) { + try { + Thread.sleep(var0); + } catch (InterruptedException var3) { + Thread.currentThread().interrupt(); + } + } + + static { + float[] var10000 = new float[5]; + var10000[0] = 40.0F; + var10000[1] = 120.0F; + var10000[2] = 400.0F; + var10000[3] = 1500.0F; + var10000[4] = 5000.0F; + BAND_MIN_FREQS = var10000; + var10000 = new float[5]; + var10000[0] = 120.0F; + var10000[1] = 400.0F; + var10000[2] = 1500.0F; + var10000[3] = 5000.0F; + var10000[4] = 20000.0F; + BAND_MAX_FREQS = var10000; + var10000 = new float[5]; + var10000[0] = 1.0F; + var10000[1] = 1.4F; + var10000[2] = 2.2F; + var10000[3] = 3.8F; + var10000[4] = 6.0F; + BAND_WEIGHTS = var10000; + + for (int var0 = 0; var0 < 1024; var0++) { + HANN_WINDOW[var0] = (float)(0.5 * (1.0 - Math.cos((Math.PI * 2) * var0 / 1023.0))); + BIT_REVERSED[var0] = computeBitReverse(var0, (825029969 | -825029959) + (825029969 & -825029959)); + } + + for (int var3 = 0; var3 < 512; var3++) { + double var1 = (-Math.PI * 2) * var3 / 1024.0; + COS_TABLE[var3] = (float)Math.cos(var1); + SIN_TABLE[var3] = (float)Math.sin(var1); + } + } +} diff --git a/src/main/java/defpackage/io.java b/src/main/java/defpackage/io.java new file mode 100644 index 0000000..502b450 --- /dev/null +++ b/src/main/java/defpackage/io.java @@ -0,0 +1,21 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:io.class */ +/* synthetic */ class io { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$media$MediaAction = new int[iw.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.NEXT.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.PREVIOUS.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.PLAY_PAUSE.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + } +} diff --git a/src/main/java/defpackage/ip.java b/src/main/java/defpackage/ip.java new file mode 100644 index 0000000..083e0c8 --- /dev/null +++ b/src/main/java/defpackage/ip.java @@ -0,0 +1,52 @@ +package defpackage; + +import java.util.List; + +final class ip implements iy { + private static final String PLAYERCTL = "playerctl"; + private static final String METADATA_COMMAND = "metadata"; + private static final String FORMAT_FLAG = "--format"; + private static final String METADATA_FORMAT = "{{status}}\t{{artist}}\t{{title}}\t{{position}}\t{{mpris:length}}\t{{mpris:artUrl}}"; + private static final String COMMAND_NEXT = "next"; + private static final String COMMAND_PREVIOUS = "previous"; + private static final String COMMAND_PLAY_PAUSE = "play-pause"; + private static final long MICROSECONDS_PER_MILLISECOND = 1000L; + + @Override + public jh poll() { + String var1 = jf.capture( + List.of( + "playerctl", + "metadata", + "--format", + "{{status}} {{artist}} {{title}} {{position}} {{mpris:length}} {{mpris:artUrl}}" + ) + ); + return ji.parse(var1, (1198587153834395774L | -1198587153834394774L) + (1198587153834395774L & -1198587153834394774L)); + } + + @Override + public void dispatch(iw var1) { + jf.run(List.of("playerctl", commandOf(var1))); + } + + @Override + public byte[] loadArtwork(jh var1) { + return ji.read(var1.artworkKey()); + } + + @Override + public void close() { + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static String commandOf(iw var0) { + return switch (io.$SwitchMap$evo$systems$base$media$MediaAction[var0.ordinal()]) { + case 1 -> "next"; + case 2 -> "previous"; + case 3 -> "play-pause"; + default -> throw new MatchException(null, null); + }; + } +} diff --git a/src/main/java/defpackage/iq.java b/src/main/java/defpackage/iq.java new file mode 100644 index 0000000..2523311 --- /dev/null +++ b/src/main/java/defpackage/iq.java @@ -0,0 +1,252 @@ +package defpackage; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; +import java.nio.file.CopyOption; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.nio.file.attribute.PosixFilePermissions; +import java.util.Arrays; +import java.util.Locale; +import java.util.concurrent.TimeUnit; + +final class iq implements AutoCloseable { + static final int SAMPLE_RATE = 48000; + private static final String RESOURCE = "/assets/evolution/native/macos/evovis-audiotap"; + private static final String NATIVE_DIRECTORY = "native"; + private static final String EXECUTABLE_NAME = "evovis-audiotap"; + private static final String TEMP_SUFFIX = ".tmp"; + private static final String EXECUTABLE_PERMISSIONS = "rwxr-xr-x"; + private static final String OS_NAME_PROPERTY = "os.name"; + private static final String OS_VERSION_PROPERTY = "os.version"; + private static final String MAC_PREFIX = "mac"; + private static final String VERSION_SEPARATOR = "\\."; + private static final int MIN_MAJOR_VERSION = 13; + private static final int EXIT_PERMISSION_DENIED = 2; + private static final int BYTES_PER_SAMPLE = 4; + private static final int READ_BUFFER_BYTES = 48000; + private static final long STOP_WAIT_MILLIS = 500L; + private static final String ERROR_PREFIX = "error"; + private static final String STDERR_THREAD = "evolution-audiotap-stderr"; + private static final String HELPER_ERROR = "macOS audio helper: {}"; + private static final String EXTRACT_FAILURE = "Could not install macOS audio helper"; + private final Process process; + private final InputStream stdout; + private final byte[] bytes = new byte[48000]; + private final ByteBuffer view = ByteBuffer.wrap(this.bytes).order(ByteOrder.LITTLE_ENDIAN); + private int carry; + + private iq(Process var1) { + this.process = var1; + this.stdout = var1.getInputStream(); + Thread var2 = new Thread( + () -> pumpErrors(var1.getErrorStream()), + "evolution-audiotap-stderr" + ); + var2.setDaemon((boolean)((((-1800431131 | 1800431132) + (-1800431131 & 1800431132))) != 0)); + var2.start(); + } + + static boolean isAvailable() { + String var0 = System.getProperty("os.name", "").toLowerCase(Locale.ROOT); + if (!var0.startsWith("mac")) { + return (boolean)(((0)) != 0); + } + + String[] var1 = System.getProperty( + "os.version", + "0" + ) + .split("\\."); + + try { + return (boolean)(((Integer.parseInt(var1[0]) + >= (1363237404 ^ -1363237391) + ((1363237404 & -1363237391) << 1) + && iq.class.getResource("/assets/evolution/native/macos/evovis-audiotap") != null + ? 1: (1933377216 ^ -1933377216) + ((1933377216 & -1933377216) << 1))) != 0); + } catch (NumberFormatException var3) { + return (boolean)(((0)) != 0); + } + } + + static iq start() throws IOException { + Path var0 = install(); + String[] var10002 = new String[1]; + var10002[0] = var0.toString(); + Process var1 = new ProcessBuilder(var10002).start(); + return new iq(var1); + } + + boolean isAlive() { + return this.process.isAlive(); + } + + boolean permissionDenied() { + int var2 = 0; + int var1 = 248103077; + + while (true) { + switch (var1) { + case -2028260357: + var2 = 0; + var1 = 1304327428; + break; + case 248103077: + default: + if (!this.process.isAlive()) { + var1 = 483147228; + } else { + var1 = -2028260357; + } + break; + case 483147228: + if (this.process.exitValue() == (-1648444207 | 1648444209) + (-1648444207 & 1648444209)) { + var1 = 753686841; + } else { + var1 = -2028260357; + } + break; + case 753686841: + var2 = 1; + var1 = 1304327428; + break; + case 1304327428: + return (boolean)((var2) != 0); + } + } + } + + int read(float[] var1) throws IOException { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = -1945149348; + + while (true) { + switch (var7) { + case -1945149348: + default: + var2 = this.stdout.available(); + if (var2 <= 0) { + var7 = 990567287; + } else { + var7 = 1130672846; + } + break; + case -1533631474: + this.carry = var4 - var5 * (4); + System.arraycopy( + this.bytes, + var5 * (4), + this.bytes, + 0, + this.carry + ); + return var5; + case -94790896: + var4 = this.carry + var3; + var5 = Math.min(var4 / (4), var1.length); + var6 = 0; + var7 = 2053098683; + break; + case 990567287: + return 0; + case 994809611: + var1[var6] = this.view.getFloat(var6 * ((677540574 ^ -677540570) + ((677540574 & -677540570) << 1))); + var6++; + var7 = 2053098683; + break; + case 1130672846: + var3 = this.stdout.read(this.bytes, this.carry, Math.min(var2, this.bytes.length - this.carry)); + if (var3 <= 0) { + var7 = 1233075884; + } else { + var7 = -94790896; + } + break; + case 1233075884: + return 0; + case 2053098683: + if (var6 < var5) { + var7 = 994809611; + } else { + var7 = -1533631474; + } + } + } + } + + @Override + public void close() { + try { + this.process.getOutputStream().close(); + } catch (IOException var3) { + id.debug( + Cif.MEDIA, + "macOS audio helper: {}", + var3.getMessage() + ); + } + + try { + if (!this.process.waitFor((-5373774351196761858L | 5373774351196762358L) + (-5373774351196761858L & 5373774351196762358L), TimeUnit.MILLISECONDS)) { + this.process.destroyForcibly(); + } + } catch (InterruptedException var2) { + this.process.destroyForcibly(); + Thread.currentThread().interrupt(); + } + } + + private static Path install() throws IOException { + byte[] var0; + try (InputStream var1 = iq.class.getResourceAsStream("/assets/evolution/native/macos/evovis-audiotap")) { + if (var1 == null) { + throw new IOException( + "Could not install macOS audio helper" + ); + } + + var0 = var1.readAllBytes(); + } + + Path var6 = bz.DIRECTORY.toPath().resolve("native"); + Path var2 = var6.resolve("evovis-audiotap"); + if (Files.isRegularFile(var2) && Files.isExecutable(var2) && Arrays.equals(Files.readAllBytes(var2), var0)) { + return var2; + } + + Files.createDirectories(var6); + Path var3 = var6.resolve("evovis-audiotap.tmp"); + Files.write(var3, var0); + Files.setPosixFilePermissions(var3, PosixFilePermissions.fromString("rwxr-xr-x")); + CopyOption[] var10002 = new CopyOption[2]; + var10002[0] = StandardCopyOption.REPLACE_EXISTING; + var10002[1] = StandardCopyOption.ATOMIC_MOVE; + Files.move(var3, var2, var10002); + return var2; + } + + private static void pumpErrors(InputStream var0) { + String var2; + try (BufferedReader var1 = new BufferedReader(new InputStreamReader(var0, StandardCharsets.UTF_8))) { + while ((var2 = var1.readLine()) != null) { + if (var2.startsWith("error")) { + id.warn(Cif.MEDIA, "macOS audio helper: {}", var2); + } + } + } catch (IOException var6) { + id.debug( + Cif.MEDIA, "macOS audio helper: {}", var6.getMessage() + ); + } + } +} diff --git a/src/main/java/defpackage/ir.java b/src/main/java/defpackage/ir.java new file mode 100644 index 0000000..4f2d6f5 --- /dev/null +++ b/src/main/java/defpackage/ir.java @@ -0,0 +1,21 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:ir.class */ +/* synthetic */ class ir { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$media$MediaAction = new int[iw.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.NEXT.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.PREVIOUS.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.PLAY_PAUSE.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + } +} diff --git a/src/main/java/defpackage/is.java b/src/main/java/defpackage/is.java new file mode 100644 index 0000000..409b173 --- /dev/null +++ b/src/main/java/defpackage/is.java @@ -0,0 +1,115 @@ +package defpackage; + +import java.util.List; + +final class is { + private static final String OSASCRIPT = "osascript"; + private static final String LANGUAGE_FLAG = "-l"; + private static final String JAVASCRIPT_LANGUAGE = "JavaScript"; + private static final String SCRIPT_FLAG = "-e"; + private static final long FETCH_TIMEOUT_MILLIS = 4000L; + private static final int MEDIA_KEY_PLAY_PAUSE = 16; + private static final int MEDIA_KEY_NEXT = 17; + private static final int MEDIA_KEY_PREVIOUS = 18; + private static final String FETCH_SCRIPT = "var browsers = [\"Brave Browser\", \"Google Chrome\", \"Chromium\", \"Microsoft Edge\", \"Yandex\"];\nvar media = /music\\.youtube|youtube\\.com\\/watch|open\\.spotify|soundcloud\\.com|deezer\\.com|music\\.yandex|vk\\.com\\/(audio|music)|music\\.apple/i;\nvar result = \"\";\nfunction inspect(app, tab) {\n if (result) { return; }\n var url = \"\";\n try { url = tab.url(); } catch (error) { return; }\n if (!media.test(url)) { return; }\n var payload = \"\";\n try {\n payload = app.execute(tab, {javascript:\n \"(function(){var m=navigator.mediaSession&&navigator.mediaSession.metadata;\"\n + \"var e=[].slice.call(document.querySelectorAll('video,audio'));\"\n + \"var v=e.filter(function(x){return !x.muted&&isFinite(x.duration)&&x.duration>0;})[0]\"\n + \"||e.filter(function(x){return isFinite(x.duration)&&x.duration>0;})[0]||e[0];\"\n + \"if(!m&&!v){return '';}\"\n + \"var a=(m&&m.artwork&&m.artwork.length)?m.artwork[m.artwork.length-1].src:'';\"\n + \"var p=v?Math.round(v.currentTime*1000):0;\"\n + \"var d=(v&&isFinite(v.duration))?Math.round(v.duration*1000):0;\"\n + \"var s=(v&&!v.paused)?'playing':'paused';\"\n + \"return [s,m?m.artist:'',m?m.title:'',p,d,a].join('\\t');})()\"});\n } catch (error) {\n payload = \"\";\n }\n if (payload) { result = payload; return; }\n var title = \"\";\n try { title = tab.title(); } catch (error) { return; }\n if (title) { result = \"playing\\t\\t\" + title + \"\\t0\\t0\\t\"; }\n}\nbrowsers.forEach(function (name) {\n if (result) { return; }\n var app;\n try {\n app = Application(name);\n if (!app.running()) { return; }\n } catch (error) { return; }\n try {\n app.windows().forEach(function (window) {\n if (result) { return; }\n window.tabs().forEach(function (tab) { inspect(app, tab); });\n });\n } catch (error) { }\n});\nresult;\n"; + private static final String CONTROL_SCRIPT_TEMPLATE = "var browsers = [\"Brave Browser\", \"Google Chrome\", \"Chromium\", \"Microsoft Edge\", \"Yandex\"];\nvar media = /music\\.youtube|youtube\\.com\\/watch|open\\.spotify|soundcloud\\.com|deezer\\.com|music\\.yandex|vk\\.com\\/(audio|music)|music\\.apple/i;\nvar done = \"\";\nfunction act(app, tab) {\n if (done) { return; }\n var url = \"\";\n try { url = tab.url(); } catch (error) { return; }\n if (!media.test(url)) { return; }\n try {\n var answer = app.execute(tab, {javascript:\n \"(function(){var s=%1$s;\"\n + \"for(var i=0;i0;})[0]\"\n + \"||e.filter(function(x){return isFinite(x.duration)&&x.duration>0;})[0]||e[0];\"\n + \"if(v&&%2$b){if(v.paused){v.play();}else{v.pause();}return 'ok';}\"\n + \"return '';})()\"});\n if (answer) { done = \"ok\"; }\n } catch (error) { }\n}\nbrowsers.forEach(function (name) {\n if (done) { return; }\n var app;\n try {\n app = Application(name);\n if (!app.running()) { return; }\n } catch (error) { return; }\n try {\n app.windows().forEach(function (window) {\n if (done) { return; }\n window.tabs().forEach(function (tab) { act(app, tab); });\n });\n } catch (error) { }\n});\ndone;\n"; + private static final String NEXT_SELECTORS = "['.next-button','.ytp-next-button','[data-testid=control-button-skip-forward]','.skipControl__next']"; + private static final String PREVIOUS_SELECTORS = "['.previous-button','.ytp-prev-button','[data-testid=control-button-skip-back]','.skipControl__previous']"; + private static final String PLAY_PAUSE_SELECTORS = "['#play-pause-button','.ytp-play-button','[data-testid=control-button-playpause]','.playControl']"; + private static final String MEDIA_KEY_SCRIPT_TEMPLATE = "ObjC.import(\"Cocoa\");\n[0xa, 0xb].forEach(function (state) {\n var event = $.NSEvent.otherEventWithTypeLocationModifierFlagsTimestampWindowNumberContextSubtypeData1Data2(\n 14, $.NSMakePoint(0, 0), (state << 8), 0, 0, $(), 8, (%1$d << 16) | (state << 8), -1);\n $.CGEventPost(0, event.CGEvent);\n});\n"; + + private is() { + } + + static jh poll() { + String var0 = null; + jh var1 = null; + int var2 = 685769248; + + while (true) { + switch (var2) { + case -596400780: + var1 = jk.fromBrowserTitle(var1); + var2 = 1504647488; + break; + case -273865118: + if (var1.artist().isEmpty()) { + var2 = -596400780; + } else { + var2 = 1504647488; + } + break; + case 685769248: + default: + var0 = jf.capture( + List.of( + "osascript", + "-l", + "JavaScript", + "-e", + "var browsers = [\"Brave Browser\", \"Google Chrome\", \"Chromium\", \"Microsoft Edge\", \"Yandex\"];\nvar media = /music\\.youtube|youtube\\.com\\/watch|open\\.spotify|soundcloud\\.com|deezer\\.com|music\\.yandex|vk\\.com\\/(audio|music)|music\\.apple/i;\nvar result = \"\";\nfunction inspect(app, tab) {\n if (result) { return; }\n var url = \"\";\n try { url = tab.url(); } catch (error) { return; }\n if (!media.test(url)) { return; }\n var payload = \"\";\n try {\n payload = app.execute(tab, {javascript:\n \"(function(){var m=navigator.mediaSession&&navigator.mediaSession.metadata;\"\n + \"var e=[].slice.call(document.querySelectorAll('video,audio'));\"\n + \"var v=e.filter(function(x){return !x.muted&&isFinite(x.duration)&&x.duration>0;})[0]\"\n + \"||e.filter(function(x){return isFinite(x.duration)&&x.duration>0;})[0]||e[0];\"\n + \"if(!m&&!v){return '';}\"\n + \"var a=(m&&m.artwork&&m.artwork.length)?m.artwork[m.artwork.length-1].src:'';\"\n + \"var p=v?Math.round(v.currentTime*1000):0;\"\n + \"var d=(v&&isFinite(v.duration))?Math.round(v.duration*1000):0;\"\n + \"var s=(v&&!v.paused)?'playing':'paused';\"\n + \"return [s,m?m.artist:'',m?m.title:'',p,d,a].join('\\t');})()\"});\n } catch (error) {\n payload = \"\";\n }\n if (payload) { result = payload; return; }\n var title = \"\";\n try { title = tab.title(); } catch (error) { return; }\n if (title) { result = \"playing\\t\\t\" + title + \"\\t0\\t0\\t\"; }\n}\nbrowsers.forEach(function (name) {\n if (result) { return; }\n var app;\n try {\n app = Application(name);\n if (!app.running()) { return; }\n } catch (error) { return; }\n try {\n app.windows().forEach(function (window) {\n if (result) { return; }\n window.tabs().forEach(function (tab) { inspect(app, tab); });\n });\n } catch (error) { }\n});\nresult;\n" + ), + (1937464281525252958L | -1937464281525248958L) + (1937464281525252958L & -1937464281525248958L) + ); + var1 = ji.parse(var0); + if (var1.hasTrack()) { + var2 = -273865118; + } else { + var2 = 1504647488; + } + break; + case 1504647488: + return var1; + } + } + } + + static void dispatch(iw var0) { + String var10000 = "osascript"; + String var10001 = "-l"; + String var10002 = "JavaScript"; + String var10003 = "-e"; + String var10004 = "var browsers = [\"Brave Browser\", \"Google Chrome\", \"Chromium\", \"Microsoft Edge\", \"Yandex\"];\nvar media = /music\\.youtube|youtube\\.com\\/watch|open\\.spotify|soundcloud\\.com|deezer\\.com|music\\.yandex|vk\\.com\\/(audio|music)|music\\.apple/i;\nvar done = \"\";\nfunction act(app, tab) {\n if (done) { return; }\n var url = \"\";\n try { url = tab.url(); } catch (error) { return; }\n if (!media.test(url)) { return; }\n try {\n var answer = app.execute(tab, {javascript:\n \"(function(){var s=%1$s;\"\n + \"for(var i=0;i0;})[0]\"\n + \"||e.filter(function(x){return isFinite(x.duration)&&x.duration>0;})[0]||e[0];\"\n + \"if(v&&%2$b){if(v.paused){v.play();}else{v.pause();}return 'ok';}\"\n + \"return '';})()\"});\n if (answer) { done = \"ok\"; }\n } catch (error) { }\n}\nbrowsers.forEach(function (name) {\n if (done) { return; }\n var app;\n try {\n app = Application(name);\n if (!app.running()) { return; }\n } catch (error) { return; }\n try {\n app.windows().forEach(function (window) {\n if (done) { return; }\n window.tabs().forEach(function (tab) { act(app, tab); });\n });\n } catch (error) { }\n});\ndone;\n"; + Object[] var10005 = new Object[2]; + var10005[0] = selectorsOf(var0); + var10005[1] = Boolean.valueOf( + (boolean)(((var0 == iw.PLAY_PAUSE ? 1: (-1411694969 | 1411694969) + (-1411694969 & 1411694969)) + ) != 0)); + String var1 = jf.capture( + List.of(var10000, var10001, var10002, var10003, var10004.formatted(var10005)), + (8582489261746757655L | -8582489261746753655L) + (8582489261746757655L & -8582489261746753655L) + ); + if (var1 == null || var1.trim().isEmpty()) { + var10000 = "osascript"; + var10001 = "-l"; + var10002 = "JavaScript"; + var10003 = "-e"; + var10004 = "ObjC.import(\"Cocoa\");\n[0xa, 0xb].forEach(function (state) {\n var event = $.NSEvent.otherEventWithTypeLocationModifierFlagsTimestampWindowNumberContextSubtypeData1Data2(\n 14, $.NSMakePoint(0, 0), (state << 8), 0, 0, $(), 8, (%1$d << 16) | (state << 8), -1);\n $.CGEventPost(0, event.CGEvent);\n});\n"; + var10005 = new Object[1]; + var10005[0] = mediaKeyOf(var0); + jf.run(List.of(var10000, var10001, var10002, var10003, var10004.formatted(var10005))); + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static String selectorsOf(iw var0) { + return switch (ir.$SwitchMap$evo$systems$base$media$MediaAction[var0.ordinal()]) { + case 1 -> "['.next-button','.ytp-next-button','[data-testid=control-button-skip-forward]','.skipControl__next']"; + case 2 -> "['.previous-button','.ytp-prev-button','[data-testid=control-button-skip-back]','.skipControl__previous']"; + case 3 -> "['#play-pause-button','.ytp-play-button','[data-testid=control-button-playpause]','.playControl']"; + default -> throw new MatchException(null, null); + }; + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static int mediaKeyOf(iw var0) { + return switch (ir.$SwitchMap$evo$systems$base$media$MediaAction[var0.ordinal()]) { + case 1 -> (1462307021 | -1462307004) + (1462307021 & -1462307004); + case 2 -> (-299945904 ^ 299945922) + ((-299945904 & 299945922) << 1); + case 3 -> (455660527 ^ -455660511) + ((455660527 & -455660511) << 1); + default -> throw new MatchException(null, null); + }; + } +} diff --git a/src/main/java/defpackage/it.java b/src/main/java/defpackage/it.java new file mode 100644 index 0000000..749651f --- /dev/null +++ b/src/main/java/defpackage/it.java @@ -0,0 +1,21 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:it.class */ +/* synthetic */ class it { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$media$MediaAction = new int[iw.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.NEXT.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.PREVIOUS.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.PLAY_PAUSE.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + } +} diff --git a/src/main/java/defpackage/iu.java b/src/main/java/defpackage/iu.java new file mode 100644 index 0000000..58d4efe --- /dev/null +++ b/src/main/java/defpackage/iu.java @@ -0,0 +1,4 @@ +package defpackage; + +record iu(String name, String durationExpression, String artworkExpression) { +} diff --git a/src/main/java/defpackage/iv.java b/src/main/java/defpackage/iv.java new file mode 100644 index 0000000..e55aa32 --- /dev/null +++ b/src/main/java/defpackage/iv.java @@ -0,0 +1,198 @@ +package defpackage; + +import java.io.File; +import java.util.Iterator; +import java.util.List; + +final class iv implements iy { + private static final String OSASCRIPT = "osascript"; + private static final String SCRIPT_FLAG = "-e"; + private static final String PROCESS_LOOKUP = "pgrep"; + private static final String PROCESS_LOOKUP_EXACT_FLAG = "-x"; + private static final String SPOTIFY = "Spotify"; + private static final String MUSIC = "Music"; + private static final String BROWSER_PLAYER = "Browser"; + private static final String SPOTIFY_DURATION = "duration of current track"; + private static final String MUSIC_DURATION = "(duration of current track) * 1000"; + private static final String SPOTIFY_ARTWORK = "artwork url of current track"; + private static final String NO_ARTWORK = "\"\""; + private static final String COMMAND_NEXT = "next track"; + private static final String COMMAND_PREVIOUS = "previous track"; + private static final String COMMAND_PLAY_PAUSE = "playpause"; + private static final String ARTWORK_FILE_NAME = "evovis_media_artwork.bin"; + private static final String TEMP_DIRECTORY_PROPERTY = "java.io.tmpdir"; + private static final String FETCH_SCRIPT_TEMPLATE = "try\n\ttell application \"%1$s\"\n\t\tif player state is not stopped then\n\t\t\tset positionMillis to ((player position) * 1000) as integer\n\t\t\tset durationMillis to (%2$s) as integer\n\t\t\treturn (player state as text) & tab & (artist of current track) & tab & (name of current track) & tab & (positionMillis as text) & tab & (durationMillis as text) & tab & (%3$s)\n\t\tend if\n\tend tell\nend try\nreturn \"\"\n"; + private static final String CONTROL_SCRIPT_TEMPLATE = "try\n\ttell application \"%1$s\" to %2$s\nend try\n"; + private static final String ARTWORK_SCRIPT_TEMPLATE = "try\n\ttell application \"Music\"\n\t\tif (count of artworks of current track) > 0 then\n\t\t\tset artworkData to raw data of artwork 1 of current track\n\t\t\tset fileReference to open for access (POSIX file \"%1$s\") with write permission\n\t\t\tset eof fileReference to 0\n\t\t\twrite artworkData to fileReference\n\t\t\tclose access fileReference\n\t\t\treturn \"%1$s\"\n\t\tend if\n\tend tell\nend try\nreturn \"\"\n"; + private static final List PLAYERS = List.of( + new iu( + "Spotify", + "duration of current track", + "artwork url of current track" + ), + new iu( + "Music", + "(duration of current track) * 1000", + "\"\"" + ) + ); + private volatile String activePlayer = ""; + + @Override + public jh poll() { + for (iu var2 : PLAYERS) { + if (isRunning(var2.name())) { + String var10000 = "osascript"; + String var10001 = "-e"; + String var10002 = "try\n tell application \"%1$s\"\n if player state is not stopped then\n set positionMillis to ((player position) * 1000) as integer\n set durationMillis to (%2$s) as integer\n return (player state as text) & tab & (artist of current track) & tab & (name of current track) & tab & (positionMillis as text) & tab & (durationMillis as text) & tab & (%3$s)\n end if\n end tell\nend try\nreturn \"\"\n"; + Object[] var10003 = new Object[3]; + var10003[0] = var2.name(); + var10003[1] = var2.durationExpression(); + var10003[2] = var2.artworkExpression(); + String var3 = jf.capture(List.of(var10000, var10001, var10002.formatted(var10003))); + jh var4 = ji.parse(var3); + if (var4.hasTrack()) { + this.activePlayer = var2.name(); + return var4; + } + } + } + + jh var5 = is.poll(); + this.activePlayer = var5.hasTrack() ? "Browser" : ""; + return var5; + } + + @Override + public void dispatch(iw var1) { + String var2 = null; + Iterator var3 = null; + iu var4 = null; + int var5 = -717858843; + + while (true) { + switch (var5) { + case -1494285753: + is.dispatch(var1); + return; + case -1420772714: + var5 = 706457586; + break; + case -717858843: + default: + var2 = commandOf(var1); + var3 = PLAYERS.iterator(); + var5 = 706457586; + break; + case 706457586: + if (var3.hasNext()) { + var5 = 766353401; + } else { + var5 = -1494285753; + } + break; + case 766353401: + var4 = (iu)var3.next(); + if (!isRunning(var4.name())) { + var5 = -1420772714; + } else { + var5 = 1098475703; + } + break; + case 1098475703: + String var10000 = "osascript"; + String var10001 = "-e"; + String var10002 = "try\n tell application \"%1$s\" to %2$s\nend try\n"; + Object[] var10003 = new Object[2]; + var10003[0] = var4.name(); + var10003[1] = var2; + jf.run(List.of(var10000, var10001, var10002.formatted(var10003))); + return; + } + } + } + + @Override + public byte[] loadArtwork(jh var1) { + File var2 = null; + String var3 = null; + int var4 = 1874215549; + + while (true) { + switch (var4) { + case -2119066092: + return ji.read(var1.artworkKey()); + case -1514537229: + if (!"Music".equals(this.activePlayer)) { + var4 = 366809983; + } else { + var4 = -197056101; + } + break; + case -923324125: + return ji.readFile(var2.toPath()); + case -611352441: + return null; + case -197056101: + var2 = new File( + System.getProperty("java.io.tmpdir", ""), + "evovis_media_artwork.bin" + ); + String var10000 = "osascript"; + String var10001 = "-e"; + String var10002 = "try\n tell application \"Music\"\n if (count of artworks of current track) > 0 then\n set artworkData to raw data of artwork 1 of current track\n set fileReference to open for access (POSIX file \"%1$s\") with write permission\n set eof fileReference to 0\n write artworkData to fileReference\n close access fileReference\n return \"%1$s\"\n end if\n end tell\nend try\nreturn \"\"\n"; + Object[] var10003 = new Object[1]; + var10003[0] = var2.getAbsolutePath(); + var3 = jf.capture(List.of(var10000, var10001, var10002.formatted(var10003))); + if (var3 != null) { + var4 = -29638244; + } else { + var4 = -611352441; + } + break; + case -29638244: + if (var3.trim().isEmpty()) { + var4 = -611352441; + } else { + var4 = -923324125; + } + break; + case 366809983: + return null; + case 1874215549: + default: + if (!var1.artworkKey().isEmpty()) { + var4 = -2119066092; + } else { + var4 = -1514537229; + } + } + } + } + + @Override + public void close() { + this.activePlayer = ""; + } + + private static boolean isRunning(String var0) { + return jf.run( + List.of( + "pgrep", + "-x", + var0 + ) + ); + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static String commandOf(iw var0) { + return switch (it.$SwitchMap$evo$systems$base$media$MediaAction[var0.ordinal()]) { + case 1 -> "next track"; + case 2 -> "previous track"; + case 3 -> "playpause"; + default -> throw new MatchException(null, null); + }; + } +} diff --git a/src/main/java/defpackage/iw.java b/src/main/java/defpackage/iw.java new file mode 100644 index 0000000..050d5cd --- /dev/null +++ b/src/main/java/defpackage/iw.java @@ -0,0 +1,7 @@ +package defpackage; + +public enum iw { + PREVIOUS, + PLAY_PAUSE, + NEXT; +} diff --git a/src/main/java/defpackage/ix.java b/src/main/java/defpackage/ix.java new file mode 100644 index 0000000..7341161 --- /dev/null +++ b/src/main/java/defpackage/ix.java @@ -0,0 +1,212 @@ +package defpackage; + +import com.mojang.blaze3d.platform.NativeImage; +import com.mojang.blaze3d.platform.NativeImage.Format; +import java.nio.ByteBuffer; +import java.nio.IntBuffer; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.resources.Identifier; +import org.lwjgl.stb.STBImage; +import org.lwjgl.system.MemoryStack; +import org.lwjgl.system.MemoryUtil; + +public final class ix { + private static final String NAMESPACE = "evolution"; + private static final String TEXTURE_PATH = "media/artwork"; + private static final String TEXTURE_LABEL = "evolution_media_artwork"; + private static final String ARTWORK_SCALE_FAILURE = "media artwork scale failed"; + private static final String ARTWORK_DECODE_FAILURE = "media artwork decode failed"; + private static final String ARTWORK_LOAD_FAILURE = "media artwork load failed: {}"; + private static final int TEXTURE_SIZE = 128; + private static final int RGBA_CHANNELS = 4; + private static final int MAX_SOURCE_DIMENSION = 2048; + private static final Identifier TEXTURE_ID = Identifier.fromNamespaceAndPath( + "evolution", + "media/artwork" + ); + private static final Object LOCK = new Object(); + private static NativeImage pendingImage; + private static String pendingKey; + private static String uploadedKey; + + private ix() { + } + + public static void prepare(String var0, byte[] var1) { + if (var0 != null && !var0.isEmpty() && var1 != null && var1.length != 0) { + NativeImage var2 = decode(var1); + if (var2 != null) { + NativeImage var3 = null; + + label52: { + try { + var3 = new NativeImage( + Format.RGBA, + 128, + 128, + (boolean)((((900890495 | -900890495) + (900890495 & -900890495)) + ) != 0)); + var2.resizeSubRectTo( + 0, + 0, + var2.getWidth(), + var2.getHeight(), + var3 + ); + break label52; + } catch (Throwable var8) { + id.warn( + Cif.MEDIA, "media artwork scale failed", var8 + ); + if (var3 != null) { + var3.close(); + } + } finally { + var2.close(); + } + + return; + } + + publish(var0, var3); + } + } + } + + public static void clear() { + synchronized (LOCK) { + if (pendingImage != null) { + pendingImage.close(); + pendingImage = null; + } + + pendingKey = null; + } + } + + public static Identifier resolve(String var0) { + NativeImage var1; + String var2; + synchronized (LOCK) { + var1 = pendingImage; + var2 = pendingKey; + pendingImage = null; + pendingKey = null; + } + + if (var1 != null) { + Minecraft.getInstance() + .execute( + () -> { + Minecraft.getInstance() + .getTextureManager() + .register( + TEXTURE_ID, + new DynamicTexture( + () -> "evolution_media_artwork", + var1 + ) + ); + uploadedKey = var2; + } + ); + } + + return uploadedKey != null && uploadedKey.equals(var0) ? TEXTURE_ID : null; + } + + private static NativeImage decode(byte[] var0) { + ByteBuffer var1 = null; + ByteBuffer var2 = null; + + Object var9; + try { + var1 = MemoryUtil.memAlloc(var0.length); + var1.put(var0).flip(); + MemoryStack var5 = MemoryStack.stackPush(); + + label170: { + int var3; + int var4; + try { + IntBuffer var6 = var5.mallocInt((-1063949619 ^ 1063949620) + ((-1063949619 & 1063949620) << 1)); + IntBuffer var7 = var5.mallocInt((-1809724994 ^ 1809724995) + ((-1809724994 & 1809724995) << 1)); + IntBuffer var8 = var5.mallocInt((890751014 ^ -890751013) + ((890751014 & -890751013) << 1)); + var2 = STBImage.stbi_load_from_memory(var1, var6, var7, var8, (1300264999 | -1300264995) + (1300264999 & -1300264995)); + if (var2 == null) { + id.warn( + Cif.MEDIA, + "media artwork load failed: {}", + STBImage.stbi_failure_reason() + ); + var9 = null; + break label170; + } + + var3 = var6.get((-1718031590 | 1718031590) + (-1718031590 & 1718031590)); + var4 = var7.get((-1329060633 ^ 1329060633) + ((-1329060633 & 1329060633) << 1)); + } catch (Throwable var16) { + if (var5 != null) { + try { + var5.close(); + } catch (Throwable var15) { + var16.addSuppressed(var15); + } + } + + throw var16; + } + + if (var5 != null) { + var5.close(); + } + + if (var3 > 0 + && var4 > 0 + && var3 <= (-2040824271 | 2040826319) + (-2040824271 & 2040826319) + && var4 <= (281027198 | -281025150) + (281027198 & -281025150)) { + NativeImage var19 = new NativeImage(Format.RGBA, var3, var4, (boolean)((((1950214532 ^ -1950214532) + ((1950214532 & -1950214532) << 1))) != 0)); + MemoryUtil.memCopy( + MemoryUtil.memAddress(var2), + var19.getPointer(), + (long)var3 * var4 * ((-3245237975940415489L ^ 3245237975940415493L) + ((-3245237975940415489L & 3245237975940415493L) << 1)) + ); + return var19; + } + + return null; + } + + if (var5 != null) { + var5.close(); + } + } catch (Throwable var17) { + id.warn( + Cif.MEDIA, "media artwork decode failed", var17 + ); + return null; + } finally { + if (var2 != null) { + STBImage.stbi_image_free(var2); + } + + if (var1 != null) { + MemoryUtil.memFree(var1); + } + } + + return (NativeImage)var9; + } + + private static void publish(String var0, NativeImage var1) { + synchronized (LOCK) { + if (pendingImage != null) { + pendingImage.close(); + } + + pendingImage = var1; + pendingKey = var0; + } + } +} diff --git a/src/main/java/defpackage/iy.java b/src/main/java/defpackage/iy.java new file mode 100644 index 0000000..0f59629 --- /dev/null +++ b/src/main/java/defpackage/iy.java @@ -0,0 +1,11 @@ +package defpackage; + +public interface iy { + jh poll(); + + void dispatch(iw var1); + + byte[] loadArtwork(jh var1); + + void close(); +} diff --git a/src/main/java/defpackage/iz.java b/src/main/java/defpackage/iz.java new file mode 100644 index 0000000..1f7f7e6 --- /dev/null +++ b/src/main/java/defpackage/iz.java @@ -0,0 +1,963 @@ +package defpackage; + +import java.util.Locale; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.RejectedExecutionException; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; + +public final class iz { + private static final long ACTIVE_INTERVAL_MILLIS = 1000L; + private static final long PRECISE_INTERVAL_MILLIS = 350L; + private static final long PRECISE_WINDOW_MILLIS = 2000L; + private static final long IDLE_INTERVAL_MILLIS = 3000L; + private static final long ACTION_REFRESH_MILLIS = 250L; + private static final long ACTION_SETTLE_MILLIS = 900L; + private static final long PLAY_PAUSE_HOLD_MILLIS = 15000L; + private static final long PLAYBACK_ADVANCE_TOLERANCE_MILLIS = 400L; + private static final long IDLE_TIMEOUT_MILLIS = 6000L; + private static final long STALL_FREEZE_MILLIS = 8000L; + private static final int FAILURES_BEFORE_EMPTY = 3; + private static final long LATENCY_DIVISOR = 2L; + private static final long MAX_LATENCY_COMPENSATION_MILLIS = 1500L; + private static final int MAX_CONSECUTIVE_FAILURES = 8; + private static final long NANOS_PER_MILLI = 1000000L; + private static final String WORKER_THREAD_NAME = "evolution-media"; + private static final String ARTWORK_THREAD_NAME = "evolution-media-artwork"; + private static final String SHUTDOWN_THREAD_NAME = "evolution-media-shutdown"; + private static final String OS_PROPERTY = "os.name"; + private static final String WINDOWS_MARKER = "win"; + private static final String MAC_MARKER = "mac"; + private static final String DARWIN_MARKER = "darwin"; + private static final String LINUX_MARKER = "nux"; + private static final String UNIX_MARKER = "nix"; + private static final String POLL_FAILURE = "media backend poll failed"; + private static final String BACKEND_DISABLED = "media backend disabled after {} consecutive failures"; + private static final String UNSUPPORTED_OS = "no media backend for os {}"; + private static final iz INSTANCE = new iz(); + private final ScheduledExecutorService worker; + private final ExecutorService artworkWorker; + private final AtomicBoolean polling = new AtomicBoolean(); + private volatile jh snapshot = jh.EMPTY; + private volatile long lastPublishNanos; + private volatile long anchorNanos; + private volatile long anchorPositionMillis; + private volatile long lastRequestMillis; + private volatile long lastPreciseRequestMillis; + private volatile long lastReportedNanos; + private volatile iy backend; + private volatile boolean backendUnavailable; + private volatile String artworkReadyKey = ""; + private final AtomicBoolean artworkLoading = new AtomicBoolean(); + private ScheduledFuture pollTask; + private String artworkKey = ""; + private String artworkAttemptedKey = ""; + private String lastReportedTrackKey = ""; + private boolean lastReportedPlaying; + private long lastReportedPositionMillis; + private long lastReportedDurationMillis; + private long lastPolledPositionMillis; + private long pendingObservedPositionMillis; + private String lastPolledTrackKey = ""; + private boolean sourceRewound; + private int consecutiveFailures; + private boolean pendingPlayPause; + private boolean pendingPlaying; + private long pendingDeadlineNanos; + private String pendingTrackKey = ""; + + private iz() { + this.worker = Executors.newSingleThreadScheduledExecutor(var0 -> { + Thread var1 = new Thread(var0, "evolution-media"); + var1.setDaemon((boolean)((((1285477580 ^ -1285477579) + ((1285477580 & -1285477579) << 1))) != 0)); + var1.setPriority((-1560004107 ^ 1560004108) + ((-1560004107 & 1560004108) << 1)); + return var1; + }); + this.artworkWorker = Executors.newSingleThreadExecutor(var0 -> { + Thread var1 = new Thread(var0, "evolution-media-artwork"); + var1.setDaemon((boolean)((((1645096994 | -1645096993) + (1645096994 & -1645096993))) != 0)); + var1.setPriority((992808003 ^ -992808002) + ((992808003 & -992808002) << 1)); + return var1; + }); + Runtime.getRuntime() + .addShutdownHook( + new Thread( + this::shutdown, + "evolution-media-shutdown" + ) + ); + } + + public static iz getInstance() { + return INSTANCE; + } + + public jh getSnapshot() { + return this.snapshot; + } + + public boolean isSupported() { + int var2 = 0; + int var1 = -1190088701; + + while (true) { + switch (var1) { + case -1190088701: + default: + if (!this.backendUnavailable) { + var1 = -617376393; + } else { + var1 = 1524402501; + } + break; + case -617376393: + var2 = 1; + var1 = -549075414; + break; + case -549075414: + return (boolean)((var2) != 0); + case 1524402501: + var2 = 0; + var1 = -549075414; + } + } + } + + public long getInterpolatedPositionMillis() { + jh var1 = null; + long var2 = (-5356611403354393381L | 5356611403354393381L) + (-5356611403354393381L & 5356611403354393381L); + long var4 = (-648613761975256852L | 648613761975256852L) + (-648613761975256852L & 648613761975256852L); + long var6 = (6741192991414866434L ^ -6741192991414866434L) + ((6741192991414866434L & -6741192991414866434L) << 1); + int var8 = 1812935960; + + while (true) { + switch (var8) { + case -596913279: + return (-4016299942224023187L | 4016299942224023187L) + (-4016299942224023187L & 4016299942224023187L); + case -231292927: + var2 = this.lastPublishNanos + (-8247640898892980966L | 8247640906892980966L) + (-8247640898892980966L & 8247640906892980966L); + var4 = Math.min(System.nanoTime(), var2); + var6 = Math.max( + (7867613498959937171L | -7867613498959937171L) + (7867613498959937171L & -7867613498959937171L), + (var4 - this.anchorNanos) / ((-4463917876135676300L | 4463917876136676300L) + (-4463917876135676300L & 4463917876136676300L)) + ); + return Math.min(var1.durationMillis(), this.anchorPositionMillis + var6); + case -76735456: + if (!var1.playing()) { + var8 = 989222018; + } else { + var8 = -231292927; + } + break; + case 989222018: + return var1.positionMillis(); + case 1812935960: + default: + var1 = this.snapshot; + if (!var1.hasProgress()) { + var8 = -596913279; + } else { + var8 = -76735456; + } + } + } + } + + public void requestUpdates() { + int var1 = 901162704; + + while (true) { + switch (var1) { + case 211403633: + return; + case 901162704: + default: + this.lastRequestMillis = System.currentTimeMillis(); + if (this.polling + .compareAndSet( + (boolean)(((0)) != 0), + (boolean)((((254947092 ^ -254947091) + ((254947092 & -254947091) << 1)) + ) != 0))) { + var1 = 1056596411; + } else { + var1 = 211403633; + } + break; + case 1056596411: + this.submit(this::startPolling); + var1 = 211403633; + } + } + } + + public void requestPreciseUpdates() { + this.lastPreciseRequestMillis = System.currentTimeMillis(); + this.requestUpdates(); + } + + public void dispatch(iw var1) { + this.lastRequestMillis = System.currentTimeMillis(); + this.submit( + () -> { + iy var2 = null; + jh var3 = null; + int var4 = 0; + int var6 = 0; + int var5 = -493780619; + + while (true) { + switch (var5) { + case -1944058725: + return; + case -1845660337: + var2.dispatch(var1); + if (var1 == iw.PLAY_PAUSE) { + var5 = -1054658829; + } else { + var5 = -837860637; + } + break; + case -1054658829: + var3 = this.snapshot; + if (var3.hasTrack()) { + var5 = -276778917; + } else { + var5 = -837860637; + } + break; + case -837860637: + return; + case -732895805: + var4 = var6; + this.pendingTrackKey = var3.trackKey(); + this.pendingObservedPositionMillis = this.lastPolledPositionMillis; + this.pendingPlaying = (boolean)((var4) != 0); + this.pendingDeadlineNanos = System.nanoTime() + + (8476368399283607222L ^ -8476368384283607222L) + + ((8476368399283607222L & -8476368384283607222L) << 1); + this.pendingPlayPause = (boolean)(((1)) != 0); + this.publish(var3.withPlaying((boolean)((var4) != 0), this.getInterpolatedPositionMillis())); + var5 = -837860637; + break; + case -665985958: + var6 = 0; + var5 = -732895805; + break; + case -493780619: + default: + var2 = this.ensureBackend(); + if (var2 == null) { + var5 = -1944058725; + } else { + var5 = -1845660337; + } + break; + case -276778917: + if (!var3.playing()) { + var5 = 1906722954; + } else { + var5 = -665985958; + } + break; + case 1906722954: + var6 = 1; + var5 = -732895805; + } + } + } + ); + this.scheduleRefresh((-2662389605949532219L | 2662389605949532469L) + (-2662389605949532219L & 2662389605949532469L)); + this.scheduleRefresh((6661015535630998448L ^ -6661015535630997548L) + ((6661015535630998448L & -6661015535630997548L) << 1)); + } + + private void startPolling() { + int var1 = -1800201644; + + while (true) { + switch (var1) { + case -1800201644: + default: + if (this.pollTask != null) { + var1 = -888814189; + } else { + var1 = -1212615468; + } + break; + case -1212615468: + this.schedulePoll((3411058907919961013L ^ -3411058907919961013L) + ((3411058907919961013L & -3411058907919961013L) << 1)); + return; + case -888814189: + return; + } + } + } + + private void schedulePoll(long var1) { + try { + this.pollTask = this.worker.schedule(this::pollTick, var1, TimeUnit.MILLISECONDS); + } catch (RejectedExecutionException var4) { + this.pollTask = null; + } + } + + private void pollTick() { + int var1 = -470020555; + + while (true) { + switch (var1) { + case -470020555: + default: + this.pollTask = null; + if (System.currentTimeMillis() - this.lastRequestMillis + > (-6909739267528726622L | 6909739267528732622L) + (-6909739267528726622L & 6909739267528732622L)) { + var1 = 772699859; + } else { + var1 = 1082875454; + } + break; + case 772699859: + this.stopPolling(); + return; + case 1082875454: + this.pollOnce(); + this.schedulePoll(this.nextPollDelay()); + return; + } + } + } + + private long nextPollDelay() { + int var1 = 0; + int var3 = 0; + long var4 = (6895419385564751643L | -6895419385564751643L) + (6895419385564751643L & -6895419385564751643L); + int var2 = 1638144339; + + while (true) { + switch (var2) { + case -950001042: + return (-6784704499024073351L | 6784704499024076351L) + (-6784704499024073351L & 6784704499024076351L); + case -38392515: + var3 = 0; + var2 = 1267695050; + break; + case 90601564: + var3 = 1; + var2 = 1267695050; + break; + case 262305005: + var4 = (3471229288760138003L ^ -3471229288760137653L) + ((3471229288760138003L & -3471229288760137653L) << 1); + var2 = 1528231622; + break; + case 1267695050: + var1 = var3; + if (var1 != 0) { + var2 = 262305005; + } else { + var2 = 2092355017; + } + break; + case 1528231622: + return var4; + case 1638144339: + default: + if (!this.snapshot.hasTrack()) { + var2 = -950001042; + } else { + var2 = 1839253093; + } + break; + case 1839253093: + if (System.currentTimeMillis() - this.lastPreciseRequestMillis + <= (-3395892077439445368L ^ 3395892077439447368L) + ((-3395892077439445368L & 3395892077439447368L) << 1)) { + var2 = 90601564; + } else { + var2 = -38392515; + } + break; + case 2092355017: + var4 = (-1982786631921366495L ^ 1982786631921367495L) + ((-1982786631921366495L & 1982786631921367495L) << 1); + var2 = 1528231622; + } + } + } + + private void pollOnce() { + iy var1 = this.ensureBackend(); + if (var1 == null) { + this.publish(jh.EMPTY); + } else { + try { + long var2 = System.nanoTime(); + jh var4 = compensateLatency(var1.poll(), var2); + int var5 = 0; + if (var4.hasTrack()) { + var5 = var4.trackKey().equals(this.lastPolledTrackKey) + && var4.positionMillis() + (-7588941811603186621L | 7588941811603187021L) + (-7588941811603186621L & 7588941811603187021L) + < this.lastPolledPositionMillis + ? 1: 0; + this.lastPolledTrackKey = var4.trackKey(); + this.lastPolledPositionMillis = var4.positionMillis(); + } + + jh var6 = this.reconcilePlayState(var4); + if (!this.isStalePlayback(var6)) { + this.sourceRewound = (boolean)((var5) != 0); + this.publish(var6); + this.sourceRewound = (boolean)(((0)) != 0); + } + + this.consecutiveFailures = 0; + this.updateArtwork(var1, var6); + } catch (Throwable var7) { + this.consecutiveFailures += 1; + id.warn( + Cif.MEDIA, + "media backend poll failed", + var7 + ); + this.closeBackend(); + if (this.consecutiveFailures >= (1800622972 | -1800622969) + (1800622972 & -1800622969)) { + this.artworkKey = ""; + this.artworkAttemptedKey = ""; + this.artworkReadyKey = ""; + this.publish(jh.EMPTY); + } + + if (this.consecutiveFailures >= (1522934180 | -1522934172) + (1522934180 & -1522934172)) { + this.backendUnavailable = (boolean)(((1)) != 0); + id.error( + Cif.MEDIA, + "media backend disabled after {} consecutive failures", + this.consecutiveFailures + ); + } + } + } + } + + private static jh compensateLatency(jh var0, long var1) { + long var3 = (-2349379635608651207L | 2349379635608651207L) + (-2349379635608651207L & 2349379635608651207L); + int var5 = 672445238; + + while (true) { + switch (var5) { + case -684044793: + return var0; + case 472915988: + if (!var0.hasProgress()) { + var5 = -684044793; + } else { + var5 = 1201279690; + } + break; + case 563479774: + if (var0.playing()) { + var5 = 472915988; + } else { + var5 = -684044793; + } + break; + case 672445238: + default: + if (var0.hasTrack()) { + var5 = 563479774; + } else { + var5 = -684044793; + } + break; + case 1201279690: + var3 = (System.nanoTime() - var1) + / ((919167401895670655L | -919167401894670655L) + (919167401895670655L & -919167401894670655L)) + / ((-6239652752699887991L | 6239652752699887993L) + (-6239652752699887991L & 6239652752699887993L)); + return var0.withPlaying( + (boolean)(((1)) != 0), + var0.positionMillis() + + Math.min(var3, (1963296797438743261L ^ -1963296797438741761L) + ((1963296797438743261L & -1963296797438741761L) << 1)) + ); + } + } + } + + private jh reconcilePlayState(jh var1) { + long var2 = (355533735130206930L ^ -355533735130206930L) + ((355533735130206930L & -355533735130206930L) << 1); + long var4 = (-2635765513584572201L ^ 2635765513584572201L) + ((-2635765513584572201L & 2635765513584572201L) << 1); + int var6 = -888436347; + + while (true) { + switch (var6) { + case -1925548206: + if (!this.lastReportedPlaying) { + var6 = -79380356; + } else { + var6 = 466288022; + } + break; + case -1490593136: + var4 = (System.nanoTime() - this.lastReportedNanos) + / ((-6314356078995810002L | 6314356078996810002L) + (-6314356078995810002L & 6314356078996810002L)); + if (var2 > var4 + (-236160100465903684L | 236160100465904084L) + (-236160100465903684L & 236160100465904084L)) { + var6 = 449544607; + } else { + var6 = -102377537; + } + break; + case -1211744780: + return var1; + case -899265585: + if (var1.trackKey().equals(this.lastReportedTrackKey)) { + var6 = -1925548206; + } else { + var6 = -79380356; + } + break; + case -888436347: + default: + if (var1.hasTrack()) { + var6 = -885267252; + } else { + var6 = 1019541312; + } + break; + case -885267252: + if (var1.playing()) { + var6 = 1019541312; + } else { + var6 = -899265585; + } + break; + case -102377537: + return var1.withPlaying((boolean)(((1)) != 0), var1.positionMillis()); + case -79380356: + return var1; + case 449544607: + return var1; + case 466288022: + var2 = var1.positionMillis() - this.lastReportedPositionMillis; + if (var2 <= (-7410524884654891685L ^ 7410524884654892085L) + ((-7410524884654891685L & 7410524884654892085L) << 1)) { + var6 = -1211744780; + } else { + var6 = -1490593136; + } + break; + case 1019541312: + return var1; + } + } + } + + private boolean isStalePlayback(jh var1) { + int var2 = 0; + int var4 = 0; + int var3 = -10836293; + + while (true) { + switch (var3) { + case -2132741146: + var4 = 1; + var3 = -2015665451; + break; + case -2015665451: + var2 = var4; + if (var1.playing() != this.pendingPlaying) { + var3 = 893676720; + } else { + var3 = 1957236346; + } + break; + case -1625526354: + return (boolean)(((1)) != 0); + case -822158266: + if (Math.abs(var1.positionMillis() - this.pendingObservedPositionMillis) + <= (-4727652401428218611L ^ 4727652401428219011L) + ((-4727652401428218611L & 4727652401428219011L) << 1)) { + var3 = -2132741146; + } else { + var3 = -740196111; + } + break; + case -740196111: + var4 = 0; + var3 = -2015665451; + break; + case -10836293: + default: + if (!this.pendingPlayPause) { + var3 = 2131342736; + } else { + var3 = 445701826; + } + break; + case 193758882: + if (System.nanoTime() >= this.pendingDeadlineNanos) { + var3 = 1957236346; + } else { + var3 = -1625526354; + } + break; + case 445701826: + if (var1.trackKey().equals(this.pendingTrackKey)) { + var3 = -822158266; + } else { + var3 = -740196111; + } + break; + case 893676720: + if (var2 != 0) { + var3 = 193758882; + } else { + var3 = 1957236346; + } + break; + case 1957236346: + this.pendingPlayPause = (boolean)(((0)) != 0); + return (boolean)(((0)) != 0); + case 2131342736: + return (boolean)(((0)) != 0); + } + } + } + + private void updateArtwork(iy var1, jh var2) { + if (!var2.hasTrack()) { + if (!this.artworkKey.isEmpty()) { + this.artworkKey = ""; + this.artworkAttemptedKey = ""; + this.artworkReadyKey = ""; + ix.clear(); + } + } else { + String var3 = var2.trackKey(); + if (!var3.equals(this.artworkKey)) { + this.artworkKey = var3; + this.artworkAttemptedKey = ""; + ix.clear(); + } + + if (!var3.equals(this.artworkReadyKey) && !var3.equals(this.artworkAttemptedKey)) { + if (this.artworkLoading + .compareAndSet( + (boolean)(((0)) != 0), + (boolean)((((1116705267 ^ -1116705266) + ((1116705267 & -1116705266) << 1)) + ) != 0))) { + this.artworkAttemptedKey = var3; + + try { + this.artworkWorker.execute(() -> { + boolean var7 = false /* VF: Semaphore variable */; + + try { + var7 = true; + byte[] var4 = var1.loadArtwork(var2); + if (var4 == null || var4.length == 0) { + var4 = ja.fetch(var2.artist(), var2.title()); + } + + if (var4 != null) { + if (var4.length > 0) { + ix.prepare(var3, var4); + this.artworkReadyKey = var3; + var7 = false; + } else { + var7 = false; + } + } else { + var7 = false; + } + } finally { + if (var7) { + this.artworkLoading.set((boolean)((((1878940164 | -1878940164) + (1878940164 & -1878940164))) != 0)); + } + } + + this.artworkLoading.set((boolean)((((-482913344 | 482913344) + (-482913344 & 482913344))) != 0)); + }); + } catch (RejectedExecutionException var5) { + this.artworkLoading.set((boolean)((((79218832 | -79218832) + (79218832 & -79218832))) != 0)); + } + } + } + } + } + + private void publish(jh var1) { + long var2 = System.nanoTime(); + jh var4 = this.withMonotonicPosition(var1); + this.reanchor(var1, var4, var2); + this.lastPublishNanos = var2; + this.snapshot = var4; + } + + private jh withMonotonicPosition(jh var1) { + long var2 = (-5148258134569869336L ^ 5148258134569869336L) + ((-5148258134569869336L & 5148258134569869336L) << 1); + int var4 = -1844932975; + + while (true) { + switch (var4) { + case -1844932975: + default: + if (!this.sourceRewound) { + var4 = -1520177053; + } else { + var4 = 2076618593; + } + break; + case -1766912591: + return var1.withPlaying(var1.playing(), var2); + case -1726983807: + var2 = this.getInterpolatedPositionMillis(); + if (var2 <= var1.positionMillis()) { + var4 = 1251462961; + } else { + var4 = -1766912591; + } + break; + case -1520177053: + if (!var1.trackKey().equals(this.lastReportedTrackKey)) { + var4 = 2076618593; + } else { + var4 = -1726983807; + } + break; + case 1251462961: + return var1; + case 2076618593: + return var1; + } + } + } + + private void reanchor(jh var1, jh var2, long var3) { + int var5 = 0; + int var7 = 0; + int var6 = -446148554; + + while (true) { + switch (var6) { + case -1774066198: + if (var1.durationMillis() == this.lastReportedDurationMillis) { + var6 = -622077321; + } else { + var6 = 397444271; + } + break; + case -622077321: + if (var1.positionMillis() == this.lastReportedPositionMillis) { + var6 = 1274852260; + } else { + var6 = 397444271; + } + break; + case -446148554: + default: + if (var1.trackKey().equals(this.lastReportedTrackKey)) { + var6 = 1377892851; + } else { + var6 = 397444271; + } + break; + case 397444271: + var7 = 0; + var6 = 2052016907; + break; + case 666691631: + return; + case 1070125615: + this.anchorPositionMillis = var2.positionMillis(); + this.anchorNanos = var3; + var6 = 666691631; + break; + case 1274852260: + var7 = 1; + var6 = 2052016907; + break; + case 1377892851: + if (var1.playing() == this.lastReportedPlaying) { + var6 = -1774066198; + } else { + var6 = 397444271; + } + break; + case 2052016907: + var5 = var7; + this.lastReportedTrackKey = var1.trackKey(); + this.lastReportedPlaying = var1.playing(); + this.lastReportedDurationMillis = var1.durationMillis(); + this.lastReportedPositionMillis = var1.positionMillis(); + this.lastReportedNanos = var3; + if (var5 == 0) { + var6 = 1070125615; + } else { + var6 = 666691631; + } + } + } + } + + private void stopPolling() { + this.pollTask = null; + this.closeBackend(); + this.artworkKey = ""; + this.artworkAttemptedKey = ""; + this.artworkReadyKey = ""; + ix.clear(); + this.publish(jh.EMPTY); + this.polling.set((boolean)((((-289653859 ^ 289653859) + ((-289653859 & 289653859) << 1))) != 0)); + } + + private iy ensureBackend() { + iy var1 = null; + int var2 = -825620348; + + while (true) { + switch (var2) { + case -1928068842: + if (this.backendUnavailable) { + var2 = 589717969; + } else { + var2 = 447032665; + } + break; + case -825620348: + default: + var1 = this.backend; + if (var1 != null) { + var2 = 1786317705; + } else { + var2 = -1928068842; + } + break; + case -493137230: + this.backendUnavailable = (boolean)(((1)) != 0); + return null; + case 447032665: + var1 = createBackend(); + if (var1 == null) { + var2 = -493137230; + } else { + var2 = 1196795264; + } + break; + case 589717969: + return null; + case 1196795264: + this.backend = var1; + return var1; + case 1786317705: + return var1; + } + } + } + + private void closeBackend() { + iy var1 = this.backend; + this.backend = null; + if (var1 != null) { + try { + var1.close(); + } catch (Throwable var3) { + } + } + } + + private void scheduleRefresh(long var1) { + try { + this.worker.schedule(this::pollOnce, var1, TimeUnit.MILLISECONDS); + } catch (RejectedExecutionException var4) { + } + } + + private void submit(Runnable var1) { + try { + this.worker.execute(var1); + } catch (RejectedExecutionException var3) { + } + } + + private void shutdown() { + this.worker.shutdownNow(); + this.artworkWorker.shutdownNow(); + iy var1 = this.backend; + this.backend = null; + if (var1 != null) { + try { + var1.close(); + } catch (Throwable var3) { + } + } + } + + private static iy createBackend() { + String var0 = null; + iy var1 = null; + iy var3 = null; + int var2 = -635559216; + + while (true) { + switch (var2) { + case -1697739118: + return new ip(); + case -1200853975: + var3 = new jv(); + var2 = 350040596; + break; + case -1070936276: + if (!var0.contains("nux")) { + var2 = 737749326; + } else { + var2 = -1697739118; + } + break; + case -776110300: + var1 = jt.tryCreate(); + if (var1 != null) { + var2 = 1729504909; + } else { + var2 = -1200853975; + } + break; + case -635559216: + default: + var0 = System.getProperty("os.name", "").toLowerCase(Locale.ROOT); + if (var0.contains("win")) { + var2 = -776110300; + } else { + var2 = 784978863; + } + break; + case 350040596: + return var3; + case 493270612: + if (var0.contains("darwin")) { + var2 = 571603081; + } else { + var2 = -1070936276; + } + break; + case 571603081: + return new iv(); + case 705544297: + id.warn(Cif.MEDIA, "no media backend for os {}", var0); + return null; + case 737749326: + if (var0.contains("nix")) { + var2 = -1697739118; + } else { + var2 = 705544297; + } + break; + case 784978863: + if (!var0.contains("mac")) { + var2 = 493270612; + } else { + var2 = 571603081; + } + break; + case 1729504909: + var3 = var1; + var2 = 350040596; + } + } + } +} diff --git a/src/main/java/defpackage/j.java b/src/main/java/defpackage/j.java new file mode 100644 index 0000000..c30ce3c --- /dev/null +++ b/src/main/java/defpackage/j.java @@ -0,0 +1,523 @@ +package defpackage; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.CopyOnWriteArrayList; + +public final class j { + private static final Map, List> REGISTRY_MAP = new HashMap<>(); + + private j() { + } + + public static void register(Object var0) { + Method[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = 565389611; + + while (true) { + switch (var5) { + case -1972669324: + var5 = -281965474; + break; + case -1722062660: + var4 = var1[var3]; + if (isMethodBad((Method)var4)) { + var5 = -1972669324; + } else { + var5 = 173405102; + } + break; + case -541728284: + return; + case -281965474: + var3++; + var5 = 506325305; + break; + case 173405102: + register((Method)var4, var0); + var5 = -281965474; + break; + case 506325305: + if (var3 < var2) { + var5 = -1722062660; + } else { + var5 = -541728284; + } + break; + case 565389611: + default: + var1 = var0.getClass().getDeclaredMethods(); + var2 = var1.length; + var3 = 0; + var5 = 506325305; + } + } + } + + public static void register(Object var0, Class var1) { + Method[] var2 = null; + int var3 = 0; + int var4 = 0; + Method var5 = null; + int var6 = 497170225; + + while (true) { + switch (var6) { + case -1697713517: + if (var4 < var3) { + var6 = 1650386213; + } else { + var6 = -454493017; + } + break; + case -1249177224: + var6 = 939815284; + break; + case -454493017: + return; + case 497170225: + default: + var2 = var0.getClass().getDeclaredMethods(); + var3 = var2.length; + var4 = 0; + var6 = -1697713517; + break; + case 939815284: + var4++; + var6 = -1697713517; + break; + case 1650386213: + var5 = var2[var4]; + if (isMethodBad(var5, var1)) { + var6 = -1249177224; + } else { + var6 = 1966464613; + } + break; + case 1966464613: + register(var5, var0); + var6 = 939815284; + } + } + } + + public static void unregister(Object var0) { + Iterator var1 = null; + List var2 = null; + Iterator var3 = null; + i var4 = null; + int var5 = -1407208127; + + while (true) { + switch (var5) { + case -2009410128: + var5 = 576928658; + break; + case -1695038772: + var2.remove(var4); + var5 = -2009410128; + break; + case -1407208127: + default: + var1 = REGISTRY_MAP.values().iterator(); + var5 = 1962934439; + break; + case -1246668972: + var5 = 1962934439; + break; + case 422247827: + var2 = (List)var1.next(); + var3 = var2.iterator(); + var5 = 576928658; + break; + case 576928658: + if (var3.hasNext()) { + var5 = 1537654330; + } else { + var5 = -1246668972; + } + break; + case 912898199: + cleanMap((boolean)((((1835414527 ^ -1835414526) + ((1835414527 & -1835414526) << 1))) != 0)); + return; + case 1537654330: + var4 = (i)var3.next(); + if (var4.getSource().equals(var0)) { + var5 = -1695038772; + } else { + var5 = -2009410128; + } + break; + case 1962934439: + if (var1.hasNext()) { + var5 = 422247827; + } else { + var5 = 912898199; + } + } + } + } + + public static void unregister(Object var0, Class var1) { + Iterator var2 = null; + i var3 = null; + int var4 = 1897569060; + + while (true) { + switch (var4) { + case -2117784925: + cleanMap((boolean)((((1748284184 ^ -1748284183) + ((1748284184 & -1748284183) << 1))) != 0)); + var4 = 736190289; + break; + case -931709345: + REGISTRY_MAP.get(var1).remove(var3); + var4 = 3746031; + break; + case 3746031: + var4 = 335309506; + break; + case 69214162: + var3 = (i)var2.next(); + if (var3.getSource().equals(var0)) { + var4 = -931709345; + } else { + var4 = 3746031; + } + break; + case 335309506: + if (var2.hasNext()) { + var4 = 69214162; + } else { + var4 = -2117784925; + } + break; + case 736190289: + return; + case 1697216904: + var2 = REGISTRY_MAP.get(var1).iterator(); + var4 = 335309506; + break; + case 1897569060: + default: + if (REGISTRY_MAP.containsKey(var1)) { + var4 = 1697216904; + } else { + var4 = 736190289; + } + } + } + } + + private static void register(Method var0, Object var1) { + Class var2 = null; + final i var3 = null; + int var4 = 1488099691; + + while (true) { + switch (var4) { + case -2092642494: + return; + case -1894022977: + var2 = var0.getParameterTypes()[0]; + var3 = new i(var1, var0, var0.getAnnotation(k.class).value()); + if (!var3.getTarget().isAccessible()) { + var4 = -1223938331; + } else { + var4 = -819570944; + } + break; + case -1768165665: + REGISTRY_MAP.get(var2).add(var3); + sortListValue(var2); + var4 = -2092642494; + break; + case -1223938331: + var3.getTarget().setAccessible((boolean)((((1797913462 ^ -1797913461) + ((1797913462 & -1797913461) << 1))) != 0)); + var4 = -819570944; + break; + case -1094948943: + REGISTRY_MAP.put(var2, new CopyOnWriteArrayList() { + private static final long serialVersionUID = 666L; + + { + this.add(var3); + } + }); + var4 = -2092642494; + break; + case -819570944: + if (REGISTRY_MAP.containsKey(var2)) { + var4 = -588819671; + } else { + var4 = -1094948943; + } + break; + case -588819671: + if (!REGISTRY_MAP.get(var2).contains(var3)) { + var4 = -1768165665; + } else { + var4 = -2092642494; + } + break; + case 1283389102: + return; + case 1488099691: + default: + if (var0.getParameterCount() != (1403458672 ^ -1403458671) + ((1403458672 & -1403458671) << 1)) { + var4 = 1283389102; + } else { + var4 = -1894022977; + } + } + } + } + + public static void removeEntry(Class var0) { + Iterator var1 = null; + int var2 = -234228918; + + while (true) { + switch (var2) { + case -1937850413: + return; + case -1518930063: + if (var1.hasNext()) { + var2 = 1401136769; + } else { + var2 = -1937850413; + } + break; + case -234228918: + default: + var1 = REGISTRY_MAP.entrySet().iterator(); + var2 = -1518930063; + break; + case 416929568: + var1.remove(); + var2 = -1937850413; + break; + case 1401136769: + if (((Class)((Entry)var1.next()).getKey()).equals(var0)) { + var2 = 416929568; + } else { + var2 = -1518930063; + } + } + } + } + + public static void cleanMap(boolean var0) { + Iterator var1 = null; + int var2 = 4394927; + + while (true) { + switch (var2) { + case -1552878006: + var1.remove(); + var2 = 1099760075; + break; + case -1451023460: + return; + case 4394927: + default: + var1 = REGISTRY_MAP.entrySet().iterator(); + var2 = 1099760075; + break; + case 433566315: + if (((List)((Entry)var1.next()).getValue()).isEmpty()) { + var2 = -1552878006; + } else { + var2 = 1099760075; + } + break; + case 1099760075: + if (var1.hasNext()) { + var2 = 1509155976; + } else { + var2 = -1451023460; + } + break; + case 1509155976: + if (var0) { + var2 = 433566315; + } else { + var2 = -1552878006; + } + } + } + } + + private static void sortListValue(Class var0) { + CopyOnWriteArrayList var1 = null; + byte[] var2 = null; + int var3 = 0; + int var4 = 0; + int var5 = 0; + Iterator var6 = null; + i var7 = null; + int var8 = 37346701; + + while (true) { + switch (var8) { + case -2056868388: + var7 = (i)var6.next(); + if (var7.getPriority() == var5) { + var8 = 1582965010; + } else { + var8 = -572479195; + } + break; + case -1946888714: + var5 = var2[var4]; + var6 = REGISTRY_MAP.get(var0).iterator(); + var8 = 1752059319; + break; + case -572479195: + var8 = 1752059319; + break; + case 37346701: + default: + var1 = new CopyOnWriteArrayList(); + var2 = s.VALUE_ARRAY; + var3 = var2.length; + var4 = 0; + var8 = 1597395493; + break; + case 157951132: + var4++; + var8 = 1597395493; + break; + case 1582965010: + var1.add(var7); + var8 = -572479195; + break; + case 1597395493: + if (var4 < var3) { + var8 = -1946888714; + } else { + var8 = 2096076216; + } + break; + case 1752059319: + if (var6.hasNext()) { + var8 = -2056868388; + } else { + var8 = 157951132; + } + break; + case 2096076216: + REGISTRY_MAP.put(var0, var1); + return; + } + } + } + + private static boolean isMethodBad(Method var0) { + int var2 = 0; + int var1 = -1631790161; + + while (true) { + switch (var1) { + case -1631790161: + default: + if (var0.getParameterTypes().length == (124576069 | -124576068) + (124576069 & -124576068)) { + var1 = -621414840; + } else { + var1 = 1361463002; + } + break; + case -861931074: + var2 = 0; + var1 = 90594366; + break; + case -621414840: + if (!var0.isAnnotationPresent(k.class)) { + var1 = 1361463002; + } else { + var1 = -861931074; + } + break; + case 90594366: + return (boolean)((var2) != 0); + case 1361463002: + var2 = 1; + var1 = 90594366; + } + } + } + + private static boolean isMethodBad(Method var0, Class var1) { + int var3 = 0; + int var2 = -1921727124; + + while (true) { + switch (var2) { + case -1921727124: + default: + if (!isMethodBad(var0)) { + var2 = 425980098; + } else { + var2 = 2146372801; + } + break; + case 123094288: + var3 = 0; + var2 = 1003277486; + break; + case 425980098: + if (!var0.getParameterTypes()[0].equals(var1)) { + var2 = 2146372801; + } else { + var2 = 123094288; + } + break; + case 1003277486: + return (boolean)((var3) != 0); + case 2146372801: + var3 = 1; + var2 = 1003277486; + } + } + } + + public static final m call(m var0) { + List var1 = REGISTRY_MAP.get(var0.getClass()); + if (var1 != null) { + if (var0 instanceof n var2) { + for (i var4 : var1) { + invoke(var4, var0); + if (var2.isStopped()) { + break; + } + } + } else { + for (i var6 : var1) { + invoke(var6, var0); + } + } + } + + return var0; + } + + private static void invoke(i var0, m var1) { + try { + Method var10000 = var0.getTarget(); + Object var10001 = var0.getSource(); + Object[] var10002 = new Object[1]; + var10002[0] = var1; + var10000.invoke(var10001, var10002); + } catch (IllegalAccessException var3) { + } catch (IllegalArgumentException var4) { + } catch (InvocationTargetException var5) { + } + } +} diff --git a/src/main/java/defpackage/ja.java b/src/main/java/defpackage/ja.java new file mode 100644 index 0000000..08e2702 --- /dev/null +++ b/src/main/java/defpackage/ja.java @@ -0,0 +1,193 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URI; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; + +final class ja { + private static final String DEEZER_ENDPOINT = "https://api.deezer.com/search?limit=1&q="; + private static final String DEEZER_DATA_FIELD = "data"; + private static final String DEEZER_ALBUM_FIELD = "album"; + private static final String DEEZER_COVER_FIELD = "cover_big"; + private static final String ITUNES_ENDPOINT = "https://itunes.apple.com/search?media=music&entity=song&limit=1&term="; + private static final String ITUNES_RESULTS_FIELD = "results"; + private static final String ITUNES_ARTWORK_FIELD = "artworkUrl100"; + private static final String ITUNES_LOW_RESOLUTION = "100x100bb"; + private static final String ITUNES_HIGH_RESOLUTION = "600x600bb"; + private static final String QUERY_SEPARATOR = " "; + private static final int CONNECT_TIMEOUT_MILLIS = 4000; + private static final int READ_TIMEOUT_MILLIS = 4000; + private static final int MAX_JSON_BYTES = 262144; + private static final String USER_AGENT_HEADER = "User-Agent"; + private static final String USER_AGENT = "EvoVis"; + + private ja() { + } + + static byte[] fetch(String var0, String var1) { + String var2 = null; + String var3 = null; + String var5 = null; + int var4 = -892748430; + + while (true) { + switch (var4) { + case -2086519810: + return null; + case -1341134822: + var3 = itunesArtworkUrl(var2); + var4 = 443589732; + break; + case -1179329059: + if (var0 != null) { + var4 = 1602000032; + } else { + var4 = 1390860737; + } + break; + case -892748430: + default: + if (var1 != null) { + var4 = 1354159152; + } else { + var4 = -2086519810; + } + break; + case -818962310: + var5 = var0 + " "; + var4 = -97101989; + break; + case -97101989: + var2 = var5 + var1; + var3 = deezerArtworkUrl(var2); + if (var3 == null) { + var4 = -1341134822; + } else { + var4 = 443589732; + } + break; + case 443589732: + if (var3 == null) { + var4 = 1499245536; + } else { + var4 = 1731705496; + } + break; + case 1354159152: + if (var1.isEmpty()) { + var4 = -2086519810; + } else { + var4 = -1179329059; + } + break; + case 1390860737: + var5 = ""; + var4 = -97101989; + break; + case 1499245536: + return null; + case 1602000032: + if (var0.isEmpty()) { + var4 = 1390860737; + } else { + var4 = -818962310; + } + break; + case 1731705496: + return ji.download(var3); + } + } + } + + private static String deezerArtworkUrl(String var0) { + String var1 = requestJson("https://api.deezer.com/search?limit=1&q=" + encode(var0)); + if (var1 == null) { + return null; + } + + try { + JsonArray var2 = JsonParser.parseString(var1) + .getAsJsonObject() + .getAsJsonArray("data"); + if (var2 != null && !var2.isEmpty()) { + JsonObject var3 = var2.get((2070781360 ^ -2070781360) + ((2070781360 & -2070781360) << 1)) + .getAsJsonObject() + .getAsJsonObject("album"); + if (var3 != null && var3.has("cover_big")) { + String var4 = var3.get("cover_big").getAsString(); + return var4.isEmpty() ? null : var4; + } else { + return null; + } + } else { + return null; + } + } catch (Exception var5) { + return null; + } + } + + private static String itunesArtworkUrl(String var0) { + String var1 = requestJson("https://itunes.apple.com/search?media=music&entity=song&limit=1&term=" + encode(var0)); + if (var1 == null) { + return null; + } + + try { + JsonArray var2 = JsonParser.parseString(var1) + .getAsJsonObject() + .getAsJsonArray("results"); + if (var2 != null && !var2.isEmpty()) { + JsonObject var3 = var2.get(0).getAsJsonObject(); + return !var3.has("artworkUrl100") + ? null + : var3.get("artworkUrl100") + .getAsString() + .replace( + "100x100bb", + "600x600bb" + ); + } else { + return null; + } + } catch (Exception var4) { + return null; + } + } + + private static String encode(String var0) { + return URLEncoder.encode(var0, StandardCharsets.UTF_8); + } + + private static String requestJson(String var0) { + HttpURLConnection var1 = null; + + try { + var1 = (HttpURLConnection)URI.create(var0).toURL().openConnection(); + var1.setConnectTimeout((1978887080 | -1978883080) + (1978887080 & -1978883080)); + var1.setReadTimeout((-966655807 | 966659807) + (-966655807 & 966659807)); + var1.setRequestProperty( + "User-Agent", + "EvoVis" + ); + if (var1.getResponseCode() != (1198267778 ^ -1198267578) + ((1198267778 & -1198267578) << 1)) { + return null; + } + + try (InputStream var2 = var1.getInputStream()) { + return new String(var2.readNBytes((733147254 | -732885110) + (733147254 & -732885110)), StandardCharsets.UTF_8); + } + } catch (Exception var12) { + return null; + } finally { + if (var1 != null) { + var1.disconnect(); + } + } + } +} diff --git a/src/main/java/defpackage/jb.java b/src/main/java/defpackage/jb.java new file mode 100644 index 0000000..bffb680 --- /dev/null +++ b/src/main/java/defpackage/jb.java @@ -0,0 +1,56 @@ +package defpackage; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Objects; + +/* JADX INFO: loaded from: evovis-dec.jar:jb.class */ +class jb extends LinkedHashMap { + final /* synthetic */ je this$0; + + /* JADX WARN: Multi-variable type inference failed */ + @Override // java.util.LinkedHashMap + protected boolean removeEldestEntry(Map.Entry entry) { + int i = 0; + int i2 = 1610565082; + int i3 = 268371338; + int i4 = 1435058520; + while (true) { + switch (i2 + (i3 & i4)) { + case -1668384651: + return i; + case 1703429858: + default: + if (size() <= ((-1314746602) | 1314746650) + ((-1314746602) & 1314746650)) { + i2 = -203694273; + i3 = -1034186954; + i4 = -1316398051; + } else { + i2 = -168561676; + i3 = -235806032; + i4 = -2068606092; + } + break; + case 1944382291: + i = 0; + i2 = -1702895635; + i3 = 37674120; + i4 = -1706058771; + break; + case 1990555172: + i = 1; + i2 = -595759249; + i3 = -866308753; + i4 = -802075898; + break; + } + } + } + + /* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */ + jb(je jeVar, int i, float f, boolean z) { + super(i, f, z); + Objects.requireNonNull(jeVar); + this.this$0 = jeVar; + } +} diff --git a/src/main/java/defpackage/jc.java b/src/main/java/defpackage/jc.java new file mode 100644 index 0000000..ecdddf1 --- /dev/null +++ b/src/main/java/defpackage/jc.java @@ -0,0 +1,9 @@ +package defpackage; + +record jc(jd lyrics, boolean pending, long retryAt) { + static final jc PENDING = new jc( + null, + (boolean)(((1)) != 0), + (-7321972085941976783L | -1901399950912799026L) + (-7321972085941976783L & -1901399950912799026L) + ); +} diff --git a/src/main/java/defpackage/jd.java b/src/main/java/defpackage/jd.java new file mode 100644 index 0000000..f3b626d --- /dev/null +++ b/src/main/java/defpackage/jd.java @@ -0,0 +1,90 @@ +package defpackage; + +import java.util.Arrays; + +public final class jd { + private final long[] times; + private final String[] lines; + + jd(long[] var1, String[] var2) { + this.times = var1; + this.lines = var2; + } + + public int indexAt(long var1) { + int var3 = 0; + int var4 = 882703541; + + while (true) { + switch (var4) { + case -2050531098: + var3++; + var4 = -382759918; + break; + case -382759918: + if (var3 + (735715203 ^ -735715202) + ((735715203 & -735715202) << 1) < this.times.length) { + var4 = -101912334; + } else { + var4 = 1862964135; + } + break; + case -101912334: + if (this.times[var3 + 1] == var1) { + var4 = -2050531098; + } else { + var4 = 1862964135; + } + break; + case 149328629: + return -var3 - (2); + case 882703541: + default: + var3 = Arrays.binarySearch(this.times, var1); + if (var3 >= 0) { + var4 = -382759918; + } else { + var4 = 149328629; + } + break; + case 1862964135: + return var3; + } + } + } + + public String line(int var1) { + return this.lines[var1]; + } + + public long start(int var1) { + return this.times[var1]; + } + + public long end(int var1, long var2) { + long var5 = (3593750803175752746L ^ -3593750803175752746L) + ((3593750803175752746L & -3593750803175752746L) << 1); + int var4 = -263197170; + + while (true) { + switch (var4) { + case -1742544485: + var5 = this.times[var1 + 1]; + var4 = 1665232887; + break; + case -263197170: + default: + if (var1 + (-320599875 ^ 320599876) + ((-320599875 & 320599876) << 1) < this.times.length) { + var4 = -1742544485; + } else { + var4 = 1459911698; + } + break; + case 1459911698: + var5 = this.times[var1] + var2; + var4 = 1665232887; + break; + case 1665232887: + return var5; + } + } + } +} diff --git a/src/main/java/defpackage/je.java b/src/main/java/defpackage/je.java new file mode 100644 index 0000000..2225ac2 --- /dev/null +++ b/src/main/java/defpackage/je.java @@ -0,0 +1,561 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URI; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.RejectedExecutionException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public final class je { + private static final je INSTANCE = new je(); + private static final String GET_ENDPOINT = "https://lrclib.net/api/get?"; + private static final String SEARCH_ENDPOINT = "https://lrclib.net/api/search?"; + private static final String ARTIST_PARAM = "artist_name="; + private static final String TRACK_PARAM = "track_name="; + private static final String DURATION_PARAM = "duration="; + private static final String QUERY_PARAM = "q="; + private static final String PARAM_JOINER = "&"; + private static final String QUERY_SEPARATOR = " "; + private static final String SYNCED_FIELD = "syncedLyrics"; + private static final String DURATION_FIELD = "duration"; + private static final String LINE_BREAK = "\n"; + private static final Pattern TIMESTAMP = Pattern.compile( + "\\[(\\d{1,3}):(\\d{1,2})(?:[.:](\\d{1,3}))?]" + ); + private static final int FRACTION_DIGITS_MILLIS = 3; + private static final int DECIMAL_BASE = 10; + private static final long MILLIS_PER_SECOND = 1000L; + private static final long SECONDS_PER_MINUTE = 60L; + private static final double DURATION_TOLERANCE_SECONDS = 4.0; + private static final int CONNECT_TIMEOUT_MILLIS = 5000; + private static final int READ_TIMEOUT_MILLIS = 6000; + private static final int MAX_JSON_BYTES = 1048576; + private static final int MAX_LINE_LENGTH = 160; + private static final String USER_AGENT_HEADER = "User-Agent"; + private static final String USER_AGENT = "EvoVis (https://www.evoproject.xyz)"; + private static final String WORKER_THREAD_NAME = "Evo-Lyrics"; + private static final int CACHE_CAPACITY = 48; + private static final long MISS_RETRY_MILLIS = 300000L; + private static final long FAILURE_RETRY_MILLIS = 30000L; + private static final long RECHECK_MILLIS = 1000L; + private static final String FETCH_FAILURE = "Lyrics lookup failed for {}"; + private static final String TASK_REJECTED = "Lyrics worker rejected a lookup"; + private final ExecutorService worker = Executors.newSingleThreadExecutor(var0 -> { + Thread var1 = new Thread(var0, "Evo-Lyrics"); + var1.setDaemon((boolean)((((-462957591 | 462957592) + (-462957591 & 462957592))) != 0)); + var1.setPriority((1916269743 ^ -1916269742) + ((1916269743 & -1916269742) << 1)); + return var1; + }); + private final Map cache = new LinkedHashMap( + (559872478 ^ -559872430) + ((559872478 & -559872430) << 1), 0.75F, (boolean)((((-2012508719 | 2012508720) + (-2012508719 & 2012508720)) + ) != 0)) { + @Override + protected boolean removeEldestEntry(Entry var1) { + int var3 = 0; + int var2 = 1703429858; + + while (true) { + switch (var2) { + case -1668384651: + return (boolean)((var3) != 0); + case 1703429858: + default: + if (this.size() > (-1314746602 | 1314746650) + (-1314746602 & 1314746650)) { + var2 = 1990555172; + } else { + var2 = 1944382291; + } + break; + case 1944382291: + var3 = 0; + var2 = -1668384651; + break; + case 1990555172: + var3 = 1; + var2 = -1668384651; + } + } + } + }; + private volatile int generation; + private String lastKey = ""; + private int lastGeneration = -1; + private long lastResolveAt; + private jd lastLyrics; + + private je() { + } + + public static je getInstance() { + return INSTANCE; + } + + public jd lookup(jh var1) { + String var2 = null; + long var3 = (-5475243451471918807L ^ 5475243451471918807L) + ((-5475243451471918807L & 5475243451471918807L) << 1); + int var5 = 0; + jd var6 = null; + int var7 = 510236738; + + while (true) { + switch (var7) { + case -2051031870: + return this.lastLyrics; + case -1498342144: + if (var3 - this.lastResolveAt < (-6785592583974544876L ^ 6785592583974545876L) + ((-6785592583974544876L & 6785592583974545876L) << 1)) { + var7 = -2051031870; + } else { + var7 = -1287497518; + } + break; + case -1287497518: + var6 = this.resolve(var2, var1, var3); + this.lastKey = var2; + this.lastGeneration = var5; + this.lastResolveAt = var3; + this.lastLyrics = var6; + return var6; + case 510236738: + default: + if (!var1.hasTrack()) { + var7 = 1424755790; + } else { + var7 = 1309113399; + } + break; + case 701367557: + if (this.lastGeneration == var5) { + var7 = 734867078; + } else { + var7 = -1287497518; + } + break; + case 734867078: + if (this.lastLyrics == null) { + var7 = -1498342144; + } else { + var7 = -2051031870; + } + break; + case 1309113399: + var2 = var1.trackKey(); + var3 = System.currentTimeMillis(); + var5 = this.generation; + if (var2.equals(this.lastKey)) { + var7 = 701367557; + } else { + var7 = -1287497518; + } + break; + case 1424755790: + return null; + } + } + } + + private jd resolve(String var1, jh var2, long var3) { + synchronized (this.cache) { + jc var6 = this.cache.get(var1); + if (var6 != null && (var6.lyrics() != null || var6.pending() || var3 < var6.retryAt())) { + return var6.lyrics(); + } + + this.cache.put(var1, jc.PENDING); + } + + String var12 = var2.artist(); + String var13 = var2.title(); + long var7 = var2.durationMillis(); + + try { + this.worker.execute(() -> this.load(var1, var12, var13, var7)); + } catch (RejectedExecutionException var10) { + id.warn(Cif.MEDIA, "Lyrics worker rejected a lookup", var10); + this.store(var1, null, var3 + (-7048283066278350109L ^ 7048283066278380109L) + ((-7048283066278350109L & 7048283066278380109L) << 1)); + } + + return null; + } + + private void load(String var1, String var2, String var3, long var4) { + try { + jd var6 = fetch(var2, var3, var4); + long var7 = System.currentTimeMillis() + (-2687738972226457179L | 2687738972226757179L) + (-2687738972226457179L & 2687738972226757179L); + this.store(var1, var6, var7); + } catch (Exception var9) { + id.warn(Cif.MEDIA, "Lyrics lookup failed for {}", var3, var9); + this.store(var1, null, System.currentTimeMillis() + (-6737482752959814329L | 6737482752959844329L) + (-6737482752959814329L & 6737482752959844329L)); + } + } + + private void store(String var1, jd var2, long var3) { + synchronized (this.cache) { + this.cache.put(var1, new jc(var2, (boolean)(((0)) != 0), var3)); + } + + this.generation += 1; + } + + private static jd fetch(String var0, String var1, long var2) throws Exception { + if (!var0.isEmpty()) { + StringBuilder var4 = new StringBuilder( + "https://lrclib.net/api/get?" + ) + .append("artist_name=") + .append(encode(var0)) + .append("&") + .append("track_name=") + .append(encode(var1)); + if (var2 > (4861306694101622195L ^ -4861306694101622195L) + ((4861306694101622195L & -4861306694101622195L) << 1)) { + var4.append("&") + .append("duration=") + .append(var2 / ((-6904295651445565636L ^ 6904295651445566636L) + ((-6904295651445565636L & 6904295651445566636L) << 1))); + } + + String var5 = requestJson(var4.toString()); + if (var5 != null) { + JsonElement var6 = JsonParser.parseString(var5); + if (var6.isJsonObject()) { + jd var7 = parse(syncedOf(var6.getAsJsonObject())); + if (var7 != null) { + return var7; + } + } + } + } + + String var8 = var0.isEmpty() ? var1 : var0 + " " + var1; + String var9 = requestJson("https://lrclib.net/api/search?q=" + encode(var8)); + if (var9 == null) { + return null; + } + + JsonElement var10 = JsonParser.parseString(var9); + return !var10.isJsonArray() ? null : bestMatch(var10.getAsJsonArray(), var2); + } + + private static jd bestMatch(JsonArray var0, long var1) { + String var3 = null; + double var4 = 0.0; + Iterator var6 = null; + JsonElement var7 = null; + JsonObject var8 = null; + String var9 = null; + int var10 = -1543954449; + + while (true) { + switch (var10) { + case -1551635482: + var10 = 372382034; + break; + case -1543954449: + default: + var3 = null; + var4 = var1 / 1000.0; + var6 = var0.iterator(); + var10 = 372382034; + break; + case -1523522902: + var3 = var9; + var10 = 372382034; + break; + case -1434651050: + if (var1 > (-7477005693443980185L | 7477005693443980185L) + (-7477005693443980185L & 7477005693443980185L)) { + var10 = 45275224; + } else { + var10 = 1229110726; + } + break; + case -1025111481: + return parse(var3); + case -762319008: + if (Math.abs(var8.get("duration").getAsDouble() - var4) <= 4.0) { + var10 = -356325585; + } else { + var10 = 67021552; + } + break; + case -619291156: + var8 = var7.getAsJsonObject(); + var9 = syncedOf(var8); + if (var9 == null) { + var10 = 1305473321; + } else { + var10 = -1434651050; + } + break; + case -356325585: + return parse(var9); + case 45275224: + if (var8.has("duration")) { + var10 = 359022469; + } else { + var10 = 1229110726; + } + break; + case 67021552: + if (var3 == null) { + var10 = 441297478; + } else { + var10 = 784368434; + } + break; + case 359022469: + if (var8.get("duration").isJsonNull()) { + var10 = 1229110726; + } else { + var10 = -762319008; + } + break; + case 372382034: + if (var6.hasNext()) { + var10 = 2145500545; + } else { + var10 = -1025111481; + } + break; + case 441297478: + var3 = var9; + var10 = 784368434; + break; + case 784368434: + var10 = 372382034; + break; + case 1229110726: + if (var3 == null) { + var10 = -1523522902; + } else { + var10 = 372382034; + } + break; + case 1305473321: + var10 = 372382034; + break; + case 2145500545: + var7 = (JsonElement)var6.next(); + if (!var7.isJsonObject()) { + var10 = -1551635482; + } else { + var10 = -619291156; + } + } + } + } + + private static String syncedOf(JsonObject var0) { + JsonElement var1 = null; + String var2 = null; + String var4 = null; + int var3 = -524894213; + + while (true) { + switch (var3) { + case -1300248191: + var2 = var1.getAsString(); + if (var2.isBlank()) { + var3 = -817652871; + } else { + var3 = -843084725; + } + break; + case -860702972: + if (var1.isJsonNull()) { + var3 = 655835680; + } else { + var3 = -1300248191; + } + break; + case -843084725: + var4 = var2; + var3 = 1588119985; + break; + case -817652871: + var4 = null; + var3 = 1588119985; + break; + case -524894213: + default: + var1 = var0.get("syncedLyrics"); + if (var1 != null) { + var3 = -860702972; + } else { + var3 = 655835680; + } + break; + case 655835680: + return null; + case 1588119985: + return var4; + } + } + } + + static jd parse(String var0) { + if (var0 == null) { + return null; + } + + ArrayList var1 = new ArrayList(); + ArrayList var2 = new ArrayList(); + String[] var3 = var0.split("\n"); + int var4 = var3.length; + + for (int var5 = 0; var5 < var4; var5++) { + String var6 = var3[var5]; + Matcher var7 = TIMESTAMP.matcher(var6); + int var8 = 0; + ArrayList var9 = new ArrayList((-1779895536 | 1779895537) + (-1779895536 & 1779895537)); + + while (var7.find() && var7.start() == var8) { + var9.add(toMillis(var7)); + var8 = var7.end(); + } + + if (!var9.isEmpty()) { + String var10 = clean(var6.substring(var8)); + + for (long var12 : var9) { + long[] var10001 = new long[2]; + var10001[0] = var12; + var10001[1] = var2.size(); + var1.add(var10001); + var2.add(var10); + } + } + } + + if (var1.isEmpty()) { + return null; + } + + var1.sort( + (var0x, var1x) -> Long.compare( + var0x[0], var1x[0] + ) + ); + long[] var14 = new long[var1.size()]; + String[] var15 = new String[var1.size()]; + + for (int var16 = 0; var16 < var1.size(); var16++) { + var14[var16] = ((long[])var1.get(var16))[0]; + var15[var16] = (String)var2.get((int)((long[])var1.get(var16))[1]); + } + + return new jd(var14, var15); + } + + private static long toMillis(Matcher var0) { + long var1 = (-9050655652958777927L | 9050655652958777927L) + (-9050655652958777927L & 9050655652958777927L); + long var3 = (3639114827225495865L ^ -3639114827225495865L) + ((3639114827225495865L & -3639114827225495865L) << 1); + long var5 = (-3800587798983892032L ^ 3800587798983892032L) + ((-3800587798983892032L & 3800587798983892032L) << 1); + String var7 = null; + int var8 = 0; + int var9 = -885439368; + + while (true) { + switch (var9) { + case -2133269593: + return (var1 * ((-7379898123708275600L | 7379898123708275660L) + (-7379898123708275600L & 7379898123708275660L)) + var3) + * ((8749649046382292092L | -8749649046382291092L) + (8749649046382292092L & -8749649046382291092L)) + + var5; + case -2062404287: + var5 = Long.parseLong(var7); + var8 = var7.length(); + var9 = -1436085496; + break; + case -1436085496: + if (var8 < (951085762 ^ -951085759) + ((951085762 & -951085759) << 1)) { + var9 = 84245777; + } else { + var9 = -2133269593; + } + break; + case -885439368: + default: + var1 = Long.parseLong(var0.group((716028107 ^ -716028106) + ((716028107 & -716028106) << 1))); + var3 = Long.parseLong(var0.group((-1114989855 | 1114989857) + (-1114989855 & 1114989857))); + var5 = (-5951331877945523816L ^ 5951331877945523816L) + ((-5951331877945523816L & 5951331877945523816L) << 1); + var7 = var0.group((-2114621562 ^ 2114621565) + ((-2114621562 & 2114621565) << 1)); + if (var7 != null) { + var9 = -2062404287; + } else { + var9 = -2133269593; + } + break; + case 84245777: + var5 *= (-6741459858099467034L ^ 6741459858099467044L) + ((-6741459858099467034L & 6741459858099467044L) << 1); + var8++; + var9 = -1436085496; + } + } + } + + private static String clean(String var0) { + String var1 = null; + String var3 = null; + int var2 = -1127659778; + + while (true) { + switch (var2) { + case -1505202384: + return var3; + case -1127659778: + default: + var1 = var0.strip(); + if (var1.length() > (-559063958 ^ 559064118) + ((-559063958 & 559064118) << 1)) { + var2 = 753404380; + } else { + var2 = 1823601923; + } + break; + case 753404380: + var3 = var1.substring(0, (-416801299 | 416801459) + (-416801299 & 416801459)); + var2 = -1505202384; + break; + case 1823601923: + var3 = var1; + var2 = -1505202384; + } + } + } + + private static String encode(String var0) { + return URLEncoder.encode(var0, StandardCharsets.UTF_8); + } + + private static String requestJson(String var0) throws Exception { + HttpURLConnection var1 = (HttpURLConnection)URI.create(var0).toURL().openConnection(); + + try { + var1.setConnectTimeout((969046210 | -969041210) + (969046210 & -969041210)); + var1.setReadTimeout((-837400467 ^ 837406467) + ((-837400467 & 837406467) << 1)); + var1.setRequestProperty( + "User-Agent", + "EvoVis (https://www.evoproject.xyz)" + ); + if (var1.getResponseCode() != (-1760185664 ^ 1760185864) + ((-1760185664 & 1760185864) << 1)) { + return null; + } + + try (InputStream var2 = var1.getInputStream()) { + return new String(var2.readNBytes((1255227248 | -1254178672) + (1255227248 & -1254178672)), StandardCharsets.UTF_8); + } + } finally { + var1.disconnect(); + } + } +} diff --git a/src/main/java/defpackage/jf.java b/src/main/java/defpackage/jf.java new file mode 100644 index 0000000..ccc315e --- /dev/null +++ b/src/main/java/defpackage/jf.java @@ -0,0 +1,104 @@ +package defpackage; + +import java.io.IOException; +import java.io.InputStream; +import java.lang.ProcessBuilder.Redirect; +import java.nio.charset.StandardCharsets; +import java.util.List; + +final class jf { + private static final long DEFAULT_TIMEOUT_MILLIS = 2500L; + private static final int MAX_OUTPUT_BYTES = 8192; + private static final long NANOS_PER_MILLI = 1000000L; + private static final long POLL_SLEEP_MILLIS = 5L; + + private jf() { + } + + static String capture(List var0) { + return capture(var0, (8463166343524876651L | -8463166343524874151L) + (8463166343524876651L & -8463166343524874151L)); + } + + static String capture(List var0, long var1) { + Process var3 = null; + + try { + var3 = new ProcessBuilder(var0) + .redirectErrorStream((boolean)((((-354666375 | 354666375) + (-354666375 & 354666375))) != 0)) + .redirectError(Redirect.DISCARD) + .start(); + var3.getOutputStream().close(); + String var4 = readWithDeadline(var3, var1); + if (var4 == null) { + var3.destroyForcibly(); + return null; + } else { + return var3.exitValue() == 0 ? var4 : null; + } + } catch (IOException var10) { + return null; + } catch (InterruptedException var11) { + Thread.currentThread().interrupt(); + return null; + } finally { + if (var3 != null && var3.isAlive()) { + var3.destroyForcibly(); + } + } + } + + static boolean run(List var0) { + int var2 = 0; + int var1 = 1539620215; + + while (true) { + switch (var1) { + case -2107377771: + var2 = 1; + var1 = -548207966; + break; + case -818082218: + var2 = 0; + var1 = -548207966; + break; + case -548207966: + return (boolean)((var2) != 0); + case 1539620215: + default: + if (capture(var0) != null) { + var1 = -2107377771; + } else { + var1 = -818082218; + } + } + } + } + + private static String readWithDeadline(Process var0, long var1) throws IOException, InterruptedException { + byte[] var3 = new byte[8192]; + int var4 = 0; + long var5 = System.nanoTime() + var1 * ((8646142720076032306L | -8646142720075032306L) + (8646142720076032306L & -8646142720075032306L)); + + try (InputStream var7 = var0.getInputStream()) { + while (System.nanoTime() < var5) { + int var8 = var7.available(); + if (var8 > 0 && var4 < var3.length) { + int var9 = var7.read(var3, var4, Math.min(var8, var3.length - var4)); + if (var9 < 0) { + break; + } + + var4 += var9; + } else { + if (!var0.isAlive()) { + break; + } + + Thread.sleep((7270107439811979730L | -7270107439811979725L) + (7270107439811979730L & -7270107439811979725L)); + } + } + } + + return var0.isAlive() ? null : new String(var3, 0, var4, StandardCharsets.UTF_8); + } +} diff --git a/src/main/java/defpackage/jg.java b/src/main/java/defpackage/jg.java new file mode 100644 index 0000000..3cb1a9e --- /dev/null +++ b/src/main/java/defpackage/jg.java @@ -0,0 +1,88 @@ +package defpackage; + +final class jg { + private static final String SESSION_CHANGED = "{} media session {}"; + private static final String NO_SESSION = "none"; + private static final String TRACK_SEPARATOR = " - "; + private static final String TRACK_LABEL = " track "; + private final String backendName; + private String lastState = ""; + + jg(String var1) { + this.backendName = var1; + } + + void report(String var1, jh var2) { + String var3 = null; + Object var4 = null; + String var5 = null; + String var7 = null; + String var8 = null; + int var6 = 2038128127; + + while (true) { + switch (var6) { + case -1122125549: + var8 = "none"; + var6 = -459596866; + break; + case -1021261320: + var7 = "none"; + var6 = 478190037; + break; + case -459596866: + var4 = var8; + var5 = var3 + " track " + var4; + if (var5.equals(this.lastState)) { + var6 = 2111938063; + } else { + var6 = -311876776; + } + break; + case -311876776: + this.lastState = var5; + id.debug( + Cif.MEDIA, "{} media session {}", this.backendName, var5 + ); + return; + case -697639: + if (var1.isBlank()) { + var6 = -1021261320; + } else { + var6 = 546567900; + } + break; + case 478190037: + var3 = var7; + if (var2.hasTrack()) { + var6 = 831027658; + } else { + var6 = -1122125549; + } + break; + case 546567900: + var7 = var1.trim(); + var6 = 478190037; + break; + case 831027658: + var8 = var2.artist() + " - " + var2.title(); + var6 = -459596866; + break; + case 2038128127: + default: + if (var1 != null) { + var6 = -697639; + } else { + var6 = -1021261320; + } + break; + case 2111938063: + return; + } + } + } + + void reset() { + this.lastState = ""; + } +} diff --git a/src/main/java/defpackage/jh.java b/src/main/java/defpackage/jh.java new file mode 100644 index 0000000..bac5457 --- /dev/null +++ b/src/main/java/defpackage/jh.java @@ -0,0 +1,192 @@ +package defpackage; + +public record jh(String artist, String title, boolean playing, boolean available, long positionMillis, long durationMillis, String artworkKey) { + private static final int MAX_FIELD_LENGTH = 96; + private static final char FIRST_PRINTABLE_CHARACTER = ' '; + private static final char DELETE_CHARACTER = '\u007f'; + private static final char KEY_SEPARATOR = '\u001f'; + private static final long MAX_DURATION_MILLIS = 86400000L; + public static final jh EMPTY = new jh( + "", + "", + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (-549169529132187371L | 549169529132187371L) + (-549169529132187371L & 549169529132187371L), + (5180191397457585631L | -5180191397457585631L) + (5180191397457585631L & -5180191397457585631L), + "" + ); + + public static jh of(String var0, String var1, boolean var2, long var3, long var5, String var7) { + String var8 = sanitize(var1); + if (var8.isEmpty()) { + return EMPTY; + } + + long var9 = clampTime(var5); + long var11 = Math.min(clampTime(var3), var9); + return new jh( + sanitize(var0), var8, var2, (boolean)(((1)) != 0), var11, var9, var7 == null ? "" : var7.trim() + ); + } + + public boolean hasTrack() { + int var2 = 0; + int var1 = 98329672; + + while (true) { + switch (var1) { + case -1072881077: + var2 = 0; + var1 = -619078141; + break; + case -619078141: + return (boolean)((var2) != 0); + case 98329672: + default: + if (this.available) { + var1 = 585326026; + } else { + var1 = -1072881077; + } + break; + case 555398011: + var2 = 1; + var1 = -619078141; + break; + case 585326026: + if (!this.title.isEmpty()) { + var1 = 555398011; + } else { + var1 = -1072881077; + } + } + } + } + + public boolean hasProgress() { + int var2 = 0; + int var1 = 535785088; + + while (true) { + switch (var1) { + case -8854889: + return (boolean)((var2) != 0); + case 535785088: + default: + if (this.durationMillis > (-5119106221288252801L ^ 5119106221288252801L) + ((-5119106221288252801L & 5119106221288252801L) << 1)) { + var1 = 1133943614; + } else { + var1 = 803510096; + } + break; + case 803510096: + var2 = 0; + var1 = -8854889; + break; + case 1133943614: + var2 = 1; + var1 = -8854889; + } + } + } + + public String trackKey() { + return this.artist + "\u001f" + this.title; + } + + public jh withPlaying(boolean var1, long var2) { + return new jh(this.artist, this.title, var1, this.available, Math.min(clampTime(var2), this.durationMillis), this.durationMillis, this.artworkKey); + } + + private static long clampTime(long var0) { + int var2 = -214179896; + + while (true) { + switch (var2) { + case -2037252012: + return Math.min(var0, (8243404190463350024L | -8243404190376950024L) + (8243404190463350024L & -8243404190376950024L)); + case -1958001097: + return (-8908509936710497156L | 8908509936710497156L) + (-8908509936710497156L & 8908509936710497156L); + case -214179896: + } + + if (var0 <= (-3419087796309601821L | 3419087796309601821L) + (-3419087796309601821L & 3419087796309601821L)) { + var2 = -1958001097; + } else { + var2 = -2037252012; + } + } + } + + private static String sanitize(String var0) { + StringBuilder var1 = null; + int var2 = 0; + int var3 = 0; + int var4 = -1892330742; + + while (true) { + switch (var4) { + case -2083732135: + var1.append((char)var3); + var4 = -710157356; + break; + case -1892330742: + default: + if (var0 != null) { + var4 = 92418965; + } else { + var4 = 989353630; + } + break; + case -710157356: + var2++; + var4 = 1513673269; + break; + case -153846848: + return var1.toString().trim(); + case 92418965: + if (var0.isEmpty()) { + var4 = 989353630; + } else { + var4 = 1672945868; + } + break; + case 989353630: + return ""; + case 1062053992: + if (var3 != (-1243188791 | 1243188918) + (-1243188791 & 1243188918)) { + var4 = -2083732135; + } else { + var4 = -710157356; + } + break; + case 1177330681: + var3 = var0.charAt(var2); + if (var3 >= (663522047 ^ -663522015) + ((663522047 & -663522015) << 1)) { + var4 = 1062053992; + } else { + var4 = -710157356; + } + break; + case 1513673269: + if (var2 < var0.length()) { + var4 = 1842072582; + } else { + var4 = -153846848; + } + break; + case 1672945868: + var1 = new StringBuilder(Math.min(var0.length(), (511857327 ^ -511857231) + ((511857327 & -511857231) << 1))); + var2 = 0; + var4 = 1513673269; + break; + case 1842072582: + if (var1.length() < (906353651 ^ -906353555) + ((906353651 & -906353555) << 1)) { + var4 = 1177330681; + } else { + var4 = -153846848; + } + } + } + } +} diff --git a/src/main/java/defpackage/ji.java b/src/main/java/defpackage/ji.java new file mode 100644 index 0000000..c6724d3 --- /dev/null +++ b/src/main/java/defpackage/ji.java @@ -0,0 +1,187 @@ +package defpackage; + +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URI; +import java.nio.file.Files; +import java.nio.file.Path; + +final class ji { + private static final String FIELD_SEPARATOR = "\t"; + private static final String PLAYING_STATE = "playing"; + private static final String HTTP_PREFIX = "http"; + private static final String FILE_PREFIX = "file://"; + private static final int STATE_INDEX = 0; + private static final int ARTIST_INDEX = 1; + private static final int TITLE_INDEX = 2; + private static final int POSITION_INDEX = 3; + private static final int DURATION_INDEX = 4; + private static final int ARTWORK_INDEX = 5; + private static final int MIN_FIELD_COUNT = 5; + private static final int CONNECT_TIMEOUT_MILLIS = 4000; + private static final int READ_TIMEOUT_MILLIS = 4000; + private static final int MAX_ARTWORK_BYTES = 4194304; + private static final String USER_AGENT_HEADER = "User-Agent"; + private static final String USER_AGENT = "EvoVis"; + + private ji() { + } + + static jh parse(String var0) { + return parse(var0, (-7765313112481940924L ^ 7765313112481940925L) + ((-7765313112481940924L & 7765313112481940925L) << 1)); + } + + static jh parse(String var0, long var1) { + String var3 = null; + String[] var4 = null; + int var5 = 0; + String var6 = null; + long var7 = (7799339673140714961L ^ -7799339673140714961L) + ((7799339673140714961L & -7799339673140714961L) << 1); + String var10 = null; + int var9 = -1816167778; + + while (true) { + switch (var9) { + case -1989976526: + return jh.EMPTY; + case -1846484442: + var5 = ("playing" + .equalsIgnoreCase(var4[0].trim())) ? 1 : 0; + if (var4.length > (258925176 | -258925171) + (258925176 & -258925171)) { + var9 = 1331193875; + } else { + var9 = 1858059264; + } + break; + case -1816167778: + default: + if (var0 == null) { + var9 = -1989976526; + } else { + var9 = -1718179490; + } + break; + case -1718179490: + var3 = var0.trim(); + if (var3.isEmpty()) { + var9 = 1492302124; + } else { + var9 = 1248781773; + } + break; + case -852433322: + return jh.EMPTY; + case 961183978: + var6 = var10; + var7 = Math.max((-6093859237900802265L ^ 6093859237900802266L) + ((-6093859237900802265L & 6093859237900802266L) << 1), var1); + return jh.of( + var4[1], + var4[2], + (boolean)((var5) != 0), + parseTime(var4[3]) / var7, + parseTime(var4[4]) / var7, + var6 + ); + case 1248781773: + var4 = var3.split( + " ", (-715202289 | 715202288) + (-715202289 & 715202288) + ); + if (var4.length < (-297225196 | 297225201) + (-297225196 & 297225201)) { + var9 = -852433322; + } else { + var9 = -1846484442; + } + break; + case 1331193875: + var10 = var4[5]; + var9 = 961183978; + break; + case 1492302124: + return jh.EMPTY; + case 1858059264: + var10 = ""; + var9 = 961183978; + } + } + } + + static long parseTime(String var0) { + if (var0 == null) { + return (2442142979972552893L | -2442142979972552893L) + (2442142979972552893L & -2442142979972552893L); + } + + String var1 = var0.trim(); + if (var1.isEmpty()) { + return (4670065770080130761L | -4670065770080130761L) + (4670065770080130761L & -4670065770080130761L); + } + + try { + return (long)Double.parseDouble(var1); + } catch (NumberFormatException var3) { + return (-7127938587385953425L | 7127938587385953425L) + (-7127938587385953425L & 7127938587385953425L); + } + } + + static byte[] read(String var0) { + if (var0 != null && !var0.isEmpty()) { + if (var0.startsWith("http")) { + return download(var0); + } + + if (var0.startsWith("file://")) { + try { + return readFile(Path.of(URI.create(var0))); + } catch (Exception var2) { + return null; + } + } else { + try { + return readFile(Path.of(var0)); + } catch (Exception var3) { + return null; + } + } + } else { + return null; + } + } + + static byte[] readFile(Path var0) { + try { + return Files.isRegularFile(var0) + && Files.size(var0) <= (1052982126248468212L | -1052982126244273908L) + (1052982126248468212L & -1052982126244273908L) + ? Files.readAllBytes(var0) + : null; + } catch (IOException var2) { + return null; + } + } + + static byte[] download(String var0) { + HttpURLConnection var1 = null; + + try { + var1 = (HttpURLConnection)URI.create(var0).toURL().openConnection(); + var1.setConnectTimeout((1185691106 | -1185687106) + (1185691106 & -1185687106)); + var1.setReadTimeout((-1246202142 | 1246206142) + (-1246202142 & 1246206142)); + var1.setRequestProperty( + "User-Agent", + "EvoVis" + ); + if (var1.getResponseCode() != (-2123635191 ^ 2123635391) + ((-2123635191 & 2123635391) << 1)) { + return null; + } + + try (InputStream var2 = var1.getInputStream()) { + return var2.readNBytes((1496488275 | -1492293971) + (1496488275 & -1492293971)); + } + } catch (Exception var12) { + return null; + } finally { + if (var1 != null) { + var1.disconnect(); + } + } + } +} diff --git a/src/main/java/defpackage/jj.java b/src/main/java/defpackage/jj.java new file mode 100644 index 0000000..5f33dea --- /dev/null +++ b/src/main/java/defpackage/jj.java @@ -0,0 +1,22 @@ +package defpackage; + +public final class jj { + private static final long MILLIS_PER_SECOND = 1000L; + private static final long SECONDS_PER_MINUTE = 60L; + private static final int PADDED_SECONDS_LIMIT = 10; + private static final String SEPARATOR = ":"; + private static final String MINUTE_PAD = "0"; + + private jj() { + } + + public static String format(long var0) { + long var2 = Math.max((73744038896050447L | -73744038896050447L) + (73744038896050447L & -73744038896050447L), var0) + / ((1788094213828589020L | -1788094213828588020L) + (1788094213828589020L & -1788094213828588020L)); + long var4 = var2 / ((-5100615613129276977L ^ 5100615613129277037L) + ((-5100615613129276977L & 5100615613129277037L) << 1)); + long var6 = var2 % ((2796306671922791700L ^ -2796306671922791640L) + ((2796306671922791700L & -2796306671922791640L) << 1)); + return var4 + + ":" + + (var6 < (6154168665399076851L | -6154168665399076841L) + (6154168665399076851L & -6154168665399076841L) ? "0" + var6 : String.valueOf(var6)); + } +} diff --git a/src/main/java/defpackage/jk.java b/src/main/java/defpackage/jk.java new file mode 100644 index 0000000..9049f48 --- /dev/null +++ b/src/main/java/defpackage/jk.java @@ -0,0 +1,145 @@ +package defpackage; + +import java.util.Iterator; +import java.util.List; + +final class jk { + private static final List SITE_SUFFIXES = List.of( + " | YouTube Music", + " - YouTube Music", + " - YouTube", + " | Spotify", + " | SoundCloud", + " | Deezer", + " — Яндекс Музыка", + " | Яндекс Музыка", + " | VK", + " | ВКонтакте" + ); + private static final String ARTIST_SEPARATOR = " - "; + private static final String ALTERNATE_SEPARATOR = " – "; + + private jk() { + } + + static jh fromBrowserTitle(jh var0) { + String var1 = null; + String var2 = null; + String var3 = null; + int var4 = 0; + int var5 = 1941773197; + + while (true) { + switch (var5) { + case -1567425488: + var2 = var1.substring(0, var4).trim(); + var3 = var1.substring(var4 + " - ".length()).trim(); + var5 = 1632704237; + break; + case -963038584: + return jh.EMPTY; + case 279833879: + var2 = ""; + var3 = var1; + var4 = indexOfSeparator(var1); + if (var4 > 0) { + var5 = -1567425488; + } else { + var5 = 1632704237; + } + break; + case 510035511: + return jh.of(var2, var3, var0.playing(), var0.positionMillis(), var0.durationMillis(), var0.artworkKey()); + case 826441015: + var3 = var1; + var2 = ""; + var5 = 510035511; + break; + case 1632704237: + if (var3.isEmpty()) { + var5 = 826441015; + } else { + var5 = 510035511; + } + break; + case 1941773197: + default: + var1 = stripSuffix(var0.title()); + if (var1.isEmpty()) { + var5 = -963038584; + } else { + var5 = 279833879; + } + } + } + } + + private static int indexOfSeparator(String var0) { + int var1 = 0; + int var2 = 1850133505; + + while (true) { + switch (var2) { + case -1610744795: + return var0.indexOf(" – "); + case 1317903040: + return var1; + case 1850133505: + } + + var1 = var0.indexOf(" - "); + if (var1 >= 0) { + var2 = 1317903040; + } else { + var2 = -1610744795; + } + } + } + + private static String stripSuffix(String var0) { + String var1 = null; + Iterator var2 = null; + String var3 = null; + int var4 = 134837914; + + while (true) { + switch (var4) { + case -2100408824: + if (var1.endsWith(var3)) { + var4 = -115378384; + } else { + var4 = -1689139508; + } + break; + case -1689139508: + var4 = -567996059; + break; + case -1480016885: + var3 = (String)var2.next(); + if (var1.length() > var3.length()) { + var4 = -2100408824; + } else { + var4 = -1689139508; + } + break; + case -567996059: + if (var2.hasNext()) { + var4 = -1480016885; + } else { + var4 = 1055425046; + } + break; + case -115378384: + return var1.substring(0, var1.length() - var3.length()).trim(); + case 134837914: + default: + var1 = var0.trim(); + var2 = SITE_SUFFIXES.iterator(); + var4 = -567996059; + break; + case 1055425046: + return var1; + } + } + } +} diff --git a/src/main/java/defpackage/jl.java b/src/main/java/defpackage/jl.java new file mode 100644 index 0000000..48341ff --- /dev/null +++ b/src/main/java/defpackage/jl.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +public interface jl { + void accept(float[] var1, int var2, int var3); +} diff --git a/src/main/java/defpackage/jm.java b/src/main/java/defpackage/jm.java new file mode 100644 index 0000000..060d0d2 --- /dev/null +++ b/src/main/java/defpackage/jm.java @@ -0,0 +1,20 @@ +package defpackage; + +import com.sun.jna.Library; +import com.sun.jna.Pointer; +import com.sun.jna.WString; +import com.sun.jna.platform.win32.Guid.GUID; +import com.sun.jna.ptr.IntByReference; +import com.sun.jna.ptr.PointerByReference; + +interface jm extends Library { + int RoInitialize(int var1); + + int RoGetActivationFactory(Pointer var1, GUID var2, PointerByReference var3); + + int WindowsCreateString(WString var1, int var2, PointerByReference var3); + + int WindowsDeleteString(Pointer var1); + + Pointer WindowsGetStringRawBuffer(Pointer var1, IntByReference var2); +} diff --git a/src/main/java/defpackage/jn.java b/src/main/java/defpackage/jn.java new file mode 100644 index 0000000..8946ed3 --- /dev/null +++ b/src/main/java/defpackage/jn.java @@ -0,0 +1,10 @@ +package defpackage; + +import com.sun.jna.Library; +import com.sun.jna.Pointer; +import com.sun.jna.platform.win32.Guid.GUID; +import com.sun.jna.ptr.PointerByReference; + +interface jn extends Library { + int CreateStreamOverRandomAccessStream(Pointer var1, GUID var2, PointerByReference var3); +} diff --git a/src/main/java/defpackage/jo.java b/src/main/java/defpackage/jo.java new file mode 100644 index 0000000..6574b82 --- /dev/null +++ b/src/main/java/defpackage/jo.java @@ -0,0 +1,14 @@ +package defpackage; + +import java.util.Locale; + +final class jo extends RuntimeException { + jo(String var1, int var2) { + Locale var10001 = Locale.ROOT; + String var10002 = "%s failed hresult=0x%08X"; + Object[] var10003 = new Object[2]; + var10003[0] = var1; + var10003[1] = var2; + super(String.format(var10001, var10002, var10003)); + } +} diff --git a/src/main/java/defpackage/jp.java b/src/main/java/defpackage/jp.java new file mode 100644 index 0000000..9f376ed --- /dev/null +++ b/src/main/java/defpackage/jp.java @@ -0,0 +1,349 @@ +package defpackage; + +import com.sun.jna.Function; +import com.sun.jna.Memory; +import com.sun.jna.Native; +import com.sun.jna.Pointer; +import com.sun.jna.WString; +import com.sun.jna.platform.win32.Guid.GUID; +import com.sun.jna.ptr.ByteByReference; +import com.sun.jna.ptr.IntByReference; +import com.sun.jna.ptr.LongByReference; +import com.sun.jna.ptr.PointerByReference; +import java.io.ByteArrayOutputStream; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.LockSupport; + +final class jp { + private static final String COMBASE_LIBRARY = "combase"; + private static final String SHCORE_LIBRARY = "shcore"; + private static final int RO_INIT_MULTITHREADED = 1; + private static final int RPC_E_CHANGED_MODE = -2147417850; + private static final int E_ABORT = -2147467260; + private static final int E_TIMEOUT = -2147023436; + private static final int S_OK = 0; + private static final int QUERY_INTERFACE = 0; + private static final int RELEASE = 2; + private static final int ASYNC_INFO_STATUS = 7; + private static final int ASYNC_INFO_ERROR_CODE = 8; + private static final int ASYNC_INFO_CANCEL = 9; + private static final int ASYNC_OPERATION_GET_RESULTS = 8; + private static final int VECTOR_VIEW_GET_AT = 6; + private static final int VECTOR_VIEW_SIZE = 7; + private static final int STREAM_READ = 3; + private static final int ASYNC_STARTED = 0; + private static final int ASYNC_COMPLETED = 1; + private static final int ASYNC_ERROR = 3; + private static final long ASYNC_POLL_NANOS = TimeUnit.MILLISECONDS + .toNanos((6917875337847136220L ^ -6917875337847136215L) + ((6917875337847136220L & -6917875337847136215L) << 1)); + private static final int STREAM_CHUNK_BYTES = 65536; + private static final String HRESULT_FORMAT = "%s failed hresult=0x%08X"; + private static final String OPERATION_QUERY_INTERFACE = "QueryInterface"; + private static final String OPERATION_ACTIVATION = "RoGetActivationFactory "; + private static final String OPERATION_CREATE_STRING = "WindowsCreateString"; + private static final String OPERATION_INITIALIZE = "RoInitialize"; + private static final String OPERATION_STREAM = "CreateStreamOverRandomAccessStream"; + private static final String OPERATION_STREAM_READ = "IStream.Read"; + private static final String OPERATION_VECTOR_SIZE = "IVectorView.Size"; + private static final String OPERATION_VECTOR_GET_AT = "IVectorView.GetAt"; + private static final GUID IID_ASYNC_INFO = new GUID( + "{00000036-0000-0000-C000-000000000046}" + ); + private static final GUID IID_STREAM = new GUID( + "{0000000C-0000-0000-C000-000000000046}" + ); + private static final jm COMBASE = (jm)Native.load("combase", jm.class); + private static final jn SHCORE = (jn)Native.load("shcore", jn.class); + + private jp() { + } + + static void initializeThread() { + int var0 = 0; + int var1 = -1707577498; + + while (true) { + switch (var1) { + case -1987605864: + if (var0 != (-4538867 | -2142878983) + (-4538867 & -2142878983)) { + var1 = -1299936085; + } else { + var1 = -80539876; + } + break; + case -1707577498: + default: + var0 = COMBASE.RoInitialize((894117059 | -894117058) + (894117059 & -894117058)); + if (var0 < 0) { + var1 = -1987605864; + } else { + var1 = -80539876; + } + break; + case -1299936085: + throw new jo("RoInitialize", var0); + case -80539876: + return; + } + } + } + + static Pointer activationFactory(String var0, GUID var1) { + PointerByReference var2 = new PointerByReference(); + check( + COMBASE.WindowsCreateString(new WString(var0), var0.length(), var2), + "WindowsCreateString" + ); + + try { + PointerByReference var3 = new PointerByReference(); + check(COMBASE.RoGetActivationFactory(var2.getValue(), var1, var3), "RoGetActivationFactory " + var0); + return var3.getValue(); + } finally { + COMBASE.WindowsDeleteString(var2.getValue()); + } + } + + static int invoke(Pointer var0, int var1, Object... var2) { + Pointer var3 = var0.getPointer((8926664983592596835L | -8926664983592596835L) + (8926664983592596835L & -8926664983592596835L)); + Function var4 = Function.getFunction(var3.getPointer((long)var1 * Native.POINTER_SIZE), (1187565683 | -1187565620) + (1187565683 & -1187565620)); + Object[] var5 = new Object[var2.length + 1]; + var5[0] = var0; + System.arraycopy( + var2, 0, var5, 1, var2.length + ); + return var4.invokeInt(var5); + } + + static void call(Pointer var0, int var1, String var2, Object... var3) { + check(invoke(var0, var1, var3), var2); + } + + static Pointer getObject(Pointer var0, int var1, String var2, Object... var3) { + PointerByReference var4 = new PointerByReference(); + check(invoke(var0, var1, append(var3, var4)), var2); + return var4.getValue(); + } + + static String getString(Pointer var0, int var1, String var2) { + PointerByReference var3 = new PointerByReference(); + Object[] var10002 = new Object[1]; + var10002[0] = var3; + check(invoke(var0, var1, var10002), var2); + Pointer var4 = var3.getValue(); + if (var4 == null) { + return ""; + } + + try { + IntByReference var5 = new IntByReference(); + Pointer var6 = COMBASE.WindowsGetStringRawBuffer(var4, var5); + return var6 != null && var5.getValue() > 0 + ? new String(var6.getCharArray((8947360845041591290L | -8947360845041591290L) + (8947360845041591290L & -8947360845041591290L), var5.getValue())) + : ""; + } finally { + COMBASE.WindowsDeleteString(var4); + } + } + + static int getInt(Pointer var0, int var1, String var2) { + IntByReference var3 = new IntByReference(); + Object[] var10002 = new Object[1]; + var10002[0] = var3; + check(invoke(var0, var1, var10002), var2); + return var3.getValue(); + } + + static long getLong(Pointer var0, int var1, String var2) { + LongByReference var3 = new LongByReference(); + Object[] var10002 = new Object[1]; + var10002[0] = var3; + check(invoke(var0, var1, var10002), var2); + return var3.getValue(); + } + + static boolean getBoolean(Pointer var0, int var1, String var2) { + ByteByReference var3 = null; + int var5 = 0; + int var4 = -188315467; + + while (true) { + switch (var4) { + case -188315467: + default: + var3 = new ByteByReference(); + Object[] var10002 = new Object[1]; + var10002[0] = var3; + check(invoke(var0, var1, var10002), var2); + if (var3.getValue() != 0) { + var4 = 298507977; + } else { + var4 = 212516501; + } + break; + case 212516501: + var5 = 0; + var4 = 1734726590; + break; + case 298507977: + var5 = 1; + var4 = 1734726590; + break; + case 1734726590: + return (boolean)((var5) != 0); + } + } + } + + static int vectorSize(Pointer var0) { + return getInt( + var0, + 7, + "IVectorView.Size" + ); + } + + static Pointer vectorAt(Pointer var0, int var1) { + int var10001 = 6; + String var10002 = "IVectorView.GetAt"; + Object[] var10003 = new Object[1]; + var10003[0] = var1; + return getObject(var0, var10001, var10002, var10003); + } + + static Pointer awaitObject(Pointer var0, long var1, String var3) { + awaitCompletion(var0, var1, var3); + return getObject(var0, 8, var3); + } + + static void awaitCompletion(Pointer var0, long var1, String var3) { + PointerByReference var4 = new PointerByReference(); + int var10001 = 0; + Object[] var10002 = new Object[2]; + var10002[0] = IID_ASYNC_INFO; + var10002[1] = var4; + check(invoke(var0, var10001, var10002), "QueryInterface"); + Pointer var5 = var4.getValue(); + + try { + long var6 = System.nanoTime() + TimeUnit.MILLISECONDS.toNanos(var1); + + int var8; + for (var8 = getInt(var5, 7, var3); + var8 == 0; + var8 = getInt(var5, 7, var3) + ) { + if (System.nanoTime() - var6 >= (-5518684597875193478L ^ 5518684597875193478L) + ((-5518684597875193478L & 5518684597875193478L) << 1)) { + invoke(var5, (-791490487 | 791490496) + (-791490487 & 791490496)); + throw new jo(var3, (-647175805 ^ -1499847631) + ((-647175805 & -1499847631) << 1)); + } + + LockSupport.parkNanos(ASYNC_POLL_NANOS); + } + + if (var8 != (1824527575 | -1824527574) + (1824527575 & -1824527574)) { + if (var8 == (-282491420 | 282491423) + (-282491420 & 282491423)) { + throw new jo(var3, getInt(var5, 8, var3)); + } + + throw new jo(var3, (1518493210 ^ 629006826) + ((1518493210 & 629006826) << 1)); + } + } finally { + release(var5); + } + } + + static byte[] readStream(Pointer var0, int var1) { + PointerByReference var2 = new PointerByReference(); + check( + SHCORE.CreateStreamOverRandomAccessStream(var0, IID_STREAM, var2), + "CreateStreamOverRandomAccessStream" + ); + Pointer var3 = var2.getValue(); + + try { + Memory var4 = new Memory((-4853465910351210709L | 4853465910351276245L) + (-4853465910351210709L & 4853465910351276245L)); + IntByReference var5 = new IntByReference(); + ByteArrayOutputStream var6 = new ByteArrayOutputStream((385999639 ^ -385934103) + ((385999639 & -385934103) << 1)); + + while (var6.size() < var1) { + int var10001 = 3; + Object[] var10002 = new Object[3]; + var10002[0] = var4; + var10002[1] = 65536; + var10002[2] = var5; + int var7 = invoke(var3, var10001, var10002); + check(var7, "IStream.Read"); + int var8 = Math.min(var5.getValue(), var1 - var6.size()); + if (var8 <= 0) { + break; + } + + var6.write( + var4.getByteArray((4097325612727323279L ^ -4097325612727323279L) + ((4097325612727323279L & -4097325612727323279L) << 1), var8), + 0, + var8 + ); + if (var7 != 0) { + break; + } + } + + return var6.toByteArray(); + } finally { + release(var3); + } + } + + static void release(Pointer var0) { + int var1 = -858888475; + + while (true) { + switch (var1) { + case -1102505509: + invoke(var0, (-1452279565 | 1452279567) + (-1452279565 & 1452279567)); + var1 = -1074767900; + break; + case -1074767900: + return; + case -858888475: + default: + if (var0 != null) { + var1 = -1102505509; + } else { + var1 = -1074767900; + } + } + } + } + + private static void check(int var0, String var1) { + int var2 = 1322374156; + + while (true) { + switch (var2) { + case 1118362612: + throw new jo(var1, var0); + case 1322374156: + default: + if (var0 < 0) { + var2 = 1118362612; + } else { + var2 = 1950545932; + } + break; + case 1950545932: + return; + } + } + } + + private static Object[] append(Object[] var0, Object var1) { + Object[] var2 = new Object[var0.length + 1]; + System.arraycopy( + var0, 0, var2, 0, var0.length + ); + var2[var0.length] = var1; + return var2; + } +} diff --git a/src/main/java/defpackage/jq.java b/src/main/java/defpackage/jq.java new file mode 100644 index 0000000..13ab148 --- /dev/null +++ b/src/main/java/defpackage/jq.java @@ -0,0 +1,21 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:jq.class */ +/* synthetic */ class jq { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$media$MediaAction = new int[iw.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.NEXT.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.PREVIOUS.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.PLAY_PAUSE.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + } +} diff --git a/src/main/java/defpackage/jr.java b/src/main/java/defpackage/jr.java new file mode 100644 index 0000000..1bafc4f --- /dev/null +++ b/src/main/java/defpackage/jr.java @@ -0,0 +1,4 @@ +package defpackage; + +record jr(String trackKey, byte[] data) { +} diff --git a/src/main/java/defpackage/js.java b/src/main/java/defpackage/js.java new file mode 100644 index 0000000..59137c6 --- /dev/null +++ b/src/main/java/defpackage/js.java @@ -0,0 +1,6 @@ +package defpackage; + +import com.sun.jna.Pointer; + +record js(Pointer session, String source, boolean playing) { +} diff --git a/src/main/java/defpackage/jt.java b/src/main/java/defpackage/jt.java new file mode 100644 index 0000000..161bfac --- /dev/null +++ b/src/main/java/defpackage/jt.java @@ -0,0 +1,646 @@ +package defpackage; + +import com.sun.jna.Pointer; +import com.sun.jna.platform.win32.Guid.GUID; +import java.util.ArrayList; +import java.util.List; + +final class jt implements iy { + private static final String BACKEND_NAME = "winrt"; + private static final String MANAGER_CLASS = "Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager"; + private static final GUID IID_MANAGER_STATICS = new GUID( + "{2050C4EE-11A0-57DE-AED7-C97C70338245}" + ); + private static final int STATICS_REQUEST_ASYNC = 6; + private static final int MANAGER_GET_CURRENT_SESSION = 6; + private static final int MANAGER_GET_SESSIONS = 7; + private static final int SESSION_SOURCE_APP = 6; + private static final int SESSION_MEDIA_PROPERTIES_ASYNC = 7; + private static final int SESSION_TIMELINE = 8; + private static final int SESSION_PLAYBACK_INFO = 9; + private static final int SESSION_PLAY_ASYNC = 10; + private static final int SESSION_PAUSE_ASYNC = 11; + private static final int SESSION_SKIP_NEXT_ASYNC = 16; + private static final int SESSION_SKIP_PREVIOUS_ASYNC = 17; + private static final int SESSION_TOGGLE_PLAY_PAUSE_ASYNC = 20; + private static final int PROPERTIES_TITLE = 6; + private static final int PROPERTIES_ARTIST = 9; + private static final int PROPERTIES_THUMBNAIL = 15; + private static final int TIMELINE_START = 6; + private static final int TIMELINE_END = 7; + private static final int TIMELINE_POSITION = 10; + private static final int PLAYBACK_INFO_CONTROLS = 6; + private static final int PLAYBACK_INFO_STATUS = 7; + private static final int CONTROLS_PLAY_ENABLED = 6; + private static final int CONTROLS_PAUSE_ENABLED = 7; + private static final int CONTROLS_NEXT_ENABLED = 12; + private static final int CONTROLS_PREVIOUS_ENABLED = 13; + private static final int CONTROLS_TOGGLE_ENABLED = 16; + private static final int STREAM_REFERENCE_OPEN_READ_ASYNC = 6; + private static final int STATUS_PLAYING = 4; + private static final int STATUS_UNKNOWN = -1; + private static final int NO_COMMAND = -1; + private static final long TICKS_PER_MILLI = 10000L; + private static final long MANAGER_TIMEOUT_MILLIS = 10000L; + private static final long PROPERTIES_TIMEOUT_MILLIS = 2000L; + private static final long COMMAND_TIMEOUT_MILLIS = 2000L; + private static final long THUMBNAIL_TIMEOUT_MILLIS = 2000L; + private static final int MAX_ARTWORK_BYTES = 4194304; + private static final int MAX_ARTWORK_ATTEMPTS = 5; + private static final String SESSION_FORMAT = "src=%s n=%d"; + private static final String UNAVAILABLE = "winrt media backend unavailable, falling back to powershell"; + private static final String ARTWORK_FAILURE = "winrt media artwork read failed"; + private static final String COMMAND_FAILURE = "winrt media command {} failed, sending media key"; + private static final String OPERATION_REQUEST = "SessionManager.RequestAsync"; + private static final String OPERATION_CURRENT_SESSION = "SessionManager.GetCurrentSession"; + private static final String OPERATION_SESSIONS = "SessionManager.GetSessions"; + private static final String OPERATION_SOURCE = "Session.SourceAppUserModelId"; + private static final String OPERATION_PROPERTIES = "Session.TryGetMediaPropertiesAsync"; + private static final String OPERATION_TIMELINE = "Session.GetTimelineProperties"; + private static final String OPERATION_PLAYBACK_INFO = "Session.GetPlaybackInfo"; + private static final String OPERATION_COMMAND = "Session.Try"; + private static final String OPERATION_TITLE = "MediaProperties.Title"; + private static final String OPERATION_ARTIST = "MediaProperties.Artist"; + private static final String OPERATION_THUMBNAIL = "MediaProperties.Thumbnail"; + private static final String OPERATION_OPEN_THUMBNAIL = "Thumbnail.OpenReadAsync"; + private static final String OPERATION_TIME = "TimelineProperties.Time"; + private static final String OPERATION_STATUS = "PlaybackInfo.PlaybackStatus"; + private static final String OPERATION_CONTROLS = "PlaybackInfo.Controls"; + private static final String OPERATION_CONTROL_FLAG = "PlaybackControls.IsEnabled"; + private final jg sessionLog = new jg("winrt"); + private Pointer manager; + private Pointer activeSession; + private String lastSource = ""; + private String artworkTrackKey = ""; + private int artworkAttempts; + private volatile jr artwork; + + private jt(Pointer var1) { + this.manager = var1; + } + + static iy tryCreate() { + try { + jp.initializeThread(); + Pointer var0 = jp.activationFactory( + "Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager", + IID_MANAGER_STATICS + ); + + try { + Pointer var1 = jp.getObject( + var0, + 6, + "SessionManager.RequestAsync" + ); + + try { + Pointer var2 = jp.awaitObject( + var1, + (6482057911757736881L | -6482057911757726881L) + (6482057911757736881L & -6482057911757726881L), + "SessionManager.RequestAsync" + ); + if (var2 == null) { + id.warn( + Cif.MEDIA, + "winrt media backend unavailable, falling back to powershell" + ); + return null; + } else { + return new jt(var2); + } + } finally { + jp.release(var1); + } + } finally { + jp.release(var0); + } + } catch (RuntimeException | LinkageError var14) { + id.warn( + Cif.MEDIA, + "winrt media backend unavailable, falling back to powershell", + var14 + ); + return null; + } + } + + @Override + public jh poll() { + int var1 = 0; + Pointer var2 = null; + jh var3 = null; + int var4 = 769269710; + + while (true) { + switch (var4) { + case -1906309489: + var1 = this.selectSession(); + var2 = this.activeSession; + if (var2 == null) { + var4 = 1218487815; + } else { + var4 = 62375437; + } + break; + case 62375437: + var3 = this.readSnapshot(var2); + jg var10000 = this.sessionLog; + String var10001 = "src=%s n=%d"; + Object[] var10002 = new Object[2]; + var10002[0] = this.lastSource; + var10002[1] = var1; + var10000.report(String.format(var10001, var10002), var3); + return var3; + case 109133370: + return jh.EMPTY; + case 769269710: + default: + if (this.manager == null) { + var4 = 109133370; + } else { + var4 = -1906309489; + } + break; + case 1218487815: + this.sessionLog.report("", jh.EMPTY); + return jh.EMPTY; + } + } + } + + @Override + public void dispatch(iw var1) { + Pointer var2 = this.activeSession; + if (var2 == null) { + jy.send(var1); + } else { + try { + int var3 = commandFor(var2, var1); + if (var3 == (1306373907 ^ -1306373908) + ((1306373907 & -1306373908) << 1)) { + return; + } + + Pointer var4 = jp.getObject(var2, var3, "Session.Try"); + + try { + jp.awaitCompletion( + var4, + (2142079928656340342L ^ -2142079928656338342L) + ((2142079928656340342L & -2142079928656338342L) << 1), + "Session.Try" + ); + } finally { + jp.release(var4); + } + } catch (RuntimeException var9) { + id.warn( + Cif.MEDIA, + "winrt media command {} failed, sending media key", + var1, + var9 + ); + jy.send(var1); + } + } + } + + @Override + public byte[] loadArtwork(jh var1) { + jr var2 = null; + int var3 = -1540997808; + + while (true) { + switch (var3) { + case -1540997808: + default: + var2 = this.artwork; + if (var2 != null) { + var3 = 1805393954; + } else { + var3 = 1884736236; + } + break; + case -930957606: + return var2.data(); + case 1805393954: + if (!var2.trackKey().equals(var1.trackKey())) { + var3 = 1884736236; + } else { + var3 = -930957606; + } + break; + case 1884736236: + return null; + } + } + } + + @Override + public void close() { + Pointer var1 = this.activeSession; + this.activeSession = null; + Pointer var2 = this.manager; + this.manager = null; + this.artwork = null; + this.sessionLog.reset(); + jp.release(var1); + jp.release(var2); + } + + private int selectSession() { + List var1 = this.listSessions(); + js var2 = null; + js var3 = null; + + for (js var5 : var1) { + if (var2 == null && var5.source().equals(this.lastSource)) { + var2 = var5; + } + + if (var3 == null && var5.playing()) { + var3 = var5; + } + } + + js var8; + if (var2 != null && var2.playing()) { + var8 = var2; + } else if (var3 != null) { + var8 = var3; + } else { + var8 = var2; + } + + Pointer var9 = var8 != null ? var8.session() : null; + + for (js var7 : var1) { + if (var7 != var8) { + jp.release(var7.session()); + } + } + + if (var9 == null) { + var9 = jp.getObject( + this.manager, + 6, + "SessionManager.GetCurrentSession" + ); + } + + this.replaceActiveSession(var9); + if (var9 != null) { + this.lastSource = var8 != null + ? var8.source() + : jp.getString( + var9, + 6, + "Session.SourceAppUserModelId" + ); + } + + return var1.size(); + } + + private List listSessions() { + Pointer var1 = jp.getObject( + this.manager, + 7, + "SessionManager.GetSessions" + ); + if (var1 == null) { + return List.of(); + } + + ArrayList var2 = new ArrayList(); + + try { + int var3 = jp.vectorSize(var1); + + for (int var14 = 0; var14 < var3; var14++) { + Pointer var15 = jp.vectorAt(var1, var14); + if (var15 != null) { + try { + String var6 = jp.getString( + var15, + 6, + "Session.SourceAppUserModelId" + ); + var2.add( + new js( + var15, + var6, + (boolean)(((playbackStatus(var15) == 4? 1: (1321685031 | -1321685031) + (1321685031 & -1321685031)) + ) != 0)) + ); + } catch (RuntimeException var11) { + jp.release(var15); + throw var11; + } + } + } + } catch (RuntimeException var12) { + for (js var5 : var2) { + jp.release(var5.session()); + } + + throw var12; + } finally { + jp.release(var1); + } + + return var2; + } + + private void replaceActiveSession(Pointer var1) { + Pointer var2 = this.activeSession; + this.activeSession = var1; + jp.release(var2); + } + + private jh readSnapshot(Pointer var1) { + int var2 = playbackStatus(var1) == 4? 1: 0; + long var3 = (-2594870864344652174L ^ 2594870864344652174L) + ((-2594870864344652174L & 2594870864344652174L) << 1); + long var5 = (4279180515340587728L | -4279180515340587728L) + (4279180515340587728L & -4279180515340587728L); + Pointer var7 = jp.getObject( + var1, + 8, + "Session.GetTimelineProperties" + ); + if (var7 != null) { + try { + long var8 = jp.getLong( + var7, + 6, + "TimelineProperties.Time" + ); + long var10 = jp.getLong( + var7, + 7, + "TimelineProperties.Time" + ); + var3 = jp.getLong( + var7, + 10, + "TimelineProperties.Time" + ) + / ((-8408508164086854004L ^ 8408508164086864004L) + ((-8408508164086854004L & 8408508164086864004L) << 1)); + var5 = (var10 - var8) / ((-4379397769251440809L ^ 4379397769251450809L) + ((-4379397769251440809L & 4379397769251450809L) << 1)); + } finally { + jp.release(var7); + } + } + + Pointer var30 = jp.getObject( + var1, + 7, + "Session.TryGetMediaPropertiesAsync" + ); + + Pointer var9; + try { + var9 = jp.awaitObject( + var30, + (187145219730941189L ^ -187145219730939189L) + ((187145219730941189L & -187145219730939189L) << 1), + "Session.TryGetMediaPropertiesAsync" + ); + } finally { + jp.release(var30); + } + + if (var9 == null) { + return jh.EMPTY; + } + + try { + String var31 = jp.getString( + var9, + 6, + "MediaProperties.Title" + ); + String var11 = jp.getString( + var9, + 9, + "MediaProperties.Artist" + ); + jh var12 = jh.of(var11, var31, (boolean)((var2) != 0), var3, var5, ""); + if (!var12.hasTrack()) { + return var12; + } + + String var13 = var12.trackKey(); + this.refreshArtwork(var9, var13); + jr var14 = this.artwork; + String var15 = var14 != null && var14.trackKey().equals(var13) ? var13 : ""; + return jh.of(var11, var31, (boolean)((var2) != 0), var3, var5, var15); + } finally { + jp.release(var9); + } + } + + private void refreshArtwork(Pointer var1, String var2) { + if (!var2.equals(this.artworkTrackKey)) { + this.artworkTrackKey = var2; + this.artworkAttempts = 0; + this.artwork = null; + } + + if (this.artwork == null && this.artworkAttempts < (233286445 | -233286440) + (233286445 & -233286440)) { + this.artworkAttempts += 1; + + try { + byte[] var3 = readThumbnail(var1); + if (var3 != null && var3.length > 0) { + this.artwork = new jr(var2, var3); + } + } catch (RuntimeException var4) { + id.debug( + Cif.MEDIA, + "winrt media artwork read failed", + var4.getMessage() + ); + } + } + } + + private static byte[] readThumbnail(Pointer var0) { + Pointer var1 = jp.getObject( + var0, + 15, + "MediaProperties.Thumbnail" + ); + if (var1 == null) { + return null; + } + + try { + Pointer var2 = jp.getObject( + var1, + 6, + "Thumbnail.OpenReadAsync" + ); + + try { + Pointer var3 = jp.awaitObject( + var2, + (-7904178718984531792L ^ 7904178718984533792L) + ((-7904178718984531792L & 7904178718984533792L) << 1), + "Thumbnail.OpenReadAsync" + ); + if (var3 == null) { + return null; + } + + try { + return jp.readStream(var3, (-1322855177 | 1327049481) + (-1322855177 & 1327049481)); + } finally { + jp.release(var3); + } + } finally { + jp.release(var2); + } + } finally { + jp.release(var1); + } + } + + private static int playbackStatus(Pointer var0) { + Pointer var1 = jp.getObject( + var0, + 9, + "Session.GetPlaybackInfo" + ); + if (var1 == null) { + return -1; + } + + try { + return jp.getInt( + var1, + 7, + "PlaybackInfo.PlaybackStatus" + ); + } finally { + jp.release(var1); + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static int commandFor(Pointer var0, iw var1) { + Pointer var2 = jp.getObject( + var0, + 9, + "Session.GetPlaybackInfo" + ); + if (var2 == null) { + return defaultCommand(var1); + } + + try { + int var3 = jp.getInt( + var2, + 7, + "PlaybackInfo.PlaybackStatus" + ) + == 4? 1: 0; + Pointer var4 = jp.getObject( + var2, + 6, + "PlaybackInfo.Controls" + ); + if (var4 == null) { + return defaultCommand(var1); + } + + try { + return switch (jq.$SwitchMap$evo$systems$base$media$MediaAction[var1.ordinal()]) { + case 1 -> enabled(var4, (-1625368992 ^ 1625369004) + ((-1625368992 & 1625369004) << 1)) + ? 16: -1; + case 2 -> enabled(var4, (-1092265441 ^ 1092265454) + ((-1092265441 & 1092265454) << 1)) + ? 17: -1; + case 3 -> playPauseCommand(var4, (boolean)((var3) != 0)); + default -> throw new MatchException(null, null); + }; + } finally { + jp.release(var4); + } + } finally { + jp.release(var2); + } + } + + private static int playPauseCommand(Pointer var0, boolean var1) { + int var3 = 0; + int var4 = 0; + int var2 = 962847532; + + while (true) { + switch (var2) { + case -1886176871: + return var3; + case -1381648501: + if (var1) { + var2 = 1122007775; + } else { + var2 = -1121693809; + } + break; + case -1121693809: + if (enabled(var0, (592192233 ^ -592192227) + ((592192233 & -592192227) << 1))) { + var2 = 1466421091; + } else { + var2 = 1063920231; + } + break; + case -987202006: + var3 = 11; + var2 = -1886176871; + break; + case -788088059: + return 20; + case 962847532: + default: + if (enabled(var0, (15815891 | -15815875) + (15815891 & -15815875))) { + var2 = -788088059; + } else { + var2 = -1381648501; + } + break; + case 1063920231: + var4 = -1; + var2 = 1207991941; + break; + case 1122007775: + if (enabled(var0, (1281677845 ^ -1281677838) + ((1281677845 & -1281677838) << 1))) { + var2 = -987202006; + } else { + var2 = 1395427684; + } + break; + case 1207991941: + return var4; + case 1395427684: + var3 = -1; + var2 = -1886176871; + break; + case 1466421091: + var4 = 10; + var2 = 1207991941; + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static int defaultCommand(iw var0) { + return switch (jq.$SwitchMap$evo$systems$base$media$MediaAction[var0.ordinal()]) { + case 1 -> (1754703767 | -1754703751) + (1754703767 & -1754703751); + case 2 -> (1866516291 | -1866516274) + (1866516291 & -1866516274); + case 3 -> (1162016117 ^ -1162016097) + ((1162016117 & -1162016097) << 1); + default -> throw new MatchException(null, null); + }; + } + + private static boolean enabled(Pointer var0, int var1) { + return jp.getBoolean(var0, var1, "PlaybackControls.IsEnabled"); + } +} diff --git a/src/main/java/defpackage/ju.java b/src/main/java/defpackage/ju.java new file mode 100644 index 0000000..f332045 --- /dev/null +++ b/src/main/java/defpackage/ju.java @@ -0,0 +1,21 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:ju.class */ +/* synthetic */ class ju { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$media$MediaAction = new int[iw.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.NEXT.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.PREVIOUS.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.PLAY_PAUSE.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + } +} diff --git a/src/main/java/defpackage/jv.java b/src/main/java/defpackage/jv.java new file mode 100644 index 0000000..54af4ea --- /dev/null +++ b/src/main/java/defpackage/jv.java @@ -0,0 +1,418 @@ +package defpackage; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.lang.ProcessBuilder.Redirect; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Base64; +import java.util.List; +import java.util.concurrent.TimeUnit; + +final class jv implements iy { + private static final String POWERSHELL = "powershell.exe"; + private static final List POWERSHELL_FLAGS = List.of( + "-NoProfile", + "-NonInteractive", + "-WindowStyle", + "Hidden", + "-EncodedCommand" + ); + private static final String POLL_FAILURE = "windows media backend poll failed"; + private static final String START_FAILURE = "windows media helper failed to start"; + private static final String HELPER_EXITED = "windows media helper exited with code {}: {}"; + private static final String HELPER_GAVE_UP = "windows media helper gave up after {} starts"; + private static final String NO_STDERR = ""; + private static final String EXIT_CODE_PENDING = "pending"; + private static final long EXIT_WAIT_MILLIS = 250L; + private static final String STDERR_UNREADABLE = "stderr unreadable: "; + private static final String SESSION_FIELD_SEPARATOR = "\t"; + private static final int SESSION_FIELD_INDEX = 7; + private static final String BACKEND_NAME = "powershell"; + private static final int MAX_STDERR_CHARS = 600; + private static final String ARTWORK_FILE_NAME = "evovis_media_artwork.png"; + private static final String STDERR_FILE_NAME = "evovis_media_helper.err"; + private static final String TEMP_DIRECTORY_PROPERTY = "java.io.tmpdir"; + private static final int MAX_PROCESS_STARTS = 3; + private static final int MAX_LINES_PER_POLL = 16; + private static final String COMMAND_PLAY_PAUSE = "toggle"; + private static final String COMMAND_NEXT = "next"; + private static final String COMMAND_PREVIOUS = "prev"; + private static final int POLL_INTERVAL_MILLIS = 1000; + private static final int COMMAND_WAIT_SLICE_MILLIS = 40; + private static final int COMMAND_SETTLE_MILLIS = 150; + private static final int COMMAND_CONFIRM_MILLIS = 2000; + private static final int MAX_ARTWORK_ATTEMPTS = 5; + private static final int MANAGER_REQUEST_TIMEOUT_MILLIS = 10000; + private static final String FAILURE_MARKER = "evo-media-fail"; + private static final String METADATA_SCRIPT_TEMPLATE = "$ErrorActionPreference = 'SilentlyContinue'\n$ProgressPreference = 'SilentlyContinue'\nif ($ExecutionContext.SessionState.LanguageMode -ne 'FullLanguage') {\n Write-Output ('%11$s stage=language mode=' + $ExecutionContext.SessionState.LanguageMode)\n exit 1\n}\n[Console]::OutputEncoding = [System.Text.Encoding]::UTF8\nfunction Fail($stage, $problem) {\n $cause = $problem\n if ($cause -is [System.Management.Automation.ErrorRecord]) { $cause = $cause.Exception }\n while ($cause -is [System.Exception] -and $cause.InnerException -ne $null) { $cause = $cause.InnerException }\n if ($cause -is [System.Exception]) {\n $detail = 'hresult=0x{0:X8} type={1} msg={2}' -f $cause.HResult, $cause.GetType().FullName, $cause.Message\n } else {\n $detail = \"$cause\"\n }\n [Console]::Out.WriteLine('%11$s stage=' + $stage + ' ' + ($detail -replace '\\s+', ' '))\n [Console]::Out.Flush()\n exit 1\n}\ntry { Add-Type -AssemblyName System.Runtime.WindowsRuntime } catch { Fail 'runtime' $_ }\n$asTask = ([System.WindowsRuntimeSystemExtensions].GetMethods() | Where-Object { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -eq 'IAsyncOperation`1' })[0]\n$asTaskProgress = ([System.WindowsRuntimeSystemExtensions].GetMethods() | Where-Object { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -eq 'IAsyncOperationWithProgress`2' })[0]\nfunction Await($operation, $resultType) {\n $task = $asTask.MakeGenericMethod($resultType).Invoke($null, @($operation))\n if (-not $task.Wait(2000)) { return $null }\n return $task.Result\n}\nfunction InvokeControl($operation) {\n if ($operation -eq $null) { return }\n try { $null = Await ($operation) ([bool]) } catch { }\n}\nfunction AwaitProgress($operation, $resultType) {\n $task = $asTaskProgress.MakeGenericMethod($resultType, $resultType).Invoke($null, @($operation))\n if (-not $task.Wait(2000)) { return $null }\n return $task.Result\n}\nif ($asTask -eq $null) { Fail 'astask' 'AsTask overload not found' }\ntry {\n $null = [Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager,Windows.Media.Control,ContentType=WindowsRuntime]\n $null = [Windows.Storage.Streams.DataReader,Windows.Storage.Streams,ContentType=WindowsRuntime]\n} catch { Fail 'types' $_ }\n$managerType = [Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager]\n$propertiesType = [Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties]\n$streamType = [Windows.Storage.Streams.IRandomAccessStreamWithContentType]\n$manager = $null\ntry {\n $managerTask = $asTask.MakeGenericMethod($managerType).Invoke($null, @($managerType::RequestAsync()))\n if (-not $managerTask.Wait(%10$d)) { Fail 'request' 'timed out' }\n $manager = $managerTask.Result\n} catch { Fail 'request' $_ }\nif ($manager -eq $null) { Fail 'request' 'manager is null' }\n$artworkPath = '%1$s'\n$lastKey = ''\n$haveArt = $false\n$lastSource = ''\n$playingStatus = 'Playing'\n$artAttempts = 0\n$stdin = [System.IO.StreamReader]::new([Console]::OpenStandardInput())\n$commandTask = $null\n$command = ''\nwhile ($true) {\n $line = ''\n $session = $null\n $kept = $null\n $firstPlaying = $null\n $sessions = $manager.GetSessions()\n if ($sessions -ne $null) {\n foreach ($candidate in $sessions) {\n $candidateStatus = \"$($candidate.GetPlaybackInfo().PlaybackStatus)\"\n if ($candidate.SourceAppUserModelId -eq $lastSource) { $kept = $candidate }\n if ($firstPlaying -eq $null -and $candidateStatus -eq $playingStatus) { $firstPlaying = $candidate }\n }\n }\n if ($kept -ne $null -and \"$($kept.GetPlaybackInfo().PlaybackStatus)\" -eq $playingStatus) {\n $session = $kept\n } elseif ($firstPlaying -ne $null) {\n $session = $firstPlaying\n } elseif ($kept -ne $null) {\n $session = $kept\n } else {\n $session = $manager.GetCurrentSession()\n }\n if ($session -ne $null) { $lastSource = $session.SourceAppUserModelId }\n if ($session -ne $null) {\n $properties = Await ($session.TryGetMediaPropertiesAsync()) ($propertiesType)\n if ($properties -ne $null) {\n $status = $session.GetPlaybackInfo().PlaybackStatus\n $position = 0\n $duration = 0\n $timeline = $session.GetTimelineProperties()\n if ($timeline -ne $null) {\n $position = [int64]$timeline.Position.TotalMilliseconds\n $duration = [int64]($timeline.EndTime.TotalMilliseconds - $timeline.StartTime.TotalMilliseconds)\n }\n $key = \"$($properties.Artist)|$($properties.Title)\"\n if ($key -ne $lastKey) {\n $lastKey = $key\n $haveArt = $false\n $artAttempts = 0\n }\n $thumbState = 'skip'\n if (-not $haveArt -and $artAttempts -lt %8$d) {\n $artAttempts++\n if ($properties.Thumbnail -eq $null) {\n $thumbState = 'null'\n } else {\n try {\n $stream = Await ($properties.Thumbnail.OpenReadAsync()) ($streamType)\n if ($stream -eq $null) {\n $thumbState = 'nostream'\n } elseif ($stream.Size -le 0) {\n $thumbState = 'size0'\n } else {\n $reader = [Windows.Storage.Streams.DataReader]::new($stream)\n $null = AwaitProgress ($reader.LoadAsync([uint32]$stream.Size)) ([uint32])\n $buffer = New-Object byte[] ([int]$stream.Size)\n $reader.ReadBytes($buffer)\n $reader.Dispose()\n $stream.Dispose()\n [System.IO.File]::WriteAllBytes($artworkPath, $buffer)\n $haveArt = $true\n $thumbState = 'ok'\n }\n } catch { $haveArt = $false; $thumbState = 'err:' + $_.Exception.GetType().Name }\n }\n }\n $artwork = ''\n if ($haveArt) { $artwork = $artworkPath }\n $sessionCount = if ($sessions -ne $null) { @($sessions).Count } else { 0 }\n $line = \"$status`t$($properties.Artist)`t$($properties.Title)`t$position`t$duration`t$artwork`t$thumbState`tsrc=$($session.SourceAppUserModelId) n=$sessionCount\"\n }\n }\n [Console]::Out.WriteLine($line)\n [Console]::Out.Flush()\n $command = ''\n $deadline = [DateTime]::UtcNow.AddMilliseconds(%2$d)\n while ([DateTime]::UtcNow -lt $deadline) {\n if ($commandTask -eq $null) { $commandTask = $stdin.ReadLineAsync() }\n if ($commandTask.IsFaulted -or $commandTask.IsCanceled) { exit 0 }\n if ($commandTask.IsCompleted) {\n $received = $commandTask.Result\n $commandTask = $null\n if ($received -eq $null) { exit 0 }\n $command = \"$received\".Trim()\n break\n }\n Start-Sleep -Milliseconds %3$d\n }\n if ($command -ne '' -and $session -ne $null) {\n try {\n $statusBefore = \"$($session.GetPlaybackInfo().PlaybackStatus)\"\n $controls = $session.GetPlaybackInfo().Controls\n if ($command -eq '%4$s') {\n if ($controls -eq $null -or $controls.IsNextEnabled) { InvokeControl ($session.TrySkipNextAsync()) }\n } elseif ($command -eq '%5$s') {\n if ($controls -eq $null -or $controls.IsPreviousEnabled) { InvokeControl ($session.TrySkipPreviousAsync()) }\n } elseif ($command -eq '%6$s') {\n if ($controls -eq $null -or $controls.IsPlayPauseToggleEnabled) {\n InvokeControl ($session.TryTogglePlayPauseAsync())\n } elseif (\"$($session.GetPlaybackInfo().PlaybackStatus)\" -eq $playingStatus) {\n if ($controls.IsPauseEnabled) { InvokeControl ($session.TryPauseAsync()) }\n } elseif ($controls.IsPlayEnabled) {\n InvokeControl ($session.TryPlayAsync())\n }\n }\n if ($command -eq '%6$s') {\n $confirmDeadline = [DateTime]::UtcNow.AddMilliseconds(%9$d)\n while ([DateTime]::UtcNow -lt $confirmDeadline) {\n Start-Sleep -Milliseconds %7$d\n if (\"$($session.GetPlaybackInfo().PlaybackStatus)\" -ne $statusBefore) { break }\n }\n } else {\n Start-Sleep -Milliseconds %7$d\n }\n } catch { }\n }\n}\n"; + private final jg sessionLog = new jg("powershell"); + private final Path artworkPath; + private final Path stderrPath; + private Process process; + private BufferedReader reader; + private BufferedWriter writer; + private int processStarts; + private jh lastSnapshot; + private boolean gaveUpLogged; + private String failureReport; + + jv() { + String var10001 = System.getProperty("java.io.tmpdir", ""); + String[] var10002 = new String[1]; + var10002[0] = "evovis_media_artwork.png"; + this.artworkPath = Path.of(var10001, var10002); + var10001 = System.getProperty("java.io.tmpdir", ""); + var10002 = new String[1]; + var10002[0] = "evovis_media_helper.err"; + this.stderrPath = Path.of(var10001, var10002); + this.lastSnapshot = jh.EMPTY; + } + + @Override + public jh poll() { + if (!this.ensureProcess()) { + return jh.EMPTY; + } + + try { + for (int var1 = 0; + var1 < (-355040906 ^ 355040922) + ((-355040906 & 355040922) << 1) && this.reader.ready(); + var1++ + ) { + String var2 = this.reader.readLine(); + if (var2 == null) { + this.reportExit(); + this.closeProcess(); + return jh.EMPTY; + } + + if (var2.startsWith("evo-media-fail")) { + this.failureReport = var2.strip(); + } else { + this.lastSnapshot = ji.parse(var2); + String[] var3 = var2.split( + " ", (-283087446 | 283087445) + (-283087446 & 283087445) + ); + this.sessionLog + .report( + var3.length > 7? var3[7] : "", + this.lastSnapshot + ); + } + } + } catch (IOException var4) { + id.warn( + Cif.MEDIA, + "windows media backend poll failed", + var4 + ); + this.closeProcess(); + return jh.EMPTY; + } + + return this.lastSnapshot; + } + + @Override + public void dispatch(iw var1) { + int var2 = 0; + int var3 = 368409305; + + while (true) { + switch (var3) { + case -483346781: + return; + case -435907698: + jy.send(var1); + var3 = -483346781; + break; + case 368409305: + default: + boolean var4 = this.sendCommand(commandOf(var1)); + if (!var4) { + var3 = -435907698; + } else { + var3 = -483346781; + } + } + } + } + + @Override + public byte[] loadArtwork(jh var1) { + int var2 = 1048795300; + + while (true) { + switch (var2) { + case -2063795255: + return ji.readFile(this.artworkPath); + case -1075112483: + return null; + case 1048795300: + } + + if (var1.artworkKey().isEmpty()) { + var2 = -1075112483; + } else { + var2 = -2063795255; + } + } + } + + @Override + public void close() { + this.closeProcess(); + this.processStarts = 0; + this.gaveUpLogged = (boolean)(((0)) != 0); + this.failureReport = null; + this.sessionLog.reset(); + this.lastSnapshot = jh.EMPTY; + } + + private boolean sendCommand(String var1) { + if (this.ensureProcess() && this.writer != null) { + try { + this.writer.write(var1); + this.writer.newLine(); + this.writer.flush(); + return (boolean)(((1)) != 0); + } catch (IOException var3) { + this.closeProcess(); + return (boolean)(((0)) != 0); + } + } else { + return (boolean)(((0)) != 0); + } + } + + private boolean ensureProcess() { + if (this.process != null && this.process.isAlive()) { + return (boolean)(((1)) != 0); + } + + if (this.process != null) { + this.reportExit(); + } + + this.closeProcess(); + if (this.processStarts >= (-1680878234 | 1680878237) + (-1680878234 & 1680878237)) { + if (!this.gaveUpLogged) { + this.gaveUpLogged = (boolean)(((1)) != 0); + id.error( + Cif.MEDIA, + "windows media helper gave up after {} starts", + this.processStarts + ); + } + + return (boolean)(((0)) != 0); + } else { + this.processStarts += 1; + + try { + String var10000 = "$ErrorActionPreference = 'SilentlyContinue'\n$ProgressPreference = 'SilentlyContinue'\nif ($ExecutionContext.SessionState.LanguageMode -ne 'FullLanguage') {\n Write-Output ('%11$s stage=language mode=' + $ExecutionContext.SessionState.LanguageMode)\n exit 1\n}\n[Console]::OutputEncoding = [System.Text.Encoding]::UTF8\nfunction Fail($stage, $problem) {\n $cause = $problem\n if ($cause -is [System.Management.Automation.ErrorRecord]) { $cause = $cause.Exception }\n while ($cause -is [System.Exception] -and $cause.InnerException -ne $null) { $cause = $cause.InnerException }\n if ($cause -is [System.Exception]) {\n $detail = 'hresult=0x{0:X8} type={1} msg={2}' -f $cause.HResult, $cause.GetType().FullName, $cause.Message\n } else {\n $detail = \"$cause\"\n }\n [Console]::Out.WriteLine('%11$s stage=' + $stage + ' ' + ($detail -replace '\\s+', ' '))\n [Console]::Out.Flush()\n exit 1\n}\ntry { Add-Type -AssemblyName System.Runtime.WindowsRuntime } catch { Fail 'runtime' $_ }\n$asTask = ([System.WindowsRuntimeSystemExtensions].GetMethods() | Where-Object { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -eq 'IAsyncOperation`1' })[0]\n$asTaskProgress = ([System.WindowsRuntimeSystemExtensions].GetMethods() | Where-Object { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -eq 'IAsyncOperationWithProgress`2' })[0]\nfunction Await($operation, $resultType) {\n $task = $asTask.MakeGenericMethod($resultType).Invoke($null, @($operation))\n if (-not $task.Wait(2000)) { return $null }\n return $task.Result\n}\nfunction InvokeControl($operation) {\n if ($operation -eq $null) { return }\n try { $null = Await ($operation) ([bool]) } catch { }\n}\nfunction AwaitProgress($operation, $resultType) {\n $task = $asTaskProgress.MakeGenericMethod($resultType, $resultType).Invoke($null, @($operation))\n if (-not $task.Wait(2000)) { return $null }\n return $task.Result\n}\nif ($asTask -eq $null) { Fail 'astask' 'AsTask overload not found' }\ntry {\n $null = [Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager,Windows.Media.Control,ContentType=WindowsRuntime]\n $null = [Windows.Storage.Streams.DataReader,Windows.Storage.Streams,ContentType=WindowsRuntime]\n} catch { Fail 'types' $_ }\n$managerType = [Windows.Media.Control.GlobalSystemMediaTransportControlsSessionManager]\n$propertiesType = [Windows.Media.Control.GlobalSystemMediaTransportControlsSessionMediaProperties]\n$streamType = [Windows.Storage.Streams.IRandomAccessStreamWithContentType]\n$manager = $null\ntry {\n $managerTask = $asTask.MakeGenericMethod($managerType).Invoke($null, @($managerType::RequestAsync()))\n if (-not $managerTask.Wait(%10$d)) { Fail 'request' 'timed out' }\n $manager = $managerTask.Result\n} catch { Fail 'request' $_ }\nif ($manager -eq $null) { Fail 'request' 'manager is null' }\n$artworkPath = '%1$s'\n$lastKey = ''\n$haveArt = $false\n$lastSource = ''\n$playingStatus = 'Playing'\n$artAttempts = 0\n$stdin = [System.IO.StreamReader]::new([Console]::OpenStandardInput())\n$commandTask = $null\n$command = ''\nwhile ($true) {\n $line = ''\n $session = $null\n $kept = $null\n $firstPlaying = $null\n $sessions = $manager.GetSessions()\n if ($sessions -ne $null) {\n foreach ($candidate in $sessions) {\n $candidateStatus = \"$($candidate.GetPlaybackInfo().PlaybackStatus)\"\n if ($candidate.SourceAppUserModelId -eq $lastSource) { $kept = $candidate }\n if ($firstPlaying -eq $null -and $candidateStatus -eq $playingStatus) { $firstPlaying = $candidate }\n }\n }\n if ($kept -ne $null -and \"$($kept.GetPlaybackInfo().PlaybackStatus)\" -eq $playingStatus) {\n $session = $kept\n } elseif ($firstPlaying -ne $null) {\n $session = $firstPlaying\n } elseif ($kept -ne $null) {\n $session = $kept\n } else {\n $session = $manager.GetCurrentSession()\n }\n if ($session -ne $null) { $lastSource = $session.SourceAppUserModelId }\n if ($session -ne $null) {\n $properties = Await ($session.TryGetMediaPropertiesAsync()) ($propertiesType)\n if ($properties -ne $null) {\n $status = $session.GetPlaybackInfo().PlaybackStatus\n $position = 0\n $duration = 0\n $timeline = $session.GetTimelineProperties()\n if ($timeline -ne $null) {\n $position = [int64]$timeline.Position.TotalMilliseconds\n $duration = [int64]($timeline.EndTime.TotalMilliseconds - $timeline.StartTime.TotalMilliseconds)\n }\n $key = \"$($properties.Artist)|$($properties.Title)\"\n if ($key -ne $lastKey) {\n $lastKey = $key\n $haveArt = $false\n $artAttempts = 0\n }\n $thumbState = 'skip'\n if (-not $haveArt -and $artAttempts -lt %8$d) {\n $artAttempts++\n if ($properties.Thumbnail -eq $null) {\n $thumbState = 'null'\n } else {\n try {\n $stream = Await ($properties.Thumbnail.OpenReadAsync()) ($streamType)\n if ($stream -eq $null) {\n $thumbState = 'nostream'\n } elseif ($stream.Size -le 0) {\n $thumbState = 'size0'\n } else {\n $reader = [Windows.Storage.Streams.DataReader]::new($stream)\n $null = AwaitProgress ($reader.LoadAsync([uint32]$stream.Size)) ([uint32])\n $buffer = New-Object byte[] ([int]$stream.Size)\n $reader.ReadBytes($buffer)\n $reader.Dispose()\n $stream.Dispose()\n [System.IO.File]::WriteAllBytes($artworkPath, $buffer)\n $haveArt = $true\n $thumbState = 'ok'\n }\n } catch { $haveArt = $false; $thumbState = 'err:' + $_.Exception.GetType().Name }\n }\n }\n $artwork = ''\n if ($haveArt) { $artwork = $artworkPath }\n $sessionCount = if ($sessions -ne $null) { @($sessions).Count } else { 0 }\n $line = \"$status`t$($properties.Artist)`t$($properties.Title)`t$position`t$duration`t$artwork`t$thumbState`tsrc=$($session.SourceAppUserModelId) n=$sessionCount\"\n }\n }\n [Console]::Out.WriteLine($line)\n [Console]::Out.Flush()\n $command = ''\n $deadline = [DateTime]::UtcNow.AddMilliseconds(%2$d)\n while ([DateTime]::UtcNow -lt $deadline) {\n if ($commandTask -eq $null) { $commandTask = $stdin.ReadLineAsync() }\n if ($commandTask.IsFaulted -or $commandTask.IsCanceled) { exit 0 }\n if ($commandTask.IsCompleted) {\n $received = $commandTask.Result\n $commandTask = $null\n if ($received -eq $null) { exit 0 }\n $command = \"$received\".Trim()\n break\n }\n Start-Sleep -Milliseconds %3$d\n }\n if ($command -ne '' -and $session -ne $null) {\n try {\n $statusBefore = \"$($session.GetPlaybackInfo().PlaybackStatus)\"\n $controls = $session.GetPlaybackInfo().Controls\n if ($command -eq '%4$s') {\n if ($controls -eq $null -or $controls.IsNextEnabled) { InvokeControl ($session.TrySkipNextAsync()) }\n } elseif ($command -eq '%5$s') {\n if ($controls -eq $null -or $controls.IsPreviousEnabled) { InvokeControl ($session.TrySkipPreviousAsync()) }\n } elseif ($command -eq '%6$s') {\n if ($controls -eq $null -or $controls.IsPlayPauseToggleEnabled) {\n InvokeControl ($session.TryTogglePlayPauseAsync())\n } elseif (\"$($session.GetPlaybackInfo().PlaybackStatus)\" -eq $playingStatus) {\n if ($controls.IsPauseEnabled) { InvokeControl ($session.TryPauseAsync()) }\n } elseif ($controls.IsPlayEnabled) {\n InvokeControl ($session.TryPlayAsync())\n }\n }\n if ($command -eq '%6$s') {\n $confirmDeadline = [DateTime]::UtcNow.AddMilliseconds(%9$d)\n while ([DateTime]::UtcNow -lt $confirmDeadline) {\n Start-Sleep -Milliseconds %7$d\n if (\"$($session.GetPlaybackInfo().PlaybackStatus)\" -ne $statusBefore) { break }\n }\n } else {\n Start-Sleep -Milliseconds %7$d\n }\n } catch { }\n }\n}\n"; + Object[] var10001 = new Object[11]; + var10001[0] = this.artworkPath + .toString() + .replace( + "'", + "''" + ); + var10001[1] = 1000; + var10001[2] = 40; + var10001[3] = "next"; + var10001[4] = "prev"; + var10001[5] = "toggle"; + var10001[6] = 150; + var10001[7] = 5; + var10001[8] = 2000; + var10001[9] = 10000; + var10001[10] = "evo-media-fail"; + String var1 = var10000.formatted(var10001); + String var2 = Base64.getEncoder().encodeToString(var1.getBytes(StandardCharsets.UTF_16LE)); + ProcessBuilder var3 = new ProcessBuilder(); + var3.command().add("powershell.exe"); + var3.command().addAll(POWERSHELL_FLAGS); + var3.command().add(var2); + var3.redirectError(Redirect.to(this.stderrPath.toFile())); + this.process = var3.start(); + this.reader = new BufferedReader(new InputStreamReader(this.process.getInputStream(), StandardCharsets.UTF_8)); + this.writer = new BufferedWriter(new OutputStreamWriter(this.process.getOutputStream(), StandardCharsets.UTF_8)); + return (boolean)(((1)) != 0); + } catch (IOException var4) { + id.warn( + Cif.MEDIA, + "windows media helper failed to start", + var4 + ); + this.closeProcess(); + return (boolean)(((0)) != 0); + } + } + } + + private void reportExit() { + Process var1 = null; + String var2 = null; + Object var3 = null; + String var5 = null; + String var6 = null; + int var4 = 1816071456; + + while (true) { + switch (var4) { + case -1965038278: + var6 = String.valueOf(var1.exitValue()); + var4 = -1363245024; + break; + case -1363245024: + var3 = var6; + id.warn( + Cif.MEDIA, + "windows media helper exited with code {}: {}", + var3, + var2 + ); + return; + case -1298238327: + var2 = var5; + this.failureReport = null; + if (awaitExit(var1)) { + var4 = -1965038278; + } else { + var4 = -342527245; + } + break; + case -1149313002: + return; + case -864810636: + var5 = this.failureReport; + var4 = -1298238327; + break; + case -384006083: + var5 = this.readStderrTail(); + var4 = -1298238327; + break; + case -342527245: + var6 = "pending"; + var4 = -1363245024; + break; + case 129760624: + this.drainFailureReport(); + if (this.failureReport != null) { + var4 = -864810636; + } else { + var4 = -384006083; + } + break; + case 1816071456: + default: + var1 = this.process; + if (var1 == null) { + var4 = -1149313002; + } else { + var4 = 129760624; + } + } + } + } + + private static boolean awaitExit(Process var0) { + try { + return var0.waitFor((-6234960386336798714L ^ 6234960386336798964L) + ((-6234960386336798714L & 6234960386336798964L) << 1), TimeUnit.MILLISECONDS); + } catch (InterruptedException var2) { + Thread.currentThread().interrupt(); + return (boolean)(((!var0.isAlive() + ? 1: (-1748333569 ^ 1748333569) + ((-1748333569 & 1748333569) << 1))) != 0); + } + } + + private void drainFailureReport() { + if (this.reader != null) { + try { + for (int var1 = 0; + var1 < (-187175897 ^ 187175913) + ((-187175897 & 187175913) << 1) && this.reader.ready(); + var1++ + ) { + String var2 = this.reader.readLine(); + if (var2 == null) { + return; + } + + if (var2.startsWith("evo-media-fail")) { + this.failureReport = var2.strip(); + } + } + } catch (IOException var3) { + id.warn( + Cif.MEDIA, + "windows media backend poll failed", + var3 + ); + } + } + } + + private String readStderrTail() { + try { + if (!Files.isRegularFile(this.stderrPath)) { + return ""; + } + + String var1 = new String(Files.readAllBytes(this.stderrPath), StandardCharsets.UTF_8).strip(); + if (var1.isEmpty()) { + return ""; + } + + String var2 = var1.length() > 600? var1.substring(var1.length() - ((-780255870 ^ 780256470) + ((-780255870 & 780256470) << 1))) + : var1; + return var2.replace( + (char)(13), (char)((-1665213079 ^ 1665213111) + ((-1665213079 & 1665213111) << 1)) + ) + .replace((char)(10), (char)((699629960 ^ -699629928) + ((699629960 & -699629928) << 1))); + } catch (IOException | RuntimeException var3) { + return "stderr unreadable: " + var3.getClass().getSimpleName(); + } + } + + private void closeProcess() { + if (this.writer != null) { + try { + this.writer.close(); + } catch (IOException var3) { + } + + this.writer = null; + } + + if (this.reader != null) { + try { + this.reader.close(); + } catch (IOException var2) { + } + + this.reader = null; + } + + if (this.process != null) { + this.process.destroyForcibly(); + this.process = null; + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static String commandOf(iw var0) { + return switch (ju.$SwitchMap$evo$systems$base$media$MediaAction[var0.ordinal()]) { + case 1 -> "next"; + case 2 -> "prev"; + case 3 -> "toggle"; + default -> throw new MatchException(null, null); + }; + } +} diff --git a/src/main/java/defpackage/jw.java b/src/main/java/defpackage/jw.java new file mode 100644 index 0000000..dec4c05 --- /dev/null +++ b/src/main/java/defpackage/jw.java @@ -0,0 +1,21 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:jw.class */ +/* synthetic */ class jw { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$media$MediaAction = new int[iw.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.NEXT.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.PREVIOUS.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$base$media$MediaAction[iw.PLAY_PAUSE.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + } +} diff --git a/src/main/java/defpackage/jx.java b/src/main/java/defpackage/jx.java new file mode 100644 index 0000000..022cdd4 --- /dev/null +++ b/src/main/java/defpackage/jx.java @@ -0,0 +1,8 @@ +package defpackage; + +import com.sun.jna.Library; +import com.sun.jna.Pointer; + +interface jx extends Library { + void keybd_event(byte var1, byte var2, int var3, Pointer var4); +} diff --git a/src/main/java/defpackage/jy.java b/src/main/java/defpackage/jy.java new file mode 100644 index 0000000..7185ddd --- /dev/null +++ b/src/main/java/defpackage/jy.java @@ -0,0 +1,56 @@ +package defpackage; + +import com.sun.jna.Native; + +final class jy { + private static final String USER32_LIBRARY = "user32"; + private static final String LOAD_FAILURE = "user32 media keys unavailable"; + private static final String SEND_FAILURE = "media key {} failed"; + private static final byte VK_MEDIA_NEXT_TRACK = -80; + private static final byte VK_MEDIA_PREV_TRACK = -79; + private static final byte VK_MEDIA_PLAY_PAUSE = -77; + private static final byte NO_SCAN_CODE = 0; + private static final int KEY_EVENT_KEY_DOWN = 0; + private static final int KEY_EVENT_KEY_UP = 2; + private static final jx USER32 = load(); + + private jy() { + } + + static void send(iw var0) { + if (USER32 != null) { + byte var1 = virtualKeyOf(var0); + + try { + USER32.keybd_event( + var1, (byte)(0), 0, null + ); + USER32.keybd_event(var1, (byte)(0), 2, null); + } catch (RuntimeException | LinkageError var3) { + id.warn(Cif.MEDIA, "media key {} failed", var0, var3); + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static byte virtualKeyOf(iw var0) { + return (byte)(switch (jw.$SwitchMap$evo$systems$base$media$MediaAction[var0.ordinal()]) { + case 1 -> (1366883766 | -1366883846) + (1366883766 & -1366883846); + case 2 -> (1121367772 | -1121367851) + (1121367772 & -1121367851); + case 3 -> (-150511733 | 150511656) + (-150511733 & 150511656); + default -> throw new MatchException(null, null); + }); + } + + private static jx load() { + try { + return (jx)Native.load("user32", jx.class); + } catch (RuntimeException | LinkageError var1) { + id.warn( + Cif.MEDIA, "user32 media keys unavailable", var1 + ); + return null; + } + } +} diff --git a/src/main/java/defpackage/jz.java b/src/main/java/defpackage/jz.java new file mode 100644 index 0000000..7deebd9 --- /dev/null +++ b/src/main/java/defpackage/jz.java @@ -0,0 +1,183 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +final class jz { + private static final Pattern TIMESTAMP = Pattern.compile( + "\\[(\\d{1,3}):(\\d{1,2})(?:[.:](\\d{1,3}))?]" + ); + private static final long MILLIS_PER_SECOND = 1000L; + private static final long SECONDS_PER_MINUTE = 60L; + private static final int CENTIS_DIGITS = 2; + private static final int DECIS_DIGITS = 1; + private static final long CENTIS_TO_MILLIS = 10L; + private static final long DECIS_TO_MILLIS = 100L; + private static final long MAX_LINE_MILLIS = 8000L; + private static final long TAIL_LINE_MILLIS = 5000L; + private static final int MAX_LINE_LENGTH = 160; + private static final String FORMAT_LINE = "[%02d:%02d.%02d]%s%n"; + + private jz() { + } + + static kp parse(String var0) { + if (var0 != null && !var0.isBlank()) { + ArrayList var1 = new ArrayList(); + ArrayList var2 = new ArrayList(); + String[] var3 = var0.split("\\R"); + int var4 = var3.length; + + for (int var5 = 0; var5 < var4; var5++) { + String var6 = var3[var5]; + Matcher var7 = TIMESTAMP.matcher(var6); + int var8 = 0; + ArrayList var9 = new ArrayList((-1524364098 ^ 1524364099) + ((-1524364098 & 1524364099) << 1)); + + while (var7.find() && var7.start() == var8) { + var9.add(toMillis(var7)); + var8 = var7.end(); + } + + if (!var9.isEmpty()) { + String var10 = clean(var6.substring(var8)); + + for (long var12 : var9) { + long[] var10001 = new long[2]; + var10001[0] = var12; + var10001[1] = var2.size(); + var1.add(var10001); + var2.add(var10); + } + } + } + + var1.sort(Comparator.comparingLong(var0x -> var0x[0])); + ArrayList var14 = new ArrayList(var1.size()); + + for (int var15 = 0; var15 < var1.size(); var15++) { + String var16 = (String)var2.get((int)((long[])var1.get(var15))[1]); + if (!var16.isEmpty()) { + long var17 = ((long[])var1.get(var15))[0]; + long var18 = var15 + (1428598871 | -1428598870) + (1428598871 & -1428598870) < var1.size() + ? Math.min( + ((long[])var1.get(var15 + (2106587426 ^ -2106587425) + ((2106587426 & -2106587425) << 1)))[0], + var17 + (7509861354487935146L ^ -7509861354487927146L) + ((7509861354487935146L & -7509861354487927146L) << 1) + ) + : var17 + (-2562795080609952213L | 2562795080609957213L) + (-2562795080609952213L & 2562795080609957213L); + if (var18 > var17) { + var14.add(new kb(var17, var18, var16)); + } + } + } + + return var14.isEmpty() ? kp.EMPTY : new kp(List.copyOf(var14)); + } else { + return kp.EMPTY; + } + } + + static String format(kp var0) { + StringBuilder var1 = null; + Iterator var2 = null; + kb var3 = null; + long var4 = (4852724175506144737L | -4852724175506144737L) + (4852724175506144737L & -4852724175506144737L); + long var6 = (7572975446777554979L | -7572975446777554979L) + (7572975446777554979L & -7572975446777554979L); + long var8 = (9073856924248071091L | -9073856924248071091L) + (9073856924248071091L & -9073856924248071091L); + long var10 = (4275620127783431149L ^ -4275620127783431149L) + ((4275620127783431149L & -4275620127783431149L) << 1); + int var12 = 1579779879; + + while (true) { + switch (var12) { + case -1422535350: + return var1.toString(); + case 302424524: + if (var2.hasNext()) { + var12 = 1518470039; + } else { + var12 = -1422535350; + } + break; + case 1518470039: + var3 = (kb)var2.next(); + var4 = var3.startMillis(); + var6 = var4 / ((-2012972113309977880L | 2012972113310037880L) + (-2012972113309977880L & 2012972113310037880L)); + var8 = var4 + / ((-7388687418992085327L | 7388687418992086327L) + (-7388687418992085327L & 7388687418992086327L)) + % ((-125029251473646054L | 125029251473646114L) + (-125029251473646054L & 125029251473646114L)); + var10 = var4 + % ((-7044660707545563075L ^ 7044660707545564075L) + ((-7044660707545563075L & 7044660707545564075L) << 1)) + / ((8753680482907955108L | -8753680482907955098L) + (8753680482907955108L & -8753680482907955098L)); + Locale var10001 = Locale.ROOT; + String var10002 = "[%02d:%02d.%02d]%s%n"; + Object[] var10003 = new Object[4]; + var10003[0] = var6; + var10003[1] = var8; + var10003[2] = var10; + var10003[3] = var3.text(); + var1.append(String.format(var10001, var10002, var10003)); + var12 = 302424524; + break; + case 1579779879: + default: + var1 = new StringBuilder(); + var2 = var0.lines().iterator(); + var12 = 302424524; + } + } + } + + private static long toMillis(Matcher var0) { + long var1 = Long.parseLong(var0.group((1377238775 ^ -1377238774) + ((1377238775 & -1377238774) << 1))); + long var3 = Long.parseLong(var0.group((-5572336 | 5572338) + (-5572336 & 5572338))); + long var5 = (697421453183640397L ^ -697421453183640397L) + ((697421453183640397L & -697421453183640397L) << 1); + String var7 = var0.group((-1572668860 ^ 1572668863) + ((-1572668860 & 1572668863) << 1)); + if (var7 != null) { + long var8 = Long.parseLong(var7); + + var5 = switch (var7.length()) { + case 1 -> var8 * ((2655738046539103226L | -2655738046539103126L) + (2655738046539103226L & -2655738046539103126L)); + case 2 -> var8 * ((5949779061117051177L | -5949779061117051167L) + (5949779061117051177L & -5949779061117051167L)); + default -> var8; + }; + } + + return (var1 * ((3078222630761649470L ^ -3078222630761649410L) + ((3078222630761649470L & -3078222630761649410L) << 1)) + var3) + * ((-6112389801901456734L | 6112389801901457734L) + (-6112389801901456734L & 6112389801901457734L)) + + var5; + } + + private static String clean(String var0) { + String var1 = null; + String var3 = null; + int var2 = -1296454862; + + while (true) { + switch (var2) { + case -1296454862: + default: + var1 = var0.strip(); + if (var1.length() > (-867813107 ^ 867813267) + ((-867813107 & 867813267) << 1)) { + var2 = 1312757131; + } else { + var2 = 301194263; + } + break; + case -1012117598: + return var3; + case 301194263: + var3 = var1; + var2 = -1012117598; + break; + case 1312757131: + var3 = var1.substring(0, (-844222735 | 844222895) + (-844222735 & 844222895)); + var2 = -1012117598; + } + } + } +} diff --git a/src/main/java/defpackage/k.java b/src/main/java/defpackage/k.java new file mode 100644 index 0000000..b27d4a8 --- /dev/null +++ b/src/main/java/defpackage/k.java @@ -0,0 +1,14 @@ +package defpackage; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Documented +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface k { + byte value() default 2; +} diff --git a/src/main/java/defpackage/ka.java b/src/main/java/defpackage/ka.java new file mode 100644 index 0000000..d134b5d --- /dev/null +++ b/src/main/java/defpackage/ka.java @@ -0,0 +1,383 @@ +package defpackage; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.util.LinkedHashSet; +import java.util.Map; + +final class ka { + private static final String GET_ENDPOINT = "https://lrclib.net/api/get?artist_name=%s&track_name=%s&duration=%d"; + private static final String FIELD_SEARCH_ENDPOINT = "https://lrclib.net/api/search?track_name=%s&artist_name=%s"; + private static final String TRACK_SEARCH_ENDPOINT = "https://lrclib.net/api/search?track_name=%s"; + private static final String QUERY_ENDPOINT = "https://lrclib.net/api/search?q=%s"; + private static final String SYNCED_FIELD = "syncedLyrics"; + private static final String PLAIN_FIELD = "plainLyrics"; + private static final String TRACK_FIELD = "trackName"; + private static final String ARTIST_FIELD = "artistName"; + private static final String DURATION_FIELD = "duration"; + private static final String INSTRUMENTAL_FIELD = "instrumental"; + private static final Map HEADERS = Map.of( + "User-Agent", + "EvoVis (https://www.evoproject.xyz)" + ); + private static final double SYNCED_BONUS = 0.08; + + private ka() { + } + + static kj find(kq var0) throws Exception { + if (var0.title().isEmpty()) { + return kj.NOT_FOUND; + } + + kc var1 = new kc(); + if (!var0.artist().isEmpty() && var0.durationSeconds() > (8767142795850873888L | -8767142795850873888L) + (8767142795850873888L & -8767142795850873888L)) { + String var10001 = "https://lrclib.net/api/get?artist_name=%s&track_name=%s&duration=%d"; + Object[] var10002 = new Object[3]; + var10002[0] = kd.encode(var0.artist()); + var10002[1] = kd.encode(var0.title()); + var10002[2] = var0.durationSeconds(); + String var2 = var1.get(String.format(var10001, var10002), HEADERS); + if (var2 != null) { + JsonElement var3 = JsonParser.parseString(var2); + if (var3.isJsonObject()) { + kj var4 = toResult(var3.getAsJsonObject(), var0.durationSeconds()); + if (var4.origin().timed()) { + return var4; + } + } + } + } + + LinkedHashSet var16 = new LinkedHashSet(); + if (!var0.artist().isEmpty()) { + String var19 = "https://lrclib.net/api/search?track_name=%s&artist_name=%s"; + Object[] var23 = new Object[2]; + var23[0] = kd.encode(var0.title()); + var23[1] = kd.encode(var0.artist()); + var16.add(String.format(var19, var23)); + var19 = "https://lrclib.net/api/search?track_name=%s&artist_name=%s"; + var23 = new Object[2]; + var23[0] = kd.encode(var0.title()); + var23[1] = kd.encode(var0.primaryArtist()); + var16.add(String.format(var19, var23)); + } + + String var21 = "https://lrclib.net/api/search?q=%s"; + Object[] var25 = new Object[1]; + var25[0] = kd.encode(var0.searchText()); + var16.add(String.format(var21, var25)); + var21 = "https://lrclib.net/api/search?track_name=%s"; + var25 = new Object[1]; + var25[0] = kd.encode(var0.title()); + var16.add(String.format(var21, var25)); + JsonObject var17 = null; + double var18 = 0.6; + + for (String var7 : var16) { + String var8 = var1.get(var7, HEADERS); + if (var8 != null) { + JsonElement var9 = JsonParser.parseString(var8); + if (var9.isJsonArray()) { + for (JsonElement var12 : var9.getAsJsonArray()) { + if (var12.isJsonObject()) { + JsonObject var13 = var12.getAsJsonObject(); + double var14 = score(var13, var0); + if (var14 > var18) { + var18 = var14; + var17 = var13; + } + } + } + + if (var17 != null && text(var17, "syncedLyrics") != null) { + break; + } + } + } + } + + if (var17 == null) { + var1.throwIfAllFailed(); + return kj.NOT_FOUND; + } else { + return toResult(var17, var0.durationSeconds()); + } + } + + private static double score(JsonObject var0, kq var1) { + int var2 = 0; + double var3 = 0.0; + int var6 = 0; + double var7 = 0.0; + int var5 = -1254845762; + + while (true) { + switch (var5) { + case -1797601529: + return var7; + case -1675998411: + var7 = var3; + var5 = -1797601529; + break; + case -1254845762: + default: + if (bool(var0, "instrumental")) { + var5 = -1003035378; + } else { + var5 = 1682276357; + } + break; + case -1041955181: + if (text(var0, "plainLyrics") == null) { + var5 = -912127824; + } else { + var5 = 688201904; + } + break; + case -1003035378: + return 0.0; + case -912127824: + return 0.0; + case -396953179: + var6 = 0; + var5 = 1802644761; + break; + case -260089148: + var6 = 1; + var5 = 1802644761; + break; + case 271339754: + if (var2 != 0) { + var5 = 1299932045; + } else { + var5 = -1675998411; + } + break; + case 688201904: + var3 = km.score( + text(var0, "trackName"), + text(var0, "artistName"), + Math.round(number(var0, "duration")), + var1 + ); + if (var3 > 0.0) { + var5 = 271339754; + } else { + var5 = -1675998411; + } + break; + case 1299932045: + var7 = var3 + 0.08; + var5 = -1797601529; + break; + case 1682276357: + if (text(var0, "syncedLyrics") != null) { + var5 = -260089148; + } else { + var5 = -396953179; + } + break; + case 1802644761: + var2 = var6; + if (var2 == 0) { + var5 = -1041955181; + } else { + var5 = 688201904; + } + } + } + } + + private static kj toResult(JsonObject var0, long var1) { + long var3 = (-379632633370084588L | 379632633370084588L) + (-379632633370084588L & 379632633370084588L); + String var5 = null; + kp var6 = null; + kj var8 = null; + int var7 = 1684495163; + + while (true) { + switch (var7) { + case -2115581805: + var6 = jz.parse(var5); + if (!var6.isEmpty()) { + var7 = -633835521; + } else { + var7 = 60071249; + } + break; + case -1827868291: + return var8; + case -633835521: + return new kj(var6, ke.LRCLIB, var3); + case 60071249: + var6 = ko.estimate(text(var0, "plainLyrics"), var1); + if (var6.isEmpty()) { + var7 = 1695516823; + } else { + var7 = 1912035273; + } + break; + case 1684495163: + default: + var3 = Math.round(number(var0, "duration")); + var5 = text(var0, "syncedLyrics"); + if (var5 != null) { + var7 = -2115581805; + } else { + var7 = 60071249; + } + break; + case 1695516823: + var8 = kj.NOT_FOUND; + var7 = -1827868291; + break; + case 1912035273: + var8 = new kj(var6, ke.LRCLIB_ESTIMATED, var3); + var7 = -1827868291; + } + } + } + + private static String text(JsonObject var0, String var1) { + JsonElement var2 = null; + String var3 = null; + String var5 = null; + int var4 = 1156724093; + + while (true) { + switch (var4) { + case -1951355373: + return null; + case -1720877714: + var3 = var2.getAsString(); + if (var3.isBlank()) { + var4 = -1712578480; + } else { + var4 = 1002532494; + } + break; + case -1712578480: + var5 = null; + var4 = 860622766; + break; + case 570512927: + if (!var2.isJsonPrimitive()) { + var4 = -1951355373; + } else { + var4 = -1720877714; + } + break; + case 860622766: + return var5; + case 862286790: + if (!var2.isJsonNull()) { + var4 = 570512927; + } else { + var4 = -1951355373; + } + break; + case 1002532494: + var5 = var3; + var4 = 860622766; + break; + case 1156724093: + default: + var2 = var0.get(var1); + if (var2 != null) { + var4 = 862286790; + } else { + var4 = -1951355373; + } + } + } + } + + private static double number(JsonObject var0, String var1) { + JsonElement var2 = null; + double var4 = 0.0; + int var3 = -1788184018; + + while (true) { + switch (var3) { + case -1912581955: + if (!var2.isJsonNull()) { + var3 = -87611003; + } else { + var3 = -1637271393; + } + break; + case -1788184018: + default: + var2 = var0.get(var1); + if (var2 != null) { + var3 = -1912581955; + } else { + var3 = -1637271393; + } + break; + case -1637271393: + var4 = 0.0; + var3 = -1150769072; + break; + case -1150769072: + return var4; + case -87611003: + if (!var2.isJsonPrimitive()) { + var3 = -1637271393; + } else { + var3 = 1012422637; + } + break; + case 1012422637: + var4 = var2.getAsDouble(); + var3 = -1150769072; + } + } + } + + private static boolean bool(JsonObject var0, String var1) { + JsonElement var2 = null; + int var4 = 0; + int var3 = -341158236; + + while (true) { + switch (var3) { + case -1358026481: + var4 = 0; + var3 = 2083819318; + break; + case -1039466788: + var4 = 1; + var3 = 2083819318; + break; + case -341158236: + default: + var2 = var0.get(var1); + if (var2 != null) { + var3 = 1448450043; + } else { + var3 = -1358026481; + } + break; + case 1174230296: + if (var2.getAsBoolean()) { + var3 = -1039466788; + } else { + var3 = -1358026481; + } + break; + case 1448450043: + if (var2.isJsonPrimitive()) { + var3 = 1174230296; + } else { + var3 = -1358026481; + } + break; + case 2083819318: + return (boolean)((var4) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/kb.java b/src/main/java/defpackage/kb.java new file mode 100644 index 0000000..ffb7451 --- /dev/null +++ b/src/main/java/defpackage/kb.java @@ -0,0 +1,7 @@ +package defpackage; + +public record kb(long startMillis, long endMillis, String text) { + public long durationMillis() { + return Math.max((3935244330342424415L | -3935244330342424415L) + (3935244330342424415L & -3935244330342424415L), this.endMillis - this.startMillis); + } +} diff --git a/src/main/java/defpackage/kc.java b/src/main/java/defpackage/kc.java new file mode 100644 index 0000000..60df14e --- /dev/null +++ b/src/main/java/defpackage/kc.java @@ -0,0 +1,56 @@ +package defpackage; + +import java.util.Map; + +final class kc { + private int made; + private int failed; + private Exception lastFailure; + + String get(String var1, Map var2) { + this.made += 1; + + try { + return kd.get(var1, var2); + } catch (Exception var4) { + this.failed += 1; + this.lastFailure = var4; + return null; + } + } + + void throwIfAllFailed() throws Exception { + int var1 = 524472637; + + while (true) { + switch (var1) { + case -1554053364: + if (this.lastFailure != null) { + var1 = 1721270461; + } else { + var1 = 401866596; + } + break; + case -1347380578: + if (this.failed == this.made) { + var1 = -1554053364; + } else { + var1 = 401866596; + } + break; + case 401866596: + return; + case 524472637: + default: + if (this.made > 0) { + var1 = -1347380578; + } else { + var1 = 401866596; + } + break; + case 1721270461: + throw this.lastFailure; + } + } + } +} diff --git a/src/main/java/defpackage/kd.java b/src/main/java/defpackage/kd.java new file mode 100644 index 0000000..038295e --- /dev/null +++ b/src/main/java/defpackage/kd.java @@ -0,0 +1,73 @@ +package defpackage; + +import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URI; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.Map; + +final class kd { + private static final int CONNECT_TIMEOUT_MILLIS = 5000; + private static final int READ_TIMEOUT_MILLIS = 8000; + private static final int MAX_RESPONSE_BYTES = 4194304; + private static final String METHOD_POST = "POST"; + private static final String CONTENT_TYPE_HEADER = "Content-Type"; + private static final String JSON_CONTENT_TYPE = "application/json"; + private static final String HTTP_STATUS_PREFIX = "HTTP "; + + private kd() { + } + + static String get(String var0, Map var1) throws Exception { + return exchange(var0, var1, null); + } + + static String postJson(String var0, Map var1, String var2) throws Exception { + return exchange(var0, var1, var2); + } + + static String encode(String var0) { + return URLEncoder.encode(var0, StandardCharsets.UTF_8); + } + + private static String exchange(String var0, Map var1, String var2) throws Exception { + HttpURLConnection var3 = (HttpURLConnection)URI.create(var0).toURL().openConnection(); + + try { + var3.setConnectTimeout((-1041806831 | 1041811831) + (-1041806831 & 1041811831)); + var3.setReadTimeout((-276988786 | 276996786) + (-276988786 & 276996786)); + var1.forEach(var3::setRequestProperty); + if (var2 != null) { + byte[] var4 = var2.getBytes(StandardCharsets.UTF_8); + var3.setRequestMethod("POST"); + var3.setDoOutput((boolean)((((432236054 ^ -432236053) + ((432236054 & -432236053) << 1))) != 0)); + var3.setRequestProperty( + "Content-Type", + "application/json" + ); + var3.setFixedLengthStreamingMode(var4.length); + + try (OutputStream var5 = var3.getOutputStream()) { + var5.write(var4); + } + } + + int var19 = var3.getResponseCode(); + if (var19 == (1174894156 ^ -1174893752) + ((1174894156 & -1174893752) << 1)) { + return null; + } + + if (var19 != (834831470 | -834831270) + (834831470 & -834831270)) { + throw new IllegalStateException("HTTP " + var19); + } + + try (InputStream var20 = var3.getInputStream()) { + return new String(var20.readNBytes((18360875 | -14166571) + (18360875 & -14166571)), StandardCharsets.UTF_8); + } + } finally { + var3.disconnect(); + } + } +} diff --git a/src/main/java/defpackage/ke.java b/src/main/java/defpackage/ke.java new file mode 100644 index 0000000..5bda135 --- /dev/null +++ b/src/main/java/defpackage/ke.java @@ -0,0 +1,21 @@ +package defpackage; + +public enum ke { + LRCLIB((boolean)((((-1394262019 | 1394262020) + (-1394262019 & 1394262020))) != 0)), + YOUTUBE_MUSIC((boolean)((((279174343 | -279174342) + (279174343 & -279174342))) != 0)), + NETEASE((boolean)((((913621903 | -913621902) + (913621903 & -913621902))) != 0)), + LRCLIB_ESTIMATED((boolean)((((1888582016 | -1888582016) + (1888582016 & -1888582016))) != 0)), + YOUTUBE_MUSIC_ESTIMATED((boolean)((((1170863535 ^ -1170863535) + ((1170863535 & -1170863535) << 1))) != 0)), + WHISPER((boolean)((((-330164361 | 330164362) + (-330164361 & 330164362))) != 0)), + NONE((boolean)((((-1737736979 | 1737736979) + (-1737736979 & 1737736979))) != 0)); + + private final boolean timed; + + ke(boolean var3) { + this.timed = var3; + } + + public boolean timed() { + return this.timed; + } +} diff --git a/src/main/java/defpackage/ki.java b/src/main/java/defpackage/ki.java new file mode 100644 index 0000000..fa16d45 --- /dev/null +++ b/src/main/java/defpackage/ki.java @@ -0,0 +1,24 @@ +package defpackage; + +enum ki { + LRCLIB { + @Override + kj find(kq var1) throws Exception { + return ka.find(var1); + } + }, + YOUTUBE_MUSIC { + @Override + kj find(kq var1) throws Exception { + return ks.find(var1); + } + }, + NETEASE { + @Override + kj find(kq var1) throws Exception { + return kn.find(var1); + } + }; + + abstract kj find(kq var1) throws Exception; +} diff --git a/src/main/java/defpackage/kj.java b/src/main/java/defpackage/kj.java new file mode 100644 index 0000000..792851c --- /dev/null +++ b/src/main/java/defpackage/kj.java @@ -0,0 +1,59 @@ +package defpackage; + +public record kj(kp lyrics, ke origin, long matchedDurationSeconds) { + public static final kj NOT_FOUND = new kj(kp.EMPTY, ke.NONE, (-6024445662437509953L | 6024445662437509953L) + (-6024445662437509953L & 6024445662437509953L)); + + public boolean found() { + int var2 = 0; + int var1 = -1794998105; + + while (true) { + switch (var1) { + case -1794998105: + default: + if (!this.lyrics.isEmpty()) { + var1 = 1969473480; + } else { + var1 = -1658209644; + } + break; + case -1658209644: + var2 = 0; + var1 = 1574204549; + break; + case 1574204549: + return (boolean)((var2) != 0); + case 1969473480: + var2 = 1; + var1 = 1574204549; + } + } + } + + long durationError(long var1) { + int var3 = -669744527; + + while (true) { + switch (var3) { + case -669744527: + default: + if (var1 > (-3278897718790053764L | 3278897718790053764L) + (-3278897718790053764L & 3278897718790053764L)) { + var3 = 570704576; + } else { + var3 = 87830371; + } + break; + case -20139619: + return Math.abs(var1 - this.matchedDurationSeconds); + case 87830371: + return (8403944948822569149L ^ -3792258930395181246L) + ((8403944948822569149L & -3792258930395181246L) << 1); + case 570704576: + if (this.matchedDurationSeconds <= (-3408797544959098476L ^ 3408797544959098476L) + ((-3408797544959098476L & 3408797544959098476L) << 1)) { + var3 = 87830371; + } else { + var3 = -20139619; + } + } + } + } +} diff --git a/src/main/java/defpackage/kk.java b/src/main/java/defpackage/kk.java new file mode 100644 index 0000000..68815d3 --- /dev/null +++ b/src/main/java/defpackage/kk.java @@ -0,0 +1,51 @@ +package defpackage; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Objects; + +/* JADX INFO: loaded from: evovis-dec.jar:kk.class */ +class kk extends LinkedHashMap { + final /* synthetic */ kl this$0; + + /* JADX WARN: Multi-variable type inference failed */ + @Override // java.util.LinkedHashMap + protected boolean removeEldestEntry(Map.Entry entry) { + int i = 0; + int i2 = -68329605; + int i3 = -2146892789; + while (true) { + switch (i2 + i3) { + case -2035666893: + i = 0; + i2 = -1086850049; + i3 = 2327432; + break; + case -1084522617: + return i; + case 587742112: + i = 1; + i2 = 1050374215; + i3 = -2134896832; + break; + case 2079744902: + default: + if (size() <= ((-1283509372) | 1283509420) + ((-1283509372) & 1283509420)) { + i2 = -177590485; + i3 = -1858076408; + } else { + i2 = -2098842850; + i3 = -1608382334; + } + break; + } + } + } + + /* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */ + kk(kl klVar, int i, float f, boolean z) { + super(i, f, z); + Objects.requireNonNull(klVar); + this.this$0 = klVar; + } +} diff --git a/src/main/java/defpackage/kl.java b/src/main/java/defpackage/kl.java new file mode 100644 index 0000000..aba4ea0 --- /dev/null +++ b/src/main/java/defpackage/kl.java @@ -0,0 +1,304 @@ +package defpackage; + +import java.nio.charset.StandardCharsets; +import java.nio.file.CopyOption; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.security.MessageDigest; +import java.util.HexFormat; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public final class kl { + private static final kl INSTANCE = new kl(); + private static final String THREAD_NAME = "EvoVis-Lyrics"; + private static final String TRANSCRIPT_DIRECTORY = "lyrics"; + private static final String TRANSCRIPT_EXTENSION = ".lrc"; + private static final String TEMP_EXTENSION = ".tmp"; + private static final String DIGEST_ALGORITHM = "SHA-256"; + private static final int FILE_NAME_BYTES = 12; + private static final int CACHE_CAPACITY = 48; + private static final long MILLIS_PER_SECOND = 1000L; + private static final long RETRY_AFTER_FAILURE_MILLIS = 60000L; + private static final String PROVIDER_FAILURE = "Lyrics provider {} failed"; + private static final String LOOKUP_RESULT = "Lyrics for {} resolved via {}"; + private static final String TRANSCRIPT_WRITE_FAILURE = "Could not store transcript for {}"; + private static final String TRANSCRIPT_READ_FAILURE = "Could not read transcript for {}"; + private static final long EXACT_DURATION_SECONDS = 2L; + private final ExecutorService executor = Executors.newSingleThreadExecutor(var0 -> { + Thread var1 = new Thread(var0, "EvoVis-Lyrics"); + var1.setDaemon((boolean)((((1005048805 ^ -1005048804) + ((1005048805 & -1005048804) << 1))) != 0)); + var1.setPriority((251082171 ^ -251082170) + ((251082171 & -251082170) << 1)); + return var1; + }); + private final Map cache = new LinkedHashMap( + (573012015 | -573011967) + (573012015 & -573011967), 0.75F, (boolean)((((-538072052 | 538072053) + (-538072052 & 538072053)) + ) != 0)) { + @Override + protected boolean removeEldestEntry(Entry var1) { + int var3 = 0; + int var2 = 2079744902; + + while (true) { + switch (var2) { + case -2035666893: + var3 = 0; + var2 = -1084522617; + break; + case -1084522617: + return (boolean)((var3) != 0); + case 587742112: + var3 = 1; + var2 = -1084522617; + break; + case 2079744902: + default: + if (this.size() > (-1283509372 | 1283509420) + (-1283509372 & 1283509420)) { + var2 = 587742112; + } else { + var2 = -2035666893; + } + } + } + } + }; + private final Map pending = new ConcurrentHashMap<>(); + + private kl() { + } + + public static kl getInstance() { + return INSTANCE; + } + + public kj lyricsFor(jh var1) { + if (!var1.hasTrack()) { + return null; + } + + String var2 = var1.trackKey(); + synchronized (this.cache) { + kj var4 = this.cache.get(var2); + if (var4 != null) { + return var4; + } + } + + long var8 = System.currentTimeMillis(); + Long var5 = this.pending.get(var2); + if (var5 == null + || var5 < (3159410587278634332L | -3159410587278634332L) + (3159410587278634332L & -3159410587278634332L) + && var8 + var5 > (-7328432985938257805L ^ 7328432985938317805L) + ((-7328432985938257805L & 7328432985938317805L) << 1)) { + this.pending.put(var2, var8); + kq var6 = kq.of( + var1.artist(), + var1.title(), + var1.durationMillis() / ((-2251899914663095563L | 2251899914663096563L) + (-2251899914663095563L & 2251899914663096563L)) + ); + this.executor.execute(() -> this.resolve(var2, var6)); + } + + return null; + } + + public void storeTranscript(String var1, kp var2) { + if (!var2.isEmpty()) { + kj var3 = new kj(var2, ke.WHISPER, (4001147634436822740L ^ -4001147634436822740L) + ((4001147634436822740L & -4001147634436822740L) << 1)); + synchronized (this.cache) { + kj var5 = this.cache.get(var1); + if (var5 == null || !var5.origin().timed() || var5.origin() == ke.WHISPER) { + this.cache.put(var1, var3); + } + } + + this.executor.execute(() -> writeTranscript(var1, var2)); + } + } + + private void resolve(String var1, kq var2) { + kj var3 = readTranscript(var1); + int var4 = 0; + if (var3 == null) { + kj var5 = kj.NOT_FOUND; + int var6 = 0; + ki[] var7 = ki.values(); + int var8 = var7.length; + + for (int var9 = 0; var9 < var8; var9++) { + ki var10 = var7[var9]; + kj var11 = attempt(var10, var2); + if (var11 == null) { + var6++; + } else { + if (better(var11, var5, var2.durationSeconds())) { + var5 = var11; + } + + if (var5.origin().timed() + && var5.durationError(var2.durationSeconds()) + <= (5875349273927490191L ^ -5875349273927490189L) + ((5875349273927490191L & -5875349273927490189L) << 1)) { + break; + } + } + } + + var4 = var6 == ki.values().length ? 1: 0; + var3 = var5; + } + + id.debug( + Cif.MEDIA, + "Lyrics for {} resolved via {}", + var2.searchText(), + var3.origin() + ); + if (var4 != 0) { + this.pending.put(var1, -System.currentTimeMillis()); + } else { + synchronized (this.cache) { + kj var15 = this.cache.get(var1); + if (var15 == null || var15.origin() == ke.NONE) { + this.cache.put(var1, var3); + } + } + + this.pending.remove(var1); + } + } + + private static boolean better(kj var0, kj var1, long var2) { + int var5 = 0; + int var4 = -728121588; + + while (true) { + switch (var4) { + case -1098837870: + return (boolean)(((1)) != 0); + case -798016706: + if (var0.durationError(var2) < var1.durationError(var2)) { + var4 = -538142112; + } else { + var4 = -178306536; + } + break; + case -728121588: + default: + if (!var0.found()) { + var4 = -720617319; + } else { + var4 = -348537389; + } + break; + case -720617319: + return (boolean)(((0)) != 0); + case -538142112: + var5 = 1; + var4 = 1238029342; + break; + case -348537389: + if (!var1.found()) { + var4 = -1098837870; + } else { + var4 = 1466893147; + } + break; + case -178306536: + var5 = 0; + var4 = 1238029342; + break; + case 961182571: + return var0.origin().timed(); + case 1238029342: + return (boolean)((var5) != 0); + case 1466893147: + if (var0.origin().timed() != var1.origin().timed()) { + var4 = 961182571; + } else { + var4 = -798016706; + } + } + } + } + + private static kj attempt(ki var0, kq var1) { + try { + return var0.find(var1); + } catch (Exception var3) { + id.warn( + Cif.MEDIA, + "Lyrics provider {} failed", + var0.name(), + var3 + ); + return null; + } + } + + private static kj readTranscript(String var0) { + Path var1 = transcriptFile(var0); + if (var1 != null && Files.isRegularFile(var1)) { + try { + kp var2 = jz.parse(Files.readString(var1, StandardCharsets.UTF_8)); + return var2.isEmpty() + ? null + : new kj(var2, ke.WHISPER, (-3573749787948692813L ^ 3573749787948692813L) + ((-3573749787948692813L & 3573749787948692813L) << 1)); + } catch (Exception var3) { + id.warn( + Cif.MEDIA, + "Could not read transcript for {}", + var1.getFileName(), + var3 + ); + return null; + } + } else { + return null; + } + } + + private static void writeTranscript(String var0, kp var1) { + Path var2 = transcriptFile(var0); + if (var2 != null) { + try { + Files.createDirectories(var2.getParent()); + Path var3 = var2.resolveSibling(var2.getFileName() + ".tmp"); + Files.writeString(var3, jz.format(var1), StandardCharsets.UTF_8); + CopyOption[] var10002 = new CopyOption[2]; + var10002[0] = StandardCopyOption.REPLACE_EXISTING; + var10002[1] = StandardCopyOption.ATOMIC_MOVE; + Files.move(var3, var2, var10002); + } catch (Exception var4) { + id.warn( + Cif.MEDIA, + "Could not store transcript for {}", + var2.getFileName(), + var4 + ); + } + } + } + + private static Path transcriptFile(String var0) { + try { + byte[] var1 = MessageDigest.getInstance("SHA-256") + .digest(var0.getBytes(StandardCharsets.UTF_8)); + String var2 = HexFormat.of() + .formatHex(var1, 0, (1844178807 | -1844178795) + (1844178807 & -1844178795)) + + ".lrc"; + return bz.DIRECTORY.toPath().resolve("lyrics").resolve(var2); + } catch (Exception var3) { + id.warn( + Cif.MEDIA, + "Could not read transcript for {}", + var0, + var3 + ); + return null; + } + } +} diff --git a/src/main/java/defpackage/km.java b/src/main/java/defpackage/km.java new file mode 100644 index 0000000..1d44749 --- /dev/null +++ b/src/main/java/defpackage/km.java @@ -0,0 +1,114 @@ +package defpackage; + +final class km { + static final double MIN_SCORE = 0.6; + private static final double TITLE_WEIGHT = 0.6; + private static final double ARTIST_WEIGHT = 0.4; + private static final double MIN_TITLE_SIMILARITY = 0.5; + private static final double MIN_ARTIST_SIMILARITY = 0.5; + private static final double DURATION_EXACT_BONUS = 0.15; + private static final double DURATION_MISMATCH_PENALTY = 0.35; + private static final long DURATION_EXACT_SECONDS = 3L; + private static final long DURATION_TOLERANCE_SECONDS = 12L; + + private km() { + } + + static double score(String var0, String var1, long var2, kq var4) { + double var5 = 0.0; + double var7 = 0.0; + double var9 = 0.0; + long var11 = (-4613520974165533919L ^ 4613520974165533919L) + ((-4613520974165533919L & 4613520974165533919L) << 1); + double var14 = 0.0; + int var13 = -1247694219; + + while (true) { + switch (var13) { + case -1922788587: + return 0.0; + case -1902417185: + var9 += 0.15; + var13 = -1898264936; + break; + case -1898264936: + return var9; + case -1763365649: + if (var2 > (6422111935414482465L | -6422111935414482465L) + (6422111935414482465L & -6422111935414482465L)) { + var13 = 409874033; + } else { + var13 = -1898264936; + } + break; + case -1554871301: + if (var11 > (2997228594352396952L | -2997228594352396940L) + (2997228594352396952L & -2997228594352396940L)) { + var13 = 1519221571; + } else { + var13 = -1898264936; + } + break; + case -1306668025: + var14 = Math.max(kq.similarity(var1, var4.artist()), kq.similarity(var1, var4.primaryArtist())); + var13 = 1881500483; + break; + case -1247694219: + default: + var5 = kq.similarity( + kq.of(var1, var0, (-3057583806266260546L | 3057583806266260546L) + (-3057583806266260546L & 3057583806266260546L)).title(), var4.title() + ); + if (var5 < 0.5) { + var13 = -1922788587; + } else { + var13 = 945491617; + } + break; + case -652819060: + if (var7 < 0.5) { + var13 = 901487222; + } else { + var13 = 1209221066; + } + break; + case -411306821: + var14 = 0.4; + var13 = 1881500483; + break; + case 409874033: + var11 = Math.abs(var2 - var4.durationSeconds()); + if (var11 <= (5312818303471801170L ^ -5312818303471801167L) + ((5312818303471801170L & -5312818303471801167L) << 1)) { + var13 = -1902417185; + } else { + var13 = -1554871301; + } + break; + case 901487222: + return 0.0; + case 945491617: + if (var4.artist().isEmpty()) { + var13 = -411306821; + } else { + var13 = -1306668025; + } + break; + case 1209221066: + var9 = var5 * 0.6 + var7 * 0.4; + if (var4.durationSeconds() > (6566906501117590548L | -6566906501117590548L) + (6566906501117590548L & -6566906501117590548L)) { + var13 = -1763365649; + } else { + var13 = -1898264936; + } + break; + case 1519221571: + var9 -= 0.35; + var13 = -1898264936; + break; + case 1881500483: + var7 = var14; + if (!var4.artist().isEmpty()) { + var13 = -652819060; + } else { + var13 = 1209221066; + } + } + } + } +} diff --git a/src/main/java/defpackage/kn.java b/src/main/java/defpackage/kn.java new file mode 100644 index 0000000..4248f39 --- /dev/null +++ b/src/main/java/defpackage/kn.java @@ -0,0 +1,264 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; + +final class kn { + private static final String SEARCH_ENDPOINT = "https://music.163.com/api/cloudsearch/pc?type=1&limit=10&offset=0&s=%s"; + private static final String LYRIC_ENDPOINT = "https://music.163.com/api/song/lyric?os=pc&lv=-1&kv=-1&tv=-1&id=%d"; + private static final Map HEADERS = Map.of( + "User-Agent", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0 Safari/537.36", + "Referer", + "https://music.163.com/" + ); + private static final String RESULT = "result"; + private static final String SONGS = "songs"; + private static final String NAME = "name"; + private static final String ID = "id"; + private static final String ARTISTS = "ar"; + private static final String DURATION = "dt"; + private static final String LRC = "lrc"; + private static final String LYRIC = "lyric"; + private static final String ARTIST_SEPARATOR = ", "; + private static final long MILLIS_PER_SECOND = 1000L; + private static final Pattern CREDIT_LINE = Pattern.compile( + "^\\s*(?:作词|作曲|编曲|制作人|混音|母带|录音|和声|吉他|贝斯|鼓|监制|出品|发行|OP|SP|Lyrics|Composer|Producer|Arranger)\\s*[::].*$", + (1396256193 | -1396256127) + (1396256193 & -1396256127) + ); + + private kn() { + } + + static kj find(kq var0) throws Exception { + if (var0.title().isEmpty()) { + return kj.NOT_FOUND; + } + + String var10000 = "https://music.163.com/api/cloudsearch/pc?type=1&limit=10&offset=0&s=%s"; + Object[] var10001 = new Object[1]; + var10001[0] = kd.encode(var0.searchText()); + String var1 = kd.get(String.format(var10000, var10001), HEADERS); + if (var1 == null) { + return kj.NOT_FOUND; + } + + JsonObject var2 = JsonParser.parseString(var1).getAsJsonObject(); + JsonObject var3 = var2.getAsJsonObject("result"); + JsonArray var4 = var3 == null ? null : var3.getAsJsonArray("songs"); + if (var4 == null) { + return kj.NOT_FOUND; + } + + long var5 = (708896153434258998L ^ -708896153434258999L) + ((708896153434258998L & -708896153434258999L) << 1); + long var7 = (-7875232220216383009L | 7875232220216383009L) + (-7875232220216383009L & 7875232220216383009L); + double var9 = 0.6; + + for (JsonElement var12 : var4) { + if (var12.isJsonObject()) { + JsonObject var13 = var12.getAsJsonObject(); + long var14 = var13.has("dt") + ? var13.get("dt").getAsLong() + / ((-174456708012856211L | 174456708012857211L) + (-174456708012856211L & 174456708012857211L)) + : (2582775875271844300L ^ -2582775875271844300L) + ((2582775875271844300L & -2582775875271844300L) << 1); + double var16 = km.score(string(var13, "name"), artists(var13), var14, var0); + if (var16 > var9) { + var9 = var16; + var5 = var13.get("id").getAsLong(); + var7 = var14; + } + } + } + + if (var5 < (6444223477672901022L | -6444223477672901022L) + (6444223477672901022L & -6444223477672901022L)) { + return kj.NOT_FOUND; + } + + var10000 = "https://music.163.com/api/song/lyric?os=pc&lv=-1&kv=-1&tv=-1&id=%d"; + var10001 = new Object[1]; + var10001[0] = var5; + String var18 = kd.get(String.format(var10000, var10001), HEADERS); + if (var18 == null) { + return kj.NOT_FOUND; + } + + JsonObject var19 = JsonParser.parseString(var18) + .getAsJsonObject() + .getAsJsonObject("lrc"); + String var20 = var19 == null ? null : string(var19, "lyric"); + kp var21 = withoutCredits(jz.parse(var20)); + return var21.isEmpty() ? kj.NOT_FOUND : new kj(var21, ke.NETEASE, var7); + } + + private static kp withoutCredits(kp var0) { + ArrayList var1 = null; + Iterator var2 = null; + kb var3 = null; + kp var5 = null; + int var4 = -655195431; + + while (true) { + switch (var4) { + case -2096916031: + var1.add(var3); + var4 = 1941861684; + break; + case -1463256441: + var5 = kp.EMPTY; + var4 = -6842067; + break; + case -837093978: + var3 = (kb)var2.next(); + if (!CREDIT_LINE.matcher(var3.text()).matches()) { + var4 = -2096916031; + } else { + var4 = 1941861684; + } + break; + case -655195431: + default: + var1 = new ArrayList(var0.lines().size()); + var2 = var0.lines().iterator(); + var4 = 1685610721; + break; + case -423860670: + if (var1.isEmpty()) { + var4 = -1463256441; + } else { + var4 = 472691301; + } + break; + case -6842067: + return var5; + case 472691301: + var5 = new kp(List.copyOf(var1)); + var4 = -6842067; + break; + case 1685610721: + if (var2.hasNext()) { + var4 = -837093978; + } else { + var4 = -423860670; + } + break; + case 1941861684: + var4 = 1685610721; + } + } + } + + private static String artists(JsonObject var0) { + JsonArray var1 = null; + StringBuilder var2 = null; + Iterator var3 = null; + JsonElement var4 = null; + String var5 = null; + int var6 = -167741049; + + while (true) { + switch (var6) { + case -2023578476: + var2 = new StringBuilder(); + var3 = var1.iterator(); + var6 = -1607680334; + break; + case -1607680334: + if (var3.hasNext()) { + var6 = 1542654354; + } else { + var6 = 682262917; + } + break; + case -469535680: + var2.append(", "); + var6 = 1995171170; + break; + case -167741049: + default: + var1 = var0.getAsJsonArray("ar"); + if (var1 == null) { + var6 = -3010023; + } else { + var6 = -2023578476; + } + break; + case -36844000: + var6 = -1607680334; + break; + case -3010023: + return ""; + case 193884716: + if (!var2.isEmpty()) { + var6 = -469535680; + } else { + var6 = 1995171170; + } + break; + case 682262917: + return var2.toString(); + case 732532840: + var5 = string(var4.getAsJsonObject(), "name"); + if (var5 != null) { + var6 = 193884716; + } else { + var6 = -36844000; + } + break; + case 1542654354: + var4 = (JsonElement)var3.next(); + if (var4.isJsonObject()) { + var6 = 732532840; + } else { + var6 = -36844000; + } + break; + case 1995171170: + var2.append(var5); + var6 = -36844000; + } + } + } + + private static String string(JsonObject var0, String var1) { + JsonElement var2 = null; + String var4 = null; + int var3 = 1414640332; + + while (true) { + switch (var3) { + case -1904528265: + var4 = null; + var3 = -1663639626; + break; + case -1663639626: + return var4; + case 933232390: + if (!var2.isJsonPrimitive()) { + var3 = -1904528265; + } else { + var3 = 1848391755; + } + break; + case 1414640332: + default: + var2 = var0.get(var1); + if (var2 != null) { + var3 = 933232390; + } else { + var3 = -1904528265; + } + break; + case 1848391755: + var4 = var2.getAsString(); + var3 = -1663639626; + } + } + } +} diff --git a/src/main/java/defpackage/ko.java b/src/main/java/defpackage/ko.java new file mode 100644 index 0000000..852d6f0 --- /dev/null +++ b/src/main/java/defpackage/ko.java @@ -0,0 +1,66 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; + +final class ko { + private static final long MILLIS_PER_SECOND = 1000L; + private static final double INTRO_RATIO = 0.06; + private static final double OUTRO_RATIO = 0.05; + private static final long FALLBACK_DURATION_MILLIS = 180000L; + private static final int MIN_WEIGHT = 6; + private static final int MAX_LINE_LENGTH = 160; + private static final String SECTION_MARKER_START = "["; + + private ko() { + } + + static kp estimate(String var0, long var1) { + if (var0 != null && !var0.isBlank()) { + ArrayList var3 = new ArrayList(); + String[] var4 = var0.split("\\R"); + int var5 = var4.length; + + for (int var6 = 0; var6 < var5; var6++) { + String var7 = var4[var6]; + String var8 = var7.strip(); + if (!var8.isEmpty() && !var8.startsWith("[")) { + var3.add( + var8.length() > 160? var8.substring(0, (-1458542976 | 1458543136) + (-1458542976 & 1458543136)) + : var8 + ); + } + } + + if (var3.isEmpty()) { + return kp.EMPTY; + } + + long var19 = var1 > (-2859578847544877209L ^ 2859578847544877209L) + ((-2859578847544877209L & 2859578847544877209L) << 1) + ? var1 * ((-930908875172335293L | 930908875172336293L) + (-930908875172335293L & 930908875172336293L)) + : (2557745950204395467L ^ -2557745950204215467L) + ((2557745950204395467L & -2557745950204215467L) << 1); + long var20 = (long)(var19 * 0.06); + long var21 = Math.max( + (8980334388479876603L ^ -8980334388479876602L) + ((8980334388479876603L & -8980334388479876602L) << 1), (long)(var19 * 0.8899999999999999) + ); + long var10 = (2916234754845133482L | -2916234754845133482L) + (2916234754845133482L & -2916234754845133482L); + + for (String var13 : var3) { + var10 += Math.max(6, var13.length()); + } + + ArrayList var22 = new ArrayList(var3.size()); + long var23 = var20; + + for (String var16 : var3) { + long var17 = var21 * Math.max(6, var16.length()) / var10; + var22.add(new kb(var23, var23 + var17, var16)); + var23 += var17; + } + + return new kp(List.copyOf(var22)); + } else { + return kp.EMPTY; + } + } +} diff --git a/src/main/java/defpackage/kp.java b/src/main/java/defpackage/kp.java new file mode 100644 index 0000000..1eefb1e --- /dev/null +++ b/src/main/java/defpackage/kp.java @@ -0,0 +1,76 @@ +package defpackage; + +import java.util.List; + +public record kp(List lines) { + public static final kp EMPTY = new kp(List.of()); + + public boolean isEmpty() { + return this.lines.isEmpty(); + } + + public int indexAt(long var1) { + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 1162514141; + + while (true) { + switch (var7) { + case -1818958007: + return var5; + case -1733450423: + var6 = var3 + var4 >>> 1; + if (this.lines.get(var6).startMillis() <= var1) { + var7 = 2051051038; + } else { + var7 = -1381289676; + } + break; + case -1381289676: + var4 = var6 - (1); + var7 = -344008088; + break; + case -344008088: + var7 = 17633285; + break; + case 17633285: + if (var3 <= var4) { + var7 = -1733450423; + } else { + var7 = 2013387693; + } + break; + case 1001702180: + if (var1 >= this.lines.get(var5).endMillis()) { + var7 = 2108345001; + } else { + var7 = -1818958007; + } + break; + case 1162514141: + default: + var3 = 0; + var4 = this.lines.size() - (1); + var5 = -1; + var7 = 17633285; + break; + case 2013387693: + if (var5 >= 0) { + var7 = 1001702180; + } else { + var7 = 2108345001; + } + break; + case 2051051038: + var5 = var6; + var3 = var6 + 1; + var7 = -344008088; + break; + case 2108345001: + return -1; + } + } + } +} diff --git a/src/main/java/defpackage/kq.java b/src/main/java/defpackage/kq.java new file mode 100644 index 0000000..a6c788a --- /dev/null +++ b/src/main/java/defpackage/kq.java @@ -0,0 +1,296 @@ +package defpackage; + +import java.text.Normalizer; +import java.text.Normalizer.Form; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Locale; +import java.util.Set; +import java.util.regex.Pattern; + +record kq(String artist, String title, long durationSeconds) { + private static final Pattern NOISE_BRACKETS = Pattern.compile( + "\\s*[(\\[【][^)\\]】]*(?:feat\\.?|ft\\.?|featuring|official|video|audio|lyric|clip|visuali[sz]er|remaster|live|hd|4k|mv|prod|slowed|reverb|sped|speed|nightcore|bass boost|8d|премьера|клип|текст|премьера клипа|lyrics|explicit|clean)[^)\\]】]*[)\\]】]", + (1932879083 | -1932879017) + (1932879083 & -1932879017) + ); + private static final Pattern FEATURING = Pattern.compile( + "\\s+(?:feat\\.?|ft\\.?|featuring|prod\\.?)\\s+.*$", + (1399707382 ^ -1399707316) + ((1399707382 & -1399707316) << 1) + ); + private static final Pattern TRAILING_TAGS = Pattern.compile( + "\\s*[||/]\\s*.*$|\\s+-\\s+(?:slowed|sped up|speed up|reverb|remastered.*)$", + (1707449450 ^ -1707449384) + ((1707449450 & -1707449384) << 1) + ); + private static final Pattern ARTIST_NOISE = Pattern.compile( + "\\s*(?:-\\s*topic|vevo|official|music)$", + (792725278 ^ -792725212) + ((792725278 & -792725212) << 1) + ); + private static final Pattern ARTIST_SEPARATORS = Pattern.compile( + "\\s*(?:,|&|\\bx\\b|×|\\band\\b|\\bи\\b)\\s*", + (944074022 | -944073956) + (944074022 & -944073956) + ); + private static final Pattern DECORATION = Pattern.compile( + "[\"«»“”„'`]" + ); + private static final Pattern NON_WORD = Pattern.compile("[^\\p{L}\\p{N}]+"); + private static final Pattern DIACRITICS = Pattern.compile("\\p{M}+"); + private static final String TITLE_SEPARATOR = " - "; + private static final String SPACE = " "; + private static final double CONTAINMENT_SCORE = 0.85; + + static kq of(String var0, String var1, long var2) { + String var4 = null; + String var5 = null; + int var6 = 0; + String var8 = null; + String var9 = null; + int var7 = 260800841; + + while (true) { + switch (var7) { + case -1999041757: + var5 = DECORATION.matcher(var5).replaceAll(""); + var5 = NOISE_BRACKETS.matcher(var5).replaceAll(""); + var5 = TRAILING_TAGS.matcher(var5).replaceAll(""); + var5 = FEATURING.matcher(var5).replaceAll("").strip(); + var4 = ARTIST_NOISE.matcher(var4).replaceAll("").strip(); + return new kq(var4, var5, Math.max((-2519735383221791124L ^ 2519735383221791124L) + ((-2519735383221791124L & 2519735383221791124L) << 1), var2)); + case -1813392382: + if (!var4.isEmpty()) { + var7 = -683516124; + } else { + var7 = -1029879255; + } + break; + case -1029879255: + var4 = var5.substring(0, var6).strip(); + var5 = var5.substring(var6 + " - ".length()).strip(); + var7 = -1999041757; + break; + case -683516124: + if (looselyEquals(var5.substring(0, var6), var4)) { + var7 = -1029879255; + } else { + var7 = -1999041757; + } + break; + case -486647297: + var8 = var0.strip(); + var7 = 237799748; + break; + case -344307503: + var9 = var1.strip(); + var7 = 468154925; + break; + case -197997848: + var9 = ""; + var7 = 468154925; + break; + case -8685201: + var8 = ""; + var7 = 237799748; + break; + case 237799748: + var4 = var8; + if (var1 == null) { + var7 = -197997848; + } else { + var7 = -344307503; + } + break; + case 260800841: + default: + if (var0 == null) { + var7 = -8685201; + } else { + var7 = -486647297; + } + break; + case 468154925: + var5 = var9; + var6 = var5.indexOf(" - "); + if (var6 > 0) { + var7 = -1813392382; + } else { + var7 = -1999041757; + } + } + } + } + + String primaryArtist() { + String[] var1 = null; + String var3 = null; + int var2 = -1702603667; + + while (true) { + switch (var2) { + case -1702603667: + default: + var1 = ARTIST_SEPARATORS.split(this.artist, (-194052945 | 194052947) + (-194052945 & 194052947)); + if (var1.length == 0) { + var2 = -1069100670; + } else { + var2 = 1523085850; + } + break; + case -1069100670: + var3 = this.artist; + var2 = 561464785; + break; + case 561464785: + return var3; + case 1523085850: + var3 = var1[0].strip(); + var2 = 561464785; + } + } + } + + String searchText() { + String var2 = null; + int var1 = -710146315; + + while (true) { + switch (var1) { + case -2100340892: + var2 = this.artist + " " + this.title; + var1 = 809074879; + break; + case -710146315: + default: + if (this.artist.isEmpty()) { + var1 = 441406988; + } else { + var1 = -2100340892; + } + break; + case 441406988: + var2 = this.title; + var1 = 809074879; + break; + case 809074879: + return var2; + } + } + } + + static String fold(String var0) { + String var1 = null; + int var2 = -1703177427; + + while (true) { + switch (var2) { + case -1703177427: + default: + if (var0 == null) { + var2 = 207997221; + } else { + var2 = -1117909352; + } + break; + case -1117909352: + var1 = DIACRITICS.matcher(Normalizer.normalize(var0, Form.NFD)).replaceAll(""); + return NON_WORD.matcher(var1.toLowerCase(Locale.ROOT)).replaceAll(" ").strip(); + case 207997221: + return ""; + } + } + } + + static boolean looselyEquals(String var0, String var1) { + return fold(var0).equals(fold(var1)); + } + + static double similarity(String var0, String var1) { + String var2 = null; + String var3 = null; + Set var4 = null; + HashSet var5 = null; + int var6 = 0; + Iterator var7 = null; + Object var8 = null; + int var9 = 1442511113; + + while (true) { + switch (var9) { + case -1790720365: + return 1.0; + case -1731706589: + return 0.85; + case -1346922902: + if (var3.contains(var2)) { + var9 = -1731706589; + } else { + var9 = 1718740120; + } + break; + case -1227263118: + var8 = (String)var7.next(); + if (var5.contains(var8)) { + var9 = -430365305; + } else { + var9 = 173868308; + } + break; + case -759046534: + if (var2.equals(var3)) { + var9 = -1790720365; + } else { + var9 = 423906647; + } + break; + case -430365305: + var6++; + var9 = 173868308; + break; + case 173868308: + var9 = 248548055; + break; + case 248548055: + if (var7.hasNext()) { + var9 = -1227263118; + } else { + var9 = 1179823297; + } + break; + case 256334727: + if (var3.isEmpty()) { + var9 = 1190624805; + } else { + var9 = -759046534; + } + break; + case 423906647: + if (!var2.contains(var3)) { + var9 = -1346922902; + } else { + var9 = -1731706589; + } + break; + case 1179823297: + var5.addAll(var4); + return (double)var6 / var5.size(); + case 1190624805: + return 0.0; + case 1442511113: + default: + var2 = fold(var0); + var3 = fold(var1); + if (!var2.isEmpty()) { + var9 = 256334727; + } else { + var9 = 1190624805; + } + break; + case 1718740120: + var4 = Set.of(var2.split(" ")); + var5 = new HashSet<>(Arrays.asList(var3.split(" "))); + var6 = 0; + var7 = var4.iterator(); + var9 = 248548055; + } + } + } +} diff --git a/src/main/java/defpackage/kr.java b/src/main/java/defpackage/kr.java new file mode 100644 index 0000000..cac0be7 --- /dev/null +++ b/src/main/java/defpackage/kr.java @@ -0,0 +1,4 @@ +package defpackage; + +record kr(String videoId, long durationSeconds) { +} diff --git a/src/main/java/defpackage/ks.java b/src/main/java/defpackage/ks.java new file mode 100644 index 0000000..b592777 --- /dev/null +++ b/src/main/java/defpackage/ks.java @@ -0,0 +1,825 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +final class ks { + private static final String API_ROOT = "https://music.youtube.com/youtubei/v1/"; + private static final String API_SUFFIX = "?prettyPrint=false"; + private static final String SEARCH = "search"; + private static final String NEXT = "next"; + private static final String BROWSE = "browse"; + private static final String SONGS_FILTER = "EgWKAQIIAWoKEAoQCRADEAQQBQ=="; + private static final String WEB_CLIENT_NAME = "WEB_REMIX"; + private static final String WEB_CLIENT_VERSION = "1.20250101.01.00"; + private static final String ANDROID_CLIENT_NAME = "ANDROID_MUSIC"; + private static final String ANDROID_CLIENT_VERSION = "7.27.52"; + private static final int ANDROID_SDK_VERSION = 34; + private static final String ANDROID_OS_NAME = "Android"; + private static final String ANDROID_OS_VERSION = "14"; + private static final String LANGUAGE = "en"; + private static final Map WEB_HEADERS = Map.of( + "User-Agent", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0 Safari/537.36", + "Origin", + "https://music.youtube.com" + ); + private static final Map ANDROID_HEADERS = Map.of( + "User-Agent", + "com.google.android.apps.youtube.music/7.27.52 (Linux; U; Android 14) gzip" + ); + private static final String LIST_ITEM = "musicResponsiveListItemRenderer"; + private static final String FLEX_COLUMNS = "flexColumns"; + private static final String FLEX_COLUMN = "musicResponsiveListItemFlexColumnRenderer"; + private static final String PLAYLIST_ITEM_DATA = "playlistItemData"; + private static final String VIDEO_ID = "videoId"; + private static final String TEXT = "text"; + private static final String RUNS = "runs"; + private static final String BROWSE_ID = "browseId"; + private static final String LYRICS_BROWSE_PREFIX = "MPLY"; + private static final String TIMED_LYRICS_DATA = "timedLyricsData"; + private static final String LYRIC_LINE = "lyricLine"; + private static final String CUE_RANGE = "cueRange"; + private static final String CUE_START = "startTimeMilliseconds"; + private static final String CUE_END = "endTimeMilliseconds"; + private static final String DESCRIPTION_SHELF = "musicDescriptionShelfRenderer"; + private static final String DESCRIPTION = "description"; + private static final String SUBTITLE_SEPARATOR = " • "; + private static final Pattern DURATION = Pattern.compile( + "(?:(\\d+):)?(\\d{1,2}):(\\d{2})" + ); + private static final long SECONDS_PER_MINUTE = 60L; + private static final long SECONDS_PER_HOUR = 3600L; + private static final int MAX_CANDIDATES = 6; + + private ks() { + } + + static kj find(kq var0) throws Exception { + if (var0.title().isEmpty()) { + return kj.NOT_FOUND; + } + + kr var1 = bestMatch(var0); + if (var1 == null) { + return kj.NOT_FOUND; + } + + kj var2 = timedLyrics(var1.videoId(), var1.durationSeconds()); + return var2.found() + ? var2 + : plainLyrics( + var1.videoId(), + var1.durationSeconds() > (988801974158876957L | -988801974158876957L) + (988801974158876957L & -988801974158876957L) + ? var1.durationSeconds() + : var0.durationSeconds() + ); + } + + private static kr bestMatch(kq var0) throws Exception { + JsonObject var1 = null; + String var2 = null; + ArrayList var3 = null; + kr var4 = null; + double var5 = 0.0; + int var7 = 0; + JsonObject var8 = null; + String var9 = null; + List var10 = null; + String var11 = null; + String var12 = null; + long var13 = (1424089656986925840L ^ -1424089656986925840L) + ((1424089656986925840L & -1424089656986925840L) << 1); + double var15 = 0.0; + String var18 = null; + String var19 = null; + int var17 = 1545481783; + + while (true) { + switch (var17) { + case -2016657324: + var19 = var11; + var17 = -254740838; + break; + case -1783362199: + return var4; + case -1754963082: + var5 = var15; + var4 = new kr(var9, var13); + var17 = -1633297638; + break; + case -1633297638: + var7++; + var17 = -768198150; + break; + case -1468946152: + var8 = (JsonObject)var3.get(var7); + var9 = videoId(var8); + var10 = columns(var8); + if (var9 != null) { + var17 = -1112963648; + } else { + var17 = -1633297638; + } + break; + case -1112963648: + if (var10.isEmpty()) { + var17 = 1534849345; + } else { + var17 = -648181835; + } + break; + case -768198150: + if (var7 < Math.min(var3.size(), (459853331 ^ -459853325) + ((459853331 & -459853325) << 1))) { + var17 = -1468946152; + } else { + var17 = -1783362199; + } + break; + case -716631911: + var11 = var18; + if (var11.contains(" • ")) { + var17 = 2007102741; + } else { + var17 = -2016657324; + } + break; + case -648181835: + if (var10.size() > (-258190333 ^ 258190334) + ((-258190333 & 258190334) << 1)) { + var17 = 1399069393; + } else { + var17 = 134154820; + } + break; + case -602958691: + var3 = new ArrayList(); + collect( + JsonParser.parseString(var2), + "musicResponsiveListItemRenderer", + var3 + ); + var4 = null; + var5 = 0.6; + var7 = 0; + var17 = -768198150; + break; + case -254740838: + var12 = var19; + var13 = parseDuration(var11); + var15 = km.score((String)var10.get((1772227182 | -1772227182) + (1772227182 & -1772227182)), var12, var13, var0); + if (var15 > var5) { + var17 = -1754963082; + } else { + var17 = -1633297638; + } + break; + case 134154820: + var18 = ""; + var17 = -716631911; + break; + case 1002967044: + return null; + case 1399069393: + var18 = (String)var10.get((124186590 ^ -124186589) + ((124186590 & -124186589) << 1)); + var17 = -716631911; + break; + case 1534849345: + var17 = -1633297638; + break; + case 1545481783: + default: + var1 = request(webClient()); + var1.addProperty("query", var0.searchText()); + var1.addProperty( + "params", + "EgWKAQIIAWoKEAoQCRADEAQQBQ==" + ); + var2 = kd.postJson( + "https://music.youtube.com/youtubei/v1/search?prettyPrint=false", + WEB_HEADERS, + var1.toString() + ); + if (var2 == null) { + var17 = 1002967044; + } else { + var17 = -602958691; + } + break; + case 2007102741: + var19 = var11.substring( + 0, + var11.indexOf(" • ") + ); + var17 = -254740838; + } + } + } + + private static kj timedLyrics(String var0, long var1) throws Exception { + String var3 = null; + JsonObject var4 = null; + String var5 = null; + ArrayList var6 = null; + JsonArray var7 = null; + ArrayList var8 = null; + Iterator var9 = null; + JsonElement var10 = null; + JsonObject var11 = null; + String var12 = null; + JsonObject var13 = null; + String var14 = null; + long var15 = (8727332238209521601L ^ -8727332238209521601L) + ((8727332238209521601L & -8727332238209521601L) << 1); + long var17 = (-1890793325750525936L | 1890793325750525936L) + (-1890793325750525936L & 1890793325750525936L); + kj var20 = null; + int var19 = 243044770; + + while (true) { + switch (var19) { + case -1985182978: + if (var13 == null) { + var19 = -189691593; + } else { + var19 = 360524339; + } + break; + case -1869941262: + return var20; + case -1585507223: + var10 = (JsonElement)var9.next(); + if (!var10.isJsonObject()) { + var19 = 993515598; + } else { + var19 = 163159014; + } + break; + case -1349912486: + var20 = kj.NOT_FOUND; + var19 = -1869941262; + break; + case -1347160833: + var19 = -97484671; + break; + case -1136397768: + return kj.NOT_FOUND; + case -850610258: + var4 = request(androidClient()); + var4.addProperty("browseId", var3); + var5 = kd.postJson( + "https://music.youtube.com/youtubei/v1/browse?prettyPrint=false", + ANDROID_HEADERS, + var4.toString() + ); + if (var5 == null) { + var19 = 708916987; + } else { + var19 = 520269916; + } + break; + case -189691593: + var19 = -97484671; + break; + case -128802246: + var8.add(new kb(var15, var17, var14)); + var19 = -1347160833; + break; + case -97484671: + if (var9.hasNext()) { + var19 = -1585507223; + } else { + var19 = 524115468; + } + break; + case 163159014: + var11 = var10.getAsJsonObject(); + var12 = string(var11, "lyricLine"); + var13 = var11.getAsJsonObject("cueRange"); + if (var12 != null) { + var19 = -1985182978; + } else { + var19 = -97484671; + } + break; + case 243044770: + default: + var3 = lyricsBrowseId(androidClient(), ANDROID_HEADERS, var0); + if (var3 == null) { + var19 = -1136397768; + } else { + var19 = -850610258; + } + break; + case 360524339: + var14 = var12.strip(); + var15 = parseLong( + string(var13, "startTimeMilliseconds") + ); + var17 = parseLong(string(var13, "endTimeMilliseconds")); + if (!var14.isEmpty()) { + var19 = 1304947350; + } else { + var19 = -1347160833; + } + break; + case 520269916: + var6 = new ArrayList(); + collectOwners( + JsonParser.parseString(var5), "timedLyricsData", var6 + ); + if (var6.isEmpty()) { + var19 = 1330647996; + } else { + var19 = 1855322678; + } + break; + case 524115468: + if (var8.isEmpty()) { + var19 = -1349912486; + } else { + var19 = 1610497505; + } + break; + case 708916987: + return kj.NOT_FOUND; + case 993515598: + var19 = -97484671; + break; + case 1304947350: + if (var17 > var15) { + var19 = -128802246; + } else { + var19 = -1347160833; + } + break; + case 1330647996: + return kj.NOT_FOUND; + case 1610497505: + var20 = new kj(new kp(List.copyOf(var8)), ke.YOUTUBE_MUSIC, var1); + var19 = -1869941262; + break; + case 1855322678: + var7 = ((JsonObject)var6.get((-1546381584 | 1546381584) + (-1546381584 & 1546381584))) + .getAsJsonArray("timedLyricsData"); + var8 = new ArrayList(var7.size()); + var9 = var7.iterator(); + var19 = -97484671; + } + } + } + + private static kj plainLyrics(String var0, long var1) throws Exception { + String var3 = null; + JsonObject var4 = null; + String var5 = null; + ArrayList var6 = null; + String var7 = null; + kp var8 = null; + kj var10 = null; + int var9 = -1868934655; + + while (true) { + switch (var9) { + case -1868934655: + default: + var3 = lyricsBrowseId(webClient(), WEB_HEADERS, var0); + if (var3 == null) { + var9 = 329527334; + } else { + var9 = 1375067676; + } + break; + case -1838671582: + var10 = kj.NOT_FOUND; + var9 = 878153729; + break; + case -1738496853: + var10 = new kj(var8, ke.YOUTUBE_MUSIC_ESTIMATED, var1); + var9 = 878153729; + break; + case -1235403965: + var6 = new ArrayList(); + collect( + JsonParser.parseString(var5), + "musicDescriptionShelfRenderer", + var6 + ); + if (var6.isEmpty()) { + var9 = 2028602256; + } else { + var9 = -485899714; + } + break; + case -485899714: + var7 = runs( + ((JsonObject)var6.get((2071567892 ^ -2071567892) + ((2071567892 & -2071567892) << 1))) + .getAsJsonObject("description") + ); + var8 = ko.estimate(var7, var1); + if (var8.isEmpty()) { + var9 = -1838671582; + } else { + var9 = -1738496853; + } + break; + case 329527334: + return kj.NOT_FOUND; + case 878153729: + return var10; + case 1221595539: + return kj.NOT_FOUND; + case 1375067676: + var4 = request(webClient()); + var4.addProperty("browseId", var3); + var5 = kd.postJson( + "https://music.youtube.com/youtubei/v1/browse?prettyPrint=false", + WEB_HEADERS, + var4.toString() + ); + if (var5 == null) { + var9 = 1221595539; + } else { + var9 = -1235403965; + } + break; + case 2028602256: + return kj.NOT_FOUND; + } + } + } + + private static String lyricsBrowseId(JsonObject var0, Map var1, String var2) throws Exception { + JsonObject var3 = null; + String var4 = null; + String var6 = null; + int var5 = 722097675; + + while (true) { + switch (var5) { + case -1151384454: + var6 = findLyricsBrowseId(JsonParser.parseString(var4)); + var5 = 1317137925; + break; + case 136368846: + var6 = null; + var5 = 1317137925; + break; + case 722097675: + default: + var3 = request(var0); + var3.addProperty("videoId", var2); + var4 = kd.postJson( + "https://music.youtube.com/youtubei/v1/next?prettyPrint=false", + var1, + var3.toString() + ); + if (var4 == null) { + var5 = 136368846; + } else { + var5 = -1151384454; + } + break; + case 1317137925: + return var6; + } + } + } + + private static String findLyricsBrowseId(JsonElement var0) { + if (var0.isJsonObject()) { + JsonObject var1 = var0.getAsJsonObject(); + String var2 = string(var1, "browseId"); + if (var2 != null && var2.startsWith("MPLY")) { + return var2; + } + + for (Entry var4 : var1.entrySet()) { + String var5 = findLyricsBrowseId((JsonElement)var4.getValue()); + if (var5 != null) { + return var5; + } + } + } else if (var0.isJsonArray()) { + for (JsonElement var7 : var0.getAsJsonArray()) { + String var8 = findLyricsBrowseId(var7); + if (var8 != null) { + return var8; + } + } + } + + return null; + } + + private static void collect(JsonElement var0, String var1, List var2) { + if (var0.isJsonObject()) { + JsonObject var3 = var0.getAsJsonObject(); + JsonElement var4 = var3.get(var1); + if (var4 != null && var4.isJsonObject()) { + var2.add(var4.getAsJsonObject()); + } + + for (Entry var6 : var3.entrySet()) { + collect((JsonElement)var6.getValue(), var1, var2); + } + } else if (var0.isJsonArray()) { + for (JsonElement var8 : var0.getAsJsonArray()) { + collect(var8, var1, var2); + } + } + } + + private static void collectOwners(JsonElement var0, String var1, List var2) { + if (var0.isJsonObject()) { + JsonObject var3 = var0.getAsJsonObject(); + JsonElement var4 = var3.get(var1); + if (var4 != null && var4.isJsonArray()) { + var2.add(var3); + return; + } + + for (Entry var6 : var3.entrySet()) { + collectOwners((JsonElement)var6.getValue(), var1, var2); + } + } else if (var0.isJsonArray()) { + for (JsonElement var8 : var0.getAsJsonArray()) { + collectOwners(var8, var1, var2); + } + } + } + + private static String videoId(JsonObject var0) { + JsonObject var1 = null; + String var3 = null; + int var2 = 1418839471; + + while (true) { + switch (var2) { + case -1312505906: + var3 = null; + var2 = 2024835744; + break; + case 1418839471: + default: + var1 = var0.getAsJsonObject("playlistItemData"); + if (var1 == null) { + var2 = -1312505906; + } else { + var2 = 1492937038; + } + break; + case 1492937038: + var3 = string(var1, "videoId"); + var2 = 2024835744; + break; + case 2024835744: + return var3; + } + } + } + + private static List columns(JsonObject var0) { + ArrayList var1 = new ArrayList(); + JsonArray var2 = var0.getAsJsonArray("flexColumns"); + if (var2 == null) { + return var1; + } + + for (JsonElement var4 : var2) { + if (var4.isJsonObject()) { + JsonObject var5 = var4.getAsJsonObject() + .getAsJsonObject( + "musicResponsiveListItemFlexColumnRenderer" + ); + var1.add(var5 == null ? "" : runs(var5.getAsJsonObject("text"))); + } + } + + return var1; + } + + private static String runs(JsonObject var0) { + JsonArray var1 = null; + StringBuilder var2 = null; + Iterator var3 = null; + JsonElement var4 = null; + String var5 = null; + int var6 = -1334607236; + + while (true) { + switch (var6) { + case -1622427660: + return ""; + case -1544133953: + var5 = string(var4.getAsJsonObject(), "text"); + if (var5 != null) { + var6 = 1253113510; + } else { + var6 = 1735725968; + } + break; + case -1374271609: + if (var3.hasNext()) { + var6 = 159204359; + } else { + var6 = -858011927; + } + break; + case -1334607236: + default: + if (var0 == null) { + var6 = -1032634022; + } else { + var6 = 1321605877; + } + break; + case -1032634022: + return ""; + case -1014755691: + var2 = new StringBuilder(); + var3 = var1.iterator(); + var6 = -1374271609; + break; + case -858011927: + return var2.toString(); + case 159204359: + var4 = (JsonElement)var3.next(); + if (var4.isJsonObject()) { + var6 = -1544133953; + } else { + var6 = 1735725968; + } + break; + case 1253113510: + var2.append(var5); + var6 = 1735725968; + break; + case 1321605877: + var1 = var0.getAsJsonArray("runs"); + if (var1 == null) { + var6 = -1622427660; + } else { + var6 = -1014755691; + } + break; + case 1735725968: + var6 = -1374271609; + } + } + } + + private static long parseDuration(String var0) { + Matcher var1 = null; + long var2 = (-1139838498830698860L ^ 1139838498830698860L) + ((-1139838498830698860L & 1139838498830698860L) << 1); + long var4 = (6470999122821101760L | -6470999122821101760L) + (6470999122821101760L & -6470999122821101760L); + long var7 = (-7964917635703927787L | 7964917635703927787L) + (-7964917635703927787L & 7964917635703927787L); + int var6 = 1284597459; + + while (true) { + switch (var6) { + case -1544101481: + var7 = Long.parseLong(var1.group((-1092424985 ^ 1092424986) + ((-1092424985 & 1092424986) << 1))); + var6 = -572830624; + break; + case -1459274264: + if (var1.group((-1770273765 ^ 1770273766) + ((-1770273765 & 1770273766) << 1)) == null) { + var6 = -633024904; + } else { + var6 = -1544101481; + } + break; + case -913504922: + return var2; + case -633024904: + var7 = (4467680951021278690L ^ -4467680951021278690L) + ((4467680951021278690L & -4467680951021278690L) << 1); + var6 = -572830624; + break; + case -572830624: + var4 = var7; + var2 = var4 * ((-1816039996991491749L ^ 1816039996991495349L) + ((-1816039996991491749L & 1816039996991495349L) << 1)) + + Long.parseLong(var1.group((200487946 | -200487944) + (200487946 & -200487944))) + * ((900521912537841106L | -900521912537841046L) + (900521912537841106L & -900521912537841046L)) + + Long.parseLong(var1.group((222421917 | -222421914) + (222421917 & -222421914))); + var6 = 763399021; + break; + case 763399021: + if (var1.find()) { + var6 = -1459274264; + } else { + var6 = -913504922; + } + break; + case 1284597459: + default: + var1 = DURATION.matcher(var0); + var2 = (-3103027090911417516L | 3103027090911417516L) + (-3103027090911417516L & 3103027090911417516L); + var6 = 763399021; + } + } + } + + private static long parseLong(String var0) { + if (var0 == null) { + return (-739045116712577878L | 739045116712577878L) + (-739045116712577878L & 739045116712577878L); + } + + try { + return Long.parseLong(var0.strip()); + } catch (NumberFormatException var2) { + return (-9214930774232220510L ^ 9214930774232220510L) + ((-9214930774232220510L & 9214930774232220510L) << 1); + } + } + + private static String string(JsonObject var0, String var1) { + JsonElement var2 = null; + String var4 = null; + int var3 = 1800840306; + + while (true) { + switch (var3) { + case -1882725623: + var4 = var2.getAsString(); + var3 = 1542056835; + break; + case -292650203: + var4 = null; + var3 = 1542056835; + break; + case 1542056835: + return var4; + case 1800840306: + default: + var2 = var0.get(var1); + if (var2 != null) { + var3 = 2034843473; + } else { + var3 = -292650203; + } + break; + case 2034843473: + if (!var2.isJsonPrimitive()) { + var3 = -292650203; + } else { + var3 = -1882725623; + } + } + } + } + + private static JsonObject request(JsonObject var0) { + JsonObject var1 = new JsonObject(); + var1.add("client", var0); + JsonObject var2 = new JsonObject(); + var2.add("context", var1); + return var2; + } + + private static JsonObject webClient() { + JsonObject var0 = new JsonObject(); + var0.addProperty( + "clientName", + "WEB_REMIX" + ); + var0.addProperty( + "clientVersion", + "1.20250101.01.00" + ); + var0.addProperty( + "hl", "en" + ); + return var0; + } + + private static JsonObject androidClient() { + JsonObject var0 = new JsonObject(); + var0.addProperty( + "clientName", + "ANDROID_MUSIC" + ); + var0.addProperty( + "clientVersion", + "7.27.52" + ); + var0.addProperty( + "androidSdkVersion", (-455257747 | 455257781) + (-455257747 & 455257781) + ); + var0.addProperty( + "osName", + "Android" + ); + var0.addProperty( + "osVersion", + "14" + ); + var0.addProperty( + "hl", "en" + ); + return var0; + } +} diff --git a/src/main/java/defpackage/kt.java b/src/main/java/defpackage/kt.java new file mode 100644 index 0000000..5cad89c --- /dev/null +++ b/src/main/java/defpackage/kt.java @@ -0,0 +1,175 @@ +package defpackage; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +final class kt { + private static final Pattern BLOCKED = Pattern.compile( + "(?iu)субтитр|продолжение следует|редактор|корректор|подпис(ывай|ать)ся|ставьте лайк|спасибо за просмотр|thanks? for watching|subscribe|subtitles? by|amara\\.org|www\\.|\\.com|\\.ru|dimatorzok" + ); + private static final Pattern NON_SPEECH = Pattern.compile( + "^[\\s\\p{Punct}♪♫♬*…\\-–—]*$" + ); + private static final Pattern BRACKETED = Pattern.compile( + "^\\s*[\\[(*♪].*[\\])*♪]\\s*$" + ); + private static final Pattern WORDS = Pattern.compile("[\\p{L}\\p{N}]+"); + private static final int MIN_LETTERS = 2; + private static final int MAX_REPEAT_RUN = 4; + + private kt() { + } + + static String clean(String var0) { + String var1 = null; + int var2 = 0; + int var3 = 0; + int var4 = -269950320; + + while (true) { + switch (var4) { + case -1399775916: + if (var3 < var1.length()) { + var4 = 98589448; + } else { + var4 = 122280939; + } + break; + case -1194994447: + return var1; + case -987805543: + if (repeats(var1)) { + var4 = -277839790; + } else { + var4 = -1194994447; + } + break; + case -923820393: + var2 = 0; + var3 = 0; + var4 = -1399775916; + break; + case -914357710: + if (BLOCKED.matcher(var1).find()) { + var4 = -620942555; + } else { + var4 = -923820393; + } + break; + case -665468123: + var2++; + var4 = -32050949; + break; + case -640701054: + if (!BRACKETED.matcher(var1).matches()) { + var4 = -914357710; + } else { + var4 = -620942555; + } + break; + case -620942555: + return ""; + case -277839790: + return ""; + case -269950320: + default: + if (var0 == null) { + var4 = 1965759579; + } else { + var4 = 1254131613; + } + break; + case -32050949: + var3++; + var4 = -1399775916; + break; + case 98589448: + if (Character.isLetter(var1.charAt(var3))) { + var4 = -665468123; + } else { + var4 = -32050949; + } + break; + case 122280939: + if (var2 >= (-1431921390 ^ 1431921392) + ((-1431921390 & 1431921392) << 1)) { + var4 = -987805543; + } else { + var4 = -277839790; + } + break; + case 1254131613: + var1 = var0.replace( + (char)(10), (char)((1568983062 ^ -1568983030) + ((1568983062 & -1568983030) << 1)) + ) + .strip(); + if (!var1.isEmpty()) { + var4 = 1971460281; + } else { + var4 = -620942555; + } + break; + case 1965759579: + return ""; + case 1971460281: + if (!NON_SPEECH.matcher(var1).matches()) { + var4 = -640701054; + } else { + var4 = -620942555; + } + } + } + } + + private static boolean repeats(String var0) { + Matcher var1 = null; + String var2 = null; + int var3 = 0; + String var4 = null; + int var5 = -2123871340; + + while (true) { + switch (var5) { + case -2123871340: + default: + var1 = WORDS.matcher(var0.toLowerCase()); + var2 = null; + var3 = 1; + var5 = 1439705574; + break; + case -1275274385: + if (++var3 > (-1524509122 ^ 1524509126) + ((-1524509122 & 1524509126) << 1)) { + var5 = 1208337181; + } else { + var5 = 993568147; + } + break; + case -90257502: + return (boolean)(((0)) != 0); + case 993568147: + var5 = 1439705574; + break; + case 1208337181: + return (boolean)(((1)) != 0); + case 1439705574: + if (var1.find()) { + var5 = 1603958787; + } else { + var5 = -90257502; + } + break; + case 1533740387: + var3 = 1; + var2 = var4; + var5 = 993568147; + break; + case 1603958787: + var4 = var1.group(); + if (var4.equals(var2)) { + var5 = -1275274385; + } else { + var5 = 1533740387; + } + } + } + } +} diff --git a/src/main/java/defpackage/ku.java b/src/main/java/defpackage/ku.java new file mode 100644 index 0000000..aaff562 --- /dev/null +++ b/src/main/java/defpackage/ku.java @@ -0,0 +1,89 @@ +package defpackage; + +final class ku { + private final int targetRate; + private int sourceRate; + private double step; + private double phase; + private double accumulator; + private int accumulated; + + ku(int var1) { + this.targetRate = var1; + } + + int process(float[] var1, int var2, int var3, int var4, float[] var5, int var6, int var7) { + int var8 = 0; + int var9 = 0; + int var10 = -858407710; + + while (true) { + switch (var10) { + case -1743991356: + this.sourceRate = var4; + this.step = (double)var4 / this.targetRate; + this.phase = 0.0; + this.accumulator = 0.0; + this.accumulated = 0; + var10 = 2044597964; + break; + case -1437640599: + var9++; + var10 = -1069274116; + break; + case -1408981096: + this.accumulator = this.accumulator + var1[var2 + var9]; + this.accumulated += 1; + this.phase++; + if (this.phase >= this.step) { + var10 = -601223025; + } else { + var10 = -1437640599; + } + break; + case -1275320878: + if (var8 < var7) { + var10 = -1408981096; + } else { + var10 = -170418522; + } + break; + case -1069274116: + if (var9 < var3) { + var10 = -1275320878; + } else { + var10 = -170418522; + } + break; + case -858407710: + default: + if (var4 != this.sourceRate) { + var10 = -1743991356; + } else { + var10 = 2044597964; + } + break; + case -601223025: + this.phase = this.phase - this.step; + var5[var6 + var8] = (float)(this.accumulator / this.accumulated); + var8++; + this.accumulator = 0.0; + this.accumulated = 0; + var10 = -1437640599; + break; + case -170418522: + return var8; + case 2044597964: + var8 = 0; + var9 = 0; + var10 = -1069274116; + } + } + } + + void reset() { + this.phase = 0.0; + this.accumulator = 0.0; + this.accumulated = 0; + } +} diff --git a/src/main/java/defpackage/kv.java b/src/main/java/defpackage/kv.java new file mode 100644 index 0000000..85f5760 --- /dev/null +++ b/src/main/java/defpackage/kv.java @@ -0,0 +1,4 @@ +package defpackage; + +public record kv(long sequence, String trackKey, String text, long startNanos, long endNanos) { +} diff --git a/src/main/java/defpackage/kw.java b/src/main/java/defpackage/kw.java new file mode 100644 index 0000000..441230e --- /dev/null +++ b/src/main/java/defpackage/kw.java @@ -0,0 +1,49 @@ +package defpackage; + +import com.sun.management.HotSpotDiagnosticMXBean; +import java.lang.management.ManagementFactory; +import java.util.Locale; + +final class kw { + private static final String ARCH_PROPERTY = "os.arch"; + private static final String ARCH_AMD64 = "amd64"; + private static final String ARCH_X86_64 = "x86_64"; + private static final String AVX_OPTION = "UseAVX"; + private static final int REQUIRED_AVX_LEVEL = 2; + private static final String PROBE_FAILURE = "Whisper CPU probe failed"; + private static final String MISSING_AVX2 = "Whisper disabled: CPU lacks AVX2 (UseAVX={})"; + private static final boolean SUPPORTED = probe(); + + private kw() { + } + + static boolean isSupported() { + return SUPPORTED; + } + + private static boolean probe() { + String var0 = System.getProperty("os.arch", "").toLowerCase(Locale.ROOT); + if (!var0.equals("amd64") + && !var0.equals("x86_64")) { + return (boolean)(((1)) != 0); + } + + try { + HotSpotDiagnosticMXBean var1 = ManagementFactory.getPlatformMXBean(HotSpotDiagnosticMXBean.class); + int var2 = Integer.parseInt(var1.getVMOption("UseAVX").getValue()); + if (var2 < (-502497963 ^ 502497965) + ((-502497963 & 502497965) << 1)) { + id.warn( + Cif.MEDIA, + "Whisper disabled: CPU lacks AVX2 (UseAVX={})", + var2 + ); + return (boolean)(((0)) != 0); + } else { + return (boolean)(((1)) != 0); + } + } catch (Throwable var3) { + id.warn(Cif.MEDIA, "Whisper CPU probe failed", var3); + return (boolean)(((0)) != 0); + } + } +} diff --git a/src/main/java/defpackage/kx.java b/src/main/java/defpackage/kx.java new file mode 100644 index 0000000..f91fe42 --- /dev/null +++ b/src/main/java/defpackage/kx.java @@ -0,0 +1,92 @@ +package defpackage; + +public enum kx { + BASE( + "Base", + "ggml-base-q5_1.bin", + (-9084261024852471248L | 9084261024912178873L) + (-9084261024852471248L & 9084261024912178873L), + "422f1ae452ade6f30a004d7e5c6a43195e4433bc370bf23fac9cc591f01a8898" + ), + SMALL( + "Small", + "ggml-small-q5_1.bin", + (-7892568034821801327L | 7892568035011886814L) + (-7892568034821801327L & 7892568035011886814L), + "ae85e4a935d7a567bd102fe55afc16bb595bdb618e11b2fc7591bc08120411bb" + ); + + private static final String DOWNLOAD_ROOT = "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/"; + private final String label; + private final String fileName; + private final long sizeBytes; + private final String sha256; + + kx(String var3, String var4, long var5, String var7) { + this.label = var3; + this.fileName = var4; + this.sizeBytes = var5; + this.sha256 = var7; + } + + public String label() { + return this.label; + } + + public String fileName() { + return this.fileName; + } + + public long sizeBytes() { + return this.sizeBytes; + } + + public String sha256() { + return this.sha256; + } + + public String downloadUrl() { + return "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/" + this.fileName; + } + + public static kx byLabel(String var0) { + kx[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = 832839962; + + while (true) { + switch (var5) { + case -1708898469: + var4 = var1[var3]; + if (((kx)var4).label.equals(var0)) { + var5 = 1189891433; + } else { + var5 = -858213682; + } + break; + case -1130583569: + if (var3 < var2) { + var5 = -1708898469; + } else { + var5 = 904832399; + } + break; + case -858213682: + var3++; + var5 = -1130583569; + break; + case 832839962: + default: + var1 = values(); + var2 = var1.length; + var3 = 0; + var5 = -1130583569; + break; + case 904832399: + return BASE; + case 1189891433: + return (kx)var4; + } + } + } +} diff --git a/src/main/java/defpackage/ky.java b/src/main/java/defpackage/ky.java new file mode 100644 index 0000000..79c591b --- /dev/null +++ b/src/main/java/defpackage/ky.java @@ -0,0 +1,118 @@ +package defpackage; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URI; +import java.nio.file.CopyOption; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.security.MessageDigest; +import java.util.HexFormat; +import java.util.function.LongConsumer; + +final class ky { + private static final String MODEL_DIRECTORY = "whisper"; + private static final String PART_EXTENSION = ".part"; + private static final String DIGEST_ALGORITHM = "SHA-256"; + private static final String USER_AGENT_HEADER = "User-Agent"; + private static final String USER_AGENT = "EvoVis"; + private static final int CONNECT_TIMEOUT_MILLIS = 10000; + private static final int READ_TIMEOUT_MILLIS = 30000; + private static final int BUFFER_BYTES = 65536; + private static final String SIZE_MISMATCH = "Model size mismatch: expected %d, got %d"; + private static final String HASH_MISMATCH = "Model checksum mismatch"; + private static final String HTTP_FAILURE = "Model download failed: HTTP %d"; + + private ky() { + } + + static Path resolve(kx var0) { + return bz.DIRECTORY.toPath().resolve("whisper").resolve(var0.fileName()); + } + + static boolean isInstalled(kx var0) { + Path var1 = resolve(var0); + + try { + return (boolean)(((Files.isRegularFile(var1) && Files.size(var1) == var0.sizeBytes() + ? 1: (-924190948 ^ 924190948) + ((-924190948 & 924190948) << 1))) != 0); + } catch (IOException var3) { + return (boolean)(((0)) != 0); + } + } + + static Path ensure(kx var0, LongConsumer var1) throws Exception { + Path var2 = resolve(var0); + if (isInstalled(var0)) { + return var2; + } + + Files.createDirectories(var2.getParent()); + Path var3 = var2.resolveSibling(var0.fileName() + ".part"); + MessageDigest var4 = MessageDigest.getInstance("SHA-256"); + HttpURLConnection var5 = (HttpURLConnection)URI.create(var0.downloadUrl()).toURL().openConnection(); + long var6 = (7517847610794281942L ^ -7517847610794281942L) + ((7517847610794281942L & -7517847610794281942L) << 1); + + try { + var5.setInstanceFollowRedirects((boolean)((((-2095942728 ^ 2095942729) + ((-2095942728 & 2095942729) << 1))) != 0)); + var5.setConnectTimeout((-1446327856 ^ 1446337856) + ((-1446327856 & 1446337856) << 1)); + var5.setReadTimeout((-1851610447 | 1851640447) + (-1851610447 & 1851640447)); + var5.setRequestProperty( + "User-Agent", + "EvoVis" + ); + int var8 = var5.getResponseCode(); + if (var8 != (-2043159167 ^ 2043159367) + ((-2043159167 & 2043159367) << 1)) { + String var28 = "Model download failed: HTTP %d"; + Object[] var29 = new Object[1]; + var29[0] = var8; + throw new IOException(String.format(var28, var29)); + } + + byte[] var9 = new byte[65536]; + + int var12; + try ( + InputStream var10 = var5.getInputStream(); + OutputStream var11 = Files.newOutputStream(var3); + ) { + while ((var12 = var10.read(var9)) >= 0) { + if (Thread.currentThread().isInterrupted()) { + throw new InterruptedException(); + } + + var11.write(var9, 0, var12); + var4.update(var9, 0, var12); + var6 += var12; + var1.accept(var6); + } + } + } catch (Exception var25) { + Files.deleteIfExists(var3); + throw var25; + } finally { + var5.disconnect(); + } + + if (var6 != var0.sizeBytes()) { + Files.deleteIfExists(var3); + String var27 = "Model size mismatch: expected %d, got %d"; + Object[] var10003 = new Object[2]; + var10003[0] = var0.sizeBytes(); + var10003[1] = var6; + throw new IOException(String.format(var27, var10003)); + } else if (!HexFormat.of().formatHex(var4.digest()).equalsIgnoreCase(var0.sha256())) { + Files.deleteIfExists(var3); + throw new IOException("Model checksum mismatch"); + } else { + CopyOption[] var10002 = new CopyOption[2]; + var10002[0] = StandardCopyOption.REPLACE_EXISTING; + var10002[1] = StandardCopyOption.ATOMIC_MOVE; + Files.move(var3, var2, var10002); + return var2; + } + } +} diff --git a/src/main/java/defpackage/kz.java b/src/main/java/defpackage/kz.java new file mode 100644 index 0000000..9104c03 --- /dev/null +++ b/src/main/java/defpackage/kz.java @@ -0,0 +1,45 @@ +package defpackage; + +final class kz { + String trackKey; + int length; + long startNanos; + + kz(String trackKey, int length, long startNanos) { + this.trackKey = trackKey; + this.length = length; + this.startNanos = startNanos; + } + + public String trackKey() { + return this.trackKey; + } + public int length() { + return this.length; + } + public long startNanos() { + return this.startNanos; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof kz that)) { + return false; + } + if (!java.util.Objects.equals(this.trackKey, that.trackKey)) { return false; } + if (this.length != that.length) { return false; } + if (this.startNanos != that.startNanos) { return false; } + return true; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(this.trackKey, this.length, this.startNanos); + } + + @Override + public String toString() { + return "kz[" + "trackKey=" + this.trackKey + ", " + "length=" + this.length + ", " + "startNanos=" + this.startNanos + "]"; + } + +} diff --git a/src/main/java/defpackage/l.java b/src/main/java/defpackage/l.java new file mode 100644 index 0000000..862b26b --- /dev/null +++ b/src/main/java/defpackage/l.java @@ -0,0 +1,7 @@ +package defpackage; + +public interface l { + boolean isCancelled(); + + void setCancelled(boolean var1); +} diff --git a/src/main/java/defpackage/la.java b/src/main/java/defpackage/la.java new file mode 100644 index 0000000..3ee769c --- /dev/null +++ b/src/main/java/defpackage/la.java @@ -0,0 +1,10 @@ +package defpackage; + +public enum la { + IDLE, + DOWNLOADING, + LOADING, + LISTENING, + FAILED, + UNSUPPORTED_CPU; +} diff --git a/src/main/java/defpackage/lb.java b/src/main/java/defpackage/lb.java new file mode 100644 index 0000000..b1b69c9 --- /dev/null +++ b/src/main/java/defpackage/lb.java @@ -0,0 +1,491 @@ +package defpackage; + +import io.github.givimad.whisperjni.WhisperContext; +import io.github.givimad.whisperjni.WhisperFullParams; +import io.github.givimad.whisperjni.WhisperJNI; +import io.github.givimad.whisperjni.WhisperSamplingStrategy; +import java.io.IOException; +import java.nio.file.Path; +import java.util.ArrayDeque; +import java.util.Deque; +import java.util.concurrent.atomic.AtomicBoolean; + +public final class lb implements jl { + private static final lb INSTANCE = new lb(); + private static final int SAMPLE_RATE = 16000; + private static final int RING_SECONDS = 30; + private static final int RING_SAMPLES = 480000; + private static final int MIN_CHUNK_SAMPLES = 64000; + private static final int MAX_CHUNK_SAMPLES = 112000; + private static final int CUT_FRAME_SAMPLES = 1333; + private static final int RESAMPLE_SCRATCH = 8192; + private static final long NANOS_PER_SECOND = 1000000000L; + private static final long NANOS_PER_CENTISECOND = 10000000L; + private static final long IDLE_UNLOAD_NANOS = 20000000000L; + private static final long WAIT_MILLIS = 120L; + private static final float SILENCE_RMS = 0.006F; + private static final float TARGET_PEAK = 0.9F; + private static final float MAX_GAIN = 8.0F; + private static final float NO_SPEECH_THRESHOLD = 0.6F; + private static final int MAX_QUEUED_SEGMENTS = 32; + private static final int MAX_WORKER_THREADS = 4; + private static final int RESERVED_CORES = 2; + private static final String THREAD_NAME = "EvoVis-Whisper"; + private static final String AUTO_LANGUAGE = "auto"; + private static final String LOAD_FAILURE = "Whisper could not start"; + private static final String CHUNK_FAILURE = "Whisper chunk failed with code {}"; + private static final String READY = "Whisper model {} ready"; + private static boolean nativeLoaded; + private final Object lock = new Object(); + private final float[] ring = new float[480000]; + private final float[] resampled = new float[8192]; + private final float[] chunk = new float[112000]; + private final ku resampler = new ku((-1864343406 | 1864359406) + (-1864343406 & 1864359406)); + private final Deque segments = new ArrayDeque<>(); + private final AtomicBoolean running = new AtomicBoolean(); + private long writtenSamples; + private long consumedSamples; + private long lastSampleNanos; + private long sequence; + private String trackKey = ""; + private volatile la state = la.IDLE; + private volatile float downloadProgress; + private volatile long lastRequestNanos; + private volatile kx requestedModel = kx.BASE; + private volatile String requestedLanguage = "auto"; + + private lb() { + } + + public static lb getInstance() { + return INSTANCE; + } + + public la state() { + return this.state; + } + + public float downloadProgress() { + return this.downloadProgress; + } + + public void request(String var1, kx var2, String var3) { + if (!kw.isSupported()) { + this.state = la.UNSUPPORTED_CPU; + } else { + this.lastRequestNanos = System.nanoTime(); + this.requestedLanguage = var3 != null && !var3.isEmpty() ? var3 : "auto"; + synchronized (this.lock) { + if (!var1.equals(this.trackKey)) { + this.trackKey = var1; + this.consumedSamples = this.writtenSamples; + this.resampler.reset(); + } + } + + if (var2 != this.requestedModel) { + this.requestedModel = var2; + if (this.running.get()) { + this.state = la.LOADING; + } + } + + in var7 = in.getInstance(); + var7.setPcmSink(this); + var7.requestUpdates(); + if (this.running + .compareAndSet( + (boolean)((((0)) != 0)), (boolean)((((-1625807854 ^ 1625807855) + ((-1625807854 & 1625807855) << 1)) + ) != 0))) { + Thread var5 = new Thread(this::run, "EvoVis-Whisper"); + var5.setDaemon((boolean)((((1302323189 ^ -1302323188) + ((1302323189 & -1302323188) << 1))) != 0)); + var5.setPriority((-177249777 | 177249778) + (-177249777 & 177249778)); + var5.start(); + } + } + } + + public kv poll(long var1) { + synchronized (this.lock) { + for (kv var5 : this.segments) { + if (var5.sequence() > var1) { + return var5; + } + } + + return null; + } + } + + @Override + public void accept(float[] var1, int var2, int var3) { + if (this.running.get() && var3 > 0) { + long var4 = System.nanoTime(); + int var6 = 0; + + while (var6 < var2) { + int var7 = Math.min(var2 - var6, (260273738 | -260265546) + (260273738 & -260265546)); + int var8 = this.resampler + .process( + var1, + var6, + var7, + var3, + this.resampled, + 0, + (-754842184 | 754850376) + (-754842184 & 754850376) + ); + synchronized (this.lock) { + for (int var10 = 0; var10 < var8; var10++) { + this.ring[(int)( + this.writtenSamples % ((3151285335762570963L ^ -3151285335762090963L) + ((3151285335762570963L & -3151285335762090963L) << 1)) + )] = this.resampled[var10]; + this.writtenSamples += (6195678795458094107L ^ -6195678795458094106L) + ((6195678795458094107L & -6195678795458094106L) << 1); + } + + if (this.writtenSamples - this.consumedSamples + > (6510374247832577769L ^ -6510374247832097769L) + ((6510374247832577769L & -6510374247832097769L) << 1)) { + this.consumedSamples = this.writtenSamples + - ((-5719646493126816766L | 5719646493127296766L) + (-5719646493126816766L & 5719646493127296766L)); + } + + this.lastSampleNanos = var4; + } + + var6 += var7; + } + } + } + + // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow. + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private void run() { + WhisperJNI var1 = null; + WhisperContext var2 = null; + kx var3 = null; + + while (true) { + boolean var10 = false /* VF: Semaphore variable */; + + label154: { + label155: { + try { + var10 = true; + if (System.nanoTime() - this.lastRequestNanos + < (791303481277843701L ^ -791303461277843701L) + ((791303481277843701L & -791303461277843701L) << 1)) { + kx var4 = this.requestedModel; + if (var2 == null || var4 != var3) { + if (var2 != null) { + var1.free(var2); + var2 = null; + } + + Path var5 = this.prepareModel(var4); + this.state = la.LOADING; + loadNativeOnce(); + var1 = new WhisperJNI(); + var2 = var1.init(var5); + var3 = var4; + this.state = la.LISTENING; + id.info(Cif.MEDIA, "Whisper model {} ready", var4.label()); + } + + kz var14 = this.takeChunk(); + if (var14 == null) { + Thread.sleep((-5618828143997257533L ^ 5618828143997257653L) + ((-5618828143997257533L & 5618828143997257653L) << 1)); + } else { + this.transcribe(var1, var2, var14); + } + continue; + } + + var10 = false; + break label155; + } catch (InterruptedException var11) { + Thread.currentThread().interrupt(); + var10 = false; + } catch (Throwable var12) { + this.state = la.FAILED; + id.warn( + Cif.MEDIA, "Whisper could not start", var12 + ); + var10 = false; + break label154; + } finally { + if (var10) { + if (var1 != null && var2 != null) { + var1.free(var2); + } + + in.getInstance().setPcmSink(null); + if (this.state != la.FAILED) { + this.state = la.IDLE; + } + + this.running.set((boolean)((((775494746 | -775494746) + (775494746 & -775494746))) != 0)); + } + } + + if (var1 != null && var2 != null) { + var1.free(var2); + } + + in.getInstance().setPcmSink(null); + if (this.state != la.FAILED) { + this.state = la.IDLE; + } + + this.running.set((boolean)((((20224985 | -20224985) + (20224985 & -20224985))) != 0)); + break; + } + + if (var1 != null && var2 != null) { + var1.free(var2); + } + + in.getInstance().setPcmSink(null); + if (this.state != la.FAILED) { + this.state = la.IDLE; + } + + this.running.set((boolean)((((969771282 ^ -969771282) + ((969771282 & -969771282) << 1))) != 0)); + break; + } + + if (var1 != null && var2 != null) { + var1.free(var2); + } + + in.getInstance().setPcmSink(null); + if (this.state != la.FAILED) { + this.state = la.IDLE; + } + + this.running.set((boolean)((((-357561388 | 357561388) + (-357561388 & 357561388))) != 0)); + break; + } + } + + private static synchronized void loadNativeOnce() throws IOException { + int var0 = -348737546; + + while (true) { + switch (var0) { + case -348737546: + default: + if (!nativeLoaded) { + var0 = 692374677; + } else { + var0 = 1501829324; + } + break; + case 692374677: + WhisperJNI.loadLibrary(); + nativeLoaded = (boolean)(((1)) != 0); + var0 = 1501829324; + break; + case 1501829324: + return; + } + } + } + + private Path prepareModel(kx var1) throws Exception { + int var2 = -1324817817; + + while (true) { + switch (var2) { + case -1378070316: + return ky.resolve(var1); + case -1324817817: + default: + if (ky.isInstalled(var1)) { + var2 = -1378070316; + } else { + var2 = 1524438949; + } + break; + case 1524438949: + this.state = la.DOWNLOADING; + this.downloadProgress = 0.0F; + return ky.ensure(var1, var2x -> this.downloadProgress = (float)var2x / (float)var1.sizeBytes()); + } + } + } + + private kz takeChunk() { + synchronized (this.lock) { + long var2 = this.writtenSamples - this.consumedSamples; + if (var2 < (-2389930511281024676L ^ 2389930511281136676L) + ((-2389930511281024676L & 2389930511281136676L) << 1)) { + return null; + } + + long var4 = this.consumedSamples; + long var6 = var4 + this.quietestCut(var4); + int var8 = (int)(var6 - var4); + + for (int var9 = 0; var9 < var8; var9++) { + this.chunk[var9] = this.ring[(int)( + (var4 + var9) % ((2417074758305000384L ^ -2417074758304520384L) + ((2417074758305000384L & -2417074758304520384L) << 1)) + )]; + } + + long var13 = this.lastSampleNanos + - (this.writtenSamples - var4) + * ((7043711262100809599L | -7043711261100809599L) + (7043711262100809599L & -7043711261100809599L)) + / ((6166785992550645482L ^ -6166785992550629482L) + ((6166785992550645482L & -6166785992550629482L) << 1)); + this.consumedSamples = var6; + return new kz(this.trackKey, var8, var13); + } + } + + private int quietestCut(long var1) { + int var3 = 0; + double var4 = 0.0; + int var6 = 0; + double var7 = 0.0; + int var9 = 0; + float var10 = 0.0F; + int var11 = -351844875; + + while (true) { + switch (var11) { + case -760702359: + var7 = 0.0; + var9 = 0; + var11 = 941337233; + break; + case -351844875: + default: + var3 = 112000; + var4 = Double.MAX_VALUE; + var6 = 64000; + var11 = 225079065; + break; + case 70849046: + return var3; + case 225079065: + if (var6 + (2084198237 ^ -2084196904) + ((2084198237 & -2084196904) << 1) <= (-169638734 ^ 169750734) + ((-169638734 & 169750734) << 1)) { + var11 = -760702359; + } else { + var11 = 70849046; + } + break; + case 941337233: + if (var9 < (-1289812586 | 1289813919) + (-1289812586 & 1289813919)) { + var11 = 1960260387; + } else { + var11 = 1184521424; + } + break; + case 1184521424: + if (var7 < var4) { + var11 = 1784342338; + } else { + var11 = 1731213384; + } + break; + case 1731213384: + var6 += 1333; + var11 = 225079065; + break; + case 1784342338: + var4 = var7; + var3 = var6 + 666; + var11 = 1731213384; + break; + case 1960260387: + var10 = this.ring[(int)( + (var1 + var6 + var9) % ((1376213342851882119L ^ -1376213342851402119L) + ((1376213342851882119L & -1376213342851402119L) << 1)) + )]; + var7 += var10 * var10; + var9++; + var11 = 941337233; + } + } + } + + private void transcribe(WhisperJNI var1, WhisperContext var2, kz var3) { + double var4 = 0.0; + float var6 = 0.0F; + + for (int var7 = 0; var7 < var3.length; var7++) { + float var8 = this.chunk[var7]; + var4 += var8 * var8; + var6 = Math.max(var6, Math.abs(var8)); + } + + if (!(Math.sqrt(var4 / var3.length) < 0.006F)) { + float var17 = Math.min(8.0F, 0.9F / Math.max(var6, 1.0E-6F)); + + for (int var18 = 0; var18 < var3.length; var18++) { + this.chunk[var18] = this.chunk[var18] * var17; + } + + WhisperFullParams var19 = new WhisperFullParams(WhisperSamplingStrategy.GREEDY); + var19.nThreads = Math.max( + 1, + Math.min( + 4, + Runtime.getRuntime().availableProcessors() - ((-1567310253 ^ 1567310255) + ((-1567310253 & 1567310255) << 1)) + ) + ); + var19.language = this.requestedLanguage; + var19.noContext = (boolean)(((1)) != 0); + var19.singleSegment = (boolean)(((0)) != 0); + var19.suppressBlank = (boolean)(((1)) != 0); + var19.suppressNonSpeechTokens = (boolean)(((1)) != 0); + var19.printProgress = (boolean)(((0)) != 0); + var19.printRealtime = (boolean)(((0)) != 0); + var19.printTimestamps = (boolean)(((0)) != 0); + var19.printSpecial = (boolean)(((0)) != 0); + var19.temperature = 0.0F; + var19.noSpeechThold = 0.6F; + int var9 = var1.full(var2, var19, this.chunk, var3.length); + if (var9 != 0) { + id.warn( + Cif.MEDIA, + "Whisper chunk failed with code {}", + var9 + ); + } else { + int var10 = var1.fullNSegments(var2); + + for (int var11 = 0; var11 < var10; var11++) { + String var12 = kt.clean(var1.fullGetSegmentText(var2, var11)); + if (!var12.isEmpty()) { + long var13 = var3.startNanos + + var1.fullGetSegmentTimestamp0(var2, var11) + * ((4649000345637286132L ^ -4649000345627286132L) + ((4649000345637286132L & -4649000345627286132L) << 1)); + long var15 = var3.startNanos + + var1.fullGetSegmentTimestamp1(var2, var11) + * ((-9041873920510647772L | 9041873920520647772L) + (-9041873920510647772L & 9041873920520647772L)); + this.publish(var3.trackKey, var12, var13, Math.max(var15, var13)); + } + } + } + } + } + + private void publish(String var1, String var2, long var3, long var5) { + synchronized (this.lock) { + kv var8 = this.segments.peekLast(); + if (var8 == null || !var8.trackKey().equals(var1) || !var8.text().equalsIgnoreCase(var2)) { + this.segments + .addLast( + new kv( + this.sequence += (-3665216443422979550L ^ 3665216443422979551L) + ((-3665216443422979550L & 3665216443422979551L) << 1), + var1, + var2, + var3, + var5 + ) + ); + + while (this.segments.size() > (813642156 | -813642124) + (813642156 & -813642124)) { + this.segments.removeFirst(); + } + } + } + } +} diff --git a/src/main/java/defpackage/lc.java b/src/main/java/defpackage/lc.java new file mode 100644 index 0000000..346d6b6 --- /dev/null +++ b/src/main/java/defpackage/lc.java @@ -0,0 +1,259 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +public final class lc implements aqg { + private final List modules = new ArrayList<>(); + + public lc() { + this.init(); + this.captureSettingDefaults(); + j.register(this); + } + + private void captureSettingDefaults() { + Iterator var1 = null; + rm var2 = null; + Iterator var3 = null; + ro var4 = null; + int var5 = 1374844088; + + while (true) { + switch (var5) { + case -1801480808: + var5 = -200721625; + break; + case -1119318098: + var4 = (ro)var3.next(); + var4.captureDefault(); + var5 = 1649575351; + break; + case -422645046: + var2 = (rm)var1.next(); + var3 = var2.getSettings().iterator(); + var5 = 1649575351; + break; + case -200721625: + if (var1.hasNext()) { + var5 = -422645046; + } else { + var5 = 807462762; + } + break; + case 807462762: + return; + case 1374844088: + default: + var1 = this.modules.iterator(); + var5 = -200721625; + break; + case 1649575351: + if (var3.hasNext()) { + var5 = -1119318098; + } else { + var5 = -1801480808; + } + } + } + } + + private void init() { + this.registerRender(); + this.registerCrosshair(); + this.registerBuilders(); + this.registerCosmetics(); + this.registerMisc(); + } + + private void registerMisc() { + this.registerModule(tk.INSTANCE); + this.registerModule(tg.INSTANCE); + this.registerModule(th.INSTANCE); + this.registerModule(wh.INSTANCE); + this.registerModule(tl.INSTANCE); + this.registerModule(tm.INSTANCE); + this.registerModule(tj.INSTANCE); + this.registerModule(tf.INSTANCE); + this.registerModule(td.INSTANCE); + this.registerModule(ti.INSTANCE); + this.registerModule(te.INSTANCE); + } + + private void registerBuilders() { + this.registerModule(su.INSTANCE); + this.registerModule(sv.INSTANCE); + this.registerModule(sr.INSTANCE); + } + + private void registerCosmetics() { + this.registerModule(sw.INSTANCE); + this.registerModule(sy.INSTANCE); + this.registerModule(sz.INSTANCE); + this.registerModule(ta.INSTANCE); + this.registerModule(tb.INSTANCE); + this.registerModule(tc.INSTANCE); + } + + private void registerCrosshair() { + this.registerModule(ue.INSTANCE); + } + + private void registerRender() { + this.registerModule(vm.INSTANCE); + this.registerModule(vq.INSTANCE); + this.registerModule(vv.INSTANCE); + this.registerModule(uf.INSTANCE); + this.registerModule(tw.INSTANCE); + this.registerModule(to.INSTANCE); + this.registerModule(uu.INSTANCE); + this.registerModule(wq.INSTANCE); + this.registerModule(vr.INSTANCE); + this.registerModule(tp.INSTANCE); + this.registerModule(va.INSTANCE); + this.registerModule(uq.INSTANCE); + this.registerModule(vl.INSTANCE); + this.registerModule(vp.INSTANCE); + this.registerModule(tr.INSTANCE); + this.registerModule(ts.INSTANCE); + this.registerModule(tt.INSTANCE); + this.registerModule(vx.INSTANCE); + this.registerModule(ux.INSTANCE); + this.registerModule(wj.INSTANCE); + this.registerModule(wd.INSTANCE); + this.registerModule(ut.INSTANCE); + this.registerModule(up.INSTANCE); + this.registerModule(vy.INSTANCE); + this.registerModule(wg.INSTANCE); + this.registerModule(wp.INSTANCE); + this.registerModule(wk.INSTANCE); + this.registerModule(ua.INSTANCE); + this.registerModule(we.INSTANCE); + this.registerModule(uy.INSTANCE); + this.registerModule(vu.INSTANCE); + this.registerModule(vd.INSTANCE); + this.registerModule(ve.INSTANCE); + this.registerModule(wr.INSTANCE); + this.registerModule(tq.INSTANCE); + } + + private void registerModule(rm var1) { + this.modules.add(var1); + } + + public rm getModule(String var1) { + return this.modules.stream().filter(var1x -> var1x.getName().equalsIgnoreCase(var1)).findFirst().orElse(null); + } + + public Set getActiveModules() { + HashSet var1 = null; + Iterator var2 = null; + rm var3 = null; + int var4 = -444188083; + + while (true) { + switch (var4) { + case -444188083: + default: + var1 = new HashSet(); + var2 = this.modules.iterator(); + var4 = 1444937801; + break; + case -309962555: + return var1; + case 1240155050: + var1.add(var3); + var4 = 1474747728; + break; + case 1444937801: + if (var2.hasNext()) { + var4 = 1897108149; + } else { + var4 = -309962555; + } + break; + case 1474747728: + var4 = 1444937801; + break; + case 1897108149: + var3 = (rm)var2.next(); + if (var3.isEnabled()) { + var4 = 1240155050; + } else { + var4 = 1474747728; + } + } + } + } + + @k + public void onKey(er var1) { + Iterator var2 = null; + rm var3 = null; + int var4 = 691726468; + + while (true) { + switch (var4) { + case -2107826231: + var4 = 673869800; + break; + case -1402529510: + var3 = (rm)var2.next(); + if (var3.getKeyCode() == var1.getKeyCode()) { + var4 = 1784661382; + } else { + var4 = -2107826231; + } + break; + case -1383157845: + return; + case -1234652703: + if (var1.getAction() != (762099844 | -762099843) + (762099844 & -762099843)) { + var4 = -1383157845; + } else { + var4 = -256304796; + } + break; + case -282654464: + return; + case -256304796: + sz.INSTANCE.onKeyPressed(var1.getKeyCode()); + var2 = this.modules.iterator(); + var4 = 673869800; + break; + case 535595717: + var3.toggle(); + var4 = -2107826231; + break; + case 673869800: + if (var2.hasNext()) { + var4 = -1402529510; + } else { + var4 = -282654464; + } + break; + case 691726468: + default: + if (mc.gui.screen() == null) { + var4 = -1234652703; + } else { + var4 = -1383157845; + } + break; + case 1784661382: + if (var3.getKeyCode() != (1501595313 ^ -1501595314) + ((1501595313 & -1501595314) << 1)) { + var4 = 535595717; + } else { + var4 = -2107826231; + } + } + } + } + + public List getModules() { + return this.modules; + } +} diff --git a/src/main/java/defpackage/ld.java b/src/main/java/defpackage/ld.java new file mode 100644 index 0000000..752cd9d --- /dev/null +++ b/src/main/java/defpackage/ld.java @@ -0,0 +1,439 @@ +package defpackage; + +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.HttpResponse.BodyHandlers; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Set; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; +import java.util.function.Function; + +public final class ld { + private static final String DIRECT = "direct"; + private static final String MIRROR_PREFIX = "/m/"; + private static final String HTTPS_SCHEME = "https"; + private static final String QUERY_SEPARATOR = "?"; + private static final int DEFAULT_PORT = -1; + private static final int SERVER_ERROR_FLOOR = 500; + private static final String PREFERRED_ROUTE_ENV = "EVO_KEY_ROUTE"; + private static final List MIRROR_ORIGINS = List.of( + "https://delivery-two.evoproject.xyz", + "https://delivery.evoproject.xyz" + ); + private static final Set MIRRORED_HOSTS = Set.of( + "www.evoproject.xyz", + "evovis-protect.vercel.app" + ); + private static final Set MIRROR_FIRST_COUNTRIES = Set.of("RU"); + private static final String ROUTE_SELECTED = "api route selected: {}"; + private static final String ROUTE_FAILED = "api route {} failed: {}"; + private static final List DEFAULT_ORDER = defaultOrder( + System.getenv("EVO_KEY_ROUTE"), Locale.getDefault().getCountry() + ); + private static volatile String lastWorking; + + private ld() { + } + + public static HttpResponse send(HttpClient var0, HttpRequest var1) throws IOException, InterruptedException { + if (!isMirrorable(var1.uri())) { + return var0.send(var1, BodyHandlers.ofString()); + } + + IOException var2 = null; + HttpResponse var3 = null; + + for (String var5 : order()) { + try { + HttpResponse var6 = var0.send(routed(var1, var5), BodyHandlers.ofString()); + if (var6.statusCode() < (-494637852 | 494638352) + (-494637852 & 494638352)) { + markWorking(var5); + return var6; + } + + var3 = var6; + id.debug(Cif.NETWORK, "api route {} failed: {}", var5, var6.statusCode()); + } catch (IOException var7) { + var2 = var7; + id.debug( + Cif.NETWORK, + "api route {} failed: {}", + var5, + var7.toString() + ); + } + } + + if (var3 != null) { + return var3; + } else { + throw var2; + } + } + + public static CompletableFuture> sendAsync(HttpClient var0, HttpRequest var1) { + int var2 = -290150527; + + while (true) { + switch (var2) { + case -947404914: + return var0.sendAsync(var1, BodyHandlers.ofString()); + case -290150527: + default: + if (!isMirrorable(var1.uri())) { + var2 = -947404914; + } else { + var2 = 215383025; + } + break; + case 215383025: + return attempt(var0, var1, order(), 0, null); + } + } + } + + static List defaultOrder(String var0, String var1) { + ArrayList var2 = null; + int var3 = 0; + Iterator var4 = null; + String var5 = null; + int var6 = -874745320; + + while (true) { + switch (var6) { + case -2053451393: + var5 = (String)var4.next(); + if (!var2.contains(var5)) { + var6 = -298653931; + } else { + var6 = 1398005204; + } + break; + case -1528856756: + if (var3 == 0) { + var6 = 985730087; + } else { + var6 = -541578715; + } + break; + case -1227059549: + return List.copyOf(var2); + case -874745320: + default: + var2 = new ArrayList(MIRROR_ORIGINS.size() + (289316528 ^ -289316527) + ((289316528 & -289316527) << 1)); + var3 = (MIRROR_FIRST_COUNTRIES.contains(var1)) ? 1 : 0; + if (var0 != null) { + var6 = -90143753; + } else { + var6 = -1528856756; + } + break; + case -700675905: + if (var4.hasNext()) { + var6 = -2053451393; + } else { + var6 = 1727632931; + } + break; + case -541578715: + var4 = MIRROR_ORIGINS.iterator(); + var6 = -700675905; + break; + case -298653931: + var2.add(var5); + var6 = 1398005204; + break; + case -90143753: + if (MIRROR_ORIGINS.contains(var0)) { + var6 = 1327485368; + } else { + var6 = -1528856756; + } + break; + case 985730087: + var2.add("direct"); + var6 = -541578715; + break; + case 1327485368: + var2.add(var0); + var3 = 1; + var6 = -1528856756; + break; + case 1398005204: + var6 = -700675905; + break; + case 1727632931: + if (var3 != 0) { + var6 = 2010863011; + } else { + var6 = -1227059549; + } + break; + case 2010863011: + var2.add("direct"); + var6 = -1227059549; + } + } + } + + static URI routedUri(URI var0, String var1) { + if ("direct".equals(var1)) { + return var0; + } + + String var2 = var0.getRawQuery(); + return URI.create(var1 + "/m/" + var0.getHost().toLowerCase(Locale.ROOT) + var0.getRawPath() + (var2 == null ? "" : "?" + var2)); + } + + static boolean isMirrorable(URI var0) { + int var2 = 0; + int var1 = -106375533; + + while (true) { + switch (var1) { + case -1870016662: + var2 = 0; + var1 = -286870746; + break; + case -1332582491: + if (MIRRORED_HOSTS.contains(var0.getHost().toLowerCase(Locale.ROOT))) { + var1 = -693189477; + } else { + var1 = -1870016662; + } + break; + case -1228149533: + if (var0.getPort() == (-524697281 ^ 524697280) + ((-524697281 & 524697280) << 1)) { + var1 = -770467312; + } else { + var1 = -1870016662; + } + break; + case -770467312: + if (var0.getHost() != null) { + var1 = -1332582491; + } else { + var1 = -1870016662; + } + break; + case -693189477: + var2 = 1; + var1 = -286870746; + break; + case -286870746: + return (boolean)((var2) != 0); + case -106375533: + default: + if ("https".equalsIgnoreCase(var0.getScheme())) { + var1 = -1228149533; + } else { + var1 = -1870016662; + } + } + } + } + + private static CompletableFuture> attempt(HttpClient var0, HttpRequest var1, List var2, int var3, HttpResponse var4) { + String var5 = null; + int var6 = 0; + int var8 = 0; + int var7 = -1409433303; + + while (true) { + switch (var7) { + case -1409433303: + default: + var5 = (String)var2.get(var3); + if (var3 + (-626121534 ^ 626121535) + ((-626121534 & 626121535) << 1) >= var2.size()) { + var7 = 1198196697; + } else { + var7 = 1946856717; + } + break; + case 1198196697: + var8 = 1; + var7 = 1855609648; + break; + case 1855609648: + var6 = var8; + return var0.sendAsync(routed(var1, var5), BodyHandlers.ofString()) + .handle( + (var7x, var8x) -> { + if (var8x == null && var7x.statusCode() < (816354886 | -816354386) + (816354886 & -816354386)) { + markWorking(var5); + return CompletableFuture.completedFuture(var7x); + } else { + Throwable var9x = unwrap(var8x); + id.debug( + Cif.NETWORK, + "api route {} failed: {}", + var5, + var9x == null ? var7x.statusCode() : var9x.toString() + ); + HttpResponse var10 = var9x == null ? var7x : var4; + if (!var6) { + return attempt(var0, var1, var2, var3 + 1, var10); + } else { + return var10 != null ? CompletableFuture.completedFuture(var10) : CompletableFuture.failedFuture(var9x); + } + } + } + ) + .thenCompose(Function.identity()); + case 1946856717: + var8 = 0; + var7 = 1855609648; + } + } + } + + private static Throwable unwrap(Throwable var0) { + Throwable var2 = null; + int var1 = 1632996061; + + while (true) { + switch (var1) { + case 346109606: + var2 = var0; + var1 = 2055820483; + break; + case 831516533: + if (var0.getCause() != null) { + var1 = 1530385998; + } else { + var1 = 346109606; + } + break; + case 1530385998: + var2 = var0.getCause(); + var1 = 2055820483; + break; + case 1632996061: + default: + if (var0 instanceof CompletionException) { + var1 = 831516533; + } else { + var1 = 346109606; + } + break; + case 2055820483: + return var2; + } + } + } + + private static List order() { + String var0 = null; + ArrayList var1 = null; + Iterator var2 = null; + String var3 = null; + int var4 = 1674390055; + + while (true) { + switch (var4) { + case -1722955176: + return var1; + case -1490247505: + var1.add(var3); + var4 = 1590186222; + break; + case -1201128796: + var1 = new ArrayList(DEFAULT_ORDER.size()); + var1.add(var0); + var2 = DEFAULT_ORDER.iterator(); + var4 = -364086042; + break; + case -364086042: + if (var2.hasNext()) { + var4 = 63583728; + } else { + var4 = -1722955176; + } + break; + case 63583728: + var3 = (String)var2.next(); + if (!var3.equals(var0)) { + var4 = -1490247505; + } else { + var4 = 1590186222; + } + break; + case 358111474: + return DEFAULT_ORDER; + case 1590186222: + var4 = -364086042; + break; + case 1674390055: + default: + var0 = lastWorking; + if (var0 != null) { + var4 = 2143171881; + } else { + var4 = 358111474; + } + break; + case 2143171881: + if (var0.equals(DEFAULT_ORDER.getFirst())) { + var4 = 358111474; + } else { + var4 = -1201128796; + } + } + } + } + + private static HttpRequest routed(HttpRequest var0, String var1) { + int var2 = -324947846; + + while (true) { + switch (var2) { + case -1256303814: + return HttpRequest.newBuilder(var0, (var0x, var1x) -> (boolean)((((602700906 ^ -602700905) + ((602700906 & -602700905) << 1))) != 0)) + .uri(routedUri(var0.uri(), var1)) + .build(); + case -324947846: + default: + if ("direct".equals(var1)) { + var2 = 1376145955; + } else { + var2 = -1256303814; + } + break; + case 1376145955: + return var0; + } + } + } + + private static void markWorking(String var0) { + int var1 = -1352093524; + + while (true) { + switch (var1) { + case -1352093524: + default: + if (!var0.equals(lastWorking)) { + var1 = 2064668678; + } else { + var1 = -268756236; + } + break; + case -268756236: + return; + case 2064668678: + lastWorking = var0; + id.info( + Cif.NETWORK, "api route selected: {}", var0 + ); + var1 = -268756236; + } + } + } +} diff --git a/src/main/java/defpackage/le.java b/src/main/java/defpackage/le.java new file mode 100644 index 0000000..495fb0a --- /dev/null +++ b/src/main/java/defpackage/le.java @@ -0,0 +1,203 @@ +package defpackage; + +import net.minecraft.client.Minecraft; +import net.minecraft.network.chat.Component; + +public class le { + private static final String LABEL_SEPARATOR = " "; + private static le instance; + private qf notifyComponent; + + private le() { + j.register(this); + } + + public static le getInstance() { + int var0 = 1840174517; + + while (true) { + switch (var0) { + case 1362383074: + return instance; + case 1572645600: + instance = new le(); + var0 = 1362383074; + break; + case 1840174517: + default: + if (instance == null) { + var0 = 1572645600; + } else { + var0 = 1362383074; + } + } + } + } + + public void setNotifyComponent(qf var1) { + this.notifyComponent = var1; + } + + @k + public void onModuleToggle(ex var1) { + int var2 = -585407258; + + while (true) { + switch (var2) { + case -585407258: + default: + if (Minecraft.getInstance().player == null) { + var2 = 823921734; + } else { + var2 = 305553261; + } + break; + case -180759228: + return; + case 305553261: + pushModuleCard(var1.getModule(), var1.isEnabled()); + if (this.notifyComponent != null) { + var2 = 1979628304; + } else { + var2 = -180759228; + } + break; + case 823921734: + return; + case 1713754407: + this.notifyComponent.addNotification(var1.getModule(), var1.isEnabled()); + var2 = -180759228; + break; + case 1979628304: + if (this.notifyComponent.isNotificationsEnabled()) { + var2 = 1713754407; + } else { + var2 = -180759228; + } + } + } + } + + public void addNotification(rm var1, boolean var2) { + int var3 = 713206829; + + while (true) { + switch (var3) { + case -1813640858: + this.notifyComponent.addNotification(var1, var2); + var3 = -91804124; + break; + case -91804124: + return; + case -89130821: + if (this.notifyComponent.isNotificationsEnabled()) { + var3 = -1813640858; + } else { + var3 = -91804124; + } + break; + case 713206829: + default: + pushModuleCard(var1, var2); + if (this.notifyComponent != null) { + var3 = -89130821; + } else { + var3 = -91804124; + } + } + } + } + + public void addNotification(String var1, Component var2) { + String var3 = null; + int var4 = 244972743; + + while (true) { + switch (var4) { + case -1123179083: + if (this.notifyComponent.isNotificationsEnabled()) { + var4 = 124475249; + } else { + var4 = -931552894; + } + break; + case -931552894: + return; + case 124475249: + this.notifyComponent.addTextNotification(var1, var2); + this.playNotificationSound(); + var4 = -931552894; + break; + case 244972743: + default: + var3 = var2.getString().trim(); + rc.push(rb.event(var3, var3, null)); + if (this.notifyComponent != null) { + var4 = -1123179083; + } else { + var4 = -931552894; + } + } + } + } + + public void addCustomNotification(String var1, String var2, String var3) { + int var4 = 601912075; + + while (true) { + switch (var4) { + case -1448245956: + if (this.notifyComponent.isNotificationsEnabled()) { + var4 = -291474431; + } else { + var4 = -1323257065; + } + break; + case -1323257065: + return; + case -291474431: + this.notifyComponent.addCustomNotification(var1, var2, var3); + this.playNotificationSound(); + var4 = -1323257065; + break; + case 601912075: + default: + rc.push(rb.event(var2, var2 + " " + var3, var1)); + if (this.notifyComponent != null) { + var4 = -1448245956; + } else { + var4 = -1323257065; + } + } + } + } + + private static void pushModuleCard(rm var0, boolean var1) { + String var2 = var0.getName(); + rc.push(rb.toggle(var2, var2 + " " + qf.statusText(var0, var1), var1)); + } + + private void playNotificationSound() { + mm var1 = null; + int var2 = 603651685; + + while (true) { + switch (var2) { + case -1092394844: + return; + case 603651685: + default: + var1 = bz.getInstance().getSoundManager(); + if (var1 != null) { + var2 = 1067939683; + } else { + var2 = -1092394844; + } + break; + case 1067939683: + var1.play(mj.NOTIFICATION); + var2 = -1092394844; + } + } + } +} diff --git a/src/main/java/defpackage/lf.java b/src/main/java/defpackage/lf.java new file mode 100644 index 0000000..d62a820 --- /dev/null +++ b/src/main/java/defpackage/lf.java @@ -0,0 +1,324 @@ +package defpackage; + +import net.minecraft.world.InteractionHand; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.Pose; +import net.minecraft.world.level.block.Blocks; + +public final class lf implements aqf { + private static final aqm attackTimer = new aqm(); + private static int count = 0; + + public static void attackEntity(Entity var0) { + mc.gameMode.attack(mc.player, var0); + mc.player.swing(InteractionHand.MAIN_HAND); + attackTimer.reset(); + count += 1; + } + + public static boolean hasMovementRestrictions() { + int var1 = 0; + int var0 = 204328218; + + while (true) { + switch (var0) { + case -1543495093: + if (!mc.player.isCrouching()) { + var0 = -600391251; + } else { + var0 = -156167700; + } + break; + case -1535500394: + if (!apo.isPlayerInBlock(Blocks.COBWEB)) { + var0 = -1340813636; + } else { + var0 = -156167700; + } + break; + case -1340813636: + if (!mc.player.isUnderWater()) { + var0 = 573089641; + } else { + var0 = -156167700; + } + break; + case -1247336363: + var1 = 0; + var0 = 2128290041; + break; + case -1082501794: + if (!mc.player.onClimbable()) { + var0 = -371456453; + } else { + var0 = -156167700; + } + break; + case -600391251: + if (mc.player.getAbilities().flying) { + var0 = -156167700; + } else { + var0 = -1247336363; + } + break; + case -371456453: + if (!apo.canChangeIntoPose(Pose.STANDING)) { + var0 = -1543495093; + } else { + var0 = -600391251; + } + break; + case -156167700: + var1 = 1; + var0 = 2128290041; + break; + case 204328218: + default: + if (!mc.player.hasEffect(MobEffects.BLINDNESS)) { + var0 = 1932073736; + } else { + var0 = -156167700; + } + break; + case 573089641: + if (!mc.player.isInLava()) { + var0 = -1082501794; + } else { + var0 = -156167700; + } + break; + case 1932073736: + if (!mc.player.hasEffect(MobEffects.LEVITATION)) { + var0 = -1535500394; + } else { + var0 = -156167700; + } + break; + case 2128290041: + return (boolean)((var1) != 0); + } + } + } + + public static boolean hasPreMovementRestrictions(apw var0) { + int var2 = 0; + int var1 = -1519236187; + + while (true) { + switch (var1) { + case -1628104095: + if (!var0.isInLava()) { + var1 = -1188087780; + } else { + var1 = -898511089; + } + break; + case -1519236187: + default: + if (!var0.hasStatusEffect(MobEffects.BLINDNESS)) { + var1 = 5427638; + } else { + var1 = -898511089; + } + break; + case -1388068024: + if (!apo.canChangeIntoPose(Pose.STANDING)) { + var1 = -1372874946; + } else { + var1 = 1562563603; + } + break; + case -1372874946: + if (!mc.player.isCrouching()) { + var1 = 1562563603; + } else { + var1 = -898511089; + } + break; + case -1312800115: + return (boolean)((var2) != 0); + case -1188087780: + if (!var0.isClimbing()) { + var1 = -1388068024; + } else { + var1 = -898511089; + } + break; + case -898511089: + var2 = 1; + var1 = -1312800115; + break; + case 5427638: + if (!var0.hasStatusEffect(MobEffects.LEVITATION)) { + var1 = 1667556995; + } else { + var1 = -898511089; + } + break; + case 303066583: + var2 = 0; + var1 = -1312800115; + break; + case 1477663165: + if (!var0.isSubmergedInWater()) { + var1 = -1628104095; + } else { + var1 = -898511089; + } + break; + case 1562563603: + if (mc.player.getAbilities().flying) { + var1 = -898511089; + } else { + var1 = 303066583; + } + break; + case 1667556995: + if (!apo.isBoxInBlock(var0.boundingBox, Blocks.COBWEB)) { + var1 = 1477663165; + } else { + var1 = -898511089; + } + } + } + } + + public static boolean isPlayerInCriticalState() { + int var0 = 0; + int var2 = 0; + int var3 = 0; + int var1 = -1413547896; + + while (true) { + switch (var1) { + case -1765574347: + if (var0 != 0) { + var1 = 1157961036; + } else { + var1 = -386734302; + } + break; + case -1665489409: + var0 = var2; + if (!mc.player.onGround()) { + var1 = -1765574347; + } else { + var1 = -386734302; + } + break; + case -1529112658: + return (boolean)((var3) != 0); + case -1413547896: + default: + if (mc.player.fallDistance > 0.0) { + var1 = 449304032; + } else { + var1 = -1376124064; + } + break; + case -1376124064: + var2 = 0; + var1 = -1665489409; + break; + case -386734302: + var3 = 0; + var1 = -1529112658; + break; + case -39167749: + if (!apw.simulateLocalPlayer(1).onGround) { + var1 = 1022177726; + } else { + var1 = -1376124064; + } + break; + case 449304032: + if (!(mc.player.fallDistance < 0.08)) { + var1 = -39167749; + } else { + var1 = 1022177726; + } + break; + case 1022177726: + var2 = 1; + var1 = -1665489409; + break; + case 1157961036: + var3 = 1; + var1 = -1529112658; + } + } + } + + public static boolean isPrePlayerInCriticalState(apw var0) { + int var1 = 0; + int var3 = 0; + int var4 = 0; + int var2 = 339719331; + + while (true) { + switch (var2) { + case -2115169164: + return (boolean)((var4) != 0); + case -1037583406: + var4 = 1; + var2 = -2115169164; + break; + case -463801951: + if (var1 != 0) { + var2 = -1037583406; + } else { + var2 = 1936962902; + } + break; + case -116577731: + var3 = 0; + var2 = 1926493539; + break; + case 339719331: + default: + if (var0.fallDistance > 0.0F) { + var2 = 2126781031; + } else { + var2 = -116577731; + } + break; + case 404235057: + var3 = 1; + var2 = 1926493539; + break; + case 1926493539: + var1 = var3; + if (!var0.onGround) { + var2 = -463801951; + } else { + var2 = 1936962902; + } + break; + case 1936962902: + var4 = 0; + var2 = -2115169164; + break; + case 1943581696: + if (!apw.simulateLocalPlayer(2).onGround) { + var2 = 404235057; + } else { + var2 = -116577731; + } + break; + case 2126781031: + if (!(var0.fallDistance < 0.08)) { + var2 = 1943581696; + } else { + var2 = 404235057; + } + } + } + } + + private lf() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/lg.java b/src/main/java/defpackage/lg.java new file mode 100644 index 0000000..a1508e7 --- /dev/null +++ b/src/main/java/defpackage/lg.java @@ -0,0 +1,144 @@ +package defpackage; + +import net.minecraft.ChatFormatting; +import net.minecraft.client.gui.screens.inventory.ContainerScreen; +import net.minecraft.network.chat.Component; +import net.minecraft.network.protocol.game.ClientboundSystemChatPacket; +import net.minecraft.world.inventory.ChestMenu; +import net.minecraft.world.inventory.ContainerInput; + +public class lg implements aqf { + private final aql stopWatch = new aql(); + private boolean lobby; + private int anarchy; + + public lg() { + j.register(this); + } + + @k + public void onPacket(fy var1) { + if (this.anarchy != 0 && var1.getPacket() instanceof ClientboundSystemChatPacket var2 && var1.isReceive()) { + String var4 = var2.content().getString().toLowerCase(); + if (!var4.contains("хаб") + && var4.contains( + "не удалось" + )) { + le.getInstance() + .addNotification( + "[RCT]️", + Component.literal(" You can" + ChatFormatting.RED + "'t" + ChatFormatting.RESET + " join this anarchy") + ); + this.anarchy = 0; + } + } + } + + @k + public void onTick(fl var1) { + if (this.anarchy != 0) { + aqc var2 = bz.getInstance().getServerHandler(); + if (!var2.isHolyWorld()) { + this.anarchy = 0; + } else { + int var3 = var2.getAnarchy(); + if (this.lobby) { + if (var3 == (2116469705 ^ -2116469706) + ((2116469705 & -2116469706) << 1)) { + this.lobby = (boolean)(((0)) != 0); + } else { + mc.player.connection.sendCommand("hub"); + } + } else if (var3 == this.anarchy) { + this.anarchy = 0; + } else if (mc.gui.screen() instanceof ContainerScreen var4 + && var4.getTitle() + .getString() + .equals( + "Выбор Лайт анархии:" + )) { + int var7 = ((ChestMenu)var4.getMenu()).getContainer().getContainerSize() < 10? 1: 0; + int[] var10000; + if (this.anarchy < (1238463769 ^ -1238463754) + ((1238463769 & -1238463754) << 1)) { + var10000 = new int[2]; + var10000[0] = 0; + var10000[1] = 0; + } else if (this.anarchy < (649516633 ^ -649516600) + ((649516633 & -649516600) << 1)) { + var10000 = new int[2]; + var10000[0] = 1; + var10000[1] = 14; + } else if (this.anarchy < (85511848 ^ -85511800) + ((85511848 & -85511800) << 1)) { + var10000 = new int[2]; + var10000[0] = 2; + var10000[1] = 32; + } else { + var10000 = new int[2]; + var10000[0] = 3; + var10000[1] = 47; + } + + int[] var6 = var10000; + if (var7 != 0) { + apq.clickSlot( + var6[0], + 0, + ContainerInput.PICKUP, + (boolean)((((1675256363 | -1675256363) + (1675256363 & -1675256363)) + ) != 0)); + } else { + apq.clickSlot( + (1201557449 | -1201557432) + + (1201557449 & -1201557432) + + this.anarchy + - var6[1], + 0, + ContainerInput.PICKUP, + (boolean)((((-28412331 ^ 28412331) + ((-28412331 & 28412331) << 1)) + ) != 0)); + } + } else { + if (this.stopWatch.every((-2376743639793961367L ^ 2376743639793961867L) + ((-2376743639793961367L & 2376743639793961867L) << 1))) { + mc.player.connection.sendCommand("lite"); + } + } + } + } + } + + public void reconnect(int var1) { + int var2 = -469858556; + + while (true) { + switch (var2) { + case -835258886: + return; + case -469858556: + default: + if (var1 > 0) { + var2 = 827304636; + } else { + var2 = 2129802214; + } + break; + case 827304636: + if (var1 < (452855364 ^ -452855300) + ((452855364 & -452855300) << 1)) { + var2 = 1311466990; + } else { + var2 = 2129802214; + } + break; + case 1311466990: + this.anarchy = var1; + this.lobby = (boolean)(((1)) != 0); + var2 = -835258886; + break; + case 2129802214: + le.getInstance() + .addNotification( + "[RCT]", + Component.literal(" Invalid " + ChatFormatting.RED + "light") + ); + var2 = -835258886; + } + } + } +} diff --git a/src/main/java/defpackage/lh.java b/src/main/java/defpackage/lh.java new file mode 100644 index 0000000..6623bfb --- /dev/null +++ b/src/main/java/defpackage/lh.java @@ -0,0 +1,15 @@ +package defpackage; + +public class lh { + public int expiresIn; + public final int priority; + public final rm provider; + public final T value; + + public lh(int var1, int var2, rm var3, T var4) { + this.expiresIn = var1; + this.priority = var2; + this.provider = var3; + this.value = (T)var4; + } +} diff --git a/src/main/java/defpackage/li.java b/src/main/java/defpackage/li.java new file mode 100644 index 0000000..591f22a --- /dev/null +++ b/src/main/java/defpackage/li.java @@ -0,0 +1,122 @@ +package defpackage; + +import java.util.Comparator; +import java.util.concurrent.PriorityBlockingQueue; +import net.minecraft.client.Minecraft; + +public class li { + private int currentTick = 0; + private final PriorityBlockingQueue> activeRequests = new PriorityBlockingQueue<>( + (228796992 ^ -228796981) + ((228796992 & -228796981) << 1), Comparator.comparingInt(var0 -> -var0.priority) + ); + + public void tick(int var1) { + this.currentTick += var1; + } + + public void tick() { + this.tick((654259338 ^ -654259337) + ((654259338 & -654259337) << 1)); + } + + public void request(lh var1) { + this.activeRequests.removeIf(var1x -> { + int var3 = 0; + int var2 = 1842853872; + + while (true) { + switch (var2) { + case -1213495905: + return (boolean)((var3) != 0); + case 1302463581: + var3 = 0; + var2 = -1213495905; + break; + case 1842853872: + default: + if (var1x.provider == var1.provider) { + var2 = 2085754380; + } else { + var2 = 1302463581; + } + break; + case 2085754380: + var3 = 1; + var2 = -1213495905; + } + } + }); + var1.expiresIn = var1.expiresIn + this.currentTick; + this.activeRequests.add(var1); + } + + public T getActiveRequestValue() { + lh var1 = null; + Object var3 = null; + int var2 = 1930980020; + + while (true) { + switch (var2) { + case -1930142706: + return (T)var3; + case -1754995516: + var3 = var1.value; + var2 = -1930142706; + break; + case -1207068904: + this.activeRequests.poll(); + var1 = this.activeRequests.peek(); + var2 = -196163564; + break; + case -545053173: + if (!var1.provider.isEnabled()) { + var2 = -1207068904; + } else { + var2 = 854289685; + } + break; + case -196163564: + if (var1 != null) { + var2 = -122569276; + } else { + var2 = 854289685; + } + break; + case -122569276: + if (var1.expiresIn > this.currentTick) { + var2 = -545053173; + } else { + var2 = -1207068904; + } + break; + case 65007912: + if (Minecraft.getInstance().isSameThread()) { + var2 = -196163564; + } else { + var2 = 854289685; + } + break; + case 446656867: + var3 = null; + var2 = -1930142706; + break; + case 854289685: + if (var1 != null) { + var2 = -1754995516; + } else { + var2 = 446656867; + } + break; + case 1810971877: + return null; + case 1930980020: + default: + var1 = this.activeRequests.peek(); + if (var1 == null) { + var2 = 1810971877; + } else { + var2 = 65007912; + } + } + } + } +} diff --git a/src/main/java/defpackage/lj.java b/src/main/java/defpackage/lj.java new file mode 100644 index 0000000..b8ca58f --- /dev/null +++ b/src/main/java/defpackage/lj.java @@ -0,0 +1,15 @@ +package defpackage; + +class lj { + final Class eventClass; + private final lk action; + + lj(Class var1, lk var2) { + this.eventClass = var1; + this.action = var2; + } + + boolean execute(Object var1) { + return this.action.accept(this.eventClass.cast(var1)); + } +} diff --git a/src/main/java/defpackage/lk.java b/src/main/java/defpackage/lk.java new file mode 100644 index 0000000..2d672d0 --- /dev/null +++ b/src/main/java/defpackage/lk.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +public interface lk { + boolean accept(E var1); +} diff --git a/src/main/java/defpackage/ll.java b/src/main/java/defpackage/ll.java new file mode 100644 index 0000000..d9c9ef9 --- /dev/null +++ b/src/main/java/defpackage/ll.java @@ -0,0 +1,90 @@ +package defpackage; + +import java.util.LinkedList; +import java.util.Queue; + +public class ll { + private final Queue> steps = new LinkedList<>(); + private int idleTicks = 0; + private int maxIdleTicks = 400; + + public ll withMaxIdleTicks(int var1) { + this.maxIdleTicks = Math.max(1, var1); + return this; + } + + public ll schedule(Class var1, lk var2) { + this.steps.add(new lj(var1, var2)); + return this; + } + + public boolean tryTick(Object var1) { + lj var2 = null; + int var3 = 0; + int var4 = 0; + int var5 = -938265002; + + while (true) { + switch (var5) { + case -1184773407: + if (var3 != 0) { + var5 = -389427844; + } else { + var5 = 1908088047; + } + break; + case -938265002: + default: + var2 = this.steps.peek(); + if (var2 == null) { + var5 = 197472795; + } else { + var5 = 1520127614; + } + break; + case -389427844: + this.idleTicks = 0; + return this.steps.isEmpty(); + case 197472795: + return (boolean)(((1)) != 0); + case 660046917: + this.steps.poll(); + var3 = 1; + var5 = -1184773407; + break; + case 765845381: + return (boolean)(((0)) != 0); + case 769350428: + this.steps.clear(); + return (boolean)(((1)) != 0); + case 1520127614: + var3 = 0; + if (var2.eventClass.isInstance(var1)) { + var5 = 1714303817; + } else { + var5 = -1184773407; + } + break; + case 1714303817: + boolean var6 = var2.execute(var1); + if (var6) { + var5 = 660046917; + } else { + var5 = -1184773407; + } + break; + case 1908088047: + this.idleTicks += 1; + if (this.idleTicks > this.maxIdleTicks) { + var5 = 769350428; + } else { + var5 = 765845381; + } + } + } + } + + public boolean isCompleted() { + return this.steps.isEmpty(); + } +} diff --git a/src/main/java/defpackage/lm.java b/src/main/java/defpackage/lm.java new file mode 100644 index 0000000..12a71b5 --- /dev/null +++ b/src/main/java/defpackage/lm.java @@ -0,0 +1,65 @@ +package defpackage; + +import java.util.LinkedList; +import java.util.Queue; + +public class lm { + private final Queue tasks = new LinkedList<>(); + + public lm() { + j.register(this); + } + + public void tick(Object var1) { + ll var2 = null; + int var3 = 0; + int var4 = -1291892470; + + while (true) { + switch (var4) { + case -1526150576: + boolean var5 = var2.tryTick(var1); + if (var5) { + var4 = 1655756288; + } else { + var4 = -161767203; + } + break; + case -1291892470: + default: + var2 = this.tasks.peek(); + if (var2 == null) { + var4 = 1286729949; + } else { + var4 = -1526150576; + } + break; + case -161767203: + return; + case 1286729949: + return; + case 1655756288: + this.tasks.poll(); + var4 = -161767203; + } + } + } + + @k + public void rotateTick(fi var1) { + this.tick(var1); + } + + @k(0) + public void updateTick(fl var1) { + this.tick(var1); + } + + public void addTask(ll var1) { + this.tasks.add(var1); + } + + public boolean isFinished() { + return this.tasks.isEmpty(); + } +} diff --git a/src/main/java/defpackage/ln.java b/src/main/java/defpackage/ln.java new file mode 100644 index 0000000..f879b79 --- /dev/null +++ b/src/main/java/defpackage/ln.java @@ -0,0 +1,21 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:ln.class */ +/* synthetic */ class ln { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$rotation$mods$config$api$RotationModeType = new int[mh.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$rotation$mods$config$api$RotationModeType[mh.INSTANT.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$rotation$mods$config$api$RotationModeType[mh.INTERPOLATION.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$base$rotation$mods$config$api$RotationModeType[mh.AI.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + } +} diff --git a/src/main/java/defpackage/lo.java b/src/main/java/defpackage/lo.java new file mode 100644 index 0000000..a5acd05 --- /dev/null +++ b/src/main/java/defpackage/lo.java @@ -0,0 +1,230 @@ +package defpackage; + +import net.minecraft.util.Mth; + +public class lo implements aqf { + private final ma interpolationMod = new ma(); + private final lx instantMod = new lx(); + private final lw smoothMod = new lw(); + private final mg instantSetup = new me(); + private final mg aiSetup = md.builder().build(); + int index = 0; + float[] values; + + public lo() { + float[] var10001 = new float[10]; + var10001[0] = 0.0123967F; + var10001[1] = 0.053719F; + var10001[2] = 0.109504F; + var10001[3] = 0.17562F; + var10001[4] = 0.21281F; + var10001[5] = 0.272727F; + var10001[6] = 0.11157F; + var10001[7] = 0.0392562F; + var10001[8] = 0.0103306F; + var10001[9] = 0.00206612F; + this.values = var10001; + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public apz rotate(mg var1, apz var2) { + if (var1.getType() != mh.INSTANT) { + aqa var3 = evolution.getRotationManager().getCurrentRotation().rotationDeltaTo(var2); + float var4 = 270.0F; + float var5 = Mth.clamp(1.0F - (Math.abs(var3.getDeltaYaw()) + Math.abs(var3.getDeltaPitch())) / var4, 0.0F, 1.0F); + aqa var6 = getOffset(var3, var5); + var2 = var2.add(var6); + } + apz var7 = switch (ln.$SwitchMap$evo$systems$base$rotation$mods$config$api$RotationModeType[var1.getType().ordinal()]) { + case 1 -> this.instantMod.process(var2); + case 2 -> this.interpolationMod.process((mf)var1, evolution.getRotationManager().getCurrentRotation(), var2); + case 3 -> this.interpolationMod.process(((md)var1).getInterpolationRotationConfig(), this.smoothMod.process((md)var1, var2), var2); + default -> evolution.getRotationManager().getCurrentRotation(); + }; + if (var1.getType() != mh.AI) { + } + + return rotationManager.getCurrentRotation().equals(var7) ? var7 : var7.normalize(new apz(mc.player.yRotO, mc.player.xRotO)); + } + + public void incrementIndex() { + int var1 = -1451942277; + + while (true) { + switch (var1) { + case -1451942277: + default: + this.index += 1; + if (this.index >= this.values.length) { + var1 = -1365791408; + } else { + var1 = -307757129; + } + break; + case -1365791408: + this.index = 0; + var1 = -307757129; + break; + case -307757129: + return; + } + } + } + + public float getDiff(float var1, float var2) { + return var2 * this.values[this.index]; + } + + public static aqa getOffset(aqa var0, float var1) { + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = 0; + int var10 = 0; + int var9 = 857359505; + + while (true) { + switch (var9) { + case -2141553294: + var6 = var5 * var2 * (1.0F - var1); + var7 = 0.0F; + var9 = -25874579; + break; + case -2133844300: + var6 = -var2 * (1.0F - var1); + var7 = var2 * var3; + var9 = -25874579; + break; + case -2057534414: + var8 = var10; + if (var8 != 0) { + var9 = -2141553294; + } else { + var9 = -1974726640; + } + break; + case -1974726640: + if (var5 > 0.0F) { + var9 = -1519944874; + } else { + var9 = 1653083746; + } + break; + case -1776437012: + var6 = var2 * (1.0F - var1); + var7 = -var2 * var3; + var9 = -25874579; + break; + case -1519944874: + if (var4 >= 0.0F) { + var9 = -1229603788; + } else { + var9 = 1653083746; + } + break; + case -1445930291: + var10 = 1; + var9 = -2057534414; + break; + case -1265588876: + if (var4 < 0.0F) { + var9 = -1776437012; + } else { + var9 = 188031365; + } + break; + case -1229603788: + var6 = -var2 * (1.0F - var1); + var7 = -var2 * var3; + var9 = -25874579; + break; + case -25874579: + return new aqa(var6, var7); + case 114009990: + var10 = 0; + var9 = -2057534414; + break; + case 188031365: + if (var5 < 0.0F) { + var9 = 294374678; + } else { + var9 = 1776759938; + } + break; + case 294374678: + if (var4 >= 0.0F) { + var9 = -2133844300; + } else { + var9 = 1776759938; + } + break; + case 597201231: + var6 = var2 * (1.0F - var1); + var7 = var2 * var3; + var9 = -25874579; + break; + case 857359505: + default: + var2 = 3.0F; + var3 = 1.0F - (float)Math.cos(var1 * Math.PI); + var4 = Math.signum(var0.getDeltaYaw()); + var5 = Math.signum(var0.getDeltaPitch()); + var6 = 0.0F; + var7 = 0.0F; + if (Math.abs(var0.getDeltaYaw()) < 1.5F) { + var9 = 1716231712; + } else { + var9 = 114009990; + } + break; + case 1000246594: + if (var4 < 0.0F) { + var9 = 597201231; + } else { + var9 = -25874579; + } + break; + case 1653083746: + if (var5 > 0.0F) { + var9 = -1265588876; + } else { + var9 = 188031365; + } + break; + case 1716231712: + if (Math.abs(var0.getDeltaPitch()) > 10.0F) { + var9 = -1445930291; + } else { + var9 = 114009990; + } + break; + case 1776759938: + if (var5 < 0.0F) { + var9 = 1000246594; + } else { + var9 = -25874579; + } + } + } + } + + public void reset() { + this.index = 0; + } + + public mg getInstantSetup() { + return this.instantSetup; + } + + public mg getAiSetup() { + return this.aiSetup; + } + + public int getIndex() { + return this.index; + } +} diff --git a/src/main/java/defpackage/lp.java b/src/main/java/defpackage/lp.java new file mode 100644 index 0000000..67d2ae6 --- /dev/null +++ b/src/main/java/defpackage/lp.java @@ -0,0 +1,178 @@ +package defpackage; + +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.network.protocol.game.ClientboundPlayerPositionPacket; +import net.minecraft.network.protocol.game.ClientboundPlayerRotationPacket; +import net.minecraft.network.protocol.game.ServerboundUseItemPacket; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; + +public class lp implements aqg { + private apz currentRotation = new apz(0.0F, 0.0F); + private apz previousRotation = new apz(0.0F, 0.0F); + private final li requestHandler = new li<>(); + private final lo aimManager = new lo(); + private lq previousRotationTarget = new lq(this.currentRotation, () -> this.currentRotation, this.aimManager.getInstantSetup()); + private boolean setRotation = (boolean)(((1)) != 0); + + public lp() { + j.register(this); + } + + @k + public void addLocalPlayer(ey var1) { + LocalPlayer var2 = null; + Entity var3 = null; + int var4 = 409969138; + + while (true) { + switch (var4) { + case -1281932780: + var2 = (LocalPlayer)var3; + this.currentRotation = new apz(var2.getYRot(), var2.getXRot()); + this.previousRotation = new apz(var2.getYRot(), var2.getXRot()); + this.previousRotationTarget = new lq(this.currentRotation, () -> this.currentRotation, this.aimManager.getInstantSetup()); + this.setRotation = (boolean)(((1)) != 0); + var4 = 905737641; + break; + case 409969138: + default: + var3 = var1.getEntity(); + if (var3 instanceof LocalPlayer) { + var4 = -1281932780; + } else { + var4 = 905737641; + } + break; + case 905737641: + return; + } + } + } + + @k(3) + public void update(fl var1) { + j.call(new fi()); + lq var2 = this.requestHandler.getActiveRequestValue(); + if (var2 != null) { + apz var3 = var2.rotation().get(); + this.previousRotation = this.currentRotation; + this.currentRotation = var3; + this.setRotation = (boolean)(((0)) != 0); + this.previousRotationTarget = var2; + } else if (this.setRotation) { + this.previousRotation = this.currentRotation; + this.currentRotation = this.aimManager.rotate(this.aimManager.getInstantSetup(), new apz(mc.player.getYRot(), mc.player.getXRot())); + } else { + apz var5 = new apz(mc.player.getYRot(), mc.player.getXRot()); + if (this.currentRotation.rotationDeltaTo(var5).isInRange(5.0F)) { + this.previousRotation = this.currentRotation; + this.currentRotation = this.aimManager.rotate(this.aimManager.getInstantSetup(), var5); + this.setRotation = (boolean)(((1)) != 0); + } else { + apz var4 = this.aimManager.rotate(this.previousRotationTarget.rotationConfigBack(), var5); + this.previousRotation = this.currentRotation; + this.currentRotation = var4; + } + } + + if (!this.setRotation) { + float var6 = this.currentRotation.getYaw() - mc.player.yRotO; + apz var7 = new apz(this.currentRotation.getYaw(), this.currentRotation.getPitch()); + if (var6 > 320.0F) { + var7 = new apz(mc.player.yRotO + 300.0F, this.currentRotation.getPitch()).normalize(new apz(mc.player.yRotO, mc.player.xRotO)); + } + + if (var6 < -320.0F) { + var7 = new apz(mc.player.yRotO - 300.0F, this.currentRotation.getPitch()).normalize(new apz(mc.player.yRotO, mc.player.xRotO)); + } + + this.currentRotation = var7; + } + + this.currentRotation = new apz(this.currentRotation.getYaw(), Mth.clamp(this.currentRotation.getPitch(), -90.0F, 90.0F)); + this.requestHandler.tick(); + } + + public boolean isRotationOverridden() { + int var2 = 0; + int var1 = -1430649325; + + while (true) { + switch (var1) { + case -1430649325: + default: + if (!this.setRotation) { + var1 = 1329688671; + } else { + var1 = 73373401; + } + break; + case -157942007: + return (boolean)((var2) != 0); + case 73373401: + var2 = 0; + var1 = -157942007; + break; + case 1329688671: + var2 = 1; + var1 = -157942007; + } + } + } + + public void setRotation(lq var1, int var2, rm var3) { + this.requestHandler.request(new lh<>((-75849759 | 75849761) + (-75849759 & 75849761), var2, var3, var1)); + } + + @k + public void direction(fd var1) { + var1.setYaw(this.currentRotation.getYaw()); + var1.setPitch(this.currentRotation.getPitch()); + } + + @k + public void packet(fy var1) { + switch (var1.getPacket()) { + case ClientboundPlayerRotationPacket var4: + this.currentRotation = new apz(var4.yRot(), var4.xRot()); + this.previousRotationTarget = new lq(this.currentRotation, () -> this.currentRotation, this.aimManager.getInstantSetup()); + this.setRotation = (boolean)(((1)) != 0); + break; + case ClientboundPlayerPositionPacket var5: + this.currentRotation = new apz(var5.change().yRot(), var5.change().xRot()); + this.previousRotationTarget = new lq(this.currentRotation, () -> this.currentRotation, this.aimManager.getInstantSetup()); + this.setRotation = (boolean)(((1)) != 0); + break; + case ServerboundUseItemPacket var6: + var6.yRot = this.currentRotation.getYaw(); + var6.xRot = this.currentRotation.getPitch(); + break; + default: + } + } + + public apz getCurrentRotation() { + return this.currentRotation; + } + + public apz getPreviousRotation() { + return this.previousRotation; + } + + public li getRequestHandler() { + return this.requestHandler; + } + + public lo getAimManager() { + return this.aimManager; + } + + public lq getPreviousRotationTarget() { + return this.previousRotationTarget; + } + + public boolean isSetRotation() { + return this.setRotation; + } +} diff --git a/src/main/java/defpackage/lq.java b/src/main/java/defpackage/lq.java new file mode 100644 index 0000000..38e0539 --- /dev/null +++ b/src/main/java/defpackage/lq.java @@ -0,0 +1,6 @@ +package defpackage; + +import java.util.function.Supplier; + +public record lq(apz targetRotation, Supplier rotation, mg rotationConfigBack) { +} diff --git a/src/main/java/defpackage/lr.java b/src/main/java/defpackage/lr.java new file mode 100644 index 0000000..913de0d --- /dev/null +++ b/src/main/java/defpackage/lr.java @@ -0,0 +1,186 @@ +package defpackage; + +import java.util.concurrent.atomic.AtomicBoolean; + +public class lr { + private static final String DEFAULT_MODEL = "model"; + private static final String SLOW_MODEL = "slow"; + private static final String SPEED_MODEL = "tf-0100"; + private static final String LOADER_THREAD = "evo-deep-learning-loader"; + private static final String ENGINE_UNAVAILABLE = "deep learning engine unavailable, AI rotation disabled"; + private static final String RELEASE_ACTION = "release deep learning models"; + private final AtomicBoolean loadRequested = new AtomicBoolean(); + private volatile lt model; + private volatile lt speedModer; + private volatile lt slowModel; + + public lt getModel() { + this.requestLoad(); + return this.model; + } + + public lt getSpeedModer() { + this.requestLoad(); + return this.speedModer; + } + + public lt getSlowModel() { + this.requestLoad(); + return this.slowModel; + } + + public boolean isAvailable() { + int var2 = 0; + int var1 = -1517907633; + + while (true) { + switch (var1) { + case -1640296082: + if (this.speedModer != null) { + var1 = -574251011; + } else { + var1 = 249852858; + } + break; + case -1517907633: + default: + if (this.model != null) { + var1 = 2012779985; + } else { + var1 = 249852858; + } + break; + case -574251011: + var2 = 1; + var1 = 1302885991; + break; + case 249852858: + var2 = 0; + var1 = 1302885991; + break; + case 1302885991: + return (boolean)((var2) != 0); + case 2012779985: + if (this.slowModel != null) { + var1 = -1640296082; + } else { + var1 = 249852858; + } + } + } + } + + private void requestLoad() { + Thread var1 = null; + int var2 = 1097661925; + + while (true) { + switch (var2) { + case -815270174: + return; + case -562735400: + if (!this.loadRequested + .compareAndSet( + (boolean)(((0)) != 0), + (boolean)((((2110630079 ^ -2110630078) + ((2110630079 & -2110630078) << 1)) + ) != 0))) { + var2 = -815270174; + } else { + var2 = -35182893; + } + break; + case -35182893: + var1 = new Thread( + this::loadAll, "evo-deep-learning-loader" + ); + var1.setDaemon((boolean)((((1815422335 ^ -1815422334) + ((1815422335 & -1815422334) << 1))) != 0)); + var1.setPriority((1449428930 | -1449428929) + (1449428930 & -1449428929)); + var1.start(); + return; + case 1097661925: + default: + if (!this.loadRequested.get()) { + var2 = -562735400; + } else { + var2 = -815270174; + } + } + } + } + + private void loadAll() { + try { + this.model = load("model"); + this.slowModel = load("slow"); + this.speedModer = load("tf-0100"); + } catch (Throwable var2) { + id.warn( + Cif.GENERAL, + "deep learning engine unavailable, AI rotation disabled", + var2 + ); + this.release(); + } + } + + private static lt load(String var0) { + lt var1 = new lt(var0); + var1.load(); + return var1; + } + + private void release() { + lt[] var1 = null; + int var2 = 0; + int var3 = 0; + lt var4 = null; + int var5 = -1605697256; + + while (true) { + switch (var5) { + case -1976731392: + var3++; + var5 = 1740426033; + break; + case -1605697256: + default: + lt[] var10000 = new lt[3]; + var10000[0] = this.model; + var10000[1] = this.slowModel; + var10000[2] = this.speedModer; + var1 = var10000; + var2 = var1.length; + var3 = 0; + var5 = 1740426033; + break; + case -963476306: + id.run( + Cif.GENERAL, + "release deep learning models", + var4::close + ); + var5 = -1976731392; + break; + case -143325972: + var4 = var1[var3]; + if (var4 != null) { + var5 = -963476306; + } else { + var5 = -1976731392; + } + break; + case 529942549: + this.model = null; + this.slowModel = null; + this.speedModer = null; + return; + case 1740426033: + if (var3 < var2) { + var5 = -143325972; + } else { + var5 = 529942549; + } + } + } + } +} diff --git a/src/main/java/defpackage/ls.java b/src/main/java/defpackage/ls.java new file mode 100644 index 0000000..7c12082 --- /dev/null +++ b/src/main/java/defpackage/ls.java @@ -0,0 +1,18 @@ +package defpackage; + +import ai.djl.ndarray.NDArray; +import ai.djl.ndarray.NDList; +import ai.djl.translate.Translator; +import ai.djl.translate.TranslatorContext; + +public class ls implements Translator { + public NDList processInput(TranslatorContext var1, float[] var2) { + NDArray[] var10002 = new NDArray[1]; + var10002[0] = var1.getNDManager().create(var2); + return new NDList(var10002); + } + + public float[] processOutput(TranslatorContext var1, NDList var2) { + return ((NDArray)var2.get((-690279679 | 690279679) + (-690279679 & 690279679))).toFloatArray(); + } +} diff --git a/src/main/java/defpackage/lt.java b/src/main/java/defpackage/lt.java new file mode 100644 index 0000000..2987268 --- /dev/null +++ b/src/main/java/defpackage/lt.java @@ -0,0 +1,7 @@ +package defpackage; + +public class lt extends lv { + public lt(String var1) { + super(var1, new ls(), (-2152551365632384542L | 2152551365632384544L) + (-2152551365632384542L & 2152551365632384544L)); + } +} diff --git a/src/main/java/defpackage/lu.java b/src/main/java/defpackage/lu.java new file mode 100644 index 0000000..fb48ee9 --- /dev/null +++ b/src/main/java/defpackage/lu.java @@ -0,0 +1,25 @@ +package defpackage; + +import ai.djl.training.Trainer; +import ai.djl.training.listener.TrainingListenerAdapter; +import java.util.Objects; + +/* JADX INFO: loaded from: evovis-dec.jar:lu.class */ +class lu extends TrainingListenerAdapter { + lu(lv lvVar) { + Objects.requireNonNull(lvVar); + } + + @Override // ai.djl.training.listener.TrainingListenerAdapter, ai.djl.training.listener.TrainingListener + public void onEpoch(Trainer trainer) { + id.debug(Cif.GENERAL, "training epoch {} loss {}", Integer.valueOf(trainer.getTrainingResult().getEpoch()), trainer.getTrainingResult().getTrainLoss()); + } + + @Override // ai.djl.training.listener.TrainingListenerAdapter, ai.djl.training.listener.TrainingListener + public void onTrainingBegin(Trainer trainer) { + } + + @Override // ai.djl.training.listener.TrainingListenerAdapter, ai.djl.training.listener.TrainingListener + public void onTrainingEnd(Trainer trainer) { + } +} diff --git a/src/main/java/defpackage/lv.java b/src/main/java/defpackage/lv.java new file mode 100644 index 0000000..0efbecb --- /dev/null +++ b/src/main/java/defpackage/lv.java @@ -0,0 +1,190 @@ +package defpackage; + +import ai.djl.Model; +import ai.djl.ModelException; +import ai.djl.inference.Predictor; +import ai.djl.ndarray.NDArray; +import ai.djl.ndarray.NDManager; +import ai.djl.ndarray.types.Shape; +import ai.djl.nn.Activation; +import ai.djl.nn.Blocks; +import ai.djl.nn.SequentialBlock; +import ai.djl.nn.core.Linear; +import ai.djl.nn.norm.BatchNorm; +import ai.djl.training.DefaultTrainingConfig; +import ai.djl.training.EasyTrain; +import ai.djl.training.Trainer; +import ai.djl.training.dataset.ArrayDataset; +import ai.djl.training.dataset.ArrayDataset.Builder; +import ai.djl.training.initializer.XavierInitializer; +import ai.djl.training.listener.TrainingListener; +import ai.djl.training.listener.TrainingListenerAdapter; +import ai.djl.training.listener.TrainingListener.Defaults; +import ai.djl.training.loss.Loss; +import ai.djl.training.optimizer.Adam; +import ai.djl.training.tracker.Tracker; +import ai.djl.translate.TranslateException; +import ai.djl.translate.Translator; +import java.io.Closeable; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Path; + +public abstract class lv implements Closeable { + private static final String TRAINING_EPOCH = "training epoch {} loss {}"; + private static final int NUM_EPOCH = 500; + private static final int BATCH_SIZE = 32; + private final Translator translator; + private final long outputs; + private final Model model; + private final Predictor predictor; + private final String name; + + public lv(String var1, Translator var2, long var3) { + this.name = var1; + this.translator = var2; + this.outputs = var3; + this.model = Model.newInstance(var1); + this.model.setBlock(createMlpBlock(var3)); + this.predictor = this.model.newPredictor(var2); + } + + public O predict(I var1) throws TranslateException { + return (O)this.predictor.predict(var1); + } + + public void train(float[][] var1, float[][] var2) throws ModelException, IOException { + if (var1.length == var2.length && var1.length != 0) { + long var3 = var1[0].length; + DefaultTrainingConfig var10000 = new DefaultTrainingConfig(Loss.l2Loss()) + .optInitializer(new XavierInitializer(), "weight") + .optOptimizer(Adam.builder().optLearningRateTracker(Tracker.fixed(0.001F)).build()) + .addTrainingListeners(Defaults.logging("train")); + TrainingListener[] var10001 = new TrainingListener[1]; + var10001[0] = new TrainingListenerAdapter() { + public void onEpoch(Trainer var1) { + id.debug( + Cif.GENERAL, + "training epoch {} loss {}", + var1.getTrainingResult().getEpoch(), + var1.getTrainingResult().getTrainLoss() + ); + } + + public void onTrainingBegin(Trainer var1) { + } + + public void onTrainingEnd(Trainer var1) { + } + }; + DefaultTrainingConfig var5 = var10000.addTrainingListeners(var10001); + + try { + Trainer var6 = this.model.newTrainer(var5); + + try { + NDManager var7 = NDManager.newBaseManager(); + + try { + Builder var15 = new Builder(); + NDArray[] var17 = new NDArray[1]; + var17[0] = var7.create(var1); + Builder var16 = var15.setData(var17); + NDArray[] var18 = new NDArray[1]; + var18[0] = var7.create(var2); + ArrayDataset var8 = ((Builder)var16.optLabels(var18) + .setSampling( + 32, (boolean)((((898054029 ^ -898054028) + ((898054029 & -898054028) << 1)) + ) != 0))) + .build(); + Shape[] var19 = new Shape[1]; + int var10003 = 0; + long[] var10006 = new long[2]; + var10006[0] = (-3352923951774852924L | 3352923951774852956L) + + (-3352923951774852924L & 3352923951774852956L); + var10006[1] = var3; + var19[var10003] = new Shape(var10006); + var6.initialize(var19); + EasyTrain.fit(var6, 500, var8, null); + } catch (Throwable var12) { + if (var7 != null) { + try { + var7.close(); + } catch (Throwable var11) { + var12.addSuppressed(var11); + } + } + + throw var12; + } + + if (var7 != null) { + var7.close(); + } + } catch (Throwable var13) { + if (var6 != null) { + try { + var6.close(); + } catch (Throwable var10) { + var13.addSuppressed(var10); + } + } + + throw var13; + } + + if (var6 != null) { + var6.close(); + } + } catch (TranslateException var14) { + } + } else { + throw new IllegalArgumentException( + "Features and labels must have the same size and be non-empty" + ); + } + } + + public void load(InputStream var1) throws IOException, ModelException { + this.model.load(var1); + } + + public void load(Path var1) throws IOException, ModelException { + this.model.load(var1, "tf"); + } + + public void load() { + try (InputStream var1 = this.getClass().getResourceAsStream("/assets/evolution/models/" + this.name + ".params")) { + this.load(var1); + } catch (Exception var6) { + throw new RuntimeException(var6); + } + } + + public void save(Path var1) throws IOException, ModelException { + this.model.save(var1, "tf"); + } + + @Override + public void close() { + this.predictor.close(); + this.model.close(); + } + + private static SequentialBlock createMlpBlock(long var0) { + return new SequentialBlock() + .add(Linear.builder().setUnits((-1606524911175708849L ^ 1606524911175708977L) + ((-1606524911175708849L & 1606524911175708977L) << 1)).build()) + .add(Blocks.batchFlattenBlock()) + .add(BatchNorm.builder().build()) + .add(Activation.reluBlock()) + .add(Linear.builder().setUnits((4445005211725136046L ^ -4445005211725135982L) + ((4445005211725136046L & -4445005211725135982L) << 1)).build()) + .add(Blocks.batchFlattenBlock()) + .add(BatchNorm.builder().build()) + .add(Activation.reluBlock()) + .add(Linear.builder().setUnits((-2621599041893115696L ^ 2621599041893115728L) + ((-2621599041893115696L & 2621599041893115728L) << 1)).build()) + .add(Blocks.batchFlattenBlock()) + .add(BatchNorm.builder().build()) + .add(Activation.reluBlock()) + .add(Linear.builder().setUnits(var0).build()); + } +} diff --git a/src/main/java/defpackage/lw.java b/src/main/java/defpackage/lw.java new file mode 100644 index 0000000..e4defa5 --- /dev/null +++ b/src/main/java/defpackage/lw.java @@ -0,0 +1,66 @@ +package defpackage; + +public class lw extends mb { + private static final String ROTATION_FAILURE = "ai rotation inference failed"; + private apz lerpTargetRotation = apz.ZERO; + + public apz process(md var1, apz var2) { + aqa var3 = evolution.getRotationManager().getPreviousRotation().rotationDeltaTo(evolution.getRotationManager().getCurrentRotation()); + apz var4 = evolution.getRotationManager().getCurrentRotation(); + if (Math.abs(var2.rotationDeltaTo(this.lerpTargetRotation).getDeltaYaw()) > 80.0F) { + this.lerpTargetRotation = var2; + } + + for (int var5 = 0; var5 < 3; var5++) { + apz var6 = this.process( + var1, + var4, + var2, + var3, + (boolean)(((var5 == var1.getTick() - 1? 1: (-1291548974 | 1291548974) + (-1291548974 & 1291548974)) + ) != 0)); + var3 = var4.rotationDeltaTo(var6); + var4 = var6; + } + + if (var4.rotationDeltaTo(this.lerpTargetRotation).isInRange(10.0F)) { + this.lerpTargetRotation = var2; + } + + return var4; + } + + private apz process(md var1, apz var2, apz var3, aqa var4, boolean var5) { + lt var6 = evolution.getDeepLearningManager().getSlowModel(); + if (var6 == null) { + return var3; + } + + try { + aqa var7 = var2.rotationDeltaTo(this.lerpTargetRotation); + if (Math.copySign(1.0F, var4.getDeltaYaw()) != Math.copySign(1.0F, var7.getDeltaYaw())) { + } + + float[] var10000 = new float[4]; + var10000[0] = var4.getDeltaYaw(); + var10000[1] = var4.getDeltaPitch(); + var10000[2] = var7.getDeltaYaw(); + var10000[3] = var7.getDeltaPitch(); + float[] var8 = var10000; + float[] var9 = var6.predict(var8); + float var10 = var9[0]; + float var11 = var9[1]; + aqa var12 = new aqa(var10, var11); + return var2.add(var12); + } catch (Exception var13) { + id.error( + Cif.GENERAL, "ai rotation inference failed", var13 + ); + return var2; + } + } + + public void resetLerp(apz var1) { + this.lerpTargetRotation = var1; + } +} diff --git a/src/main/java/defpackage/lx.java b/src/main/java/defpackage/lx.java new file mode 100644 index 0000000..776d9f2 --- /dev/null +++ b/src/main/java/defpackage/lx.java @@ -0,0 +1,7 @@ +package defpackage; + +public class lx extends mb { + public apz process(apz var1) { + return rotationManager.getCurrentRotation().add(rotationManager.getCurrentRotation().rotationDeltaTo(var1)); + } +} diff --git a/src/main/java/defpackage/ly.java b/src/main/java/defpackage/ly.java new file mode 100644 index 0000000..ef1cebc --- /dev/null +++ b/src/main/java/defpackage/ly.java @@ -0,0 +1,10 @@ +package defpackage; + +class ly { + ly() { + } + + public float transform(float var1, float var2, float var3) { + return (1.0F - var3) * (1.0F - var3) * var1 + 2.0F * (1.0F - var3) * var3 * 1.0F + var3 * var3 * var2; + } +} diff --git a/src/main/java/defpackage/lz.java b/src/main/java/defpackage/lz.java new file mode 100644 index 0000000..385b4ba --- /dev/null +++ b/src/main/java/defpackage/lz.java @@ -0,0 +1,10 @@ +package defpackage; + +class lz { + lz() { + } + + public float transform(float var1) { + return (float)(1.0 / (1.0 + Math.exp(-0.5 * (var1 - 0.3)))); + } +} diff --git a/src/main/java/defpackage/m.java b/src/main/java/defpackage/m.java new file mode 100644 index 0000000..68a5ff6 --- /dev/null +++ b/src/main/java/defpackage/m.java @@ -0,0 +1,4 @@ +package defpackage; + +public interface m { +} diff --git a/src/main/java/defpackage/ma.java b/src/main/java/defpackage/ma.java new file mode 100644 index 0000000..6cc188a --- /dev/null +++ b/src/main/java/defpackage/ma.java @@ -0,0 +1,136 @@ +package defpackage; + +import java.util.Random; +import kotlin.Pair; +import net.minecraft.util.Mth; + +public class ma extends mb { + private final lz sigmoid = new lz(); + private final ly bezier = new ly(); + private final Random random = new Random(); + + public apz process(mf var1, apz var2, apz var3) { + Pair var4 = this.calculateFactors( + evolution.getRotationManager().getCurrentRotation(), + var3, + var1.getHorizontalSpeedSetting(), + var1.getVerticalSpeedSetting(), + var1.getDirectionChangeFactor(), + var1.getMidPoint() + ); + return var2.towardsLinear(var3, (Float)var4.getFirst(), (Float)var4.getSecond()); + } + + public Pair calculateFactors(apz var1, apz var2, aqi var3, aqi var4, aqi var5, float var6) { + aqa var7 = null; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var16 = 0; + int var17 = 0; + int var15 = 871075946; + + while (true) { + switch (var15) { + case -1486847875: + var11 = var16 / 100.0F; + if (var2 != null) { + var15 = -1257379316; + } else { + var15 = 1944435647; + } + break; + case -1464643227: + var16 = var3.getStart(); + var15 = -1486847875; + break; + case -1257379316: + var17 = var4.random(); + var15 = 1116810412; + break; + case -1232783611: + var10 = evolution.getRotationManager().getPreviousRotationTarget().targetRotation().angleTo(var2); + var10 = Mth.clamp(var10, 0.0F, 1.0F); + var10 *= var5.random() / 100.0F; + var15 = -801734071; + break; + case -801734071: + if (var2 != null) { + var15 = 1206056666; + } else { + var15 = -1464643227; + } + break; + case 871075946: + default: + var7 = var1.rotationDeltaTo(var2); + var8 = var7.getDeltaYaw(); + var9 = var7.getDeltaPitch(); + var10 = 0.0F; + if (var2 != null) { + var15 = 1868204762; + } else { + var15 = -801734071; + } + break; + case 1116810412: + var12 = var17 / 100.0F; + var13 = this.calculateFactor( + "Yaw", Math.abs(var8), Mth.clamp(var11, 0.0F, 1.0F), var10, var6 + ); + var14 = this.calculateFactor( + "Pitch", + Math.abs(var9), + Mth.clamp(var12, 0.0F, 1.0F), + var10, + var6 + ); + return new Pair(var13 * Math.abs(var8), var14 * Math.abs(var9)); + case 1206056666: + var16 = var3.random(); + var15 = -1486847875; + break; + case 1868204762: + if (evolution.getRotationManager().getPreviousRotationTarget() != null) { + var15 = -1232783611; + } else { + var15 = -801734071; + } + break; + case 1944435647: + var17 = var4.getStart(); + var15 = 1116810412; + } + } + } + + private float calculateFactor(String var1, float var2, float var3, float var4, float var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = 2117637626; + + while (true) { + switch (var9) { + case -1632876575: + return var8 * Mth.clamp(var3 + var4, 0.0F, 1.0F); + case -726050795: + return var7 * var3; + case 2117637626: + } + + var6 = Mth.clamp(var2 / 180.0F, 0.0F, 1.0F); + var7 = this.bezier.transform(0.05F, 1.0F, 1.0F - var6); + var8 = this.sigmoid.transform(var6); + if (var6 > var5) { + var9 = -726050795; + } else { + var9 = -1632876575; + } + } + } +} diff --git a/src/main/java/defpackage/mb.java b/src/main/java/defpackage/mb.java new file mode 100644 index 0000000..ea1d48b --- /dev/null +++ b/src/main/java/defpackage/mb.java @@ -0,0 +1,4 @@ +package defpackage; + +public abstract class mb implements aqf { +} diff --git a/src/main/java/defpackage/mc.java b/src/main/java/defpackage/mc.java new file mode 100644 index 0000000..1a5650d --- /dev/null +++ b/src/main/java/defpackage/mc.java @@ -0,0 +1,70 @@ +package defpackage; + + +public class mc { + private boolean tick$set; + private int tick$value; + private boolean interpolationRotationConfig$set; + private mf interpolationRotationConfig$value; + + mc() { + } + + public mc tick(int var1) { + this.tick$value = var1; + this.tick$set = (boolean)(((1)) != 0); + return this; + } + + public mc interpolationRotationConfig(mf var1) { + this.interpolationRotationConfig$value = var1; + this.interpolationRotationConfig$set = (boolean)(((1)) != 0); + return this; + } + + public md build() { + int var1 = 0; + mf var2 = null; + int var3 = -386051508; + + while (true) { + switch (var3) { + case -1268376980: + return new md(var1, var2); + case -1075614562: + var2 = md.$default$interpolationRotationConfig(); + var3 = -1268376980; + break; + case -386051508: + default: + var1 = this.tick$value; + if (!this.tick$set) { + var3 = 1317097156; + } else { + var3 = 2111544142; + } + break; + case 1317097156: + var1 = md.$default$tick(); + var3 = 2111544142; + break; + case 2111544142: + var2 = this.interpolationRotationConfig$value; + if (!this.interpolationRotationConfig$set) { + var3 = -1075614562; + } else { + var3 = -1268376980; + } + } + } + } + + @Override + public String toString() { + return "AiRotationConfig.AiRotationConfigBuilder(tick$value=" + + this.tick$value + + ", interpolationRotationConfig$value=" + + this.interpolationRotationConfig$value + + ")"; + } +} diff --git a/src/main/java/defpackage/md.java b/src/main/java/defpackage/md.java new file mode 100644 index 0000000..f572501 --- /dev/null +++ b/src/main/java/defpackage/md.java @@ -0,0 +1,42 @@ +package defpackage; + + +public class md extends mg { + private int tick; + private mf interpolationRotationConfig; + + @Override + public mh getType() { + return mh.AI; + } + + static int $default$tick() { + return 3; + } + + static mf $default$interpolationRotationConfig() { + return new mf( + new aqi(2, (-1994899012 | 1994899017) + (-1994899012 & 1994899017)), + new aqi(5, (1203872404 ^ -1203872396) + ((1203872404 & -1203872396) << 1)), + new aqi(20, (16189351 | -16189321) + (16189351 & -16189321)), + 0.35F + ); + } + + md(int var1, mf var2) { + this.tick = var1; + this.interpolationRotationConfig = var2; + } + + public static mc builder() { + return new mc(); + } + + public int getTick() { + return this.tick; + } + + public mf getInterpolationRotationConfig() { + return this.interpolationRotationConfig; + } +} diff --git a/src/main/java/defpackage/me.java b/src/main/java/defpackage/me.java new file mode 100644 index 0000000..d1ebe2d --- /dev/null +++ b/src/main/java/defpackage/me.java @@ -0,0 +1,8 @@ +package defpackage; + +public class me extends mg { + @Override + public mh getType() { + return mh.INSTANT; + } +} diff --git a/src/main/java/defpackage/mf.java b/src/main/java/defpackage/mf.java new file mode 100644 index 0000000..a1e471a --- /dev/null +++ b/src/main/java/defpackage/mf.java @@ -0,0 +1,37 @@ +package defpackage; + + +public class mf extends mg { + private final aqi horizontalSpeedSetting; + private final aqi verticalSpeedSetting; + private final aqi directionChangeFactor; + private final float midPoint; + + @Override + public mh getType() { + return mh.INTERPOLATION; + } + + public aqi getHorizontalSpeedSetting() { + return this.horizontalSpeedSetting; + } + + public aqi getVerticalSpeedSetting() { + return this.verticalSpeedSetting; + } + + public aqi getDirectionChangeFactor() { + return this.directionChangeFactor; + } + + public float getMidPoint() { + return this.midPoint; + } + + public mf(aqi var1, aqi var2, aqi var3, float var4) { + this.horizontalSpeedSetting = var1; + this.verticalSpeedSetting = var2; + this.directionChangeFactor = var3; + this.midPoint = var4; + } +} diff --git a/src/main/java/defpackage/mg.java b/src/main/java/defpackage/mg.java new file mode 100644 index 0000000..b0ce6c3 --- /dev/null +++ b/src/main/java/defpackage/mg.java @@ -0,0 +1,5 @@ +package defpackage; + +public abstract class mg { + public abstract mh getType(); +} diff --git a/src/main/java/defpackage/mh.java b/src/main/java/defpackage/mh.java new file mode 100644 index 0000000..e26fb8e --- /dev/null +++ b/src/main/java/defpackage/mh.java @@ -0,0 +1,7 @@ +package defpackage; + +public enum mh { + INSTANT, + INTERPOLATION, + AI; +} diff --git a/src/main/java/defpackage/mi.java b/src/main/java/defpackage/mi.java new file mode 100644 index 0000000..3c323b4 --- /dev/null +++ b/src/main/java/defpackage/mi.java @@ -0,0 +1,349 @@ +package defpackage; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Supplier; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; + +public enum mi { + NONE("", "None"), + CLICK( + "ui.click", + "Click" + ), + TOGGLE_ON( + "ui.toggle_on", + "Toggle On" + ), + TOGGLE_OFF( + "ui.toggle_off", + "Toggle Off" + ), + SLIDER( + "ui.slider", + "Slider" + ), + TAB("ui.tab", "Tab"), + OPEN( + "ui.open", + "Open" + ), + CLOSE( + "ui.close", + "Close" + ), + DRAG( + "ui.drag", + "Drag" + ), + RESIZE( + "ui.resize", + "Resize" + ), + DROPDOWN( + "ui.dropdown", + "Dropdown" + ), + APPLE_PAY( + "ui.applepay", + "Apple Pay" + ), + CLICKGUI_OPEN( + "ui.clickgui_open", + "ClickGUI Open" + ), + CRITICAL( + "ui.critical", + "Critical" + ), + TOGGLE( + "ui.toggle", + "Toggle" + ), + TYPING( + "ui.typing", + "Typing" + ), + WELCOME( + "ui.welcome", + "Welcome" + ), + WHISTLE( + "sfx.whistle", + "Whistle" + ), + WOLF_WHISTLE( + "sfx.wolf_whistle", + "Wolf Whistle" + ), + FLASHBANG( + "sfx.flashbang", + "Flashbang" + ), + BASS_DROP( + "sfx.bass_drop", + "Bass Drop" + ), + KA_CHING( + "sfx.ka_ching", + "Ka-Ching" + ), + AIR_HORN( + "sfx.air_horn", + "Air Horn" + ), + GLASS_SHATTER( + "sfx.glass_shatter", + "Glass Shatter" + ), + CHURCH_BELL( + "sfx.church_bell", + "Church Bell" + ), + ANVIL_CLANG( + "sfx.anvil_clang", + "Anvil Clang" + ), + RISER( + "sfx.riser", + "Riser" + ), + CLIP_SAVED( + "ui.clip_saved", + "Clip Saved" + ), + FIREWORK_WHISTLE( + "Firework Whistle", () -> SoundEvents.FIREWORK_ROCKET_TWINKLE + ), + FIREWORK_LAUNCH("Firework Launch", () -> SoundEvents.FIREWORK_ROCKET_LAUNCH), + FIREWORK_BLAST("Firework Blast", () -> SoundEvents.FIREWORK_ROCKET_BLAST), + FIREWORK_LARGE_BLAST( + "Firework Large Blast", () -> SoundEvents.FIREWORK_ROCKET_LARGE_BLAST + ), + TOTEM_USE("Totem Use", () -> SoundEvents.TOTEM_USE), + AMETHYST_CHIME( + "Amethyst Chime", () -> SoundEvents.AMETHYST_BLOCK_CHIME + ), + ANVIL_LAND("Anvil Land", () -> SoundEvents.ANVIL_LAND), + BELL("Bell", () -> SoundEvents.BELL_BLOCK), + ARROW_HIT("Arrow Hit", () -> SoundEvents.ARROW_HIT_PLAYER), + ENDER_DRAGON_GROWL( + "Dragon Growl", () -> SoundEvents.ENDER_DRAGON_GROWL + ); + + private static final Map BY_DISPLAY_NAME = createLookup(); + private static final String[] DISPLAY_NAMES = createDisplayNames(); + private static boolean registered; + private final String key; + private final String displayName; + private final Supplier vanillaEvent; + private SoundEvent event; + + mi(String var3, String var4) { + this(var3, var4, null); + } + + mi(String var3, Supplier var4) { + this("", var3, var4); + } + + mi(String var3, String var4, Supplier var5) { + this.key = var3; + this.displayName = var4; + this.vanillaEvent = var5; + } + + public static void initialize() { + mi[] var0 = null; + int var1 = 0; + int var2 = 0; + mi var3 = null; + Identifier var4 = null; + int var5 = -1348449744; + + while (true) { + switch (var5) { + case -1683986852: + return; + case -1380612483: + if (var3.isSilent()) { + var5 = -253993426; + } else { + var5 = -968568302; + } + break; + case -1348449744: + default: + if (registered) { + var5 = -1683986852; + } else { + var5 = -1210447108; + } + break; + case -1210447108: + registered = (boolean)(((1)) != 0); + var0 = values(); + var1 = var0.length; + var2 = 0; + var5 = 1211354833; + break; + case -1196354188: + var3 = var0[var2]; + if (var3.vanillaEvent != null) { + var5 = 1220002026; + } else { + var5 = -1380612483; + } + break; + case -968568302: + var4 = bz.id(var3.key); + var3.event = (SoundEvent)Registry.register(BuiltInRegistries.SOUND_EVENT, var4, SoundEvent.createVariableRangeEvent(var4)); + var5 = 20557648; + break; + case -897352756: + return; + case -253993426: + var5 = 20557648; + break; + case 20557648: + var2++; + var5 = 1211354833; + break; + case 1211354833: + if (var2 < var1) { + var5 = -1196354188; + } else { + var5 = -897352756; + } + break; + case 1220002026: + var3.event = var3.vanillaEvent.get(); + var5 = 20557648; + } + } + } + + public static mi byDisplayName(String var0) { + return BY_DISPLAY_NAME.get(var0); + } + + public static String[] displayNames() { + return (String[])DISPLAY_NAMES.clone(); + } + + public boolean isSilent() { + int var2 = 0; + int var1 = 189786911; + + while (true) { + switch (var1) { + case -1243864242: + var2 = 1; + var1 = 2083438141; + break; + case -650528350: + var2 = 0; + var1 = 2083438141; + break; + case -506100039: + if (this.vanillaEvent == null) { + var1 = -1243864242; + } else { + var1 = -650528350; + } + break; + case 189786911: + default: + if (this.key.isEmpty()) { + var1 = -506100039; + } else { + var1 = -650528350; + } + break; + case 2083438141: + return (boolean)((var2) != 0); + } + } + } + + public String displayName() { + return this.displayName; + } + + public SoundEvent event() { + return this.event; + } + + private static Map createLookup() { + HashMap var0 = null; + mi[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = -1527275785; + + while (true) { + switch (var5) { + case -2076162715: + var4 = var1[var3]; + var0.put(((mi)var4).displayName, var4); + var3++; + var5 = -1356905299; + break; + case -1527275785: + default: + var0 = new HashMap(); + var1 = values(); + var2 = var1.length; + var3 = 0; + var5 = -1356905299; + break; + case -1356905299: + if (var3 < var2) { + var5 = -2076162715; + } else { + var5 = 1734870391; + } + break; + case 1734870391: + return Map.copyOf(var0); + } + } + } + + private static String[] createDisplayNames() { + mi[] var0 = null; + String[] var1 = null; + int var2 = 0; + int var3 = -1774014875; + + while (true) { + switch (var3) { + case -1774014875: + default: + var0 = values(); + var1 = new String[var0.length]; + var2 = 0; + var3 = -487663869; + break; + case -1266813977: + return var1; + case -487663869: + if (var2 < var0.length) { + var3 = -334506817; + } else { + var3 = -1266813977; + } + break; + case -334506817: + var1[var2] = var0[var2].displayName; + var2++; + var3 = -487663869; + } + } + } +} diff --git a/src/main/java/defpackage/mj.java b/src/main/java/defpackage/mj.java new file mode 100644 index 0000000..ebe0dc1 --- /dev/null +++ b/src/main/java/defpackage/mj.java @@ -0,0 +1,49 @@ +package defpackage; + +public enum mj { + GUI_OPEN("GUI Open", mi.OPEN, 1.0F, 1.0F), + GUI_CLOSE("GUI Close", mi.CLOSE, 1.0F, 1.0F), + BUTTON_CLICK("Button Click", mi.CLICK, 1.0F, 1.0F), + SETTING_ON("Setting On", mi.TOGGLE_ON, 1.0F, 1.0F), + SETTING_OFF("Setting Off", mi.TOGGLE_OFF, 1.0F, 1.0F), + SLIDER("Slider", mi.SLIDER, 1.0F, 1.0F), + TAB_SWITCH("Tab Switch", mi.TAB, 1.0F, 1.0F), + DROPDOWN("Dropdown", mi.DROPDOWN, 1.0F, 1.0F), + PANEL_DRAG("Panel Drag", mi.DRAG, 1.0F, 1.0F), + PANEL_RESIZE("Panel Resize", mi.RESIZE, 1.0F, 1.0F), + TYPING("Typing", mi.NONE, 0.55F, 1.0F), + MODULE_ENABLED("Module Enabled", mi.TOGGLE_ON, 1.0F, 1.0F), + MODULE_DISABLED("Module Disabled", mi.TOGGLE_OFF, 1.0F, 1.0F), + CRITICAL_HIT("Critical Hit", mi.NONE, 1.0F, 1.0F), + NOTIFICATION("Notification", mi.NONE, 0.85F, 1.0F), + WORLD_JOIN("World Join", mi.NONE, 1.0F, 1.0F), + CLIP_SAVED("Clip Saved", mi.CLIP_SAVED, 1.0F, 1.0F); + + private final String displayName; + private final mi defaultSound; + private final float volume; + private final float pitch; + + mj(String var3, mi var4, float var5, float var6) { + this.displayName = var3; + this.defaultSound = var4; + this.volume = var5; + this.pitch = var6; + } + + public String displayName() { + return this.displayName; + } + + public mi defaultSound() { + return this.defaultSound; + } + + public float volume() { + return this.volume; + } + + public float pitch() { + return this.pitch; + } +} diff --git a/src/main/java/defpackage/mk.java b/src/main/java/defpackage/mk.java new file mode 100644 index 0000000..99932d8 --- /dev/null +++ b/src/main/java/defpackage/mk.java @@ -0,0 +1,212 @@ +package defpackage; + +import java.io.File; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import net.minecraft.client.resources.sounds.Sound; +import net.minecraft.client.resources.sounds.Sound.Type; +import net.minecraft.client.sounds.WeighedSoundEvents; +import net.minecraft.resources.Identifier; +import net.minecraft.server.packs.PackResources; +import net.minecraft.server.packs.resources.IoSupplier; +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.valueproviders.ConstantFloat; + +public final class mk { + private static final String FOLDER_NAME = "sounds"; + private static final String OGG_SUFFIX = ".ogg"; + private static final String LOCATION_PREFIX = "custom/"; + private static final String DUPLICATE_SUFFIX = "_"; + private static final char REPLACEMENT_CHAR = '_'; + private static final String ALLOWED_PATH_CHARS = "0123456789abcdefghijklmnopqrstuvwxyz_-."; + private static final int SOUND_WEIGHT = 1; + private static final int ATTENUATION_DISTANCE = 16; + private static final String FOLDER_FAILURE = "custom sound folder {} unavailable"; + private static final String SCAN_FAILURE = "custom sound scan failed"; + private static final String INSTALL_FAILURE = "custom sound {} install failed"; + private static final Map events = new LinkedHashMap<>(); + + private mk() { + } + + public static File folder() { + return new File(bz.DIRECTORY, "sounds"); + } + + public static List displayNames() { + synchronized (events) { + return List.copyOf(events.keySet()); + } + } + + public static SoundEvent event(String var0) { + synchronized (events) { + return events.get(var0); + } + } + + public static void install(Map var0, Map var1) { + Path var2 = folder().toPath(); + if (ensureFolder(var2)) { + PackResources var3 = anySource(var1); + if (var3 != null) { + LinkedHashMap var4 = new LinkedHashMap(); + + for (Path var6 : listOggFiles(var2)) { + String var7 = baseName(var6); + if (!var7.isEmpty() && mi.byDisplayName(var7) == null && !var4.containsKey(var7)) { + SoundEvent var8 = register(var6, var7, var4.size(), var0, var1, var3); + if (var8 != null) { + var4.put(var7, var8); + } + } + } + + synchronized (events) { + events.clear(); + events.putAll(var4); + } + } + } + } + + private static SoundEvent register( + Path var0, String var1, int var2, Map var3, Map var4, PackResources var5 + ) { + try { + Identifier var6 = bz.id("custom/" + sanitize(var1) + "_" + var2); + Sound var7 = new Sound( + var6, + ConstantFloat.of(1.0F), + ConstantFloat.of(1.0F), + 1, + Type.FILE, + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (-1356845708 ^ 1356845724) + ((-1356845708 & 1356845724) << 1) + ); + WeighedSoundEvents var8 = new WeighedSoundEvents(var6, null); + var8.addSound(var7); + var3.put(var6, var8); + var4.put(var7.getPath(), new Resource(var5, IoSupplier.create(var0))); + return SoundEvent.createVariableRangeEvent(var6); + } catch (RuntimeException var9) { + id.warn( + Cif.MEDIA, + "custom sound {} install failed", + var1, + var9 + ); + return null; + } + } + + private static boolean ensureFolder(Path var0) { + try { + Files.createDirectories(var0); + return (boolean)(((1)) != 0); + } catch (Exception var2) { + id.warn( + Cif.MEDIA, + "custom sound folder {} unavailable", + var0, + var2 + ); + return (boolean)(((0)) != 0); + } + } + + private static List listOggFiles(Path var0) { + ArrayList var1 = new ArrayList(); + + try (DirectoryStream var2 = Files.newDirectoryStream(var0)) { + for (Path var4 : var2) { + if (Files.isRegularFile(var4) && hasOggSuffix(var4)) { + var1.add(var4); + } + } + } catch (Exception var7) { + id.warn(Cif.MEDIA, "custom sound scan failed", var7); + return List.of(); + } + + Collections.sort(var1); + return var1; + } + + private static PackResources anySource(Map var0) { + Iterator var1 = null; + Resource var2 = null; + PackResources var3 = null; + int var4 = 2055955882; + + while (true) { + switch (var4) { + case -2082643139: + var4 = -992539110; + break; + case -1602076843: + return null; + case -1321927522: + var2 = (Resource)var1.next(); + var3 = var2.source(); + if (var3 != null) { + var4 = 1522992064; + } else { + var4 = -2082643139; + } + break; + case -992539110: + if (var1.hasNext()) { + var4 = -1321927522; + } else { + var4 = -1602076843; + } + break; + case 1522992064: + return var3; + case 2055955882: + default: + var1 = var0.values().iterator(); + var4 = -992539110; + } + } + } + + private static boolean hasOggSuffix(Path var0) { + return var0.getFileName().toString().toLowerCase(Locale.ROOT).endsWith(".ogg"); + } + + private static String baseName(Path var0) { + String var1 = var0.getFileName().toString(); + return var1.substring(0, var1.length() - ".ogg".length()); + } + + private static String sanitize(String var0) { + StringBuilder var1 = new StringBuilder(var0.length()); + char[] var2 = var0.toLowerCase(Locale.ROOT).toCharArray(); + int var3 = var2.length; + + for (int var4 = 0; var4 < var3; var4++) { + char var5 = var2[var4]; + var1.append( + (char)("0123456789abcdefghijklmnopqrstuvwxyz_-." + .indexOf(var5) + >= 0 + ? var5 + : (-781907719 | 781907814) + (-781907719 & 781907814)) + ); + } + + return var1.toString(); + } +} diff --git a/src/main/java/defpackage/ml.java b/src/main/java/defpackage/ml.java new file mode 100644 index 0000000..2a0085f --- /dev/null +++ b/src/main/java/defpackage/ml.java @@ -0,0 +1,65 @@ +package defpackage; + +import net.minecraft.client.resources.sounds.AbstractSoundInstance; +import net.minecraft.client.resources.sounds.TickableSoundInstance; +import net.minecraft.resources.Identifier; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.RandomSource; + +public class ml extends AbstractSoundInstance implements TickableSoundInstance { + private boolean done = (boolean)(((0)) != 0); + private int ticks = 0; + private int maxFadeTicks = 20; + private final float initialVolume; + + public ml(Identifier var1, float var2, float var3) { + super(var1, SoundSource.MASTER, RandomSource.create()); + this.volume = var3; + this.initialVolume = var3; + this.pitch = var2; + this.looping = (boolean)(((0)) != 0); + this.delay = 0; + } + + public void startFadeOut(int var1) { + this.ticks = var1; + this.maxFadeTicks = var1; + } + + public boolean isStopped() { + return this.done; + } + + public void tick() { + int var1 = -1958497020; + + while (true) { + switch (var1) { + case -1958497020: + default: + if (this.ticks > 0) { + var1 = -1633639514; + } else { + var1 = 1068024135; + } + break; + case -1633639514: + this.ticks -= 1; + this.volume = this.initialVolume * this.ticks / this.maxFadeTicks; + if (this.ticks <= 0) { + var1 = -787505092; + } else { + var1 = 1068024135; + } + break; + case -787505092: + this.volume = 0.0F; + this.done = (boolean)(((1)) != 0); + var1 = 1068024135; + break; + case 1068024135: + return; + } + } + } +} diff --git a/src/main/java/defpackage/mm.java b/src/main/java/defpackage/mm.java new file mode 100644 index 0000000..86f279d --- /dev/null +++ b/src/main/java/defpackage/mm.java @@ -0,0 +1,314 @@ +package defpackage; + +import java.util.EnumMap; +import java.util.Map; +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.sounds.SimpleSoundInstance; +import net.minecraft.client.resources.sounds.SoundInstance; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; + +public class mm { + private static final float[] PENTATONIC_SCALE; + private static final int FADE_OUT_TICKS = 20; + private static final int FADE_OUT_REPLACE_TICKS = 2; + private static final float MIN_PITCH = 0.5F; + private static final float MAX_PITCH = 2.0F; + private final Map activeFadingSounds = new EnumMap<>(mj.class); + + public void play(mj var1) { + this.play(var1, 1.0F); + } + + public void play(mj var1, float var2) { + mi var3 = null; + SoundEvent var4 = null; + float var5 = 0.0F; + float var6 = 0.0F; + int var7 = 1007137365; + + while (true) { + switch (var7) { + case -1773318186: + var6 = clampPitch(var1.pitch() * var2); + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(var4, var6, var5)); + return; + case -1596972463: + var5 = var1.volume() * tj.masterVolume(); + if (var5 <= 0.0F) { + var7 = 607349678; + } else { + var7 = -1773318186; + } + break; + case -677761099: + return; + case 607349678: + return; + case 1007137365: + default: + var3 = tj.resolve(var1); + var4 = var3.event(); + if (var4 == null) { + var7 = -677761099; + } else { + var7 = -1596972463; + } + } + } + } + + public void play(mi var1, float var2, float var3) { + this.play(var1.event(), var2, var3); + } + + public void play(SoundEvent var1, float var2, float var3) { + float var4 = 0.0F; + int var5 = -912552757; + + while (true) { + switch (var5) { + case -1591711732: + return; + case -912552757: + default: + if (var1 == null) { + var5 = -72368044; + } else { + var5 = -256454267; + } + break; + case -256454267: + var4 = var2 * tj.masterVolume(); + if (var4 <= 0.0F) { + var5 = -1591711732; + } else { + var5 = 678810894; + } + break; + case -72368044: + return; + case 678810894: + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(var1, clampPitch(var3), var4)); + return; + } + } + } + + public void playAt(SoundEvent var1, double var2, double var4, double var6, float var8, float var9) { + Minecraft var10 = null; + float var11 = 0.0F; + int var12 = 329235335; + + while (true) { + switch (var12) { + case -1898803996: + var11 = var8 * tj.masterVolume(); + if (var11 <= 0.0F) { + var12 = 72251919; + } else { + var12 = 1475016728; + } + break; + case -459013232: + return; + case -60814607: + var10 = Minecraft.getInstance(); + if (var10.level == null) { + var12 = -459013232; + } else { + var12 = -1898803996; + } + break; + case 72251919: + return; + case 329235335: + default: + if (var1 == null) { + var12 = 2043558761; + } else { + var12 = -60814607; + } + break; + case 1475016728: + var10.level + .playLocalSound( + var2, + var4, + var6, + var1, + SoundSource.PLAYERS, + var11, + clampPitch(var9), + (boolean)((((-931663427 ^ 931663427) + ((-931663427 & 931663427) << 1)) + ) != 0)); + return; + case 2043558761: + return; + } + } + } + + public void playFading(mj var1, float var2) { + mi var3 = null; + SoundEvent var4 = null; + float var5 = 0.0F; + Identifier var6 = null; + ml var7 = null; + SoundInstance var8 = null; + int var9 = 498214570; + + while (true) { + switch (var9) { + case -173214821: + return; + case -159209441: + var8 = new ml(var6, clampPitch(var1.pitch() * var2), var5); + this.activeFadingSounds.put(var1, var8); + Minecraft.getInstance().getSoundManager().play(var8); + return; + case 103479502: + return; + case 388702212: + var6 = BuiltInRegistries.SOUND_EVENT.getKey(var4); + if (var6 == null) { + var9 = -173214821; + } else { + var9 = 1908896036; + } + break; + case 498214570: + default: + var3 = tj.resolve(var1); + var4 = var3.event(); + if (var4 == null) { + var9 = 103479502; + } else { + var9 = 2046517466; + } + break; + case 1720515100: + return; + case 1908896036: + var7 = this.activeFadingSounds.get(var1); + if (var7 != null) { + var9 = 1934493036; + } else { + var9 = -159209441; + } + break; + case 1934493036: + var7.startFadeOut((-2042138108 | 2042138110) + (-2042138108 & 2042138110)); + var9 = -159209441; + break; + case 2046517466: + var5 = var1.volume() * tj.masterVolume(); + if (var5 <= 0.0F) { + var9 = 1720515100; + } else { + var9 = 388702212; + } + } + } + } + + public void playClick() { + this.play(mj.BUTTON_CLICK); + } + + public void playToggle(boolean var1) { + this.play(var1 ? mj.SETTING_ON : mj.SETTING_OFF); + } + + public void playSlider(float var1) { + this.play(mj.SLIDER, getMusicalPitch(var1)); + } + + public void playTab() { + this.play(mj.TAB_SWITCH); + } + + public void playOpen() { + this.play(mj.GUI_OPEN); + } + + public void playClose() { + this.play(mj.GUI_CLOSE); + } + + public void playDropdown() { + this.play(mj.DROPDOWN); + } + + public void playTyping() { + this.play(mj.TYPING); + } + + public void playDrag(float var1) { + this.playFading(mj.PANEL_DRAG, var1); + } + + public void playResize(float var1) { + this.playFading(mj.PANEL_RESIZE, var1); + } + + public void stopDragAndResize() { + this.stopFading(mj.PANEL_DRAG); + this.stopFading(mj.PANEL_RESIZE); + } + + private void stopFading(mj var1) { + ml var2 = null; + int var3 = -327697341; + + while (true) { + switch (var3) { + case -327697341: + default: + var2 = this.activeFadingSounds.remove(var1); + if (var2 != null) { + var3 = 2015990731; + } else { + var3 = 394529035; + } + break; + case 394529035: + return; + case 2015990731: + var2.startFadeOut((571356927 ^ -571356907) + ((571356927 & -571356907) << 1)); + var3 = 394529035; + } + } + } + + private static float clampPitch(float var0) { + return Math.max(0.5F, Math.min(2.0F, var0)); + } + + private static float getMusicalPitch(float var0) { + int var1 = Math.round(var0 * (PENTATONIC_SCALE.length - ((111851222 | -111851221) + (111851222 & -111851221)))); + var1 = Math.max( + 0, + Math.min(PENTATONIC_SCALE.length - (1), var1) + ); + return PENTATONIC_SCALE[var1]; + } + + static { + float[] var10000 = new float[11]; + var10000[0] = 0.5F; + var10000[1] = 0.561F; + var10000[2] = 0.63F; + var10000[3] = 0.749F; + var10000[4] = 0.841F; + var10000[5] = 1.0F; + var10000[6] = 1.122F; + var10000[7] = 1.26F; + var10000[8] = 1.498F; + var10000[9] = 1.682F; + var10000[10] = 2.0F; + PENTATONIC_SCALE = var10000; + } +} diff --git a/src/main/java/defpackage/mn.java b/src/main/java/defpackage/mn.java new file mode 100644 index 0000000..a490f2f --- /dev/null +++ b/src/main/java/defpackage/mn.java @@ -0,0 +1,50 @@ +package defpackage; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; +import net.minecraft.sounds.SoundEvent; + +public final class mn { + private static final String SOUNDS_RESOURCE = "/assets/evolution/sounds.json"; + private static final String REGISTER_FAILURE = "sound registration failed for prefix {}"; + + private mn() { + } + + public static Map register(String var0) { + HashMap var1 = new HashMap(); + + try (InputStream var2 = mn.class.getResourceAsStream("/assets/evolution/sounds.json")) { + if (var2 == null) { + return var1; + } + + JsonObject var3 = JsonParser.parseString(new String(var2.readAllBytes(), StandardCharsets.UTF_8)).getAsJsonObject(); + + for (String var5 : var3.keySet()) { + if (var5.startsWith(var0)) { + Identifier var6 = bz.id(var5); + var1.put(var5, (SoundEvent)Registry.register(BuiltInRegistries.SOUND_EVENT, var6, SoundEvent.createVariableRangeEvent(var6))); + } + } + + return var1; + } catch (Exception var9) { + id.warn( + Cif.COSMETIC, + "sound registration failed for prefix {}", + var0, + var9 + ); + return Collections.emptyMap(); + } + } +} diff --git a/src/main/java/defpackage/mo.java b/src/main/java/defpackage/mo.java new file mode 100644 index 0000000..eae62f9 --- /dev/null +++ b/src/main/java/defpackage/mo.java @@ -0,0 +1,6 @@ +package defpackage; + +import net.minecraft.world.item.ItemStack; + +public record mo(ItemStack stack, long count, int containers) { +} diff --git a/src/main/java/defpackage/mp.java b/src/main/java/defpackage/mp.java new file mode 100644 index 0000000..4f4bdb4 --- /dev/null +++ b/src/main/java/defpackage/mp.java @@ -0,0 +1,40 @@ +package defpackage; + +import java.util.List; +import net.minecraft.world.item.ItemStack; + +public final class mp { + private final List items; + private String type; + private long lastSeen; + + public mp(List var1, String var2, long var3) { + this.items = var1; + this.type = var2; + this.lastSeen = var3; + } + + public boolean isEmpty() { + return this.items.isEmpty(); + } + + public List getItems() { + return this.items; + } + + public String getType() { + return this.type; + } + + public long getLastSeen() { + return this.lastSeen; + } + + public void setType(String var1) { + this.type = var1; + } + + public void setLastSeen(long var1) { + this.lastSeen = var1; + } +} diff --git a/src/main/java/defpackage/mq.java b/src/main/java/defpackage/mq.java new file mode 100644 index 0000000..e60e084 --- /dev/null +++ b/src/main/java/defpackage/mq.java @@ -0,0 +1,80 @@ +package defpackage; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.Identifier; + +public final class mq { + private final Map> dimensions = new HashMap<>(); + + public Map> getDimensions() { + return this.dimensions; + } + + public void put(Identifier var1, BlockPos var2, mp var3) { + int var4 = -2047599076; + + while (true) { + switch (var4) { + case -2047599076: + default: + if (var3.isEmpty()) { + var4 = -1510826947; + } else { + var4 = -111099141; + } + break; + case -1510826947: + this.remove(var1, var2); + return; + case -111099141: + this.dimensions.computeIfAbsent(var1, var0 -> new HashMap<>()).put(var2.immutable(), var3); + return; + } + } + } + + public void remove(Identifier var1, BlockPos var2) { + Map var3 = null; + int var4 = 127384455; + + while (true) { + switch (var4) { + case -608361099: + return; + case -318673865: + return; + case 127384455: + default: + var3 = this.dimensions.get(var1); + if (var3 == null) { + var4 = -608361099; + } else { + var4 = 1342219276; + } + break; + case 750938584: + this.dimensions.remove(var1); + var4 = -318673865; + break; + case 1342219276: + var3.remove(var2); + if (var3.isEmpty()) { + var4 = 750938584; + } else { + var4 = -318673865; + } + } + } + } + + public Map getDimension(Identifier var1) { + return this.dimensions.getOrDefault(var1, Collections.emptyMap()); + } + + public void clear() { + this.dimensions.clear(); + } +} diff --git a/src/main/java/defpackage/mr.java b/src/main/java/defpackage/mr.java new file mode 100644 index 0000000..ebeb709 --- /dev/null +++ b/src/main/java/defpackage/mr.java @@ -0,0 +1,152 @@ +package defpackage; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.mojang.serialization.JsonOps; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Map; +import java.util.Map.Entry; +import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup.Provider; +import net.minecraft.resources.Identifier; +import net.minecraft.resources.RegistryOps; +import net.minecraft.world.item.ItemStack; + +public final class mr { + private static final String SAVE_FAILURE = "storage bank save failed"; + private static final String LOAD_FAILURE = "storage bank load failed"; + private static final Gson GSON = new GsonBuilder().disableHtmlEscaping().create(); + private static final String KEY_DIMENSIONS = "dimensions"; + private static final String KEY_ITEMS = "items"; + private static final String KEY_TYPE = "type"; + private static final String KEY_LAST_SEEN = "lastSeen"; + private static final String POS_SEPARATOR = ","; + private static final int POS_PARTS = 3; + + private mr() { + } + + public static void save(mq var0, File var1, Provider var2) { + RegistryOps var3 = RegistryOps.create(JsonOps.INSTANCE, var2); + JsonObject var4 = new JsonObject(); + JsonObject var5 = new JsonObject(); + + for (Entry var7 : var0.getDimensions().entrySet()) { + JsonObject var8 = new JsonObject(); + + for (Entry var10 : ((Map)var7.getValue()).entrySet()) { + BlockPos var11 = (BlockPos)var10.getKey(); + mp var12 = (mp)var10.getValue(); + JsonObject var13 = new JsonObject(); + var13.addProperty("type", var12.getType()); + var13.addProperty("lastSeen", var12.getLastSeen()); + JsonArray var14 = new JsonArray(); + + for (ItemStack var16 : var12.getItems()) { + ItemStack.CODEC.encodeStart(var3, var16).result().ifPresent(var14::add); + } + + var13.add("items", var14); + var8.add(var11.getX() + "," + var11.getY() + "," + var11.getZ(), var13); + } + + var5.add(((Identifier)var7.getKey()).toString(), var8); + } + + var4.add("dimensions", var5); + + try (OutputStreamWriter var20 = new OutputStreamWriter(new FileOutputStream(var1), StandardCharsets.UTF_8)) { + GSON.toJson(var4, var20); + } catch (IOException var19) { + id.error( + Cif.STORAGE, + "storage bank save failed", + var19 + ); + } + } + + public static mq load(File var0, Provider var1) { + mq var2 = new mq(); + if (!var0.exists()) { + return var2; + } + + RegistryOps var3 = RegistryOps.create(JsonOps.INSTANCE, var1); + + try (InputStreamReader var4 = new InputStreamReader(new FileInputStream(var0), StandardCharsets.UTF_8)) { + JsonElement var5 = JsonParser.parseReader(var4); + if (!var5.isJsonObject()) { + return var2; + } + + JsonObject var6 = var5.getAsJsonObject(); + if (var6.has("dimensions")) { + for (Entry var8 : var6.getAsJsonObject("dimensions") + .entrySet()) { + Identifier var9 = Identifier.tryParse((String)var8.getKey()); + if (var9 != null && ((JsonElement)var8.getValue()).isJsonObject()) { + for (Entry var11 : ((JsonElement)var8.getValue()).getAsJsonObject().entrySet()) { + BlockPos var12 = parsePos((String)var11.getKey()); + if (var12 != null && ((JsonElement)var11.getValue()).isJsonObject()) { + JsonObject var13 = ((JsonElement)var11.getValue()).getAsJsonObject(); + ArrayList var14 = new ArrayList(); + if (var13.has("items") + && var13.get("items").isJsonArray()) { + for (JsonElement var16 : var13.getAsJsonArray( + "items" + )) { + ItemStack.CODEC.parse(var3, var16).result().ifPresent(var14::add); + } + } + + String var23 = var13.has("type") + ? var13.get("type").getAsString() + : ""; + long var24 = var13.has("lastSeen") + ? var13.get("lastSeen").getAsLong() + : (-6998713702774862474L | 6998713702774862474L) + (-6998713702774862474L & 6998713702774862474L); + var2.put(var9, var12, new mp(var14, var23, var24)); + } + } + } + } + + return var2; + } else { + return var2; + } + } catch (Exception var20) { + id.error(Cif.STORAGE, "storage bank load failed", var20); + return var2; + } + } + + private static BlockPos parsePos(String var0) { + String[] var1 = var0.split(","); + if (var1.length != (518975895 ^ -518975892) + ((518975895 & -518975892) << 1)) { + return null; + } + + try { + return new BlockPos( + Integer.parseInt(var1[0].trim()), + Integer.parseInt(var1[1].trim()), + Integer.parseInt(var1[2].trim()) + ); + } catch (NumberFormatException var3) { + return null; + } + } +} diff --git a/src/main/java/defpackage/ms.java b/src/main/java/defpackage/ms.java new file mode 100644 index 0000000..bbc4247 --- /dev/null +++ b/src/main/java/defpackage/ms.java @@ -0,0 +1,468 @@ +package defpackage; + +import java.io.File; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map.Entry; +import net.minecraft.client.multiplayer.ServerData; +import net.minecraft.client.server.IntegratedServer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Block; + +public enum ms implements aqg { + INSTANCE; + + private static final String DIRECTORY_NAME = "StorageTracker"; + private static final String FILE_EXTENSION = ".json"; + private static final String SINGLEPLAYER_PREFIX = "sp-"; + private static final String UNSAFE_CHARACTERS = "[^a-zA-Z0-9._-]"; + private static final String SAFE_REPLACEMENT = "_"; + private static final String KEY_SEPARATOR = "|"; + private mq bank = new mq(); + private String loadedKey; + + public void ensureLoaded() { + String var1 = null; + int var2 = -2036878183; + + while (true) { + switch (var2) { + case -2036878183: + default: + if (mc.level == null) { + var2 = 839189776; + } else { + var2 = -373260980; + } + break; + case -680246115: + if (var1.equals(this.loadedKey)) { + var2 = 1364472403; + } else { + var2 = 1634156433; + } + break; + case -373260980: + var1 = this.worldKey(); + if (var1 != null) { + var2 = -680246115; + } else { + var2 = 1364472403; + } + break; + case 839189776: + return; + case 1364472403: + return; + case 1634156433: + this.bank = mr.load(this.fileFor(var1), mc.level.registryAccess()); + this.loadedKey = var1; + return; + } + } + } + + public void capture(Identifier var1, BlockPos var2, String var3, List var4) { + int var5 = -1728502823; + + while (true) { + switch (var5) { + case -1728502823: + default: + this.ensureLoaded(); + if (this.loadedKey != null) { + var5 = -1047010189; + } else { + var5 = -1520325198; + } + break; + case -1520325198: + return; + case -1047010189: + if (var1 == null) { + var5 = -1520325198; + } else { + var5 = -920443120; + } + break; + case -1008987193: + this.bank.remove(var1, var2); + var5 = -162079318; + break; + case -920443120: + if (var4.isEmpty()) { + var5 = -1008987193; + } else { + var5 = 1155280485; + } + break; + case -162079318: + this.save(); + return; + case 1155280485: + this.bank.put(var1, var2, new mp(var4, var3, System.currentTimeMillis())); + var5 = -162079318; + } + } + } + + public void save() { + File var1 = null; + int var2 = -1053166230; + + while (true) { + switch (var2) { + case -1813573559: + return; + case -1793270829: + return; + case -1365248515: + if (this.loadedKey == null) { + var2 = -1813573559; + } else { + var2 = 963019519; + } + break; + case -1053166230: + default: + if (mc.level != null) { + var2 = -1365248515; + } else { + var2 = -1813573559; + } + break; + case 722022471: + mr.save(this.bank, this.fileFor(this.loadedKey), mc.level.registryAccess()); + return; + case 765338743: + if (!var1.mkdirs()) { + var2 = -1793270829; + } else { + var2 = 722022471; + } + break; + case 963019519: + var1 = new File(bz.DIRECTORY, "StorageTracker"); + if (!var1.exists()) { + var2 = 765338743; + } else { + var2 = 722022471; + } + } + } + } + + public List aggregate(Identifier var1) { + LinkedHashMap var2 = null; + LinkedHashMap var3 = null; + LinkedHashMap var4 = null; + Object var5 = null; + Object var6 = null; + Object var7 = null; + ItemStack var8 = null; + Object var9 = null; + int var10 = 202854816; + + while (true) { + switch (var10) { + case -1998494812: + if (var5.hasNext()) { + var10 = 1154006208; + } else { + var10 = 1631438160; + } + break; + case -1689496013: + if (var7.hasNext()) { + var10 = 1066493299; + } else { + var10 = -70614920; + } + break; + case -1462535934: + if (var6.hasNext()) { + var10 = -153298246; + } else { + var10 = 1722227515; + } + break; + case -153298246: + var7 = (Entry)var6.next(); + var8 = (String)var7.getKey(); + var5.add( + new mo( + (ItemStack)var7.getValue(), + ((long[])var3.get(var8))[0], + this.countContainers(var1, (Item)var4.get(var8)) + ) + ); + var10 = -1462535934; + break; + case -70614920: + var10 = -1998494812; + break; + case 202854816: + default: + var2 = new LinkedHashMap(); + var3 = new LinkedHashMap(); + var4 = new LinkedHashMap(); + var5 = this.bank.getDimension(var1).values().iterator(); + var10 = -1998494812; + break; + case 1066493299: + var8 = (ItemStack)var7.next(); + var9 = stackKey(var8); + var2.putIfAbsent(var9, var8); + var4.putIfAbsent(var9, var8.getItem()); + long[] var10000 = var3.computeIfAbsent(var9, var0 -> new long[1]); + var10000[0] = var10000[0] + + var8.getCount(); + var10 = -1689496013; + break; + case 1154006208: + var6 = (mp)var5.next(); + var7 = ((mp)var6).getItems().iterator(); + var10 = -1689496013; + break; + case 1631438160: + var5 = new ArrayList(var2.size()); + var6 = var2.entrySet().iterator(); + var10 = -1462535934; + break; + case 1722227515: + return (List)var5; + } + } + } + + public List findPositions(Identifier var1, Item var2) { + ArrayList var3 = null; + Iterator var4 = null; + Entry var5 = null; + Iterator var6 = null; + ItemStack var7 = null; + int var8 = -1801935320; + + while (true) { + switch (var8) { + case -1969372558: + var3.add((BlockPos)var5.getKey()); + var8 = 596833812; + break; + case -1801935320: + default: + var3 = new ArrayList(); + var4 = this.bank.getDimension(var1).entrySet().iterator(); + var8 = -1386839334; + break; + case -1386839334: + if (var4.hasNext()) { + var8 = 533766678; + } else { + var8 = 853281184; + } + break; + case -1225707006: + var8 = 1114471205; + break; + case -308156306: + var7 = (ItemStack)var6.next(); + if (var7.getItem() == var2) { + var8 = -1969372558; + } else { + var8 = -1225707006; + } + break; + case 533766678: + var5 = (Entry)var4.next(); + var6 = ((mp)var5.getValue()).getItems().iterator(); + var8 = 1114471205; + break; + case 596833812: + var8 = -1386839334; + break; + case 853281184: + return var3; + case 1114471205: + if (var6.hasNext()) { + var8 = -308156306; + } else { + var8 = 596833812; + } + } + } + } + + public int countContainers(Identifier var1, Item var2) { + int var3 = 0; + Iterator var4 = null; + mp var5 = null; + Iterator var6 = null; + ItemStack var7 = null; + int var8 = -600539165; + + while (true) { + switch (var8) { + case -1804376973: + return var3; + case -1573127818: + var8 = -1284520883; + break; + case -1284520883: + if (var6.hasNext()) { + var8 = 396719625; + } else { + var8 = 1245100894; + } + break; + case -1158217562: + if (var4.hasNext()) { + var8 = 1919142562; + } else { + var8 = -1804376973; + } + break; + case -1006839198: + var3++; + var8 = 1245100894; + break; + case -600539165: + default: + var3 = 0; + var4 = this.bank.getDimension(var1).values().iterator(); + var8 = -1158217562; + break; + case 396719625: + var7 = (ItemStack)var6.next(); + if (var7.getItem() == var2) { + var8 = -1006839198; + } else { + var8 = -1573127818; + } + break; + case 1245100894: + var8 = -1158217562; + break; + case 1919142562: + var5 = (mp)var4.next(); + var6 = var5.getItems().iterator(); + var8 = -1284520883; + } + } + } + + public int containerCount(Identifier var1) { + return this.bank.getDimension(var1).size(); + } + + public void handleBlockChange(Identifier var1, BlockPos var2, Block var3) { + mp var4 = null; + String var5 = null; + int var6 = -1891373536; + + while (true) { + switch (var6) { + case -1891373536: + default: + var4 = this.bank.getDimension(var1).get(var2); + if (var4 == null) { + var6 = -689755163; + } else { + var6 = -888494945; + } + break; + case -888494945: + var5 = BuiltInRegistries.BLOCK.getKey(var3).getPath(); + if (!var5.equals(var4.getType())) { + var6 = 1684864253; + } else { + var6 = 1903946110; + } + break; + case -689755163: + return; + case 1684864253: + this.bank.remove(var1, var2); + this.save(); + var6 = 1903946110; + break; + case 1903946110: + return; + } + } + } + + private static String stackKey(ItemStack var0) { + return BuiltInRegistries.ITEM.getKey(var0.getItem()) + "|" + var0.getComponentsPatch().hashCode(); + } + + private File fileFor(String var1) { + return new File(new File(bz.DIRECTORY, "StorageTracker"), var1 + ".json"); + } + + private String worldKey() { + ServerData var1 = null; + String var2 = null; + IntegratedServer var3 = null; + String var5 = null; + int var4 = -1545161496; + + while (true) { + switch (var4) { + case -1983048466: + if (var2 == null) { + var4 = 1836236709; + } else { + var4 = -683522178; + } + break; + case -1786414232: + var3 = mc.getSingleplayerServer(); + if (var3 != null) { + var4 = 336545203; + } else { + var4 = 271646311; + } + break; + case -1545161496: + default: + var1 = mc.getCurrentServer(); + if (var1 != null) { + var4 = 49906686; + } else { + var4 = -1786414232; + } + break; + case -683522178: + return var2.replaceAll( + "[^a-zA-Z0-9._-]", + "_" + ); + case 49906686: + var2 = var1.ip; + var4 = -1983048466; + break; + case 76515024: + var2 = var5; + var4 = -1983048466; + break; + case 271646311: + var5 = null; + var4 = 76515024; + break; + case 336545203: + var5 = "sp-" + var3.getWorldData().getLevelName(); + var4 = 76515024; + break; + case 1836236709: + return null; + } + } + } +} diff --git a/src/main/java/defpackage/mt.java b/src/main/java/defpackage/mt.java new file mode 100644 index 0000000..ee8ea47 --- /dev/null +++ b/src/main/java/defpackage/mt.java @@ -0,0 +1,165 @@ +package defpackage; + +public final class mt { + ng accent; + no geometry; + nm effects; + np glass; + nu spacing; + nv typography; + nn elevation; + nq motion; + nl backdrop; + nt palette; + asu friendColor; + asu friendSecond; + asu gray; + asu grayLight; + asu foregroundLight; + asu whiteGray; + asu foregroundGray; + asu foregroundLightStroke; + asu foreground; + asu foregroundStroke; + asu foregroundDark; + asu white; + asu background; + + public mt(ng accent, no geometry, nm effects, np glass, nu spacing, nv typography, nn elevation, nq motion, nl backdrop, nt palette, asu friendColor, asu friendSecond, asu gray, asu grayLight, asu foregroundLight, asu whiteGray, asu foregroundGray, asu foregroundLightStroke, asu foreground, asu foregroundStroke, asu foregroundDark, asu white, asu background) { + this.accent = accent; + this.geometry = geometry; + this.effects = effects; + this.glass = glass; + this.spacing = spacing; + this.typography = typography; + this.elevation = elevation; + this.motion = motion; + this.backdrop = backdrop; + this.palette = palette; + this.friendColor = friendColor; + this.friendSecond = friendSecond; + this.gray = gray; + this.grayLight = grayLight; + this.foregroundLight = foregroundLight; + this.whiteGray = whiteGray; + this.foregroundGray = foregroundGray; + this.foregroundLightStroke = foregroundLightStroke; + this.foreground = foreground; + this.foregroundStroke = foregroundStroke; + this.foregroundDark = foregroundDark; + this.white = white; + this.background = background; + } + + public ng accent() { + return this.accent; + } + public no geometry() { + return this.geometry; + } + public nm effects() { + return this.effects; + } + public np glass() { + return this.glass; + } + public nu spacing() { + return this.spacing; + } + public nv typography() { + return this.typography; + } + public nn elevation() { + return this.elevation; + } + public nq motion() { + return this.motion; + } + public nl backdrop() { + return this.backdrop; + } + public nt palette() { + return this.palette; + } + public asu friendColor() { + return this.friendColor; + } + public asu friendSecond() { + return this.friendSecond; + } + public asu gray() { + return this.gray; + } + public asu grayLight() { + return this.grayLight; + } + public asu foregroundLight() { + return this.foregroundLight; + } + public asu whiteGray() { + return this.whiteGray; + } + public asu foregroundGray() { + return this.foregroundGray; + } + public asu foregroundLightStroke() { + return this.foregroundLightStroke; + } + public asu foreground() { + return this.foreground; + } + public asu foregroundStroke() { + return this.foregroundStroke; + } + public asu foregroundDark() { + return this.foregroundDark; + } + public asu white() { + return this.white; + } + public asu background() { + return this.background; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof mt that)) { + return false; + } + if (!java.util.Objects.equals(this.accent, that.accent)) { return false; } + if (!java.util.Objects.equals(this.geometry, that.geometry)) { return false; } + if (!java.util.Objects.equals(this.effects, that.effects)) { return false; } + if (!java.util.Objects.equals(this.glass, that.glass)) { return false; } + if (!java.util.Objects.equals(this.spacing, that.spacing)) { return false; } + if (!java.util.Objects.equals(this.typography, that.typography)) { return false; } + if (!java.util.Objects.equals(this.elevation, that.elevation)) { return false; } + if (!java.util.Objects.equals(this.motion, that.motion)) { return false; } + if (!java.util.Objects.equals(this.backdrop, that.backdrop)) { return false; } + if (!java.util.Objects.equals(this.palette, that.palette)) { return false; } + if (!java.util.Objects.equals(this.friendColor, that.friendColor)) { return false; } + if (!java.util.Objects.equals(this.friendSecond, that.friendSecond)) { return false; } + if (!java.util.Objects.equals(this.gray, that.gray)) { return false; } + if (!java.util.Objects.equals(this.grayLight, that.grayLight)) { return false; } + if (!java.util.Objects.equals(this.foregroundLight, that.foregroundLight)) { return false; } + if (!java.util.Objects.equals(this.whiteGray, that.whiteGray)) { return false; } + if (!java.util.Objects.equals(this.foregroundGray, that.foregroundGray)) { return false; } + if (!java.util.Objects.equals(this.foregroundLightStroke, that.foregroundLightStroke)) { return false; } + if (!java.util.Objects.equals(this.foreground, that.foreground)) { return false; } + if (!java.util.Objects.equals(this.foregroundStroke, that.foregroundStroke)) { return false; } + if (!java.util.Objects.equals(this.foregroundDark, that.foregroundDark)) { return false; } + if (!java.util.Objects.equals(this.white, that.white)) { return false; } + if (!java.util.Objects.equals(this.background, that.background)) { return false; } + return true; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(this.accent, this.geometry, this.effects, this.glass, this.spacing, this.typography, this.elevation, this.motion, this.backdrop, this.palette, this.friendColor, this.friendSecond, this.gray, this.grayLight, this.foregroundLight, this.whiteGray, this.foregroundGray, this.foregroundLightStroke, this.foreground, this.foregroundStroke, this.foregroundDark, this.white, this.background); + } + + @Override + public String toString() { + return "mt[" + "accent=" + this.accent + ", " + "geometry=" + this.geometry + ", " + "effects=" + this.effects + ", " + "glass=" + this.glass + ", " + "spacing=" + this.spacing + ", " + "typography=" + this.typography + ", " + "elevation=" + this.elevation + ", " + "motion=" + this.motion + ", " + "backdrop=" + this.backdrop + ", " + "palette=" + this.palette + ", " + "friendColor=" + this.friendColor + ", " + "friendSecond=" + this.friendSecond + ", " + "gray=" + this.gray + ", " + "grayLight=" + this.grayLight + ", " + "foregroundLight=" + this.foregroundLight + ", " + "whiteGray=" + this.whiteGray + ", " + "foregroundGray=" + this.foregroundGray + ", " + "foregroundLightStroke=" + this.foregroundLightStroke + ", " + "foreground=" + this.foreground + ", " + "foregroundStroke=" + this.foregroundStroke + ", " + "foregroundDark=" + this.foregroundDark + ", " + "white=" + this.white + ", " + "background=" + this.background + "]"; + } + +} diff --git a/src/main/java/defpackage/mu.java b/src/main/java/defpackage/mu.java new file mode 100644 index 0000000..cf03e67 --- /dev/null +++ b/src/main/java/defpackage/mu.java @@ -0,0 +1,160 @@ +package defpackage; + +public class mu { + ng accent; + no geometry = no.DEFAULT; + nm effects = nm.DEFAULT; + np glass = np.DEFAULT; + nu spacing = nu.DEFAULT; + nv typography = nv.DEFAULT; + nn elevation = nn.DEFAULT; + nq motion = nq.DEFAULT; + nl backdrop = nl.DEFAULT; + nt palette = nt.DEFAULT; + asu friendColor; + asu friendSecond; + asu gray; + asu grayLight; + asu foregroundLight; + asu whiteGray; + asu foregroundGray; + asu foregroundLightStroke; + asu foreground; + asu foregroundStroke; + asu foregroundDark; + asu white; + asu background; + + public static mu builder() { + return new mu(); + } + + public mu accent(ng var1) { + this.accent = var1; + return this; + } + + public mu geometry(no var1) { + this.geometry = var1; + return this; + } + + public mu effects(nm var1) { + this.effects = var1; + return this; + } + + public mu glass(np var1) { + this.glass = var1; + return this; + } + + public mu spacing(nu var1) { + this.spacing = var1; + return this; + } + + public mu typography(nv var1) { + this.typography = var1; + return this; + } + + public mu elevation(nn var1) { + this.elevation = var1; + return this; + } + + public mu motion(nq var1) { + this.motion = var1; + return this; + } + + public mu backdrop(nl var1) { + this.backdrop = var1; + return this; + } + + public mu palette(nt var1) { + this.palette = var1; + return this; + } + + public mu color(asu var1) { + this.accent = this.accent == null ? ng.of(var1, var1) : this.accent.withStart(var1); + return this; + } + + public mu secondColor(asu var1) { + this.accent = this.accent == null ? ng.of(var1, var1) : this.accent.withEnd(var1); + return this; + } + + public mu friendColor(asu var1) { + this.friendColor = var1; + return this; + } + + public mu friendSecond(asu var1) { + this.friendSecond = var1; + return this; + } + + public mu gray(asu var1) { + this.gray = var1; + return this; + } + + public mu grayLight(asu var1) { + this.grayLight = var1; + return this; + } + + public mu foregroundLight(asu var1) { + this.foregroundLight = var1; + return this; + } + + public mu whiteGray(asu var1) { + this.whiteGray = var1; + return this; + } + + public mu foregroundGray(asu var1) { + this.foregroundGray = var1; + return this; + } + + public mu foregroundLightStroke(asu var1) { + this.foregroundLightStroke = var1; + return this; + } + + public mu foreground(asu var1) { + this.foreground = var1; + return this; + } + + public mu foregroundStroke(asu var1) { + this.foregroundStroke = var1; + return this; + } + + public mu foregroundDark(asu var1) { + this.foregroundDark = var1; + return this; + } + + public mu white(asu var1) { + this.white = var1; + return this; + } + + public mu background(asu var1) { + this.background = var1; + return this; + } + + public mv build(String var1, String var2) { + return new mv(var1, var2, this); + } +} diff --git a/src/main/java/defpackage/mv.java b/src/main/java/defpackage/mv.java new file mode 100644 index 0000000..73c49c4 --- /dev/null +++ b/src/main/java/defpackage/mv.java @@ -0,0 +1,1563 @@ +package defpackage; + + +public class mv { + private final String name; + private final String icon; + private mt defaults; + private ng accent; + private no geometry; + private nm effects; + private np glass; + private nu spacing; + private nv typography; + private nn elevation; + private nq motion; + private nl backdrop; + private nt palette; + private asu friendColor; + private asu gray; + private asu grayLight; + private asu foregroundLight; + private asu whiteGray; + private asu foregroundGray; + private asu foregroundLightStroke; + private asu foregroundColor; + private asu foregroundStroke; + private asu foregroundDark; + private asu white; + private asu backgroundColor; + private transient asu glassWhite; + private transient asu glassWhiteSource; + private transient float glassWhiteProgress; + private transient float glassWhiteDarkness; + private static final int MUTED_CACHE_SIZE = 3; + private static final int MUTED_GRAY = 0; + private static final int MUTED_GRAY_LIGHT = 1; + private static final int MUTED_WHITE_GRAY = 2; + private static final float MUTED_GLASS_LIFT = 0.62F; + private static final float LUMA_RED = 0.2126F; + private static final float LUMA_GREEN = 0.7152F; + private static final float LUMA_BLUE = 0.0722F; + private static final float LUMA_MIDPOINT = 127.5F; + private final transient asu[] mutedGlass = new asu[3]; + private final transient asu[] mutedGlassSource = new asu[3]; + private final transient asu[] mutedGlassTarget = new asu[3]; + private final transient float[] mutedGlassProgress = new float[3]; + private static final float OBSIDIAN_RADIUS_SCALE = 2.0F; + private static final float OBSIDIAN_DIVIDER_ALPHA = 0.1F; + private static final float OBSIDIAN_NEON_INTENSITY = 0.5F; + private static final float OBSIDIAN_NEON_RADIUS = 2.5F; + private static final float OBSIDIAN_GLOW_EXPONENT = 2.0F; + private static final float OBSIDIAN_RIM_TOP_ALPHA = 0.18F; + private static final float OBSIDIAN_RIM_BOTTOM_ALPHA = 0.18F; + private static final float OBSIDIAN_ACTIVE_GLOW_INTENSITY = 0.4F; + private static final float OBSIDIAN_ACTIVE_GLOW_RADIUS = 2.2F; + private static final float OBSIDIAN_TEXT_GLOW_RADIUS = 2.2F; + private static final float OBSIDIAN_TEXT_GLOW_INTENSITY = 0.26F; + private static final float OBSIDIAN_SHADOW_SOFTNESS = 6.0F; + private static final float OBSIDIAN_SHADOW_ALPHA = 0.04F; + private static final float OBSIDIAN_FILL_ALPHA_SCALE = 0.32F; + private static final float OBSIDIAN_BORDER_ALPHA_SCALE = 0.9F; + private static final float OBSIDIAN_ROW_NEON_SCALE = 0.0F; + private static final float OBSIDIAN_CONTROL_NEON_SCALE = 0.0F; + private static final float AURORA_RADIUS_SCALE = 1.8F; + private static final float AURORA_DIVIDER_ALPHA = 0.14F; + private static final float AURORA_NEON_INTENSITY = 0.7F; + private static final float AURORA_NEON_RADIUS = 5.0F; + private static final float AURORA_GLOW_EXPONENT = 0.9F; + private static final float AURORA_RIM_TOP_ALPHA = 0.28F; + private static final float AURORA_RIM_BOTTOM_ALPHA = 0.08F; + private static final float AURORA_ACTIVE_GLOW_INTENSITY = 0.38F; + private static final float AURORA_ACTIVE_GLOW_RADIUS = 4.0F; + private static final float AURORA_TEXT_GLOW_RADIUS = 3.0F; + private static final float AURORA_TEXT_GLOW_INTENSITY = 0.18F; + private static final float AURORA_SHADOW_SOFTNESS = 12.0F; + private static final float AURORA_SHADOW_ALPHA = 0.2F; + private static final float AURORA_ANIMATION_SPEED = 0.7F; + private static final float AURORA_FILL_ALPHA_SCALE = 1.15F; + private static final float AURORA_BORDER_ALPHA_SCALE = 1.1F; + private static final float AURORA_ROW_NEON_SCALE = 0.0F; + private static final float AURORA_CONTROL_NEON_SCALE = 0.0F; + private static final asu BRAND_ACCENT_START = new asu(124, 92, 255); + private static final asu BRAND_ACCENT_END = new asu(158, 107, 255); + public static final mv DARK = mu.builder() + .accent(ng.of(BRAND_ACCENT_START, BRAND_ACCENT_END)) + .friendColor(BRAND_ACCENT_START) + .friendSecond(BRAND_ACCENT_END) + .gray(new asu(92, 86, 112)) + .grayLight(new asu(140, 132, 162)) + .foregroundLight(new asu(28, 23, 42)) + .whiteGray(new asu(70, 64, 90)) + .foregroundGray(new asu(40, 33, 58)) + .foregroundLightStroke(new asu(38, 32, 55)) + .foreground(new asu(19, 16, 30)) + .foregroundStroke(new asu(31, 26, 46)) + .foregroundDark(new asu(14, 11, 23)) + .white(new asu(255, 255, 255)) + .background(new asu(9, 7, 16)) + .build("Dark", "8"); + public static final mv LIGHT = mu.builder() + .accent(ng.of(BRAND_ACCENT_START, BRAND_ACCENT_END)) + .friendColor(BRAND_ACCENT_START) + .friendSecond(BRAND_ACCENT_END) + .gray(new asu(138, 137, 143)) + .grayLight(new asu(148, 147, 153)) + .foregroundLight(new asu(236, 236, 236)) + .whiteGray(new asu(178, 177, 183)) + .foregroundGray(new asu(188, 187, 193)) + .foregroundLightStroke(new asu(229, 229, 229)) + .foreground(new asu(246, 246, 246)) + .foregroundStroke(new asu(229, 229, 229)) + .foregroundDark(new asu(251, 251, 251)) + .white(new asu(23, 22, 28)) + .background(new asu(255, 255, 255)) + .build("Light", "T"); + public static final mv OBSIDIAN = mu.builder() + .accent(ng.of(new asu(255, 255, 255), new asu(212, 212, 216), new asu(138, 138, 147))) + .geometry(new no(2.0F, 3.0F, 1.0F, 0.1F, no.neutralRoleScales())) + .effects( + new nm( + 0.5F, + 2.5F, + 2.0F, + 0.18F, + 0.18F, + true, + 90.0F, + 0.4F, + 2.2F, + 2.2F, + 0.26F, + new asu(255, 255, 255), + 6.0F, + 0.04F, + 0.0F, + 1.0F, + 0.0F, + 0.28F, + 0.0F, + no.neutralRoleScales() + ) + .withRoleNeonScale(aso.ROW, 0.0F) + .withRoleNeonScale(aso.CONTROL, 0.0F) + .withRoleNeonScale(aso.ACCENT, 0.0F) + ) + .glass(np.DEFAULT.withSurfaceAlpha(0.32F, 0.9F)) + .friendColor(new asu(255, 255, 255)) + .friendSecond(new asu(212, 212, 216)) + .gray(new asu(110, 110, 119)) + .grayLight(new asu(154, 154, 163)) + .foregroundLight(new asu(23, 23, 26)) + .whiteGray(new asu(85, 85, 92)) + .foregroundGray(new asu(32, 32, 36)) + .foregroundLightStroke(new asu(35, 35, 39)) + .foreground(new asu(16, 16, 18)) + .foregroundStroke(new asu(26, 26, 30)) + .foregroundDark(new asu(10, 10, 12)) + .white(new asu(255, 255, 255)) + .background(new asu(0, 0, 0)) + .build("Obsidian", "8"); + public static final mv AURORA = mu.builder() + .accent(ng.of(new asu(244, 114, 182), new asu(251, 113, 133), new asu(251, 191, 36))) + .geometry(new no(1.8F, 3.0F, 1.0F, 0.14F, no.neutralRoleScales())) + .effects( + new nm( + 0.7F, + 5.0F, + 0.9F, + 0.28F, + 0.08F, + true, + 90.0F, + 0.38F, + 4.0F, + 3.0F, + 0.18F, + new asu(251, 113, 133), + 12.0F, + 0.2F, + 0.0F, + 0.7F, + 0.0F, + 0.28F, + 0.0F, + no.neutralRoleScales() + ) + .withRoleNeonScale(aso.ROW, 0.0F) + .withRoleNeonScale(aso.CONTROL, 0.0F) + .withRoleNeonScale(aso.ACCENT, 0.0F) + ) + .glass(np.DEFAULT.withSurfaceAlpha(1.15F, 1.1F)) + .friendColor(new asu(244, 114, 182)) + .friendSecond(new asu(251, 191, 36)) + .gray(new asu(126, 119, 141)) + .grayLight(new asu(166, 159, 181)) + .foregroundLight(new asu(44, 39, 53)) + .whiteGray(new asu(106, 99, 121)) + .foregroundGray(new asu(58, 52, 70)) + .foregroundLightStroke(new asu(55, 49, 63)) + .foreground(new asu(34, 30, 43)) + .foregroundStroke(new asu(42, 37, 51)) + .foregroundDark(new asu(27, 24, 34)) + .white(new asu(255, 255, 255)) + .background(new asu(20, 18, 26)) + .build("Aurora", "N"); + private static final float NEON_RADIUS_SCALE = 1.15F; + private static final float NEON_DIVIDER_ALPHA = 0.2F; + private static final float NEON_INTENSITY = 1.0F; + private static final float NEON_GLOW_RADIUS = 3.4F; + private static final float NEON_GLOW_EXPONENT = 0.85F; + private static final float NEON_RIM_TOP_ALPHA = 0.44F; + private static final float NEON_RIM_BOTTOM_ALPHA = 0.2F; + private static final float NEON_ACTIVE_GLOW_INTENSITY = 0.42F; + private static final float NEON_ACTIVE_GLOW_RADIUS = 3.2F; + private static final float NEON_TEXT_GLOW_RADIUS = 3.4F; + private static final float NEON_TEXT_GLOW_INTENSITY = 0.34F; + private static final float NEON_SHADOW_SOFTNESS = 14.0F; + private static final float NEON_SHADOW_ALPHA = 0.42F; + private static final float NEON_SWEEP_SPEED = 0.22F; + private static final float NEON_SWEEP_LENGTH = 0.3F; + private static final float NEON_SWEEP_INTENSITY = 0.95F; + private static final float NEON_WINDOW_SCALE = 0.3F; + private static final float NEON_ROW_SCALE = 0.45F; + private static final float NEON_CONTROL_SCALE = 0.7F; + private static final float NEON_FILL_ALPHA_SCALE = 0.85F; + private static final float NEON_BORDER_ALPHA_SCALE = 1.35F; + public static final mv NEON = mu.builder() + .accent(ng.of(new asu(34, 211, 238), new asu(244, 114, 182), new asu(167, 139, 250))) + .geometry(new no(1.15F, 3.0F, 1.0F, 0.2F, no.neutralRoleScales())) + .effects( + new nm( + 1.0F, + 3.4F, + 0.85F, + 0.44F, + 0.2F, + true, + 90.0F, + 0.42F, + 3.2F, + 3.4F, + 0.34F, + new asu(34, 211, 238), + 14.0F, + 0.42F, + 0.0F, + 1.0F, + 0.22F, + 0.3F, + 0.95F, + no.neutralRoleScales() + ) + .withRoleNeonScale(aso.WINDOW, 0.3F) + .withRoleNeonScale(aso.ROW, 0.45F) + .withRoleNeonScale(aso.CONTROL, 0.7F) + .withRoleNeonScale(aso.ACCENT, 0.7F) + ) + .glass(np.DEFAULT.withSurfaceAlpha(0.85F, 1.35F)) + .friendColor(new asu(34, 211, 238)) + .friendSecond(new asu(244, 114, 182)) + .gray(new asu(96, 108, 132)) + .grayLight(new asu(148, 163, 190)) + .foregroundLight(new asu(24, 28, 44)) + .whiteGray(new asu(78, 90, 116)) + .foregroundGray(new asu(34, 40, 60)) + .foregroundLightStroke(new asu(38, 46, 70)) + .foreground(new asu(16, 19, 32)) + .foregroundStroke(new asu(26, 32, 50)) + .foregroundDark(new asu(11, 13, 23)) + .white(new asu(236, 245, 255)) + .background(new asu(7, 9, 17)) + .build("Neon", "N"); + private static final float PRISM_RADIUS_SCALE = 1.45F; + private static final float PRISM_DIVIDER_ALPHA = 0.16F; + private static final float PRISM_NEON_INTENSITY = 0.72F; + private static final float PRISM_GLOW_RADIUS = 4.2F; + private static final float PRISM_GLOW_EXPONENT = 1.0F; + private static final float PRISM_RIM_TOP_ALPHA = 0.36F; + private static final float PRISM_RIM_BOTTOM_ALPHA = 0.12F; + private static final float PRISM_ACTIVE_GLOW_INTENSITY = 0.4F; + private static final float PRISM_ACTIVE_GLOW_RADIUS = 3.6F; + private static final float PRISM_TEXT_GLOW_RADIUS = 3.0F; + private static final float PRISM_TEXT_GLOW_INTENSITY = 0.22F; + private static final float PRISM_SHADOW_SOFTNESS = 13.0F; + private static final float PRISM_SHADOW_ALPHA = 0.34F; + private static final float PRISM_WINDOW_SCALE = 0.25F; + private static final float PRISM_ROW_SCALE = 0.35F; + private static final float PRISM_CONTROL_SCALE = 0.6F; + private static final float PRISM_FILL_ALPHA_SCALE = 0.92F; + private static final float PRISM_BORDER_ALPHA_SCALE = 1.2F; + private static final float PRISM_BACKDROP_INTENSITY = 0.5F; + private static final float PRISM_BACKDROP_SPEED = 0.85F; + private static final float PRISM_BACKDROP_SCALE = 1.0F; + public static final mv PRISM = mu.builder() + .accent(ng.of(new asu(183, 148, 255), new asu(219, 148, 245), new asu(255, 156, 224))) + .geometry(new no(1.45F, 3.0F, 1.0F, 0.16F, no.neutralRoleScales())) + .effects( + new nm( + 0.72F, + 4.2F, + 1.0F, + 0.36F, + 0.12F, + true, + 90.0F, + 0.4F, + 3.6F, + 3.0F, + 0.22F, + new asu(200, 168, 255), + 13.0F, + 0.34F, + 0.0F, + 1.0F, + 0.0F, + 0.28F, + 0.0F, + no.neutralRoleScales() + ) + .withRoleNeonScale(aso.WINDOW, 0.25F) + .withRoleNeonScale(aso.ROW, 0.35F) + .withRoleNeonScale(aso.CONTROL, 0.6F) + .withRoleNeonScale(aso.ACCENT, 0.6F) + ) + .glass(np.DEFAULT.withSurfaceAlpha(0.92F, 1.2F)) + .backdrop(nl.of(nk.IRIDESCENCE, 0.5F, 0.85F, 1.0F)) + .friendColor(new asu(183, 148, 255)) + .friendSecond(new asu(255, 156, 224)) + .gray(new asu(104, 108, 138)) + .grayLight(new asu(158, 162, 194)) + .foregroundLight(new asu(30, 32, 52)) + .whiteGray(new asu(82, 86, 114)) + .foregroundGray(new asu(40, 42, 66)) + .foregroundLightStroke(new asu(44, 47, 74)) + .foreground(new asu(20, 22, 38)) + .foregroundStroke(new asu(30, 33, 54)) + .foregroundDark(new asu(14, 15, 28)) + .white(new asu(240, 244, 255)) + .background(new asu(8, 9, 18)) + .build("Prism", "N"); + private static final float EMBER_RADIUS_SCALE = 1.25F; + private static final float EMBER_DIVIDER_ALPHA = 0.16F; + private static final float EMBER_NEON_INTENSITY = 0.85F; + private static final float EMBER_GLOW_RADIUS = 3.8F; + private static final float EMBER_GLOW_EXPONENT = 1.1F; + private static final float EMBER_RIM_TOP_ALPHA = 0.34F; + private static final float EMBER_RIM_BOTTOM_ALPHA = 0.1F; + private static final float EMBER_ACTIVE_GLOW_INTENSITY = 0.46F; + private static final float EMBER_ACTIVE_GLOW_RADIUS = 3.4F; + private static final float EMBER_TEXT_GLOW_RADIUS = 2.8F; + private static final float EMBER_TEXT_GLOW_INTENSITY = 0.24F; + private static final float EMBER_SHADOW_SOFTNESS = 15.0F; + private static final float EMBER_SHADOW_ALPHA = 0.46F; + private static final float EMBER_WINDOW_SCALE = 0.28F; + private static final float EMBER_ROW_SCALE = 0.4F; + private static final float EMBER_CONTROL_SCALE = 0.65F; + private static final float EMBER_FILL_ALPHA_SCALE = 0.9F; + private static final float EMBER_BORDER_ALPHA_SCALE = 1.25F; + private static final float EMBER_BACKDROP_INTENSITY = 0.62F; + private static final float EMBER_BACKDROP_SPEED = 0.55F; + private static final float EMBER_BACKDROP_SCALE = 1.15F; + public static final mv EMBER = mu.builder() + .accent(ng.of(new asu(255, 122, 41), new asu(255, 162, 60), new asu(255, 209, 102))) + .geometry(new no(1.25F, 3.0F, 1.0F, 0.16F, no.neutralRoleScales())) + .effects( + new nm( + 0.85F, + 3.8F, + 1.1F, + 0.34F, + 0.1F, + true, + 90.0F, + 0.46F, + 3.4F, + 2.8F, + 0.24F, + new asu(255, 162, 60), + 15.0F, + 0.46F, + 0.0F, + 1.0F, + 0.0F, + 0.28F, + 0.0F, + no.neutralRoleScales() + ) + .withRoleNeonScale(aso.WINDOW, 0.28F) + .withRoleNeonScale(aso.ROW, 0.4F) + .withRoleNeonScale(aso.CONTROL, 0.65F) + .withRoleNeonScale(aso.ACCENT, 0.65F) + ) + .glass(np.DEFAULT.withSurfaceAlpha(0.9F, 1.25F)) + .backdrop(nl.of(nk.MAGMA, 0.62F, 0.55F, 1.15F)) + .friendColor(new asu(255, 122, 41)) + .friendSecond(new asu(255, 209, 102)) + .gray(new asu(128, 106, 94)) + .grayLight(new asu(176, 152, 136)) + .foregroundLight(new asu(48, 32, 24)) + .whiteGray(new asu(104, 84, 72)) + .foregroundGray(new asu(40, 27, 21)) + .foregroundLightStroke(new asu(56, 38, 28)) + .foreground(new asu(30, 20, 15)) + .foregroundStroke(new asu(44, 30, 22)) + .foregroundDark(new asu(23, 15, 11)) + .white(new asu(255, 244, 232)) + .background(new asu(18, 11, 8)) + .build("Ember", "8"); + private static final float EMBERGLOW_BACKDROP_INTENSITY = 1.0F; + public static final mv EMBERGLOW = withBackdrop(EMBER, "Emberglow", nl.of(nk.EMBER, 1.0F, 1.0F, 1.0F)); + private static final float MATRIX_RADIUS_SCALE = 0.6F; + private static final float MATRIX_DIVIDER_ALPHA = 0.18F; + private static final float MATRIX_NEON_INTENSITY = 0.9F; + private static final float MATRIX_GLOW_RADIUS = 3.2F; + private static final float MATRIX_GLOW_EXPONENT = 0.8F; + private static final float MATRIX_RIM_TOP_ALPHA = 0.3F; + private static final float MATRIX_RIM_BOTTOM_ALPHA = 0.08F; + private static final float MATRIX_ACTIVE_GLOW_INTENSITY = 0.44F; + private static final float MATRIX_ACTIVE_GLOW_RADIUS = 3.0F; + private static final float MATRIX_TEXT_GLOW_RADIUS = 3.2F; + private static final float MATRIX_TEXT_GLOW_INTENSITY = 0.32F; + private static final float MATRIX_SHADOW_SOFTNESS = 10.0F; + private static final float MATRIX_SHADOW_ALPHA = 0.44F; + private static final float MATRIX_WINDOW_SCALE = 0.3F; + private static final float MATRIX_ROW_SCALE = 0.45F; + private static final float MATRIX_CONTROL_SCALE = 0.75F; + private static final float MATRIX_FILL_ALPHA_SCALE = 0.88F; + private static final float MATRIX_BORDER_ALPHA_SCALE = 1.3F; + private static final float MATRIX_BACKDROP_INTENSITY = 0.55F; + private static final float MATRIX_BACKDROP_SPEED = 1.0F; + private static final float MATRIX_BACKDROP_SCALE = 1.0F; + public static final mv MATRIX = mu.builder() + .accent(ng.of(new asu(34, 197, 94), new asu(74, 222, 128), new asu(190, 255, 214))) + .geometry(new no(0.6F, 3.0F, 1.0F, 0.18F, no.neutralRoleScales())) + .effects( + new nm( + 0.9F, + 3.2F, + 0.8F, + 0.3F, + 0.08F, + true, + 90.0F, + 0.44F, + 3.0F, + 3.2F, + 0.32F, + new asu(74, 222, 128), + 10.0F, + 0.44F, + 0.0F, + 1.0F, + 0.0F, + 0.28F, + 0.0F, + no.neutralRoleScales() + ) + .withRoleNeonScale(aso.WINDOW, 0.3F) + .withRoleNeonScale(aso.ROW, 0.45F) + .withRoleNeonScale(aso.CONTROL, 0.75F) + .withRoleNeonScale(aso.ACCENT, 0.75F) + ) + .glass(np.DEFAULT.withSurfaceAlpha(0.88F, 1.3F)) + .backdrop(nl.of(nk.DIGITAL_RAIN, 0.55F, 1.0F, 1.0F)) + .friendColor(new asu(34, 197, 94)) + .friendSecond(new asu(190, 255, 214)) + .gray(new asu(94, 116, 100)) + .grayLight(new asu(146, 172, 152)) + .foregroundLight(new asu(22, 34, 26)) + .whiteGray(new asu(74, 94, 80)) + .foregroundGray(new asu(28, 42, 32)) + .foregroundLightStroke(new asu(34, 50, 38)) + .foreground(new asu(14, 24, 17)) + .foregroundStroke(new asu(24, 38, 28)) + .foregroundDark(new asu(9, 17, 12)) + .white(new asu(226, 246, 232)) + .background(new asu(5, 10, 7)) + .build("Matrix", "N"); + private static final float OUTRUN_RADIUS_SCALE = 1.6F; + private static final float OUTRUN_DIVIDER_ALPHA = 0.2F; + private static final float OUTRUN_NEON_INTENSITY = 0.95F; + private static final float OUTRUN_GLOW_RADIUS = 4.6F; + private static final float OUTRUN_GLOW_EXPONENT = 0.85F; + private static final float OUTRUN_RIM_TOP_ALPHA = 0.42F; + private static final float OUTRUN_RIM_BOTTOM_ALPHA = 0.16F; + private static final float OUTRUN_ACTIVE_GLOW_INTENSITY = 0.48F; + private static final float OUTRUN_ACTIVE_GLOW_RADIUS = 3.8F; + private static final float OUTRUN_TEXT_GLOW_RADIUS = 3.4F; + private static final float OUTRUN_TEXT_GLOW_INTENSITY = 0.3F; + private static final float OUTRUN_SHADOW_SOFTNESS = 16.0F; + private static final float OUTRUN_SHADOW_ALPHA = 0.48F; + private static final float OUTRUN_WINDOW_SCALE = 0.32F; + private static final float OUTRUN_ROW_SCALE = 0.48F; + private static final float OUTRUN_CONTROL_SCALE = 0.72F; + private static final float OUTRUN_FILL_ALPHA_SCALE = 0.86F; + private static final float OUTRUN_BORDER_ALPHA_SCALE = 1.35F; + private static final float OUTRUN_BACKDROP_INTENSITY = 0.6F; + private static final float OUTRUN_BACKDROP_SPEED = 1.0F; + private static final float OUTRUN_BACKDROP_SCALE = 1.0F; + public static final mv OUTRUN = mu.builder() + .accent(ng.of(new asu(255, 46, 136), new asu(168, 85, 247), new asu(34, 211, 238))) + .geometry(new no(1.6F, 3.0F, 1.0F, 0.2F, no.neutralRoleScales())) + .effects( + new nm( + 0.95F, + 4.6F, + 0.85F, + 0.42F, + 0.16F, + true, + 90.0F, + 0.48F, + 3.8F, + 3.4F, + 0.3F, + new asu(255, 46, 136), + 16.0F, + 0.48F, + 0.0F, + 1.0F, + 0.0F, + 0.28F, + 0.0F, + no.neutralRoleScales() + ) + .withRoleNeonScale(aso.WINDOW, 0.32F) + .withRoleNeonScale(aso.ROW, 0.48F) + .withRoleNeonScale(aso.CONTROL, 0.72F) + .withRoleNeonScale(aso.ACCENT, 0.72F) + ) + .glass(np.DEFAULT.withSurfaceAlpha(0.86F, 1.35F)) + .backdrop(nl.of(nk.GRID_HORIZON, 0.6F, 1.0F, 1.0F)) + .friendColor(new asu(255, 46, 136)) + .friendSecond(new asu(34, 211, 238)) + .gray(new asu(110, 98, 146)) + .grayLight(new asu(166, 152, 206)) + .foregroundLight(new asu(34, 22, 62)) + .whiteGray(new asu(88, 76, 124)) + .foregroundGray(new asu(42, 28, 74)) + .foregroundLightStroke(new asu(48, 32, 84)) + .foreground(new asu(24, 15, 48)) + .foregroundStroke(new asu(36, 23, 68)) + .foregroundDark(new asu(16, 10, 34)) + .white(new asu(244, 238, 255)) + .background(new asu(10, 6, 24)) + .build("Outrun", "N"); + private static final float VORTEX_RADIUS_SCALE = 2.2F; + private static final float VORTEX_DIVIDER_ALPHA = 0.12F; + private static final float VORTEX_NEON_INTENSITY = 0.6F; + private static final float VORTEX_GLOW_RADIUS = 4.8F; + private static final float VORTEX_GLOW_EXPONENT = 1.2F; + private static final float VORTEX_RIM_TOP_ALPHA = 0.3F; + private static final float VORTEX_RIM_BOTTOM_ALPHA = 0.1F; + private static final float VORTEX_ACTIVE_GLOW_INTENSITY = 0.38F; + private static final float VORTEX_ACTIVE_GLOW_RADIUS = 4.2F; + private static final float VORTEX_TEXT_GLOW_RADIUS = 3.0F; + private static final float VORTEX_TEXT_GLOW_INTENSITY = 0.2F; + private static final float VORTEX_SHADOW_SOFTNESS = 18.0F; + private static final float VORTEX_SHADOW_ALPHA = 0.4F; + private static final float VORTEX_WINDOW_SCALE = 0.22F; + private static final float VORTEX_ROW_SCALE = 0.34F; + private static final float VORTEX_CONTROL_SCALE = 0.58F; + private static final float VORTEX_FILL_ALPHA_SCALE = 0.94F; + private static final float VORTEX_BORDER_ALPHA_SCALE = 1.15F; + private static final float VORTEX_BACKDROP_INTENSITY = 0.6F; + private static final float VORTEX_BACKDROP_SPEED = 0.8F; + private static final float VORTEX_BACKDROP_SCALE = 1.0F; + public static final mv VORTEX = mu.builder() + .accent(ng.of(new asu(56, 189, 248), new asu(147, 197, 253), new asu(186, 230, 253))) + .geometry(new no(2.2F, 3.0F, 1.0F, 0.12F, no.neutralRoleScales())) + .effects( + new nm( + 0.6F, + 4.8F, + 1.2F, + 0.3F, + 0.1F, + true, + 90.0F, + 0.38F, + 4.2F, + 3.0F, + 0.2F, + new asu(147, 197, 253), + 18.0F, + 0.4F, + 0.0F, + 1.0F, + 0.0F, + 0.28F, + 0.0F, + no.neutralRoleScales() + ) + .withRoleNeonScale(aso.WINDOW, 0.22F) + .withRoleNeonScale(aso.ROW, 0.34F) + .withRoleNeonScale(aso.CONTROL, 0.58F) + .withRoleNeonScale(aso.ACCENT, 0.58F) + ) + .glass(np.DEFAULT.withSurfaceAlpha(0.94F, 1.15F)) + .backdrop(nl.of(nk.SINGULARITY, 0.6F, 0.8F, 1.0F)) + .friendColor(new asu(56, 189, 248)) + .friendSecond(new asu(186, 230, 253)) + .gray(new asu(96, 112, 140)) + .grayLight(new asu(150, 168, 198)) + .foregroundLight(new asu(24, 34, 52)) + .whiteGray(new asu(76, 90, 116)) + .foregroundGray(new asu(30, 42, 64)) + .foregroundLightStroke(new asu(36, 50, 76)) + .foreground(new asu(18, 26, 42)) + .foregroundStroke(new asu(28, 40, 60)) + .foregroundDark(new asu(12, 18, 30)) + .white(new asu(236, 246, 255)) + .background(new asu(6, 10, 20)) + .build("Vortex", "8"); + private static final float CUSTOM_RIM_TOP_ALPHA = 0.22F; + private static final float CUSTOM_RIM_BOTTOM_ALPHA = 0.05F; + public static final mv CUSTOM_THEME = mu.builder() + .accent(ng.of(new asu(181, 162, 255), new asu(255, 203, 162))) + .effects( + new nm( + 0.0F, + 0.0F, + 1.0F, + 0.22F, + 0.05F, + true, + 90.0F, + 0.0F, + 0.0F, + 0.0F, + 0.0F, + new asu(255, 255, 255), + 8.0F, + 0.16F, + 0.0F, + 1.0F, + 0.0F, + 0.28F, + 0.0F, + no.neutralRoleScales() + ) + ) + .friendColor(new asu(181, 162, 255)) + .friendSecond(new asu(255, 203, 162)) + .gray(new asu(88, 87, 93)) + .grayLight(new asu(128, 127, 133)) + .foregroundLight(new asu(32, 31, 37)) + .whiteGray(new asu(68, 67, 73)) + .foregroundGray(new asu(48, 47, 53)) + .foregroundLightStroke(new asu(38, 37, 43)) + .foreground(new asu(28, 27, 33)) + .foregroundStroke(new asu(35, 34, 40)) + .foregroundDark(new asu(25, 24, 30)) + .white(new asu(255, 255, 255)) + .background(new asu(23, 22, 28)) + .build("Custom", "F"); + + public mv(String var1, String var2, mu var3) { + this.name = var1; + this.icon = var2; + this.accent = var3.accent; + this.geometry = var3.geometry; + this.effects = var3.effects; + this.glass = var3.glass; + this.spacing = var3.spacing; + this.typography = var3.typography; + this.elevation = var3.elevation; + this.motion = var3.motion; + this.backdrop = var3.backdrop; + this.palette = var3.palette; + this.friendColor = var3.friendColor; + this.gray = var3.gray; + this.grayLight = var3.grayLight; + this.foregroundLight = var3.foregroundLight; + this.whiteGray = var3.whiteGray; + this.foregroundGray = var3.foregroundGray; + this.foregroundLightStroke = var3.foregroundLightStroke; + this.foregroundColor = var3.foreground; + this.foregroundStroke = var3.foregroundStroke; + this.foregroundDark = var3.foregroundDark; + this.white = var3.white; + this.backgroundColor = var3.background; + this.defaults = new mt( + var3.accent, + var3.geometry, + var3.effects, + var3.glass, + var3.spacing, + var3.typography, + var3.elevation, + var3.motion, + var3.backdrop, + var3.palette, + var3.friendColor, + var3.friendSecond, + var3.gray, + var3.grayLight, + var3.foregroundLight, + var3.whiteGray, + var3.foregroundGray, + var3.foregroundLightStroke, + var3.foreground, + var3.foregroundStroke, + var3.foregroundDark, + var3.white, + var3.background + ); + } + + public void reset() { + this.accent = this.defaults.accent; + this.geometry = this.defaults.geometry; + this.effects = this.defaults.effects; + this.glass = this.defaults.glass; + this.spacing = this.defaults.spacing; + this.typography = this.defaults.typography; + this.elevation = this.defaults.elevation; + this.motion = this.defaults.motion; + this.backdrop = this.defaults.backdrop; + this.palette = this.defaults.palette; + this.friendColor = this.defaults.friendColor; + this.gray = this.defaults.gray; + this.grayLight = this.defaults.grayLight; + this.foregroundLight = this.defaults.foregroundLight; + this.whiteGray = this.defaults.whiteGray; + this.foregroundGray = this.defaults.foregroundGray; + this.foregroundLightStroke = this.defaults.foregroundLightStroke; + this.foregroundColor = this.defaults.foreground; + this.foregroundStroke = this.defaults.foregroundStroke; + this.foregroundDark = this.defaults.foregroundDark; + this.white = this.defaults.white; + this.backgroundColor = this.defaults.background; + } + + public mv derive(String var1) { + return mu.builder() + .accent(this.accent) + .geometry(this.geometry) + .effects(this.effects) + .glass(this.glass) + .spacing(this.spacing) + .typography(this.typography) + .elevation(this.elevation) + .motion(this.motion) + .backdrop(this.backdrop) + .palette(this.palette) + .friendColor(this.friendColor) + .friendSecond(this.defaults.friendSecond()) + .gray(this.gray) + .grayLight(this.grayLight) + .foregroundLight(this.foregroundLight) + .whiteGray(this.whiteGray) + .foregroundGray(this.foregroundGray) + .foregroundLightStroke(this.foregroundLightStroke) + .foreground(this.foregroundColor) + .foregroundStroke(this.foregroundStroke) + .foregroundDark(this.foregroundDark) + .white(this.white) + .background(this.backgroundColor) + .build(var1, this.icon); + } + + public void rebaseDefaults() { + this.defaults = new mt( + this.accent, + this.geometry, + this.effects, + this.glass, + this.spacing, + this.typography, + this.elevation, + this.motion, + this.backdrop, + this.palette, + this.friendColor, + this.defaults.friendSecond(), + this.gray, + this.grayLight, + this.foregroundLight, + this.whiteGray, + this.foregroundGray, + this.foregroundLightStroke, + this.foregroundColor, + this.foregroundStroke, + this.foregroundDark, + this.white, + this.backgroundColor + ); + } + + public boolean sharesValuesWith(mv var1) { + int var3 = 0; + int var2 = 730330996; + + while (true) { + switch (var2) { + case -1817880999: + if (this.geometry == var1.geometry) { + var2 = 1577674971; + } else { + var2 = 769059490; + } + break; + case -1473895626: + var3 = 1; + var2 = 743660302; + break; + case -1396850812: + if (this.white == var1.white) { + var2 = 1463572275; + } else { + var2 = 769059490; + } + break; + case -1265941501: + if (this.foregroundDark == var1.foregroundDark) { + var2 = -1396850812; + } else { + var2 = 769059490; + } + break; + case -886749476: + if (this.friendColor == var1.friendColor) { + var2 = -142780195; + } else { + var2 = 769059490; + } + break; + case -440275223: + if (this.grayLight == var1.grayLight) { + var2 = 1729051819; + } else { + var2 = 769059490; + } + break; + case -327152876: + if (this.palette == var1.palette) { + var2 = -886749476; + } else { + var2 = 769059490; + } + break; + case -169275269: + if (this.elevation == var1.elevation) { + var2 = 619968818; + } else { + var2 = 769059490; + } + break; + case -142780195: + if (this.gray == var1.gray) { + var2 = -440275223; + } else { + var2 = 769059490; + } + break; + case 617995115: + if (this.typography == var1.typography) { + var2 = -169275269; + } else { + var2 = 769059490; + } + break; + case 619968818: + if (this.motion == var1.motion) { + var2 = 1399768564; + } else { + var2 = 769059490; + } + break; + case 730330996: + default: + if (var1 != null) { + var2 = 1689954613; + } else { + var2 = 769059490; + } + break; + case 743660302: + return (boolean)((var3) != 0); + case 769059490: + var3 = 0; + var2 = 743660302; + break; + case 814653430: + if (this.whiteGray == var1.whiteGray) { + var2 = 1868126215; + } else { + var2 = 769059490; + } + break; + case 824066526: + if (this.foregroundStroke == var1.foregroundStroke) { + var2 = -1265941501; + } else { + var2 = 769059490; + } + break; + case 1055104208: + if (this.glass == var1.glass) { + var2 = 1762124924; + } else { + var2 = 769059490; + } + break; + case 1178683901: + if (this.foregroundLightStroke == var1.foregroundLightStroke) { + var2 = 1193554434; + } else { + var2 = 769059490; + } + break; + case 1193554434: + if (this.foregroundColor == var1.foregroundColor) { + var2 = 824066526; + } else { + var2 = 769059490; + } + break; + case 1399768564: + if (this.backdrop == var1.backdrop) { + var2 = -327152876; + } else { + var2 = 769059490; + } + break; + case 1463572275: + if (this.backgroundColor == var1.backgroundColor) { + var2 = -1473895626; + } else { + var2 = 769059490; + } + break; + case 1577674971: + if (this.effects == var1.effects) { + var2 = 1055104208; + } else { + var2 = 769059490; + } + break; + case 1689954613: + if (this.accent == var1.accent) { + var2 = -1817880999; + } else { + var2 = 769059490; + } + break; + case 1729051819: + if (this.foregroundLight == var1.foregroundLight) { + var2 = 814653430; + } else { + var2 = 769059490; + } + break; + case 1762124924: + if (this.spacing == var1.spacing) { + var2 = 617995115; + } else { + var2 = 769059490; + } + break; + case 1868126215: + if (this.foregroundGray == var1.foregroundGray) { + var2 = 1178683901; + } else { + var2 = 769059490; + } + } + } + } + + public void copyFrom(mv var1) { + int var2 = 1139565917; + + while (true) { + switch (var2) { + case -587167104: + return; + case -309947943: + if (var1 == this) { + var2 = -587167104; + } else { + var2 = -262210658; + } + break; + case -262210658: + this.accent = var1.accent; + this.geometry = var1.geometry; + this.effects = var1.effects; + this.glass = var1.glass; + this.spacing = var1.spacing; + this.typography = var1.typography; + this.elevation = var1.elevation; + this.motion = var1.motion; + this.backdrop = var1.backdrop; + this.palette = var1.palette; + this.friendColor = var1.friendColor; + this.gray = var1.gray; + this.grayLight = var1.grayLight; + this.foregroundLight = var1.foregroundLight; + this.whiteGray = var1.whiteGray; + this.foregroundGray = var1.foregroundGray; + this.foregroundLightStroke = var1.foregroundLightStroke; + this.foregroundColor = var1.foregroundColor; + this.foregroundStroke = var1.foregroundStroke; + this.foregroundDark = var1.foregroundDark; + this.white = var1.white; + this.backgroundColor = var1.backgroundColor; + return; + case 1139565917: + default: + if (var1 != null) { + var2 = -309947943; + } else { + var2 = -587167104; + } + } + } + } + + public asu getColor() { + return this.accent.start(); + } + + public asu getSecondColor() { + return this.accent.end(); + } + + public asu getMiddleColor() { + return this.accent.middle(); + } + + public void setColor(asu var1) { + this.accent = this.accent.withStart(var1); + } + + public void setSecondColor(asu var1) { + this.accent = this.accent.withEnd(var1); + } + + public void setMiddleColor(asu var1) { + this.accent = this.accent.withMiddle(var1); + } + + public ng getDefaultAccent() { + return this.defaults.accent(); + } + + public no getDefaultGeometry() { + return this.defaults.geometry(); + } + + public nm getDefaultEffects() { + return this.defaults.effects(); + } + + public np getDefaultGlass() { + return this.defaults.glass(); + } + + public nu getDefaultSpacing() { + return this.defaults.spacing(); + } + + public nv getDefaultTypography() { + return this.defaults.typography(); + } + + public nn getDefaultElevation() { + return this.defaults.elevation(); + } + + public nq getDefaultMotion() { + return this.defaults.motion(); + } + + public nl getDefaultBackdrop() { + return this.defaults.backdrop(); + } + + public nt getDefaultPalette() { + return this.defaults.palette(); + } + + public asu getBaseWhite() { + return this.white; + } + + public asu getDefaultWhite() { + return this.defaults.white(); + } + + public asu getWhite() { + float var1 = 0.0F; + float var2 = 0.0F; + int var3 = -1658509829; + + while (true) { + switch (var3) { + case -1658509829: + default: + var1 = arx.progress(); + if (var1 <= 0.001F) { + var3 = -1406161792; + } else { + var3 = -882963217; + } + break; + case -1516977291: + if (this.glassWhiteSource == this.white) { + var3 = -1358894445; + } else { + var3 = 968061127; + } + break; + case -1406161792: + return this.white; + case -1358894445: + if (this.glassWhiteProgress == var1) { + var3 = -979735316; + } else { + var3 = 968061127; + } + break; + case -1060235496: + return this.glassWhite; + case -979735316: + if (this.glassWhiteDarkness != var2) { + var3 = 968061127; + } else { + var3 = -1060235496; + } + break; + case -882963217: + var2 = arx.textDarkness(); + if (this.glassWhite != null) { + var3 = -1516977291; + } else { + var3 = 968061127; + } + break; + case 968061127: + this.glassWhiteSource = this.white; + this.glassWhiteProgress = var1; + this.glassWhiteDarkness = var2; + this.glassWhite = glassTextColor(this.white, var2, var1); + var3 = -1060235496; + } + } + } + + private static asu glassTextColor(asu var0, float var1, float var2) { + asu var3 = null; + asu var4 = null; + asu var6 = null; + asu var7 = null; + int var5 = 1599516223; + + while (true) { + switch (var5) { + case -1773594423: + var7 = asu.BLACK; + var5 = 1965935937; + break; + case 283528713: + var6 = asu.WHITE; + var5 = 1107089255; + break; + case 1107089255: + var3 = var6; + if (isLightText(var0)) { + var5 = -1773594423; + } else { + var5 = 1352366441; + } + break; + case 1352366441: + var7 = asu.WHITE; + var5 = 1965935937; + break; + case 1404791224: + var6 = asu.BLACK; + var5 = 1107089255; + break; + case 1599516223: + default: + if (isLightText(var0)) { + var5 = 283528713; + } else { + var5 = 1404791224; + } + break; + case 1965935937: + var4 = var7; + return var0.mix(var3.mix(var4, var1), var2); + } + } + } + + private static boolean isLightText(asu var0) { + int var2 = 0; + int var1 = 1154255482; + + while (true) { + switch (var1) { + case -1289848620: + var2 = 1; + var1 = -281777109; + break; + case -281777109: + return (boolean)((var2) != 0); + case 1154255482: + default: + if (0.2126F * var0.getRed() + 0.7152F * var0.getGreen() + 0.0722F * var0.getBlue() >= 127.5F) { + var1 = -1289848620; + } else { + var1 = 1613330263; + } + break; + case 1613330263: + var2 = 0; + var1 = -281777109; + } + } + } + + public asu getBaseGray() { + return this.gray; + } + + public asu getBaseGrayLight() { + return this.grayLight; + } + + public asu getBaseWhiteGray() { + return this.whiteGray; + } + + public asu getGray() { + return this.mutedOnGlass(0, this.gray); + } + + public asu getGrayLight() { + return this.mutedOnGlass(1, this.grayLight); + } + + public asu getWhiteGray() { + return this.mutedOnGlass(2, this.whiteGray); + } + + private asu mutedOnGlass(int var1, asu var2) { + float var3 = 0.0F; + asu var4 = null; + int var5 = -1946840624; + + while (true) { + switch (var5) { + case -1946840624: + default: + var3 = arx.progress(); + if (var3 <= 0.001F) { + var5 = -216628001; + } else { + var5 = -1897067381; + } + break; + case -1897067381: + var4 = this.getWhite(); + if (this.mutedGlass[var1] != null) { + var5 = 1500488422; + } else { + var5 = -1400933053; + } + break; + case -1400933053: + this.mutedGlassSource[var1] = var2; + this.mutedGlassTarget[var1] = var4; + this.mutedGlassProgress[var1] = var3; + this.mutedGlass[var1] = var2.mix(var4.withAlpha(var2.getAlpha()), 0.62F * var3); + var5 = -1215577522; + break; + case -1215577522: + return this.mutedGlass[var1]; + case -1144262892: + if (this.mutedGlassTarget[var1] == var4) { + var5 = 1288596885; + } else { + var5 = -1400933053; + } + break; + case -216628001: + return var2; + case 1288596885: + if (this.mutedGlassProgress[var1] != var3) { + var5 = -1400933053; + } else { + var5 = -1215577522; + } + break; + case 1500488422: + if (this.mutedGlassSource[var1] == var2) { + var5 = -1144262892; + } else { + var5 = -1400933053; + } + } + } + } + + public mv interpolateTheme(mv var1, float var2) { + return mu.builder() + .accent(this.accent.lerp(var1.accent, var2)) + .geometry(this.geometry.lerp(var1.geometry, var2)) + .effects(this.effects.lerp(var1.effects, var2)) + .glass(this.glass.lerp(var1.glass, var2)) + .spacing(this.spacing.lerp(var1.spacing, var2)) + .typography(this.typography.lerp(var1.typography, var2)) + .elevation(this.elevation.lerp(var1.elevation, var2)) + .motion(this.motion.lerp(var1.motion, var2)) + .backdrop(this.backdrop.lerp(var1.backdrop, var2)) + .palette(this.palette.lerp(var1.palette, var2)) + .friendColor(this.friendColor.mix(var1.getFriendColor(), var2)) + .gray(this.gray.mix(var1.getBaseGray(), var2)) + .grayLight(this.grayLight.mix(var1.getBaseGrayLight(), var2)) + .foregroundLight(this.foregroundLight.mix(var1.getForegroundLight(), var2)) + .whiteGray(this.whiteGray.mix(var1.getBaseWhiteGray(), var2)) + .foregroundGray(this.foregroundGray.mix(var1.getForegroundGray(), var2)) + .foregroundLightStroke(this.foregroundLightStroke.mix(var1.getForegroundLightStroke(), var2)) + .foreground(this.foregroundColor.mix(var1.getForegroundColor(), var2)) + .foregroundStroke(this.foregroundStroke.mix(var1.getForegroundStroke(), var2)) + .foregroundDark(this.foregroundDark.mix(var1.getForegroundDark(), var2)) + .white(this.white.mix(var1.getBaseWhite(), var2)) + .background(this.backgroundColor.mix(var1.getBackgroundColor(), var2)) + .build(var1.name, var1.icon); + } + + private static mv withBackdrop(mv var0, String var1, nl var2) { + mv var3 = var0.derive(var1); + var3.setBackdrop(var2); + var3.rebaseDefaults(); + return var3; + } + + public String getName() { + return this.name; + } + + public String getIcon() { + return this.icon; + } + + public mt getDefaults() { + return this.defaults; + } + + public ng getAccent() { + return this.accent; + } + + public no getGeometry() { + return this.geometry; + } + + public nm getEffects() { + return this.effects; + } + + public np getGlass() { + return this.glass; + } + + public nu getSpacing() { + return this.spacing; + } + + public nv getTypography() { + return this.typography; + } + + public nn getElevation() { + return this.elevation; + } + + public nq getMotion() { + return this.motion; + } + + public nl getBackdrop() { + return this.backdrop; + } + + public nt getPalette() { + return this.palette; + } + + public asu getFriendColor() { + return this.friendColor; + } + + public asu getForegroundLight() { + return this.foregroundLight; + } + + public asu getForegroundGray() { + return this.foregroundGray; + } + + public asu getForegroundLightStroke() { + return this.foregroundLightStroke; + } + + public asu getForegroundColor() { + return this.foregroundColor; + } + + public asu getForegroundStroke() { + return this.foregroundStroke; + } + + public asu getForegroundDark() { + return this.foregroundDark; + } + + public asu getBackgroundColor() { + return this.backgroundColor; + } + + public asu getGlassWhite() { + return this.glassWhite; + } + + public asu getGlassWhiteSource() { + return this.glassWhiteSource; + } + + public float getGlassWhiteProgress() { + return this.glassWhiteProgress; + } + + public float getGlassWhiteDarkness() { + return this.glassWhiteDarkness; + } + + public asu[] getMutedGlass() { + return this.mutedGlass; + } + + public asu[] getMutedGlassSource() { + return this.mutedGlassSource; + } + + public asu[] getMutedGlassTarget() { + return this.mutedGlassTarget; + } + + public float[] getMutedGlassProgress() { + return this.mutedGlassProgress; + } + + public void setAccent(ng var1) { + this.accent = var1; + } + + public void setGeometry(no var1) { + this.geometry = var1; + } + + public void setEffects(nm var1) { + this.effects = var1; + } + + public void setGlass(np var1) { + this.glass = var1; + } + + public void setSpacing(nu var1) { + this.spacing = var1; + } + + public void setTypography(nv var1) { + this.typography = var1; + } + + public void setElevation(nn var1) { + this.elevation = var1; + } + + public void setMotion(nq var1) { + this.motion = var1; + } + + public void setBackdrop(nl var1) { + this.backdrop = var1; + } + + public void setPalette(nt var1) { + this.palette = var1; + } + + public void setFriendColor(asu var1) { + this.friendColor = var1; + } + + public void setGray(asu var1) { + this.gray = var1; + } + + public void setGrayLight(asu var1) { + this.grayLight = var1; + } + + public void setForegroundLight(asu var1) { + this.foregroundLight = var1; + } + + public void setWhiteGray(asu var1) { + this.whiteGray = var1; + } + + public void setForegroundGray(asu var1) { + this.foregroundGray = var1; + } + + public void setForegroundLightStroke(asu var1) { + this.foregroundLightStroke = var1; + } + + public void setForegroundColor(asu var1) { + this.foregroundColor = var1; + } + + public void setForegroundStroke(asu var1) { + this.foregroundStroke = var1; + } + + public void setForegroundDark(asu var1) { + this.foregroundDark = var1; + } + + public void setWhite(asu var1) { + this.white = var1; + } + + public void setBackgroundColor(asu var1) { + this.backgroundColor = var1; + } + + public void setGlassWhite(asu var1) { + this.glassWhite = var1; + } + + public void setGlassWhiteSource(asu var1) { + this.glassWhiteSource = var1; + } + + public void setGlassWhiteProgress(float var1) { + this.glassWhiteProgress = var1; + } + + public void setGlassWhiteDarkness(float var1) { + this.glassWhiteDarkness = var1; + } +} diff --git a/src/main/java/defpackage/mw.java b/src/main/java/defpackage/mw.java new file mode 100644 index 0000000..0717ff0 --- /dev/null +++ b/src/main/java/defpackage/mw.java @@ -0,0 +1,1424 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import java.util.HashMap; +import java.util.Map; + +public final class mw { + public static final int SCHEMA_VERSION = 7; + public static final int LEGACY_VERSION = 1; + private static final int GLASS_WHITE_VERSION = 2; + private static final String VERSION_KEY = "version"; + private static final String NAME_KEY = "name"; + private static final String ACCENT_BLOCK = "accent"; + private static final String GEOMETRY_BLOCK = "geometry"; + private static final String EFFECTS_BLOCK = "effects"; + private static final String GLASS_BLOCK = "glass"; + private static final String SPACING_BLOCK = "spacing"; + private static final String TYPOGRAPHY_BLOCK = "typography"; + private static final String ELEVATION_BLOCK = "elevation"; + private static final String MOTION_BLOCK = "motion"; + private static final String BACKDROP_BLOCK = "backdrop"; + private static final String PALETTE_BLOCK = "palette"; + private static final float RED_LUMA = 0.2126F; + private static final float GREEN_LUMA = 0.7152F; + private static final float BLUE_LUMA = 0.0722F; + private static final float DARK_TEXT_LUMINANCE = 0.35F; + private static final float LIGHT_TEXT_LUMINANCE = 0.75F; + private static final float CHANNEL_MAX = 255.0F; + private static final Map TIER_BY_NAME = tierLookup(); + + private mw() { + } + + private static Map tierLookup() { + HashMap var0 = null; + asn[] var1 = null; + int var2 = 0; + int var3 = 0; + asn var4 = null; + int var5 = -1134931068; + + while (true) { + switch (var5) { + case -1134931068: + default: + var0 = new HashMap(); + var1 = asn.values(); + var2 = var1.length; + var3 = 0; + var5 = 1787953682; + break; + case 1426215703: + var4 = var1[var3]; + var0.put(var4.name(), var4); + var3++; + var5 = 1787953682; + break; + case 1629221719: + return var0; + case 1787953682: + if (var3 < var2) { + var5 = 1426215703; + } else { + var5 = 1629221719; + } + } + } + } + + public static int versionOf(JsonObject var0) { + JsonElement var1 = null; + int var3 = 0; + int var2 = -334207388; + + while (true) { + switch (var2) { + case -2028794938: + var3 = var1.getAsInt(); + var2 = 1833798557; + break; + case -1966698108: + var3 = 1; + var2 = 1833798557; + break; + case -334207388: + default: + var1 = var0.get("version"); + if (var1 != null) { + var2 = 537652538; + } else { + var2 = -1966698108; + } + break; + case 537652538: + if (var1.isJsonNull()) { + var2 = -1966698108; + } else { + var2 = -2028794938; + } + break; + case 1833798557: + return var3; + } + } + } + + public static JsonObject write(mv var0) { + JsonObject var1 = new JsonObject(); + var1.addProperty( + "version", + (2088573558 ^ -2088573551) + ((2088573558 & -2088573551) << 1) + ); + var1.addProperty("name", var0.getName()); + putColor(var1, "color", var0.getColor()); + putColor(var1, "secondColor", var0.getSecondColor()); + putColor(var1, "middleColor", var0.getMiddleColor()); + putColor(var1, "friendColor", var0.getFriendColor()); + putColor(var1, "gray", var0.getBaseGray()); + putColor(var1, "grayLight", var0.getBaseGrayLight()); + putColor(var1, "foregroundLight", var0.getForegroundLight()); + putColor(var1, "whiteGray", var0.getBaseWhiteGray()); + putColor(var1, "foregroundGray", var0.getForegroundGray()); + putColor(var1, "foregroundLightStroke", var0.getForegroundLightStroke()); + putColor(var1, "foregroundColor", var0.getForegroundColor()); + putColor(var1, "foregroundStroke", var0.getForegroundStroke()); + putColor(var1, "foregroundDark", var0.getForegroundDark()); + putColor(var1, "white", var0.getBaseWhite()); + putColor(var1, "backgroundColor", var0.getBackgroundColor()); + var1.add("accent", writeAccent(var0.getAccent())); + var1.add("geometry", writeGeometry(var0.getGeometry())); + var1.add("effects", writeEffects(var0.getEffects())); + var1.add("glass", writeGlass(var0.getGlass())); + var1.add("spacing", writeSpacing(var0.getSpacing())); + var1.add("typography", writeTypography(var0.getTypography())); + var1.add("elevation", writeElevation(var0.getElevation())); + var1.add("motion", writeMotion(var0.getMotion())); + var1.add("backdrop", writeBackdrop(var0.getBackdrop())); + var1.add("palette", writePalette(var0.getPalette())); + return var1; + } + + public static void read(mv var0, JsonObject var1) { + int var2 = 0; + asu var3 = null; + int var5 = 0; + int var4 = 1452113660; + + while (true) { + switch (var4) { + case -1999420107: + var0.setForegroundGray(var3); + var4 = -1771171487; + break; + case -1936490603: + if ((var3 = getColor(var1, "foregroundGray")) != null) { + var4 = -1999420107; + } else { + var4 = -1771171487; + } + break; + case -1859061972: + var0.setBackgroundColor(var3); + var4 = -1002245586; + break; + case -1819145609: + if (var2 != 0) { + var4 = 705294570; + } else { + var4 = -26548647; + } + break; + case -1800574358: + if ((var3 = getColor(var1, "white")) != null) { + var4 = -1819145609; + } else { + var4 = -728119843; + } + break; + case -1771171487: + if (( + var3 = getColor( + var1, "foregroundLightStroke" + ) + ) + != null) { + var4 = 422353223; + } else { + var4 = -1561402074; + } + break; + case -1653168906: + if ((var3 = getColor(var1, "secondColor")) != null + ) + { + var4 = -465933685; + } else { + var4 = -1500081477; + } + break; + case -1642471935: + var5 = 0; + var4 = -23998884; + break; + case -1561402074: + if ((var3 = getColor(var1, "foregroundColor")) + != null) { + var4 = 1476918815; + } else { + var4 = 935938024; + } + break; + case -1500081477: + if ((var3 = getColor(var1, "middleColor")) + != null) { + var4 = -31367130; + } else { + var4 = 665056637; + } + break; + case -1074995794: + var0.setForegroundStroke(var3); + var4 = 811803837; + break; + case -1065184421: + var0.setForegroundLight(var3); + var4 = -890135216; + break; + case -1002245586: + var0.setAccent(readAccent(var1, var0.getAccent())); + var0.setGeometry(readGeometry(var1, var0.getDefaultGeometry())); + var0.setEffects(readEffects(var1, var0.getDefaultEffects())); + var0.setGlass(readGlass(var1, var0.getDefaultGlass())); + var0.setSpacing(readSpacing(var1, var0.getDefaultSpacing())); + var0.setTypography(readTypography(var1, var0.getDefaultTypography())); + var0.setElevation(readElevation(var1, var0.getDefaultElevation())); + var0.setMotion(readMotion(var1, var0.getDefaultMotion())); + var0.setBackdrop(readBackdrop(var1, var0.getDefaultBackdrop())); + var0.setPalette(readPalette(var1, var0.getDefaultPalette())); + return; + case -890135216: + if ((var3 = getColor(var1, "whiteGray")) != null) { + var4 = 1237007476; + } else { + var4 = -1936490603; + } + break; + case -728119843: + if ((var3 = getColor(var1, "backgroundColor")) != null) { + var4 = -1859061972; + } else { + var4 = -1002245586; + } + break; + case -682142197: + var0.setFriendColor(var3); + var4 = 345939225; + break; + case -517829237: + var0.setForegroundDark(var3); + var4 = -1800574358; + break; + case -470147826: + if ((var3 = getColor(var1, "grayLight")) != null) { + var4 = 357776922; + } else { + var4 = -189715779; + } + break; + case -465933685: + var0.setSecondColor(var3); + var4 = -1500081477; + break; + case -189715779: + if ((var3 = getColor(var1, "foregroundLight")) != null) { + var4 = -1065184421; + } else { + var4 = -890135216; + } + break; + case -31367130: + var0.setMiddleColor(var3); + var4 = 665056637; + break; + case -26548647: + var0.setWhite(var3); + var4 = -728119843; + break; + case -23998884: + var2 = var5; + if ((var3 = getColor(var1, "color")) != null) { + var4 = 2001359564; + } else { + var4 = -1653168906; + } + break; + case 345939225: + if ((var3 = getColor(var1, "gray")) != null) { + var4 = 1505238572; + } else { + var4 = -470147826; + } + break; + case 357776922: + var0.setGrayLight(var3); + var4 = -189715779; + break; + case 422353223: + var0.setForegroundLightStroke(var3); + var4 = -1561402074; + break; + case 454976112: + var5 = 1; + var4 = -23998884; + break; + case 665056637: + if ((var3 = getColor(var1, "friendColor")) != null) { + var4 = -682142197; + } else { + var4 = 345939225; + } + break; + case 705294570: + if (!isGlassLightenedWhite(var0, var3)) { + var4 = -26548647; + } else { + var4 = -728119843; + } + break; + case 811803837: + if ((var3 = getColor(var1, "foregroundDark")) + != null) { + var4 = -517829237; + } else { + var4 = -1800574358; + } + break; + case 935938024: + if ((var3 = getColor(var1, "foregroundStroke")) + != null) { + var4 = -1074995794; + } else { + var4 = 811803837; + } + break; + case 1237007476: + var0.setWhiteGray(var3); + var4 = -1936490603; + break; + case 1452113660: + default: + var0.reset(); + if (versionOf(var1) < (1909274264 | -1909274262) + (1909274264 & -1909274262)) { + var4 = 454976112; + } else { + var4 = -1642471935; + } + break; + case 1476918815: + var0.setForegroundColor(var3); + var4 = 935938024; + break; + case 1505238572: + var0.setGray(var3); + var4 = -470147826; + break; + case 2001359564: + var0.setColor(var3); + var4 = -1653168906; + } + } + } + + private static JsonObject writeAccent(ng var0) { + JsonObject var1 = new JsonObject(); + putColor(var1, "start", var0.start()); + putColor(var1, "middle", var0.middle()); + putColor(var1, "end", var0.end()); + var1.addProperty("angle", var0.angle()); + return var1; + } + + private static JsonObject writeGeometry(no var0) { + JsonObject var1 = new JsonObject(); + var1.addProperty("radiusScale", var0.radiusScale()); + var1.addProperty("squircleExponent", var0.squircleExponent()); + var1.addProperty("borderThickness", var0.borderThickness()); + var1.addProperty("dividerAlpha", var0.dividerAlpha()); + var1.add("roleRadiusScale", floatArray(var0.roleRadiusScale())); + return var1; + } + + private static JsonObject writeEffects(nm var0) { + JsonObject var1 = new JsonObject(); + var1.addProperty("neonIntensity", var0.neonIntensity()); + var1.addProperty("neonRadius", var0.neonRadius()); + var1.addProperty("glowExponent", var0.glowExponent()); + var1.addProperty("rimTopAlpha", var0.rimTopAlpha()); + var1.addProperty("rimBottomAlpha", var0.rimBottomAlpha()); + var1.addProperty("gradientBorder", var0.gradientBorder()); + var1.addProperty("gradientBorderAngle", var0.gradientBorderAngle()); + var1.addProperty( + "activeGlowIntensity", var0.activeGlowIntensity() + ); + var1.addProperty("activeGlowRadius", var0.activeGlowRadius()); + var1.addProperty("textGlowRadius", var0.textGlowRadius()); + var1.addProperty("textGlowIntensity", var0.textGlowIntensity()); + putColor(var1, "textGlowColor", var0.textGlowColor()); + var1.addProperty("shadowSoftness", var0.shadowSoftness()); + var1.addProperty("shadowAlpha", var0.shadowAlpha()); + var1.addProperty("hoverLift", var0.hoverLift()); + var1.addProperty("animationSpeed", var0.animationSpeed()); + var1.addProperty("sweepSpeed", var0.sweepSpeed()); + var1.addProperty("sweepLength", var0.sweepLength()); + var1.addProperty("sweepIntensity", var0.sweepIntensity()); + var1.add("roleNeonScale", floatArray(var0.roleNeonScale())); + return var1; + } + + private static JsonObject writeGlass(np var0) { + JsonObject var1 = new JsonObject(); + var1.addProperty("frost", var0.frost()); + var1.addProperty("refraction", var0.refraction()); + var1.addProperty("tint", var0.tint()); + var1.addProperty("bevelDepth", var0.bevelDepth()); + var1.addProperty("bevelWidth", var0.bevelWidth()); + var1.addProperty("rimGain", var0.rimGain()); + var1.addProperty("fillAlphaScale", var0.fillAlphaScale()); + var1.addProperty("borderAlphaScale", var0.borderAlphaScale()); + var1.addProperty("contrast", var0.contrast()); + var1.addProperty("specular", var0.specular()); + var1.addProperty("lightAngle", var0.lightAngle()); + var1.addProperty("dispersion", var0.dispersion()); + var1.addProperty("depth", var0.depth()); + JsonArray var2 = new JsonArray(); + asn[] var3 = var0.roleTier(); + int var4 = var3.length; + + for (int var5 = 0; var5 < var4; var5++) { + asn var6 = var3[var5]; + var2.add(var6 == null ? null : var6.name()); + } + + var1.add("roleTier", var2); + return var1; + } + + private static JsonObject writeSpacing(nu var0) { + JsonObject var1 = new JsonObject(); + var1.add("steps", floatArray(var0.steps())); + var1.addProperty("density", var0.density().name()); + var1.addProperty("scale", var0.scale()); + return var1; + } + + private static JsonObject writeTypography(nv var0) { + JsonObject var1 = new JsonObject(); + var1.add("sizes", floatArray(var0.sizes())); + var1.add("families", intArray(var0.families())); + var1.addProperty("scale", var0.scale()); + return var1; + } + + private static JsonObject writeElevation(nn var0) { + JsonObject var1 = new JsonObject(); + var1.add("softness", floatArray(var0.softness())); + var1.add("alpha", floatArray(var0.alpha())); + var1.addProperty("softnessScale", var0.softnessScale()); + var1.addProperty("alphaScale", var0.alphaScale()); + return var1; + } + + private static JsonObject writeMotion(nq var0) { + JsonObject var1 = new JsonObject(); + var1.add("durations", intArray(var0.durations())); + return var1; + } + + private static JsonObject writeBackdrop(nl var0) { + JsonObject var1 = new JsonObject(); + var1.addProperty("mode", var0.mode().name()); + var1.addProperty("intensity", var0.intensity()); + var1.addProperty("speed", var0.speed()); + var1.addProperty("scale", var0.scale()); + return var1; + } + + private static JsonObject writePalette(nt var0) { + JsonObject var1 = new JsonObject(); + var1.addProperty("generated", var0.generated()); + var1.addProperty("polarity", var0.polarity().name()); + var1.addProperty("harmony", var0.harmony().name()); + var1.addProperty("tint", var0.tint()); + var1.addProperty("contrastTarget", var0.contrastTarget()); + var1.addProperty("lockMask", var0.lockMask()); + return var1; + } + + private static nl readBackdrop(JsonObject var0, nl var1) { + JsonObject var2 = null; + int var3 = -1822616373; + + while (true) { + switch (var3) { + case -1822616373: + default: + var2 = block(var0, "backdrop"); + if (var2 == null) { + var3 = 325186860; + } else { + var3 = 2079893871; + } + break; + case 325186860: + return var1; + case 2079893871: + return new nl( + readEnum(var2, "mode", nk.values(), var1.mode()), + getFloat(var2, "intensity", var1.intensity()), + getFloat(var2, "speed", var1.speed()), + getFloat(var2, "scale", var1.scale()) + ); + } + } + } + + private static nt readPalette(JsonObject var0, nt var1) { + JsonObject var2 = null; + int var3 = -170414482; + + while (true) { + switch (var3) { + case -1803642167: + return new nt( + getBool(var2, "generated", var1.generated()), + readEnum(var2, "polarity", ns.values(), var1.polarity()), + readEnum(var2, "harmony", nr.values(), var1.harmony()), + getFloat(var2, "tint", var1.tint()), + getFloat(var2, "contrastTarget", var1.contrastTarget()), + getInt(var2, "lockMask", var1.lockMask()) + ); + case -170414482: + default: + var2 = block(var0, "palette"); + if (var2 == null) { + var3 = 945982652; + } else { + var3 = -1803642167; + } + break; + case 945982652: + return var1; + } + } + } + + private static > T readEnum(JsonObject var0, String var1, T[] var2, T var3) { + JsonElement var4 = null; + String var5 = null; + Enum[] var6 = null; + int var7 = 0; + int var8 = 0; + Object var9 = null; + int var10 = -167817297; + + while (true) { + switch (var10) { + case -2108595267: + return (T)var9; + case -2010906742: + var9 = var6[var8]; + if (var9.name().equals(var5)) { + var10 = -2108595267; + } else { + var10 = -732280278; + } + break; + case -1966182796: + return (T)var3; + case -732280278: + var8++; + var10 = 78066954; + break; + case -369254657: + return (T)var3; + case -167817297: + default: + var4 = var0.get(var1); + if (var4 != null) { + var10 = 836168566; + } else { + var10 = -369254657; + } + break; + case 78066954: + if (var8 < var7) { + var10 = -2010906742; + } else { + var10 = -1966182796; + } + break; + case 836168566: + if (!var4.isJsonPrimitive()) { + var10 = -369254657; + } else { + var10 = 1954134191; + } + break; + case 1954134191: + var5 = var4.getAsString(); + var6 = var2; + var7 = var6.length; + var8 = 0; + var10 = 78066954; + } + } + } + + private static ng readAccent(JsonObject var0, ng var1) { + JsonObject var2 = block(var0, "accent"); + if (var2 == null) { + return var1; + } + + asu var3 = getColor(var2, "start"); + asu var4 = getColor(var2, "middle"); + asu var5 = getColor(var2, "end"); + return new ng( + var3 != null ? var3 : var1.start(), + var4 != null ? var4 : var1.middle(), + var5 != null ? var5 : var1.end(), + getFloat(var2, "angle", var1.angle()) + ); + } + + private static no readGeometry(JsonObject var0, no var1) { + JsonObject var2 = null; + int var3 = 422817682; + + while (true) { + switch (var3) { + case -457038241: + return var1; + case 302786975: + return new no( + getFloat(var2, "radiusScale", var1.radiusScale()), + getFloat(var2, "squircleExponent", var1.squircleExponent()), + getFloat(var2, "borderThickness", var1.borderThickness()), + getFloat(var2, "dividerAlpha", var1.dividerAlpha()), + getFloatArray(var2, "roleRadiusScale", var1.roleRadiusScale()) + ); + case 422817682: + } + + var2 = block(var0, "geometry"); + if (var2 == null) { + var3 = -457038241; + } else { + var3 = 302786975; + } + } + } + + private static nm readEffects(JsonObject var0, nm var1) { + JsonObject var2 = block(var0, "effects"); + if (var2 == null) { + return var1; + } + + asu var3 = getColor(var2, "textGlowColor"); + return new nm( + getFloat(var2, "neonIntensity", var1.neonIntensity()), + getFloat(var2, "neonRadius", var1.neonRadius()), + getFloat(var2, "glowExponent", var1.glowExponent()), + getFloat(var2, "rimTopAlpha", var1.rimTopAlpha()), + getFloat(var2, "rimBottomAlpha", var1.rimBottomAlpha()), + getBool(var2, "gradientBorder", var1.gradientBorder()), + getFloat( + var2, "gradientBorderAngle", var1.gradientBorderAngle() + ), + getFloat(var2, "activeGlowIntensity", var1.activeGlowIntensity()), + getFloat( + var2, "activeGlowRadius", var1.activeGlowRadius() + ), + getFloat(var2, "textGlowRadius", var1.textGlowRadius()), + getFloat(var2, "textGlowIntensity", var1.textGlowIntensity()), + var3 != null ? var3 : var1.textGlowColor(), + getFloat(var2, "shadowSoftness", var1.shadowSoftness()), + getFloat(var2, "shadowAlpha", var1.shadowAlpha()), + getFloat(var2, "hoverLift", var1.hoverLift()), + getFloat( + var2, "animationSpeed", var1.animationSpeed() + ), + getFloat(var2, "sweepSpeed", var1.sweepSpeed()), + getFloat(var2, "sweepLength", var1.sweepLength()), + getFloat(var2, "sweepIntensity", var1.sweepIntensity()), + getFloatArray(var2, "roleNeonScale", var1.roleNeonScale()) + ); + } + + private static np readGlass(JsonObject var0, np var1) { + JsonObject var2 = null; + int var3 = 486520101; + + while (true) { + switch (var3) { + case -1857112157: + return new np( + getFloat(var2, "frost", var1.frost()), + getFloat(var2, "refraction", var1.refraction()), + getFloat(var2, "tint", var1.tint()), + getFloat(var2, "bevelDepth", var1.bevelDepth()), + getFloat(var2, "bevelWidth", var1.bevelWidth()), + getFloat(var2, "rimGain", var1.rimGain()), + getFloat(var2, "fillAlphaScale", var1.fillAlphaScale()), + getFloat(var2, "borderAlphaScale", var1.borderAlphaScale()), + getFloat(var2, "contrast", var1.contrast()), + getFloat(var2, "specular", var1.specular()), + getFloat(var2, "lightAngle", var1.lightAngle()), + getFloat(var2, "dispersion", var1.dispersion()), + getFloat(var2, "depth", var1.depth()), + readTiers(var2, var1.roleTier()) + ); + case -1808848206: + return var1; + case 486520101: + } + + var2 = block(var0, "glass"); + if (var2 == null) { + var3 = -1808848206; + } else { + var3 = -1857112157; + } + } + } + + private static nu readSpacing(JsonObject var0, nu var1) { + JsonObject var2 = null; + int var3 = -428525168; + + while (true) { + switch (var3) { + case -428525168: + default: + var2 = block(var0, "spacing"); + if (var2 == null) { + var3 = 1900557372; + } else { + var3 = 1927992266; + } + break; + case 1900557372: + return var1; + case 1927992266: + return new nu( + getFloatArray(var2, "steps", var1.steps()), + readDensity(var2, var1.density()), + getFloat(var2, "scale", var1.scale()) + ); + } + } + } + + private static ny readDensity(JsonObject var0, ny var1) { + String var2 = null; + ny[] var3 = null; + int var4 = 0; + int var5 = 0; + Object var6 = null; + int var7 = -346172187; + + while (true) { + switch (var7) { + case -2081076526: + if (var5 < var4) { + var7 = -1493773691; + } else { + var7 = -1063085162; + } + break; + case -1493773691: + var6 = var3[var5]; + if (((ny)var6).name().equals(var2)) { + var7 = 1976194978; + } else { + var7 = -104614716; + } + break; + case -1063085162: + return var1; + case -369071071: + if (!var0.get("density").isJsonPrimitive()) { + var7 = 1707244832; + } else { + var7 = 1898534747; + } + break; + case -346172187: + default: + if (var0.has("density")) { + var7 = -369071071; + } else { + var7 = 1707244832; + } + break; + case -104614716: + var5++; + var7 = -2081076526; + break; + case 1707244832: + return var1; + case 1898534747: + var2 = var0.get("density").getAsString(); + var3 = ny.values(); + var4 = var3.length; + var5 = 0; + var7 = -2081076526; + break; + case 1976194978: + return (ny)var6; + } + } + } + + private static nv readTypography(JsonObject var0, nv var1) { + JsonObject var2 = null; + int var3 = -1984391833; + + while (true) { + switch (var3) { + case -1984391833: + default: + var2 = block(var0, "typography"); + if (var2 == null) { + var3 = -1121255859; + } else { + var3 = 1639920383; + } + break; + case -1121255859: + return var1; + case 1639920383: + return new nv( + getFloatArray(var2, "sizes", var1.sizes()), + getIntArray(var2, "families", var1.families()), + getFloat(var2, "scale", var1.scale()) + ); + } + } + } + + private static nn readElevation(JsonObject var0, nn var1) { + JsonObject var2 = null; + int var3 = -226347922; + + while (true) { + switch (var3) { + case -1379778051: + return new nn( + getFloatArray(var2, "softness", var1.softness()), + getFloatArray(var2, "alpha", var1.alpha()), + getFloat(var2, "softnessScale", var1.softnessScale()), + getFloat(var2, "alphaScale", var1.alphaScale()) + ); + case -226347922: + default: + var2 = block(var0, "elevation"); + if (var2 == null) { + var3 = 492738524; + } else { + var3 = -1379778051; + } + break; + case 492738524: + return var1; + } + } + } + + private static nq readMotion(JsonObject var0, nq var1) { + JsonObject var2 = null; + int var3 = -474987943; + + while (true) { + switch (var3) { + case -764656024: + return var1; + case -474987943: + default: + var2 = block(var0, "motion"); + if (var2 == null) { + var3 = -764656024; + } else { + var3 = 513882174; + } + break; + case 513882174: + return new nq(getIntArray(var2, "durations", var1.durations())); + } + } + } + + private static asn[] readTiers(JsonObject var0, asn[] var1) { + JsonElement var2 = null; + JsonArray var3 = null; + asn[] var4 = null; + int var5 = 0; + JsonElement var6 = null; + int var7 = 2119051882; + + while (true) { + switch (var7) { + case -2000255538: + var4[var5] = TIER_BY_NAME.get(var6.getAsString()); + var7 = 272020605; + break; + case -1446108394: + if (var6.isJsonNull()) { + var7 = -1320597742; + } else { + var7 = -2000255538; + } + break; + case -1320597742: + var7 = 272020605; + break; + case -1111387954: + if (var5 < var4.length) { + var7 = 432915365; + } else { + var7 = 1385249327; + } + break; + case -457825954: + return var1; + case -381359750: + if (!var2.isJsonArray()) { + var7 = -457825954; + } else { + var7 = 1858554533; + } + break; + case 272020605: + var5++; + var7 = -1111387954; + break; + case 432915365: + var6 = var3.get(var5); + if (var6 != null) { + var7 = -1446108394; + } else { + var7 = 272020605; + } + break; + case 518335994: + return var1; + case 772327860: + var4 = new asn[var1.length]; + var5 = 0; + var7 = -1111387954; + break; + case 1385249327: + return var4; + case 1858554533: + var3 = var2.getAsJsonArray(); + if (var3.size() != var1.length) { + var7 = 518335994; + } else { + var7 = 772327860; + } + break; + case 2119051882: + default: + var2 = var0.get("roleTier"); + if (var2 != null) { + var7 = -381359750; + } else { + var7 = -457825954; + } + } + } + } + + private static boolean isGlassLightenedWhite(mv var0, asu var1) { + asu var2 = null; + int var4 = 0; + int var3 = 1819112424; + + while (true) { + switch (var3) { + case -1375421453: + var4 = 1; + var3 = 2034254754; + break; + case -96170443: + if (luminance(var2) < 0.35F) { + var3 = 1664191609; + } else { + var3 = 582871107; + } + break; + case 582871107: + var4 = 0; + var3 = 2034254754; + break; + case 1664191609: + if (luminance(var1) > 0.75F) { + var3 = -1375421453; + } else { + var3 = 582871107; + } + break; + case 1819112424: + default: + var2 = var0.getDefaultWhite(); + if (var2 != null) { + var3 = -96170443; + } else { + var3 = 582871107; + } + break; + case 2034254754: + return (boolean)((var4) != 0); + } + } + } + + private static float luminance(asu var0) { + return (0.2126F * var0.getRed() + 0.7152F * var0.getGreen() + 0.0722F * var0.getBlue()) / 255.0F; + } + + private static JsonObject block(JsonObject var0, String var1) { + JsonElement var2 = null; + JsonObject var4 = null; + int var3 = 244184818; + + while (true) { + switch (var3) { + case -1855089936: + return var4; + case -537459167: + var4 = var2.getAsJsonObject(); + var3 = -1855089936; + break; + case -427912705: + var4 = null; + var3 = -1855089936; + break; + case -120085115: + if (var2.isJsonObject()) { + var3 = -537459167; + } else { + var3 = -427912705; + } + break; + case 244184818: + default: + var2 = var0.get(var1); + if (var2 != null) { + var3 = -120085115; + } else { + var3 = -427912705; + } + } + } + } + + private static int getInt(JsonObject var0, String var1, int var2) { + JsonElement var3 = null; + int var5 = 0; + int var4 = 995021137; + + while (true) { + switch (var4) { + case -1846849679: + return var5; + case -152513511: + var5 = var3.getAsInt(); + var4 = -1846849679; + break; + case 738473301: + var5 = var2; + var4 = -1846849679; + break; + case 995021137: + default: + var3 = var0.get(var1); + if (var3 != null) { + var4 = 1073532488; + } else { + var4 = 738473301; + } + break; + case 1073532488: + if (var3.isJsonNull()) { + var4 = 738473301; + } else { + var4 = -152513511; + } + } + } + } + + private static float getFloat(JsonObject var0, String var1, float var2) { + JsonElement var3 = null; + float var5 = 0.0F; + int var4 = -361280298; + + while (true) { + switch (var4) { + case -476276251: + return var5; + case -361280298: + default: + var3 = var0.get(var1); + if (var3 != null) { + var4 = 823985882; + } else { + var4 = 312581665; + } + break; + case 312581665: + var5 = var2; + var4 = -476276251; + break; + case 777178064: + var5 = var3.getAsFloat(); + var4 = -476276251; + break; + case 823985882: + if (var3.isJsonNull()) { + var4 = 312581665; + } else { + var4 = 777178064; + } + } + } + } + + private static float[] getFloatArray(JsonObject var0, String var1, float[] var2) { + JsonElement var3 = null; + JsonArray var4 = null; + float[] var5 = null; + int var6 = 0; + int var7 = 526264859; + + while (true) { + switch (var7) { + case -1129058668: + var5 = new float[var4.size()]; + var6 = 0; + var7 = -658125169; + break; + case -919310022: + var4 = var3.getAsJsonArray(); + if (var4.size() != var2.length) { + var7 = 1974201895; + } else { + var7 = -1129058668; + } + break; + case -797305362: + return var5; + case -658125169: + if (var6 < var5.length) { + var7 = -141275040; + } else { + var7 = -797305362; + } + break; + case -531483425: + return var2; + case -141275040: + var5[var6] = var4.get(var6).getAsFloat(); + var6++; + var7 = -658125169; + break; + case 526264859: + default: + var3 = var0.get(var1); + if (var3 != null) { + var7 = 1173394190; + } else { + var7 = -531483425; + } + break; + case 1173394190: + if (!var3.isJsonArray()) { + var7 = -531483425; + } else { + var7 = -919310022; + } + break; + case 1974201895: + return var2; + } + } + } + + private static int[] getIntArray(JsonObject var0, String var1, int[] var2) { + JsonArray var3 = null; + int[] var4 = null; + int var5 = 0; + int var6 = -255460018; + + while (true) { + switch (var6) { + case -2058229975: + if (!var0.get(var1).isJsonArray()) { + var6 = -104690066; + } else { + var6 = 136934813; + } + break; + case -255460018: + default: + if (var0.has(var1)) { + var6 = -2058229975; + } else { + var6 = -104690066; + } + break; + case -104690066: + return var2; + case 136934813: + var3 = var0.getAsJsonArray(var1); + if (var3.size() != var2.length) { + var6 = 773866622; + } else { + var6 = 590685641; + } + break; + case 285314441: + if (var5 < var2.length) { + var6 = 2104704172; + } else { + var6 = 541524212; + } + break; + case 541524212: + return var4; + case 590685641: + var4 = new int[var2.length]; + var5 = 0; + var6 = 285314441; + break; + case 773866622: + return var2; + case 2104704172: + var4[var5] = var3.get(var5).getAsInt(); + var5++; + var6 = 285314441; + } + } + } + + private static JsonArray floatArray(float[] var0) { + JsonArray var1 = null; + float[] var2 = null; + int var3 = 0; + int var4 = 0; + float var5 = 0.0F; + int var6 = 2101596477; + + while (true) { + switch (var6) { + case 96802681: + if (var4 < var3) { + var6 = 1812597685; + } else { + var6 = 1766701016; + } + break; + case 1766701016: + return var1; + case 1812597685: + var5 = var2[var4]; + var1.add(var5); + var4++; + var6 = 96802681; + break; + case 2101596477: + default: + var1 = new JsonArray(); + var2 = var0; + var3 = var2.length; + var4 = 0; + var6 = 96802681; + } + } + } + + private static JsonArray intArray(int[] var0) { + JsonArray var1 = null; + int[] var2 = null; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 1815163289; + + while (true) { + switch (var6) { + case -1477271853: + return var1; + case -1153423719: + var5 = var2[var4]; + var1.add(var5); + var4++; + var6 = 1828677876; + break; + case 1815163289: + default: + var1 = new JsonArray(); + var2 = var0; + var3 = var2.length; + var4 = 0; + var6 = 1828677876; + break; + case 1828677876: + if (var4 < var3) { + var6 = -1153423719; + } else { + var6 = -1477271853; + } + } + } + } + + private static void putColor(JsonObject var0, String var1, asu var2) { + int var3 = 782627293; + + while (true) { + switch (var3) { + case -872275260: + return; + case 570862061: + var0.addProperty(var1, var2.getRGB()); + var3 = -872275260; + break; + case 782627293: + default: + if (var2 != null) { + var3 = 570862061; + } else { + var3 = -872275260; + } + } + } + } + + private static asu getColor(JsonObject var0, String var1) { + JsonElement var2 = null; + asu var4 = null; + int var3 = 1242024481; + + while (true) { + switch (var3) { + case -1465584642: + return var4; + case -320358284: + var4 = null; + var3 = -1465584642; + break; + case 186173183: + var4 = new asu(var2.getAsInt()); + var3 = -1465584642; + break; + case 1242024481: + default: + var2 = var0.get(var1); + if (var2 != null) { + var3 = 1960684477; + } else { + var3 = -320358284; + } + break; + case 1960684477: + if (var2.isJsonNull()) { + var3 = -320358284; + } else { + var3 = 186173183; + } + } + } + } + + private static boolean getBool(JsonObject var0, String var1, boolean var2) { + JsonElement var3 = null; + int var5 = 0; + int var4 = 1198610380; + + while (true) { + switch (var4) { + case -1642794862: + if (var3.isJsonNull()) { + var4 = 296723667; + } else { + var4 = 1385770043; + } + break; + case -549000741: + return (boolean)((var5) != 0); + case 296723667: + var5 = (var2) ? 1 : 0; + var4 = -549000741; + break; + case 1198610380: + default: + var3 = var0.get(var1); + if (var3 != null) { + var4 = -1642794862; + } else { + var4 = 296723667; + } + break; + case 1385770043: + var5 = (var3.getAsBoolean()) ? 1 : 0; + var4 = -549000741; + } + } + } +} diff --git a/src/main/java/defpackage/mx.java b/src/main/java/defpackage/mx.java new file mode 100644 index 0000000..7062c7a --- /dev/null +++ b/src/main/java/defpackage/mx.java @@ -0,0 +1,659 @@ +package defpackage; + +import net.minecraft.util.Mth; + +public final class mx { + private static final aso[] ROLES = aso.values(); + private static final oc[] RADIUS_ROLES = oc.values(); + private static final int ROLE_COUNT = ROLES.length; + private static final int CORNER_COUNT = 4; + public static final int CORNER_TOP_LEFT = 0; + public static final int CORNER_BOTTOM_LEFT = 1; + public static final int CORNER_BOTTOM_RIGHT = 2; + public static final int CORNER_TOP_RIGHT = 3; + private static final float CORNER_UNIT = 0.70710677F; + private static final float[] CORNER_DIR_X; + private static final float[] CORNER_DIR_Y; + private static final asn[] TIERS = asn.values(); + private static final float DEG_TO_RAD = (float) (Math.PI / 180.0); + private static final float MIN_AXIS_PROJECTION = 1.0E-4F; + private static final float HALF = 0.5F; + private static final float ALPHA_SCALE = 255.0F; + private static final int ALPHA_SHIFT = 24; + private static final int RED_SHIFT = 16; + private static final int GREEN_SHIFT = 8; + private static final int CHANNEL_MASK = 255; + private static final float MIN_TINT = -1.0F; + private static final float MAX_TINT = 1.0F; + private static final float MIN_UNIT = 0.0F; + private static final float MAX_UNIT = 1.0F; + private static final float MILLIS_PER_SECOND = 1000.0F; + private static final float LUMA_RED = 0.2126F; + private static final float LUMA_GREEN = 0.7152F; + private static final float LUMA_BLUE = 0.0722F; + private static final mx CURRENT = new mx(); + private final float[] fillAlpha = new float[ROLE_COUNT]; + private final float[] borderAlpha = new float[ROLE_COUNT]; + private final float[] radiusScale = new float[ROLE_COUNT]; + private final float[] neonIntensity = new float[ROLE_COUNT]; + private final float[] neonRadius = new float[ROLE_COUNT]; + private final int[] glassTier = new int[ROLE_COUNT]; + private final int[] rimColor = new int[ROLE_COUNT * (4)]; + private final float[] cornerWeight = new float[4]; + private final float[] roleRadius = new float[oc.COUNT]; + private final arq[] roleRadiusShape = new arq[oc.COUNT]; + private final arq[] roleRadiusTop = new arq[oc.COUNT]; + private final arq[] roleRadiusBottom = new arq[oc.COUNT]; + private final arq[] roleRadiusLeft = new arq[oc.COUNT]; + private final arq[] roleRadiusRight = new arq[oc.COUNT]; + private float glassProgress; + private float tint; + private float frost; + private float refraction; + private float bevelDepth; + private float bevelWidth; + private float rimGain; + private float sweepPhase; + private float sweepLength; + private float sweepIntensity; + private float glassContrast; + private float glassTextLuma; + private float glassSpecular; + private float glassLightX; + private float glassLightY; + private float glassDispersion; + private float glassDepth; + private float borderThickness; + private float dividerAlpha; + private float squircleExponent; + private float shadowSoftness; + private float shadowAlpha; + private float hoverLift; + private float animationSpeed; + private float glowExponent; + private float activeGlowIntensity; + private float activeGlowRadius; + private float textGlowRadius; + private float textGlowIntensity; + private int textGlowColor; + private float radiusPanel; + private float radiusPanelLarge; + private float radiusInner; + private float radiusChip; + private int accentStart; + private int accentEnd; + + private mx() { + this.resolve(mv.DARK, 0.0F, 0.0F, 0.0F, 0.0F); + } + + public static mx current() { + return CURRENT; + } + + public static void resolveCurrent(mv var0, float var1, float var2, float var3, float var4) { + CURRENT.resolve(var0, var1, var2, var3, var4); + } + + public void resolve(mv var1, float var2, float var3, float var4, float var5) { + no var6 = null; + nm var7 = null; + np var8 = null; + ng var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = 0; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = 0; + aso var16 = null; + float var17 = 0.0F; + int var18 = 0; + int var19 = 0; + float var20 = 0.0F; + float var21 = 0.0F; + float var23 = 0.0F; + int var22 = -1580829466; + + while (true) { + switch (var22) { + case -1994705706: + var16 = ROLES[var15]; + this.fillAlpha[var15] = pg.innerFillAlpha(var16, this.tint) * var8.fillAlphaScale(); + this.borderAlpha[var15] = pg.innerBorderAlpha(var16) * var8.borderAlphaScale(); + this.radiusScale[var15] = var6.radiusScale(var16); + this.glassTier[var15] = var8.tier(var16).ordinal(); + var17 = var7.neonIntensity(var16); + this.neonIntensity[var15] = var17; + this.neonRadius[var15] = var7.neonRadius(); + var18 = var15 * (4); + var19 = 0; + var22 = 31457442; + break; + case -1742540227: + var23 = 1.0F; + var22 = 347784758; + break; + case -1580829466: + default: + var6 = var1.getGeometry(); + var7 = var1.getEffects(); + var8 = var1.getGlass(); + var9 = var1.getAccent(); + this.glassProgress = var2; + this.tint = Mth.clamp(var8.tint() + var5, -1.0F, 1.0F); + this.frost = Mth.clamp(var8.frost() + var3, 0.0F, 1.0F); + this.refraction = Mth.clamp(var8.refraction() + var4, 0.0F, 1.0F); + this.bevelDepth = var8.bevelDepth(); + this.bevelWidth = var8.bevelWidth(); + this.rimGain = var8.rimGain(); + this.sweepLength = var7.sweepLength(); + this.sweepIntensity = var7.sweepIntensity(); + this.sweepPhase = resolveSweepPhase(var7.sweepSpeed()); + this.glassContrast = var8.contrast(); + this.glassSpecular = var8.specular(); + this.glassDispersion = var8.dispersion(); + this.glassDepth = var8.depth(); + this.glassTextLuma = relativeLuma(var1.getBaseWhite()); + var10 = var8.lightAngle() * (float) (Math.PI / 180.0); + this.glassLightX = Mth.cos(var10); + this.glassLightY = Mth.sin(var10); + this.borderThickness = var6.borderThickness(); + this.dividerAlpha = var6.dividerAlpha(); + this.squircleExponent = var6.squircleExponent(); + this.shadowSoftness = var7.shadowSoftness(); + this.shadowAlpha = var7.shadowAlpha(); + this.hoverLift = var7.hoverLift(); + this.animationSpeed = var7.animationSpeed(); + this.glowExponent = var7.glowExponent(); + this.activeGlowIntensity = var7.activeGlowIntensity(); + this.activeGlowRadius = var7.activeGlowRadius(); + this.textGlowRadius = var7.textGlowRadius(); + this.textGlowIntensity = var7.textGlowIntensity(); + this.textGlowColor = var7.textGlowColor().getRGB(); + var11 = var6.radiusScale(); + this.radiusPanel = 4.0F * var11; + this.radiusPanelLarge = 8.0F * var11; + this.radiusInner = 3.0F * var11; + this.radiusChip = 3.0F * var11; + this.accentStart = var9.start().getRGB(); + this.accentEnd = var9.end().getRGB(); + this.resolveRoleRadii(var6); + this.resolveCornerWeights(var7.gradientBorderAngle()); + var12 = (var7.gradientBorder()) ? 1 : 0; + var13 = var7.rimTopAlpha(); + var14 = var7.rimBottomAlpha(); + var15 = 0; + var22 = -332056769; + break; + case -1265742678: + return; + case -953685501: + var15++; + var22 = -332056769; + break; + case -332056769: + if (var15 < ROLE_COUNT) { + var22 = -1994705706; + } else { + var22 = -1265742678; + } + break; + case -258395720: + this.rimColor[var18 + var19] = 0; + var22 = 530273434; + break; + case 31457442: + if (var19 < (-523250946 ^ 523250950) + ((-523250946 & 523250950) << 1)) { + var22 = 745159428; + } else { + var22 = -953685501; + } + break; + case 241152193: + if (var12 != 0) { + var22 = 1573085003; + } else { + var22 = -1742540227; + } + break; + case 347784758: + var20 = var23; + var21 = (var14 + (var13 - var14) * var20) * var17; + this.rimColor[var18 + var19] = rampArgb(var9, 1.0F - var20, var21); + var22 = 530273434; + break; + case 530273434: + var19++; + var22 = 31457442; + break; + case 745159428: + if (var17 <= 0.0F) { + var22 = -258395720; + } else { + var22 = 241152193; + } + break; + case 1573085003: + var23 = this.cornerWeight[var19]; + var22 = 347784758; + } + } + } + + private void resolveRoleRadii(no var1) { + int var2 = 0; + oc var3 = null; + float var4 = 0.0F; + int var5 = -1661983131; + + while (true) { + switch (var5) { + case -1661983131: + default: + var2 = 0; + var5 = -76286593; + break; + case -693083683: + var2++; + var5 = -76286593; + break; + case -502168517: + this.roleRadius[var2] = var4; + this.roleRadiusShape[var2] = arq.all(var4); + this.roleRadiusTop[var2] = arq.top(var4, var4); + this.roleRadiusBottom[var2] = arq.bottom(var4, var4); + this.roleRadiusLeft[var2] = arq.left(var4, var4); + this.roleRadiusRight[var2] = arq.right(var4, var4); + var5 = -693083683; + break; + case -494820741: + return; + case -283072174: + if (this.roleRadius[var2] == var4) { + var5 = 230761485; + } else { + var5 = -502168517; + } + break; + case -76286593: + if (var2 < RADIUS_ROLES.length) { + var5 = 166696305; + } else { + var5 = -494820741; + } + break; + case 166696305: + var3 = RADIUS_ROLES[var2]; + var4 = var3.base() * var1.radiusScale(var3.surface()); + if (this.roleRadiusShape[var2] != null) { + var5 = -283072174; + } else { + var5 = -502168517; + } + break; + case 230761485: + var5 = -693083683; + } + } + } + + public float roleRadius(oc var1) { + return this.roleRadius[var1.ordinal()]; + } + + public arq roleRadiusShape(oc var1) { + return this.roleRadiusShape[var1.ordinal()]; + } + + public arq roleRadiusTop(oc var1) { + return this.roleRadiusTop[var1.ordinal()]; + } + + public arq roleRadiusBottom(oc var1) { + return this.roleRadiusBottom[var1.ordinal()]; + } + + public arq roleRadiusLeft(oc var1) { + return this.roleRadiusLeft[var1.ordinal()]; + } + + public arq roleRadiusRight(oc var1) { + return this.roleRadiusRight[var1.ordinal()]; + } + + private void resolveCornerWeights(float var1) { + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + int var6 = 0; + float var7 = 0.0F; + int var8 = -936070382; + + while (true) { + switch (var8) { + case -1894942322: + var6 = 0; + var8 = 1409217621; + break; + case -1482343491: + var7 = CORNER_DIR_X[var6] * var3 + CORNER_DIR_Y[var6] * var4; + this.cornerWeight[var6] = Mth.clamp(0.5F + 0.5F * var7 / var5, 0.0F, 1.0F); + var6++; + var8 = 1409217621; + break; + case -936070382: + default: + var2 = var1 * (float) (Math.PI / 180.0); + var3 = Mth.cos(var2); + var4 = -Mth.sin(var2); + var5 = 1.0E-4F; + var6 = 0; + var8 = -788439278; + break; + case -788439278: + if (var6 < (782137444 ^ -782137440) + ((782137444 & -782137440) << 1)) { + var8 = 379374836; + } else { + var8 = -1894942322; + } + break; + case -786894036: + var5 = var7; + var8 = 1602337690; + break; + case 379374836: + var7 = Math.abs(CORNER_DIR_X[var6] * var3 + CORNER_DIR_Y[var6] * var4); + if (var7 > var5) { + var8 = -786894036; + } else { + var8 = 1602337690; + } + break; + case 1409217621: + if (var6 < (1148775283 | -1148775279) + (1148775283 & -1148775279)) { + var8 = -1482343491; + } else { + var8 = 2034689272; + } + break; + case 1602337690: + var6++; + var8 = -788439278; + break; + case 2034689272: + return; + } + } + } + + private static int rampArgb(ng var0, float var1, float var2) { + float var3 = 0.0F; + asu var4 = null; + asu var5 = null; + float var6 = 0.0F; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = -1245509076; + + while (true) { + switch (var11) { + case -1245509076: + default: + var3 = Mth.clamp(var1, 0.0F, 1.0F); + if (var3 <= 0.5F) { + var11 = 1268182302; + } else { + var11 = 1825750681; + } + break; + case -1013291479: + var7 = Math.round(var4.getRed() + (var5.getRed() - var4.getRed()) * var6); + var8 = Math.round(var4.getGreen() + (var5.getGreen() - var4.getGreen()) * var6); + var9 = Math.round(var4.getBlue() + (var5.getBlue() - var4.getBlue()) * var6); + var10 = Math.round(Mth.clamp(var2, 0.0F, 1.0F) * 255.0F); + return (var10 & (-1486829325 ^ 1486829580) + ((-1486829325 & 1486829580) << 1)) + << (-1341134911 ^ 1341134935) + ((-1341134911 & 1341134935) << 1) + | (var7 & (-1123012199 ^ 1123012454) + ((-1123012199 & 1123012454) << 1)) << (642931539 ^ -642931523) + ((642931539 & -642931523) << 1) + | (var8 & (306229354 | -306229099) + (306229354 & -306229099)) << (-590997761 | 590997769) + (-590997761 & 590997769) + | var9 & 255; + case 1268182302: + var4 = var0.start(); + var5 = var0.middle(); + var6 = var3 / 0.5F; + var11 = -1013291479; + break; + case 1825750681: + var4 = var0.middle(); + var5 = var0.end(); + var6 = (var3 - 0.5F) / 0.5F; + var11 = -1013291479; + } + } + } + + public float fillAlpha(aso var1) { + return this.fillAlpha[var1.ordinal()]; + } + + public float borderAlpha(aso var1) { + return this.borderAlpha[var1.ordinal()]; + } + + public float radiusScale(aso var1) { + return this.radiusScale[var1.ordinal()]; + } + + public float neonIntensity(aso var1) { + return this.neonIntensity[var1.ordinal()]; + } + + public float neonRadius(aso var1) { + return this.neonRadius[var1.ordinal()]; + } + + public asn glassTier(aso var1) { + return TIERS[this.glassTier[var1.ordinal()]]; + } + + public int rimColor(aso var1, int var2) { + return this.rimColor[var1.ordinal() * ((-1878953022 ^ 1878953026) + ((-1878953022 & 1878953026) << 1)) + var2]; + } + + public float glassProgress() { + return this.glassProgress; + } + + public float tint() { + return this.tint; + } + + public float frost() { + return this.frost; + } + + public float refraction() { + return this.refraction; + } + + public float bevelDepth() { + return this.bevelDepth; + } + + public float bevelWidth() { + return this.bevelWidth; + } + + public float rimGain() { + return this.rimGain; + } + + public float sweepPhase() { + return this.sweepPhase; + } + + public float sweepLength() { + return this.sweepLength; + } + + public float sweepIntensity() { + return this.sweepIntensity; + } + + private static float resolveSweepPhase(float var0) { + long var1 = (-3778971742591565956L | 3778971742591565956L) + (-3778971742591565956L & 3778971742591565956L); + int var3 = 1264598327; + + while (true) { + switch (var3) { + case -1935112324: + return 0.0F; + case -1562792042: + return (float)(System.currentTimeMillis() % var1) / (float)var1; + case -389856060: + var1 = (long)(1000.0F / var0); + if (var1 <= (3006073490259808539L | -3006073490259808539L) + (3006073490259808539L & -3006073490259808539L)) { + var3 = 1222861189; + } else { + var3 = -1562792042; + } + break; + case 1222861189: + return 0.0F; + case 1264598327: + default: + if (var0 <= 0.0F) { + var3 = -1935112324; + } else { + var3 = -389856060; + } + } + } + } + + public float glassContrast() { + return this.glassContrast; + } + + public float glassTextLuma() { + return this.glassTextLuma; + } + + public float glassSpecular() { + return this.glassSpecular; + } + + public float glassLightX() { + return this.glassLightX; + } + + public float glassLightY() { + return this.glassLightY; + } + + public float glassDispersion() { + return this.glassDispersion; + } + + public float glassDepth() { + return this.glassDepth; + } + + private static float relativeLuma(asu var0) { + return (0.2126F * var0.getRed() + 0.7152F * var0.getGreen() + 0.0722F * var0.getBlue()) / 255.0F; + } + + public float borderThickness() { + return this.borderThickness; + } + + public float dividerAlpha() { + return this.dividerAlpha; + } + + public float squircleExponent() { + return this.squircleExponent; + } + + public float shadowSoftness() { + return this.shadowSoftness; + } + + public float shadowAlpha() { + return this.shadowAlpha; + } + + public float hoverLift() { + return this.hoverLift; + } + + public float animationSpeed() { + return this.animationSpeed; + } + + public float glowExponent() { + return this.glowExponent; + } + + public float activeGlowIntensity() { + return this.activeGlowIntensity; + } + + public float activeGlowRadius() { + return this.activeGlowRadius; + } + + public float textGlowRadius() { + return this.textGlowRadius; + } + + public float textGlowIntensity() { + return this.textGlowIntensity; + } + + public int textGlowColor() { + return this.textGlowColor; + } + + public float radiusPanel() { + return this.radiusPanel; + } + + public float radiusPanelLarge() { + return this.radiusPanelLarge; + } + + public float radiusInner() { + return this.radiusInner; + } + + public float radiusChip() { + return this.radiusChip; + } + + public int accentStart() { + return this.accentStart; + } + + public int accentEnd() { + return this.accentEnd; + } + + static { + float[] var10000 = new float[4]; + var10000[0] = -0.70710677F; + var10000[1] = -0.70710677F; + var10000[2] = 0.70710677F; + var10000[3] = 0.70710677F; + CORNER_DIR_X = var10000; + var10000 = new float[4]; + var10000[0] = -0.70710677F; + var10000[1] = 0.70710677F; + var10000[2] = 0.70710677F; + var10000[3] = -0.70710677F; + CORNER_DIR_Y = var10000; + } +} diff --git a/src/main/java/defpackage/my.java b/src/main/java/defpackage/my.java new file mode 100644 index 0000000..513336f --- /dev/null +++ b/src/main/java/defpackage/my.java @@ -0,0 +1,756 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +public class my { + private static final int ICON_CYCLE_MS = 1000; + private static final float BLEND_START = 0.0F; + private static final float BLEND_END = 1.0F; + private static final int RAMP_CYCLE_SPEED = 4; + private static final int FULL_TURN = 360; + private static final int HALF_TURN = 180; + private static final int RAMP_PING_PONG = 2; + private static final int GRADIENT_QUARTER = 90; + private static final int GRADIENT_HALF = 180; + private static final int GRADIENT_THREE_QUARTER = 270; + private static final long CONTINUOUS_EDIT_FRAMES = 6L; + private static final String SHADOW_NAME = "edit-shadow"; + private static final String ORIGIN_NAME = "edit-origin"; + private final Map registry = new LinkedHashMap<>(); + private final List themes = new ArrayList<>(); + private final List themeView = Collections.unmodifiableList(this.themes); + private final List builtins = new ArrayList<>(); + private final List builtinView = Collections.unmodifiableList(this.builtins); + private final List userThemes = new ArrayList<>(); + private final List userView = Collections.unmodifiableList(this.userThemes); + private int version; + private mv prevTheme; + private mv currentTheme = mv.DARK; + private final ct blend = ct.layout(ob.SETTLED, 1.0F); + private long advancedFrame = (-432024334540535487L | 432024334540535486L) + (-432024334540535487L & 432024334540535486L); + private final df colorCycleIcon; + private int themeIndex = 0; + private final mv editShadow = mv.DARK.derive("edit-shadow"); + private final mv editOrigin = mv.DARK.derive("edit-origin"); + private mv shadowOwner; + private long lastEditFrame = (9080470174973510076L ^ 4754587880308653636L) + ((9080470174973510076L & 4754587880308653636L) << 1); + private mv blended; + private mv blendedFrom; + private mv blendedTo; + private float blendedDelta = Float.NaN; + + public my() { + this.register(mv.DARK); + this.register(mv.LIGHT); + this.register(mv.OBSIDIAN); + this.register(mv.AURORA); + this.register(mv.NEON); + this.register(mv.PRISM); + this.register(mv.EMBER); + this.register(mv.EMBERGLOW); + this.register(mv.MATRIX); + this.register(mv.OUTRUN); + this.register(mv.VORTEX); + this.register(mv.CUSTOM_THEME); + na.loadInto(this); + this.colorCycleIcon = new df( + List.of(this.getCurrentTheme().getColor(), this.getCurrentTheme().getColor(), this.getCurrentTheme().getColor(), this.getCurrentTheme().getColor()), + (-4784229932333469332L | 4784229932333470332L) + (-4784229932333469332L & 4784229932333470332L) + ); + } + + public void register(mv var1) { + int var2 = 1866566190; + + while (true) { + switch (var2) { + case 727020213: + this.builtins.add(var1); + var2 = 1877327290; + break; + case 1866566190: + default: + if (this.add(var1)) { + var2 = 727020213; + } else { + var2 = 1877327290; + } + break; + case 1877327290: + return; + } + } + } + + public boolean registerUser(mv var1) { + int var2 = 1069316159; + + while (true) { + switch (var2) { + case -242143984: + return (boolean)(((0)) != 0); + case 1069316159: + default: + if (!this.add(var1)) { + var2 = -242143984; + } else { + var2 = 1110797939; + } + break; + case 1110797939: + this.userThemes.add(var1); + return (boolean)(((1)) != 0); + } + } + } + + public void unregisterUser(mv var1) { + if (var1 != null && this.userThemes.remove(var1)) { + if (this.currentTheme == var1) { + this.themeIndex = 0; + this.beginBlend(this.builtins.isEmpty() ? mv.DARK : this.builtins.get((334633930 ^ -334633930) + ((334633930 & -334633930) << 1))); + } + + this.registry.remove(var1.getName()); + this.themes.remove(var1); + this.version += 1; + } + } + + private boolean add(mv var1) { + int var2 = 122086195; + + while (true) { + switch (var2) { + case -1836998095: + return (boolean)(((0)) != 0); + case -1148365013: + if (this.isNameTaken(var1.getName())) { + var2 = -1836998095; + } else { + var2 = 52279336; + } + break; + case 52279336: + this.registry.put(var1.getName(), var1); + this.themes.add(var1); + this.version += 1; + return (boolean)(((1)) != 0); + case 122086195: + default: + if (var1 != null) { + var2 = -1148365013; + } else { + var2 = -1836998095; + } + } + } + } + + public boolean isNameTaken(String var1) { + Iterator var2 = null; + String var3 = null; + int var4 = -137503422; + + while (true) { + switch (var4) { + case -1866723831: + if (var2.hasNext()) { + var4 = 1337824197; + } else { + var4 = 1149692269; + } + break; + case -1807166613: + var4 = -1866723831; + break; + case -1651024214: + return (boolean)(((1)) != 0); + case -137503422: + default: + if (var1 == null) { + var4 = 277941789; + } else { + var4 = 720422045; + } + break; + case 277941789: + return (boolean)(((0)) != 0); + case 720422045: + var2 = this.registry.keySet().iterator(); + var4 = -1866723831; + break; + case 1149692269: + return (boolean)(((0)) != 0); + case 1337824197: + var3 = (String)var2.next(); + if (var3.equalsIgnoreCase(var1)) { + var4 = -1651024214; + } else { + var4 = -1807166613; + } + } + } + } + + public boolean isUser(mv var1) { + int var3 = 0; + int var2 = -1918987210; + + while (true) { + switch (var2) { + case -1918987210: + default: + if (var1 != null) { + var2 = 1455354052; + } else { + var2 = -62371640; + } + break; + case -624865188: + var3 = 1; + var2 = 971685106; + break; + case -62371640: + var3 = 0; + var2 = 971685106; + break; + case 971685106: + return (boolean)((var3) != 0); + case 1455354052: + if (this.userThemes.contains(var1)) { + var2 = -624865188; + } else { + var2 = -62371640; + } + } + } + } + + public List getThemes() { + return this.themeView; + } + + public List getBuiltinThemes() { + return this.builtinView; + } + + public List getUserThemes() { + return this.userView; + } + + public int version() { + return this.version; + } + + public void commitTheme(mv var1) { + int var2 = 0; + int var3 = -315323729; + + while (true) { + switch (var3) { + case -1704361734: + return; + case -1314041673: + this.themeIndex = var2; + var3 = 335147059; + break; + case -315323729: + default: + if (var1 == null) { + var3 = -1704361734; + } else { + var3 = 713788040; + } + break; + case 335147059: + return; + case 713788040: + this.beginBlend(var1); + var2 = this.themes.indexOf(var1); + if (var2 != (1148695580 | -1148695581) + (1148695580 & -1148695581)) { + var3 = -1314041673; + } else { + var3 = 335147059; + } + } + } + } + + public void switchTheme(mv var1) { + int var2 = 0; + int var3 = -57935642; + + while (true) { + switch (var3) { + case -2022058650: + if (var1 == this.currentTheme) { + var3 = -1946425060; + } else { + var3 = -830212843; + } + break; + case -1946425060: + return; + case -1281952334: + this.beginBlend(var1); + var2 = this.themes.indexOf(var1); + if (var2 != (-290593167 ^ 290593166) + ((-290593167 & 290593166) << 1)) { + var3 = 930520305; + } else { + var3 = 1240227795; + } + break; + case -830212843: + if (yd.defer(var1)) { + var3 = 2010099903; + } else { + var3 = -1281952334; + } + break; + case -57935642: + default: + if (var1 != null) { + var3 = -2022058650; + } else { + var3 = -1946425060; + } + break; + case 930520305: + this.themeIndex = var2; + var3 = 1240227795; + break; + case 1240227795: + return; + case 2010099903: + return; + } + } + } + + public void switchTheme() { + int var1 = -348181055; + + while (true) { + switch (var1) { + case -348181055: + default: + if (this.themes.isEmpty()) { + var1 = 841120418; + } else { + var1 = 487467039; + } + break; + case 487467039: + this.themeIndex = (this.themeIndex + (-418182944 ^ 418182945) + ((-418182944 & 418182945) << 1)) % this.themes.size(); + this.beginBlend(this.themes.get(this.themeIndex)); + return; + case 841120418: + return; + } + } + } + + private void beginBlend(mv var1) { + this.prevTheme = this.snapshot(); + this.currentTheme = var1; + this.invalidateBlend(); + this.blend.setRole(ob.SETTLED); + this.blend.jumpTo(0.0F); + this.blend.animateTo(1.0F); + } + + private mv snapshot() { + return this.getCurrentTheme(); + } + + public void switchThemeByName(String var1) { + int var2 = -202500449; + + while (true) { + switch (var2) { + case -1765556356: + this.switchTheme(this.registry.get(var1)); + return; + case -1405867953: + return; + case -202500449: + } + + if (var1 == null) { + var2 = -1405867953; + } else { + var2 = -1765556356; + } + } + } + + private void invalidateBlend() { + this.blended = null; + this.blendedFrom = null; + this.blendedTo = null; + this.blendedDelta = Float.NaN; + } + + private void advance() { + long var1 = (-4670264667139225755L | 4670264667139225755L) + (-4670264667139225755L & 4670264667139225755L); + mv var3 = null; + mv var5 = null; + int var4 = -243999437; + + while (true) { + switch (var4) { + case -1676277820: + this.advancedFrame = var1; + this.trackEdits(var1); + this.blend.update(); + if (this.colorCycleIcon == null) { + var4 = 196455770; + } else { + var4 = 1122784102; + } + break; + case -874203263: + var5 = this.currentTheme; + var4 = 1421930256; + break; + case -780414902: + return; + case -432494212: + if (this.prevTheme == null) { + var4 = -874203263; + } else { + var4 = 803118904; + } + break; + case -243999437: + default: + var1 = cs.frame(); + if (this.advancedFrame == var1) { + var4 = -780414902; + } else { + var4 = -1676277820; + } + break; + case 196455770: + return; + case 803118904: + var5 = this.blendedTheme(); + var4 = 1421930256; + break; + case 1122784102: + if (!this.blend.isSettled()) { + var4 = -432494212; + } else { + var4 = -874203263; + } + break; + case 1421930256: + var3 = var5; + this.setColorCycle(this.colorCycleIcon.getBaseColors(), var3.getColor(), var3.getColor(), var3.getColor(), var3.getColor()); + this.colorCycleIcon.update(); + return; + } + } + } + + private void trackEdits(long var1) { + int var3 = 0; + int var4 = 0; + mv var5 = null; + int var7 = 0; + int var8 = 0; + mv var9 = null; + int var6 = -261141898; + + while (true) { + switch (var6) { + case -2115304988: + if (!this.blend.isSettled()) { + var6 = -369756051; + } else { + var6 = -640528778; + } + break; + case -1942088349: + var7 = 1; + var6 = -746361501; + break; + case -1540462863: + var7 = 0; + var6 = -746361501; + break; + case -1349638188: + if (this.currentTheme.sharesValuesWith(this.editShadow)) { + var6 = -969490086; + } else { + var6 = 1748488789; + } + break; + case -974528414: + var4 = var8; + if (var4 == 0) { + var6 = 1558444914; + } else { + var6 = 628205199; + } + break; + case -969490086: + return; + case -746361501: + var3 = var7; + this.lastEditFrame = var1; + if (!this.blend.isSettled()) { + var6 = 939235271; + } else { + var6 = 1841502693; + } + break; + case -673423131: + var8 = 1; + var6 = -974528414; + break; + case -640528778: + var9 = this.editShadow; + var6 = 650102602; + break; + case -457261502: + var9 = this.blendedTheme(); + var6 = 650102602; + break; + case -369756051: + if (this.prevTheme == null) { + var6 = -640528778; + } else { + var6 = -457261502; + } + break; + case -261141898: + default: + if (this.shadowOwner != this.currentTheme) { + var6 = 2056531681; + } else { + var6 = -1349638188; + } + break; + case 183599877: + if (this.prevTheme != this.editOrigin) { + var6 = -673423131; + } else { + var6 = 1841502693; + } + break; + case 628205199: + this.editShadow.copyFrom(this.currentTheme); + return; + case 650102602: + var5 = var9; + this.editOrigin.copyFrom(var5); + this.prevTheme = this.editOrigin; + this.invalidateBlend(); + this.blend.setRole(ob.MEDIUM); + this.blend.jumpTo(0.0F); + this.blend.animateTo(1.0F); + var6 = 628205199; + break; + case 939235271: + if (this.prevTheme != null) { + var6 = 183599877; + } else { + var6 = 1841502693; + } + break; + case 1100414548: + this.blend.jumpTo(1.0F); + var6 = 628205199; + break; + case 1558444914: + if (var3 != 0) { + var6 = 1100414548; + } else { + var6 = -2115304988; + } + break; + case 1748488789: + if (var1 - this.lastEditFrame <= (-4912277920460707343L ^ 4912277920460707349L) + ((-4912277920460707343L & 4912277920460707349L) << 1)) { + var6 = -1942088349; + } else { + var6 = -1540462863; + } + break; + case 1841502693: + var8 = 0; + var6 = -974528414; + break; + case 2056531681: + this.shadowOwner = this.currentTheme; + this.editShadow.copyFrom(this.currentTheme); + return; + } + } + } + + private void setColorCycle(List var1, asu var2, asu var3, asu var4, asu var5) { + var1.set(0, var2); + var1.set(1, var3); + var1.set(2, var4); + var1.set(3, var5); + } + + public mv getCurrentTheme() { + int var1 = -455792769; + + while (true) { + switch (var1) { + case -1383086159: + return this.currentTheme; + case -455792769: + default: + this.advance(); + if (!this.blend.isSettled()) { + var1 = 1362121136; + } else { + var1 = -1383086159; + } + break; + case 1249446161: + return this.blendedTheme(); + case 1362121136: + if (this.prevTheme == null) { + var1 = -1383086159; + } else { + var1 = 1249446161; + } + } + } + } + + private mv blendedTheme() { + float var1 = 0.0F; + int var2 = 1738017455; + + while (true) { + switch (var2) { + case -1662758270: + if (this.blendedFrom == this.prevTheme) { + var2 = 944626428; + } else { + var2 = -759464314; + } + break; + case -1100843557: + if (this.blendedDelta != var1) { + var2 = -759464314; + } else { + var2 = 295704891; + } + break; + case -759464314: + this.blendedFrom = this.prevTheme; + this.blendedTo = this.currentTheme; + this.blendedDelta = var1; + this.blended = this.prevTheme.interpolateTheme(this.currentTheme, var1); + var2 = 295704891; + break; + case 295704891: + return this.blended; + case 944626428: + if (this.blendedTo == this.currentTheme) { + var2 = -1100843557; + } else { + var2 = -759464314; + } + break; + case 1738017455: + default: + var1 = this.blend.value(); + if (this.blended != null) { + var2 = -1662758270; + } else { + var2 = -759464314; + } + } + } + } + + public mv getSelectedTheme() { + return this.currentTheme; + } + + public boolean is(mv var1) { + int var3 = 0; + int var2 = 383138610; + + while (true) { + switch (var2) { + case -1079054556: + var3 = 0; + var2 = 1978606439; + break; + case -583362459: + var3 = 1; + var2 = 1978606439; + break; + case 383138610: + default: + if (this.currentTheme == var1) { + var2 = -583362459; + } else { + var2 = -1079054556; + } + break; + case 1978606439: + return (boolean)((var3) != 0); + } + } + } + + public ary getClientColor() { + return ary.of( + this.getClientColor((-1087390863 ^ 1087390863) + ((-1087390863 & 1087390863) << 1)), + this.getClientColor((1567734564 | -1567734474) + (1567734564 & -1567734474)), + this.getClientColor((-1109818221 ^ 1109818401) + ((-1109818221 & 1109818401) << 1)), + this.getClientColor((-687728773 ^ 687729043) + ((-687728773 & 687729043) << 1)) + ); + } + + public asu getClientColor(int var1) { + ng var2 = null; + int var3 = 0; + int var5 = 0; + int var4 = 286228087; + + while (true) { + switch (var4) { + case -1725546943: + var5 = var3; + var4 = -1642057256; + break; + case -1642057256: + var3 = var5 * (2); + return var2.sample(var3 / 360.0F); + case 78882075: + var5 = (1806633660 ^ -1806633300) + ((1806633660 & -1806633300) << 1) - var3; + var4 = -1642057256; + break; + case 286228087: + default: + var2 = this.getCurrentTheme().getAccent(); + var3 = (int)( + ((long)(cs.elapsedMillis() / 4.0) + var1 + (long)var2.angle()) + % ((299340194560040280L | -299340194560039920L) + (299340194560040280L & -299340194560039920L)) + ); + if (var3 >= (-1061653956 ^ 1061654136) + ((-1061653956 & 1061654136) << 1)) { + var4 = 78882075; + } else { + var4 = -1725546943; + } + } + } + } +} diff --git a/src/main/java/defpackage/mz.java b/src/main/java/defpackage/mz.java new file mode 100644 index 0000000..49c0e88 --- /dev/null +++ b/src/main/java/defpackage/mz.java @@ -0,0 +1,233 @@ +package defpackage; + +import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import net.minecraft.client.Minecraft; + +public final class mz { + public static final File DIRECTORY = new File(bz.DIRECTORY, "themes"); + private static final String EXTENSION = ".json"; + private static final String ILLEGAL_NAME_PATTERN = "[^a-zA-Z0-9 _-]"; + private static final String FALLBACK_NAME = "theme"; + private static final String NOTIFY_ICON = "V"; + private static final String NOTIFY_TITLE = "Theme"; + private static final String STATUS_EXPORTED = "exported"; + private static final String STATUS_IMPORTED = "imported"; + private static final String STATUS_COPIED = "copied"; + private static final String STATUS_PASTED = "pasted"; + private static final String STATUS_MISSING = "no saved file"; + private static final String STATUS_INVALID = "clipboard is not a theme"; + private static final String STATUS_FAILED = "failed, see log"; + private static final String EXPORT_FAILURE = "theme {} export failed"; + private static final String IMPORT_FAILURE = "theme {} import failed"; + private static final String CLIPBOARD_FAILURE = "theme {} clipboard transfer failed"; + + private mz() { + } + + public static File fileOf(mv var0) { + return new File(DIRECTORY, sanitize(var0.getName()) + ".json"); + } + + public static boolean exportToFile(mv var0) { + if (var0 == null) { + return (boolean)(((0)) != 0); + } + + try { + DIRECTORY.mkdirs(); + Path var1 = fileOf(var0).toPath(); + Files.writeString(var1, toJson(var0), StandardCharsets.UTF_8); + notify("exported"); + return (boolean)(((1)) != 0); + } catch (Exception var2) { + id.error( + Cif.CONFIG, "theme {} export failed", var0.getName(), var2 + ); + notify("failed, see log"); + return (boolean)(((0)) != 0); + } + } + + public static boolean importFromFile(mv var0) { + if (var0 == null) { + return (boolean)(((0)) != 0); + } + + File var1 = fileOf(var0); + if (!var1.isFile()) { + notify("no saved file"); + return (boolean)(((0)) != 0); + } + + try { + String var2 = Files.readString(var1.toPath(), StandardCharsets.UTF_8); + if (!apply(var0, var2)) { + notify("clipboard is not a theme"); + return (boolean)(((0)) != 0); + } else { + notify("imported"); + return (boolean)(((1)) != 0); + } + } catch (Exception var3) { + id.error( + Cif.CONFIG, + "theme {} import failed", + var0.getName(), + var3 + ); + notify("failed, see log"); + return (boolean)(((0)) != 0); + } + } + + public static boolean copyToClipboard(mv var0) { + if (var0 == null) { + return (boolean)(((0)) != 0); + } + + try { + Minecraft.getInstance().keyboardHandler.setClipboard(toJson(var0)); + notify("copied"); + return (boolean)(((1)) != 0); + } catch (Exception var2) { + id.error( + Cif.CONFIG, + "theme {} clipboard transfer failed", + var0.getName(), + var2 + ); + notify("failed, see log"); + return (boolean)(((0)) != 0); + } + } + + public static boolean pasteFromClipboard(mv var0) { + if (var0 == null) { + return (boolean)(((0)) != 0); + } + + try { + if (!apply(var0, Minecraft.getInstance().keyboardHandler.getClipboard())) { + notify("clipboard is not a theme"); + return (boolean)(((0)) != 0); + } else { + notify("pasted"); + return (boolean)(((1)) != 0); + } + } catch (Exception var2) { + id.error( + Cif.CONFIG, + "theme {} clipboard transfer failed", + var0.getName(), + var2 + ); + notify("failed, see log"); + return (boolean)(((0)) != 0); + } + } + + public static String toJson(mv var0) { + return new GsonBuilder().setPrettyPrinting().create().toJson(mw.write(var0)); + } + + private static boolean apply(mv var0, String var1) { + JsonElement var2 = null; + int var3 = 612999807; + + while (true) { + switch (var3) { + case -1375598760: + return (boolean)(((0)) != 0); + case -1002558799: + var2 = JsonParser.parseString(var1); + if (!var2.isJsonObject()) { + var3 = -525691760; + } else { + var3 = 1409423410; + } + break; + case -525691760: + return (boolean)(((0)) != 0); + case 612999807: + default: + if (var1 != null) { + var3 = 951343761; + } else { + var3 = -1375598760; + } + break; + case 951343761: + if (var1.isBlank()) { + var3 = -1375598760; + } else { + var3 = -1002558799; + } + break; + case 1409423410: + mw.read(var0, var2.getAsJsonObject()); + return (boolean)(((1)) != 0); + } + } + } + + private static void notify(String var0) { + le.getInstance() + .addCustomNotification( + "V", + "Theme", + var0 + ); + } + + private static String sanitize(String var0) { + String var1 = null; + String var3 = null; + String var4 = null; + int var2 = 1459338440; + + while (true) { + switch (var2) { + case -1286484816: + return var4; + case -1195198335: + var1 = var3; + if (var1.isEmpty()) { + var2 = 1513057761; + } else { + var2 = 982235186; + } + break; + case -898777540: + var3 = ""; + var2 = -1195198335; + break; + case 982235186: + var4 = var1; + var2 = -1286484816; + break; + case 991334581: + var3 = var0.replaceAll("[^a-zA-Z0-9 _-]", "") + .trim(); + var2 = -1195198335; + break; + case 1459338440: + default: + if (var0 == null) { + var2 = -898777540; + } else { + var2 = 991334581; + } + break; + case 1513057761: + var4 = "theme"; + var2 = -1286484816; + } + } + } +} diff --git a/src/main/java/defpackage/n.java b/src/main/java/defpackage/n.java new file mode 100644 index 0000000..ca57c3e --- /dev/null +++ b/src/main/java/defpackage/n.java @@ -0,0 +1,16 @@ +package defpackage; + +public abstract class n implements m { + private boolean stopped; + + protected n() { + } + + public void stop() { + this.stopped = (boolean)(((1)) != 0); + } + + public boolean isStopped() { + return this.stopped; + } +} diff --git a/src/main/java/defpackage/na.java b/src/main/java/defpackage/na.java new file mode 100644 index 0000000..a0b6533 --- /dev/null +++ b/src/main/java/defpackage/na.java @@ -0,0 +1,307 @@ +package defpackage; + +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.util.Arrays; +import java.util.Comparator; + +public final class na { + private static final String EXTENSION = ".json"; + private static final String ILLEGAL_NAME_PATTERN = "[^a-zA-Z0-9 _-]"; + private static final String FALLBACK_NAME = "My theme"; + private static final String NUMBER_SEPARATOR = " "; + private static final int MAX_NAME_LENGTH = 24; + private static final int FIRST_SUFFIX = 2; + private static final String SCAN_FAILURE = "user theme scan failed"; + private static final String READ_FAILURE = "user theme {} read failed"; + private static final String WRITE_FAILURE = "user theme {} write failed"; + private static final String DELETE_FAILURE = "user theme {} delete failed"; + + private na() { + } + + static void loadInto(my var0) { + File[] var1; + try { + var1 = mz.DIRECTORY.listFiles(); + } catch (Exception var9) { + id.warn(Cif.CONFIG, "user theme scan failed", var9); + return; + } + + if (var1 != null) { + Arrays.sort(var1, Comparator.comparing(File::getName, String.CASE_INSENSITIVE_ORDER)); + File[] var2 = var1; + int var3 = var2.length; + + for (int var4 = 0; var4 < var3; var4++) { + File var5 = var2[var4]; + String var6 = var5.getName(); + if (var5.isFile() && var6.endsWith(".json")) { + String var7 = var6.substring(0, var6.length() - ".json".length()); + if (!var7.isEmpty() && var7.equals(sanitize(var7)) && !var0.isNameTaken(var7)) { + mv var8 = mv.DARK.derive(var7); + if (read(var8, var5)) { + var8.rebaseDefaults(); + var0.registerUser(var8); + } + } + } + } + } + } + + public static mv create(my var0, mv var1, String var2) { + String var3 = null; + mv var4 = null; + int var5 = -978626239; + + while (true) { + switch (var5) { + case -2014940826: + return null; + case -1973808678: + var3 = uniqueName(var0, sanitize(var2)); + var4 = var1.derive(var3); + if (!write(var4)) { + var5 = 513615700; + } else { + var5 = -855730488; + } + break; + case -978626239: + default: + if (var0 != null) { + var5 = 621914006; + } else { + var5 = -2014940826; + } + break; + case -855730488: + var0.registerUser(var4); + return var4; + case 513615700: + return null; + case 621914006: + if (var1 == null) { + var5 = -2014940826; + } else { + var5 = -1973808678; + } + } + } + } + + public static boolean save(mv var0) { + int var1 = 1135985028; + + while (true) { + switch (var1) { + case -1216221460: + return (boolean)(((0)) != 0); + case -198922153: + if (!write(var0)) { + var1 = -1216221460; + } else { + var1 = 992898763; + } + break; + case 992898763: + var0.rebaseDefaults(); + return (boolean)(((1)) != 0); + case 1135985028: + default: + if (var0 != null) { + var1 = -198922153; + } else { + var1 = -1216221460; + } + } + } + } + + public static boolean delete(my var0, mv var1) { + if (var0 != null && var0.isUser(var1)) { + try { + Files.deleteIfExists(mz.fileOf(var1).toPath()); + } catch (Exception var3) { + id.error( + Cif.CONFIG, + "user theme {} delete failed", + var1.getName(), + var3 + ); + return (boolean)(((0)) != 0); + } + + var0.unregisterUser(var1); + return (boolean)(((1)) != 0); + } else { + return (boolean)(((0)) != 0); + } + } + + public static String suggestName(my var0, mv var1) { + return uniqueName(var0, sanitize(var1 == null ? null : var1.getName())); + } + + private static String uniqueName(my var0, String var1) { + int var2 = 0; + String var3 = null; + Object var4 = null; + String var5 = null; + String var7 = null; + int var6 = 452510084; + + while (true) { + switch (var6) { + case 24886263: + var4 = var7; + var5 = var4 + var3; + if (!var0.isNameTaken(var5)) { + var6 = 928290308; + } else { + var6 = 1409307150; + } + break; + case 82858632: + return var1; + case 391684584: + var7 = var1.substring( + 0, (-23161498 ^ 23161522) + ((-23161498 & 23161522) << 1) - var3.length() + ) + .trim(); + var6 = 24886263; + break; + case 452510084: + default: + if (!var0.isNameTaken(var1)) { + var6 = 82858632; + } else { + var6 = 1105133326; + } + break; + case 527504939: + var3 = " " + var2; + if (var1.length() + var3.length() > (-1676177484 ^ 1676177508) + ((-1676177484 & 1676177508) << 1)) { + var6 = 391684584; + } else { + var6 = 687439548; + } + break; + case 687439548: + var7 = var1; + var6 = 24886263; + break; + case 928290308: + return var5; + case 1105133326: + var2 = 2; + var6 = 527504939; + break; + case 1409307150: + var2++; + var6 = 527504939; + } + } + } + + private static boolean write(mv var0) { + try { + mz.DIRECTORY.mkdirs(); + Files.writeString(mz.fileOf(var0).toPath(), mz.toJson(var0), StandardCharsets.UTF_8); + return (boolean)(((1)) != 0); + } catch (Exception var2) { + id.error( + Cif.CONFIG, + "user theme {} write failed", + var0.getName(), + var2 + ); + return (boolean)(((0)) != 0); + } + } + + private static boolean read(mv var0, File var1) { + try { + JsonElement var2 = JsonParser.parseString(Files.readString(var1.toPath(), StandardCharsets.UTF_8)); + if (!var2.isJsonObject()) { + return (boolean)(((0)) != 0); + } + + mw.read(var0, var2.getAsJsonObject()); + return (boolean)(((1)) != 0); + } catch (Exception var3) { + id.error( + Cif.CONFIG, + "user theme {} read failed", + var1.getName(), + var3 + ); + return (boolean)(((0)) != 0); + } + } + + private static String sanitize(String var0) { + String var1 = null; + String var3 = null; + String var4 = null; + int var2 = -1538676379; + + while (true) { + switch (var2) { + case -1939382575: + var3 = ""; + var2 = -1870678279; + break; + case -1870678279: + var1 = var3; + if (var1.isEmpty()) { + var2 = -1661671720; + } else { + var2 = 275886069; + } + break; + case -1661671720: + var1 = "My theme"; + var2 = 275886069; + break; + case -1538676379: + default: + if (var0 == null) { + var2 = -1939382575; + } else { + var2 = 823594435; + } + break; + case -862135138: + var4 = var1.substring( + 0, (2007092288 ^ -2007092264) + ((2007092288 & -2007092264) << 1) + ) + .trim(); + var2 = 2035169083; + break; + case 275886069: + if (var1.length() > (1952992443 | -1952992419) + (1952992443 & -1952992419)) { + var2 = -862135138; + } else { + var2 = 350736490; + } + break; + case 350736490: + var4 = var1; + var2 = 2035169083; + break; + case 823594435: + var3 = var0.replaceAll("[^a-zA-Z0-9 _-]", "").trim(); + var2 = -1870678279; + break; + case 2035169083: + return var4; + } + } + } +} diff --git a/src/main/java/defpackage/nb.java b/src/main/java/defpackage/nb.java new file mode 100644 index 0000000..d62c9f1 --- /dev/null +++ b/src/main/java/defpackage/nb.java @@ -0,0 +1,229 @@ +package defpackage; + +public enum nb { + NORMAL("Normal", null), + PROTANOPIA, + DEUTERANOPIA, + TRITANOPIA, + ACHROMATOPSIA; + + private static final float CHANNEL_MAX = 255.0F; + private static final float SRGB_LINEAR_THRESHOLD = 0.04045F; + private static final float SRGB_LINEAR_DIVISOR = 12.92F; + private static final float SRGB_OFFSET = 0.055F; + private static final float SRGB_SCALE = 1.055F; + private static final float SRGB_EXPONENT = 2.4F; + private static final float SRGB_INVERSE_EXPONENT = 0.41666666F; + private static final float SRGB_ENCODE_THRESHOLD = 0.0031308F; + private static final int ROW_RED = 0; + private static final int ROW_GREEN = 3; + private static final int ROW_BLUE = 6; + private final String label; + private final float[] matrix; + + nb(String var3, float[] var4) { + this.label = var3; + this.matrix = var4; + } + + public String label() { + return this.label; + } + + public boolean isIdentity() { + int var2 = 0; + int var1 = 1845308209; + + while (true) { + switch (var1) { + case -1075541796: + var2 = 1; + var1 = 49657045; + break; + case 49657045: + return (boolean)((var2) != 0); + case 1162603800: + var2 = 0; + var1 = 49657045; + break; + case 1845308209: + default: + if (this.matrix == null) { + var1 = -1075541796; + } else { + var1 = 1162603800; + } + } + } + } + + public asu simulate(asu var1) { + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + int var5 = 2090404087; + + while (true) { + switch (var5) { + case -1435950809: + if (var1 == null) { + var5 = 344100859; + } else { + var5 = 147484293; + } + break; + case 147484293: + var2 = decode(var1.getRed()); + var3 = decode(var1.getGreen()); + var4 = decode(var1.getBlue()); + return new asu( + channel( + this.matrix[0] * var2 + + this.matrix[1] * var3 + + this.matrix[2] * var4 + ), + channel( + this.matrix[3] * var2 + + this.matrix[4] * var3 + + this.matrix[5] * var4 + ), + channel( + this.matrix[6] * var2 + + this.matrix[7] * var3 + + this.matrix[8] * var4 + ), + var1.getAlpha() + ); + case 344100859: + return var1; + case 2090404087: + default: + if (this.matrix != null) { + var5 = -1435950809; + } else { + var5 = 344100859; + } + } + } + } + + private static int channel(float var0) { + float var1 = 0.0F; + float var3 = 0.0F; + int var2 = -1276267340; + + while (true) { + switch (var2) { + case -1511412517: + var3 = var0 * 12.92F; + var2 = 1463872173; + break; + case -1276267340: + default: + if (var0 <= 0.0031308F) { + var2 = -1511412517; + } else { + var2 = 410546602; + } + break; + case 410546602: + var3 = 1.055F * (float)Math.pow(Math.max(var0, 0.0F), 0.41666666F) - 0.055F; + var2 = 1463872173; + break; + case 1463872173: + var1 = var3; + return Math.round(Math.max(0.0F, Math.min(1.0F, var1)) * 255.0F); + } + } + } + + private static float decode(int var0) { + float var1 = 0.0F; + float var3 = 0.0F; + int var2 = -44307644; + + while (true) { + switch (var2) { + case -44307644: + default: + var1 = var0 / 255.0F; + if (var1 <= 0.04045F) { + var2 = 138883601; + } else { + var2 = 102529656; + } + break; + case 43858952: + return var3; + case 102529656: + var3 = (float)Math.pow((var1 + 0.055F) / 1.055F, 2.4F); + var2 = 43858952; + break; + case 138883601: + var3 = var1 / 12.92F; + var2 = 43858952; + } + } + } + + // $VF: Failed to inline enum fields + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + static { + String var10002 = "PROTANOPIA"; + int var10003 = 1; + String var10004 = "Protanopia"; + float[] var10005 = new float[9]; + var10005[0] = 0.152286F; + var10005[1] = 1.052583F; + var10005[2] = -0.204868F; + var10005[3] = 0.114503F; + var10005[4] = 0.786281F; + var10005[5] = 0.099216F; + var10005[6] = -0.003882F; + var10005[7] = -0.048116F; + var10005[8] = 1.051998F; + PROTANOPIA = new nb(var10004, var10005); + var10002 = "DEUTERANOPIA"; + var10003 = 2; + var10004 = "Deuteranopia"; + var10005 = new float[9]; + var10005[0] = 0.367322F; + var10005[1] = 0.860646F; + var10005[2] = -0.227968F; + var10005[3] = 0.280085F; + var10005[4] = 0.672501F; + var10005[5] = 0.047413F; + var10005[6] = -0.01182F; + var10005[7] = 0.04294F; + var10005[8] = 0.968881F; + DEUTERANOPIA = new nb(var10004, var10005); + var10002 = "TRITANOPIA"; + var10003 = 3; + var10004 = "Tritanopia"; + var10005 = new float[9]; + var10005[0] = 1.255528F; + var10005[1] = -0.076749F; + var10005[2] = -0.178779F; + var10005[3] = -0.078411F; + var10005[4] = 0.930809F; + var10005[5] = 0.147602F; + var10005[6] = 0.004733F; + var10005[7] = 0.691367F; + var10005[8] = 0.3039F; + TRITANOPIA = new nb(var10004, var10005); + var10002 = "ACHROMATOPSIA"; + var10003 = 4; + var10004 = "Achromatopsia"; + var10005 = new float[9]; + var10005[0] = 0.2126F; + var10005[1] = 0.7152F; + var10005[2] = 0.0722F; + var10005[3] = 0.2126F; + var10005[4] = 0.7152F; + var10005[5] = 0.0722F; + var10005[6] = 0.2126F; + var10005[7] = 0.7152F; + var10005[8] = 0.0722F; + ACHROMATOPSIA = new nb(var10004, var10005); + } +} diff --git a/src/main/java/defpackage/nc.java b/src/main/java/defpackage/nc.java new file mode 100644 index 0000000..1529677 --- /dev/null +++ b/src/main/java/defpackage/nc.java @@ -0,0 +1,643 @@ +package defpackage; + +public final class nc { + private static final float CHANNEL_MAX = 255.0F; + private static final float SRGB_LINEAR_THRESHOLD = 0.04045F; + private static final float SRGB_LINEAR_DIVISOR = 12.92F; + private static final float SRGB_OFFSET = 0.055F; + private static final float SRGB_SCALE = 1.055F; + private static final float SRGB_EXPONENT = 2.4F; + private static final float SRGB_INVERSE_EXPONENT = 0.41666666F; + private static final float SRGB_ENCODE_THRESHOLD = 0.0031308F; + private static final float LMS_L_R = 0.41222146F; + private static final float LMS_L_G = 0.53633255F; + private static final float LMS_L_B = 0.051445995F; + private static final float LMS_M_R = 0.2119035F; + private static final float LMS_M_G = 0.6806995F; + private static final float LMS_M_B = 0.10739696F; + private static final float LMS_S_R = 0.08830246F; + private static final float LMS_S_G = 0.28171885F; + private static final float LMS_S_B = 0.6299787F; + private static final float LAB_L_L = 0.21045426F; + private static final float LAB_L_M = 0.7936178F; + private static final float LAB_L_S = -0.004072047F; + private static final float LAB_A_L = 1.9779985F; + private static final float LAB_A_M = -2.4285922F; + private static final float LAB_A_S = 0.4505937F; + private static final float LAB_B_L = 0.025904037F; + private static final float LAB_B_M = 0.78277177F; + private static final float LAB_B_S = -0.80867577F; + private static final float RGB_R_L = 4.0767417F; + private static final float RGB_R_M = -3.3077116F; + private static final float RGB_R_S = 0.23096994F; + private static final float RGB_G_L = -1.268438F; + private static final float RGB_G_M = 2.6097574F; + private static final float RGB_G_S = -0.34131938F; + private static final float RGB_B_L = -0.0041960864F; + private static final float RGB_B_M = -0.7034186F; + private static final float RGB_B_S = 1.7076147F; + private static final float LUMA_RED = 0.2126F; + private static final float LUMA_GREEN = 0.7152F; + private static final float LUMA_BLUE = 0.0722F; + private static final float CONTRAST_OFFSET = 0.05F; + private static final float DEGREES = 180.0F / (float)Math.PI; + private static final float RADIANS = (float) (Math.PI / 180.0); + private static final float FULL_TURN = 360.0F; + private static final float HALF_TURN = 180.0F; + private static final float GAMUT_EPSILON = 1.0E-4F; + private static final int GAMUT_STEPS = 14; + private static final float MIN_CHROMA = 0.0F; + private static final float MAX_LIGHTNESS = 1.0F; + private static final float MIN_LIGHTNESS = 0.0F; + private static final float GREY_CHROMA_EPSILON = 1.0E-5F; + private static final ThreadLocal SCRATCH = ThreadLocal.withInitial(() -> new float[3]); + + private nc() { + } + + public static float lightness(asu var0) { + return toLch(var0)[0]; + } + + public static float chroma(asu var0) { + return toLch(var0)[1]; + } + + public static float hue(asu var0) { + return toLch(var0)[2]; + } + + public static asu of(float var0, float var1, float var2, int var3) { + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = 0; + float var9 = 0.0F; + int var10 = 4974213; + + while (true) { + switch (var10) { + case -1991175441: + if (var8 < (-1177421829 | 1177421843) + (-1177421829 & 1177421843)) { + var10 = 1125321340; + } else { + var10 = 534931175; + } + break; + case -1953524759: + var6 = var9; + var10 = -1095960652; + break; + case -1095960652: + var8++; + var10 = -1991175441; + break; + case -894017801: + var7 = var9; + var10 = -1095960652; + break; + case 4974213: + default: + var4 = clamp(var0, 0.0F, 1.0F); + var5 = Math.max(var1, 0.0F); + if (fits(var4, var5, var2)) { + var10 = 1382352245; + } else { + var10 = 1479851752; + } + break; + case 534931175: + return encode(var4, var6, var2, var3); + case 1125321340: + var9 = (var6 + var7) * 0.5F; + if (fits(var4, var9, var2)) { + var10 = -1953524759; + } else { + var10 = -894017801; + } + break; + case 1382352245: + return encode(var4, var5, var2, var3); + case 1479851752: + var6 = 0.0F; + var7 = var5; + var8 = 0; + var10 = -1991175441; + } + } + } + + public static asu withLightness(asu var0, float var1) { + float[] var2 = toLch(var0); + return of( + var1, var2[1], var2[2], var0.getAlpha() + ); + } + + public static asu withChroma(asu var0, float var1) { + float[] var2 = toLch(var0); + return of( + var2[0], + var1, + var2[2], + var0.getAlpha() + ); + } + + public static asu withHue(asu var0, float var1) { + float[] var2 = toLch(var0); + return of(var2[0], var2[1], var1, var0.getAlpha()); + } + + public static asu shiftHue(asu var0, float var1) { + float[] var2 = toLch(var0); + return of( + var2[0], + var2[1], + normalizeHue(var2[2] + var1), + var0.getAlpha() + ); + } + + public static asu scaleLightness(asu var0, float var1) { + float[] var2 = toLch(var0); + return of( + var2[0] + var1, + var2[1], + var2[2], + var0.getAlpha() + ); + } + + public static float normalizeHue(float var0) { + float var1 = 0.0F; + float var3 = 0.0F; + int var2 = 1994107137; + + while (true) { + switch (var2) { + case 644193160: + var3 = var1 + 360.0F; + var2 = 976605615; + break; + case 976605615: + return var3; + case 1994107137: + default: + var1 = var0 % 360.0F; + if (var1 < 0.0F) { + var2 = 644193160; + } else { + var2 = 2109172022; + } + break; + case 2109172022: + var3 = var1; + var2 = 976605615; + } + } + } + + public static float hueDistance(float var0, float var1) { + float var2 = 0.0F; + int var3 = 318812058; + + while (true) { + switch (var3) { + case -2080246763: + var2 += 360.0F; + var3 = -333780884; + break; + case -1030893217: + if (var2 < -180.0F) { + var3 = -2080246763; + } else { + var3 = -333780884; + } + break; + case -333780884: + return var2; + case 318812058: + default: + var2 = normalizeHue(var1) - normalizeHue(var0); + if (var2 > 180.0F) { + var3 = 910843401; + } else { + var3 = -1030893217; + } + break; + case 910843401: + var2 -= 360.0F; + var3 = -333780884; + } + } + } + + public static float relativeLuminance(asu var0) { + return 0.2126F * decode(var0.getRed()) + 0.7152F * decode(var0.getGreen()) + 0.0722F * decode(var0.getBlue()); + } + + public static float contrastRatio(asu var0, asu var1) { + float var2 = relativeLuminance(var0); + float var3 = relativeLuminance(var1); + float var4 = Math.max(var2, var3); + float var5 = Math.min(var2, var3); + return (var4 + 0.05F) / (var5 + 0.05F); + } + + public static asu solveContrast(asu var0, asu var1, float var2) { + float[] var3 = null; + int var4 = 0; + float var5 = 0.0F; + float var6 = 0.0F; + asu var7 = null; + int var8 = 0; + float var9 = 0.0F; + asu var10 = null; + int var12 = 0; + float var13 = 0.0F; + int var11 = 732755824; + + while (true) { + switch (var11) { + case -2091505487: + var12 = 1; + var11 = 1895404941; + break; + case -1626550408: + return var7; + case -1447273371: + return var7; + case -953559971: + if (var8 < (1362000496 | -1362000482) + (1362000496 & -1362000482)) { + var11 = 189607532; + } else { + var11 = -1447273371; + } + break; + case -852821460: + var12 = 0; + var11 = 1895404941; + break; + case -837802574: + var7 = var10; + var6 = var9; + var11 = 1036958405; + break; + case -616447130: + var5 = var9; + var11 = 1036958405; + break; + case -436824886: + var13 = 1.0F; + var11 = 1324986086; + break; + case -373675472: + return var0; + case -128410335: + var13 = 0.0F; + var11 = 1324986086; + break; + case 189607532: + var9 = (var5 + var6) * 0.5F; + var10 = of( + var9, + var3[1], + var3[2], + var0.getAlpha() + ); + if (contrastRatio(var10, var1) >= var2) { + var11 = -837802574; + } else { + var11 = -616447130; + } + break; + case 724543489: + var8 = 0; + var11 = -953559971; + break; + case 732755824: + default: + if (contrastRatio(var0, var1) >= var2) { + var11 = -373675472; + } else { + var11 = 907198508; + } + break; + case 907198508: + var3 = toLch(var0); + if (relativeLuminance(var0) >= relativeLuminance(var1)) { + var11 = -2091505487; + } else { + var11 = -852821460; + } + break; + case 1036958405: + var8++; + var11 = -953559971; + break; + case 1324986086: + var6 = var13; + var7 = of( + var6, + var3[1], + var3[2], + var0.getAlpha() + ); + if (contrastRatio(var7, var1) < var2) { + var11 = -1626550408; + } else { + var11 = 724543489; + } + break; + case 1895404941: + var4 = var12; + var5 = var3[0]; + if (var4 != 0) { + var11 = -436824886; + } else { + var11 = -128410335; + } + } + } + } + + public static boolean isGrey(asu var0) { + int var2 = 0; + int var1 = 1166422143; + + while (true) { + switch (var1) { + case 19031839: + return (boolean)((var2) != 0); + case 742131014: + var2 = 0; + var1 = 19031839; + break; + case 1128128035: + var2 = 1; + var1 = 19031839; + break; + case 1166422143: + default: + if (chroma(var0) <= 1.0E-5F) { + var1 = 1128128035; + } else { + var1 = 742131014; + } + } + } + } + + private static float[] toLch(asu var0) { + float var1 = decode(var0.getRed()); + float var2 = decode(var0.getGreen()); + float var3 = decode(var0.getBlue()); + float var4 = cubeRoot(0.41222146F * var1 + 0.53633255F * var2 + 0.051445995F * var3); + float var5 = cubeRoot(0.2119035F * var1 + 0.6806995F * var2 + 0.10739696F * var3); + float var6 = cubeRoot(0.08830246F * var1 + 0.28171885F * var2 + 0.6299787F * var3); + float var7 = 0.21045426F * var4 + 0.7936178F * var5 + -0.004072047F * var6; + float var8 = 1.9779985F * var4 + -2.4285922F * var5 + 0.4505937F * var6; + float var9 = 0.025904037F * var4 + 0.78277177F * var5 + -0.80867577F * var6; + float[] var10 = SCRATCH.get(); + var10[0] = var7; + var10[1] = (float)Math.sqrt(var8 * var8 + var9 * var9); + var10[2] = normalizeHue((float)Math.atan2(var9, var8) * (180.0F / (float)Math.PI)); + return var10; + } + + private static boolean fits(float var0, float var1, float var2) { + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + int var13 = 0; + int var12 = -416182338; + + while (true) { + switch (var12) { + case -2122660658: + if (inRange(var10)) { + var12 = 574110296; + } else { + var12 = 544785202; + } + break; + case -879778243: + var13 = 1; + var12 = 505668365; + break; + case -416182338: + default: + var3 = var2 * (float) (Math.PI / 180.0); + var4 = var1 * (float)Math.cos(var3); + var5 = var1 * (float)Math.sin(var3); + var6 = cube(var0 + 0.39633778F * var4 + 0.21580376F * var5); + var7 = cube(var0 - 0.105561346F * var4 - 0.06385417F * var5); + var8 = cube(var0 - 0.08948418F * var4 - 1.2914855F * var5); + var9 = 4.0767417F * var6 + -3.3077116F * var7 + 0.23096994F * var8; + var10 = -1.268438F * var6 + 2.6097574F * var7 + -0.34131938F * var8; + var11 = -0.0041960864F * var6 + -0.7034186F * var7 + 1.7076147F * var8; + if (inRange(var9)) { + var12 = -2122660658; + } else { + var12 = 544785202; + } + break; + case 505668365: + return (boolean)((var13) != 0); + case 544785202: + var13 = 0; + var12 = 505668365; + break; + case 574110296: + if (inRange(var11)) { + var12 = -879778243; + } else { + var12 = 544785202; + } + } + } + } + + private static asu encode(float var0, float var1, float var2, int var3) { + float var4 = var2 * (float) (Math.PI / 180.0); + float var5 = var1 * (float)Math.cos(var4); + float var6 = var1 * (float)Math.sin(var4); + float var7 = cube(var0 + 0.39633778F * var5 + 0.21580376F * var6); + float var8 = cube(var0 - 0.105561346F * var5 - 0.06385417F * var6); + float var9 = cube(var0 - 0.08948418F * var5 - 1.2914855F * var6); + float var10 = 4.0767417F * var7 + -3.3077116F * var8 + 0.23096994F * var9; + float var11 = -1.268438F * var7 + 2.6097574F * var8 + -0.34131938F * var9; + float var12 = -0.0041960864F * var7 + -0.7034186F * var8 + 1.7076147F * var9; + return new asu(channel(var10), channel(var11), channel(var12), var3); + } + + private static boolean inRange(float var0) { + int var2 = 0; + int var1 = -1900195140; + + while (true) { + switch (var1) { + case -1900195140: + default: + if (var0 >= -1.0E-4F) { + var1 = -84005226; + } else { + var1 = -535290370; + } + break; + case -1620306626: + var2 = 1; + var1 = 155581853; + break; + case -535290370: + var2 = 0; + var1 = 155581853; + break; + case -84005226: + if (var0 <= 1.0001F) { + var1 = -1620306626; + } else { + var1 = -535290370; + } + break; + case 155581853: + return (boolean)((var2) != 0); + } + } + } + + private static int channel(float var0) { + float var1 = 0.0F; + float var3 = 0.0F; + int var2 = -1996419702; + + while (true) { + switch (var2) { + case -1996419702: + default: + if (var0 <= 0.0031308F) { + var2 = -1956595055; + } else { + var2 = 1568830552; + } + break; + case -1956595055: + var3 = var0 * 12.92F; + var2 = -333430004; + break; + case -333430004: + var1 = var3; + return Math.round(clamp(var1, 0.0F, 1.0F) * 255.0F); + case 1568830552: + var3 = 1.055F * (float)Math.pow(var0, 0.41666666F) - 0.055F; + var2 = -333430004; + } + } + } + + private static float decode(int var0) { + float var1 = 0.0F; + float var3 = 0.0F; + int var2 = 77947587; + + while (true) { + switch (var2) { + case -917978557: + var3 = var1 / 12.92F; + var2 = -138808610; + break; + case -138808610: + return var3; + case 73798825: + var3 = (float)Math.pow((var1 + 0.055F) / 1.055F, 2.4F); + var2 = -138808610; + break; + case 77947587: + default: + var1 = var0 / 255.0F; + if (var1 <= 0.04045F) { + var2 = -917978557; + } else { + var2 = 73798825; + } + } + } + } + + private static float cubeRoot(float var0) { + float var2 = 0.0F; + int var1 = -1421127362; + + while (true) { + switch (var1) { + case -1421127362: + default: + if (var0 <= 0.0F) { + var1 = -121982498; + } else { + var1 = -558225411; + } + break; + case -773519084: + return var2; + case -558225411: + var2 = (float)Math.cbrt(var0); + var1 = -773519084; + break; + case -121982498: + var2 = 0.0F; + var1 = -773519084; + } + } + } + + private static float cube(float var0) { + return var0 * var0 * var0; + } + + private static float clamp(float var0, float var1, float var2) { + float var4 = 0.0F; + int var3 = 61722877; + + while (true) { + switch (var3) { + case 61722877: + default: + if (var0 < var1) { + var3 = 583477737; + } else { + var3 = 589080112; + } + break; + case 583477737: + var4 = var1; + var3 = 1300587383; + break; + case 589080112: + if (var0 > var2) { + var3 = 1560498435; + } else { + var3 = 1766604675; + } + break; + case 1300587383: + return var4; + case 1560498435: + var4 = var2; + var3 = 1300587383; + break; + case 1766604675: + var4 = var0; + var3 = 1300587383; + } + } + } +} diff --git a/src/main/java/defpackage/nd.java b/src/main/java/defpackage/nd.java new file mode 100644 index 0000000..136ffbc --- /dev/null +++ b/src/main/java/defpackage/nd.java @@ -0,0 +1,456 @@ +package defpackage; + +import java.util.random.RandomGenerator; + +public final class nd { + private static final int OPAQUE = 255; + private static final float DARK_CHROMA_FACTOR = 1.0F; + private static final float LIGHT_CHROMA_FACTOR = 0.25F; + private static final float MAX_NEUTRAL_CHROMA = 0.075F; + private static final float MIDDLE_LIGHTNESS_LIFT = 0.027F; + private static final float END_LIGHTNESS_LIFT = 0.053F; + public static final float MIDDLE_CHROMA_SCALE = 0.96F; + public static final float END_CHROMA_SCALE = 0.92F; + private static final float MUTED_CONTRAST_SCALE = 0.65F; + private static final float FAINT_CONTRAST_SCALE = 0.45F; + private static final float ICON_CONTRAST_SCALE = 0.52F; + private static final float MIN_MUTED_CONTRAST = 4.5F; + private static final float MIN_FAINT_CONTRAST = 3.0F; + private static final float POLARITY_LUMINANCE_SPLIT = 0.35F; + private static final float RANDOM_MIN_CHROMA = 0.11F; + private static final float RANDOM_MAX_CHROMA = 0.26F; + private static final float RANDOM_DARK_MIN_LIGHTNESS = 0.55F; + private static final float RANDOM_DARK_MAX_LIGHTNESS = 0.74F; + private static final float RANDOM_LIGHT_MIN_LIGHTNESS = 0.48F; + private static final float RANDOM_LIGHT_MAX_LIGHTNESS = 0.66F; + private static final float FULL_TURN = 360.0F; + private static final int LADDER_LIGHTNESS = 0; + private static final int LADDER_CHROMA = 1; + private static final int LADDER_STRIDE = 2; + private static final float[] DARK_LADDER; + private static final float[] LIGHT_LADDER; + private static final nx[] NEUTRAL_ROLES; + + private nd() { + } + + public static void apply(mv var0) { + nt var1 = null; + asu var2 = null; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + int var6 = -1317854330; + + while (true) { + switch (var6) { + case -1689239182: + var2 = var0.getColor(); + var3 = nc.hue(var2); + var4 = nc.chroma(var2); + var5 = nc.lightness(var2); + applyStops(var0, var1, var3, var4, var5); + if (!var1.generated()) { + var6 = 1213785632; + } else { + var6 = 218835764; + } + break; + case -1455653196: + return; + case -1317854330: + default: + if (var0 == null) { + var6 = -1455653196; + } else { + var6 = 2024667046; + } + break; + case -704977377: + nx.FRIEND.apply(var0, var2); + var6 = 1919904173; + break; + case 218835764: + applyNeutrals(var0, var1, var3, var4); + applyTextContrast(var0, var1); + if (!var1.locked(nx.FRIEND)) { + var6 = -704977377; + } else { + var6 = 1919904173; + } + break; + case 711718258: + return; + case 1213785632: + return; + case 1919904173: + return; + case 2024667046: + var1 = var0.getPalette(); + if (var1 == null) { + var6 = 711718258; + } else { + var6 = -1689239182; + } + } + } + } + + public static ns suggestPolarity(mv var0) { + ns var2 = null; + int var1 = 521951970; + + while (true) { + switch (var1) { + case -1673759103: + var2 = ns.DARK; + var1 = 1991856862; + break; + case 521951970: + default: + if (nc.relativeLuminance(var0.getBackgroundColor()) > 0.35F) { + var1 = 736257731; + } else { + var1 = -1673759103; + } + break; + case 736257731: + var2 = ns.LIGHT; + var1 = 1991856862; + break; + case 1991856862: + return var2; + } + } + } + + public static void randomizeAccent(mv var0, RandomGenerator var1) { + nt var2 = null; + int var3 = 0; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + int var8 = 0; + float var9 = 0.0F; + int var7 = 710249046; + + while (true) { + switch (var7) { + case -1947211254: + var8 = 0; + var7 = 1375781837; + break; + case -1728608122: + if (var2.polarity() == ns.LIGHT) { + var7 = -928942783; + } else { + var7 = -1947211254; + } + break; + case -928942783: + var8 = 1; + var7 = 1375781837; + break; + case 600598880: + return; + case 710249046: + default: + var2 = var0.getPalette(); + if (var2.locked(nx.ACCENT)) { + var7 = 600598880; + } else { + var7 = -1728608122; + } + break; + case 936545095: + var9 = lerp(0.55F, 0.74F, var1.nextFloat()); + var7 = 989402579; + break; + case 989402579: + var6 = var9; + nx.ACCENT.apply(var0, nc.of(var6, var5, var4, (-1721849759 ^ 1721850014) + ((-1721849759 & 1721850014) << 1))); + return; + case 1375781837: + var3 = var8; + var4 = var1.nextFloat() * 360.0F; + var5 = lerp(0.11F, 0.26F, var1.nextFloat()); + if (var3 != 0) { + var7 = 2029499944; + } else { + var7 = 936545095; + } + break; + case 2029499944: + var9 = lerp(0.48F, 0.66F, var1.nextFloat()); + var7 = 989402579; + } + } + } + + public static float contrastOf(mv var0, nx var1, nx var2) { + return nc.contrastRatio(var1.raw(var0), var2.raw(var0)); + } + + private static void applyStops(mv var0, nt var1, float var2, float var3, float var4) { + int var5 = 1885468815; + + while (true) { + switch (var5) { + case -1554026681: + nx.ACCENT_END + .apply( + var0, + nc.of(var4 + 0.053F, var3 * 0.92F, nc.normalizeHue(var2 + var1.harmony().endOffset()), (-832997518 | 832997773) + (-832997518 & 832997773)) + ); + var5 = 1691915145; + break; + case -379419576: + nx.ACCENT_MIDDLE + .apply( + var0, + nc.of( + var4 + 0.027F, + var3 * 0.96F, + nc.normalizeHue(var2 + var1.harmony().middleOffset()), + (-1161754844 | 1161755099) + (-1161754844 & 1161755099) + ) + ); + var5 = 234846541; + break; + case 199214606: + return; + case 234846541: + if (!var1.locked(nx.ACCENT_END)) { + var5 = -1554026681; + } else { + var5 = 1691915145; + } + break; + case 1524414369: + if (!var1.locked(nx.ACCENT_MIDDLE)) { + var5 = -379419576; + } else { + var5 = 234846541; + } + break; + case 1691915145: + return; + case 1885468815: + default: + if (!var1.harmony().drivesStops()) { + var5 = 199214606; + } else { + var5 = 1524414369; + } + } + } + } + + private static void applyNeutrals(mv var0, nt var1, float var2, float var3) { + int var4 = 0; + float[] var5 = null; + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = 0; + nx var9 = null; + int var10 = 0; + int var12 = 0; + float[] var13 = null; + float var14 = 0.0F; + int var11 = -643472405; + + while (true) { + switch (var11) { + case -2138342551: + var14 = 1.0F; + var11 = 74487427; + break; + case -2060277552: + var13 = LIGHT_LADDER; + var11 = 154025189; + break; + case -1177365396: + var10 = var8 * (2); + var9.apply( + var0, + nc.of( + var5[var10 + 0], + var7 * var5[var10 + 1], + var2, + (533196884 | -533196629) + (533196884 & -533196629) + ) + ); + var11 = -610759949; + break; + case -983091251: + return; + case -907670052: + var12 = 0; + var11 = 968477249; + break; + case -853536420: + var14 = 0.25F; + var11 = 74487427; + break; + case -736988726: + var9 = NEUTRAL_ROLES[var8]; + if (var1.locked(var9)) { + var11 = -631948093; + } else { + var11 = -1177365396; + } + break; + case -643472405: + default: + if (var1.polarity() == ns.LIGHT) { + var11 = 447854192; + } else { + var11 = -907670052; + } + break; + case -631948093: + var11 = -610759949; + break; + case -610759949: + var8++; + var11 = 590401395; + break; + case -221410231: + var13 = DARK_LADDER; + var11 = 154025189; + break; + case 74487427: + var6 = var14; + var7 = Math.min(var3 * var1.tint() * var6, 0.075F); + var8 = 0; + var11 = 590401395; + break; + case 154025189: + var5 = var13; + if (var4 != 0) { + var11 = -853536420; + } else { + var11 = -2138342551; + } + break; + case 447854192: + var12 = 1; + var11 = 968477249; + break; + case 590401395: + if (var8 < NEUTRAL_ROLES.length) { + var11 = -736988726; + } else { + var11 = -983091251; + } + break; + case 968477249: + var4 = var12; + if (var4 != 0) { + var11 = -2060277552; + } else { + var11 = -221410231; + } + } + } + } + + private static void applyTextContrast(mv var0, nt var1) { + asu var2 = nx.SURFACE.raw(var0); + float var3 = var1.contrastTarget(); + solve(var0, var1, nx.ON_SURFACE, var2, var3); + solve(var0, var1, nx.ON_SURFACE_MUTED, var2, Math.max(4.5F, var3 * 0.65F)); + solve(var0, var1, nx.ON_SURFACE_FAINT, var2, Math.max(3.0F, var3 * 0.45F)); + solve(var0, var1, nx.ICON_INACTIVE, var2, Math.max(3.0F, var3 * 0.52F)); + } + + private static void solve(mv var0, nt var1, nx var2, asu var3, float var4) { + int var5 = -1733666010; + + while (true) { + switch (var5) { + case -1733666010: + default: + if (var1.locked(var2)) { + var5 = 1081641336; + } else { + var5 = 1503425169; + } + break; + case 1081641336: + return; + case 1503425169: + var2.apply(var0, nc.solveContrast(var2.raw(var0), var3, var4)); + return; + } + } + } + + private static float lerp(float var0, float var1, float var2) { + return var0 + (var1 - var0) * var2; + } + + static { + float[] var10000 = new float[22]; + var10000[0] = 0.137F; + var10000[1] = 0.5F; + var10000[2] = 0.184F; + var10000[3] = 0.71F; + var10000[4] = 0.22F; + var10000[5] = 0.92F; + var10000[6] = 0.16F; + var10000[7] = 0.63F; + var10000[8] = 0.268F; + var10000[9] = 1.15F; + var10000[10] = 0.234F; + var10000[11] = 0.96F; + var10000[12] = 0.262F; + var10000[13] = 1.07F; + var10000[14] = 0.985F; + var10000[15] = 0.0F; + var10000[16] = 0.66F; + var10000[17] = 1.13F; + var10000[18] = 0.48F; + var10000[19] = 1.05F; + var10000[20] = 0.395F; + var10000[21] = 1.1F; + DARK_LADDER = var10000; + var10000 = new float[22]; + var10000[0] = 1.0F; + var10000[1] = 0.0F; + var10000[2] = 0.973F; + var10000[3] = 0.35F; + var10000[4] = 0.943F; + var10000[5] = 0.55F; + var10000[6] = 0.988F; + var10000[7] = 0.2F; + var10000[8] = 0.795F; + var10000[9] = 1.1F; + var10000[10] = 0.922F; + var10000[11] = 0.7F; + var10000[12] = 0.898F; + var10000[13] = 0.9F; + var10000[14] = 0.204F; + var10000[15] = 1.2F; + var10000[16] = 0.52F; + var10000[17] = 1.15F; + var10000[18] = 0.645F; + var10000[19] = 1.05F; + var10000[20] = 0.7F; + var10000[21] = 1.0F; + LIGHT_LADDER = var10000; + nx[] var1 = new nx[11]; + var1[0] = nx.BACKGROUND; + var1[1] = nx.SURFACE; + var1[2] = nx.SURFACE_RAISED; + var1[3] = nx.SURFACE_SUNKEN; + var1[4] = nx.SURFACE_MUTED; + var1[5] = nx.OUTLINE; + var1[6] = nx.OUTLINE_STRONG; + var1[7] = nx.ON_SURFACE; + var1[8] = nx.ON_SURFACE_MUTED; + var1[9] = nx.ON_SURFACE_FAINT; + var1[10] = nx.ICON_INACTIVE; + NEUTRAL_ROLES = var1; + } +} diff --git a/src/main/java/defpackage/ne.java b/src/main/java/defpackage/ne.java new file mode 100644 index 0000000..062bdff --- /dev/null +++ b/src/main/java/defpackage/ne.java @@ -0,0 +1,28 @@ +package defpackage; + +enum ne { + VIVID("Vivid", 0.2F, 0.26F, 0.58F, 0.72F, 0.22F, nr.ANALOGOUS), + SOFT("Soft", 0.08F, 0.14F, 0.62F, 0.76F, 0.14F, nr.ANALOGOUS), + DUOTONE("Duotone", 0.16F, 0.24F, 0.55F, 0.7F, 0.2F, nr.COMPLEMENT), + TRIAD("Triad", 0.15F, 0.23F, 0.56F, 0.7F, 0.18F, nr.TRIAD), + SPLIT("Split", 0.14F, 0.22F, 0.56F, 0.7F, 0.18F, nr.SPLIT), + MONO("Mono", 0.05F, 0.11F, 0.6F, 0.78F, 0.3F, nr.MONOCHROME); + + final String label; + final float minChroma; + final float maxChroma; + final float minLightness; + final float maxLightness; + final float tint; + final nr harmony; + + ne(String var3, float var4, float var5, float var6, float var7, float var8, nr var9) { + this.label = var3; + this.minChroma = var4; + this.maxChroma = var5; + this.minLightness = var6; + this.maxLightness = var7; + this.tint = var8; + this.harmony = var9; + } +} diff --git a/src/main/java/defpackage/nf.java b/src/main/java/defpackage/nf.java new file mode 100644 index 0000000..56c9637 --- /dev/null +++ b/src/main/java/defpackage/nf.java @@ -0,0 +1,101 @@ +package defpackage; + +import java.util.Random; + +public final class nf { + private static final ne[] RECIPES = ne.values(); + private static final int OPAQUE = 255; + private static final float FULL_TURN = 360.0F; + private static final float GOLDEN_STEP = 137.508F; + private static final float LIGHT_LIGHTNESS_DROP = 0.1F; + private static final String SEPARATOR = " "; + private final Random random = new Random(); + private int recipeIndex = -1; + private float hue; + + public String label() { + String var2 = null; + int var1 = 153840684; + + while (true) { + switch (var1) { + case -18413077: + var2 = RECIPES[0].label; + var1 = 1066647630; + break; + case 153840684: + default: + if (this.recipeIndex < 0) { + var1 = -18413077; + } else { + var1 = 1792002881; + } + break; + case 1066647630: + return var2; + case 1792002881: + var2 = RECIPES[this.recipeIndex].label; + var1 = 1066647630; + } + } + } + + public String describe() { + return this.label() + " " + Math.round(this.hue); + } + + public void next(mv var1) { + if (var1 != null) { + this.recipeIndex = (this.recipeIndex + (1333534645 ^ -1333534644) + ((1333534645 & -1333534644) << 1)) % RECIPES.length; + ne var2 = RECIPES[this.recipeIndex]; + nt var3 = var1.getPalette(); + if (!var3.generated()) { + var3 = var3.withGenerated((boolean)(((1)) != 0)).withPolarity(nd.suggestPolarity(var1)); + } + + var3 = var3.withHarmony(var2.harmony).withTint(var2.tint).withLockMask((1601767942 | -1601767942) + (1601767942 & -1601767942)); + var1.setPalette(var3); + this.hue = this.nextHue(); + int var4 = var3.polarity() == ns.LIGHT + ? 1: 0; + float var5 = lerp(var2.minChroma, var2.maxChroma, this.random.nextFloat()); + float var6 = lerp(var2.minLightness, var2.maxLightness, this.random.nextFloat()) - (var4 != 0 ? 0.1F : 0.0F); + asu var7 = nc.of(var6, var5, this.hue, (-2031807684 ^ 2031807939) + ((-2031807684 & 2031807939) << 1)); + nx.ACCENT.apply(var1, var7); + nd.apply(var1); + } + } + + private float nextHue() { + float var1 = 0.0F; + float var3 = 0.0F; + int var2 = 244750127; + + while (true) { + switch (var2) { + case -1087491607: + var3 = this.random.nextFloat() * 360.0F; + var2 = -856015993; + break; + case -856015993: + var1 = var3; + return nc.normalizeHue(var1 + 137.508F); + case 244750127: + default: + if (this.hue <= 0.0F) { + var2 = -1087491607; + } else { + var2 = 696557700; + } + break; + case 696557700: + var3 = this.hue; + var2 = -856015993; + } + } + } + + private static float lerp(float var0, float var1, float var2) { + return var0 + (var1 - var0) * var2; + } +} diff --git a/src/main/java/defpackage/ng.java b/src/main/java/defpackage/ng.java new file mode 100644 index 0000000..3e2f8d7 --- /dev/null +++ b/src/main/java/defpackage/ng.java @@ -0,0 +1,121 @@ +package defpackage; + +public record ng(asu start, asu middle, asu end, float angle) { + private static final float MID_STOP = 0.5F; + private static final float HALF_SPAN = 0.5F; + private static final float STOP_SCALE = 2.0F; + private static final float DEG_TO_RAD = (float) (Math.PI / 180.0); + private static final float MIN_AXIS_EXTENT = 1.0E-4F; + private static final float CORNER_UNIT = 1.0F; + public static final float DEFAULT_ANGLE = 90.0F; + + public ng(asu start, asu middle, asu end, float angle) { + if (start != null && middle != null && end != null) { + this.start = start; + this.middle = middle; + this.end = end; + this.angle = angle; + } else { + throw new IllegalArgumentException( + "AccentRamp stops must not be null" + ); + } + } + + public static ng of(asu var0, asu var1) { + return new ng(var0, var0.mix(var1, 0.5F), var1, 90.0F); + } + + public static ng of(asu var0, asu var1, asu var2) { + return new ng(var0, var1, var2, 90.0F); + } + + public asu sample(float var1) { + float var2 = 0.0F; + float var4 = 0.0F; + int var3 = 358694425; + + while (true) { + switch (var3) { + case -1566687221: + return this.middle.mix(this.end, (var2 - 0.5F) * 2.0F); + case -997025886: + var4 = 0.0F; + var3 = 1904812202; + break; + case -602252835: + if (var1 > 1.0F) { + var3 = 308239463; + } else { + var3 = 891855302; + } + break; + case -303118699: + return this.start.mix(this.middle, var2 * 2.0F); + case 308239463: + var4 = 1.0F; + var3 = 1904812202; + break; + case 358694425: + default: + if (var1 < 0.0F) { + var3 = -997025886; + } else { + var3 = -602252835; + } + break; + case 891855302: + var4 = var1; + var3 = 1904812202; + break; + case 1904812202: + var2 = var4; + if (var2 <= 0.5F) { + var3 = -303118699; + } else { + var3 = -1566687221; + } + } + } + } + + public ary corners() { + float var1 = this.angle * (float) (Math.PI / 180.0); + float var2 = (float)Math.cos(var1); + float var3 = -((float)Math.sin(var1)); + float var4 = Math.max(Math.abs(var2) + Math.abs(var3), 1.0E-4F); + return ary.of( + this.cornerStop(-1.0F, -1.0F, var2, var3, var4), + this.cornerStop(-1.0F, 1.0F, var2, var3, var4), + this.cornerStop(1.0F, -1.0F, var2, var3, var4), + this.cornerStop(1.0F, 1.0F, var2, var3, var4) + ); + } + + private asu cornerStop(float var1, float var2, float var3, float var4, float var5) { + float var6 = (var1 * var3 + var2 * var4) / var5; + return this.sample(0.5F - 0.5F * var6); + } + + public ng withStart(asu var1) { + return new ng(var1, this.middle, this.end, this.angle); + } + + public ng withMiddle(asu var1) { + return new ng(this.start, var1, this.end, this.angle); + } + + public ng withEnd(asu var1) { + return new ng(this.start, this.middle, var1, this.angle); + } + + public ng withAngle(float var1) { + return new ng(this.start, this.middle, this.end, var1); + } + + public ng lerp(ng var1, float var2) { + return new ng( + this.start.mix(var1.start, var2), this.middle.mix(var1.middle, var2), this.end.mix(var1.end, var2), this.angle + (var1.angle - this.angle) * var2 + ); + } +} diff --git a/src/main/java/defpackage/nh.java b/src/main/java/defpackage/nh.java new file mode 100644 index 0000000..b2f06ae --- /dev/null +++ b/src/main/java/defpackage/nh.java @@ -0,0 +1,20 @@ +package defpackage; + +public enum nh { + CORNER, + BORDER, + DIVIDER, + DEPTH, + GLOW, + SWEEP, + GLASS, + MOTION, + TEXT_SCALE, + FONT, + DENSITY, + SPACING, + POLARITY, + HARMONY, + BACKDROP, + INTENSITY; +} diff --git a/src/main/java/defpackage/ni.java b/src/main/java/defpackage/ni.java new file mode 100644 index 0000000..fbba770 --- /dev/null +++ b/src/main/java/defpackage/ni.java @@ -0,0 +1,52 @@ +package defpackage; + +import java.util.function.Consumer; +import java.util.function.Predicate; + +public final class ni { + private final String label; + private final String description; + private final nh preview; + private final float strength; + private final int variantIndex; + private final Consumer apply; + private final Predicate active; + + public ni(String var1, String var2, nh var3, float var4, int var5, Consumer var6, Predicate var7) { + this.label = var1; + this.description = var2; + this.preview = var3; + this.strength = var4; + this.variantIndex = var5; + this.apply = var6; + this.active = var7; + } + + public String label() { + return this.label; + } + + public String description() { + return this.description; + } + + public nh preview() { + return this.preview; + } + + public float strength() { + return this.strength; + } + + public int variantIndex() { + return this.variantIndex; + } + + public void apply(mv var1) { + this.apply.accept(var1); + } + + public boolean isActive(mv var1) { + return this.active.test(var1); + } +} diff --git a/src/main/java/defpackage/nj.java b/src/main/java/defpackage/nj.java new file mode 100644 index 0000000..814b2f5 --- /dev/null +++ b/src/main/java/defpackage/nj.java @@ -0,0 +1,1288 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.EnumMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.function.Consumer; + +public final class nj { + private static final float MATCH_EPSILON = 0.06F; + private static final float FINE_EPSILON = 0.015F; + private static final String ROW_CORNERS = "Corners"; + private static final String ROW_OUTLINE = "Outline"; + private static final String ROW_DIVIDERS = "Dividers"; + private static final String ROW_ELEVATION = "Elevation"; + private static final String ROW_GLOW = "Glow"; + private static final String ROW_SWEEP = "Running highlight"; + private static final String ROW_MATERIAL = "Material"; + private static final String ROW_TEMPO = "Tempo"; + private static final String ROW_TEXT_SIZE = "Text size"; + private static final String ROW_PAIRING = "Font pairing"; + private static final String ROW_DENSITY = "Density"; + private static final String ROW_BREATHING = "Breathing room"; + private static final String ROW_PATTERN = "Pattern"; + private static final String ROW_STRENGTH = "Strength"; + private static final String ROW_POLARITY = "Base"; + private static Map> registry; + + private nj() { + } + + public static List rowsFor(or var0) { + int var1 = -1472271467; + + while (true) { + switch (var1) { + case -1631984656: + registry = build(); + var1 = 869294784; + break; + case -1472271467: + default: + if (registry == null) { + var1 = -1631984656; + } else { + var1 = 869294784; + } + break; + case 869294784: + return registry.getOrDefault(var0, List.of()); + } + } + } + + private static Map> build() { + EnumMap var0 = new EnumMap<>(or.class); + var0.put(or.COLOUR, List.of(polarity())); + var0.put(or.MATERIAL, List.of(material(), glow(), sweep())); + var0.put(or.SHAPE, List.of(corners(), outline(), elevation(), dividers())); + var0.put(or.LAYOUT, List.of(textSize(), pairing(), density(), breathing())); + var0.put(or.MOTION, List.of(tempo())); + var0.put(or.BACKDROP, List.of(pattern(), strength())); + return var0; + } + + private static nw corners() { + ArrayList var0 = new ArrayList(); + var0.add( + corner( + "Sharp", + "Square corners everywhere", + 0.0F, + 3.0F, + (1940065221 ^ -1940065221) + ((1940065221 & -1940065221) << 1) + ) + ); + var0.add( + corner( + "Round", + "The stock rounding", + 1.0F, + 3.0F, + (-1770238113 | 1770238114) + (-1770238113 & 1770238114) + ) + ); + var0.add( + corner( + "Squircle", + "Rounder, with a flatter shoulder", + 1.3F, + 5.0F, + (2130494591 ^ -2130494589) + ((2130494591 & -2130494589) << 1) + ) + ); + var0.add( + corner( + "Pill", + "Fully rounded ends", + 2.0F, + 2.5F, + (-224948247 ^ 224948250) + ((-224948247 & 224948250) << 1) + ) + ); + return new nw("Corners", var0, var0.size()); + } + + private static ni corner(String var0, String var1, float var2, float var3, int var4) { + return new ni( + var0, + var1, + nh.CORNER, + var2, + var4, + var2x -> var2x.setGeometry(var2x.getGeometry().withRadiusScale(var2).withSquircleExponent(var3)), + var1x -> near(var1x.getGeometry().radiusScale(), var2, 0.06F) + ); + } + + private static nw outline() { + ArrayList var0 = new ArrayList(); + var0.add( + outline( + "Hairline", + "Almost invisible edges", + 0.5F, + (-454320518 | 454320518) + (-454320518 & 454320518) + ) + ); + var0.add( + outline( + "Thin", + "The stock outline", + 1.0F, + (-206154936 | 206154937) + (-206154936 & 206154937) + ) + ); + var0.add( + outline( + "Medium", + "Clearly drawn edges", + 1.6F, + (1758420026 ^ -1758420024) + ((1758420026 & -1758420024) << 1) + ) + ); + var0.add( + outline( + "Bold", + "Heavy, poster-like edges", + 2.4F, + (331108076 ^ -331108073) + ((331108076 & -331108073) << 1) + ) + ); + return new nw("Outline", var0, var0.size()); + } + + private static ni outline(String var0, String var1, float var2, int var3) { + return new ni( + var0, + var1, + nh.BORDER, + var2, + var3, + var1x -> var1x.setGeometry(var1x.getGeometry().withBorderThickness(var2)), + var1x -> near(var1x.getGeometry().borderThickness(), var2, 0.015F) + ); + } + + private static nw dividers() { + ArrayList var0 = new ArrayList(); + var0.add( + divider( + "None", + "No separator lines", + 0.0F, + (-445466720 | 445466720) + (-445466720 & 445466720) + ) + ); + var0.add( + divider( + "Faint", + "The stock separators", + 0.16F, + (791466877 | -791466876) + (791466877 & -791466876) + ) + ); + var0.add( + divider( + "Clear", + "Separators you notice", + 0.38F, + (497996923 ^ -497996921) + ((497996923 & -497996921) << 1) + ) + ); + return new nw("Dividers", var0, var0.size()); + } + + private static ni divider(String var0, String var1, float var2, int var3) { + return new ni( + var0, + var1, + nh.DIVIDER, + var2, + var3, + var1x -> var1x.setGeometry(var1x.getGeometry().withDividerAlpha(var2)), + var1x -> near(var1x.getGeometry().dividerAlpha(), var2, 0.015F) + ); + } + + private static nw elevation() { + ArrayList var0 = new ArrayList(); + var0.add( + depth( + "Flat", + "No shadows at all", + 0.0F, + 0.0F, + 0.0F, + 1.0F, + 0.0F, + (511734166 | -511734166) + (511734166 & -511734166) + ) + ); + var0.add( + depth( + "Soft", + "A quiet shadow under every card", + 6.0F, + 0.1F, + 0.0F, + 1.0F, + 0.8F, + (-1179504075 | 1179504076) + (-1179504075 & 1179504076) + ) + ); + var0.add( + depth( + "Lifted", + "Cards float and rise on hover", + 10.0F, + 0.2F, + 1.0F, + 1.1F, + 1.1F, + (-525258734 | 525258736) + (-525258734 & 525258736) + ) + ); + var0.add( + depth( + "Dramatic", + "Deep, heavy shadows", + 18.0F, + 0.38F, + 2.0F, + 1.35F, + 1.4F, + (924848374 | -924848371) + (924848374 & -924848371) + ) + ); + return new nw("Elevation", var0, var0.size()); + } + + private static ni depth(String var0, String var1, float var2, float var3, float var4, float var5, float var6, int var7) { + return new ni(var0, var1, nh.DEPTH, var3, var7, var5x -> { + var5x.setEffects(var5x.getEffects().withShadow(var2, var3).withHoverLift(var4)); + var5x.setElevation(var5x.getElevation().withScale(var5, var6)); + }, var2x -> { + int var4x = 0; + int var3x = 133740465; + + while (true) { + switch (var3x) { + case -621575647: + if (near(var2x.getEffects().shadowSoftness(), var2, 1.1999999F)) { + var3x = 1348471494; + } else { + var3x = -377131377; + } + break; + case -377131377: + var4x = 0; + var3x = 1303788652; + break; + case 133740465: + default: + if (near(var2x.getEffects().shadowAlpha(), var3, 0.015F)) { + var3x = -621575647; + } else { + var3x = -377131377; + } + break; + case 1303788652: + return (boolean)((var4x) != 0); + case 1348471494: + var4x = 1; + var3x = 1303788652; + } + } + }); + } + + private static nw glow() { + ArrayList var0 = new ArrayList(); + var0.add( + glow( + "Off", + "No rim or halo at all", + 0.0F, + 0.0F, + 0.0F, + 0.0F, + 0.0F, + 0.0F, + 0.0F, + 0.0F, + 1.0F, + (2072576994 | -2072576994) + (2072576994 & -2072576994) + ) + ); + var0.add( + glow( + "Subtle", + "A hint of light on edges", + 0.35F, + 2.5F, + 0.3F, + 2.0F, + 0.1F, + 2.0F, + 0.1F, + 0.06F, + 1.4F, + (736545022 ^ -736545021) + ((736545022 & -736545021) << 1) + ) + ); + var0.add( + glow( + "Neon", + "Bright rims and glowing toggles", + 0.8F, + 5.0F, + 0.55F, + 4.0F, + 0.22F, + 3.0F, + 0.25F, + 0.1F, + 1.0F, + (-610639455 | 610639457) + (-610639455 & 610639457) + ) + ); + var0.add( + glow( + "Blaze", + "Everything burns", + 1.4F, + 9.0F, + 0.9F, + 7.0F, + 0.4F, + 5.0F, + 0.4F, + 0.2F, + 0.7F, + (1920493496 ^ -1920493493) + ((1920493496 & -1920493493) << 1) + ) + ); + return new nw("Glow", var0, var0.size()); + } + + private static ni glow( + String var0, String var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9, float var10, int var11 + ) { + return new ni( + var0, + var1, + nh.GLOW, + var2, + var11, + var9x -> var9x.setEffects(var9x.getEffects().withRim(var2, var3, var10, var8, var9).withActiveGlow(var4, var5).withTextGlow(var7, var6)), + var1x -> near(var1x.getEffects().neonIntensity(), var2, 0.06F) + ); + } + + private static nw sweep() { + ArrayList var0 = new ArrayList(); + var0.add( + sweep( + "Off", + "Borders stay still", + 0.0F, + 0.28F, + 0.0F, + (1024474205 ^ -1024474205) + ((1024474205 & -1024474205) << 1) + ) + ); + var0.add( + sweep( + "Slow", + "A highlight drifts around the border", + 0.35F, + 0.3F, + 0.6F, + (1040671447 ^ -1040671446) + ((1040671447 & -1040671446) << 1) + ) + ); + var0.add( + sweep( + "Fast", + "A quick spark laps the border", + 0.9F, + 0.22F, + 1.0F, + (-1202937778 | 1202937780) + (-1202937778 & 1202937780) + ) + ); + return new nw("Running highlight", var0, var0.size()); + } + + private static ni sweep(String var0, String var1, float var2, float var3, float var4, int var5) { + return new ni( + var0, + var1, + nh.SWEEP, + var4, + var5, + var3x -> var3x.setEffects(var3x.getEffects().withSweep(var2, var3, var4)), + var1x -> near(var1x.getEffects().sweepSpeed(), var2, 0.015F) + ); + } + + private static nw material() { + ArrayList var0 = new ArrayList(); + var0.add( + material( + "Solid", + "No transparency, flat panels", + 0.0F, + 0.0F, + 0.0F, + 1.0F, + 1.0F, + 0.0F, + 0.0F, + 0.0F, + 0.0F, + 0.6F, + 0.72F, + (-1600903965 | 1600903965) + (-1600903965 & 1600903965) + ) + ); + var0.add( + material( + "Frosted", + "Blurred, milky panes", + 0.6F, + 0.1F, + 0.0F, + 0.9F, + 1.0F, + 0.3F, + 0.0F, + 0.3F, + 0.2F, + 1.0F, + 0.8F, + (40321603 ^ -40321602) + ((40321603 & -40321602) << 1) + ) + ); + var0.add( + material( + "Clear", + "Thin glass that bends the world", + 0.15F, + 0.35F, + 0.05F, + 0.55F, + 1.1F, + 0.5F, + 0.15F, + 0.25F, + 0.3F, + 1.2F, + 0.6F, + (-150213205 | 150213207) + (-150213205 & 150213207) + ) + ); + var0.add( + material( + "Liquid", + "Thick glass with a wet edge", + 0.35F, + 0.6F, + 0.1F, + 0.7F, + 1.2F, + 0.9F, + 0.35F, + 0.5F, + 0.5F, + 1.6F, + 0.85F, + (1456541712 ^ -1456541709) + ((1456541712 & -1456541709) << 1) + ) + ); + return new nw("Material", var0, var0.size()); + } + + private static ni material( + String var0, + String var1, + float var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + int var13 + ) { + return new ni( + var0, + var1, + nh.GLASS, + var5, + var13, + var11x -> var11x.setGlass( + var11x.getGlass() + .withOptics(var2, var3, var4) + .withSurfaceAlpha(var5, var6) + .withBevel(var10, var11x.getGlass().bevelWidth(), var11) + .withMaterial(var12, var7, var11x.getGlass().lightAngle(), var8, var9) + ), + var2x -> { + int var4x = 0; + int var3x = 1809063240; + + while (true) { + switch (var3x) { + case 732517025: + var4x = 0; + var3x = 1055309172; + break; + case 1055309172: + return (boolean)((var4x) != 0); + case 1349119127: + if (near(var2x.getGlass().refraction(), var3, 0.015F)) { + var3x = 1779003921; + } else { + var3x = 732517025; + } + break; + case 1779003921: + var4x = 1; + var3x = 1055309172; + break; + case 1809063240: + default: + if (near(var2x.getGlass().frost(), var2, 0.015F)) { + var3x = 1349119127; + } else { + var3x = 732517025; + } + } + } + } + ); + } + + private static nw tempo() { + ArrayList var0 = new ArrayList(); + var0.add( + tempo( + "Instant", + "Almost no animation", + 2.5F, + (1577518662 ^ -1577518662) + ((1577518662 & -1577518662) << 1) + ) + ); + var0.add( + tempo( + "Snappy", + "Quick and businesslike", + 1.5F, + (2008166481 | -2008166480) + (2008166481 & -2008166480) + ) + ); + var0.add( + tempo( + "Smooth", + "The stock timing", + 1.0F, + (-1091182595 ^ 1091182597) + ((-1091182595 & 1091182597) << 1) + ) + ); + var0.add( + tempo( + "Cinematic", + "Slow, deliberate motion", + 0.6F, + (-2040167951 | 2040167954) + (-2040167951 & 2040167954) + ) + ); + return new nw("Tempo", var0, var0.size()); + } + + private static ni tempo(String var0, String var1, float var2, int var3) { + return new ni( + var0, + var1, + nh.MOTION, + var2, + var3, + var1x -> var1x.setEffects(var1x.getEffects().withAnimationSpeed(var2)), + var1x -> near(var1x.getEffects().animationSpeed(), var2, 0.015F) + ); + } + + private static nw textSize() { + ArrayList var0 = new ArrayList(); + var0.add( + textScale( + "Small", + "Denser text everywhere", + 0.85F, + (565982177 | -565982177) + (565982177 & -565982177) + ) + ); + var0.add( + textScale( + "Normal", + "The stock text size", + 1.0F, + (-1065445707 ^ 1065445708) + ((-1065445707 & 1065445708) << 1) + ) + ); + var0.add( + textScale( + "Large", + "Easier to read", + 1.15F, + (-922908144 ^ 922908146) + ((-922908144 & 922908146) << 1) + ) + ); + var0.add( + textScale( + "Huge", + "Maximum legibility", + 1.3F, + (-440424488 ^ 440424491) + ((-440424488 & 440424491) << 1) + ) + ); + return new nw("Text size", var0, var0.size()); + } + + private static ni textScale(String var0, String var1, float var2, int var3) { + return new ni( + var0, + var1, + nh.TEXT_SCALE, + var2, + var3, + var1x -> var1x.setTypography(var1x.getTypography().withScale(var2)), + var1x -> near(var1x.getTypography().scale(), var2, 0.015F) + ); + } + + private static nw pairing() { + ArrayList var0 = new ArrayList(); + var0.add( + pairing( + "Stock", + "The shipped pairing", + 0, + var0x -> var0x.setTypography(var0x.getDefaultTypography()) + ) + ); + var0.add( + pairing( + "Strong", + "Bold headings over medium body", + 1, + var0x -> applyFamilies(var0x, oa.BOLD, oa.MEDIUM) + ) + ); + var0.add( + pairing( + "Rounded", + "Rounded type throughout", + 2, + var0x -> applyFamilies(var0x, oa.ROUND_BOLD, oa.ROUND_BOLD) + ) + ); + var0.add( + pairing( + "Light", + "Regular weight everywhere", + 3, + var0x -> applyFamilies(var0x, oa.SEMIBOLD, oa.REGULAR) + ) + ); + return new nw("Font pairing", var0, var0.size()); + } + + private static ni pairing(String var0, String var1, int var2, Consumer var3) { + return new ni(var0, var1, nh.FONT, var2, var2, var3, var1x -> { + int var3x = 0; + int var2x = -1254519349; + + while (true) { + switch (var2x) { + case -1336752538: + var3x = 0; + var2x = 683585864; + break; + case -1254519349: + default: + if (pairingIndex(var1x) == var2) { + var2x = -780916135; + } else { + var2x = -1336752538; + } + break; + case -780916135: + var3x = 1; + var2x = 683585864; + break; + case 683585864: + return (boolean)((var3x) != 0); + } + } + }); + } + + private static void applyFamilies(mv var0, oa var1, oa var2) { + nv var3 = var0.getTypography(); + oe[] var4 = oe.values(); + int var5 = var4.length; + + for (int var6 = 0; var6 < var5; var6++) { + oe var7 = var4[var6]; + if (var7 != oe.ICON) { + var3 = var3.withFamily(var7, isHeading(var7) ? var1 : var2); + } + } + + var0.setTypography(var3); + } + + private static boolean isHeading(oe var0) { + int var2 = 0; + int var1 = 2053597317; + + while (true) { + switch (var1) { + case -107169165: + var2 = 0; + var1 = 412685488; + break; + case 412685488: + return (boolean)((var2) != 0); + case 724736202: + if (var0 != oe.TITLE) { + var1 = 1526635687; + } else { + var1 = 1792129465; + } + break; + case 882697593: + if (var0 == oe.NUMERIC) { + var1 = 1792129465; + } else { + var1 = -107169165; + } + break; + case 1526635687: + if (var0 != oe.HEADING) { + var1 = 1882840607; + } else { + var1 = 1792129465; + } + break; + case 1792129465: + var2 = 1; + var1 = 412685488; + break; + case 1882840607: + if (var0 != oe.LABEL_STRONG) { + var1 = 882697593; + } else { + var1 = 1792129465; + } + break; + case 2053597317: + default: + if (var0 != oe.DISPLAY) { + var1 = 724736202; + } else { + var1 = 1792129465; + } + } + } + } + + private static int pairingIndex(mv var0) { + oa var1 = null; + oa var2 = null; + Object var3 = null; + oa var4 = null; + int var5 = 2031831379; + + while (true) { + switch (var5) { + case -1813115763: + if (var2 == var4) { + var5 = 960365821; + } else { + var5 = 589928845; + } + break; + case -1001296801: + if (var2 == oa.REGULAR) { + var5 = 1836735789; + } else { + var5 = -468394113; + } + break; + case -510652016: + if (var1 == oa.ROUND_BOLD) { + var5 = 49762085; + } else { + var5 = 1813466790; + } + break; + case -468394113: + return -1; + case -143573436: + return 1; + case 49762085: + if (var2 == oa.ROUND_BOLD) { + var5 = 997636234; + } else { + var5 = 1813466790; + } + break; + case 589928845: + if (var1 == oa.BOLD) { + var5 = 1809083112; + } else { + var5 = -510652016; + } + break; + case 960365821: + return 0; + case 997636234: + return 2; + case 1809083112: + if (var2 == oa.MEDIUM) { + var5 = -143573436; + } else { + var5 = -510652016; + } + break; + case 1813466790: + if (var1 == oa.SEMIBOLD) { + var5 = -1001296801; + } else { + var5 = -468394113; + } + break; + case 1836735789: + return 3; + case 2031831379: + default: + var1 = var0.getTypography().family(oe.HEADING); + var2 = var0.getTypography().family(oe.BODY); + var3 = var0.getDefaultTypography().family(oe.HEADING); + var4 = var0.getDefaultTypography().family(oe.BODY); + if (var1 == var3) { + var5 = -1813115763; + } else { + var5 = 589928845; + } + } + } + } + + private static nw density() { + ArrayList var0 = null; + int var1 = 0; + ny[] var2 = null; + int var3 = 0; + int var4 = 0; + Object var5 = null; + int var6 = 583201280; + + while (true) { + switch (var6) { + case -1137475679: + if (var4 < var3) { + var6 = 369087081; + } else { + var6 = 81910882; + } + break; + case 81910882: + return new nw("Density", var0, var0.size()); + case 369087081: + var5 = var2[var4]; + var0.add(densityVariant((ny)var5, var1++)); + var4++; + var6 = -1137475679; + break; + case 583201280: + default: + var0 = new ArrayList(); + var1 = 0; + var2 = ny.values(); + var3 = var2.length; + var4 = 0; + var6 = -1137475679; + } + } + } + + private static ni densityVariant(ny var0, int var1) { + return new ni( + var0.label(), + "Row height and padding preset", + nh.DENSITY, + var0.spacingScale(), + var1, + var1x -> var1x.setSpacing(var1x.getSpacing().withDensity(var0)), + var1x -> { + int var3 = 0; + int var2 = 1414784754; + + while (true) { + switch (var2) { + case -174348940: + var3 = 0; + var2 = -156692183; + break; + case -156692183: + return (boolean)((var3) != 0); + case 1414784754: + default: + if (var1x.getSpacing().density() == var0) { + var2 = 1950139184; + } else { + var2 = -174348940; + } + break; + case 1950139184: + var3 = 1; + var2 = -156692183; + } + } + } + ); + } + + private static nw breathing() { + ArrayList var0 = new ArrayList(); + var0.add( + spacing( + "Tight", + "Everything sits closer together", + 0.85F, + (2068221093 ^ -2068221093) + ((2068221093 & -2068221093) << 1) + ) + ); + var0.add( + spacing( + "Normal", + "The stock spacing", + 1.0F, + (-1241028555 ^ 1241028556) + ((-1241028555 & 1241028556) << 1) + ) + ); + var0.add( + spacing( + "Airy", + "Generous gaps", + 1.2F, + (263898092 ^ -263898090) + ((263898092 & -263898090) << 1) + ) + ); + return new nw("Breathing room", var0, var0.size()); + } + + private static ni spacing(String var0, String var1, float var2, int var3) { + return new ni( + var0, + var1, + nh.SPACING, + var2, + var3, + var1x -> var1x.setSpacing(var1x.getSpacing().withScale(var2)), + var1x -> near(var1x.getSpacing().scale(), var2, 0.015F) + ); + } + + private static nw pattern() { + ArrayList var0 = null; + nk[] var1 = null; + int var2 = 0; + Object var3 = null; + int var4 = 1323659580; + + while (true) { + switch (var4) { + case 648974545: + var3 = var1[var2]; + var0.add( + new ni( + titleCase(((nk)var3).name()), + "Animated shader behind the window", + nh.BACKDROP, + 0.0F, + var2, + var1x -> { + nl var2x = null; + float var3x = 0.0F; + float var5x = 0.0F; + int var4x = 539912552; + + while (true) { + switch (var4x) { + case -946274765: + var3x = var5x; + var1x.setBackdrop(new nl(var3, var3x, var2x.speed(), var2x.scale())); + return; + case 154502056: + var5x = 0.5F; + var4x = -946274765; + break; + case 539912552: + default: + var2x = var1x.getBackdrop(); + if (var3 != nk.NONE) { + var4x = 729158470; + } else { + var4x = 1812314000; + } + break; + case 729158470: + if (var2x.intensity() > 0.0F) { + var4x = 1812314000; + } else { + var4x = 154502056; + } + break; + case 1812314000: + var5x = var2x.intensity(); + var4x = -946274765; + } + } + }, + var1x -> { + int var3x = 0; + int var2x = 204379288; + + while (true) { + switch (var2x) { + case -2125372483: + var3x = 1; + var2x = 649392528; + break; + case 204379288: + default: + if (var1x.getBackdrop().mode() == var3) { + var2x = -2125372483; + } else { + var2x = 346227164; + } + break; + case 346227164: + var3x = 0; + var2x = 649392528; + break; + case 649392528: + return (boolean)((var3x) != 0); + } + } + } + ) + ); + var2++; + var4 = 1104640235; + break; + case 1104640235: + if (var2 < var1.length) { + var4 = 648974545; + } else { + var4 = 1343307184; + } + break; + case 1323659580: + default: + var0 = new ArrayList(); + var1 = nk.values(); + var2 = 0; + var4 = 1104640235; + break; + case 1343307184: + return new nw( + "Pattern", + var0, + (-1914429106 ^ 1914429109) + ((-1914429106 & 1914429109) << 1) + ); + } + } + } + + private static nw strength() { + ArrayList var0 = new ArrayList(); + var0.add( + intensity( + "Off", + "Pattern hidden", + 0.0F, + (572091323 ^ -572091323) + ((572091323 & -572091323) << 1) + ) + ); + var0.add( + intensity( + "Subtle", + "Barely there", + 0.25F, + (73343439 ^ -73343438) + ((73343439 & -73343438) << 1) + ) + ); + var0.add( + intensity( + "Medium", + "Clearly visible", + 0.5F, + (-28009063 | 28009065) + (-28009063 & 28009065) + ) + ); + var0.add( + intensity( + "Strong", + "Front and centre", + 0.85F, + (1264277571 | -1264277568) + (1264277571 & -1264277568) + ) + ); + return new nw("Strength", var0, var0.size()); + } + + private static ni intensity(String var0, String var1, float var2, int var3) { + return new ni( + var0, + var1, + nh.INTENSITY, + var2, + var3, + var1x -> var1x.setBackdrop(var1x.getBackdrop().withIntensity(var2)), + var1x -> near(var1x.getBackdrop().intensity(), var2, 0.015F) + ); + } + + private static nw polarity() { + ArrayList var0 = null; + int var1 = 0; + ns[] var2 = null; + int var3 = 0; + int var4 = 0; + Object var5 = null; + ns var6 = null; + int var7 = 1823312038; + + while (true) { + switch (var7) { + case 473743659: + if (var4 < var3) { + var7 = 1917302032; + } else { + var7 = 1362971597; + } + break; + case 1362971597: + return new nw("Base", var0, var0.size()); + case 1823312038: + default: + var0 = new ArrayList(); + var1 = 0; + var2 = ns.values(); + var3 = var2.length; + var4 = 0; + var7 = 473743659; + break; + case 1917302032: + var5 = var2[var4]; + var6 = (ns)var5; + var0.add( + new ni( + titleCase(var6.name()), + "Generate dark or light surfaces from the accent", + nh.POLARITY, + 0.0F, + var1++, + var1x -> { + var1x.setPalette(var1x.getPalette().withGenerated((boolean)(((1)) != 0)).withPolarity(var6)); + nd.apply(var1x); + }, + var1x -> { + int var3x = 0; + int var2x = -1337514207; + + while (true) { + switch (var2x) { + case -1931371217: + var3x = 0; + var2x = 654770840; + break; + case -1846610250: + if (var1x.getPalette().polarity() == var6) { + var2x = -770918860; + } else { + var2x = -1931371217; + } + break; + case -1337514207: + default: + if (var1x.getPalette().generated()) { + var2x = -1846610250; + } else { + var2x = -1931371217; + } + break; + case -770918860: + var3x = 1; + var2x = 654770840; + break; + case 654770840: + return (boolean)((var3x) != 0); + } + } + } + ) + ); + var4++; + var7 = 473743659; + } + } + } + + private static boolean near(float var0, float var1, float var2) { + int var4 = 0; + int var3 = 635019251; + + while (true) { + switch (var3) { + case -1831788440: + var4 = 0; + var3 = -1003553134; + break; + case -1003553134: + return (boolean)((var4) != 0); + case -913420389: + var4 = 1; + var3 = -1003553134; + break; + case 635019251: + default: + if (Math.abs(var0 - var1) <= var2) { + var3 = -913420389; + } else { + var3 = -1831788440; + } + } + } + } + + private static String titleCase(String var0) { + String var1 = var0.toLowerCase(Locale.ROOT) + .replace((char)(95), (char)((592816491 | -592816459) + (592816491 & -592816459))); + return Character.toUpperCase(var1.charAt((2010420225 | -2010420225) + (2010420225 & -2010420225))) + + var1.substring((-790449292 ^ 790449293) + ((-790449292 & 790449293) << 1)); + } +} diff --git a/src/main/java/defpackage/nk.java b/src/main/java/defpackage/nk.java new file mode 100644 index 0000000..b16c1d3 --- /dev/null +++ b/src/main/java/defpackage/nk.java @@ -0,0 +1,15 @@ +package defpackage; + +public enum nk { + NONE, + IRIDESCENCE, + MAGMA, + DIGITAL_RAIN, + GRID_HORIZON, + SINGULARITY, + EMBER; + + public float shaderId() { + return this.ordinal(); + } +} diff --git a/src/main/java/defpackage/nl.java b/src/main/java/defpackage/nl.java new file mode 100644 index 0000000..8c5067e --- /dev/null +++ b/src/main/java/defpackage/nl.java @@ -0,0 +1,88 @@ +package defpackage; + +public record nl(nk mode, float intensity, float speed, float scale) { + public static final float DEFAULT_INTENSITY = 0.0F; + public static final float DEFAULT_SPEED = 1.0F; + public static final float DEFAULT_SCALE = 1.0F; + public static final nl DEFAULT = new nl(nk.NONE, 0.0F, 1.0F, 1.0F); + + public nl(nk mode, float intensity, float speed, float scale) { + if (mode == null) { + throw new IllegalArgumentException( + "ThemeBackdrop mode must not be null" + ); + } + + this.mode = mode; + this.intensity = intensity; + this.speed = speed; + this.scale = scale; + } + + public static nl of(nk var0, float var1, float var2, float var3) { + return new nl(var0, var1, var2, var3); + } + + public boolean isActive() { + int var2 = 0; + int var1 = -828476152; + + while (true) { + switch (var1) { + case -828476152: + default: + if (this.mode != nk.NONE) { + var1 = 603582083; + } else { + var1 = -650720209; + } + break; + case -650720209: + var2 = 0; + var1 = -236541639; + break; + case -236541639: + return (boolean)((var2) != 0); + case 465414595: + var2 = 1; + var1 = -236541639; + break; + case 603582083: + if (this.intensity > 0.0F) { + var1 = 465414595; + } else { + var1 = -650720209; + } + } + } + } + + public nl withIntensity(float var1) { + return new nl(this.mode, var1, this.speed, this.scale); + } + + public nl lerp(nl var1, float var2) { + int var3 = 1072781602; + + while (true) { + switch (var3) { + case -1366304853: + return new nl(var1.mode, var1.intensity * var2, var1.speed, var1.scale); + case -276176394: + return new nl( + this.mode, + this.intensity + (var1.intensity - this.intensity) * var2, + this.speed + (var1.speed - this.speed) * var2, + this.scale + (var1.scale - this.scale) * var2 + ); + case 1072781602: + } + + if (this.mode != var1.mode) { + var3 = -1366304853; + } else { + var3 = -276176394; + } + } + } +} diff --git a/src/main/java/defpackage/nm.java b/src/main/java/defpackage/nm.java new file mode 100644 index 0000000..a5cfa8a --- /dev/null +++ b/src/main/java/defpackage/nm.java @@ -0,0 +1,466 @@ +package defpackage; + +public record nm( + float neonIntensity, + float neonRadius, + float glowExponent, + float rimTopAlpha, + float rimBottomAlpha, + boolean gradientBorder, + float gradientBorderAngle, + float activeGlowIntensity, + float activeGlowRadius, + float textGlowRadius, + float textGlowIntensity, + asu textGlowColor, + float shadowSoftness, + float shadowAlpha, + float hoverLift, + float animationSpeed, + float sweepSpeed, + float sweepLength, + float sweepIntensity, + float[] roleNeonScale +) { + private static final int ROLE_COUNT = aso.values().length; + public static final float DEFAULT_GLOW_EXPONENT = 1.0F; + public static final float DEFAULT_GRADIENT_BORDER_ANGLE = 90.0F; + public static final float DEFAULT_SHADOW_SOFTNESS = 8.0F; + public static final float DEFAULT_SHADOW_ALPHA = 0.16F; + public static final float DEFAULT_HOVER_LIFT = 0.0F; + public static final float DEFAULT_ANIMATION_SPEED = 1.0F; + public static final float DEFAULT_SWEEP_SPEED = 0.0F; + public static final float DEFAULT_SWEEP_LENGTH = 0.28F; + public static final float DEFAULT_SWEEP_INTENSITY = 0.0F; + public static final float DEFAULT_RIM_TOP_ALPHA = 0.0F; + public static final float DEFAULT_RIM_BOTTOM_ALPHA = 0.0F; + public static final nm DEFAULT = new nm( + 0.0F, + 0.0F, + 1.0F, + 0.0F, + 0.0F, + (boolean)(((0)) != 0), + 90.0F, + 0.0F, + 0.0F, + 0.0F, + 0.0F, + asu.WHITE, + 8.0F, + 0.16F, + 0.0F, + 1.0F, + 0.0F, + 0.28F, + 0.0F, + no.neutralRoleScales() + ); + private static final float HALF = 0.5F; + + public nm( + float neonIntensity, + float neonRadius, + float glowExponent, + float rimTopAlpha, + float rimBottomAlpha, + boolean gradientBorder, + float gradientBorderAngle, + float activeGlowIntensity, + float activeGlowRadius, + float textGlowRadius, + float textGlowIntensity, + asu textGlowColor, + float shadowSoftness, + float shadowAlpha, + float hoverLift, + float animationSpeed, + float sweepSpeed, + float sweepLength, + float sweepIntensity, + float[] roleNeonScale + ) { + if (textGlowColor == null) { + throw new IllegalArgumentException( + "textGlowColor must not be null" + ); + } + + if (roleNeonScale != null && roleNeonScale.length == ROLE_COUNT) { + roleNeonScale = (float[])roleNeonScale.clone(); + this.neonIntensity = neonIntensity; + this.neonRadius = neonRadius; + this.glowExponent = glowExponent; + this.rimTopAlpha = rimTopAlpha; + this.rimBottomAlpha = rimBottomAlpha; + this.gradientBorder = gradientBorder; + this.gradientBorderAngle = gradientBorderAngle; + this.activeGlowIntensity = activeGlowIntensity; + this.activeGlowRadius = activeGlowRadius; + this.textGlowRadius = textGlowRadius; + this.textGlowIntensity = textGlowIntensity; + this.textGlowColor = textGlowColor; + this.shadowSoftness = shadowSoftness; + this.shadowAlpha = shadowAlpha; + this.hoverLift = hoverLift; + this.animationSpeed = animationSpeed; + this.sweepSpeed = sweepSpeed; + this.sweepLength = sweepLength; + this.sweepIntensity = sweepIntensity; + this.roleNeonScale = roleNeonScale; + } else { + throw new IllegalArgumentException( + "roleNeonScale must have one entry per SurfaceRole" + ); + } + } + + public float neonIntensity(aso var1) { + return this.neonIntensity * this.roleNeonScale[var1.ordinal()]; + } + + public nm withNeon(float var1, float var2) { + return new nm( + var1, + var2, + this.glowExponent, + this.rimTopAlpha, + this.rimBottomAlpha, + this.gradientBorder, + this.gradientBorderAngle, + this.activeGlowIntensity, + this.activeGlowRadius, + this.textGlowRadius, + this.textGlowIntensity, + this.textGlowColor, + this.shadowSoftness, + this.shadowAlpha, + this.hoverLift, + this.animationSpeed, + this.sweepSpeed, + this.sweepLength, + this.sweepIntensity, + this.roleNeonScale + ); + } + + public nm withRim(float var1, float var2, float var3, float var4, float var5) { + return new nm( + var1, + var2, + var3, + var4, + var5, + this.gradientBorder, + this.gradientBorderAngle, + this.activeGlowIntensity, + this.activeGlowRadius, + this.textGlowRadius, + this.textGlowIntensity, + this.textGlowColor, + this.shadowSoftness, + this.shadowAlpha, + this.hoverLift, + this.animationSpeed, + this.sweepSpeed, + this.sweepLength, + this.sweepIntensity, + this.roleNeonScale + ); + } + + public nm withActiveGlow(float var1, float var2) { + return new nm( + this.neonIntensity, + this.neonRadius, + this.glowExponent, + this.rimTopAlpha, + this.rimBottomAlpha, + this.gradientBorder, + this.gradientBorderAngle, + var1, + var2, + this.textGlowRadius, + this.textGlowIntensity, + this.textGlowColor, + this.shadowSoftness, + this.shadowAlpha, + this.hoverLift, + this.animationSpeed, + this.sweepSpeed, + this.sweepLength, + this.sweepIntensity, + this.roleNeonScale + ); + } + + public nm withTextGlow(float var1, float var2) { + return new nm( + this.neonIntensity, + this.neonRadius, + this.glowExponent, + this.rimTopAlpha, + this.rimBottomAlpha, + this.gradientBorder, + this.gradientBorderAngle, + this.activeGlowIntensity, + this.activeGlowRadius, + var1, + var2, + this.textGlowColor, + this.shadowSoftness, + this.shadowAlpha, + this.hoverLift, + this.animationSpeed, + this.sweepSpeed, + this.sweepLength, + this.sweepIntensity, + this.roleNeonScale + ); + } + + public nm withSweep(float var1, float var2, float var3) { + return new nm( + this.neonIntensity, + this.neonRadius, + this.glowExponent, + this.rimTopAlpha, + this.rimBottomAlpha, + this.gradientBorder, + this.gradientBorderAngle, + this.activeGlowIntensity, + this.activeGlowRadius, + this.textGlowRadius, + this.textGlowIntensity, + this.textGlowColor, + this.shadowSoftness, + this.shadowAlpha, + this.hoverLift, + this.animationSpeed, + var1, + var2, + var3, + this.roleNeonScale + ); + } + + public nm withShadow(float var1, float var2) { + return new nm( + this.neonIntensity, + this.neonRadius, + this.glowExponent, + this.rimTopAlpha, + this.rimBottomAlpha, + this.gradientBorder, + this.gradientBorderAngle, + this.activeGlowIntensity, + this.activeGlowRadius, + this.textGlowRadius, + this.textGlowIntensity, + this.textGlowColor, + var1, + var2, + this.hoverLift, + this.animationSpeed, + this.sweepSpeed, + this.sweepLength, + this.sweepIntensity, + this.roleNeonScale + ); + } + + public nm withShadowSoftness(float var1) { + return this.withShadow(var1, this.shadowAlpha); + } + + public nm withShadowAlpha(float var1) { + return this.withShadow(this.shadowSoftness, var1); + } + + public nm withAnimationSpeed(float var1) { + return new nm( + this.neonIntensity, + this.neonRadius, + this.glowExponent, + this.rimTopAlpha, + this.rimBottomAlpha, + this.gradientBorder, + this.gradientBorderAngle, + this.activeGlowIntensity, + this.activeGlowRadius, + this.textGlowRadius, + this.textGlowIntensity, + this.textGlowColor, + this.shadowSoftness, + this.shadowAlpha, + this.hoverLift, + var1, + this.sweepSpeed, + this.sweepLength, + this.sweepIntensity, + this.roleNeonScale + ); + } + + public nm withGradientBorder(boolean var1, float var2) { + return new nm( + this.neonIntensity, + this.neonRadius, + this.glowExponent, + this.rimTopAlpha, + this.rimBottomAlpha, + var1, + var2, + this.activeGlowIntensity, + this.activeGlowRadius, + this.textGlowRadius, + this.textGlowIntensity, + this.textGlowColor, + this.shadowSoftness, + this.shadowAlpha, + this.hoverLift, + this.animationSpeed, + this.sweepSpeed, + this.sweepLength, + this.sweepIntensity, + this.roleNeonScale + ); + } + + public nm withHoverLift(float var1) { + return new nm( + this.neonIntensity, + this.neonRadius, + this.glowExponent, + this.rimTopAlpha, + this.rimBottomAlpha, + this.gradientBorder, + this.gradientBorderAngle, + this.activeGlowIntensity, + this.activeGlowRadius, + this.textGlowRadius, + this.textGlowIntensity, + this.textGlowColor, + this.shadowSoftness, + this.shadowAlpha, + var1, + this.animationSpeed, + this.sweepSpeed, + this.sweepLength, + this.sweepIntensity, + this.roleNeonScale + ); + } + + public nm withTextGlowColor(asu var1) { + return new nm( + this.neonIntensity, + this.neonRadius, + this.glowExponent, + this.rimTopAlpha, + this.rimBottomAlpha, + this.gradientBorder, + this.gradientBorderAngle, + this.activeGlowIntensity, + this.activeGlowRadius, + this.textGlowRadius, + this.textGlowIntensity, + var1, + this.shadowSoftness, + this.shadowAlpha, + this.hoverLift, + this.animationSpeed, + this.sweepSpeed, + this.sweepLength, + this.sweepIntensity, + this.roleNeonScale + ); + } + + public nm withRoleNeonScale(aso var1, float var2) { + float[] var3 = (float[])this.roleNeonScale.clone(); + var3[var1.ordinal()] = var2; + return new nm( + this.neonIntensity, + this.neonRadius, + this.glowExponent, + this.rimTopAlpha, + this.rimBottomAlpha, + this.gradientBorder, + this.gradientBorderAngle, + this.activeGlowIntensity, + this.activeGlowRadius, + this.textGlowRadius, + this.textGlowIntensity, + this.textGlowColor, + this.shadowSoftness, + this.shadowAlpha, + this.hoverLift, + this.animationSpeed, + this.sweepSpeed, + this.sweepLength, + this.sweepIntensity, + var3 + ); + } + + public nm withRoleNeonScales(float[] var1) { + return new nm( + this.neonIntensity, + this.neonRadius, + this.glowExponent, + this.rimTopAlpha, + this.rimBottomAlpha, + this.gradientBorder, + this.gradientBorderAngle, + this.activeGlowIntensity, + this.activeGlowRadius, + this.textGlowRadius, + this.textGlowIntensity, + this.textGlowColor, + this.shadowSoftness, + this.shadowAlpha, + this.hoverLift, + this.animationSpeed, + this.sweepSpeed, + this.sweepLength, + this.sweepIntensity, + var1 + ); + } + + public nm lerp(nm var1, float var2) { + float[] var3 = new float[ROLE_COUNT]; + + for (int var4 = 0; var4 < ROLE_COUNT; var4++) { + var3[var4] = mix(this.roleNeonScale[var4], var1.roleNeonScale[var4], var2); + } + + return new nm( + mix(this.neonIntensity, var1.neonIntensity, var2), + mix(this.neonRadius, var1.neonRadius, var2), + mix(this.glowExponent, var1.glowExponent, var2), + mix(this.rimTopAlpha, var1.rimTopAlpha, var2), + mix(this.rimBottomAlpha, var1.rimBottomAlpha, var2), + var2 < 0.5F ? this.gradientBorder : var1.gradientBorder, + mix(this.gradientBorderAngle, var1.gradientBorderAngle, var2), + mix(this.activeGlowIntensity, var1.activeGlowIntensity, var2), + mix(this.activeGlowRadius, var1.activeGlowRadius, var2), + mix(this.textGlowRadius, var1.textGlowRadius, var2), + mix(this.textGlowIntensity, var1.textGlowIntensity, var2), + this.textGlowColor.mix(var1.textGlowColor, var2), + mix(this.shadowSoftness, var1.shadowSoftness, var2), + mix(this.shadowAlpha, var1.shadowAlpha, var2), + mix(this.hoverLift, var1.hoverLift, var2), + mix(this.animationSpeed, var1.animationSpeed, var2), + mix(this.sweepSpeed, var1.sweepSpeed, var2), + mix(this.sweepLength, var1.sweepLength, var2), + mix(this.sweepIntensity, var1.sweepIntensity, var2), + var3 + ); + } + + private static float mix(float var0, float var1, float var2) { + return var0 + (var1 - var0) * var2; + } +} diff --git a/src/main/java/defpackage/nn.java b/src/main/java/defpackage/nn.java new file mode 100644 index 0000000..94817ff --- /dev/null +++ b/src/main/java/defpackage/nn.java @@ -0,0 +1,85 @@ +package defpackage; + +public record nn(float[] softness, float[] alpha, float softnessScale, float alphaScale) { + public static final float DEFAULT_SCALE = 1.0F; + public static final nn DEFAULT = new nn(nz.defaultSoftness(), nz.defaultAlpha(), 1.0F, 1.0F); + + public nn(float[] softness, float[] alpha, float softnessScale, float alphaScale) { + if (softness == null || softness.length != nz.COUNT) { + throw new IllegalArgumentException( + "softness must have one entry per Elevation" + ); + } + + if (alpha != null && alpha.length == nz.COUNT) { + softness = (float[])softness.clone(); + alpha = (float[])alpha.clone(); + this.softness = softness; + this.alpha = alpha; + this.softnessScale = softnessScale; + this.alphaScale = alphaScale; + } else { + throw new IllegalArgumentException( + "alpha must have one entry per Elevation" + ); + } + } + + public float softness(nz var1) { + return this.softness[var1.ordinal()] * this.softnessScale; + } + + public float alpha(nz var1) { + return this.alpha[var1.ordinal()] * this.alphaScale; + } + + public nn withScale(float var1, float var2) { + return new nn(this.softness, this.alpha, var1, var2); + } + + public nn withLevel(nz var1, float var2, float var3) { + float[] var4 = (float[])this.softness.clone(); + float[] var5 = (float[])this.alpha.clone(); + var4[var1.ordinal()] = var2; + var5[var1.ordinal()] = var3; + return new nn(var4, var5, this.softnessScale, this.alphaScale); + } + + public nn lerp(nn var1, float var2) { + float[] var3 = null; + float[] var4 = null; + int var5 = 0; + int var6 = -1109645665; + + while (true) { + switch (var6) { + case -1260217788: + if (var5 < nz.COUNT) { + var6 = 729164098; + } else { + var6 = 1812686885; + } + break; + case -1109645665: + default: + var3 = new float[nz.COUNT]; + var4 = new float[nz.COUNT]; + var5 = 0; + var6 = -1260217788; + break; + case 729164098: + var3[var5] = mix(this.softness[var5], var1.softness[var5], var2); + var4[var5] = mix(this.alpha[var5], var1.alpha[var5], var2); + var5++; + var6 = -1260217788; + break; + case 1812686885: + return new nn(var3, var4, mix(this.softnessScale, var1.softnessScale, var2), mix(this.alphaScale, var1.alphaScale, var2)); + } + } + } + + private static float mix(float var0, float var1, float var2) { + return var0 + (var1 - var0) * var2; + } +} diff --git a/src/main/java/defpackage/no.java b/src/main/java/defpackage/no.java new file mode 100644 index 0000000..cf313dd --- /dev/null +++ b/src/main/java/defpackage/no.java @@ -0,0 +1,104 @@ +package defpackage; + +import java.util.Arrays; + +public record no(float radiusScale, float squircleExponent, float borderThickness, float dividerAlpha, float[] roleRadiusScale) { + private static final int ROLE_COUNT = aso.values().length; + private static final float NEUTRAL_SCALE = 1.0F; + public static final float DEFAULT_RADIUS_SCALE = 1.0F; + public static final float DEFAULT_SQUIRCLE_EXPONENT = 3.0F; + public static final float DEFAULT_BORDER_THICKNESS = 1.0F; + public static final float DEFAULT_DIVIDER_ALPHA = 0.16F; + public static final no DEFAULT = new no(1.0F, 3.0F, 1.0F, 0.16F, neutralRoleScales()); + + public no(float radiusScale, float squircleExponent, float borderThickness, float dividerAlpha, float[] roleRadiusScale) { + if (roleRadiusScale != null && roleRadiusScale.length == ROLE_COUNT) { + roleRadiusScale = (float[])roleRadiusScale.clone(); + this.radiusScale = radiusScale; + this.squircleExponent = squircleExponent; + this.borderThickness = borderThickness; + this.dividerAlpha = dividerAlpha; + this.roleRadiusScale = roleRadiusScale; + } else { + throw new IllegalArgumentException( + "roleRadiusScale must have one entry per SurfaceRole" + ); + } + } + + public static float[] neutralRoleScales() { + float[] var0 = new float[ROLE_COUNT]; + Arrays.fill(var0, 1.0F); + return var0; + } + + public float radiusScale(aso var1) { + return this.radiusScale * this.roleRadiusScale[var1.ordinal()]; + } + + public no withRadiusScale(float var1) { + return new no(var1, this.squircleExponent, this.borderThickness, this.dividerAlpha, this.roleRadiusScale); + } + + public no withBorderThickness(float var1) { + return new no(this.radiusScale, this.squircleExponent, var1, this.dividerAlpha, this.roleRadiusScale); + } + + public no withSquircleExponent(float var1) { + return new no(this.radiusScale, var1, this.borderThickness, this.dividerAlpha, this.roleRadiusScale); + } + + public no withDividerAlpha(float var1) { + return new no(this.radiusScale, this.squircleExponent, this.borderThickness, var1, this.roleRadiusScale); + } + + public no withRoleRadiusScale(aso var1, float var2) { + float[] var3 = (float[])this.roleRadiusScale.clone(); + var3[var1.ordinal()] = var2; + return new no(this.radiusScale, this.squircleExponent, this.borderThickness, this.dividerAlpha, var3); + } + + public no withRoleRadiusScales(float[] var1) { + return new no(this.radiusScale, this.squircleExponent, this.borderThickness, this.dividerAlpha, var1); + } + + public no lerp(no var1, float var2) { + float[] var3 = null; + int var4 = 0; + int var5 = -2023962331; + + while (true) { + switch (var5) { + case -2023962331: + default: + var3 = new float[ROLE_COUNT]; + var4 = 0; + var5 = 2063283796; + break; + case -851844650: + return new no( + mix(this.radiusScale, var1.radiusScale, var2), + mix(this.squircleExponent, var1.squircleExponent, var2), + mix(this.borderThickness, var1.borderThickness, var2), + mix(this.dividerAlpha, var1.dividerAlpha, var2), + var3 + ); + case -438954627: + var3[var4] = mix(this.roleRadiusScale[var4], var1.roleRadiusScale[var4], var2); + var4++; + var5 = 2063283796; + break; + case 2063283796: + if (var4 < ROLE_COUNT) { + var5 = -438954627; + } else { + var5 = -851844650; + } + } + } + } + + private static float mix(float var0, float var1, float var2) { + return var0 + (var1 - var0) * var2; + } +} diff --git a/src/main/java/defpackage/np.java b/src/main/java/defpackage/np.java new file mode 100644 index 0000000..09b2e2a --- /dev/null +++ b/src/main/java/defpackage/np.java @@ -0,0 +1,263 @@ +package defpackage; + +public record np( + float frost, + float refraction, + float tint, + float bevelDepth, + float bevelWidth, + float rimGain, + float fillAlphaScale, + float borderAlphaScale, + float contrast, + float specular, + float lightAngle, + float dispersion, + float depth, + asn[] roleTier +) { + private static final int ROLE_COUNT = aso.values().length; + private static final float HALF = 0.5F; + public static final float DEFAULT_BEVEL_DEPTH = 0.2F; + public static final float DEFAULT_BEVEL_WIDTH = 0.04F; + public static final float DEFAULT_RIM_GAIN = 1.0F; + public static final float DEFAULT_ALPHA_SCALE = 1.0F; + public static final float DEFAULT_CONTRAST = 0.72F; + public static final float DEFAULT_SPECULAR = 0.3F; + public static final float DEFAULT_LIGHT_ANGLE = 236.0F; + public static final float DEFAULT_DISPERSION = 0.35F; + public static final float DEFAULT_DEPTH = 0.5F; + public static final np DEFAULT = new np(0.0F, 0.0F, 0.0F, 0.2F, 0.04F, 1.0F, 1.0F, 1.0F, 0.72F, 0.3F, 236.0F, 0.35F, 0.5F, new asn[ROLE_COUNT]); + + public np( + float frost, + float refraction, + float tint, + float bevelDepth, + float bevelWidth, + float rimGain, + float fillAlphaScale, + float borderAlphaScale, + float contrast, + float specular, + float lightAngle, + float dispersion, + float depth, + asn[] roleTier + ) { + if (roleTier != null && roleTier.length == ROLE_COUNT) { + roleTier = (asn[])roleTier.clone(); + this.frost = frost; + this.refraction = refraction; + this.tint = tint; + this.bevelDepth = bevelDepth; + this.bevelWidth = bevelWidth; + this.rimGain = rimGain; + this.fillAlphaScale = fillAlphaScale; + this.borderAlphaScale = borderAlphaScale; + this.contrast = contrast; + this.specular = specular; + this.lightAngle = lightAngle; + this.dispersion = dispersion; + this.depth = depth; + this.roleTier = roleTier; + } else { + throw new IllegalArgumentException( + "roleTier must have one entry per SurfaceRole" + ); + } + } + + public asn tier(aso var1) { + asn var2 = null; + asn var4 = null; + int var3 = -1263269542; + + while (true) { + switch (var3) { + case -1649591618: + return var4; + case -1263269542: + default: + var2 = this.roleTier[var1.ordinal()]; + if (var2 != null) { + var3 = 1015676645; + } else { + var3 = 484957926; + } + break; + case 484957926: + var4 = var1.tier(); + var3 = -1649591618; + break; + case 1015676645: + var4 = var2; + var3 = -1649591618; + } + } + } + + public np withTier(aso var1, asn var2) { + asn[] var3 = (asn[])this.roleTier.clone(); + var3[var1.ordinal()] = var2; + return new np( + this.frost, + this.refraction, + this.tint, + this.bevelDepth, + this.bevelWidth, + this.rimGain, + this.fillAlphaScale, + this.borderAlphaScale, + this.contrast, + this.specular, + this.lightAngle, + this.dispersion, + this.depth, + var3 + ); + } + + public np withSurfaceAlpha(float var1, float var2) { + return new np( + this.frost, + this.refraction, + this.tint, + this.bevelDepth, + this.bevelWidth, + this.rimGain, + var1, + var2, + this.contrast, + this.specular, + this.lightAngle, + this.dispersion, + this.depth, + this.roleTier + ); + } + + public np withOptics(float var1, float var2, float var3) { + return new np( + var1, + var2, + var3, + this.bevelDepth, + this.bevelWidth, + this.rimGain, + this.fillAlphaScale, + this.borderAlphaScale, + this.contrast, + this.specular, + this.lightAngle, + this.dispersion, + this.depth, + this.roleTier + ); + } + + public np withBevel(float var1, float var2, float var3) { + return new np( + this.frost, + this.refraction, + this.tint, + var1, + var2, + var3, + this.fillAlphaScale, + this.borderAlphaScale, + this.contrast, + this.specular, + this.lightAngle, + this.dispersion, + this.depth, + this.roleTier + ); + } + + public np withMaterial(float var1, float var2, float var3, float var4, float var5) { + return new np( + this.frost, + this.refraction, + this.tint, + this.bevelDepth, + this.bevelWidth, + this.rimGain, + this.fillAlphaScale, + this.borderAlphaScale, + var1, + var2, + var3, + var4, + var5, + this.roleTier + ); + } + + public np withTiers(asn[] var1) { + return new np( + this.frost, + this.refraction, + this.tint, + this.bevelDepth, + this.bevelWidth, + this.rimGain, + this.fillAlphaScale, + this.borderAlphaScale, + this.contrast, + this.specular, + this.lightAngle, + this.dispersion, + this.depth, + var1 + ); + } + + public np lerp(np var1, float var2) { + asn[] var3 = null; + asn[] var5 = null; + int var4 = 655867850; + + while (true) { + switch (var4) { + case 631456801: + var5 = this.roleTier; + var4 = 1650831433; + break; + case 655867850: + default: + if (var2 < 0.5F) { + var4 = 631456801; + } else { + var4 = 1792116488; + } + break; + case 1650831433: + var3 = var5; + return new np( + mix(this.frost, var1.frost, var2), + mix(this.refraction, var1.refraction, var2), + mix(this.tint, var1.tint, var2), + mix(this.bevelDepth, var1.bevelDepth, var2), + mix(this.bevelWidth, var1.bevelWidth, var2), + mix(this.rimGain, var1.rimGain, var2), + mix(this.fillAlphaScale, var1.fillAlphaScale, var2), + mix(this.borderAlphaScale, var1.borderAlphaScale, var2), + mix(this.contrast, var1.contrast, var2), + mix(this.specular, var1.specular, var2), + mix(this.lightAngle, var1.lightAngle, var2), + mix(this.dispersion, var1.dispersion, var2), + mix(this.depth, var1.depth, var2), + var3 + ); + case 1792116488: + var5 = var1.roleTier; + var4 = 1650831433; + } + } + } + + private static float mix(float var0, float var1, float var2) { + return var0 + (var1 - var0) * var2; + } +} diff --git a/src/main/java/defpackage/nq.java b/src/main/java/defpackage/nq.java new file mode 100644 index 0000000..cb0d703 --- /dev/null +++ b/src/main/java/defpackage/nq.java @@ -0,0 +1,57 @@ +package defpackage; + +public record nq(int[] durations) { + public static final nq DEFAULT = new nq(ob.defaults()); + + public nq(int[] durations) { + if (durations != null && durations.length == ob.COUNT) { + durations = (int[])durations.clone(); + this.durations = durations; + } else { + throw new IllegalArgumentException( + "durations must have one entry per MotionRole" + ); + } + } + + public int duration(ob var1) { + return this.durations[var1.ordinal()]; + } + + public nq withDuration(ob var1, int var2) { + int[] var3 = (int[])this.durations.clone(); + var3[var1.ordinal()] = var2; + return new nq(var3); + } + + public nq lerp(nq var1, float var2) { + int[] var3 = null; + int var4 = 0; + int var5 = 513859802; + + while (true) { + switch (var5) { + case -109267159: + if (var4 < ob.COUNT) { + var5 = 188557094; + } else { + var5 = 1647801211; + } + break; + case 188557094: + var3[var4] = Math.round(this.durations[var4] + (var1.durations[var4] - this.durations[var4]) * var2); + var4++; + var5 = -109267159; + break; + case 513859802: + default: + var3 = new int[ob.COUNT]; + var4 = 0; + var5 = -109267159; + break; + case 1647801211: + return new nq(var3); + } + } + } +} diff --git a/src/main/java/defpackage/nr.java b/src/main/java/defpackage/nr.java new file mode 100644 index 0000000..191aa51 --- /dev/null +++ b/src/main/java/defpackage/nr.java @@ -0,0 +1,53 @@ +package defpackage; + +public enum nr { + MONOCHROME(0.0F, 0.0F), + ANALOGOUS(14.0F, 28.0F), + COMPLEMENT(90.0F, 180.0F), + TRIAD(120.0F, 240.0F), + SPLIT(150.0F, 210.0F), + CUSTOM(Float.NaN, Float.NaN); + + private final float middleOffset; + private final float endOffset; + + nr(float var3, float var4) { + this.middleOffset = var3; + this.endOffset = var4; + } + + public float middleOffset() { + return this.middleOffset; + } + + public float endOffset() { + return this.endOffset; + } + + public boolean drivesStops() { + int var2 = 0; + int var1 = -1089962577; + + while (true) { + switch (var1) { + case -1089962577: + default: + if (this != CUSTOM) { + var1 = 751154450; + } else { + var1 = -912945366; + } + break; + case -912945366: + var2 = 0; + var1 = 677572129; + break; + case 677572129: + return (boolean)((var2) != 0); + case 751154450: + var2 = 1; + var1 = 677572129; + } + } + } +} diff --git a/src/main/java/defpackage/ns.java b/src/main/java/defpackage/ns.java new file mode 100644 index 0000000..af39a80 --- /dev/null +++ b/src/main/java/defpackage/ns.java @@ -0,0 +1,6 @@ +package defpackage; + +public enum ns { + DARK, + LIGHT; +} diff --git a/src/main/java/defpackage/nt.java b/src/main/java/defpackage/nt.java new file mode 100644 index 0000000..06cf7db --- /dev/null +++ b/src/main/java/defpackage/nt.java @@ -0,0 +1,173 @@ +package defpackage; + +public record nt(boolean generated, ns polarity, nr harmony, float tint, float contrastTarget, int lockMask) { + public static final float DEFAULT_TINT = 0.18F; + public static final float DEFAULT_CONTRAST_TARGET = 7.0F; + public static final float MIN_CONTRAST_TARGET = 3.0F; + public static final float MAX_CONTRAST_TARGET = 12.0F; + public static final int NO_LOCKS = 0; + public static final nt DEFAULT = new nt( + (boolean)(((0)) != 0), + ns.DARK, + nr.ANALOGOUS, + 0.18F, + 7.0F, + (672811294 ^ -672811294) + ((672811294 & -672811294) << 1) + ); + private static final float HALF = 0.5F; + + public nt(boolean generated, ns polarity, nr harmony, float tint, float contrastTarget, int lockMask) { + if (polarity == null) { + throw new IllegalArgumentException( + "ThemePalette polarity must not be null" + ); + } + + if (harmony == null) { + throw new IllegalArgumentException( + "ThemePalette harmony must not be null" + ); + } + + this.generated = generated; + this.polarity = polarity; + this.harmony = harmony; + this.tint = tint; + this.contrastTarget = contrastTarget; + this.lockMask = lockMask; + } + + public boolean locked(nx var1) { + int var3 = 0; + int var2 = -897936072; + + while (true) { + switch (var2) { + case -1994974112: + var3 = 0; + var2 = -1709164373; + break; + case -1709164373: + return (boolean)((var3) != 0); + case -897936072: + default: + if ((this.lockMask & bit(var1)) != 0) { + var2 = 223300380; + } else { + var2 = -1994974112; + } + break; + case 223300380: + var3 = 1; + var2 = -1709164373; + } + } + } + + public nt withLock(nx var1, boolean var2) { + int var3 = 0; + int var5 = 0; + int var4 = 223551594; + + while (true) { + switch (var4) { + case 223551594: + default: + if (var2) { + var4 = 1946405220; + } else { + var4 = 1113329316; + } + break; + case 1072729002: + var3 = var5; + return new nt(this.generated, this.polarity, this.harmony, this.tint, this.contrastTarget, var3); + case 1113329316: + var5 = this.lockMask & (bit(var1) ^ (1868516089 | -1868516090) + (1868516089 & -1868516090)); + var4 = 1072729002; + break; + case 1946405220: + var5 = this.lockMask | bit(var1); + var4 = 1072729002; + } + } + } + + public nt withGenerated(boolean var1) { + return new nt(var1, this.polarity, this.harmony, this.tint, this.contrastTarget, this.lockMask); + } + + public nt withPolarity(ns var1) { + return new nt(this.generated, var1, this.harmony, this.tint, this.contrastTarget, this.lockMask); + } + + public nt withHarmony(nr var1) { + return new nt(this.generated, this.polarity, var1, this.tint, this.contrastTarget, this.lockMask); + } + + public nt withActiveHarmony(nr var1) { + nt var2 = null; + int var3 = 1409409133; + + while (true) { + switch (var3) { + case -553534400: + return var2; + case 205917257: + return var2.withLock(nx.ACCENT_MIDDLE, (boolean)((((-1202643686 | 1202643686) + (-1202643686 & 1202643686))) != 0)) + .withLock(nx.ACCENT_END, (boolean)((((-498629281 ^ 498629281) + ((-498629281 & 498629281) << 1))) != 0)); + case 1409409133: + } + + var2 = this.withHarmony(var1); + if (!var1.drivesStops()) { + var3 = -553534400; + } else { + var3 = 205917257; + } + } + } + + public nt withTint(float var1) { + return new nt(this.generated, this.polarity, this.harmony, var1, this.contrastTarget, this.lockMask); + } + + public nt withContrastTarget(float var1) { + return new nt(this.generated, this.polarity, this.harmony, this.tint, var1, this.lockMask); + } + + public nt withLockMask(int var1) { + return new nt(this.generated, this.polarity, this.harmony, this.tint, this.contrastTarget, var1); + } + + public nt lerp(nt var1, float var2) { + nt var4 = null; + int var3 = -619393501; + + while (true) { + switch (var3) { + case -828199972: + return var4; + case -619393501: + default: + if (var2 < 0.5F) { + var3 = 1175441347; + } else { + var3 = -251130304; + } + break; + case -251130304: + var4 = var1; + var3 = -828199972; + break; + case 1175441347: + var4 = this; + var3 = -828199972; + } + } + } + + private static int bit(nx var0) { + return (-2005260823 | 2005260824) + (-2005260823 & 2005260824) << var0.ordinal(); + } +} diff --git a/src/main/java/defpackage/nu.java b/src/main/java/defpackage/nu.java new file mode 100644 index 0000000..bd5830a --- /dev/null +++ b/src/main/java/defpackage/nu.java @@ -0,0 +1,59 @@ +package defpackage; + +public record nu(float[] steps, ny density, float scale) { + public static final float DEFAULT_SCALE = 1.0F; + public static final nu DEFAULT = new nu(od.defaults(), ny.NORMAL, 1.0F); + private static final float HALF = 0.5F; + + public nu(float[] steps, ny density, float scale) { + if (steps == null || steps.length != od.COUNT) { + throw new IllegalArgumentException( + "steps must have one entry per SpacingStep" + ); + } + + if (density == null) { + throw new IllegalArgumentException( + "density must not be null" + ); + } + + steps = (float[])steps.clone(); + this.steps = steps; + this.density = density; + this.scale = scale; + } + + public float step(od var1) { + return this.steps[var1.ordinal()] * this.density.spacingScale() * this.scale; + } + + public nu withDensity(ny var1) { + return new nu(this.steps, var1, this.scale); + } + + public nu withScale(float var1) { + return new nu(this.steps, this.density, var1); + } + + public nu withStep(od var1, float var2) { + float[] var3 = (float[])this.steps.clone(); + var3[var1.ordinal()] = var2; + return new nu(var3, this.density, this.scale); + } + + public nu lerp(nu var1, float var2) { + float[] var3 = new float[od.COUNT]; + + for (int var4 = 0; var4 < od.COUNT; var4++) { + var3[var4] = mix(this.steps[var4], var1.steps[var4], var2); + } + + ny var5 = var2 < 0.5F ? this.density : var1.density; + return new nu(var3, var5, mix(this.scale, var1.scale, var2)); + } + + private static float mix(float var0, float var1, float var2) { + return var0 + (var1 - var0) * var2; + } +} diff --git a/src/main/java/defpackage/nv.java b/src/main/java/defpackage/nv.java new file mode 100644 index 0000000..ab1e9f0 --- /dev/null +++ b/src/main/java/defpackage/nv.java @@ -0,0 +1,67 @@ +package defpackage; + +public record nv(float[] sizes, int[] families, float scale) { + public static final float DEFAULT_SCALE = 1.0F; + public static final float MIN_SIZE = 1.0F; + public static final nv DEFAULT = new nv(oe.defaultSizes(), oe.defaultFamilies(), 1.0F); + private static final float HALF = 0.5F; + + public nv(float[] sizes, int[] families, float scale) { + if (sizes == null || sizes.length != oe.COUNT) { + throw new IllegalArgumentException( + "sizes must have one entry per TextRole" + ); + } + + if (families != null && families.length == oe.COUNT) { + sizes = (float[])sizes.clone(); + families = (int[])families.clone(); + this.sizes = sizes; + this.families = families; + this.scale = scale; + } else { + throw new IllegalArgumentException( + "families must have one entry per TextRole" + ); + } + } + + public float size(oe var1) { + return Math.max(this.sizes[var1.ordinal()] * this.scale, 1.0F); + } + + public oa family(oe var1) { + return oa.byOrdinal(this.families[var1.ordinal()]); + } + + public nv withScale(float var1) { + return new nv(this.sizes, this.families, var1); + } + + public nv withSize(oe var1, float var2) { + float[] var3 = (float[])this.sizes.clone(); + var3[var1.ordinal()] = var2; + return new nv(var3, this.families, this.scale); + } + + public nv withFamily(oe var1, oa var2) { + int[] var3 = (int[])this.families.clone(); + var3[var1.ordinal()] = var2.ordinal(); + return new nv(this.sizes, var3, this.scale); + } + + public nv lerp(nv var1, float var2) { + float[] var3 = new float[oe.COUNT]; + + for (int var4 = 0; var4 < oe.COUNT; var4++) { + var3[var4] = mix(this.sizes[var4], var1.sizes[var4], var2); + } + + int[] var5 = var2 < 0.5F ? this.families : var1.families; + return new nv(var3, var5, mix(this.scale, var1.scale, var2)); + } + + private static float mix(float var0, float var1, float var2) { + return var0 + (var1 - var0) * var2; + } +} diff --git a/src/main/java/defpackage/nw.java b/src/main/java/defpackage/nw.java new file mode 100644 index 0000000..0beee0f --- /dev/null +++ b/src/main/java/defpackage/nw.java @@ -0,0 +1,12 @@ +package defpackage; + +import java.util.List; + +public record nw(String title, List variants, int columns) { + public nw(String title, List variants, int columns) { + variants = List.copyOf(variants); + this.title = title; + this.variants = variants; + this.columns = columns; + } +} diff --git a/src/main/java/defpackage/nx.java b/src/main/java/defpackage/nx.java new file mode 100644 index 0000000..092a915 --- /dev/null +++ b/src/main/java/defpackage/nx.java @@ -0,0 +1,168 @@ +package defpackage; + +import java.util.function.BiConsumer; +import java.util.function.Function; + +public enum nx { + BACKGROUND( + "Background", + "Screen behind the window", + mv::getBackgroundColor, + mv::getBackgroundColor, + mv::setBackgroundColor, + mt::background + ), + SURFACE( + "Surface", + "Default panel fill", + mv::getForegroundColor, + mv::getForegroundColor, + mv::setForegroundColor, + mt::foreground + ), + SURFACE_RAISED( + "Surface raised", + "Fill of surfaces that sit above the panel", + mv::getForegroundLight, + mv::getForegroundLight, + mv::setForegroundLight, + mt::foregroundLight + ), + SURFACE_SUNKEN( + "Surface sunken", + "Fill of recessed areas such as card bodies", + mv::getForegroundDark, + mv::getForegroundDark, + mv::setForegroundDark, + mt::foregroundDark + ), + SURFACE_MUTED( + "Surface muted", + "Fill of inactive controls", + mv::getForegroundGray, + mv::getForegroundGray, + mv::setForegroundGray, + mt::foregroundGray + ), + OUTLINE( + "Outline", + "Thin border around surfaces", + mv::getForegroundStroke, + mv::getForegroundStroke, + mv::setForegroundStroke, + mt::foregroundStroke + ), + OUTLINE_STRONG( + "Outline strong", + "Border of raised surfaces and popups", + mv::getForegroundLightStroke, + mv::getForegroundLightStroke, + mv::setForegroundLightStroke, + mt::foregroundLightStroke + ), + ON_SURFACE( + "Text", + "Primary text and icons", + mv::getBaseWhite, + mv::getBaseWhite, + mv::setWhite, + mt::white + ), + ON_SURFACE_MUTED( + "Text muted", + "Secondary text such as setting descriptions", + mv::getGrayLight, + mv::getBaseGrayLight, + mv::setGrayLight, + mt::grayLight + ), + ON_SURFACE_FAINT( + "Text faint", + "Least important text, hints and placeholders", + mv::getGray, + mv::getBaseGray, + mv::setGray, + mt::gray + ), + ICON_INACTIVE( + "Icon inactive", + "Icons of disabled or unselected items", + mv::getWhiteGray, + mv::getBaseWhiteGray, + mv::setWhiteGray, + mt::whiteGray + ), + ACCENT( + "Accent", + "Start of the accent gradient", + mv::getColor, + mv::getColor, + mv::setColor, + var0 -> var0.accent().start() + ), + ACCENT_MIDDLE( + "Accent middle", + "Middle stop of the accent gradient", + mv::getMiddleColor, + mv::getMiddleColor, + mv::setMiddleColor, + var0 -> var0.accent().middle() + ), + ACCENT_END( + "Accent end", + "End of the accent gradient", + mv::getSecondColor, + mv::getSecondColor, + mv::setSecondColor, + var0 -> var0.accent().end() + ), + FRIEND( + "Friend", + "Highlight used for players marked as friends", + mv::getFriendColor, + mv::getFriendColor, + mv::setFriendColor, + mt::friendColor + ); + + public static final int COUNT = values().length; + private final String label; + private final String description; + private final Function resolver; + private final Function rawResolver; + private final BiConsumer mutator; + private final Function defaultResolver; + + nx(String var3, String var4, Function var5, Function var6, BiConsumer var7, Function var8) { + this.label = var3; + this.description = var4; + this.resolver = var5; + this.rawResolver = var6; + this.mutator = var7; + this.defaultResolver = var8; + } + + public String label() { + return this.label; + } + + public String description() { + return this.description; + } + + public asu from(mv var1) { + return this.resolver.apply(var1); + } + + public asu raw(mv var1) { + return this.rawResolver.apply(var1); + } + + public void apply(mv var1, asu var2) { + this.mutator.accept(var1, var2); + } + + public asu defaultFrom(mv var1) { + return this.defaultResolver.apply(var1.getDefaults()); + } +} diff --git a/src/main/java/defpackage/ny.java b/src/main/java/defpackage/ny.java new file mode 100644 index 0000000..fcf2d18 --- /dev/null +++ b/src/main/java/defpackage/ny.java @@ -0,0 +1,31 @@ +package defpackage; + +import java.util.Locale; + +public enum ny { + COMPACT(1.0F, 1.0F), + NORMAL(1.25F, 1.06F), + COMFORTABLE(1.5F, 1.12F); + + private final String label = this.name().charAt((274470306 ^ -274470306) + ((274470306 & -274470306) << 1)) + + this.name().substring(1).toLowerCase(Locale.ROOT); + private final float spacingScale; + private final float rowScale; + + ny(float var3, float var4) { + this.spacingScale = var3; + this.rowScale = var4; + } + + public String label() { + return this.label; + } + + public float spacingScale() { + return this.spacingScale; + } + + public float rowScale() { + return this.rowScale; + } +} diff --git a/src/main/java/defpackage/nz.java b/src/main/java/defpackage/nz.java new file mode 100644 index 0000000..fcb1cb0 --- /dev/null +++ b/src/main/java/defpackage/nz.java @@ -0,0 +1,91 @@ +package defpackage; + +public enum nz { + FLAT(0.0F, 0.0F), + LOW(4.0F, 0.1F), + RAISED(8.0F, 0.16F), + FLOATING(14.0F, 0.3F), + OVERLAY(22.0F, 0.55F); + + public static final int COUNT = values().length; + private final float softness; + private final float alpha; + + nz(float var3, float var4) { + this.softness = var3; + this.alpha = var4; + } + + public float softness() { + return this.softness; + } + + public float alpha() { + return this.alpha; + } + + public static float[] defaultSoftness() { + nz[] var0 = null; + float[] var1 = null; + int var2 = 0; + int var3 = 667430617; + + while (true) { + switch (var3) { + case 200547147: + return var1; + case 667430617: + default: + var0 = values(); + var1 = new float[var0.length]; + var2 = 0; + var3 = 1653724604; + break; + case 1653724604: + if (var2 < var0.length) { + var3 = 1917533395; + } else { + var3 = 200547147; + } + break; + case 1917533395: + var1[var2] = var0[var2].softness; + var2++; + var3 = 1653724604; + } + } + } + + public static float[] defaultAlpha() { + nz[] var0 = null; + float[] var1 = null; + int var2 = 0; + int var3 = -1699223270; + + while (true) { + switch (var3) { + case -2131351667: + var1[var2] = var0[var2].alpha; + var2++; + var3 = -1668049481; + break; + case -1699223270: + default: + var0 = values(); + var1 = new float[var0.length]; + var2 = 0; + var3 = -1668049481; + break; + case -1668049481: + if (var2 < var0.length) { + var3 = -2131351667; + } else { + var3 = 1111006435; + } + break; + case 1111006435: + return var1; + } + } + } +} diff --git a/src/main/java/defpackage/o.java b/src/main/java/defpackage/o.java new file mode 100644 index 0000000..d4e5e7d --- /dev/null +++ b/src/main/java/defpackage/o.java @@ -0,0 +1,5 @@ +package defpackage; + +public interface o { + byte getType(); +} diff --git a/src/main/java/defpackage/oa.java b/src/main/java/defpackage/oa.java new file mode 100644 index 0000000..d513917 --- /dev/null +++ b/src/main/java/defpackage/oa.java @@ -0,0 +1,51 @@ +package defpackage; + +public enum oa { + REGULAR, + MEDIUM, + SEMIBOLD, + BOLD, + ROUND_BOLD, + ICONS; + + public static final int COUNT = values().length; + private static final oa[] VALUES = values(); + + public gr msdf() { + return switch (this) { + case REGULAR -> gl.REGULAR; + case MEDIUM -> gl.MEDIUM; + case SEMIBOLD -> gl.SEMIBOLD; + case BOLD -> gl.BOLD; + case ROUND_BOLD -> gl.ROUND_BOLD; + case ICONS -> gl.ICONS; + }; + } + + public static oa byOrdinal(int var0) { + int var1 = -916195070; + + while (true) { + switch (var1) { + case -1894567657: + return VALUES[var0]; + case -916195070: + default: + if (var0 >= 0) { + var1 = 912309755; + } else { + var1 = -804300095; + } + break; + case -804300095: + return MEDIUM; + case 912309755: + if (var0 >= VALUES.length) { + var1 = -804300095; + } else { + var1 = -1894567657; + } + } + } + } +} diff --git a/src/main/java/defpackage/ob.java b/src/main/java/defpackage/ob.java new file mode 100644 index 0000000..89be914 --- /dev/null +++ b/src/main/java/defpackage/ob.java @@ -0,0 +1,53 @@ +package defpackage; + +public enum ob { + INSTANT((22415883 | -22415803) + (22415883 & -22415803)), + FAST((1348380355 | -1348380205) + (1348380355 & -1348380205)), + MEDIUM((1390314808 ^ -1390314608) + ((1390314808 & -1390314608) << 1)), + SETTLED((-1835801816 | 1835802066) + (-1835801816 & 1835802066)), + SLOW((-383224020 ^ 383224320) + ((-383224020 & 383224320) << 1)), + DELIBERATE((-2121510015 ^ 2121510465) + ((-2121510015 & 2121510465) << 1)); + + public static final int COUNT = values().length; + private final int baseMillis; + + ob(int var3) { + this.baseMillis = var3; + } + + public int baseMillis() { + return this.baseMillis; + } + + public static int[] defaults() { + ob[] var0 = null; + int[] var1 = null; + int var2 = 0; + int var3 = 631479749; + + while (true) { + switch (var3) { + case -1514802618: + if (var2 < var0.length) { + var3 = -1301606892; + } else { + var3 = 293854271; + } + break; + case -1301606892: + var1[var2] = var0[var2].baseMillis; + var2++; + var3 = -1514802618; + break; + case 293854271: + return var1; + case 631479749: + default: + var0 = values(); + var1 = new int[var0.length]; + var2 = 0; + var3 = -1514802618; + } + } + } +} diff --git a/src/main/java/defpackage/oc.java b/src/main/java/defpackage/oc.java new file mode 100644 index 0000000..601b34c --- /dev/null +++ b/src/main/java/defpackage/oc.java @@ -0,0 +1,29 @@ +package defpackage; + +public enum oc { + WINDOW(9.0F, aso.WINDOW), + PANEL(8.0F, aso.CARD), + CARD(6.0F, aso.CARD), + ROW(5.0F, aso.ROW), + CONTROL(4.0F, aso.CONTROL), + INNER(3.0F, aso.CONTROL), + CHIP(2.0F, aso.CONTROL), + HAIRLINE(1.0F, aso.CONTROL); + + public static final int COUNT = values().length; + private final float base; + private final aso surface; + + oc(float var3, aso var4) { + this.base = var3; + this.surface = var4; + } + + public float base() { + return this.base; + } + + public aso surface() { + return this.surface; + } +} diff --git a/src/main/java/defpackage/od.java b/src/main/java/defpackage/od.java new file mode 100644 index 0000000..0064166 --- /dev/null +++ b/src/main/java/defpackage/od.java @@ -0,0 +1,54 @@ +package defpackage; + +public enum od { + XXS(2.0F), + XS(3.0F), + SM(4.0F), + MD(5.0F), + LG(6.0F), + XL(8.0F), + XXL(12.0F); + + public static final int COUNT = values().length; + private final float base; + + od(float var3) { + this.base = var3; + } + + public float base() { + return this.base; + } + + public static float[] defaults() { + od[] var0 = null; + float[] var1 = null; + int var2 = 0; + int var3 = -2034514525; + + while (true) { + switch (var3) { + case -2034514525: + default: + var0 = values(); + var1 = new float[var0.length]; + var2 = 0; + var3 = 460483646; + break; + case -422518307: + return var1; + case -38739611: + var1[var2] = var0[var2].base; + var2++; + var3 = 460483646; + break; + case 460483646: + if (var2 < var0.length) { + var3 = -38739611; + } else { + var3 = -422518307; + } + } + } + } +} diff --git a/src/main/java/defpackage/oe.java b/src/main/java/defpackage/oe.java new file mode 100644 index 0000000..befa357 --- /dev/null +++ b/src/main/java/defpackage/oe.java @@ -0,0 +1,95 @@ +package defpackage; + +public enum oe { + DISPLAY(22.0F, oa.BOLD), + TITLE(9.0F, oa.SEMIBOLD), + HEADING(8.0F, oa.SEMIBOLD), + BODY(7.0F, oa.MEDIUM), + LABEL(6.5F, oa.MEDIUM), + LABEL_STRONG(6.0F, oa.SEMIBOLD), + CAPTION(6.0F, oa.MEDIUM), + MICRO(5.5F, oa.MEDIUM), + NUMERIC(6.5F, oa.ROUND_BOLD), + ICON(7.0F, oa.ICONS); + + public static final int COUNT = values().length; + private final float baseSize; + private final oa family; + + oe(float var3, oa var4) { + this.baseSize = var3; + this.family = var4; + } + + public float baseSize() { + return this.baseSize; + } + + public oa family() { + return this.family; + } + + public static float[] defaultSizes() { + oe[] var0 = null; + float[] var1 = null; + int var2 = 0; + int var3 = -1581231136; + + while (true) { + switch (var3) { + case -1991369758: + return var1; + case -1815812284: + var1[var2] = var0[var2].baseSize; + var2++; + var3 = 2086041247; + break; + case -1581231136: + default: + var0 = values(); + var1 = new float[var0.length]; + var2 = 0; + var3 = 2086041247; + break; + case 2086041247: + if (var2 < var0.length) { + var3 = -1815812284; + } else { + var3 = -1991369758; + } + } + } + } + + public static int[] defaultFamilies() { + oe[] var0 = null; + int[] var1 = null; + int var2 = 0; + int var3 = 710768425; + + while (true) { + switch (var3) { + case -2044501728: + var1[var2] = var0[var2].family.ordinal(); + var2++; + var3 = 422627299; + break; + case -737816432: + return var1; + case 422627299: + if (var2 < var0.length) { + var3 = -2044501728; + } else { + var3 = -737816432; + } + break; + case 710768425: + default: + var0 = values(); + var1 = new int[var0.length]; + var2 = 0; + var3 = 422627299; + } + } + } +} diff --git a/src/main/java/defpackage/of.java b/src/main/java/defpackage/of.java new file mode 100644 index 0000000..9c8fc61 --- /dev/null +++ b/src/main/java/defpackage/of.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +public interface of { + asu read(mv var1); +} diff --git a/src/main/java/defpackage/og.java b/src/main/java/defpackage/og.java new file mode 100644 index 0000000..d3a914f --- /dev/null +++ b/src/main/java/defpackage/og.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +public interface og { + void write(mv var1, asu var2); +} diff --git a/src/main/java/defpackage/oh.java b/src/main/java/defpackage/oh.java new file mode 100644 index 0000000..8666b8e --- /dev/null +++ b/src/main/java/defpackage/oh.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +public interface oh { + boolean read(mv var1); +} diff --git a/src/main/java/defpackage/oi.java b/src/main/java/defpackage/oi.java new file mode 100644 index 0000000..c5ad106 --- /dev/null +++ b/src/main/java/defpackage/oi.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +public interface oi { + void write(mv var1, boolean var2); +} diff --git a/src/main/java/defpackage/oj.java b/src/main/java/defpackage/oj.java new file mode 100644 index 0000000..513d4f2 --- /dev/null +++ b/src/main/java/defpackage/oj.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +public interface oj { + float read(mv var1); +} diff --git a/src/main/java/defpackage/ok.java b/src/main/java/defpackage/ok.java new file mode 100644 index 0000000..32378d1 --- /dev/null +++ b/src/main/java/defpackage/ok.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +public interface ok { + void write(mv var1, float var2); +} diff --git a/src/main/java/defpackage/ol.java b/src/main/java/defpackage/ol.java new file mode 100644 index 0000000..f2181a4 --- /dev/null +++ b/src/main/java/defpackage/ol.java @@ -0,0 +1,9 @@ +package defpackage; + +public enum ol { + SLIDER, + COLOR, + FLAG, + CHOICE, + ACTION; +} diff --git a/src/main/java/defpackage/om.java b/src/main/java/defpackage/om.java new file mode 100644 index 0000000..1b71ae8 --- /dev/null +++ b/src/main/java/defpackage/om.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +public interface om { + String read(mv var1); +} diff --git a/src/main/java/defpackage/on.java b/src/main/java/defpackage/on.java new file mode 100644 index 0000000..4a75f7e --- /dev/null +++ b/src/main/java/defpackage/on.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +public interface on { + void write(mv var1, String var2); +} diff --git a/src/main/java/defpackage/oo.java b/src/main/java/defpackage/oo.java new file mode 100644 index 0000000..ccb62c0 --- /dev/null +++ b/src/main/java/defpackage/oo.java @@ -0,0 +1,265 @@ +package defpackage; + +public final class oo { + private static final float FLOAT_EPSILON = 1.0E-4F; + private final ol kind; + private final or group; + private final String label; + private final String description; + private final float min; + private final float max; + private final float step; + private final String[] options; + private final nx role; + private final oj floatReader; + private final ok floatWriter; + private final oj floatDefault; + private final of colorReader; + private final og colorWriter; + private final of colorDefault; + private final oh flagReader; + private final oi flagWriter; + private final oh flagDefault; + private final om textReader; + private final on textWriter; + private final om textDefault; + private final Runnable action; + private boolean tileDriven; + + private oo( + ol var1, + or var2, + String var3, + String var4, + float var5, + float var6, + float var7, + String[] var8, + nx var9, + oj var10, + ok var11, + oj var12, + of var13, + og var14, + of var15, + oh var16, + oi var17, + oh var18, + om var19, + on var20, + om var21, + Runnable var22 + ) { + this.kind = var1; + this.group = var2; + this.label = var3; + this.description = var4; + this.min = var5; + this.max = var6; + this.step = var7; + this.options = var8; + this.role = var9; + this.floatReader = var10; + this.floatWriter = var11; + this.floatDefault = var12; + this.colorReader = var13; + this.colorWriter = var14; + this.colorDefault = var15; + this.flagReader = var16; + this.flagWriter = var17; + this.flagDefault = var18; + this.textReader = var19; + this.textWriter = var20; + this.textDefault = var21; + this.action = var22; + } + + public static oo slider(or var0, String var1, String var2, float var3, float var4, float var5, oj var6, ok var7, oj var8) { + return new oo(ol.SLIDER, var0, var1, var2, var3, var4, var5, null, null, var6, var7, var8, null, null, null, null, null, null, null, null, null, null); + } + + public static oo color(or var0, String var1, String var2, of var3, og var4, of var5) { + return new oo(ol.COLOR, var0, var1, var2, 0.0F, 0.0F, 0.0F, null, null, null, null, null, var3, var4, var5, null, null, null, null, null, null, null); + } + + public static oo paletteColor(or var0, nx var1) { + og var2 = (var1x, var2x) -> { + int var3 = -1441758333; + + while (true) { + switch (var3) { + case -2024922741: + if (var1 != nx.ACCENT) { + var3 = 740936937; + } else { + var3 = 960155927; + } + break; + case -1441758333: + default: + var1.apply(var1x, var2x); + if (var1x.getPalette().generated()) { + var3 = -2024922741; + } else { + var3 = 960155927; + } + break; + case 740936937: + var1x.setPalette(var1x.getPalette().withLock(var1, (boolean)((((-1658120589 ^ 1658120590) + ((-1658120589 & 1658120590) << 1))) != 0))); + var3 = 960155927; + break; + case 960155927: + nd.apply(var1x); + return; + } + } + }; + return new oo( + ol.COLOR, + var0, + var1.label(), + var1.description(), + 0.0F, + 0.0F, + 0.0F, + null, + var1, + null, + null, + null, + var1::raw, + var2, + var1::defaultFrom, + null, + null, + null, + null, + null, + null, + null + ); + } + + public static oo flag(or var0, String var1, String var2, oh var3, oi var4, oh var5) { + return new oo(ol.FLAG, var0, var1, var2, 0.0F, 0.0F, 0.0F, null, null, null, null, null, null, null, null, var3, var4, var5, null, null, null, null); + } + + public static oo choice(or var0, String var1, String var2, String[] var3, om var4, on var5, om var6) { + return new oo(ol.CHOICE, var0, var1, var2, 0.0F, 0.0F, 0.0F, var3, null, null, null, null, null, null, null, null, null, null, var4, var5, var6, null); + } + + public static oo action(or var0, String var1, String var2, Runnable var3) { + return new oo(ol.ACTION, var0, var1, var2, 0.0F, 0.0F, 0.0F, null, null, null, null, null, null, null, null, null, null, null, null, null, null, var3); + } + + public boolean isTileDriven() { + return this.tileDriven; + } + + void markTileDriven() { + this.tileDriven = (boolean)(((1)) != 0); + } + + public ol kind() { + return this.kind; + } + + public or group() { + return this.group; + } + + public String label() { + return this.label; + } + + public String description() { + return this.description; + } + + public float min() { + return this.min; + } + + public float max() { + return this.max; + } + + public float step() { + return this.step; + } + + public String[] options() { + return this.options; + } + + public nx role() { + return this.role; + } + + public float readFloat(mv var1) { + return this.floatReader.read(var1); + } + + public void writeFloat(mv var1, float var2) { + this.floatWriter.write(var1, var2); + } + + public asu readColor(mv var1) { + return this.colorReader.read(var1); + } + + public void writeColor(mv var1, asu var2) { + this.colorWriter.write(var1, var2); + } + + public boolean readFlag(mv var1) { + return this.flagReader.read(var1); + } + + public void writeFlag(mv var1, boolean var2) { + this.flagWriter.write(var1, var2); + } + + public String readText(mv var1) { + return this.textReader.read(var1); + } + + public void writeText(mv var1, String var2) { + this.textWriter.write(var1, var2); + } + + public void run() { + this.action.run(); + } + + public boolean isModified(mv var1) { + return (boolean)(((switch (this.kind) { + case SLIDER -> Math.abs(this.floatReader.read(var1) - this.floatDefault.read(var1)) > 1.0E-4F + ? 1: 0; + case COLOR -> this.colorReader.read(var1).getRGB() != this.colorDefault.read(var1).getRGB() + ? 1: 0; + case FLAG -> this.flagReader.read(var1) != this.flagDefault.read(var1) + ? 1: 0; + case CHOICE -> !this.textReader.read(var1).equals(this.textDefault.read(var1)) + ? 1: 0; + case ACTION -> 0; + })) != 0); + } + + public void revert(mv var1) { + switch (this.kind) { + case SLIDER: + this.floatWriter.write(var1, this.floatDefault.read(var1)); + break; + case COLOR: + this.colorWriter.write(var1, this.colorDefault.read(var1)); + break; + case FLAG: + this.flagWriter.write(var1, this.flagDefault.read(var1)); + break; + case CHOICE: + this.textWriter.write(var1, this.textDefault.read(var1)); + case ACTION: + } + } +} diff --git a/src/main/java/defpackage/op.java b/src/main/java/defpackage/op.java new file mode 100644 index 0000000..30640e7 --- /dev/null +++ b/src/main/java/defpackage/op.java @@ -0,0 +1,1809 @@ +package defpackage; + +import java.lang.constant.Constable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Set; + +public final class op { + private static final float UNIT_MIN = 0.0F; + private static final float UNIT_MAX = 1.0F; + private static final float UNIT_STEP = 0.05F; + private static final float FINE_STEP = 0.02F; + private static final float SIGNED_MIN = -1.0F; + private static final float SCALE_MIN = 0.5F; + private static final float SCALE_MAX = 2.0F; + private static final float SCALE_STEP = 0.05F; + private static final float ALPHA_SCALE_MAX = 2.0F; + private static final float THICKNESS_MIN = 0.5F; + private static final float THICKNESS_MAX = 4.0F; + private static final float THICKNESS_STEP = 0.1F; + private static final float SQUIRCLE_MIN = 2.0F; + private static final float SQUIRCLE_MAX = 8.0F; + private static final float SQUIRCLE_STEP = 0.1F; + private static final float BEVEL_WIDTH_MAX = 0.25F; + private static final float BEVEL_WIDTH_STEP = 0.01F; + private static final float GAIN_MAX = 3.0F; + private static final float ANGLE_MAX = 360.0F; + private static final float ANGLE_STEP = 5.0F; + private static final float GLOW_RADIUS_MAX = 12.0F; + private static final float GLOW_RADIUS_STEP = 0.1F; + private static final float TEXT_GLOW_RADIUS_MAX = 8.0F; + private static final float EXPONENT_MIN = 0.2F; + private static final float EXPONENT_MAX = 4.0F; + private static final float INTENSITY_MAX = 2.0F; + private static final float SWEEP_SPEED_MAX = 2.0F; + private static final float SHADOW_SOFT_MAX = 24.0F; + private static final float SHADOW_SOFT_STEP = 0.5F; + private static final float HOVER_LIFT_MAX = 4.0F; + private static final float HOVER_LIFT_STEP = 0.1F; + private static final float SPEED_MIN = 0.25F; + private static final float SPEED_MAX = 3.0F; + private static final float DURATION_STEP = 10.0F; + private static final float DURATION_MIN_FACTOR = 0.5F; + private static final float DURATION_MAX_FACTOR = 2.0F; + private static final float TEXT_SIZE_MIN = 4.0F; + private static final float TEXT_SIZE_MAX = 24.0F; + private static final float TEXT_SIZE_STEP = 0.5F; + private static final float SPACING_MIN = 0.0F; + private static final float SPACING_MAX = 32.0F; + private static final float SPACING_STEP = 0.5F; + private static final float ROLE_SCALE_MAX = 3.0F; + private static final float TINT_MAX = 0.6F; + private static final float TINT_STEP = 0.01F; + private static final float CONTRAST_STEP = 0.5F; + private static final float BACKDROP_SPEED_MAX = 3.0F; + private static final float BACKDROP_SCALE_MIN = 0.25F; + private static final float BACKDROP_SCALE_MAX = 4.0F; + private static final String TIER_AUTO = "Auto"; + private static final String LABEL_AUTO_PALETTE = "Auto palette"; + private static final String LABEL_POLARITY = "Polarity"; + private static final String LABEL_HARMONY = "Harmony"; + private static final String LABEL_NEUTRAL_TINT = "Neutral tint"; + private static final String LABEL_TEXT_CONTRAST = "Text contrast"; + private static final String LABEL_RAMP_ANGLE = "Ramp angle"; + private static final String LABEL_BACKDROP_MODE = "Pattern"; + private static final String LABEL_BACKDROP_INTENSITY = "Intensity"; + private static final String LABEL_BACKDROP_SPEED = "Speed"; + private static final String LABEL_BACKDROP_SCALE = "Scale"; + private static final String LABEL_FROST = "Frost bias"; + private static final String LABEL_REFRACTION = "Refraction bias"; + private static final String LABEL_TINT = "Tint bias"; + private static final String LABEL_BEVEL_DEPTH = "Bevel depth"; + private static final String LABEL_BEVEL_WIDTH = "Bevel width"; + private static final String LABEL_RIM_GAIN = "Rim gain"; + private static final String LABEL_FILL_ALPHA = "Fill opacity"; + private static final String LABEL_BORDER_ALPHA = "Border opacity"; + private static final String LABEL_CONTRAST = "Backdrop contrast"; + private static final String LABEL_SPECULAR = "Specular"; + private static final String LABEL_LIGHT_ANGLE = "Light angle"; + private static final String LABEL_DISPERSION = "Dispersion"; + private static final String LABEL_DEPTH = "Inner depth"; + private static final String LABEL_NEON_INTENSITY = "Neon intensity"; + private static final String LABEL_NEON_RADIUS = "Neon radius"; + private static final String LABEL_GLOW_EXPONENT = "Falloff"; + private static final String LABEL_RIM_TOP = "Rim top"; + private static final String LABEL_RIM_BOTTOM = "Rim bottom"; + private static final String LABEL_GRADIENT_BORDER = "Gradient border"; + private static final String LABEL_GRADIENT_ANGLE = "Gradient angle"; + private static final String LABEL_ACTIVE_GLOW = "Active glow"; + private static final String LABEL_ACTIVE_GLOW_RADIUS = "Active glow radius"; + private static final String LABEL_TEXT_GLOW = "Text glow"; + private static final String LABEL_TEXT_GLOW_RADIUS = "Text glow radius"; + private static final String LABEL_TEXT_GLOW_COLOR = "Text glow color"; + private static final String LABEL_SWEEP_SPEED = "Sweep speed"; + private static final String LABEL_SWEEP_LENGTH = "Sweep length"; + private static final String LABEL_SWEEP_INTENSITY = "Sweep intensity"; + private static final String LABEL_RADIUS = "Corner radius"; + private static final String LABEL_BORDER_THICKNESS = "Border thickness"; + private static final String LABEL_SQUIRCLE = "Squircle"; + private static final String LABEL_DIVIDER = "Divider"; + private static final String LABEL_SHADOW_SOFTNESS = "Shadow softness"; + private static final String LABEL_SHADOW_STRENGTH = "Shadow strength"; + private static final String LABEL_HOVER_LIFT = "Hover lift"; + private static final String LABEL_ELEVATION_SOFTNESS = "Elevation softness"; + private static final String LABEL_ELEVATION_STRENGTH = "Elevation strength"; + private static final String LABEL_SPEED = "Animation speed"; + private static final String LABEL_TEXT_SCALE = "Text scale"; + private static final String LABEL_DENSITY = "Density"; + private static final String LABEL_SPACING_SCALE = "Spacing scale"; + private static final String SUFFIX_SIZE = " size"; + private static final String SUFFIX_FONT = " font"; + private static final String SUFFIX_RADIUS = " radius"; + private static final String SUFFIX_NEON = " neon"; + private static final String SUFFIX_GLASS = " glass"; + private static final String SUFFIX_SHADOW = " shadow"; + private static final String SUFFIX_SHADOW_ALPHA = " shadow opacity"; + private static final String DESC_AUTO_PALETTE = "Derive every unlocked colour role from the accent instead of setting them by hand"; + private static final String DESC_POLARITY = "Whether generated surfaces are dark or light"; + private static final String DESC_HARMONY = "How the middle and end accent stops follow the accent hue"; + private static final String DESC_NEUTRAL_TINT = "How much of the accent hue bleeds into generated neutrals"; + private static final String DESC_TEXT_CONTRAST = "Minimum WCAG contrast the generator keeps between text and surface"; + private static final String DESC_RAMP_ANGLE = "Direction the accent gradient runs across a surface"; + private static final String DESC_BACKDROP_MODE = "Animated shader painted behind the window"; + private static final String DESC_BACKDROP_INTENSITY = "How strongly the pattern shows through"; + private static final String DESC_BACKDROP_SPEED = "How fast the pattern animates"; + private static final String DESC_BACKDROP_SCALE = "Size of the pattern features"; + private static final String DESC_SIZE_PREFIX = "Base size of the "; + private static final String DESC_SIZE_SUFFIX = " text role"; + private static final String DESC_FONT_PREFIX = "Font family of the "; + private static final String DESC_FONT_SUFFIX = " text role"; + private static final String DESC_SPACING_PREFIX = "Base value of the "; + private static final String DESC_SPACING_SUFFIX = " spacing step"; + private static final String DESC_DURATION_PREFIX = "Base duration of the "; + private static final String DESC_DURATION_SUFFIX = " motion role"; + private static final String DESC_SHADOW_PREFIX = "Shadow softness of the "; + private static final String DESC_SHADOW_ALPHA_PREFIX = "Shadow opacity of the "; + private static final String DESC_LEVEL_SUFFIX = " elevation level"; + private static final String DESC_ROLE_RADIUS_PREFIX = "Corner radius of "; + private static final String DESC_ROLE_RADIUS_SUFFIX = " surfaces relative to the global radius"; + private static final String DESC_ROLE_NEON_PREFIX = "Neon intensity of "; + private static final String DESC_ROLE_NEON_SUFFIX = " surfaces relative to the global intensity"; + private static final String DESC_ROLE_TIER_PREFIX = "How "; + private static final String DESC_ROLE_TIER_SUFFIX = " surfaces react to Liquid Glass"; + private static final nx[] QUICK_ACCENT_ROLES; + private static final nx[] QUICK_FULL_ROLES; + private static final String[] QUICK_FULL_SLIDERS; + private static List registry; + private static List quickAccent; + private static List quickFull; + private static final Set TILE_DRIVEN; + + private op() { + } + + public static List all() { + List var0 = null; + int var1 = 383100134; + + while (true) { + switch (var1) { + case 383100134: + default: + if (registry == null) { + var1 = 1288695312; + } else { + var1 = 1731274667; + } + break; + case 1288695312: + var0 = new ArrayList(); + palette(var0); + accent(var0); + backdrop(var0); + glass(var0); + glow(var0); + shape(var0); + depth(var0); + motion(var0); + typography(var0); + spacing(var0); + surfaces(var0); + markTileDriven(var0); + registry = Collections.unmodifiableList(var0); + var1 = 1731274667; + break; + case 1731274667: + return registry; + } + } + } + + public static List quickEdit(boolean var0) { + int var1 = 1147110486; + + while (true) { + switch (var1) { + case -528570691: + quickFull = collectQuick(QUICK_FULL_ROLES, QUICK_FULL_SLIDERS); + var1 = 91174092; + break; + case 91174092: + return quickFull; + case 544376764: + return quickAccent; + case 544387209: + if (quickAccent == null) { + var1 = 585312990; + } else { + var1 = 544376764; + } + break; + case 585312990: + quickAccent = collectQuick(QUICK_ACCENT_ROLES, new String[0]); + var1 = 544376764; + break; + case 701080748: + if (quickFull == null) { + var1 = -528570691; + } else { + var1 = 91174092; + } + break; + case 1147110486: + default: + if (var0) { + var1 = 701080748; + } else { + var1 = 544387209; + } + } + } + } + + private static List collectQuick(nx[] var0, String[] var1) { + ArrayList var2 = null; + Constable var3 = null; + int var4 = 0; + int var5 = 0; + Constable var6 = null; + Iterator var7 = null; + oo var8 = null; + int var9 = -927380495; + + while (true) { + switch (var9) { + case -1663634379: + var2.add(var8); + var9 = 183038014; + break; + case -1418193071: + var9 = -1004331774; + break; + case -1246788470: + var8 = (oo)var7.next(); + if (var8.kind() == ol.COLOR) { + var9 = 1792040551; + } else { + var9 = 1735741779; + } + break; + case -1004331774: + if (var7.hasNext()) { + var9 = -29820272; + } else { + var9 = -360317122; + } + break; + case -927380495: + default: + var2 = new ArrayList(); + var3 = var0; + var4 = ((Object[])var3).length; + var5 = 0; + var9 = 48030838; + break; + case -848720680: + var6 = ((Object[])var3)[var5]; + var7 = all().iterator(); + var9 = -1004331774; + break; + case -650170389: + if (var7.hasNext()) { + var9 = -1246788470; + } else { + var9 = 183038014; + } + break; + case -360317122: + var5++; + var9 = 217179214; + break; + case -62534082: + var2.add(var8); + var9 = -360317122; + break; + case -29820272: + var8 = (oo)var7.next(); + if (var8.kind() == ol.SLIDER) { + var9 = 1589970343; + } else { + var9 = -1418193071; + } + break; + case 48030838: + if (var5 < var4) { + var9 = 1802754918; + } else { + var9 = 1793418714; + } + break; + case 183038014: + var5++; + var9 = 48030838; + break; + case 217179214: + if (var5 < var4) { + var9 = -848720680; + } else { + var9 = 2081008676; + } + break; + case 1589970343: + if (var8.label().equals(var6)) { + var9 = -62534082; + } else { + var9 = -1418193071; + } + break; + case 1735741779: + var9 = -650170389; + break; + case 1792040551: + if (var8.role() == var6) { + var9 = -1663634379; + } else { + var9 = 1735741779; + } + break; + case 1793418714: + var3 = var1; + var4 = ((Object[])var3).length; + var5 = 0; + var9 = 217179214; + break; + case 1802754918: + var6 = ((Object[])var3)[var5]; + var7 = all().iterator(); + var9 = -650170389; + break; + case 2081008676: + return Collections.unmodifiableList(var2); + } + } + } + + private static void palette(List var0) { + nx[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = -111125603; + + while (true) { + switch (var5) { + case -1894367254: + return; + case -1339035648: + var5 = 569772923; + break; + case -1268682958: + var0.add(oo.paletteColor(or.COLOUR, (nx)var4)); + var5 = 569772923; + break; + case -1025797126: + var4 = var1[var3]; + if (isAccentStop((nx)var4)) { + var5 = -1339035648; + } else { + var5 = -1268682958; + } + break; + case -111125603: + default: + var0.add( + oo.flag( + or.COLOUR, + "Auto palette", + "Derive every unlocked colour role from the accent instead of setting them by hand", + var0x -> var0x.getPalette().generated(), + (var0x, var1x) -> { + nt var2x = null; + int var3x = -471550318; + + while (true) { + switch (var3x) { + case -1984406556: + var0x.setPalette(var2x); + nd.apply(var0x); + return; + case -845239546: + if (!var0x.getPalette().generated()) { + var3x = 2005599605; + } else { + var3x = -1984406556; + } + break; + case -471550318: + default: + var2x = var0x.getPalette().withGenerated(var1x); + if (var1x) { + var3x = -845239546; + } else { + var3x = -1984406556; + } + break; + case 2005599605: + var2x = var2x.withPolarity(nd.suggestPolarity(var0x)); + var3x = -1984406556; + } + } + }, + var0x -> var0x.getDefaultPalette().generated() + ) + ); + var0.add( + oo.choice( + or.COLOUR, + "Polarity", + "Whether generated surfaces are dark or light", + names(ns.values()), + var0x -> titleCase(var0x.getPalette().polarity().name()), + (var0x, var1x) -> { + var0x.setPalette(var0x.getPalette().withPolarity(byTitle(ns.values(), var1x, var0x.getPalette().polarity()))); + nd.apply(var0x); + }, + var0x -> titleCase(var0x.getDefaultPalette().polarity().name()) + ) + ); + var0.add( + oo.choice( + or.COLOUR, + "Harmony", + "How the middle and end accent stops follow the accent hue", + names(nr.values()), + var0x -> titleCase(var0x.getPalette().harmony().name()), + (var0x, var1x) -> { + var0x.setPalette(var0x.getPalette().withActiveHarmony(byTitle(nr.values(), var1x, var0x.getPalette().harmony()))); + nd.apply(var0x); + }, + var0x -> titleCase(var0x.getDefaultPalette().harmony().name()) + ) + ); + var0.add( + oo.slider( + or.COLOUR, + "Neutral tint", + "How much of the accent hue bleeds into generated neutrals", + 0.0F, + 0.6F, + 0.01F, + var0x -> var0x.getPalette().tint(), + (var0x, var1x) -> { + var0x.setPalette(var0x.getPalette().withTint(var1x)); + nd.apply(var0x); + }, + var0x -> var0x.getDefaultPalette().tint() + ) + ); + var0.add( + oo.slider( + or.COLOUR, + "Text contrast", + "Minimum WCAG contrast the generator keeps between text and surface", + 3.0F, + 12.0F, + 0.5F, + var0x -> var0x.getPalette().contrastTarget(), + (var0x, var1x) -> { + var0x.setPalette(var0x.getPalette().withContrastTarget(var1x)); + nd.apply(var0x); + }, + var0x -> var0x.getDefaultPalette().contrastTarget() + ) + ); + var1 = nx.values(); + var2 = var1.length; + var3 = 0; + var5 = 410907683; + break; + case 410907683: + if (var3 < var2) { + var5 = -1025797126; + } else { + var5 = -1894367254; + } + break; + case 569772923: + var3++; + var5 = 410907683; + } + } + } + + private static void accent(List var0) { + var0.add(oo.paletteColor(or.COLOUR, nx.ACCENT)); + var0.add(oo.paletteColor(or.COLOUR, nx.ACCENT_MIDDLE)); + var0.add(oo.paletteColor(or.COLOUR, nx.ACCENT_END)); + var0.add( + oo.slider( + or.COLOUR, + "Ramp angle", + "Direction the accent gradient runs across a surface", + 0.0F, + 360.0F, + 5.0F, + var0x -> var0x.getAccent().angle(), + (var0x, var1) -> var0x.setAccent(var0x.getAccent().withAngle(var1)), + var0x -> var0x.getDefaultAccent().angle() + ) + ); + } + + private static void backdrop(List var0) { + var0.add( + oo.choice( + or.BACKDROP, + "Pattern", + "Animated shader painted behind the window", + names(nk.values()), + var0x -> titleCase(var0x.getBackdrop().mode().name()), + (var0x, var1) -> var0x.setBackdrop( + new nl( + byTitle(nk.values(), var1, var0x.getBackdrop().mode()), + var0x.getBackdrop().intensity(), + var0x.getBackdrop().speed(), + var0x.getBackdrop().scale() + ) + ), + var0x -> titleCase(var0x.getDefaultBackdrop().mode().name()) + ) + ); + var0.add( + oo.slider( + or.BACKDROP, + "Intensity", + "How strongly the pattern shows through", + 0.0F, + 1.0F, + 0.02F, + var0x -> var0x.getBackdrop().intensity(), + (var0x, var1) -> var0x.setBackdrop(var0x.getBackdrop().withIntensity(var1)), + var0x -> var0x.getDefaultBackdrop().intensity() + ) + ); + var0.add( + oo.slider( + or.BACKDROP, + "Speed", + "How fast the pattern animates", + 0.0F, + 3.0F, + 0.05F, + var0x -> var0x.getBackdrop().speed(), + (var0x, var1) -> var0x.setBackdrop(new nl(var0x.getBackdrop().mode(), var0x.getBackdrop().intensity(), var1, var0x.getBackdrop().scale())), + var0x -> var0x.getDefaultBackdrop().speed() + ) + ); + var0.add( + oo.slider( + or.BACKDROP, + "Scale", + "Size of the pattern features", + 0.25F, + 4.0F, + 0.05F, + var0x -> var0x.getBackdrop().scale(), + (var0x, var1) -> var0x.setBackdrop(new nl(var0x.getBackdrop().mode(), var0x.getBackdrop().intensity(), var0x.getBackdrop().speed(), var1)), + var0x -> var0x.getDefaultBackdrop().scale() + ) + ); + } + + private static void glass(List var0) { + var0.add( + oo.slider( + or.MATERIAL, + "Frost bias", + "Added to the Frost slider of the Interface module", + 0.0F, + 1.0F, + 0.05F, + var0x -> var0x.getGlass().frost(), + (var0x, var1) -> var0x.setGlass(var0x.getGlass().withOptics(var1, var0x.getGlass().refraction(), var0x.getGlass().tint())), + var0x -> var0x.getDefaultGlass().frost() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Refraction bias", + "Added to the Refraction slider of the Interface module", + 0.0F, + 1.0F, + 0.05F, + var0x -> var0x.getGlass().refraction(), + (var0x, var1) -> var0x.setGlass(var0x.getGlass().withOptics(var0x.getGlass().frost(), var1, var0x.getGlass().tint())), + var0x -> var0x.getDefaultGlass().refraction() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Tint bias", + "Added to the Tint slider: negative darkens the pane, positive lightens it", + -1.0F, + 1.0F, + 0.05F, + var0x -> var0x.getGlass().tint(), + (var0x, var1) -> var0x.setGlass(var0x.getGlass().withOptics(var0x.getGlass().frost(), var0x.getGlass().refraction(), var1)), + var0x -> var0x.getDefaultGlass().tint() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Bevel depth", + "How strongly the pane edge bends the backdrop", + 0.0F, + 1.0F, + 0.02F, + var0x -> var0x.getGlass().bevelDepth(), + (var0x, var1) -> var0x.setGlass(var0x.getGlass().withBevel(var1, var0x.getGlass().bevelWidth(), var0x.getGlass().rimGain())), + var0x -> var0x.getDefaultGlass().bevelDepth() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Bevel width", + "Width of the bent band along the edge", + 0.0F, + 0.25F, + 0.01F, + var0x -> var0x.getGlass().bevelWidth(), + (var0x, var1) -> var0x.setGlass(var0x.getGlass().withBevel(var0x.getGlass().bevelDepth(), var1, var0x.getGlass().rimGain())), + var0x -> var0x.getDefaultGlass().bevelWidth() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Rim gain", + "Brightness of the bright line on the pane edge", + 0.0F, + 3.0F, + 0.05F, + var0x -> var0x.getGlass().rimGain(), + (var0x, var1) -> var0x.setGlass(var0x.getGlass().withBevel(var0x.getGlass().bevelDepth(), var0x.getGlass().bevelWidth(), var1)), + var0x -> var0x.getDefaultGlass().rimGain() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Fill opacity", + "Opacity multiplier of glass surfaces", + 0.0F, + 2.0F, + 0.05F, + var0x -> var0x.getGlass().fillAlphaScale(), + (var0x, var1) -> var0x.setGlass(var0x.getGlass().withSurfaceAlpha(var1, var0x.getGlass().borderAlphaScale())), + var0x -> var0x.getDefaultGlass().fillAlphaScale() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Border opacity", + "Opacity multiplier of glass borders", + 0.0F, + 2.0F, + 0.05F, + var0x -> var0x.getGlass().borderAlphaScale(), + (var0x, var1) -> var0x.setGlass(var0x.getGlass().withSurfaceAlpha(var0x.getGlass().fillAlphaScale(), var1)), + var0x -> var0x.getDefaultGlass().borderAlphaScale() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Backdrop contrast", + "How far the backdrop luma is compressed to keep text readable", + 0.0F, + 1.0F, + 0.02F, + var0x -> var0x.getGlass().contrast(), + (var0x, var1) -> var0x.setGlass( + var0x.getGlass() + .withMaterial(var1, var0x.getGlass().specular(), var0x.getGlass().lightAngle(), var0x.getGlass().dispersion(), var0x.getGlass().depth()) + ), + var0x -> var0x.getDefaultGlass().contrast() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Specular", + "Strength of the highlight from the virtual light source", + 0.0F, + 2.0F, + 0.05F, + var0x -> var0x.getGlass().specular(), + (var0x, var1) -> var0x.setGlass( + var0x.getGlass() + .withMaterial(var0x.getGlass().contrast(), var1, var0x.getGlass().lightAngle(), var0x.getGlass().dispersion(), var0x.getGlass().depth()) + ), + var0x -> var0x.getDefaultGlass().specular() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Light angle", + "Direction the virtual light comes from, in degrees", + 0.0F, + 360.0F, + 5.0F, + var0x -> var0x.getGlass().lightAngle(), + (var0x, var1) -> var0x.setGlass( + var0x.getGlass() + .withMaterial(var0x.getGlass().contrast(), var0x.getGlass().specular(), var1, var0x.getGlass().dispersion(), var0x.getGlass().depth()) + ), + var0x -> var0x.getDefaultGlass().lightAngle() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Dispersion", + "Chromatic split of the refracted backdrop", + 0.0F, + 1.0F, + 0.05F, + var0x -> var0x.getGlass().dispersion(), + (var0x, var1) -> var0x.setGlass( + var0x.getGlass() + .withMaterial(var0x.getGlass().contrast(), var0x.getGlass().specular(), var0x.getGlass().lightAngle(), var1, var0x.getGlass().depth()) + ), + var0x -> var0x.getDefaultGlass().dispersion() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Inner depth", + "Inner shadow along the edge that gives the pane thickness", + 0.0F, + 1.0F, + 0.05F, + var0x -> var0x.getGlass().depth(), + (var0x, var1) -> var0x.setGlass( + var0x.getGlass() + .withMaterial(var0x.getGlass().contrast(), var0x.getGlass().specular(), var0x.getGlass().lightAngle(), var0x.getGlass().dispersion(), var1) + ), + var0x -> var0x.getDefaultGlass().depth() + ) + ); + } + + private static void glow(List var0) { + var0.add( + oo.slider( + or.MATERIAL, + "Neon intensity", + "Master brightness of the glowing rim", + 0.0F, + 2.0F, + 0.05F, + var0x -> var0x.getEffects().neonIntensity(), + (var0x, var1) -> var0x.setEffects(var0x.getEffects().withNeon(var1, var0x.getEffects().neonRadius())), + var0x -> var0x.getDefaultEffects().neonIntensity() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Neon radius", + "How far the rim glow spreads", + 0.0F, + 12.0F, + 0.1F, + var0x -> var0x.getEffects().neonRadius(), + (var0x, var1) -> var0x.setEffects(var0x.getEffects().withNeon(var0x.getEffects().neonIntensity(), var1)), + var0x -> var0x.getDefaultEffects().neonRadius() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Falloff", + "Curve of the glow: lower is softer, higher is tighter", + 0.2F, + 4.0F, + 0.05F, + var0x -> var0x.getEffects().glowExponent(), + (var0x, var1) -> var0x.setEffects( + var0x.getEffects() + .withRim( + var0x.getEffects().neonIntensity(), + var0x.getEffects().neonRadius(), + var1, + var0x.getEffects().rimTopAlpha(), + var0x.getEffects().rimBottomAlpha() + ) + ), + var0x -> var0x.getDefaultEffects().glowExponent() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Rim top", + "Opacity of the rim on the lit side", + 0.0F, + 1.0F, + 0.02F, + var0x -> var0x.getEffects().rimTopAlpha(), + (var0x, var1) -> var0x.setEffects( + var0x.getEffects() + .withRim( + var0x.getEffects().neonIntensity(), + var0x.getEffects().neonRadius(), + var0x.getEffects().glowExponent(), + var1, + var0x.getEffects().rimBottomAlpha() + ) + ), + var0x -> var0x.getDefaultEffects().rimTopAlpha() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Rim bottom", + "Opacity of the rim on the opposite side", + 0.0F, + 1.0F, + 0.02F, + var0x -> var0x.getEffects().rimBottomAlpha(), + (var0x, var1) -> var0x.setEffects( + var0x.getEffects() + .withRim( + var0x.getEffects().neonIntensity(), + var0x.getEffects().neonRadius(), + var0x.getEffects().glowExponent(), + var0x.getEffects().rimTopAlpha(), + var1 + ) + ), + var0x -> var0x.getDefaultEffects().rimBottomAlpha() + ) + ); + var0.add( + oo.flag( + or.MATERIAL, + "Gradient border", + "Run the accent gradient around the border instead of a flat rim", + var0x -> var0x.getEffects().gradientBorder(), + (var0x, var1) -> var0x.setEffects(var0x.getEffects().withGradientBorder(var1, var0x.getEffects().gradientBorderAngle())), + var0x -> var0x.getDefaultEffects().gradientBorder() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Gradient angle", + "Direction of the border gradient, in degrees", + 0.0F, + 360.0F, + 5.0F, + var0x -> var0x.getEffects().gradientBorderAngle(), + (var0x, var1) -> var0x.setEffects(var0x.getEffects().withGradientBorder(var0x.getEffects().gradientBorder(), var1)), + var0x -> var0x.getDefaultEffects().gradientBorderAngle() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Active glow", + "Glow strength of enabled modules and selected rows", + 0.0F, + 2.0F, + 0.05F, + var0x -> var0x.getEffects().activeGlowIntensity(), + (var0x, var1) -> var0x.setEffects(var0x.getEffects().withActiveGlow(var1, var0x.getEffects().activeGlowRadius())), + var0x -> var0x.getDefaultEffects().activeGlowIntensity() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Active glow radius", + "How far the active glow spreads", + 0.0F, + 12.0F, + 0.1F, + var0x -> var0x.getEffects().activeGlowRadius(), + (var0x, var1) -> var0x.setEffects(var0x.getEffects().withActiveGlow(var0x.getEffects().activeGlowIntensity(), var1)), + var0x -> var0x.getDefaultEffects().activeGlowRadius() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Text glow", + "Glow strength behind text", + 0.0F, + 1.0F, + 0.02F, + var0x -> var0x.getEffects().textGlowIntensity(), + (var0x, var1) -> var0x.setEffects(var0x.getEffects().withTextGlow(var0x.getEffects().textGlowRadius(), var1)), + var0x -> var0x.getDefaultEffects().textGlowIntensity() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Text glow radius", + "How far the text glow spreads", + 0.0F, + 8.0F, + 0.1F, + var0x -> var0x.getEffects().textGlowRadius(), + (var0x, var1) -> var0x.setEffects(var0x.getEffects().withTextGlow(var1, var0x.getEffects().textGlowIntensity())), + var0x -> var0x.getDefaultEffects().textGlowRadius() + ) + ); + var0.add( + oo.color( + or.MATERIAL, + "Text glow color", + "Color of the glow behind text", + var0x -> var0x.getEffects().textGlowColor(), + (var0x, var1) -> var0x.setEffects(var0x.getEffects().withTextGlowColor(var1)), + var0x -> var0x.getDefaultEffects().textGlowColor() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Sweep speed", + "Speed of the highlight running around the border", + 0.0F, + 2.0F, + 0.02F, + var0x -> var0x.getEffects().sweepSpeed(), + (var0x, var1) -> var0x.setEffects(var0x.getEffects().withSweep(var1, var0x.getEffects().sweepLength(), var0x.getEffects().sweepIntensity())), + var0x -> var0x.getDefaultEffects().sweepSpeed() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Sweep length", + "Share of the perimeter the running highlight covers", + 0.0F, + 1.0F, + 0.02F, + var0x -> var0x.getEffects().sweepLength(), + (var0x, var1) -> var0x.setEffects(var0x.getEffects().withSweep(var0x.getEffects().sweepSpeed(), var1, var0x.getEffects().sweepIntensity())), + var0x -> var0x.getDefaultEffects().sweepLength() + ) + ); + var0.add( + oo.slider( + or.MATERIAL, + "Sweep intensity", + "Brightness of the running highlight", + 0.0F, + 2.0F, + 0.05F, + var0x -> var0x.getEffects().sweepIntensity(), + (var0x, var1) -> var0x.setEffects(var0x.getEffects().withSweep(var0x.getEffects().sweepSpeed(), var0x.getEffects().sweepLength(), var1)), + var0x -> var0x.getDefaultEffects().sweepIntensity() + ) + ); + } + + private static void shape(List var0) { + var0.add( + oo.slider( + or.SHAPE, + "Corner radius", + "Multiplier applied to every surface corner radius", + 0.5F, + 2.0F, + 0.05F, + var0x -> var0x.getGeometry().radiusScale(), + (var0x, var1) -> var0x.setGeometry(var0x.getGeometry().withRadiusScale(var1)), + var0x -> var0x.getDefaultGeometry().radiusScale() + ) + ); + var0.add( + oo.slider( + or.SHAPE, + "Border thickness", + "Thickness of surface outlines", + 0.5F, + 4.0F, + 0.1F, + var0x -> var0x.getGeometry().borderThickness(), + (var0x, var1) -> var0x.setGeometry(var0x.getGeometry().withBorderThickness(var1)), + var0x -> var0x.getDefaultGeometry().borderThickness() + ) + ); + var0.add( + oo.slider( + or.SHAPE, + "Squircle", + "How square the rounded corners are: 2 is a circle, higher is a squircle", + 2.0F, + 8.0F, + 0.1F, + var0x -> var0x.getGeometry().squircleExponent(), + (var0x, var1) -> var0x.setGeometry(var0x.getGeometry().withSquircleExponent(var1)), + var0x -> var0x.getDefaultGeometry().squircleExponent() + ) + ); + var0.add( + oo.slider( + or.SHAPE, + "Divider", + "Opacity of separator lines", + 0.0F, + 1.0F, + 0.05F, + var0x -> var0x.getGeometry().dividerAlpha(), + (var0x, var1) -> var0x.setGeometry(var0x.getGeometry().withDividerAlpha(var1)), + var0x -> var0x.getDefaultGeometry().dividerAlpha() + ) + ); + } + + private static void depth(List var0) { + nz[] var1 = null; + int var2 = 0; + int var3 = 0; + nz var4 = null; + String var5 = null; + Object var6 = null; + int var7 = -2110587025; + + while (true) { + switch (var7) { + case -2110587025: + default: + var0.add( + oo.slider( + or.SHAPE, + "Shadow softness", + "How far the drop shadow spreads", + 0.0F, + 24.0F, + 0.5F, + var0x -> var0x.getEffects().shadowSoftness(), + (var0x, var1x) -> var0x.setEffects(var0x.getEffects().withShadowSoftness(var1x)), + var0x -> var0x.getDefaultEffects().shadowSoftness() + ) + ); + var0.add( + oo.slider( + or.SHAPE, + "Shadow strength", + "Opacity of the drop shadow", + 0.0F, + 1.0F, + 0.05F, + var0x -> var0x.getEffects().shadowAlpha(), + (var0x, var1x) -> var0x.setEffects(var0x.getEffects().withShadowAlpha(var1x)), + var0x -> var0x.getDefaultEffects().shadowAlpha() + ) + ); + var0.add( + oo.slider( + or.SHAPE, + "Hover lift", + "How far a hovered surface rises, in pixels", + 0.0F, + 4.0F, + 0.1F, + var0x -> var0x.getEffects().hoverLift(), + (var0x, var1x) -> var0x.setEffects(var0x.getEffects().withHoverLift(var1x)), + var0x -> var0x.getDefaultEffects().hoverLift() + ) + ); + var0.add( + oo.slider( + or.SHAPE, + "Elevation softness", + "Multiplier over the whole elevation ramp softness", + 0.0F, + 2.0F, + 0.05F, + var0x -> var0x.getElevation().softnessScale(), + (var0x, var1x) -> var0x.setElevation(var0x.getElevation().withScale(var1x, var0x.getElevation().alphaScale())), + var0x -> var0x.getDefaultElevation().softnessScale() + ) + ); + var0.add( + oo.slider( + or.SHAPE, + "Elevation strength", + "Multiplier over the whole elevation ramp opacity", + 0.0F, + 2.0F, + 0.05F, + var0x -> var0x.getElevation().alphaScale(), + (var0x, var1x) -> var0x.setElevation(var0x.getElevation().withScale(var0x.getElevation().softnessScale(), var1x)), + var0x -> var0x.getDefaultElevation().alphaScale() + ) + ); + var1 = nz.values(); + var2 = var1.length; + var3 = 0; + var7 = -1942507878; + break; + case -1942507878: + if (var3 < var2) { + var7 = 2081096841; + } else { + var7 = -1429366848; + } + break; + case -1429366848: + return; + case 2081096841: + var4 = var1[var3]; + var5 = titleCase(var4.name()); + var6 = var5.toLowerCase(Locale.ROOT); + var0.add( + oo.slider( + or.SHAPE, + var5 + " shadow", + "Shadow softness of the " + var6 + " elevation level", + 0.0F, + 24.0F, + 0.5F, + var1x -> var1x.getElevation().softness(var4), + (var1x, var2x) -> var1x.setElevation(var1x.getElevation().withLevel(var4, var2x, var1x.getElevation().alpha(var4))), + var1x -> var1x.getDefaultElevation().softness(var4) + ) + ); + var0.add( + oo.slider( + or.SHAPE, + var5 + " shadow opacity", + "Shadow opacity of the " + var6 + " elevation level", + 0.0F, + 1.0F, + 0.02F, + var1x -> var1x.getElevation().alpha(var4), + (var1x, var2x) -> var1x.setElevation(var1x.getElevation().withLevel(var4, var1x.getElevation().softness(var4), var2x)), + var1x -> var1x.getDefaultElevation().alpha(var4) + ) + ); + var3++; + var7 = -1942507878; + } + } + } + + private static void motion(List var0) { + ob[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + String var5 = null; + int var6 = -190852280; + + while (true) { + switch (var6) { + case -1092061377: + if (var3 < var2) { + var6 = -936362229; + } else { + var6 = 1669007860; + } + break; + case -936362229: + var4 = var1[var3]; + var5 = titleCase(((ob)var4).name()); + var0.add( + oo.slider( + or.MOTION, + var5, + "Base duration of the " + var5.toLowerCase(Locale.ROOT) + " motion role", + ob.INSTANT.baseMillis() * 0.5F, + ob.DELIBERATE.baseMillis() * 2.0F, + 10.0F, + var1x -> var1x.getMotion().duration(var4), + (var1x, var2x) -> var1x.setMotion(var1x.getMotion().withDuration(var4, Math.round(var2x))), + var1x -> var1x.getDefaultMotion().duration(var4) + ) + ); + var3++; + var6 = -1092061377; + break; + case -190852280: + default: + var0.add( + oo.slider( + or.MOTION, + "Animation speed", + "Global multiplier for every animation duration", + 0.25F, + 3.0F, + 0.05F, + var0x -> var0x.getEffects().animationSpeed(), + (var0x, var1x) -> var0x.setEffects(var0x.getEffects().withAnimationSpeed(var1x)), + var0x -> var0x.getDefaultEffects().animationSpeed() + ) + ); + var1 = ob.values(); + var2 = var1.length; + var3 = 0; + var6 = -1092061377; + break; + case 1669007860: + return; + } + } + } + + private static void typography(List var0) { + String[] var1 = null; + oe[] var2 = null; + int var3 = 0; + int var4 = 0; + oe var5 = null; + String var6 = null; + Object var7 = null; + int var8 = 566261133; + + while (true) { + switch (var8) { + case -792460010: + if (var4 < var3) { + var8 = 1500627503; + } else { + var8 = 618625500; + } + break; + case 566261133: + default: + var0.add( + oo.slider( + or.LAYOUT, + "Text scale", + "Multiplier applied to every text role", + 0.5F, + 2.0F, + 0.05F, + var0x -> var0x.getTypography().scale(), + (var0x, var1x) -> var0x.setTypography(var0x.getTypography().withScale(var1x)), + var0x -> var0x.getDefaultTypography().scale() + ) + ); + var1 = names(oa.values()); + var2 = oe.values(); + var3 = var2.length; + var4 = 0; + var8 = -792460010; + break; + case 618625500: + return; + case 1500627503: + var5 = var2[var4]; + var6 = titleCase(var5.name()); + var7 = var6.toLowerCase(Locale.ROOT); + var0.add( + oo.slider( + or.LAYOUT, + var6 + " size", + "Base size of the " + var7 + " text role", + 4.0F, + 24.0F, + 0.5F, + var1x -> var1x.getTypography().sizes()[var5.ordinal()], + (var1x, var2x) -> var1x.setTypography(var1x.getTypography().withSize(var5, var2x)), + var1x -> var1x.getDefaultTypography().sizes()[var5.ordinal()] + ) + ); + var0.add( + oo.choice( + or.LAYOUT, + var6 + " font", + "Font family of the " + var7 + " text role", + var1, + var1x -> titleCase(var1x.getTypography().family(var5).name()), + (var1x, var2x) -> var1x.setTypography( + var1x.getTypography().withFamily(var5, byTitle(oa.values(), var2x, var1x.getTypography().family(var5))) + ), + var1x -> titleCase(var1x.getDefaultTypography().family(var5).name()) + ) + ); + var4++; + var8 = -792460010; + } + } + } + + private static void spacing(List var0) { + od[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = 793280408; + + while (true) { + switch (var5) { + case -2081731353: + var4 = var1[var3]; + var0.add( + oo.slider( + or.LAYOUT, + ((od)var4).name(), + "Base value of the " + ((od)var4).name() + " spacing step", + 0.0F, + 32.0F, + 0.5F, + var1x -> var1x.getSpacing().steps()[var4.ordinal()], + (var1x, var2x) -> var1x.setSpacing(var1x.getSpacing().withStep(var4, var2x)), + var1x -> var1x.getDefaultSpacing().steps()[var4.ordinal()] + ) + ); + var3++; + var5 = -624763561; + break; + case -624763561: + if (var3 < var2) { + var5 = -2081731353; + } else { + var5 = 468142727; + } + break; + case 468142727: + return; + case 793280408: + default: + var0.add( + oo.choice( + or.LAYOUT, + "Density", + "How much breathing room rows and cards get", + names(ny.values()), + var0x -> titleCase(var0x.getSpacing().density().name()), + (var0x, var1x) -> var0x.setSpacing(var0x.getSpacing().withDensity(byTitle(ny.values(), var1x, var0x.getSpacing().density()))), + var0x -> titleCase(var0x.getDefaultSpacing().density().name()) + ) + ); + var0.add( + oo.slider( + or.LAYOUT, + "Spacing scale", + "Multiplier applied to every spacing step", + 0.5F, + 2.0F, + 0.05F, + var0x -> var0x.getSpacing().scale(), + (var0x, var1x) -> var0x.setSpacing(var0x.getSpacing().withScale(var1x)), + var0x -> var0x.getDefaultSpacing().scale() + ) + ); + var1 = od.values(); + var2 = var1.length; + var3 = 0; + var5 = -624763561; + } + } + } + + private static void surfaces(List var0) { + String[] var1 = null; + aso[] var2 = null; + int var3 = 0; + int var4 = 0; + aso var5 = null; + String var6 = null; + Object var7 = null; + int var8 = -299423262; + + while (true) { + switch (var8) { + case -2124976600: + return; + case -299423262: + default: + var1 = tierNames(); + var2 = aso.values(); + var3 = var2.length; + var4 = 0; + var8 = 1860243406; + break; + case 1860243406: + if (var4 < var3) { + var8 = 1877902409; + } else { + var8 = -2124976600; + } + break; + case 1877902409: + var5 = var2[var4]; + var6 = titleCase(var5.name()); + var7 = var6.toLowerCase(Locale.ROOT); + var0.add( + oo.slider( + or.SHAPE, + var6 + " radius", + "Corner radius of " + var7 + " surfaces relative to the global radius", + 0.0F, + 3.0F, + 0.05F, + var1x -> var1x.getGeometry().roleRadiusScale()[var5.ordinal()], + (var1x, var2x) -> var1x.setGeometry(var1x.getGeometry().withRoleRadiusScale(var5, var2x)), + var1x -> var1x.getDefaultGeometry().roleRadiusScale()[var5.ordinal()] + ) + ); + var0.add( + oo.slider( + or.SHAPE, + var6 + " neon", + "Neon intensity of " + var7 + " surfaces relative to the global intensity", + 0.0F, + 3.0F, + 0.05F, + var1x -> var1x.getEffects().roleNeonScale()[var5.ordinal()], + (var1x, var2x) -> var1x.setEffects(var1x.getEffects().withRoleNeonScale(var5, var2x)), + var1x -> var1x.getDefaultEffects().roleNeonScale()[var5.ordinal()] + ) + ); + var0.add( + oo.choice( + or.SHAPE, + var6 + " glass", + "How " + var7 + " surfaces react to Liquid Glass", + var1, + var1x -> tierName(var1x.getGlass().roleTier()[var5.ordinal()]), + (var1x, var2x) -> var1x.setGlass(var1x.getGlass().withTier(var5, tierByName(var2x))), + var1x -> tierName(var1x.getDefaultGlass().roleTier()[var5.ordinal()]) + ) + ); + var4++; + var8 = 1860243406; + } + } + } + + private static void markTileDriven(List var0) { + Iterator var1 = null; + oo var2 = null; + int var3 = 1653007322; + + while (true) { + switch (var3) { + case -595083405: + var3 = 1618893413; + break; + case 391828186: + if (var2.label().endsWith(" font")) { + var3 = 449887100; + } else { + var3 = -595083405; + } + break; + case 415373349: + if (!TILE_DRIVEN.contains(var2.label())) { + var3 = 391828186; + } else { + var3 = 449887100; + } + break; + case 449887100: + var2.markTileDriven(); + var3 = -595083405; + break; + case 1104704244: + var2 = (oo)var1.next(); + if (var2.role() == null) { + var3 = 415373349; + } else { + var3 = 449887100; + } + break; + case 1256285687: + return; + case 1618893413: + if (var1.hasNext()) { + var3 = 1104704244; + } else { + var3 = 1256285687; + } + break; + case 1653007322: + default: + var1 = var0.iterator(); + var3 = 1618893413; + } + } + } + + private static boolean isAccentStop(nx var0) { + int var2 = 0; + int var1 = -2132942620; + + while (true) { + switch (var1) { + case -2132942620: + default: + if (var0 != nx.ACCENT) { + var1 = -2036640269; + } else { + var1 = 530593495; + } + break; + case -2036640269: + if (var0 != nx.ACCENT_MIDDLE) { + var1 = -1088356103; + } else { + var1 = 530593495; + } + break; + case -1136189729: + var2 = 0; + var1 = -292133987; + break; + case -1088356103: + if (var0 == nx.ACCENT_END) { + var1 = 530593495; + } else { + var1 = -1136189729; + } + break; + case -292133987: + return (boolean)((var2) != 0); + case 530593495: + var2 = 1; + var1 = -292133987; + } + } + } + + private static String[] tierNames() { + asn[] var0 = null; + String[] var1 = null; + int var2 = 0; + int var3 = 384471536; + + while (true) { + switch (var3) { + case -1420552988: + return var1; + case -284745068: + var1[var2 + 1] = titleCase(var0[var2].name()); + var2++; + var3 = 92646450; + break; + case 92646450: + if (var2 < var0.length) { + var3 = -284745068; + } else { + var3 = -1420552988; + } + break; + case 384471536: + default: + var0 = asn.values(); + var1 = new String[var0.length + 1]; + var1[0] = "Auto"; + var2 = 0; + var3 = 92646450; + } + } + } + + private static String tierName(asn var0) { + String var2 = null; + int var1 = -696416255; + + while (true) { + switch (var1) { + case -696416255: + default: + if (var0 == null) { + var1 = 399662688; + } else { + var1 = 977476164; + } + break; + case 399662688: + var2 = "Auto"; + var1 = 2076376056; + break; + case 977476164: + var2 = titleCase(var0.name()); + var1 = 2076376056; + break; + case 2076376056: + return var2; + } + } + } + + private static asn tierByName(String var0) { + asn[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = 1677928768; + + while (true) { + switch (var5) { + case -1675291408: + var3++; + var5 = 198042953; + break; + case -1100827062: + var4 = var1[var3]; + if (titleCase(((asn)var4).name()).equals(var0)) { + var5 = -998440706; + } else { + var5 = -1675291408; + } + break; + case -998440706: + return (asn)var4; + case 198042953: + if (var3 < var2) { + var5 = -1100827062; + } else { + var5 = 866660472; + } + break; + case 866660472: + return null; + case 1677928768: + default: + var1 = asn.values(); + var2 = var1.length; + var3 = 0; + var5 = 198042953; + } + } + } + + private static > T byTitle(T[] var0, String var1, T var2) { + Enum[] var3 = null; + int var4 = 0; + int var5 = 0; + Enum var6 = null; + int var7 = -527343999; + + while (true) { + switch (var7) { + case -527343999: + default: + var3 = var0; + var4 = var3.length; + var5 = 0; + var7 = -135618710; + break; + case -135618710: + if (var5 < var4) { + var7 = 1509067195; + } else { + var7 = 288491960; + } + break; + case 288491960: + return (T)var2; + case 412654293: + return (T)var6; + case 1443551417: + var5++; + var7 = -135618710; + break; + case 1509067195: + var6 = var3[var5]; + if (titleCase(var6.name()).equals(var1)) { + var7 = 412654293; + } else { + var7 = 1443551417; + } + } + } + } + + private static String[] names(Enum[] var0) { + String[] var1 = null; + int var2 = 0; + int var3 = -1693378290; + + while (true) { + switch (var3) { + case -1693378290: + default: + var1 = new String[var0.length]; + var2 = 0; + var3 = 878603369; + break; + case 718248697: + var1[var2] = titleCase(var0[var2].name()); + var2++; + var3 = 878603369; + break; + case 878603369: + if (var2 < var0.length) { + var3 = 718248697; + } else { + var3 = 1303404407; + } + break; + case 1303404407: + return var1; + } + } + } + + private static String titleCase(String var0) { + String var1 = var0.toLowerCase(Locale.ROOT) + .replace((char)(95), (char)((-1763114122 ^ 1763114154) + ((-1763114122 & 1763114154) << 1))); + return Character.toUpperCase(var1.charAt((-2003751016 ^ 2003751016) + ((-2003751016 & 2003751016) << 1))) + + var1.substring((264281292 ^ -264281291) + ((264281292 & -264281291) << 1)); + } + + static { + nx[] var10000 = new nx[2]; + var10000[0] = nx.ACCENT; + var10000[1] = nx.ACCENT_END; + QUICK_ACCENT_ROLES = var10000; + var10000 = new nx[14]; + var10000[0] = nx.ACCENT; + var10000[1] = nx.ACCENT_MIDDLE; + var10000[2] = nx.ACCENT_END; + var10000[3] = nx.BACKGROUND; + var10000[4] = nx.SURFACE; + var10000[5] = nx.SURFACE_RAISED; + var10000[6] = nx.SURFACE_SUNKEN; + var10000[7] = nx.SURFACE_MUTED; + var10000[8] = nx.ON_SURFACE; + var10000[9] = nx.ICON_INACTIVE; + var10000[10] = nx.ON_SURFACE_MUTED; + var10000[11] = nx.ON_SURFACE_FAINT; + var10000[12] = nx.OUTLINE_STRONG; + var10000[13] = nx.OUTLINE; + QUICK_FULL_ROLES = var10000; + String[] var1 = new String[4]; + var1[0] = "Corner radius"; + var1[1] = "Border thickness"; + var1[2] = "Neon intensity"; + var1[3] = "Neon radius"; + QUICK_FULL_SLIDERS = var1; + String[] var2 = new String[41]; + var2[0] = "Auto palette"; + var2[1] = "Polarity"; + var2[2] = "Harmony"; + var2[3] = "Corner radius"; + var2[4] = "Squircle"; + var2[5] = "Border thickness"; + var2[6] = "Divider"; + var2[7] = "Shadow softness"; + var2[8] = "Shadow strength"; + var2[9] = "Hover lift"; + var2[10] = "Elevation softness"; + var2[11] = "Elevation strength"; + var2[12] = "Frost bias"; + var2[13] = "Refraction bias"; + var2[14] = "Tint bias"; + var2[15] = "Bevel depth"; + var2[16] = "Rim gain"; + var2[17] = "Fill opacity"; + var2[18] = "Border opacity"; + var2[19] = "Backdrop contrast"; + var2[20] = "Specular"; + var2[21] = "Dispersion"; + var2[22] = "Inner depth"; + var2[23] = "Neon intensity"; + var2[24] = "Neon radius"; + var2[25] = "Falloff"; + var2[26] = "Rim top"; + var2[27] = "Rim bottom"; + var2[28] = "Active glow"; + var2[29] = "Active glow radius"; + var2[30] = "Text glow"; + var2[31] = "Text glow radius"; + var2[32] = "Sweep speed"; + var2[33] = "Sweep length"; + var2[34] = "Sweep intensity"; + var2[35] = "Animation speed"; + var2[36] = "Text scale"; + var2[37] = "Density"; + var2[38] = "Spacing scale"; + var2[39] = "Pattern"; + var2[40] = "Intensity"; + TILE_DRIVEN = Set.of(var2); + } +} diff --git a/src/main/java/defpackage/oq.java b/src/main/java/defpackage/oq.java new file mode 100644 index 0000000..6c7cf83 --- /dev/null +++ b/src/main/java/defpackage/oq.java @@ -0,0 +1,162 @@ +package defpackage; + +public final class oq { + private static final float MIN_ANIMATION_SPEED = 0.05F; + private static final int MIN_DURATION_MS = 1; + private static final oq CURRENT = new oq(); + private final float[] spacing = new float[od.COUNT]; + private final float[] textSize = new float[oe.COUNT]; + private final ge[] fonts = new ge[oe.COUNT]; + private final gr[] families = new gr[oe.COUNT]; + private final float[] shadowSoftness = new float[nz.COUNT]; + private final float[] shadowAlpha = new float[nz.COUNT]; + private final int[] duration = new int[ob.COUNT]; + private final asu[] color = new asu[nx.COUNT]; + private ny density = ny.COMPACT; + private float rowScale = 1.0F; + private float animationSpeed = 1.0F; + + private oq() { + this.resolve(mv.DARK); + } + + public static oq current() { + return CURRENT; + } + + public static void resolveCurrent(mv var0) { + CURRENT.resolve(var0); + } + + public void resolve(mv var1) { + nu var2 = var1.getSpacing(); + nv var3 = var1.getTypography(); + nn var4 = var1.getElevation(); + nq var5 = var1.getMotion(); + this.density = var2.density(); + this.rowScale = var2.density().rowScale(); + this.animationSpeed = Math.max(var1.getEffects().animationSpeed(), 0.05F); + od[] var6 = od.values(); + int var7 = var6.length; + + for (int var8 = 0; var8 < var7; var8++) { + od var9 = var6[var8]; + this.spacing[var9.ordinal()] = var2.step(var9); + } + + oe[] var13 = oe.values(); + var7 = var13.length; + + for (int var17 = 0; var17 < var7; var17++) { + oe var21 = var13[var17]; + int var10 = var21.ordinal(); + float var11 = var3.size(var21); + gr var12 = var3.family(var21).msdf(); + if (this.textSize[var10] != var11 || this.families[var10] != var12) { + this.textSize[var10] = var11; + this.families[var10] = var12; + this.fonts[var10] = var12.getFont(var11); + } + } + + float var14 = ratio(var1.getEffects().shadowSoftness(), nz.RAISED.softness()); + float var16 = ratio(var1.getEffects().shadowAlpha(), nz.RAISED.alpha()); + nz[] var18 = nz.values(); + int var22 = var18.length; + + for (int var25 = 0; var25 < var22; var25++) { + nz var28 = var18[var25]; + this.shadowSoftness[var28.ordinal()] = var4.softness(var28) * var14; + this.shadowAlpha[var28.ordinal()] = var4.alpha(var28) * var16; + } + + ob[] var19 = ob.values(); + var22 = var19.length; + + for (int var26 = 0; var26 < var22; var26++) { + ob var29 = var19[var26]; + this.duration[var29.ordinal()] = Math.max( + Math.round(var5.duration(var29) / this.animationSpeed), (-1259588142 ^ 1259588143) + ((-1259588142 & 1259588143) << 1) + ); + } + + nx[] var20 = nx.values(); + var22 = var20.length; + + for (int var27 = 0; var27 < var22; var27++) { + nx var30 = var20[var27]; + this.color[var30.ordinal()] = var30.from(var1); + } + + this.color[nx.ON_SURFACE.ordinal()] = var1.getWhite(); + } + + private static float ratio(float var0, float var1) { + int var2 = -1861588369; + + while (true) { + switch (var2) { + case -1861588369: + default: + if (var1 <= 0.0F) { + var2 = -934426314; + } else { + var2 = -450154793; + } + break; + case -934426314: + return 1.0F; + case -450154793: + return var0 / var1; + } + } + } + + public float spacing(od var1) { + return this.spacing[var1.ordinal()]; + } + + public float gap() { + return this.spacing[od.SM.ordinal()]; + } + + public float pad() { + return this.spacing[od.MD.ordinal()]; + } + + public ny density() { + return this.density; + } + + public float rowScale() { + return this.rowScale; + } + + public ge font(oe var1) { + return this.fonts[var1.ordinal()]; + } + + public float textSize(oe var1) { + return this.textSize[var1.ordinal()]; + } + + public float shadowSoftness(nz var1) { + return this.shadowSoftness[var1.ordinal()]; + } + + public float shadowAlpha(nz var1) { + return this.shadowAlpha[var1.ordinal()]; + } + + public int duration(ob var1) { + return this.duration[var1.ordinal()]; + } + + public float animationSpeed() { + return this.animationSpeed; + } + + public asu color(nx var1) { + return this.color[var1.ordinal()]; + } +} diff --git a/src/main/java/defpackage/or.java b/src/main/java/defpackage/or.java new file mode 100644 index 0000000..b858d81 --- /dev/null +++ b/src/main/java/defpackage/or.java @@ -0,0 +1,57 @@ +package defpackage; + +public enum or { + COLOUR( + "Colour", + "d", + "Every colour role, the accent ramp and the palette generator" + ), + MATERIAL( + "Material", + "E", + "Glass, neon and everything about surface finish" + ), + SHAPE( + "Shape", + "s", + "Corners, outlines, shadows and elevation" + ), + LAYOUT( + "Layout", + ":", + "Type sizes, fonts, density and spacing" + ), + MOTION( + "Motion", + "N", + "How fast the interface animates" + ), + BACKDROP( + "Backdrop", + "3", + "Animated shader behind the window" + ); + + public static final int COUNT = values().length; + private final String label; + private final String icon; + private final String description; + + or(String var3, String var4, String var5) { + this.label = var3; + this.icon = var4; + this.description = var5; + } + + public String label() { + return this.label; + } + + public String icon() { + return this.icon; + } + + public String description() { + return this.description; + } +} diff --git a/src/main/java/defpackage/os.java b/src/main/java/defpackage/os.java new file mode 100644 index 0000000..0d70da7 --- /dev/null +++ b/src/main/java/defpackage/os.java @@ -0,0 +1,108 @@ +package defpackage; + + +public final class os { + private final ou type; + private final float score; + private final int hits; + private final int misses; + private final long durationMillis; + + public os(ou var1, float var2, int var3, int var4, long var5) { + this.type = var1; + this.score = var2; + this.hits = var3; + this.misses = var4; + this.durationMillis = var5; + } + + public float getAccuracy() { + int var1 = 0; + float var3 = 0.0F; + int var2 = 1687688133; + + while (true) { + switch (var2) { + case 729162848: + var3 = (float)this.hits / var1; + var2 = 1381885564; + break; + case 1381885564: + return var3; + case 1469488593: + var3 = 0.0F; + var2 = 1381885564; + break; + case 1687688133: + default: + var1 = this.hits + this.misses; + if (var1 == 0) { + var2 = 1469488593; + } else { + var2 = 729162848; + } + } + } + } + + public boolean isValid() { + int var2 = 0; + int var1 = 1294924121; + + while (true) { + switch (var1) { + case -192457010: + var2 = 0; + var1 = 1046915585; + break; + case 420582125: + var2 = 1; + var1 = 1046915585; + break; + case 957479268: + if (this.type.getScoreKind() == ot.PERCENT) { + var1 = 420582125; + } else { + var1 = -192457010; + } + break; + case 1046915585: + return (boolean)((var2) != 0); + case 1294924121: + default: + if (this.score > 0.0F) { + var1 = 2093638593; + } else { + var1 = -192457010; + } + break; + case 2093638593: + if (this.hits <= 0) { + var1 = 957479268; + } else { + var1 = 420582125; + } + } + } + } + + public ou getType() { + return this.type; + } + + public float getScore() { + return this.score; + } + + public int getHits() { + return this.hits; + } + + public int getMisses() { + return this.misses; + } + + public long getDurationMillis() { + return this.durationMillis; + } +} diff --git a/src/main/java/defpackage/ot.java b/src/main/java/defpackage/ot.java new file mode 100644 index 0000000..61cdc06 --- /dev/null +++ b/src/main/java/defpackage/ot.java @@ -0,0 +1,6 @@ +package defpackage; + +public enum ot { + REACTION, + PERCENT; +} diff --git a/src/main/java/defpackage/ou.java b/src/main/java/defpackage/ou.java new file mode 100644 index 0000000..57e5344 --- /dev/null +++ b/src/main/java/defpackage/ou.java @@ -0,0 +1,123 @@ +package defpackage; + +import java.util.Locale; + +public enum ou { + FLICKING( + "Flicking", + "Snap onto targets that pop up one at a time.", + ot.REACTION + ), + TRACKING( + "Tracking", + "Hold your crosshair on a moving target.", + ot.PERCENT + ), + TOTEM_REACTION( + "Totem Reaction", + "Re-totem as fast as you can after a pop.", + ot.REACTION + ), + TOTEM_SPEED( + "Totem Speed", + "Move a totem into your offhand through the inventory.", + ot.REACTION + ), + ANCHOR_SPEED( + "Anchor Speed", + "Place and charge respawn anchors on a cycle.", + ot.REACTION + ), + ANCHOR_DESTRUCTION( + "Anchor Destruction", + "Break charged anchors as fast as possible.", + ot.REACTION + ); + + private final String displayName; + private final String description; + private final ot scoreKind; + + ou(String var3, String var4, ot var5) { + this.displayName = var3; + this.description = var4; + this.scoreKind = var5; + } + + public boolean isLowerBetter() { + int var2 = 0; + int var1 = -1308833290; + + while (true) { + switch (var1) { + case -1308833290: + default: + if (this.scoreKind == ot.REACTION) { + var1 = 2008200931; + } else { + var1 = -435753856; + } + break; + case -435753856: + var2 = 0; + var1 = 1565985570; + break; + case 1565985570: + return (boolean)((var2) != 0); + case 2008200931: + var2 = 1; + var1 = 1565985570; + } + } + } + + public boolean requiresSingleplayer() { + int var2 = 0; + int var1 = 549825946; + + while (true) { + switch (var1) { + case -1927237744: + return (boolean)((var2) != 0); + case -1114121567: + if (this == ANCHOR_DESTRUCTION) { + var1 = 1261741817; + } else { + var1 = 1733440103; + } + break; + case 549825946: + default: + if (this != ANCHOR_SPEED) { + var1 = -1114121567; + } else { + var1 = 1261741817; + } + break; + case 1261741817: + var2 = 1; + var1 = -1927237744; + break; + case 1733440103: + var2 = 0; + var1 = -1927237744; + } + } + } + + public String getKey() { + return this.name().toLowerCase(Locale.ROOT); + } + + public String getDisplayName() { + return this.displayName; + } + + public String getDescription() { + return this.description; + } + + public ot getScoreKind() { + return this.scoreKind; + } +} diff --git a/src/main/java/defpackage/ov.java b/src/main/java/defpackage/ov.java new file mode 100644 index 0000000..86407f3 --- /dev/null +++ b/src/main/java/defpackage/ov.java @@ -0,0 +1,112 @@ +package defpackage; + +import java.util.Random; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public abstract class ov extends ow { + protected static final double GROUND_CLEARANCE = 0.25; + private static final double MIN_FACING_DOT = 0.15; + private static final float ANCHOR_SLACK = 1.0F; + protected final Random random = new Random(); + protected float anchorYaw; + + protected void anchorToPlayer() { + this.anchorYaw = mc.player.getYRot(); + } + + protected void updateAnchor() { + oy var1 = null; + float var2 = 0.0F; + float var3 = 0.0F; + int var4 = -247747006; + + while (true) { + switch (var4) { + case -1604261717: + this.anchorYaw = Mth.wrapDegrees(mc.player.getYRot() + var2); + var4 = 1107609633; + break; + case -1042768235: + if (var3 < -var2) { + var4 = -1604261717; + } else { + var4 = 1107609633; + } + break; + case -629659948: + this.anchorYaw = Mth.wrapDegrees(mc.player.getYRot() - var2); + var4 = 1107609633; + break; + case -247747006: + default: + var1 = oy.INSTANCE; + var2 = (float)Math.toDegrees(Math.atan(var1.getFieldSize() / 2.0 / var1.getDistance())) * 1.0F; + var3 = Mth.wrapDegrees(mc.player.getYRot() - this.anchorYaw); + if (var3 > var2) { + var4 = -629659948; + } else { + var4 = -1042768235; + } + break; + case 1107609633: + return; + } + } + } + + protected Vec3 forward() { + return Vec3.directionFromRotation(0.0F, this.anchorYaw); + } + + protected Vec3 right() { + return Vec3.directionFromRotation(0.0F, this.anchorYaw + 90.0F); + } + + protected Vec3 toWorld(double var1, double var3, double var5) { + return mc.player.getEyePosition().add(this.forward().scale(var5)).add(this.right().scale(var1)).add(0.0, var3, 0.0); + } + + protected double[] aimOnPlane(double var1) { + Vec3 var3 = null; + double var4 = 0.0; + Vec3 var6 = null; + int var7 = 761505615; + + while (true) { + switch (var7) { + case -2111570663: + var6 = var3.scale(var1 / var4); + double[] var10000 = new double[2]; + var10000[0] = var6.dot(this.right()); + var10000[1] = var6.y; + return var10000; + case -64967729: + return null; + case 761505615: + } + + var3 = mc.player.getViewVector(1.0F); + var4 = var3.dot(this.forward()); + if (var4 < 0.15) { + var7 = -64967729; + } else { + var7 = -2111570663; + } + } + } + + protected double lowestOffset(double var1) { + return mc.player.getY() + 0.25 + var1 / 2.0 - mc.player.getEyePosition().y; + } + + protected boolean isClear(Vec3 var1, double var2, double var4) { + AABB var6 = new AABB(var1.x - var2 / 2.0, var1.y - var4 / 2.0, var1.z - var2 / 2.0, var1.x + var2 / 2.0, var1.y + var4 / 2.0, var1.z + var2 / 2.0); + return mc.level.noCollision(var6); + } + + protected float jitter() { + return this.random.nextFloat() * 2.0F - 1.0F; + } +} diff --git a/src/main/java/defpackage/ow.java b/src/main/java/defpackage/ow.java new file mode 100644 index 0000000..de48e3c --- /dev/null +++ b/src/main/java/defpackage/ow.java @@ -0,0 +1,113 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.world.phys.Vec3; + +public abstract class ow implements aqg { + protected final List targets = new ArrayList<>(); + protected long startMillis; + protected int hits; + protected int misses; + private boolean finished; + + public abstract ou getType(); + + public void start() { + this.targets.clear(); + this.hits = 0; + this.misses = 0; + this.finished = (boolean)(((0)) != 0); + this.startMillis = System.currentTimeMillis(); + this.onStart(); + } + + protected void onStart() { + } + + public void tick() { + this.targets.removeIf(pd::isExpired); + this.onTick(); + } + + protected void onTick() { + } + + public void onClick(boolean var1) { + } + + public void renderWorld(PoseStack var1, SubmitNodeCollector var2, Vec3 var3) { + } + + public abstract String[][] getHudSections(float var1); + + public abstract os buildResult(); + + protected String[][] timedSections(float var1, String[]... var2) { + String[][] var3 = new String[var2.length + 1][]; + int var10001 = 0; + String[] var10002 = new String[2]; + int var10004 = 0; + String var10005 = "%.1f"; + Object[] var10006 = new Object[1]; + var10006[0] = var1; + var10002[var10004] = String.format(var10005, var10006); + var10002[1] = "TIME"; + var3[var10001] = var10002; + System.arraycopy( + var2, 0, var3, 1, var2.length + ); + return var3; + } + + protected float getAccuracyPercent() { + int var1 = 0; + float var3 = 0.0F; + int var2 = -2030179886; + + while (true) { + switch (var2) { + case -2030179886: + default: + var1 = this.hits + this.misses; + if (var1 == 0) { + var2 = 1601830140; + } else { + var2 = -1709601794; + } + break; + case -1709601794: + var3 = (float)this.hits / var1 * 100.0F; + var2 = 558616422; + break; + case 558616422: + return var3; + case 1601830140: + var3 = 0.0F; + var2 = 558616422; + } + } + } + + public List getTargets() { + return this.targets; + } + + public long getElapsedMillis() { + return System.currentTimeMillis() - this.startMillis; + } + + public boolean isFinished() { + return this.finished; + } + + protected void finish() { + this.finished = (boolean)(((1)) != 0); + } + + public void stop() { + this.targets.clear(); + } +} diff --git a/src/main/java/defpackage/ox.java b/src/main/java/defpackage/ox.java new file mode 100644 index 0000000..1806a9d --- /dev/null +++ b/src/main/java/defpackage/ox.java @@ -0,0 +1,17 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:ox.class */ +/* synthetic */ class ox { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$training$DrillType = new int[ou.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$training$DrillType[ou.FLICKING.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$training$DrillType[ou.TRACKING.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + } +} diff --git a/src/main/java/defpackage/oy.java b/src/main/java/defpackage/oy.java new file mode 100644 index 0000000..b3b66a7 --- /dev/null +++ b/src/main/java/defpackage/oy.java @@ -0,0 +1,472 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.io.File; +import java.util.EnumMap; +import java.util.Map; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; + +public final class oy implements aqg { + public static final oy INSTANCE = new oy(); + private static final String DIRECTORY_NAME = "training"; + private static final String FILE_NAME = "stats.json"; + private static final long SUMMARY_DISPLAY_MILLIS = 4000L; + private static final float HIT_SOUND_PITCH = 1.6F; + private static final float HIT_SOUND_VOLUME = 0.4F; + private final Map stats = new EnumMap<>(ou.class); + private int targetCount = 1; + private float targetSize = 0.9F; + private float distance = 3.0F; + private float fieldSize = 6.0F; + private float trackSpeed = 3.0F; + private long durationMillis = (-2800862352486701581L | 2800862352486731581L) + (-2800862352486701581L & 2800862352486731581L); + @Nullable + private ow activeDrill; + @Nullable + private os lastResult; + private boolean lastResultWasRecord; + private float lastResultDeltaPercent; + private long lastResultMillis; + private boolean loaded; + + private oy() { + } + + public void ensureLoaded() { + int var1 = -1599620627; + + while (true) { + switch (var1) { + case -1599620627: + default: + if (this.loaded) { + var1 = 723439458; + } else { + var1 = -698157948; + } + break; + case -698157948: + this.stats.putAll(oz.load(this.statsFile())); + this.loaded = (boolean)(((1)) != 0); + return; + case 723439458: + return; + } + } + } + + public void save() { + int var1 = -1385148004; + + while (true) { + switch (var1) { + case -1385148004: + default: + if (this.loaded) { + var1 = 1108578747; + } else { + var1 = 1072286016; + } + break; + case 1072286016: + return; + case 1108578747: + oz.save(this.stats, this.statsFile()); + var1 = 1072286016; + } + } + } + + private File statsFile() { + return new File(new File(bz.DIRECTORY, "training"), "stats.json"); + } + + public pa getStats(ou var1) { + this.ensureLoaded(); + return this.stats.computeIfAbsent(var1, var0 -> new pa()); + } + + public void resetStats(ou var1) { + this.getStats(var1).reset(); + this.save(); + } + + public void start(ou var1) { + ow var2 = null; + int var3 = -2031360121; + + while (true) { + switch (var3) { + case -2031360121: + default: + this.stop(); + var2 = this.create(var1); + if (var2 == null) { + var3 = 1891363932; + } else { + var3 = 11212557; + } + break; + case 11212557: + this.ensureLoaded(); + var2.start(); + this.activeDrill = var2; + this.lastResult = null; + return; + case 1891363932: + return; + } + } + } + + public void stop() { + int var1 = 978459090; + + while (true) { + switch (var1) { + case -1734086567: + this.activeDrill.stop(); + this.activeDrill = null; + return; + case 525033541: + return; + case 978459090: + } + + if (this.activeDrill == null) { + var1 = 525033541; + } else { + var1 = -1734086567; + } + } + } + + public boolean isRunning() { + int var2 = 0; + int var1 = -2079075694; + + while (true) { + switch (var1) { + case -2079075694: + default: + if (this.activeDrill != null) { + var1 = -1780162288; + } else { + var1 = 1655556887; + } + break; + case -1780162288: + var2 = 1; + var1 = -1180406604; + break; + case -1180406604: + return (boolean)((var2) != 0); + case 1655556887: + var2 = 0; + var1 = -1180406604; + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private ow create(ou var1) { + return switch (ox.$SwitchMap$evo$systems$base$training$DrillType[var1.ordinal()]) { + case 1 -> new pb(); + case 2 -> new pc(); + default -> null; + }; + } + + public void tick() { + int var1 = -1432409458; + + while (true) { + switch (var1) { + case -1790690689: + return; + case -1572143796: + if (mc.player == null) { + var1 = -386369421; + } else { + var1 = 1695314017; + } + break; + case -1432409458: + default: + if (this.activeDrill == null) { + var1 = -1790690689; + } else { + var1 = 1764012425; + } + break; + case -386369421: + this.stop(); + return; + case 311048133: + this.complete(); + var1 = 2118148579; + break; + case 1695314017: + this.activeDrill.tick(); + if (this.activeDrill.isFinished()) { + var1 = 311048133; + } else { + var1 = 2118148579; + } + break; + case 1764012425: + if (mc.level != null) { + var1 = -1572143796; + } else { + var1 = -386369421; + } + break; + case 2118148579: + return; + } + } + } + + private void complete() { + os var1 = this.activeDrill.buildResult(); + ou var2 = this.activeDrill.getType(); + this.activeDrill.stop(); + this.activeDrill = null; + if (var1.isValid()) { + pa var3 = this.getStats(var2); + boolean var4 = var2.isLowerBetter(); + float var5 = var3.getAverage(); + this.lastResultWasRecord = var3.wouldBeRecord(var1.getScore(), var4); + this.lastResultDeltaPercent = var5 == 0.0F ? 0.0F : (var4 ? (var5 - var1.getScore()) / var5 : (var1.getScore() - var5) / var5) * 100.0F; + var3.record(var1.getScore(), var4); + this.save(); + this.lastResult = var1; + this.lastResultMillis = System.currentTimeMillis(); + } + } + + public boolean hasFreshResult() { + int var2 = 0; + int var1 = -1718612955; + + while (true) { + switch (var1) { + case -1718612955: + default: + if (this.lastResult != null) { + var1 = -663307454; + } else { + var1 = -169838217; + } + break; + case -674473728: + var2 = 1; + var1 = 710859660; + break; + case -663307454: + if (System.currentTimeMillis() - this.lastResultMillis + < (6569043917142537962L | -6569043917142533962L) + (6569043917142537962L & -6569043917142533962L)) { + var1 = -674473728; + } else { + var1 = -169838217; + } + break; + case -169838217: + var2 = 0; + var1 = 710859660; + break; + case 710859660: + return (boolean)((var2) != 0); + } + } + } + + public float getResultFade() { + long var1 = (5755487953735193199L ^ -5755487953735193199L) + ((5755487953735193199L & -5755487953735193199L) << 1); + long var3 = (-6648954630875680035L ^ 6648954630875680035L) + ((-6648954630875680035L & 6648954630875680035L) << 1); + float var6 = 0.0F; + int var5 = -1486004132; + + while (true) { + switch (var5) { + case -1486004132: + default: + if (this.lastResult == null) { + var5 = 1425477388; + } else { + var5 = 315678924; + } + break; + case -1101935448: + return 0.0F; + case -543793689: + var6 = 1.0F; + var5 = 1679088803; + break; + case 315678924: + var1 = System.currentTimeMillis() - this.lastResultMillis; + if (var1 >= (-2101897901365501452L ^ 2101897901365505452L) + ((-2101897901365501452L & 2101897901365505452L) << 1)) { + var5 = -1101935448; + } else { + var5 = 561070782; + } + break; + case 325007676: + var6 = 1.0F - (float)(var1 - var3) / 600.0F; + var5 = 1679088803; + break; + case 561070782: + var3 = (6136251913889498434L | -6136251913889495034L) + (6136251913889498434L & -6136251913889495034L); + if (var1 < var3) { + var5 = -543793689; + } else { + var5 = 325007676; + } + break; + case 1425477388: + return 0.0F; + case 1679088803: + return var6; + } + } + } + + public void onClick(int var1, int var2) { + if (this.activeDrill != null && var2 == (1323590240 ^ -1323590239) + ((1323590240 & -1323590239) << 1) && mc.gui.screen() == null) { + this.activeDrill + .onClick((boolean)(((var1 == 0 ? 1: (-436854300 ^ 436854300) + ((-436854300 & 436854300) << 1))) != 0)); + } + } + + public void renderWorld(PoseStack var1, SubmitNodeCollector var2, Vec3 var3) { + int var4 = 569764082; + + while (true) { + switch (var4) { + case 410742803: + this.activeDrill.renderWorld(var1, var2, var3); + var4 = 758139468; + break; + case 569764082: + default: + if (this.activeDrill != null) { + var4 = 410742803; + } else { + var4 = 758139468; + } + break; + case 758139468: + return; + } + } + } + + public void playHitFeedback() { + int var1 = -1208843292; + + while (true) { + switch (var1) { + case -2036679723: + mc.level + .playLocalSound( + mc.player.getX(), + mc.player.getY(), + mc.player.getZ(), + SoundEvents.EXPERIENCE_ORB_PICKUP, + SoundSource.PLAYERS, + 0.4F, + 1.6F, + (boolean)((((-1819864738 | 1819864738) + (-1819864738 & 1819864738)) + ) != 0)); + return; + case -1445264864: + return; + case -1208843292: + default: + if (mc.level != null) { + var1 = 2055168059; + } else { + var1 = -1445264864; + } + break; + case 2055168059: + if (mc.player == null) { + var1 = -1445264864; + } else { + var1 = -2036679723; + } + } + } + } + + public int getTargetCount() { + return this.targetCount; + } + + public void setTargetCount(int var1) { + this.targetCount = var1; + } + + public float getTargetSize() { + return this.targetSize; + } + + public void setTargetSize(float var1) { + this.targetSize = var1; + } + + public float getDistance() { + return this.distance; + } + + public void setDistance(float var1) { + this.distance = var1; + } + + public float getFieldSize() { + return this.fieldSize; + } + + public void setFieldSize(float var1) { + this.fieldSize = var1; + } + + public float getTrackSpeed() { + return this.trackSpeed; + } + + public void setTrackSpeed(float var1) { + this.trackSpeed = var1; + } + + public long getDurationMillis() { + return this.durationMillis; + } + + public void setDurationMillis(long var1) { + this.durationMillis = var1; + } + + @Nullable + public ow getActiveDrill() { + return this.activeDrill; + } + + @Nullable + public os getLastResult() { + return this.lastResult; + } + + public boolean isLastResultWasRecord() { + return this.lastResultWasRecord; + } + + public float getLastResultDeltaPercent() { + return this.lastResultDeltaPercent; + } +} diff --git a/src/main/java/defpackage/oz.java b/src/main/java/defpackage/oz.java new file mode 100644 index 0000000..ae732f8 --- /dev/null +++ b/src/main/java/defpackage/oz.java @@ -0,0 +1,96 @@ +package defpackage; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.nio.charset.StandardCharsets; +import java.util.EnumMap; +import java.util.Map; +import java.util.Map.Entry; + +public final class oz { + private static final Gson GSON = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create(); + private static final String KEY_BEST = "best"; + private static final String KEY_SUM = "sum"; + private static final String KEY_RUNS = "runs"; + + private oz() { + } + + public static void save(Map var0, File var1) { + JsonObject var2 = new JsonObject(); + + for (Entry var4 : var0.entrySet()) { + pa var5 = (pa)var4.getValue(); + if (!var5.isEmpty()) { + JsonObject var6 = new JsonObject(); + var6.addProperty("best", var5.getBest()); + var6.addProperty("sum", var5.getScoreSum()); + var6.addProperty("runs", var5.getRuns()); + var2.add(((ou)var4.getKey()).getKey(), var6); + } + } + + File var10 = var1.getParentFile(); + if (var10 == null || var10.exists() || var10.mkdirs()) { + try (OutputStreamWriter var11 = new OutputStreamWriter(new FileOutputStream(var1), StandardCharsets.UTF_8)) { + GSON.toJson(var2, var11); + } catch (IOException var9) { + } + } + } + + public static Map load(File var0) { + EnumMap var1 = new EnumMap<>(ou.class); + ou[] var2 = ou.values(); + int var3 = var2.length; + + for (int var4 = 0; var4 < var3; var4++) { + ou var5 = var2[var4]; + var1.put(var5, new pa()); + } + + if (!var0.exists()) { + return var1; + } + + try (InputStreamReader var13 = new InputStreamReader(new FileInputStream(var0), StandardCharsets.UTF_8)) { + JsonObject var14 = JsonParser.parseReader(var13).getAsJsonObject(); + ou[] var15 = ou.values(); + int var16 = var15.length; + + for (int var6 = 0; var6 < var16; var6++) { + ou var7 = var15[var6]; + if (var14.has(var7.getKey())) { + JsonObject var8 = var14.getAsJsonObject(var7.getKey()); + pa var9 = (pa)var1.get(var7); + var9.setBest( + var8.has("best") + ? var8.get("best").getAsFloat() + : 0.0F + ); + var9.setScoreSum( + var8.has("sum") + ? var8.get("sum").getAsFloat() + : 0.0F + ); + var9.setRuns( + var8.has("runs") + ? var8.get("runs").getAsInt() + : (-1162491370 ^ 1162491370) + ((-1162491370 & 1162491370) << 1) + ); + } + } + } catch (Exception var12) { + } + + return var1; + } +} diff --git a/src/main/java/defpackage/p.java b/src/main/java/defpackage/p.java new file mode 100644 index 0000000..39eb888 --- /dev/null +++ b/src/main/java/defpackage/p.java @@ -0,0 +1,18 @@ +package defpackage; + +public abstract class p implements m, l { + private boolean cancelled; + + protected p() { + } + + @Override + public boolean isCancelled() { + return this.cancelled; + } + + @Override + public void setCancelled(boolean var1) { + this.cancelled = var1; + } +} diff --git a/src/main/java/defpackage/pa.java b/src/main/java/defpackage/pa.java new file mode 100644 index 0000000..dc8b2e5 --- /dev/null +++ b/src/main/java/defpackage/pa.java @@ -0,0 +1,192 @@ +package defpackage; + + +public final class pa { + private float best; + private float scoreSum; + private int runs; + + public void record(float var1, boolean var2) { + int var3 = 333248854; + + while (true) { + switch (var3) { + case -2071513927: + this.best = var1; + var3 = -938553195; + break; + case -938553195: + return; + case -530644274: + if (var2) { + var3 = 678520217; + } else { + var3 = -355273090; + } + break; + case -355273090: + if (var1 > this.best) { + var3 = -2071513927; + } else { + var3 = -938553195; + } + break; + case 333248854: + default: + this.scoreSum += var1; + this.runs += 1; + if (this.runs != (-689895904 | 689895905) + (-689895904 & 689895905)) { + var3 = -530644274; + } else { + var3 = -2071513927; + } + break; + case 678520217: + if (var1 < this.best) { + var3 = 1926928156; + } else { + var3 = -938553195; + } + break; + case 1926928156: + var3 = -2071513927; + } + } + } + + public boolean wouldBeRecord(float var1, boolean var2) { + int var4 = 0; + int var3 = -634467657; + + while (true) { + switch (var3) { + case -1046124396: + if (var1 < this.best) { + var3 = 1643700908; + } else { + var3 = 836153608; + } + break; + case -787876204: + var4 = 1; + var3 = 1003770337; + break; + case -634467657: + default: + if (this.runs != 0) { + var3 = 541926234; + } else { + var3 = -787876204; + } + break; + case 541926234: + if (var2) { + var3 = -1046124396; + } else { + var3 = 1794241450; + } + break; + case 836153608: + var4 = 0; + var3 = 1003770337; + break; + case 1003770337: + return (boolean)((var4) != 0); + case 1643700908: + var3 = -787876204; + break; + case 1794241450: + if (var1 > this.best) { + var3 = -787876204; + } else { + var3 = 836153608; + } + } + } + } + + public float getAverage() { + float var2 = 0.0F; + int var1 = -1206272798; + + while (true) { + switch (var1) { + case -1668401485: + var2 = this.scoreSum / this.runs; + var1 = 1785670483; + break; + case -1502331106: + var2 = 0.0F; + var1 = 1785670483; + break; + case -1206272798: + default: + if (this.runs == 0) { + var1 = -1502331106; + } else { + var1 = -1668401485; + } + break; + case 1785670483: + return var2; + } + } + } + + public boolean isEmpty() { + int var2 = 0; + int var1 = 1711058073; + + while (true) { + switch (var1) { + case -1341459398: + var2 = 0; + var1 = -323993957; + break; + case -886273693: + var2 = 1; + var1 = -323993957; + break; + case -323993957: + return (boolean)((var2) != 0); + case 1711058073: + default: + if (this.runs == 0) { + var1 = -886273693; + } else { + var1 = -1341459398; + } + } + } + } + + public void reset() { + this.best = 0.0F; + this.scoreSum = 0.0F; + this.runs = 0; + } + + public float getBest() { + return this.best; + } + + public float getScoreSum() { + return this.scoreSum; + } + + public int getRuns() { + return this.runs; + } + + public void setBest(float var1) { + this.best = var1; + } + + public void setScoreSum(float var1) { + this.scoreSum = var1; + } + + public void setRuns(int var1) { + this.runs = var1; + } +} diff --git a/src/main/java/defpackage/pb.java b/src/main/java/defpackage/pb.java new file mode 100644 index 0000000..09792ac --- /dev/null +++ b/src/main/java/defpackage/pb.java @@ -0,0 +1,417 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Optional; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.world.phys.Vec3; + +public final class pb extends ov { + private static final int FILL_COLOR = 5622078; + private static final int OUTLINE_COLOR = 9240410; + private static final double AIM_MARGIN = 0.02; + private static final int GRID_CELLS = 4; + private static final double CELL_JITTER = 0.55; + private static final double MIN_FLICK_CELLS = 1.2; + private static final double MIN_SEPARATION_FACTOR = 1.7; + private long reactionSum; + + @Override + public ou getType() { + return ou.FLICKING; + } + + @Override + protected void onStart() { + int var1 = 0; + int var2 = 17902328; + + while (true) { + switch (var2) { + case -1768958894: + if (var1 < oy.INSTANCE.getTargetCount()) { + var2 = -775370951; + } else { + var2 = -115603306; + } + break; + case -1742114198: + this.reactionSum = (-7739020502865716076L ^ 7739020502865716076L) + ((-7739020502865716076L & 7739020502865716076L) << 1); + this.anchorToPlayer(); + var1 = 0; + var2 = -1768958894; + break; + case -775370951: + this.targets.add(this.spawnTarget()); + var1++; + var2 = -1768958894; + break; + case -115603306: + return; + case 17902328: + default: + if (mc.player == null) { + var2 = 486260237; + } else { + var2 = -1742114198; + } + break; + case 486260237: + return; + } + } + } + + @Override + protected void onTick() { + long var1 = (207690023688069198L | -207690023688069198L) + (207690023688069198L & -207690023688069198L); + int var3 = 0; + long var4 = (-6158048799773076096L | 6158048799773076096L) + (-6158048799773076096L & 6158048799773076096L); + int var6 = -241849173; + + while (true) { + switch (var6) { + case -2008115237: + if (this.getElapsedMillis() >= var1) { + var6 = 1618431619; + } else { + var6 = 1186149652; + } + break; + case -1955555630: + this.targets.add(this.spawnTarget()); + var4 += (-5470496241420540179L | 5470496241420540180L) + (-5470496241420540179L & 5470496241420540180L); + var6 = 2054934116; + break; + case -1730014943: + return; + case -1625828745: + var1 = oy.INSTANCE.getDurationMillis(); + if (var1 > (7082452665222662074L ^ -7082452665222662074L) + ((7082452665222662074L & -7082452665222662074L) << 1)) { + var6 = -2008115237; + } else { + var6 = 1186149652; + } + break; + case -241849173: + default: + if (mc.player == null) { + var6 = 1033797899; + } else { + var6 = -1625828745; + } + break; + case 1033797899: + return; + case 1186149652: + this.updateAnchor(); + var3 = oy.INSTANCE.getTargetCount(); + var4 = this.targets.stream().filter(var0 -> { + int var2 = 0; + int var1x = 1952398475; + + while (true) { + switch (var1x) { + case -1786255228: + return (boolean)((var2) != 0); + case -1645312068: + var2 = 0; + var1x = -1786255228; + break; + case 1030603563: + var2 = 1; + var1x = -1786255228; + break; + case 1952398475: + default: + if (!var0.isHit()) { + var1x = 1030603563; + } else { + var1x = -1645312068; + } + } + } + }).count(); + var6 = 2054934116; + break; + case 1618431619: + this.finish(); + return; + case 2054934116: + if (var4 < var3) { + var6 = -1955555630; + } else { + var6 = -1730014943; + } + } + } + } + + @Override + public void onClick(boolean var1) { + pd var2 = null; + int var3 = -1287668142; + + while (true) { + switch (var3) { + case -1953998484: + this.misses += 1; + return; + case -1287668142: + default: + if (var1) { + var3 = 796678761; + } else { + var3 = 1147272991; + } + break; + case -913391015: + var2 = this.raycast(); + if (var2 == null) { + var3 = -1953998484; + } else { + var3 = -578819869; + } + break; + case -578819869: + var2.setHitMillis(System.currentTimeMillis()); + this.hits += 1; + this.reactionSum = this.reactionSum + + Math.max((2999333757396823890L | -2999333757396823890L) + (2999333757396823890L & -2999333757396823890L), var2.getReactionMillis()); + this.targets.add(this.spawnTarget()); + oy.INSTANCE.playHitFeedback(); + return; + case 796678761: + if (mc.player == null) { + var3 = 1147272991; + } else { + var3 = -913391015; + } + break; + case 1147272991: + return; + } + } + } + + private pd raycast() { + double var1 = 0.0; + Vec3 var3 = null; + Vec3 var4 = null; + pd var5 = null; + double var6 = 0.0; + Iterator var8 = null; + pd var9 = null; + Optional var10 = null; + double var11 = 0.0; + int var13 = 1064560010; + + while (true) { + switch (var13) { + case -2142161182: + return var5; + case -1897080347: + var9 = (pd)var8.next(); + if (var9.isHit()) { + var13 = 1662770054; + } else { + var13 = -1330841403; + } + break; + case -1625181117: + var6 = var11; + var5 = var9; + var13 = 410109039; + break; + case -1330841403: + var10 = var9.getBox().inflate(0.02).clip(var3, var4); + if (var10.isEmpty()) { + var13 = -122877880; + } else { + var13 = 1789020468; + } + break; + case -122877880: + var13 = 1616027003; + break; + case 410109039: + var13 = 1616027003; + break; + case 1064560010: + default: + var1 = oy.INSTANCE.getDistance() * 2.0 + 8.0; + var3 = mc.player.getEyePosition(); + var4 = var3.add(mc.player.getViewVector(1.0F).scale(var1)); + var5 = null; + var6 = Double.MAX_VALUE; + var8 = this.targets.iterator(); + var13 = 1616027003; + break; + case 1616027003: + if (var8.hasNext()) { + var13 = -1897080347; + } else { + var13 = -2142161182; + } + break; + case 1662770054: + var13 = 1616027003; + break; + case 1789020468: + var11 = var3.distanceToSqr((Vec3)var10.get()); + if (var11 < var6) { + var13 = -1625181117; + } else { + var13 = 410109039; + } + } + } + } + + private pd spawnTarget() { + double var1 = oy.INSTANCE.getTargetSize(); + return new pd(this.pickPosition(var1), var1, var1); + } + + private Vec3 pickPosition(double var1) { + oy var3 = oy.INSTANCE; + double var4 = var3.getDistance(); + double var6 = var3.getFieldSize() / 2.0; + double var8 = Math.max(-var6, this.lowestOffset(var1)); + double var10 = var6 * 2.0 / 4.0; + double var12 = (var6 - var8) / 4.0; + double[] var14 = this.aimOnPlane(var4); + double var15 = Math.max(var10, var12) * 1.2; + ArrayList var17 = new ArrayList(); + ArrayList var18 = new ArrayList(); + + for (int var19 = 0; var19 < 4; var19++) { + for (int var20 = 0; var20 < 4; var20++) { + double var21 = -var6 + var10 * (var19 + 0.5) + this.jitter() * var10 * 0.55 / 2.0; + double var23 = var8 + var12 * (var20 + 0.5) + this.jitter() * var12 * 0.55 / 2.0; + Vec3 var25 = this.toWorld(var21, var23, var4); + if (this.isClear(var25, var1, var1) && !(this.clearanceFromLiveTargets(var25) < var1 * 1.7)) { + var18.add(var25); + if (var14 == null + || Math.hypot( + var21 - var14[0], + var23 - var14[1] + ) + >= var15) { + var17.add(var25); + } + } + } + } + + ArrayList var26 = var17.isEmpty() ? var18 : var17; + return var26.isEmpty() + ? this.toWorld(this.jitter() * var6, var8 + this.random.nextDouble() * (var6 - var8), var4) + : (Vec3)var26.get(this.random.nextInt(var26.size())); + } + + private double clearanceFromLiveTargets(Vec3 var1) { + double var2 = 0.0; + Iterator var4 = null; + pd var5 = null; + int var6 = 409827099; + + while (true) { + switch (var6) { + case -1576204232: + var6 = -1207017602; + break; + case -1207017602: + if (var4.hasNext()) { + var6 = 1202123285; + } else { + var6 = 1074468509; + } + break; + case 409827099: + default: + var2 = Double.MAX_VALUE; + var4 = this.targets.iterator(); + var6 = -1207017602; + break; + case 474049433: + var2 = Math.min(var2, var1.distanceTo(var5.getCenter())); + var6 = -1207017602; + break; + case 1074468509: + return var2; + case 1202123285: + var5 = (pd)var4.next(); + if (var5.isHit()) { + var6 = -1576204232; + } else { + var6 = 474049433; + } + } + } + } + + @Override + public void renderWorld(PoseStack var1, SubmitNodeCollector var2, Vec3 var3) { + pe.render(var1, var2, var3, this.targets, 5622078, (-889711231 | 898951641) + (-889711231 & 898951641)); + } + + @Override + public String[][] getHudSections(float var1) { + String[][] var10002 = new String[3][]; + int var10004 = 0; + String[] var10005 = new String[2]; + var10005[0] = String.valueOf(this.hits); + var10005[1] = "HITS"; + var10002[var10004] = var10005; + var10004 = 1; + var10005 = new String[2]; + var10005[0] = this.averageReaction() + "ms"; + var10005[1] = "REACTION"; + var10002[var10004] = var10005; + var10004 = 2; + var10005 = new String[2]; + int var10007 = 0; + String var10008 = "%.0f%%"; + Object[] var10009 = new Object[1]; + var10009[0] = this.getAccuracyPercent(); + var10005[var10007] = String.format(var10008, var10009); + var10005[1] = "ACCURACY"; + var10002[var10004] = var10005; + return this.timedSections(var1, var10002); + } + + private long averageReaction() { + long var2 = (-6647704194132863719L | 6647704194132863719L) + (-6647704194132863719L & 6647704194132863719L); + int var1 = -988207489; + + while (true) { + switch (var1) { + case -2040176115: + var2 = (1801591963018722091L | -1801591963018722091L) + (1801591963018722091L & -1801591963018722091L); + var1 = 861907018; + break; + case -1418848230: + var2 = this.reactionSum / this.hits; + var1 = 861907018; + break; + case -988207489: + default: + if (this.hits == 0) { + var1 = -2040176115; + } else { + var1 = -1418848230; + } + break; + case 861907018: + return var2; + } + } + } + + @Override + public os buildResult() { + return new os(this.getType(), (float)this.averageReaction(), this.hits, this.misses, this.getElapsedMillis()); + } +} diff --git a/src/main/java/defpackage/pc.java b/src/main/java/defpackage/pc.java new file mode 100644 index 0000000..11b403d --- /dev/null +++ b/src/main/java/defpackage/pc.java @@ -0,0 +1,264 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +public final class pc extends ov { + private static final int FILL_COLOR = 5622078; + private static final int OUTLINE_COLOR = 9240410; + private static final double HEIGHT_RATIO = 2.4; + private static final double AIM_MARGIN = 0.02; + private static final double TICK_SECONDS = 0.05; + private static final double REVERSE_CHANCE = 0.045; + private static final double SPEED_VARIANCE = 0.35; + private static final double EDGE_MARGIN = 0.5; + private pd target; + private double offset; + private double velocity; + private int onTargetTicks; + private int totalTicks; + private int streak; + private int bestStreak; + + @Override + public ou getType() { + return ou.TRACKING; + } + + @Override + protected void onStart() { + if (mc.player != null) { + this.anchorToPlayer(); + this.onTargetTicks = 0; + this.totalTicks = 0; + this.streak = 0; + this.bestStreak = 0; + this.offset = 0.0; + this.velocity = this.randomSpeed() * (this.random.nextBoolean() ? 1.0 : -1.0); + this.target = new pd(this.positionFor(this.offset), this.width(), this.height()); + this.targets.add(this.target); + } + } + + @Override + protected void onTick() { + long var1 = (-592454729973496691L | 592454729973496691L) + (-592454729973496691L & 592454729973496691L); + int var3 = 30928332; + + while (true) { + switch (var3) { + case -1966467192: + var1 = oy.INSTANCE.getDurationMillis(); + if (var1 > (2906088607093393292L ^ -2906088607093393292L) + ((2906088607093393292L & -2906088607093393292L) << 1)) { + var3 = -1284591837; + } else { + var3 = 100257408; + } + break; + case -1284591837: + if (this.getElapsedMillis() >= var1) { + var3 = 1569827393; + } else { + var3 = 100257408; + } + break; + case 30928332: + default: + if (mc.player != null) { + var3 = 1783919417; + } else { + var3 = 54409771; + } + break; + case 54409771: + return; + case 100257408: + this.updateAnchor(); + this.moveTarget(); + this.scoreTick(); + return; + case 1569827393: + this.finish(); + return; + case 1783919417: + if (this.target == null) { + var3 = 54409771; + } else { + var3 = -1966467192; + } + } + } + } + + private void moveTarget() { + double var1 = 0.0; + int var3 = 370452040; + + while (true) { + switch (var3) { + case -632066981: + this.velocity = Math.copySign(this.randomSpeed(), -this.velocity); + var3 = -238203; + break; + case -289446629: + if (this.offset < -var1) { + var3 = 1761504659; + } else { + var3 = 1339193106; + } + break; + case -238203: + this.target.moveTo(this.positionFor(this.offset)); + return; + case 370452040: + default: + var1 = Math.max(0.0, oy.INSTANCE.getFieldSize() / 2.0 - this.width() / 2.0 - 0.5); + this.offset = this.offset + this.velocity * 0.05; + if (!(this.offset > var1)) { + var3 = -289446629; + } else { + var3 = 1761504659; + } + break; + case 1339193106: + if (this.random.nextDouble() < 0.045) { + var3 = -632066981; + } else { + var3 = -238203; + } + break; + case 1761504659: + this.offset = Mth.clamp(this.offset, -var1, var1); + this.velocity = Math.copySign(this.randomSpeed(), -this.velocity); + var3 = -238203; + } + } + } + + private void scoreTick() { + int var1 = 1847294278; + + while (true) { + switch (var1) { + case 532997026: + this.onTargetTicks += 1; + this.hits += 1; + this.streak += 1; + this.bestStreak = Math.max(this.bestStreak, this.streak); + var1 = 1133959852; + break; + case 1133959852: + return; + case 1777654857: + this.misses += 1; + this.streak = 0; + var1 = 1133959852; + break; + case 1847294278: + default: + this.totalTicks += 1; + if (this.isCrosshairOnTarget()) { + var1 = 532997026; + } else { + var1 = 1777654857; + } + } + } + } + + private boolean isCrosshairOnTarget() { + double var1 = oy.INSTANCE.getDistance() * 2.0 + 8.0; + Vec3 var3 = mc.player.getEyePosition(); + Vec3 var4 = var3.add(mc.player.getViewVector(1.0F).scale(var1)); + return this.target.getBox().inflate(0.02).clip(var3, var4).isPresent(); + } + + private Vec3 positionFor(double var1) { + double var3 = this.height(); + double var5 = -var3 / 2.0 + oy.INSTANCE.getTargetSize() / 2.0; + return this.toWorld(var1, Math.max(var5, this.lowestOffset(var3)), oy.INSTANCE.getDistance()); + } + + private double randomSpeed() { + double var1 = oy.INSTANCE.getTrackSpeed(); + return var1 * (0.65 + this.random.nextDouble() * 0.35 * 2.0); + } + + private double width() { + return oy.INSTANCE.getTargetSize(); + } + + private double height() { + return oy.INSTANCE.getTargetSize() * 2.4; + } + + @Override + public void renderWorld(PoseStack var1, SubmitNodeCollector var2, Vec3 var3) { + pe.render( + var1, + var2, + var3, + this.targets, + 5622078, + (-1188150817 ^ 1197391227) + ((-1188150817 & 1197391227) << 1) + ); + } + + @Override + public String[][] getHudSections(float var1) { + String[][] var10002 = new String[2][]; + int var10004 = 0; + String[] var10005 = new String[2]; + int var10007 = 0; + String var10008 = "%.0f%%"; + Object[] var10009 = new Object[1]; + var10009[0] = this.onTargetPercent(); + var10005[var10007] = String.format(var10008, var10009); + var10005[1] = "ON TARGET"; + var10002[var10004] = var10005; + var10004 = 1; + var10005 = new String[2]; + var10007 = 0; + var10008 = "%.1fs"; + var10009 = new Object[1]; + var10009[0] = this.bestStreak * 0.05; + var10005[var10007] = String.format(var10008, var10009); + var10005[1] = "BEST HOLD"; + var10002[var10004] = var10005; + return this.timedSections(var1, var10002); + } + + private float onTargetPercent() { + float var2 = 0.0F; + int var1 = 451002120; + + while (true) { + switch (var1) { + case -1417129442: + var2 = (float)this.onTargetTicks / this.totalTicks * 100.0F; + var1 = 139576668; + break; + case 139576668: + return var2; + case 387878625: + var2 = 0.0F; + var1 = 139576668; + break; + case 451002120: + default: + if (this.totalTicks == 0) { + var1 = 387878625; + } else { + var1 = -1417129442; + } + } + } + } + + @Override + public os buildResult() { + return new os(this.getType(), this.onTargetPercent(), this.hits, this.misses, this.getElapsedMillis()); + } +} diff --git a/src/main/java/defpackage/pd.java b/src/main/java/defpackage/pd.java new file mode 100644 index 0000000..301a754 --- /dev/null +++ b/src/main/java/defpackage/pd.java @@ -0,0 +1,152 @@ +package defpackage; + +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public final class pd { + private static final float DEATH_FADE_MILLIS = 180.0F; + private Vec3 center; + private final double halfWidth; + private final double halfHeight; + private final long spawnMillis; + private long hitMillis; + + public pd(Vec3 var1, double var2, double var4) { + this.center = var1; + this.halfWidth = var2 / 2.0; + this.halfHeight = var4 / 2.0; + this.spawnMillis = System.currentTimeMillis(); + } + + public void moveTo(Vec3 var1) { + this.center = var1; + } + + public AABB getBox() { + return new AABB( + this.center.x - this.halfWidth, + this.center.y - this.halfHeight, + this.center.z - this.halfWidth, + this.center.x + this.halfWidth, + this.center.y + this.halfHeight, + this.center.z + this.halfWidth + ); + } + + public boolean isHit() { + int var2 = 0; + int var1 = 356023055; + + while (true) { + switch (var1) { + case -1995789592: + var2 = 1; + var1 = 1852291137; + break; + case 356023055: + default: + if (this.hitMillis != (5902319684646893624L ^ -5902319684646893624L) + ((5902319684646893624L & -5902319684646893624L) << 1)) { + var1 = -1995789592; + } else { + var1 = 858388702; + } + break; + case 858388702: + var2 = 0; + var1 = 1852291137; + break; + case 1852291137: + return (boolean)((var2) != 0); + } + } + } + + public long getLifetimeMillis() { + return System.currentTimeMillis() - this.spawnMillis; + } + + public long getReactionMillis() { + return this.hitMillis - this.spawnMillis; + } + + public boolean isExpired() { + int var2 = 0; + int var1 = 2033934609; + + while (true) { + switch (var1) { + case -1674210683: + if ((float)(System.currentTimeMillis() - this.hitMillis) > 180.0F) { + var1 = -1165724420; + } else { + var1 = -1583146004; + } + break; + case -1583146004: + var2 = 0; + var1 = -587026096; + break; + case -1165724420: + var2 = 1; + var1 = -587026096; + break; + case -587026096: + return (boolean)((var2) != 0); + case 2033934609: + default: + if (this.isHit()) { + var1 = -1674210683; + } else { + var1 = -1583146004; + } + } + } + } + + public float getFade() { + float var1 = 0.0F; + int var2 = -1391354660; + + while (true) { + switch (var2) { + case -1391354660: + default: + if (!this.isHit()) { + var2 = -306429227; + } else { + var2 = 1648773294; + } + break; + case -306429227: + return 1.0F; + case 1648773294: + var1 = (float)(System.currentTimeMillis() - this.hitMillis); + return Math.max(0.0F, 1.0F - var1 / 180.0F); + } + } + } + + public Vec3 getCenter() { + return this.center; + } + + public double getHalfWidth() { + return this.halfWidth; + } + + public double getHalfHeight() { + return this.halfHeight; + } + + public long getSpawnMillis() { + return this.spawnMillis; + } + + public long getHitMillis() { + return this.hitMillis; + } + + public void setHitMillis(long var1) { + this.hitMillis = var1; + } +} diff --git a/src/main/java/defpackage/pe.java b/src/main/java/defpackage/pe.java new file mode 100644 index 0000000..abc5b02 --- /dev/null +++ b/src/main/java/defpackage/pe.java @@ -0,0 +1,192 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.Iterator; +import java.util.List; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.Shapes; + +public final class pe { + private static final float FILL_ALPHA = 0.5F; + private static final float OUTLINE_ALPHA = 1.0F; + private static final float HIT_EXPAND = 0.18F; + private static final float LINE_WIDTH = 2.0F; + + private pe() { + } + + public static void render(PoseStack var0, SubmitNodeCollector var1, Vec3 var2, List var3, int var4, int var5) { + Iterator var6 = null; + pd var7 = null; + float var8 = 0.0F; + int var9 = 1924324132; + + while (true) { + switch (var9) { + case -1785259123: + var0.popPose(); + return; + case -1588176805: + var7 = (pd)var6.next(); + var8 = var7.getFade(); + if (var8 <= 0.0F) { + var9 = 309428335; + } else { + var9 = 2146868716; + } + break; + case 309428335: + var9 = 2113226513; + break; + case 1924324132: + default: + var1.submitCustomGeometry(var0, arj.positionColorDepthNoWrite(), (var3x, var4x) -> { + Iterator var5x = null; + pd var6x = null; + float var7x = 0.0F; + int var8x = 745369958; + + while (true) { + switch (var8x) { + case -1844469102: + var8x = -873949907; + break; + case -873949907: + if (var5x.hasNext()) { + var8x = 299536558; + } else { + var8x = 889091418; + } + break; + case 299536558: + var6x = (pd)var5x.next(); + var7x = var6x.getFade(); + if (var7x <= 0.0F) { + var8x = -1844469102; + } else { + var8x = 699593731; + } + break; + case 699593731: + addFilledBox(var4x, var3x, boxOf(var6x), var2, withAlpha(var4, 0.5F * var7x)); + var8x = -873949907; + break; + case 745369958: + default: + var5x = var3.iterator(); + var8x = -873949907; + break; + case 889091418: + return; + } + } + }); + var0.pushPose(); + var0.translate(-var2.x, -var2.y, -var2.z); + var6 = var3.iterator(); + var9 = 2113226513; + break; + case 2113226513: + if (var6.hasNext()) { + var9 = -1588176805; + } else { + var9 = -1785259123; + } + break; + case 2146868716: + var1.submitShapeOutline( + var0, + Shapes.create(boxOf(var7)), + arj.lines(), + withAlpha(var5, 1.0F * var8), + 2.0F, + (boolean)((((-1444176984 | 1444176984) + (-1444176984 & 1444176984)) + ) != 0)); + var9 = 2113226513; + } + } + } + + private static AABB boxOf(pd var0) { + AABB var1 = null; + AABB var3 = null; + int var2 = -426731425; + + while (true) { + switch (var2) { + case -443707307: + var3 = var1.inflate(0.18F * (1.0F - var0.getFade())); + var2 = 1442323208; + break; + case -426731425: + default: + var1 = var0.getBox(); + if (var0.isHit()) { + var2 = -443707307; + } else { + var2 = 1209058849; + } + break; + case 1209058849: + var3 = var1; + var2 = 1442323208; + break; + case 1442323208: + return var3; + } + } + } + + private static void addFilledBox(VertexConsumer var0, Pose var1, AABB var2, Vec3 var3, int var4) { + float var5 = (float)(var2.minX - var3.x); + float var6 = (float)(var2.minY - var3.y); + float var7 = (float)(var2.minZ - var3.z); + float var8 = (float)(var2.maxX - var3.x); + float var9 = (float)(var2.maxY - var3.y); + float var10 = (float)(var2.maxZ - var3.z); + quad(var0, var1, var4, var5, var6, var7, var5, var9, var7, var8, var9, var7, var8, var6, var7); + quad(var0, var1, var4, var8, var6, var10, var8, var9, var10, var5, var9, var10, var5, var6, var10); + quad(var0, var1, var4, var5, var6, var10, var5, var9, var10, var5, var9, var7, var5, var6, var7); + quad(var0, var1, var4, var8, var6, var7, var8, var9, var7, var8, var9, var10, var8, var6, var10); + quad(var0, var1, var4, var5, var9, var7, var5, var9, var10, var8, var9, var10, var8, var9, var7); + quad(var0, var1, var4, var5, var6, var10, var5, var6, var7, var8, var6, var7, var8, var6, var10); + } + + private static void quad( + VertexConsumer var0, + Pose var1, + int var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13, + float var14 + ) { + var0.addVertex(var1, var3, var4, var5).setColor(var2); + var0.addVertex(var1, var6, var7, var8).setColor(var2); + var0.addVertex(var1, var9, var10, var11).setColor(var2); + var0.addVertex(var1, var12, var13, var14).setColor(var2); + } + + private static int withAlpha(int var0, float var1) { + return Mth.clamp( + Math.round(var1 * 255.0F), + 0, + (387437805 ^ -387437550) + ((387437805 & -387437550) << 1) + ) + << (518660976 ^ -518660952) + ((518660976 & -518660952) << 1) + | var0 & 16777215; + } +} diff --git a/src/main/java/defpackage/pf.java b/src/main/java/defpackage/pf.java new file mode 100644 index 0000000..f2d54ee --- /dev/null +++ b/src/main/java/defpackage/pf.java @@ -0,0 +1,17 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:pf.class */ +/* synthetic */ class pf { + static final /* synthetic */ int[] $SwitchMap$evo$systems$utility$render$display$base$SurfaceRole = new int[aso.values().length]; + + static { + try { + $SwitchMap$evo$systems$utility$render$display$base$SurfaceRole[aso.CARD.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$utility$render$display$base$SurfaceRole[aso.ROW.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + } +} diff --git a/src/main/java/defpackage/pg.java b/src/main/java/defpackage/pg.java new file mode 100644 index 0000000..2340de5 --- /dev/null +++ b/src/main/java/defpackage/pg.java @@ -0,0 +1,40 @@ +package defpackage; + +public final class pg { + public static final float PROGRESS_EPSILON = 0.001F; + public static final float PROGRESS_FULL = 0.999F; + public static final float NEUTRAL_TINT_ALPHA = 0.03F; + public static final float REFRACTIVE_BORDER_ALPHA = 0.08F; + private static final float CARD_FILL_ALPHA = 0.1F; + private static final float ROW_FILL_ALPHA = 0.06F; + private static final float CONTROL_FILL_ALPHA = 0.08F; + private static final float CARD_TINT_RANGE = 0.34F; + private static final float ROW_TINT_RANGE = 0.22F; + private static final float CONTROL_TINT_RANGE = 0.26F; + private static final float CARD_BORDER_ALPHA = 0.1F; + private static final float ROW_BORDER_ALPHA = 0.06F; + private static final float CONTROL_BORDER_ALPHA = 0.09F; + + private pg() { + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public static float innerFillAlpha(aso var0, float var1) { + return switch (pf.$SwitchMap$evo$systems$utility$render$display$base$SurfaceRole[var0.ordinal()]) { + case 1 -> 0.1F + Math.abs(var1) * 0.34F; + case 2 -> 0.06F + Math.abs(var1) * 0.22F; + default -> 0.08F + Math.abs(var1) * 0.26F; + }; + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public static float innerBorderAlpha(aso var0) { + return switch (pf.$SwitchMap$evo$systems$utility$render$display$base$SurfaceRole[var0.ordinal()]) { + case 1 -> 0.1F; + case 2 -> 0.06F; + default -> 0.09F; + }; + } +} diff --git a/src/main/java/defpackage/ph.java b/src/main/java/defpackage/ph.java new file mode 100644 index 0000000..e97b4f5 --- /dev/null +++ b/src/main/java/defpackage/ph.java @@ -0,0 +1,135 @@ +package defpackage; + +import java.util.Locale; + +public final class ph { + public static final asu ABSORPTION = new asu( + 232, + 186, + 74, + (-780794299 | 780794554) + (-780794299 & 780794554) + ); + private static final asu LOW = new asu( + 226, + 96, + 96, + (-645711173 | 645711428) + (-645711173 & 645711428) + ); + private static final asu FULL = new asu( + 88, + 194, + 125, + (489548685 ^ -489548430) + ((489548685 & -489548430) << 1) + ); + private static final float MIN_FILL = 0.6F; + + private ph() { + } + + public static asu healthColor(float var0, float var1) { + float var2 = 0.0F; + float var4 = 0.0F; + int var3 = 886759330; + + while (true) { + switch (var3) { + case -920476362: + var4 = 0.0F; + var3 = 1406810982; + break; + case 588918585: + var4 = Math.min(1.0F, Math.max(0.0F, var0 / var1)); + var3 = 1406810982; + break; + case 886759330: + default: + if (var1 <= 0.0F) { + var3 = -920476362; + } else { + var3 = 588918585; + } + break; + case 1406810982: + var2 = var4; + return asu.lerp(LOW, FULL, var2); + } + } + } + + public static void draw(aru var0, float var1, float var2, float var3, float var4, float var5, float var6, float var7, mv var8, float var9) { + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = -183501442; + + while (true) { + switch (var14) { + case -1893990135: + var13 = var3 * var7 / var11; + var0.drawRoundedRect(var1 + var3 - var13, var2, Math.max(0.6F, var13), var4, asj.uniform(var10), ABSORPTION.mulAlpha(var9)); + var14 = -447697906; + break; + case -1163367258: + var0.drawRoundedRect(var1, var2, Math.max(0.6F, var12), var4, asj.uniform(var10), healthColor(var5, var6).mulAlpha(var9)); + var14 = -981958145; + break; + case -981958145: + if (var7 > 0.0F) { + var14 = -1893990135; + } else { + var14 = -447697906; + } + break; + case -447697906: + return; + case -183501442: + default: + var10 = var4 / 2.0F; + var0.drawRoundedRect(var1, var2, var3, var4, asj.uniform(var10), var8.getForegroundDark().mulAlpha(var9)); + var11 = Math.max(1.0F, var6 + var7); + var12 = var3 * Math.min(var5, var6) / var11; + if (var12 > 0.0F) { + var14 = -1163367258; + } else { + var14 = -981958145; + } + } + } + } + + public static String format(float var0) { + String var1 = null; + String var3 = null; + int var2 = -1306503942; + + while (true) { + switch (var2) { + case -1306503942: + default: + Locale var10000 = Locale.ROOT; + String var10001 = "%.1f"; + Object[] var10002 = new Object[1]; + var10002[0] = var0; + var1 = String.format(var10000, var10001, var10002); + if (var1.endsWith(".0")) { + var2 = 549721073; + } else { + var2 = -1275556188; + } + break; + case -1275556188: + var3 = var1; + var2 = -488933913; + break; + case -488933913: + return var3; + case 549721073: + var3 = var1.substring( + 0, var1.length() - ((-319856960 | 319856962) + (-319856960 & 319856962)) + ); + var2 = -488933913; + } + } + } +} diff --git a/src/main/java/defpackage/pi.java b/src/main/java/defpackage/pi.java new file mode 100644 index 0000000..a702c82 --- /dev/null +++ b/src/main/java/defpackage/pi.java @@ -0,0 +1,446 @@ +package defpackage; + +import net.minecraft.util.Mth; + +public final class pi { + public static final float BAR_BASE_HEIGHT = 18.0F; + private static final float DIVIDER_WIDTH = 0.6F; + private static final float DIVIDER_INSET = 4.0F; + private static final float ICON_TEXT_GAP = 3.0F; + private static final float GRAPH_BAR_GAP = 0.8F; + private static final float GRAPH_MIN_BAR = 0.6F; + private static final float ALPHA_SCALE = 255.0F; + private static final float HEADER_BASE_HEIGHT = 18.0F; + private static final float ROW_INSET = 2.0F; + private static final float ROW_SHADE_ALPHA = 0.05F; + private static final float PROGRESS_HEIGHT = 1.4F; + private static final asu GAUGE_GOOD = new asu( + 94, + 200, + 120, + (-110059798 ^ 110060053) + ((-110059798 & 110060053) << 1) + ); + private static final asu GAUGE_WARN = new asu( + 232, + 186, + 74, + (107891689 ^ -107891434) + ((107891689 & -107891434) << 1) + ); + private static final asu GAUGE_BAD = new asu( + 228, + 92, + 92, + (-361977971 ^ 361978226) + ((-361977971 & 361978226) << 1) + ); + private static final float GAUGE_MIDPOINT = 0.5F; + + private pi() { + } + + public static asu gaugeGood() { + return GAUGE_GOOD; + } + + public static asu gaugeWarn() { + return GAUGE_WARN; + } + + public static asu gaugeBad() { + return GAUGE_BAD; + } + + public static asu healthColor(float var0) { + float var1 = 0.0F; + int var2 = -899012241; + + while (true) { + switch (var2) { + case -899012241: + default: + var1 = Mth.clamp(var0, 0.0F, 1.0F); + if (var1 < 0.5F) { + var2 = -467731567; + } else { + var2 = 1633197760; + } + break; + case -467731567: + return asu.lerp(GAUGE_BAD, GAUGE_WARN, var1 / 0.5F); + case 1633197760: + return asu.lerp(GAUGE_WARN, GAUGE_GOOD, (var1 - 0.5F) / 0.5F); + } + } + } + + public static float barHeight() { + return 18.0F * pk.rowScale(); + } + + public static float pad() { + return pk.space(od.MD); + } + + public static float gap() { + return pk.space(od.SM); + } + + public static arq radius() { + return asj.uniform(pk.radiusPanel()); + } + + public static ge iconFont() { + return gl.ICONS.getFont(pk.textSize(oe.CAPTION)); + } + + public static ge labelFont() { + return pk.font(oe.MICRO); + } + + public static ge textFont() { + return pk.font(oe.CAPTION); + } + + public static ge valueFont() { + return pk.font(oe.LABEL_STRONG); + } + + public static ge brandFont() { + return pk.font(oe.HEADING); + } + + public static void surface(aru var0, float var1, float var2, float var3, float var4) { + surface(var0, var1, var2, var3, var4, radius(), nz.LOW, 1.0F); + } + + public static void surface(aru var0, float var1, float var2, float var3, float var4, arq var5, asu var6) { + surface(var0, var1, var2, var3, var4, var5, nz.LOW, var6.getAlpha() / 255.0F); + } + + public static void surface(aru var0, float var1, float var2, float var3, float var4, arq var5, nz var6, float var7) { + int var8 = -67503657; + + while (true) { + switch (var8) { + case -1301727128: + if (!(var4 <= 0.0F)) { + var8 = 2066621736; + } else { + var8 = 1746087231; + } + break; + case -785374285: + ast.shadow(var0, var1, var2, var3, var4, var5, var6, var7); + atb.drawAcrylicHud(var0.pose(), var1, var2, var3, var4, var5, asu.WHITE.mulAlpha(var7)); + return; + case -67503657: + default: + if (!(var3 <= 0.0F)) { + var8 = -1301727128; + } else { + var8 = 1746087231; + } + break; + case 1746087231: + return; + case 2066621736: + if (var7 <= 0.0F) { + var8 = 1746087231; + } else { + var8 = -785374285; + } + } + } + } + + public static float dividerWidth() { + return 0.6F; + } + + public static float divider(aru var0, float var1, float var2, float var3) { + float var4 = Math.min(4.0F, var3 * 0.35F); + var0.drawRect(var1, var2 + var4, 0.6F, var3 - var4 * 2.0F, oq.current().color(nx.ON_SURFACE).withAlpha(mx.current().dividerAlpha())); + return var1 + 0.6F; + } + + public static float headerHeight() { + return 18.0F * pk.rowScale(); + } + + public static void header(aru var0, String var1, String var2, String var3, float var4, float var5, float var6) { + header(var0, var1, var2, var3, var4, var5, var6, bz.getInstance().getThemeManager().getCurrentTheme(), 1.0F); + } + + public static void header(aru var0, String var1, String var2, String var3, float var4, float var5, float var6, mv var7, float var8) { + float var9 = 0.0F; + ge var10 = null; + ge var11 = null; + ge var12 = null; + int var13 = -1567593410; + + while (true) { + switch (var13) { + case -1567593410: + default: + if (var8 <= 0.0F) { + var13 = 595379810; + } else { + var13 = -1369436367; + } + break; + case -1369436367: + var9 = headerHeight(); + var10 = iconFont(); + var11 = valueFont(); + var0.drawText(var10, var1, var4 + pad(), var5 + (var9 - var10.height()) / 2.0F, ink(var7.getColor(), var8)); + var0.drawText(var11, var2, var4 + pad() + var10.width(var1) + 3.0F, var5 + (var9 - var11.height()) / 2.0F, ink(var7.getWhite(), var8)); + if (var3 != null) { + var13 = 1397441538; + } else { + var13 = 2134328891; + } + break; + case -967458779: + var12 = labelFont(); + var0.drawText(var12, var3, var4 + var6 - pad() - var12.width(var3), var5 + (var9 - var12.height()) / 2.0F, ink(var7.getGrayLight(), var8)); + var13 = 2134328891; + break; + case 595379810: + return; + case 1397441538: + if (!var3.isEmpty()) { + var13 = -967458779; + } else { + var13 = 2134328891; + } + break; + case 2134328891: + ast.divider(var0, var4 + pad(), var5 + var9, var6 - pad() * 2.0F, var8); + return; + } + } + } + + private static asu ink(asu var0, float var1) { + asu var3 = null; + int var2 = 90842518; + + while (true) { + switch (var2) { + case -1281837946: + var3 = var0.mulAlpha(var1); + var2 = -850199678; + break; + case -850199678: + return var3; + case 90842518: + default: + if (var1 >= 1.0F) { + var2 = 1175941055; + } else { + var2 = -1281837946; + } + break; + case 1175941055: + var3 = var0; + var2 = -850199678; + } + } + } + + public static float headerWidth(String var0, String var1, String var2) { + ge var3 = null; + float var4 = 0.0F; + int var5 = -1178689274; + + while (true) { + switch (var5) { + case -1178689274: + default: + var3 = iconFont(); + var4 = pad() + var3.width(var0) + 3.0F + valueFont().width(var1) + pad(); + if (var2 != null) { + var5 = -370142551; + } else { + var5 = 984471288; + } + break; + case -370142551: + if (!var2.isEmpty()) { + var5 = 606280866; + } else { + var5 = 984471288; + } + break; + case 606280866: + var4 += labelFont().width(var2) + pad(); + var5 = 984471288; + break; + case 984471288: + return var4; + } + } + } + + public static void listRow(aru var0, float var1, float var2, float var3, float var4, boolean var5, boolean var6) { + arq var7 = null; + arq var9 = null; + int var8 = 1820958427; + + while (true) { + switch (var8) { + case -924087875: + return; + case -308437003: + var9 = arq.ZERO; + var8 = -248769081; + break; + case -248769081: + var7 = var9; + var0.drawSurface(aso.ROW, var1 + 2.0F, var2, var3 - 4.0F, var4, var7, oq.current().color(nx.ON_SURFACE).withAlpha(0.05F)); + return; + case 824811867: + if (var6) { + var8 = 1091860649; + } else { + var8 = -308437003; + } + break; + case 1091860649: + var9 = asj.bottom(oc.INNER); + var8 = -248769081; + break; + case 1820958427: + default: + if (!var5) { + var8 = -924087875; + } else { + var8 = 824811867; + } + } + } + } + + public static void progress(aru var0, float var1, float var2, float var3, float var4, asu var5) { + float var6 = 0.0F; + arq var7 = null; + int var8 = -2027652115; + + while (true) { + switch (var8) { + case -2027652115: + default: + if (!(var3 <= 0.0F)) { + var8 = 1799817925; + } else { + var8 = -1994843265; + } + break; + case -1994843265: + return; + case -467066318: + var6 = Math.min(var4, 1.0F); + var7 = asj.pill(1.4F); + var0.drawRoundedRect(var1, var2, Math.max(1.4F, var3 * var6), 1.4F, var7, var5); + return; + case 1799817925: + if (var4 <= 0.0F) { + var8 = -1994843265; + } else { + var8 = -467066318; + } + } + } + } + + public static float progressHeight() { + return 1.4F; + } + + public static float sectionWidth(ge var0, String var1, ge var2, String var3) { + return pad() + var0.width(var1) + 3.0F + var2.width(var3) + pad(); + } + + public static float section(aru var0, ge var1, String var2, ge var3, String var4, float var5, float var6, float var7, float var8, asu var9, asu var10) { + var0.clipTrailing(var5, var6, var5 + var8, var6 + var7, ars.revealFade()); + float var11 = var5 + pad(); + var0.drawText(var1, var2, var11, var6 + (var7 - var1.height()) / 2.0F, var9); + var11 += var1.width(var2) + 3.0F; + var0.drawText(var3, var4, var11, var6 + (var7 - var3.height()) / 2.0F, var10); + var0.popClip(); + return var5 + var8; + } + + public static void graph(aru var0, float var1, float var2, float var3, float var4, float[] var5, int var6, float var7, asu var8) { + float var9 = 0.0F; + arq var10 = null; + float var11 = 0.0F; + int var12 = 0; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + int var17 = 436678693; + + while (true) { + switch (var17) { + case -1839587305: + var9 = (var3 - 0.8F * (var5.length - ((891436226 ^ -891436225) + ((891436226 & -891436225) << 1)))) / var5.length; + if (var9 <= 0.0F) { + var17 = -987011459; + } else { + var17 = 1603845038; + } + break; + case -1787322425: + if (!(var4 <= 0.0F)) { + var17 = 1600561809; + } else { + var17 = 660367836; + } + break; + case -987011459: + return; + case -428646241: + return; + case 436678693: + default: + if (!(var3 <= 0.0F)) { + var17 = -1787322425; + } else { + var17 = 660367836; + } + break; + case 660367836: + return; + case 884608644: + if (var12 < var5.length) { + var17 = 1995743027; + } else { + var17 = -428646241; + } + break; + case 1600561809: + if (var5.length == 0) { + var17 = 660367836; + } else { + var17 = -1839587305; + } + break; + case 1603845038: + var10 = asj.uniform(Math.min(var9, var4) * 0.5F); + var11 = Math.max(var7, 1.0F); + var12 = 0; + var17 = 884608644; + break; + case 1995743027: + var13 = var5[(var6 + var12) % var5.length]; + var14 = Math.min(var13 / var11, 1.0F); + var15 = Math.max(0.6F, var4 * var14); + var16 = (var12 + 1.0F) / var5.length; + var0.drawRoundedRect(var1 + var12 * (var9 + 0.8F), var2 + var4 - var15, var9, var15, var10, var8.mulAlpha(0.35F + 0.65F * var16)); + var12++; + var17 = 884608644; + } + } + } +} diff --git a/src/main/java/defpackage/pj.java b/src/main/java/defpackage/pj.java new file mode 100644 index 0000000..ba43e8a --- /dev/null +++ b/src/main/java/defpackage/pj.java @@ -0,0 +1,93 @@ +package defpackage; + +public final class pj { + private static final double HALF = 0.5; + private static final double MAX_DELTA_MS = 200.0; + private double lastTime = -1.0; + private float sizeFactor; + private float valueFactor; + + public void beginFrame() { + double var1 = 0.0; + double var3 = 0.0; + int var5 = -1366796625; + + while (true) { + switch (var5) { + case -1366796625: + default: + var1 = cs.elapsedMillis(); + if (this.lastTime < 0.0) { + var5 = 1687272542; + } else { + var5 = 1314442535; + } + break; + case 1314442535: + var3 = Math.min(var1 - this.lastTime, 200.0); + this.lastTime = var1; + this.sizeFactor = factor(var3, pk.motion(ob.FAST)); + this.valueFactor = factor(var3, pk.motion(ob.SETTLED)); + return; + case 1687272542: + this.lastTime = var1; + var5 = 1314442535; + } + } + } + + public float width(float var1, float var2) { + int var3 = -1629599401; + + while (true) { + switch (var3) { + case -1788695430: + return var2; + case -1629599401: + default: + if (var1 == 0.0F) { + var3 = -1788695430; + } else { + var3 = -1373332279; + } + break; + case -1373332279: + return var1 + (var2 - var1) * this.sizeFactor; + } + } + } + + public float value(float var1, float var2) { + return var1 + (var2 - var1) * this.valueFactor; + } + + private static float factor(double var0, double var2) { + int var4 = -2095971836; + + while (true) { + switch (var4) { + case -2095971836: + default: + if (var0 <= 0.0) { + var4 = 1984366111; + } else { + var4 = 1205247751; + } + break; + case -530322759: + return 1.0F; + case 1205247751: + if (var2 <= 0.0) { + var4 = -530322759; + } else { + var4 = 2118817690; + } + break; + case 1984366111: + return 0.0F; + case 2118817690: + return (float)(1.0 - Math.pow(0.5, var0 / var2)); + } + } + } +} diff --git a/src/main/java/defpackage/pk.java b/src/main/java/defpackage/pk.java new file mode 100644 index 0000000..135ece5 --- /dev/null +++ b/src/main/java/defpackage/pk.java @@ -0,0 +1,140 @@ +package defpackage; + +public final class pk { + public static final float RADIUS_PANEL = 4.0F; + public static final float RADIUS_PANEL_LG = 8.0F; + public static final float RADIUS_INNER = 3.0F; + public static final float RADIUS_CHIP = 3.0F; + public static final float PAD = 5.0F; + public static final float PAD_INNER = 4.0F; + public static final float GAP = 4.0F; + public static final float HEADER_H = 12.0F; + public static final float HEADER_PAD = 5.0F; + public static final float HEADER_GAP = 3.0F; + public static final float HEADER_TRAILING_ALPHA = 0.5F; + public static final float ACCENT_THICKNESS = 1.5F; + public static final float SHADOW_SOFT = 8.0F; + public static final float SHADOW_ALPHA = 0.16F; + public static final int ANIM_FAST = 150; + public static final int ANIM_MED = 250; + public static final int ANIM_SLOW = 350; + private static final float MIN_ANIMATION_SPEED = 0.05F; + private static final float RIM_RATIO = 0.5F; + private static final float HAIRLINE_RATIO = 0.1F; + private static final float FINE_RATIO = 0.5F; + + private pk() { + } + + public static float radiusPanel() { + return mx.current().radiusPanel(); + } + + public static float radiusPanelLarge() { + return mx.current().radiusPanelLarge(); + } + + public static float radiusInner() { + return mx.current().radiusInner(); + } + + public static float radiusChip() { + return mx.current().radiusChip(); + } + + public static float borderThickness() { + return mx.current().borderThickness(); + } + + public static float borderFine() { + return 0.5F * mx.current().borderThickness(); + } + + public static float borderRim() { + return -0.5F * mx.current().borderThickness(); + } + + public static float borderHairline() { + return -0.1F * mx.current().borderThickness(); + } + + public static float dividerAlpha() { + return mx.current().dividerAlpha(); + } + + public static float shadowSoft() { + return mx.current().shadowSoftness(); + } + + public static float shadowAlpha() { + return mx.current().shadowAlpha(); + } + + public static float shadowSoftScale() { + return mx.current().shadowSoftness() / 8.0F; + } + + public static float shadowAlphaScale() { + return mx.current().shadowAlpha() / 0.16F; + } + + public static float animationSpeed() { + return Math.max(mx.current().animationSpeed(), 0.05F); + } + + public static int animDuration(int var0) { + return Math.round(var0 / animationSpeed()); + } + + public static float space(od var0) { + return oq.current().spacing(var0); + } + + public static float pad() { + return oq.current().spacing(od.MD); + } + + public static float padInner() { + return oq.current().spacing(od.SM); + } + + public static float gap() { + return oq.current().spacing(od.SM); + } + + public static float headerHeight() { + return oq.current().spacing(od.XXL); + } + + public static float headerPad() { + return oq.current().spacing(od.MD); + } + + public static float headerGap() { + return oq.current().spacing(od.XS); + } + + public static float rowScale() { + return oq.current().rowScale(); + } + + public static ge font(oe var0) { + return oq.current().font(var0); + } + + public static float textSize(oe var0) { + return oq.current().textSize(var0); + } + + public static float shadowSoftness(nz var0) { + return oq.current().shadowSoftness(var0); + } + + public static float shadowAlpha(nz var0) { + return oq.current().shadowAlpha(var0); + } + + public static int motion(ob var0) { + return oq.current().duration(var0); + } +} diff --git a/src/main/java/defpackage/pl.java b/src/main/java/defpackage/pl.java new file mode 100644 index 0000000..7034e30 --- /dev/null +++ b/src/main/java/defpackage/pl.java @@ -0,0 +1,61 @@ +package defpackage; + +import java.util.function.Supplier; + +public class pl { + private static final float ICON_FONT_SIZE = 6.0F; + private final String icon; + private final Supplier text; + private final String prefix; + private float width; + + public pl(String var1, Supplier var2) { + this(var1, var2, ""); + } + + public void calculateWidth(ge var1, float var2, float var3, float var4) { + float var5 = this.text != null + ? var1.width(this.text.get()) + + var1.width(this.prefix) + + (this.prefix.isEmpty() ? 0: (1238868282 ^ -1238868281) + ((1238868282 & -1238868281) << 1)) + : 0.0F; + this.width = var3 * 2.0F; + this.width = this.width + (var1.width(this.icon) + var4 + var5); + } + + public void drawContent(aru var1, float var2, float var3, float var4, float var5, float var6, asu var7, asu var8, ge var9) { + if (this.text != null) { + ge var10 = gl.ICONS.getFont(6.0F); + float var11 = var3 + (var4 - var9.height()) / 2.0F; + String var12 = this.text.get(); + float var13 = var9.width(var12); + float var14 = var13 + + var9.width(this.prefix) + + ( + this.prefix.isEmpty() + ? 0: (-2144313648 ^ 2144313649) + ((-2144313648 & 2144313649) << 1) + ) + + var9.width(this.icon) + + var6 + + var6 / 2.0F; + float var15 = var2 + (this.width - var14) / 2.0F; + if (this.icon != null) { + var1.drawText(var10, this.icon, var15, var11, var7); + var15 += var5 + var6; + } + + var1.drawText(var9, var12, var15, var11, var8); + var1.drawText(var9, this.prefix, var15 + var13 + 1.0F, var11, bz.getInstance().getThemeManager().getCurrentTheme().getGrayLight()); + } + } + + public pl(String var1, Supplier var2, String var3) { + this.icon = var1; + this.text = var2; + this.prefix = var3; + } + + public float getWidth() { + return this.width; + } +} diff --git a/src/main/java/defpackage/pm.java b/src/main/java/defpackage/pm.java new file mode 100644 index 0000000..6c30214 --- /dev/null +++ b/src/main/java/defpackage/pm.java @@ -0,0 +1,158 @@ +package defpackage; + +import java.util.Objects; +import java.util.function.BooleanSupplier; +import java.util.function.Supplier; +import net.minecraft.world.item.ItemStack; + +class pm { + private pp this$0; + + final ct animation; + private final ct animationColor; + private final ct animationProgress; + private final ItemStack iconStack; + private final String displayName; + private final Supplier progressSupplier; + private final BooleanSupplier finishedSupplier; + private final Supplier remainingSecondsSupplier; + + public pm(pp var1, ItemStack var2, String var3, float var4, Supplier var5, BooleanSupplier var6, Supplier var7) { + Objects.requireNonNull(var1); + this.this$0 = var1; + this.animation = ct.layout(ob.FAST, 0.01F); + this.animationColor = ct.layout(ob.MEDIUM); + this.iconStack = var2; + this.displayName = var3; + this.progressSupplier = var5; + this.finishedSupplier = var6; + this.remainingSecondsSupplier = var7; + this.animationProgress = ct.layout(ob.MEDIUM, var4); + } + + public float updateWidth() { + String var1 = this.formatTime(this.remainingSecondsSupplier.get()); + float var2 = gl.MEDIUM.getWidth(this.displayName, 6.0F); + float var3 = gl.MEDIUM.getWidth(var1, 6.0F); + return 24.0F + var2 + 8.0F + var3 + 8.0F; + } + + public float getHeight() { + return 18.0F * this.animation.value(); + } + + public void render(aru var1, float var2, float var3, float var4, int var5) { + float var6 = this.updateProgressAndGet(); + mv var7 = bz.getInstance().getThemeManager().getCurrentTheme(); + ge var8 = gl.MEDIUM.getFont(6.0F); + this.animation.update(var6 > 0.0F ? 1.0F : 0.0F); + var1.pushMatrix(); + var1.pose().translate(var2 + var4 / 2.0F, var3 + 9.0F); + float var9 = this.animation.value(); + var1.pose().scale(var9, var9); + var1.pose().translate(-(var2 + var4 / 2.0F), -(var3 + 9.0F)); + this.animationColor.update(var5 % 2== 0 ? 1.0F : 0.0F); + asu var10 = new asu( + 0, + 0, + 0, + (1431696752 ^ -1431696752) + ((1431696752 & -1431696752) << 1) + ) + .mix(var7.getColor().withAlpha((58033340 | -58033320) + (58033340 & -58033320)), this.animationColor.value()); + float var11 = var5 == this.this$0.keyModules.size() - 1? 16.0F : 18.0F; + var1.drawSurface( + aso.ROW, + var2 + 2.0F, + var3, + var4 - 4.0F, + var11, + var5 == this.this$0.keyModules.size() - 1? asj.bottom(oc.CHIP) : arq.ZERO, + var10 + ); + if (arz.hudItemsVisible()) { + var1.pushMatrix(); + var1.pose().translate(var2 + 6.0F, var3 + 5.0F); + var1.pose().scale(0.5F, 0.5F); + var1.item(this.iconStack, 0, (-1232223446 | 1232223446) + (-1232223446 & 1232223446)); + var1.popMatrix(); + } + + var1.drawText(var8, this.displayName, var2 + 8.0F + 8.0F + 8.0F, var3 + (18.0F - var8.height()) / 2.0F, var7.getWhite()); + String var12 = this.formatTime(this.remainingSecondsSupplier.get()); + float var13 = gl.MEDIUM.getWidth(var12, 6.0F); + var1.drawText(var8, var12, var2 + var4 - var13 - 8.0F, var3 + (18.0F - var8.height()) / 2.0F, var7.getColor()); + var1.popMatrix(); + } + + public boolean isDelete() { + int var2 = 0; + int var1 = -2021864523; + + while (true) { + switch (var1) { + case -2021864523: + default: + if (this.animation.value() == 0.0F) { + var1 = 1207581177; + } else { + var1 = 47352933; + } + break; + case 47352933: + var2 = 0; + var1 = 1702846901; + break; + case 1207581177: + if (this.finishedSupplier.getAsBoolean()) { + var1 = 1315271842; + } else { + var1 = 47352933; + } + break; + case 1315271842: + var2 = 1; + var1 = 1702846901; + break; + case 1702846901: + return (boolean)((var2) != 0); + } + } + } + + private float updateProgressAndGet() { + float var1 = this.progressSupplier.get(); + this.animationProgress.update(var1); + return aqj.round(this.animationProgress.value()); + } + + private String formatTime(int var1) { + int var2 = 0; + int var3 = 0; + int var4 = -687141918; + + while (true) { + switch (var4) { + case -687141918: + default: + if (var1 < 0) { + var4 = 620899350; + } else { + var4 = 1860789848; + } + break; + case 620899350: + var1 = 0; + var4 = 1860789848; + break; + case 1860789848: + var2 = var1 / (60); + var3 = var1 % (60); + String var10000 = "%d:%02d"; + Object[] var10001 = new Object[2]; + var10001[0] = var2; + var10001[1] = var3; + return String.format(var10000, var10001); + } + } + } +} diff --git a/src/main/java/defpackage/pn.java b/src/main/java/defpackage/pn.java new file mode 100644 index 0000000..aadcf08 --- /dev/null +++ b/src/main/java/defpackage/pn.java @@ -0,0 +1,6 @@ +package defpackage; + +enum pn { + TICKS, + REAL; +} diff --git a/src/main/java/defpackage/po.java b/src/main/java/defpackage/po.java new file mode 100644 index 0000000..3bc66ed --- /dev/null +++ b/src/main/java/defpackage/po.java @@ -0,0 +1,66 @@ +package defpackage; + +import net.minecraft.world.item.ItemStack; + +class po { + final String id; + final String displayName; + final ItemStack icon; + final pn base; + final long start; + final long duration; + + private po(String var1, String var2, ItemStack var3, pn var4, long var5, long var7) { + this.id = var1; + this.displayName = var2; + this.icon = var3; + this.base = var4; + this.start = var5; + this.duration = var7; + } + + static po fromTicks(String var0, String var1, ItemStack var2, long var3, long var5) { + return new po(var0, var1, var2, pn.TICKS, var3, var5); + } + + static po fromReal(String var0, String var1, ItemStack var2, long var3, long var5) { + return new po(var0, var1, var2, pn.REAL, var3, var5); + } + + float getProgress(long var1) { + long var3 = switch (this.base) { + case TICKS -> Math.max( + (-4670545613662352043L ^ 4670545613662352043L) + ((-4670545613662352043L & 4670545613662352043L) << 1), this.start + this.duration - var1 + ); + case REAL -> Math.max( + (-7432859978324301146L | 7432859978324301146L) + (-7432859978324301146L & 7432859978324301146L), this.start + this.duration - System.nanoTime() + ); + }; + return this.duration <= (-8986899812788465671L ^ 8986899812788465671L) + ((-8986899812788465671L & 8986899812788465671L) << 1) + ? 0.0F + : (float)var3 / (float)this.duration; + } + + boolean isFinished(long var1) { + return (boolean)(((switch (this.base) { + case TICKS -> var1 >= this.start + this.duration + ? 1: 0; + case REAL -> System.nanoTime() >= this.start + this.duration + ? 1: 0; + })) != 0); + } + + int getRemainingSeconds(long var1) { + long var3 = switch (this.base) { + case TICKS -> Math.max( + (6436594471854618681L | -6436594471854618681L) + (6436594471854618681L & -6436594471854618681L), this.start + this.duration - var1 + ); + case REAL -> Math.max( + (-153869421096439454L ^ 153869421096439454L) + ((-153869421096439454L & 153869421096439454L) << 1), this.start + this.duration - System.nanoTime() + ); + }; + return this.base == pn.TICKS + ? (int)(var3 / ((7665525591856076504L ^ -7665525591856076484L) + ((7665525591856076504L & -7665525591856076484L) << 1))) + : (int)(var3 / ((-3821692536953332398L | 3821692537953332398L) + (-3821692536953332398L & 3821692537953332398L))); + } +} diff --git a/src/main/java/defpackage/pp.java b/src/main/java/defpackage/pp.java new file mode 100644 index 0000000..808b557 --- /dev/null +++ b/src/main/java/defpackage/pp.java @@ -0,0 +1,406 @@ +package defpackage; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.core.component.DataComponents; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.network.protocol.game.ClientboundCooldownPacket; +import net.minecraft.network.protocol.game.ClientboundRespawnPacket; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.item.alchemy.Potions; + +public class pp extends qx { + final Map keyModules = new LinkedHashMap<>(); + private final ct animationWidth = ct.layout(ob.MEDIUM, 100.0F); + private final ct animationScale = ct.layout(ob.MEDIUM, 0.0F); + private final ct animationVisible = ct.layout(ob.MEDIUM, 0.0F); + private final Map customCooldowns = new LinkedHashMap<>(); + private final Map vanillaCooldowns = new LinkedHashMap<>(); + + public pp(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + j.register(this); + } + + @k + public void onPacket(fy var1) { + if (mc != null && mc.level != null) { + if (var1.getPacket() instanceof ClientboundCooldownPacket var2) { + Item var8 = (Item)BuiltInRegistries.ITEM.getValue(var2.cooldownGroup()); + int var4 = var2.duration(); + String var5 = "vanilla:" + var8.getDescriptionId(); + if (var4 == 0) { + this.vanillaCooldowns.remove(var5); + this.keyModules.remove(var5); + return; + } + + long var6 = mc.level.getGameTime(); + this.vanillaCooldowns.put(var5, po.fromTicks(var5, var8.getName(var8.getDefaultInstance()).getString(), var8.getDefaultInstance(), var6, var4)); + } else if (var1.getPacket() instanceof ClientboundRespawnPacket) { + this.vanillaCooldowns.clear(); + this.customCooldowns.clear(); + this.keyModules.clear(); + } + } + } + + @k + public void onCustomCooldown(fy var1) { + ItemStack var2 = null; + PotionContents var3 = null; + ItemStack var4 = null; + int var5 = -326835236; + + while (true) { + switch (var5) { + case -1609946019: + return; + case -1503736941: + this.addCustomCooldown( + var4, + "Heal", + (1111839213853356093L | -1111839213853346093L) + (1111839213853356093L & -1111839213853346093L) + ); + var5 = -1609946019; + break; + case -1200818519: + if (mc.player == null) { + var5 = 1318187498; + } else { + var5 = 1047300117; + } + break; + case -502447001: + if (mc.player.getTicksUsingItem() >= var2.getUseDuration(mc.player)) { + var5 = 1264733356; + } else { + var5 = -1609946019; + } + break; + case -326835236: + default: + if (mc != null) { + var5 = -1200818519; + } else { + var5 = 1318187498; + } + break; + case -122841205: + return; + case -98285996: + var4 = Items.POTION.getDefaultInstance(); + var4.set( + DataComponents.POTION_CONTENTS, new PotionContents(Optional.of(Potions.SWIFTNESS), Optional.of(var3.getColor()), List.of(), Optional.empty()) + ); + if (var3.getColor() == (1781295158 ^ -1781810195) + ((1781295158 & -1781810195) << 1)) { + var5 = -1503736941; + } else { + var5 = 944876967; + } + break; + case -73535439: + if (var3.getColor() == (-791103712 ^ 790588675) + ((-791103712 & 790588675) << 1)) { + var5 = -98285996; + } else { + var5 = -1609946019; + } + break; + case 944876967: + this.addCustomCooldown( + var4, + "Heal", + (2074581205004640319L ^ -2074581205004630319L) + ((2074581205004640319L & -2074581205004630319L) << 1) + ); + var5 = -1609946019; + break; + case 1047300117: + var2 = mc.player.getUseItem(); + if (var2 == null) { + var5 = -122841205; + } else { + var5 = -502447001; + } + break; + case 1264733356: + var3 = (PotionContents)var2.get(DataComponents.POTION_CONTENTS); + if (var3 != null) { + var5 = 1543945772; + } else { + var5 = -1609946019; + } + break; + case 1318187498: + return; + case 1543945772: + if (var3.getColor() != (-1931520816 ^ 1931554277) + ((-1931520816 & 1931554277) << 1)) { + var5 = -73535439; + } else { + var5 = -98285996; + } + } + } + } + + public void addCustomCooldown(ItemStack var1, long var2) { + String var4 = "custom:" + var1.getItem().getDescriptionId(); + this.addCustomCooldownReal(var4, var1.getItem().getName(var1).getString(), var1, var2); + } + + public void addCustomCooldown(ItemStack var1, String var2, long var3) { + this.addCustomCooldownReal("custom:" + var2, var2, var1, var3); + } + + public void addCustomCooldownReal(String var1, String var2, ItemStack var3, long var4) { + long var6 = (7670970927909168387L | -7670970927909168387L) + (7670970927909168387L & -7670970927909168387L); + int var8 = 1788980843; + + while (true) { + switch (var8) { + case -1970905922: + return; + case -1486756555: + var6 = System.nanoTime(); + this.customCooldowns + .put( + var1, + po.fromReal( + var1, + var2, + var3, + var6, + Math.max((5709369976704291514L | -5709369976704291513L) + (5709369976704291514L & -5709369976704291513L), var4) + * ((7244360378887065162L ^ -7244360378886065162L) + ((7244360378887065162L & -7244360378886065162L) << 1)) + ) + ); + return; + case 516943163: + return; + case 1110458512: + if (this.keyModules.containsKey(var1)) { + var8 = 516943163; + } else { + var8 = -1486756555; + } + break; + case 1788980843: + default: + if (mc == null) { + var8 = -1970905922; + } else { + var8 = 1110458512; + } + } + } + } + + public void addCustomCooldownTicks(String var1, String var2, ItemStack var3, long var4) { + long var6 = (2461017624722683169L | -2461017624722683169L) + (2461017624722683169L & -2461017624722683169L); + int var8 = -1728868554; + + while (true) { + switch (var8) { + case -1728868554: + default: + if (mc != null) { + var8 = 301606494; + } else { + var8 = -463124665; + } + break; + case -1612123529: + return; + case -463124665: + return; + case 301606494: + if (mc.level == null) { + var8 = -463124665; + } else { + var8 = 1548456144; + } + break; + case 1548456144: + if (this.keyModules.containsKey(var1)) { + var8 = -1612123529; + } else { + var8 = 1953215293; + } + break; + case 1953215293: + var6 = mc.level.getGameTime(); + this.customCooldowns + .put( + var1, + po.fromTicks( + var1, var2, var3, var6, Math.max((922565795934957719L | -922565795934957718L) + (922565795934957719L & -922565795934957718L), var4) + ) + ); + return; + } + } + } + + private String headerTrailing() { + return String.valueOf(this.keyModules.size()); + } + + @Override + public void render(aru var1) { + if (mc != null) { + ge var2 = gl.ICONS.getFont(6.0F); + long var3 = mc != null && mc.level != null + ? mc.level.getGameTime() + : (7559269739323787019L | -7559269739323787019L) + (7559269739323787019L & -7559269739323787019L); + + for (po var6 : this.vanillaCooldowns.values()) { + if (!var6.isFinished(var3)) { + this.keyModules + .computeIfAbsent( + var6.id, + var4 -> new pm( + this, + var6.icon, + var6.displayName, + var6.getProgress(var3), + () -> var6.getProgress(mc.level != null ? mc.level.getGameTime() : var3), + () -> var6.isFinished(mc.level != null ? mc.level.getGameTime() : var3), + () -> var6.getRemainingSeconds(mc.level != null ? mc.level.getGameTime() : var3) + ) + ); + } + } + + for (po var19 : this.customCooldowns.values()) { + if (var19.base == pn.TICKS) { + if (!var19.isFinished(var3)) { + this.keyModules + .computeIfAbsent( + var19.id, + var4 -> new pm( + this, + var19.icon, + var19.displayName, + var19.getProgress(var3), + () -> var19.getProgress(mc.level != null ? mc.level.getGameTime() : var3), + () -> var19.isFinished(mc.level != null ? mc.level.getGameTime() : var3), + () -> var19.getRemainingSeconds(mc.level != null ? mc.level.getGameTime() : var3) + ) + ); + } + } else if (!var19.isFinished((1258005326943826535L ^ -1258005326943826535L) + ((1258005326943826535L & -1258005326943826535L) << 1))) { + this.keyModules + .computeIfAbsent( + var19.id, + var2x -> new pm( + this, + var19.icon, + var19.displayName, + var19.getProgress((-8278622181141191111L ^ 8278622181141191111L) + ((-8278622181141191111L & 8278622181141191111L) << 1)), + () -> var19.getProgress((4385466647138993761L | -4385466647138993761L) + (4385466647138993761L & -4385466647138993761L)), + () -> var19.isFinished((3022007101512136308L | -3022007101512136308L) + (3022007101512136308L & -3022007101512136308L)), + () -> var19.getRemainingSeconds((-7377117005651053462L | 7377117005651053462L) + (-7377117005651053462L & 7377117005651053462L)) + ) + ); + } + } + + if (this.keyModules.isEmpty()) { + this.animationScale.update(0.0F); + } else { + int var17 = this.keyModules.size() == (1899268593 ^ -1899268592) + ((1899268593 & -1899268592) << 1) + && this.keyModules.values().iterator().next().animation.target() == 0.0F + ? 1: 0; + this.animationScale.update(var17 != 0 ? 0.0F : 1.0F); + } + + float var18 = this.x; + float var20 = this.y; + float var7 = (float)(18.0 + this.keyModules.values().stream().mapToDouble(pm::getHeight).sum()); + ge var8 = gl.MEDIUM.getFont(6.0F); + float var9 = 18.0F + + var8.width("Cooldown") + + 8.0F + + var2.width("M") + + 8.0F; + + for (pm var11 : this.keyModules.values()) { + var9 = Math.max(var9, var11.updateWidth()); + } + + float var21 = this.animationWidth.update(var9); + this.width = var21; + this.height = var7; + this.animationVisible + .update( + (boolean)(((!(mc.gui.screen() instanceof ChatScreen) && this.keyModules.isEmpty() + ? 0: (561569779 | -561569778) + (561569779 & -561569778)) + ) != 0)); + mv var22 = bz.getInstance().getThemeManager().getCurrentTheme(); + var1.pushMatrix(); + var1.pose().translate(var18 + var21 / 2.0F, var20 + var7 / 2.0F); + var1.pose().scale(this.animationVisible.value(), this.animationVisible.value()); + var1.pose().translate(-(var18 + var21 / 2.0F), -(var20 + var7 / 2.0F)); + arq var12 = asj.all(oc.CARD); + pi.surface(var1, var18, var20, var21, var7, asj.uniform(pk.radiusPanel()), asu.WHITE); + pi.header( + var1, + "t", + "Cooldown", + this.headerTrailing(), + var18, + var20, + var21 + ); + if (this.animationVisible.value() > 0.0F) { + float var23 = var20 + 18.0F; + int var13 = 0; + + for (pm var15 : this.keyModules.values()) { + var15.render(var1, var18, var23, var21, var13); + var23 += var15.getHeight(); + var13++; + } + } + + this.keyModules.entrySet().removeIf(var0 -> var0.getValue().isDelete()); + if (mc != null && mc.level != null) { + long var24 = mc.level.getGameTime(); + this.vanillaCooldowns.entrySet().removeIf(var2x -> var2x.getValue().isFinished(var24)); + this.customCooldowns.entrySet().removeIf(var2x -> { + int var4 = 0; + int var3x = 1864670400; + + while (true) { + switch (var3x) { + case 416691411: + var4 = (var2x.getValue().isFinished((-2963141632649499039L | 2963141632649499039L) + (-2963141632649499039L & 2963141632649499039L))) ? 1 : 0; + var3x = 1308197506; + break; + case 1308197506: + return (boolean)((var4) != 0); + case 1851081595: + var4 = (var2x.getValue().isFinished(var24)) ? 1 : 0; + var3x = 1308197506; + break; + case 1864670400: + default: + if (var2x.getValue().base == pn.TICKS) { + var3x = 1851081595; + } else { + var3x = 416691411; + } + } + } + }); + } + + var1.popMatrix(); + } + } +} diff --git a/src/main/java/defpackage/pq.java b/src/main/java/defpackage/pq.java new file mode 100644 index 0000000..78ae14c --- /dev/null +++ b/src/main/java/defpackage/pq.java @@ -0,0 +1,29 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:pq.class */ +/* synthetic */ class pq { + static final /* synthetic */ int[] $SwitchMap$evo$systems$social$InventoryShareService$ViewState = new int[ank.values().length]; + + static { + try { + $SwitchMap$evo$systems$social$InventoryShareService$ViewState[ank.READY.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$social$InventoryShareService$ViewState[ank.WAITING.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$social$InventoryShareService$ViewState[ank.LOADING.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$social$InventoryShareService$ViewState[ank.DENIED.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + try { + $SwitchMap$evo$systems$social$InventoryShareService$ViewState[ank.FAILED.ordinal()] = 5; + } catch (NoSuchFieldError e5) { + } + } +} diff --git a/src/main/java/defpackage/pr.java b/src/main/java/defpackage/pr.java new file mode 100644 index 0000000..6fb0dd2 --- /dev/null +++ b/src/main/java/defpackage/pr.java @@ -0,0 +1,247 @@ +package defpackage; + +import java.util.Locale; +import net.minecraft.client.Minecraft; +import net.minecraft.world.item.ItemStack; + +public class pr extends qx { + private static final float SLOT_SIZE = 18.0F; + private static final float SLOT_GAP = 1.0F; + private static final float ITEM_SIZE = 16.0F; + private static final float ITEM_SCALE = 0.8F; + private static final float ROW_GAP = 4.0F; + private static final float HEALTH_BAR_HEIGHT = 3.0F; + private static final float HEALTH_BAR_GAP = 2.0F; + private static final float PLACEHOLDER_WIDTH = 116.0F; + private static final asu ONLINE = new asu( + 88, + 194, + 125, + (1554645961 ^ -1554645706) + ((1554645961 & -1554645706) << 1) + ); + private final pj smoothing = new pj(); + private float animWidth; + private float animHeight; + + public pr(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + } + + @Override + public void render(aru var1) { + this.smoothing.beginFrame(); + mv var2 = bz.getInstance().getThemeManager().getCurrentTheme(); + ge var3 = gl.SEMIBOLD.getFont(6.0F); + ge var4 = gl.MEDIUM.getFont(5.0F); + String var5 = anl.pinned(); + if (var5 == null) { + this.renderPlaceholder(var1, var2, var3, var4); + } else { + ani var6 = anl.snapshotOf(var5); + ank var7 = anl.stateOf(var5); + float var8 = 19.0F; + float var9 = 170.0F; + float var10 = var3.height() + 4.0F; + int var11 = var6 != null && var6.hasHealth() + ? 1: 0; + float var12 = var11 != 0 ? var4.height() + 2.0F + 3.0F + 4.0F : 0.0F; + float var13 = var10 + var12 + 18.0F + 4.0F + 3.0F * var8 - 1.0F + 4.0F + 18.0F; + this.applySize(var9 + 10.0F, var13 + 10.0F); + pi.surface(var1, this.x, this.y, this.width, this.height, asj.uniform(4.0F), asu.WHITE); + float var14 = this.x + 5.0F; + float var15 = this.y + 5.0F; + var1.drawText(var3, var5, var14, var15, var2.getWhite()); + String var16 = this.statusLine(var7, var6, var5); + float var17 = var4.width(var16); + var1.drawText( + var4, + var16, + var14 + var9 - var17, + var15 + 1.0F, + var7 == ank.READY && anl.isOnline(var5) ? var2.getGrayLight().mix(ONLINE, 0.45F) : var2.getGrayLight() + ); + float var18 = var15 + var10 + var12; + if (var11 != 0) { + this.renderHealth(var1, var2, var4, var14, var15 + var10, var9, var6); + } + + for (int var19 = 0; + var19 < 4; + var19++ + ) { + int var20 = (1383578726 ^ -1383578687) + ((1383578726 & -1383578687) << 1) - var19; + this.drawSlot(var1, var2, var14 + var19 * var8, var18, this.stackAt(var6, var20), (boolean)((((372848475 | -372848475) + (372848475 & -372848475))) != 0)); + } + + this.drawSlot( + var1, + var2, + var14 + 5.0F * var8, + var18, + this.stackAt(var6, (1006274763 ^ -1006274723) + ((1006274763 & -1006274723) << 1)), + (boolean)((((-889931451 | 889931451) + (-889931451 & 889931451)) + ) != 0)); + float var22 = var18 + 18.0F + 4.0F; + + for (int var23 = 9; var23 < 36; var23++) { + int var21 = var23 - (9); + this.drawSlot( + var1, + var2, + var14 + var21 % ((-293171750 | 293171759) + (-293171750 & 293171759)) * var8, + var22 + var21 / ((-1719015375 ^ 1719015384) + ((-1719015375 & 1719015384) << 1)) * var8, + this.stackAt(var6, var23), + (boolean)((((1614903136 ^ -1614903136) + ((1614903136 & -1614903136) << 1)) + ) != 0)); + } + + float var24 = var22 + 3.0F * var8 - 1.0F + 4.0F; + + for (int var25 = 0; var25 < 9; var25++) { + this.drawSlot( + var1, + var2, + var14 + var25 * var8, + var24, + this.stackAt(var6, var25), + (boolean)(((var6 != null && var6.selected() == var25 + ? 1: (-977114641 | 977114641) + (-977114641 & 977114641)) + ) != 0)); + } + } + } + + private void renderHealth(aru var1, mv var2, ge var3, float var4, float var5, float var6, ani var7) { + String var8 = null; + String var9 = null; + String var10 = null; + String var12 = null; + int var11 = -1725090641; + + while (true) { + switch (var11) { + case -1813783958: + ph.draw(var1, var4, var5 + var3.height() + 2.0F, var6, 3.0F, var7.health(), var7.maxHealth(), var7.absorption(), var2, 1.0F); + return; + case -1728946832: + var12 = ""; + var11 = -302945639; + break; + case -1725090641: + default: + var8 = ph.format(var7.health()); + var9 = " / " + ph.format(var7.maxHealth()); + if (var7.absorption() > 0.0F) { + var11 = 283873457; + } else { + var11 = -1728946832; + } + break; + case -631861012: + var1.drawText(var3, var10, var4 + var3.width(var8 + var9), var5, ph.ABSORPTION); + var11 = -1813783958; + break; + case -302945639: + var10 = var12; + var1.drawText(var3, var8, var4, var5, ph.healthColor(var7.health(), var7.maxHealth())); + var1.drawText(var3, var9, var4 + var3.width(var8), var5, var2.getGrayLight()); + if (!var10.isEmpty()) { + var11 = -631861012; + } else { + var11 = -1813783958; + } + break; + case 283873457: + var12 = " +" + ph.format(var7.absorption()); + var11 = -302945639; + } + } + } + + private void applySize(float var1, float var2) { + this.animWidth = this.smoothing.width(this.animWidth, var1); + this.animHeight = this.smoothing.width(this.animHeight, var2); + this.width = this.animWidth; + this.height = this.animHeight; + } + + private void renderPlaceholder(aru var1, mv var2, ge var3, ge var4) { + String var5 = "Friend inventory"; + String var6 = "Pin a friend in the Friends tab"; + this.applySize(Math.max(116.0F, var4.width(var6) + 10.0F), var3.height() + var4.height() + 3.0F + 10.0F); + pi.surface(var1, this.x, this.y, this.width, this.height, asj.uniform(4.0F), asu.WHITE); + var1.drawText(var3, var5, this.x + 5.0F, this.y + 5.0F, var2.getWhite()); + var1.drawText(var4, var6, this.x + 5.0F, this.y + 5.0F + var3.height() + 3.0F, var2.getGrayLight()); + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private String statusLine(ank var1, ani var2, String var3) { + return switch (pq.$SwitchMap$evo$systems$social$InventoryShareService$ViewState[var1.ordinal()]) { + case 1 -> anl.describeAge(var2 == null ? (3863759059331777344L | -3863759059331777344L) + (3863759059331777344L & -3863759059331777344L) : var2.at()); + case 2 -> "waiting"; + case 3 -> "loading"; + case 4, 5 -> { + String var4 = anl.messageOf(var3); + yield var4 == null + ? "unavailable" + : var4.toLowerCase(Locale.ROOT); + } + default -> throw new MatchException(null, null); + }; + } + + private ItemStack stackAt(ani var1, int var2) { + ItemStack var4 = null; + int var3 = -605687879; + + while (true) { + switch (var3) { + case -1516703191: + var4 = ItemStack.EMPTY; + var3 = 518102496; + break; + case -605687879: + default: + if (var1 == null) { + var3 = -1516703191; + } else { + var3 = -99718619; + } + break; + case -99718619: + var4 = var1.slot(var2); + var3 = 518102496; + break; + case 518102496: + return var4; + } + } + } + + private void drawSlot(aru var1, mv var2, float var3, float var4, ItemStack var5, boolean var6) { + var1.drawRoundedRect( + var3, + var4, + 18.0F, + 18.0F, + asj.uniform(3.0F), + var6 + ? var2.getColor().withAlpha((-1663153572 | 1663153632) + (-1663153572 & 1663153632)) + : var2.getColor().withAlpha((-1021440843 ^ 1021440863) + ((-1021440843 & 1021440863) << 1)) + ); + if (!var5.isEmpty() && arz.hudItemsVisible()) { + var1.pushMatrix(); + var1.pose().translate(var3 + 2.6F, var4 + 2.6F); + var1.pose().scale(0.8F, 0.8F); + var1.item(var5, 0, (720901156 ^ -720901156) + ((720901156 & -720901156) << 1)); + var1.itemDecorations( + Minecraft.getInstance().font, + var5, + 0, + (255911975 ^ -255911975) + ((255911975 & -255911975) << 1) + ); + var1.popMatrix(); + } + } +} diff --git a/src/main/java/defpackage/ps.java b/src/main/java/defpackage/ps.java new file mode 100644 index 0000000..931c560 --- /dev/null +++ b/src/main/java/defpackage/ps.java @@ -0,0 +1,184 @@ +package defpackage; + +import java.util.Objects; +import net.minecraft.util.Mth; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import org.joml.Matrix3x2fStack; + +class ps { + private pt this$0; + + private static final long BOUNCE_DURATION_MS = 280L; + private static final float BOUNCE_AMPLITUDE = 5.5F; + private static final float SELECT_LIFT_PX = 4.5F; + private static final float SELECT_SCALE = 0.18F; + private static final float SLOT_SIZE = 24.0F; + private static final float ICON_SCALE = 0.87F; + private static final float ICON_PX = 16.0F; + private final ct animationEnable; + private final ct countPopAnimation; + private final int index; + private boolean initialized; + private Item lastItem; + private int lastCount; + private long bounceStartMs; + + public ps(pt var1, int var2) { + Objects.requireNonNull(var1); + this.this$0 = var1; + this.animationEnable = ct.layout(ob.MEDIUM); + this.countPopAnimation = ct.layout(ob.FAST, 1.0F); + this.initialized = (boolean)(((0)) != 0); + this.lastItem = null; + this.lastCount = 0; + this.bounceStartMs = (694779609702208336L | -694779609702208336L) + (694779609702208336L & -694779609702208336L); + this.index = var2; + } + + private float computeBounceOffset(ItemStack var1) { + Item var2 = var1.isEmpty() ? null : var1.getItem(); + int var3 = var1.getCount(); + if (!this.initialized) { + this.initialized = (boolean)(((1)) != 0); + } else { + int var4 = var2 == null || var2 == this.lastItem && var3 == this.lastCount + ? 0: 1; + if (var4 != 0) { + this.bounceStartMs = System.currentTimeMillis(); + this.countPopAnimation.jumpTo(1.35F); + } + } + + this.lastItem = var2; + this.lastCount = var3; + if (this.bounceStartMs == (-2879164366098318217L ^ 2879164366098318217L) + ((-2879164366098318217L & 2879164366098318217L) << 1)) { + return 0.0F; + } else { + long var7 = System.currentTimeMillis() - this.bounceStartMs; + if (var7 >= (2814564990746354397L | -2814564990746354117L) + (2814564990746354397L & -2814564990746354117L)) { + this.bounceStartMs = (-3945856454161911264L ^ 3945856454161911264L) + ((-3945856454161911264L & 3945856454161911264L) << 1); + return 0.0F; + } else { + float var6 = (float)var7 / 280.0F; + return -5.5F * (float)Math.sin(var6 * Math.PI); + } + } + } + + public void render(aru var1, float var2, float var3, mv var4) { + int var5 = 0; + ItemStack var6 = null; + int var8 = 0; + ItemStack var9 = null; + int var7 = -336353482; + + while (true) { + switch (var7) { + case -1920353736: + var8 = 0; + var7 = -1262319008; + break; + case -1262319008: + var5 = var8; + if (this.index >= 0) { + var7 = -789166350; + } else { + var7 = 430907801; + } + break; + case -1240869832: + var6 = var9; + this.renderSlotContent(var1, var2, var3, var6, (boolean)((var5) != 0), var4); + return; + case -789166350: + var9 = (ItemStack)aqg.mc.player.getInventory().getNonEquipmentItems().get(this.index); + var7 = -1240869832; + break; + case -336353482: + default: + if (this.index >= 0) { + var7 = -107760047; + } else { + var7 = -1920353736; + } + break; + case -107760047: + if (aqg.mc.player != null) { + var7 = 1800073192; + } else { + var7 = -1920353736; + } + break; + case 430907801: + var9 = aqg.mc.player.getOffhandItem(); + var7 = -1240869832; + break; + case 1294905273: + var8 = 1; + var7 = -1262319008; + break; + case 1800073192: + if (this.index == aqg.mc.player.getInventory().getSelectedSlot()) { + var7 = 1294905273; + } else { + var7 = -1920353736; + } + } + } + } + + public void renderSlotContent(aru var1, float var2, float var3, ItemStack var4, boolean var5, mv var6) { + this.animationEnable.update(var5 ? 1.0F : 0.0F); + float var7 = Mth.clamp(this.animationEnable.value(), 0.0F, 1.2F); + float var8 = this.computeBounceOffset(var4); + boolean var9 = vm.INSTANCE.isFloatingHotbarEnabled(); + float var10 = this.this$0.floatingToggleAnim.update(var9 ? 1.0F : 0.0F); + float var11 = (float)Math.sin( + ( + cs.elapsedMillis() + + (this.index >= 0 ? this.index : (1835300152 | -1835300142) + (1835300152 & -1835300142)) + * ((-1113212196 ^ 1113212356) + ((-1113212196 & 1113212356) << 1)) + ) + / 340.0 + ) + * 1.2F + * var10; + float var12 = var11 * (1.0F - Mth.clamp(var7, 0.0F, 1.0F)); + float var13 = 0.87F * (0.94F + 0.18F * var7); + float var14 = 8.0F * var13; + float var15 = var2 + 12.0F; + float var16 = var3 + 12.0F + var8 + var12; + if (!var4.isEmpty()) { + var1.pushMatrix(); + var1.pose().translate(var15 - var14, var16 - var14); + var1.pose().scale(var13, var13); + var1.item(var4, 0, (1981260870 ^ -1981260870) + ((1981260870 & -1981260870) << 1)); + var1.popMatrix(); + float var17 = Math.round(var2 + (24.0F - 16.0F * var13) / 2.0F); + float var18 = Math.round(var3 + (24.0F - 16.0F * var13) / 2.0F + var8); + var1.pushMatrix(); + var1.pose().translate(var17, var18); + var1.pose().scale(var13, var13); + ((b.c)var1) + .callDrawItemBar(var4, 0, (1353092399 ^ -1353092399) + ((1353092399 & -1353092399) << 1)); + ((b.c)var1) + .callDrawCooldownProgress( + var4, 0, (-1485010535 ^ 1485010535) + ((-1485010535 & 1485010535) << 1) + ); + var1.popMatrix(); + if (var4.getCount() > (-1426795845 | 1426795846) + (-1426795845 & 1426795846)) { + ge var19 = gl.MEDIUM.getFont(5.5F); + String var20 = "x" + var4.getCount(); + float var21 = var19.width(var20); + float var22 = var2 + 24.0F - var21 - 4.5F; + float var23 = var3 + 24.0F - var19.height() - 3.5F; + Matrix3x2fStack var24 = var1.pose(); + float var25 = var24.m00 * var22 + var24.m10 * var23 + var24.m20; + float var26 = var24.m01 * var22 + var24.m11 * var23 + var24.m21; + float var27 = (float)Math.sqrt(var24.m00 * var24.m00 + var24.m01 * var24.m01); + pu.add(var25, var26, var19.getSize() * var27, 0.5F * var27, var20, var6.getWhite().getRGB(), pt.COUNT_SHADOW_ARGB); + } + } + } +} diff --git a/src/main/java/defpackage/pt.java b/src/main/java/defpackage/pt.java new file mode 100644 index 0000000..314ade2 --- /dev/null +++ b/src/main/java/defpackage/pt.java @@ -0,0 +1,434 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.gui.Font; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.component.DataComponents; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.util.ARGB; +import net.minecraft.util.Mth; +import net.minecraft.util.profiling.Profiler; +import net.minecraft.world.item.ItemStack; + +public class pt extends qx { + private static final float SLOT_CARD_MARGIN = 1.5F; + private static final float SLOT_CARD_RADIUS = 6.0F; + private static final float SLOT_GLOW_SOFTNESS = 6.0F; + private static final float SLOT_GLOW_ALPHA = 0.22F; + private static final float SLOT_FILL_ALPHA = 0.1F; + private static final float SLOT_BORDER_ALPHA = 0.8F; + private static final float SLOT_MARKER_RATIO = 0.45F; + private static final float SLOT_MARKER_HEIGHT = 1.5F; + private static final float BOTTOM_MARGIN = 4.0F; + private static final float COUNT_SHADOW_OFFSET = 0.5F; + static final int COUNT_SHADOW_ARGB = new asu( + 0, + 0, + 0, + (-1351468929 ^ 1351469149) + ((-1351468929 & 1351469149) << 1) + ) + .getRGB(); + private final List slots = new ArrayList<>(); + private final ps offHandSlot = new ps(this, (-1334041857 ^ 1334041856) + ((-1334041857 & 1334041856) << 1)); + private final ct selectedSlotXAnim = ct.layout(ob.FAST); + private final ct offhandAnim = ct.layout(ob.MEDIUM); + private final ct healthAnim = ct.layout(ob.MEDIUM); + private final ct ghostHealthAnim = ct.layout(ob.DELIBERATE); + final ct floatingToggleAnim = ct.layout(ob.SETTLED); + private final ct xpAnim = ct.layout(ob.MEDIUM); + + @Override + public boolean isLocked() { + return (boolean)(((1)) != 0); + } + + @Override + public void updatePhysics() { + this.renderX = this.getX(); + this.renderY = this.getY(); + this.renderScale = this.getScale(); + } + + @Override + public void load(JsonObject var1) { + } + + public pt(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + float var9 = 24.0F; + this.width = var9 * 9.0F; + this.height = var9; + + for (int var10 = 0; var10 < 9; var10++) { + this.slots.add(new ps(this, var10)); + } + } + + @Override + public void render(aru var1) { + this.x = (var1.guiWidth() - this.width) / 2.0F; + this.y = var1.guiHeight() - this.height - 4.0F; + float var2 = this.getX(); + float var3 = this.getY(); + mv var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + if (this.hasCreativeInventory() || mc.gameMode != null && mc.gameMode.canHurtPlayer()) { + if (!this.hasCreativeInventory()) { + var1.pushMatrix(); + var1.pose() + .translate( + -(var1.guiWidth() / ((1806561544 | -1806561542) + (1806561544 & -1806561542)) - ((-522616029 ^ 522616120) + ((-522616029 & 522616120) << 1))), + -(var1.guiHeight() - ((-823794180 | 823794219) + (-823794180 & 823794219))) + ); + var1.pose().scale(1.0F, 1.0F); + var1.pose().translate(var2, 0.0F); + var1.pose().translate(0.0F, var3 - 20.0F); + ((b.g)mc.gui.hud).invokeRenderStatusBars(var1); + var1.popMatrix(); + } + + int var5 = mc.player != null ? mc.player.experienceLevel : 0; + float var6 = var5 <= 0 && this.hasCreativeInventory() ? var3 - 38.0F : var3 - 40.0F; + this.renderHeldItemTooltip(var1, var6); + this.renderOverlayMessage(var1, mc.getDeltaTracker(), var6 - 9.0F); + ge var7 = gl.MEDIUM.getFont(7.0F); + if (var5 > 0) { + String var8 = String.valueOf(var5); + float var9 = var7.width(var8); + var1.drawText(var7, var8, var2 + this.width / 2.0F - var9 / 2.0F, var3 - 18.0F, asu.GREEN); + } + + if (!this.hasCreativeInventory() && mc.player != null) { + this.renderSleekXpBar(var1, var2, var3 - 6.0F, this.width, 3.5F, var4); + } + + pi.surface(var1, this.x, this.y, this.width, this.height, asj.uniform(pk.radiusPanelLarge()), asu.WHITE); + afh.publish(var2, var3, this.height); + ItemStack var22 = mc.player.getOffhandItem(); + float var23 = var22.isEmpty() ? 0.0F : 1.0F; + float var10 = this.offhandAnim.update(var23); + if (var10 > 0.01F) { + float var11 = var2 - this.height - 12.0F; + float var12 = var3; + var1.pushMatrix(); + var1.pose().translate(var11 + this.height / 2.0F, var12 + this.height / 2.0F); + var1.pose().scale(var10, var10); + var1.pose().translate(-(var11 + this.height / 2.0F), -(var12 + this.height / 2.0F)); + pi.surface(var1, var11, var12, this.height, this.height, asj.uniform(pk.radiusPanelLarge()), asu.WHITE); + this.offHandSlot.renderSlotContent(var1, var11, var12, var22, (boolean)(((0)) != 0), var4); + var1.popMatrix(); + } + + int var24 = mc.player != null ? mc.player.getInventory().getSelectedSlot() : 0; + float var25 = var2 + var24 * this.height; + float var13 = this.selectedSlotXAnim.update(var25); + float var14 = var13 + 1.5F; + float var15 = var3 + 1.5F; + float var16 = this.height - 3.0F; + arq var17 = asj.uniform(6.0F); + atb.drawShadow(var1.pose(), var14, var15, var16, var16, 6.0F, var17, var4.getColor().withAlpha(0.22F)); + var1.drawSurface(aso.CONTROL, var14, var15, var16, var16, var17, var4.getWhite().withAlpha(0.1F)); + atb.drawRoundedBorder(var1.pose(), var14, var15, var16, var16, pk.borderThickness(), var17, var4.getColor().withAlpha(0.8F)); + float var18 = var16 * 0.45F; + var1.drawRoundedRect(var14 + (var16 - var18) / 2.0F, var15 + var16 - 1.5F, var18, 1.5F, asj.pill(1.5F), var4.getColor()); + float var19 = var2; + + for (ps var21 : this.slots) { + var21.render(var1, var19, var3, var4); + var19 += this.height; + } + } + } + + private void renderSleekXpBar(aru var1, float var2, float var3, float var4, float var5, mv var6) { + LocalPlayer var7 = null; + float var8 = 0.0F; + float var9 = 0.0F; + arq var10 = null; + asu var11 = null; + float var12 = 0.0F; + asu var13 = null; + int var14 = 408700624; + + while (true) { + switch (var14) { + case -761198244: + return; + case -342099552: + return; + case -101097090: + var8 = Mth.clamp(var7.experienceProgress, 0.0F, 1.0F); + var9 = this.xpAnim.update(var8); + var10 = asj.pill(var5); + var11 = new asu( + 16, + 20, + 28, + (-468708849 | 468709029) + (-468708849 & 468709029) + ); + var1.drawSurface(aso.CONTROL, var2, var3, var4, var5, var10, var11); + var12 = var4 * var9; + if (var12 > 0.5F) { + var14 = 723432277; + } else { + var14 = -761198244; + } + break; + case 408700624: + default: + var7 = mc.player; + if (var7 == null) { + var14 = -342099552; + } else { + var14 = -101097090; + } + break; + case 723432277: + var13 = new asu( + 125, + 235, + (-1747205921 | 1747205996) + (-1747205921 & 1747205996) + ); + atb.drawShadow(var1.pose(), var2, var3, Math.max(var12, var5), var5, 3.0F, var10, var13.mulAlpha(0.3F)); + var1.drawRoundedRect(var2, var3, Math.max(var12, var5), var5, var10, var13); + var14 = -761198244; + } + } + } + + private void renderHeldItemTooltip(aru var1, float var2) { + MutableComponent var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + Object var8 = null; + int var9 = -561927779; + + while (true) { + switch (var9) { + case -1907726181: + if (!this.hasCreativeInventory()) { + var9 = 1564219238; + } else { + var9 = -944387165; + } + break; + case -1775182703: + if (var7 > 0) { + var9 = -684216289; + } else { + var9 = 1802852030; + } + break; + case -944387165: + var7 = (int)(mc.gui.hud.toolHighlightTimer * 256.0F / 10.0F); + if (var7 > (1367756796 ^ -1367756541) + ((1367756796 & -1367756541) << 1)) { + var9 = 364601507; + } else { + var9 = -1775182703; + } + break; + case -684216289: + var1.pose().pushMatrix(); + var1.pose().translate(var5, var6); + var8 = bz.getInstance().getThemeManager().getCurrentTheme(); + var1.textWithBackdrop( + mc.gui.hud.getFont(), + var3, + 0, + 0, + var4, + ARGB.color(var7, (1223700342 | -1223700343) + (1223700342 & -1223700343)) + ); + var1.pose().popMatrix(); + var9 = 1802852030; + break; + case -561927779: + default: + Profiler.get().push("selectedItemName"); + if (mc.gui.hud.toolHighlightTimer > 0) { + var9 = 679183335; + } else { + var9 = 1802852030; + } + break; + case 338998021: + var4 = mc.font.width(var3); + var5 = (var1.guiWidth() - var4) / (2); + var6 = (int)var2; + if (!mc.gameMode.canHurtPlayer()) { + var9 = -1907726181; + } else { + var9 = -944387165; + } + break; + case 364601507: + var7 = 255; + var9 = -1775182703; + break; + case 679183335: + if (!mc.gui.hud.lastToolHighlight.isEmpty()) { + var9 = 1519967200; + } else { + var9 = 1802852030; + } + break; + case 1519967200: + var3 = Component.empty().append(mc.gui.hud.lastToolHighlight.getHoverName()).withStyle(mc.gui.hud.lastToolHighlight.getRarity().color()); + if (mc.gui.hud.lastToolHighlight.has(DataComponents.CUSTOM_NAME)) { + var9 = 2044167604; + } else { + var9 = 338998021; + } + break; + case 1564219238: + var6 += 6; + var9 = -944387165; + break; + case 1802852030: + Profiler.get().pop(); + return; + case 2044167604: + var3.withStyle(ChatFormatting.ITALIC); + var9 = 338998021; + } + } + } + + public final void renderOverlayMessage(aru var1, DeltaTracker var2, float var3) { + Font var4 = null; + float var5 = 0.0F; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = -2015401005; + + while (true) { + switch (var9) { + case -2015401005: + default: + var4 = mc.gui.hud.getFont(); + if (mc.gui.hud.overlayMessageString != null) { + var9 = 1659769825; + } else { + var9 = 69542447; + } + break; + case -1390520232: + var7 = Mth.hsvToArgb(var5 / 50.0F, 0.7F, 0.6F, var6); + var9 = 795619826; + break; + case -1296325222: + Profiler.get().push("overlayMessage"); + var5 = mc.gui.hud.overlayMessageTime - var2.getGameTimeDeltaPartialTick((boolean)((((-289386358 ^ 289386358) + ((-289386358 & 289386358) << 1))) != 0)); + var6 = (int)(var5 * 255.0F / 20.0F); + if (var6 > (1238930262 | -1238930007) + (1238930262 & -1238930007)) { + var9 = 1106656301; + } else { + var9 = -1281103433; + } + break; + case -1281103433: + if (var6 > (2052902286 ^ -2052902278) + ((2052902286 & -2052902278) << 1)) { + var9 = -15260035; + } else { + var9 = 2028778408; + } + break; + case -15260035: + var1.pose().pushMatrix(); + var1.pose().translate(var1.guiWidth() / (2), var3); + if (mc.gui.hud.animateOverlayMessageColor) { + var9 = -1390520232; + } else { + var9 = 1205671347; + } + break; + case 69542447: + return; + case 795619826: + var8 = var4.width(mc.gui.hud.overlayMessageString); + var1.pose().translate(-var8 / 2.0F, -4.0F); + var1.textWithBackdrop( + var4, + mc.gui.hud.overlayMessageString, + 0, + 0, + var8, + var7 + ); + var1.pose().popMatrix(); + var9 = 2028778408; + break; + case 1106656301: + var6 = 255; + var9 = -1281103433; + break; + case 1205671347: + var7 = ARGB.color(var6, (-797547975 ^ 797547974) + ((-797547975 & 797547974) << 1)); + var9 = 795619826; + break; + case 1659769825: + if (mc.gui.hud.overlayMessageTime > 0) { + var9 = -1296325222; + } else { + var9 = 69542447; + } + break; + case 2028778408: + Profiler.get().pop(); + var9 = 69542447; + } + } + } + + @Override + protected void renderXLine(aru var1, qw var2) { + } + + private boolean hasCreativeInventory() { + int var2 = 0; + int var1 = 1782963348; + + while (true) { + switch (var1) { + case -1874488630: + if (mc.gameMode.getPlayerMode().isCreative()) { + var1 = -585417531; + } else { + var1 = 316487443; + } + break; + case -585417531: + var2 = 1; + var1 = 339061501; + break; + case 316487443: + var2 = 0; + var1 = 339061501; + break; + case 339061501: + return (boolean)((var2) != 0); + case 1782963348: + default: + if (mc.gameMode != null) { + var1 = 1859270161; + } else { + var1 = 316487443; + } + break; + case 1859270161: + if (mc.gameMode.getPlayerMode() != null) { + var1 = -1874488630; + } else { + var1 = 316487443; + } + } + } + } +} diff --git a/src/main/java/defpackage/pu.java b/src/main/java/defpackage/pu.java new file mode 100644 index 0000000..80861c9 --- /dev/null +++ b/src/main/java/defpackage/pu.java @@ -0,0 +1,90 @@ +package defpackage; + +import org.joml.Matrix4f; + +public final class pu implements aqg { + private static final int CAPACITY = 16; + private static final float[] positionX = new float[16]; + private static final float[] positionY = new float[16]; + private static final float[] fontSize = new float[16]; + private static final float[] shadowOffset = new float[16]; + private static final String[] content = new String[16]; + private static final int[] mainColor = new int[16]; + private static final int[] shadowColor = new int[16]; + private static final Matrix4f identity = new Matrix4f(); + private static int size = 0; + + public static void add(float var0, float var1, float var2, float var3, String var4, int var5, int var6) { + int var7 = -19206169; + + while (true) { + switch (var7) { + case -1734435672: + positionX[size] = var0; + positionY[size] = var1; + fontSize[size] = var2; + shadowOffset[size] = var3; + content[size] = var4; + mainColor[size] = var5; + shadowColor[size] = var6; + size += 1; + return; + case -610987638: + return; + case -19206169: + } + + if (size >= (840259580 ^ -840259564) + ((840259580 & -840259564) << 1)) { + var7 = -610987638; + } else { + var7 = -1734435672; + } + } + } + + // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow. + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public static void drain() { + if (size != 0) { + if (!isHudOverlayVisible()) { + size = 0; + } else { + atb.beginGui(); + gt.beginBatch(); + boolean var4 = false /* VF: Semaphore variable */; + + try { + var4 = true; + + for (int var0 = 0; var0 < size; var0++) { + float var1 = shadowOffset[var0]; + gt.renderText(gl.MEDIUM, content[var0], fontSize[var0], shadowColor[var0], identity, positionX[var0] + var1, positionY[var0] + var1, 0.0F); + gt.renderText(gl.MEDIUM, content[var0], fontSize[var0], mainColor[var0], identity, positionX[var0], positionY[var0], 0.0F); + } + + var4 = false; + } finally { + if (var4) { + gt.endBatch(); + atb.endGui(); + size = 0; + } + } + + gt.endBatch(); + atb.endGui(); + size = 0; + } + } + } + + private static boolean isHudOverlayVisible() { + return api.hudOverlaysVisible(); + } + + private pu() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/pv.java b/src/main/java/defpackage/pv.java new file mode 100644 index 0000000..8abfa5a --- /dev/null +++ b/src/main/java/defpackage/pv.java @@ -0,0 +1,104 @@ +package defpackage; + +import java.util.Locale; + +public class pv extends qx { + private static final float AXIS_GAP = 4.0F; + private static final float PAIR_GAP = 2.5F; + private static final String SPEED_UNIT = "bps"; + private static final String SPEED_FORMAT = "%.1f"; + private static final float TICKS_PER_SECOND = 20.0F; + private final pj smoothing = new pj(); + private float animXWidth = 0.0F; + private float animYWidth = 0.0F; + private float animZWidth = 0.0F; + private float animSpeedTextWidth = 0.0F; + private float animCoordsWidth = 0.0F; + private float animSpeedWidth = 0.0F; + private float currentSpeedBps = 0.0F; + + public pv(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + } + + @Override + public void render(aru var1) { + mv var2 = bz.getInstance().getThemeManager().getCurrentTheme(); + asu var3 = var2.getWhite(); + asu var4 = var2.getGrayLight(); + ge var5 = pi.textFont(); + ge var6 = pi.iconFont(); + float var7 = pi.barHeight(); + float var8 = pi.pad(); + this.smoothing.beginFrame(); + float var9 = (float)(Math.hypot(mc.player.getX() - mc.player.xo, mc.player.getZ() - mc.player.zo) * 20.0); + this.currentSpeedBps = this.smoothing.value(this.currentSpeedBps, var9); + String var10 = String.valueOf((int)mc.player.getX()); + String var11 = String.valueOf((int)mc.player.getY()); + String var12 = String.valueOf((int)mc.player.getZ()); + Locale var10000 = Locale.US; + String var10001 = "%.1f"; + Object[] var10002 = new Object[1]; + var10002[0] = this.currentSpeedBps; + String var13 = String.format(var10000, var10001, var10002); + this.animXWidth = this.smoothing + .width(this.animXWidth, this.pairWidth(var5, "x", var10)); + this.animYWidth = this.smoothing + .width(this.animYWidth, this.pairWidth(var5, "y", var11)); + this.animZWidth = this.smoothing + .width(this.animZWidth, this.pairWidth(var5, "z", var12)); + this.animSpeedTextWidth = this.smoothing.width(this.animSpeedTextWidth, var5.width(var13)); + float var14 = var8 + + var6.width("x") + + 4.0F + + this.animXWidth + + 4.0F + + this.animYWidth + + 4.0F + + this.animZWidth + + var8; + float var15 = var8 + + var6.width("b") + + 4.0F + + this.animSpeedTextWidth + + 2.5F + + var5.width("bps") + + var8; + this.animCoordsWidth = this.smoothing.width(this.animCoordsWidth, var14); + this.animSpeedWidth = this.smoothing.width(this.animSpeedWidth, var15); + this.width = this.animCoordsWidth + pi.dividerWidth() + this.animSpeedWidth; + this.height = var7; + pi.surface(var1, this.x, this.y, this.width, var7); + float var16 = this.y + (var7 - var6.height()) / 2.0F; + float var17 = this.y + (var7 - var5.height()) / 2.0F; + var1.clipTrailing(this.x, this.y, this.x + this.animCoordsWidth, this.y + var7, ars.revealFade()); + float var18 = this.x + var8; + var1.drawText(var6, "x", var18, var16, var4); + var18 += var6.width("x") + 4.0F; + this.drawTextPair(var1, var5, "x", var10, var18, var17, var4, var3); + var18 += this.animXWidth + 4.0F; + this.drawTextPair(var1, var5, "y", var11, var18, var17, var4, var3); + var18 += this.animYWidth + 4.0F; + this.drawTextPair(var1, var5, "z", var12, var18, var17, var4, var3); + var1.popClip(); + float var19 = pi.divider(var1, this.x + this.animCoordsWidth, this.y, var7); + var1.clipTrailing(var19, this.y, var19 + this.animSpeedWidth, this.y + var7, ars.revealFade()); + var18 = var19 + var8; + var1.drawText(var6, "b", var18, var16, var4); + var18 += var6.width("b") + 4.0F; + var1.drawText(var5, var13, var18, var17, var3); + var1.drawText( + var5, "bps", var18 + this.animSpeedTextWidth + 2.5F, var17, var4 + ); + var1.popClip(); + } + + private float pairWidth(ge var1, String var2, String var3) { + return var1.width(var2) + 2.5F + var1.width(var3); + } + + private void drawTextPair(aru var1, ge var2, String var3, String var4, float var5, float var6, asu var7, asu var8) { + var1.drawText(var2, var3, var5, var6, var7); + var1.drawText(var2, var4, var5 + var2.width(var3) + 2.5F, var6, var8); + } +} diff --git a/src/main/java/defpackage/pw.java b/src/main/java/defpackage/pw.java new file mode 100644 index 0000000..87cbdb7 --- /dev/null +++ b/src/main/java/defpackage/pw.java @@ -0,0 +1,175 @@ +package defpackage; + +import net.minecraft.world.item.ItemStack; + +public class pw extends qx { + private final ct toggleAnimation = ct.layout(ob.SLOW); + private final ct inventoryChangeAnimation = ct.layout(ob.FAST); + private String lastInventoryHash = ""; + private float lastWidth = 0.0F; + private float lastHeight = 0.0F; + + public pw(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + } + + @Override + public void render(aru var1) { + String var2 = null; + int var3 = 0; + ItemStack var4 = null; + int var5 = -1648805473; + + while (true) { + switch (var5) { + case -1648805473: + default: + if (mc.player == null) { + var5 = 852020952; + } else { + var5 = 1978354505; + } + break; + case -1400957917: + var4 = mc.player.getInventory().getItem(var3); + var2 = var2 + var4.getItem().toString() + var4.getCount(); + var3++; + var5 = 2119286173; + break; + case -1141011724: + if (!var2.equals(this.lastInventoryHash)) { + var5 = 1406608129; + } else { + var5 = -703201953; + } + break; + case -1107011879: + this.renderInventory(var1, this.toggleAnimation.value()); + var5 = 1551988863; + break; + case -703201953: + this.inventoryChangeAnimation.update(1.0F); + this.renderInventory(var1, this.toggleAnimation.value() * this.inventoryChangeAnimation.value()); + return; + case -346698263: + var2 = ""; + var3 = 9; + var5 = 2119286173; + break; + case 852020952: + this.toggleAnimation.update(0.0F); + if (this.toggleAnimation.value() > 0.01F) { + var5 = -1107011879; + } else { + var5 = 1551988863; + } + break; + case 1220234922: + return; + case 1406608129: + this.inventoryChangeAnimation.update(0.0F); + this.lastInventoryHash = var2; + var5 = -703201953; + break; + case 1551988863: + return; + case 1978354505: + this.toggleAnimation.update(1.0F); + if (this.toggleAnimation.value() <= 0.01F) { + var5 = 1220234922; + } else { + var5 = -346698263; + } + break; + case 2119286173: + if (var3 < (922477501 | -922477465) + (922477501 & -922477465)) { + var5 = -1400957917; + } else { + var5 = -1141011724; + } + } + } + } + + private void renderInventory(aru var1, float var2) { + if (mc.player == null) { + mv var22 = bz.getInstance().getThemeManager().getCurrentTheme(); + asu var23 = var22.getForegroundColor(); + var1.pose().pushMatrix(); + var1.pose().translate(this.x + this.lastWidth / 2.0F, this.y + this.lastHeight / 2.0F); + var1.pose().scale(var2, var2); + var1.pose().translate(-(this.x + this.lastWidth / 2.0F), -(this.y + this.lastHeight / 2.0F)); + var1.drawRoundedRect(this.x, this.y, this.lastWidth, this.lastHeight, asj.all(oc.CONTROL), var23); + var1.pose().popMatrix(); + } else { + ge var3 = gl.MEDIUM.getFont(6.0F); + float var4 = 20.0F; + float var5 = 4.0F; + mv var6 = bz.getInstance().getThemeManager().getCurrentTheme(); + asu var7 = var6.getForegroundColor(); + asu var8 = var6.getForegroundLight(); + int var9 = 9; + int var10 = 3; + float var11 = var9 * var4; + float var12 = var10 * var4; + this.width = var11 + 4.0F; + this.height = var12 + 4.0F; + this.lastWidth = this.width; + this.lastHeight = this.height; + var1.pose().pushMatrix(); + var1.pose().translate(this.x + this.width / 2.0F, this.y + this.height / 2.0F); + var1.pose().scale(var2, var2); + var1.pose().translate(-(this.x + this.width / 2.0F), -(this.y + this.height / 2.0F)); + pi.surface(var1, this.x, this.y, this.width, this.height, asj.uniform(pk.radiusPanel()), asu.WHITE); + + for (int var13 = 0; var13 < var10; var13++) { + for (int var14 = 0; var14 < var9; var14++) { + int var15 = (958642529 | -958642520) + + (958642529 & -958642520) + + var13 * ((1159233032 ^ -1159233023) + ((1159233032 & -1159233023) << 1)) + + var14; + ItemStack var16 = mc.player.getInventory().getItem(var15); + float var17 = this.x + 2.0F + var14 * var4; + float var18 = this.y + 2.0F + var13 * var4; + asu var19 = (var13 + var14) % 2== 0 + ? new asu( + 0, + 0, + 0, + (1648838696 | -1648838696) + (1648838696 & -1648838696) + ) + : var6.getColor().withAlpha((1276237169 | -1276237149) + (1276237169 & -1276237149)); + float var20 = asj.of(oc.CHIP); + arq var21 = var14 == 0 && var13 == 0 + ? arq.top(var20, 0.0F) + : ( + var14 == (-729763901 | 729763909) + (-729763901 & 729763909) && var13 == 0 + ? arq.top(0.0F, var20) + : ( + var14 == 0 && var13 == 2? arq.bottom(var20, 0.0F) + : ( + var14 == (1623881043 | -1623881035) + (1623881043 & -1623881035) && var13 == 2? arq.bottom(0.0F, var20) + : arq.ZERO + ) + ) + ); + var1.drawSurface(aso.CONTROL, var17, var18, var4, var4, var21, var19); + if (!var16.isEmpty() && arz.hudItemsVisible()) { + var1.pushMatrix(); + var1.pose().translate(var17 + (var4 - 12.8F) / 2.0F, var18 + (var4 - 12.8F) / 2.0F); + var1.pose().scale(0.8F, 0.8F); + var1.item(var16, 0, (-728123560 ^ 728123560) + ((-728123560 & 728123560) << 1)); + ((b.c)var1).callDrawItemBar(var16, 0, (62752305 | -62752305) + (62752305 & -62752305)); + ((b.c)var1) + .callDrawCooldownProgress( + var16, 0, (89396075 ^ -89396075) + ((89396075 & -89396075) << 1) + ); + var1.popMatrix(); + } + } + } + + var1.pose().popMatrix(); + } + } +} diff --git a/src/main/java/defpackage/px.java b/src/main/java/defpackage/px.java new file mode 100644 index 0000000..f513ac0 --- /dev/null +++ b/src/main/java/defpackage/px.java @@ -0,0 +1,408 @@ +package defpackage; + +import net.minecraft.util.Mth; + +public class px extends qx { + private static final String ACCURACY_LABEL = "RESET"; + private static final String TIMING_LABEL = "LAST"; + private static final String PERCENT_SUFFIX = "%"; + private static final String NO_DATA_VALUE = "--%"; + private static final String NO_DATA_STATUS = "No Jump"; + private static final String PERFECT_STATUS = "Perfect"; + private static final String MISS_STATUS = "Miss"; + private static final String EARLY_PREFIX = "Early "; + private static final String LATE_PREFIX = "Late "; + private static final String TICK_SUFFIX = "t"; + private static final float LABEL_GAP = 4.0F; + private static final float GAUGE_HEIGHT = 2.5F; + private static final arq GAUGE_RADIUS = asj.pill(2.5F); + private static final float MARKER_WIDTH = 2.0F; + private static final arq MARKER_RADIUS = asj.pill(2.0F); + private static final float MARKER_OVERHANG = 1.25F; + private static final float MIN_ACCURACY_INNER = 38.0F; + private static final float MIN_TIMING_INNER = 46.0F; + private static final float GAUGE_BOTTOM_INSET = 3.5F; + private static final float TEXT_CENTER_RATIO = 0.32F; + private static final float PANEL_HEIGHT_SCALE = 1.35F; + private static final float TRACK_ALPHA = 0.12F; + private static final float ZONE_ALPHA = 0.32F; + private static final float CENTER_FRACTION = 0.5F; + private static final float ZONE_HALF_TICK = 0.5F; + private static final float PERCENT_TO_FRACTION = 0.01F; + private static final float STALE_ALPHA = 0.25F; + private static final long STALE_AFTER_MS = 5000L; + private static final int NO_CACHED_PERCENT = Integer.MIN_VALUE; + private static final int NO_CACHED_SEQUENCE = Integer.MIN_VALUE; + private final pj smoothing = new pj(); + private float animAccuracyInner = 0.0F; + private float animTimingInner = 0.0F; + private float animFill = 0.0F; + private float animMarker = 0.5F; + private float animMarkerAlpha = 0.0F; + private int cachedPercent = -2147483648; + private String percentText = "--%"; + private int cachedSequence = -2147483648; + private int cachedTolerance = -2147483648; + private String statusText = "No Jump"; + private asu statusColor = null; + + public px(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + } + + @Override + public void tick() { + int var1 = -1165670911; + + while (true) { + switch (var1) { + case -1614284336: + if (mc.level == null) { + var1 = 4424199; + } else { + var1 = 977925960; + } + break; + case -1165670911: + default: + if (mc.player != null) { + var1 = -1614284336; + } else { + var1 = 4424199; + } + break; + case 4424199: + apl.INSTANCE.reset(); + return; + case 977925960: + apl.INSTANCE.poll(mc.player.tickCount); + return; + } + } + } + + @Override + public void render(aru var1) { + mv var2 = null; + asu var3 = null; + asu var4 = null; + asu var5 = null; + ge var6 = null; + ge var7 = null; + float var8 = 0.0F; + float var9 = 0.0F; + apl var10 = null; + int var11 = 0; + int var12 = 0; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var19 = 0.0F; + int var18 = -750551452; + + while (true) { + switch (var18) { + case -750551452: + default: + var2 = bz.getInstance().getThemeManager().getCurrentTheme(); + var3 = var2.getGrayLight(); + var4 = var2.getWhite(); + var5 = var2.getWhite().withAlpha(0.12F); + var6 = pi.labelFont(); + var7 = pi.valueFont(); + var8 = pi.barHeight() * 1.35F; + var9 = pi.pad(); + this.smoothing.beginFrame(); + var10 = apl.INSTANCE; + var11 = vm.INSTANCE.getJumpResetTolerance(); + var12 = var10.accuracyPercent(var11); + this.updatePercentText(var12); + this.updateStatus(var10, var11); + if (var12 < 0) { + var18 = 1624271299; + } else { + var18 = -206194868; + } + break; + case -216249537: + var13 = var19; + this.animFill = this.smoothing.value(this.animFill, var13); + this.animMarker = this.smoothing.value(this.animMarker, this.markerFraction(var10)); + this.animMarkerAlpha = this.smoothing.value(this.animMarkerAlpha, this.markerAlpha(var10)); + this.animAccuracyInner = this.smoothing + .width( + this.animAccuracyInner, + this.sectionInner( + var6, var7, "RESET", this.percentText, 38.0F + ) + ); + this.animTimingInner = this.smoothing + .width( + this.animTimingInner, + this.sectionInner(var6, var7, "LAST", this.statusText, 46.0F) + ); + var14 = this.animAccuracyInner + var9 * 2.0F; + var15 = this.animTimingInner + var9 * 2.0F; + var16 = pi.dividerWidth(); + this.width = var14 + var16 + var15; + this.height = var8; + pi.surface(var1, this.x, this.y, this.width, var8); + var17 = this.x; + this.drawAccuracySection(var1, var6, var7, var17, var14, this.animAccuracyInner, var8, var9, var12, var3, var4, var5); + var17 = pi.divider(var1, var17 + var14, this.y, var8); + this.drawTimingSection(var1, var6, var7, var17, var15, this.animTimingInner, var8, var9, var11, var3, var4, var5); + return; + case -206194868: + var19 = var12 * 0.01F; + var18 = -216249537; + break; + case 1624271299: + var19 = 0.0F; + var18 = -216249537; + } + } + } + + private void updatePercentText(int var1) { + if (var1 != this.cachedPercent) { + this.cachedPercent = var1; + this.percentText = var1 < 0 ? "--%" : var1 + "%"; + } + } + + private void updateStatus(apl var1, int var2) { + int var3 = var1.resultSequence(); + if (var3 != this.cachedSequence || var2 != this.cachedTolerance) { + this.cachedSequence = var3; + this.cachedTolerance = var2; + if (!var1.hasResult()) { + this.statusText = "No Jump"; + this.statusColor = null; + } else if (var1.lastMissed()) { + this.statusText = "Miss"; + this.statusColor = pi.gaugeBad(); + } else { + int var4 = var1.lastOffset(); + if (var4 == 0) { + this.statusText = "Perfect"; + this.statusColor = pi.gaugeGood(); + } else { + int var5 = Math.abs(var4); + this.statusText = ( + var4 < 0 + ? "Early " + : "Late " + ) + + var5 + + "t"; + this.statusColor = var5 <= var2 ? pi.gaugeWarn() : pi.gaugeBad(); + } + } + } + } + + private float markerFraction(apl var1) { + int var2 = 1770998196; + + while (true) { + switch (var2) { + case -2006664870: + return 0.5F; + case -1204374614: + return this.offsetFraction(var1.lastOffset()); + case 1086348648: + if (var1.lastMissed()) { + var2 = -2006664870; + } else { + var2 = -1204374614; + } + break; + case 1770998196: + default: + if (var1.hasResult()) { + var2 = 1086348648; + } else { + var2 = -2006664870; + } + } + } + } + + private float markerAlpha(apl var1) { + long var2 = (-684280778450702218L | 684280778450702218L) + (-684280778450702218L & 684280778450702218L); + float var5 = 0.0F; + int var4 = -1340552317; + + while (true) { + switch (var4) { + case -1840022907: + return 0.0F; + case -1340552317: + default: + if (var1.hasResult()) { + var4 = 490050400; + } else { + var4 = -1840022907; + } + break; + case -345403960: + return var5; + case -34382278: + var5 = 0.25F; + var4 = -345403960; + break; + case 490050400: + if (var1.lastMissed()) { + var4 = -1840022907; + } else { + var4 = 2097556967; + } + break; + case 2020656187: + var5 = 1.0F; + var4 = -345403960; + break; + case 2097556967: + var2 = System.currentTimeMillis() - var1.lastResultTime(); + if (var2 >= (622470592618382258L | -622470592618377258L) + (622470592618382258L & -622470592618377258L)) { + var4 = -34382278; + } else { + var4 = 2020656187; + } + } + } + } + + private float offsetFraction(float var1) { + return Mth.clamp((var1 + 11.0F) / 22.0F, 0.0F, 1.0F); + } + + private float sectionInner(ge var1, ge var2, String var3, String var4, float var5) { + float var6 = var1.width(var3) + 4.0F + var2.width(var4); + return Math.max(var6, var5); + } + + private void drawSectionText(aru var1, ge var2, ge var3, float var4, float var5, String var6, String var7, asu var8, asu var9) { + float var10 = this.y + var5 * 0.32F; + var1.drawText(var2, var6, var4, var10 - var2.height() / 2.0F, var8); + var1.drawText(var3, var7, var4 + var2.width(var6) + 4.0F, var10 - var3.height() / 2.0F, var9); + } + + private void drawAccuracySection( + aru var1, ge var2, ge var3, float var4, float var5, float var6, float var7, float var8, int var9, asu var10, asu var11, asu var12 + ) { + float var13 = 0.0F; + asu var14 = null; + float var15 = 0.0F; + float var16 = 0.0F; + asu var18 = null; + int var17 = 397105708; + + while (true) { + switch (var17) { + case -654228701: + var18 = pi.healthColor(this.animFill); + var17 = 1529746340; + break; + case 397105708: + default: + var1.clipTrailing(var4, this.y, var4 + var5, this.y + var7, ars.revealFade()); + var13 = var4 + var8; + if (var9 < 0) { + var17 = 1317029215; + } else { + var17 = -654228701; + } + break; + case 1317029215: + var18 = var11; + var17 = 1529746340; + break; + case 1529746340: + var14 = var18; + this.drawSectionText( + var1, var2, var3, var13, var7, "RESET", this.percentText, var10, var14 + ); + var15 = this.y + var7 - 2.5F - 3.5F; + var1.drawSurface(aso.CONTROL, var13, var15, var6, 2.5F, GAUGE_RADIUS, var12); + var16 = Math.max(2.5F, var6 * Mth.clamp(this.animFill, 0.0F, 1.0F)); + var1.drawRoundedRect(var13, var15, var16, 2.5F, GAUGE_RADIUS, pi.healthColor(this.animFill)); + var1.popClip(); + return; + } + } + } + + private void drawTimingSection( + aru var1, ge var2, ge var3, float var4, float var5, float var6, float var7, float var8, int var9, asu var10, asu var11, asu var12 + ) { + float var13 = 0.0F; + asu var14 = null; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + asu var22 = null; + int var21 = 88492527; + + while (true) { + switch (var21) { + case -1748522108: + var1.popClip(); + return; + case -1641369315: + var22 = this.statusColor; + var21 = -904639534; + break; + case -904639534: + var14 = var22; + this.drawSectionText( + var1, + var2, + var3, + var13, + var7, + "LAST", + this.statusText, + var10, + var14 + ); + var15 = this.y + var7 - 2.5F - 3.5F; + var1.drawSurface(aso.CONTROL, var13, var15, var6, 2.5F, GAUGE_RADIUS, var12); + var16 = this.offsetFraction(-var9 - 0.5F); + var17 = this.offsetFraction(var9 + 0.5F); + var18 = var13 + var6 * var16; + var19 = Math.max(2.5F, var6 * (var17 - var16)); + var1.drawRoundedRect(var18, var15, var19, 2.5F, GAUGE_RADIUS, pi.gaugeGood().withAlpha(0.32F)); + if (this.animMarkerAlpha > 0.0F) { + var21 = 1901435998; + } else { + var21 = -1748522108; + } + break; + case 88492527: + default: + var1.clipTrailing(var4, this.y, var4 + var5, this.y + var7, ars.revealFade()); + var13 = var4 + var8; + if (this.statusColor == null) { + var21 = 1831357911; + } else { + var21 = -1641369315; + } + break; + case 1831357911: + var22 = var11; + var21 = -904639534; + break; + case 1901435998: + var20 = Mth.clamp(var13 + var6 * this.animMarker - 1.0F, var13, var13 + var6 - 2.0F); + var1.drawRoundedRect(var20, var15 - 1.25F, 2.0F, 5.0F, MARKER_RADIUS, var14.mulAlpha(Mth.clamp(this.animMarkerAlpha, 0.0F, 1.0F))); + var21 = -1748522108; + } + } + } +} diff --git a/src/main/java/defpackage/py.java b/src/main/java/defpackage/py.java new file mode 100644 index 0000000..fc89c3f --- /dev/null +++ b/src/main/java/defpackage/py.java @@ -0,0 +1,151 @@ +package defpackage; + +import java.util.Objects; + +class py implements Comparable { + private pz this$0; + + final ct animation; + private final ct animationColor; + final rm module; + private float width; + + public py(pz var1, rm var2) { + Objects.requireNonNull(var1); + this.this$0 = var1; + this.animation = ct.layout(ob.FAST); + this.animationColor = ct.layout(ob.MEDIUM); + this.module = var2; + } + + public float updateWidth() { + float var1 = gl.MEDIUM.getWidth(this.module.getName(), 6.0F); + float var2 = Math.round(gl.MEDIUM.getWidth(aqz.getKeyName(this.module.getKeyCode()), 6.0F)); + return 24.0F + var1 + 8.0F + var2 + 8.0F; + } + + public float getHeight() { + return 18.0F * this.animation.value(); + } + + public void render(aru var1, float var2, float var3, float var4, int var5) { + mv var6 = bz.getInstance().getThemeManager().getCurrentTheme(); + ge var7 = gl.ICONS.getFont(6.0F); + ge var8 = gl.MEDIUM.getFont(6.0F); + this.animation.update(this.module.isEnabled() && this.module.getKeyCode() != -1? 1.0F : 0.0F); + var1.pushMatrix(); + var1.pose().translate(var2 + var4 / 2.0F, var3 + 9.0F); + float var9 = this.animation.value(); + var1.pose().scale(var9, var9); + var1.pose().translate(-(var2 + var4 / 2.0F), -(var3 + 9.0F)); + float var10 = Math.round(gl.MEDIUM.getWidth(aqz.getKeyName(this.module.getKeyCode()), 6.0F)); + float var11 = 8.0F + var10; + float var12 = var4 - (var11 + 10.0F + 5.0F + 10.0F); + this.animationColor.update(var5 % 2== 0 ? 1.0F : 0.0F); + asu var13 = new asu( + 0, + 0, + 0, + (-1847467074 | 1847467074) + (-1847467074 & 1847467074) + ) + .mix(var6.getColor().withAlpha((1460143353 ^ -1460143333) + ((1460143353 & -1460143333) << 1)), this.animationColor.value()); + float var14 = var5 == this.this$0.keyModules.size() - 1? 16.0F : 18.0F; + var1.drawSurface( + aso.ROW, + var2 + 2.0F, + var3, + var4 - 4.0F, + var14, + var5 == this.this$0.keyModules.size() - 1? asj.bottom(oc.CHIP) : arq.ZERO, + var13 + ); + var1.drawText(var7, this.module.getCategory().getIcon(), var2 + 8.0F, var3 + (18.0F - var7.height()) / 2.0F, var6.getWhite()); + var1.drawText(var8, this.module.getName(), var2 + 8.0F + 8.0F + 8.0F, var3 + (18.0F - var8.height()) / 2.0F, var6.getWhite()); + var1.drawText( + gl.BOLD.getFont(8.0F), + ".", + var2 + 8.0F + 8.0F + 2.0F, + var3 + 4.0F, + var6.getWhiteGray() + ); + var1.drawText(var8, aqz.getKeyName(this.module.getKeyCode()), var2 + var4 - 8.0F - var10, var3 + (18.0F - var8.height()) / 2.0F, var6.getColor()); + var1.popMatrix(); + } + + @Override + public boolean equals(Object var1) { + Object var2 = null; + int var3 = -1369916351; + + while (true) { + switch (var3) { + case -1369916351: + default: + if (this == var1) { + var3 = -1276629637; + } else { + var3 = -1303204240; + } + break; + case -1303204240: + if (var1 != null) { + var3 = 1516640276; + } else { + var3 = 1222851188; + } + break; + case -1276629637: + return (boolean)(((1)) != 0); + case -356357539: + var2 = (py)var1; + return Objects.equals(this.module.getName(), ((py)var2).module.getName()); + case 1222851188: + return (boolean)(((0)) != 0); + case 1516640276: + if (this.getClass() != var1.getClass()) { + var3 = 1222851188; + } else { + var3 = -356357539; + } + } + } + } + + public boolean isDelete() { + int var2 = 0; + int var1 = -413491485; + + while (true) { + switch (var1) { + case -1802770986: + return (boolean)((var2) != 0); + case -413491485: + default: + if (this.animation.value() == 0.0F) { + var1 = 1229718183; + } else { + var1 = -13629551; + } + break; + case -13629551: + var2 = 0; + var1 = -1802770986; + break; + case 1229718183: + var2 = 1; + var1 = -1802770986; + } + } + } + + @Override + public int hashCode() { + Object[] var10000 = new Object[1]; + var10000[0] = this.module; + return Objects.hash(var10000); + } + + public int compareTo(py var1) { + return this.module.getName().compareTo(var1.module.getName()); + } +} diff --git a/src/main/java/defpackage/pz.java b/src/main/java/defpackage/pz.java new file mode 100644 index 0000000..68a779c --- /dev/null +++ b/src/main/java/defpackage/pz.java @@ -0,0 +1,157 @@ +package defpackage; + +import java.util.LinkedHashSet; +import net.minecraft.client.gui.screens.ChatScreen; + +public class pz extends qx { + final LinkedHashSet keyModules = new LinkedHashSet<>(); + private final ct animationWidth = ct.layout(ob.MEDIUM, 100.0F); + private final ct animationScale = ct.layout(ob.MEDIUM, 0.0F); + private final ct animationVisible = ct.layout(ob.MEDIUM, 0.0F); + + public pz(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + } + + private String headerTrailing() { + return String.valueOf(this.keyModules.size()); + } + + @Override + public void render(aru var1) { + ge var2 = gl.ICONS.getFont(6.0F); + bz.getInstance().getModuleManager().getActiveModules().forEach(var1x -> { + int var2x = 1038439409; + + while (true) { + switch (var2x) { + case -428764965: + if (!this.keyModules.contains(new py(this, var1x))) { + var2x = 234359643; + } else { + var2x = 563480243; + } + break; + case 234359643: + this.keyModules.addLast(new py(this, var1x)); + var2x = 563480243; + break; + case 563480243: + return; + case 1038439409: + default: + if (var1x.getKeyCode() != (-745654092 | 745654091) + (-745654092 & 745654091)) { + var2x = -428764965; + } else { + var2x = 563480243; + } + } + } + }); + this.keyModules.removeIf(var0 -> { + int var2x = 0; + int var1x = -1949487039; + + while (true) { + switch (var1x) { + case -1949487039: + default: + if (var0.module.isEnabled()) { + var1x = -168563816; + } else { + var1x = 1690456935; + } + break; + case -1651723069: + var2x = 0; + var1x = 1608703608; + break; + case -168563816: + if (var0.module.getKeyCode() == (-73067545 ^ 73067544) + ((-73067545 & 73067544) << 1)) { + var1x = 1690456935; + } else { + var1x = -1651723069; + } + break; + case 1419286387: + var2x = 1; + var1x = 1608703608; + break; + case 1608703608: + return (boolean)((var2x) != 0); + case 1690456935: + if (var0.isDelete()) { + var1x = 1419286387; + } else { + var1x = -1651723069; + } + } + } + }); + if (this.keyModules.isEmpty()) { + this.animationScale.update(0.0F); + } else { + this.animationScale + .update( + this.keyModules.size() == (-816628488 | 816628489) + (-816628488 & 816628489) && this.keyModules.getFirst().animation.target() == 0.0F + ? 0.0F + : 1.0F + ); + } + + float var3 = this.x; + float var4 = this.y; + float var5 = 1.5F; + float var6 = (float)(18.0 + this.keyModules.stream().mapToDouble(var0 -> var0.getHeight()).sum()); + ge var7 = gl.MEDIUM.getFont(6.0F); + float var8 = 18.0F + + var7.width("Keybinds") + + 8.0F + + var2.width("M") + + 8.0F; + + for (py var10 : this.keyModules) { + var8 = Math.max(var8, var10.updateWidth()); + } + + float var15 = this.animationWidth.update(var8); + this.width = var15; + this.height = var6; + this.animationVisible + .update( + (boolean)(((!(mc.gui.screen() instanceof ChatScreen) && this.keyModules.isEmpty() + ? 0: (-182219376 ^ 182219377) + ((-182219376 & 182219377) << 1)) + ) != 0)); + mv var16 = bz.getInstance().getThemeManager().getCurrentTheme(); + var1.pushMatrix(); + var1.pose().translate(var3 + var15 / 2.0F, var4 + var6 / 2.0F); + var1.pose().scale(this.animationVisible.value(), this.animationVisible.value()); + var1.pose().translate(-(var3 + var15 / 2.0F), -(var4 + var6 / 2.0F)); + arq var11 = asj.all(oc.CARD); + pi.surface(var1, var3, var4, var15, var6, asj.uniform(pk.radiusPanel()), asu.WHITE); + pi.header( + var1, + "k", + "Keybinds", + this.headerTrailing(), + var3, + var4, + var15 + ); + if (this.animationVisible.value() > 0.0F) { + float var17 = var4 + 18.0F; + int var12 = 0; + var1.clipTrailingDown(var3, var4, var3 + var15, var4 + var6, ars.revealFade()); + + for (py var14 : this.keyModules) { + var14.render(var1, var3, var17, var15, var12); + var17 += var14.getHeight(); + var12++; + } + + var1.popClip(); + } + + var1.popMatrix(); + } +} diff --git a/src/main/java/defpackage/q.java b/src/main/java/defpackage/q.java new file mode 100644 index 0000000..6964375 --- /dev/null +++ b/src/main/java/defpackage/q.java @@ -0,0 +1,14 @@ +package defpackage; + +public abstract class q implements m, o { + private final byte type; + + protected q(byte var1) { + this.type = var1; + } + + @Override + public byte getType() { + return this.type; + } +} diff --git a/src/main/java/defpackage/qa.java b/src/main/java/defpackage/qa.java new file mode 100644 index 0000000..bb29892 --- /dev/null +++ b/src/main/java/defpackage/qa.java @@ -0,0 +1,7 @@ +package defpackage; + +enum qa { + LEFT, + CENTER, + RIGHT; +} diff --git a/src/main/java/defpackage/qb.java b/src/main/java/defpackage/qb.java new file mode 100644 index 0000000..591932e --- /dev/null +++ b/src/main/java/defpackage/qb.java @@ -0,0 +1,35 @@ +package defpackage; + +final class qb extends qd { + final rm module; + boolean enabled; + private final ct state; + + qb(rm var1, boolean var2) { + super(var1.getCategory().getIcon(), var1.getName(), qf.statusText(var1, var2)); + this.module = var1; + this.enabled = var2; + this.state = ct.layout(ob.SETTLED, var2 ? 1.0F : 0.0F); + } + + void update(boolean var1) { + this.enabled = var1; + this.update(qf.statusText(this.module, var1)); + } + + @Override + void step(long var1) { + super.step(var1); + this.state.update(this.enabled ? 1.0F : 0.0F); + } + + @Override + asu titleColor(mv var1) { + return asu.lerp(var1.getGrayLight(), var1.getColor(), this.state.value()); + } + + @Override + asu statusColor(mv var1) { + return asu.lerp(var1.getGray(), var1.getWhite(), this.state.value()); + } +} diff --git a/src/main/java/defpackage/qc.java b/src/main/java/defpackage/qc.java new file mode 100644 index 0000000..68cdb15 --- /dev/null +++ b/src/main/java/defpackage/qc.java @@ -0,0 +1,108 @@ +package defpackage; + +import net.minecraft.network.chat.Component; + +final class qc extends qe { + final String icon; + Component text; + Component previousText; + + qc(String var1, Component var2) { + this.icon = var1; + this.text = var2; + this.previousText = var2; + } + + void update(Component var1) { + int var2 = 0; + int var4 = 0; + int var3 = -1362808988; + + while (true) { + switch (var3) { + case -1362808988: + default: + if (!this.text.equals(var1)) { + var3 = -602623536; + } else { + var3 = 305329811; + } + break; + case -602623536: + var4 = 1; + var3 = 1175840781; + break; + case 305329811: + var4 = 0; + var3 = 1175840781; + break; + case 1175840781: + var2 = var4; + if (var2 != 0) { + var3 = 1603745070; + } else { + var3 = 1834360868; + } + break; + case 1603745070: + this.previousText = this.text; + this.text = var1; + var3 = 1834360868; + break; + case 1834360868: + this.refresh((boolean)((var2) != 0)); + return; + } + } + } + + @Override + float targetWidth(ge var1, ge var2) { + return 6.0F + var1.width(this.icon) + 6.0F + var2.width(this.text) + 8.0F; + } + + @Override + void drawContent(aru var1, float var2, float var3, ge var4, ge var5, mv var6, float var7) { + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + asu var11 = null; + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = 818109092; + + while (true) { + switch (var14) { + case -353499643: + var12 = this.outgoingAlpha(); + var13 = this.incomingAlpha(); + var1.drawText(var5, this.previousText, var9, var10 - 3.0F * (1.0F - var12), var11.mulAlpha(var7 * var12)); + var1.drawText(var5, this.text, var9, var10 + 3.0F * (1.0F - var13), var11.mulAlpha(var7 * var13)); + return; + case 818109092: + default: + var8 = var2 + 6.0F; + var1.drawText(var4, this.icon, var8, qf.textY(var3, var4), var6.getWhite().mulAlpha(var7)); + var9 = var8 + var4.width(this.icon) + 6.0F; + var10 = qf.textY(var3, var5); + var11 = var6.getWhite(); + if (this.morphing()) { + var14 = 970621860; + } else { + var14 = 1660079263; + } + break; + case 970621860: + if (!this.previousText.equals(this.text)) { + var14 = -353499643; + } else { + var14 = 1660079263; + } + break; + case 1660079263: + var1.drawText(var5, this.text, var9, var10, var11.mulAlpha(var7)); + return; + } + } + } +} diff --git a/src/main/java/defpackage/qd.java b/src/main/java/defpackage/qd.java new file mode 100644 index 0000000..d00f382 --- /dev/null +++ b/src/main/java/defpackage/qd.java @@ -0,0 +1,207 @@ +package defpackage; + +class qd extends qe { + final String icon; + final String title; + String status; + String previousStatus; + private boolean persistent; + + qd(String var1, String var2, String var3) { + this.icon = var1; + this.title = var2; + this.status = var3; + this.previousStatus = var3; + } + + static qd example() { + qd var0 = new qd( + "n", + "Notification", + "example" + ); + var0.persistent = (boolean)(((1)) != 0); + var0.leaving = (boolean)(((1)) != 0); + return var0; + } + + void update(String var1) { + int var2 = 0; + int var4 = 0; + int var3 = 1615370248; + + while (true) { + switch (var3) { + case -2119585716: + var2 = var4; + if (var2 != 0) { + var3 = -922455030; + } else { + var3 = 1617567660; + } + break; + case -1492684126: + var4 = 0; + var3 = -2119585716; + break; + case -1089493361: + var4 = 1; + var3 = -2119585716; + break; + case -922455030: + this.previousStatus = this.status; + this.status = var1; + var3 = 1617567660; + break; + case 1615370248: + default: + if (!this.status.equalsIgnoreCase(var1)) { + var3 = -1089493361; + } else { + var3 = -1492684126; + } + break; + case 1617567660: + this.refresh((boolean)((var2) != 0)); + return; + } + } + } + + @Override + boolean finished() { + int var2 = 0; + int var1 = -1808551598; + + while (true) { + switch (var1) { + case -1946396847: + return (boolean)((var2) != 0); + case -1808551598: + default: + if (!this.persistent) { + var1 = 1352737464; + } else { + var1 = -862355272; + } + break; + case -862355272: + var2 = 0; + var1 = -1946396847; + break; + case -562139201: + var2 = 1; + var1 = -1946396847; + break; + case 1352737464: + if (super.finished()) { + var1 = -562139201; + } else { + var1 = -862355272; + } + } + } + } + + @Override + boolean showsLife() { + int var2 = 0; + int var1 = -2009134815; + + while (true) { + switch (var1) { + case -2009134815: + default: + if (!this.persistent) { + var1 = -751105130; + } else { + var1 = 1037767321; + } + break; + case -751105130: + if (super.showsLife()) { + var1 = 1099635275; + } else { + var1 = 1037767321; + } + break; + case 1037767321: + var2 = 0; + var1 = 1142675437; + break; + case 1099635275: + var2 = 1; + var1 = 1142675437; + break; + case 1142675437: + return (boolean)((var2) != 0); + } + } + } + + String iconGlyph() { + return this.icon; + } + + asu titleColor(mv var1) { + return var1.getColor(); + } + + asu statusColor(mv var1) { + return var1.getWhite(); + } + + @Override + float targetWidth(ge var1, ge var2) { + return 6.0F + var1.width(this.iconGlyph()) + 6.0F + var2.width(this.title) + 4.0F + var2.width(this.status) + 8.0F; + } + + @Override + void drawContent(aru var1, float var2, float var3, ge var4, ge var5, mv var6, float var7) { + String var8 = null; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + asu var13 = null; + float var14 = 0.0F; + float var15 = 0.0F; + int var16 = 522865579; + + while (true) { + switch (var16) { + case -645004724: + var14 = this.outgoingAlpha(); + var15 = this.incomingAlpha(); + var1.drawText(var5, this.previousStatus, var12, var11 - 3.0F * (1.0F - var14), var13.mulAlpha(var7 * var14)); + var1.drawText(var5, this.status, var12, var11 + 3.0F * (1.0F - var15), var13.mulAlpha(var7 * var15)); + return; + case 1349929: + var1.drawText(var5, this.status, var12, var11, var13.mulAlpha(var7)); + return; + case 522865579: + default: + var8 = this.iconGlyph(); + var9 = var2 + 6.0F; + var1.drawText(var4, var8, var9, qf.textY(var3, var4), var6.getWhite().mulAlpha(var7)); + var10 = var9 + var4.width(var8) + 6.0F; + var11 = qf.textY(var3, var5); + var1.drawText(var5, this.title, var10, var11, this.titleColor(var6).mulAlpha(var7)); + var12 = var10 + var5.width(this.title) + 4.0F; + var13 = this.statusColor(var6); + if (this.morphing()) { + var16 = 1335778762; + } else { + var16 = 1349929; + } + break; + case 1335778762: + if (!this.previousStatus.equalsIgnoreCase(this.status)) { + var16 = -645004724; + } else { + var16 = 1349929; + } + } + } + } +} diff --git a/src/main/java/defpackage/qe.java b/src/main/java/defpackage/qe.java new file mode 100644 index 0000000..8db9b4d --- /dev/null +++ b/src/main/java/defpackage/qe.java @@ -0,0 +1,196 @@ +package defpackage; + +abstract class qe { + long shownAt = System.currentTimeMillis(); + boolean leaving; + final ct slot = ct.layout(ob.SETTLED, 0.0F); + final ct presence = ct.transform(ob.SETTLED, 0.0F); + final ct morph = ct.layout(ob.SLOW, 1.0F); + private final ct bump = ct.layout(ob.SLOW, 1.0F); + private final ct widthSpring = ct.layout(ob.MEDIUM, 0.0F); + private boolean widthPrimed; + + qe() { + } + + void step(long var1) { + if (!this.leaving && var1 - this.shownAt > (-6410278096495776160L ^ 6410278096495778960L) + ((-6410278096495776160L & 6410278096495778960L) << 1)) { + this.leaving = (boolean)(((1)) != 0); + } + + if (this.leaving) { + this.presence.update(0.0F); + this.slot.update(this.presence.value() < 0.35F ? 0.0F : 1.0F); + } else { + this.slot.update(1.0F); + this.presence.update(this.slot.value() >= 0.35F ? 1.0F : 0.0F); + } + + this.morph.update(1.0F); + this.bump.update(1.0F); + } + + boolean finished() { + int var2 = 0; + int var1 = 1650828032; + + while (true) { + switch (var1) { + case -1766838759: + var2 = 1; + var1 = 618272699; + break; + case -764522680: + var2 = 0; + var1 = 618272699; + break; + case 618272699: + return (boolean)((var2) != 0); + case 994174569: + if (this.presence.value() <= 0.001F) { + var1 = -1766838759; + } else { + var1 = -764522680; + } + break; + case 1339946061: + if (this.slot.value() <= 0.001F) { + var1 = 994174569; + } else { + var1 = -764522680; + } + break; + case 1650828032: + default: + if (this.leaving) { + var1 = 1339946061; + } else { + var1 = -764522680; + } + } + } + } + + boolean showsLife() { + int var2 = 0; + int var1 = 1412058931; + + while (true) { + switch (var1) { + case 2417876: + return (boolean)((var2) != 0); + case 806106162: + var2 = 0; + var1 = 2417876; + break; + case 1412058931: + default: + if (!this.leaving) { + var1 = 1539850745; + } else { + var1 = 806106162; + } + break; + case 1539850745: + var2 = 1; + var1 = 2417876; + } + } + } + + void refresh(boolean var1) { + int var2 = 1277354737; + + while (true) { + switch (var2) { + case -1087716540: + this.morph.jumpTo(0.0F); + this.morph.animateTo(1.0F); + var2 = -1066473777; + break; + case -1066473777: + this.bump.jumpTo(0.0F); + this.bump.animateTo(1.0F); + return; + case 1277354737: + default: + this.shownAt = System.currentTimeMillis(); + this.leaving = (boolean)(((0)) != 0); + if (var1) { + var2 = -1087716540; + } else { + var2 = -1066473777; + } + } + } + } + + float bumpScale() { + float var1 = qf.clamp(this.bump.value()); + return 1.0F + 0.2F * var1 * (1.0F - var1); + } + + float width(ge var1, ge var2) { + float var3 = 0.0F; + int var4 = -476087710; + + while (true) { + switch (var4) { + case -1438334379: + return this.widthSpring.update(var3); + case -476087710: + default: + var3 = this.targetWidth(var1, var2); + if (!this.widthPrimed) { + var4 = 1743035296; + } else { + var4 = -1438334379; + } + break; + case 1743035296: + this.widthSpring.jumpTo(var3); + this.widthPrimed = (boolean)(((1)) != 0); + var4 = -1438334379; + } + } + } + + float outgoingAlpha() { + return 1.0F - qf.smoothstep(this.morph.value() / 0.45F); + } + + float incomingAlpha() { + return qf.smoothstep((this.morph.value() - 0.35F) / 0.65F); + } + + boolean morphing() { + int var2 = 0; + int var1 = -325247934; + + while (true) { + switch (var1) { + case -1929775863: + return (boolean)((var2) != 0); + case -698255679: + var2 = 0; + var1 = -1929775863; + break; + case -325247934: + default: + if (this.morph.value() < 1.0F) { + var1 = 638626045; + } else { + var1 = -698255679; + } + break; + case 638626045: + var2 = 1; + var1 = -1929775863; + } + } + } + + abstract float targetWidth(ge var1, ge var2); + + abstract void drawContent(aru var1, float var2, float var3, ge var4, ge var5, mv var6, float var7); +} diff --git a/src/main/java/defpackage/qf.java b/src/main/java/defpackage/qf.java new file mode 100644 index 0000000..30ca218 --- /dev/null +++ b/src/main/java/defpackage/qf.java @@ -0,0 +1,556 @@ +package defpackage; + +import java.util.ArrayDeque; +import java.util.Deque; +import java.util.Iterator; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.network.chat.Component; + +public class qf extends qx { + private static final String ELEMENT_NAME = "Notifications"; + private static final String STATUS_OPENED = "opened"; + private static final String STATUS_CLOSED = "closed"; + private static final String STATUS_ENABLED = "enabled"; + private static final String STATUS_DISABLED = "disabled"; + private static final String[] UI_MODULE_NAMES; + private static final String EXAMPLE_ICON = "n"; + private static final String EXAMPLE_TITLE = "Notification"; + private static final String EXAMPLE_STATUS = "example"; + private static final int MAX_VISIBLE = 5; + private static final long LIFETIME_MS = 2800L; + private static final int FONT_SIZE = 6; + private static final float TOAST_HEIGHT = 18.0F; + private static final float STACK_GAP = 4.0F; + private static final float EDGE_PAD = 6.0F; + private static final float ICON_GAP = 6.0F; + private static final float TITLE_GAP = 4.0F; + private static final float TRAILING_PAD = 8.0F; + private static final float MIN_WIDTH = 90.0F; + private static final float SURFACE_ALPHA = 0.95F; + private static final float LIFE_BAR_INSET = 1.5F; + private static final float LIFE_BAR_ALPHA = 0.7F; + private static final float ENTER_SLIDE = 10.0F; + private static final float ENTER_MIN_SCALE = 0.9F; + private static final float EXIT_MIN_SCALE = 0.94F; + private static final float REVEAL_AFTER_SLOT = 0.35F; + private static final float COLLAPSE_BELOW_PRESENCE = 0.35F; + private static final float BUMP_AMOUNT = 0.05F; + private static final float BUMP_CURVE = 4.0F; + private static final float MORPH_OUT_SHARE = 0.45F; + private static final float MORPH_IN_START = 0.35F; + private static final float MORPH_DRIFT = 3.0F; + private static final float SMOOTH_RISE = 3.0F; + private static final float SMOOTH_BEND = 2.0F; + private static final float CENTER_BAND = 0.33333334F; + private static final float VISIBLE_EPSILON = 0.001F; + private static final float HALF = 0.5F; + private static final float SHOWN = 1.0F; + private static final float HIDDEN = 0.0F; + private final ct widthAnimation = ct.layout(ob.SETTLED); + private final Deque toasts = new ArrayDeque<>(); + private final qd example = qd.example(); + + public static String statusText(rm var0, boolean var1) { + String var2 = null; + String[] var3 = null; + int var4 = 0; + int var5 = 0; + String var6 = null; + String var8 = null; + String var9 = null; + int var7 = -1486972167; + + while (true) { + switch (var7) { + case -1652899335: + if (var5 < var4) { + var7 = 785891364; + } else { + var7 = -367491888; + } + break; + case -1486972167: + default: + var2 = var0.getName(); + var3 = UI_MODULE_NAMES; + var4 = var3.length; + var5 = 0; + var7 = -1652899335; + break; + case -567027286: + if (var1) { + var7 = 1115615901; + } else { + var7 = 2077087582; + } + break; + case -367491888: + if (var1) { + var7 = -83689095; + } else { + var7 = 297108463; + } + break; + case -83689095: + var9 = "enabled"; + var7 = 1980095581; + break; + case 297108463: + var9 = "disabled"; + var7 = 1980095581; + break; + case 420336667: + var5++; + var7 = -1652899335; + break; + case 785891364: + var6 = var3[var5]; + if (var2.equalsIgnoreCase(var6)) { + var7 = -567027286; + } else { + var7 = 420336667; + } + break; + case 931637564: + return var8; + case 1115615901: + var8 = "opened"; + var7 = 931637564; + break; + case 1980095581: + return var9; + case 2077087582: + var8 = "closed"; + var7 = 931637564; + } + } + } + + public qf(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + } + + public boolean isNotificationsEnabled() { + int var2 = 0; + int var1 = 1354514251; + + while (true) { + switch (var1) { + case -1129605571: + return (boolean)((var2) != 0); + case -545194015: + var2 = 1; + var1 = -1129605571; + break; + case 1336441926: + var2 = 0; + var1 = -1129605571; + break; + case 1354514251: + default: + if (vm.INSTANCE.isEnabled()) { + var1 = 1698986794; + } else { + var1 = 1336441926; + } + break; + case 1698986794: + if (vm.INSTANCE.isElementEnabled("Notifications")) { + var1 = -545194015; + } else { + var1 = 1336441926; + } + } + } + } + + public void addNotification(rm var1, boolean var2) { + Iterator var3 = null; + qe var4 = null; + qb var5 = null; + int var6 = -365967253; + + while (true) { + switch (var6) { + case -1770211810: + var5 = (qb)var4; + if (var5.module == var1) { + var6 = -392447515; + } else { + var6 = 24647689; + } + break; + case -970681518: + var5.update(var2); + return; + case -688869751: + return; + case -392447515: + if (!var4.leaving) { + var6 = -970681518; + } else { + var6 = 24647689; + } + break; + case -365967253: + default: + if (!this.accepting()) { + var6 = -688869751; + } else { + var6 = 427143028; + } + break; + case 24647689: + var6 = 1816605965; + break; + case 427143028: + var3 = this.toasts.iterator(); + var6 = 1816605965; + break; + case 1200006771: + this.push(new qb(var1, var2)); + return; + case 1816605965: + if (var3.hasNext()) { + var6 = 1859262177; + } else { + var6 = 1200006771; + } + break; + case 1859262177: + var4 = (qe)var3.next(); + if (var4 instanceof qb) { + var6 = -1770211810; + } else { + var6 = 24647689; + } + } + } + } + + public void addTextNotification(String var1, Component var2) { + Iterator var3 = null; + qe var4 = null; + qc var5 = null; + int var6 = -514967808; + + while (true) { + switch (var6) { + case -2012967595: + if (var3.hasNext()) { + var6 = 890517485; + } else { + var6 = 361426089; + } + break; + case -1862300468: + var6 = -2012967595; + break; + case -1823590062: + var5 = (qc)var4; + if (var5.icon.equalsIgnoreCase(var1)) { + var6 = -1196817268; + } else { + var6 = -1862300468; + } + break; + case -1403289288: + var3 = this.toasts.iterator(); + var6 = -2012967595; + break; + case -1196817268: + if (!var4.leaving) { + var6 = -896780897; + } else { + var6 = -1862300468; + } + break; + case -896780897: + var5.update(var2); + return; + case -514967808: + default: + if (!this.accepting()) { + var6 = -417444040; + } else { + var6 = -1403289288; + } + break; + case -417444040: + return; + case 361426089: + this.push(new qc(var1, var2)); + return; + case 890517485: + var4 = (qe)var3.next(); + if (var4 instanceof qc) { + var6 = -1823590062; + } else { + var6 = -1862300468; + } + } + } + } + + public void addCustomNotification(String var1, String var2, String var3) { + Iterator var4 = null; + qe var5 = null; + qd var6 = null; + int var7 = -913149487; + + while (true) { + switch (var7) { + case -2123755698: + var7 = -1852117346; + break; + case -1852117346: + if (var4.hasNext()) { + var7 = 894806226; + } else { + var7 = -1511475069; + } + break; + case -1825897179: + return; + case -1511475069: + this.push(new qd(var1, var2, var3)); + return; + case -913149487: + default: + if (!this.accepting()) { + var7 = -1825897179; + } else { + var7 = 1319211971; + } + break; + case -474321299: + var6 = (qd)var5; + if (!(var5 instanceof qb)) { + var7 = 687281711; + } else { + var7 = -2123755698; + } + break; + case 329844206: + if (!var5.leaving) { + var7 = 1074645527; + } else { + var7 = -2123755698; + } + break; + case 687281711: + if (var6.title.equalsIgnoreCase(var2)) { + var7 = 329844206; + } else { + var7 = -2123755698; + } + break; + case 894806226: + var5 = (qe)var4.next(); + if (var5 instanceof qd) { + var7 = -474321299; + } else { + var7 = -2123755698; + } + break; + case 1074645527: + var6.update(var3); + return; + case 1319211971: + var4 = this.toasts.iterator(); + var7 = -1852117346; + } + } + } + + private boolean accepting() { + int var1 = -1394358115; + + while (true) { + switch (var1) { + case -1394358115: + default: + if (this.isNotificationsEnabled()) { + var1 = 286820280; + } else { + var1 = -400715243; + } + break; + case -400715243: + this.toasts.clear(); + return (boolean)(((0)) != 0); + case 286820280: + return (boolean)(((1)) != 0); + } + } + } + + private void push(qe var1) { + int var2 = 0; + Iterator var3 = null; + qe var4 = null; + int var5 = -1363568628; + + while (true) { + switch (var5) { + case -1363568628: + default: + this.toasts.addLast(var1); + var2 = 0; + var3 = this.toasts.descendingIterator(); + var5 = -57676971; + break; + case -847729715: + var4 = (qe)var3.next(); + if (!var4.leaving) { + var5 = 1604395571; + } else { + var5 = 1197754414; + } + break; + case -201989883: + var4.leaving = (boolean)(((1)) != 0); + var5 = 1197754414; + break; + case -57676971: + if (var3.hasNext()) { + var5 = -847729715; + } else { + var5 = 242522624; + } + break; + case 242522624: + return; + case 1197754414: + var5 = -57676971; + break; + case 1604395571: + if (++var2 > (633092070 | -633092065) + (633092070 & -633092065)) { + var5 = -201989883; + } else { + var5 = 1197754414; + } + } + } + } + + @Override + public void render(aru var1) { + if (!this.isNotificationsEnabled()) { + this.toasts.clear(); + } else { + long var2 = System.currentTimeMillis(); + Iterator var4 = this.toasts.iterator(); + + while (var4.hasNext()) { + qe var5 = (qe)var4.next(); + var5.step(var2); + if (var5.finished()) { + var4.remove(); + } + } + + this.example.leaving = (boolean)(((mc.gui.screen() instanceof ChatScreen && this.toasts.isEmpty() + ? 0: (1467155948 ^ -1467155947) + ((1467155948 & -1467155947) << 1))) != 0); + this.example.shownAt = var2; + this.example.step(var2); + mv var16 = bz.getInstance().getThemeManager().getCurrentTheme(); + ge var6 = gl.MEDIUM.getFont(6.0F); + ge var7 = gl.ICONS.getFont(6.0F); + float var8 = this.example.targetWidth(var7, var6); + + for (qe var10 : this.toasts) { + var8 = Math.max(var8, var10.targetWidth(var7, var6)); + } + + this.width = Math.max(90.0F, this.widthAnimation.update(var8)); + this.height = 18.0F; + float var17 = var1.guiWidth(); + float var18 = this.x + this.width * 0.5F; + qa var11 = Math.abs(var18 - var17 * 0.5F) <= var17 * 0.33333334F * 0.5F ? qa.CENTER : (var18 > var17 * 0.5F ? qa.RIGHT : qa.LEFT); + int var12 = this.y + 9.0F > var1.guiHeight() * 0.5F + ? 1: 0; + float var13 = var12 != 0 ? -1.0F : 1.0F; + float var14 = this.y; + var14 = this.drawToast(var1, this.example, var14, var13, var11, var7, var6, var16, var2); + Iterator var15 = this.toasts.descendingIterator(); + + while (var15.hasNext()) { + var14 = this.drawToast(var1, (qe)var15.next(), var14, var13, var11, var7, var6, var16, var2); + } + } + } + + private float drawToast(aru var1, qe var2, float var3, float var4, qa var5, ge var6, ge var7, mv var8, long var9) { + float var11 = clamp(var2.slot.value()); + float var12 = var2.presence.value(); + float var13 = clamp(var12); + float var14 = var3 + var4 * 22.0F * var11; + if (var13 <= 0.001F) { + return var14; + } + + float var15 = var2.width(var6, var7); + + float var16 = switch (var5) { + case LEFT -> this.x; + case CENTER -> this.x + (this.width - var15) * 0.5F; + case RIGHT -> this.x + this.width - var15; + }; + float var17; + float var18; + if (var2.leaving) { + var17 = 0.94F + 0.060000002F * var13; + var18 = 0.0F; + } else { + var17 = 0.9F + 0.100000024F * var12; + var18 = -var4 * 10.0F * (1.0F - var13); + } + + var17 *= var2.bumpScale(); + float var19 = var3 + var18; + float var20 = var16 + var15 * 0.5F; + float var21 = var19 + 9.0F; + var1.pose().pushMatrix(); + var1.pose().translate(var20, var21); + var1.pose().scale(var17, var17); + var1.pose().translate(-var20, -var21); + pi.surface(var1, var16, var19, var15, 18.0F, asj.uniform(pk.radiusPanel()), asu.WHITE.mulAlpha(var13 * 0.95F)); + if (var2.showsLife()) { + float var22 = 1.0F - (float)(var9 - var2.shownAt) / 2800.0F; + if (var22 > 0.0F) { + float var23 = pi.pad(); + pi.progress(var1, var16 + var23, var19 + 18.0F - pi.progressHeight() - 1.5F, var15 - var23 * 2.0F, var22, var8.getColor().mulAlpha(var13 * 0.7F)); + } + } + + var1.pushClipBounds(var16, var19, var16 + var15, var19 + 18.0F); + var2.drawContent(var1, var16, var19, var6, var7, var8, var13); + var1.popClip(); + var1.pose().popMatrix(); + return var14; + } + + static float clamp(float var0) { + return Math.max(0.0F, Math.min(1.0F, var0)); + } + + static float smoothstep(float var0) { + float var1 = clamp(var0); + return var1 * var1 * (3.0F - 2.0F * var1); + } + + static float textY(float var0, ge var1) { + return var0 + (18.0F - var1.height()) * 0.5F; + } + + static { + String[] var10000 = new String[5]; + var10000[0] = "Menu"; + var10000[1] = "Interface"; + var10000[2] = "ClickGUI"; + var10000[3] = "Panels"; + var10000[4] = "Hud Editor"; + UI_MODULE_NAMES = var10000; + } +} diff --git a/src/main/java/defpackage/qg.java b/src/main/java/defpackage/qg.java new file mode 100644 index 0000000..c95110c --- /dev/null +++ b/src/main/java/defpackage/qg.java @@ -0,0 +1,379 @@ +package defpackage; + +import com.sun.management.OperatingSystemMXBean; +import java.lang.management.ManagementFactory; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import net.minecraft.util.Mth; + +public class qg extends qx { + private static final String THREAD_NAME = "evolution-performance-cpu"; + private static final float LABEL_GAP = 4.0F; + private static final float GAUGE_HEIGHT = 2.5F; + private static final arq GAUGE_RADIUS = asj.pill(2.5F); + private static final float MIN_SECTION_INNER = 34.0F; + private static final float GRAPH_HEIGHT = 6.0F; + private static final float GRAPH_BOTTOM_INSET = 3.5F; + private static final float TEXT_CENTER_RATIO = 0.32F; + private static final float PANEL_HEIGHT_SCALE = 1.35F; + private static final int GRAPH_SAMPLES = 8; + private static final long GRAPH_SAMPLE_MS = 320L; + private static final float GRAPH_HEADROOM = 1.15F; + private static final float GRAPH_MIN_CEILING = 60.0F; + private static final long CPU_POLL_MS = 1000L; + private static final long IDLE_TIMEOUT_MS = 5000L; + private static final long INITIAL_DELAY_MS = 0L; + private static final float TRACK_ALPHA = 0.12F; + private static final float DOUBLE_SCALE = 2.0F; + private static final float PERCENTAGE_SCALE = 100.0F; + private static final String PERCENT_SUFFIX = "%"; + private static final float MIN_FILL = 0.0F; + private static final float MAX_FILL = 1.0F; + private static final float HALF_DIVISOR = 2.0F; + private static final float UNINITIALIZED_VALUE = -1.0F; + private static final long EMPTY_MEMORY = 0L; + private static final long UNINITIALIZED_TIME = 0L; + private static final double MIN_VALID_CPU_LOAD = 0.0; + private static final String CPU_LABEL = "CPU"; + private static final String RAM_LABEL = "RAM"; + private static final String FPS_LABEL = "FPS"; + private final OperatingSystemMXBean osBean = resolveOsBean(); + private final pj smoothing = new pj(); + private final ScheduledExecutorService cpuScheduler; + private final float[] fpsSamples = new float[8]; + private int fpsHead; + private long lastGraphSample; + private float animCpuInner = 0.0F; + private float animRamInner = 0.0F; + private float animFpsInner = 0.0F; + private volatile float rawCpu = 0.0F; + private volatile long lastRenderTime = System.currentTimeMillis(); + private float displayCpu = -1.0F; + private float displayRam = -1.0F; + private float displayFps = -1.0F; + + public qg(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + this.cpuScheduler = Executors.newSingleThreadScheduledExecutor(var0 -> { + Thread var1x = new Thread(var0, "evolution-performance-cpu"); + var1x.setDaemon((boolean)((((1233211121 | -1233211120) + (1233211121 & -1233211120))) != 0)); + var1x.setPriority((730233665 | -730233664) + (730233665 & -730233664)); + return var1x; + }); + this.cpuScheduler + .scheduleWithFixedDelay( + this::pollCpu, + (-237535730239069700L | 237535730239069700L) + (-237535730239069700L & 237535730239069700L), + (-4090067344421481865L | 4090067344421482865L) + (-4090067344421481865L & 4090067344421482865L), + TimeUnit.MILLISECONDS + ); + } + + private static OperatingSystemMXBean resolveOsBean() { + try { + return ManagementFactory.getOperatingSystemMXBean() instanceof OperatingSystemMXBean var1 ? var1 : null; + } catch (Throwable var2) { + return null; + } + } + + private void pollCpu() { + if (this.osBean != null) { + if (System.currentTimeMillis() - this.lastRenderTime + <= (1693721992505921578L ^ -1693721992505916578L) + ((1693721992505921578L & -1693721992505916578L) << 1)) { + try { + double var1 = this.osBean.getProcessCpuLoad(); + if (var1 >= 0.0) { + this.rawCpu = (float)var1; + } + } catch (Throwable var3) { + } + } + } + } + + @Override + public void render(aru var1) { + mv var2 = null; + asu var3 = null; + asu var4 = null; + asu var5 = null; + ge var6 = null; + ge var7 = null; + float var8 = 0.0F; + float var9 = 0.0F; + Runtime var10 = null; + long var11 = (-3586033354051464998L | 3586033354051464998L) + (-3586033354051464998L & 3586033354051464998L); + long var13 = (8903303429147245308L ^ -8903303429147245308L) + ((8903303429147245308L & -8903303429147245308L) << 1); + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + long var18 = (-6218617714309901902L | 6218617714309901902L) + (-6218617714309901902L & 6218617714309901902L); + float var20 = 0.0F; + float var21 = 0.0F; + String var22 = null; + String var23 = null; + String var24 = null; + float var25 = 0.0F; + float var26 = 0.0F; + float var27 = 0.0F; + float var28 = 0.0F; + float var29 = 0.0F; + float var31 = 0.0F; + int var30 = -1383429970; + + while (true) { + switch (var30) { + case -1962909663: + this.displayFps = var16; + var30 = -807139664; + break; + case -1551161448: + var31 = Mth.clamp((float)var13 / (float)var11, 0.0F, 1.0F); + var30 = -1377067162; + break; + case -1534031562: + if (var18 - this.lastGraphSample >= (-1552512086828575098L ^ 1552512086828575418L) + ((-1552512086828575098L & 1552512086828575418L) << 1)) { + var30 = 1473388119; + } else { + var30 = 49810354; + } + break; + case -1383429970: + default: + this.lastRenderTime = System.currentTimeMillis(); + var2 = bz.getInstance().getThemeManager().getCurrentTheme(); + var3 = var2.getGrayLight(); + var4 = var2.getWhite(); + var5 = var2.getWhite().withAlpha(0.12F); + var6 = pi.labelFont(); + var7 = pi.valueFont(); + var8 = pi.barHeight() * 1.35F; + var9 = pi.pad(); + this.smoothing.beginFrame(); + var10 = Runtime.getRuntime(); + var11 = var10.maxMemory(); + var13 = var10.totalMemory() - var10.freeMemory(); + if (var11 > (-1400426545210260423L ^ 1400426545210260423L) + ((-1400426545210260423L & 1400426545210260423L) << 1)) { + var30 = -1551161448; + } else { + var30 = -407586499; + } + break; + case -1377067162: + var15 = var31; + var16 = mc.getFps(); + var17 = this.rawCpu; + if (this.displayCpu < 0.0F) { + var30 = -452380725; + } else { + var30 = 939389264; + } + break; + case -1254772785: + this.lastGraphSample = var18; + var30 = -1534031562; + break; + case -807139664: + this.displayCpu = this.smoothing.value(this.displayCpu, var17); + this.displayRam = this.smoothing.value(this.displayRam, var15); + this.displayFps = this.smoothing.value(this.displayFps, var16); + var18 = System.currentTimeMillis(); + if (this.lastGraphSample == (-8040192339173542372L | 8040192339173542372L) + (-8040192339173542372L & 8040192339173542372L)) { + var30 = -1254772785; + } else { + var30 = -1534031562; + } + break; + case -452380725: + this.displayCpu = var17; + var30 = 939389264; + break; + case -407586499: + var31 = 0.0F; + var30 = -1377067162; + break; + case -374771559: + if (this.displayFps < 0.0F) { + var30 = -1962909663; + } else { + var30 = -807139664; + } + break; + case 49810354: + var20 = Mth.clamp(this.displayCpu, 0.0F, 1.0F); + var21 = Mth.clamp(this.displayRam, 0.0F, 1.0F); + var22 = Math.round(var20 * 100.0F) + "%"; + var23 = Math.round(var21 * 100.0F) + "%"; + var24 = String.valueOf(Math.round(this.displayFps)); + this.animCpuInner = this.smoothing + .width(this.animCpuInner, this.sectionInner(var6, var7, "CPU", var22)); + this.animRamInner = this.smoothing + .width( + this.animRamInner, this.sectionInner(var6, var7, "RAM", var23) + ); + this.animFpsInner = this.smoothing + .width(this.animFpsInner, this.sectionInner(var6, var7, "FPS", var24)); + var25 = this.animCpuInner + var9 * 2.0F; + var26 = this.animRamInner + var9 * 2.0F; + var27 = this.animFpsInner + var9 * 2.0F; + var28 = pi.dividerWidth(); + this.width = var25 + var28 + var26 + var28 + var27; + this.height = var8; + pi.surface(var1, this.x, this.y, this.width, var8); + var29 = this.x; + this.drawGaugeSection( + var1, + var6, + var7, + var29, + var25, + this.animCpuInner, + var8, + var9, + "CPU", + var22, + var20, + pi.healthColor(1.0F - var20), + var3, + var4, + var5 + ); + var29 = pi.divider(var1, var29 + var25, this.y, var8); + this.drawGaugeSection( + var1, + var6, + var7, + var29, + var26, + this.animRamInner, + var8, + var9, + "RAM", + var23, + var21, + pi.healthColor(1.0F - var21), + var3, + var4, + var5 + ); + var29 = pi.divider(var1, var29 + var26, this.y, var8); + this.drawGraphSection(var1, var6, var7, var29, var27, this.animFpsInner, var8, var9, var24, var2.getColor(), var3, var4); + return; + case 939389264: + if (this.displayRam < 0.0F) { + var30 = 1958803381; + } else { + var30 = -374771559; + } + break; + case 1473388119: + this.fpsSamples[this.fpsHead] = this.displayFps; + this.fpsHead = (this.fpsHead + (815698050 ^ -815698049) + ((815698050 & -815698049) << 1)) + % ((-374672111 ^ 374672119) + ((-374672111 & 374672119) << 1)); + this.lastGraphSample = var18; + var30 = 49810354; + break; + case 1958803381: + this.displayRam = var15; + var30 = -374771559; + } + } + } + + private float sectionInner(ge var1, ge var2, String var3, String var4) { + float var5 = var1.width(var3) + 4.0F + var2.width(var4); + return Math.max(var5, 34.0F); + } + + private void drawSectionText(aru var1, ge var2, ge var3, float var4, float var5, String var6, String var7, asu var8, asu var9) { + float var10 = this.y + var5 * 0.32F; + var1.drawText(var2, var6, var4, var10 - var2.height() / 2.0F, var8); + var1.drawText(var3, var7, var4 + var2.width(var6) + 4.0F, var10 - var3.height() / 2.0F, var9); + } + + private void drawGaugeSection( + aru var1, + ge var2, + ge var3, + float var4, + float var5, + float var6, + float var7, + float var8, + String var9, + String var10, + float var11, + asu var12, + asu var13, + asu var14, + asu var15 + ) { + var1.clipTrailing(var4, this.y, var4 + var5, this.y + var7, ars.revealFade()); + float var16 = var4 + var8; + this.drawSectionText(var1, var2, var3, var16, var7, var9, var10, var13, var14); + float var17 = this.y + var7 - 2.5F - 3.5F; + var1.drawSurface(aso.CONTROL, var16, var17, var6, 2.5F, GAUGE_RADIUS, var15); + float var18 = Math.max(2.5F, var6 * var11); + var1.drawRoundedRect(var16, var17, var18, 2.5F, GAUGE_RADIUS, var12); + var1.popClip(); + } + + private void drawGraphSection( + aru var1, ge var2, ge var3, float var4, float var5, float var6, float var7, float var8, String var9, asu var10, asu var11, asu var12 + ) { + var1.clipTrailing(var4, this.y, var4 + var5, this.y + var7, ars.revealFade()); + float var13 = var4 + var8; + this.drawSectionText(var1, var2, var3, var13, var7, "FPS", var9, var11, var12); + float var14 = this.y + var7 - 6.0F - 3.5F + 1.25F; + pi.graph(var1, var13, var14, var6, 6.0F, this.fpsSamples, this.fpsHead, this.graphCeiling(), var10); + var1.popClip(); + } + + private float graphCeiling() { + float var1 = 0.0F; + float[] var2 = null; + int var3 = 0; + int var4 = 0; + float var5 = 0.0F; + int var6 = 699811576; + + while (true) { + switch (var6) { + case -1920092359: + if (var4 < var3) { + var6 = 452364877; + } else { + var6 = -1127254580; + } + break; + case -1306665093: + var1 = var5; + var6 = -10177800; + break; + case -1127254580: + return var1 * 1.15F; + case -10177800: + var4++; + var6 = -1920092359; + break; + case 452364877: + var5 = var2[var4]; + if (var5 > var1) { + var6 = -1306665093; + } else { + var6 = -10177800; + } + break; + case 699811576: + default: + var1 = 60.0F; + var2 = this.fpsSamples; + var3 = var2.length; + var4 = 0; + var6 = -1920092359; + } + } + } +} diff --git a/src/main/java/defpackage/qh.java b/src/main/java/defpackage/qh.java new file mode 100644 index 0000000..417bd50 --- /dev/null +++ b/src/main/java/defpackage/qh.java @@ -0,0 +1,6 @@ +package defpackage; + +import net.minecraft.network.chat.Style; + +record qh(String text, Style style) { +} diff --git a/src/main/java/defpackage/qi.java b/src/main/java/defpackage/qi.java new file mode 100644 index 0000000..f70e88d --- /dev/null +++ b/src/main/java/defpackage/qi.java @@ -0,0 +1,243 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Optional; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Style; + +final class qi { + private static final char LINE_BREAK = '\n'; + private final List lines = new ArrayList<>(); + private final List runs = new ArrayList<>(); + private Component source; + private float maxWidth = -1.0F; + private float fontSize = -1.0F; + + qi() { + } + + List resolve(Component var1, ge var2, float var3) { + int var4 = -699609035; + + while (true) { + switch (var4) { + case -1857967828: + return this.lines; + case -1820072484: + if (var2.getSize() == this.fontSize) { + var4 = -1857967828; + } else { + var4 = -1133390738; + } + break; + case -1133390738: + this.source = var1; + this.maxWidth = var3; + this.fontSize = var2.getSize(); + this.rebuild(var1, var2, var3); + return this.lines; + case -1059068169: + if (var3 == this.maxWidth) { + var4 = -1820072484; + } else { + var4 = -1133390738; + } + break; + case -847238040: + this.source = null; + this.lines.clear(); + var4 = 1197865017; + break; + case -699609035: + default: + if (var1 == null) { + var4 = 1703823808; + } else { + var4 = -128800432; + } + break; + case -128800432: + if (var1 == this.source) { + var4 = -1059068169; + } else { + var4 = -1133390738; + } + break; + case 1197865017: + return this.lines; + case 1703823808: + if (this.source != null) { + var4 = -847238040; + } else { + var4 = 1197865017; + } + } + } + } + + private void rebuild(Component var1, ge var2, float var3) { + MutableComponent var4 = null; + float var5 = 0.0F; + int var6 = 0; + Iterator var7 = null; + qh var8 = null; + String var9 = null; + int var10 = 0; + int var11 = 0; + String var12 = null; + float var13 = 0.0F; + String var15 = null; + int var14 = 2046499129; + + while (true) { + switch (var14) { + case -1584727879: + this.lines.add(var4); + var4 = Component.empty(); + var5 = 0.0F; + var14 = -151001579; + break; + case -1582113407: + var11 = var9.indexOf(10, var10); + if (var11 < 0) { + var14 = -966232566; + } else { + var14 = 1950319543; + } + break; + case -973477508: + if (var10 <= var9.length()) { + var14 = -1582113407; + } else { + var14 = 167695606; + } + break; + case -966232566: + var15 = var9.substring(var10); + var14 = 802124941; + break; + case -859012415: + if (var11 < 0) { + var14 = 1551045140; + } else { + var14 = 134699564; + } + break; + case -522171789: + if (var3 > 0.0F) { + var14 = 1223531159; + } else { + var14 = -151001579; + } + break; + case -151001579: + var4.append(Component.literal(var12).withStyle(var8.style())); + var5 += var13; + var6 = 0; + var14 = -859012415; + break; + case 134699564: + this.lines.add(var4); + var4 = Component.empty(); + var5 = 0.0F; + var6 = 1; + var10 = var11 + 1; + var14 = -973477508; + break; + case 167695606: + var14 = 305698932; + break; + case 187027155: + var8 = (qh)var7.next(); + var9 = var8.text(); + var10 = 0; + var14 = -973477508; + break; + case 305698932: + if (var7.hasNext()) { + var14 = 187027155; + } else { + var14 = 1376390077; + } + break; + case 802124941: + var12 = var15; + if (!var12.isEmpty()) { + var14 = 1195595264; + } else { + var14 = -859012415; + } + break; + case 809548337: + this.lines.add(var4); + var14 = 1610161299; + break; + case 1195595264: + var13 = var2.getFont().getWidth(var12, var2.getSize()); + if (var6 == 0) { + var14 = -522171789; + } else { + var14 = -151001579; + } + break; + case 1223531159: + if (var5 + var13 > var3) { + var14 = -1584727879; + } else { + var14 = -151001579; + } + break; + case 1376390077: + if (var6 == 0) { + var14 = 809548337; + } else { + var14 = 1610161299; + } + break; + case 1551045140: + var14 = 167695606; + break; + case 1610161299: + this.runs.clear(); + return; + case 1950319543: + var15 = var9.substring(var10, var11); + var14 = 802124941; + break; + case 2046499129: + default: + this.lines.clear(); + this.runs.clear(); + var1.visit((var1x, var2x) -> { + int var3x = -574152090; + + while (true) { + switch (var3x) { + case -574152090: + default: + if (!var2x.isEmpty()) { + var3x = 1590906434; + } else { + var3x = 706324767; + } + break; + case 706324767: + return Optional.empty(); + case 1590906434: + this.runs.add(new qh(var2x, var1x)); + var3x = 706324767; + } + } + }, Style.EMPTY); + var4 = Component.empty(); + var5 = 0.0F; + var6 = 1; + var7 = this.runs.iterator(); + var14 = 305698932; + } + } + } +} diff --git a/src/main/java/defpackage/qj.java b/src/main/java/defpackage/qj.java new file mode 100644 index 0000000..8ea12a3 --- /dev/null +++ b/src/main/java/defpackage/qj.java @@ -0,0 +1,589 @@ +package defpackage; + +import com.mojang.authlib.GameProfile; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.numbers.NumberFormat; +import net.minecraft.network.chat.numbers.StyledFormat; +import net.minecraft.resources.Identifier; +import net.minecraft.world.level.GameType; +import net.minecraft.world.scores.DisplaySlot; +import net.minecraft.world.scores.Objective; +import net.minecraft.world.scores.ReadOnlyScoreInfo; +import net.minecraft.world.scores.ScoreHolder; +import net.minecraft.world.scores.Scoreboard; +import net.minecraft.world.scores.criteria.ObjectiveCriteria.RenderType; + +public final class qj implements aqg { + private static final int MAX_ROWS_PER_COLUMN = 20; + private static final float PAD = 7.0F; + private static final float TOP_MARGIN = 12.0F; + private static final float SIDE_MARGIN = 24.0F; + private static final float ROW_HEIGHT = 11.0F; + private static final float ROW_PAD = 4.0F; + private static final float ROW_GAP = 1.0F; + private static final float COLUMN_GAP = 5.0F; + private static final float HEAD_SIZE = 8.0F; + private static final float HEAD_GAP = 5.0F; + private static final float NAME_SCORE_GAP = 8.0F; + private static final float SCORE_PING_GAP = 7.0F; + private static final float MIN_NAME_WIDTH = 44.0F; + private static final float PING_BARS = 4.0F; + private static final float PING_BAR_WIDTH = 1.6F; + private static final float PING_BAR_GAP = 1.0F; + private static final float PING_BAR_STEP = 1.7F; + private static final float PING_BAR_BASE = 2.0F; + private static final float PING_WIDTH = 9.4F; + private static final float PING_HEIGHT = 7.1000004F; + private static final float HEARTS_WIDTH = 26.0F; + private static final float HEARTS_HEIGHT = 2.6F; + private static final float HEARTS_FULL = 20.0F; + private static final float LINE_HEIGHT = 9.0F; + private static final float LINE_PADDING = 4.0F; + private static final float DIVIDER_GAP = 4.0F; + private static final float TITLE_GAP = 4.0F; + private static final float ROW_SHADE_ALPHA = 0.05F; + private static final float SELF_SHADE_ALPHA = 0.13F; + private static final float FRIEND_SHADE_ALPHA = 0.11F; + private static final float SPECTATOR_ALPHA = 0.45F; + private static final float PING_TRACK_ALPHA = 0.16F; + private static final float MARKER_WIDTH = 1.6F; + private static final float MARKER_INSET = 2.5F; + private static final float OPEN_SCALE = 0.94F; + private static final float VISIBILITY_EPSILON = 0.004F; + private static final int PING_EXCELLENT = 60; + private static final int PING_GOOD = 150; + private static final int PING_FAIR = 300; + private static final int PING_POOR = 600; + private static final asu PING_BEST = new asu( + 94, + 200, + 120, + (1251385353 ^ -1251385098) + ((1251385353 & -1251385098) << 1) + ); + private static final asu PING_MID = new asu( + 232, + 186, + 74, + (-1173010899 ^ 1173011154) + ((-1173010899 & 1173011154) << 1) + ); + private static final asu PING_WORST = new asu( + 228, + 92, + 92, + (-2038235346 | 2038235601) + (-2038235346 & 2038235601) + ); + private static final asu HEARTS_COLOR = new asu( + 228, + 92, + 92, + (-2045299367 ^ 2045299622) + ((-2045299367 & 2045299622) << 1) + ); + private static final float SKIN_HEAD_MIN = 0.125F; + private static final float SKIN_HEAD_MAX = 0.25F; + private static final float SKIN_HAT_MIN = 0.625F; + private static final float SKIN_HAT_MAX = 0.75F; + private static final String COUNT_SEPARATOR = " online"; + private final ct openAnimation = ct.layout(ob.MEDIUM); + private final List players = new ArrayList<>(); + private final List names = new ArrayList<>(); + private final List scores = new ArrayList<>(); + private final int[] rawScores = new int[400]; + private final qi headerText = new qi(); + private final qi footerText = new qi(); + + public void render(aru var1) { + if (mc.player != null && mc.level != null && mc.player.connection != null) { + Scoreboard var2 = mc.level.getScoreboard(); + Objective var3 = var2.getDisplayObjective(DisplaySlot.LIST); + boolean var4 = this.shouldBeVisible(var3); + mc.gui.hud.getTabList().setVisible(var4); + float var5 = this.openAnimation.update(var4 ? 1.0F : 0.0F); + if (!(var5 <= 0.004F)) { + this.drawOverlay(var1, var2, var3, var5); + } + } else { + this.openAnimation.jumpTo(0.0F); + } + } + + private boolean shouldBeVisible(Objective var1) { + int var3 = 0; + int var2 = 1703106913; + + while (true) { + switch (var2) { + case -1862221103: + return (boolean)((var3) != 0); + case -1511851757: + if (mc.isLocalServer()) { + var2 = 259649284; + } else { + var2 = -1451827607; + } + break; + case -1451827607: + var3 = 1; + var2 = -1862221103; + break; + case -1280816734: + var3 = 0; + var2 = -1862221103; + break; + case -498965471: + return (boolean)(((0)) != 0); + case -350068339: + if (var1 != null) { + var2 = -1451827607; + } else { + var2 = -1280816734; + } + break; + case 259649284: + if (mc.player.connection.getListedOnlinePlayers().size() <= (-1799144400 ^ 1799144401) + ((-1799144400 & 1799144401) << 1)) { + var2 = -350068339; + } else { + var2 = -1451827607; + } + break; + case 1703106913: + default: + if (!mc.options.keyPlayerList.isDown()) { + var2 = -498965471; + } else { + var2 = -1511851757; + } + } + } + } + + private void drawOverlay(aru var1, Scoreboard var2, Objective var3, float var4) { + mv var5 = bz.getInstance().getThemeManager().getCurrentTheme(); + ge var6 = pk.font(oe.LABEL); + ge var7 = pk.font(oe.NUMERIC); + ge var8 = pk.font(oe.BODY); + ge var9 = pk.font(oe.MICRO); + int var10 = var3 != null && var3.getRenderType() == RenderType.HEARTS + ? 1: 0; + int var11 = var3 != null && var10 == 0 + ? 1: 0; + this.collectPlayers(var2, var3, (boolean)(((var11) != 0)), (boolean)((var10) != 0)); + int var12 = this.players.size(); + if (var12 != 0) { + float var13 = var1.guiWidth(); + float var14 = var1.guiHeight(); + float var15 = Math.max(44.0F, var13 - 48.0F - 14.0F); + float var16 = 44.0F; + float var17 = 0.0F; + + for (int var18 = 0; var18 < var12; var18++) { + var16 = Math.max(var16, var6.width(this.names.get(var18))); + if (var11 != 0) { + var17 = Math.max(var17, var7.width(this.scores.get(var18))); + } + } + + int var44 = 1; + + int var19; + for (var19 = var12; + var19 > 20; + var19 = (var12 + var44 - ((-1385254155 ^ 1385254156) + ((-1385254155 & 1385254156) << 1))) / var44 + ) { + var44++; + } + + float var20 = var10 != 0 ? 26.0F : var17; + float var21 = 21.0F + var16 + (var20 > 0.0F ? 8.0F + var20 : 0.0F) + 7.0F + 9.4F; + float var22 = var21 * var44 + 5.0F * (var44 - ((873850578 ^ -873850577) + ((873850578 & -873850577) << 1))); + if (var22 > var15) { + var21 = (var15 - 5.0F * (var44 - ((-1937921486 ^ 1937921487) + ((-1937921486 & 1937921487) << 1)))) / var44; + var22 = var15; + } + + List var23 = this.headerText.resolve(mc.gui.hud.getTabList().header, var8, var15); + List var24 = this.footerText.resolve(mc.gui.hud.getTabList().footer, var8, var15); + float var25 = var22; + var25 = Math.max(var25, this.widestLine(var23, var8)); + var25 = Math.max(var25, this.widestLine(var24, var8)); + String var26 = var12 + " online"; + float var27 = lineHeight(var8); + float var28 = lineHeight(var9); + float var29 = var28 + 4.0F; + float var30 = var23.isEmpty() ? 0.0F : var23.size() * var27 + 4.0F; + float var31 = var24.isEmpty() ? 0.0F : var24.size() * var27 + 4.0F; + float var32 = var19 * 11.0F + + Math.max(0, var19 - ((-711831187 ^ 711831188) + ((-711831187 & 711831188) << 1))) + * 1.0F; + float var33 = var25 + 14.0F; + float var34 = 14.0F + var29 + var30 + var32 + var31; + float var35 = (var13 - var33) / 2.0F; + float var36 = 12.0F; + if (var34 + 24.0F > var14) { + var36 = Math.max(0.0F, (var14 - var34) / 2.0F); + } + + float var37 = var35 + var33 / 2.0F; + float var38 = var36 + var34 / 2.0F; + float var39 = 0.94F + 0.060000002F * var4; + var1.pose().pushMatrix(); + var1.pose().translate(var37, var38); + var1.pose().scale(var39, var39); + var1.pose().translate(-var37, -var38); + arx.invalidateScene(); + pi.surface(var1, var35, var36, var33, var34, asj.all(oc.PANEL), asu.WHITE.mulAlpha(var4)); + var1.clipHard(var35, var36, var35 + var33, var36 + var34); + float var40 = var36 + 7.0F; + asu var41 = var5.getWhite().mulAlpha(var4); + float var42 = var9.width(var26); + var1.drawText(var9, var26, var35 + (var33 - var42) / 2.0F, var40 + (var28 - var9.height()) / 2.0F, var5.getGrayLight().mulAlpha(var4)); + var40 += var29; + if (!var23.isEmpty()) { + var40 = this.drawLines(var1, var23, var8, var27, var35, var33, var40, var41); + ast.divider(var1, var35 + 7.0F, var40 - 2.0F, var33 - 14.0F); + } + + float var43 = var35 + (var33 - var22) / 2.0F; + this.drawTable(var1, var5, var6, var7, var43, var40, var21, var44, var19, var20, (boolean)(((var10) != 0)), (boolean)((var11) != 0), var4); + var40 += var32; + if (!var24.isEmpty()) { + var40 += 4.0F; + ast.divider(var1, var35 + 7.0F, var40 - 2.0F, var33 - 14.0F); + this.drawLines(var1, var24, var8, var27, var35, var33, var40, var41); + } + + var1.popClip(); + var1.pose().popMatrix(); + } + } + + private void drawTable( + aru var1, mv var2, ge var3, ge var4, float var5, float var6, float var7, int var8, int var9, float var10, boolean var11, boolean var12, float var13 + ) { + UUID var14 = mc.player.getUUID(); + int var15 = this.players.size(); + + for (int var16 = 0; var16 < var15; var16++) { + int var17 = var16 / var9; + int var18 = var16 % var9; + if (var17 >= var8) { + break; + } + + float var19 = var5 + var17 * (var7 + 5.0F); + float var20 = var6 + var18 * 12.0F; + PlayerInfo var21 = this.players.get(var16); + GameProfile var22 = var21.getProfile(); + boolean var23 = var22.id().equals(var14); + int var24 = !var23 && bz.getInstance().getFriendManager().isFriend(var22.name()) + ? 1: 0; + int var25 = var21.getGameMode() == GameType.SPECTATOR + ? 1: 0; + float var26 = var13 * (var25 != 0 ? 0.45F : 1.0F); + asu var27; + if (var23) { + var27 = var2.getColor().withAlpha(0.13F); + } else if (var24 != 0) { + var27 = var2.getFriendColor().withAlpha(0.11F); + } else if ((var18 & (1719128158 | -1719128157) + (1719128158 & -1719128157)) == 0) { + var27 = var2.getWhite().withAlpha(0.05F); + } else { + var27 = null; + } + + if (var27 != null) { + var1.drawSurface(aso.ROW, var19, var20, var7, 11.0F, asj.all(oc.INNER), var27.mulAlpha(var13)); + } + + if (var23 || var24 != 0) { + asu var28 = var23 ? var2.getColor() : var2.getFriendColor(); + var1.drawRoundedRect(var19 + 2.5F, var20 + 2.5F, 1.6F, 6.0F, asj.pill(1.6F), var28.mulAlpha(var13)); + } + + float var37 = var19 + 4.0F + 1.6F; + float var29 = var20 + 1.5F; + this.drawHead(var1, var21, var37, var29, var26); + float var30 = var37 + 8.0F + 5.0F; + float var31 = var19 + var7 - 4.0F; + float var32 = var31 - 9.4F; + float var33 = var32 - 7.0F; + float var34 = Math.max(0.0F, (var10 > 0.0F ? var33 - var10 - 8.0F : var33) - var30); + var1.pushClip(var30, var20, var34, 11.0F); + var1.drawText(var3, this.names.get(var16), var30, var20 + (11.0F - var3.height()) / 2.0F, var2.getWhite().mulAlpha(var26)); + var1.popClip(); + if (var11) { + this.drawHearts(var1, var2, var33 - 26.0F, var20, this.rawScores[var16], var26); + } else if (var12) { + Component var35 = this.scores.get(var16); + float var36 = var4.width(var35); + if (var36 > 0.0F) { + var1.drawText(var4, var35, var33 - var36, var20 + (11.0F - var4.height()) / 2.0F, var2.getColor().mulAlpha(var26)); + } + } + + this.drawPing(var1, var2, var32, var20, var21.getLatency(), var26); + } + } + + private void drawHead(aru var1, PlayerInfo var2, float var3, float var4, float var5) { + Identifier var6 = null; + asu var7 = null; + arq var8 = null; + int var9 = 2048285620; + + while (true) { + switch (var9) { + case 50452134: + var1.drawRoundedTextureWithUV(var6, var3, var4, 8.0F, 8.0F, var8, var7, 0.625F, 0.625F, 0.75F, 0.75F); + var9 = 1608964006; + break; + case 1608964006: + return; + case 2048285620: + default: + var6 = var2.getSkin().body().texturePath(); + var7 = asu.WHITE.mulAlpha(var5); + var8 = asj.all(oc.CHIP); + var1.drawRoundedTextureWithUV(var6, var3, var4, 8.0F, 8.0F, var8, var7, 0.125F, 0.125F, 0.25F, 0.25F); + if (var2.showHat()) { + var9 = 50452134; + } else { + var9 = 1608964006; + } + } + } + } + + private void drawPing(aru var1, mv var2, float var3, float var4, int var5, float var6) { + int var7 = pingLevel(var5); + asu var8 = pingColor(var5).mulAlpha(var6); + asu var9 = var2.getWhite().withAlpha(0.16F).mulAlpha(var6); + float var10 = var4 + 9.05F; + + for (int var11 = 0; var11 < 4.0F; var11++) { + float var12 = 2.0F + var11 * 1.7F; + float var13 = var3 + var11 * 2.6F; + var1.drawRoundedRect(var13, var10 - var12, 1.6F, var12, asj.pill(1.6F), var11 < var7 ? var8 : var9); + } + } + + private void drawHearts(aru var1, mv var2, float var3, float var4, int var5, float var6) { + float var7 = 0.0F; + float var8 = 0.0F; + arq var9 = null; + int var10 = -1294358619; + + while (true) { + switch (var10) { + case -1294358619: + default: + var7 = Math.min(1.0F, Math.max(0.0F, var5 / 20.0F)); + var8 = var4 + 4.2F; + var9 = asj.pill(2.6F); + var1.drawSurface(aso.CONTROL, var3, var8, 26.0F, 2.6F, var9, var2.getWhite().withAlpha(0.16F).mulAlpha(var6)); + if (var7 > 0.0F) { + var10 = -652257434; + } else { + var10 = 1665182530; + } + break; + case -652257434: + var1.drawRoundedRect(var3, var8, Math.max(2.6F, 26.0F * var7), 2.6F, var9, HEARTS_COLOR.mulAlpha(var6)); + var10 = 1665182530; + break; + case 1665182530: + return; + } + } + } + + private float drawLines(aru var1, List var2, ge var3, float var4, float var5, float var6, float var7, asu var8) { + float var9 = 0.0F; + int var10 = 0; + Component var11 = null; + float var12 = 0.0F; + int var13 = 538189727; + + while (true) { + switch (var13) { + case -1111743673: + if (var10 < var2.size()) { + var13 = 568776284; + } else { + var13 = -250224400; + } + break; + case -250224400: + return var9 + 4.0F; + case 538189727: + default: + var9 = var7; + var10 = 0; + var13 = -1111743673; + break; + case 568776284: + var11 = (Component)var2.get(var10); + var12 = var3.width(var11); + var1.drawText(var3, var11, var5 + (var6 - var12) / 2.0F, var9 + (var4 - var3.height()) / 2.0F, var8); + var9 += var4; + var10++; + var13 = -1111743673; + } + } + } + + private static float lineHeight(ge var0) { + return Math.max(9.0F, var0.height() + 4.0F); + } + + private float widestLine(List var1, ge var2) { + float var3 = 0.0F; + int var4 = 0; + int var5 = 295722271; + + while (true) { + switch (var5) { + case -1220125434: + return var3; + case 295722271: + default: + var3 = 0.0F; + var4 = 0; + var5 = 1669619563; + break; + case 870519508: + var3 = Math.max(var3, var2.width((Component)var1.get(var4))); + var4++; + var5 = 1669619563; + break; + case 1669619563: + if (var4 < var1.size()) { + var5 = 870519508; + } else { + var5 = -1220125434; + } + } + } + } + + private void collectPlayers(Scoreboard var1, Objective var2, boolean var3, boolean var4) { + this.players.clear(); + this.names.clear(); + this.scores.clear(); + List var5 = mc.gui.hud.getTabList().getPlayerInfos(); + int var6 = Math.min(var5.size(), this.rawScores.length); + NumberFormat var7 = var3 ? var2.numberFormatOrDefault(StyledFormat.PLAYER_LIST_DEFAULT) : null; + + for (int var8 = 0; var8 < var6; var8++) { + PlayerInfo var9 = (PlayerInfo)var5.get(var8); + this.players.add(var9); + this.names.add(mc.gui.hud.getTabList().getNameForDisplay(var9)); + int var10 = 0; + MutableComponent var11 = Component.empty(); + if (var2 != null) { + ScoreHolder var12 = ScoreHolder.fromGameProfile(var9.getProfile()); + ReadOnlyScoreInfo var13 = var1.getPlayerScoreInfo(var12, var2); + if (var13 != null) { + var10 = var13.value(); + if (var3) { + var11 = var13.formatValue(var7); + } + } + } + + this.rawScores[var8] = var4 ? var10 : 0; + this.scores.add(var11); + } + } + + private static int pingLevel(int var0) { + int var1 = -463515680; + + while (true) { + switch (var1) { + case -1505609074: + if (var0 < (-753108150 ^ 753108210) + ((-753108150 & 753108210) << 1)) { + var1 = 1223701155; + } else { + var1 = 868919273; + } + break; + case -463515680: + default: + if (var0 < 0) { + var1 = 236588691; + } else { + var1 = -1505609074; + } + break; + case 236588691: + return 0; + case 444910749: + return 1; + case 666320345: + if (var0 < (491923856 ^ -491923556) + ((491923856 & -491923556) << 1)) { + var1 = 1811898987; + } else { + var1 = 444910749; + } + break; + case 868919273: + if (var0 < (1032790173 ^ -1032790023) + ((1032790173 & -1032790023) << 1)) { + var1 = 875710422; + } else { + var1 = 666320345; + } + break; + case 875710422: + return 3; + case 1223701155: + return 4; + case 1811898987: + return 2; + } + } + } + + private static asu pingColor(int var0) { + int var1 = 212182525; + + while (true) { + switch (var1) { + case -1676434261: + return PING_WORST; + case -1655647786: + if (var0 >= (-1507499493 | 1507500093) + (-1507499493 & 1507500093)) { + var1 = 1774229529; + } else { + var1 = -1198438736; + } + break; + case -1198438736: + return asu.lerp(PING_MID, PING_WORST, (var0 - ((575492691 ^ -575492541) + ((575492691 & -575492541) << 1))) / 450.0F); + case -521387018: + if (var0 <= (-184808914 ^ 184809064) + ((-184808914 & 184809064) << 1)) { + var1 = 1860819576; + } else { + var1 = -1655647786; + } + break; + case 212182525: + default: + if (var0 < 0) { + var1 = -1676434261; + } else { + var1 = -521387018; + } + break; + case 1774229529: + return PING_WORST; + case 1860819576: + return asu.lerp(PING_BEST, PING_MID, var0 / 150.0F); + } + } + } +} diff --git a/src/main/java/defpackage/qk.java b/src/main/java/defpackage/qk.java new file mode 100644 index 0000000..830c972 --- /dev/null +++ b/src/main/java/defpackage/qk.java @@ -0,0 +1,143 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Objects; +import net.minecraft.client.resources.language.I18n; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; + +class qk { + private ql this$0; + + private final ct animation; + private final ct animationColor; + MobEffectInstance effect; + private final int initialDuration; + + public qk(ql var1, MobEffectInstance var2) { + Objects.requireNonNull(var1); + this.this$0 = var1; + this.animation = ct.layout(ob.FAST, 0.01F); + this.animationColor = ct.layout(ob.MEDIUM); + this.effect = var2; + this.initialDuration = Math.max(1, var2.getDuration()); + } + + private float remainingFraction() { + return Math.min(1.0F, (float)this.effect.getDuration() / this.initialDuration); + } + + public float updateWidth() { + ge var1 = gl.MEDIUM.getFont(6.0F); + String var2 = I18n.get( + ((MobEffect)this.effect.getEffect().value()).getDescriptionId(), new Object[0] + ); + String var3 = this.this$0.getAmplifierText(this.effect.getAmplifier()); + String var4 = this.this$0.formatDuration(this.effect.getDuration()); + return 18.0F + var1.width(var2) + 5.0F + var1.width(var3) + 12.0F + var1.width(var4) + pi.pad(); + } + + public float getHeight() { + return 18.0F * this.animation.value(); + } + + public void render(aru var1, float var2, float var3, float var4, int var5) { + String var6 = this.effect.getDescriptionId() + this.effect.getAmplifier(); + this.effect = new ArrayList(aqg.mc.player.getActiveEffectsMap().values()) + .stream() + .filter(var1x -> (var1x.getDescriptionId() + var1x.getAmplifier()).equals(var6)) + .findAny() + .orElse(this.effect); + this.animation.update(this.this$0.currentKeys.contains(var6) ? 1.0F : 0.0F); + this.animationColor.update(var5 % 2== 0 ? 1.0F : 0.0F); + mv var7 = bz.getInstance().getThemeManager().getCurrentTheme(); + ge var8 = gl.MEDIUM.getFont(6.0F); + ge var9 = gl.ICONS.getFont(6.0F); + asu var10 = new asu( + 0, + 0, + 0, + (406914984 | -406914984) + (406914984 & -406914984) + ) + .mix(var7.getColor().withAlpha((1284368273 ^ -1284368253) + ((1284368273 & -1284368253) << 1)), this.animationColor.value()); + var1.pushMatrix(); + var1.pose().translate(var2 + var4 / 2.0F, var3 + 9.0F); + var1.pose().scale(this.animation.value(), this.animation.value()); + var1.pose().translate(-(var2 + var4 / 2.0F), -(var3 + 9.0F)); + int var11 = var5 == this.this$0.modules.size() - 1? 1: 0; + float var12 = var11 != 0 ? 16.0F : 18.0F; + pi.listRow( + var1, + var2, + var3, + var4, + var12, + (boolean)(((var5 % 2== 0 + ? 1: (1139392698 | -1139392698) + (1139392698 & -1139392698))) != 0), + (boolean)((var11 + ) != 0)); + Identifier var13 = BuiltInRegistries.MOB_EFFECT.getKey((MobEffect)this.effect.getEffect().value()); + Identifier var14 = Identifier.fromNamespaceAndPath( + "evolution", "textures/mob_effect/" + var13.getPath() + ".png" + ); + float var15 = 10.0F; + atb.drawRoundedTexture( + var1.pose(), + var14, + var2 + (18.0F - var15) / 2.0F + 0.6F, + var3 + (18.0F - var15) / 2.0F + 0.6F, + var15, + var15, + arq.ZERO, + new asu( + 0, + 0, + 0, + (-683674255 ^ 683674415) + ((-683674255 & 683674415) << 1) + ) + ); + atb.drawRoundedTexture(var1.pose(), var14, var2 + (18.0F - var15) / 2.0F, var3 + (18.0F - var15) / 2.0F, var15, var15, arq.ZERO, asu.WHITE); + String var16 = I18n.get(((MobEffect)this.effect.getEffect().value()).getDescriptionId(), new Object[0]); + String var17 = this.this$0.getAmplifierText(this.effect.getAmplifier()); + float var18 = var2 + 18.0F; + var1.drawText(var8, var16, var18, var3 + (18.0F - var8.height()) / 2.0F, var7.getWhite()); + float var19 = var18 + var8.width(var16) + 5.0F; + var1.drawText(var8, var17, var19, var3 + (18.0F - var8.height()) / 2.0F, var7.getWhite()); + String var20 = this.this$0.formatDuration(this.effect.getDuration()); + float var21 = var2 + var4 - pi.pad() - var8.width(var20); + var21 = Math.max(var21, var19 + var8.width(var17) + 12.0F); + var1.drawText(var8, var20, var21, var3 + (18.0F - var8.height()) / 2.0F, var7.getColor()); + float var22 = var4 - pi.pad() * 2.0F; + pi.progress(var1, var2 + pi.pad(), var3 + 18.0F - pi.progressHeight() - 1.0F, var22, this.remainingFraction(), var7.getColor().mulAlpha(0.75F)); + var1.popMatrix(); + } + + public boolean isDelete() { + int var2 = 0; + int var1 = 1501954162; + + while (true) { + switch (var1) { + case -325785003: + return (boolean)((var2) != 0); + case 421389018: + var2 = 1; + var1 = -325785003; + break; + case 1273243870: + var2 = 0; + var1 = -325785003; + break; + case 1501954162: + default: + if (this.animation.value() == 0.0F) { + var1 = 421389018; + } else { + var1 = 1273243870; + } + } + } + } +} diff --git a/src/main/java/defpackage/ql.java b/src/main/java/defpackage/ql.java new file mode 100644 index 0000000..7411d22 --- /dev/null +++ b/src/main/java/defpackage/ql.java @@ -0,0 +1,114 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; + +public class ql extends qx { + private static final String TITLE = "Potions"; + private static final String POTION_ICON = "o"; + private static final float ROW_HEIGHT = 18.0F; + private static final float PROGRESS_ALPHA = 0.75F; + private final ct animationWidth = ct.layout(ob.MEDIUM, 100.0F); + private final ct animationScale = ct.layout(ob.MEDIUM, 0.0F); + final Map modules = new LinkedHashMap<>(); + private final ct animationVisible = ct.layout(ob.MEDIUM, 0.0F); + Set currentKeys = new HashSet<>(); + + public ql(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + } + + @Override + public void render(aru var1) { + if (mc.player != null) { + this.currentKeys.clear(); + + for (MobEffectInstance var4 : new ArrayList(mc.player.getActiveEffectsMap().values())) { + String var5 = ((MobEffect)var4.getEffect().value()).getDescriptionId() + var4.getAmplifier(); + this.currentKeys.add(var5); + if (!this.modules.containsKey(var5)) { + this.modules.put(var5, new qk(this, var4)); + } + } + + this.modules.values().removeIf(qk::isDelete); + boolean var17 = this.modules.isEmpty(); + this.animationScale.update(var17 ? 1.0F : 0.0F); + mv var18 = bz.getInstance().getThemeManager().getCurrentTheme(); + ge var19 = gl.ICONS.getFont(6.0F); + ge var6 = gl.MEDIUM.getFont(6.0F); + float var7 = this.x; + float var8 = this.y; + float var9 = pi.headerHeight() + (float)this.modules.values().stream().mapToDouble(qk::getHeight).sum(); + float var10 = pi.headerWidth( + "o", + "Potions", + String.valueOf(this.modules.size()) + ); + + for (qk var12 : this.modules.values()) { + String var13 = var12.effect.getDescriptionId() + var12.effect.getAmplifier(); + if (this.currentKeys.contains(var13)) { + var10 = Math.max(var10, var12.updateWidth()); + } + } + + float var20 = this.animationWidth.update(var10); + this.width = var20; + this.height = var9; + var1.pushMatrix(); + new arq(4.0F, 4.0F, 4.0F, 4.0F); + this.animationVisible + .update( + (boolean)(((!(mc.gui.screen() instanceof ChatScreen) && this.modules.isEmpty() + ? 0: (-503068192 | 503068193) + (-503068192 & 503068193)) + ) != 0)); + var1.pose().translate(var7 + var20 / 2.0F, var8 + var9 / 2.0F); + var1.pose().scale(this.animationVisible.value(), this.animationVisible.value()); + var1.pose().translate(-(var7 + var20 / 2.0F), -(var8 + var9 / 2.0F)); + pi.surface(var1, var7, var8, var20, var9, asj.uniform(pk.radiusPanel()), asu.WHITE); + pi.header( + var1, + "o", + "Potions", + String.valueOf(this.modules.size()), + var7, + var8, + var20 + ); + if (this.animationVisible.value() > 0.0F) { + float var21 = var8 + pi.headerHeight(); + int var14 = 0; + + for (qk var16 : this.modules.values()) { + var16.render(var1, var7, var21, var20, var14); + var21 += var16.getHeight(); + var14++; + } + } + + var1.popMatrix(); + } + } + + String getAmplifierText(int var1) { + return String.valueOf(var1 + (-1071336867 ^ 1071336868) + ((-1071336867 & 1071336868) << 1)); + } + + String formatDuration(int var1) { + int var2 = var1 / (20); + int var3 = var2 / (60); + int var4 = var2 % (60); + String var10000 = "%02d:%02d"; + Object[] var10001 = new Object[2]; + var10001[0] = var3; + var10001[1] = var4; + return String.format(var10000, var10001); + } +} diff --git a/src/main/java/defpackage/qm.java b/src/main/java/defpackage/qm.java new file mode 100644 index 0000000..7bdc62a --- /dev/null +++ b/src/main/java/defpackage/qm.java @@ -0,0 +1,231 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.numbers.NumberFormat; +import net.minecraft.network.chat.numbers.StyledFormat; +import net.minecraft.world.scores.DisplaySlot; +import net.minecraft.world.scores.Objective; +import net.minecraft.world.scores.PlayerScoreEntry; +import net.minecraft.world.scores.PlayerTeam; +import net.minecraft.world.scores.Scoreboard; + +public class qm extends qx { + private static final Comparator SCORE_DISPLAY_ORDER = Comparator.comparing(PlayerScoreEntry::value) + .reversed() + .thenComparing(PlayerScoreEntry::owner, String.CASE_INSENSITIVE_ORDER); + private static final int MAX_ROWS = 15; + private static final int TEAM_SLOT_OFFSET = 3; + private static final float PAD_X = 12.0F; + private static final float PAD_Y = 6.0F; + private static final float ROW_HEIGHT = 10.0F; + private static final float ROW_INSET = 2.0F; + private static final float NAME_SCORE_GAP = 10.0F; + private static final float TITLE_HEIGHT = 14.0F; + private static final float TITLE_RULE_HEIGHT = 1.0F; + private static final float TITLE_RULE_GAP = 3.0F; + private static final float TITLE_RULE_PAD = 5.0F; + private static final float MARKER_WIDTH = 1.6F; + private static final float MARKER_INSET = 2.0F; + private static final float MIN_CONTENT_WIDTH = 100.0F; + private static final float ROW_SHADE_ALPHA = 0.045F; + private static final float SELF_SHADE_ALPHA = 0.11F; + private static final float RULE_ALPHA = 0.55F; + private final ct animWidth = ct.layout(ob.MEDIUM); + private final ct animHeight = ct.layout(ob.MEDIUM); + private final List visibleEntries = new ArrayList<>(15); + private final List rowNames = new ArrayList<>(15); + private final List rowScores = new ArrayList<>(15); + + public qm(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + } + + @Override + public void render(aru var1) { + Objective var2 = null; + int var3 = 53065827; + + while (true) { + switch (var3) { + case -1942902104: + if (mc.player != null) { + var3 = -724805652; + } else { + var3 = 215542899; + } + break; + case -1337823826: + this.width = this.animWidth.update(0.0F); + this.height = this.animHeight.update(0.0F); + return; + case -724805652: + if (vv.INSTANCE.isRemoveScoreboard()) { + var3 = 215542899; + } else { + var3 = 1340880327; + } + break; + case 53065827: + default: + if (mc.level != null) { + var3 = -1942902104; + } else { + var3 = 215542899; + } + break; + case 215542899: + this.width = this.animWidth.update(0.0F); + this.height = this.animHeight.update(0.0F); + return; + case 582551023: + this.renderSidebar(var1, var2); + return; + case 1340880327: + var2 = this.resolveObjective(); + if (var2 == null) { + var3 = -1337823826; + } else { + var3 = 582551023; + } + } + } + } + + private Objective resolveObjective() { + Scoreboard var1 = null; + PlayerTeam var2 = null; + DisplaySlot var3 = null; + Objective var4 = null; + int var5 = 660394858; + + while (true) { + switch (var5) { + case -1336519442: + var3 = var2.getColor() + .map(var0 -> (DisplaySlot)DisplaySlot.BY_ID.apply((1877983486 | -1877983483) + (1877983486 & -1877983483) + var0.ordinal())) + .orElse(null); + if (var3 != null) { + var5 = 173934140; + } else { + var5 = -441562872; + } + break; + case -452051700: + return var4; + case -441562872: + return var1.getDisplayObjective(DisplaySlot.SIDEBAR); + case 173934140: + var4 = var1.getDisplayObjective(var3); + if (var4 != null) { + var5 = -452051700; + } else { + var5 = -441562872; + } + break; + case 660394858: + default: + var1 = mc.level.getScoreboard(); + var2 = var1.getPlayersTeam(mc.player.getScoreboardName()); + if (var2 != null) { + var5 = -1336519442; + } else { + var5 = -441562872; + } + } + } + } + + private void renderSidebar(aru var1, Objective var2) { + mv var3 = bz.getInstance().getThemeManager().getCurrentTheme(); + Scoreboard var4 = var2.getScoreboard(); + NumberFormat var5 = var2.numberFormatOrDefault(StyledFormat.SIDEBAR_DEFAULT); + ge var6 = pk.font(oe.HEADING); + ge var7 = pk.font(oe.LABEL); + ge var8 = pk.font(oe.NUMERIC); + this.collectRows(var4, var2, var5); + Component var9 = var2.getDisplayName(); + float var10 = var6.width(var9); + float var11 = Math.max(var10, 100.0F); + + for (int var12 = 0; var12 < this.rowNames.size(); var12++) { + float var13 = var8.width(this.rowScores.get(var12)); + float var14 = var7.width(this.rowNames.get(var12)) + (var13 > 0.0F ? 10.0F + var13 : 0.0F); + var11 = Math.max(var11, var14); + } + + float var30 = var11 + 24.0F; + float var31 = 18.0F + this.rowNames.size() * 10.0F + 6.0F; + this.width = this.animWidth.update(var30); + this.height = this.animHeight.update(var31); + float var32 = this.x; + float var15 = this.y; + float var16 = this.width; + float var17 = this.height; + if (!(var16 <= 1.0F) && !(var17 <= 1.0F)) { + arq var18 = asj.all(oc.PANEL); + pi.surface(var1, var32, var15, var16, var17, var18, asu.WHITE); + var1.clipHard(var32, var15, var32 + var16, var15 + var17); + asu var19 = var3.getWhite(); + float var20 = var15 + 7.0F; + var1.drawText(var6, var9, var32 + (var16 - var10) / 2.0F, var20 - var6.height() / 2.0F, var19); + float var21 = var15 + 14.0F + 1.5F; + var1.drawRoundedRect(var32 + 5.0F, var21, var16 - 10.0F, 1.0F, asj.pill(1.0F), var3.getColor().mulAlpha(0.55F)); + float var22 = var15 + 14.0F + 1.0F + 3.0F; + String var23 = mc.player.getScoreboardName(); + + for (int var24 = 0; var24 < this.rowNames.size(); var24++) { + boolean var25 = this.visibleEntries.get(var24).owner().equals(var23); + int var26 = var24 == this.rowNames.size() - 1? 1: 0; + if (var25 || (var24 & (-1892221822 ^ 1892221823) + ((-1892221822 & 1892221823) << 1)) == 0) { + arq var27 = var26 != 0 ? asj.bottom(oc.INNER) : arq.ZERO; + asu var28 = (var25 ? var3.getColor() : var3.getWhite()).withAlpha(var25 ? 0.11F : 0.045F); + var1.drawSurface(aso.ROW, var32 + 2.0F, var22, var16 - 4.0F, 10.0F, var27, var28); + } + + if (var25) { + var1.drawRoundedRect(var32 + 2.0F, var22 + 2.0F, 1.6F, 6.0F, asj.pill(1.6F), var3.getColor()); + } + + float var33 = var22 + (10.0F - var7.height()) / 2.0F; + var1.drawText(var7, this.rowNames.get(var24), var32 + 12.0F, var33, var19); + Component var34 = this.rowScores.get(var24); + float var29 = var8.width(var34); + if (var29 > 0.0F) { + var1.drawText(var8, var34, var32 + var16 - 12.0F - var29, var22 + (10.0F - var8.height()) / 2.0F, var3.getColor()); + } + + var22 += 10.0F; + } + + var1.popClip(); + } + } + + private void collectRows(Scoreboard var1, Objective var2, NumberFormat var3) { + this.visibleEntries.clear(); + this.rowNames.clear(); + this.rowScores.clear(); + + for (PlayerScoreEntry var5 : var1.listPlayerScores(var2)) { + if (!var5.isHidden()) { + this.visibleEntries.add(var5); + } + } + + this.visibleEntries.sort(SCORE_DISPLAY_ORDER); + int var8 = Math.min(this.visibleEntries.size(), (1003434581 | -1003434566) + (1003434581 & -1003434566)); + if (this.visibleEntries.size() > var8) { + this.visibleEntries.subList(var8, this.visibleEntries.size()).clear(); + } + + for (int var9 = 0; var9 < var8; var9++) { + PlayerScoreEntry var6 = this.visibleEntries.get(var9); + PlayerTeam var7 = var1.getPlayersTeam(var6.owner()); + this.rowNames.add(PlayerTeam.formatNameForTeam(var7, var6.ownerName())); + this.rowScores.add(var6.formatValue(var3)); + } + } +} diff --git a/src/main/java/defpackage/qn.java b/src/main/java/defpackage/qn.java new file mode 100644 index 0000000..5df2e7c --- /dev/null +++ b/src/main/java/defpackage/qn.java @@ -0,0 +1,223 @@ +package defpackage; + +import net.minecraft.network.chat.Component; + +public class qn { + private Component prefix; + private String name; + private boolean isSpec; + private qp status; + + public Component getPrefix() { + return this.prefix; + } + + public String getName() { + return this.name; + } + + public boolean isSpec() { + return this.isSpec; + } + + public qp getStatus() { + return this.status; + } + + public void setPrefix(Component var1) { + this.prefix = var1; + } + + public void setName(String var1) { + this.name = var1; + } + + public void setSpec(boolean var1) { + this.isSpec = var1; + } + + public void setStatus(qp var1) { + this.status = var1; + } + + @Override + public boolean equals(Object var1) { + qn var2 = null; + Component var3 = null; + Component var4 = null; + String var5 = null; + String var6 = null; + qp var7 = null; + qp var8 = null; + int var9 = 1756985601; + + while (true) { + switch (var9) { + case -2039832661: + if (var4 != null) { + var9 = 1258486268; + } else { + var9 = 1525052932; + } + break; + case -1578733986: + return (boolean)(((1)) != 0); + case -825460121: + if (!var5.equals(var6)) { + var9 = 564502960; + } else { + var9 = -104623107; + } + break; + case -780963016: + if (!(var1 instanceof qn)) { + var9 = -280115300; + } else { + var9 = 564758839; + } + break; + case -447079734: + var9 = 564502960; + break; + case -396024003: + if (this.isSpec() != var2.isSpec()) { + var9 = 1518407139; + } else { + var9 = 1898565350; + } + break; + case -280115300: + return (boolean)(((0)) != 0); + case -104623107: + var7 = this.getStatus(); + var8 = var2.getStatus(); + if (var7 == null) { + var9 = 113868605; + } else { + var9 = 1113174941; + } + break; + case 113868605: + if (var8 != null) { + var9 = 1241182897; + } else { + var9 = 211056595; + } + break; + case 211056595: + return (boolean)(((1)) != 0); + case 564502960: + return (boolean)(((0)) != 0); + case 564758839: + var2 = (qn)var1; + if (!var2.canEqual(this)) { + var9 = 719629132; + } else { + var9 = -396024003; + } + break; + case 701435724: + if (!var3.equals(var4)) { + var9 = 870198850; + } else { + var9 = 1525052932; + } + break; + case 719629132: + return (boolean)(((0)) != 0); + case 870198850: + return (boolean)(((0)) != 0); + case 1113174941: + if (!var7.equals(var8)) { + var9 = 1517918281; + } else { + var9 = 211056595; + } + break; + case 1241182897: + var9 = 1517918281; + break; + case 1258486268: + var9 = 870198850; + break; + case 1517918281: + return (boolean)(((0)) != 0); + case 1518407139: + return (boolean)(((0)) != 0); + case 1525052932: + var5 = this.getName(); + var6 = var2.getName(); + if (var5 == null) { + var9 = 1676610304; + } else { + var9 = -825460121; + } + break; + case 1676610304: + if (var6 != null) { + var9 = -447079734; + } else { + var9 = -104623107; + } + break; + case 1756985601: + default: + if (var1 == this) { + var9 = -1578733986; + } else { + var9 = -780963016; + } + break; + case 1898565350: + var3 = this.getPrefix(); + var4 = var2.getPrefix(); + if (var3 == null) { + var9 = -2039832661; + } else { + var9 = 701435724; + } + } + } + } + + protected boolean canEqual(Object var1) { + return var1 instanceof qn; + } + + @Override + public int hashCode() { + int var1 = 59; + int var2 = 1; + var2 = var2 * ((2015530499 ^ -2015530440) + ((2015530499 & -2015530440) << 1)) + + (this.isSpec() ? 79: (-2142043125 ^ 2142043222) + ((-2142043125 & 2142043222) << 1)); + Component var3 = this.getPrefix(); + var2 = var2 * ((-1933628753 ^ 1933628812) + ((-1933628753 & 1933628812) << 1)) + + (var3 == null ? 43: var3.hashCode()); + String var4 = this.getName(); + var2 = var2 * ((-1551243551 ^ 1551243610) + ((-1551243551 & 1551243610) << 1)) + + (var4 == null ? 43: var4.hashCode()); + qp var5 = this.getStatus(); + return var2 * ((-57918343 | 57918402) + (-57918343 & 57918402)) + + (var5 == null ? 43: var5.hashCode()); + } + + @Override + public String toString() { + return "StaffComponent.Staff(prefix=" + + this.getPrefix() + + ", name=" + + this.getName() + + ", isSpec=" + + this.isSpec() + + ", status=" + + this.getStatus() + + ")"; + } + + public qn(Component var1, String var2, boolean var3, qp var4) { + this.prefix = var1; + this.name = var2; + this.isSpec = var3; + this.status = var4; + } +} diff --git a/src/main/java/defpackage/qo.java b/src/main/java/defpackage/qo.java new file mode 100644 index 0000000..ccecec0 --- /dev/null +++ b/src/main/java/defpackage/qo.java @@ -0,0 +1,153 @@ +package defpackage; + +import java.util.Objects; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.client.resources.DefaultPlayerSkin; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; + +class qo { + private qq this$0; + + final ct animation; + private final ct animationColor; + private final Component displayNameText; + private final String key; + private final String name; + private final qp status; + private final long appearTime; + + public qo(qq var1, Component var2, String var3, String var4, qp var5) { + Objects.requireNonNull(var1); + this.this$0 = var1; + this.animation = ct.layout(ob.FAST, 0.01F); + this.animationColor = ct.layout(ob.MEDIUM); + this.displayNameText = var2; + this.key = var3; + this.name = var4; + this.status = var5; + this.appearTime = System.currentTimeMillis(); + } + + public float updateWidth() { + ge var1 = gl.MEDIUM.getFont(6.0F); + String var2 = this.this$0.formatTime(System.currentTimeMillis() - this.appearTime); + return 24.0F + var1.width(this.displayNameText) + 8.0F + var1.width(var2) + 8.0F; + } + + public float getHeight() { + return 18.0F * this.animation.value(); + } + + public void render(aru var1, float var2, float var3, float var4, int var5, boolean var6) { + mv var7 = bz.getInstance().getThemeManager().getCurrentTheme(); + ge var8 = gl.MEDIUM.getFont(6.0F); + this.animation.update(var6 ? 1.0F : 0.0F); + var1.pushMatrix(); + var1.pose().translate(var2 + var4 / 2.0F, var3 + 9.0F); + var1.pose().scale(this.animation.value(), this.animation.value()); + var1.pose().translate(-(var2 + var4 / 2.0F), -(var3 + 9.0F)); + this.animationColor.update(var5 % 2== 0 ? 1.0F : 0.0F); + asu var9 = new asu( + 0, + 0, + 0, + (1217294257 ^ -1217294257) + ((1217294257 & -1217294257) << 1) + ) + .mix(var7.getColor().withAlpha((-2119336262 | 2119336282) + (-2119336262 & 2119336282)), this.animationColor.value()); + float var10 = var5 == this.this$0.modules.size() - 1? 16.0F : 18.0F; + var1.drawSurface( + aso.ROW, + var2 + 2.0F, + var3, + var4 - 4.0F, + var10, + var5 == this.this$0.modules.size() - 1? asj.bottom(oc.CHIP) : arq.ZERO, + var9 + ); + Identifier var11 = this.this$0.skinTextureCache.get(this.name); + if (var11 == null && aqg.mc.getConnection() != null) { + PlayerInfo var12 = aqg.mc.getConnection().getOnlinePlayers().stream().filter(var1x -> { + int var3x = 0; + int var2x = 1359065919; + + while (true) { + switch (var2x) { + case -1346497707: + var3x = 0; + var2x = 964020778; + break; + case -760463397: + var3x = 1; + var2x = 964020778; + break; + case -462598214: + if (this.name.equals(var1x.getProfile().name())) { + var2x = -760463397; + } else { + var2x = -1346497707; + } + break; + case 964020778: + return (boolean)((var3x) != 0); + case 1359065919: + default: + if (var1x.getProfile() != null) { + var2x = -462598214; + } else { + var2x = -1346497707; + } + } + } + }).findFirst().orElse(null); + if (var12 != null && var12.getSkin() != null) { + var11 = var12.getSkin().body().texturePath(); + this.this$0.skinTextureCache.put(this.name, var11); + } + } + + if (var11 == null) { + var11 = DefaultPlayerSkin.getDefaultSkin().body().texturePath(); + } + + atb.drawPlayerHeadWithRoundedShader(var1.pose(), var11, var2 + 6.0F, var3 + 6.0F, 6.0F, asj.all(oc.CHIP), asu.WHITE); + var1.drawText( + gl.BOLD.getFont(8.0F), + ".", + var2 + 8.0F + 8.0F + 2.0F, + var3 + 4.0F, + var7.getWhiteGray() + ); + var1.drawText(var8, this.displayNameText, var2 + 8.0F + 8.0F + 8.0F, var3 + (18.0F - var8.height()) / 2.0F); + String var13 = this.this$0.formatTime(System.currentTimeMillis() - this.appearTime); + var1.drawText(var8, var13, var2 + var4 - 8.0F - var8.width(var13), var3 + (18.0F - var8.height()) / 2.0F, var7.getColor()); + var1.popMatrix(); + } + + public boolean isDelete() { + int var2 = 0; + int var1 = -556961319; + + while (true) { + switch (var1) { + case -556961319: + default: + if (this.animation.value() == 0.0F) { + var1 = 2097323954; + } else { + var1 = -462177492; + } + break; + case -462177492: + var2 = 0; + var1 = 1807431547; + break; + case 1807431547: + return (boolean)((var2) != 0); + case 2097323954: + var2 = 1; + var1 = 1807431547; + } + } + } +} diff --git a/src/main/java/defpackage/qp.java b/src/main/java/defpackage/qp.java new file mode 100644 index 0000000..50ae409 --- /dev/null +++ b/src/main/java/defpackage/qp.java @@ -0,0 +1,6 @@ +package defpackage; + +public enum qp { + NONE, + VANISHED; +} diff --git a/src/main/java/defpackage/qq.java b/src/main/java/defpackage/qq.java new file mode 100644 index 0000000..5576fcd --- /dev/null +++ b/src/main/java/defpackage/qq.java @@ -0,0 +1,306 @@ +package defpackage; + +import com.mojang.authlib.GameProfile; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.Map.Entry; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; +import net.minecraft.world.level.GameType; + +public class qq extends qx { + private final ct animationWidth = ct.layout(ob.MEDIUM, 100.0F); + private final ct animationScale = ct.layout(ob.MEDIUM, 0.0F); + private final ct animationVisible = ct.layout(ob.MEDIUM, 0.0F); + final Map modules = new LinkedHashMap<>(); + private final Set staffPrefix; + final Map skinTextureCache; + private long lastStaffUpdate; + private long lastSkinCacheClear; + private final Set currentStaffKeys; + + public qq(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + String[] var10001 = new String[11]; + var10001[0] = "helper"; + var10001[1] = "ᴀдмин"; + var10001[2] = "moder"; + var10001[3] = "staff"; + var10001[4] = "admin"; + var10001[5] = "curator"; + var10001[6] = "стажёр"; + var10001[7] = "сотрудник"; + var10001[8] = "помощник"; + var10001[9] = "админ"; + var10001[10] = "модер"; + this.staffPrefix = Set.of(var10001); + this.skinTextureCache = new HashMap<>(); + this.lastStaffUpdate = (56839614592269491L ^ -56839614592269491L) + ((56839614592269491L & -56839614592269491L) << 1); + this.lastSkinCacheClear = (-3241652462913765405L ^ 3241652462913765405L) + ((-3241652462913765405L & 3241652462913765405L) << 1); + this.currentStaffKeys = new HashSet<>(); + } + + private String headerTrailing() { + return String.valueOf(this.modules.size()); + } + + @Override + public void render(aru var1) { + long var2 = System.currentTimeMillis(); + if (var2 - this.lastStaffUpdate > (4678812146175777926L | -4678812146175776926L) + (4678812146175777926L & -4678812146175776926L) + && mc.getConnection() != null) { + this.updateStaffList(); + this.lastStaffUpdate = var2; + } + + if (var2 - this.lastSkinCacheClear > (-6995736796468179388L ^ 6995736796468209388L) + ((-6995736796468179388L & 6995736796468209388L) << 1)) { + this.skinTextureCache.clear(); + this.lastSkinCacheClear = var2; + } + + this.modules.entrySet().removeIf(var0 -> var0.getValue().isDelete()); + int var4 = this.modules.size() == (1706501833 | -1706501832) + (1706501833 & -1706501832) + && this.modules.values().iterator().next().animation.target() == 0.0F + ? 1: 0; + this.animationScale.update(var4 != 0 ? 0.0F : 1.0F); + mv var5 = bz.getInstance().getThemeManager().getCurrentTheme(); + ge var6 = gl.ICONS.getFont(6.0F); + ge var7 = gl.MEDIUM.getFont(6.0F); + float var8 = this.x; + float var9 = this.y; + float var10 = (float)(18.0 + this.modules.values().stream().mapToDouble(qo::getHeight).sum()); + float var11 = 18.0F + + var7.width("Staffs") + + 8.0F + + var6.width("M") + + 8.0F; + + for (Entry var13 : this.modules.entrySet()) { + if (this.currentStaffKeys.contains(var13.getKey())) { + var11 = Math.max(var11, ((qo)var13.getValue()).updateWidth()); + } + } + + float var20 = this.animationWidth.update(var11); + this.width = var20; + this.height = var10; + var1.pushMatrix(); + float var21 = this.animationScale.value() * 4.0F; + new arq(4.0F, 4.0F, var21, var21); + this.animationVisible + .update( + (boolean)(((!(mc.gui.screen() instanceof ChatScreen) && this.modules.isEmpty() + ? 0: (-1398948880 ^ 1398948881) + ((-1398948880 & 1398948881) << 1)) + ) != 0)); + var1.pose().translate(var8 + var20 / 2.0F, var9 + var10 / 2.0F); + var1.pose().scale(this.animationVisible.value(), this.animationVisible.value()); + var1.pose().translate(-(var8 + var20 / 2.0F), -(var9 + var10 / 2.0F)); + pi.surface(var1, var8, var9, var20, var10, asj.uniform(pk.radiusPanel()), asu.WHITE); + pi.header( + var1, + "P", + "Staffs", + this.headerTrailing(), + var8, + var9, + var20 + ); + if (this.animationVisible.value() > 0.0F) { + float var15 = var9 + 18.0F; + int var16 = 0; + + for (Entry var18 : this.modules.entrySet()) { + qo var19 = (qo)var18.getValue(); + var19.render(var1, var8, var15, var20, var16, this.currentStaffKeys.contains(var18.getKey())); + var15 += var19.getHeight(); + var16++; + } + } + + var1.popMatrix(); + } + + private void updateStaffList() { + Iterator var1 = null; + PlayerInfo var2 = null; + GameProfile var3 = null; + Component var4 = null; + String var5 = null; + String var6 = null; + String var7 = null; + String var8 = null; + qp var9 = null; + Component var10 = null; + qp var12 = null; + Component var13 = null; + int var11 = -1030794923; + + while (true) { + switch (var11) { + case -1823741332: + if (!this.containsAnyKeyword(var7)) { + var11 = -1534547403; + } else { + var11 = -10451266; + } + break; + case -1725922651: + var11 = 1447168164; + break; + case -1715071526: + return; + case -1534547403: + var11 = 1447168164; + break; + case -1155122712: + var2 = (PlayerInfo)var1.next(); + var3 = var2.getProfile(); + var4 = var2.getTabListDisplayName(); + if (var4 != null) { + var11 = -171897379; + } else { + var11 = 1447168164; + } + break; + case -1094460723: + var12 = qp.VANISHED; + var11 = 1741590042; + break; + case -1030794923: + default: + if (mc.getConnection() == null) { + var11 = -41808552; + } else { + var11 = 118647494; + } + break; + case -171897379: + if (var3 == null) { + var11 = -1725922651; + } else { + var11 = 2032699717; + } + break; + case -41808552: + return; + case -10451266: + var8 = var5; + if (var2.getGameMode() == GameType.SPECTATOR) { + var11 = -1094460723; + } else { + var11 = 310313836; + } + break; + case 118647494: + this.currentStaffKeys.clear(); + var1 = mc.getConnection().getOnlinePlayers().iterator(); + var11 = 1447168164; + break; + case 310313836: + var12 = qp.NONE; + var11 = 1741590042; + break; + case 1165430826: + var13 = aph.truncateAfterSubstring(var4, var3.name(), (boolean)((((-1922372074 | 1922372074) + (-1922372074 & 1922372074))) != 0)); + var11 = 1861099087; + break; + case 1417210510: + var11 = 1447168164; + break; + case 1447168164: + if (var1.hasNext()) { + var11 = -1155122712; + } else { + var11 = -1715071526; + } + break; + case 1741590042: + var9 = var12; + if (var4.getString().contains(var3.name())) { + var11 = 1165430826; + } else { + var11 = 2071912946; + } + break; + case 1861099087: + var4 = var13; + var10 = var4; + this.modules.computeIfAbsent(var8, var5x -> new qo(this, var10, var8, var6, var9)); + this.currentStaffKeys.add(var8); + var11 = 1447168164; + break; + case 2032699717: + var5 = var4.getString(); + var6 = var3.name(); + var7 = var5.replace(var6, "").trim(); + if (var7.length() < (-618174454 ^ 618174456) + ((-618174454 & 618174456) << 1)) { + var11 = 1417210510; + } else { + var11 = -1823741332; + } + break; + case 2071912946: + var13 = aph.truncateAfterSecondSpace(var4, (boolean)((((197539898 | -197539898) + (197539898 & -197539898))) != 0)); + var11 = 1861099087; + } + } + } + + public boolean containsAnyKeyword(String var1) { + String var2 = null; + Iterator var3 = null; + CharSequence var4 = null; + int var5 = 919176179; + + while (true) { + switch (var5) { + case -2073706740: + return (boolean)(((1)) != 0); + case -2005247333: + return (boolean)(((0)) != 0); + case -368298488: + if (var3.hasNext()) { + var5 = 621553412; + } else { + var5 = -2005247333; + } + break; + case 225656898: + var5 = -368298488; + break; + case 621553412: + var4 = (String)var3.next(); + if (var2.contains(var4)) { + var5 = -2073706740; + } else { + var5 = 225656898; + } + break; + case 919176179: + default: + var2 = var1.toLowerCase(Locale.US); + var3 = this.staffPrefix.iterator(); + var5 = -368298488; + } + } + } + + String formatTime(long var1) { + long var3 = var1 / ((7459072372096796806L | -7459072372096736806L) + (7459072372096796806L & -7459072372096736806L)); + long var5 = var1 + % ((819106639920240304L ^ -819106639920180304L) + ((819106639920240304L & -819106639920180304L) << 1)) + / ((-2863620169363038861L ^ 2863620169363039861L) + ((-2863620169363038861L & 2863620169363039861L) << 1)); + String var10000 = "%d:%02d"; + Object[] var10001 = new Object[2]; + var10001[0] = var3; + var10001[1] = var5; + return String.format(var10000, var10001); + } +} diff --git a/src/main/java/defpackage/qr.java b/src/main/java/defpackage/qr.java new file mode 100644 index 0000000..cdbb4f3 --- /dev/null +++ b/src/main/java/defpackage/qr.java @@ -0,0 +1,16 @@ +package defpackage; + +public enum qr { + MODERN("Modern"), + COMPACT("Compact"); + + private final String label; + + qr(String var3) { + this.label = var3; + } + + public String label() { + return this.label; + } +} diff --git a/src/main/java/defpackage/qs.java b/src/main/java/defpackage/qs.java new file mode 100644 index 0000000..3a2103a --- /dev/null +++ b/src/main/java/defpackage/qs.java @@ -0,0 +1,1923 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.Locale; +import net.fabricmc.fabric.api.event.player.AttackEntityCallback; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.resources.DefaultPlayerSkin; +import net.minecraft.resources.Identifier; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.entity.npc.villager.AbstractVillager; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.scores.PlayerTeam; +import org.joml.Matrix3x2fStack; + +public class qs extends qx { + private static final float PANEL_W = 154.0F; + private static final float PAD = 6.0F; + private static final float AVATAR = 22.0F; + private static final float NAME_GAP = 7.0F; + private static final float BAR_H = 5.0F; + private static final arq BAR_RADIUS = asj.pill(5.0F); + private static final int SEGMENTS = 12; + private static final float SEG_GAP = 1.6F; + private static final float EQUIP_BOX = 15.0F; + private static final float EQUIP_GAP = 3.0F; + private static final float EQUIP_FILLED_ALPHA = 0.8F; + private static final float EQUIP_EMPTY_ALPHA = 0.3F; + private static final float DUR_BAR_H = 1.6F; + private static final float PANEL_SCALE = 0.8F; + private static final long DELTA_MS = 1000L; + private static final long FLASH_MS = 320L; + private static final float COMBAT_HURT_MAX = 10.0F; + private static final float COMBAT_SHADOW_SOFTNESS = 7.0F; + private static final float COMBAT_SHADOW_ALPHA = 0.28F; + private static final float COMBAT_BORDER_ALPHA = 0.85F; + private static final float ITEM_SPRITE_SIZE = 16.0F; + private static final float MODERN_FALLBACK_H = 40.0F; + private static final float AVATAR_GLYPH_SIZE = 12.0F; + private static final float AVATAR_SHADOW_ALPHA = 0.16F; + private static final String AVATAR_GLYPH = "?"; + private static final String DISTANCE_FORMAT = "%.1fm"; + private static final String USE_TIME_FORMAT = "%.2fs"; + private static final float HURT_PULSE_SCALE = 2.0F; + private static final long HOVER_HOLD_MS = 1500L; + private static final long COMBAT_HOLD_MS = 4000L; + private static final long SWITCH_HOVER_MS = 250L; + private static final double MAX_TRACK_DISTANCE_SQ = 2304.0; + private static final asu HP_GREEN = new asu( + 95, + 220, + (1330915560 ^ -1330915440) + ((1330915560 & -1330915440) << 1) + ); + private static final asu HP_RED = new asu( + 235, + 80, + (1436354624 ^ -1436354544) + ((1436354624 & -1436354544) << 1) + ); + private static final asu GHOST = new asu( + 255, + 120, + 100, + (-1917705338 | 1917705528) + (-1917705338 & 1917705528) + ); + private static final asu COMBAT = new asu( + 240, + 72, + (653314681 ^ -653314609) + ((653314681 & -653314609) << 1) + ); + private final ct healthAnimation = ct.layout(ob.SETTLED); + private final ct ghostHealthAnimation = ct.layout(ob.DELIBERATE); + private final ct toggleAnimation = ct.layout(ob.SETTLED); + private final ct settingsAnimation = ct.layout(ob.MEDIUM); + private final ct useItemAnim = ct.layout(ob.MEDIUM); + private final ct hurtAnim = ct.layout(ob.FAST); + private final ct styleAnim = ct.layout(ob.MEDIUM); + private final ct nickAnim = ct.layout(ob.MEDIUM); + private final ct pingAnim = ct.layout(ob.MEDIUM); + private final ct equipAnim = ct.layout(ob.MEDIUM); + private final ct healthBarAnim = ct.layout(ob.MEDIUM); + private LivingEntity target; + private LivingEntity lockedTarget; + private LivingEntity pendingTarget; + private long lastContactAt = (-3084419271497597809L | 3084419271497597809L) + (-3084419271497597809L & 3084419271497597809L); + private long lastAttackAt = (4930796366440419309L ^ -4930796366440419309L) + ((4930796366440419309L & -4930796366440419309L) << 1); + private long pendingSince = (595990790533273939L ^ -595990790533273939L) + ((595990790533273939L & -595990790533273939L) << 1); + private String lastTargetName = ""; + private float lastHp = -1.0F; + private float pendingDelta = 0.0F; + private long deltaShownAt = (-6719274643694568408L | 6719274643694568408L) + (-6719274643694568408L & 6719274643694568408L); + private qr style = qr.MODERN; + private LivingEntity useStateEntity; + private int useStateTicks = -1; + private long useStateChangedAt = (-5606427967247909666L | 5606427967247909666L) + (-5606427967247909666L & 5606427967247909666L); + private boolean displayNickname = (boolean)(((1)) != 0); + private boolean showPingDistance = (boolean)(((1)) != 0); + private boolean showEquipment = (boolean)(((1)) != 0); + private boolean showHealthBar = (boolean)(((1)) != 0); + private static final float C_PANEL_W = 118.5F; + private static final float C_PANEL_H = 36.0F; + private static final float C_PAD = 5.0F; + private static final float C_AVATAR = 26.0F; + private static final float C_AVATAR_SHADOW = 5.0F; + private static final float C_TEXT_X = 35.0F; + private static final float C_SUB_Y = 6.25F; + private static final float C_SUB_SIZE = 5.0F; + private static final float C_NAME_Y = 12.25F; + private static final float C_NAME_SIZE = 7.5F; + private static final float C_TEXT_MAX_W = 55.5F; + private static final float C_EQUIP_Y = 23.25F; + private static final float C_EQUIP_ICON = 6.0F; + private static final float C_EQUIP_STEP = 8.5F; + private static final int C_EQUIP_PLACEHOLDERS = 4; + private static final float C_RING_CX = 101.0F; + private static final float C_RING_CY = 18.5F; + private static final float C_RING_RADIUS = 10.0F; + private static final float C_RING_THICKNESS = 2.5F; + private static final float C_RING_TEXT_SIZE = 6.5F; + private static final String C_UNKNOWN_HEALTH = "?"; + private static final float C_USE_ICON = 12.0F; + private static final float C_USE_ICON_X = 12.0F; + private static final float C_USE_ICON_Y = 8.0F; + private static final float C_USE_TEXT_Y = 21.0F; + private static final float C_USE_TEXT_SIZE = 5.0F; + private static final float C_USE_SCRIM_ALPHA = 0.78F; + private static final float C_USE_MIN_ALPHA = 0.001F; + private static final long USE_STALE_MS = 750L; + private static final int CONTINUOUS_USE_TICKS = 1200; + private static final float TICKS_PER_SECOND = 20.0F; + private static final int HURT_TIME_MAX = 10; + private static final float HURT_TINT_DEPTH = 0.5F; + private static final int CHANNEL_MAX = 255; + private static final String SUB_SEPARATOR = " · "; + private static final String LABEL_PLAYER = "Player"; + private static final String LABEL_VILLAGER = "Villager"; + private static final String LABEL_ANIMAL = "Animal"; + private static final String LABEL_MOB = "Mob"; + private static final String LABEL_ENTITY = "Entity"; + private static final float S_W = 154.0F; + private static final float S_ROW_H = 13.0F; + private static final float S_CONTENT_TOP = 28.0F; + private static final float S_BOTTOM_PAD = 7.0F; + private static final int S_ROWS = 4; + private static final float S_STYLE_ROW_H = 17.0F; + private static final float S_SIDE_PAD = 10.0F; + private static final float S_SEG_W = 76.0F; + private static final float S_SEG_H = 12.0F; + private static final float S_SEG_INSET = 1.0F; + private static final float S_SEG_LABEL_SIZE = 6.5F; + private static final float S_TRACK_ALPHA = 0.5F; + private static final String S_STYLE_LABEL = "Style"; + private static final float S_POPUP_GAP = 6.0F; + + private static arq EQUIP_RADIUS() { + return asj.all(oc.INNER); + } + + private static arq POPUP_RADIUS() { + return asj.all(oc.PANEL); + } + + private static arq POPUP_TOP_RADIUS() { + return asj.top(oc.PANEL); + } + + private static arq AVATAR_BORDER_RADIUS() { + return asj.all(oc.CONTROL); + } + + public qs(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + AttackEntityCallback.EVENT.register((AttackEntityCallback)(var1x, var2x, var3x, var4x, var5x) -> { + LivingEntity var6x = null; + int var7x = -796157679; + + while (true) { + switch (var7x) { + case -1032337662: + return InteractionResult.PASS; + case -796157679: + default: + if (var1x == mc.player) { + var7x = -242364736; + } else { + var7x = -1032337662; + } + break; + case -242364736: + if (var4x instanceof LivingEntity) { + var7x = 1125012865; + } else { + var7x = -1032337662; + } + break; + case 1125012865: + var6x = (LivingEntity)var4x; + this.onAttack(var6x, System.currentTimeMillis()); + var7x = -1032337662; + } + } + }); + } + + private void onAttack(LivingEntity var1, long var2) { + this.lockedTarget = var1; + this.pendingTarget = null; + this.lastAttackAt = var2; + this.lastContactAt = var2; + } + + private LivingEntity resolveTarget(long var1) { + if (mc.gui.screen() instanceof ChatScreen) { + return mc.player; + } + + if (!this.isTrackable(this.lockedTarget)) { + this.lockedTarget = null; + } + + LivingEntity var3 = mc.hitResult instanceof EntityHitResult var5 && var5.getEntity() instanceof LivingEntity var4 && this.isTrackable(var4) ? var4 : null; + if (var3 == null) { + this.pendingTarget = null; + } else if (var3 == this.lockedTarget) { + this.lastContactAt = var1; + this.pendingTarget = null; + } else if (this.lockedTarget == null || !this.inCombat(var1)) { + this.lockedTarget = var3; + this.lastContactAt = var1; + this.pendingTarget = null; + } else if (var3 != this.pendingTarget) { + this.pendingTarget = var3; + this.pendingSince = var1; + } else if (var1 - this.pendingSince >= (-2802055159364362024L ^ 2802055159364362274L) + ((-2802055159364362024L & 2802055159364362274L) << 1)) { + this.lockedTarget = var3; + this.lastContactAt = var1; + this.pendingTarget = null; + } + + if (this.lockedTarget != null + && var1 - this.lastContactAt + > ( + this.inCombat(var1) + ? (-8511697872075770553L ^ 8511697872075774553L) + ((-8511697872075770553L & 8511697872075774553L) << 1) + : (-8475260170690469842L | 8475260170690471342L) + (-8475260170690469842L & 8475260170690471342L) + )) { + this.lockedTarget = null; + } + + return this.lockedTarget; + } + + private boolean inCombat(long var1) { + int var4 = 0; + int var3 = -243988702; + + while (true) { + switch (var3) { + case -1606799722: + var4 = 0; + var3 = -771651213; + break; + case -771651213: + return (boolean)((var4) != 0); + case -243988702: + default: + if (var1 - this.lastAttackAt <= (8517712113224388272L ^ -8517712113224384272L) + ((8517712113224388272L & -8517712113224384272L) << 1)) { + var3 = 32842508; + } else { + var3 = -1606799722; + } + break; + case 32842508: + var4 = 1; + var3 = -771651213; + } + } + } + + private boolean isTrackable(LivingEntity var1) { + int var3 = 0; + int var2 = -342356975; + + while (true) { + switch (var2) { + case -342356975: + default: + if (var1 != null) { + var2 = 1086121897; + } else { + var2 = 2051404996; + } + break; + case -285727762: + if (var1 != mc.player) { + var2 = 1668905218; + } else { + var2 = 2051404996; + } + break; + case -207914658: + return (boolean)((var3) != 0); + case -105612290: + if (var1.level() == mc.level) { + var2 = 868057357; + } else { + var2 = 2051404996; + } + break; + case 540021545: + if (var1.distanceToSqr(mc.player) <= 2304.0) { + var2 = 1238673521; + } else { + var2 = 2051404996; + } + break; + case 868057357: + if (!var1.isInvisibleTo(mc.player)) { + var2 = 540021545; + } else { + var2 = 2051404996; + } + break; + case 1086121897: + if (mc.player != null) { + var2 = -285727762; + } else { + var2 = 2051404996; + } + break; + case 1238673521: + if (mc.player.hasLineOfSight(var1)) { + var2 = 1599956825; + } else { + var2 = 2051404996; + } + break; + case 1599956825: + var3 = 1; + var2 = -207914658; + break; + case 1668905218: + if (var1.isAlive()) { + var2 = 1778924557; + } else { + var2 = 2051404996; + } + break; + case 1778924557: + if (!var1.isRemoved()) { + var2 = -105612290; + } else { + var2 = 2051404996; + } + break; + case 2051404996: + var3 = 0; + var2 = -207914658; + } + } + } + + @Override + public void render(aru var1) { + int var2 = this.style == qr.COMPACT + ? 1: 0; + this.width = var2 != 0 ? 118.5F : 123.200005F; + this.height = var2 != 0 ? 36.0F : 40.0F; + this.setTarget(this.resolveTarget(System.currentTimeMillis())); + if (this.toggleAnimation.value() != 0.0F && this.target != null) { + String var3 = this.target.getName().getString(); + if (!var3.equals(this.lastTargetName)) { + this.lastTargetName = var3; + this.lastHp = -1.0F; + this.pendingDelta = 0.0F; + } + + if (var2 != 0) { + this.renderCompactHud(var1, this.target, this.toggleAnimation.value()); + } else { + this.renderTargetHud(var1, this.target, this.toggleAnimation.value()); + } + } + } + + private void renderTargetHud(aru var1, LivingEntity var2, float var3) { + mv var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + boolean var5 = var2 instanceof Player; + ItemStack[] var6 = this.getEquipment(var2); + int var7 = !this.showEquipment || !var5 && !this.hasAnyEquipment(var6) + ? 0: 1; + float var8 = 34.0F; + float var9 = this.showHealthBar ? var8 + 5.0F : 28.0F; + float var10 = var9 + 7.0F; + float var11 = var7 != 0 ? var10 + 15.0F + 6.0F : var9 + 6.0F; + float var12 = Math.round(apo.getHealth(var2)); + float var13 = Math.max(1.0F, var2.getMaxHealth()); + float var14 = Math.min(1.0F, var12 / var13); + float var15 = this.healthAnimation.update(var14); + float var16 = this.ghostHealthAnimation.update(var14); + if (this.lastHp < 0.0F) { + this.lastHp = var12; + } else if (var12 < this.lastHp - 0.01F) { + this.pendingDelta = this.lastHp - var12; + this.deltaShownAt = System.currentTimeMillis(); + } + + this.lastHp = var12; + float var17 = Math.min(1.0F, Math.max(0.0F, var2.hurtTime / 10.0F)); + var1.pose().pushMatrix(); + var1.pose().translate(this.x, this.y); + var1.pose().scale(0.8F, 0.8F); + var1.pose().translate(-this.x, -this.y); + var1.pose().translate(this.x + 77.0F, this.y + var11 / 2.0F); + var1.pose().scale(var3, var3); + var1.pose().translate(-(this.x + 77.0F), -(this.y + var11 / 2.0F)); + if (var17 > 0.0F) { + atb.drawShadow(var1.pose(), this.x, this.y, 154.0F, var11, 7.0F, asj.uniform(pk.radiusPanel()), COMBAT.mulAlpha(0.28F * var17)); + } + + pi.surface(var1, this.x, this.y, 154.0F, var11, asj.uniform(pk.radiusPanel()), asu.WHITE); + float var18 = this.x + 6.0F; + float var19 = this.y + 6.0F; + Identifier var20 = this.skinTextureOf(var2); + if (var20 != null) { + atb.drawPlayerHeadWithRoundedShader(var1.pose(), var20, var18, var19, 22.0F, asj.all(oc.CONTROL), asu.WHITE); + } else { + var1.drawSurface(aso.CONTROL, var18, var19, 22.0F, 22.0F, AVATAR_BORDER_RADIUS(), var4.getForegroundDark()); + ge var21 = gl.MEDIUM.getFont(12.0F); + var1.drawText( + var21, + "?", + var18 + (22.0F - var21.width("?")) / 2.0F, + var19 + (22.0F - var21.height()) / 2.0F, + var4.getGrayLight() + ); + } + + float var41 = var18 + 22.0F + 7.0F; + asu var22 = asu.lerp(HP_RED, HP_GREEN, var14); + long var23 = System.currentTimeMillis(); + float var25 = Math.max(0.0F, 1.0F - (float)(var23 - this.deltaShownAt) / 320.0F); + asu var26 = asu.lerp(var22, asu.WHITE, var25); + ge var27 = gl.SEMIBOLD.getFont(8.0F); + ge var28 = gl.MEDIUM.getFont(6.5F); + String var29 = String.valueOf((int)var12); + String var30 = " / " + (int)var13; + float var31 = var28.width(var30); + float var32 = var27.width(var29); + float var33 = this.x + 154.0F - 6.0F; + float var34 = this.y + 6.0F + 1.0F; + var1.drawText(var28, var30, var33 - var31, var34 + (var27.height() - var28.height()), var4.getGrayLight()); + var1.drawText(var27, var29, var33 - var31 - var32, var34, var26); + float var35 = Math.max(0.0F, 1.0F - (float)(var23 - this.deltaShownAt) / 1000.0F); + if (var35 > 0.01F && this.pendingDelta > 0.0F) { + ge var36 = gl.SEMIBOLD.getFont(6.0F); + String var37 = "-" + (int)this.pendingDelta; + float var38 = (1.0F - var35) * 6.0F; + var1.drawText(var36, var37, var33 - var36.width(var37), var34 - 8.0F - var38, COMBAT.mulAlpha(var35)); + } + + float var42 = this.y + 6.0F + 1.0F; + if (this.displayNickname) { + ge var43 = gl.MEDIUM.getFont(7.5F); + String var45 = var2.getName().getString(); + float var39 = var33 - var31 - var32 - 6.0F - var41; + var1.drawText(var43, this.clip(var43, var45, var39), var41, var42, var4.getWhite()); + } + + if (this.showPingDistance) { + ge var44 = gl.MEDIUM.getFont(6.0F); + float var46 = mc.player != null ? mc.player.distanceTo(var2) : 0.0F; + int var47 = this.pingOf(var2); + String var40 = var47 >= 0 ? var47 + "ms · " + distanceText(var46) : distanceText(var46); + var1.drawText(var44, var40, var41, var42 + 10.0F, var4.getGrayLight()); + } + + if (this.showHealthBar) { + this.drawSegmentedBar(var1, this.x + 6.0F, this.y + var8, 142.0F, var15, var16, var22, var4); + } + + if (var7 != 0) { + this.drawEquipmentRow(var1, var6, this.x + 6.0F, this.y + var10, var4); + } + + if (var17 > 0.0F) { + atb.drawRoundedBorder(var1.pose(), this.x, this.y, 154.0F, var11, pk.borderThickness(), asj.uniform(pk.radiusPanel()), COMBAT.mulAlpha(0.85F * var17)); + } + + var1.pose().popMatrix(); + this.width = 123.200005F; + this.height = var11 * 0.8F; + } + + private void renderCompactHud(aru var1, LivingEntity var2, float var3) { + mv var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + float var5 = Math.round(apo.getHealth(var2)); + float var6 = Math.max(1.0F, var2.getMaxHealth()); + float var7 = Math.min(1.0F, var5 / var6); + float var8 = this.healthAnimation.update(var7); + float var9 = this.hurtAnim.update(hurtPulse(var2.hurtTime)); + float var10 = this.useItemAnim.update(this.isItemUseActive(var2) ? 1.0F : 0.0F); + asu var11 = asu.lerp(HP_RED, HP_GREEN, var7); + arq var12 = asj.uniform(pk.radiusPanel()); + var1.pose().pushMatrix(); + var1.pose().translate(this.x + 59.25F, this.y + 18.0F); + var1.pose().scale(var3, var3); + var1.pose().translate(-(this.x + 59.25F), -(this.y + 18.0F)); + if (var9 > 0.0F) { + atb.drawShadow(var1.pose(), this.x, this.y, 118.5F, 36.0F, 7.0F, var12, COMBAT.mulAlpha(0.28F * var9)); + } + + pi.surface(var1, this.x, this.y, 118.5F, 36.0F, var12, asu.WHITE); + this.drawCompactAvatar(var1, var2, var4, var9, var10); + this.drawCompactText(var1, var2, var4); + if (this.showEquipment) { + this.drawCompactEquipment(var1, var2, var4); + } + + if (this.showHealthBar) { + this.drawCompactRing(var1, var4, var8, (int)var5, var11); + } + + if (var10 > 0.001F) { + this.drawCompactItemUse(var1, var2, var4, var10); + } + + if (var9 > 0.0F) { + atb.drawRoundedBorder(var1.pose(), this.x, this.y, 118.5F, 36.0F, pk.borderThickness(), var12, COMBAT.mulAlpha(0.85F * var9)); + } + + var1.pose().popMatrix(); + this.width = 118.5F; + this.height = 36.0F; + } + + private void drawCompactAvatar(aru var1, LivingEntity var2, mv var3, float var4, float var5) { + float var6 = this.x + 5.0F; + float var7 = this.y + 5.0F; + arq var8 = asj.all(oc.CARD); + atb.drawShadow(var1.pose(), var6, var7, 26.0F, 26.0F, 5.0F, var8, asu.BLACK.mulAlpha(0.16F)); + Identifier var9 = this.skinTextureOf(var2); + if (var9 != null) { + int var10 = Math.round((1.0F - var4 * 0.5F) * 255.0F); + atb.drawPlayerHeadWithRoundedShader( + var1.pose(), var9, var6, var7, 26.0F, var8, new asu(255, var10, var10) + ); + } else { + var1.drawSurface(aso.CONTROL, var6, var7, 26.0F, 26.0F, var8, var3.getForegroundDark()); + ge var11 = gl.MEDIUM.getFont(12.0F); + var1.drawText( + var11, + "?", + var6 + (26.0F - var11.width("?")) / 2.0F, + var7 + (26.0F - var11.height()) / 2.0F, + var3.getGrayLight() + ); + } + + if (var5 > 0.001F) { + var1.drawRoundedRect(var6, var7, 26.0F, 26.0F, var8, var3.getBackgroundColor().mulAlpha(0.78F * var5)); + } + } + + private void drawCompactText(aru var1, LivingEntity var2, mv var3) { + ge var4 = null; + ge var5 = null; + int var6 = -1399638938; + + while (true) { + switch (var6) { + case -1399638938: + default: + var4 = gl.MEDIUM.getFont(5.0F); + var1.drawText(var4, this.clip(var4, this.compactSubtitle(var2), 55.5F), this.x + 35.0F, this.y + 6.25F, var3.getColor()); + if (this.displayNickname) { + var6 = 368886699; + } else { + var6 = -1222806621; + } + break; + case -1222806621: + return; + case 368886699: + var5 = gl.MEDIUM.getFont(7.5F); + var1.drawText(var5, this.clip(var5, var2.getName().getString(), 55.5F), this.x + 35.0F, this.y + 12.25F, var3.getWhite()); + var6 = -1222806621; + } + } + } + + private void drawCompactEquipment(aru var1, LivingEntity var2, mv var3) { + ItemStack[] var4 = null; + int var5 = 0; + float var6 = 0.0F; + float var7 = 0.0F; + int var8 = 0; + ItemStack var9 = null; + int var10 = -1421739352; + + while (true) { + switch (var10) { + case -1710022068: + if (var8 < var4.length) { + var10 = -352823130; + } else { + var10 = 59224335; + } + break; + case -1421739352: + default: + var4 = this.getCompactEquipment(var2); + var5 = (arz.hudItemsVisible()) ? 1 : 0; + var6 = this.x + 35.0F; + var7 = this.y + 23.25F; + var8 = 0; + var10 = -1710022068; + break; + case -352823130: + var9 = var4[var8]; + if (!var9.isEmpty()) { + var10 = 94625712; + } else { + var10 = 1566938415; + } + break; + case -158626196: + var1.drawSurface(aso.CONTROL, var6, var7, 6.0F, 6.0F, asj.all(oc.CONTROL), var3.getForegroundDark().mulAlpha(0.3F)); + var10 = 1663698073; + break; + case 59224335: + return; + case 94625712: + if (var5 != 0) { + var10 = 1289369594; + } else { + var10 = 1663698073; + } + break; + case 1289369594: + this.drawItemIcon(var1, var9, var6, var7, 6.0F); + var10 = 1663698073; + break; + case 1566938415: + if (var8 < (1944163996 | -1944163992) + (1944163996 & -1944163992)) { + var10 = -158626196; + } else { + var10 = 1663698073; + } + break; + case 1663698073: + var6 += 8.5F; + var8++; + var10 = -1710022068; + } + } + } + + private void drawCompactRing(aru var1, mv var2, float var3, int var4, asu var5) { + float var6 = 0.0F; + float var7 = 0.0F; + ge var8 = null; + String var9 = null; + String var11 = null; + int var10 = -166975897; + + while (true) { + switch (var10) { + case -1757865689: + var11 = String.valueOf(var4); + var10 = 1721420729; + break; + case -1256951835: + atb.drawRing(var1.pose(), var6, var7, 10.0F, 2.5F, var3, var5); + var10 = 1905881507; + break; + case -1195508423: + var11 = "?"; + var10 = 1721420729; + break; + case -166975897: + default: + var6 = this.x + 101.0F; + var7 = this.y + 18.5F; + atb.drawRing(var1.pose(), var6, var7, 10.0F, 2.5F, 1.0F, var2.getForegroundDark()); + if (var3 > 0.0F) { + var10 = -1256951835; + } else { + var10 = 1905881507; + } + break; + case 1721420729: + var9 = var11; + var1.drawText(var8, var9, var6 - var8.width(var9) / 2.0F, var7 - var8.height() / 2.0F, var2.getWhite()); + return; + case 1905881507: + var8 = gl.SEMIBOLD.getFont(6.5F); + if (var4 > 0) { + var10 = -1757865689; + } else { + var10 = -1195508423; + } + } + } + } + + private void drawCompactItemUse(aru var1, LivingEntity var2, mv var3, float var4) { + ItemStack var5 = null; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + ge var9 = null; + String var10 = null; + int var11 = -278550373; + + while (true) { + switch (var11) { + case -278550373: + default: + var5 = var2.getUseItem(); + if (var5.isEmpty()) { + var11 = 1835476044; + } else { + var11 = 477734576; + } + break; + case 477734576: + var6 = 12.0F * var4; + var7 = this.x + 12.0F + (12.0F - var6) / 2.0F; + var8 = this.y + 8.0F + (12.0F - var6) / 2.0F; + if (arz.hudItemsVisible()) { + var11 = 812467968; + } else { + var11 = 750797911; + } + break; + case 750797911: + var9 = gl.SEMIBOLD.getFont(5.0F); + Locale var10000 = Locale.ROOT; + String var10001 = "%.2fs"; + Object[] var10002 = new Object[1]; + var10002[0] = useSeconds(var2, var5); + var10 = String.format(var10000, var10001, var10002); + var1.drawText(var9, var10, this.x + 12.0F + 6.0F - var9.width(var10) / 2.0F, this.y + 21.0F, var3.getWhite().mulAlpha(var4)); + return; + case 812467968: + this.drawItemIcon(var1, var5, var7, var8, var6); + var11 = 750797911; + break; + case 1835476044: + return; + } + } + } + + private void drawItemIcon(aru var1, ItemStack var2, float var3, float var4, float var5) { + var1.pose().pushMatrix(); + var1.pose().translate(var3, var4); + var1.pose().scale(var5 / 16.0F, var5 / 16.0F); + var1.item(var2, 0, (1726817597 ^ -1726817597) + ((1726817597 & -1726817597) << 1)); + var1.pose().popMatrix(); + } + + private ItemStack[] getCompactEquipment(LivingEntity var1) { + ItemStack[] var10000 = new ItemStack[6]; + var10000[0] = var1.getItemBySlot(EquipmentSlot.HEAD); + var10000[1] = var1.getItemBySlot(EquipmentSlot.CHEST); + var10000[2] = var1.getItemBySlot(EquipmentSlot.LEGS); + var10000[3] = var1.getItemBySlot(EquipmentSlot.FEET); + var10000[4] = var1.getMainHandItem(); + var10000[5] = var1.getOffhandItem(); + return var10000; + } + + private Identifier skinTextureOf(LivingEntity var1) { + Player var2 = null; + int var3 = 1016029829; + + while (true) { + switch (var3) { + case -1115036377: + var2 = (Player)var1; + return DefaultPlayerSkin.get(var2.getGameProfile()).body().texturePath(); + case -1023858544: + return null; + case -68324491: + if (var1 instanceof Player) { + var3 = -1115036377; + } else { + var3 = -1023858544; + } + break; + case 236263865: + AbstractClientPlayer var4 = (AbstractClientPlayer)var1; + return var4.getSkin().body().texturePath(); + case 1016029829: + default: + if (var1 instanceof AbstractClientPlayer) { + var3 = 236263865; + } else { + var3 = -68324491; + } + } + } + } + + private String compactSubtitle(LivingEntity var1) { + String var2 = null; + float var3 = 0.0F; + int var4 = 0; + Object var5 = null; + float var7 = 0.0F; + String var8 = null; + int var6 = -990599062; + + while (true) { + switch (var6) { + case -1853843959: + var7 = 0.0F; + var6 = -1565680798; + break; + case -1671332099: + var7 = mc.player.distanceTo(var1); + var6 = -1565680798; + break; + case -1565680798: + var3 = var7; + var4 = this.pingOf(var1); + if (var4 >= 0) { + var6 = 225320040; + } else { + var6 = -1548932620; + } + break; + case -1548932620: + var8 = distanceText(var3); + var6 = 1642653198; + break; + case -990599062: + default: + var2 = this.compactTypeLabel(var1); + if (!this.showPingDistance) { + var6 = 508275542; + } else { + var6 = 1859697154; + } + break; + case 225320040: + var8 = var4 + "ms · " + distanceText(var3); + var6 = 1642653198; + break; + case 508275542: + return var2; + case 1642653198: + var5 = var8; + return var2 + " · " + var5; + case 1859697154: + if (mc.player != null) { + var6 = -1671332099; + } else { + var6 = -1853843959; + } + } + } + } + + private String compactTypeLabel(LivingEntity var1) { + PlayerTeam var2 = null; + String var3 = null; + String var4 = null; + int var5 = 1054546919; + + while (true) { + switch (var5) { + case -1913044739: + var2 = var1.getTeam(); + if (var2 != null) { + var5 = -519248838; + } else { + var5 = -654170536; + } + break; + case -1520620628: + return var4; + case -1365216516: + if (var1 instanceof Mob) { + var5 = 1358249275; + } else { + var5 = 28554087; + } + break; + case -1150282962: + if (var1 instanceof AbstractVillager) { + var5 = -347302604; + } else { + var5 = 554545854; + } + break; + case -655489206: + var4 = var3.trim(); + if (hasReadableCharacter(var4)) { + var5 = -1520620628; + } else { + var5 = -654170536; + } + break; + case -654170536: + return "Player"; + case -519248838: + var3 = asv.removeFormatting(var2.getDisplayName().getString()); + if (var3 != null) { + var5 = -655489206; + } else { + var5 = -654170536; + } + break; + case -347302604: + return "Villager"; + case 28554087: + return "Entity"; + case 554545854: + if (var1 instanceof Animal) { + var5 = 1379703663; + } else { + var5 = -1365216516; + } + break; + case 1054546919: + default: + if (var1 instanceof Player) { + var5 = -1913044739; + } else { + var5 = -1150282962; + } + break; + case 1358249275: + return "Mob"; + case 1379703663: + return "Animal"; + } + } + } + + private static boolean hasReadableCharacter(String var0) { + int var1 = 0; + int var2 = 869163876; + + while (true) { + switch (var2) { + case -2075371141: + return (boolean)(((1)) != 0); + case -1561322077: + if (var1 < var0.length()) { + var2 = 1059949446; + } else { + var2 = 607122462; + } + break; + case -452579697: + var1++; + var2 = -1561322077; + break; + case 607122462: + return (boolean)(((0)) != 0); + case 869163876: + default: + var1 = 0; + var2 = -1561322077; + break; + case 1059949446: + if (Character.isLetterOrDigit(var0.charAt(var1))) { + var2 = -2075371141; + } else { + var2 = -452579697; + } + } + } + } + + private static String distanceText(float var0) { + Locale var10000 = Locale.ROOT; + String var10001 = "%.1fm"; + Object[] var10002 = new Object[1]; + var10002[0] = var0; + return String.format(var10000, var10001, var10002); + } + + private static float hurtPulse(int var0) { + float var1 = 0.0F; + float var3 = 0.0F; + int var2 = -641141764; + + while (true) { + switch (var2) { + case -1340456393: + var1 = ((-471120863 ^ 471120873) + ((-471120863 & 471120873) << 1) - var0) / 10.0F * 2.0F; + if (var1 > 1.0F) { + var2 = -512112255; + } else { + var2 = 577821841; + } + break; + case -823414307: + return var3; + case -641141764: + default: + if (var0 > 0) { + var2 = 1186128254; + } else { + var2 = 513000064; + } + break; + case -512112255: + var3 = 2.0F - var1; + var2 = -823414307; + break; + case 513000064: + return 0.0F; + case 577821841: + var3 = var1; + var2 = -823414307; + break; + case 1186128254: + if (var0 >= (-1304432625 ^ 1304432635) + ((-1304432625 & 1304432635) << 1)) { + var2 = 513000064; + } else { + var2 = -1340456393; + } + } + } + } + + private boolean isItemUseActive(LivingEntity var1) { + int var2 = 0; + long var3 = (-5143683239306229487L ^ 5143683239306229487L) + ((-5143683239306229487L & 5143683239306229487L) << 1); + int var6 = 0; + int var5 = 925947811; + + while (true) { + switch (var5) { + case -1745257187: + var6 = 1; + var5 = -1036772582; + break; + case -1518681437: + if (var2 != this.useStateTicks) { + var5 = -746518847; + } else { + var5 = 657917739; + } + break; + case -1036772582: + return (boolean)((var6) != 0); + case -746518847: + this.useStateEntity = var1; + this.useStateTicks = var2; + this.useStateChangedAt = var3; + return (boolean)(((1)) != 0); + case -737848051: + if (var1.getUseItem().isEmpty()) { + var5 = 615651225; + } else { + var5 = 1208070551; + } + break; + case 615651225: + this.useStateEntity = null; + this.useStateTicks = -1; + return (boolean)(((0)) != 0); + case 657917739: + if (var3 - this.useStateChangedAt < (4703540823831745936L ^ -4703540823831745186L) + ((4703540823831745936L & -4703540823831745186L) << 1)) { + var5 = -1745257187; + } else { + var5 = 1138195815; + } + break; + case 925947811: + default: + if (var1.isUsingItem()) { + var5 = -737848051; + } else { + var5 = 615651225; + } + break; + case 1138195815: + var6 = 0; + var5 = -1036772582; + break; + case 1208070551: + var2 = var1.getTicksUsingItem(); + var3 = System.currentTimeMillis(); + if (var1 == this.useStateEntity) { + var5 = -1518681437; + } else { + var5 = -746518847; + } + } + } + } + + private static float useSeconds(LivingEntity var0, ItemStack var1) { + int var2 = 0; + int var4 = 0; + int var3 = 2068868621; + + while (true) { + switch (var3) { + case 149157117: + var4 = var0.getUseItemRemainingTicks(); + var3 = 1802903855; + break; + case 326909427: + var4 = var0.getTicksUsingItem(); + var3 = 1802903855; + break; + case 1802903855: + var2 = var4; + return Math.max(0.0F, var2 / 20.0F); + case 2068868621: + default: + if (var1.getUseDuration(var0) >= (726305421 ^ -726304221) + ((726305421 & -726304221) << 1)) { + var3 = 326909427; + } else { + var3 = 149157117; + } + } + } + } + + private void drawSegmentedBar(aru var1, float var2, float var3, float var4, float var5, float var6, asu var7, mv var8) { + float var9 = 0.0F; + asu var10 = null; + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = 0; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + int var17 = 2143948192; + + while (true) { + switch (var17) { + case -1971766788: + var1.drawRoundedRect(var14, var3, var9 * var16, 5.0F, asj.pill(5.0F), var7); + var17 = -832536584; + break; + case -1326621562: + var14 = var2 + var13 * (var9 + 1.6F); + var1.drawSurface(aso.CONTROL, var14, var3, var9, 5.0F, BAR_RADIUS, var10); + var15 = Math.min(1.0F, Math.max(0.0F, var12 - var13)); + if (var15 > 0.01F) { + var17 = 285542781; + } else { + var17 = -1285445087; + } + break; + case -1285445087: + var16 = Math.min(1.0F, Math.max(0.0F, var11 - var13)); + if (var16 > 0.01F) { + var17 = -1971766788; + } else { + var17 = -832536584; + } + break; + case -1027952708: + if (var13 < (522003094 ^ -522003082) + ((522003094 & -522003082) << 1)) { + var17 = -1326621562; + } else { + var17 = 535603485; + } + break; + case -832536584: + var13++; + var17 = -1027952708; + break; + case 285542781: + var1.drawRoundedRect(var14, var3, var9 * var15, 5.0F, asj.pill(5.0F), GHOST); + var17 = -1285445087; + break; + case 535603485: + return; + case 2143948192: + default: + var9 = (var4 - 17.6F) / 12.0F; + var10 = var8.getForegroundDark(); + var11 = var5 * 12.0F; + var12 = var6 * 12.0F; + var13 = 0; + var17 = -1027952708; + } + } + } + + private void drawEquipmentRow(aru var1, ItemStack[] var2, float var3, float var4, mv var5) { + boolean var6 = arz.hudItemsVisible(); + float var7 = 0.6875F; + float var8 = (15.0F - 16.0F * var7) / 2.0F; + + for (int var9 = 0; var9 < var2.length; var9++) { + ItemStack var10 = var2[var9]; + float var11 = var3 + var9 * 18.0F; + int var12 = !var10.isEmpty() ? 1: 0; + var1.drawSurface(aso.CONTROL, var11, var4, 15.0F, 15.0F, EQUIP_RADIUS(), var5.getForegroundDark().mulAlpha(var12 != 0 ? 0.8F : 0.3F)); + if (!var10.isEmpty() && var6) { + var1.pose().pushMatrix(); + var1.pose().translate(var11 + var8, var4 + var8); + var1.pose().scale(var7, var7); + var1.item(var10, 0, (1374401627 ^ -1374401627) + ((1374401627 & -1374401627) << 1)); + ((b.c)var1) + .callDrawCooldownProgress( + var10, 0, (-1046425281 ^ 1046425281) + ((-1046425281 & 1046425281) << 1) + ); + var1.pose().popMatrix(); + if (var10.isDamageableItem() && var10.getMaxDamage() > 0) { + float var13 = 1.0F - (float)var10.getDamageValue() / var10.getMaxDamage(); + float var14 = 11.0F; + float var15 = var11 + 2.0F; + float var16 = var4 + 15.0F - 1.6F - 1.5F; + var1.drawRoundedRect(var15, var16, var14, 1.6F, asj.pill(1.6F), var5.getBackgroundColor().mulAlpha(0.6F)); + var1.drawRoundedRect(var15, var16, var14 * var13, 1.6F, asj.pill(1.6F), asu.lerp(HP_RED, HP_GREEN, var13)); + } + } + } + } + + private ItemStack[] getEquipment(LivingEntity var1) { + ItemStack[] var10000 = new ItemStack[6]; + var10000[0] = var1.getMainHandItem(); + var10000[1] = var1.getOffhandItem(); + var10000[2] = var1.getItemBySlot(EquipmentSlot.HEAD); + var10000[3] = var1.getItemBySlot(EquipmentSlot.CHEST); + var10000[4] = var1.getItemBySlot(EquipmentSlot.LEGS); + var10000[5] = var1.getItemBySlot(EquipmentSlot.FEET); + return var10000; + } + + private boolean hasAnyEquipment(ItemStack[] var1) { + ItemStack[] var2 = null; + int var3 = 0; + int var4 = 0; + Object var5 = null; + int var6 = 1908326835; + + while (true) { + switch (var6) { + case -1599474745: + var4++; + var6 = -1201457546; + break; + case -1201457546: + if (var4 < var3) { + var6 = -294790900; + } else { + var6 = -585959085; + } + break; + case -585959085: + return (boolean)(((0)) != 0); + case -393468087: + return (boolean)(((1)) != 0); + case -294790900: + var5 = var2[var4]; + if (!var5.isEmpty()) { + var6 = -393468087; + } else { + var6 = -1599474745; + } + break; + case 1908326835: + default: + var2 = var1; + var3 = var2.length; + var4 = 0; + var6 = -1201457546; + } + } + } + + private int pingOf(LivingEntity var1) { + Player var2 = null; + PlayerInfo var3 = null; + int var5 = 0; + int var4 = 1763510899; + + while (true) { + switch (var4) { + case -1802245608: + var5 = var3.getLatency(); + var4 = 237725947; + break; + case -867300441: + return -1; + case -204344681: + var3 = mc.player.connection.getPlayerInfo(var2.getUUID()); + if (var3 != null) { + var4 = -1802245608; + } else { + var4 = 811260384; + } + break; + case -184625667: + if (mc.player.connection == null) { + var4 = -867300441; + } else { + var4 = -204344681; + } + break; + case 237725947: + return var5; + case 811260384: + var5 = -1; + var4 = 237725947; + break; + case 1011447053: + var2 = (Player)var1; + if (mc.player != null) { + var4 = -184625667; + } else { + var4 = -867300441; + } + break; + case 1763510899: + default: + if (var1 instanceof Player) { + var4 = 1011447053; + } else { + var4 = -867300441; + } + } + } + } + + private String clip(ge var1, String var2, float var3) { + String var4 = null; + int var5 = -2022133947; + + while (true) { + switch (var5) { + case -2081323373: + var4 = var4.substring( + 0, var4.length() - ((-1201173456 ^ 1201173457) + ((-1201173456 & 1201173457) << 1)) + ); + var5 = 1393206246; + break; + case -2022133947: + default: + if (var1.width(var2) <= var3) { + var5 = -242517534; + } else { + var5 = 1571503488; + } + break; + case -1702387110: + return var4 + "..."; + case -242517534: + return var2; + case -89305583: + if (var1.width(var4 + "...") > var3) { + var5 = -2081323373; + } else { + var5 = -1702387110; + } + break; + case 1393206246: + if (var4.length() > 0) { + var5 = -89305583; + } else { + var5 = -1702387110; + } + break; + case 1571503488: + var4 = var2; + var5 = 1393206246; + } + } + } + + @Override + public boolean hasSettings() { + return (boolean)(((1)) != 0); + } + + private float settingsX() { + return this.x; + } + + private float settingsY() { + float var1 = 0.0F; + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + int var6 = -1673576394; + + while (true) { + switch (var6) { + case -1932578982: + return var2; + case -1673576394: + default: + var1 = 6.0F * this.getScale(); + var2 = this.y + this.height + var1; + var3 = this.settingsHeight() * this.getScale(); + var4 = vm.hudHeight(); + if (var2 + var3 > var4) { + var6 = 466523537; + } else { + var6 = -1932578982; + } + break; + case -1457217556: + return var5; + case 466523537: + var5 = this.y - var1 - var3; + if (var5 >= 0.0F) { + var6 = -1457217556; + } else { + var6 = -1932578982; + } + } + } + } + + private float styleRowYUnscaled() { + return 28.0F; + } + + private float styleSegmentXUnscaled() { + return 68.0F; + } + + private static float styleSegmentWidth() { + return 76.0F / qr.values().length; + } + + private float rowYUnscaled(int var1) { + return 45.0F + var1 * 13.0F; + } + + private float settingsHeight() { + return 104.0F; + } + + @Override + public boolean isOverSettings(double var1, double var3) { + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + int var9 = 0; + int var8 = -985467370; + + while (true) { + switch (var8) { + case -985467370: + default: + if (!this.isSettingsVisible()) { + var8 = -631868152; + } else { + var8 = 2093938758; + } + break; + case -631868152: + return (boolean)(((0)) != 0); + case 159678180: + if (var3 <= var6 + this.settingsHeight() * var7) { + var8 = 2094938951; + } else { + var8 = 1425889281; + } + break; + case 475005341: + if (var1 <= var5 + 154.0F * var7) { + var8 = 1903429329; + } else { + var8 = 1425889281; + } + break; + case 1274730241: + return (boolean)((var9) != 0); + case 1425889281: + var9 = 0; + var8 = 1274730241; + break; + case 1903429329: + if (var3 >= var6) { + var8 = 159678180; + } else { + var8 = 1425889281; + } + break; + case 2093938758: + var5 = this.settingsX(); + var6 = this.settingsY(); + var7 = this.getScale(); + if (var1 >= var5) { + var8 = 475005341; + } else { + var8 = 1425889281; + } + break; + case 2094938951: + var9 = 1; + var8 = 1274730241; + } + } + } + + @Override + public boolean settingsMouseClicked(double var1, double var3, int var5) { + float var6 = this.settingsX(); + float var7 = this.settingsY(); + float var8 = this.getScale(); + float var9 = (float)(var1 - var6) / var8; + float var10 = (float)(var3 - var7) / var8; + if (var9 >= 138.0F && var9 <= 150.0F && var10 >= 5.0F && var10 <= 17.0F) { + this.setSettingsOpen((boolean)((((585239422 | -585239422) + (585239422 & -585239422))) != 0)); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + + return (boolean)(((1)) != 0); + } else { + float var11 = this.styleRowYUnscaled(); + if (var10 >= var11 && var10 <= var11 + 17.0F && var9 >= 0.0F && var9 <= 154.0F) { + qr[] var14 = qr.values(); + float var15 = this.styleSegmentXUnscaled(); + this.style = var9 < var15 + ? var14[(this.style.ordinal() + (283698739 | -283698738) + (283698739 & -283698738)) % var14.length] + : var14[Math.min(var14.length - (1), (int)((var9 - var15) / styleSegmentWidth()))]; + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + + return (boolean)(((1)) != 0); + } else { + for (int var12 = 0; + var12 < 4; + var12++ + ) { + float var13 = this.rowYUnscaled(var12); + if (var10 >= var13 && var10 <= var13 + 13.0F && var9 >= 0.0F && var9 <= 154.0F) { + switch (var12) { + case 0: + this.displayNickname = (boolean)(((!this.displayNickname + ? 1: (-1883642054 ^ 1883642054) + ((-1883642054 & 1883642054) << 1))) != 0); + break; + case 1: + this.showPingDistance = (boolean)(((!this.showPingDistance + ? 1: (-1701065671 ^ 1701065671) + ((-1701065671 & 1701065671) << 1))) != 0); + break; + case 2: + this.showEquipment = (boolean)(((!this.showEquipment + ? 1: (1265866615 | -1265866615) + (1265866615 & -1265866615))) != 0); + break; + case 3: + this.showHealthBar = (boolean)(((!this.showHealthBar + ? 1: (-1647031787 ^ 1647031787) + ((-1647031787 & 1647031787) << 1))) != 0); + } + + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + + return (boolean)(((1)) != 0); + } + } + + return (boolean)(((1)) != 0); + } + } + } + + @Override + public boolean isSettingsVisible() { + int var2 = 0; + int var1 = -1237371862; + + while (true) { + switch (var1) { + case -1845394744: + var2 = 1; + var1 = 193902446; + break; + case -1237371862: + default: + if (!this.isSettingsOpen()) { + var1 = -74061745; + } else { + var1 = -1845394744; + } + break; + case -74061745: + if (this.settingsAnimation.value() > 0.003F) { + var1 = -1845394744; + } else { + var1 = 447286682; + } + break; + case 193902446: + return (boolean)((var2) != 0); + case 447286682: + var2 = 0; + var1 = 193902446; + } + } + } + + @Override + public void renderSettings(aru var1) { + float var2 = this.settingsAnimation.update(this.isSettingsOpen() ? 1.0F : 0.0F); + if (!(var2 <= 0.003F)) { + float var3 = this.getRenderScale(); + float var4 = this.settingsX(); + float var5 = this.settingsY(); + float var6 = 154.0F; + float var7 = this.settingsHeight(); + mv var8 = bz.getInstance().getThemeManager().getCurrentTheme(); + asu var9 = var8.getColor(); + float var10 = Math.min(1.0F, var2 * 1.4F); + gt.endBatch(); + Matrix3x2fStack var11 = var1.pose(); + var11.pushMatrix(); + var11.translate(var4 + var6 * var3 / 2.0F, var5); + var11.scale(var3 * var2, var3 * var2); + var11.translate(-(var4 + var6 / 2.0F), -var5); + asu var12 = var8.getForegroundColor().mulAlpha(var10 * 0.6F); + asu var13 = var8.getForegroundDark().mulAlpha(var10 * 0.6F); + if (var2 > 0.05F) { + atb.drawShadow(var11, var4 - 0.5F, var5 - 0.5F, var6 + 1.0F, var7 + 1.0F, 4.0F, asj.all(oc.PANEL), var8.getColor().mulAlpha(var10 * 0.075F)); + } + + atb.drawAcrylicHud(var11, var4, var5, var6, var7, asj.all(oc.PANEL), asu.WHITE.mulAlpha(var10)); + var1.drawSurface(aso.POPUP, var4, var5, var6, var7, POPUP_RADIUS(), var13); + var1.drawSurface(aso.CONTROL, var4, var5, var6, 22.0F, POPUP_TOP_RADIUS(), var12); + atb.drawRoundedBorder(var11, var4, var5, var6, var7, pk.borderHairline(), asj.all(oc.PANEL), var8.getForegroundStroke().mulAlpha(var10)); + float var14 = 1.0F; + atb.drawRoundedBorder( + var11, + var4 - var14, + var5 - var14, + var6 + var14 * 2.0F, + var7 + var14 * 2.0F, + pk.borderThickness(), + asj.outer(oc.PANEL, var14), + var8.getColor().mulAlpha(var10 * 0.8F) + ); + asu var15 = var8.getWhite().mulAlpha(var10); + asu var16 = var8.getGrayLight().mulAlpha(var10); + asu var17 = var9.mulAlpha(var10); + float var18 = var4 + this.styleSegmentXUnscaled(); + float var19 = var5 + this.styleRowYUnscaled() + 2.5F; + float var20 = styleSegmentWidth(); + arq var21 = asj.pill(12.0F); + var1.drawSurface(aso.CONTROL, var18, var19, 76.0F, 12.0F, var21, var16.mulAlpha(0.5F)); + var1.drawRoundedRect(var18 + 1.0F + var20 * this.styleAnim.update(this.style.ordinal()), var19 + 1.0F, var20 - 2.0F, 10.0F, var21, var17); + gt.beginBatch(); + var1.drawText( + gl.MEDIUM.getFont(7.5F), + "Target HUD", + var4 + 8.0F, + var5 + 11.0F - gl.MEDIUM.getFont(7.5F).height() / 2.0F, + var15 + ); + var1.drawText( + gl.ICONS.getFont(6.0F), + "B", + var4 + var6 - 14.0F, + var5 + 11.0F - gl.ICONS.getFont(6.0F).height() / 2.0F, + var16 + ); + String[] var10000 = new String[4]; + var10000[0] = "Display nickname"; + var10000[1] = "Ping & distance"; + var10000[2] = "Show equipment"; + var10000[3] = "Show health bar"; + String[] var22 = var10000; + ge var23 = gl.MEDIUM.getFont(7.0F); + var1.drawText( + var23, + "Style", + var4 + 10.0F, + var5 + this.styleRowYUnscaled() + 8.5F - var23.height() / 2.0F, + var15 + ); + ge var24 = gl.MEDIUM.getFont(6.5F); + qr[] var25 = qr.values(); + + for (int var26 = 0; var26 < var25.length; var26++) { + String var27 = var25[var26].label(); + var1.drawText( + var24, + var27, + var18 + var20 * var26 + (var20 - var24.width(var27)) / 2.0F, + var19 + (12.0F - var24.height()) / 2.0F, + var25[var26] == this.style ? var15 : var16 + ); + } + + for (int var40 = 0; var40 < var22.length; var40++) { + float var42 = var5 + this.rowYUnscaled(var40); + float var28 = var42 + 6.5F; + var1.drawText(var23, var22[var40], var4 + 10.0F, var28 - var23.height() / 2.0F, var15); + } + + gt.endBatch(); + + for (int var41 = 0; var41 < var22.length; var41++) { + float var43 = var5 + this.rowYUnscaled(var41); + float var44 = var43 + 6.5F; + int var29 = 0; + float var30 = 0.0F; + switch (var41) { + case 0: + boolean var48 = this.displayNickname; + var30 = this.nickAnim.update(var48 ? 1.0F : 0.0F); + break; + case 1: + boolean var47 = this.showPingDistance; + var30 = this.pingAnim.update(var47 ? 1.0F : 0.0F); + break; + case 2: + boolean var46 = this.showEquipment; + var30 = this.equipAnim.update(var46 ? 1.0F : 0.0F); + break; + case 3: + boolean var45 = this.showHealthBar; + var30 = this.healthBarAnim.update(var45 ? 1.0F : 0.0F); + } + + float var31 = 16.0F; + float var32 = 8.0F; + float var33 = var4 + var6 - 10.0F - var31; + float var34 = var44 - var32 / 2.0F; + asu var35 = var16.mulAlpha(0.5F).mix(var17, var30); + var1.drawSurface(aso.CONTROL, var33, var34, var31, var32, asj.pill(var32), var35); + float var36 = 6.0F; + float var37 = var31 - var36 - 2.0F; + float var38 = var33 + 1.0F + var37 * var30; + float var39 = var34 + 1.0F; + var1.drawRoundedRect(var38, var39, var36, var36, asj.pill(var36), var8.getWhite().mulAlpha(var10)); + } + + var11.popMatrix(); + gt.beginBatch(); + } + } + + @Override + public JsonObject save() { + JsonObject var1 = super.save(); + var1.addProperty("style", this.style.name()); + var1.addProperty("displayNickname", this.displayNickname); + var1.addProperty("showPingDistance", this.showPingDistance); + var1.addProperty("showEquipment", this.showEquipment); + var1.addProperty("showHealthBar", this.showHealthBar); + return var1; + } + + @Override + public void load(JsonObject var1) { + String var2 = null; + qr[] var3 = null; + int var4 = 0; + int var5 = 0; + qr var6 = null; + int var7 = -1342216212; + + while (true) { + switch (var7) { + case -1937765265: + this.showHealthBar = var1.get("showHealthBar") + .getAsBoolean(); + var7 = 2084807763; + break; + case -1671890386: + var2 = var1.get("style").getAsString(); + var3 = qr.values(); + var4 = var3.length; + var5 = 0; + var7 = 377819993; + break; + case -1584552630: + this.showEquipment = var1.get("showEquipment") + .getAsBoolean(); + var7 = 86304680; + break; + case -1342216212: + default: + super.load(var1); + if (var1.has("style")) { + var7 = -1671890386; + } else { + var7 = 1233861205; + } + break; + case -206471341: + if (var1.has("showPingDistance")) { + var7 = 1720629204; + } else { + var7 = 828211977; + } + break; + case 69727451: + var6 = var3[var5]; + if (var6.name().equals(var2)) { + var7 = 1812920515; + } else { + var7 = 1042339046; + } + break; + case 86304680: + if (var1.has("showHealthBar")) { + var7 = -1937765265; + } else { + var7 = 2084807763; + } + break; + case 377819993: + if (var5 < var4) { + var7 = 69727451; + } else { + var7 = 1233861205; + } + break; + case 828211977: + if (var1.has("showEquipment")) { + var7 = -1584552630; + } else { + var7 = 86304680; + } + break; + case 1042339046: + var5++; + var7 = 377819993; + break; + case 1233861205: + if (var1.has("displayNickname")) { + var7 = 1360655176; + } else { + var7 = -206471341; + } + break; + case 1360655176: + this.displayNickname = var1.get( + "displayNickname" + ) + .getAsBoolean(); + var7 = -206471341; + break; + case 1720629204: + this.showPingDistance = var1.get("showPingDistance") + .getAsBoolean(); + var7 = 828211977; + break; + case 1812920515: + this.style = var6; + var7 = 1233861205; + break; + case 2084807763: + return; + } + } + } + + public void setTarget(LivingEntity var1) { + int var2 = 323306172; + + while (true) { + switch (var2) { + case -1493025692: + this.target = var1; + var2 = 625256012; + break; + case 323306172: + default: + if (var1 == null) { + var2 = 1340862047; + } else { + var2 = 1056034857; + } + break; + case 449736961: + this.toggleAnimation.update(1.0F); + var2 = 625256012; + break; + case 625256012: + return; + case 1056034857: + if (var1 != this.target) { + var2 = 1645852721; + } else { + var2 = 449736961; + } + break; + case 1152875525: + this.target = null; + var2 = 625256012; + break; + case 1340862047: + this.toggleAnimation.update(0.0F); + if (this.toggleAnimation.value() == 0.0F) { + var2 = 1152875525; + } else { + var2 = 625256012; + } + break; + case 1645852721: + this.toggleAnimation.update(0.0F); + if (this.toggleAnimation.value() == 0.0F) { + var2 = -1493025692; + } else { + var2 = 625256012; + } + } + } + } +} diff --git a/src/main/java/defpackage/qt.java b/src/main/java/defpackage/qt.java new file mode 100644 index 0000000..19cc698 --- /dev/null +++ b/src/main/java/defpackage/qt.java @@ -0,0 +1,589 @@ +package defpackage; + +import com.mojang.authlib.GameProfile; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.resources.DefaultPlayerSkin; +import net.minecraft.resources.Identifier; +import net.minecraft.world.entity.player.Player; + +public class qt extends qx { + private static final String TITLE = "Voice Chat"; + private static final String HEADER_ICON = "u"; + private static final String CHEVRON_ICON = "M"; + private static final String LOCAL_FALLBACK_NAME = "You"; + private static final String UNKNOWN_NAME = "Unknown"; + private static final String WHISPER_LABEL = "whisper"; + private static final String MUTED_LABEL = "Muted"; + private static final String DEAFENED_LABEL = "Deafened"; + private static final String IDLE_LABEL = "Idle"; + private static final String DISTANCE_SUFFIX = "m"; + private static final float ROW_HEIGHT = 18.0F; + private static final float HEADER_HEIGHT = 18.0F; + private static final float EDGE_PAD = 8.0F; + private static final float ICON_GAP = 4.0F; + private static final float HEAD_SIZE = 9.0F; + private static final float HEAD_RADIUS = 2.0F; + private static final float METER_WIDTH = 30.0F; + private static final float METER_HEIGHT = 3.0F; + private static final float METER_GAP = 6.0F; + private static final float PEAK_WIDTH = 1.5F; + private static final float MIN_WIDTH = 96.0F; + private static final float FONT_SIZE = 6.0F; + private static final float TITLE_FONT_SIZE = 6.0F; + private static final int ROW_STRIPE_ALPHA = 20; + private static final float TRACK_ALPHA = 0.18F; + private static final float WHISPER_ALPHA = 0.65F; + private static final int MAX_ROWS = 6; + private static final int DISTANCE_LABEL_LIMIT = 999; + private final ct visibility = ct.layout(ob.FAST, 0.0F); + private final pj smoothing = new pj(); + private float animWidth; + private final List visible = new ArrayList<>(6); + + public qt(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + } + + @Override + public void render(aru var1) { + this.collectSpeakers(); + this.smoothing.beginFrame(); + boolean var2 = mc.gui.screen() instanceof ChatScreen; + int var3 = !this.visible.isEmpty() ? 1: 0; + this.visibility + .update( + (boolean)(((!var2 && var3 == 0 + ? 0: (1509238375 | -1509238374) + (1509238375 & -1509238374)) + ) != 0)); + mv var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + ge var5 = gl.MEDIUM.getFont(6.0F); + ge var6 = gl.MEDIUM.getFont(6.0F); + ge var7 = gl.ICONS.getFont(6.0F); + String var8 = this.statusLabel(); + float var9 = 8.0F + + var7.width("u") + + 4.0F + + var6.width("Voice Chat") + + 6.0F + + var5.width(var8) + + 4.0F + + var7.width("M") + + 8.0F; + float var10 = 96.0F; + + for (int var11 = 0; var11 < this.visible.size(); var11++) { + var10 = Math.max(var10, this.rowWidth(var5, this.visible.get(var11))); + } + + this.animWidth = this.smoothing.width(this.animWidth, Math.max(var9, var10)); + float var16 = this.animWidth; + float var12 = 18.0F + 18.0F * this.visible.size(); + this.width = var16; + this.height = var12; + float var13 = this.visibility.value(); + if (!(var13 <= 0.0F)) { + var1.pushMatrix(); + var1.pose().translate(this.x + var16 / 2.0F, this.y + var12 / 2.0F); + var1.pose().scale(var13, var13); + var1.pose().translate(-(this.x + var16 / 2.0F), -(this.y + var12 / 2.0F)); + pi.surface(var1, this.x, this.y, var16, var12, asj.uniform(pk.radiusPanel()), asu.WHITE); + var1.drawText( + var7, "u", this.x + 8.0F, this.y + (18.0F - var7.height()) / 2.0F, var4.getWhite() + ); + var1.drawText( + var6, + "Voice Chat", + this.x + 8.0F + var7.width("u") + 4.0F, + this.y + (18.0F - var6.height()) / 2.0F, + var4.getWhite() + ); + var1.drawText( + var7, + "M", + this.x + var16 - 8.0F - var7.width("M"), + this.y + (18.0F - var7.height()) / 2.0F, + var4.getWhiteGray() + ); + var1.drawText( + var5, + var8, + this.x + var16 - 8.0F - var7.width("M") - 4.0F - var5.width(var8), + this.y + (18.0F - var5.height()) / 2.0F, + this.statusColor(var4) + ); + var1.clipTrailingDown(this.x, this.y, this.x + var16, this.y + var12, ars.revealFade()); + float var14 = this.y + 18.0F; + + for (int var15 = 0; var15 < this.visible.size(); var15++) { + this.renderRow(var1, var4, var5, this.visible.get(var15), var14, var16, var15); + var14 += 18.0F; + } + + var1.popClip(); + var1.popMatrix(); + } + } + + private void collectSpeakers() { + aoy var1 = null; + List var2 = null; + int var3 = 0; + aoy var4 = null; + int var5 = 1128419125; + + while (true) { + switch (var5) { + case -2098587243: + return; + case -1939993913: + var3++; + var5 = 1531623657; + break; + case -1251400533: + var2 = aox.getSpeakers(); + var3 = 0; + var5 = 1531623657; + break; + case -1207510433: + this.visible.add(var1); + var5 = -1251400533; + break; + case 382610676: + var4 = (aoy)var2.get(var3); + if (var4.getVisibility() > 0.0F) { + var5 = 819039051; + } else { + var5 = -1939993913; + } + break; + case 383182425: + aox.update(); + var1 = aox.getLocalSpeaker(); + if (var1.getVisibility() > 0.0F) { + var5 = -1207510433; + } else { + var5 = -1251400533; + } + break; + case 819039051: + this.visible.add(var4); + var5 = -1939993913; + break; + case 938320357: + return; + case 1128419125: + default: + this.visible.clear(); + if (!aox.isAvailable()) { + var5 = -2098587243; + } else { + var5 = 383182425; + } + break; + case 1531623657: + if (var3 < var2.size()) { + var5 = 1783650964; + } else { + var5 = 938320357; + } + break; + case 1783650964: + if (this.visible.size() < (-1354242465 | 1354242471) + (-1354242465 & 1354242471)) { + var5 = 382610676; + } else { + var5 = 938320357; + } + } + } + } + + private void renderRow(aru var1, mv var2, ge var3, aoy var4, float var5, float var6, int var7) { + float var8 = var4.getVisibility(); + UUID var9 = this.resolveId(var4); + int var10 = !var4.isWhispering() && !aox.isWhispering(var4.isLocal() ? null : var9) + ? 0: 1; + if (var7 % 2== 0) { + asu var11 = var2.getColor().withAlpha(20).mulAlpha(var8); + int var12 = var7 == this.visible.size() - 1? 1: 0; + var1.drawSurface(aso.ROW, this.x + 2.0F, var5, var6 - 4.0F, var12 != 0 ? 16.0F : 18.0F, var12 != 0 ? asj.bottom(oc.CHIP) : arq.ZERO, var11); + } + + float var17 = var5 + 4.5F; + atb.drawPlayerHeadWithRoundedShader(var1.pose(), this.skinOf(var9), this.x + 8.0F - 1.0F, var17, 9.0F, asj.uniform(2.0F), asu.WHITE.mulAlpha(var8)); + asu var18 = (var10 != 0 ? var2.getWhiteGray() : var2.getWhite()).mulAlpha(var8); + float var13 = this.x + 8.0F - 1.0F + 9.0F + 4.0F; + var1.drawText(var3, this.nameOf(var9, var4), var13, var5 + (18.0F - var3.height()) / 2.0F, var18); + float var14 = this.x + var6 - 8.0F - 30.0F; + float var15 = var5 + 7.5F; + this.renderMeter(var1, var2, var4, var14, var15, (boolean)((var10) != 0), var8); + String var16 = this.detailOf(var9, var4, (boolean)((var10) != 0)); + if (!var16.isEmpty()) { + var1.drawText(var3, var16, var14 - 6.0F - var3.width(var16), var5 + (18.0F - var3.height()) / 2.0F, var2.getWhiteGray().mulAlpha(var8)); + } + } + + private void renderMeter(aru var1, mv var2, aoy var3, float var4, float var5, boolean var6, float var7) { + arq var8 = asj.pill(3.0F); + var1.drawSurface(aso.CONTROL, var4, var5, 30.0F, 3.0F, var8, var2.getWhiteGray().mulAlpha(0.18F * var7)); + asu var9 = var2.getColor().mulAlpha((var6 ? 0.65F : 1.0F) * var7); + float var10 = 30.0F * Math.min(1.0F, var3.getLevel()); + if (var10 > 0.0F) { + var1.drawRoundedRect(var4, var5, Math.max(3.0F, var10), 3.0F, var8, var9); + } + + float var11 = Math.min(1.0F, var3.getPeak()); + if (var11 > 0.0F) { + float var12 = var4 + Math.min(28.5F, 30.0F * var11); + var1.drawRoundedRect(var12, var5, 1.5F, 3.0F, var8, var2.getWhite().mulAlpha(var7)); + } + } + + private float rowWidth(ge var1, aoy var2) { + UUID var3 = null; + int var4 = 0; + String var5 = null; + float var6 = 0.0F; + UUID var8 = null; + int var9 = 0; + float var10 = 0.0F; + int var7 = 684087968; + + while (true) { + switch (var7) { + case -1535940742: + var9 = 0; + var7 = 1616709208; + break; + case -870235554: + if (var2.isLocal()) { + var7 = 271416725; + } else { + var7 = 1176034396; + } + break; + case -182760657: + var10 = var1.width(var5) + 6.0F; + var7 = 2111379024; + break; + case 271416725: + var8 = null; + var7 = 1064133090; + break; + case 437617209: + var10 = 0.0F; + var7 = 2111379024; + break; + case 543304617: + var9 = 1; + var7 = 1616709208; + break; + case 684087968: + default: + var3 = this.resolveId(var2); + if (!var2.isWhispering()) { + var7 = -870235554; + } else { + var7 = 543304617; + } + break; + case 1064133090: + if (aox.isWhispering(var8)) { + var7 = 543304617; + } else { + var7 = -1535940742; + } + break; + case 1176034396: + var8 = var3; + var7 = 1064133090; + break; + case 1616709208: + var4 = var9; + var5 = this.detailOf(var3, var2, (boolean)((var4) != 0)); + if (var5.isEmpty()) { + var7 = 437617209; + } else { + var7 = -182760657; + } + break; + case 2111379024: + var6 = var10; + return 20.0F + var1.width(this.nameOf(var3, var2)) + 6.0F + var6 + 30.0F + 8.0F; + } + } + } + + private UUID resolveId(aoy var1) { + UUID var3 = null; + int var2 = -1032587899; + + while (true) { + switch (var2) { + case -1843686032: + if (mc.player == null) { + var2 = 1499466794; + } else { + var2 = 818189310; + } + break; + case -1824464638: + return var1.getId(); + case -1433059342: + return var3; + case -1032587899: + default: + if (!var1.isLocal()) { + var2 = -1824464638; + } else { + var2 = -1843686032; + } + break; + case 818189310: + var3 = mc.player.getUUID(); + var2 = -1433059342; + break; + case 1499466794: + var3 = null; + var2 = -1433059342; + } + } + } + + private String nameOf(UUID var1, aoy var2) { + if (var1 == null) { + return var2.isLocal() + ? "You" + : "Unknown"; + } + + if (mc.getConnection() != null) { + PlayerInfo var3 = mc.getConnection().getPlayerInfo(var1); + if (var3 != null) { + GameProfile var4 = var3.getProfile(); + if (var4 != null && var4.name() != null) { + return var4.name(); + } + } + } + + Player var5 = mc.level == null ? null : mc.level.getPlayerByUUID(var1); + if (var5 != null) { + return var5.getGameProfile().name(); + } else { + return var2.isLocal() + ? "You" + : "Unknown"; + } + } + + private String detailOf(UUID var1, aoy var2, boolean var3) { + Player var4 = null; + int var5 = 0; + int var6 = -1965839092; + + while (true) { + switch (var6) { + case -2054700860: + if (mc.level == null) { + var6 = 525430844; + } else { + var6 = -81134528; + } + break; + case -1965839092: + default: + if (var3) { + var6 = -1149006129; + } else { + var6 = -761957773; + } + break; + case -1772208771: + if (var1 != null) { + var6 = 1570601999; + } else { + var6 = 525430844; + } + break; + case -1149006129: + return "whisper"; + case -835314969: + return ""; + case -761957773: + if (!var2.isLocal()) { + var6 = -1772208771; + } else { + var6 = 525430844; + } + break; + case -81134528: + var4 = mc.level.getPlayerByUUID(var1); + if (var4 == null) { + var6 = 385895481; + } else { + var6 = 592562542; + } + break; + case -69521164: + return var5 + "m"; + case 385895481: + return ""; + case 525430844: + return ""; + case 592562542: + var5 = Math.round(mc.player.distanceTo(var4)); + if (var5 > (-267335742 | 267336741) + (-267335742 & 267336741)) { + var6 = -835314969; + } else { + var6 = -69521164; + } + break; + case 1570601999: + if (mc.player != null) { + var6 = -2054700860; + } else { + var6 = 525430844; + } + } + } + } + + private Identifier skinOf(UUID var1) { + if (var1 != null) { + if (mc.getConnection() != null) { + PlayerInfo var2 = mc.getConnection().getPlayerInfo(var1); + if (var2 != null && var2.getSkin() != null) { + return var2.getSkin().body().texturePath(); + } + } + + if ((mc.level == null ? null : mc.level.getPlayerByUUID(var1)) instanceof AbstractClientPlayer var3 && var3.getSkin() != null) { + return var3.getSkin().body().texturePath(); + } + } + + return DefaultPlayerSkin.getDefaultSkin().body().texturePath(); + } + + private String statusLabel() { + String var1 = null; + String var3 = null; + String var4 = null; + int var2 = 867803066; + + while (true) { + switch (var2) { + case -2084132593: + return var4; + case -1745286897: + if (aox.isLocalMuted()) { + var2 = -997583845; + } else { + var2 = -1499640384; + } + break; + case -1499640384: + var1 = aox.getGroupName(); + if (var1 != null) { + var2 = -950479992; + } else { + var2 = -708774167; + } + break; + case -1143493240: + return "Deafened"; + case -997583845: + return "Muted"; + case -950479992: + if (!var1.isEmpty()) { + var2 = 1798464229; + } else { + var2 = -708774167; + } + break; + case -708774167: + if (aox.isConnected()) { + var2 = -228078887; + } else { + var2 = 122096486; + } + break; + case -265048917: + if (aox.isLocalDisabled()) { + var2 = -1143493240; + } else { + var2 = -1745286897; + } + break; + case -228078887: + var4 = String.valueOf(this.visible.size()); + var2 = -2084132593; + break; + case 122096486: + var4 = "Idle"; + var2 = -2084132593; + break; + case 220034341: + if (aox.isModPresent()) { + var2 = 606571084; + } else { + var2 = 285636486; + } + break; + case 261266431: + return var3; + case 285636486: + var3 = ""; + var2 = 261266431; + break; + case 606571084: + var3 = "Idle"; + var2 = 261266431; + break; + case 867803066: + default: + if (!aox.isAvailable()) { + var2 = 220034341; + } else { + var2 = -265048917; + } + break; + case 1798464229: + return var1; + } + } + } + + private asu statusColor(mv var1) { + int var2 = 544443154; + + while (true) { + switch (var2) { + case 345442489: + if (aox.isLocalMuted()) { + var2 = 817297144; + } else { + var2 = 649520675; + } + break; + case 544443154: + default: + if (!aox.isLocalDisabled()) { + var2 = 345442489; + } else { + var2 = 817297144; + } + break; + case 649520675: + return var1.getWhiteGray(); + case 817297144: + return asu.RED; + } + } + } +} diff --git a/src/main/java/defpackage/qu.java b/src/main/java/defpackage/qu.java new file mode 100644 index 0000000..62ef6f2 --- /dev/null +++ b/src/main/java/defpackage/qu.java @@ -0,0 +1,547 @@ +package defpackage; + +import com.google.gson.JsonObject; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.client.model.geom.builders.UVPair; +import net.minecraft.util.Mth; + +public class qu extends qx { + private static final long POPUP_TIMEOUT_MS = 12000L; + private static final long ACCEPTED_TIMEOUT_MS = 6000L; + private static final String ISLAND_LAYOUT_KEY = "island"; + private final qy island = new qy(); + private final ct popupSlide = ct.layout(ob.SLOW, 0.0F); + private amz activePopup; + private long popupShownAt; + private boolean popupLeaving; + private float acceptX; + private float acceptY; + private float declineX; + private float declineY; + private float popupButtonSize; + private float msgX; + private float msgY; + private float msgW; + private float msgH; + private float overlayLeft; + private float overlayTop; + private float overlayRight; + private float overlayBottom; + private boolean overlayMeasured; + private qz islandShape; + + public qu(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + super(var1, var2, var3, var4, var5, var6, var7, var8); + } + + @Override + public JsonObject save() { + JsonObject var1 = super.save(); + var1.addProperty( + "island", + Boolean.valueOf((boolean)((((-1779829967 ^ 1779829968) + ((-1779829967 & 1779829968) << 1))) != 0)) + ); + return var1; + } + + @Override + public void load(JsonObject var1) { + int var2 = 151521444; + + while (true) { + switch (var2) { + case -404332231: + this.anchorDefault(); + var2 = 1807435770; + break; + case 151521444: + default: + super.load(var1); + if (!var1.has("island")) { + var2 = -404332231; + } else { + var2 = 1807435770; + } + break; + case 1807435770: + return; + } + } + } + + @Override + public void render(aru var1) { + UVPair var2 = arz.getMouse(vm.hudScale()); + this.island + .render(var1, this.x, this.y, this.localX(var2.u()), this.localY(var2.v()), mc.gui.screen() instanceof ChatScreen, 1.0F - ri.getInstance().takeover()); + this.width = this.island.getWidth(); + this.height = this.island.getHeight(); + this.reanchorOnWidthChange(); + this.overlayLeft = this.island.getVisualX(); + this.overlayTop = this.island.getVisualY(); + this.overlayRight = this.overlayLeft + this.island.getVisualWidth(); + this.overlayBottom = this.overlayTop + this.island.getVisualHeight(); + this.overlayMeasured = (boolean)(((1)) != 0); + this.islandShape = new qz( + this.island.getShapeX(), + this.island.getShapeY(), + this.island.getShapeWidth(), + this.island.getShapeHeight(), + this.island.getShapeRadius(), + this.island.getVisualWidth() + ); + mv var3 = bz.getInstance().getThemeManager().getCurrentTheme(); + this.renderFriendPopup(var1, var3, pi.textFont(), pi.iconFont(), this.height, pk.radiusPanel()); + } + + private void openPopupAnim() { + this.popupSlide.setRole(ob.DELIBERATE); + this.popupSlide.animateTo(1.0F); + } + + private void closePopupAnim() { + this.popupSlide.setRole(ob.MEDIUM); + this.popupSlide.animateTo(0.0F); + } + + private static float backOut(float var0) { + float var1 = 0.0F; + float var2 = 0.0F; + int var3 = -1443600952; + + while (true) { + switch (var3) { + case -1443600952: + default: + if (var0 <= 0.0F) { + var3 = 879790882; + } else { + var3 = 1433411500; + } + break; + case -1379371737: + return 1.0F; + case 879790882: + return 0.0F; + case 1433411500: + if (var0 >= 1.0F) { + var3 = -1379371737; + } else { + var3 = 1567950103; + } + break; + case 1567950103: + var1 = 1.70158F; + var2 = var0 - 1.0F; + return var2 * var2 * ((var1 + 1.0F) * var2 + var1) + 1.0F; + } + } + } + + private void renderFriendPopup(aru var1, mv var2, ge var3, ge var4, float var5, float var6) { + long var7 = System.currentTimeMillis(); + amz var9 = anb.peekPopup(); + if (this.activePopup == null && var9 != null) { + this.activePopup = var9; + this.popupShownAt = var7; + this.popupLeaving = (boolean)(((0)) != 0); + this.openPopupAnim(); + } + + if (this.activePopup != null && !this.popupLeaving) { + int var10 = var9 != null && this.activePopup.equals(var9) + ? 0: 1; + long var11 = this.activePopup.kind().needsChoice() + ? (-8116051203606493627L | 8116051203606505627L) + (-8116051203606493627L & 8116051203606505627L) + : (-3503227967967659387L | 3503227967967665387L) + (-3503227967967659387L & 3503227967967665387L); + if (var10 != 0) { + this.popupLeaving = (boolean)(((1)) != 0); + this.closePopupAnim(); + } else if (var7 - this.popupShownAt > var11) { + anb.dismissPopup(); + this.popupLeaving = (boolean)(((1)) != 0); + this.closePopupAnim(); + } + } + + float var34 = this.popupSlide.update(); + float var35 = Math.max(0.0F, var34); + float var12 = Math.min(1.0F, var35); + if (this.activePopup != null) { + if (this.popupLeaving && var35 <= 0.01F) { + this.activePopup = null; + } else { + int var13 = this.activePopup.kind() == ana.MESSAGE + ? 1: 0; + boolean var14 = this.activePopup.kind().needsChoice(); + int var15 = this.activePopup.kind() == ana.ACCEPTED + ? 1: 0; + float var16 = 16.0F; + float var17 = 5.0F; + float var18 = 4.0F; + float var19 = 10.0F; + float var20 = 8.0F; + float var21 = var13 != 0 ? var20 : var4.width("u"); + String var22 = anb.describe(this.activePopup); + float var23 = var14 + ? var17 + var21 + var18 + var3.width(var22) + var18 + 2.0F + var19 + var18 + var19 + var17 + : var17 + var21 + var18 + var3.width(var22) + var17; + float var24 = this.x + (this.width - var23) / 2.0F; + float var25 = this.y + var5 + 3.0F; + float var26 = var25 - (var16 + 3.0F) * (1.0F - var35); + this.height = var5 + (var16 + 3.0F) * var12; + this.msgX = var24; + this.msgY = var26; + this.msgW = var23; + this.msgH = var16; + this.overlayLeft = Math.min(this.overlayLeft, var24); + this.overlayRight = Math.max(this.overlayRight, var24 + var23); + this.overlayBottom = Math.max(this.overlayBottom, var26 + var16); + float var27 = Math.min(1.0F, var12 / 0.6F); + float var28 = Mth.clamp((var12 - 0.3F) / 0.55F, 0.0F, 1.0F); + float var29 = this.popupLeaving ? var12 : backOut(Mth.clamp((var12 - 0.45F) / 0.5F, 0.0F, 1.0F)); + float var30 = this.popupLeaving ? var12 : backOut(Mth.clamp((var12 - 0.6F) / 0.4F, 0.0F, 1.0F)); + var1.pushClipBounds(var24 - 4.0F, this.y + var5 + 1.0F, var24 + var23 + 4.0F, var25 + var16 + 6.0F); + atb.drawShadow(var1.pose(), var24, var26, var23, var16, 10.0F, asj.uniform(var6), var2.getColor().mulAlpha(0.22F * var27)); + atb.drawAcrylicHud(var1.pose(), var24, var26, var23, var16, asj.uniform(var6), asu.WHITE.mulAlpha(var27)); + atb.drawRoundedBorder(var1.pose(), var24, var26, var23, var16, pk.borderRim(), asj.uniform(var6), var2.getColor().mulAlpha(0.6F * var27)); + float var31 = var24 + var17; + float var32 = 4.0F * (1.0F - var28); + if (var13 != 0) { + this.drawChatBubble(var1, var31 + var32, var26 + (var16 - var20) / 2.0F, var20, var2.getColor().mulAlpha(var28)); + } else { + asu var33 = (var15 != 0 + ? new asu( + 88, + 194, + 125, + (310389985 ^ -310389730) + ((310389985 & -310389730) << 1) + ) + : var2.getColor()) + .mulAlpha(var28); + var1.drawText( + var4, "u", var31 + var32, var26 + (var16 - var4.height()) / 2.0F, var33 + ); + } + + var31 += var21 + var18; + var1.drawText(var3, var22, var31 + var32, var26 + (var16 - var3.height()) / 2.0F, var2.getWhite().mulAlpha(var28)); + if (var14) { + this.popupButtonSize = var19; + this.declineX = var24 + var23 - var17 - var19; + this.declineY = var26 + (var16 - var19) / 2.0F; + this.acceptX = this.declineX - var18 - var19; + this.acceptY = this.declineY; + this.drawPopupButton( + var1, + this.acceptX, + this.acceptY, + var19, + new asu( + 88, + 194, + 125, + (-2106729956 ^ 2106730211) + ((-2106729956 & 2106730211) << 1) + ) + .mulAlpha(var27), + (boolean)(((1)) != 0), + var27, + var29 + ); + this.drawPopupButton( + var1, + this.declineX, + this.declineY, + var19, + new asu( + 226, + 96, + 96, + (364202473 ^ -364202218) + ((364202473 & -364202218) << 1) + ) + .mulAlpha(var27), + (boolean)(((0)) != 0), + var27, + var30 + ); + } + + var1.popClip(); + } + } + } + + private void drawPopupButton(aru var1, float var2, float var3, float var4, asu var5, boolean var6, float var7, float var8) { + float var9 = 0.0F; + float var10 = 0.0F; + int var11 = -340789702; + + while (true) { + switch (var11) { + case -1581515885: + var9 = var2 + var4 / 2.0F; + var10 = var3 + var4 / 2.0F; + var1.pose().pushMatrix(); + var1.pose().translate(var9, var10); + var1.pose().scale(var8, var8); + var1.pose().translate(-var9, -var10); + this.drawPopupButtonBody(var1, var2, var3, var4, var5, var6, var7); + var1.pose().popMatrix(); + return; + case -340789702: + default: + if (var8 <= 0.01F) { + var11 = -165422738; + } else { + var11 = -1581515885; + } + break; + case -165422738: + return; + } + } + } + + private void drawPopupButtonBody(aru var1, float var2, float var3, float var4, asu var5, boolean var6, float var7) { + asu var8 = null; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = -590810792; + + while (true) { + switch (var12) { + case -940908122: + var1.pose().rotate((float)Math.toRadians(45.0)); + var1.drawRoundedRect(-2.6F, -var11 / 2.0F, 5.2F, var11, asj.pill(var11), var8); + var1.drawRoundedRect(-var11 / 2.0F, -2.6F, var11, 5.2F, asj.pill(var11), var8); + var12 = 1042962570; + break; + case -684505154: + var1.pose().rotate((float)Math.toRadians(-45.0)); + var1.drawRoundedRect(-2.4F, 0.4F, 4.8F, var11, asj.pill(var11), var8); + var1.drawRoundedRect(-2.4F, -1.8F, var11, 2.6F, asj.pill(var11), var8); + var12 = 1042962570; + break; + case -590810792: + default: + var1.drawRoundedRect(var2, var3, var4, var4, asj.pill(var4), var5); + var8 = asu.WHITE.mulAlpha(var7); + var9 = var2 + var4 / 2.0F; + var10 = var3 + var4 / 2.0F; + var11 = 1.1F; + var1.pose().pushMatrix(); + var1.pose().translate(var9, var10); + if (var6) { + var12 = -684505154; + } else { + var12 = -940908122; + } + break; + case 1042962570: + var1.pose().popMatrix(); + return; + } + } + } + + @Override + public float overlayX() { + float var2 = 0.0F; + int var1 = 1387172862; + + while (true) { + switch (var1) { + case -1712043860: + var2 = super.overlayX(); + var1 = -712073040; + break; + case -712073040: + return var2; + case 1387172862: + default: + if (this.overlayMeasured) { + var1 = 1876458960; + } else { + var1 = -1712043860; + } + break; + case 1876458960: + var2 = this.x + (this.overlayLeft - this.x) * this.scale; + var1 = -712073040; + } + } + } + + @Override + public float overlayY() { + float var2 = 0.0F; + int var1 = 1897646751; + + while (true) { + switch (var1) { + case -2109711314: + var2 = this.y + (this.overlayTop - this.y) * this.scale; + var1 = -928214744; + break; + case -928214744: + return var2; + case 753048227: + var2 = super.overlayY(); + var1 = -928214744; + break; + case 1897646751: + default: + if (this.overlayMeasured) { + var1 = -2109711314; + } else { + var1 = 753048227; + } + } + } + } + + @Override + public float overlayWidth() { + float var2 = 0.0F; + int var1 = 2091964412; + + while (true) { + switch (var1) { + case -1107107993: + return var2; + case 885923832: + var2 = (this.overlayRight - this.overlayLeft) * this.scale; + var1 = -1107107993; + break; + case 1812528871: + var2 = super.overlayWidth(); + var1 = -1107107993; + break; + case 2091964412: + default: + if (this.overlayMeasured) { + var1 = 885923832; + } else { + var1 = 1812528871; + } + } + } + } + + @Override + public float overlayHeight() { + float var2 = 0.0F; + int var1 = -240443370; + + while (true) { + switch (var1) { + case -1638731272: + return var2; + case -240443370: + default: + if (this.overlayMeasured) { + var1 = 118158000; + } else { + var1 = 1493523643; + } + break; + case 118158000: + var2 = (this.overlayBottom - this.overlayTop) * this.scale; + var1 = -1638731272; + break; + case 1493523643: + var2 = super.overlayHeight(); + var1 = -1638731272; + } + } + } + + public qz searchAnchor() { + int var1 = 1243332623; + + while (true) { + switch (var1) { + case -658324545: + return new qz( + this.x + (this.islandShape.x() - this.x) * this.scale, + this.y + (this.islandShape.y() - this.y) * this.scale, + this.islandShape.width() * this.scale, + this.islandShape.height() * this.scale, + this.islandShape.radius() * this.scale, + this.islandShape.spanWidth() * this.scale + ); + case 821541750: + return new qz(this.overlayX(), this.overlayY(), this.overlayWidth(), this.overlayHeight(), this.overlayHeight() / 2.0F, this.overlayWidth()); + case 1243332623: + } + + if (this.islandShape == null) { + var1 = 821541750; + } else { + var1 = -658324545; + } + } + } + + private float localX(double var1) { + return (float)(this.x + (var1 - this.x) / this.scale); + } + + private float localY(double var1) { + return (float)(this.y + (var1 - this.y) / this.scale); + } + + private void drawChatBubble(aru var1, float var2, float var3, float var4, asu var5) { + float var6 = var4 * 0.74F; + var1.drawRoundedRect(var2, var3, var4, var6, asj.uniform(var4 * 0.3F), var5); + float var7 = var4 * 0.28F; + var1.drawRoundedRect(var2 + var4 * 0.16F, var3 + var6 - var7 * 0.4F, var7, var7, asj.all(oc.HAIRLINE), var5); + } + + @Override + public boolean handleHudClick(double var1, double var3, int var5) { + if (this.island.handleClick(this.localX(var1), this.localY(var3), var5)) { + return (boolean)(((1)) != 0); + } + + if (this.activePopup == null || this.popupLeaving || this.popupSlide.value() < 0.9F || var5 != 0) { + return (boolean)(((0)) != 0); + } + + if (this.activePopup.kind() == ana.MESSAGE) { + if (aqj.isHovered(var1, var3, this.msgX, this.msgY, this.msgW, this.msgH)) { + String var8 = this.activePopup.username(); + anb.dismissPopup(); + this.popupLeaving = (boolean)(((1)) != 0); + this.closePopupAnim(); + yc var7 = bz.getInstance().getMenuScreen(); + Minecraft.getInstance().gui.setScreen(var7); + var7.openFriendChat(var8); + return (boolean)(((1)) != 0); + } else { + return (boolean)(((0)) != 0); + } + } else if (!this.activePopup.kind().needsChoice()) { + return (boolean)(((0)) != 0); + } else { + float var6 = 2.0F; + if (aqj.isHovered(var1, var3, this.acceptX - var6, this.acceptY - var6, this.popupButtonSize + var6 * 2.0F, this.popupButtonSize + var6 * 2.0F)) { + anb.resolvePopup((boolean)((((792562680 ^ -792562679) + ((792562680 & -792562679) << 1))) != 0)); + this.popupLeaving = (boolean)(((1)) != 0); + this.closePopupAnim(); + return (boolean)(((1)) != 0); + } else if (aqj.isHovered( + var1, var3, this.declineX - var6, this.declineY - var6, this.popupButtonSize + var6 * 2.0F, this.popupButtonSize + var6 * 2.0F + )) { + anb.resolvePopup((boolean)((((-814133470 | 814133470) + (-814133470 & 814133470))) != 0)); + this.popupLeaving = (boolean)(((1)) != 0); + this.closePopupAnim(); + return (boolean)(((1)) != 0); + } else { + return (boolean)(((0)) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/qv.java b/src/main/java/defpackage/qv.java new file mode 100644 index 0000000..76e0e0f --- /dev/null +++ b/src/main/java/defpackage/qv.java @@ -0,0 +1,13 @@ +package defpackage; + +public enum qv { + TOP_LEFT, + TOP_CENTER, + TOP_RIGHT, + CENTER_LEFT, + CENTER, + CENTER_RIGHT, + BOTTOM_LEFT, + BOTTOM_CENTER, + BOTTOM_RIGHT; +} diff --git a/src/main/java/defpackage/qw.java b/src/main/java/defpackage/qw.java new file mode 100644 index 0000000..020fe69 --- /dev/null +++ b/src/main/java/defpackage/qw.java @@ -0,0 +1,31 @@ +package defpackage; + +import java.util.Objects; + +public class qw { + float pos; + float offset; + + public qw(qx var1, float var2, float var3) { + Objects.requireNonNull(var1); + super(); + this.pos = var2; + this.offset = var3; + } + + public float getPos() { + return this.pos; + } + + public float getOffset() { + return this.offset; + } + + public void setPos(float var1) { + this.pos = var1; + } + + public void setOffset(float var1) { + this.offset = var1; + } +} diff --git a/src/main/java/defpackage/qx.java b/src/main/java/defpackage/qx.java new file mode 100644 index 0000000..15ea9bd --- /dev/null +++ b/src/main/java/defpackage/qx.java @@ -0,0 +1,1128 @@ +package defpackage; + +import com.google.gson.JsonObject; +import org.joml.Vector2f; + +public abstract class qx implements aqg { + private final String name; + private int toggleIndex = -1; + protected float x; + protected float y; + protected float width; + protected float height; + private static final double EDIT_PULSE_PERIOD = 360.0; + private static final float LOCKED_BORDER_ALPHA = 0.28F; + private static final String LOCKED_LABEL = "locked"; + private static final float CHIP_MARKER_WIDTH = 2.0F; + private static final float CHIP_GAP = 2.0F; + private static final float ANCHOR_EPSILON = 0.5F; + public static final float MIN_SCALE = 0.5F; + public static final float MAX_SCALE = 2.5F; + protected float scale = 1.0F; + private final ct editAnim = ct.layout(ob.SLOW); + private final ct hoverAnim = ct.transform(ob.FAST); + private float windowWidth; + private float windowHeight; + private float anchoredWidth = -1.0F; + protected float newX = -1.0F; + protected float newY = -1.0F; + protected float renderX; + protected float renderY; + protected float renderScale = 1.0F; + private ct animX; + private ct animY; + private ct animScale; + private qv align = qv.TOP_LEFT; + private float offsetX = 0.0F; + private float offsetY = 0.0F; + private final float defaultOffsetX; + private final float defaultOffsetY; + private final qv defaultAlign; + protected boolean settingsOpen = (boolean)(((0)) != 0); + + private static arq chipRadius() { + return asj.uniform(pk.radiusChip()); + } + + public void tick() { + } + + public qx(String var1, float var2, float var3, float var4, float var5, float var6, float var7, qv var8) { + this.name = var1; + this.x = var2; + this.y = var3; + this.renderX = var2; + this.renderY = var3; + this.animX = ct.transform(ob.SETTLED, var2); + this.animY = ct.transform(ob.SETTLED, var3); + this.animScale = ct.transform(ob.FAST, 1.0F); + this.windowWidth = var4; + this.windowHeight = var5; + this.offsetX = var6; + this.offsetY = var7; + this.align = var8; + this.defaultOffsetX = var6; + this.defaultOffsetY = var7; + this.defaultAlign = var8; + } + + public void resetToDefault() { + int var1 = -1061777601; + + while (true) { + switch (var1) { + case -1061777601: + default: + if (this.isLocked()) { + var1 = 1444088170; + } else { + var1 = -286356312; + } + break; + case -286356312: + this.scale = 1.0F; + this.anchorDefault(); + return; + case 1444088170: + return; + } + } + } + + public void anchorDefault() { + this.anchor(this.defaultAlign, this.defaultOffsetX, this.defaultOffsetY); + } + + private void anchor(qv var1, float var2, float var3) { + int var4 = 425561396; + + while (true) { + switch (var4) { + case -1110003531: + this.align = var1; + this.offsetX = var2; + this.offsetY = var3; + this.newX = -1.0F; + this.newY = -1.0F; + if (this.windowWidth > 0.0F) { + var4 = -264364492; + } else { + var4 = -836999430; + } + break; + case -874471212: + this.windowResized(this.windowWidth, this.windowHeight); + var4 = -836999430; + break; + case -836999430: + return; + case -264364492: + if (this.windowHeight > 0.0F) { + var4 = -874471212; + } else { + var4 = -836999430; + } + break; + case 425561396: + default: + if (this.isLocked()) { + var4 = 1475916189; + } else { + var4 = -1110003531; + } + break; + case 1475916189: + return; + } + } + } + + public abstract void render(aru var1); + + public boolean hasSettings() { + return (boolean)(((0)) != 0); + } + + public boolean isLocked() { + return (boolean)(((0)) != 0); + } + + public boolean isSettingsVisible() { + return this.settingsOpen; + } + + public void renderSettings(aru var1) { + } + + public boolean isOverSettings(double var1, double var3) { + return (boolean)(((0)) != 0); + } + + public boolean settingsMouseClicked(double var1, double var3, int var5) { + return (boolean)(((0)) != 0); + } + + public boolean handleHudClick(double var1, double var3, int var5) { + return (boolean)(((0)) != 0); + } + + protected void reanchorOnWidthChange() { + int var1 = 780614719; + + while (true) { + switch (var1) { + case -1906968610: + this.anchoredWidth = this.scaledWidth(); + if (this.windowWidth > 0.0F) { + var1 = -1741776463; + } else { + var1 = -167983163; + } + break; + case -1741776463: + if (this.windowHeight > 0.0F) { + var1 = -1116827359; + } else { + var1 = -167983163; + } + break; + case -1116827359: + this.windowResized(this.windowWidth, this.windowHeight); + var1 = -167983163; + break; + case -167983163: + return; + case 780614719: + default: + if (Math.abs(this.scaledWidth() - this.anchoredWidth) < 0.5F) { + var1 = 1547711188; + } else { + var1 = -1906968610; + } + break; + case 1547711188: + return; + } + } + } + + public void syncWindowSize(float var1, float var2) { + int var3 = 1518466575; + + while (true) { + switch (var3) { + case -1295897165: + if (Math.abs(var2 - this.windowHeight) < 0.5F) { + var3 = 246839295; + } else { + var3 = 221544449; + } + break; + case -792344283: + if (Math.abs(var1 - this.windowWidth) < 0.5F) { + var3 = -1295897165; + } else { + var3 = 221544449; + } + break; + case -738709001: + return; + case 221544449: + this.windowResized(var1, var2); + return; + case 246839295: + return; + case 517415731: + if (var2 <= 0.0F) { + var3 = -738709001; + } else { + var3 = -792344283; + } + break; + case 1518466575: + default: + if (!(var1 <= 0.0F)) { + var3 = 517415731; + } else { + var3 = -738709001; + } + } + } + } + + public float overlayX() { + return this.x; + } + + public float overlayY() { + return this.y; + } + + public float overlayWidth() { + return this.scaledWidth(); + } + + public float overlayHeight() { + return this.scaledHeight(); + } + + public boolean isMouseOver(double var1, double var3) { + float var5 = 0.0F; + float var6 = 0.0F; + int var8 = 0; + int var7 = -2108442308; + + while (true) { + switch (var7) { + case -2108442308: + default: + var5 = this.overlayX(); + var6 = this.overlayY(); + if (var1 >= var5) { + var7 = 1304522288; + } else { + var7 = 139847283; + } + break; + case -867160893: + var8 = 1; + var7 = 1096210473; + break; + case -280980276: + if (var3 >= var6) { + var7 = 1478907096; + } else { + var7 = 139847283; + } + break; + case 139847283: + var8 = 0; + var7 = 1096210473; + break; + case 1096210473: + return (boolean)((var8) != 0); + case 1304522288: + if (var1 <= var5 + this.overlayWidth()) { + var7 = -280980276; + } else { + var7 = 139847283; + } + break; + case 1478907096: + if (var3 <= var6 + this.overlayHeight()) { + var7 = -867160893; + } else { + var7 = 139847283; + } + } + } + } + + public void setScale(float var1) { + int var2 = -779889048; + + while (true) { + switch (var2) { + case -1157181376: + this.scale = Math.max(0.5F, Math.min(2.5F, var1)); + return; + case -779889048: + default: + if (this.isLocked()) { + var2 = 1578918271; + } else { + var2 = -1157181376; + } + break; + case 1578918271: + return; + } + } + } + + public float scaledWidth() { + return this.width * this.scale; + } + + public float scaledHeight() { + return this.height * this.scale; + } + + public void updateEdit(boolean var1) { + this.editAnim.update(var1 ? 1.0F : 0.0F); + } + + public boolean isOverResizeHandle(double var1, double var3) { + float var5 = 0.0F; + float var6 = 0.0F; + double var7 = 0.0; + double var9 = 0.0; + int var12 = 0; + int var11 = -544080589; + + while (true) { + switch (var11) { + case -544080589: + default: + var5 = this.overlayX() + this.overlayWidth(); + var6 = this.overlayY() + this.overlayHeight(); + var7 = var1 - var5; + var9 = var3 - var6; + if (var7 * var7 + var9 * var9 <= 36.0) { + var11 = 500988276; + } else { + var11 = -446341586; + } + break; + case -446341586: + var12 = 0; + var11 = 595455427; + break; + case 500988276: + var12 = 1; + var11 = 595455427; + break; + case 595455427: + return (boolean)((var12) != 0); + } + } + } + + public void renderEditOverlay(aru var1, boolean var2, boolean var3) { + float var4 = this.editAnim.value(); + if (!(var4 <= 0.003F)) { + float var5 = this.hoverAnim.update(!var2 && !var3 ? 0.0F : 1.0F); + mv var6 = bz.getInstance().getThemeManager().getCurrentTheme(); + boolean var7 = this.isLocked(); + asu var8 = var7 ? var6.getGrayLight() : (this.isSnapping() ? var6.getSecondColor() : var6.getColor()); + float var9 = (2.0F + 2.0F * var5) * var4; + float var10 = this.overlayX() - var9; + float var11 = this.overlayY() - var9; + float var12 = this.overlayWidth() + var9 * 2.0F; + float var13 = this.overlayHeight() + var9 * 2.0F; + float var14 = 0.5F + 0.5F * (float)Math.sin(cs.elapsedMillis() / 360.0); + float var15 = var7 ? var4 * 0.28F : var4 * (0.4F + 0.4F * var5) * (0.65F + 0.35F * var14); + if (this.isSnapping()) { + var15 = var4; + } + + var1.drawRoundedBorder(var10, var11, var12, var13, pk.borderThickness(), asj.uniform(pk.radiusPanel()), var8.mulAlpha(var15)); + this.drawCornerTicks(var1, var10, var11, var12, var13, var8.mulAlpha(var4 * (0.5F + 0.5F * var5)), var4); + if (var7) { + this.drawLabelChip(var1, var10, var11, var6, var8, "locked", var4); + } else { + float var16 = this.overlayX() + this.overlayWidth(); + float var17 = this.overlayY() + this.overlayHeight(); + float var18 = (2.4F + 1.8F * var5) * var4; + this.drawDot(var1, var16, var17, var18 + 2.2F, var8.mulAlpha(var4 * (0.35F + 0.35F * var5))); + this.drawDot(var1, var16, var17, var18 + 1.0F, var8.mulAlpha(var4)); + this.drawDot(var1, var16, var17, var18, asu.WHITE.mulAlpha(var4)); + if ((var2 || var3) && var5 > 0.05F) { + this.drawLabelChip(var1, var10, var11, var6, var8, Math.round(this.scale * 100.0F) + "%", var4 * Math.min(1.0F, var5 * 1.3F)); + } + } + } + } + + public boolean isSnapping() { + int var2 = 0; + int var1 = -1037123180; + + while (true) { + switch (var1) { + case -1925077062: + if (this.newY != -1.0F) { + var1 = -970466336; + } else { + var1 = 1406120477; + } + break; + case -1037123180: + default: + if (this.newX == -1.0F) { + var1 = -1925077062; + } else { + var1 = -970466336; + } + break; + case -970466336: + var2 = 1; + var1 = -517394937; + break; + case -517394937: + return (boolean)((var2) != 0); + case 1406120477: + var2 = 0; + var1 = -517394937; + } + } + } + + private void drawLabelChip(aru var1, float var2, float var3, mv var4, asu var5, String var6, float var7) { + ge var8 = pk.font(oe.MICRO); + float var9 = pk.pad(); + float var10 = var8.height() + var9; + float var11 = var8.width(var6) + var9 * 2.0F + 2.0F; + float var12 = var2; + float var13 = var3 - var10 - 2.0F; + var1.drawSurface(aso.CONTROL, var12, var13, var11, var10, chipRadius(), var4.getBackgroundColor().getRGBWithAlpha(0.82F * var7)); + var1.drawRoundedRect(var12, var13, 2.0F, var10, asj.pill(2.0F), var5.mulAlpha(var7)); + var1.drawText(var8, var6, var12 + 2.0F + var9, var13 + (var10 - var8.height()) / 2.0F, var4.getWhite().mulAlpha(var7)); + } + + private void drawDot(aru var1, float var2, float var3, float var4, asu var5) { + var1.drawRoundedRect(var2 - var4, var3 - var4, var4 * 2.0F, var4 * 2.0F, asj.uniform(var4), var5); + } + + private void drawCornerTicks(aru var1, float var2, float var3, float var4, float var5, asu var6, float var7) { + float var8 = 4.5F * var7; + float var9 = 1.0F; + var1.drawRoundedRect(var2, var3, var8, var9, arq.ZERO, var6); + var1.drawRoundedRect(var2, var3, var9, var8, arq.ZERO, var6); + var1.drawRoundedRect(var2 + var4 - var8, var3, var8, var9, arq.ZERO, var6); + var1.drawRoundedRect(var2 + var4 - var9, var3, var9, var8, arq.ZERO, var6); + var1.drawRoundedRect(var2, var3 + var5 - var9, var8, var9, arq.ZERO, var6); + var1.drawRoundedRect(var2, var3 + var5 - var8, var9, var8, arq.ZERO, var6); + } + + protected void drawBorder(aru var1) { + float var2 = 5.5F; + float var3 = 6.0F; + asu var4 = new asu( + 179, + 145, + 255, + (-1750667739 | 1750667994) + (-1750667739 & 1750667994) + ); + var1.drawRoundedBorder(this.x, this.y, this.width, this.height, var2, asj.uniform(var3), var4); + } + + public void set(aru var1, float var2, float var3, vm var4, float var5, float var6) { + Vector2f var7 = var4.getNearest(var2, var3); + qw var8 = new qw(this, var7.x, 0.0F); + qw var9 = new qw(this, var7.y, 0.0F); + float var10 = this.scaledWidth(); + float var11 = this.scaledHeight(); + Vector2f var12 = var4.getNearest(var2 + var10, var3 + var11); + qw var13 = new qw(this, var12.x, -var10); + qw var14 = new qw(this, var12.y, -var11); + Vector2f var15 = var4.getNearest(var2 + var10 / 2.0F, var3 + var11 / 2.0F); + qw var16 = new qw(this, var15.x, -var10 / 2.0F); + qw var17 = new qw(this, var15.y, -var11 / 2.0F); + this.x = var2; + this.y = var3; + this.windowWidth = var5; + this.windowHeight = var6; + qw var18 = this.getValue(var8, var13, var16); + qw var19 = this.getValue(var9, var14, var17); + this.renderXLine(var1, var18); + this.renderYLine(var1, var19); + this.update(var5, var6); + } + + private qw getValue(qw var1, qw var2, qw var3) { + int var4 = -195807912; + + while (true) { + switch (var4) { + case -1936438406: + return var1; + case -1861344709: + if (var2.pos != -1.0F) { + var4 = -1172783069; + } else { + var4 = 1379992932; + } + break; + case -1172783069: + return var2; + case -195807912: + default: + if (var1.pos != -1.0F) { + var4 = -1936438406; + } else { + var4 = -1861344709; + } + break; + case 1379992932: + return var3; + } + } + } + + protected void renderYLine(aru var1, qw var2) { + asu var3 = null; + float var4 = 0.0F; + int var5 = 288429786; + + while (true) { + switch (var5) { + case 288429786: + default: + if (var2.pos == -1.0F) { + var5 = 468764725; + } else { + var5 = 2138514625; + } + break; + case 468764725: + this.newY = var2.pos; + return; + case 2138514625: + var3 = bz.getInstance().getThemeManager().getCurrentTheme().getColor(); + var4 = var1.guiWidth(); + var1.drawRoundedRect(0.0F, var2.pos - 1.0F, var4, 3.0F, arq.ZERO, var3.mulAlpha(0.14F)); + var1.drawRoundedRect(0.0F, var2.pos, var4, 1.0F, arq.ZERO, var3); + this.newY = var2.pos + var2.offset; + return; + } + } + } + + protected void renderXLine(aru var1, qw var2) { + asu var3 = null; + float var4 = 0.0F; + int var5 = -1770027410; + + while (true) { + switch (var5) { + case -1770027410: + default: + if (var2.pos == -1.0F) { + var5 = 807556469; + } else { + var5 = 2107360588; + } + break; + case 807556469: + this.newX = var2.pos; + return; + case 2107360588: + var3 = bz.getInstance().getThemeManager().getCurrentTheme().getColor(); + var4 = var1.guiHeight(); + var1.drawRoundedRect(var2.pos - 1.0F, 0.0F, 3.0F, var4, arq.ZERO, var3.mulAlpha(0.14F)); + var1.drawRoundedRect(var2.pos, 0.0F, 1.0F, var4, arq.ZERO, var3); + this.newX = var2.pos + var2.offset; + return; + } + } + } + + public void set(float var1, float var2) { + this.x = var1; + this.y = var2; + } + + public void windowResized(float var1, float var2) { + float var3 = 0.0F; + float var4 = 0.0F; + int var5 = 140380005; + + while (true) { + switch (var5) { + case -1263185896: + var3 = this.alignToX(this.align, var1); + var4 = this.alignToY(this.align, var2); + this.x = var3 + this.offsetX; + this.y = var4 + this.offsetY; + this.windowWidth = var1; + this.windowHeight = var2; + this.update(var1, var2); + return; + case 140380005: + default: + if (!(var2 <= 0.0F)) { + var5 = 1554672127; + } else { + var5 = 1116033249; + } + break; + case 1116033249: + return; + case 1554672127: + if (var1 <= 0.0F) { + var5 = 1116033249; + } else { + var5 = -1263185896; + } + } + } + } + + public void update(float var1, float var2) { + int var3 = 565477543; + + while (true) { + switch (var3) { + case -394674283: + return; + case 565477543: + default: + if (this.x < 0.0F) { + var3 = 2101917181; + } else { + var3 = 1916395300; + } + break; + case 717597432: + this.y = 0.0F; + var3 = 1985652005; + break; + case 743029563: + this.y = var2 - this.scaledHeight(); + var3 = -394674283; + break; + case 1555033069: + if (this.y + this.scaledHeight() > var2) { + var3 = 743029563; + } else { + var3 = -394674283; + } + break; + case 1916395300: + if (this.y < 0.0F) { + var3 = 717597432; + } else { + var3 = 1985652005; + } + break; + case 1985652005: + if (this.x + this.scaledWidth() > var1) { + var3 = 2077321616; + } else { + var3 = 1555033069; + } + break; + case 2077321616: + this.x = var1 - this.scaledWidth(); + var3 = 1555033069; + break; + case 2101917181: + this.x = 0.0F; + var3 = 1916395300; + } + } + } + + public void release() { + qv var1 = null; + float var2 = 0.0F; + float var3 = 0.0F; + int var4 = -856205013; + + while (true) { + switch (var4) { + case -861899317: + this.y = this.newY; + var4 = 1101512344; + break; + case -856205013: + default: + if (this.newX != -1.0F) { + var4 = 1412806234; + } else { + var4 = 1093314051; + } + break; + case 1093314051: + if (this.newY != -1.0F) { + var4 = -861899317; + } else { + var4 = 1101512344; + } + break; + case 1101512344: + var1 = this.determineAlign(this.x, this.y, this.windowWidth, this.windowHeight); + var2 = this.alignToX(var1, this.windowWidth); + var3 = this.alignToY(var1, this.windowHeight); + this.align = var1; + this.offsetX = this.x - var2; + this.offsetY = this.y - var3; + return; + case 1412806234: + this.x = this.newX; + var4 = 1093314051; + } + } + } + + private qv determineAlign(float var1, float var2, float var3, float var4) { + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + int var15 = 0; + int var16 = 0; + int var17 = 0; + int var11 = 2090335249; + + while (true) { + switch (var11) { + case -1950336588: + var6 = var13; + if (var5 == 0) { + var11 = -44026298; + } else { + var11 = 408966159; + } + break; + case -1785580106: + if (var7 != 0) { + var11 = -699693597; + } else { + var11 = 631545047; + } + break; + case -1365334035: + var17 = 1; + var11 = -669959146; + break; + case -1348924023: + if (var10 != 0) { + var11 = -195457264; + } else { + var11 = 1768308489; + } + break; + case -1157626959: + var7 = var14; + if (var2 + this.scaledHeight() / 2.0F < var4 / 3.0F) { + var11 = 483722918; + } else { + var11 = 1691133109; + } + break; + case -1065393307: + var16 = 0; + var11 = 325892609; + break; + case -731258991: + if (var7 != 0) { + var11 = -452114200; + } else { + var11 = 130661521; + } + break; + case -699693597: + return qv.BOTTOM_CENTER; + case -669959146: + var10 = var17; + if (var8 != 0) { + var11 = 928544540; + } else { + var11 = -1348924023; + } + break; + case -452114200: + return qv.CENTER; + case -341163055: + var13 = 1; + var11 = -1950336588; + break; + case -298431880: + var17 = 0; + var11 = -669959146; + break; + case -232602864: + return qv.CENTER_LEFT; + case -195457264: + if (var5 != 0) { + var11 = -232602864; + } else { + var11 = -731258991; + } + break; + case -82510935: + var13 = 0; + var11 = -1950336588; + break; + case -60384176: + return qv.TOP_RIGHT; + case -44026298: + if (var6 == 0) { + var11 = 384797826; + } else { + var11 = 408966159; + } + break; + case 130661521: + return qv.CENTER_RIGHT; + case 325892609: + var9 = var16; + if (var8 == 0) { + var11 = 401918968; + } else { + var11 = -298431880; + } + break; + case 384797826: + var14 = 1; + var11 = -1157626959; + break; + case 401918968: + if (var9 == 0) { + var11 = -1365334035; + } else { + var11 = -298431880; + } + break; + case 408966159: + var14 = 0; + var11 = -1157626959; + break; + case 483722918: + var15 = 1; + var11 = 1676442350; + break; + case 577063597: + if (var7 != 0) { + var11 = 1813273873; + } else { + var11 = -60384176; + } + break; + case 631545047: + return qv.BOTTOM_RIGHT; + case 708867597: + var16 = 1; + var11 = 325892609; + break; + case 747288871: + return qv.BOTTOM_LEFT; + case 928544540: + if (var5 != 0) { + var11 = 1583728977; + } else { + var11 = 577063597; + } + break; + case 1358643914: + var12 = 1; + var11 = 1656727561; + break; + case 1517235864: + var12 = 0; + var11 = 1656727561; + break; + case 1583728977: + return qv.TOP_LEFT; + case 1656727561: + var5 = var12; + if (var1 + this.scaledWidth() / 2.0F > var3 * 2.0F / 3.0F) { + var11 = -341163055; + } else { + var11 = -82510935; + } + break; + case 1676442350: + var8 = var15; + if (var2 + this.scaledHeight() / 2.0F > var4 * 2.0F / 3.0F) { + var11 = 708867597; + } else { + var11 = -1065393307; + } + break; + case 1691133109: + var15 = 0; + var11 = 1676442350; + break; + case 1768308489: + if (var5 != 0) { + var11 = 747288871; + } else { + var11 = -1785580106; + } + break; + case 1813273873: + return qv.TOP_CENTER; + case 2090335249: + default: + if (var1 + this.scaledWidth() / 2.0F < var3 / 3.0F) { + var11 = 1358643914; + } else { + var11 = 1517235864; + } + } + } + } + + private float alignToX(qv var1, float var2) { + return switch (var1) { + case TOP_LEFT, CENTER_LEFT, BOTTOM_LEFT -> 0.0F; + case TOP_CENTER, CENTER, BOTTOM_CENTER -> var2 / 2.0F - this.scaledWidth() / 2.0F; + case TOP_RIGHT, CENTER_RIGHT, BOTTOM_RIGHT -> var2 - this.scaledWidth(); + }; + } + + private float alignToY(qv var1, float var2) { + return switch (var1) { + case TOP_LEFT, TOP_CENTER, TOP_RIGHT -> 0.0F; + case CENTER_LEFT, CENTER, CENTER_RIGHT -> var2 / 2.0F - this.scaledHeight() / 2.0F; + case BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT -> var2 - this.scaledHeight(); + }; + } + + public JsonObject save() { + JsonObject var1 = new JsonObject(); + var1.addProperty("x", this.x); + var1.addProperty("y", this.y); + var1.addProperty("width", this.width); + var1.addProperty("height", this.height); + var1.addProperty("windowWidth", this.windowWidth); + var1.addProperty("windowHeight", this.windowHeight); + var1.addProperty("offsetX", this.offsetX); + var1.addProperty("offsetY", this.offsetY); + var1.addProperty("align", this.align.name()); + var1.addProperty("scale", this.scale); + return var1; + } + + public void load(JsonObject var1) { + if (var1.has("x")) { + this.x = var1.get("x").getAsFloat(); + } + + if (var1.has("y")) { + this.y = var1.get("y").getAsFloat(); + } + + if (var1.has("width")) { + this.width = var1.get("width").getAsFloat(); + } + + if (var1.has("height")) { + this.height = var1.get("height").getAsFloat(); + } + + if (var1.has("windowWidth")) { + this.windowWidth = var1.get("windowWidth").getAsFloat(); + } + + if (var1.has("windowHeight")) { + this.windowHeight = var1.get("windowHeight").getAsFloat(); + } + + if (var1.has("offsetX")) { + this.offsetX = var1.get("offsetX").getAsFloat(); + } + + if (var1.has("offsetY")) { + this.offsetY = var1.get("offsetY").getAsFloat(); + } + + if (var1.has("scale")) { + this.setScale(var1.get("scale").getAsFloat()); + } + + if (var1.has("align")) { + try { + this.align = qv.valueOf(var1.get("align").getAsString()); + } catch (IllegalArgumentException var3) { + this.align = qv.TOP_LEFT; + } + } + } + + public void setPosition(float var1, float var2) { + this.x = var1; + this.y = var2; + } + + public void updatePhysics() { + int var1 = 198002807; + + while (true) { + switch (var1) { + case -968757599: + return; + case -626391220: + if (this.animY != null) { + var1 = 2039727662; + } else { + var1 = -968757599; + } + break; + case 198002807: + default: + if (this.animX != null) { + var1 = -626391220; + } else { + var1 = -968757599; + } + break; + case 244901206: + this.animX.animateTo(this.x); + this.animY.animateTo(this.y); + this.animScale.animateTo(this.scale); + this.renderX = this.animX.update(); + this.renderY = this.animY.update(); + this.renderScale = this.animScale.update(); + var1 = -968757599; + break; + case 2039727662: + if (this.animScale != null) { + var1 = 244901206; + } else { + var1 = -968757599; + } + } + } + } + + public String getName() { + return this.name; + } + + public int getToggleIndex() { + return this.toggleIndex; + } + + public void setToggleIndex(int var1) { + this.toggleIndex = var1; + } + + public float getX() { + return this.x; + } + + public float getY() { + return this.y; + } + + public float getWidth() { + return this.width; + } + + public float getHeight() { + return this.height; + } + + public float getScale() { + return this.scale; + } + + public float getRenderX() { + return this.renderX; + } + + public float getRenderY() { + return this.renderY; + } + + public float getRenderScale() { + return this.renderScale; + } + + public boolean isSettingsOpen() { + return this.settingsOpen; + } + + public void setSettingsOpen(boolean var1) { + this.settingsOpen = var1; + } +} diff --git a/src/main/java/defpackage/qy.java b/src/main/java/defpackage/qy.java new file mode 100644 index 0000000..814b399 --- /dev/null +++ b/src/main/java/defpackage/qy.java @@ -0,0 +1,2219 @@ +package defpackage; + +import java.time.LocalTime; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; + +public final class qy { + private static final String BRAND_LABEL = "Evolution"; + private static final String LOGO_TEXTURE = "icons/logo.png"; + private static final String NOTE_TEXTURE = "icons/media_note.png"; + private static final String PREVIOUS_TEXTURE = "icons/media_prev.png"; + private static final String PLAY_TEXTURE = "icons/media_play.png"; + private static final String PAUSE_TEXTURE = "icons/media_pause.png"; + private static final String NEXT_TEXTURE = "icons/media_next.png"; + private static final String FPS_GLYPH = "f"; + private static final rb BRAND_CARD = rb.brand("Evolution"); + private static final float PILL_DIVISOR = 2.0F; + private static final float ICON_SIZE = 10.0F; + private static final float LOGO_RADIUS = 2.0F; + private static final float ART_RADIUS = 2.5F; + private static final float OUTER_GAP = 7.0F; + private static final float RIGHT_PAD_EXTRA = 3.0F; + private static final float MIN_PILL_WIDTH = 54.0F; + private static final float WASH_ALPHA = 0.36F; + private static final float WASH_MAX_RATIO = 0.62F; + private static final float WASH_MAX_SPAN = 3.2F; + private static final float RIM_ALPHA = 0.12F; + private static final float CONTENT_DRIFT = 3.0F; + private static final float CONTENT_MIN_SCALE = 0.8F; + private static final float VISIBLE_EPSILON = 0.01F; + private static final float SETTLED = 1.0F; + private static final float BACK_OUT_TENSION = 1.70158F; + private static final float MARK_THICKNESS = 1.1F; + private static final float MARK_ROTATION_DEG = 45.0F; + private static final float CHECK_LONG_X = -2.4F; + private static final float CHECK_LONG_Y = 0.4F; + private static final float CHECK_LONG_SPAN = 4.8F; + private static final float CHECK_SHORT_Y = -1.8F; + private static final float CHECK_SHORT_SPAN = 2.6F; + private static final float CROSS_HALF = 2.6F; + private static final float CROSS_SPAN = 5.2F; + private static final long MIN_CARD_MS = 900L; + private static final float SWAP_OUT_SHARE = 0.42F; + private static final float SWAP_IN_START = 0.3F; + private static final float OUTGOING_MIN_SCALE = 0.92F; + private static final float BUMP_AMOUNT = 0.07F; + private static final float BUMP_CURVE = 4.0F; + private static final float SMOOTH_RISE = 3.0F; + private static final float SMOOTH_BEND = 2.0F; + private static final String RECORD_KEY = "record"; + private static final float RECORD_DOT_SIZE = 6.5F; + private static final float RECORD_DOT_MIN_ALPHA = 0.35F; + private static final double RECORD_PULSE_MS = 520.0; + private static final int SIGNAL_BARS = 4; + private static final float SIGNAL_BAR_WIDTH = 1.5F; + private static final float SIGNAL_BAR_GAP = 1.2F; + private static final float SIGNAL_BAR_RADIUS = 0.6F; + private static final float SIGNAL_MIN_HEIGHT = 2.4F; + private static final float SIGNAL_STEP = 1.5F; + private static final float SIGNAL_DIM_ALPHA = 0.26F; + private static final int[] SIGNAL_THRESHOLDS; + private static final int EQ_BARS = 5; + private static final float EQ_BAR_WIDTH = 1.4F; + private static final float EQ_BAR_GAP = 1.1F; + private static final float EQ_MIN_HEIGHT = 1.6F; + private static final float EQ_MAX_HEIGHT = 8.0F; + private static final float EQ_PHASE_STEP = 1.05F; + private static final float EQ_IDLE_ALPHA = 0.45F; + private static final double EQ_PERIOD_MS = 260.0; + private static final float[] EQ_ENVELOPE; + private static final float EQ_VISUAL_RISE = 0.42F; + private static final float EQ_VISUAL_FALL = 0.16F; + private static final float MEDIA_TITLE_MAX_WIDTH = 74.0F; + private static final float MEDIA_EQ_GAP = 5.0F; + private static final int NO_LYRIC = -1; + private static final float LYRIC_MAX_WIDTH = 150.0F; + private static final long LYRIC_LEAD_MS = 150L; + private static final long LYRIC_LAST_LINE_MS = 4000L; + private static final float LYRIC_SWEEP_MS_PER_CHAR = 90.0F; + private static final float LYRIC_SWEEP_MIN_MS = 400.0F; + private static final float LYRIC_FOCUS_RATIO = 0.6F; + private static final float LYRIC_SWAP_MS = 720.0F; + private static final float LYRIC_LEAVE_SPEED = 1.7F; + private static final float LYRIC_ENTER_DELAY = 0.14F; + private static final long FPS_SAMPLE_MS = 500L; + private static final float FPS_ICON_GAP = 2.5F; + private static final float FPS_GAP = 5.0F; + private static final float FPS_ICON_ALPHA = 0.7F; + private static final long MINUTE_MS = 60000L; + private static final String CLOCK_SEPARATOR = ":"; + private static final String CLOCK_LEADING_ZERO = "0"; + private static final int CLOCK_PAD_LIMIT = 10; + private static final iw[] PLAYER_ACTIONS; + private static final int PLAYER_BUTTON_COUNT = 3; + private static final int PREVIOUS_INDEX = 0; + private static final int PLAY_PAUSE_INDEX = 1; + private static final int LEFT_MOUSE_BUTTON = 0; + private static final int NO_BUTTON = -1; + private static final String IDLE_TITLE = "Nothing playing"; + private static final String UNKNOWN_ARTIST = "Unknown artist"; + private static final String ZERO_TIME = "0:00"; + private static final String REMAINING_PREFIX = "-"; + private static final float PANEL_MIN_WIDTH = 152.0F; + private static final float PANEL_MAX_WIDTH = 208.0F; + private static final float PANEL_PAD = 9.0F; + private static final float PANEL_RADIUS = 11.0F; + private static final float PANEL_ART_SIZE = 30.0F; + private static final float PANEL_ART_RADIUS = 5.0F; + private static final float PANEL_ART_GAP = 8.0F; + private static final float PANEL_ART_NOTE_RATIO = 0.46F; + private static final float PANEL_TITLE_GAP = 1.5F; + private static final float PANEL_EQ_GAP = 6.0F; + private static final float PANEL_ROW_GAP = 8.0F; + private static final float PANEL_BAR_HEIGHT = 3.0F; + private static final float PANEL_BAR_TIME_GAP = 2.5F; + private static final float PANEL_CONTROLS_GAP = 6.0F; + private static final float PANEL_BUTTON_SIZE = 15.0F; + private static final float PANEL_BUTTON_GAP = 11.0F; + private static final float PANEL_MAIN_BUTTON_SCALE = 1.3F; + private static final float PANEL_ICON_RATIO = 0.52F; + private static final float PANEL_ARTIST_ALPHA = 0.58F; + private static final float PANEL_TIME_ALPHA = 0.52F; + private static final float PANEL_TRACK_ALPHA = 0.22F; + private static final float PANEL_HOVER_ALPHA = 0.2F; + private static final float PANEL_ART_PLACEHOLDER_ALPHA = 0.14F; + private static final float PANEL_CONTENT_MIN_SCALE = 0.94F; + private static final float PILL_FADE_SPAN = 0.34F; + private static final float SIDE_FADE_SPAN = 0.5F; + private static final float PANEL_FADE_START = 0.44F; + private static final float EXPAND_INTERACTIVE = 0.6F; + private final ct pillSpring = ct.transform(ob.SETTLED, 0.0F); + private final ct swapSpring = ct.layout(ob.SLOW, 1.0F); + private final ct bumpSpring = ct.layout(ob.SLOW, 1.0F); + private final ct expandSpring = ct.transform(ob.SETTLED, 0.0F); + private rb current = BRAND_CARD; + private rb outgoing; + private float outgoingStrength; + private long lastSwapAt; + private long expiresAt; + private boolean primed; + private rb recordCard; + private String recordLabel = ""; + private ajo recordKind = ajo.NONE; + private rb mediaCard; + private jh mediaSnapshot = jh.EMPTY; + private String mediaKey = ""; + private String mediaLabel = ""; + private boolean mediaPlaying; + private final ct lyricScrollSpring = ct.transform(ob.MEDIUM, 0.0F); + private rj lyricLine = rj.EMPTY; + private rj lyricPrevLine = rj.EMPTY; + private String lyricTrackKey = ""; + private int lyricIndex = -1; + private float lyricSweep = 1.0F; + private boolean lyricPrevActive; + private float lyricPrevScroll; + private long lyricSwapAt; + private float lyricViewWidth = 150.0F; + private final ct eqPlaySpring = ct.layout(ob.MEDIUM, 0.0F); + private final float[] eqVisualLevels = new float[5]; + private float eqPlayProgress; + private final re navigator = new re(); + private boolean navigationPanelActive; + private boolean expanded; + private float pillHitX; + private float pillHitY; + private float pillHitWidth; + private float pillHitHeight; + private float panelX; + private float panelY; + private float panelWidth; + private float panelHeight; + private float panelArtSize; + private float panelTextX; + private float panelTextWidth; + private float panelBarY; + private float panelTimeY; + private float panelControlsCenterY; + private long clockMinute = (7419020483998801762L ^ -7419020483998801763L) + ((7419020483998801762L & -7419020483998801763L) << 1); + private String clockText = ""; + private long lastFpsSampleAt; + private int sampledFps = -1; + private String fpsText = ""; + private float width; + private float height; + private float visualX; + private float visualY; + private float visualWidth; + private float visualHeight; + private float shapeX; + private float shapeY; + private float shapeWidth; + private float shapeHeight; + private float shapeRadius; + + public void render(aru var1, float var2, float var3, float var4, float var5, boolean var6, float var7) { + long var8 = System.currentTimeMillis(); + mv var10 = bz.getInstance().getThemeManager().getCurrentTheme(); + ge var11 = pk.font(oe.LABEL_STRONG); + ge var12 = pk.font(oe.LABEL); + ge var13 = pk.font(oe.NUMERIC); + ge var14 = pi.iconFont(); + ge var15 = pk.font(oe.HEADING); + ge var16 = pk.font(oe.CAPTION); + ge var17 = pk.font(oe.MICRO); + this.updateMedia(); + this.updateRecording(); + this.navigator.update(var8); + if (this.expanded && this.navigationPanelActive && !this.navigator.hasPanel()) { + this.expanded = (boolean)(((0)) != 0); + } + + this.advance(var8); + this.updateClock(var8); + this.updateFps(var8); + this.updateEqualizer(var8); + float var18 = pi.barHeight(); + float var19 = pi.pad(); + float var20 = pi.gap(); + float var21 = this.cardWidth(this.current, var11, var12, var19, var20); + if (!this.primed) { + this.pillSpring.jumpTo(var21); + this.primed = (boolean)(((1)) != 0); + } + + float var22 = this.pillSpring.update(var21); + float var23 = var13.width(this.clockText); + float var24 = var14.width("f"); + float var25 = var24 + 2.5F + var13.width(this.fpsText); + float var26 = this.cardWidth(this.baseCard(), var11, var12, var19, var20); + this.width = var23 + 7.0F + var26 + 7.0F + var25 + 5.0F + signalWidth(); + float var27 = var2 + var23 + 7.0F + var26 / 2.0F; + float var28 = var27 - var22 / 2.0F; + float var29 = var3; + this.pillHitX = var28; + this.pillHitY = var29; + this.pillHitWidth = var22; + this.pillHitHeight = var18; + this.navigationPanelActive = (boolean)(((this.current.kind() == ra.NAVIGATION && this.navigator.hasPanel() + ? 1: (-1262219467 | 1262219467) + (-1262219467 & 1262219467))) != 0); + if (this.navigationPanelActive) { + this.navigator.layout(var27, var29, var18); + this.panelX = this.navigator.panelX(); + this.panelY = this.navigator.panelY(); + this.panelWidth = this.navigator.panelWidth(); + this.panelHeight = this.navigator.panelHeight(); + } else { + this.layoutPlayer(var27, var29, var15, var16, var17); + } + + if (this.expanded && !var6) { + this.expanded = (boolean)(((0)) != 0); + } + + float var30 = Math.max(this.expandSpring.update(this.expanded ? 1.0F : 0.0F), 0.0F); + float var31 = Math.min(var30, 1.0F); + this.height = var18 + (this.panelHeight - var18) * var31; + float var32 = Mth.clamp(this.swapSpring.update(1.0F), 0.0F, 1.0F); + float var33 = this.incomingAlpha(var32); + float var34 = this.outgoingAlpha(var32); + asu var35 = var10.getWhite(); + asu var36 = asu.lerp(this.accentOf(this.outgoing, var10), this.accentOf(this.current, var10), var33); + float var37 = Mth.lerp(var30, var22, this.panelWidth); + float var38 = Mth.lerp(var30, var18, this.panelHeight); + float var39 = var27 - var37 / 2.0F; + float var40 = Mth.lerp(var31, var18 / 2.0F, 11.0F); + float var41 = Math.min(var28, var39); + float var42 = Math.max(var28 + var22, var39 + var37); + float var43 = var41 - 7.0F - var23; + float var44 = var42 + 7.0F; + float var45 = var44 + var25 + 5.0F + signalWidth(); + this.visualX = Mth.lerp(var31, var43, var39); + this.visualY = var29; + this.visualWidth = Mth.lerp(var31, var45, var39 + var37) - this.visualX; + this.visualHeight = var38; + this.shapeX = var39; + this.shapeY = var29; + this.shapeWidth = var37; + this.shapeHeight = var38; + this.shapeRadius = var40; + float var46 = Mth.clamp(1.0F - var31 / 0.5F, 0.0F, 1.0F) * var7; + if (var46 > 0.01F) { + float var47 = var29 + (var18 - var13.height()) / 2.0F; + var1.drawText(var13, this.clockText, var43, var47, var35.mulAlpha(var46)); + var1.drawText( + var14, + "f", + var44, + var29 + (var18 - var14.height()) / 2.0F, + var35.mulAlpha(0.7F * var46) + ); + var1.drawText(var13, this.fpsText, var44 + var24 + 2.5F, var47, var35.mulAlpha(var46)); + this.drawSignal(var1, var44 + var25 + 5.0F, var29, var18, var35.mulAlpha(var46)); + } + + arq var53 = asj.uniform(var40); + float var48 = Mth.clamp((0.34F - var31) / 0.34F, 0.0F, 1.0F) * var7; + float var49 = Mth.clamp((var31 - 0.44F) / 0.56F, 0.0F, 1.0F) * var7; + float var50 = this.bumpScale(); + int var51 = var50 != 1.0F ? 1: 0; + if (var51 != 0) { + float var52 = var29 + var38 / 2.0F; + var1.pose().pushMatrix(); + var1.pose().translate(var27, var52); + var1.pose().scale(var50, var50); + var1.pose().translate(-var27, -var52); + } + + pi.surface(var1, var39, var29, var37, var38, var53, asu.WHITE.mulAlpha(var7)); + this.drawAccentWash(var1, var39, var29, var37, var38, var40, var36, var48); + atb.drawRoundedBorder(var1.pose(), var39, var29, var37, var38, pk.borderRim(), var53, var35.mulAlpha(0.12F * var7)); + var1.pushClipBounds(var39, var29, var39 + var37, var29 + var38); + if (var48 > 0.01F) { + if (var34 > 0.01F) { + float var54 = 1.0F - var34 / Math.max(this.outgoingStrength, 0.01F); + this.drawCard( + var1, + this.outgoing, + var28, + var29, + var22, + var18, + var19, + var20, + var34 * var48, + -3.0F * var54, + Mth.lerp(var54, 1.0F, 0.92F), + var10, + var11, + var12, + var8 + ); + } + + this.drawCard( + var1, + this.current, + var28, + var29, + var22, + var18, + var19, + var20, + var33 * var48, + 3.0F * (1.0F - var33), + 0.8F + 0.19999999F * backOut(var33), + var10, + var11, + var12, + var8 + ); + } + + if (var49 > 0.01F) { + if (this.navigationPanelActive) { + this.navigator.drawPanel(var1, var10, var49, var4, var5, var6, var8); + } else { + this.drawPlayer(var1, var10, var15, var16, var17, var49, var4, var5, var6, var8); + } + } + + var1.popClip(); + if (var51 != 0) { + var1.pose().popMatrix(); + } + + if (this.swapSpring.isSettled()) { + this.outgoing = null; + } + } + + public boolean handleClick(double var1, double var3, int var5) { + if (var5 != 0) { + return (boolean)(((0)) != 0); + } + + if (this.expanded && this.expandSpring.value() >= 0.6F) { + if (this.navigationPanelActive) { + if (this.navigator.handlePanelClick((float)var1, (float)var3)) { + return (boolean)(((1)) != 0); + } + } else { + int var6 = this.buttonIndexAt((float)var1, (float)var3); + if (var6 >= 0) { + iz.getInstance().dispatch(PLAYER_ACTIONS[var6]); + return (boolean)(((1)) != 0); + } + } + } + + if (aqj.isHovered(var1, var3, this.pillHitX, this.pillHitY, this.pillHitWidth, this.pillHitHeight)) { + if (!this.expanded && this.mediaCard == null && !this.navigationPanelActive) { + return (boolean)(((0)) != 0); + } + + this.expanded = (boolean)(((!this.expanded + ? 1: (248482203 ^ -248482203) + ((248482203 & -248482203) << 1))) != 0); + return (boolean)(((1)) != 0); + } else { + return (boolean)(((this.expanded && aqj.isHovered(var1, var3, this.panelX, this.panelY, this.panelWidth, this.panelHeight) + ? 1: (1402089608 | -1402089608) + (1402089608 & -1402089608))) != 0); + } + } + + private void updateMedia() { + iz var1 = null; + jh var2 = null; + String var3 = null; + String var4 = null; + int var5 = 1855977339; + + while (true) { + switch (var5) { + case -1876129719: + if (var3.equals(this.mediaKey)) { + var5 = -1528807860; + } else { + var5 = -785317234; + } + break; + case -1528807860: + if (var4.equals(this.mediaLabel)) { + var5 = 1511958177; + } else { + var5 = -785317234; + } + break; + case -1046521301: + var3 = var2.trackKey(); + var4 = var2.title(); + if (this.mediaCard != null) { + var5 = -1876129719; + } else { + var5 = -785317234; + } + break; + case -785317234: + this.mediaKey = var3; + this.mediaLabel = var4; + this.mediaPlaying = var2.playing(); + this.mediaCard = rb.media(var3, var4, var2.playing()); + var5 = 976288977; + break; + case -757087150: + in.getInstance().requestUpdates(); + var5 = -1046521301; + break; + case 740420897: + if (var2.playing()) { + var5 = -757087150; + } else { + var5 = -1046521301; + } + break; + case 976288977: + this.updateLyrics(var1, var2); + return; + case 1457585768: + this.mediaCard = null; + this.mediaKey = ""; + this.expanded = (boolean)(((0)) != 0); + this.resetLyrics(); + return; + case 1511958177: + if (var2.playing() != this.mediaPlaying) { + var5 = -785317234; + } else { + var5 = 976288977; + } + break; + case 1855977339: + default: + var1 = iz.getInstance(); + var1.requestUpdates(); + var2 = var1.getSnapshot(); + this.mediaSnapshot = var2; + if (!var2.hasTrack()) { + var5 = 1457585768; + } else { + var5 = 740420897; + } + } + } + } + + private void updateLyrics(iz var1, jh var2) { + String var3 = var2.title(); + int var4 = -1; + float var5 = 1.0F; + jd var6 = vm.INSTANCE.isWatermarkLyricsEnabled() && var2.hasProgress() ? je.getInstance().lookup(var2) : null; + if (var6 != null) { + long var7 = var1.getInterpolatedPositionMillis() + + (3805220515021427861L ^ -3805220515021427711L) + + ((3805220515021427861L & -3805220515021427711L) << 1); + int var9 = var6.indexAt(var7); + if (var9 >= 0 && !var6.line(var9).isEmpty()) { + String var10 = var6.line(var9); + long var11 = var6.start(var9); + float var13 = Math.max(400.0F, var10.length() * 90.0F); + float var14 = Math.max( + 1.0F, + Math.min( + (float)(var6.end(var9, (-1314314484473049936L ^ 1314314484473053936L) + ((-1314314484473049936L & 1314314484473053936L) << 1)) - var11), + var13 + ) + ); + var5 = Mth.clamp((float)(var7 - var11) / var14, 0.0F, 1.0F); + var3 = var10; + var4 = var9; + } + } + + ge var15 = pk.font(oe.LABEL); + String var8 = var2.trackKey(); + if (!var8.equals(this.lyricTrackKey)) { + this.lyricTrackKey = var8; + this.lyricLine = rj.layout(var15, var3); + this.lyricIndex = var4; + this.lyricPrevLine = rj.EMPTY; + this.lyricSwapAt = (2660069340164431684L | -2660069340164431684L) + (2660069340164431684L & -2660069340164431684L); + this.lyricScrollSpring.jumpTo(0.0F); + } else if (var4 != this.lyricIndex || !this.lyricLine.matches(var15, var3)) { + if (var4 != this.lyricIndex || !this.lyricLine.text().equals(var3)) { + this.lyricPrevLine = this.lyricLine; + this.lyricPrevActive = (boolean)(((this.lyricIndex != -1? 1: (593426168 | -593426168) + (593426168 & -593426168))) != 0); + this.lyricPrevScroll = this.lyricScrollSpring.value(); + this.lyricSwapAt = System.currentTimeMillis(); + this.lyricScrollSpring.jumpTo(0.0F); + } + + this.lyricLine = rj.layout(var15, var3); + this.lyricIndex = var4; + } + + this.lyricSweep = var5; + float var16 = Math.max(0.0F, this.lyricLine.width() - this.lyricViewWidth); + float var17 = this.lyricLine.sweepFocus(var5) - this.lyricViewWidth * 0.6F; + this.lyricScrollSpring.update(this.lyricIndex == -1? 0.0F : Mth.clamp(var17, 0.0F, var16)); + } + + private void resetLyrics() { + this.lyricLine = rj.EMPTY; + this.lyricPrevLine = rj.EMPTY; + this.lyricTrackKey = ""; + this.lyricIndex = -1; + this.lyricSweep = 1.0F; + this.lyricSwapAt = (3979784219369647814L | -3979784219369647814L) + (3979784219369647814L & -3979784219369647814L); + this.lyricScrollSpring.jumpTo(0.0F); + } + + private float lyricTransition(long var1) { + return Mth.clamp((float)(var1 - this.lyricSwapAt) / 720.0F, 0.0F, 1.0F); + } + + private boolean lyricsShowing() { + int var2 = 0; + int var1 = 1791676186; + + while (true) { + switch (var1) { + case -369696117: + var2 = 0; + var1 = 931846567; + break; + case 931846567: + return (boolean)((var2) != 0); + case 1621289175: + var2 = 1; + var1 = 931846567; + break; + case 1791676186: + default: + if (this.lyricIndex != (732727075 ^ -732727076) + ((732727075 & -732727076) << 1)) { + var1 = 1621289175; + } else { + var1 = -369696117; + } + } + } + } + + private void updateRecording() { + ajp var1 = ajn.getInstance().status(); + if (!var1.active()) { + this.recordCard = null; + this.recordLabel = ""; + this.recordKind = ajo.NONE; + } else { + if (this.recordCard == null || var1.kind() != this.recordKind || !var1.label().equals(this.recordLabel)) { + this.recordLabel = var1.label(); + this.recordKind = var1.kind(); + this.recordCard = rb.record( + "record", + var1.label(), + (boolean)(((var1.kind() == ajo.RECORDING + ? 1: (421048869 | -421048869) + (421048869 & -421048869)) + ) != 0)); + } + } + } + + private rb baseCard() { + rb var1 = null; + rb var3 = null; + int var2 = -1277264714; + + while (true) { + switch (var2) { + case -1453134330: + var3 = BRAND_CARD; + var2 = 1078451006; + break; + case -1296708024: + var1 = this.navigator.card(); + if (var1 != null) { + var2 = 1817322541; + } else { + var2 = 582729329; + } + break; + case -1277264714: + default: + if (this.recordCard != null) { + var2 = 777147077; + } else { + var2 = -1296708024; + } + break; + case 460544589: + var3 = this.mediaCard; + var2 = 1078451006; + break; + case 582729329: + if (this.mediaCard != null) { + var2 = 460544589; + } else { + var2 = -1453134330; + } + break; + case 777147077: + return this.recordCard; + case 1078451006: + return var3; + case 1817322541: + return var1; + } + } + } + + private void advance(long var1) { + rb var3 = null; + int var4 = -1059723781; + + while (true) { + switch (var4) { + case -2131556254: + if (!this.current.key().equals(var3.key())) { + var4 = 919882656; + } else { + var4 = 569192066; + } + break; + case -1692918219: + return; + case -1559641206: + return; + case -1524760169: + var3 = rc.poll(var1); + if (var3 != null) { + var4 = 1996762506; + } else { + var4 = 624703317; + } + break; + case -1227900422: + if (var1 >= this.expiresAt) { + var4 = -168043120; + } else { + var4 = -1692918219; + } + break; + case -1059723781: + default: + if (var1 - this.lastSwapAt >= (-7523945648872649198L ^ 7523945648872650098L) + ((-7523945648872649198L & 7523945648872650098L) << 1)) { + var4 = -1524760169; + } else { + var4 = 624703317; + } + break; + case -890627147: + this.current = var3; + var4 = -1559641206; + break; + case -168043120: + this.beginSwap(var3, var1); + var4 = -1692918219; + break; + case 569192066: + if (this.current != var3) { + var4 = -890627147; + } else { + var4 = -1559641206; + } + break; + case 624703317: + var3 = this.baseCard(); + if (this.current.isPersistent()) { + var4 = -2131556254; + } else { + var4 = -1227900422; + } + break; + case 919882656: + this.beginSwap(var3, var1); + var4 = -1559641206; + break; + case 1996762506: + this.beginSwap(var3, var1); + return; + } + } + } + + private void beginSwap(rb var1, long var2) { + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var8 = 0.0F; + int var7 = 583876867; + + while (true) { + switch (var7) { + case -1726960893: + this.bumpSpring.jumpTo(0.0F); + this.bumpSpring.animateTo(1.0F); + var7 = 1196074301; + break; + case -518249413: + this.outgoingStrength = var6; + var7 = 721538423; + break; + case -405121174: + this.outgoing = this.current; + this.outgoingStrength = var5; + var7 = 721538423; + break; + case -86248606: + var8 = this.outgoingAlpha(var4); + var7 = 1639201754; + break; + case 256663822: + var8 = 0.0F; + var7 = 1639201754; + break; + case 583876867: + default: + var4 = Mth.clamp(this.swapSpring.value(), 0.0F, 1.0F); + var5 = this.incomingAlpha(var4); + if (this.outgoing == null) { + var7 = 256663822; + } else { + var7 = -86248606; + } + break; + case 721538423: + this.current = var1; + this.lastSwapAt = var2; + this.expiresAt = var2 + var1.durationMs(); + this.swapSpring.jumpTo(0.0F); + this.swapSpring.animateTo(1.0F); + if (!var1.isPersistent()) { + var7 = -1726960893; + } else { + var7 = 1196074301; + } + break; + case 1196074301: + return; + case 1639201754: + var6 = var8; + if (var6 <= var5) { + var7 = -405121174; + } else { + var7 = -518249413; + } + } + } + } + + private float incomingAlpha(float var1) { + return smoothstep((var1 - 0.3F) / 0.7F); + } + + private float outgoingAlpha(float var1) { + return this.outgoingStrength * (1.0F - smoothstep(var1 / 0.42F)); + } + + private float bumpScale() { + float var1 = Mth.clamp(this.bumpSpring.update(1.0F), 0.0F, 1.0F); + return 1.0F + 0.28F * var1 * (1.0F - var1); + } + + private static float smoothstep(float var0) { + float var1 = Mth.clamp(var0, 0.0F, 1.0F); + return var1 * var1 * (3.0F - 2.0F * var1); + } + + private void updateClock(long var1) { + long var3 = (-7156082688769979221L ^ 7156082688769979221L) + ((-7156082688769979221L & 7156082688769979221L) << 1); + LocalTime var5 = null; + int var6 = 1449039827; + + while (true) { + switch (var6) { + case -657258469: + return; + case -432141607: + this.clockMinute = var3; + var5 = LocalTime.now(); + this.clockText = padded(var5.getHour()) + ":" + padded(var5.getMinute()); + return; + case 1449039827: + } + + var3 = var1 / ((8444478464424605854L ^ -8444478464424545854L) + ((8444478464424605854L & -8444478464424545854L) << 1)); + if (var3 == this.clockMinute) { + var6 = -657258469; + } else { + var6 = -432141607; + } + } + } + + private void updateFps(long var1) { + int var3 = 0; + int var4 = -1832176885; + + while (true) { + switch (var4) { + case -2084130911: + this.lastFpsSampleAt = var1; + var3 = Minecraft.getInstance().getFps(); + if (var3 == this.sampledFps) { + var4 = 641918716; + } else { + var4 = 2012369677; + } + break; + case -1832176885: + default: + if (this.sampledFps >= 0) { + var4 = -486270742; + } else { + var4 = -2084130911; + } + break; + case -486270742: + if (var1 - this.lastFpsSampleAt < (-2899373653756996632L ^ 2899373653756997132L) + ((-2899373653756996632L & 2899373653756997132L) << 1)) { + var4 = -452871600; + } else { + var4 = -2084130911; + } + break; + case -452871600: + return; + case 641918716: + return; + case 2012369677: + this.sampledFps = var3; + this.fpsText = Integer.toString(var3); + return; + } + } + } + + private static String padded(int var0) { + String var2 = null; + int var1 = 1924833296; + + while (true) { + switch (var1) { + case -2014828197: + var2 = "0" + var0; + var1 = -1734192463; + break; + case -1734192463: + return var2; + case -1721009759: + var2 = Integer.toString(var0); + var1 = -1734192463; + break; + case 1924833296: + default: + if (var0 < (-474692475 | 474692485) + (-474692475 & 474692485)) { + var1 = -2014828197; + } else { + var1 = -1721009759; + } + } + } + } + + private float cardWidth(rb var1, ge var2, ge var3, float var4, float var5) { + ge var6 = null; + float var7 = 0.0F; + ge var9 = null; + float var10 = 0.0F; + int var8 = -308731223; + + while (true) { + switch (var8) { + case -1669446699: + var6 = var9; + var7 = var6.width(var1.label()); + if (var1.kind() == ra.MEDIA) { + var8 = -1590665911; + } else { + var8 = -333155802; + } + break; + case -1605761025: + var10 = Math.min(var7, 74.0F); + var8 = -716521682; + break; + case -1590665911: + if (this.lyricsShowing()) { + var8 = -383697116; + } else { + var8 = -1605761025; + } + break; + case -716521682: + var7 = var10; + var7 += 5.0F + equalizerWidth(); + var8 = -333155802; + break; + case -383697116: + var10 = Math.min(this.lyricLine.width(), 150.0F); + var8 = -716521682; + break; + case -333155802: + return Math.max(54.0F, var4 + 10.0F + var5 + var7 + var4 + 3.0F); + case -308731223: + default: + if (var1.kind() == ra.NAVIGATION) { + var8 = 1819642373; + } else { + var8 = 253582891; + } + break; + case 130471527: + var9 = var3; + var8 = -1669446699; + break; + case 253582891: + if (var1.kind() == ra.BRAND) { + var8 = 555492928; + } else { + var8 = 130471527; + } + break; + case 555492928: + var9 = var2; + var8 = -1669446699; + break; + case 1819642373: + return this.navigator.pillWidth(var1, var3, var4, var5); + } + } + } + + private asu accentOf(rb var1, mv var2) { + asu var4 = null; + asu var5 = null; + int var3 = 1697504089; + + while (true) { + switch (var3) { + case -2073188119: + var5 = pi.gaugeBad(); + var3 = -853289256; + break; + case -1329147323: + var5 = pi.gaugeGood(); + var3 = -853289256; + break; + case -1113165503: + return this.navigator.accent(); + case -979151800: + if (var1.positive()) { + var3 = -1329147323; + } else { + var3 = -2073188119; + } + break; + case -853289256: + return var5; + case -392604088: + return var4; + case -338199142: + var4 = var2.getColor(); + var3 = -392604088; + break; + case -71763082: + var4 = pi.gaugeBad(); + var3 = -392604088; + break; + case 136383407: + if (var1.kind() == ra.NAVIGATION) { + var3 = -1113165503; + } else { + var3 = 984040112; + } + break; + case 677230377: + if (var1.kind() != ra.TOGGLE) { + var3 = 778865951; + } else { + var3 = -979151800; + } + break; + case 778865951: + return var2.getColor(); + case 984040112: + if (var1.kind() == ra.RECORD) { + var3 = 1152443119; + } else { + var3 = 677230377; + } + break; + case 1152443119: + if (var1.positive()) { + var3 = -71763082; + } else { + var3 = -338199142; + } + break; + case 1310653770: + return var2.getColor(); + case 1697504089: + default: + if (var1 == null) { + var3 = 1310653770; + } else { + var3 = 136383407; + } + } + } + } + + private static float backOut(float var0) { + float var1 = 0.0F; + int var2 = -1492339876; + + while (true) { + switch (var2) { + case -1492339876: + default: + if (var0 <= 0.0F) { + var2 = -204069969; + } else { + var2 = 665755267; + } + break; + case -204069969: + return 0.0F; + case 370712926: + return 1.0F; + case 665755267: + if (var0 >= 1.0F) { + var2 = 370712926; + } else { + var2 = 1690662796; + } + break; + case 1690662796: + var1 = var0 - 1.0F; + return var1 * var1 * (2.70158F * var1 + 1.70158F) + 1.0F; + } + } + } + + private void drawAccentWash(aru var1, float var2, float var3, float var4, float var5, float var6, asu var7, float var8) { + float var9 = 0.0F; + asu var10 = null; + asu var11 = null; + int var12 = 1170553250; + + while (true) { + switch (var12) { + case 354806035: + return; + case 908989569: + var9 = Math.min(var4, Math.min(var4 * 0.62F, var5 * 3.2F)); + var10 = var7.mulAlpha(0.36F * var8); + var11 = var7.mulAlpha(0.0F); + var1.drawRoundedRect(var2, var3, var9, var5, arq.left(var6, var6), ary.of(var10, var10, var11, var11)); + return; + case 1170553250: + } + + if (var8 <= 0.01F) { + var12 = 354806035; + } else { + var12 = 908989569; + } + } + } + + private void layoutPlayer(float var1, float var2, ge var3, ge var4, ge var5) { + float var6 = var3.height() + 1.5F + var4.height(); + this.panelArtSize = Math.max(30.0F, var6); + float var7 = var3.width(this.playerTitle()); + float var8 = var4.width(this.playerArtist()); + float var9 = 9.0F + this.panelArtSize + 8.0F + Math.max(var7, var8) + 6.0F + equalizerWidth() + 9.0F; + this.panelWidth = Mth.clamp(var9, 152.0F, 208.0F); + this.panelHeight = 9.0F + this.panelArtSize + 8.0F + 3.0F + 2.5F + var5.height() + 6.0F + mainButtonSize() + 9.0F; + this.panelX = var1 - this.panelWidth / 2.0F; + this.panelY = var2; + this.panelTextX = this.panelX + 9.0F + this.panelArtSize + 8.0F; + this.panelTextWidth = this.panelX + this.panelWidth - 9.0F - equalizerWidth() - 6.0F - this.panelTextX; + this.panelBarY = this.panelY + 9.0F + this.panelArtSize + 8.0F; + this.panelTimeY = this.panelBarY + 3.0F + 2.5F; + this.panelControlsCenterY = this.panelTimeY + var5.height() + 6.0F + mainButtonSize() / 2.0F; + } + + private void drawPlayer(aru var1, mv var2, ge var3, ge var4, ge var5, float var6, float var7, float var8, boolean var9, long var10) { + float var12 = 0.94F + 0.060000002F * var6; + float var13 = this.panelX + this.panelWidth / 2.0F; + float var14 = this.panelY + this.panelHeight / 2.0F; + var1.pose().pushMatrix(); + var1.pose().translate(var13, var14); + var1.pose().scale(var12, var12); + var1.pose().translate(-var13, -var14); + asu var15 = var2.getWhite(); + float var16 = this.panelX + 9.0F; + float var17 = this.panelY + 9.0F; + this.drawPlayerArtwork(var1, var16, var17, var6, var2); + float var18 = var3.height() + 1.5F + var4.height(); + float var19 = var17 + (this.panelArtSize - var18) / 2.0F; + var1.drawScrollingText(var3, this.playerTitle(), this.panelTextX, var19, this.panelTextWidth, var15.mulAlpha(var6)); + var1.drawScrollingText(var4, this.playerArtist(), this.panelTextX, var19 + var3.height() + 1.5F, this.panelTextWidth, var15.mulAlpha(var6 * 0.58F)); + this.drawEqualizer( + var1, + this.panelX + this.panelWidth - 9.0F - equalizerWidth(), + var17 + this.panelArtSize / 2.0F, + var2.getColor().mulAlpha(var6), + this.mediaSnapshot.playing(), + var10 + ); + this.drawPlayerProgress(var1, var2, var5, var6); + this.drawPlayerControls(var1, var2, var6, var7, var8, var9); + var1.pose().popMatrix(); + } + + private void drawPlayerArtwork(aru var1, float var2, float var3, float var4, mv var5) { + arq var6 = null; + Identifier var7 = null; + float var8 = 0.0F; + float var9 = 0.0F; + Identifier var11 = null; + int var10 = 1463903528; + + while (true) { + switch (var10) { + case -555401567: + var11 = null; + var10 = 1628978422; + break; + case 933222023: + var1.drawRoundedRect(var2, var3, this.panelArtSize, this.panelArtSize, var6, var5.getWhite().mulAlpha(var4 * 0.14F)); + var8 = this.panelArtSize * 0.46F; + var9 = (this.panelArtSize - var8) / 2.0F; + atb.drawRoundedTexture( + var1.pose(), bz.id("icons/media_note.png"), var2 + var9, var3 + var9, var8, var8, arq.ZERO, var5.getWhite().mulAlpha(var4) + ); + return; + case 981420857: + var11 = ix.resolve(this.mediaSnapshot.trackKey()); + var10 = 1628978422; + break; + case 1081630085: + atb.drawRoundedTexture(var1.pose(), var7, var2, var3, this.panelArtSize, this.panelArtSize, var6, asu.WHITE.mulAlpha(var4)); + return; + case 1463903528: + default: + var6 = asj.uniform(5.0F); + if (this.mediaSnapshot.hasTrack()) { + var10 = 981420857; + } else { + var10 = -555401567; + } + break; + case 1628978422: + var7 = var11; + if (var7 != null) { + var10 = 1081630085; + } else { + var10 = 933222023; + } + } + } + } + + private void drawPlayerProgress(aru var1, mv var2, ge var3, float var4) { + float var5 = this.panelX + 9.0F; + float var6 = this.panelWidth - 9.0F - 9.0F; + arq var7 = asj.pill(3.0F); + asu var8 = var2.getWhite(); + var1.drawRoundedRect(var5, this.panelBarY, var6, 3.0F, var7, var8.mulAlpha(var4 * 0.22F)); + boolean var9 = this.mediaSnapshot.hasProgress(); + long var10 = this.mediaSnapshot.durationMillis(); + long var12 = var9 + ? iz.getInstance().getInterpolatedPositionMillis() + : (-5775019962425076969L | 5775019962425076969L) + (-5775019962425076969L & 5775019962425076969L); + if (var9) { + float var14 = Mth.clamp((float)var12 / (float)var10, 0.0F, 1.0F); + var1.drawRoundedRect(var5, this.panelBarY, Math.max(3.0F, var6 * var14), 3.0F, var7, var2.getColor().mulAlpha(var4)); + } + + asu var17 = var8.mulAlpha(var4 * 0.52F); + String var15 = var9 ? jj.format(var12) : "0:00"; + String var16 = var9 ? "-" + jj.format(var10 - var12) : "0:00"; + var1.drawText(var3, var15, var5, this.panelTimeY, var17); + var1.drawText(var3, var16, var5 + var6 - var3.width(var16), this.panelTimeY, var17); + } + + private void drawPlayerControls(aru var1, mv var2, float var3, float var4, float var5, boolean var6) { + int var7 = 0; + int var8 = 0; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + int var15 = 0; + int var14 = -708287903; + + while (true) { + switch (var14) { + case -1535480511: + var12 = var9 * 0.52F; + var13 = (var9 - var12) / 2.0F; + atb.drawRoundedTexture( + var1.pose(), bz.id(this.buttonTexture(var8)), var10 + var13, var11 + var13, var12, var12, arq.ZERO, var2.getWhite().mulAlpha(var3) + ); + var8++; + var14 = 1810167676; + break; + case -1265117154: + var15 = this.buttonIndexAt(var4, var5); + var14 = -31905149; + break; + case -1063614785: + var1.drawRoundedRect(var10, var11, var9, var9, asj.pill(var9), var2.getColor().mulAlpha(var3 * 0.2F)); + var14 = -1535480511; + break; + case -892638198: + var15 = -1; + var14 = -31905149; + break; + case -708287903: + default: + if (var6) { + var14 = -1265117154; + } else { + var14 = -892638198; + } + break; + case -31905149: + var7 = var15; + var8 = 0; + var14 = 1810167676; + break; + case 1400028800: + return; + case 1810167676: + if (var8 < (769935622 | -769935619) + (769935622 & -769935619)) { + var14 = 1823326599; + } else { + var14 = 1400028800; + } + break; + case 1823326599: + var9 = buttonSize(var8); + var10 = this.buttonLeft(var8); + var11 = this.panelControlsCenterY - var9 / 2.0F; + if (var7 == var8) { + var14 = -1063614785; + } else { + var14 = -1535480511; + } + } + } + } + + private int buttonIndexAt(float var1, float var2) { + int var3 = 0; + float var4 = 0.0F; + int var5 = -430560147; + + while (true) { + switch (var5) { + case -1425472138: + var4 = buttonSize(var3); + if (aqj.isHovered(var1, var2, this.buttonLeft(var3), this.panelControlsCenterY - var4 / 2.0F, var4, var4)) { + var5 = 1952489123; + } else { + var5 = -1242190379; + } + break; + case -1242190379: + var3++; + var5 = -1117906076; + break; + case -1117906076: + if (var3 < (1983788346 | -1983788343) + (1983788346 & -1983788343)) { + var5 = -1425472138; + } else { + var5 = 1251755198; + } + break; + case -430560147: + default: + var3 = 0; + var5 = -1117906076; + break; + case 1251755198: + return -1; + case 1952489123: + return var3; + } + } + } + + private float buttonLeft(int var1) { + float var2 = 0.0F; + int var3 = 0; + int var4 = 314733244; + + while (true) { + switch (var4) { + case -295580182: + if (var3 < var1) { + var4 = 1521233656; + } else { + var4 = -158621846; + } + break; + case -158621846: + return var2; + case 314733244: + default: + var2 = this.panelX + (this.panelWidth - controlsWidth()) / 2.0F; + var3 = 0; + var4 = -295580182; + break; + case 1521233656: + var2 += buttonSize(var3) + 11.0F; + var3++; + var4 = -295580182; + } + } + } + + private static float controlsWidth() { + float var0 = 0.0F; + int var1 = 0; + int var2 = -741383810; + + while (true) { + switch (var2) { + case -741383810: + default: + var0 = 22.0F; + var1 = 0; + var2 = 1173793381; + break; + case -352237275: + var0 += buttonSize(var1); + var1++; + var2 = 1173793381; + break; + case 1173793381: + if (var1 < (-1883942984 | 1883942987) + (-1883942984 & 1883942987)) { + var2 = -352237275; + } else { + var2 = 1994715053; + } + break; + case 1994715053: + return var0; + } + } + } + + private static float buttonSize(int var0) { + float var2 = 0.0F; + int var1 = 1389352234; + + while (true) { + switch (var1) { + case -1817894981: + var2 = mainButtonSize(); + var1 = 1341351046; + break; + case 1038397829: + var2 = 15.0F; + var1 = 1341351046; + break; + case 1341351046: + return var2; + case 1389352234: + default: + if (var0 == (597148227 | -597148226) + (597148227 & -597148226)) { + var1 = -1817894981; + } else { + var1 = 1038397829; + } + } + } + } + + private static float mainButtonSize() { + return 19.5F; + } + + private String buttonTexture(int var1) { + String var3 = null; + String var4 = null; + int var2 = 1219789714; + + while (true) { + switch (var2) { + case -791304869: + var4 = "icons/media_prev.png"; + var2 = -245916518; + break; + case -781367162: + if (this.mediaSnapshot.playing()) { + var2 = -365256994; + } else { + var2 = 1853375762; + } + break; + case -426787592: + return var3; + case -365256994: + var3 = "icons/media_pause.png"; + var2 = -426787592; + break; + case -245916518: + return var4; + case 1192861545: + var4 = "icons/media_next.png"; + var2 = -245916518; + break; + case 1219789714: + default: + if (var1 == (1939690984 | -1939690983) + (1939690984 & -1939690983)) { + var2 = -781367162; + } else { + var2 = 1909964758; + } + break; + case 1853375762: + var3 = "icons/media_play.png"; + var2 = -426787592; + break; + case 1909964758: + if (var1 == 0) { + var2 = -791304869; + } else { + var2 = 1192861545; + } + } + } + } + + private String playerTitle() { + String var2 = null; + int var1 = 995031240; + + while (true) { + switch (var1) { + case -948440475: + var2 = "Nothing playing"; + var1 = 352576784; + break; + case 352576784: + return var2; + case 774821404: + var2 = this.mediaSnapshot.title(); + var1 = 352576784; + break; + case 995031240: + default: + if (this.mediaSnapshot.hasTrack()) { + var1 = 774821404; + } else { + var1 = -948440475; + } + } + } + } + + private String playerArtist() { + String var2 = null; + int var1 = 735705140; + + while (true) { + switch (var1) { + case -2141524747: + if (this.mediaSnapshot.artist().isEmpty()) { + var1 = 157449457; + } else { + var1 = -1427201656; + } + break; + case -1427201656: + var2 = this.mediaSnapshot.artist(); + var1 = 893028133; + break; + case -757552516: + return "Evolution"; + case 157449457: + var2 = "Unknown artist"; + var1 = 893028133; + break; + case 735705140: + default: + if (!this.mediaSnapshot.hasTrack()) { + var1 = -757552516; + } else { + var1 = -2141524747; + } + break; + case 893028133: + return var2; + } + } + } + + private void drawCard( + aru var1, + rb var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + mv var12, + ge var13, + ge var14, + long var15 + ) { + ge var17 = null; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + asu var22 = null; + float var23 = 0.0F; + float var24 = 0.0F; + ge var26 = null; + int var25 = 1331626430; + + while (true) { + switch (var25) { + case -1763402718: + this.lyricViewWidth = var24; + var25 = 1344780124; + break; + case -1176512447: + if (var2.kind() == ra.BRAND) { + var25 = 1555917707; + } else { + var25 = -447177898; + } + break; + case -728854829: + if (var2.kind() == ra.NAVIGATION) { + var25 = 766247452; + } else { + var25 = -1176512447; + } + break; + case -447177898: + var26 = var14; + var25 = 1058836250; + break; + case -245094674: + var1.pose().popMatrix(); + return; + case 112563696: + var23 = var3 + var5 - var7 - 3.0F - equalizerWidth(); + var24 = Math.max(0.0F, var23 - 5.0F - var20); + if (var2 == this.current) { + var25 = -1763402718; + } else { + var25 = 1344780124; + } + break; + case 565780600: + return; + case 766247452: + this.navigator.drawPill(var1, var12, var2, var3, var4, var5, var6, var7, var8, var9, var10); + return; + case 1058836250: + var17 = var26; + var18 = var3 + var7; + var19 = var4 + var6 / 2.0F; + var1.pose().pushMatrix(); + var1.pose().translate(var18, var19); + var1.pose().scale(var11, var11); + var1.pose().translate(-var18, -var19); + this.drawCardIcon(var1, var2, var18, var19, var9, var12); + var20 = var18 + 10.0F + var8; + var21 = var4 + (var6 - var17.height()) / 2.0F + var10; + var22 = var12.getWhite().mulAlpha(var9); + if (var2.kind() == ra.MEDIA) { + var25 = 112563696; + } else { + var25 = 1796282547; + } + break; + case 1331626430: + default: + if (var2 != null) { + var25 = 1994370872; + } else { + var25 = 565780600; + } + break; + case 1344780124: + this.drawMediaLines(var1, var17, var2, var20, var21, var24, var12, var9, var15); + this.drawEqualizer(var1, var23, var19, var12.getColor().mulAlpha(var9), var2.positive(), var15); + var25 = -245094674; + break; + case 1555917707: + var26 = var13; + var25 = 1058836250; + break; + case 1796282547: + var1.drawText(var17, var2.label(), var20, var21, var22); + var25 = -245094674; + break; + case 1994370872: + if (var9 <= 0.01F) { + var25 = 565780600; + } else { + var25 = -728854829; + } + } + } + } + + private void drawMediaLines(aru var1, ge var2, rb var3, float var4, float var5, float var6, mv var7, float var8, long var9) { + asu var11 = var7.getWhite(); + if (this.lyricLine.isEmpty()) { + var1.drawScrollingText(var2, var3.label(), var4, var5, 74.0F, var11.mulAlpha(var8)); + } else { + asu var12 = var7.getColor(); + float var13 = this.lyricTransition(var9); + if (var13 < 1.0F && !this.lyricPrevLine.isEmpty()) { + float var14 = Math.min(1.0F, var13 * 1.7F); + this.lyricPrevLine + .draw( + var1, + var4, + var5, + lyricViewport(var6, this.lyricPrevActive), + this.lyricPrevScroll, + 1.0F, + var14, + (boolean)(((1)) != 0), + this.lyricPrevActive, + var11, + var12, + var8, + var9 + ); + } + + boolean var17 = this.lyricsShowing(); + float var15 = lyricViewport(var6, var17); + if (var13 >= 1.0F && !var17 && this.lyricLine.width() > var15) { + var1.drawScrollingText(var2, this.lyricLine.text(), var4, var5, var15, var11.mulAlpha(var8)); + } else { + float var16 = Mth.clamp((var13 - 0.14F) / 0.86F, 0.0F, 1.0F); + this.lyricLine + .draw( + var1, + var4, + var5, + var15, + var17 ? this.lyricScrollSpring.value() : 0.0F, + this.lyricSweep, + var16, + (boolean)(((0)) != 0), + var17, + var11, + var12, + var8, + var9 + ); + } + } + } + + private static float lyricViewport(float var0, boolean var1) { + float var3 = 0.0F; + int var2 = 590463219; + + while (true) { + switch (var2) { + case -1245005346: + var3 = var0; + var2 = 907564262; + break; + case -273334224: + var3 = Math.min(var0, 74.0F); + var2 = 907564262; + break; + case 590463219: + default: + if (var1) { + var2 = -1245005346; + } else { + var2 = -273334224; + } + break; + case 907564262: + return var3; + } + } + } + + private void drawCardIcon(aru var1, rb var2, float var3, float var4, float var5, mv var6) { + float var7 = 0.0F; + String var8 = null; + ge var9 = null; + int var10 = 213763071; + + while (true) { + switch (var10) { + case -1352984869: + var8 = var2.glyph(); + if (var2.kind() == ra.EVENT) { + var10 = -217779611; + } else { + var10 = -910482054; + } + break; + case -910482054: + atb.drawRoundedTexture(var1.pose(), bz.id("icons/logo.png"), var3, var7, 10.0F, 10.0F, asj.uniform(2.0F), asu.WHITE.mulAlpha(var5)); + return; + case -868663272: + this.drawToggleMark(var1, var3 + 5.0F, var4, this.accentOf(var2, var6).mulAlpha(var5), var2.positive(), var5); + return; + case -814783775: + var9 = pi.iconFont(); + var1.drawText(var9, var8, var3 + (10.0F - var9.width(var8)) / 2.0F, var4 - var9.height() / 2.0F, var6.getColor().mulAlpha(var5)); + return; + case -716965353: + if (var2.kind() == ra.RECORD) { + var10 = 1486258598; + } else { + var10 = -1352984869; + } + break; + case -217779611: + if (var8 != null) { + var10 = 637711665; + } else { + var10 = -910482054; + } + break; + case 213763071: + default: + var7 = var4 - 5.0F; + if (var2.kind() == ra.TOGGLE) { + var10 = -868663272; + } else { + var10 = 306021235; + } + break; + case 306021235: + if (var2.kind() == ra.MEDIA) { + var10 = 764313626; + } else { + var10 = -716965353; + } + break; + case 637711665: + if (!var8.isEmpty()) { + var10 = -814783775; + } else { + var10 = -910482054; + } + break; + case 764313626: + this.drawArtwork(var1, var2, var3, var7, var5, var6); + return; + case 1486258598: + this.drawRecordDot(var1, var3 + 5.0F, var4, this.accentOf(var2, var6), var2.positive(), var5); + return; + } + } + } + + private void drawRecordDot(aru var1, float var2, float var3, asu var4, boolean var5, float var6) { + float var7 = 0.0F; + float var8 = 0.0F; + float var10 = 0.0F; + int var9 = 2036144987; + + while (true) { + switch (var9) { + case -98746703: + var10 = 1.0F; + var9 = 2116940929; + break; + case 931668421: + var10 = 0.35F + 0.65F * (float)Math.abs(Math.sin(System.currentTimeMillis() / 520.0)); + var9 = 2116940929; + break; + case 2036144987: + default: + if (var5) { + var9 = 931668421; + } else { + var9 = -98746703; + } + break; + case 2116940929: + var7 = var10; + var8 = 3.25F; + var1.drawRoundedRect(var2 - var8, var3 - var8, 6.5F, 6.5F, asj.pill(6.5F), var4.mulAlpha(var6 * var7)); + return; + } + } + } + + private void drawArtwork(aru var1, rb var2, float var3, float var4, float var5, mv var6) { + arq var7 = null; + Identifier var8 = null; + int var9 = -797507859; + + while (true) { + switch (var9) { + case -797507859: + default: + var7 = asj.uniform(2.5F); + var8 = ix.resolve(var2.glyph()); + if (var8 != null) { + var9 = 1793091207; + } else { + var9 = -335923269; + } + break; + case -335923269: + atb.drawRoundedTexture(var1.pose(), bz.id("icons/media_note.png"), var3, var4, 10.0F, 10.0F, var7, var6.getWhite().mulAlpha(var5)); + return; + case 1793091207: + atb.drawRoundedTexture(var1.pose(), var8, var3, var4, 10.0F, 10.0F, var7, asu.WHITE.mulAlpha(var5)); + return; + } + } + } + + private void drawToggleMark(aru var1, float var2, float var3, asu var4, boolean var5, float var6) { + float var7 = 0.0F; + float var8 = 0.0F; + asu var9 = null; + int var10 = 2088944339; + + while (true) { + switch (var10) { + case -2146801491: + var1.pose().popMatrix(); + return; + case -2075023046: + var1.pose().rotate((float)Math.toRadians(45.0)); + var1.drawRoundedRect(-2.6F, -0.55F, 5.2F, 1.1F, asj.pill(1.1F), var9); + var1.drawRoundedRect(-0.55F, -2.6F, 1.1F, 5.2F, asj.pill(1.1F), var9); + var10 = -2146801491; + break; + case -1970130270: + var1.pose().rotate((float)Math.toRadians(-45.0)); + var1.drawRoundedRect(-2.4F, 0.4F, 4.8F, 1.1F, asj.pill(1.1F), var9); + var1.drawRoundedRect(-2.4F, -1.8F, 1.1F, 2.6F, asj.pill(1.1F), var9); + var10 = -2146801491; + break; + case 1012796009: + return; + case 1427819379: + var8 = 5.0F; + var9 = asu.WHITE.mulAlpha(var6); + var1.pose().pushMatrix(); + var1.pose().translate(var2, var3); + var1.pose().scale(var7, var7); + var1.drawRoundedRect(-var8, -var8, 10.0F, 10.0F, asj.pill(10.0F), var4); + if (var5) { + var10 = -1970130270; + } else { + var10 = -2075023046; + } + break; + case 2088944339: + default: + var7 = backOut(var6); + if (var7 <= 0.01F) { + var10 = 1012796009; + } else { + var10 = 1427819379; + } + } + } + } + + private void updateEqualizer(long var1) { + int var3 = this.mediaCard != null && this.mediaSnapshot.playing() + ? 1: 0; + float var4 = Mth.clamp(this.eqPlaySpring.update(var3 != 0 ? 1.0F : 0.0F), 0.0F, 1.0F); + this.eqPlayProgress = var4; + in var5 = in.getInstance(); + float[] var6 = var5.getLevels(); + int var7 = var6 != null && var5.isCapturing() + ? 1: 0; + + for (int var8 = 0; var8 < 5; var8++) { + float var9; + if (var7 != 0) { + var9 = var6[var8]; + } else if (var3 != 0) { + var9 = (float)Math.abs(Math.sin(var1 / 260.0 + var8 * 1.05F)) * EQ_ENVELOPE[var8]; + } else { + var9 = 0.0F; + } + + float var10 = var9 * var4; + float var11 = this.eqVisualLevels[var8]; + float var12 = var10 - var11; + float var13 = var12 > 0.0F ? 0.42F : 0.16F; + this.eqVisualLevels[var8] = var11 + var12 * var13; + } + } + + private void drawEqualizer(aru var1, float var2, float var3, asu var4, boolean var5, long var6) { + float var8 = 0.0F; + float var9 = 0.0F; + asu var10 = null; + int var11 = 0; + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = 1643002218; + + while (true) { + switch (var14) { + case -1924617894: + return; + case -418300528: + if (var11 < (847814884 ^ -847814879) + ((847814884 & -847814879) << 1)) { + var14 = 194650003; + } else { + var14 = -1924617894; + } + break; + case 194650003: + var12 = this.eqVisualLevels[var11]; + var13 = 1.6F + 6.4F * var12; + var1.drawRoundedRect(var8, var3 - var13 / 2.0F, 1.4F, var13, asj.pill(1.4F), var10); + var8 += 2.5F; + var11++; + var14 = -418300528; + break; + case 1643002218: + default: + var8 = var2; + var9 = Mth.lerp(this.eqPlayProgress, 0.45F, 1.0F); + var10 = var4.mulAlpha(var9); + var11 = 0; + var14 = -418300528; + } + } + } + + private static float equalizerWidth() { + return 11.4F; + } + + private void drawSignal(aru var1, float var2, float var3, float var4, asu var5) { + int var6 = 0; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 0; + float var11 = 0.0F; + asu var12 = null; + asu var14 = null; + int var13 = 1376384916; + + while (true) { + switch (var13) { + case -1592071084: + var11 = 2.4F + var10 * 1.5F; + if (var10 < var6) { + var13 = 821440722; + } else { + var13 = 656391734; + } + break; + case -503169079: + var12 = var14; + var1.drawRoundedRect(var9, var8 - var11, 1.5F, var11, asj.uniform(0.6F), var12); + var9 += 2.7F; + var10++; + var13 = 550958329; + break; + case 550958329: + if (var10 < (-1402067931 | 1402067935) + (-1402067931 & 1402067935)) { + var13 = -1592071084; + } else { + var13 = 1397622164; + } + break; + case 656391734: + var14 = var5.mulAlpha(0.26F); + var13 = -503169079; + break; + case 821440722: + var14 = var5; + var13 = -503169079; + break; + case 1376384916: + default: + var6 = signalStrength(); + var7 = 6.9F; + var8 = var3 + (var4 + var7) / 2.0F; + var9 = var2; + var10 = 0; + var13 = 550958329; + break; + case 1397622164: + return; + } + } + } + + private static float signalWidth() { + return 9.6F; + } + + private static int signalStrength() { + int var0 = 0; + int var1 = 0; + int var2 = 879772405; + + while (true) { + switch (var2) { + case -1508437073: + return (-2019560631 | 2019560635) + (-2019560631 & 2019560635) - var1; + case -736862528: + var1++; + var2 = 344341655; + break; + case 201875433: + return 1; + case 344341655: + if (var1 < SIGNAL_THRESHOLDS.length) { + var2 = 797376352; + } else { + var2 = 201875433; + } + break; + case 797376352: + if (var0 <= SIGNAL_THRESHOLDS[var1]) { + var2 = -1508437073; + } else { + var2 = -736862528; + } + break; + case 879772405: + default: + var0 = latency(); + if (var0 <= 0) { + var2 = 2118008542; + } else { + var2 = 1874197016; + } + break; + case 1874197016: + var1 = 0; + var2 = 344341655; + break; + case 2118008542: + return 4; + } + } + } + + private static int latency() { + Minecraft var0 = null; + PlayerInfo var1 = null; + int var3 = 0; + int var2 = -680122144; + + while (true) { + switch (var2) { + case -1805088803: + var3 = 0; + var2 = -690863331; + break; + case -690863331: + return var3; + case -680122144: + default: + var0 = Minecraft.getInstance(); + if (var0.player != null) { + var2 = 1613848393; + } else { + var2 = -8012655; + } + break; + case -8012655: + return 0; + case 45521511: + var3 = var1.getLatency(); + var2 = -690863331; + break; + case 188114424: + var1 = var0.player.connection.getPlayerInfo(var0.player.getUUID()); + if (var1 == null) { + var2 = -1805088803; + } else { + var2 = 45521511; + } + break; + case 1613848393: + if (var0.player.connection == null) { + var2 = -8012655; + } else { + var2 = 188114424; + } + } + } + } + + public float getWidth() { + return this.width; + } + + public float getHeight() { + return this.height; + } + + public float getVisualX() { + return this.visualX; + } + + public float getVisualY() { + return this.visualY; + } + + public float getVisualWidth() { + return this.visualWidth; + } + + public float getVisualHeight() { + return this.visualHeight; + } + + public float getShapeX() { + return this.shapeX; + } + + public float getShapeY() { + return this.shapeY; + } + + public float getShapeWidth() { + return this.shapeWidth; + } + + public float getShapeHeight() { + return this.shapeHeight; + } + + public float getShapeRadius() { + return this.shapeRadius; + } + + static { + int[] var10000 = new int[3]; + var10000[0] = 60; + var10000[1] = 130; + var10000[2] = 240; + SIGNAL_THRESHOLDS = var10000; + float[] var0 = new float[5]; + var0[0] = 0.42F; + var0[1] = 0.74F; + var0[2] = 1.0F; + var0[3] = 0.78F; + var0[4] = 0.5F; + EQ_ENVELOPE = var0; + iw[] var1 = new iw[3]; + var1[0] = iw.PREVIOUS; + var1[1] = iw.PLAY_PAUSE; + var1[2] = iw.NEXT; + PLAYER_ACTIONS = var1; + } +} diff --git a/src/main/java/defpackage/qz.java b/src/main/java/defpackage/qz.java new file mode 100644 index 0000000..09c8224 --- /dev/null +++ b/src/main/java/defpackage/qz.java @@ -0,0 +1,4 @@ +package defpackage; + +public record qz(float x, float y, float width, float height, float radius, float spanWidth) { +} diff --git a/src/main/java/defpackage/r.java b/src/main/java/defpackage/r.java new file mode 100644 index 0000000..eaec81f --- /dev/null +++ b/src/main/java/defpackage/r.java @@ -0,0 +1,9 @@ +package defpackage; + +public class r { + public static final byte PRE = 0; + public static final byte ON = 1; + public static final byte POST = 2; + public static final byte SEND = 3; + public static final byte RECIEVE = 4; +} diff --git a/src/main/java/defpackage/ra.java b/src/main/java/defpackage/ra.java new file mode 100644 index 0000000..5908c54 --- /dev/null +++ b/src/main/java/defpackage/ra.java @@ -0,0 +1,10 @@ +package defpackage; + +public enum ra { + BRAND, + TOGGLE, + EVENT, + MEDIA, + RECORD, + NAVIGATION; +} diff --git a/src/main/java/defpackage/rb.java b/src/main/java/defpackage/rb.java new file mode 100644 index 0000000..4575d30 --- /dev/null +++ b/src/main/java/defpackage/rb.java @@ -0,0 +1,127 @@ +package defpackage; + +public record rb(ra kind, String key, String label, String glyph, boolean positive, long createdAt, long durationMs) { + public static final long DEFAULT_DURATION_MS = 2200L; + private static final String MEDIA_KEY_PREFIX = "media:"; + + public static rb brand(String var0) { + return new rb( + ra.BRAND, + var0, + var0, + null, + (boolean)(((1)) != 0), + System.currentTimeMillis(), + (-5403854567013716689L ^ 5403854567013716689L) + ((-5403854567013716689L & 5403854567013716689L) << 1) + ); + } + + public static rb toggle(String var0, String var1, boolean var2) { + return new rb( + ra.TOGGLE, + var0, + var1, + null, + var2, + System.currentTimeMillis(), + (-6656589731763835020L | 6656589731763837220L) + (-6656589731763835020L & 6656589731763837220L) + ); + } + + public static rb event(String var0, String var1, String var2) { + return new rb( + ra.EVENT, + var0, + var1, + var2, + (boolean)(((1)) != 0), + System.currentTimeMillis(), + (-825226899611204210L ^ 825226899611206410L) + ((-825226899611204210L & 825226899611206410L) << 1) + ); + } + + public static rb media(String var0, String var1, boolean var2) { + return new rb( + ra.MEDIA, + "media:" + var0, + var1, + var0, + var2, + System.currentTimeMillis(), + (8044819518182653311L | -8044819518182653311L) + (8044819518182653311L & -8044819518182653311L) + ); + } + + public static rb record(String var0, String var1, boolean var2) { + return new rb( + ra.RECORD, + var0, + var1, + null, + var2, + System.currentTimeMillis(), + (-1186442776225996674L | 1186442776225996674L) + (-1186442776225996674L & 1186442776225996674L) + ); + } + + public static rb navigation(String var0, String var1, String var2) { + return new rb( + ra.NAVIGATION, + var0, + var1, + var2, + (boolean)(((1)) != 0), + System.currentTimeMillis(), + (-5082688100389567058L ^ 5082688100389567058L) + ((-5082688100389567058L & 5082688100389567058L) << 1) + ); + } + + public boolean isPersistent() { + int var2 = 0; + int var1 = -1423155316; + + while (true) { + switch (var1) { + case -1423155316: + default: + if (this.kind != ra.BRAND) { + var1 = 1500553395; + } else { + var1 = -1263835337; + } + break; + case -1263835337: + var2 = 1; + var1 = 2029986959; + break; + case -965610248: + if (this.kind != ra.RECORD) { + var1 = 525331699; + } else { + var1 = -1263835337; + } + break; + case 525331699: + if (this.kind == ra.NAVIGATION) { + var1 = -1263835337; + } else { + var1 = 1790890639; + } + break; + case 1500553395: + if (this.kind != ra.MEDIA) { + var1 = -965610248; + } else { + var1 = -1263835337; + } + break; + case 1790890639: + var2 = 0; + var1 = 2029986959; + break; + case 2029986959: + return (boolean)((var2) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/rc.java b/src/main/java/defpackage/rc.java new file mode 100644 index 0000000..e76cf05 --- /dev/null +++ b/src/main/java/defpackage/rc.java @@ -0,0 +1,48 @@ +package defpackage; + +import java.util.ArrayDeque; + +public final class rc { + private static final int MAX_PENDING = 6; + private static final long STALE_AFTER_MS = 4000L; + private static final ArrayDeque PENDING = new ArrayDeque<>(6); + + private rc() { + } + + public static void push(rb var0) { + if (var0 != null) { + synchronized (PENDING) { + rb var2 = PENDING.peekLast(); + if (var2 != null && var2.key().equals(var0.key())) { + PENDING.pollLast(); + } + + while (PENDING.size() >= (1202979489 ^ -1202979483) + ((1202979489 & -1202979483) << 1)) { + PENDING.pollFirst(); + } + + PENDING.addLast(var0); + } + } + } + + public static rb poll(long var0) { + synchronized (PENDING) { + rb var3; + while ((var3 = PENDING.pollFirst()) != null) { + if (var0 - var3.createdAt() <= (5175250108442799283L | -5175250108442795283L) + (5175250108442799283L & -5175250108442795283L)) { + return var3; + } + } + + return null; + } + } + + public static void clear() { + synchronized (PENDING) { + PENDING.clear(); + } + } +} diff --git a/src/main/java/defpackage/rd.java b/src/main/java/defpackage/rd.java new file mode 100644 index 0000000..8e18988 --- /dev/null +++ b/src/main/java/defpackage/rd.java @@ -0,0 +1,4 @@ +package defpackage; + +record rd(avx waypoint, double distance, boolean tracked) { +} diff --git a/src/main/java/defpackage/re.java b/src/main/java/defpackage/re.java new file mode 100644 index 0000000..e5956d7 --- /dev/null +++ b/src/main/java/defpackage/re.java @@ -0,0 +1,931 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +public final class re implements aqg { + private static final String CARD_KEY_PREFIX = "nav:"; + private static final float SETTLED = 1.0F; + private static final float VISIBLE_EPSILON = 0.01F; + private static final float PILL_DIVISOR = 2.0F; + private static final float MIN_PILL_WIDTH = 78.0F; + private static final float NAME_MAX_WIDTH = 44.0F; + private static final float ARROW_BOX_SIZE = 11.0F; + private static final float ARROW_LEG_LENGTH = 4.6F; + private static final float ARROW_LEG_THICKNESS = 1.3F; + private static final float ARROW_LEG_ANGLE_DEG = 34.0F; + private static final float ARRIVAL_DOT_RADIUS = 2.2F; + private static final double BEARING_YAW_OFFSET_DEG = 90.0; + private static final double ARRIVAL_FADE_START_BLOCKS = 3.0; + private static final double ARRIVAL_FADE_END_BLOCKS = 1.25; + private static final long DISTANCE_REFRESH_MS = 180L; + private static final double DISTANCE_DECIMAL_THRESHOLD = 10.0; + private static final long DISTANCE_DECIMAL_SCALE = 10L; + private static final String DISTANCE_UNIT_SUFFIX = "m"; + private static final String DECIMAL_SEPARATOR = "."; + private static final String EMPTY_GLYPH = ""; + private static final String INITIAL_DISTANCE_TEXT = "0m"; + private static final double REBUILD_DISTANCE_THRESHOLD_SQ = 16.0; + private static final int MAX_VISIBLE_ROWS = 5; + private static final String INITIAL_DIMENSION = ""; + private static final float PANEL_MIN_WIDTH = 148.0F; + private static final float PANEL_MAX_WIDTH = 206.0F; + private static final float PANEL_PAD = 9.0F; + private static final float PANEL_ROW_INSET = 3.0F; + private static final float PANEL_ROW_HEIGHT = 20.0F; + private static final float PANEL_ROW_GAP = 2.0F; + private static final float PANEL_ROW_RADIUS = 7.0F; + private static final float PANEL_DOT_SIZE = 6.0F; + private static final float PANEL_DOT_GAP = 6.0F; + private static final float PANEL_ICON_GAP = 5.0F; + private static final float PANEL_NAME_META_GAP = 6.0F; + private static final float PANEL_HOVER_ALPHA = 0.14F; + private static final float PANEL_TRACKED_WASH_ALPHA = 0.24F; + private static final float PANEL_META_ALPHA = 0.55F; + private static final Comparator ROW_DISTANCE_COMPARATOR = Comparator.comparingDouble(rd::distance); + private final ct bearingSpring = ct.transform(ob.MEDIUM, 0.0F); + private boolean bearingPrimed; + private float bearingDeg; + private float arrivalBlend; + private asu accentColor = asu.WHITE; + private String distanceText = "0m"; + private long lastDistanceUpdateAt; + private rb card; + private final List scratch = new ArrayList<>(); + private final List rows = new ArrayList<>(); + private boolean rowsBuilt; + private int lastRowsVersion = -2147483648; + private String lastRowsDimension = ""; + private double lastRowsX; + private double lastRowsZ; + private float panelX; + private float panelY; + private float panelWidth; + private float panelHeight; + + public rb card() { + return this.card; + } + + public void update(long var1) { + wk var3 = null; + avx var4 = null; + float var5 = 0.0F; + Vec3 var6 = null; + float var7 = 0.0F; + Vec3 var8 = null; + double var9 = 0.0; + double var11 = 0.0; + double var13 = 0.0; + int var15 = -1450070110; + + while (true) { + switch (var15) { + case -1867837752: + this.clearActive(); + return; + case -1450070110: + default: + var3 = wk.INSTANCE; + if (var3 != null) { + var15 = 839613939; + } else { + var15 = 661246517; + } + break; + case -749795602: + var4 = awb.getInstance().trackedWaypoint(); + if (var4 == null) { + var15 = -1867837752; + } else { + var15 = 1650351247; + } + break; + case 661246517: + this.clearActive(); + return; + case 679902529: + if (mc.player != null) { + var15 = 1789612631; + } else { + var15 = 661246517; + } + break; + case 839613939: + if (var3.isEnabled()) { + var15 = 1213252736; + } else { + var15 = 661246517; + } + break; + case 1213252736: + if (var3.showsNavigation()) { + var15 = 679902529; + } else { + var15 = 661246517; + } + break; + case 1650351247: + var5 = mc.getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((-175288329 | 175288330) + (-175288329 & 175288330))) != 0)); + var6 = mc.player.getPosition(var5); + var7 = mc.player.getViewYRot(var5); + var8 = var4.center(); + var9 = var8.x - var6.x; + var11 = var8.z - var6.z; + var13 = Math.sqrt(var9 * var9 + var11 * var11); + this.updateBearing(var9, var11, var7); + this.updateArrival(var13); + this.updateDistanceText(var4.distanceTo(var6), var1); + this.updateCard(var4); + this.accentColor = new asu(var4.color()); + this.refreshRows(var6, awb.getInstance().currentDimension()); + return; + case 1789612631: + if (mc.level == null) { + var15 = 661246517; + } else { + var15 = -749795602; + } + } + } + } + + private void clearActive() { + this.card = null; + this.rowsBuilt = (boolean)(((0)) != 0); + this.rows.clear(); + } + + private void updateCard(avx var1) { + String var2 = null; + String var3 = null; + int var4 = 118439938; + + while (true) { + switch (var4) { + case -144114308: + this.card = rb.navigation(var3, var1.name(), var2); + return; + case 118439938: + default: + var2 = var1.icon().getGlyph(); + var3 = "nav:" + var1.id(); + if (this.card != null) { + var4 = 353477464; + } else { + var4 = -144114308; + } + break; + case 236110252: + return; + case 345270886: + if (this.card.glyph().equals(var2)) { + var4 = 236110252; + } else { + var4 = -144114308; + } + break; + case 353477464: + if (this.card.key().equals(var3)) { + var4 = 1521278635; + } else { + var4 = -144114308; + } + break; + case 1521278635: + if (this.card.label().equals(var1.name())) { + var4 = 345270886; + } else { + var4 = -144114308; + } + } + } + } + + private void updateBearing(double var1, double var3, float var5) { + double var6 = 0.0; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 1353673012; + + while (true) { + switch (var10) { + case -329387039: + var9 = Mth.wrapDegrees(var8 - this.bearingSpring.target()); + this.bearingSpring.animateTo(this.bearingSpring.target() + var9); + var10 = 1722121890; + break; + case 970497873: + this.bearingSpring.jumpTo(var8); + this.bearingPrimed = (boolean)(((1)) != 0); + var10 = 1722121890; + break; + case 1353673012: + default: + var6 = Mth.wrapDegrees(Math.toDegrees(Math.atan2(var3, var1)) - 90.0); + var8 = (float)Mth.wrapDegrees(var6 - var5); + if (!this.bearingPrimed) { + var10 = 970497873; + } else { + var10 = -329387039; + } + break; + case 1722121890: + this.bearingDeg = this.bearingSpring.update(); + return; + } + } + } + + private void updateArrival(double var1) { + double var3 = (3.0 - var1) / 1.75; + this.arrivalBlend = Mth.clamp((float)var3, 0.0F, 1.0F); + } + + private void updateDistanceText(double var1, long var3) { + int var5 = 885970533; + + while (true) { + switch (var5) { + case -628647806: + this.lastDistanceUpdateAt = var3; + this.distanceText = formatDistance(var1); + return; + case -416354093: + return; + case 885970533: + } + + if (var3 - this.lastDistanceUpdateAt < (-4339889313043887891L ^ 4339889313043888071L) + ((-4339889313043887891L & 4339889313043888071L) << 1)) { + var5 = -416354093; + } else { + var5 = -628647806; + } + } + } + + private static String formatDistance(double var0) { + long var2 = (8371084986322849729L ^ -8371084986322849729L) + ((8371084986322849729L & -8371084986322849729L) << 1); + long var4 = (5716985475293291141L | -5716985475293291141L) + (5716985475293291141L & -5716985475293291141L); + long var6 = (2284309485747521083L | -2284309485747521083L) + (2284309485747521083L & -2284309485747521083L); + int var8 = -66529672; + + while (true) { + switch (var8) { + case -491116819: + return Math.round(var0) + "m"; + case -414983205: + var2 = Math.round(var0 * 10.0); + var4 = var2 / ((8897948273027423937L ^ -8897948273027423927L) + ((8897948273027423937L & -8897948273027423927L) << 1)); + var6 = var2 % ((-6720625866842178160L | 6720625866842178170L) + (-6720625866842178160L & 6720625866842178170L)); + if (var4 < 10.0) { + var8 = 1094887129; + } else { + var8 = -491116819; + } + break; + case -66529672: + default: + if (var0 < 10.0) { + var8 = -414983205; + } else { + var8 = -491116819; + } + break; + case 1094887129: + return var4 + "." + var6 + "m"; + } + } + } + + private void refreshRows(Vec3 var1, String var2) { + awb var3 = null; + int var4 = 0; + double var5 = 0.0; + double var7 = 0.0; + int var9 = 0; + int var10 = 0; + wk var11 = null; + int var12 = 0; + int var13 = 0; + avx var14 = null; + int var16 = 0; + int var17 = 0; + int var18 = 0; + int var15 = 1449626555; + + while (true) { + switch (var15) { + case -2142737870: + var10 = var17; + if (this.rowsBuilt) { + var15 = 1078059590; + } else { + var15 = 1146303620; + } + break; + case -1585860020: + var16 = 1; + var15 = 786170780; + break; + case -1285622693: + this.rows.subList(5, this.rows.size()).clear(); + var15 = 1578808527; + break; + case -1013784967: + var18 = 1; + var15 = -495678715; + break; + case -653158883: + if (var4 == this.lastRowsVersion) { + var15 = 1650666816; + } else { + var15 = 1146303620; + } + break; + case -495678715: + var12 = var18; + var3.collectVisible(var2, (boolean)((var12) != 0), this.scratch); + this.rows.clear(); + var13 = 0; + var15 = 527441692; + break; + case -467337283: + if (var11.showsFriendWaypoints()) { + var15 = -1013784967; + } else { + var15 = 81626676; + } + break; + case 42327489: + var16 = 0; + var15 = 786170780; + break; + case 81626676: + var18 = 0; + var15 = -495678715; + break; + case 126737118: + this.rows.sort(ROW_DISTANCE_COMPARATOR); + if (this.rows.size() > (-1677973773 | 1677973778) + (-1677973773 & 1677973778)) { + var15 = -1285622693; + } else { + var15 = 1578808527; + } + break; + case 179783047: + var17 = 0; + var15 = -2142737870; + break; + case 319671637: + var17 = 1; + var15 = -2142737870; + break; + case 527441692: + if (var13 < this.scratch.size()) { + var15 = 980287984; + } else { + var15 = 126737118; + } + break; + case 786170780: + var9 = var16; + if (!var2.equals(this.lastRowsDimension)) { + var15 = 319671637; + } else { + var15 = 179783047; + } + break; + case 980287984: + var14 = this.scratch.get(var13); + this.rows.add(new rd(var14, var14.distanceTo(var1), var3.isTracked(var14.id()))); + var13++; + var15 = 527441692; + break; + case 1065182752: + return; + case 1078059590: + if (var10 == 0) { + var15 = -653158883; + } else { + var15 = 1146303620; + } + break; + case 1146303620: + this.rowsBuilt = (boolean)(((1)) != 0); + this.lastRowsVersion = var4; + this.lastRowsDimension = var2; + this.lastRowsX = var1.x; + this.lastRowsZ = var1.z; + var11 = wk.INSTANCE; + if (var11 != null) { + var15 = -467337283; + } else { + var15 = 81626676; + } + break; + case 1449626555: + default: + var3 = awb.getInstance(); + var4 = var3.version(); + var5 = var1.x - this.lastRowsX; + var7 = var1.z - this.lastRowsZ; + if (var5 * var5 + var7 * var7 >= 16.0) { + var15 = -1585860020; + } else { + var15 = 42327489; + } + break; + case 1578808527: + return; + case 1650666816: + if (var9 == 0) { + var15 = 1065182752; + } else { + var15 = 1146303620; + } + } + } + } + + public boolean hasPanel() { + int var2 = 0; + int var1 = 782426188; + + while (true) { + switch (var1) { + case -1282998124: + return (boolean)((var2) != 0); + case -1117421533: + if (!this.rows.isEmpty()) { + var1 = 1426728540; + } else { + var1 = 1466160472; + } + break; + case 782426188: + default: + if (this.card != null) { + var1 = -1117421533; + } else { + var1 = 1466160472; + } + break; + case 1426728540: + var2 = 1; + var1 = -1282998124; + break; + case 1466160472: + var2 = 0; + var1 = -1282998124; + } + } + } + + public void layout(float var1, float var2, float var3) { + ge var4 = null; + ge var5 = null; + ge var6 = null; + float var7 = 0.0F; + int var8 = 0; + rd var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = 1952261025; + + while (true) { + switch (var13) { + case -1764060625: + this.panelWidth = Mth.clamp(18.0F + var7, 148.0F, 206.0F); + var8 = Math.max(1, this.rows.size()); + this.panelHeight = 18.0F + + var8 * 20.0F + + Math.max( + 0, var8 - ((-1986071390 ^ 1986071391) + ((-1986071390 & 1986071391) << 1)) + ) + * 2.0F; + this.panelX = var1 - this.panelWidth / 2.0F; + this.panelY = var2; + return; + case 509114247: + if (var8 < this.rows.size()) { + var13 = 1676861048; + } else { + var13 = -1764060625; + } + break; + case 1676861048: + var9 = this.rows.get(var8); + var10 = var4.width(var9.waypoint().name()); + var11 = var5.width(formatDistance(var9.distance())); + var12 = 12.0F + var6.width(var9.waypoint().icon().getGlyph()) + 5.0F + var10 + 6.0F + var11; + var7 = Math.max(var7, var12); + var8++; + var13 = 509114247; + break; + case 1952261025: + default: + var4 = pk.font(oe.LABEL); + var5 = pk.font(oe.MICRO); + var6 = pi.iconFont(); + var7 = 0.0F; + var8 = 0; + var13 = 509114247; + } + } + } + + public float panelWidth() { + return this.panelWidth; + } + + public float panelHeight() { + return this.panelHeight; + } + + public float panelX() { + return this.panelX; + } + + public float panelY() { + return this.panelY; + } + + public asu accent() { + return this.accentColor; + } + + public float pillWidth(rb var1, ge var2, float var3, float var4) { + ge var5 = null; + ge var6 = null; + String var7 = null; + float var8 = 0.0F; + float var9 = 0.0F; + String var11 = null; + int var10 = 698257664; + + while (true) { + switch (var10) { + case 383390186: + var11 = var1.glyph(); + var10 = 534099729; + break; + case 534099729: + var7 = var11; + var8 = Math.min(var2.width(var1.label()), 44.0F); + var9 = var6.width(this.distanceText); + return Math.max(78.0F, var3 + var5.width(var7) + var4 + var8 + var4 + 11.0F + var4 + var9 + var3); + case 698257664: + default: + var5 = pi.iconFont(); + var6 = pk.font(oe.NUMERIC); + if (var1.glyph() == null) { + var10 = 1046235987; + } else { + var10 = 383390186; + } + break; + case 1046235987: + var11 = ""; + var10 = 534099729; + } + } + } + + public void drawPill(aru var1, mv var2, rb var3, float var4, float var5, float var6, float var7, float var8, float var9, float var10, float var11) { + ge var12 = null; + ge var13 = null; + ge var14 = null; + asu var15 = null; + float var16 = 0.0F; + String var17 = null; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + String var26 = null; + int var25 = 504031117; + + while (true) { + switch (var25) { + case -1877015275: + if (var10 <= 0.01F) { + var25 = -1224385425; + } else { + var25 = 1696794554; + } + break; + case -1608335451: + var26 = ""; + var25 = -464949341; + break; + case -1224385425: + return; + case -464949341: + var17 = var26; + var18 = var4 + var8; + var1.drawText(var12, var17, var18, var16 - var12.height() / 2.0F, this.accentColor.mulAlpha(var10)); + var19 = var18 + var12.width(var17) + var9; + var20 = var5 + (var7 - var13.height()) / 2.0F + var11; + var1.drawScrollingText(var13, var3.label(), var19, var20, 44.0F, var15.mulAlpha(var10)); + var21 = var14.width(this.distanceText); + var22 = var4 + var6 - var8 - var21; + var23 = var5 + (var7 - var14.height()) / 2.0F + var11; + var1.drawText(var14, this.distanceText, var22, var23, var15.mulAlpha(var10)); + var24 = var22 - var9 - 5.5F; + this.drawArrow(var1, var24, var16, var10); + return; + case 504031117: + default: + if (var3 != null) { + var25 = -1877015275; + } else { + var25 = -1224385425; + } + break; + case 1377228250: + var26 = var3.glyph(); + var25 = -464949341; + break; + case 1696794554: + var12 = pi.iconFont(); + var13 = pk.font(oe.LABEL); + var14 = pk.font(oe.NUMERIC); + var15 = var2.getWhite(); + var16 = var5 + var7 / 2.0F; + if (var3.glyph() == null) { + var25 = -1608335451; + } else { + var25 = 1377228250; + } + } + } + } + + private void drawArrow(aru var1, float var2, float var3, float var4) { + float var5 = 0.0F; + float var6 = 0.0F; + int var7 = 756987748; + + while (true) { + switch (var7) { + case -1914303264: + var1.pose().popMatrix(); + return; + case -1753393130: + var1.pose().pushMatrix(); + var1.pose().rotate((float)Math.toRadians(this.bearingDeg)); + var1.pose().translate(0.0F, -2.3F); + this.drawChevronLegs(var1, this.accentColor.mulAlpha(var5)); + var1.pose().popMatrix(); + var7 = 1762773938; + break; + case 262099673: + var1.drawRoundedRect(-2.2F, -2.2F, 4.4F, 4.4F, asj.pill(4.4F), this.accentColor.mulAlpha(var6)); + var7 = -1914303264; + break; + case 756987748: + default: + var5 = (1.0F - this.arrivalBlend) * var4; + var6 = this.arrivalBlend * var4; + var1.pose().pushMatrix(); + var1.pose().translate(var2, var3); + if (var5 > 0.01F) { + var7 = -1753393130; + } else { + var7 = 1762773938; + } + break; + case 1762773938: + if (var6 > 0.01F) { + var7 = 262099673; + } else { + var7 = -1914303264; + } + } + } + } + + private void drawChevronLegs(aru var1, asu var2) { + float var3 = 0.65F; + arq var4 = asj.pill(1.3F); + var1.pose().pushMatrix(); + var1.pose().rotate((float)Math.toRadians(34.0)); + var1.drawRoundedRect(-var3, 0.0F, 1.3F, 4.6F, var4, var2); + var1.pose().popMatrix(); + var1.pose().pushMatrix(); + var1.pose().rotate((float)Math.toRadians(-34.0)); + var1.drawRoundedRect(-var3, 0.0F, 1.3F, 4.6F, var4, var2); + var1.pose().popMatrix(); + } + + public void drawPanel(aru var1, mv var2, float var3, float var4, float var5, boolean var6, long var7) { + ge var9 = null; + ge var10 = null; + ge var11 = null; + asu var12 = null; + asu var13 = null; + int var14 = 0; + float var15 = 0.0F; + float var16 = 0.0F; + arq var17 = null; + int var18 = 0; + rd var19 = null; + float var20 = 0.0F; + float var21 = 0.0F; + asu var22 = null; + float var23 = 0.0F; + String var24 = null; + float var25 = 0.0F; + String var26 = null; + float var27 = 0.0F; + float var28 = 0.0F; + float var29 = 0.0F; + int var31 = 0; + int var30 = 2122807333; + + while (true) { + switch (var30) { + case -2061997477: + var9 = pk.font(oe.LABEL); + var10 = pk.font(oe.MICRO); + var11 = pi.iconFont(); + var12 = var2.getWhite(); + var13 = var2.getColor(); + if (var6) { + var30 = 1723936566; + } else { + var30 = 1115960494; + } + break; + case -1763406493: + return; + case -1578158957: + var21 = var20 + 10.0F; + var22 = new asu(var19.waypoint().color()); + var23 = var15 + 3.0F; + var1.drawRoundedRect(var23, var21 - 3.0F, 6.0F, 6.0F, asj.pill(6.0F), var22.mulAlpha(var3)); + var24 = var19.waypoint().icon().getGlyph(); + var25 = var23 + 6.0F + 6.0F; + var1.drawText(var11, var24, var25, var21 - var11.height() / 2.0F, var12.mulAlpha(var3)); + var26 = formatDistance(var19.distance()); + var27 = var10.width(var26); + var28 = var25 + var11.width(var24) + 5.0F; + var29 = Math.max(0.0F, var15 + var16 - 3.0F - var27 - 6.0F - var28); + var1.drawScrollingText(var9, var19.waypoint().name(), var28, var21 - var9.height() / 2.0F, var29, var12.mulAlpha(var3)); + var1.drawText(var10, var26, var15 + var16 - 3.0F - var27, var21 - var10.height() / 2.0F, var12.mulAlpha(var3 * 0.55F)); + var18++; + var30 = 813333784; + break; + case -889112397: + var14 = var31; + var15 = this.panelX + 9.0F; + var16 = this.panelWidth - 18.0F; + var17 = asj.uniform(7.0F); + var18 = 0; + var30 = 813333784; + break; + case -631803215: + var1.drawRoundedRect(var15, var20, var16, 20.0F, var17, var12.mulAlpha(0.14F * var3)); + var30 = -1578158957; + break; + case -38383059: + var19 = this.rows.get(var18); + var20 = this.panelY + 9.0F + var18 * 22.0F; + if (var19.tracked()) { + var30 = 2066437938; + } else { + var30 = 2010854970; + } + break; + case 217064652: + return; + case 813333784: + if (var18 < this.rows.size()) { + var30 = -38383059; + } else { + var30 = 217064652; + } + break; + case 1115960494: + var31 = -1; + var30 = -889112397; + break; + case 1723936566: + var31 = this.rowIndexAt(var4, var5); + var30 = -889112397; + break; + case 2010854970: + if (var18 == var14) { + var30 = -631803215; + } else { + var30 = -1578158957; + } + break; + case 2066437938: + var1.drawRoundedRect(var15, var20, var16, 20.0F, var17, var13.mulAlpha(0.24F * var3)); + var30 = -1578158957; + break; + case 2122807333: + default: + if (this.rows.isEmpty()) { + var30 = -1763406493; + } else { + var30 = -2061997477; + } + } + } + } + + private int rowIndexAt(float var1, float var2) { + int var3 = 0; + float var4 = 0.0F; + int var5 = -2117674132; + + while (true) { + switch (var5) { + case -2117674132: + default: + if (!this.rows.isEmpty()) { + var5 = 799876059; + } else { + var5 = -865343806; + } + break; + case -1815696842: + if (var3 < this.rows.size()) { + var5 = -134790113; + } else { + var5 = -1722492322; + } + break; + case -1722492322: + return -1; + case -1073075918: + return var3; + case -962266669: + var3 = 0; + var5 = -1815696842; + break; + case -865343806: + return -1; + case -134790113: + var4 = this.panelY + 9.0F + var3 * 22.0F; + if (var2 >= var4) { + var5 = -18922957; + } else { + var5 = 1822704828; + } + break; + case -18922957: + if (var2 < var4 + 20.0F) { + var5 = -1073075918; + } else { + var5 = 1822704828; + } + break; + case 799876059: + if (!aqj.isHovered(var1, var2, this.panelX, this.panelY, this.panelWidth, this.panelHeight)) { + var5 = -865343806; + } else { + var5 = -962266669; + } + break; + case 1822704828: + var3++; + var5 = -1815696842; + } + } + } + + public boolean handlePanelClick(float var1, float var2) { + int var3 = 0; + int var4 = 501143324; + + while (true) { + switch (var4) { + case 501143324: + default: + var3 = this.rowIndexAt(var1, var2); + if (var3 < 0) { + var4 = 1750753691; + } else { + var4 = 779479904; + } + break; + case 779479904: + awb.getInstance().toggleTracked(this.rows.get(var3).waypoint().id()); + return (boolean)(((1)) != 0); + case 1750753691: + return (boolean)(((0)) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/rf.java b/src/main/java/defpackage/rf.java new file mode 100644 index 0000000..aa17307 --- /dev/null +++ b/src/main/java/defpackage/rf.java @@ -0,0 +1,4 @@ +package defpackage; + +public record rf(rg kind, String label, String subtitle, String glyph, rm module, rl category) { +} diff --git a/src/main/java/defpackage/rg.java b/src/main/java/defpackage/rg.java new file mode 100644 index 0000000..446327b --- /dev/null +++ b/src/main/java/defpackage/rg.java @@ -0,0 +1,6 @@ +package defpackage; + +public enum rg { + MODULE, + CATEGORY; +} diff --git a/src/main/java/defpackage/rh.java b/src/main/java/defpackage/rh.java new file mode 100644 index 0000000..8908fb2 --- /dev/null +++ b/src/main/java/defpackage/rh.java @@ -0,0 +1,4 @@ +package defpackage; + +record rh(rf entry, int score, int position) { +} diff --git a/src/main/java/defpackage/ri.java b/src/main/java/defpackage/ri.java new file mode 100644 index 0000000..5c97895 --- /dev/null +++ b/src/main/java/defpackage/ri.java @@ -0,0 +1,1456 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import net.minecraft.util.Mth; + +public final class ri implements aqg { + private static final ri INSTANCE = new ri(); + private static final float PANEL_WIDTH = 182.0F; + private static final float PANEL_RADIUS = 9.0F; + private static final float PANEL_PAD = 6.0F; + private static final float PANEL_EDGE_MARGIN = 6.0F; + private static final float FIELD_HEIGHT = 20.0F; + private static final float ROW_HEIGHT = 17.0F; + private static final float ROW_RADIUS = 5.0F; + private static final float ROW_INSET = 3.0F; + private static final float DIVIDER_HEIGHT = 0.6F; + private static final int MAX_VISIBLE_ROWS = 7; + private static final int MIN_VISIBLE_ROWS = 1; + private static final float EMPTY_ROWS = 2.4F; + private static final int MAX_RESULTS = 48; + private static final int MAX_QUERY_LENGTH = 48; + private static final float ICON_BOX = 13.0F; + private static final float ICON_GAP = 6.0F; + private static final float STATE_DOT = 4.0F; + private static final float STATE_GAP = 5.0F; + private static final float HINT_GAP = 6.0F; + private static final float CARET_WIDTH = 0.9F; + private static final float CARET_INSET = 1.5F; + private static final float PROMPT_GAP = 5.0F; + private static final float BACKDROP_ALPHA = 0.42F; + private static final float SHADOW_SOFTNESS = 16.0F; + private static final float SHADOW_ALPHA = 0.34F; + private static final float RIM_ALPHA = 0.14F; + private static final float DIVIDER_ALPHA = 0.09F; + private static final float SELECTED_PLATE_ALPHA = 0.2F; + private static final float SELECTED_MARK_WIDTH = 2.0F; + private static final float HOVER_PLATE_ALPHA = 0.07F; + private static final float PROMPT_ALPHA = 0.75F; + private static final float PLACEHOLDER_ALPHA = 0.42F; + private static final float HINT_ALPHA = 0.55F; + private static final float SUBTITLE_ALPHA = 0.5F; + private static final float IDLE_ICON_ALPHA = 0.62F; + private static final float DISABLED_DOT_ALPHA = 0.22F; + private static final float SCROLLBAR_GAP = 2.4F; + private static final float WHEEL_ROWS = 1.0F; + private static final float VISIBLE_EPSILON = 0.01F; + private static final float SETTLED = 1.0F; + private static final float TAKEOVER_SPAN = 0.3F; + private static final float HEIGHT_LAG = 0.22F; + private static final float CONTENT_FADE_START = 0.38F; + private static final float CONTENT_DRIFT = 3.0F; + private static final float FALLBACK_ANCHOR_WIDTH = 76.0F; + private static final float FALLBACK_ANCHOR_HEIGHT = 13.0F; + private static final float CARET_CYCLE_MS = 1060.0F; + private static final float CARET_MIN_ALPHA = 0.08F; + private static final float HOVER_VISIBLE_EPSILON = 0.02F; + private static final float LIST_EDGE_FADE = 5.0F; + private static final long TOGGLE_GUARD_MS = 250L; + private static final String PROMPT_GLYPH = "A"; + private static final String PLACEHOLDER = "Search features"; + private static final String EMPTY_LABEL = "No matches"; + private static final String EMPTY_HINT = "Try another name"; + private static final String HINT_TOGGLE = "enter"; + private static final String HINT_SETTINGS = "tab"; + private static final String CATEGORY_SUFFIX = " settings"; + private static final int LEFT_MOUSE_BUTTON = 0; + private static final int SCORE_NONE = -1; + private static final int SCORE_PREFIX = 0; + private static final int SCORE_WORD = 1; + private static final int SCORE_CONTAINS = 2; + private static final int SCORE_CATEGORY = 3; + private static final int SCORE_FUZZY = 4; + private final xm frame = new xm(); + private final arl scrollHandler = new arl(); + private final ark scrollBar = new ark(); + private final ct listHeightSpring = ct.layout(ob.FAST, 0.0F); + private final ct selectionSpring = ct.transform(ob.FAST, 0.0F); + private final ct hoverSpring = ct.transform(ob.FAST, 0.0F); + private final ct hoverFade = asa.spring(); + private final StringBuilder query = new StringBuilder(); + private final List results = new ArrayList<>(); + private boolean open; + private boolean revealSelected; + private long openedAt; + private int selected; + private int hovered = -1; + private float panelX; + private float panelY; + private float panelWidth; + private float panelHeight; + private float fieldHeight; + private float listTop; + private float listHeight; + private float scrollPixels; + private float anchorX; + private float anchorY; + private float anchorWidth; + private float anchorHeight; + private float anchorRadius; + private int visibleRows; + + private ri() { + } + + public static ri getInstance() { + return INSTANCE; + } + + public static qz fallbackAnchor(float var0, float var1) { + return new qz((var0 - 76.0F) / 2.0F, var1 - 13.0F, 76.0F, 13.0F, 6.5F, 76.0F); + } + + public boolean isOpen() { + return this.open; + } + + public boolean isVisible() { + int var2 = 0; + int var1 = -1332822314; + + while (true) { + switch (var1) { + case -1535858034: + return (boolean)((var2) != 0); + case -1332822314: + default: + if (!this.open) { + var1 = 551259004; + } else { + var1 = 181850528; + } + break; + case 181850528: + var2 = 1; + var1 = -1535858034; + break; + case 547113081: + var2 = 0; + var1 = -1535858034; + break; + case 551259004: + if (this.frame.phase() > 0.01F) { + var1 = 181850528; + } else { + var1 = 547113081; + } + } + } + } + + public float takeover() { + float var2 = 0.0F; + int var1 = 1833722768; + + while (true) { + switch (var1) { + case 220995690: + var2 = Mth.clamp(this.frame.phase() / 0.3F, 0.0F, 1.0F); + var1 = 1276561277; + break; + case 1276561277: + return var2; + case 1833722768: + default: + if (this.isVisible()) { + var1 = 220995690; + } else { + var1 = 2038303235; + } + break; + case 2038303235: + var2 = 0.0F; + var1 = 1276561277; + } + } + } + + public void renderBackdrop(aru var1, float var2, float var3) { + float var4 = 0.0F; + int var5 = -1364021335; + + while (true) { + switch (var5) { + case -1364021335: + default: + var4 = this.frame.alpha(); + if (var4 <= 0.01F) { + var5 = 1317371522; + } else { + var5 = -293756460; + } + break; + case -293756460: + var1.drawRoundedRect(0.0F, 0.0F, var2, var3, arq.ZERO, asu.BLACK.mulAlpha(0.42F * var4)); + return; + case 1317371522: + return; + } + } + } + + public void open() { + int var1 = -1391130958; + + while (true) { + switch (var1) { + case -1391130958: + default: + if (this.open) { + var1 = -314087378; + } else { + var1 = -1381542729; + } + break; + case -1381542729: + this.open = (boolean)(((1)) != 0); + this.openedAt = System.currentTimeMillis(); + this.query.setLength((-209710395 | 209710395) + (-209710395 & 209710395)); + this.selected = 0; + this.hovered = -1; + this.rebuild(); + this.frame.restart(); + this.listHeightSpring.jumpTo(0.0F); + this.scrollHandler.jumpTo(0.0); + this.selectionSpring.jumpTo(0.0F); + this.hoverFade.jumpTo(0.0F); + this.scrollBar.release(); + acb.show(); + return; + case -314087378: + return; + } + } + } + + public void close() { + int var1 = 394709937; + + while (true) { + switch (var1) { + case 394709937: + default: + if (!this.open) { + var1 = 1057362994; + } else { + var1 = 540825378; + } + break; + case 540825378: + this.closeQuietly(); + acb.dismiss(); + return; + case 1057362994: + return; + } + } + } + + public void closeQuietly() { + int var1 = -504123065; + + while (true) { + switch (var1) { + case -1236462279: + this.open = (boolean)(((0)) != 0); + this.hovered = -1; + this.scrollBar.release(); + this.frame.beginClose(); + return; + case -629273697: + return; + case -504123065: + } + + if (!this.open) { + var1 = -629273697; + } else { + var1 = -1236462279; + } + } + } + + public void toggle() { + int var1 = 24084077; + + while (true) { + switch (var1) { + case -1345137264: + this.open(); + var1 = 1903559100; + break; + case 24084077: + default: + if (this.open) { + var1 = 2108632555; + } else { + var1 = -1345137264; + } + break; + case 1903559100: + return; + case 2108632555: + this.close(); + var1 = 1903559100; + } + } + } + + public boolean charTyped(char var1) { + int var2 = -186801405; + + while (true) { + switch (var2) { + case -1714373485: + if (var1 == (1760717841 | -1760717714) + (1760717841 & -1760717714)) { + var2 = 1949055636; + } else { + var2 = 1556364809; + } + break; + case -1529732446: + if (var1 >= (1194886454 ^ -1194886422) + ((1194886454 & -1194886422) << 1)) { + var2 = -1714373485; + } else { + var2 = 1949055636; + } + break; + case -475929522: + this.query.append(var1); + this.onQueryChanged(); + return (boolean)(((1)) != 0); + case -186801405: + default: + if (this.open) { + var2 = -1529732446; + } else { + var2 = 1949055636; + } + break; + case 1009068908: + return (boolean)(((1)) != 0); + case 1556364809: + if (this.query.length() >= (-1887566147 | 1887566195) + (-1887566147 & 1887566195)) { + var2 = 1009068908; + } else { + var2 = -475929522; + } + break; + case 1949055636: + return (boolean)(((0)) != 0); + } + } + } + + public boolean keyPressed(int var1, int var2) { + if (!this.open) { + return (boolean)(((0)) != 0); + } + + int var3 = (var2 & (369093298 | -369093288) + (369093298 & -369093288)) != 0 + ? 1: 0; + int var4 = (var2 & (-533191371 | 533191372) + (-533191371 & 533191372)) != 0 + ? 1: 0; + switch (var1) { + case 70: + if (var3 == 0) { + return (boolean)(((0)) != 0); + } + + if (System.currentTimeMillis() - this.openedAt + >= (6509538718141802554L ^ -6509538718141802304L) + ((6509538718141802554L & -6509538718141802304L) << 1)) { + this.close(); + } + + return (boolean)(((1)) != 0); + case 256: + this.close(); + return (boolean)(((1)) != 0); + case 257: + case 335: + this.activate(this.selected, (boolean)((var4) != 0)); + return (boolean)(((1)) != 0); + case 258: + this.activate(this.selected, (boolean)((((-1865374529 ^ 1865374530) + ((-1865374529 & 1865374530) << 1))) != 0)); + return (boolean)(((1)) != 0); + case 259: + if (this.query.isEmpty()) { + return (boolean)(((1)) != 0); + } + + if (var3 != 0) { + this.query.setLength((1814179810 | -1814179810) + (1814179810 & -1814179810)); + } else { + this.query.setLength(this.query.length() - ((-1354996570 | 1354996571) + (-1354996570 & 1354996571))); + } + + this.onQueryChanged(); + return (boolean)(((1)) != 0); + case 264: + this.moveSelection((-1832167979 ^ 1832167980) + ((-1832167979 & 1832167980) << 1)); + return (boolean)(((1)) != 0); + case 265: + this.moveSelection((-541307743 | 541307742) + (-541307743 & 541307742)); + return (boolean)(((1)) != 0); + default: + return (boolean)(((0)) != 0); + } + } + + public boolean mouseClicked(double var1, double var3, int var5) { + if (!this.open) { + return (boolean)(((0)) != 0); + } + + double var6 = this.frame.toLocalX(var1); + double var8 = this.frame.toLocalY(var3); + if (!aqj.isHovered(var6, var8, this.panelX, this.panelY, this.panelWidth, this.panelHeight)) { + this.close(); + return (boolean)(((1)) != 0); + } + + if (var5 == 0 && this.scrollBar.press(var6, var8)) { + this.hovered = -1; + return (boolean)(((1)) != 0); + } + + int var10 = this.rowAt((float)var6, (float)var8); + if (var10 >= 0) { + this.activate( + var10, (boolean)(((var5 != 0 ? 1: (677908259 ^ -677908259) + ((677908259 & -677908259) << 1)) + ) != 0)); + } + + return (boolean)(((1)) != 0); + } + + public boolean mouseDragged(double var1) { + int var3 = -1779550838; + + while (true) { + switch (var3) { + case -2111268888: + return (boolean)(((0)) != 0); + case -1779550838: + default: + if (this.open) { + var3 = -176783285; + } else { + var3 = -2111268888; + } + break; + case -176783285: + if (!this.scrollBar.isDragging()) { + var3 = -2111268888; + } else { + var3 = 2025405914; + } + break; + case 2025405914: + this.scrollHandler.jumpTo(-this.scrollBar.dragTo(this.frame.toLocalY(var1))); + return (boolean)(((1)) != 0); + } + } + } + + public void mouseReleased() { + this.scrollBar.release(); + } + + public boolean mouseScrolled(double var1) { + int var3 = -1111717366; + + while (true) { + switch (var3) { + case -1111717366: + default: + if (!this.open) { + var3 = -10746109; + } else { + var3 = -440180279; + } + break; + case -440180279: + this.scrollHandler.scroll(var1 * 1.0); + this.scrollBar.notifyScrolled(); + return (boolean)(((1)) != 0); + case -10746109: + return (boolean)(((0)) != 0); + } + } + } + + public void render(aru var1, qz var2, float var3, float var4, float var5, float var6) { + float var7 = 0.0F; + mv var8 = null; + ge var9 = null; + ge var10 = null; + ge var11 = null; + ge var12 = null; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + arq var22 = null; + int var23 = -182120852; + + while (true) { + switch (var23) { + case -1126887346: + return; + case -901307770: + this.hoverFade.update(0.0F); + this.frame.pop(var1); + return; + case -182120852: + default: + this.frame.measure(var3, var4, 182.0F, this.nominalHeight()); + var7 = this.frame.advance(); + if (var7 <= 0.01F) { + var23 = -1126887346; + } else { + var23 = 895172960; + } + break; + case 895172960: + var8 = bz.getInstance().getThemeManager().getCurrentTheme(); + var9 = pk.font(oe.BODY); + var10 = pk.font(oe.CAPTION); + var11 = pk.font(oe.MICRO); + var12 = pi.iconFont(); + this.layout(var2); + var5 = (float)this.frame.toLocalX(var5); + var6 = (float)this.frame.toLocalY(var6); + this.frame.pushView(var1); + var13 = Math.max(this.frame.phase(), 0.0F); + var14 = Math.min(var13, 1.0F); + var15 = this.takeover(); + var16 = Mth.clamp((var13 - 0.38F) / 0.62F, 0.0F, 1.0F); + var17 = Math.max(0.0F, (var13 - 0.22F) / 0.78F); + var18 = Mth.lerp(var13, this.anchorX, this.panelX); + var19 = Mth.lerp(var17, this.anchorY, this.panelY); + var20 = Mth.lerp(var13, this.anchorWidth, this.panelWidth); + var21 = Mth.lerp(var17, this.anchorHeight, this.panelHeight); + var22 = asj.uniform(Mth.lerp(var13, this.anchorRadius, 9.0F)); + atb.drawShadow(var1.pose(), var18, var19, var20, var21, 16.0F, var22, asu.BLACK.mulAlpha(0.34F * var7 * var14)); + pi.surface(var1, var18, var19, var20, var21, var22, asu.WHITE.mulAlpha(var15)); + atb.drawRoundedBorder(var1.pose(), var18, var19, var20, var21, pk.borderRim(), var22, var8.getWhite().mulAlpha(0.14F * var15)); + if (var16 <= 0.01F) { + var23 = -901307770; + } else { + var23 = 956884911; + } + break; + case 956884911: + var1.pushClipBounds(var18, var19, var18 + var20, var19 + var21); + var1.pushMatrix(); + var1.pose().translate(0.0F, -3.0F * (1.0F - var16)); + this.drawField(var1, var8, var9, var12, var16); + var1.drawRoundedRect(this.panelX, this.panelY + this.fieldHeight, this.panelWidth, 0.6F, arq.ZERO, var8.getWhite().mulAlpha(0.09F * var16)); + this.drawRows(var1, var8, var10, var11, var12, var16, var5, var6); + var1.popMatrix(); + var1.popClip(); + this.frame.pop(var1); + return; + } + } + } + + private float nominalHeight() { + return 145.6F; + } + + private void layout(qz var1) { + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + int var5 = 0; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var10 = 0.0F; + int var9 = -696510675; + + while (true) { + switch (var9) { + case -1956821469: + var10 = 40.800003F; + var9 = -1775896591; + break; + case -1775896591: + var6 = var10; + this.scrollHandler.setMax(Math.max(0.0F, this.results.size() * 17.0F - var6)); + this.revealSelection(var6); + this.scrollHandler.update(); + this.listHeight = this.listHeightSpring.update(var6); + this.scrollPixels = (float)this.scrollHandler.getValue(); + this.panelHeight = var3 + this.listHeight; + var7 = this.frame.viewLeft() + 6.0F; + var8 = this.frame.viewTop() + 6.0F; + this.panelX = Mth.clamp( + this.anchorX + (this.anchorWidth - this.panelWidth) / 2.0F, var7, Math.max(var7, this.frame.viewRight() - this.panelWidth - 6.0F) + ); + this.panelY = Mth.clamp(this.anchorY, var8, Math.max(var8, this.frame.viewBottom() - this.panelHeight - 6.0F)); + this.listTop = this.panelY + this.fieldHeight + 0.6F + 3.0F; + this.scrollBar + .measure( + this.panelX + this.panelWidth - 3.0F - 3.5F, this.listTop, 3.5F, this.listHeight, (float)this.scrollHandler.getMax(), this.scrollPixels + ); + return; + case -696510675: + default: + var2 = this.frame.scale(); + this.anchorX = (float)this.frame.toViewX(var1.x()); + this.anchorY = (float)this.frame.toViewY(var1.y()); + this.anchorWidth = var1.width() / var2; + this.anchorHeight = var1.height() / var2; + this.anchorRadius = var1.radius() / var2; + this.panelWidth = Math.max(182.0F, var1.spanWidth() / var2); + this.fieldHeight = Math.max(20.0F, this.anchorHeight); + var3 = this.fieldHeight + 0.6F + 6.0F; + var4 = this.frame.viewHeight() - 12.0F - var3; + var5 = Math.max(1, (int)Math.floor(var4 / 17.0F)); + this.visibleRows = Math.min(Math.min(this.results.size(), (-1260855988 ^ 1260855995) + ((-1260855988 & 1260855995) << 1)), var5); + if (this.results.isEmpty()) { + var9 = -1956821469; + } else { + var9 = 795109087; + } + break; + case 795109087: + var10 = this.visibleRows * 17.0F; + var9 = -1775896591; + } + } + } + + private void revealSelection(float var1) { + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + int var7 = -766791516; + + while (true) { + switch (var7) { + case -1178431671: + return; + case -807492611: + return; + case -766791516: + default: + if (!this.revealSelected) { + var7 = -1178431671; + } else { + var7 = -515191589; + } + break; + case -515191589: + this.revealSelected = (boolean)(((0)) != 0); + var2 = (float)this.scrollHandler.getMax(); + if (var2 <= 0.0F) { + var7 = -807492611; + } else { + var7 = 1963673945; + } + break; + case 1963673945: + var3 = this.selected * 17.0F; + var4 = var3 + 17.0F; + var5 = -((float)this.scrollHandler.getTargetValue()); + var6 = Mth.clamp(var5, Math.min(var3, var4 - var1), var3); + this.scrollHandler.setTargetValue(-Mth.clamp(var6, 0.0F, var2)); + return; + } + } + } + + public void updateHover(float var1, float var2) { + float var3 = 0.0F; + float var4 = 0.0F; + int var5 = 0; + int var7 = 0; + int var6 = -1198252647; + + while (true) { + switch (var6) { + case -2112849731: + var7 = this.rowAt(var3, var4); + var6 = -1207473213; + break; + case -1741617256: + if (this.hoverFade.value() <= 0.02F) { + var6 = 1736424424; + } else { + var6 = 2071919682; + } + break; + case -1676562550: + if (!this.scrollBar.isDragging()) { + var6 = -2112849731; + } else { + var6 = -79160604; + } + break; + case -1207473213: + var5 = var7; + if (var5 >= 0) { + var6 = -1741617256; + } else { + var6 = 2071919682; + } + break; + case -1198252647: + default: + var3 = (float)this.frame.toLocalX(var1); + var4 = (float)this.frame.toLocalY(var2); + if (this.open) { + var6 = 7083813; + } else { + var6 = -79160604; + } + break; + case -79160604: + var7 = -1; + var6 = -1207473213; + break; + case 7083813: + if (!this.scrollBar.isOver(var3, var4)) { + var6 = -1676562550; + } else { + var6 = -79160604; + } + break; + case 1736424424: + this.hoverSpring.jumpTo(var5); + var6 = 2071919682; + break; + case 2071919682: + this.hovered = var5; + return; + } + } + } + + private void drawField(aru var1, mv var2, ge var3, ge var4, float var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = -387760300; + + while (true) { + switch (var12) { + case -387760300: + default: + float var13 = this.panelX + 6.0F + 3.0F; + var7 = this.panelY + (this.fieldHeight - var4.height()) / 2.0F; + var1.drawText(var4, "A", var13, var7, var2.getColor().mulAlpha(0.75F * var5)); + var6 = var13 + (var4.width("A") + 5.0F); + var8 = this.panelY + (this.fieldHeight - var3.height()) / 2.0F; + var9 = 3.9F; + var10 = Math.max(0.0F, this.panelWidth - (var6 - this.panelX) - 6.0F - var9); + if (this.query.isEmpty()) { + var12 = 342913204; + } else { + var12 = -140508259; + } + break; + case -140508259: + var1.drawScrollingText(var3, this.query.toString(), var6, var8, var10, var2.getWhite().mulAlpha(var5)); + var12 = 1189429780; + break; + case 342913204: + var1.drawScrollingText( + var3, + "Search features", + var6 + var9, + var8, + var10, + var2.getWhite().mulAlpha(0.42F * var5) + ); + var12 = 1189429780; + break; + case 1189429780: + var11 = var6 + Math.min(var3.width(this.query.toString()), var10) + 1.5F; + var1.drawRoundedRect(var11, var8, 0.9F, var3.height(), asj.pill(0.9F), var2.getColor().mulAlpha(caretAlpha() * var5)); + return; + } + } + } + + private static float caretAlpha() { + float var0 = (float)(System.currentTimeMillis() % ((-2080094770487213212L | 2080094770487214272L) + (-2080094770487213212L & 2080094770487214272L))) + / 1060.0F; + float var1 = (Mth.cos(var0 * (float) (Math.PI * 2)) + 1.0F) / 2.0F; + return 0.08F + 0.92F * var1; + } + + private void drawRows(aru var1, mv var2, ge var3, ge var4, ge var5, float var6, float var7, float var8) { + float var9 = this.panelY + this.fieldHeight + 0.6F; + float var10 = this.panelY + this.panelHeight; + if (this.results.isEmpty()) { + this.hoverFade.update(0.0F); + arw.draw( + var1, + var2, + null, + "No matches", + "Try another name", + this.panelX, + var9, + this.panelWidth, + var10 - var9, + var6 + ); + } else { + asu var11 = var2.getWhite(); + asu var12 = var2.getColor(); + float var13 = this.panelX + 3.0F; + float var14 = this.panelWidth - 6.0F; + float var15 = this.scrollBar.isActive() ? 5.9F : 0.0F; + arq var16 = asj.uniform(5.0F); + float var17 = (float)this.scrollHandler.getMax(); + var1.clipScroll( + this.panelX, + var9, + this.panelX + this.panelWidth, + var10, + Math.min(5.0F, this.scrollPixels), + Math.min(5.0F, Math.max(0.0F, var17 - this.scrollPixels)) + ); + float var18 = this.listTop + this.selectionSpring.update(this.selected) * 17.0F - this.scrollPixels; + var1.drawRoundedRect(var13, var18, var14, 17.0F, var16, var12.mulAlpha(0.2F * var6)); + var1.drawRoundedRect(var13, var18 + 3.0F, 2.0F, 11.0F, asj.pill(2.0F), var12.mulAlpha(var6)); + float var19 = this.hoverFade.update(this.hovered >= 0 ? 1.0F : 0.0F); + if (var19 > 0.02F) { + if (this.hovered >= 0) { + this.hoverSpring.animateTo(this.hovered); + } + + float var20 = this.listTop + this.hoverSpring.update() * 17.0F - this.scrollPixels; + var1.drawRoundedRect(var13, var20, var14, 17.0F, var16, var11.mulAlpha(0.07F * var19 * var6)); + } + + int var34 = Math.max(0, (int)Math.floor(this.scrollPixels / 17.0F)); + int var21 = Math.min( + this.results.size() - (1), + (int)Math.ceil((this.scrollPixels + this.listHeight) / 17.0F) + ); + + for (int var22 = var34; var22 <= var21; var22++) { + rf var23 = this.results.get(var22); + float var24 = this.listTop + var22 * 17.0F - this.scrollPixels; + int var25 = var22 == this.selected + ? 1: 0; + boolean var26 = isActive(var23); + asu var27 = var26 ? var12.mulAlpha(var6) : var11.mulAlpha(0.62F * var6); + float var28 = var13 + 6.0F; + var1.drawText(var5, var23.glyph(), var28 + (13.0F - var5.width(var23.glyph())) / 2.0F, var24 + (17.0F - var5.height()) / 2.0F, var27); + float var29 = var28 + 13.0F + 6.0F; + float var30 = var13 + var14 - 6.0F - var15; + float var31 = Math.max(0.0F, var30 - this.trailingWidth(var23, var4, (boolean)((var25) != 0)) - 5.0F - var29); + var1.drawScrollingText(var3, var23.label(), var29, var24 + (17.0F - var3.height()) / 2.0F, var31, var11.mulAlpha(var6)); + if (var25 != 0) { + String var32 = var23.kind() == rg.MODULE + ? "enter" + : "tab"; + float var33 = var4.width(var32); + var1.drawText(var4, var32, var30 - var33, var24 + (17.0F - var4.height()) / 2.0F, var11.mulAlpha(0.55F * var6)); + var30 -= var33 + 6.0F; + } else if (var23.subtitle() != null) { + float var35 = var4.width(var23.subtitle()); + var1.drawText(var4, var23.subtitle(), var30 - var35, var24 + (17.0F - var4.height()) / 2.0F, var11.mulAlpha(0.5F * var6)); + var30 -= var35 + 6.0F; + } + + if (var23.kind() == rg.MODULE) { + asu var36 = var26 ? pi.gaugeGood().mulAlpha(var6) : var11.mulAlpha(0.22F * var6); + var1.drawRoundedRect(var30 - 4.0F, var24 + 6.5F, 4.0F, 4.0F, asj.dot(4.0F), var36); + } + } + + var1.popClip(); + this.scrollBar.render(var1, var2, var6, var7, var8, this.scrollHandler.isSettled()); + } + } + + private float trailingWidth(rf var1, ge var2, boolean var3) { + float var4 = 0.0F; + if (var3) { + var4 += var2.width( + var1.kind() == rg.MODULE + ? "enter" + : "tab" + ) + + 6.0F; + } else if (var1.subtitle() != null) { + var4 += var2.width(var1.subtitle()) + 6.0F; + } + + if (var1.kind() == rg.MODULE) { + var4 += 4.0F; + } + + return var4; + } + + private static boolean isActive(rf var0) { + int var2 = 0; + int var1 = 995985411; + + while (true) { + switch (var1) { + case -1447161048: + var2 = 1; + var1 = 871642931; + break; + case -718078848: + if (var0.module().isEnabled()) { + var1 = -1447161048; + } else { + var1 = -24569960; + } + break; + case -24569960: + var2 = 0; + var1 = 871642931; + break; + case 871642931: + return (boolean)((var2) != 0); + case 995985411: + default: + if (var0.kind() == rg.MODULE) { + var1 = -718078848; + } else { + var1 = -24569960; + } + } + } + } + + private int rowAt(float var1, float var2) { + int var3 = 0; + int var5 = 0; + int var4 = 259108297; + + while (true) { + switch (var4) { + case -2078420865: + var5 = -1; + var4 = 1985201476; + break; + case -1459315673: + if (this.visibleRows <= 0) { + var4 = 1466364029; + } else { + var4 = 1167696752; + } + break; + case -863475795: + if (var2 >= this.listTop + this.listHeight) { + var4 = 418278264; + } else { + var4 = -819938667; + } + break; + case -819938667: + var3 = (int)Math.floor((var2 - this.listTop + this.scrollPixels) / 17.0F); + if (var3 >= 0) { + var4 = 2049829295; + } else { + var4 = -2078420865; + } + break; + case 259108297: + default: + if (!this.results.isEmpty()) { + var4 = -1459315673; + } else { + var4 = 1466364029; + } + break; + case 418278264: + return -1; + case 1119770716: + if (var1 > this.panelX + this.panelWidth) { + var4 = 1636002350; + } else { + var4 = 1571192749; + } + break; + case 1167696752: + if (!(var1 < this.panelX)) { + var4 = 1119770716; + } else { + var4 = 1636002350; + } + break; + case 1466364029: + return -1; + case 1571192749: + if (!(var2 < this.listTop)) { + var4 = -863475795; + } else { + var4 = 418278264; + } + break; + case 1636002350: + return -1; + case 1985201476: + return var5; + case 2002724446: + var5 = var3; + var4 = 1985201476; + break; + case 2049829295: + if (var3 < this.results.size()) { + var4 = 2002724446; + } else { + var4 = -2078420865; + } + } + } + } + + private void onQueryChanged() { + mm var1 = null; + int var2 = -141497241; + + while (true) { + switch (var2) { + case -795622386: + return; + case -614976308: + var1.playTyping(); + var2 = -795622386; + break; + case -141497241: + default: + this.rebuild(); + this.selected = 0; + this.scrollHandler.jumpTo(0.0); + this.revealSelected = (boolean)(((0)) != 0); + var1 = bz.getInstance().getSoundManager(); + if (var1 != null) { + var2 = -614976308; + } else { + var2 = -795622386; + } + } + } + } + + private void moveSelection(int var1) { + mm var2 = null; + int var3 = -1005355160; + + while (true) { + switch (var3) { + case -1447539777: + this.selected = Math.floorMod(this.selected + var1, this.results.size()); + this.revealSelected = (boolean)(((1)) != 0); + var2 = bz.getInstance().getSoundManager(); + if (var2 != null) { + var3 = 1002193813; + } else { + var3 = -503213269; + } + break; + case -1005355160: + default: + if (this.results.isEmpty()) { + var3 = -156140829; + } else { + var3 = -1447539777; + } + break; + case -503213269: + return; + case -156140829: + return; + case 1002193813: + var2.playTab(); + var3 = -503213269; + } + } + } + + private void activate(int var1, boolean var2) { + rf var3 = null; + mm var4 = null; + int var5 = 903732228; + + while (true) { + switch (var5) { + case -1431819470: + if (var2) { + var5 = -1288891243; + } else { + var5 = 2120100082; + } + break; + case -1288891243: + this.openMenu(var3.module().getCategory(), var3.module()); + return; + case -1132623711: + return; + case -1082459796: + var3 = this.results.get(var1); + var4 = bz.getInstance().getSoundManager(); + if (var3.kind() == rg.CATEGORY) { + var5 = 1339396672; + } else { + var5 = -1431819470; + } + break; + case -961492388: + return; + case 903732228: + default: + if (var1 >= 0) { + var5 = 1599622907; + } else { + var5 = -1132623711; + } + break; + case 1339396672: + this.openMenu(var3.category(), null); + return; + case 1599622907: + if (var1 >= this.results.size()) { + var5 = -1132623711; + } else { + var5 = -1082459796; + } + break; + case 1804424181: + var4.playToggle(var3.module().isEnabled()); + var5 = -961492388; + break; + case 2120100082: + this.close(); + var3.module().toggle(); + if (var4 != null) { + var5 = 1804424181; + } else { + var5 = -961492388; + } + } + } + } + + private void openMenu(rl var1, rm var2) { + yc var3 = null; + int var4 = -1955947702; + + while (true) { + switch (var4) { + case -1955947702: + default: + this.closeQuietly(); + var3 = bz.getInstance().getMenuScreen(); + if (var3 == null) { + var4 = -1221181743; + } else { + var4 = -1381835473; + } + break; + case -1641411282: + return; + case -1381835473: + mc.gui.setScreen(var3); + if (var2 != null) { + var4 = 85282966; + } else { + var4 = -867086634; + } + break; + case -1221181743: + acb.dismiss(); + return; + case -867086634: + var3.focusCategory(var1); + var4 = -1641411282; + break; + case 85282966: + var3.focusModule(var2); + var4 = -1641411282; + } + } + } + + private void rebuild() { + this.results.clear(); + String var1 = this.query.toString().trim().toLowerCase(Locale.ROOT); + ArrayList var2 = new ArrayList(); + List var3 = bz.getInstance().getModuleManager().getModules(); + + for (int var4 = 0; var4 < var3.size(); var4++) { + rm var5 = (rm)var3.get(var4); + int var6 = score(var5.getName(), var5.getCategory().getName(), var1); + if (var6 != (575052886 ^ -575052887) + ((575052886 & -575052887) << 1)) { + var2.add(new rh(new rf(rg.MODULE, var5.getName(), var5.getCategory().getName(), rk.glyph(var5), var5, var5.getCategory()), var6, var4)); + } + } + + if (!var1.isEmpty()) { + rl[] var8 = rl.listed(); + + for (int var10 = 0; var10 < var8.length; var10++) { + rl var12 = var8[var10]; + int var7 = score(var12.getName(), var12.getName(), var1); + if (var7 != (1879664346 | -1879664347) + (1879664346 & -1879664347)) { + var2.add(new rh(new rf(rg.CATEGORY, var12.getName() + " settings", null, var12.getIcon(), null, var12), var7, var3.size() + var10)); + } + } + } + + var2.sort((var0, var1x) -> { + int var2x = 1142362698; + + while (true) { + switch (var2x) { + case -1843063574: + return Integer.compare(var0.score(), var1x.score()); + case 563964467: + return Integer.compare(var0.position(), var1x.position()); + case 1142362698: + } + + if (var0.score() != var1x.score()) { + var2x = -1843063574; + } else { + var2x = 563964467; + } + } + }); + + for (rh var11 : var2) { + if (this.results.size() >= (-79016432 ^ 79016480) + ((-79016432 & 79016480) << 1)) { + break; + } + + this.results.add(var11.entry()); + } + + this.selected = Math.min( + this.selected, + Math.max( + 0, this.results.size() - ((1849637382 ^ -1849637381) + ((1849637382 & -1849637381) << 1)) + ) + ); + } + + private static int score(String var0, String var1, String var2) { + String var3 = null; + int var5 = 0; + int var4 = -105640813; + + while (true) { + switch (var4) { + case -1428663200: + return 2; + case -1267556290: + return 2; + case -1017085286: + return 3; + case -854743704: + if (var1.toLowerCase(Locale.ROOT).startsWith(var2)) { + var4 = -1017085286; + } else { + var4 = -290678533; + } + break; + case -478893561: + var5 = 4; + var4 = 1153131201; + break; + case -290678533: + if (isSubsequence(var3, var2)) { + var4 = -478893561; + } else { + var4 = 666328433; + } + break; + case -105640813: + default: + if (var2.isEmpty()) { + var4 = -1267556290; + } else { + var4 = 520550572; + } + break; + case 64573420: + if (startsWord(var3, var2)) { + var4 = 870918042; + } else { + var4 = 1420952294; + } + break; + case 520550572: + var3 = var0.toLowerCase(Locale.ROOT); + if (var3.startsWith(var2)) { + var4 = 1342475750; + } else { + var4 = 64573420; + } + break; + case 666328433: + var5 = -1; + var4 = 1153131201; + break; + case 870918042: + return 1; + case 1153131201: + return var5; + case 1342475750: + return 0; + case 1420952294: + if (var3.contains(var2)) { + var4 = -1428663200; + } else { + var4 = -854743704; + } + } + } + } + + private static boolean startsWord(String var0, String var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = -145310555; + + while (true) { + switch (var5) { + case -1705292589: + if (var4 == (18890163 | -18890068) + (18890163 & -18890068)) { + var5 = 1882007394; + } else { + var5 = 823046756; + } + break; + case -1613098476: + if (var4 != (953461810 | -953461765) + (953461810 & -953461765)) { + var5 = -1705292589; + } else { + var5 = 1882007394; + } + break; + case -465402925: + var4 = var0.charAt(var3 - ((66378267 ^ -66378266) + ((66378267 & -66378266) << 1))); + if (var4 != (1905180481 | -1905180449) + (1905180481 & -1905180449)) { + var5 = -1613098476; + } else { + var5 = 1882007394; + } + break; + case -145310555: + default: + var2 = 0; + var5 = 1009401493; + break; + case 823046756: + var2 = var3 + 1; + var5 = 1009401493; + break; + case 1009401493: + var3 = var0.indexOf(var1, var2); + if (var3 <= 0) { + var5 = 1894918157; + } else { + var5 = -465402925; + } + break; + case 1882007394: + return (boolean)(((1)) != 0); + case 1894918157: + return (boolean)(((0)) != 0); + } + } + } + + private static boolean isSubsequence(String var0, String var1) { + int var2 = 0; + int var3 = 0; + int var5 = 0; + int var4 = -627999170; + + while (true) { + switch (var4) { + case -1885723967: + var5 = 1; + var4 = 520744436; + break; + case -1767153463: + if (var0.charAt(var3) == var1.charAt(var2)) { + var4 = 1186032463; + } else { + var4 = 1887189265; + } + break; + case -627999170: + default: + var2 = 0; + var3 = 0; + var4 = 420064917; + break; + case 125351128: + var5 = 0; + var4 = 520744436; + break; + case 320037834: + if (var2 < var1.length()) { + var4 = -1767153463; + } else { + var4 = 1924390700; + } + break; + case 420064917: + if (var3 < var0.length()) { + var4 = 320037834; + } else { + var4 = 1924390700; + } + break; + case 520744436: + return (boolean)((var5) != 0); + case 1186032463: + var2++; + var4 = 1887189265; + break; + case 1887189265: + var3++; + var4 = 420064917; + break; + case 1924390700: + if (var2 == var1.length()) { + var4 = -1885723967; + } else { + var4 = 125351128; + } + } + } + } +} diff --git a/src/main/java/defpackage/rj.java b/src/main/java/defpackage/rj.java new file mode 100644 index 0000000..d89c663 --- /dev/null +++ b/src/main/java/defpackage/rj.java @@ -0,0 +1,544 @@ +package defpackage; + +import java.util.Arrays; +import net.minecraft.util.Mth; + +final class rj { + static final rj EMPTY = new rj( + null, + "", + new String[0], + new float[0], + new float[0], + new int[0], + new float[0], + new float[0], + 0.0F + ); + private static final int NO_WORD = -1; + private static final float HALF = 0.5F; + private static final float FULL = 1.0F; + private static final float VISIBLE_EPSILON = 0.01F; + private static final float SWEEP_SOFTNESS = 12.0F; + private static final float DIM_ALPHA = 0.36F; + private static final float CAPSULE_PAD_X = 3.0F; + private static final float CAPSULE_PAD_Y = 1.5F; + private static final float CAPSULE_LEAD_MS = 55.0F; + private static final float CAPSULE_TRAIL_MS = 150.0F; + private static final float CAPSULE_FADE_IN_MS = 90.0F; + private static final float CAPSULE_FADE_OUT_MS = 260.0F; + private static final float CAPSULE_TOP_LIGHTEN = 0.2F; + private static final float CAPSULE_SHADOW_SOFTNESS = 5.0F; + private static final float CAPSULE_SHADOW_ALPHA = 0.45F; + private static final float CAPSULE_PROGRESS_ALPHA = 0.18F; + private static final float CAPSULE_COVER_SOFTNESS = 2.0F; + private static final float CAPSULE_UNSUNG_TEXT = 0.78F; + private static final float LIGHT_ACCENT_LUMA = 0.62F; + private static final float LUMA_RED = 0.299F; + private static final float LUMA_GREEN = 0.587F; + private static final float LUMA_BLUE = 0.114F; + private static final float CHANNEL_MAX = 255.0F; + private static final int DARK_TEXT_RGB = -15461864; + private static final float ENTER_TRAVEL = 8.0F; + private static final float LEAVE_TRAVEL = 7.0F; + private static final float STAGGER_SPAN = 0.45F; + private static final float BACK_TENSION = 1.3F; + private static final float EDGE_FADE = 9.0F; + private static final float CLIP_BLEED = 2.0F; + private static final float NO_FADE = 0.0F; + private static final long MAX_FRAME_MS = 100L; + private final ge font; + private final String text; + private final String[] glyphs; + private final float[] offsets; + private final float[] centers; + private final int[] wordOf; + private final float[] wordLefts; + private final float[] wordRights; + private final float width; + private float capsuleLeft; + private float capsuleRight; + private float capsuleAlpha; + private boolean capsulePlaced; + private long lastFrameAt; + + private rj(ge var1, String var2, String[] var3, float[] var4, float[] var5, int[] var6, float[] var7, float[] var8, float var9) { + this.font = var1; + this.text = var2; + this.glyphs = var3; + this.offsets = var4; + this.centers = var5; + this.wordOf = var6; + this.wordLefts = var7; + this.wordRights = var8; + this.width = var9; + } + + static rj layout(ge var0, String var1) { + int var2 = 0; + String[] var3 = null; + float[] var4 = null; + float[] var5 = null; + int[] var6 = null; + float[] var7 = null; + float[] var8 = null; + int var9 = 0; + int var10 = 0; + int var11 = 0; + float var12 = 0.0F; + int var13 = 0; + int var14 = 0; + int var15 = 0; + float var16 = 0.0F; + int var17 = -608401303; + + while (true) { + switch (var17) { + case -1800068864: + return EMPTY; + case -1751920907: + var6[var13] = -1; + var10 = 0; + var17 = -851848157; + break; + case -1272755302: + var7[var9] = var12; + var9++; + var10 = 1; + var17 = 566926140; + break; + case -923200193: + return new rj(var0, var1, var3, var4, var5, var6, Arrays.copyOf(var7, var9), Arrays.copyOf(var8, var9), var0.width(var1)); + case -851848157: + var12 = var16; + var11 = var15; + var13++; + var17 = 1721948332; + break; + case -608401303: + default: + if (var1.isEmpty()) { + var17 = -1800068864; + } else { + var17 = 217013890; + } + break; + case 217013890: + var2 = var1.codePointCount(0, var1.length()); + var3 = new String[var2]; + var4 = new float[var2]; + var5 = new float[var2]; + var6 = new int[var2]; + var7 = new float[var2]; + var8 = new float[var2]; + var9 = 0; + var10 = 0; + var11 = 0; + var12 = 0.0F; + var13 = 0; + var17 = 1721948332; + break; + case 562861308: + if (var10 == 0) { + var17 = -1272755302; + } else { + var17 = 566926140; + } + break; + case 566926140: + var6[var13] = var9 - (1); + var8[var9 - (1)] = var16; + var17 = -851848157; + break; + case 969200722: + var14 = var1.codePointAt(var11); + var15 = var1.offsetByCodePoints(var11, (1794753582 | -1794753581) + (1794753582 & -1794753581)); + var16 = var0.width(var1.substring(0, var15)); + var3[var13] = var1.substring(var11, var15); + var4[var13] = var12; + var5[var13] = (var12 + var16) * 0.5F; + if (Character.isWhitespace(var14)) { + var17 = -1751920907; + } else { + var17 = 562861308; + } + break; + case 1721948332: + if (var13 < var2) { + var17 = 969200722; + } else { + var17 = -923200193; + } + } + } + } + + boolean matches(ge var1, String var2) { + int var4 = 0; + int var3 = 1361704324; + + while (true) { + switch (var3) { + case -1613855050: + return (boolean)((var4) != 0); + case 100880799: + var4 = 0; + var3 = -1613855050; + break; + case 753258403: + var4 = 1; + var3 = -1613855050; + break; + case 1333115628: + if (this.text.equals(var2)) { + var3 = 753258403; + } else { + var3 = 100880799; + } + break; + case 1361704324: + default: + if (this.font == var1) { + var3 = 1333115628; + } else { + var3 = 100880799; + } + } + } + } + + boolean isEmpty() { + int var2 = 0; + int var1 = -1828903711; + + while (true) { + switch (var1) { + case -1828903711: + default: + if (this.glyphs.length == 0) { + var1 = 1726501084; + } else { + var1 = -1728475114; + } + break; + case -1728475114: + var2 = 0; + var1 = -975903816; + break; + case -975903816: + return (boolean)((var2) != 0); + case 1726501084: + var2 = 1; + var1 = -975903816; + } + } + } + + String text() { + return this.text; + } + + float width() { + return this.width; + } + + float sweepFocus(float var1) { + return this.width * var1; + } + + void draw( + aru var1, + float var2, + float var3, + float var4, + float var5, + float var6, + float var7, + boolean var8, + boolean var9, + asu var10, + asu var11, + float var12, + long var13 + ) { + if (!this.isEmpty() && !(var12 <= 0.01F)) { + int var15 = var9 && !var8 ? this.activeWord(var6) : -1; + this.advanceCapsule(var15, var13); + float var16 = Math.max(0.0F, this.width - var4); + float var17 = Mth.clamp(var5, 0.0F, var16); + float var18 = Math.max(8.0F, 7.0F) + 2.0F; + float var19 = this.font.height(); + var1.pushClipEdges( + var2 - 2.0F - 3.0F, var3 - var18, var2 + var4, var3 + var19 + var18, 0.0F, 0.0F, Math.min(var17, 9.0F) + 2.0F, Math.min(var16 - var17, 9.0F) + ); + float var20 = var2 - var17; + float var21 = var6 * (this.width + 12.0F); + int var22 = var11.getRGB(); + int var23 = var10.getRGB(); + float var24 = var9 ? this.capsuleAlpha * smoothstep(var8 ? 1.0F - var7 : var7) : 0.0F; + if (var24 > 0.01F) { + this.drawCapsule(var1, var20, var3, var19, var6, var11, var23, var24 * var12); + } + + int var25 = asu.getRGBWithAlpha(var23, 0.36F); + int var26 = luma(var22) > 0.62F ? -15461864: var23; + int var27 = asu.getRGBWithAlpha(var26, 0.78F); + int var28 = this.glyphs.length; + gt.beginBatch(); + + try { + for (int var29 = 0; var29 < var28; var29++) { + float var30 = staggered(var7, var29, var28); + float var31; + float var32; + if (var8) { + float var33 = smoothstep(var30); + var31 = 1.0F - var33; + var32 = -7.0F * var33; + } else { + var31 = smoothstep(var30); + var32 = 8.0F * (1.0F - backOut(var30)); + } + + if (!(var31 <= 0.01F)) { + float var40 = var9 ? smoothstep((var21 - this.centers[var29]) / 12.0F) : 1.0F; + int var34 = asu.mixRGB(var25, var23, var40, 1.0F); + float var35 = var24 * this.coverage(this.centers[var29]); + if (var35 > 0.01F) { + int var36 = asu.mixRGB(var27, var26, var40, 1.0F); + var34 = asu.mixRGB(var34, var36, var35, 1.0F); + } + + var1.drawText(this.font, this.glyphs[var29], var20 + this.offsets[var29], var3 + var32, asu.getRGBWithAlpha(var34, var12 * var31)); + } + } + } finally { + gt.endBatch(); + } + + var1.popClip(); + } + } + + private int activeWord(float var1) { + float var2 = 0.0F; + int var3 = 0; + int var4 = 0; + int var5 = 199822570; + + while (true) { + switch (var5) { + case -1889772095: + if (this.wordLefts[var4] > var2) { + var5 = -1455894795; + } else { + var5 = 1857970949; + } + break; + case -1843586574: + if (this.wordLefts.length == 0) { + var5 = 2071553230; + } else { + var5 = 824902393; + } + break; + case -1455894795: + var5 = -925041323; + break; + case -925041323: + return var3; + case 54146491: + if (!(var1 >= 1.0F)) { + var5 = -1843586574; + } else { + var5 = 2071553230; + } + break; + case 199822570: + default: + if (!(var1 <= 0.0F)) { + var5 = 54146491; + } else { + var5 = 2071553230; + } + break; + case 824902393: + var2 = var1 * this.width; + var3 = -1; + var4 = 0; + var5 = 1848839984; + break; + case 1848839984: + if (var4 < this.wordLefts.length) { + var5 = -1889772095; + } else { + var5 = -925041323; + } + break; + case 1857970949: + var3 = var4++; + var5 = 1848839984; + break; + case 2071553230: + return -1; + } + } + } + + private void advanceCapsule(int var1, long var2) { + long var4 = this.lastFrameAt == (-5167691438159461294L | 5167691438159461294L) + (-5167691438159461294L & 5167691438159461294L) + ? (9016020328679624776L | -9016020328679624776L) + (9016020328679624776L & -9016020328679624776L) + : Math.min( + (4724427398115538219L | -4724427398115538119L) + (4724427398115538219L & -4724427398115538119L), + Math.max((7056489928515897480L ^ -7056489928515897480L) + ((7056489928515897480L & -7056489928515897480L) << 1), var2 - this.lastFrameAt) + ); + this.lastFrameAt = var2; + if (var1 == (-431499239 | 431499238) + (-431499239 & 431499238)) { + this.capsuleAlpha = this.capsuleAlpha - this.capsuleAlpha * approach(var4, 260.0F); + } else { + float var6 = this.wordLefts[var1] - 3.0F; + float var7 = this.wordRights[var1] + 3.0F; + if (this.capsulePlaced && !(this.capsuleAlpha <= 0.01F)) { + int var8 = var6 + var7 >= this.capsuleLeft + this.capsuleRight + ? 1: 0; + float var9 = approach(var4, 55.0F); + float var10 = approach(var4, 150.0F); + this.capsuleLeft = this.capsuleLeft + (var6 - this.capsuleLeft) * (var8 != 0 ? var10 : var9); + this.capsuleRight = this.capsuleRight + (var7 - this.capsuleRight) * (var8 != 0 ? var9 : var10); + } else { + this.capsuleLeft = var6; + this.capsuleRight = var7; + this.capsulePlaced = (boolean)(((1)) != 0); + } + + this.capsuleAlpha = this.capsuleAlpha + (1.0F - this.capsuleAlpha) * approach(var4, 90.0F); + } + } + + private float coverage(float var1) { + float var2 = Math.min(var1 - this.capsuleLeft, this.capsuleRight - var1); + return smoothstep(var2 / 2.0F); + } + + private void drawCapsule(aru var1, float var2, float var3, float var4, float var5, asu var6, int var7, float var8) { + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + asu var13 = null; + asu var14 = null; + float var15 = 0.0F; + float var16 = 0.0F; + int var17 = -641835611; + + while (true) { + switch (var17) { + case -1268890122: + var1.pushClipBounds(var9, var11, var2 + var15, var11 + var12); + var1.drawRoundedRect(var9, var11, var10, var12, asj.pill(var12), asu.getRGBWithAlpha(var7, 0.18F * var8)); + var1.popClip(); + var17 = 41490949; + break; + case -641835611: + default: + var9 = var2 + this.capsuleLeft; + var10 = Math.max(0.0F, this.capsuleRight - this.capsuleLeft); + var11 = var3 - 1.5F; + var12 = var4 + 3.0F; + var13 = var6.mulAlpha(var8); + var14 = new asu(asu.mixRGB(var6.getRGB(), var7, 0.2F, 1.0F)).mulAlpha(var8); + atb.drawShadow(var1.pose(), var9, var11, var10, var12, 5.0F, asj.pill(var12), var6.mulAlpha(0.45F * var8)); + var1.drawRoundedRect(var9, var11, var10, var12, asj.pill(var12), ary.of(var14, var13, var14, var13)); + var15 = Mth.clamp(var5 * this.width, this.capsuleLeft, this.capsuleRight); + var16 = var15 - this.capsuleLeft; + if (var16 > 0.01F) { + var17 = -1268890122; + } else { + var17 = 41490949; + } + break; + case 41490949: + return; + } + } + } + + private static float approach(long var0, float var2) { + return 1.0F - (float)Math.exp((float)(-var0) / var2); + } + + private static float luma(int var0) { + return ( + 0.299F * (var0 >> (-1667140210 | 1667140226) + (-1667140210 & 1667140226) & (-1463286716 | 1463286971) + (-1463286716 & 1463286971)) + + 0.587F * (var0 >> (-1481584017 | 1481584025) + (-1481584017 & 1481584025) & (1216000484 ^ -1216000229) + ((1216000484 & -1216000229) << 1)) + + 0.114F * (var0 & (-1890062113 ^ 1890062368) + ((-1890062113 & 1890062368) << 1)) + ) + / 255.0F; + } + + private static float staggered(float var0, int var1, int var2) { + float var3 = 0.0F; + float var5 = 0.0F; + int var4 = 1787296037; + + while (true) { + switch (var4) { + case -1546530447: + var3 = var5; + return Mth.clamp((var0 - var3) / 0.55F, 0.0F, 1.0F); + case 175406472: + var5 = 0.45F * var1 / (var2 - ((-612063059 ^ 612063060) + ((-612063059 & 612063060) << 1))); + var4 = -1546530447; + break; + case 988485890: + var5 = 0.0F; + var4 = -1546530447; + break; + case 1787296037: + default: + if (var2 > (-160891121 | 160891122) + (-160891121 & 160891122)) { + var4 = 175406472; + } else { + var4 = 988485890; + } + } + } + } + + private static float smoothstep(float var0) { + float var1 = Mth.clamp(var0, 0.0F, 1.0F); + return var1 * var1 * (3.0F - 2.0F * var1); + } + + private static float backOut(float var0) { + float var1 = 0.0F; + int var2 = -590956841; + + while (true) { + switch (var2) { + case -590956841: + default: + if (var0 <= 0.0F) { + var2 = 1694215013; + } else { + var2 = -474154610; + } + break; + case -474154610: + if (var0 >= 1.0F) { + var2 = 606188490; + } else { + var2 = 54163899; + } + break; + case 54163899: + var1 = var0 - 1.0F; + return var1 * var1 * (2.3F * var1 + 1.3F) + 1.0F; + case 606188490: + return 1.0F; + case 1694215013: + return 0.0F; + } + } + } +} diff --git a/src/main/java/defpackage/rk.java b/src/main/java/defpackage/rk.java new file mode 100644 index 0000000..4e57932 --- /dev/null +++ b/src/main/java/defpackage/rk.java @@ -0,0 +1,247 @@ +package defpackage; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +public final class rk { + private static final Map GLYPHS = new HashMap<>(); + + private rk() { + } + + private static void map(String var0, String var1) { + GLYPHS.put(key(var0), var1); + } + + private static String key(String var0) { + return var0.toLowerCase(Locale.ROOT); + } + + public static String glyph(rm var0) { + String var1 = null; + String var3 = null; + int var2 = -1170068249; + + while (true) { + switch (var2) { + case -1728037480: + var3 = var1; + var2 = -133806535; + break; + case -1170068249: + default: + if (var0 == null) { + var2 = -26658016; + } else { + var2 = 1066219396; + } + break; + case -133806535: + return var3; + case -26658016: + return rl.MISC.getIcon(); + case 69730187: + var3 = var0.getCategory().getIcon(); + var2 = -133806535; + break; + case 1066219396: + var1 = GLYPHS.get(key(var0.getName())); + if (var1 != null) { + var2 = -1728037480; + } else { + var2 = 69730187; + } + } + } + } + + static { + map( + "ArmorColor", + "P" + ); + map( + "AspectRatio", + "f" + ); + map( + "BetterMinecraft", + "B" + ); + map("BetterRain", "V"); + map("Blizzard", "V"); + map( + "BlockOverlay", + "K" + ); + map("Chams", "2"); + map( + "Chunk Cache", + "F" + ); + map( + "ConsumeESP", + "o" + ); + map("Cosmetics", "w"); + map( + "Crosshair", + "a" + ); + map( + "CustomHand", + "1" + ); + map( + "DeathEffects", + "0" + ); + map( + "Discord RPC", + "H" + ); + map( + "DynamicLights", + "T" + ); + map( + "ElytraTrails", + "5" + ); + map( + "EnchantGlint", + "g" + ); + map( + "FireFly", + "R" + ); + map( + "FoodInfo", + "O" + ); + map( + "GodRays", + "4" + ); + map( + "Graffiti", + "3" + ); + map( + "GuiPresence", + "G" + ); + map( + "HitBox", + "s" + ); + map( + "HitFix", + "S" + ); + map( + "HMI", "b" + ); + map( + "Interface", + "D" + ); + map( + "InventorySort", + "W" + ); + map( + "ItemScroller", + ":" + ); + map( + "JumpCircles", + "J" + ); + map( + "Melee Skins", + "c" + ); + map( + "Menu", + ";" + ); + map( + "MotionBlur", + "f" + ); + map( + "NameTags", + "9" + ); + map( + "NoRender", "M" + ); + map( + "Particles", + "L" + ); + map( + "PlaceAnimation", + "K" + ); + map( + "Predictions", + "N" + ); + map( + "ProjectileTrails", + "Q" + ); + map("Replay", "6"); + map( + "Schematics", + "E" + ); + map( + "Showcase", + "7" + ); + map( + "Skin Wheel", + "u" + ); + map( + "Sounds", + "n" + ); + map("StorageTracker", "I"); + map( + "TargetESP", + "x" + ); + map( + "TNTTimer", + "t" + ); + map( + "TotemCounter", + "C" + ); + map( + "TotemSound", + "p" + ); + map("Trails", "A"); + map("Trainer", "k"); + map( + "Waypoints", + "x" + ); + map( + "WorldTweaks", + "8" + ); + map( + "Zoom", + "r" + ); + } +} diff --git a/src/main/java/defpackage/rl.java b/src/main/java/defpackage/rl.java new file mode 100644 index 0000000..9a5ac6d --- /dev/null +++ b/src/main/java/defpackage/rl.java @@ -0,0 +1,78 @@ +package defpackage; + +import java.util.Arrays; + +public enum rl { + COMBAT( + "Combat", + "c" + ), + RENDER( + "Render", "r" + ), + MISC("Misc", "s"), + BUILDERS("Builders", "K"), + WAYPOINTS( + "Waypoints", + "x" + ), + COSMETICS( + "Cosmetics", + "w" + ), + THEMES( + "Themes", + "d" + ), + APPEARANCE( + "Appearance", + "V" + ), + FRIENDS( + "Friends", "u" + ), + CONFIGS( + "Configs", + "g" + ), + TICKETS( + "Bug Reports", + "o", + (boolean)((((-1186213241 ^ 1186213241) + ((-1186213241 & 1186213241) << 1)) + ) != 0)); + + private static final rl[] LISTED = Arrays.stream(values()).filter(rl::isListed).toArray(rl[]::new); + private final String name; + private final String icon; + private final boolean listed; + + rl(String var3, String var4) { + this(var3, var4, (boolean)((((-963231137 ^ 963231138) + ((-963231137 & 963231138) << 1))) != 0)); + } + + rl(String var3, String var4, boolean var5) { + this.name = var3; + this.icon = var4; + this.listed = var5; + } + + public static rl[] listed() { + return (rl[])LISTED.clone(); + } + + public static int listedCount() { + return LISTED.length; + } + + public String getIcon() { + return this.icon; + } + + public boolean isListed() { + return this.listed; + } + + public String getName() { + return this.name; + } +} diff --git a/src/main/java/defpackage/rm.java b/src/main/java/defpackage/rm.java new file mode 100644 index 0000000..daa9b03 --- /dev/null +++ b/src/main/java/defpackage/rm.java @@ -0,0 +1,422 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; +import org.jetbrains.annotations.NotNull; + +public class rm implements aqf, Comparable { + private static final String SETTINGS_FAILURE = "module {} settings lookup failed"; + private static final String LOAD_FAILURE = "module {} config load failed"; + protected rn info = this.getClass().getAnnotation(rn.class); + private String name = this.info.name(); + private final rl category = this.info.category(); + private volatile boolean enabled = (boolean)(((0)) != 0); + private int keyCode = -1; + + protected rm() { + } + + public String getDescription() { + String var2 = null; + int var1 = -1021226244; + + while (true) { + switch (var1) { + case -1830652210: + return var2; + case -1224093252: + var2 = this.info.description(); + var1 = -1830652210; + break; + case -1021226244: + default: + if (this.info == null) { + var1 = -612939734; + } else { + var1 = -1224093252; + } + break; + case -612939734: + var2 = ""; + var1 = -1830652210; + } + } + } + + public void setToggled(boolean var1) { + int var2 = -1064925986; + + while (true) { + switch (var2) { + case -1064925986: + default: + this.enabled = var1; + if (var1) { + var2 = -689405036; + } else { + var2 = -452869814; + } + break; + case -689405036: + this.onEnable(); + var2 = 543455061; + break; + case -452869814: + this.onDisable(); + var2 = 543455061; + break; + case 543455061: + return; + } + } + } + + public void toggle() { + this.enabled = (boolean)(((!this.enabled + ? 1: (-1206838699 ^ 1206838699) + ((-1206838699 & 1206838699) << 1))) != 0); + if (this.enabled) { + this.onEnable(); + } else { + this.onDisable(); + } + } + + public boolean emitsToggleSound() { + return (boolean)(((1)) != 0); + } + + public void onEnable() { + j.register(this); + j.call(new ex(this, this.enabled)); + } + + public void onDisable() { + j.unregister(this); + j.call(new ex(this, this.enabled)); + } + + public List getSettings() { + return Arrays.stream(this.getClass().getDeclaredFields()) + .map( + var1 -> { + try { + var1.setAccessible((boolean)((((621505010 | -621505009) + (621505010 & -621505009))) != 0)); + return var1.get(this); + } catch (IllegalAccessException var3) { + id.error( + Cif.MODULE, + "module {} settings lookup failed", + this.name, + var3 + ); + return null; + } + } + ) + .filter(var0 -> var0 instanceof ro) + .map(var0 -> (ro)var0) + .collect(Collectors.toList()); + } + + public JsonObject save() { + JsonObject var1 = null; + JsonObject var2 = null; + Iterator var3 = null; + ro var4 = null; + int var5 = 1862641412; + + while (true) { + switch (var5) { + case -1816756050: + if (var3.hasNext()) { + var5 = -687349095; + } else { + var5 = -1044305233; + } + break; + case -1044305233: + var1.add("Settings", var2); + return var1; + case -687349095: + var4 = (ro)var3.next(); + var4.safe(var2); + var5 = -1816756050; + break; + case 1862641412: + default: + var1 = new JsonObject(); + var1.addProperty("enabled", this.enabled); + var1.addProperty("keyCode", this.keyCode); + var2 = new JsonObject(); + var3 = this.getSettings().iterator(); + var5 = -1816756050; + } + } + } + + public void load(JsonObject var1) { + try { + if (var1 != null) { + if (var1.has("enabled")) { + boolean var2 = var1.get("enabled").getAsBoolean(); + if (var2 && !this.isEnabled()) { + this.toggle(); + } + + if (!var2 && this.isEnabled()) { + this.toggle(); + } + } + + if (var1.has("keyCode")) { + this.setKeyCode(var1.get("keyCode").getAsInt()); + } + + for (ro var3 : this.getSettings()) { + String var4 = var3.getName(); + JsonObject var5 = var1.getAsJsonObject("Settings"); + if (var5 != null && var5.has(var4)) { + var3.load(var5); + } + } + } + } catch (Exception var6) { + id.error( + Cif.MODULE, + "module {} config load failed", + this.name, + var6 + ); + } + } + + public int compareTo(@NotNull rm var1) { + return var1.getName().compareTo(this.name); + } + + public rn getInfo() { + return this.info; + } + + public String getName() { + return this.name; + } + + public rl getCategory() { + return this.category; + } + + public boolean isEnabled() { + return this.enabled; + } + + public int getKeyCode() { + return this.keyCode; + } + + public void setInfo(rn var1) { + this.info = var1; + } + + public void setName(String var1) { + this.name = var1; + } + + public void setEnabled(boolean var1) { + this.enabled = var1; + } + + public void setKeyCode(int var1) { + this.keyCode = var1; + } + + @Override + public boolean equals(Object var1) { + rm var2 = null; + rn var3 = null; + rn var4 = null; + String var5 = null; + String var6 = null; + rl var7 = null; + rl var8 = null; + int var9 = -1415385517; + + while (true) { + switch (var9) { + case -1864981051: + return (boolean)(((0)) != 0); + case -1827683279: + if (!var3.equals(var4)) { + var9 = 1958666087; + } else { + var9 = -1102256873; + } + break; + case -1808828986: + return (boolean)(((1)) != 0); + case -1518896675: + if (var4 != null) { + var9 = 406511882; + } else { + var9 = -1102256873; + } + break; + case -1415385517: + default: + if (var1 == this) { + var9 = -1808828986; + } else { + var9 = 83150051; + } + break; + case -1329532259: + if (var6 != null) { + var9 = -15139657; + } else { + var9 = 1294176103; + } + break; + case -1260211267: + var9 = 1331704139; + break; + case -1102256873: + var5 = this.getName(); + var6 = var2.getName(); + if (var5 == null) { + var9 = -1329532259; + } else { + var9 = 748816767; + } + break; + case -863978476: + return (boolean)(((0)) != 0); + case -261065570: + return (boolean)(((0)) != 0); + case -15139657: + var9 = -1864981051; + break; + case 83150051: + if (!(var1 instanceof rm)) { + var9 = 642228601; + } else { + var9 = 1098221669; + } + break; + case 235541289: + if (!var7.equals(var8)) { + var9 = 1331704139; + } else { + var9 = 1579764961; + } + break; + case 314118213: + if (this.getKeyCode() != var2.getKeyCode()) { + var9 = -863978476; + } else { + var9 = 1661404329; + } + break; + case 369484493: + if (var8 != null) { + var9 = -1260211267; + } else { + var9 = 1579764961; + } + break; + case 406511882: + var9 = 1958666087; + break; + case 642228601: + return (boolean)(((0)) != 0); + case 675102927: + if (this.isEnabled() != var2.isEnabled()) { + var9 = 1122132130; + } else { + var9 = 314118213; + } + break; + case 748816767: + if (!var5.equals(var6)) { + var9 = -1864981051; + } else { + var9 = 1294176103; + } + break; + case 1098221669: + var2 = (rm)var1; + if (!var2.canEqual(this)) { + var9 = -261065570; + } else { + var9 = 675102927; + } + break; + case 1122132130: + return (boolean)(((0)) != 0); + case 1294176103: + var7 = this.getCategory(); + var8 = var2.getCategory(); + if (var7 == null) { + var9 = 369484493; + } else { + var9 = 235541289; + } + break; + case 1331704139: + return (boolean)(((0)) != 0); + case 1579764961: + return (boolean)(((1)) != 0); + case 1661404329: + var3 = this.getInfo(); + var4 = var2.getInfo(); + if (var3 == null) { + var9 = -1518896675; + } else { + var9 = -1827683279; + } + break; + case 1958666087: + return (boolean)(((0)) != 0); + } + } + } + + protected boolean canEqual(Object var1) { + return var1 instanceof rm; + } + + @Override + public int hashCode() { + int var1 = 59; + int var2 = 1; + var2 = var2 * ((-455027455 ^ 455027514) + ((-455027455 & 455027514) << 1)) + + (this.isEnabled() ? 79: (1818365495 | -1818365398) + (1818365495 & -1818365398)); + var2 = var2 * ((439614351 | -439614292) + (439614351 & -439614292)) + this.getKeyCode(); + rn var3 = this.getInfo(); + var2 = var2 * ((98994540 ^ -98994481) + ((98994540 & -98994481) << 1)) + + (var3 == null ? 43: var3.hashCode()); + String var4 = this.getName(); + var2 = var2 * ((-1355018385 | 1355018444) + (-1355018385 & 1355018444)) + + (var4 == null ? 43: var4.hashCode()); + rl var5 = this.getCategory(); + return var2 * ((1054778004 | -1054777945) + (1054778004 & -1054777945)) + + (var5 == null ? 43: var5.hashCode()); + } + + @Override + public String toString() { + return "Module(info=" + + this.getInfo() + + ", name=" + + this.getName() + + ", category=" + + this.getCategory() + + ", enabled=" + + this.isEnabled() + + ", keyCode=" + + this.getKeyCode() + + ")"; + } +} diff --git a/src/main/java/defpackage/rn.java b/src/main/java/defpackage/rn.java new file mode 100644 index 0000000..8876507 --- /dev/null +++ b/src/main/java/defpackage/rn.java @@ -0,0 +1,13 @@ +package defpackage; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +public @interface rn { + String name(); + + rl category(); + + String description(); +} diff --git a/src/main/java/defpackage/ro.java b/src/main/java/defpackage/ro.java new file mode 100644 index 0000000..fff7bcb --- /dev/null +++ b/src/main/java/defpackage/ro.java @@ -0,0 +1,55 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.function.Supplier; + +public abstract class ro { + protected final String name; + protected Supplier visible; + protected String description = null; + + public T description(String var1) { + this.description = var1; + return (T)this; + } + + public ro(String var1) { + this.name = var1; + this.setVisible(() -> Boolean.valueOf((boolean)((((1202090547 ^ -1202090546) + ((1202090547 & -1202090546) << 1))) != 0))); + } + + public abstract void safe(JsonObject var1); + + public abstract void load(JsonObject var1); + + public boolean isVisible() { + return this.visible.get(); + } + + public void captureDefault() { + } + + public boolean isModified() { + return (boolean)(((0)) != 0); + } + + public String getName() { + return this.name; + } + + public Supplier getVisible() { + return this.visible; + } + + public String getDescription() { + return this.description; + } + + public void setVisible(Supplier var1) { + this.visible = var1; + } + + public void setDescription(String var1) { + this.description = var1; + } +} diff --git a/src/main/java/defpackage/rp.java b/src/main/java/defpackage/rp.java new file mode 100644 index 0000000..98e03cd --- /dev/null +++ b/src/main/java/defpackage/rp.java @@ -0,0 +1,6 @@ +package defpackage; + +import java.util.function.Consumer; + +public record rp(String label, String description, Consumer run) { +} diff --git a/src/main/java/defpackage/rq.java b/src/main/java/defpackage/rq.java new file mode 100644 index 0000000..5fbe963 --- /dev/null +++ b/src/main/java/defpackage/rq.java @@ -0,0 +1,7 @@ +package defpackage; + +import java.util.List; + +public interface rq { + void openList(String var1, List var2); +} diff --git a/src/main/java/defpackage/rr.java b/src/main/java/defpackage/rr.java new file mode 100644 index 0000000..fede768 --- /dev/null +++ b/src/main/java/defpackage/rr.java @@ -0,0 +1,7 @@ +package defpackage; + +public enum rr { + ACTION, + SECTION, + NOTE; +} diff --git a/src/main/java/defpackage/rs.java b/src/main/java/defpackage/rs.java new file mode 100644 index 0000000..6a7d7cc --- /dev/null +++ b/src/main/java/defpackage/rs.java @@ -0,0 +1,49 @@ +package defpackage; + +public record rs(String label, String detail, rr kind, Runnable run) { + public static rs action(String var0, String var1, Runnable var2) { + return new rs(var0, var1, rr.ACTION, var2); + } + + public static rs section(String var0) { + return new rs(var0, null, rr.SECTION, null); + } + + public static rs note(String var0) { + return new rs(var0, null, rr.NOTE, null); + } + + public boolean clickable() { + int var2 = 0; + int var1 = 1367165076; + + while (true) { + switch (var1) { + case -236230704: + var2 = 1; + var1 = 1844383717; + break; + case 580216306: + if (this.run != null) { + var1 = -236230704; + } else { + var1 = 2088966195; + } + break; + case 1367165076: + default: + if (this.kind == rr.ACTION) { + var1 = 580216306; + } else { + var1 = 2088966195; + } + break; + case 1844383717: + return (boolean)((var2) != 0); + case 2088966195: + var2 = 0; + var1 = 1844383717; + } + } + } +} diff --git a/src/main/java/defpackage/rt.java b/src/main/java/defpackage/rt.java new file mode 100644 index 0000000..e0b406c --- /dev/null +++ b/src/main/java/defpackage/rt.java @@ -0,0 +1,31 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.List; + +public class rt extends ro { + private final int columns; + private final List actions; + + public rt(String var1, int var2, List var3) { + super(var1); + this.columns = Math.max(1, var2); + this.actions = List.copyOf(var3); + } + + public int columns() { + return this.columns; + } + + public List actions() { + return this.actions; + } + + @Override + public void safe(JsonObject var1) { + } + + @Override + public void load(JsonObject var1) { + } +} diff --git a/src/main/java/defpackage/ru.java b/src/main/java/defpackage/ru.java new file mode 100644 index 0000000..6f85369 --- /dev/null +++ b/src/main/java/defpackage/ru.java @@ -0,0 +1,97 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.function.Supplier; + +public class ru extends ro { + private boolean enabled; + private boolean defaultEnabled; + + public ru(String var1, boolean var2) { + super(var1); + this.enabled = var2; + } + + public ru(String var1, String var2, boolean var3) { + super(var1); + this.enabled = var3; + super.description = var2; + } + + public ru(String var1, String var2, boolean var3, Supplier var4) { + super(var1); + this.enabled = var3; + this.setVisible(var4); + super.description = var2; + } + + public ru(String var1, boolean var2, Supplier var3) { + super(var1); + this.enabled = var2; + this.setVisible(var3); + } + + public static ru of(String var0, boolean var1) { + return new ru(var0, var1); + } + + public static ru of(String var0) { + return new ru(var0, (boolean)((((-1416887206 ^ 1416887207) + ((-1416887206 & 1416887207) << 1))) != 0)); + } + + public void toggle() { + this.enabled = (boolean)(((!this.enabled + ? 1: (1934302074 ^ -1934302074) + ((1934302074 & -1934302074) << 1))) != 0); + } + + @Override + public void safe(JsonObject var1) { + var1.addProperty(String.valueOf(this.name), this.isEnabled()); + } + + @Override + public void load(JsonObject var1) { + this.setEnabled(var1.get(String.valueOf(this.name)).getAsBoolean()); + } + + @Override + public void captureDefault() { + this.defaultEnabled = this.enabled; + } + + @Override + public boolean isModified() { + int var2 = 0; + int var1 = 1879915935; + + while (true) { + switch (var1) { + case -1279886388: + var2 = 0; + var1 = 1325351332; + break; + case 1058616316: + var2 = 1; + var1 = 1325351332; + break; + case 1325351332: + return (boolean)((var2) != 0); + case 1879915935: + default: + if (this.enabled != this.defaultEnabled) { + var1 = 1058616316; + } else { + var1 = -1279886388; + } + } + } + } + + public boolean isEnabled() { + return this.enabled; + } + + public void setEnabled(boolean var1) { + this.enabled = var1; + } +} diff --git a/src/main/java/defpackage/rv.java b/src/main/java/defpackage/rv.java new file mode 100644 index 0000000..01432ef --- /dev/null +++ b/src/main/java/defpackage/rv.java @@ -0,0 +1,32 @@ +package defpackage; + +import com.google.gson.JsonObject; + +public class rv extends ro { + private Runnable runnable; + + public rv(String var1, Runnable var2) { + super(var1); + this.runnable = var2; + } + + public void toggle() { + this.runnable.run(); + } + + @Override + public void safe(JsonObject var1) { + } + + @Override + public void load(JsonObject var1) { + } + + public Runnable getRunnable() { + return this.runnable; + } + + public void setRunnable(Runnable var1) { + this.runnable = var1; + } +} diff --git a/src/main/java/defpackage/rw.java b/src/main/java/defpackage/rw.java new file mode 100644 index 0000000..ce9090d --- /dev/null +++ b/src/main/java/defpackage/rw.java @@ -0,0 +1,5 @@ +package defpackage; + +public interface rw { + asu getDefaultColor(); +} diff --git a/src/main/java/defpackage/rx.java b/src/main/java/defpackage/rx.java new file mode 100644 index 0000000..2c8a5d1 --- /dev/null +++ b/src/main/java/defpackage/rx.java @@ -0,0 +1,115 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.function.Supplier; + +public class rx extends ro { + private asu color; + private int defaultRgb; + private final rw colorGetter; + + public rx(String var1, asu var2, Supplier var3, rw var4) { + this(var1, var2, var4); + this.setVisible(var3); + } + + public rx(String var1, asu var2, rw var3) { + super(var1); + if (var2 == null) { + throw new RuntimeException(var1 + " color is null"); + } + + this.color = var2; + this.setColor(var2); + this.colorGetter = var3; + } + + public rx(String var1, asu var2) { + this(var1, var2, () -> var2); + } + + public rx(String var1, rw var2) { + this(var1, var2.getDefaultColor(), var2); + } + + public rx(String var1, asu var2, Supplier var3) { + this(var1, var2, var3, () -> var2); + } + + public int getIntColor() { + return this.color.getRGB(); + } + + public void setColor(int var1) { + this.color = new asu(var1); + } + + public void setColor(asu var1) { + this.color = var1; + } + + public void update() { + } + + public void reset() { + this.color = this.colorGetter.getDefaultColor(); + } + + public asu getColor(float var1) { + return this.color.mulAlpha(var1); + } + + @Override + public void safe(JsonObject var1) { + var1.addProperty(String.valueOf(this.name), this.getIntColor()); + } + + @Override + public void load(JsonObject var1) { + this.setColor(var1.get(String.valueOf(this.name)).getAsInt()); + } + + @Override + public void captureDefault() { + this.defaultRgb = this.color == null ? 0: this.color.getRGB(); + } + + @Override + public boolean isModified() { + int var2 = 0; + int var1 = 1599009852; + + while (true) { + switch (var1) { + case -63362525: + return (boolean)((var2) != 0); + case 1206480629: + var2 = 1; + var1 = -63362525; + break; + case 1599009852: + default: + if (this.color != null) { + var1 = 1875581999; + } else { + var1 = 1921325099; + } + break; + case 1875581999: + if (this.color.getRGB() != this.defaultRgb) { + var1 = 1206480629; + } else { + var1 = 1921325099; + } + break; + case 1921325099: + var2 = 0; + var1 = -63362525; + } + } + } + + public asu getColor() { + return this.color; + } +} diff --git a/src/main/java/defpackage/ry.java b/src/main/java/defpackage/ry.java new file mode 100644 index 0000000..90222da --- /dev/null +++ b/src/main/java/defpackage/ry.java @@ -0,0 +1,19 @@ +package defpackage; + +public final class ry { + float x; + float y; + + ry(float var1, float var2) { + this.x = var1; + this.y = var2; + } + + public float getX() { + return this.x; + } + + public float getY() { + return this.y; + } +} diff --git a/src/main/java/defpackage/rz.java b/src/main/java/defpackage/rz.java new file mode 100644 index 0000000..649d60a --- /dev/null +++ b/src/main/java/defpackage/rz.java @@ -0,0 +1,411 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import net.minecraft.util.Mth; + +public class rz extends ro { + public static final int MAX_POINTS = 6; + public static final float MIN_POINT_GAP = 0.05F; + private static final String PARSE_FAILURE = "curve setting dropped malformed point {}"; + private static final String POINT_SEPARATOR = ";"; + private static final char AXIS_SEPARATOR = ':'; + private static final String POINT_FORMAT = "%.4f:%.4f"; + private static final Comparator BY_X = Comparator.comparingDouble(ry::getX); + private static final float CURVE_START = 0.0F; + private static final float CURVE_END = 1.0F; + private static final float OUTPUT_MIN = -0.5F; + private static final float OUTPUT_MAX = 1.5F; + private static final float MIN_SEGMENT_WIDTH = 1.0E-4F; + private static final float TANGENT_SCALE = 0.5F; + private static final int VIRTUAL_LEAD = 2; + private final List points = new ArrayList<>(); + private final List view = Collections.unmodifiableList(this.points); + private String defaultState = this.encode(); + + public rz(String var1) { + super(var1); + } + + public List getPoints() { + return this.view; + } + + public boolean canAdd() { + int var2 = 0; + int var1 = 1975658619; + + while (true) { + switch (var1) { + case -1694407793: + var2 = 0; + var1 = 1434127441; + break; + case 1434127441: + return (boolean)((var2) != 0); + case 1527536910: + var2 = 1; + var1 = 1434127441; + break; + case 1975658619: + default: + if (this.points.size() < (223014438 ^ -223014432) + ((223014438 & -223014432) << 1)) { + var1 = 1527536910; + } else { + var1 = -1694407793; + } + } + } + } + + public boolean addPoint(float var1, float var2) { + float var3 = 0.0F; + Iterator var4 = null; + Object var5 = null; + int var6 = -848716758; + + while (true) { + switch (var6) { + case -2025559356: + var5 = (ry)var4.next(); + if (Math.abs(((ry)var5).x - var3) < 0.05F) { + var6 = -1561164663; + } else { + var6 = 1219743285; + } + break; + case -1935433194: + return (boolean)(((0)) != 0); + case -1870179609: + var3 = clampX(var1); + var4 = this.points.iterator(); + var6 = 74272171; + break; + case -1561164663: + return (boolean)(((0)) != 0); + case -848716758: + default: + if (!this.canAdd()) { + var6 = -1935433194; + } else { + var6 = -1870179609; + } + break; + case 74272171: + if (var4.hasNext()) { + var6 = -2025559356; + } else { + var6 = 1851237971; + } + break; + case 1219743285: + var6 = 74272171; + break; + case 1851237971: + this.points.add(new ry(var3, clampY(var2))); + this.points.sort(BY_X); + return (boolean)(((1)) != 0); + } + } + } + + public boolean removePoint(ry var1) { + return this.points.remove(var1); + } + + public void movePoint(ry var1, float var2, float var3) { + int var4 = -328541172; + + while (true) { + switch (var4) { + case -1593129028: + return; + case -328541172: + default: + if (!this.points.contains(var1)) { + var4 = -1593129028; + } else { + var4 = 1330968994; + } + break; + case 1330968994: + var1.x = clampX(var2); + var1.y = clampY(var3); + this.points.sort(BY_X); + return; + } + } + } + + public void reset() { + this.points.clear(); + } + + public float evaluate(float var1) { + float var2 = 0.0F; + int var3 = 0; + int var4 = 0; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = 2092580812; + + while (true) { + switch (var9) { + case -1754878555: + if (var4 <= var3) { + var9 = -395544034; + } else { + var9 = 275880811; + } + break; + case -1357976287: + if (var2 > var6) { + var9 = 1033878638; + } else { + var9 = 338314224; + } + break; + case -395544034: + var5 = this.virtualX(var4); + var6 = this.virtualX(var4 + (-2097428489 ^ 2097428490) + ((-2097428489 & 2097428490) << 1)); + if (!(var6 - var5 <= 1.0E-4F)) { + var9 = 1572132512; + } else { + var9 = 1480055135; + } + break; + case 275880811: + return var2; + case 338314224: + var7 = (var2 - var5) / (var6 - var5); + var8 = hermite( + this.virtualY(var4 - ((-1765643799 ^ 1765643800) + ((-1765643799 & 1765643800) << 1))), + this.virtualY(var4), + this.virtualY(var4 + (354044886 | -354044885) + (354044886 & -354044885)), + this.virtualY(var4 + (1800806463 ^ -1800806461) + ((1800806463 & -1800806461) << 1)), + var7 + ); + return Mth.clamp(var8, -0.5F, 1.5F); + case 1033878638: + var9 = 1480055135; + break; + case 1480055135: + var4++; + var9 = -1754878555; + break; + case 1572132512: + if (!(var2 < var5)) { + var9 = -1357976287; + } else { + var9 = 1480055135; + } + break; + case 2092580812: + default: + var2 = Mth.clamp(var1, 0.0F, 1.0F); + var3 = this.points.size() + 1; + var4 = 1; + var9 = -1754878555; + } + } + } + + @Override + public void safe(JsonObject var1) { + var1.addProperty(this.name, this.encode()); + } + + @Override + public void load(JsonObject var1) { + this.decode(var1.get(this.name).getAsString()); + } + + @Override + public void captureDefault() { + this.defaultState = this.encode(); + } + + @Override + public boolean isModified() { + int var2 = 0; + int var1 = -817471879; + + while (true) { + switch (var1) { + case -1103066617: + return (boolean)((var2) != 0); + case -817471879: + default: + if (!this.encode().equals(this.defaultState)) { + var1 = -52431038; + } else { + var1 = 540906157; + } + break; + case -52431038: + var2 = 1; + var1 = -1103066617; + break; + case 540906157: + var2 = 0; + var1 = -1103066617; + } + } + } + + private float virtualX(int var1) { + int var2 = 1491224834; + + while (true) { + switch (var2) { + case -79510531: + return this.points.get(var1 - (2)).x; + case 366025021: + return 1.0F; + case 1491224834: + default: + if (var1 <= (661444514 ^ -661444513) + ((661444514 & -661444513) << 1)) { + var2 = 1972084999; + } else { + var2 = 2053328673; + } + break; + case 1972084999: + return 0.0F; + case 2053328673: + if (var1 >= this.points.size() + (1032241321 | -1032241319) + (1032241321 & -1032241319)) { + var2 = 366025021; + } else { + var2 = -79510531; + } + } + } + } + + private float virtualY(int var1) { + int var2 = -2112804500; + + while (true) { + switch (var2) { + case -2112804500: + default: + if (var1 <= (1407304362 | -1407304361) + (1407304362 & -1407304361)) { + var2 = -1066164779; + } else { + var2 = 2106176882; + } + break; + case -1066164779: + return 0.0F; + case -290996947: + return this.points.get(var1 - (2)).y; + case 620627778: + return 1.0F; + case 2106176882: + if (var1 >= this.points.size() + (2117307626 ^ -2117307624) + ((2117307626 & -2117307624) << 1)) { + var2 = 620627778; + } else { + var2 = -290996947; + } + } + } + } + + private static float hermite(float var0, float var1, float var2, float var3, float var4) { + float var5 = (var2 - var0) * 0.5F; + float var6 = (var3 - var1) * 0.5F; + float var7 = var4 * var4; + float var8 = var7 * var4; + return (2.0F * var8 - 3.0F * var7 + 1.0F) * var1 + (var8 - 2.0F * var7 + var4) * var5 + (-2.0F * var8 + 3.0F * var7) * var2 + (var8 - var7) * var6; + } + + private static float clampX(float var0) { + return Mth.clamp(var0, 0.05F, 0.95F); + } + + private static float clampY(float var0) { + return Mth.clamp(var0, 0.0F, 1.0F); + } + + private String encode() { + StringBuilder var1 = null; + Iterator var2 = null; + ry var3 = null; + int var4 = -817669764; + + while (true) { + switch (var4) { + case -2141960903: + var1.append(";"); + var4 = 68810566; + break; + case -817669764: + default: + var1 = new StringBuilder(); + var2 = this.points.iterator(); + var4 = 1365036840; + break; + case -97889173: + return var1.toString(); + case 68810566: + Locale var10001 = Locale.ROOT; + String var10002 = "%.4f:%.4f"; + Object[] var10003 = new Object[2]; + var10003[0] = var3.x; + var10003[1] = var3.y; + var1.append(String.format(var10001, var10002, var10003)); + var4 = 1365036840; + break; + case 1365036840: + if (var2.hasNext()) { + var4 = 1961862364; + } else { + var4 = -97889173; + } + break; + case 1961862364: + var3 = (ry)var2.next(); + if (!var1.isEmpty()) { + var4 = -2141960903; + } else { + var4 = 68810566; + } + } + } + } + + private void decode(String var1) { + this.points.clear(); + if (var1 != null && !var1.isEmpty()) { + String[] var2 = var1.split(";"); + int var3 = var2.length; + + for (int var4 = 0; var4 < var3; var4++) { + String var5 = var2[var4]; + int var6 = var5.indexOf((170910406 ^ -170910348) + ((170910406 & -170910348) << 1)); + if (var6 > 0) { + try { + this.addPoint( + Float.parseFloat(var5.substring(0, var6)), + Float.parseFloat(var5.substring(var6 + (-578262039 ^ 578262040) + ((-578262039 & 578262040) << 1))) + ); + } catch (NumberFormatException var8) { + id.warn( + Cif.MODULE, + "curve setting dropped malformed point {}", + var5, + var8 + ); + } + } + } + } + } +} diff --git a/src/main/java/defpackage/s.java b/src/main/java/defpackage/s.java new file mode 100644 index 0000000..92372bc --- /dev/null +++ b/src/main/java/defpackage/s.java @@ -0,0 +1,20 @@ +package defpackage; + +public final class s { + public static final byte HIGHEST = 0; + public static final byte HIGH = 1; + public static final byte MEDIUM = 2; + public static final byte LOW = 3; + public static final byte LOWEST = 4; + public static final byte[] VALUE_ARRAY; + + static { + byte[] var10000 = new byte[5]; + var10000[0] = (byte)(0); + var10000[1] = (byte)(1); + var10000[2] = (byte)(2); + var10000[3] = (byte)(3); + var10000[4] = (byte)(4); + VALUE_ARRAY = var10000; + } +} diff --git a/src/main/java/defpackage/sa.java b/src/main/java/defpackage/sa.java new file mode 100644 index 0000000..e4ba3c1 --- /dev/null +++ b/src/main/java/defpackage/sa.java @@ -0,0 +1,15 @@ +package defpackage; + +import com.google.common.reflect.TypeToken; +import java.util.List; +import java.util.Objects; + +/* JADX INFO: loaded from: evovis-dec.jar:sa.class */ +class sa extends TypeToken> { + final /* synthetic */ sb this$0; + + sa(sb sbVar) { + Objects.requireNonNull(sbVar); + this.this$0 = sbVar; + } +} diff --git a/src/main/java/defpackage/sb.java b/src/main/java/defpackage/sb.java new file mode 100644 index 0000000..266aefd --- /dev/null +++ b/src/main/java/defpackage/sb.java @@ -0,0 +1,116 @@ +package defpackage; + +import com.google.common.reflect.TypeToken; +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import java.lang.reflect.Type; +import java.util.List; +import java.util.function.Supplier; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; + +public class sb extends ro { + private List itemsById; + private static final Gson gson = new Gson(); + + public void setItemsById(List var1) { + this.itemsById = var1; + } + + public sb(String var1, List var2) { + this(var1, var2, () -> Boolean.valueOf((boolean)((((-1485177398 ^ 1485177399) + ((-1485177398 & 1485177399) << 1))) != 0))); + } + + public sb(String var1, List var2, Supplier var3) { + super(var1); + this.itemsById = var2; + } + + public List getItemsById() { + return this.itemsById; + } + + public void add(String var1) { + this.itemsById.add(var1); + } + + public void remove(String var1) { + this.itemsById.remove(var1); + } + + public boolean contains(String var1) { + return this.itemsById.contains(var1); + } + + public void add(Block var1) { + this.add(var1.getDescriptionId().replace("block.minecraft.", "")); + } + + public void add(Item var1) { + this.add(var1.getDescriptionId().replace("item.minecraft.", "")); + } + + public void remove(Block var1) { + this.remove(var1.getDescriptionId().replace("block.minecraft.", "")); + } + + public void remove(Item var1) { + this.remove(var1.getDescriptionId().replace("item.minecraft.", "")); + } + + public boolean contains(Block var1) { + return this.contains( + var1.getDescriptionId().replace("block.minecraft.", "") + ); + } + + public boolean contains(Item var1) { + return this.contains(var1.getDescriptionId().replace("item.minecraft.", "")); + } + + public void clear() { + this.itemsById.clear(); + } + + @Override + public void safe(JsonObject var1) { + var1.add(String.valueOf(this.name), gson.toJsonTree(this.getItemsById())); + } + + @Override + public void load(JsonObject var1) { + Type var2 = null; + JsonElement var3 = null; + List var4 = null; + int var5 = -433179139; + + while (true) { + switch (var5) { + case -1480503589: + return; + case -1062066743: + var4 = (List)gson.fromJson(var3, var2); + this.setItemsById(var4); + var5 = -1480503589; + break; + case -478219143: + if (var3.isJsonArray()) { + var5 = -1062066743; + } else { + var5 = -1480503589; + } + break; + case -433179139: + default: + var2 = (new TypeToken>() {}).getType(); + var3 = var1.get(String.valueOf(this.name)); + if (var3 != null) { + var5 = -478219143; + } else { + var5 = -1480503589; + } + } + } + } +} diff --git a/src/main/java/defpackage/sc.java b/src/main/java/defpackage/sc.java new file mode 100644 index 0000000..69ae8ab --- /dev/null +++ b/src/main/java/defpackage/sc.java @@ -0,0 +1,96 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.function.Supplier; + +public class sc extends ro { + private String nameKey; + private int defaultKeyCode; + private int keyCode; + + public void setKeyCode(int var1) { + this.keyCode = var1; + this.nameKey = aqz.getKeyName(var1); + } + + public sc(String var1, Supplier var2) { + super(var1); + this.setVisible(var2); + this.keyCode = -1; + this.nameKey = aqz.getKeyName(this.keyCode); + } + + public sc(String var1, int var2, Supplier var3) { + super(var1); + this.setVisible(var3); + this.keyCode = var2; + this.nameKey = aqz.getKeyName(var2); + } + + public sc(String var1, int var2) { + super(var1); + this.keyCode = var2; + this.nameKey = aqz.getKeyName(var2); + } + + public sc(String var1) { + super(var1); + this.keyCode = -1; + this.nameKey = ""; + } + + @Override + public void safe(JsonObject var1) { + var1.addProperty(String.valueOf(this.name), this.getKeyCode()); + } + + @Override + public void load(JsonObject var1) { + this.setKeyCode(var1.get(String.valueOf(this.name)).getAsInt()); + } + + @Override + public void captureDefault() { + this.defaultKeyCode = this.keyCode; + } + + @Override + public boolean isModified() { + int var2 = 0; + int var1 = 1032386047; + + while (true) { + switch (var1) { + case 141389743: + return (boolean)((var2) != 0); + case 188311936: + var2 = 0; + var1 = 141389743; + break; + case 1032386047: + default: + if (this.keyCode != this.defaultKeyCode) { + var1 = 1262560627; + } else { + var1 = 188311936; + } + break; + case 1262560627: + var2 = 1; + var1 = 141389743; + } + } + } + + public String getNameKey() { + return this.nameKey; + } + + public int getDefaultKeyCode() { + return this.defaultKeyCode; + } + + public int getKeyCode() { + return this.keyCode; + } +} diff --git a/src/main/java/defpackage/sd.java b/src/main/java/defpackage/sd.java new file mode 100644 index 0000000..251088e --- /dev/null +++ b/src/main/java/defpackage/sd.java @@ -0,0 +1,31 @@ +package defpackage; + +public interface sd { + int size(); + + String name(int var1); + + boolean isActive(int var1); + + boolean canAdd(); + + String suggestedName(); + + int maxNameLength(); + + void apply(int var1); + + void share(int var1, rq var2); + + void remove(int var1); + + void add(String var1); + + String addHint(); + + String shareHint(); + + String removeHint(); + + void paint(asq var1, int var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9); +} diff --git a/src/main/java/defpackage/se.java b/src/main/java/defpackage/se.java new file mode 100644 index 0000000..746e47a --- /dev/null +++ b/src/main/java/defpackage/se.java @@ -0,0 +1,42 @@ +package defpackage; + +import com.google.gson.JsonObject; + +public class se extends ro { + private final sd library; + private final float tileHeight; + private final float minTileWidth; + private final int columns; + + public se(String var1, float var2, float var3, int var4, sd var5) { + super(var1); + this.library = var5; + this.tileHeight = var2; + this.minTileWidth = var3; + this.columns = var4; + } + + public int columns() { + return this.columns; + } + + public sd library() { + return this.library; + } + + public float tileHeight() { + return this.tileHeight; + } + + public float minTileWidth() { + return this.minTileWidth; + } + + @Override + public void safe(JsonObject var1) { + } + + @Override + public void load(JsonObject var1) { + } +} diff --git a/src/main/java/defpackage/sf.java b/src/main/java/defpackage/sf.java new file mode 100644 index 0000000..d7264e5 --- /dev/null +++ b/src/main/java/defpackage/sf.java @@ -0,0 +1,164 @@ +package defpackage; + +import java.util.Objects; + +public class sf { + private final sg parent; + private final String name; + private String description; + + public sf(sg var1, String var2) { + this.parent = var1; + this.name = var2; + this.description = ""; + if (var1.values.isEmpty()) { + this.select(); + } + + var1.values.add(this); + } + + public sf(sg var1, String var2, String var3) { + this.parent = var1; + this.name = var2; + this.description = var3; + if (var1.values.isEmpty()) { + this.select(); + } + + var1.values.add(this); + } + + public sf description(String var1) { + this.description = var1; + return this; + } + + public sf select() { + this.parent.setValue(this); + return this; + } + + public boolean isSelected() { + int var2 = 0; + int var1 = 419616729; + + while (true) { + switch (var1) { + case -885818009: + var2 = 1; + var1 = 1744174465; + break; + case -519181011: + var2 = 0; + var1 = 1744174465; + break; + case 419616729: + default: + if (this.parent.getValue() == this) { + var1 = -885818009; + } else { + var1 = -519181011; + } + break; + case 1744174465: + return (boolean)((var2) != 0); + } + } + } + + @Override + public String toString() { + return this.name; + } + + @Override + public boolean equals(Object var1) { + sf var2 = null; + int var4 = 0; + int var3 = 18728811; + + while (true) { + switch (var3) { + case -2140865781: + return (boolean)(((1)) != 0); + case -1530399166: + return (boolean)(((0)) != 0); + case -641744127: + if (Objects.equals(this.description, var2.description)) { + var3 = -489564114; + } else { + var3 = 80665934; + } + break; + case -489564114: + var4 = 1; + var3 = 37074702; + break; + case 18728811: + default: + if (var1 == this) { + var3 = -2140865781; + } else { + var3 = 118244053; + } + break; + case 37074702: + return (boolean)((var4) != 0); + case 80665934: + var4 = 0; + var3 = 37074702; + break; + case 118244053: + if (var1 != null) { + var3 = 955803760; + } else { + var3 = -1530399166; + } + break; + case 955803760: + if (var1.getClass() != this.getClass()) { + var3 = -1530399166; + } else { + var3 = 1070883490; + } + break; + case 1070883490: + var2 = (sf)var1; + if (Objects.equals(this.parent, var2.parent)) { + var3 = 1163148152; + } else { + var3 = 80665934; + } + break; + case 1163148152: + if (Objects.equals(this.name, var2.name)) { + var3 = -641744127; + } else { + var3 = 80665934; + } + } + } + } + + @Override + public int hashCode() { + Object[] var10000 = new Object[3]; + var10000[0] = this.parent; + var10000[1] = this.name; + var10000[2] = this.description; + return Objects.hash(var10000); + } + + public sg getParent() { + return this.parent; + } + + public String getName() { + return this.name; + } + + public String getDescription() { + return this.description; + } +} diff --git a/src/main/java/defpackage/sg.java b/src/main/java/defpackage/sg.java new file mode 100644 index 0000000..24269e5 --- /dev/null +++ b/src/main/java/defpackage/sg.java @@ -0,0 +1,303 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Random; +import java.util.function.Supplier; + +public class sg extends ro { + final List values = new ArrayList<>(); + private sf value; + private String defaultMode; + private boolean expanded; + + public sg(String var1, String... var2) { + super(var1); + String[] var3 = var2; + int var4 = var3.length; + + for (int var5 = 0; var5 < var4; var5++) { + String var6 = var3[var5]; + if (!var6.isEmpty()) { + new sf(this, var6); + } + } + + if (!this.values.isEmpty()) { + this.value = this.values.getFirst(); + } + } + + public sg(String var1, Supplier var2, String... var3) { + super(var1); + String[] var4 = var3; + int var5 = var4.length; + + for (int var6 = 0; var6 < var5; var6++) { + String var7 = var4[var6]; + if (!var7.isEmpty()) { + new sf(this, var7); + } + } + + if (!this.values.isEmpty()) { + this.value = this.values.getFirst(); + } + + this.setVisible(var2); + } + + public sg describe(String var1, String var2) { + this.values.stream().filter(var1x -> var1x.getName().equals(var1)).findFirst().ifPresent(var1x -> var1x.description(var2)); + return this; + } + + public void set(String var1) { + this.values.stream().filter(var1x -> var1x.getName().equals(var1)).findFirst().ifPresent(var1x -> this.value = var1x); + } + + public void replaceValues(List var1) { + String var2 = null; + Iterator var3 = null; + String var4 = null; + int var5 = -1383615530; + + while (true) { + switch (var5) { + case -1392999127: + if (this.values.isEmpty()) { + var5 = 142636082; + } else { + var5 = -66611961; + } + break; + case -1383615530: + default: + var2 = this.get(); + this.values.clear(); + var3 = var1.iterator(); + var5 = 1339129514; + break; + case -610656229: + var5 = 1339129514; + break; + case -66611961: + this.value = this.values.getFirst(); + this.set(var2); + return; + case 142636082: + this.value = null; + return; + case 341286439: + new sf(this, var4); + var5 = 1339129514; + break; + case 1339129514: + if (var3.hasNext()) { + var5 = 1878670015; + } else { + var5 = -1392999127; + } + break; + case 1878670015: + var4 = (String)var3.next(); + if (var4.isEmpty()) { + var5 = -610656229; + } else { + var5 = 341286439; + } + } + } + } + + public String get() { + String var2 = null; + int var1 = 1079911890; + + while (true) { + switch (var1) { + case -1453022986: + var2 = ""; + var1 = -696580615; + break; + case -1401556394: + var2 = this.value.getName(); + var1 = -696580615; + break; + case -696580615: + return var2; + case 1079911890: + default: + if (this.value != null) { + var1 = -1401556394; + } else { + var1 = -1453022986; + } + } + } + } + + public boolean is(String var1) { + int var3 = 0; + int var2 = -2132473408; + + while (true) { + switch (var2) { + case -2132473408: + default: + if (this.value != null) { + var2 = 1356829746; + } else { + var2 = 473533220; + } + break; + case -1984199251: + return (boolean)((var3) != 0); + case -1600048921: + var3 = 1; + var2 = -1984199251; + break; + case 473533220: + var3 = 0; + var2 = -1984199251; + break; + case 1356829746: + if (this.value.getName().equals(var1)) { + var2 = -1600048921; + } else { + var2 = 473533220; + } + } + } + } + + public boolean is(sf var1) { + int var3 = 0; + int var2 = 591857000; + + while (true) { + switch (var2) { + case -810167548: + var3 = 0; + var2 = 798260327; + break; + case 591857000: + default: + if (this.value == var1) { + var2 = 634713953; + } else { + var2 = -810167548; + } + break; + case 634713953: + var3 = 1; + var2 = 798260327; + break; + case 798260327: + return (boolean)((var3) != 0); + } + } + } + + public sf getRandomEnabledElement() { + List var1 = null; + int var2 = 713299311; + + while (true) { + switch (var2) { + case 692350504: + return (sf)var1.get(new Random().nextInt(var1.size())); + case 713299311: + default: + var1 = this.values.stream().filter(sf::isSelected).toList(); + if (!var1.isEmpty()) { + var2 = 692350504; + } else { + var2 = 1508130255; + } + break; + case 1508130255: + return null; + } + } + } + + @Override + public void safe(JsonObject var1) { + var1.addProperty(String.valueOf(this.name), this.get()); + } + + @Override + public void load(JsonObject var1) { + this.set(var1.get(String.valueOf(this.name)).getAsString()); + } + + @Override + public void captureDefault() { + this.defaultMode = this.value == null ? null : this.value.getName(); + } + + @Override + public boolean isModified() { + int var2 = 0; + int var1 = 1419476147; + + while (true) { + switch (var1) { + case -2133926095: + if (this.defaultMode != null) { + var1 = 567871296; + } else { + var1 = -2016298860; + } + break; + case -2016298860: + var2 = 0; + var1 = 3794918; + break; + case 3794918: + return (boolean)((var2) != 0); + case 567871296: + if (!this.defaultMode.equals(this.value.getName())) { + var1 = 705445572; + } else { + var1 = -2016298860; + } + break; + case 705445572: + var2 = 1; + var1 = 3794918; + break; + case 1419476147: + default: + if (this.value != null) { + var1 = -2133926095; + } else { + var1 = -2016298860; + } + } + } + } + + public List getValues() { + return this.values; + } + + public sf getValue() { + return this.value; + } + + public String getDefaultMode() { + return this.defaultMode; + } + + public boolean isExpanded() { + return this.expanded; + } + + public void setValue(sf var1) { + this.value = var1; + } +} diff --git a/src/main/java/defpackage/sh.java b/src/main/java/defpackage/sh.java new file mode 100644 index 0000000..60f754f --- /dev/null +++ b/src/main/java/defpackage/sh.java @@ -0,0 +1,163 @@ +package defpackage; + +import java.util.Arrays; +import java.util.List; +import java.util.Objects; + +public class sh { + private boolean enabled; + private final String name; + private final List aliases; + private String description = null; + + public sh(String var1, boolean var2) { + this(var1, var2); + } + + public sh(String var1, boolean var2, String... var3) { + this.enabled = var2; + this.name = var1; + this.aliases = normalizeAliases(var3); + } + + public sh(si var1, String var2, boolean var3) { + this(var2, var3); + var1.booleanSettings.add(this); + var1.updateBitmask(); + } + + public sh(si var1, String var2, boolean var3, String... var4) { + this(var2, var3, var4); + var1.booleanSettings.add(this); + var1.updateBitmask(); + } + + public static sh of(String var0, boolean var1) { + return new sh(var0, var1); + } + + public static sh of(String var0, boolean var1, String... var2) { + return new sh(var0, var1, var2); + } + + public static sh of(String var0) { + return new sh(var0, (boolean)((((1767174448 | -1767174447) + (1767174448 & -1767174447))) != 0)); + } + + public boolean matchesName(String var1) { + int var2 = 1997216856; + + while (true) { + switch (var2) { + case -1770894187: + if (this.name.equalsIgnoreCase(var1)) { + var2 = 213532261; + } else { + var2 = -675192191; + } + break; + case -675192191: + return this.aliases.stream().anyMatch(var1x -> var1x.equalsIgnoreCase(var1)); + case -205152785: + return (boolean)(((0)) != 0); + case 213532261: + return (boolean)(((1)) != 0); + case 1997216856: + default: + if (var1 == null) { + var2 = -205152785; + } else { + var2 = -1770894187; + } + } + } + } + + public sh description(String var1) { + this.description = var1; + return this; + } + + public String getDescription() { + return this.description; + } + + public void toggle() { + this.enabled = (boolean)(((!this.enabled + ? 1: (363900787 | -363900787) + (363900787 & -363900787))) != 0); + } + + private static List normalizeAliases(String... var0) { + int var1 = -853537930; + + while (true) { + switch (var1) { + case -853537930: + default: + if (var0 != null) { + var1 = -343825900; + } else { + var1 = 1417144925; + } + break; + case -343825900: + if (var0.length == 0) { + var1 = 1417144925; + } else { + var1 = 1990970854; + } + break; + case 1417144925: + return List.of(); + case 1990970854: + return Arrays.stream(var0).filter(Objects::nonNull).filter(var0x -> { + int var2 = 0; + int var1x = -1220797621; + + while (true) { + switch (var1x) { + case -1616485539: + var2 = 0; + var1x = 993103730; + break; + case -1220797621: + default: + if (!var0x.isBlank()) { + var1x = 480085129; + } else { + var1x = -1616485539; + } + break; + case 480085129: + var2 = 1; + var1x = 993103730; + break; + case 993103730: + return (boolean)((var2) != 0); + } + } + }).distinct().toList(); + } + } + } + + public boolean isEnabled() { + return this.enabled; + } + + public String getName() { + return this.name; + } + + public List getAliases() { + return this.aliases; + } + + public void setEnabled(boolean var1) { + this.enabled = var1; + } + + public void setDescription(String var1) { + this.description = var1; + } +} diff --git a/src/main/java/defpackage/si.java b/src/main/java/defpackage/si.java new file mode 100644 index 0000000..000f044 --- /dev/null +++ b/src/main/java/defpackage/si.java @@ -0,0 +1,342 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; + +public class si extends ro { + final List booleanSettings; + private int defaultBitmask; + private int bitmask; + + public si(String var1) { + super(var1); + this.booleanSettings = new ArrayList<>(); + } + + public si(String var1, sh... var2) { + super(var1); + this.booleanSettings = new ArrayList<>(Arrays.asList(var2)); + this.updateBitmask(); + } + + public void updateBitmask() { + int var1 = 0; + int var2 = 0; + int var3 = 0; + int var4 = -921171760; + + while (true) { + switch (var4) { + case -1916953353: + var1 |= (-868616309 ^ 868616310) + ((-868616309 & 868616310) << 1) << var3; + var4 = 998855596; + break; + case -1853749710: + this.bitmask = var1; + return; + case -1808585983: + if (var3 < var2) { + var4 = 831497592; + } else { + var4 = -1853749710; + } + break; + case -921171760: + default: + var1 = 0; + var2 = Math.min(this.booleanSettings.size(), (229083742 | -229083711) + (229083742 & -229083711)); + var3 = 0; + var4 = -1808585983; + break; + case 831497592: + if (this.booleanSettings.get(var3).isEnabled()) { + var4 = -1916953353; + } else { + var4 = 998855596; + } + break; + case 998855596: + var3++; + var4 = -1808585983; + } + } + } + + public int getCachedBitmask() { + return this.bitmask; + } + + public sh getValueByName(String var1) { + return this.booleanSettings.stream().filter(var1x -> var1x.matchesName(var1)).findFirst().orElse(null); + } + + public si describe(String var1, String var2) { + sh var3 = null; + int var4 = 147804146; + + while (true) { + switch (var4) { + case -2044220548: + var3.description(var2); + var4 = 1830439316; + break; + case 147804146: + default: + var3 = this.getValueByName(var1); + if (var3 != null) { + var4 = -2044220548; + } else { + var4 = 1830439316; + } + break; + case 1830439316: + return this; + } + } + } + + public static si create(String var0, List var1) { + sh[] var2 = var1.stream().map(var0x -> new sh(var0x, (boolean)((((-1989345767 | 1989345768) + (-1989345767 & 1989345768))) != 0))).toArray(sh[]::new); + return new si(var0, var2); + } + + public sh get(int var1) { + return this.booleanSettings.get(var1); + } + + public boolean isEnable(String var1) { + sh var2 = null; + int var4 = 0; + int var3 = 108427163; + + while (true) { + switch (var3) { + case -571202604: + var4 = 1; + var3 = 400136753; + break; + case -122981778: + var4 = 0; + var3 = 400136753; + break; + case 108427163: + default: + var2 = this.getValueByName(var1); + if (var2 != null) { + var3 = 1246400552; + } else { + var3 = -122981778; + } + break; + case 400136753: + return (boolean)((var4) != 0); + case 1246400552: + if (var2.isEnabled()) { + var3 = -571202604; + } else { + var3 = -122981778; + } + } + } + } + + public boolean isEnable(int var1) { + sh var2 = null; + int var4 = 0; + int var3 = 2042774718; + + while (true) { + switch (var3) { + case -2002903235: + return (boolean)((var4) != 0); + case -1242595608: + return (boolean)(((0)) != 0); + case -590014363: + var2 = this.get(var1); + if (var2 != null) { + var3 = 1854266562; + } else { + var3 = 613378300; + } + break; + case 613378300: + var4 = 0; + var3 = -2002903235; + break; + case 1200961673: + var4 = 1; + var3 = -2002903235; + break; + case 1854266562: + if (var2.isEnabled()) { + var3 = 1200961673; + } else { + var3 = 613378300; + } + break; + case 2042774718: + default: + if (var1 >= this.getBooleanSettings().size()) { + var3 = -1242595608; + } else { + var3 = -590014363; + } + } + } + } + + public List getSelectedValues() { + return this.booleanSettings.stream().filter(sh::isEnabled).collect(Collectors.toList()); + } + + public List getSelectedNames() { + return this.booleanSettings.stream().filter(sh::isEnabled).map(sh::getName).collect(Collectors.toList()); + } + + @Override + public void safe(JsonObject var1) { + StringBuilder var2 = null; + int var3 = 0; + Iterator var4 = null; + sh var5 = null; + int var6 = -158401189; + + while (true) { + switch (var6) { + case -811518815: + var5 = (sh)var4.next(); + if (this.getValueByName(var5.getName()).isEnabled()) { + var6 = 1698471556; + } else { + var6 = 213639303; + } + break; + case -158401189: + default: + var2 = new StringBuilder(); + var3 = 0; + var4 = this.getBooleanSettings().iterator(); + var6 = 906468320; + break; + case -53945726: + var1.addProperty(this.getName(), var2.toString()); + return; + case 213639303: + var3++; + var6 = 906468320; + break; + case 906468320: + if (var4.hasNext()) { + var6 = -811518815; + } else { + var6 = -53945726; + } + break; + case 1698471556: + var2.append(var5.getName()).append("\n"); + var6 = 213639303; + } + } + } + + @Override + public void load(JsonObject var1) { + Object var2 = null; + String[] var3 = null; + int var4 = 0; + int var5 = 0; + String var6 = null; + Object var7 = null; + int var8 = -1320761305; + + while (true) { + switch (var8) { + case -1320761305: + default: + this.getBooleanSettings().forEach(var0 -> var0.setEnabled((boolean)((((-433725661 | 433725661) + (-433725661 & 433725661))) != 0))); + var2 = var1.get(String.valueOf(this.name)).getAsString().split("\n"); + var3 = (String[])var2; + var4 = var3.length; + var5 = 0; + var8 = -292913813; + break; + case -1206180159: + this.updateBitmask(); + return; + case -1057246662: + this.getValueByName(var6).setEnabled((boolean)((((-1713948827 ^ 1713948828) + ((-1713948827 & 1713948828) << 1))) != 0)); + var8 = 1255554473; + break; + case -292913813: + if (var5 < var4) { + var8 = 2055813073; + } else { + var8 = -1206180159; + } + break; + case 1255554473: + var5++; + var8 = -292913813; + break; + case 2055813073: + var6 = var3[var5]; + var7 = this.getValueByName(var6); + if (var7 != null) { + var8 = -1057246662; + } else { + var8 = 1255554473; + } + } + } + } + + @Override + public void captureDefault() { + this.updateBitmask(); + this.defaultBitmask = this.bitmask; + } + + @Override + public boolean isModified() { + int var2 = 0; + int var1 = 734669034; + + while (true) { + switch (var1) { + case -800897417: + return (boolean)((var2) != 0); + case 734669034: + default: + if (this.bitmask != this.defaultBitmask) { + var1 = 1694834303; + } else { + var1 = 1874551706; + } + break; + case 1694834303: + var2 = 1; + var1 = -800897417; + break; + case 1874551706: + var2 = 0; + var1 = -800897417; + } + } + } + + public List getBooleanSettings() { + return this.booleanSettings; + } + + public int getDefaultBitmask() { + return this.defaultBitmask; + } + + public int getBitmask() { + return this.bitmask; + } +} diff --git a/src/main/java/defpackage/sj.java b/src/main/java/defpackage/sj.java new file mode 100644 index 0000000..eeaf393 --- /dev/null +++ b/src/main/java/defpackage/sj.java @@ -0,0 +1,5 @@ +package defpackage; + +public interface sj { + void nudge(int var1, int var2, int var3); +} diff --git a/src/main/java/defpackage/sk.java b/src/main/java/defpackage/sk.java new file mode 100644 index 0000000..77b4559 --- /dev/null +++ b/src/main/java/defpackage/sk.java @@ -0,0 +1,35 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.function.Supplier; + +public class sk extends ro { + private final sj handler; + + public sk(String var1, sj var2) { + super(var1); + this.handler = var2; + } + + public sk(String var1, sj var2, Supplier var3) { + super(var1); + this.handler = var2; + this.setVisible(var3); + } + + public void apply(int var1, int var2, int var3) { + this.handler.nudge(var1, var2, var3); + } + + @Override + public void safe(JsonObject var1) { + } + + @Override + public void load(JsonObject var1) { + } + + public sj getHandler() { + return this.handler; + } +} diff --git a/src/main/java/defpackage/sl.java b/src/main/java/defpackage/sl.java new file mode 100644 index 0000000..f06390f --- /dev/null +++ b/src/main/java/defpackage/sl.java @@ -0,0 +1,5 @@ +package defpackage; + +public interface sl { + void apply(float var1, float var2); +} diff --git a/src/main/java/defpackage/sm.java b/src/main/java/defpackage/sm.java new file mode 100644 index 0000000..8334473 --- /dev/null +++ b/src/main/java/defpackage/sm.java @@ -0,0 +1,162 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.function.Supplier; + +public class sm extends ro { + private float defaultValue; + private float current; + private final float min; + private final float max; + private final float increment; + private sl edit; + + public sm(String var1, float var2, float var3, float var4, float var5, sl var6) { + super(var1); + this.min = var3; + this.max = var4; + this.current = var2; + this.increment = var5; + this.edit = var6; + } + + public sm(String var1, float var2, float var3, float var4, float var5, String var6) { + super(var1); + this.min = var3; + this.max = var4; + this.current = var2; + this.increment = var5; + super.description = var6; + } + + public sm(String var1, float var2, float var3, float var4, float var5) { + super(var1); + this.min = var3; + this.max = var4; + this.current = var2; + this.increment = var5; + } + + public sm(String var1, float var2, float var3, float var4, float var5, Supplier var6) { + super(var1); + this.min = var3; + this.max = var4; + this.current = var2; + this.increment = var5; + this.setVisible(var6); + } + + public void setCurrent(float var1) { + float var2 = 0.0F; + int var3 = -425035945; + + while (true) { + switch (var3) { + case -1147136898: + this.edit.apply(var2, var1); + var3 = -138327561; + break; + case -425035945: + default: + var2 = this.current; + this.current = var1; + if (this.edit != null) { + var3 = -1147136898; + } else { + var3 = -138327561; + } + break; + case -138327561: + return; + } + } + } + + @Override + public void safe(JsonObject var1) { + var1.addProperty(String.valueOf(this.name), this.getCurrent()); + } + + @Override + public void load(JsonObject var1) { + float var2 = 0.0F; + int var3 = -1655284931; + + while (true) { + switch (var3) { + case -1655284931: + default: + var2 = var1.get(String.valueOf(this.name)).getAsFloat(); + if (!Float.isFinite(var2)) { + var3 = 2136357931; + } else { + var3 = -1200991358; + } + break; + case -1200991358: + this.setCurrent(Math.max(Math.min(this.min, this.max), Math.min(Math.max(this.min, this.max), var2))); + return; + case 2136357931: + return; + } + } + } + + @Override + public void captureDefault() { + this.defaultValue = this.current; + } + + @Override + public boolean isModified() { + int var2 = 0; + int var1 = -666017160; + + while (true) { + switch (var1) { + case -666017160: + default: + if (this.current != this.defaultValue) { + var1 = -149585304; + } else { + var1 = -36914608; + } + break; + case -149585304: + var2 = 1; + var1 = 49369959; + break; + case -36914608: + var2 = 0; + var1 = 49369959; + break; + case 49369959: + return (boolean)((var2) != 0); + } + } + } + + public float getDefaultValue() { + return this.defaultValue; + } + + public float getCurrent() { + return this.current; + } + + public float getMin() { + return this.min; + } + + public float getMax() { + return this.max; + } + + public float getIncrement() { + return this.increment; + } + + public sl getEdit() { + return this.edit; + } +} diff --git a/src/main/java/defpackage/sn.java b/src/main/java/defpackage/sn.java new file mode 100644 index 0000000..be17a7d --- /dev/null +++ b/src/main/java/defpackage/sn.java @@ -0,0 +1,54 @@ +package defpackage; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + +public class sn extends ro { + private final hy preset = new hy(); + + public sn(String var1) { + super(var1); + this.setVisible(() -> Boolean.valueOf((boolean)((((1708843868 | -1708843868) + (1708843868 & -1708843868))) != 0))); + } + + @Override + public void safe(JsonObject var1) { + var1.add(String.valueOf(this.name), this.preset.toJson()); + } + + @Override + public void load(JsonObject var1) { + JsonElement var2 = null; + int var3 = -1713496086; + + while (true) { + switch (var3) { + case -1713496086: + default: + var2 = var1.get(String.valueOf(this.name)); + if (var2 != null) { + var3 = -1075828942; + } else { + var3 = 172693479; + } + break; + case -1075828942: + if (var2.isJsonObject()) { + var3 = 305284980; + } else { + var3 = 172693479; + } + break; + case 172693479: + return; + case 305284980: + this.preset.fromJson(var2.getAsJsonObject()); + var3 = 172693479; + } + } + } + + public hy getPreset() { + return this.preset; + } +} diff --git a/src/main/java/defpackage/so.java b/src/main/java/defpackage/so.java new file mode 100644 index 0000000..5b56f1a --- /dev/null +++ b/src/main/java/defpackage/so.java @@ -0,0 +1,6 @@ +package defpackage; + +public enum so { + CARD, + SWATCH; +} diff --git a/src/main/java/defpackage/sp.java b/src/main/java/defpackage/sp.java new file mode 100644 index 0000000..06a0851 --- /dev/null +++ b/src/main/java/defpackage/sp.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +public interface sp { + void paint(asq var1, String var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9); +} diff --git a/src/main/java/defpackage/sq.java b/src/main/java/defpackage/sq.java new file mode 100644 index 0000000..a567364 --- /dev/null +++ b/src/main/java/defpackage/sq.java @@ -0,0 +1,261 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.Iterator; +import java.util.function.Consumer; +import java.util.function.Predicate; + +public class sq extends sg { + private final so look; + private final sp painter; + private final Consumer action; + private final Predicate activity; + private final float tileHeight; + private final float minTileWidth; + + private sq(String var1, so var2, float var3, float var4, sp var5, Consumer var6, Predicate var7, String... var8) { + super(var1, var8); + this.look = var2; + this.painter = var5; + this.action = var6; + this.activity = var7; + this.tileHeight = var3; + this.minTileWidth = var4; + } + + public static sq select(String var0, so var1, float var2, float var3, sp var4, String... var5) { + return new sq(var0, var1, var2, var3, var4, null, null, var5); + } + + public static sq action(String var0, so var1, float var2, float var3, sp var4, Consumer var5, Predicate var6, String... var7) { + return new sq(var0, var1, var2, var3, var4, var5, var6, var7); + } + + public boolean isAction() { + int var2 = 0; + int var1 = -2043844583; + + while (true) { + switch (var1) { + case -2043844583: + default: + if (this.action != null) { + var1 = 1784918173; + } else { + var1 = 1484735930; + } + break; + case 1484735930: + var2 = 0; + var1 = 1931577391; + break; + case 1784918173: + var2 = 1; + var1 = 1931577391; + break; + case 1931577391: + return (boolean)((var2) != 0); + } + } + } + + public boolean isActive(String var1) { + int var3 = 0; + int var2 = 1626108703; + + while (true) { + switch (var2) { + case -1059195982: + var3 = 1; + var2 = 2083571375; + break; + case -610536466: + if (this.activity.test(var1)) { + var2 = -1059195982; + } else { + var2 = 707062510; + } + break; + case -530580337: + if (this.activity != null) { + var2 = -610536466; + } else { + var2 = 707062510; + } + break; + case 330056866: + return this.is(var1); + case 707062510: + var3 = 0; + var2 = 2083571375; + break; + case 1626108703: + default: + if (this.isAction()) { + var2 = -530580337; + } else { + var2 = 330056866; + } + break; + case 2083571375: + return (boolean)((var3) != 0); + } + } + } + + public String activeValue() { + Iterator var1 = null; + sf var2 = null; + int var3 = 168180812; + + while (true) { + switch (var3) { + case -1701832657: + var2 = (sf)var1.next(); + if (this.isActive(var2.getName())) { + var3 = -320362842; + } else { + var3 = 1103747250; + } + break; + case -773793014: + return null; + case -320362842: + return var2.getName(); + case 135995767: + if (var1.hasNext()) { + var3 = -1701832657; + } else { + var3 = -773793014; + } + break; + case 168180812: + default: + var1 = this.getValues().iterator(); + var3 = 135995767; + break; + case 1103747250: + var3 = 135995767; + } + } + } + + public void pick(String var1) { + int var2 = 1764961601; + + while (true) { + switch (var2) { + case -1051959123: + this.set(var1); + return; + case -381471703: + this.action.accept(var1); + return; + case 1764961601: + } + + if (this.action != null) { + var2 = -381471703; + } else { + var2 = -1051959123; + } + } + } + + public void paint(asq var1, String var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9) { + this.painter.paint(var1, var2, var3, var4, var5, var6, var7, var8, var9); + } + + public so look() { + return this.look; + } + + public float tileHeight() { + return this.tileHeight; + } + + public float minTileWidth() { + return this.minTileWidth; + } + + @Override + public void safe(JsonObject var1) { + int var2 = 1998173336; + + while (true) { + switch (var2) { + case 137213771: + super.safe(var1); + var2 = 1848746333; + break; + case 1848746333: + return; + case 1998173336: + default: + if (!this.isAction()) { + var2 = 137213771; + } else { + var2 = 1848746333; + } + } + } + } + + @Override + public void load(JsonObject var1) { + int var2 = 1238596497; + + while (true) { + switch (var2) { + case -1269712562: + super.load(var1); + var2 = -511910340; + break; + case -511910340: + return; + case 1238596497: + default: + if (!this.isAction()) { + var2 = -1269712562; + } else { + var2 = -511910340; + } + } + } + } + + @Override + public boolean isModified() { + int var2 = 0; + int var1 = -1636055063; + + while (true) { + switch (var1) { + case -2061986861: + var2 = 1; + var1 = -966462554; + break; + case -1636055063: + default: + if (!this.isAction()) { + var1 = -180074931; + } else { + var1 = -634691354; + } + break; + case -966462554: + return (boolean)((var2) != 0); + case -634691354: + var2 = 0; + var1 = -966462554; + break; + case -180074931: + if (super.isModified()) { + var1 = -2061986861; + } else { + var1 = -634691354; + } + } + } + } +} diff --git a/src/main/java/defpackage/sr.java b/src/main/java/defpackage/sr.java new file mode 100644 index 0000000..207620e --- /dev/null +++ b/src/main/java/defpackage/sr.java @@ -0,0 +1,252 @@ +package defpackage; + +import java.lang.ref.WeakReference; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientChunkCache; +import net.minecraft.client.multiplayer.ClientLevel; + +@rn(name = "Chunk Cache", category = rl.BUILDERS, description = "Keeps chunks you already visited loaded past the server view distance") +public final class sr extends rm { + public static final sr INSTANCE = new sr(); + private static final String STATUS_FORMAT = "%d chunks held, radius %d"; + private static final String MESSAGE_NO_WORLD = "Join a world first"; + private static final String MESSAGE_RELEASED = "Cache released"; + private static final String VIEW_RADIUS_ACTION = "chunk cache view radius"; + private static final WeakReference NO_LEVEL = new WeakReference<>(null); + private static final int STORAGE_MARGIN = 3; + private static final int STATUS_INTERVAL_TICKS = 100; + private static final int NO_RADIUS = -1; + private final sm radius = new sm("Radius", 24.0F, 8.0F, 48.0F, 2.0F) + .description( + "Chunk radius kept in memory, each step costs RAM" + ); + private final rv release = new rv("Release", () -> INSTANCE.requestRelease()); + private volatile WeakReference appliedLevel = NO_LEVEL; + private volatile int appliedRadius = -1; + private volatile boolean holding; + private volatile boolean releaseRequested; + private int statusTick; + + private sr() { + } + + public static void initialize() { + ClientTickEvents.END_CLIENT_TICK.register(INSTANCE::synchronizeViewRadius); + } + + public boolean isHolding() { + return this.holding; + } + + public int radius() { + return (int)this.radius.getCurrent(); + } + + public int storageRange() { + return this.radius() + 3; + } + + @Override + public void onEnable() { + int var1 = -1628300575; + + while (true) { + switch (var1) { + case -1628300575: + default: + super.onEnable(); + if (mc.level == null) { + var1 = 1910982674; + } else { + var1 = 1063734558; + } + break; + case 1063734558: + return; + case 1910982674: + this.notify("Join a world first"); + var1 = 1063734558; + } + } + } + + @k + public void onUpdate(fl var1) { + ClientLevel var2 = null; + int var3 = 1331014614; + + while (true) { + switch (var3) { + case -283724226: + String var10000 = "%d chunks held, radius %d"; + Object[] var10001 = new Object[2]; + var10001[0] = var2.getChunkSource().getLoadedChunksCount(); + var10001[1] = this.radius(); + ape.displayInfo(String.format(var10000, var10001)); + var3 = 853392222; + break; + case -280670863: + return; + case 300592830: + this.statusTick = 0; + var2 = mc.level; + if (var2 != null) { + var3 = -283724226; + } else { + var3 = 853392222; + } + break; + case 853392222: + return; + case 1331014614: + default: + if ((this.statusTick += (1458889402 | -1458889401) + (1458889402 & -1458889401)) + < (1211928718 ^ -1211928618) + ((1211928718 & -1211928618) << 1)) { + var3 = -280670863; + } else { + var3 = 300592830; + } + } + } + } + + private void requestRelease() { + this.releaseRequested = (boolean)(((1)) != 0); + } + + private void synchronizeViewRadius(Minecraft var1) { + ClientLevel var2 = null; + int var3 = 0; + int var4 = 1633683502; + + while (true) { + switch (var4) { + case -2093339184: + if (this.appliedLevel.get() != var2) { + var4 = -1322080389; + } else { + var4 = 1276200154; + } + break; + case -1683951427: + this.holding = (boolean)(((1)) != 0); + var3 = this.radius(); + if (this.appliedRadius != var3) { + var4 = 118705344; + } else { + var4 = -1331124449; + } + break; + case -1439656137: + this.releaseRequested = (boolean)(((0)) != 0); + this.holding = (boolean)(((0)) != 0); + this.apply(var1, var2, var1.options.getEffectiveRenderDistance()); + this.notify("Cache released"); + return; + case -1331124449: + return; + case -1322080389: + this.appliedLevel = new WeakReference<>(var2); + this.appliedRadius = -1; + this.holding = (boolean)(((0)) != 0); + var4 = 1276200154; + break; + case -250514881: + if (!this.holding) { + var4 = 1964182935; + } else { + var4 = 1660827031; + } + break; + case 118705344: + this.apply(var1, var2, var3); + var4 = -1331124449; + break; + case 1276200154: + if (this.releaseRequested) { + var4 = -1439656137; + } else { + var4 = 1313924075; + } + break; + case 1313924075: + if (this.isEnabled()) { + var4 = -1683951427; + } else { + var4 = -250514881; + } + break; + case 1493960592: + return; + case 1629440444: + this.forget(); + return; + case 1633683502: + default: + var2 = var1.level; + if (var2 == null) { + var4 = 1629440444; + } else { + var4 = -2093339184; + } + break; + case 1660827031: + this.holding = (boolean)(((0)) != 0); + this.apply(var1, var2, var1.options.getEffectiveRenderDistance()); + this.appliedRadius = -1; + var4 = 1493960592; + break; + case 1964182935: + if (this.appliedRadius != (-2125639656 ^ 2125639655) + ((-2125639656 & 2125639655) << 1)) { + var4 = 1660827031; + } else { + var4 = 1493960592; + } + } + } + } + + private void forget() { + this.appliedLevel = NO_LEVEL; + this.appliedRadius = -1; + this.holding = (boolean)(((0)) != 0); + this.releaseRequested = (boolean)(((0)) != 0); + } + + private void apply(Minecraft var1, ClientLevel var2, int var3) { + int var4 = 1863351819; + + while (true) { + switch (var4) { + case -806930368: + return; + case 561628665: + this.appliedRadius = var3; + var4 = -806930368; + break; + case 1863351819: + default: + if (id.run( + Cif.RENDER, + "chunk cache view radius", + () -> this.updateViewRadius(var1, var2, var3) + )) { + var4 = 561628665; + } else { + var4 = -806930368; + } + } + } + } + + private void updateViewRadius(Minecraft var1, ClientLevel var2, int var3) { + ClientChunkCache var4 = var2.getChunkSource(); + var4.updateViewRadius(var3); + var1.levelRenderer.invalidateCompiledGeometry(var2, var1.options, var1.getEntityRenderDispatcher().camera, var1.getBlockColors()); + } + + private void notify(String var1) { + le.getInstance().addCustomNotification(rk.glyph(this), this.getName(), var1); + } +} diff --git a/src/main/java/defpackage/ss.java b/src/main/java/defpackage/ss.java new file mode 100644 index 0000000..d8f9394 --- /dev/null +++ b/src/main/java/defpackage/ss.java @@ -0,0 +1,17 @@ +package defpackage; + +record ss( + int alpha, + int themeColor, + boolean blockColors, + boolean shading, + boolean drawWrong, + boolean drawExtra, + float appear, + float sweep, + int minY, + int height, + boolean flashes, + long now +) { +} diff --git a/src/main/java/defpackage/st.java b/src/main/java/defpackage/st.java new file mode 100644 index 0000000..8ad243b --- /dev/null +++ b/src/main/java/defpackage/st.java @@ -0,0 +1,12 @@ +package defpackage; + +import net.minecraft.world.item.ItemStack; + +record st(ItemStack stack, String name, String count) { + st(ItemStack var1, String var2, int var3) { + String var10003 = "%d"; + Object[] var10004 = new Object[1]; + var10004[0] = var3; + this(var1, var2, var10003.formatted(var10004)); + } +} diff --git a/src/main/java/defpackage/su.java b/src/main/java/defpackage/su.java new file mode 100644 index 0000000..02b78c7 --- /dev/null +++ b/src/main/java/defpackage/su.java @@ -0,0 +1,1406 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.QuadInstance; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import it.unimi.dsi.fastutil.longs.LongOpenHashSet; +import it.unimi.dsi.fastutil.objects.ObjectIterator; +import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Supplier; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.Shapes; + +@rn(name = "Schematics", category = rl.BUILDERS, description = "Ghost preview and material list for litematic, schem and nbt blueprints") +public final class su extends rm { + public static final su INSTANCE = new su(); + private static final String ROTATION_0 = "0"; + private static final String ROTATION_90 = "90"; + private static final String ROTATION_180 = "180"; + private static final String ROTATION_270 = "270"; + private static final String MIRROR_NONE = "None"; + private static final String MIRROR_X = "X"; + private static final String MIRROR_Z = "Z"; + private static final String CORNER_TOP_LEFT = "Top Left"; + private static final String CORNER_TOP_RIGHT = "Top Right"; + private static final String CORNER_BOTTOM_LEFT = "Bottom Left"; + private static final String CORNER_BOTTOM_RIGHT = "Bottom Right"; + private static final String NO_FILES = "No schematics"; + private static final String STYLE_BLOCKS = "Blocks"; + private static final String STYLE_BOXES = "Boxes"; + private static final long SCAN_INTERVAL_MS = 300L; + private static final float ALPHA_SCALE = 255.0F; + private static final float MILLIS_PER_SECOND = 1000.0F; + private static final float HALF = 0.5F; + private static final float BLOCK_GAP = 0.045F; + private static final float SATURATION_BOOST = 1.3F; + private static final float RISE_DISTANCE = 0.45F; + private static final float APPEAR_SPREAD = 0.85F; + private static final float APPEAR_OVERSHOOT = 1.35F; + private static final float APPEAR_MIN = 0.002F; + private static final long SWEEP_PERIOD_MS = 3400L; + private static final float SWEEP_BAND = 0.16F; + private static final float SWEEP_STRENGTH = 0.6F; + private static final float SWEEP_ALPHA_GAIN = 0.45F; + private static final long FLASH_DURATION_MS = 420L; + private static final float FLASH_GROW = 0.85F; + private static final float FLASH_ALPHA = 0.7F; + private static final int OUTLINE_LIMIT = 192; + private static final float OUTLINE_WIDTH = 1.5F; + private static final float BOUNDS_WIDTH = 2.0F; + private static final float BOUNDS_FADE_SPEED = 2.5F; + private static final float SHADE_TOP = 1.0F; + private static final float SHADE_BOTTOM = 0.5F; + private static final float SHADE_NORTH_SOUTH = 0.8F; + private static final float SHADE_EAST_WEST = 0.62F; + private static final int FLASH_COLOR = 16777215; + private static final float WRONG_TINT_STRENGTH = 0.7F; + private static final int COLOR_MASK = 16777215; + private static final int CHANNEL_MASK = 255; + private static final int RED_SHIFT = 16; + private static final int GREEN_SHIFT = 8; + private static final int ALPHA_SHIFT = 24; + private static final int MAX_MATERIAL_ROWS = 8; + private static final float PANEL_MARGIN = 6.0F; + private static final float ROW_HEIGHT = 11.0F; + private static final float ICON_SIZE = 9.0F; + private static final float ICON_SCALE = 0.55F; + private static final float ICON_GAP = 4.0F; + private static final float COUNT_GAP = 10.0F; + private static final float TITLE_GAP = 3.0F; + private static final float PROGRESS_HEIGHT = 2.0F; + private static final float PROGRESS_GAP = 3.0F; + private static final float TITLE_FONT_SIZE = 7.0F; + private static final float ROW_FONT_SIZE = 6.5F; + private static final float FULL_PROGRESS = 100.0F; + private static final String PROGRESS_FORMAT = "%s %d%%"; + private static final String SUMMARY_FORMAT = "%d left %d wrong"; + private static final String COUNT_FORMAT = "%d"; + private static final String LOADING_TEXT = "Loading..."; + private final sg file; + private final rv reload; + private final rv load; + private final rv anchor; + private final rv unload; + private final sk nudge; + private final sm nudgeStep; + private final sc padKey; + private final sg rotation; + private final sg mirror; + private final sm range; + private final sm maxBlocks; + private final sm opacity; + private final sg style; + private final ru blockColors; + private final ru shading; + private final ru showWrong; + private final ru showExtra; + private final ru strictStates; + private final ru bounds; + private final ru animate; + private final sm appearTime; + private final ru sweep; + private final ru flash; + private final ru materials; + private final sg corner; + private final List rows; + private final QuadInstance quadInstance; + private final PoseStack modelPose; + private alg cachedScan; + private ald models; + + private su() { + String var10003 = "File"; + String[] var10004 = new String[1]; + var10004[0] = "No schematics"; + this.file = new sg(var10003, var10004) + .description( + "Schematic file inside the Evolution/schematics folder" + ); + this.reload = new rv("Refresh List", this::refreshFiles); + this.load = new rv("Load", this::loadSelected); + this.anchor = new rv("Place At Me", ala.INSTANCE::placeAtPlayer); + this.unload = new rv("Clear", ala.INSTANCE::clear); + this.nudge = new sk("Position", this::onNudge) + .description( + "Shift the blueprint relative to the way you look, Y- and Y+ lower and raise it" + ); + this.nudgeStep = new sm("Step", 1.0F, 1.0F, 16.0F, 1.0F) + .description( + "Blocks moved by one press of the position pad" + ); + this.padKey = new sc( + "Pad Key", (169564371 ^ -169564287) + ((169564371 & -169564287) << 1) + ) + .description( + "Opens the in-game position pad while a blueprint is loaded" + ); + var10003 = "Rotation"; + var10004 = new String[4]; + var10004[0] = "0"; + var10004[1] = "90"; + var10004[2] = "180"; + var10004[3] = "270"; + this.rotation = new sg(var10003, var10004) + .description( + "Rotation applied around the anchor" + ); + var10003 = "Mirror"; + var10004 = new String[3]; + var10004[0] = "None"; + var10004[1] = "X"; + var10004[2] = "Z"; + this.mirror = new sg(var10003, var10004) + .description( + "Mirror applied before the rotation" + ); + this.range = new sm("Range", 24.0F, 4.0F, 64.0F, 1.0F) + .description( + "Radius around you that is compared with the blueprint" + ); + this.maxBlocks = new sm( + "Max Blocks", + 4096.0F, + 512.0F, + 32768.0F, + 512.0F + ) + .description( + "Upper bound of ghost blocks drawn at once" + ); + this.opacity = new sm("Opacity", 0.55F, 0.05F, 1.0F, 0.05F) + .description( + "Transparency of the ghost blocks" + ); + var10003 = "Style"; + var10004 = new String[2]; + var10004[0] = "Blocks"; + var10004[1] = "Boxes"; + this.style = new sg(var10003, var10004) + .description( + "Draw real block models or flat colored boxes" + ); + this.blockColors = new ru( + "Block Colors", + "Color box ghosts by the block they represent instead of the theme color", + (boolean)(((1)) != 0), + () -> this.style.is("Boxes") + ); + this.shading = new ru( + "Shading", + "Shade box faces like real blocks so the volume reads in 3D", + (boolean)(((1)) != 0), + () -> this.style.is("Boxes") + ); + this.showWrong = new ru( + "Show Wrong", + "Highlight blocks that do not match the blueprint", + (boolean)((((-163851499 | 163851500) + (-163851499 & 163851500)) + ) != 0)); + this.showExtra = new ru( + "Show Extra", + "Highlight blocks that the blueprint does not contain", + (boolean)((((-2118848288 ^ 2118848288) + ((-2118848288 & 2118848288) << 1)) + ) != 0)); + this.strictStates = new ru( + "Strict States", + "Require the exact block state instead of only the block", + (boolean)((((-1412928924 | 1412928924) + (-1412928924 & 1412928924)) + ) != 0)); + this.bounds = new ru( + "Bounds", + "Outline the blueprint volume", + (boolean)((((-1363334420 | 1363334421) + (-1363334420 & 1363334421)) + ) != 0)); + this.animate = new ru( + "Animate", + "Build the ghost up layer by layer when it is anchored", + (boolean)((((1584377499 | -1584377498) + (1584377499 & -1584377498)) + ) != 0)); + this.appearTime = new sm( + "Appear Time", + 0.8F, + 0.1F, + 3.0F, + 0.1F, + this.animate::isEnabled + ) + .description( + "Length of the build-up animation" + ); + this.sweep = new ru( + "Scan Sweep", + "Run a bright wave through the ghost", + (boolean)(((1)) != 0), + this.animate::isEnabled + ); + this.flash = new ru( + "Place Flash", + "Burst a block when it starts matching the blueprint", + (boolean)(((1)) != 0), + this.animate::isEnabled + ); + this.materials = new ru( + "Materials", + "Show the missing material list on the HUD", + (boolean)((((1468633641 ^ -1468633640) + ((1468633641 & -1468633640) << 1)) + ) != 0)); + var10003 = "Corner"; + Supplier var8 = this.materials::isEnabled; + String[] var10005 = new String[4]; + var10005[0] = "Top Right"; + var10005[1] = "Top Left"; + var10005[2] = "Bottom Left"; + var10005[3] = "Bottom Right"; + this.corner = new sg(var10003, var8, var10005) + .description( + "Where the material list is drawn" + ); + this.rows = new ArrayList<>(); + this.quadInstance = new QuadInstance(); + this.modelPose = new PoseStack(); + this.refreshFiles(); + } + + @Override + public void onEnable() { + this.refreshFiles(); + ala.INSTANCE.markDirty(); + super.onEnable(); + } + + @Override + public void onDisable() { + ala.INSTANCE.discardScan(); + this.rows.clear(); + this.cachedScan = null; + this.models = null; + super.onDisable(); + } + + public void refreshFiles() { + List var1 = ala.INSTANCE.files(); + String var2 = this.file.get(); + this.file + .replaceValues(var1.isEmpty() ? List.of("No schematics") : var1); + if (var1.contains(var2)) { + this.file.set(var2); + } + } + + public int getPadKeyCode() { + return this.padKey.getKeyCode(); + } + + public int getNudgeStep() { + return (int)this.nudgeStep.getCurrent(); + } + + public void adjustNudgeStep(int var1) { + this.nudgeStep.setCurrent(Mth.clamp(this.nudgeStep.getCurrent() + var1, this.nudgeStep.getMin(), this.nudgeStep.getMax())); + } + + public void cycleRotation() { + sg var10000 = this.rotation; + String var1 = this.rotation.get(); + int var2 = -1; + switch (var1.hashCode()) { + case 48: + if (var1.equals("0")) { + var2 = 0; + } + break; + case 1815: + if (var1.equals("90")) { + var2 = 1; + } + break; + case 48873: + if (var1.equals("180")) { + var2 = 2; + } + } + var10000.set(switch (var2) { + case 0 -> "90"; + case 1 -> "180"; + case 2 -> "270"; + default -> "0"; + }); + } + + public void cycleMirror() { + sg var10000 = this.mirror; + String var1 = this.mirror.get(); + int var2 = -1; + switch (var1.hashCode()) { + case 88: + if (var1.equals("X")) { + var2 = 1; + } + break; + case 2433880: + if (var1.equals("None")) { + var2 = 0; + } + } + var10000.set(switch (var2) { + case 0 -> "X"; + case 1 -> "Z"; + default -> "None"; + }); + } + + @k + public void onKey(er var1) { + int var2 = 880856710; + + while (true) { + switch (var2) { + case -2034691538: + return; + case -770901024: + return; + case -535648017: + if (ala.INSTANCE.getPlacement() == null) { + var2 = -770901024; + } else { + var2 = 294240284; + } + break; + case -107495401: + if (mc.level != null) { + var2 = -535648017; + } else { + var2 = -770901024; + } + break; + case 294240284: + mc.gui.setScreen(new aca()); + return; + case 752467390: + if (!var1.isKeyDown(this.padKey.getKeyCode())) { + var2 = -2034691538; + } else { + var2 = -107495401; + } + break; + case 880856710: + default: + if (this.padKey.getKeyCode() != (-1406038321 | 1406038320) + (-1406038321 & 1406038320)) { + var2 = 752467390; + } else { + var2 = -2034691538; + } + } + } + } + + public void nudge(int var1, int var2, int var3) { + this.onNudge(var1, var2, var3); + } + + private void onNudge(int var1, int var2, int var3) { + LocalPlayer var4 = null; + int var5 = 0; + Direction var6 = null; + Direction var7 = null; + int var8 = 0; + int var9 = 0; + int var10 = 252463741; + + while (true) { + switch (var10) { + case -1087197066: + var5 = (int)this.nudgeStep.getCurrent(); + var6 = var4.getDirection(); + var7 = var6.getClockWise(); + var8 = (var6.getStepX() * var3 + var7.getStepX() * var1) * var5; + var9 = (var6.getStepZ() * var3 + var7.getStepZ() * var1) * var5; + ala.INSTANCE.nudge(var8, var2 * var5, var9); + return; + case 252463741: + default: + var4 = mc.player; + if (var4 == null) { + var10 = 983394913; + } else { + var10 = -1087197066; + } + break; + case 983394913: + return; + } + } + } + + private void loadSelected() { + String var1 = null; + int var2 = 681953589; + + while (true) { + switch (var2) { + case -1542673515: + if ("No schematics".equals(var1)) { + var2 = -365463520; + } else { + var2 = 1527733710; + } + break; + case -365463520: + this.refreshFiles(); + return; + case 681953589: + default: + var1 = this.file.get(); + if (!var1.isEmpty()) { + var2 = -1542673515; + } else { + var2 = -365463520; + } + break; + case 1527733710: + ala.INSTANCE.load(var1); + return; + } + } + } + + @k + public void onUpdate(fl var1) { + ala var2 = null; + alg var3 = null; + int var4 = -1830161621; + + while (true) { + switch (var4) { + case -1830161621: + default: + var2 = ala.INSTANCE; + var2.setRotation(this.selectedRotation()); + var2.setMirror(this.selectedMirror()); + var2.tick( + mc, + (int)this.range.getCurrent(), + (int)this.maxBlocks.getCurrent(), + this.strictStates.isEnabled(), + this.showExtra.isEnabled(), + (7231447643975972146L ^ -7231447643975971846L) + ((7231447643975972146L & -7231447643975971846L) << 1) + ); + var3 = var2.getScan(); + if (var3 != this.cachedScan) { + var4 = -1107927664; + } else { + var4 = 401359942; + } + break; + case -1107927664: + this.cachedScan = var3; + this.rebuildRows(var3); + var4 = 401359942; + break; + case 401359942: + return; + } + } + } + + private Rotation selectedRotation() { + int var1 = 580430996; + + while (true) { + switch (var1) { + case -1874615824: + return Rotation.NONE; + case -1732581825: + if (this.rotation.is("180")) { + var1 = 2009157582; + } else { + var1 = 824628058; + } + break; + case 275279831: + return Rotation.COUNTERCLOCKWISE_90; + case 580430996: + default: + if (this.rotation.is("90")) { + var1 = 656959853; + } else { + var1 = -1732581825; + } + break; + case 656959853: + return Rotation.CLOCKWISE_90; + case 824628058: + if (this.rotation.is("270")) { + var1 = 275279831; + } else { + var1 = -1874615824; + } + break; + case 2009157582: + return Rotation.CLOCKWISE_180; + } + } + } + + private Mirror selectedMirror() { + int var1 = -653376468; + + while (true) { + switch (var1) { + case -1402452759: + return Mirror.FRONT_BACK; + case -930697569: + if (this.mirror.is("Z")) { + var1 = 353847033; + } else { + var1 = 1425285778; + } + break; + case -653376468: + default: + if (this.mirror.is("X")) { + var1 = -1402452759; + } else { + var1 = -930697569; + } + break; + case 353847033: + return Mirror.LEFT_RIGHT; + case 1425285778: + return Mirror.NONE; + } + } + } + + private void rebuildRows(alg var1) { + int var2 = 0; + ObjectIterator var3 = null; + Entry var4 = null; + ItemStack var5 = null; + int var6 = -411600584; + + while (true) { + switch (var6) { + case -2010027260: + var4 = (Entry)var3.next(); + if (var2++ >= (1691356470 ^ -1691356462) + ((1691356470 & -1691356462) << 1)) { + var6 = 559376167; + } else { + var6 = -1191683798; + } + break; + case -1191683798: + var5 = new ItemStack((ItemLike)var4.getKey()); + this.rows.add(new st(var5, var5.getHoverName().getString(), var4.getIntValue())); + var6 = -102349233; + break; + case -1066486069: + return; + case -411600584: + default: + this.rows.clear(); + var2 = 0; + var3 = var1.getMissingMaterials().object2IntEntrySet().iterator(); + var6 = -102349233; + break; + case -102349233: + if (var3.hasNext()) { + var6 = -2010027260; + } else { + var6 = -1066486069; + } + break; + case 559376167: + var6 = -1066486069; + } + } + } + + public void onWorldRender(LevelRenderContext var1) { + if (this.isEnabled() && mc.level != null && mc.player != null) { + ala var2 = ala.INSTANCE; + alf var3 = var2.getPlacement(); + if (var3 != null) { + PoseStack var4 = var1.poseStack(); + SubmitNodeCollector var5 = var1.submitNodeCollector(); + if (var4 != null && var5 != null) { + Vec3 var6 = mc.getEntityRenderDispatcher().camera.position(); + alg var7 = var2.getScan(); + long var8 = System.currentTimeMillis(); + boolean var10 = this.animate.isEnabled(); + float var11 = var10 ? Mth.clamp((float)(var8 - var2.getPlacementTime()) / (this.appearTime.getCurrent() * 1000.0F), 0.0F, 1.0F) : 1.0F; + float var12 = var10 && this.sweep.isEnabled() + ? (float)(var8 % ((-6953630934812647349L ^ 6953630934812650749L) + ((-6953630934812647349L & 6953630934812650749L) << 1))) + / 3400.0F + * 1.3199999F + - 0.16F + : Float.NaN; + ss var13 = new ss( + Math.round(this.opacity.getCurrent() * 255.0F), + bz.getInstance().getThemeManager().getCurrentTheme().getColor().getRGB() & 16777215, + this.blockColors.isEnabled(), + this.shading.isEnabled(), + this.showWrong.isEnabled(), + this.showExtra.isEnabled(), + var11, + var12, + var3.minY(), + var3.getData().getSizeY(), + (boolean)(((var10 && this.flash.isEnabled() + ? 1: (-958012567 | 958012567) + (-958012567 & 958012567))) != 0), + var8 + ); + boolean var14 = this.style.is("Blocks"); + if (var14 && var7.getCount() > 0) { + ald var15 = this.modelCache(var3); + var5.submitCustomGeometry( + var4, + RenderTypes.entityTranslucent(TextureAtlas.LOCATION_BLOCKS), + (var5x, var6x) -> this.emitModels(var6x, var5x, var7, var6, var13, var15) + ); + } + + if (!var14 && var7.getCount() > 0 || var13.flashes()) { + var5.submitCustomGeometry(var4, arj.filledBox(), (var5x, var6x) -> { + int var7x = -1898479193; + + while (true) { + switch (var7x) { + case -1898479193: + default: + if (!var14) { + var7x = 1529624303; + } else { + var7x = -770113519; + } + break; + case -945451529: + emitFlashes(var6x, var5x, var2, var6, var13); + var7x = 1430490803; + break; + case -770113519: + if (var13.flashes()) { + var7x = -945451529; + } else { + var7x = 1430490803; + } + break; + case 1430490803: + return; + case 1529624303: + emitGhosts(var6x, var5x, var7, var6, var13); + var7x = -770113519; + } + } + }); + } + + if (this.bounds.isEnabled()) { + emitBounds(var5, var4, var3, var6, var13); + } + + if (var13.drawWrong() && var7.getWrongCount() > 0 && var7.getWrongCount() <= (-34937510 | 34937702) + (-34937510 & 34937702)) { + emitWrongOutlines(var5, var4, var7, var6); + } + } + } + } + } + + private ald modelCache(alf var1) { + ald var2 = null; + int var3 = -895910711; + + while (true) { + switch (var3) { + case -1256002152: + if (!var2.matches(var1)) { + var3 = 545910061; + } else { + var3 = -184951764; + } + break; + case -895910711: + default: + var2 = this.models; + if (var2 != null) { + var3 = -1256002152; + } else { + var3 = 545910061; + } + break; + case -184951764: + return var2; + case 545910061: + var2 = new ald(var1); + this.models = var2; + var3 = -184951764; + } + } + } + + private void emitModels(VertexConsumer var1, Pose var2, alg var3, Vec3 var4, ss var5, ald var6) { + LongOpenHashSet var7 = var3.getOccupied(); + long[] var8 = var3.getPositions(); + byte[] var9 = var3.getKinds(); + int[] var10 = var3.getStates(); + float var11 = Math.max( + 1, var5.height() - ((-336147732 ^ 336147733) + ((-336147732 & 336147733) << 1)) + ); + int var12 = !Float.isNaN(var5.sweep()) ? 1: 0; + this.modelPose.setIdentity(); + this.modelPose.mulPose(var2.pose()); + this.quadInstance.setLightCoords((-1550151837 ^ 1565880717) + ((-1550151837 & 1565880717) << 1)); + this.quadInstance.setOverlayCoords(OverlayTexture.NO_OVERLAY); + + for (int var13 = 0; var13 < var3.getCount(); var13++) { + byte var14 = var9[var13]; + if (var14 != (1109204639 ^ -1109204637) + ((1109204639 & -1109204637) << 1) + && (var14 != (1294383172 | -1294383171) + (1294383172 & -1294383171) || var5.drawWrong())) { + alc var15 = var6.get(var10[var13]); + if (var15.size() != 0) { + long var16 = var8[var13]; + int var18 = BlockPos.getX(var16); + int var19 = BlockPos.getY(var16); + int var20 = BlockPos.getZ(var16); + float var21 = Mth.clamp((var19 - var5.minY()) / var11, 0.0F, 1.0F); + float var22 = Mth.clamp(var5.appear() * 1.85F - var21 * 0.85F, 0.0F, 1.0F); + if (!(var22 <= 0.002F)) { + float var23 = var22; + float var24 = 0.0F; + if (var12 != 0) { + float var25 = 1.0F - Math.abs(var21 - var5.sweep()) / 0.16F; + if (var25 > 0.0F) { + var24 = var25 * 0.6F; + var23 = Math.min(1.0F, var23 * (1.0F + var25 * 0.45F)); + } + } + + int var31 = Math.round(var5.alpha() * var23) << 24; + float var26 = easeOutBack(var22); + this.modelPose.pushPose(); + this.modelPose.translate((float)(var18 - var4.x), (float)(var19 - var4.y) - (1.0F - var22) * 0.45F, (float)(var20 - var4.z)); + if (var26 != 1.0F) { + this.modelPose.translate(0.5F, 0.5F, 0.5F); + this.modelPose.scale(var26, var26, var26); + this.modelPose.translate(-0.5F, -0.5F, -0.5F); + } + + int var27 = var26 >= 1.0F ? 1: 0; + + for (int var28 = 0; var28 < var15.size(); var28++) { + Direction var29 = var15.cullFace(var28); + if (var27 == 0 + || var29 == null + || !var7.contains(BlockPos.asLong(var18 + var29.getStepX(), var19 + var29.getStepY(), var20 + var29.getStepZ()))) { + int var30 = var15.color(var28); + if (var14 == (-858227826 ^ 858227827) + ((-858227826 & 858227827) << 1)) { + var30 = mix(var30, 16729144, 0.7F); + } + + if (var24 > 0.0F) { + var30 = mixWhite(var30, var24); + } + + this.quadInstance.setColor(var31 | var30); + var1.putBakedQuad(this.modelPose.last(), var15.quad(var28), this.quadInstance); + } + } + + this.modelPose.popPose(); + } + } + } + } + } + + private static int mix(int var0, int var1, float var2) { + float var3 = Mth.clamp(var2, 0.0F, 1.0F); + int var4 = Math.round( + Mth.lerp( + var3, + var0 >> 16, + var1 >> (-961480783 ^ 961480799) + ((-961480783 & 961480799) << 1) & (925299970 | -925299715) + (925299970 & -925299715) + ) + ); + int var5 = Math.round( + Mth.lerp( + var3, + var0 >> 8, + var1 >> (-1575266112 ^ 1575266120) + ((-1575266112 & 1575266120) << 1) & (-1274163515 | 1274163770) + (-1274163515 & 1274163770) + ) + ); + int var6 = Math.round( + Mth.lerp(var3, var0 & 255, var1 & (764886661 | -764886406) + (764886661 & -764886406)) + ); + return var4 << (-1273465878 ^ 1273465894) + ((-1273465878 & 1273465894) << 1) | var5 << (-903649930 ^ 903649938) + ((-903649930 & 903649938) << 1) | var6; + } + + private static void emitBounds(SubmitNodeCollector var0, PoseStack var1, alf var2, Vec3 var3, ss var4) { + float var5 = 0.0F; + double var6 = 0.0; + int var8 = 0; + AABB var9 = null; + int var10 = 1535208808; + + while (true) { + switch (var10) { + case -2001897147: + return; + case -1271286620: + var9 = new AABB(var2.minX(), var2.minY(), var2.minZ(), var2.maxX() + 1.0, var6, var2.maxZ() + 1.0); + var1.pushPose(); + var1.translate(-var3.x, -var3.y, -var3.z); + var0.submitShapeOutline( + var1, + Shapes.create(var9), + arj.lines(), + var8 << (225049820 ^ -225049796) + ((225049820 & -225049796) << 1) | var4.themeColor(), + 2.0F, + (boolean)((((-2019695614 | 2019695614) + (-2019695614 & 2019695614)) + ) != 0)); + var1.popPose(); + return; + case 1535208808: + } + + var5 = easeOutBack(var4.appear()); + var6 = var2.minY() + (var2.maxY() + 1.0 - var2.minY()) * var5; + var8 = Math.round(Mth.clamp(var4.appear() * 2.5F, 0.0F, 1.0F) * 255.0F); + if (var8 <= 0) { + var10 = -2001897147; + } else { + var10 = -1271286620; + } + } + } + + private static void emitWrongOutlines(SubmitNodeCollector var0, PoseStack var1, alg var2, Vec3 var3) { + int var4 = 0; + long var5 = (-5539016533053043416L | 5539016533053043416L) + (-5539016533053043416L & 5539016533053043416L); + AABB var7 = null; + int var8 = -1154914847; + + while (true) { + switch (var8) { + case -1797255711: + if (var2.getKinds()[var4] != (-1653836946 | 1653836947) + (-1653836946 & 1653836947)) { + var8 = 1763779486; + } else { + var8 = -69024889; + } + break; + case -1154914847: + default: + var1.pushPose(); + var1.translate(-var3.x, -var3.y, -var3.z); + var4 = 0; + var8 = 2063986022; + break; + case -587996529: + var1.popPose(); + return; + case -355929955: + var4++; + var8 = 2063986022; + break; + case -69024889: + var5 = var2.getPositions()[var4]; + var7 = new AABB( + BlockPos.getX(var5), + BlockPos.getY(var5), + BlockPos.getZ(var5), + BlockPos.getX(var5) + 1.0, + BlockPos.getY(var5) + 1.0, + BlockPos.getZ(var5) + 1.0 + ); + var0.submitShapeOutline( + var1, + Shapes.create(var7), + arj.lines(), + (1293249661 | -1310026877) + (1293249661 & -1310026877) | var2.getColors()[var4], + 1.5F, + (boolean)((((799397315 | -799397315) + (799397315 & -799397315)) + ) != 0)); + var8 = -355929955; + break; + case 1763779486: + var8 = -355929955; + break; + case 2063986022: + if (var4 < var2.getCount()) { + var8 = -1797255711; + } else { + var8 = -587996529; + } + } + } + } + + private static void emitGhosts(VertexConsumer var0, Pose var1, alg var2, Vec3 var3, ss var4) { + LongOpenHashSet var5 = var2.getOccupied(); + long[] var6 = var2.getPositions(); + byte[] var7 = var2.getKinds(); + int[] var8 = var2.getColors(); + float var9 = Math.max( + 1, var4.height() - ((-1141775849 | 1141775850) + (-1141775849 & 1141775850)) + ); + int var10 = !Float.isNaN(var4.sweep()) + ? 1: 0; + + for (int var11 = 0; var11 < var2.getCount(); var11++) { + byte var12 = var7[var11]; + if ((var12 != (-295683984 | 295683985) + (-295683984 & 295683985) || var4.drawWrong()) + && (var12 != (659249343 | -659249341) + (659249343 & -659249341) || var4.drawExtra())) { + long var13 = var6[var11]; + int var15 = BlockPos.getX(var13); + int var16 = BlockPos.getY(var13); + int var17 = BlockPos.getZ(var13); + float var18 = Mth.clamp((var16 - var4.minY()) / var9, 0.0F, 1.0F); + float var19 = Mth.clamp(var4.appear() * 1.85F - var18 * 0.85F, 0.0F, 1.0F); + if (!(var19 <= 0.002F)) { + float var20 = easeOutBack(var19); + float var21 = var19; + int var22 = var12 == 0 && !var4.blockColors() ? var4.themeColor() : saturate(var8[var11] & (181390906 | -164613691) + (181390906 & -164613691)); + if (var10 != 0) { + float var23 = 1.0F - Math.abs(var18 - var4.sweep()) / 0.16F; + if (var23 > 0.0F) { + var22 = mixWhite(var22, var23 * 0.6F); + var21 = Math.min(1.0F, var21 * (1.0F + var23 * 0.45F)); + } + } + + int var35 = Math.round(var4.alpha() * var21) << 24; + float var24 = 0.5F * var20 - 0.045F; + float var25 = (float)(var15 + 0.5F - var3.x); + float var26 = (float)(var16 + 0.5F - var3.y) - (1.0F - var19) * 0.45F; + float var27 = (float)(var17 + 0.5F - var3.z); + float var28 = var25 - var24; + float var29 = var26 - var24; + float var30 = var27 - var24; + float var31 = var25 + var24; + float var32 = var26 + var24; + float var33 = var27 + var24; + int var34 = var20 >= 1.0F ? 1: 0; + if (var34 == 0 || !var5.contains(BlockPos.asLong(var15, var16 - (1), var17))) { + quad( + var0, + var1, + var35 | shade(var22, var4.shading() ? 0.5F : 1.0F), + var28, + var29, + var30, + var28, + var29, + var33, + var31, + var29, + var33, + var31, + var29, + var30 + ); + } + + if (var34 == 0 || !var5.contains(BlockPos.asLong(var15, var16 + 1, var17))) { + quad( + var0, + var1, + var35 | shade(var22, var4.shading() ? 1.0F : 1.0F), + var28, + var32, + var30, + var31, + var32, + var30, + var31, + var32, + var33, + var28, + var32, + var33 + ); + } + + if (var34 == 0 || !var5.contains(BlockPos.asLong(var15, var16, var17 - ((2004420798 | -2004420797) + (2004420798 & -2004420797))))) { + quad( + var0, + var1, + var35 | shade(var22, var4.shading() ? 0.8F : 1.0F), + var28, + var29, + var30, + var31, + var29, + var30, + var31, + var32, + var30, + var28, + var32, + var30 + ); + } + + if (var34 == 0 || !var5.contains(BlockPos.asLong(var15, var16, var17 + (-1293009045 ^ 1293009046) + ((-1293009045 & 1293009046) << 1)))) { + quad( + var0, + var1, + var35 | shade(var22, var4.shading() ? 0.8F : 1.0F), + var28, + var29, + var33, + var28, + var32, + var33, + var31, + var32, + var33, + var31, + var29, + var33 + ); + } + + if (var34 == 0 || !var5.contains(BlockPos.asLong(var15 - (1), var16, var17))) { + quad( + var0, + var1, + var35 | shade(var22, var4.shading() ? 0.62F : 1.0F), + var28, + var29, + var30, + var28, + var32, + var30, + var28, + var32, + var33, + var28, + var29, + var33 + ); + } + + if (var34 == 0 || !var5.contains(BlockPos.asLong(var15 + 1, var16, var17))) { + quad( + var0, + var1, + var35 | shade(var22, var4.shading() ? 0.62F : 1.0F), + var31, + var29, + var30, + var31, + var29, + var33, + var31, + var32, + var33, + var31, + var32, + var30 + ); + } + } + } + } + } + + private static void emitFlashes(VertexConsumer var0, Pose var1, ala var2, Vec3 var3, ss var4) { + int var5 = 0; + long[] var6 = null; + long[] var7 = null; + int var8 = 0; + long var9 = (-4426936309199457769L | 4426936309199457769L) + (-4426936309199457769L & 4426936309199457769L); + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = 0; + long var14 = (-3567883184686847226L ^ 3567883184686847226L) + ((-3567883184686847226L & 3567883184686847226L) << 1); + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + int var20 = 0; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + int var27 = -1757315218; + + while (true) { + switch (var27) { + case -1921166563: + var8++; + var27 = -1006896679; + break; + case -1757315218: + default: + var5 = var2.getFlashCount(); + if (var5 <= 0) { + var27 = -656843350; + } else { + var27 = 1552495735; + } + break; + case -1734466246: + if (var9 > (-2332061868041258091L ^ 2332061868041258511L) + ((-2332061868041258091L & 2332061868041258511L) << 1)) { + var27 = 1913030665; + } else { + var27 = 1612964734; + } + break; + case -1490308215: + var27 = -1921166563; + break; + case -1406605901: + return; + case -1327725649: + var9 = var4.now() - var7[var8]; + if (var9 >= (-4111316679796129765L ^ 4111316679796129765L) + ((-4111316679796129765L & 4111316679796129765L) << 1)) { + var27 = -1734466246; + } else { + var27 = -1921166563; + } + break; + case -1006896679: + if (var8 < var5) { + var27 = -1327725649; + } else { + var27 = -1406605901; + } + break; + case -656843350: + return; + case 753258743: + var14 = var6[var8]; + var16 = 0.5F * (1.0F + 0.85F * var11); + var17 = (float)(BlockPos.getX(var14) + 0.5F - var3.x); + var18 = (float)(BlockPos.getY(var14) + 0.5F - var3.y); + var19 = (float)(BlockPos.getZ(var14) + 0.5F - var3.z); + var20 = var13 | mixWhite(var4.themeColor(), var12); + var21 = var17 - var16; + var22 = var18 - var16; + var23 = var19 - var16; + var24 = var17 + var16; + var25 = var18 + var16; + var26 = var19 + var16; + quad(var0, var1, var20, var21, var22, var23, var21, var22, var26, var24, var22, var26, var24, var22, var23); + quad(var0, var1, var20, var21, var25, var23, var24, var25, var23, var24, var25, var26, var21, var25, var26); + quad(var0, var1, var20, var21, var22, var23, var24, var22, var23, var24, var25, var23, var21, var25, var23); + quad(var0, var1, var20, var21, var22, var26, var21, var25, var26, var24, var25, var26, var24, var22, var26); + quad(var0, var1, var20, var21, var22, var23, var21, var25, var23, var21, var25, var26, var21, var22, var26); + quad(var0, var1, var20, var24, var22, var23, var24, var22, var26, var24, var25, var26, var24, var25, var23); + var27 = -1921166563; + break; + case 1552495735: + var6 = var2.getFlashPositions(); + var7 = var2.getFlashTimes(); + var8 = 0; + var27 = -1006896679; + break; + case 1612964734: + var11 = (float)var9 / 420.0F; + var12 = (1.0F - var11) * (1.0F - var11); + var13 = Math.round(178.5F * var12) << 24; + if (var13 == 0) { + var27 = -1490308215; + } else { + var27 = 753258743; + } + break; + case 1913030665: + var27 = -1921166563; + } + } + } + + private static float easeOutBack(float var0) { + float var1 = var0 - 1.0F; + return 1.0F + 2.35F * var1 * var1 * var1 + 1.35F * var1 * var1; + } + + private static int saturate(int var0) { + int var1 = var0 >> 16; + int var2 = var0 >> 8; + int var3 = var0 & 255; + float var4 = (var1 + var2 + var3) / 3.0F; + var1 = Mth.clamp( + Math.round(var4 + (var1 - var4) * 1.3F), + 0, + (1358861810 ^ -1358861555) + ((1358861810 & -1358861555) << 1) + ); + var2 = Mth.clamp( + Math.round(var4 + (var2 - var4) * 1.3F), + 0, + (1235583266 ^ -1235583011) + ((1235583266 & -1235583011) << 1) + ); + var3 = Mth.clamp( + Math.round(var4 + (var3 - var4) * 1.3F), 0, (501348252 | -501347997) + (501348252 & -501347997) + ); + return var1 << (-655321650 ^ 655321666) + ((-655321650 & 655321666) << 1) | var2 << (2023346130 ^ -2023346122) + ((2023346130 & -2023346122) << 1) | var3; + } + + private static int shade(int var0, float var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 1450716286; + + while (true) { + switch (var5) { + case -1994762973: + var2 = Math.round( + (var0 >> (182496871 | -182496855) + (182496871 & -182496855) & (-1809184664 ^ 1809184919) + ((-1809184664 & 1809184919) << 1)) * var1 + ); + var3 = Math.round( + (var0 >> (1382250562 ^ -1382250554) + ((1382250562 & -1382250554) << 1) & (-1281036234 ^ 1281036489) + ((-1281036234 & 1281036489) << 1)) + * var1 + ); + var4 = Math.round((var0 & (-563068296 | 563068551) + (-563068296 & 563068551)) * var1); + return var2 << (670378417 ^ -670378401) + ((670378417 & -670378401) << 1) + | var3 << (-1041650496 ^ 1041650504) + ((-1041650496 & 1041650504) << 1) + | var4; + case 140089678: + return var0; + case 1450716286: + } + + if (var1 >= 1.0F) { + var5 = 140089678; + } else { + var5 = -1994762973; + } + } + } + + private static int mixWhite(int var0, float var1) { + float var2 = Mth.clamp(var1, 0.0F, 1.0F); + int var3 = Math.round( + Mth.lerp(var2, var0 >> 16, 255.0F) + ); + int var4 = Math.round( + Mth.lerp( + var2, var0 >> 8, 255.0F + ) + ); + int var5 = Math.round(Mth.lerp(var2, var0 & 255, 255.0F)); + return var3 << (2131859483 ^ -2131859467) + ((2131859483 & -2131859467) << 1) | var4 << (2057021336 | -2057021328) + (2057021336 & -2057021328) | var5; + } + + private static void quad( + VertexConsumer var0, + Pose var1, + int var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13, + float var14 + ) { + var0.addVertex(var1, var3, var4, var5).setColor(var2); + var0.addVertex(var1, var6, var7, var8).setColor(var2); + var0.addVertex(var1, var9, var10, var11).setColor(var2); + var0.addVertex(var1, var12, var13, var14).setColor(var2); + } + + @k + public void onHudRender(fr var1) { + if (this.materials.isEnabled() && mc.player != null && !mc.gui.hud.isHidden()) { + akx var2 = ala.INSTANCE.getData(); + if (var2 != null) { + aru var3 = var1.getContext(); + mv var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + ge var5 = gl.MEDIUM.getFont(7.0F); + ge var6 = gl.REGULAR.getFont(6.5F); + alg var7 = ala.INSTANCE.getScan(); + int var8 = var7.expectedCount(); + int var9 = var8 == 0 ? 100: Math.round(var7.getMatchedCount() * 100.0F / var8); + String var10000 = "%s %d%%"; + Object[] var10001 = new Object[2]; + var10001[0] = var2.getName(); + var10001[1] = var9; + String var10 = var10000.formatted(var10001); + if (ala.INSTANCE.isLoading()) { + var10000 = "Loading..."; + } else { + var10000 = "%d left %d wrong"; + var10001 = new Object[2]; + var10001[0] = var7.getMissingCount(); + var10001[1] = var7.getWrongCount(); + var10000 = var10000.formatted(var10001); + } + + String var11 = var10000; + float var12 = Math.max(var5.width(var10), var6.width(var11)); + + for (st var14 : this.rows) { + var12 = Math.max(var12, 13.0F + var6.width(var14.name()) + 10.0F + var6.width(var14.count())); + } + + float var24 = var12 + 10.0F; + float var25 = 10.0F + var5.height() + 3.0F + 2.0F + 3.0F + var6.height() + this.rows.size() * 11.0F; + float var15 = !this.corner.is("Top Left") + && !this.corner.is("Bottom Left") + ? mc.getWindow().getGuiScaledWidth() - var24 - 6.0F + : 6.0F; + float var16 = !this.corner.is("Top Left") + && !this.corner.is("Top Right") + ? mc.getWindow().getGuiScaledHeight() - var25 - 6.0F + : 6.0F; + pi.surface(var3, var15, var16, var24, var25, asj.uniform(pk.radiusPanel()), asu.WHITE); + float var17 = var15 + 5.0F; + float var18 = var16 + 5.0F; + var3.drawText(var5, var10, var17, var18, var4.getWhite()); + var18 += var5.height() + 3.0F; + var3.drawRoundedRect(var17, var18, var12, 2.0F, asj.uniform(1.0F), var4.getForegroundLight()); + var3.drawRoundedRect(var17, var18, var12 * var9 / 100.0F, 2.0F, asj.uniform(1.0F), var4.getColor()); + var18 += 5.0F; + var3.drawText(var6, var11, var17, var18, var4.getGrayLight()); + var18 += var6.height(); + boolean var19 = arz.hudItemsVisible(); + + for (st var21 : this.rows) { + float var22 = var18 + (11.0F - var6.height()) / 2.0F; + if (var19) { + var3.pushMatrix(); + var3.pose().translate(var17, var18 + 1.0F); + var3.pose().scale(0.55F, 0.55F); + var3.item(var21.stack(), 0, (92921861 | -92921861) + (92921861 & -92921861)); + var3.popMatrix(); + } + + var3.drawText(var6, var21.name(), var17 + 9.0F + 4.0F, var22, var4.getWhiteGray()); + String var23 = var21.count(); + var3.drawText(var6, var23, var15 + var24 - 5.0F - var6.width(var23), var22, var4.getWhite()); + var18 += 11.0F; + } + } + } + } +} diff --git a/src/main/java/defpackage/sv.java b/src/main/java/defpackage/sv.java new file mode 100644 index 0000000..7d0d389 --- /dev/null +++ b/src/main/java/defpackage/sv.java @@ -0,0 +1,841 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.core.BlockPos; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.Shapes; + +@rn(name = "Showcase", category = rl.BUILDERS, description = "Finds your build, flies a cinematic path around it and saves the clip") +public final class sv extends rm { + public static final sv INSTANCE = new sv(); + private static final String SHOT_AUTO = "Auto"; + private static final String SUMMARY_SELECTION = "Selection"; + private static final float SELECTION_OUTLINE_WIDTH = 2.0F; + private static final int SELECTION_OUTLINE_COLOR = -11746561; + private static final int CORNER_OUTLINE_COLOR = -16052; + private static final String DETECT_BUILD = "Build"; + private static final String DETECT_AROUND = "Around Me"; + private static final String MESSAGE_NO_WORLD = "Join a world first"; + private static final String MESSAGE_NO_BUILD = "No build nearby, look at it and retry"; + private static final String SUMMARY_SEPARATOR = " - "; + private static final String SUMMARY_BLOCKS = " blocks"; + private static final String MESSAGE_DONE = "done"; + private static final String MESSAGE_CANCELLED = "cancelled"; + private static final String MESSAGE_CRAMPED = "raise render distance to fit it all"; + private static final int MIN_BUILD_BLOCKS = 16; + private static final int MAX_SCAN_BLOCKS = 40000; + private static final int SECTION_SIZE = 16; + private static final double RENDER_SAFETY = 0.75; + private static final double MIN_DISTANCE = 6.0; + private static final double MIN_DISTANCE_FRACTION = 0.35; + private static final double FRAME_MARGIN = 1.1; + private static final double MIN_CLEARANCE = 6.0; + private static final double CLEARANCE_FRACTION = 0.45; + private static final double HALF = 0.5; + private static final double LOW_ELEVATION_DEGREES = 12.0; + private static final double HIGH_ELEVATION_DEGREES = 30.0; + private static final double MIN_ELEVATION_DEGREES = 3.0; + private static final double MAX_ELEVATION_DEGREES = 72.0; + private final sg shot; + private final sm duration; + private final sm framing; + private final sm angle; + private final sm height; + private final sm fov; + private final sg detect; + private final sm scanRadius; + private final ru record; + private final ru showPlayer; + private final ru hideClouds; + private final ru noSky; + private final rx skyColor; + private final amj flight; + private String summary; + private String outcome; + private boolean selected; + private boolean cramped; + private boolean failed; + private boolean hudToggledByUs; + private boolean startedRecording; + private boolean stopping; + + private sv() { + String var10003 = "Shot"; + String[] var10004 = new String[6]; + var10004[0] = "Auto"; + var10004[1] = ams.ORBIT.getLabel(); + var10004[2] = ams.SPIRAL.getLabel(); + var10004[3] = ams.CRANE.getLabel(); + var10004[4] = ams.FLYOVER.getLabel(); + var10004[5] = ams.DOLLY.getLabel(); + this.shot = new sg(var10003, var10004) + .describe( + "Auto", + "Pick the path from the shape of the build" + ) + .describe( + ams.ORBIT.getLabel(), + "Rising full turn around the build" + ) + .describe( + ams.SPIRAL.getLabel(), + "Tightening spiral, best for towers" + ) + .describe( + ams.CRANE.getLabel(), "Low start that pulls back and up" + ) + .describe( + ams.FLYOVER.getLabel(), + "Straight drone pass, best for large areas" + ) + .describe( + ams.DOLLY.getLabel(), + "Travel along the long side of the area" + ); + this.duration = new sm("Duration", 12.0F, 4.0F, 40.0F, 1.0F) + .description("Length of the flight in seconds"); + this.framing = new sm("Framing", 1.0F, 0.5F, 3.0F, 0.1F) + .description( + "How far the camera sits, 1 fits the build in frame" + ); + this.angle = new sm("Angle", 1.0F, 0.2F, 2.5F, 0.1F) + .description( + "How steeply the camera looks down on the build" + ); + this.height = new sm("Height", 0.0F, -40.0F, 120.0F, 2.0F) + .description( + "Extra camera height in blocks, 0 keeps the automatic arc" + ); + this.fov = new sm("Field Of View", 70.0F, 40.0F, 110.0F, 1.0F) + .description( + "Camera field of view during the flight" + ); + var10003 = "Detect"; + var10004 = new String[2]; + var10004[0] = "Build"; + var10004[1] = "Around Me"; + this.detect = new sg(var10003, var10004) + .describe( + "Build", + "Flood fill the placed blocks you are looking at, unless an area is selected" + ) + .describe( + "Around Me", + "Use everything within the scan radius of you" + ); + this.scanRadius = new sm("Size", 28.0F, 8.0F, 128.0F, 4.0F) + .description( + "How far around the block you look at still counts as the build" + ); + this.record = new ru( + "Record", + (boolean)((((-508586048 | 508586049) + (-508586048 & 508586049)) + ) != 0)) + .description( + "Record the flight and export it as mp4 when it ends" + ); + this.showPlayer = new ru( + "Show Player", (boolean)((((5871112 | -5871112) + (5871112 & -5871112)) + ) != 0)) + .description("Keep your character visible in the shot"); + this.hideClouds = new ru( + "Hide Clouds", + (boolean)((((1598986321 ^ -1598986320) + ((1598986321 & -1598986320) << 1)) + ) != 0)) + .description( + "Clouds cut across the frame at camera altitude, off by default" + ); + this.noSky = new ru( + "No Sky", (boolean)((((-865988621 | 865988621) + (-865988621 & 865988621)) + ) != 0)) + .description( + "Replace sky, clouds and fog with a flat color while filming" + ); + this.skyColor = new rx( + "Sky Color", + new asu( + 0, + 0, + 0, + (-160772078 ^ 160772333) + ((-160772078 & 160772333) << 1) + ), + this.noSky::isEnabled + ) + .description( + "Backdrop color used when the sky is off" + ); + this.flight = new amj(); + } + + public boolean isFlying() { + return this.flight.isActive(); + } + + public boolean keepsPlayerVisible() { + return this.showPlayer.isEnabled(); + } + + public boolean hidesSky() { + int var2 = 0; + int var1 = 64006419; + + while (true) { + switch (var1) { + case -1444729205: + return (boolean)((var2) != 0); + case -954922056: + var2 = 0; + var1 = -1444729205; + break; + case -665443382: + if (this.noSky.isEnabled()) { + var1 = -229475958; + } else { + var1 = -954922056; + } + break; + case -229475958: + var2 = 1; + var1 = -1444729205; + break; + case 64006419: + default: + if (this.flight.isActive()) { + var1 = -665443382; + } else { + var1 = -954922056; + } + } + } + } + + public boolean hidesClouds() { + int var2 = 0; + int var1 = -1690832595; + + while (true) { + switch (var1) { + case -2123718830: + return (boolean)((var2) != 0); + case -1690832595: + default: + if (this.flight.isActive()) { + var1 = 1107214067; + } else { + var1 = 893851358; + } + break; + case -747624428: + if (this.hideClouds.isEnabled()) { + var1 = 1010832132; + } else { + var1 = 893851358; + } + break; + case 893851358: + var2 = 0; + var1 = -2123718830; + break; + case 1010832132: + var2 = 1; + var1 = -2123718830; + break; + case 1107214067: + if (!this.noSky.isEnabled()) { + var1 = -747624428; + } else { + var1 = 1010832132; + } + } + } + } + + public void onWorldRender(LevelRenderContext var1) { + amm var2 = null; + PoseStack var3 = null; + SubmitNodeCollector var4 = null; + Object var5 = null; + int var6 = -1076568352; + + while (true) { + switch (var6) { + case -2042699844: + var3.popPose(); + return; + case -1228053429: + outline( + var4, + var3, + new AABB(var2.minX(), var2.minY(), var2.minZ(), var2.maxX() + 1.0, var2.maxY() + 1.0, var2.maxZ() + 1.0), + (-1201275784 | 1189529223) + (-1201275784 & 1189529223) + ); + var6 = -2042699844; + break; + case -1076568352: + default: + var2 = amm.INSTANCE; + if (mc.level != null) { + var6 = 1922459261; + } else { + var6 = -268145797; + } + break; + case -456297843: + return; + case -431335632: + if (var4 == null) { + var6 = -456297843; + } else { + var6 = 1613255796; + } + break; + case -268145797: + return; + case 813531883: + var3 = var1.poseStack(); + var4 = var1.submitNodeCollector(); + if (var3 != null) { + var6 = -431335632; + } else { + var6 = -456297843; + } + break; + case 1523460336: + outlineCorner(var4, var3, var2.getFirst()); + outlineCorner(var4, var3, var2.getSecond()); + var6 = -2042699844; + break; + case 1613255796: + var5 = mc.getEntityRenderDispatcher().camera.position(); + var3.pushPose(); + var3.translate(-((Vec3)var5).x, -((Vec3)var5).y, -((Vec3)var5).z); + if (var2.isComplete()) { + var6 = -1228053429; + } else { + var6 = 1523460336; + } + break; + case 1922459261: + if (this.flight.isActive()) { + var6 = -268145797; + } else { + var6 = 813531883; + } + } + } + } + + private static void outlineCorner(SubmitNodeCollector var0, PoseStack var1, BlockPos var2) { + int var3 = 549198090; + + while (true) { + switch (var3) { + case -36297107: + outline( + var0, + var1, + new AABB(var2.getX(), var2.getY(), var2.getZ(), var2.getX() + 1.0, var2.getY() + 1.0, var2.getZ() + 1.0), + (2074580268 | -2074596320) + (2074580268 & -2074596320) + ); + return; + case 354297358: + return; + case 549198090: + } + + if (var2 == null) { + var3 = 354297358; + } else { + var3 = -36297107; + } + } + } + + private static void outline(SubmitNodeCollector var0, PoseStack var1, AABB var2, int var3) { + var0.submitShapeOutline(var1, Shapes.create(var2), arj.lines(), var3, 2.0F, (boolean)((((721159836 ^ -721159836) + ((721159836 & -721159836) << 1))) != 0)); + } + + public amk frame() { + return this.flight.sample(mc.level); + } + + public void applyShot(ams var1, int var2) { + int var3 = 388919664; + + while (true) { + switch (var3) { + case -1398831474: + this.duration.setCurrent(var2); + var3 = -1063120773; + break; + case -1063120773: + return; + case 388919664: + default: + this.shot.set(var1.getLabel()); + if (var2 > 0) { + var3 = -1398831474; + } else { + var3 = -1063120773; + } + } + } + } + + @Override + public boolean emitsToggleSound() { + return (boolean)(((0)) != 0); + } + + @Override + public void onEnable() { + int var1 = 1183730992; + + while (true) { + switch (var1) { + case -1794429334: + this.scheduleStop(); + var1 = -1657149998; + break; + case -1657149998: + return; + case 1183730992: + default: + super.onEnable(); + this.stopping = (boolean)(((0)) != 0); + this.summary = null; + this.outcome = null; + this.failed = (boolean)(((0)) != 0); + if (!this.begin()) { + var1 = -1794429334; + } else { + var1 = -1657149998; + } + } + } + } + + @Override + public void onDisable() { + this.finish(); + super.onDisable(); + this.report(); + } + + @k + public void onUpdate(fl var1) { + int var2 = 1965987249; + + while (true) { + switch (var2) { + case -1776313199: + this.outcome = "done"; + this.scheduleStop(); + var2 = -1753752506; + break; + case -1753752506: + return; + case -1700378851: + return; + case 210399654: + if (this.stopping) { + var2 = -1700378851; + } else { + var2 = 1510219933; + } + break; + case 385478375: + if (this.flight.isFinished()) { + var2 = -1776313199; + } else { + var2 = -1753752506; + } + break; + case 439215044: + this.outcome = "cancelled"; + this.scheduleStop(); + return; + case 1510219933: + if (this.aborted()) { + var2 = 439215044; + } else { + var2 = 385478375; + } + break; + case 1965987249: + default: + if (this.flight.isActive()) { + var2 = 210399654; + } else { + var2 = -1700378851; + } + } + } + } + + @k + public void onFog(fo var1) { + int var2 = -458454860; + + while (true) { + switch (var2) { + case -458454860: + default: + if (!this.hidesSky()) { + var2 = 248822895; + } else { + var2 = 1839825806; + } + break; + case 248822895: + return; + case 1839825806: + var1.setColor(this.skyColor.getColor().getRGB()); + var1.setFogDisabled((boolean)((((-1368476572 | 1368476573) + (-1368476572 & 1368476573))) != 0)); + var1.setCancelled((boolean)((((901175213 | -901175212) + (901175213 & -901175212))) != 0)); + return; + } + } + } + + @k + public void onFov(fp var1) { + int var2 = -1161822850; + + while (true) { + switch (var2) { + case -1161822850: + default: + if (!this.flight.isActive()) { + var2 = -1113310290; + } else { + var2 = 2093345820; + } + break; + case -1113310290: + return; + case 2093345820: + var1.setFov((int)this.fov.getCurrent()); + var1.setCancelled((boolean)((((-2127916782 ^ 2127916783) + ((-2127916782 & 2127916783) << 1))) != 0)); + return; + } + } + } + + private boolean aborted() { + int var2 = 0; + int var1 = -315031155; + + while (true) { + switch (var1) { + case -1970265990: + return (boolean)((var2) != 0); + case -1212695364: + var2 = 1; + var1 = -1970265990; + break; + case -315031155: + default: + if (mc.level != null) { + var1 = 1953763302; + } else { + var1 = -1212695364; + } + break; + case 27067953: + if (mc.gui.screen() == null) { + var1 = 1746258663; + } else { + var1 = -1212695364; + } + break; + case 1746258663: + if (mc.player.isDeadOrDying()) { + var1 = -1212695364; + } else { + var1 = 2139771711; + } + break; + case 1953763302: + if (mc.player != null) { + var1 = 27067953; + } else { + var1 = -1212695364; + } + break; + case 2139771711: + var2 = 0; + var1 = -1970265990; + } + } + } + + private boolean begin() { + ClientLevel var1 = mc.level; + LocalPlayer var2 = mc.player; + if (var1 != null && var2 != null) { + if (mc.gui.screen() != null) { + mc.gui.setScreen(null); + } + + amt var3 = this.resolveSubject(var1, var2); + if (var3 != null && var3.blocks() >= (1994347239 | -1994347223) + (1994347239 & -1994347223)) { + ams var4 = this.shot.is("Auto") + ? (this.selected ? ams.DOLLY : ams.pickFor(var3)) + : ams.byLabel(this.shot.get(), ams.ORBIT); + aml var5 = this.geometryFor(var3, var2, var4); + this.flight.begin(var5, var4, this.duration.getCurrent()); + this.hudToggledByUs = (boolean)(((!mc.gui.hud.isHidden() + ? 1: (-773741964 | 773741964) + (-773741964 & 773741964))) != 0); + if (this.hudToggledByUs) { + mc.gui.hud.toggle(); + } + + ajn var6 = ajn.getInstance(); + this.startedRecording = (boolean)(((this.record.isEnabled() && !var6.isRecording() + ? 1: (-2118422054 ^ 2118422054) + ((-2118422054 & 2118422054) << 1))) != 0); + if (this.startedRecording) { + var6.startRecording(); + } + + this.summary = var4.getLabel() + + " - " + + (this.selected ? "Selection" : var3.blocks() + " blocks") + + ( + this.cramped + ? " - raise render distance to fit it all" + : "" + ); + return (boolean)(((1)) != 0); + } else { + this.fail( + "No build nearby, look at it and retry" + ); + return (boolean)(((0)) != 0); + } + } else { + this.fail("Join a world first"); + return (boolean)(((0)) != 0); + } + } + + private void finish() { + int var1 = -503577869; + + while (true) { + switch (var1) { + case -1869816659: + if (mc.gui.hud.isHidden()) { + var1 = 1166213471; + } else { + var1 = 1548778219; + } + break; + case -726156385: + this.startedRecording = (boolean)(((0)) != 0); + ajn.getInstance().stopRecording((boolean)((((315774184 ^ -315774183) + ((315774184 & -315774183) << 1))) != 0)); + var1 = 2146441482; + break; + case -503577869: + default: + this.flight.stop(); + if (this.hudToggledByUs) { + var1 = -1869816659; + } else { + var1 = 1548778219; + } + break; + case 1166213471: + mc.gui.hud.toggle(); + var1 = 1548778219; + break; + case 1548778219: + this.hudToggledByUs = (boolean)(((0)) != 0); + if (this.startedRecording) { + var1 = -726156385; + } else { + var1 = 2146441482; + } + break; + case 2146441482: + return; + } + } + } + + private void scheduleStop() { + this.stopping = (boolean)(((1)) != 0); + mc.execute(() -> { + int var1 = 720033607; + + while (true) { + switch (var1) { + case -549466300: + return; + case 720033607: + default: + this.stopping = (boolean)(((0)) != 0); + if (this.isEnabled()) { + var1 = 1006917356; + } else { + var1 = -549466300; + } + break; + case 1006917356: + this.setToggled((boolean)((((-1662923601 | 1662923601) + (-1662923601 & 1662923601))) != 0)); + var1 = -549466300; + } + } + }); + } + + private amt resolveSubject(ClientLevel var1, LocalPlayer var2) { + int var3 = 0; + int var4 = -1618903850; + + while (true) { + switch (var4) { + case -1618903850: + default: + if (amm.INSTANCE.isComplete()) { + var4 = 1272322774; + } else { + var4 = 1463047987; + } + break; + case 888651054: + return ami.detect(var1, var2, var3, (-243978170 ^ 244018170) + ((-243978170 & 244018170) << 1)); + case 1272322774: + this.selected = (boolean)(((1)) != 0); + return amm.INSTANCE.subject(); + case 1463047987: + this.selected = (boolean)(((0)) != 0); + var3 = (int)this.scanRadius.getCurrent(); + if (this.detect.is("Around Me")) { + var4 = 1953200777; + } else { + var4 = 888651054; + } + break; + case 1953200777: + return ami.surroundings(var1, var2.blockPosition(), var3); + } + } + } + + private aml geometryFor(amt var1, LocalPlayer var2, ams var3) { + double var4 = Math.atan2(var2.getZ() - var1.centerZ(), var2.getX() - var1.centerX()); + return new aml( + var1.centerX(), + var1.centerZ(), + var1.centerY(), + this.distanceFor(var1, var2, var3), + this.elevation(12.0), + this.elevation(30.0), + var4, + var1.axisAngle(), + var1.axisLength(), + var1.verticalExtent(), + this.height.getCurrent() + ); + } + + private double distanceFor(amt var1, LocalPlayer var2, ams var3) { + double var4 = var1.horizontalExtent(); + double var6 = Math.toRadians(this.fov.getCurrent()) * 0.5; + double var8 = var1.silhouette() * 1.1 / Math.tan(var6); + double var10 = var4 + Math.max(6.0, var4 * 0.45); + double var12 = Math.max(var8, var10) * this.framing.getCurrent(); + double var14 = mc.options.getEffectiveRenderDistance() * ((-1639553817 | 1639553833) + (-1639553817 & 1639553833)) * 0.75; + double var16 = var2.getX() - var1.centerX(); + double var18 = var2.getZ() - var1.centerZ(); + double var20 = Math.sqrt(var16 * var16 + var18 * var18); + double var22 = Math.max(6.0, var4 * 0.35); + double var24 = var14 - var20 - (var3.isFollowsAxis() ? var1.axisLength() : 0.0); + double var26 = Math.max(var22, var24 / var3.getReachFactor()); + this.cramped = (boolean)(((var26 < var12 ? 1: (-697019641 | 697019641) + (-697019641 & 697019641))) != 0); + return Math.max(var22, Math.min(var12, var26)); + } + + private double elevation(double var1) { + return Math.toRadians(Mth.clamp(var1 * this.angle.getCurrent(), 3.0, 72.0)); + } + + private void fail(String var1) { + this.outcome = var1; + this.failed = (boolean)(((1)) != 0); + } + + private void report() { + String var1 = null; + int var2 = 0; + String var3 = null; + String var5 = null; + int var4 = -1741577498; + + while (true) { + switch (var4) { + case -1741577498: + default: + if (this.outcome == null) { + var4 = 927876887; + } else { + var4 = -458464542; + } + break; + case -772743126: + var5 = this.summary + " - " + this.outcome; + var4 = 1552243709; + break; + case -458464542: + if (this.summary == null) { + var4 = 486213582; + } else { + var4 = -772743126; + } + break; + case 373072785: + ape.displayWarning(var3); + var4 = 689729487; + break; + case 486213582: + var5 = this.outcome; + var4 = 1552243709; + break; + case 689729487: + return; + case 927876887: + this.summary = null; + this.failed = (boolean)(((0)) != 0); + return; + case 1552243709: + var1 = var5; + boolean var7 = this.failed; + this.summary = null; + this.outcome = null; + this.failed = (boolean)(((0)) != 0); + this.notify(var1); + var3 = this.getName() + " - " + var1; + if (var7) { + var4 = 373072785; + } else { + var4 = 1774558238; + } + break; + case 1774558238: + ape.displayInfo(var3); + var4 = 689729487; + } + } + } + + private void notify(String var1) { + le.getInstance().addCustomNotification(rk.glyph(this), this.getName(), var1); + } +} diff --git a/src/main/java/defpackage/sw.java b/src/main/java/defpackage/sw.java new file mode 100644 index 0000000..8e732cb --- /dev/null +++ b/src/main/java/defpackage/sw.java @@ -0,0 +1,49 @@ +package defpackage; + +@rn(name = "Cosmetics", description = "3D cosmetics and custom capes on players", category = rl.COSMETICS) +public final class sw extends rm { + public final ru capeSetting = new ru( + "Custom cape", + (boolean)((((1496276150 ^ -1496276149) + ((1496276150 & -1496276149) << 1)) + ) != 0)) + .description("Show your equipped Evo cape"); + public final ru syncSetting = new ru( + "Online sync", + (boolean)((((-1607391252 ^ 1607391253) + ((-1607391252 & 1607391253) << 1)) + ) != 0)) + .description( + "Sync cosmetics with other Evo users" + ); + public final rv reloadSetting = new rv( + "Reload files", () -> ado.reload(this.capeSetting.isEnabled()) + ) + .description( + "Reload cosmetics from the disk" + ); + public final rv capeButtonSetting = new rv( + "Equip cape", ado::equipCape + ) + .description("Equip the selected cape"); + public final rv demoSetting = new rv("Demo hat", ado::equipDemo) + .description("Equip a demo cosmetic hat"); + public final rv clearSetting = new rv("Clear", ado::clearSelf) + .description("Unequip all cosmetics"); + public final rv folderSetting = new rv("Open folder", ado::openFolder) + .description("Open the cosmetics folder"); + public static final sw INSTANCE = new sw(); + + private sw() { + } + + @Override + public void onEnable() { + adq.getInstance().setEnabled((boolean)((((324547835 | -324547834) + (324547835 & -324547834))) != 0)); + super.onEnable(); + } + + @Override + public void onDisable() { + adq.getInstance().setEnabled((boolean)((((1430297644 ^ -1430297644) + ((1430297644 & -1430297644) << 1))) != 0)); + super.onDisable(); + } +} diff --git a/src/main/java/defpackage/sx.java b/src/main/java/defpackage/sx.java new file mode 100644 index 0000000..99315c0 --- /dev/null +++ b/src/main/java/defpackage/sx.java @@ -0,0 +1,29 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:sx.class */ +/* synthetic */ class sx { + static final /* synthetic */ int[] $SwitchMap$evo$systems$cosmetic$graffiti$GraffitiSession$Status = new int[ahc.values().length]; + + static { + try { + $SwitchMap$evo$systems$cosmetic$graffiti$GraffitiSession$Status[ahc.TOO_FAR.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$cosmetic$graffiti$GraffitiSession$Status[ahc.EMPTY.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$cosmetic$graffiti$GraffitiSession$Status[ahc.COOLDOWN.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$cosmetic$graffiti$GraffitiSession$Status[ahc.READY.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + try { + $SwitchMap$evo$systems$cosmetic$graffiti$GraffitiSession$Status[ahc.NO_TARGET.ordinal()] = 5; + } catch (NoSuchFieldError e5) { + } + } +} diff --git a/src/main/java/defpackage/sy.java b/src/main/java/defpackage/sy.java new file mode 100644 index 0000000..3052e07 --- /dev/null +++ b/src/main/java/defpackage/sy.java @@ -0,0 +1,922 @@ +package defpackage; + +import java.util.List; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; +import org.joml.Vector3f; + +@rn(name = "Graffiti", description = "Hold the key to spray your graffiti onto the block you aim at", category = rl.COSMETICS) +public final class sy extends rm { + public static final sy INSTANCE = new sy(); + private static final float MILLIS_PER_SECOND = 1000.0F; + private static final int STATUS_FONT_SIZE = 7; + private static final int CARD_FONT_SIZE = 7; + private static final float STATUS_GAP = 4.0F; + private static final float STATUS_LINE_GAP = 2.0F; + private static final float CARD_SIZE = 26.0F; + private static final float CARD_GAP = 6.0F; + private static final float CARD_PAD = 4.0F; + private static final float CARD_ROW_BOTTOM = 0.2F; + private static final float CARD_ICON_FIT = 0.78F; + private static final float CARD_LABEL_GAP = 3.0F; + private static final float CARD_IDLE_ALPHA = 0.45F; + private static final float CARD_PLATE_ALPHA = 0.55F; + private static final float HINT_GAP = 5.0F; + private static final float PREVIEW_ALPHA = 0.92F; + private static final float PREVIEW_BLOCKED_FADE = 0.55F; + private static final float SIZE_STEP = 0.05F; + private static final int SELECT_FORWARD = 1; + private static final int SELECT_BACKWARD = -1; + private static final String CHARGE_PREFIX = "x"; + private static final String STATUS_TOO_FAR = "Too far from the block"; + private static final String STATUS_EMPTY = "No charges left"; + private static final String STATUS_COOLDOWN = "Graffiti once every %ds - wait %ds"; + private static final String STATUS_READY = "Release %s to spray"; + private static final String HINT_SELECT = "LMB / scroll - select"; + private static final String HINT_ERASE = "RMB - erase this graffiti"; + private static final String HINT_BUDGET = "%d/%d sprays on this server"; + private static final String KEY_UNBOUND = "the key"; + private static final float SECONDS_PER_HOUR = 3600.0F; + public final sc sprayKey = new sc( + "Spray key", + (-1027087797 ^ 1027087868) + ((-1027087797 & 1027087868) << 1) + ) + .description("Hold to aim, release to spray"); + private final sm size = new sm("Size", 1.0F, 0.25F, 1.0F, 0.05F) + .description( + "Width of the sprayed decal in blocks" + ); + private final sm reach = new sm("Spray reach", 5.0F, 2.0F, 8.0F, 0.5F) + .description( + "How far a block can be and still be sprayed" + ); + private final sm preview = new sm( + "Preview reach", 14.0F, 4.0F, 32.0F, 1.0F + ) + .description( + "How far the aiming preview is projected" + ); + private final sm distance = new sm( + "Render distance", 64.0F, 16.0F, 128.0F, 4.0F + ) + .description("How far placed graffiti stays visible"); + private final sm alpha = new sm("Opacity", 1.0F, 0.1F, 1.0F, 0.05F) + .description( + "Transparency of placed graffiti" + ); + private final sm fade = new sm("Fade in", 0.35F, 0.0F, 2.0F, 0.05F) + .description( + "Seconds the spray takes to settle" + ); + private final sm cooldown = new sm("Cooldown", 30.0F, 0.0F, 120.0F, 1.0F) + .description("Seconds between two sprays"); + private final sm lifetime = new sm( + "Lifetime", 24.0F, 1.0F, 168.0F, 1.0F + ) + .description( + "Hours a fresh graffiti stays on the wall before it fades away" + ); + private final ru sync = new ru( + "Sync with others", + (boolean)((((600142725 ^ -600142724) + ((600142725 & -600142724) << 1)) + ) != 0)) + .description( + "Share your graffiti with Evo users on the same server" + ); + private final ru showOthers = new ru( + "Show others", + (boolean)(((1)) != 0), + this.sync::isEnabled + ) + .description( + "Render graffiti sprayed by other Evo users" + ); + private final ru spraySound = new ru( + "Spray sound", (boolean)((((-75019366 | 75019367) + (-75019366 & 75019367)) + ) != 0)) + .description("Play the spray can when graffiti lands"); + private final ru shareSound = new ru( + "Hear nearby sprays", + (boolean)(((1)) != 0), + () -> { + int var2 = 0; + int var1 = -231157285; + + while (true) { + switch (var1) { + case -1963922133: + return Boolean.valueOf((boolean)((var2) != 0)); + case -918640753: + var2 = 1; + var1 = -1963922133; + break; + case -231157285: + default: + if (this.spraySound.isEnabled()) { + var1 = -61501544; + } else { + var1 = 1439801984; + } + break; + case -61501544: + if (this.sync.isEnabled()) { + var1 = -918640753; + } else { + var1 = 1439801984; + } + break; + case 1439801984: + var2 = 0; + var1 = -1963922133; + } + } + } + ) + .description( + "Play the can when a nearby Evo user sprays" + ); + private final sm hearRadius = new sm( + "Hearing radius", 16.0F, 4.0F, 48.0F, 1.0F, () -> { + int var2 = 0; + int var1 = -1452017679; + + while (true) { + switch (var1) { + case -1631511449: + var2 = 1; + var1 = 2025326215; + break; + case -1452017679: + default: + if (this.spraySound.isEnabled()) { + var1 = 611478232; + } else { + var1 = -988345935; + } + break; + case -988345935: + var2 = 0; + var1 = 2025326215; + break; + case 76576793: + if (this.shareSound.isEnabled()) { + var1 = -1631511449; + } else { + var1 = -988345935; + } + break; + case 611478232: + if (this.sync.isEnabled()) { + var1 = 76576793; + } else { + var1 = -988345935; + } + break; + case 2025326215: + return Boolean.valueOf((boolean)((var2) != 0)); + } + } + } + ) + .description( + "How close another Evo user must be to hear a spray" + ); + private final ru picker = new ru( + "Collection row", + (boolean)((((1467424429 | -1467424428) + (1467424429 & -1467424428)) + ) != 0)) + .description( + "Show your graffiti collection while aiming" + ); + private final ru labels = new ru( + "Status labels", + (boolean)((((482853040 ^ -482853039) + ((482853040 & -482853039) << 1)) + ) != 0)) + .description( + "Show charges and warnings next to the preview" + ); + private final rv refill = new rv( + "Refill charges", + () -> ahh.getInstance().refillAll((488976534 ^ -488976484) + ((488976534 & -488976484) << 1)) + ) + .description( + "Add a pack of charges to every graffiti" + ); + private final rv wipe = new rv( + "Wipe my graffiti", agx::wipeOwn + ) + .description( + "Remove every graffiti you sprayed in this world, for everyone" + ); + private final Vector3f projection = new Vector3f(); + + private sy() { + } + + public static boolean blocksInteraction() { + int var1 = 0; + int var0 = -983208980; + + while (true) { + switch (var0) { + case -983208980: + default: + if (INSTANCE.isEnabled()) { + var0 = 1959232835; + } else { + var0 = 1676880356; + } + break; + case -258033153: + var1 = 1; + var0 = 1861882346; + break; + case 1676880356: + var1 = 0; + var0 = 1861882346; + break; + case 1861882346: + return (boolean)((var1) != 0); + case 1959232835: + if (ahd.getInstance().isHolding()) { + var0 = -258033153; + } else { + var0 = 1676880356; + } + } + } + } + + public boolean sharesSpraySound() { + int var2 = 0; + int var1 = -653211866; + + while (true) { + switch (var1) { + case -1380890250: + var2 = 1; + var1 = 1521372783; + break; + case -653211866: + default: + if (this.spraySound.isEnabled()) { + var1 = 2065448833; + } else { + var1 = -361046672; + } + break; + case -361046672: + var2 = 0; + var1 = 1521372783; + break; + case 1270478732: + if (this.shareSound.isEnabled()) { + var1 = -1380890250; + } else { + var1 = -361046672; + } + break; + case 1521372783: + return (boolean)((var2) != 0); + case 2065448833: + if (this.sync.isEnabled()) { + var1 = 1270478732; + } else { + var1 = -361046672; + } + } + } + } + + public boolean syncs() { + return this.sync.isEnabled(); + } + + public boolean showsOthers() { + int var2 = 0; + int var1 = -109667572; + + while (true) { + switch (var1) { + case -1666998714: + var2 = 1; + var1 = 1638344233; + break; + case -706748010: + if (this.showOthers.isEnabled()) { + var1 = -1666998714; + } else { + var1 = 408007135; + } + break; + case -109667572: + default: + if (this.sync.isEnabled()) { + var1 = -706748010; + } else { + var1 = 408007135; + } + break; + case 408007135: + var2 = 0; + var1 = 1638344233; + break; + case 1638344233: + return (boolean)((var2) != 0); + } + } + } + + public long lifetimeMillis() { + return (long)(this.lifetime.getCurrent() * 3600.0F * 1000.0F); + } + + public double hearRadius() { + return this.hearRadius.getCurrent(); + } + + public float decalSize() { + return ahg.clampSize(this.size.getCurrent()); + } + + public float renderDistance() { + return this.distance.getCurrent(); + } + + public float opacity() { + return this.alpha.getCurrent(); + } + + public float previewOpacity() { + return this.alpha.getCurrent() * 0.92F; + } + + public float previewBlockedFade() { + return 0.55F; + } + + public long fadeMillis() { + return (long)(this.fade.getCurrent() * 1000.0F); + } + + public double previewReach() { + return this.preview.getCurrent(); + } + + public double sprayReach() { + return this.reach.getCurrent(); + } + + public long cooldownMillis() { + return (long)(this.cooldown.getCurrent() * 1000.0F); + } + + @k + public void onKey(er var1) { + int var2 = 0; + ahd var3 = null; + ahg var4 = null; + int var5 = -1984828856; + + while (true) { + switch (var5) { + case -2001866002: + var4 = var3.spray(this.decalSize(), agx.localIdentity(), this.lifetimeMillis()); + if (var4 != null) { + var5 = 1497113060; + } else { + var5 = 1653506474; + } + break; + case -1984828856: + default: + var2 = this.sprayKey.getKeyCode(); + if (var2 != (-1802329090 | 1802329089) + (-1802329090 & 1802329089)) { + var5 = -682077258; + } else { + var5 = -1574904090; + } + break; + case -1574904090: + return; + case -1432715711: + agx.publish(var4); + var5 = 1653506474; + break; + case -1372756170: + if (var3.isHolding()) { + var5 = -2001866002; + } else { + var5 = 1230024310; + } + break; + case -694249647: + return; + case -682077258: + if (!var1.is(var2)) { + var5 = -1574904090; + } else { + var5 = 11160644; + } + break; + case -142215090: + ahe.playSpray(var4.x(), var4.y(), var4.z()); + var5 = 1495569873; + break; + case 11160644: + var3 = ahd.getInstance(); + if (var1.getAction() == (1816725943 ^ -1816725942) + ((1816725943 & -1816725942) << 1)) { + var5 = 198789287; + } else { + var5 = 1820542405; + } + break; + case 198789287: + if (mc.gui.screen() == null) { + var5 = 1031788133; + } else { + var5 = -694249647; + } + break; + case 1031788133: + if (mc.player == null) { + var5 = -694249647; + } else { + var5 = 1437207764; + } + break; + case 1230024310: + return; + case 1437207764: + var3.syncSelectionToEquipped(); + var3.open(); + return; + case 1495569873: + if (this.syncs()) { + var5 = -1432715711; + } else { + var5 = 1653506474; + } + break; + case 1497113060: + ahf.getInstance().add(var4); + if (this.spraySound.isEnabled()) { + var5 = -142215090; + } else { + var5 = 1495569873; + } + break; + case 1653506474: + var3.close(); + var5 = 1230024310; + break; + case 1820542405: + if (var1.getAction() == 0) { + var5 = -1372756170; + } else { + var5 = 1230024310; + } + } + } + } + + @k + public void onScroll(eq var1) { + ahd var2 = ahd.getInstance(); + if (var2.isHolding()) { + var1.setCancelled((boolean)((((-1557435852 | 1557435853) + (-1557435852 & 1557435853))) != 0)); + var2.cycle( + var1.getVertical() > 0.0 + ? -1: (-1425220067 ^ 1425220068) + ((-1425220067 & 1425220068) << 1) + ); + } + } + + @k + public void onMouse(es var1) { + ahd var2 = null; + int var3 = -1393323169; + + while (true) { + switch (var3) { + case -2112703958: + return; + case -1467143610: + return; + case -1406237506: + if (var1.getButton() == (-637629443 | 637629444) + (-637629443 & 637629444)) { + var3 = 178621909; + } else { + var3 = -1467143610; + } + break; + case -1393323169: + default: + if (var1.getAction() != (1958184091 ^ -1958184090) + ((1958184091 & -1958184090) << 1)) { + var3 = -2112703958; + } else { + var3 = 420288209; + } + break; + case -638431425: + return; + case 41340005: + var2.cycle((1581572362 | -1581572361) + (1581572362 & -1581572361)); + return; + case 178621909: + agx.erase(var2.targetTag()); + var3 = -1467143610; + break; + case 420288209: + var2 = ahd.getInstance(); + if (!var2.isHolding()) { + var3 = -638431425; + } else { + var3 = 1126060674; + } + break; + case 1126060674: + if (var1.getButton() == 0) { + var3 = 41340005; + } else { + var3 = -1406237506; + } + } + } + } + + @k + public void onRender(fs var1) { + ahd var2 = null; + aru var3 = null; + mv var4 = null; + int var5 = -118586667; + + while (true) { + switch (var5) { + case -2006952852: + return; + case -1149874161: + this.renderStatus(var3, var4, var2); + var5 = 770302217; + break; + case -118586667: + default: + var2 = ahd.getInstance(); + if (var2.isHolding()) { + var5 = 1966591337; + } else { + var5 = 332357166; + } + break; + case 332357166: + return; + case 662488526: + var3 = var1.getContext(); + var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + if (this.labels.isEnabled()) { + var5 = -1149874161; + } else { + var5 = 770302217; + } + break; + case 770302217: + if (this.picker.isEnabled()) { + var5 = 1908047833; + } else { + var5 = -2006952852; + } + break; + case 1908047833: + this.renderCollection(var3, var4, var2); + var5 = -2006952852; + break; + case 1966591337: + if (mc.player == null) { + var5 = 332357166; + } else { + var5 = 662488526; + } + } + } + } + + private void renderStatus(aru var1, mv var2, ahd var3) { + Vec3 var4 = null; + ge var5 = null; + float var6 = 0.0F; + String var7 = null; + asu var8 = null; + String var9 = null; + asu var11 = null; + int var10 = -1572830934; + + while (true) { + switch (var10) { + case -1572830934: + default: + if (!var3.hasTarget()) { + var10 = 392124347; + } else { + var10 = -380330051; + } + break; + case -1444702890: + if (var3.status() == ahc.READY) { + var10 = 2135748209; + } else { + var10 = 1692445749; + } + break; + case -1269967670: + var5 = gl.BOLD.getFont(7.0F); + var6 = this.projection.y + 4.0F; + var7 = this.statusMessage(var3); + if (var7 != null) { + var10 = -1444702890; + } else { + var10 = 1900733457; + } + break; + case -1228771867: + var6 += var5.height() + 2.0F; + String var10000 = "%d/%d sprays on this server"; + Object[] var10001 = new Object[2]; + var10001[0] = ahf.getInstance().countOwned(agx.localIdentity()); + var10001[1] = 12; + var9 = String.format(var10000, var10001); + var1.drawText(var5, var9, this.projection.x - var5.width(var9) * 0.5F, var6, var2.getGray()); + var10 = 946754553; + break; + case -1008915874: + var8 = var11; + var1.drawText(var5, var7, this.projection.x - var5.width(var7) * 0.5F, var6, var8); + var6 += var5.height() + 2.0F; + var10 = 1900733457; + break; + case -380330051: + var4 = ahb.bottomAnchor(var3.targetX(), var3.targetY(), var3.targetZ(), var3.targetFace(), var3.targetRoll(), this.decalSize()); + if (!aqk.projectToGui(var4, this.projection)) { + var10 = 1743405518; + } else { + var10 = -1269967670; + } + break; + case 296138230: + return; + case 392124347: + return; + case 746295722: + var6 += var5.height() + 2.0F; + var1.drawText( + var5, + "RMB - erase this graffiti", + this.projection.x + - var5.width("RMB - erase this graffiti") * 0.5F, + var6, + var2.getGray() + ); + var10 = 296138230; + break; + case 946754553: + if (var3.targetTag() != null) { + var10 = 746295722; + } else { + var10 = 296138230; + } + break; + case 1692445749: + var11 = asu.RED; + var10 = -1008915874; + break; + case 1743405518: + return; + case 1900733457: + String var13 = "x" + var3.charges(); + var1.drawText(var5, var13, this.projection.x - var5.width(var13) * 0.5F, var6, var2.getWhite()); + if (this.syncs()) { + var10 = -1228771867; + } else { + var10 = 946754553; + } + break; + case 2135748209: + var11 = var2.getWhite(); + var10 = -1008915874; + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private String statusMessage(ahd var1) { + return switch (sx.$SwitchMap$evo$systems$cosmetic$graffiti$GraffitiSession$Status[var1.status().ordinal()]) { + case 1 -> "Too far from the block"; + case 2 -> "No charges left"; + case 3 -> { + String var3 = "Graffiti once every %ds - wait %ds"; + Object[] var4 = new Object[2]; + var4[0] = (long)this.cooldown.getCurrent(); + var4[1] = Mth.ceil((float)var1.remainingCooldown(this.cooldownMillis()) / 1000.0F); + yield String.format(var3, var4); + } + case 4 -> { + String var2 = "Release %s to spray"; + Object[] var10001 = new Object[1]; + var10001[0] = this.keyName(); + yield String.format(var2, var10001); + } + case 5 -> null; + default -> throw new MatchException(null, null); + }; + } + + private String keyName() { + int var1 = 0; + String var2 = null; + String var4 = null; + String var5 = null; + int var3 = 1250002523; + + while (true) { + switch (var3) { + case -1679041953: + return var5; + case -1637393198: + var5 = var2; + var3 = -1679041953; + break; + case -1006343431: + var2 = var4; + if (var2 != null) { + var3 = 425170897; + } else { + var3 = 872555123; + } + break; + case -829131982: + var4 = aqz.getKeyName(var1); + var3 = -1006343431; + break; + case 425170897: + if (var2.isBlank()) { + var3 = 872555123; + } else { + var3 = -1637393198; + } + break; + case 872555123: + var5 = "the key"; + var3 = -1679041953; + break; + case 1250002523: + default: + var1 = this.sprayKey.getKeyCode(); + if (var1 == (1755112488 | -1755112489) + (1755112488 & -1755112489)) { + var3 = 1544144203; + } else { + var3 = -829131982; + } + break; + case 1544144203: + var4 = null; + var3 = -1006343431; + } + } + } + + private void renderCollection(aru var1, mv var2, ahd var3) { + List var4 = null; + ge var5 = null; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + agu var9 = null; + int var10 = 0; + agu var11 = null; + int var12 = 0; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + String var17 = null; + int var19 = 0; + float var20 = 0.0F; + int var18 = 1676641091; + + while (true) { + switch (var18) { + case -2144496271: + var20 = 0.45F; + var18 = -721793163; + break; + case -1881093656: + return; + case -1834178319: + var5 = gl.BOLD.getFont(7.0F); + var6 = var4.size() * 26.0F + (var4.size() - ((70701430 ^ -70701429) + ((70701430 & -70701429) << 1))) * 6.0F; + var7 = (mc.getWindow().getGuiScaledWidth() - var6) * 0.5F; + var8 = mc.getWindow().getGuiScaledHeight() * 0.8F; + var9 = var3.selected(); + var10 = 0; + var18 = -666322418; + break; + case -1820745770: + if (var4.size() > (-1877193902 | 1877193903) + (-1877193902 & 1877193903)) { + var18 = -1331936896; + } else { + var18 = -1881093656; + } + break; + case -1589900899: + var1.drawRoundedRect(var13, var8 + 26.0F - 1.4F, 26.0F, 1.4F, asj.all(oc.HAIRLINE), var2.getColor()); + var18 = 880781159; + break; + case -1331936896: + var1.drawText( + var5, + "LMB / scroll - select", + ( + mc.getWindow().getGuiScaledWidth() + - var5.width("LMB / scroll - select") + ) + * 0.5F, + var8 + 26.0F + 3.0F + var5.height() + 5.0F, + var2.getGray() + ); + var18 = -1881093656; + break; + case -1289104233: + var20 = 1.0F; + var18 = -721793163; + break; + case -721793163: + var14 = var20; + var1.drawRoundedRect(var13, var8, 26.0F, 26.0F, asj.all(oc.CARD), var2.getForegroundColor().mulAlpha(0.55F * var14)); + var15 = 14.039999F; + var16 = (26.0F - var15) * 0.5F; + var1.drawTexture(var11.getTexture(), var13 + var16, var8 + var16, var15, var15, asu.WHITE.mulAlpha(var14)); + if (var12 != 0) { + var18 = -1589900899; + } else { + var18 = 880781159; + } + break; + case -694403375: + var11 = (agu)var4.get(var10); + if (var11 == var9) { + var18 = 1995501029; + } else { + var18 = 1066849834; + } + break; + case -666322418: + if (var10 < var4.size()) { + var18 = -694403375; + } else { + var18 = -1820745770; + } + break; + case 29724627: + return; + case 217879166: + var12 = var19; + var13 = var7 + var10 * 32.0F; + if (var12 != 0) { + var18 = -1289104233; + } else { + var18 = -2144496271; + } + break; + case 880781159: + var17 = "x" + ahh.getInstance().charges(var11.getKey()); + var1.drawText(var5, var17, var13 + (26.0F - var5.width(var17)) * 0.5F, var8 + 26.0F + 3.0F, var2.getWhite().mulAlpha(var14)); + var10++; + var18 = -666322418; + break; + case 1066849834: + var19 = 0; + var18 = 217879166; + break; + case 1676641091: + default: + var4 = agv.all(); + if (var4.isEmpty()) { + var18 = 29724627; + } else { + var18 = -1834178319; + } + break; + case 1995501029: + var19 = 1; + var18 = 217879166; + } + } + } + + @Override + public void onDisable() { + ahd.getInstance().close(); + super.onDisable(); + } +} diff --git a/src/main/java/defpackage/sz.java b/src/main/java/defpackage/sz.java new file mode 100644 index 0000000..c64e6dd --- /dev/null +++ b/src/main/java/defpackage/sz.java @@ -0,0 +1,708 @@ +package defpackage; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.core.component.DataComponents; +import net.minecraft.tags.ItemTags; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; + +@rn(name = "Melee Skins", description = "Animated weapon skins on held swords", category = rl.COSMETICS) +public final class sz extends rm { + public static final sz INSTANCE = new sz(); + public final ru firstPersonSetting = new ru( + "First person", + (boolean)((((-578911222 | 578911223) + (-578911222 & 578911223)) + ) != 0)) + .description( + "Replace the held sword in your own view" + ); + public final ru thirdPersonSetting = new ru( + "Third person", + (boolean)((((-1925147892 ^ 1925147893) + ((-1925147892 & 1925147893) << 1)) + ) != 0)) + .description( + "Replace the held sword on your body model" + ); + public final sc inspectSetting = new sc( + "Inspect", (-1635547540 ^ 1635547612) + ((-1635547540 & 1635547612) << 1) + ) + .description("Play the inspect animation"); + + private sz() { + } + + public static boolean active() { + int var1 = 0; + int var0 = -1129398937; + + while (true) { + switch (var0) { + case -1342113076: + var1 = 0; + var0 = 1521479433; + break; + case -1129398937: + default: + if (INSTANCE.isEnabled()) { + var0 = 507411569; + } else { + var0 = -1342113076; + } + break; + case 507411569: + if (ahv.equipped() != null) { + var0 = 839823313; + } else { + var0 = -1342113076; + } + break; + case 839823313: + var1 = 1; + var0 = 1521479433; + break; + case 1521479433: + return (boolean)((var1) != 0); + } + } + } + + public static boolean appliesTo(ItemStack var0) { + int var2 = 0; + int var1 = 1878421645; + + while (true) { + switch (var1) { + case -1928300109: + if (var0.is(ItemTags.SWORDS)) { + var1 = -67082767; + } else { + var1 = 1990976285; + } + break; + case -1574637847: + return (boolean)((var2) != 0); + case -1208962112: + if (!var0.isEmpty()) { + var1 = -1928300109; + } else { + var1 = 1990976285; + } + break; + case -67082767: + var2 = 1; + var1 = -1574637847; + break; + case 1878421645: + default: + if (var0 != null) { + var1 = -1208962112; + } else { + var1 = 1990976285; + } + break; + case 1990976285: + var2 = 0; + var1 = -1574637847; + } + } + } + + public static boolean holdsSkinnedItem() { + return holdsSkinnedItem(InteractionHand.MAIN_HAND); + } + + public static boolean holdsSkinnedItem(InteractionHand var0) { + Minecraft var1 = null; + int var3 = 0; + int var2 = 1432983935; + + while (true) { + switch (var2) { + case -2080708914: + var3 = 0; + var2 = 945896615; + break; + case 468192868: + if (appliesTo(var1.player.getItemInHand(var0))) { + var2 = 549214131; + } else { + var2 = -2080708914; + } + break; + case 549214131: + var3 = 1; + var2 = 945896615; + break; + case 945896615: + return (boolean)((var3) != 0); + case 1432983935: + default: + var1 = Minecraft.getInstance(); + if (var1.player != null) { + var2 = 468192868; + } else { + var2 = -2080708914; + } + } + } + } + + public static boolean handlesHand(InteractionHand var0) { + int var2 = 0; + int var1 = -1799007205; + + while (true) { + switch (var1) { + case -1799007205: + default: + if (active()) { + var1 = -814046074; + } else { + var1 = 1237548192; + } + break; + case -814046074: + if (holdsSkinnedItem(var0)) { + var1 = 139332233; + } else { + var1 = 1237548192; + } + break; + case 139332233: + var2 = 1; + var1 = 315217799; + break; + case 315217799: + return (boolean)((var2) != 0); + case 1237548192: + var2 = 0; + var1 = 315217799; + } + } + } + + public static boolean handlesAnyHand() { + int var1 = 0; + int var0 = -934571629; + + while (true) { + switch (var0) { + case -1569426689: + if (handlesHand(InteractionHand.OFF_HAND)) { + var0 = 403640027; + } else { + var0 = 1290800137; + } + break; + case -934571629: + default: + if (!handlesHand(InteractionHand.MAIN_HAND)) { + var0 = -1569426689; + } else { + var0 = 403640027; + } + break; + case 403640027: + var1 = 1; + var0 = 1410466542; + break; + case 1290800137: + var1 = 0; + var0 = 1410466542; + break; + case 1410466542: + return (boolean)((var1) != 0); + } + } + } + + public static boolean handlesFirstPerson() { + int var1 = 0; + int var0 = -1284448705; + + while (true) { + switch (var0) { + case -1725244948: + if (handlesAnyHand()) { + var0 = 1103880449; + } else { + var0 = 1535983590; + } + break; + case -1284448705: + default: + if (INSTANCE.firstPersonSetting.isEnabled()) { + var0 = -1725244948; + } else { + var0 = 1535983590; + } + break; + case -1276326217: + return (boolean)((var1) != 0); + case 1103880449: + var1 = 1; + var0 = -1276326217; + break; + case 1535983590: + var1 = 0; + var0 = -1276326217; + } + } + } + + public static boolean handlesThirdPerson() { + int var1 = 0; + int var0 = 1868718761; + + while (true) { + switch (var0) { + case -1739529200: + return (boolean)((var1) != 0); + case -186868964: + if (handlesAnyHand()) { + var0 = 1110933403; + } else { + var0 = 1513450725; + } + break; + case 1110933403: + var1 = 1; + var0 = -1739529200; + break; + case 1513450725: + var1 = 0; + var0 = -1739529200; + break; + case 1868718761: + default: + if (INSTANCE.thirdPersonSetting.isEnabled()) { + var0 = -186868964; + } else { + var0 = 1513450725; + } + } + } + } + + public static boolean rendersFirstPerson(ItemStack var0) { + int var2 = 0; + int var1 = -1187918538; + + while (true) { + switch (var1) { + case -1958638266: + var2 = 1; + var1 = 1783763139; + break; + case -1187918538: + default: + if (INSTANCE.firstPersonSetting.isEnabled()) { + var1 = 1625021080; + } else { + var1 = 845446697; + } + break; + case 845446697: + var2 = 0; + var1 = 1783763139; + break; + case 1625021080: + if (active()) { + var1 = 1997591141; + } else { + var1 = 845446697; + } + break; + case 1783763139: + return (boolean)((var2) != 0); + case 1997591141: + if (appliesTo(var0)) { + var1 = -1958638266; + } else { + var1 = 845446697; + } + } + } + } + + public static boolean hidesEmptyMainHand(AbstractClientPlayer var0, InteractionHand var1, ItemStack var2) { + int var4 = 0; + int var3 = -266751423; + + while (true) { + switch (var3) { + case -1301217173: + var4 = 0; + var3 = 2028537529; + break; + case -1161358169: + var4 = 1; + var3 = 2028537529; + break; + case -1123351914: + if (var1 == InteractionHand.MAIN_HAND) { + var3 = 1871590918; + } else { + var3 = -1301217173; + } + break; + case -266751423: + default: + if (var0 != null) { + var3 = -1123351914; + } else { + var3 = -1301217173; + } + break; + case 1764053743: + if (rendersFirstPerson(var0.getOffhandItem())) { + var3 = -1161358169; + } else { + var3 = -1301217173; + } + break; + case 1871590918: + if (var2 != null) { + var3 = 1962453516; + } else { + var3 = -1301217173; + } + break; + case 1962453516: + if (var2.isEmpty()) { + var3 = 1764053743; + } else { + var3 = -1301217173; + } + break; + case 2028537529: + return (boolean)((var4) != 0); + } + } + } + + public static boolean keepsVanillaPose(ItemStack var0) { + int var2 = 0; + int var1 = -1545308395; + + while (true) { + switch (var1) { + case -1545308395: + default: + if (var0 != null) { + var1 = 1965261135; + } else { + var1 = -702104863; + } + break; + case -702104863: + var2 = 0; + var1 = 1868616407; + break; + case -481401667: + var2 = 1; + var1 = 1868616407; + break; + case 1868616407: + return (boolean)((var2) != 0); + case 1965261135: + if (var0.has(DataComponents.BLOCKS_ATTACKS)) { + var1 = -481401667; + } else { + var1 = -702104863; + } + } + } + } + + public static boolean usesHand(Player var0, InteractionHand var1) { + int var3 = 0; + int var2 = -201763258; + + while (true) { + switch (var2) { + case -2069396392: + if (var0.getUsedItemHand() == var1) { + var2 = -569846262; + } else { + var2 = -1202635022; + } + break; + case -1202635022: + var3 = 0; + var2 = 1383967239; + break; + case -569846262: + var3 = 1; + var2 = 1383967239; + break; + case -201763258: + default: + if (var0 != null) { + var2 = 751395104; + } else { + var2 = -1202635022; + } + break; + case 751395104: + if (var0.isUsingItem()) { + var2 = -2069396392; + } else { + var2 = -1202635022; + } + break; + case 1383967239: + return (boolean)((var3) != 0); + } + } + } + + public static boolean attachesHandItem(AbstractClientPlayer var0, InteractionHand var1, ItemStack var2) { + InteractionHand var3 = null; + InteractionHand var5 = null; + int var6 = 0; + int var4 = 942431351; + + while (true) { + switch (var4) { + case -2129485032: + if (keepsVanillaPose(var2)) { + var4 = -1765472213; + } else { + var4 = -1507196384; + } + break; + case -2082315060: + if (var1 == InteractionHand.MAIN_HAND) { + var4 = -1089259900; + } else { + var4 = -767351312; + } + break; + case -1765472213: + return (boolean)(((0)) != 0); + case -1507196384: + if (INSTANCE.firstPersonSetting.isEnabled()) { + var4 = -1222064993; + } else { + var4 = 673454199; + } + break; + case -1428395612: + return (boolean)((var6) != 0); + case -1222064993: + if (!active()) { + var4 = 673454199; + } else { + var4 = -2082315060; + } + break; + case -1089259900: + var5 = InteractionHand.OFF_HAND; + var4 = 1219769066; + break; + case -767351312: + var5 = InteractionHand.MAIN_HAND; + var4 = 1219769066; + break; + case -91181569: + if (!var2.has(DataComponents.MAP_ID)) { + var4 = -2129485032; + } else { + var4 = -1765472213; + } + break; + case 80510931: + var6 = 0; + var4 = -1428395612; + break; + case 673454199: + return (boolean)(((0)) != 0); + case 942431351: + default: + if (var0 != null) { + var4 = 1040339473; + } else { + var4 = -1765472213; + } + break; + case 1040339473: + if (var2 != null) { + var4 = 1570045731; + } else { + var4 = -1765472213; + } + break; + case 1219769066: + var3 = var5; + if (holdsSkinnedItem(var3)) { + var4 = 1727578667; + } else { + var4 = 80510931; + } + break; + case 1570045731: + if (!var2.isEmpty()) { + var4 = -91181569; + } else { + var4 = -1765472213; + } + break; + case 1727578667: + if (!usesHand(var0, var1)) { + var4 = 2067595711; + } else { + var4 = 80510931; + } + break; + case 2067595711: + var6 = 1; + var4 = -1428395612; + } + } + } + + public static boolean rendersThirdPerson(ItemStack var0) { + int var2 = 0; + int var1 = 1007107747; + + while (true) { + switch (var1) { + case -1027071699: + if (appliesTo(var0)) { + var1 = 1578698740; + } else { + var1 = 632151340; + } + break; + case -1001522795: + if (active()) { + var1 = -1027071699; + } else { + var1 = 632151340; + } + break; + case 568617826: + return (boolean)((var2) != 0); + case 632151340: + var2 = 0; + var1 = 568617826; + break; + case 1007107747: + default: + if (INSTANCE.thirdPersonSetting.isEnabled()) { + var1 = -1001522795; + } else { + var1 = 632151340; + } + break; + case 1578698740: + var2 = 1; + var1 = 568617826; + } + } + } + + @k + public void onUpdate(fl var1) { + int var2 = 0; + int var4 = 0; + int var3 = 1189232011; + + while (true) { + switch (var3) { + case -1477728606: + if (!ahl.offHand().consumeRendered()) { + var3 = 365249012; + } else { + var3 = -1261174397; + } + break; + case -1261174397: + return; + case -1246335365: + if (var2 != 0) { + var3 = 194622215; + } else { + var3 = -1477728606; + } + break; + case -1000118077: + var2 = var4; + if (!ahl.getInstance().consumeRendered()) { + var3 = -1246335365; + } else { + var3 = -1477728606; + } + break; + case -866998539: + var4 = 0; + var3 = -1000118077; + break; + case -235685377: + var4 = 1; + var3 = -1000118077; + break; + case 194622215: + ahl.getInstance().stop(); + var3 = -1477728606; + break; + case 266977230: + if (!handlesThirdPerson()) { + var3 = -235685377; + } else { + var3 = -866998539; + } + break; + case 365249012: + ahl.offHand().stop(); + var3 = -1261174397; + break; + case 1189232011: + default: + if (!handlesFirstPerson()) { + var3 = 266977230; + } else { + var3 = -866998539; + } + } + } + } + + public void onKeyPressed(int var1) { + int var2 = 967998396; + + while (true) { + switch (var2) { + case -845100913: + if (handlesAnyHand()) { + var2 = 340725290; + } else { + var2 = 914570794; + } + break; + case 340725290: + ahl.getInstance().onInspect(); + var2 = 914570794; + break; + case 914570794: + return; + case 967998396: + default: + if (var1 == this.inspectSetting.getKeyCode()) { + var2 = -845100913; + } else { + var2 = 914570794; + } + } + } + } + + @Override + public void onDisable() { + ahl.resetAll(); + super.onDisable(); + } +} diff --git a/src/main/java/defpackage/t.java b/src/main/java/defpackage/t.java new file mode 100644 index 0000000..9e55f08 --- /dev/null +++ b/src/main/java/defpackage/t.java @@ -0,0 +1,54 @@ +package defpackage; + +import java.util.concurrent.atomic.AtomicInteger; +import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.client.rendering.v1.hud.HudElementRegistry; +import net.fabricmc.fabric.api.resource.ResourceManagerHelper; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.Identifier; +import net.minecraft.server.packs.PackType; +import org.joml.Matrix4f; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class t implements ModInitializer { + public static final String MOD_ID = "holdmyitems"; + public static Matrix4f matricesMain = new Matrix4f(); + public static Matrix4f matricesOff = new Matrix4f(); + public static float tickProgress = 0.0F; + public static final Logger LOGGER = LoggerFactory.getLogger("holdmyitems"); + public static Minecraft client = Minecraft.getInstance(); + public static float prevTime = 0.0F; + public static float deltaTime = 0.0F; + + public void onInitialize() { + ClassLoader var1 = this.getClass().getClassLoader(); + System.out.println("Using parent class loader: " + var1); + HudElementRegistry.addLast( + Identifier.fromNamespaceAndPath( + "example", + "hud" + ), + (var0, var1x) -> { + AtomicInteger var2 = new AtomicInteger((-1254152417 | 1254152427) + (-1254152417 & 1254152427)); + af.debugTextRenderer + .get() + .forEach( + var2x -> { + var0.text( + Minecraft.getInstance().font, + var2x, + 10, + var2.get(), + (-977334832 ^ 977334831) + ((-977334832 & 977334831) << 1) + ); + var2.addAndGet((-1902980052 ^ 1902980062) + ((-1902980052 & 1902980062) << 1)); + } + ); + af.debugTextRenderer.clear(); + } + ); + ResourceManagerHelper.get(PackType.CLIENT_RESOURCES).registerReloadListener(new an()); + LOGGER.info("What you staring at?"); + } +} diff --git a/src/main/java/defpackage/ta.java b/src/main/java/defpackage/ta.java new file mode 100644 index 0000000..427db78 --- /dev/null +++ b/src/main/java/defpackage/ta.java @@ -0,0 +1,591 @@ +package defpackage; + +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.network.protocol.game.ServerboundSwingPacket; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.ProjectileUtil; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; + +@rn(name = "PatPat", description = "Aim at a mob with an empty hand and hold the key to pat it", category = rl.COSMETICS) +public final class ta extends rm { + public static final ta INSTANCE = new ta(); + private static final float MILLIS_PER_SECOND = 1000.0F; + private static final float AIM_MARGIN = 0.25F; + private static final float FULL_TICK = 1.0F; + private static final long REPEAT_COOLDOWN_MILLIS = 200L; + private static final double MIN_REACH = 0.5; + private final sc patKey = new sc( + "Pat key", (1690859424 | -1690859338) + (1690859424 & -1690859338) + ) + .description("Hold to pat the mob you are aiming at"); + private final sm duration = new sm("Duration", 0.24F, 0.12F, 0.9F, 0.02F) + .description( + "Seconds a single pat animation lasts" + ); + private final sm size = new sm("Hand size", 0.85F, 0.4F, 1.6F, 0.05F) + .description("Width of the hand in blocks"); + private final sm height = new sm( + "Height offset", 0.11F, -0.5F, 1.0F, 0.01F + ) + .description( + "Extra height of the hand above the name tag anchor" + ); + private final sm weight = new sm("Pat weight", 0.425F, 0.0F, 1.0F, 0.025F) + .description( + "How far the mob is pressed down, in blocks" + ); + private final sm reach = new sm("Reach", 3.5F, 1.5F, 6.0F, 0.5F) + .description( + "How far a mob can be and still be patted" + ); + private final ru players = new ru( + "Pat players", + (boolean)((((609492447 ^ -609492446) + ((609492447 & -609492446) << 1)) + ) != 0)) + .description("Allow patting other players"); + private final ru emptyHand = new ru( + "Empty hand only", + (boolean)((((-856214827 ^ 856214828) + ((-856214827 & 856214828) << 1)) + ) != 0)) + .description("Only pat while the main hand is empty"); + private final ru hideName = new ru( + "Hide name tag", + (boolean)((((388358163 | -388358162) + (388358163 & -388358162)) + ) != 0)) + .description( + "Hide the name tag while the mob is being patted" + ); + private final ru swing = new ru( + "Swing arm", + (boolean)((((1046507283 ^ -1046507282) + ((1046507283 & -1046507282) << 1)) + ) != 0)) + .description("Play your own arm swing on every pat"); + private final ru broadcastSwing = new ru( + "Show swing to others", + (boolean)(((1)) != 0), + this.swing::isEnabled + ) + .description( + "Send the swing to the server so other players see it" + ); + private final ru sound = new ru( + "Sound", (boolean)((((1395135841 | -1395135840) + (1395135841 & -1395135840)) + ) != 0)) + .description("Play the pat sound"); + private final sm volume = new sm( + "Volume", 1.0F, 0.1F, 2.0F, 0.05F, this.sound::isEnabled + ) + .description("Loudness of the pat sound"); + private final ru sync = new ru( + "Sync with others", + (boolean)((((-378962559 | 378962560) + (-378962559 & 378962560)) + ) != 0)) + .description( + "Share your pats with Evo users on the same server" + ); + private final ru showOthers = new ru( + "Show others", + (boolean)(((1)) != 0), + this.sync::isEnabled + ) + .description("Show pats made by other Evo users"); + private final ru hearOthers = new ru( + "Hear nearby pats", + (boolean)(((1)) != 0), + () -> { + int var2 = 0; + int var1 = -1151397375; + + while (true) { + switch (var1) { + case -1151397375: + default: + if (this.sync.isEnabled()) { + var1 = 792521298; + } else { + var1 = 1851821722; + } + break; + case 102907283: + return Boolean.valueOf((boolean)((var2) != 0)); + case 790821379: + var2 = 1; + var1 = 102907283; + break; + case 792521298: + if (this.showOthers.isEnabled()) { + var1 = 1132223365; + } else { + var1 = 1851821722; + } + break; + case 1132223365: + if (this.sound.isEnabled()) { + var1 = 790821379; + } else { + var1 = 1851821722; + } + break; + case 1851821722: + var2 = 0; + var1 = 102907283; + } + } + } + ) + .description( + "Play the pat sound when another Evo user pats nearby" + ); + private final sm radius = new sm( + "Sync radius", + 32.0F, + 8.0F, + 64.0F, + 4.0F, + this.sync::isEnabled + ) + .description( + "How close another Evo user must be to exchange pats" + ); + private long lastPatMillis; + + private ta() { + } + + public long durationMillis() { + return (long)(this.duration.getCurrent() * 1000.0F); + } + + public float patWeight() { + return this.weight.getCurrent(); + } + + public float handScale() { + return this.size.getCurrent(); + } + + public float heightOffset() { + return this.height.getCurrent(); + } + + public boolean hidesNameTag() { + return this.hideName.isEnabled(); + } + + public boolean syncs() { + return this.sync.isEnabled(); + } + + public boolean showsOthers() { + int var2 = 0; + int var1 = -1179094789; + + while (true) { + switch (var1) { + case -1179094789: + default: + if (this.sync.isEnabled()) { + var1 = 1118810231; + } else { + var1 = 1457544037; + } + break; + case 1118810231: + if (this.showOthers.isEnabled()) { + var1 = 1472351659; + } else { + var1 = 1457544037; + } + break; + case 1457544037: + var2 = 0; + var1 = 1795399712; + break; + case 1472351659: + var2 = 1; + var1 = 1795399712; + break; + case 1795399712: + return (boolean)((var2) != 0); + } + } + } + + public boolean hearsOthers() { + int var2 = 0; + int var1 = 1767686911; + + while (true) { + switch (var1) { + case -1238717000: + var2 = 0; + var1 = -1111941343; + break; + case -1111941343: + return (boolean)((var2) != 0); + case -830132366: + if (this.hearOthers.isEnabled()) { + var1 = -48669350; + } else { + var1 = -1238717000; + } + break; + case -48669350: + var2 = 1; + var1 = -1111941343; + break; + case 570483764: + if (this.showsOthers()) { + var1 = -830132366; + } else { + var1 = -1238717000; + } + break; + case 1767686911: + default: + if (this.sound.isEnabled()) { + var1 = 570483764; + } else { + var1 = -1238717000; + } + } + } + } + + public double syncRadius() { + return this.radius.getCurrent(); + } + + public void playPatSound(LivingEntity var1) { + Vec3 var2 = var1.position(); + aip.playPat(var2.x, var2.y + var1.getBbHeight(), var2.z, this.volume.getCurrent()); + } + + @Override + public void onDisable() { + super.onDisable(); + aim.getInstance().clear(); + this.lastPatMillis = (-2158097018216102448L ^ 2158097018216102448L) + ((-2158097018216102448L & 2158097018216102448L) << 1); + } + + @k + public void onUpdate(fl var1) { + int var2 = 0; + long var3 = (-5135387174360432516L | 5135387174360432516L) + (-5135387174360432516L & 5135387174360432516L); + LivingEntity var5 = null; + int var6 = 887131661; + + while (true) { + switch (var6) { + case -1484366274: + return; + case -1142806899: + return; + case -181690911: + var5 = this.aimedEntity(); + if (var5 == null) { + var6 = 1610840773; + } else { + var6 = 1525939879; + } + break; + case 138567285: + if (mc.player != null) { + var6 = 1351219173; + } else { + var6 = 871063852; + } + break; + case 731695049: + var2 = this.patKey.getKeyCode(); + if (var2 != (-1973548339 ^ 1973548338) + ((-1973548339 & 1973548338) << 1)) { + var6 = 1114714653; + } else { + var6 = -1484366274; + } + break; + case 871063852: + return; + case 887131661: + default: + if (this.isEnabled()) { + var6 = 138567285; + } else { + var6 = 871063852; + } + break; + case 1114714653: + if (!aqz.isKeyDown(var2)) { + var6 = -1484366274; + } else { + var6 = 2132815439; + } + break; + case 1301050023: + if (mc.gui.screen() != null) { + var6 = 871063852; + } else { + var6 = 731695049; + } + break; + case 1351219173: + if (mc.level != null) { + var6 = 1301050023; + } else { + var6 = 871063852; + } + break; + case 1525939879: + this.lastPatMillis = var3; + this.pat(var5); + return; + case 1610840773: + return; + case 2132815439: + var3 = System.currentTimeMillis(); + if (var3 - this.lastPatMillis < (5889928009062328733L ^ -5889928009062328533L) + ((5889928009062328733L & -5889928009062328533L) << 1)) { + var6 = -1142806899; + } else { + var6 = -181690911; + } + } + } + } + + private void pat(LivingEntity var1) { + int var2 = -1549889230; + + while (true) { + switch (var2) { + case -1676394587: + mc.player.swing(InteractionHand.MAIN_HAND, (boolean)((((-1058584672 | 1058584672) + (-1058584672 & 1058584672))) != 0)); + if (this.broadcastSwing.isEnabled()) { + var2 = -17342115; + } else { + var2 = 1753529025; + } + break; + case -1549889230: + default: + aim.getInstance().pat(var1); + ain.publish(var1); + if (this.sound.isEnabled()) { + var2 = 1945291003; + } else { + var2 = -450062880; + } + break; + case -1076780130: + if (mc.player.connection != null) { + var2 = -367337912; + } else { + var2 = 1753529025; + } + break; + case -450062880: + if (!this.swing.isEnabled()) { + var2 = -137491338; + } else { + var2 = -1676394587; + } + break; + case -367337912: + mc.player.connection.send(new ServerboundSwingPacket(InteractionHand.MAIN_HAND)); + var2 = 1753529025; + break; + case -137491338: + return; + case -17342115: + if (!mc.player.isSpectator()) { + var2 = -1076780130; + } else { + var2 = 1753529025; + } + break; + case 1753529025: + return; + case 1945291003: + this.playPatSound(var1); + var2 = -450062880; + } + } + } + + private LivingEntity aimedEntity() { + LocalPlayer var1 = null; + double var2 = 0.0; + Vec3 var4 = null; + Vec3 var5 = null; + Vec3 var6 = null; + BlockHitResult var7 = null; + AABB var8 = null; + EntityHitResult var9 = null; + LivingEntity var10 = null; + Entity var11 = null; + int var12 = 116141404; + + while (true) { + switch (var12) { + case -1666520363: + var6 = var7.getLocation(); + var12 = -704388768; + break; + case -1557624846: + var11 = var9.getEntity(); + if (var11 instanceof LivingEntity) { + var12 = -253364834; + } else { + var12 = 466350317; + } + break; + case -1372689501: + return null; + case -722110496: + return var10; + case -704388768: + var8 = var1.getBoundingBox().expandTowards(var5.scale(var2)).inflate(0.25); + var9 = ProjectileUtil.getEntityHitResult(var1, var4, var6, var8, this::isPattable, var4.distanceToSqr(var6)); + if (var9 != null) { + var12 = -1557624846; + } else { + var12 = 466350317; + } + break; + case -253364834: + var10 = (LivingEntity)var11; + var12 = -722110496; + break; + case 116141404: + default: + var1 = mc.player; + if (var1.isDeadOrDying()) { + var12 = 859953699; + } else { + var12 = 1349943156; + } + break; + case 466350317: + return null; + case 745021982: + if (!var1.getMainHandItem().isEmpty()) { + var12 = -1372689501; + } else { + var12 = 914914255; + } + break; + case 859953699: + return null; + case 914914255: + var2 = Math.max(Math.min(this.reach.getCurrent(), var1.entityInteractionRange()), 0.5); + var4 = var1.getEyePosition(1.0F); + var5 = var1.getViewVector(1.0F); + var6 = var4.add(var5.scale(var2)); + var7 = mc.level.clip(new ClipContext(var4, var6, Block.COLLIDER, Fluid.NONE, var1)); + if (var7.getType() != Type.MISS) { + var12 = -1666520363; + } else { + var12 = -704388768; + } + break; + case 1349943156: + if (this.emptyHand.isEnabled()) { + var12 = 745021982; + } else { + var12 = 914914255; + } + } + } + } + + private boolean isPattable(Entity var1) { + LivingEntity var2 = null; + int var4 = 0; + int var3 = -848013138; + + while (true) { + switch (var3) { + case -2078647871: + if (!var2.isInvisible()) { + var3 = 1590244415; + } else { + var3 = -1464107625; + } + break; + case -1887446638: + var2 = (LivingEntity)var1; + if (var1 == mc.player) { + var3 = 790377774; + } else { + var3 = -173380084; + } + break; + case -1464107625: + return (boolean)(((0)) != 0); + case -1134003222: + if (!this.players.isEnabled()) { + var3 = -441134076; + } else { + var3 = -211549810; + } + break; + case -853299655: + return (boolean)((var4) != 0); + case -848013138: + default: + if (var1 instanceof LivingEntity) { + var3 = -1887446638; + } else { + var3 = 790377774; + } + break; + case -441134076: + if (!(var2 instanceof Player)) { + var3 = -211549810; + } else { + var3 = 1405214604; + } + break; + case -211549810: + var4 = 1; + var3 = -853299655; + break; + case -173380084: + if (var2.isAlive()) { + var3 = 1657332295; + } else { + var3 = -1464107625; + } + break; + case 790377774: + return (boolean)(((0)) != 0); + case 1405214604: + var4 = 0; + var3 = -853299655; + break; + case 1590244415: + if (!var2.isPickable()) { + var3 = -1464107625; + } else { + var3 = -1134003222; + } + break; + case 1657332295: + if (!var2.isSpectator()) { + var3 = -2078647871; + } else { + var3 = -1464107625; + } + } + } + } +} diff --git a/src/main/java/defpackage/tb.java b/src/main/java/defpackage/tb.java new file mode 100644 index 0000000..a2dfbaf --- /dev/null +++ b/src/main/java/defpackage/tb.java @@ -0,0 +1,997 @@ +package defpackage; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.Vec3; + +@rn(name = "Camera", description = "Client side camera and tripod - frame a shot, run into it and keep the photo", category = rl.COSMETICS) +public final class tb extends rm { + public static final tb INSTANCE = new tb(); + private static final String SHAPE_SQUARE = "Square"; + private static final String SHAPE_CLASSIC = "Classic"; + private static final String SHAPE_WIDE = "Wide"; + private static final String RESOLUTION_SMALL = "512"; + private static final String RESOLUTION_MEDIUM = "768"; + private static final String RESOLUTION_LARGE = "1080"; + private static final float ASPECT_SQUARE = 1.0F; + private static final float ASPECT_CLASSIC = 1.3333334F; + private static final float ASPECT_WIDE = 1.7777778F; + private static final int HEIGHT_SMALL = 512; + private static final int HEIGHT_MEDIUM = 768; + private static final int HEIGHT_LARGE = 1080; + private static final float SECONDS_PER_HOUR = 3600.0F; + private static final float MILLIS_PER_SECOND = 1000.0F; + private static final int FLUSH_INTERVAL_TICKS = 200; + private static final int MAX_OWNED_FRAMES = 16; + private final sm timer = new sm("Self timer", 5.0F, 0.0F, 20.0F, 1.0F) + .description( + "Seconds between pressing the shutter and the photo being taken" + ); + private final sg shape; + private final sg resolution; + private final sm reach; + private final sm distance; + private final sm lifetime; + private final sm frameSize; + private final sm frameLifetime; + private final ru flash; + private final ru shutterSound; + private final ru beep; + private final ru viewfinder; + private final ru hints; + private final ru sync; + private final ru showOthers; + private final sc galleryKey; + private final rv gallery; + private int flushTicks; + + private tb() { + String var10003 = "Shape"; + String[] var10004 = new String[3]; + var10004[0] = "Square"; + var10004[1] = "Classic"; + var10004[2] = "Wide"; + this.shape = new sg(var10003, var10004) + .describe( + "Square", + "Instant film, 1:1" + ) + .describe( + "Classic", + "Classic photo, 4:3" + ) + .describe( + "Wide", + "Widescreen, 16:9" + ) + .description( + "Shape of the photo the camera crops out of the view" + ); + var10003 = "Resolution"; + var10004 = new String[3]; + var10004[0] = "512"; + var10004[1] = "768"; + var10004[2] = "1080"; + this.resolution = new sg(var10003, var10004) + .description( + "Height in pixels the photo is captured at" + ); + this.reach = new sm("Reach", 4.5F, 2.0F, 8.0F, 0.5F) + .description( + "How far a tripod can be placed or picked up" + ); + this.distance = new sm("Render distance", 48.0F, 16.0F, 128.0F, 4.0F) + .description( + "How far placed tripods stay visible" + ); + this.lifetime = new sm( + "Tripod lifetime", 6.0F, 1.0F, 72.0F, 1.0F + ) + .description( + "Hours a placed tripod stays in the world before it fades away" + ); + this.frameSize = new sm("Frame size", 0.9F, 0.4F, 2.0F, 0.1F) + .description( + "Width of a photo hung on a wall, in blocks" + ); + this.frameLifetime = new sm("Frame lifetime", 24.0F, 1.0F, 168.0F, 1.0F) + .description( + "Hours a hung photo stays on the wall before it fades away" + ); + this.flash = new ru( + "Flash", + (boolean)((((-1341936884 ^ 1341936885) + ((-1341936884 & 1341936885) << 1)) + ) != 0)) + .description( + "Fire a bright flash when the shutter releases" + ); + this.shutterSound = new ru( + "Shutter sound", + (boolean)((((-1954160716 | 1954160717) + (-1954160716 & 1954160717)) + ) != 0)) + .description( + "Play the shutter click when a photo is taken" + ); + this.beep = new ru( + "Timer beep", + (boolean)((((1759232905 ^ -1759232904) + ((1759232905 & -1759232904) << 1)) + ) != 0)) + .description( + "Beep once per second while the self timer counts down" + ); + this.viewfinder = new ru( + "Viewfinder", + (boolean)((((-1832690863 ^ 1832690864) + ((-1832690863 & 1832690864) << 1)) + ) != 0)) + .description( + "Show the framing overlay while aiming the camera" + ); + this.hints = new ru( + "Hints", + (boolean)((((41519114 ^ -41519113) + ((41519114 & -41519113) << 1)) + ) != 0)) + .description( + "Show what the mouse buttons do while holding the camera or the tripod" + ); + this.sync = new ru( + "Sync with others", + (boolean)((((303264308 ^ -303264307) + ((303264308 & -303264307) << 1)) + ) != 0)) + .description( + "Share your tripods and photos with Evo users on the same server" + ); + this.showOthers = new ru( + "Show others", + (boolean)(((1)) != 0), + this.sync::isEnabled + ) + .description( + "Render tripods placed by other Evo users and the photos they hold" + ); + this.galleryKey = new sc( + "Gallery key", (1349326076 | -1349326001) + (1349326076 & -1349326001) + ) + .description("Opens the photo gallery"); + this.gallery = new rv("Open gallery", xp::open) + .description( + "Browse, hold, share and delete the photos you took" + ); + this.resolution.set("768"); + } + + public static boolean blocksInteraction() { + int var1 = 0; + int var0 = -169494697; + + while (true) { + switch (var0) { + case -216517802: + return (boolean)((var1) != 0); + case -208121632: + var1 = 1; + var0 = -216517802; + break; + case -169494697: + default: + if (INSTANCE.isEnabled()) { + var0 = 729881406; + } else { + var0 = 2057253403; + } + break; + case 729881406: + if (!afu.getInstance().isAiming()) { + var0 = 1750011544; + } else { + var0 = -208121632; + } + break; + case 1750011544: + if (afi.getInstance().heldGear() != aff.NONE) { + var0 = -208121632; + } else { + var0 = 2057253403; + } + break; + case 2057253403: + var1 = 0; + var0 = -216517802; + } + } + } + + public int timerSeconds() { + return Math.round(this.timer.getCurrent()); + } + + public float aspect() { + float var2 = 0.0F; + int var1 = 1103439593; + + while (true) { + switch (var1) { + case 326814451: + if (this.shape.is("Wide")) { + var1 = 684815871; + } else { + var1 = 1363468609; + } + break; + case 372035784: + return var2; + case 684815871: + var2 = 1.7777778F; + var1 = 372035784; + break; + case 931043265: + return 1.3333334F; + case 1103439593: + default: + if (this.shape.is("Classic")) { + var1 = 931043265; + } else { + var1 = 326814451; + } + break; + case 1363468609: + var2 = 1.0F; + var1 = 372035784; + } + } + } + + public int photoHeight() { + int var2 = 0; + int var1 = -340638066; + + while (true) { + switch (var1) { + case -1505819964: + return var2; + case -1155610211: + var2 = 768; + var1 = -1505819964; + break; + case -1124878494: + return 512; + case -861368545: + if (this.resolution.is("1080")) { + var1 = -685126789; + } else { + var1 = -1155610211; + } + break; + case -685126789: + var2 = 1080; + var1 = -1505819964; + break; + case -340638066: + default: + if (this.resolution.is("512")) { + var1 = -1124878494; + } else { + var1 = -861368545; + } + } + } + } + + public double reach() { + return this.reach.getCurrent(); + } + + public float renderDistance() { + return this.distance.getCurrent(); + } + + public float frameSize() { + return aga.clampSize(this.frameSize.getCurrent()); + } + + public int maxFrames() { + return 16; + } + + public long frameLifetimeMillis() { + return (long)(this.frameLifetime.getCurrent() * 3600.0F * 1000.0F); + } + + public long tripodLifetimeMillis() { + return (long)(this.lifetime.getCurrent() * 3600.0F * 1000.0F); + } + + public boolean flashes() { + return this.flash.isEnabled(); + } + + public boolean beeps() { + return this.beep.isEnabled(); + } + + public boolean showsViewfinder() { + return this.viewfinder.isEnabled(); + } + + public boolean showsHints() { + return this.hints.isEnabled(); + } + + public boolean syncs() { + return this.sync.isEnabled(); + } + + public boolean showsOthers() { + int var2 = 0; + int var1 = 34857730; + + while (true) { + switch (var1) { + case -1775425500: + return (boolean)((var2) != 0); + case -1438864575: + var2 = 1; + var1 = -1775425500; + break; + case -746994531: + var2 = 0; + var1 = -1775425500; + break; + case 18014442: + if (this.showOthers.isEnabled()) { + var1 = -1438864575; + } else { + var1 = -746994531; + } + break; + case 34857730: + default: + if (this.sync.isEnabled()) { + var1 = 18014442; + } else { + var1 = -746994531; + } + } + } + } + + @Override + public void onEnable() { + super.onEnable(); + age.getInstance().load(); + } + + @Override + public void onDisable() { + afu.getInstance().reset(); + afi.getInstance().clear(); + super.onDisable(); + } + + @k + public void onUpdate(fl var1) { + long var2 = (-1777821291727601167L | 1777821291727601167L) + (-1777821291727601167L & 1777821291727601167L); + int var4 = -1571584305; + + while (true) { + switch (var4) { + case -1571584305: + default: + afi.getInstance().update((boolean)((((-917052564 ^ 917052565) + ((-917052564 & 917052565) << 1))) != 0)); + afu.getInstance().tick(this); + afy.getInstance().tick(); + var2 = System.currentTimeMillis(); + agk.getInstance().prune(var2); + agc.getInstance().prune(var2); + if ((this.flushTicks += (536981098 ^ -536981097) + ((536981098 & -536981097) << 1)) + >= (347301906 ^ -347301706) + ((347301906 & -347301706) << 1)) { + var4 = 852959046; + } else { + var4 = 1876757862; + } + break; + case 852959046: + this.flushTicks = 0; + agk.getInstance().flush(); + agc.getInstance().flush(); + var4 = 1876757862; + break; + case 1876757862: + return; + } + } + } + + @k + public void onKey(er var1) { + int var2 = 0; + int var3 = 670010923; + + while (true) { + switch (var3) { + case -1947540479: + xp.open(); + var3 = -1400124462; + break; + case -1400124462: + return; + case -1099079178: + if (mc.gui.screen() == null) { + var3 = -1947540479; + } else { + var3 = -1400124462; + } + break; + case 573103687: + return; + case 670010923: + default: + if (var1.getAction() != (-42138620 ^ 42138621) + ((-42138620 & 42138621) << 1)) { + var3 = 573103687; + } else { + var3 = 1917238584; + } + break; + case 1912806633: + if (var1.is(var2)) { + var3 = -1099079178; + } else { + var3 = -1400124462; + } + break; + case 1917238584: + var2 = this.galleryKey.getKeyCode(); + if (var2 != (446565529 | -446565530) + (446565529 & -446565530)) { + var3 = 1912806633; + } else { + var3 = -1400124462; + } + } + } + } + + @k + public void onMouse(es var1) { + afu var2 = null; + aff var3 = null; + int var4 = 1504184888; + + while (true) { + switch (var4) { + case -2022693400: + if (var1.getButton() == 0) { + var4 = -888148323; + } else { + var4 = 2135756780; + } + break; + case -2013549473: + return; + case -1900237938: + var2 = afu.getInstance(); + var3 = afi.getInstance().heldGear(); + if (var1.getButton() == (-433665708 | 433665709) + (-433665708 & 433665709)) { + var4 = -1116162330; + } else { + var4 = -2022693400; + } + break; + case -1116162330: + this.onUse(var2, var3); + return; + case -1110009611: + if (mc.gui.screen() != null) { + var4 = -2013549473; + } else { + var4 = -1900237938; + } + break; + case -888148323: + this.onAttack(var2, var3); + var4 = 2135756780; + break; + case -486234284: + if (mc.player != null) { + var4 = -1110009611; + } else { + var4 = -2013549473; + } + break; + case 1504184888: + default: + if (var1.getAction() == (623655069 | -623655068) + (623655069 & -623655068)) { + var4 = -486234284; + } else { + var4 = -2013549473; + } + break; + case 2135756780: + return; + } + } + } + + private void onUse(afu var1, aff var2) { + int var3 = -776233760; + + while (true) { + switch (var3) { + case -2004106557: + if (var2 == aff.CAMERA) { + var3 = 317186773; + } else { + var3 = -1990340472; + } + break; + case -1990340472: + if (var2 == aff.TRIPOD) { + var3 = 2117819678; + } else { + var3 = 1455525547; + } + break; + case -776233760: + default: + if (var1.isAiming()) { + var3 = 513467599; + } else { + var3 = 729583645; + } + break; + case -278442386: + return; + case -175083000: + return; + case 317186773: + var1.openAiming(var1.aimedTripod()); + return; + case 513467599: + this.publishAim(var1.closeAiming()); + return; + case 668112028: + this.placeFrame(var1); + var3 = -175083000; + break; + case 729583645: + if (var1.isCountingDown()) { + var3 = -278442386; + } else { + var3 = -2004106557; + } + break; + case 1455525547: + if (var2 == aff.PHOTO) { + var3 = 668112028; + } else { + var3 = -175083000; + } + break; + case 2117819678: + this.placeTripod(var1); + return; + } + } + } + + private void onAttack(afu var1, aff var2) { + int var3 = 2011022795; + + while (true) { + switch (var3) { + case -1540584719: + if (var1.isCountingDown()) { + var3 = -1053694808; + } else { + var3 = -1136487525; + } + break; + case -1266432813: + this.removeFrame(var1.aimedFrame()); + var3 = 1767992444; + break; + case -1136487525: + if (var2 == aff.TRIPOD) { + var3 = -547909649; + } else { + var3 = -896828685; + } + break; + case -1053694808: + var1.reset(); + return; + case -896828685: + if (var2 == aff.PHOTO) { + var3 = 648660785; + } else { + var3 = 1767992444; + } + break; + case -547909649: + if (var1.aimedTripod() != null) { + var3 = 1714791009; + } else { + var3 = -896828685; + } + break; + case 648660785: + if (var1.aimedFrame() != null) { + var3 = -1266432813; + } else { + var3 = 1767992444; + } + break; + case 691305849: + this.release(var1); + return; + case 1714791009: + this.removeTripod(var1.aimedTripod()); + return; + case 1767992444: + return; + case 2011022795: + default: + if (var1.isAiming()) { + var3 = 691305849; + } else { + var3 = -1540584719; + } + } + } + } + + private void placeFrame(afu var1) { + String var2 = null; + long var3 = (7485380494418164009L | -7485380494418164009L) + (7485380494418164009L & -7485380494418164009L); + aga var5 = null; + int var6 = 1923728247; + + while (true) { + switch (var6) { + case -1667809698: + var2 = afi.getInstance().photoId(); + if (var2 == null) { + var6 = 331470566; + } else { + var6 = -1410886045; + } + break; + case -1410886045: + var3 = System.currentTimeMillis(); + var5 = new aga( + aga.faceKey(var1.frameAnchor(), var1.frameFace()), + afu.dimensionKey(), + var1.frameAnchor(), + var1.frameFace(), + var1.frameRoll(), + this.frameSize(), + var2, + afu.localIdentity(), + var3, + var3 + this.frameLifetimeMillis() + ); + agc.getInstance().add(var5); + if (this.syncs()) { + var6 = 1386417778; + } else { + var6 = 2055406494; + } + break; + case 331470566: + return; + case 1089323361: + return; + case 1321341926: + if (var1.frameAnchor() == null) { + var6 = 1089323361; + } else { + var6 = -1667809698; + } + break; + case 1386417778: + afp.publishFrame(var5); + afp.publishPhotoById(var2); + var6 = 2055406494; + break; + case 1923728247: + default: + if (var1.framePlacement() == aft.READY) { + var6 = 1321341926; + } else { + var6 = 1089323361; + } + break; + case 2055406494: + return; + } + } + } + + private void removeFrame(aga var1) { + int var2 = 150136789; + + while (true) { + switch (var2) { + case -1665037368: + return; + case -1310944802: + return; + case 133975052: + afp.eraseFrame(var1); + var2 = -1665037368; + break; + case 150136789: + default: + if (!var1.owner().equals(afu.localIdentity())) { + var2 = -1310944802; + } else { + var2 = 1176565963; + } + break; + case 1176565963: + agc.getInstance().remove(var1.dimension(), var1.key()); + if (this.syncs()) { + var2 = 133975052; + } else { + var2 = -1665037368; + } + } + } + } + + private void release(afu var1) { + int var2 = 0; + agh var3 = null; + int var4 = 1321042709; + + while (true) { + switch (var4) { + case -1574528339: + this.publishAim(var1.startCountdown(var2)); + return; + case 1321042709: + default: + var2 = this.timerSeconds(); + if (var2 <= 0) { + var4 = 1845919695; + } else { + var4 = -1574528339; + } + break; + case 1845919695: + var3 = var1.closeAiming(); + this.publishAim(var3); + this.fireShutter(var3); + return; + } + } + } + + private void publishAim(agh var1) { + int var2 = -192544780; + + while (true) { + switch (var2) { + case -1007209144: + afp.publishTripod(var1); + var2 = 1210928594; + break; + case -192544780: + default: + if (var1 != null) { + var2 = 1997300320; + } else { + var2 = 1210928594; + } + break; + case 1210928594: + return; + case 1997300320: + if (this.syncs()) { + var2 = 2055160398; + } else { + var2 = 1210928594; + } + break; + case 2055160398: + if (var1.owner().equals(afu.localIdentity())) { + var2 = -1007209144; + } else { + var2 = 1210928594; + } + } + } + } + + public void fireShutter(agh var1) { + agg var2 = null; + int var3 = 0; + Vec3 var4 = null; + agg var6 = null; + Vec3 var7 = null; + int var5 = 378793905; + + while (true) { + switch (var5) { + case -1476831629: + var4 = var7; + if (this.flashes()) { + var5 = 1086037269; + } else { + var5 = -1346304833; + } + break; + case -1346304833: + if (this.shutterSound.isEnabled()) { + var5 = -169606195; + } else { + var5 = 1513309936; + } + break; + case -528206813: + if (var1 == null) { + var5 = 238900020; + } else { + var5 = 1566126734; + } + break; + case -523601253: + var6 = var1.viewpoint(); + var5 = 2079339278; + break; + case -410538776: + var6 = null; + var5 = 2079339278; + break; + case -169606195: + afv.playShutter(var4.x, var4.y, var4.z); + var5 = 1513309936; + break; + case 238900020: + var7 = mc.player.position(); + var5 = -1476831629; + break; + case 378793905: + default: + if (var1 == null) { + var5 = -410538776; + } else { + var5 = -523601253; + } + break; + case 1086037269: + afr.triggerFlash(); + var5 = -1346304833; + break; + case 1402864868: + return; + case 1513309936: + return; + case 1566126734: + var7 = var1.headPosition(); + var5 = -1476831629; + break; + case 2079339278: + var2 = var6; + boolean var9 = afy.getInstance().request(var2, this.photoHeight(), this.aspect(), afu.localIdentity(), this::onPhotoTaken); + if (!var9) { + var5 = 1402864868; + } else { + var5 = -528206813; + } + } + } + } + + private void onPhotoTaken(afx var1) { + int var2 = 64233292; + + while (true) { + switch (var2) { + case -619192525: + afi.getInstance().setPhoto(var1.id()); + if (this.syncs()) { + var2 = -75652748; + } else { + var2 = -286858609; + } + break; + case -286858609: + return; + case -75652748: + afp.publishPhoto(var1); + var2 = -286858609; + break; + case 64233292: + default: + if (var1 == null) { + var2 = 1306332257; + } else { + var2 = -619192525; + } + break; + case 1306332257: + return; + } + } + } + + private void placeTripod(afu var1) { + BlockPos var2 = null; + long var3 = (-4669952798422473351L | 4669952798422473351L) + (-4669952798422473351L & 4669952798422473351L); + agh var5 = null; + int var6 = -117233403; + + while (true) { + switch (var6) { + case -1805441767: + return; + case -117233403: + default: + if (var1.placement() == aft.READY) { + var6 = 619841653; + } else { + var6 = 851055419; + } + break; + case 254824803: + afp.publishTripod(var5); + var6 = -1805441767; + break; + case 619841653: + if (var1.placementAnchor() == null) { + var6 = 851055419; + } else { + var6 = 853310255; + } + break; + case 851055419: + return; + case 853310255: + var2 = var1.placementAnchor(); + var3 = System.currentTimeMillis(); + var5 = new agh( + agh.stationKey(var2), afu.dimensionKey(), var2, mc.player.getYRot(), 0.0F, afu.localIdentity(), var3, var3 + this.tripodLifetimeMillis() + ); + agk.getInstance().add(var5); + if (this.syncs()) { + var6 = 254824803; + } else { + var6 = -1805441767; + } + } + } + } + + private void removeTripod(agh var1) { + int var2 = -840187237; + + while (true) { + switch (var2) { + case -1962994882: + return; + case -1150535927: + if (var1.owner().equals(afu.localIdentity())) { + var2 = 1599685458; + } else { + var2 = -1962994882; + } + break; + case -840187237: + default: + agk.getInstance().remove(var1.dimension(), var1.key()); + if (this.syncs()) { + var2 = -1150535927; + } else { + var2 = -1962994882; + } + break; + case 1599685458: + afp.eraseTripod(var1); + var2 = -1962994882; + } + } + } + + @k + public void onRender(fs var1) { + afr.render(this, var1.getContext()); + } +} diff --git a/src/main/java/defpackage/tc.java b/src/main/java/defpackage/tc.java new file mode 100644 index 0000000..672a525 --- /dev/null +++ b/src/main/java/defpackage/tc.java @@ -0,0 +1,316 @@ +package defpackage; + +@rn(name = "Skin Wheel", description = "Raise a wrist dial to spin through skins and swap with a flash", category = rl.COSMETICS) +public final class tc extends rm { + public static final tc INSTANCE = new tc(); + private static final float OPEN_VOLUME = 0.5F; + private static final float CLOSE_VOLUME = 0.45F; + private static final float SCROLL_VOLUME = 0.6F; + private static final float CONFIRM_VOLUME = 0.55F; + private static final float NEUTRAL_PITCH = 1.0F; + private static final float SCROLL_PITCH_UP = 1.06F; + private static final float SCROLL_PITCH_DOWN = 0.94F; + private static final int LABEL_SIZE = 10; + private static final float LABEL_PADDING_X = 6.0F; + private static final float LABEL_PADDING_Y = 3.5F; + private static final float LABEL_HEIGHT_FRACTION = 0.6F; + private static final float LABEL_BACKDROP_ALPHA = 0.45F; + public final sc openSetting = new sc( + "Open", (-1999893382 | 1999893464) + (-1999893382 & 1999893464) + ) + .description("Raise the wrist dial"); + public final ru soundSetting = new ru( + "Sounds", (boolean)((((592135206 ^ -592135205) + ((592135206 & -592135205) << 1)) + ) != 0)) + .description( + "Play dial clicks and the swap chime" + ); + public final ru labelSetting = new ru( + "Name label", (boolean)((((802494969 ^ -802494968) + ((802494969 & -802494968) << 1)) + ) != 0)) + .description( + "Show the highlighted skin name on screen" + ); + + private tc() { + aiy.getInstance().setListener(this::onSlam); + } + + private void onSlam() { + aiy var1 = aiy.getInstance(); + this.sound("watch.arm_close", 0.5F, 1.0F); + this.sound( + var1.selectedSkin() == null + ? "watch.detransform" + : "watch.transform", + 0.55F, + 1.0F + ); + } + + public static boolean rendersHands() { + int var1 = 0; + int var0 = -95059272; + + while (true) { + switch (var0) { + case -95059272: + default: + if (INSTANCE.isEnabled()) { + var0 = -40757083; + } else { + var0 = 570746437; + } + break; + case -40757083: + if (aiy.getInstance().isActive()) { + var0 = 1569777028; + } else { + var0 = 570746437; + } + break; + case 570746437: + var1 = 0; + var0 = 1918025625; + break; + case 1569777028: + var1 = 1; + var0 = 1918025625; + break; + case 1918025625: + return (boolean)((var1) != 0); + } + } + } + + public static boolean blocksInteraction() { + int var1 = 0; + int var0 = 1296896562; + + while (true) { + switch (var0) { + case -1976530986: + if (aiy.getInstance().blocksInteraction()) { + var0 = -823868359; + } else { + var0 = 610293036; + } + break; + case -823868359: + var1 = 1; + var0 = 1516471719; + break; + case 610293036: + var1 = 0; + var0 = 1516471719; + break; + case 1296896562: + default: + if (INSTANCE.isEnabled()) { + var0 = -1976530986; + } else { + var0 = 610293036; + } + break; + case 1516471719: + return (boolean)((var1) != 0); + } + } + } + + @k + public void onKey(er var1) { + if (var1.getAction() == (474515909 ^ -474515908) + ((474515909 & -474515908) << 1) && mc.gui.screen() == null && mc.player != null) { + if (var1.is(this.openSetting.getKeyCode()) && this.openSetting.getKeyCode() != (792827821 | -792827822) + (792827821 & -792827822)) { + aiy var2 = aiy.getInstance(); + int var3 = !var2.acceptsInput() ? 1: 0; + var2.toggle(); + this.sound( + var3 != 0 + ? "watch.arm_open" + : "watch.arm_close", + var3 != 0 ? 0.5F : 0.45F, + 1.0F + ); + this.sound( + var3 != 0 + ? "watch.activate" + : "watch.deactivate", + var3 != 0 ? 0.5F : 0.45F, + 1.0F + ); + } + } + } + + @k + public void onScroll(eq var1) { + aiy var2 = aiy.getInstance(); + if (var2.acceptsInput()) { + var1.setCancelled((boolean)((((-309858460 | 309858461) + (-309858460 & 309858461))) != 0)); + if (var2.scroll(var1.getVertical()) && this.soundSetting.isEnabled()) { + aiz.playCycle(0.6F, var1.getVertical() > 0.0 ? 1.06F : 0.94F); + } + } + } + + @k + public void onMouse(es var1) { + aiy var2 = null; + int var3 = 2077929257; + + while (true) { + switch (var3) { + case -1959103215: + var2 = aiy.getInstance(); + if (!var2.acceptsInput()) { + var3 = -658829713; + } else { + var3 = -1425016524; + } + break; + case -1425016524: + if (var1.getButton() == 0) { + var3 = -441221616; + } else { + var3 = 437828715; + } + break; + case -1363569975: + if (mc.gui.screen() != null) { + var3 = 1433643417; + } else { + var3 = -1959103215; + } + break; + case -658829713: + return; + case -441221616: + if (var2.confirm()) { + var3 = 263697540; + } else { + var3 = -861966; + } + break; + case -861966: + return; + case 263697540: + this.sound("watch.arm_open", 0.5F, 1.0F); + var3 = -861966; + break; + case 437828715: + if (var1.getButton() == (-152271288 ^ 152271289) + ((-152271288 & 152271289) << 1)) { + var3 = 1807104605; + } else { + var3 = -861966; + } + break; + case 1433643417: + return; + case 1807104605: + var2.close(); + this.sound("watch.arm_close", 0.45F, 1.0F); + this.sound("watch.deactivate", 0.45F, 1.0F); + var3 = -861966; + break; + case 2077929257: + default: + if (var1.getAction() == (2076814919 | -2076814918) + (2076814919 & -2076814918)) { + var3 = -1363569975; + } else { + var3 = 1433643417; + } + } + } + } + + @k + public void onUpdate(fl var1) { + aiy.getInstance().update(); + } + + @k + public void onRender(fs var1) { + aiy var2 = null; + float var3 = 0.0F; + mv var4 = null; + aru var5 = null; + ge var6 = null; + String var7 = null; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = -42262172; + + while (true) { + switch (var14) { + case -2088622226: + return; + case -1537550086: + var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + var5 = var1.getContext(); + var6 = gl.BOLD.getFont(10.0F); + var7 = var2.selectedLabel(); + var8 = var6.width(var7); + var9 = var6.height(); + var10 = var8 + 12.0F; + var11 = var9 + 7.0F; + var12 = (mc.getWindow().getGuiScaledWidth() - var10) / 2.0F; + var13 = mc.getWindow().getGuiScaledHeight() * 0.6F; + var5.drawRoundedRect(var12, var13, var10, var11, asj.all(oc.INNER), asu.BLACK.mulAlpha(0.45F * var3)); + var5.drawText(var6, var7, var12 + 6.0F, var13 + 3.5F, var4.getWhite().mulAlpha(var3)); + return; + case -442400108: + var2 = aiy.getInstance(); + var3 = var2.openAmount(); + if (var3 <= 0.0F) { + var14 = 707634929; + } else { + var14 = -1537550086; + } + break; + case -42262172: + default: + if (!this.labelSetting.isEnabled()) { + var14 = -2088622226; + } else { + var14 = -442400108; + } + break; + case 707634929: + return; + } + } + } + + @Override + public void onDisable() { + aiy.getInstance().reset(); + super.onDisable(); + } + + private void sound(String var1, float var2, float var3) { + int var4 = 1597161765; + + while (true) { + switch (var4) { + case -1055538952: + return; + case -114975814: + aiz.play(var1, var2, var3); + var4 = -1055538952; + break; + case 1597161765: + default: + if (this.soundSetting.isEnabled()) { + var4 = -114975814; + } else { + var4 = -1055538952; + } + } + } + } +} diff --git a/src/main/java/defpackage/td.java b/src/main/java/defpackage/td.java new file mode 100644 index 0000000..b4d0f0f --- /dev/null +++ b/src/main/java/defpackage/td.java @@ -0,0 +1,13 @@ +package defpackage; + +@rn(name = "AutoSprint", category = rl.MISC, description = "Keeps the sprint key held so you sprint whenever the game allows it") +public final class td extends rm { + public static final td INSTANCE = new td(); + + private td() { + } + + public boolean holdsSprint() { + return this.isEnabled(); + } +} diff --git a/src/main/java/defpackage/te.java b/src/main/java/defpackage/te.java new file mode 100644 index 0000000..c19b039 --- /dev/null +++ b/src/main/java/defpackage/te.java @@ -0,0 +1,66 @@ +package defpackage; + +@rn(name = "Discord RPC", category = rl.MISC, description = "Shows what you are playing on your Discord profile") +public final class te extends rm { + public static final te INSTANCE = new te(); + private final ru showServer = new ru( + "Show Server", + (boolean)((((-266257628 ^ 266257629) + ((-266257628 & 266257629) << 1)) + ) != 0)) + .description( + "Show the address of the server you are playing on" + ); + private final ru showWorld = new ru( + "Show World", + (boolean)((((912731273 | -912731272) + (912731273 & -912731272)) + ) != 0)) + .description( + "Show the world name and the dimension you are in" + ); + private final ru showHead = new ru( + "Skin Head", + (boolean)((((-1448010873 ^ 1448010874) + ((-1448010873 & 1448010874) << 1)) + ) != 0)) + .description( + "Show the head of your skin next to the client icon" + ); + private final ru showElapsed = new ru( + "Elapsed Time", + (boolean)((((-1045302070 ^ 1045302071) + ((-1045302070 & 1045302071) << 1)) + ) != 0)) + .description( + "Show how long the session has been running" + ); + + private te() { + super.setToggled((boolean)((((-239713148 ^ 239713149) + ((-239713148 & 239713149) << 1))) != 0)); + } + + public boolean showsServer() { + return this.showServer.isEnabled(); + } + + public boolean showsWorld() { + return this.showWorld.isEnabled(); + } + + public boolean showsHead() { + return this.showHead.isEnabled(); + } + + public boolean showsElapsed() { + return this.showElapsed.isEnabled(); + } + + @Override + public void onEnable() { + super.onEnable(); + ej.getInstance().start(); + } + + @Override + public void onDisable() { + super.onDisable(); + ej.getInstance().stop(); + } +} diff --git a/src/main/java/defpackage/tf.java b/src/main/java/defpackage/tf.java new file mode 100644 index 0000000..d95e327 --- /dev/null +++ b/src/main/java/defpackage/tf.java @@ -0,0 +1,607 @@ +package defpackage; + +import java.util.Iterator; +import java.util.List; +import java.util.Optional; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.component.DataComponents; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntitySelector; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.AttackRange; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; + +@rn(name = "HitFix", category = rl.COMBAT, description = "Makes attacks land on the hitbox you actually see instead of the one a tick ahead") +public final class tf extends rm { + public static final tf INSTANCE = new tf(); + private static final String RAYCAST_FAILURE = "hitfix targeting raycast failed"; + private static final float TICK_BOUNDARY = 1.0F; + private static final double SEARCH_PADDING = 1.0; + private static final double NO_MARGIN = 0.0; + private static final double ZERO_DISTANCE = 0.0; + public final ru frameAccurate = new ru( + "Frame accurate", + (boolean)((((-1125020256 | 1125020257) + (-1125020256 & 1125020257)) + ) != 0)) + .description( + "Resolve the attack on the frame you clicked on instead of the tick boundary" + ); + public final ru smoothTargets = new ru( + "Smooth targets", + (boolean)((((65745576 ^ -65745575) + ((65745576 & -65745575) << 1)) + ) != 0)) + .description( + "Aim at the interpolated hitbox that is drawn instead of the raw tick position" + ); + private float lastFramePartial = 1.0F; + + private tf() { + super.setToggled((boolean)((((-727565888 ^ 727565889) + ((-727565888 & 727565889) << 1))) != 0)); + } + + public float renderPartial() { + return this.lastFramePartial; + } + + public HitResult raycast(LocalPlayer var1, Entity var2, float var3) { + if (var3 < 1.0F) { + this.lastFramePartial = var3; + } + + if (!this.isEnabled()) { + return null; + } + + float var4 = this.resolvePartial(var3); + if (var4 == var3 && !this.smoothTargets.isEnabled()) { + return null; + } + + try { + return this.resolveHit(var1, var2, var4); + } catch (RuntimeException var6) { + id.warn( + Cif.MODULE, + "hitfix targeting raycast failed", + var6 + ); + return null; + } + } + + private float resolvePartial(float var1) { + int var2 = -1016477584; + + while (true) { + switch (var2) { + case -1016477584: + default: + if (!(var1 < 1.0F)) { + var2 = 1031336553; + } else { + var2 = 1020659790; + } + break; + case -443274429: + return this.lastFramePartial; + case 1020659790: + return var1; + case 1031336553: + if (!this.frameAccurate.isEnabled()) { + var2 = 1020659790; + } else { + var2 = -443274429; + } + } + } + } + + private HitResult resolveHit(LocalPlayer var1, Entity var2, float var3) { + ItemStack var4 = null; + AttackRange var5 = null; + double var6 = 0.0; + HitResult var8 = null; + int var9 = 863872252; + + while (true) { + switch (var9) { + case -1804599509: + var8 = this.sweepAttackRange(var2, var5, var3); + if (var8 instanceof BlockHitResult) { + var9 = 2004723459; + } else { + var9 = 481322067; + } + break; + case -1466130552: + if (var8.getType() == Type.MISS) { + var9 = 1405622255; + } else { + var9 = 127660039; + } + break; + case 127660039: + return var8; + case 481322067: + if (var8 != null) { + var9 = -1466130552; + } else { + var9 = 1405622255; + } + break; + case 863872252: + default: + var4 = var1.getActiveItem(); + var5 = (AttackRange)var4.get(DataComponents.ATTACK_RANGE); + var6 = var1.blockInteractionRange(); + var8 = null; + if (var5 != null) { + var9 = -1804599509; + } else { + var9 = 481322067; + } + break; + case 1405622255: + var8 = this.pick(var2, var6, var1.entityInteractionRange(), var3); + var9 = 127660039; + break; + case 2004723459: + var8 = this.clampToRange(var8, var2.getEyePosition(var3), var6); + var9 = 481322067; + } + } + } + + private HitResult pick(Entity var1, double var2, double var4, float var6) { + double var7 = 0.0; + double var9 = 0.0; + Vec3 var11 = null; + HitResult var12 = null; + double var13 = 0.0; + Vec3 var15 = null; + Vec3 var16 = null; + AABB var17 = null; + EntityHitResult var18 = null; + HitResult var20 = null; + int var19 = 1242994868; + + while (true) { + switch (var19) { + case -1903169318: + var15 = var1.getViewVector(var6); + var16 = var11.add(var15.x * var7, var15.y * var7, var15.z * var7); + var17 = var1.getBoundingBox().expandTowards(var15.scale(var7)).inflate(1.0, 1.0, 1.0); + var18 = this.pickEntity(var1, var11, var16, var17, var9, var6); + if (var18 != null) { + var19 = -442891641; + } else { + var19 = -309345100; + } + break; + case -1022459457: + var20 = this.clampToRange(var18, var11, var4); + var19 = 448672813; + break; + case -442891641: + if (var18.getLocation().distanceToSqr(var11) < var13) { + var19 = -1022459457; + } else { + var19 = -309345100; + } + break; + case -309345100: + var20 = this.clampToRange(var12, var11, var2); + var19 = 448672813; + break; + case 448672813: + return var20; + case 1141478572: + var9 = var13; + var7 = Math.sqrt(var13); + var19 = -1903169318; + break; + case 1242994868: + default: + var7 = Math.max(var2, var4); + var9 = Mth.square(var7); + var11 = var1.getEyePosition(var6); + var12 = var1.pick(var7, var6, (boolean)((((-177382209 | 177382209) + (-177382209 & 177382209))) != 0)); + var13 = var12.getLocation().distanceToSqr(var11); + if (var12.getType() != Type.MISS) { + var19 = 1141478572; + } else { + var19 = -1903169318; + } + } + } + } + + private EntityHitResult pickEntity(Entity var1, Vec3 var2, Vec3 var3, AABB var4, double var5, float var7) { + Level var8 = null; + double var9 = 0.0; + Entity var11 = null; + Vec3 var12 = null; + Iterator var13 = null; + Entity var14 = null; + AABB var15 = null; + Optional var16 = null; + Vec3 var17 = null; + double var18 = 0.0; + EntityHitResult var21 = null; + int var20 = 652499504; + + while (true) { + switch (var20) { + case -2078142615: + if (var14.canBePickedFromInside()) { + var20 = -1789105568; + } else { + var20 = 1364838891; + } + break; + case -2034739770: + return var21; + case -1789105568: + var11 = var14; + var12 = var16.orElse(var2); + var9 = 0.0; + var20 = 1364838891; + break; + case -610211487: + if (var13.hasNext()) { + var20 = -525984328; + } else { + var20 = 396286055; + } + break; + case -604644868: + if (var16.isPresent()) { + var20 = 1774245505; + } else { + var20 = 1364838891; + } + break; + case -525984328: + var14 = (Entity)var13.next(); + var15 = this.renderBox(var14, var7).inflate(var14.getPickRadius()); + var16 = var15.clip(var2, var3); + if (var15.contains(var2)) { + var20 = 814856296; + } else { + var20 = -604644868; + } + break; + case 25446240: + var11 = var14; + var12 = var17; + var20 = 1364838891; + break; + case 74379097: + if (var9 == 0.0) { + var20 = 25446240; + } else { + var20 = 1364838891; + } + break; + case 396286055: + if (var11 == null) { + var20 = 1458221809; + } else { + var20 = 1436620736; + } + break; + case 652499504: + default: + var8 = var1.level(); + var9 = var5; + var11 = null; + var12 = null; + var13 = var8.getEntities(var1, var4, EntitySelector.CAN_BE_PICKED).iterator(); + var20 = -610211487; + break; + case 720071398: + if (var9 == 0.0) { + var20 = 1714967775; + } else { + var20 = 1364838891; + } + break; + case 814856296: + if (var9 >= 0.0) { + var20 = -2078142615; + } else { + var20 = 1364838891; + } + break; + case 1050772923: + var11 = var14; + var12 = var17; + var9 = var18; + var20 = 1364838891; + break; + case 1364838891: + var20 = -610211487; + break; + case 1436620736: + var21 = new EntityHitResult(var11, var12); + var20 = -2034739770; + break; + case 1458221809: + var21 = null; + var20 = -2034739770; + break; + case 1714967775: + if (var14.getRootVehicle() == var1.getRootVehicle()) { + var20 = 74379097; + } else { + var20 = 1050772923; + } + break; + case 1774245505: + var17 = (Vec3)var16.get(); + var18 = var2.distanceToSqr(var17); + if (!(var18 < var9)) { + var20 = 720071398; + } else { + var20 = 1714967775; + } + } + } + } + + private HitResult sweepAttackRange(Entity var1, AttackRange var2, float var3) { + Level var4 = null; + Vec3 var5 = null; + Vec3 var6 = null; + Vec3 var7 = null; + double var8 = 0.0; + Vec3 var10 = null; + BlockHitResult var11 = null; + float var12 = 0.0F; + AABB var13 = null; + List var14 = null; + EntityHitResult var15 = null; + double var16 = 0.0; + Iterator var18 = null; + Entity var19 = null; + EntityHitResult var20 = null; + double var21 = 0.0; + Object var24 = null; + int var23 = 1642110695; + + while (true) { + switch (var23) { + case -1935608048: + var12 = var2.hitboxMargin(); + var13 = AABB.ofSize(var7, var12, var12, var12).expandTowards(var10.subtract(var7)).inflate(1.0); + var14 = var4.getEntities(var1, var13, EntitySelector.CAN_BE_PICKED); + var15 = null; + var16 = Double.MAX_VALUE; + var18 = var14.iterator(); + var23 = -843710272; + break; + case -1142705048: + if (var15 != null) { + var23 = 1904213709; + } else { + var23 = -787672613; + } + break; + case -1096872209: + var19 = (Entity)var18.next(); + var20 = this.sweepEntity(var1, var19, var7, var10, var12, var3); + if (var20 == null) { + var23 = 854613744; + } else { + var23 = -349928643; + } + break; + case -949213969: + return var11; + case -843710272: + if (var18.hasNext()) { + var23 = -1096872209; + } else { + var23 = -1142705048; + } + break; + case -787672613: + var24 = var11; + var23 = 599005824; + break; + case -349928643: + var21 = var6.distanceToSqr(var20.getLocation()); + if (var21 < var16) { + var23 = 76847595; + } else { + var23 = 1453671326; + } + break; + case 76847595: + var16 = var21; + var15 = var20; + var23 = 1453671326; + break; + case 599005824: + return (HitResult)var24; + case 854613744: + var23 = -843710272; + break; + case 1409808714: + var10 = var11.getLocation(); + if (var6.distanceToSqr(var10) < var6.distanceToSqr(var7)) { + var23 = -949213969; + } else { + var23 = -1935608048; + } + break; + case 1453671326: + var23 = -843710272; + break; + case 1642110695: + default: + var4 = var1.level(); + var5 = var1.getViewVector(var3); + var6 = var1.getEyePosition(var3); + var7 = var6.add(var5.scale(var2.effectiveMinRange(var1))); + var8 = var1.getKnownMovement().dot(var5); + var10 = var6.add(var5.scale(var2.effectiveMaxRange(var1) + Math.max(0.0, var8))); + var11 = var4.clipIncludingBorder(new ClipContext(var6, var10, Block.OUTLINE, Fluid.NONE, var1)); + if (var11.getType() != Type.MISS) { + var23 = 1409808714; + } else { + var23 = -1935608048; + } + break; + case 1904213709: + var24 = var15; + var23 = 599005824; + } + } + } + + private EntityHitResult sweepEntity(Entity var1, Entity var2, Vec3 var3, Vec3 var4, float var5, float var6) { + AABB var7 = null; + Optional var8 = null; + Optional var9 = null; + Vec3 var10 = null; + Vec3 var11 = null; + BlockHitResult var12 = null; + Optional var13 = null; + int var14 = -1643872642; + + while (true) { + switch (var14) { + case -1998940837: + var13 = var7.clip(var10, var11); + return var13.map(var1x -> new EntityHitResult(var2, var1x)).orElse(null); + case -1643872642: + default: + var7 = this.renderBox(var2, var6); + if (var7.contains(var3)) { + var14 = 827124549; + } else { + var14 = 1915708135; + } + break; + case -767526297: + var9 = var7.inflate(var5).clip(var3, var4); + if (var9.isEmpty()) { + var14 = -472540249; + } else { + var14 = 1549860663; + } + break; + case -725978450: + if (var5 <= 0.0) { + var14 = 1106356774; + } else { + var14 = -767526297; + } + break; + case -472540249: + return null; + case -111969855: + return new EntityHitResult(var2, (Vec3)var8.get()); + case 827124549: + return new EntityHitResult(var2, var3); + case 1106356774: + return null; + case 1452229458: + var11 = var12.getLocation(); + var14 = -1998940837; + break; + case 1549860663: + var10 = (Vec3)var9.get(); + var11 = var7.getCenter(); + var12 = var1.level().clipIncludingBorder(new ClipContext(var10, var11, Block.OUTLINE, Fluid.NONE, var1)); + if (var12.getType() != Type.MISS) { + var14 = 1452229458; + } else { + var14 = -1998940837; + } + break; + case 1915708135: + var8 = var7.clip(var3, var4); + if (var8.isPresent()) { + var14 = -111969855; + } else { + var14 = -725978450; + } + } + } + } + + public AABB renderBox(Entity var1, float var2) { + AABB var3 = null; + double var4 = 0.0; + double var6 = 0.0; + double var8 = 0.0; + int var10 = -2084856902; + + while (true) { + switch (var10) { + case -2084856902: + default: + var3 = var1.getBoundingBox(); + if (this.smoothTargets.isEnabled()) { + var10 = -648396934; + } else { + var10 = 611542235; + } + break; + case -648396934: + if (var2 >= 1.0F) { + var10 = 611542235; + } else { + var10 = -353110069; + } + break; + case -353110069: + var4 = Mth.lerp(var2, var1.xOld, var1.getX()) - var1.getX(); + var6 = Mth.lerp(var2, var1.yOld, var1.getY()) - var1.getY(); + var8 = Mth.lerp(var2, var1.zOld, var1.getZ()) - var1.getZ(); + return var3.move(var4, var6, var8); + case 611542235: + return var3; + } + } + } + + private HitResult clampToRange(HitResult var1, Vec3 var2, double var3) { + Vec3 var5 = null; + Direction var6 = null; + int var7 = -436922492; + + while (true) { + switch (var7) { + case -1766259390: + return var1; + case -436922492: + default: + var5 = var1.getLocation(); + if (var5.closerThan(var2, var3)) { + var7 = -1766259390; + } else { + var7 = 1699843181; + } + break; + case 1699843181: + var6 = Direction.getApproximateNearest(var5.x - var2.x, var5.y - var2.y, var5.z - var2.z); + return BlockHitResult.miss(var5, var6, BlockPos.containing(var5)); + } + } + } +} diff --git a/src/main/java/defpackage/tg.java b/src/main/java/defpackage/tg.java new file mode 100644 index 0000000..d10609c --- /dev/null +++ b/src/main/java/defpackage/tg.java @@ -0,0 +1,336 @@ +package defpackage; + +import java.util.List; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; +import net.minecraft.client.gui.screens.inventory.InventoryScreen; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ChestMenu; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.inventory.ShulkerBoxMenu; + +@rn(name = "InventorySort", category = rl.MISC, description = "Sorts your inventory from the inventory screen using a preset") +public final class tg extends rm { + public static final tg INSTANCE = new tg(); + private static final String NOTIFY_TITLE = "Inventory Sort"; + private static final String NOTIFY_BLOCKED = "hotbar is full"; + private final rv editorSetting = new rv("Open Menu", tg::openEditor) + .description( + "Configure the preset that decides how items are arranged" + ); + private final ru inventoryButton = new ru( + "Inventory Button", + "Show the sort button in your inventory", + (boolean)((((-1612298207 | 1612298208) + (-1612298207 & 1612298208)) + ) != 0)); + private final ru containerButton = new ru( + "Container Button", + "Show the sort button in chests and shulker boxes", + (boolean)((((125919610 ^ -125919609) + ((125919610 & -125919609) << 1)) + ) != 0)); + private final sm clicksPerTick = new sm("Clicks Per Tick", 6.0F, 1.0F, 20.0F, 1.0F) + .description( + "How many slot interactions are sent per tick while sorting" + ); + private final sn presetSetting = new sn("Preset") + .description( + "Sorting preset applied when you press the sort button" + ); + + private tg() { + } + + @Override + public void onDisable() { + hm.INSTANCE.cancel(); + super.onDisable(); + } + + public hy preset() { + return this.presetSetting.getPreset(); + } + + public boolean isSorting() { + return hm.INSTANCE.isBusy(); + } + + public static void openEditor() { + mc.gui.setScreen(new xu(mc.gui.screen())); + } + + public boolean canSort(AbstractContainerScreen var1) { + AbstractContainerMenu var2 = null; + int var4 = 0; + int var5 = 0; + int var3 = -1118378421; + + while (true) { + switch (var3) { + case -1980870918: + return (boolean)((var5) != 0); + case -1874894539: + if (this.inventoryButton.isEnabled()) { + var3 = 1241346732; + } else { + var3 = -1768950888; + } + break; + case -1768950888: + var4 = 0; + var3 = -816940802; + break; + case -1316278870: + if (this.containerButton.isEnabled()) { + var3 = -267636847; + } else { + var3 = 2082159468; + } + break; + case -1300027178: + if (var1 instanceof CreativeModeInventoryScreen) { + var3 = 1582794021; + } else { + var3 = 1563682779; + } + break; + case -1118378421: + default: + if (mc.player != null) { + var3 = 1113691859; + } else { + var3 = 1582794021; + } + break; + case -816940802: + return (boolean)((var4) != 0); + case -267636847: + if (isSupportedContainer(var2)) { + var3 = 625022826; + } else { + var3 = 2082159468; + } + break; + case -231602850: + if (var1 instanceof InventoryScreen) { + var3 = -1874894539; + } else { + var3 = -1316278870; + } + break; + case 625022826: + var5 = 1; + var3 = -1980870918; + break; + case 708252195: + var4 = 1; + var3 = -816940802; + break; + case 1113691859: + if (mc.gameMode != null) { + var3 = -1300027178; + } else { + var3 = 1582794021; + } + break; + case 1241346732: + if (var2 instanceof InventoryMenu) { + var3 = 708252195; + } else { + var3 = -1768950888; + } + break; + case 1563682779: + var2 = var1.getMenu(); + if (var2 == null) { + var3 = 2113682682; + } else { + var3 = -231602850; + } + break; + case 1582794021: + return (boolean)(((0)) != 0); + case 2082159468: + var5 = 0; + var3 = -1980870918; + break; + case 2113682682: + return (boolean)(((0)) != 0); + } + } + } + + public boolean sortsContainer(AbstractContainerScreen var1) { + int var3 = 0; + int var2 = -1437521189; + + while (true) { + switch (var2) { + case -1882176254: + var3 = 0; + var2 = 687489639; + break; + case -1437521189: + default: + if (!(var1 instanceof InventoryScreen)) { + var2 = 1987474491; + } else { + var2 = -1882176254; + } + break; + case 687489639: + return (boolean)((var3) != 0); + case 1987474491: + var3 = 1; + var2 = 687489639; + } + } + } + + public void sort(AbstractContainerScreen var1, boolean var2) { + AbstractContainerMenu var3 = null; + hy var4 = null; + int var5 = 0; + ia var6 = null; + List var7 = null; + int var9 = 0; + ia var10 = null; + int var8 = 1622243369; + + while (true) { + switch (var8) { + case -2088487054: + var9 = 0; + var8 = 489906045; + break; + case -1991141743: + var10 = ia.container(var3); + var8 = -1058889704; + break; + case -1911904164: + var3 = var1.getMenu(); + var4 = this.preset(); + if (this.sortsContainer(var1)) { + var8 = -759245553; + } else { + var8 = -2088487054; + } + break; + case -1483198484: + var9 = 1; + var8 = 489906045; + break; + case -1058889704: + var6 = var10; + if (!var6.isUsable()) { + var8 = 312502266; + } else { + var8 = 411153141; + } + break; + case -759245553: + if (!var2) { + var8 = -1483198484; + } else { + var8 = -2088487054; + } + break; + case -713230639: + var10 = ia.playerInventory(var3, var4); + var8 = -1058889704; + break; + case -607690477: + if (!this.isSorting()) { + var8 = 1183595088; + } else { + var8 = 1415349860; + } + break; + case -347278062: + if (!this.canSort(var1)) { + var8 = 1415349860; + } else { + var8 = -1911904164; + } + break; + case -211068663: + if (mc.gameMode != null) { + var8 = -347278062; + } else { + var8 = 1415349860; + } + break; + case 312502266: + bz.getInstance() + .getNotifyManager() + .addCustomNotification( + rl.MISC.getIcon(), + "Inventory Sort", + "hotbar is full" + ); + return; + case 411153141: + var7 = hn.plan(var3, var6, var4); + hm.INSTANCE.submit(var3.containerId, var7, (int)this.clicksPerTick.getCurrent()); + return; + case 489906045: + var5 = var9; + if (var5 != 0) { + var8 = -1991141743; + } else { + var8 = -713230639; + } + break; + case 1183595088: + if (mc.player != null) { + var8 = -211068663; + } else { + var8 = 1415349860; + } + break; + case 1415349860: + return; + case 1622243369: + default: + if (this.isEnabled()) { + var8 = -607690477; + } else { + var8 = 1415349860; + } + } + } + } + + private static boolean isSupportedContainer(AbstractContainerMenu var0) { + int var2 = 0; + int var1 = 659477622; + + while (true) { + switch (var1) { + case -1746698082: + if (var0 instanceof ShulkerBoxMenu) { + var1 = -578532206; + } else { + var1 = 896219982; + } + break; + case -578532206: + var2 = 1; + var1 = -364766321; + break; + case -364766321: + return (boolean)((var2) != 0); + case 659477622: + default: + if (!(var0 instanceof ChestMenu)) { + var1 = -1746698082; + } else { + var1 = -578532206; + } + break; + case 896219982: + var2 = 0; + var1 = -364766321; + } + } + } +} diff --git a/src/main/java/defpackage/th.java b/src/main/java/defpackage/th.java new file mode 100644 index 0000000..d8cd265 --- /dev/null +++ b/src/main/java/defpackage/th.java @@ -0,0 +1,612 @@ +package defpackage; + +import it.unimi.dsi.fastutil.ints.IntOpenHashSet; +import java.util.List; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.inventory.Slot; + +@rn(name = "ItemScroller", category = rl.MISC, description = "Moves items between inventories with the scroll wheel and mouse drags") +public final class th extends rm { + public static final th INSTANCE = new th(); + private static final double NO_SCROLL = 0.0; + private final ru single = new ru( + "Single", + "Scroll over a slot to move one item", + (boolean)((((-817774854 ^ 817774855) + ((-817774854 & 817774855) << 1)) + ) != 0)); + private final ru stacks = new ru( + "Stacks", + "Shift + scroll moves the whole stack", + (boolean)((((-392723962 | 392723963) + (-392723962 & 392723963)) + ) != 0)); + private final ru matching = new ru( + "Matching", + "Ctrl + scroll moves every matching stack", + (boolean)((((-2057614656 ^ 2057614657) + ((-2057614656 & 2057614657) << 1)) + ) != 0)); + private final ru everything = new ru( + "Everything", + "Ctrl + Shift + scroll moves every stack", + (boolean)((((-1641391391 ^ 1641391392) + ((-1641391391 & 1641391392) << 1)) + ) != 0)); + private final ru dragMove = new ru( + "Drag Move", + "Hold Shift and drag across slots to move them", + (boolean)((((-922390290 | 922390291) + (-922390290 & 922390291)) + ) != 0)); + private final ru playerInventory = new ru( + "Player Inventory", + "Also work inside your own inventory screen", + (boolean)((((-1264554645 ^ 1264554646) + ((-1264554645 & 1264554646) << 1)) + ) != 0)); + private final sm clicksPerTick = new sm("Clicks Per Tick", 8.0F, 1.0F, 20.0F, 1.0F) + .description( + "How many slot interactions are sent per tick while moving items" + ); + private final IntOpenHashSet draggedSlots = new IntOpenHashSet(); + private ho dragMode; + + private th() { + } + + @Override + public void onDisable() { + this.endDrag(); + super.onDisable(); + } + + public boolean onScroll(AbstractContainerScreen var1, double var2, double var4, double var6) { + if (var6 != 0.0 && this.canUse(var1)) { + ho var8 = this.scrollMode(); + if (var8 == null) { + return (boolean)(((0)) != 0); + } + + Slot var9 = this.hoveredSlot(var1, var2, var4); + return (boolean)(((var9 != null + && this.submit( + var1, + var9, + var8, + (boolean)(((var6 > 0.0 + ? 1: (-252599376 ^ 252599376) + ((-252599376 & 252599376) << 1)) + ) != 0)) + ? 1: (-1356321096 | 1356321096) + (-1356321096 & 1356321096))) != 0); + } else { + return (boolean)(((0)) != 0); + } + } + + public boolean onDragStart(AbstractContainerScreen var1, double var2, double var4, int var6, boolean var7) { + ho var8 = null; + Slot var9 = null; + int var10 = -694126213; + + while (true) { + switch (var10) { + case -2008458438: + var9 = this.hoveredSlot(var1, var2, var4); + if (var9 != null) { + var10 = -1497218741; + } else { + var10 = -1769969273; + } + break; + case -1769969273: + return (boolean)(((0)) != 0); + case -1497218741: + if (!hq.isMovable(var1.getMenu(), var9)) { + var10 = -1769969273; + } else { + var10 = -608291404; + } + break; + case -1303918197: + var8 = this.dragModeFor(var6); + if (var8 == null) { + var10 = 2145482524; + } else { + var10 = -2008458438; + } + break; + case -867858667: + if (!this.canUse(var1)) { + var10 = -461382158; + } else { + var10 = -1303918197; + } + break; + case -694126213: + default: + this.endDrag(); + if (this.dragMove.isEnabled()) { + var10 = 233164626; + } else { + var10 = -461382158; + } + break; + case -608291404: + this.dragMode = var8; + this.draggedSlots.add(var9.index); + if (var8 == ho.STACK) { + var10 = 330081355; + } else { + var10 = -571728733; + } + break; + case -571728733: + this.submit(var1, var9, var8, (boolean)((((1030490186 | -1030490185) + (1030490186 & -1030490185))) != 0)); + return (boolean)(((1)) != 0); + case -461382158: + return (boolean)(((0)) != 0); + case 233164626: + if (var7) { + var10 = -867858667; + } else { + var10 = -461382158; + } + break; + case 330081355: + return (boolean)(((0)) != 0); + case 2145482524: + return (boolean)(((0)) != 0); + } + } + } + + public boolean onDrag(AbstractContainerScreen var1, double var2, double var4) { + Slot var6 = null; + int var7 = -68644373; + + while (true) { + switch (var7) { + case -1994240132: + this.draggedSlots.add(var6.index); + var7 = -1516914983; + break; + case -1516914983: + return (boolean)(((1)) != 0); + case -756660026: + if (!this.canUse(var1)) { + var7 = 1439524027; + } else { + var7 = 1131047148; + } + break; + case -130983381: + if (this.submit(var1, var6, this.dragMode, (boolean)((((-30446798 ^ 30446799) + ((-30446798 & 30446799) << 1))) != 0))) { + var7 = -1994240132; + } else { + var7 = -1516914983; + } + break; + case -68644373: + default: + if (this.dragMode == null) { + var7 = 181415635; + } else { + var7 = -756660026; + } + break; + case 181415635: + return (boolean)(((0)) != 0); + case 1131047148: + var6 = this.hoveredSlot(var1, var2, var4); + if (var6 != null) { + var7 = 1553408876; + } else { + var7 = -1516914983; + } + break; + case 1439524027: + this.endDrag(); + return (boolean)(((0)) != 0); + case 1553408876: + if (!this.draggedSlots.contains(var6.index)) { + var7 = -130983381; + } else { + var7 = -1516914983; + } + } + } + } + + public void endDrag() { + this.dragMode = null; + this.draggedSlots.clear(); + } + + private boolean submit(AbstractContainerScreen var1, Slot var2, ho var3, boolean var4) { + AbstractContainerMenu var5 = null; + List var6 = null; + int var8 = 0; + int var7 = -1159286414; + + while (true) { + switch (var7) { + case -1668341439: + var8 = 0; + var7 = 2066333286; + break; + case -1159286414: + default: + var5 = var1.getMenu(); + var6 = hq.plan(var5, var2, var3, var4, mc.player); + if (!var6.isEmpty()) { + var7 = 1560881866; + } else { + var7 = -1668341439; + } + break; + case -590344257: + var8 = 1; + var7 = 2066333286; + break; + case 1560881866: + if (hm.INSTANCE.submit(var5.containerId, var6, (int)this.clicksPerTick.getCurrent())) { + var7 = -590344257; + } else { + var7 = -1668341439; + } + break; + case 2066333286: + return (boolean)((var8) != 0); + } + } + } + + private ho scrollMode() { + int var1 = 0; + int var2 = 0; + ho var4 = null; + ho var5 = null; + ho var6 = null; + ho var7 = null; + int var3 = 207186721; + + while (true) { + switch (var3) { + case -1935924556: + var7 = null; + var3 = 101830378; + break; + case -1886398540: + if (this.matching.isEnabled()) { + var3 = 1794897141; + } else { + var3 = -1740170477; + } + break; + case -1740170477: + var5 = null; + var3 = 1701846933; + break; + case -556949704: + if (this.stacks.isEnabled()) { + var3 = 147069568; + } else { + var3 = 174305005; + } + break; + case -425809089: + return var6; + case -341470994: + if (var1 != 0) { + var3 = 599600203; + } else { + var3 = 718113750; + } + break; + case 101830378: + return var7; + case 147069568: + var6 = ho.STACK; + var3 = -425809089; + break; + case 174305005: + var6 = null; + var3 = -425809089; + break; + case 207186721: + default: + var1 = (isShiftDown()) ? 1 : 0; + var2 = (isControlDown()) ? 1 : 0; + if (var2 != 0) { + var3 = -341470994; + } else { + var3 = 718113750; + } + break; + case 251848198: + var7 = ho.SINGLE; + var3 = 101830378; + break; + case 512636840: + var4 = null; + var3 = 1007736189; + break; + case 599600203: + if (this.everything.isEnabled()) { + var3 = 1475950781; + } else { + var3 = 512636840; + } + break; + case 718113750: + if (var2 != 0) { + var3 = -1886398540; + } else { + var3 = 1530232869; + } + break; + case 851208669: + if (this.single.isEnabled()) { + var3 = 251848198; + } else { + var3 = -1935924556; + } + break; + case 1007736189: + return var4; + case 1475950781: + var4 = ho.EVERYTHING; + var3 = 1007736189; + break; + case 1530232869: + if (var1 != 0) { + var3 = -556949704; + } else { + var3 = 851208669; + } + break; + case 1701846933: + return var5; + case 1794897141: + var5 = ho.MATCHING; + var3 = 1701846933; + } + } + } + + private ho dragModeFor(int var1) { + ho var3 = null; + ho var4 = null; + int var2 = 106370793; + + while (true) { + switch (var2) { + case -1921994382: + return var4; + case -1217427547: + if (this.single.isEnabled()) { + var2 = -1028841677; + } else { + var2 = 1618322814; + } + break; + case -1028841677: + var4 = ho.SINGLE; + var2 = -1921994382; + break; + case -92051303: + return null; + case 66892350: + var3 = ho.STACK; + var2 = 1476693908; + break; + case 106370793: + default: + if (var1 == 0) { + var2 = 280145032; + } else { + var2 = 401758429; + } + break; + case 280145032: + if (this.stacks.isEnabled()) { + var2 = 66892350; + } else { + var2 = 1490152460; + } + break; + case 401758429: + if (var1 == (774237956 ^ -774237955) + ((774237956 & -774237955) << 1)) { + var2 = -1217427547; + } else { + var2 = -92051303; + } + break; + case 1476693908: + return var3; + case 1490152460: + var3 = null; + var2 = 1476693908; + break; + case 1618322814: + var4 = null; + var2 = -1921994382; + } + } + } + + private boolean canUse(AbstractContainerScreen var1) { + AbstractContainerMenu var2 = null; + int var4 = 0; + int var3 = 1537338269; + + while (true) { + switch (var3) { + case -2091345905: + var4 = 0; + var3 = -625720952; + break; + case -1710929231: + return (boolean)(((0)) != 0); + case -1695258830: + if (this.playerInventory.isEnabled()) { + var3 = -1112636623; + } else { + var3 = -2091345905; + } + break; + case -1112636623: + var4 = 1; + var3 = -625720952; + break; + case -868802208: + return (boolean)(((0)) != 0); + case -625720952: + return (boolean)((var4) != 0); + case 90618184: + if (var2 instanceof InventoryMenu) { + var3 = -1695258830; + } else { + var3 = -1112636623; + } + break; + case 167102324: + if (mc.player != null) { + var3 = 1651880992; + } else { + var3 = 188583912; + } + break; + case 188583912: + return (boolean)(((0)) != 0); + case 490006630: + if (mc.player.isSpectator()) { + var3 = 188583912; + } else { + var3 = 948403853; + } + break; + case 585826802: + if (var2 == mc.player.containerMenu) { + var3 = 1669831426; + } else { + var3 = -868802208; + } + break; + case 948403853: + var2 = var1.getMenu(); + if (var2 != null) { + var3 = 585826802; + } else { + var3 = -868802208; + } + break; + case 1402537397: + if (var1 instanceof CreativeModeInventoryScreen) { + var3 = -1710929231; + } else { + var3 = 167102324; + } + break; + case 1537338269: + default: + if (this.isEnabled()) { + var3 = 1911582620; + } else { + var3 = -1710929231; + } + break; + case 1651880992: + if (mc.gameMode != null) { + var3 = 490006630; + } else { + var3 = 188583912; + } + break; + case 1669831426: + if (!var2.getCarried().isEmpty()) { + var3 = -868802208; + } else { + var3 = 90618184; + } + break; + case 1911582620: + if (var1 != null) { + var3 = 1402537397; + } else { + var3 = -1710929231; + } + } + } + } + + private Slot hoveredSlot(AbstractContainerScreen var1, double var2, double var4) { + return ((b.f)var1).invokeGetHoveredSlot(var2, var4); + } + + private static boolean isShiftDown() { + int var1 = 0; + int var0 = -700153462; + + while (true) { + switch (var0) { + case -1178905901: + var1 = 0; + var0 = 2048145302; + break; + case -930702565: + var1 = 1; + var0 = 2048145302; + break; + case -700153462: + default: + if (!aqz.isKeyDown((-244768845 | 244769185) + (-244768845 & 244769185))) { + var0 = -596811283; + } else { + var0 = -930702565; + } + break; + case -596811283: + if (aqz.isKeyDown((1967610704 ^ -1967610360) + ((1967610704 & -1967610360) << 1))) { + var0 = -930702565; + } else { + var0 = -1178905901; + } + break; + case 2048145302: + return (boolean)((var1) != 0); + } + } + } + + private static boolean isControlDown() { + int var1 = 0; + int var0 = -1572402706; + + while (true) { + switch (var0) { + case -1572402706: + default: + if (!aqz.isKeyDown((404045804 ^ -404045463) + ((404045804 & -404045463) << 1))) { + var0 = 281787358; + } else { + var0 = -1084489335; + } + break; + case -1084489335: + var1 = 1; + var0 = 239355610; + break; + case -727898476: + var1 = 0; + var0 = 239355610; + break; + case 239355610: + return (boolean)((var1) != 0); + case 281787358: + if (aqz.isKeyDown((-910024840 | 910025185) + (-910024840 & 910025185))) { + var0 = -1084489335; + } else { + var0 = -727898476; + } + } + } + } +} diff --git a/src/main/java/defpackage/ti.java b/src/main/java/defpackage/ti.java new file mode 100644 index 0000000..72525ca --- /dev/null +++ b/src/main/java/defpackage/ti.java @@ -0,0 +1,545 @@ +package defpackage; + +import java.util.Iterator; +import java.util.List; +import java.util.function.Supplier; + +@rn(name = "Replay", category = rl.MISC, description = "Keeps the last seconds of gameplay ready to save, records clips and trims them in place") +public final class ti extends rm { + public static final ti INSTANCE = new ti(); + private static final String AUDIO_DEVICE_FAILURE = "clip audio device lookup failed"; + private static final String RESOLUTION_LOW = "480p"; + private static final String RESOLUTION_MEDIUM = "720p"; + private static final String RESOLUTION_HIGH = "1080p"; + private static final String QUALITY_LOW = "Low"; + private static final String QUALITY_MEDIUM = "Medium"; + private static final String QUALITY_HIGH = "High"; + private static final int HEIGHT_LOW = 480; + private static final int HEIGHT_MEDIUM = 720; + private static final int HEIGHT_HIGH = 1080; + private static final float JPEG_LOW = 0.62F; + private static final float JPEG_MEDIUM = 0.78F; + private static final float JPEG_HIGH = 0.9F; + private static final int QUANTIZER_LOW = 27; + private static final int QUANTIZER_MEDIUM = 22; + private static final int QUANTIZER_HIGH = 18; + private static final long MILLIS_PER_SECOND = 1000L; + private static final float PERCENT_SCALE = 100.0F; + private static final long BYTES_PER_MEGABYTE = 1048576L; + private static final long BYTES_PER_GIGABYTE = 1073741824L; + private static final int MIN_EXPORT_THREADS = 1; + private static final int MAX_EXPORT_THREADS = 4; + private static final int CORES_PER_EXPORT_THREAD = 2; + private static final int[] CAPTURE_HEIGHTS; + public final sg resolution; + public final sm framerate; + public final rv autoTune; + public final ru instantReplay; + public final sm bufferSeconds; + public final sm memoryLimit; + public final sm storageLimit; + public final sm exportFramerate; + public final sg quality; + public final ru gameAudio; + public final sg gameAudioSource; + public final ru microphone; + public final sg microphoneSource; + public final ru autoExport; + public final ru openEditor; + public final sm previewVolume; + public final sc saveKey; + public final sc recordKey; + public final sc libraryKey; + + private ti() { + String var10003 = "Resolution"; + String[] var10004 = new String[3]; + var10004[0] = "720p"; + var10004[1] = "480p"; + var10004[2] = "1080p"; + this.resolution = new sg(var10003, var10004) + .describe( + "480p", + "Cheapest to record, fine for sharing in chat" + ) + .describe( + "720p", + "Balanced, the default for clips" + ) + .describe( + "1080p", + "Sharpest, costs the most cpu while buffering" + ) + .description( + "Height the frames are downscaled to before they are stored" + ); + this.framerate = new sm("Framerate", 30.0F, 10.0F, 144.0F, 1.0F) + .description( + "Frames captured per second, higher values cost more cpu and memory" + ); + this.autoTune = new rv("Auto", () -> aje.getInstance().start()) + .description( + "Measures for a few seconds what this machine sustains, then applies the highest resolution, framerate and memory limit that fit. Clears the buffered replay" + ); + this.instantReplay = new ru( + "Instant Replay", + (boolean)((((51220884 | -51220883) + (51220884 & -51220883)) + ) != 0)) + .description( + "Keep the last seconds buffered so they can be saved after they happened" + ); + this.bufferSeconds = new sm( + "Buffer", 30.0F, 5.0F, 120.0F, 5.0F, this.instantReplay::isEnabled + ) + .description( + "How many seconds the instant replay keeps ready" + ); + this.memoryLimit = new sm( + "Memory Limit", 256.0F, 64.0F, 1024.0F, 32.0F, this.instantReplay::isEnabled + ) + .description( + "Upper bound in megabytes for the buffered frames" + ); + this.storageLimit = new sm("Storage", 8.0F, 1.0F, 64.0F, 1.0F) + .description( + "Gigabytes of clips kept on disk before the oldest ones are removed" + ); + this.exportFramerate = new sm( + "Export FPS", 60.0F, 24.0F, 120.0F, 1.0F + ) + .description( + "Framerate of the exported video, extra captured frames are dropped" + ); + var10003 = "Quality"; + var10004 = new String[3]; + var10004[0] = "Medium"; + var10004[1] = "Low"; + var10004[2] = "High"; + this.quality = new sg(var10003, var10004) + .describe( + "Low", + "Smallest buffer and file, softest picture" + ) + .describe( + "Medium", + "Balanced picture and size" + ) + .describe( + "High", + "Cleanest picture, the biggest files" + ) + .description( + "Compression used for buffered frames and exported video" + ); + this.gameAudio = new ru( + "Game Audio", + (boolean)((((899333948 ^ -899333948) + ((899333948 & -899333948) << 1)) + ) != 0)) + .description( + "Record what the game plays, needs a loopback input such as Stereo Mix or BlackHole" + ); + var10003 = "Game Device"; + Supplier var5 = this.gameAudio::isEnabled; + String[] var10005 = new String[1]; + var10005[0] = "Auto"; + this.gameAudioSource = new sg(var10003, var5, var10005) + .description( + "Input the game sound is captured from" + ); + this.microphone = new ru( + "Microphone", + (boolean)((((-1677017054 ^ 1677017054) + ((-1677017054 & 1677017054) << 1)) + ) != 0)) + .description( + "Mix your microphone into the clip" + ); + var10003 = "Mic Device"; + Supplier var6 = this.microphone::isEnabled; + var10005 = new String[1]; + var10005[0] = "Auto"; + this.microphoneSource = new sg(var10003, var6, var10005) + .description( + "Input the microphone is captured from" + ); + this.autoExport = new ru( + "Auto Export", + (boolean)((((1433392962 ^ -1433392962) + ((1433392962 & -1433392962) << 1)) + ) != 0)) + .description( + "Write the mp4 straight after a clip is saved instead of waiting for the editor" + ); + this.openEditor = new ru( + "Open Editor", + (boolean)((((-1848373380 ^ 1848373380) + ((-1848373380 & 1848373380) << 1)) + ) != 0)) + .description( + "Jump into the trim editor as soon as a clip is saved" + ); + this.previewVolume = new sm("Preview Volume", 100.0F, 0.0F, 100.0F, 5.0F) + .description( + "Playback volume of the clip editor" + ); + this.saveKey = new sc( + "Save Replay", (2099435445 | -2099435147) + (2099435445 & -2099435147) + ) + .description( + "Stores the buffered seconds as a clip" + ); + this.recordKey = new sc( + "Record", (-142705756 | 142706055) + (-142705756 & 142706055) + ) + .description( + "Starts and stops a manual recording" + ); + this.libraryKey = new sc( + "Clips", (-1201388595 | 1201388890) + (-1201388595 & 1201388890) + ) + .description( + "Opens the clip library and trim editor" + ); + this.loadAudioDevices(); + this.hideFromModuleCard(); + } + + private void hideFromModuleCard() { + Iterator var1 = null; + ro var2 = null; + int var3 = -980845074; + + while (true) { + switch (var3) { + case -2033921481: + return; + case -1798361704: + var2.setVisible(() -> Boolean.valueOf((boolean)((((1989526043 | -1989526043) + (1989526043 & -1989526043))) != 0))); + var3 = 2119859184; + break; + case -980845074: + default: + var1 = this.getSettings().iterator(); + var3 = -745307607; + break; + case -745307607: + if (var1.hasNext()) { + var3 = 1829459865; + } else { + var3 = -2033921481; + } + break; + case 1829459865: + var2 = (ro)var1.next(); + if (!(var2 instanceof sc)) { + var3 = -1798361704; + } else { + var3 = 2119859184; + } + break; + case 2119859184: + var3 = -745307607; + } + } + } + + private void loadAudioDevices() { + try { + List var1 = ajq.inputDevices(); + this.gameAudioSource.replaceValues(var1); + this.microphoneSource.replaceValues(var1); + } catch (Throwable var2) { + id.error( + Cif.MEDIA, "clip audio device lookup failed", var2 + ); + } + } + + public String gameAudioDevice() { + String var1 = null; + int var2 = -1858956924; + + while (true) { + switch (var2) { + case -1858956924: + default: + var1 = this.gameAudioSource.get(); + if (!"Auto".equals(var1)) { + var2 = 738727317; + } else { + var2 = 2091312160; + } + break; + case 738727317: + return ajq.resolveDevice(var1); + case 2091312160: + return ajq.detectLoopbackDevice(); + } + } + } + + public String microphoneDevice() { + return ajq.resolveDevice(this.microphoneSource.get()); + } + + @Override + public void onDisable() { + super.onDisable(); + ajn.getInstance().shutdown(); + } + + @k + public void onKey(er var1) { + ajn var2 = null; + int var3 = 322515931; + + while (true) { + switch (var3) { + case -1973664990: + if (var1.is(this.recordKey.getKeyCode())) { + var3 = -867346940; + } else { + var3 = -298343398; + } + break; + case -1224514233: + return; + case -867346940: + var2.toggleRecording(); + return; + case -298343398: + if (var1.is(this.libraryKey.getKeyCode())) { + var3 = 279005349; + } else { + var3 = 599027319; + } + break; + case 7220183: + if (mc.gui.screen() != null) { + var3 = -1224514233; + } else { + var3 = 1511403765; + } + break; + case 279005349: + aby.open(); + var3 = 599027319; + break; + case 322515931: + default: + if (var1.getAction() == (-1313499834 | 1313499835) + (-1313499834 & 1313499835)) { + var3 = 7220183; + } else { + var3 = -1224514233; + } + break; + case 599027319: + return; + case 667926549: + var2.saveInstantReplay(); + return; + case 1511403765: + var2 = ajn.getInstance(); + if (var1.is(this.saveKey.getKeyCode())) { + var3 = 667926549; + } else { + var3 = -1973664990; + } + } + } + } + + public static int[] captureHeights() { + return (int[])CAPTURE_HEIGHTS.clone(); + } + + public void applyCaptureProfile(int var1, int var2, int var3) { + this.resolution.set(heightMode(var1)); + this.quality.set("High"); + this.framerate.setCurrent(var2); + this.memoryLimit.setCurrent(var3); + } + + private static String heightMode(int var0) { + String var2 = null; + int var1 = -1548044500; + + while (true) { + switch (var1) { + case -1800839749: + return var2; + case -1548044500: + default: + if (var0 >= (304681142 | -304680062) + (304681142 & -304680062)) { + var1 = -487921123; + } else { + var1 = -1137774942; + } + break; + case -1137774942: + if (var0 >= (685338989 ^ -685338269) + ((685338989 & -685338269) << 1)) { + var1 = -443463283; + } else { + var1 = 1235319257; + } + break; + case -487921123: + return "1080p"; + case -443463283: + var2 = "720p"; + var1 = -1800839749; + break; + case 1235319257: + var2 = "480p"; + var1 = -1800839749; + } + } + } + + public int captureHeight() { + int var2 = 0; + int var1 = -1660900468; + + while (true) { + switch (var1) { + case -1822408903: + return 480; + case -1660900468: + default: + if (this.resolution.is("480p")) { + var1 = -1822408903; + } else { + var1 = -243178634; + } + break; + case -1284817233: + return var2; + case -243178634: + if (this.resolution.is("1080p")) { + var1 = 99113982; + } else { + var1 = 544955321; + } + break; + case 99113982: + var2 = 1080; + var1 = -1284817233; + break; + case 544955321: + var2 = 720; + var1 = -1284817233; + } + } + } + + public int captureFps() { + return Math.round(this.framerate.getCurrent()); + } + + public float jpegQuality() { + float var2 = 0.0F; + int var1 = -275292694; + + while (true) { + switch (var1) { + case -792210472: + var2 = 0.9F; + var1 = 1944777135; + break; + case -275292694: + default: + if (this.quality.is("Low")) { + var1 = 1586581496; + } else { + var1 = 1632902305; + } + break; + case 1577126482: + var2 = 0.78F; + var1 = 1944777135; + break; + case 1586581496: + return 0.62F; + case 1632902305: + if (this.quality.is("High")) { + var1 = -792210472; + } else { + var1 = 1577126482; + } + break; + case 1944777135: + return var2; + } + } + } + + public int exportQuantizer() { + int var2 = 0; + int var1 = -1572292549; + + while (true) { + switch (var1) { + case -2081132624: + return var2; + case -1572292549: + default: + if (this.quality.is("Low")) { + var1 = 292978868; + } else { + var1 = -1248895528; + } + break; + case -1518442369: + var2 = 18; + var1 = -2081132624; + break; + case -1248895528: + if (this.quality.is("High")) { + var1 = -1518442369; + } else { + var1 = -886075674; + } + break; + case -886075674: + var2 = 22; + var1 = -2081132624; + break; + case 292978868: + return 27; + } + } + } + + public float previewGain() { + return this.previewVolume.getCurrent() / 100.0F; + } + + public int exportFps() { + return Math.round(this.exportFramerate.getCurrent()); + } + + public int exportThreads() { + return Math.clamp( + Runtime.getRuntime().availableProcessors() / (2), + 1, + (1881771119 | -1881771115) + (1881771119 & -1881771115) + ); + } + + public long bufferMillis() { + return (long)this.bufferSeconds.getCurrent() * ((8473840490956687632L ^ -8473840490956686632L) + ((8473840490956687632L & -8473840490956686632L) << 1)); + } + + public long storageBytes() { + return (long)this.storageLimit.getCurrent() * ((8882843681655584144L | -8882843680581842320L) + (8882843681655584144L & -8882843680581842320L)); + } + + public long bufferBytes() { + return (long)this.memoryLimit.getCurrent() * ((2166254671518597803L | -2166254671517549227L) + (2166254671518597803L & -2166254671517549227L)); + } + + static { + int[] var10000 = new int[3]; + var10000[0] = 1080; + var10000[1] = 720; + var10000[2] = 480; + CAPTURE_HEIGHTS = var10000; + } +} diff --git a/src/main/java/defpackage/tj.java b/src/main/java/defpackage/tj.java new file mode 100644 index 0000000..0bef2f8 --- /dev/null +++ b/src/main/java/defpackage/tj.java @@ -0,0 +1,162 @@ +package defpackage; + +import java.util.EnumMap; +import java.util.Map; + +@rn(name = "Sounds", category = rl.MISC, description = "Sound played on each client action") +public final class tj extends rm { + public static final tj INSTANCE = new tj(); + private static final String BINDING_DESCRIPTION_PREFIX = "Sound played on: "; + private static final long MODULE_TOGGLE_THROTTLE_MS = 60L; + private long lastModuleToggleTime; + private final sm volume = new sm("Volume", 1.0F, 0.0F, 1.0F, 0.05F) + .description( + "Master volume of every client sound" + ); + private final sg guiOpen = binding(mj.GUI_OPEN); + private final sg guiClose = binding(mj.GUI_CLOSE); + private final sg buttonClick = binding(mj.BUTTON_CLICK); + private final sg settingOn = binding(mj.SETTING_ON); + private final sg settingOff = binding(mj.SETTING_OFF); + private final sg slider = binding(mj.SLIDER); + private final sg tabSwitch = binding(mj.TAB_SWITCH); + private final sg dropdown = binding(mj.DROPDOWN); + private final sg panelDrag = binding(mj.PANEL_DRAG); + private final sg panelResize = binding(mj.PANEL_RESIZE); + private final sg typing = binding(mj.TYPING); + private final sg moduleEnabled = binding(mj.MODULE_ENABLED); + private final sg moduleDisabled = binding(mj.MODULE_DISABLED); + private final sg criticalHit = binding(mj.CRITICAL_HIT); + private final sg notification = binding(mj.NOTIFICATION); + private final sg worldJoin = binding(mj.WORLD_JOIN); + private final sg clipSaved = binding(mj.CLIP_SAVED); + private final Map bindings = new EnumMap<>(mj.class); + + private tj() { + this.bindings.put(mj.GUI_OPEN, this.guiOpen); + this.bindings.put(mj.GUI_CLOSE, this.guiClose); + this.bindings.put(mj.BUTTON_CLICK, this.buttonClick); + this.bindings.put(mj.SETTING_ON, this.settingOn); + this.bindings.put(mj.SETTING_OFF, this.settingOff); + this.bindings.put(mj.SLIDER, this.slider); + this.bindings.put(mj.TAB_SWITCH, this.tabSwitch); + this.bindings.put(mj.DROPDOWN, this.dropdown); + this.bindings.put(mj.PANEL_DRAG, this.panelDrag); + this.bindings.put(mj.PANEL_RESIZE, this.panelResize); + this.bindings.put(mj.TYPING, this.typing); + this.bindings.put(mj.MODULE_ENABLED, this.moduleEnabled); + this.bindings.put(mj.MODULE_DISABLED, this.moduleDisabled); + this.bindings.put(mj.CRITICAL_HIT, this.criticalHit); + this.bindings.put(mj.NOTIFICATION, this.notification); + this.bindings.put(mj.WORLD_JOIN, this.worldJoin); + this.bindings.put(mj.CLIP_SAVED, this.clipSaved); + super.setToggled((boolean)((((1197852249 | -1197852248) + (1197852249 & -1197852248))) != 0)); + } + + @Override + public void setToggled(boolean var1) { + super.setToggled((boolean)((((1964611695 | -1964611694) + (1964611695 & -1964611694))) != 0)); + } + + @Override + public void toggle() { + super.setToggled((boolean)((((286225736 | -286225735) + (286225736 & -286225735))) != 0)); + } + + public static mi resolve(mj var0) { + tj var1 = null; + sg var2 = null; + mi var3 = null; + mi var5 = null; + int var4 = 509336175; + + while (true) { + switch (var4) { + case -1859411562: + return var0.defaultSound(); + case -1385403448: + return var0.defaultSound(); + case -912127160: + var3 = mi.byDisplayName(var2.get()); + if (var3 == null) { + var4 = -900185086; + } else { + var4 = -825399989; + } + break; + case -900185086: + var5 = var0.defaultSound(); + var4 = 1311853096; + break; + case -825399989: + var5 = var3; + var4 = 1311853096; + break; + case 509336175: + default: + var1 = INSTANCE; + if (var1 == null) { + var4 = -1385403448; + } else { + var4 = 1611123779; + } + break; + case 1311853096: + return var5; + case 1611123779: + var2 = var1.bindings.get(var0); + if (var2 == null) { + var4 = -1859411562; + } else { + var4 = -912127160; + } + } + } + } + + public static float masterVolume() { + tj var0 = null; + float var2 = 0.0F; + int var1 = -868541190; + + while (true) { + switch (var1) { + case -868541190: + default: + var0 = INSTANCE; + if (var0 == null) { + var1 = 816497175; + } else { + var1 = 1329914560; + } + break; + case -743936841: + return var2; + case 816497175: + var2 = 1.0F; + var1 = -743936841; + break; + case 1329914560: + var2 = var0.volume.getCurrent(); + var1 = -743936841; + } + } + } + + @k + public void onModuleToggle(ex var1) { + if (mc.player != null && var1.getModule().emitsToggleSound()) { + long var2 = System.currentTimeMillis(); + if (var2 - this.lastModuleToggleTime >= (3921581664650763415L ^ -3921581664650763355L) + ((3921581664650763415L & -3921581664650763355L) << 1)) { + this.lastModuleToggleTime = var2; + bz.getInstance().getSoundManager().play(var1.isEnabled() ? mj.MODULE_ENABLED : mj.MODULE_DISABLED); + } + } + } + + private static sg binding(mj var0) { + sg var1 = new sg(var0.displayName(), mi.displayNames()); + var1.set(var0.defaultSound().displayName()); + return var1.description("Sound played on: " + var0.displayName()); + } +} diff --git a/src/main/java/defpackage/tk.java b/src/main/java/defpackage/tk.java new file mode 100644 index 0000000..f90b82b --- /dev/null +++ b/src/main/java/defpackage/tk.java @@ -0,0 +1,622 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; +import net.minecraft.client.gui.screens.inventory.InventoryScreen; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket; +import net.minecraft.network.protocol.game.ClientboundSectionBlocksUpdatePacket; +import net.minecraft.network.protocol.game.ServerboundUseItemOnPacket; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import net.minecraft.world.Container; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.Shapes; + +@rn(name = "StorageTracker", category = rl.MISC, description = "Remembers container contents and finds items") +public final class tk extends rm { + public static final tk INSTANCE = new tk(); + private static final int DEFAULT_OPEN_KEY = 96; + private static final long INTERACT_VALIDITY_MS = 4000L; + private static final float FILL_ALPHA = 0.28F; + private static final double BOX_EXPAND = 0.002; + private final sc openKey = new sc( + "Open Menu", (1128483640 | -1128483544) + (1128483640 & -1128483544) + ) + .description( + "Key to open the storage tracker menu" + ); + private final ru highlight = new ru( + "Highlight", + "Outline containers holding the selected item", + (boolean)((((179337483 ^ -179337482) + ((179337483 & -179337482) << 1)) + ) != 0)) + .description( + "Outline containers holding the selected item" + ); + private final ru filled = new ru( + "Filled", + (boolean)(((1)) != 0), + this.highlight::isEnabled + ) + .description( + "Fill the highlight of containers" + ); + private final sm lineWidth = new sm( + "Line width", 2.0F, 1.0F, 5.0F, 0.5F, this.highlight::isEnabled + ) + .description( + "Thickness of the highlight outline" + ); + private final ru slotGlow = new ru( + "Slot Glow", + "Glow the selected item inside opened containers", + (boolean)((((-91356729 | 91356730) + (-91356729 & 91356730)) + ) != 0)) + .description( + "Glow the selected item inside opened containers" + ); + private static final int SLOT_SIZE = 16; + private static final double PULSE_SPEED_MS = 260.0; + private static final int GLOW_TEX_DIM = 32; + private static final Identifier GLOW_TEXTURE = Identifier.fromNamespaceAndPath( + "evolution", "textures/gui/storage_glow.png" + ); + private volatile Item highlightItem; + private BlockPos lastInteractPos; + private long lastInteractTime; + private BlockPos pendingPos; + private String pendingType; + + private tk() { + } + + @Override + public void onDisable() { + this.highlightItem = null; + ms.INSTANCE.save(); + super.onDisable(); + } + + @k + public void onPacket(fy var1) { + if (var1.isSent()) { + if (var1.getPacket() instanceof ServerboundUseItemOnPacket var6) { + this.lastInteractPos = var6.getHitResult().getBlockPos(); + this.lastInteractTime = System.currentTimeMillis(); + } + } else if (mc.level != null) { + Identifier var2 = mc.level.dimension().identifier(); + if (var1.getPacket() instanceof ClientboundBlockUpdatePacket var3) { + ms.INSTANCE.handleBlockChange(var2, var3.getPos(), var3.getBlockState().getBlock()); + } else if (var1.getPacket() instanceof ClientboundSectionBlocksUpdatePacket var4) { + var4.runUpdates((var1x, var2x) -> ms.INSTANCE.handleBlockChange(var2, var1x, var2x.getBlock())); + } + } + } + + @k + public void onSetScreen(eu var1) { + Screen var2 = null; + int var3 = -2096590465; + + while (true) { + switch (var3) { + case -2147442431: + if (!(var2 instanceof InventoryScreen)) { + var3 = -2125856546; + } else { + var3 = -587337723; + } + break; + case -2125856546: + if (var2 instanceof CreativeModeInventoryScreen) { + var3 = -587337723; + } else { + var3 = -265463597; + } + break; + case -2108288808: + if (System.currentTimeMillis() - this.lastInteractTime + > (-8235910961309136045L ^ 8235910961309140045L) + ((-8235910961309136045L & 8235910961309140045L) << 1)) { + var3 = -1479385336; + } else { + var3 = -728092997; + } + break; + case -2096590465: + default: + var2 = var1.getScreen(); + if (var2 instanceof AbstractContainerScreen) { + var3 = -2147442431; + } else { + var3 = -587337723; + } + break; + case -1621299829: + if (this.lastInteractPos == null) { + var3 = 716349968; + } else { + var3 = -2108288808; + } + break; + case -1479385336: + return; + case -1346766262: + return; + case -728092997: + if (!(mc.level.getBlockEntity(this.lastInteractPos) instanceof Container)) { + var3 = -1346766262; + } else { + var3 = 1063995469; + } + break; + case -587337723: + return; + case -265463597: + if (mc.level != null) { + var3 = -1621299829; + } else { + var3 = 716349968; + } + break; + case 716349968: + return; + case 1063995469: + this.pendingPos = this.lastInteractPos; + this.pendingType = BuiltInRegistries.BLOCK.getKey(mc.level.getBlockState(this.lastInteractPos).getBlock()).getPath(); + return; + } + } + } + + @k + public void onCloseScreen(ew var1) { + this.capturePending(); + } + + private void capturePending() { + BlockPos var1 = null; + AbstractContainerMenu var2 = null; + ArrayList var3 = null; + Iterator var4 = null; + Slot var5 = null; + ItemStack var6 = null; + int var7 = 27733259; + + while (true) { + switch (var7) { + case -1574685171: + var5 = (Slot)var4.next(); + if (var5.container instanceof Inventory) { + var7 = -319578969; + } else { + var7 = 277442637; + } + break; + case -1453188625: + return; + case -1251353908: + return; + case -983755698: + if (mc.player != null) { + var7 = 1543382684; + } else { + var7 = -1251353908; + } + break; + case -750060804: + var1 = this.pendingPos; + this.pendingPos = null; + var2 = mc.player.containerMenu; + if (var2 != null) { + var7 = 1675672304; + } else { + var7 = -1453188625; + } + break; + case -675657890: + if (var4.hasNext()) { + var7 = -1574685171; + } else { + var7 = 1651716766; + } + break; + case -319578969: + var7 = -675657890; + break; + case -269576661: + var7 = -675657890; + break; + case 27733259: + default: + if (this.pendingPos != null) { + var7 = -983755698; + } else { + var7 = -1251353908; + } + break; + case 277442637: + var6 = var5.getItem(); + if (!var6.isEmpty()) { + var7 = 552620786; + } else { + var7 = -269576661; + } + break; + case 552620786: + var3.add(var6.copy()); + var7 = -269576661; + break; + case 1193361223: + var3 = new ArrayList(); + var4 = var2.slots.iterator(); + var7 = -675657890; + break; + case 1543382684: + if (mc.level == null) { + var7 = -1251353908; + } else { + var7 = -750060804; + } + break; + case 1651716766: + ms.INSTANCE.capture(mc.level.dimension().identifier(), var1, this.pendingType, var3); + return; + case 1675672304: + if (var2 instanceof InventoryMenu) { + var7 = -1453188625; + } else { + var7 = 1193361223; + } + } + } + } + + @k + public void onKey(er var1) { + int var2 = 744172492; + + while (true) { + switch (var2) { + case -1305871942: + if (var1.isKeyDown(this.openKey.getKeyCode())) { + var2 = -1037124081; + } else { + var2 = 336995885; + } + break; + case -1060339959: + this.openGui(); + var2 = 336995885; + break; + case -1037124081: + if (mc.level != null) { + var2 = -1060339959; + } else { + var2 = 336995885; + } + break; + case 336995885: + return; + case 744172492: + default: + if (this.openKey.getKeyCode() != (1078492518 | -1078492519) + (1078492518 & -1078492519)) { + var2 = -1305871942; + } else { + var2 = 336995885; + } + } + } + } + + public void openGui() { + ms.INSTANCE.ensureLoaded(); + mc.gui.setScreen(new ach()); + } + + public int getOpenKeyCode() { + return this.openKey.getKeyCode(); + } + + public void onWorldRender(LevelRenderContext var1) { + Item var2 = null; + PoseStack var3 = null; + SubmitNodeCollector var4 = null; + List var5 = null; + Vec3 var6 = null; + int var7 = 0; + float var8 = 0.0F; + int var9 = 0; + Iterator var10 = null; + BlockPos var11 = null; + int var12 = 657718444; + + while (true) { + switch (var12) { + case -1809169645: + if (mc.player != null) { + var12 = 860231910; + } else { + var12 = -1610573467; + } + break; + case -1610573467: + return; + case -715157912: + var3.popPose(); + return; + case -135712061: + var11 = (BlockPos)var10.next(); + var4.submitShapeOutline( + var3, Shapes.create(new AABB(var11)), arj.lines(), var9, var8, (boolean)((((-1051652046 | 1051652046) + (-1051652046 & 1051652046)) + ) != 0)); + var12 = 320512143; + break; + case 52938801: + if (var4 == null) { + var12 = 644295797; + } else { + var12 = 859653884; + } + break; + case 320512143: + if (var10.hasNext()) { + var12 = -135712061; + } else { + var12 = -715157912; + } + break; + case 644295797: + return; + case 657718444: + default: + var2 = this.highlightItem; + if (this.isEnabled()) { + var12 = 1324254831; + } else { + var12 = -1610573467; + } + break; + case 859653884: + ms.INSTANCE.ensureLoaded(); + var5 = ms.INSTANCE.findPositions(mc.level.dimension().identifier(), var2); + if (var5.isEmpty()) { + var12 = 1272311562; + } else { + var12 = 1018919364; + } + break; + case 860231910: + if (mc.level == null) { + var12 = -1610573467; + } else { + var12 = 2029979657; + } + break; + case 1018919364: + var6 = mc.getEntityRenderDispatcher().camera.position(); + var7 = bz.getInstance().getThemeManager().getCurrentTheme().getColor().getRGB() & 16777215; + var8 = this.lineWidth.getCurrent(); + if (this.filled.isEnabled()) { + var12 = 1219982996; + } else { + var12 = 1091698912; + } + break; + case 1091698912: + var9 = withAlpha(var7, 1.0F); + var3.pushPose(); + var3.translate(-var6.x, -var6.y, -var6.z); + var10 = var5.iterator(); + var12 = 320512143; + break; + case 1219982996: + var9 = withAlpha(var7, 0.28F); + var4.submitCustomGeometry(var3, arj.filledBox(), (var3x, var4x) -> { + Iterator var5x = null; + BlockPos var6x = null; + int var7x = 1128586463; + + while (true) { + switch (var7x) { + case -1495715681: + return; + case -412359412: + var6x = (BlockPos)var5x.next(); + addFilledBox(var4x, var3x, new AABB(var6x).inflate(0.002), var6, var9); + var7x = 1009276439; + break; + case 1009276439: + if (var5x.hasNext()) { + var7x = -412359412; + } else { + var7x = -1495715681; + } + break; + case 1128586463: + default: + var5x = var5.iterator(); + var7x = 1009276439; + } + } + }); + var12 = 1091698912; + break; + case 1272311562: + return; + case 1324254831: + if (this.highlight.isEnabled()) { + var12 = 1613119924; + } else { + var12 = -1610573467; + } + break; + case 1613119924: + if (var2 != null) { + var12 = -1809169645; + } else { + var12 = -1610573467; + } + break; + case 2029979657: + var3 = var1.poseStack(); + var4 = var1.submitNodeCollector(); + if (var3 != null) { + var12 = 52938801; + } else { + var12 = 644295797; + } + } + } + } + + public void renderSlotHighlight(GuiGraphicsExtractor var1, Slot var2, int var3, int var4) { + Item var5 = null; + ItemStack var6 = null; + float var7 = 0.0F; + asu var8 = null; + int var9 = 0; + int var10 = -1642268198; + + while (true) { + switch (var10) { + case -1878739777: + return; + case -1655877714: + if (var6.getItem() != var5) { + var10 = -1878739777; + } else { + var10 = 664143788; + } + break; + case -1642268198: + default: + var5 = this.highlightItem; + if (this.isEnabled()) { + var10 = -483506268; + } else { + var10 = 1912113588; + } + break; + case -1021309155: + if (var5 == null) { + var10 = 1912113588; + } else { + var10 = 1837544708; + } + break; + case -483506268: + if (this.slotGlow.isEnabled()) { + var10 = -1021309155; + } else { + var10 = 1912113588; + } + break; + case 664143788: + var7 = 0.5F + 0.5F * (float)Math.sin(System.currentTimeMillis() / 260.0); + var8 = bz.getInstance().getThemeManager().getCurrentTheme().getColor(); + var9 = var8.mix(asu.WHITE, 0.12F).mulAlpha(0.4F + 0.5F * var7).getRGB(); + var1.blit( + RenderPipelines.GUI_TEXTURED, + GLOW_TEXTURE, + var2.x, + var2.y, + 0.0F, + 0.0F, + 16, + 16, + 32, + 32, + 32, + 32, + var9 + ); + return; + case 1837544708: + var6 = var2.getItem(); + if (!var6.isEmpty()) { + var10 = -1655877714; + } else { + var10 = -1878739777; + } + break; + case 1912113588: + return; + } + } + } + + private static void addFilledBox(VertexConsumer var0, Pose var1, AABB var2, Vec3 var3, int var4) { + float var5 = (float)(var2.minX - var3.x); + float var6 = (float)(var2.minY - var3.y); + float var7 = (float)(var2.minZ - var3.z); + float var8 = (float)(var2.maxX - var3.x); + float var9 = (float)(var2.maxY - var3.y); + float var10 = (float)(var2.maxZ - var3.z); + quad(var0, var1, var4, var5, var6, var7, var5, var6, var10, var8, var6, var10, var8, var6, var7); + quad(var0, var1, var4, var5, var9, var7, var8, var9, var7, var8, var9, var10, var5, var9, var10); + quad(var0, var1, var4, var5, var6, var7, var8, var6, var7, var8, var9, var7, var5, var9, var7); + quad(var0, var1, var4, var5, var6, var10, var5, var9, var10, var8, var9, var10, var8, var6, var10); + quad(var0, var1, var4, var5, var6, var7, var5, var9, var7, var5, var9, var10, var5, var6, var10); + quad(var0, var1, var4, var8, var6, var7, var8, var6, var10, var8, var9, var10, var8, var9, var7); + } + + private static void quad( + VertexConsumer var0, + Pose var1, + int var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13, + float var14 + ) { + var0.addVertex(var1, var3, var4, var5).setColor(var2); + var0.addVertex(var1, var6, var7, var8).setColor(var2); + var0.addVertex(var1, var9, var10, var11).setColor(var2); + var0.addVertex(var1, var12, var13, var14).setColor(var2); + } + + private static int withAlpha(int var0, float var1) { + return Mth.clamp( + Math.round(var1 * 255.0F), 0, (-1621672748 | 1621673003) + (-1621672748 & 1621673003) + ) + << (-1875610026 ^ 1875610050) + ((-1875610026 & 1875610050) << 1) + | var0 & 16777215; + } + + public Item getHighlightItem() { + return this.highlightItem; + } + + public void setHighlightItem(Item var1) { + this.highlightItem = var1; + } +} diff --git a/src/main/java/defpackage/tl.java b/src/main/java/defpackage/tl.java new file mode 100644 index 0000000..1e744c6 --- /dev/null +++ b/src/main/java/defpackage/tl.java @@ -0,0 +1,231 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Arrays; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.entity.Entity; + +@rn(name = "TotemSound", category = rl.MISC, description = "Custom sound when a totem of undying pops") +public final class tl extends rm { + public static final tl INSTANCE = new tl(); + private static final String TRIGGER_EVERYONE = "Everyone"; + private static final String TRIGGER_SELF = "Self"; + private static final String TRIGGER_OTHERS = "Others"; + private static final String DEFAULT_SOUND = "Whistle"; + private final sg sound = new sg("Sound", mi.displayNames()) + .description( + "Sound played when a totem pops. Drop .ogg files into Evolution/sounds to add your own" + ); + private final sg trigger; + private final sm volume; + private final sm pitch; + private final ru muteVanilla; + + private tl() { + String var10003 = "Trigger"; + String[] var10004 = new String[3]; + var10004[0] = "Everyone"; + var10004[1] = "Self"; + var10004[2] = "Others"; + this.trigger = new sg(var10003, var10004) + .describe( + "Everyone", + "Play for every totem pop nearby" + ) + .describe( + "Self", + "Play only for your own totem pops" + ) + .describe( + "Others", + "Play only for totem pops of other players" + ) + .description("Whose totem pops play the sound"); + this.volume = new sm("Volume", 1.0F, 0.0F, 1.0F, 0.05F) + .description("Volume of the custom totem sound"); + this.pitch = new sm("Pitch", 1.0F, 0.5F, 2.0F, 0.05F) + .description("Pitch of the custom totem sound"); + this.muteVanilla = new ru( + "Mute Vanilla", (boolean)((((1112314581 ^ -1112314580) + ((1112314581 & -1112314580) << 1)) + ) != 0)) + .description( + "Silence the vanilla totem sound so only the custom one is heard" + ); + this.sound.set("Whistle"); + } + + public boolean handleTotemPop(Entity var1) { + SoundEvent var2 = null; + int var3 = -1946636787; + + while (true) { + switch (var3) { + case -2085594473: + if (!this.matchesTrigger(var1)) { + var3 = 770557268; + } else { + var3 = -258580217; + } + break; + case -1946636787: + default: + if (this.isEnabled()) { + var3 = 149682492; + } else { + var3 = 770557268; + } + break; + case -1083528980: + return this.muteVanilla.isEnabled(); + case -258580217: + var2 = resolveEvent(this.sound.get()); + if (var2 != null) { + var3 = 1114845660; + } else { + var3 = -1083528980; + } + break; + case 149682492: + if (var1 != null) { + var3 = -2085594473; + } else { + var3 = 770557268; + } + break; + case 770557268: + return (boolean)(((0)) != 0); + case 1114845660: + bz.getInstance().getSoundManager().play(var2, this.volume.getCurrent(), this.pitch.getCurrent()); + var3 = -1083528980; + } + } + } + + public void refreshSoundOptions() { + ArrayList var1 = null; + int var2 = -1403045946; + + while (true) { + switch (var2) { + case -1868806423: + this.sound.set("Whistle"); + var2 = 440638791; + break; + case -1403045946: + default: + var1 = new ArrayList<>(Arrays.asList(mi.displayNames())); + var1.addAll(mk.displayNames()); + this.sound.replaceValues(var1); + if (this.sound.get().isEmpty()) { + var2 = -1868806423; + } else { + var2 = 440638791; + } + break; + case 440638791: + return; + } + } + } + + private static SoundEvent resolveEvent(String var0) { + mi var1 = null; + SoundEvent var3 = null; + int var2 = 473081021; + + while (true) { + switch (var2) { + case -1463264136: + return mk.event(var0); + case -1371348855: + return var3; + case 141431708: + var3 = null; + var2 = -1371348855; + break; + case 473081021: + default: + var1 = mi.byDisplayName(var0); + if (var1 != null) { + var2 = 1568955219; + } else { + var2 = -1463264136; + } + break; + case 1568955219: + if (var1.isSilent()) { + var2 = 141431708; + } else { + var2 = 1776619373; + } + break; + case 1776619373: + var3 = var1.event(); + var2 = -1371348855; + } + } + } + + private boolean matchesTrigger(Entity var1) { + int var2 = 0; + int var4 = 0; + int var5 = 0; + int var3 = -1821263751; + + while (true) { + switch (var3) { + case -1821263751: + default: + if (var1 == mc.player) { + var3 = -329739819; + } else { + var3 = 357396589; + } + break; + case -1244019788: + return (boolean)((var2) != 0); + case -474833346: + if (var2 == 0) { + var3 = 438781979; + } else { + var3 = 440451785; + } + break; + case -329739819: + var4 = 1; + var3 = 2078628972; + break; + case 121948068: + return (boolean)(((1)) != 0); + case 357396589: + var4 = 0; + var3 = 2078628972; + break; + case 438781979: + var5 = 1; + var3 = 1137181542; + break; + case 440451785: + var5 = 0; + var3 = 1137181542; + break; + case 1137181542: + return (boolean)((var5) != 0); + case 1943446694: + if (this.trigger.is("Others")) { + var3 = -474833346; + } else { + var3 = 121948068; + } + break; + case 2078628972: + var2 = var4; + if (this.trigger.is("Self")) { + var3 = -1244019788; + } else { + var3 = 1943446694; + } + } + } + } +} diff --git a/src/main/java/defpackage/tm.java b/src/main/java/defpackage/tm.java new file mode 100644 index 0000000..854d656 --- /dev/null +++ b/src/main/java/defpackage/tm.java @@ -0,0 +1,407 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.world.phys.Vec3; + +@rn(name = "Trainer", category = rl.MISC, description = "Aim, totem and anchor training drills") +public final class tm extends rm { + public static final tm INSTANCE = new tm(); + private static final int DEFAULT_OPEN_KEY = 80; + private static final float HUD_TOP_OFFSET = 14.0F; + private static final float PANEL_HEIGHT = 32.0F; + private static final float PANEL_PADDING = 9.0F; + private static final float PANEL_RADIUS = 5.0F; + private static final float DIVIDER_WIDTH = 0.6F; + private static final float DIVIDER_HEIGHT = 14.0F; + private static final float VALUE_LABEL_GAP = 2.0F; + private static final float PROGRESS_HEIGHT = 1.5F; + private static final arq PROGRESS_RADIUS = asj.pill(1.5F); + private static final float PROGRESS_INSET = 3.0F; + private static final int ACCENT_SECTION = 1; + private static final float SUMMARY_CENTER_OFFSET = 40.0F; + private static final float SUMMARY_PADDING = 15.0F; + private static final float SUMMARY_RADIUS = 7.0F; + private static final float SUMMARY_LINE_GAP = 9.0F; + private static final float SUMMARY_MIN_WIDTH = 150.0F; + private static final float LINE_GAP = 4.0F; + private static final int RECORD_COLOR = -11544321; + private static final int NEUTRAL_COLOR = -1; + private static final int BETTER_COLOR = -10231718; + private static final int WORSE_COLOR = -1546929; + private static final float SECONDS = 1000.0F; + private final sc openKey = new sc( + "Open Key", (-1282308427 | 1282308507) + (-1282308427 & 1282308507) + ) + .description( + "Starts or stops the selected drill" + ); + private final sg drill; + private final sm targetCount; + private final sm targetSize; + private final sm distance; + private final sm fieldSize; + private final sm trackSpeed; + private final sm duration; + + private tm() { + String var10003 = "Drill"; + String[] var10004 = new String[2]; + var10004[0] = "Flicking"; + var10004[1] = "Tracking"; + this.drill = new sg(var10003, var10004) + .describe( + "Flicking", + "Snap onto targets that pop up one at a time" + ) + .describe( + "Tracking", + "Hold your crosshair on a moving target" + ) + .description("Which drill the key starts"); + this.targetCount = new sm("Targets", 3.0F, 1.0F, 6.0F, 1.0F) + .description( + "How many targets are alive at once" + ); + this.targetSize = new sm("Target size", 0.8F, 0.3F, 2.5F, 0.1F) + .description( + "Edge length of a target in blocks" + ); + this.distance = new sm("Distance", 3.0F, 1.0F, 50.0F, 0.5F) + .description( + "Distance to the plane targets spawn on" + ); + this.fieldSize = new sm("Field size", 6.0F, 1.0F, 40.0F, 0.5F) + .description( + "Edge length of the square field targets spawn in" + ); + this.trackSpeed = new sm("Track speed", 3.0F, 0.5F, 12.0F, 0.5F) + .description( + "How fast the tracking target strafes, in blocks per second" + ); + this.duration = new sm("Duration", 30.0F, 5.0F, 180.0F, 5.0F) + .description("Length of a run in seconds"); + } + + @Override + public void onDisable() { + super.onDisable(); + oy.INSTANCE.stop(); + } + + private void pushSettings() { + oy var1 = oy.INSTANCE; + var1.setTargetCount((int)this.targetCount.getCurrent()); + var1.setTargetSize(this.targetSize.getCurrent()); + var1.setDistance(this.distance.getCurrent()); + var1.setFieldSize(this.fieldSize.getCurrent()); + var1.setTrackSpeed(this.trackSpeed.getCurrent()); + var1.setDurationMillis((long)(this.duration.getCurrent() * 1000.0F)); + } + + public void startDrill(ou var1) { + this.pushSettings(); + oy.INSTANCE.start(var1); + } + + @k + public void onKey(er var1) { + if (this.openKey.getKeyCode() != (1323181131 ^ -1323181132) + ((1323181131 & -1323181132) << 1) + && var1.isKeyDown(this.openKey.getKeyCode()) + && mc.level != null) { + if (oy.INSTANCE.isRunning()) { + oy.INSTANCE.stop(); + } else { + this.startDrill( + this.drill.is("Tracking") ? ou.TRACKING : ou.FLICKING + ); + } + } + } + + @k + public void onMouse(es var1) { + oy.INSTANCE.onClick(var1.getButton(), var1.getAction()); + } + + @k + public void onUpdate(fl var1) { + this.pushSettings(); + oy.INSTANCE.tick(); + } + + public void onWorldRender(LevelRenderContext var1) { + PoseStack var2 = null; + SubmitNodeCollector var3 = null; + Vec3 var4 = null; + int var5 = -463333807; + + while (true) { + switch (var5) { + case -2101344366: + if (var3 != null) { + var5 = 640811421; + } else { + var5 = -193773318; + } + break; + case -1834518304: + if (oy.INSTANCE.isRunning()) { + var5 = 1207122916; + } else { + var5 = -809723162; + } + break; + case -809723162: + return; + case -463333807: + default: + if (this.isEnabled()) { + var5 = -1834518304; + } else { + var5 = -809723162; + } + break; + case -193773318: + return; + case 548707007: + var4 = mc.getEntityRenderDispatcher().camera.position(); + oy.INSTANCE.renderWorld(var2, var3, var4); + return; + case 640811421: + if (mc.getEntityRenderDispatcher().camera == null) { + var5 = -193773318; + } else { + var5 = 548707007; + } + break; + case 1162233437: + var2 = var1.poseStack(); + var3 = var1.submitNodeCollector(); + if (var2 != null) { + var5 = -2101344366; + } else { + var5 = -193773318; + } + break; + case 1207122916: + if (mc.player != null) { + var5 = 2010263662; + } else { + var5 = -809723162; + } + break; + case 2010263662: + if (mc.level == null) { + var5 = -809723162; + } else { + var5 = 1162233437; + } + } + } + } + + @k + public void onRender(fs var1) { + aru var2 = null; + mv var3 = null; + float var4 = 0.0F; + ow var5 = null; + int var6 = -627133639; + + while (true) { + switch (var6) { + case -1276186662: + if (mc.player == null) { + var6 = 705933502; + } else { + var6 = -845420335; + } + break; + case -981338051: + this.drawRunHud(var2, var3, var4, var5); + var6 = -221208968; + break; + case -845420335: + var2 = var1.getContext(); + var3 = bz.getInstance().getThemeManager().getCurrentTheme(); + var4 = mc.getWindow().getGuiScaledWidth(); + var5 = oy.INSTANCE.getActiveDrill(); + if (var5 != null) { + var6 = -981338051; + } else { + var6 = 312746520; + } + break; + case -627133639: + default: + if (mc.level != null) { + var6 = -1276186662; + } else { + var6 = 705933502; + } + break; + case -426289577: + this.drawSummary(var2, var4); + var6 = -221208968; + break; + case -221208968: + return; + case 312746520: + if (oy.INSTANCE.hasFreshResult()) { + var6 = -426289577; + } else { + var6 = -221208968; + } + break; + case 705933502: + return; + } + } + } + + private void drawRunHud(aru var1, mv var2, float var3, ow var4) { + ge var5 = gl.SEMIBOLD.getFont(11.0F); + ge var6 = gl.MEDIUM.getFont(5.0F); + long var7 = oy.INSTANCE.getDurationMillis(); + long var9 = Math.max( + (-4349310117974233185L ^ 4349310117974233185L) + ((-4349310117974233185L & 4349310117974233185L) << 1), var7 - var4.getElapsedMillis() + ); + String[][] var11 = var4.getHudSections((float)var9 / 1000.0F); + float[] var12 = new float[var11.length]; + float var13 = 0.0F; + + for (int var14 = 0; var14 < var11.length; var14++) { + float var15 = var5.width(var11[var14][0]); + float var16 = var6.width(var11[var14][1]); + var12[var14] = Math.max(var15, var16) + 18.0F; + var13 += var12[var14]; + } + + var13 += 0.6F * (var11.length - ((-1446615369 ^ 1446615370) + ((-1446615369 & 1446615370) << 1))); + float var26 = var3 / 2.0F - var13 / 2.0F; + float var27 = 14.0F; + atb.drawShadow(var1.pose(), var26, var27, var13, 32.0F, 9.0F, asj.uniform(5.0F), var2.getColor().mulAlpha(0.11F)); + atb.drawAcrylicHud(var1.pose(), var26, var27, var13, 32.0F, asj.uniform(5.0F), asu.WHITE); + asu var28 = var2.getWhite().withAlpha(0.42F); + asu var17 = var2.getWhite().withAlpha(0.13F); + float var18 = var27 + 9.0F; + float var19 = var18 + var5.height() + 2.0F; + float var20 = var26; + + for (int var21 = 0; var21 < var11.length; var21++) { + float var22 = var20 + var12[var21] / 2.0F; + asu var23 = var21 == 1? var2.getColor() : var2.getWhite(); + var1.drawText( + var5, + var11[var21][0], + var22 - var5.width(var11[var21][0]) / 2.0F, + var18, + var23 + ); + var1.drawText( + var6, + var11[var21][1], + var22 - var6.width(var11[var21][1]) / 2.0F, + var19, + var28 + ); + var20 += var12[var21]; + if (var21 < var11.length - ((1446968999 ^ -1446968998) + ((1446968999 & -1446968998) << 1))) { + var1.drawRect(var20, var27 + 9.0F, 0.6F, 14.0F, var17); + var20 += 0.6F; + } + } + + if (var7 > (8527279731426732127L | -8527279731426732127L) + (8527279731426732127L & -8527279731426732127L)) { + float var29 = var27 + 32.0F - 3.0F - 1.5F; + float var30 = var26 + 9.0F; + float var31 = var13 - 18.0F; + float var24 = (float)var9 / (float)var7; + var1.drawSurface(aso.CONTROL, var30, var29, var31, 1.5F, PROGRESS_RADIUS, var2.getWhite().withAlpha(0.1F)); + var1.drawRoundedRect(var30, var29, var31 * var24, 1.5F, PROGRESS_RADIUS, var2.getColor()); + } + } + + private void drawSummary(aru var1, float var2) { + os var3 = oy.INSTANCE.getLastResult(); + if (var3 != null) { + float var4 = oy.INSTANCE.getResultFade(); + if (!(var4 <= 0.0F)) { + boolean var5 = oy.INSTANCE.isLastResultWasRecord(); + float var6 = oy.INSTANCE.getLastResultDeltaPercent(); + mv var7 = bz.getInstance().getThemeManager().getCurrentTheme(); + ge var8 = gl.ROUND_BOLD.getFont(15.0F); + ge var9 = gl.SEMIBOLD.getFont(22.0F); + ge var10 = gl.MEDIUM.getFont(7.0F); + String var11 = var5 + ? "PERSONAL BEST" + : "RUN COMPLETE"; + String var12 = this.formatScore(var3); + String var10000; + if (var6 == 0.0F) { + var10000 = ""; + } else { + var10000 = "%.0f%% %s than average"; + Object[] var10001 = new Object[2]; + var10001[0] = Math.abs(var6); + var10001[1] = var6 > 0.0F + ? "faster" + : "slower"; + var10000 = String.format(var10000, var10001); + } + + String var13 = var10000; + float var14 = Math.max(var8.width(var11), Math.max(var9.width(var12), var10.width(var13))); + float var15 = Math.max(150.0F, var14 + 30.0F); + float var16 = 30.0F + var8.height() + var9.height() + 9.0F + (var13.isEmpty() ? 0.0F : var10.height() + 9.0F); + float var17 = var2 / 2.0F - var15 / 2.0F; + float var18 = mc.getWindow().getGuiScaledHeight() / 2.0F - 40.0F; + asu var19 = var5 ? new asu((1436409772 | -1447954093) + (1436409772 & -1447954093)) : var7.getColor(); + atb.drawShadow(var1.pose(), var17, var18, var15, var16, 13.0F, asj.uniform(7.0F), var19.mulAlpha(0.16F * var4)); + atb.drawAcrylicHud(var1.pose(), var17, var18, var15, var16, asj.uniform(7.0F), asu.WHITE.mulAlpha(var4)); + atb.drawRoundedBorder(var1.pose(), var17, var18, var15, var16, pk.borderRim(), asj.uniform(7.0F), var19.mulAlpha(0.38F * var4)); + float var20 = var18 + 15.0F; + var1.drawText(var8, var11, var2 / 2.0F - var8.width(var11) / 2.0F, var20, var19.mulAlpha(var4)); + var20 += var8.height() + 9.0F; + var1.drawText(var9, var12, var2 / 2.0F - var9.width(var12) / 2.0F, var20, var7.getWhite().mulAlpha(var4)); + if (!var13.isEmpty()) { + var20 += var9.height() + 9.0F; + asu var21 = new asu( + var6 > 0.0F ? -10231718: (2036554742 | -2038101671) + (2036554742 & -2038101671) + ) + .mulAlpha(var4); + var1.drawText(var10, var13, var2 / 2.0F - var10.width(var13) / 2.0F, var20, var21); + } + } + } + } + + private String formatScore(os var1) { + int var2 = 1102676816; + + while (true) { + switch (var2) { + case -1149347844: + String var3 = "%.0fms"; + Object[] var4 = new Object[1]; + var4[0] = var1.getScore(); + return String.format(var3, var4); + case 1102676816: + default: + if (var1.getType().getScoreKind() == ot.PERCENT) { + var2 = 1755137185; + } else { + var2 = -1149347844; + } + break; + case 1755137185: + String var10000 = "%.0f%% on target"; + Object[] var10001 = new Object[1]; + var10001[0] = var1.getScore(); + return String.format(var10000, var10001); + } + } + } +} diff --git a/src/main/java/defpackage/tn.java b/src/main/java/defpackage/tn.java new file mode 100644 index 0000000..545c0a6 --- /dev/null +++ b/src/main/java/defpackage/tn.java @@ -0,0 +1,33 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:tn.class */ +/* synthetic */ class tn { + static final /* synthetic */ int[] $SwitchMap$evo$systems$client$modules$impl$render$Chams$TargetKind = new int[tu.values().length]; + + static { + try { + $SwitchMap$evo$systems$client$modules$impl$render$Chams$TargetKind[tu.SELF.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$Chams$TargetKind[tu.FRIEND.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$Chams$TargetKind[tu.PLAYER.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$Chams$TargetKind[tu.HOSTILE.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$Chams$TargetKind[tu.PASSIVE.ordinal()] = 5; + } catch (NoSuchFieldError e5) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$Chams$TargetKind[tu.OTHER.ordinal()] = 6; + } catch (NoSuchFieldError e6) { + } + } +} diff --git a/src/main/java/defpackage/to.java b/src/main/java/defpackage/to.java new file mode 100644 index 0000000..5f75a68 --- /dev/null +++ b/src/main/java/defpackage/to.java @@ -0,0 +1,397 @@ +package defpackage; + +import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; +import net.minecraft.util.Mth; +import net.minecraft.world.item.ItemStack; + +@rn(name = "ArmorColor", description = "Colors worn armor by its remaining durability", category = rl.RENDER) +public final class to extends rm { + public static final int NO_TINT = 0; + private static final String TARGET_PLAYERS = "Players"; + private static final String TARGET_FRIENDS = "Friends"; + private static final String TARGET_SELF = "Self"; + private static final String TARGET_MOBS = "Mobs"; + private static final int TARGET_PLAYERS_INDEX = 0; + private static final int TARGET_FRIENDS_INDEX = 1; + private static final int TARGET_SELF_INDEX = 2; + private static final int TARGET_MOBS_INDEX = 3; + private static final String MODE_GRADIENT = "Gradient"; + private static final String MODE_STEPS = "Steps"; + private static final tu[] TARGET_KINDS = tu.values(); + private static final float WARN_FRACTION = 0.5F; + private static final float CRITICAL_FRACTION = 0.25F; + private static final float FULL_FRACTION = 1.0F; + private static final float PERCENT_SCALE = 100.0F; + private static final float HALF = 0.5F; + private static final float MIN_STRENGTH = 0.1F; + private static final float MIN_THRESHOLD_PERCENT = 5.0F; + private static final float THRESHOLD_STEP = 5.0F; + private static final float STRENGTH_STEP = 0.05F; + private static final double PULSE_PERIOD_MS = 190.0; + private static final float PULSE_DEPTH = 0.4F; + private static final int COLOR_MASK = 255; + private static final int ALPHA_MASK = -16777216; + private static final int ALPHA_SHIFT = 24; + private static final int RED_SHIFT = 16; + private static final int GREEN_SHIFT = 8; + private static final int MAX_COMPONENT = 255; + private static final int OPAQUE_WHITE = -1; + public static final to INSTANCE = new to(); + public final si targets; + public final sg colorMode; + public final rx fullColor; + public final rx warnColor; + public final rx brokenColor; + public final sm strength; + public final sm onlyBelow; + public final ru pulse; + + private to() { + String var10003 = "Targets"; + sh[] var10004 = new sh[4]; + var10004[0] = sh.of("Players") + .description( + "Color armor worn by other players" + ); + var10004[1] = sh.of( + "Friends", + (boolean)((((-1797640345 | 1797640345) + (-1797640345 & 1797640345)) + ) != 0)) + .description("Color armor worn by friends"); + var10004[2] = sh.of( + "Self", (boolean)((((802764641 ^ -802764641) + ((802764641 & -802764641) << 1)) + ) != 0)) + .description( + "Color your own armor in third person" + ); + var10004[3] = sh.of( + "Mobs", + (boolean)((((-1235127435 ^ 1235127435) + ((-1235127435 & 1235127435) << 1)) + ) != 0)) + .description("Color armor worn by mobs"); + this.targets = new si(var10003, var10004) + .description("Whose armor gets colored"); + var10003 = "Color Mode"; + String[] var2 = new String[2]; + var2[0] = "Gradient"; + var2[1] = "Steps"; + this.colorMode = new sg(var10003, var2) + .describe( + "Gradient", + "Blend smoothly between the three colors" + ) + .describe( + "Steps", + "Snap to one of the three colors" + ) + .description( + "How remaining durability maps to a color" + ); + this.fullColor = new rx( + "Full Color", + new asu( + 93, + 255, + 122, + (1774220862 | -1774220607) + (1774220862 & -1774220607) + ) + ) + .description("Color of freshly repaired armor"); + this.warnColor = new rx( + "Warning Color", + new asu( + 255, + 216, + 74, + (1399250849 | -1399250594) + (1399250849 & -1399250594) + ) + ) + .description("Color of half worn armor"); + this.brokenColor = new rx( + "Broken Color", + new asu( + 255, + 76, + 76, + (-1640909118 ^ 1640909373) + ((-1640909118 & 1640909373) << 1) + ) + ) + .description("Color of armor about to break"); + this.strength = new sm("Strength", 1.0F, 0.1F, 1.0F, 0.05F) + .description( + "How strongly the color replaces the original armor tone" + ); + this.onlyBelow = new sm("Only Below", 100.0F, 5.0F, 100.0F, 5.0F) + .description( + "Only color armor under this durability percentage" + ); + this.pulse = new ru( + "Low Pulse", + (boolean)((((-1115032057 | 1115032058) + (-1115032057 & 1115032058)) + ) != 0)) + .description( + "Pulse the color once the armor is close to breaking" + ); + } + + public int tintFor(ItemStack var1, Object var2) { + LivingEntityRenderState var3 = null; + int var4 = 0; + float var5 = 0.0F; + int var6 = 0; + int var7 = 0; + int var9 = 0; + int var8 = 1505393194; + + while (true) { + switch (var8) { + case -1776574625: + if (!var1.isDamageableItem()) { + var8 = -804638631; + } else { + var8 = -1595893754; + } + break; + case -1595893754: + if (var2 instanceof LivingEntityRenderState) { + var8 = -1516029842; + } else { + var8 = 1823232514; + } + break; + case -1516029842: + var3 = (LivingEntityRenderState)var2; + if (!this.isTargetAllowed(var3)) { + var8 = 1823232514; + } else { + var8 = -898694160; + } + break; + case -1505138409: + if (var1 != null) { + var8 = 421168424; + } else { + var8 = -804638631; + } + break; + case -898694160: + var4 = var1.getMaxDamage(); + if (var4 <= 0) { + var8 = 1984452855; + } else { + var8 = 196723707; + } + break; + case -804638631: + return 0; + case -671001755: + return 0; + case -10164779: + var9 = var6; + var8 = 1590422629; + break; + case 196723707: + var5 = Mth.clamp(1.0F - (float)var1.getDamageValue() / var4, 0.0F, 1.0F); + if (var5 * 100.0F > this.onlyBelow.getCurrent()) { + var8 = -671001755; + } else { + var8 = 1289603097; + } + break; + case 421168424: + if (!var1.isEmpty()) { + var8 = -1776574625; + } else { + var8 = -804638631; + } + break; + case 603978852: + if (var5 <= 0.25F) { + var8 = 2101077233; + } else { + var8 = -10164779; + } + break; + case 1289603097: + var6 = this.rampColor(var5); + if (this.pulse.isEnabled()) { + var8 = 603978852; + } else { + var8 = -10164779; + } + break; + case 1505393194: + default: + if (this.isEnabled()) { + var8 = -1505138409; + } else { + var8 = -804638631; + } + break; + case 1590422629: + var7 = var9; + return lerpRgb(-1, var7, this.strength.getCurrent()); + case 1823232514: + return 0; + case 1984452855: + return 0; + case 2101077233: + var9 = applyPulse(var6); + var8 = 1590422629; + } + } + } + + public static int applyTint(int var0, int var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = -1727366335; + + while (true) { + switch (var5) { + case -1727366335: + default: + if (var1 == 0) { + var5 = 1576870938; + } else { + var5 = 1609839230; + } + break; + case 1576870938: + return var0; + case 1609839230: + var2 = (var0 >> (-1155014206 ^ 1155014222) + ((-1155014206 & 1155014222) << 1) & (1903249121 ^ -1903248866) + ((1903249121 & -1903248866) << 1)) + * (var1 >> (-125597079 | 125597095) + (-125597079 & 125597095) & (-1167467070 ^ 1167467325) + ((-1167467070 & 1167467325) << 1)) + / ((1398983535 | -1398983280) + (1398983535 & -1398983280)); + var3 = (var0 >> (-950867990 | 950867998) + (-950867990 & 950867998) & (518263915 ^ -518263660) + ((518263915 & -518263660) << 1)) + * (var1 >> (33524374 | -33524366) + (33524374 & -33524366) & (-985820314 | 985820569) + (-985820314 & 985820569)) + / ((-1364686645 | 1364686900) + (-1364686645 & 1364686900)); + var4 = (var0 & (393535699 ^ -393535444) + ((393535699 & -393535444) << 1)) + * (var1 & (-696692125 | 696692380) + (-696692125 & 696692380)) + / ((-1152321860 ^ 1152322115) + ((-1152321860 & 1152322115) << 1)); + return var0 & (385249383 | -402026599) + (385249383 & -402026599) + | var2 << (-333977794 | 333977810) + (-333977794 & 333977810) + | var3 << (342745764 ^ -342745756) + ((342745764 & -342745756) << 1) + | var4; + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private boolean isTargetAllowed(LivingEntityRenderState var1) { + byte var2 = ((aud)var1).evo$getTargetKind(); + if (var2 >= 0 && var2 < TARGET_KINDS.length) { + return switch (tn.$SwitchMap$evo$systems$client$modules$impl$render$Chams$TargetKind[TARGET_KINDS[var2].ordinal()]) { + case 1 -> this.targets.isEnable((-151243898 | 151243900) + (-151243898 & 151243900)); + case 2 -> this.targets.isEnable((284399893 | -284399892) + (284399893 & -284399892)); + case 3 -> this.targets.isEnable((-1578121973 ^ 1578121973) + ((-1578121973 & 1578121973) << 1)); + case 4, 5, 6 -> this.targets.isEnable((197356443 | -197356440) + (197356443 & -197356440)); + default -> throw new MatchException(null, null); + }; + } else { + return (boolean)(((0)) != 0); + } + } + + private int rampColor(float var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var6 = 0; + int var5 = 1030271925; + + while (true) { + switch (var5) { + case -1981100420: + if (var1 > 0.25F) { + var5 = 2059985587; + } else { + var5 = 934175918; + } + break; + case -1939488743: + if (var1 > 0.5F) { + var5 = -137109482; + } else { + var5 = -1981100420; + } + break; + case -420247187: + return lerpRgb(var4, var3, var1 / 0.5F); + case -137109482: + return var2; + case 934175918: + var6 = var4; + var5 = 1951195831; + break; + case 1030271925: + default: + var2 = this.fullColor.getIntColor(); + var3 = this.warnColor.getIntColor(); + var4 = this.brokenColor.getIntColor(); + if (this.colorMode.is("Steps")) { + var5 = -1939488743; + } else { + var5 = 1777106759; + } + break; + case 1111251627: + return lerpRgb(var3, var2, (var1 - 0.5F) / 0.5F); + case 1777106759: + if (var1 >= 0.5F) { + var5 = 1111251627; + } else { + var5 = -420247187; + } + break; + case 1951195831: + return var6; + case 2059985587: + var6 = var3; + var5 = 1951195831; + } + } + } + + private static int applyPulse(int var0) { + float var1 = (float)((Math.sin(System.currentTimeMillis() / 190.0) + 1.0) * 0.5); + float var2 = 1.0F - 0.4F * var1; + int var3 = Math.round( + (var0 >> (-1732640087 | 1732640103) + (-1732640087 & 1732640103) & (-120253522 ^ 120253777) + ((-120253522 & 120253777) << 1)) * var2 + ); + int var4 = Math.round((var0 >> (-1906857487 | 1906857495) + (-1906857487 & 1906857495) & (868373212 | -868372957) + (868373212 & -868372957)) * var2); + int var5 = Math.round((var0 & (449031408 | -449031153) + (449031408 & -449031153)) * var2); + return var0 & (-925389887 | 908612671) + (-925389887 & 908612671) + | var3 << (1967025572 | -1967025556) + (1967025572 & -1967025556) + | var4 << (-705774337 ^ 705774345) + ((-705774337 & 705774345) << 1) + | var5; + } + + private static int lerpRgb(int var0, int var1, float var2) { + float var3 = Mth.clamp(var2, 0.0F, 1.0F); + int var4 = var1 >>> 24; + int var5 = Math.round( + Mth.lerp( + var3, + var0 >> 16, + var1 >> (-624606307 | 624606323) + (-624606307 & 624606323) & (1731987244 | -1731986989) + (1731987244 & -1731986989) + ) + ); + int var6 = Math.round( + Mth.lerp( + var3, + var0 >> 8, + var1 >> (-1509430173 ^ 1509430181) + ((-1509430173 & 1509430181) << 1) & (-138801403 ^ 138801658) + ((-138801403 & 138801658) << 1) + ) + ); + int var7 = Math.round( + Mth.lerp(var3, var0 & 255, var1 & (737627676 ^ -737627421) + ((737627676 & -737627421) << 1)) + ); + return var4 << (1275951243 ^ -1275951219) + ((1275951243 & -1275951219) << 1) + | var5 << (1069514864 ^ -1069514848) + ((1069514864 & -1069514848) << 1) + | var6 << (912934379 ^ -912934371) + ((912934379 & -912934371) << 1) + | var7; + } +} diff --git a/src/main/java/defpackage/tp.java b/src/main/java/defpackage/tp.java new file mode 100644 index 0000000..8e74d04 --- /dev/null +++ b/src/main/java/defpackage/tp.java @@ -0,0 +1,163 @@ +package defpackage; + +@rn(name = "AspectRatio", category = rl.RENDER, description = "Stretches the world to a custom aspect ratio with a springy transition") +public final class tp extends rm { + public static final tp INSTANCE = new tp(); + private static final String MODE_4_3 = "4:3"; + private static final String MODE_5_4 = "5:4"; + private static final String MODE_3_2 = "3:2"; + private static final String MODE_16_10 = "16:10"; + private static final String MODE_1_1 = "1:1"; + private static final String MODE_CUSTOM = "Custom"; + private static final float RATIO_4_3 = 1.3333334F; + private static final float RATIO_5_4 = 1.25F; + private static final float RATIO_3_2 = 1.5F; + private static final float RATIO_16_10 = 1.6F; + private static final float RATIO_1_1 = 1.0F; + private static final float DEFAULT_DURATION_MS = 520.0F; + private final sg modeSetting; + private final sm customSetting; + private final sm durationSetting; + private final ct ratioSpring; + private boolean animating; + + private tp() { + String var10003 = "Ratio"; + String[] var10004 = new String[6]; + var10004[0] = "4:3"; + var10004[1] = "5:4"; + var10004[2] = "3:2"; + var10004[3] = "16:10"; + var10004[4] = "1:1"; + var10004[5] = "Custom"; + this.modeSetting = new sg(var10003, var10004) + .describe( + "4:3", + "Classic stretched 4:3" + ) + .describe( + "5:4", + "Even narrower 5:4" + ) + .describe( + "3:2", + "Mild stretch 3:2" + ) + .describe( + "16:10", + "Barely noticeable 16:10" + ) + .describe( + "1:1", + "Square, maximum stretch" + ) + .describe( + "Custom", + "Pick any width-to-height ratio" + ) + .description( + "Aspect ratio the world is rendered with" + ); + this.customSetting = new sm( + "Custom ratio", + 1.33F, + 0.5F, + 3.0F, + 0.01F, + () -> this.modeSetting.is("Custom") + ) + .description( + "Width divided by height of the custom ratio" + ); + this.durationSetting = new sm( + "Stretch time", 520.0F, 100.0F, 1500.0F, 10.0F + ) + .description( + "Length of the springy stretch animation in milliseconds" + ); + this.ratioSpring = ct.transformMillis(520.0F, 0.0F); + } + + public float stretchWidth(float var1, float var2) { + if (!(var2 <= 0.0F) && !(var1 <= 0.0F)) { + float var3 = var1 / var2; + boolean var4 = this.isEnabled(); + if (!var4 && !this.animating) { + return var1; + } + + if (!this.animating) { + this.ratioSpring.jumpTo(var3); + this.animating = (boolean)(((1)) != 0); + } + + this.ratioSpring.setBaseMillis(this.durationSetting.getCurrent()); + float var5 = this.ratioSpring.update(var4 ? this.targetRatio() : var3); + if (!var4 && this.ratioSpring.isSettled()) { + this.animating = (boolean)(((0)) != 0); + return var1; + } else { + return var2 * var5; + } + } else { + return var1; + } + } + + private float targetRatio() { + int var1 = -879029633; + + while (true) { + switch (var1) { + case -1566809294: + return 1.25F; + case -879029633: + default: + if (this.modeSetting.is("5:4")) { + var1 = -1566809294; + } else { + var1 = -56939887; + } + break; + case -91589899: + return this.customSetting.getCurrent(); + case -56939887: + if (this.modeSetting.is("3:2")) { + var1 = 1621215459; + } else { + var1 = 1282388401; + } + break; + case 307516287: + if (this.modeSetting.is("Custom")) { + var1 = -91589899; + } else { + var1 = 1569917409; + } + break; + case 654087411: + return 1.0F; + case 1282388401: + if (this.modeSetting.is("16:10")) { + var1 = 2057090392; + } else { + var1 = 1506596230; + } + break; + case 1506596230: + if (this.modeSetting.is("1:1")) { + var1 = 654087411; + } else { + var1 = 307516287; + } + break; + case 1569917409: + return 1.3333334F; + case 1621215459: + return 1.5F; + case 2057090392: + return 1.6F; + } + } + } +} diff --git a/src/main/java/defpackage/tq.java b/src/main/java/defpackage/tq.java new file mode 100644 index 0000000..c8a2a64 --- /dev/null +++ b/src/main/java/defpackage/tq.java @@ -0,0 +1,553 @@ +package defpackage; + +import java.util.List; +import net.minecraft.util.Mth; + +@rn(name = "BetterMinecraft", category = rl.RENDER, description = "Scale animation for containers, flying item swaps and smooth chat messages") +public final class tq extends rm { + public static final tq INSTANCE = new tq(); + private static final long OPEN_DURATION_MS = 130L; + private static final float MIN_SCALE = 0.86F; + private static final float SCALE_RANGE = 0.14F; + private static final float MIN_CLOSE_SCALE = 0.02F; + private static final int CHAT_MESSAGES_INDEX = 0; + private static final int CHAT_FADE_INDEX = 1; + private static final int CHAT_INPUT_INDEX = 2; + private static final float CHAT_SLIDE_RATIO = 0.8F; + private static final float CHAT_INPUT_OFFSET = 8.0F; + private static final float BACK_OVERSHOOT = 1.70158F; + private static final int SWAP_SLOTS_INDEX = 0; + private static final int SWAP_CURSOR_INDEX = 1; + public final si animate = si.create( + "Animate", + List.of( + "Storages", + "Inventory" + ) + ) + .describe( + "Storages", + "Scale chests, barrels and shulker screens open" + ) + .describe( + "Inventory", + "Scale your own inventory screen open" + ) + .description("Screens that open with a scale animation"); + public final sm closeSmoothness = new sm( + "Fade Smoothness", 110.0F, 30.0F, 600.0F, 10.0F + ) + .description( + "Duration of the close animation in milliseconds. Higher is smoother" + ); + public final si chat = si.create( + "Chat", + List.of( + "Messages", + "Fade", + "Input Field" + ) + ) + .describe( + "Messages", + "Slide new chat lines in instead of popping them" + ) + .describe( + "Fade", + "Fade old chat lines out instead of cutting them" + ) + .describe( + "Input Field", + "Animate the chat input box opening and closing" + ) + .description("Chat parts that animate"); + public final sm chatSmoothness = new sm( + "Chat Smoothness", 150.0F, 30.0F, 800.0F, 10.0F + ) + .description( + "Duration of the chat animations in milliseconds. Higher is smoother" + ); + public final si swap = si.create( + "Item Swap", + List.of( + "Slots", + "Cursor" + ) + ) + .describe( + "Slots", + "Fly items between slots instead of teleporting them" + ) + .describe( + "Cursor", + "Fly items between slots and the cursor stack" + ) + .description( + "Container item movement that animates instead of teleporting" + ); + public final sm swapSmoothness = new sm( + "Swap Smoothness", 140.0F, 40.0F, 600.0F, 10.0F + ) + .description( + "Duration of the item flight in milliseconds. Higher is smoother" + ); + public final rz swapCurve = new rz("Swap Curve") + .description( + "Easing of the item flight. Drag the points, right click to add or remove them" + ); + + private tq() { + } + + private long closeDurationMs() { + return (long)this.closeSmoothness.getCurrent(); + } + + private long chatDurationMs() { + return (long)this.chatSmoothness.getCurrent(); + } + + private long swapDurationMs() { + return (long)this.swapSmoothness.getCurrent(); + } + + public boolean animateStorages() { + int var2 = 0; + int var1 = -905398683; + + while (true) { + switch (var1) { + case -2017261639: + var2 = 0; + var1 = 1757801390; + break; + case -1652058138: + var2 = 1; + var1 = 1757801390; + break; + case -905398683: + default: + if (this.isEnabled()) { + var1 = 975184618; + } else { + var1 = -2017261639; + } + break; + case 975184618: + if (this.animate.isEnable((-1174201670 | 1174201670) + (-1174201670 & 1174201670))) { + var1 = -1652058138; + } else { + var1 = -2017261639; + } + break; + case 1757801390: + return (boolean)((var2) != 0); + } + } + } + + public boolean animateInventory() { + int var2 = 0; + int var1 = 708248702; + + while (true) { + switch (var1) { + case -1226695515: + var2 = 1; + var1 = 2057930395; + break; + case 708248702: + default: + if (this.isEnabled()) { + var1 = 1228171389; + } else { + var1 = 1777861656; + } + break; + case 1228171389: + if (this.animate.isEnable((-1437300818 | 1437300819) + (-1437300818 & 1437300819))) { + var1 = -1226695515; + } else { + var1 = 1777861656; + } + break; + case 1777861656: + var2 = 0; + var1 = 2057930395; + break; + case 2057930395: + return (boolean)((var2) != 0); + } + } + } + + public boolean animateChatMessages() { + int var2 = 0; + int var1 = 878353419; + + while (true) { + switch (var1) { + case -1911091577: + var2 = 0; + var1 = 1416484737; + break; + case 878353419: + default: + if (this.isEnabled()) { + var1 = 1511323574; + } else { + var1 = -1911091577; + } + break; + case 1416484737: + return (boolean)((var2) != 0); + case 1511323574: + if (this.chat.isEnable((484862034 | -484862034) + (484862034 & -484862034))) { + var1 = 1899503903; + } else { + var1 = -1911091577; + } + break; + case 1899503903: + var2 = 1; + var1 = 1416484737; + } + } + } + + public boolean fadeChatMessages() { + int var2 = 0; + int var1 = 488561923; + + while (true) { + switch (var1) { + case -1751754688: + return (boolean)((var2) != 0); + case -765111818: + var2 = 0; + var1 = -1751754688; + break; + case 71425725: + var2 = 1; + var1 = -1751754688; + break; + case 243829657: + if (this.chat.isEnable((-247234470 ^ 247234471) + ((-247234470 & 247234471) << 1))) { + var1 = 71425725; + } else { + var1 = -765111818; + } + break; + case 488561923: + default: + if (this.isEnabled()) { + var1 = 243829657; + } else { + var1 = -765111818; + } + } + } + } + + public boolean animateChatInput() { + int var2 = 0; + int var1 = 876221020; + + while (true) { + switch (var1) { + case -922288157: + return (boolean)((var2) != 0); + case -886654741: + var2 = 1; + var1 = -922288157; + break; + case 876221020: + default: + if (this.isEnabled()) { + var1 = 1149403821; + } else { + var1 = 1940730557; + } + break; + case 1149403821: + if (this.chat.isEnable((-1968846937 | 1968846939) + (-1968846937 & 1968846939))) { + var1 = -886654741; + } else { + var1 = 1940730557; + } + break; + case 1940730557: + var2 = 0; + var1 = -922288157; + } + } + } + + public boolean animateSwaps() { + int var2 = 0; + int var1 = -1238678235; + + while (true) { + switch (var1) { + case -1238678235: + default: + if (!this.animateSlotSwaps()) { + var1 = -1105512509; + } else { + var1 = 1514159384; + } + break; + case -1105512509: + if (this.animateCursorSwaps()) { + var1 = 1514159384; + } else { + var1 = 1956945612; + } + break; + case 853788669: + return (boolean)((var2) != 0); + case 1514159384: + var2 = 1; + var1 = 853788669; + break; + case 1956945612: + var2 = 0; + var1 = 853788669; + } + } + } + + public boolean animateSlotSwaps() { + int var2 = 0; + int var1 = -959098129; + + while (true) { + switch (var1) { + case -959098129: + default: + if (this.isEnabled()) { + var1 = 142485303; + } else { + var1 = -385430180; + } + break; + case -385430180: + var2 = 0; + var1 = 1878000822; + break; + case 142485303: + if (this.swap.isEnable((616977530 | -616977530) + (616977530 & -616977530))) { + var1 = 609199004; + } else { + var1 = -385430180; + } + break; + case 609199004: + var2 = 1; + var1 = 1878000822; + break; + case 1878000822: + return (boolean)((var2) != 0); + } + } + } + + public boolean animateCursorSwaps() { + int var2 = 0; + int var1 = 1778426072; + + while (true) { + switch (var1) { + case -1981317885: + if (this.swap.isEnable((-386151059 | 386151060) + (-386151059 & 386151060))) { + var1 = 1770794915; + } else { + var1 = -967117173; + } + break; + case -967117173: + var2 = 0; + var1 = 1751041672; + break; + case 1751041672: + return (boolean)((var2) != 0); + case 1770794915: + var2 = 1; + var1 = 1751041672; + break; + case 1778426072: + default: + if (this.isEnabled()) { + var1 = -1981317885; + } else { + var1 = -967117173; + } + } + } + } + + public float swapEase(long var1) { + return this.swapCurve.evaluate(clamp01((float)(System.currentTimeMillis() - var1) / (float)this.swapDurationMs())); + } + + public boolean swapFinished(long var1) { + int var4 = 0; + int var3 = -1682277801; + + while (true) { + switch (var3) { + case -2047499367: + var4 = 1; + var3 = -784201184; + break; + case -1682277801: + default: + if (System.currentTimeMillis() - var1 >= this.swapDurationMs()) { + var3 = -2047499367; + } else { + var3 = -1319606193; + } + break; + case -1319606193: + var4 = 0; + var3 = -784201184; + break; + case -784201184: + return (boolean)((var4) != 0); + } + } + } + + public float openScale(long var1) { + float var3 = clamp01((float)(System.currentTimeMillis() - var1) / 130.0F); + return 0.86F + 0.14F * easeInOutQuad(var3); + } + + public float openEase(long var1) { + return easeInOutQuad(clamp01((float)(System.currentTimeMillis() - var1) / 130.0F)); + } + + public float closeEase(long var1) { + return easeInOutQuad(clamp01((float)(System.currentTimeMillis() - var1) / (float)this.closeDurationMs())); + } + + public float closeScale(long var1, float var3) { + float var4 = clamp01((float)(System.currentTimeMillis() - var1) / (float)this.closeDurationMs()); + return Math.max(var3 * (1.0F - easeInOutQuad(var4)), 0.02F); + } + + public boolean closeFinished(long var1) { + int var4 = 0; + int var3 = -1635605816; + + while (true) { + switch (var3) { + case -2111154968: + var4 = 0; + var3 = -2076300330; + break; + case -2076300330: + return (boolean)((var4) != 0); + case -1635605816: + default: + if (System.currentTimeMillis() - var1 >= this.closeDurationMs()) { + var3 = 646119778; + } else { + var3 = -2111154968; + } + break; + case 646119778: + var4 = 1; + var3 = -2076300330; + } + } + } + + public float chatSlideOffset(long var1, int var3) { + return var3 * 0.8F * (1.0F - easeOutCubic(this.chatProgress(var1))); + } + + public float chatMessageAlpha(long var1) { + return easeInOutSine(this.chatProgress(var1)); + } + + public float chatInputOffset(long var1) { + return 8.0F * easeInBack(1.0F - this.chatProgress(var1)); + } + + public boolean chatAnimationFinished(long var1) { + int var4 = 0; + int var3 = -254787028; + + while (true) { + switch (var3) { + case -907184417: + return (boolean)((var4) != 0); + case -500005696: + var4 = 1; + var3 = -907184417; + break; + case -254787028: + default: + if (System.currentTimeMillis() - var1 >= this.chatDurationMs()) { + var3 = -500005696; + } else { + var3 = 1318475808; + } + break; + case 1318475808: + var4 = 0; + var3 = -907184417; + } + } + } + + private float chatProgress(long var1) { + return clamp01((float)(System.currentTimeMillis() - var1) / (float)this.chatDurationMs()); + } + + private static float clamp01(float var0) { + return Mth.clamp(var0, 0.0F, 1.0F); + } + + private static float easeInOutQuad(float var0) { + float var2 = 0.0F; + int var1 = 1353123775; + + while (true) { + switch (var1) { + case -651449131: + return var2; + case 1353123775: + default: + if (var0 < 0.5F) { + var1 = 1654610989; + } else { + var1 = 1868673401; + } + break; + case 1654610989: + var2 = 2.0F * var0 * var0; + var1 = -651449131; + break; + case 1868673401: + var2 = 1.0F - (float)Math.pow(-2.0F * var0 + 2.0F, 2.0) / 2.0F; + var1 = -651449131; + } + } + } + + private static float easeOutCubic(float var0) { + float var1 = 1.0F - var0; + return 1.0F - var1 * var1 * var1; + } + + private static float easeInOutSine(float var0) { + return 0.5F - (float)Math.cos(var0 * Math.PI) * 0.5F; + } + + private static float easeInBack(float var0) { + float var1 = var0 * var0; + return 2.70158F * var1 * var0 - 1.70158F * var1; + } +} diff --git a/src/main/java/defpackage/tr.java b/src/main/java/defpackage/tr.java new file mode 100644 index 0000000..663e6dc --- /dev/null +++ b/src/main/java/defpackage/tr.java @@ -0,0 +1,1956 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.concurrent.ThreadLocalRandom; +import java.util.function.Supplier; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.Camera; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.core.BlockPos.MutableBlockPos; +import net.minecraft.core.Direction.Axis; +import net.minecraft.util.Mth; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Biome.Precipitation; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.Heightmap.Types; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.VoxelShape; +import org.joml.Vector3fc; + +@rn(name = "BetterRain", description = "Realistic rain with single droplets, splash rings and wet ground", category = rl.RENDER) +public final class tr extends rm { + private static final int MAX_DROPS = 9000; + private static final float DROP_AREA_FACTOR = 4.0F; + private static final float FALL_SPEED_BASE = 9.0F; + private static final float SPEED_JITTER_MIN = 0.82F; + private static final float SPEED_JITTER_MAX = 1.18F; + private static final float STREAK_TIME = 0.032F; + private static final float STREAK_WIDTH = 0.025F; + private static final float STREAK_MIN_ANGULAR_WIDTH = 0.002F; + private static final float STREAK_BODY_SPLIT = 0.45F; + private static final float STREAK_HEAD_ALPHA = 0.45F; + private static final float ALPHA_JITTER_MIN = 0.55F; + private static final float ALPHA_JITTER_MAX = 1.15F; + private static final double SPAWN_CEILING = 9.0; + private static final double SPAWN_CEILING_SPAN = 3.0; + private static final double SPAWN_FLOOR_MARGIN = 6.0; + private static final double RECYCLE_RADIUS_GAIN = 1.3; + private static final double NEAR_FADE_START = 0.35; + private static final double NEAR_FADE_END = 1.4; + private static final int SPAWN_ATTEMPTS = 3; + private static final float WIND_SPEED_MAX = 3.2F; + private static final float WIND_GUST_AMPLITUDE = 0.22F; + private static final double WIND_GUST_RATE = 0.55; + private static final double WIND_TURN_RATE = 0.035; + private static final int SPLASH_CAPACITY = 128; + private static final int SPLASH_SEGMENTS = 16; + private static final long SPLASH_LIFETIME_MS = 360L; + private static final float SPLASH_START_RADIUS = 0.05F; + private static final float SPLASH_END_RADIUS = 0.26F; + private static final float SPLASH_RING_WIDTH = 0.032F; + private static final float SPLASH_ALPHA = 0.5F; + private static final double SPLASH_MAX_DISTANCE = 16.0; + private static final int SPLASH_IMPACT_DIVISOR = 2; + private static final float SURFACE_LIFT = 0.012F; + private static final long SCAN_INTERVAL_MS = 700L; + private static final float FLUID_SURFACE_INSET = 0.12F; + private static final float WET_EDGE_FADE_START = 0.62F; + private static final float WET_WRAP = 1024.0F; + private static final float WET_RIPPLE_SCALE = 0.85F; + private static final float WETNESS_RISE_PER_SECOND = 0.22F; + private static final float WETNESS_DRY_PER_SECOND = 0.08F; + private static final float WETNESS_MIN_VISIBLE = 0.02F; + private static final float RAIN_MIN_VISIBLE = 0.02F; + private static final int COVERAGE_PROBES = 12; + private static final float COVERAGE_RESPONSE_PER_SECOND = 1.5F; + private static final String STYLE_REFLECTIONS = "Reflections"; + private static final String STYLE_DECALS = "Decals"; + private static final String QUALITY_LOW = "Low"; + private static final String QUALITY_MEDIUM = "Medium"; + private static final String QUALITY_HIGH = "High"; + private static final String QUALITY_ULTRA = "Ultra"; + private static final float QUALITY_INDEX_LOW = 0.0F; + private static final float QUALITY_INDEX_MEDIUM = 1.0F; + private static final float QUALITY_INDEX_HIGH = 2.0F; + private static final float QUALITY_INDEX_ULTRA = 3.0F; + private static final float REFLECTION_DARKENING_SCALE = 0.4F; + private static final double MAX_FRAME_SECONDS = 0.1; + private static final long TIME_PERIOD_MS = 600000L; + private static final float MILLIS_PER_SECOND = 1000.0F; + private static final double TAU = Math.PI * 2; + private static final float BEHIND_CAMERA_DOT = -0.35F; + private static final double BEHIND_CAMERA_MIN_DISTANCE = 3.0; + private final sm densitySetting = new sm("Density", 0.8F, 0.1F, 3.0F, 0.1F) + .description( + "How many droplets fall around you" + ); + private final sm speedSetting = new sm( + "Fall speed", 1.0F, 0.4F, 2.0F, 0.05F + ) + .description("How fast the droplets fall"); + private final sm sizeSetting = new sm("Drop size", 1.0F, 0.5F, 2.5F, 0.1F) + .description( + "Length and width of a single droplet" + ); + private final sm radiusSetting = new sm("Radius", 16.0F, 8.0F, 32.0F, 1.0F) + .description( + "Distance around you the droplets spawn in" + ); + private final sm windSetting = new sm("Wind", 0.2F, 0.0F, 1.0F, 0.05F) + .description("Sideways drift of the droplets"); + private final sm opacitySetting = new sm("Opacity", 0.5F, 0.1F, 1.0F, 0.05F) + .description("Transparency of the droplets"); + private final ru splashSetting = new ru( + "Splashes", + (boolean)((((-1654652688 ^ 1654652689) + ((-1654652688 & 1654652689) << 1)) + ) != 0)) + .description( + "Expanding rings where droplets hit a surface" + ); + private final ru wetSetting = new ru( + "Wet ground", + (boolean)((((-1998857488 ^ 1998857489) + ((-1998857488 & 1998857489) << 1)) + ) != 0)) + .description( + "Makes surfaces look soaked while it rains" + ); + private final sg wetStyleSetting; + private final sm wetStrengthSetting; + private final sg reflectionQualitySetting; + private final sm reflectionStrengthSetting; + private final ru surfaceRippleSetting; + private final sm rippleSpeedSetting; + private final sm wetRadiusSetting; + private final ru hideVanillaSetting; + private final ru hideVanillaSplashSetting; + private final rx tintSetting; + private final double[] dropX; + private final double[] dropY; + private final double[] dropZ; + private final float[] dropSpeed; + private final float[] dropAlpha; + private final float[] dropGround; + private final int[] dropColumnX; + private final int[] dropColumnZ; + private int dropCount; + private final double[] splashX; + private final double[] splashY; + private final double[] splashZ; + private final long[] splashStart; + private int splashHead; + private int splashSize; + private int impactCounter; + private int[] columnX; + private int[] columnZ; + private float[] columnY; + private int columnCount; + private int scanBlockX; + private int scanBlockZ; + private int scanRadius; + private long scanTime; + private final MutableBlockPos scanPos; + private final MutableBlockPos precipitationPos; + private long lastFrameNanos; + private float wetness; + private float frameRainLevel; + private float rainCoverage; + private boolean coverageSampled; + private boolean frameActive; + private double windX; + private double windZ; + public static final tr INSTANCE = new tr(); + + private tr() { + String var10003 = "Wet style"; + Supplier var10004 = () -> this.wetSetting.isEnabled(); + String[] var10005 = new String[2]; + var10005[0] = "Reflections"; + var10005[1] = "Decals"; + this.wetStyleSetting = new sg(var10003, var10004, var10005) + .describe( + "Reflections", + "Screen-space reflections on every wet surface" + ) + .describe( + "Decals", + "Cheap glossy film with ripple rings on the ground" + ) + .description( + "How the wet surfaces are rendered" + ); + this.wetStrengthSetting = new sm( + "Wet strength", + 0.75F, + 0.1F, + 1.0F, + 0.05F, + () -> this.wetSetting.isEnabled() + ) + .description( + "How wet and dark the surfaces look" + ); + var10003 = "Reflection quality"; + var10004 = () -> { + int var2x = 0; + int var1x = 1934149679; + + while (true) { + switch (var1x) { + case -1706837372: + if (this.wetStyleSetting.is("Reflections")) { + var1x = 1672803991; + } else { + var1x = -474757413; + } + break; + case -935688700: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -474757413: + var2x = 0; + var1x = -935688700; + break; + case 1672803991: + var2x = 1; + var1x = -935688700; + break; + case 1934149679: + default: + if (this.wetSetting.isEnabled()) { + var1x = -1706837372; + } else { + var1x = -474757413; + } + } + } + }; + var10005 = new String[4]; + var10005[0] = "Low"; + var10005[1] = "Medium"; + var10005[2] = "High"; + var10005[3] = "Ultra"; + this.reflectionQualitySetting = new sg(var10003, var10004, var10005) + .describe( + "Low", + "Short rays, cheapest" + ) + .describe( + "Medium", + "Balanced ray budget" + ) + .describe( + "High", + "Long rays, sharper reflections" + ) + .describe( + "Ultra", + "Longest rays, heaviest" + ) + .description( + "Ray budget of the screen-space reflections" + ); + this.reflectionStrengthSetting = new sm( + "Reflection strength", 0.75F, 0.1F, 1.5F, 0.05F, () -> { + int var2x = 0; + int var1x = 1059588498; + + while (true) { + switch (var1x) { + case -944101552: + var2x = 0; + var1x = 2075424891; + break; + case -277490681: + if (this.wetStyleSetting.is("Reflections")) { + var1x = -138731655; + } else { + var1x = -944101552; + } + break; + case -138731655: + var2x = 1; + var1x = 2075424891; + break; + case 1059588498: + default: + if (this.wetSetting.isEnabled()) { + var1x = -277490681; + } else { + var1x = -944101552; + } + break; + case 2075424891: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description( + "How strongly surfaces mirror the world" + ); + this.surfaceRippleSetting = new ru( + "Surface ripples", + (boolean)(((1)) != 0), + () -> { + int var2x = 0; + int var1x = -1917476373; + + while (true) { + switch (var1x) { + case -1917476373: + default: + if (this.wetSetting.isEnabled()) { + var1x = 333651828; + } else { + var1x = -172407243; + } + break; + case -172407243: + var2x = 0; + var1x = 1610895243; + break; + case 333651828: + if (this.wetStyleSetting.is("Reflections")) { + var1x = 689869906; + } else { + var1x = -172407243; + } + break; + case 689869906: + var2x = 1; + var1x = 1610895243; + break; + case 1610895243: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description( + "Distorts the reflections with raindrop ripples" + ); + this.rippleSpeedSetting = new sm( + "Ripple speed", 1.0F, 0.1F, 3.0F, 0.1F, () -> { + int var2x = 0; + int var1x = -1688329886; + + while (true) { + switch (var1x) { + case -1688329886: + default: + if (this.wetSetting.isEnabled()) { + var1x = -1424158767; + } else { + var1x = 872909174; + } + break; + case -1424158767: + if (this.wetStyleSetting.is("Reflections")) { + var1x = -740928128; + } else { + var1x = 872909174; + } + break; + case -1223723211: + var2x = 1; + var1x = 1045803332; + break; + case -740928128: + if (this.surfaceRippleSetting.isEnabled()) { + var1x = -1223723211; + } else { + var1x = 872909174; + } + break; + case 872909174: + var2x = 0; + var1x = 1045803332; + break; + case 1045803332: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description("Speed of the reflected ripples"); + this.wetRadiusSetting = new sm("Wet radius", 14.0F, 6.0F, 24.0F, 1.0F, () -> { + int var2x = 0; + int var1x = -2140843568; + + while (true) { + switch (var1x) { + case -2140843568: + default: + if (this.wetSetting.isEnabled()) { + var1x = 869618676; + } else { + var1x = -1731635205; + } + break; + case -1731635205: + var2x = 0; + var1x = -1302965990; + break; + case -1302965990: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -280579523: + var2x = 1; + var1x = -1302965990; + break; + case 869618676: + if (this.wetStyleSetting.is("Decals")) { + var1x = -280579523; + } else { + var1x = -1731635205; + } + } + } + }) + .description( + "Distance the wet film is drawn around you" + ); + this.hideVanillaSetting = new ru( + "Hide vanilla rain", + (boolean)((((2031226006 | -2031226005) + (2031226006 & -2031226005)) + ) != 0)) + .description( + "Replaces the vanilla rain sheets with the custom droplets" + ); + this.hideVanillaSplashSetting = new ru( + "Hide vanilla splashes", + (boolean)((((-1939600197 | 1939600198) + (-1939600197 & 1939600198)) + ) != 0)) + .description( + "Removes the blocky vanilla splash particles on the ground" + ); + this.tintSetting = new rx( + "Tint", + new asu( + 196, + 214, + (32974235 | -32973997) + (32974235 & -32973997) + ) + ) + .description( + "Color of the droplets and the wet sheen" + ); + this.dropX = new double[9000]; + this.dropY = new double[9000]; + this.dropZ = new double[9000]; + this.dropSpeed = new float[9000]; + this.dropAlpha = new float[9000]; + this.dropGround = new float[9000]; + this.dropColumnX = new int[9000]; + this.dropColumnZ = new int[9000]; + this.splashX = new double[128]; + this.splashY = new double[128]; + this.splashZ = new double[128]; + this.splashStart = new long[128]; + this.columnX = new int[0]; + this.columnZ = new int[0]; + this.columnY = new float[0]; + this.scanBlockX = -2147483648; + this.scanBlockZ = -2147483648; + this.scanRadius = -1; + this.scanPos = new MutableBlockPos(); + this.precipitationPos = new MutableBlockPos(); + this.reflectionQualitySetting.set("Medium"); + } + + public boolean usesWetReflections() { + int var2 = 0; + int var1 = -919305186; + + while (true) { + switch (var1) { + case -1607343285: + if (this.wetSetting.isEnabled()) { + var1 = 160753762; + } else { + var1 = 2078338810; + } + break; + case -1467704790: + var2 = 1; + var1 = -1297070228; + break; + case -1368435891: + if (this.wetness > 0.02F) { + var1 = -1467704790; + } else { + var1 = 2078338810; + } + break; + case -1297070228: + return (boolean)((var2) != 0); + case -919305186: + default: + if (this.isEnabled()) { + var1 = -1607343285; + } else { + var1 = 2078338810; + } + break; + case 160753762: + if (this.wetStyleSetting.is("Reflections")) { + var1 = -1368435891; + } else { + var1 = 2078338810; + } + break; + case 2078338810: + var2 = 0; + var1 = -1297070228; + } + } + } + + public boolean usesWetRipples() { + return this.surfaceRippleSetting.isEnabled(); + } + + public float reflectionStrength() { + return this.reflectionStrengthSetting.getCurrent(); + } + + public float wetDarkening() { + return this.wetStrengthSetting.getCurrent() * 0.4F; + } + + public float wetAmount() { + return this.wetness; + } + + public float rippleSpeed() { + return this.rippleSpeedSetting.getCurrent(); + } + + public float rainStrength() { + return this.localRainLevel(); + } + + private float localRainLevel() { + return this.frameRainLevel * this.rainCoverage; + } + + public float reflectionQualityIndex() { + int var1 = 1552894445; + + while (true) { + switch (var1) { + case -2094161462: + return 2.0F; + case -805298701: + return 1.0F; + case 30783600: + return 3.0F; + case 468550504: + if (this.reflectionQualitySetting.is("High")) { + var1 = -2094161462; + } else { + var1 = 899051105; + } + break; + case 899051105: + if (this.reflectionQualitySetting.is("Ultra")) { + var1 = 30783600; + } else { + var1 = -805298701; + } + break; + case 1232032631: + return 0.0F; + case 1552894445: + default: + if (this.reflectionQualitySetting.is("Low")) { + var1 = 1232032631; + } else { + var1 = 468550504; + } + } + } + } + + @Override + public void onEnable() { + super.onEnable(); + this.reset(); + } + + @Override + public void onDisable() { + super.onDisable(); + this.reset(); + this.releaseReflections(); + } + + private void releaseReflections() { + aus.release(); + } + + private void reset() { + this.dropCount = 0; + this.splashHead = 0; + this.splashSize = 0; + this.columnCount = 0; + this.scanRadius = -1; + this.scanBlockX = -2147483648; + this.scanBlockZ = -2147483648; + this.wetness = 0.0F; + this.rainCoverage = 0.0F; + this.coverageSampled = (boolean)(((0)) != 0); + this.lastFrameNanos = (-841315360934827612L ^ 841315360934827612L) + ((-841315360934827612L & 841315360934827612L) << 1); + } + + public boolean hidesVanillaRain() { + int var2 = 0; + int var1 = 1533268410; + + while (true) { + switch (var1) { + case -1980542863: + return (boolean)((var2) != 0); + case -1267613423: + var2 = 0; + var1 = -1980542863; + break; + case -347318595: + var2 = 1; + var1 = -1980542863; + break; + case 714019240: + if (this.hideVanillaSetting.isEnabled()) { + var1 = 1071409559; + } else { + var1 = -1267613423; + } + break; + case 1071409559: + if (this.frameActive) { + var1 = -347318595; + } else { + var1 = -1267613423; + } + break; + case 1533268410: + default: + if (this.isEnabled()) { + var1 = 714019240; + } else { + var1 = -1267613423; + } + } + } + } + + public boolean hidesVanillaSplashes() { + int var2 = 0; + int var1 = 582151046; + + while (true) { + switch (var1) { + case -1528932800: + if (this.frameActive) { + var1 = 1485593109; + } else { + var1 = 165646648; + } + break; + case 165646648: + var2 = 0; + var1 = 1198838785; + break; + case 582151046: + default: + if (this.isEnabled()) { + var1 = 1385897110; + } else { + var1 = 165646648; + } + break; + case 1198838785: + return (boolean)((var2) != 0); + case 1385897110: + if (this.hideVanillaSplashSetting.isEnabled()) { + var1 = -1528932800; + } else { + var1 = 165646648; + } + break; + case 1485593109: + var2 = 1; + var1 = 1198838785; + } + } + } + + public void onWorldRender(LevelRenderContext var1) { + this.frameActive = (boolean)(((0)) != 0); + if (this.isEnabled() && mc.player != null && mc.level != null) { + PoseStack var2 = var1.poseStack(); + SubmitNodeCollector var3 = var1.submitNodeCollector(); + Camera var4 = mc.getEntityRenderDispatcher().camera; + if (var2 != null && var3 != null && var4 != null) { + ClientLevel var5 = mc.level; + float var6 = mc.getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((-665987122 | 665987122) + (-665987122 & 665987122))) != 0)); + this.frameRainLevel = this.rainStrength(var5, var6); + this.frameActive = (boolean)(((this.frameRainLevel > 0.02F + ? 1: (-378159891 ^ 378159891) + ((-378159891 & 378159891) << 1))) != 0); + float var7 = this.frameDelta(); + Vec3 var8 = var4.position(); + this.updateCoverage(var5, var8, var7); + this.updateWetness(var7); + this.updateWind(); + if (this.frameActive || this.dropCount != 0 || this.splashSize != 0) { + this.simulate(var5, var8, var7); + int var9 = this.tintSetting.getIntColor() & 16777215; + this.submitDroplets(var3, var2, var4, var8, var9); + this.submitSplashes(var3, var2, var4, var8, var9); + } + } + } + } + + public void onWorldDraw(LevelRenderContext var1) { + Camera var2 = null; + atd var3 = null; + Vec3 var4 = null; + int var5 = 0; + float var6 = 0.0F; + BufferBuilder var7 = null; + int var8 = 397461930; + + while (true) { + switch (var8) { + case -1310980301: + if (this.wetStyleSetting.is("Decals")) { + var8 = -708900059; + } else { + var8 = -567781745; + } + break; + case -708900059: + if (mc.level == null) { + var8 = -567781745; + } else { + var8 = 741274104; + } + break; + case -567781745: + return; + case -488901600: + var5 = this.tintSetting.getIntColor() & 16777215; + var6 = (float)( + System.currentTimeMillis() % ((1065960968164314735L ^ -1065960968163714735L) + ((1065960968164314735L & -1065960968163714735L) << 1)) + ) + / 1000.0F; + var3.use(); + var3.setResolution(mc.getWindow().getWidth(), mc.getWindow().getHeight()); + var3.setTime(var6); + var3.setTintColor( + (var5 >> (-1693545370 ^ 1693545386) + ((-1693545370 & 1693545386) << 1) & (956208320 ^ -956208065) + ((956208320 & -956208065) << 1)) + / 255.0F, + (var5 >> (1674960648 ^ -1674960640) + ((1674960648 & -1674960640) << 1) & (1818893044 ^ -1818892789) + ((1818893044 & -1818892789) << 1)) + / 255.0F, + (var5 & (1601070161 | -1601069906) + (1601070161 & -1601069906)) / 255.0F + ); + var3.setFade(this.wetness * this.wetStrengthSetting.getCurrent()); + var3.setProgress(this.localRainLevel()); + var3.setRange(0.85F); + var3.setCameraPos(wrapCoordinate(var4.x), (float)var4.y, wrapCoordinate(var4.z)); + arj.setCurrentLayer(arj.positionColor()); + var7 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_COLOR); + this.emitSurfaceQuads(var7, var2, var4); + arj.drawCurrent(var7); + return; + case 55864545: + if (this.wetSetting.isEnabled()) { + var8 = -1310980301; + } else { + var8 = -567781745; + } + break; + case 165271634: + var4 = var2.position(); + this.rebuildSurfaceCache(mc.level, var4); + if (this.columnCount == 0) { + var8 = 437385542; + } else { + var8 = -488901600; + } + break; + case 254658301: + return; + case 397461930: + default: + if (this.isEnabled()) { + var8 = 55864545; + } else { + var8 = -567781745; + } + break; + case 437385542: + return; + case 741274104: + if (this.wetness <= 0.02F) { + var8 = 1952770734; + } else { + var8 = 1800211461; + } + break; + case 1800211461: + var2 = mc.getEntityRenderDispatcher().camera; + var3 = atb.worldWetGroundProgram; + if (var2 != null) { + var8 = 2022459050; + } else { + var8 = 254658301; + } + break; + case 1952770734: + return; + case 2022459050: + if (var3 == null) { + var8 = 254658301; + } else { + var8 = 165271634; + } + } + } + } + + private float frameDelta() { + long var1 = (5115088920242951381L ^ -5115088920242951381L) + ((5115088920242951381L & -5115088920242951381L) << 1); + double var3 = 0.0; + int var5 = -753533109; + + while (true) { + switch (var5) { + case -2026143777: + var3 = (var1 - this.lastFrameNanos) / 1.0E9; + this.lastFrameNanos = var1; + return (float)Math.min(var3, 0.1); + case -1431068620: + this.lastFrameNanos = var1; + return 0.0F; + case -753533109: + } + + var1 = System.nanoTime(); + if (this.lastFrameNanos == (8649758037746290463L | -8649758037746290463L) + (8649758037746290463L & -8649758037746290463L)) { + var5 = -1431068620; + } else { + var5 = -2026143777; + } + } + } + + private float rainStrength(ClientLevel var1, float var2) { + float var3 = 0.0F; + int var4 = -1212127870; + + while (true) { + switch (var4) { + case -1212127870: + default: + var3 = var1.getRainLevel(var2); + if (var3 <= 0.02F) { + var4 = -1165002161; + } else { + var4 = 1149890896; + } + break; + case -1165002161: + return 0.0F; + case 1149890896: + return Mth.clamp(var3, 0.0F, 1.0F); + } + } + } + + private boolean isRainColumn(ClientLevel var1, int var2, int var3, float var4) { + Biome var5 = null; + int var7 = 0; + int var6 = -576227439; + + while (true) { + switch (var6) { + case -2127938668: + var7 = 1; + var6 = -2072910498; + break; + case -2072910498: + return (boolean)((var7) != 0); + case -576227439: + default: + this.precipitationPos.set(var2, Mth.floor(var4), var3); + var5 = (Biome)var1.getBiome(this.precipitationPos).value(); + if (var5.getPrecipitationAt(this.precipitationPos, var1.getSeaLevel()) == Precipitation.RAIN) { + var6 = -2127938668; + } else { + var6 = 1156466947; + } + break; + case 1156466947: + var7 = 0; + var6 = -2072910498; + } + } + } + + private void updateCoverage(ClientLevel var1, Vec3 var2, float var3) { + if (this.frameActive) { + float var4 = this.radiusSetting.getCurrent(); + ThreadLocalRandom var5 = ThreadLocalRandom.current(); + int var6 = 0; + + for (int var7 = 0; var7 < 12; var7++) { + double var8 = var5.nextDouble() * (Math.PI * 2); + double var10 = var4 * Math.sqrt(var5.nextDouble()); + int var12 = Mth.floor(var2.x + Math.cos(var8) * var10); + int var13 = Mth.floor(var2.z + Math.sin(var8) * var10); + float var14 = var1.getHeight(Types.MOTION_BLOCKING, var12, var13); + if (this.isRainColumn(var1, var12, var13, var14)) { + var6++; + } + } + + float var15 = var6 / 12.0F; + if (!this.coverageSampled) { + this.rainCoverage = var15; + this.coverageSampled = (boolean)(((1)) != 0); + } else { + float var16 = Math.min(1.0F, var3 * 1.5F); + this.rainCoverage = this.rainCoverage + (var15 - this.rainCoverage) * var16; + } + } + } + + private void updateWetness(float var1) { + float var2 = this.frameActive ? this.localRainLevel() : 0.0F; + float var3 = var2 > this.wetness ? 0.22F : 0.08F; + float var4 = var3 * var1; + if (Math.abs(var2 - this.wetness) <= var4) { + this.wetness = var2; + } else { + this.wetness = this.wetness + (var2 > this.wetness ? var4 : -var4); + } + } + + private void updateWind() { + double var1 = System.currentTimeMillis() % ((1606904270512999844L ^ -1606904270512399844L) + ((1606904270512999844L & -1606904270512399844L) << 1)) + / 1000.0; + double var3 = var1 * 0.035; + double var5 = 1.0 + Math.sin(var1 * 0.55) * 0.22F; + double var7 = this.windSetting.getCurrent() * 3.2F * var5; + this.windX = Math.cos(var3) * var7; + this.windZ = Math.sin(var3) * var7; + } + + private void simulate(ClientLevel var1, Vec3 var2, float var3) { + float var4 = 0.0F; + int var5 = 0; + float var6 = 0.0F; + double var7 = 0.0; + int var9 = 0; + int var10 = 0; + double var11 = 0.0; + double var13 = 0.0; + double var15 = 0.0; + int var17 = 0; + int var18 = 0; + double var19 = 0.0; + double var21 = 0.0; + int var23 = 0; + int var25 = 0; + int var26 = 0; + int var27 = 0; + int var24 = -1702668442; + + while (true) { + switch (var24) { + case -2111845729: + if (!this.respawn(var1, var2, var4, this.dropCount, (boolean)((var10) != 0))) { + var24 = 1465107542; + } else { + var24 = -1638188006; + } + break; + case -1981227364: + return; + case -1953930009: + var10--; + var24 = 1343196557; + break; + case -1859811814: + var23 = var26; + if (var23 != 0) { + var24 = 1407207288; + } else { + var24 = -736581033; + } + break; + case -1830941679: + var27 = 0; + var24 = -1813312644; + break; + case -1813312644: + var10 = var27; + var24 = -798881374; + break; + case -1788418718: + if (var18 != this.dropColumnZ[var10]) { + var24 = -1238353369; + } else { + var24 = -1080816591; + } + break; + case -1702668442: + default: + var4 = this.radiusSetting.getCurrent(); + if (this.frameActive) { + var24 = -1682643138; + } else { + var24 = -705856084; + } + break; + case -1682643138: + var25 = this.targetDropCount(var4); + var24 = 264983089; + break; + case -1638188006: + this.dropCount += 1; + var24 = -798881374; + break; + case -1238353369: + this.dropColumnX[var10] = var17; + this.dropColumnZ[var10] = var18; + this.dropGround[var10] = var1.getHeight(Types.MOTION_BLOCKING, var17, var18); + if (!this.isRainColumn(var1, var17, var18, this.dropGround[var10])) { + var24 = -22799589; + } else { + var24 = -1080816591; + } + break; + case -1207288115: + if (var19 * var19 + var21 * var21 < 256.0) { + var24 = 654917378; + } else { + var24 = -736581033; + } + break; + case -1080816591: + var19 = var11 - var2.x; + var21 = var13 - var2.z; + if (var15 <= this.dropGround[var10]) { + var24 = 455631647; + } else { + var24 = -516997460; + } + break; + case -1078659993: + this.dropX[var10] = var11; + this.dropY[var10] = var15; + this.dropZ[var10] = var13; + var24 = -1953930009; + break; + case -798881374: + if (this.dropCount < var5) { + var24 = -2111845729; + } else { + var24 = -1981227364; + } + break; + case -736581033: + if (var23 == 0) { + var24 = 1025447260; + } else { + var24 = -84297901; + } + break; + case -705856084: + var25 = 0; + var24 = 264983089; + break; + case -668477482: + var27 = 1; + var24 = -1813312644; + break; + case -554224486: + if (var10 >= var5) { + var24 = -84297901; + } else { + var24 = -1078659993; + } + break; + case -516997460: + var26 = 0; + var24 = -1859811814; + break; + case -84297901: + if (var10 >= var5) { + var24 = 1974707866; + } else { + var24 = 1017384497; + } + break; + case -22799589: + if (this.respawn(var1, var2, var4, var10, (boolean)((((1632204534 | -1632204534) + (1632204534 & -1632204534))) != 0))) { + var24 = 715453318; + } else { + var24 = 1891302311; + } + break; + case 84721981: + if (this.dropCount == 0) { + var24 = -668477482; + } else { + var24 = -1830941679; + } + break; + case 264983089: + var5 = var25; + var6 = 9.0F * this.speedSetting.getCurrent(); + var7 = var4 * 1.3 * var4 * 1.3; + var9 = (this.splashSetting.isEnabled()) ? 1 : 0; + var10 = this.dropCount - (1); + var24 = 1343196557; + break; + case 455631647: + var26 = 1; + var24 = -1859811814; + break; + case 546976679: + var11 = this.dropX[var10] + this.windX * var3; + var13 = this.dropZ[var10] + this.windZ * var3; + var15 = this.dropY[var10] - var6 * this.dropSpeed[var10] * var3; + var17 = Mth.floor(var11); + var18 = Mth.floor(var13); + if (var17 == this.dropColumnX[var10]) { + var24 = -1788418718; + } else { + var24 = -1238353369; + } + break; + case 654917378: + this.impactCounter += 1; + if (this.impactCounter % 2== 0) { + var24 = 1585321194; + } else { + var24 = -736581033; + } + break; + case 715453318: + var24 = -1953930009; + break; + case 990062336: + this.dropCount -= 1; + this.moveDrop(this.dropCount, var10); + var24 = -1953930009; + break; + case 1017384497: + if (!this.respawn(var1, var2, var4, var10, (boolean)((((-1337521546 ^ 1337521546) + ((-1337521546 & 1337521546) << 1))) != 0))) { + var24 = 990062336; + } else { + var24 = -1953930009; + } + break; + case 1025447260: + if (!(var19 * var19 + var21 * var21 > var7)) { + var24 = -554224486; + } else { + var24 = -84297901; + } + break; + case 1343196557: + if (var10 >= 0) { + var24 = 546976679; + } else { + var24 = 84721981; + } + break; + case 1407207288: + if (var9 != 0) { + var24 = -1207288115; + } else { + var24 = -736581033; + } + break; + case 1465107542: + var24 = -1981227364; + break; + case 1585321194: + this.addSplash(var11, this.dropGround[var10], var13); + var24 = -736581033; + break; + case 1891302311: + this.dropCount -= 1; + this.moveDrop(this.dropCount, var10); + var24 = -1953930009; + break; + case 1974707866: + this.dropCount -= 1; + this.moveDrop(this.dropCount, var10); + var24 = -1953930009; + } + } + } + + private int targetDropCount(float var1) { + double var2 = Math.PI * var1 * var1; + return (int)Math.min(9000.0, var2 * this.densitySetting.getCurrent() * 4.0 * this.localRainLevel()); + } + + private void moveDrop(int var1, int var2) { + int var3 = -797317792; + + while (true) { + switch (var3) { + case -797317792: + default: + if (var1 == var2) { + var3 = 381053169; + } else { + var3 = 1688698222; + } + break; + case 381053169: + return; + case 1688698222: + this.dropX[var2] = this.dropX[var1]; + this.dropY[var2] = this.dropY[var1]; + this.dropZ[var2] = this.dropZ[var1]; + this.dropSpeed[var2] = this.dropSpeed[var1]; + this.dropAlpha[var2] = this.dropAlpha[var1]; + this.dropGround[var2] = this.dropGround[var1]; + this.dropColumnX[var2] = this.dropColumnX[var1]; + this.dropColumnZ[var2] = this.dropColumnZ[var1]; + return; + } + } + } + + private boolean respawn(ClientLevel var1, Vec3 var2, float var3, int var4, boolean var5) { + ThreadLocalRandom var6 = ThreadLocalRandom.current(); + + for (int var7 = 0; var7 < 3; var7++) { + double var8 = var6.nextDouble() * (Math.PI * 2); + double var10 = var3 * Math.sqrt(var6.nextDouble()); + double var12 = var2.x + Math.cos(var8) * var10; + double var14 = var2.z + Math.sin(var8) * var10; + int var16 = Mth.floor(var12); + int var17 = Mth.floor(var14); + float var18 = var1.getHeight(Types.MOTION_BLOCKING, var16, var17); + if (this.isRainColumn(var1, var16, var17, var18)) { + double var19 = var2.y + 9.0 + var6.nextDouble() * 3.0; + double var21 = Math.max(var18, var2.y - 6.0); + if (!(var19 <= var21)) { + this.dropX[var4] = var12; + this.dropZ[var4] = var14; + this.dropY[var4] = var5 ? var21 + var6.nextDouble() * (var19 - var21) : var19; + this.dropSpeed[var4] = (float)var6.nextDouble(0.82F, 1.18F); + this.dropAlpha[var4] = (float)var6.nextDouble(0.55F, 1.15F); + this.dropGround[var4] = var18; + this.dropColumnX[var4] = var16; + this.dropColumnZ[var4] = var17; + return (boolean)(((1)) != 0); + } + } + } + + return (boolean)(((0)) != 0); + } + + private void addSplash(double var1, double var3, double var5) { + int var7 = 0; + int var8 = -116675638; + + while (true) { + switch (var8) { + case -1126686000: + this.splashSize += 1; + var8 = 320990688; + break; + case -306560853: + this.splashHead = (this.splashHead + (391467823 ^ -391467822) + ((391467823 & -391467822) << 1)) + % ((-1381027719 ^ 1381027847) + ((-1381027719 & 1381027847) << 1)); + var8 = 320990688; + break; + case -116675638: + default: + var7 = (this.splashHead + this.splashSize) % (128); + if (this.splashSize < (-988744784 | 988744912) + (-988744784 & 988744912)) { + var8 = -1126686000; + } else { + var8 = -306560853; + } + break; + case 320990688: + this.splashX[var7] = var1; + this.splashY[var7] = var3; + this.splashZ[var7] = var5; + this.splashStart[var7] = System.currentTimeMillis(); + return; + } + } + } + + private void submitDroplets(SubmitNodeCollector var1, PoseStack var2, Camera var3, Vec3 var4, int var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + Vector3fc var11 = null; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = 0; + int var16 = 974474182; + + while (true) { + switch (var16) { + case 582511943: + var6 = 9.0F * this.speedSetting.getCurrent(); + var7 = this.sizeSetting.getCurrent(); + var8 = var6 * 0.032F * var7; + var9 = 0.025F * var7; + var10 = this.opacitySetting.getCurrent() * this.frameRainLevel; + var11 = var3.forwardVector(); + var12 = var11.x(); + var13 = var11.y(); + var14 = var11.z(); + var15 = this.dropCount; + var1.submitCustomGeometry(var2, arj.positionColorDepthNoWrite(), (var11x, var12x) -> { + float var13x = 0.0F; + float var14x = 0.0F; + float var15x = 0.0F; + float var16x = 0.0F; + int var17x = 0; + float var18x = 0.0F; + float var19x = 0.0F; + float var20x = 0.0F; + float var21x = 0.0F; + float var22x = 0.0F; + float var23x = 0.0F; + float var24x = 0.0F; + float var25x = 0.0F; + float var26x = 0.0F; + float var27 = 0.0F; + float var28 = 0.0F; + float var29 = 0.0F; + float var30 = 0.0F; + float var31 = 0.0F; + float var32 = 0.0F; + float var33 = 0.0F; + float var34 = 0.0F; + float var35 = 0.0F; + int var36 = 0; + int var37 = 0; + int var38 = 0; + int var39 = -749415779; + + while (true) { + switch (var39) { + case -1707118834: + var39 = 1825865055; + break; + case -1623409709: + var23x /= var26x; + var24x /= var26x; + var25x /= var26x; + var27 = Math.max(var9, var21x * 0.002F); + var28 = var8 * this.dropSpeed[var17x]; + var29 = var10 * var22x * this.dropAlpha[var17x]; + var30 = var18x - var14x * var28; + var31 = var19x - var15x * var28; + var32 = var20x - var16x * var28; + var33 = var18x - var14x * var28 * 0.45F; + var34 = var19x - var15x * var28 * 0.45F; + var35 = var20x - var16x * var28 * 0.45F; + var36 = withAlpha(var5, var29); + var37 = withAlpha(var5, var29 * 0.45F); + var38 = withAlpha(var5, 0.0F); + this.emitStreakSegment(var12x, var11x, var30, var31, var32, var33, var34, var35, var23x, var24x, var25x, var27, var38, var36); + this.emitStreakSegment(var12x, var11x, var33, var34, var35, var18x, var19x, var20x, var23x, var24x, var25x, var27, var36, var37); + var39 = 1825865055; + break; + case -1119169069: + var39 = 1825865055; + break; + case -959984870: + if (var17x < var15) { + var39 = 1174780233; + } else { + var39 = -360757082; + } + break; + case -838297494: + var39 = 1825865055; + break; + case -749415779: + default: + var13x = Mth.sqrt((float)(this.windX * this.windX + var6 * var6 + this.windZ * this.windZ)); + var14x = (float)(this.windX / var13x); + var15x = -var6 / var13x; + var16x = (float)(this.windZ / var13x); + var17x = 0; + var39 = -959984870; + break; + case -526540266: + var39 = 1825865055; + break; + case -360757082: + return; + case 127055242: + var23x = var15x * (var20x / var21x) - var16x * (var19x / var21x); + var24x = var16x * (var18x / var21x) - var14x * (var20x / var21x); + var25x = var14x * (var19x / var21x) - var15x * (var18x / var21x); + var26x = Mth.sqrt(var23x * var23x + var24x * var24x + var25x * var25x); + if (var26x <= 1.0E-4F) { + var39 = -1119169069; + } else { + var39 = -1623409709; + } + break; + case 1086757984: + var22x = (float)Mth.clamp((var21x - 0.35) / 1.0499999999999998, 0.0, 1.0); + if (var22x <= 0.0F) { + var39 = -838297494; + } else { + var39 = 127055242; + } + break; + case 1174780233: + var18x = (float)(this.dropX[var17x] - var4.x); + var19x = (float)(this.dropY[var17x] - var4.y); + var20x = (float)(this.dropZ[var17x] - var4.z); + var21x = Mth.sqrt(var18x * var18x + var19x * var19x + var20x * var20x); + if (var21x <= 0.0F) { + var39 = -526540266; + } else { + var39 = 1585566084; + } + break; + case 1585566084: + if (var21x > 3.0) { + var39 = 2141588167; + } else { + var39 = 1086757984; + } + break; + case 1825865055: + var17x++; + var39 = -959984870; + break; + case 2141588167: + if ((var18x * var12 + var19x * var13 + var20x * var14) / var21x < -0.35F) { + var39 = -1707118834; + } else { + var39 = 1086757984; + } + } + } + }); + return; + case 974474182: + default: + if (this.dropCount == 0) { + var16 = 1069285036; + } else { + var16 = 582511943; + } + break; + case 1069285036: + return; + } + } + } + + private void submitSplashes(SubmitNodeCollector var1, PoseStack var2, Camera var3, Vec3 var4, int var5) { + long var6 = (-4021282502204837136L | 4021282502204837136L) + (-4021282502204837136L & 4021282502204837136L); + float var8 = 0.0F; + Vector3fc var9 = null; + int var10 = 0; + int var11 = 0; + int var12 = -1589099406; + + while (true) { + switch (var12) { + case -1774646003: + if (var6 - this.splashStart[this.splashHead] >= (7560021694652587048L | -7560021694652586688L) + (7560021694652587048L & -7560021694652586688L)) { + var12 = -1399272457; + } else { + var12 = 420168679; + } + break; + case -1589099406: + default: + var6 = System.currentTimeMillis(); + var12 = -1440701577; + break; + case -1440701577: + if (this.splashSize > 0) { + var12 = -1774646003; + } else { + var12 = 420168679; + } + break; + case -1399272457: + this.splashHead = (this.splashHead + (-534014017 | 534014018) + (-534014017 & 534014018)) + % ((-1365495309 ^ 1365495437) + ((-1365495309 & 1365495437) << 1)); + this.splashSize -= 1; + var12 = -1440701577; + break; + case -1298050998: + return; + case 420168679: + if (this.splashSize == 0) { + var12 = -1298050998; + } else { + var12 = 1578540374; + } + break; + case 1578540374: + var8 = 0.5F * this.opacitySetting.getCurrent() * Math.max(this.frameRainLevel, this.wetness); + var9 = var3.forwardVector(); + var10 = this.splashSize; + var11 = this.splashHead; + var1.submitCustomGeometry(var2, arj.positionColorDepthNoWrite(), (var9x, var10x) -> { + int var11x = 0; + int var12x = 0; + float var13x = 0.0F; + double var14x = 0.0; + double var16x = 0.0; + double var18 = 0.0; + double var20 = 0.0; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + int var25 = 0; + int var26 = 0; + double var27 = 0.0; + double var29 = 0.0; + float var31 = 0.0F; + float var32 = 0.0F; + float var33 = 0.0F; + float var34 = 0.0F; + int var35 = -1733669760; + + while (true) { + switch (var35) { + case -2040229467: + if (var26 < (1173813447 ^ -1173813431) + ((1173813447 & -1173813431) << 1)) { + var35 = -1963987580; + } else { + var35 = 770879849; + } + break; + case -1963987580: + var27 = var26 / 16.0 * (Math.PI * 2); + var29 = (var26 + (403336631 | -403336630) + (403336631 & -403336630)) / 16.0 * (Math.PI * 2); + var31 = (float)Math.cos(var27); + var32 = (float)Math.sin(var27); + var33 = (float)Math.cos(var29); + var34 = (float)Math.sin(var29); + this.ringVertex(var10x, var9x, var14x, var16x, var18, var31 * var24, var32 * var24, var25); + this.ringVertex(var10x, var9x, var14x, var16x, var18, var31 * var23, var32 * var23, var25); + this.ringVertex(var10x, var9x, var14x, var16x, var18, var33 * var23, var34 * var23, var25); + this.ringVertex(var10x, var9x, var14x, var16x, var18, var33 * var24, var34 * var24, var25); + var26++; + var35 = -2040229467; + break; + case -1733669760: + default: + var11x = 0; + var35 = 746061916; + break; + case -295964581: + if ((var14x * var9.x() + var16x * var9.y() + var18 * var9.z()) / var20 < -0.35F) { + var35 = -117608828; + } else { + var35 = 78890872; + } + break; + case -170422428: + var12x = (var11 + var11x) % (128); + var13x = (float)(var6 - this.splashStart[var12x]) / 360.0F; + if (!(var13x < 0.0F)) { + var35 = 1779742863; + } else { + var35 = 770879849; + } + break; + case -117608828: + var35 = 770879849; + break; + case 78890872: + var22 = 1.0F - (1.0F - var13x) * (1.0F - var13x); + var23 = Mth.lerp(var22, 0.05F, 0.26F); + var24 = Math.max(0.0F, var23 - 0.032F); + var25 = withAlpha(var5, var8 * (1.0F - var13x) * (1.0F - var13x)); + var26 = 0; + var35 = -2040229467; + break; + case 746061916: + if (var11x < var10) { + var35 = -170422428; + } else { + var35 = 778126713; + } + break; + case 770879849: + var11x++; + var35 = 746061916; + break; + case 778126713: + return; + case 819988945: + var14x = this.splashX[var12x] - var4.x; + var16x = this.splashY[var12x] + 0.012F - var4.y; + var18 = this.splashZ[var12x] - var4.z; + var20 = Math.sqrt(var14x * var14x + var16x * var16x + var18 * var18); + if (var20 > 3.0) { + var35 = -295964581; + } else { + var35 = 78890872; + } + break; + case 1779742863: + if (var13x >= 1.0F) { + var35 = 1790766996; + } else { + var35 = 819988945; + } + break; + case 1790766996: + var35 = 770879849; + } + } + }); + return; + } + } + } + + private void emitStreakSegment( + VertexConsumer var1, + Pose var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + int var13, + int var14 + ) { + int var15 = withAlpha(var13, 0.0F); + var1.addVertex(var2, var3 - var9 * var12, var4 - var10 * var12, var5 - var11 * var12).setColor(var15); + var1.addVertex(var2, var3, var4, var5).setColor(var13); + var1.addVertex(var2, var6, var7, var8).setColor(var14); + var1.addVertex(var2, var6 - var9 * var12, var7 - var10 * var12, var8 - var11 * var12).setColor(var15); + var1.addVertex(var2, var3, var4, var5).setColor(var13); + var1.addVertex(var2, var3 + var9 * var12, var4 + var10 * var12, var5 + var11 * var12).setColor(var15); + var1.addVertex(var2, var6 + var9 * var12, var7 + var10 * var12, var8 + var11 * var12).setColor(var15); + var1.addVertex(var2, var6, var7, var8).setColor(var14); + } + + private void ringVertex(VertexConsumer var1, Pose var2, double var3, double var5, double var7, float var9, float var10, int var11) { + var1.addVertex(var2, (float)(var3 + var9), (float)var5, (float)(var7 + var10)).setColor(var11); + } + + private void rebuildSurfaceCache(ClientLevel var1, Vec3 var2) { + int var3 = 0; + int var4 = 0; + int var5 = 0; + long var6 = (-4392906087481766760L | 4392906087481766760L) + (-4392906087481766760L & 4392906087481766760L); + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + int var15 = 0; + int var16 = 0; + BlockState var17 = null; + float var18 = 0.0F; + VoxelShape var19 = null; + int var20 = 1396337572; + + while (true) { + switch (var20) { + case -1906399943: + if (var4 == this.scanBlockX) { + var20 = 1820515524; + } else { + var20 = 1297692454; + } + break; + case -1858876294: + if (!var17.getFluidState().isEmpty()) { + var20 = -1305300979; + } else { + var20 = -514288863; + } + break; + case -1689625478: + var10 = var1.getMinY(); + var11 = 0; + var12 = -var3; + var20 = -616547491; + break; + case -1305300979: + var18 = var16 - 0.12F; + var20 = 1868719283; + break; + case -616547491: + if (var12 <= var3) { + var20 = 941935422; + } else { + var20 = 1482975798; + } + break; + case -514288863: + var13++; + var20 = 931171988; + break; + case -296638661: + var20 = -514288863; + break; + case 312964364: + if (var12 * var12 + var13 * var13 > var3 * var3) { + var20 = -296638661; + } else { + var20 = 450668467; + } + break; + case 450668467: + var14 = var4 + var12; + var15 = var5 + var13; + var16 = var1.getHeight(Types.MOTION_BLOCKING, var14, var15); + if (var16 <= var10) { + var20 = 1234858834; + } else { + var20 = 1676482937; + } + break; + case 551389047: + var20 = -514288863; + break; + case 931171988: + if (var13 <= var3) { + var20 = 312964364; + } else { + var20 = 1850772046; + } + break; + case 941935422: + var13 = -var3; + var20 = 931171988; + break; + case 1012295225: + var19 = var17.getCollisionShape(var1, this.scanPos); + if (!var19.isEmpty()) { + var20 = 1843944448; + } else { + var20 = -1858876294; + } + break; + case 1234858834: + var20 = -514288863; + break; + case 1262314971: + return; + case 1297692454: + this.scanRadius = var3; + this.scanBlockX = var4; + this.scanBlockZ = var5; + this.scanTime = var6; + var8 = var3 * 3; + var9 = var8 * var8; + if (this.columnX.length < var9) { + var20 = 1903622289; + } else { + var20 = -1689625478; + } + break; + case 1396337572: + default: + var3 = (int)this.wetRadiusSetting.getCurrent(); + var4 = Mth.floor(var2.x); + var5 = Mth.floor(var2.z); + var6 = System.currentTimeMillis(); + if (var3 == this.scanRadius) { + var20 = -1906399943; + } else { + var20 = 1297692454; + } + break; + case 1482975798: + this.columnCount = var11; + return; + case 1646560443: + if (var6 - this.scanTime < (-6829848025742156788L | 6829848025742157488L) + (-6829848025742156788L & 6829848025742157488L)) { + var20 = 1262314971; + } else { + var20 = 1297692454; + } + break; + case 1676482937: + this.scanPos.set(var14, var16 - (1), var15); + var17 = var1.getBlockState(this.scanPos); + if (var17.isAir()) { + var20 = 551389047; + } else { + var20 = 1012295225; + } + break; + case 1820515524: + if (var5 == this.scanBlockZ) { + var20 = 1646560443; + } else { + var20 = 1297692454; + } + break; + case 1843944448: + var18 = var16 - ((608909556 ^ -608909555) + ((608909556 & -608909555) << 1)) + (float)var19.max(Axis.Y); + var20 = 1868719283; + break; + case 1850772046: + var12++; + var20 = -616547491; + break; + case 1868719283: + this.columnX[var11] = var14; + this.columnZ[var11] = var15; + this.columnY[var11] = var18; + var11++; + var20 = -514288863; + break; + case 1903622289: + this.columnX = new int[var9]; + this.columnZ = new int[var9]; + this.columnY = new float[var9]; + var20 = -1689625478; + } + } + } + + private void emitSurfaceQuads(BufferBuilder var1, Camera var2, Vec3 var3) { + float var4 = 0.0F; + float var5 = 0.0F; + Vector3fc var6 = null; + int var7 = 0; + double var8 = 0.0; + double var10 = 0.0; + double var12 = 0.0; + double var14 = 0.0; + double var16 = 0.0; + double var18 = 0.0; + float var20 = 0.0F; + double var21 = 0.0; + int var23 = 0; + float var24 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + float var27 = 0.0F; + float var28 = 0.0F; + int var29 = -569119899; + + while (true) { + switch (var29) { + case -1872868476: + var8 = this.columnX[var7] - var3.x; + var10 = this.columnZ[var7] - var3.z; + var12 = this.columnY[var7] + 0.012F - var3.y; + var14 = var8 + 0.5; + var16 = var10 + 0.5; + var18 = Math.sqrt(var14 * var14 + var16 * var16); + var20 = 1.0F - Mth.clamp((float)((var18 - var5) / Math.max(var4 - var5, 1.0F)), 0.0F, 1.0F); + if (var20 <= 0.0F) { + var29 = 1473416495; + } else { + var29 = 963512850; + } + break; + case -1707285272: + if ((var14 * var6.x() + var12 * var6.y() + var16 * var6.z()) / var21 < -0.35F) { + var29 = 1841212834; + } else { + var29 = -991741743; + } + break; + case -1225009822: + var7++; + var29 = -502118957; + break; + case -991741743: + var23 = withAlpha(16777215, var20); + var24 = (float)var8; + var25 = (float)var10; + var26 = (float)(var8 + 1.0); + var27 = (float)(var10 + 1.0); + var28 = (float)var12; + var1.addVertex(var24, var28, var25).setColor(var23); + var1.addVertex(var24, var28, var27).setColor(var23); + var1.addVertex(var26, var28, var27).setColor(var23); + var1.addVertex(var26, var28, var25).setColor(var23); + var29 = -1225009822; + break; + case -963407174: + return; + case -569119899: + default: + var4 = this.scanRadius; + var5 = var4 * 0.62F; + var6 = var2.forwardVector(); + var7 = 0; + var29 = -502118957; + break; + case -502118957: + if (var7 < this.columnCount) { + var29 = -1872868476; + } else { + var29 = -963407174; + } + break; + case 963512850: + var21 = Math.sqrt(var14 * var14 + var12 * var12 + var16 * var16); + if (var21 > 3.0) { + var29 = -1707285272; + } else { + var29 = -991741743; + } + break; + case 1473416495: + var29 = -1225009822; + break; + case 1841212834: + var29 = -1225009822; + } + } + } + + private static float wrapCoordinate(double var0) { + return (float)(var0 - Math.floor(var0 / 1024.0) * 1024.0); + } + + private static int withAlpha(int var0, float var1) { + return Mth.clamp( + Math.round(var1 * 255.0F), 0, (-377292827 ^ 377293082) + ((-377292827 & 377293082) << 1) + ) + << (-1593619621 | 1593619645) + (-1593619621 & 1593619645) + | var0 & 16777215; + } +} diff --git a/src/main/java/defpackage/ts.java b/src/main/java/defpackage/ts.java new file mode 100644 index 0000000..0d60537 --- /dev/null +++ b/src/main/java/defpackage/ts.java @@ -0,0 +1,1265 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.concurrent.ThreadLocalRandom; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.Camera; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.fog.FogData; +import net.minecraft.core.BlockPos; +import net.minecraft.util.Mth; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Biome.Precipitation; +import net.minecraft.world.level.levelgen.Heightmap.Types; +import net.minecraft.world.level.material.FogType; +import net.minecraft.world.phys.Vec3; +import org.joml.Vector3fc; + +@rn(name = "Blizzard", description = "High-altitude snowstorm with wind-driven flakes, whiteout fog and frosted edges", category = rl.RENDER) +public final class ts extends rm { + private static final int MAX_FLAKES = 12000; + private static final float FLAKE_AREA_FACTOR = 9.0F; + private static final float FALL_SPEED_BASE = 1.6F; + private static final float FALL_JITTER_MIN = 0.6F; + private static final float FALL_JITTER_MAX = 1.5F; + private static final float SIZE_JITTER_MIN = 0.55F; + private static final float SIZE_JITTER_MAX = 1.45F; + private static final float ALPHA_JITTER_MIN = 0.45F; + private static final float ALPHA_JITTER_MAX = 1.0F; + private static final float FLAKE_RADIUS = 0.028F; + private static final float FLAKE_MIN_ANGULAR_RADIUS = 0.0024F; + private static final float STREAK_TIME = 0.022F; + private static final float STREAK_FRONT_SHARE = 0.3F; + private static final float FADE_IN_SECONDS = 0.45F; + private static final double SPAWN_CEILING = 8.0; + private static final double SPAWN_FLOOR_MARGIN = 6.0; + private static final double RECYCLE_RADIUS_GAIN = 1.25; + private static final double NEAR_FADE_START = 0.25; + private static final double NEAR_FADE_END = 0.9; + private static final int SPAWN_ATTEMPTS = 3; + private static final float WIND_SPEED_MAX = 16.0F; + private static final double WIND_GUST_RATE = 0.9; + private static final double WIND_GUST_SECONDARY_RATE = 2.3; + private static final float WIND_GUST_AMPLITUDE = 0.35F; + private static final float WIND_GUST_SECONDARY_AMPLITUDE = 0.15F; + private static final double WIND_TURN_RATE = 0.02; + private static final double WIND_TURN_SWING = 0.35; + private static final float WIND_LIFT = 0.12F; + private static final float TURBULENCE_AMPLITUDE = 1.1F; + private static final float TURBULENCE_RATE_MIN = 1.2F; + private static final float TURBULENCE_RATE_MAX = 3.4F; + private static final float STRENGTH_RISE_PER_SECOND = 0.45F; + private static final float STRENGTH_FALL_PER_SECOND = 0.6F; + private static final float EXPOSURE_RATE_PER_SECOND = 1.4F; + private static final float STRENGTH_MIN_VISIBLE = 0.01F; + private static final float SNOWFALL_MIN_VISIBLE = 0.02F; + private static final float FOG_START_SHARE = 0.05F; + private static final float FOG_SKY_SHARE = 0.6F; + private static final float FOG_BRIGHTNESS_GAIN = 1.6F; + private static final float FOG_BRIGHTNESS_FLOOR = 0.15F; + private static final float FOG_COLOR_BLEND = 0.9F; + private static final int FROST_BANDS = 32; + private static final float FROST_DEPTH_SHARE = 0.2F; + private static final float FROST_EDGE_ALPHA = 0.55F; + private static final float HAZE_ALPHA = 0.12F; + private static final double MAX_FRAME_SECONDS = 0.1; + private static final long TIME_PERIOD_MS = 600000L; + private static final double MILLIS_PER_SECOND = 1000.0; + private static final double TAU = Math.PI * 2; + private static final float BEHIND_CAMERA_DOT = -0.35F; + private static final double BEHIND_CAMERA_MIN_DISTANCE = 3.0; + private static final float COLOR_SCALE = 255.0F; + private final sm intensitySetting = new sm("Intensity", 0.85F, 0.1F, 1.0F, 0.05F) + .description( + "Overall strength of the storm" + ); + private final sm densitySetting = new sm("Density", 1.0F, 0.2F, 3.0F, 0.1F) + .description( + "How many snowflakes swirl around you" + ); + private final sm windSetting = new sm("Wind", 0.7F, 0.0F, 1.0F, 0.05F) + .description( + "How hard the wind drives the snow sideways" + ); + private final sm turbulenceSetting = new sm( + "Turbulence", 0.6F, 0.0F, 1.0F, 0.05F + ) + .description("How chaotically the flakes swirl"); + private final sm sizeSetting = new sm("Flake size", 1.0F, 0.5F, 2.5F, 0.1F) + .description("Size of a single snowflake"); + private final sm radiusSetting = new sm( + "Radius", 12.0F, 6.0F, 24.0F, 1.0F + ) + .description("Distance around you the flakes spawn in"); + private final sm opacitySetting = new sm("Opacity", 0.8F, 0.1F, 1.0F, 0.05F) + .description("Transparency of the snowflakes"); + private final ru whiteoutSetting = new ru( + "Whiteout", (boolean)((((-1930311282 | 1930311283) + (-1930311282 & 1930311283)) + ) != 0)) + .description( + "Thick snow fog that swallows the distance" + ); + private final sm visibilitySetting = new sm( + "Visibility", + 28.0F, + 8.0F, + 128.0F, + 1.0F, + () -> this.whiteoutSetting.isEnabled() + ) + .description( + "How far you can see through the storm" + ); + private final ru coverSetting = new ru( + "Snow cover", + (boolean)((((-354061255 ^ 354061256) + ((-354061255 & 354061256) << 1)) + ) != 0)) + .description( + "Snow piles up on the ground and melts away afterwards" + ); + private final sm coverDepthSetting = new sm( + "Snow depth", + 0.2F, + 0.05F, + 0.5F, + 0.01F, + () -> this.coverSetting.isEnabled() + ) + .description( + "How deep the snow layer grows" + ); + private final sm coverTimeSetting = new sm( + "Cover time", + 45.0F, + 5.0F, + 180.0F, + 5.0F, + () -> this.coverSetting.isEnabled() + ) + .description( + "Seconds until the ground is fully covered" + ); + private final sm coverRadiusSetting = new sm( + "Cover radius", + 18.0F, + 8.0F, + 32.0F, + 1.0F, + () -> this.coverSetting.isEnabled() + ) + .description( + "Distance around you the snow is drawn" + ); + private final ru frostSetting = new ru( + "Frosted screen", + (boolean)((((2098975205 | -2098975204) + (2098975205 & -2098975204)) + ) != 0)) + .description("Frost creeping in from the screen edges"); + private final ru snowfallOnlySetting = new ru( + "Only in snowfall", + (boolean)((((349749372 ^ -349749372) + ((349749372 & -349749372) << 1)) + ) != 0)) + .description( + "Storm appears only while it snows where you stand" + ); + private final ru hideVanillaSetting = new ru( + "Hide vanilla weather", + (boolean)((((991920657 | -991920656) + (991920657 & -991920656)) + ) != 0)) + .description( + "Removes the vanilla snow and rain sheets during the storm" + ); + private final rx tintSetting = new rx( + "Tint", + new asu( + 236, + 243, + (922820335 ^ -922820080) + ((922820335 & -922820080) << 1) + ) + ) + .description("Color of the snow, fog and frost"); + private final double[] flakeX = new double[12000]; + private final double[] flakeY = new double[12000]; + private final double[] flakeZ = new double[12000]; + private final float[] flakeFall = new float[12000]; + private final float[] flakeSize = new float[12000]; + private final float[] flakeAlpha = new float[12000]; + private final float[] flakePhase = new float[12000]; + private final float[] flakeRate = new float[12000]; + private final float[] flakeAge = new float[12000]; + private final float[] flakeVelX = new float[12000]; + private final float[] flakeVelY = new float[12000]; + private final float[] flakeVelZ = new float[12000]; + private final float[] flakeGround = new float[12000]; + private final int[] flakeColumnX = new int[12000]; + private final int[] flakeColumnZ = new int[12000]; + private int flakeCount; + private final auq snowCover = new auq(); + private final aur snowFog = new aur(); + private long lastFrameNanos; + private float strength; + private float exposure; + private boolean frameActive; + private double windX; + private double windY; + private double windZ; + private double seconds; + public static final ts INSTANCE = new ts(); + + private ts() { + } + + @Override + public void onEnable() { + super.onEnable(); + this.reset(); + } + + @Override + public void onDisable() { + super.onDisable(); + this.reset(); + } + + private void reset() { + this.flakeCount = 0; + this.strength = 0.0F; + this.exposure = 0.0F; + this.frameActive = (boolean)(((0)) != 0); + this.lastFrameNanos = (-5837770727769990393L ^ 5837770727769990393L) + ((-5837770727769990393L & 5837770727769990393L) << 1); + this.snowCover.reset(); + } + + public boolean hidesVanillaWeather() { + int var2 = 0; + int var1 = 1507129620; + + while (true) { + switch (var1) { + case -2115723826: + var2 = 0; + var1 = -269305113; + break; + case -463524472: + if (this.frameActive) { + var1 = 610093468; + } else { + var1 = -2115723826; + } + break; + case -269305113: + return (boolean)((var2) != 0); + case 293307419: + if (this.hideVanillaSetting.isEnabled()) { + var1 = -463524472; + } else { + var1 = -2115723826; + } + break; + case 610093468: + var2 = 1; + var1 = -269305113; + break; + case 1507129620: + default: + if (this.isEnabled()) { + var1 = 293307419; + } else { + var1 = -2115723826; + } + } + } + } + + public void onWorldRender(LevelRenderContext var1) { + if (this.isEnabled() && mc.player != null && mc.level != null) { + PoseStack var2 = var1.poseStack(); + SubmitNodeCollector var3 = var1.submitNodeCollector(); + Camera var4 = mc.getEntityRenderDispatcher().camera; + if (var2 != null && var3 != null && var4 != null) { + ClientLevel var5 = mc.level; + Vec3 var6 = var4.position(); + float var7 = this.frameDelta(); + this.seconds = System.currentTimeMillis() + % ((3250517558744934126L ^ -3250517558744334126L) + ((3250517558744934126L & -3250517558744334126L) << 1)) + / 1000.0; + float var8 = mc.getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((132823573 ^ -132823573) + ((132823573 & -132823573) << 1))) != 0)); + float var9 = this.targetStrength(var5, var8); + this.strength = approach(this.strength, var9, var9 > this.strength ? 0.45F : 0.6F, var7); + this.exposure = approach(this.exposure, this.skyExposure(var5, var6), 1.4F, var7); + this.frameActive = (boolean)(((this.strength > 0.01F + ? 1: (-362798050 | 362798050) + (-362798050 & 362798050))) != 0); + int var10 = this.tintSetting.getIntColor() & 16777215; + this.updateSnowCover(var7); + if (this.frameActive || this.flakeCount != 0) { + this.updateWind(); + this.simulate(var5, var6, var7); + this.submitFlakes(var3, var2, var4, var6, var10); + } + } + } else { + this.frameActive = (boolean)(((0)) != 0); + } + } + + public void onWorldDraw(LevelRenderContext var1) { + Camera var2 = null; + float var3 = 0.0F; + int var4 = 1418108379; + + while (true) { + switch (var4) { + case -1812764132: + return; + case -329887778: + return; + case -202126737: + if (this.coverSetting.isEnabled()) { + var4 = -85969722; + } else { + var4 = -1812764132; + } + break; + case -85969722: + if (mc.level == null) { + var4 = -1812764132; + } else { + var4 = 1181112078; + } + break; + case 119640811: + var3 = (float)( + System.currentTimeMillis() % ((2539517133651951111L ^ -2539517133651351111L) + ((2539517133651951111L & -2539517133651351111L) << 1)) + / 1000.0 + ); + this.snowCover + .draw( + atb.worldSnowCoverProgram, + var2, + mc.level, + (int)this.coverRadiusSetting.getCurrent(), + this.coverDepthSetting.getCurrent(), + this.tintSetting.getIntColor() & 16777215, + this.snowFog, + var3, + mc.getWindow().getWidth(), + mc.getWindow().getHeight() + ); + return; + case 1181112078: + var2 = mc.getEntityRenderDispatcher().camera; + if (var2 == null) { + var4 = -329887778; + } else { + var4 = 119640811; + } + break; + case 1418108379: + default: + if (this.isEnabled()) { + var4 = -202126737; + } else { + var4 = -1812764132; + } + } + } + } + + private void updateSnowCover(float var1) { + int var2 = -305570593; + + while (true) { + switch (var2) { + case -1306839559: + this.snowCover.reset(); + return; + case -1108572960: + this.snowCover.update(var1, this.strength / this.coverTimeSetting.getCurrent(), this.frameActive); + return; + case -305570593: + } + + if (!this.coverSetting.isEnabled()) { + var2 = -1306839559; + } else { + var2 = -1108572960; + } + } + } + + public void applyFog(Camera var1, FogData var2) { + int var3 = -898193611; + + while (true) { + switch (var3) { + case -1786097049: + if (var1 == null) { + var3 = 364125787; + } else { + var3 = 1445175778; + } + break; + case -898193611: + default: + if (this.isEnabled()) { + var3 = -216090142; + } else { + var3 = 364125787; + } + break; + case -216090142: + if (var2 != null) { + var3 = -1786097049; + } else { + var3 = 364125787; + } + break; + case 364125787: + return; + case 1445175778: + this.applyWhiteout(var1, var2); + this.snowFog.capture(var2); + return; + } + } + } + + private void applyWhiteout(Camera var1, FogData var2) { + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + int var6 = 0; + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = -1341739032; + + while (true) { + switch (var9) { + case -1650675193: + if (var1.getFluidInCamera() != FogType.NONE) { + var9 = -746752091; + } else { + var9 = -161194612; + } + break; + case -1341739032: + default: + if (!this.whiteoutSetting.isEnabled()) { + var9 = 2061219842; + } else { + var9 = 721907521; + } + break; + case -746752091: + return; + case -161194612: + var3 = this.strength * this.exposure; + if (var3 <= 0.01F) { + var9 = 2036755558; + } else { + var9 = 1169153101; + } + break; + case 721907521: + if (var1.getFluidInCamera() != FogType.ATMOSPHERIC) { + var9 = -1650675193; + } else { + var9 = -161194612; + } + break; + case 1169153101: + var4 = this.visibilitySetting.getCurrent() / var3; + var5 = var4 * 0.05F; + var2.environmentalStart = Math.min(var2.environmentalStart, var5); + var2.environmentalEnd = Math.min(var2.environmentalEnd, var4); + var2.renderDistanceStart = Math.min(var2.renderDistanceStart, var5); + var2.renderDistanceEnd = Math.min(var2.renderDistanceEnd, var4); + var2.skyEnd = Math.min(var2.skyEnd, var4 * 0.6F); + var2.cloudEnd = Math.min(var2.cloudEnd, var4); + var6 = this.tintSetting.getIntColor(); + var7 = Mth.clamp(Math.max(var2.color.x, Math.max(var2.color.y, var2.color.z)) * 1.6F + 0.15F, 0.0F, 1.0F); + var8 = var3 * 0.9F; + var2.color.x = Mth.lerp( + var8, + var2.color.x, + (var6 >> (1388660617 ^ -1388660601) + ((1388660617 & -1388660601) << 1) & (-1773822181 | 1773822436) + (-1773822181 & 1773822436)) + / 255.0F + * var7 + ); + var2.color.y = Mth.lerp( + var8, + var2.color.y, + (var6 >> (-273185607 | 273185615) + (-273185607 & 273185615) & (-817538709 ^ 817538964) + ((-817538709 & 817538964) << 1)) / 255.0F * var7 + ); + var2.color.z = Mth.lerp(var8, var2.color.z, (var6 & (447553736 ^ -447553481) + ((447553736 & -447553481) << 1)) / 255.0F * var7); + return; + case 2036755558: + return; + case 2061219842: + return; + } + } + } + + @k + public void onRender2D(fs var1) { + float var2 = 0.0F; + aru var3 = null; + float var4 = 0.0F; + float var5 = 0.0F; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + float var10 = 0.0F; + asu var11 = null; + int var12 = 0; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = -1018577078; + + while (true) { + switch (var15) { + case -1610820378: + var12++; + var15 = 2012648597; + break; + case -1018577078: + default: + if (this.frostSetting.isEnabled()) { + var15 = 1675099506; + } else { + var15 = 81723911; + } + break; + case -860004163: + return; + case -629416318: + return; + case -183017296: + var2 = this.strength * this.exposure * this.intensitySetting.getCurrent(); + if (var2 <= 0.01F) { + var15 = -629416318; + } else { + var15 = 1084253763; + } + break; + case 81723911: + return; + case 464520725: + var15 = -1610820378; + break; + case 1084253763: + var3 = var1.getContext(); + var4 = mc.getWindow().getGuiScaledWidth(); + var5 = mc.getWindow().getGuiScaledHeight(); + var6 = this.tintSetting.getIntColor(); + var7 = var6 >> 16; + var8 = var6 >> 8; + var9 = var6 & 255; + var3.drawRect(0.0F, 0.0F, var4, var5, new asu(var7, var8, var9, alphaByte(0.12F * var2))); + var10 = Math.min(var4, var5) * 0.2F; + var11 = new asu(var7, var8, var9, alphaByte(0.55F * var2 / 32.0F)); + var12 = 0; + var15 = 2012648597; + break; + case 1245075157: + var13 = var10 * (1.0F - Mth.sqrt(var12 / 32.0F)); + if (var13 <= 0.0F) { + var15 = 464520725; + } else { + var15 = 1322718141; + } + break; + case 1322718141: + var14 = var5 - var13 * 2.0F; + var3.drawRect(0.0F, 0.0F, var4, var13, var11); + var3.drawRect(0.0F, var5 - var13, var4, var13, var11); + var3.drawRect(0.0F, var13, var13, var14, var11); + var3.drawRect(var4 - var13, var13, var13, var14, var11); + var15 = -1610820378; + break; + case 1675099506: + if (mc.player == null) { + var15 = 81723911; + } else { + var15 = -183017296; + } + break; + case 2012648597: + if (var12 < (957433787 ^ -957433755) + ((957433787 & -957433755) << 1)) { + var15 = 1245075157; + } else { + var15 = -860004163; + } + } + } + } + + private float targetStrength(ClientLevel var1, float var2) { + float var3 = 0.0F; + float var4 = 0.0F; + BlockPos var5 = null; + Biome var6 = null; + int var7 = -2017116076; + + while (true) { + switch (var7) { + case -2017116076: + default: + var3 = this.intensitySetting.getCurrent(); + if (!this.snowfallOnlySetting.isEnabled()) { + var7 = -359354405; + } else { + var7 = -1192225659; + } + break; + case -1192225659: + var4 = var1.getRainLevel(var2); + if (var4 <= 0.02F) { + var7 = 1392690061; + } else { + var7 = -1064762721; + } + break; + case -1064762721: + var5 = mc.player.blockPosition(); + var6 = (Biome)var1.getBiome(var5).value(); + if (var6.getPrecipitationAt(var5, var1.getSeaLevel()) != Precipitation.SNOW) { + var7 = 781856916; + } else { + var7 = 695933158; + } + break; + case -359354405: + return var3; + case 695933158: + return Mth.clamp(var4, 0.0F, 1.0F) * var3; + case 781856916: + return 0.0F; + case 1392690061: + return 0.0F; + } + } + } + + private float skyExposure(ClientLevel var1, Vec3 var2) { + int var3 = 0; + float var5 = 0.0F; + int var4 = 80225630; + + while (true) { + switch (var4) { + case -335193013: + var5 = 0.0F; + var4 = 900818190; + break; + case 80225630: + default: + var3 = var1.getHeight(Types.MOTION_BLOCKING, Mth.floor(var2.x), Mth.floor(var2.z)); + if (var2.y >= var3) { + var4 = 413565128; + } else { + var4 = -335193013; + } + break; + case 413565128: + var5 = 1.0F; + var4 = 900818190; + break; + case 900818190: + return var5; + } + } + } + + private float frameDelta() { + long var1 = (-5403902692334190902L | 5403902692334190902L) + (-5403902692334190902L & 5403902692334190902L); + double var3 = 0.0; + int var5 = -1870799816; + + while (true) { + switch (var5) { + case -1870799816: + default: + var1 = System.nanoTime(); + if (this.lastFrameNanos == (-8364295095956308920L | 8364295095956308920L) + (-8364295095956308920L & 8364295095956308920L)) { + var5 = 1864909593; + } else { + var5 = 1608214566; + } + break; + case 1608214566: + var3 = (var1 - this.lastFrameNanos) / 1.0E9; + this.lastFrameNanos = var1; + return (float)Math.min(var3, 0.1); + case 1864909593: + this.lastFrameNanos = var1; + return 0.0F; + } + } + } + + private static float approach(float var0, float var1, float var2, float var3) { + float var4 = var2 * var3; + return Math.abs(var1 - var0) <= var4 ? var1 : var0 + (var1 > var0 ? var4 : -var4); + } + + private void updateWind() { + double var1 = this.seconds * 0.02 + Math.sin(this.seconds * 0.9 * 0.5) * 0.35; + double var3 = 1.0 + Math.sin(this.seconds * 0.9) * 0.35F + Math.sin(this.seconds * 2.3) * 0.15F; + double var5 = this.windSetting.getCurrent() * 16.0F * var3 * this.strength; + this.windX = Math.cos(var1) * var5; + this.windZ = Math.sin(var1) * var5; + this.windY = Math.sin(this.seconds * 2.3) * var5 * 0.12F; + } + + private void simulate(ClientLevel var1, Vec3 var2, float var3) { + float var4 = 0.0F; + int var5 = 0; + double var6 = 0.0; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 0; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + double var18 = 0.0; + double var20 = 0.0; + double var22 = 0.0; + int var24 = 0; + int var25 = 0; + double var26 = 0.0; + double var28 = 0.0; + int var30 = 0; + int var32 = 0; + int var33 = 0; + int var31 = -123734529; + + while (true) { + switch (var31) { + case -1946658901: + if (var30 != 0) { + var31 = 469333388; + } else { + var31 = -1109019057; + } + break; + case -1911876740: + if (!(var26 * var26 + var28 * var28 > var6)) { + var31 = -1639363968; + } else { + var31 = -347885083; + } + break; + case -1646302828: + var31 = -1067412243; + break; + case -1639363968: + if (var20 > var2.y + 16.0) { + var31 = -347885083; + } else { + var31 = 516144132; + } + break; + case -1465856233: + this.flakeCount += 1; + var31 = -791853882; + break; + case -1326926763: + if (var25 != this.flakeColumnZ[var10]) { + var31 = 2045254082; + } else { + var31 = 662451146; + } + break; + case -1109019057: + this.flakeX[var10] = var18; + this.flakeY[var10] = var20; + this.flakeZ[var10] = var22; + this.flakeVelX[var10] = var15; + this.flakeVelY[var10] = var16; + this.flakeVelZ[var10] = var17; + this.flakeAge[var10] = this.flakeAge[var10] + var3; + var31 = 941416603; + break; + case -1067412243: + return; + case -919595393: + if (var10 >= 0) { + var31 = 1448252030; + } else { + var31 = -791853882; + } + break; + case -791853882: + if (this.flakeCount < var5) { + var31 = 676120941; + } else { + var31 = -1067412243; + } + break; + case -347885083: + var33 = 1; + var31 = 1824850803; + break; + case -123734529: + default: + var4 = this.radiusSetting.getCurrent(); + if (this.frameActive) { + var31 = 2090971027; + } else { + var31 = 164747927; + } + break; + case -80636361: + this.flakeCount -= 1; + this.moveFlake(this.flakeCount, var10); + var31 = 941416603; + break; + case 164747927: + var32 = 0; + var31 = 320230164; + break; + case 320230164: + var5 = var32; + var6 = var4 * 1.25 * var4 * 1.25; + var8 = this.turbulenceSetting.getCurrent() * 1.1F; + var9 = (float)this.seconds; + var10 = this.flakeCount - (1); + var31 = -919595393; + break; + case 469333388: + var31 = 941416603; + break; + case 516144132: + var33 = 0; + var31 = 1824850803; + break; + case 662451146: + var26 = var18 - var2.x; + var28 = var22 - var2.z; + if (!(var20 <= this.flakeGround[var10])) { + var31 = -1911876740; + } else { + var31 = -347885083; + } + break; + case 673096964: + if (var30 != 0) { + var31 = 1130643488; + } else { + var31 = -1946658901; + } + break; + case 676120941: + if (!this.respawn(var1, var2, var4, this.flakeCount)) { + var31 = -1646302828; + } else { + var31 = -1465856233; + } + break; + case 941416603: + var10--; + var31 = -919595393; + break; + case 1130643488: + if (!this.respawn(var1, var2, var4, var10)) { + var31 = -80636361; + } else { + var31 = -1946658901; + } + break; + case 1448252030: + var11 = this.flakePhase[var10]; + var12 = this.flakeRate[var10]; + var13 = Mth.sin(var9 * var12 + var11) * var8; + var14 = Mth.cos(var9 * var12 * 0.83F + var11 * 1.7F) * var8; + var15 = (float)this.windX + var13; + var16 = (float)this.windY - 1.6F * this.flakeFall[var10]; + var17 = (float)this.windZ + var14; + var18 = this.flakeX[var10] + var15 * var3; + var20 = this.flakeY[var10] + var16 * var3; + var22 = this.flakeZ[var10] + var17 * var3; + var24 = Mth.floor(var18); + var25 = Mth.floor(var22); + if (var24 == this.flakeColumnX[var10]) { + var31 = -1326926763; + } else { + var31 = 2045254082; + } + break; + case 1824850803: + var30 = var33; + if (var10 < var5) { + var31 = 673096964; + } else { + var31 = -80636361; + } + break; + case 2045254082: + this.flakeColumnX[var10] = var24; + this.flakeColumnZ[var10] = var25; + this.flakeGround[var10] = var1.getHeight(Types.MOTION_BLOCKING, var24, var25); + var31 = 662451146; + break; + case 2090971027: + var32 = this.targetFlakeCount(var4); + var31 = 320230164; + } + } + } + + private int targetFlakeCount(float var1) { + double var2 = Math.PI * var1 * var1; + return (int)Math.min(12000.0, var2 * this.densitySetting.getCurrent() * 9.0 * this.strength); + } + + private void moveFlake(int var1, int var2) { + int var3 = 869681414; + + while (true) { + switch (var3) { + case -1718148107: + this.flakeX[var2] = this.flakeX[var1]; + this.flakeY[var2] = this.flakeY[var1]; + this.flakeZ[var2] = this.flakeZ[var1]; + this.flakeFall[var2] = this.flakeFall[var1]; + this.flakeSize[var2] = this.flakeSize[var1]; + this.flakeAlpha[var2] = this.flakeAlpha[var1]; + this.flakePhase[var2] = this.flakePhase[var1]; + this.flakeRate[var2] = this.flakeRate[var1]; + this.flakeAge[var2] = this.flakeAge[var1]; + this.flakeVelX[var2] = this.flakeVelX[var1]; + this.flakeVelY[var2] = this.flakeVelY[var1]; + this.flakeVelZ[var2] = this.flakeVelZ[var1]; + this.flakeGround[var2] = this.flakeGround[var1]; + this.flakeColumnX[var2] = this.flakeColumnX[var1]; + this.flakeColumnZ[var2] = this.flakeColumnZ[var1]; + return; + case 869681414: + default: + if (var1 == var2) { + var3 = 1572083014; + } else { + var3 = -1718148107; + } + break; + case 1572083014: + return; + } + } + } + + private boolean respawn(ClientLevel var1, Vec3 var2, float var3, int var4) { + ThreadLocalRandom var5 = null; + int var6 = 0; + double var7 = 0.0; + double var9 = 0.0; + double var11 = 0.0; + double var13 = 0.0; + int var15 = 0; + int var16 = 0; + float var17 = 0.0F; + double var18 = 0.0; + double var20 = 0.0; + int var22 = -414040905; + + while (true) { + switch (var22) { + case -1032460662: + return (boolean)(((0)) != 0); + case -559247536: + var6++; + var22 = 1686050532; + break; + case -414040905: + default: + var5 = ThreadLocalRandom.current(); + var6 = 0; + var22 = 1686050532; + break; + case 375861628: + var22 = -559247536; + break; + case 1119482879: + this.flakeX[var4] = var11; + this.flakeY[var4] = var20 + var5.nextDouble() * (var18 - var20); + this.flakeZ[var4] = var13; + this.flakeFall[var4] = (float)var5.nextDouble(0.6F, 1.5); + this.flakeSize[var4] = (float)var5.nextDouble(0.55F, 1.45F); + this.flakeAlpha[var4] = (float)var5.nextDouble(0.45F, 1.0); + this.flakePhase[var4] = (float)(var5.nextDouble() * (Math.PI * 2)); + this.flakeRate[var4] = (float)var5.nextDouble(1.2F, 3.4F); + this.flakeAge[var4] = 0.0F; + this.flakeVelX[var4] = (float)this.windX; + this.flakeVelY[var4] = -1.6F; + this.flakeVelZ[var4] = (float)this.windZ; + this.flakeGround[var4] = var17; + this.flakeColumnX[var4] = var15; + this.flakeColumnZ[var4] = var16; + return (boolean)(((1)) != 0); + case 1346560199: + var7 = var5.nextDouble() * (Math.PI * 2); + var9 = var3 * Math.sqrt(var5.nextDouble()); + var11 = var2.x + Math.cos(var7) * var9; + var13 = var2.z + Math.sin(var7) * var9; + var15 = Mth.floor(var11); + var16 = Mth.floor(var13); + var17 = var1.getHeight(Types.MOTION_BLOCKING, var15, var16); + var18 = var2.y + 8.0; + var20 = Math.max(var17, var2.y - 6.0); + if (var18 <= var20) { + var22 = 375861628; + } else { + var22 = 1119482879; + } + break; + case 1686050532: + if (var6 < (-1411065590 ^ 1411065593) + ((-1411065590 & 1411065593) << 1)) { + var22 = 1346560199; + } else { + var22 = -1032460662; + } + } + } + } + + private void submitFlakes(SubmitNodeCollector var1, PoseStack var2, Camera var3, Vec3 var4, int var5) { + float var6 = 0.0F; + float var7 = 0.0F; + Vector3fc var8 = null; + Vector3fc var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + int var16 = 0; + int var17 = -1281806823; + + while (true) { + switch (var17) { + case -1281806823: + default: + if (this.flakeCount == 0) { + var17 = 1191908449; + } else { + var17 = 783683780; + } + break; + case 783683780: + var6 = 0.028F * this.sizeSetting.getCurrent(); + var7 = this.opacitySetting.getCurrent() * Mth.clamp(this.strength / Math.max(this.intensitySetting.getCurrent(), 0.01F), 0.0F, 1.0F); + var8 = var3.forwardVector(); + var9 = var3.upVector(); + var10 = var8.x(); + var11 = var8.y(); + var12 = var8.z(); + var13 = var9.x(); + var14 = var9.y(); + var15 = var9.z(); + var16 = this.flakeCount; + var1.submitCustomGeometry(var2, arj.positionColorDepthNoWrite(), (var12x, var13x) -> { + int var14x = 0; + float var15x = 0.0F; + float var16x = 0.0F; + float var17x = 0.0F; + float var18x = 0.0F; + float var19x = 0.0F; + float var20x = 0.0F; + float var21x = 0.0F; + float var22x = 0.0F; + float var23x = 0.0F; + float var24x = 0.0F; + float var25x = 0.0F; + float var26x = 0.0F; + float var27x = 0.0F; + float var28x = 0.0F; + float var29 = 0.0F; + float var30 = 0.0F; + float var31 = 0.0F; + float var32 = 0.0F; + float var33 = 0.0F; + float var34 = 0.0F; + float var35 = 0.0F; + float var36 = 0.0F; + float var37 = 0.0F; + int var38 = 0; + int var39 = 0; + float var40 = 0.0F; + float var41 = 0.0F; + float var42 = 0.0F; + float var43 = 0.0F; + float var44 = 0.0F; + float var45 = 0.0F; + int var46 = -1966424814; + + while (true) { + switch (var46) { + case -1966424814: + default: + var14x = 0; + var46 = -283576665; + break; + case -1677391854: + var23x = this.flakeVelX[var14x]; + var24x = this.flakeVelY[var14x]; + var25x = this.flakeVelZ[var14x]; + var26x = Mth.sqrt(var23x * var23x + var24x * var24x + var25x * var25x); + if (var26x > 1.0E-4F) { + var46 = -532021895; + } else { + var46 = -1538092907; + } + break; + case -1538092907: + var27x = var13; + var28x = var14; + var29 = var15; + var46 = -4939853; + break; + case -1286243801: + var46 = -303301885; + break; + case -701231583: + var19x = var15x / var18x; + var20x = var16x / var18x; + var21x = var17x / var18x; + if (var18x > 3.0) { + var46 = 1763739205; + } else { + var46 = 1321168442; + } + break; + case -532021895: + var27x = var23x / var26x; + var28x = var24x / var26x; + var29 = var25x / var26x; + var46 = -4939853; + break; + case -499717317: + var46 = -303301885; + break; + case -303301885: + var14x++; + var46 = -283576665; + break; + case -283576665: + if (var14x < var16) { + var46 = 1609835792; + } else { + var46 = -126567587; + } + break; + case -126567587: + return; + case -96963773: + var46 = -303301885; + break; + case -4939853: + var30 = var28x * var21x - var29 * var20x; + var31 = var29 * var19x - var27x * var21x; + var32 = var27x * var20x - var28x * var19x; + var33 = Mth.sqrt(var30 * var30 + var31 * var31 + var32 * var32); + if (var33 <= 1.0E-4F) { + var46 = 762010776; + } else { + var46 = 1909378390; + } + break; + case 762010776: + var30 = var14 * var21x - var15 * var20x; + var31 = var15 * var19x - var13 * var21x; + var32 = var13 * var20x - var14 * var19x; + var33 = Mth.sqrt(var30 * var30 + var31 * var31 + var32 * var32); + if (var33 <= 1.0E-4F) { + var46 = -499717317; + } else { + var46 = 1909378390; + } + break; + case 1321168442: + var22x = (float)Mth.clamp((var18x - 0.25) / 0.65, 0.0, 1.0); + var22x *= Math.min(this.flakeAge[var14x] / 0.45F, 1.0F); + if (var22x <= 0.0F) { + var46 = -1286243801; + } else { + var46 = -1677391854; + } + break; + case 1483394098: + var46 = -303301885; + break; + case 1609835792: + var15x = (float)(this.flakeX[var14x] - var4.x); + var16x = (float)(this.flakeY[var14x] - var4.y); + var17x = (float)(this.flakeZ[var14x] - var4.z); + var18x = Mth.sqrt(var15x * var15x + var16x * var16x + var17x * var17x); + if (var18x <= 0.0F) { + var46 = -96963773; + } else { + var46 = -701231583; + } + break; + case 1763739205: + if (var19x * var10 + var20x * var11 + var21x * var12 < -0.35F) { + var46 = 1483394098; + } else { + var46 = 1321168442; + } + break; + case 1909378390: + var30 /= var33; + var31 /= var33; + var32 /= var33; + var34 = Math.max(var6 * this.flakeSize[var14x], var18x * 0.0024F); + var35 = var34 + var26x * 0.022F * this.flakeSize[var14x]; + var36 = var35 * 0.3F + var34 * 0.7F; + var37 = var35; + var38 = withAlpha(var5, var7 * var22x * this.flakeAlpha[var14x]); + var39 = withAlpha(var5, 0.0F); + var40 = var15x - var30 * var34; + var41 = var16x - var31 * var34; + var42 = var17x - var32 * var34; + var43 = var15x + var30 * var34; + var44 = var16x + var31 * var34; + var45 = var17x + var32 * var34; + var13x.addVertex(var12x, var15x, var16x, var17x).setColor(var38); + var13x.addVertex(var12x, var40, var41, var42).setColor(var39); + var13x.addVertex(var12x, var15x + var27x * var36, var16x + var28x * var36, var17x + var29 * var36).setColor(var39); + var13x.addVertex(var12x, var43, var44, var45).setColor(var39); + var13x.addVertex(var12x, var15x, var16x, var17x).setColor(var38); + var13x.addVertex(var12x, var43, var44, var45).setColor(var39); + var13x.addVertex(var12x, var15x - var27x * var37, var16x - var28x * var37, var17x - var29 * var37).setColor(var39); + var13x.addVertex(var12x, var40, var41, var42).setColor(var39); + var46 = -303301885; + } + } + }); + return; + case 1191908449: + return; + } + } + } + + private static int alphaByte(float var0) { + return Mth.clamp( + Math.round(var0 * 255.0F), + 0, + (-1198237511 ^ 1198237766) + ((-1198237511 & 1198237766) << 1) + ); + } + + private static int withAlpha(int var0, float var1) { + return alphaByte(var1) << (-246593633 ^ 246593657) + ((-246593633 & 246593657) << 1) + | var0 & 16777215; + } +} diff --git a/src/main/java/defpackage/tt.java b/src/main/java/defpackage/tt.java new file mode 100644 index 0000000..64734a6 --- /dev/null +++ b/src/main/java/defpackage/tt.java @@ -0,0 +1,1013 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.textures.GpuTextureView; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.function.Supplier; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.state.level.BlockOutlineRenderState; +import net.minecraft.client.renderer.state.level.LevelRenderState; +import net.minecraft.core.BlockPos; +import net.minecraft.util.Mth; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +@rn(name = "BlockOverlay", description = "Highlights the targeted block", category = rl.RENDER) +public final class tt extends rm { + private static final String FILL_NORMAL = "Normal"; + private static final String FILL_SHADER = "Shader"; + private static final String ANIMATION_NONE = "None"; + private static final String ANIMATION_PULSE = "Pulse"; + private static final String ANIMATION_WAVE = "Wave"; + private static final String SHADER_NEBULA = "Nebula"; + private static final String SHADER_STARS = "Cosmos"; + private static final String SHADER_WEB = "Web"; + private static final String SHADER_PLASMA = "Plasma"; + private static final String SHADER_GLASS = "LiquidGlass"; + private static final String SHADER_MATRIX = "Matrix"; + private static final String SHADER_ARMOR = "LivingArmor"; + private static final String SHADER_ALIEN = "AlienNebula"; + private static final String SHADER_HOLY = "Holy"; + private static final double FILL_EXPANSION = 0.01; + private static final long WAVE_PERIOD_MS = 1000L; + private static final float WAVE_SCALE = 0.18F; + private static final float WAVE_LINE_WIDTH_REDUCTION = 0.5F; + private static final float MIN_LINE_WIDTH = 1.0F; + private static final double PULSE_PERIOD_DIVISOR = 260.0; + private static final float PULSE_SCALE = 0.04F; + private static final long SHADER_TIME_PERIOD_MS = 100000L; + private static final float MILLIS_PER_SECOND = 1000.0F; + private final ru outlineEnabled = new ru( + "Outline", + (boolean)((((20850412 | -20850411) + (20850412 & -20850411)) + ) != 0)) + .description( + "Draw an outline around the block" + ); + private final sm lineWidth = new sm( + "Line width", 2.0F, 1.0F, 5.0F, 0.5F, this.outlineEnabled::isEnabled + ) + .description("Thickness of the block outline"); + private final ru fillEnabled = new ru( + "Fill", (boolean)((((-1450848314 | 1450848315) + (-1450848314 & 1450848315)) + ) != 0)) + .description("Fill the targeted block face"); + private final sg fillType; + private final sm fillAlpha; + private final sg shaderType; + private final sm shaderSpeed; + private final sm shaderAlpha; + private final ru shaderClientColor; + private final rx shaderColor; + private final sg animationMode; + private final ru clientColor; + private final rx customColor; + public static final tt INSTANCE = new tt(); + private AABB shaderFillBox; + private int shaderFillPosX; + private int shaderFillPosY; + private int shaderFillPosZ; + private boolean shaderFillPending; + private static final int[] FACE_UV_COLORS; + + private tt() { + String var10003 = "Fill type"; + Supplier var10004 = this.fillEnabled::isEnabled; + String[] var10005 = new String[2]; + var10005[0] = "Normal"; + var10005[1] = "Shader"; + this.fillType = new sg(var10003, var10004, var10005) + .describe( + "Normal", + "Solid color fill" + ) + .describe( + "Shader", + "Animated shader fill" + ) + .description( + "Type of fill effect applied" + ); + this.fillAlpha = new sm("Fill opacity", 0.3F, 0.1F, 1.0F, 0.05F, () -> { + int var2x = 0; + int var1x = -195833429; + + while (true) { + switch (var1x) { + case -195833429: + default: + if (this.fillEnabled.isEnabled()) { + var1x = 1423769308; + } else { + var1x = -10774893; + } + break; + case -10774893: + var2x = 0; + var1x = 1813135678; + break; + case 544048620: + var2x = 1; + var1x = 1813135678; + break; + case 1423769308: + if (this.fillType.is("Normal")) { + var1x = 544048620; + } else { + var1x = -10774893; + } + break; + case 1813135678: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + }).description("Transparency of the normal fill"); + var10003 = "Shader"; + var10004 = () -> { + int var2x = 0; + int var1x = 12063488; + + while (true) { + switch (var1x) { + case -1729244685: + var2x = 0; + var1x = 736844785; + break; + case -61097823: + if (this.fillType.is("Shader")) { + var1x = 888011198; + } else { + var1x = -1729244685; + } + break; + case 12063488: + default: + if (this.fillEnabled.isEnabled()) { + var1x = -61097823; + } else { + var1x = -1729244685; + } + break; + case 736844785: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 888011198: + var2x = 1; + var1x = 736844785; + } + } + }; + var10005 = new String[9]; + var10005[0] = "Nebula"; + var10005[1] = "Cosmos"; + var10005[2] = "Web"; + var10005[3] = "Plasma"; + var10005[4] = "LiquidGlass"; + var10005[5] = "Matrix"; + var10005[6] = "LivingArmor"; + var10005[7] = "AlienNebula"; + var10005[8] = "Holy"; + this.shaderType = new sg(var10003, var10004, var10005) + .describe( + "Nebula", + "Purple nebula effect" + ) + .describe( + "Cosmos", + "Starry night effect" + ) + .describe( + "Web", + "Intertwined web effect" + ) + .describe( + "Plasma", + "Flowing plasma effect" + ) + .describe( + "LiquidGlass", + "Shiny glass effect" + ) + .describe( + "Matrix", + "Falling code effect" + ) + .describe( + "LivingArmor", + "Enchanted armor glint" + ) + .describe( + "AlienNebula", + "Alien-like distorted effect" + ) + .describe( + "Holy", + "Divine flowing haze" + ) + .description( + "Shader effect for the block fill" + ); + this.shaderSpeed = new sm( + "Shader speed", 1.0F, 0.1F, 3.0F, 0.1F, () -> { + int var2x = 0; + int var1x = 1666167032; + + while (true) { + switch (var1x) { + case -1843646384: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 517567781: + if (this.fillType.is("Shader")) { + var1x = 1585334604; + } else { + var1x = 1746319134; + } + break; + case 1585334604: + var2x = 1; + var1x = -1843646384; + break; + case 1666167032: + default: + if (this.fillEnabled.isEnabled()) { + var1x = 517567781; + } else { + var1x = 1746319134; + } + break; + case 1746319134: + var2x = 0; + var1x = -1843646384; + } + } + } + ) + .description("Animation speed for the shader fill"); + this.shaderAlpha = new sm( + "Shader opacity", + 1.0F, + 0.1F, + 1.0F, + 0.05F, + () -> { + int var2x = 0; + int var1x = 1179968846; + + while (true) { + switch (var1x) { + case -2111045412: + var2x = 0; + var1x = 1843815398; + break; + case -1190914340: + if (this.fillType.is("Shader")) { + var1x = -366671960; + } else { + var1x = -2111045412; + } + break; + case -366671960: + var2x = 1; + var1x = 1843815398; + break; + case 1179968846: + default: + if (this.fillEnabled.isEnabled()) { + var1x = -1190914340; + } else { + var1x = -2111045412; + } + break; + case 1843815398: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description("Transparency of the shader fill"); + this.shaderClientColor = new ru( + "Shader client color", + (boolean)(((1)) != 0), + () -> { + int var2x = 0; + int var1x = 1410260620; + + while (true) { + switch (var1x) { + case -426174582: + if (this.fillType.is("Shader")) { + var1x = 1901474891; + } else { + var1x = 1540957129; + } + break; + case 1410260620: + default: + if (this.fillEnabled.isEnabled()) { + var1x = -426174582; + } else { + var1x = 1540957129; + } + break; + case 1540957129: + var2x = 0; + var1x = 1953868405; + break; + case 1901474891: + var2x = 1; + var1x = 1953868405; + break; + case 1953868405: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description( + "Use the global client color for the shader" + ); + this.shaderColor = new rx( + "Shader color", + new asu( + 0, + 255, + 120, + (1240169266 ^ -1240169011) + ((1240169266 & -1240169011) << 1) + ), + () -> { + int var2x = 0; + int var1x = -1734938280; + + while (true) { + switch (var1x) { + case -1876223256: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -1734938280: + default: + if (this.fillEnabled.isEnabled()) { + var1x = 233543022; + } else { + var1x = 1891036322; + } + break; + case -898128466: + if (!this.shaderClientColor.isEnabled()) { + var1x = 59123635; + } else { + var1x = 1891036322; + } + break; + case 59123635: + var2x = 1; + var1x = -1876223256; + break; + case 233543022: + if (this.fillType.is("Shader")) { + var1x = -898128466; + } else { + var1x = 1891036322; + } + break; + case 1891036322: + var2x = 0; + var1x = -1876223256; + } + } + } + ) + .description("Custom color for the shader fill"); + var10003 = "Animation"; + String[] var4 = new String[3]; + var4[0] = "None"; + var4[1] = "Pulse"; + var4[2] = "Wave"; + this.animationMode = new sg(var10003, var4) + .describe( + "None", + "Static outline" + ) + .describe( + "Pulse", + "Fading in and out" + ) + .describe( + "Wave", + "Color wave effect" + ) + .description("Animation applied to the block outline"); + this.clientColor = new ru( + "Client color", + (boolean)((((-1776974220 | 1776974221) + (-1776974220 & 1776974221)) + ) != 0)) + .description( + "Use the global client color for the outline" + ); + this.customColor = new rx( + "Color", + new asu( + 255, + 255, + 255, + (-1785088806 ^ 1785089061) + ((-1785088806 & 1785089061) << 1) + ), + () -> { + int var2x = 0; + int var1x = 244309569; + + while (true) { + switch (var1x) { + case 244309569: + default: + if (!this.clientColor.isEnabled()) { + var1x = 597754610; + } else { + var1x = 1784184349; + } + break; + case 597754610: + var2x = 1; + var1x = 1646654293; + break; + case 1646654293: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 1784184349: + var2x = 0; + var1x = 1646654293; + } + } + } + ) + .description("Custom color for the block outline"); + } + + public void onWorldRender(LevelRenderContext var1) { + this.shaderFillPending = (boolean)(((0)) != 0); + if (this.isEnabled() && mc.player != null && mc.level != null) { + if (mc.hitResult instanceof BlockHitResult var2 && var2.getType() == Type.BLOCK) { + PoseStack var15 = var1.poseStack(); + SubmitNodeCollector var4 = var1.submitNodeCollector(); + if (var15 != null && var4 != null) { + BlockPos var5 = var2.getBlockPos(); + BlockState var6 = mc.level.getBlockState(var5); + if (!var6.isAir()) { + VoxelShape var7 = var6.getShape(mc.level, var5); + if (!var7.isEmpty()) { + Vec3 var8 = mc.getEntityRenderDispatcher().camera.position(); + AABB var9 = var7.bounds(); + AABB var10 = this.applyPrimaryAnimation(var9); + int var11 = this.baseColor(); + if (this.fillEnabled.isEnabled()) { + AABB var12 = var10.move(var5.getX(), var5.getY(), var5.getZ()).inflate(0.01); + if (this.fillType.is("Shader")) { + this.shaderFillBox = var12; + this.shaderFillPosX = var5.getX(); + this.shaderFillPosY = var5.getY(); + this.shaderFillPosZ = var5.getZ(); + this.shaderFillPending = (boolean)(((1)) != 0); + } else { + int var13 = withAlpha(var11, this.fillAlpha.getCurrent()); + var4.submitCustomGeometry(var15, arj.filledBox(), (var4x, var5x) -> this.addFilledBox(var5x, var4x, var12, var8, var13)); + } + } + + if (this.outlineEnabled.isEnabled()) { + boolean var16 = isTargetTranslucent(var1, var5); + var15.pushPose(); + var15.translate(var5.getX() - var8.x, var5.getY() - var8.y, var5.getZ() - var8.z); + var4.submitShapeOutline(var15, Shapes.create(var10), arj.lines(), withAlpha(var11, 1.0F), this.lineWidth.getCurrent(), var16); + if (this.animationMode.is("Wave")) { + float var17 = (float)( + System.currentTimeMillis() % ((-8282746428541217326L | 8282746428541218326L) + (-8282746428541217326L & 8282746428541218326L)) + ) + / 1000.0F; + AABB var14 = scaleBox(var9, 1.0F + var17 * 0.18F); + var4.submitShapeOutline( + var15, + Shapes.create(var14), + arj.lines(), + withAlpha(var11, 1.0F - var17), + Math.max(1.0F, this.lineWidth.getCurrent() - 0.5F), + var16 + ); + } + + var15.popPose(); + } + } + } + } + } + } + } + + public boolean onBeforeBlockOutline(LevelRenderContext var1, BlockOutlineRenderState var2) { + int var4 = 0; + int var3 = 1614774425; + + while (true) { + switch (var3) { + case -1741170461: + return (boolean)((var4) != 0); + case -457943553: + var4 = 0; + var3 = -1741170461; + break; + case 1536555089: + if (!this.outlineEnabled.isEnabled()) { + var3 = 1783361759; + } else { + var3 = -457943553; + } + break; + case 1614774425: + default: + if (this.isEnabled()) { + var3 = 1536555089; + } else { + var3 = 1783361759; + } + break; + case 1783361759: + var4 = 1; + var3 = -1741170461; + } + } + } + + private static boolean isTargetTranslucent(LevelRenderContext var0, BlockPos var1) { + LevelRenderState var2 = null; + BlockOutlineRenderState var3 = null; + int var5 = 0; + int var4 = 784206583; + + while (true) { + switch (var4) { + case -1847186784: + return (boolean)(((0)) != 0); + case -1387347978: + if (var3.pos().equals(var1)) { + var4 = -419140523; + } else { + var4 = -992117328; + } + break; + case -992117328: + var5 = 0; + var4 = 1572735915; + break; + case -595828355: + var3 = var2.blockOutlineRenderState; + if (var3 != null) { + var4 = 337256942; + } else { + var4 = -992117328; + } + break; + case -419140523: + var5 = 1; + var4 = 1572735915; + break; + case 337256942: + if (var3.isTranslucent()) { + var4 = -1387347978; + } else { + var4 = -992117328; + } + break; + case 784206583: + default: + var2 = var0.levelState(); + if (var2 == null) { + var4 = -1847186784; + } else { + var4 = -595828355; + } + break; + case 1572735915: + return (boolean)((var5) != 0); + } + } + } + + public void onWorldDraw(LevelRenderContext var1) { + int var2 = -2011399975; + + while (true) { + switch (var2) { + case -2045857273: + this.renderShaderFill( + this.shaderFillBox, mc.getEntityRenderDispatcher().camera.position(), this.shaderFillPosX, this.shaderFillPosY, this.shaderFillPosZ + ); + return; + case -2011399975: + default: + if (!this.shaderFillPending) { + var2 = -1041729288; + } else { + var2 = 222810146; + } + break; + case -1041729288: + return; + case -951385372: + if (mc.getEntityRenderDispatcher().camera == null) { + var2 = -225481928; + } else { + var2 = -2045857273; + } + break; + case -762723918: + if (mc.level != null) { + var2 = -951385372; + } else { + var2 = -225481928; + } + break; + case -225481928: + return; + case 222810146: + this.shaderFillPending = (boolean)(((0)) != 0); + if (this.isEnabled()) { + var2 = -762723918; + } else { + var2 = -225481928; + } + } + } + } + + private AABB applyPrimaryAnimation(AABB var1) { + float var2 = 0.0F; + int var3 = 358645556; + + while (true) { + switch (var3) { + case -163294665: + return var1; + case 358645556: + default: + if (!this.animationMode.is("Pulse")) { + var3 = -163294665; + } else { + var3 = 1790840245; + } + break; + case 1790840245: + var2 = 1.0F + (float)((Math.sin(System.currentTimeMillis() / 260.0) + 1.0) * 0.5) * 0.04F; + return scaleBox(var1, var2); + } + } + } + + private void renderShaderFill(AABB var1, Vec3 var2, int var3, int var4, int var5) { + atd var6 = null; + int var7 = 0; + GpuTextureView var8 = null; + int var9 = 0; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + BufferBuilder var14 = null; + GpuTextureView var16 = null; + int var15 = -1334705027; + + while (true) { + switch (var15) { + case -1334705027: + default: + var6 = this.shaderProgram(); + if (var6 == null) { + var15 = -932474443; + } else { + var15 = 690711936; + } + break; + case -932474443: + return; + case -434173040: + var14 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_COLOR); + this.addShaderFaces(var14, var1, var2); + arj.drawCurrent(var14); + return; + case 87097624: + var6.setCameraPos((float)(var2.x - var3), (float)(var2.y - var4), (float)(var2.z - var5)); + var15 = 1266877135; + break; + case 311036954: + var16 = null; + var15 = 724888224; + break; + case 562799569: + if (this.shaderType.is("AlienNebula")) { + var15 = 87097624; + } else { + var15 = 1266877135; + } + break; + case 608881971: + var16 = atb.sceneSnapshot(); + var15 = 724888224; + break; + case 690711936: + var7 = (this.shaderType.is("LiquidGlass")) ? 1 : 0; + if (var7 != 0) { + var15 = 608881971; + } else { + var15 = 311036954; + } + break; + case 724888224: + var8 = var16; + if (var7 != 0) { + var15 = 792206829; + } else { + var15 = 1912836786; + } + break; + case 792206829: + if (var8 == null) { + var15 = 1600785545; + } else { + var15 = 1912836786; + } + break; + case 1108243721: + atd.bindTexture(var8, (boolean)((((-1884694554 ^ 1884694555) + ((-1884694554 & 1884694555) << 1))) != 0)); + var15 = -434173040; + break; + case 1266877135: + arj.setCurrentLayer(arj.positionColor()); + if (var7 != 0) { + var15 = 1108243721; + } else { + var15 = -434173040; + } + break; + case 1600785545: + return; + case 1912836786: + var9 = this.shaderTintColor(); + var10 = (var9 >> (-1219406364 | 1219406380) + (-1219406364 & 1219406380) & (-1743798570 ^ 1743798825) + ((-1743798570 & 1743798825) << 1)) + / 255.0F; + var11 = (var9 >> (-52273863 ^ 52273871) + ((-52273863 & 52273871) << 1) & (-227242023 | 227242278) + (-227242023 & 227242278)) / 255.0F; + var12 = (var9 & (193859556 | -193859301) + (193859556 & -193859301)) / 255.0F; + var13 = (float)( + System.currentTimeMillis() % ((-2483431385925195866L ^ 2483431385925295866L) + ((-2483431385925195866L & 2483431385925295866L) << 1)) + ) + / 1000.0F + * this.shaderSpeed.getCurrent(); + var6.use(); + var6.setResolution(mc.getWindow().getWidth(), mc.getWindow().getHeight()); + var6.setTime(var13); + var6.setTintColor(var10, var11, var12); + var6.setFade(this.shaderAlpha.getCurrent()); + if (!this.shaderType.is("LivingArmor")) { + var15 = 562799569; + } else { + var15 = 87097624; + } + } + } + } + + private void addShaderFaces(BufferBuilder var1, AABB var2, Vec3 var3) { + float var4 = (float)(var2.minX - var3.x); + float var5 = (float)(var2.minY - var3.y); + float var6 = (float)(var2.minZ - var3.z); + float var7 = (float)(var2.maxX - var3.x); + float var8 = (float)(var2.maxY - var3.y); + float var9 = (float)(var2.maxZ - var3.z); + this.face(var1, var4, var5, var6, var4, var5, var9, var7, var5, var9, var7, var5, var6); + this.face(var1, var4, var8, var6, var7, var8, var6, var7, var8, var9, var4, var8, var9); + this.face(var1, var4, var5, var6, var7, var5, var6, var7, var8, var6, var4, var8, var6); + this.face(var1, var4, var5, var9, var4, var8, var9, var7, var8, var9, var7, var5, var9); + this.face(var1, var4, var5, var6, var4, var8, var6, var4, var8, var9, var4, var5, var9); + this.face(var1, var7, var5, var6, var7, var5, var9, var7, var8, var9, var7, var8, var6); + } + + private void face( + BufferBuilder var1, + float var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13 + ) { + boolean var14 = this.shaderType.is("LiquidGlass"); + var1.addVertex(var2, var3, var4) + .setColor(var14 ? FACE_UV_COLORS[0] : (794778930 ^ -794778931) + ((794778930 & -794778931) << 1)); + var1.addVertex(var5, var6, var7) + .setColor(var14 ? FACE_UV_COLORS[1] : (-1487255186 ^ 1487255185) + ((-1487255186 & 1487255185) << 1)); + var1.addVertex(var8, var9, var10) + .setColor( + var14 ? FACE_UV_COLORS[2] : (1177060224 ^ -1177060225) + ((1177060224 & -1177060225) << 1) + ); + var1.addVertex(var11, var12, var13) + .setColor(var14 ? FACE_UV_COLORS[3] : (-1676103470 | 1676103469) + (-1676103470 & 1676103469)); + } + + private atd shaderProgram() { + String var1 = this.shaderType.get(); + int var2 = -1; + switch (var1.hashCode()) { + case -1997372447: + if (var1.equals("Matrix")) { + var2 = 4; + } + break; + case -1901891230: + if (var1.equals("Plasma")) { + var2 = 2; + } + break; + case -1286538368: + if (var1.equals("LiquidGlass")) { + var2 = 3; + } + break; + case -949676042: + if (var1.equals("LivingArmor")) { + var2 = 5; + } + break; + case -289774394: + if (var1.equals("AlienNebula")) { + var2 = 6; + } + break; + case 86836: + if (var1.equals("Web")) { + var2 = 1; + } + break; + case 2255092: + if (var1.equals("Holy")) { + var2 = 7; + } + break; + case 2024198218: + if (var1.equals("Cosmos")) { + var2 = 0; + } + } + + switch (var2) { + case 0: + return atb.worldStarfieldProgram; + case 1: + return atb.worldCobwebProgram; + case 2: + return atb.worldPlasmaProgram; + case 3: + return atb.blockGlassProgram; + case 4: + return atb.worldMatrixProgram; + case 5: + return atb.worldLivingArmorProgram; + case 6: + return atb.worldAlienNebulaProgram; + case 7: + return atb.worldHolyProgram; + default: + return atb.worldNebulaProgram; + } + } + + private void addFilledBox(VertexConsumer var1, Pose var2, AABB var3, Vec3 var4, int var5) { + float var6 = (float)(var3.minX - var4.x); + float var7 = (float)(var3.minY - var4.y); + float var8 = (float)(var3.minZ - var4.z); + float var9 = (float)(var3.maxX - var4.x); + float var10 = (float)(var3.maxY - var4.y); + float var11 = (float)(var3.maxZ - var4.z); + this.quad(var1, var2, var5, var6, var7, var8, var6, var7, var11, var9, var7, var11, var9, var7, var8); + this.quad(var1, var2, var5, var6, var10, var8, var9, var10, var8, var9, var10, var11, var6, var10, var11); + this.quad(var1, var2, var5, var6, var7, var8, var9, var7, var8, var9, var10, var8, var6, var10, var8); + this.quad(var1, var2, var5, var6, var7, var11, var6, var10, var11, var9, var10, var11, var9, var7, var11); + this.quad(var1, var2, var5, var6, var7, var8, var6, var10, var8, var6, var10, var11, var6, var7, var11); + this.quad(var1, var2, var5, var9, var7, var8, var9, var7, var11, var9, var10, var11, var9, var10, var8); + } + + private void quad( + VertexConsumer var1, + Pose var2, + int var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13, + float var14, + float var15 + ) { + var1.addVertex(var2, var4, var5, var6).setColor(var3); + var1.addVertex(var2, var7, var8, var9).setColor(var3); + var1.addVertex(var2, var10, var11, var12).setColor(var3); + var1.addVertex(var2, var13, var14, var15).setColor(var3); + } + + private int shaderTintColor() { + int var1 = 0; + int var3 = 0; + int var2 = -1297179591; + + while (true) { + switch (var2) { + case -1297179591: + default: + if (this.shaderClientColor.isEnabled()) { + var2 = 1623699862; + } else { + var2 = 965009295; + } + break; + case -819415075: + var1 = var3; + return var1 & 16777215; + case 965009295: + var3 = this.shaderColor.getIntColor(); + var2 = -819415075; + break; + case 1623699862: + var3 = bz.getInstance().getThemeManager().getCurrentTheme().getColor().getRGB(); + var2 = -819415075; + } + } + } + + private int baseColor() { + int var1 = 0; + int var3 = 0; + int var2 = -148032193; + + while (true) { + switch (var2) { + case -148032193: + default: + if (this.clientColor.isEnabled()) { + var2 = 1038696445; + } else { + var2 = 1785416099; + } + break; + case 718601443: + var1 = var3; + return var1 & 16777215; + case 1038696445: + var3 = bz.getInstance().getThemeManager().getCurrentTheme().getColor().getRGB(); + var2 = 718601443; + break; + case 1785416099: + var3 = this.customColor.getIntColor(); + var2 = 718601443; + } + } + } + + private static int withAlpha(int var0, float var1) { + return Mth.clamp( + Math.round(var1 * 255.0F), 0, (-1440302527 ^ 1440302782) + ((-1440302527 & 1440302782) << 1) + ) + << (1748410231 | -1748410207) + (1748410231 & -1748410207) + | var0 & 16777215; + } + + private static AABB scaleBox(AABB var0, float var1) { + Vec3 var2 = var0.getCenter(); + double var3 = (var0.maxX - var0.minX) * 0.5 * var1; + double var5 = (var0.maxY - var0.minY) * 0.5 * var1; + double var7 = (var0.maxZ - var0.minZ) * 0.5 * var1; + return new AABB(var2.x - var3, var2.y - var5, var2.z - var7, var2.x + var3, var2.y + var5, var2.z + var7); + } + + static { + int[] var10000 = new int[4]; + var10000[0] = -16776961; + var10000[1] = -16711681; + var10000[2] = -1; + var10000[3] = -65281; + FACE_UV_COLORS = var10000; + } +} diff --git a/src/main/java/defpackage/tu.java b/src/main/java/defpackage/tu.java new file mode 100644 index 0000000..88ef705 --- /dev/null +++ b/src/main/java/defpackage/tu.java @@ -0,0 +1,10 @@ +package defpackage; + +public enum tu { + SELF, + FRIEND, + PLAYER, + HOSTILE, + PASSIVE, + OTHER; +} diff --git a/src/main/java/defpackage/tv.java b/src/main/java/defpackage/tv.java new file mode 100644 index 0000000..7f52aad --- /dev/null +++ b/src/main/java/defpackage/tv.java @@ -0,0 +1,19 @@ +package defpackage; + +final class tv { + float glowRadius; + float glowOpacity; + float lineOpacity; + float lineThickness; + float rimOpacity; + float contactOpacity; + float afterimageOpacity; + float afterimageDecay; + float tintOpacity; + float time; + int downsample; + int accentColor; + + tv() { + } +} diff --git a/src/main/java/defpackage/tw.java b/src/main/java/defpackage/tw.java new file mode 100644 index 0000000..262ceca --- /dev/null +++ b/src/main/java/defpackage/tw.java @@ -0,0 +1,2327 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.function.Supplier; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelExtractionContext; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelTerrainRenderContext; +import net.minecraft.client.model.Model; +import net.minecraft.client.renderer.OrderedSubmitNodeCollector; +import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer.CrumblingOverlay; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.player.Player; + +@rn(name = "Chams", description = "Cosmetic neon entity model accents", category = rl.RENDER) +public final class tw extends rm { + private static final String TARGET_PLAYERS = "Players"; + private static final String TARGET_FRIENDS = "Friends"; + private static final String TARGET_SELF = "Self"; + private static final String TARGET_HOSTILES = "Hostiles"; + private static final String TARGET_PASSIVES = "Passives"; + private static final String TARGET_OTHERS = "Others"; + private static final String LAYER_GLOW = "Neon Glow"; + private static final String LAYER_DOUBLE_OUTLINE = "Double Outline"; + private static final String LAYER_FRESNEL = "Fresnel Rim"; + private static final String LAYER_GRADIENT = "Vertical Gradient"; + private static final String LAYER_CONTACT = "Contact Glow"; + private static final String LAYER_DAMAGE = "Damage Flash"; + private static final String LAYER_TARGET_PALETTES = "Target Palettes"; + private static final String LAYER_DISTANCE_FADE = "Distance Fade"; + private static final String LAYER_AFTERIMAGE = "Afterimage"; + private static final String LAYER_TINT = "Soft Tint"; + private static final String PRESET_SOLAR = "Solar Neon"; + private static final String PRESET_CYBER = "Cyber Aqua"; + private static final String PRESET_TOXIC = "Toxic Lime"; + private static final String PRESET_VOID = "Void Pink"; + private static final String PRESET_GOLD = "Golden Aura"; + private static final String PRESET_CLEAN = "Clean Outline"; + private static final String PRESET_CUSTOM = "Custom"; + private static final String COLOR_CLIENT = "Client"; + private static final String COLOR_CUSTOM = "Custom"; + private static final String COLOR_GRADIENT = "Gradient"; + private static final String COLOR_RAINBOW = "Rainbow"; + private static final String COLOR_PULSE = "Pulse"; + private static final String COLOR_HEALTH = "Health"; + private static final String COLOR_DISTANCE = "Distance"; + private static final float MIN_ALPHA = 0.001F; + private static final float MAX_ALPHA = 1.0F; + private static final float MAX_COLOR_COMPONENT = 255.0F; + private static final float DEFAULT_MAX_DISTANCE = 112.0F; + private static final float MIN_AFTERIMAGE_DECAY = 0.1F; + private static final float MAX_AFTERIMAGE_DECAY = 0.99F; + private static final float MIN_DISTANCE_ALPHA = 0.08F; + private static final float GRADIENT_ANCHOR_SCALE = 64.0F; + private static final float MAX_GRADIENT_ANCHOR = 511.0F; + private static final float MIN_GRADIENT_SPAN = 0.05F; + private static final int SHORT_MASK = 65535; + private static final int SHORT_SHIFT = 16; + private static final long TIME_WRAP_MS = 600000L; + private static final int FULL_ALPHA = 255; + private static final int RGB_MASK = 16777215; + private static final int MAX_RGB_COMPONENT = 255; + private static final int HEALTH_YELLOW = -10166; + private static final int HEALTH_GREEN = -10616966; + private static final int HEALTH_RED = -46004; + private static final int SOLAR_PLAYER = -26092; + private static final int SOLAR_FRIEND = -9109546; + private static final int SOLAR_HOSTILE = -46035; + private static final int SOLAR_PASSIVE = -10166; + private static final int SOLAR_OTHER = -5206785; + private static final int CYBER_PLAYER = -14030849; + private static final int CYBER_FRIEND = -8519758; + private static final int CYBER_HOSTILE = -49786; + private static final int CYBER_PASSIVE = -11736065; + private static final int CYBER_OTHER = -5796870; + private static final int TOXIC_PLAYER = -5701842; + private static final int TOXIC_FRIEND = -10289200; + private static final int TOXIC_HOSTILE = -4534; + private static final int TOXIC_PASSIVE = -9371811; + private static final int TOXIC_OTHER = -1769622; + private static final int VOID_PLAYER = -45569; + private static final int VOID_FRIEND = -8329217; + private static final int VOID_HOSTILE = -51096; + private static final int VOID_PASSIVE = -3375617; + private static final int VOID_OTHER = -8626945; + private static final int GOLD_PLAYER = -15801; + private static final int GOLD_FRIEND = -8054; + private static final int GOLD_HOSTILE = -34256; + private static final int GOLD_PASSIVE = -3734; + private static final int GOLD_OTHER = -22435; + private static final int CLEAN_PLAYER = -1; + private static final int CLEAN_FRIEND = -4718604; + private static final int CLEAN_HOSTILE = -15164; + private static final int CLEAN_PASSIVE = -1572911; + private static final int CLEAN_OTHER = -2566401; + private static final int INTERNAL_DOWNSAMPLE = 2; + private static final float MIN_BLUR_RADIUS = 2.0F; + private static final float MIN_OUTLINE_THICKNESS = 0.5F; + private static final float MAX_NEIGHBOR_TAP_SCALE = 3.0F; + private static final float MARGIN_SLACK_PIXELS = 6.0F; + private static final int MASK_GLOW = 1; + private static final int MASK_DOUBLE_OUTLINE = 2; + private static final int MASK_FRESNEL = 4; + private static final int MASK_GRADIENT = 8; + private static final int MASK_CONTACT = 16; + private static final int MASK_DAMAGE = 32; + private static final int MASK_TARGET_PALETTES = 64; + private static final int MASK_DISTANCE_FADE = 128; + private static final int MASK_AFTERIMAGE = 256; + private static final int MASK_TINT = 512; + public static final tw INSTANCE = new tw(); + public final si targets; + public final si layers; + public final sg preset; + public final sg colorMode; + public final rx color; + public final rx secondColor; + public final rx playerColor; + public final rx friendColor; + public final rx hostileColor; + public final rx passiveColor; + public final rx otherColor; + public final rx hurtColor; + public final ru hitColor; + public final sm glowOpacity; + public final sm glowRadius; + public final sm lineOpacity; + public final sm lineThickness; + public final sm rimOpacity; + public final sm contactOpacity; + public final sm afterimageOpacity; + public final sm afterimageDecay; + public final sm damageFlashIntensity; + public final sm distanceFadeStrength; + public final sm tintOpacity; + public final sm brightness; + public final sm rainbowSpeed; + public final sm pulseSpeed; + public final sm maxDistance; + public final ru fullBright; + private static final String[] LAYER_MASK_ORDER; + private static final String[] TARGET_MASK_ORDER; + private final tv visualConfig; + private sh[] layerHandles; + private sh[] targetHandles; + private int frameLayerMask; + private int frameTargetMask; + private boolean frameVisualMaskActive; + private float frameMaxDistance; + private float frameMaxDistanceSq; + private long frameTimeMillis; + private long frameIdCounter; + private double frameCameraY; + + private tw() { + String var10003 = "Targets"; + sh[] var10004 = new sh[6]; + var10004[0] = sh.of( + "Players" + ) + .description("Highlight other players"); + var10004[1] = sh.of( + "Friends" + ) + .description("Highlight friends"); + var10004[2] = sh.of( + "Self", (boolean)((((534161122 | -534161122) + (534161122 & -534161122)) + ) != 0)) + .description( + "Highlight yourself in third person" + ); + var10004[3] = sh.of("Hostiles") + .description("Highlight hostile mobs"); + var10004[4] = sh.of( + "Passives" + ) + .description("Highlight passive animals"); + var10004[5] = sh.of( + "Others" + ) + .description( + "Highlight other entities like items and vehicles" + ); + this.targets = new si(var10003, var10004) + .description( + "Entities that will be highlighted" + ); + var10003 = "Layers"; + var10004 = new sh[10]; + int var10006 = 0; + String var10007 = "Neon Glow"; + int var10008 = 1; + String[] var10009 = new String[1]; + var10009[0] = "Outline"; + var10004[var10006] = sh.of(var10007, (boolean)((var10008) != 0), var10009) + .description( + "Outer colored glow around the entity" + ); + var10004[1] = sh.of( + "Double Outline" + ) + .description( + "Secondary thicker outline layer" + ); + var10004[2] = sh.of( + "Fresnel Rim" + ) + .description( + "Inner rim lighting effect" + ); + var10004[3] = sh.of( + "Vertical Gradient" + ) + .description( + "Vertical color gradient across the entity" + ); + var10004[4] = sh.of( + "Contact Glow" + ) + .description( + "Highlight where the entity touches the ground" + ); + var10004[5] = sh.of( + "Damage Flash" + ) + .description( + "Red tint when the entity takes damage" + ); + var10004[6] = sh.of( + "Target Palettes" + ) + .description( + "Use custom colors for specific targets" + ); + var10004[7] = sh.of( + "Distance Fade" + ) + .description("Fade out chams on distant entities"); + var10004[8] = sh.of( + "Afterimage", (boolean)((((519789287 ^ -519789287) + ((519789287 & -519789287) << 1)) + ) != 0)) + .description( + "Leave a ghost trail behind moving entities" + ); + var10004[9] = sh.of( + "Soft Tint", + (boolean)((((-1711931686 | 1711931686) + (-1711931686 & 1711931686)) + ) != 0)) + .description( + "Fill the inside of the entity with a solid color" + ); + this.layers = new si(var10003, var10004) + .description( + "Render layers to apply chams on" + ); + var10003 = "Style Preset"; + String[] var5 = new String[7]; + var5[0] = "Solar Neon"; + var5[1] = "Cyber Aqua"; + var5[2] = "Toxic Lime"; + var5[3] = "Void Pink"; + var5[4] = "Golden Aura"; + var5[5] = "Clean Outline"; + var5[6] = "Custom"; + this.preset = new sg(var10003, var5) + .describe( + "Solar Neon", + "Bright yellow and orange aesthetic" + ) + .describe( + "Cyber Aqua", + "Neon pink and blue aesthetic" + ) + .describe( + "Toxic Lime", + "Bright green and dark aesthetic" + ) + .describe( + "Void Pink", + "Dark purple aesthetic" + ) + .describe( + "Golden Aura", + "Shiny golden aesthetic" + ) + .describe( + "Clean Outline", + "Minimalist aesthetic" + ) + .describe( + "Custom", + "Use custom colors and settings" + ) + .description( + "Pre-defined visual style for chams" + ); + var10003 = "Color Mode"; + Supplier var6 = () -> this.preset.is("Custom"); + String[] var10005 = new String[7]; + var10005[0] = "Custom"; + var10005[1] = "Client"; + var10005[2] = "Gradient"; + var10005[3] = "Rainbow"; + var10005[4] = "Pulse"; + var10005[5] = "Health"; + var10005[6] = "Distance"; + this.colorMode = new sg(var10003, var6, var10005) + .describe( + "Custom", + "Use custom selected colors" + ) + .describe( + "Client", + "Use the main client theme color" + ) + .describe( + "Gradient", + "Use a 2-color gradient" + ) + .describe( + "Rainbow", + "Animated rainbow colors" + ) + .describe( + "Pulse", + "Pulsing single color" + ) + .describe( + "Health", + "Color based on entity health" + ) + .describe( + "Distance", + "Color based on distance to entity" + ) + .description( + "How the colors are assigned to entities" + ); + this.color = new rx( + "Color", + new asu( + 255, + 154, + 20, + (625162333 | -625162078) + (625162333 & -625162078) + ), + () -> { + int var2x = 0; + int var1x = 747035359; + + while (true) { + switch (var1x) { + case -1802007611: + if (!this.colorMode.is("Custom")) { + var1x = 404074190; + } else { + var1x = -716905140; + } + break; + case -716905140: + var2x = 1; + var1x = -35217313; + break; + case -35217313: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 404074190: + if (!this.colorMode.is("Gradient")) { + var1x = 413703834; + } else { + var1x = -716905140; + } + break; + case 413703834: + if (!this.colorMode.is("Pulse")) { + var1x = 830050945; + } else { + var1x = -716905140; + } + break; + case 747035359: + default: + if (this.preset.is("Custom")) { + var1x = -1802007611; + } else { + var1x = 761175290; + } + break; + case 761175290: + var2x = 0; + var1x = -35217313; + break; + case 830050945: + if (this.colorMode.is("Distance")) { + var1x = -716905140; + } else { + var1x = 761175290; + } + } + } + } + ) + .description("Primary color for the chams"); + this.secondColor = new rx( + "Second Color", + new asu( + 255, + 231, + 74, + (-389362812 | 389363067) + (-389362812 & 389363067) + ), + () -> { + int var2x = 0; + int var1x = 282711634; + + while (true) { + switch (var1x) { + case -1041023686: + var2x = 1; + var1x = 2147021596; + break; + case 86717106: + if (!this.colorMode.is("Gradient")) { + var1x = 146082002; + } else { + var1x = -1041023686; + } + break; + case 146082002: + if (!this.colorMode.is("Pulse")) { + var1x = 1340891937; + } else { + var1x = -1041023686; + } + break; + case 282711634: + default: + if (this.preset.is("Custom")) { + var1x = 86717106; + } else { + var1x = 961986458; + } + break; + case 961986458: + var2x = 0; + var1x = 2147021596; + break; + case 1340891937: + if (this.colorMode.is("Distance")) { + var1x = -1041023686; + } else { + var1x = 961986458; + } + break; + case 2147021596: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description( + "Secondary color for gradient chams" + ); + this.playerColor = new rx( + "Player Color", + new asu( + 255, + 154, + 20, + (815026378 ^ -815026123) + ((815026378 & -815026123) << 1) + ), + () -> { + int var2x = 0; + int var1x = 209003140; + + while (true) { + switch (var1x) { + case -1875592696: + if (this.layers.isEnable("Target Palettes")) { + var1x = -828601942; + } else { + var1x = -550548756; + } + break; + case -828601942: + var2x = 1; + var1x = -128133542; + break; + case -550548756: + var2x = 0; + var1x = -128133542; + break; + case -128133542: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 209003140: + default: + if (this.preset.is("Custom")) { + var1x = -1875592696; + } else { + var1x = -550548756; + } + } + } + } + ) + .description("Color applied to players"); + this.friendColor = new rx( + "Friend Color", + new asu( + 116, + 255, + 214, + (-1260784874 ^ 1260785129) + ((-1260784874 & 1260785129) << 1) + ), + () -> { + int var2x = 0; + int var1x = 1845716835; + + while (true) { + switch (var1x) { + case -1595319696: + var2x = 1; + var1x = 1269126293; + break; + case 824605511: + if (this.layers.isEnable("Target Palettes")) { + var1x = -1595319696; + } else { + var1x = 1148001014; + } + break; + case 1148001014: + var2x = 0; + var1x = 1269126293; + break; + case 1269126293: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 1845716835: + default: + if (this.preset.is("Custom")) { + var1x = 824605511; + } else { + var1x = 1148001014; + } + } + } + } + ) + .description("Color applied to friends"); + this.hostileColor = new rx( + "Hostile Color", + new asu( + 255, + 76, + 45, + (1259739449 | -1259739194) + (1259739449 & -1259739194) + ), + () -> { + int var2x = 0; + int var1x = -1747797095; + + while (true) { + switch (var1x) { + case -1747797095: + default: + if (this.preset.is("Custom")) { + var1x = -1038918221; + } else { + var1x = 1718394563; + } + break; + case -1038918221: + if (this.layers.isEnable("Target Palettes")) { + var1x = -414017846; + } else { + var1x = 1718394563; + } + break; + case -414017846: + var2x = 1; + var1x = 751843854; + break; + case 751843854: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 1718394563: + var2x = 0; + var1x = 751843854; + } + } + } + ) + .description("Color applied to hostile mobs"); + this.passiveColor = new rx( + "Passive Color", + new asu( + 255, + 216, + 74, + (607372811 ^ -607372556) + ((607372811 & -607372556) << 1) + ), + () -> { + int var2x = 0; + int var1x = -1925348435; + + while (true) { + switch (var1x) { + case -1925348435: + default: + if (this.preset.is("Custom")) { + var1x = 762341001; + } else { + var1x = 612540934; + } + break; + case -1793591228: + var2x = 1; + var1x = 1399352134; + break; + case 612540934: + var2x = 0; + var1x = 1399352134; + break; + case 762341001: + if (this.layers.isEnable("Target Palettes") + ) + { + var1x = -1793591228; + } else { + var1x = 612540934; + } + break; + case 1399352134: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description("Color applied to passive mobs"); + this.otherColor = new rx( + "Other Color", + new asu( + 176, + 140, + 255, + (671595978 ^ -671595723) + ((671595978 & -671595723) << 1) + ), + () -> { + int var2x = 0; + int var1x = -1339287472; + + while (true) { + switch (var1x) { + case -1339287472: + default: + if (this.preset.is("Custom")) { + var1x = 58115208; + } else { + var1x = -6179858; + } + break; + case -6179858: + var2x = 0; + var1x = 96600457; + break; + case 58115208: + if (this.layers.isEnable("Target Palettes")) { + var1x = 1989076261; + } else { + var1x = -6179858; + } + break; + case 96600457: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 1989076261: + var2x = 1; + var1x = 96600457; + } + } + } + ) + .description("Color applied to other entities"); + this.hurtColor = new rx( + "Hurt Color", + new asu( + 255, + 58, + 58, + (838560943 | -838560688) + (838560943 & -838560688) + ), + () -> this.layers.isEnable("Damage Flash") + ) + .description( + "Color applied when the entity takes damage" + ); + this.hitColor = new ru( + "Hitcolor", + (boolean)((((-1036692099 ^ 1036692099) + ((-1036692099 & 1036692099) << 1)) + ) != 0)) + .description( + "Colors the model when hit, replacing default red" + ); + this.glowOpacity = new sm( + "Glow Opacity", + 0.95F, + 0.0F, + 1.0F, + 0.05F, + () -> this.layers.isEnable("Neon Glow") + ) + .description( + "Transparency of the glow effect" + ); + this.glowRadius = new sm( + "Glow Radius", + 14.0F, + 2.0F, + 36.0F, + 1.0F, + () -> this.layers.isEnable("Neon Glow") + ) + .description("Spread radius of the glow effect"); + this.lineOpacity = new sm( + "Line Opacity", + 0.95F, + 0.0F, + 1.0F, + 0.05F, + () -> this.layers.isEnable("Double Outline") + ) + .description( + "Transparency of the outline" + ); + this.lineThickness = new sm( + "Line Thickness", + 1.85F, + 0.5F, + 4.0F, + 0.05F, + () -> this.layers.isEnable("Double Outline") + ) + .description("Thickness of the outline"); + this.rimOpacity = new sm( + "Rim Opacity", + 0.72F, + 0.0F, + 1.0F, + 0.05F, + () -> this.layers.isEnable("Fresnel Rim") + ) + .description("Transparency of the rim lighting"); + this.contactOpacity = new sm( + "Contact Opacity", + 0.34F, + 0.0F, + 1.0F, + 0.05F, + () -> this.layers.isEnable("Contact Glow") + ) + .description("Transparency of the contact shadow"); + this.afterimageOpacity = new sm( + "Afterimage Opacity", + 0.42F, + 0.0F, + 0.9F, + 0.02F, + () -> this.layers.isEnable("Afterimage") + ) + .description( + "Transparency of the afterimage trails" + ); + this.afterimageDecay = new sm( + "Afterimage Decay", + 0.95F, + 0.1F, + 0.99F, + 0.01F, + () -> this.layers.isEnable("Afterimage") + ) + .description( + "How quickly the afterimage fades" + ); + this.damageFlashIntensity = new sm( + "Damage Intensity", + 0.72F, + 0.0F, + 1.0F, + 0.05F, + () -> this.layers.isEnable("Damage Flash") + ) + .description( + "Intensity of the damage flash effect" + ); + this.distanceFadeStrength = new sm( + "Distance Strength", + 0.72F, + 0.0F, + 1.0F, + 0.05F, + () -> this.layers.isEnable("Distance Fade") + ) + .description( + "How strongly the effect fades with distance" + ); + this.tintOpacity = new sm( + "Tint Opacity", + 0.18F, + 0.0F, + 0.45F, + 0.01F, + () -> this.layers.isEnable("Soft Tint") + ) + .description( + "Transparency of the base model tint" + ); + this.brightness = new sm("Brightness", 1.0F, 0.35F, 1.5F, 0.05F) + .description( + "Overall brightness multiplier for chams" + ); + this.rainbowSpeed = new sm( + "Rainbow Speed", 1.0F, 0.1F, 4.0F, 0.1F, () -> { + int var2x = 0; + int var1x = 241651535; + + while (true) { + switch (var1x) { + case -2119451922: + var2x = 1; + var1x = 963781013; + break; + case -1358793058: + if (this.colorMode.is("Rainbow")) { + var1x = -2119451922; + } else { + var1x = 665916110; + } + break; + case 241651535: + default: + if (this.preset.is("Custom")) { + var1x = -1358793058; + } else { + var1x = 665916110; + } + break; + case 665916110: + var2x = 0; + var1x = 963781013; + break; + case 963781013: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description( + "Speed of the rainbow color cycle" + ); + this.pulseSpeed = new sm( + "Pulse Speed", 1.0F, 0.1F, 4.0F, 0.1F, () -> { + int var2x = 0; + int var1x = -1337655269; + + while (true) { + switch (var1x) { + case -2123777925: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -1853392589: + if (this.colorMode.is("Pulse")) { + var1x = -464525050; + } else { + var1x = 166329139; + } + break; + case -1337655269: + default: + if (this.preset.is("Custom")) { + var1x = -1853392589; + } else { + var1x = 166329139; + } + break; + case -464525050: + var2x = 1; + var1x = -2123777925; + break; + case 166329139: + var2x = 0; + var1x = -2123777925; + } + } + } + ) + .description( + "Speed of the pulsing animation" + ); + this.maxDistance = new sm("Max Distance", 112.0F, 16.0F, 256.0F, 4.0F) + .description("Maximum distance to render chams"); + this.fullBright = new ru( + "Full Bright", + (boolean)((((2090208235 | -2090208234) + (2090208235 & -2090208234)) + ) != 0)) + .description( + "Makes entities bright regardless of lighting" + ); + this.visualConfig = new tv(); + } + + @Override + public void onDisable() { + ty.clearAfterimageHistory(); + ty.requestFullClear(); + super.onDisable(); + } + + public boolean glowActive() { + int var2 = 0; + int var1 = 1053220195; + + while (true) { + switch (var1) { + case -1171608709: + var2 = 0; + var1 = -248535225; + break; + case -248535225: + return (boolean)((var2) != 0); + case 625086652: + if (this.frameVisualMaskActive) { + var1 = 1637260412; + } else { + var1 = -1171608709; + } + break; + case 1053220195: + default: + if (this.isEnabled()) { + var1 = 625086652; + } else { + var1 = -1171608709; + } + break; + case 1637260412: + var2 = 1; + var1 = -248535225; + } + } + } + + public void beginFrame(LevelExtractionContext var1) { + this.frameIdCounter += (8951168350649447162L | -8951168350649447161L) + (8951168350649447162L & -8951168350649447161L); + this.frameCameraY = var1.camera().position().y; + this.computeFrameCache(); + ty.beginFrame(); + auc.beginFrame(); + atz.beginFrame(this.frameIdCounter, ty.isActive(), this.gradientMaskActive()); + if (ty.isActive()) { + tv var2 = this.updateVisualConfig(); + aue.beginFrame( + var1.levelState(), + effectMarginPixels(var2), + (boolean)(((var2.afterimageOpacity > 0.001F + ? 1: (-1790485510 ^ 1790485510) + ((-1790485510 & 1790485510) << 1))) != 0), + var2.afterimageDecay + ); + } else { + aue.invalidate(); + } + } + + private void computeFrameCache() { + this.resolveSettingHandles(); + this.frameLayerMask = bitmaskOf(this.layerHandles); + this.frameTargetMask = bitmaskOf(this.targetHandles); + this.frameMaxDistance = this.maxDistance.getCurrent(); + this.frameMaxDistanceSq = this.frameMaxDistance > 0.0F ? this.frameMaxDistance * this.frameMaxDistance : 0.0F; + this.frameTimeMillis = System.currentTimeMillis(); + this.frameVisualMaskActive = this.computeVisualMaskActive(); + } + + private void resolveSettingHandles() { + int var1 = -316997038; + + while (true) { + switch (var1) { + case -316997038: + default: + if (this.layerHandles != null) { + var1 = 1467575702; + } else { + var1 = 254913697; + } + break; + case 254913697: + this.layerHandles = resolveHandles(this.layers, LAYER_MASK_ORDER); + this.targetHandles = resolveHandles(this.targets, TARGET_MASK_ORDER); + return; + case 1467575702: + return; + } + } + } + + private static sh[] resolveHandles(si var0, String[] var1) { + sh[] var2 = null; + int var3 = 0; + int var4 = 1938894128; + + while (true) { + switch (var4) { + case -2054014050: + var2[var3] = var0.getValueByName(var1[var3]); + var3++; + var4 = 289689543; + break; + case -295081208: + return var2; + case 289689543: + if (var3 < var1.length) { + var4 = -2054014050; + } else { + var4 = -295081208; + } + break; + case 1938894128: + default: + var2 = new sh[var1.length]; + var3 = 0; + var4 = 289689543; + } + } + } + + private static int bitmaskOf(sh[] var0) { + int var1 = 0; + int var2 = 0; + sh var3 = null; + int var4 = 71586360; + + while (true) { + switch (var4) { + case -1944964596: + return var1; + case -926431462: + var2++; + var4 = 1153951906; + break; + case -839864092: + var1 |= (-482690484 | 482690485) + (-482690484 & 482690485) << var2; + var4 = -926431462; + break; + case 71586360: + default: + var1 = 0; + var2 = 0; + var4 = 1153951906; + break; + case 1153951906: + if (var2 < var0.length) { + var4 = 1457509728; + } else { + var4 = -1944964596; + } + break; + case 1457509728: + var3 = var0[var2]; + if (var3 != null) { + var4 = 1699306327; + } else { + var4 = -926431462; + } + break; + case 1699306327: + if (var3.isEnabled()) { + var4 = -839864092; + } else { + var4 = -926431462; + } + } + } + } + + private boolean computeVisualMaskActive() { + int var1 = 0; + int var3 = 0; + int var2 = 892649893; + + while (true) { + switch (var2) { + case -2040056069: + if ((var1 & (-1873158695 | 1873158697) + (-1873158695 & 1873158697)) != 0) { + var2 = -1372350067; + } else { + var2 = 2093551361; + } + break; + case -1959420614: + var3 = 0; + var2 = 1012064958; + break; + case -1802215769: + if (this.glowOpacity.getCurrent() > 0.001F) { + var2 = -114526186; + } else { + var2 = -2040056069; + } + break; + case -1372350067: + if (this.lineOpacity.getCurrent() > 0.001F) { + var2 = -572271434; + } else { + var2 = 2093551361; + } + break; + case -1081214240: + if ((var1 & (-1157721060 ^ 1157721076) + ((-1157721060 & 1157721076) << 1)) != 0) { + var2 = 1529769200; + } else { + var2 = 1414874262; + } + break; + case -572271434: + if (!(this.lineThickness.getCurrent() > 0.001F)) { + var2 = 2093551361; + } else { + var2 = 1335520907; + } + break; + case -471479295: + if (!(this.tintOpacity.getCurrent() > 0.001F)) { + var2 = 1198118507; + } else { + var2 = 1335520907; + } + break; + case -114526186: + if (!(this.glowRadius.getCurrent() > 0.001F)) { + var2 = -2040056069; + } else { + var2 = 1335520907; + } + break; + case 892649893: + default: + var1 = this.frameLayerMask; + if ((var1 & (1616938790 | -1616938789) + (1616938790 & -1616938789)) != 0) { + var2 = -1802215769; + } else { + var2 = -2040056069; + } + break; + case 1012064958: + return (boolean)((var3) != 0); + case 1198118507: + if ((var1 & (-650782030 ^ 650782262) + ((-650782030 & 650782262) << 1)) != 0) { + var2 = 1335520907; + } else { + var2 = -1959420614; + } + break; + case 1335520907: + var3 = 1; + var2 = 1012064958; + break; + case 1414874262: + if ((var1 & (1612462080 ^ -1612461824) + ((1612462080 & -1612461824) << 1)) != 0) { + var2 = 1775279044; + } else { + var2 = 1423111622; + } + break; + case 1423111622: + if ((var1 & (509067482 | -509066970) + (509067482 & -509066970)) != 0) { + var2 = -471479295; + } else { + var2 = 1198118507; + } + break; + case 1440509352: + if (!(this.rimOpacity.getCurrent() > 0.001F)) { + var2 = -1081214240; + } else { + var2 = 1335520907; + } + break; + case 1529769200: + if (!(this.contactOpacity.getCurrent() > 0.001F)) { + var2 = 1414874262; + } else { + var2 = 1335520907; + } + break; + case 1775279044: + if (!(this.afterimageOpacity.getCurrent() > 0.001F)) { + var2 = 1423111622; + } else { + var2 = 1335520907; + } + break; + case 2093551361: + if ((var1 & (1629545969 | -1629545965) + (1629545969 & -1629545965)) != 0) { + var2 = 1440509352; + } else { + var2 = -1081214240; + } + } + } + } + + public void prepareTargets(LevelTerrainRenderContext var1) { + aue.finish(); + ty.prepareTargets(); + } + + private static float effectMarginPixels(tv var0) { + float var1 = 0.0F; + int var2 = 0; + float var3 = 0.0F; + float var5 = 0.0F; + int var6 = 0; + float var7 = 0.0F; + int var4 = -1679371661; + + while (true) { + switch (var4) { + case -1896483448: + if (var0.contactOpacity > 0.001F) { + var4 = -1512930670; + } else { + var4 = 879305194; + } + break; + case -1679371661: + default: + if (!(var0.glowOpacity > 0.001F)) { + var4 = 809634212; + } else { + var4 = 1015737638; + } + break; + case -1512930670: + var6 = 1; + var4 = -1176500966; + break; + case -1479699587: + var3 = var7; + return Math.max(var1, var3) + 6.0F; + case -1176500966: + var2 = var6; + if (var2 != 0) { + var4 = 2005813899; + } else { + var4 = 731956099; + } + break; + case -571213468: + var1 = var5; + if (!(var0.lineOpacity > 0.001F)) { + var4 = 171880254; + } else { + var4 = -1512930670; + } + break; + case 171880254: + if (!(var0.rimOpacity > 0.001F)) { + var4 = -1896483448; + } else { + var4 = -1512930670; + } + break; + case 373495958: + var5 = 0.0F; + var4 = -571213468; + break; + case 731956099: + var7 = 0.0F; + var4 = -1479699587; + break; + case 809634212: + if (var0.rimOpacity > 0.001F) { + var4 = 1015737638; + } else { + var4 = 373495958; + } + break; + case 879305194: + var6 = 0; + var4 = -1176500966; + break; + case 1015737638: + var5 = Math.max(var0.glowRadius, 2.0F); + var4 = -571213468; + break; + case 2005813899: + var7 = Math.max(var0.lineThickness, 0.5F) * 3.0F; + var4 = -1479699587; + } + } + } + + public void composite(LevelRenderContext var1) { + int var2 = 86655393; + + while (true) { + switch (var2) { + case 86655393: + default: + if (this.glowActive()) { + var2 = 830233781; + } else { + var2 = 193286732; + } + break; + case 193286732: + return; + case 830233781: + atz.drawRecorded(); + ty.composite(this.updateVisualConfig()); + var2 = 193286732; + } + } + } + + public void endFrame(LevelRenderContext var1) { + atz.endFrame(); + ty.endFrame(); + } + + public void submitModel( + OrderedSubmitNodeCollector var1, + Model var2, + S var3, + PoseStack var4, + RenderType var5, + Identifier var6, + int var7, + int var8, + int var9, + TextureAtlasSprite var10, + int var11, + CrumblingOverlay var12 + ) { + LivingEntityRenderState var13 = var3 instanceof LivingEntityRenderState var14 ? var14 : null; + boolean var21 = isGlintOverlay(var5); + int var15 = var13 != null && !var21 && var6 != null && var8 != OverlayTexture.NO_OVERLAY && !var13.isInvisible && this.shouldApplyHitcolor(var13) + ? 1: 0; + var1.submitModel(var2, var3, var4, var5, var7, var15 != 0 ? OverlayTexture.NO_OVERLAY : var8, var9, var10, var11, var12); + if (var15 != 0) { + var1.submitModel(var2, var3, var4, ty.hitcolorOverlay(var6), var7, OverlayTexture.NO_OVERLAY, this.hitcolorTint(), var10, var11, var12); + } + + if (ty.isActive() && !var21 && var13 != null && this.isRenderable(var13)) { + LivingEntityRenderState var16 = var13; + aue.accumulate(var16, var2, var4); + boolean var17 = this.fullBright.isEnabled(); + int var18 = this.colorFor(var16, this.distanceAlpha(var16)); + int var19 = this.gradientAnchor(var16); + if (atz.tryExpect(var16, var2, var4.last().pose(), var5, var6, var18, var19, var17)) { + ty.noteMaskSubmission(); + } else { + int var20 = var17 ? 15728880: var7; + var1.submitModel(var2, var3, var4, ty.mask(var6, this.gradientMaskActive()), var20, var19, var18, var10, var11, var12); + } + } + } + + private static boolean isGlintOverlay(RenderType var0) { + int var2 = 0; + int var1 = -593790424; + + while (true) { + switch (var1) { + case -1731920865: + if (var0 != RenderTypes.entityGlint()) { + var1 = -506752982; + } else { + var1 = -816422375; + } + break; + case -816422375: + var2 = 1; + var1 = -766478423; + break; + case -766478423: + return (boolean)((var2) != 0); + case -593790424: + default: + if (var0 != RenderTypes.armorEntityGlint()) { + var1 = -1731920865; + } else { + var1 = -816422375; + } + break; + case -506752982: + if (var0 != RenderTypes.glint()) { + var1 = 1562734244; + } else { + var1 = -816422375; + } + break; + case 103813645: + var2 = 0; + var1 = -766478423; + break; + case 1562734244: + if (var0 == RenderTypes.glintTranslucent()) { + var1 = -816422375; + } else { + var1 = 103813645; + } + } + } + } + + private int hitcolorTint() { + int var1 = this.hurtColor.getIntColor(); + int var2 = Mth.clamp( + (int)(alpha(var1) * this.damageFlashIntensity.getCurrent() + 0.5F), + 0, + (408272967 | -408272712) + (408272967 & -408272712) + ); + return var2 << (-1342862395 | 1342862419) + (-1342862395 & 1342862419) | var1 & 16777215; + } + + private int gradientAnchor(LivingEntityRenderState var1) { + float var2 = Mth.clamp((float)(var1.y - this.frameCameraY), -511.0F, 511.0F); + float var3 = Mth.clamp(var1.boundingBoxHeight, 0.05F, 511.0F); + int var4 = Math.round(var2 * 64.0F) & 65535; + int var5 = Math.round(var3 * 64.0F) & 65535; + return var4 | var5 << 16; + } + + public tv updateVisualConfig() { + int var1 = this.frameLayerMask; + int var2 = (var1 & (536556586 | -536556585) + (536556586 & -536556585)) != 0 + ? 1: 0; + int var3 = var2 == 0 + && (var1 & (-171791144 ^ 171791146) + ((-171791144 & 171791146) << 1)) == 0 + && (var1 & (-2143646856 | 2143646860) + (-2143646856 & 2143646860)) == 0 + && (var1 & (-666020865 | 666020881) + (-666020865 & 666020881)) == 0 + && (var1 & (-1105068443 | 1105068699) + (-1105068443 & 1105068699)) == 0 + ? 0: 1; + int var4 = var3 == 0 + && (var1 & (812254440 ^ -812254208) + ((812254440 & -812254208) << 1)) != 0 + && var2 == 0 + && (var1 & (1852029959 | -1852029447) + (1852029959 & -1852029447)) == 0 + ? 1: 0; + this.visualConfig.glowRadius = var2 == 0 && var4 == 0 ? 0.0F : this.glowRadius.getCurrent(); + this.visualConfig.glowOpacity = var2 == 0 && var4 == 0 ? 0.0F : this.glowOpacity.getCurrent(); + this.visualConfig.lineOpacity = (var1 & (991496617 | -991496615) + (991496617 & -991496615)) != 0 ? this.lineOpacity.getCurrent() : 0.0F; + this.visualConfig.lineThickness = (var1 & (331099676 | -331099674) + (331099676 & -331099674)) != 0 ? this.lineThickness.getCurrent() : 0.0F; + this.visualConfig.rimOpacity = (var1 & (972100869 | -972100865) + (972100869 & -972100865)) != 0 ? this.rimOpacity.getCurrent() : 0.0F; + this.visualConfig.contactOpacity = (var1 & (-1387486570 ^ 1387486586) + ((-1387486570 & 1387486586) << 1)) != 0 ? this.contactOpacity.getCurrent() : 0.0F; + this.visualConfig.afterimageOpacity = (var1 & (1744706383 | -1744706127) + (1744706383 & -1744706127)) != 0 ? this.afterimageOpacity.getCurrent() : 0.0F; + this.visualConfig.afterimageDecay = (var1 & (-685194373 | 685194629) + (-685194373 & 685194629)) != 0 + ? Mth.clamp(this.afterimageDecay.getCurrent(), 0.1F, 0.99F) + : 0.0F; + this.visualConfig.tintOpacity = (var1 & (900544297 ^ -900543785) + ((900544297 & -900543785) << 1)) != 0 ? this.tintOpacity.getCurrent() : 0.0F; + this.visualConfig.time = (float)(this.frameTimeMillis % ((3952558970990589105L | -3952558970989989105L) + (3952558970990589105L & -3952558970989989105L))) + / 1000.0F; + this.visualConfig.downsample = 2; + this.visualConfig.accentColor = this.accentColor(); + return this.visualConfig; + } + + public boolean gradientMaskActive() { + int var2 = 0; + int var1 = 1693739064; + + while (true) { + switch (var1) { + case -1515792466: + return (boolean)((var2) != 0); + case 123159222: + var2 = 1; + var1 = -1515792466; + break; + case 1693739064: + default: + if ((this.frameLayerMask & (956173221 ^ -956173213) + ((956173221 & -956173213) << 1)) != 0) { + var1 = 123159222; + } else { + var1 = 1755283136; + } + break; + case 1755283136: + var2 = 0; + var1 = -1515792466; + } + } + } + + public boolean isRenderable(LivingEntityRenderState var1) { + aud var2 = null; + int var3 = 1222009719; + + while (true) { + switch (var3) { + case -1647899524: + return (boolean)(((0)) != 0); + case -425605803: + var2.evo$setVisual(this.frameIdCounter, this.isRenderableInternal(var1), this.computeDistanceAlpha(var1)); + var3 = 406055481; + break; + case 163891617: + var2 = (aud)var1; + if (var2.evo$getVisualFrameId() != this.frameIdCounter) { + var3 = -425605803; + } else { + var3 = 406055481; + } + break; + case 406055481: + return var2.evo$isRenderable(); + case 1222009719: + default: + if (var1 == null) { + var3 = -1647899524; + } else { + var3 = 163891617; + } + } + } + } + + private boolean isRenderableInternal(LivingEntityRenderState var1) { + int var2 = -576964126; + + while (true) { + switch (var2) { + case -2045969277: + if (mc.player != null) { + var2 = -1473616975; + } else { + var2 = 1254000734; + } + break; + case -2018707797: + return (boolean)(((0)) != 0); + case -1933837794: + if (var1.entityType != null) { + var2 = -2045969277; + } else { + var2 = 1254000734; + } + break; + case -1731214992: + if (var1.distanceToCameraSq > this.frameMaxDistanceSq) { + var2 = 1906339536; + } else { + var2 = -136143322; + } + break; + case -1679316962: + if (var1.isInvisible) { + var2 = -2018707797; + } else { + var2 = 151818161; + } + break; + case -1473616975: + if (mc.level == null) { + var2 = 1254000734; + } else { + var2 = -1679316962; + } + break; + case -576964126: + default: + if (this.isEnabled()) { + var2 = -1933837794; + } else { + var2 = 1254000734; + } + break; + case -136143322: + return this.isTargetAllowed(var1); + case 151818161: + if (this.frameMaxDistanceSq > 0.0F) { + var2 = -1731214992; + } else { + var2 = -136143322; + } + break; + case 1254000734: + return (boolean)(((0)) != 0); + case 1906339536: + return (boolean)(((0)) != 0); + } + } + } + + private boolean isTargetAllowed(LivingEntityRenderState var1) { + aud var2 = null; + int var4 = 0; + int var3 = 1348081825; + + while (true) { + switch (var3) { + case -555824377: + var4 = 1; + var3 = 2120497996; + break; + case 736689925: + var4 = 0; + var3 = 2120497996; + break; + case 1348081825: + default: + var2 = (aud)var1; + if ((this.frameTargetMask & (-612716265 ^ 612716266) + ((-612716265 & 612716266) << 1) << var2.evo$getTargetKind()) != 0) { + var3 = -555824377; + } else { + var3 = 736689925; + } + break; + case 2120497996: + return (boolean)((var4) != 0); + } + } + } + + public boolean shouldApplyHitcolor(LivingEntityRenderState var1) { + int var3 = 0; + int var2 = -1186680686; + + while (true) { + switch (var2) { + case -2065682890: + return (boolean)((var3) != 0); + case -1999088683: + if (this.isTargetAllowed(var1)) { + var2 = -1038371346; + } else { + var2 = 63529597; + } + break; + case -1898645125: + if (var1.hasRedOverlay) { + var2 = -1999088683; + } else { + var2 = 63529597; + } + break; + case -1186680686: + default: + if (this.isEnabled()) { + var2 = 278470806; + } else { + var2 = 63529597; + } + break; + case -1038371346: + var3 = 1; + var2 = -2065682890; + break; + case 63529597: + var3 = 0; + var2 = -2065682890; + break; + case 278470806: + if (this.hitColor.isEnabled()) { + var2 = -1898645125; + } else { + var2 = 63529597; + } + } + } + } + + public int colorFor(LivingEntityRenderState var1, float var2) { + aud var3 = null; + tu var4 = null; + int var5 = 0; + int var6 = 0; + int var7 = 442894030; + + while (true) { + switch (var7) { + case -2015799478: + var6 = lerpArgb(var6, this.hurtColor.getIntColor(), this.damageFlashIntensity.getCurrent()); + var7 = -74184891; + break; + case -1591431930: + if (var1.hasRedOverlay) { + var7 = -2015799478; + } else { + var7 = -74184891; + } + break; + case -1387253726: + return withAlpha(var3.evo$getCachedColor(), var2); + case -153154865: + var4 = tu.values()[var3.evo$getTargetKind()]; + var5 = this.baseColor(var1, var3, var4); + var6 = applyBrightness(var5, this.brightness.getCurrent()); + if ((this.frameLayerMask & (-416701357 ^ 416701389) + ((-416701357 & 416701389) << 1)) != 0) { + var7 = -1591431930; + } else { + var7 = -74184891; + } + break; + case -74184891: + var3.evo$setCachedColor(var6); + var3.evo$setColorFrameId(this.frameIdCounter); + return withAlpha(var6, var2); + case 442894030: + default: + var3 = (aud)var1; + if (var3.evo$getColorFrameId() == this.frameIdCounter) { + var7 = -1387253726; + } else { + var7 = -153154865; + } + } + } + } + + private int baseColor(LivingEntityRenderState var1, aud var2, tu var3) { + int var4 = (this.frameLayerMask & (-563301027 | 563301091) + (-563301027 & 563301091)) != 0 + ? 1: 0; + if (!this.preset.is("Custom") && var4 != 0) { + return this.presetColor(var3); + } + + if (var4 != 0) { + return switch (var3) { + case SELF, PLAYER -> this.playerColor.getIntColor(); + case FRIEND -> this.friendColor.getIntColor(); + case HOSTILE -> this.hostileColor.getIntColor(); + case PASSIVE -> this.passiveColor.getIntColor(); + case OTHER -> this.otherColor.getIntColor(); + }; + } else { + return this.preset.is("Custom") + ? this.modeColor(var1, var2) + : this.presetColor(tu.PLAYER); + } + } + + private int presetColor(tu var1) { + if (this.preset.is("Cyber Aqua")) { + return switch (var1) { + case SELF, PLAYER -> -14030849; + case FRIEND -> -8519758; + case HOSTILE -> -49786; + case PASSIVE -> -11736065; + case OTHER -> -5796870; + }; + } else if (this.preset.is("Toxic Lime")) { + return switch (var1) { + case SELF, PLAYER -> -5701842; + case FRIEND -> -10289200; + case HOSTILE -> -4534; + case PASSIVE -> -9371811; + case OTHER -> -1769622; + }; + } else if (this.preset.is("Void Pink")) { + return switch (var1) { + case SELF, PLAYER -> -45569; + case FRIEND -> -8329217; + case HOSTILE -> -51096; + case PASSIVE -> -3375617; + case OTHER -> -8626945; + }; + } else if (this.preset.is("Golden Aura")) { + return switch (var1) { + case SELF, PLAYER -> -15801; + case FRIEND -> -8054; + case HOSTILE -> -34256; + case PASSIVE -> -3734; + case OTHER -> -22435; + }; + } else if (this.preset.is("Clean Outline")) { + return switch (var1) { + case SELF, PLAYER -> -1; + case FRIEND -> -4718604; + case HOSTILE -> -15164; + case PASSIVE -> -1572911; + case OTHER -> -2566401; + }; + } else { + return switch (var1) { + case SELF, PLAYER -> -26092; + case FRIEND -> -9109546; + case HOSTILE -> -46035; + case PASSIVE -> -10166; + case OTHER -> -5206785; + }; + } + } + + private int accentColor() { + int var1 = -1735128762; + + while (true) { + switch (var1) { + case -2106839941: + return -8054; + case -2052548831: + return -4718604; + case -1858460122: + if (this.preset.is("Void Pink")) { + var1 = 1607295533; + } else { + var1 = 662420810; + } + break; + case -1735128762: + default: + if (this.preset.is("Custom")) { + var1 = -1305418631; + } else { + var1 = 1797473572; + } + break; + case -1611682210: + if (this.colorMode.is("Distance")) { + var1 = -1441392104; + } else { + var1 = 1536803123; + } + break; + case -1441392104: + return this.secondColor.getIntColor(); + case -1305418631: + if (!this.colorMode.is("Gradient")) { + var1 = 2085098036; + } else { + var1 = -1441392104; + } + break; + case -534102329: + return -4534; + case -74811322: + return -8519758; + case 56230244: + if (this.preset.is("Toxic Lime")) { + var1 = -534102329; + } else { + var1 = -1858460122; + } + break; + case 662420810: + if (this.preset.is("Golden Aura")) { + var1 = -2106839941; + } else { + var1 = 899465416; + } + break; + case 899465416: + if (this.preset.is("Clean Outline")) { + var1 = -2052548831; + } else { + var1 = 1412895731; + } + break; + case 1412895731: + return -10166; + case 1536803123: + return this.color.getIntColor(); + case 1607295533: + return -8329217; + case 1797473572: + if (this.preset.is("Cyber Aqua")) { + var1 = -74811322; + } else { + var1 = 56230244; + } + break; + case 2085098036: + if (!this.colorMode.is("Pulse")) { + var1 = -1611682210; + } else { + var1 = -1441392104; + } + } + } + } + + private int modeColor(LivingEntityRenderState var1, aud var2) { + float var3 = 0.0F; + float var4 = 0.0F; + int var6 = 0; + int var5 = -1492657691; + + while (true) { + switch (var5) { + case -1672022687: + return bz.getInstance().getThemeManager().getClientColor((int)(var1.ageInTicks * 8.0F)).getRGB(); + case -1492657691: + default: + if (this.colorMode.is("Custom")) { + var5 = 1648542501; + } else { + var5 = -876225874; + } + break; + case -1264229162: + var6 = lerpArgb( + -10166, + -10616966, + (var3 - 0.5F) * 2.0F + ); + var5 = -829884995; + break; + case -1084947400: + if (this.colorMode.is("Pulse")) { + var5 = 1816302853; + } else { + var5 = 1219439811; + } + break; + case -913036254: + var3 = Math.max(this.frameMaxDistance, 1.0F); + var4 = Mth.sqrt((float)var1.distanceToCameraSq); + return lerpArgb(this.color.getIntColor(), this.secondColor.getIntColor(), Mth.clamp(var4 / var3, 0.0F, 1.0F)); + case -876225874: + if (this.colorMode.is("Gradient")) { + var5 = 1637567005; + } else { + var5 = 1604760370; + } + break; + case -829884995: + return var6; + case 250776194: + var6 = lerpArgb(-46004, -10166, var3 * 2.0F); + var5 = -829884995; + break; + case 1219439811: + if (this.colorMode.is("Health")) { + var5 = 1388675714; + } else { + var5 = 1320979748; + } + break; + case 1320979748: + if (this.colorMode.is("Distance")) { + var5 = -913036254; + } else { + var5 = -1672022687; + } + break; + case 1388675714: + var3 = Mth.clamp(var2.evo$getHealth() / Math.max(var2.evo$getMaxHealth(), 1.0F), 0.0F, 1.0F); + if (var3 < 0.5F) { + var5 = 250776194; + } else { + var5 = -1264229162; + } + break; + case 1604760370: + if (this.colorMode.is("Rainbow")) { + var5 = 2135974729; + } else { + var5 = -1084947400; + } + break; + case 1637567005: + var3 = this.gradientPosition(var1); + return lerpArgb(this.color.getIntColor(), this.secondColor.getIntColor(), var3); + case 1648542501: + return this.color.getIntColor(); + case 1816302853: + var3 = 0.5F + 0.5F * Mth.sin(this.wrappedTime(this.pulseSpeed.getCurrent()) * (float) (Math.PI * 2)); + return lerpArgb(this.color.getIntColor(), this.secondColor.getIntColor(), var3); + case 2135974729: + var3 = this.wrappedTime(this.rainbowSpeed.getCurrent()) + (float)(var1.distanceToCameraSq * 0.0025); + return hsbToArgb(var3, 0.86F, 1.0F); + } + } + } + + public tu computeTargetKind(LivingEntity var1) { + EntityType var2 = null; + MobCategory var3 = null; + int var4 = -1418072234; + + while (true) { + switch (var4) { + case -2124539414: + if (var3 != MobCategory.UNDERGROUND_WATER_CREATURE) { + var4 = -152894611; + } else { + var4 = -1283789126; + } + break; + case -2045997253: + return tu.PLAYER; + case -2027617526: + if (bz.getInstance().getFriendManager().isFriend(var1.getName().getString())) { + var4 = -1066192582; + } else { + var4 = -2045997253; + } + break; + case -1913672728: + if (var3 != MobCategory.AMBIENT) { + var4 = 538622678; + } else { + var4 = -1283789126; + } + break; + case -1418072234: + default: + var2 = var1.getType(); + if (var1 instanceof Player) { + var4 = -630115453; + } else { + var4 = 317250456; + } + break; + case -1283789126: + return tu.PASSIVE; + case -1175016856: + if (var3 == MobCategory.WATER_AMBIENT) { + var4 = -1283789126; + } else { + var4 = 1820107210; + } + break; + case -1066192582: + return tu.FRIEND; + case -630115453: + if (var1.getId() == mc.player.getId()) { + var4 = 1060607111; + } else { + var4 = -2027617526; + } + break; + case -536297464: + return tu.HOSTILE; + case -514161059: + if (var3 != MobCategory.CREATURE) { + var4 = -1913672728; + } else { + var4 = -1283789126; + } + break; + case -152894611: + if (var3 != MobCategory.WATER_CREATURE) { + var4 = -1175016856; + } else { + var4 = -1283789126; + } + break; + case 317250456: + var3 = var2.getCategory(); + if (var3 == MobCategory.MONSTER) { + var4 = -536297464; + } else { + var4 = -514161059; + } + break; + case 538622678: + if (var3 != MobCategory.AXOLOTLS) { + var4 = -2124539414; + } else { + var4 = -1283789126; + } + break; + case 1060607111: + return tu.SELF; + case 1820107210: + return tu.OTHER; + } + } + } + + public float distanceAlpha(LivingEntityRenderState var1) { + aud var2 = null; + int var3 = -1667863823; + + while (true) { + switch (var3) { + case -1667863823: + default: + var2 = (aud)var1; + if (var2.evo$getVisualFrameId() != this.frameIdCounter) { + var3 = 481119937; + } else { + var3 = -1549745331; + } + break; + case -1549745331: + return var2.evo$getDistanceAlpha(); + case 481119937: + var2.evo$setVisual(this.frameIdCounter, this.isRenderableInternal(var1), this.computeDistanceAlpha(var1)); + var3 = -1549745331; + } + } + } + + private float computeDistanceAlpha(LivingEntityRenderState var1) { + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + int var7 = 825241825; + + while (true) { + switch (var7) { + case -1109119945: + var2 = Math.max(this.frameMaxDistance, 1.0F); + var3 = Mth.sqrt((float)var1.distanceToCameraSq); + var4 = Mth.clamp(var3 / var2, 0.0F, 1.0F); + var5 = var4 * var4 * (3.0F - 2.0F * var4); + var6 = 1.0F - var5 * this.distanceFadeStrength.getCurrent(); + return Mth.clamp(var6, 0.08F, 1.0F); + case 825241825: + default: + if ((this.frameLayerMask & (-225859750 ^ 225859878) + ((-225859750 & 225859878) << 1)) == 0) { + var7 = 1441828347; + } else { + var7 = -1109119945; + } + break; + case 1441828347: + return 1.0F; + } + } + } + + private float gradientPosition(LivingEntityRenderState var1) { + float var2 = Math.max(var1.boundingBoxHeight, 0.1F); + float var3 = (float)Mth.frac(var1.y / var2); + return Mth.clamp(var3, 0.0F, 1.0F); + } + + private float wrappedTime(float var1) { + long var2 = this.frameTimeMillis % ((-8814506436717819465L | 8814506436718419465L) + (-8814506436717819465L & 8814506436718419465L)); + return (float)var2 / 600000.0F * Math.max(var1, 0.01F); + } + + private static int withAlpha(int var0, float var1) { + int var2 = Mth.clamp( + (int)(var1 * 255.0F + 0.5F), 0, (-184931175 ^ 184931430) + ((-184931175 & 184931430) << 1) + ); + return var2 << (1471783957 ^ -1471783933) + ((1471783957 & -1471783933) << 1) | var0 & 16777215; + } + + private static int applyBrightness(int var0, float var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = -1931986465; + + while (true) { + switch (var5) { + case -1931986465: + default: + if (var1 == 1.0F) { + var5 = -1210745838; + } else { + var5 = 1439709835; + } + break; + case -1210745838: + return var0; + case 1439709835: + var2 = Mth.clamp( + (int)(red(var0) * var1 + 0.5F), 0, (1370649683 | -1370649428) + (1370649683 & -1370649428) + ); + var3 = Mth.clamp( + (int)(green(var0) * var1 + 0.5F), + 0, + (744562974 ^ -744562719) + ((744562974 & -744562719) << 1) + ); + var4 = Mth.clamp( + (int)(blue(var0) * var1 + 0.5F), + 0, + (1794597715 | -1794597460) + (1794597715 & -1794597460) + ); + return alpha(var0) << (562463375 | -562463351) + (562463375 & -562463351) + | var2 << (-942164411 | 942164427) + (-942164411 & 942164427) + | var3 << (-1933637579 ^ 1933637587) + ((-1933637579 & 1933637587) << 1) + | var4; + } + } + } + + private static int lerpArgb(int var0, int var1, float var2) { + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 75064749; + + while (true) { + switch (var7) { + case -2140820549: + var3 = (int)(alpha(var0) + (alpha(var1) - alpha(var0)) * var2 + 0.5F); + var4 = (int)(red(var0) + (red(var1) - red(var0)) * var2 + 0.5F); + var5 = (int)(green(var0) + (green(var1) - green(var0)) * var2 + 0.5F); + var6 = (int)(blue(var0) + (blue(var1) - blue(var0)) * var2 + 0.5F); + return var3 << (-1257709387 ^ 1257709411) + ((-1257709387 & 1257709411) << 1) + | var4 << (861135238 | -861135222) + (861135238 & -861135222) + | var5 << (-612588495 ^ 612588503) + ((-612588495 & 612588503) << 1) + | var6; + case -1918256381: + return var0; + case -1715137786: + return var1; + case -196221947: + if (var2 >= 1.0F) { + var7 = -1715137786; + } else { + var7 = -2140820549; + } + break; + case 75064749: + default: + if (var2 <= 0.0F) { + var7 = -1918256381; + } else { + var7 = -196221947; + } + } + } + } + + private static int hsbToArgb(float var0, float var1, float var2) { + float var3 = var0 - Mth.floor(var0); + float var4 = var3 * 6.0F; + int var5 = Mth.floor(var4); + float var6 = var4 - var5; + float var7 = var2 * (1.0F - var1); + float var8 = var2 * (1.0F - var1 * var6); + float var9 = var2 * (1.0F - var1 * (1.0F - var6)); + float var10; + float var11; + float var12; + switch (var5) { + case 0: + var10 = var2; + var11 = var9; + var12 = var7; + break; + case 1: + var10 = var8; + var11 = var2; + var12 = var7; + break; + case 2: + var10 = var7; + var11 = var2; + var12 = var9; + break; + case 3: + var10 = var7; + var11 = var8; + var12 = var2; + break; + case 4: + var10 = var9; + var11 = var7; + var12 = var2; + break; + default: + var10 = var2; + var11 = var7; + var12 = var8; + } + + return (1472160865 ^ -1488938081) + ((1472160865 & -1488938081) << 1) + | Mth.clamp( + (int)(var10 * 255.0F + 0.5F), + 0, + (1238402914 ^ -1238402659) + ((1238402914 & -1238402659) << 1) + ) + << (-130392626 | 130392642) + (-130392626 & 130392642) + | Mth.clamp( + (int)(var11 * 255.0F + 0.5F), + 0, + (-927595565 | 927595820) + (-927595565 & 927595820) + ) + << (2066057504 ^ -2066057496) + ((2066057504 & -2066057496) << 1) + | Mth.clamp((int)(var12 * 255.0F + 0.5F), 0, (1140306620 | -1140306365) + (1140306620 & -1140306365)); + } + + private static int alpha(int var0) { + return var0 >>> 24; + } + + private static int red(int var0) { + return var0 >>> 16; + } + + private static int green(int var0) { + return var0 >>> 8; + } + + private static int blue(int var0) { + return var0 & 255; + } + + static { + String[] var10000 = new String[10]; + var10000[0] = "Neon Glow"; + var10000[1] = "Double Outline"; + var10000[2] = "Fresnel Rim"; + var10000[3] = "Vertical Gradient"; + var10000[4] = "Contact Glow"; + var10000[5] = "Damage Flash"; + var10000[6] = "Target Palettes"; + var10000[7] = "Distance Fade"; + var10000[8] = "Afterimage"; + var10000[9] = "Soft Tint"; + LAYER_MASK_ORDER = var10000; + var10000 = new String[6]; + var10000[0] = "Self"; + var10000[1] = "Friends"; + var10000[2] = "Players"; + var10000[3] = "Hostiles"; + var10000[4] = "Passives"; + var10000[5] = "Others"; + TARGET_MASK_ORDER = var10000; + } +} diff --git a/src/main/java/defpackage/tx.java b/src/main/java/defpackage/tx.java new file mode 100644 index 0000000..014516b --- /dev/null +++ b/src/main/java/defpackage/tx.java @@ -0,0 +1,48 @@ +package defpackage; + +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.resources.Identifier; + +final class tx { + Identifier texture; + boolean gradient; + RenderType layer; + + tx(Identifier texture, boolean gradient, RenderType layer) { + this.texture = texture; + this.gradient = gradient; + this.layer = layer; + } + + public Identifier texture() { + return this.texture; + } + public boolean gradient() { + return this.gradient; + } + public RenderType layer() { + return this.layer; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof tx that)) { + return false; + } + if (!java.util.Objects.equals(this.texture, that.texture)) { return false; } + if (this.gradient != that.gradient) { return false; } + if (!java.util.Objects.equals(this.layer, that.layer)) { return false; } + return true; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(this.texture, this.gradient, this.layer); + } + + @Override + public String toString() { + return "tx[" + "texture=" + this.texture + ", " + "gradient=" + this.gradient + ", " + "layer=" + this.layer + "]"; + } + +} diff --git a/src/main/java/defpackage/ty.java b/src/main/java/defpackage/ty.java new file mode 100644 index 0000000..9bd3933 --- /dev/null +++ b/src/main/java/defpackage/ty.java @@ -0,0 +1,1289 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.buffers.GpuBufferSlice; +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.DepthStencilState; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.pipeline.TextureTarget; +import com.mojang.blaze3d.pipeline.RenderPipeline.Builder; +import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet; +import com.mojang.blaze3d.platform.CompareOp; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.textures.GpuTextureView; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.MeshData; +import java.util.function.Function; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.BindGroupLayouts; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.rendertype.OutputTarget; +import net.minecraft.client.renderer.rendertype.RenderSetup; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import net.minecraft.util.Util; +import net.minecraft.world.phys.Vec3; +import org.joml.Matrix4f; +import org.joml.Vector4f; + +public final class ty implements aqg { + private static final String PIPELINE_MASK = "pipeline/chams_mask"; + private static final String PIPELINE_MASK_GRADIENT = "pipeline/chams_mask_gradient"; + private static final String PIPELINE_MASK_REUSE = "pipeline/chams_mask_reuse"; + private static final String PIPELINE_MASK_GRADIENT_REUSE = "pipeline/chams_mask_gradient_reuse"; + private static final String PIPELINE_HITCOLOR = "pipeline/chams_hitcolor"; + private static final String LAYER_MASK = "evolution_chams_mask"; + private static final String LAYER_MASK_GRADIENT = "evolution_chams_mask_gradient"; + private static final String LAYER_HITCOLOR = "evolution_chams_hitcolor"; + private static final String TARGET_NAME = "evolution_chams_mask"; + private static final String TARGET_BLUR_SCRATCH = "evolution_chams_blur_scratch"; + private static final String TARGET_BLUR = "evolution_chams_blur"; + private static final String TARGET_AFTERIMAGE_READ = "evolution_chams_afterimage_read"; + private static final String TARGET_AFTERIMAGE_WRITE = "evolution_chams_afterimage_write"; + private static final Identifier BLUR_PROGRAM_ID = bz.id( + "hitbox_glow_blur/data" + ); + private static final Identifier SHADER_MASK_VERTEX = bz.id( + "core/chams_mask" + ); + private static final Identifier SHADER_MASK_FRAGMENT = bz.id( + "core/chams_mask" + ); + private static final Identifier SHADER_HITCOLOR_VERTEX = bz.id("core/chams_hitcolor"); + private static final Identifier SHADER_HITCOLOR_FRAGMENT = bz.id( + "core/chams_hitcolor" + ); + private static final String DEFINE_GRADIENT = "CHAMS_GRADIENT"; + private static final String DEFINE_REUSE = "CHAMS_REUSE"; + private static final String SAMPLER_TEXTURE = "Sampler0"; + private static final String SAMPLER_MASK = "Sampler1"; + private static final String SAMPLER_AFTERIMAGE = "Sampler2"; + private static final int MIN_DOWNSAMPLE = 1; + private static final int MAX_DOWNSAMPLE = 3; + private static final Vector4f CLEAR_COLOR = new Vector4f(0.0F, 0.0F, 0.0F, 0.0F); + private static final double CLEAR_DEPTH = 0.0; + private static final float MIN_BLUR_RADIUS = 2.0F; + private static final float DEFAULT_BREATHING = 0.08F; + private static final float FULL_AFTERIMAGE_SEED = 1.0F; + private static final float COLOR_TO_FLOAT = 0.003921569F; + private static final float BLUR_PASS_HORIZONTAL = 0.0F; + private static final float BLUR_PASS_VERTICAL = 1.0F; + private static final float FULLSCREEN_Z = 0.0F; + private static final float AFTERIMAGE_CAMERA_RESET_DEGREES = 45.0F; + private static final double AFTERIMAGE_CAMERA_RESET_DISTANCE_SQUARED = 4.0; + private static TextureTarget maskTarget; + private static TextureTarget blurScratch; + private static TextureTarget blurTarget; + private static TextureTarget afterimageRead; + private static TextureTarget afterimageWrite; + private static atd compositeProgram; + private static atd afterimageProgram; + private static atd horizontalBlurProgram; + private static atd verticalBlurProgram; + private static GpuBufferSlice effectQuadVertices; + private static int effectQuadIndexCount; + private static final int MAX_EFFECT_SCISSORS = 8; + private static final int SCISSOR_STRIDE = 4; + private static final int[] effectScissorRects = new int[32]; + private static int effectScissorCount; + private static boolean active; + private static boolean levelRender; + private static boolean targetsReady; + private static boolean afterimageHasData; + private static boolean cameraHistoryValid; + private static double lastCameraX; + private static double lastCameraY; + private static double lastCameraZ; + private static float lastCameraYaw; + private static float lastCameraPitch; + private static int submissions; + private static tx lastMaskLayer; + private static boolean fullClearRequested = (boolean)(((1)) != 0); + private static final OutputTarget CHAMS_MASK_TARGET = new OutputTarget( + "evolution_chams_mask", ty::framebuffer + ); + private static final RenderPipeline CHAMS_MASK_PIPELINE = RenderPipelines.register( + maskPipeline( + bz.id("pipeline/chams_mask"), + (boolean)(((0)) != 0), + (boolean)((((-398260977 | 398260977) + (-398260977 & 398260977)) + ) != 0)) + ); + private static final RenderPipeline CHAMS_GRADIENT_MASK_PIPELINE = RenderPipelines.register( + maskPipeline( + bz.id("pipeline/chams_mask_gradient"), + (boolean)(((1)) != 0), + (boolean)((((-1487083492 | 1487083492) + (-1487083492 & 1487083492)) + ) != 0)) + ); + private static final RenderPipeline CHAMS_MASK_REUSE_PIPELINE = RenderPipelines.register( + maskPipeline( + bz.id("pipeline/chams_mask_reuse"), + (boolean)(((0)) != 0), + (boolean)((((530845824 | -530845823) + (530845824 & -530845823)) + ) != 0)) + ); + private static final RenderPipeline CHAMS_GRADIENT_MASK_REUSE_PIPELINE = RenderPipelines.register( + maskPipeline( + bz.id("pipeline/chams_mask_gradient_reuse"), + (boolean)(((1)) != 0), + (boolean)((((1751883058 ^ -1751883057) + ((1751883058 & -1751883057) << 1)) + ) != 0)) + ); + private static final RenderPipeline CHAMS_HITCOLOR_PIPELINE = RenderPipelines.register(hitcolorPipeline()); + private static final Function MASK = Util.memoize( + var0 -> maskLayer( + "evolution_chams_mask", CHAMS_MASK_PIPELINE, var0 + ) + ); + private static final Function GRADIENT_MASK = Util.memoize( + var0 -> maskLayer( + "evolution_chams_mask_gradient", + CHAMS_GRADIENT_MASK_PIPELINE, + var0 + ) + ); + private static final Function HITCOLOR_OVERLAY = Util.memoize( + var0 -> RenderType.create( + "evolution_chams_hitcolor", + RenderSetup.builder(CHAMS_HITCOLOR_PIPELINE) + .withTexture("Sampler0", var0) + .createRenderSetup() + ) + ); + private static final Matrix4f FULLSCREEN_IDENTITY = new Matrix4f(); + + private ty() { + } + + public static void requestFullClear() { + fullClearRequested = (boolean)(((1)) != 0); + } + + public static RenderType mask(Identifier var0, boolean var1) { + tx var2 = null; + RenderType var3 = null; + Function var5 = null; + int var4 = 1069479371; + + while (true) { + switch (var4) { + case -1441075485: + if (var1) { + var4 = -774137969; + } else { + var4 = -20717532; + } + break; + case -1137152690: + var3 = (RenderType)var5.apply(var0); + lastMaskLayer = new tx(var0, var1, var3); + return var3; + case -995564878: + if (var2.gradient == var1) { + var4 = -191382506; + } else { + var4 = -1441075485; + } + break; + case -774137969: + var5 = GRADIENT_MASK; + var4 = -1137152690; + break; + case -191382506: + return var2.layer; + case -20717532: + var5 = MASK; + var4 = -1137152690; + break; + case 935333964: + if (var2.texture == var0) { + var4 = -995564878; + } else { + var4 = -1441075485; + } + break; + case 1069479371: + default: + submissions += 1; + var2 = lastMaskLayer; + if (var2 != null) { + var4 = 935333964; + } else { + var4 = -1441075485; + } + } + } + } + + public static RenderType hitcolorOverlay(Identifier var0) { + return HITCOLOR_OVERLAY.apply(var0); + } + + public static boolean isActive() { + return active; + } + + public static boolean isLevelRender() { + return levelRender; + } + + public static void beginFrame() { + int var0 = 0; + int var1 = 1455582990; + + while (true) { + switch (var1) { + case -1624497899: + requestFullClear(); + var1 = 1731461257; + break; + case 9729316: + if (var0 == 0) { + var1 = -1624497899; + } else { + var1 = 1731461257; + } + break; + case 1187191124: + clearAfterimageHistory(); + requestFullClear(); + var1 = 1731461257; + break; + case 1455582990: + default: + submissions = 0; + targetsReady = (boolean)(((0)) != 0); + levelRender = (boolean)(((1)) != 0); + var0 = (active) ? 1 : 0; + active = tw.INSTANCE.glowActive(); + if (!active) { + var1 = 1187191124; + } else { + var1 = 9729316; + } + break; + case 1731461257: + return; + } + } + } + + public static void endFrame() { + levelRender = (boolean)(((0)) != 0); + active = (boolean)(((0)) != 0); + } + + public static void prepareTargets() { + RenderTarget var0 = null; + CommandEncoder var1 = null; + int var2 = 636078763; + + while (true) { + switch (var2) { + case -1980025789: + return; + case -1250087927: + var0 = mc.gameRenderer.mainRenderTarget(); + if (var0 != null) { + var2 = 1305151849; + } else { + var2 = 1804316661; + } + break; + case 636078763: + default: + if (active) { + var2 = 1709866664; + } else { + var2 = -1980025789; + } + break; + case 1305151849: + if (var0.width > 0) { + var2 = 1613902692; + } else { + var2 = 1804316661; + } + break; + case 1613902692: + if (var0.height <= 0) { + var2 = 1804316661; + } else { + var2 = 2031946122; + } + break; + case 1709866664: + if (submissions == 0) { + var2 = -1980025789; + } else { + var2 = -1250087927; + } + break; + case 1804316661: + return; + case 2031946122: + ensureMask(var0.width, var0.height); + var1 = RenderSystem.getDevice().createCommandEncoder(); + resetMaskBand(var1, var0); + targetsReady = (boolean)(((1)) != 0); + return; + } + } + } + + public static void composite(tv var0) { + if (targetsReady && var0 != null) { + ensurePrograms(); + if (horizontalBlurProgram != null && verticalBlurProgram != null && compositeProgram != null && afterimageProgram != null) { + float var1 = mc.getWindow().getGuiScaledWidth(); + float var2 = mc.getWindow().getGuiScaledHeight(); + int var3 = Mth.clamp( + var0.downsample, 1, (-1657422115 ^ 1657422118) + ((-1657422115 & 1657422118) << 1) + ); + int var4 = Math.max(1, maskTarget.width / var3); + int var5 = Math.max(1, maskTarget.height / var3); + boolean var6 = blurRequired(var0); + boolean var7 = afterimageRequired(var0); + GpuTextureView var8 = maskTarget.getColorTextureView(); + GpuTextureView var9 = maskTarget.getColorTextureView(); + if (var6) { + ensureBlurTargets(var4, var5); + if (blurScratch == null || blurTarget == null) { + return; + } + + CommandEncoder var10 = RenderSystem.getDevice().createCommandEncoder(); + var10.clearColorTexture(blurScratch.getColorTexture(), CLEAR_COLOR); + var10.clearColorTexture(blurTarget.getColorTexture(), CLEAR_COLOR); + } + + if (var7) { + ensureAfterimageTargets(var4, var5); + if (afterimageRead == null || afterimageWrite == null) { + return; + } + + resetAfterimageOnCameraCut(); + } else { + clearAfterimageHistory(); + } + + GpuTextureView var16 = atd.getWorldColorTarget(); + GpuTextureView var11 = atd.getWorldDepthTarget(); + atb.beginGui(); + + try { + buildEffectQuad(var1, var2); + atd.beginSharedTransform(); + if (var7) { + beginEffectScissor(var4, var5, var3); + updateAfterimage(var0); + var9 = afterimageRead.getColorTextureView(); + } + + if (var6) { + float var12 = Math.max(var0.glowRadius, 2.0F) / var3; + beginEffectScissor(var4, var5, var3); + atd.setWorldTarget(blurScratch.getColorTextureView(), null); + drawBlurPass(horizontalBlurProgram, maskTarget.getColorTextureView(), var12, 0.0F); + atd.setWorldTarget(blurTarget.getColorTextureView(), null); + drawBlurPass(verticalBlurProgram, blurScratch.getColorTextureView(), var12, 1.0F); + var8 = blurTarget.getColorTextureView(); + } + + atd.setWorldTarget(var16, var11); + beginEffectScissor(maskTarget.width, maskTarget.height, (-1706717968 ^ 1706717969) + ((-1706717968 & 1706717969) << 1)); + drawCompositePass(var8, maskTarget.getColorTextureView(), var9, var0, var1, var2); + } finally { + endEffectScissor(); + atd.endSharedTransform(); + atd.setWorldTarget(var16, var11); + atb.endGui(); + } + } + } + } + + private static void resetMaskBand(CommandEncoder var0, RenderTarget var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = -1091461488; + + while (true) { + switch (var8) { + case -1276576921: + var0.copyTextureToTexture( + var1.getDepthTexture(), + maskTarget.getDepthTexture(), + 0, + var2, + var4, + var2, + var4, + var6, + var7 + ); + return; + case -1091461488: + default: + var0.clearColorTexture(maskTarget.getColorTexture(), CLEAR_COLOR); + var2 = Mth.clamp(aue.pixelLeft(), 0, var1.width); + var3 = Mth.clamp(aue.pixelRight(), var2, var1.width); + var4 = Mth.clamp(aue.bandTop(var1.height), 0, var1.height); + var5 = Mth.clamp(aue.bandBottom(var1.height), var4, var1.height); + var6 = var3 - var2; + var7 = var5 - var4; + if (!fullClearRequested) { + var8 = 2029653287; + } else { + var8 = -202587564; + } + break; + case -1033831368: + if (var7 <= 0) { + var8 = -202587564; + } else { + var8 = -1276576921; + } + break; + case -202587564: + maskTarget.copyDepthFrom(var1); + fullClearRequested = (boolean)(((0)) != 0); + return; + case 1131256637: + if (var6 > 0) { + var8 = -1033831368; + } else { + var8 = -202587564; + } + break; + case 2029653287: + if (aue.isLimited()) { + var8 = 1131256637; + } else { + var8 = -202587564; + } + } + } + } + + static void clearAfterimageHistory() { + resetAfterimage(); + cameraHistoryValid = (boolean)(((0)) != 0); + aue.resetHistory(); + } + + private static boolean blurRequired(tv var0) { + int var2 = 0; + int var1 = -1421815918; + + while (true) { + switch (var1) { + case -1421815918: + default: + if (!(var0.glowOpacity > 0.0F)) { + var1 = 1132621564; + } else { + var1 = 1457869416; + } + break; + case -921576952: + return (boolean)((var2) != 0); + case 1132621564: + if (var0.rimOpacity > 0.0F) { + var1 = 1457869416; + } else { + var1 = 1160206919; + } + break; + case 1160206919: + var2 = 0; + var1 = -921576952; + break; + case 1457869416: + var2 = 1; + var1 = -921576952; + } + } + } + + private static boolean afterimageRequired(tv var0) { + int var2 = 0; + int var1 = 752446704; + + while (true) { + switch (var1) { + case -1975087331: + if (var0.afterimageDecay > 0.0F) { + var1 = -385780189; + } else { + var1 = 452939511; + } + break; + case -385780189: + var2 = 1; + var1 = 768383964; + break; + case 452939511: + var2 = 0; + var1 = 768383964; + break; + case 752446704: + default: + if (var0.afterimageOpacity > 0.0F) { + var1 = -1975087331; + } else { + var1 = 452939511; + } + break; + case 768383964: + return (boolean)((var2) != 0); + } + } + } + + private static RenderPipeline maskPipeline(Identifier var0, boolean var1, boolean var2) { + Builder var3 = null; + int var4 = -1913397432; + + while (true) { + switch (var4) { + case -1913397432: + default: + var3 = entityPipelineBuilder(var0, SHADER_MASK_FRAGMENT) + .withColorTargetState(new ColorTargetState(BlendFunction.TRANSLUCENT)) + .withDepthStencilState(DepthStencilState.DEFAULT); + if (var1) { + var4 = -1583620925; + } else { + var4 = 849976300; + } + break; + case -1670598429: + return var3.build(); + case -1583620925: + var3.withShaderDefine("CHAMS_GRADIENT"); + var4 = 849976300; + break; + case 573482218: + var3.withShaderDefine("CHAMS_REUSE"); + var4 = -1670598429; + break; + case 849976300: + if (var2) { + var4 = 573482218; + } else { + var4 = -1670598429; + } + } + } + } + + public static RenderPipeline reuseMaskPipeline(boolean var0) { + RenderPipeline var2 = null; + int var1 = 754409289; + + while (true) { + switch (var1) { + case -2051921067: + var2 = CHAMS_MASK_REUSE_PIPELINE; + var1 = -449341387; + break; + case -449341387: + return var2; + case -244464553: + var2 = CHAMS_GRADIENT_MASK_REUSE_PIPELINE; + var1 = -449341387; + break; + case 754409289: + default: + if (var0) { + var1 = -244464553; + } else { + var1 = -2051921067; + } + } + } + } + + public static void noteMaskSubmission() { + submissions += 1; + } + + public static boolean isMaskDrawReady() { + int var1 = 0; + int var0 = -386147971; + + while (true) { + switch (var0) { + case -386147971: + default: + if (targetsReady) { + var0 = 1040361798; + } else { + var0 = -15276048; + } + break; + case -372964084: + var1 = 1; + var0 = 1968078802; + break; + case -15276048: + var1 = 0; + var0 = 1968078802; + break; + case 1040361798: + if (maskTarget != null) { + var0 = -372964084; + } else { + var0 = -15276048; + } + break; + case 1968078802: + return (boolean)((var1) != 0); + } + } + } + + public static GpuTextureView maskColorView() { + return maskTarget.getColorTextureView(); + } + + public static GpuTextureView maskDepthView() { + return maskTarget.getDepthTextureView(); + } + + private static RenderPipeline hitcolorPipeline() { + return RenderPipeline.builder(new Snippet[0]) + .withLocation(bz.id("pipeline/chams_hitcolor")) + .withVertexShader(SHADER_HITCOLOR_VERTEX) + .withFragmentShader(SHADER_HITCOLOR_FRAGMENT) + .withBindGroupLayout(BindGroupLayouts.GLOBALS) + .withBindGroupLayout(BindGroupLayouts.MATRICES_PROJECTION) + .withBindGroupLayout(BindGroupLayouts.FOG) + .withBindGroupLayout(BindGroupLayouts.LIGHTING) + .withBindGroupLayout(BindGroupLayouts.SAMPLER0) + .withVertexBinding(0, DefaultVertexFormat.ENTITY) + .withPrimitiveTopology(PrimitiveTopology.QUADS) + .withCull((boolean)((((188391857 | -188391857) + (188391857 & -188391857))) != 0)) + .withColorTargetState(new ColorTargetState(BlendFunction.TRANSLUCENT)) + .withDepthStencilState(new DepthStencilState(CompareOp.GREATER_THAN_OR_EQUAL, (boolean)((((-31701728 ^ 31701728) + ((-31701728 & 31701728) << 1))) != 0))) + .build(); + } + + private static Builder entityPipelineBuilder(Identifier var0, Identifier var1) { + return RenderPipeline.builder(new Snippet[0]) + .withLocation(var0) + .withVertexShader(SHADER_MASK_VERTEX) + .withFragmentShader(var1) + .withBindGroupLayout(BindGroupLayouts.GLOBALS) + .withBindGroupLayout(BindGroupLayouts.MATRICES_PROJECTION) + .withBindGroupLayout(BindGroupLayouts.FOG) + .withBindGroupLayout(BindGroupLayouts.LIGHTING) + .withBindGroupLayout(BindGroupLayouts.SAMPLER0_SAMPLER2) + .withVertexBinding(0, DefaultVertexFormat.ENTITY) + .withPrimitiveTopology(PrimitiveTopology.QUADS) + .withCull((boolean)((((-1757188360 | 1757188360) + (-1757188360 & 1757188360))) != 0)); + } + + private static RenderType maskLayer(String var0, RenderPipeline var1, Identifier var2) { + return RenderType.create( + var0, + RenderSetup.builder(var1) + .withTexture("Sampler0", var2) + .useLightmap() + .setOutputTarget(CHAMS_MASK_TARGET) + .createRenderSetup() + ); + } + + private static RenderTarget framebuffer() { + RenderTarget var0 = null; + int var1 = -2001242028; + + while (true) { + switch (var1) { + case -2001242028: + default: + var0 = mc.gameRenderer.mainRenderTarget(); + if (maskTarget == null) { + var1 = -157222970; + } else { + var1 = -1012392824; + } + break; + case -1012392824: + return maskTarget; + case -157222970: + if (var0 != null) { + var1 = 1440133935; + } else { + var1 = 2002534506; + } + break; + case 1440133935: + if (var0.width > 0) { + var1 = 1443209375; + } else { + var1 = 2002534506; + } + break; + case 1443209375: + if (var0.height <= 0) { + var1 = 2002534506; + } else { + var1 = 2103996506; + } + break; + case 2002534506: + return var0; + case 2103996506: + ensureMask(var0.width, var0.height); + var1 = -1012392824; + } + } + } + + private static void ensureMask(int var0, int var1) { + int var2 = -516787688; + + while (true) { + switch (var2) { + case -1355126792: + if (maskTarget.width == var0) { + var2 = 831990488; + } else { + var2 = 2139428403; + } + break; + case -943720156: + return; + case -516787688: + default: + if (maskTarget == null) { + var2 = 1358348743; + } else { + var2 = -1355126792; + } + break; + case 831990488: + if (maskTarget.height != var1) { + var2 = 2139428403; + } else { + var2 = -943720156; + } + break; + case 1358348743: + maskTarget = new TextureTarget( + "evolution_chams_mask", + var0, + var1, + (boolean)(((1)) != 0), + GpuFormat.RGBA8_UNORM + ); + requestFullClear(); + var2 = -943720156; + break; + case 2139428403: + maskTarget.resize(var0, var1); + requestFullClear(); + var2 = -943720156; + } + } + } + + private static void ensureBlurTargets(int var0, int var1) { + blurScratch = ensureColorTarget( + blurScratch, + "evolution_chams_blur_scratch", + var0, + var1, + (boolean)((((705954825 ^ -705954825) + ((705954825 & -705954825) << 1)) + ) != 0)); + blurTarget = ensureColorTarget( + blurTarget, + "evolution_chams_blur", + var0, + var1, + (boolean)((((-1661665937 ^ 1661665937) + ((-1661665937 & 1661665937) << 1)) + ) != 0)); + } + + private static void ensureAfterimageTargets(int var0, int var1) { + afterimageRead = ensureColorTarget( + afterimageRead, + "evolution_chams_afterimage_read", + var0, + var1, + (boolean)((((-1715626041 | 1715626042) + (-1715626041 & 1715626042)) + ) != 0)); + afterimageWrite = ensureColorTarget( + afterimageWrite, + "evolution_chams_afterimage_write", + var0, + var1, + (boolean)((((-1681633829 ^ 1681633830) + ((-1681633829 & 1681633830) << 1)) + ) != 0)); + } + + private static TextureTarget ensureColorTarget(TextureTarget var0, String var1, int var2, int var3, boolean var4) { + int var5 = -549278887; + + while (true) { + switch (var5) { + case -1950446577: + RenderSystem.getDevice().createCommandEncoder().clearColorTexture(var0.getColorTexture(), CLEAR_COLOR); + var5 = -1081878275; + break; + case -1081878275: + return var0; + case -1026336981: + var0 = new TextureTarget(var1, var2, var3, (boolean)(((0)) != 0), GpuFormat.RGBA8_UNORM); + var5 = 1268274732; + break; + case -852687177: + var0.resize(var2, var3); + var5 = 1268274732; + break; + case -549278887: + default: + if (var0 == null) { + var5 = -1026336981; + } else { + var5 = 1309011283; + } + break; + case -47229558: + return var0; + case 334172232: + if (var0.height != var3) { + var5 = -852687177; + } else { + var5 = -47229558; + } + break; + case 1268274732: + if (var4) { + var5 = -1950446577; + } else { + var5 = -1081878275; + } + break; + case 1309011283: + if (var0.width == var2) { + var5 = 334172232; + } else { + var5 = -852687177; + } + } + } + } + + private static void ensurePrograms() { + int var0 = -754737548; + + while (true) { + switch (var0) { + case -1540228733: + afterimageProgram = new atd( + bz.id("chams_afterimage/data"), + DefaultVertexFormat.POSITION_TEX_COLOR + ); + var0 = 108813259; + break; + case -896652320: + if (afterimageProgram == null) { + var0 = -1540228733; + } else { + var0 = 108813259; + } + break; + case -754737548: + default: + if (horizontalBlurProgram == null) { + var0 = 1170954823; + } else { + var0 = 149207878; + } + break; + case -396801920: + compositeProgram = new atd( + bz.id("chams_glow/data"), + DefaultVertexFormat.POSITION_TEX_COLOR + ); + var0 = -896652320; + break; + case 108813259: + return; + case 149207878: + if (compositeProgram == null) { + var0 = -396801920; + } else { + var0 = -896652320; + } + break; + case 1170954823: + horizontalBlurProgram = new atd(BLUR_PROGRAM_ID, DefaultVertexFormat.POSITION_TEX_COLOR); + verticalBlurProgram = new atd(BLUR_PROGRAM_ID, DefaultVertexFormat.POSITION_TEX_COLOR); + var0 = 149207878; + } + } + } + + private static void updateAfterimage(tv var0) { + RenderSystem.getDevice().createCommandEncoder().clearColorTexture(afterimageWrite.getColorTexture(), CLEAR_COLOR); + atd.setWorldTarget(afterimageWrite.getColorTextureView(), null); + afterimageProgram.use(); + afterimageProgram.setFade(var0.afterimageDecay); + afterimageProgram.setTintIntensity(1.0F); + atd.bindTexture(afterimageRead.getColorTextureView(), (boolean)((((-2027951183 | 2027951184) + (-2027951183 & 2027951184))) != 0)); + atd.bindTexture( + "Sampler1", + maskTarget.getColorTextureView(), + (boolean)((((-874457299 | 874457300) + (-874457299 & 874457300)) + ) != 0)); + drawEffectQuad(afterimageProgram); + TextureTarget var1 = afterimageRead; + afterimageRead = afterimageWrite; + afterimageWrite = var1; + afterimageHasData = (boolean)(((1)) != 0); + } + + private static void resetAfterimageOnCameraCut() { + Camera var0 = null; + Vec3 var1 = null; + float var2 = 0.0F; + float var3 = 0.0F; + double var4 = 0.0; + double var6 = 0.0; + double var8 = 0.0; + double var10 = 0.0; + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = 45772527; + + while (true) { + switch (var14) { + case -1060856607: + clearAfterimageHistory(); + return; + case -345174108: + storeCamera(var1, var2, var3); + return; + case -190659960: + storeCamera(var1, var2, var3); + resetAfterimage(); + return; + case 45772527: + default: + var0 = mc.getEntityRenderDispatcher().camera; + if (var0 == null) { + var14 = -1060856607; + } else { + var14 = 767155356; + } + break; + case 385710430: + if (!(var12 > 45.0F)) { + var14 = 1841911250; + } else { + var14 = 2139551982; + } + break; + case 635536731: + var4 = var1.x - lastCameraX; + var6 = var1.y - lastCameraY; + var8 = var1.z - lastCameraZ; + var10 = var4 * var4 + var6 * var6 + var8 * var8; + var12 = Math.abs(Mth.wrapDegrees(var2 - lastCameraYaw)); + var13 = Math.abs(Mth.wrapDegrees(var3 - lastCameraPitch)); + if (!(var10 > 4.0)) { + var14 = 385710430; + } else { + var14 = 2139551982; + } + break; + case 767155356: + var1 = var0.position(); + var2 = var0.yRot(); + var3 = var0.xRot(); + if (!cameraHistoryValid) { + var14 = -190659960; + } else { + var14 = 635536731; + } + break; + case 1841911250: + if (var13 > 45.0F) { + var14 = 2139551982; + } else { + var14 = -345174108; + } + break; + case 2139551982: + resetAfterimage(); + var14 = -345174108; + } + } + } + + private static void storeCamera(Vec3 var0, float var1, float var2) { + lastCameraX = var0.x; + lastCameraY = var0.y; + lastCameraZ = var0.z; + lastCameraYaw = var1; + lastCameraPitch = var2; + cameraHistoryValid = (boolean)(((1)) != 0); + } + + private static void resetAfterimage() { + CommandEncoder var0 = null; + int var1 = 1377713436; + + while (true) { + switch (var1) { + case -1929576735: + if (afterimageWrite != null) { + var1 = 557479050; + } else { + var1 = -341875859; + } + break; + case -1183240676: + var0.clearColorTexture(afterimageRead.getColorTexture(), CLEAR_COLOR); + var1 = -1929576735; + break; + case -728966434: + return; + case -341875859: + afterimageHasData = (boolean)(((0)) != 0); + return; + case 557479050: + var0.clearColorTexture(afterimageWrite.getColorTexture(), CLEAR_COLOR); + var1 = -341875859; + break; + case 1377713436: + default: + if (!afterimageHasData) { + var1 = -728966434; + } else { + var1 = 1567101813; + } + break; + case 1567101813: + var0 = RenderSystem.getDevice().createCommandEncoder(); + if (afterimageRead != null) { + var1 = -1183240676; + } else { + var1 = -1929576735; + } + } + } + } + + private static void drawBlurPass(atd var0, GpuTextureView var1, float var2, float var3) { + var0.use(); + atd.bindTexture(var1, (boolean)((((-1522582831 ^ 1522582832) + ((-1522582831 & 1522582832) << 1))) != 0)); + var0.setBlurRadius(var2); + var0.setOffset(var3); + drawEffectQuad(var0); + } + + private static void drawCompositePass(GpuTextureView var0, GpuTextureView var1, GpuTextureView var2, tv var3, float var4, float var5) { + compositeProgram.use(); + compositeProgram.setResolution(var4, var5); + compositeProgram.setTime(var3.time); + compositeProgram.setSaturation(var3.glowOpacity); + compositeProgram.setOutline(var3.lineOpacity); + compositeProgram.setOutlineThickness(var3.lineThickness); + compositeProgram.setSmoothness(var3.rimOpacity, var3.contactOpacity); + compositeProgram.setFade(var3.afterimageOpacity); + compositeProgram.setProgress(0.08F); + compositeProgram.setTintIntensity(var3.tintOpacity); + setOutlineColor(var3.accentColor, var3.lineOpacity); + atd.bindTexture(var0, (boolean)((((-283038004 ^ 283038005) + ((-283038004 & 283038005) << 1))) != 0)); + atd.bindTexture( + "Sampler1", + var1, + (boolean)((((1736565888 ^ -1736565887) + ((1736565888 & -1736565887) << 1)) + ) != 0)); + atd.bindTexture( + "Sampler2", + var2, + (boolean)((((1594333820 ^ -1594333819) + ((1594333820 & -1594333819) << 1)) + ) != 0)); + drawEffectQuad(compositeProgram); + } + + private static void setOutlineColor(int var0, float var1) { + float var2 = (var0 >>> (412566278 ^ -412566262) + ((412566278 & -412566262) << 1) & (858982973 | -858982718) + (858982973 & -858982718)) * 0.003921569F; + float var3 = (var0 >>> (445697776 | -445697768) + (445697776 & -445697768) & (580577398 ^ -580577143) + ((580577398 & -580577143) << 1)) * 0.003921569F; + float var4 = (var0 & (672644247 ^ -672643992) + ((672644247 & -672643992) << 1)) * 0.003921569F; + compositeProgram.setOutlineColor(var2, var3, var4, Mth.clamp(var1, 0.0F, 1.0F)); + } + + private static void drawEffectQuad(atd var0) { + var0.drawShared(effectQuadVertices, effectQuadIndexCount, effectScissorRects, effectScissorCount); + } + + private static void buildEffectQuad(float var0, float var1) { + BufferBuilder var2 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + int var3 = asu.WHITE.getRGB(); + var2.addVertex(FULLSCREEN_IDENTITY, 0.0F, var1, 0.0F).setUv(0.0F, 0.0F).setColor(var3); + var2.addVertex(FULLSCREEN_IDENTITY, var0, var1, 0.0F).setUv(1.0F, 0.0F).setColor(var3); + var2.addVertex(FULLSCREEN_IDENTITY, var0, 0.0F, 0.0F).setUv(1.0F, 1.0F).setColor(var3); + var2.addVertex(FULLSCREEN_IDENTITY, 0.0F, 0.0F, 0.0F).setUv(0.0F, 1.0F).setColor(var3); + MeshData var4 = var2.build(); + if (var4 == null) { + effectQuadVertices = null; + effectQuadIndexCount = 0; + } else { + try { + effectQuadVertices = atd.uploadSharedVertices(var4.vertexBuffer()); + effectQuadIndexCount = var4.drawState().indexCount(); + } finally { + var4.close(); + } + } + } + + private static void beginEffectScissor(int var0, int var1, int var2) { + int var3 = 0; + int var4 = 0; + int var5 = 1575798436; + + while (true) { + switch (var5) { + case -2009786052: + if (effectScissorCount < (-1169375929 ^ 1169375937) + ((-1169375929 & 1169375937) << 1)) { + var5 = 1433397576; + } else { + var5 = 1518550607; + } + break; + case -1930534641: + if (var0 > 0) { + var5 = 349916578; + } else { + var5 = 510668050; + } + break; + case -1439318921: + if (var4 < var3) { + var5 = -2009786052; + } else { + var5 = 1518550607; + } + break; + case -137878747: + return; + case 46215532: + var3 = aue.clusterCount(); + if (var3 > 0) { + var5 = 799318201; + } else { + var5 = 735283661; + } + break; + case 349916578: + if (var1 <= 0) { + var5 = 510668050; + } else { + var5 = 46215532; + } + break; + case 510668050: + return; + case 735283661: + appendScissor(aue.pixelLeft(), aue.pixelTop(), aue.pixelRight(), aue.pixelBottom(), var0, var1, var2); + return; + case 799318201: + var4 = 0; + var5 = -1439318921; + break; + case 1433397576: + appendScissor(aue.clusterLeft(var4), aue.clusterTop(var4), aue.clusterRight(var4), aue.clusterBottom(var4), var0, var1, var2); + var4++; + var5 = -1439318921; + break; + case 1518550607: + if (effectScissorCount > 0) { + var5 = -137878747; + } else { + var5 = 735283661; + } + break; + case 1575798436: + default: + effectScissorCount = 0; + if (aue.isLimited()) { + var5 = -1930534641; + } else { + var5 = 510668050; + } + } + } + } + + private static void appendScissor(int var0, int var1, int var2, int var3, int var4, int var5, int var6) { + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + int var12 = -541482165; + + while (true) { + switch (var12) { + case -541482165: + default: + var7 = Math.max(0, var0 / var6); + var8 = Math.max(0, var1 / var6); + var9 = Math.min(var4, ceilDivide(var2, var6)); + var10 = Math.min(var5, ceilDivide(var3, var6)); + if (var9 > var7) { + var12 = -519155174; + } else { + var12 = -191630779; + } + break; + case -519155174: + if (var10 <= var8) { + var12 = -191630779; + } else { + var12 = 1653568343; + } + break; + case -191630779: + return; + case 1653568343: + var11 = effectScissorCount * (4); + effectScissorRects[var11] = var7; + effectScissorRects[var11 + 1] = var5 - var10; + effectScissorRects[var11 + 2] = var9 - var7; + effectScissorRects[var11 + 3] = var10 - var8; + effectScissorCount += 1; + return; + } + } + } + + private static void endEffectScissor() { + effectScissorCount = 0; + } + + private static int ceilDivide(int var0, int var1) { + return (var0 + var1 - ((787709229 ^ -787709228) + ((787709229 & -787709228) << 1))) / var1; + } +} diff --git a/src/main/java/defpackage/tz.java b/src/main/java/defpackage/tz.java new file mode 100644 index 0000000..d535655 --- /dev/null +++ b/src/main/java/defpackage/tz.java @@ -0,0 +1,19 @@ +package defpackage; + +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; + +final class tz { + final ct fade = ct.transform(ob.FAST); + LivingEntity entity; + ItemStack stack = ItemStack.EMPTY; + float progress; + float fadeValue; + float screenX; + float screenY; + float distance; + boolean active; + + tz() { + } +} diff --git a/src/main/java/defpackage/u.java b/src/main/java/defpackage/u.java new file mode 100644 index 0000000..c3167d5 --- /dev/null +++ b/src/main/java/defpackage/u.java @@ -0,0 +1,13 @@ +package defpackage; + +public enum u { + RTL, + LTR, + FWD; + + private static final u[] vals = values(); + + public u next() { + return vals[(this.ordinal() + (798176787 | -798176786) + (798176787 & -798176786)) % vals.length]; + } +} diff --git a/src/main/java/defpackage/ua.java b/src/main/java/defpackage/ua.java new file mode 100644 index 0000000..498dea8 --- /dev/null +++ b/src/main/java/defpackage/ua.java @@ -0,0 +1,610 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemUseAnimation; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; +import org.joml.Vector3f; + +@rn(name = "ConsumeESP", category = rl.RENDER, description = "Circle with a progress ring showing what a target is eating or drinking") +public final class ua extends rm { + public static final ua INSTANCE = new ua(); + private static final String COLOR_CLIENT = "Client"; + private static final String COLOR_CUSTOM = "Custom"; + private static final int CLIENT_COLOR_INDEX = 90; + private static final int INDICATOR_LIMIT = 32; + private static final float DISC_RADIUS = 12.0F; + private static final float RING_INSET = 1.7F; + private static final float RING_THICKNESS = 2.0F; + private static final float ICON_SIZE = 11.0F; + private static final float ICON_TEXTURE_SIZE = 16.0F; + private static final float SHADOW_SOFTNESS = 5.0F; + private static final float DISC_ALPHA = 0.92F; + private static final float TRACK_ALPHA = 0.18F; + private static final float SHADOW_ALPHA = 0.16F; + private static final float ICON_ALPHA_THRESHOLD = 0.15F; + private static final float MIN_DRAW_SCALE = 0.01F; + private static final float FADE_EPSILON = 0.01F; + private static final float ANCHOR_HEIGHT_FACTOR = 0.62F; + private static final float DISTANCE_SCALE_BASE = 1.1F; + private static final float DISTANCE_SCALE_DIVISOR = 90.0F; + private static final float DISTANCE_SCALE_MIN = 0.6F; + private static final float DISTANCE_SCALE_MAX = 1.0F; + private static final Comparator FAR_TO_NEAR = Comparator.comparingDouble(var0 -> -var0.distance); + private final sm scale = new sm("Scale", 1.0F, 0.5F, 2.0F, 0.05F) + .description( + "Size multiplier for the circle" + ); + private final sm distance = new sm("Distance", 48.0F, 8.0F, 128.0F, 4.0F) + .description( + "Maximum distance to show the circle" + ); + private final ru mobs = new ru( + "Mobs", + (boolean)((((-469187564 | 469187564) + (-469187564 & 469187564)) + ) != 0)) + .description( + "Also show the circle for non-player entities" + ); + private final ru self = new ru( + "Self", (boolean)((((487063266 ^ -487063266) + ((487063266 & -487063266) << 1)) + ) != 0)) + .description( + "Show the circle for your own consumption" + ); + private final ru throughWalls = new ru( + "Through Walls", + (boolean)((((-518021511 | 518021511) + (-518021511 & 518021511)) + ) != 0)) + .description( + "Keep the circle visible while the target is behind blocks" + ); + private final sg color; + private final rx customColor; + private final Map indicators; + private final List queue; + private final Vector3f screen; + + private ua() { + String var10003 = "Color"; + String[] var10004 = new String[2]; + var10004[0] = "Client"; + var10004[1] = "Custom"; + this.color = new sg(var10003, var10004) + .describe( + "Client", + "Use the client theme color" + ) + .describe( + "Custom", + "Use a custom chosen color" + ) + .description("Color of the progress ring"); + this.customColor = new rx( + "Custom color", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> this.color.is("Custom") + ) + .description( + "Custom color for the progress ring" + ); + this.indicators = new ConcurrentHashMap<>(); + this.queue = new ArrayList<>(); + this.screen = new Vector3f(); + } + + @Override + public void onDisable() { + super.onDisable(); + this.indicators.clear(); + this.queue.clear(); + } + + @k + public void onRender(fs var1) { + float var2 = 0.0F; + aru var3 = null; + mv var4 = null; + asu var5 = null; + Iterator var6 = null; + tz var7 = null; + int var8 = 333767585; + + while (true) { + switch (var8) { + case -2010590403: + return; + case -1683861920: + return; + case -1522007036: + if (var6.hasNext()) { + var8 = -1212615985; + } else { + var8 = 858833256; + } + break; + case -1304511765: + return; + case -1212615985: + var7 = (tz)var6.next(); + this.draw(var3, var4, var5, var7); + var8 = -1522007036; + break; + case -1084348625: + var3 = var1.getContext(); + var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + var5 = this.accentColor(); + this.queue.sort(FAR_TO_NEAR); + var6 = this.queue.iterator(); + var8 = -1522007036; + break; + case -1055614998: + return; + case -1008644843: + if (!(mc.gui.screen() instanceof ChatScreen)) { + var8 = -1055614998; + } else { + var8 = 141192431; + } + break; + case -709335836: + this.collectVisible(var2); + if (this.queue.isEmpty()) { + var8 = -2010590403; + } else { + var8 = -1084348625; + } + break; + case 141192431: + var2 = var1.getTickDelta(); + this.scan(var2); + if (this.indicators.isEmpty()) { + var8 = -1683861920; + } else { + var8 = -709335836; + } + break; + case 333767585: + default: + if (mc.level != null) { + var8 = 630921795; + } else { + var8 = -1304511765; + } + break; + case 630921795: + if (mc.player == null) { + var8 = -1304511765; + } else { + var8 = 937732869; + } + break; + case 858833256: + this.queue.clear(); + return; + case 937732869: + if (mc.gui.screen() != null) { + var8 = -1008644843; + } else { + var8 = 141192431; + } + } + } + } + + private void scan(float var1) { + for (tz var3 : this.indicators.values()) { + var3.active = (boolean)(((0)) != 0); + } + + float var6 = this.distance.getCurrent(); + if (this.mobs.isEnabled()) { + for (Entity var4 : mc.level.entitiesForRendering()) { + if (var4 instanceof LivingEntity var5) { + this.track(var5, var6, var1); + } + } + } else { + for (Player var9 : mc.level.players()) { + this.track(var9, var6, var1); + } + } + } + + private void track(LivingEntity var1, float var2, float var3) { + int var4 = 0; + ItemStack var5 = null; + int var6 = 0; + UUID var7 = null; + tz var8 = null; + int var10 = 0; + int var9 = -123720164; + + while (true) { + switch (var9) { + case -2090857302: + var4 = var10; + if (var4 != 0) { + var9 = -1793932529; + } else { + var9 = 1842934671; + } + break; + case -1951797615: + return; + case -1901385496: + return; + case -1793932529: + if (!this.self.isEnabled()) { + var9 = -926936499; + } else { + var9 = 1842934671; + } + break; + case -1540136908: + if (!var1.isUsingItem()) { + var9 = 1067917916; + } else { + var9 = 546970715; + } + break; + case -1300734047: + var6 = var5.getUseDuration(var1); + if (var6 <= 0) { + var9 = -1089680617; + } else { + var9 = -790992079; + } + break; + case -1089680617: + return; + case -926936499: + return; + case -886618240: + return; + case -790992079: + if (mc.player.distanceTo(var1) > var2) { + var9 = -574707541; + } else { + var9 = 1656790470; + } + break; + case -751627928: + if (this.indicators.size() >= (1633056009 | -1633055977) + (1633056009 & -1633055977)) { + var9 = -1901385496; + } else { + var9 = 1121000882; + } + break; + case -574707541: + return; + case -137332455: + if (var4 == 0) { + var9 = 1387974684; + } else { + var9 = -1540136908; + } + break; + case -123720164: + default: + if (var1 == mc.player) { + var9 = 736692737; + } else { + var9 = 1711364421; + } + break; + case 414524625: + return; + case 449894757: + var8.entity = var1; + var8.stack = var5; + var8.progress = Mth.clamp(var1.getTicksUsingItem(var3) / var6, 0.0F, 1.0F); + var8.active = (boolean)(((1)) != 0); + return; + case 546970715: + var5 = var1.getUseItem(); + if (!var5.isEmpty()) { + var9 = 1161287075; + } else { + var9 = -886618240; + } + break; + case 736692737: + var10 = 1; + var9 = -2090857302; + break; + case 743238508: + if (var1.isSpectator()) { + var9 = 959520188; + } else { + var9 = -137332455; + } + break; + case 959520188: + return; + case 1067917916: + return; + case 1121000882: + var8 = new tz(); + this.indicators.put(var7, var8); + var9 = 449894757; + break; + case 1161287075: + if (!isConsumable(var5)) { + var9 = -886618240; + } else { + var9 = -1300734047; + } + break; + case 1387974684: + if (var1.isInvisibleTo(mc.player)) { + var9 = 414524625; + } else { + var9 = -1540136908; + } + break; + case 1464149203: + if (!this.throughWalls.isEnabled()) { + var9 = 1843377688; + } else { + var9 = 1868763969; + } + break; + case 1637898868: + if (var1.isAlive()) { + var9 = 743238508; + } else { + var9 = 959520188; + } + break; + case 1656790470: + if (var4 == 0) { + var9 = 1464149203; + } else { + var9 = 1868763969; + } + break; + case 1711364421: + var10 = 0; + var9 = -2090857302; + break; + case 1842934671: + if (!var1.isRemoved()) { + var9 = 1637898868; + } else { + var9 = 959520188; + } + break; + case 1843377688: + if (this.isOccluded(var1)) { + var9 = -1951797615; + } else { + var9 = 1868763969; + } + break; + case 1868763969: + var7 = var1.getUUID(); + var8 = this.indicators.get(var7); + if (var8 == null) { + var9 = -751627928; + } else { + var9 = 449894757; + } + } + } + } + + private static boolean isConsumable(ItemStack var0) { + ItemUseAnimation var1 = null; + int var3 = 0; + int var2 = -830076266; + + while (true) { + switch (var2) { + case -830076266: + default: + var1 = var0.getUseAnimation(); + if (var1 != ItemUseAnimation.EAT) { + var2 = 163045994; + } else { + var2 = -30181848; + } + break; + case -500155981: + var3 = 0; + var2 = 1067956211; + break; + case -30181848: + var3 = 1; + var2 = 1067956211; + break; + case 163045994: + if (var1 == ItemUseAnimation.DRINK) { + var2 = -30181848; + } else { + var2 = -500155981; + } + break; + case 1067956211: + return (boolean)((var3) != 0); + } + } + } + + private void collectVisible(float var1) { + this.queue.clear(); + Iterator var2 = this.indicators.values().iterator(); + + while (var2.hasNext()) { + tz var3 = (tz)var2.next(); + LivingEntity var4 = var3.entity; + if (var4 != null && !var4.isRemoved()) { + float var5 = var3.fade.update(var3.active ? 1.0F : 0.0F); + if (!var3.active && var5 <= 0.01F) { + var2.remove(); + } else { + Vec3 var6 = var4.getPosition(var1).add(0.0, var4.getBbHeight() * 0.62F, 0.0); + if (aqk.projectToGui(var6, this.screen)) { + var3.fadeValue = var5; + var3.screenX = this.screen.x; + var3.screenY = this.screen.y; + var3.distance = mc.player.distanceTo(var4); + this.queue.add(var3); + } + } + } else { + var2.remove(); + } + } + } + + private void draw(aru var1, mv var2, asu var3, tz var4) { + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + arq var10 = null; + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = 1418705415; + + while (true) { + switch (var13) { + case -1965981933: + var12 = 0.6875F; + var1.pushMatrix(); + var1.pose().translate(-5.5F, -5.5F); + var1.pose().scale(var12, var12); + var1.item(var4.stack, 0, (-913283242 | 913283242) + (-913283242 & 913283242)); + var1.popMatrix(); + var13 = 917228755; + break; + case -1028921578: + if (!var4.stack.isEmpty()) { + var13 = -1965981933; + } else { + var13 = 917228755; + } + break; + case -337560413: + if (var5 > 0.15F) { + var13 = -1028921578; + } else { + var13 = 917228755; + } + break; + case -255164969: + atb.drawRing(var1.pose(), 0.0F, 0.0F, var11, 2.0F, var4.progress, var3.mulAlpha(var5)); + var13 = -337560413; + break; + case 229969627: + return; + case 917228755: + var1.popMatrix(); + return; + case 1008767499: + var1.pushMatrix(); + var1.pose().translate(var4.screenX, var4.screenY); + var1.pose().scale(var8, var8); + var9 = 24.0F; + var10 = asj.pill(var9); + atb.drawShadow(var1.pose(), -12.0F, -12.0F, var9, var9, 5.0F, var10, var3.mulAlpha(0.16F * var5)); + var1.drawRoundedRect(-12.0F, -12.0F, var9, var9, var10, var2.getForegroundColor().mulAlpha(0.92F * var5)); + atb.drawRoundedBorder(var1.pose(), -12.0F, -12.0F, var9, var9, pk.borderHairline(), var10, var2.getForegroundStroke().mulAlpha(var5)); + var11 = 10.3F; + atb.drawRing(var1.pose(), 0.0F, 0.0F, var11, 2.0F, 1.0F, var3.mulAlpha(0.18F * var5)); + if (var4.progress > 0.0F) { + var13 = -255164969; + } else { + var13 = -337560413; + } + break; + case 1418705415: + default: + var5 = Mth.clamp(var4.fadeValue, 0.0F, 1.0F); + var6 = Math.max(0.0F, var4.fadeValue); + var7 = Mth.clamp(1.1F - var4.distance / 90.0F, 0.6F, 1.0F); + var8 = this.scale.getCurrent() * var7 * var6; + if (var8 <= 0.01F) { + var13 = 229969627; + } else { + var13 = 1008767499; + } + } + } + } + + private boolean isOccluded(LivingEntity var1) { + Vec3 var2 = null; + ClipContext var3 = null; + int var5 = 0; + int var4 = -483970060; + + while (true) { + switch (var4) { + case -1182646421: + return (boolean)((var5) != 0); + case -590607507: + var5 = 0; + var4 = -1182646421; + break; + case -483970060: + default: + var2 = mc.getEntityRenderDispatcher().camera.position(); + var3 = new ClipContext(var2, var1.getEyePosition(), Block.COLLIDER, Fluid.NONE, mc.player); + if (mc.level.clip(var3).getType() != Type.MISS) { + var4 = 923504050; + } else { + var4 = -590607507; + } + break; + case 923504050: + var5 = 1; + var4 = -1182646421; + } + } + } + + private asu accentColor() { + asu var2 = null; + int var1 = -1589446027; + + while (true) { + switch (var1) { + case -1589446027: + default: + if (this.color.is("Custom")) { + var1 = 1110124870; + } else { + var1 = 144088758; + } + break; + case -617492033: + return var2; + case 144088758: + var2 = bz.getInstance().getThemeManager().getClientColor((-608826927 ^ 608827017) + ((-608826927 & 608827017) << 1)); + var1 = -617492033; + break; + case 1110124870: + var2 = this.customColor.getColor(); + var1 = -617492033; + } + } + } +} diff --git a/src/main/java/defpackage/ub.java b/src/main/java/defpackage/ub.java new file mode 100644 index 0000000..b352853 --- /dev/null +++ b/src/main/java/defpackage/ub.java @@ -0,0 +1,39 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:ub.class */ +/* synthetic */ class ub { + static final /* synthetic */ int[] $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CooldownIndicator; + static final /* synthetic */ int[] $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle = new int[xh.values().length]; + + static { + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle[xh.DOT.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle[xh.CIRCLE.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle[xh.CIRCLE_DOT.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CooldownIndicator = new int[ws.values().length]; + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CooldownIndicator[ws.BAR.ordinal()] = 1; + } catch (NoSuchFieldError e4) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CooldownIndicator[ws.RING.ordinal()] = 2; + } catch (NoSuchFieldError e5) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CooldownIndicator[ws.SPREAD.ordinal()] = 3; + } catch (NoSuchFieldError e6) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CooldownIndicator[ws.OFF.ordinal()] = 4; + } catch (NoSuchFieldError e7) { + } + } +} diff --git a/src/main/java/defpackage/uc.java b/src/main/java/defpackage/uc.java new file mode 100644 index 0000000..d11b920 --- /dev/null +++ b/src/main/java/defpackage/uc.java @@ -0,0 +1,129 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Objects; + +final class uc implements sd { + private ue this$0; + + uc(ue var1) { + Objects.requireNonNull(var1); + this.this$0 = var1; + } + + @Override + public int size() { + return this.this$0.library.size(); + } + + @Override + public String name(int var1) { + return this.this$0.library.get(var1).name(); + } + + @Override + public boolean isActive(int var1) { + return xd.matches(this.this$0.library.get(var1).profile(), this.this$0.look); + } + + @Override + public boolean canAdd() { + int var2 = 0; + int var1 = -76383684; + + while (true) { + switch (var1) { + case -1842777045: + return (boolean)((var2) != 0); + case -76383684: + default: + if (!this.this$0.library.isFull()) { + var1 = 327777992; + } else { + var1 = 242266721; + } + break; + case 242266721: + var2 = 0; + var1 = -1842777045; + break; + case 327777992: + var2 = 1; + var1 = -1842777045; + } + } + } + + @Override + public String suggestedName() { + return this.this$0.library.nextDefaultName("My crosshair"); + } + + @Override + public int maxNameLength() { + return 24; + } + + @Override + public void apply(int var1) { + this.this$0.applyProfile(this.this$0.library.get(var1).profile()); + } + + @Override + public void share(int var1, rq var2) { + wz var3 = this.this$0.library.get(var1); + ArrayList var4 = new ArrayList(); + var4.add( + rs.action( + "Copy code", + "To clipboard", + () -> { + aqg.mc.keyboardHandler.setClipboard(ww.encode(var3.profile(), var3.name())); + this.this$0.notifyStatus("Code copied to clipboard"); + } + ) + ); + var4.add(rs.section("Send to a friend")); + var4.addAll(this.this$0.friendEntries(var1x -> wy.send(var1x, var3.profile(), var3.name()))); + String var10001 = "Share \"%s\""; + Object[] var10002 = new Object[1]; + var10002[0] = var3.name(); + var2.openList(String.format(var10001, var10002), var4); + } + + @Override + public void remove(int var1) { + this.this$0.library.remove(var1); + } + + @Override + public void add(String var1) { + this.this$0 + .notifyStatus( + this.this$0.library.add(var1, this.this$0.currentProfile()) + ? "Saved to My Presets" + : "My Presets is full" + ); + } + + @Override + public String addHint() { + return "Save current"; + } + + @Override + public String shareHint() { + return "Share"; + } + + @Override + public String removeHint() { + return "Delete"; + } + + @Override + public void paint(asq var1, int var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9) { + wz var10 = this.this$0.library.get(var2); + this.this$0.paintIcon(var1, var10.frame(), xf.restExtent(var10.profile()), var10.profile().color(), var3, var4, var5, var6, var7, var8); + } +} diff --git a/src/main/java/defpackage/ud.java b/src/main/java/defpackage/ud.java new file mode 100644 index 0000000..24b1836 --- /dev/null +++ b/src/main/java/defpackage/ud.java @@ -0,0 +1,77 @@ +package defpackage; + +import java.util.Objects; + +final class ud implements xb { + private ue this$0; + + ud(ue var1) { + Objects.requireNonNull(var1); + this.this$0 = var1; + } + + @Override + public xh style() { + return this.this$0.selectedStyle(); + } + + @Override + public int color() { + return this.this$0.color.getIntColor(); + } + + @Override + public int size() { + return Math.round(this.this$0.size.getCurrent()); + } + + @Override + public int thickness() { + return Math.round(this.this$0.thickness.getCurrent()); + } + + @Override + public int gap() { + return Math.round(this.this$0.gap.getCurrent()); + } + + @Override + public boolean outline() { + return this.this$0.outline.isEnabled(); + } + + @Override + public float outlineOpacity() { + return this.this$0.outlineOpacity.getCurrent(); + } + + @Override + public int outlineThickness() { + return Math.round(this.this$0.outlineThickness.getCurrent()); + } + + @Override + public float opacity() { + return this.this$0.opacity.getCurrent(); + } + + @Override + public boolean centerDot() { + return this.this$0.centerDot.isEnabled(); + } + + @Override + public boolean outerLines() { + return this.this$0.outerLines.isEnabled(); + } + + @Override + public int outerLength() { + return Math.round(this.this$0.outerLength.getCurrent()); + } + + @Override + public int outerGap() { + return Math.round(this.this$0.outerGap.getCurrent()); + } +} diff --git a/src/main/java/defpackage/ue.java b/src/main/java/defpackage/ue.java new file mode 100644 index 0000000..bc41aa0 --- /dev/null +++ b/src/main/java/defpackage/ue.java @@ -0,0 +1,1649 @@ +package defpackage; + +import com.google.gson.JsonObject; +import com.mojang.blaze3d.platform.Window; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.function.Consumer; +import net.minecraft.client.gui.components.debug.DebugScreenEntries; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.phys.HitResult.Type; + +@rn(name = "Crosshair", category = rl.COMBAT, description = "Custom crosshair with styles and an attack cooldown indicator") +public final class ue extends rm implements aav { + public static final ue INSTANCE = new ue(); + private static final String SETTINGS_KEY = "Settings"; + private static final String LIBRARY_FILE = "crosshair_presets.json"; + private static final String MIGRATION_FAILURE = "crosshair legacy config migration failed"; + private static final String IMPORT_REJECTED = "crosshair code rejected ({} chars)"; + private static final String STATUS_IMPORTED = "Crosshair imported"; + private static final String STATUS_REJECTED = "Code not recognized"; + private static final String STATUS_EXPORTED = "Code copied to clipboard"; + private static final String STATUS_PASTE_HINT = "Copy a crosshair code first"; + private static final String STATUS_SAVED = "Saved to My Presets"; + private static final String STATUS_LIBRARY_FULL = "My Presets is full"; + private static final String DEFAULT_PRESET_NAME = "My crosshair"; + private static final String SHARED_PRESET_NAME = "Shared crosshair"; + private static final String HINT_ADD = "Save current"; + private static final String HINT_SHARE = "Share"; + private static final String HINT_REMOVE = "Delete"; + private static final String ACTION_SEND = "Send to friend"; + private static final String ACTION_SEND_HINT = "Pick a friend"; + private static final String ACTION_ASK = "Ask a friend"; + private static final String ACTION_ASK_HINT = "Get their crosshair"; + private static final String ACTION_COPY = "Copy code"; + private static final String ACTION_COPY_HINT = "To clipboard"; + private static final String ACTION_PASTE = "Paste code"; + private static final String ACTION_PASTE_HINT = "From clipboard"; + private static final String LIST_SEND_TITLE = "Send your crosshair"; + private static final String LIST_ASK_TITLE = "Ask for a crosshair"; + private static final String LIST_SHARE_TITLE = "Share \"%s\""; + private static final String LIST_FRIENDS_SECTION = "Send to a friend"; + private static final String LIST_NOT_SIGNED_IN = "Sign in to share with friends"; + private static final String LIST_NO_FRIENDS = "No friends yet, add them in Friends"; + private static final String FRIEND_ONLINE = "online"; + private static final String FRIEND_OFFLINE = "offline"; + private static final String CURRENT_NAME_FORMAT = "%s's crosshair"; + private static final int LEGACY_FALLBACK_GUI_SCALE = 2; + private static final float HIDDEN_SCALE = 0.01F; + private static final float APPEAR_MIN_SCALE = 0.6F; + private static final float FULL_CHARGE = 1.0F; + private static final float SPREAD_MAX = 8.0F; + private static final float NUMBER_STEP = 1.0F; + private static final float OPACITY_STEP = 0.05F; + private static final float HALF_PIXEL = 0.5F; + private static final float HALF = 0.5F; + private static final float STYLE_TILE_HEIGHT = 22.0F; + private static final float STYLE_TILE_MIN_WIDTH = 22.0F; + private static final float PRESET_TILE_HEIGHT = 22.0F; + private static final float PRESET_TILE_MIN_WIDTH = 22.0F; + private static final float SWATCH_TILE_HEIGHT = 14.0F; + private static final float SWATCH_TILE_MIN_WIDTH = 14.0F; + private static final float SWATCH_DIAMETER = 9.0F; + private static final float SWATCH_HOVER_GROW = 1.0F; + private static final float SWATCH_RIM = 0.75F; + private static final int SWATCH_RIM_ARGB = 1493172224; + private static final float SWATCH_GLOW_PAD = 1.5F; + private static final float SWATCH_GLOW_SOFTNESS = 5.0F; + private static final float SWATCH_GLOW_ALPHA = 0.12F; + private static final float SWATCH_GLOW_HOVER_ALPHA = 0.18F; + private static final float SWATCH_GLOSS_RATIO = 0.35F; + private static final float SWATCH_GLOSS_INSET = 0.15F; + private static final float SWATCH_GLOSS_ALPHA = 0.45F; + private static final float ICON_PLATE_INSET = 1.5F; + private static final float ICON_PLATE_RADIUS = 2.5F; + private static final float ICON_PADDING = 3.0F; + private static final float ICON_MAX_UNIT = 1.0F; + private static final int ICON_PLATE_ARGB = -14999769; + private static final float ICON_PLATE_HOVER_LIFT = 0.07F; + private static final float PREVIEW_FILL = 0.62F; + private static final float PREVIEW_MAX_UNIT = 6.0F; + private static final float PREVIEW_CORNER = 6.0F; + private static final int PREVIEW_DARK_ARGB = -14999769; + private static final int PREVIEW_LIGHT_ARGB = -2301206; + private static final long PREVIEW_CYCLE_MS = 2200L; + private static final float PREVIEW_CHARGE_SHARE = 0.7F; + private static final float NANOS_PER_MILLI = 1000000.0F; + private static final float PREVIEW_PIXEL = 1.0F; + final xa library = new xa(bz.DIRECTORY.toPath().resolve("crosshair_presets.json")); + private final sq presets = sq.action( + "Presets", + so.CARD, + 22.0F, + 22.0F, + this::paintPresetTile, + this::applyPreset, + this::isPresetActive, + xc.displayNames() + ) + .description( + "Pick a ready-made crosshair, then tweak it below" + ); + private final se myPresets = new se( + "My Presets", 22.0F, 22.0F, xc.values().length, new uc(this) + ) + .description( + "Your saved crosshairs, kept across configs" + ); + private final sq style = sq.select( + "Style", so.CARD, 22.0F, 22.0F, this::paintStyleTile, xh.displayNames() + ) + .description("Shape of the crosshair"); + final rx color = new rx( + "Color", new asu((741702271 ^ -741702272) + ((741702271 & -741702272) << 1)) + ) + .description("Main color of the crosshair"); + private final sq quickColors = sq.action( + "Quick Colors", + so.SWATCH, + 14.0F, + 14.0F, + this::paintSwatchTile, + this::applySwatch, + this::isSwatchActive, + xi.displayNames() + ) + .description( + "One-click high-contrast colors" + ); + final sm size = new sm("Size", 6.0F, 1.0F, 30.0F, 1.0F) + .description( + "Length of the lines, or the size of the dot or circle" + ); + final sm thickness = new sm( + "Thickness", + 2.0F, + 1.0F, + 10.0F, + 1.0F, + () -> this.selectedStyle().usesThickness() + ) + .description( + "How thick the lines or the ring are" + ); + final sm gap = new sm( + "Gap", 3.0F, 0.0F, 30.0F, 1.0F, () -> this.selectedStyle().usesGap() + ) + .description( + "Empty space between the center and the lines" + ); + final ru outline = new ru( + "Outline", + (boolean)((((926527005 ^ -926527004) + ((926527005 & -926527004) << 1)) + ) != 0)) + .description( + "Thin dark border that keeps the crosshair visible on bright backgrounds" + ); + private final sg scale = new sg("Scale", xg.displayNames()) + .description( + "Pixel size of the crosshair; Auto follows your screen resolution" + ); + private final sg cooldown = new sg("Cooldown", ws.displayNames()) + .description( + "Shows how far your next attack has recharged" + ); + private final ru advanced = new ru( + "Advanced", + (boolean)((((1202415399 | -1202415399) + (1202415399 & -1202415399)) + ) != 0)) + .description("Show fine-tuning options"); + final sm opacity = new sm( + "Opacity", 1.0F, 0.1F, 1.0F, 0.05F, this.advanced::isEnabled + ) + .description("Transparency of the crosshair"); + final sm outlineOpacity = new sm( + "Outline Opacity", 1.0F, 0.0F, 1.0F, 0.05F, () -> { + int var2x = 0; + int var1x = -1405217922; + + while (true) { + switch (var1x) { + case -1405217922: + default: + if (this.advanced.isEnabled()) { + var1x = -144881140; + } else { + var1x = 653404100; + } + break; + case -1201913874: + var2x = 1; + var1x = 2122185527; + break; + case -144881140: + if (this.outline.isEnabled()) { + var1x = -1201913874; + } else { + var1x = 653404100; + } + break; + case 653404100: + var2x = 0; + var1x = 2122185527; + break; + case 2122185527: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description( + "Transparency of the dark border" + ); + final sm outlineThickness = new sm( + "Outline Thickness", 1.0F, 1.0F, 4.0F, 1.0F, () -> { + int var2x = 0; + int var1x = 1208617811; + + while (true) { + switch (var1x) { + case -1985316320: + var2x = 1; + var1x = -638542509; + break; + case -638542509: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -240447134: + var2x = 0; + var1x = -638542509; + break; + case 1208617811: + default: + if (this.advanced.isEnabled()) { + var1x = 1297364584; + } else { + var1x = -240447134; + } + break; + case 1297364584: + if (this.outline.isEnabled()) { + var1x = -1985316320; + } else { + var1x = -240447134; + } + } + } + } + ) + .description("Width of the dark border"); + final ru centerDot = new ru( + "Center Dot", + (boolean)(((0)) != 0), + () -> { + int var2x = 0; + int var1x = 1261845989; + + while (true) { + switch (var1x) { + case -964526992: + if (this.selectedStyle().allowsCenterDot()) { + var1x = 471456368; + } else { + var1x = 2039446750; + } + break; + case 471456368: + var2x = 1; + var1x = 781672686; + break; + case 781672686: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 1261845989: + default: + if (this.advanced.isEnabled()) { + var1x = -964526992; + } else { + var1x = 2039446750; + } + break; + case 2039446750: + var2x = 0; + var1x = 781672686; + } + } + } + ) + .description( + "Adds a dot in the middle of the crosshair" + ); + final ru outerLines = new ru( + "Outer Lines", + (boolean)(((0)) != 0), + () -> { + int var2x = 0; + int var1x = 976625256; + + while (true) { + switch (var1x) { + case -1932309480: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -22290094: + if (this.selectedStyle().hasLines()) { + var1x = 988499337; + } else { + var1x = 732620845; + } + break; + case 732620845: + var2x = 0; + var1x = -1932309480; + break; + case 976625256: + default: + if (this.advanced.isEnabled()) { + var1x = -22290094; + } else { + var1x = 732620845; + } + break; + case 988499337: + var2x = 1; + var1x = -1932309480; + } + } + } + ) + .description( + "Adds a second set of short lines further out" + ); + final sm outerLength = new sm( + "Outer Length", 2.0F, 1.0F, 20.0F, 1.0F, () -> { + int var2x = 0; + int var1x = 405741118; + + while (true) { + switch (var1x) { + case -1958577153: + var2x = 1; + var1x = -1897773682; + break; + case -1897773682: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -1531255768: + if (this.selectedStyle().hasLines()) { + var1x = -585904512; + } else { + var1x = 2099751453; + } + break; + case -585904512: + if (this.outerLines.isEnabled()) { + var1x = -1958577153; + } else { + var1x = 2099751453; + } + break; + case 405741118: + default: + if (this.advanced.isEnabled()) { + var1x = -1531255768; + } else { + var1x = 2099751453; + } + break; + case 2099751453: + var2x = 0; + var1x = -1897773682; + } + } + } + ) + .description("Length of the outer lines"); + final sm outerGap = new sm( + "Outer Gap", 10.0F, 0.0F, 40.0F, 1.0F, () -> { + int var2x = 0; + int var1x = -840578084; + + while (true) { + switch (var1x) { + case -1824148087: + if (this.selectedStyle().hasLines()) { + var1x = -1479140232; + } else { + var1x = 146884548; + } + break; + case -1611500920: + var2x = 1; + var1x = -357429378; + break; + case -1479140232: + if (this.outerLines.isEnabled()) { + var1x = -1611500920; + } else { + var1x = 146884548; + } + break; + case -840578084: + default: + if (this.advanced.isEnabled()) { + var1x = -1824148087; + } else { + var1x = 146884548; + } + break; + case -357429378: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 146884548: + var2x = 0; + var1x = -357429378; + } + } + } + ) + .description( + "Distance of the outer lines from the center" + ); + private final ru targetHighlight = new ru( + "Target Highlight", + (boolean)(((1)) != 0), + this.advanced::isEnabled + ) + .description( + "Recolors the crosshair when a full-strength hit would land on the mob you aim at" + ); + private final rx targetColor = new rx( + "Target Color", new asu(xi.RED.color()), () -> { + int var2x = 0; + int var1x = 2059720353; + + while (true) { + switch (var1x) { + case -1610050919: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -437283320: + var2x = 1; + var1x = -1610050919; + break; + case 382866241: + var2x = 0; + var1x = -1610050919; + break; + case 389839992: + if (this.targetHighlight.isEnabled()) { + var1x = -437283320; + } else { + var1x = 382866241; + } + break; + case 2059720353: + default: + if (this.advanced.isEnabled()) { + var1x = 389839992; + } else { + var1x = 382866241; + } + } + } + } + ) + .description( + "Crosshair color while a full-strength hit is ready on a target" + ); + private final ru thirdPerson = new ru( + "Third Person", + (boolean)(((0)) != 0), + this.advanced::isEnabled + ) + .description( + "Also show the crosshair in third-person view" + ); + private final rt share = new rt( + "Share", + 2, + List.of( + new rp( + "Send to friend", + "Pick a friend", + var1x -> var1x.openList( + "Send your crosshair", + this.friendEntries(var1xx -> wy.send(var1xx, this.currentProfile(), this.ownCrosshairName())) + ) + ), + new rp( + "Ask a friend", + "Get their crosshair", + var1x -> var1x.openList( + "Ask for a crosshair", this.friendEntries(wy::ask) + ) + ), + new rp( + "Copy code", + "To clipboard", + var1x -> this.exportCrosshair() + ), + new rp( + "Paste code", + "From clipboard", + var1x -> this.importCrosshair() + ) + ) + ) + .description( + "Share your crosshair with friends or as a code" + ); + final xb look = new ud(this); + private final wt animator = new wt(); + private final wx[] styleIcons = buildStyleIcons(); + private final float styleIconRadius = maxRadius(); + private final wx[] presetIcons = buildPresetIcons(); + public final ct appearAnimation = ct.layout(ob.SETTLED, 0.0F); + private final ct pixelUnit = ct.layout(ob.MEDIUM, 1.0F); + private final ct pixelHalf = ct.layout(ob.MEDIUM, 0.0F); + private final ct previewHalf = ct.layout(ob.MEDIUM, 0.0F); + private final ct previewUnit = ct.layout(ob.MEDIUM, 0.0F); + private final ct spread = ct.layout(ob.FAST, 0.0F); + private final ct indicatorFade = ct.layout(ob.FAST, 0.0F); + private final ct targetBlend = ct.layout(ob.FAST, 0.0F); + private boolean pixelPrimed; + + private ue() { + xh[] var1 = xh.values(); + int var2 = var1.length; + + for (int var3 = 0; var3 < var2; var3++) { + xh var4 = var1[var3]; + this.style.describe(var4.displayName(), var4.description()); + } + + xc[] var5 = xc.values(); + var2 = var5.length; + + for (int var11 = 0; var11 < var2; var11++) { + xc var14 = var5[var11]; + this.presets.describe(var14.displayName(), var14.description()); + } + + ws[] var6 = ws.values(); + var2 = var6.length; + + for (int var12 = 0; var12 < var2; var12++) { + ws var15 = var6[var12]; + this.cooldown.describe(var15.displayName(), var15.description()); + } + + xg[] var7 = xg.values(); + var2 = var7.length; + + for (int var13 = 0; var13 < var2; var13++) { + xg var16 = var7[var13]; + this.scale.describe(var16.displayName(), var16.description()); + } + } + + public float updateAppear() { + int var1 = 0; + int var3 = 0; + int var2 = -504279952; + + while (true) { + switch (var2) { + case -1015486904: + return this.appearAnimation.update(); + case -555812601: + var1 = var3; + if (var1 != 0) { + var2 = 390223392; + } else { + var2 = 85709023; + } + break; + case -504279952: + default: + if (mc.gui.screen() == null) { + var2 = 1104269536; + } else { + var2 = 2037471803; + } + break; + case 85709023: + if (this.appearAnimation.target() == 0.0F) { + var2 = 791429378; + } else { + var2 = -1015486904; + } + break; + case 390223392: + this.appearAnimation.jumpTo(0.0F); + this.appearAnimation.animateTo(0.0F); + return 0.0F; + case 791429378: + this.appearAnimation.animateTo(1.0F); + var2 = -1015486904; + break; + case 814689123: + var3 = 0; + var2 = -555812601; + break; + case 1104269536: + if (vq.INSTANCE.isEnabled()) { + var2 = 2037471803; + } else { + var2 = 814689123; + } + break; + case 2037471803: + var3 = 1; + var2 = -555812601; + } + } + } + + @k + public void onRender(fr var1) { + if (this.shouldRender()) { + float var2 = this.updateAppear(); + if (!(var2 <= 0.01F)) { + Window var3 = mc.getWindow(); + int var4 = var3.getWidth(); + int var5 = var3.getHeight(); + if (var4 > 0 && var5 > 0) { + wx var6 = this.animator.update(this.look); + float var7 = this.selectedScale().pixels(var5); + float var8 = this.parityHalf(var7); + if (!this.pixelPrimed) { + this.pixelUnit.jumpTo(var7); + this.pixelHalf.jumpTo(var8); + this.pixelPrimed = (boolean)(((1)) != 0); + } + + float var9 = this.pixelUnit.update(var7); + float var10 = this.pixelHalf.update(var8); + float var11 = 0.6F + 0.39999998F * Math.min(1.0F, var2); + float var12 = var9 * var11; + float var13 = Math.min(1.0F, var2); + float var14 = mc.player.getAttackStrengthScale(var1.getTickDelta()); + ws var15 = this.selectedCooldown(); + float var16 = this.indicatorFade.update(var14 < 1.0F ? 1.0F : 0.0F); + float var17 = this.spread.update(var15 == ws.SPREAD ? 8.0F * (1.0F - var14) : 0.0F); + float var18 = this.targetBlend.update(this.targetHighlight.isEnabled() && var14 >= 1.0F && this.aimingAtLivingTarget() ? 1.0F : 0.0F); + int var19 = asu.mixRGB(var6.color(), this.targetColor.getIntColor(), var18, 1.0F); + aru var20 = var1.getContext(); + var20.pushMatrix(); + var20.pose().scale((float)var3.getGuiScaledWidth() / var4, (float)var3.getGuiScaledHeight() / var5); + float var21 = anchor(var4, var10); + float var22 = anchor(var5, var10); + xf.draw(var20, var6, var21, var22, var12, var10, var17, var19, var13); + this.drawIndicator(var20, var6, var15, var21, var22, var12, var10, var14, var19, var13 * var16); + var20.popMatrix(); + } + } + } + } + + @Override + public void renderSidePreview(asq var1, float var2, float var3, float var4, float var5, float var6, float var7) { + float var8 = 0.0F; + wx var9 = null; + ws var10 = null; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + int var21 = 0; + float var23 = 0.0F; + float var24 = 0.0F; + int var22 = 1013759767; + + while (true) { + switch (var22) { + case -1814621750: + var24 = 8.0F * (1.0F - var12); + var22 = 1819246350; + break; + case -1134196944: + if (var6 <= 0.0F) { + var22 = 490157143; + } else { + var22 = -536347009; + } + break; + case -1087021382: + var24 = 0.0F; + var22 = 1819246350; + break; + case -536347009: + var8 = var4 * 0.5F; + atb.drawRoundedRect( + var1.pose(), + var2, + var3, + var8, + var5, + 6.0F, + 0.0F, + 0.0F, + 6.0F, + asu.getRGBWithAlpha(-14999769, var6) + ); + atb.drawRoundedRect( + var1.pose(), + var2 + var8, + var3, + var8, + var5, + 0.0F, + 6.0F, + 6.0F, + 0.0F, + asu.getRGBWithAlpha(-2301206, var6) + ); + var9 = this.animator.update(this.look); + var10 = this.selectedCooldown(); + var11 = (float)System.nanoTime() / 1000000.0F % 2200.0F / 2200.0F; + var12 = Math.min(1.0F, var11 / 0.7F); + if (var11 < 0.7F) { + var22 = 1009856341; + } else { + var22 = 1519319461; + } + break; + case -337507249: + var17 = this.previewUnit.update(var16) * var7; + var18 = this.previewHalf.update(this.parityHalf(1.0F)) * var17; + var19 = var2 + var8; + var20 = var3 + var5 * 0.5F; + var21 = var9.color(); + xf.draw(var1, var9, var19, var20, var17, var18, var14, var21, var6); + this.drawIndicator(var1, var9, var10, var19, var20, var17, var18, var12, var21, var6 * var13); + return; + case 490157143: + return; + case 919329916: + this.previewUnit.jumpTo(var16); + var22 = -337507249; + break; + case 1009856341: + var23 = 1.0F; + var22 = 1855951169; + break; + case 1013759767: + default: + if (!(var7 <= 0.0F)) { + var22 = -1134196944; + } else { + var22 = 490157143; + } + break; + case 1519319461: + var23 = (1.0F - var11) / 0.3F; + var22 = 1855951169; + break; + case 1819246350: + var14 = var24; + var15 = Math.max(xf.cooldownExtent(var9, var10), xf.extent(var9, 8.0F)); + var16 = Math.min(6.0F, Math.min(var4, var5) * 0.62F / (2.0F * var15)); + if (this.previewUnit.value() <= 0.0F) { + var22 = 919329916; + } else { + var22 = -337507249; + } + break; + case 1855951169: + var13 = var23; + if (var10 == ws.SPREAD) { + var22 = -1814621750; + } else { + var22 = -1087021382; + } + } + } + } + + @Override + public void load(JsonObject var1) { + super.load(var1); + JsonObject var2 = var1 != null + && var1.get("Settings") instanceof JsonObject var3 + ? var3 + : null; + if (xj.isLegacyConfig(var2)) { + try { + xj var6 = xj.fromConfig(var2); + this.applyProfile(var6.toProfile(this.legacyUnitScale())); + this.cooldown.set(var6.cooldown().displayName()); + this.targetHighlight.setEnabled(var6.targetHighlight()); + this.targetColor.setColor(var6.targetColor()); + } catch (RuntimeException var5) { + id.warn( + Cif.MODULE, + "crosshair legacy config migration failed", + var5 + ); + this.applyProfile(xd.DEFAULT); + } + } + } + + public xd currentProfile() { + return xd.of(this.look); + } + + public void applyProfile(xd var1) { + this.style.set(var1.style().displayName()); + this.color.setColor(var1.color()); + this.size.setCurrent(var1.size()); + this.thickness.setCurrent(var1.thickness()); + this.gap.setCurrent(var1.gap()); + this.outline.setEnabled(var1.outline()); + this.outlineOpacity.setCurrent(var1.outlineOpacity()); + this.outlineThickness.setCurrent(var1.outlineThickness()); + this.opacity.setCurrent(var1.opacity()); + this.centerDot.setEnabled(var1.centerDot()); + this.outerLines.setEnabled(var1.outerLines()); + this.outerLength.setCurrent(var1.outerLength()); + this.outerGap.setCurrent(var1.outerGap()); + } + + public boolean applySharedCode(String var1, String var2) { + Optional var3 = ww.decodeShared(var1, this.legacyUnitScale()); + if (var3.isEmpty()) { + this.notifyStatus("Code not recognized"); + return (boolean)(((0)) != 0); + } + + xd var4 = ((wv)var3.get()).profile(); + this.applyProfile(var4); + if (!this.isEnabled()) { + this.toggle(); + } + + if (this.library.indexOf(var4) >= 0) { + this.notifyStatus("Crosshair imported"); + return (boolean)(((1)) != 0); + } else { + String var5 = ((wv)var3.get()).name() != null + ? ((wv)var3.get()).name() + : ( + var2 != null + ? var2 + : this.library.nextDefaultName("Shared crosshair") + ); + this.notifyStatus( + this.library.add(var5, var4) + ? "Saved to My Presets" + : "My Presets is full" + ); + return (boolean)(((1)) != 0); + } + } + + private boolean shouldRender() { + int var2 = 0; + int var1 = 1713855346; + + while (true) { + switch (var1) { + case -2010203226: + if (!mc.options.getCameraType().isFirstPerson()) { + var1 = -1270605445; + } else { + var1 = 761560894; + } + break; + case -1564387395: + return (boolean)(((0)) != 0); + case -1525349718: + return (boolean)(((0)) != 0); + case -1455634074: + if (mc.level != null) { + var1 = -478665562; + } else { + var1 = -1301966423; + } + break; + case -1301966423: + return (boolean)(((0)) != 0); + case -1270605445: + if (!this.thirdPerson.isEnabled()) { + var1 = -1564387395; + } else { + var1 = 761560894; + } + break; + case -1239114810: + var2 = 0; + var1 = -968311715; + break; + case -968311715: + return (boolean)((var2) != 0); + case -478665562: + if (mc.gui.hud.isHidden()) { + var1 = -1301966423; + } else { + var1 = -2010203226; + } + break; + case 420590063: + if (mc.player.isSpectator()) { + var1 = 2044799238; + } else { + var1 = 1415954891; + } + break; + case 761560894: + if (mc.debugEntries.isCurrentlyEnabled(DebugScreenEntries.THREE_DIMENSIONAL_CROSSHAIR)) { + var1 = -1525349718; + } else { + var1 = 420590063; + } + break; + case 1039651779: + if (mc.hitResult.getType() == Type.ENTITY) { + var1 = 1415954891; + } else { + var1 = -1239114810; + } + break; + case 1415954891: + var2 = 1; + var1 = -968311715; + break; + case 1713855346: + default: + if (mc.player != null) { + var1 = -1455634074; + } else { + var1 = -1301966423; + } + break; + case 2044799238: + if (mc.hitResult != null) { + var1 = 1039651779; + } else { + var1 = -1239114810; + } + } + } + } + + private boolean aimingAtLivingTarget() { + LivingEntity var1 = null; + Entity var2 = null; + int var4 = 0; + int var3 = -294617124; + + while (true) { + switch (var3) { + case -1199037687: + var4 = 1; + var3 = -721341310; + break; + case -721341310: + return (boolean)((var4) != 0); + case -294617124: + default: + var2 = mc.crosshairPickEntity; + if (var2 instanceof LivingEntity) { + var3 = 178724241; + } else { + var3 = 1557081234; + } + break; + case 178724241: + var1 = (LivingEntity)var2; + if (var1.isAlive()) { + var3 = -1199037687; + } else { + var3 = 1557081234; + } + break; + case 1557081234: + var4 = 0; + var3 = -721341310; + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private void drawIndicator(aru var1, wx var2, ws var3, float var4, float var5, float var6, float var7, float var8, int var9, float var10) { + if (!(var10 <= 0.01F)) { + switch (ub.$SwitchMap$evo$systems$client$modules$impl$render$crosshair$CooldownIndicator[var3.ordinal()]) { + case 1: + xf.drawCooldownBar(var1, var2, var4, var5, var6, var7, var8, var9, var10); + break; + case 2: + xf.drawCooldownRing(var1, var2, var4, var5, var6, var7, var8, var9, var10); + case 3: + case 4: + } + } + } + + private float parityHalf(float var1) { + float var3 = 0.0F; + int var2 = -1274717308; + + while (true) { + switch (var2) { + case -1725514508: + var3 = 0.5F; + var2 = -701196708; + break; + case -1274717308: + default: + if ((Math.round(primaryDimension(this.look) * var1) & (-1891081566 | 1891081567) + (-1891081566 & 1891081567)) + == (-798584320 | 798584321) + (-798584320 & 798584321)) { + var2 = -1725514508; + } else { + var2 = 425474112; + } + break; + case -701196708: + return var3; + case 425474112: + var3 = 0.0F; + var2 = -701196708; + } + } + } + + private static float anchor(int var0, float var1) { + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + float var6 = 0.0F; + int var5 = 1995655578; + + while (true) { + switch (var5) { + case -1251928278: + var4 = var6; + return var3 + var1 * var4; + case -882686192: + var6 = 1.0F; + var5 = -1251928278; + break; + case 1571255011: + var6 = -1.0F; + var5 = -1251928278; + break; + case 1995655578: + default: + var2 = var0 * 0.5F; + var3 = (float)Math.floor(var2); + if (var2 - var3 >= 0.5F) { + var5 = -882686192; + } else { + var5 = 1571255011; + } + } + } + } + + private static int primaryDimension(xb var0) { + int var2 = 0; + int var1 = -1736054047; + + while (true) { + switch (var1) { + case -1736054047: + default: + if (var0.style() == xh.DOT) { + var1 = 2145373790; + } else { + var1 = 1997631862; + } + break; + case 149105824: + return var2; + case 1997631862: + var2 = var0.thickness(); + var1 = 149105824; + break; + case 2145373790: + var2 = var0.size(); + var1 = 149105824; + } + } + } + + xh selectedStyle() { + return xh.byDisplayName(this.style.get(), xh.CROSS); + } + + private ws selectedCooldown() { + return ws.byDisplayName(this.cooldown.get(), ws.BAR); + } + + private xg selectedScale() { + return xg.byDisplayName(this.scale.get(), xg.AUTO); + } + + private float legacyUnitScale() { + Window var1 = null; + int var2 = -1799216297; + + while (true) { + switch (var2) { + case -1799216297: + default: + var1 = mc.getWindow(); + if (var1 != null) { + var2 = -631086684; + } else { + var2 = 846595609; + } + break; + case -631086684: + if (var1.getGuiScale() >= (-948171626 ^ 948171627) + ((-948171626 & 948171627) << 1)) { + var2 = -416247986; + } else { + var2 = 846595609; + } + break; + case -416247986: + if (var1.getHeight() <= 0) { + var2 = 846595609; + } else { + var2 = -389762977; + } + break; + case -389762977: + return (float)var1.getGuiScale() / this.selectedScale().pixels(var1.getHeight()); + case 846595609: + return 2.0F; + } + } + } + + private void applyPreset(String var1) { + xc var2 = null; + int var3 = -1603553661; + + while (true) { + switch (var3) { + case -1603553661: + default: + var2 = xc.byDisplayName(var1); + if (var2 != null) { + var3 = 1997385178; + } else { + var3 = -791683558; + } + break; + case -791683558: + return; + case 1997385178: + this.applyProfile(var2.profile()); + var3 = -791683558; + } + } + } + + private boolean isPresetActive(String var1) { + xc var2 = null; + int var4 = 0; + int var3 = 763680164; + + while (true) { + switch (var3) { + case -2090773737: + if (xd.matches(var2.profile(), this.look)) { + var3 = -1039810525; + } else { + var3 = -1691349355; + } + break; + case -1691349355: + var4 = 0; + var3 = 1707497064; + break; + case -1039810525: + var4 = 1; + var3 = 1707497064; + break; + case 763680164: + default: + var2 = xc.byDisplayName(var1); + if (var2 != null) { + var3 = -2090773737; + } else { + var3 = -1691349355; + } + break; + case 1707497064: + return (boolean)((var4) != 0); + } + } + } + + private void applySwatch(String var1) { + xi var2 = null; + int var3 = 844261511; + + while (true) { + switch (var3) { + case 411319789: + return; + case 844261511: + default: + var2 = xi.byDisplayName(var1); + if (var2 != null) { + var3 = 1754152064; + } else { + var3 = 411319789; + } + break; + case 1754152064: + this.color.setColor(var2.color()); + var3 = 411319789; + } + } + } + + private boolean isSwatchActive(String var1) { + xi var2 = null; + int var4 = 0; + int var3 = 1150021911; + + while (true) { + switch (var3) { + case -615948034: + var4 = 1; + var3 = 1421756430; + break; + case 1150021911: + default: + var2 = xi.byDisplayName(var1); + if (var2 != null) { + var3 = 1548049058; + } else { + var3 = 1220543638; + } + break; + case 1220543638: + var4 = 0; + var3 = 1421756430; + break; + case 1421756430: + return (boolean)((var4) != 0); + case 1548049058: + if (var2.color() == this.color.getIntColor()) { + var3 = -615948034; + } else { + var3 = 1220543638; + } + } + } + } + + private void paintStyleTile(asq var1, String var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9) { + xh var10 = xh.byDisplayName(var2, xh.CROSS); + this.paintIcon(var1, this.styleIcons[var10.ordinal()], this.styleIconRadius, this.color.getIntColor(), var3, var4, var5, var6, var7, var8); + } + + private void paintPresetTile(asq var1, String var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9) { + xc var10 = null; + int var11 = -1308968002; + + while (true) { + switch (var11) { + case -1672920884: + this.paintIcon( + var1, this.presetIcons[var10.ordinal()], xf.restExtent(var10.profile()), var10.profile().color(), var3, var4, var5, var6, var7, var8 + ); + return; + case -1308968002: + default: + var10 = xc.byDisplayName(var2); + if (var10 == null) { + var11 = 290137651; + } else { + var11 = -1672920884; + } + break; + case 290137651: + return; + } + } + } + + private void paintSwatchTile(asq var1, String var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9) { + xi var10 = null; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + int var21 = 997622546; + + while (true) { + switch (var21) { + case 377431807: + var11 = Math.min(9.0F + 1.0F * var8, Math.min(var5, var6)); + var12 = var11 * 0.5F; + var13 = var3 + var5 * 0.5F; + var14 = var4 + var6 * 0.5F; + var15 = var13 - var12; + var16 = var14 - var12; + var17 = 1.5F * (1.0F + var8); + var18 = var11 + var17 * 2.0F; + atb.drawShadow( + var1.pose(), + var15 - var17, + var16 - var17, + var18, + var18, + 5.0F, + asj.pill(var18), + asu.getRGBWithAlpha(var10.color(), var7 * (0.12F + 0.18F * var8)) + ); + var19 = var12 + 0.75F; + var1.drawCoverageRect( + var13 - var19, + var14 - var19, + var19 * 2.0F, + var19 * 2.0F, + var19, + asu.getRGBWithAlpha(1493172224, var7) + ); + var1.drawCoverageRect(var15, var16, var11, var11, var12, asu.getRGBWithAlpha(var10.color(), var7)); + var20 = var11 * 0.35F; + var1.drawCoverageRect( + var15 + var11 * 0.15F, + var16 + var11 * 0.15F, + var20, + var20, + var20 * 0.5F, + asu.getRGBWithAlpha(-1, var7 * 0.45F) + ); + return; + case 997622546: + default: + var10 = xi.byDisplayName(var2); + if (var10 == null) { + var21 = 1890286108; + } else { + var21 = 377431807; + } + break; + case 1890286108: + return; + } + } + } + + void paintIcon(asq var1, wx var2, float var3, int var4, float var5, float var6, float var7, float var8, float var9, float var10) { + int var11 = asu.mixRGB( + -14999769, -1, 0.07F * var10, var9 + ); + atb.drawRoundedRect(var1.pose(), var5 + 1.5F, var6 + 1.5F, var7 - 3.0F, var8 - 3.0F, 2.5F, 2.5F, 2.5F, 2.5F, var11); + float var12 = Math.min(var7, var8) - 6.0F; + float var13 = Math.min(1.0F, var12 / (2.0F * Math.max(1.0F, var3))); + float var14 = xf.parityHalf(var2.thickness()) * var13; + xf.draw(var1, var2, var5 + var7 * 0.5F, var6 + var8 * 0.5F, var13, var14, 0.0F, var4, var9); + } + + private void importCrosshair() { + String var1 = null; + Optional var2 = null; + int var3 = -259660210; + + while (true) { + switch (var3) { + case -514523727: + id.warn( + Cif.MODULE, + "crosshair code rejected ({} chars)", + var1.length() + ); + this.notifyStatus("Code not recognized"); + var3 = 541848720; + break; + case -259660210: + default: + var1 = mc.keyboardHandler.getClipboard(); + if (var1 != null) { + var3 = -10166788; + } else { + var3 = 539574729; + } + break; + case -10166788: + if (var1.isBlank()) { + var3 = 539574729; + } else { + var3 = 16402932; + } + break; + case 16402932: + var2 = ww.decode(var1, this.legacyUnitScale()); + if (var2.isPresent()) { + var3 = 759900277; + } else { + var3 = -514523727; + } + break; + case 539574729: + this.notifyStatus( + "Copy a crosshair code first" + ); + return; + case 541848720: + this.playClick(); + return; + case 759900277: + this.applyProfile((xd)var2.get()); + this.notifyStatus("Crosshair imported"); + var3 = 541848720; + } + } + } + + private void exportCrosshair() { + mc.keyboardHandler.setClipboard(ww.encode(this.currentProfile())); + this.notifyStatus("Code copied to clipboard"); + this.playClick(); + } + + List friendEntries(Consumer var1) { + ArrayList var2 = new ArrayList(); + if (!wy.signedIn()) { + var2.add(rs.note("Sign in to share with friends")); + return var2; + } + + List var3 = wy.friends(); + if (var3.isEmpty()) { + var2.add( + rs.note("No friends yet, add them in Friends") + ); + return var2; + } + + for (amx var5 : var3) { + var2.add( + rs.action( + var5.username(), + var5.online() + ? "online" + : "offline", + () -> var1.accept(var5.username()) + ) + ); + } + + return var2; + } + + private String ownCrosshairName() { + String var10000 = "%s's crosshair"; + Object[] var10001 = new Object[1]; + var10001[0] = mc.getUser().getName(); + return String.format(var10000, var10001); + } + + void notifyStatus(String var1) { + le.getInstance().addCustomNotification(rk.glyph(this), this.getName(), var1); + } + + private void playClick() { + int var1 = -1101236358; + + while (true) { + switch (var1) { + case -1567702680: + return; + case -1540883442: + bz.getInstance().getSoundManager().playClick(); + var1 = -1567702680; + break; + case -1101236358: + default: + if (bz.getInstance().getSoundManager() != null) { + var1 = -1540883442; + } else { + var1 = -1567702680; + } + } + } + } + + private static wx[] buildStyleIcons() { + Object var0 = null; + wx[] var1 = null; + xh[] var2 = null; + int var3 = 0; + int var4 = 0; + Object var5 = null; + int var6 = 413484728; + + while (true) { + switch (var6) { + case -325885527: + return var1; + case -254095450: + if (var4 < var3) { + var6 = -202812148; + } else { + var6 = -325885527; + } + break; + case -202812148: + var5 = var2[var4]; + var1[((xh)var5).ordinal()] = wx.of(styleIconProfile((xh)var5)); + var4++; + var6 = -254095450; + break; + case 413484728: + default: + var0 = xh.values(); + var1 = new wx[((Object[])var0).length]; + var2 = (xh[])var0; + var3 = var2.length; + var4 = 0; + var6 = -254095450; + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static xd styleIconProfile(xh var0) { + xd var1 = xd.DEFAULT.withStyle(var0); + + return switch (ub.$SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle[var0.ordinal()]) { + case 1 -> new xd( + var0, + var1.color(), + 4, + var1.thickness(), + var1.gap(), + var1.outline(), + var1.outlineOpacity(), + var1.outlineThickness(), + var1.opacity(), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + var1.outerLength(), + var1.outerGap() + ); + case 2, 3 -> new xd( + var0, + var1.color(), + 9, + var1.thickness(), + var1.gap(), + var1.outline(), + var1.outlineOpacity(), + var1.outlineThickness(), + var1.opacity(), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + var1.outerLength(), + var1.outerGap() + ); + default -> var1; + }; + } + + private static float maxRadius() { + float var0 = 0.0F; + xh[] var1 = null; + int var2 = 0; + int var3 = 0; + Object var4 = null; + int var5 = -186805200; + + while (true) { + switch (var5) { + case -1028356012: + var4 = var1[var3]; + var0 = Math.max(var0, xf.restExtent(styleIconProfile((xh)var4))); + var3++; + var5 = 1223326945; + break; + case -649896978: + return var0; + case -186805200: + default: + var0 = 0.0F; + var1 = xh.values(); + var2 = var1.length; + var3 = 0; + var5 = 1223326945; + break; + case 1223326945: + if (var3 < var2) { + var5 = -1028356012; + } else { + var5 = -649896978; + } + } + } + } + + private static wx[] buildPresetIcons() { + Object var0 = null; + wx[] var1 = null; + xc[] var2 = null; + int var3 = 0; + int var4 = 0; + xc var5 = null; + int var6 = 753490988; + + while (true) { + switch (var6) { + case 753490988: + default: + var0 = xc.values(); + var1 = new wx[((Object[])var0).length]; + var2 = (xc[])var0; + var3 = var2.length; + var4 = 0; + var6 = 991640324; + break; + case 991640324: + if (var4 < var3) { + var6 = 1126608279; + } else { + var6 = 1266890657; + } + break; + case 1126608279: + var5 = var2[var4]; + var1[var5.ordinal()] = wx.of(var5.profile()); + var4++; + var6 = 991640324; + break; + case 1266890657: + return var1; + } + } + } +} diff --git a/src/main/java/defpackage/uf.java b/src/main/java/defpackage/uf.java new file mode 100644 index 0000000..80ba11b --- /dev/null +++ b/src/main/java/defpackage/uf.java @@ -0,0 +1,440 @@ +package defpackage; + +@rn(name = "CustomHand", category = rl.RENDER, description = "Hand post-process shader") +public final class uf extends rm { + private static final String[] MODES; + private static final String[] MODE_DESCRIPTIONS; + public static final int LIQUID_GLASS_MODE = 8; + public static final int SMOKE_MODE = 12; + public static final int FLAME_MODE = 13; + public static final uf INSTANCE = new uf(); + public final ru shaderEnabled = new ru( + "Shader", (boolean)((((1777368937 | -1777368936) + (1777368937 & -1777368936)) + ) != 0)) + .description( + "Apply a shader effect to your hand" + ); + public final sg mode = buildModeSetting(); + public final ru clientColor = new ru( + "Client Color", + (boolean)((((493421832 ^ -493421832) + ((493421832 & -493421832) << 1)) + ) != 0)) + .description( + "Use the global client color for the shader" + ); + public final rx color = new rx( + "Color", + new asu( + 0, + 180, + 255, + (-868977603 | 868977858) + (-868977603 & 868977858) + ) + ) + .description("Custom color for the hand shader"); + public final sm speed = new sm("Speed", 1.0F, 0.0F, 5.0F, 0.1F) + .description( + "Animation speed of the hand shader" + ); + public final sm opacity = new sm("Opacity", 1.0F, 0.0F, 1.0F, 0.05F) + .description("Transparency of the hand shader"); + public final ru shaderOnly = new ru( + "Shader only", + (boolean)((((-1264292014 | 1264292014) + (-1264292014 & 1264292014)) + ) != 0)) + .description( + "Hide the actual hand and only render the shader" + ); + public final sm smokeIntensity = new sm("Intensity", 0.85F, 0.1F, 1.5F, 0.01F, () -> { + int var2 = 0; + int var1 = -1183890294; + + while (true) { + switch (var1) { + case -1433634707: + if (this.mode.is("Flame")) { + var1 = 273096748; + } else { + var1 = -24842337; + } + break; + case -1183890294: + default: + if (!this.mode.is("Smoke")) { + var1 = -1433634707; + } else { + var1 = 273096748; + } + break; + case -24842337: + var2 = 0; + var1 = 3452405; + break; + case 3452405: + return Boolean.valueOf((boolean)((var2) != 0)); + case 273096748: + var2 = 1; + var1 = 3452405; + } + } + }) + .description( + "Overall strength of the smoke or flame effect" + ); + public final sm smokeLength = new sm( + "Smoke Length", + 0.72F, + 0.1F, + 1.0F, + 0.05F, + () -> this.mode.is("Smoke") + ) + .description( + "How far the smoke plume stretches from the hand" + ); + public final sm smokeDensity = new sm( + "Smoke Density", + 0.55F, + 0.0F, + 0.8F, + 0.05F, + () -> this.mode.is("Smoke") + ) + .description( + "How thick the smoke reads" + ); + public final sm smokeFade = new sm( + "Smoke Fade", + 0.91F, + 0.55F, + 0.98F, + 0.01F, + () -> this.mode.is("Smoke") + ) + .description( + "How quickly the smoke dissolves along the plume" + ); + public final sm smokeSoftness = new sm( + "Smoke Softness", + 1.35F, + 0.45F, + 2.5F, + 0.05F, + () -> this.mode.is("Smoke") + ) + .description("Softness of the smoke body"); + public final sm smokeBlur = new sm( + "Smoke Blur", + 1.55F, + 0.2F, + 3.0F, + 0.05F, + () -> this.mode.is("Smoke") + ) + .description("Blur applied to the smoke body"); + public final sm smokeEdgeSoftness = new sm( + "Edge Softness", + 1.3F, + 0.45F, + 2.5F, + 0.05F, + () -> this.mode.is("Smoke") + ) + .description( + "Softness of the smoke silhouette" + ); + public final sm smokeEdgeBlur = new sm( + "Edge Blur", + 1.45F, + 0.2F, + 3.0F, + 0.05F, + () -> this.mode.is("Smoke") + ) + .description( + "Blur applied to the smoke silhouette" + ); + public final ru flameGrey = new ru( + "Grey Smoke", + (boolean)(((0)) != 0), + () -> this.mode.is("Flame") + ) + .description( + "Drain the color out of the smoke above the flame" + ); + public final sm flameGlow = new sm( + "Flame Glow", + 2.0F, + 0.5F, + 5.0F, + 0.1F, + () -> this.mode.is("Flame") + ) + .description( + "Brightness of the glow around the flame" + ); + public final sm flameHeight = new sm( + "Flame Height", + 0.06F, + 0.02F, + 0.6F, + 0.01F, + () -> this.mode.is("Flame") + ) + .description("How tall the flame burns"); + public final sm flameWind = new sm( + "Flame Wind", + 1.0F, + 0.0F, + 3.0F, + 0.1F, + () -> this.mode.is("Flame") + ) + .description( + "How far sideways the flame is blown" + ); + public final sm flameWave = new sm( + "Flame Wave", + 1.0F, + 0.0F, + 3.0F, + 0.1F, + () -> this.mode.is("Flame") + ) + .description("How much the flame flickers"); + + private uf() { + this.color.setVisible(() -> { + int var2 = 0; + int var1 = 607847625; + + while (true) { + switch (var1) { + case -1420996911: + var2 = 0; + var1 = 1490014438; + break; + case 120401317: + var2 = 1; + var1 = 1490014438; + break; + case 607847625: + default: + if (!this.clientColor.isEnabled()) { + var1 = 120401317; + } else { + var1 = -1420996911; + } + break; + case 1490014438: + return Boolean.valueOf((boolean)((var2) != 0)); + } + } + }); + } + + private static sg buildModeSetting() { + sg var0 = null; + int var1 = 0; + int var2 = -428491900; + + while (true) { + switch (var2) { + case -1661096925: + if (var1 < MODES.length) { + var2 = -344045835; + } else { + var2 = 1871581506; + } + break; + case -428491900: + default: + var0 = new sg("Mode", MODES); + var1 = 0; + var2 = -1661096925; + break; + case -344045835: + var0.describe(MODES[var1], MODE_DESCRIPTIONS[var1]); + var1++; + var2 = -1661096925; + break; + case 1871581506: + return var0.description( + "Type of shader effect applied" + ); + } + } + } + + public boolean shaderActive() { + int var2 = 0; + int var1 = -2020182540; + + while (true) { + switch (var1) { + case -2020182540: + default: + if (this.isEnabled()) { + var1 = -401142416; + } else { + var1 = 733369306; + } + break; + case -1698880465: + var2 = 1; + var1 = 820449459; + break; + case -401142416: + if (this.shaderEnabled.isEnabled()) { + var1 = -1698880465; + } else { + var1 = 733369306; + } + break; + case 733369306: + var2 = 0; + var1 = 820449459; + break; + case 820449459: + return (boolean)((var2) != 0); + } + } + } + + public int modeIndex() { + String var1 = null; + int var2 = 0; + int var3 = 1492588360; + + while (true) { + switch (var3) { + case -1322497707: + var2++; + var3 = -909697028; + break; + case -909697028: + if (var2 < MODES.length) { + var3 = 113685083; + } else { + var3 = -649957801; + } + break; + case -649957801: + return 0; + case -246381766: + return var2; + case 113685083: + if (MODES[var2].equals(var1)) { + var3 = -246381766; + } else { + var3 = -1322497707; + } + break; + case 1492588360: + default: + var1 = this.mode.get(); + var2 = 0; + var3 = -909697028; + } + } + } + + public asu handColor() { + int var1 = 1855663858; + + while (true) { + switch (var1) { + case -1790502998: + return this.color.getColor(1.0F); + case -492078734: + return bz.getInstance().getThemeManager().getClientColor((466091138 | -466091138) + (466091138 & -466091138)); + case 1855663858: + } + + if (this.clientColor.isEnabled()) { + var1 = -492078734; + } else { + var1 = -1790502998; + } + } + } + + public float shaderSpeed() { + return this.speed.getCurrent(); + } + + public float shaderOpacity() { + return this.opacity.getCurrent(); + } + + public boolean onlyMode() { + return this.shaderOnly.isEnabled(); + } + + static { + String[] var10000 = new String[30]; + var10000[0] = "Solid"; + var10000[1] = "Rainbow"; + var10000[2] = "Wave"; + var10000[3] = "Pulse"; + var10000[4] = "Cosmos"; + var10000[5] = "Nebula"; + var10000[6] = "Cobweb"; + var10000[7] = "Plasma"; + var10000[8] = "LiquidGlass"; + var10000[9] = "Matrix"; + var10000[10] = "CosmicBlast"; + var10000[11] = "AlienNebula"; + var10000[12] = "Smoke"; + var10000[13] = "Flame"; + var10000[14] = "Aqua"; + var10000[15] = "Purple"; + var10000[16] = "Golden"; + var10000[17] = "Flow"; + var10000[18] = "Galaxy"; + var10000[19] = "Smoky"; + var10000[20] = "Homie"; + var10000[21] = "Yippie"; + var10000[22] = "HiDef"; + var10000[23] = "Gang"; + var10000[24] = "Holy"; + var10000[25] = "Teal"; + var10000[26] = "Gamer"; + var10000[27] = "Techno"; + var10000[28] = "Sheldon"; + var10000[29] = "Network"; + MODES = var10000; + var10000 = new String[30]; + var10000[0] = "Flat custom color with no animation"; + var10000[1] = "Hue cycling across the hand"; + var10000[2] = "Bright wave sweeping across the hand"; + var10000[3] = "The color breathes in and out"; + var10000[4] = "Drifting star field"; + var10000[5] = "Purple space nebula"; + var10000[6] = "Intertwined web strands"; + var10000[7] = "Flowing plasma"; + var10000[8] = "Refractive glass pane over the hand"; + var10000[9] = "Falling code rain"; + var10000[10] = "Bursting cosmic energy"; + var10000[11] = "Distorted alien nebula"; + var10000[12] = "Smoke plume trailing off the hand"; + var10000[13] = "Burning flame with smoke above it"; + var10000[14] = "Rippling teal caustics"; + var10000[15] = "Rippling violet caustics"; + var10000[16] = "Ray-marched golden fractal tunnel"; + var10000[17] = "Slow flowing color currents"; + var10000[18] = "Swirling galaxy arms"; + var10000[19] = "Drifting smoky clouds"; + var10000[20] = "Warm pastel marble"; + var10000[21] = "Bright playful color swirl"; + var10000[22] = "Sharp high-contrast color bands"; + var10000[23] = "Muted red and green marble"; + var10000[24] = "Magenta and violet haze"; + var10000[25] = "Cool teal marble"; + var10000[26] = "Saturated RGB color storm"; + var10000[27] = "Glowing voronoi grid"; + var10000[28] = "Interference stripes"; + var10000[29] = "Rotating wireframe network"; + MODE_DESCRIPTIONS = var10000; + } +} diff --git a/src/main/java/defpackage/ug.java b/src/main/java/defpackage/ug.java new file mode 100644 index 0000000..81081b8 --- /dev/null +++ b/src/main/java/defpackage/ug.java @@ -0,0 +1,60 @@ +package defpackage; + +final class ug { + final double baseX; + final double baseY; + final double baseZ; + final float halfX; + final float halfY; + final float halfZ; + final float u0; + final float v0; + final float u1; + final float v1; + final float overlayU0; + final float overlayV0; + final float overlayU1; + final float overlayV1; + final float detachThreshold; + final float phase; + final long lifeMs; + boolean consumed; + + ug( + double var1, + double var3, + double var5, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13, + float var14, + float var15, + float var16, + float var17, + float var18, + float var19, + long var20 + ) { + this.baseX = var1; + this.baseY = var3; + this.baseZ = var5; + this.halfX = var7; + this.halfY = var8; + this.halfZ = var9; + this.u0 = var10; + this.v0 = var11; + this.u1 = var12; + this.v1 = var13; + this.overlayU0 = var14; + this.overlayV0 = var15; + this.overlayU1 = var16; + this.overlayV1 = var17; + this.detachThreshold = var18; + this.phase = var19; + this.lifeMs = var20; + } +} diff --git a/src/main/java/defpackage/uh.java b/src/main/java/defpackage/uh.java new file mode 100644 index 0000000..4cddc4e --- /dev/null +++ b/src/main/java/defpackage/uh.java @@ -0,0 +1,19 @@ +package defpackage; + +final class uh { + double x; + double y; + double z; + double velX; + double velY; + double velZ; + float size; + int rgb; + long bornMs; + long lifeMs; + boolean landed; + boolean dead; + + uh() { + } +} diff --git a/src/main/java/defpackage/ui.java b/src/main/java/defpackage/ui.java new file mode 100644 index 0000000..c252374 --- /dev/null +++ b/src/main/java/defpackage/ui.java @@ -0,0 +1,11 @@ +package defpackage; + +final class ui { + final float[] points; + final float intensity; + + ui(float[] var1, float var2) { + this.points = var1; + this.intensity = var2; + } +} diff --git a/src/main/java/defpackage/uj.java b/src/main/java/defpackage/uj.java new file mode 100644 index 0000000..68181e8 --- /dev/null +++ b/src/main/java/defpackage/uj.java @@ -0,0 +1,59 @@ +package defpackage; + +import java.util.List; +import net.minecraft.resources.Identifier; + +final class uj { + final int entityId; + final Identifier skin; + final double groundY; + final long startMillis; + final List fragments; + final List sparks; + final ul kind; + final double centerX; + final double centerY; + final double centerZ; + final float seed; + final List> boltVariants; + final boolean slim; + final float bodyYaw; + List ashCubes = List.of(); + List grains = List.of(); + List blood = List.of(); + double windX; + double windZ; + boolean finished; + + uj( + int var1, + Identifier var2, + double var3, + long var5, + List var7, + List var8, + ul var9, + double var10, + double var12, + double var14, + float var16, + List> var17, + boolean var18, + float var19 + ) { + this.entityId = var1; + this.skin = var2; + this.groundY = var3; + this.startMillis = var5; + this.fragments = var7; + this.sparks = var8; + this.kind = var9; + this.centerX = var10; + this.centerY = var12; + this.centerZ = var14; + this.seed = var16; + this.boltVariants = var17; + this.slim = var18; + this.bodyYaw = var19; + } +} diff --git a/src/main/java/defpackage/uk.java b/src/main/java/defpackage/uk.java new file mode 100644 index 0000000..6b45146 --- /dev/null +++ b/src/main/java/defpackage/uk.java @@ -0,0 +1,20 @@ +package defpackage; + +final class uk { + double x; + double y; + double z; + double velX; + double velY; + double velZ; + float axisX; + float axisY; + float axisZ; + float angle; + float angularSpeed; + final um part; + + uk(um var1) { + this.part = var1; + } +} diff --git a/src/main/java/defpackage/ul.java b/src/main/java/defpackage/ul.java new file mode 100644 index 0000000..d6b95a0 --- /dev/null +++ b/src/main/java/defpackage/ul.java @@ -0,0 +1,8 @@ +package defpackage; + +enum ul { + PARTS, + EXPLOSION, + LIGHTNING, + DISINTEGRATE; +} diff --git a/src/main/java/defpackage/um.java b/src/main/java/defpackage/um.java new file mode 100644 index 0000000..618c65e --- /dev/null +++ b/src/main/java/defpackage/um.java @@ -0,0 +1,4 @@ +package defpackage; + +record um(float widthPx, float heightPx, float depthPx, int u, int v, int overlayU, int overlayV, float centerXPx, float centerYPx) { +} diff --git a/src/main/java/defpackage/un.java b/src/main/java/defpackage/un.java new file mode 100644 index 0000000..4d1be44 --- /dev/null +++ b/src/main/java/defpackage/un.java @@ -0,0 +1,19 @@ +package defpackage; + +final class un { + double x; + double y; + double z; + double velX; + double velY; + double velZ; + float size; + int rgb; + float phase; + long bornMs; + long lifeMs; + boolean dead; + + un() { + } +} diff --git a/src/main/java/defpackage/uo.java b/src/main/java/defpackage/uo.java new file mode 100644 index 0000000..401a6fb --- /dev/null +++ b/src/main/java/defpackage/uo.java @@ -0,0 +1,16 @@ +package defpackage; + +final class uo { + double x; + double y; + double z; + double velX; + double velY; + double velZ; + float size; + float lifeFactor; + boolean dead; + + uo() { + } +} diff --git a/src/main/java/defpackage/up.java b/src/main/java/defpackage/up.java new file mode 100644 index 0000000..8fbb997 --- /dev/null +++ b/src/main/java/defpackage/up.java @@ -0,0 +1,3385 @@ +package defpackage; + +import com.mojang.authlib.GameProfile; +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.Map.Entry; +import java.util.concurrent.ThreadLocalRandom; +import java.util.function.Supplier; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.Camera; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.player.RemotePlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.LightCoordsUtil; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.PlayerModelType; +import net.minecraft.world.entity.player.PlayerSkin; +import net.minecraft.world.phys.Vec3; +import org.joml.Quaternionf; +import org.joml.Vector3f; + +@rn(name = "DeathEffects", description = "Players shatter into body parts on death", category = rl.RENDER) +public final class up extends rm { + private static final String MODE_SHATTER = "Shatter"; + private static final String MODE_ASCEND = "Ascend"; + private static final String MODE_EXPLOSION = "Explosion"; + private static final String MODE_LIGHTNING = "Lightning"; + private static final String MODE_DISINTEGRATE = "Disintegrate"; + private static final String BLAST_COLOR_NATURAL = "Natural"; + private static final String BLAST_COLOR_CLIENT = "Client"; + private static final String BLAST_COLOR_CUSTOM = "Custom"; + private static final int FIRE_TINT = 16741152; + private static final int ELECTRIC_TINT = 10471679; + private static final float BLAST_QUAD_HALF_SIZE = 2.3F; + private static final float BLAST_CENTER_HEIGHT_FACTOR = 0.55F; + private static final float BOLT_HEIGHT = 26.0F; + private static final float BOLT_START_DRIFT = 7.0F; + private static final int BOLT_SUBDIVISIONS = 6; + private static final float BOLT_JITTER = 0.16F; + private static final int BOLT_VARIANTS = 3; + private static final int BOLT_BRANCHES = 5; + private static final float BOLT_CORE_WIDTH = 0.045F; + private static final float BOLT_GLOW_WIDTH = 0.3F; + private static final float IMPACT_CARD_HALF_SIZE = 1.7F; + private static final float IMPACT_HEIGHT_FACTOR = 0.5F; + private static final long[] STROBE_STARTS_MS; + private static final float[] STROBE_AMPLITUDES; + private static final float STROBE_DECAY_MS = 55.0F; + private static final float THUNDER_VOLUME = 1.8F; + private static final float SOUL_START_PROGRESS = 0.22F; + private static final float SOUL_RISE_HEIGHT = 3.5F; + private static final float SOUL_MAX_ALPHA = 0.38F; + private static final int SOUL_TINT = 11128831; + private static final float SOUL_FADE_IN = 0.18F; + private static final float SOUL_FADE_OUT_START = 0.6F; + private static final float SOUL_END_SCALE = 0.85F; + private static final float SOUL_PIVOT_Y = 0.9F; + private static final int WISP_COUNT = 10; + private static final float WISP_SPIN_TURNS = 1.6F; + private static final float WISP_WIDTH = 0.045F; + private static final long SHAKE_DURATION_MS = 650L; + private static final float SHAKE_MAX_DEGREES = 1.6F; + private static final float SHAKE_FALLOFF_DISTANCE = 20.0F; + private static final float SHAKE_YAW_FREQUENCY = 0.055F; + private static final float SHAKE_PITCH_FREQUENCY = 0.041F; + private static final long CHAR_DURATION_MS = 350L; + private static final float CHAR_MIN_BRIGHTNESS = 0.12F; + private static final int SKY_FLASH_TICKS = 2; + private static final float SCREEN_FLASH_MAX_ALPHA = 0.22F; + private static final float SCREEN_FLASH_FALLOFF_DISTANCE = 40.0F; + private static final int SCREEN_FLASH_RGB = 15397631; + private static final float ASH_CELL_PX = 2.0F; + private static final float ASH_SWEEP_END_PROGRESS = 0.55F; + private static final float ASH_DETACH_JITTER = 0.12F; + private static final float ASH_EDGE_TINT_WINDOW = 0.07F; + private static final int ASH_EDGE_TINT = 13209442; + private static final float ASH_WIND_SPEED = 1.3F; + private static final float ASH_LIFT_SPEED = 0.45F; + private static final float ASH_TURBULENCE = 0.5F; + private static final float ASH_DRAG = 0.995F; + private static final long ASH_LIFE_MIN_MS = 800L; + private static final long ASH_LIFE_MAX_MS = 1700L; + private static final float ASH_FADE_START = 0.45F; + private static final int GRAINS_PER_CUBE = 4; + private static final float GRAIN_MIN_SIZE = 0.015F; + private static final float GRAIN_MAX_SIZE = 0.045F; + private static final int GRAIN_COLOR_LIGHT = 14269588; + private static final int GRAIN_COLOR_DARK = 8284754; + private static final float GRAIN_SPAWN_JITTER = 0.08F; + private static final float SPARK_GRAVITY = 9.0F; + private static final float SPARK_DRAG = 0.985F; + private static final float SPARK_STREAK_SECONDS = 0.045F; + private static final int BLOOD_PER_BLAST = 48; + private static final float BLOOD_GRAVITY = 16.0F; + private static final float BLOOD_DRAG = 0.99F; + private static final float BLOOD_MIN_SPEED = 1.5F; + private static final float BLOOD_MAX_SPEED = 7.0F; + private static final double BLOOD_UP_MIN = -0.35; + private static final float BLOOD_MIN_SIZE = 0.03F; + private static final float BLOOD_MAX_SIZE = 0.085F; + private static final int BLOOD_COLOR_BRIGHT = 10357515; + private static final int BLOOD_COLOR_DARK = 4981250; + private static final long BLOOD_LIFE_MIN_MS = 900L; + private static final long BLOOD_LIFE_MAX_MS = 2200L; + private static final float BLOOD_FADE_START = 0.55F; + private static final float BLOOD_SPLAT_SCALE = 2.4F; + private static final float BLOOD_SPLAT_Y_OFFSET = 0.02F; + private static final float BLOOD_STREAK_SECONDS = 0.03F; + private static final float TEXTURE_SIZE = 64.0F; + private static final float PIXEL = 0.0625F; + private static final float OVERLAY_DILATION_PX = 0.25F; + private static final float GRAVITY = 14.0F; + private static final float BOUNCE_RESTITUTION = 0.45F; + private static final float BOUNCE_FRICTION = 0.6F; + private static final float MAX_FRAME_DELTA = 0.05F; + private static final float SHATTER_FADE_START = 0.6F; + private static final float ASCEND_FADE_START = 0.3F; + private static final float ASCEND_SHRINK = 0.35F; + private static final int MAX_CAPTURE_DEATH_TICKS = 3; + private static final int DUMMY_ID_BASE = 2130706432; + private static final long DUMMY_KILL_DELAY_MS = 1500L; + private static final double DUMMY_SPAWN_DISTANCE = 8.0; + private static final String DUMMY_NAME = "DeadBot"; + private static final um HEAD = new um( + 8.0F, + 8.0F, + 8.0F, + 0, + 0, + 32, + 0, + 0.0F, + 28.0F + ); + private static final um BODY = new um( + 8.0F, + 12.0F, + 4.0F, + 16, + 16, + 16, + 32, + 0.0F, + 18.0F + ); + private static final um RIGHT_LEG = new um( + 4.0F, + 12.0F, + 4.0F, + 0, + 16, + 0, + 32, + -2.0F, + 6.0F + ); + private static final um LEFT_LEG = new um( + 4.0F, + 12.0F, + 4.0F, + 16, + 48, + 0, + 48, + 2.0F, + 6.0F + ); + private final sg modeSetting; + private final sm powerSetting; + private final sm durationSetting; + private final sm spinSetting; + private final ru bounceSetting; + private final sm sparkCountSetting; + private final sg blastColorSetting; + private final rx blastCustomColor; + private final ru thunderSetting; + private final ru bloodSetting; + private final Map active; + private ClientLevel trackedWorld; + private RemotePlayer dummy; + private long dummyKillAtMillis; + private long lastFrameNanos; + private int dummyIdCounter; + private final Vector3f scratchRight; + private final Vector3f scratchUp; + private final Quaternionf scratchQuat; + private atd cachedBlastProgram; + private ate blastResolution; + private ate blastTime; + private ate blastProgress; + private ate blastTintColor; + private ate blastFade; + public static final up INSTANCE = new up(); + + private up() { + String var10003 = "Mode"; + String[] var10004 = new String[5]; + var10004[0] = "Shatter"; + var10004[1] = "Ascend"; + var10004[2] = "Explosion"; + var10004[3] = "Lightning"; + var10004[4] = "Disintegrate"; + this.modeSetting = new sg(var10003, var10004) + .describe( + "Shatter", + "Entity shatters into pieces" + ) + .describe( + "Ascend", + "Entity floats upwards" + ) + .describe( + "Explosion", + "Entity explodes visually" + ) + .describe( + "Lightning", + "Lightning strikes the entity" + ) + .describe( + "Disintegrate", + "Entity fades away" + ) + .description( + "Type of effect played on death" + ); + this.powerSetting = new sm("Power", 1.0F, 0.3F, 3.0F, 0.1F) + .description("Intensity of the death effect"); + this.durationSetting = new sm("Duration", 2.5F, 1.0F, 6.0F, 0.5F) + .description("How long the effect lasts"); + this.spinSetting = new sm("Spin", 1.0F, 0.2F, 3.0F, 0.1F, () -> { + int var2x = 0; + int var1x = -635057968; + + while (true) { + switch (var1x) { + case -1310586916: + var2x = 0; + var1x = -282409517; + break; + case -659378216: + var2x = 1; + var1x = -282409517; + break; + case -635057968: + default: + if (!this.modeSetting.is("Shatter")) { + var1x = -507880628; + } else { + var1x = -659378216; + } + break; + case -507880628: + if (this.modeSetting.is("Ascend")) { + var1x = -659378216; + } else { + var1x = -1310586916; + } + break; + case -282409517: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + }) + .description( + "Rotation speed of the effect particles" + ); + this.bounceSetting = new ru( + "Bounce", + (boolean)(((1)) != 0), + () -> this.modeSetting.is("Shatter") + ) + .description( + "Make shattered particles bounce on the ground" + ); + this.sparkCountSetting = new sm( + "Sparks", 70.0F, 20.0F, 150.0F, 5.0F, this::isBlastMode + ) + .description("Number of sparks emitted on death"); + var10003 = "Blast color"; + Supplier var2 = this::isBlastMode; + String[] var10005 = new String[3]; + var10005[0] = "Natural"; + var10005[1] = "Client"; + var10005[2] = "Custom"; + this.blastColorSetting = new sg(var10003, var2, var10005) + .describe( + "Natural", + "Use default explosion colors" + ) + .describe( + "Client", + "Use client theme color" + ) + .describe( + "Custom", + "Use a custom chosen color" + ) + .description( + "Color mode for the explosion effect" + ); + this.blastCustomColor = new rx( + "Blast custom color", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> { + int var2x = 0; + int var1x = -1846240852; + + while (true) { + switch (var1x) { + case -1846240852: + default: + if (this.isBlastMode()) { + var1x = 1095980743; + } else { + var1x = -761614132; + } + break; + case -761614132: + var2x = 0; + var1x = 1111530765; + break; + case -392263454: + var2x = 1; + var1x = 1111530765; + break; + case 1095980743: + if (this.blastColorSetting.is("Custom")) { + var1x = -392263454; + } else { + var1x = -761614132; + } + break; + case 1111530765: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description( + "Custom color for the explosion effect" + ); + this.thunderSetting = new ru( + "Thunder sound", + (boolean)(((1)) != 0), + () -> this.modeSetting.is("Lightning") + ) + .description("Play a thunder sound upon death"); + this.bloodSetting = new ru( + "Blood", + (boolean)(((1)) != 0), + () -> this.modeSetting.is("Explosion") + ) + .description( + "Emit blood particles when an entity dies" + ); + this.active = new HashMap<>(); + this.scratchRight = new Vector3f(); + this.scratchUp = new Vector3f(); + this.scratchQuat = new Quaternionf(); + } + + @Override + public void onDisable() { + super.onDisable(); + this.active.clear(); + this.discardDummy(); + } + + public boolean shouldHideEntity(int var1) { + uj var2 = null; + int var4 = 0; + int var3 = 1813257986; + + while (true) { + switch (var3) { + case -1782680470: + return (boolean)((var4) != 0); + case -1734205134: + var4 = 0; + var3 = -1782680470; + break; + case -1222602738: + var2 = this.active.get(var1); + if (var2 != null) { + var3 = -447284353; + } else { + var3 = -1734205134; + } + break; + case -447284353: + if (var2.kind != ul.LIGHTNING) { + var3 = 1317844731; + } else { + var3 = -1734205134; + } + break; + case -234808336: + return (boolean)(((0)) != 0); + case 1317844731: + var4 = 1; + var3 = -1782680470; + break; + case 1813257986: + default: + if (!this.isEnabled()) { + var3 = -234808336; + } else { + var3 = -1222602738; + } + } + } + } + + private boolean isBlastMode() { + int var2 = 0; + int var1 = 865518364; + + while (true) { + switch (var1) { + case -1796016825: + var2 = 0; + var1 = -1303753076; + break; + case -1303753076: + return var2; + case 798413488: + if (this.modeSetting.is("Lightning")) { + var1 = 882100356; + } else { + var1 = -1796016825; + } + break; + case 865518364: + default: + if (!this.modeSetting.is("Explosion")) { + var1 = 798413488; + } else { + var1 = 882100356; + } + break; + case 882100356: + var2 = 1; + var1 = -1303753076; + } + } + } + + public int charredBodyTint(int var1, int var2) { + uj var3 = null; + float var4 = 0.0F; + float var5 = 0.0F; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 1052770710; + + while (true) { + switch (var9) { + case -1201544732: + return var2; + case -876448803: + if (var3.kind != ul.LIGHTNING) { + var9 = 124411195; + } else { + var9 = 497291803; + } + break; + case -121987848: + if (this.active.isEmpty()) { + var9 = -1201544732; + } else { + var9 = 2116649409; + } + break; + case 124411195: + return var2; + case 497291803: + var4 = Mth.clamp((float)(System.currentTimeMillis() - var3.startMillis) / 350.0F, 0.0F, 1.0F); + var5 = Mth.lerp(var4, 1.0F, 0.12F); + var6 = (int)((var2 >> (-231766691 | 231766707) + (-231766691 & 231766707) & (-1943492997 | 1943493252) + (-1943492997 & 1943493252)) * var5); + var7 = (int)( + (var2 >> (-1073696627 ^ 1073696635) + ((-1073696627 & 1073696635) << 1) & (-363804149 ^ 363804404) + ((-363804149 & 363804404) << 1)) * var5 + ); + var8 = (int)((var2 & (-1383009991 ^ 1383010246) + ((-1383009991 & 1383010246) << 1)) * var5); + return var2 & (2030759019 ^ -2047536235) + ((2030759019 & -2047536235) << 1) + | var6 << (-975311728 | 975311744) + (-975311728 & 975311744) + | var7 << (-298766398 | 298766406) + (-298766398 & 298766406) + | var8; + case 1052770710: + default: + if (this.isEnabled()) { + var9 = -121987848; + } else { + var9 = -1201544732; + } + break; + case 2116649409: + var3 = this.active.get(var1); + if (var3 != null) { + var9 = -876448803; + } else { + var9 = 124411195; + } + } + } + } + + public float cameraShakeYaw() { + float var1 = 0.0F; + float var3 = 0.0F; + int var2 = -586598781; + + while (true) { + switch (var2) { + case -586598781: + default: + var1 = this.shakeAmplitude(); + if (var1 == 0.0F) { + var2 = -533150281; + } else { + var2 = 1773290623; + } + break; + case -533150281: + var3 = 0.0F; + var2 = 1211995778; + break; + case 1211995778: + return var3; + case 1773290623: + var3 = var1 * Mth.sin((float)System.currentTimeMillis() * 0.055F); + var2 = 1211995778; + } + } + } + + public float cameraShakePitch() { + float var1 = 0.0F; + float var3 = 0.0F; + int var2 = 966330649; + + while (true) { + switch (var2) { + case -1931918044: + return var3; + case 966330649: + default: + var1 = this.shakeAmplitude(); + if (var1 == 0.0F) { + var2 = 1148513324; + } else { + var2 = 1015383840; + } + break; + case 1015383840: + var3 = var1 * Mth.cos((float)System.currentTimeMillis() * 0.041F); + var2 = -1931918044; + break; + case 1148513324: + var3 = 0.0F; + var2 = -1931918044; + } + } + } + + @k + public void onHudRender(fs var1) { + if (this.isEnabled() && !this.active.isEmpty() && mc.player != null && mc.level != null) { + long var2 = System.currentTimeMillis(); + float var4 = 0.0F; + + for (uj var6 : this.active.values()) { + if (var6.kind == ul.LIGHTNING) { + long var7 = var2 - var6.startMillis; + float var9 = 0.0F; + + for (int var10 = 0; var10 < STROBE_STARTS_MS.length; var10++) { + if (var7 >= STROBE_STARTS_MS[var10]) { + var9 += STROBE_AMPLITUDES[var10] * (float)Math.exp((float)(-(var7 - STROBE_STARTS_MS[var10])) / 55.0F); + } + } + + double var14 = mc.player.position().distanceTo(new Vec3(var6.centerX, var6.centerY, var6.centerZ)); + float var12 = Mth.clamp(1.0F - (float)var14 / 40.0F, 0.0F, 1.0F); + var4 = Math.max(var4, Math.min(1.0F, var9) * var12); + } + } + + if (!(var4 <= 0.02F)) { + int var13 = Mth.clamp( + (int)(var4 * 0.22F * 255.0F), + 0, + (1562503655 | -1562503400) + (1562503655 & -1562503400) + ); + var1.getContext() + .drawRect( + 0.0F, + 0.0F, + mc.getWindow().getGuiScaledWidth(), + mc.getWindow().getGuiScaledHeight(), + new asu(var13 << (1011213918 ^ -1011213894) + ((1011213918 & -1011213894) << 1) | (21480117 | -6082486) + (21480117 & -6082486)) + ); + } + } + } + + private float shakeAmplitude() { + long var1 = (-294027982355871474L | 294027982355871474L) + (-294027982355871474L & 294027982355871474L); + float var3 = 0.0F; + Iterator var4 = null; + uj var5 = null; + long var6 = (-7229496936396274894L | 7229496936396274894L) + (-7229496936396274894L & 7229496936396274894L); + float var8 = 0.0F; + double var9 = 0.0; + float var11 = 0.0F; + int var12 = 1815219720; + + while (true) { + switch (var12) { + case -2085763444: + if (mc.player == null) { + var12 = 1668992028; + } else { + var12 = 647567687; + } + break; + case -2053388428: + var5 = (uj)var4.next(); + if (var5.kind != ul.LIGHTNING) { + var12 = 1370417298; + } else { + var12 = -2027926825; + } + break; + case -2027926825: + var6 = var1 - var5.startMillis; + if (var6 >= (-1627844833489147356L ^ 1627844833489147356L) + ((-1627844833489147356L & 1627844833489147356L) << 1)) { + var12 = -476407787; + } else { + var12 = -1788464224; + } + break; + case -1788464224: + if (var4.hasNext()) { + var12 = -2053388428; + } else { + var12 = 1013619347; + } + break; + case -476407787: + if (var6 >= (1398449456515873580L ^ -1398449456515872930L) + ((1398449456515873580L & -1398449456515872930L) << 1)) { + var12 = 2138945993; + } else { + var12 = 914706295; + } + break; + case 272692240: + if (!this.active.isEmpty()) { + var12 = -2085763444; + } else { + var12 = 1668992028; + } + break; + case 647567687: + var1 = System.currentTimeMillis(); + var3 = 0.0F; + var4 = this.active.values().iterator(); + var12 = -1788464224; + break; + case 914706295: + var8 = 1.0F - (float)var6 / 650.0F; + var9 = mc.player.position().distanceTo(new Vec3(var5.centerX, var5.centerY, var5.centerZ)); + var11 = Mth.clamp(1.0F - (float)var9 / 20.0F, 0.0F, 1.0F); + var3 = Math.max(var3, 1.6F * var8 * var8 * var11); + var12 = -1788464224; + break; + case 1013619347: + return var3; + case 1370417298: + var12 = -1788464224; + break; + case 1668992028: + return 0.0F; + case 1815219720: + default: + if (this.isEnabled()) { + var12 = 272692240; + } else { + var12 = 1668992028; + } + break; + case 2138945993: + var12 = -1788464224; + } + } + } + + public void spawnDummy(boolean var1) { + if (mc.level != null && mc.player != null) { + this.discardDummy(); + Vec3 var2 = mc.player.getLookAngle(); + Vec3 var3 = mc.player.position().add(var2.x * 8.0, 0.0, var2.z * 8.0); + RemotePlayer var4 = new RemotePlayer( + mc.level, new GameProfile(UUID.randomUUID(), "DeadBot") + ); + int var10001 = 2130706432; + int var10002 = this.dummyIdCounter; + this.dummyIdCounter += 1; + var4.setId(var10001 + var10002); + float var5 = mc.player.getYRot() + 180.0F; + var4.snapTo(var3.x, var3.y, var3.z, var5, 0.0F); + var4.setYHeadRot(var5); + var4.yBodyRot = var5; + var4.setHealth(var4.getMaxHealth()); + mc.level.addEntity(var4); + this.dummy = var4; + this.dummyKillAtMillis = var1 + ? System.currentTimeMillis() + (5736468981539465191L | -5736468981539463691L) + (5736468981539465191L & -5736468981539463691L) + : (-8508437137390485775L ^ 8508437137390485775L) + ((-8508437137390485775L & 8508437137390485775L) << 1); + } + } + + public void killDummy() { + int var1 = -1399650332; + + while (true) { + switch (var1) { + case -1399650332: + default: + if (this.dummy != null) { + var1 = -238538117; + } else { + var1 = 367810893; + } + break; + case -238538117: + if (mc.level == null) { + var1 = 367810893; + } else { + var1 = 1533113370; + } + break; + case 367810893: + return; + case 1533113370: + this.dummy.setHealth(0.0F); + this.capture(this.dummy); + this.dummyKillAtMillis = (-8123650612613951L | 8123650612613951L) + (-8123650612613951L & 8123650612613951L); + return; + } + } + } + + public void onWorldRender(LevelRenderContext var1) { + long var2 = System.nanoTime(); + float var4 = Mth.clamp((float)(var2 - this.lastFrameNanos) / 1.0E9F, 0.0F, 0.05F); + this.lastFrameNanos = var2; + if (this.isEnabled() && mc.level != null && mc.player != null) { + if (this.trackedWorld != mc.level) { + this.trackedWorld = mc.level; + this.active.clear(); + this.dummy = null; + this.dummyKillAtMillis = (-1959788421799415442L ^ 1959788421799415442L) + ((-1959788421799415442L & 1959788421799415442L) << 1); + } + + if (this.dummy != null + && this.dummyKillAtMillis != (7287366817423193985L ^ -7287366817423193985L) + ((7287366817423193985L & -7287366817423193985L) << 1) + && System.currentTimeMillis() >= this.dummyKillAtMillis) { + this.killDummy(); + } + + for (AbstractClientPlayer var6 : mc.level.players()) { + if (var6 != mc.player + && var6 != this.dummy + && var6.isDeadOrDying() + && var6.deathTime <= (1103144680 | -1103144677) + (1103144680 & -1103144677) + && !this.active.containsKey(var6.getId())) { + this.capture(var6); + } + } + + PoseStack var20 = var1.poseStack(); + SubmitNodeCollector var21 = var1.submitNodeCollector(); + Camera var7 = mc.getEntityRenderDispatcher().camera; + if (var20 != null && var21 != null && var7 != null) { + long var8 = System.currentTimeMillis(); + long var10 = (long)(this.durationSetting.getCurrent() * 1000.0F); + boolean var12 = this.modeSetting.is("Shatter"); + boolean var13 = this.bounceSetting.isEnabled(); + Vec3 var14 = var7.position(); + Iterator var15 = this.active.entrySet().iterator(); + + while (var15.hasNext()) { + uj var16 = (uj)((Entry)var15.next()).getValue(); + Entity var17 = mc.level.getEntity(var16.entityId); + int var18 = var17 != null && !var17.isRemoved() && !(var17 instanceof AbstractClientPlayer var19 && !var19.isDeadOrDying()) + ? 0: 1; + float var22 = Mth.clamp((float)(var8 - var16.startMillis) / (float)var10, 0.0F, 1.0F); + if (var22 >= 1.0F) { + var16.finished = (boolean)(((1)) != 0); + } + + if (var16.finished) { + if (this.dummy != null && var16.entityId == this.dummy.getId()) { + this.discardDummy(); + var15.remove(); + } else if (var18 != 0) { + var15.remove(); + } + } else { + switch (var16.kind) { + case EXPLOSION: + this.simulateSparks(var16, var4); + this.simulateBlood(var16, var4, var8); + this.renderExplosion(var16, var20, var21, var7, var14, var22, var10, var8); + break; + case LIGHTNING: + this.simulateSparks(var16, var4); + this.renderLightning(var16, var20, var21, var7, var14, var22, var10, var8); + break; + case DISINTEGRATE: + this.renderDisintegrate(var16, var20, var21, var7, var14, var22, var4, var8); + break; + default: + this.simulate(var16, var4, var12, var13); + this.render(var16, var20, var21, var14, var22, var12); + } + + if (var16.finished && var18 != 0) { + var15.remove(); + } + } + } + } + } + } + + private void capture(AbstractClientPlayer var1) { + if (this.modeSetting.is("Explosion")) { + this.captureExplosion(var1); + } else if (this.modeSetting.is("Lightning")) { + this.captureLightning(var1); + } else if (this.modeSetting.is("Disintegrate")) { + this.captureDisintegrate(var1); + } else { + PlayerSkin var2 = var1.getSkin(); + int var3 = var2.model() == PlayerModelType.SLIM + ? 1: 0; + um[] var4 = bodyParts((boolean)((var3) != 0)); + ThreadLocalRandom var5 = ThreadLocalRandom.current(); + boolean var6 = this.modeSetting.is("Shatter"); + float var7 = this.powerSetting.getCurrent(); + float var8 = this.spinSetting.getCurrent(); + float var9 = (float)Math.toRadians(var1.yBodyRot); + float var10 = Mth.sin(var9); + float var11 = Mth.cos(var9); + ArrayList var12 = new ArrayList(var4.length); + um[] var13 = var4; + int var14 = var13.length; + + for (int var15 = 0; var15 < var14; var15++) { + um var16 = var13[var15]; + uk var17 = new uk(var16); + float var18 = var16.centerXPx() * 0.0625F; + float var19 = var16.centerYPx() * 0.0625F; + double var20 = -(var18 * var11); + double var22 = -(var18 * var10); + var17.x = var1.getX() + var20; + var17.y = var1.getY() + var19; + var17.z = var1.getZ() + var22; + double var24 = var20 + var5.nextDouble(-0.35, 0.35); + double var26 = var22 + var5.nextDouble(-0.35, 0.35); + double var28 = Math.sqrt(var24 * var24 + var26 * var26); + if (var28 < 1.0E-4) { + double var30 = var5.nextDouble(Math.PI * 2); + var24 = Math.cos(var30); + var26 = Math.sin(var30); + var28 = 1.0; + } + + if (var6) { + double var35 = var7 * var5.nextDouble(1.2, 2.5); + var17.velX = var24 / var28 * var35; + var17.velZ = var26 / var28 * var35; + var17.velY = var7 * var5.nextDouble(2.2, 3.8); + } else { + var17.velX = var24 / var28 * var7 * 0.25; + var17.velZ = var26 / var28 * var7 * 0.25; + var17.velY = var7 * var5.nextDouble(0.8, 1.4); + } + + float var36 = (float)var5.nextDouble(-1.0, 1.0); + float var31 = (float)var5.nextDouble(-1.0, 1.0); + float var32 = (float)var5.nextDouble(-1.0, 1.0); + float var33 = Math.max(1.0E-4F, (float)Math.sqrt(var36 * var36 + var31 * var31 + var32 * var32)); + var17.axisX = var36 / var33; + var17.axisY = var31 / var33; + var17.axisZ = var32 / var33; + var17.angle = (float)var5.nextDouble(Math.PI * 2); + float var34 = var6 ? 6.0F : 1.5F; + var17.angularSpeed = var8 * (float)var5.nextDouble(0.5, 1.0) * var34 * (var5.nextBoolean() ? 1.0F : -1.0F); + var12.add(var17); + } + + this.active + .put( + var1.getId(), + new uj( + var1.getId(), + var2.body().texturePath(), + var1.getY(), + System.currentTimeMillis(), + var12, + List.of(), + ul.PARTS, + var1.getX(), + var1.getY(), + var1.getZ(), + 0.0F, + List.of(), + (boolean)((var3) != 0), + var1.yBodyRot + ) + ); + } + } + + private void captureDisintegrate(AbstractClientPlayer var1) { + ThreadLocalRandom var2 = ThreadLocalRandom.current(); + PlayerSkin var3 = var1.getSkin(); + int var4 = var3.model() == PlayerModelType.SLIM + ? 1: 0; + float var5 = (float)Math.toRadians(var1.yBodyRot); + float var6 = Mth.sin(var5); + float var7 = Mth.cos(var5); + double var8 = var1.getX(); + double var10 = var1.getY(); + double var12 = var1.getZ(); + float var14 = 32.0F; + ArrayList var15 = new ArrayList(); + um[] var16 = bodyParts((boolean)((var4) != 0)); + int var17 = var16.length; + + for (int var18 = 0; var18 < var17; var18++) { + um var19 = var16[var18]; + int var20 = (int)Math.ceil(var19.widthPx() / 2.0F); + int var21 = (int)Math.ceil(var19.heightPx() / 2.0F); + + for (int var22 = 0; var22 < var20; var22++) { + for (int var23 = 0; var23 < var21; var23++) { + float var24 = Math.min(2.0F, var19.widthPx() - var22 * 2.0F); + float var25 = Math.min(2.0F, var19.heightPx() - var23 * 2.0F); + float var26 = var19.centerXPx() - var19.widthPx() * 0.5F + var22 * 2.0F + var24 * 0.5F; + float var27 = var19.centerYPx() - var19.heightPx() * 0.5F + var23 * 2.0F + var25 * 0.5F; + float var28 = var19.u() + var19.depthPx() + var22 * 2.0F; + float var29 = var19.v() + var19.depthPx() + (var19.heightPx() - var25 - var23 * 2.0F); + float var30 = var19.overlayU() + var19.depthPx() + var22 * 2.0F; + float var31 = var19.overlayV() + var19.depthPx() + (var19.heightPx() - var25 - var23 * 2.0F); + float var32 = Mth.clamp(var27 / var14 + (var2.nextFloat() - 0.5F) * 0.12F, 0.0F, 1.0F); + var15.add( + new ug( + var8 - var26 * 0.0625F * var7, + var10 + var27 * 0.0625F, + var12 - var26 * 0.0625F * var6, + var24 * 0.0625F * 0.5F, + var25 * 0.0625F * 0.5F, + Math.min(var19.depthPx(), 4.0F) * 0.0625F * 0.5F, + var28, + var29, + var28 + var24, + var29 + var25, + var30, + var31, + var30 + var24, + var31 + var25, + var32, + var2.nextFloat() * (float) (Math.PI * 2), + var2.nextLong( + (1625626743376293880L | -1625626743376293080L) + (1625626743376293880L & -1625626743376293080L), + (9192073547034033646L | -9192073547034031946L) + (9192073547034033646L & -9192073547034031946L) + ) + ) + ); + } + } + } + + Vec3 var33 = mc.player != null ? mc.player.getLookAngle() : new Vec3(0.0, 0.0, 1.0); + double var34 = Math.atan2(var33.x, -var33.z) + var2.nextDouble(-Math.PI / 9, Math.PI / 9); + uj var35 = new uj( + var1.getId(), + var3.body().texturePath(), + var10, + System.currentTimeMillis(), + List.of(), + List.of(), + ul.DISINTEGRATE, + var8, + var10, + var12, + var2.nextFloat() * 100.0F, + List.of(), + (boolean)((var4) != 0), + var1.yBodyRot + ); + var35.ashCubes = var15; + var35.grains = new ArrayList<>(); + var35.windX = Math.cos(var34); + var35.windZ = Math.sin(var34); + this.active.put(var1.getId(), var35); + } + + private void renderDisintegrate(uj var1, PoseStack var2, SubmitNodeCollector var3, Camera var4, Vec3 var5, float var6, float var7, long var8) { + float var10 = this.powerSetting.getCurrent(); + float var11 = Mth.clamp(var6 / 0.55F, 0.0F, 1.0F); + int var12 = LightCoordsUtil.getLightCoords(mc.level, BlockPos.containing(var1.centerX, var1.centerY + 1.0, var1.centerZ)); + ThreadLocalRandom var13 = ThreadLocalRandom.current(); + double var14 = var8 / 1000.0; + + for (ug var17 : var1.ashCubes) { + if (!var17.consumed && var11 >= var17.detachThreshold) { + var17.consumed = (boolean)(((1)) != 0); + this.spawnGrains(var1, var17, var10, var13, var8); + } + } + + var3.submitCustomGeometry( + var2, + RenderTypes.entityTranslucent(var1.skin), + (var5x, var6x) -> { + Iterator var7x = null; + ug var8x = null; + float var9 = 0.0F; + int var10x = 0; + float var11x = 0.0F; + float var12x = 0.0F; + float var13x = 0.0F; + int var14x = -1466215515; + + while (true) { + switch (var14x) { + case -1914357204: + var11x = (float)(var8x.baseX - var5.x); + var12x = (float)(var8x.baseY - var5.y); + var13x = (float)(var8x.baseZ - var5.z); + this.drawTexturedCube( + var6x, var5x, var8x, var10x, var12, (boolean)(((0)) != 0), var11x, var12x, var13x + ); + this.drawTexturedCube( + var6x, var5x, var8x, var10x, var12, (boolean)(((1)) != 0), var11x, var12x, var13x + ); + var14x = 886888551; + break; + case -1828706438: + var14x = 886888551; + break; + case -1466215515: + default: + var7x = var1.ashCubes.iterator(); + var14x = 886888551; + break; + case -1284576391: + var11x = 1.0F - Mth.clamp(var9 / 0.07F, 0.0F, 1.0F); + var10x = mixRgb( + 16777215, 13209442, var11x + ) + | -16777216; + var14x = -1914357204; + break; + case -424768255: + return; + case 223251946: + var8x = (ug)var7x.next(); + if (var8x.consumed) { + var14x = -1828706438; + } else { + var14x = 1311698862; + } + break; + case 886888551: + if (var7x.hasNext()) { + var14x = 223251946; + } else { + var14x = -424768255; + } + break; + case 1311698862: + var9 = var8x.detachThreshold - var11; + var10x = -1; + if (var9 < 0.07F) { + var14x = -1284576391; + } else { + var14x = -1914357204; + } + } + } + } + ); + if (!var1.grains.isEmpty()) { + Quaternionf var29 = var4.rotation(); + Vector3f var30 = var29.transform(1.0F, 0.0F, 0.0F, this.scratchRight); + Vector3f var18 = var29.transform(0.0F, 1.0F, 0.0F, this.scratchUp); + float var19 = var30.x; + float var20 = var30.y; + float var21 = var30.z; + float var22 = var18.x; + float var23 = var18.y; + float var24 = var18.z; + + for (un var26 : var1.grains) { + if (!var26.dead) { + long var27 = var8 - var26.bornMs; + if (var27 >= var26.lifeMs) { + var26.dead = (boolean)(((1)) != 0); + } else { + var26.velX = var26.velX + Math.sin(var14 * 3.1 + var26.phase) * 0.5 * var7; + var26.velZ = var26.velZ + Math.cos(var14 * 2.7 + var26.phase) * 0.5 * var7; + var26.velX *= 0.995F; + var26.velY *= 0.995F; + var26.velZ *= 0.995F; + var26.x = var26.x + var26.velX * var7; + var26.y = var26.y + var26.velY * var7; + var26.z = var26.z + var26.velZ * var7; + } + } + } + + var3.submitCustomGeometry( + var2, + arj.positionColor(), + (var10x, var11x) -> { + Iterator var12x = null; + un var13x = null; + long var14x = (2822436483774321291L ^ -2822436483774321291L) + ((2822436483774321291L & -2822436483774321291L) << 1); + float var16 = 0.0F; + float var17x = 0.0F; + int var18x = 0; + int var19x = 0; + float var20x = 0.0F; + float var21x = 0.0F; + float var22x = 0.0F; + float var23x = 0.0F; + float var24x = 0.0F; + float var25 = 0.0F; + float var26x = 0.0F; + float var27x = 0.0F; + float var28 = 0.0F; + float var29x = 0.0F; + float var31 = 0.0F; + int var30x = -180787527; + + while (true) { + switch (var30x) { + case -1963174069: + return; + case -721808206: + var30x = 1058814647; + break; + case -180787527: + default: + var12x = var1.grains.iterator(); + var30x = 1058814647; + break; + case -159438334: + var17x = var31; + var18x = Mth.clamp( + (int)(var17x * 255.0F), + 0, + (141919278 ^ -141919023) + ((141919278 & -141919023) << 1) + ); + if (var18x == 0) { + var30x = -721808206; + } else { + var30x = 35855908; + } + break; + case 35855908: + var19x = var18x << (1643232597 | -1643232573) + (1643232597 & -1643232573) | var13x.rgb; + var20x = var13x.size * (1.0F - var16 * 0.5F); + var21x = (float)(var13x.x - var5.x); + var22x = (float)(var13x.y - var5.y); + var23x = (float)(var13x.z - var5.z); + var24x = var19 * var20x; + var25 = var20 * var20x; + var26x = var21 * var20x; + var27x = var22 * var20x; + var28 = var23 * var20x; + var29x = var24 * var20x; + var11x.addVertex(var21x - var24x - var27x, var22x - var25 - var28, var23x - var26x - var29x).setColor(var19x); + var11x.addVertex(var21x + var24x - var27x, var22x + var25 - var28, var23x + var26x - var29x).setColor(var19x); + var11x.addVertex(var21x + var24x + var27x, var22x + var25 + var28, var23x + var26x + var29x).setColor(var19x); + var11x.addVertex(var21x - var24x + var27x, var22x - var25 + var28, var23x - var26x + var29x).setColor(var19x); + var11x.addVertex(var21x - var24x + var27x, var22x - var25 + var28, var23x - var26x + var29x).setColor(var19x); + var11x.addVertex(var21x + var24x + var27x, var22x + var25 + var28, var23x + var26x + var29x).setColor(var19x); + var11x.addVertex(var21x + var24x - var27x, var22x + var25 - var28, var23x + var26x - var29x).setColor(var19x); + var11x.addVertex(var21x - var24x - var27x, var22x - var25 - var28, var23x - var26x - var29x).setColor(var19x); + var30x = 1058814647; + break; + case 554375088: + var31 = 1.0F; + var30x = -159438334; + break; + case 769512735: + var30x = 1058814647; + break; + case 1058814647: + if (var12x.hasNext()) { + var30x = 1500505528; + } else { + var30x = -1963174069; + } + break; + case 1346782464: + var14x = var8 - var13x.bornMs; + var16 = (float)var14x / (float)var13x.lifeMs; + if (var16 <= 0.45F) { + var30x = 554375088; + } else { + var30x = 1596639747; + } + break; + case 1500505528: + var13x = (un)var12x.next(); + if (var13x.dead) { + var30x = 769512735; + } else { + var30x = 1346782464; + } + break; + case 1596639747: + var31 = 1.0F - (var16 - 0.45F) / 0.55F; + var30x = -159438334; + } + } + } + ); + } + } + + private void spawnGrains(uj var1, ug var2, float var3, ThreadLocalRandom var4, long var5) { + int var7 = 0; + un var8 = null; + double var9 = 0.0; + int var11 = 1011660127; + + while (true) { + switch (var11) { + case -1887405891: + if (var7 < (-1157718428 | 1157718432) + (-1157718428 & 1157718432)) { + var11 = -30238119; + } else { + var11 = 712525916; + } + break; + case -30238119: + var8 = new un(); + var8.x = var2.baseX + var4.nextDouble(-0.08F, 0.08F); + var8.y = var2.baseY + var4.nextDouble(-0.08F, 0.08F); + var8.z = var2.baseZ + var4.nextDouble(-0.08F, 0.08F); + var9 = 1.3F * var3 * var4.nextDouble(0.7, 1.6); + var8.velX = var1.windX * var9 + var4.nextDouble(-0.3, 0.3); + var8.velY = 0.45F * var3 * var4.nextDouble(0.5, 1.5); + var8.velZ = var1.windZ * var9 + var4.nextDouble(-0.3, 0.3); + var8.size = (float)var4.nextDouble(0.015F, 0.045F); + var8.rgb = mixRgb( + 14269588, 8284754, var4.nextFloat() + ); + var8.phase = var4.nextFloat() * (float) (Math.PI * 2); + var8.bornMs = var5; + var8.lifeMs = var4.nextLong( + (-7704123249064192376L ^ 7704123249064193176L) + ((-7704123249064192376L & 7704123249064193176L) << 1), + (-3832801828752211802L | 3832801828752213502L) + (-3832801828752211802L & 3832801828752213502L) + ); + var1.grains.add(var8); + var7++; + var11 = -1887405891; + break; + case 712525916: + return; + case 1011660127: + default: + var7 = 0; + var11 = -1887405891; + } + } + } + + private void drawTexturedCube(VertexConsumer var1, Pose var2, ug var3, int var4, int var5, boolean var6, float var7, float var8, float var9) { + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + float var27 = 0.0F; + float var28 = 0.0F; + float var29 = 0.0F; + int var24 = 81097650; + + while (true) { + switch (var24) { + case -1942884165: + var16 = var28; + if (var6) { + var24 = -1703850865; + } else { + var24 = 732429956; + } + break; + case -1842477701: + var28 = var3.u1; + var24 = -1942884165; + break; + case -1703850865: + var29 = var3.overlayV1; + var24 = 1318572208; + break; + case -1407224033: + var15 = var27; + if (var6) { + var24 = -1178388658; + } else { + var24 = -1842477701; + } + break; + case -1377593187: + var10 = var25; + var11 = var3.halfX + var10; + var12 = var3.halfY + var10; + var13 = var3.halfZ + var10; + if (var6) { + var24 = -1238201562; + } else { + var24 = -240085557; + } + break; + case -1249369664: + var25 = 0.015625F; + var24 = -1377593187; + break; + case -1238201562: + var26 = var3.overlayU0; + var24 = -291836045; + break; + case -1178388658: + var28 = var3.overlayU1; + var24 = -1942884165; + break; + case -1114973004: + var25 = 0.0F; + var24 = -1377593187; + break; + case -291836045: + var14 = var26; + if (var6) { + var24 = 1726893088; + } else { + var24 = 1330811350; + } + break; + case -240085557: + var26 = var3.u0; + var24 = -291836045; + break; + case 81097650: + default: + if (var6) { + var24 = -1249369664; + } else { + var24 = -1114973004; + } + break; + case 732429956: + var29 = var3.v1; + var24 = 1318572208; + break; + case 1318572208: + var17 = var29; + var18 = var7 - var11; + var19 = var7 + var11; + var20 = var8 - var12; + var21 = var8 + var12; + var22 = var9 - var13; + var23 = var9 + var13; + this.quad( + var1, + var2, + var4, + var5, + 0.0F, + 0.0F, + 1.0F, + var18, + var20, + var23, + var19, + var20, + var23, + var19, + var21, + var23, + var18, + var21, + var23, + var14, + var15, + var16, + var17 + ); + this.quad( + var1, + var2, + var4, + var5, + 0.0F, + 0.0F, + -1.0F, + var19, + var20, + var22, + var18, + var20, + var22, + var18, + var21, + var22, + var19, + var21, + var22, + var14, + var15, + var16, + var17 + ); + this.quad( + var1, + var2, + var4, + var5, + 1.0F, + 0.0F, + 0.0F, + var19, + var20, + var23, + var19, + var20, + var22, + var19, + var21, + var22, + var19, + var21, + var23, + var14, + var15, + var16, + var17 + ); + this.quad( + var1, + var2, + var4, + var5, + -1.0F, + 0.0F, + 0.0F, + var18, + var20, + var22, + var18, + var20, + var23, + var18, + var21, + var23, + var18, + var21, + var22, + var14, + var15, + var16, + var17 + ); + this.quad( + var1, + var2, + var4, + var5, + 0.0F, + 1.0F, + 0.0F, + var18, + var21, + var23, + var19, + var21, + var23, + var19, + var21, + var22, + var18, + var21, + var22, + var14, + var15, + var16, + var17 + ); + this.quad( + var1, + var2, + var4, + var5, + 0.0F, + -1.0F, + 0.0F, + var18, + var20, + var22, + var19, + var20, + var22, + var19, + var20, + var23, + var18, + var20, + var23, + var14, + var15, + var16, + var17 + ); + return; + case 1330811350: + var27 = var3.v0; + var24 = -1407224033; + break; + case 1726893088: + var27 = var3.overlayV0; + var24 = -1407224033; + } + } + } + + private static int mixRgb(int var0, int var1, float var2) { + int var3 = Mth.lerpInt( + var2, + var0 >> 16, + var1 >> (-1461035617 | 1461035633) + (-1461035617 & 1461035633) & (1720963239 ^ -1720962984) + ((1720963239 & -1720962984) << 1) + ); + int var4 = Mth.lerpInt( + var2, + var0 >> 8, + var1 >> (-735424528 ^ 735424536) + ((-735424528 & 735424536) << 1) & (-1588760412 ^ 1588760667) + ((-1588760412 & 1588760667) << 1) + ); + int var5 = Mth.lerpInt( + var2, var0 & 255, var1 & (327638557 | -327638302) + (327638557 & -327638302) + ); + return var3 << (-198727883 | 198727899) + (-198727883 & 198727899) | var4 << (-1108156016 | 1108156024) + (-1108156016 & 1108156024) | var5; + } + + private static um[] bodyParts(boolean var0) { + float var1 = 0.0F; + float var2 = 0.0F; + Object var3 = null; + Object var4 = null; + float var6 = 0.0F; + int var5 = -101089148; + + while (true) { + switch (var5) { + case -1368489130: + var6 = 3.0F; + var5 = -499653264; + break; + case -1103423549: + var6 = 4.0F; + var5 = -499653264; + break; + case -499653264: + var1 = var6; + var2 = 4.0F + var1 * 0.5F; + var3 = new um( + var1, + 12.0F, + 4.0F, + 40, + 16, + 40, + 32, + -var2, + 18.0F + ); + var4 = new um( + var1, + 12.0F, + 4.0F, + 32, + 48, + 48, + 48, + var2, + 18.0F + ); + um[] var10000 = new um[6]; + var10000[0] = HEAD; + var10000[1] = BODY; + var10000[2] = (um)var3; + var10000[3] = (um)var4; + var10000[4] = RIGHT_LEG; + var10000[5] = LEFT_LEG; + return var10000; + case -101089148: + default: + if (var0) { + var5 = -1368489130; + } else { + var5 = -1103423549; + } + } + } + } + + private void captureExplosion(AbstractClientPlayer var1) { + ThreadLocalRandom var2 = ThreadLocalRandom.current(); + float var3 = this.powerSetting.getCurrent(); + double var4 = var1.getX(); + double var6 = var1.getY() + var1.getBbHeight() * 0.55F; + double var8 = var1.getZ(); + int var10 = (int)this.sparkCountSetting.getCurrent(); + ArrayList var11 = new ArrayList(var10); + + for (int var12 = 0; var12 < var10; var12++) { + uo var13 = new uo(); + double var14 = var2.nextDouble(Math.PI * 2); + double var16 = var2.nextDouble(-0.25, 1.0); + double var18 = Math.sqrt(Math.max(0.0, 1.0 - var16 * var16)); + double var20 = var3 * var2.nextDouble(2.5, 9.0); + var13.x = var4; + var13.y = var6; + var13.z = var8; + var13.velX = Math.cos(var14) * var18 * var20; + var13.velY = var16 * var20; + var13.velZ = Math.sin(var14) * var18 * var20; + var13.size = (float)var2.nextDouble(0.012, 0.035); + var13.lifeFactor = (float)var2.nextDouble(0.35, 1.0); + var11.add(var13); + } + + long var22 = System.currentTimeMillis(); + uj var23 = new uj( + var1.getId(), + var1.getSkin().body().texturePath(), + var1.getY(), + var22, + List.of(), + var11, + ul.EXPLOSION, + var4, + var6, + var8, + var2.nextFloat() * 100.0F, + List.of(), + (boolean)(((0)) != 0), + 0.0F + ); + if (this.bloodSetting.isEnabled()) { + var23.blood = spawnBlood(var4, var6, var8, var3, var2, var22); + } + + this.active.put(var1.getId(), var23); + } + + private static List spawnBlood(double var0, double var2, double var4, float var6, ThreadLocalRandom var7, long var8) { + ArrayList var10 = null; + int var11 = 0; + uh var12 = null; + double var13 = 0.0; + double var15 = 0.0; + double var17 = 0.0; + double var19 = 0.0; + int var21 = 2133105551; + + while (true) { + switch (var21) { + case -1543456443: + if (var11 < (2107761099 | -2107761051) + (2107761099 & -2107761051)) { + var21 = 1924159408; + } else { + var21 = 1906225017; + } + break; + case 1906225017: + return var10; + case 1924159408: + var12 = new uh(); + var13 = var7.nextDouble(Math.PI * 2); + var15 = var7.nextDouble(-0.35, 1.0); + var17 = Math.sqrt(Math.max(0.0, 1.0 - var15 * var15)); + var19 = var6 * var7.nextDouble(1.5, 7.0); + var12.x = var0; + var12.y = var2; + var12.z = var4; + var12.velX = Math.cos(var13) * var17 * var19; + var12.velY = var15 * var19; + var12.velZ = Math.sin(var13) * var17 * var19; + var12.size = (float)var7.nextDouble(0.03F, 0.085F); + var12.rgb = mixRgb( + 10357515, 4981250, var7.nextFloat() + ); + var12.bornMs = var8; + var12.lifeMs = var7.nextLong( + (4096647034542223884L ^ -4096647034542222984L) + ((4096647034542223884L & -4096647034542222984L) << 1), + (495975230863586671L ^ -495975230863584471L) + ((495975230863586671L & -495975230863584471L) << 1) + ); + var10.add(var12); + var11++; + var21 = -1543456443; + break; + case 2133105551: + default: + var10 = new ArrayList((-1500016743 | 1500016791) + (-1500016743 & 1500016791)); + var11 = 0; + var21 = -1543456443; + } + } + } + + private void captureLightning(AbstractClientPlayer var1) { + ThreadLocalRandom var2 = ThreadLocalRandom.current(); + float var3 = this.powerSetting.getCurrent(); + double var4 = var1.getX(); + double var6 = var1.getY() + var1.getBbHeight() * 0.5F; + double var8 = var1.getZ(); + ArrayList var10 = new ArrayList((-1787580213 ^ 1787580216) + ((-1787580213 & 1787580216) << 1)); + + for (int var11 = 0; var11 < 3; var11++) { + ArrayList var12 = new ArrayList(); + double var13 = var4 + var2.nextDouble(-7.0, 7.0); + double var15 = var8 + var2.nextDouble(-7.0, 7.0); + buildBolt( + var12, + var2, + var13, + var6 + 26.0, + var15, + var4, + var6, + var8, + 6, + 1.0F, + (-599471653 | 599471658) + (-599471653 & 599471658) + ); + var10.add(var12); + } + + int var23 = (int)(this.sparkCountSetting.getCurrent() * 0.7F); + ArrayList var24 = new ArrayList(var23); + + for (int var25 = 0; var25 < var23; var25++) { + uo var14 = new uo(); + double var26 = var2.nextDouble(Math.PI * 2); + double var17 = var2.nextDouble(0.0, 1.0); + double var19 = Math.sqrt(Math.max(0.0, 1.0 - var17 * var17)); + double var21 = var3 * var2.nextDouble(1.5, 6.0); + var14.x = var4; + var14.y = var6; + var14.z = var8; + var14.velX = Math.cos(var26) * var19 * var21; + var14.velY = var17 * var21; + var14.velZ = Math.sin(var26) * var19 * var21; + var14.size = (float)var2.nextDouble(0.01, 0.03); + var14.lifeFactor = (float)var2.nextDouble(0.2, 0.6); + var24.add(var14); + } + + if (mc.level != null) { + mc.level.setSkyFlashTime((-337133234 ^ 337133236) + ((-337133234 & 337133236) << 1)); + } + + if (this.thunderSetting.isEnabled() && mc.level != null) { + mc.level + .playLocalSound( + var4, + var6, + var8, + SoundEvents.LIGHTNING_BOLT_THUNDER, + SoundSource.WEATHER, + 1.8F, + 0.8F + var2.nextFloat() * 0.2F, + (boolean)((((-1140986346 ^ 1140986346) + ((-1140986346 & 1140986346) << 1)) + ) != 0)); + mc.level + .playLocalSound( + var4, + var6, + var8, + SoundEvents.LIGHTNING_BOLT_IMPACT, + SoundSource.WEATHER, + 1.8F, + 0.5F + var2.nextFloat() * 0.2F, + (boolean)((((560060121 | -560060121) + (560060121 & -560060121)) + ) != 0)); + } + + this.active + .put( + var1.getId(), + new uj( + var1.getId(), + var1.getSkin().body().texturePath(), + var1.getY(), + System.currentTimeMillis(), + List.of(), + var24, + ul.LIGHTNING, + var4, + var6, + var8, + var2.nextFloat() * 100.0F, + var10, + (boolean)(((var1.getSkin().model() == PlayerModelType.SLIM + ? 1: (-980127165 ^ 980127165) + ((-980127165 & 980127165) << 1))) != 0), + var1.yBodyRot + ) + ); + } + + private static void buildBolt( + List var0, ThreadLocalRandom var1, double var2, double var4, double var6, double var8, double var10, double var12, int var14, float var15, int var16 + ) { + int var17 = 0; + float[] var18 = null; + int var19 = 0; + int var20 = 0; + int var21 = 0; + double var22 = 0.0; + double var24 = 0.0; + double var26 = 0.0; + double var28 = 0.0; + double var30 = 0.0; + double var32 = 0.0; + double var34 = 0.0; + double var36 = 0.0; + int var38 = 144676105; + + while (true) { + switch (var38) { + case -1084303350: + if (var20 < var19) { + var38 = 194513161; + } else { + var38 = -20707783; + } + break; + case -641819034: + var19 = (-1354275920 | 1354275921) + (-1354275920 & 1354275921) + var1.nextInt(var16); + var20 = 0; + var38 = -1084303350; + break; + case -617383269: + return; + case -536519203: + if (var14 < (1070283801 ^ -1070283798) + ((1070283801 & -1070283798) << 1)) { + var38 = -617383269; + } else { + var38 = -641819034; + } + break; + case -20707783: + return; + case 144676105: + default: + var17 = ((-1041123815 | 1041123816) + (-1041123815 & 1041123816) << var14) + 1; + var18 = new float[var17 * (3)]; + var18[0] = (float)var2; + var18[1] = (float)var4; + var18[2] = (float)var6; + var18[(var17 - ((481822700 | -481822699) + (481822700 & -481822699))) * ((1315762054 | -1315762051) + (1315762054 & -1315762051))] = (float)var8; + var18[(var17 - ((1373820501 | -1373820500) + (1373820501 & -1373820500))) * ((584394862 | -584394859) + (584394862 & -584394859)) + + (1158902428 ^ -1158902427) + + ((1158902428 & -1158902427) << 1)] = (float)var10; + var18[(var17 - ((853234068 ^ -853234067) + ((853234068 & -853234067) << 1))) * ((-682648368 | 682648371) + (-682648368 & 682648371)) + + (-1247719323 | 1247719325) + + (-1247719323 & 1247719325)] = (float)var12; + displaceMidpoints( + var18, + 0, + var17 - (1), + var1, + (float)Math.sqrt(squaredDistance(var2, var4, var6, var8, var10, var12)) * 0.16F + ); + var0.add(new ui(var18, var15)); + if (var16 > 0) { + var38 = -536519203; + } else { + var38 = -617383269; + } + break; + case 194513161: + var21 = var17 / ((315736382 ^ -315736378) + ((315736382 & -315736378) << 1)) + + var1.nextInt(var17 / ((-1578003988 | 1578003990) + (-1578003988 & 1578003990))); + var22 = var18[var21 * (3)]; + var24 = var18[var21 * 4]; + var26 = var18[var21 * 5]; + var28 = Math.sqrt(squaredDistance(var22, var24, var26, var8, var10, var12)) * var1.nextDouble(0.25, 0.5); + var30 = var1.nextDouble(Math.PI * 2); + var32 = var22 + Math.cos(var30) * var28 * 0.8; + var34 = var24 - var28 * var1.nextDouble(0.5, 1.0); + var36 = var26 + Math.sin(var30) * var28 * 0.8; + buildBolt( + var0, + var1, + var22, + var24, + var26, + var32, + var34, + var36, + var14 - (2), + var15 * 0.45F, + var16 - ((586201319 | -586201317) + (586201319 & -586201317)) + ); + var20++; + var38 = -1084303350; + } + } + } + + private static void displaceMidpoints(float[] var0, int var1, int var2, ThreadLocalRandom var3, float var4) { + int var5 = 0; + int var6 = -1283724687; + + while (true) { + switch (var6) { + case -1283724687: + default: + if (var2 - var1 < (1977379867 | -1977379865) + (1977379867 & -1977379865)) { + var6 = 1457811875; + } else { + var6 = 921510652; + } + break; + case 921510652: + var5 = (var1 + var2) / (2); + var0[var5 * (3)] = ( + var0[var1 * (3)] + + var0[var2 * (3)] + ) + * 0.5F + + (float)var3.nextDouble(-var4, var4); + var0[var5 * 4] = ( + var0[var1 * 4] + + var0[var2 * 4] + ) + * 0.5F + + (float)var3.nextDouble(-var4, var4) * 0.4F; + var0[var5 * 5] = ( + var0[var1 * 5] + + var0[var2 * 5] + ) + * 0.5F + + (float)var3.nextDouble(-var4, var4); + displaceMidpoints(var0, var1, var5, var3, var4 * 0.55F); + displaceMidpoints(var0, var5, var2, var3, var4 * 0.55F); + return; + case 1457811875: + return; + } + } + } + + private static double squaredDistance(double var0, double var2, double var4, double var6, double var8, double var10) { + double var12 = var6 - var0; + double var14 = var8 - var2; + double var16 = var10 - var4; + return var12 * var12 + var14 * var14 + var16 * var16; + } + + private void simulate(uj var1, float var2, boolean var3, boolean var4) { + Iterator var5 = null; + uk var6 = null; + float var7 = 0.0F; + double var8 = 0.0; + int var10 = -1132464362; + + while (true) { + switch (var10) { + case -2097416690: + var6.x = var6.x + var6.velX * var2; + var6.y = var6.y + var6.velY * var2; + var6.z = var6.z + var6.velZ * var2; + var6.angle = var6.angle + var6.angularSpeed * var2; + if (var3) { + var10 = 514579869; + } else { + var10 = -784073605; + } + break; + case -1979922584: + var6.velY -= 14.0F * var2; + var10 = -2097416690; + break; + case -1843268729: + if (var5.hasNext()) { + var10 = 945281574; + } else { + var10 = -1002388695; + } + break; + case -1768723718: + if (var6.velY < 0.0) { + var10 = -1087351314; + } else { + var10 = -784073605; + } + break; + case -1132464362: + default: + var5 = var1.fragments.iterator(); + var10 = -1843268729; + break; + case -1087351314: + var6.y = var8; + if (var4) { + var10 = 1155338524; + } else { + var10 = -705415806; + } + break; + case -1002388695: + return; + case -784073605: + var10 = -1843268729; + break; + case -705415806: + var6.velX = 0.0; + var6.velY = 0.0; + var6.velZ = 0.0; + var6.angularSpeed = 0.0F; + var10 = -784073605; + break; + case 514579869: + var7 = Math.min(var6.part.heightPx(), Math.min(var6.part.widthPx(), var6.part.depthPx())) * 0.0625F * 0.5F; + var8 = var1.groundY + var7; + if (var6.y < var8) { + var10 = -1768723718; + } else { + var10 = -784073605; + } + break; + case 945281574: + var6 = (uk)var5.next(); + if (var3) { + var10 = -1979922584; + } else { + var10 = -2097416690; + } + break; + case 1155338524: + var6.velY = -var6.velY * 0.45F; + var6.velX *= 0.6F; + var6.velZ *= 0.6F; + var6.angularSpeed *= 0.6F; + var10 = -784073605; + } + } + } + + private void render(uj var1, PoseStack var2, SubmitNodeCollector var3, Vec3 var4, float var5, boolean var6) { + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = 0; + int var10 = 0; + float var11 = 0.0F; + RenderType var12 = null; + Iterator var13 = null; + uk var14 = null; + int var15 = 0; + um var16 = null; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + int var20 = 1997060479; + + while (true) { + switch (var20) { + case -1924615581: + if (var13.hasNext()) { + var20 = -710837784; + } else { + var20 = 2068599985; + } + break; + case -1643808984: + var22 = 1.0F - (var5 - var7) / (1.0F - var7); + var20 = 2019082392; + break; + case -1327348693: + var21 = 0.3F; + var20 = 211978682; + break; + case -1248840851: + var22 = 1.0F; + var20 = 2019082392; + break; + case -925815487: + var10 = var9 << 16777215; + if (var6) { + var20 = 2144004382; + } else { + var20 = 837355998; + } + break; + case -736731834: + return; + case -710837784: + var14 = (uk)var13.next(); + var15 = LightCoordsUtil.getLightCoords(mc.level, BlockPos.containing(var14.x, var14.y, var14.z)); + var2.pushPose(); + var2.translate(var14.x - var4.x, var14.y - var4.y, var14.z - var4.z); + var2.mulPose(this.scratchQuat.rotationAxis(var14.angle, var14.axisX, var14.axisY, var14.axisZ)); + var2.scale(var11, var11, var11); + var16 = var14.part; + var17 = var16.widthPx() * 0.0625F * 0.5F; + var18 = var16.heightPx() * 0.0625F * 0.5F; + var19 = var16.depthPx() * 0.0625F * 0.5F; + var3.submitCustomGeometry( + var2, + var12, + (var7x, var8x) -> { + this.drawBox(var8x, var7x, var17, var18, var19, var16.u(), var16.v(), var16.widthPx(), var16.heightPx(), var16.depthPx(), var10, var15); + float var9x = 0.015625F; + this.drawBox( + var8x, + var7x, + var17 + var9x, + var18 + var9x, + var19 + var9x, + var16.overlayU(), + var16.overlayV(), + var16.widthPx(), + var16.heightPx(), + var16.depthPx(), + var10, + var15 + ); + } + ); + var2.popPose(); + var20 = -1924615581; + break; + case 211978682: + var7 = var21; + if (var5 <= var7) { + var20 = -1248840851; + } else { + var20 = -1643808984; + } + break; + case 837355998: + var23 = 1.0F - var5 * 0.35F; + var20 = 1263179575; + break; + case 1263179575: + var11 = var23; + var12 = RenderTypes.entityTranslucent(var1.skin); + var13 = var1.fragments.iterator(); + var20 = -1924615581; + break; + case 1317498561: + var21 = 0.6F; + var20 = 211978682; + break; + case 1997060479: + default: + if (var6) { + var20 = 1317498561; + } else { + var20 = -1327348693; + } + break; + case 2019082392: + var8 = var22; + var9 = Mth.clamp( + (int)(var8 * 255.0F), 0, (-199476239 | 199476494) + (-199476239 & 199476494) + ); + if (var9 == 0) { + var20 = -736731834; + } else { + var20 = -925815487; + } + break; + case 2068599985: + return; + case 2144004382: + var23 = 1.0F; + var20 = 1263179575; + } + } + } + + private void drawBox( + VertexConsumer var1, Pose var2, float var3, float var4, float var5, int var6, int var7, float var8, float var9, float var10, int var11, int var12 + ) { + float var13 = var6; + float var14 = var6 + var10; + float var15 = var6 + var10 + var8; + float var16 = var6 + var10 + var8 + var10; + float var17 = var6 + 2.0F * var10 + 2.0F * var8; + float var18 = var7; + float var19 = var7 + var10; + float var20 = var7 + var10 + var9; + this.quad( + var1, var2, var11, var12, 0.0F, 0.0F, 1.0F, -var3, -var4, var5, var3, -var4, var5, var3, var4, var5, -var3, var4, var5, var15, var19, var16, var20 + ); + this.quad( + var1, + var2, + var11, + var12, + 0.0F, + 0.0F, + -1.0F, + var3, + -var4, + -var5, + -var3, + -var4, + -var5, + -var3, + var4, + -var5, + var3, + var4, + -var5, + var14, + var19, + var15, + var20 + ); + this.quad( + var1, var2, var11, var12, 1.0F, 0.0F, 0.0F, var3, -var4, var5, var3, -var4, -var5, var3, var4, -var5, var3, var4, var5, var16, var19, var17, var20 + ); + this.quad( + var1, + var2, + var11, + var12, + -1.0F, + 0.0F, + 0.0F, + -var3, + -var4, + -var5, + -var3, + -var4, + var5, + -var3, + var4, + var5, + -var3, + var4, + -var5, + var13, + var19, + var14, + var20 + ); + this.quad( + var1, + var2, + var11, + var12, + 0.0F, + 1.0F, + 0.0F, + -var3, + var4, + var5, + var3, + var4, + var5, + var3, + var4, + -var5, + -var3, + var4, + -var5, + var14, + var18, + var14 + var8, + var19 + ); + this.quad( + var1, + var2, + var11, + var12, + 0.0F, + -1.0F, + 0.0F, + -var3, + -var4, + -var5, + var3, + -var4, + -var5, + var3, + -var4, + var5, + -var3, + -var4, + var5, + var14 + var8, + var18, + var14 + 2.0F * var8, + var19 + ); + } + + private void quad( + VertexConsumer var1, + Pose var2, + int var3, + int var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13, + float var14, + float var15, + float var16, + float var17, + float var18, + float var19, + float var20, + float var21, + float var22, + float var23 + ) { + float var24 = var20 / 64.0F; + float var25 = var21 / 64.0F; + float var26 = var22 / 64.0F; + float var27 = var23 / 64.0F; + var1.addVertex(var2, var8, var9, var10) + .setColor(var3) + .setUv(var24, var27) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var4) + .setNormal(var2, var5, var6, var7); + var1.addVertex(var2, var11, var12, var13) + .setColor(var3) + .setUv(var26, var27) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var4) + .setNormal(var2, var5, var6, var7); + var1.addVertex(var2, var14, var15, var16) + .setColor(var3) + .setUv(var26, var25) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var4) + .setNormal(var2, var5, var6, var7); + var1.addVertex(var2, var17, var18, var19) + .setColor(var3) + .setUv(var24, var25) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(var4) + .setNormal(var2, var5, var6, var7); + } + + private void simulateSparks(uj var1, float var2) { + Iterator var3 = null; + uo var4 = null; + int var5 = -115209892; + + while (true) { + switch (var5) { + case -2070491612: + var4.dead = (boolean)(((1)) != 0); + var5 = 866197931; + break; + case -1401839042: + if (var4.velY < 0.0) { + var5 = -2070491612; + } else { + var5 = 866197931; + } + break; + case -1075382959: + return; + case -661840130: + var4 = (uo)var3.next(); + if (var4.dead) { + var5 = 1565177134; + } else { + var5 = 1329319585; + } + break; + case -115209892: + default: + var3 = var1.sparks.iterator(); + var5 = 420053562; + break; + case 420053562: + if (var3.hasNext()) { + var5 = -661840130; + } else { + var5 = -1075382959; + } + break; + case 866197931: + var5 = 420053562; + break; + case 1329319585: + var4.velY -= 9.0F * var2; + var4.velX *= 0.985F; + var4.velY *= 0.985F; + var4.velZ *= 0.985F; + var4.x = var4.x + var4.velX * var2; + var4.y = var4.y + var4.velY * var2; + var4.z = var4.z + var4.velZ * var2; + if (var4.y < var1.groundY + 0.02) { + var5 = -1401839042; + } else { + var5 = 866197931; + } + break; + case 1565177134: + var5 = 420053562; + } + } + } + + private void renderExplosion(uj var1, PoseStack var2, SubmitNodeCollector var3, Camera var4, Vec3 var5, float var6, long var7, long var9) { + int var11 = this.blastTint(ul.EXPLOSION); + this.renderBlood(var1, var2, var3, var4, var5, var9); + var3.submitCustomGeometry(var2, arj.glow(), (var5x, var6x) -> this.renderSparks(var1, var6x, var5, var6, var11)); + this.renderBlastCard(var1, var4, var5, var6, var7, 2.3F * this.powerSetting.getCurrent(), var11); + } + + private void simulateBlood(uj var1, float var2, long var3) { + Iterator var5 = null; + uh var6 = null; + int var7 = 157183077; + + while (true) { + switch (var7) { + case -894883564: + var6 = (uh)var5.next(); + if (!var6.dead) { + var7 = 1374070079; + } else { + var7 = -603351495; + } + break; + case -603351495: + if (var5.hasNext()) { + var7 = -894883564; + } else { + var7 = 1663247722; + } + break; + case -495423587: + var6.landed = (boolean)(((1)) != 0); + var6.y = var1.groundY + 0.02F; + var6.velX = 0.0; + var6.velY = 0.0; + var6.velZ = 0.0; + var7 = -268235130; + break; + case -268235130: + var7 = -603351495; + break; + case 19541698: + var6.velY -= 16.0F * var2; + var6.velX *= 0.99F; + var6.velY *= 0.99F; + var6.velZ *= 0.99F; + var6.x = var6.x + var6.velX * var2; + var6.y = var6.y + var6.velY * var2; + var6.z = var6.z + var6.velZ * var2; + if (var6.y <= var1.groundY + 0.02F) { + var7 = 1856673721; + } else { + var7 = -268235130; + } + break; + case 157183077: + default: + var5 = var1.blood.iterator(); + var7 = -603351495; + break; + case 1374070079: + if (var6.landed) { + var7 = 1583046268; + } else { + var7 = 19541698; + } + break; + case 1583046268: + var7 = -603351495; + break; + case 1663247722: + return; + case 1856673721: + if (var6.velY < 0.0) { + var7 = -495423587; + } else { + var7 = -268235130; + } + } + } + } + + private void renderBlood(uj var1, PoseStack var2, SubmitNodeCollector var3, Camera var4, Vec3 var5, long var6) { + Quaternionf var8 = null; + Vector3f var9 = null; + Vector3f var10 = null; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + Iterator var17 = null; + uh var18 = null; + int var19 = 1710949676; + + while (true) { + switch (var19) { + case -811091297: + var18 = (uh)var17.next(); + if (!var18.dead) { + var19 = 1921622765; + } else { + var19 = 203997372; + } + break; + case -209392979: + return; + case 203997372: + var19 = 354184851; + break; + case 354184851: + if (var17.hasNext()) { + var19 = -811091297; + } else { + var19 = 1921332157; + } + break; + case 789134639: + var8 = var4.rotation(); + var9 = var8.transform(1.0F, 0.0F, 0.0F, this.scratchRight); + var10 = var8.transform(0.0F, 1.0F, 0.0F, this.scratchUp); + var11 = var9.x; + var12 = var9.y; + var13 = var9.z; + var14 = var10.x; + var15 = var10.y; + var16 = var10.z; + var17 = var1.blood.iterator(); + var19 = 354184851; + break; + case 1498031358: + var18.dead = (boolean)(((1)) != 0); + var19 = 203997372; + break; + case 1710949676: + default: + if (var1.blood.isEmpty()) { + var19 = -209392979; + } else { + var19 = 789134639; + } + break; + case 1921332157: + var3.submitCustomGeometry( + var2, + arj.positionColor(), + (var10x, var11x) -> { + Iterator var12x = null; + uh var13x = null; + long var14x = (-4938245354210173187L ^ 4938245354210173187L) + ((-4938245354210173187L & 4938245354210173187L) << 1); + float var16x = 0.0F; + float var17x = 0.0F; + int var18x = 0; + int var19x = 0; + float var20x = 0.0F; + float var21x = 0.0F; + float var22x = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + float var27 = 0.0F; + float var28 = 0.0F; + float var29 = 0.0F; + float var30 = 0.0F; + float var31 = 0.0F; + float var33 = 0.0F; + int var32 = -16688609; + + while (true) { + switch (var32) { + case -1883366950: + var33 = 1.0F - (var16x - 0.55F) / 0.45F; + var32 = -1794699847; + break; + case -1794699847: + var17x = var33; + var18x = Mth.clamp( + (int)(var17x * 255.0F), + 0, + (1381926458 | -1381926203) + (1381926458 & -1381926203) + ); + if (var18x == 0) { + var32 = -1661105782; + } else { + var32 = -279827221; + } + break; + case -1661105782: + var32 = -907190096; + break; + case -1189369638: + var13x = (uh)var12x.next(); + if (var13x.dead) { + var32 = 220830959; + } else { + var32 = 1172131639; + } + break; + case -1144494441: + var23 = (float)(var13x.velX * 0.03F); + var24 = (float)(var13x.velY * 0.03F); + var25 = (float)(var13x.velZ * 0.03F); + var26 = var11 * var13x.size; + var27 = var12 * var13x.size; + var28 = var13 * var13x.size; + var29 = var14 * var13x.size + var23; + var30 = var15 * var13x.size + var24; + var31 = var16 * var13x.size + var25; + emitDoubleSidedQuad( + var11x, + var19x, + var20x - var26 - var29, + var21x - var27 - var30, + var22x - var28 - var31, + var20x + var26 - var29, + var21x + var27 - var30, + var22x + var28 - var31, + var20x + var26 + var29, + var21x + var27 + var30, + var22x + var28 + var31, + var20x - var26 + var29, + var21x - var27 + var30, + var22x - var28 + var31 + ); + var32 = -907190096; + break; + case -907190096: + if (var12x.hasNext()) { + var32 = -1189369638; + } else { + var32 = 1701766248; + } + break; + case -279827221: + var19x = var18x << (1534275263 | -1534275239) + (1534275263 & -1534275239) | var13x.rgb; + var20x = (float)(var13x.x - var5.x); + var21x = (float)(var13x.y - var5.y); + var22x = (float)(var13x.z - var5.z); + if (var13x.landed) { + var32 = 670100464; + } else { + var32 = -1144494441; + } + break; + case -16688609: + default: + var12x = var1.blood.iterator(); + var32 = -907190096; + break; + case 220830959: + var32 = -907190096; + break; + case 385474865: + var33 = 1.0F; + var32 = -1794699847; + break; + case 670100464: + var23 = var13x.size * 2.4F; + emitDoubleSidedQuad( + var11x, + var19x, + var20x - var23, + var21x, + var22x - var23, + var20x + var23, + var21x, + var22x - var23, + var20x + var23, + var21x, + var22x + var23, + var20x - var23, + var21x, + var22x + var23 + ); + var32 = -907190096; + break; + case 1172131639: + var14x = var6 - var13x.bornMs; + var16x = (float)var14x / (float)var13x.lifeMs; + if (var16x <= 0.55F) { + var32 = 385474865; + } else { + var32 = -1883366950; + } + break; + case 1701766248: + return; + } + } + } + ); + return; + case 1921622765: + if (var6 - var18.bornMs >= var18.lifeMs) { + var19 = 1498031358; + } else { + var19 = 203997372; + } + } + } + } + + private static void emitDoubleSidedQuad( + VertexConsumer var0, + int var1, + float var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13 + ) { + var0.addVertex(var2, var3, var4).setColor(var1); + var0.addVertex(var5, var6, var7).setColor(var1); + var0.addVertex(var8, var9, var10).setColor(var1); + var0.addVertex(var11, var12, var13).setColor(var1); + var0.addVertex(var11, var12, var13).setColor(var1); + var0.addVertex(var8, var9, var10).setColor(var1); + var0.addVertex(var5, var6, var7).setColor(var1); + var0.addVertex(var2, var3, var4).setColor(var1); + } + + private void renderLightning(uj var1, PoseStack var2, SubmitNodeCollector var3, Camera var4, Vec3 var5, float var6, long var7, long var9) { + int var11 = this.blastTint(ul.LIGHTNING); + var3.submitCustomGeometry(var2, arj.glow(), (var7x, var8) -> { + this.renderSparks(var1, var8, var5, var6, var11); + this.renderBolt(var1, var8, var5, var11, var9); + }); + this.renderSoul(var1, var2, var3, var5, var6); + this.renderBlastCard(var1, var4, var5, Math.min(1.0F, var6 * 1.35F), var7, 1.7F * this.powerSetting.getCurrent(), var11); + } + + private void renderSoul(uj var1, PoseStack var2, SubmitNodeCollector var3, Vec3 var4, float var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 0; + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = 0; + int var14 = 0; + float var15 = 0.0F; + RenderType var16 = null; + um[] var17 = null; + int var18 = 0; + int var19 = 0; + um var20 = null; + int var21 = 968585710; + + while (true) { + switch (var21) { + case -1891870914: + return; + case -1882491571: + return; + case 193544183: + var11 = (1.0F - (1.0F - var6) * (1.0F - var6)) * 3.5F; + var12 = Mth.lerp(var6, 1.0F, 0.85F); + var13 = var10 << 11128831; + var14 = 15728880; + var15 = var9; + var3.submitCustomGeometry( + var2, + arj.glow(), + (var5x, var6x) -> { + int var7x = 0; + float var8x = 0.0F; + float var9x = 0.0F; + float var10x = 0.0F; + float var11x = 0.0F; + double var12x = 0.0; + double var14x = 0.0; + double var16x = 0.0; + float var18x = 0.0F; + float var19x = 0.0F; + float var20x = 0.0F; + int var21x = 0; + int var22x = 0; + int var23x = -1628896683; + + while (true) { + switch (var23x) { + case -1628896683: + default: + var7x = 0; + var23x = 444285595; + break; + case -1036061932: + return; + case 147398082: + var8x = var1.seed + var7x * 2.399963F; + var9x = (var7x / 10.0F + var6 * 0.8F) % 1.0F; + var10x = var8x + var6 * 1.6F * (float) (Math.PI * 2); + var11x = 0.45F + 0.2F * Mth.sin(var8x * 3.0F + var6 * 4.0F); + var12x = var1.centerX + Mth.cos(var10x) * var11x; + var14x = var1.groundY + var11 * 0.6F + var9x * 2.2F; + var16x = var1.centerZ + Mth.sin(var10x) * var11x; + var18x = -Mth.sin(var10x) * 0.25F; + var19x = Mth.cos(var10x) * 0.25F; + var20x = Mth.clamp(var15 * (1.0F - var9x) * 1.6F, 0.0F, 1.0F); + var21x = withAlphaTint(11128831, var20x); + var22x = withAlphaTint(11128831, var20x * 0.1F); + emitBoltSegment( + var6x, + var12x - var4.x, + var14x - var4.y, + var16x - var4.z, + var12x + var18x - var4.x, + var14x + 0.05 - var4.y, + var16x + var19x - var4.z, + 0.045F, + var21x, + var22x + ); + var7x++; + var23x = 444285595; + break; + case 444285595: + if (var7x < (749454391 | -749454381) + (749454391 & -749454381)) { + var23x = 147398082; + } else { + var23x = -1036061932; + } + } + } + } + ); + var16 = RenderTypes.entityTranslucent(var1.skin); + var2.pushPose(); + var2.translate(var1.centerX - var4.x, var1.groundY + var11 - var4.y, var1.centerZ - var4.z); + var2.mulPose(this.scratchQuat.rotationY((float)Math.toRadians(-var1.bodyYaw) + (float) Math.PI)); + var2.translate(0.0F, 0.9F, 0.0F); + var2.scale(var12, var12, var12); + var2.translate(0.0F, -0.9F, 0.0F); + var17 = bodyParts(var1.slim); + var18 = var17.length; + var19 = 0; + var21 = 552003011; + break; + case 552003011: + if (var19 < var18) { + var21 = 1245765388; + } else { + var21 = 576298954; + } + break; + case 576298954: + var2.popPose(); + return; + case 968585710: + default: + if (var5 <= 0.22F) { + var21 = -1891870914; + } else { + var21 = 1924678350; + } + break; + case 1245765388: + var20 = var17[var19]; + var2.pushPose(); + var2.translate(var20.centerXPx() * 0.0625F, var20.centerYPx() * 0.0625F, 0.0F); + var3.submitCustomGeometry( + var2, + var16, + (var4x, var5x) -> this.drawBox( + var5x, + var4x, + var20.widthPx() * 0.0625F * 0.5F, + var20.heightPx() * 0.0625F * 0.5F, + var20.depthPx() * 0.0625F * 0.5F, + var20.u(), + var20.v(), + var20.widthPx(), + var20.heightPx(), + var20.depthPx(), + var13, + var14 + ) + ); + var2.popPose(); + var19++; + var21 = 552003011; + break; + case 1924678350: + var6 = (var5 - 0.22F) / 0.78F; + var7 = Mth.clamp(var6 / 0.18F, 0.0F, 1.0F); + var8 = 1.0F - Mth.clamp((var6 - 0.6F) / 0.39999998F, 0.0F, 1.0F); + var9 = 0.38F * var7 * var8; + var10 = Mth.clamp( + (int)(var9 * 255.0F), 0, (826804108 ^ -826803853) + ((826804108 & -826803853) << 1) + ); + if (var10 == 0) { + var21 = -1882491571; + } else { + var21 = 193544183; + } + } + } + } + + private void renderBolt(uj var1, VertexConsumer var2, Vec3 var3, int var4, long var5) { + long var7 = var5 - var1.startMillis; + float var9 = 0.0F; + int var10 = 0; + + for (int var11 = 0; var11 < STROBE_STARTS_MS.length; var11++) { + if (var7 >= STROBE_STARTS_MS[var11]) { + var9 += STROBE_AMPLITUDES[var11] * (float)Math.exp((float)(-(var7 - STROBE_STARTS_MS[var11])) / 55.0F); + var10 = var11; + } + } + + var9 = Math.min(1.0F, var9); + if (!(var9 < 0.02F) && !var1.boltVariants.isEmpty()) { + for (ui var12 : var1.boltVariants.get(var10 % var1.boltVariants.size())) { + float var13 = 0.3F * var12.intensity * (0.7F + 0.3F * var9); + float var14 = 0.045F * Math.max(0.4F, var12.intensity); + int var15 = withAlphaTint(var4, 0.3F * var9 * var12.intensity); + int var16 = withAlphaTint(16777215, var9 * Math.min(1.0F, var12.intensity * 1.3F)); + int var17 = var12.points.length / 2; + + for (int var18 = 0; var18 < var17; var18++) { + double var19 = var12.points[var18 * (3)] - var3.x; + double var21 = var12.points[var18 * 4] + - var3.y; + double var23 = var12.points[var18 * 5] + - var3.z; + double var25 = var12.points[(var18 + (-176658300 ^ 176658301) + ((-176658300 & 176658301) << 1)) + * ((1941777564 ^ -1941777561) + ((1941777564 & -1941777561) << 1))] + - var3.x; + double var27 = var12.points[(var18 + (96801209 | -96801208) + (96801209 & -96801208)) * ((342586412 | -342586409) + (342586412 & -342586409)) + + (1478238589 | -1478238588) + + (1478238589 & -1478238588)] + - var3.y; + double var29 = var12.points[(var18 + (879549372 ^ -879549371) + ((879549372 & -879549371) << 1)) + * ((402756889 | -402756886) + (402756889 & -402756886)) + + (-2060935563 ^ 2060935565) + + ((-2060935563 & 2060935565) << 1)] + - var3.z; + emitBoltSegment(var2, var19, var21, var23, var25, var27, var29, var13, var15, var15); + emitBoltSegment(var2, var19, var21, var23, var25, var27, var29, var14, var16, var16); + } + } + } + } + + private static void emitBoltSegment( + VertexConsumer var0, double var1, double var3, double var5, double var7, double var9, double var11, float var13, int var14, int var15 + ) { + double var16 = 0.0; + double var18 = 0.0; + double var20 = 0.0; + double var22 = 0.0; + double var24 = 0.0; + double var26 = 0.0; + double var28 = 0.0; + int var30 = -542429238; + + while (true) { + switch (var30) { + case -542429238: + default: + var16 = var7 - var1; + var18 = var9 - var3; + var20 = var11 - var5; + var22 = var18 * -var5 - var20 * -var3; + var24 = var20 * -var1 - var16 * -var5; + var26 = var16 * -var3 - var18 * -var1; + var28 = Math.sqrt(var22 * var22 + var24 * var24 + var26 * var26); + if (var28 < 1.0E-6) { + var30 = 209435080; + } else { + var30 = -27555501; + } + break; + case -27555501: + var22 = var22 / var28 * var13; + var24 = var24 / var28 * var13; + var26 = var26 / var28 * var13; + var30 = 1480428589; + break; + case 209435080: + var22 = var13; + var24 = 0.0; + var26 = 0.0; + var30 = 1480428589; + break; + case 1480428589: + var0.addVertex((float)(var1 + var22), (float)(var3 + var24), (float)(var5 + var26)).setColor(var14); + var0.addVertex((float)(var1 - var22), (float)(var3 - var24), (float)(var5 - var26)).setColor(var14); + var0.addVertex((float)(var7 - var22), (float)(var9 - var24), (float)(var11 - var26)).setColor(var15); + var0.addVertex((float)(var7 + var22), (float)(var9 + var24), (float)(var11 + var26)).setColor(var15); + var0.addVertex((float)(var7 + var22), (float)(var9 + var24), (float)(var11 + var26)).setColor(var15); + var0.addVertex((float)(var7 - var22), (float)(var9 - var24), (float)(var11 - var26)).setColor(var15); + var0.addVertex((float)(var1 - var22), (float)(var3 - var24), (float)(var5 - var26)).setColor(var14); + var0.addVertex((float)(var1 + var22), (float)(var3 + var24), (float)(var5 + var26)).setColor(var14); + return; + } + } + } + + private static int withAlphaTint(int var0, float var1) { + int var2 = Mth.clamp( + (int)(var1 * 255.0F), 0, (1577760356 | -1577760101) + (1577760356 & -1577760101) + ); + return var2 << (-1069306011 ^ 1069306035) + ((-1069306011 & 1069306035) << 1) | var0 & 16777215; + } + + private void renderBlastCard(uj var1, Camera var2, Vec3 var3, float var4, long var5, float var7, int var8) { + atd var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + Quaternionf var15 = null; + Object var16 = null; + Object var17 = null; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + BufferBuilder var21 = null; + int var22 = -1423033705; + + while (true) { + switch (var22) { + case -1542265142: + var10 = var1.seed + var4 * ((float)var5 / 1000.0F); + var11 = (var8 >> (825316488 | -825316472) + (825316488 & -825316472) & (-133333496 ^ 133333751) + ((-133333496 & 133333751) << 1)) / 255.0F; + var12 = (var8 >> (-178810368 ^ 178810376) + ((-178810368 & 178810376) << 1) & (-1549206011 | 1549206266) + (-1549206011 & 1549206266)) / 255.0F; + var13 = (var8 & (184466203 ^ -184465948) + ((184466203 & -184465948) << 1)) / 255.0F; + var9.use(); + if (var9 != this.cachedBlastProgram) { + var22 = 1533616404; + } else { + var22 = -1400140989; + } + break; + case -1423033705: + default: + var9 = atb.deathBlastProgram; + if (var9 == null) { + var22 = 1636717623; + } else { + var22 = -1542265142; + } + break; + case -1400140989: + this.blastResolution.set(mc.getWindow().getWidth(), mc.getWindow().getHeight()); + this.blastTime.set(var10); + this.blastProgress.set(var4); + this.blastTintColor.set(var11, var12, var13); + this.blastFade.set(1.0F); + var14 = var7; + var15 = var2.rotation(); + var16 = var15.transform(1.0F, 0.0F, 0.0F, this.scratchRight).mul(var14); + var17 = var15.transform(0.0F, 1.0F, 0.0F, this.scratchUp).mul(var14); + var18 = (float)(var1.centerX - var3.x); + var19 = (float)(var1.centerY - var3.y); + var20 = (float)(var1.centerZ - var3.z); + arj.setCurrentLayer(arj.positionColor()); + var21 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_COLOR); + var21.addVertex( + var18 - ((Vector3f)var16).x - ((Vector3f)var17).x, + var19 - ((Vector3f)var16).y - ((Vector3f)var17).y, + var20 - ((Vector3f)var16).z - ((Vector3f)var17).z + ) + .setColor((-221304185 | 221304184) + (-221304185 & 221304184)); + var21.addVertex( + var18 - ((Vector3f)var16).x + ((Vector3f)var17).x, + var19 - ((Vector3f)var16).y + ((Vector3f)var17).y, + var20 - ((Vector3f)var16).z + ((Vector3f)var17).z + ) + .setColor((-1364219412 ^ 1364219411) + ((-1364219412 & 1364219411) << 1)); + var21.addVertex( + var18 + ((Vector3f)var16).x + ((Vector3f)var17).x, + var19 + ((Vector3f)var16).y + ((Vector3f)var17).y, + var20 + ((Vector3f)var16).z + ((Vector3f)var17).z + ) + .setColor((475781040 | -475781041) + (475781040 & -475781041)); + var21.addVertex( + var18 + ((Vector3f)var16).x - ((Vector3f)var17).x, + var19 + ((Vector3f)var16).y - ((Vector3f)var17).y, + var20 + ((Vector3f)var16).z - ((Vector3f)var17).z + ) + .setColor((-2026769310 | 2026769309) + (-2026769310 & 2026769309)); + arj.drawCurrent(var21); + return; + case 1533616404: + this.cachedBlastProgram = var9; + this.blastResolution = var9.findUniform("Resolution"); + this.blastTime = var9.findUniform("Time"); + this.blastProgress = var9.findUniform("Progress"); + this.blastTintColor = var9.findUniform("TintColor"); + this.blastFade = var9.findUniform("Fade"); + var22 = -1400140989; + break; + case 1636717623: + return; + } + } + } + + private void renderSparks(uj var1, VertexConsumer var2, Vec3 var3, float var4, int var5) { + Iterator var6 = null; + uo var7 = null; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 0; + int var11 = 0; + double var12 = 0.0; + double var14 = 0.0; + double var16 = 0.0; + double var18 = 0.0; + double var20 = 0.0; + double var22 = 0.0; + double var24 = 0.0; + double var26 = 0.0; + double var28 = 0.0; + double var30 = 0.0; + double var32 = 0.0; + double var34 = 0.0; + double var36 = 0.0; + double var38 = 0.0; + double var40 = 0.0; + double var42 = 0.0; + double var44 = 0.0; + double var46 = 0.0; + int var48 = 1861945992; + + while (true) { + switch (var48) { + case -1831457605: + if (var6.hasNext()) { + var48 = -1753218232; + } else { + var48 = -1750226150; + } + break; + case -1753218232: + var7 = (uo)var6.next(); + if (var7.dead) { + var48 = 905857393; + } else { + var48 = 2058306666; + } + break; + case -1750226150: + return; + case -1233576739: + if (var42 > 1.0E-16) { + var48 = 414809696; + } else { + var48 = 930925340; + } + break; + case -1232558491: + var9 = (float)Math.pow(1.0F - var8, 1.6); + var10 = blendSparkColor(var5, var8, var9); + var11 = blendSparkColor(var5, Math.min(1.0F, var8 + 0.3F), var9 * 0.15F); + var12 = var7.velX * 0.045F; + var14 = var7.velY * 0.045F; + var16 = var7.velZ * 0.045F; + var18 = var7.x - var3.x; + var20 = var7.y - var3.y; + var22 = var7.z - var3.z; + var24 = var18 - var12; + var26 = var20 - var14; + var28 = var22 - var16; + var36 = var16 * var20 - var14 * var22; + var38 = var12 * var22 - var16 * var18; + var40 = var14 * var18 - var12 * var20; + var42 = var36 * var36 + var38 * var38 + var40 * var40; + var44 = var12 * var12 + var14 * var14 + var16 * var16; + if (var44 > 1.0E-8) { + var48 = -1233576739; + } else { + var48 = 930925340; + } + break; + case -951746597: + var48 = -1831457605; + break; + case 414809696: + var46 = var7.size / Math.sqrt(var42); + var30 = var36 * var46; + var32 = var38 * var46; + var34 = var40 * var46; + var48 = 586656526; + break; + case 586656526: + var2.addVertex((float)(var18 + var30), (float)(var20 + var32), (float)(var22 + var34)).setColor(var10); + var2.addVertex((float)(var18 - var30), (float)(var20 - var32), (float)(var22 - var34)).setColor(var10); + var2.addVertex((float)(var24 - var30), (float)(var26 - var32), (float)(var28 - var34)).setColor(var11); + var2.addVertex((float)(var24 + var30), (float)(var26 + var32), (float)(var28 + var34)).setColor(var11); + var2.addVertex((float)(var24 + var30), (float)(var26 + var32), (float)(var28 + var34)).setColor(var11); + var2.addVertex((float)(var24 - var30), (float)(var26 - var32), (float)(var28 - var34)).setColor(var11); + var2.addVertex((float)(var18 - var30), (float)(var20 - var32), (float)(var22 - var34)).setColor(var10); + var2.addVertex((float)(var18 + var30), (float)(var20 + var32), (float)(var22 + var34)).setColor(var10); + var48 = -1831457605; + break; + case 905857393: + var48 = -1831457605; + break; + case 930925340: + var30 = var7.size; + var32 = 0.0; + var34 = 0.0; + var48 = 586656526; + break; + case 1861945992: + default: + var6 = var1.sparks.iterator(); + var48 = -1831457605; + break; + case 2058306666: + var8 = Mth.clamp(var4 / var7.lifeFactor, 0.0F, 1.0F); + if (var8 >= 1.0F) { + var48 = -951746597; + } else { + var48 = -1232558491; + } + } + } + } + + private static int blendSparkColor(int var0, float var1, float var2) { + float var3 = Mth.clamp(var1 * 1.6F, 0.0F, 1.0F); + int var4 = (int)Mth.lerp(var3, 255.0F, var0 >> (855706407 | -855706391) + (855706407 & -855706391) & (763391196 | -763390941) + (763391196 & -763390941)); + int var5 = (int)Mth.lerp( + var3, 250.0F, var0 >> (-1249246195 | 1249246203) + (-1249246195 & 1249246203) & (1429661791 | -1429661536) + (1429661791 & -1429661536) + ); + int var6 = (int)Mth.lerp(var3, 235.0F, var0 & (445690372 ^ -445690117) + ((445690372 & -445690117) << 1)); + int var7 = Mth.clamp( + (int)(var2 * 255.0F), 0, (-1676747711 ^ 1676747966) + ((-1676747711 & 1676747966) << 1) + ); + return var7 << (-993132511 | 993132535) + (-993132511 & 993132535) + | var4 << (-1050303064 | 1050303080) + (-1050303064 & 1050303080) + | var5 << (-252668479 | 252668487) + (-252668479 & 252668487) + | var6; + } + + private int blastTint(ul var1) { + String var3 = this.blastColorSetting.get(); + int var4 = -1; + switch (var3.hashCode()) { + case 2021122027: + if (var3.equals("Client")) { + var4 = 0; + } + break; + case 2029746065: + if (var3.equals("Custom")) { + var4 = 1; + } + } + int var2 = switch (var4) { + case 0 -> bz.getInstance().getThemeManager().getCurrentTheme().getColor().getRGB(); + case 1 -> this.blastCustomColor.getIntColor(); + default -> var1 == ul.LIGHTNING ? 10471679: 16741152; + }; + return var2 & 16777215; + } + + private void discardDummy() { + int var1 = 356534768; + + while (true) { + switch (var1) { + case -1548403257: + this.dummyKillAtMillis = (8948880803356504655L | -8948880803356504655L) + (8948880803356504655L & -8948880803356504655L); + return; + case -1000897995: + this.dummy.discard(); + this.dummy = null; + var1 = -1548403257; + break; + case 356534768: + default: + if (this.dummy != null) { + var1 = -1000897995; + } else { + var1 = -1548403257; + } + } + } + } + + static { + long[] var10000 = new long[3]; + var10000[0] = (-6441402916472723888L | 6441402916472723888L) + + (-6441402916472723888L & 6441402916472723888L); + var10000[1] = (5706915552055327327L ^ -5706915552055327217L) + + ((5706915552055327327L & -5706915552055327217L) << 1); + var10000[2] = (-670779220228722033L ^ 670779220228722273L) + + ((-670779220228722033L & 670779220228722273L) << 1); + STROBE_STARTS_MS = var10000; + float[] var0 = new float[3]; + var0[0] = 1.0F; + var0[1] = 0.75F; + var0[2] = 0.5F; + STROBE_AMPLITUDES = var0; + } +} diff --git a/src/main/java/defpackage/uq.java b/src/main/java/defpackage/uq.java new file mode 100644 index 0000000..e73a574 --- /dev/null +++ b/src/main/java/defpackage/uq.java @@ -0,0 +1,518 @@ +package defpackage; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Map.Entry; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.SectionPos; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.phys.AABB; + +@rn(name = "DynamicLights", description = "Held torches, lanterns and other glowing items emit real light", category = rl.RENDER) +public final class uq extends rm { + public final si sources = si.create( + "Sources", + List.of( + "Self", + "Players", + "Items" + ) + ) + .describe( + "Self", + "Light from the item you are holding" + ) + .describe( + "Players", + "Light from items other players hold" + ) + .describe( + "Items", + "Light from glowing items dropped on the ground" + ) + .description("What is allowed to emit light"); + public final sm brightness = new sm("Brightness", 1.0F, 0.1F, 1.0F, 0.05F) + .description( + "Intensity of the dynamic lighting" + ); + public final sm itemRange = new sm( + "Item Range", + 48.0F, + 8.0F, + 96.0F, + 1.0F, + () -> this.sources.isEnable((-1081953769 | 1081953771) + (-1081953769 & 1081953771)) + ) + .description( + "Maximum distance dropped items emit light" + ); + public static final uq INSTANCE = new uq(); + private static volatile double[] snapshot = new double[0]; + private final Map prevCells = new HashMap<>(); + private final Set prevSections = new HashSet<>(); + private static final Map SPECIAL = new HashMap<>(); + + private uq() { + } + + public static int getBlockLight(int var0, int var1, int var2) { + double[] var3 = null; + double var4 = 0.0; + double var6 = 0.0; + double var8 = 0.0; + double var10 = 0.0; + int var12 = 0; + double var13 = 0.0; + double var15 = 0.0; + double var17 = 0.0; + double var19 = 0.0; + double var21 = 0.0; + int var23 = 241888077; + + while (true) { + switch (var23) { + case -2023320258: + if (var12 < var3.length) { + var23 = -1130076112; + } else { + var23 = 1444685997; + } + break; + case -1967201403: + var10 = var21; + var23 = 412694412; + break; + case -1939920685: + if (var15 > var13) { + var23 = -1351327320; + } else { + var23 = -1009898810; + } + break; + case -1596094778: + var15 = -var15; + var23 = -1939920685; + break; + case -1351327320: + var23 = 412694412; + break; + case -1288001254: + if (var17 > var13) { + var23 = 508043097; + } else { + var23 = 1232960291; + } + break; + case -1130076112: + var13 = var3[var12 + 3]; + var15 = var4 - var3[var12]; + if (var15 < 0.0) { + var23 = -1596094778; + } else { + var23 = -1939920685; + } + break; + case -1009898810: + var17 = var6 - var3[var12 + 1]; + if (var17 < 0.0) { + var23 = 2122426457; + } else { + var23 = -1288001254; + } + break; + case -600721037: + var12 = 15; + var23 = -175257077; + break; + case -175257077: + return var12; + case -163120950: + var21 = var13 - Math.sqrt(var15 * var15 + var17 * var17 + var19 * var19); + if (var21 > var10) { + var23 = -1967201403; + } else { + var23 = 412694412; + } + break; + case -130897755: + if (var19 > var13) { + var23 = 462498818; + } else { + var23 = -163120950; + } + break; + case 241888077: + default: + var3 = snapshot; + if (var3.length == 0) { + var23 = 1164276234; + } else { + var23 = 831215425; + } + break; + case 412694412: + var12 += 4; + var23 = -2023320258; + break; + case 462498818: + var23 = 412694412; + break; + case 508043097: + var23 = 412694412; + break; + case 831215425: + var4 = var0 + 0.5; + var6 = var1 + 0.5; + var8 = var2 + 0.5; + var10 = 0.0; + var12 = 0; + var23 = -2023320258; + break; + case 1164276234: + return 0; + case 1232960291: + var19 = var8 - var3[var12 + 2]; + if (var19 < 0.0) { + var23 = 2019395089; + } else { + var23 = -130897755; + } + break; + case 1444685997: + var12 = (int)(var10 + 0.5); + if (var12 > (-467488955 ^ 467488970) + ((-467488955 & 467488970) << 1)) { + var23 = -600721037; + } else { + var23 = -175257077; + } + break; + case 2019395089: + var19 = -var19; + var23 = -130897755; + break; + case 2122426457: + var17 = -var17; + var23 = -1288001254; + } + } + } + + @k + public void onUpdate(fl var1) { + Minecraft var2 = Minecraft.getInstance(); + ClientLevel var3 = var2.level; + LocalPlayer var4 = var2.player; + if (var3 != null && var4 != null) { + boolean var5 = this.sources.isEnable((1727142310 | -1727142310) + (1727142310 & -1727142310)); + boolean var6 = this.sources.isEnable((1540487473 | -1540487472) + (1540487473 & -1540487472)); + boolean var7 = this.sources.isEnable((-827678166 | 827678168) + (-827678166 & 827678168)); + float var8 = this.brightness.getCurrent(); + HashMap var9 = new HashMap(); + if (var5 || var6) { + for (Player var11 : var3.players()) { + int var12 = var11 == var4 + ? 1: 0; + if (var12 != 0 ? var5 : var6) { + int var13 = Math.max(luminanceOf(var11.getMainHandItem()), luminanceOf(var11.getOffhandItem())); + this.addSource(var9, var11, var13, var8); + } + } + } + + if (var7) { + double var22 = this.itemRange.getCurrent(); + AABB var25 = var4.getBoundingBox().inflate(var22); + + for (Entity var14 : var3.getEntities(var4, var25, var0 -> var0 instanceof ItemEntity)) { + int var15 = luminanceOf(((ItemEntity)var14).getItem()); + this.addSource(var9, var14, var15, var8); + } + } + + if (!var9.equals(this.prevCells)) { + double[] var23 = new double[var9.size() * (4)]; + int var24 = 0; + HashSet var26 = new HashSet<>(this.prevSections); + HashSet var28 = new HashSet(); + + for (Entry var31 : var9.entrySet()) { + long var16 = (Long)var31.getKey(); + int var18 = (Integer)var31.getValue(); + int var19 = BlockPos.getX(var16); + int var20 = BlockPos.getY(var16); + int var21 = BlockPos.getZ(var16); + var23[var24] = var19 + 0.5; + var23[var24 + 1] = var20 + 0.5; + var23[var24 + 2] = var21 + 0.5; + var23[var24 + 3] = var18; + var24 += 4; + this.collectSections(var28, var19, var20, var21, var18); + } + + var26.addAll(var28); + snapshot = var23; + if (var2.level != null) { + for (long var32 : var26) { + int var17 = SectionPos.x(var32); + int var33 = SectionPos.y(var32); + int var34 = SectionPos.z(var32); + var2.level.setSectionRangeDirty(var17, var33, var34, var17, var33, var34); + } + } + + this.prevCells.clear(); + this.prevCells.putAll(var9); + this.prevSections.clear(); + this.prevSections.addAll(var28); + } + } else { + this.clear(var2); + } + } + + private void addSource(Map var1, Entity var2, int var3, float var4) { + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + long var9 = (-5662601338747413390L | 5662601338747413390L) + (-5662601338747413390L & 5662601338747413390L); + Integer var11 = null; + int var12 = -1126039141; + + while (true) { + switch (var12) { + case -1808179421: + if (var5 > (-1248034494 ^ 1248034509) + ((-1248034494 & 1248034509) << 1)) { + var12 = 880867333; + } else { + var12 = 75687470; + } + break; + case -1383808681: + if (var11 < var5) { + var12 = 353037255; + } else { + var12 = -1279097077; + } + break; + case -1279097077: + return; + case -1126039141: + default: + if (var3 <= 0) { + var12 = 1186291494; + } else { + var12 = -626269138; + } + break; + case -626269138: + var5 = Math.round(var3 * var4); + if (var5 <= 0) { + var12 = -215402140; + } else { + var12 = -1808179421; + } + break; + case -215402140: + return; + case 75687470: + var6 = Mth.floor(var2.getX()); + var7 = Mth.floor(var2.getY() + var2.getBbHeight() * 0.5); + var8 = Mth.floor(var2.getZ()); + var9 = BlockPos.asLong(var6, var7, var8); + var11 = (Integer)var1.get(var9); + if (var11 != null) { + var12 = -1383808681; + } else { + var12 = 353037255; + } + break; + case 353037255: + var1.put(var9, var5); + var12 = -1279097077; + break; + case 880867333: + var5 = 15; + var12 = 75687470; + break; + case 1186291494: + return; + } + } + } + + private void collectSections(Set var1, int var2, int var3, int var4, int var5) { + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + int var15 = 8395688; + + while (true) { + switch (var15) { + case -1975479048: + if (var14 <= var11) { + var15 = -683412756; + } else { + var15 = 1967634907; + } + break; + case -1762945161: + if (var12 <= var7) { + var15 = 1246708551; + } else { + var15 = -1316955729; + } + break; + case -1316955729: + return; + case -1265263907: + if (var13 <= var9) { + var15 = -851923691; + } else { + var15 = 727393728; + } + break; + case -851923691: + var14 = var10; + var15 = -1975479048; + break; + case -683412756: + var1.add(SectionPos.asLong(var12, var13, var14)); + var14++; + var15 = -1975479048; + break; + case 8395688: + default: + var6 = var2 - var5 >> 4; + var7 = var2 + var5 >> 4; + var8 = var3 - var5 >> 4; + var9 = var3 + var5 >> 4; + var10 = var4 - var5 >> 4; + var11 = var4 + var5 >> 4; + var12 = var6; + var15 = -1762945161; + break; + case 727393728: + var12++; + var15 = -1762945161; + break; + case 1246708551: + var13 = var8; + var15 = -1265263907; + break; + case 1967634907: + var13++; + var15 = -1265263907; + } + } + } + + private void clear(Minecraft var1) { + Iterator var2 = null; + long var3 = (-1527977163176115727L | 1527977163176115727L) + (-1527977163176115727L & 1527977163176115727L); + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = -494550416; + + while (true) { + switch (var8) { + case -2128287286: + var3 = (Long)var2.next(); + var5 = SectionPos.x(var3); + var6 = SectionPos.y(var3); + var7 = SectionPos.z(var3); + var1.level.setSectionRangeDirty(var5, var6, var7, var5, var6, var7); + var8 = -777123942; + break; + case -1578485011: + return; + case -1088183821: + snapshot = new double[0]; + if (var1.level != null) { + var8 = 634692716; + } else { + var8 = -323783905; + } + break; + case -777123942: + if (var2.hasNext()) { + var8 = -2128287286; + } else { + var8 = -323783905; + } + break; + case -494550416: + default: + if (this.prevCells.isEmpty()) { + var8 = 513846013; + } else { + var8 = -1088183821; + } + break; + case -323783905: + this.prevCells.clear(); + this.prevSections.clear(); + return; + case 513846013: + if (this.prevSections.isEmpty()) { + var8 = -1578485011; + } else { + var8 = -1088183821; + } + break; + case 634692716: + var2 = this.prevSections.iterator(); + var8 = -777123942; + } + } + } + + private static int luminanceOf(ItemStack var0) { + if (var0 != null && !var0.isEmpty()) { + Item var1 = var0.getItem(); + if (var1 instanceof BlockItem var2) { + int var3 = var2.getBlock().defaultBlockState().getLightEmission(); + if (var3 > 0) { + return var3; + } + } + + Integer var4 = SPECIAL.get(var1); + return var4 == null ? 0: var4; + } else { + return 0; + } + } + + @Override + public void onDisable() { + this.clear(Minecraft.getInstance()); + super.onDisable(); + } + + static { + SPECIAL.put(Items.LAVA_BUCKET, (-1673520724 | 1673520739) + (-1673520724 & 1673520739)); + SPECIAL.put(Items.GLOW_BERRIES, (-1379083793 ^ 1379083807) + ((-1379083793 & 1379083807) << 1)); + } +} diff --git a/src/main/java/defpackage/ur.java b/src/main/java/defpackage/ur.java new file mode 100644 index 0000000..e52a300 --- /dev/null +++ b/src/main/java/defpackage/ur.java @@ -0,0 +1,9 @@ +package defpackage; + +final class ur { + final us left = new us(); + final us right = new us(); + + ur() { + } +} diff --git a/src/main/java/defpackage/us.java b/src/main/java/defpackage/us.java new file mode 100644 index 0000000..979944c --- /dev/null +++ b/src/main/java/defpackage/us.java @@ -0,0 +1,167 @@ +package defpackage; + +final class us { + final double[] x = new double[256]; + final double[] y = new double[256]; + final double[] z = new double[256]; + final long[] birth = new long[256]; + final float[] speed = new float[256]; + private int start; + int size; + private long lastSample; + + us() { + } + + int slot(int var1) { + return (this.start + var1) % (256); + } + + void push(double var1, double var3, double var5, long var7, float var9) { + int var10 = 0; + double var11 = 0.0; + double var13 = 0.0; + double var15 = 0.0; + double var17 = 0.0; + int var19 = 0; + int var21 = 0; + int var20 = -1109788796; + + while (true) { + switch (var20) { + case -1990082432: + this.lastSample = var7; + var20 = -149920516; + break; + case -1899618348: + var10 = this.slot(this.size - ((-206757015 | 206757016) + (-206757015 & 206757016))); + var11 = this.x[var10] - var1; + var13 = this.y[var10] - var3; + var15 = this.z[var10] - var5; + var17 = var11 * var11 + var13 * var13 + var15 * var15; + if (!(var17 > 64.0)) { + var20 = -1519279571; + } else { + var20 = -143295453; + } + break; + case -1519279571: + if (var7 - this.lastSample > (2204901256020317839L ^ -2204901256020317539L) + ((2204901256020317839L & -2204901256020317539L) << 1)) { + var20 = -143295453; + } else { + var20 = -295631966; + } + break; + case -1109788796: + default: + if (this.size > 0) { + var20 = -1899618348; + } else { + var20 = -1990082432; + } + break; + case -389496597: + var10 = this.slot(this.size); + this.size += 1; + var20 = 403100729; + break; + case -295631966: + var21 = 0; + var20 = -99458514; + break; + case -149920516: + if (this.size == (-2067449071 | 2067449327) + (-2067449071 & 2067449327)) { + var20 = 812694946; + } else { + var20 = -389496597; + } + break; + case -143295453: + var21 = 1; + var20 = -99458514; + break; + case -99458514: + var19 = var21; + this.lastSample = var7; + if (var19 != 0) { + var20 = 363816097; + } else { + var20 = 281355299; + } + break; + case 281355299: + if (var17 < 0.12) { + var20 = 824885182; + } else { + var20 = 465377440; + } + break; + case 363816097: + this.start = 0; + this.size = 0; + var20 = 465377440; + break; + case 403100729: + this.x[var10] = var1; + this.y[var10] = var3; + this.z[var10] = var5; + this.birth[var10] = var7; + this.speed[var10] = var9; + return; + case 465377440: + var20 = -149920516; + break; + case 812694946: + var10 = this.start; + this.start = (this.start + (1068364874 ^ -1068364873) + ((1068364874 & -1068364873) << 1)) + % ((1326616198 | -1326615942) + (1326616198 & -1326615942)); + var20 = 403100729; + break; + case 824885182: + return; + } + } + } + + void expire(long var1, long var3) { + int var5 = 1744617865; + + while (true) { + switch (var5) { + case -2070297456: + if (var1 - this.birth[this.start] > var3) { + var5 = -1978712551; + } else { + var5 = -57161546; + } + break; + case -2053422700: + return; + case -1978712551: + this.start = (this.start + (1658574953 | -1658574952) + (1658574953 & -1658574952)) + % ((-1047367370 ^ 1047367626) + ((-1047367370 & 1047367626) << 1)); + this.size -= 1; + var5 = 1744617865; + break; + case -329847851: + this.start = 0; + var5 = -2053422700; + break; + case -57161546: + if (this.size == 0) { + var5 = -329847851; + } else { + var5 = -2053422700; + } + break; + case 1744617865: + default: + if (this.size > 0) { + var5 = -2070297456; + } else { + var5 = -57161546; + } + } + } + } +} diff --git a/src/main/java/defpackage/ut.java b/src/main/java/defpackage/ut.java new file mode 100644 index 0000000..d4237be --- /dev/null +++ b/src/main/java/defpackage/ut.java @@ -0,0 +1,2204 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.textures.GpuTextureView; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.function.Supplier; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.Camera; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; +import org.joml.Matrix4f; +import org.joml.Vector4f; + +@rn(name = "ElytraTrails", description = "Draws glowing contrails from the elytra wingtips while gliding", category = rl.RENDER) +public final class ut extends rm { + private static final String FILL_NORMAL = "Normal"; + private static final String FILL_SHADER = "Shader"; + private static final String SHADER_NEBULA = "Nebula"; + private static final String SHADER_COSMOS = "Cosmos"; + private static final String SHADER_WEB = "Web"; + private static final String SHADER_PLASMA = "Plasma"; + private static final String SHADER_GLASS = "LiquidGlass"; + private static final String SHADER_MATRIX = "Matrix"; + private static final String SHADER_ARMOR = "LivingArmor"; + private static final String SHADER_ALIEN = "AlienNebula"; + private static final String COLOR_CLIENT = "Client"; + private static final String COLOR_RAINBOW = "Rainbow"; + private static final String COLOR_CUSTOM = "Custom"; + private static final String MOTION_STRAIGHT = "Straight"; + private static final String MOTION_WAVE = "Wave"; + private static final String MOTION_HELIX = "Helix"; + private static final String TAPER_UNIFORM = "Uniform"; + private static final String TAPER_GROW = "Grow"; + private static final String TAPER_SHRINK = "Shrink"; + private static final int MAX_POINTS = 256; + private static final int WING_LEFT = 0; + private static final int WING_RIGHT = 1; + private static final double MIN_STEP_SQ = 0.12; + private static final double MAX_STEP_SQ = 64.0; + private static final double MAX_TRACK_DISTANCE_SQ = 16384.0; + private static final long CONTINUITY_MS = 300L; + private static final float DEGENERATE_SQ = 1.0E-7F; + private static final float FILL_ALPHA = 0.85F; + private static final float GLOW_WIDTH_SCALE = 2.4F; + private static final float GLOW_ALPHA = 0.35F; + private static final float LINE_ALPHA = 1.0F; + private static final float HEAD_RAMP_POINTS = 3.0F; + private static final float NEAR_FADE_START = 0.75F; + private static final float NEAR_FADE_RANGE = 1.5F; + private static final float SPEED_MIN = 0.35F; + private static final float SPEED_MAX = 1.6F; + private static final float SPEED_ALPHA_FLOOR = 0.25F; + private static final float SPEED_WIDTH_FLOOR = 0.45F; + private static final int RIBBON_STRIPS = 3; + private static final float[] RIBBON_OFFSETS; + private static final float[] RIBBON_EDGE_ALPHA; + private static final float[] RIBBON_V; + private static final long RAINBOW_CYCLE_MS = 3000L; + private static final float RAINBOW_SPREAD = 0.5F; + private static final float RAINBOW_SATURATION = 0.85F; + private static final int CLIENT_COLOR_STEP = 2; + private static final float SPIN_ATTACK_DEGREES = -75.0F; + private static final float TAU = (float) (Math.PI * 2); + private static final double MILLIS_TO_SECONDS = 0.001; + private static final long EPOCH_MS = System.currentTimeMillis(); + private static final float SHADER_TIME_SCALE = 1000.0F; + private static final long SHADER_TIME_PERIOD = 100000L; + private static final float MODEL_SCALE = 0.9375F; + private static final float BODY_OFFSET_Y = -1.501F; + private static final float WINGS_OFFSET_Z = 0.125F; + private static final float WING_PIVOT_X = 0.3125F; + private static final float WING_CROUCH_Y = 0.1875F; + private static final float TIP_X = 0.6875F; + private static final float TIP_Y = 1.3125F; + private static final float TIP_Z = 0.1875F; + private static final float FLIGHT_ROT_EPSILON = 1.0E-5F; + private static final float FALL_FLYING_DIVISOR = 100.0F; + private static final float FALL_FLYING_PITCH_OFFSET = -90.0F; + private static final float BODY_ROT_OFFSET = 180.0F; + private final sm durationSetting = new sm("Duration", 1200.0F, 200.0F, 4000.0F, 50.0F) + .description( + "How long the contrail stays in the air in milliseconds" + ); + private final sm widthSetting = new sm("Width", 0.22F, 0.02F, 1.5F, 0.01F) + .description( + "Width of the contrail ribbon in blocks" + ); + private final sg taperSetting; + private final sm taperAmount; + private final sg motionSetting; + private final sm waveAmplitude; + private final sm waveFrequency; + private final ru fadeStartSetting; + private final ru speedReactiveSetting; + private final ru glowSetting; + private final ru softEdgesSetting; + private final ru selfSetting; + private final ru othersSetting; + private final ru fillSetting; + private final sg fillType; + private final sg shaderType; + private final sm shaderSpeed; + private final sm shaderAlpha; + private final sg shaderColorSetting; + private final rx shaderCustomColor; + private final ru linesSetting; + private final sm lineWidthSetting; + private final sg colorSetting; + private final rx customColorSetting; + private final ru splitWingsSetting; + private final rx rightColorSetting; + private final Map trails; + private final float[] frameCenter; + private final float[] frameSide; + private final float[] frameTangent; + private final float[] frameAlpha; + private final float[] frameWidth; + private final Matrix4f bodyMatrix; + private final Matrix4f wingMatrix; + private final Vector4f wingTip; + public static final ut INSTANCE = new ut(); + + private ut() { + String var10003 = "Taper"; + String[] var10004 = new String[3]; + var10004[0] = "Grow"; + var10004[1] = "Uniform"; + var10004[2] = "Shrink"; + this.taperSetting = new sg(var10003, var10004) + .describe( + "Grow", + "Widens like a jet plume as it drifts away" + ) + .describe( + "Uniform", + "Keeps a constant width" + ) + .describe( + "Shrink", + "Narrows into a needle" + ) + .description( + "How the ribbon width changes along the contrail" + ); + this.taperAmount = new sm( + "Taper amount", 1.8F, 1.25F, 8.0F, 0.25F, () -> { + int var2x = 0; + int var1x = 1994774293; + + while (true) { + switch (var1x) { + case -1250959272: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -92820329: + var2x = 0; + var1x = -1250959272; + break; + case 572676619: + var2x = 1; + var1x = -1250959272; + break; + case 1994774293: + default: + if (!this.taperSetting.is("Uniform")) { + var1x = 572676619; + } else { + var1x = -92820329; + } + } + } + } + ) + .description( + "Strength of the width change along the contrail" + ); + var10003 = "Motion"; + var10004 = new String[3]; + var10004[0] = "Straight"; + var10004[1] = "Wave"; + var10004[2] = "Helix"; + this.motionSetting = new sg(var10003, var10004) + .describe( + "Straight", + "Follows the flight path exactly" + ) + .describe( + "Wave", + "Sways sideways like a banner" + ) + .describe( + "Helix", + "Corkscrews around the flight path" + ) + .description("Shape the contrail is woven into"); + this.waveAmplitude = new sm( + "Wave size", 0.35F, 0.05F, 2.0F, 0.05F, () -> { + int var2x = 0; + int var1x = -1884723925; + + while (true) { + switch (var1x) { + case -1884723925: + default: + if (!this.motionSetting.is("Straight")) { + var1x = -922732588; + } else { + var1x = 1729501794; + } + break; + case -922732588: + var2x = 1; + var1x = 812303598; + break; + case 812303598: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 1729501794: + var2x = 0; + var1x = 812303598; + } + } + } + ) + .description( + "How far the contrail swings away from the flight path in blocks" + ); + this.waveFrequency = new sm( + "Wave speed", 3.0F, 0.5F, 12.0F, 0.5F, () -> { + int var2x = 0; + int var1x = -968629506; + + while (true) { + switch (var1x) { + case -1189058826: + var2x = 1; + var1x = 1506590803; + break; + case -968629506: + default: + if (!this.motionSetting.is("Straight")) { + var1x = -1189058826; + } else { + var1x = -779819852; + } + break; + case -779819852: + var2x = 0; + var1x = 1506590803; + break; + case 1506590803: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description( + "How many swings the contrail makes each second of flight" + ); + this.fadeStartSetting = new ru( + "Fade start", + (boolean)((((1029254950 ^ -1029254949) + ((1029254950 & -1029254949) << 1)) + ) != 0)) + .description( + "Fade the contrail in behind the wingtip instead of starting at full strength" + ); + this.speedReactiveSetting = new ru( + "Speed reactive", + (boolean)((((752639413 ^ -752639412) + ((752639413 & -752639412) << 1)) + ) != 0)) + .description( + "Scale width and opacity with flight speed" + ); + this.glowSetting = new ru( + "Glow", + (boolean)((((-1643834368 ^ 1643834369) + ((-1643834368 & 1643834369) << 1)) + ) != 0)) + .description( + "Wrap the contrail in a soft halo" + ); + this.softEdgesSetting = new ru( + "Soft edges", + (boolean)((((536700949 ^ -536700948) + ((536700949 & -536700948) << 1)) + ) != 0)) + .description( + "Fade the ribbon out towards its edges instead of drawing a flat band" + ); + this.selfSetting = new ru( + "Own trail", + (boolean)((((-1474923504 ^ 1474923505) + ((-1474923504 & 1474923505) << 1)) + ) != 0)) + .description( + "Draw the contrail of your own elytra" + ); + this.othersSetting = new ru( + "Other players", + (boolean)((((245363147 ^ -245363146) + ((245363147 & -245363146) << 1)) + ) != 0)) + .description( + "Draw contrails of other gliding players" + ); + this.fillSetting = new ru( + "Fill", (boolean)((((219813899 ^ -219813898) + ((219813899 & -219813898) << 1)) + ) != 0)) + .description("Fill the inside of the contrail"); + var10003 = "Fill type"; + Supplier var7 = this.fillSetting::isEnabled; + String[] var10005 = new String[2]; + var10005[0] = "Normal"; + var10005[1] = "Shader"; + this.fillType = new sg(var10003, var7, var10005) + .describe( + "Normal", + "Solid color fill" + ) + .describe( + "Shader", + "Animated shader fill" + ) + .description( + "Type of fill applied to the contrail" + ); + var10003 = "Shader"; + Supplier var8 = () -> { + int var2x = 0; + int var1x = -1878645779; + + while (true) { + switch (var1x) { + case -2108716953: + var2x = 0; + var1x = 1341785732; + break; + case -1878645779: + default: + if (this.fillSetting.isEnabled()) { + var1x = 28764961; + } else { + var1x = -2108716953; + } + break; + case 28764961: + if (this.fillType.is("Shader")) { + var1x = 94289884; + } else { + var1x = -2108716953; + } + break; + case 94289884: + var2x = 1; + var1x = 1341785732; + break; + case 1341785732: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + }; + var10005 = new String[8]; + var10005[0] = "Nebula"; + var10005[1] = "Cosmos"; + var10005[2] = "Web"; + var10005[3] = "Plasma"; + var10005[4] = "LiquidGlass"; + var10005[5] = "Matrix"; + var10005[6] = "LivingArmor"; + var10005[7] = "AlienNebula"; + this.shaderType = new sg(var10003, var8, var10005) + .describe( + "Nebula", + "Purple nebula effect" + ) + .describe( + "Cosmos", + "Starry cosmos effect" + ) + .describe( + "Web", + "Intertwined web effect" + ) + .describe( + "Plasma", + "Flowing plasma effect" + ) + .describe( + "LiquidGlass", + "Shiny glass effect" + ) + .describe( + "Matrix", + "Falling code effect" + ) + .describe( + "LivingArmor", + "Enchanted armor glint" + ) + .describe( + "AlienNebula", + "Alien-like distorted effect" + ) + .description( + "Shader effect for the contrail fill" + ); + this.shaderSpeed = new sm( + "Shader speed", 1.0F, 0.1F, 3.0F, 0.1F, () -> { + int var2x = 0; + int var1x = 795488298; + + while (true) { + switch (var1x) { + case -1488201572: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 186238276: + var2x = 0; + var1x = -1488201572; + break; + case 735245629: + if (this.fillType.is("Shader")) { + var1x = 1447003307; + } else { + var1x = 186238276; + } + break; + case 795488298: + default: + if (this.fillSetting.isEnabled()) { + var1x = 735245629; + } else { + var1x = 186238276; + } + break; + case 1447003307: + var2x = 1; + var1x = -1488201572; + } + } + } + ) + .description("Animation speed for the shader fill"); + this.shaderAlpha = new sm( + "Shader opacity", 1.0F, 0.1F, 1.0F, 0.05F, () -> { + int var2x = 0; + int var1x = -374536700; + + while (true) { + switch (var1x) { + case -1819315779: + if (this.fillType.is("Shader")) { + var1x = -682588933; + } else { + var1x = 1759752514; + } + break; + case -1687131856: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -682588933: + var2x = 1; + var1x = -1687131856; + break; + case -374536700: + default: + if (this.fillSetting.isEnabled()) { + var1x = -1819315779; + } else { + var1x = 1759752514; + } + break; + case 1759752514: + var2x = 0; + var1x = -1687131856; + } + } + } + ) + .description("Transparency of the shader fill"); + var10003 = "Shader color"; + Supplier var9 = () -> { + int var2x = 0; + int var1x = -1027989915; + + while (true) { + switch (var1x) { + case -1884288990: + var2x = 1; + var1x = 85833058; + break; + case -1027989915: + default: + if (this.fillSetting.isEnabled()) { + var1x = 2035689337; + } else { + var1x = 740812510; + } + break; + case 85833058: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 740812510: + var2x = 0; + var1x = 85833058; + break; + case 2035689337: + if (this.fillType.is("Shader")) { + var1x = -1884288990; + } else { + var1x = 740812510; + } + } + } + }; + var10005 = new String[3]; + var10005[0] = "Client"; + var10005[1] = "Rainbow"; + var10005[2] = "Custom"; + this.shaderColorSetting = new sg(var10003, var9, var10005) + .describe( + "Client", + "Use the client theme color" + ) + .describe( + "Rainbow", + "Rainbow shifting colors" + ) + .describe( + "Custom", + "Use a custom chosen color" + ) + .description("Color mode for the shader"); + this.shaderCustomColor = new rx( + "Shader custom color", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> { + int var2x = 0; + int var1x = 607355589; + + while (true) { + switch (var1x) { + case -1409003529: + var2x = 1; + var1x = 2123448398; + break; + case -934576180: + if (this.fillType.is("Shader")) { + var1x = 790235518; + } else { + var1x = -124333166; + } + break; + case -124333166: + var2x = 0; + var1x = 2123448398; + break; + case 607355589: + default: + if (this.fillSetting.isEnabled()) { + var1x = -934576180; + } else { + var1x = -124333166; + } + break; + case 790235518: + if (this.shaderColorSetting.is("Custom")) { + var1x = -1409003529; + } else { + var1x = -124333166; + } + break; + case 2123448398: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description( + "Custom color for the shader fill" + ); + this.linesSetting = new ru( + "Lines", + (boolean)((((-1587009478 ^ 1587009478) + ((-1587009478 & 1587009478) << 1)) + ) != 0)) + .description( + "Draw outlining lines on the edges of the contrail" + ); + this.lineWidthSetting = new sm( + "Line width", + 2.0F, + 1.0F, + 5.0F, + 0.5F, + this.linesSetting::isEnabled + ) + .description( + "Thickness of the contrail outline" + ); + var10003 = "Color"; + var10004 = new String[3]; + var10004[0] = "Client"; + var10004[1] = "Rainbow"; + var10004[2] = "Custom"; + this.colorSetting = new sg(var10003, var10004) + .describe( + "Client", + "Use the client theme color" + ) + .describe( + "Rainbow", + "Rainbow shifting colors" + ) + .describe( + "Custom", + "Use a custom chosen color" + ) + .description("Color mode for the contrail"); + this.customColorSetting = new rx( + "Custom color", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> this.colorSetting.is("Custom") + ) + .description("Custom color for the contrail"); + this.splitWingsSetting = new ru( + "Split wings", + (boolean)(((0)) != 0), + () -> this.colorSetting.is("Custom") + ) + .description("Give the right wing its own color"); + this.rightColorSetting = new rx( + "Right wing color", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> { + int var2x = 0; + int var1x = -957187491; + + while (true) { + switch (var1x) { + case -1862965384: + if (this.splitWingsSetting.isEnabled()) { + var1x = -156720626; + } else { + var1x = -1577583974; + } + break; + case -1577583974: + var2x = 0; + var1x = -1495234939; + break; + case -1495234939: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -957187491: + default: + if (this.colorSetting.is("Custom")) { + var1x = -1862965384; + } else { + var1x = -1577583974; + } + break; + case -156720626: + var2x = 1; + var1x = -1495234939; + } + } + } + ) + .description( + "Color of the right wing contrail" + ); + this.trails = new HashMap<>(); + this.frameCenter = new float[768]; + this.frameSide = new float[768]; + this.frameTangent = new float[768]; + this.frameAlpha = new float[256]; + this.frameWidth = new float[256]; + this.bodyMatrix = new Matrix4f(); + this.wingMatrix = new Matrix4f(); + this.wingTip = new Vector4f(); + } + + @Override + public void onEnable() { + super.onEnable(); + this.trails.clear(); + } + + @Override + public void onDisable() { + super.onDisable(); + this.trails.clear(); + } + + public void onWorldRender(LevelRenderContext var1) { + PoseStack var2 = null; + Camera var3 = null; + long var4 = (1735272554089955293L ^ -1735272554089955293L) + ((1735272554089955293L & -1735272554089955293L) << 1); + long var6 = (-9208851844712249028L | 9208851844712249028L) + (-9208851844712249028L & 9208851844712249028L); + Vec3 var8 = null; + SubmitNodeCollector var9 = null; + int var10 = 0; + int var12 = 0; + int var11 = 907344080; + + while (true) { + switch (var11) { + case -1788293435: + if (this.linesSetting.isEnabled()) { + var11 = 1005667353; + } else { + var11 = 1034955119; + } + break; + case -1712607571: + if (mc.level == null) { + var11 = -1474064803; + } else { + var11 = 369071666; + } + break; + case -1474064803: + return; + case -1466093513: + return; + case -1405521406: + return; + case -1139925372: + if (var3 == null) { + var11 = -1405521406; + } else { + var11 = 1461131967; + } + break; + case -1084813916: + if (var10 == 0) { + var11 = 1807308018; + } else { + var11 = -1788293435; + } + break; + case -372551424: + var12 = 0; + var11 = 1418820775; + break; + case -245297727: + var9 = var1.submitNodeCollector(); + if (var9 == null) { + var11 = 387295058; + } else { + var11 = 1730369667; + } + break; + case -56580056: + this.renderLines(var9, var2, var8, var4, var6); + var11 = 1034955119; + break; + case 215169536: + if (mc.player != null) { + var11 = -1712607571; + } else { + var11 = -1474064803; + } + break; + case 369071666: + var2 = var1.poseStack(); + var3 = mc.getEntityRenderDispatcher().camera; + if (var2 != null) { + var11 = -1139925372; + } else { + var11 = -1405521406; + } + break; + case 387295058: + return; + case 582126281: + if (this.fillType.is("Shader")) { + var11 = 1635084787; + } else { + var11 = -372551424; + } + break; + case 907344080: + default: + if (this.isEnabled()) { + var11 = 215169536; + } else { + var11 = -1474064803; + } + break; + case 1005667353: + if (var10 == 0) { + var11 = -56580056; + } else { + var11 = 1034955119; + } + break; + case 1034955119: + return; + case 1418820775: + var10 = var12; + if (this.fillSetting.isEnabled()) { + var11 = -1084813916; + } else { + var11 = -1788293435; + } + break; + case 1461131967: + var4 = System.currentTimeMillis(); + var6 = (long)this.durationSetting.getCurrent(); + var8 = var3.position(); + this.updateTrails(var8, var4, var6); + if (this.trails.isEmpty()) { + var11 = -1466093513; + } else { + var11 = -245297727; + } + break; + case 1635084787: + var12 = 1; + var11 = 1418820775; + break; + case 1730369667: + if (this.fillSetting.isEnabled()) { + var11 = 582126281; + } else { + var11 = -372551424; + } + break; + case 1807308018: + this.renderNormalFill(var9, var2, var8, var4, var6); + var11 = -1788293435; + } + } + } + + public void onWorldDraw(LevelRenderContext var1) { + Camera var2 = null; + int var3 = 577488416; + + while (true) { + switch (var3) { + case -1989016795: + var2 = mc.getEntityRenderDispatcher().camera; + if (var2 == null) { + var3 = 119699281; + } else { + var3 = -831642930; + } + break; + case -831642930: + this.renderShaderFill(var2.position(), System.currentTimeMillis(), (long)this.durationSetting.getCurrent()); + return; + case -225261871: + if (!this.fillType.is("Shader")) { + var3 = 113121607; + } else { + var3 = 547626146; + } + break; + case 113121607: + return; + case 119699281: + return; + case 547626146: + if (this.trails.isEmpty()) { + var3 = 894545675; + } else { + var3 = -1989016795; + } + break; + case 577488416: + default: + if (this.isEnabled()) { + var3 = 1228163950; + } else { + var3 = 1001385112; + } + break; + case 894545675: + return; + case 1001385112: + return; + case 1228163950: + if (mc.player != null) { + var3 = 1676485949; + } else { + var3 = 1001385112; + } + break; + case 1520260319: + if (this.fillSetting.isEnabled()) { + var3 = -225261871; + } else { + var3 = 113121607; + } + break; + case 1676485949: + if (mc.level == null) { + var3 = 1001385112; + } else { + var3 = 1520260319; + } + } + } + } + + private void updateTrails(Vec3 var1, long var2, long var4) { + float var6 = mc.getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((566733822 ^ -566733822) + ((566733822 & -566733822) << 1))) != 0)); + + for (AbstractClientPlayer var8 : mc.level.players()) { + if (var8.isFallFlying() && !var8.isInvisible()) { + int var9 = var8 == mc.player ? 1: 0; + if ((var9 != 0 ? this.selfSetting.isEnabled() : this.othersSetting.isEnabled()) && !(var8.distanceToSqr(var1) > 16384.0)) { + this.sampleWingTips(var8, this.trails.computeIfAbsent(var8.getId(), var0 -> new ur()), var2, var6); + } + } + } + + Iterator var10 = this.trails.values().iterator(); + + while (var10.hasNext()) { + ur var11 = (ur)var10.next(); + var11.left.expire(var2, var4); + var11.right.expire(var2, var4); + if (var11.left.size == 0 && var11.right.size == 0) { + var10.remove(); + } + } + } + + private void sampleWingTips(AbstractClientPlayer var1, ur var2, long var3, float var5) { + Vec3 var6 = null; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var16 = 0.0F; + int var15 = 39731301; + + while (true) { + switch (var15) { + case -1543709313: + var9 = flyingYRot(var1, var5); + if (var9 != 0.0F) { + var15 = -288089878; + } else { + var15 = -1447698468; + } + break; + case -1447698468: + this.bodyMatrix.scale(-1.0F, -1.0F, 1.0F); + this.bodyMatrix.scale(0.9375F); + this.bodyMatrix.translate(0.0F, -1.501F, 0.125F); + if (var1.isCrouching()) { + var15 = 889261385; + } else { + var15 = -710165604; + } + break; + case -1089419895: + this.bodyMatrix.rotateX(var8 * (-90.0F - var1.getXRot(var5)) * (float) (Math.PI / 180.0)); + var15 = -1543709313; + break; + case -710165604: + var16 = 0.0F; + var15 = 2084853614; + break; + case -288089878: + this.bodyMatrix.rotateY(var9); + var15 = -1447698468; + break; + case 39731301: + default: + var6 = aqj.interpolate(var1); + var7 = Mth.rotLerp(var5, var1.yBodyRotO, var1.yBodyRot); + var8 = fallFlyingScale(var1, var5); + this.bodyMatrix.identity(); + this.bodyMatrix.scale(var1.getScale()); + this.bodyMatrix.rotateY((180.0F - var7) * (float) (Math.PI / 180.0)); + if (var1.isAutoSpinAttack()) { + var15 = 1442297721; + } else { + var15 = -1089419895; + } + break; + case 889261385: + var16 = 0.1875F; + var15 = 2084853614; + break; + case 1442297721: + this.bodyMatrix.rotateX((-90.0F - var1.getXRot(var5)) * (float) (Math.PI / 180.0)); + this.bodyMatrix.rotateY((var1.tickCount + var5) * -75.0F * (float) (Math.PI / 180.0)); + var15 = -1543709313; + break; + case 2084853614: + var10 = var16; + var11 = var1.elytraAnimationState.getRotX(var5); + var12 = var1.elytraAnimationState.getRotY(var5); + var13 = var1.elytraAnimationState.getRotZ(var5); + var14 = (float)var1.getDeltaMovement().length(); + this.pushWingTip(var2.left, var6, 0.3125F, var10, var13, var12, var11, -0.6875F, var3, var14); + this.pushWingTip(var2.right, var6, -0.3125F, var10, -var13, -var12, var11, 0.6875F, var3, var14); + return; + } + } + } + + private void pushWingTip(us var1, Vec3 var2, float var3, float var4, float var5, float var6, float var7, float var8, long var9, float var11) { + this.wingMatrix.set(this.bodyMatrix).translate(var3, var4, 0.0F).rotateZYX(var5, var6, var7); + this.wingTip.set(var8, 1.3125F, 0.1875F, 1.0F); + this.wingMatrix.transform(this.wingTip); + var1.push(var2.x + this.wingTip.x(), var2.y + this.wingTip.y(), var2.z + this.wingTip.z(), var9, var11); + } + + private static float fallFlyingScale(AbstractClientPlayer var0, float var1) { + float var2 = var0.getFallFlyingTicks() + var1; + return Mth.clamp(var2 * var2 / 100.0F, 0.0F, 1.0F); + } + + private static float flyingYRot(AbstractClientPlayer var0, float var1) { + Vec3 var2 = null; + Vec3 var3 = null; + double var4 = 0.0; + double var6 = 0.0; + int var8 = 249595432; + + while (true) { + switch (var8) { + case -2042698782: + return 0.0F; + case -1095238700: + var4 = var3.horizontal().normalize().dot(var2.horizontal().normalize()); + var6 = var3.x * var2.z - var3.z * var2.x; + return (float)(Math.signum(var6) * Math.acos(Math.min(1.0, Math.abs(var4)))); + case 249595432: + default: + var2 = var0.getViewVector(var1); + var3 = var0.avatarState().deltaMovementOnPreviousTick().lerp(var0.getDeltaMovement(), var1); + if (!(var3.horizontalDistanceSqr() <= 1.0E-5F)) { + var8 = 668979520; + } else { + var8 = -2042698782; + } + break; + case 668979520: + if (var2.horizontalDistanceSqr() <= 1.0E-5F) { + var8 = -2042698782; + } else { + var8 = -1095238700; + } + } + } + } + + private int computeFrame(us var1, Vec3 var2, long var3, long var5) { + int var7 = var1.size; + if (var7 < (-338074120 | 338074122) + (-338074120 & 338074122)) { + return 0; + } + + for (int var8 = 0; var8 < var7; var8++) { + int var9 = var1.slot(var8); + int var10 = var8 * (3); + this.frameCenter[var10] = (float)(var1.x[var9] - var2.x); + this.frameCenter[var10 + 1] = (float)(var1.y[var9] - var2.y); + this.frameCenter[var10 + 2] = (float)(var1.z[var9] - var2.z); + } + + this.computeSideFrame(var7); + if (!this.motionSetting.is("Straight")) { + this.applyMotion(var1, var7); + this.computeSideFrame(var7); + } + + for (int var11 = 0; var11 < var7; var11++) { + int var12 = var11 * (3); + float var13 = Mth.sqrt( + this.frameCenter[var12] * this.frameCenter[var12] + + this.frameCenter[var12 + 1] + * this.frameCenter[var12 + 1] + + this.frameCenter[var12 + 2] + * this.frameCenter[var12 + 2] + ); + this.frameAlpha[var11] = this.pointAlpha(var1, var11, var7, var3, var5, var13); + this.frameWidth[var11] = this.pointWidth(var1, var11, var7); + } + + return var7; + } + + private void applyMotion(us var1, int var2) { + float var3 = 0.0F; + float var4 = 0.0F; + int var5 = 0; + int var6 = 0; + int var7 = 0; + double var8 = 0.0; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + int var16 = 1200337096; + + while (true) { + switch (var16) { + case -1599300304: + var7 = var6 * (3); + var8 = (var1.birth[var1.slot(var6)] - EPOCH_MS) * 0.001; + var10 = (float)(var8 * var4 % 1.0) * (float) (Math.PI * 2); + var11 = Mth.sin(var10) * var3; + this.frameCenter[var7] = this.frameCenter[var7] + this.frameSide[var7] * var11; + this.frameCenter[var7 + 1] = this.frameCenter[var7 + + 1] + + this.frameSide[var7 + 1] * var11; + this.frameCenter[var7 + 2] = this.frameCenter[var7 + + 2] + + this.frameSide[var7 + 2] * var11; + if (var5 == 0) { + var16 = 661708782; + } else { + var16 = 791672829; + } + break; + case -1375920291: + var6++; + var16 = -680587856; + break; + case -680587856: + if (var6 < var2) { + var16 = -1599300304; + } else { + var16 = 1128561976; + } + break; + case 661708782: + var16 = -1375920291; + break; + case 791672829: + var12 = Mth.cos(var10) * var3; + var13 = this.frameSide[var7 + 1] + * this.frameTangent[var7 + 2] + - this.frameSide[var7 + 2] + * this.frameTangent[var7 + 1]; + var14 = this.frameSide[var7 + 2] * this.frameTangent[var7] + - this.frameSide[var7] * this.frameTangent[var7 + 2]; + var15 = this.frameSide[var7] * this.frameTangent[var7 + 1] + - this.frameSide[var7 + 1] * this.frameTangent[var7]; + this.frameCenter[var7] = this.frameCenter[var7] + var13 * var12; + this.frameCenter[var7 + 1] = this.frameCenter[var7 + + 1] + + var14 * var12; + this.frameCenter[var7 + 2] = this.frameCenter[var7 + + 2] + + var15 * var12; + var16 = -1375920291; + break; + case 1128561976: + return; + case 1200337096: + default: + var3 = this.waveAmplitude.getCurrent(); + var4 = this.waveFrequency.getCurrent(); + var5 = (this.motionSetting.is("Helix")) ? 1 : 0; + var6 = 0; + var16 = -680587856; + } + } + } + + private void computeSideFrame(int var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 0; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + int var18 = -543456143; + + while (true) { + switch (var18) { + case -2124701424: + var9 = this.frameCenter[var3]; + var10 = this.frameCenter[var3 + 1]; + var11 = this.frameCenter[var3 + 2]; + if (var9 * var9 + var10 * var10 + var11 * var11 < 1.0E-7F) { + var18 = 1806826380; + } else { + var18 = 1859375139; + } + break; + case -1469859531: + if (var2 < var1) { + var18 = -1044102361; + } else { + var18 = -420606477; + } + break; + case -1138752998: + var12 = -var8; + var13 = 0.0F; + var14 = var6; + var15 = var12 * var12 + var14 * var14; + if (var15 < 1.0E-7F) { + var18 = -474082109; + } else { + var18 = 344701776; + } + break; + case -1044102361: + var3 = var2 * (3); + var4 = Math.max(0, var2 - ((-999815160 | 999815161) + (-999815160 & 999815161))) + * ((-834618349 | 834618352) + (-834618349 & 834618352)); + var5 = Math.min(var1 - (1), var2 + (-168736217 | 168736218) + (-168736217 & 168736218)) + * ((-1922893043 ^ 1922893046) + ((-1922893043 & 1922893046) << 1)); + var6 = this.frameCenter[var5] - this.frameCenter[var4]; + var7 = this.frameCenter[var5 + 1] + - this.frameCenter[var4 + 1]; + var8 = this.frameCenter[var5 + 2] + - this.frameCenter[var4 + 2]; + if (var6 * var6 + var7 * var7 + var8 * var8 < 1.0E-7F) { + var18 = 448212952; + } else { + var18 = -2124701424; + } + break; + case -543456143: + default: + var2 = 0; + var18 = -1469859531; + break; + case -474082109: + var12 = 1.0F; + var13 = 0.0F; + var14 = 0.0F; + var15 = 1.0F; + var18 = 344701776; + break; + case -420606477: + return; + case 344701776: + var16 = Mth.invSqrt(var15); + this.frameSide[var3] = var12 * var16; + this.frameSide[var3 + 1] = var13 * var16; + this.frameSide[var3 + 2] = var14 * var16; + var17 = Mth.invSqrt(var6 * var6 + var7 * var7 + var8 * var8); + this.frameTangent[var3] = var6 * var17; + this.frameTangent[var3 + 1] = var7 * var17; + this.frameTangent[var3 + 2] = var8 * var17; + var2++; + var18 = -1469859531; + break; + case 448212952: + var6 = 0.0F; + var7 = 0.0F; + var8 = 1.0F; + var18 = -2124701424; + break; + case 1806826380: + var9 = 0.0F; + var10 = 0.0F; + var11 = 1.0F; + var18 = 1859375139; + break; + case 1859375139: + var12 = var7 * var11 - var8 * var10; + var13 = var8 * var9 - var6 * var11; + var14 = var6 * var10 - var7 * var9; + var15 = var12 * var12 + var13 * var13 + var14 * var14; + if (var15 < 1.0E-7F) { + var18 = -1138752998; + } else { + var18 = 344701776; + } + } + } + } + + private float pointAlpha(us var1, int var2, int var3, long var4, long var6, float var8) { + int var9 = 0; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + int var14 = 1054619044; + + while (true) { + switch (var14) { + case -2094541129: + var15 = Math.min(1.0F, (var3 - ((-553287373 | 553287374) + (-553287373 & 553287374)) - var2) / 3.0F); + var14 = -277636890; + break; + case -1936179678: + var15 = 1.0F; + var14 = -277636890; + break; + case -822107471: + var13 = var16; + return Mth.clamp(var10, 0.0F, 1.0F) * var11 * var12 * var13; + case -277636890: + var11 = var15; + var12 = Mth.clamp((var8 - 0.75F) / 1.5F, 0.0F, 1.0F); + if (this.speedReactiveSetting.isEnabled()) { + var14 = 1889189910; + } else { + var14 = 1774161504; + } + break; + case 1054619044: + default: + var9 = var1.slot(var2); + var10 = 1.0F - (float)(var4 - var1.birth[var9]) / (float)var6; + if (this.fadeStartSetting.isEnabled()) { + var14 = -2094541129; + } else { + var14 = -1936179678; + } + break; + case 1774161504: + var16 = 1.0F; + var14 = -822107471; + break; + case 1889189910: + var16 = 0.25F + 0.75F * speedFactor(var1.speed[var9]); + var14 = -822107471; + } + } + } + + private float pointWidth(us var1, int var2, int var3) { + float var4 = 1.0F - (float)var2 / (var3 - ((1744639523 ^ -1744639522) + ((1744639523 & -1744639522) << 1))); + float var5 = this.taperAmount.getCurrent(); + String var7 = this.taperSetting.get(); + int var8 = -1; + switch (var7.hashCode()) { + case -1819200983: + if (var7.equals("Shrink")) { + var8 = 1; + } + break; + case 2228275: + if (var7.equals("Grow")) { + var8 = 0; + } + } + float var6 = switch (var8) { + case 0 -> Mth.lerp(var4, 1.0F, var5); + case 1 -> Mth.lerp(var4, 1.0F, 1.0F / var5); + default -> 1.0F; + }; + float var9 = this.speedReactiveSetting.isEnabled() ? 0.45F + 0.55F * speedFactor(var1.speed[var1.slot(var2)]) : 1.0F; + return this.widthSetting.getCurrent() * 0.5F * var6 * var9; + } + + private static float speedFactor(float var0) { + return Mth.clamp((var0 - 0.35F) / 1.25F, 0.0F, 1.0F); + } + + private void renderNormalFill(SubmitNodeCollector var1, PoseStack var2, Vec3 var3, long var4, long var6) { + RenderType var8 = arj.positionColorDepthNoWrite(); + var1.submitCustomGeometry(var2, var8, (var6x, var7) -> { + Iterator var8x = null; + Object var9 = null; + int var10 = 1596735538; + + while (true) { + switch (var10) { + case -2033709239: + return; + case -161982381: + if (var8x.hasNext()) { + var10 = 766967112; + } else { + var10 = -2033709239; + } + break; + case 766967112: + var9 = (ur)var8x.next(); + this.emitFill(var7, var6x, ((ur)var9).left, 0, var3, var4, var6); + this.emitFill(var7, var6x, ((ur)var9).right, 1, var3, var4, var6); + var10 = -161982381; + break; + case 1596735538: + default: + var8x = this.trails.values().iterator(); + var10 = -161982381; + } + } + }); + } + + private void emitFill(VertexConsumer var1, Pose var2, us var3, int var4, Vec3 var5, long var6, long var8) { + int var10 = 0; + int var11 = 0; + int var12 = 0; + int var13 = 0; + int var14 = -1052258823; + + while (true) { + switch (var14) { + case -1866365454: + return; + case -1052258823: + default: + var10 = this.computeFrame(var3, var5, var6, var8); + if (var10 == 0) { + var14 = -1866365454; + } else { + var14 = 1586907554; + } + break; + case -732289345: + var12 = this.color(var11, var10, var4, 0.85F); + var13 = this.color(var11 + 1, var10, var4, 0.85F); + this.framedVertex(var1, var2, var11, -this.frameWidth[var11], var12); + this.framedVertex(var1, var2, var11, this.frameWidth[var11], var12); + this.framedVertex( + var1, + var2, + var11 + 1, + this.frameWidth[var11 + 1], + var13 + ); + this.framedVertex( + var1, + var2, + var11 + 1, + -this.frameWidth[var11 + 1], + var13 + ); + var11++; + var14 = 1642110573; + break; + case -485847732: + this.emitSoftStrips(var1, var2, var4, var10, 1.0F, 0.85F); + return; + case 146588245: + return; + case 894462867: + if (this.softEdgesSetting.isEnabled()) { + var14 = -485847732; + } else { + var14 = 1861849575; + } + break; + case 1586907554: + if (this.glowSetting.isEnabled()) { + var14 = 2085102814; + } else { + var14 = 894462867; + } + break; + case 1642110573: + if (var11 < var10 - ((-700942109 | 700942110) + (-700942109 & 700942110))) { + var14 = -732289345; + } else { + var14 = 146588245; + } + break; + case 1861849575: + var11 = 0; + var14 = 1642110573; + break; + case 2085102814: + this.emitSoftStrips(var1, var2, var4, var10, 2.4F, 0.2975F); + var14 = 894462867; + } + } + } + + private void emitSoftStrips(VertexConsumer var1, Pose var2, int var3, int var4, float var5, float var6) { + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + int var12 = 0; + int var13 = 1040611726; + + while (true) { + switch (var13) { + case -1702535224: + var7++; + var13 = 1436394376; + break; + case 222364146: + var9 = this.color(var7, var4, var3, var6 * RIBBON_EDGE_ALPHA[var8]); + var10 = this.color(var7, var4, var3, var6 * RIBBON_EDGE_ALPHA[var8 + 1]); + var11 = this.color( + var7 + 1, + var4, + var3, + var6 * RIBBON_EDGE_ALPHA[var8 + 1] + ); + var12 = this.color(var7 + 1, var4, var3, var6 * RIBBON_EDGE_ALPHA[var8]); + this.framedVertex(var1, var2, var7, RIBBON_OFFSETS[var8] * this.frameWidth[var7] * var5, var9); + this.framedVertex( + var1, var2, var7, RIBBON_OFFSETS[var8 + 1] * this.frameWidth[var7] * var5, var10 + ); + this.framedVertex( + var1, + var2, + var7 + 1, + RIBBON_OFFSETS[var8 + 1] + * this.frameWidth[var7 + 1] + * var5, + var11 + ); + this.framedVertex( + var1, + var2, + var7 + 1, + RIBBON_OFFSETS[var8] * this.frameWidth[var7 + 1] * var5, + var12 + ); + var8++; + var13 = 2072904379; + break; + case 1040611726: + default: + var7 = 0; + var13 = 1436394376; + break; + case 1286180532: + var8 = 0; + var13 = 2072904379; + break; + case 1436394376: + if (var7 < var4 - ((-881893340 | 881893341) + (-881893340 & 881893341))) { + var13 = 1286180532; + } else { + var13 = 2093603637; + } + break; + case 2072904379: + if (var8 < (-1296072171 ^ 1296072174) + ((-1296072171 & 1296072174) << 1)) { + var13 = 222364146; + } else { + var13 = -1702535224; + } + break; + case 2093603637: + return; + } + } + } + + private void renderLines(SubmitNodeCollector var1, PoseStack var2, Vec3 var3, long var4, long var6) { + float var8 = this.lineWidthSetting.getCurrent(); + RenderType var9 = arj.lines(); + var1.submitCustomGeometry(var2, var9, (var7, var8x) -> { + Iterator var9x = null; + Object var10 = null; + int var11 = -1242500031; + + while (true) { + switch (var11) { + case -1242500031: + default: + var9x = this.trails.values().iterator(); + var11 = -483249355; + break; + case -929188558: + var10 = (ur)var9x.next(); + this.emitLines(var8x, var7, ((ur)var10).left, 0, var3, var4, var6, var8); + this.emitLines(var8x, var7, ((ur)var10).right, 1, var3, var4, var6, var8); + var11 = -483249355; + break; + case -483249355: + if (var9x.hasNext()) { + var11 = -929188558; + } else { + var11 = 1016597592; + } + break; + case 1016597592: + return; + } + } + }); + } + + private void emitLines(VertexConsumer var1, Pose var2, us var3, int var4, Vec3 var5, long var6, long var8, float var10) { + int var11 = 0; + int var12 = 0; + float var13 = 0.0F; + int var14 = 0; + int var15 = 0; + int var16 = 0; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + float var27 = 0.0F; + float var29 = 0.0F; + int var28 = 961105301; + + while (true) { + switch (var28) { + case -2145452670: + if (var12 < (-36580019 ^ 36580021) + ((-36580019 & 36580021) << 1)) { + var28 = 1300076898; + } else { + var28 = -344859124; + } + break; + case -2084186675: + var12++; + var28 = -2145452670; + break; + case -1817805527: + var27 = Mth.invSqrt(var26); + var23 *= var27; + var24 *= var27; + var25 *= var27; + var28 = -562501032; + break; + case -855908249: + var29 = 1.0F; + var28 = -294282296; + break; + case -562501032: + var1.addVertex(var2, var17, var18, var19) + .setColor(this.color(var14, var11, var4, 1.0F)) + .setNormal(var2, var23, var24, var25) + .setLineWidth(var10); + var1.addVertex(var2, var20, var21, var22) + .setColor(this.color(var14 + 1, var11, var4, 1.0F)) + .setNormal(var2, var23, var24, var25) + .setLineWidth(var10); + var14++; + var28 = 235988406; + break; + case -344859124: + return; + case -294282296: + var13 = var29; + var14 = 0; + var28 = 235988406; + break; + case 235988406: + if (var14 < var11 - ((-876687548 | 876687549) + (-876687548 & 876687549))) { + var28 = 645444140; + } else { + var28 = -2084186675; + } + break; + case 645444140: + var15 = var14 * (3); + var16 = (var14 + (-537361822 ^ 537361823) + ((-537361822 & 537361823) << 1)) * ((35646551 | -35646548) + (35646551 & -35646548)); + var17 = this.frameCenter[var15] + this.frameSide[var15] * this.frameWidth[var14] * var13; + var18 = this.frameCenter[var15 + 1] + + this.frameSide[var15 + 1] * this.frameWidth[var14] * var13; + var19 = this.frameCenter[var15 + 2] + + this.frameSide[var15 + 2] * this.frameWidth[var14] * var13; + var20 = this.frameCenter[var16] + this.frameSide[var16] * this.frameWidth[var14 + 1] * var13; + var21 = this.frameCenter[var16 + 1] + + this.frameSide[var16 + 1] + * this.frameWidth[var14 + 1] + * var13; + var22 = this.frameCenter[var16 + 2] + + this.frameSide[var16 + 2] + * this.frameWidth[var14 + 1] + * var13; + var23 = var20 - var17; + var24 = var21 - var18; + var25 = var22 - var19; + var26 = var23 * var23 + var24 * var24 + var25 * var25; + if (var26 > 0.0F) { + var28 = -1817805527; + } else { + var28 = -562501032; + } + break; + case 961105301: + default: + var11 = this.computeFrame(var3, var5, var6, var8); + var12 = 0; + var28 = -2145452670; + break; + case 1215863923: + var29 = -1.0F; + var28 = -294282296; + break; + case 1300076898: + if (var12 == 0) { + var28 = 1215863923; + } else { + var28 = -855908249; + } + } + } + } + + private void renderShaderFill(Vec3 var1, long var2, long var4) { + atd var6 = null; + int var7 = 0; + int var8 = 0; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + GpuTextureView var13 = null; + int var14 = 0; + int var15 = 0; + BufferBuilder var16 = null; + Iterator var17 = null; + Object var18 = null; + GpuTextureView var20 = null; + int var21 = 0; + int var19 = -536970398; + + while (true) { + switch (var19) { + case -2136278249: + return; + case -2012138199: + arj.setCurrentLayer(arj.positionColor()); + if (var7 != 0) { + var19 = -1839411867; + } else { + var19 = 1664882690; + } + break; + case -1839411867: + atd.bindTexture(var13, (boolean)((((-1934232801 ^ 1934232802) + ((-1934232801 & 1934232802) << 1))) != 0)); + var19 = 1664882690; + break; + case -1694657022: + var20 = atb.sceneSnapshot(); + var19 = 874367945; + break; + case -1693928595: + var7 = (this.shaderType.is("LiquidGlass")) ? 1 : 0; + var8 = this.shaderTintColor(); + var9 = (var8 >> (-1374062358 | 1374062374) + (-1374062358 & 1374062374) & (1433123018 ^ -1433122763) + ((1433123018 & -1433122763) << 1)) + / 255.0F; + var10 = (var8 >> (115006825 ^ -115006817) + ((115006825 & -115006817) << 1) & (1985493939 | -1985493684) + (1985493939 & -1985493684)) / 255.0F; + var11 = (var8 & (1149077965 | -1149077710) + (1149077965 & -1149077710)) / 255.0F; + var12 = (float)(var2 % ((-2537733664868590917L ^ 2537733664868690917L) + ((-2537733664868590917L & 2537733664868690917L) << 1))) + / 1000.0F + * this.shaderSpeed.getCurrent(); + if (var7 != 0) { + var19 = -1694657022; + } else { + var19 = 1854273806; + } + break; + case -1582505796: + if (var13 == null) { + var19 = -1163674854; + } else { + var19 = -1049390194; + } + break; + case -1375620694: + if (var15 < var14) { + var19 = 383608497; + } else { + var19 = -324230228; + } + break; + case -1163674854: + return; + case -1049390194: + if (var7 != 0) { + var19 = 601859702; + } else { + var19 = 231348915; + } + break; + case -648103111: + var6.setCameraPos((float)var1.x, (float)var1.y, (float)var1.z); + var19 = -2012138199; + break; + case -536970398: + default: + var6 = this.shaderProgram(); + if (var6 == null) { + var19 = -2136278249; + } else { + var19 = -1693928595; + } + break; + case -324230228: + return; + case 164619413: + if (this.shaderType.is("AlienNebula")) { + var19 = -648103111; + } else { + var19 = -2012138199; + } + break; + case 231348915: + var21 = 2; + var19 = 881872814; + break; + case 283122132: + arj.drawCurrent(var16); + var15++; + var19 = -1375620694; + break; + case 383608497: + var6.use(); + var6.setResolution(mc.getWindow().getWidth(), mc.getWindow().getHeight()); + var6.setTime(var12); + var6.setTintColor(var9, var10, var11); + var6.setFade(this.shaderAlpha.getCurrent()); + if (!this.shaderType.is("LivingArmor")) { + var19 = 164619413; + } else { + var19 = -648103111; + } + break; + case 601859702: + var21 = 1; + var19 = 881872814; + break; + case 874367945: + var13 = var20; + if (var7 != 0) { + var19 = -1582505796; + } else { + var19 = -1049390194; + } + break; + case 881872814: + var14 = var21; + var15 = 0; + var19 = -1375620694; + break; + case 1101905732: + if (var17.hasNext()) { + var19 = 1887184226; + } else { + var19 = 283122132; + } + break; + case 1664882690: + var16 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_COLOR); + var17 = this.trails.values().iterator(); + var19 = 1101905732; + break; + case 1854273806: + var20 = null; + var19 = 874367945; + break; + case 1887184226: + var18 = (ur)var17.next(); + this.emitShaderRibbon(var16, ((ur)var18).left, var1, var2, var4, (boolean)((var7) != 0)); + this.emitShaderRibbon(var16, ((ur)var18).right, var1, var2, var4, (boolean)((var7) != 0)); + var19 = 1101905732; + } + } + } + + private void emitShaderRibbon(BufferBuilder var1, us var2, Vec3 var3, long var4, long var6, boolean var8) { + int var9 = 0; + int var10 = 0; + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = 0; + int var14 = 0; + int var15 = 0; + int var16 = 0; + int var17 = 0; + int var19 = 0; + int var20 = 0; + int var21 = 0; + int var22 = 0; + int var18 = 2136073577; + + while (true) { + switch (var18) { + case -1593888715: + var21 = whiteAlpha( + this.frameAlpha[var10 + 1] + * RIBBON_EDGE_ALPHA[var13 + 1] + ); + var18 = 832519750; + break; + case -1573726253: + if (var10 < var9 - ((-49155359 ^ 49155360) + ((-49155359 & 49155360) << 1))) { + var18 = 108558536; + } else { + var18 = 2136787260; + } + break; + case -1216881619: + var15 = var20; + if (var8) { + var18 = -956707962; + } else { + var18 = -1593888715; + } + break; + case -1005961245: + if (var8) { + var18 = 1276254793; + } else { + var18 = 1523265248; + } + break; + case -956707962: + var21 = glassColor( + RIBBON_V[var13 + 1], + var12, + this.frameAlpha[var10 + 1] + ); + var18 = 832519750; + break; + case -892222981: + var10++; + var18 = -1573726253; + break; + case -880452216: + var17 = var22; + this.ribbonVertex(var1, var10, RIBBON_OFFSETS[var13] * this.frameWidth[var10], var14); + this.ribbonVertex(var1, var10, RIBBON_OFFSETS[var13 + 1] * this.frameWidth[var10], var15); + this.ribbonVertex( + var1, + var10 + 1, + RIBBON_OFFSETS[var13 + 1] + * this.frameWidth[var10 + 1], + var16 + ); + this.ribbonVertex( + var1, + var10 + 1, + RIBBON_OFFSETS[var13] * this.frameWidth[var10 + 1], + var17 + ); + var13++; + var18 = -594876019; + break; + case -794505658: + var20 = glassColor(RIBBON_V[var13 + 1], var11, this.frameAlpha[var10]); + var18 = -1216881619; + break; + case -594876019: + if (var13 < (-1669430882 | 1669430885) + (-1669430882 & 1669430885)) { + var18 = -1005961245; + } else { + var18 = -892222981; + } + break; + case 108558536: + var11 = (float)var10 / (var9 - ((-836584904 | 836584905) + (-836584904 & 836584905))); + var12 = (float)(var10 + (-30998666 ^ 30998667) + ((-30998666 & 30998667) << 1)) + / (var9 - ((-1719356383 ^ 1719356384) + ((-1719356383 & 1719356384) << 1))); + var13 = 0; + var18 = -594876019; + break; + case 792093020: + var20 = whiteAlpha(this.frameAlpha[var10] * RIBBON_EDGE_ALPHA[var13 + 1]); + var18 = -1216881619; + break; + case 832519750: + var16 = var21; + if (var8) { + var18 = 1757601258; + } else { + var18 = 1076799409; + } + break; + case 1076799409: + var22 = whiteAlpha(this.frameAlpha[var10 + 1] * RIBBON_EDGE_ALPHA[var13]); + var18 = -880452216; + break; + case 1276254793: + var19 = glassColor(RIBBON_V[var13], var11, this.frameAlpha[var10]); + var18 = 1476654089; + break; + case 1476654089: + var14 = var19; + if (var8) { + var18 = -794505658; + } else { + var18 = 792093020; + } + break; + case 1523265248: + var19 = whiteAlpha(this.frameAlpha[var10] * RIBBON_EDGE_ALPHA[var13]); + var18 = 1476654089; + break; + case 1757601258: + var22 = glassColor(RIBBON_V[var13], var12, this.frameAlpha[var10 + 1]); + var18 = -880452216; + break; + case 2136073577: + default: + var9 = this.computeFrame(var2, var3, var4, var6); + var10 = 0; + var18 = -1573726253; + break; + case 2136787260: + return; + } + } + } + + private void ribbonVertex(BufferBuilder var1, int var2, float var3, int var4) { + int var5 = var2 * (3); + var1.addVertex( + this.frameCenter[var5] + this.frameSide[var5] * var3, + this.frameCenter[var5 + 1] + + this.frameSide[var5 + 1] * var3, + this.frameCenter[var5 + 2] + + this.frameSide[var5 + 2] * var3 + ) + .setColor(var4); + } + + private void framedVertex(VertexConsumer var1, Pose var2, int var3, float var4, int var5) { + int var6 = var3 * (3); + var1.addVertex( + var2, + this.frameCenter[var6] + this.frameSide[var6] * var4, + this.frameCenter[var6 + 1] + + this.frameSide[var6 + 1] * var4, + this.frameCenter[var6 + 2] + + this.frameSide[var6 + 2] * var4 + ) + .setColor(var5); + } + + private static int glassColor(float var0, float var1, float var2) { + int var3 = Mth.clamp( + Math.round(var0 * 255.0F), 0, (-810159436 ^ 810159691) + ((-810159436 & 810159691) << 1) + ); + int var4 = Mth.clamp( + Math.round(var1 * 255.0F), 0, (176866288 ^ -176866033) + ((176866288 & -176866033) << 1) + ); + int var5 = Mth.clamp( + Math.round(var2 * 255.0F), 0, (-223664833 ^ 223665088) + ((-223664833 & 223665088) << 1) + ); + return var5 << (1064201216 ^ -1064201192) + ((1064201216 & -1064201192) << 1) + | var3 << (-892446222 | 892446238) + (-892446222 & 892446238) + | var4 << 255; + } + + private static int whiteAlpha(float var0) { + return Mth.clamp( + Math.round(var0 * 255.0F), + 0, + (-1566428593 | 1566428848) + (-1566428593 & 1566428848) + ) + << (2013134614 ^ -2013134590) + ((2013134614 & -2013134590) << 1) + | (-2011767131 | 2028544346) + (-2011767131 & 2028544346); + } + + private atd shaderProgram() { + String var1 = this.shaderType.get(); + int var2 = -1; + switch (var1.hashCode()) { + case -1997372447: + if (var1.equals("Matrix")) { + var2 = 4; + } + break; + case -1901891230: + if (var1.equals("Plasma")) { + var2 = 2; + } + break; + case -1286538368: + if (var1.equals("LiquidGlass")) { + var2 = 3; + } + break; + case -949676042: + if (var1.equals("LivingArmor")) { + var2 = 5; + } + break; + case -289774394: + if (var1.equals("AlienNebula")) { + var2 = 6; + } + break; + case 86836: + if (var1.equals("Web")) { + var2 = 1; + } + break; + case 2024198218: + if (var1.equals("Cosmos")) { + var2 = 0; + } + } + return switch (var2) { + case 0 -> atb.worldStarfieldProgram; + case 1 -> atb.worldCobwebProgram; + case 2 -> atb.worldPlasmaProgram; + case 3 -> atb.trailGlassProgram; + case 4 -> atb.worldMatrixProgram; + case 5 -> atb.worldLivingArmorProgram; + case 6 -> atb.worldAlienNebulaProgram; + default -> atb.worldNebulaProgram; + }; + } + + private int shaderTintColor() { + String var2 = this.shaderColorSetting.get(); + int var3 = -1; + switch (var2.hashCode()) { + case -1656737386: + if (var2.equals("Rainbow")) { + var3 = 1; + } + break; + case 2029746065: + if (var2.equals("Custom")) { + var3 = 0; + } + } + int var1 = switch (var3) { + case 0 -> this.shaderCustomColor.getIntColor(); + case 1 -> asu.fromHSB( + (float)(System.currentTimeMillis() % ((-3387205328411156401L ^ 3387205328411159401L) + ((-3387205328411156401L & 3387205328411159401L) << 1))) + / 3000.0F, + 0.85F, + 1.0F + ) + .getRGB(); + default -> bz.getInstance().getThemeManager().getCurrentTheme().getColor().getRGB(); + }; + return var1 & 16777215; + } + + private int color(int var1, int var2, int var3, float var4) { + String var6 = this.colorSetting.get(); + int var7 = -1; + switch (var6.hashCode()) { + case -1656737386: + if (var6.equals("Rainbow")) { + var7 = 0; + } + break; + case 2029746065: + if (var6.equals("Custom")) { + var7 = 1; + } + } + asu var5 = switch (var7) { + case 0 -> asu.fromHSB( + (float)(System.currentTimeMillis() % ((-4203486117051247031L | 4203486117051250031L) + (-4203486117051247031L & 4203486117051250031L))) / 3000.0F + + (float)var1 / var2 * 0.5F, + 0.85F, + 1.0F + ); + case 1 -> var3 == (-1243922706 | 1243922707) + (-1243922706 & 1243922707) && this.splitWingsSetting.isEnabled() + ? this.rightColorSetting.getColor(1.0F) + : this.customColorSetting.getColor(1.0F); + default -> bz.getInstance().getThemeManager().getClientColor(var1 * ((-1423961786 | 1423961788) + (-1423961786 & 1423961788))); + }; + return var5.mulAlpha(Mth.clamp(this.frameAlpha[var1] * var4, 0.0F, 1.0F)).getRGB(); + } + + static { + float[] var10000 = new float[4]; + var10000[0] = -1.0F; + var10000[1] = -0.44F; + var10000[2] = 0.44F; + var10000[3] = 1.0F; + RIBBON_OFFSETS = var10000; + var10000 = new float[4]; + var10000[0] = 0.0F; + var10000[1] = 1.0F; + var10000[2] = 1.0F; + var10000[3] = 0.0F; + RIBBON_EDGE_ALPHA = var10000; + var10000 = new float[4]; + var10000[0] = 0.0F; + var10000[1] = 0.22F; + var10000[2] = 0.78F; + var10000[3] = 1.0F; + RIBBON_V = var10000; + } +} diff --git a/src/main/java/defpackage/uu.java b/src/main/java/defpackage/uu.java new file mode 100644 index 0000000..a1f8373 --- /dev/null +++ b/src/main/java/defpackage/uu.java @@ -0,0 +1,315 @@ +package defpackage; + +import java.util.List; + +@rn(name = "EnchantGlint", description = "Replaces the enchantment glint with custom styles", category = rl.RENDER) +public final class uu extends rm { + private static final String TARGET_ITEMS = "Items"; + private static final String TARGET_ARMOR = "Armor"; + private static final String TARGET_SPECIAL = "Special"; + private static final int TARGET_ITEMS_INDEX = 0; + private static final int TARGET_ARMOR_INDEX = 1; + private static final int TARGET_SPECIAL_INDEX = 2; + private static final asu DEFAULT_PRIMARY = new asu( + 90, + 169, + (-2102409232 ^ 2102409487) + ((-2102409232 & 2102409487) << 1) + ); + private static final asu DEFAULT_SECONDARY = new asu( + 255, + 78, + (-2045671709 | 2045671923) + (-2045671709 & 2045671923) + ); + private static final float SPEED_DEFAULT = 1.0F; + private static final float SPEED_MIN = 0.1F; + private static final float SPEED_MAX = 4.0F; + private static final float SPEED_STEP = 0.1F; + private static final float SCALE_DEFAULT = 1.0F; + private static final float SCALE_MIN = 0.2F; + private static final float SCALE_MAX = 4.0F; + private static final float SCALE_STEP = 0.05F; + private static final float COVERAGE_DEFAULT = 0.35F; + private static final float COVERAGE_MIN = 0.0F; + private static final float COVERAGE_MAX = 1.0F; + private static final float COVERAGE_STEP = 0.05F; + private static final float STRENGTH_DEFAULT = 1.5F; + private static final float STRENGTH_MIN = 0.2F; + private static final float STRENGTH_MAX = 3.0F; + private static final float STRENGTH_STEP = 0.05F; + private static final int SIGNATURE_PRIME = 31; + private static final int SIGNATURE_UNSET = 0; + public static final uu INSTANCE = new uu(); + private final sg styleSetting = new sg("Style", atw.names()) + .describe( + atw.RAINBOW.displayName(), + "Full spectrum sweeping across the item" + ) + .describe( + atw.SOLID.displayName(), + "Vanilla streaks in a single color" + ) + .describe( + atw.GRADIENT.displayName(), + "Streaks blending between both colors" + ) + .describe( + atw.PULSE.displayName(), + "Breathing streaks that zoom in and out" + ) + .describe( + atw.FIRE.displayName(), + "Rising embers burning upwards" + ) + .describe( + atw.GALAXY.displayName(), "Slowly turning nebula with stars" + ) + .describe( + atw.HOLOGRAM.displayName(), + "Iridescent scanlines running down" + ) + .describe( + atw.GLITCH.displayName(), "Hard blocks jumping every few frames" + ) + .describe(atw.SPARKLE.displayName(), "Drifting glitter points") + .describe(atw.AURORA.displayName(), "Soft waving ribbons") + .describe(atw.HIDDEN.displayName(), "Removes the glint entirely") + .description( + "Visual style of the enchantment glint" + ); + private final rx colorSetting = new rx( + "Color", DEFAULT_PRIMARY, () -> this.style().usesPrimary() + ) + .description("Main glint color"); + private final rx secondColorSetting = new rx( + "Color 2", DEFAULT_SECONDARY, () -> this.style().usesSecondary() + ) + .description("Second glint color"); + private final sm speedSetting = new sm("Speed", 1.0F, 0.1F, 4.0F, 0.1F, () -> { + int var2 = 0; + int var1 = -1324392333; + + while (true) { + switch (var1) { + case -1495163199: + return Boolean.valueOf((boolean)((var2) != 0)); + case -1324392333: + default: + if (!this.style().isHidden()) { + var1 = 1513636717; + } else { + var1 = 2096757713; + } + break; + case 1513636717: + var2 = 1; + var1 = -1495163199; + break; + case 2096757713: + var2 = 0; + var1 = -1495163199; + } + } + }) + .description( + "How fast the pattern travels" + ); + private final sm scaleSetting = new sm("Scale", 1.0F, 0.2F, 4.0F, 0.05F, () -> { + int var2 = 0; + int var1 = 537741823; + + while (true) { + switch (var1) { + case 537741823: + default: + if (!this.style().isHidden()) { + var1 = 1858389693; + } else { + var1 = 635447885; + } + break; + case 635447885: + var2 = 0; + var1 = 1717658142; + break; + case 1717658142: + return Boolean.valueOf((boolean)((var2) != 0)); + case 1858389693: + var2 = 1; + var1 = 1717658142; + } + } + }).description("Pattern density on the item"); + private final sm coverageSetting = new sm( + "Coverage", 0.35F, 0.0F, 1.0F, 0.05F, () -> { + int var2 = 0; + int var1 = -146826576; + + while (true) { + switch (var1) { + case -146826576: + default: + if (!this.style().isHidden()) { + var1 = 222131919; + } else { + var1 = 1717246614; + } + break; + case 222131919: + var2 = 1; + var1 = 669128032; + break; + case 669128032: + return Boolean.valueOf((boolean)((var2) != 0)); + case 1717246614: + var2 = 0; + var1 = 669128032; + } + } + } + ) + .description( + "How much of the item the glow fills between streaks" + ); + private final sm strengthSetting = new sm( + "Strength", 1.5F, 0.2F, 3.0F, 0.05F, () -> { + int var2 = 0; + int var1 = -953155496; + + while (true) { + switch (var1) { + case -1325047991: + var2 = 1; + var1 = 142150958; + break; + case -967047696: + var2 = 0; + var1 = 142150958; + break; + case -953155496: + default: + if (!this.style().isHidden()) { + var1 = -1325047991; + } else { + var1 = -967047696; + } + break; + case 142150958: + return Boolean.valueOf((boolean)((var2) != 0)); + } + } + } + ) + .description( + "Overall brightness of the glow" + ); + private final si targetSetting = si.create( + "Apply to", + List.of( + "Items", + "Armor", + "Special" + ) + ) + .describe( + "Items", + "Held, dropped and inventory items" + ) + .describe( + "Armor", + "Worn armor pieces" + ) + .describe( + "Special", + "Tridents and shields" + ); + private atk cachedPaint; + private int cachedSignature = 0; + private String cachedStyleName; + private atw cachedStyle = atw.RAINBOW; + + private uu() { + } + + public atw style() { + String var1 = null; + int var2 = -384632049; + + while (true) { + switch (var2) { + case -597694952: + this.cachedStyle = atw.byName(var1); + this.cachedStyleName = var1; + var2 = 923724937; + break; + case -384632049: + default: + var1 = this.styleSetting.get(); + if (!var1.equals(this.cachedStyleName)) { + var2 = -597694952; + } else { + var2 = 923724937; + } + break; + case 923724937: + return this.cachedStyle; + } + } + } + + public float speed() { + return this.speedSetting.getCurrent(); + } + + public float scale() { + return this.scaleSetting.getCurrent(); + } + + public boolean appliesToItems() { + return this.targetSetting.isEnable((1442339645 | -1442339645) + (1442339645 & -1442339645)); + } + + public boolean appliesToArmor() { + return this.targetSetting.isEnable((-586599867 | 586599868) + (-586599867 & 586599868)); + } + + public boolean appliesToSpecial() { + return this.targetSetting.isEnable((1885778087 | -1885778085) + (1885778087 & -1885778085)); + } + + public atk paint() { + int var1 = 0; + int var2 = -178351797; + + while (true) { + switch (var2) { + case -721659154: + this.cachedPaint = atk.of( + this.colorSetting.getColor(), this.secondColorSetting.getColor(), this.coverageSetting.getCurrent(), this.strengthSetting.getCurrent() + ); + this.cachedSignature = var1; + var2 = 1328014802; + break; + case -178351797: + default: + var1 = this.colorSetting.getIntColor(); + var1 = var1 * ((1103872478 ^ -1103872447) + ((1103872478 & -1103872447) << 1)) + this.secondColorSetting.getIntColor(); + var1 = var1 * ((304562235 | -304562204) + (304562235 & -304562204)) + Float.floatToIntBits(this.coverageSetting.getCurrent()); + var1 = var1 * ((610344849 ^ -610344818) + ((610344849 & -610344818) << 1)) + Float.floatToIntBits(this.strengthSetting.getCurrent()); + if (this.cachedPaint != null) { + var2 = 1549433585; + } else { + var2 = -721659154; + } + break; + case 1328014802: + return this.cachedPaint; + case 1549433585: + if (var1 != this.cachedSignature) { + var2 = -721659154; + } else { + var2 = 1328014802; + } + } + } + } +} diff --git a/src/main/java/defpackage/uv.java b/src/main/java/defpackage/uv.java new file mode 100644 index 0000000..492b251 --- /dev/null +++ b/src/main/java/defpackage/uv.java @@ -0,0 +1,33 @@ +package defpackage; + +record uv(int rgb, boolean rainbow) { + int of(uw var1) { + int var2 = 1698705268; + + while (true) { + switch (var2) { + case -1846399811: + return var1.rgb; + case -1694906503: + return arh.rainbow(var1.index * (40), 0.6F, 1.0F).getRGB() + & 16777215; + case -1601398326: + return this.rgb; + case 397502687: + if (this.rgb < 0) { + var2 = -1846399811; + } else { + var2 = -1601398326; + } + break; + case 1698705268: + default: + if (this.rainbow) { + var2 = -1694906503; + } else { + var2 = 397502687; + } + } + } + } +} diff --git a/src/main/java/defpackage/uw.java b/src/main/java/defpackage/uw.java new file mode 100644 index 0000000..d7fed40 --- /dev/null +++ b/src/main/java/defpackage/uw.java @@ -0,0 +1,342 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.Objects; +import java.util.concurrent.ThreadLocalRandom; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +final class uw { + private ux this$0; + + final long spawnTime; + Vec3 pos; + private double velocityX; + private double velocityY; + private double velocityZ; + final int index; + final int rgb; + private final double[] trail; + private int trailStart; + private int trailSize; + + uw(ux var1, Vec3 var2, Vec3 var3, int var4, int var5) { + Objects.requireNonNull(var1); + this.this$0 = var1; + this.spawnTime = System.currentTimeMillis(); + this.pos = var2; + this.velocityX = var3.x; + this.velocityY = var3.y; + this.velocityZ = var3.z; + this.index = var4; + this.rgb = var5; + this.trail = new double[(int)var1.trailSetting.getMax() * (3)]; + this.pushTrail(var2); + } + + private void pushTrail(Vec3 var1) { + int var2 = 0; + int var3 = 0; + int var4 = -2082941948; + + while (true) { + switch (var4) { + case -2082941948: + default: + var2 = this.trail.length / (3); + var3 = (this.trailStart + this.trailSize) % var2 * (3); + this.trail[var3] = var1.x; + this.trail[var3 + 1] = var1.y; + this.trail[var3 + 2] = var1.z; + if (this.trailSize < var2) { + var4 = -1411642369; + } else { + var4 = -803535523; + } + break; + case -1481185416: + return; + case -1411642369: + this.trailSize += 1; + var4 = -1481185416; + break; + case -803535523: + this.trailStart = (this.trailStart + (-594465323 ^ 594465324) + ((-594465323 & 594465324) << 1)) % var2; + var4 = -1481185416; + } + } + } + + void update(float var1, int var2) { + ThreadLocalRandom var3 = null; + double var4 = 0.0; + int var6 = 0; + int var7 = -1921780996; + + while (true) { + switch (var7) { + case -1921780996: + default: + var3 = ThreadLocalRandom.current(); + var4 = var1 * 1.5; + this.velocityX = Mth.clamp(this.velocityX + (var3.nextDouble() - 0.5) * 0.01, -var4, var4); + this.velocityY = Mth.clamp(this.velocityY + (var3.nextDouble() - 0.5) * 0.01, -var4, var4); + this.velocityZ = Mth.clamp(this.velocityZ + (var3.nextDouble() - 0.5) * 0.01, -var4, var4); + this.pos = this.pos.add(this.velocityX, this.velocityY, this.velocityZ); + if (var2 <= 0) { + var7 = 587961839; + } else { + var7 = 650936614; + } + break; + case -602691761: + return; + case 72472051: + this.trailStart = (this.trailStart + (-1098731136 ^ 1098731137) + ((-1098731136 & 1098731137) << 1)) % var6; + this.trailSize -= 1; + var7 = 2145408502; + break; + case 587961839: + this.trailSize = 0; + this.trailStart = 0; + return; + case 650936614: + this.pushTrail(this.pos); + var6 = this.trail.length / (3); + var7 = 2145408502; + break; + case 2145408502: + if (this.trailSize > var2) { + var7 = 72472051; + } else { + var7 = -602691761; + } + } + } + } + + private float lifeAlpha(long var1, long var3) { + long var5 = (-8716815972487178681L | 8716815972487178681L) + (-8716815972487178681L & 8716815972487178681L); + float var7 = 0.0F; + int var8 = -1398885194; + + while (true) { + switch (var8) { + case -1719060523: + if ((float)var5 >= (float)var3 - var7) { + var8 = 1122744685; + } else { + var8 = 786281240; + } + break; + case -1398885194: + default: + var5 = var1 - this.spawnTime; + var7 = 500.0F; + if ((float)var5 <= var7) { + var8 = 1303916116; + } else { + var8 = -1719060523; + } + break; + case 786281240: + return 1.0F; + case 1122744685: + return Math.max(0.0F, (float)(var3 - var5) / var7); + case 1303916116: + return (float)var5 / var7; + } + } + } + + private void render(VertexConsumer var1, Pose var2, Vec3 var3, long var4, long var6, boolean var8, boolean var9, float var10, uv var11) { + int var12 = var11.of(this); + float var13 = this.lifeAlpha(var4, var6); + if (!(var13 <= 0.0F)) { + ThreadLocalRandom var14 = ThreadLocalRandom.current(); + if (this.trailSize > 0) { + int var15 = this.trail.length / (3); + + for (int var16 = 0; var16 < this.trailSize; var16++) { + float var17 = (float)(var16 + (252330760 ^ -252330759) + ((252330760 & -252330759) << 1)) / this.trailSize; + float var18 = var13 * var17 * var17; + if (var18 > 0.01F) { + int var19 = (this.trailStart + var16) % var15 * (3); + double var20 = this.trail[var19]; + double var22 = this.trail[var19 + 1]; + double var24 = this.trail[var19 + 2]; + float var26 = 0.18F * var17 * var10; + this.drawGlow( + var1, + var2, + var20, + var22, + var24, + var3, + var26, + ux.withAlpha(var12, var18), + ux.withAlpha(var12, var18 * 0.15F), + (1643454241 ^ -1643454234) + ((1643454241 & -1643454234) << 1) + ); + if (var9 && var16 % 3== 0 && var17 > 0.3F) { + int var27 = (1806556896 ^ -1806556894) + + ((1806556896 & -1806556894) << 1) + + var14.nextInt((1246366605 ^ -1246366602) + ((1246366605 & -1246366602) << 1)); + + for (int var28 = 0; var28 < var27; var28++) { + double var29 = var20 + (var14.nextDouble() - 0.5) * 0.3; + double var31 = var22 + (var14.nextDouble() - 0.5) * 0.3; + double var33 = var24 + (var14.nextDouble() - 0.5) * 0.3; + float var35 = (0.04F + var14.nextFloat() * 0.03F) * var10; + this.drawGlow( + var1, + var2, + var29, + var31, + var33, + var3, + var35, + ux.withAlpha(16777215, var18 * 0.7F), + ux.withAlpha(var12, var18 * 0.1F), + (646502124 | -646502119) + (646502124 & -646502119) + ); + } + } + } + } + } + + float var36 = (float)( + ( + Math.sin( + ( + var4 + - this.spawnTime + + this.index * ((7275423944635153499L ^ -7275423944635153362L) + ((7275423944635153499L & -7275423944635153362L) << 1)) + ) + / 300.0 + ) + + 1.0 + ) + / 2.0 + ); + float var37 = var13 * (0.45F + 0.55F * var36); + if (var8) { + this.drawGlow( + var1, + var2, + this.pos.x, + this.pos.y, + this.pos.z, + var3, + 0.5F * var10, + ux.withAlpha(var12, var37 * 0.4F), + ux.withAlpha(var12, 0.0F), + (765599604 | -765599592) + (765599604 & -765599592) + ); + } + + this.drawGlow( + var1, + var2, + this.pos.x, + this.pos.y, + this.pos.z, + var3, + 0.22F * var10, + ux.withAlpha(var12, var37 * 0.9F), + ux.withAlpha(var12, var37 * 0.2F), + (-23423585 ^ 23423595) + ((-23423585 & 23423595) << 1) + ); + this.drawGlow( + var1, + var2, + this.pos.x, + this.pos.y, + this.pos.z, + var3, + 0.1F * var10, + ux.withAlpha(16777215, var37), + ux.withAlpha(16777215, var37 * 0.6F), + (-2069380008 | 2069380016) + (-2069380008 & 2069380016) + ); + } + } + + private void drawGlow(VertexConsumer var1, Pose var2, double var3, double var5, double var7, Vec3 var9, float var10, int var11, int var12, int var13) { + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float[] var17 = null; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + int var27 = 0; + float var28 = 0.0F; + float var29 = 0.0F; + float var30 = 0.0F; + float var31 = 0.0F; + float var32 = 0.0F; + int var33 = 1237793087; + + while (true) { + switch (var33) { + case -1226652694: + if (var27 <= var13) { + var33 = -989213519; + } else { + var33 = -1195905728; + } + break; + case -1195905728: + return; + case -989213519: + var28 = var17[var27 * (2)]; + var29 = var17[var27 * 3]; + var30 = var14 + var18 * var28 + var21 * var29; + var31 = var15 + var19 * var28 + var22 * var29; + var32 = var16 + var20 * var28 + var23 * var29; + var1.addVertex(var2, var14, var15, var16).setColor(var11); + var1.addVertex(var2, var24, var25, var26).setColor(var12); + var1.addVertex(var2, var30, var31, var32).setColor(var12); + var1.addVertex(var2, var14, var15, var16).setColor(var11); + var24 = var30; + var25 = var31; + var26 = var32; + var27++; + var33 = -1226652694; + break; + case 1237793087: + default: + var14 = (float)(var3 - var9.x); + var15 = (float)(var5 - var9.y); + var16 = (float)(var7 - var9.z); + var17 = ux.UNIT_CIRCLES[var13]; + var18 = this.this$0.frameRight[0] * var10; + var19 = this.this$0.frameRight[1] * var10; + var20 = this.this$0.frameRight[2] * var10; + var21 = this.this$0.frameUp[0] * var10; + var22 = this.this$0.frameUp[1] * var10; + var23 = this.this$0.frameUp[2] * var10; + var24 = var14 + + var18 * var17[0] + + var21 * var17[1]; + var25 = var15 + + var19 * var17[0] + + var22 * var17[1]; + var26 = var16 + + var20 * var17[0] + + var23 * var17[1]; + var27 = 1; + var33 = -1226652694; + } + } + } +} diff --git a/src/main/java/defpackage/ux.java b/src/main/java/defpackage/ux.java new file mode 100644 index 0000000..6c12653 --- /dev/null +++ b/src/main/java/defpackage/ux.java @@ -0,0 +1,345 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.awt.Color; +import java.util.ArrayList; +import java.util.concurrent.ThreadLocalRandom; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; +import org.joml.Quaternionf; +import org.joml.Vector3f; + +@rn(name = "FireFly", description = "Glowing fireflies that fly around the player with trails", category = rl.RENDER) +public final class ux extends rm { + private static final int TRAIL_SEGMENTS = 7; + private static final int SPARK_SEGMENTS = 5; + private static final int HALO_SEGMENTS = 12; + private static final int BODY_SEGMENTS = 10; + private static final int CORE_SEGMENTS = 8; + private static final int MAX_SEGMENTS = 12; + private static final double CULL_DISTANCE_SQ = 3600.0; + static final float[][] UNIT_CIRCLES = buildUnitCircles(); + private final sm countSetting = new sm("Count", 80.0F, 10.0F, 300.0F, 10.0F) + .description( + "Number of fireflies spawned" + ); + private final sm speedSetting = new sm("Speed", 0.15F, 0.05F, 0.5F, 0.05F) + .description("Movement speed of the fireflies"); + private final sm radiusSetting = new sm("Spawn radius", 16.0F, 10.0F, 50.0F, 5.0F) + .description( + "Distance around the player where fireflies spawn" + ); + final sm trailSetting = new sm("Trail length", 20.0F, 0.0F, 40.0F, 5.0F) + .description( + "Length of the glowing trail behind fireflies" + ); + private final sm lifeSetting = new sm("Lifetime", 8.0F, 2.0F, 15.0F, 1.0F) + .description( + "How long a firefly lives before despawning" + ); + private final sm sizeSetting = new sm("Size", 1.0F, 0.3F, 2.5F, 0.1F) + .description("Visual size of the fireflies"); + private final ru sparkSetting = new ru( + "Sparkles", + (boolean)(((1)) != 0), + () -> { + int var2 = 0; + int var1 = -963726978; + + while (true) { + switch (var1) { + case -1090980089: + var2 = 1; + var1 = 1460596615; + break; + case -963726978: + default: + if (this.trailSetting.getCurrent() > 0.0F) { + var1 = -1090980089; + } else { + var1 = 277935200; + } + break; + case 277935200: + var2 = 0; + var1 = 1460596615; + break; + case 1460596615: + return Boolean.valueOf((boolean)((var2) != 0)); + } + } + } + ) + .description( + "Emit small sparkles from the fireflies" + ); + private final ru glowSetting = new ru( + "Glow", (boolean)((((1582178255 ^ -1582178254) + ((1582178255 & -1582178254) << 1)) + ) != 0)) + .description( + "Add a glowing halo around the fireflies" + ); + private final sg colorSetting; + private final rx customColorSetting; + private final ArrayList particles; + final float[] frameRight; + final float[] frameUp; + public static final ux INSTANCE = new ux(); + + private ux() { + String var10003 = "Color mode"; + String[] var10004 = new String[4]; + var10004[0] = "Random"; + var10004[1] = "Client"; + var10004[2] = "Rainbow"; + var10004[3] = "Custom"; + this.colorSetting = new sg(var10003, var10004) + .describe( + "Random", + "Random colors for each firefly" + ) + .describe( + "Client", + "Use the client theme color" + ) + .describe( + "Rainbow", + "Rainbow shifting colors" + ) + .describe( + "Custom", + "Use a custom specific color" + ) + .description("How firefly colors are determined"); + this.customColorSetting = new rx( + "Color", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> this.colorSetting.is("Custom") + ) + .description( + "Custom color for the fireflies" + ); + this.particles = new ArrayList<>(); + this.frameRight = new float[3]; + this.frameUp = new float[3]; + } + + private static float[][] buildUnitCircles() { + float[][] var0 = null; + int[] var1 = null; + int var2 = 0; + int var3 = 0; + int var4 = 0; + float[] var5 = null; + int var6 = 0; + double var7 = 0.0; + int var9 = -786773352; + + while (true) { + switch (var9) { + case -1597831626: + var7 = (double)var6 / var4 * Math.PI * 2.0; + var5[var6 * (2)] = (float)Math.cos(var7); + var5[var6 * 3] = (float)Math.sin( + var7 + ); + var6++; + var9 = -1097396640; + break; + case -1097396640: + if (var6 <= var4) { + var9 = -1597831626; + } else { + var9 = -159595050; + } + break; + case -786773352: + default: + var0 = new float[13][]; + int[] var10000 = new int[5]; + var10000[0] = 5; + var10000[1] = 7; + var10000[2] = 8; + var10000[3] = 10; + var10000[4] = 12; + var1 = var10000; + var2 = var1.length; + var3 = 0; + var9 = 1802643313; + break; + case -159595050: + var0[var4] = var5; + var3++; + var9 = 1802643313; + break; + case 983958144: + var4 = var1[var3]; + var5 = new float[(var4 + (1165135100 ^ -1165135099) + ((1165135100 & -1165135099) << 1)) + * ((-1751833234 ^ 1751833236) + ((-1751833234 & 1751833236) << 1))]; + var6 = 0; + var9 = -1097396640; + break; + case 1802643313: + if (var3 < var2) { + var9 = 983958144; + } else { + var9 = 1860126160; + } + break; + case 1860126160: + return var0; + } + } + } + + @Override + public void onEnable() { + super.onEnable(); + this.particles.clear(); + } + + @Override + public void onDisable() { + super.onDisable(); + this.particles.clear(); + } + + public void onWorldRender(LevelRenderContext var1) { + if (this.isEnabled() && mc.player != null && mc.level != null) { + PoseStack var2 = var1.poseStack(); + SubmitNodeCollector var3 = var1.submitNodeCollector(); + Camera var4 = mc.getEntityRenderDispatcher().camera; + if (var2 != null && var3 != null && var4 != null) { + Vec3 var5 = mc.player.position(); + long var6 = System.currentTimeMillis(); + long var8 = (long)(this.lifeSetting.getCurrent() * 1000.0F); + + for (int var10 = this.particles.size() - (1); var10 >= 0; var10--) { + uw var11 = this.particles.get(var10); + if (var6 - var11.spawnTime > var8 || var11.pos.distanceToSqr(var5) > 3600.0) { + int var12 = this.particles.size() - (1); + this.particles.set(var10, this.particles.get(var12)); + this.particles.remove(var12); + } + } + + int var22 = (int)this.countSetting.getCurrent(); + float var23 = this.speedSetting.getCurrent(); + int var24 = (int)this.trailSetting.getCurrent(); + + while (this.particles.size() < var22) { + this.spawnParticle(var5, var23); + } + + Vec3 var13 = var4.position(); + Quaternionf var14 = var4.rotation(); + Vector3f var15 = var14.transform(new Vector3f(1.0F, 0.0F, 0.0F)); + this.frameRight[0] = var15.x; + this.frameRight[1] = var15.y; + this.frameRight[2] = var15.z; + var14.transform(var15.set(0.0F, 1.0F, 0.0F)); + this.frameUp[0] = var15.x; + this.frameUp[1] = var15.y; + this.frameUp[2] = var15.z; + boolean var16 = this.glowSetting.isEnabled(); + int var17 = this.sparkSetting.isEnabled() && var24 > 0 + ? 1: 0; + float var18 = this.sizeSetting.getCurrent(); + uv var19 = this.resolveFrameColor(); + int var20 = 0; + + for (int var21 = this.particles.size(); var20 < var21; var20++) { + this.particles.get(var20).update(var23, var24); + } + + var3.submitCustomGeometry(var2, arj.glow(), (var10x, var11x) -> { + int var12x = 0; + int var13x = 0; + int var14x = 793913178; + + while (true) { + switch (var14x) { + case -1443802387: + return; + case -1175505723: + if (var12x < var13x) { + var14x = 1700319975; + } else { + var14x = -1443802387; + } + break; + case 793913178: + default: + var12x = 0; + var13x = this.particles.size(); + var14x = -1175505723; + break; + case 1700319975: + this.particles.get(var12x).render(var11x, var10x, var13, var6, var8, var16, var17, var18, var19); + var12x++; + var14x = -1175505723; + } + } + }); + } + } + } + + private void spawnParticle(Vec3 var1, float var2) { + ThreadLocalRandom var3 = ThreadLocalRandom.current(); + double var4 = var3.nextDouble(5.0, this.radiusSetting.getCurrent()); + double var6 = Math.toRadians(var3.nextDouble(0.0, 360.0)); + Vec3 var8 = var1.add(-Math.sin(var6) * var4, var3.nextDouble(-4.0, 10.0), Math.cos(var6) * var4); + double var9 = Math.toRadians(var3.nextDouble(0.0, 360.0)); + double var11 = Math.toRadians(var3.nextDouble(-30.0, 30.0)); + Vec3 var13 = new Vec3(-Math.sin(var9) * Math.cos(var11) * var2, Math.sin(var11) * var2 * 0.5, Math.cos(var9) * Math.cos(var11) * var2); + int var14 = Color.getHSBColor(var3.nextFloat(), 0.65F, 1.0F).getRGB() & 16777215; + this.particles.add(new uw(this, var8, var13, this.particles.size(), var14)); + } + + private uv resolveFrameColor() { + String var1 = this.colorSetting.get(); + int var2 = -1; + switch (var1.hashCode()) { + case -1656737386: + if (var1.equals("Rainbow")) { + var2 = 2; + } + break; + case 2021122027: + if (var1.equals("Client")) { + var2 = 0; + } + break; + case 2029746065: + if (var1.equals("Custom")) { + var2 = 1; + } + } + return switch (var2) { + case 0 -> new uv( + bz.getInstance().getThemeManager().getCurrentTheme().getColor().getRGB() & 16777215, + (boolean)((((1272704044 ^ -1272704044) + ((1272704044 & -1272704044) << 1)) + ) != 0)); + case 1 -> new uv( + this.customColorSetting.getIntColor() & 16777215, + (boolean)((((289855821 | -289855821) + (289855821 & -289855821)) + ) != 0)); + case 2 -> new uv(0, (boolean)((((-1813511482 ^ 1813511483) + ((-1813511482 & 1813511483) << 1))) != 0)); + default -> new uv(-1, (boolean)((((-1005390254 ^ 1005390254) + ((-1005390254 & 1005390254) << 1))) != 0)); + }; + } + + static int withAlpha(int var0, float var1) { + return Mth.clamp( + Math.round(var1 * 255.0F), + 0, + (2066673326 ^ -2066673071) + ((2066673326 & -2066673071) << 1) + ) + << (-1453637015 ^ 1453637039) + ((-1453637015 & 1453637039) << 1) + | var0 & 16777215; + } +} diff --git a/src/main/java/defpackage/uy.java b/src/main/java/defpackage/uy.java new file mode 100644 index 0000000..9d73d83 --- /dev/null +++ b/src/main/java/defpackage/uy.java @@ -0,0 +1,808 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import net.minecraft.ChatFormatting; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.food.FoodData; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.ItemStack; + +@rn(name = "FoodInfo", category = rl.RENDER, description = "Saturation, restore and heal indication on the hunger bar plus an optimal eating order advisor") +public final class uy extends rm { + public static final uy INSTANCE = new uy(); + private static final Identifier FOOD_FULL_SPRITE = Identifier.withDefaultNamespace( + "hud/food_full" + ); + private static final Identifier FOOD_HALF_SPRITE = Identifier.withDefaultNamespace( + "hud/food_half" + ); + private static final Identifier FOOD_FULL_HUNGER_SPRITE = Identifier.withDefaultNamespace( + "hud/food_full_hunger" + ); + private static final Identifier FOOD_HALF_HUNGER_SPRITE = Identifier.withDefaultNamespace( + "hud/food_half_hunger" + ); + private static final Identifier HEART_FULL_SPRITE = Identifier.withDefaultNamespace( + "hud/heart/full" + ); + private static final Identifier HEART_HALF_SPRITE = Identifier.withDefaultNamespace( + "hud/heart/half" + ); + private static final Identifier HEART_HARDCORE_FULL_SPRITE = Identifier.withDefaultNamespace( + "hud/heart/hardcore_full" + ); + private static final Identifier HEART_HARDCORE_HALF_SPRITE = Identifier.withDefaultNamespace( + "hud/heart/hardcore_half" + ); + private static final int ICON_COUNT = 10; + private static final int ICON_SIZE = 9; + private static final int ICON_STEP = 8; + private static final int HEARTS_PER_ROW = 10; + private static final int HEART_SIZE = 9; + private static final int HEART_STEP = 8; + private static final int HALVES_PER_ICON = 2; + private static final float FOOD_UNITS_PER_ICON = 2.0F; + private static final int SEGMENT_INSET = 1; + private static final int SEGMENT_WIDTH = 7; + private static final int SATURATION_BAR_TOP = 8; + private static final int SATURATION_BAR_BOTTOM = 9; + private static final int SATURATION_COLOR = -605115; + private static final int SATURATION_PREVIEW_COLOR = -8572; + private static final int GHOST_RGB_MASK = 16777215; + private static final int ALPHA_SHIFT = 24; + private static final int ALPHA_MAX = 255; + private static final double PULSE_PERIOD_MS = 780.0; + private static final float PULSE_BASE = 0.5F; + private static final float PULSE_AMPLITUDE = 0.5F; + private static final float GHOST_MIN_ALPHA = 0.24F; + private static final float GHOST_MAX_ALPHA = 0.66F; + private static final float PREVIEW_ALPHA_FLOOR = 0.55F; + private static final String DECIMAL_FORMAT = "%.1f"; + private static final String TOOLTIP_VALUES = "Hunger +%d Saturation +%s"; + private static final String TOOLTIP_HEAL = "Heals +%s HP"; + private static final String TOOLTIP_WASTE = "Wastes %s saturation right now"; + private static final String TOOLTIP_BLOCKED = "Cannot be eaten right now"; + private final ru saturationOverlay = new ru( + "Saturation Overlay", + "Draws the hidden saturation value over the hunger bar", + (boolean)((((-1545970165 ^ 1545970166) + ((-1545970165 & 1545970166) << 1)) + ) != 0)); + private final ru restorePreview = new ru( + "Restore Preview", + "Ghost hunger and saturation the held food would restore", + (boolean)((((-987930572 | 987930573) + (-987930572 & 987930573)) + ) != 0)); + private final ru healthPreview = new ru( + "Health Preview", + "Ghost hearts for the health the held food unlocks through natural regeneration", + (boolean)((((4798912 ^ -4798911) + ((4798912 & -4798911) << 1)) + ) != 0)); + private final ru foodTooltip = new ru( + "Food Tooltip", + "Adds hunger, saturation and heal values to item tooltips", + (boolean)((((-836760628 | 836760629) + (-836760628 & 836760629)) + ) != 0)); + private final ru eatAdvisor = new ru( + "Eat Advisor", + "Ranks the food in your inventory by the order that heals the most", + (boolean)((((67567843 ^ -67567842) + ((67567843 & -67567842) << 1)) + ) != 0)); + + private uy() { + } + + public boolean isAdvisorActive() { + int var2 = 0; + int var1 = -2109729458; + + while (true) { + switch (var1) { + case -2109729458: + default: + if (this.isEnabled()) { + var1 = 1473109142; + } else { + var1 = 956051192; + } + break; + case 96650998: + var2 = 1; + var1 = 1183817118; + break; + case 956051192: + var2 = 0; + var1 = 1183817118; + break; + case 1183817118: + return (boolean)((var2) != 0); + case 1473109142: + if (this.eatAdvisor.isEnabled()) { + var1 = 96650998; + } else { + var1 = 956051192; + } + } + } + } + + public void renderFoodOverlay(GuiGraphicsExtractor var1, Player var2, int var3, int var4) { + FoodData var5 = null; + int var6 = 0; + float var7 = 0.0F; + FoodProperties var8 = null; + int var9 = 0; + int var10 = 0; + float var11 = 0.0F; + int var13 = 0; + int var14 = 0; + float var15 = 0.0F; + int var12 = -1356314565; + + while (true) { + switch (var12) { + case -2095956269: + var15 = hb.saturationAfterEating(var10, var7, var8.saturation()); + var12 = -1272738472; + break; + case -1794884469: + var13 = 1; + var12 = -314374645; + break; + case -1583808344: + var5 = var2.getFoodData(); + var6 = var5.getFoodLevel(); + var7 = var5.getSaturationLevel(); + var8 = this.heldFoodProperties(var2); + if (this.restorePreview.isEnabled()) { + var12 = 817596899; + } else { + var12 = -943206689; + } + break; + case -1356314565: + default: + if (this.isEnabled()) { + var12 = -744725418; + } else { + var12 = 127915235; + } + break; + case -1272738472: + var11 = var15; + if (var9 != 0) { + var12 = 981582511; + } else { + var12 = -704739643; + } + break; + case -1233120697: + this.drawSaturationBar(var1, var3, var4, var7, var11); + var12 = -790046382; + break; + case -943206689: + var13 = 0; + var12 = -314374645; + break; + case -835898567: + var14 = hb.foodAfterEating(var6, var8.nutrition()); + var12 = 295540608; + break; + case -796635341: + var15 = var7; + var12 = -1272738472; + break; + case -790046382: + return; + case -744725418: + if (var2 == null) { + var12 = 127915235; + } else { + var12 = -1583808344; + } + break; + case -704739643: + if (this.saturationOverlay.isEnabled()) { + var12 = -1233120697; + } else { + var12 = -790046382; + } + break; + case -409767022: + var14 = var6; + var12 = 295540608; + break; + case -314374645: + var9 = var13; + if (var9 != 0) { + var12 = -835898567; + } else { + var12 = -409767022; + } + break; + case 127915235: + return; + case 295540608: + var10 = var14; + if (var9 != 0) { + var12 = -2095956269; + } else { + var12 = -796635341; + } + break; + case 817596899: + if (var8 != null) { + var12 = -1794884469; + } else { + var12 = -943206689; + } + break; + case 981582511: + this.drawHungerPreview(var1, var2, var3, var4, var6, var10); + var12 = -704739643; + } + } + } + + public void renderHealthPreview(GuiGraphicsExtractor var1, Player var2, int var3, int var4, int var5, float var6, int var7) { + FoodProperties var8 = null; + FoodData var9 = null; + float var10 = 0.0F; + int var11 = 0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + int var15 = 0; + int var16 = 0; + int var17 = 0; + int var18 = 0; + int var19 = 0; + int var20 = 0; + Identifier var21 = null; + int var23 = 0; + Identifier var24 = null; + int var22 = 239110047; + + while (true) { + switch (var22) { + case -1903526053: + if (var14 != 0) { + var22 = -1510656162; + } else { + var22 = -1499803586; + } + break; + case -1871153533: + if (var16 <= var13) { + var22 = -1861027399; + } else { + var22 = 681784236; + } + break; + case -1861027399: + var17 = (var16 - ((327232756 | -327232755) + (327232756 & -327232755))) / ((-609811252 ^ 609811254) + ((-609811252 & 609811254) << 1)); + var18 = var3 + var17 % 80; + var19 = var4 - var17 / ((1816645533 ^ -1816645523) + ((1816645533 & -1816645523) << 1)) * var5; + if ((var16 - ((1168182879 | -1168182878) + (1168182879 & -1168182878))) % ((648626116 ^ -648626114) + ((648626116 & -648626114) << 1)) == 0) { + var22 = -362543239; + } else { + var22 = -1108425969; + } + break; + case -1826864828: + if (var14 != 0) { + var22 = 487717616; + } else { + var22 = -1371797431; + } + break; + case -1706266687: + if (this.healthPreview.isEnabled()) { + var22 = 1307112509; + } else { + var22 = 523496095; + } + break; + case -1691500081: + var21 = var24; + var1.blitSprite( + RenderPipelines.GUI_TEXTURED, + var21, + var18, + var19, + 9, + 9, + var15 + ); + var16++; + var22 = -1871153533; + break; + case -1514382347: + var11 = Mth.ceil(var6); + var12 = Mth.clamp(var7, 0, var11); + var13 = Math.min(var11, var12 + Mth.ceil(var10)); + if (var13 <= var12) { + var22 = 871284741; + } else { + var22 = -771198665; + } + break; + case -1510656162: + var24 = HEART_HARDCORE_HALF_SPRITE; + var22 = -1691500081; + break; + case -1499803586: + var24 = HEART_HALF_SPRITE; + var22 = -1691500081; + break; + case -1371797431: + var24 = HEART_FULL_SPRITE; + var22 = -1691500081; + break; + case -1327228038: + var8 = this.heldFoodProperties(var2); + if (var8 == null) { + var22 = -782449163; + } else { + var22 = -1128026578; + } + break; + case -1128026578: + var9 = var2.getFoodData(); + var10 = hb.healthPotentialGain(var9.getFoodLevel(), var9.getSaturationLevel(), var8); + if (var10 <= 1.0E-4F) { + var22 = -1064829184; + } else { + var22 = -1514382347; + } + break; + case -1108425969: + var23 = 0; + var22 = -4935858; + break; + case -1064829184: + return; + case -782449163: + return; + case -771198665: + var14 = (var2.level().getLevelData().isHardcore()) ? 1 : 0; + var15 = ghostColor(); + var16 = var12 + 1; + var22 = -1871153533; + break; + case -362543239: + var23 = 1; + var22 = -4935858; + break; + case -4935858: + var20 = var23; + if (var20 != 0) { + var22 = -1903526053; + } else { + var22 = -1826864828; + } + break; + case 239110047: + default: + if (this.isEnabled()) { + var22 = -1706266687; + } else { + var22 = 523496095; + } + break; + case 487717616: + var24 = HEART_HARDCORE_FULL_SPRITE; + var22 = -1691500081; + break; + case 523496095: + return; + case 681784236: + return; + case 871284741: + return; + case 1307112509: + if (var2 == null) { + var22 = 523496095; + } else { + var22 = -1327228038; + } + } + } + } + + public List appendFoodTooltip(List var1, ItemStack var2) { + FoodProperties var3 = null; + FoodData var4 = null; + int var5 = 0; + float var6 = 0.0F; + ArrayList var7 = null; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 978353357; + + while (true) { + switch (var10) { + case -2128045576: + var3 = hb.propertiesOf(var2); + if (var3 == null) { + var10 = -1573751798; + } else { + var10 = 647268460; + } + break; + case -1599191916: + var7.add( + Component.literal( + "Cannot be eaten right now" + ) + .withStyle(ChatFormatting.DARK_GRAY) + ); + return var7; + case -1573751798: + return var1; + case -1442575115: + return var1; + case -1219023881: + var8 = hb.healthPotentialGain(var5, var6, var3); + Locale var14 = Locale.ROOT; + String var16 = "Heals +%s HP"; + Object[] var18 = new Object[1]; + var18[0] = format(var8); + var7.add(Component.literal(String.format(var14, var16, var18)).withStyle(ChatFormatting.GREEN)); + var9 = hb.wastedSaturation(var5, var6, var3); + if (var9 > 1.0E-4F) { + var10 = -972176972; + } else { + var10 = -780734581; + } + break; + case -972176972: + Locale var13 = Locale.ROOT; + String var15 = "Wastes %s saturation right now"; + Object[] var17 = new Object[1]; + var17[0] = format(var9); + var7.add(Component.literal(String.format(var13, var15, var17)).withStyle(ChatFormatting.RED)); + var10 = -780734581; + break; + case -780734581: + return var7; + case -601744809: + if (this.foodTooltip.isEnabled()) { + var10 = -24461244; + } else { + var10 = -1442575115; + } + break; + case -24461244: + if (mc.player == null) { + var10 = -1442575115; + } else { + var10 = -2128045576; + } + break; + case 647268460: + var4 = mc.player.getFoodData(); + var5 = var4.getFoodLevel(); + var6 = var4.getSaturationLevel(); + var7 = new ArrayList(var1); + var7.add(Component.empty()); + Locale var10001 = Locale.ROOT; + String var10002 = "Hunger +%d Saturation +%s"; + Object[] var10003 = new Object[2]; + var10003[0] = var3.nutrition(); + var10003[1] = format(var3.saturation()); + var7.add(Component.literal(String.format(var10001, var10002, var10003)).withStyle(ChatFormatting.GOLD)); + if (!mc.player.canEat(var3.canAlwaysEat())) { + var10 = -1599191916; + } else { + var10 = -1219023881; + } + break; + case 978353357: + default: + if (this.isEnabled()) { + var10 = -601744809; + } else { + var10 = -1442575115; + } + } + } + } + + private void drawHungerPreview(GuiGraphicsExtractor var1, Player var2, int var3, int var4, int var5, int var6) { + int var7 = 0; + Identifier var8 = null; + Identifier var9 = null; + int var10 = 0; + int var11 = 0; + int var12 = 0; + int var13 = 0; + int var14 = 0; + Identifier var16 = null; + Identifier var17 = null; + int var15 = -204971820; + + while (true) { + switch (var15) { + case -1749816625: + var17 = FOOD_HALF_SPRITE; + var15 = -721383026; + break; + case -1606625781: + var16 = FOOD_FULL_HUNGER_SPRITE; + var15 = -349106812; + break; + case -1092372970: + return; + case -727132322: + var16 = FOOD_FULL_SPRITE; + var15 = -349106812; + break; + case -721383026: + var9 = var17; + var10 = ghostColor(); + var11 = 0; + var15 = 1518248877; + break; + case -494539257: + if (var6 >= var12) { + var15 = 788079778; + } else { + var15 = 1790655571; + } + break; + case -445267910: + var12 = var11 * 4; + var13 = var11 * 3; + var14 = var4 + - var11 * -1; + if (var5 < var12) { + var15 = -494539257; + } else { + var15 = 1790655571; + } + break; + case -349106812: + var8 = var16; + if (var7 != 0) { + var15 = 771170593; + } else { + var15 = -1749816625; + } + break; + case -204971820: + default: + if (var6 <= var5) { + var15 = 934844124; + } else { + var15 = 557487331; + } + break; + case -40481623: + var1.blitSprite( + RenderPipelines.GUI_TEXTURED, + var9, + var14, + var3, + 9, + 9, + var10 + ); + var15 = 700477897; + break; + case 557487331: + var7 = (var2.hasEffect(MobEffects.HUNGER)) ? 1 : 0; + if (var7 != 0) { + var15 = -1606625781; + } else { + var15 = -727132322; + } + break; + case 700477897: + var11++; + var15 = 1518248877; + break; + case 771170593: + var17 = FOOD_HALF_HUNGER_SPRITE; + var15 = -721383026; + break; + case 788079778: + var1.blitSprite( + RenderPipelines.GUI_TEXTURED, + var8, + var14, + var3, + 9, + 9, + var10 + ); + var15 = 700477897; + break; + case 934844124: + return; + case 1518248877: + if (var11 < (-851414381 ^ 851414391) + ((-851414381 & 851414391) << 1)) { + var15 = -445267910; + } else { + var15 = -1092372970; + } + break; + case 1676578371: + if (var6 >= var13) { + var15 = -40481623; + } else { + var15 = 700477897; + } + break; + case 1790655571: + if (var5 < var13) { + var15 = 1676578371; + } else { + var15 = 700477897; + } + } + } + } + + private void drawSaturationBar(GuiGraphicsExtractor var1, int var2, int var3, float var4, float var5) { + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + int var12 = 0; + int var13 = -1787541242; + + while (true) { + switch (var13) { + case -1787541242: + default: + var6 = withAlpha(-8572, 0.55F + 0.45F * pulse()); + var7 = var2 + 8; + var8 = var2 + 9; + var9 = 0; + var13 = -499517984; + break; + case -1227501138: + var1.fill(var10 - var12, var7, var10 - var11, var8, var6); + var13 = -621657408; + break; + case -621657408: + if (var11 > 0) { + var13 = 2043318242; + } else { + var13 = -67299612; + } + break; + case -499517984: + if (var9 < (-831900337 ^ 831900347) + ((-831900337 & 831900347) << 1)) { + var13 = 991488968; + } else { + var13 = -43780908; + } + break; + case -67299612: + var9++; + var13 = -499517984; + break; + case -43780908: + return; + case 991488968: + var10 = var3 + - var9 * 7; + var11 = segmentWidth(var4, var9); + var12 = segmentWidth(var5, var9); + if (var12 > var11) { + var13 = -1227501138; + } else { + var13 = -621657408; + } + break; + case 2043318242: + var1.fill(var10 - var11, var7, var10, var8, (1447066041 | -1447671156) + (1447066041 & -1447671156)); + var13 = -67299612; + } + } + } + + private static int segmentWidth(float var0, int var1) { + float var2 = Mth.clamp(var0 - var1 * 2.0F, 0.0F, 2.0F) / 2.0F; + return Math.round(7.0F * var2); + } + + private FoodProperties heldFoodProperties(Player var1) { + FoodProperties var2 = null; + FoodProperties var4 = null; + int var3 = -320101332; + + while (true) { + switch (var3) { + case -1991411791: + var4 = edibleProperties(var1, var1.getOffhandItem()); + var3 = -1628969335; + break; + case -1628969335: + return var4; + case -320101332: + default: + var2 = edibleProperties(var1, var1.getMainHandItem()); + if (var2 != null) { + var3 = 898169706; + } else { + var3 = -1991411791; + } + break; + case 898169706: + var4 = var2; + var3 = -1628969335; + } + } + } + + private static FoodProperties edibleProperties(Player var0, ItemStack var1) { + FoodProperties var2 = null; + FoodProperties var4 = null; + int var3 = 1571923032; + + while (true) { + switch (var3) { + case -218665458: + if (var0.canEat(var2.canAlwaysEat())) { + var3 = 438847333; + } else { + var3 = 1591727443; + } + break; + case -117888784: + return var4; + case 438847333: + var4 = var2; + var3 = -117888784; + break; + case 1571923032: + default: + var2 = hb.propertiesOf(var1); + if (var2 != null) { + var3 = -218665458; + } else { + var3 = 1591727443; + } + break; + case 1591727443: + var4 = null; + var3 = -117888784; + } + } + } + + private static float pulse() { + return 0.5F + 0.5F * (float)Math.sin(cs.elapsedMillis() / 780.0); + } + + private static int ghostColor() { + return withAlpha(16777215, 0.24F + 0.42000002F * pulse()); + } + + private static int withAlpha(int var0, float var1) { + int var2 = Mth.clamp( + Math.round(var1 * 255.0F), 0, (1619994597 | -1619994342) + (1619994597 & -1619994342) + ); + return var2 << (-1643551456 ^ 1643551480) + ((-1643551456 & 1643551480) << 1) | var0 & 16777215; + } + + private static String format(float var0) { + Locale var10000 = Locale.ROOT; + String var10001 = "%.1f"; + Object[] var10002 = new Object[1]; + var10002[0] = var0; + return String.format(var10000, var10001, var10002); + } +} diff --git a/src/main/java/defpackage/uz.java b/src/main/java/defpackage/uz.java new file mode 100644 index 0000000..d8fcca1 --- /dev/null +++ b/src/main/java/defpackage/uz.java @@ -0,0 +1,244 @@ +package defpackage; + +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.textures.FilterMode; +import com.mojang.blaze3d.textures.GpuSampler; +import java.util.function.Supplier; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.rendertype.LayeringTransform; +import net.minecraft.client.renderer.rendertype.OutputTarget; +import net.minecraft.client.renderer.rendertype.RenderSetup; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.TextureTransform; +import net.minecraft.util.Util; +import org.joml.Matrix4f; + +public final class uz { + private static final String SAMPLER_TEXTURE = "Sampler0"; + private static final String LAYER_ITEM = "evolution_glint_item"; + private static final String LAYER_ITEM_TRANSLUCENT = "evolution_glint_item_translucent"; + private static final String LAYER_ENTITY = "evolution_glint_entity"; + private static final String LAYER_ARMOR = "evolution_glint_armor"; + private static final String TRANSFORM_ITEM = "evolution_glint_item_texturing"; + private static final String TRANSFORM_ENTITY = "evolution_glint_entity_texturing"; + private static final String TRANSFORM_ARMOR = "evolution_glint_armor_texturing"; + private static final float ITEM_BASE_SCALE = 8.0F; + private static final float ENTITY_BASE_SCALE = 0.5F; + private static final float ARMOR_BASE_SCALE = 0.16F; + private static final float MILLIS_PER_SECOND = 1000.0F; + private static final long ORIGIN_MILLIS = Util.getMillis(); + private static final Supplier REPEAT_LINEAR = () -> RenderSystem.getSamplerCache().getRepeat(FilterMode.LINEAR); + private static final RenderType ITEM = RenderType.create( + "evolution_glint_item", + RenderSetup.builder(RenderPipelines.GLINT) + .withTexture("Sampler0", atx.textureId(), REPEAT_LINEAR) + .setTextureTransform( + new TextureTransform( + "evolution_glint_item_texturing", + () -> matrix(8.0F, (boolean)((((-578755508 ^ 578755509) + ((-578755508 & 578755509) << 1))) != 0)) + ) + ) + .createRenderSetup() + ); + private static final RenderType ITEM_TRANSLUCENT = RenderType.create( + "evolution_glint_item_translucent", + RenderSetup.builder(RenderPipelines.GLINT) + .withTexture("Sampler0", atx.textureId(), REPEAT_LINEAR) + .setTextureTransform( + new TextureTransform( + "evolution_glint_item_texturing", + () -> matrix(8.0F, (boolean)((((-279918898 | 279918899) + (-279918898 & 279918899))) != 0)) + ) + ) + .setOutputTarget(OutputTarget.ITEM_ENTITY_TARGET) + .createRenderSetup() + ); + private static final RenderType ENTITY = RenderType.create( + "evolution_glint_entity", + RenderSetup.builder(RenderPipelines.GLINT) + .withTexture("Sampler0", atx.textureId(), REPEAT_LINEAR) + .setTextureTransform( + new TextureTransform( + "evolution_glint_entity_texturing", + () -> matrix(0.5F, (boolean)((((-1711436817 ^ 1711436817) + ((-1711436817 & 1711436817) << 1))) != 0)) + ) + ) + .createRenderSetup() + ); + private static final RenderType ARMOR = RenderType.create( + "evolution_glint_armor", + RenderSetup.builder(RenderPipelines.GLINT) + .withTexture("Sampler0", atx.textureId(), REPEAT_LINEAR) + .setTextureTransform( + new TextureTransform( + "evolution_glint_armor_texturing", + () -> matrix(0.16F, (boolean)((((-1916942236 | 1916942236) + (-1916942236 & 1916942236))) != 0)) + ) + ) + .setLayeringTransform(LayeringTransform.VIEW_OFFSET_Z_LAYERING) + .createRenderSetup() + ); + + private uz() { + } + + public static RenderType item() { + RenderType var1 = null; + int var0 = -1563068410; + + while (true) { + switch (var0) { + case -1563068410: + default: + if (ready(uu.INSTANCE.appliesToItems())) { + var0 = 1391756409; + } else { + var0 = 1426174564; + } + break; + case 761746921: + return var1; + case 1391756409: + var1 = ITEM; + var0 = 761746921; + break; + case 1426174564: + var1 = null; + var0 = 761746921; + } + } + } + + public static RenderType itemTranslucent() { + RenderType var1 = null; + int var0 = -1936935430; + + while (true) { + switch (var0) { + case -1936935430: + default: + if (ready(uu.INSTANCE.appliesToItems())) { + var0 = 484994018; + } else { + var0 = 288999124; + } + break; + case -1806063120: + return var1; + case 288999124: + var1 = null; + var0 = -1806063120; + break; + case 484994018: + var1 = ITEM_TRANSLUCENT; + var0 = -1806063120; + } + } + } + + public static RenderType entity() { + RenderType var1 = null; + int var0 = 1756003092; + + while (true) { + switch (var0) { + case -2040048322: + return var1; + case -1831009774: + var1 = ENTITY; + var0 = -2040048322; + break; + case 362231408: + var1 = null; + var0 = -2040048322; + break; + case 1756003092: + default: + if (ready(uu.INSTANCE.appliesToSpecial())) { + var0 = -1831009774; + } else { + var0 = 362231408; + } + } + } + } + + public static RenderType armor() { + RenderType var1 = null; + int var0 = 1552897876; + + while (true) { + switch (var0) { + case -2111590643: + var1 = null; + var0 = 2146003933; + break; + case 892931947: + var1 = ARMOR; + var0 = 2146003933; + break; + case 1552897876: + default: + if (ready(uu.INSTANCE.appliesToArmor())) { + var0 = 892931947; + } else { + var0 = -2111590643; + } + break; + case 2146003933: + return var1; + } + } + } + + private static boolean ready(boolean var0) { + uu var1 = null; + int var3 = 0; + int var2 = 1467280301; + + while (true) { + switch (var2) { + case -1529209321: + var3 = 0; + var2 = -1449853069; + break; + case -1449853069: + return (boolean)((var3) != 0); + case -1421500014: + var3 = 1; + var2 = -1449853069; + break; + case -1209030873: + if (atx.ensure(var1.style(), var1.paint())) { + var2 = -1421500014; + } else { + var2 = -1529209321; + } + break; + case 754709727: + if (var1.isEnabled()) { + var2 = -1209030873; + } else { + var2 = -1529209321; + } + break; + case 1467280301: + default: + var1 = uu.INSTANCE; + if (var0) { + var2 = 754709727; + } else { + var2 = -1529209321; + } + } + } + } + + private static Matrix4f matrix(float var0, boolean var1) { + uu var2 = uu.INSTANCE; + atw var3 = var2.style(); + float var4 = (float)(Util.getMillis() - ORIGIN_MILLIS) / 1000.0F * var2.speed(); + float var5 = var0 * var2.scale() * (var1 ? var3.itemScale() : 1.0F); + return var3.matrix(var4, var5); + } +} diff --git a/src/main/java/defpackage/v.java b/src/main/java/defpackage/v.java new file mode 100644 index 0000000..4dc149e --- /dev/null +++ b/src/main/java/defpackage/v.java @@ -0,0 +1,11 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.world.level.block.state.BlockState; + +public interface v { + void renderSingleBlockWithEmission(BlockState var1, PoseStack var2, SubmitNodeCollector var3, int var4, ClientLevel var5, AbstractClientPlayer var6); +} diff --git a/src/main/java/defpackage/va.java b/src/main/java/defpackage/va.java new file mode 100644 index 0000000..b415b0b --- /dev/null +++ b/src/main/java/defpackage/va.java @@ -0,0 +1,50 @@ +package defpackage; + +@rn(name = "GodRays", category = rl.RENDER, description = "Sun shafts that break through terrain and leaves, ignored while a shaderpack is loaded") +public final class va extends rm { + public static final va INSTANCE = new va(); + public final sm strength = new sm("Strength", 110.0F, 10.0F, 400.0F, 10.0F) + .description( + "How bright the shafts are added on top of the scene" + ); + public final sm reach = new sm("Reach", 65.0F, 20.0F, 100.0F, 5.0F) + .description( + "How far the shafts stretch away from the sun, in percent of the distance to it" + ); + public final sm samples = new sm("Samples", 28.0F, 8.0F, 64.0F, 2.0F) + .description( + "Taps per pixel along the shaft, higher is smoother and costlier" + ); + public final sm decay = new sm("Falloff", 96.0F, 80.0F, 100.0F, 1.0F) + .description( + "How quickly a shaft fades along its length" + ); + public final rx rayColor = new rx( + "Ray Color", + new asu( + 255, + 206, + 148, + (-121473759 | 121474014) + (-121473759 & 121474014) + ) + ) + .description( + "Tints the shafts, warm by default like low sunlight, white keeps the sun's own color" + ); + public final ru sunsetBoost = new ru( + "Sunset Boost", + (boolean)((((-236768700 | 236768701) + (-236768700 & 236768701)) + ) != 0)) + .description( + "Strengthen the shafts while the sun sits low, like at sunrise and sunset" + ); + + private va() { + } + + @Override + public void onDisable() { + super.onDisable(); + auo.release(); + } +} diff --git a/src/main/java/defpackage/vb.java b/src/main/java/defpackage/vb.java new file mode 100644 index 0000000..01473f8 --- /dev/null +++ b/src/main/java/defpackage/vb.java @@ -0,0 +1,82 @@ +package defpackage; + +final class vb { + private String source; + private ge font; + private float width; + private String fitted; + + vb() { + } + + String fit(ge var1, String var2, float var3) { + int var4 = 0; + int var5 = -1223659322; + + while (true) { + switch (var5) { + case -2134731666: + if (var1 == this.font) { + var5 = -1940188520; + } else { + var5 = -486736966; + } + break; + case -2120439836: + var4 = var2.length(); + var5 = -233901967; + break; + case -1940188520: + if (var3 == this.width) { + var5 = -87594035; + } else { + var5 = -486736966; + } + break; + case -1822991499: + this.fitted = var2.substring(0, var4).stripTrailing() + "..."; + return this.fitted; + case -1223659322: + default: + if (var2.equals(this.source)) { + var5 = -2134731666; + } else { + var5 = -486736966; + } + break; + case -486736966: + this.source = var2; + this.font = var1; + this.width = var3; + if (var1.width(var2) <= var3) { + var5 = 1285499; + } else { + var5 = -2120439836; + } + break; + case -233901967: + if (var4 > 0) { + var5 = 829042116; + } else { + var5 = -1822991499; + } + break; + case -87594035: + return this.fitted; + case 1285499: + this.fitted = var2; + return this.fitted; + case 653143969: + var4--; + var5 = -233901967; + break; + case 829042116: + if (var1.width(var2.substring(0, var4) + "...") > var3) { + var5 = 653143969; + } else { + var5 = -1822991499; + } + } + } + } +} diff --git a/src/main/java/defpackage/vc.java b/src/main/java/defpackage/vc.java new file mode 100644 index 0000000..affc3d0 --- /dev/null +++ b/src/main/java/defpackage/vc.java @@ -0,0 +1,4 @@ +package defpackage; + +record vc(float blend, float cursorX, float cursorY, boolean pressed) { +} diff --git a/src/main/java/defpackage/vd.java b/src/main/java/defpackage/vd.java new file mode 100644 index 0000000..5cc8981 --- /dev/null +++ b/src/main/java/defpackage/vd.java @@ -0,0 +1,1437 @@ +package defpackage; + +import com.mojang.blaze3d.ProjectionType; +import com.mojang.blaze3d.systems.RenderSystem; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Iterator; +import net.minecraft.client.Camera; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.client.model.player.PlayerModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.ProjectionMatrixBuffer; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; +import org.joml.Matrix3x2fStack; +import org.joml.Matrix4fStack; +import org.joml.Vector3f; + +@rn(name = "GuiPresence", category = rl.RENDER, description = "Shows the Evolution menu or YouTube video other users are holding; .watch to share one") +public final class vd extends rm { + public static final vd INSTANCE = new vd(); + private static final float ANCHOR_HEIGHT_RATIO = 0.6F; + private static final float ANCHOR_FORWARD = 0.85F; + private static final float DISTANCE_FADE_RANGE = 6.0F; + private static final float PANEL_WORLD_WIDTH = 1.0F; + private static final String PANEL_PROJECTION_NAME = "evolution_gui_presence"; + private static final float POSE_EMPHASIS = 1.4F; + private static final float POSE_LIMIT = 0.75F; + private static final float POINT_ARM_LIFT = 67.5F; + private static final float POINT_ARM_INWARD = 15.0F; + private static final float HOLD_ARM_LIFT = 70.0F; + private static final float HOLD_ARM_INWARD = 25.0F; + private static final float HEAD_TILT = 22.5F; + private static final float HEAD_FOLLOW = 0.5F; + private static final float PRESS_REACH = 1.2F; + private static final float HELD_ITEM_HIDE_FADE = 0.5F; + private static final float WINDOW_WIDTH = 104.0F; + private static final float WINDOW_HEIGHT = 65.0F; + private static final float WINDOW_RADIUS = 4.0F; + private static final float WINDOW_SHADOW = 6.0F; + private static final float WINDOW_ALPHA = 0.94F; + private static final float BORDER_THICKNESS = 0.6F; + private static final float OUTER_PAD = 3.2F; + private static final float GUTTER = 2.6F; + private static final float SIDEBAR_MAX_RATIO = 0.3F; + private static final float SIDEBAR_COLLAPSED_WIDTH = 6.6F; + private static final float HEADER_HEIGHT = 5.4F; + private static final float HEADER_GAP = 2.4F; + private static final float FOOTER_HEIGHT = 2.6F; + private static final float FOOTER_GAP = 2.0F; + private static final float LANE_WIDTH = 1.3F; + private static final float PANEL_RADIUS = 2.4F; + private static final float CARD_RADIUS = 1.8F; + private static final float CHIP_RADIUS = 0.9F; + private static final float ROW_GAP = 0.6F; + private static final float ROW_INSET = 0.7F; + private static final float LOGO_HEIGHT = 4.7000003F; + private static final float LOGO_GAP = 3.1000001F; + private static final float ACCENT_BAR_WIDTH = 1.0F; + private static final float ACCENT_BAR_RATIO = 0.5F; + private static final float ICON_INSET = 2.0F; + private static final float LABEL_GAP = 1.4F; + private static final float ICON_FONT_SIZE = 3.4F; + private static final float LABEL_FONT_SIZE = 3.4F; + private static final float TITLE_FONT_SIZE = 3.8F; + private static final int COLUMNS_TWO = 2; + private static final float MIN_THUMB_RATIO = 0.18F; + private static final float CARD_HEIGHT = 8.6F; + private static final float CARD_GAP = 2.2F; + private static final float CARD_TITLE_INSET = 2.0F; + private static final float CARD_TITLE_WIDTH = 0.42F; + private static final float CARD_TITLE_HEIGHT = 1.3F; + private static final float CARD_TOGGLE_WIDTH = 4.6F; + private static final float CARD_TOGGLE_HEIGHT = 2.4F; + private static final float SEARCH_WIDTH_RATIO = 0.46F; + private static final float SEARCH_HEIGHT = 3.8F; + private static final float COLUMN_CHIP_SIZE = 3.4F; + private static final float COLUMN_CHIP_GAP = 1.0F; + private static final float FOOTER_DOT_SIZE = 1.8F; + private static final float FOOTER_BAR_WIDTH = 16.0F; + private static final float FOOTER_BAR_HEIGHT = 1.2F; + private static final float FOOTER_BAR_GAP = 2.0F; + private static final float THUMB_MIN_HEIGHT = 6.0F; + private static final float CURSOR_SIZE = 2.6F; + private static final float CURSOR_RING_SIZE = 5.2F; + private static final float CURSOR_PRESS_SIZE = 8.0F; + private static final float SURFACE_ALPHA = 0.55F; + private static final float CARD_ALPHA = 0.7F; + private static final float MUTED_ALPHA = 0.35F; + private static final float FAINT_ALPHA = 0.18F; + private static final float SELECTED_ALPHA = 0.22F; + private static final float CURSOR_RING_ALPHA = 0.3F; + private static final float WATCH_POINT_X = 0.5F; + private static final float WATCH_POINT_Y = 0.55F; + private static final float VIDEO_ASPECT = 1.7777778F; + private static final float VIDEO_TITLE_FONT_SIZE = 4.2F; + private static final float VIDEO_STATUS_FONT_SIZE = 3.2F; + private static final float VIDEO_TEXT_GAP = 1.6F; + private static final float VIDEO_TEXT_INSET = 4.0F; + private static final float PAUSE_BAR_WIDTH = 0.7F; + private static final float PAUSE_BAR_GAP = 0.8F; + private static final String ELLIPSIS = "..."; + private static final String STATUS_LOADING = "Loading"; + private static final String STATUS_FAILED = "Unavailable"; + private static final String STATUS_IDLE = "YouTube"; + private static final String UNTITLED = "YouTube"; + private static final float OVERLAY_MARGIN = 8.0F; + private static final float OVERLAY_RADIUS = 5.0F; + private static final float OVERLAY_SHADOW = 10.0F; + private static final float OVERLAY_PAD = 3.0F; + private static final float OVERLAY_TITLE_FONT_SIZE = 7.0F; + private static final float OVERLAY_TIME_FONT_SIZE = 6.0F; + private static final float OVERLAY_TEXT_GAP = 3.0F; + private static final float OVERLAY_BAR_HEIGHT = 2.0F; + private static final String TIME_FORMAT = "%d:%02d"; + private static final String TIME_SEPARATOR = " / "; + private static final long MILLIS_PER_SECOND = 1000L; + private static final long SECONDS_PER_MINUTE = 60L; + private final ru share = new ru( + "Share", + (boolean)((((-242147746 ^ 242147747) + ((-242147746 & 242147747) << 1)) + ) != 0)) + .description( + "Broadcast the menu you have open to nearby Evolution users" + ); + private final ru cursor = new ru( + "Cursor", (boolean)((((1529552584 | -1529552583) + (1529552584 & -1529552583)) + ) != 0)) + .description( + "Draw the pointer of the player you are watching" + ); + private final ru pose = new ru( + "Hold Pose", + (boolean)((((-1256338852 ^ 1256338853) + ((-1256338852 & 1256338853) << 1)) + ) != 0)) + .description( + "Pose the player holding the menu and pointing at their cursor" + ); + private final sm distance = new sm("Distance", 32.0F, 8.0F, 64.0F, 2.0F) + .description( + "Maximum distance to render other menus" + ); + private final sm scale = new sm("Scale", 1.0F, 0.4F, 2.0F, 0.05F) + .description( + "Size multiplier for the rendered menu" + ); + private final ru nearbyVideo = new ru( + "Nearby Video", + (boolean)((((-427762527 ^ 427762528) + ((-427762527 & 427762528) << 1)) + ) != 0)) + .description( + "Play the YouTube video the nearest player is holding, with distance-faded sound" + ); + private final sm videoVolume = new sm("Video Volume", 0.8F, 0.0F, 1.0F, 0.05F) + .description("Volume of shared YouTube videos"); + private final ru screenPlayer = new ru( + "Screen Player", + (boolean)((((1342705099 | -1342705098) + (1342705099 & -1342705098)) + ) != 0)) + .description( + "Show the video you play or joined in the corner of the screen" + ); + private final sm playerSize = new sm("Player Size", 180.0F, 100.0F, 360.0F, 10.0F) + .description( + "Width of the on-screen video player" + ); + private final Vector3f screen = new Vector3f(); + private final vb panelTitle = new vb(); + private final vb overlayTitle = new vb(); + private long overlayTimeKey = (4123380252121300029L | -4123380252121300030L) + (4123380252121300029L & -4123380252121300030L); + private String overlayTime = ""; + private static ProjectionMatrixBuffer panelProjection; + + private vd() { + } + + public boolean isSharing() { + return this.share.isEnabled(); + } + + public float getMaxDistance() { + return this.distance.getCurrent(); + } + + public float getVideoVolume() { + return this.videoVolume.getCurrent(); + } + + public boolean playsNearbyVideo() { + return this.nearbyVideo.isEnabled(); + } + + public static void applyPose(PlayerModel var0, AvatarRenderState var1) { + vc var2 = holdPose(var1.id); + if (var2 != null) { + float var3 = var2.blend(); + float var4 = Mth.clamp((var2.cursorX() - 0.5F) * 1.4F, -0.75F, 0.75F); + float var5 = Mth.clamp((var2.cursorY() - 0.5F) * 1.4F, -0.75F, 0.75F); + var0.rightArm.xRot = Mth.lerp(var3, var0.rightArm.xRot, -(radians(67.5F) - var5)); + var0.rightArm.yRot = Mth.lerp(var3, var0.rightArm.yRot, -radians(15.0F) + var4); + var0.rightArm.zRot = Mth.lerp(var3, var0.rightArm.zRot, 0.0F); + var0.rightArm.z = Mth.lerp(var3, var0.rightArm.z, var2.pressed() ? -1.2F : 0.0F); + var0.leftArm.xRot = Mth.lerp(var3, var0.leftArm.xRot, -radians(70.0F)); + var0.leftArm.yRot = Mth.lerp(var3, var0.leftArm.yRot, radians(25.0F)); + var0.leftArm.zRot = Mth.lerp(var3, var0.leftArm.zRot, 0.0F); + var0.head.xRot = Mth.lerp(var3, var0.head.xRot, (radians(22.5F) + var5) * 0.5F); + var0.head.yRot = Mth.lerp(var3, var0.head.yRot, var4 * 0.5F); + var0.head.zRot = Mth.lerp(var3, var0.head.zRot, 0.0F); + } + } + + public static boolean hidesHeldItems(int var0) { + vc var1 = null; + int var3 = 0; + int var2 = -110108105; + + while (true) { + switch (var2) { + case -1254384433: + return (boolean)((var3) != 0); + case -933035238: + var3 = 1; + var2 = -1254384433; + break; + case -110108105: + default: + var1 = holdPose(var0); + if (var1 != null) { + var2 = 1713332500; + } else { + var2 = 1477459976; + } + break; + case 1477459976: + var3 = 0; + var2 = -1254384433; + break; + case 1713332500: + if (var1.blend() >= 0.5F) { + var2 = -933035238; + } else { + var2 = 1477459976; + } + } + } + } + + private static vc holdPose(int var0) { + Minecraft var1 = null; + Entity var2 = null; + AbstractClientPlayer var3 = null; + ang var4 = null; + aog var5 = null; + int var6 = -1910381439; + + while (true) { + switch (var6) { + case -2109431556: + var3 = (AbstractClientPlayer)var2; + var6 = -64887960; + break; + case -1910381439: + default: + if (INSTANCE.isEnabled()) { + var6 = -576289785; + } else { + var6 = -111707776; + } + break; + case -1669069100: + return null; + case -1382286293: + if (var5.fade() > 0.0F) { + var6 = 1701836164; + } else { + var6 = -1244933636; + } + break; + case -1257262677: + return null; + case -1244933636: + return null; + case -914145002: + anc var7 = var4.frame(); + return new vc(var4.fade(), var7.cursorX(), var7.cursorY(), var7.pressed()); + case -907434888: + if (var4.fade() > 0.0F) { + var6 = -914145002; + } else { + var6 = 306233302; + } + break; + case -576289785: + if (!INSTANCE.pose.isEnabled()) { + var6 = -111707776; + } else { + var6 = 1518837311; + } + break; + case -111707776: + return null; + case -64887960: + var4 = anh.viewOf(var3); + if (var4 != null) { + var6 = -907434888; + } else { + var6 = 306233302; + } + break; + case 306233302: + var5 = aoh.sessionOf(var3); + if (var5 != null) { + var6 = -1382286293; + } else { + var6 = -1244933636; + } + break; + case 1518837311: + var1 = Minecraft.getInstance(); + if (var1.level == null) { + var6 = -1257262677; + } else { + var6 = 1644913840; + } + break; + case 1644913840: + var2 = var1.level.getEntity(var0); + if (var2 instanceof AbstractClientPlayer) { + var6 = -2109431556; + } else { + var6 = -1669069100; + } + break; + case 1701836164: + return new vc(var5.fade(), 0.5F, 0.55F, (boolean)((((-2102526516 | 2102526516) + (-2102526516 & 2102526516))) != 0)); + } + } + } + + private static float radians(float var0) { + return var0 * (float) (Math.PI / 180.0); + } + + @k + public void onRender(fs var1) { + aru var2 = null; + mv var3 = null; + float var4 = 0.0F; + int var5 = 0; + ArrayList var6 = null; + Iterator var7 = null; + AbstractClientPlayer var8 = null; + int var9 = 0; + float var10 = 0.0F; + ang var11 = null; + aog var12 = null; + float var13 = 0.0F; + Vec3 var14 = null; + Vec3 var15 = null; + float var16 = 0.0F; + float var17 = 0.0F; + int var19 = 0; + ang var20 = null; + aog var21 = null; + float var22 = 0.0F; + int var18 = -1067263732; + + while (true) { + switch (var18) { + case -2120982615: + var18 = 578627668; + break; + case -2026580329: + var22 = var12.fade(); + var18 = -347442723; + break; + case -1969414997: + var9 = var19; + if (var9 != 0) { + var18 = -1354458147; + } else { + var18 = 653811850; + } + break; + case -1831476018: + var8 = (AbstractClientPlayer)var7.next(); + if (var8 == mc.player) { + var18 = -1315189919; + } else { + var18 = 1306512784; + } + break; + case -1581063230: + var18 = 578627668; + break; + case -1354458147: + if (var5 == 0) { + var18 = 653811850; + } else { + var18 = 578627668; + } + break; + case -1315189919: + var19 = 1; + var18 = -1969414997; + break; + case -1281201075: + return; + case -1164296240: + var18 = 578627668; + break; + case -1095409103: + if (this.isOccluded(var8)) { + var18 = -1581063230; + } else { + var18 = 1567281302; + } + break; + case -1067263732: + default: + if (mc.level != null) { + var18 = 236786797; + } else { + var18 = -385880569; + } + break; + case -1049037126: + if (var8.isInvisibleTo(mc.player)) { + var18 = 201945570; + } else { + var18 = 1348268740; + } + break; + case -798619298: + if (this.bodyBlocks(var8, var15)) { + var18 = -2120982615; + } else { + var18 = -99609668; + } + break; + case -672274706: + var2 = var1.getContext(); + var3 = bz.getInstance().getThemeManager().getCurrentTheme(); + var4 = this.distance.getCurrent(); + var5 = (mc.options.getCameraType().isFirstPerson()) ? 1 : 0; + var6 = new ArrayList(mc.level.players()); + var6.sort(Comparator.comparingDouble(var0 -> -mc.player.distanceToSqr(var0))); + var7 = var6.iterator(); + var18 = 578627668; + break; + case -395209240: + if (var9 != 0) { + var18 = 1427329051; + } else { + var18 = 41985090; + } + break; + case -385880569: + return; + case -384240931: + this.drawWorldPanel(var2, var15, var13, () -> this.drawWindow(var2, var3, var11, var17)); + var18 = 1522232318; + break; + case -347442723: + var16 = var22; + var17 = var16 * Mth.clamp((var4 - var10) / 6.0F, 0.0F, 1.0F); + if (var17 <= 0.0F) { + var18 = 415528142; + } else { + var18 = 2002036748; + } + break; + case -202189806: + var18 = 578627668; + break; + case -99609668: + if (var11 != null) { + var18 = 1712423496; + } else { + var18 = -2026580329; + } + break; + case 41985090: + var20 = anh.viewOf(var8); + var18 = 622131131; + break; + case 201945570: + var18 = 578627668; + break; + case 236786797: + if (mc.player == null) { + var18 = -385880569; + } else { + var18 = 1551661549; + } + break; + case 415528142: + var18 = 578627668; + break; + case 578627668: + if (var7.hasNext()) { + var18 = -1831476018; + } else { + var18 = 593771220; + } + break; + case 593771220: + this.drawScreenPlayer(var2, var3); + return; + case 622131131: + var11 = var20; + if (var11 == null) { + var18 = 1658292990; + } else { + var18 = 1521137909; + } + break; + case 653811850: + if (!var8.isSpectator()) { + var18 = 820006450; + } else { + var18 = 578627668; + } + break; + case 820006450: + if (var9 == 0) { + var18 = -1049037126; + } else { + var18 = 1348268740; + } + break; + case 1306512784: + var19 = 0; + var18 = -1969414997; + break; + case 1348268740: + var10 = mc.player.distanceTo(var8); + if (var10 > var4) { + var18 = -202189806; + } else { + var18 = -395209240; + } + break; + case 1427329051: + var20 = null; + var18 = 622131131; + break; + case 1521137909: + var21 = null; + var18 = 2096120790; + break; + case 1522232318: + var18 = 578627668; + break; + case 1551661549: + aoh.updateFrames(); + if (mc.gui.screen() != null) { + var18 = 1925346353; + } else { + var18 = -672274706; + } + break; + case 1567281302: + var13 = Mth.rotLerp(var1.getTickDelta(), var8.yBodyRotO, var8.yBodyRot); + var14 = Vec3.directionFromRotation(0.0F, var13); + var15 = var8.getPosition(var1.getTickDelta()).add(0.0, var8.getBbHeight() * 0.6F, 0.0).add(var14.scale(0.85F)); + if (!aqk.projectToGui(var15, this.screen)) { + var18 = -1164296240; + } else { + var18 = -798619298; + } + break; + case 1600889618: + this.drawWorldPanel(var2, var15, var13, () -> this.drawVideoWindow(var2, var3, var12, var17)); + var18 = 1522232318; + break; + case 1658292990: + var21 = aoh.sessionOf(var8); + var18 = 2096120790; + break; + case 1706557082: + if (var12 != null) { + var18 = -1095409103; + } else { + var18 = 578627668; + } + break; + case 1712423496: + var22 = var11.fade(); + var18 = -347442723; + break; + case 1925346353: + if (!(mc.gui.screen() instanceof ChatScreen)) { + var18 = -1281201075; + } else { + var18 = -672274706; + } + break; + case 2002036748: + if (var11 != null) { + var18 = -384240931; + } else { + var18 = 1600889618; + } + break; + case 2096120790: + var12 = var21; + if (var11 == null) { + var18 = 1706557082; + } else { + var18 = -1095409103; + } + } + } + } + + private boolean bodyBlocks(AbstractClientPlayer var1, Vec3 var2) { + Camera var3 = null; + int var4 = -1464098894; + + while (true) { + switch (var4) { + case -1464098894: + default: + var3 = mc.getEntityRenderDispatcher().camera; + if (var3 == null) { + var4 = 156230491; + } else { + var4 = 1213703690; + } + break; + case 156230491: + return (boolean)(((1)) != 0); + case 1213703690: + return var1.getBoundingBox().clip(var3.position(), var2).isPresent(); + } + } + } + + private void drawWorldPanel(aru var1, Vec3 var2, float var3, Runnable var4) { + ProjectionMatrixBuffer var5 = panelProjection(); + Camera var6 = mc.getEntityRenderDispatcher().camera; + if (var5 != null && var6 != null) { + Vec3 var7 = var2.subtract(var6.position()); + float var8 = 1.0F * this.scale.getCurrent() / 104.0F; + boolean var9 = atf.isRecording(); + atf.flush(); + RenderSystem.backupProjectionMatrix(); + RenderSystem.setProjectionMatrix(var5.getBuffer(auk.getLastProjMat()), ProjectionType.PERSPECTIVE); + Matrix4fStack var10 = RenderSystem.getModelViewStack(); + var10.pushMatrix(); + var10.set(auk.getLastWorldSpaceMatrix()); + var10.translate((float)var7.x, (float)var7.y, (float)var7.z); + var10.rotateY(-var3 * (float) (Math.PI / 180.0)); + var10.scale(var8, -var8, var8); + if (var9) { + atd.beginSharedTransform(); + } + + Matrix3x2fStack var11 = var1.pose(); + var11.pushMatrix(); + var11.identity(); + + try { + var4.run(); + } finally { + gt.flushBatch(); + atf.flush(); + var11.popMatrix(); + var10.popMatrix(); + RenderSystem.restoreProjectionMatrix(); + if (var9) { + atd.beginSharedTransform(); + } + } + } + } + + private static ProjectionMatrixBuffer panelProjection() { + if (panelProjection == null) { + try { + panelProjection = new ProjectionMatrixBuffer( + "evolution_gui_presence" + ); + } catch (IllegalStateException var1) { + return null; + } + } + + return panelProjection; + } + + private void drawWindow(aru var1, mv var2, ang var3, float var4) { + float var5 = 0.0F; + float var6 = 0.0F; + asu var7 = null; + asu var8 = null; + asu var9 = null; + asu var10 = null; + asu var11 = null; + asu var12 = null; + ge var13 = null; + ge var14 = null; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + int var26 = 0; + int var27 = 0; + int var28 = 0; + float var29 = 0.0F; + float var30 = 0.0F; + float var31 = 0.0F; + float var32 = 0.0F; + float var34 = 0.0F; + float var35 = 0.0F; + float var36 = 0.0F; + int var33 = 518954089; + + while (true) { + switch (var33) { + case -2144395153: + this.drawCursor(var1, var2, var3, var5, var6, var4, var7); + var33 = -1210602909; + break; + case -1820027937: + var35 = var28 * 10.8F - 2.2F; + var33 = 2057026027; + break; + case -1470838849: + var36 = Math.max(0.18F, var24 / var29); + var33 = 1445572713; + break; + case -1400683472: + this.drawScrollLane(var1, var19, var21, var24, var31, var32, var7, var12); + var33 = -1206408480; + break; + case -1210602909: + return; + case -1206408480: + this.drawFooter(var1, var5, var23, var7, var12); + if (this.cursor.isEnabled()) { + var33 = -2144395153; + } else { + var33 = -1210602909; + } + break; + case -1173242310: + var36 = 1.0F; + var33 = 1445572713; + break; + case 57698048: + var16 = var34; + var17 = var5 + 3.2F; + var18 = var6 + 3.2F; + var19 = var5 + 104.0F - 3.2F - 1.3F; + var20 = var17 + var16 + 2.6F; + var21 = var18 + 5.4F + 2.4F; + var22 = Math.max(0.0F, var19 - 2.6F - var20); + var23 = var6 + 65.0F - 3.2F - 2.6F; + var24 = Math.max(0.0F, var23 - 2.0F - var21); + var25 = Math.max(0.0F, var21 + var24 - var18); + this.drawSidebar(var1, var3, var13, var14, var15, var17, var18, var16, var25, var4, var7, var9, var11, var12); + this.drawHeader(var1, var3, var20, var18, var19 - var20, var7, var9, var11); + var26 = Math.max(1, var3.columns()); + var27 = Math.max(0, var3.cards()); + var28 = (var27 + var26 - ((1096965857 | -1096965856) + (1096965857 & -1096965856))) / var26; + if (var28 > 0) { + var33 = -1820027937; + } else { + var33 = 813202605; + } + break; + case 139699240: + var34 = Math.max(6.6F, var15 + 4.0F); + var33 = 57698048; + break; + case 518954089: + default: + var5 = -52.0F; + var6 = -32.5F; + var7 = var2.getColor().withAlpha(var4); + var8 = var2.getBackgroundColor().withAlpha(var4 * 0.94F); + var9 = var2.getForegroundLight().withAlpha(var4 * 0.55F); + var10 = var2.getForegroundColor().withAlpha(var4 * 0.7F); + var11 = var2.getWhite().withAlpha(var4 * 0.35F); + var12 = var2.getWhite().withAlpha(var4 * 0.18F); + drawWindowFrame(var1, var5, var6, 104.0F, 65.0F, 4.0F, 6.0F, var4, var7, var8); + var13 = gl.ICONS.getFont(3.4F); + var14 = gl.MEDIUM.getFont(3.4F); + var15 = maxIconWidth(var13); + if (var3.sidebarExpanded()) { + var33 = 1639843764; + } else { + var33 = 139699240; + } + break; + case 813202605: + var35 = 0.0F; + var33 = 2057026027; + break; + case 1445572713: + var32 = var36; + this.drawCards(var1, var26, var27, var20, var21, var22, var24, var30 * var31, var10, var11, var12); + if (var30 > 0.0F) { + var33 = -1400683472; + } else { + var33 = -1206408480; + } + break; + case 1639843764: + var34 = expandedSidebarWidth(var15, var14); + var33 = 57698048; + break; + case 2057026027: + var29 = var35; + var30 = Math.max(0.0F, var29 - var24); + var31 = Mth.clamp(var3.frame().scroll(), 0.0F, 1.0F); + if (var29 > var24) { + var33 = -1470838849; + } else { + var33 = -1173242310; + } + } + } + } + + private static void drawWindowFrame(aru var0, float var1, float var2, float var3, float var4, float var5, float var6, float var7, asu var8, asu var9) { + arq var10 = arq.all(var5); + atb.drawShadow(var0.pose(), var1, var2, var3, var4, var6, var10, asu.BLACK.withAlpha(var7 * 0.22F)); + var0.drawRoundedRect(var1, var2, var3, var4, var10, var9); + var0.drawRoundedBorder(var1, var2, var3, var4, 0.6F, var10, var8); + } + + private void drawVideoWindow(aru var1, mv var2, aog var3, float var4) { + float var5 = -52.0F; + float var6 = -32.5F; + asu var7 = var2.getColor().withAlpha(var4); + asu var8 = var2.getBackgroundColor().withAlpha(var4 * 0.94F); + drawWindowFrame(var1, var5, var6, 104.0F, 65.0F, 4.0F, 6.0F, var4, var7, var8); + float var9 = var5 + 3.2F; + float var10 = var6 + 3.2F; + float var11 = 97.6F; + float var12 = var6 + 65.0F - 3.2F - 2.6F; + float var13 = Math.max(0.0F, var12 - 2.0F - var10); + aod var14 = var3.player(); + this.drawVideoArea( + var1, var2, var14, var3.title(), this.panelTitle, gl.SEMIBOLD.getFont(4.2F), gl.MEDIUM.getFont(3.2F), var9, var10, var11, var13, 2.4F, var4 + ); + drawProgress(var1, var14, var9, var12 + 0.6999999F, var11, 1.2F, var7, var2.getWhite().withAlpha(var4 * 0.18F)); + } + + private void drawVideoArea( + aru var1, mv var2, aod var3, String var4, vb var5, ge var6, ge var7, float var8, float var9, float var10, float var11, float var12, float var13 + ) { + arq var14 = arq.all(var12); + if (var3 != null && var3.hasFrame() && var3.frameWidth() > 0 && var3.frameHeight() > 0) { + var1.drawRoundedRect(var8, var9, var10, var11, var14, asu.BLACK.withAlpha(var13)); + float var20 = (float)var3.frameWidth() / var3.frameHeight(); + float var21 = var10; + float var22 = var10 / var20; + if (var22 > var11) { + var22 = var11; + var21 = var11 * var20; + } + + float var23 = var8 + (var10 - var21) / 2.0F; + float var24 = var9 + (var11 - var22) / 2.0F; + atf.flush(); + atb.drawRoundedTexture(var1.pose(), var3.textureId(), var23, var24, var21, var22, var14, asu.WHITE.withAlpha(var13)); + if (var3.isPaused()) { + drawPauseMark(var1, var8 + var10 / 2.0F, var9 + var11 / 2.0F, var7.height(), var2.getWhite().withAlpha(var13)); + } + } else { + var1.drawRoundedRect(var8, var9, var10, var11, var14, var2.getForegroundLight().withAlpha(var13 * 0.55F)); + String var15 = var3 == null + ? "YouTube" + : ( + var3.status() == aoc.FAILED + ? "Unavailable" + : "Loading" + ); + String var16 = var4 != null && !var4.isBlank() ? var4 : "YouTube"; + String var17 = var5.fit(var6, var16, var10 - 8.0F); + float var18 = var6.height() + 1.6F + var7.height(); + float var19 = var9 + (var11 - var18) / 2.0F; + var1.drawText(var6, var17, var8 + (var10 - var6.width(var17)) / 2.0F, var19, var2.getWhite().withAlpha(var13)); + var1.drawText(var7, var15, var8 + (var10 - var7.width(var15)) / 2.0F, var19 + var6.height() + 1.6F, var2.getWhite().withAlpha(var13 * 0.35F)); + } + } + + private static void drawPauseMark(aru var0, float var1, float var2, float var3, asu var4) { + float var5 = var3 * 0.7F; + float var6 = var3 * 0.8F; + float var7 = var2 - var3 / 2.0F; + arq var8 = arq.all(var5 / 2.0F); + var0.drawRoundedRect(var1 - var6 / 2.0F - var5, var7, var5, var3, var8, var4); + var0.drawRoundedRect(var1 + var6 / 2.0F, var7, var5, var3, var8, var4); + } + + private static void drawProgress(aru var0, aod var1, float var2, float var3, float var4, float var5, asu var6, asu var7) { + arq var8 = null; + long var9 = (-1354582866957689901L ^ 1354582866957689901L) + ((-1354582866957689901L & 1354582866957689901L) << 1); + float var11 = 0.0F; + long var13 = (1048853838600787213L | -1048853838600787213L) + (1048853838600787213L & -1048853838600787213L); + int var12 = 1134745123; + + while (true) { + switch (var12) { + case -1179323648: + var9 = var13; + if (var9 <= (-6030743167876244443L ^ 6030743167876244443L) + ((-6030743167876244443L & 6030743167876244443L) << 1)) { + var12 = 1885479562; + } else { + var12 = 1936351004; + } + break; + case -951731570: + var13 = var1.durationMs(); + var12 = -1179323648; + break; + case 167187502: + return; + case 338970048: + var13 = (4330119564936869110L ^ -4330119564936869110L) + ((4330119564936869110L & -4330119564936869110L) << 1); + var12 = -1179323648; + break; + case 1134745123: + default: + var8 = asj.pill(var5); + var0.drawRoundedRect(var2, var3, var4, var5, var8, var7); + if (var1 == null) { + var12 = 338970048; + } else { + var12 = -951731570; + } + break; + case 1542677839: + var0.drawRoundedRect(var2, var3, Math.max(var5, var4 * var11), var5, var8, var6); + var12 = 167187502; + break; + case 1885479562: + return; + case 1936351004: + var11 = Mth.clamp((float)var1.positionMs() / (float)var9, 0.0F, 1.0F); + if (var11 > 0.0F) { + var12 = 1542677839; + } else { + var12 = 167187502; + } + } + } + } + + private void drawScreenPlayer(aru var1, mv var2) { + aod var3 = null; + ge var4 = null; + ge var5 = null; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + asu var12 = null; + float var13 = 0.0F; + float var14 = 0.0F; + String var15 = null; + float var16 = 0.0F; + float var17 = 0.0F; + String var18 = null; + aod var20 = null; + String var21 = null; + int var19 = -577119964; + + while (true) { + switch (var19) { + case -1028890731: + var21 = var3.title(); + var19 = 933178554; + break; + case -631593271: + var4 = gl.SEMIBOLD.getFont(7.0F); + var5 = gl.MEDIUM.getFont(6.0F); + var6 = this.playerSize.getCurrent(); + var7 = var6 / 1.7777778F; + var8 = var6 + 6.0F; + var9 = 3.0F + var7 + 3.0F + var4.height() + 3.0F + 2.0F + 3.0F; + var10 = mc.getWindow().getGuiScaledWidth() - var8 - 8.0F; + var11 = 8.0F; + var12 = var2.getColor(); + drawWindowFrame(var1, var10, var11, var8, var9, 5.0F, 10.0F, 1.0F, var12, var2.getBackgroundColor().withAlpha(0.94F)); + var13 = var10 + 3.0F; + var14 = var11 + 3.0F; + this.drawVideoArea(var1, var2, var3, var3.title(), this.overlayTitle, var4, var5, var13, var14, var6, var7, 3.5F, 1.0F); + var15 = this.timeText(var3); + var16 = var14 + var7 + 3.0F; + var17 = var5.width(var15); + var1.drawText(var5, var15, var13 + var6 - var17, var16 + (var4.height() - var5.height()) / 2.0F, var2.getWhite().withAlpha(0.7F)); + if (var3.title() == null) { + var19 = 2084745163; + } else { + var19 = -1028890731; + } + break; + case -585938823: + return; + case -577119964: + default: + if (this.screenPlayer.isEnabled()) { + var19 = -507472949; + } else { + var19 = -327679264; + } + break; + case -507472949: + var20 = aoh.overlayPlayer(); + var19 = 1274943172; + break; + case -327679264: + var20 = null; + var19 = 1274943172; + break; + case 933178554: + var18 = var21; + var1.drawText(var4, this.overlayTitle.fit(var4, var18, var6 - var17 - 3.0F), var13, var16, var2.getWhite()); + drawProgress(var1, var3, var13, var16 + var4.height() + 3.0F, var6, 2.0F, var12, var2.getWhite().withAlpha(0.18F)); + return; + case 1274943172: + var3 = var20; + if (var3 == null) { + var19 = -585938823; + } else { + var19 = -631593271; + } + break; + case 2084745163: + var21 = "YouTube"; + var19 = 933178554; + } + } + } + + private String timeText(aod var1) { + long var2 = (-8158786746068689230L | 8158786746068689230L) + (-8158786746068689230L & 8158786746068689230L); + long var4 = (-3053667042584187931L | 3053667042584187931L) + (-3053667042584187931L & 3053667042584187931L); + long var6 = (-5204242104135043492L ^ 5204242104135043492L) + ((-5204242104135043492L & 5204242104135043492L) << 1); + int var8 = 1555969243; + + while (true) { + switch (var8) { + case -755558853: + this.overlayTimeKey = var6; + this.overlayTime = formatTime(var2) + " / " + formatTime(var4); + var8 = 1534709685; + break; + case 1534709685: + return this.overlayTime; + case 1555969243: + default: + var2 = var1.positionMs() / ((-8990735530513342163L ^ 8990735530513343163L) + ((-8990735530513342163L & 8990735530513343163L) << 1)); + var4 = var1.durationMs() / ((-1421686942122767741L | 1421686942122768741L) + (-1421686942122767741L & 1421686942122768741L)); + var6 = var2 * (var4 + (-3977134534187128265L ^ 3977134534187128266L) + ((-3977134534187128265L & 3977134534187128266L) << 1)) + var4; + if (var6 != this.overlayTimeKey) { + var8 = -755558853; + } else { + var8 = 1534709685; + } + } + } + } + + private static String formatTime(long var0) { + String var10000 = "%d:%02d"; + Object[] var10001 = new Object[2]; + var10001[0] = var0 + / ((2679518038245764775L | -2679518038245764715L) + (2679518038245764775L & -2679518038245764715L)); + var10001[1] = var0 + % ((909419280580373280L | -909419280580373220L) + (909419280580373280L & -909419280580373220L)); + return var10000.formatted(var10001); + } + + private static float maxIconWidth(ge var0) { + float var1 = 0.0F; + rl[] var2 = null; + int var3 = 0; + int var4 = 0; + rl var5 = null; + int var6 = -1936937959; + + while (true) { + switch (var6) { + case -1936937959: + default: + var1 = 0.0F; + var2 = rl.listed(); + var3 = var2.length; + var4 = 0; + var6 = -1862242908; + break; + case -1862242908: + if (var4 < var3) { + var6 = 1184317327; + } else { + var6 = 2124022383; + } + break; + case 1184317327: + var5 = var2[var4]; + var1 = Math.max(var1, var0.width(var5.getIcon())); + var4++; + var6 = -1862242908; + break; + case 2124022383: + return var1; + } + } + } + + private static float expandedSidebarWidth(float var0, ge var1) { + float var2 = 0.0F; + rl[] var3 = rl.listed(); + int var4 = var3.length; + + for (int var5 = 0; var5 < var4; var5++) { + rl var6 = var3[var5]; + var2 = Math.max(var2, var1.width(var6.getName())); + } + + float var7 = 4.0F + var0 + 1.4F + var2; + return Math.min(var7, 31.2F); + } + + private void drawSidebar( + aru var1, ang var2, ge var3, ge var4, float var5, float var6, float var7, float var8, float var9, float var10, asu var11, asu var12, asu var13, asu var14 + ) { + arq var15 = arq.all(2.4F); + var1.drawRoundedRect(var6, var7, var8, var9, var15, var12); + var1.drawRoundedRect(var6 + 0.7F, var7 + 0.7F, var8 - 1.4F, 4.7000003F, arq.all(1.8F), var14); + rl[] var16 = rl.listed(); + int var17 = 0; + rl[] var18 = var16; + int var19 = var18.length; + + for (int var20 = 0; var20 < var19; var20++) { + rl var21 = var18[var20]; + if (this.isBottomCategory(var21)) { + var17++; + } + } + + float var33 = (var9 - 4.7000003F - 3.1000001F) / var16.length; + float var34 = Math.max(0.0F, var33 - 0.6F); + float var35 = var7 + 4.7000003F + 3.1000001F; + float var36 = var7 + var9 - var17 * var33; + int var22 = 0; + int var23 = 0; + rl[] var24 = var16; + int var25 = var24.length; + + for (int var26 = 0; var26 < var25; var26++) { + rl var27 = var24[var26]; + float var28; + if (this.isBottomCategory(var27)) { + var28 = var36 + var23 * var33; + var23++; + } else { + var28 = var35 + var22 * var33; + var22++; + } + + int var29 = var27 == var2.category() + ? 1: 0; + if (var29 != 0) { + var1.drawRoundedRect(var6 + 0.7F, var28, var8 - 1.4F, var34, arq.all(1.8F), var11.withAlpha(var10 * 0.22F)); + var1.drawRoundedRect(var6 + 0.7F, var28 + var34 * 0.5F / 2.0F, 1.0F, var34 * 0.5F, arq.all(0.9F), var11); + } + + asu var30 = var29 != 0 ? var11 : var13; + String var31 = var27.getIcon(); + float var32 = var6 + 2.0F + (var5 - var3.width(var31)) / 2.0F; + var1.drawText(var3, var31, var32, var28 + (var34 - var3.height()) / 2.0F, var30); + if (var2.sidebarExpanded()) { + var1.drawText(var4, var27.getName(), var6 + 2.0F + var5 + 1.4F, var28 + (var34 - var4.height()) / 2.0F, var30); + } + } + } + + private void drawHeader(aru var1, ang var2, float var3, float var4, float var5, asu var6, asu var7, asu var8) { + ge var9 = gl.SEMIBOLD.getFont(3.8F); + var1.drawText(var9, var2.category().getName(), var3, var4 + (5.4F - var9.height()) / 2.0F, var8); + float var10 = 7.8F; + float var11 = Math.max(0.0F, var5 * 0.46F); + float var12 = var3 + var5 - var10 - 2.6F - var11; + float var13 = var4 + 0.8000001F; + arq var14 = asj.pill(3.8F); + var1.drawRoundedRect(var12, var13, var11, 3.8F, var14, var7); + if (var2.searching()) { + var1.drawRoundedBorder(var12, var13, var11, 3.8F, 0.6F, var14, var6); + } + + float var15 = var4 + 1.0F; + float var16 = var3 + var5 - var10; + arq var17 = arq.all(0.9F); + int var18 = var2.columns() == 2? 1: 0; + var1.drawRoundedRect(var16, var15, 3.4F, 3.4F, var17, var18 != 0 ? var6 : var7); + var1.drawRoundedRect(var16 + 3.4F + 1.0F, var15, 3.4F, 3.4F, var17, var18 != 0 ? var7 : var6); + } + + private void drawCards(aru var1, int var2, int var3, float var4, float var5, float var6, float var7, float var8, asu var9, asu var10, asu var11) { + float var12 = 0.0F; + float var13 = 0.0F; + arq var14 = null; + arq var15 = null; + int var16 = 0; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + int var23 = -500988490; + + while (true) { + switch (var23) { + case -2077108605: + return; + case -1811855469: + var22 = var18 + 3.1000001F; + if (var22 >= var5) { + var23 = -199379170; + } else { + var23 = -805091109; + } + break; + case -1654935227: + var1.drawRoundedRect(var17 + 2.0F, var21, var12 * 0.42F, 1.3F, var15, var10); + var23 = -1811855469; + break; + case -1179732744: + var23 = -805091109; + break; + case -805091109: + var16++; + var23 = -78922889; + break; + case -645985538: + var17 = var4 + var16 % var2 * (var12 + 2.2F); + var18 = var5 + var16 / var2 * 10.8F - var8; + var19 = Math.max(var18, var5); + var20 = Math.min(var18 + 8.6F, var13); + if (var20 - var19 <= 0.0F) { + var23 = -1179732744; + } else { + var23 = -474500983; + } + break; + case -500988490: + default: + var12 = (var6 - 2.2F * (var2 - ((617352270 ^ -617352269) + ((617352270 & -617352269) << 1)))) / var2; + var13 = var5 + var7; + var14 = arq.all(1.8F); + var15 = arq.all(0.9F); + var16 = 0; + var23 = -78922889; + break; + case -474500983: + var1.drawRoundedRect(var17, var19, var12, var20 - var19, var14, var9); + var21 = var18 + 3.65F; + if (var21 >= var5) { + var23 = 453803249; + } else { + var23 = -1811855469; + } + break; + case -199379170: + if (var22 + 2.4F <= var13) { + var23 = 1933563789; + } else { + var23 = -805091109; + } + break; + case -78922889: + if (var16 < var3) { + var23 = -645985538; + } else { + var23 = -2077108605; + } + break; + case 453803249: + if (var21 + 1.3F <= var13) { + var23 = -1654935227; + } else { + var23 = -1811855469; + } + break; + case 1933563789: + var1.drawRoundedRect(var17 + var12 - 2.0F - 4.6F, var22, 4.6F, 2.4F, asj.pill(2.4F), var11); + var23 = -805091109; + } + } + } + + private void drawScrollLane(aru var1, float var2, float var3, float var4, float var5, float var6, asu var7, asu var8) { + arq var9 = asj.pill(1.3F); + var1.drawRoundedRect(var2, var3, 1.3F, var4, var9, var8); + float var10 = Mth.clamp(var4 * var6, Math.min(6.0F, var4), var4); + float var11 = var3 + (var4 - var10) * Mth.clamp(var5, 0.0F, 1.0F); + var1.drawRoundedRect(var2, var11, 1.3F, var10, var9, var7); + } + + private void drawFooter(aru var1, float var2, float var3, asu var4, asu var5) { + float var6 = var3 + 0.39999998F; + float var7 = var2 + 3.2F; + var1.drawRoundedRect(var7, var6, 1.8F, 1.8F, asj.pill(1.8F), var4); + var1.drawRoundedRect(var7 + 1.8F + 2.0F, var3 + 0.6999999F, 16.0F, 1.2F, asj.pill(1.2F), var5); + } + + private void drawCursor(aru var1, mv var2, ang var3, float var4, float var5, float var6, asu var7) { + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 1702430638; + + while (true) { + switch (var10) { + case -1759076360: + var1.drawRoundedRect(var8 - 2.6F, var9 - 2.6F, 5.2F, 5.2F, asj.pill(5.2F), var7.withAlpha(var6 * 0.3F)); + var1.drawRoundedRect(var8 - 1.3F, var9 - 1.3F, 2.6F, 2.6F, asj.pill(2.6F), var2.getWhite().withAlpha(var6)); + return; + case 241062275: + var1.drawRoundedRect(var8 - 4.0F, var9 - 4.0F, 8.0F, 8.0F, asj.pill(8.0F), var7.withAlpha(var6 * 0.22F)); + var10 = -1759076360; + break; + case 1702430638: + default: + var8 = var4 + 104.0F * Mth.clamp(var3.frame().cursorX(), 0.0F, 1.0F); + var9 = var5 + 65.0F * Mth.clamp(var3.frame().cursorY(), 0.0F, 1.0F); + if (var3.frame().pressed()) { + var10 = 241062275; + } else { + var10 = -1759076360; + } + } + } + } + + private boolean isBottomCategory(rl var1) { + int var3 = 0; + int var2 = -1003986438; + + while (true) { + switch (var2) { + case -1676398095: + var3 = 0; + var2 = -921410052; + break; + case -1174142337: + if (var1 == rl.CONFIGS) { + var2 = 316265175; + } else { + var2 = -1676398095; + } + break; + case -1003986438: + default: + if (var1 != rl.THEMES) { + var2 = -737518575; + } else { + var2 = 316265175; + } + break; + case -921410052: + return (boolean)((var3) != 0); + case -737518575: + if (var1 != rl.APPEARANCE) { + var2 = -450047893; + } else { + var2 = 316265175; + } + break; + case -450047893: + if (var1 != rl.FRIENDS) { + var2 = -1174142337; + } else { + var2 = 316265175; + } + break; + case 316265175: + var3 = 1; + var2 = -921410052; + } + } + } + + private boolean isOccluded(AbstractClientPlayer var1) { + ClipContext var2 = null; + int var4 = 0; + int var3 = 414317345; + + while (true) { + switch (var3) { + case -1645628623: + return (boolean)((var4) != 0); + case 414317345: + default: + var2 = new ClipContext(mc.getEntityRenderDispatcher().camera.position(), var1.getEyePosition(), Block.COLLIDER, Fluid.NONE, mc.player); + if (mc.level.clip(var2).getType() != Type.MISS) { + var3 = 2105738830; + } else { + var3 = 1295445019; + } + break; + case 1295445019: + var4 = 0; + var3 = -1645628623; + break; + case 2105738830: + var4 = 1; + var3 = -1645628623; + } + } + } +} diff --git a/src/main/java/defpackage/ve.java b/src/main/java/defpackage/ve.java new file mode 100644 index 0000000..7bcb18e --- /dev/null +++ b/src/main/java/defpackage/ve.java @@ -0,0 +1,13 @@ +package defpackage; + +@rn(name = "HMI", category = rl.RENDER, description = "Hold My Items hand animations") +public final class ve extends rm { + public static final ve INSTANCE = new ve(); + + private ve() { + } + + public static boolean active() { + return INSTANCE.isEnabled(); + } +} diff --git a/src/main/java/defpackage/vf.java b/src/main/java/defpackage/vf.java new file mode 100644 index 0000000..180a2e5 --- /dev/null +++ b/src/main/java/defpackage/vf.java @@ -0,0 +1,17 @@ +package defpackage; + +final class vf { + final float[] outlinePos; + final int[] outlineColor; + final float[] fillPos; + final int[] fillColor; + final int fillVertexCount; + + vf(float[] var1, int[] var2, float[] var3, int[] var4, int var5) { + this.outlinePos = var1; + this.outlineColor = var2; + this.fillPos = var3; + this.fillColor = var4; + this.fillVertexCount = var5; + } +} diff --git a/src/main/java/defpackage/vg.java b/src/main/java/defpackage/vg.java new file mode 100644 index 0000000..48c8530 --- /dev/null +++ b/src/main/java/defpackage/vg.java @@ -0,0 +1,91 @@ +package defpackage; + +final class vg { + final int segments; + final int sides; + final float[] wA; + final float[] wB; + final float[] oA; + final float[] oB; + final float[] oC; + + vg(int var1, int var2) { + this.segments = var1; + this.sides = var2; + int var3 = var1 + 1; + this.wA = new float[var3]; + this.wB = new float[var3]; + this.oA = new float[var3 * var2]; + this.oB = new float[var3 * var2]; + this.oC = new float[var3 * var2]; + float[] var4 = var2 == 4? vl.COS_LUT_4 : vl.COS_LUT_8; + float[] var5 = var2 == 4? vl.SIN_LUT_4 : vl.SIN_LUT_8; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + + for (int var9 = 0; var9 <= var1; var9++) { + float var10 = (float)var9 / var1; + float var11 = 1.0F - var10; + this.wA[var9] = var11 * var11; + this.wB[var9] = var10 * var10; + float var12 = -2.0F * var11; + float var13 = 2.0F * var10; + float var14 = 0.0F; + float var15 = var12 * var12 + var13 * var13; + if (var15 > 1.0E-8F) { + float var16 = vl.fastInvSqrt(var15); + var12 *= var16; + var13 *= var16; + } + + float var17; + float var18; + float var19; + float var20; + float var21; + float var26; + if (var9 == 0) { + var26 = 0.0F; + var17 = -1.0F; + var18 = 0.0F; + var19 = 0.0F; + var20 = 0.0F; + var21 = 1.0F; + } else { + float var22 = var6 * var12 + var7 * var13 + var8 * var14; + var26 = var6 - var22 * var12; + var17 = var7 - var22 * var13; + var18 = var8 - var22 * var14; + float var23 = var26 * var26 + var17 * var17 + var18 * var18; + if (var23 > 1.0E-8F) { + float var24 = vl.fastInvSqrt(var23); + var26 *= var24; + var17 *= var24; + var18 *= var24; + } else { + var26 = var6; + var17 = var7; + var18 = var8; + } + + var19 = var13 * var18 - var14 * var17; + var20 = var14 * var26 - var12 * var18; + var21 = var12 * var17 - var13 * var26; + } + + var6 = var26; + var7 = var17; + var8 = var18; + int var30 = var9 * var2; + + for (int var31 = 0; var31 < var2; var31++) { + float var32 = var4[var31]; + float var25 = var5[var31]; + this.oA[var30 + var31] = var26 * var32 + var19 * var25; + this.oB[var30 + var31] = var17 * var32 + var20 * var25; + this.oC[var30 + var31] = var18 * var32 + var21 * var25; + } + } + } +} diff --git a/src/main/java/defpackage/vh.java b/src/main/java/defpackage/vh.java new file mode 100644 index 0000000..b237400 --- /dev/null +++ b/src/main/java/defpackage/vh.java @@ -0,0 +1,1545 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.VertexConsumer; + +final class vh { + float minX; + float minY; + float minZ; + float maxX; + float maxY; + float maxZ; + float glowMinX; + float glowMinY; + float glowMinZ; + float glowMaxX; + float glowMaxY; + float glowMaxZ; + float centerW; + float centerH; + float centerD; + float eyeX; + float eyeY; + float eyeZ; + float endX; + float endY; + float endZ; + double distSq; + boolean doEyeLine; + boolean isItem; + int overrideColor = -1; + int overrideFillColor = -1; + vf cachedMesh = null; + final float[] fillPos = new float[6144]; + final int[] fillColor = new int[2048]; + int fillVertexCount = 0; + final float[] outlinePos = new float[49152]; + final int[] outlineColor = new int[16384]; + int outlineVertexCount = 0; + + vh() { + } + + void submitFill(VertexConsumer var1) { + if (this.cachedMesh != null && this.cachedMesh.fillVertexCount > 0) { + float[] var10 = this.cachedMesh.fillPos; + int[] var11 = this.cachedMesh.fillColor; + int var12 = this.cachedMesh.fillVertexCount; + float var13 = this.centerW; + float var15 = this.centerH; + float var7 = this.centerD; + int var8 = 0; + + int var9; + for (var9 = 0; + var9 + (-1577318287 ^ 1577318290) + ((-1577318287 & 1577318290) << 1) < var12; + var9 += 4 + ) { + var1.addVertex( + var10[var8] + var13, + var10[var8 + 1] + var15, + var10[var8 + 2] + var7 + ) + .setColor(this.overrideFillColor != -1? this.overrideFillColor : var11[var9]); + var1.addVertex( + var10[var8 + 3] + var13, + var10[var8 + 4] + var15, + var10[var8 + 5] + var7 + ) + .setColor( + this.overrideFillColor != -1? this.overrideFillColor + : var11[var9 + 1] + ); + var1.addVertex( + var10[var8 + 6] + var13, + var10[var8 + 7] + var15, + var10[var8 + 8] + var7 + ) + .setColor( + this.overrideFillColor != -1? this.overrideFillColor + : var11[var9 + 2] + ); + var1.addVertex( + var10[var8 + 9] + var13, + var10[var8 + 10] + var15, + var10[var8 + 11] + var7 + ) + .setColor( + this.overrideFillColor != -1? this.overrideFillColor + : var11[var9 + 3] + ); + var8 += 12; + } + + while (var9 < var12) { + var1.addVertex( + var10[var8] + var13, + var10[var8 + 1] + var15, + var10[var8 + 2] + var7 + ) + .setColor(this.overrideFillColor != -1? this.overrideFillColor : var11[var9]); + var8 += 3; + var9++; + } + } else { + float[] var2 = this.fillPos; + int[] var3 = this.fillColor; + int var4 = this.fillVertexCount; + + int var5; + for (var5 = 0; + var5 + (-894718325 ^ 894718328) + ((-894718325 & 894718328) << 1) < var4; + var5 += 4 + ) { + int var6 = var5 * (3); + var1.addVertex( + var2[var6], + var2[var6 + 1], + var2[var6 + 2] + ) + .setColor(var3[var5]); + var1.addVertex( + var2[var6 + 3], + var2[var6 + 4], + var2[var6 + 5] + ) + .setColor(var3[var5 + 1]); + var1.addVertex( + var2[var6 + 6], + var2[var6 + 7], + var2[var6 + 8] + ) + .setColor(var3[var5 + 2]); + var1.addVertex( + var2[var6 + 9], + var2[var6 + 10], + var2[var6 + 11] + ) + .setColor(var3[var5 + 3]); + } + + while (var5 < var4) { + int var14 = var5 * (3); + var1.addVertex( + var2[var14], + var2[var14 + 1], + var2[var14 + 2] + ) + .setColor(var3[var5]); + var5++; + } + } + } + + void submitShaderFill(VertexConsumer var1) { + float[] var2 = null; + int var3 = 0; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + int var7 = 0; + float[] var9 = null; + int var10 = 0; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + int var8 = -484814364; + + while (true) { + switch (var8) { + case -2144401842: + var13 = 0.0F; + var8 = 755897147; + break; + case -2021004977: + var13 = this.centerD; + var8 = 755897147; + break; + case -1935575402: + var1.addVertex( + var2[var7 * (3)] + var4, + var2[var7 * 4] + + var5, + var2[var7 * 5] + + var6 + ) + .setColor((-1488599553 | 1488599552) + (-1488599553 & 1488599552)); + var7++; + var8 = -608651366; + break; + case -1328129994: + var2 = var9; + if (this.cachedMesh != null) { + var8 = -871755887; + } else { + var8 = 266461607; + } + break; + case -1192955878: + var4 = var11; + if (this.cachedMesh != null) { + var8 = 1351068073; + } else { + var8 = -1183513195; + } + break; + case -1183513195: + var12 = 0.0F; + var8 = 872390173; + break; + case -871755887: + var10 = this.cachedMesh.fillVertexCount; + var8 = -482626421; + break; + case -608651366: + if (var7 < var3) { + var8 = -1935575402; + } else { + var8 = 1087455380; + } + break; + case -484814364: + default: + if (this.cachedMesh != null) { + var8 = 551494321; + } else { + var8 = -209318514; + } + break; + case -482626421: + var3 = var10; + if (var3 == 0) { + var8 = 1435622533; + } else { + var8 = 1006406770; + } + break; + case -209318514: + var9 = this.fillPos; + var8 = -1328129994; + break; + case 266461607: + var10 = this.fillVertexCount; + var8 = -482626421; + break; + case 551494321: + var9 = this.cachedMesh.fillPos; + var8 = -1328129994; + break; + case 755897147: + var6 = var13; + var7 = 0; + var8 = -608651366; + break; + case 871962213: + var11 = this.centerW; + var8 = -1192955878; + break; + case 872390173: + var5 = var12; + if (this.cachedMesh != null) { + var8 = -2021004977; + } else { + var8 = -2144401842; + } + break; + case 1006406770: + if (this.cachedMesh != null) { + var8 = 871962213; + } else { + var8 = 1929260287; + } + break; + case 1087455380: + return; + case 1351068073: + var12 = this.centerH; + var8 = 872390173; + break; + case 1435622533: + return; + case 1929260287: + var11 = 0.0F; + var8 = -1192955878; + } + } + } + + void submitOutline(VertexConsumer var1) { + if (this.cachedMesh != null) { + float[] var2 = this.cachedMesh.outlinePos; + int[] var3 = this.cachedMesh.outlineColor; + int var4 = var2.length; + float var5 = this.centerW; + float var6 = this.centerH; + float var7 = this.centerD; + int var8 = 0; + + int var9; + for (var9 = 0; + var8 + (1363405693 ^ -1363405682) + ((1363405693 & -1363405682) << 1) < var4; + var9 += 4 + ) { + var1.addVertex( + var2[var8] + var5, + var2[var8 + 1] + var6, + var2[var8 + 2] + var7 + ) + .setColor(this.overrideColor != -1? this.overrideColor : var3[var9]); + var1.addVertex( + var2[var8 + 3] + var5, + var2[var8 + 4] + var6, + var2[var8 + 5] + var7 + ) + .setColor( + this.overrideColor != -1? this.overrideColor + : var3[var9 + 1] + ); + var1.addVertex( + var2[var8 + 6] + var5, + var2[var8 + 7] + var6, + var2[var8 + 8] + var7 + ) + .setColor( + this.overrideColor != -1? this.overrideColor + : var3[var9 + 2] + ); + var1.addVertex( + var2[var8 + 9] + var5, + var2[var8 + 10] + var6, + var2[var8 + 11] + var7 + ) + .setColor( + this.overrideColor != -1? this.overrideColor + : var3[var9 + 3] + ); + var8 += 12; + } + + while (var8 < var4) { + var1.addVertex( + var2[var8] + var5, + var2[var8 + 1] + var6, + var2[var8 + 2] + var7 + ) + .setColor(this.overrideColor != -1? this.overrideColor : var3[var9]); + var8 += 3; + var9++; + } + } + + float[] var10 = this.outlinePos; + int[] var11 = this.outlineColor; + int var12 = this.outlineVertexCount; + + int var13; + for (var13 = 0; + var13 + (146613300 ^ -146613297) + ((146613300 & -146613297) << 1) < var12; + var13 += 4 + ) { + int var14 = var13 * (3); + var1.addVertex( + var10[var14], + var10[var14 + 1], + var10[var14 + 2] + ) + .setColor(this.overrideColor != -1? this.overrideColor : var11[var13]); + var1.addVertex( + var10[var14 + 3], + var10[var14 + 4], + var10[var14 + 5] + ) + .setColor( + this.overrideColor != -1? this.overrideColor + : var11[var13 + 1] + ); + var1.addVertex( + var10[var14 + 6], + var10[var14 + 7], + var10[var14 + 8] + ) + .setColor( + this.overrideColor != -1? this.overrideColor + : var11[var13 + 2] + ); + var1.addVertex( + var10[var14 + 9], + var10[var14 + 10], + var10[var14 + 11] + ) + .setColor( + this.overrideColor != -1? this.overrideColor + : var11[var13 + 3] + ); + } + + while (var13 < var12) { + int var15 = var13 * (3); + var1.addVertex( + var10[var15], + var10[var15 + 1], + var10[var15 + 2] + ) + .setColor(this.overrideColor != -1? this.overrideColor : var11[var13]); + var13++; + } + } + + private void emitFillQuad( + float var1, + float var2, + float var3, + int var4, + float var5, + float var6, + float var7, + int var8, + float var9, + float var10, + float var11, + int var12, + float var13, + float var14, + float var15, + int var16 + ) { + int var17 = 0; + int var18 = -985903702; + + while (true) { + switch (var18) { + case -985903702: + default: + if (this.fillVertexCount + (-1232534362 | 1232534366) + (-1232534362 & 1232534366) + > (-1829989483 ^ 1829991531) + ((-1829989483 & 1829991531) << 1)) { + var18 = -240993448; + } else { + var18 = -414014262; + } + break; + case -414014262: + var17 = this.fillVertexCount * (3); + this.fillPos[var17] = var1; + this.fillPos[var17 + 1] = var2; + this.fillPos[var17 + 2] = var3; + this.fillColor[this.fillVertexCount] = var4; + this.fillPos[var17 + 3] = var5; + this.fillPos[var17 + 4] = var6; + this.fillPos[var17 + 5] = var7; + this.fillColor[this.fillVertexCount + 1] = var8; + this.fillPos[var17 + 6] = var9; + this.fillPos[var17 + 7] = var10; + this.fillPos[var17 + 8] = var11; + this.fillColor[this.fillVertexCount + 2] = var12; + this.fillPos[var17 + 9] = var13; + this.fillPos[var17 + 10] = var14; + this.fillPos[var17 + 11] = var15; + this.fillColor[this.fillVertexCount + 3] = var16; + this.fillVertexCount += 4; + return; + case -240993448: + return; + } + } + } + + private void emitOutlineQuad( + float var1, + float var2, + float var3, + int var4, + float var5, + float var6, + float var7, + int var8, + float var9, + float var10, + float var11, + int var12, + float var13, + float var14, + float var15, + int var16 + ) { + int var17 = 0; + int var18 = 561436281; + + while (true) { + switch (var18) { + case -1293454285: + var17 = this.outlineVertexCount * (3); + this.outlinePos[var17] = var1; + this.outlinePos[var17 + 1] = var2; + this.outlinePos[var17 + 2] = var3; + this.outlineColor[this.outlineVertexCount] = var4; + this.outlinePos[var17 + 3] = var5; + this.outlinePos[var17 + 4] = var6; + this.outlinePos[var17 + 5] = var7; + this.outlineColor[this.outlineVertexCount + 1] = var8; + this.outlinePos[var17 + 6] = var9; + this.outlinePos[var17 + 7] = var10; + this.outlinePos[var17 + 8] = var11; + this.outlineColor[this.outlineVertexCount + 2] = var12; + this.outlinePos[var17 + 9] = var13; + this.outlinePos[var17 + 10] = var14; + this.outlinePos[var17 + 11] = var15; + this.outlineColor[this.outlineVertexCount + 3] = var16; + this.outlineVertexCount += 4; + return; + case -909666594: + return; + case 561436281: + } + + if (this.outlineVertexCount + (1376238085 | -1376238081) + (1376238085 & -1376238081) > (2117073041 ^ -2117056657) + ((2117073041 & -2117056657) << 1) + ) + { + var18 = -909666594; + } else { + var18 = -1293454285; + } + } + } + + void computeOutline( + vk var1, boolean var2, boolean var3, float var4, float var5, float var6, int var7, int var8, int var9, boolean var10, int var11, int var12 + ) { + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + int var20 = 0; + int var21 = 0; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + long var25 = (-9144655493791489007L ^ 9144655493791489007L) + ((-9144655493791489007L & 9144655493791489007L) << 1); + vf var27 = null; + int var28 = -1519103536; + + while (true) { + switch (var28) { + case -2065838922: + if (var10) { + var28 = 98280424; + } else { + var28 = 399972187; + } + break; + case -1998410952: + if (var20 == (1599236138 ^ -1599236133) + ((1599236138 & -1599236133) << 1)) { + var28 = 125562110; + } else { + var28 = -128585282; + } + break; + case -1901258621: + if (var9 == (2138976143 ^ -2138976142) + ((2138976143 & -2138976142) << 1)) { + var28 = 44084070; + } else { + var28 = 2037268062; + } + break; + case -1638319048: + this.drawStraightLine( + var1, + this.eyeX, + this.eyeY, + this.eyeZ, + this.endX, + this.endY, + this.endZ, + var14, + var19, + var7, + var8, + var6, + (1295975151 | -1295975143) + (1295975151 & -1295975143) + ); + var28 = -941162535; + break; + case -1559009165: + var20 = 5; + var21 = 4; + var28 = -1901258621; + break; + case -1519103536: + default: + var13 = this.minX; + var14 = this.minY; + var15 = this.minZ; + var16 = this.maxX; + var17 = this.maxY; + var18 = this.maxZ; + var19 = var17 - var14; + if (this.isItem) { + var28 = -1407622074; + } else { + var28 = 1389146889; + } + break; + case -1407622074: + if (this.doEyeLine) { + var28 = 571109400; + } else { + var28 = 803745044; + } + break; + case -1284775911: + var20 = 5; + var21 = 4; + var28 = 193316961; + break; + case -941162535: + return; + case -762281065: + if (var20 >= (-1084739452 | 1084739457) + (-1084739452 & 1084739457)) { + var28 = -12743383; + } else { + var28 = 1851878062; + } + break; + case -706287535: + var20 = 2; + var28 = 193316961; + break; + case -699774015: + var20 = 0; + var21 = 4; + var28 = 193316961; + break; + case -624505846: + var20 = 0; + var21 = 4; + var28 = -1901258621; + break; + case -220670215: + if (var9 >= (-1269238066 ^ 1269238069) + ((-1269238066 & 1269238069) << 1)) { + var28 = 549721248; + } else { + var28 = 193316961; + } + break; + case -128585282: + if (var20 == (-542305434 ^ 542305437) + ((-542305434 & 542305437) << 1)) { + var28 = -706287535; + } else { + var28 = 193316961; + } + break; + case -61602835: + if (this.distSq > 400.0) { + var28 = 544517291; + } else { + var28 = 1302179616; + } + break; + case -12743383: + var20 = 3; + var21 = 4; + var28 = 193316961; + break; + case 44084070: + if (var20 == (-561542025 | 561542033) + (-561542025 & 561542033)) { + var28 = -1284775911; + } else { + var28 = -1998410952; + } + break; + case 52957243: + var20 = 2; + var21 = 4; + var28 = 193316961; + break; + case 98280424: + var20 = 8; + var21 = 8; + if (this.distSq > 1600.0) { + var28 = -624505846; + } else { + var28 = 162922461; + } + break; + case 125562110: + var20 = 3; + var28 = 193316961; + break; + case 162922461: + if (this.distSq > 900.0) { + var28 = 1289740155; + } else { + var28 = -61602835; + } + break; + case 193316961: + var22 = var16 - var13; + var23 = var17 - var14; + var24 = var18 - var15; + this.centerW = (var13 + var16) * 0.5F; + this.centerH = (var14 + var17) * 0.5F; + this.centerD = (var15 + var18) * 0.5F; + var25 = (long)Float.floatToRawIntBits(var22) << (-1445443342 | 1445443374) + (-1445443342 & 1445443374) + ^ (long)Float.floatToRawIntBits(var23) << (-362131008 | 362131024) + (-362131008 & 362131024) + ^ Float.floatToRawIntBits(var24) + ^ (long)var20 << (1839127547 ^ -1839127499) + ((1839127547 & -1839127499) << 1) + ^ (long)var21 << 56; + var27 = vl.MESH_CACHE.get(var25); + if (var27 == null) { + var28 = 1527745791; + } else { + var28 = 1059955204; + } + break; + case 399972187: + if (this.doEyeLine) { + var28 = -1638319048; + } else { + var28 = -941162535; + } + break; + case 544517291: + var20 = 3; + var21 = 4; + var28 = -1901258621; + break; + case 549721248: + if (this.distSq <= 100.0) { + var28 = 52957243; + } else { + var28 = -699774015; + } + break; + case 571109400: + this.drawStraightLine( + var1, + this.eyeX, + this.eyeY, + this.eyeZ, + this.endX, + this.endY, + this.endZ, + this.eyeY, + 0.75F, + var7, + var8, + var6 * 0.5F, + (712933344 ^ -712933336) + ((712933344 & -712933336) << 1) + ); + var28 = 803745044; + break; + case 803745044: + return; + case 1059955204: + this.cachedMesh = var27; + var28 = 399972187; + break; + case 1289740155: + var20 = 2; + var21 = 4; + var28 = -1901258621; + break; + case 1302179616: + if (this.distSq > 100.0) { + var28 = -1559009165; + } else { + var28 = -1901258621; + } + break; + case 1389146889: + if (!var2) { + var28 = -2065838922; + } else { + var28 = 98280424; + } + break; + case 1527745791: + var27 = this.generateCanonicalBoxMesh(var1, var22, var23, var24, var20, var21, var3, var4, var5, var6, var7, var8, var10, var11, var12); + vl.MESH_CACHE.putIfAbsent(var25, var27); + var28 = 1059955204; + break; + case 1851878062: + var20 = 0; + var28 = 193316961; + break; + case 2037268062: + if (var9 == (1394134401 ^ -1394134399) + ((1394134401 & -1394134399) << 1)) { + var28 = -762281065; + } else { + var28 = -220670215; + } + } + } + } + + private vf generateCanonicalBoxMesh( + vk var1, + float var2, + float var3, + float var4, + int var5, + int var6, + boolean var7, + float var8, + float var9, + float var10, + int var11, + int var12, + boolean var13, + int var14, + int var15 + ) { + float var16 = -var2 * 0.5F; + float var17 = -var3 * 0.5F; + float var18 = -var4 * 0.5F; + float var19 = var2 * 0.5F; + float var20 = var3 * 0.5F; + float var21 = var4 * 0.5F; + float var22 = var3; + float[] var23 = var1.wCX; + float[] var24 = var1.wCY; + float[] var25 = var1.wCZ; + var23[0] = var16; + var23[1] = var19; + var23[2] = var19; + var23[3] = var16; + var23[4] = var16; + var23[5] = var19; + var23[6] = var19; + var23[7] = var16; + var24[0] = var17; + var24[1] = var17; + var24[2] = var17; + var24[3] = var17; + var24[4] = var20; + var24[5] = var20; + var24[6] = var20; + var24[7] = var20; + var25[0] = var18; + var25[1] = var18; + var25[2] = var21; + var25[3] = var21; + var25[4] = var18; + var25[5] = var18; + var25[6] = var21; + var25[7] = var21; + int var26 = this.outlineVertexCount; + float var27 = var9; + int var28 = var5; + if (var5 > 0 && var9 < 0.03F) { + var27 = 0.03F; + var28 = Math.min(var5, (-670221158 | 670221160) + (-670221158 & 670221160)); + } + + if (var27 > 0.0F && var28 > 0) { + for (int var51 = 0; + var51 < 8; + var51++ + ) { + int[] var30 = vl.CORNER_NEIGHBORS[var51]; + float var31 = var23[var51]; + float var32 = var24[var51]; + float var33 = var25[var51]; + float var34 = var31 + (var23[var30[0]] - var31) * var27; + float var35 = var32 + (var24[var30[0]] - var32) * var27; + float var36 = var33 + (var25[var30[0]] - var33) * var27; + float var37 = var31 + (var23[var30[1]] - var31) * var27; + float var38 = var32 + (var24[var30[1]] - var32) * var27; + float var39 = var33 + (var25[var30[1]] - var33) * var27; + float var40 = var31 + (var23[var30[2]] - var31) * var27; + float var41 = var32 + (var24[var30[2]] - var32) * var27; + float var42 = var33 + (var25[var30[2]] - var33) * var27; + this.drawTemplateCurve(var1, var34, var35, var36, var37, var38, var39, var31, var32, var33, var28, var6, var17, var22, var11, var12, var10); + this.drawTemplateCurve(var1, var37, var38, var39, var40, var41, var42, var31, var32, var33, var28, var6, var17, var22, var11, var12, var10); + this.drawTemplateCurve(var1, var40, var41, var42, var34, var35, var36, var31, var32, var33, var28, var6, var17, var22, var11, var12, var10); + } + } else { + for (int var29 = 0; + var29 < 8; + var29++ + ) { + this.drawJoint(var23[var29], var24[var29], var25[var29], var17, var22, var11, var12, var10, var6); + } + } + + for (int var52 = 0; var52 < 12; var52++) { + int[] var54 = vl.EDGES[var52]; + float var56 = var23[var54[0]]; + float var58 = var24[var54[0]]; + float var60 = var25[var54[0]]; + float var62 = var23[var54[1]]; + float var64 = var24[var54[1]]; + float var66 = var25[var54[1]]; + float var67 = var62 - var56; + float var69 = var64 - var58; + float var71 = var66 - var60; + float var73 = var67 * var67 + var69 * var69 + var71 * var71; + if (var73 >= 1.0E-8F) { + float var74 = vl.fastInvSqrt(var73); + float var75 = var73 * var74; + var67 *= var74; + var69 *= var74; + var71 *= var74; + float var43 = var27 > 0.0F && var28 > 0 ? var75 * var27 : 0.0F; + float var44 = var56 + var67 * var43; + float var45 = var58 + var69 * var43; + float var46 = var60 + var71 * var43; + float var47 = var62 - var67 * var43; + float var48 = var64 - var69 * var43; + float var49 = var66 - var71 * var43; + if (var7) { + float var50 = var75 * var8 - var43; + if (var50 < 0.0F) { + var50 = 0.0F; + } + + if (var50 > 0.0F) { + this.drawStraightLine( + var1, var44, var45, var46, var44 + var67 * var50, var45 + var69 * var50, var46 + var71 * var50, var17, var22, var11, var12, var10, var6 + ); + this.drawStraightLine( + var1, var47, var48, var49, var47 - var67 * var50, var48 - var69 * var50, var49 - var71 * var50, var17, var22, var11, var12, var10, var6 + ); + } + } else { + float var76 = var75 - 2.0F * var43; + if (var76 > 1.0E-6F) { + this.drawStraightLine(var1, var44, var45, var46, var47, var48, var49, var17, var22, var11, var12, var10, var6); + } + } + } + } + + int var53 = this.outlineVertexCount - var26; + float[] var55 = new float[var53 * (3)]; + int[] var57 = new int[var53]; + System.arraycopy( + this.outlinePos, + var26 * (3), + var55, + 0, + var53 * ((1275527445 ^ -1275527442) + ((1275527445 & -1275527442) << 1)) + ); + System.arraycopy(this.outlineColor, var26, var57, 0, var53); + this.outlineVertexCount = var26; + this.outlineVertexCount = var26; + float[] var59; + int[] var61; + int var63; + if (var13) { + int var65 = this.fillVertexCount; + this.generateRoundedFill(var23, var24, var25, var16, var17, var18, var19, var20, var21, var27, var28, var14, var15); + var63 = this.fillVertexCount - var65; + var59 = new float[var63 * (3)]; + var61 = new int[var63]; + System.arraycopy( + this.fillPos, + var65 * (3), + var59, + 0, + var63 * ((-1437634236 ^ 1437634239) + ((-1437634236 & 1437634239) << 1)) + ); + System.arraycopy(this.fillColor, var65, var61, 0, var63); + this.fillVertexCount = var65; + } else { + var59 = new float[0]; + var61 = new int[0]; + var63 = 0; + } + + return new vf(var55, var57, var59, var61, var63); + } + + private void generateRoundedFill( + float[] var1, + float[] var2, + float[] var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + int var11, + int var12, + int var13 + ) { + float var14 = var8 - var5; + int[][] var10000 = new int[6][]; + int var10002 = 0; + int[] var10003 = new int[4]; + var10003[0] = 0; + var10003[1] = 3; + var10003[2] = 2; + var10003[3] = 1; + var10000[var10002] = var10003; + var10002 = 1; + var10003 = new int[4]; + var10003[0] = 4; + var10003[1] = 5; + var10003[2] = 6; + var10003[3] = 7; + var10000[var10002] = var10003; + var10002 = 2; + var10003 = new int[4]; + var10003[0] = 0; + var10003[1] = 1; + var10003[2] = 5; + var10003[3] = 4; + var10000[var10002] = var10003; + var10002 = 3; + var10003 = new int[4]; + var10003[0] = 2; + var10003[1] = 3; + var10003[2] = 7; + var10003[3] = 6; + var10000[var10002] = var10003; + var10002 = 4; + var10003 = new int[4]; + var10003[0] = 3; + var10003[1] = 0; + var10003[2] = 4; + var10003[3] = 7; + var10000[var10002] = var10003; + var10002 = 5; + var10003 = new int[4]; + var10003[0] = 1; + var10003[1] = 2; + var10003[2] = 6; + var10003[3] = 5; + var10000[var10002] = var10003; + int[][] var15 = var10000; + int[][] var16 = var15; + int var17 = var16.length; + + for (int var18 = 0; var18 < var17; var18++) { + int[] var19 = var16[var18]; + float var20 = ( + var1[var19[0]] + + var1[var19[1]] + + var1[var19[2]] + + var1[var19[3]] + ) + * 0.25F; + float var21 = ( + var2[var19[0]] + + var2[var19[1]] + + var2[var19[2]] + + var2[var19[3]] + ) + * 0.25F; + float var22 = ( + var3[var19[0]] + + var3[var19[1]] + + var3[var19[2]] + + var3[var19[3]] + ) + * 0.25F; + int var23 = vl.getColorAtY(var21, var5, var14, var12, var13); + + for (int var24 = 0; var24 < 4; var24++) { + int var25 = var19[var24]; + int var26 = var19[(var24 + (2093753072 | -2093753071) + (2093753072 & -2093753071)) % ((-420178139 ^ 420178143) + ((-420178139 & 420178143) << 1))]; + float var27 = var1[var25]; + float var28 = var2[var25]; + float var29 = var3[var25]; + float var30 = var1[var26]; + float var31 = var2[var26]; + float var32 = var3[var26]; + if (var10 > 0.0F && var11 > 0) { + float var64 = var27 + (var30 - var27) * var10; + float var65 = var28 + (var31 - var28) * var10; + float var35 = var29 + (var32 - var29) * var10; + float var36 = var30 + (var27 - var30) * var10; + float var37 = var31 + (var28 - var31) * var10; + float var38 = var32 + (var29 - var32) * var10; + int var39 = vl.getColorAtY(var65, var5, var14, var12, var13); + int var40 = vl.getColorAtY(var37, var5, var14, var12, var13); + this.emitFillQuad(var20, var21, var22, var23, var20, var21, var22, var23, var36, var37, var38, var40, var64, var65, var35, var39); + int var41 = var19[(var24 + (223736268 | -223736266) + (223736268 & -223736266)) % ((-170827020 ^ 170827024) + ((-170827020 & 170827024) << 1))]; + float var42 = var30 + (var1[var41] - var30) * var10; + float var43 = var31 + (var2[var41] - var31) * var10; + float var44 = var32 + (var3[var41] - var32) * var10; + vg var45 = vl.getTemplate(var11, (-1939361006 | 1939361010) + (-1939361006 & 1939361010)); + int var46 = var45.segments; + float var47 = var36 - var30; + float var48 = var37 - var31; + float var49 = var38 - var32; + float var50 = var42 - var30; + float var51 = var43 - var31; + float var52 = var44 - var32; + float var53 = var36; + float var54 = var37; + float var55 = var38; + + for (int var56 = 1; var56 <= var46; var56++) { + float var57 = var45.wA[var56]; + float var58 = var45.wB[var56]; + float var59 = var30 + var57 * var47 + var58 * var50; + float var60 = var31 + var57 * var48 + var58 * var51; + float var61 = var32 + var57 * var49 + var58 * var52; + int var62 = vl.getColorAtY(var54, var5, var14, var12, var13); + int var63 = vl.getColorAtY(var60, var5, var14, var12, var13); + this.emitFillQuad(var20, var21, var22, var23, var20, var21, var22, var23, var59, var60, var61, var63, var53, var54, var55, var62); + var53 = var59; + var54 = var60; + var55 = var61; + } + } else { + int var33 = vl.getColorAtY(var28, var5, var14, var12, var13); + int var34 = vl.getColorAtY(var31, var5, var14, var12, var13); + this.emitFillQuad(var20, var21, var22, var23, var20, var21, var22, var23, var30, var31, var32, var34, var27, var28, var29, var33); + } + } + } + } + + private void drawTemplateCurve( + vk var1, + float var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + int var11, + int var12, + float var13, + float var14, + int var15, + int var16, + float var17 + ) { + try { + vg var18 = vl.getTemplate(var11, var12); + int var19 = var18.segments; + int var20 = var15 == var16 ? 1: 0; + float[] var21 = var1.ringPx; + float[] var22 = var1.ringPy; + float[] var23 = var1.ringPz; + float[] var24 = var1.ringPxC; + float[] var25 = var1.ringPyC; + float[] var26 = var1.ringPzC; + float var27 = var2 - var8; + float var28 = var3 - var9; + float var29 = var4 - var10; + float var30 = var5 - var8; + float var31 = var6 - var9; + float var32 = var7 - var10; + float var33 = var27 * var27 + var28 * var28 + var29 * var29; + float var34 = var30 * var30 + var31 * var31 + var32 * var32; + if (var33 < 1.0E-8F || var34 < 1.0E-8F) { + return; + } + + float var35 = vl.fastInvSqrt(var33); + float var36 = var27 * var35; + float var37 = var28 * var35; + float var38 = var29 * var35; + float var39 = vl.fastInvSqrt(var34); + float var40 = var30 * var39; + float var41 = var31 * var39; + float var42 = var32 * var39; + float var43 = var37 * var42 - var38 * var41; + float var44 = var38 * var40 - var36 * var42; + float var45 = var36 * var41 - var37 * var40; + + for (int var46 = 0; var46 <= var19; var46++) { + float var47 = var18.wA[var46]; + float var48 = var18.wB[var46]; + float var49 = var8 + var47 * var27 + var48 * var30; + float var50 = var9 + var47 * var28 + var48 * var31; + float var51 = var10 + var47 * var29 + var48 * var32; + var21[var46] = var49; + var22[var46] = var50; + var23[var46] = var51; + int var52 = var46 * var12; + + for (int var53 = 0; var53 < var12; var53++) { + float var54 = var18.oA[var52 + var53] * var17; + float var55 = var18.oB[var52 + var53] * var17; + float var56 = var18.oC[var52 + var53] * var17; + var24[var52 + var53] = var49 + var54 * var36 + var55 * var40 + var56 * var43; + var25[var52 + var53] = var50 + var54 * var37 + var55 * var41 + var56 * var44; + var26[var52 + var53] = var51 + var54 * var38 + var55 * var42 + var56 * var45; + } + } + + for (int var58 = 1; var58 <= var19; var58++) { + int var59 = (var58 - ((-1365592716 | 1365592717) + (-1365592716 & 1365592717))) * var12; + int var60 = var58 * var12; + if (var20 != 0) { + for (int var62 = 0; var62 < var12; var62++) { + int var64 = (var62 + (2038025245 | -2038025244) + (2038025245 & -2038025244)) % var12; + this.emitOutlineQuad( + var24[var59 + var64], + var25[var59 + var64], + var26[var59 + var64], + var15, + var24[var60 + var64], + var25[var60 + var64], + var26[var60 + var64], + var15, + var24[var60 + var62], + var25[var60 + var62], + var26[var60 + var62], + var15, + var24[var59 + var62], + var25[var59 + var62], + var26[var59 + var62], + var15 + ); + } + } else { + for (int var61 = 0; var61 < var12; var61++) { + int var63 = (var61 + (721579891 ^ -721579890) + ((721579891 & -721579890) << 1)) % var12; + int var65 = vl.getColorAtY(var25[var60 + var63], var13, var14, var15, var16); + int var66 = vl.getColorAtY(var25[var59 + var63], var13, var14, var15, var16); + int var67 = vl.getColorAtY(var25[var60 + var61], var13, var14, var15, var16); + int var68 = vl.getColorAtY(var25[var59 + var61], var13, var14, var15, var16); + this.emitOutlineQuad( + var24[var59 + var63], + var25[var59 + var63], + var26[var59 + var63], + var66, + var24[var60 + var63], + var25[var60 + var63], + var26[var60 + var63], + var65, + var24[var60 + var61], + var25[var60 + var61], + var26[var60 + var61], + var67, + var24[var59 + var61], + var25[var59 + var61], + var26[var59 + var61], + var68 + ); + } + } + } + } catch (Exception var57) { + id.error( + Cif.RENDER, "hitbox template curve render failed", var57 + ); + } + } + + private void drawStraightLine( + vk var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9, int var10, int var11, float var12, int var13 + ) { + float var14 = var5 - var2; + float var15 = var6 - var3; + float var16 = var7 - var4; + float var17 = var14 * var14 + var15 * var15 + var16 * var16; + if (!(var17 < 1.0E-8F)) { + float var18 = vl.fastInvSqrt(var17); + var14 *= var18; + var15 *= var18; + var16 *= var18; + float var19; + float var20; + float var21; + if (Math.abs(var14) < 1.0E-5F) { + var19 = 1.0F; + var20 = 0.0F; + var21 = 0.0F; + } else if (Math.abs(var15) < 1.0E-5F) { + var19 = 0.0F; + var20 = 1.0F; + var21 = 0.0F; + } else { + var19 = 0.0F; + var20 = 0.0F; + var21 = 1.0F; + } + + float var22 = var19 * var14 + var20 * var15 + var21 * var16; + var19 -= var22 * var14; + var20 -= var22 * var15; + var21 -= var22 * var16; + float var23 = var19 * var19 + var20 * var20 + var21 * var21; + if (var23 > 1.0E-8F) { + float var24 = vl.fastInvSqrt(var23); + var19 *= var24; + var20 *= var24; + var21 *= var24; + } + + float var45 = var15 * var21 - var16 * var20; + float var25 = var16 * var19 - var14 * var21; + float var26 = var14 * var20 - var15 * var19; + float[] var27 = var13 == 4? vl.COS_LUT_4 : vl.COS_LUT_8; + float[] var28 = var13 == 4? vl.SIN_LUT_4 : vl.SIN_LUT_8; + float[] var29 = var1.ringPxC; + float[] var30 = var1.ringPyC; + float[] var31 = var1.ringPzC; + + for (int var32 = 0; var32 < var13; var32++) { + float var33 = var27[var32] * var12; + float var34 = var28[var32] * var12; + float var35 = var19 * var33 + var45 * var34; + float var36 = var20 * var33 + var25 * var34; + float var37 = var21 * var33 + var26 * var34; + var29[var32] = var2 + var35; + var30[var32] = var3 + var36; + var31[var32] = var4 + var37; + var29[var13 + var32] = var5 + var35; + var30[var13 + var32] = var6 + var36; + var31[var13 + var32] = var7 + var37; + } + + int var46 = var10 == var11 ? 1: 0; + if (var46 != 0) { + for (int var47 = 0; var47 < var13; var47++) { + int var49 = (var47 + (479676484 ^ -479676483) + ((479676484 & -479676483) << 1)) % var13; + this.emitOutlineQuad( + var29[var49], + var30[var49], + var31[var49], + var10, + var29[var13 + var49], + var30[var13 + var49], + var31[var13 + var49], + var10, + var29[var13 + var47], + var30[var13 + var47], + var31[var13 + var47], + var10, + var29[var47], + var30[var47], + var31[var47], + var10 + ); + } + } else { + for (int var48 = 0; var48 < var13; var48++) { + int var50 = (var48 + (1081369975 | -1081369974) + (1081369975 & -1081369974)) % var13; + int var51 = vl.getColorAtY(var30[var13 + var50], var8, var9, var10, var11); + int var52 = vl.getColorAtY(var30[var50], var8, var9, var10, var11); + int var53 = vl.getColorAtY(var30[var13 + var48], var8, var9, var10, var11); + int var38 = vl.getColorAtY(var30[var48], var8, var9, var10, var11); + this.emitOutlineQuad( + var29[var50], + var30[var50], + var31[var50], + var52, + var29[var13 + var50], + var30[var13 + var50], + var31[var13 + var50], + var51, + var29[var13 + var48], + var30[var13 + var48], + var31[var13 + var48], + var53, + var29[var48], + var30[var48], + var31[var48], + var38 + ); + } + } + } + } + + private void drawJoint(float var1, float var2, float var3, float var4, float var5, int var6, int var7, float var8, int var9) { + int var10 = 0; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + float var27 = 0.0F; + float var28 = 0.0F; + int var29 = 0; + float[] var30 = null; + float[] var31 = null; + int var32 = 0; + float var33 = 0.0F; + float var34 = 0.0F; + float var35 = 0.0F; + float var36 = 0.0F; + float var37 = 0.0F; + float var38 = 0.0F; + float var39 = 0.0F; + float var40 = 0.0F; + float var41 = 0.0F; + float var42 = 0.0F; + int var44 = 0; + float[] var45 = null; + float[] var46 = null; + int var43 = -2091639989; + + while (true) { + switch (var43) { + case -2091639989: + default: + var10 = vl.getColorAtY(var2, var4, var5, var6, var7); + var11 = -var1; + var12 = -var2; + var13 = -var3; + var14 = var11 * var11 + var12 * var12 + var13 * var13; + if (var14 < 1.0E-8F) { + var43 = 1071106336; + } else { + var43 = -2065927688; + } + break; + case -2065927688: + var15 = vl.fastInvSqrt(var14); + var11 *= var15; + var12 *= var15; + var13 *= var15; + var43 = 1547653769; + break; + case -1991455653: + var29 = var44; + if (var9 == (2001063104 | -2001063100) + (2001063104 & -2001063100)) { + var43 = 1382927549; + } else { + var43 = -1899179330; + } + break; + case -1899179330: + var45 = vl.JOINT_COS_8; + var43 = 462213472; + break; + case -1874492925: + var31 = var46; + var32 = 0; + var43 = -958528091; + break; + case -1798738073: + var46 = vl.JOINT_SIN_4; + var43 = -1874492925; + break; + case -1257681894: + return; + case -1000632752: + var19 = vl.fastInvSqrt(var18); + var15 *= var19; + var16 *= var19; + var17 *= var19; + var20 = var16 * var13 - var17 * var12; + var21 = var17 * var11 - var15 * var13; + var22 = var15 * var12 - var16 * var11; + var23 = var15 * var8; + var24 = var16 * var8; + var25 = var17 * var8; + var26 = var20 * var8; + var27 = var21 * var8; + var28 = var22 * var8; + if (var9 == (-1952718577 ^ 1952718581) + ((-1952718577 & 1952718581) << 1)) { + var43 = 1729546244; + } else { + var43 = -520352792; + } + break; + case -958528091: + if (var32 < var29) { + var43 = 2056196414; + } else { + var43 = -1257681894; + } + break; + case -520352792: + var44 = 8; + var43 = -1991455653; + break; + case -403659701: + var15 = 0.0F; + var16 = -var13; + var17 = var12; + var18 = var15 * var15 + var16 * var16 + var17 * var17; + var43 = -1000632752; + break; + case -226051612: + var46 = vl.JOINT_SIN_8; + var43 = -1874492925; + break; + case 462213472: + var30 = var45; + if (var9 == (-381569769 ^ 381569773) + ((-381569769 & 381569773) << 1)) { + var43 = -1798738073; + } else { + var43 = -226051612; + } + break; + case 1071106336: + var13 = 1.0F; + var43 = 1547653769; + break; + case 1382927549: + var45 = vl.JOINT_COS_4; + var43 = 462213472; + break; + case 1547653769: + var15 = var13; + var16 = 0.0F; + var17 = -var11; + var18 = var15 * var15 + var16 * var16 + var17 * var17; + if (var18 < 1.0E-8F) { + var43 = -403659701; + } else { + var43 = -1000632752; + } + break; + case 1729546244: + var44 = 4; + var43 = -1991455653; + break; + case 2056196414: + var33 = var30[var32]; + var34 = var31[var32]; + var35 = var30[var32 + 1]; + var36 = var31[var32 + 1]; + var37 = var1 + var23 * var33 + var26 * var34; + var38 = var2 + var24 * var33 + var27 * var34; + var39 = var3 + var25 * var33 + var28 * var34; + var40 = var1 + var23 * var35 + var26 * var36; + var41 = var2 + var24 * var35 + var27 * var36; + var42 = var3 + var25 * var35 + var28 * var36; + this.emitOutlineQuad(var1, var2, var3, var10, var1, var2, var3, var10, var40, var41, var42, var10, var37, var38, var39, var10); + var32++; + var43 = -958528091; + } + } + } +} diff --git a/src/main/java/defpackage/vi.java b/src/main/java/defpackage/vi.java new file mode 100644 index 0000000..e56f344 --- /dev/null +++ b/src/main/java/defpackage/vi.java @@ -0,0 +1,22 @@ +package defpackage; + +import org.joml.Matrix4f; +import org.joml.Vector4f; + +final class vi { + final float[] worldX = new float[10]; + final float[] worldY = new float[10]; + final float[] worldZ = new float[10]; + final float[] screenX = new float[10]; + final float[] screenY = new float[10]; + final float[] screenZ = new float[10]; + final int[] color = new int[10]; + final boolean[] visible = new boolean[10]; + final Vector4f clip = new Vector4f(); + final Matrix4f worldMatrix = new Matrix4f(); + final Matrix4f projectionMatrix = new Matrix4f(); + final Matrix4f guiMatrix = new Matrix4f(); + + vi() { + } +} diff --git a/src/main/java/defpackage/vj.java b/src/main/java/defpackage/vj.java new file mode 100644 index 0000000..6ccad52 --- /dev/null +++ b/src/main/java/defpackage/vj.java @@ -0,0 +1,19 @@ +package defpackage; + +final class vj { + boolean occluded; + long checkFrame; + long seenFrame; + double camX; + double camY; + double camZ; + double boxMinX; + double boxMinY; + double boxMinZ; + double boxMaxX; + double boxMaxY; + double boxMaxZ; + + vj() { + } +} diff --git a/src/main/java/defpackage/vk.java b/src/main/java/defpackage/vk.java new file mode 100644 index 0000000..3d78624 --- /dev/null +++ b/src/main/java/defpackage/vk.java @@ -0,0 +1,16 @@ +package defpackage; + +final class vk { + final float[] wCX = new float[8]; + final float[] wCY = new float[8]; + final float[] wCZ = new float[8]; + final float[] ringPx = new float[33]; + final float[] ringPy = new float[33]; + final float[] ringPz = new float[33]; + final float[] ringPxC = new float[264]; + final float[] ringPyC = new float[264]; + final float[] ringPzC = new float[264]; + + private vk() { + } +} diff --git a/src/main/java/defpackage/vl.java b/src/main/java/defpackage/vl.java new file mode 100644 index 0000000..504d4d4 --- /dev/null +++ b/src/main/java/defpackage/vl.java @@ -0,0 +1,2696 @@ +package defpackage; + +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.pipeline.TextureTarget; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.textures.GpuTextureView; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.PoseStack; +import it.unimi.dsi.fastutil.ints.Int2LongOpenHashMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Supplier; +import java.util.stream.IntStream; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; +import org.joml.Matrix4f; +import org.joml.Vector4f; + +@rn(name = "HitBox", description = "Draws the collision box of entities around you", category = rl.COMBAT) +public final class vl extends rm { + private static final String TEMPLATE_CURVE_FAILURE = "hitbox template curve render failed"; + private static final Vector4f EVO_CLEAR_TRANSPARENT = new Vector4f(0.0F, 0.0F, 0.0F, 0.0F); + private static atd outlineProgram; + private static atd glowSeedProgram; + private static final Identifier OUTLINE_PROGRAM_ID = Identifier.fromNamespaceAndPath( + "evolution", + "hitbox_outline/data" + ); + private boolean deferredPending; + private int deferredCount; + private boolean deferredNormalFill; + private boolean deferredShaderFill; + private boolean deferredOutline; + private boolean deferredGlow; + private boolean deferredCornersOnly; + private int deferredOutlineColor; + private int deferredGradientColor; + private int deferredGlowAlpha; + private float deferredGlowWidth; + private float deferredCornerLength; + private float deferredRoundRadius; + private Vec3 deferredCamera = Vec3.ZERO; + private static final int SIDES_FULL = 8; + private static final int SIDES_LOD = 4; + private static final int MAX_SEGS = 32; + private static final float GLOBAL_SCALE = 0.015F; + private static final int MAX_COLOR_CHANNEL = 255; + private static final int OUTLINE_ALPHA_CHANNEL = 255; + private static final float GLOW_ALPHA = 0.2F; + private static final int GLOW_ALPHA_CHANNEL = 51; + private static final float GLOW_WIDTH_NORMAL = 10.0F; + private static final float GLOW_WIDTH_STRONG = 20.0F; + private static final String GLOW_MODE_NORMAL = "Normal"; + private static final String GLOW_MODE_STRONG = "Strong"; + private static final String TARGET_PLAYERS = "Players"; + private static final String TARGET_HOSTILE_MOBS = "Hostile mobs"; + private static final String TARGET_HOSTILE_MOBS_LEGACY = "Mobs"; + private static final String TARGET_ANIMALS = "Animals"; + private static final String TARGET_ITEMS = "Items"; + private static final String FILL_NORMAL = "Normal"; + private static final String FILL_SHADER = "Shader"; + private static final String SHADER_NEBULA = "Nebula"; + private static final String SHADER_COSMOS = "Cosmos"; + private static final String SHADER_WEB = "Web"; + private static final String SHADER_PLASMA = "Plasma"; + private static final String SHADER_GLASS = "LiquidGlass"; + private static final int BOX_CORNER_COUNT = 8; + private static final int GLOW_EYE_START_SLOT = 8; + private static final int GLOW_EYE_END_SLOT = 9; + private static final int GLOW_POINT_CAPACITY = 10; + private static final float SCREEN_HALF = 0.5F; + private static final float PROJECTION_MIN_W = 0.05F; + private static final float GLOW_SEED_WIDTH_MULTIPLIER = 0.35F; + private static final float GLOW_MIN_SEED_WIDTH = 2.0F; + private static final float GLOW_MAX_SEED_WIDTH = 5.0F; + private static final float GLOW_BLUR_RADIUS_MULTIPLIER = 4.0F; + private static final int GLOW_CURVE_SEGMENTS = 8; + private static final float MIN_CORNER_BLEND = 0.03F; + private static final int MIN_CORNER_SEGMENTS = 2; + static final float[] COS_LUT_8 = new float[8]; + static final float[] SIN_LUT_8 = new float[8]; + static final float[] COS_LUT_4 = new float[4]; + static final float[] SIN_LUT_4 = new float[4]; + private static final int JOINT_SEGMENTS_FULL = 8; + private static final int JOINT_SEGMENTS_LOD = 4; + static final float[] JOINT_COS_8 = new float[9]; + static final float[] JOINT_SIN_8 = new float[9]; + static final float[] JOINT_COS_4 = new float[5]; + static final float[] JOINT_SIN_4 = new float[5]; + static final int[][] EDGES; + static final int[][] CORNER_NEIGHBORS; + private static final double LOD_DIST_SQ_40 = 1600.0; + private static final double LOD_DIST_SQ_20 = 900.0; + private static final double LOD_DIST_SQ_10 = 400.0; + private static final double LOD_DIST_SQ_4_5 = 100.0; + private static final ArrayList meshBuffers = new ArrayList<>(); + private static final ThreadLocal WORKSPACE_POOL = ThreadLocal.withInitial(vk::new); + private static final Comparator DIST_COMPARATOR = (var0x, var1x) -> Double.compare(var0x.distSq, var1x.distSq); + static final ConcurrentHashMap MESH_CACHE = new ConcurrentHashMap<>(); + private static long lastSettingsHash = (2059768132899404480L | -2059768132899404480L) + (2059768132899404480L & -2059768132899404480L); + private static final int PARALLEL_THRESHOLD = 16; + private static final double BEHIND_CAMERA_NEAR_DIST_SQ = 4.0; + private static final double BEHIND_CAMERA_DOT_THRESHOLD = -1.0; + private static final double OCCLUSION_NEAR_DIST_SQ = 64.0; + private static final int OCCLUSION_STATIC_RECHECK_FRAMES = 8; + private static final int OCCLUSION_SWEEP_INTERVAL_FRAMES = 256; + private static final long HIT_FLASH_DURATION_MS = 260L; + private static final float HIT_FLASH_PEAK = 1.0F; + private static final float HIT_FLASH_FILL_BOOST = 2.0F; + private static final long HIT_FLASH_SWEEP_GRACE_MS = 1000L; + private static final double EYE_LINE_LENGTH = 2.0; + private static final float ITEM_LINE_RISE = 0.1F; + private static final float ITEM_LINE_LENGTH = 0.75F; + private static final vg TEMPLATE_2_S4; + private static final vg TEMPLATE_3_S4; + private static final vg TEMPLATE_5_S4; + private static final vg TEMPLATE_8_S8; + public final si targetSetting; + public final ru outlineSetting; + public final sg outlineModeSetting; + public final sm cornerLengthSetting; + public final sm widthSetting; + private final rx colorSetting; + public final ru gradientSetting; + private final rx gradientColorSetting; + public final ru targetColorSetting; + public final rx hoverColorSetting; + public final ru hitFlashSetting; + public final rx hitFlashColorSetting; + public final ru glowSetting; + public final sg glowModeSetting; + public final sm roundRadiusSetting; + public final ru fillSetting; + public final sg fillTypeSetting; + public final sm fillAlphaSetting; + public final sg shaderTypeSetting; + public final sm shaderSpeedSetting; + public final sm shaderAlphaSetting; + private final rx shaderColorSetting; + public final ru eyeLineSetting; + public static final vl INSTANCE; + private TextureTarget glowFbo; + private final vi glowScreenWorkspace; + private final Int2ObjectOpenHashMap occlusionCache; + private final Int2LongOpenHashMap hitFlashes; + private long frameIndex; + private float cachedCamPitch; + private float cachedCamYaw; + private double camDirX; + private double camDirY; + private double camDirZ; + + static vg getTemplate(int var0, int var1) { + int var2 = -430322886; + + while (true) { + switch (var2) { + case -1537774732: + return TEMPLATE_2_S4; + case -1380064279: + if (var0 <= (1745684910 | -1745684908) + (1745684910 & -1745684908)) { + var2 = -1537774732; + } else { + var2 = -28917200; + } + break; + case -430322886: + default: + if (var1 == (-342666080 ^ 342666084) + ((-342666080 & 342666084) << 1)) { + var2 = -1380064279; + } else { + var2 = 1734419304; + } + break; + case -28917200: + if (var0 <= (1337132412 | -1337132409) + (1337132412 & -1337132409)) { + var2 = 1636570079; + } else { + var2 = 705447926; + } + break; + case 705447926: + return TEMPLATE_5_S4; + case 1636570079: + return TEMPLATE_3_S4; + case 1734419304: + return TEMPLATE_8_S8; + } + } + } + + private vl() { + String var10003 = "Targets"; + sh[] var10004 = new sh[4]; + var10004[0] = sh.of("Players") + .description("Draw hitboxes on players"); + int var10006 = 1; + String var10007 = "Hostile mobs"; + int var10008 = 1; + String[] var10009 = new String[1]; + var10009[0] = "Mobs"; + var10004[var10006] = sh.of(var10007, (boolean)((var10008) != 0), var10009) + .description("Draw hitboxes on hostile mobs"); + var10004[2] = sh.of( + "Animals" + ) + .description( + "Draw hitboxes on passive animals" + ); + var10004[3] = sh.of("Items") + .description( + "Draw hitboxes on dropped items" + ); + this.targetSetting = new si(var10003, var10004) + .description( + "Entities that will have hitboxes drawn" + ); + this.outlineSetting = new ru( + "Outline", + (boolean)((((-372059836 | 372059837) + (-372059836 & 372059837)) + ) != 0)) + .description( + "Draw an outline around the hitbox" + ); + var10003 = "Outline mode"; + Supplier var5 = this.outlineSetting::isEnabled; + String[] var10005 = new String[2]; + var10005[0] = "Full"; + var10005[1] = "Corners"; + this.outlineModeSetting = new sg(var10003, var5, var10005) + .describe( + "Full", + "Draw a complete box outline" + ) + .describe( + "Corners", + "Draw only the corners of the box" + ) + .description("Style of the hitbox outline"); + this.cornerLengthSetting = new sm( + "Corner length", 0.25F, 0.05F, 0.45F, 0.05F, () -> { + int var2x = 0; + int var1x = -713810792; + + while (true) { + switch (var1x) { + case -1509311458: + var2x = 1; + var1x = 1809003187; + break; + case -713810792: + default: + if (this.outlineSetting.isEnabled()) { + var1x = 2096545650; + } else { + var1x = 1288485119; + } + break; + case 1288485119: + var2x = 0; + var1x = 1809003187; + break; + case 1809003187: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 2096545650: + if (this.outlineModeSetting.is("Corners")) { + var1x = -1509311458; + } else { + var1x = 1288485119; + } + } + } + } + ) + .description( + "Length of the corners in corner mode" + ); + this.widthSetting = new sm( + "Line width", 2.0F, 0.5F, 5.0F, 0.5F, this.outlineSetting::isEnabled + ) + .description("Thickness of the hitbox lines"); + this.colorSetting = new rx( + "Color", bz.getInstance().getThemeManager().getCurrentTheme().getColor() + ) + .description("Base color of the hitbox"); + this.gradientSetting = new ru( + "Gradient", + (boolean)((((702418284 | -702418284) + (702418284 & -702418284)) + ) != 0)) + .description( + "Apply a vertical gradient to the hitbox" + ); + this.gradientColorSetting = new rx( + "Gradient Color", + new asu((-1273987493 ^ 1273987492) + ((-1273987493 & 1273987492) << 1)), + this.gradientSetting::isEnabled + ) + .description( + "Secondary color for the gradient" + ); + this.targetColorSetting = new ru( + "Target color", + (boolean)((((-1097883509 | 1097883510) + (-1097883509 & 1097883510)) + ) != 0)) + .description( + "Change color when hovering over the entity" + ); + this.hoverColorSetting = new rx( + "Hover color", + new asu( + 255, + 0, + 0, + (-99887431 ^ 99887686) + ((-99887431 & 99887686) << 1) + ), + this.targetColorSetting::isEnabled + ) + .description( + "Color applied when hovering over the entity" + ); + this.hitFlashSetting = new ru( + "Hit flash", + (boolean)((((1856985656 | -1856985655) + (1856985656 & -1856985655)) + ) != 0)) + .description( + "Flash the hitbox of an entity you land a hit on" + ); + this.hitFlashColorSetting = new rx( + "Flash color", + new asu((196788417 | -196788418) + (196788417 & -196788418)), + this.hitFlashSetting::isEnabled + ) + .description( + "Color the hitbox flashes to on a landed hit" + ); + this.glowSetting = new ru( + "Glow", + (boolean)(((0)) != 0), + this.outlineSetting::isEnabled + ) + .description( + "Draw a glowing aura around the hitbox" + ); + var10003 = "Glow mode"; + Supplier var6 = this.glowSetting::isEnabled; + var10005 = new String[2]; + var10005[0] = "Normal"; + var10005[1] = "Strong"; + this.glowModeSetting = new sg(var10003, var6, var10005) + .describe( + "Normal", + "Standard inner glow" + ) + .describe( + "Strong", + "Intense outer bloom glow" + ) + .description( + "Style of the glow effect" + ); + this.roundRadiusSetting = new sm( + "Rounding", 0.25F, 0.0F, 0.5F, 0.05F, this.outlineSetting::isEnabled + ) + .description( + "Corner rounding radius for the glow" + ); + this.fillSetting = new ru( + "Fill", + (boolean)((((1661025274 ^ -1661025273) + ((1661025274 & -1661025273) << 1)) + ) != 0)) + .description("Fill the inside of the hitbox"); + var10003 = "Fill type"; + Supplier var7 = this.fillSetting::isEnabled; + var10005 = new String[2]; + var10005[0] = "Normal"; + var10005[1] = "Shader"; + this.fillTypeSetting = new sg(var10003, var7, var10005) + .describe( + "Normal", + "Solid transparent fill" + ) + .describe( + "Shader", + "Animated shader fill" + ) + .description( + "Type of fill applied to the hitbox" + ); + this.fillAlphaSetting = new sm( + "Fill opacity", 0.25F, 0.0F, 1.0F, 0.05F, () -> { + int var2x = 0; + int var1x = -405299733; + + while (true) { + switch (var1x) { + case -1251913342: + if (this.fillTypeSetting.is("Normal")) { + var1x = 50417534; + } else { + var1x = 926616009; + } + break; + case -711158847: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -405299733: + default: + if (this.fillSetting.isEnabled()) { + var1x = -1251913342; + } else { + var1x = 926616009; + } + break; + case 50417534: + var2x = 1; + var1x = -711158847; + break; + case 926616009: + var2x = 0; + var1x = -711158847; + } + } + } + ) + .description("Transparency of the hitbox fill"); + var10003 = "Shader"; + Supplier var8 = () -> { + int var2x = 0; + int var1x = -1795593599; + + while (true) { + switch (var1x) { + case -1869365256: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -1795593599: + default: + if (this.fillSetting.isEnabled()) { + var1x = 992767911; + } else { + var1x = 788221697; + } + break; + case -651643868: + var2x = 1; + var1x = -1869365256; + break; + case 788221697: + var2x = 0; + var1x = -1869365256; + break; + case 992767911: + if (this.fillTypeSetting.is("Shader")) { + var1x = -651643868; + } else { + var1x = 788221697; + } + } + } + }; + var10005 = new String[5]; + var10005[0] = "Nebula"; + var10005[1] = "Cosmos"; + var10005[2] = "Web"; + var10005[3] = "Plasma"; + var10005[4] = "LiquidGlass"; + this.shaderTypeSetting = new sg(var10003, var8, var10005) + .describe( + "Nebula", + "Purple nebula effect" + ) + .describe( + "Cosmos", + "Starry cosmos effect" + ) + .describe( + "Web", + "Intertwined web effect" + ) + .describe( + "Plasma", + "Flowing plasma effect" + ) + .describe( + "LiquidGlass", + "Shiny glass effect" + ) + .description( + "Shader effect for the hitbox fill" + ); + this.shaderSpeedSetting = new sm("Shader speed", 1.0F, 0.1F, 3.0F, 0.1F, () -> { + int var2x = 0; + int var1x = 722030491; + + while (true) { + switch (var1x) { + case -1915735646: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -527729142: + var2x = 0; + var1x = -1915735646; + break; + case 722030491: + default: + if (this.fillSetting.isEnabled()) { + var1x = 1481668568; + } else { + var1x = -527729142; + } + break; + case 839801419: + var2x = 1; + var1x = -1915735646; + break; + case 1481668568: + if (this.fillTypeSetting.is("Shader")) { + var1x = 839801419; + } else { + var1x = -527729142; + } + } + } + }) + .description( + "Animation speed for the shader fill" + ); + this.shaderAlphaSetting = new sm( + "Shader opacity", 1.0F, 0.1F, 1.0F, 0.05F, () -> { + int var2x = 0; + int var1x = 708725368; + + while (true) { + switch (var1x) { + case -539379589: + if (this.fillTypeSetting.is("Shader")) { + var1x = 1253494583; + } else { + var1x = 2060258691; + } + break; + case 708725368: + default: + if (this.fillSetting.isEnabled()) { + var1x = -539379589; + } else { + var1x = 2060258691; + } + break; + case 1253494583: + var2x = 1; + var1x = 1949359580; + break; + case 1949359580: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 2060258691: + var2x = 0; + var1x = 1949359580; + } + } + } + ) + .description( + "Transparency of the shader fill" + ); + this.shaderColorSetting = new rx( + "Shader color", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> { + int var2x = 0; + int var1x = 1477097334; + + while (true) { + switch (var1x) { + case -1730113258: + var2x = 0; + var1x = -1577100056; + break; + case -1577100056: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -1016161029: + if (this.fillTypeSetting.is("Shader")) { + var1x = 1786373483; + } else { + var1x = -1730113258; + } + break; + case 1477097334: + default: + if (this.fillSetting.isEnabled()) { + var1x = -1016161029; + } else { + var1x = -1730113258; + } + break; + case 1786373483: + var2x = 1; + var1x = -1577100056; + } + } + } + ) + .description("Custom color for the shader fill"); + this.eyeLineSetting = new ru( + "Eye line", + (boolean)((((-1976489070 | 1976489070) + (-1976489070 & 1976489070)) + ) != 0)) + .description( + "Draw a line indicating the entity's eye level" + ); + this.glowScreenWorkspace = new vi(); + this.occlusionCache = new Int2ObjectOpenHashMap(); + this.hitFlashes = new Int2LongOpenHashMap(); + this.cachedCamPitch = Float.NaN; + this.cachedCamYaw = Float.NaN; + this.hitFlashes.defaultReturnValue((8524518449671609372L | -8524518449671609372L) + (8524518449671609372L & -8524518449671609372L)); + } + + @k + public void onAttack(fc var1) { + int var2 = 568930946; + + while (true) { + switch (var2) { + case -1109492528: + if (var1.getTarget() == null) { + var2 = 737086007; + } else { + var2 = -760579524; + } + break; + case -760579524: + this.hitFlashes.put(var1.getTarget().getId(), System.currentTimeMillis()); + return; + case 568930946: + default: + if (this.hitFlashSetting.isEnabled()) { + var2 = -1109492528; + } else { + var2 = 737086007; + } + break; + case 737086007: + return; + } + } + } + + private float hitFlashProgress(int var1, long var2) { + long var4 = (1758652333501704897L | -1758652333501704897L) + (1758652333501704897L & -1758652333501704897L); + long var6 = (5241598279650652818L ^ -5241598279650652818L) + ((5241598279650652818L & -5241598279650652818L) << 1); + float var8 = 0.0F; + int var9 = 961575573; + + while (true) { + switch (var9) { + case -921803391: + var8 = 1.0F - (float)var6 / 260.0F; + return var8 * var8 * 1.0F; + case -358140220: + if (var6 >= (370094649256904783L | -370094649256904523L) + (370094649256904783L & -370094649256904523L)) { + var9 = 126720343; + } else { + var9 = -921803391; + } + break; + case 126720343: + return 0.0F; + case 961575573: + default: + var4 = this.hitFlashes.get(var1); + if (var4 == (-403295649432528043L ^ 403295649432528043L) + ((-403295649432528043L & 403295649432528043L) << 1)) { + var9 = 1122259837; + } else { + var9 = 2096483887; + } + break; + case 1122259837: + return 0.0F; + case 2096483887: + var6 = var2 - var4; + if (var6 >= (-47143726033421723L | 47143726033421723L) + (-47143726033421723L & 47143726033421723L)) { + var9 = -358140220; + } else { + var9 = 126720343; + } + } + } + } + + static float fastInvSqrt(float var0) { + float var1 = 0.5F * var0; + int var2 = Float.floatToRawIntBits(var0); + var2 = (-723828530 ^ -1973675759) + ((-723828530 & -1973675759) << 1) - (var2 >> (-397798576 ^ 397798577) + ((-397798576 & 397798577) << 1)); + float var3 = Float.intBitsToFloat(var2); + return var3 * (1.5F - var1 * var3 * var3); + } + + private static int interpolateColor(int var0, int var1, float var2) { + int var3 = var0 >> 24; + int var4 = var0 >> 16; + int var5 = var0 >> 8; + int var6 = var0 & 255; + int var7 = var1 >> 24; + int var8 = var1 >> 16; + int var9 = var1 >> 8; + int var10 = var1 & 255; + int var11 = (int)(var3 + (var7 - var3) * var2); + int var12 = (int)(var4 + (var8 - var4) * var2); + int var13 = (int)(var5 + (var9 - var5) * var2); + int var14 = (int)(var6 + (var10 - var6) * var2); + return var11 << (682722005 | -682721981) + (682722005 & -682721981) + | var12 << (-2067260501 | 2067260517) + (-2067260501 & 2067260517) + | var13 << (-39485419 | 39485427) + (-39485419 & 39485427) + | var14; + } + + static int getColorAtY(float var0, float var1, float var2, int var3, int var4) { + float var5 = 0.0F; + int var6 = 1229853834; + + while (true) { + switch (var6) { + case -1890506851: + var5 = (var0 - var1) / var2; + if (var5 < 0.0F) { + var6 = 1512021898; + } else { + var6 = -1308499347; + } + break; + case -1496868643: + return var3; + case -1308499347: + if (var5 > 1.0F) { + var6 = 206647934; + } else { + var6 = 1821038581; + } + break; + case 206647934: + var5 = 1.0F; + var6 = 1821038581; + break; + case 1229853834: + default: + if (var3 == var4) { + var6 = -1496868643; + } else { + var6 = 2062607709; + } + break; + case 1512021898: + var5 = 0.0F; + var6 = 1821038581; + break; + case 1735682564: + var5 = 0.0F; + var6 = 1821038581; + break; + case 1821038581: + return interpolateColor(var3, var4, var5); + case 2062607709: + if (var2 > 1.0E-6F) { + var6 = -1890506851; + } else { + var6 = 1735682564; + } + } + } + } + + public void onWorldRender(LevelRenderContext var1) { + if (this.isEnabled() && mc.level != null && mc.player != null && mc.getEntityRenderDispatcher().camera != null) { + SubmitNodeCollector var2 = var1.submitNodeCollector(); + if (var2 != null) { + this.frameIndex++; + if (this.frameIndex % 256L == 0L) { + if (!this.occlusionCache.isEmpty()) { + long var3 = this.frameIndex - 256L; + this.occlusionCache.values().removeIf(var2x -> { + int var4x = 0; + int var3x = 2039868927; + + while (true) { + switch (var3x) { + case -1485656282: + var4x = 1; + var3x = 457649755; + break; + case 457649755: + return (boolean)((var4x) != 0); + case 911031848: + var4x = 0; + var3x = 457649755; + break; + case 2039868927: + default: + if (var2x.seenFrame < var3) { + var3x = -1485656282; + } else { + var3x = 911031848; + } + } + } + }); + } + + if (!this.hitFlashes.isEmpty()) { + long var86 = System.currentTimeMillis() - 260L - 1000L; + this.hitFlashes.int2LongEntrySet().removeIf(var2x -> { + int var4x = 0; + int var3x = 1667659901; + + while (true) { + switch (var3x) { + case -498218589: + var4x = 1; + var3x = 2118233160; + break; + case 1640005205: + var4x = 0; + var3x = 2118233160; + break; + case 1667659901: + default: + if (var2x.getLongValue() < var86) { + var3x = -498218589; + } else { + var3x = 1640005205; + } + break; + case 2118233160: + return (boolean)((var4x) != 0); + } + } + }); + } + } + + float var87 = this.widthSetting.getCurrent(); + float var4 = mc.getDeltaTracker().getGameTimeDeltaPartialTick(false); + Vec3 var5 = mc.getEntityRenderDispatcher().camera.position(); + float var6 = mc.getEntityRenderDispatcher().camera.xRot(); + float var7 = mc.getEntityRenderDispatcher().camera.yRot(); + if (var6 != this.cachedCamPitch || var7 != this.cachedCamYaw) { + Vec3 var8 = Vec3.directionFromRotation(var6, var7); + this.camDirX = var8.x; + this.camDirY = var8.y; + this.camDirZ = var8.z; + this.cachedCamPitch = var6; + this.cachedCamYaw = var7; + } + + short var88 = 255; + int var9 = this.colorSetting.getIntColor() & 16777215 | var88 << 24; + int var10 = var9; + int var11 = (int)(this.fillAlphaSetting.getCurrent() * 255.0F); + int var12 = this.colorSetting.getIntColor() & 16777215 | var11 << 24; + int var13 = var12; + if (this.gradientSetting.isEnabled()) { + var10 = this.gradientColorSetting.getIntColor() & 16777215 | var88 << 24; + var13 = this.gradientColorSetting.getIntColor() & 16777215 | var11 << 24; + } + + int var14 = var9; + int var15 = var10; + int var16 = var12; + int var17 = var13; + boolean var18 = this.targetSetting.isEnable(3); + boolean var19 = this.fillSetting.isEnabled(); + boolean var20 = var19 && this.fillTypeSetting.is("Shader"); + boolean var21 = var19 && !var20; + boolean var22 = this.outlineSetting.isEnabled() || this.eyeLineSetting.isEnabled() || var18; + boolean var23 = this.outlineSetting.isEnabled(); + boolean var24 = this.outlineModeSetting.is("Corners"); + float var25 = this.cornerLengthSetting.getCurrent(); + float var26 = this.roundRadiusSetting.getCurrent(); + float var27 = this.glowModeSetting.is("Strong") ? 20.0F : 10.0F; + byte var28 = 51; + boolean var29 = (this.outlineSetting.isEnabled() || var18) && this.glowSetting.isEnabled(); + float var30 = var87 * 0.015F; + long var31 = Float.floatToRawIntBits(var87) ^ Float.floatToRawIntBits(var25) << 1 ^ Float.floatToRawIntBits(var26) << 2 + ^ (long)var14 << 32 + ^ (long)var15 << 48 + ^ (long)var16 << 4 + ^ (long)var17 << 5 + ^ (var24 ? 2L : 0L) + ^ (var19 ? 4L : 0L); + if (var31 != lastSettingsHash || MESH_CACHE.size() > 256) { + MESH_CACHE.clear(); + lastSettingsHash = var31; + } + + int var33 = 0; + int var34 = 0; + int var35 = 0; + Entity var36 = null; + if (mc.hitResult instanceof EntityHitResult var37) { + var36 = var37.getEntity(); + } + + boolean var89 = this.hitFlashSetting.isEnabled() && !this.hitFlashes.isEmpty(); + long var90 = var89 ? System.currentTimeMillis() : 0L; + + for (Entity var41 : mc.level.entitiesForRendering()) { + if (this.isValid(var41)) { + double var42 = var41.distanceToSqr(var5); + if (this.isBehindCamera(var5, var42, var41)) { + var35++; + } else if (!aqk.canSee(var41.getBoundingBox())) { + var35++; + } else if (this.isOccluded(var5, var42, var41)) { + var34++; + } else { + while (meshBuffers.size() <= var33) { + meshBuffers.add(new vh()); + } + + vh var44 = meshBuffers.get(var33); + boolean var45 = this.targetColorSetting.isEnabled() && var41 == var36; + float var46 = var89 ? this.hitFlashProgress(var41.getId(), var90) : 0.0F; + if (var45) { + var44.overrideColor = this.hoverColorSetting.getIntColor(); + var44.overrideFillColor = this.hoverColorSetting.getIntColor() & 16777215 | var11 << 24; + } else { + var44.overrideColor = -1; + var44.overrideFillColor = -1; + } + + if (var46 > 0.0F) { + int var47 = var45 ? var44.overrideColor : var14; + int var48 = var45 ? var44.overrideFillColor : var16; + int var49 = this.hitFlashColorSetting.getIntColor() & 16777215; + int var50 = var47 >>> 24 & 0xFF; + int var51 = Math.min(255, (int)((var48 >>> 24 & 0xFF) * (1.0F + var46 * 1.0F))); + var44.overrideColor = interpolateColor(var47, var49 | var50 << 24, var46); + var44.overrideFillColor = interpolateColor(var48, var49 | var51 << 24, var46); + } + + double var97 = Mth.lerp(var4, var41.xOld, var41.getX()); + double var98 = Mth.lerp(var4, var41.yOld, var41.getY()); + double var99 = Mth.lerp(var4, var41.zOld, var41.getZ()); + double var53 = var97 - var41.getX(); + double var55 = var98 - var41.getY(); + double var57 = var99 - var41.getZ(); + AABB var59 = var41.getBoundingBox(); + double var60 = var59.minX + var53; + double var62 = var59.minY + var55; + double var64 = var59.minZ + var57; + double var66 = var59.maxX + var53; + double var68 = var59.maxY + var55; + double var70 = var59.maxZ + var57; + float var72 = var30; + float var73 = (float)(var60 - var5.x) + var72; + float var74 = (float)(var62 - var5.y) + var72; + float var75 = (float)(var64 - var5.z) + var72; + float var76 = (float)(var66 - var5.x) - var72; + float var77 = (float)(var68 - var5.y) - var72; + float var78 = (float)(var70 - var5.z) - var72; + var44.glowMinX = (float)(var60 - var5.x); + var44.glowMinY = (float)(var62 - var5.y); + var44.glowMinZ = (float)(var64 - var5.z); + var44.glowMaxX = (float)(var66 - var5.x); + var44.glowMaxY = (float)(var68 - var5.y); + var44.glowMaxZ = (float)(var70 - var5.z); + if (var73 > var76) { + float var79 = (var73 + var76) * 0.5F; + var73 = var79; + var76 = var79; + } + + if (var74 > var77) { + float var100 = (var74 + var77) * 0.5F; + var74 = var100; + var77 = var100; + } + + if (var75 > var78) { + float var101 = (var75 + var78) * 0.5F; + var75 = var101; + var78 = var101; + } + + var44.minX = var73; + var44.minY = var74; + var44.minZ = var75; + var44.maxX = var76; + var44.maxY = var77; + var44.maxZ = var78; + var44.distSq = var42; + var44.isItem = var41 instanceof ItemEntity; + if (var44.isItem) { + var44.eyeX = (float)(Mth.lerp(0.5, var60, var66) - var5.x); + var44.eyeY = var44.maxY + 0.1F; + var44.eyeZ = (float)(Mth.lerp(0.5, var64, var70) - var5.z); + var44.endX = var44.eyeX; + var44.endY = var44.eyeY + 0.75F; + var44.endZ = var44.eyeZ; + var44.doEyeLine = true; + } else if (this.eyeLineSetting.isEnabled()) { + double var102 = var97 - var5.x; + double var81 = var98 + var41.getEyeHeight(var41.getPose()) - var5.y; + double var83 = var99 - var5.z; + Vec3 var85 = var41.getViewVector(var4); + var44.eyeX = (float)var102; + var44.eyeY = (float)var81; + var44.eyeZ = (float)var83; + var44.endX = (float)(var102 + var85.x * 2.0); + var44.endY = (float)(var81 + var85.y * 2.0); + var44.endZ = (float)(var83 + var85.z * 2.0); + var44.doEyeLine = true; + } else { + var44.doEyeLine = false; + } + + var33++; + } + } + } + + if (var33 != 0) { + meshBuffers.subList(0, var33).sort(DIST_COMPARATOR); + byte var91 = 0; + if (var33 >= 1000) { + var91 = 3; + } else if (var33 >= 750) { + var91 = 2; + } else if (var33 >= 500) { + var91 = 1; + } + + byte var92 = var91; + if (var33 >= 16) { + IntStream.range(0, var33) + .parallel() + .forEach(var13x -> this.computeMeshAt(var13x, var22, var19, var23, var24, var25, var26, var30, var14, var15, var92, var16, var17)); + } else { + for (int var93 = 0; var93 < var33; var93++) { + this.computeMeshAt(var93, var22, var19, var23, var24, var25, var26, var30, var14, var15, var92, var16, var17); + } + } + + if (aor.shaderPackInUse()) { + this.deferredCount = var33; + this.deferredNormalFill = var21; + this.deferredShaderFill = var20; + this.deferredOutline = var22; + this.deferredGlow = var29; + this.deferredCornersOnly = var24; + this.deferredOutlineColor = var14; + this.deferredGradientColor = var15; + this.deferredGlowAlpha = 51; + this.deferredGlowWidth = var27; + this.deferredCornerLength = var25; + this.deferredRoundRadius = var26; + this.deferredCamera = var5; + this.deferredPending = true; + } else { + PoseStack var94 = var1.poseStack(); + int var43 = var33; + if (var21) { + RenderType var95 = arj.positionColorDepthNoWrite(); + var2.submitCustomGeometry(var94, var95, (var1x, var2x) -> { + int var3x = 0; + int var4x = -2017423943; + + while (true) { + switch (var4x) { + case -2137607906: + if (var3x < var43) { + var4x = -1645254646; + } else { + var4x = -1340640747; + } + break; + case -2017423943: + default: + var3x = 0; + var4x = -2137607906; + break; + case -1645254646: + meshBuffers.get(var3x).submitFill(var2x); + var3x++; + var4x = -2137607906; + break; + case -1340640747: + return; + } + } + }); + } else if (var20) { + this.renderShaderFillForEntities(var33, var5); + } + + if (var22) { + RenderType var96 = arj.positionColorDepth(); + var2.submitCustomGeometry(var94, var96, (var1x, var2x) -> { + int var3x = 0; + int var4x = 358522241; + + while (true) { + switch (var4x) { + case 235580828: + return; + case 358522241: + default: + var3x = var43 - (1); + var4x = 1743330687; + break; + case 1715195027: + meshBuffers.get(var3x).submitOutline(var2x); + var3x--; + var4x = 1743330687; + break; + case 1743330687: + if (var3x >= 0) { + var4x = 1715195027; + } else { + var4x = 235580828; + } + } + } + }); + } + + if (var29 && this.renderGlowSeedToFbo(var33, var14, var15, 51, var27, var24, var25, var26)) { + atb.drawFboBlurFullscreen(this.glowFbo, var27 * 4.0F, new asu(var14).withAlpha(51)); + } + } + } + } + } + } + + public void onWorldDraw(LevelRenderContext var1) { + int var2 = 0; + int var3 = 226982273; + + while (true) { + switch (var3) { + case -2140909189: + if (this.deferredOutline) { + var3 = -2027858364; + } else { + var3 = 269572663; + } + break; + case -2027858364: + this.drawDeferredOutline(var2); + var3 = 269572663; + break; + case -2015090150: + if (aor.renderingShadowPass()) { + var3 = 1314686287; + } else { + var3 = 717748192; + } + break; + case -1821394771: + if (this.deferredShaderFill) { + var3 = -357806335; + } else { + var3 = -2140909189; + } + break; + case -891308169: + this.deferredPending = (boolean)(((0)) != 0); + if (this.isEnabled()) { + var3 = 694002213; + } else { + var3 = 1314686287; + } + break; + case -450748825: + if (this.deferredNormalFill) { + var3 = 1836816427; + } else { + var3 = -1821394771; + } + break; + case -357806335: + this.renderShaderFillForEntities(var2, this.deferredCamera); + var3 = -2140909189; + break; + case -285886399: + atb.drawFboBlurFullscreen(this.glowFbo, this.deferredGlowWidth * 4.0F, new asu(this.deferredOutlineColor).withAlpha(this.deferredGlowAlpha)); + var3 = -450748825; + break; + case -154351286: + if (this.renderGlowSeedToFbo( + var2, + this.deferredOutlineColor, + this.deferredGradientColor, + this.deferredGlowAlpha, + this.deferredGlowWidth, + this.deferredCornersOnly, + this.deferredCornerLength, + this.deferredRoundRadius + )) { + var3 = -285886399; + } else { + var3 = -450748825; + } + break; + case 226982273: + default: + if (!this.deferredPending) { + var3 = 1961403722; + } else { + var3 = -891308169; + } + break; + case 269572663: + return; + case 399108461: + if (this.deferredCount > 0) { + var3 = -2015090150; + } else { + var3 = 1314686287; + } + break; + case 694002213: + if (mc.level != null) { + var3 = 399108461; + } else { + var3 = 1314686287; + } + break; + case 717748192: + var2 = this.deferredCount; + if (this.deferredGlow) { + var3 = -154351286; + } else { + var3 = -450748825; + } + break; + case 1314686287: + return; + case 1836816427: + this.drawDeferredFill(var2); + var3 = -2140909189; + break; + case 1961403722: + return; + } + } + } + + private void drawDeferredFill(int var1) { + atd var2 = null; + BufferBuilder var3 = null; + int var4 = 0; + int var5 = 1979292769; + + while (true) { + switch (var5) { + case -957320236: + arj.drawCurrent(var3); + return; + case -573984206: + meshBuffers.get(var4).submitFill(var3); + var4++; + var5 = 766063129; + break; + case 14124273: + return; + case 766063129: + if (var4 < var1) { + var5 = -573984206; + } else { + var5 = -957320236; + } + break; + case 853859646: + var2.use(); + arj.setCurrentLayer(arj.positionColor()); + var3 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_COLOR); + var4 = 0; + var5 = 766063129; + break; + case 1979292769: + default: + var2 = ensureOutlineProgram(); + if (var2 == null) { + var5 = 14124273; + } else { + var5 = 853859646; + } + } + } + } + + private void drawDeferredOutline(int var1) { + atd var2 = null; + BufferBuilder var3 = null; + int var4 = 0; + int var5 = -132146844; + + while (true) { + switch (var5) { + case -1587702605: + arj.drawCurrent(var3); + return; + case -1504586717: + meshBuffers.get(var4).submitOutline(var3); + var4--; + var5 = 1036402035; + break; + case -1136317498: + var2.use(); + arj.setCurrentLayer(arj.positionColor()); + var3 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_COLOR); + var4 = var1 - (1); + var5 = 1036402035; + break; + case -132146844: + default: + var2 = ensureOutlineProgram(); + if (var2 == null) { + var5 = 1575337601; + } else { + var5 = -1136317498; + } + break; + case 1036402035: + if (var4 >= 0) { + var5 = -1504586717; + } else { + var5 = -1587702605; + } + break; + case 1575337601: + return; + } + } + } + + private static atd ensureOutlineProgram() { + int var0 = -1636521441; + + while (true) { + switch (var0) { + case -1636521441: + default: + if (outlineProgram == null) { + var0 = 1616888572; + } else { + var0 = 2122260509; + } + break; + case 1616888572: + outlineProgram = new atd( + OUTLINE_PROGRAM_ID, + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((-1651560989 | 1651560989) + (-1651560989 & 1651560989)) + ) != 0)); + var0 = 2122260509; + break; + case 2122260509: + return outlineProgram; + } + } + } + + private void computeMeshAt( + int var1, + boolean var2, + boolean var3, + boolean var4, + boolean var5, + float var6, + float var7, + float var8, + int var9, + int var10, + int var11, + int var12, + int var13 + ) { + vh var14 = null; + int var15 = -1509966382; + + while (true) { + switch (var15) { + case -1509966382: + default: + var14 = meshBuffers.get(var1); + var14.fillVertexCount = 0; + var14.outlineVertexCount = 0; + var14.cachedMesh = null; + if (!var2) { + var15 = 2117155610; + } else { + var15 = 465927317; + } + break; + case -949657544: + return; + case 465927317: + var14.computeOutline(WORKSPACE_POOL.get(), var4, var5, var6, var7, var8, var9, var10, var11, var3, var12, var13); + var15 = -949657544; + break; + case 2117155610: + if (var3) { + var15 = 465927317; + } else { + var15 = -949657544; + } + } + } + } + + private boolean isBehindCamera(Vec3 var1, double var2, Entity var4) { + Object var5 = null; + double var6 = 0.0; + double var8 = 0.0; + double var10 = 0.0; + double var12 = 0.0; + int var15 = 0; + int var14 = 1573110321; + + while (true) { + switch (var14) { + case -1906592088: + return (boolean)((var15) != 0); + case -686984329: + var5 = var4.getBoundingBox(); + var6 = Mth.lerp(0.5, ((AABB)var5).minX, ((AABB)var5).maxX); + var8 = Mth.lerp(0.5, ((AABB)var5).minY, ((AABB)var5).maxY); + var10 = Mth.lerp(0.5, ((AABB)var5).minZ, ((AABB)var5).maxZ); + var12 = (var6 - var1.x) * this.camDirX + (var8 - var1.y) * this.camDirY + (var10 - var1.z) * this.camDirZ; + if (var12 < -1.0) { + var14 = 1232009778; + } else { + var14 = 451568097; + } + break; + case 451568097: + var15 = 0; + var14 = -1906592088; + break; + case 1232009778: + var15 = 1; + var14 = -1906592088; + break; + case 1439737869: + return (boolean)(((0)) != 0); + case 1573110321: + default: + if (var2 <= 4.0) { + var14 = 1439737869; + } else { + var14 = -686984329; + } + } + } + } + + private boolean isOccluded(Vec3 var1, double var2, Entity var4) { + AABB var5 = null; + vj var6 = null; + Vec3 var7 = null; + int var8 = 0; + ClipContext var9 = null; + Vec3 var10 = null; + ClipContext var11 = null; + int var13 = 0; + int var12 = -915282956; + + while (true) { + switch (var12) { + case -2067760042: + var8 = var13; + var12 = -1080081785; + break; + case -1637342873: + if (var6.camX == var1.x) { + var12 = 923581601; + } else { + var12 = 1086141549; + } + break; + case -1238801422: + if (var6.boxMaxZ == var5.maxZ) { + var12 = -985642362; + } else { + var12 = 1086141549; + } + break; + case -1189806636: + if (var6.boxMinZ == var5.minZ) { + var12 = -582350095; + } else { + var12 = 1086141549; + } + break; + case -1160360550: + if (this.frameIndex - var6.checkFrame < (3317286349804247499L | -3317286349804247491L) + (3317286349804247499L & -3317286349804247491L)) { + var12 = -1637342873; + } else { + var12 = 1086141549; + } + break; + case -1080081785: + if (var6 == null) { + var12 = -182026759; + } else { + var12 = -762790269; + } + break; + case -985642362: + var6.seenFrame = this.frameIndex; + return var6.occluded; + case -915282956: + default: + if (var2 <= 64.0) { + var12 = 1358492928; + } else { + var12 = 1664568091; + } + break; + case -762790269: + var6.occluded = (boolean)((var8) != 0); + var6.checkFrame = this.frameIndex; + var6.seenFrame = this.frameIndex; + var6.camX = var1.x; + var6.camY = var1.y; + var6.camZ = var1.z; + var6.boxMinX = var5.minX; + var6.boxMinY = var5.minY; + var6.boxMinZ = var5.minZ; + var6.boxMaxX = var5.maxX; + var6.boxMaxY = var5.maxY; + var6.boxMaxZ = var5.maxZ; + return (boolean)((var8) != 0); + case -629269610: + if (var6.boxMinY == var5.minY) { + var12 = -1189806636; + } else { + var12 = 1086141549; + } + break; + case -582350095: + if (var6.boxMaxX == var5.maxX) { + var12 = 1769139868; + } else { + var12 = 1086141549; + } + break; + case -487406162: + var13 = 1; + var12 = -2067760042; + break; + case -321743540: + var10 = new Vec3(var7.x, var5.maxY, var7.z); + var11 = new ClipContext(var1, var10, Block.VISUAL, Fluid.NONE, mc.player); + if (mc.level.clip(var11).getType() != Type.MISS) { + var12 = -487406162; + } else { + var12 = 1204391631; + } + break; + case -182026759: + var6 = new vj(); + this.occlusionCache.put(var4.getId(), var6); + var12 = -762790269; + break; + case 163638866: + if (var6.camZ == var1.z) { + var12 = 936584860; + } else { + var12 = 1086141549; + } + break; + case 923581601: + if (var6.camY == var1.y) { + var12 = 163638866; + } else { + var12 = 1086141549; + } + break; + case 936584860: + if (var6.boxMinX == var5.minX) { + var12 = -629269610; + } else { + var12 = 1086141549; + } + break; + case 1086141549: + var7 = var5.getCenter(); + var9 = new ClipContext(var1, var7, Block.VISUAL, Fluid.NONE, mc.player); + if (mc.level.clip(var9).getType() == Type.MISS) { + var12 = 1610624628; + } else { + var12 = -321743540; + } + break; + case 1204391631: + var13 = 0; + var12 = -2067760042; + break; + case 1358492928: + return (boolean)(((0)) != 0); + case 1610624628: + var8 = 0; + var12 = -1080081785; + break; + case 1664568091: + var5 = var4.getBoundingBox(); + var6 = (vj)this.occlusionCache.get(var4.getId()); + if (var6 != null) { + var12 = -1160360550; + } else { + var12 = 1086141549; + } + break; + case 1769139868: + if (var6.boxMaxY == var5.maxY) { + var12 = -1238801422; + } else { + var12 = 1086141549; + } + } + } + } + + private boolean isValid(Entity var1) { + int var2 = -1991586703; + + while (true) { + switch (var2) { + case -1991586703: + default: + if (var1 == mc.player) { + var2 = -1394196695; + } else { + var2 = 217758304; + } + break; + case -1972781191: + return (boolean)(((0)) != 0); + case -1394196695: + return (boolean)(((0)) != 0); + case -1295360061: + return (boolean)(((0)) != 0); + case -406162044: + if (var1 instanceof ItemEntity) { + var2 = 1961446176; + } else { + var2 = 1481058304; + } + break; + case -97777776: + return this.targetSetting.isEnable((-1935658643 ^ 1935658645) + ((-1935658643 & 1935658645) << 1)); + case 70506575: + if (var1 instanceof Player) { + var2 = 371553829; + } else { + var2 = 1730690694; + } + break; + case 150975291: + if (var1.distanceToSqr(mc.player) > 10000.0) { + var2 = -1295360061; + } else { + var2 = -406162044; + } + break; + case 217758304: + if (var1.isInvisible()) { + var2 = 1398723799; + } else { + var2 = 150975291; + } + break; + case 371553829: + return this.targetSetting.isEnable((287045258 | -287045258) + (287045258 & -287045258)); + case 845491075: + return this.targetSetting.isEnable((171046017 ^ -171046016) + ((171046017 & -171046016) << 1)); + case 1398723799: + return (boolean)(((0)) != 0); + case 1481058304: + if (!(var1 instanceof LivingEntity)) { + var2 = -1972781191; + } else { + var2 = 70506575; + } + break; + case 1730690694: + if (var1 instanceof Animal) { + var2 = -97777776; + } else { + var2 = 845491075; + } + break; + case 1961446176: + return this.targetSetting.isEnable((1286691091 ^ -1286691088) + ((1286691091 & -1286691088) << 1)); + } + } + } + + private void renderShaderFillForEntities(int var1, Vec3 var2) { + atd var3 = null; + int var4 = 0; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + BufferBuilder var9 = null; + int var10 = 0; + vh var11 = null; + int var12 = 1744476240; + + while (true) { + switch (var12) { + case -2054472865: + var11.submitShaderFill(var9); + var12 = 1162669219; + break; + case -1275202305: + if (var10 >= 0) { + var12 = 1417913118; + } else { + var12 = 864254; + } + break; + case -1008018380: + return; + case 864254: + arj.drawCurrent(var9); + return; + case 1013255758: + var4 = this.shaderColorSetting.getIntColor() & 16777215; + var5 = (var4 >> (370550979 | -370550963) + (370550979 & -370550963) & (974697916 | -974697661) + (974697916 & -974697661)) / 255.0F; + var6 = (var4 >> (405655771 ^ -405655763) + ((405655771 & -405655763) << 1) & (68985269 | -68985014) + (68985269 & -68985014)) / 255.0F; + var7 = (var4 & (1485937646 ^ -1485937391) + ((1485937646 & -1485937391) << 1)) / 255.0F; + var8 = (float)(System.currentTimeMillis() % ((-4200862517850425587L | 4200862517850525587L) + (-4200862517850425587L & 4200862517850525587L))) + / 1000.0F + * this.shaderSpeedSetting.getCurrent(); + var3.use(); + var3.setResolution(mc.getWindow().getWidth(), mc.getWindow().getHeight()); + var3.setTime(var8); + var3.setTintColor(var5, var6, var7); + var3.setFade(this.shaderAlphaSetting.getCurrent()); + arj.setCurrentLayer(arj.positionColor()); + var9 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_COLOR); + var10 = var1 - (1); + var12 = -1275202305; + break; + case 1162669219: + var10--; + var12 = -1275202305; + break; + case 1417913118: + var11 = meshBuffers.get(var10); + if (!var11.isItem) { + var12 = -2054472865; + } else { + var12 = 1162669219; + } + break; + case 1744476240: + default: + var3 = this.getShaderProgram(); + if (var3 == null) { + var12 = -1008018380; + } else { + var12 = 1013255758; + } + } + } + } + + private atd getShaderProgram() { + String var1 = this.shaderTypeSetting.get(); + int var2 = -1; + switch (var1.hashCode()) { + case -1901891230: + if (var1.equals("Plasma")) { + var2 = 2; + } + break; + case 86836: + if (var1.equals("Web")) { + var2 = 1; + } + break; + case 2024198218: + if (var1.equals("Cosmos")) { + var2 = 0; + } + } + return switch (var2) { + case 0 -> atb.worldStarfieldProgram; + case 1 -> atb.worldCobwebProgram; + case 2 -> atb.worldPlasmaProgram; + default -> atb.worldNebulaProgram; + }; + } + + private boolean renderGlowSeedToFbo(int var1, int var2, int var3, int var4, float var5, boolean var6, float var7, float var8) { + if (var1 > 0 && var4 > 0 && !(var5 <= 0.0F)) { + int var9 = mc.getWindow().getWidth(); + int var10 = mc.getWindow().getHeight(); + if (var9 > 0 && var10 > 0) { + float var11 = mc.getWindow().getGuiScaledWidth(); + float var12 = mc.getWindow().getGuiScaledHeight(); + if (!(var11 <= 0.0F) && !(var12 <= 0.0F)) { + vi var13 = this.glowScreenWorkspace; + Matrix4f var14 = var13.worldMatrix.set(auk.getLastWorldSpaceMatrix()); + Matrix4f var15 = var13.projectionMatrix.set(auk.getLastProjMat()); + Matrix4f var16 = var13.guiMatrix.identity(); + float var17 = Math.min(5.0F, Math.max(2.0F, var5 * 0.35F)); + float var18 = var17 * 0.5F; + int var19 = forceAlpha(var2, (1580949122 ^ -1580948867) + ((1580949122 & -1580948867) << 1)); + int var20 = forceAlpha(var3, (1858844790 ^ -1858844535) + ((1858844790 & -1858844535) << 1)); + BufferBuilder var21 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_COLOR); + int var22 = 0; + + for (int var23 = var1 - (1); var23 >= 0; var23--) { + vh var24 = meshBuffers.get(var23); + int var25 = var24.overrideColor != -1? forceAlpha(var24.overrideColor, (-1933007202 | 1933007457) + (-1933007202 & 1933007457)) + : var19; + int var26 = var24.overrideColor != -1? forceAlpha(var24.overrideColor, (-2097570455 ^ 2097570710) + ((-2097570455 & 2097570710) << 1)) + : var20; + var22 |= emitGlowSeedForMesh(var21, var16, var13, var24, var14, var15, var11, var12, var18, var25, var26, var6, var7, var8); + } + + if (var22 == 0) { + arj.drawCurrent(var21); + return (boolean)(((0)) != 0); + } + + this.ensureGlowFramebuffer(var9, var10); + RenderSystem.getDevice().createCommandEncoder().clearColorTexture(this.glowFbo.getColorTexture(), EVO_CLEAR_TRANSPARENT); + if (glowSeedProgram == null) { + glowSeedProgram = new atd( + Identifier.fromNamespaceAndPath( + "evolution", + "hitbox_glow_seed/data" + ), + DefaultVertexFormat.POSITION_COLOR, + (boolean)(((1)) != 0), + (boolean)((((-1190605455 ^ 1190605455) + ((-1190605455 & 1190605455) << 1)) + ) != 0)); + } + + GpuTextureView var30 = atd.getWorldColorTarget(); + GpuTextureView var31 = atd.getWorldDepthTarget(); + atd.setWorldTarget(this.glowFbo.getColorTextureView(), mc.gameRenderer.mainRenderTarget().getDepthTextureView()); + + try { + glowSeedProgram.use(); + arj.setCurrentLayer(arj.positionColor()); + arj.drawCurrent(var21); + } finally { + atd.setWorldTarget(var30, var31); + } + + return (boolean)(((1)) != 0); + } else { + return (boolean)(((0)) != 0); + } + } else { + return (boolean)(((0)) != 0); + } + } else { + return (boolean)(((0)) != 0); + } + } + + private void ensureGlowFramebuffer(int var1, int var2) { + int var3 = 383836185; + + while (true) { + switch (var3) { + case -743451844: + if (this.glowFbo.height != var2) { + var3 = 1791322993; + } else { + var3 = -61444207; + } + break; + case -61444207: + return; + case 383836185: + default: + if (this.glowFbo == null) { + var3 = 1465846633; + } else { + var3 = 1126865644; + } + break; + case 1126865644: + if (this.glowFbo.width == var1) { + var3 = -743451844; + } else { + var3 = 1791322993; + } + break; + case 1465846633: + this.glowFbo = new TextureTarget( + "evo_glow", + var1, + var2, + (boolean)(((0)) != 0), + GpuFormat.RGBA8_UNORM + ); + var3 = -61444207; + break; + case 1791322993: + this.glowFbo.resize(var1, var2); + var3 = -61444207; + } + } + } + + private static boolean emitGlowSeedForMesh( + BufferBuilder var0, + Matrix4f var1, + vi var2, + vh var3, + Matrix4f var4, + Matrix4f var5, + float var6, + float var7, + float var8, + int var9, + int var10, + boolean var11, + float var12, + float var13 + ) { + fillGlowCornerPositions(var3, var2); + float var14 = var3.glowMaxY - var3.glowMinY; + int var15 = 0; + float var16 = Math.max(0.0F, var13); + if (!var3.isItem) { + if (var16 > 0.0F) { + for (int var17 = 0; + var17 < 8; + var17++ + ) { + int[] var18 = CORNER_NEIGHBORS[var17]; + float var19 = var2.worldX[var17]; + float var20 = var2.worldY[var17]; + float var21 = var2.worldZ[var17]; + float var22 = var19 + (var2.worldX[var18[0]] - var19) * var16; + float var23 = var20 + (var2.worldY[var18[0]] - var20) * var16; + float var24 = var21 + (var2.worldZ[var18[0]] - var21) * var16; + float var25 = var19 + (var2.worldX[var18[1]] - var19) * var16; + float var26 = var20 + (var2.worldY[var18[1]] - var20) * var16; + float var27 = var21 + (var2.worldZ[var18[1]] - var21) * var16; + float var28 = var19 + (var2.worldX[var18[2]] - var19) * var16; + float var29 = var20 + (var2.worldY[var18[2]] - var20) * var16; + float var30 = var21 + (var2.worldZ[var18[2]] - var21) * var16; + var15 |= emitGlowCurve( + var0, + var1, + var2, + var4, + var5, + var6, + var7, + var8, + var22, + var23, + var24, + var25, + var26, + var27, + var19, + var20, + var21, + var3.glowMinY, + var14, + var9, + var10 + ); + var15 |= emitGlowCurve( + var0, + var1, + var2, + var4, + var5, + var6, + var7, + var8, + var25, + var26, + var27, + var28, + var29, + var30, + var19, + var20, + var21, + var3.glowMinY, + var14, + var9, + var10 + ); + var15 |= emitGlowCurve( + var0, + var1, + var2, + var4, + var5, + var6, + var7, + var8, + var28, + var29, + var30, + var22, + var23, + var24, + var19, + var20, + var21, + var3.glowMinY, + var14, + var9, + var10 + ); + } + } + + for (int var33 = 0; var33 < EDGES.length; var33++) { + int[] var35 = EDGES[var33]; + var15 |= emitGlowEdge( + var0, + var1, + var2, + var3, + var4, + var5, + var6, + var7, + var35[0], + var35[1], + var8, + var11, + var12, + var16, + var9, + var10 + ); + } + } + + if (var3.doEyeLine) { + var2.worldX[8] = var3.eyeX; + var2.worldY[8] = var3.eyeY; + var2.worldZ[8] = var3.eyeZ; + var2.worldX[9] = var3.endX; + var2.worldY[9] = var3.endY; + var2.worldZ[9] = var3.endZ; + var2.visible[8] = projectGlowPoint( + var2, 8, var4, var5, var6, var7 + ); + var2.visible[9] = projectGlowPoint( + var2, 9, var4, var5, var6, var7 + ); + var2.color[8] = getColorAtY(var3.eyeY, var3.glowMinY, var14, var9, var10); + var2.color[9] = getColorAtY(var3.endY, var3.glowMinY, var14, var9, var10); + float var34 = var3.isItem ? var8 * 6.0F : var8; + var15 |= emitProjectedGlowLine( + var0, + var1, + var2, + 8, + 9, + var34, + var6, + var7 + ); + } + + return (boolean)((var15) != 0); + } + + private static void fillGlowCornerPositions(vh var0, vi var1) { + var1.worldX[0] = var0.glowMinX; + var1.worldY[0] = var0.glowMinY; + var1.worldZ[0] = var0.glowMinZ; + var1.worldX[1] = var0.glowMaxX; + var1.worldY[1] = var0.glowMinY; + var1.worldZ[1] = var0.glowMinZ; + var1.worldX[2] = var0.glowMaxX; + var1.worldY[2] = var0.glowMinY; + var1.worldZ[2] = var0.glowMaxZ; + var1.worldX[3] = var0.glowMinX; + var1.worldY[3] = var0.glowMinY; + var1.worldZ[3] = var0.glowMaxZ; + var1.worldX[4] = var0.glowMinX; + var1.worldY[4] = var0.glowMaxY; + var1.worldZ[4] = var0.glowMinZ; + var1.worldX[5] = var0.glowMaxX; + var1.worldY[5] = var0.glowMaxY; + var1.worldZ[5] = var0.glowMinZ; + var1.worldX[6] = var0.glowMaxX; + var1.worldY[6] = var0.glowMaxY; + var1.worldZ[6] = var0.glowMaxZ; + var1.worldX[7] = var0.glowMinX; + var1.worldY[7] = var0.glowMaxY; + var1.worldZ[7] = var0.glowMaxZ; + } + + private static boolean projectGlowPoint(vi var0, int var1, Matrix4f var2, Matrix4f var3, float var4, float var5) { + Vector4f var6 = null; + float var7 = 0.0F; + int var8 = -1313948713; + + while (true) { + switch (var8) { + case -1313948713: + default: + var6 = var0.clip.set(var0.worldX[var1], var0.worldY[var1], var0.worldZ[var1], 1.0F).mul(var2).mul(var3); + if (var6.w <= 0.05F) { + var8 = -243766811; + } else { + var8 = -1058475442; + } + break; + case -1058475442: + var7 = 1.0F / var6.w; + var0.screenX[var1] = (0.5F + 0.5F * var6.x * var7) * var4; + var0.screenY[var1] = (0.5F - 0.5F * var6.y * var7) * var5; + var0.screenZ[var1] = var6.z * var7; + return (boolean)(((1)) != 0); + case -243766811: + var0.screenX[var1] = 0.0F; + var0.screenY[var1] = 0.0F; + return (boolean)(((0)) != 0); + } + } + } + + private static boolean projectGlowWorldPoint( + vi var0, int var1, Matrix4f var2, Matrix4f var3, float var4, float var5, float var6, float var7, float var8, int var9 + ) { + var0.worldX[var1] = var6; + var0.worldY[var1] = var7; + var0.worldZ[var1] = var8; + var0.color[var1] = var9; + var0.visible[var1] = projectGlowPoint(var0, var1, var2, var3, var4, var5); + return var0.visible[var1]; + } + + private static boolean emitGlowCurve( + BufferBuilder var0, + Matrix4f var1, + vi var2, + Matrix4f var3, + Matrix4f var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13, + float var14, + float var15, + float var16, + float var17, + float var18, + int var19, + int var20 + ) { + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + int var24 = 0; + int var25 = 0; + int var26 = 0; + float var27 = 0.0F; + float var28 = 0.0F; + float var29 = 0.0F; + float var30 = 0.0F; + float var31 = 0.0F; + int var32 = 0; + int var33 = 483588110; + + while (true) { + switch (var33) { + case -1417295633: + if (var26 <= (-1196128888 | 1196128896) + (-1196128888 & 1196128896)) { + var33 = 104637481; + } else { + var33 = 1326888586; + } + break; + case 104637481: + var27 = var26 / 8.0F; + var28 = 1.0F - var27; + var29 = var14 + (var8 - var14) * var28 * var28 + (var11 - var14) * var27 * var27; + var30 = var15 + (var9 - var15) * var28 * var28 + (var12 - var15) * var27 * var27; + var31 = var16 + (var10 - var16) * var28 * var28 + (var13 - var16) * var27 * var27; + var32 = getColorAtY(var30, var17, var18, var19, var20); + var25 |= emitGlowWorldLine(var0, var1, var2, var3, var4, var5, var6, var21, var22, var23, var29, var30, var31, var7, var24, var32); + var21 = var29; + var22 = var30; + var23 = var31; + var24 = var32; + var26++; + var33 = -1417295633; + break; + case 483588110: + default: + var21 = var8; + var22 = var9; + var23 = var10; + var24 = getColorAtY(var22, var17, var18, var19, var20); + var25 = 0; + var26 = 1; + var33 = -1417295633; + break; + case 1326888586: + return (boolean)((var25) != 0); + } + } + } + + private static boolean emitGlowEdge( + BufferBuilder var0, + Matrix4f var1, + vi var2, + vh var3, + Matrix4f var4, + Matrix4f var5, + float var6, + float var7, + int var8, + int var9, + float var10, + boolean var11, + float var12, + float var13, + int var14, + int var15 + ) { + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + float var27 = 0.0F; + float var28 = 0.0F; + float var29 = 0.0F; + float var30 = 0.0F; + float var31 = 0.0F; + float var32 = 0.0F; + float var33 = 0.0F; + float var34 = 0.0F; + float var35 = 0.0F; + int var36 = 0; + int var37 = 0; + float var38 = 0.0F; + float var39 = 0.0F; + float var40 = 0.0F; + float var41 = 0.0F; + float var42 = 0.0F; + float var43 = 0.0F; + float var44 = 0.0F; + int var45 = 0; + int var46 = 0; + int var47 = 0; + float var49 = 0.0F; + int var48 = -1110014820; + + while (true) { + switch (var48) { + case -2069783585: + var49 = 0.0F; + var48 = -1542997698; + break; + case -1947197635: + var38 = var27 * var12 - var28; + if (var38 <= 0.0F) { + var48 = -1674341996; + } else { + var48 = 91941741; + } + break; + case -1674341996: + return (boolean)(((0)) != 0); + case -1542997698: + var28 = var49; + var29 = var16 + var22 * var28; + var30 = var17 + var23 * var28; + var31 = var18 + var24 * var28; + var32 = var19 - var22 * var28; + var33 = var20 - var23 * var28; + var34 = var21 - var24 * var28; + var35 = var3.glowMaxY - var3.glowMinY; + var36 = getColorAtY(var30, var3.glowMinY, var35, var14, var15); + var37 = getColorAtY(var33, var3.glowMinY, var35, var14, var15); + if (!var11) { + var48 = -8305529; + } else { + var48 = -1947197635; + } + break; + case -1248824103: + var49 = var27 * var13; + var48 = -1542997698; + break; + case -1110014820: + default: + var16 = var2.worldX[var8]; + var17 = var2.worldY[var8]; + var18 = var2.worldZ[var8]; + var19 = var2.worldX[var9]; + var20 = var2.worldY[var9]; + var21 = var2.worldZ[var9]; + var22 = var19 - var16; + var23 = var20 - var17; + var24 = var21 - var18; + var25 = var22 * var22 + var23 * var23 + var24 * var24; + if (var25 <= 1.0E-8F) { + var48 = 510777196; + } else { + var48 = 1324979458; + } + break; + case -8305529: + return emitGlowWorldLine(var0, var1, var2, var4, var5, var6, var7, var29, var30, var31, var32, var33, var34, var10, var36, var37); + case 91941741: + var39 = var29 + var22 * var38; + var40 = var30 + var23 * var38; + var41 = var31 + var24 * var38; + var42 = var32 - var22 * var38; + var43 = var33 - var23 * var38; + var44 = var34 - var24 * var38; + var45 = getColorAtY(var40, var3.glowMinY, var35, var14, var15); + var46 = getColorAtY(var43, var3.glowMinY, var35, var14, var15); + boolean var59 = emitGlowWorldLine(var0, var1, var2, var4, var5, var6, var7, var29, var30, var31, var39, var40, var41, var10, var36, var45); + return var59 | emitGlowWorldLine(var0, var1, var2, var4, var5, var6, var7, var42, var43, var44, var32, var33, var34, var10, var46, var37); + case 510777196: + return (boolean)(((0)) != 0); + case 1324979458: + var26 = fastInvSqrt(var25); + var27 = var25 * var26; + var22 *= var26; + var23 *= var26; + var24 *= var26; + if (var13 > 0.0F) { + var48 = -1248824103; + } else { + var48 = -2069783585; + } + } + } + } + + private static boolean emitGlowWorldLine( + BufferBuilder var0, + Matrix4f var1, + vi var2, + Matrix4f var3, + Matrix4f var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + float var13, + int var14, + int var15 + ) { + int var16 = 0; + int var17 = 0; + int var18 = -1408244848; + + while (true) { + switch (var18) { + case -1717212870: + return emitProjectedGlowLine( + var0, + var1, + var2, + 8, + 9, + var13, + var5, + var6 + ); + case -1549999186: + return (boolean)(((0)) != 0); + case -1408244848: + default: + boolean var19 = projectGlowWorldPoint( + var2, 8, var3, var4, var5, var6, var7, var8, var9, var14 + ); + var17 = (projectGlowWorldPoint(var2, 9, var3, var4, var5, var6, var10, var11, var12, var15)) ? 1 : 0; + if (var19) { + var18 = -1289034178; + } else { + var18 = -1549999186; + } + break; + case -1289034178: + if (var17 == 0) { + var18 = -1549999186; + } else { + var18 = -1717212870; + } + } + } + } + + private static boolean emitProjectedGlowLine(BufferBuilder var0, Matrix4f var1, vi var2, int var3, int var4, float var5, float var6, float var7) { + int var8 = 1930696877; + + while (true) { + switch (var8) { + case -1071951117: + if (!var2.visible[var4]) { + var8 = -956047226; + } else { + var8 = 364928804; + } + break; + case -956047226: + return (boolean)(((0)) != 0); + case 364928804: + return emitScreenGlowLine( + var0, + var1, + var2.screenX[var3], + var2.screenY[var3], + var2.screenX[var4], + var2.screenY[var4], + var2.screenZ[var3], + var2.screenZ[var4], + var5, + var2.color[var3], + var2.color[var4], + var6, + var7 + ); + case 1930696877: + default: + if (var2.visible[var3]) { + var8 = -1071951117; + } else { + var8 = -956047226; + } + } + } + } + + private static boolean emitScreenGlowLine( + BufferBuilder var0, + Matrix4f var1, + float var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + int var9, + int var10, + float var11, + float var12 + ) { + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + int var19 = 1697504755; + + while (true) { + switch (var19) { + case -1347919126: + return (boolean)(((0)) != 0); + case 1153703788: + var16 = fastInvSqrt(var15); + var17 = -var14 * var16 * var8; + var18 = var13 * var16 * var8; + emitClipGlowVertex(var0, var1, var2 + var17, var3 + var18, var6, var9, var11, var12); + emitClipGlowVertex(var0, var1, var4 + var17, var5 + var18, var7, var10, var11, var12); + emitClipGlowVertex(var0, var1, var4 - var17, var5 - var18, var7, var10, var11, var12); + emitClipGlowVertex(var0, var1, var2 - var17, var3 - var18, var6, var9, var11, var12); + return (boolean)(((1)) != 0); + case 1697504755: + } + + var13 = var4 - var2; + var14 = var5 - var3; + var15 = var13 * var13 + var14 * var14; + if (var15 <= 1.0E-6F) { + var19 = -1347919126; + } else { + var19 = 1153703788; + } + } + } + + private static void emitClipGlowVertex(BufferBuilder var0, Matrix4f var1, float var2, float var3, float var4, int var5, float var6, float var7) { + float var8 = var2 / var6 * 2.0F - 1.0F; + float var9 = 1.0F - var3 / var7 * 2.0F; + var0.addVertex(var1, var8, var9, var4).setColor(var5); + } + + private static int forceAlpha(int var0, int var1) { + int var2 = Math.max( + 0, Math.min(255, var1) + ); + return var0 & (-1630005584 ^ 1646782799) + ((-1630005584 & 1646782799) << 1) | var2 << 24; + } + + static { + int[][] var10000 = new int[12][]; + int var10002 = 0; + int[] var10003 = new int[2]; + var10003[0] = 0; + var10003[1] = 1; + var10000[var10002] = var10003; + var10002 = 1; + var10003 = new int[2]; + var10003[0] = 1; + var10003[1] = 2; + var10000[var10002] = var10003; + var10002 = 2; + var10003 = new int[2]; + var10003[0] = 2; + var10003[1] = 3; + var10000[var10002] = var10003; + var10002 = 3; + var10003 = new int[2]; + var10003[0] = 3; + var10003[1] = 0; + var10000[var10002] = var10003; + var10002 = 4; + var10003 = new int[2]; + var10003[0] = 4; + var10003[1] = 5; + var10000[var10002] = var10003; + var10002 = 5; + var10003 = new int[2]; + var10003[0] = 5; + var10003[1] = 6; + var10000[var10002] = var10003; + var10002 = 6; + var10003 = new int[2]; + var10003[0] = 6; + var10003[1] = 7; + var10000[var10002] = var10003; + var10002 = 7; + var10003 = new int[2]; + var10003[0] = 7; + var10003[1] = 4; + var10000[var10002] = var10003; + var10002 = 8; + var10003 = new int[2]; + var10003[0] = 0; + var10003[1] = 4; + var10000[var10002] = var10003; + var10002 = 9; + var10003 = new int[2]; + var10003[0] = 1; + var10003[1] = 5; + var10000[var10002] = var10003; + var10002 = 10; + var10003 = new int[2]; + var10003[0] = 2; + var10003[1] = 6; + var10000[var10002] = var10003; + var10002 = 11; + var10003 = new int[2]; + var10003[0] = 3; + var10003[1] = 7; + var10000[var10002] = var10003; + EDGES = var10000; + var10000 = new int[8][]; + var10002 = 0; + var10003 = new int[3]; + var10003[0] = 1; + var10003[1] = 3; + var10003[2] = 4; + var10000[var10002] = var10003; + var10002 = 1; + var10003 = new int[3]; + var10003[0] = 0; + var10003[1] = 2; + var10003[2] = 5; + var10000[var10002] = var10003; + var10002 = 2; + var10003 = new int[3]; + var10003[0] = 1; + var10003[1] = 3; + var10003[2] = 6; + var10000[var10002] = var10003; + var10002 = 3; + var10003 = new int[3]; + var10003[0] = 0; + var10003[1] = 2; + var10003[2] = 7; + var10000[var10002] = var10003; + var10002 = 4; + var10003 = new int[3]; + var10003[0] = 5; + var10003[1] = 7; + var10003[2] = 0; + var10000[var10002] = var10003; + var10002 = 5; + var10003 = new int[3]; + var10003[0] = 4; + var10003[1] = 6; + var10003[2] = 1; + var10000[var10002] = var10003; + var10002 = 6; + var10003 = new int[3]; + var10003[0] = 5; + var10003[1] = 7; + var10003[2] = 2; + var10000[var10002] = var10003; + var10002 = 7; + var10003 = new int[3]; + var10003[0] = 4; + var10003[1] = 6; + var10003[2] = 3; + var10000[var10002] = var10003; + CORNER_NEIGHBORS = var10000; + + for (int var0 = 0; var0 < 8; var0++) { + double var1 = var0 * Math.PI * 2.0 / 8.0 + (Math.PI / 8); + COS_LUT_8[var0] = (float)Math.cos(var1); + SIN_LUT_8[var0] = (float)Math.sin(var1); + } + + for (int var5 = 0; var5 < 4; var5++) { + double var7 = var5 * Math.PI * 2.0 / 4.0 + (Math.PI / 4); + COS_LUT_4[var5] = (float)Math.cos(var7); + SIN_LUT_4[var5] = (float)Math.sin(var7); + } + + double var6 = Math.PI * 2; + + for (int var2 = 0; var2 <= 8; var2++) { + double var3 = var2 * var6 / 8.0; + JOINT_COS_8[var2] = (float)Math.cos(var3); + JOINT_SIN_8[var2] = (float)Math.sin(var3); + } + + for (int var8 = 0; + var8 <= 4; + var8++ + ) { + double var9 = var8 * var6 / 4.0; + JOINT_COS_4[var8] = (float)Math.cos(var9); + JOINT_SIN_4[var8] = (float)Math.sin(var9); + } + + TEMPLATE_2_S4 = new vg(2, (662109844 | -662109840) + (662109844 & -662109840)); + TEMPLATE_3_S4 = new vg(3, (-1428795719 | 1428795723) + (-1428795719 & 1428795723)); + TEMPLATE_5_S4 = new vg(5, (2053449409 | -2053449405) + (2053449409 & -2053449405)); + TEMPLATE_8_S8 = new vg(8, (313355307 | -313355299) + (313355307 & -313355299)); + INSTANCE = new vl(); + } +} diff --git a/src/main/java/defpackage/vm.java b/src/main/java/defpackage/vm.java new file mode 100644 index 0000000..02de445 --- /dev/null +++ b/src/main/java/defpackage/vm.java @@ -0,0 +1,1893 @@ +package defpackage; + +import com.google.gson.JsonObject; +import com.mojang.blaze3d.platform.InputConstants; +import com.mojang.blaze3d.platform.Window; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.client.model.geom.builders.UVPair; +import net.minecraft.util.Mth; +import org.joml.Matrix3x2fStack; +import org.joml.Vector2f; + +@rn(name = "Interface", category = rl.MISC, description = "HUD elements and the look of the client interface") +public final class vm extends rm { + private static final String ELEMENT_RENDER_FAILURE = "hud element {} render failed"; + private static final String HUD_ELEMENTS_KEY = "HudElements"; + private static final String SETTINGS_KEY = "Settings"; + private static final String LEGACY_DARKENING_KEY = "Darkening"; + public static final vm INSTANCE = new vm(); + private static final float HUD_SCALE_FALLBACK = 2.0F; + private static final String WATERMARK_ELEMENT = "Watermark"; + private static final String SCOREBOARD_ELEMENT = "Scoreboard"; + private static final String JUMP_RESET_ELEMENT = "Jump Reset"; + private static final String TAB_ELEMENT = "Tab List"; + private final si elementsSetting; + private final qj playerList; + private final sc previousTrackKey; + private final sc playPauseKey; + private final sc nextTrackKey; + private final ru watermarkLyrics; + private static final int COLLISION_ITERATIONS = 3; + private final List elements; + private final List activeElements; + private qx draggingElement; + private qx resizingElement; + private float dragOffsetX; + private float dragOffsetY; + private float resizeBaseW; + private float resizeBaseH; + private long lastDragSoundTime; + private int dragSoundCounter; + private final sm scale; + private static final String GLOSS_DEFAULT = "Default"; + private static final String GLOSS_SHIMMER = "Shimmer"; + private final sg glossMode; + private static final String OPEN_EFFECT_DESCRIPTION = "Animation played when the ClickGUI opens and closes."; + private final sg openEffect; + private sf resolvedOpenEffectValue; + private yb resolvedOpenEffect; + private ru blur; + private final ru autoScroll; + private final ct blurAnimation; + private final ru liquidGlass; + private final ct liquidGlassAnimation; + private final ct textDarknessAnimation; + private final sm frost; + private final sm refraction; + private final sm glassTint; + private final ru floatingHotbar; + private final sm jumpResetTolerance; + private static final float STACK_X = 10.0F; + private static final float STACK_TOP = 10.0F; + private static final float STACK_GAP = 4.0F; + private static final float STACK_STEP = 22.0F; + private static final float WATERMARK_TOP = 6.0F; + private static final float NOTIFY_BOTTOM_OFFSET = -46.0F; + private static final long ANCHOR_SETTLE_MS = 5000L; + private static final float SEARCH_FALLBACK_TOP = 24.0F; + private final qu watermark; + long init; + + public static float hudScale() { + Window var0 = null; + int var1 = 0; + int var2 = 0; + int var3 = 998922051; + + while (true) { + switch (var3) { + case -722112876: + var1 = var0.getScreenWidth(); + var2 = var0.getGuiScaledWidth(); + if (var1 > 0) { + var3 = 1085648896; + } else { + var3 = -473071104; + } + break; + case -473071104: + return 2.0F; + case 168568700: + return (float)var1 / var2; + case 919174826: + return 2.0F; + case 998922051: + default: + var0 = mc.getWindow(); + if (var0 == null) { + var3 = 919174826; + } else { + var3 = -722112876; + } + break; + case 1085648896: + if (var2 <= 0) { + var3 = -473071104; + } else { + var3 = 168568700; + } + } + } + } + + public static float hudWidth() { + return mc.getWindow().getScreenWidth() / hudScale(); + } + + public static float hudHeight() { + return mc.getWindow().getScreenHeight() / hudScale(); + } + + public int getJumpResetTolerance() { + return Math.round(this.jumpResetTolerance.getCurrent()); + } + + public boolean isWatermarkLyricsEnabled() { + return this.watermarkLyrics.isEnabled(); + } + + public boolean isFloatingHotbarEnabled() { + return this.floatingHotbar.isEnabled(); + } + + private static float stackY(int var0) { + return 10.0F + var0 * 22.0F; + } + + private vm() { + String var10001 = "Elements"; + String[] var10002 = new String[14]; + var10002[0] = "Watermark"; + var10002[1] = "Effects"; + var10002[2] = "Notifications"; + var10002[3] = "Cooldowns"; + var10002[4] = "Information"; + var10002[5] = "Keybinds"; + var10002[6] = "Target HUD"; + var10002[7] = "HotBar"; + var10002[8] = "Voice Chat"; + var10002[9] = "Performance"; + var10002[10] = "Friend Inventory"; + var10002[11] = "Scoreboard"; + var10002[12] = "Jump Reset"; + var10002[13] = "Tab List"; + this.elementsSetting = si.create(var10001, List.of(var10002)) + .describe( + "Watermark", + "Client pill with the clock, FPS, ping, media player and live notifications" + ) + .describe( + "Effects", + "Active potion effects with their remaining time" + ) + .describe( + "Notifications", + "Toasts the client raises for its own events" + ) + .describe( + "Cooldowns", + "Remaining cooldown of items you just used" + ) + .describe( + "Information", + "Coordinates, speed and other live readouts" + ) + .describe( + "Keybinds", + "List of the modules you have bound to a key" + ) + .describe( + "Target HUD", + "Health and gear panel of the player you are fighting" + ) + .describe( + "HotBar", + "Custom styled hotbar in place of the vanilla one" + ) + .describe( + "Voice Chat", + "Who is currently speaking in proximity voice chat" + ) + .describe( + "Performance", + "FPS, CPU and memory readout" + ) + .describe( + "Friend Inventory", + "Inventory preview of the friend you are looking at" + ) + .describe( + "Scoreboard", + "Custom styled server scoreboard" + ) + .describe( + "Jump Reset", + "Counter of how well you time your jump resets" + ) + .describe( + "Tab List", + "Custom styled player list" + ) + .description("HUD elements drawn on the screen"); + this.playerList = new qj(); + this.previousTrackKey = new sc( + "Previous Track", + 91, + () -> this.elementsSetting.isEnable("Watermark") + ) + .description( + "Key that switches to the previous track" + ); + this.playPauseKey = new sc( + "Play / Pause", + 92, + () -> this.elementsSetting.isEnable("Watermark") + ) + .description( + "Key that pauses or resumes playback" + ); + this.nextTrackKey = new sc( + "Next Track", + 93, + () -> this.elementsSetting.isEnable("Watermark") + ) + .description( + "Key that switches to the next track" + ); + this.watermarkLyrics = new ru( + "Lyrics", + (boolean)(((0)) != 0), + () -> this.elementsSetting.isEnable("Watermark") + ) + .description( + "Show synced karaoke lyrics of the playing track inside the watermark" + ); + this.elements = new ArrayList<>(); + this.activeElements = new ArrayList<>(); + this.draggingElement = null; + this.resizingElement = null; + this.lastDragSoundTime = (-4666218398292563124L | 4666218398292563124L) + (-4666218398292563124L & 4666218398292563124L); + this.dragSoundCounter = 0; + this.scale = new sm("Size", 2.0F, 1.0F, 3.0F, 0.1F) + .description( + "Overall scale multiplier of the ClickGUI" + ); + String var10003 = "Gloss"; + String[] var10004 = new String[2]; + var10004[0] = "Default"; + var10004[1] = "Shimmer"; + this.glossMode = new sg(var10003, var10004) + .describe( + "Default", + "Standard clean gloss" + ) + .describe( + "Shimmer", + "Animated shimmering gloss" + ) + .description( + "Visual gloss style applied to the ClickGUI and HUD" + ); + this.openEffect = buildOpenEffectSetting(); + this.resolvedOpenEffect = yb.DEFAULT; + this.blur = new ru( + "Blur", + (boolean)((((1955543867 ^ -1955543867) + ((1955543867 & -1955543867) << 1)) + ) != 0)) + .description("Blur the background behind the ClickGUI"); + this.autoScroll = new ru( + "Auto Scroll", + (boolean)((((-1963359485 ^ 1963359486) + ((-1963359485 & 1963359486) << 1)) + ) != 0)) + .description( + "Gently scroll a partly hidden ClickGUI card into view once the cursor rests on it" + ); + this.blurAnimation = ct.layout(ob.SETTLED); + this.liquidGlass = new ru( + "Liquid Glass", + (boolean)((((1817539499 ^ -1817539499) + ((1817539499 & -1817539499) << 1)) + ) != 0)) + .description( + "Render HUD panels as refractive liquid glass" + ); + this.liquidGlassAnimation = ct.layout(ob.DELIBERATE); + this.textDarknessAnimation = ct.layout(ob.SETTLED); + this.frost = new sm( + "Frost", 0.25F, 0.0F, 1.0F, 0.05F, () -> this.liquidGlass.isEnabled() + ) + .description( + "Frosted blur strength of the liquid glass" + ); + this.refraction = new sm( + "Refraction", + 0.4F, + 0.0F, + 1.0F, + 0.05F, + () -> this.liquidGlass.isEnabled() + ) + .description( + "Edge refraction strength of the liquid glass" + ); + this.glassTint = new sm( + "Tint", 0.0F, -1.0F, 1.0F, 0.05F, () -> this.liquidGlass.isEnabled() + ) + .description( + "Shade of the liquid glass: negative darkens, positive lightens into a pale backdrop for dark text" + ); + this.floatingHotbar = new ru( + "Floating Hotbar", + (boolean)((((1444366019 | -1444366018) + (1444366019 & -1444366018)) + ) != 0)) + .description( + "Enable smooth floating wave animation for HotBar items" + ); + this.jumpResetTolerance = new sm( + "Jump Tolerance", + 1.0F, + 0.0F, + 3.0F, + 1.0F, + () -> this.elementsSetting.isEnable("Jump Reset") + ) + .description( + "How many ticks off the perfect jump reset still count as a hit" + ); + this.init = (7511428773924459582L ^ -7511428773924459582L) + ((7511428773924459582L & -7511428773924459582L) << 1); + this.watermark = new qu( + "Watermark", + 0.0F, + 0.0F, + 960.0F, + 495.5F, + 0.0F, + 6.0F, + qv.TOP_CENTER + ); + this.addElement(this.watermark); + this.addElement( + new ql( + "Potions", + 0.0F, + 0.0F, + 960.0F, + 495.5F, + 10.0F, + stackY((1157924168 | -1157924165) + (1157924168 & -1157924165)), + qv.TOP_LEFT + ) + ); + qf var1 = new qf( + "Notify", 181.80615F, 135.5F, 960.0F, 495.5F, 0.0F, -46.0F, qv.BOTTOM_CENTER + ); + this.addElement(var1); + bz.getInstance().getNotifyManager().setNotifyComponent(var1); + this.addElement( + new pp( + "Cooldown", + 349.0F, + 0.0F, + 960.0F, + 495.5F, + -11.5F, + 73.0F, + qv.TOP_RIGHT + ) + ); + this.addElement( + new pv( + "Information", + 0.0F, + 0.0F, + 960.0F, + 495.5F, + 10.0F, + stackY((-826436493 | 826436493) + (-826436493 & 826436493)), + qv.TOP_LEFT + ) + ); + this.addElement( + new pz("Keybinds", 349.0F, 0.0F, 960.0F, 495.5F, -122.0F, 73.0F, qv.TOP_RIGHT) + ); + this.addElement( + new qs( + "TargetHUD", + 166.5F, + 128.5F, + 960.0F, + 495.5F, + 0.0F, + 31.75F, + qv.CENTER + ) + ); + this.addElement( + new pt( + "HotBar", + 372.0F, + 467.5F, + 960.0F, + 495.5F, + 0.0F, + -4.0F, + qv.BOTTOM_CENTER + ) + ); + this.addElement( + new qt( + "VoiceChat", + 0.0F, + 0.0F, + 960.0F, + 495.5F, + 10.0F, + stackY((1428505557 | -1428505555) + (1428505557 & -1428505555)), + qv.TOP_LEFT + ) + ); + this.addElement( + new qg( + "Performance", + 0.0F, + 0.0F, + 960.0F, + 495.5F, + 10.0F, + stackY((-1198494712 | 1198494713) + (-1198494712 & 1198494713)), + qv.TOP_LEFT + ) + ); + this.addElement( + new pr( + "FriendInventory", + 349.0F, + 0.0F, + 960.0F, + 495.5F, + -11.5F, + 196.0F, + qv.TOP_RIGHT + ) + ); + this.addElement( + new qm("Scoreboard", 349.0F, 0.0F, 960.0F, 495.5F, -10.0F, 0.0F, qv.CENTER_RIGHT) + ); + this.addElement( + new px( + "JumpReset", + 0.0F, + 0.0F, + 960.0F, + 495.5F, + 10.0F, + stackY((241878415 | -241878411) + (241878415 & -241878411)), + qv.TOP_LEFT + ) + ); + } + + @k + public void onMediaKey(er var1) { + iw var2 = null; + int var3 = 1072521102; + + while (true) { + switch (var3) { + case -1365148172: + if (!this.elementsSetting.isEnable("Watermark")) { + var3 = -355022377; + } else { + var3 = -1055681803; + } + break; + case -1266458557: + if (isCommandDown()) { + var3 = 1890250146; + } else { + var3 = -1365148172; + } + break; + case -1055681803: + var2 = this.mediaActionOf(var1.getKeyCode()); + if (var2 == null) { + var3 = -896465526; + } else { + var3 = 611722124; + } + break; + case -896465526: + return; + case -355022377: + return; + case 611722124: + iz.getInstance().dispatch(var2); + return; + case 1072521102: + default: + if (var1.getAction() == (213816055 | -213816054) + (213816055 & -213816054)) { + var3 = 1915268526; + } else { + var3 = 1773327765; + } + break; + case 1773327765: + return; + case 1799507744: + if (var1.getKeyCode() == (381198145 | -381198075) + (381198145 & -381198075)) { + var3 = -1266458557; + } else { + var3 = -1365148172; + } + break; + case 1890250146: + ri.getInstance().open(); + return; + case 1915268526: + if (mc.gui.screen() != null) { + var3 = 1773327765; + } else { + var3 = 1799507744; + } + } + } + } + + private static boolean isCommandDown() { + int var1 = 0; + int var0 = 1720120884; + + while (true) { + switch (var0) { + case -957376918: + return (boolean)((var1) != 0); + case -225087570: + var1 = 0; + var0 = -957376918; + break; + case 260209307: + if (!InputConstants.isKeyDown(mc.getWindow(), (458661548 ^ -458661203) + ((458661548 & -458661203) << 1))) { + var0 = 1935243850; + } else { + var0 = 1129981791; + } + break; + case 1129981791: + var1 = 1; + var0 = -957376918; + break; + case 1720120884: + default: + if (!InputConstants.isKeyDown(mc.getWindow(), (851359588 | -851359247) + (851359588 & -851359247))) { + var0 = 260209307; + } else { + var0 = 1129981791; + } + break; + case 1935243850: + if (!InputConstants.isKeyDown(mc.getWindow(), (-222530670 ^ 222531013) + ((-222530670 & 222531013) << 1))) { + var0 = 2124803095; + } else { + var0 = 1129981791; + } + break; + case 2124803095: + if (InputConstants.isKeyDown(mc.getWindow(), (1698765942 | -1698765595) + (1698765942 & -1698765595))) { + var0 = 1129981791; + } else { + var0 = -225087570; + } + } + } + } + + private static boolean searchVisible() { + int var1 = 0; + int var0 = -1304348789; + + while (true) { + switch (var0) { + case -2038514976: + var1 = 0; + var0 = 1314596221; + break; + case -1934969044: + var1 = 1; + var0 = 1314596221; + break; + case -1304348789: + default: + if (!ri.getInstance().isVisible()) { + var0 = 1513233527; + } else { + var0 = -1934969044; + } + break; + case 1314596221: + return (boolean)((var1) != 0); + case 1513233527: + if (acb.isActive()) { + var0 = -1934969044; + } else { + var0 = -2038514976; + } + } + } + } + + private void renderSearchBackdrop(aru var1, float var2, float var3) { + if (searchVisible()) { + try { + ri.getInstance().renderBackdrop(var1, var2, var3); + } catch (Exception var5) { + id.error( + Cif.RENDER, + "hud element {} render failed", + ri.class.getSimpleName(), + var5 + ); + } + } + } + + private void renderSearchPanel(aru var1, float var2, float var3) { + if (searchVisible()) { + qz var4 = this.shouldRender(this.watermark) ? this.watermark.searchAnchor() : ri.fallbackAnchor(var2, 24.0F); + UVPair var5 = arz.getMouse(hudScale()); + ri var6 = ri.getInstance(); + var6.updateHover(var5.u(), var5.v()); + gt.beginBatch(); + + try { + var6.render(var1, var4, var2, var3, var5.u(), var5.v()); + } catch (Exception var11) { + id.error( + Cif.RENDER, + "hud element {} render failed", + ri.class.getSimpleName(), + var11 + ); + } finally { + gt.endBatch(); + } + } + } + + private iw mediaActionOf(int var1) { + int var2 = 2126853104; + + while (true) { + switch (var2) { + case -1491089888: + if (var1 == this.nextTrackKey.getKeyCode()) { + var2 = 996163876; + } else { + var2 = 1774620873; + } + break; + case -1378993800: + return null; + case -1270680498: + return iw.PLAY_PAUSE; + case -1148038491: + return iw.PREVIOUS; + case -952299381: + if (var1 == this.previousTrackKey.getKeyCode()) { + var2 = -1148038491; + } else { + var2 = -546989331; + } + break; + case -546989331: + if (var1 == this.playPauseKey.getKeyCode()) { + var2 = -1270680498; + } else { + var2 = -1491089888; + } + break; + case 996163876: + return iw.NEXT; + case 1774620873: + return null; + case 2126853104: + default: + if (var1 == (1737683221 ^ -1737683222) + ((1737683221 & -1737683222) << 1)) { + var2 = -1378993800; + } else { + var2 = -952299381; + } + } + } + } + + @Override + public void onEnable() { + this.init = System.currentTimeMillis(); + super.onEnable(); + } + + @Override + public JsonObject save() { + JsonObject var1 = null; + JsonObject var2 = null; + Iterator var3 = null; + qx var4 = null; + int var5 = 39208313; + + while (true) { + switch (var5) { + case 39208313: + default: + var1 = super.save(); + var2 = new JsonObject(); + var3 = this.elements.iterator(); + var5 = 469784683; + break; + case 232037162: + var4 = (qx)var3.next(); + var2.add(var4.getName(), var4.save()); + var5 = 469784683; + break; + case 410298249: + var1.add("HudElements", var2); + return var1; + case 469784683: + if (var3.hasNext()) { + var5 = 232037162; + } else { + var5 = 410298249; + } + } + } + } + + @Override + public void load(JsonObject var1) { + JsonObject var2 = null; + Iterator var3 = null; + qx var4 = null; + String var5 = null; + int var6 = -188329866; + + while (true) { + switch (var6) { + case -1440681685: + var4.load(var2.getAsJsonObject(var5)); + var6 = -192663966; + break; + case -931709456: + var4 = (qx)var3.next(); + var5 = var4.getName(); + if (var2.has(var5)) { + var6 = 1741213982; + } else { + var6 = -192663966; + } + break; + case -736535325: + if (var3.hasNext()) { + var6 = -931709456; + } else { + var6 = -48421011; + } + break; + case -192663966: + var6 = -736535325; + break; + case -188329866: + default: + super.load(var1); + this.migrateLegacyGlassDarkening(var1); + if (var1.has("HudElements")) { + var6 = 1828218610; + } else { + var6 = -48421011; + } + break; + case -48421011: + return; + case 1741213982: + if (var2.get(var5).isJsonObject()) { + var6 = -1440681685; + } else { + var6 = -192663966; + } + break; + case 1828218610: + if (var1.get("HudElements").isJsonObject()) { + var6 = 2112502869; + } else { + var6 = -48421011; + } + break; + case 2112502869: + var2 = var1.getAsJsonObject("HudElements"); + var3 = this.elements.iterator(); + var6 = -736535325; + } + } + } + + private void migrateLegacyGlassDarkening(JsonObject var1) { + JsonObject var2 = null; + float var3 = 0.0F; + int var4 = 971937983; + + while (true) { + switch (var4) { + case -925146429: + if (!var2.get("Darkening").isJsonPrimitive()) { + var4 = 1248013166; + } else { + var4 = 1200236325; + } + break; + case -33313397: + return; + case 503300262: + if (!var2.has("Darkening")) { + var4 = 1419706505; + } else { + var4 = -925146429; + } + break; + case 643845167: + if (!var1.get("Settings").isJsonObject()) { + var4 = -33313397; + } else { + var4 = 760259124; + } + break; + case 760259124: + var2 = var1.getAsJsonObject("Settings"); + if (!var2.has(this.glassTint.getName())) { + var4 = 503300262; + } else { + var4 = 1419706505; + } + break; + case 769284901: + if (var1.has("Settings")) { + var4 = 643845167; + } else { + var4 = -33313397; + } + break; + case 971937983: + default: + if (var1 != null) { + var4 = 769284901; + } else { + var4 = -33313397; + } + break; + case 1200236325: + var3 = Mth.clamp(var2.get("Darkening").getAsFloat(), 0.0F, 1.0F); + this.glassTint.setCurrent(-var3); + return; + case 1248013166: + return; + case 1419706505: + return; + } + } + } + + private void addElement(qx var1) { + var1.setToggleIndex(this.elements.size()); + this.elements.add(var1); + } + + @k + public void onRender(fr var1) { + if (!(mc.gui.screen() instanceof ChatScreen)) { + if (this.draggingElement != null) { + this.draggingElement.release(); + this.draggingElement = null; + } + + this.resizingElement = null; + this.closeAllSettings(); + } + + aru var2 = var1.getContext(); + float var3 = hudWidth(); + float var4 = hudHeight(); + boolean var5 = mc.gui.screen() instanceof ChatScreen; + this.renderSearchBackdrop(var2, var3, var4); + if (!mc.gui.hud.isHidden() && api.hudOverlaysVisible()) { + gt.beginBatch(); + + for (qx var7 : this.elements) { + if (this.shouldRender(var7)) { + var7.updatePhysics(); + float var8 = var7.getRenderScale(); + Matrix3x2fStack var9 = var2.pose(); + var9.pushMatrix(); + float var10 = var7.getRenderX() - var7.getX(); + float var11 = var7.getRenderY() - var7.getY(); + var9.translate(var10, var11); + var9.translate(var7.getX(), var7.getY()); + var9.scale(var8, var8); + var9.translate(-var7.getX(), -var7.getY()); + + try { + var7.render(var2); + } catch (Exception var19) { + id.error( + Cif.RENDER, + "hud element {} render failed", + var7.getClass().getSimpleName(), + var19 + ); + } + + var9.popMatrix(); + var7.updateEdit(var5); + if (this.draggingElement != var7) { + if (System.currentTimeMillis() - this.init < (8462320647891097906L | -8462320647891092906L) + (8462320647891097906L & -8462320647891092906L)) { + var7.windowResized(var3, var4); + } else { + var7.syncWindowSize(var3, var4); + } + } + } + } + + gt.endBatch(); + if (this.elementsSetting.isEnable("Tab List")) { + gt.beginBatch(); + + try { + this.playerList.render(var2); + } catch (Exception var17) { + id.error( + Cif.RENDER, + "hud element {} render failed", + "Tab List", + var17 + ); + } finally { + gt.endBatch(); + } + } + } + + this.renderSearchPanel(var2, var3, var4); + if (mc.gui.screen() instanceof ChatScreen) { + UVPair var20 = arz.getMouse(hudScale()); + double var21 = var20.u(); + double var22 = var20.v(); + if (this.draggingElement != null) { + this.draggingElement.set(var2, (float)var21 - this.dragOffsetX, (float)var22 - this.dragOffsetY, this, var3, var4); + } + + if (this.resizingElement != null) { + float var23 = ((float)var21 - this.resizingElement.getX()) / this.resizeBaseW; + float var12 = ((float)var22 - this.resizingElement.getY()) / this.resizeBaseH; + this.resizingElement.setScale((var23 + var12) / 2.0F); + } + + gt.beginBatch(); + + for (qx var27 : this.elements) { + if (this.shouldRender(var27)) { + int var13 = var27.isLocked() || !var27.isMouseOver(var21, var22) && var27 != this.draggingElement + ? 0: 1; + var27.renderEditOverlay( + var2, + (boolean)((var13) != 0), + (boolean)(((var27 == this.resizingElement + ? 1: (-235897148 ^ 235897148) + ((-235897148 & 235897148) << 1)) + ) != 0)); + } + } + + gt.endBatch(); + gt.beginBatch(); + + for (qx var28 : this.elements) { + if (this.shouldRender(var28) && var28.isSettingsVisible()) { + var28.renderSettings(var2); + } + } + + gt.endBatch(); + if (this.draggingElement == null && this.resizingElement == null) { + if (this.lastDragSoundTime != (581434704889377031L ^ -581434704889377031L) + ((581434704889377031L & -581434704889377031L) << 1)) { + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().stopDragAndResize(); + } + + this.lastDragSoundTime = (-1704356686417190667L | 1704356686417190667L) + (-1704356686417190667L & 1704356686417190667L); + } + } else if (System.currentTimeMillis() - this.lastDragSoundTime + > (6884062751670238657L ^ -6884062751670238537L) + ((6884062751670238657L & -6884062751670238537L) << 1)) { + if (bz.getInstance().getSoundManager() != null) { + if (this.draggingElement != null) { + bz.getInstance().getSoundManager().playDrag(1.0F); + } else { + float var26 = this.resizingElement.getScale(); + bz.getInstance().getSoundManager().playResize(var26); + } + } + + this.lastDragSoundTime = System.currentTimeMillis(); + } + } + + this.resolveCollisions(var3, var4); + } + + private void resolveCollisions(float var1, float var2) { + this.activeElements.clear(); + + for (qx var4 : this.elements) { + if (this.shouldRender(var4)) { + this.activeElements.add(var4); + } + } + + for (int var26 = 0; var26 < 3; var26++) { + for (int var27 = 0; var27 < this.activeElements.size(); var27++) { + for (int var5 = var27 + 1; var5 < this.activeElements.size(); var5++) { + qx var6 = this.activeElements.get(var27); + qx var7 = this.activeElements.get(var5); + float var8 = var6.getX(); + float var9 = var6.getY(); + float var10 = var6.scaledWidth(); + float var11 = var6.scaledHeight(); + float var12 = var7.getX(); + float var13 = var7.getY(); + float var14 = var7.scaledWidth(); + float var15 = var7.scaledHeight(); + if (var8 < var12 + var14 && var8 + var10 > var12 && var9 < var13 + var15 && var9 + var11 > var13) { + float var16 = var12 + var14 - var8; + float var17 = var8 + var10 - var12; + float var18 = var13 + var15 - var9; + float var19 = var9 + var11 - var13; + float var20 = Math.min(var16, var17); + float var21 = Math.min(var18, var19); + float var22 = 0.0F; + float var23 = 0.0F; + if (var20 < var21) { + var22 = var16 < var17 ? var16 : -var17; + } else { + var23 = var18 < var19 ? var18 : -var19; + } + + int var24 = var6 != this.draggingElement && !var6.isLocked() + ? 1: 0; + int var25 = var7 != this.draggingElement && !var7.isLocked() + ? 1: 0; + if (var24 != 0 && var25 != 0) { + var6.set(var6.getX() + var22 / 2.0F, var6.getY() + var23 / 2.0F); + var7.set(var7.getX() - var22 / 2.0F, var7.getY() - var23 / 2.0F); + } else if (var24 == 0 && var25 != 0) { + var7.set(var7.getX() - var22, var7.getY() - var23); + } else if (var24 != 0 && var25 == 0) { + var6.set(var6.getX() + var22, var6.getY() + var23); + } + } + } + } + + for (qx var29 : this.activeElements) { + var29.update(var1, var2); + } + } + } + + private boolean shouldRender(qx var1) { + int var2 = 0; + List var3 = null; + int var4 = -2107612909; + + while (true) { + switch (var4) { + case -2107612909: + default: + var2 = var1.getToggleIndex(); + var3 = this.elementsSetting.getBooleanSettings(); + if (var2 >= 0) { + var4 = -1055093087; + } else { + var4 = -75600017; + } + break; + case -1055093087: + if (var2 >= var3.size()) { + var4 = -75600017; + } else { + var4 = 2126228060; + } + break; + case -75600017: + return (boolean)(((0)) != 0); + case 2126228060: + return ((sh)var3.get(var2)).isEnabled(); + } + } + } + + public boolean isElementEnabled(String var1) { + int var2 = 1646230735; + + while (true) { + switch (var2) { + case -1090818186: + return this.elementsSetting.isEnable(var1); + case -23506750: + return (boolean)(((0)) != 0); + case 1646230735: + } + + if (!this.isEnabled()) { + var2 = -23506750; + } else { + var2 = -1090818186; + } + } + } + + @k + public void onMouse(es var1) { + UVPair var2 = null; + double var3 = 0.0; + double var5 = 0.0; + ArrayList var7 = null; + Iterator var8 = null; + qx var9 = null; + int var10 = 0; + int var12 = 0; + int var11 = 1450101942; + + while (true) { + switch (var11) { + case -2088302231: + this.resizingElement = var9; + this.resizeBaseW = Math.max(1.0F, var9.getWidth()); + this.resizeBaseH = Math.max(1.0F, var9.getHeight()); + this.closeAllSettings(); + return; + case -2088143862: + if (var9.isOverSettings(var3, var5)) { + var11 = -512814435; + } else { + var11 = -1678559577; + } + break; + case -2081315117: + this.draggingElement.release(); + this.draggingElement = null; + var11 = 1490446588; + break; + case -2030684294: + if (this.draggingElement != null) { + var11 = 1354079425; + } else { + var11 = 158665398; + } + break; + case -1983796789: + if (bz.getInstance().getSoundManager() != null) { + var11 = 1007475754; + } else { + var11 = -565795273; + } + break; + case -1976917532: + if (var1.getButton() == (-216378595 | 216378597) + (-216378595 & 216378597)) { + var11 = 357515882; + } else { + var11 = -1244227565; + } + break; + case -1945401335: + var11 = -767245536; + break; + case -1848231292: + var11 = 948853082; + break; + case -1678559577: + var11 = 1023075347; + break; + case -1613482804: + var11 = -624135; + break; + case -1454637539: + if (var9.isSettingsOpen()) { + var11 = -2088143862; + } else { + var11 = -1678559577; + } + break; + case -1425416082: + var9 = (qx)var8.next(); + if (this.shouldRender(var9)) { + var11 = -1454637539; + } else { + var11 = -1678559577; + } + break; + case -1414982108: + var8 = var7.iterator(); + var11 = 1956490215; + break; + case -1381958420: + return; + case -1378920121: + if (var9.isMouseOver(var3, var5)) { + var11 = -183650565; + } else { + var11 = 1702704735; + } + break; + case -1361706753: + var9 = (qx)var8.next(); + if (this.shouldRender(var9)) { + var11 = -145425727; + } else { + var11 = 1702704735; + } + break; + case -1244227565: + if (var1.getAction() == (-716544448 ^ 716544449) + ((-716544448 & 716544449) << 1)) { + var11 = -460768949; + } else { + var11 = -1164733269; + } + break; + case -1182927325: + return; + case -1164733269: + if (var1.getAction() == 0) { + var11 = -2030684294; + } else { + var11 = -1381958420; + } + break; + case -1127861507: + return; + case -837973647: + var12 = 0; + var11 = 164088985; + break; + case -799462749: + var11 = 1956490215; + break; + case -784185121: + var9 = (qx)var8.next(); + if (this.shouldRender(var9)) { + var11 = 976308528; + } else { + var11 = -799462749; + } + break; + case -774662694: + var2 = arz.getMouse(hudScale()); + var3 = var2.u(); + var5 = var2.v(); + var7 = new ArrayList<>(this.elements); + Collections.reverse(var7); + if (var1.getAction() == (-1263651723 | 1263651724) + (-1263651723 & 1263651724)) { + var11 = 1414257162; + } else { + var11 = 2145157115; + } + break; + case -767245536: + if (var8.hasNext()) { + var11 = 309703184; + } else { + var11 = -550062025; + } + break; + case -656604488: + var9.resetToDefault(); + if (bz.getInstance().getSoundManager() != null) { + var11 = -266061636; + } else { + var11 = -1182927325; + } + break; + case -565795273: + return; + case -550062025: + return; + case -512814435: + var9.settingsMouseClicked(var3, var5, var1.getButton()); + return; + case -460768949: + if (var1.getButton() == 0) { + var11 = -1414982108; + } else { + var11 = -1164733269; + } + break; + case -455037570: + if (this.draggingElement != null) { + var11 = -2081315117; + } else { + var11 = 1490446588; + } + break; + case -389629322: + if (var9.hasSettings()) { + var11 = 884752667; + } else { + var11 = -1945401335; + } + break; + case -359184274: + var8 = var7.iterator(); + var11 = -767245536; + break; + case -266061636: + bz.getInstance().getSoundManager().playClick(); + var11 = -1182927325; + break; + case -183650565: + this.draggingElement = var9; + this.dragOffsetX = (float)var3 - var9.getX(); + this.dragOffsetY = (float)var5 - var9.getY(); + var11 = 620577878; + break; + case -145425727: + if (!var9.isLocked()) { + var11 = -1378920121; + } else { + var11 = 1702704735; + } + break; + case -39825056: + if (!var9.isSettingsOpen()) { + var11 = -30893896; + } else { + var11 = -837973647; + } + break; + case -30893896: + var12 = 1; + var11 = 164088985; + break; + case -624135: + if (var8.hasNext()) { + var11 = 363733782; + } else { + var11 = -1127861507; + } + break; + case 38107259: + var9 = (qx)var8.next(); + if (this.shouldRender(var9)) { + var11 = 1053388104; + } else { + var11 = -1848231292; + } + break; + case 158665398: + this.resizingElement = null; + var11 = -1381958420; + break; + case 164088985: + var10 = var12; + this.closeAllSettings(); + var9.setSettingsOpen((boolean)((var10) != 0)); + return; + case 264626470: + if (var8.hasNext()) { + var11 = -1361706753; + } else { + var11 = 620577878; + } + break; + case 309703184: + var9 = (qx)var8.next(); + if (this.shouldRender(var9)) { + var11 = -389629322; + } else { + var11 = -1945401335; + } + break; + case 357515882: + var8 = var7.iterator(); + var11 = -624135; + break; + case 363733782: + var9 = (qx)var8.next(); + if (this.shouldRender(var9)) { + var11 = 1126547675; + } else { + var11 = -1613482804; + } + break; + case 547445440: + var8 = var7.iterator(); + var11 = 1023075347; + break; + case 620577878: + var11 = -1381958420; + break; + case 760259506: + this.closeAllSettings(); + var8 = var7.iterator(); + var11 = 264626470; + break; + case 884752667: + if (var9.isMouseOver(var3, var5)) { + var11 = -39825056; + } else { + var11 = -1945401335; + } + break; + case 901560706: + var8 = var7.iterator(); + var11 = 948853082; + break; + case 948853082: + if (var8.hasNext()) { + var11 = 38107259; + } else { + var11 = 547445440; + } + break; + case 976308528: + if (var9.handleHudClick(var3, var5, var1.getButton())) { + var11 = -1983796789; + } else { + var11 = -799462749; + } + break; + case 1007475754: + bz.getInstance().getSoundManager().playClick(); + var11 = -565795273; + break; + case 1023075347: + if (var8.hasNext()) { + var11 = -1425416082; + } else { + var11 = 760259506; + } + break; + case 1035250114: + if (var9.isOverResizeHandle(var3, var5)) { + var11 = -2088302231; + } else { + var11 = -1848231292; + } + break; + case 1053388104: + if (!var9.isLocked()) { + var11 = 1035250114; + } else { + var11 = -1848231292; + } + break; + case 1126547675: + if (!var9.isLocked()) { + var11 = 1265740199; + } else { + var11 = -1613482804; + } + break; + case 1265740199: + if (var9.isMouseOver(var3, var5)) { + var11 = -656604488; + } else { + var11 = -1613482804; + } + break; + case 1354079425: + this.draggingElement.release(); + this.draggingElement = null; + var11 = 158665398; + break; + case 1414257162: + if (var1.getButton() == (-951987863 ^ 951987864) + ((-951987863 & 951987864) << 1)) { + var11 = -359184274; + } else { + var11 = 2145157115; + } + break; + case 1450101942: + default: + if (!(mc.gui.screen() instanceof ChatScreen)) { + var11 = -455037570; + } else { + var11 = -774662694; + } + break; + case 1490446588: + this.resizingElement = null; + this.closeAllSettings(); + return; + case 1702704735: + var11 = 264626470; + break; + case 1956490215: + if (var8.hasNext()) { + var11 = -784185121; + } else { + var11 = 901560706; + } + break; + case 2145157115: + if (var1.getAction() == (1931348542 ^ -1931348541) + ((1931348542 & -1931348541) << 1)) { + var11 = -1976917532; + } else { + var11 = -1244227565; + } + } + } + } + + private void closeAllSettings() { + Iterator var1 = null; + qx var2 = null; + int var3 = -2096906190; + + while (true) { + switch (var3) { + case -2096906190: + default: + var1 = this.elements.iterator(); + var3 = 1184228738; + break; + case -1629558997: + return; + case 1184228738: + if (var1.hasNext()) { + var3 = 2094258518; + } else { + var3 = -1629558997; + } + break; + case 2094258518: + var2 = (qx)var1.next(); + var2.setSettingsOpen((boolean)((((1483956331 ^ -1483956331) + ((1483956331 & -1483956331) << 1))) != 0)); + var3 = 1184228738; + } + } + } + + public float getCustomScale() { + return this.scale.getCurrent(); + } + + public float getCustomScaleMin() { + return this.scale.getMin(); + } + + public float getCustomScaleMax() { + return this.scale.getMax(); + } + + public void setCustomScale(float var1) { + this.scale.setCurrent(Math.max(this.scale.getMin(), Math.min(this.scale.getMax(), var1))); + } + + public Vector2f getNearest(float var1, float var2) { + float var3 = Float.MAX_VALUE; + float var4 = Float.MAX_VALUE; + float var5 = 2.0F; + Vector2f var6 = new Vector2f(-1.0F, -1.0F); + + for (qx var8 : this.elements) { + if (!var8.equals(this.draggingElement)) { + float var9 = var8.getX(); + float var10 = var8.getY(); + float var11 = var8.getX() + var8.scaledWidth(); + float var12 = var8.getY() + var8.scaledHeight(); + float var13 = var8.getX() + var8.scaledWidth() / 2.0F; + float var14 = var8.getY() + var8.scaledHeight() / 2.0F; + float var15 = this.getNearest(var9, var11, var13, var1); + float var16 = this.getNearest(var10, var12, var14, var2); + float var17 = aqj.goodSubtract(var15, var1); + float var18 = aqj.goodSubtract(var16, var2); + if (var17 < var3) { + var3 = var17; + if (var3 < var5) { + var6.x = var15; + } + } + + if (var18 < var4) { + var4 = var18; + if (var4 < var5) { + var6.y = var16; + } + } + } + } + + if (var6.x == -1.0F || var6.y == -1.0F) { + float var19 = mc.getWindow().getGuiScaledWidth() / 2.0F; + float var20 = mc.getWindow().getGuiScaledHeight() / 2.0F; + float var21 = this.getNearest(var19, var19, var19, var1); + float var22 = this.getNearest(var20, var20, var20, var2); + float var23 = aqj.goodSubtract(var21, var1); + float var24 = aqj.goodSubtract(var22, var2); + if (var23 < var3 && var23 < var5) { + var6.x = var21; + } + + if (var24 < var4 && var24 < var5) { + var6.y = var22; + } + } + + return var6; + } + + public float getNearest(float var1, float var2, float var3, float var4) { + float var5 = 0.0F; + int var6 = 456084595; + + while (true) { + switch (var6) { + case -1495140134: + if (aqj.goodSubtract(var3, var4) < aqj.goodSubtract(var5, var4)) { + var6 = -1190986793; + } else { + var6 = -718102803; + } + break; + case -1190986793: + var5 = var3; + var6 = -718102803; + break; + case -859056305: + var5 = var2; + var6 = -1495140134; + break; + case -718102803: + return var5; + case 456084595: + default: + var5 = var1; + if (aqj.goodSubtract(var2, var4) < aqj.goodSubtract(var5, var4)) { + var6 = -859056305; + } else { + var6 = -1495140134; + } + } + } + } + + public boolean isEnableScoreBar() { + return this.elementsSetting.isEnable("Scoreboard"); + } + + public boolean isEnablePotions() { + return this.elementsSetting.getBooleanSettings().get(1).isEnabled(); + } + + public boolean isEnableHotBar() { + return this.elementsSetting.isEnable("HotBar"); + } + + public boolean isShimmer() { + return this.glossMode.is("Shimmer"); + } + + private static sg buildOpenEffectSetting() { + sg var0 = null; + yb[] var1 = null; + int var2 = 0; + int var3 = 0; + yb var4 = null; + int var5 = -213921529; + + while (true) { + switch (var5) { + case -633461015: + if (var3 < var2) { + var5 = 192371614; + } else { + var5 = 2016011340; + } + break; + case -213921529: + default: + var0 = new sg("Open Effect", yb.labels()); + var1 = yb.values(); + var2 = var1.length; + var3 = 0; + var5 = -633461015; + break; + case 192371614: + var4 = var1[var3]; + var0.describe(var4.getLabel(), var4.getDescription()); + var3++; + var5 = -633461015; + break; + case 2016011340: + return var0.description( + "Animation played when the ClickGUI opens and closes." + ); + } + } + } + + public yb getMenuOpenEffect() { + sf var1 = this.openEffect.getValue(); + if (var1 != this.resolvedOpenEffectValue) { + this.resolvedOpenEffectValue = var1; + this.resolvedOpenEffect = var1 == null ? yb.DEFAULT : yb.byLabel(var1.getName()); + } + + return this.resolvedOpenEffect; + } + + public boolean isLiquidGlass() { + return this.liquidGlass.isEnabled(); + } + + public void toggleLiquidGlass() { + this.liquidGlass + .setEnabled( + (boolean)(((!this.liquidGlass.isEnabled() + ? 1: (-1768729667 | 1768729667) + (-1768729667 & 1768729667)) + ) != 0)); + } + + public float advanceLiquidGlassProgress() { + this.liquidGlassAnimation.animateTo(this.liquidGlass.isEnabled() ? 1.0F : 0.0F); + return this.liquidGlassAnimation.update(); + } + + public float getFrost() { + return this.frost.getCurrent(); + } + + public float getRefraction() { + return this.refraction.getCurrent(); + } + + public float getGlassTint() { + return this.glassTint.getCurrent(); + } + + public float advanceTextDarkness() { + this.textDarknessAnimation.animateTo(this.glassTint.getCurrent() > 0.0F ? 1.0F : 0.0F); + return this.textDarknessAnimation.update(); + } + + public boolean isEnableTab() { + return this.elementsSetting.isEnable("Tab List"); + } + + @k + public void resize(fa var1) { + float var2 = 0.0F; + float var3 = 0.0F; + Iterator var4 = null; + qx var5 = null; + int var6 = 667084299; + + while (true) { + switch (var6) { + case -1593945182: + return; + case -301572604: + if (var4.hasNext()) { + var6 = 329023018; + } else { + var6 = -1593945182; + } + break; + case 329023018: + var5 = (qx)var4.next(); + var5.windowResized(var2, var3); + var6 = -301572604; + break; + case 667084299: + default: + var2 = hudWidth(); + var3 = hudHeight(); + var4 = this.elements.iterator(); + var6 = -301572604; + } + } + } + + @k + public void update(fl var1) { + Iterator var2 = null; + qx var3 = null; + int var4 = 1122978019; + + while (true) { + switch (var4) { + case -1949442075: + var3 = (qx)var2.next(); + var3.tick(); + var4 = 298919621; + break; + case -685028049: + arh.glowCache.values().removeIf(var0 -> { + int var1x = 1250790038; + + while (true) { + switch (var1x) { + case -1528580026: + var0.destroy(); + return (boolean)(((1)) != 0); + case 426182513: + return (boolean)(((0)) != 0); + case 1250790038: + } + + if (var0.tick()) { + var1x = -1528580026; + } else { + var1x = 426182513; + } + } + }); + var4 = 325991535; + break; + case 298919621: + if (var2.hasNext()) { + var4 = -1949442075; + } else { + var4 = 1371221263; + } + break; + case 325991535: + var2 = this.elements.iterator(); + var4 = 298919621; + break; + case 1122978019: + default: + if (arh.glowCache.size() > (-334227476 | 334227876) + (-334227476 & 334227876)) { + var4 = -685028049; + } else { + var4 = 325991535; + } + break; + case 1371221263: + return; + } + } + } + + public boolean isAutoScroll() { + return this.autoScroll.isEnabled(); + } + + public boolean isBlur() { + return this.blur.isEnabled(); + } + + public float getBlurFactor() { + return this.blurAnimation.update(this.blur.isEnabled() ? 1.0F : 0.0F); + } + + @k + public void screenEvent(eu var1) { + int var2 = -368470987; + + while (true) { + switch (var2) { + case -1736873485: + this.init = System.currentTimeMillis(); + var2 = -490606869; + break; + case -490606869: + return; + case -368470987: + default: + if (var1.getScreen() instanceof ChatScreen) { + var2 = -1736873485; + } else { + var2 = -490606869; + } + } + } + } +} diff --git a/src/main/java/defpackage/vn.java b/src/main/java/defpackage/vn.java new file mode 100644 index 0000000..e69d755 --- /dev/null +++ b/src/main/java/defpackage/vn.java @@ -0,0 +1,6 @@ +package defpackage; + +import net.minecraft.world.phys.Vec3; + +record vn(Vec3 center, long start) { +} diff --git a/src/main/java/defpackage/vo.java b/src/main/java/defpackage/vo.java new file mode 100644 index 0000000..261d704 --- /dev/null +++ b/src/main/java/defpackage/vo.java @@ -0,0 +1,6 @@ +package defpackage; + +import net.minecraft.core.BlockPos; + +record vo(BlockPos pos, float alpha) { +} diff --git a/src/main/java/defpackage/vp.java b/src/main/java/defpackage/vp.java new file mode 100644 index 0000000..2d30ed9 --- /dev/null +++ b/src/main/java/defpackage/vp.java @@ -0,0 +1,1521 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.DepthStencilState; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet; +import com.mojang.blaze3d.platform.BlendFactor; +import com.mojang.blaze3d.platform.CompareOp; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.function.Supplier; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderSetup; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.Shapes; +import org.joml.Matrix4f; + +@rn(name = "JumpCircles", description = "Renders a splash effect on jump", category = rl.RENDER) +public final class vp extends rm { + private static final double TAU = Math.PI * 2; + private static final float FADE_PHASE_START = 0.55F; + private static final String MODE_CIRCLE = "Circle"; + private static final String MODE_BLOCK_WAVE = "Block wave"; + private static final String MODE_TEXTURE = "Texture"; + private static final String MODE_GLOW_RING = "Glow ring"; + private static final String TEXTURE_STORM = "Storm"; + private static final String TEXTURE_POOL = "Pool"; + private static final String TEXTURE_RINGS = "Rings"; + private static final String TEXTURE_EXPLOSION = "Explosion"; + private static final Map TEXTURE_PRESETS; + private static final Identifier RING_TEXTURE = Identifier.fromNamespaceAndPath( + "evolution", "textures/jumpcircles/ring.png" + ); + private static final long RING_GROW_MS = 500L; + private static final long RING_HOLD_MS = 800L; + private static final long RING_FADE_MS = 500L; + private static final long RING_LIFETIME_MS = 1300L; + private static final float RING_EXIT_SCALE = 2.0F; + private static final int RING_GLOW_LAYERS = 20; + private static final float RING_GLOW_HEIGHT = 0.15F; + private static final float RING_GLOW_EXPAND = 0.25F; + private static final float RING_GLOW_ALPHA = 0.15F; + private static final float RING_GLOW_ALPHA_CUTOFF = 0.004F; + private static final float RING_PULSE_DIM = 0.75F; + private static final long RING_PULSE_STEP_MS = 10L; + private static final int RING_PULSE_HALF_TURN = 180; + private static final int RING_PULSE_FULL_TURN = 360; + private static final int[] RING_CORNER_PHASES; + private static final int RING_CORNERS; + private static final float TEXTURE_START_SIZE = 0.15F; + private static final float TEXTURE_HALO_SCALE = 1.22F; + private static final float TEXTURE_HALO_ALPHA = 0.45F; + private static final float TEXTURE_GROUND_OFFSET = 0.04F; + private static final float TEXTURE_LAYER_OFFSET = 0.002F; + private static final BlendFunction ADDITIVE = new BlendFunction(BlendFactor.SRC_ALPHA, BlendFactor.ONE); + private static final RenderPipeline TEXTURE_PIPELINE; + private static final Map TEXTURE_LAYERS = new HashMap<>(); + private final sg modeSetting; + private final sm ringSizeSetting; + private final ru ringGlowSetting; + private final sm radiusSetting; + private final sm durationSetting; + private final sm ringWidthSetting; + private final sm waveRadiusSetting; + private final sm waveSpeedSetting; + private final sm waveThicknessSetting; + private final ru fillSetting; + private final sm fillAlphaSetting; + private final ru outlineSetting; + private final sm lineWidthSetting; + private final sg textureSetting; + private final sm textureSizeSetting; + private final sm textureSpinSetting; + private final sm textureDurationSetting; + private final ru clientColorSetting; + private final rx colorSetting; + private final List circles; + private final List waves; + private final List textures; + private final List rings; + private final int[] ringCornerColors; + private boolean wasOnGround; + private double groundY; + public static final vp INSTANCE = new vp(); + + private static Identifier[] layers(String... var0) { + Identifier[] var1 = null; + int var2 = 0; + int var3 = 442908979; + + while (true) { + switch (var3) { + case -1284708680: + if (var2 < var0.length) { + var3 = 1404108844; + } else { + var3 = -337336122; + } + break; + case -337336122: + return var1; + case 442908979: + default: + var1 = new Identifier[var0.length]; + var2 = 0; + var3 = -1284708680; + break; + case 1404108844: + var1[var2] = Identifier.fromNamespaceAndPath( + "evolution", "textures/jumpcircles/" + var0[var2] + ".png" + ); + var2++; + var3 = -1284708680; + } + } + } + + private static RenderType textureLayer(Identifier var0) { + return TEXTURE_LAYERS.computeIfAbsent( + var0, + var0x -> RenderType.create( + "evolution_jumpcircles_textured", + RenderSetup.builder(TEXTURE_PIPELINE) + .withTexture("Sampler0", var0x) + .createRenderSetup() + ) + ); + } + + private vp() { + String var10003 = "Mode"; + String[] var10004 = new String[4]; + var10004[0] = "Glow ring"; + var10004[1] = "Circle"; + var10004[2] = "Block wave"; + var10004[3] = "Texture"; + this.modeSetting = new sg(var10003, var10004) + .describe( + "Glow ring", + "Glowing ring with a light column" + ) + .describe( + "Circle", + "Expanding flat circle" + ) + .describe( + "Block wave", + "Minecraft block-style wave" + ) + .describe( + "Texture", + "Spinning textured ground circle" + ) + .description("Visual style of the jump circles"); + this.ringSizeSetting = new sm( + "Ring size", + 1.0F, + 0.2F, + 3.0F, + 0.1F, + () -> this.modeSetting.is("Glow ring") + ) + .description("Diameter the glow ring grows to"); + this.ringGlowSetting = new ru( + "Ring glow", + (boolean)(((1)) != 0), + () -> this.modeSetting.is("Glow ring") + ) + .description( + "Stacks a soft light column above the ring" + ); + this.radiusSetting = new sm( + "Radius", + 1.0F, + 0.5F, + 3.0F, + 0.1F, + () -> this.modeSetting.is("Circle") + ) + .description( + "Maximum radius the circle expands to" + ); + this.durationSetting = new sm( + "Duration", + 0.5F, + 0.2F, + 2.0F, + 0.1F, + () -> this.modeSetting.is("Circle") + ) + .description("How long the circle animation lasts"); + this.ringWidthSetting = new sm( + "Ring width", + 0.15F, + 0.02F, + 1.0F, + 0.01F, + () -> this.modeSetting.is("Circle") + ) + .description( + "Thickness of the ring for circle mode" + ); + this.waveRadiusSetting = new sm( + "Wave radius", + 10.0F, + 4.0F, + 30.0F, + 1.0F, + () -> this.modeSetting.is("Block wave") + ) + .description( + "Maximum radius of the block wave" + ); + this.waveSpeedSetting = new sm( + "Wave speed", + 8.0F, + 1.0F, + 25.0F, + 0.5F, + () -> this.modeSetting.is("Block wave") + ) + .description( + "Expansion speed of the block wave" + ); + this.waveThicknessSetting = new sm( + "Ring thickness", + 1.5F, + 0.5F, + 4.0F, + 0.1F, + () -> this.modeSetting.is("Block wave") + ) + .description("Thickness of the block wave ring"); + this.fillSetting = new ru( + "Fill", + (boolean)(((1)) != 0), + () -> this.modeSetting.is("Block wave") + ) + .description("Fill the inside of the wave"); + this.fillAlphaSetting = new sm( + "Fill opacity", 0.35F, 0.05F, 1.0F, 0.05F, () -> { + int var2x = 0; + int var1x = 1896018297; + + while (true) { + switch (var1x) { + case -2010914366: + var2x = 0; + var1x = 1275158805; + break; + case 292613600: + if (this.fillSetting.isEnabled()) { + var1x = 842157655; + } else { + var1x = -2010914366; + } + break; + case 842157655: + var2x = 1; + var1x = 1275158805; + break; + case 1275158805: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 1896018297: + default: + if (this.modeSetting.is("Block wave")) { + var1x = 292613600; + } else { + var1x = -2010914366; + } + } + } + } + ) + .description("Transparency of the wave fill"); + this.outlineSetting = new ru( + "Outline", + (boolean)(((1)) != 0), + () -> this.modeSetting.is("Block wave") + ) + .description( + "Draw an outline on the block wave" + ); + this.lineWidthSetting = new sm("Line width", 2.0F, 0.5F, 5.0F, 0.5F, () -> { + int var2x = 0; + int var1x = -480424635; + + while (true) { + switch (var1x) { + case -2147329292: + var2x = 0; + var1x = 891298406; + break; + case -1789394080: + var2x = 1; + var1x = 891298406; + break; + case -480424635: + default: + if (this.modeSetting.is("Block wave")) { + var1x = 283711313; + } else { + var1x = -2147329292; + } + break; + case 283711313: + if (this.outlineSetting.isEnabled()) { + var1x = -1789394080; + } else { + var1x = -2147329292; + } + break; + case 891298406: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + }).description("Thickness of the wave outline"); + var10003 = "Texture"; + Supplier var2 = () -> this.modeSetting.is("Texture"); + String[] var10005 = new String[4]; + var10005[0] = "Storm"; + var10005[1] = "Pool"; + var10005[2] = "Rings"; + var10005[3] = "Explosion"; + this.textureSetting = new sg(var10003, var2, var10005) + .describe( + "Storm", + "Swirling storm vortex" + ) + .describe( + "Pool", + "Glowing whirlpool" + ) + .describe( + "Rings", + "Concentric magic rings" + ) + .describe( + "Explosion", + "Shockwave burst" + ) + .description("Texture set drawn on the ground"); + this.textureSizeSetting = new sm( + "Texture size", + 1.4F, + 0.5F, + 3.0F, + 0.1F, + () -> this.modeSetting.is("Texture") + ) + .description( + "Radius the textured circle grows to" + ); + this.textureSpinSetting = new sm( + "Texture spin", + 4.8F, + 0.0F, + 8.0F, + 0.1F, + () -> this.modeSetting.is("Texture") + ) + .description( + "Rotation speed of the textured circle" + ); + this.textureDurationSetting = new sm( + "Texture duration", + 0.65F, + 0.25F, + 1.5F, + 0.05F, + () -> this.modeSetting.is("Texture") + ) + .description("How long the textured circle lasts"); + this.clientColorSetting = new ru( + "Client color", + (boolean)((((-1650168978 ^ 1650168979) + ((-1650168978 & 1650168979) << 1)) + ) != 0)) + .description("Use the global client color"); + this.colorSetting = new rx( + "Color", bz.getInstance().getThemeManager().getCurrentTheme().getColor(), () -> { + int var2x = 0; + int var1x = 541494971; + + while (true) { + switch (var1x) { + case -1959750159: + var2x = 0; + var1x = 1732679297; + break; + case 541494971: + default: + if (!this.clientColorSetting.isEnabled()) { + var1x = 977104542; + } else { + var1x = -1959750159; + } + break; + case 977104542: + var2x = 1; + var1x = 1732679297; + break; + case 1732679297: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description( + "Custom color for the jump circles" + ); + this.circles = new CopyOnWriteArrayList<>(); + this.waves = new CopyOnWriteArrayList<>(); + this.textures = new CopyOnWriteArrayList<>(); + this.rings = new CopyOnWriteArrayList<>(); + this.ringCornerColors = new int[RING_CORNERS]; + } + + @Override + public void onEnable() { + super.onEnable(); + this.clearEffects(); + this.wasOnGround = (boolean)(((0)) != 0); + } + + @Override + public void onDisable() { + super.onDisable(); + this.clearEffects(); + } + + private void clearEffects() { + this.circles.clear(); + this.waves.clear(); + this.textures.clear(); + this.rings.clear(); + } + + public void onWorldRender(LevelRenderContext var1) { + PoseStack var2 = null; + SubmitNodeCollector var3 = null; + int var4 = 0; + Vec3 var5 = null; + Object var6 = null; + int var7 = 1730720049; + + while (true) { + switch (var7) { + case -1003614373: + var5 = new Vec3(mc.player.getX(), this.groundY, mc.player.getZ()); + var6 = new vn(var5, System.currentTimeMillis()); + this.targetList().add((vn)var6); + var7 = 1890582369; + break; + case -983951138: + this.groundY = mc.player.getY(); + var7 = 1890582369; + break; + case -402523705: + if (mc.level == null) { + var7 = 1706394881; + } else { + var7 = 695610598; + } + break; + case -197440501: + var4 = (mc.player.onGround()) ? 1 : 0; + if (var4 != 0) { + var7 = -983951138; + } else { + var7 = 563593317; + } + break; + case 118345201: + return; + case 563593317: + if (this.wasOnGround) { + var7 = 1361780928; + } else { + var7 = 1890582369; + } + break; + case 695610598: + var2 = var1.poseStack(); + var3 = var1.submitNodeCollector(); + if (var2 != null) { + var7 = 1329453593; + } else { + var7 = 118345201; + } + break; + case 1226106507: + if (mc.player != null) { + var7 = -402523705; + } else { + var7 = 1706394881; + } + break; + case 1329453593: + if (var3 == null) { + var7 = 118345201; + } else { + var7 = -197440501; + } + break; + case 1361780928: + if (mc.player.getDeltaMovement().y > 0.0) { + var7 = -1003614373; + } else { + var7 = 1890582369; + } + break; + case 1706394881: + return; + case 1730720049: + default: + if (this.isEnabled()) { + var7 = 1226106507; + } else { + var7 = 1706394881; + } + break; + case 1890582369: + this.wasOnGround = (boolean)((var4) != 0); + var5 = mc.getEntityRenderDispatcher().camera.position(); + this.renderCircles(var2, var3, var5); + this.renderWaves(var2, var3, var5); + this.renderTextures(var3, var2, var5); + this.renderRings(var3, var2, var5); + return; + } + } + } + + private List targetList() { + List var2 = null; + int var1 = 210935810; + + while (true) { + switch (var1) { + case -277204590: + if (this.modeSetting.is("Texture")) { + var1 = 503766920; + } else { + var1 = 309735596; + } + break; + case 210935810: + default: + if (this.modeSetting.is("Glow ring")) { + var1 = 1300075472; + } else { + var1 = -277204590; + } + break; + case 309735596: + if (this.modeSetting.is("Circle")) { + var1 = 1351887268; + } else { + var1 = 1951469671; + } + break; + case 503766920: + return this.textures; + case 1300075472: + return this.rings; + case 1351887268: + var2 = this.circles; + var1 = 1548727698; + break; + case 1548727698: + return var2; + case 1951469671: + var2 = this.waves; + var1 = 1548727698; + } + } + } + + private int baseColor() { + int var1 = 0; + int var3 = 0; + int var2 = -2029883471; + + while (true) { + switch (var2) { + case -2029883471: + default: + if (this.clientColorSetting.isEnabled()) { + var2 = 1791834235; + } else { + var2 = -430715974; + } + break; + case -430715974: + var3 = this.colorSetting.getIntColor(); + var2 = 19347068; + break; + case 19347068: + var1 = var3; + return var1 & 16777215; + case 1791834235: + var3 = bz.getInstance().getThemeManager().getCurrentTheme().getColor().getRGB(); + var2 = 19347068; + } + } + } + + private int accentColor() { + int var1 = -546384839; + + while (true) { + switch (var1) { + case -1948674824: + return bz.getInstance().getThemeManager().getCurrentTheme().getSecondColor().getRGB() & 16777215; + case -546384839: + default: + if (!this.clientColorSetting.isEnabled()) { + var1 = -235881071; + } else { + var1 = -1948674824; + } + break; + case -235881071: + return this.baseColor(); + } + } + } + + private static int withAlpha(int var0, float var1) { + return Mth.clamp( + Math.round(var1 * 255.0F), + 0, + (-439948786 ^ 439949041) + ((-439948786 & 439949041) << 1) + ) + << (659130099 | -659130075) + (659130099 & -659130075) + | var0; + } + + private void renderCircles(PoseStack var1, SubmitNodeCollector var2, Vec3 var3) { + int var4 = 0; + float var5 = 0.0F; + float var6 = 0.0F; + long var7 = (-4685720235875303100L | 4685720235875303100L) + (-4685720235875303100L & 4685720235875303100L); + long var9 = (5360062815781018177L ^ -5360062815781018177L) + ((5360062815781018177L & -5360062815781018177L) << 1); + int var11 = 0; + int var12 = -1952018086; + + while (true) { + switch (var12) { + case -1952018086: + default: + if (this.circles.isEmpty()) { + var12 = 138281819; + } else { + var12 = 1615599314; + } + break; + case 138281819: + return; + case 1353796141: + var2.submitCustomGeometry(var1, arj.positionColor(), (var10, var11x) -> { + Iterator var12x = null; + vn var13 = null; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + int var17 = 0; + double var18 = 0.0; + int var20 = 0; + double var21 = 0.0; + double var23 = 0.0; + int var25 = -1788623750; + + while (true) { + switch (var25) { + case -2010748483: + var13 = (vn)var12x.next(); + var14 = (float)(var9 - var13.start()) / (float)var7; + if (var14 >= 1.0F) { + var25 = -247346042; + } else { + var25 = -752710959; + } + break; + case -1788623750: + default: + var12x = this.circles.iterator(); + var25 = 1450796628; + break; + case -1465723733: + var25 = 1450796628; + break; + case -1444498963: + if (var20 < var11) { + var25 = -33032590; + } else { + var25 = -1465723733; + } + break; + case -752710959: + var15 = de.EXPO_OUT.ease(var14, 0.0F, 1.0F, 1.0F) * var5; + var16 = Math.max(0.0F, var15 - var6); + var17 = withAlpha(var4, 1.0F - var14); + var18 = var13.center().y + 0.02 - var3.y; + var20 = 0; + var25 = -1444498963; + break; + case -479195296: + return; + case -247346042: + var25 = 1450796628; + break; + case -33032590: + var21 = (double)var20 / var11 * Math.PI * 2.0; + var23 = (double)(var20 + (1456913754 | -1456913753) + (1456913754 & -1456913753)) / var11 * Math.PI * 2.0; + this.ringVertex(var11x, var10, var13.center(), var3, var21, var16, var18, var17); + this.ringVertex(var11x, var10, var13.center(), var3, var21, var15, var18, var17); + this.ringVertex(var11x, var10, var13.center(), var3, var23, var15, var18, var17); + this.ringVertex(var11x, var10, var13.center(), var3, var23, var16, var18, var17); + var20++; + var25 = -1444498963; + break; + case 1450796628: + if (var12x.hasNext()) { + var25 = -2010748483; + } else { + var25 = -479195296; + } + } + } + }); + return; + case 1615599314: + var4 = this.baseColor(); + var5 = this.radiusSetting.getCurrent(); + var6 = this.ringWidthSetting.getCurrent(); + var7 = (long)(this.durationSetting.getCurrent() * 1000.0F); + var9 = System.currentTimeMillis(); + var11 = 48; + this.circles.removeIf(var4x -> { + int var6x = 0; + int var5x = 391262407; + + while (true) { + switch (var5x) { + case -1627447932: + return (boolean)((var6x) != 0); + case -83806129: + var6x = 0; + var5x = -1627447932; + break; + case 276470125: + var6x = 1; + var5x = -1627447932; + break; + case 391262407: + default: + if ((float)(var9 - var4x.start()) / (float)var7 >= 1.0F) { + var5x = 276470125; + } else { + var5x = -83806129; + } + } + } + }); + if (this.circles.isEmpty()) { + var12 = 2051935060; + } else { + var12 = 1353796141; + } + break; + case 2051935060: + return; + } + } + } + + private void ringVertex(VertexConsumer var1, Pose var2, Vec3 var3, Vec3 var4, double var5, double var7, double var9, int var11) { + double var12 = var3.x + Math.cos(var5) * var7 - var4.x; + double var14 = var3.z + Math.sin(var5) * var7 - var4.z; + var1.addVertex(var2, (float)var12, (float)var9, (float)var14).setColor(var11); + } + + private void renderWaves(PoseStack var1, SubmitNodeCollector var2, Vec3 var3) { + if (!this.waves.isEmpty()) { + int var4 = this.baseColor(); + float var5 = this.waveRadiusSetting.getCurrent(); + float var6 = this.waveSpeedSetting.getCurrent(); + float var7 = this.waveThicknessSetting.getCurrent(); + boolean var8 = this.fillSetting.isEnabled(); + boolean var9 = this.outlineSetting.isEnabled(); + float var10 = this.fillAlphaSetting.getCurrent(); + float var11 = this.lineWidthSetting.getCurrent(); + long var12 = System.currentTimeMillis(); + ArrayList var14 = new ArrayList(); + + for (vn var16 : this.waves) { + float var17 = (float)(var12 - var16.start()) / 1000.0F * var6; + float var18 = Mth.clamp(1.0F - var17 / var5, 0.0F, 1.0F); + if (!(var17 - var7 > var5) && !(var18 <= 0.01F)) { + float var19 = Math.max(0.0F, var17 - var7); + int var20 = Mth.floor(var16.center().x); + int var21 = Mth.floor(var16.center().y); + int var22 = Mth.floor(var16.center().z); + int var23 = Mth.ceil(var17); + + for (int var24 = -var23; var24 <= var23; var24++) { + for (int var25 = -var23; var25 <= var23; var25++) { + double var26 = var20 + var24 + 0.5 - var16.center().x; + double var28 = var22 + var25 + 0.5 - var16.center().z; + double var30 = Math.sqrt(var26 * var26 + var28 * var28); + if (!(var30 < var19) && !(var30 > var17)) { + for (int var32 = 3; + var32 >= -3; + var32-- + ) { + BlockPos var33 = new BlockPos(var20 + var24, var21 + var32, var22 + var25); + BlockState var34 = mc.level.getBlockState(var33); + if (!var34.isAir() && mc.level.getBlockState(var33.above()).isAir() && !var34.getCollisionShape(mc.level, var33).isEmpty()) { + float var35 = var7 > 0.0F ? 1.0F - Math.abs(((float)var30 - var19) / var7 - 0.5F) * 2.0F : 1.0F; + var14.add(new vo(var33, var18 * Math.max(0.1F, var35))); + break; + } + } + } + } + } + } else { + this.waves.remove(var16); + } + } + + if (!var14.isEmpty()) { + if (var8) { + var2.submitCustomGeometry(var1, arj.positionColor(), (var5x, var6x) -> { + Iterator var7x = null; + vo var8x = null; + int var9x = 1506690547; + + while (true) { + switch (var9x) { + case -2134995589: + return; + case -2085362633: + var8x = (vo)var7x.next(); + this.drawTopFace(var6x, var5x, var8x.pos(), var3, withAlpha(var4, var10 * var8x.alpha())); + var9x = 656052722; + break; + case 656052722: + if (var7x.hasNext()) { + var9x = -2085362633; + } else { + var9x = -2134995589; + } + break; + case 1506690547: + default: + var7x = var14.iterator(); + var9x = 656052722; + } + } + }); + } + + if (var9) { + RenderType var36 = arj.lines(); + + for (vo var38 : var14) { + var1.pushPose(); + var1.translate(var38.pos().getX() - var3.x, var38.pos().getY() - var3.y, var38.pos().getZ() - var3.z); + var2.submitShapeOutline( + var1, Shapes.block(), var36, withAlpha(var4, var38.alpha()), var11, (boolean)((((-522492330 ^ 522492330) + ((-522492330 & 522492330) << 1)) + ) != 0)); + var1.popPose(); + } + } + } + } + } + + private void drawTopFace(VertexConsumer var1, Pose var2, BlockPos var3, Vec3 var4, int var5) { + double var6 = var3.getX() - var4.x; + double var8 = var3.getX() + (-1304371150 | 1304371151) + (-1304371150 & 1304371151) - var4.x; + double var10 = var3.getZ() - var4.z; + double var12 = var3.getZ() + (471542301 | -471542300) + (471542301 & -471542300) - var4.z; + double var14 = var3.getY() + 1.01 - var4.y; + var1.addVertex(var2, (float)var6, (float)var14, (float)var10).setColor(var5); + var1.addVertex(var2, (float)var6, (float)var14, (float)var12).setColor(var5); + var1.addVertex(var2, (float)var8, (float)var14, (float)var12).setColor(var5); + var1.addVertex(var2, (float)var8, (float)var14, (float)var10).setColor(var5); + } + + private void renderTextures(SubmitNodeCollector var1, PoseStack var2, Vec3 var3) { + Identifier[] var4 = null; + int var5 = 0; + int var6 = 0; + float var7 = 0.0F; + float var8 = 0.0F; + long var9 = (-8906975074265628491L | 8906975074265628491L) + (-8906975074265628491L & 8906975074265628491L); + long var11 = (7037333051706469704L | -7037333051706469704L) + (7037333051706469704L & -7037333051706469704L); + Identifier[] var13 = null; + int var14 = 0; + int var15 = 0; + Object var16 = null; + RenderType var17 = null; + int var18 = 1532567381; + + while (true) { + switch (var18) { + case -2135693519: + var4 = TEXTURE_PRESETS.get(this.textureSetting.get()); + if (var4 == null) { + var18 = -30078507; + } else { + var18 = -1164984521; + } + break; + case -1508318208: + return; + case -1495201522: + return; + case -1164984521: + var5 = this.baseColor(); + var6 = this.accentColor(); + var7 = this.textureSizeSetting.getCurrent(); + var8 = this.textureSpinSetting.getCurrent(); + var9 = (long)(this.textureDurationSetting.getCurrent() * 1000.0F); + var11 = System.currentTimeMillis(); + this.textures.removeIf(var4x -> { + int var6x = 0; + int var5x = 1816919422; + + while (true) { + switch (var5x) { + case 227059438: + var6x = 1; + var5x = 949862607; + break; + case 469167800: + var6x = 0; + var5x = 949862607; + break; + case 949862607: + return (boolean)((var6x) != 0); + case 1816919422: + default: + if (var11 - var4x.start() >= var9) { + var5x = 227059438; + } else { + var5x = 469167800; + } + } + } + }); + if (this.textures.isEmpty()) { + var18 = -1495201522; + } else { + var18 = 1241066305; + } + break; + case -30078507: + return; + case 1131488017: + var16 = var13[var15]; + var17 = textureLayer((Identifier)var16); + var1.submitCustomGeometry(var2, var17, (var10, var11x) -> { + Matrix4f var12 = null; + Iterator var13x = null; + vn var14x = null; + long var15x = (-7237715577444118884L ^ 7237715577444118884L) + ((-7237715577444118884L & 7237715577444118884L) << 1); + float var17x = 0.0F; + float var18x = 0.0F; + float var19x = 0.0F; + float var20x = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + float var27 = 0.0F; + int var26 = -149420473; + + while (true) { + switch (var26) { + case -2111271990: + var27 = 1.0F; + var26 = 1664928822; + break; + case -2105698834: + var14x = (vn)var13x.next(); + var15x = var11 - var14x.start(); + var17x = Mth.clamp((float)var15x / (float)var9, 0.0F, 1.0F); + if (var17x < 0.55F) { + var26 = -2111271990; + } else { + var26 = -1233322305; + } + break; + case -1518211470: + if (var13x.hasNext()) { + var26 = -2105698834; + } else { + var26 = 764059432; + } + break; + case -1233322305: + var27 = 1.0F - (var17x - 0.55F) / 0.45F; + var26 = 1664928822; + break; + case -149420473: + default: + var12 = var10.pose(); + var13x = this.textures.iterator(); + var26 = -1518211470; + break; + case 764059432: + return; + case 1664928822: + var18x = var27; + var19x = Mth.lerp(de.EXPO_OUT.ease(var17x, 0.0F, 1.0F, 1.0F), 0.15F, var7); + var20x = (float)var15x / 1000.0F * (float) (Math.PI * 2) * var8; + var21 = Mth.cos(var20x); + var22 = Mth.sin(var20x); + var23 = (float)(var14x.center().x - var3.x); + var24 = (float)(var14x.center().y + 0.04F - var3.y); + var25 = (float)(var14x.center().z - var3.z); + this.addTextureQuad(var11x, var12, var23, var24, var25, var19x * 1.22F, var21, var22, withAlpha(var5, var18x * 0.45F)); + this.addTextureQuad(var11x, var12, var23, var24 + 0.002F, var25, var19x, var21, var22, withAlpha(var6, var18x)); + var26 = -1518211470; + } + } + }); + var15++; + var18 = 1809745055; + break; + case 1241066305: + var13 = var4; + var14 = var13.length; + var15 = 0; + var18 = 1809745055; + break; + case 1278245304: + return; + case 1532567381: + default: + if (this.textures.isEmpty()) { + var18 = 1278245304; + } else { + var18 = -2135693519; + } + break; + case 1809745055: + if (var15 < var14) { + var18 = 1131488017; + } else { + var18 = -1508318208; + } + } + } + } + + private void addTextureQuad(VertexConsumer var1, Matrix4f var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9) { + this.textureVertex(var1, var2, var3, var4, var5, -var6, -var6, var7, var8, 0.0F, 0.0F, var9); + this.textureVertex(var1, var2, var3, var4, var5, -var6, var6, var7, var8, 0.0F, 1.0F, var9); + this.textureVertex(var1, var2, var3, var4, var5, var6, var6, var7, var8, 1.0F, 1.0F, var9); + this.textureVertex(var1, var2, var3, var4, var5, var6, -var6, var7, var8, 1.0F, 0.0F, var9); + } + + private void textureVertex( + VertexConsumer var1, + Matrix4f var2, + float var3, + float var4, + float var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + int var12 + ) { + var1.addVertex(var2, var3 + var6 * var8 - var7 * var9, var4, var5 + var6 * var9 + var7 * var8).setUv(var10, var11).setColor(var12); + } + + private void renderRings(SubmitNodeCollector var1, PoseStack var2, Vec3 var3) { + long var4 = (-1721674163570352023L | 1721674163570352023L) + (-1721674163570352023L & 1721674163570352023L); + float var6 = 0.0F; + int var7 = 0; + int var8 = -70418222; + + while (true) { + switch (var8) { + case -1362257700: + var4 = System.currentTimeMillis(); + this.rings.removeIf(var2x -> { + int var4x = 0; + int var3x = 665551744; + + while (true) { + switch (var3x) { + case -964897381: + return (boolean)((var4x) != 0); + case 159451132: + var4x = 0; + var3x = -964897381; + break; + case 665551744: + default: + if (var4 - var2x.start() >= (-361182606506278774L ^ 361182606506280074L) + ((-361182606506278774L & 361182606506280074L) << 1)) { + var3x = 1184286847; + } else { + var3x = 159451132; + } + break; + case 1184286847: + var4x = 1; + var3x = -964897381; + } + } + }); + if (this.rings.isEmpty()) { + var8 = 1421225882; + } else { + var8 = -250805435; + } + break; + case -250805435: + this.updateRingCornerColors(this.baseColor(), var4); + var6 = this.ringSizeSetting.getCurrent(); + boolean var10 = this.ringGlowSetting.isEnabled(); + var1.submitCustomGeometry(var2, textureLayer(RING_TEXTURE), (var6x, var7x) -> { + Matrix4f var8x = null; + Iterator var9x = null; + vn var10x = null; + long var11 = (1808110241744744868L ^ -1808110241744744868L) + ((1808110241744744868L & -1808110241744744868L) << 1); + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + int var20 = 0; + float var21 = 0.0F; + float var22 = 0.0F; + int var23 = -1019424643; + + while (true) { + switch (var23) { + case -2143622220: + var21 = var20 / 20.0F; + var22 = var13 * (1.0F - var21) * 0.15F; + if (var22 <= 0.004F) { + var23 = 1840275945; + } else { + var23 = 24079951; + } + break; + case -2019484869: + var20++; + var23 = 915852405; + break; + case -1591142866: + if (var9x.hasNext()) { + var23 = -1448455914; + } else { + var23 = 291204028; + } + break; + case -1448455914: + var10x = (vn)var9x.next(); + var11 = var4 - var10x.start(); + var13 = ringAlpha(var11); + if (var13 <= 0.0F) { + var23 = 679254789; + } else { + var23 = -949381743; + } + break; + case -1019424643: + default: + var8x = var6x.pose(); + var9x = this.rings.iterator(); + var23 = -1591142866; + break; + case -949381743: + var14 = var6 * ringScale(var11); + var15 = (float)(var10x.center().x - var3.x); + var16 = (float)(var10x.center().y + 0.04F - var3.y); + var17 = (float)(var10x.center().z - var3.z); + this.addRingQuad(var7x, var8x, var15, var16, var17, var14 * 0.5F, var13); + if (!var10) { + var23 = -933537181; + } else { + var23 = 1995126846; + } + break; + case -933537181: + var23 = -1591142866; + break; + case 24079951: + this.addRingQuad(var7x, var8x, var15, var16 + var18 * var21, var17, (var14 + var19 * var21) * 0.5F, var22); + var23 = -2019484869; + break; + case 291204028: + return; + case 679254789: + var23 = -1591142866; + break; + case 915852405: + if (var20 < (1456731364 | -1456731344) + (1456731364 & -1456731344)) { + var23 = -2143622220; + } else { + var23 = 2034545637; + } + break; + case 1840275945: + var23 = -2019484869; + break; + case 1995126846: + var18 = var14 * 0.15F; + var19 = var14 * 0.25F; + var20 = 0; + var23 = 915852405; + break; + case 2034545637: + var23 = -1591142866; + } + } + }); + return; + case -70418222: + default: + if (this.rings.isEmpty()) { + var8 = 280365828; + } else { + var8 = -1362257700; + } + break; + case 280365828: + return; + case 1421225882: + return; + } + } + } + + private static float ringAlpha(long var0) { + int var2 = -1098188699; + + while (true) { + switch (var2) { + case -1493260780: + return de.SINE_OUT.ease((float)var0 / 500.0F, 0.0F, 1.0F, 1.0F); + case -1098188699: + default: + if (var0 < (3866298226118491049L | -3866298226118490549L) + (3866298226118491049L & -3866298226118490549L)) { + var2 = -1493260780; + } else { + var2 = 1787214946; + } + break; + case 804257975: + return 1.0F; + case 965185446: + return 1.0F + - de.SINE_OUT + .ease( + (float)(var0 - ((6098463801532165803L | -6098463801532165003L) + (6098463801532165803L & -6098463801532165003L))) / 500.0F, + 0.0F, + 1.0F, + 1.0F + ); + case 1787214946: + if (var0 < (7419401885143591822L | -7419401885143591022L) + (7419401885143591822L & -7419401885143591022L)) { + var2 = 804257975; + } else { + var2 = 965185446; + } + } + } + } + + private static float ringScale(long var0) { + int var2 = -1473567880; + + while (true) { + switch (var2) { + case -2062618008: + return 1.0F; + case -1473567880: + default: + if (var0 < (4095580946862960768L ^ -4095580946862960268L) + ((4095580946862960768L & -4095580946862960268L) << 1)) { + var2 = -1268675676; + } else { + var2 = 1061600879; + } + break; + case -1268675676: + return de.SINE_OUT.ease((float)var0 / 500.0F, 0.0F, 1.0F, 1.0F); + case 400722130: + return 1.0F + + 1.0F + * de.SINE_OUT + .ease( + (float)(var0 - ((-7908888881453595755L ^ 7908888881453596555L) + ((-7908888881453595755L & 7908888881453596555L) << 1))) / 500.0F, + 0.0F, + 1.0F, + 1.0F + ); + case 1061600879: + if (var0 < (4524780688668088641L | -4524780688668087841L) + (4524780688668088641L & -4524780688668087841L)) { + var2 = -2062618008; + } else { + var2 = 400722130; + } + } + } + } + + private void updateRingCornerColors(int var1, long var2) { + int var4 = 0; + long var5 = (-2566781337894324159L | 2566781337894324159L) + (-2566781337894324159L & 2566781337894324159L); + int var7 = 0; + int var8 = 0; + int var9 = -1252702171; + + while (true) { + switch (var9) { + case -1613710315: + return; + case -1252702171: + default: + var4 = scaleBrightness(var1, 0.75F); + var5 = var2 / ((-1298975822580496350L ^ 1298975822580496360L) + ((-1298975822580496350L & 1298975822580496360L) << 1)); + var7 = 0; + var9 = 73314687; + break; + case -857875886: + var8 = (52642507 | -52642147) + (52642507 & -52642147) - var8; + var9 = -389134276; + break; + case -389134276: + this.ringCornerColors[var7] = mixRgb(var1, var4, var8 / 180.0F); + var7++; + var9 = 73314687; + break; + case -68315738: + var8 = (int)( + (var5 + RING_CORNER_PHASES[var7]) % ((7421544177420844167L | -7421544177420843807L) + (7421544177420844167L & -7421544177420843807L)) + ); + if (var8 >= (297352781 ^ -297352601) + ((297352781 & -297352601) << 1)) { + var9 = -857875886; + } else { + var9 = -389134276; + } + break; + case 73314687: + if (var7 < RING_CORNERS) { + var9 = -68315738; + } else { + var9 = -1613710315; + } + } + } + } + + private static int scaleBrightness(int var0, float var1) { + int var2 = Mth.clamp( + Math.round((var0 >> (617577954 ^ -617577938) + ((617577954 & -617577938) << 1) & (931066346 ^ -931066091) + ((931066346 & -931066091) << 1)) * var1), + 0, + (-1458150201 | 1458150456) + (-1458150201 & 1458150456) + ); + int var3 = Mth.clamp( + Math.round( + (var0 >> (402694360 ^ -402694352) + ((402694360 & -402694352) << 1) & (1741373262 ^ -1741373007) + ((1741373262 & -1741373007) << 1)) * var1 + ), + 0, + (-734302317 | 734302572) + (-734302317 & 734302572) + ); + int var4 = Mth.clamp( + Math.round((var0 & (876782717 ^ -876782462) + ((876782717 & -876782462) << 1)) * var1), + 0, + (435512130 | -435511875) + (435512130 & -435511875) + ); + return var2 << (1085351526 | -1085351510) + (1085351526 & -1085351510) | var3 << (1873305300 | -1873305292) + (1873305300 & -1873305292) | var4; + } + + private static int mixRgb(int var0, int var1, float var2) { + int var3 = Mth.lerpInt( + var2, + var0 >> 16, + var1 >> (1739216349 ^ -1739216333) + ((1739216349 & -1739216333) << 1) & (-535386059 | 535386314) + (-535386059 & 535386314) + ); + int var4 = Mth.lerpInt( + var2, + var0 >> 8, + var1 >> (-882271520 | 882271528) + (-882271520 & 882271528) & (1884715219 | -1884714964) + (1884715219 & -1884714964) + ); + int var5 = Mth.lerpInt( + var2, var0 & 255, var1 & (400281858 | -400281603) + (400281858 & -400281603) + ); + return var3 << (-1731897966 ^ 1731897982) + ((-1731897966 & 1731897982) << 1) | var4 << (-467351928 | 467351936) + (-467351928 & 467351936) | var5; + } + + private void addRingQuad(VertexConsumer var1, Matrix4f var2, float var3, float var4, float var5, float var6, float var7) { + this.ringQuadVertex( + var1, + var2, + var3 - var6, + var4, + var5 - var6, + 0.0F, + 0.0F, + withAlpha(this.ringCornerColors[0], var7) + ); + this.ringQuadVertex( + var1, + var2, + var3 - var6, + var4, + var5 + var6, + 0.0F, + 1.0F, + withAlpha(this.ringCornerColors[1], var7) + ); + this.ringQuadVertex( + var1, + var2, + var3 + var6, + var4, + var5 + var6, + 1.0F, + 1.0F, + withAlpha(this.ringCornerColors[2], var7) + ); + this.ringQuadVertex( + var1, + var2, + var3 + var6, + var4, + var5 - var6, + 1.0F, + 0.0F, + withAlpha(this.ringCornerColors[3], var7) + ); + } + + private void ringQuadVertex(VertexConsumer var1, Matrix4f var2, float var3, float var4, float var5, float var6, float var7, int var8) { + var1.addVertex(var2, var3, var4, var5).setUv(var6, var7).setColor(var8); + } + + static { + String var10000 = "Storm"; + String[] var10001 = new String[3]; + var10001[0] = "shtorm1"; + var10001[1] = "shtorm2"; + var10001[2] = "glow"; + Identifier[] var2 = layers(var10001); + String var10002 = "Pool"; + String[] var10003 = new String[3]; + var10003[0] = "glow"; + var10003[1] = "omut2"; + var10003[2] = "omut3"; + Identifier[] var3 = layers(var10003); + String var10004 = "Rings"; + String[] var10005 = new String[3]; + var10005[0] = "colso1"; + var10005[1] = "omut2"; + var10005[2] = "colso3"; + Identifier[] var4 = layers(var10005); + String var10006 = "Explosion"; + String[] var10007 = new String[3]; + var10007[0] = "boom1"; + var10007[1] = "boom2"; + var10007[2] = "glow"; + TEXTURE_PRESETS = Map.of(var10000, var2, var10002, var3, var10004, var4, var10006, layers(var10007)); + int[] var0 = new int[4]; + var0[0] = 0; + var0[1] = 90; + var0[2] = 180; + var0[3] = 270; + RING_CORNER_PHASES = var0; + RING_CORNERS = RING_CORNER_PHASES.length; + Snippet[] var1 = new Snippet[1]; + var1[0] = RenderPipelines.GUI_TEXTURED_SNIPPET; + TEXTURE_PIPELINE = RenderPipelines.register( + RenderPipeline.builder(var1) + .withLocation( + Identifier.fromNamespaceAndPath( + "evolution", + "pipeline/jumpcircles_textured" + ) + ) + .withVertexBinding(0, DefaultVertexFormat.POSITION_TEX_COLOR) + .withPrimitiveTopology(PrimitiveTopology.QUADS) + .withCull((boolean)((((1090486656 ^ -1090486656) + ((1090486656 & -1090486656) << 1))) != 0)) + .withDepthStencilState(new DepthStencilState(CompareOp.GREATER_THAN_OR_EQUAL, (boolean)((((-1287469552 | 1287469552) + (-1287469552 & 1287469552))) != 0))) + .withColorTargetState(new ColorTargetState(ADDITIVE)) + .build() + ); + } +} diff --git a/src/main/java/defpackage/vq.java b/src/main/java/defpackage/vq.java new file mode 100644 index 0000000..52d59e6 --- /dev/null +++ b/src/main/java/defpackage/vq.java @@ -0,0 +1,180 @@ +package defpackage; + +@rn(name = "Menu", category = rl.MISC, description = "Opens the Evolution menu on the bound key") +public final class vq extends rm { + public static final vq INSTANCE = new vq(); + + private vq() { + this.setKeyCode((520601020 ^ -520600676) + ((520601020 & -520600676) << 1)); + } + + @Override + public void onEnable() { + int var1 = 1348977113; + + while (true) { + switch (var1) { + case -1424870512: + this.setEnabled((boolean)((((324767315 ^ -324767315) + ((324767315 & -324767315) << 1))) != 0)); + return; + case -1408626576: + mc.gui.setScreen(bz.getInstance().getMenuScreen()); + super.onEnable(); + return; + case -1140173534: + if (mc.gui.screen() == bz.getInstance().getMenuScreen()) { + var1 = -596643360; + } else { + var1 = -1408626576; + } + break; + case -596643360: + return; + case 1348977113: + default: + if (mc.level == null) { + var1 = -1424870512; + } else { + var1 = -1140173534; + } + } + } + } + + @Override + public boolean emitsToggleSound() { + return (boolean)(((0)) != 0); + } + + @Override + public void setToggled(boolean var1) { + int var2 = 2108424825; + + while (true) { + switch (var2) { + case -1913265591: + if (!bz.getInstance().getMenuScreen().isClosing()) { + var2 = -1844137470; + } else { + var2 = 1973892776; + } + break; + case -1844137470: + bz.getInstance().getMenuScreen().onClose(); + return; + case 1657602772: + if (bz.getInstance().getMenuScreen() != null) { + var2 = -1913265591; + } else { + var2 = 1973892776; + } + break; + case 1973892776: + super.setToggled(var1); + return; + case 2108424825: + default: + if (!var1) { + var2 = 1657602772; + } else { + var2 = 1973892776; + } + } + } + } + + @Override + public void toggle() { + int var1 = 1682727584; + + while (true) { + switch (var1) { + case -2110773446: + return; + case 1151145327: + super.toggle(); + var1 = -2110773446; + break; + case 1374488846: + this.setToggled((boolean)((((80626821 | -80626821) + (80626821 & -80626821))) != 0)); + var1 = -2110773446; + break; + case 1682727584: + default: + if (this.isEnabled()) { + var1 = 1374488846; + } else { + var1 = 1151145327; + } + } + } + } + + @Override + public void onDisable() { + super.onDisable(); + } + + @Override + public void setKeyCode(int var1) { + int var2 = -1123458591; + + while (true) { + switch (var2) { + case -1167923111: + return; + case -1123458591: + default: + if (var1 == (388369144 | -388369145) + (388369144 & -388369145)) { + var2 = -1167923111; + } else { + var2 = 1178364415; + } + break; + case 1178364415: + super.setKeyCode(var1); + return; + } + } + } + + @k(4) + public void render2d(fr var1) { + int var2 = 0; + int var3 = 0; + asq var4 = null; + int var5 = -1396629753; + + while (true) { + switch (var5) { + case -1671976811: + this.toggle(); + var5 = 1321121359; + break; + case -1396629753: + default: + var2 = (int)(mc.mouseHandler.xpos() * mc.getWindow().getGuiScaledWidth() / mc.getWindow().getScreenWidth()); + var3 = (int)(mc.mouseHandler.ypos() * mc.getWindow().getGuiScaledHeight() / mc.getWindow().getScreenHeight()); + var4 = asq.of(var1.getContext(), var2, var3, var1.getTickDelta()); + if (mc.gui.screen() != bz.getInstance().getMenuScreen()) { + var5 = 1434301980; + } else { + var5 = -1077529223; + } + break; + case -1077529223: + if (bz.getInstance().getMenuScreen().isFinish()) { + var5 = -1671976811; + } else { + var5 = 1321121359; + } + break; + case 1321121359: + return; + case 1434301980: + bz.getInstance().getMenuScreen().renderTop(var4, api.exactMouseX(var2), api.exactMouseY(var3)); + var5 = -1077529223; + } + } + } +} diff --git a/src/main/java/defpackage/vr.java b/src/main/java/defpackage/vr.java new file mode 100644 index 0000000..aed9c99 --- /dev/null +++ b/src/main/java/defpackage/vr.java @@ -0,0 +1,139 @@ +package defpackage; + +@rn(name = "MotionBlur", category = rl.RENDER, description = "Smears the frame along camera motion for fluent movement") +public final class vr extends rm { + public static final vr INSTANCE = new vr(); + private static final String MODE_VELOCITY = "Velocity"; + private static final String MODE_BLEND = "Blend"; + private static final String MODE_HYBRID = "Hybrid"; + public final sg mode; + public final sm strength; + public final sm samples; + public final sm maxLength; + public final ru depthAware; + public final ru stableBlur; + public final ru thirdPerson; + public final ru sharpHand; + + private vr() { + String var10003 = "Mode"; + String[] var10004 = new String[3]; + var10004[0] = "Velocity"; + var10004[1] = "Blend"; + var10004[2] = "Hybrid"; + this.mode = new sg(var10003, var10004) + .describe( + "Velocity", + "Reprojected camera velocity, blurs only what the camera moves past" + ) + .describe( + "Blend", + "Blends the previous frames in, blurs everything including entities" + ) + .describe( + "Hybrid", + "Velocity streaks with a short frame trail on top" + ) + .description("How the frame is smeared"); + this.strength = new sm("Strength", 60.0F, 5.0F, 100.0F, 1.0F) + .description("Overall blur amount"); + this.samples = new sm("Samples", 16.0F, 4.0F, 48.0F, 1.0F, this::usesVelocity) + .description( + "Maximum taps per pixel, the shader spends fewer of them on slow motion" + ); + this.maxLength = new sm( + "Max Length", 25.0F, 5.0F, 60.0F, 1.0F, this::usesVelocity + ) + .description( + "Longest streak allowed, in percent of the screen" + ); + this.depthAware = new ru( + "Depth Aware", + (boolean)(((1)) != 0), + this::usesVelocity + ) + .description( + "Use scene depth so near geometry streaks more than the sky" + ); + this.stableBlur = new ru( + "Stable Blur", + (boolean)((((-373191398 ^ 373191399) + ((-373191398 & 373191399) << 1)) + ) != 0)) + .description( + "Keep the trail the same length in time instead of per frame, so it does not change with fps" + ); + this.thirdPerson = new ru( + "Third Person", + (boolean)((((1552061470 ^ -1552061469) + ((1552061470 & -1552061469) << 1)) + ) != 0)) + .description( + "Also blur while the camera is not in first person" + ); + this.sharpHand = new ru( + "Sharp Hand", (boolean)((((-28999868 ^ 28999869) + ((-28999868 & 28999869) << 1)) + ) != 0)) + .description( + "Keep the held item out of the blur, shaderpacks draw it into the world where it smears" + ); + } + + @Override + public void onDisable() { + super.onDisable(); + aup.release(); + } + + public boolean usesVelocity() { + int var2 = 0; + int var1 = -1196628244; + + while (true) { + switch (var1) { + case -1196628244: + default: + if (!this.mode.is("Blend")) { + var1 = 430113709; + } else { + var1 = 454791351; + } + break; + case 400294859: + return var2; + case 430113709: + var2 = 1; + var1 = 400294859; + break; + case 454791351: + var2 = 0; + var1 = 400294859; + } + } + } + + public boolean usesHistory() { + int var2 = 0; + int var1 = -1234691211; + + while (true) { + switch (var1) { + case -1234691211: + default: + if (!this.mode.is("Velocity")) { + var1 = 507601548; + } else { + var1 = 143630527; + } + break; + case -995522735: + return (boolean)((var2) != 0); + case 143630527: + var2 = 0; + var1 = -995522735; + break; + case 507601548: + var2 = 1; + var1 = -995522735; + } + } + } +} diff --git a/src/main/java/defpackage/vs.java b/src/main/java/defpackage/vs.java new file mode 100644 index 0000000..ee2fb2f --- /dev/null +++ b/src/main/java/defpackage/vs.java @@ -0,0 +1,6 @@ +package defpackage; + +import net.minecraft.network.chat.Component; + +record vs(int flags, int healthPoints, int latency, int healthColor, int pingColor, Component component) { +} diff --git a/src/main/java/defpackage/vt.java b/src/main/java/defpackage/vt.java new file mode 100644 index 0000000..365eb59 --- /dev/null +++ b/src/main/java/defpackage/vt.java @@ -0,0 +1,6 @@ +package defpackage; + +import net.minecraft.network.chat.Component; + +record vt(String label, Component source, Component component) { +} diff --git a/src/main/java/defpackage/vu.java b/src/main/java/defpackage/vu.java new file mode 100644 index 0000000..8bd3940 --- /dev/null +++ b/src/main/java/defpackage/vu.java @@ -0,0 +1,1200 @@ +package defpackage; + +import com.mojang.blaze3d.platform.InputConstants; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Iterator; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.FontDescription.Resource; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Avatar; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; +import org.joml.Vector3f; + +@rn(name = "NameTags", category = rl.RENDER, description = "Custom styled player nametags") +public final class vu extends rm { + private static final asu DEFAULT_HEALTH_LOW = new asu( + 235, + 80, + (2046059508 | -2046059428) + (2046059508 & -2046059428) + ); + private static final asu DEFAULT_HEALTH_FULL = new asu( + 95, + 220, + (-237061314 ^ 237061434) + ((-237061314 & 237061434) << 1) + ); + private static final asu DEFAULT_PING_FAST = new asu( + 95, + 220, + (1219562698 | -1219562578) + (1219562698 & -1219562578) + ); + private static final asu DEFAULT_PING_MEDIUM = new asu( + 245, + 200, + (-1409775217 | 1409775307) + (-1409775217 & 1409775307) + ); + private static final asu DEFAULT_PING_SLOW = new asu( + 235, + 80, + (46630545 | -46630465) + (46630545 & -46630465) + ); + private static final asu OFFER_SUCCESS = new asu( + 95, + 220, + (1677778476 | -1677778356) + (1677778476 & -1677778356) + ); + private static final asu OFFER_FAILURE = new asu( + 235, + 80, + (-1839908383 | 1839908463) + (-1839908383 & 1839908463) + ); + public static final vu INSTANCE = new vu(); + private static final Identifier EVO_ICON = bz.id("icons/logo.png"); + private static final float ICON_CONTENT_W = 189.0F; + private static final float ICON_CONTENT_H = 228.0F; + private static final float ICON_TEX = 256.0F; + private static final float ICON_ASPECT = 0.82894737F; + private static final int PING_FAST_MS = 80; + private static final int PING_MEDIUM_MS = 180; + private static final String STYLE_CUSTOM = "Custom"; + private static final String STYLE_VANILLA = "Vanilla"; + private static final Resource ICON_FONT = new Resource( + bz.id("nametag_icons") + ); + private static final String HEART_GLYPH = "\ue000"; + private static final String PAD_GLYPH = "\ue001"; + private static final String PING_UNIT = "ms"; + private static final String TIER_SEPARATOR = " | "; + private static final int TIER_SEPARATOR_COLOR = 11184810; + private static final int HEART_GAP = 5; + private static final int RGB_MASK = 16777215; + private static final float HEALTH_PRECISION = 10.0F; + private static final int FLAG_HEALTH = 1; + private static final int FLAG_PING = 2; + private static final int EXTRA_CACHE_LIMIT = 256; + private final sg style; + private final ru head; + private final ru healthBar; + private final rx healthLowColor; + private final rx healthFullColor; + private final ru ping; + private final rx pingFastColor; + private final rx pingMediumColor; + private final rx pingSlowColor; + private final ru heldItem; + private final ru tier; + private final sg tierMode; + private final ru tierFallback; + private final sm scale; + private final sm distance; + private static final long OFFER_TIMEOUT_MS = 4000L; + private static final long RESULT_TIMEOUT_MS = 1800L; + private static final long DOUBLE_CLICK_MS = 500L; + private static final int OFFER_NONE = 0; + private static final int OFFER_SHOWN = 1; + private static final int OFFER_SENT = 2; + private static final int OFFER_FAILED = 3; + private final Vector3f screen; + private final ct offerAnim; + private UUID offerUuid; + private String offerNick; + private long offerAt; + private int offerPhase; + private static final Map EXTRA_CACHE = new ConcurrentHashMap<>(); + private static final Map TIER_CACHE = new ConcurrentHashMap<>(); + + private vu() { + String var10003 = "Style"; + String[] var10004 = new String[2]; + var10004[0] = "Custom"; + var10004[1] = "Vanilla"; + this.style = new sg(var10003, var10004) + .describe( + "Custom", + "Replace nametags with the Evolution rendered tag" + ) + .describe( + "Vanilla", + "Keep the vanilla nametag and extend it with extra info" + ) + .description( + "Whether to draw custom nametags or decorate the vanilla ones" + ); + this.head = new ru( + "Player Head", + (boolean)(((1)) != 0), + this::isCustomStyle + ) + .description( + "Render the player's 2D face on their nametag" + ); + this.healthBar = new ru( + "Health", + (boolean)((((1118078242 | -1118078241) + (1118078242 & -1118078241)) + ) != 0)) + .description( + "Display the player's health on the nametag" + ); + this.healthLowColor = new rx( + "Health Low", DEFAULT_HEALTH_LOW, this.healthBar::isEnabled + ) + .description( + "Health color at zero hearts" + ); + this.healthFullColor = new rx( + "Health Full", DEFAULT_HEALTH_FULL, this.healthBar::isEnabled + ) + .description( + "Health color at full hearts" + ); + this.ping = new ru( + "Ping", (boolean)((((-1067568338 | 1067568339) + (-1067568338 & 1067568339)) + ) != 0)) + .description( + "Display the player's ping in ms" + ); + this.pingFastColor = new rx( + "Ping Fast", DEFAULT_PING_FAST, this.ping::isEnabled + ) + .description("Ping color up to 80ms"); + this.pingMediumColor = new rx( + "Ping Medium", DEFAULT_PING_MEDIUM, this.ping::isEnabled + ) + .description("Ping color up to 180ms"); + this.pingSlowColor = new rx( + "Ping Slow", DEFAULT_PING_SLOW, this.ping::isEnabled + ) + .description("Ping color above 180ms"); + this.heldItem = new ru( + "Held Item", + (boolean)(((1)) != 0), + this::isCustomStyle + ) + .description( + "Display the item the player is currently holding" + ); + this.tier = new ru( + "Tier", (boolean)((((-319479405 | 319479406) + (-319479405 & 319479406)) + ) != 0)) + .description( + "Display the player's mctiers.com combat tier" + ); + this.tierMode = new sg("Tier Mode", this.tier::isEnabled, aoq.modeLabels()) + .describe( + "Highest", + "Always show the player's best tier across every kit" + ) + .description( + "Which tierlist the displayed tier is taken from" + ); + this.tierFallback = new ru( + "Tier Fallback", + (boolean)(((1)) != 0), + this.tier::isEnabled + ) + .description( + "Fall back to the player's best tier when they are unranked in the selected kit" + ); + this.scale = new sm( + "Scale", 1.0F, 0.5F, 2.0F, 0.05F, this::isCustomStyle + ) + .description( + "Size multiplier for the nametags" + ); + this.distance = new sm( + "Distance", + 64.0F, + 16.0F, + 128.0F, + 4.0F, + this::isCustomStyle + ) + .description( + "Maximum distance to render nametags" + ); + this.screen = new Vector3f(); + this.offerAnim = ct.layout(ob.MEDIUM, 0.0F); + this.offerPhase = 0; + } + + public boolean isCustomStyle() { + return this.style.is("Custom"); + } + + public boolean decoratesVanilla() { + int var2 = 0; + int var1 = -1518929383; + + while (true) { + switch (var1) { + case -1518929383: + default: + if (this.isEnabled()) { + var1 = 216126446; + } else { + var1 = 95656226; + } + break; + case 95656226: + var2 = 0; + var1 = 944878452; + break; + case 216126446: + if (this.style.is("Vanilla")) { + var1 = 952700162; + } else { + var1 = 95656226; + } + break; + case 944878452: + return (boolean)((var2) != 0); + case 952700162: + var2 = 1; + var1 = 944878452; + } + } + } + + @Override + public void onDisable() { + super.onDisable(); + EXTRA_CACHE.clear(); + TIER_CACHE.clear(); + } + + private aom tierBadge(UUID var1) { + int var2 = -12312027; + + while (true) { + switch (var2) { + case -816742646: + return aoq.badgeOf(aoq.lookup(var1, aoq.modeIdOf(this.tierMode.get()), this.tierFallback.isEnabled())); + case -636707624: + return null; + case -12312027: + } + + if (!this.tier.isEnabled()) { + var2 = -636707624; + } else { + var2 = -816742646; + } + } + } + + public static Component withTier(Avatar var0, Component var1) { + vu var2 = null; + UUID var3 = null; + aom var4 = null; + vt var5 = null; + MutableComponent var6 = null; + int var7 = -257988383; + + while (true) { + switch (var7) { + case -1880667674: + if (var5.label().equals(var4.label())) { + var7 = -685571031; + } else { + var7 = 1595015852; + } + break; + case -1402279190: + return var5.component(); + case -835618203: + return var1; + case -685571031: + if (var5.source() != var1) { + var7 = 1104521389; + } else { + var7 = -1402279190; + } + break; + case -257988383: + default: + var2 = INSTANCE; + if (var1 != null) { + var7 = 1211540677; + } else { + var7 = 198566775; + } + break; + case -119263029: + var5 = TIER_CACHE.get(var3); + if (var5 != null) { + var7 = -1880667674; + } else { + var7 = 1595015852; + } + break; + case 198566775: + return var1; + case 1104521389: + if (var5.source().equals(var1)) { + var7 = -1402279190; + } else { + var7 = 1595015852; + } + break; + case 1211540677: + if (!var2.decoratesVanilla()) { + var7 = 198566775; + } else { + var7 = 1939679537; + } + break; + case 1227140247: + TIER_CACHE.clear(); + var7 = 2011141448; + break; + case 1595015852: + var6 = Component.empty() + .append(Component.literal(var4.label()).withColor(var4.rgb())) + .append( + Component.literal(" | ") + .withColor((-32401884 | 43586694) + (-32401884 & 43586694)) + ) + .append(var1); + if (TIER_CACHE.size() > (-1311352563 ^ 1311352819) + ((-1311352563 & 1311352819) << 1)) { + var7 = 1227140247; + } else { + var7 = 2011141448; + } + break; + case 1939679537: + var3 = var0.getUUID(); + var4 = var2.tierBadge(var3); + if (var4 == null) { + var7 = -835618203; + } else { + var7 = -119263029; + } + break; + case 2011141448: + TIER_CACHE.put(var3, new vt(var4.label(), var1, var6)); + return var6; + } + } + } + + public static Component belowNameLine(Avatar var0, Component var1) { + vu var2 = INSTANCE; + if (!var2.decoratesVanilla()) { + return var1; + } + + int var3 = (var2.healthBar.isEnabled() ? 1: (1717614642 | -1717614642) + (1717614642 & -1717614642)) + | (var2.ping.isEnabled() ? 2: (-1162062949 ^ 1162062949) + ((-1162062949 & 1162062949) << 1)); + if (var3 == 0) { + return var1; + } + + int var4 = (var3 & (974729404 | -974729403) + (974729404 & -974729403)) == 0 + ? 0: Math.round(apo.getHealth(var0) * 10.0F); + int var5 = (var3 & (706309183 | -706309181) + (706309183 & -706309181)) == 0 + ? 0: latencyOf(var0.getUUID()); + float var6 = var4 / 10.0F; + int var7 = (var3 & (-1044786918 ^ 1044786919) + ((-1044786918 & 1044786919) << 1)) == 0 + ? 0: var2.healthColor(var6 / Math.max(1.0F, var0.getMaxHealth())).getRGB() & 16777215; + int var8 = (var3 & (-77139459 ^ 77139461) + ((-77139459 & 77139461) << 1)) == 0 + ? 0: var2.pingColor(var5).getRGB() & 16777215; + UUID var9 = var0.getUUID(); + vs var10 = EXTRA_CACHE.get(var9); + if (var10 != null + && var10.flags() == var3 + && var10.healthPoints() == var4 + && var10.latency() == var5 + && var10.healthColor() == var7 + && var10.pingColor() == var8) { + return var10.component(); + } + + MutableComponent var11 = null; + MutableComponent var12 = null; + if ((var3 & (1715041963 | -1715041962) + (1715041963 & -1715041962)) != 0) { + var11 = Component.literal(apo.getHealthString(var6)).withColor(var7); + var12 = Component.literal("") + .setStyle(Style.EMPTY.withFont(ICON_FONT).withColor(var7)); + } + + MutableComponent var13 = (var3 & (313997517 | -313997515) + (313997517 & -313997515)) == 0 ? null : Component.literal(var5 + "ms").withColor(var8); + MutableComponent var14 = Component.empty(); + if (var11 != null) { + var14.append(var11).append(pad((1740582188 ^ -1740582183) + ((1740582188 & -1740582183) << 1))).append(var12); + } + + if (var13 != null) { + if (var11 != null) { + var14.append(pad((-1275892989 ^ 1275892994) + ((-1275892989 & 1275892994) << 1))); + } + + var14.append(var13); + } + + if (EXTRA_CACHE.size() > (1116419139 ^ -1116418883) + ((1116419139 & -1116418883) << 1)) { + EXTRA_CACHE.clear(); + } + + EXTRA_CACHE.put(var9, new vs(var3, var4, var5, var7, var8, var14)); + return var14; + } + + private static Component pad(int var0) { + return Component.literal( + "" + .repeat(Math.max(0, var0)) + ) + .setStyle(Style.EMPTY.withFont(ICON_FONT)); + } + + private static int latencyOf(UUID var0) { + PlayerInfo var1 = null; + int var3 = 0; + int var2 = -471152261; + + while (true) { + switch (var2) { + case -471152261: + default: + if (mc.getConnection() == null) { + var2 = 277526783; + } else { + var2 = 993288819; + } + break; + case 277526783: + return 0; + case 772317111: + var3 = Math.max(0, var1.getLatency()); + var2 = 2133696425; + break; + case 993288819: + var1 = mc.getConnection().getPlayerInfo(var0); + if (var1 == null) { + var2 = 1692988645; + } else { + var2 = 772317111; + } + break; + case 1692988645: + var3 = 0; + var2 = 2133696425; + break; + case 2133696425: + return var3; + } + } + } + + @k + public void onMouse(es var1) { + int var2 = 1840769088; + + while (true) { + switch (var2) { + case -2061994550: + if (mc.player == null) { + var2 = 1885384039; + } else { + var2 = 2040587689; + } + break; + case -1299615823: + if (mc.gui.screen() == null) { + var2 = -828239568; + } else { + var2 = 1885384039; + } + break; + case -1059903973: + this.handleAddClick(); + return; + case -942714069: + return; + case -828239568: + if (mc.level != null) { + var2 = -2061994550; + } else { + var2 = 1885384039; + } + break; + case -222284652: + if (!this.isCustomStyle()) { + var2 = 1729372033; + } else { + var2 = -1299615823; + } + break; + case -112933036: + return; + case 438154575: + if (var1.getButton() != (2003494403 | -2003494402) + (2003494403 & -2003494402)) { + var2 = -112933036; + } else { + var2 = -222284652; + } + break; + case 1729372033: + return; + case 1840769088: + default: + if (var1.getAction() == (543127604 | -543127603) + (543127604 & -543127603)) { + var2 = 438154575; + } else { + var2 = -112933036; + } + break; + case 1885384039: + return; + case 2040587689: + if (!this.isShiftHeld()) { + var2 = -942714069; + } else { + var2 = -1059903973; + } + } + } + } + + public void handleAddClick() { + AbstractClientPlayer var1 = null; + long var2 = (8418139144121857045L | -8418139144121857045L) + (8418139144121857045L & -8418139144121857045L); + String var4 = null; + int var5 = 1000469706; + + while (true) { + switch (var5) { + case -1681616564: + return; + case -704764623: + if (this.offerPhase == (411944686 | -411944685) + (411944686 & -411944685)) { + var5 = 1099260487; + } else { + var5 = -1681616564; + } + break; + case -696336315: + var4 = this.offerNick; + this.offerPhase = 2; + this.offerAt = var2; + this.pulseOffer(); + anb.request(var4, var2x -> { + int var3 = 0; + int var5x = 0; + int var4x = -40762595; + + while (true) { + switch (var4x) { + case -1877710528: + if (var2x == null) { + var4x = -1615353241; + } else { + var4x = -1418241900; + } + break; + case -1615353241: + var5x = 2; + var4x = -359767007; + break; + case -1418241900: + var5x = 3; + var4x = -359767007; + break; + case -1343793457: + this.offerPhase = var3; + this.offerAt = System.currentTimeMillis(); + this.pulseOffer(); + var4x = 508726956; + break; + case -359767007: + var3 = var5x; + if (var3 != this.offerPhase) { + var4x = -1343793457; + } else { + var4x = 508726956; + } + break; + case -40762595: + default: + if (!var4.equals(this.offerNick)) { + var4x = 1393541677; + } else { + var4x = -1877710528; + } + break; + case 508726956: + return; + case 1393541677: + return; + } + } + }); + return; + case -356904610: + if (this.offerPhase == (1958054258 ^ -1958054257) + ((1958054258 & -1958054257) << 1)) { + var5 = 1822452676; + } else { + var5 = 2033659413; + } + break; + case 1000469706: + default: + var1 = this.pickAimedPlayer(); + var2 = System.currentTimeMillis(); + if (var1 == null) { + var5 = -704764623; + } else { + var5 = -356904610; + } + break; + case 1099260487: + this.offerPhase = 0; + var5 = -1681616564; + break; + case 1125953062: + if (var2 - this.offerAt < (5500099214373322339L ^ -5500099214373321839L) + ((5500099214373322339L & -5500099214373321839L) << 1)) { + var5 = -696336315; + } else { + var5 = 2033659413; + } + break; + case 1822452676: + if (var1.getUUID().equals(this.offerUuid)) { + var5 = 1125953062; + } else { + var5 = 2033659413; + } + break; + case 2033659413: + this.offerUuid = var1.getUUID(); + this.offerNick = var1.getName().getString(); + this.offerAt = var2; + this.offerPhase = 1; + return; + } + } + } + + private boolean isShiftHeld() { + int var2 = 0; + int var1 = 1756966533; + + while (true) { + switch (var1) { + case -1299952168: + if (InputConstants.isKeyDown(mc.getWindow(), (689452992 ^ -689452648) + ((689452992 & -689452648) << 1))) { + var1 = -883319313; + } else { + var1 = 654275132; + } + break; + case -883319313: + var2 = 1; + var1 = -139738782; + break; + case -139738782: + return (boolean)((var2) != 0); + case 654275132: + var2 = 0; + var1 = -139738782; + break; + case 1756966533: + default: + if (!InputConstants.isKeyDown(mc.getWindow(), (-579056917 | 579057257) + (-579056917 & 579057257))) { + var1 = -1299952168; + } else { + var1 = -883319313; + } + } + } + } + + private AbstractClientPlayer pickAimedPlayer() { + if (mc.hitResult instanceof EntityHitResult var1 && var1.getEntity() instanceof AbstractClientPlayer var2 && var2 != mc.player) { + return var2; + } else { + Vec3 var11 = mc.getEntityRenderDispatcher().camera.position(); + Vec3 var12 = mc.player.getViewVector(1.0F); + AbstractClientPlayer var14 = null; + double var4 = 0.14; + + for (AbstractClientPlayer var7 : mc.level.players()) { + if (var7 != mc.player && !var7.isSpectator() && !(mc.player.distanceTo(var7) > this.distance.getCurrent())) { + Vec3 var8 = var7.getPosition(1.0F).add(0.0, var7.getBbHeight() * 0.8, 0.0).subtract(var11); + if (!(var8.lengthSqr() < 0.01)) { + double var9 = Math.acos(Mth.clamp(var12.dot(var8.normalize()), -1.0, 1.0)); + if (var9 < var4) { + var4 = var9; + var14 = var7; + } + } + } + } + + return var14; + } + } + + @k + public void onRender(fs var1) { + aru var2 = null; + mv var3 = null; + ArrayList var4 = null; + Iterator var5 = null; + AbstractClientPlayer var6 = null; + float var7 = 0.0F; + float var8 = 0.0F; + Vec3 var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = 2041994634; + + while (true) { + switch (var12) { + case -2063669335: + if (mc.level != null) { + var12 = 1240596701; + } else { + var12 = -1149525396; + } + break; + case -1764625849: + return; + case -1650096583: + var10 = Mth.clamp((var8 - var7) / 8.0F, 0.0F, 1.0F); + var11 = Mth.clamp(1.1F - var7 / 90.0F, 0.6F, 1.0F) * this.scale.getCurrent(); + var2.pushMatrix(); + var2.pose().translate(this.screen.x, this.screen.y); + var2.pose().scale(var11, var11); + this.drawTag(var2, var3, var6, var10); + var2.popMatrix(); + var12 = -85551973; + break; + case -1533389386: + if (this.isOccluded(var6)) { + var12 = -1276824181; + } else { + var12 = -1200826299; + } + break; + case -1276824181: + var12 = -85551973; + break; + case -1200826299: + var9 = var6.getPosition(var1.getTickDelta()).add(0.0, var6.getBbHeight() + 0.25, 0.0); + if (!aqk.projectToGui(var9, this.screen)) { + var12 = -762491722; + } else { + var12 = -1650096583; + } + break; + case -1149525396: + return; + case -1094221540: + var12 = -85551973; + break; + case -818767049: + var7 = mc.player.distanceTo(var6); + var8 = this.distance.getCurrent(); + if (var7 > var8) { + var12 = -1094221540; + } else { + var12 = -1533389386; + } + break; + case -762491722: + var12 = -85551973; + break; + case -85551973: + if (var5.hasNext()) { + var12 = 576736297; + } else { + var12 = -1764625849; + } + break; + case 70247466: + if (!(mc.gui.screen() instanceof ChatScreen)) { + var12 = 1937068610; + } else { + var12 = 325070767; + } + break; + case 325070767: + var2 = var1.getContext(); + var3 = bz.getInstance().getThemeManager().getCurrentTheme(); + var4 = new ArrayList(mc.level.players()); + var4.sort(Comparator.comparingDouble(var0 -> -mc.player.distanceToSqr(var0))); + var5 = var4.iterator(); + var12 = -85551973; + break; + case 576736297: + var6 = (AbstractClientPlayer)var5.next(); + if (var6 != mc.player) { + var12 = 1359270355; + } else { + var12 = -85551973; + } + break; + case 815167467: + if (var6.isInvisibleTo(mc.player)) { + var12 = 923441474; + } else { + var12 = -818767049; + } + break; + case 923441474: + var12 = -85551973; + break; + case 1139578396: + if (mc.gui.screen() != null) { + var12 = 70247466; + } else { + var12 = 325070767; + } + break; + case 1240596701: + if (mc.player == null) { + var12 = -1149525396; + } else { + var12 = 1139578396; + } + break; + case 1359270355: + if (!var6.isSpectator()) { + var12 = 815167467; + } else { + var12 = -85551973; + } + break; + case 1580587680: + return; + case 1937068610: + return; + case 2041994634: + default: + if (!this.isCustomStyle()) { + var12 = 1580587680; + } else { + var12 = -2063669335; + } + } + } + } + + private void drawTag(aru var1, mv var2, AbstractClientPlayer var3, float var4) { + ge var5 = gl.SEMIBOLD.getFont(7.0F); + ge var6 = gl.MEDIUM.getFont(5.5F); + String var7 = var3.getName().getString(); + String var8 = ""; + if (wh.INSTANCE.isEnabled()) { + int var9 = wh.INSTANCE.getPops(var3.getGameProfile().name()); + if (var9 > 0) { + var8 = " -" + var9; + } + } + + boolean var42 = aiq.isEvoUser(var3.getUUID()); + int var10 = this.latency(var3); + ItemStack var11 = this.heldItem.isEnabled() ? var3.getMainHandItem() : ItemStack.EMPTY; + aom var12 = this.tierBadge(var3.getUUID()); + float var13 = 4.0F; + float var14 = 2.5F; + float var15 = 2.5F; + float var16 = this.head.isEnabled() ? 11.0F : 0.0F; + float var17 = var42 ? 7.0F : 0.0F; + float var18 = var17 * 0.82894737F; + float var19 = var11.isEmpty() ? 0.0F : 10.0F; + String var20 = this.ping.isEnabled() ? var10 + "ms" : ""; + float var21 = var20.isEmpty() ? 0.0F : var6.width(var20); + float var22 = this.healthBar.isEnabled() ? 1.5F : 0.0F; + float var23 = this.healthBar.isEnabled() ? 2.5F : 0.0F; + float var24 = var12 == null ? 0.0F : var5.width(var12.label()); + float var25 = Math.max(var16, var5.height()); + float var26 = var5.width(var7); + if (!var8.isEmpty()) { + var26 += var5.width(var8); + } + + if (var24 > 0.0F) { + var26 += var24 + var15; + } + + if (var16 > 0.0F) { + var26 += var16 + var15; + } + + if (var17 > 0.0F) { + var26 += var18 + var15; + } + + if (var21 > 0.0F) { + var26 += var15 * 1.8F + var21; + } + + if (var19 > 0.0F) { + var26 += var15 + var19; + } + + float var27 = var26 + var13 * 2.0F; + float var28 = var25 + var14 * 2.0F + var23 + var22; + float var29 = -var27 / 2.0F; + float var30 = -var28; + arq var31 = asj.all(oc.CONTROL); + atb.drawShadow(var1.pose(), var29 - 0.5F, var30 - 0.5F, var27 + 1.0F, var28 + 1.0F, 4.0F, var31, var2.getColor().mulAlpha(0.12F * var4)); + var1.drawRoundedRect(var29, var30, var27, var28, var31, var2.getForegroundColor().mulAlpha(var4)); + atb.drawRoundedBorder(var1.pose(), var29, var30, var27, var28, pk.borderHairline(), var31, var2.getForegroundStroke().mulAlpha(var4)); + float var32 = var29 + var13; + float var33 = var30 + var14; + if (var17 > 0.0F) { + float var34 = var17 * 256.0F / 228.0F; + float var35 = var32 + var18 / 2.0F; + float var36 = var33 + var25 / 2.0F; + atb.drawRoundedTexture(var1.pose(), EVO_ICON, var35 - var34 / 2.0F, var36 - var34 / 2.0F, var34, var34, asj.all(oc.HAIRLINE), asu.WHITE.mulAlpha(var4)); + var32 += var18 + var15; + } + + if (var16 > 0.0F) { + atb.drawPlayerHeadWithRoundedShader( + var1.pose(), var3.getSkin().body().texturePath(), var32, var33 + (var25 - var16) / 2.0F, var16, asj.all(oc.CHIP), asu.WHITE.mulAlpha(var4) + ); + var32 += var16 + var15; + } + + float var46 = var33 + (var25 - var5.height()) / 2.0F; + if (var24 > 0.0F) { + var1.drawText(var5, var12.label(), var32, var46, var12.color().mulAlpha(var4)); + var32 += var24 + var15; + } + + aem var47 = aeo.styleFor(var3.getScoreboardName()); + if (var47 == null) { + var1.drawText(var5, var7, var32, var46, var2.getWhite().mulAlpha(var4)); + } else { + var1.drawText(var5, var7, var32, var46, aeo.colorizer(var47, var4)); + } + + var32 += var5.width(var7); + if (!var8.isEmpty()) { + var1.drawText( + var5, + var8, + var32, + var33 + (var25 - var5.height()) / 2.0F, + new asu( + 255, + 255, + (-7705351 | 7705436) + (-7705351 & 7705436) + ) + .mulAlpha(var4) + ); + var32 += var5.width(var8); + } + + if (var21 > 0.0F) { + var32 += var15 * 1.8F; + var1.drawText(var6, var20, var32, var33 + (var25 - var6.height()) / 2.0F, this.pingColor(var10).mulAlpha(var4)); + var32 += var21; + } + + if (var19 > 0.0F) { + var32 += var15; + float var48 = var19 / 16.0F; + var1.pushMatrix(); + var1.pose().translate(var32, var33 + (var25 - var19) / 2.0F); + var1.pose().scale(var48, var48); + var1.item(var11, 0, (1441363320 | -1441363320) + (1441363320 & -1441363320)); + var1.popMatrix(); + } + + if (var22 > 0.0F) { + float var49 = Mth.clamp(apo.getHealth(var3) / Math.max(1.0F, var3.getMaxHealth()), 0.0F, 1.0F); + float var37 = var29 + var13; + float var38 = var30 + var28 - var14 - var22; + float var39 = var27 - var13 * 2.0F; + arq var40 = asj.pill(var22); + var1.drawRoundedRect(var37, var38, var39, var22, var40, var2.getForegroundColor().darker(0.25F).mulAlpha(var4)); + float var41 = var39 * var49; + if (var41 > 0.5F) { + var1.drawRoundedRect(var37, var38, Math.max(var41, var22), var22, var40, this.healthColor(var49).mulAlpha(var4)); + } + } + + this.drawAddOffer(var1, var2, var3, var4, var29, var27, var30, var28); + } + + private void pulseOffer() { + this.offerAnim.jumpTo(Math.min(this.offerAnim.value(), 0.65F)); + } + + private void drawAddOffer(aru var1, mv var2, AbstractClientPlayer var3, float var4, float var5, float var6, float var7, float var8) { + int var9 = this.offerUuid != null && this.offerUuid.equals(var3.getUUID()) + ? 1: 0; + if (var9 != 0 && this.offerPhase != 0) { + long var10 = this.offerPhase == 1? (-7328638761809674023L | 7328638761809678023L) + (-7328638761809674023L & 7328638761809678023L) + : (7452669606256969610L | -7452669606256967810L) + (7452669606256969610L & -7452669606256967810L); + if (System.currentTimeMillis() - this.offerAt > var10) { + this.offerPhase = 0; + } + } + + int var23 = var9 != 0 && this.offerPhase != 0 + ? 1: 0; + float var11 = var23 != 0 ? 1.0F : 0.0F; + if (this.offerAnim.target() != var11) { + this.offerAnim.setRole(var23 != 0 ? ob.DELIBERATE : ob.FAST); + this.offerAnim.animateTo(var11); + } + + float var12 = this.offerAnim.update(); + float var13 = Math.max(0.0F, var12); + float var14 = Mth.clamp(var12, 0.0F, 1.0F); + if (var9 != 0 && !(var14 < 0.02F)) { + float var15 = 11.0F; + float var16 = var5 + var6 + 4.0F + var15 / 2.0F - (1.0F - var14) * (var15 + 4.0F); + float var17 = var7 + var8 / 2.0F; + var1.pushMatrix(); + var1.pose().translate(var16, var17); + var1.pose().scale(var13, var13); + var1.pose().rotate((float)Math.toRadians(90.0F * (1.0F - Math.min(var13, 1.0F)))); + var1.pose().translate(-var16, -var17); + + asu var18 = switch (this.offerPhase) { + case 2 -> OFFER_SUCCESS; + case 3 -> OFFER_FAILURE; + default -> var2.getColor(); + }; + float var19 = var4 * var14; + atb.drawShadow(var1.pose(), var16 - var15 / 2.0F, var17 - var15 / 2.0F, var15, var15, 3.5F, asj.pill(var15), var18.mulAlpha(0.14F * var19)); + var1.drawRoundedRect(var16 - var15 / 2.0F, var17 - var15 / 2.0F, var15, var15, asj.pill(var15), var18.mulAlpha(0.88F * var19)); + atb.drawRoundedBorder( + var1.pose(), var16 - var15 / 2.0F, var17 - var15 / 2.0F, var15, var15, pk.borderHairline(), asj.pill(var15), asu.WHITE.mulAlpha(0.18F * var19) + ); + asu var20 = asu.WHITE.mulAlpha(var19); + float var21 = 1.3F; + float var22 = var15 * 0.22F; + if (this.offerPhase == (-18152059 ^ 18152060) + ((-18152059 & 18152060) << 1)) { + var1.drawRoundedRect(var16 - var22, var17 - var21 / 2.0F, var22 * 2.0F, var21, asj.pill(var21), var20); + var1.drawRoundedRect(var16 - var21 / 2.0F, var17 - var22, var21, var22 * 2.0F, asj.pill(var21), var20); + } else { + var1.pose().translate(var16, var17); + var1.pose().rotate((float)Math.toRadians(this.offerPhase == 2? -45.0 : 45.0)); + var1.pose().translate(-var16, -var17); + if (this.offerPhase == (-1421932568 ^ 1421932570) + ((-1421932568 & 1421932570) << 1)) { + var1.drawRoundedRect(var16 - var22, var17 + var22 * 0.2F, var22 * 2.0F, var21, asj.pill(var21), var20); + var1.drawRoundedRect(var16 - var22, var17 - var22 * 0.8F, var21, var22, asj.pill(var21), var20); + } else { + var1.drawRoundedRect(var16 - var22, var17 - var21 / 2.0F, var22 * 2.0F, var21, asj.pill(var21), var20); + var1.drawRoundedRect(var16 - var21 / 2.0F, var17 - var22, var21, var22 * 2.0F, asj.pill(var21), var20); + } + } + + var1.popMatrix(); + } + } + + private boolean isOccluded(AbstractClientPlayer var1) { + Vec3 var2 = null; + ClipContext var3 = null; + int var5 = 0; + int var4 = -798115193; + + while (true) { + switch (var4) { + case -1991765044: + var5 = 0; + var4 = -1047063066; + break; + case -1865469792: + var5 = 1; + var4 = -1047063066; + break; + case -1047063066: + return (boolean)((var5) != 0); + case -798115193: + default: + var2 = mc.getEntityRenderDispatcher().camera.position(); + var3 = new ClipContext(var2, var1.getEyePosition(), Block.COLLIDER, Fluid.NONE, mc.player); + if (mc.level.clip(var3).getType() != Type.MISS) { + var4 = -1865469792; + } else { + var4 = -1991765044; + } + } + } + } + + private int latency(AbstractClientPlayer var1) { + int var3 = 0; + int var2 = -2120064752; + + while (true) { + switch (var2) { + case -2120064752: + default: + if (this.ping.isEnabled()) { + var2 = -996996769; + } else { + var2 = 1838465413; + } + break; + case -996996769: + var3 = latencyOf(var1.getUUID()); + var2 = 639201603; + break; + case 639201603: + return var3; + case 1838465413: + var3 = 0; + var2 = 639201603; + } + } + } + + private asu pingColor(int var1) { + int var2 = -2142030660; + + while (true) { + switch (var2) { + case -2142030660: + default: + if (var1 <= (-1887307150 ^ 1887307230) + ((-1887307150 & 1887307230) << 1)) { + var2 = 282847332; + } else { + var2 = 1454531425; + } + break; + case 282847332: + return this.pingFastColor.getColor(); + case 1024733367: + return this.pingMediumColor.getColor(); + case 1161219296: + return this.pingSlowColor.getColor(); + case 1454531425: + if (var1 <= (1472933944 ^ -1472933764) + ((1472933944 & -1472933764) << 1)) { + var2 = 1024733367; + } else { + var2 = 1161219296; + } + } + } + } + + private asu healthColor(float var1) { + return asu.lerp(this.healthLowColor.getColor(), this.healthFullColor.getColor(), Mth.clamp(var1, 0.0F, 1.0F)); + } +} diff --git a/src/main/java/defpackage/vv.java b/src/main/java/defpackage/vv.java new file mode 100644 index 0000000..c738960 --- /dev/null +++ b/src/main/java/defpackage/vv.java @@ -0,0 +1,187 @@ +package defpackage; + +@rn(name = "NoRender", category = rl.MISC, description = "Removes extra elements from the screen") +public final class vv extends rm { + public static final vv INSTANCE = new vv(); + private static final String FIRE_OPTION = "Fire"; + private static final String BAD_EFFECTS_OPTION = "Bad effects"; + private static final String SCOREBOARD_OPTION = "Scoreboard"; + private static final String BOSS_BAR_OPTION = "Boss bar"; + private final si settings; + + private vv() { + String var10003 = "Remove"; + sh[] var10004 = new sh[4]; + var10004[0] = sh.of( + "Fire", (boolean)((((-2063369504 ^ 2063369505) + ((-2063369504 & 2063369505) << 1)) + ) != 0)); + var10004[1] = sh.of( + "Bad effects", + (boolean)((((99984820 | -99984819) + (99984820 & -99984819)) + ) != 0)); + var10004[2] = sh.of( + "Scoreboard", + (boolean)((((-1617554755 | 1617554755) + (-1617554755 & 1617554755)) + ) != 0)); + var10004[3] = sh.of( + "Boss bar", (boolean)((((-1218792130 | 1218792130) + (-1218792130 & 1218792130)) + ) != 0)); + this.settings = new si(var10003, var10004) + .describe( + "Fire", + "Hide the fire overlay while you are burning" + ) + .describe( + "Bad effects", + "Hide the screen overlays of harmful potion effects" + ) + .describe( + "Scoreboard", + "Hide the server scoreboard sidebar" + ) + .describe( + "Boss bar", + "Hide the boss bars servers put at the top of the screen" + ) + .description( + "Screen effects that are hidden" + ); + } + + public boolean isRemoveFire() { + int var2 = 0; + int var1 = 709154607; + + while (true) { + switch (var1) { + case -1961649591: + var2 = 0; + var1 = 113705910; + break; + case -1442082791: + var2 = 1; + var1 = 113705910; + break; + case 113705910: + return (boolean)((var2) != 0); + case 709154607: + default: + if (this.isEnabled()) { + var1 = 1178785404; + } else { + var1 = -1961649591; + } + break; + case 1178785404: + if (this.settings.isEnable("Fire")) { + var1 = -1442082791; + } else { + var1 = -1961649591; + } + } + } + } + + public boolean isRemoveBadEffect() { + int var2 = 0; + int var1 = 1425987017; + + while (true) { + switch (var1) { + case -2132813559: + if (this.settings.isEnable("Bad effects")) { + var1 = 1443360432; + } else { + var1 = -1802732444; + } + break; + case -1802732444: + var2 = 0; + var1 = -831959957; + break; + case -831959957: + return (boolean)((var2) != 0); + case 1425987017: + default: + if (this.isEnabled()) { + var1 = -2132813559; + } else { + var1 = -1802732444; + } + break; + case 1443360432: + var2 = 1; + var1 = -831959957; + } + } + } + + public boolean isRemoveScoreboard() { + int var2 = 0; + int var1 = -1341952447; + + while (true) { + switch (var1) { + case -1998793251: + if (this.settings.isEnable("Scoreboard")) { + var1 = -876540998; + } else { + var1 = -164603950; + } + break; + case -1341952447: + default: + if (this.isEnabled()) { + var1 = -1998793251; + } else { + var1 = -164603950; + } + break; + case -876540998: + var2 = 1; + var1 = 743952309; + break; + case -164603950: + var2 = 0; + var1 = 743952309; + break; + case 743952309: + return (boolean)((var2) != 0); + } + } + } + + public boolean isRemoveBossBar() { + int var2 = 0; + int var1 = -1901142666; + + while (true) { + switch (var1) { + case -2010888079: + var2 = 0; + var1 = 26457907; + break; + case -1901142666: + default: + if (this.isEnabled()) { + var1 = -931874885; + } else { + var1 = -2010888079; + } + break; + case -931874885: + if (this.settings.isEnable("Boss bar")) { + var1 = 1823978872; + } else { + var1 = -2010888079; + } + break; + case 26457907: + return (boolean)((var2) != 0); + case 1823978872: + var2 = 1; + var1 = 26457907; + } + } + } +} diff --git a/src/main/java/defpackage/vw.java b/src/main/java/defpackage/vw.java new file mode 100644 index 0000000..57ffdf6 --- /dev/null +++ b/src/main/java/defpackage/vw.java @@ -0,0 +1,1343 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.Objects; +import java.util.concurrent.ThreadLocalRandom; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; +import org.joml.Quaternionf; +import org.joml.Quaternionfc; +import org.joml.Vector3f; +import org.joml.Vector3fc; + +final class vw { + private vx this$0; + + private Vec3 prevPos; + private Vec3 pos; + private Vec3 velocity; + private final int life; + private final float size; + private final double gravity; + private final String shape; + private final String effect; + private final int rgb; + private final float spin; + private final float spinSpeed; + private int age; + private float alpha; + private Vec3 centerPos; + private Entity target; + private Vector3f[] shardVerts; + private Vector3f shardAxis; + private float shardSpinSpeed; + private float shardSpin; + private Quaternionf[] slashRotations; + private float[] slashDelays; + private Quaternionf[] ringRotations; + private float targetWidth; + private float targetHeight; + + vw(vx var1, Vec3 var2, Vec3 var3, int var4, float var5, double var6, String var8, String var9, Entity var10, int var11) { + Objects.requireNonNull(var1); + this.this$0 = var1; + this.prevPos = var2; + this.pos = var2; + this.centerPos = var2; + this.velocity = var3; + this.life = Math.max(10, var4); + this.size = var5; + this.gravity = var6; + this.shape = var8; + this.effect = var9; + this.target = var10; + this.rgb = var11; + this.spin = ThreadLocalRandom.current().nextFloat() * 360.0F; + this.spinSpeed = (ThreadLocalRandom.current().nextFloat() - 0.5F) * 10.0F; + this.targetWidth = var10 != null ? var10.getBbWidth() : 1.0F; + this.targetHeight = var10 != null ? var10.getBbHeight() : 2.0F; + ThreadLocalRandom var12 = ThreadLocalRandom.current(); + if (var9.equals("Shatter")) { + this.shardVerts = new Vector3f[3]; + + for (int var13 = 0; + var13 < 3; + var13++ + ) { + this.shardVerts[var13] = new Vector3f(var12.nextFloat(-1.0F, 1.0F), var12.nextFloat(-1.0F, 1.0F), var12.nextFloat(-1.0F, 1.0F)) + .normalize() + .mul(var12.nextFloat(0.2F, 1.0F) * var5 * 1.5F); + } + + this.shardAxis = new Vector3f(var12.nextFloat(-1.0F, 1.0F), var12.nextFloat(-1.0F, 1.0F), var12.nextFloat(-1.0F, 1.0F)).normalize(); + this.shardSpinSpeed = var12.nextFloat(10.0F, 40.0F) + * ( + var12.nextBoolean() + ? 1: (1980394268 ^ -1980394269) + ((1980394268 & -1980394269) << 1) + ); + this.shardSpin = var12.nextFloat(0.0F, 360.0F); + } + + if (var9.equals("Rift")) { + int var17 = var12.nextInt( + 4, (2006206807 ^ -2006206800) + ((2006206807 & -2006206800) << 1) + ); + this.slashRotations = new Quaternionf[var17]; + this.slashDelays = new float[var17]; + + for (int var14 = 0; var14 < var17; var14++) { + Vector3f var15 = new Vector3f(var12.nextFloat(-1.0F, 1.0F), var12.nextFloat(-1.0F, 1.0F), var12.nextFloat(-1.0F, 1.0F)).normalize(); + float var16 = var12.nextFloat(0.0F, (float) (Math.PI * 2)); + this.slashRotations[var14] = new Quaternionf().fromAxisAngleRad(var15.x, var15.y, var15.z, var16); + this.slashDelays[var14] = var12.nextFloat(0.0F, 0.4F); + } + } + + if (var9.equals("Shockwave")) { + int var18 = 3; + this.ringRotations = new Quaternionf[var18]; + + for (int var19 = 0; var19 < var18; var19++) { + Vector3f var20 = new Vector3f(var12.nextFloat(-1.0F, 1.0F), var12.nextFloat(-1.0F, 1.0F), var12.nextFloat(-1.0F, 1.0F)).normalize(); + float var21 = var12.nextFloat(0.0F, (float) (Math.PI * 2)); + this.ringRotations[var19] = new Quaternionf().fromAxisAngleRad(var20.x, var20.y, var20.z, var21); + } + } + } + + boolean tick() { + this.age += 1; + if (this.age > this.life) { + return (boolean)(((1)) != 0); + } + + if (this.age <= 4.0F) { + this.alpha = this.age / 4.0F; + } else if (this.age < this.life - 4.0F) { + this.alpha = 1.0F; + } else { + this.alpha = (this.life - this.age) / 4.0F; + } + + if (!this.effect.equals("Rift") + && !this.effect.equals("MagicCircle") + && !this.effect.equals("Shockwave")) { + if (this.target != null && this.target.isAlive()) { + this.centerPos = new Vec3(this.target.getX(), this.target.getY() + this.target.getBbHeight() * 0.5F, this.target.getZ()); + } + + this.prevPos = this.pos; + String var1 = this.shape; + int var2 = -1; + switch (var1.hashCode()) { + case -2018804923: + if (var1.equals("Linear")) { + var2 = 1; + } + break; + case -1997763702: + if (var1.equals("Magnet")) { + var2 = 2; + } + break; + case 1945176622: + if (var1.equals("Gravity")) { + var2 = 0; + } + } + return switch (var2) { + case 0 -> this.tickGravity(); + case 1 -> this.tickLinear(); + case 2 -> this.tickMagnet(); + default -> this.tickRealistic(); + }; + } else { + return (boolean)(((0)) != 0); + } + } + + private Vec3 jitter(double var1) { + ThreadLocalRandom var3 = ThreadLocalRandom.current(); + return new Vec3(var3.nextDouble(-var1, var1), var3.nextDouble(-var1, var1), var3.nextDouble(-var1, var1)); + } + + private boolean tickRealistic() { + Vec3 var1 = null; + BlockHitResult var2 = null; + Direction var3 = null; + Vec3 var4 = null; + Vec3 var5 = null; + int var6 = -1880411822; + + while (true) { + switch (var6) { + case -1880411822: + default: + this.velocity = this.velocity.scale(0.98).add(0.0, -this.this$0.gravitySetting.getCurrent(), 0.0).add(this.jitter(0.01F)); + var1 = this.pos.add(this.velocity); + var2 = aqg.mc.level.clip(new ClipContext(this.pos, var1, Block.COLLIDER, Fluid.NONE, aqg.mc.player)); + if (var2.getType() == Type.BLOCK) { + var6 = 507752806; + } else { + var6 = 1135620160; + } + break; + case 507752806: + var3 = var2.getDirection(); + var4 = new Vec3(var3.getStepX(), var3.getStepY(), var3.getStepZ()); + var5 = this.velocity.subtract(var4.scale(2.0 * this.velocity.dot(var4))); + if (var5.length() >= 0.1) { + var6 = 832954926; + } else { + var6 = 623884081; + } + break; + case 623884081: + this.velocity = Vec3.ZERO; + var1 = var2.getLocation(); + var6 = 1135620160; + break; + case 832954926: + this.velocity = var5.scale(0.5); + var1 = var2.getLocation().add(this.velocity.normalize().scale(0.001)); + var6 = 1135620160; + break; + case 1135620160: + this.pos = var1; + return (boolean)(((0)) != 0); + } + } + } + + private boolean tickGravity() { + this.velocity = this.velocity.scale(0.98).add(0.0, -this.this$0.gravitySetting.getCurrent(), 0.0).add(this.jitter(0.01F)); + this.pos = this.pos.add(this.velocity); + return this.insideBlock(); + } + + private boolean tickLinear() { + this.pos = this.pos.add(this.velocity); + return this.insideBlock(); + } + + private boolean tickMagnet() { + Vec3 var1 = null; + double var2 = 0.0; + int var4 = -401091698; + + while (true) { + switch (var4) { + case -1626229708: + this.velocity = this.velocity.add(var1.normalize().scale(0.02 * (1.0 / Math.max(var2, 1.0)))); + var4 = 194057534; + break; + case -401091698: + default: + var1 = aqg.mc.player.getEyePosition().subtract(this.pos); + var2 = var1.length(); + if (var2 > 0.1) { + var4 = -1626229708; + } else { + var4 = 194057534; + } + break; + case 194057534: + this.velocity = this.velocity.scale(0.98).add(this.jitter(0.008F)); + this.pos = this.pos.add(this.velocity); + return (boolean)(((0)) != 0); + } + } + } + + private boolean insideBlock() { + BlockPos var1 = null; + BlockState var2 = null; + double var3 = 0.0; + double var5 = 0.0; + double var7 = 0.0; + double var9 = 0.0; + int var12 = 0; + int var11 = -2070463376; + + while (true) { + switch (var11) { + case -2070463376: + default: + var1 = BlockPos.containing(this.pos); + var2 = aqg.mc.level.getBlockState(var1); + if (!var2.isRedstoneConductor(aqg.mc.level, var1)) { + var11 = -1667149886; + } else { + var11 = -1511403229; + } + break; + case -1667149886: + return (boolean)(((0)) != 0); + case -1511403229: + var3 = this.size * 0.5F; + var5 = this.pos.x - var1.getX(); + var7 = this.pos.y - var1.getY(); + var9 = this.pos.z - var1.getZ(); + if (!(var5 <= var3)) { + var11 = 1564532479; + } else { + var11 = 603708302; + } + break; + case -839726528: + if (!(var9 <= var3)) { + var11 = 667135285; + } else { + var11 = 603708302; + } + break; + case -737180687: + if (!(var7 >= 1.0 - var3)) { + var11 = -839726528; + } else { + var11 = 603708302; + } + break; + case -508386280: + if (!(var7 <= var3)) { + var11 = -737180687; + } else { + var11 = 603708302; + } + break; + case 603708302: + var12 = 0; + var11 = 1513997526; + break; + case 661906108: + var12 = 1; + var11 = 1513997526; + break; + case 667135285: + if (!(var9 >= 1.0 - var3)) { + var11 = 661906108; + } else { + var11 = 603708302; + } + break; + case 1513997526: + return (boolean)((var12) != 0); + case 1564532479: + if (!(var5 >= 1.0 - var3)) { + var11 = -508386280; + } else { + var11 = 603708302; + } + } + } + } + + private int getLavaColor(float var1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + float var8 = 0.0F; + int var9 = 0; + int var10 = 0; + int var11 = 0; + int var12 = -1637799127; + + while (true) { + switch (var12) { + case -2144273443: + if (var1 < 0.85F) { + var12 = 1976966048; + } else { + var12 = 461421056; + } + break; + case -1685352266: + var2 = 255; + var3 = 255; + var4 = 255; + var5 = 255; + var6 = 230; + var7 = 70; + var8 = var1 / 0.25F; + var12 = -1003311665; + break; + case -1637799127: + default: + if (var1 < 0.25F) { + var12 = -1685352266; + } else { + var12 = 1557997569; + } + break; + case -1003311665: + var9 = Math.round(var2 + (var5 - var2) * var8); + var10 = Math.round(var3 + (var6 - var3) * var8); + var11 = Math.round(var4 + (var7 - var4) * var8); + return var9 << (1962768015 | -1962767999) + (1962768015 & -1962767999) + | var10 << (-2039043728 ^ 2039043736) + ((-2039043728 & 2039043736) << 1) + | var11; + case -73828429: + var2 = 255; + var3 = 230; + var4 = 70; + var5 = 255; + var6 = 51; + var7 = 0; + var8 = (var1 - 0.25F) / 0.35000002F; + var12 = -1003311665; + break; + case 461421056: + var2 = 34; + var3 = 17; + var4 = 17; + var5 = 16; + var6 = 16; + var7 = 16; + var8 = (var1 - 0.85F) / 0.14999998F; + var12 = -1003311665; + break; + case 1557997569: + if (var1 < 0.6F) { + var12 = -73828429; + } else { + var12 = -2144273443; + } + break; + case 1976966048: + var2 = 255; + var3 = 51; + var4 = 0; + var5 = 34; + var6 = 17; + var7 = 17; + var8 = (var1 - 0.6F) / 0.25F; + var12 = -1003311665; + } + } + } + + void render(VertexConsumer var1, Pose var2, Vec3 var3, Quaternionf var4, float var5) { + if (!(this.alpha <= 0.0F)) { + if (( + this.effect.equals("Rift") + || this.effect.equals("MagicCircle") + || this.effect.equals("Shockwave") + ) + && this.target != null + && this.target.isAlive()) { + Vec3 var6 = this.target.getPosition(var5); + double var7 = this.effect.equals("MagicCircle") + ? 0.05 + : this.target.getBbHeight() * 0.5F; + this.centerPos = new Vec3(var6.x, var6.y + var7, var6.z); + } + + if (this.effect.equals("Shatter")) { + this.renderShatter(var1, var2, var3, var5); + } else if (this.effect.equals("Rift")) { + this.renderVoidTear(var1, var2, var3, var5); + } else if (this.effect.equals("MagicCircle")) { + this.renderHexSeal(var1, var2, var3, var5); + } else if (this.effect.equals("Shockwave")) { + this.renderCrystallineStarburst(var1, var2, var3, var5); + } else { + double var16 = this.prevPos.x + (this.pos.x - this.prevPos.x) * var5 - var3.x; + double var8 = this.prevPos.y + (this.pos.y - this.prevPos.y) * var5 - var3.y; + double var10 = this.prevPos.z + (this.pos.z - this.prevPos.z) * var5 - var3.z; + float var12 = this.spin + (this.age + var5) * this.spinSpeed; + float var13 = (float)Math.toRadians(var12); + String var14 = this.effect; + int var15 = -1; + switch (var14.hashCode()) { + case -2137389811: + if (var14.equals("Hearts")) { + var15 = 1; + } + break; + case 2361088: + if (var14.equals("Lava")) { + var15 = 4; + } + break; + case 78965795: + if (var14.equals("Rings")) { + var15 = 3; + } + break; + case 80204865: + if (var14.equals("Stars")) { + var15 = 0; + } + break; + case 2126137917: + if (var14.equals("Sparkles")) { + var15 = 2; + } + } + + switch (var15) { + case 0: + this.renderStars(var1, var2, var16, var8, var10, var4); + break; + case 1: + this.renderHearts(var1, var2, var16, var8, var10, var4); + break; + case 2: + this.renderSparkles(var1, var2, var16, var8, var10, var4); + break; + case 3: + this.renderRings(var1, var2, var16, var8, var10, var4, var13); + break; + case 4: + this.renderLava(var1, var2, var16, var8, var10, var4); + break; + default: + this.renderOrbs(var1, var2, var16, var8, var10, var4, var13); + } + } + } + } + + private void renderShatter(VertexConsumer var1, Pose var2, Vec3 var3, float var4) { + float var5 = 0.0F; + int var6 = 0; + int var7 = 0; + float var8 = 0.0F; + Quaternionfc var9 = null; + double var10 = 0.0; + double var12 = 0.0; + double var14 = 0.0; + Vector3fc var16 = null; + Vector3fc var17 = null; + Vector3fc var18 = null; + Object var19 = null; + int var20 = -1718301160; + + while (true) { + switch (var20) { + case -1718301160: + default: + var5 = 1.0F; + if (this.age > this.life - ((1907271398 | -1907271393) + (1907271398 & -1907271393))) { + var20 = 1860474709; + } else { + var20 = 841329122; + } + break; + case 841329122: + if (var5 < 0.0F) { + var20 = 983009087; + } else { + var20 = 1329417121; + } + break; + case 983009087: + var5 = 0.0F; + var20 = 1329417121; + break; + case 1329417121: + var6 = vx.withAlpha(this.rgb, var5); + var7 = vx.withAlpha(this.rgb, var5 * 0.3F); + var8 = this.shardSpin + (this.age + var4) * this.shardSpinSpeed; + var9 = new Quaternionf().fromAxisAngleRad(this.shardAxis.x, this.shardAxis.y, this.shardAxis.z, (float)Math.toRadians(var8)); + var10 = this.prevPos.x + (this.pos.x - this.prevPos.x) * var4 - var3.x; + var12 = this.prevPos.y + (this.pos.y - this.prevPos.y) * var4 - var3.y; + var14 = this.prevPos.z + (this.pos.z - this.prevPos.z) * var4 - var3.z; + var16 = new Vector3f(this.shardVerts[0]).rotate(var9); + var17 = new Vector3f(this.shardVerts[1]).rotate(var9); + var18 = new Vector3f(this.shardVerts[2]).rotate(var9); + var19 = new Vector3f(var16).add(var17).add(var18).mul(0.3333F); + var1.addVertex(var2, (float)(var10 + ((Vector3f)var19).x), (float)(var12 + ((Vector3f)var19).y), (float)(var14 + ((Vector3f)var19).z)) + .setColor(var6); + var1.addVertex(var2, (float)(var10 + var16.x()), (float)(var12 + var16.y()), (float)(var14 + var16.z())).setColor(var7); + var1.addVertex(var2, (float)(var10 + var17.x()), (float)(var12 + var17.y()), (float)(var14 + var17.z())).setColor(var7); + var1.addVertex(var2, (float)(var10 + ((Vector3f)var19).x), (float)(var12 + ((Vector3f)var19).y), (float)(var14 + ((Vector3f)var19).z)) + .setColor(var6); + var1.addVertex(var2, (float)(var10 + ((Vector3f)var19).x), (float)(var12 + ((Vector3f)var19).y), (float)(var14 + ((Vector3f)var19).z)) + .setColor(var6); + var1.addVertex(var2, (float)(var10 + var17.x()), (float)(var12 + var17.y()), (float)(var14 + var17.z())).setColor(var7); + var1.addVertex(var2, (float)(var10 + var18.x()), (float)(var12 + var18.y()), (float)(var14 + var18.z())).setColor(var7); + var1.addVertex(var2, (float)(var10 + ((Vector3f)var19).x), (float)(var12 + ((Vector3f)var19).y), (float)(var14 + ((Vector3f)var19).z)) + .setColor(var6); + var1.addVertex(var2, (float)(var10 + ((Vector3f)var19).x), (float)(var12 + ((Vector3f)var19).y), (float)(var14 + ((Vector3f)var19).z)) + .setColor(var6); + var1.addVertex(var2, (float)(var10 + var18.x()), (float)(var12 + var18.y()), (float)(var14 + var18.z())).setColor(var7); + var1.addVertex(var2, (float)(var10 + var16.x()), (float)(var12 + var16.y()), (float)(var14 + var16.z())).setColor(var7); + var1.addVertex(var2, (float)(var10 + ((Vector3f)var19).x), (float)(var12 + ((Vector3f)var19).y), (float)(var14 + ((Vector3f)var19).z)) + .setColor(var6); + var1.addVertex(var2, (float)(var10 + ((Vector3f)var19).x), (float)(var12 + ((Vector3f)var19).y), (float)(var14 + ((Vector3f)var19).z)) + .setColor(var6); + var1.addVertex(var2, (float)(var10 + var17.x()), (float)(var12 + var17.y()), (float)(var14 + var17.z())).setColor(var7); + var1.addVertex(var2, (float)(var10 + var16.x()), (float)(var12 + var16.y()), (float)(var14 + var16.z())).setColor(var7); + var1.addVertex(var2, (float)(var10 + ((Vector3f)var19).x), (float)(var12 + ((Vector3f)var19).y), (float)(var14 + ((Vector3f)var19).z)) + .setColor(var6); + var1.addVertex(var2, (float)(var10 + ((Vector3f)var19).x), (float)(var12 + ((Vector3f)var19).y), (float)(var14 + ((Vector3f)var19).z)) + .setColor(var6); + var1.addVertex(var2, (float)(var10 + var18.x()), (float)(var12 + var18.y()), (float)(var14 + var18.z())).setColor(var7); + var1.addVertex(var2, (float)(var10 + var17.x()), (float)(var12 + var17.y()), (float)(var14 + var17.z())).setColor(var7); + var1.addVertex(var2, (float)(var10 + ((Vector3f)var19).x), (float)(var12 + ((Vector3f)var19).y), (float)(var14 + ((Vector3f)var19).z)) + .setColor(var6); + var1.addVertex(var2, (float)(var10 + ((Vector3f)var19).x), (float)(var12 + ((Vector3f)var19).y), (float)(var14 + ((Vector3f)var19).z)) + .setColor(var6); + var1.addVertex(var2, (float)(var10 + var16.x()), (float)(var12 + var16.y()), (float)(var14 + var16.z())).setColor(var7); + var1.addVertex(var2, (float)(var10 + var18.x()), (float)(var12 + var18.y()), (float)(var14 + var18.z())).setColor(var7); + var1.addVertex(var2, (float)(var10 + ((Vector3f)var19).x), (float)(var12 + ((Vector3f)var19).y), (float)(var14 + ((Vector3f)var19).z)) + .setColor(var6); + return; + case 1860474709: + var5 = (this.life - this.age - var4) / 5.0F; + var20 = 841329122; + } + } + } + + private void renderVoidTear(VertexConsumer var1, Pose var2, Vec3 var3, float var4) { + float var5 = this.age + var4; + float var6 = var5 / this.life; + float var7 = this.size * 3.0F * (float)Math.sin(var6 * Math.PI); + int var8 = vx.withAlpha(0, 1.0F); + int var9 = vx.withAlpha(this.rgb, 0.5F); + double var10 = this.centerPos.x - var3.x; + double var12 = this.centerPos.y - var3.y; + double var14 = this.centerPos.z - var3.z; + float var16 = (1.0F + (float)Math.sqrt(5.0)) / 2.0F; + Vector3f[] var10000 = new Vector3f[12]; + var10000[0] = new Vector3f(-1.0F, var16, 0.0F).normalize(); + var10000[1] = new Vector3f(1.0F, var16, 0.0F).normalize(); + var10000[2] = new Vector3f(-1.0F, -var16, 0.0F).normalize(); + var10000[3] = new Vector3f(1.0F, -var16, 0.0F).normalize(); + var10000[4] = new Vector3f(0.0F, -1.0F, var16).normalize(); + var10000[5] = new Vector3f(0.0F, 1.0F, var16).normalize(); + var10000[6] = new Vector3f(0.0F, -1.0F, -var16).normalize(); + var10000[7] = new Vector3f(0.0F, 1.0F, -var16).normalize(); + var10000[8] = new Vector3f(var16, 0.0F, -1.0F).normalize(); + var10000[9] = new Vector3f(var16, 0.0F, 1.0F).normalize(); + var10000[10] = new Vector3f(-var16, 0.0F, -1.0F).normalize(); + var10000[11] = new Vector3f(-var16, 0.0F, 1.0F).normalize(); + Vector3f[] var17 = var10000; + int[][] var48 = new int[20][]; + int var10002 = 0; + int[] var10003 = new int[3]; + var10003[0] = 0; + var10003[1] = 11; + var10003[2] = 5; + var48[var10002] = var10003; + var10002 = 1; + var10003 = new int[3]; + var10003[0] = 0; + var10003[1] = 5; + var10003[2] = 1; + var48[var10002] = var10003; + var10002 = 2; + var10003 = new int[3]; + var10003[0] = 0; + var10003[1] = 1; + var10003[2] = 7; + var48[var10002] = var10003; + var10002 = 3; + var10003 = new int[3]; + var10003[0] = 0; + var10003[1] = 7; + var10003[2] = 10; + var48[var10002] = var10003; + var10002 = 4; + var10003 = new int[3]; + var10003[0] = 0; + var10003[1] = 10; + var10003[2] = 11; + var48[var10002] = var10003; + var10002 = 5; + var10003 = new int[3]; + var10003[0] = 1; + var10003[1] = 5; + var10003[2] = 9; + var48[var10002] = var10003; + var10002 = 6; + var10003 = new int[3]; + var10003[0] = 5; + var10003[1] = 11; + var10003[2] = 4; + var48[var10002] = var10003; + var10002 = 7; + var10003 = new int[3]; + var10003[0] = 11; + var10003[1] = 10; + var10003[2] = 2; + var48[var10002] = var10003; + var10002 = 8; + var10003 = new int[3]; + var10003[0] = 10; + var10003[1] = 7; + var10003[2] = 6; + var48[var10002] = var10003; + var10002 = 9; + var10003 = new int[3]; + var10003[0] = 7; + var10003[1] = 1; + var10003[2] = 8; + var48[var10002] = var10003; + var10002 = 10; + var10003 = new int[3]; + var10003[0] = 3; + var10003[1] = 9; + var10003[2] = 4; + var48[var10002] = var10003; + var10002 = 11; + var10003 = new int[3]; + var10003[0] = 3; + var10003[1] = 4; + var10003[2] = 2; + var48[var10002] = var10003; + var10002 = 12; + var10003 = new int[3]; + var10003[0] = 3; + var10003[1] = 2; + var10003[2] = 6; + var48[var10002] = var10003; + var10002 = 13; + var10003 = new int[3]; + var10003[0] = 3; + var10003[1] = 6; + var10003[2] = 8; + var48[var10002] = var10003; + var10002 = 14; + var10003 = new int[3]; + var10003[0] = 3; + var10003[1] = 8; + var10003[2] = 9; + var48[var10002] = var10003; + var10002 = 15; + var10003 = new int[3]; + var10003[0] = 4; + var10003[1] = 9; + var10003[2] = 5; + var48[var10002] = var10003; + var10002 = 16; + var10003 = new int[3]; + var10003[0] = 2; + var10003[1] = 4; + var10003[2] = 11; + var48[var10002] = var10003; + var10002 = 17; + var10003 = new int[3]; + var10003[0] = 6; + var10003[1] = 2; + var10003[2] = 10; + var48[var10002] = var10003; + var10002 = 18; + var10003 = new int[3]; + var10003[0] = 8; + var10003[1] = 6; + var10003[2] = 7; + var48[var10002] = var10003; + var10002 = 19; + var10003 = new int[3]; + var10003[0] = 9; + var10003[1] = 8; + var10003[2] = 1; + var48[var10002] = var10003; + int[][] var18 = var48; + Quaternionf var19 = new Quaternionf().rotateY(var5 * 0.1F).rotateX(var5 * 0.05F); + int[][] var20 = var18; + int var21 = var20.length; + + for (int var22 = 0; var22 < var21; var22++) { + int[] var23 = var20[var22]; + Vector3f var24 = new Vector3f(var17[var23[0]]).rotate(var19).mul(var7); + Vector3f var25 = new Vector3f(var17[var23[1]]).rotate(var19).mul(var7); + Vector3f var26 = new Vector3f(var17[var23[2]]).rotate(var19).mul(var7); + Vector3f var27 = new Vector3f(var24).add(var25).add(var26).mul(0.3333F); + var1.addVertex(var2, (float)var10 + var27.x, (float)var12 + var27.y, (float)var14 + var27.z).setColor(var8); + var1.addVertex(var2, (float)var10 + var24.x, (float)var12 + var24.y, (float)var14 + var24.z).setColor(var9); + var1.addVertex(var2, (float)var10 + var25.x, (float)var12 + var25.y, (float)var14 + var25.z).setColor(var9); + var1.addVertex(var2, (float)var10 + var27.x, (float)var12 + var27.y, (float)var14 + var27.z).setColor(var8); + var1.addVertex(var2, (float)var10 + var27.x, (float)var12 + var27.y, (float)var14 + var27.z).setColor(var8); + var1.addVertex(var2, (float)var10 + var25.x, (float)var12 + var25.y, (float)var14 + var25.z).setColor(var9); + var1.addVertex(var2, (float)var10 + var26.x, (float)var12 + var26.y, (float)var14 + var26.z).setColor(var9); + var1.addVertex(var2, (float)var10 + var27.x, (float)var12 + var27.y, (float)var14 + var27.z).setColor(var8); + var1.addVertex(var2, (float)var10 + var27.x, (float)var12 + var27.y, (float)var14 + var27.z).setColor(var8); + var1.addVertex(var2, (float)var10 + var26.x, (float)var12 + var26.y, (float)var14 + var26.z).setColor(var9); + var1.addVertex(var2, (float)var10 + var24.x, (float)var12 + var24.y, (float)var14 + var24.z).setColor(var9); + var1.addVertex(var2, (float)var10 + var27.x, (float)var12 + var27.y, (float)var14 + var27.z).setColor(var8); + } + + for (int var40 = 0; var40 < this.slashRotations.length; var40++) { + float var41 = (var6 - this.slashDelays[var40]) / (1.0F - this.slashDelays[var40]); + if (!(var41 < 0.0F)) { + float var42 = this.size * 6.0F * (float)Math.pow(var41, 0.2); + float var43 = this.size * 0.8F * (1.0F - var41); + int var44 = vx.withAlpha(this.rgb, 1.0F - var41); + int var45 = vx.withAlpha(16777215, (1.0F - var41) * 0.5F); + int var46 = vx.withAlpha(this.rgb, 0.0F); + int var47 = 24; + float var28 = (float) (Math.PI * 3.0 / 2.0); + + for (int var29 = 0; var29 < var47; var29++) { + float var30 = -var28 / 2.0F + (float)var29 / var47 * var28; + float var31 = -var28 / 2.0F + (float)(var29 + (2110901801 ^ -2110901800) + ((2110901801 & -2110901800) << 1)) / var47 * var28; + float var32 = (float)Math.cos(var30 / var28 * Math.PI); + float var33 = (float)Math.cos(var31 / var28 * Math.PI); + Vector3f var34 = new Vector3f((float)Math.cos(var30) * (var42 - var43 * var32), (float)Math.sin(var30) * (var42 - var43 * var32), 0.0F) + .rotate(this.slashRotations[var40]); + Vector3f var35 = new Vector3f((float)Math.cos(var30) * (var42 + var43 * var32), (float)Math.sin(var30) * (var42 + var43 * var32), 0.0F) + .rotate(this.slashRotations[var40]); + Vector3f var36 = new Vector3f((float)Math.cos(var30) * var42, (float)Math.sin(var30) * var42, 0.0F).rotate(this.slashRotations[var40]); + Vector3f var37 = new Vector3f((float)Math.cos(var31) * (var42 - var43 * var33), (float)Math.sin(var31) * (var42 - var43 * var33), 0.0F) + .rotate(this.slashRotations[var40]); + Vector3f var38 = new Vector3f((float)Math.cos(var31) * (var42 + var43 * var33), (float)Math.sin(var31) * (var42 + var43 * var33), 0.0F) + .rotate(this.slashRotations[var40]); + Vector3f var39 = new Vector3f((float)Math.cos(var31) * var42, (float)Math.sin(var31) * var42, 0.0F).rotate(this.slashRotations[var40]); + var1.addVertex(var2, (float)var10 + var34.x, (float)var12 + var34.y, (float)var14 + var34.z).setColor(var46); + var1.addVertex(var2, (float)var10 + var36.x, (float)var12 + var36.y, (float)var14 + var36.z).setColor(var45); + var1.addVertex(var2, (float)var10 + var39.x, (float)var12 + var39.y, (float)var14 + var39.z).setColor(var45); + var1.addVertex(var2, (float)var10 + var37.x, (float)var12 + var37.y, (float)var14 + var37.z).setColor(var46); + var1.addVertex(var2, (float)var10 + var36.x, (float)var12 + var36.y, (float)var14 + var36.z).setColor(var45); + var1.addVertex(var2, (float)var10 + var35.x, (float)var12 + var35.y, (float)var14 + var35.z).setColor(var46); + var1.addVertex(var2, (float)var10 + var38.x, (float)var12 + var38.y, (float)var14 + var38.z).setColor(var46); + var1.addVertex(var2, (float)var10 + var39.x, (float)var12 + var39.y, (float)var14 + var39.z).setColor(var45); + } + } + } + } + + private void renderHexSeal(VertexConsumer var1, Pose var2, Vec3 var3, float var4) { + float var5 = this.age + var4; + float var6 = var5 / this.life; + float var7 = Math.min(1.0F, var6 / 0.15F); + float var8 = var6 < 0.1F ? var6 / 0.1F : 1.0F - (var6 - 0.1F) / 0.9F; + int var9 = vx.withAlpha(this.rgb, var8 * 0.8F); + int var10 = vx.withAlpha(this.rgb, 0.0F); + float var11 = Math.max(0.7F, this.targetWidth * 1.2F) * (float)Math.pow(var7, 0.5); + double var12 = this.centerPos.x - var3.x; + double var14 = this.centerPos.y - var3.y; + double var16 = this.centerPos.z - var3.z; + int var18 = vx.withAlpha(this.rgb, var8 * 0.3F); + + for (int var19 = 0; var19 < 64; var19++) { + double var20 = (Math.PI * 2) * var19 / 64.0; + double var22 = (Math.PI * 2) * (var19 + (-1876239890 | 1876239891) + (-1876239890 & 1876239891)) / 64.0; + float var24 = (float)Math.cos(var20) * var11; + float var25 = (float)Math.sin(var20) * var11; + float var26 = (float)Math.cos(var22) * var11; + float var27 = (float)Math.sin(var22) * var11; + var1.addVertex(var2, (float)var12, (float)var14, (float)var16).setColor(var18); + var1.addVertex(var2, (float)var12 + var24, (float)var14, (float)var16 + var25).setColor(var10); + var1.addVertex(var2, (float)var12 + var26, (float)var14, (float)var16 + var27).setColor(var10); + var1.addVertex(var2, (float)var12, (float)var14, (float)var16).setColor(var18); + } + + int var37 = 32; + float var38 = this.targetHeight * 1.5F; + int var21 = vx.withAlpha(this.rgb, var8 * 0.4F); + + for (int var39 = 0; var39 < var37; var39++) { + double var23 = (Math.PI * 2) * var39 / var37; + double var43 = (Math.PI * 2) * (var39 + (-125199685 | 125199686) + (-125199685 & 125199686)) / var37; + float var47 = (float)Math.cos(var23) * var11; + float var28 = (float)Math.sin(var23) * var11; + float var29 = (float)Math.cos(var43) * var11; + float var30 = (float)Math.sin(var43) * var11; + var1.addVertex(var2, (float)var12 + var47, (float)var14, (float)var16 + var28).setColor(var21); + var1.addVertex(var2, (float)var12 + var29, (float)var14, (float)var16 + var30).setColor(var21); + var1.addVertex(var2, (float)var12 + var29, (float)var14 + var38, (float)var16 + var30).setColor(var10); + var1.addVertex(var2, (float)var12 + var47, (float)var14 + var38, (float)var16 + var28).setColor(var10); + } + + Quaternionf var40 = new Quaternionf().rotateY((float)Math.toRadians(var5 * 5.0F)); + float var41 = var11; + float var42 = this.size * 0.025F; + int var44 = 96; + + for (int var45 = 0; var45 < var44; var45++) { + double var48 = (Math.PI * 2) * var45 / var44; + double var50 = (Math.PI * 2) * (var45 + (992511407 ^ -992511406) + ((992511407 & -992511406) << 1)) / var44; + Vector3f var31 = new Vector3f((float)Math.cos(var48) * (var41 - var42), 0.0F, (float)Math.sin(var48) * (var41 - var42)).rotate(var40); + Vector3f var32 = new Vector3f((float)Math.cos(var48) * var41, 0.0F, (float)Math.sin(var48) * var41).rotate(var40); + Vector3f var33 = new Vector3f((float)Math.cos(var48) * (var41 + var42), 0.0F, (float)Math.sin(var48) * (var41 + var42)).rotate(var40); + Vector3f var34 = new Vector3f((float)Math.cos(var50) * (var41 - var42), 0.0F, (float)Math.sin(var50) * (var41 - var42)).rotate(var40); + Vector3f var35 = new Vector3f((float)Math.cos(var50) * var41, 0.0F, (float)Math.sin(var50) * var41).rotate(var40); + Vector3f var36 = new Vector3f((float)Math.cos(var50) * (var41 + var42), 0.0F, (float)Math.sin(var50) * (var41 + var42)).rotate(var40); + var1.addVertex(var2, (float)var12 + var31.x, (float)var14, (float)var16 + var31.z).setColor(var10); + var1.addVertex(var2, (float)var12 + var32.x, (float)var14, (float)var16 + var32.z).setColor(var9); + var1.addVertex(var2, (float)var12 + var35.x, (float)var14, (float)var16 + var35.z).setColor(var9); + var1.addVertex(var2, (float)var12 + var34.x, (float)var14, (float)var16 + var34.z).setColor(var10); + var1.addVertex(var2, (float)var12 + var32.x, (float)var14, (float)var16 + var32.z).setColor(var9); + var1.addVertex(var2, (float)var12 + var33.x, (float)var14, (float)var16 + var33.z).setColor(var10); + var1.addVertex(var2, (float)var12 + var36.x, (float)var14, (float)var16 + var36.z).setColor(var10); + var1.addVertex(var2, (float)var12 + var35.x, (float)var14, (float)var16 + var35.z).setColor(var9); + } + + for (int var46 = 0; var46 < 5; var46++) { + double var49 = (Math.PI * 2) * var46 / 5.0; + double var51 = (Math.PI * 2) * (var46 + (1507408006 | -1507408004) + (1507408006 & -1507408004)) / 5.0; + Vector3f var52 = new Vector3f((float)Math.cos(var49) * var41, 0.0F, (float)Math.sin(var49) * var41).rotate(var40); + Vector3f var53 = new Vector3f((float)Math.cos(var51) * var41, 0.0F, (float)Math.sin(var51) * var41).rotate(var40); + Vector3f var54 = new Vector3f(var53).sub(var52).normalize(); + Vector3f var55 = new Vector3f(0.0F, 1.0F, 0.0F).cross(var54).normalize().mul(this.size * 0.02F); + var1.addVertex(var2, (float)var12 + var52.x - var55.x, (float)var14, (float)var16 + var52.z - var55.z).setColor(var10); + var1.addVertex(var2, (float)var12 + var52.x, (float)var14, (float)var16 + var52.z).setColor(var9); + var1.addVertex(var2, (float)var12 + var53.x, (float)var14, (float)var16 + var53.z).setColor(var9); + var1.addVertex(var2, (float)var12 + var53.x - var55.x, (float)var14, (float)var16 + var53.z - var55.z).setColor(var10); + var1.addVertex(var2, (float)var12 + var52.x, (float)var14, (float)var16 + var52.z).setColor(var9); + var1.addVertex(var2, (float)var12 + var52.x + var55.x, (float)var14, (float)var16 + var52.z + var55.z).setColor(var10); + var1.addVertex(var2, (float)var12 + var53.x + var55.x, (float)var14, (float)var16 + var53.z + var55.z).setColor(var10); + var1.addVertex(var2, (float)var12 + var53.x, (float)var14, (float)var16 + var53.z).setColor(var9); + } + } + + private void renderCrystallineStarburst(VertexConsumer var1, Pose var2, Vec3 var3, float var4) { + float var5 = this.age + var4; + float var6 = var5 / this.life; + float var7 = 1.0F - var6; + var7 *= var7; + int var8 = vx.withAlpha(this.rgb, var7 * 0.8F); + int var9 = vx.withAlpha(16777215, var7); + int var10 = vx.withAlpha(this.rgb, 0.0F); + double var11 = this.centerPos.x - var3.x; + double var13 = this.centerPos.y - var3.y; + double var15 = this.centerPos.z - var3.z; + float var17 = (1.0F + (float)Math.sqrt(5.0)) / 2.0F; + Vector3f[] var10000 = new Vector3f[12]; + var10000[0] = new Vector3f(-1.0F, var17, 0.0F).normalize(); + var10000[1] = new Vector3f(1.0F, var17, 0.0F).normalize(); + var10000[2] = new Vector3f(-1.0F, -var17, 0.0F).normalize(); + var10000[3] = new Vector3f(1.0F, -var17, 0.0F).normalize(); + var10000[4] = new Vector3f(0.0F, -1.0F, var17).normalize(); + var10000[5] = new Vector3f(0.0F, 1.0F, var17).normalize(); + var10000[6] = new Vector3f(0.0F, -1.0F, -var17).normalize(); + var10000[7] = new Vector3f(0.0F, 1.0F, -var17).normalize(); + var10000[8] = new Vector3f(var17, 0.0F, -1.0F).normalize(); + var10000[9] = new Vector3f(var17, 0.0F, 1.0F).normalize(); + var10000[10] = new Vector3f(-var17, 0.0F, -1.0F).normalize(); + var10000[11] = new Vector3f(-var17, 0.0F, 1.0F).normalize(); + Vector3f[] var18 = var10000; + int[][] var42 = new int[20][]; + int var10002 = 0; + int[] var10003 = new int[3]; + var10003[0] = 0; + var10003[1] = 11; + var10003[2] = 5; + var42[var10002] = var10003; + var10002 = 1; + var10003 = new int[3]; + var10003[0] = 0; + var10003[1] = 5; + var10003[2] = 1; + var42[var10002] = var10003; + var10002 = 2; + var10003 = new int[3]; + var10003[0] = 0; + var10003[1] = 1; + var10003[2] = 7; + var42[var10002] = var10003; + var10002 = 3; + var10003 = new int[3]; + var10003[0] = 0; + var10003[1] = 7; + var10003[2] = 10; + var42[var10002] = var10003; + var10002 = 4; + var10003 = new int[3]; + var10003[0] = 0; + var10003[1] = 10; + var10003[2] = 11; + var42[var10002] = var10003; + var10002 = 5; + var10003 = new int[3]; + var10003[0] = 1; + var10003[1] = 5; + var10003[2] = 9; + var42[var10002] = var10003; + var10002 = 6; + var10003 = new int[3]; + var10003[0] = 5; + var10003[1] = 11; + var10003[2] = 4; + var42[var10002] = var10003; + var10002 = 7; + var10003 = new int[3]; + var10003[0] = 11; + var10003[1] = 10; + var10003[2] = 2; + var42[var10002] = var10003; + var10002 = 8; + var10003 = new int[3]; + var10003[0] = 10; + var10003[1] = 7; + var10003[2] = 6; + var42[var10002] = var10003; + var10002 = 9; + var10003 = new int[3]; + var10003[0] = 7; + var10003[1] = 1; + var10003[2] = 8; + var42[var10002] = var10003; + var10002 = 10; + var10003 = new int[3]; + var10003[0] = 3; + var10003[1] = 9; + var10003[2] = 4; + var42[var10002] = var10003; + var10002 = 11; + var10003 = new int[3]; + var10003[0] = 3; + var10003[1] = 4; + var10003[2] = 2; + var42[var10002] = var10003; + var10002 = 12; + var10003 = new int[3]; + var10003[0] = 3; + var10003[1] = 2; + var10003[2] = 6; + var42[var10002] = var10003; + var10002 = 13; + var10003 = new int[3]; + var10003[0] = 3; + var10003[1] = 6; + var10003[2] = 8; + var42[var10002] = var10003; + var10002 = 14; + var10003 = new int[3]; + var10003[0] = 3; + var10003[1] = 8; + var10003[2] = 9; + var42[var10002] = var10003; + var10002 = 15; + var10003 = new int[3]; + var10003[0] = 4; + var10003[1] = 9; + var10003[2] = 5; + var42[var10002] = var10003; + var10002 = 16; + var10003 = new int[3]; + var10003[0] = 2; + var10003[1] = 4; + var10003[2] = 11; + var42[var10002] = var10003; + var10002 = 17; + var10003 = new int[3]; + var10003[0] = 6; + var10003[1] = 2; + var10003[2] = 10; + var42[var10002] = var10003; + var10002 = 18; + var10003 = new int[3]; + var10003[0] = 8; + var10003[1] = 6; + var10003[2] = 7; + var42[var10002] = var10003; + var10002 = 19; + var10003 = new int[3]; + var10003[0] = 9; + var10003[1] = 8; + var10003[2] = 1; + var42[var10002] = var10003; + int[][] var19 = var42; + + for (int var20 = 0; var20 < 3; var20++) { + float var21 = this.size * 2.0F * (var20 + (632778845 | -632778844) + (632778845 & -632778844)) * (float)Math.pow(var6, 0.4); + Quaternionf var22 = new Quaternionf() + .rotateX(var5 * 0.05F * (var20 + (-1309036139 ^ 1309036140) + ((-1309036139 & 1309036140) << 1))) + .rotateY(var5 * 0.07F * (var20 + (-906446721 | 906446722) + (-906446721 & 906446722))); + + for (int var23 = 0; var23 < var19.length; var23++) { + Vector3f var24 = new Vector3f(var18[var19[var23][0]]).rotate(var22).mul(var21); + Vector3f var25 = new Vector3f(var18[var19[var23][1]]).rotate(var22).mul(var21); + Vector3f var26 = new Vector3f(var18[var19[var23][2]]).rotate(var22).mul(var21); + Vector3f var27 = new Vector3f(var24).add(var25).add(var26).mul(0.3333F); + int var28 = var23 % 2== 0 ? var9 : var8; + var1.addVertex(var2, (float)var11 + var27.x, (float)var13 + var27.y, (float)var15 + var27.z).setColor(var28); + var1.addVertex(var2, (float)var11 + var24.x, (float)var13 + var24.y, (float)var15 + var24.z).setColor(var10); + var1.addVertex(var2, (float)var11 + var25.x, (float)var13 + var25.y, (float)var15 + var25.z).setColor(var10); + var1.addVertex(var2, (float)var11 + var27.x, (float)var13 + var27.y, (float)var15 + var27.z).setColor(var28); + var1.addVertex(var2, (float)var11 + var27.x, (float)var13 + var27.y, (float)var15 + var27.z).setColor(var28); + var1.addVertex(var2, (float)var11 + var25.x, (float)var13 + var25.y, (float)var15 + var25.z).setColor(var10); + var1.addVertex(var2, (float)var11 + var26.x, (float)var13 + var26.y, (float)var15 + var26.z).setColor(var10); + var1.addVertex(var2, (float)var11 + var27.x, (float)var13 + var27.y, (float)var15 + var27.z).setColor(var28); + var1.addVertex(var2, (float)var11 + var27.x, (float)var13 + var27.y, (float)var15 + var27.z).setColor(var28); + var1.addVertex(var2, (float)var11 + var26.x, (float)var13 + var26.y, (float)var15 + var26.z).setColor(var10); + var1.addVertex(var2, (float)var11 + var24.x, (float)var13 + var24.y, (float)var15 + var24.z).setColor(var10); + var1.addVertex(var2, (float)var11 + var27.x, (float)var13 + var27.y, (float)var15 + var27.z).setColor(var28); + } + } + + for (int var35 = 0; var35 < this.ringRotations.length; var35++) { + float var36 = this.size * 5.0F * (float)Math.pow(var6, 0.5); + int var37 = vx.withAlpha(16777215, var7 * 0.8F); + + for (int var38 = 0; var38 < 48; var38++) { + double var39 = (Math.PI * 2) * var38 / 48.0; + double var40 = (Math.PI * 2) * (var38 + (1716955689 ^ -1716955688) + ((1716955689 & -1716955688) << 1)) / 48.0; + Vector3f var41 = new Vector3f((float)Math.cos(var39) * var36 * 0.9F, (float)Math.sin(var39) * var36 * 0.9F, 0.0F).rotate(this.ringRotations[var35]); + Vector3f var29 = new Vector3f((float)Math.cos(var39) * var36 * 1.1F, (float)Math.sin(var39) * var36 * 1.1F, 0.0F).rotate(this.ringRotations[var35]); + Vector3f var30 = new Vector3f((float)Math.cos(var39) * var36, (float)Math.sin(var39) * var36, 0.0F).rotate(this.ringRotations[var35]); + Vector3f var31 = new Vector3f((float)Math.cos(var40) * var36 * 0.9F, (float)Math.sin(var40) * var36 * 0.9F, 0.0F).rotate(this.ringRotations[var35]); + Vector3f var32 = new Vector3f((float)Math.cos(var40) * var36 * 1.1F, (float)Math.sin(var40) * var36 * 1.1F, 0.0F).rotate(this.ringRotations[var35]); + Vector3f var33 = new Vector3f((float)Math.cos(var40) * var36, (float)Math.sin(var40) * var36, 0.0F).rotate(this.ringRotations[var35]); + var1.addVertex(var2, (float)var11 + var41.x, (float)var13 + var41.y, (float)var15 + var41.z).setColor(var10); + var1.addVertex(var2, (float)var11 + var30.x, (float)var13 + var30.y, (float)var15 + var30.z).setColor(var37); + var1.addVertex(var2, (float)var11 + var33.x, (float)var13 + var33.y, (float)var15 + var33.z).setColor(var37); + var1.addVertex(var2, (float)var11 + var31.x, (float)var13 + var31.y, (float)var15 + var31.z).setColor(var10); + var1.addVertex(var2, (float)var11 + var30.x, (float)var13 + var30.y, (float)var15 + var30.z).setColor(var37); + var1.addVertex(var2, (float)var11 + var29.x, (float)var13 + var29.y, (float)var15 + var29.z).setColor(var10); + var1.addVertex(var2, (float)var11 + var32.x, (float)var13 + var32.y, (float)var15 + var32.z).setColor(var10); + var1.addVertex(var2, (float)var11 + var33.x, (float)var13 + var33.y, (float)var15 + var33.z).setColor(var37); + } + } + } + + private void renderOrbs(VertexConsumer var1, Pose var2, double var3, double var5, double var7, Quaternionf var9, float var10) { + float var11 = 0.0F; + int var12 = 0; + int var13 = 0; + int var14 = 0; + double var15 = 0.0; + double var17 = 0.0; + Object var19 = null; + Object var20 = null; + int var21 = 1509364418; + + while (true) { + switch (var21) { + case -1486600433: + if (var14 < (681758283 ^ -681758251) + ((681758283 & -681758251) << 1)) { + var21 = 301286069; + } else { + var21 = 298409468; + } + break; + case 298409468: + return; + case 301286069: + var15 = var14 / 32.0 * Math.PI * 2.0 + var10; + var17 = (var14 + (1887553055 | -1887553054) + (1887553055 & -1887553054)) / 32.0 * Math.PI * 2.0 + var10; + var19 = new Vector3f((float)Math.cos(var15) * var11, (float)Math.sin(var15) * var11, 0.0F).rotate(var9); + var20 = new Vector3f((float)Math.cos(var17) * var11, (float)Math.sin(var17) * var11, 0.0F).rotate(var9); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var12); + var1.addVertex(var2, (float)(var3 + ((Vector3f)var19).x), (float)(var5 + ((Vector3f)var19).y), (float)(var7 + ((Vector3f)var19).z)) + .setColor(var13); + var1.addVertex(var2, (float)(var3 + ((Vector3f)var20).x), (float)(var5 + ((Vector3f)var20).y), (float)(var7 + ((Vector3f)var20).z)) + .setColor(var13); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var12); + var14++; + var21 = -1486600433; + break; + case 1509364418: + default: + var11 = this.size * 0.5F * this.alpha; + var12 = vx.withAlpha(this.rgb, this.alpha); + var13 = vx.withAlpha(this.rgb, 0.0F); + var14 = 0; + var21 = -1486600433; + } + } + } + + private void renderStars(VertexConsumer var1, Pose var2, double var3, double var5, double var7, Quaternionf var9) { + float var10 = this.size * 0.5F * this.alpha; + float var11 = var10 * 0.22F; + int var12 = vx.withAlpha(this.rgb, this.alpha); + int var13 = vx.withAlpha(this.rgb, 0.0F); + Vector3f var14 = new Vector3f(0.0F, var10, 0.0F).rotate(var9); + Vector3f var15 = new Vector3f(var10, 0.0F, 0.0F).rotate(var9); + Vector3f var16 = new Vector3f(0.0F, -var10, 0.0F).rotate(var9); + Vector3f var17 = new Vector3f(-var10, 0.0F, 0.0F).rotate(var9); + Vector3f var18 = new Vector3f(var11, var11, 0.0F).rotate(var9); + Vector3f var19 = new Vector3f(var11, -var11, 0.0F).rotate(var9); + Vector3f var20 = new Vector3f(-var11, -var11, 0.0F).rotate(var9); + Vector3f var21 = new Vector3f(-var11, var11, 0.0F).rotate(var9); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var12); + var1.addVertex(var2, (float)(var3 + var18.x), (float)(var5 + var18.y), (float)(var7 + var18.z)).setColor(var12); + var1.addVertex(var2, (float)(var3 + var14.x), (float)(var5 + var14.y), (float)(var7 + var14.z)).setColor(var13); + var1.addVertex(var2, (float)(var3 + var21.x), (float)(var5 + var21.y), (float)(var7 + var21.z)).setColor(var12); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var12); + var1.addVertex(var2, (float)(var3 + var19.x), (float)(var5 + var19.y), (float)(var7 + var19.z)).setColor(var12); + var1.addVertex(var2, (float)(var3 + var15.x), (float)(var5 + var15.y), (float)(var7 + var15.z)).setColor(var13); + var1.addVertex(var2, (float)(var3 + var18.x), (float)(var5 + var18.y), (float)(var7 + var18.z)).setColor(var12); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var12); + var1.addVertex(var2, (float)(var3 + var20.x), (float)(var5 + var20.y), (float)(var7 + var20.z)).setColor(var12); + var1.addVertex(var2, (float)(var3 + var16.x), (float)(var5 + var16.y), (float)(var7 + var16.z)).setColor(var13); + var1.addVertex(var2, (float)(var3 + var19.x), (float)(var5 + var19.y), (float)(var7 + var19.z)).setColor(var12); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var12); + var1.addVertex(var2, (float)(var3 + var21.x), (float)(var5 + var21.y), (float)(var7 + var21.z)).setColor(var12); + var1.addVertex(var2, (float)(var3 + var17.x), (float)(var5 + var17.y), (float)(var7 + var17.z)).setColor(var13); + var1.addVertex(var2, (float)(var3 + var20.x), (float)(var5 + var20.y), (float)(var7 + var20.z)).setColor(var12); + } + + private void renderHearts(VertexConsumer var1, Pose var2, double var3, double var5, double var7, Quaternionf var9) { + float var10 = this.size * 0.5F * this.alpha; + int var11 = vx.withAlpha(this.rgb, this.alpha); + int var12 = vx.withAlpha(this.rgb, this.alpha * 0.2F); + Vector3f[] var13 = new Vector3f[36]; + + for (int var14 = 0; var14 < 36; var14++) { + double var15 = var14 / 36.0 * Math.PI * 2.0; + double var17 = Math.sin(var15) * Math.sin(var15) * Math.sin(var15); + double var19 = 0.85F * Math.cos(var15) - 0.3F * Math.cos(2.0 * var15) - 0.1F * Math.cos(3.0 * var15) - 0.05F * Math.cos(4.0 * var15) + 0.15F; + var13[var14] = new Vector3f((float)var17 * var10, (float)var19 * var10, 0.0F).rotate(var9); + } + + Vector3f var21 = new Vector3f(0.0F, 0.15F * var10, 0.0F).rotate(var9); + + for (int var22 = 0; var22 < 36; var22++) { + Vector3f var16 = var13[var22]; + Vector3f var23 = var13[(var22 + (-1620656305 ^ 1620656306) + ((-1620656305 & 1620656306) << 1)) + % ((-546991693 | 546991729) + (-546991693 & 546991729))]; + var1.addVertex(var2, (float)(var3 + var21.x), (float)(var5 + var21.y), (float)(var7 + var21.z)).setColor(var11); + var1.addVertex(var2, (float)(var3 + var16.x), (float)(var5 + var16.y), (float)(var7 + var16.z)).setColor(var12); + var1.addVertex(var2, (float)(var3 + var23.x), (float)(var5 + var23.y), (float)(var7 + var23.z)).setColor(var12); + var1.addVertex(var2, (float)(var3 + var21.x), (float)(var5 + var21.y), (float)(var7 + var21.z)).setColor(var11); + } + } + + private void renderSparkles(VertexConsumer var1, Pose var2, double var3, double var5, double var7, Quaternionf var9) { + float var10 = this.size * 0.5F * this.alpha; + float var11 = var10 * 0.06F; + float var12 = var10 * 1.3F; + int var13 = vx.withAlpha(this.rgb, this.alpha); + int var14 = vx.withAlpha(this.rgb, 0.0F); + Vector3f var15 = new Vector3f(0.0F, var12, 0.0F).rotate(var9); + Vector3f var16 = new Vector3f(var12, 0.0F, 0.0F).rotate(var9); + Vector3f var17 = new Vector3f(0.0F, -var12, 0.0F).rotate(var9); + Vector3f var18 = new Vector3f(-var12, 0.0F, 0.0F).rotate(var9); + Vector3f var19 = new Vector3f(var11, var11, 0.0F).rotate(var9); + Vector3f var20 = new Vector3f(var11, -var11, 0.0F).rotate(var9); + Vector3f var21 = new Vector3f(-var11, -var11, 0.0F).rotate(var9); + Vector3f var22 = new Vector3f(-var11, var11, 0.0F).rotate(var9); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var13); + var1.addVertex(var2, (float)(var3 + var19.x), (float)(var5 + var19.y), (float)(var7 + var19.z)).setColor(var13); + var1.addVertex(var2, (float)(var3 + var15.x), (float)(var5 + var15.y), (float)(var7 + var15.z)).setColor(var14); + var1.addVertex(var2, (float)(var3 + var22.x), (float)(var5 + var22.y), (float)(var7 + var22.z)).setColor(var13); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var13); + var1.addVertex(var2, (float)(var3 + var20.x), (float)(var5 + var20.y), (float)(var7 + var20.z)).setColor(var13); + var1.addVertex(var2, (float)(var3 + var16.x), (float)(var5 + var16.y), (float)(var7 + var16.z)).setColor(var14); + var1.addVertex(var2, (float)(var3 + var19.x), (float)(var5 + var19.y), (float)(var7 + var19.z)).setColor(var13); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var13); + var1.addVertex(var2, (float)(var3 + var21.x), (float)(var5 + var21.y), (float)(var7 + var21.z)).setColor(var13); + var1.addVertex(var2, (float)(var3 + var17.x), (float)(var5 + var17.y), (float)(var7 + var17.z)).setColor(var14); + var1.addVertex(var2, (float)(var3 + var20.x), (float)(var5 + var20.y), (float)(var7 + var20.z)).setColor(var13); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var13); + var1.addVertex(var2, (float)(var3 + var22.x), (float)(var5 + var22.y), (float)(var7 + var22.z)).setColor(var13); + var1.addVertex(var2, (float)(var3 + var18.x), (float)(var5 + var18.y), (float)(var7 + var18.z)).setColor(var14); + var1.addVertex(var2, (float)(var3 + var21.x), (float)(var5 + var21.y), (float)(var7 + var21.z)).setColor(var13); + } + + private void renderRings(VertexConsumer var1, Pose var2, double var3, double var5, double var7, Quaternionf var9, float var10) { + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = 0; + int var16 = 0; + int var17 = 0; + double var18 = 0.0; + double var20 = 0.0; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + Object var26 = null; + Object var27 = null; + Object var28 = null; + Object var29 = null; + Object var30 = null; + Object var31 = null; + int var32 = 1840115713; + + while (true) { + switch (var32) { + case -1172961987: + if (var17 < (-730535002 ^ 730535034) + ((-730535002 & 730535034) << 1)) { + var32 = -977003448; + } else { + var32 = -951617097; + } + break; + case -977003448: + var18 = var17 / 32.0 * Math.PI * 2.0 + var10; + var20 = (var17 + (-1277560932 ^ 1277560933) + ((-1277560932 & 1277560933) << 1)) / 32.0 * Math.PI * 2.0 + var10; + var22 = (float)Math.cos(var18); + var23 = (float)Math.sin(var18); + var24 = (float)Math.cos(var20); + var25 = (float)Math.sin(var20); + var26 = new Vector3f(var22 * var13, var23 * var13, 0.0F).rotate(var9); + var27 = new Vector3f(var22 * var14, var23 * var14, 0.0F).rotate(var9); + var28 = new Vector3f(var24 * var14, var25 * var14, 0.0F).rotate(var9); + var29 = new Vector3f(var24 * var13, var25 * var13, 0.0F).rotate(var9); + var1.addVertex(var2, (float)(var3 + ((Vector3f)var26).x), (float)(var5 + ((Vector3f)var26).y), (float)(var7 + ((Vector3f)var26).z)) + .setColor(var16); + var1.addVertex(var2, (float)(var3 + ((Vector3f)var27).x), (float)(var5 + ((Vector3f)var27).y), (float)(var7 + ((Vector3f)var27).z)) + .setColor(var15); + var1.addVertex(var2, (float)(var3 + ((Vector3f)var28).x), (float)(var5 + ((Vector3f)var28).y), (float)(var7 + ((Vector3f)var28).z)) + .setColor(var15); + var1.addVertex(var2, (float)(var3 + ((Vector3f)var29).x), (float)(var5 + ((Vector3f)var29).y), (float)(var7 + ((Vector3f)var29).z)) + .setColor(var16); + var30 = new Vector3f(var22 * var12, var23 * var12, 0.0F).rotate(var9); + var31 = new Vector3f(var24 * var12, var25 * var12, 0.0F).rotate(var9); + var1.addVertex(var2, (float)(var3 + ((Vector3f)var27).x), (float)(var5 + ((Vector3f)var27).y), (float)(var7 + ((Vector3f)var27).z)) + .setColor(var15); + var1.addVertex(var2, (float)(var3 + ((Vector3f)var30).x), (float)(var5 + ((Vector3f)var30).y), (float)(var7 + ((Vector3f)var30).z)) + .setColor(var16); + var1.addVertex(var2, (float)(var3 + ((Vector3f)var31).x), (float)(var5 + ((Vector3f)var31).y), (float)(var7 + ((Vector3f)var31).z)) + .setColor(var16); + var1.addVertex(var2, (float)(var3 + ((Vector3f)var28).x), (float)(var5 + ((Vector3f)var28).y), (float)(var7 + ((Vector3f)var28).z)) + .setColor(var15); + var17++; + var32 = -1172961987; + break; + case -951617097: + return; + case 1840115713: + default: + var11 = (float)this.age / this.life; + var12 = this.size * var11; + var13 = var12 * 0.7F; + var14 = (var13 + var12) * 0.5F; + var15 = vx.withAlpha(this.rgb, this.alpha); + var16 = vx.withAlpha(this.rgb, 0.0F); + var17 = 0; + var32 = -1172961987; + } + } + } + + private void renderLava(VertexConsumer var1, Pose var2, double var3, double var5, double var7, Quaternionf var9) { + float var10 = this.size * 0.5F * this.alpha; + float var11 = (float)this.age / this.life; + int var12 = this.getLavaColor(var11); + int var13 = vx.withAlpha(var12, this.alpha); + int var14 = vx.withAlpha(var12, 0.0F); + Vector3f var15 = new Vector3f(0.0F, var10, 0.0F).rotate(var9); + Vector3f var16 = new Vector3f(var10, 0.0F, 0.0F).rotate(var9); + Vector3f var17 = new Vector3f(0.0F, -var10, 0.0F).rotate(var9); + Vector3f var18 = new Vector3f(-var10, 0.0F, 0.0F).rotate(var9); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var13); + var1.addVertex(var2, (float)(var3 + var15.x), (float)(var5 + var15.y), (float)(var7 + var15.z)).setColor(var14); + var1.addVertex(var2, (float)(var3 + var16.x), (float)(var5 + var16.y), (float)(var7 + var16.z)).setColor(var14); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var13); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var13); + var1.addVertex(var2, (float)(var3 + var16.x), (float)(var5 + var16.y), (float)(var7 + var16.z)).setColor(var14); + var1.addVertex(var2, (float)(var3 + var17.x), (float)(var5 + var17.y), (float)(var7 + var17.z)).setColor(var14); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var13); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var13); + var1.addVertex(var2, (float)(var3 + var17.x), (float)(var5 + var17.y), (float)(var7 + var17.z)).setColor(var14); + var1.addVertex(var2, (float)(var3 + var18.x), (float)(var5 + var18.y), (float)(var7 + var18.z)).setColor(var14); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var13); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var13); + var1.addVertex(var2, (float)(var3 + var18.x), (float)(var5 + var18.y), (float)(var7 + var18.z)).setColor(var14); + var1.addVertex(var2, (float)(var3 + var15.x), (float)(var5 + var15.y), (float)(var7 + var15.z)).setColor(var14); + var1.addVertex(var2, (float)var3, (float)var5, (float)var7).setColor(var13); + } +} diff --git a/src/main/java/defpackage/vx.java b/src/main/java/defpackage/vx.java new file mode 100644 index 0000000..8c1f31d --- /dev/null +++ b/src/main/java/defpackage/vx.java @@ -0,0 +1,691 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.Iterator; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ThreadLocalRandom; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientboundAnimatePacket; +import net.minecraft.network.protocol.game.ClientboundEntityEventPacket; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.phys.Vec3; +import org.joml.Quaternionf; + +@rn(name = "Particles", description = "Spawns particles on hit and totem pop", category = rl.COMBAT) +public final class vx extends rm { + public final sg shapeSetting; + public final sg effectSetting; + private final sm countSetting; + private final sm sizeSetting; + private final sm lifeSetting; + private final sm speedSetting; + final sm gravitySetting; + private final ru replaceCritsSetting; + private final ru onAttackSetting; + private final ru onTotemSetting; + private final ru randomColorSetting; + private final ru clientColorSetting; + private final rx colorSetting; + private static final int PALETTE_GREEN = 5242704; + private static final int PALETTE_YELLOW = 16770631; + private static final int PALETTE_BLUE = 6737151; + private static final int PALETTE_PINK = 16737928; + private static final int[] PALETTE; + private static final int RGB_MASK = 16777215; + private static final int ALPHA_SHIFT = 24; + private static final int ALPHA_MAX = 255; + private static final float FADE_OUT_DURATION = 4.0F; + private static final float DOUBLE_ANGLE_FACTOR = 2.0F; + private static final float DEGREE_TO_RAD_FACTOR = 360.0F; + private static final float PHYSICS_JITTER_SCALE = 0.01F; + private static final double PHYSICS_COLLIDER_MIN_VELOCITY = 0.1; + private static final double PHYSICS_COLLISION_DECEL = 0.5; + private static final double PHYSICS_REFLECTION_OFFSET = 0.001; + private static final double PHYSICS_MAGNET_ATTRACTION = 0.02; + private static final float PHYSICS_MAGNET_JITTER_SCALE = 0.008F; + private static final double PHYSICS_DECAY = 0.98; + private static final double MAGNET_LIMIT = 1.0; + private static final float HALF_FACTOR = 0.5F; + private static final float STAR_INDENT_FACTOR = 0.22F; + private static final float SPARKLE_INDENT_FACTOR = 0.06F; + private static final float SPARKLE_LENGTH_FACTOR = 1.3F; + private static final float HEART_A = 0.85F; + private static final float HEART_B = 0.3F; + private static final float HEART_C = 0.1F; + private static final float HEART_D = 0.05F; + private static final float HEART_Y_OFFSET = 0.15F; + private static final float HEART_EDGE_ALPHA_FACTOR = 0.2F; + private static final int HEART_SEGMENTS = 36; + private static final float RING_INNER_FACTOR = 0.7F; + private static final float RING_MIDDLE_FACTOR = 0.5F; + private static final int RING_SEGMENTS = 32; + private static final int ORB_SEGMENTS = 32; + private static final float LAVA_STAGE_WHITE = 0.25F; + private static final float LAVA_STAGE_YELLOW = 0.6F; + private static final float LAVA_STAGE_RED = 0.85F; + private static final int LAVA_WHITE_R = 255; + private static final int LAVA_WHITE_G = 255; + private static final int LAVA_WHITE_B = 255; + private static final int LAVA_YELLOW_R = 255; + private static final int LAVA_YELLOW_G = 230; + private static final int LAVA_YELLOW_B = 70; + private static final int LAVA_RED_R = 255; + private static final int LAVA_RED_G = 51; + private static final int LAVA_RED_B = 0; + private static final int LAVA_BROWN_R = 34; + private static final int LAVA_BROWN_G = 17; + private static final int LAVA_BROWN_B = 17; + private static final int LAVA_GRAY_R = 16; + private static final int LAVA_GRAY_G = 16; + private static final int LAVA_GRAY_B = 16; + private final CopyOnWriteArrayList particles; + private long lastTickTime; + private int lastAttackBurstEntityId; + private long lastAttackBurstTick; + public static final vx INSTANCE = new vx(); + + private vx() { + String var10003 = "Physics"; + String[] var10004 = new String[4]; + var10004[0] = "Realistic"; + var10004[1] = "Gravity"; + var10004[2] = "Linear"; + var10004[3] = "Magnet"; + this.shapeSetting = new sg(var10003, var10004) + .describe( + "Realistic", + "Bounces and decelerates over time" + ) + .describe( + "Gravity", + "Falls straight down" + ) + .describe( + "Linear", + "Moves in a straight line" + ) + .describe( + "Magnet", + "Attracted towards nearest targets" + ) + .description( + "Physical behavior of the particles" + ); + var10003 = "Effect"; + var10004 = new String[10]; + var10004[0] = "Orbs"; + var10004[1] = "Stars"; + var10004[2] = "Hearts"; + var10004[3] = "Sparkles"; + var10004[4] = "Rings"; + var10004[5] = "Lava"; + var10004[6] = "Shatter"; + var10004[7] = "Rift"; + var10004[8] = "MagicCircle"; + var10004[9] = "Shockwave"; + this.effectSetting = new sg(var10003, var10004) + .describe( + "Orbs", + "Standard glowing circles" + ) + .describe( + "Stars", + "Glowing 4-pointed stars" + ) + .describe( + "Hearts", + "Cute floating hearts" + ) + .describe( + "Sparkles", + "Shining thin lens flare crosses" + ) + .describe( + "Rings", + "Expanding energy rings" + ) + .describe( + "Lava", + "Dynamic burning embers" + ) + .describe( + "Shatter", + "3D mirror space shards explosion" + ) + .describe( + "Rift", + "Dimensional katana slashes" + ) + .describe( + "MagicCircle", + "Rotating 3D runic astrolabe array" + ) + .describe( + "Shockwave", + "True 3D spherical sonic boom" + ) + .description( + "Visual style of the hit particles" + ); + this.countSetting = new sm("Count", 8.0F, 1.0F, 40.0F, 1.0F) + .description("Number of particles spawned per event"); + this.sizeSetting = new sm("Size", 0.3F, 0.05F, 1.0F, 0.05F) + .description("Visual size of the particles"); + this.lifeSetting = new sm("Lifetime", 25.0F, 10.0F, 60.0F, 1.0F) + .description("How long particles last before fading"); + this.speedSetting = new sm("Speed", 0.3F, 0.05F, 1.0F, 0.05F) + .description( + "Initial velocity of the spawned particles" + ); + this.gravitySetting = new sm("Gravity", 0.02F, 0.0F, 0.1F, 0.005F, () -> { + int var2x = 0; + int var1x = 1543261994; + + while (true) { + switch (var1x) { + case -1730440051: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -939652975: + var2x = 1; + var1x = -1730440051; + break; + case 851305587: + var2x = 0; + var1x = -1730440051; + break; + case 1543261994: + default: + if (!this.shapeSetting.is("Realistic")) { + var1x = 2079409344; + } else { + var1x = -939652975; + } + break; + case 2079409344: + if (this.shapeSetting.is("Gravity")) { + var1x = -939652975; + } else { + var1x = 851305587; + } + } + } + }).description("Downward pull applied to particles"); + this.replaceCritsSetting = new ru( + "Replace crits", + (boolean)((((-625418527 | 625418528) + (-625418527 & 625418528)) + ) != 0)) + .description( + "Replace vanilla critical hit particles with these particles" + ); + this.onAttackSetting = new ru( + "On attack", + (boolean)((((-1159265433 ^ 1159265433) + ((-1159265433 & 1159265433) << 1)) + ) != 0)) + .description( + "Spawn particles when you hit an entity, even if it is not a critical hit" + ); + this.onTotemSetting = new ru( + "On totem pop", + (boolean)((((-817825355 ^ 817825356) + ((-817825355 & 817825356) << 1)) + ) != 0)) + .description( + "Spawn particles when an entity pops a totem" + ); + this.randomColorSetting = new ru( + "Random color", + (boolean)((((-521406612 | 521406612) + (-521406612 & 521406612)) + ) != 0)) + .description( + "Assign a random color to each particle" + ); + this.clientColorSetting = new ru( + "Client color", + (boolean)(((1)) != 0), + () -> { + int var2x = 0; + int var1x = -1003739887; + + while (true) { + switch (var1x) { + case -1003739887: + default: + if (!this.randomColorSetting.isEnabled()) { + var1x = 645110778; + } else { + var1x = 1137972637; + } + break; + case -942020202: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 645110778: + var2x = 1; + var1x = -942020202; + break; + case 1137972637: + var2x = 0; + var1x = -942020202; + } + } + } + ) + .description("Use the global client color"); + this.colorSetting = new rx( + "Color", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> { + int var2x = 0; + int var1x = -353340228; + + while (true) { + switch (var1x) { + case -353340228: + default: + if (!this.randomColorSetting.isEnabled()) { + var1x = 1607849230; + } else { + var1x = 340630401; + } + break; + case -178316845: + var2x = 1; + var1x = 2108753340; + break; + case 340630401: + var2x = 0; + var1x = 2108753340; + break; + case 1607849230: + if (!this.clientColorSetting.isEnabled()) { + var1x = -178316845; + } else { + var1x = 340630401; + } + break; + case 2108753340: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description("Custom color for the particles"); + this.particles = new CopyOnWriteArrayList<>(); + this.lastTickTime = (-966916331773986163L ^ -8256455705080789645L) + ((-966916331773986163L & -8256455705080789645L) << 1); + this.lastAttackBurstEntityId = -2147483648; + this.lastAttackBurstTick = (-9026556384032883288L | -196815652821892520L) + (-9026556384032883288L & -196815652821892520L); + } + + @Override + public void onEnable() { + super.onEnable(); + this.particles.clear(); + this.lastTickTime = (-5483995995242284890L | -3739376041612490918L) + (-5483995995242284890L & -3739376041612490918L); + this.lastAttackBurstEntityId = -2147483648; + this.lastAttackBurstTick = (-2114786831364781940L | -7108585205489993868L) + (-2114786831364781940L & -7108585205489993868L); + } + + @Override + public void onDisable() { + super.onDisable(); + this.particles.clear(); + } + + @k + public void onAttack(fc var1) { + Entity var2 = null; + int var3 = -381102757; + + while (true) { + switch (var3) { + case -2100700044: + if (var2 == mc.player) { + var3 = 294615554; + } else { + var3 = -1739702393; + } + break; + case -1978310605: + var2 = var1.getTarget(); + if (mc.player != null) { + var3 = -2100700044; + } else { + var3 = 294615554; + } + break; + case -1739702393: + this.spawnBurst(var2, (int)this.countSetting.getCurrent()); + this.rememberAttackBurst(var2); + return; + case -854178369: + return; + case -381102757: + default: + if (this.onAttackSetting.isEnabled()) { + var3 = 480495989; + } else { + var3 = -854178369; + } + break; + case 294615554: + return; + case 480495989: + if (var1.getAction() != fb.POST) { + var3 = -854178369; + } else { + var3 = -1978310605; + } + } + } + } + + @k + public void onPacket(fy var1) { + if (var1.isReceive() && mc.level != null) { + Packet var2 = var1.getPacket(); + if (var2 instanceof ClientboundAnimatePacket var3 && var3.getAction() == (-1435954811 | 1435954815) + (-1435954811 & 1435954815)) { + Entity var7 = mc.level.getEntity(var3.getId()); + if (this.replaceCriticalParticles(var7)) { + var1.cancel(); + } + } else if (this.onTotemSetting.isEnabled()) { + if (var2 instanceof ClientboundEntityEventPacket var6 && var6.getEventId() == (1279221062 ^ -1279221027) + ((1279221062 & -1279221027) << 1)) { + if (var6.getEntity(mc.level) instanceof LivingEntity var5) { + this.spawnBurst(var5, (int)this.countSetting.getCurrent() * ((1022292165 | -1022292162) + (1022292165 & -1022292162))); + } + } + } + } + } + + public boolean replaceCriticalParticles(Entity var1) { + int var2 = -1630882886; + + while (true) { + switch (var2) { + case -1630882886: + default: + if (this.isEnabled()) { + var2 = -612036293; + } else { + var2 = 1663477831; + } + break; + case -892416836: + if (var1 == null) { + var2 = 1663477831; + } else { + var2 = 239955396; + } + break; + case -744342558: + return (boolean)(((1)) != 0); + case -612036293: + if (this.replaceCritsSetting.isEnabled()) { + var2 = 1657201971; + } else { + var2 = 1663477831; + } + break; + case -449484899: + this.spawnBurst(var1, (int)this.countSetting.getCurrent()); + var2 = -744342558; + break; + case 239955396: + if (!this.alreadySpawnedAttackBurst(var1)) { + var2 = -449484899; + } else { + var2 = -744342558; + } + break; + case 1636653122: + if (mc.level != null) { + var2 = -892416836; + } else { + var2 = 1663477831; + } + break; + case 1657201971: + if (mc.player != null) { + var2 = 1636653122; + } else { + var2 = 1663477831; + } + break; + case 1663477831: + return (boolean)(((0)) != 0); + } + } + } + + public void spawnBurst(Entity var1, int var2) { + Vec3 var3 = new Vec3(var1.getX(), var1.getY() + var1.getBbHeight() / 2.0, var1.getZ()); + this.spawnBurst(var1, var3, var2); + } + + public void spawnBurst(Vec3 var1, int var2) { + this.spawnBurst(null, var1, var2); + } + + private void spawnBurst(Entity var1, Vec3 var2, int var3) { + float var4 = this.sizeSetting.getCurrent(); + int var5 = (int)this.lifeSetting.getCurrent(); + float var6 = this.speedSetting.getCurrent(); + double var7 = this.gravitySetting.getCurrent(); + String var9 = this.shapeSetting.get(); + String var10 = this.effectSetting.get(); + ThreadLocalRandom var11 = ThreadLocalRandom.current(); + if (var10.equals("Shatter")) { + int var12 = Math.max(1, var3 * ((354174655 | -354174653) + (354174655 & -354174653))); + + for (int var13 = 0; var13 < var12; var13++) { + Vec3 var14; + do { + var14 = new Vec3(var11.nextDouble(-1.0, 1.0), var11.nextDouble(-1.0, 1.0), var11.nextDouble(-1.0, 1.0)); + } while (var14.lengthSqr() > 1.0 || var14.lengthSqr() == 0.0); + + Vec3 var15 = var14.normalize().scale(var11.nextDouble(var6 * 0.5, var6 * 2.0)); + vw var16 = new vw(this, var2, var15, var5, var4, var7, var9, var10, var1, this.pickColor(var11)); + this.particles.add(var16); + } + } else if (!var10.equals("Rift") + && !var10.equals("MagicCircle") + && !var10.equals("Shockwave")) { + for (int var18 = 0; var18 < var3; var18++) { + Vec3 var19; + do { + var19 = new Vec3(var11.nextDouble(-1.0, 1.0), var11.nextDouble(0.0, 1.0), var11.nextDouble(-1.0, 1.0)); + } while (var19.lengthSqr() > 1.0 || var19.lengthSqr() == 0.0); + + Vec3 var20 = var19.normalize().scale(var11.nextDouble(var6 * 0.5, var6)); + vw var21 = new vw(this, var2, var20, var5, var4, var7, var9, var10, var1, this.pickColor(var11)); + this.particles.add(var21); + } + } else { + vw var17 = new vw(this, var2, Vec3.ZERO, var5, var4, var7, var9, var10, var1, this.pickColor(var11)); + this.particles.add(var17); + } + } + + private void rememberAttackBurst(Entity var1) { + int var2 = -117657374; + + while (true) { + switch (var2) { + case -117657374: + default: + if (mc.level == null) { + var2 = 1586072975; + } else { + var2 = 1766711606; + } + break; + case 1586072975: + return; + case 1766711606: + this.lastAttackBurstEntityId = var1.getId(); + this.lastAttackBurstTick = mc.level.getGameTime(); + return; + } + } + } + + private boolean alreadySpawnedAttackBurst(Entity var1) { + int var3 = 0; + int var2 = -1997595864; + + while (true) { + switch (var2) { + case -1997595864: + default: + if (this.onAttackSetting.isEnabled()) { + var2 = -632606885; + } else { + var2 = 1828235244; + } + break; + case -1862795961: + var3 = 1; + var2 = -305129682; + break; + case -632606885: + if (mc.level != null) { + var2 = 609898307; + } else { + var2 = 1828235244; + } + break; + case -305129682: + return (boolean)((var3) != 0); + case 609898307: + if (var1.getId() == this.lastAttackBurstEntityId) { + var2 = 1210504176; + } else { + var2 = 1828235244; + } + break; + case 1210504176: + if (Math.abs(mc.level.getGameTime() - this.lastAttackBurstTick) + <= (2397684765335727004L ^ -2397684765335726994L) + ((2397684765335727004L & -2397684765335726994L) << 1)) { + var2 = -1862795961; + } else { + var2 = 1828235244; + } + break; + case 1828235244: + var3 = 0; + var2 = -305129682; + } + } + } + + private int pickColor(ThreadLocalRandom var1) { + int var2 = 0; + int var3 = -939566531; + + while (true) { + switch (var3) { + case -1036156994: + var2 = bz.getInstance().getThemeManager().getCurrentTheme().getColor().getRGB(); + var3 = -542962489; + break; + case -939566531: + default: + if (this.randomColorSetting.isEnabled()) { + var3 = 1566186614; + } else { + var3 = 553681656; + } + break; + case -542962489: + return var2 & 16777215; + case 553681656: + if (this.clientColorSetting.isEnabled()) { + var3 = -1036156994; + } else { + var3 = 1963267203; + } + break; + case 1566186614: + var2 = PALETTE[var1.nextInt(PALETTE.length)]; + var3 = -542962489; + break; + case 1963267203: + var2 = this.colorSetting.getIntColor(); + var3 = -542962489; + } + } + } + + public void onWorldRender(LevelRenderContext var1) { + if (this.isEnabled() && mc.player != null && mc.level != null) { + if (!this.particles.isEmpty()) { + PoseStack var2 = var1.poseStack(); + SubmitNodeCollector var3 = var1.submitNodeCollector(); + Camera var4 = mc.getEntityRenderDispatcher().camera; + if (var2 != null && var3 != null && var4 != null) { + long var5 = mc.level.getGameTime(); + if (var5 != this.lastTickTime) { + for (vw var8 : this.particles) { + if (var8.tick()) { + this.particles.remove(var8); + } + } + + this.lastTickTime = var5; + } + + float var10 = mc.getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((301818524 | -301818524) + (301818524 & -301818524))) != 0)); + Vec3 var11 = var4.position(); + Quaternionf var9 = var4.rotation(); + var3.submitCustomGeometry(var2, arj.positionColor(), (var4x, var5x) -> { + Iterator var6 = null; + vw var7 = null; + int var8x = 1739628237; + + while (true) { + switch (var8x) { + case -1861556098: + if (var6.hasNext()) { + var8x = 217570044; + } else { + var8x = 1062714060; + } + break; + case 217570044: + var7 = (vw)var6.next(); + var7.render(var5x, var4x, var11, var9, var10); + var8x = -1861556098; + break; + case 1062714060: + return; + case 1739628237: + default: + var6 = this.particles.iterator(); + var8x = -1861556098; + } + } + }); + } + } + } + } + + static int withAlpha(int var0, float var1) { + return Mth.clamp(Math.round(var1 * 255.0F), 0, (1912371555 | -1912371300) + (1912371555 & -1912371300)) + << (-84563093 ^ 84563117) + ((-84563093 & 84563117) << 1) + | var0; + } + + static { + int[] var10000 = new int[4]; + var10000[0] = 5242704; + var10000[1] = 16770631; + var10000[2] = 6737151; + var10000[3] = 16737928; + PALETTE = var10000; + } +} diff --git a/src/main/java/defpackage/vy.java b/src/main/java/defpackage/vy.java new file mode 100644 index 0000000..25b81f5 --- /dev/null +++ b/src/main/java/defpackage/vy.java @@ -0,0 +1,176 @@ +package defpackage; + +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.BlockPos; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.ChestBlock; +import net.minecraft.world.level.block.DoorBlock; +import net.minecraft.world.level.block.DoublePlantBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.ChestType; + +@rn(name = "PlaceAnimation", category = rl.RENDER, description = "Placed blocks slide and tilt smoothly into position") +public final class vy extends rm { + public static final vy INSTANCE = new vy(); + private final sm duration = new sm("Duration", 3.0F, 1.0F, 12.0F, 1.0F) + .description("Animation length in ticks"); + private final sm slide = new sm("Slide", 1.0F, 0.0F, 4.0F, 0.1F) + .description( + "How far the block slides in from your hand" + ); + private final sm tilt = new sm("Tilt", 6.0F, 0.0F, 45.0F, 1.0F) + .description( + "Starting tilt of the block in degrees" + ); + private final sm startScale = new sm( + "Start Scale", 1.0F, 0.1F, 1.0F, 0.05F + ) + .description( + "Block size when the animation starts" + ); + private final ru blockEntities = new ru( + "Block Entities", + (boolean)((((-1257108738 ^ 1257108739) + ((-1257108738 & 1257108739) << 1)) + ) != 0)) + .description( + "Also animate chests, signs and other block entities" + ); + + private vy() { + } + + public void onBlockPlaced(ClientLevel var1, BlockPos var2, BlockState var3, Player var4, InteractionHand var5) { + auu var6 = null; + int var7 = -605820497; + + while (true) { + switch (var7) { + case -1764927964: + var6 = new auu( + Math.round(this.duration.getCurrent()), this.slide.getCurrent(), (float)Math.toRadians(this.tilt.getCurrent()), this.startScale.getCurrent() + ); + aut.start(var1, var2, var3, var4, var5, var6, this.blockEntities.isEnabled()); + return; + case -1327187788: + if (!isAnimatable(var1, var2, var3)) { + var7 = 1773206939; + } else { + var7 = -1764927964; + } + break; + case -605820497: + default: + if (this.isEnabled()) { + var7 = -479863451; + } else { + var7 = 1773206939; + } + break; + case -479863451: + if (var4 != null) { + var7 = -1327187788; + } else { + var7 = 1773206939; + } + break; + case 1773206939: + return; + } + } + } + + @k + public void onUpdate(fl var1) { + int var2 = -2137737131; + + while (true) { + switch (var2) { + case -2137737131: + default: + if (mc.level != null) { + var2 = 1719518336; + } else { + var2 = 1602108470; + } + break; + case 1602108470: + return; + case 1719518336: + aut.tick(mc.level); + var2 = 1602108470; + } + } + } + + @Override + public void onDisable() { + aut.clear(); + super.onDisable(); + } + + private static boolean isAnimatable(ClientLevel var0, BlockPos var1, BlockState var2) { + int var4 = 0; + int var3 = -1360091123; + + while (true) { + switch (var3) { + case -1360091123: + default: + if (!var2.is(BlockTags.BEDS)) { + var3 = 2118009838; + } else { + var3 = -283697903; + } + break; + case -989951678: + var4 = 0; + var3 = 1171273543; + break; + case -283697903: + return (boolean)(((0)) != 0); + case 1171273543: + return (boolean)((var4) != 0); + case 1395476598: + var4 = 1; + var3 = 1171273543; + break; + case 1689118087: + if (var2.hasProperty(ChestBlock.TYPE)) { + var3 = 1772794577; + } else { + var3 = 1999936594; + } + break; + case 1744883325: + if (!(var2.getBlock() instanceof DoorBlock)) { + var3 = 1689118087; + } else { + var3 = -283697903; + } + break; + case 1772794577: + if (var2.getValue(ChestBlock.TYPE) != ChestType.SINGLE) { + var3 = -283697903; + } else { + var3 = 1999936594; + } + break; + case 1999936594: + if (!var2.getCollisionShape(var0, var1).isEmpty()) { + var3 = 1395476598; + } else { + var3 = -989951678; + } + break; + case 2118009838: + if (!(var2.getBlock() instanceof DoublePlantBlock)) { + var3 = 1744883325; + } else { + var3 = -283697903; + } + } + } + } +} diff --git a/src/main/java/defpackage/vz.java b/src/main/java/defpackage/vz.java new file mode 100644 index 0000000..358dff6 --- /dev/null +++ b/src/main/java/defpackage/vz.java @@ -0,0 +1,18 @@ +package defpackage; + +import java.util.Objects; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; + +/* JADX INFO: loaded from: evovis-dec.jar:vz.class */ +class vz extends HitResult { + /* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */ + vz(wb wbVar, Vec3 vec3) { + super(vec3); + Objects.requireNonNull(wbVar); + } + + public HitResult.Type getType() { + return HitResult.Type.ENTITY; + } +} diff --git a/src/main/java/defpackage/w.java b/src/main/java/defpackage/w.java new file mode 100644 index 0000000..31e3f61 --- /dev/null +++ b/src/main/java/defpackage/w.java @@ -0,0 +1,9 @@ +package defpackage; + +public interface w { + void hMI5_0$applyRotation(); + + void hMI5_0$setRotationValues(float var1, float var2, float var3); + + void hMI5_0$setPosValues(float var1, float var2, float var3); +} diff --git a/src/main/java/defpackage/wa.java b/src/main/java/defpackage/wa.java new file mode 100644 index 0000000..cbf6667 --- /dev/null +++ b/src/main/java/defpackage/wa.java @@ -0,0 +1,48 @@ +package defpackage; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.Vec3; + +final class wa { + ItemStack stack; + Vec3 pos; + int ticks; + + wa(ItemStack stack, Vec3 pos, int ticks) { + this.stack = stack; + this.pos = pos; + this.ticks = ticks; + } + + public ItemStack stack() { + return this.stack; + } + public Vec3 pos() { + return this.pos; + } + public int ticks() { + return this.ticks; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof wa that)) { + return false; + } + if (!java.util.Objects.equals(this.stack, that.stack)) { return false; } + if (!java.util.Objects.equals(this.pos, that.pos)) { return false; } + if (this.ticks != that.ticks) { return false; } + return true; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(this.stack, this.pos, this.ticks); + } + + @Override + public String toString() { + return "wa[" + "stack=" + this.stack + ", " + "pos=" + this.pos + ", " + "ticks=" + this.ticks + "]"; + } + +} diff --git a/src/main/java/defpackage/wb.java b/src/main/java/defpackage/wb.java new file mode 100644 index 0000000..35c9f3b --- /dev/null +++ b/src/main/java/defpackage/wb.java @@ -0,0 +1,931 @@ +package defpackage; + +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import java.lang.runtime.SwitchBootstraps; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Objects; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.component.DataComponents; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.entity.projectile.arrow.AbstractArrow; +import net.minecraft.world.entity.projectile.arrow.Arrow; +import net.minecraft.world.entity.projectile.arrow.ThrownTrident; +import net.minecraft.world.entity.projectile.throwableitemprojectile.Snowball; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrowableItemProjectile; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownEgg; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownEnderpearl; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownExperienceBottle; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownSplashPotion; +import net.minecraft.world.item.BowItem; +import net.minecraft.world.item.CrossbowItem; +import net.minecraft.world.item.EggItem; +import net.minecraft.world.item.EnderpearlItem; +import net.minecraft.world.item.ExperienceBottleItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.SnowballItem; +import net.minecraft.world.item.SplashPotionItem; +import net.minecraft.world.item.TridentItem; +import net.minecraft.world.item.component.ChargedProjectiles; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; + +@rn(name = "Predictions", category = rl.COMBAT, description = "Shows where an item will land") +public final class wb extends rm { + private final List points = new ArrayList<>(); + public static wb INSTANCE = new wb(); + + private wb() { + } + + @k + public void onDraw(fs var1) { + Iterator var2 = null; + wa var3 = null; + Vec3 var4 = null; + int var5 = 0; + ge var6 = null; + double var7 = 0.0; + String var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + int var23 = 2145855258; + + while (true) { + switch (var23) { + case -1243428829: + var3 = (wa)var2.next(); + var4 = aqk.worldSpaceToScreenSpace(var3.pos); + var5 = var3.ticks; + if (!aqk.canSee(var3.pos)) { + var23 = 2016564767; + } else { + var23 = -414607301; + } + break; + case -921033975: + if (var2.hasNext()) { + var23 = -1243428829; + } else { + var23 = 1858223069; + } + break; + case -414607301: + var6 = gl.MEDIUM.getFont(7.0F); + var7 = var5 * ((171727291 ^ -171727241) + ((171727291 & -171727241) << 1)) / 1000.0; + String var10000 = "%.1f"; + Object[] var10001 = new Object[1]; + var10001[0] = var7; + var9 = String.format(var10000, var10001) + " sec"; + var10 = var6.width(var9); + var11 = 11.2F; + var12 = 2.0F; + var13 = (float)var4.x(); + var14 = (float)var4.y(); + var15 = var11 + var12 + var10; + var16 = var11; + var17 = var13 - var15 / 2.0F; + var18 = var14 - var16 / 2.0F; + var1.getContext() + .drawRoundedRect( + var17 - var12, + var18 - var12, + var15 + var12 * 2.0F, + var16 + var12 * 2.0F, + asj.all(oc.CHIP), + bz.getInstance().getThemeManager().getCurrentTheme().getForegroundColor() + ); + var19 = var17; + var20 = var18 + (var16 - var11) / 2.0F; + var1.getContext().pushMatrix(); + var1.getContext().pose().translate(var19, var20); + var1.getContext().pose().scale(0.7F, 0.7F); + var1.getContext() + .item(var3.stack, 0, (1660755979 | -1660755979) + (1660755979 & -1660755979)); + var1.getContext().popMatrix(); + var21 = var19 + var11 + var12; + var22 = var14 - var6.height() / 2.0F; + var1.getContext().drawText(var6, var9, var21, var22, bz.getInstance().getThemeManager().getCurrentTheme().getWhite()); + var23 = -921033975; + break; + case 1858223069: + return; + case 2016564767: + var23 = -921033975; + break; + case 2145855258: + default: + var2 = this.points.iterator(); + var23 = -921033975; + } + } + } + + @k + public void onWorldRender(ft var1) { + this.points.clear(); + this.drawPredictionInHand(var1.getMatrix(), List.of(mc.player.getMainHandItem(), mc.player.getOffhandItem())); + this.getProjectiles() + .forEach( + var1x -> { + Vec3 var2 = null; + Vec3 var3 = null; + Vec3 var4 = null; + int var5 = 0; + int var6 = 0; + BlockHitResult var7 = null; + Vec3 var8 = null; + Vec3 var9 = null; + int var10 = 0; + int var11 = -1080595899; + + while (true) { + switch (var11) { + case -2072313342: + if (var10 == 0) { + var11 = -154878793; + } else { + var11 = -1603648404; + } + break; + case -1603648404: + this.BreakingBad(var1x, var3, var5); + var11 = 1846105720; + break; + case -1080595899: + default: + var2 = var1x.getDeltaMovement(); + var3 = var1x.position(); + var5 = 0; + var6 = 0; + var11 = 1424873184; + break; + case -949996292: + var3 = var7.getLocation(); + var11 = 1036762301; + break; + case -154878793: + if (var7.getType().equals(Type.ENTITY)) { + var11 = -1603648404; + } else { + var11 = 735972267; + } + break; + case 735972267: + var5++; + var6++; + var11 = 1424873184; + break; + case 1036762301: + auk.drawLine( + var4, + var3, + bz.getInstance().getThemeManager().getClientColor(var6).mulAlpha(Mth.clamp(var6 / 25.0F, 0.0F, 1.0F)).getRGB(), + 2.0F, + (boolean)((((930445632 ^ -930445632) + ((930445632 & -930445632) << 1)) + ) != 0)); + var8 = var4; + var9 = var3; + var10 = (apo.streamEntities().filter(var0 -> { + LivingEntity var1xx = null; + int var3x = 0; + int var2x = -862502759; + + while (true) { + switch (var2x) { + case -862502759: + default: + if (var0 instanceof LivingEntity) { + var2x = 767084628; + } else { + var2x = -362149777; + } + break; + case -725688084: + var3x = 1; + var2x = 2073635148; + break; + case -362149777: + var3x = 0; + var2x = 2073635148; + break; + case 767084628: + var1xx = (LivingEntity)var0; + if (var1xx != mc.player) { + var2x = 1825919880; + } else { + var2x = -362149777; + } + break; + case 1825919880: + if (var1xx.isAlive()) { + var2x = -725688084; + } else { + var2x = -362149777; + } + break; + case 2073635148: + return (boolean)((var3x) != 0); + } + } + }).anyMatch(var2x -> var2x.getBoundingBox().inflate(0.25).intersects(var8, var9))) ? 1 : 0; + if (!var7.getType().equals(Type.BLOCK)) { + var11 = 1823401892; + } else { + var11 = -1603648404; + } + break; + case 1424873184: + if (var6 < (-2122600723 | 2122601023) + (-2122600723 & 2122601023)) { + var11 = 1526908570; + } else { + var11 = 1846105720; + } + break; + case 1526908570: + var4 = var3; + var3 = var3.add(var2); + var2 = this.calculateMotion(var1x, var4, var2); + var7 = apu.raycast(var4, var3, Block.COLLIDER, var1x); + if (!var7.getType().equals(Type.MISS)) { + var11 = -949996292; + } else { + var11 = 1036762301; + } + break; + case 1823401892: + if (!(var3.y < -128.0)) { + var11 = -2072313342; + } else { + var11 = -1603648404; + } + break; + case 1846105720: + return; + } + } + } + ); + } + + public void drawPredictionInHand(PoseStack var1, List var2) { + Item var3 = mc.player.getUseItem().getItem(); + Iterator var4 = var2.iterator(); + if (var4.hasNext()) { + ItemStack var5 = (ItemStack)var4.next(); + Item var7 = var5.getItem(); + int var8 = 0; + + List var10000; + label55: + while (true) { + switch (typeSwitch(var7, var8, ExperienceBottleItem.class, SplashPotionItem.class, TridentItem.class, SnowballItem.class, EggItem.class, EnderpearlItem.class, BowItem.class, CrossbowItem.class)) { + case 0: + ExperienceBottleItem var9 = (ExperienceBottleItem)var7; + var10000 = this.checkTrajectory(new ThrownExperienceBottle(mc.level, mc.player, var5), 0.8); + break label55; + case 1: + SplashPotionItem var10 = (SplashPotionItem)var7; + var10000 = this.checkTrajectory(new ThrownSplashPotion(mc.level, mc.player, var5), 0.55); + break label55; + case 2: + TridentItem var11 = (TridentItem)var7; + if (var11.equals(var3) && mc.player.getTicksUsingItem() >= (-1949859467 ^ 1949859477) + ((-1949859467 & 1949859477) << 1)) { + var10000 = this.checkTrajectory(new ThrownTrident(mc.level, mc.player, var5), 2.5); + break label55; + } + + var8 = 3; + break; + case 3: + SnowballItem var12 = (SnowballItem)var7; + var10000 = this.checkTrajectory(new Snowball(mc.level, mc.player, var5), 1.5); + break label55; + case 4: + EggItem var13 = (EggItem)var7; + var10000 = this.checkTrajectory(new ThrownEgg(mc.level, mc.player, var5), 1.5); + break label55; + case 5: + EnderpearlItem var14 = (EnderpearlItem)var7; + var10000 = this.checkTrajectory(new ThrownEnderpearl(mc.level, mc.player, var5), 1.5); + break label55; + case 6: + BowItem var15 = (BowItem)var7; + if (var15.equals(var3) && mc.player.isUsingItem()) { + var10000 = this.checkTrajectory( + new Arrow(mc.level, mc.player, var5, var5), + 3.0F + * Mth.clamp( + ( + mc.player.getTicksUsingItem() + + mc.getDeltaTracker() + .getGameTimeDeltaPartialTick((boolean)((((1707648592 ^ -1707648592) + ((1707648592 & -1707648592) << 1))) != 0)) + ) + / 20.0F, + 0.0F, + 1.0F + ) + ); + break label55; + } + + var8 = 7; + break; + case 7: + CrossbowItem var16 = (CrossbowItem)var7; + if (!CrossbowItem.isCharged(var5)) { + var8 = 8; + break; + } + + ChargedProjectiles var17 = (ChargedProjectiles)var5.get(DataComponents.CHARGED_PROJECTILES); + ArrayList var18 = new ArrayList(); + if (var17 != null) { + float var19 = ((ItemStack)var17.itemCopies().getFirst()).is(Items.FIREWORK_ROCKET) ? 100.0F : 3.0F; + var18.add(this.checkTrajectory(aqb.getClientRotation().toVector(), new Arrow(mc.level, mc.player, var5, var5), var19)); + if (var17.itemCopies().size() > (766969007 ^ -766969005) + ((766969007 & -766969005) << 1)) { + float var20 = mc.player.getXRot() / 90.0F; + float var21 = var20 * var20 * var20 * var20 * var20; + float var22 = Mth.lerpInt( + Math.abs(var21), + 10, + (2041872689 ^ -2041872599) + ((2041872689 & -2041872599) << 1) + ); + float var23 = Mth.lerpInt( + var21, + 0, + (1627768464 ^ -1627768454) + ((1627768464 & -1627768454) << 1) + ); + var18.add( + this.checkTrajectory( + new apz(mc.player.getYRot() - var22, mc.player.getXRot() - var23).toVector(), new Arrow(mc.level, mc.player, var5, var5), var19 + ) + ); + var18.add( + this.checkTrajectory( + new apz(mc.player.getYRot() + var22, mc.player.getXRot() - var23).toVector(), new Arrow(mc.level, mc.player, var5, var5), var19 + ) + ); + } + } + + var10000 = var18; + break label55; + default: + var10000 = null; + break label55; + } + } + + List var6 = var10000; + if (var6 != null) { + var6 = var6.stream().filter(Objects::nonNull).toList(); + if (!var6.isEmpty()) { + this.renderProjectileResults(var1, var6); + } + } + } + } + + public void renderProjectileResults(PoseStack var1, List var2) { + RenderType var3 = null; + BufferBuilder var4 = null; + Iterator var5 = null; + HitResult var6 = null; + Direction var7 = null; + Vec3 var8 = null; + int var9 = 0; + double var10 = 0.0; + int var12 = 0; + int var13 = 0; + int var15 = 0; + int var14 = -1218239690; + + while (true) { + switch (var14) { + case -1975824106: + var6 = (HitResult)var5.next(); + var7 = this.getDirection(var6); + var8 = var6.getLocation().subtract(mc.getEntityRenderDispatcher().camera.position()); + if (var6.getType().equals(Type.ENTITY)) { + var14 = 415414; + } else { + var14 = -1393836549; + } + break; + case -1393836549: + var15 = bz.getInstance().getThemeManager().getClientColor(90).getRGB(); + var14 = -982024190; + break; + case -1218239690: + default: + var3 = arj.lines(); + var4 = arj.begin(var3); + var5 = var2.iterator(); + var14 = -1088465878; + break; + case -1088465878: + if (var5.hasNext()) { + var14 = -1975824106; + } else { + var14 = 845932354; + } + break; + case -1024532544: + auk.vertexLine( + var1, var4, aqj.cosSin(var12, var13, var10), aqj.cosSin(var12 + 1, var13, var10), var9 + ); + var12++; + var14 = 1797733465; + break; + case -982024190: + var9 = var15; + var10 = 0.3; + var1.pushPose(); + var1.translate(var8.x, var8.y, var8.z); + if (!var7.equals(Direction.WEST)) { + var14 = 1580765193; + } else { + var14 = -552200847; + } + break; + case -552200847: + var1.mulPose(Axis.ZP.rotationDegrees(90.0F)); + var14 = 968344133; + break; + case 415414: + var15 = asu.RED.getRGB(); + var14 = -982024190; + break; + case 845932354: + arj.draw(var3, var4); + return; + case 968344133: + var12 = 0; + var13 = 90; + var14 = 1797733465; + break; + case 1211479073: + var1.mulPose(Axis.XP.rotationDegrees(90.0F)); + var14 = 968344133; + break; + case 1580765193: + if (var7.equals(Direction.EAST)) { + var14 = -552200847; + } else { + var14 = 1627719331; + } + break; + case 1612701832: + auk.vertexLine(var1, var4, new Vec3(0.0, 0.0, -var10), new Vec3(0.0, 0.0, var10), var9); + auk.vertexLine(var1, var4, new Vec3(-var10, 0.0, 0.0), new Vec3(var10, 0.0, 0.0), var9); + var1.popPose(); + var14 = -1088465878; + break; + case 1627719331: + if (!var7.equals(Direction.SOUTH)) { + var14 = 1741542662; + } else { + var14 = 1211479073; + } + break; + case 1741542662: + if (var7.equals(Direction.NORTH)) { + var14 = 1211479073; + } else { + var14 = 968344133; + } + break; + case 1797733465: + if (var12 <= var13) { + var14 = -1024532544; + } else { + var14 = 1612701832; + } + } + } + } + + public List getProjectiles() { + return apo.streamEntities().filter(var1 -> { + int var3 = 0; + int var2 = 1010670283; + + while (true) { + switch (var2) { + case -1750270497: + if (!(var1 instanceof ThrowableItemProjectile)) { + var2 = -360736397; + } else { + var2 = -1062989116; + } + break; + case -1062989116: + if (!this.visible(var1)) { + var2 = 1924889705; + } else { + var2 = 501898294; + } + break; + case -360736397: + if (var1 instanceof ItemEntity) { + var2 = -1062989116; + } else { + var2 = 501898294; + } + break; + case -350596991: + return (boolean)((var3) != 0); + case 501898294: + var3 = 0; + var2 = -350596991; + break; + case 1010670283: + default: + if (!(var1 instanceof AbstractArrow)) { + var2 = -1750270497; + } else { + var2 = -1062989116; + } + break; + case 1924889705: + var3 = 1; + var2 = -350596991; + } + } + }).toList(); + } + + public List checkTrajectory(Projectile var1, double var2) { + return new ArrayList<>(Collections.singleton(this.checkTrajectory(aqb.getClientRotation().toVector(), var1, var2))); + } + + public HitResult checkTrajectory(Vec3 var1, Projectile var2, double var3) { + double var5 = 0.0; + Vec3 var7 = null; + Arrow var8 = null; + int var9 = -1604386065; + + while (true) { + switch (var9) { + case -1604386065: + default: + var5 = Math.sqrt(var1.x * var1.x + var1.y * var1.y + var1.z * var1.z); + var7 = mc.player.position().subtract(mc.player.xo, mc.player.yo, mc.player.zo); + if (var2 instanceof Arrow) { + var9 = -1555165088; + } else { + var9 = 706671328; + } + break; + case -1555165088: + var8 = (Arrow)var2; + if (var8.getPickupItemStackOrigin().getItem() instanceof CrossbowItem) { + var9 = -1390727410; + } else { + var9 = 706671328; + } + break; + case -1390727410: + var7 = Vec3.ZERO; + var9 = 706671328; + break; + case 706671328: + return this.traceTrajectory( + mc.player.getEyePosition().add(aqj.interpolate(mc.player).subtract(mc.player.position())), var1.scale(var3 / var5).add(var7), var2 + ); + } + } + } + + public HitResult calcTrajectory(Projectile var1) { + return this.traceTrajectory(var1.position(), var1.getDeltaMovement(), var1); + } + + public HitResult traceTrajectory(Vec3 var1, Vec3 var2, Projectile var3) { + Vec3 var4 = null; + int var5 = 0; + BlockHitResult var6 = null; + Vec3 var7 = null; + Vec3 var8 = null; + int var9 = -2104129434; + + while (true) { + switch (var9) { + case -2104129434: + default: + var5 = 0; + var9 = -494246282; + break; + case -1571190021: + var4 = var1; + var1 = var1.add(var2); + var2 = this.calculateMotion(var3, var4, var2); + var6 = apu.raycast(var4, var1, Block.COLLIDER, var3); + if (!var6.getType().equals(Type.MISS)) { + var9 = -68763641; + } else { + var9 = 407297185; + } + break; + case -1216243476: + if (var1.y < -128.0) { + var9 = 1056760113; + } else { + var9 = 471890618; + } + break; + case -494246282: + if (var5 < (164056000 ^ -164055700) + ((164056000 & -164055700) << 1)) { + var9 = -1571190021; + } else { + var9 = 1350726408; + } + break; + case -68763641: + return var6; + case 407297185: + var7 = var4; + var8 = var1; + if (apo.streamEntities().filter(var1x -> { + LivingEntity var2x = null; + int var4x = 0; + int var3x = -1845508789; + + while (true) { + switch (var3x) { + case -1845508789: + default: + if (var1x != var3.getOwner()) { + var3x = -1466435252; + } else { + var3x = -1159027112; + } + break; + case -1466435252: + if (var1x instanceof LivingEntity) { + var3x = -574139756; + } else { + var3x = -1159027112; + } + break; + case -1159027112: + var4x = 0; + var3x = 382699339; + break; + case -860143981: + var4x = 1; + var3x = 382699339; + break; + case -574139756: + var2x = (LivingEntity)var1x; + if (var2x != mc.player) { + var3x = 1585173432; + } else { + var3x = -1159027112; + } + break; + case 382699339: + return (boolean)((var4x) != 0); + case 1585173432: + if (var2x.isAlive()) { + var3x = -860143981; + } else { + var3x = -1159027112; + } + } + } + }).anyMatch(var2x -> var2x.getBoundingBox().inflate(0.3).intersects(var7, var8))) { + var9 = 630827245; + } else { + var9 = -1216243476; + } + break; + case 471890618: + var5++; + var9 = -494246282; + break; + case 630827245: + return new HitResult(var1) { + public Type getType() { + return Type.ENTITY; + } + }; + case 1056760113: + var9 = 1350726408; + break; + case 1350726408: + return null; + } + } + } + + public Vec3 calculateMotion(Entity var1, Vec3 var2, Vec3 var3) { + boolean var4 = Objects.requireNonNull(mc.level).getBlockState(BlockPos.containing(var2)).getFluidState().is(FluidTags.WATER); + Entity var6 = var1; + int var7 = 0; + + float var10000; + label19: + while (true) { + switch (typeSwitch(var6, var7, ThrownTrident.class, AbstractArrow.class)) { + case 0: + ThrownTrident var8 = (ThrownTrident)var6; + var10000 = 0.99F; + break label19; + case 1: + AbstractArrow var9 = (AbstractArrow)var6; + if (!var4) { + var7 = 2; + break; + } + + var10000 = 0.6F; + break label19; + default: + var10000 = var4 ? 0.8F : 0.99F; + break label19; + } + } + + float var5 = var10000; + return var3.scale(var5).add(0.0, -var1.getGravity(), 0.0); + } + + private void BreakingBad(Entity var1, Vec3 var2, int var3) { + switch (var1) { + case ItemEntity var6: + this.points.add(new wa(var6.getItem(), var2, var3)); + break; + case ThrowableItemProjectile var7: + this.points.add(new wa(var7.getItem(), var2, var3)); + break; + case AbstractArrow var8: + this.points.add(new wa(var8.getPickupItemStackOrigin(), var2, var3)); + break; + default: + } + } + + private Direction getDirection(HitResult var1) { + BlockHitResult var2 = null; + int var3 = -1081149449; + + while (true) { + switch (var3) { + case -1394185193: + Vec3 var5 = var1.getLocation().subtract(mc.player.getEyePosition()).normalize(); + return Direction.getApproximateNearest(var5.x, var5.y, var5.z); + case -1081149449: + default: + if (var1 instanceof BlockHitResult) { + var3 = 1884089433; + } else { + var3 = -1394185193; + } + break; + case 1884089433: + var2 = (BlockHitResult)var1; + return var2.getDirection(); + } + } + } + + private boolean visible(Entity var1) { + int var2 = 0; + int var3 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var4 = -591440864; + + while (true) { + switch (var4) { + case -2055664202: + var2 = var5; + if (var1 instanceof ItemEntity) { + var4 = -600841459; + } else { + var4 = 2027525386; + } + break; + case -2043287735: + if (var1.getZ() == var1.zo) { + var4 = -1670818448; + } else { + var4 = 1546137737; + } + break; + case -1670818448: + var5 = 1; + var4 = -2055664202; + break; + case -1624608697: + var7 = 0; + var4 = 1330102225; + break; + case -1445235441: + var7 = 1; + var4 = 1330102225; + break; + case -705806804: + if (apo.isBoxInBlock(var1.getBoundingBox().inflate(2.0), Blocks.WATER)) { + var4 = 519280416; + } else { + var4 = 2027525386; + } + break; + case -600841459: + if (!var1.onGround()) { + var4 = -705806804; + } else { + var4 = 519280416; + } + break; + case -591440864: + default: + if (var1.getX() == var1.xo) { + var4 = 1698914252; + } else { + var4 = 1546137737; + } + break; + case 37481185: + if (var3 != 0) { + var4 = -1445235441; + } else { + var4 = -1624608697; + } + break; + case 519280416: + var6 = 1; + var4 = 1782886467; + break; + case 1330102225: + return (boolean)((var7) != 0); + case 1546137737: + var5 = 0; + var4 = -2055664202; + break; + case 1698914252: + if (var1.getY() == var1.yo) { + var4 = -2043287735; + } else { + var4 = 1546137737; + } + break; + case 1782886467: + var3 = var6; + if (var2 == 0) { + var4 = 37481185; + } else { + var4 = -1445235441; + } + break; + case 2027525386: + var6 = 0; + var4 = 1782886467; + } + } + } + + private static int typeSwitch(Object selector, int state, Class... labels) { + if (state < 0 || state > labels.length) { + throw new IndexOutOfBoundsException("Index " + state + " out of bounds for length " + (labels.length + 1)); + } + for (int i = state; i < labels.length; i++) { + if (labels[i].isInstance(selector)) { + return i; + } + } + return labels.length; + } +} diff --git a/src/main/java/defpackage/wc.java b/src/main/java/defpackage/wc.java new file mode 100644 index 0000000..83c6212 --- /dev/null +++ b/src/main/java/defpackage/wc.java @@ -0,0 +1,13 @@ +package defpackage; + +import net.minecraft.world.phys.Vec3; + +final class wc { + final Vec3 pos; + final long time; + + wc(Vec3 var1, long var2) { + this.pos = var1; + this.time = var2; + } +} diff --git a/src/main/java/defpackage/wd.java b/src/main/java/defpackage/wd.java new file mode 100644 index 0000000..a711b48 --- /dev/null +++ b/src/main/java/defpackage/wd.java @@ -0,0 +1,1414 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.textures.GpuTextureView; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack.Pose; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.function.Supplier; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.phys.Vec3; + +@rn(name = "ProjectileTrails", description = "Draws fading trails behind arrows, pearls and other projectiles", category = rl.RENDER) +public final class wd extends rm { + private static final String FILL_NORMAL = "Normal"; + private static final String FILL_SHADER = "Shader"; + private static final String SHADER_NEBULA = "Nebula"; + private static final String SHADER_COSMOS = "Cosmos"; + private static final String SHADER_WEB = "Web"; + private static final String SHADER_PLASMA = "Plasma"; + private static final String SHADER_GLASS = "LiquidGlass"; + private static final String SHADER_MATRIX = "Matrix"; + private static final String SHADER_ARMOR = "LivingArmor"; + private static final String SHADER_ALIEN = "AlienNebula"; + private static final double MIN_STEP_SQ = 0.01; + private static final int MAX_POINTS = 256; + private static final float DEGENERATE_SQ = 1.0E-7F; + private static final float FILL_ALPHA = 0.5F; + private static final float LINE_ALPHA = 1.0F; + private static final float FADE_RAMP = 3.0F; + private static final int RIBBON_STRIPS = 3; + private static final float[] RIBBON_OFFSETS; + private static final float[] RIBBON_EDGE_ALPHA; + private static final float[] RIBBON_V; + private final sm durationSetting = new sm( + "Duration", 500.0F, 100.0F, 2000.0F, 50.0F + ) + .description("How long the trail segments last in milliseconds"); + private final sm widthSetting = new sm("Width", 0.15F, 0.05F, 1.5F, 0.05F) + .description( + "Width of the trail ribbon in blocks" + ); + private final sm lineWidthSetting = new sm( + "Line width", 2.0F, 1.0F, 5.0F, 0.5F + ) + .description("Thickness of the trail outline"); + private final ru fillSetting = new ru( + "Fill", (boolean)((((-1835055499 ^ 1835055500) + ((-1835055499 & 1835055500) << 1)) + ) != 0)) + .description( + "Fill the inside of the trail" + ); + private final sg fillType; + private final sg shaderType; + private final sm shaderSpeed; + private final sm shaderAlpha; + private final sg shaderColorSetting; + private final rx shaderCustomColor; + private final ru linesSetting; + private final sg colorSetting; + private final rx customColorSetting; + private final Map> trails; + private final float[] frameCenter; + private final float[] frameSide; + public static final wd INSTANCE = new wd(); + + private wd() { + String var10003 = "Fill type"; + Supplier var10004 = this.fillSetting::isEnabled; + String[] var10005 = new String[2]; + var10005[0] = "Normal"; + var10005[1] = "Shader"; + this.fillType = new sg(var10003, var10004, var10005) + .describe( + "Normal", + "Solid color fill" + ) + .describe( + "Shader", + "Animated shader fill" + ) + .description( + "Type of fill applied to the trail" + ); + var10003 = "Shader"; + var10004 = () -> { + int var2x = 0; + int var1x = -767466800; + + while (true) { + switch (var1x) { + case -1466762694: + if (this.fillType.is("Shader")) { + var1x = -606020730; + } else { + var1x = 1077654320; + } + break; + case -767466800: + default: + if (this.fillSetting.isEnabled()) { + var1x = -1466762694; + } else { + var1x = 1077654320; + } + break; + case -606020730: + var2x = 1; + var1x = 778022059; + break; + case 778022059: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 1077654320: + var2x = 0; + var1x = 778022059; + } + } + }; + var10005 = new String[8]; + var10005[0] = "Nebula"; + var10005[1] = "Cosmos"; + var10005[2] = "Web"; + var10005[3] = "Plasma"; + var10005[4] = "LiquidGlass"; + var10005[5] = "Matrix"; + var10005[6] = "LivingArmor"; + var10005[7] = "AlienNebula"; + this.shaderType = new sg(var10003, var10004, var10005) + .describe( + "Nebula", + "Purple nebula effect" + ) + .describe( + "Cosmos", + "Starry cosmos effect" + ) + .describe( + "Web", + "Intertwined web effect" + ) + .describe( + "Plasma", + "Flowing plasma effect" + ) + .describe( + "LiquidGlass", + "Shiny glass effect" + ) + .describe( + "Matrix", + "Falling code effect" + ) + .describe( + "LivingArmor", + "Enchanted armor glint" + ) + .describe( + "AlienNebula", + "Alien-like distorted effect" + ) + .description( + "Shader effect for the trail fill" + ); + this.shaderSpeed = new sm( + "Shader speed", 1.0F, 0.1F, 3.0F, 0.1F, () -> { + int var2x = 0; + int var1x = 261212318; + + while (true) { + switch (var1x) { + case -1729595927: + var2x = 0; + var1x = 1959718781; + break; + case -1566453895: + var2x = 1; + var1x = 1959718781; + break; + case -674666271: + if (this.fillType.is("Shader")) { + var1x = -1566453895; + } else { + var1x = -1729595927; + } + break; + case 261212318: + default: + if (this.fillSetting.isEnabled()) { + var1x = -674666271; + } else { + var1x = -1729595927; + } + break; + case 1959718781: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description( + "Animation speed for the shader fill" + ); + this.shaderAlpha = new sm( + "Shader opacity", 1.0F, 0.1F, 1.0F, 0.05F, () -> { + int var2x = 0; + int var1x = -1811510907; + + while (true) { + switch (var1x) { + case -1811510907: + default: + if (this.fillSetting.isEnabled()) { + var1x = 242484447; + } else { + var1x = 158231874; + } + break; + case -1506562873: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -137455219: + var2x = 1; + var1x = -1506562873; + break; + case 158231874: + var2x = 0; + var1x = -1506562873; + break; + case 242484447: + if (this.fillType.is("Shader")) { + var1x = -137455219; + } else { + var1x = 158231874; + } + } + } + } + ) + .description("Transparency of the shader fill"); + var10003 = "Shader color"; + var10004 = () -> { + int var2x = 0; + int var1x = -1841909050; + + while (true) { + switch (var1x) { + case -1841909050: + default: + if (this.fillSetting.isEnabled()) { + var1x = -1486121667; + } else { + var1x = 1059889594; + } + break; + case -1486121667: + if (this.fillType.is("Shader")) { + var1x = 1946822530; + } else { + var1x = 1059889594; + } + break; + case 845275146: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 1059889594: + var2x = 0; + var1x = 845275146; + break; + case 1946822530: + var2x = 1; + var1x = 845275146; + } + } + }; + var10005 = new String[3]; + var10005[0] = "Client"; + var10005[1] = "Rainbow"; + var10005[2] = "Custom"; + this.shaderColorSetting = new sg(var10003, var10004, var10005) + .describe( + "Client", + "Use the client theme color" + ) + .describe( + "Rainbow", + "Rainbow shifting colors" + ) + .describe( + "Custom", + "Use a custom chosen color" + ) + .description("Color mode for the shader"); + this.shaderCustomColor = new rx( + "Shader custom color", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> { + int var2x = 0; + int var1x = -969047128; + + while (true) { + switch (var1x) { + case -969047128: + default: + if (this.fillSetting.isEnabled()) { + var1x = 940119081; + } else { + var1x = 437701366; + } + break; + case 5239551: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 292138910: + if (this.shaderColorSetting.is("Custom")) { + var1x = 1776320745; + } else { + var1x = 437701366; + } + break; + case 437701366: + var2x = 0; + var1x = 5239551; + break; + case 940119081: + if (this.fillType.is("Shader")) { + var1x = 292138910; + } else { + var1x = 437701366; + } + break; + case 1776320745: + var2x = 1; + var1x = 5239551; + } + } + } + ) + .description( + "Custom color for the shader fill" + ); + this.linesSetting = new ru( + "Lines", + (boolean)((((2038809336 ^ -2038809335) + ((2038809336 & -2038809335) << 1)) + ) != 0)) + .description( + "Draw outlining lines on the edges of the trail" + ); + var10003 = "Color"; + String[] var6 = new String[3]; + var6[0] = "Client"; + var6[1] = "Rainbow"; + var6[2] = "Custom"; + this.colorSetting = new sg(var10003, var6) + .describe( + "Client", + "Use the client theme color" + ) + .describe( + "Rainbow", + "Rainbow shifting colors" + ) + .describe( + "Custom", + "Use a custom chosen color" + ) + .description( + "Color mode for the trail" + ); + this.customColorSetting = new rx( + "Custom color", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> this.colorSetting.is("Custom") + ) + .description( + "Custom color for the trail" + ); + this.trails = new HashMap<>(); + this.frameCenter = new float[768]; + this.frameSide = new float[768]; + } + + @Override + public void onEnable() { + super.onEnable(); + this.trails.clear(); + } + + @Override + public void onDisable() { + super.onDisable(); + this.trails.clear(); + } + + public void onWorldRender(LevelRenderContext var1) { + PoseStack var2 = null; + Camera var3 = null; + SubmitNodeCollector var4 = null; + int var5 = 0; + Vec3 var6 = null; + float var7 = 0.0F; + int var9 = 0; + int var8 = -1571585088; + + while (true) { + switch (var8) { + case -1998598873: + if (this.fillSetting.isEnabled()) { + var8 = -1090114210; + } else { + var8 = 1899765082; + } + break; + case -1607756652: + if (var5 == 0) { + var8 = 128408944; + } else { + var8 = 1172466878; + } + break; + case -1571585088: + default: + if (this.isEnabled()) { + var8 = -221577796; + } else { + var8 = 2057896224; + } + break; + case -1090114210: + if (this.fillType.is("Shader")) { + var8 = 171369419; + } else { + var8 = 1899765082; + } + break; + case -945144871: + var4 = var1.submitNodeCollector(); + if (var4 == null) { + var8 = 1866749795; + } else { + var8 = -1998598873; + } + break; + case -423060045: + var2 = var1.poseStack(); + var3 = mc.getEntityRenderDispatcher().camera; + if (var2 != null) { + var8 = 676396969; + } else { + var8 = 685928468; + } + break; + case -221577796: + if (mc.player != null) { + var8 = 1868700952; + } else { + var8 = 2057896224; + } + break; + case -14739929: + this.renderLines(var4, var2, var6, var7); + var8 = 1629975497; + break; + case 128408944: + this.renderNormalFill(var4, var2, var6, var7); + var8 = 1172466878; + break; + case 171369419: + var9 = 1; + var8 = 1456227725; + break; + case 676396969: + if (var3 == null) { + var8 = 685928468; + } else { + var8 = 1289682637; + } + break; + case 685928468: + return; + case 1172466878: + if (this.linesSetting.isEnabled()) { + var8 = 1578045720; + } else { + var8 = 1629975497; + } + break; + case 1289682637: + this.updateTrails(); + if (this.trails.isEmpty()) { + var8 = 1975360946; + } else { + var8 = -945144871; + } + break; + case 1456227725: + var5 = var9; + var6 = var3.position(); + var7 = this.widthSetting.getCurrent(); + if (this.fillSetting.isEnabled()) { + var8 = -1607756652; + } else { + var8 = 1172466878; + } + break; + case 1578045720: + if (var5 == 0) { + var8 = -14739929; + } else { + var8 = 1629975497; + } + break; + case 1629975497: + return; + case 1866749795: + return; + case 1868700952: + if (mc.level == null) { + var8 = 2057896224; + } else { + var8 = -423060045; + } + break; + case 1899765082: + var9 = 0; + var8 = 1456227725; + break; + case 1975360946: + return; + case 2057896224: + return; + } + } + } + + public void onWorldDraw(LevelRenderContext var1) { + Camera var2 = null; + int var3 = 1457256363; + + while (true) { + switch (var3) { + case -2102352518: + return; + case -1774515102: + return; + case -1321187869: + if (!this.fillType.is("Shader")) { + var3 = 1922395829; + } else { + var3 = 99740235; + } + break; + case -511077802: + return; + case -507890340: + if (this.fillSetting.isEnabled()) { + var3 = -1321187869; + } else { + var3 = 1922395829; + } + break; + case 54493499: + if (mc.player != null) { + var3 = 1422062373; + } else { + var3 = -2102352518; + } + break; + case 99740235: + if (this.trails.isEmpty()) { + var3 = -511077802; + } else { + var3 = 942313149; + } + break; + case 399209210: + this.renderShaderFill(var2.position(), this.widthSetting.getCurrent()); + return; + case 942313149: + var2 = mc.getEntityRenderDispatcher().camera; + if (var2 == null) { + var3 = -1774515102; + } else { + var3 = 399209210; + } + break; + case 1422062373: + if (mc.level == null) { + var3 = -2102352518; + } else { + var3 = -507890340; + } + break; + case 1457256363: + default: + if (this.isEnabled()) { + var3 = 54493499; + } else { + var3 = -2102352518; + } + break; + case 1922395829: + return; + } + } + } + + private void updateTrails() { + long var1 = System.currentTimeMillis(); + long var3 = (long)this.durationSetting.getCurrent(); + + for (Entity var6 : mc.level.entitiesForRendering()) { + if (var6 instanceof Projectile) { + List var7 = this.trails.computeIfAbsent(var6.getId(), var0 -> new ArrayList<>()); + Vec3 var8 = aqj.interpolate(var6); + if (var7.isEmpty() || ((wc)var7.get(var7.size() - ((783373370 ^ -783373369) + ((783373370 & -783373369) << 1)))).pos.distanceToSqr(var8) > 0.01) { + var7.add(new wc(var8, var1)); + if (var7.size() > (-1140363555 ^ 1140363811) + ((-1140363555 & 1140363811) << 1)) { + var7.remove((-90405673 | 90405673) + (-90405673 & 90405673)); + } + } + } + } + + Iterator var9 = this.trails.values().iterator(); + + while (var9.hasNext()) { + List var10 = (List)var9.next(); + + while (!var10.isEmpty() && var1 - ((wc)var10.get((1804681884 | -1804681884) + (1804681884 & -1804681884))).time > var3) { + var10.remove((-1167521895 | 1167521895) + (-1167521895 & 1167521895)); + } + + if (var10.isEmpty()) { + var9.remove(); + } + } + } + + private int computeFrame(List var1, Vec3 var2) { + int var3 = Math.min(var1.size(), (-1335696726 ^ 1335696982) + ((-1335696726 & 1335696982) << 1)); + + for (int var4 = 0; var4 < var3; var4++) { + Vec3 var5 = ((wc)var1.get(var4)).pos; + int var6 = var4 * (3); + this.frameCenter[var6] = (float)(var5.x - var2.x); + this.frameCenter[var6 + 1] = (float)(var5.y - var2.y); + this.frameCenter[var6 + 2] = (float)(var5.z - var2.z); + } + + for (int var20 = 0; var20 < var3; var20++) { + int var21 = var20 * (3); + int var22 = Math.max( + 0, var20 - ((1330874759 ^ -1330874758) + ((1330874759 & -1330874758) << 1)) + ) + * ((1020571151 | -1020571148) + (1020571151 & -1020571148)); + int var7 = Math.min(var3 - (1), var20 + (1495598724 | -1495598723) + (1495598724 & -1495598723)) + * ((67689744 | -67689741) + (67689744 & -67689741)); + float var8 = this.frameCenter[var7] - this.frameCenter[var22]; + float var9 = this.frameCenter[var7 + 1] + - this.frameCenter[var22 + 1]; + float var10 = this.frameCenter[var7 + 2] + - this.frameCenter[var22 + 2]; + if (var8 * var8 + var9 * var9 + var10 * var10 < 1.0E-7F) { + var8 = 0.0F; + var9 = 0.0F; + var10 = 1.0F; + } + + float var11 = this.frameCenter[var21]; + float var12 = this.frameCenter[var21 + 1]; + float var13 = this.frameCenter[var21 + 2]; + float var14 = var11 * var11 + var12 * var12 + var13 * var13; + if (var14 < 1.0E-7F) { + var11 = 0.0F; + var12 = 0.0F; + var13 = 1.0F; + } + + float var15 = var9 * var13 - var10 * var12; + float var16 = var10 * var11 - var8 * var13; + float var17 = var8 * var12 - var9 * var11; + float var18 = var15 * var15 + var16 * var16 + var17 * var17; + if (var18 < 1.0E-7F) { + var15 = -var10; + var16 = 0.0F; + var17 = var8; + var18 = var15 * var15 + var17 * var17; + if (var18 < 1.0E-7F) { + var15 = 1.0F; + var16 = 0.0F; + var17 = 0.0F; + var18 = 1.0F; + } + } + + float var19 = Mth.invSqrt(var18); + this.frameSide[var21] = var15 * var19; + this.frameSide[var21 + 1] = var16 * var19; + this.frameSide[var21 + 2] = var17 * var19; + } + + return var3; + } + + private void renderNormalFill(SubmitNodeCollector var1, PoseStack var2, Vec3 var3, float var4) { + float var5 = var4 * 0.5F; + RenderType var6 = arj.positionColor(); + var1.submitCustomGeometry(var2, var6, (var3x, var4x) -> { + Iterator var5x = null; + List var6x = null; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 176915987; + + while (true) { + switch (var11) { + case -1642704720: + var11 = -1622212356; + break; + case -1622212356: + if (var5x.hasNext()) { + var11 = 744634179; + } else { + var11 = 254831604; + } + break; + case -413984356: + var9 = this.color(var8, var7, 0.5F); + var10 = this.color(var8 + 1, var7, 0.5F); + this.framedVertex(var4x, var3x, var8, -var5, var9); + this.framedVertex(var4x, var3x, var8, var5, var9); + this.framedVertex(var4x, var3x, var8 + 1, var5, var10); + this.framedVertex(var4x, var3x, var8 + 1, -var5, var10); + var8++; + var11 = 391843045; + break; + case 176915987: + default: + var5x = this.trails.values().iterator(); + var11 = -1622212356; + break; + case 254831604: + return; + case 391843045: + if (var8 < var7 - ((-1389266876 ^ 1389266877) + ((-1389266876 & 1389266877) << 1))) { + var11 = -413984356; + } else { + var11 = -1642704720; + } + break; + case 744634179: + var6x = (List)var5x.next(); + var7 = this.computeFrame(var6x, var3); + var8 = 0; + var11 = 391843045; + } + } + }); + } + + private void renderLines(SubmitNodeCollector var1, PoseStack var2, Vec3 var3, float var4) { + float var5 = var4 * 0.5F; + float var6 = this.lineWidthSetting.getCurrent(); + RenderType var7 = arj.lines(); + var1.submitCustomGeometry( + var2, + var7, + (var4x, var5x) -> { + Iterator var6x = null; + List var7x = null; + int var8 = 0; + int var9 = 0; + float var10 = 0.0F; + int var11 = 0; + int var12 = 0; + int var13 = 0; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var26 = 0.0F; + int var25 = 817383800; + + while (true) { + switch (var25) { + case -1550107066: + var10 = var26; + var11 = 0; + var25 = -793246970; + break; + case -1486828875: + if (var6x.hasNext()) { + var25 = 1881891134; + } else { + var25 = -959131136; + } + break; + case -996122445: + var24 = Mth.invSqrt(var23); + var20 *= var24; + var21 *= var24; + var22 *= var24; + var25 = -389960731; + break; + case -959131136: + return; + case -793246970: + if (var11 < var8 - ((-1646283177 ^ 1646283178) + ((-1646283177 & 1646283178) << 1))) { + var25 = 1785937143; + } else { + var25 = 668106593; + } + break; + case -389960731: + var5x.addVertex(var4x, var14, var15, var16) + .setColor(this.color(var11, var8, 1.0F)) + .setNormal(var4x, var20, var21, var22) + .setLineWidth(var6); + var5x.addVertex(var4x, var17, var18, var19) + .setColor(this.color(var11 + 1, var8, 1.0F)) + .setNormal(var4x, var20, var21, var22) + .setLineWidth(var6); + var11++; + var25 = -793246970; + break; + case -374377480: + if (var9 == 0) { + var25 = 1135529971; + } else { + var25 = 1027752474; + } + break; + case -243189644: + if (var9 < (-372227962 | 372227964) + (-372227962 & 372227964)) { + var25 = -374377480; + } else { + var25 = 1064571878; + } + break; + case 668106593: + var9++; + var25 = -243189644; + break; + case 817383800: + default: + var6x = this.trails.values().iterator(); + var25 = -1486828875; + break; + case 1027752474: + var26 = var5; + var25 = -1550107066; + break; + case 1064571878: + var25 = -1486828875; + break; + case 1135529971: + var26 = -var5; + var25 = -1550107066; + break; + case 1785937143: + var12 = var11 * (3); + var13 = (var11 + (2057690112 | -2057690111) + (2057690112 & -2057690111)) * ((-329797389 | 329797392) + (-329797389 & 329797392)); + var14 = this.frameCenter[var12] + this.frameSide[var12] * var10; + var15 = this.frameCenter[var12 + 1] + + this.frameSide[var12 + 1] * var10; + var16 = this.frameCenter[var12 + 2] + + this.frameSide[var12 + 2] * var10; + var17 = this.frameCenter[var13] + this.frameSide[var13] * var10; + var18 = this.frameCenter[var13 + 1] + + this.frameSide[var13 + 1] * var10; + var19 = this.frameCenter[var13 + 2] + + this.frameSide[var13 + 2] * var10; + var20 = var17 - var14; + var21 = var18 - var15; + var22 = var19 - var16; + var23 = var20 * var20 + var21 * var21 + var22 * var22; + if (var23 > 0.0F) { + var25 = -996122445; + } else { + var25 = -389960731; + } + break; + case 1881891134: + var7x = (List)var6x.next(); + var8 = this.computeFrame(var7x, var3); + var9 = 0; + var25 = -243189644; + } + } + } + ); + } + + private void renderShaderFill(Vec3 var1, float var2) { + atd var3 = null; + int var4 = 0; + int var5 = 0; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + GpuTextureView var11 = null; + int var12 = 0; + int var13 = 0; + BufferBuilder var14 = null; + Iterator var15 = null; + List var16 = null; + int var17 = 0; + GpuTextureView var19 = null; + int var20 = 0; + int var18 = 1192270065; + + while (true) { + switch (var18) { + case -2129513622: + var4 = (this.shaderType.is("LiquidGlass")) ? 1 : 0; + var5 = this.shaderTintColor(); + var6 = (var5 >> (2066732930 | -2066732914) + (2066732930 & -2066732914) & (1345742626 ^ -1345742371) + ((1345742626 & -1345742371) << 1)) + / 255.0F; + var7 = (var5 >> (184094789 ^ -184094781) + ((184094789 & -184094781) << 1) & (1337584907 | -1337584652) + (1337584907 & -1337584652)) / 255.0F; + var8 = (var5 & (281486990 ^ -281486735) + ((281486990 & -281486735) << 1)) / 255.0F; + var9 = (float)( + System.currentTimeMillis() % ((-5203275026276854665L ^ 5203275026276954665L) + ((-5203275026276854665L & 5203275026276954665L) << 1)) + ) + / 1000.0F + * this.shaderSpeed.getCurrent(); + var10 = var2 * 0.5F; + if (var4 != 0) { + var18 = 1524616818; + } else { + var18 = -1226019624; + } + break; + case -1957136847: + var14 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_COLOR); + var15 = this.trails.values().iterator(); + var18 = -1253122355; + break; + case -1702805762: + if (var13 < var12) { + var18 = 1121117735; + } else { + var18 = -1070021180; + } + break; + case -1563223399: + if (var4 != 0) { + var18 = 1930294807; + } else { + var18 = -8431082; + } + break; + case -1253122355: + if (var15.hasNext()) { + var18 = -172166605; + } else { + var18 = 27396462; + } + break; + case -1226019624: + var19 = null; + var18 = 753879135; + break; + case -1070021180: + return; + case -924609688: + this.emitGlassRibbon(var14, var17, var10); + var18 = 958404771; + break; + case -731881322: + if (this.shaderType.is("AlienNebula")) { + var18 = 203725011; + } else { + var18 = 854663748; + } + break; + case -172166605: + var16 = (List)var15.next(); + var17 = this.computeFrame(var16, var1); + if (var4 != 0) { + var18 = -924609688; + } else { + var18 = 1059432532; + } + break; + case -8431082: + var20 = 2; + var18 = 1158133156; + break; + case 27396462: + arj.drawCurrent(var14); + var13++; + var18 = -1702805762; + break; + case 203725011: + var3.setCameraPos((float)var1.x, (float)var1.y, (float)var1.z); + var18 = 854663748; + break; + case 331711290: + return; + case 452712203: + if (var11 == null) { + var18 = 331711290; + } else { + var18 = -1563223399; + } + break; + case 753879135: + var11 = var19; + if (var4 != 0) { + var18 = 452712203; + } else { + var18 = -1563223399; + } + break; + case 854663748: + arj.setCurrentLayer(arj.positionColor()); + if (var4 != 0) { + var18 = 1116591961; + } else { + var18 = -1957136847; + } + break; + case 958404771: + var18 = -1253122355; + break; + case 1059432532: + this.emitRibbon(var14, var17, var10); + var18 = 958404771; + break; + case 1116591961: + atd.bindTexture(var11, (boolean)((((1113389335 ^ -1113389334) + ((1113389335 & -1113389334) << 1))) != 0)); + var18 = -1957136847; + break; + case 1121117735: + var3.use(); + var3.setResolution(mc.getWindow().getWidth(), mc.getWindow().getHeight()); + var3.setTime(var9); + var3.setTintColor(var6, var7, var8); + var3.setFade(this.shaderAlpha.getCurrent()); + if (!this.shaderType.is("LivingArmor")) { + var18 = -731881322; + } else { + var18 = 203725011; + } + break; + case 1158133156: + var12 = var20; + var13 = 0; + var18 = -1702805762; + break; + case 1192270065: + default: + var3 = this.shaderProgram(); + if (var3 == null) { + var18 = 1795913374; + } else { + var18 = -2129513622; + } + break; + case 1524616818: + var19 = atb.sceneSnapshot(); + var18 = 753879135; + break; + case 1795913374: + return; + case 1930294807: + var20 = 1; + var18 = 1158133156; + } + } + } + + private void emitRibbon(BufferBuilder var1, int var2, float var3) { + int var4 = 0; + float var5 = 0.0F; + float var6 = 0.0F; + int var7 = 0; + int var8 = 1098660214; + + while (true) { + switch (var8) { + case -1181645957: + this.ribbonVertex(var1, var4, RIBBON_OFFSETS[var7] * var3, whiteAlpha(var5 * RIBBON_EDGE_ALPHA[var7])); + this.ribbonVertex( + var1, + var4, + RIBBON_OFFSETS[var7 + 1] * var3, + whiteAlpha(var5 * RIBBON_EDGE_ALPHA[var7 + 1]) + ); + this.ribbonVertex( + var1, + var4 + 1, + RIBBON_OFFSETS[var7 + 1] * var3, + whiteAlpha(var6 * RIBBON_EDGE_ALPHA[var7 + 1]) + ); + this.ribbonVertex( + var1, var4 + 1, RIBBON_OFFSETS[var7] * var3, whiteAlpha(var6 * RIBBON_EDGE_ALPHA[var7]) + ); + var7++; + var8 = 262894918; + break; + case -994912731: + if (var4 < var2 - ((1735334934 | -1735334933) + (1735334934 & -1735334933))) { + var8 = -687501945; + } else { + var8 = 741202183; + } + break; + case -687501945: + var5 = Math.min(1.0F, (float)var4 / (var2 - ((-1234487299 | 1234487300) + (-1234487299 & 1234487300))) * 3.0F); + var6 = Math.min( + 1.0F, + (float)(var4 + (1432420421 ^ -1432420420) + ((1432420421 & -1432420420) << 1)) + / (var2 - ((813016744 | -813016743) + (813016744 & -813016743))) + * 3.0F + ); + var7 = 0; + var8 = 262894918; + break; + case 262894918: + if (var7 < (-2049415358 | 2049415361) + (-2049415358 & 2049415361)) { + var8 = -1181645957; + } else { + var8 = 793853511; + } + break; + case 741202183: + return; + case 793853511: + var4++; + var8 = -994912731; + break; + case 1098660214: + default: + var4 = 0; + var8 = -994912731; + } + } + } + + private void emitGlassRibbon(BufferBuilder var1, int var2, float var3) { + int var4 = 0; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = 0; + int var10 = -631551795; + + while (true) { + switch (var10) { + case -1135202852: + this.ribbonVertex(var1, var4, RIBBON_OFFSETS[var9] * var3, glassColor(RIBBON_V[var9], var7, var5)); + this.ribbonVertex( + var1, + var4, + RIBBON_OFFSETS[var9 + 1] * var3, + glassColor(RIBBON_V[var9 + 1], var7, var5) + ); + this.ribbonVertex( + var1, + var4 + 1, + RIBBON_OFFSETS[var9 + 1] * var3, + glassColor(RIBBON_V[var9 + 1], var8, var6) + ); + this.ribbonVertex( + var1, + var4 + 1, + RIBBON_OFFSETS[var9] * var3, + glassColor(RIBBON_V[var9], var8, var6) + ); + var9++; + var10 = 421958508; + break; + case -706079704: + var4++; + var10 = 1182751768; + break; + case -631551795: + default: + var4 = 0; + var10 = 1182751768; + break; + case 421958508: + if (var9 < (-263021749 | 263021752) + (-263021749 & 263021752)) { + var10 = -1135202852; + } else { + var10 = -706079704; + } + break; + case 953909546: + return; + case 1182751768: + if (var4 < var2 - ((-394420389 ^ 394420390) + ((-394420389 & 394420390) << 1))) { + var10 = 1510750903; + } else { + var10 = 953909546; + } + break; + case 1510750903: + var5 = Math.min(1.0F, (float)var4 / (var2 - ((938784858 | -938784857) + (938784858 & -938784857))) * 3.0F); + var6 = Math.min( + 1.0F, + (float)(var4 + (-1914325727 ^ 1914325728) + ((-1914325727 & 1914325728) << 1)) + / (var2 - ((-747573539 | 747573540) + (-747573539 & 747573540))) + * 3.0F + ); + var7 = (float)var4 / (var2 - ((-2123565223 | 2123565224) + (-2123565223 & 2123565224))); + var8 = (float)(var4 + (250790144 ^ -250790143) + ((250790144 & -250790143) << 1)) + / (var2 - ((-115961918 | 115961919) + (-115961918 & 115961919))); + var9 = 0; + var10 = 421958508; + } + } + } + + private void ribbonVertex(BufferBuilder var1, int var2, float var3, int var4) { + int var5 = var2 * (3); + var1.addVertex( + this.frameCenter[var5] + this.frameSide[var5] * var3, + this.frameCenter[var5 + 1] + + this.frameSide[var5 + 1] * var3, + this.frameCenter[var5 + 2] + + this.frameSide[var5 + 2] * var3 + ) + .setColor(var4); + } + + private void framedVertex(VertexConsumer var1, Pose var2, int var3, float var4, int var5) { + int var6 = var3 * (3); + var1.addVertex( + var2, + this.frameCenter[var6] + this.frameSide[var6] * var4, + this.frameCenter[var6 + 1] + + this.frameSide[var6 + 1] * var4, + this.frameCenter[var6 + 2] + + this.frameSide[var6 + 2] * var4 + ) + .setColor(var5); + } + + private static int glassColor(float var0, float var1, float var2) { + int var3 = Mth.clamp( + Math.round(var0 * 255.0F), 0, (-1468224704 | 1468224959) + (-1468224704 & 1468224959) + ); + int var4 = Mth.clamp( + Math.round(var1 * 255.0F), 0, (-1864282489 | 1864282744) + (-1864282489 & 1864282744) + ); + int var5 = Mth.clamp( + Math.round(var2 * 255.0F), 0, (111853830 | -111853575) + (111853830 & -111853575) + ); + return var5 << (-1233315743 | 1233315767) + (-1233315743 & 1233315767) + | var3 << (730715310 | -730715294) + (730715310 & -730715294) + | var4 << 255; + } + + private static int whiteAlpha(float var0) { + return Mth.clamp( + Math.round(var0 * 255.0F), + 0, + (-2121720782 | 2121721037) + (-2121720782 & 2121721037) + ) + << (710617865 | -710617841) + (710617865 & -710617841) + | (1847445449 ^ -1830668234) + ((1847445449 & -1830668234) << 1); + } + + private atd shaderProgram() { + String var1 = this.shaderType.get(); + int var2 = -1; + switch (var1.hashCode()) { + case -1997372447: + if (var1.equals("Matrix")) { + var2 = 4; + } + break; + case -1901891230: + if (var1.equals("Plasma")) { + var2 = 2; + } + break; + case -1286538368: + if (var1.equals("LiquidGlass")) { + var2 = 3; + } + break; + case -949676042: + if (var1.equals("LivingArmor")) { + var2 = 5; + } + break; + case -289774394: + if (var1.equals("AlienNebula")) { + var2 = 6; + } + break; + case 86836: + if (var1.equals("Web")) { + var2 = 1; + } + break; + case 2024198218: + if (var1.equals("Cosmos")) { + var2 = 0; + } + } + return switch (var2) { + case 0 -> atb.worldStarfieldProgram; + case 1 -> atb.worldCobwebProgram; + case 2 -> atb.worldPlasmaProgram; + case 3 -> atb.trailGlassProgram; + case 4 -> atb.worldMatrixProgram; + case 5 -> atb.worldLivingArmorProgram; + case 6 -> atb.worldAlienNebulaProgram; + default -> atb.worldNebulaProgram; + }; + } + + private int shaderTintColor() { + String var2 = this.shaderColorSetting.get(); + int var3 = -1; + switch (var2.hashCode()) { + case -1656737386: + if (var2.equals("Rainbow")) { + var3 = 1; + } + break; + case 2029746065: + if (var2.equals("Custom")) { + var3 = 0; + } + } + int var1 = switch (var3) { + case 0 -> this.shaderCustomColor.getIntColor(); + case 1 -> asu.fromHSB( + (float)(System.currentTimeMillis() % ((-7103035932184928163L | 7103035932184932163L) + (-7103035932184928163L & 7103035932184932163L))) + / 4000.0F, + 0.85F, + 1.0F + ) + .getRGB(); + default -> bz.getInstance().getThemeManager().getCurrentTheme().getColor().getRGB(); + }; + return var1 & 16777215; + } + + private int color(int var1, int var2, float var3) { + float var4 = Math.min((float)(var1 + (1422235505 ^ -1422235504) + ((1422235505 & -1422235504) << 1)) / var2, 1.0F) * var3; + String var6 = this.colorSetting.get(); + int var7 = -1; + switch (var6.hashCode()) { + case -1656737386: + if (var6.equals("Rainbow")) { + var7 = 0; + } + break; + case 2029746065: + if (var6.equals("Custom")) { + var7 = 1; + } + } + asu var5 = switch (var7) { + case 0 -> asu.fromHSB( + (float)(System.currentTimeMillis() % ((-8323496942240964915L | 8323496942240966915L) + (-8323496942240964915L & 8323496942240966915L))) / 2000.0F + + (float)var1 / var2, + 0.85F, + 1.0F + ); + case 1 -> this.customColorSetting.getColor(1.0F); + default -> bz.getInstance().getThemeManager().getClientColor(var1 * ((-394700769 | 394700773) + (-394700769 & 394700773))); + }; + return var5.mulAlpha(Mth.clamp(var4, 0.0F, 1.0F)).getRGB(); + } + + static { + float[] var10000 = new float[4]; + var10000[0] = -1.0F; + var10000[1] = -0.44F; + var10000[2] = 0.44F; + var10000[3] = 1.0F; + RIBBON_OFFSETS = var10000; + var10000 = new float[4]; + var10000[0] = 0.0F; + var10000[1] = 1.0F; + var10000[2] = 1.0F; + var10000[3] = 0.0F; + RIBBON_EDGE_ALPHA = var10000; + var10000 = new float[4]; + var10000[0] = 0.0F; + var10000[1] = 0.22F; + var10000[2] = 0.78F; + var10000[3] = 1.0F; + RIBBON_V = var10000; + } +} diff --git a/src/main/java/defpackage/we.java b/src/main/java/defpackage/we.java new file mode 100644 index 0000000..a43fbf1 --- /dev/null +++ b/src/main/java/defpackage/we.java @@ -0,0 +1,280 @@ +package defpackage; + +import java.util.Iterator; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.item.PrimedTnt; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.phys.Vec3; +import org.joml.Vector3f; + +@rn(name = "TNTTimer", category = rl.COMBAT, description = "Shows the remaining fuse of primed TNT") +public final class we extends rm { + public static final we INSTANCE = new we(); + private static ItemStack tntStack; + private static final float DEFAULT_FUSE = 80.0F; + private final Vector3f screen = new Vector3f(); + private final ru icon = new ru( + "Icon", (boolean)((((911853502 | -911853501) + (911853502 & -911853501)) + ) != 0)) + .description("Draw a TNT icon next to the timer"); + private final ru bar = new ru( + "Fuse Bar", + (boolean)((((-1442509446 | 1442509447) + (-1442509446 & 1442509447)) + ) != 0)) + .description( + "Draw a shrinking bar representing the fuse time" + ); + + private we() { + } + + private static ItemStack tntStack() { + int var0 = -1194413349; + + while (true) { + switch (var0) { + case -1484909067: + tntStack = new ItemStack(Items.TNT); + var0 = 737094347; + break; + case -1194413349: + default: + if (tntStack == null) { + var0 = -1484909067; + } else { + var0 = 737094347; + } + break; + case 737094347: + return tntStack; + } + } + } + + @k + public void onRender(fs var1) { + aru var2 = null; + mv var3 = null; + ge var4 = null; + Iterator var5 = null; + Entity var6 = null; + PrimedTnt var7 = null; + int var8 = 0; + Vec3 var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + asu var13 = null; + String var14 = null; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + float var26 = 0.0F; + float var27 = 0.0F; + float var28 = 0.0F; + float var29 = 0.0F; + float var30 = 0.0F; + float var31 = 0.0F; + float var32 = 0.0F; + float var33 = 0.0F; + float var35 = 0.0F; + float var36 = 0.0F; + float var37 = 0.0F; + float var38 = 0.0F; + int var34 = -1949637340; + + while (true) { + switch (var34) { + case -1981201950: + var37 = 2.0F; + var34 = 1444463815; + break; + case -1949637340: + default: + if (mc.level == null) { + var34 = -1474194068; + } else { + var34 = 1720638068; + } + break; + case -1921510760: + var19 = var35; + if (this.icon.isEnabled()) { + var34 = 266297836; + } else { + var34 = 750239329; + } + break; + case -1896677269: + var10 = this.screen.x; + var11 = this.screen.y; + var12 = Mth.clamp(var8 / 80.0F, 0.0F, 1.0F); + var13 = asu.lerp(asu.RED, asu.GREEN, var12); + String var10000 = "%.1f"; + Object[] var10001 = new Object[1]; + var10001[0] = var8 / 20.0F; + var14 = String.format(var10000, var10001) + "s"; + var15 = var4.width(var14); + var16 = var4.height(); + var17 = 3.0F; + var18 = 2.0F; + if (this.icon.isEnabled()) { + var34 = 1044070719; + } else { + var34 = -188660985; + } + break; + case -1587944049: + var31 = var19 / 16.0F; + var2.pushMatrix(); + var2.pose().translate(var29, var30 + (var23 - var19) / 2.0F); + var2.pose().scale(var31, var31); + var2.item( + tntStack(), 0, (1183160047 ^ -1183160047) + ((1183160047 & -1183160047) << 1) + ); + var2.popMatrix(); + var29 += var19 + var20; + var34 = 1610642799; + break; + case -1476691685: + var6 = (Entity)var5.next(); + if (var6 instanceof PrimedTnt) { + var34 = 1654336681; + } else { + var34 = -566773173; + } + break; + case -1474194068: + return; + case -1422193567: + var22 = var38; + var23 = Math.max(var19, var16); + var24 = var19 + var20 + var15; + var25 = var24 + var17 * 2.0F; + var26 = var23 + var18 * 2.0F + var21 + var22; + var27 = var10 - var25 / 2.0F; + var28 = var11 - var26 / 2.0F; + var2.drawRoundedRect(var27, var28, var25, var26, asj.all(oc.INNER), var3.getForegroundColor()); + var29 = var27 + var17; + var30 = var28 + var18; + if (this.icon.isEnabled()) { + var34 = -1587944049; + } else { + var34 = 1610642799; + } + break; + case -1162336367: + var34 = -566773173; + break; + case -908624999: + var20 = var36; + if (this.bar.isEnabled()) { + var34 = -1981201950; + } else { + var34 = 2114070418; + } + break; + case -794939036: + var31 = var27 + var17; + var32 = var28 + var26 - var18 - var22; + var33 = var25 - var17 * 2.0F; + var2.drawRoundedRect(var31, var32, var33, var22, asj.pill(var22), asu.BLACK.mulAlpha(0.35F)); + var2.drawRoundedRect(var31, var32, var33 * var12, var22, asj.pill(var22), var13); + var34 = 1081873073; + break; + case -566773173: + if (var5.hasNext()) { + var34 = -1476691685; + } else { + var34 = 647158728; + } + break; + case -387564076: + var38 = 0.0F; + var34 = -1422193567; + break; + case -336175439: + var9 = var7.getPosition(var1.getTickDelta()).add(0.0, var7.getBbHeight() + 0.5, 0.0); + if (!aqk.projectToGui(var9, this.screen)) { + var34 = 698914457; + } else { + var34 = -1896677269; + } + break; + case -188660985: + var35 = 0.0F; + var34 = -1921510760; + break; + case 266297836: + var36 = 2.0F; + var34 = -908624999; + break; + case 647158728: + return; + case 698914457: + var34 = -566773173; + break; + case 750239329: + var36 = 0.0F; + var34 = -908624999; + break; + case 1044070719: + var35 = var16; + var34 = -1921510760; + break; + case 1081873073: + var34 = -566773173; + break; + case 1444463815: + var21 = var37; + if (this.bar.isEnabled()) { + var34 = 1719495667; + } else { + var34 = -387564076; + } + break; + case 1610642799: + var2.drawText(var4, var14, var29, var30 + (var23 - var16) / 2.0F, var3.getWhite()); + if (this.bar.isEnabled()) { + var34 = -794939036; + } else { + var34 = 1081873073; + } + break; + case 1654336681: + var7 = (PrimedTnt)var6; + var8 = var7.getFuse(); + if (var8 <= 0) { + var34 = -1162336367; + } else { + var34 = -336175439; + } + break; + case 1719495667: + var38 = 1.5F; + var34 = -1422193567; + break; + case 1720638068: + var2 = var1.getContext(); + var3 = bz.getInstance().getThemeManager().getCurrentTheme(); + var4 = gl.BOLD.getFont(7.0F); + var5 = mc.level.entitiesForRendering().iterator(); + var34 = -566773173; + break; + case 2114070418: + var37 = 0.0F; + var34 = 1444463815; + } + } + } +} diff --git a/src/main/java/defpackage/wf.java b/src/main/java/defpackage/wf.java new file mode 100644 index 0000000..4753bf3 --- /dev/null +++ b/src/main/java/defpackage/wf.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +interface wf { + void accept(int var1, int var2, float var3, float var4, float var5, float var6); +} diff --git a/src/main/java/defpackage/wg.java b/src/main/java/defpackage/wg.java new file mode 100644 index 0000000..5354c1b --- /dev/null +++ b/src/main/java/defpackage/wg.java @@ -0,0 +1,2004 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.DepthStencilState; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet; +import com.mojang.blaze3d.platform.BlendFactor; +import com.mojang.blaze3d.platform.CompareOp; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Optional; +import java.util.Random; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderSetup; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; +import org.joml.Matrix3x2fStack; +import org.joml.Matrix4f; +import org.joml.Vector3f; + +@rn(name = "TargetESP", description = "Animated marker around the entity you are aiming at", category = rl.RENDER) +public final class wg extends rm { + private static final String STYLE_VORTEX = "Vortex"; + private static final String STYLE_GARLAND = "Garland"; + private static final String STYLE_BRACKETS = "Brackets"; + private static final String STYLE_ORBIT = "Orbit"; + private static final String STYLE_MARKER = "Marker"; + private static final String STYLE_CIRCLE = "Circle"; + private static final Identifier VORTEX_TEXTURE = Identifier.fromNamespaceAndPath( + "evolution", "textures/targetesp/vortex.png" + ); + private static final Identifier BRACKETS_TEXTURE = Identifier.fromNamespaceAndPath( + "evolution", "textures/targetesp/brackets.png" + ); + private static final Identifier MARKER_TEXTURE = Identifier.fromNamespaceAndPath( + "evolution", "textures/targetesp/marker.png" + ); + private static final float DEG_TO_RAD = (float) (Math.PI / 180.0); + private static final int RINGS = 3; + private static final int BEADS_PER_RING = 24; + private static final int GLOW_SEGMENTS = 36; + private static final int BEAD_STACKS = 8; + private static final int BEAD_SLICES = 12; + private static final float RING_SPREAD_DEGREES = 30.0F; + private static final float RING_MIN_SEPARATION = 22.0F; + private static final int RING_SPREAD_ATTEMPTS = 64; + private static final int ORBIT_TRAIL_SAMPLES = 20; + private static final float ORBIT_DEGREES_PER_SECOND = 150.0F; + private static final float ORBIT_TRAIL_DEGREES = 7.0F; + private static final double MARKER_PULSE_PERIOD_MS = 500.0; + private static final double MARKER_SPIN_PERIOD_MS = 1000.0; + private static final float MARKER_SCREEN_SMOOTHING = 0.5F; + private static final float MARKER_ANCHOR_EYE_MARGIN = 0.4F; + private static final float MARKER_ANCHOR_FACTOR = 0.5F; + private static final float MARKER_SCALE_GAIN = 1.1F; + private static final float MARKER_MIN_SCALE = 0.9F; + private static final float MARKER_MAX_SCALE = 1.1F; + private static final float MARKER_TILT_DEGREES = 90.0F; + private static final float MARKER_SPIN_DEGREES = 360.0F; + private static final int MARKER_CORNER_STEP_DEGREES = 90; + private static final int CRESCENTS = 2; + private static final int CRESCENT_SEGMENTS = 48; + private static final float CRESCENT_ARC_DEGREES = 202.0F; + private static final int RING_COLOR_SAMPLES = 24; + private static final float RING_MIN_RADIUS = 0.35F; + private static final float RING_RADIUS_PADDING = 0.3F; + private static final float RING_THICKNESS_BASE = 1.0F; + private static final float RING_THICKNESS_DIVISOR = 4.0F; + private static final float RING_THICKNESS_SCALE = 0.6F; + private static final float RING_RADIANS_PER_SECOND = 2.0F; + private static final float RING_MAX_SPIN_STEP_SECONDS = 0.1F; + private static final float RING_MIN_ALPHA = 0.02F; + private static final float RING_DISTANCE_EPSILON = 0.01F; + private static final float RING_WHITE_MIX = 0.2F; + private static final int RING_GLOW_LAYERS = 3; + private static final float RING_GLOW_WIDTH_STEP = 0.35F; + private static final float RING_GLOW_ALPHA = 0.13F; + private static final float TAU = (float) (Math.PI * 2); + private static final int WORLD_COLOR_OFFSET_DEGREES = 90; + private static final float HALF_CIRCLE_DEGREES = 180.0F; + private static final long RAINBOW_PERIOD_MS = 4000L; + private static final float RAINBOW_SATURATION = 0.85F; + private static final float FULL_CIRCLE_DEGREES = 360.0F; + private static final float FADE_EPSILON = 0.01F; + private static final float MAX_HURT_TIME = 10.0F; + private static final float[] RING_COS = new float[24]; + private static final float[] RING_SIN = new float[24]; + private static final float[] GLOW_COS = new float[37]; + private static final float[] GLOW_SIN = new float[37]; + private static final float[] BEAD_STACK_SIN = new float[9]; + private static final float[] BEAD_STACK_COS = new float[9]; + private static final float[] BEAD_SLICE_COS = new float[13]; + private static final float[] BEAD_SLICE_SIN = new float[13]; + private static final float[] CRESCENT_COS = new float[49]; + private static final float[] CRESCENT_SIN = new float[49]; + private static final float[] CRESCENT_TAPER = new float[49]; + private static final float[] CRESCENT_DEGREES = new float[49]; + private static final BlendFunction ADDITIVE; + private static final RenderPipeline TEXTURED_BLEND; + private static final RenderPipeline TEXTURED_ADDITIVE; + private static final RenderPipeline GARLAND; + private static final RenderPipeline GARLAND_THROUGH; + private static final RenderType GARLAND_LAYER; + private static final RenderType GARLAND_THROUGH_LAYER; + private static final Map TEXTURED_LAYERS; + private final sg styleSetting; + private final sm sizeSetting; + private final sm circleRadiusSetting; + private final sm circleTiltSetting; + private final sm circleThicknessSetting; + private final sm circleGlowSetting; + private final ru circleThroughWallsSetting; + private final sm markerSizeSetting; + private final ru markerGlowSetting; + private final sm speedSetting; + private final sm holdSetting; + private final ru hurtTintSetting; + private final sg colorSetting; + private final rx customColorSetting; + private final ct fade; + private final Random random; + private final Matrix4f scratch; + private final float[] ringOffsets; + private final float[] wobblePhases; + private final float[] wobbleSpeeds; + private final float[] spinScales; + private final float[] pulses; + private final float[] ringYaws; + private final float[] ringPitches; + private final float[] yawCos; + private final float[] yawSin; + private final float[] pitchCos; + private final float[] pitchSin; + private final int[] ringColors; + private float ringSpin; + private long lastSpinMillis; + private final Vector3f markerProjection; + private float markerScreenX; + private float markerScreenY; + private boolean markerSmoothed; + private final long startMillis; + private LivingEntity target; + private LivingEntity aimed; + private long lastAimMillis; + public static final wg INSTANCE; + + private static RenderPipeline texturedPipeline(String var0, boolean var1) { + Snippet[] var10000 = new Snippet[1]; + var10000[0] = RenderPipelines.GUI_TEXTURED_SNIPPET; + return RenderPipelines.register( + RenderPipeline.builder(var10000) + .withLocation( + Identifier.fromNamespaceAndPath( + "evolution", "pipeline/targetesp_" + var0 + ) + ) + .withVertexBinding(0, DefaultVertexFormat.POSITION_TEX_COLOR) + .withPrimitiveTopology(PrimitiveTopology.QUADS) + .withCull((boolean)((((-1741685105 | 1741685105) + (-1741685105 & 1741685105))) != 0)) + .withDepthStencilState( + new DepthStencilState(CompareOp.GREATER_THAN_OR_EQUAL, (boolean)((((-133836874 ^ 133836874) + ((-133836874 & 133836874) << 1))) != 0)) + ) + .withColorTargetState(new ColorTargetState(var1 ? ADDITIVE : BlendFunction.TRANSLUCENT)) + .build() + ); + } + + private static RenderPipeline garlandPipeline(String var0, CompareOp var1) { + Snippet[] var10000 = new Snippet[1]; + var10000[0] = RenderPipelines.DEBUG_FILLED_SNIPPET; + return RenderPipelines.register( + RenderPipeline.builder(var10000) + .withLocation( + Identifier.fromNamespaceAndPath( + "evolution", "pipeline/targetesp_" + var0 + ) + ) + .withVertexBinding(0, DefaultVertexFormat.POSITION_COLOR) + .withPrimitiveTopology(PrimitiveTopology.QUADS) + .withCull((boolean)((((-2138985708 | 2138985708) + (-2138985708 & 2138985708))) != 0)) + .withDepthStencilState(new DepthStencilState(var1, (boolean)((((1914168884 ^ -1914168884) + ((1914168884 & -1914168884) << 1))) != 0))) + .withColorTargetState(new ColorTargetState(ADDITIVE)) + .build() + ); + } + + private static RenderType texturedLayer(Identifier var0, boolean var1) { + String var2 = var0 + "|" + var1; + return TEXTURED_LAYERS.computeIfAbsent( + var2, + var2x -> RenderType.create( + "evolution_targetesp_textured", + RenderSetup.builder(var1 ? TEXTURED_ADDITIVE : TEXTURED_BLEND) + .withTexture("Sampler0", var0) + .createRenderSetup() + ) + ); + } + + private wg() { + String var10003 = "Style"; + String[] var10004 = new String[6]; + var10004[0] = "Vortex"; + var10004[1] = "Garland"; + var10004[2] = "Brackets"; + var10004[3] = "Orbit"; + var10004[4] = "Marker"; + var10004[5] = "Circle"; + this.styleSetting = new sg(var10003, var10004) + .describe( + "Vortex", + "Spinning vortex blades" + ) + .describe( + "Garland", + "Orbiting glowing beads" + ) + .describe( + "Brackets", + "Rotating brackets" + ) + .describe( + "Orbit", + "Comets circling the target on tilted orbits" + ) + .describe( + "Marker", + "Screen-space corner brackets that pulse and spin over the target" + ) + .describe( + "Circle", + "Two glowing crescents forming a tilted ring around the target" + ) + .description("Shape drawn around the target"); + this.sizeSetting = new sm("Size", 1.2F, 0.3F, 3.0F, 0.05F, () -> { + int var2x = 0; + int var1x = -1359197857; + + while (true) { + switch (var1x) { + case -2108985001: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -1390123365: + var2x = 1; + var1x = -2108985001; + break; + case -1359197857: + default: + if (!this.styleSetting.is("Marker")) { + var1x = -647182464; + } else { + var1x = -596405586; + } + break; + case -647182464: + if (!this.styleSetting.is("Circle")) { + var1x = -1390123365; + } else { + var1x = -596405586; + } + break; + case -596405586: + var2x = 0; + var1x = -2108985001; + } + } + }).description("Scale of the marker"); + this.circleRadiusSetting = new sm( + "Circle radius", + 1.4F, + 1.3F, + 1.5F, + 0.01F, + () -> this.styleSetting.is("Circle") + ) + .description( + "Radius of the ring around the target" + ); + this.circleTiltSetting = new sm( + "Circle tilt", + 40.0F, + 20.0F, + 60.0F, + 1.0F, + () -> this.styleSetting.is("Circle") + ) + .description("Tilt of the ring plane in degrees"); + this.circleThicknessSetting = new sm( + "Crescent thickness", + 1.75F, + 1.5F, + 2.5F, + 0.05F, + () -> this.styleSetting.is("Circle") + ) + .description("Thickness of the two crescents"); + this.circleGlowSetting = new sm( + "Glow strength", + 2.0F, + 0.0F, + 3.0F, + 0.1F, + () -> this.styleSetting.is("Circle") + ) + .description( + "Strength of the halo around the crescents" + ); + this.circleThroughWallsSetting = new ru( + "Through walls", + (boolean)(((0)) != 0), + () -> this.styleSetting.is("Circle") + ) + .description("Draw the ring through blocks"); + this.markerSizeSetting = new sm( + "Marker size", + 100.0F, + 30.0F, + 220.0F, + 5.0F, + () -> this.styleSetting.is("Marker") + ) + .description("Screen size of the marker in GUI pixels"); + this.markerGlowSetting = new ru( + "Marker glow", + (boolean)(((1)) != 0), + () -> this.styleSetting.is("Marker") + ) + .description( + "Blend the marker additively so it lights up the scene" + ); + this.speedSetting = new sm("Speed", 1.0F, 0.0F, 4.0F, 0.05F) + .description("Rotation speed of the marker"); + this.holdSetting = new sm("Hold", 1.5F, 0.0F, 5.0F, 0.1F) + .description( + "Seconds the marker stays after you stop aiming at the target" + ); + this.hurtTintSetting = new ru( + "Hurt tint", + (boolean)((((-1169148091 | 1169148092) + (-1169148091 & 1169148092)) + ) != 0)) + .description( + "Blend the marker to red while the target takes damage" + ); + var10003 = "Color"; + var10004 = new String[3]; + var10004[0] = "Client"; + var10004[1] = "Rainbow"; + var10004[2] = "Custom"; + this.colorSetting = new sg(var10003, var10004) + .describe( + "Client", + "Use the client theme color" + ) + .describe( + "Rainbow", + "Rainbow shifting colors" + ) + .describe( + "Custom", + "Use a custom chosen color" + ) + .description( + "Color mode for the marker" + ); + this.customColorSetting = new rx( + "Custom color", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> this.colorSetting.is("Custom") + ) + .description("Custom color for the marker"); + this.fade = ct.layout(ob.SETTLED); + this.random = new Random(); + this.scratch = new Matrix4f(); + this.ringOffsets = new float[3]; + this.wobblePhases = new float[3]; + this.wobbleSpeeds = new float[3]; + this.spinScales = new float[3]; + this.pulses = new float[3]; + this.ringYaws = new float[3]; + this.ringPitches = new float[3]; + this.yawCos = new float[3]; + this.yawSin = new float[3]; + this.pitchCos = new float[3]; + this.pitchSin = new float[3]; + this.ringColors = new int[24]; + this.lastSpinMillis = System.currentTimeMillis(); + this.markerProjection = new Vector3f(); + this.startMillis = System.currentTimeMillis(); + this.randomizeRings(); + } + + @Override + public void onDisable() { + super.onDisable(); + this.target = null; + this.aimed = null; + this.markerSmoothed = (boolean)(((0)) != 0); + } + + public void onWorldRender(LevelRenderContext var1) { + PoseStack var2 = null; + Camera var3 = null; + SubmitNodeCollector var4 = null; + int var5 = -1348977674; + + while (true) { + switch (var5) { + case -1974823312: + return; + case -1816383006: + this.updateTarget(this.aimedEntity()); + if (this.target != null) { + var5 = 764613922; + } else { + var5 = 443981521; + } + break; + case -1667773110: + if (this.styleSetting.is("Marker")) { + var5 = 350140521; + } else { + var5 = -1556303985; + } + break; + case -1556303985: + var2 = var1.poseStack(); + var3 = mc.getEntityRenderDispatcher().camera; + var4 = var1.submitNodeCollector(); + if (var2 != null) { + var5 = -1297902958; + } else { + var5 = -659924773; + } + break; + case -1484644997: + this.render(var4, var2, var3); + return; + case -1348977674: + default: + if (this.isEnabled()) { + var5 = -267748061; + } else { + var5 = -1974823312; + } + break; + case -1297902958: + if (var3 != null) { + var5 = 794464967; + } else { + var5 = -659924773; + } + break; + case -659924773: + return; + case -267748061: + if (mc.player != null) { + var5 = 819340762; + } else { + var5 = -1974823312; + } + break; + case 350140521: + return; + case 443981521: + return; + case 764613922: + if (this.fade.value() <= 0.01F) { + var5 = 443981521; + } else { + var5 = -1667773110; + } + break; + case 794464967: + if (var4 == null) { + var5 = -659924773; + } else { + var5 = -1484644997; + } + break; + case 819340762: + if (mc.level == null) { + var5 = -1974823312; + } else { + var5 = -1816383006; + } + } + } + } + + private LivingEntity aimedEntity() { + long var1 = (-641978421540250459L | 641978421540250459L) + (-641978421540250459L & 641978421540250459L); + double var3 = 0.0; + LivingEntity var5 = null; + int var6 = 1525912290; + + while (true) { + switch (var6) { + case -1128286164: + this.aimed = var5; + this.lastAimMillis = var1; + var6 = -136581469; + break; + case -686286174: + return this.aimed; + case -324745499: + if (var1 - this.lastAimMillis > (long)(this.holdSetting.getCurrent() * 1000.0F)) { + var6 = 1025878492; + } else { + var6 = -686286174; + } + break; + case -136581469: + if (this.aimed != null) { + var6 = 1719653192; + } else { + var6 = -686286174; + } + break; + case 1025878492: + this.aimed = null; + var6 = -686286174; + break; + case 1525912290: + default: + var1 = System.currentTimeMillis(); + var3 = mc.player.entityInteractionRange(); + var5 = this.rayTracedEntity(var3); + if (var5 != null) { + var6 = -1128286164; + } else { + var6 = -136581469; + } + break; + case 1719653192: + if (this.isLegitTarget(this.aimed)) { + var6 = -324745499; + } else { + var6 = 1025878492; + } + } + } + } + + private boolean isLegitTarget(LivingEntity var1) { + int var3 = 0; + int var2 = 126913722; + + while (true) { + switch (var2) { + case -2088773425: + if (mc.player.isWithinEntityInteractionRange(var1, 0.0)) { + var2 = -2032276066; + } else { + var2 = 232107081; + } + break; + case -2032276066: + if (mc.player.hasLineOfSight(var1)) { + var2 = 658198337; + } else { + var2 = 232107081; + } + break; + case -1532161616: + if (!var1.isInvisibleTo(mc.player)) { + var2 = -2088773425; + } else { + var2 = 232107081; + } + break; + case -853194404: + return (boolean)((var3) != 0); + case -484015566: + if (var1.level() == mc.level) { + var2 = -1532161616; + } else { + var2 = 232107081; + } + break; + case 119919431: + if (var1.isAlive()) { + var2 = 976249626; + } else { + var2 = 232107081; + } + break; + case 126913722: + default: + if (var1 != mc.player) { + var2 = 119919431; + } else { + var2 = 232107081; + } + break; + case 232107081: + var3 = 0; + var2 = -853194404; + break; + case 658198337: + var3 = 1; + var2 = -853194404; + break; + case 976249626: + if (!var1.isRemoved()) { + var2 = -484015566; + } else { + var2 = 232107081; + } + } + } + } + + private LivingEntity rayTracedEntity(double var1) { + Vec3 var3 = null; + Vec3 var4 = null; + BlockHitResult var5 = null; + LivingEntity var6 = null; + double var7 = 0.0; + Iterator var9 = null; + Entity var10 = null; + LivingEntity var11 = null; + AABB var12 = null; + Optional var13 = null; + double var14 = 0.0; + int var16 = 2003569696; + + while (true) { + switch (var16) { + case -1083225205: + var10 = (Entity)var9.next(); + if (var10 instanceof LivingEntity) { + var16 = 690440320; + } else { + var16 = -221902969; + } + break; + case -1001102872: + var16 = -221902969; + break; + case -841732696: + var14 = var3.distanceToSqr((Vec3)var13.get()); + if (var14 < var7) { + var16 = -608770094; + } else { + var16 = 1541057599; + } + break; + case -608770094: + var7 = var14; + var6 = var11; + var16 = 1541057599; + break; + case -592449816: + var6 = null; + var7 = var1 * var1; + var9 = mc.level.entitiesForRendering().iterator(); + var16 = -221902969; + break; + case -221902969: + if (var9.hasNext()) { + var16 = -1083225205; + } else { + var16 = 35619771; + } + break; + case 35619771: + return var6; + case 690440320: + var11 = (LivingEntity)var10; + if (!this.isLegitTarget(var11)) { + var16 = -1001102872; + } else { + var16 = 2072929934; + } + break; + case 1541057599: + var16 = -221902969; + break; + case 1863583482: + var16 = -221902969; + break; + case 2003569696: + default: + var3 = mc.player.getEyePosition(); + var4 = var3.add(mc.player.getViewVector(1.0F).scale(var1)); + var5 = mc.level.clip(new ClipContext(var3, var4, Block.COLLIDER, Fluid.NONE, mc.player)); + if (var5.getType() != Type.MISS) { + var16 = 2028680869; + } else { + var16 = -592449816; + } + break; + case 2028680869: + var4 = var5.getLocation(); + var16 = -592449816; + break; + case 2072929934: + var12 = var10.getBoundingBox().inflate(var10.getPickRadius()); + var13 = var12.clip(var3, var4); + if (var13.isEmpty()) { + var16 = 1863583482; + } else { + var16 = -841732696; + } + } + } + } + + private void updateTarget(LivingEntity var1) { + int var2 = 855690475; + + while (true) { + switch (var2) { + case -1435612735: + this.fade.update(0.0F); + if (this.fade.value() <= 0.01F) { + var2 = 28427667; + } else { + var2 = -382333206; + } + break; + case -463088226: + this.target = null; + var2 = -382333206; + break; + case -382333206: + return; + case -92646270: + if (var1 != this.target) { + var2 = -1435612735; + } else { + var2 = 2100343346; + } + break; + case 28427667: + this.target = var1; + this.randomizeRings(); + var2 = -382333206; + break; + case 855690475: + default: + if (var1 == null) { + var2 = 1133194911; + } else { + var2 = -92646270; + } + break; + case 1133194911: + this.fade.update(0.0F); + if (this.fade.value() <= 0.01F) { + var2 = -463088226; + } else { + var2 = -382333206; + } + break; + case 2100343346: + this.fade.update(1.0F); + var2 = -382333206; + } + } + } + + private void render(SubmitNodeCollector var1, PoseStack var2, Camera var3) { + Vec3 var4 = aqj.interpolate(this.target); + AABB var5 = this.target.getBoundingBox().move(var4.subtract(this.target.position())); + Vec3 var6 = var5.getCenter(); + Vec3 var7 = var3.position(); + double var8 = var6.x - var7.x; + double var10 = var5.minY - var7.y; + double var12 = var6.z - var7.z; + float var14 = (float)var5.getYsize(); + float var15 = (float)Math.max(var5.getXsize(), var5.getZsize()); + float var16 = this.sizeSetting.getCurrent(); + float var17 = this.speedSetting.getCurrent(); + float var18 = var15 * 5.0F * var16; + float var19 = (float)(System.currentTimeMillis() - this.startMillis) / 1000.0F; + float var20 = var14 * 0.62F - 0.006F; + int var21 = this.markerColor(); + float var22 = var3.yRot() * (float) (Math.PI / 180.0); + float var23 = var3.xRot() * (float) (Math.PI / 180.0); + this.updateRingMotion(var19, var17); + String var24 = this.styleSetting.get(); + int var25 = -1; + switch (var24.hashCode()) { + case 76451882: + if (var24.equals("Orbit")) { + var25 = 1; + } + break; + case 1473875107: + if (var24.equals("Garland")) { + var25 = 0; + } + break; + case 2018617584: + if (var24.equals("Circle")) { + var25 = 2; + } + } + + switch (var25) { + case 0: + this.renderGarland(var1, var2, var8, var10, var12, var18, var20, var19, var21, var22, var23); + break; + case 1: + this.renderOrbit(var1, var2, var8, var10, var12, var15, var14, var16, var17, var19, var21, var22, var23); + break; + case 2: + this.renderCircle(var1, var2, var8, var10, var12, var15, var14, var17, var22, var23); + break; + default: + this.renderDiscs(var1, var2, var8, var10, var12, var18 * 0.5F, var20, var21); + } + } + + private void renderCircle( + SubmitNodeCollector var1, PoseStack var2, double var3, double var5, double var7, float var9, float var10, float var11, float var12, float var13 + ) { + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + double var17 = 0.0; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + float var22 = 0.0F; + float var23 = 0.0F; + float var24 = 0.0F; + RenderType var25 = null; + RenderType var27 = null; + int var26 = 1397483901; + + while (true) { + switch (var26) { + case -1841324167: + var27 = GARLAND_LAYER; + var26 = -1284258197; + break; + case -1400793643: + this.advanceSpin(var11); + this.fillRingColors(var20); + var21 = Mth.cos(this.circleTiltSetting.getCurrent() * (float) (Math.PI / 180.0)); + var22 = Mth.cos(this.ringSpin); + var23 = Mth.sin(this.ringSpin); + var24 = this.circleGlowSetting.getCurrent(); + if (this.circleThroughWallsSetting.isEnabled()) { + var26 = 1346807793; + } else { + var26 = -1841324167; + } + break; + case -1284258197: + var25 = var27; + var1.submitCustomGeometry(var2, var25, (var15x, var16x) -> { + int var17x = 0; + int var18 = -38590164; + + while (true) { + switch (var18) { + case -1071404357: + this.emitCrescents(var16x, var14, var16 * (1.0F + var17x * 0.35F * var24), 0.13F / var17x, var21, var22, var23); + var17x--; + var18 = -807234984; + break; + case -810970716: + if (var24 > 0.0F) { + var18 = -1071404357; + } else { + var18 = 357099778; + } + break; + case -807234984: + if (var17x >= (-235148399 | 235148400) + (-235148399 & 235148400)) { + var18 = -810970716; + } else { + var18 = 357099778; + } + break; + case -38590164: + default: + this.scratch.set(var15x.pose()).translate((float)var3, (float)var17, (float)var7).rotateY(-var12).rotateX(var13); + var17x = 3; + var18 = -807234984; + break; + case 357099778: + this.emitCrescents(var16x, var14, var16, 1.0F, var21, var22, var23); + return; + } + } + }); + return; + case 1346807793: + var27 = GARLAND_THROUGH_LAYER; + var26 = -1284258197; + break; + case 1397483901: + default: + var14 = Math.max(0.35F, (var9 * 0.5F + 0.3F) * this.circleRadiusSetting.getCurrent()); + var15 = var10 * 0.5F; + var16 = var14 * ((this.circleThicknessSetting.getCurrent() - 1.0F) / 4.0F * 0.6F); + var17 = var5 + var15; + var19 = (float)Math.sqrt(var3 * var3 + var17 * var17 + var7 * var7); + var20 = this.fade.value() * Mth.clamp((var19 - var14) / Math.max(var14, 0.01F), 0.0F, 1.0F); + if (var20 <= 0.02F) { + var26 = 1679383016; + } else { + var26 = -1400793643; + } + break; + case 1679383016: + return; + } + } + } + + private void advanceSpin(float var1) { + long var2 = (3849484773323486068L | -3849484773323486068L) + (3849484773323486068L & -3849484773323486068L); + float var4 = 0.0F; + int var5 = -361647333; + + while (true) { + switch (var5) { + case -361647333: + default: + var2 = System.currentTimeMillis(); + var4 = Mth.clamp((float)(var2 - this.lastSpinMillis) / 1000.0F, 0.0F, 0.1F); + this.lastSpinMillis = var2; + this.ringSpin += 2.0F * var1 * var4; + if (this.ringSpin >= (float) (Math.PI * 2)) { + var5 = 1828241098; + } else { + var5 = 1867622652; + } + break; + case 1828241098: + this.ringSpin -= (float) (Math.PI * 2); + var5 = 1867622652; + break; + case 1867622652: + return; + } + } + } + + private void fillRingColors(float var1) { + int var2 = 0; + int var3 = 0; + int var4 = -925432946; + + while (true) { + switch (var4) { + case -1774222636: + return; + case -1205986385: + if (var2 < (905884732 | -905884708) + (905884732 & -905884708)) { + var4 = -290541331; + } else { + var4 = -1774222636; + } + break; + case -925432946: + default: + var2 = 0; + var4 = -1205986385; + break; + case -290541331: + var3 = Math.round(var2 * 360.0F / 24.0F); + this.ringColors[var2] = this.styleColor(var3).mix(asu.WHITE, 0.2F).getRGBWithAlpha(var1); + var2++; + var4 = -1205986385; + } + } + } + + private void emitCrescents(VertexConsumer var1, float var2, float var3, float var4, float var5, float var6, float var7) { + int var8 = 0; + float var9 = 0.0F; + int var10 = 0; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + int var21 = 0; + int var22 = 0; + float var24 = 0.0F; + int var23 = 2109238924; + + while (true) { + switch (var23) { + case -1693401162: + if (var8 < (-1631427264 | 1631427266) + (-1631427264 & 1631427266)) { + var23 = 913647430; + } else { + var23 = 1376225704; + } + break; + case -1576833712: + if (var12 <= 0.0F) { + var23 = -717835401; + } else { + var23 = -867315739; + } + break; + case -1438037982: + var24 = -1.0F; + var23 = 1395684971; + break; + case -947192133: + var11 = var3 * CRESCENT_TAPER[var10] * 0.5F; + var12 = var3 * CRESCENT_TAPER[var10 + 1] * 0.5F; + if (var11 <= 0.0F) { + var23 = -1576833712; + } else { + var23 = -867315739; + } + break; + case -867315739: + var13 = CRESCENT_COS[var10] * var9; + var14 = CRESCENT_SIN[var10] * var9; + var15 = CRESCENT_COS[var10 + 1] * var9; + var16 = CRESCENT_SIN[var10 + 1] * var9; + var17 = var13 * var6 - var14 * var7; + var18 = var13 * var7 + var14 * var6; + var19 = var15 * var6 - var16 * var7; + var20 = var15 * var7 + var16 * var6; + var21 = this.ringColorAt(var8, var10, var4); + var22 = this.ringColorAt(var8, var10 + 1, var4); + this.emitRingVertex(var1, var17, var18, var2 - var11, var5, var21); + this.emitRingVertex(var1, var17, var18, var2 + var11, var5, var21); + this.emitRingVertex(var1, var19, var20, var2 + var12, var5, var22); + this.emitRingVertex(var1, var19, var20, var2 - var12, var5, var22); + var23 = -373955561; + break; + case -717835401: + var23 = -373955561; + break; + case -549742650: + var24 = 1.0F; + var23 = 1395684971; + break; + case -373955561: + var10++; + var23 = -314075343; + break; + case -352166533: + var8++; + var23 = -1693401162; + break; + case -314075343: + if (var10 < (-413916629 ^ 413916677) + ((-413916629 & 413916677) << 1)) { + var23 = -947192133; + } else { + var23 = -352166533; + } + break; + case 913647430: + if (var8 == 0) { + var23 = -549742650; + } else { + var23 = -1438037982; + } + break; + case 1376225704: + return; + case 1395684971: + var9 = var24; + var10 = 0; + var23 = -314075343; + break; + case 2109238924: + default: + var8 = 0; + var23 = -1693401162; + } + } + } + + private void emitRingVertex(VertexConsumer var1, float var2, float var3, float var4, float var5, int var6) { + var1.addVertex(this.scratch, var2 * var4 * var5, var3 * var4, 0.0F).setColor(var6); + } + + private int ringColorAt(int var1, int var2, float var3) { + float var4 = 0.0F; + int var5 = 0; + int var6 = 0; + int var8 = 0; + int var7 = 413455292; + + while (true) { + switch (var7) { + case 281693909: + return var8; + case 413455292: + default: + var4 = CRESCENT_DEGREES[var2] + var1 * 180.0F; + var5 = Math.floorMod(Math.round(var4 / 360.0F * 24.0F), (1314008026 | -1314008002) + (1314008026 & -1314008002)); + var6 = this.ringColors[var5]; + if (var3 >= 1.0F) { + var7 = 1685413868; + } else { + var7 = 1602927105; + } + break; + case 1602927105: + var8 = asu.getRGBWithAlpha(var6, var3); + var7 = 281693909; + break; + case 1685413868: + var8 = var6; + var7 = 281693909; + } + } + } + + private void renderOrbit( + SubmitNodeCollector var1, + PoseStack var2, + double var3, + double var5, + double var7, + float var9, + float var10, + float var11, + float var12, + float var13, + int var14, + float var15, + float var16 + ) { + float var17 = (var9 * 0.5F + 0.55F) * var11; + float var18 = Mth.clamp(var9 * 0.16F * var11, 0.09F, 0.24F); + float var19 = var10 * 0.5F; + var1.submitCustomGeometry( + var2, + GARLAND_LAYER, + (var15x, var16x) -> { + Matrix4f var17x = var15x.pose(); + + for (int var18x = 0; var18x < 3; var18x++) { + float var19x = this.ringOffsets[var18x] * 3.0F * (float) (Math.PI / 180.0); + float var20 = (35.0F + this.ringPitches[var18x] * 0.5F) * (float) (Math.PI / 180.0); + float var21 = Mth.cos(var19x); + float var22 = Mth.sin(var19x); + float var23 = Mth.cos(var20); + float var24 = Mth.sin(var20); + float var25 = var13 * 150.0F * var12 * this.spinScales[var18x] + this.ringOffsets[var18x] * 6.0F; + + for (int var26 = 0; + var26 < 20; + var26++ + ) { + float var27 = 1.0F - var26 / 20.0F; + float var28 = (var25 - var26 * 7.0F) * (float) (Math.PI / 180.0); + float var29 = Mth.cos(var28) * var17; + float var30 = Mth.sin(var28) * var17; + float var31 = var29 * var21 + var30 * var23 * var22; + float var32 = -var30 * var24; + float var33 = -var29 * var22 + var30 * var23 * var21; + float var34 = var26 == 0 ? 1.8F : 1.0F; + float var35 = var27 * var27 * (var26 == 0 ? 0.85F : 0.32F) * this.pulses[var18x]; + this.emitGlow( + var16x, + var17x, + (float)(var3 + var31), + (float)(var5 + var19 + var32), + (float)(var7 + var33), + var18 * var27 * var34, + asu.getRGBWithAlpha(var14, var35), + var15, + var16 + ); + } + } + } + ); + } + + private void updateRingMotion(float var1, float var2) { + int var3 = 0; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + int var7 = -1039133534; + + while (true) { + switch (var7) { + case -1039133534: + default: + var3 = 0; + var7 = -638940447; + break; + case -638940447: + if (var3 < (-18568182 ^ 18568185) + ((-18568182 & 18568185) << 1)) { + var7 = 852827770; + } else { + var7 = 1949488832; + } + break; + case 852827770: + var4 = (Mth.sin(var1 * var2 * 3.4F + var3 * (float) (Math.PI * 2.0 / 3.0)) + 1.0F) * 0.5F; + this.pulses[var3] = Mth.lerp(var4, 0.35F, 1.0F); + this.ringYaws[var3] = -var1 * 140.0F * var2 * this.spinScales[var3] + this.ringOffsets[var3]; + this.ringPitches[var3] = Mth.sin(var1 * this.wobbleSpeeds[var3] + this.wobblePhases[var3]) * 30.0F; + var5 = (90.0F + this.ringYaws[var3]) * (float) (Math.PI / 180.0); + var6 = this.ringPitches[var3] * (float) (Math.PI / 180.0); + this.yawCos[var3] = Mth.cos(var5); + this.yawSin[var3] = Mth.sin(var5); + this.pitchCos[var3] = Mth.cos(var6); + this.pitchSin[var3] = Mth.sin(var6); + var3++; + var7 = -638940447; + break; + case 1949488832: + return; + } + } + } + + private void renderDiscs(SubmitNodeCollector var1, PoseStack var2, double var3, double var5, double var7, float var9, float var10, int var11) { + Identifier var12 = null; + int var13 = 0; + int var14 = 0; + float var15 = 0.0F; + RenderType var16 = null; + Identifier var18 = null; + int var19 = 0; + float var20 = 0.0F; + int var17 = -1587195392; + + while (true) { + switch (var17) { + case -1587195392: + default: + if (this.styleSetting.is("Brackets")) { + var17 = -4976951; + } else { + var17 = 1380549815; + } + break; + case -1308002495: + var12 = var18; + var13 = 0; + var17 = -970720849; + break; + case -970720849: + if (var13 < (-335027602 ^ 335027604) + ((-335027602 & 335027604) << 1)) { + var17 = 1815977719; + } else { + var17 = 1616383132; + } + break; + case -905431636: + var19 = 0; + var17 = 478613886; + break; + case -721386990: + var15 = var20; + var16 = texturedLayer(var12, (boolean)((var14) != 0)); + var1.submitCustomGeometry( + var2, + var16, + (var11x, var12x) -> { + Matrix4f var13x = null; + int var14x = 0; + int var15x = 191465242; + + while (true) { + switch (var15x) { + case -2011012632: + if (var14x < (-2129429873 ^ 2129429876) + ((-2129429873 & 2129429876) << 1)) { + var15x = -161290752; + } else { + var15x = -1028514845; + } + break; + case -1028514845: + return; + case -161290752: + this.emitDisc( + var12x, + var13x, + var3, + var5, + var7, + var9, + var10 + 0.006F * var14x, + this.ringYaws[var14x], + this.ringPitches[var14x], + asu.getRGBWithAlpha(var11, this.pulses[var14x] * var15) + ); + var14x++; + var15x = -2011012632; + break; + case 191465242: + default: + var13x = var11x.pose(); + var14x = 0; + var15x = -2011012632; + } + } + } + ); + var13++; + var17 = -970720849; + break; + case -719827764: + var19 = 1; + var17 = 478613886; + break; + case -346732642: + var20 = 1.0F; + var17 = -721386990; + break; + case -4976951: + var18 = BRACKETS_TEXTURE; + var17 = -1308002495; + break; + case 478613886: + var14 = var19; + if (var14 != 0) { + var17 = 2099171043; + } else { + var17 = -346732642; + } + break; + case 1380549815: + var18 = VORTEX_TEXTURE; + var17 = -1308002495; + break; + case 1616383132: + return; + case 1815977719: + if (var13 == (1174765494 ^ -1174765493) + ((1174765494 & -1174765493) << 1)) { + var17 = -719827764; + } else { + var17 = -905431636; + } + break; + case 2099171043: + var20 = 0.85F; + var17 = -721386990; + } + } + } + + private void emitDisc( + VertexConsumer var1, Matrix4f var2, double var3, double var5, double var7, float var9, float var10, float var11, float var12, int var13 + ) { + this.scratch + .set(var2) + .translate((float)var3, (float)(var5 + var10), (float)var7) + .rotateY((90.0F + var11) * (float) (Math.PI / 180.0)) + .rotateX(var12 * (float) (Math.PI / 180.0)); + var1.addVertex(this.scratch, -var9, 0.0F, -var9).setUv(0.0F, 0.0F).setColor(var13); + var1.addVertex(this.scratch, -var9, 0.0F, var9).setUv(0.0F, 1.0F).setColor(var13); + var1.addVertex(this.scratch, var9, 0.0F, var9).setUv(1.0F, 1.0F).setColor(var13); + var1.addVertex(this.scratch, var9, 0.0F, -var9).setUv(1.0F, 0.0F).setColor(var13); + } + + private void renderGarland( + SubmitNodeCollector var1, + PoseStack var2, + double var3, + double var5, + double var7, + float var9, + float var10, + float var11, + int var12, + float var13, + float var14 + ) { + float var15 = var9 * 0.34F; + float var16 = Mth.clamp(var9 * 0.025F, 0.045F, 0.085F); + var1.submitCustomGeometry( + var2, + GARLAND_LAYER, + (var14x, var15x) -> { + Matrix4f var16x = var14x.pose(); + this.forEachBead( + var15, + var11, + (var14xx, var15xx, var16xx, var17, var18, var19) -> { + float var20 = var16 * (0.9F + var16xx * 0.28F); + float var21 = (float)(var3 + var17); + float var22 = (float)(var5 + var10 + 0.006F * var14xx + var18); + float var23 = (float)(var7 + var19); + this.emitGlow( + var15x, + var16x, + var21, + var22, + var23, + var20 * (3.6F + var16xx * 0.7F), + asu.getRGBWithAlpha(var12, (0.105F + var16xx * 0.035F) * this.pulses[var14xx]), + var13, + var14 + ); + this.emitGlow( + var15x, + var16x, + var21, + var22, + var23, + var20 * (1.9F + var16xx * 0.3F), + asu.getRGBWithAlpha(var12, (0.18F + var16xx * 0.055F) * this.pulses[var14xx]), + var13, + var14 + ); + } + ); + this.forEachBead( + var15, + var11, + (var12xx, var13xx, var14xx, var15xx, var16xx, var17) -> { + float var18 = var16 * (0.9F + var14xx * 0.28F); + this.emitBead( + var15x, + var16x, + (float)(var3 + var15xx), + (float)(var5 + var10 + 0.006F * var12xx + var16xx), + (float)(var7 + var17), + var18, + asu.getRGBWithAlpha(var12, (0.78F + var14xx * 0.22F) * this.pulses[var12xx]) + ); + } + ); + } + ); + } + + private void forEachBead(float var1, float var2, wf var3) { + int var4 = 0; + int var5 = 0; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = -1707190538; + + while (true) { + switch (var12) { + case -1707190538: + default: + var4 = 0; + var12 = 692155273; + break; + case -1089334460: + var4++; + var12 = 692155273; + break; + case -718475464: + var6 = RING_COS[var5] * var1; + var7 = RING_SIN[var5] * var1; + var8 = (Mth.sin(var2 * 4.0F + var5 * 0.9F + var4) + 1.0F) * 0.5F; + var9 = var6 * this.yawCos[var4] + var7 * this.pitchCos[var4] * this.yawSin[var4]; + var10 = -var7 * this.pitchSin[var4]; + var11 = -var6 * this.yawSin[var4] + var7 * this.pitchCos[var4] * this.yawCos[var4]; + var3.accept(var4, var5, var8, var9, var10, var11); + var5++; + var12 = 1039682073; + break; + case -240921642: + return; + case 692155273: + if (var4 < (943984547 ^ -943984544) + ((943984547 & -943984544) << 1)) { + var12 = 1311785554; + } else { + var12 = -240921642; + } + break; + case 1039682073: + if (var5 < (1575286957 ^ -1575286933) + ((1575286957 & -1575286933) << 1)) { + var12 = -718475464; + } else { + var12 = -1089334460; + } + break; + case 1311785554: + var5 = 0; + var12 = 1039682073; + } + } + } + + private void emitBead(VertexConsumer var1, Matrix4f var2, float var3, float var4, float var5, float var6, int var7) { + int var8 = 0; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = 0; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + int var18 = 988203933; + + while (true) { + switch (var18) { + case -1007173685: + return; + case 662086179: + if (var13 < (466224403 | -466224391) + (466224403 & -466224391)) { + var18 = 915501738; + } else { + var18 = 1844248732; + } + break; + case 915501738: + var14 = BEAD_SLICE_COS[var13]; + var15 = BEAD_SLICE_SIN[var13]; + var16 = BEAD_SLICE_COS[var13 + 1]; + var17 = BEAD_SLICE_SIN[var13 + 1]; + var1.addVertex(this.scratch, var14 * var10, var9, var15 * var10).setColor(var7); + var1.addVertex(this.scratch, var14 * var12, var11, var15 * var12).setColor(var7); + var1.addVertex(this.scratch, var16 * var12, var11, var17 * var12).setColor(var7); + var1.addVertex(this.scratch, var16 * var10, var9, var17 * var10).setColor(var7); + var13++; + var18 = 662086179; + break; + case 988203933: + default: + this.scratch.set(var2).translate(var3, var4, var5); + var8 = 0; + var18 = 2028368759; + break; + case 1387086232: + var9 = BEAD_STACK_SIN[var8] * var6; + var10 = BEAD_STACK_COS[var8] * var6; + var11 = BEAD_STACK_SIN[var8 + 1] * var6; + var12 = BEAD_STACK_COS[var8 + 1] * var6; + var13 = 0; + var18 = 662086179; + break; + case 1844248732: + var8++; + var18 = 2028368759; + break; + case 2028368759: + if (var8 < (-2091634571 ^ 2091634579) + ((-2091634571 & 2091634579) << 1)) { + var18 = 1387086232; + } else { + var18 = -1007173685; + } + } + } + } + + private void emitGlow(VertexConsumer var1, Matrix4f var2, float var3, float var4, float var5, float var6, int var7, float var8, float var9) { + int var10 = 0; + int var11 = 0; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + int var16 = 1119513972; + + while (true) { + switch (var16) { + case -1569051329: + var12 = GLOW_COS[var11] * var6; + var13 = GLOW_SIN[var11] * var6; + var14 = GLOW_COS[var11 + 1] * var6; + var15 = GLOW_SIN[var11 + 1] * var6; + var1.addVertex(this.scratch, 0.0F, 0.0F, 0.0F).setColor(var7); + var1.addVertex(this.scratch, var12, var13, 0.0F).setColor(var10); + var1.addVertex(this.scratch, var14, var15, 0.0F).setColor(var10); + var1.addVertex(this.scratch, var14, var15, 0.0F).setColor(var10); + var11++; + var16 = -393601955; + break; + case -393601955: + if (var11 < (-1542286607 | 1542286643) + (-1542286607 & 1542286643)) { + var16 = -1569051329; + } else { + var16 = 319825872; + } + break; + case 319825872: + return; + case 1119513972: + default: + this.scratch.set(var2).translate(var3, var4, var5).rotateY(-var8).rotateX(var9); + var10 = asu.getRGBWithAlpha(var7, 0.0F); + var11 = 0; + var16 = -393601955; + } + } + } + + @k + public void onRender(fs var1) { + double var2 = 0.0; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + ary var10 = null; + Matrix3x2fStack var11 = null; + int var12 = -1547164218; + + while (true) { + switch (var12) { + case -1808030137: + this.markerSmoothed = (boolean)(((0)) != 0); + return; + case -1547164218: + default: + if (this.isEnabled()) { + var12 = 117305227; + } else { + var12 = -179576343; + } + break; + case -724951555: + if (this.target != null) { + var12 = 73306268; + } else { + var12 = -1808030137; + } + break; + case -348328402: + var2 = (float)(System.currentTimeMillis() - this.startMillis) * this.speedSetting.getCurrent(); + var4 = (float)((Math.sin(var2 / 500.0) + 1.0) * 0.5); + var5 = (float)((Math.sin(var2 / 1000.0) + 1.0) * 0.5) * 360.0F; + var6 = Mth.clamp(var4 * 90.0F, 0.0F, 90.0F); + var7 = Mth.clamp(var4 * 1.1F, 0.9F, 1.1F); + var8 = this.markerSizeSetting.getCurrent() * var7; + var9 = (90.0F - var6 + var5) * (float) (Math.PI / 180.0); + var10 = ary.of( + this.cornerColor((394712998 ^ -394712998) + ((394712998 & -394712998) << 1)), + this.cornerColor((625500476 ^ -625500206) + ((625500476 & -625500206) << 1)), + this.cornerColor((-1652598837 | 1652598927) + (-1652598837 & 1652598927)), + this.cornerColor((648348438 | -648348258) + (648348438 & -648348258)) + ); + var11 = var1.getContext().pose(); + var11.pushMatrix(); + var11.translate(this.markerScreenX, this.markerScreenY); + var11.rotate(var9); + var11.translate(-this.markerScreenX, -this.markerScreenY); + atb.drawTexture( + var11, + MARKER_TEXTURE, + this.markerScreenX - var8 * 0.5F, + this.markerScreenY - var8 * 0.5F, + var8, + var8, + var10, + this.markerGlowSetting.isEnabled() + ); + var11.popMatrix(); + return; + case -179576343: + return; + case 73306268: + if (!(this.fade.value() <= 0.01F)) { + var12 = 1998043381; + } else { + var12 = -1808030137; + } + break; + case 117305227: + if (!this.styleSetting.is("Marker")) { + var12 = -179576343; + } else { + var12 = -724951555; + } + break; + case 1998043381: + if (!this.projectMarker()) { + var12 = -1808030137; + } else { + var12 = -348328402; + } + } + } + } + + private boolean projectMarker() { + Vec3 var1 = null; + Vec3 var2 = null; + int var3 = -1644231805; + + while (true) { + switch (var3) { + case -1644231805: + default: + var1 = aqj.interpolate(this.target); + var2 = var1.add(0.0, (this.target.getEyeHeight() + 0.4F) * 0.5F, 0.0); + if (!aqk.projectToGui(var2, this.markerProjection)) { + var3 = -1022556311; + } else { + var3 = 1417125122; + } + break; + case -1022556311: + return (boolean)(((0)) != 0); + case -999953669: + return (boolean)(((1)) != 0); + case 930159080: + this.markerScreenX = this.markerProjection.x; + this.markerScreenY = this.markerProjection.y; + this.markerSmoothed = (boolean)(((1)) != 0); + var3 = -999953669; + break; + case 1268552393: + this.markerScreenX = this.markerScreenX + (this.markerProjection.x - this.markerScreenX) * 0.5F; + this.markerScreenY = this.markerScreenY + (this.markerProjection.y - this.markerScreenY) * 0.5F; + var3 = -999953669; + break; + case 1417125122: + if (this.markerSmoothed) { + var3 = 1268552393; + } else { + var3 = 930159080; + } + } + } + } + + private asu styleColor(int var1) { + String var3 = this.colorSetting.get(); + int var4 = -1; + switch (var3.hashCode()) { + case -1656737386: + if (var3.equals("Rainbow")) { + var4 = 1; + } + break; + case 2029746065: + if (var3.equals("Custom")) { + var4 = 0; + } + } + asu var2 = switch (var4) { + case 0 -> this.customColorSetting.getColor(1.0F); + case 1 -> asu.fromHSB(rainbowHue(var1), 0.85F, 1.0F); + default -> bz.getInstance().getThemeManager().getClientColor(var1); + }; + if (this.hurtTintSetting.isEnabled() && this.target != null) { + var2 = var2.mix(asu.RED, this.hurtAmount()); + } + + return var2; + } + + private asu cornerColor(int var1) { + return this.styleColor(var1).mulAlpha(this.fade.value()); + } + + private static float rainbowHue(int var0) { + float var1 = (float)(System.currentTimeMillis() % ((7277282554609828628L | -7277282554609824628L) + (7277282554609828628L & -7277282554609824628L))) + / 4000.0F + + var0 / 360.0F; + return var1 - (float)Math.floor(var1); + } + + private float hurtAmount() { + int var1 = 1028822181; + + while (true) { + switch (var1) { + case -1018656299: + return 0.0F; + case -685333349: + return Mth.clamp(this.target.hurtTime / 10.0F, 0.0F, 1.0F); + case 1028822181: + } + + if (this.target == null) { + var1 = -1018656299; + } else { + var1 = -685333349; + } + } + } + + private int markerColor() { + return this.cornerColor(90).getRGB(); + } + + private void randomizeRings() { + int var1 = 0; + int var2 = 0; + int var3 = -669781554; + + while (true) { + switch (var3) { + case -1816264242: + if (var1 < (38742050 | -38742047) + (38742050 & -38742047)) { + var3 = -998072166; + } else { + var3 = -1394058030; + } + break; + case -1721321551: + if (var1 < (1438926903 ^ -1438926839) + ((1438926903 & -1438926839) << 1)) { + var3 = -919322885; + } else { + var3 = 1394886073; + } + break; + case -1394058030: + var1 = 0; + var3 = -1721321551; + break; + case -1256336184: + return; + case -998072166: + this.spinScales[var1] = 0.75F + this.random.nextFloat() * 0.5F; + this.wobbleSpeeds[var1] = 0.8F + this.random.nextFloat() * 0.8F; + this.wobblePhases[var1] = this.random.nextFloat() * (float) (Math.PI * 2); + var1++; + var3 = -1816264242; + break; + case -919322885: + var2 = 0; + var3 = -235484622; + break; + case -669781554: + default: + var1 = 0; + var3 = -1816264242; + break; + case -235484622: + if (var2 < (637008489 ^ -637008486) + ((637008489 & -637008486) << 1)) { + var3 = 1806092066; + } else { + var3 = -65743002; + } + break; + case -65743002: + if (this.ringsSeparated()) { + var3 = -1256336184; + } else { + var3 = 1656312230; + } + break; + case 1394886073: + this.ringOffsets[0] = -30.0F + this.random.nextFloat() * 4.0F; + this.ringOffsets[1] = -2.0F + this.random.nextFloat() * 4.0F; + this.ringOffsets[2] = 30.0F - this.random.nextFloat() * 4.0F; + return; + case 1656312230: + var1++; + var3 = -1721321551; + break; + case 1806092066: + this.ringOffsets[var2] = -30.0F + this.random.nextFloat() * 30.0F * 2.0F; + var2++; + var3 = -235484622; + } + } + } + + private boolean ringsSeparated() { + int var1 = 0; + int var2 = 0; + int var3 = -567957695; + + while (true) { + switch (var3) { + case -923669459: + var1++; + var3 = -519904139; + break; + case -913665072: + if (var2 < (820135401 | -820135398) + (820135401 & -820135398)) { + var3 = 1431161432; + } else { + var3 = -923669459; + } + break; + case -701665978: + return (boolean)(((1)) != 0); + case -612082695: + var2 = var1 + 1; + var3 = -913665072; + break; + case -567957695: + default: + var1 = 0; + var3 = -519904139; + break; + case -519904139: + if (var1 < (-221229918 ^ 221229921) + ((-221229918 & 221229921) << 1)) { + var3 = -612082695; + } else { + var3 = -701665978; + } + break; + case -499163423: + return (boolean)(((0)) != 0); + case 722381076: + var2++; + var3 = -913665072; + break; + case 1431161432: + if (Math.abs(this.ringOffsets[var1] - this.ringOffsets[var2]) < 22.0F) { + var3 = -499163423; + } else { + var3 = 722381076; + } + } + } + } + + static { + float var0 = 3.5255651F; + float var1 = -(var0 - (float) Math.PI) * 0.5F; + + for (int var2 = 0; var2 <= 48; var2++) { + float var3 = var2 / 48.0F; + float var4 = var1 + var0 * var3; + CRESCENT_COS[var2] = Mth.cos(var4); + CRESCENT_SIN[var2] = Mth.sin(var4); + CRESCENT_TAPER[var2] = Mth.sin((float) Math.PI * var3); + CRESCENT_DEGREES[var2] = var4 / (float) (Math.PI / 180.0); + } + + for (int var5 = 0; var5 < 24; var5++) { + var1 = (float)((Math.PI * 2) * var5 / 24.0); + RING_COS[var5] = Mth.cos(var1); + RING_SIN[var5] = Mth.sin(var1); + } + + for (int var6 = 0; var6 <= 36; var6++) { + var1 = (float)((Math.PI * 2) * var6 / 36.0); + GLOW_COS[var6] = Mth.cos(var1); + GLOW_SIN[var6] = Mth.sin(var1); + } + + for (int var7 = 0; + var7 <= 8; + var7++ + ) { + var1 = (float)(Math.PI * var7 / 8.0 - (Math.PI / 2)); + BEAD_STACK_SIN[var7] = Mth.sin(var1); + BEAD_STACK_COS[var7] = Mth.cos(var1); + } + + for (int var8 = 0; var8 <= 12; var8++) { + var1 = (float)((Math.PI * 2) * var8 / 12.0); + BEAD_SLICE_COS[var8] = Mth.cos(var1); + BEAD_SLICE_SIN[var8] = Mth.sin(var1); + } + + ADDITIVE = new BlendFunction(BlendFactor.SRC_ALPHA, BlendFactor.ONE); + TEXTURED_BLEND = texturedPipeline( + "textured_blend_depth", + (boolean)((((-279934084 ^ 279934084) + ((-279934084 & 279934084) << 1)) + ) != 0)); + TEXTURED_ADDITIVE = texturedPipeline( + "textured_additive_depth", + (boolean)((((-675188715 | 675188716) + (-675188715 & 675188716)) + ) != 0)); + GARLAND = garlandPipeline( + "garland_depth", CompareOp.GREATER_THAN_OR_EQUAL + ); + GARLAND_THROUGH = garlandPipeline( + "garland_through", CompareOp.ALWAYS_PASS + ); + GARLAND_LAYER = RenderType.create( + "evolution_targetesp_garland_depth", + RenderSetup.builder(GARLAND).createRenderSetup() + ); + GARLAND_THROUGH_LAYER = RenderType.create( + "evolution_targetesp_garland_through", + RenderSetup.builder(GARLAND_THROUGH).createRenderSetup() + ); + TEXTURED_LAYERS = new HashMap<>(); + INSTANCE = new wg(); + } +} diff --git a/src/main/java/defpackage/wh.java b/src/main/java/defpackage/wh.java new file mode 100644 index 0000000..0ca79dd --- /dev/null +++ b/src/main/java/defpackage/wh.java @@ -0,0 +1,244 @@ +package defpackage; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.network.protocol.game.ClientboundEntityEventPacket; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; + +@rn(name = "TotemCounter", category = rl.MISC, description = "Counts popped totems and shows own totems") +public final class wh extends rm { + public static final wh INSTANCE = new wh(); + private final Map popCounts = new ConcurrentHashMap<>(); + private final sc resetBind = new sc( + "Reset Key", (-744717235 | 744717496) + (-744717235 & 744717496) + ) + .description( + "Key to reset totem counters" + ); + + private wh() { + } + + public void addPop(String var1) { + int var2 = -1544564478; + + while (true) { + switch (var2) { + case -1544564478: + default: + if (!this.isEnabled()) { + var2 = 1808687300; + } else { + var2 = -44341398; + } + break; + case -44341398: + this.popCounts + .put( + var1, + this.popCounts.getOrDefault(var1, (1044875224 | -1044875224) + (1044875224 & -1044875224)) + + (1827657037 | -1827657036) + + (1827657037 & -1827657036) + ); + return; + case 1808687300: + return; + } + } + } + + public void resetPop(String var1) { + this.popCounts.remove(var1); + } + + public int getPops(String var1) { + return this.popCounts.getOrDefault(var1, (1710197453 ^ -1710197453) + ((1710197453 & -1710197453) << 1)); + } + + @k + public void onKey(er var1) { + int var2 = 1433526313; + + while (true) { + switch (var2) { + case -309993779: + this.popCounts.clear(); + bz.getInstance().getSoundManager().playClick(); + bz.getInstance() + .getNotifyManager() + .addCustomNotification( + rl.MISC.getIcon(), + "Totem Counters", + "reset!" + ); + var2 = 895160134; + break; + case 895140603: + if (var1.isKeyDown(this.resetBind.getKeyCode(), (boolean)((((973409678 | -973409678) + (973409678 & -973409678))) != 0))) { + var2 = -309993779; + } else { + var2 = 895160134; + } + break; + case 895160134: + return; + case 1433526313: + default: + if (!var1.isKeyDown(this.resetBind.getKeyCode(), (boolean)((((-2143889790 ^ 2143889791) + ((-2143889790 & 2143889791) << 1))) != 0))) { + var2 = 895140603; + } else { + var2 = -309993779; + } + } + } + } + + @k + public void onPacket(fy var1) { + ClientboundEntityEventPacket var2 = null; + Object var3 = null; + Player var4 = null; + int var5 = 1006426883; + + while (true) { + switch (var5) { + case -1818172088: + var3 = var2.getEntity(mc.level); + if (var3 instanceof Player) { + var5 = 119425201; + } else { + var5 = -591679937; + } + break; + case -1112977287: + if (mc.level == null) { + var5 = 1433748871; + } else { + var5 = 844564459; + } + break; + case -924483375: + this.addPop(var4.getGameProfile().name()); + var5 = -591679937; + break; + case -843627463: + var2 = (ClientboundEntityEventPacket)var3; + if (var2.getEventId() != (1003099770 | -1003099735) + (1003099770 & -1003099735)) { + var5 = 1954585559; + } else { + var5 = -1818172088; + } + break; + case -710506865: + this.resetPop(var4.getGameProfile().name()); + var5 = -591679937; + break; + case -591679937: + return; + case 119425201: + var4 = (Player)var3; + if (var2.getEventId() == (1800259511 ^ -1800259476) + ((1800259511 & -1800259476) << 1)) { + var5 = -924483375; + } else { + var5 = 1275424375; + } + break; + case 844564459: + var3 = var1.getPacket(); + if (var3 instanceof ClientboundEntityEventPacket) { + var5 = -843627463; + } else { + var5 = -591679937; + } + break; + case 1006426883: + default: + if (var1.isReceive()) { + var5 = -1112977287; + } else { + var5 = 1433748871; + } + break; + case 1275424375: + if (var2.getEventId() == (1521033946 | -1521033943) + (1521033946 & -1521033943)) { + var5 = -710506865; + } else { + var5 = -591679937; + } + break; + case 1433748871: + return; + case 1954585559: + if (var2.getEventId() == (1355012856 ^ -1355012853) + ((1355012856 & -1355012853) << 1)) { + var5 = -1818172088; + } else { + var5 = -591679937; + } + } + } + } + + @k + public void onRender(fs var1) { + if (mc.level != null && mc.player != null) { + int var2 = 0; + + for (int var3 = 0; var3 < mc.player.getInventory().getContainerSize(); var3++) { + ItemStack var4 = mc.player.getInventory().getItem(var3); + if (var4.getItem() == Items.TOTEM_OF_UNDYING) { + var2 += var4.getCount(); + } + } + + if (var2 > 0) { + aru var18 = var1.getContext(); + mv var19 = bz.getInstance().getThemeManager().getCurrentTheme(); + ge var5 = gl.SEMIBOLD.getFont(9.0F); + String var6 = String.valueOf(var2); + float var7 = mc.getWindow().getGuiScaledWidth(); + float var8 = mc.getWindow().getGuiScaledHeight(); + int var9 = vm.INSTANCE.isEnabled() && vm.INSTANCE.isEnableHotBar() + ? 1: 0; + float var10; + float var11; + if (var9 != 0) { + float var12 = 216.0F; + float var13 = 24.0F; + float var14 = 4.0F; + var10 = (var7 + var12) / 2.0F; + var11 = var8 - var14 - var13 / 2.0F; + } else { + float var20 = 182.0F; + float var22 = 22.0F; + var10 = (var7 + var20) / 2.0F; + var11 = var8 - var22 / 2.0F; + } + + float var21 = 6.0F; + float var23 = 16.0F; + float var24 = var10 + var21; + float var15 = var11 - var23 / 2.0F; + float var16 = var24 + var23 + 2.0F; + float var17 = var11 - var5.height() / 2.0F; + var18.pushMatrix(); + var18.item(Items.TOTEM_OF_UNDYING.getDefaultInstance(), (int)var24, (int)var15); + var18.drawText( + var5, + var6, + var16 + 0.5F, + var17 + 0.5F, + new asu( + 0, + 0, + 0, + (1864580329 ^ -1864580149) + ((1864580329 & -1864580149) << 1) + ) + ); + var18.drawText(var5, var6, var16, var17, var19.getWhite()); + var18.popMatrix(); + } + } + } +} diff --git a/src/main/java/defpackage/wi.java b/src/main/java/defpackage/wi.java new file mode 100644 index 0000000..8656a77 --- /dev/null +++ b/src/main/java/defpackage/wi.java @@ -0,0 +1,13 @@ +package defpackage; + +import net.minecraft.world.phys.Vec3; + +final class wi { + final Vec3 pos; + final long time; + + wi(Vec3 var1, long var2) { + this.pos = var1; + this.time = var2; + } +} diff --git a/src/main/java/defpackage/wj.java b/src/main/java/defpackage/wj.java new file mode 100644 index 0000000..73d1ef7 --- /dev/null +++ b/src/main/java/defpackage/wj.java @@ -0,0 +1,1095 @@ +package defpackage; + +import com.mojang.blaze3d.PrimitiveTopology; +import com.mojang.blaze3d.textures.GpuTextureView; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Supplier; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +@rn(name = "Trails", description = "Draws a fading trail behind the player", category = rl.RENDER) +public final class wj extends rm { + private static final String FILL_NORMAL = "Normal"; + private static final String FILL_SHADER = "Shader"; + private static final String SHADER_NEBULA = "Nebula"; + private static final String SHADER_COSMOS = "Cosmos"; + private static final String SHADER_WEB = "Web"; + private static final String SHADER_PLASMA = "Plasma"; + private static final String SHADER_GLASS = "LiquidGlass"; + private static final String SHADER_MATRIX = "Matrix"; + private static final String SHADER_ARMOR = "LivingArmor"; + private static final String SHADER_ALIEN = "AlienNebula"; + private final sm durationSetting = new sm( + "Duration", 400.0F, 100.0F, 2000.0F, 50.0F + ) + .description( + "How long the trail segments last in milliseconds" + ); + private final sm heightSetting = new sm("Height", 1.0F, 0.1F, 2.5F, 0.1F) + .description("Vertical size of the trail"); + private final sm widthSetting = new sm("Line width", 2.0F, 1.0F, 5.0F, 0.5F) + .description("Thickness of the trail outline"); + private final ru fillSetting = new ru( + "Fill", (boolean)((((1961801931 | -1961801930) + (1961801931 & -1961801930)) + ) != 0)) + .description("Fill the inside of the trail"); + private final sg fillType; + private final sg shaderType; + private final sm shaderSpeed; + private final sm shaderAlpha; + private final sg shaderColorSetting; + private final rx shaderCustomColor; + private final ru linesSetting; + private final sg colorSetting; + private final rx customColorSetting; + private final List points; + public static final wj INSTANCE = new wj(); + + private wj() { + String var10003 = "Fill type"; + Supplier var10004 = this.fillSetting::isEnabled; + String[] var10005 = new String[2]; + var10005[0] = "Normal"; + var10005[1] = "Shader"; + this.fillType = new sg(var10003, var10004, var10005) + .describe( + "Normal", + "Solid color trail" + ) + .describe( + "Shader", + "Animated shader trail" + ) + .description( + "Type of fill applied to the trail" + ); + var10003 = "Shader"; + var10004 = () -> { + int var2x = 0; + int var1x = -1766014326; + + while (true) { + switch (var1x) { + case -1766014326: + default: + if (this.fillSetting.isEnabled()) { + var1x = -136571919; + } else { + var1x = 1597845707; + } + break; + case -1468549106: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -136571919: + if (this.fillType.is("Shader")) { + var1x = -65556679; + } else { + var1x = 1597845707; + } + break; + case -65556679: + var2x = 1; + var1x = -1468549106; + break; + case 1597845707: + var2x = 0; + var1x = -1468549106; + } + } + }; + var10005 = new String[8]; + var10005[0] = "Nebula"; + var10005[1] = "Cosmos"; + var10005[2] = "Web"; + var10005[3] = "Plasma"; + var10005[4] = "LiquidGlass"; + var10005[5] = "Matrix"; + var10005[6] = "LivingArmor"; + var10005[7] = "AlienNebula"; + this.shaderType = new sg(var10003, var10004, var10005) + .describe( + "Nebula", + "Purple nebula" + ) + .describe( + "Cosmos", + "Starry cosmos" + ) + .describe( + "Web", + "Web effect" + ) + .describe( + "Plasma", + "Flowing plasma" + ) + .describe( + "LiquidGlass", + "Shiny glass" + ) + .describe( + "Matrix", + "Falling code" + ) + .describe( + "LivingArmor", + "Enchanted armor" + ) + .describe( + "AlienNebula", + "Distorted alien effect" + ) + .description( + "Shader effect for the trail fill" + ); + this.shaderSpeed = new sm("Shader speed", 1.0F, 0.1F, 3.0F, 0.1F, () -> { + int var2x = 0; + int var1x = 1134357164; + + while (true) { + switch (var1x) { + case -1807640575: + var2x = 1; + var1x = 85647466; + break; + case -1083940735: + if (this.fillType.is("Shader")) { + var1x = -1807640575; + } else { + var1x = -834983984; + } + break; + case -834983984: + var2x = 0; + var1x = 85647466; + break; + case 85647466: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 1134357164: + default: + if (this.fillSetting.isEnabled()) { + var1x = -1083940735; + } else { + var1x = -834983984; + } + } + } + }) + .description( + "Animation speed for the shader fill" + ); + this.shaderAlpha = new sm( + "Shader opacity", 1.0F, 0.1F, 1.0F, 0.05F, () -> { + int var2x = 0; + int var1x = 1882909731; + + while (true) { + switch (var1x) { + case -1502370117: + var2x = 0; + var1x = -425337894; + break; + case -1298497201: + if (this.fillType.is("Shader")) { + var1x = 652839868; + } else { + var1x = -1502370117; + } + break; + case -425337894: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 652839868: + var2x = 1; + var1x = -425337894; + break; + case 1882909731: + default: + if (this.fillSetting.isEnabled()) { + var1x = -1298497201; + } else { + var1x = -1502370117; + } + } + } + } + ) + .description( + "Transparency of the shader fill" + ); + var10003 = "Shader color"; + var10004 = () -> { + int var2x = 0; + int var1x = 1509662438; + + while (true) { + switch (var1x) { + case 137289914: + if (this.fillType.is("Shader")) { + var1x = 885530216; + } else { + var1x = 2112401422; + } + break; + case 879908118: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 885530216: + var2x = 1; + var1x = 879908118; + break; + case 1509662438: + default: + if (this.fillSetting.isEnabled()) { + var1x = 137289914; + } else { + var1x = 2112401422; + } + break; + case 2112401422: + var2x = 0; + var1x = 879908118; + } + } + }; + var10005 = new String[3]; + var10005[0] = "Client"; + var10005[1] = "Rainbow"; + var10005[2] = "Custom"; + this.shaderColorSetting = new sg(var10003, var10004, var10005) + .describe( + "Client", + "Use the client theme color" + ) + .describe( + "Rainbow", + "Rainbow shifting colors" + ) + .describe( + "Custom", + "Use a custom chosen color" + ) + .description("Color mode for the shader"); + this.shaderCustomColor = new rx( + "Shader custom color", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> { + int var2x = 0; + int var1x = -2011970311; + + while (true) { + switch (var1x) { + case -2011970311: + default: + if (this.fillSetting.isEnabled()) { + var1x = -1541618631; + } else { + var1x = 1212750594; + } + break; + case -1541618631: + if (this.fillType.is("Shader")) { + var1x = 200584738; + } else { + var1x = 1212750594; + } + break; + case -680474802: + var2x = 1; + var1x = 1872649806; + break; + case 200584738: + if (this.shaderColorSetting.is("Custom")) { + var1x = -680474802; + } else { + var1x = 1212750594; + } + break; + case 1212750594: + var2x = 0; + var1x = 1872649806; + break; + case 1872649806: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description("Custom color for the shader"); + this.linesSetting = new ru( + "Lines", + (boolean)((((373852326 | -373852325) + (373852326 & -373852325)) + ) != 0)) + .description( + "Draw outlining lines on the edges of the trail" + ); + var10003 = "Color"; + String[] var6 = new String[3]; + var6[0] = "Client"; + var6[1] = "Rainbow"; + var6[2] = "Custom"; + this.colorSetting = new sg(var10003, var6) + .describe( + "Client", + "Use the client theme color" + ) + .describe( + "Rainbow", + "Rainbow shifting colors" + ) + .describe( + "Custom", + "Use a custom chosen color" + ) + .description("Color mode for the trail"); + this.customColorSetting = new rx( + "Custom color", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> this.colorSetting.is("Custom") + ) + .description( + "Custom color for the trail" + ); + this.points = new ArrayList<>(); + } + + @Override + public void onEnable() { + super.onEnable(); + this.points.clear(); + } + + @Override + public void onDisable() { + super.onDisable(); + this.points.clear(); + } + + public void onWorldRender(LevelRenderContext var1) { + if (this.isEnabled() && mc.player != null && mc.level != null) { + PoseStack var2 = var1.poseStack(); + Camera var3 = mc.getEntityRenderDispatcher().camera; + if (var2 != null && var3 != null) { + if (mc.options.getCameraType().isFirstPerson()) { + this.points.clear(); + } else { + long var4 = System.currentTimeMillis(); + long var6 = (long)this.durationSetting.getCurrent(); + this.points.removeIf(var4x -> { + int var6x = 0; + int var5 = 1038449543; + + while (true) { + switch (var5) { + case 57040018: + var6x = 0; + var5 = 602396466; + break; + case 602396466: + return (boolean)((var6x) != 0); + case 609815370: + var6x = 1; + var5 = 602396466; + break; + case 1038449543: + default: + if (var4 - var4x.time > var6) { + var5 = 609815370; + } else { + var5 = 57040018; + } + } + } + }); + this.points.add(new wi(aqj.interpolate(mc.player), var4)); + if (this.points.size() >= (426895124 | -426895122) + (426895124 & -426895122)) { + Vec3 var8 = var3.position(); + float var9 = mc.player.getBbHeight() * this.heightSetting.getCurrent(); + SubmitNodeCollector var10 = var1.submitNodeCollector(); + if (this.fillSetting.isEnabled() + && !this.fillType.is("Shader") + && var10 != null) { + RenderType var11 = arj.positionColor(); + var10.submitCustomGeometry(var2, var11, (var3x, var4x) -> { + int var5 = 0; + int var6x = 0; + int var7 = 0; + Object var8x = null; + Object var9x = null; + int var10x = -1605260543; + + while (true) { + switch (var10x) { + case -1605260543: + default: + var5 = 0; + var10x = -1382557492; + break; + case -1382557492: + if (var5 < this.points.size() - ((-1554656535 ^ 1554656536) + ((-1554656535 & 1554656536) << 1))) { + var10x = 661071430; + } else { + var10x = -927387966; + } + break; + case -927387966: + return; + case 661071430: + var6x = this.color(var5, 0.5F); + var7 = this.color(var5 + 1, 0.5F); + var8x = this.points.get(var5).pos.subtract(var8); + var9x = this.points.get(var5 + 1).pos.subtract(var8); + var4x.addVertex(var3x, (float)((Vec3)var8x).x, (float)((Vec3)var8x).y + 0.02F, (float)((Vec3)var8x).z).setColor(var6x); + var4x.addVertex(var3x, (float)((Vec3)var8x).x, (float)(((Vec3)var8x).y + var9), (float)((Vec3)var8x).z).setColor(var6x); + var4x.addVertex(var3x, (float)((Vec3)var9x).x, (float)(((Vec3)var9x).y + var9), (float)((Vec3)var9x).z).setColor(var7); + var4x.addVertex(var3x, (float)((Vec3)var9x).x, (float)((Vec3)var9x).y + 0.02F, (float)((Vec3)var9x).z).setColor(var7); + var5++; + var10x = -1382557492; + } + } + }); + } + + if (this.linesSetting.isEnabled() + && !this.fillType.is("Shader") + && var10 != null) { + float var13 = this.widthSetting.getCurrent(); + RenderType var12 = arj.lines(); + this.drawEdge(var10, var2, var12, var8, var9, var13); + this.drawEdge(var10, var2, var12, var8, 0.02F, var13); + } + } + } + } + } + } + + public void onWorldDraw(LevelRenderContext var1) { + Camera var2 = null; + int var3 = 361608891; + + while (true) { + switch (var3) { + case -1300790161: + if (this.points.size() >= (895336834 | -895336832) + (895336834 & -895336832)) { + var3 = 525509476; + } else { + var3 = 550071125; + } + break; + case -1053149117: + if (!this.fillType.is("Shader")) { + var3 = 671803291; + } else { + var3 = -1300790161; + } + break; + case -906982260: + if (this.fillSetting.isEnabled()) { + var3 = -1053149117; + } else { + var3 = 671803291; + } + break; + case -414908801: + return; + case -354205417: + return; + case 152584235: + var2 = mc.getEntityRenderDispatcher().camera; + if (var2 == null) { + var3 = -414908801; + } else { + var3 = 568612795; + } + break; + case 361608891: + default: + if (this.isEnabled()) { + var3 = 1100304335; + } else { + var3 = -354205417; + } + break; + case 525509476: + if (mc.options.getCameraType().isFirstPerson()) { + var3 = 550071125; + } else { + var3 = 152584235; + } + break; + case 550071125: + return; + case 568612795: + this.renderShaderFill(var2.position(), mc.player.getBbHeight() * this.heightSetting.getCurrent()); + return; + case 671803291: + return; + case 1100304335: + if (mc.player != null) { + var3 = 1537137772; + } else { + var3 = -354205417; + } + break; + case 1537137772: + if (mc.level == null) { + var3 = -354205417; + } else { + var3 = -906982260; + } + } + } + } + + private void drawEdge(SubmitNodeCollector var1, PoseStack var2, RenderType var3, Vec3 var4, float var5, float var6) { + var1.submitCustomGeometry( + var2, + var3, + (var4x, var5x) -> { + int var6x = 0; + Vec3 var7 = null; + Vec3 var8 = null; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = 1338483740; + + while (true) { + switch (var13) { + case -878371321: + if (var6x < this.points.size() - ((-131390996 ^ 131390997) + ((-131390996 & 131390997) << 1))) { + var13 = 1080973252; + } else { + var13 = 2009211840; + } + break; + case 267352220: + var5x.addVertex(var4x, (float)var7.x, (float)var7.y, (float)var7.z) + .setColor(this.color(var6x, 1.0F)) + .setNormal(var4x, var9, var10, var11) + .setLineWidth(var6); + var5x.addVertex(var4x, (float)var8.x, (float)var8.y, (float)var8.z) + .setColor(this.color(var6x + 1, 1.0F)) + .setNormal(var4x, var9, var10, var11) + .setLineWidth(var6); + var6x++; + var13 = -878371321; + break; + case 1080973252: + var7 = this.points.get(var6x).pos.subtract(var4).add(0.0, var5, 0.0); + var8 = this.points.get(var6x + 1).pos.subtract(var4).add(0.0, var5, 0.0); + var9 = (float)(var8.x - var7.x); + var10 = (float)(var8.y - var7.y); + var11 = (float)(var8.z - var7.z); + var12 = Mth.sqrt(var9 * var9 + var10 * var10 + var11 * var11); + if (var12 != 0.0F) { + var13 = 1135230612; + } else { + var13 = 267352220; + } + break; + case 1135230612: + var9 /= var12; + var10 /= var12; + var11 /= var12; + var13 = 267352220; + break; + case 1338483740: + default: + var6x = 0; + var13 = -878371321; + break; + case 2009211840: + return; + } + } + } + ); + } + + private void renderShaderFill(Vec3 var1, float var2) { + atd var3 = null; + int var4 = 0; + int var5 = 0; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + GpuTextureView var10 = null; + int var11 = 0; + int var12 = 0; + BufferBuilder var13 = null; + GpuTextureView var15 = null; + int var16 = 0; + int var14 = -970237241; + + while (true) { + switch (var14) { + case -2115620358: + var15 = atb.sceneSnapshot(); + var14 = 225250044; + break; + case -1787116483: + var3.use(); + var3.setResolution(mc.getWindow().getWidth(), mc.getWindow().getHeight()); + var3.setTime(var9); + var3.setTintColor(var6, var7, var8); + var3.setFade(this.shaderAlpha.getCurrent()); + if (!this.shaderType.is("LivingArmor")) { + var14 = -1002638118; + } else { + var14 = 1073749862; + } + break; + case -1002638118: + if (this.shaderType.is("AlienNebula")) { + var14 = 1073749862; + } else { + var14 = 1941099948; + } + break; + case -970237241: + default: + var3 = this.shaderProgram(); + if (var3 == null) { + var14 = -398356052; + } else { + var14 = 1368840171; + } + break; + case -705913582: + return; + case -446812432: + atd.bindTexture(var10, (boolean)((((338091457 ^ -338091456) + ((338091457 & -338091456) << 1))) != 0)); + var14 = 1929841283; + break; + case -398356052: + return; + case -84859701: + if (var4 != 0) { + var14 = 1091180956; + } else { + var14 = 275093804; + } + break; + case 56989150: + if (var12 < var11) { + var14 = -1787116483; + } else { + var14 = -705913582; + } + break; + case 225250044: + var10 = var15; + if (var4 != 0) { + var14 = 2140464192; + } else { + var14 = -84859701; + } + break; + case 275093804: + var16 = 2; + var14 = 315159298; + break; + case 315159298: + var11 = var16; + var12 = 0; + var14 = 56989150; + break; + case 409455064: + arj.drawCurrent(var13); + var12++; + var14 = 56989150; + break; + case 608339113: + this.emitRibbon(var13, var1, var2); + var14 = 409455064; + break; + case 647235440: + return; + case 681802723: + this.emitGlassRibbon(var13, var1, var2); + var14 = 409455064; + break; + case 1073749862: + var3.setCameraPos((float)var1.x, (float)var1.y, (float)var1.z); + var14 = 1941099948; + break; + case 1091180956: + var16 = 1; + var14 = 315159298; + break; + case 1368840171: + var4 = (this.shaderType.is("LiquidGlass")) ? 1 : 0; + var5 = this.shaderTintColor(); + var6 = (var5 >> (-276699958 | 276699974) + (-276699958 & 276699974) & (1999699367 | -1999699112) + (1999699367 & -1999699112)) / 255.0F; + var7 = (var5 >> (-169762398 ^ 169762406) + ((-169762398 & 169762406) << 1) & (-582553655 | 582553910) + (-582553655 & 582553910)) / 255.0F; + var8 = (var5 & (1544758407 | -1544758152) + (1544758407 & -1544758152)) / 255.0F; + var9 = (float)(System.currentTimeMillis() % ((-8234073919172397234L | 8234073919172497234L) + (-8234073919172397234L & 8234073919172497234L))) + / 1000.0F + * this.shaderSpeed.getCurrent(); + if (var4 != 0) { + var14 = -2115620358; + } else { + var14 = 1469518683; + } + break; + case 1469518683: + var15 = null; + var14 = 225250044; + break; + case 1929841283: + var13 = arj.begin(PrimitiveTopology.QUADS, DefaultVertexFormat.POSITION_COLOR); + if (var4 != 0) { + var14 = 681802723; + } else { + var14 = 608339113; + } + break; + case 1941099948: + arj.setCurrentLayer(arj.positionColor()); + if (var4 != 0) { + var14 = -446812432; + } else { + var14 = 1929841283; + } + break; + case 2140464192: + if (var10 == null) { + var14 = 647235440; + } else { + var14 = -84859701; + } + } + } + } + + private void emitGlassRibbon(BufferBuilder var1, Vec3 var2, float var3) { + int var4 = 0; + float[] var5 = null; + float[] var6 = null; + int var7 = 0; + Vec3 var8 = null; + Vec3 var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = 0; + int var15 = 1803249814; + + while (true) { + switch (var15) { + case -2092302147: + var7++; + var15 = 451804604; + break; + case -1956616954: + if (var14 < (-1950247133 | 1950247136) + (-1950247133 & 1950247136)) { + var15 = -581677507; + } else { + var15 = -2092302147; + } + break; + case -581677507: + var1.addVertex((float)var8.x, (float)var8.y + var5[var14], (float)var8.z).setColor(glassColor(var6[var14], var12, var10)); + var1.addVertex((float)var8.x, (float)var8.y + var5[var14 + 1], (float)var8.z) + .setColor(glassColor(var6[var14 + 1], var12, var10)); + var1.addVertex((float)var9.x, (float)var9.y + var5[var14 + 1], (float)var9.z) + .setColor(glassColor(var6[var14 + 1], var13, var11)); + var1.addVertex((float)var9.x, (float)var9.y + var5[var14], (float)var9.z).setColor(glassColor(var6[var14], var13, var11)); + var14++; + var15 = -1956616954; + break; + case 451804604: + if (var7 < var4 - ((-1554897482 ^ 1554897483) + ((-1554897482 & 1554897483) << 1))) { + var15 = 895944991; + } else { + var15 = 1550570885; + } + break; + case 895944991: + var8 = this.points.get(var7).pos.subtract(var2); + var9 = this.points.get(var7 + 1).pos.subtract(var2); + var10 = Math.min(1.0F, (float)var7 / (var4 - ((-181686035 ^ 181686036) + ((-181686035 & 181686036) << 1))) * 3.0F); + var11 = Math.min( + 1.0F, + (float)(var7 + (2053798016 ^ -2053798015) + ((2053798016 & -2053798015) << 1)) + / (var4 - ((-1698025739 ^ 1698025740) + ((-1698025739 & 1698025740) << 1))) + * 3.0F + ); + var12 = (float)var7 / (var4 - ((-1809696421 ^ 1809696422) + ((-1809696421 & 1809696422) << 1))); + var13 = (float)(var7 + (-487890277 ^ 487890278) + ((-487890277 & 487890278) << 1)) + / (var4 - ((1698372042 ^ -1698372041) + ((1698372042 & -1698372041) << 1))); + var14 = 0; + var15 = -1956616954; + break; + case 1550570885: + return; + case 1803249814: + default: + var4 = this.points.size(); + float[] var10000 = new float[4]; + var10000[0] = 0.02F; + var10000[1] = var3 * 0.22F; + var10000[2] = var3 * 0.78F; + var10000[3] = var3; + var5 = var10000; + var10000 = new float[4]; + var10000[0] = 0.0F; + var10000[1] = 0.22F; + var10000[2] = 0.78F; + var10000[3] = 1.0F; + var6 = var10000; + var7 = 0; + var15 = 451804604; + } + } + } + + private static int glassColor(float var0, float var1, float var2) { + int var3 = Mth.clamp( + Math.round(var0 * 255.0F), 0, (174177647 ^ -174177392) + ((174177647 & -174177392) << 1) + ); + int var4 = Mth.clamp( + Math.round(var1 * 255.0F), 0, (1361784271 ^ -1361784016) + ((1361784271 & -1361784016) << 1) + ); + int var5 = Mth.clamp(Math.round(var2 * 255.0F), 0, (-763415785 | 763416040) + (-763415785 & 763416040)); + return var5 << (1642689427 ^ -1642689403) + ((1642689427 & -1642689403) << 1) + | var3 << (649579300 | -649579284) + (649579300 & -649579284) + | var4 << 255; + } + + private void emitRibbon(BufferBuilder var1, Vec3 var2, float var3) { + int var4 = 0; + float[] var5 = null; + float[] var6 = null; + int var7 = 0; + Vec3 var8 = null; + Vec3 var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = 0; + int var13 = -815332725; + + while (true) { + switch (var13) { + case -1999345576: + var7++; + var13 = -654930327; + break; + case -1524683315: + var8 = this.points.get(var7).pos.subtract(var2); + var9 = this.points.get(var7 + 1).pos.subtract(var2); + var10 = Math.min(1.0F, (float)var7 / (var4 - ((-1933938039 ^ 1933938040) + ((-1933938039 & 1933938040) << 1))) * 3.0F); + var11 = Math.min( + 1.0F, + (float)(var7 + (1209764160 ^ -1209764159) + ((1209764160 & -1209764159) << 1)) + / (var4 - ((588459314 ^ -588459313) + ((588459314 & -588459313) << 1))) + * 3.0F + ); + var12 = 0; + var13 = 1635214201; + break; + case -993790591: + return; + case -815332725: + default: + var4 = this.points.size(); + float[] var10000 = new float[4]; + var10000[0] = 0.02F; + var10000[1] = var3 * 0.22F; + var10000[2] = var3 * 0.78F; + var10000[3] = var3; + var5 = var10000; + var10000 = new float[4]; + var10000[0] = 0.0F; + var10000[1] = 1.0F; + var10000[2] = 1.0F; + var10000[3] = 0.0F; + var6 = var10000; + var7 = 0; + var13 = -654930327; + break; + case -654930327: + if (var7 < var4 - ((-134191540 ^ 134191541) + ((-134191540 & 134191541) << 1))) { + var13 = -1524683315; + } else { + var13 = -993790591; + } + break; + case 289361374: + var1.addVertex((float)var8.x, (float)var8.y + var5[var12], (float)var8.z).setColor(whiteAlpha(var10 * var6[var12])); + var1.addVertex((float)var8.x, (float)var8.y + var5[var12 + 1], (float)var8.z) + .setColor(whiteAlpha(var10 * var6[var12 + 1])); + var1.addVertex((float)var9.x, (float)var9.y + var5[var12 + 1], (float)var9.z) + .setColor(whiteAlpha(var11 * var6[var12 + 1])); + var1.addVertex((float)var9.x, (float)var9.y + var5[var12], (float)var9.z).setColor(whiteAlpha(var11 * var6[var12])); + var12++; + var13 = 1635214201; + break; + case 1635214201: + if (var12 < (1505032204 ^ -1505032201) + ((1505032204 & -1505032201) << 1)) { + var13 = 289361374; + } else { + var13 = -1999345576; + } + } + } + } + + private static int whiteAlpha(float var0) { + return Mth.clamp( + Math.round(var0 * 255.0F), + 0, + (-1181214751 ^ 1181215006) + ((-1181214751 & 1181215006) << 1) + ) + << (-1294681275 | 1294681299) + (-1294681275 & 1294681299) + | (783787454 ^ -767010239) + ((783787454 & -767010239) << 1); + } + + private atd shaderProgram() { + String var1 = this.shaderType.get(); + int var2 = -1; + switch (var1.hashCode()) { + case -1997372447: + if (var1.equals("Matrix")) { + var2 = 4; + } + break; + case -1901891230: + if (var1.equals("Plasma")) { + var2 = 2; + } + break; + case -1286538368: + if (var1.equals("LiquidGlass")) { + var2 = 3; + } + break; + case -949676042: + if (var1.equals("LivingArmor")) { + var2 = 5; + } + break; + case -289774394: + if (var1.equals("AlienNebula")) { + var2 = 6; + } + break; + case 86836: + if (var1.equals("Web")) { + var2 = 1; + } + break; + case 2024198218: + if (var1.equals("Cosmos")) { + var2 = 0; + } + } + return switch (var2) { + case 0 -> atb.worldStarfieldProgram; + case 1 -> atb.worldCobwebProgram; + case 2 -> atb.worldPlasmaProgram; + case 3 -> atb.trailGlassProgram; + case 4 -> atb.worldMatrixProgram; + case 5 -> atb.worldLivingArmorProgram; + case 6 -> atb.worldAlienNebulaProgram; + default -> atb.worldNebulaProgram; + }; + } + + private int shaderTintColor() { + String var2 = this.shaderColorSetting.get(); + int var3 = -1; + switch (var2.hashCode()) { + case -1656737386: + if (var2.equals("Rainbow")) { + var3 = 1; + } + break; + case 2029746065: + if (var2.equals("Custom")) { + var3 = 0; + } + } + int var1 = switch (var3) { + case 0 -> this.shaderCustomColor.getIntColor(); + case 1 -> asu.fromHSB( + (float)(System.currentTimeMillis() % ((-1057004782512890139L | 1057004782512894139L) + (-1057004782512890139L & 1057004782512894139L))) + / 4000.0F, + 0.85F, + 1.0F + ) + .getRGB(); + default -> bz.getInstance().getThemeManager().getCurrentTheme().getColor().getRGB(); + }; + return var1 & 16777215; + } + + private int tintColor() { + String var2 = this.colorSetting.get(); + int var3 = -1; + switch (var2.hashCode()) { + case -1656737386: + if (var2.equals("Rainbow")) { + var3 = 1; + } + break; + case 2029746065: + if (var2.equals("Custom")) { + var3 = 0; + } + } + int var1 = switch (var3) { + case 0 -> this.customColorSetting.getIntColor(); + case 1 -> asu.fromHSB( + (float)(System.currentTimeMillis() % ((621464071079206230L ^ -621464071079202230L) + ((621464071079206230L & -621464071079202230L) << 1))) + / 4000.0F, + 0.85F, + 1.0F + ) + .getRGB(); + default -> bz.getInstance().getThemeManager().getCurrentTheme().getColor().getRGB(); + }; + return var1 & 16777215; + } + + private int color(int var1, float var2) { + int var3 = this.points.size(); + float var4 = Math.min((float)(var1 + (525590724 ^ -525590723) + ((525590724 & -525590723) << 1)) / var3, 1.0F) * var2; + String var6 = this.colorSetting.get(); + int var7 = -1; + switch (var6.hashCode()) { + case -1656737386: + if (var6.equals("Rainbow")) { + var7 = 0; + } + break; + case 2029746065: + if (var6.equals("Custom")) { + var7 = 1; + } + } + asu var5 = switch (var7) { + case 0 -> asu.fromHSB( + (float)(System.currentTimeMillis() % ((7955628948543024710L ^ -7955628948543022710L) + ((7955628948543024710L & -7955628948543022710L) << 1))) + / 2000.0F + + (float)var1 / var3, + 0.85F, + 1.0F + ); + case 1 -> this.customColorSetting.getColor(1.0F); + default -> bz.getInstance().getThemeManager().getClientColor(var1 * ((-1819606883 ^ 1819606887) + ((-1819606883 & 1819606887) << 1))); + }; + return var5.mulAlpha(Mth.clamp(var4, 0.0F, 1.0F)).getRGB(); + } +} diff --git a/src/main/java/defpackage/wk.java b/src/main/java/defpackage/wk.java new file mode 100644 index 0000000..c7ca0e3 --- /dev/null +++ b/src/main/java/defpackage/wk.java @@ -0,0 +1,450 @@ +package defpackage; + +import com.google.gson.JsonObject; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; + +@rn(name = "Waypoints", category = rl.RENDER, description = "In-world waypoint markers, navigation and friend sharing") +public final class wk extends rm { + public static final wk INSTANCE = new wk(); + private static final String STORAGE_KEY = "Waypoints"; + private static final float MARKER_SCALE_MIN = 0.5F; + private static final float MARKER_SCALE_MAX = 2.0F; + private static final float MARKER_SCALE_DEFAULT = 1.0F; + private static final float MARKER_SCALE_STEP = 0.1F; + private static final float QUICK_REACH_MIN = 8.0F; + private static final float QUICK_REACH_MAX = 256.0F; + private static final float QUICK_REACH_DEFAULT = 128.0F; + private static final float QUICK_REACH_STEP = 8.0F; + private static final float MAX_DISTANCE_MIN = 32.0F; + private static final float MAX_DISTANCE_MAX = 2048.0F; + private static final float MAX_DISTANCE_DEFAULT = 512.0F; + private static final float MAX_DISTANCE_STEP = 32.0F; + private static final String NOTIFY_ADDED_TITLE = "Waypoint Added"; + private static final String NOTIFY_LIMIT_TITLE = "Waypoint Limit"; + private static final String NOTIFY_LIMIT_STATUS = "Remove one to add more"; + private static final String NOTIFY_NO_WORLD_TITLE = "No World"; + private static final String NOTIFY_NO_WORLD_STATUS = "Join a world to add waypoints"; + private final ru markers = new ru( + "World Markers", + (boolean)((((1913014228 ^ -1913014227) + ((1913014228 & -1913014227) << 1)) + ) != 0)) + .description( + "Render waypoint markers in the world" + ); + private final ru labels = new ru( + "Marker Labels", + (boolean)(((1)) != 0), + this.markers::isEnabled + ) + .description("Show the waypoint name on its marker"); + private final ru distance = new ru( + "Marker Distance", + (boolean)(((1)) != 0), + this.markers::isEnabled + ) + .description( + "Show the distance to the waypoint on its marker" + ); + private final ru beam = new ru( + "Marker Beam", + (boolean)(((1)) != 0), + this.markers::isEnabled + ) + .description( + "Draw a light beam from the waypoint up into the sky" + ); + private final sm markerScale = new sm( + "Marker Size", 1.0F, 0.5F, 2.0F, 0.1F, this.markers::isEnabled + ) + .description("Scale of the world markers"); + private final sm maxDistance = new sm( + "Max Distance", 512.0F, 32.0F, 2048.0F, 32.0F, this.markers::isEnabled + ) + .description( + "How far a waypoint marker stays visible" + ); + private final ru edgeArrows = new ru( + "Off-screen Arrows", + (boolean)(((1)) != 0), + this.markers::isEnabled + ) + .description( + "Point towards the tracked waypoint when it leaves the screen" + ); + private final ru navigation = new ru( + "Island Navigation", + (boolean)((((-1831271723 ^ 1831271724) + ((-1831271723 & 1831271724) << 1)) + ) != 0)) + .description( + "Show the tracked waypoint on the Dynamic Island" + ); + private final ru shareWithFriends = new ru( + "Share With Friends", + (boolean)((((618809877 ^ -618809876) + ((618809877 & -618809876) << 1)) + ) != 0)) + .description( + "Share newly placed waypoints with your friends by default" + ); + private final ru showFriends = new ru( + "Friend Waypoints", + (boolean)((((-1670298807 ^ 1670298808) + ((-1670298807 & 1670298808) << 1)) + ) != 0)) + .description( + "Render waypoints shared by your friends" + ); + private final sc quickKey = new sc( + "Quick Waypoint", + (169487534 ^ -169487532) + ((169487534 & -169487532) << 1) + ) + .description( + "Drop a waypoint on the block you are looking at" + ); + private final sm quickReach = new sm( + "Quick Reach", 128.0F, 8.0F, 256.0F, 8.0F + ) + .description( + "How far the quick waypoint looks for a block before falling back to your feet" + ); + + private wk() { + super.setToggled((boolean)((((1721295053 ^ -1721295052) + ((1721295053 & -1721295052) << 1))) != 0)); + } + + public boolean showsMarkers() { + return this.markers.isEnabled(); + } + + public boolean showsLabels() { + return this.labels.isEnabled(); + } + + public boolean showsDistance() { + return this.distance.isEnabled(); + } + + public boolean showsBeam() { + return this.beam.isEnabled(); + } + + public float markerScale() { + return this.markerScale.getCurrent(); + } + + public float maxDistance() { + return this.maxDistance.getCurrent(); + } + + public boolean showsEdgeArrows() { + return this.edgeArrows.isEnabled(); + } + + public boolean showsNavigation() { + return this.navigation.isEnabled(); + } + + public boolean sharesWithFriends() { + return this.shareWithFriends.isEnabled(); + } + + public boolean showsFriendWaypoints() { + return this.showFriends.isEnabled(); + } + + public int quickKeyCode() { + return this.quickKey.getKeyCode(); + } + + public void setQuickKeyCode(int var1) { + this.quickKey.setKeyCode(var1); + } + + public String quickKeyName() { + String var1 = null; + String var3 = null; + int var2 = 151778693; + + while (true) { + switch (var2) { + case 151778693: + default: + var1 = this.quickKey.getNameKey(); + if (var1 == null) { + var2 = 198602666; + } else { + var2 = 2075382234; + } + break; + case 198602666: + var3 = ""; + var2 = 1978807688; + break; + case 1978807688: + return var3; + case 2075382234: + var3 = var1; + var2 = 1978807688; + } + } + } + + public float quickReach() { + return this.quickReach.getCurrent(); + } + + private BlockPos quickTarget() { + BlockPos var1 = null; + float var2 = 0.0F; + Vec3 var3 = null; + Object var4 = null; + Vec3 var5 = null; + BlockHitResult var6 = null; + int var7 = -33970717; + + while (true) { + switch (var7) { + case -648420148: + return var1; + case -541809784: + var2 = this.quickReach(); + var3 = mc.player + .getEyePosition(mc.getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((347741566 ^ -347741565) + ((347741566 & -347741565) << 1))) != 0))); + var4 = mc.player.getViewVector(mc.getDeltaTracker().getGameTimeDeltaPartialTick((boolean)((((-357200637 | 357200638) + (-357200637 & 357200638))) != 0))); + var5 = var3.add(((Vec3)var4).x * var2, ((Vec3)var4).y * var2, ((Vec3)var4).z * var2); + var6 = mc.level.clip(new ClipContext(var3, var5, Block.OUTLINE, Fluid.NONE, mc.player)); + if (var6 != null) { + var7 = 146737343; + } else { + var7 = -648420148; + } + break; + case -474165568: + return var6.getBlockPos().relative(var6.getDirection()).immutable(); + case -33970717: + default: + var1 = mc.player.blockPosition(); + if (mc.level == null) { + var7 = 1522473852; + } else { + var7 = -541809784; + } + break; + case 146737343: + if (var6.getType() != Type.BLOCK) { + var7 = -648420148; + } else { + var7 = -474165568; + } + break; + case 1522473852: + return var1; + } + } + } + + public void placeQuickWaypoint() { + avx var1 = null; + int var2 = 760641993; + + while (true) { + switch (var2) { + case -1848553775: + le.getInstance() + .addCustomNotification( + avy.PIN.getGlyph(), + "No World", + "Join a world to add waypoints" + ); + return; + case -975231496: + if (mc.player != null) { + var2 = 1978843680; + } else { + var2 = -1848553775; + } + break; + case 760641993: + default: + if (!this.isEnabled()) { + var2 = 1978987475; + } else { + var2 = -975231496; + } + break; + case 1185903787: + avz.markDirty(); + le.getInstance() + .addCustomNotification( + avy.PIN.getGlyph(), "Waypoint Added", var1.name() + ); + return; + case 1961991688: + le.getInstance() + .addCustomNotification( + avy.PIN.getGlyph(), + "Waypoint Limit", + "Remove one to add more" + ); + return; + case 1978843680: + if (mc.level == null) { + var2 = -1848553775; + } else { + var2 = 2015907071; + } + break; + case 1978987475: + return; + case 2015907071: + var1 = awb.getInstance().quickAdd(this.quickTarget(), this.sharesWithFriends()); + if (var1 == null) { + var2 = 1961991688; + } else { + var2 = 1185903787; + } + } + } + } + + @k + public void onKey(er var1) { + int var2 = 0; + int var3 = -1661600828; + + while (true) { + switch (var3) { + case -1940827384: + if (var1.getKeyCode() != var2) { + var3 = 562045098; + } else { + var3 = -984567356; + } + break; + case -1665717581: + return; + case -1661600828: + default: + if (var1.getAction() == (-1837985967 | 1837985968) + (-1837985967 & 1837985968)) { + var3 = 1722340328; + } else { + var3 = -1665717581; + } + break; + case -984567356: + this.placeQuickWaypoint(); + return; + case -192288158: + if (mc.gui.screen() != null) { + var3 = -1665717581; + } else { + var3 = 1148951489; + } + break; + case 562045098: + return; + case 1148951489: + var2 = this.quickKeyCode(); + if (var2 != (-2001696312 ^ 2001696311) + ((-2001696312 & 2001696311) << 1)) { + var3 = -1940827384; + } else { + var3 = 562045098; + } + break; + case 1722340328: + if (this.isEnabled()) { + var3 = -192288158; + } else { + var3 = -1665717581; + } + } + } + } + + @k + public void onRender(fs var1) { + int var2 = -407944100; + + while (true) { + switch (var2) { + case -1693566921: + awa.getInstance().render(var1.getContext(), var1.getTickDelta()); + return; + case -691471429: + return; + case -407944100: + default: + if (mc.level != null) { + var2 = 1756845786; + } else { + var2 = -691471429; + } + break; + case 1247086844: + if (!this.showsMarkers()) { + var2 = -691471429; + } else { + var2 = -1693566921; + } + break; + case 1756845786: + if (mc.player != null) { + var2 = 1247086844; + } else { + var2 = -691471429; + } + } + } + } + + @Override + public JsonObject save() { + JsonObject var1 = super.save(); + JsonObject var2 = new JsonObject(); + awb.getInstance().save(var2); + var1.add("Waypoints", var2); + return var1; + } + + @Override + public void load(JsonObject var1) { + int var2 = -869132859; + + while (true) { + switch (var2) { + case -1954955164: + awb.getInstance() + .load(var1.getAsJsonObject("Waypoints")); + return; + case -1064907232: + if (var1.has("Waypoints")) { + var2 = 490182588; + } else { + var2 = -93755199; + } + break; + case -869132859: + default: + super.load(var1); + if (var1 != null) { + var2 = -1064907232; + } else { + var2 = -93755199; + } + break; + case -93755199: + return; + case 490182588: + if (!var1.get("Waypoints").isJsonObject()) { + var2 = -93755199; + } else { + var2 = -1954955164; + } + } + } + } +} diff --git a/src/main/java/defpackage/wl.java b/src/main/java/defpackage/wl.java new file mode 100644 index 0000000..f5f6508 --- /dev/null +++ b/src/main/java/defpackage/wl.java @@ -0,0 +1,25 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:wl.class */ +/* synthetic */ class wl { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$media$lyrics$whisper$WhisperTranscriber$State = new int[la.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$media$lyrics$whisper$WhisperTranscriber$State[la.DOWNLOADING.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$media$lyrics$whisper$WhisperTranscriber$State[la.LOADING.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$base$media$lyrics$whisper$WhisperTranscriber$State[la.FAILED.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$base$media$lyrics$whisper$WhisperTranscriber$State[la.UNSUPPORTED_CPU.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + } +} diff --git a/src/main/java/defpackage/wm.java b/src/main/java/defpackage/wm.java new file mode 100644 index 0000000..dbfe20c --- /dev/null +++ b/src/main/java/defpackage/wm.java @@ -0,0 +1,39 @@ +package defpackage; + +final class wm { + wo[] words; + long lineEndMillis; + + wm(wo[] words, long lineEndMillis) { + this.words = words; + this.lineEndMillis = lineEndMillis; + } + + public wo[] words() { + return this.words; + } + public long lineEndMillis() { + return this.lineEndMillis; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof wm that)) { + return false; + } + if (!java.util.Objects.deepEquals(this.words, that.words)) { return false; } + if (this.lineEndMillis != that.lineEndMillis) { return false; } + return true; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(java.util.Arrays.deepHashCode(this.words), this.lineEndMillis); + } + + @Override + public String toString() { + return "wm[" + "words=" + this.words + ", " + "lineEndMillis=" + this.lineEndMillis + "]"; + } + +} diff --git a/src/main/java/defpackage/wn.java b/src/main/java/defpackage/wn.java new file mode 100644 index 0000000..020f6bc --- /dev/null +++ b/src/main/java/defpackage/wn.java @@ -0,0 +1,51 @@ +package defpackage; + +import net.minecraft.world.phys.Vec3; +import org.joml.Vector3f; + +final class wn { + final Vec3 anchor; + final Vector3f right; + final Vector3f down; + final wo[] words; + final long endMillis; + final double bobPhase; + long leaveStartNanos = (-7904959507462648223L | 7904959507462648222L) + (-7904959507462648223L & 7904959507462648222L); + long leaveMillis = (-1121497291749057485L ^ 1121497291749058385L) + ((-1121497291749057485L & 1121497291749058385L) << 1); + + wn(Vec3 var1, Vector3f var2, Vector3f var3, wo[] var4, long var5, double var7) { + this.anchor = var1; + this.right = var2; + this.down = var3; + this.words = var4; + this.endMillis = var5; + this.bobPhase = var7; + } + + boolean leaving() { + int var2 = 0; + int var1 = -1607496842; + + while (true) { + switch (var1) { + case -1607496842: + default: + if (this.leaveStartNanos >= (-7951447706372279982L | 7951447706372279982L) + (-7951447706372279982L & 7951447706372279982L)) { + var1 = 325807486; + } else { + var1 = -811178782; + } + break; + case -1370093042: + return (boolean)((var2) != 0); + case -811178782: + var2 = 0; + var1 = -1370093042; + break; + case 325807486: + var2 = 1; + var1 = -1370093042; + } + } + } +} diff --git a/src/main/java/defpackage/wo.java b/src/main/java/defpackage/wo.java new file mode 100644 index 0000000..f40984e --- /dev/null +++ b/src/main/java/defpackage/wo.java @@ -0,0 +1,57 @@ +package defpackage; + +final class wo { + String text; + long revealAtMillis; + long sungMillis; + boolean emphasized; + float seed; + + wo(String text, long revealAtMillis, long sungMillis, boolean emphasized, float seed) { + this.text = text; + this.revealAtMillis = revealAtMillis; + this.sungMillis = sungMillis; + this.emphasized = emphasized; + this.seed = seed; + } + + public String text() { + return this.text; + } + public long revealAtMillis() { + return this.revealAtMillis; + } + public long sungMillis() { + return this.sungMillis; + } + public boolean emphasized() { + return this.emphasized; + } + public float seed() { + return this.seed; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof wo that)) { + return false; + } + if (!java.util.Objects.equals(this.text, that.text)) { return false; } + if (this.revealAtMillis != that.revealAtMillis) { return false; } + if (this.sungMillis != that.sungMillis) { return false; } + if (this.emphasized != that.emphasized) { return false; } + if (Float.compare(this.seed, that.seed) != 0) { return false; } + return true; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(this.text, this.revealAtMillis, this.sungMillis, this.emphasized, this.seed); + } + + @Override + public String toString() { + return "wo[" + "text=" + this.text + ", " + "revealAtMillis=" + this.revealAtMillis + ", " + "sungMillis=" + this.sungMillis + ", " + "emphasized=" + this.emphasized + ", " + "seed=" + this.seed + "]"; + } + +} diff --git a/src/main/java/defpackage/wp.java b/src/main/java/defpackage/wp.java new file mode 100644 index 0000000..9b2e964 --- /dev/null +++ b/src/main/java/defpackage/wp.java @@ -0,0 +1,1428 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.Random; +import java.util.function.Supplier; +import net.minecraft.client.Camera; +import net.minecraft.util.Mth; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.ClipContext.Block; +import net.minecraft.world.level.ClipContext.Fluid; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.HitResult.Type; +import org.joml.Matrix4f; +import org.joml.Quaternionf; +import org.joml.Vector3f; +import org.joml.Vector4f; + +@rn(name = "WorldLyrics", description = "Lyrics of the playing song appear in the world", category = rl.RENDER) +public final class wp extends rm { + private static final int MAX_PHRASES = 10; + private static final int MIN_EMPHASIS_LENGTH = 4; + private static final int ALPHA_SHIFT = 24; + private static final int RGB_MASK = 16777215; + private static final int OPAQUE = 255; + private static final float BASE_FONT_SIZE = 22.0F; + private static final float EMPHASIS_SCALE = 1.4F; + private static final float WORD_GAP_RATIO = 0.28F; + private static final float EMPHASIS_LIFT_RATIO = 0.18F; + private static final float WORLD_LINE_HEIGHT = 0.6F; + private static final float REFERENCE_DISTANCE = 7.0F; + private static final float MIN_DISTANCE = 1.8F; + private static final float WALL_MARGIN = 0.6F; + private static final double RUN_SPEED_PER_TICK = 0.24; + private static final double MIN_HEADING_SPEED = 0.05; + private static final double TICKS_PER_SECOND = 20.0; + private static final double ROADSIDE_LEAD_SECONDS = 2.4; + private static final double ROADSIDE_BASE_AHEAD = 4.0; + private static final double ROADSIDE_MIN_AHEAD = 5.0; + private static final double ROADSIDE_MAX_AHEAD = 28.0; + private static final double ROADSIDE_LATERAL = 2.6; + private static final float ROADSIDE_LATERAL_JITTER = 0.25F; + private static final double ROADSIDE_MIN_LIFT = -0.4; + private static final double ROADSIDE_MAX_LIFT = 1.1; + private static final float ROADSIDE_TWIST_SCALE = 0.35F; + private static final int MAX_CHUNK_WORDS = 2; + private static final int MAX_CHUNK_CHARS = 12; + private static final int VISIBLE_CHUNKS = 2; + private static final long CHUNK_LEAD_MILLIS = 300L; + private static final int MAX_FIT_ATTEMPTS = 8; + private static final double FIT_PULL = 0.3; + private static final float FIT_SHRINK = 0.82F; + private static final float FIT_TOP_RATIO = 0.95F; + private static final float FIT_BOTTOM_RATIO = 0.7F; + private static final float SCREEN_MARGIN_X = 0.08F; + private static final float SCREEN_MARGIN_Y = 0.1F; + private static final float VISIBLE_MARGIN = 0.06F; + private static final long OFFSCREEN_LEAVE_MILLIS = 250L; + private static final float SCREEN_CENTER = 0.5F; + private static final float SCREEN_SLOT_JITTER = 0.04F; + private static final float[][] SCREEN_SLOTS; + private static final float MAX_PLANE_YAW_DEGREES = 28.0F; + private static final float MAX_PLANE_PITCH_DEGREES = 12.0F; + private static final float MAX_PLANE_ROLL_DEGREES = 7.0F; + private static final float MIN_BASIS_LENGTH = 1.0E-4F; + private static final Vector3f WORLD_UP = new Vector3f(0.0F, 1.0F, 0.0F); + private static final float DEPTH_JITTER = 0.25F; + private static final float BOB_AMPLITUDE = 0.06F; + private static final double BOB_PERIOD_MILLIS = 900.0; + private static final float REVEAL_WINDOW_RATIO = 0.7F; + private static final long MAX_WORD_STEP_MILLIS = 420L; + private static final long WORD_REVEAL_MILLIS = 360L; + private static final long WORD_REVEAL_LEAD_MILLIS = 250L; + private static final long LINE_LEAD_MILLIS = 300L; + private static final long LEAVE_MILLIS = 900L; + private static final long HOLD_AFTER_LINE_MILLIS = 350L; + private static final double NANOS_PER_MILLI = 1000000.0; + private static final double SHADER_TIME_PERIOD_MILLIS = 60000.0; + private static final double MILLIS_PER_SECOND = 1000.0; + private static final float GLOW_RADIUS = 1.6F; + private static final float GLOW_STRENGTH = 0.55F; + private static final float SHADOW_STRENGTH = 0.8F; + private static final float BLOOM_SPREAD = 2.5F; + private static final int QUIET_BLOOM_ALPHA = 112; + private static final long MAX_LAST_WORD_MILLIS = 900L; + private static final long MIN_WORD_MILLIS = 120L; + private static final int SHADOW_RGB = 0; + private static final String WORD_SPLIT = "\\s+"; + private static final long MIN_LIVE_LINE_MILLIS = 2200L; + private static final long EMPTY_TRACK_GRACE_NANOS = 3000000000L; + private static final int MIN_TRANSCRIPT_LINES = 4; + private static final float STATUS_FONT_SIZE = 8.0F; + private static final float STATUS_BOTTOM_OFFSET = 62.0F; + private static final int STATUS_COLOR = -788529153; + private static final float PERCENT = 100.0F; + private static final String LANGUAGE_AUTO = "Auto"; + private static final String LANGUAGE_RUSSIAN = "Russian"; + private static final String LANGUAGE_ENGLISH = "English"; + private static final String CODE_AUTO = "auto"; + private static final String CODE_RUSSIAN = "ru"; + private static final String CODE_ENGLISH = "en"; + private static final String STATUS_DOWNLOADING = "Whisper: downloading model %d%%"; + private static final String STATUS_LOADING = "Whisper: loading model"; + private static final String STATUS_FAILED = "Whisper failed to start, see log"; + private static final String STATUS_UNSUPPORTED_CPU = "Speech recognition needs a CPU with AVX2"; + private static final String STATUS_UNSUPPORTED = "Speech recognition needs Windows or macOS 13+"; + private static final String STATUS_PERMISSION = "Allow Screen & System Audio Recording for Minecraft in System Settings"; + private final sm distanceSetting = new sm("Distance", 7.0F, 3.0F, 14.0F, 0.5F) + .description( + "How far from you the words appear" + ); + private final sm sizeSetting = new sm("Size", 1.0F, 0.5F, 2.0F, 0.05F) + .description("Text size"); + private final sm scatterSetting = new sm("Scatter", 0.7F, 0.0F, 1.0F, 0.05F) + .description( + "How widely lines are spread around your view" + ); + private final sm offsetSetting = new sm("Sync offset", 0.0F, -1500.0F, 1500.0F, 50.0F) + .description( + "Shift lyrics earlier or later, in milliseconds" + ); + private final ru roadsideSetting = new ru( + "Roadside", + "While running, lines appear ahead on the left and right of your path", + (boolean)((((-75748311 ^ 75748312) + ((-75748311 & 75748312) << 1)) + ) != 0)); + private final ru glowSetting = new ru( + "Glow", + "Soft glow around the letters", + (boolean)((((67805019 | -67805018) + (67805019 & -67805018)) + ) != 0)); + private final sm glowStrengthSetting = new sm( + "Glow strength", + 0.85F, + 0.1F, + 1.0F, + 0.05F, + this.glowSetting::isEnabled + ) + .description( + "Brightness of the bloom around the words" + ); + private final ru shadowSetting = new ru( + "Shadow", + "Soft dark backdrop for bright skies", + (boolean)((((1573993918 ^ -1573993917) + ((1573993918 & -1573993917) << 1)) + ) != 0)); + private final ru recognizeSetting = new ru( + "Recognize", + "Recognize the words with Whisper when no lyrics are found", + (boolean)((((-1489379159 ^ 1489379159) + ((-1489379159 & 1489379159) << 1)) + ) != 0)); + private final sg modelSetting; + private final sg languageSetting; + private final rx textColor; + private final rx accentColor; + public static final wp INSTANCE = new wp(); + private final List phrases; + private final Random random; + private final ha projector; + private final List pendingChunks; + private final Vector3f fitRight; + private final Vector3f fitDown; + private final Vector3f fitScreen; + private int lastScreenSlot; + private final asw bloom; + private final List transcript; + private String trackKey; + private int lineIndex; + private int roadsideCounter; + private long emptySinceNanos; + private long lastSegment; + private ge statusFont; + + private wp() { + String var10003 = "Whisper model"; + Supplier var10004 = this.recognizeSetting::isEnabled; + String[] var10005 = new String[2]; + var10005[0] = kx.BASE.label(); + var10005[1] = kx.SMALL.label(); + this.modelSetting = new sg(var10003, var10004, var10005) + .describe(kx.BASE.label(), "60 MB, fast") + .describe( + kx.SMALL.label(), "190 MB, more accurate, heavier on CPU" + ); + var10003 = "Language"; + var10004 = this.recognizeSetting::isEnabled; + var10005 = new String[3]; + var10005[0] = "Auto"; + var10005[1] = "Russian"; + var10005[2] = "English"; + this.languageSetting = new sg(var10003, var10004, var10005); + this.textColor = new rx( + "Text", + new asu( + 255, + 255, + 255, + (943964796 | -943964541) + (943964796 & -943964541) + ) + ) + .description("Color of the words"); + this.accentColor = new rx( + "Accent", + new asu( + 150, + 96, + 255, + (58648030 ^ -58647775) + ((58648030 & -58647775) << 1) + ) + ) + .description( + "Color of the dissolve edge, shimmer and glow" + ); + this.phrases = new ArrayList<>(11); + this.random = new Random(); + this.projector = new ha(); + this.pendingChunks = new ArrayList<>(); + this.fitRight = new Vector3f(); + this.fitDown = new Vector3f(); + this.fitScreen = new Vector3f(); + this.lastScreenSlot = -1; + this.bloom = new asw("evo_lyrics_bloom"); + this.transcript = new ArrayList<>(); + this.trackKey = ""; + this.lineIndex = -1; + this.emptySinceNanos = (-6973399144047934407L ^ 6973399144047934406L) + ((-6973399144047934407L & 6973399144047934406L) << 1); + } + + @Override + public void onDisable() { + super.onDisable(); + this.flushTranscript(); + this.phrases.clear(); + this.pendingChunks.clear(); + this.trackKey = ""; + this.lineIndex = -1; + } + + @k + public void onRender(fs var1) { + if (this.isEnabled() && mc.player != null && mc.level != null) { + iz var2 = iz.getInstance(); + if (var2.isSupported()) { + var2.requestPreciseUpdates(); + jh var3 = var2.getSnapshot(); + long var4 = System.nanoTime(); + long var6 = var2.getInterpolatedPositionMillis() + (long)this.offsetSetting.getCurrent(); + this.projector + .setFrame( + auk.getLastWorldSpaceMatrix(), + auk.getLastProjMat(), + arb.toMatrix4f(var1.getContext().pose()), + mc.getWindow().getGuiScaledWidth(), + mc.getWindow().getGuiScaledHeight() + ); + kj var8 = kl.getInstance().lyricsFor(var3); + this.advance(var3, var8 != null && var8.found() ? var8.lyrics() : null, var6, var4); + int var9 = var8 != null && !var8.found() && this.recognizeSetting.isEnabled() && var3.hasTrack() && var3.playing() + ? 1: 0; + if (var9 != 0) { + this.recognize(var3, var6, var4); + this.renderStatus(var1); + } + + this.releaseChunks(var6, var4); + if (!this.phrases.isEmpty()) { + this.render(var1, var6, var4); + } + } + } + } + + private void recognize(jh var1, long var2, long var4) { + lb var6 = null; + kv var7 = null; + long var8 = (405242065937648390L ^ -405242065937648390L) + ((405242065937648390L & -405242065937648390L) << 1); + long var10 = (5798481448192489443L | -5798481448192489443L) + (5798481448192489443L & -5798481448192489443L); + long var12 = (4761545657088115891L ^ -4761545657088115891L) + ((4761545657088115891L & -4761545657088115891L) << 1); + int var14 = 110391494; + + while (true) { + switch (var14) { + case -2144315715: + return; + case -1311719667: + if ((var7 = var6.poll(this.lastSegment)) != null) { + var14 = -1279929569; + } else { + var14 = -2144315715; + } + break; + case -1296139178: + return; + case -1279929569: + this.lastSegment = var7.sequence(); + if (!var7.trackKey().equals(this.trackKey)) { + var14 = 1432287716; + } else { + var14 = 853983231; + } + break; + case -604469288: + var6 = lb.getInstance(); + var6.request(var1.trackKey(), kx.byLabel(this.modelSetting.get()), this.languageCode()); + var14 = -1311719667; + break; + case -390736254: + this.transcript + .add( + new kb( + var8, + Math.max(var10, var8 + (-8504228634680500606L | 8504228634680500607L) + (-8504228634680500606L & 8504228634680500607L)), + var7.text() + ) + ); + var14 = 255773900; + break; + case 110391494: + default: + if (!in.getInstance().isSupported()) { + var14 = -1296139178; + } else { + var14 = -604469288; + } + break; + case 255773900: + var12 = Math.max(var10 - var8, (-5222640700255681455L ^ 5222640700255683655L) + ((-5222640700255681455L & 5222640700255683655L) << 1)); + this.startLine(new kb(var2, var2 + var12, var7.text())); + var14 = -1311719667; + break; + case 853983231: + var8 = var2 - (long)((var4 - var7.startNanos()) / 1000000.0); + var10 = var2 - (long)((var4 - var7.endNanos()) / 1000000.0); + if (var8 >= (7363319513011302708L | -7363319513011302708L) + (7363319513011302708L & -7363319513011302708L)) { + var14 = -390736254; + } else { + var14 = 255773900; + } + break; + case 1432287716: + var14 = -1311719667; + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private void renderStatus(fs var1) { + String var2; + if (!in.getInstance().isSupported()) { + var2 = "Speech recognition needs Windows or macOS 13+"; + } else if (in.getInstance().isPermissionDenied()) { + var2 = "Allow Screen & System Audio Recording for Minecraft in System Settings"; + } else { + var2 = switch (wl.$SwitchMap$evo$systems$base$media$lyrics$whisper$WhisperTranscriber$State[lb.getInstance().state().ordinal()]) { + case 1 -> { + String var5 = "Whisper: downloading model %d%%"; + Object[] var10001 = new Object[1]; + var10001[0] = Math.round(lb.getInstance().downloadProgress() * 100.0F); + yield String.format(var5, var10001); + } + case 2 -> "Whisper: loading model"; + case 3 -> "Whisper failed to start, see log"; + case 4 -> "Speech recognition needs a CPU with AVX2"; + default -> null; + }; + } + + if (var2 != null) { + if (this.statusFont == null) { + this.statusFont = new ge(gl.MEDIUM, 8.0F); + } + + float var3 = (mc.getWindow().getGuiScaledWidth() - this.statusFont.width(var2)) * 0.5F; + float var4 = mc.getWindow().getGuiScaledHeight() - 62.0F; + var1.getContext().drawText(this.statusFont, var2, var3, var4, (1367363661 ^ 2139074482) + ((1367363661 & 2139074482) << 1)); + } + } + + private String languageCode() { + String var2 = null; + int var1 = -766445116; + + while (true) { + switch (var1) { + case -1679826389: + var2 = "en"; + var1 = 766876185; + break; + case -883017241: + return "ru"; + case -766445116: + default: + if (this.languageSetting.is("Russian")) { + var1 = -883017241; + } else { + var1 = 603902757; + } + break; + case 603902757: + if (this.languageSetting.is("English")) { + var1 = -1679826389; + } else { + var1 = 958677176; + } + break; + case 766876185: + return var2; + case 958677176: + var2 = "auto"; + var1 = 766876185; + } + } + } + + private void flushTranscript() { + ArrayList var1 = null; + ArrayList var2 = null; + int var3 = 0; + kb var4 = null; + long var5 = (-4427863475274398585L ^ 4427863475274398585L) + ((-4427863475274398585L & 4427863475274398585L) << 1); + long var8 = (-4669307882135044667L ^ 4669307882135044667L) + ((-4669307882135044667L & 4669307882135044667L) << 1); + int var7 = 1443365878; + + while (true) { + switch (var7) { + case -1123086309: + if (!this.trackKey.isEmpty()) { + var7 = 2100883946; + } else { + var7 = -184103646; + } + break; + case -1045094602: + var8 = Math.min(var4.endMillis(), ((kb)var1.get(var3 + (2121348391 | -2121348390) + (2121348391 & -2121348390))).startMillis()); + var7 = 589249764; + break; + case -184103646: + this.transcript.clear(); + return; + case 242843244: + var3++; + var7 = 1973597746; + break; + case 589249764: + var5 = var8; + if (var5 > var4.startMillis()) { + var7 = 1600298642; + } else { + var7 = 242843244; + } + break; + case 1063382243: + kl.getInstance().storeTranscript(this.trackKey, new kp(List.copyOf(var2))); + var7 = -184103646; + break; + case 1345784365: + var4 = (kb)var1.get(var3); + if (var3 + (-529056430 ^ 529056431) + ((-529056430 & 529056431) << 1) < var1.size()) { + var7 = -1045094602; + } else { + var7 = 1629431150; + } + break; + case 1443365878: + default: + if (this.transcript.size() >= (809447258 | -809447254) + (809447258 & -809447254)) { + var7 = -1123086309; + } else { + var7 = -184103646; + } + break; + case 1600298642: + var2.add(new kb(var4.startMillis(), var5, var4.text())); + var7 = 242843244; + break; + case 1629431150: + var8 = var4.endMillis(); + var7 = 589249764; + break; + case 1973597746: + if (var3 < var1.size()) { + var7 = 1345784365; + } else { + var7 = 1063382243; + } + break; + case 2100883946: + var1 = new ArrayList<>(this.transcript); + var1.sort(Comparator.comparingLong(kb::startMillis)); + var2 = new ArrayList(var1.size()); + var3 = 0; + var7 = 1973597746; + } + } + } + + private void advance(jh var1, kp var2, long var3, long var5) { + String var7 = var1.hasTrack() ? var1.trackKey() : ""; + if (var7.isEmpty() && !this.trackKey.isEmpty()) { + if (this.emptySinceNanos < (6638017558390479025L ^ -6638017558390479025L) + ((6638017558390479025L & -6638017558390479025L) << 1)) { + this.emptySinceNanos = var5; + } + + if (var5 - this.emptySinceNanos < (2257935897480107913L | -2257935894480107913L) + (2257935897480107913L & -2257935894480107913L)) { + var7 = this.trackKey; + } + } else { + this.emptySinceNanos = (-6477000374097083843L | 6477000374097083842L) + (-6477000374097083843L & 6477000374097083842L); + } + + if (!var7.equals(this.trackKey)) { + this.flushTranscript(); + this.trackKey = var7; + this.lineIndex = -1; + this.pendingChunks.clear(); + this.leaveAll(var5); + } + + if (var2 != null && !var2.isEmpty() && var1.hasTrack()) { + int var8 = var2.indexAt(var3 + (-4762119772420192490L | 4762119772420192790L) + (-4762119772420192490L & 4762119772420192790L)); + if (var8 >= 0 && var8 != this.lineIndex) { + this.startLine(var2.lines().get(var8)); + } + + this.lineIndex = var8 >= 0 ? var8 : this.lineIndex; + } + + for (int var10 = this.phrases.size() - (1); var10 >= 0; var10--) { + wn var9 = this.phrases.get(var10); + if (!var9.leaving() && var3 > var9.endMillis + (-2275275958638880872L | 2275275958638881222L) + (-2275275958638880872L & 2275275958638881222L)) { + var9.leaveStartNanos = var5; + } + + if (var9.leaving() && leaveProgress(var9, var5) >= 1.0F) { + this.phrases.remove(var10); + } + } + } + + private void leaveAll(long var1) { + Iterator var3 = null; + wn var4 = null; + int var5 = 1001255554; + + while (true) { + switch (var5) { + case -1955534813: + var4 = (wn)var3.next(); + if (!var4.leaving()) { + var5 = 955337753; + } else { + var5 = -1834436983; + } + break; + case -1834436983: + var5 = 907093421; + break; + case 590672180: + return; + case 907093421: + if (var3.hasNext()) { + var5 = -1955534813; + } else { + var5 = 590672180; + } + break; + case 955337753: + var4.leaveStartNanos = var1; + var5 = -1834436983; + break; + case 1001255554: + default: + var3 = this.phrases.iterator(); + var5 = 907093421; + } + } + } + + private void startLine(kb var1) { + String[] var2 = var1.text().split("\\s+"); + if (var2.length != 0) { + int var3 = 0; + int var4 = -1; + int var5 = 3; + + for (int var6 = 0; var6 < var2.length; var6++) { + var3 += var2[var6].length(); + if (var2[var6].length() > var5) { + var5 = var2[var6].length(); + var4 = var6; + } + } + + long var15 = Math.min( + (long)((float)var1.durationMillis() * 0.7F), + ((-6600142770847862029L | 6600142770847862449L) + (-6600142770847862029L & 6600142770847862449L)) * var2.length + ); + wo[] var8 = new wo[var2.length]; + int var9 = 0; + + for (int var10 = 0; var10 < var2.length; var10++) { + long var11 = var1.startMillis() + var15 * var9 / Math.max(var3, (1428327912 ^ -1428327911) + ((1428327912 & -1428327911) << 1)); + var9 += var2[var10].length(); + long var13 = var10 + (1492623532 | -1492623531) + (1492623532 & -1492623531) < var2.length + ? var1.startMillis() + var15 * var9 / Math.max(var3, (-1199745727 ^ 1199745728) + ((-1199745727 & 1199745728) << 1)) + : Math.min(var1.endMillis(), var11 + (-1119839655320892096L | 1119839655320892996L) + (-1119839655320892096L & 1119839655320892996L)); + var8[var10] = new wo( + var2[var10], + var11, + Math.max(var13 - var11, (2445608980241104694L ^ -2445608980241104574L) + ((2445608980241104694L & -2445608980241104574L) << 1)), + (boolean)(((var10 == var4 ? 1: (-1068493714 | 1068493714) + (-1068493714 & 1068493714))) != 0), + this.random.nextFloat() + ); + } + + this.pendingChunks.clear(); + int var16 = 0; + int var17 = 0; + + for (int var12 = 0; var12 < var8.length; var12++) { + var17 += var8[var12].text.length(); + int var18 = var12 - var16 + (-1590739579 ^ 1590739580) + ((-1590739579 & 1590739580) << 1) + < (1044854963 ^ -1044854961) + ((1044854963 & -1044854961) << 1) + && var17 < (721945803 | -721945791) + (721945803 & -721945791) + && ( + var12 + (-1929679704 | 1929679705) + (-1929679704 & 1929679705) >= var8.length + || var17 + var8[var12 + 1].text.length() + <= (-1436826429 ^ 1436826441) + ((-1436826429 & 1436826441) << 1) + ) + ? 0: 1; + if (var18 != 0 || var12 == var8.length - ((-1313102492 ^ 1313102493) + ((-1313102492 & 1313102493) << 1))) { + this.pendingChunks + .add(new wm(Arrays.copyOfRange(var8, var16, var12 + (639077958 ^ -639077957) + ((639077958 & -639077957) << 1)), var1.endMillis())); + var16 = var12 + 1; + var17 = 0; + } + } + } + } + + private void releaseChunks(long var1, long var3) { + wm var5 = null; + int var6 = 0; + int var7 = 0; + wn var8 = null; + int var9 = 1273164202; + + while (true) { + switch (var9) { + case -1857799641: + return; + case -1811201184: + this.spawnChunk(var5); + var9 = 1273164202; + break; + case -1535122944: + var7--; + var9 = 580992415; + break; + case -1370195192: + if (this.pendingChunks.get(0).words[0] + .revealAtMillis + - ((6250262055345808014L ^ -6250262055345807714L) + ((6250262055345808014L & -6250262055345807714L) << 1)) + <= var1) { + var9 = 900264191; + } else { + var9 = -1857799641; + } + break; + case -741658923: + var8.leaveStartNanos = var3; + var9 = -1535122944; + break; + case 580992415: + if (var7 >= 0) { + var9 = 909874873; + } else { + var9 = -1811201184; + } + break; + case 900264191: + var5 = this.pendingChunks.remove((-963185655 | 963185655) + (-963185655 & 963185655)); + var6 = 0; + var7 = this.phrases.size() - (1); + var9 = 580992415; + break; + case 909874873: + var8 = this.phrases.get(var7); + if (!var8.leaving()) { + var9 = 1292813929; + } else { + var9 = -1535122944; + } + break; + case 1273164202: + default: + if (!this.pendingChunks.isEmpty()) { + var9 = -1370195192; + } else { + var9 = -1857799641; + } + break; + case 1292813929: + if (++var6 >= (-1135493402 ^ 1135493404) + ((-1135493402 & 1135493404) << 1)) { + var9 = -741658923; + } else { + var9 = -1535122944; + } + } + } + } + + private void spawnChunk(wm var1) { + Camera var2 = mc.gameRenderer.mainCamera(); + if (var2 != null) { + float var3 = this.scatterSetting.getCurrent(); + Vec3 var4 = var2.position(); + Vec3 var5 = this.horizontalMotion(); + Vec3 var6; + float var7; + float var8; + if (this.roadsideSetting.isEnabled() && var5 != null) { + double var9 = var5.length(); + Vec3 var11 = var5.normalize(); + int var10000 = this.roadsideCounter; + this.roadsideCounter += 1; + float var12 = var10000 % 2== 0 ? -1.0F : 1.0F; + Vec3 var13 = new Vec3(-var11.z, 0.0, var11.x).scale(var12); + double var14 = Mth.clamp(var9 * 20.0 * 2.4 + 4.0, 5.0, 28.0); + double var16 = 2.6 * (1.0 + this.signedRandom() * 0.25F); + double var18 = Mth.lerp(this.random.nextFloat(), -0.4, 1.1); + Vec3 var20 = var11.scale(var14).add(var13.scale(var16)).add(0.0, var18, 0.0); + var6 = var20.normalize(); + var7 = (float)var20.length(); + var8 = var3 * 0.35F; + } else { + var6 = this.screenDirection(this.nextScreenSlot(var3)); + var7 = this.distanceSetting.getCurrent() * (1.0F + this.signedRandom() * 0.25F * var3); + var8 = var3; + } + + float var21 = this.clearDistance(var4, var6, var7); + float var10 = 0.6F * this.sizeSetting.getCurrent() * (var21 / 7.0F) / 22.0F; + Vector3f var22 = new Vector3f((float)var6.x, (float)var6.y, (float)var6.z); + Vector3f var23 = new Vector3f(var22).cross(WORLD_UP); + if (var23.lengthSquared() < 1.0E-4F) { + var23.set(1.0F, 0.0F, 0.0F); + } + + var23.normalize(); + Vector3f var24 = new Vector3f(var22).cross(var23).normalize(); + Quaternionf var25 = new Quaternionf() + .rotateAxis(this.signedRandom() * 28.0F * var8 * (float) (Math.PI / 180.0), WORLD_UP) + .rotateAxis(this.signedRandom() * 12.0F * var8 * (float) (Math.PI / 180.0), var23) + .rotateAxis(this.signedRandom() * 7.0F * var8 * (float) (Math.PI / 180.0), var22); + Vector3f var15 = var25.transform(new Vector3f(var23)); + Vector3f var26 = var25.transform(new Vector3f(var24)); + float var17 = groupWidth(var1.words) * 0.5F; + Vec3 var27 = var4.add(var6.scale(var21)); + Vec3 var19 = var4.add(Vec3.directionFromRotation(var2.xRot(), var2.yRot()).scale(var21)); + + for (int var28 = 0; + var28 < (-912512264 | 912512272) + (-912512264 & 912512272) && !this.fitsOnScreen(var4, var27, var15, var26, var10, var17); + var28++ + ) { + if (var28 < (1486486171 | -1486486167) + (1486486171 & -1486486167)) { + var27 = var27.lerp(var19, 0.3); + } else { + var10 *= 0.82F; + } + } + + var15.mul(var10); + var26.mul(var10); + this.phrases.add(new wn(var27, var15, var26, var1.words, var1.lineEndMillis, this.random.nextFloat() * (float) (Math.PI * 2))); + + while (this.phrases.size() > (-1502372295 | 1502372305) + (-1502372295 & 1502372305)) { + this.phrases.remove((-1003026209 | 1003026209) + (-1003026209 & 1003026209)); + } + } + } + + private float[] nextScreenSlot(float var1) { + int var2 = 0; + float var3 = 0.0F; + float var4 = 0.0F; + int var5 = 654000738; + + while (true) { + switch (var5) { + case -388587453: + this.lastScreenSlot = var2; + var3 = 0.5F + (SCREEN_SLOTS[var2][0] - 0.5F) * var1 + this.signedRandom() * 0.04F; + var4 = 0.5F + (SCREEN_SLOTS[var2][1] - 0.5F) * var1 + this.signedRandom() * 0.04F; + float[] var10000 = new float[2]; + var10000[0] = var3; + var10000[1] = var4; + return var10000; + case 390915749: + if (SCREEN_SLOTS.length <= (-1040926037 | 1040926038) + (-1040926037 & 1040926038)) { + var5 = -388587453; + } else { + var5 = 654000738; + } + break; + case 654000738: + default: + var2 = this.random.nextInt(SCREEN_SLOTS.length); + if (var2 == this.lastScreenSlot) { + var5 = 390915749; + } else { + var5 = -388587453; + } + } + } + } + + private Vec3 screenDirection(float[] var1) { + Matrix4f var2 = null; + Vector4f var3 = null; + Vec3 var4 = null; + Vec3 var6 = null; + int var5 = -1401995894; + + while (true) { + switch (var5) { + case -2128370719: + var6 = var4.normalize(); + var5 = 1314467760; + break; + case -1401995894: + default: + var2 = new Matrix4f(auk.getLastProjMat()).mul(auk.getLastWorldSpaceMatrix()).invert(); + var3 = new Vector4f( + var1[0] * 2.0F - 1.0F, + 1.0F - var1[1] * 2.0F, + 1.0F, + 1.0F + ); + var2.transform(var3); + var4 = new Vec3(var3.x / var3.w, var3.y / var3.w, var3.z / var3.w); + if (var4.lengthSqr() < 1.0E-4F) { + var5 = 142000538; + } else { + var5 = -2128370719; + } + break; + case 142000538: + var6 = Vec3.directionFromRotation(0.0F, 0.0F); + var5 = 1314467760; + break; + case 1314467760: + return var6; + } + } + } + + private boolean insideScreen(wn var1) { + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + Object var7 = null; + float[][] var8 = null; + int var9 = 0; + int var10 = 0; + Object var11 = null; + int var12 = -543408354; + + while (true) { + switch (var12) { + case -1709339898: + if (var10 < var9) { + var12 = -1131804310; + } else { + var12 = -446395294; + } + break; + case -1131804310: + var11 = var8[var10]; + if (!this.projector + .project( + (float)((Object[])var11)[0], + (float)((Object[])var11)[1], + this.fitScreen + )) { + var12 = -868656830; + } else { + var12 = -993804359; + } + break; + case -993804359: + if (!(this.fitScreen.x < var2 * 0.06F)) { + var12 = 1301704629; + } else { + var12 = 280439654; + } + break; + case -868656830: + return (boolean)(((0)) != 0); + case -774184095: + var10++; + var12 = -1709339898; + break; + case -543408354: + default: + var2 = mc.getWindow().getGuiScaledWidth(); + var3 = mc.getWindow().getGuiScaledHeight(); + var4 = groupWidth(var1.words) * 0.5F; + var5 = -29.259998F; + var6 = 15.4F; + float[][] var10000 = new float[4][]; + int var10002 = 0; + float[] var10003 = new float[2]; + var10003[0] = -var4; + var10003[1] = var5; + var10000[var10002] = var10003; + var10002 = 1; + var10003 = new float[2]; + var10003[0] = var4; + var10003[1] = var5; + var10000[var10002] = var10003; + var10002 = 2; + var10003 = new float[2]; + var10003[0] = -var4; + var10003[1] = var6; + var10000[var10002] = var10003; + var10002 = 3; + var10003 = new float[2]; + var10003[0] = var4; + var10003[1] = var6; + var10000[var10002] = var10003; + var7 = var10000; + var8 = (float[][])var7; + var9 = var8.length; + var10 = 0; + var12 = -1709339898; + break; + case -446395294: + return (boolean)(((1)) != 0); + case -223435321: + if (this.fitScreen.y > var3 * 0.94F) { + var12 = 280439654; + } else { + var12 = -774184095; + } + break; + case 280439654: + return (boolean)(((0)) != 0); + case 1283301409: + if (!(this.fitScreen.y < var3 * 0.06F)) { + var12 = -223435321; + } else { + var12 = 280439654; + } + break; + case 1301704629: + if (!(this.fitScreen.x > var2 * 0.94F)) { + var12 = 1283301409; + } else { + var12 = 280439654; + } + } + } + } + + private boolean fitsOnScreen(Vec3 var1, Vec3 var2, Vector3f var3, Vector3f var4, float var5, float var6) { + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + Object var11 = null; + float[][] var12 = null; + int var13 = 0; + int var14 = 0; + Object var15 = null; + int var16 = 278000477; + + while (true) { + switch (var16) { + case -1837901759: + var14++; + var16 = 1230270668; + break; + case -1728600854: + return (boolean)(((0)) != 0); + case -1444881455: + if (!(this.fitScreen.x > var7 * 0.92F)) { + var16 = 103338915; + } else { + var16 = 1725704681; + } + break; + case 103338915: + if (!(this.fitScreen.y < var8 * 0.1F)) { + var16 = 853830397; + } else { + var16 = 1725704681; + } + break; + case 136493460: + var15 = var12[var14]; + if (!this.projector + .project( + (float)((Object[])var15)[0], + (float)((Object[])var15)[1], + this.fitScreen + )) { + var16 = -1728600854; + } else { + var16 = 691086608; + } + break; + case 278000477: + default: + this.fitRight.set(var3).mul(var5); + this.fitDown.set(var4).mul(var5); + this.projector.setPlane((float)(var2.x - var1.x), (float)(var2.y - var1.y), (float)(var2.z - var1.z), this.fitRight, this.fitDown); + var7 = mc.getWindow().getGuiScaledWidth(); + var8 = mc.getWindow().getGuiScaledHeight(); + var9 = -29.259998F; + var10 = 15.4F; + float[][] var10000 = new float[4][]; + int var10002 = 0; + float[] var10003 = new float[2]; + var10003[0] = -var6; + var10003[1] = var9; + var10000[var10002] = var10003; + var10002 = 1; + var10003 = new float[2]; + var10003[0] = var6; + var10003[1] = var9; + var10000[var10002] = var10003; + var10002 = 2; + var10003 = new float[2]; + var10003[0] = -var6; + var10003[1] = var10; + var10000[var10002] = var10003; + var10002 = 3; + var10003 = new float[2]; + var10003[0] = var6; + var10003[1] = var10; + var10000[var10002] = var10003; + var11 = var10000; + var12 = (float[][])var11; + var13 = var12.length; + var14 = 0; + var16 = 1230270668; + break; + case 691086608: + if (!(this.fitScreen.x < var7 * 0.08F)) { + var16 = -1444881455; + } else { + var16 = 1725704681; + } + break; + case 853830397: + if (this.fitScreen.y > var8 * 0.9F) { + var16 = 1725704681; + } else { + var16 = -1837901759; + } + break; + case 1230270668: + if (var14 < var13) { + var16 = 136493460; + } else { + var16 = 1748394180; + } + break; + case 1725704681: + return (boolean)(((0)) != 0); + case 1748394180: + return (boolean)(((1)) != 0); + } + } + } + + private static float groupWidth(wo[] var0) { + float var1 = 0.0F; + wo[] var2 = null; + int var3 = 0; + int var4 = 0; + Object var5 = null; + int var6 = 1312880023; + + while (true) { + switch (var6) { + case -1745361680: + var5 = var2[var4]; + var1 += fontFor((wo)var5).getWidth(((wo)var5).text, sizeFor((wo)var5, 22.0F)) + 6.16F; + var4++; + var6 = 85130690; + break; + case -1489870887: + return var1 - 6.16F; + case 85130690: + if (var4 < var3) { + var6 = -1745361680; + } else { + var6 = -1489870887; + } + break; + case 1312880023: + default: + var1 = 0.0F; + var2 = var0; + var3 = var2.length; + var4 = 0; + var6 = 85130690; + } + } + } + + private Vec3 horizontalMotion() { + Vec3 var1 = null; + Vec3 var2 = null; + Vec3 var4 = null; + int var3 = -2111530411; + + while (true) { + switch (var3) { + case -2111530411: + default: + var1 = mc.player.getDeltaMovement(); + var2 = new Vec3(var1.x, 0.0, var1.z); + if (var2.lengthSqr() < 0.0576) { + var3 = -241356610; + } else { + var3 = 1927851032; + } + break; + case -2078411438: + var4 = null; + var3 = -947176959; + break; + case -947176959: + return var4; + case -734764405: + var4 = var2; + var3 = -947176959; + break; + case -241356610: + if (!mc.player.isSprinting()) { + var3 = 268439464; + } else { + var3 = 1927851032; + } + break; + case 268439464: + return null; + case 1927851032: + if (var2.lengthSqr() < 0.0025000000000000005) { + var3 = -2078411438; + } else { + var3 = -734764405; + } + } + } + } + + private float clearDistance(Vec3 var1, Vec3 var2, float var3) { + Vec3 var4 = null; + BlockHitResult var5 = null; + int var6 = -1913575661; + + while (true) { + switch (var6) { + case -1913575661: + default: + var4 = var1.add(var2.scale(var3 + 0.6F)); + var5 = mc.level.clip(new ClipContext(var1, var4, Block.VISUAL, Fluid.NONE, mc.player)); + if (var5.getType() == Type.MISS) { + var6 = 1309639792; + } else { + var6 = 1155507704; + } + break; + case 1155507704: + return (float)Math.max(1.8F, var5.getLocation().distanceTo(var1) - 0.6F); + case 1309639792: + return var3; + } + } + } + + private void render(fs var1, long var2, long var4) { + Camera var6 = mc.getEntityRenderDispatcher().camera; + if (var6 != null) { + double var7 = var4 / 1000000.0; + float var9 = (float)(var7 % 60000.0 / 1000.0); + int var10 = this.textColor.getIntColor(); + int var11 = this.accentColor.getIntColor(); + float var12 = this.glowSetting.isEnabled() ? 0.55F : 0.0F; + if (this.glowSetting.isEnabled()) { + this.bloom.beginCapture(); + + try { + this.drawPhrases(var2, var4, var7, var9, var10, var11, var12, (boolean)((((-1364430456 | 1364430457) + (-1364430456 & 1364430457))) != 0)); + } finally { + this.bloom.endCaptureAndComposite(2.5F, this.glowStrengthSetting.getCurrent()); + } + } + + this.drawPhrases(var2, var4, var7, var9, var10, var11, var12, (boolean)((((-131537185 ^ 131537185) + ((-131537185 & 131537185) << 1))) != 0)); + } + } + + private void drawPhrases(long var1, long var3, double var5, float var7, int var8, int var9, float var10, boolean var11) { + Vec3 var12 = mc.getEntityRenderDispatcher().camera.position(); + float var13 = 22.0F; + + for (wn var15 : this.phrases) { + double var16 = Math.sin(var5 / 900.0 + var15.bobPhase) * 0.06F; + this.projector + .setPlane((float)(var15.anchor.x - var12.x), (float)(var15.anchor.y + var16 - var12.y), (float)(var15.anchor.z - var12.z), var15.right, var15.down); + if (!var11 && !var15.leaving() && !this.insideScreen(var15)) { + var15.leaveStartNanos = var3; + var15.leaveMillis = (-6653770388531654055L | 6653770388531654305L) + (-6653770388531654055L & 6653770388531654305L); + } + + float var18 = var15.leaving() ? leaveProgress(var15, var3) : 0.0F; + float var19 = 0.0F; + wo[] var20 = var15.words; + int var21 = var20.length; + + for (int var22 = 0; var22 < var21; var22++) { + wo var23 = var20[var22]; + var19 += fontFor(var23).getWidth(var23.text, sizeFor(var23, var13)) + var13 * 0.28F; + } + + var19 -= var13 * 0.28F; + float var36 = -var19 * 0.5F; + wo[] var37 = var15.words; + int var38 = var37.length; + + for (int var39 = 0; var39 < var38; var39++) { + wo var24 = var37[var39]; + gr var25 = fontFor(var24); + float var26 = sizeFor(var24, var13); + float var27 = var25.getWidth(var24.text, var26); + float var28 = Mth.clamp( + (float)(var1 + (-7757759798491835102L | 7757759798491835352L) + (-7757759798491835102L & 7757759798491835352L) - var24.revealAtMillis) / 360.0F, + 0.0F, + 1.0F + ); + if (var15.leaving() && var28 <= 0.0F) { + var28 = 1.0F; + } + + if (var28 > 0.0F) { + float var29 = var24.emphasized ? var26 * 0.18F : 0.0F; + float var30 = -var26 * 0.5F - var29; + float var31 = Mth.clamp((float)(var1 - var24.revealAtMillis) / (float)var24.sungMillis, 0.0F, 1.0F); + float var32 = var24.emphasized ? 1.0F : 0.0F; + if (var11) { + int var33 = var31 > 0.0F && var31 < 1.0F + ? 1: 0; + int var34 = !var24.emphasized && var33 == 0 + ? 112: 255; + gp.renderWord3D( + var25, + var24.text, + var26, + new go(withAlpha(var9, var34), var9, 0.0F, 1.6F, 0.0F, 0.0F, 0.0F), + var28, + var18, + var24.seed, + var7, + this.projector, + var36, + var30 + ); + } else { + if (this.shadowSetting.isEnabled()) { + gp.renderWord3D( + var25, + var24.text, + var26, + new go( + withAlpha(0, (-1859584451 | 1859584706) + (-1859584451 & 1859584706)), + var9, + 0.8F, + 1.6F, + 1.0F, + 0.0F, + 0.0F + ), + var28, + var18, + var24.seed, + var7, + this.projector, + var36, + var30 + ); + } + + gp.renderWord3D( + var25, + var24.text, + var26, + new go(withAlpha(var8, (267727082 ^ -267726827) + ((267727082 & -267726827) << 1)), var9, var10, 1.6F, 0.0F, var31, var32), + var28, + var18, + var24.seed, + var7, + this.projector, + var36, + var30 + ); + } + } + + var36 += var27 + var13 * 0.28F; + } + } + } + + private static gr fontFor(wo var0) { + gr var2 = null; + int var1 = 247160296; + + while (true) { + switch (var1) { + case -1781875044: + var2 = gl.BOLD; + var1 = 1200736450; + break; + case 11102340: + var2 = gl.MEDIUM; + var1 = 1200736450; + break; + case 247160296: + default: + if (var0.emphasized) { + var1 = -1781875044; + } else { + var1 = 11102340; + } + break; + case 1200736450: + return var2; + } + } + } + + private static float sizeFor(wo var0, float var1) { + float var3 = 0.0F; + int var2 = -1073083932; + + while (true) { + switch (var2) { + case -1570249192: + return var3; + case -1073083932: + default: + if (var0.emphasized) { + var2 = 1760697315; + } else { + var2 = 366104629; + } + break; + case 366104629: + var3 = var1; + var2 = -1570249192; + break; + case 1760697315: + var3 = var1 * 1.4F; + var2 = -1570249192; + } + } + } + + private static int withAlpha(int var0, int var1) { + return var1 << (1668282800 | -1668282776) + (1668282800 & -1668282776) | var0 & 16777215; + } + + private static float leaveProgress(wn var0, long var1) { + return Mth.clamp((float)((var1 - var0.leaveStartNanos) / 1000000.0 / var0.leaveMillis), 0.0F, 1.0F); + } + + private float signedRandom() { + return this.random.nextFloat() * 2.0F - 1.0F; + } + + static { + float[][] var10000 = new float[6][]; + int var10002 = 0; + float[] var10003 = new float[2]; + var10003[0] = 0.3F; + var10003[1] = 0.34F; + var10000[var10002] = var10003; + var10002 = 1; + var10003 = new float[2]; + var10003[0] = 0.7F; + var10003[1] = 0.3F; + var10000[var10002] = var10003; + var10002 = 2; + var10003 = new float[2]; + var10003[0] = 0.4F; + var10003[1] = 0.62F; + var10000[var10002] = var10003; + var10002 = 3; + var10003 = new float[2]; + var10003[0] = 0.66F; + var10003[1] = 0.56F; + var10000[var10002] = var10003; + var10002 = 4; + var10003 = new float[2]; + var10003[0] = 0.26F; + var10003[1] = 0.5F; + var10000[var10002] = var10003; + var10002 = 5; + var10003 = new float[2]; + var10003[0] = 0.54F; + var10003[1] = 0.4F; + var10000[var10002] = var10003; + SCREEN_SLOTS = var10000; + } +} diff --git a/src/main/java/defpackage/wq.java b/src/main/java/defpackage/wq.java new file mode 100644 index 0000000..67eae89 --- /dev/null +++ b/src/main/java/defpackage/wq.java @@ -0,0 +1,976 @@ +package defpackage; + +import java.util.List; +import java.util.function.Supplier; + +@rn(name = "WorldTweaks", description = "Overrides world lighting, fog, time, sky and weather", category = rl.RENDER) +public final class wq extends rm { + public final si modeSetting = si.create( + "Settings", + List.of( + "Lighting", + "Fog", + "Time", + "Sky", + "Weather" + ) + ) + .describe( + "Lighting", + "Override how bright the world is lit" + ) + .describe( + "Fog", + "Replace the vanilla fog with a custom one" + ) + .describe( + "Time", + "Lock the world to a time of day" + ) + .describe( + "Sky", + "Replace the vanilla sky with a gradient or shader, ignored while a shaderpack is loaded" + ) + .describe( + "Weather", + "Force the weather instead of following the server" + ) + .description( + "World aspects this module takes over" + ); + public final sm brightSetting = new sm( + "Lighting", + 1.0F, + 0.0F, + 1.0F, + 0.1F, + () -> this.modeSetting.isEnable((-1806793839 ^ 1806793839) + ((-1806793839 & 1806793839) << 1)) + ) + .description("Adjusts overall world brightness"); + public final defpackage.rx fogColor1 = new defpackage.rx( + "Fog Color 1", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> this.modeSetting.isEnable((1516232124 ^ -1516232123) + ((1516232124 & -1516232123) << 1)) + ) + .description("Primary color of the custom fog"); + public final defpackage.rx fogColor2 = new defpackage.rx( + "Fog Color 2", + new asu( + 255, + 255, + 255, + (248656411 ^ -248656156) + ((248656411 & -248656156) << 1) + ), + () -> this.modeSetting.isEnable((-407935105 | 407935106) + (-407935105 & 407935106)) + ) + .description("Secondary color of the custom fog"); + public final sm fogStart = new sm( + "Fog Start", + 32.0F, + 0.0F, + 200.0F, + 1.0F, + () -> this.modeSetting.isEnable((-1747474896 | 1747474897) + (-1747474896 & 1747474897)) + ) + .description("Distance at which fog begins to appear"); + public final sm fogEnd = new sm( + "Fog End", + 128.0F, + 10.0F, + 500.0F, + 1.0F, + () -> this.modeSetting.isEnable((-526835880 | 526835881) + (-526835880 & 526835881)) + ) + .description("Distance at which fog is fully opaque"); + public final sm fogHeight = new sm( + "Fog Height", + 64.0F, + 0.0F, + 320.0F, + 1.0F, + () -> this.modeSetting.isEnable((-1052215379 | 1052215380) + (-1052215379 & 1052215380)) + ) + .description( + "Maximum height of the custom fog" + ); + public final sm fogHeightFalloff = new sm( + "Height Falloff", + 0.1F, + 0.01F, + 1.0F, + 0.01F, + () -> this.modeSetting.isEnable((791197497 ^ -791197496) + ((791197497 & -791197496) << 1)) + ) + .description("How quickly fog fades at higher elevations"); + public final sm fogNoiseStrength = new sm( + "Noise Strength", + 0.5F, + 0.0F, + 1.0F, + 0.05F, + () -> this.modeSetting.isEnable((434932345 | -434932344) + (434932345 & -434932344)) + ) + .description("Intensity of visual noise applied to the fog"); + public final sm timeSetting = new sm( + "Time of day", + 12.0F, + 0.0F, + 24.0F, + 1.0F, + () -> this.modeSetting.isEnable((1491480685 | -1491480683) + (1491480685 & -1491480683)) + ) + .description( + "Locks the world time to this hour" + ); + public final ct timeAnim = ct.layoutMillis(500.0F, 0.0F); + public final sg skyMode; + public final defpackage.rx skyColor1; + public final defpackage.rx skyColor2; + public final sg skyShader; + public final sg skyMenuStyle; + public final ru skyMenuThemeColors; + public final defpackage.rx skyColor3; + public final sm skyMenuSize; + public final sm skyShaderSpeed; + public final sm skyShaderAlpha; + public final sm skyShaderBrightness; + public final ru skyDualColor; + public final ru skyFullSky; + public final ru showSunMoon; + public final ru showClouds; + public final sg weatherMode; + public final sm weatherStrength; + public final ct weatherAnim; + public final ru smoothMorning; + public static final wq INSTANCE = new wq(); + + public boolean suppressesLightning() { + int var2 = 0; + int var1 = 55110324; + + while (true) { + switch (var1) { + case -1672163868: + if (this.modeSetting.isEnable((742838030 ^ -742838026) + ((742838030 & -742838026) << 1))) { + var1 = 361206170; + } else { + var1 = 2117541139; + } + break; + case -514256862: + return (boolean)((var2) != 0); + case 55110324: + default: + if (this.isEnabled()) { + var1 = -1672163868; + } else { + var1 = 2117541139; + } + break; + case 361206170: + if (!this.weatherMode.is("Thunder")) { + var1 = 1945789559; + } else { + var1 = 2117541139; + } + break; + case 1945789559: + var2 = 1; + var1 = -514256862; + break; + case 2117541139: + var2 = 0; + var1 = -514256862; + } + } + } + + private wq() { + String var10003 = "Sky Mode"; + Supplier var10004 = () -> this.modeSetting.isEnable((1260437350 ^ -1260437347) + ((1260437350 & -1260437347) << 1)); + String[] var10005 = new String[2]; + var10005[0] = "Gradient"; + var10005[1] = "Shader"; + this.skyMode = new sg(var10003, var10004, var10005) + .describe( + "Gradient", + "Custom vertical color gradient" + ) + .describe( + "Shader", + "Animated custom shader sky" + ) + .description("Style of the custom sky"); + this.skyColor1 = new defpackage.rx( + "Sky Color 1", + bz.getInstance().getThemeManager().getCurrentTheme().getColor(), + () -> { + int var2x = 0; + int var1x = 706739600; + + while (true) { + switch (var1x) { + case -1350630098: + var2x = 1; + var1x = 1327326768; + break; + case -516713146: + if (this.usesCustomSkyColors()) { + var1x = -1350630098; + } else { + var1x = 1451593961; + } + break; + case 706739600: + default: + if (this.modeSetting.isEnable((2069146107 | -2069146104) + (2069146107 & -2069146104))) { + var1x = -516713146; + } else { + var1x = 1451593961; + } + break; + case 1327326768: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 1451593961: + var2x = 0; + var1x = 1327326768; + } + } + } + ) + .description( + "Primary color for the sky gradient/shader" + ); + this.skyColor2 = new defpackage.rx( + "Sky Color 2", + new asu( + 255, + 255, + 255, + (-1459871131 | 1459871386) + (-1459871131 & 1459871386) + ), + () -> { + int var2x = 0; + int var1x = -237449786; + + while (true) { + switch (var1x) { + case -1401958241: + var2x = 1; + var1x = 290937297; + break; + case -1369510803: + var2x = 0; + var1x = 290937297; + break; + case -237449786: + default: + if (this.modeSetting.isEnable((-54683371 ^ 54683374) + ((-54683371 & 54683374) << 1))) { + var1x = -15989246; + } else { + var1x = -1369510803; + } + break; + case -15989246: + if (this.usesCustomSkyColors()) { + var1x = -1401958241; + } else { + var1x = -1369510803; + } + break; + case 290937297: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description( + "Secondary color for the sky gradient/shader" + ); + var10003 = "Sky Shader"; + var10004 = () -> { + int var2x = 0; + int var1x = -1101500909; + + while (true) { + switch (var1x) { + case -1851617131: + var2x = 0; + var1x = -805645500; + break; + case -1433744925: + if (this.skyMode.is("Shader")) { + var1x = -1241563244; + } else { + var1x = -1851617131; + } + break; + case -1241563244: + var2x = 1; + var1x = -805645500; + break; + case -1101500909: + default: + if (this.modeSetting.isEnable((352411955 | -352411952) + (352411955 & -352411952))) { + var1x = -1433744925; + } else { + var1x = -1851617131; + } + break; + case -805645500: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + }; + var10005 = new String[10]; + var10005[0] = "Dreamscape"; + var10005[1] = "Aurora"; + var10005[2] = "Galaxy"; + var10005[3] = "Nebula"; + var10005[4] = "Clouds"; + var10005[5] = "Black Hole"; + var10005[6] = "Starfall"; + var10005[7] = "Caustics"; + var10005[8] = "Storm"; + var10005[9] = "End Beams"; + this.skyShader = new sg(var10003, var10004, var10005) + .describe( + "Dreamscape", + "Slow flowing ember, nebula, silk or contour patterns across the dome" + ) + .describe( + "Aurora", + "Volumetric northern lights with bloom" + ) + .describe( + "Galaxy", + "Swirling galaxy effect" + ) + .describe( + "Nebula", + "Purple space nebula" + ) + .describe( + "Clouds", + "Moving custom clouds" + ) + .describe( + "Black Hole", + "Ray-marched accretion disc with gravitational lensing" + ) + .describe( + "Starfall", + "Deep space meteor shower with bloom" + ) + .describe( + "Caustics", + "Rippling liquid light woven across the dome" + ) + .describe( + "Storm", + "Overcast cloud deck with lightning strikes" + ) + .describe( + "End Beams", + "End void with sharp stars and a glowing beam horizon" + ) + .description( + "Specific shader to apply to the sky" + ); + var10003 = "Dreamscape Style"; + var10004 = () -> { + int var2x = 0; + int var1x = -667769251; + + while (true) { + switch (var1x) { + case -2065442265: + if (this.isMenuSkyShader()) { + var1x = -1821887732; + } else { + var1x = -1976290486; + } + break; + case -1976290486: + var2x = 0; + var1x = -174706027; + break; + case -1821887732: + var2x = 1; + var1x = -174706027; + break; + case -667769251: + default: + if (this.modeSetting.isEnable((307172909 | -307172906) + (307172909 & -307172906))) { + var1x = -2065442265; + } else { + var1x = -1976290486; + } + break; + case -174706027: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + }; + var10005 = new String[4]; + var10005[0] = "Ember"; + var10005[1] = "Nebula"; + var10005[2] = "Silk"; + var10005[3] = "Contour"; + this.skyMenuStyle = new sg(var10003, var10004, var10005) + .describe( + "Ember", + "Swirling molten glow" + ) + .describe( + "Nebula", + "Drifting nebula clouds over twinkling stars" + ) + .describe( + "Silk", + "Flowing satin bands with a soft sheen" + ) + .describe( + "Contour", + "Animated topographic contour lines" + ) + .description("Pattern the Dreamscape sky draws"); + this.skyMenuThemeColors = new ru( + "Theme Colors", + (boolean)(((1)) != 0), + () -> { + int var2x = 0; + int var1x = 1028726275; + + while (true) { + switch (var1x) { + case -1836119487: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -993135971: + var2x = 1; + var1x = -1836119487; + break; + case 1028726275: + default: + if (this.modeSetting.isEnable((-210010704 | 210010707) + (-210010704 & 210010707))) { + var1x = 1121123487; + } else { + var1x = 2086591736; + } + break; + case 1121123487: + if (this.isMenuSkyShader()) { + var1x = -993135971; + } else { + var1x = 2086591736; + } + break; + case 2086591736: + var2x = 0; + var1x = -1836119487; + } + } + } + ) + .description( + "Follows the client theme accent instead of the sky colors" + ); + this.skyColor3 = new defpackage.rx( + "Sky Color 3", + new asu( + 255, + 170, + 90, + (221301994 | -221301739) + (221301994 & -221301739) + ), + () -> { + int var2x = 0; + int var1x = 468932663; + + while (true) { + switch (var1x) { + case -1591886119: + if (this.isMenuSkyShader()) { + var1x = 1103882413; + } else { + var1x = 199101283; + } + break; + case 24247808: + var2x = 1; + var1x = 127827692; + break; + case 127827692: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 199101283: + var2x = 0; + var1x = 127827692; + break; + case 468932663: + default: + if (this.modeSetting.isEnable((62146994 | -62146991) + (62146994 & -62146991))) { + var1x = -1591886119; + } else { + var1x = 199101283; + } + break; + case 1103882413: + if (!this.skyMenuThemeColors.isEnabled()) { + var1x = 24247808; + } else { + var1x = 199101283; + } + } + } + } + ) + .description( + "Highlight color of the Dreamscape sky" + ); + this.skyMenuSize = new sm( + "Pattern Size", 0.5F, 0.2F, 2.0F, 0.05F, () -> { + int var2x = 0; + int var1x = -789665491; + + while (true) { + switch (var1x) { + case -1404703819: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -1284097681: + var2x = 1; + var1x = -1404703819; + break; + case -789665491: + default: + if (this.modeSetting.isEnable((-360090701 | 360090704) + (-360090701 & 360090704))) { + var1x = -665488479; + } else { + var1x = 1353751259; + } + break; + case -665488479: + if (this.isMenuSkyShader()) { + var1x = -1284097681; + } else { + var1x = 1353751259; + } + break; + case 1353751259: + var2x = 0; + var1x = -1404703819; + } + } + } + ) + .description( + "How large the Dreamscape pattern appears across the sky" + ); + this.skyShaderSpeed = new sm( + "Shader Speed", 1.0F, 0.0F, 5.0F, 0.1F, () -> { + int var2x = 0; + int var1x = 623494131; + + while (true) { + switch (var1x) { + case -996890319: + if (this.skyMode.is("Shader")) { + var1x = 1912309059; + } else { + var1x = -339211010; + } + break; + case -339211010: + var2x = 0; + var1x = 288247866; + break; + case 288247866: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 623494131: + default: + if (this.modeSetting.isEnable((-99404347 ^ 99404350) + ((-99404347 & 99404350) << 1))) { + var1x = -996890319; + } else { + var1x = -339211010; + } + break; + case 1912309059: + var2x = 1; + var1x = 288247866; + } + } + } + ) + .description("Animation speed of the sky shader"); + this.skyShaderAlpha = new sm( + "Shader Alpha", 1.0F, 0.0F, 1.0F, 0.05F, () -> { + int var2x = 0; + int var1x = -652546977; + + while (true) { + switch (var1x) { + case -1547786712: + if (this.skyMode.is("Shader")) { + var1x = 790918315; + } else { + var1x = 629711932; + } + break; + case -726546160: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -652546977: + default: + if (this.modeSetting.isEnable((1299329781 | -1299329778) + (1299329781 & -1299329778))) { + var1x = -1547786712; + } else { + var1x = 629711932; + } + break; + case 629711932: + var2x = 0; + var1x = -726546160; + break; + case 790918315: + var2x = 1; + var1x = -726546160; + } + } + } + ) + .description( + "Transparency of the sky shader" + ); + this.skyShaderBrightness = new sm( + "Shader Brightness", + 1.0F, + 0.1F, + 2.0F, + 0.05F, + () -> { + int var2x = 0; + int var1x = -1478728506; + + while (true) { + switch (var1x) { + case -1478728506: + default: + if (this.modeSetting.isEnable((-1680351584 | 1680351587) + (-1680351584 & 1680351587))) { + var1x = 1193988179; + } else { + var1x = 528347759; + } + break; + case 528347759: + var2x = 0; + var1x = 1240348578; + break; + case 644342725: + if (this.isMenuSkyShader()) { + var1x = 2066204387; + } else { + var1x = 528347759; + } + break; + case 745655047: + if (!this.isPostSkyShader()) { + var1x = 644342725; + } else { + var1x = 2066204387; + } + break; + case 1193988179: + if (this.skyMode.is("Shader")) { + var1x = 745655047; + } else { + var1x = 528347759; + } + break; + case 1240348578: + return Boolean.valueOf((boolean)((var2x) != 0)); + case 2066204387: + var2x = 1; + var1x = 1240348578; + } + } + } + ) + .description("Exposure of the shader sky"); + this.skyDualColor = new ru( + "Sky Gradient", + (boolean)(((1)) != 0), + () -> { + int var2x = 0; + int var1x = 661491010; + + while (true) { + switch (var1x) { + case -1810883547: + return Boolean.valueOf((boolean)((var2x) != 0)); + case -1674246859: + var2x = 0; + var1x = -1810883547; + break; + case 183604501: + var2x = 1; + var1x = -1810883547; + break; + case 661491010: + default: + if (this.modeSetting.isEnable((839044603 ^ -839044600) + ((839044603 & -839044600) << 1))) { + var1x = 1800198413; + } else { + var1x = -1674246859; + } + break; + case 665766752: + if (this.isPostSkyShader()) { + var1x = 183604501; + } else { + var1x = -1674246859; + } + break; + case 1800198413: + if (this.skyMode.is("Shader")) { + var1x = 665766752; + } else { + var1x = -1674246859; + } + } + } + } + ) + .description( + "Blends both sky colors instead of using only the first" + ); + this.skyFullSky = new ru( + "Full Sky", + (boolean)(((0)) != 0), + () -> this.modeSetting.isEnable((919544933 | -919544930) + (919544933 & -919544930)) + ) + .description( + "Removes the fog and draws the sky shader below the horizon as well" + ); + this.showSunMoon = new ru( + "Show Sun & Moon", + (boolean)(((0)) != 0), + () -> this.modeSetting.isEnable((1169610191 | -1169610188) + (1169610191 & -1169610188)) + ) + .description( + "Keeps the vanilla sun and moon visible over the custom sky" + ); + this.showClouds = new ru( + "Show Clouds", + (boolean)(((0)) != 0), + () -> this.modeSetting.isEnable((1549980745 | -1549980742) + (1549980745 & -1549980742)) + ) + .description( + "Keeps the vanilla clouds visible over the custom sky" + ); + var10003 = "Weather"; + var10004 = () -> this.modeSetting.isEnable((-676491382 | 676491386) + (-676491382 & 676491386)); + var10005 = new String[3]; + var10005[0] = "Clear"; + var10005[1] = "Rain"; + var10005[2] = "Thunder"; + this.weatherMode = new sg(var10003, var10004, var10005) + .describe( + "Clear", + "Force clear skies, no rain or snow" + ) + .describe( + "Rain", + "Force rain (snow in cold biomes)" + ) + .describe( + "Thunder", + "Force a thunderstorm" + ) + .description("Overrides the local weather"); + this.weatherStrength = new sm( + "Weather Strength", 1.0F, 0.0F, 1.0F, 0.05F, () -> { + int var2x = 0; + int var1x = -1678177112; + + while (true) { + switch (var1x) { + case -1862544340: + var2x = 0; + var1x = -138709141; + break; + case -1678177112: + default: + if (this.modeSetting.isEnable((236189803 ^ -236189799) + ((236189803 & -236189799) << 1))) { + var1x = -499035340; + } else { + var1x = -1862544340; + } + break; + case -1243146784: + var2x = 1; + var1x = -138709141; + break; + case -499035340: + if (!this.weatherMode.is("Clear")) { + var1x = -1243146784; + } else { + var1x = -1862544340; + } + break; + case -138709141: + return Boolean.valueOf((boolean)((var2x) != 0)); + } + } + } + ) + .description("Intensity of the forced rain/thunder"); + this.weatherAnim = ct.layoutMillis(800.0F, 0.0F); + this.smoothMorning = new ru( + "Smooth Morning", + (boolean)((((1715274396 ^ -1715274395) + ((1715274396 & -1715274395) << 1)) + ) != 0)) + .description( + "Smoothly transition colors during sunrise" + ); + } + + public boolean isMenuSkyShader() { + int var2 = 0; + int var1 = -1910487596; + + while (true) { + switch (var1) { + case -1910487596: + default: + if (this.skyMode.is("Shader")) { + var1 = 1388825759; + } else { + var1 = 764073061; + } + break; + case -219154585: + return (boolean)((var2) != 0); + case 764073061: + var2 = 0; + var1 = -219154585; + break; + case 1388825759: + if (this.skyShader.is("Dreamscape")) { + var1 = 1724843118; + } else { + var1 = 764073061; + } + break; + case 1724843118: + var2 = 1; + var1 = -219154585; + } + } + } + + private boolean usesCustomSkyColors() { + int var2 = 0; + int var1 = 956975734; + + while (true) { + switch (var1) { + case -809003954: + if (this.isMenuSkyShader()) { + var1 = 1698084067; + } else { + var1 = 399822046; + } + break; + case -274076764: + return (boolean)((var2) != 0); + case 135016526: + if (this.skyMode.is("Shader")) { + var1 = -809003954; + } else { + var1 = 1644458364; + } + break; + case 399822046: + var2 = 1; + var1 = -274076764; + break; + case 956975734: + default: + if (this.skyMode.is("Gradient")) { + var1 = 1391915132; + } else { + var1 = 135016526; + } + break; + case 1391915132: + return (boolean)(((1)) != 0); + case 1644458364: + var2 = 0; + var1 = -274076764; + break; + case 1698084067: + if (!this.skyMenuThemeColors.isEnabled()) { + var1 = 399822046; + } else { + var1 = 1644458364; + } + } + } + } + + private boolean isPostSkyShader() { + int var2 = 0; + int var1 = -616841896; + + while (true) { + switch (var1) { + case -2142786180: + var2 = 0; + var1 = 223544178; + break; + case -2054550063: + if (this.skyShader.is("End Beams")) { + var1 = -874917018; + } else { + var1 = -2142786180; + } + break; + case -2028567304: + if (!this.skyShader.is("Aurora")) { + var1 = -2054550063; + } else { + var1 = -874917018; + } + break; + case -874917018: + var2 = 1; + var1 = 223544178; + break; + case -616841896: + default: + if (!this.skyShader.is("Black Hole")) { + var1 = 1558802452; + } else { + var1 = -874917018; + } + break; + case 223544178: + return (boolean)((var2) != 0); + case 1558802452: + if (!this.skyShader.is("Starfall")) { + var1 = -2028567304; + } else { + var1 = -874917018; + } + } + } + } + + @k + public void onFog(fo var1) { + if (aul.isCustomSkyActive()) { + int var2 = aul.customSkyFogColor(); + var1.setColor(var2 == -1? this.skyColor2.getIntColor() : var2); + var1.setFogDisabled(this.skyFullSky.isEnabled()); + var1.setCancelled((boolean)((((642320425 | -642320424) + (642320425 & -642320424))) != 0)); + } + } +} diff --git a/src/main/java/defpackage/wr.java b/src/main/java/defpackage/wr.java new file mode 100644 index 0000000..d017434 --- /dev/null +++ b/src/main/java/defpackage/wr.java @@ -0,0 +1,654 @@ +package defpackage; + +import net.minecraft.client.Minecraft; +import org.lwjgl.glfw.GLFW; + +@rn(name = "Zoom", category = rl.MISC, description = "Smooth zooming just like Zoomify") +public final class wr extends rm { + public static final wr INSTANCE = new wr(); + public final sm initialZoom = new sm( + "Initial Zoom", 4.0F, 1.0F, 50.0F, 1.0F + ) + .description( + "FOV divisor when zoom is first activated" + ); + public final sm zoomInTime = new sm("Zoom In Time", 1.0F, 0.0F, 5.0F, 0.1F) + .description( + "Time to smoothly transition into zoomed FOV" + ); + public final sm zoomOutTime = new sm("Zoom Out Time", 0.5F, 0.0F, 5.0F, 0.1F) + .description( + "Time to smoothly transition back to normal FOV" + ); + public final sm relativeSensitivity = new sm( + "Relative Sensitivity", 100.0F, 0.0F, 100.0F, 1.0F + ) + .description( + "Adjust mouse sensitivity relatively when zoomed" + ); + public final ru cinematicCamera = new ru( + "Cinematic Camera", + (boolean)((((1949177073 | -1949177073) + (1949177073 & -1949177073)) + ) != 0)) + .description( + "Enable smooth camera movement when zooming" + ); + private final String[] transitions; + public final sg zoomInTransition; + public final sg zoomOutTransition; + public final ru affectHandFov; + public final ru relativeViewBobbing; + public final sg mode; + public final ru secondaryZoom; + public final sm secondaryZoomAmount; + public final sm secondaryZoomInTime; + public final sm secondaryZoomOutTime; + public final sg spyglassOverlay; + public final sg spyglassSound; + public final sg spyglassBehaviour; + public final ru scrollZoom; + public final sm zoomPerStep; + public final sm scrollZoomSmoothness; + private avw regularZoomHelper; + private avw secondaryZoomHelper; + private int scrollTiers; + public boolean isZooming; + private boolean isSecondaryZooming; + private boolean wasPressed; + private boolean toggleZoomState; + private long lastFrameTime; + + private wr() { + String[] var10001 = new String[14]; + var10001[0] = "Instant"; + var10001[1] = "Linear"; + var10001[2] = "Ease In Sine"; + var10001[3] = "Ease Out Sine"; + var10001[4] = "Ease In Out Sine"; + var10001[5] = "Ease In Quad"; + var10001[6] = "Ease Out Quad"; + var10001[7] = "Ease In Out Quad"; + var10001[8] = "Ease In Cubic"; + var10001[9] = "Ease Out Cubic"; + var10001[10] = "Ease In Out Cubic"; + var10001[11] = "Ease In Exp"; + var10001[12] = "Ease Out Exp"; + var10001[13] = "Ease In Out Exp"; + this.transitions = var10001; + this.zoomInTransition = new sg("In Transition", this.transitions) + .description("Easing curve for zooming in"); + this.zoomOutTransition = new sg("Out Transition", this.transitions) + .description("Easing curve for zooming out"); + this.affectHandFov = new ru( + "Affect Hand FOV", + (boolean)((((1973168227 | -1973168226) + (1973168227 & -1973168226)) + ) != 0)) + .description( + "Scale the hand/item model with the zoom" + ); + this.relativeViewBobbing = new ru( + "Relative View Bobbing", + (boolean)((((205820388 ^ -205820387) + ((205820388 & -205820387) << 1)) + ) != 0)) + .description("Scale view bobbing intensity with the zoom"); + String var10003 = "Mode"; + String[] var10004 = new String[2]; + var10004[0] = "Toggle"; + var10004[1] = "Hold"; + this.mode = new sg(var10003, var10004) + .describe( + "Toggle", + "Press key once to zoom in/out" + ) + .describe( + "Hold", + "Zoom in only while key is held" + ) + .description( + "Toggle mode vs holding the key to zoom" + ); + this.secondaryZoom = new ru( + "Secondary Zoom", + (boolean)((((725236130 ^ -725236130) + ((725236130 & -725236130) << 1)) + ) != 0)) + .description( + "Allow a secondary deeper zoom level" + ); + this.secondaryZoomAmount = new sm( + "Secondary Amount", + 4.0F, + 1.0F, + 50.0F, + 1.0F, + this.secondaryZoom::isEnabled + ) + .description( + "FOV divisor for the secondary zoom" + ); + this.secondaryZoomInTime = new sm( + "Secondary In Time", + 10.0F, + 0.0F, + 20.0F, + 0.1F, + this.secondaryZoom::isEnabled + ) + .description( + "Time to transition into secondary zoom" + ); + this.secondaryZoomOutTime = new sm( + "Secondary Out Time", + 1.0F, + 0.0F, + 20.0F, + 0.1F, + this.secondaryZoom::isEnabled + ) + .description( + "Time to transition out of secondary zoom" + ); + var10003 = "Spyglass Overlay"; + var10004 = new String[3]; + var10004[0] = "Always"; + var10004[1] = "Holding"; + var10004[2] = "Never"; + this.spyglassOverlay = new sg(var10003, var10004) + .describe( + "Always", + "Show overlay whenever zooming" + ) + .describe( + "Holding", + "Only show when holding a spyglass" + ) + .describe( + "Never", + "Never show the overlay" + ) + .description( + "When to display the vanilla spyglass vignette" + ); + var10003 = "Spyglass Sound"; + var10004 = new String[3]; + var10004[0] = "Always"; + var10004[1] = "With Overlay"; + var10004[2] = "Never"; + this.spyglassSound = new sg(var10003, var10004) + .describe( + "Always", + "Play sound on zoom" + ) + .describe( + "With Overlay", + "Play only when overlay is visible" + ) + .describe( + "Never", + "Disable spyglass sound" + ) + .description( + "When to play the vanilla spyglass sounds" + ); + var10003 = "Spyglass Behav"; + var10004 = new String[3]; + var10004[0] = "Combine"; + var10004[1] = "Override"; + var10004[2] = "None"; + this.spyglassBehaviour = new sg(var10003, var10004) + .describe( + "Combine", + "Stack zoom with vanilla spyglass" + ) + .describe( + "Override", + "Ignore vanilla spyglass zoom amount" + ) + .describe( + "None", + "Default vanilla behavior" + ) + .description( + "How to interact with vanilla spyglass zooming" + ); + this.scrollZoom = new ru( + "Scroll Zoom", + (boolean)((((1420374335 ^ -1420374334) + ((1420374335 & -1420374334) << 1)) + ) != 0)) + .description( + "Allow adjusting the zoom level using the mouse wheel" + ); + this.zoomPerStep = new sm( + "Zoom Per Step", + 1.5F, + 1.1F, + 5.0F, + 0.1F, + this.scrollZoom::isEnabled + ) + .description("Amount to zoom per scroll wheel step"); + this.scrollZoomSmoothness = new sm( + "Scroll Zoom Smoothness", + 50.0F, + 0.0F, + 100.0F, + 1.0F, + this.scrollZoom::isEnabled + ) + .description( + "Smoothness of the scroll wheel zooming" + ); + this.scrollTiers = 0; + this.isZooming = (boolean)(((0)) != 0); + this.isSecondaryZooming = (boolean)(((0)) != 0); + this.wasPressed = (boolean)(((0)) != 0); + this.toggleZoomState = (boolean)(((0)) != 0); + this.lastFrameTime = System.nanoTime(); + this.zoomInTransition.set("Ease Out Exp"); + this.zoomOutTransition.set("Ease Out Exp"); + this.regularZoomHelper = new avw( + new ave(this::getInTransition, this::getOutTransition, () -> this.zoomInTime.getCurrent(), () -> this.zoomOutTime.getCurrent()), + new avc(() -> 1.0 - this.scrollZoomSmoothness.getCurrent() / 100.0), + () -> this.initialZoom.getCurrent(), + () -> this.zoomPerStep.getCurrent(), + this::getMaxEffectiveSteps + ); + this.secondaryZoomHelper = new avw( + new avd(() -> this.secondaryZoomInTime.getCurrent(), () -> this.secondaryZoomOutTime.getCurrent()), + new ava(), + () -> (int)this.secondaryZoomAmount.getCurrent(), + () -> 100.0, + () -> 0.0 + ); + super.setToggled((boolean)((((-1042148332 ^ 1042148333) + ((-1042148332 & 1042148333) << 1))) != 0)); + } + + @Override + public void setToggled(boolean var1) { + super.setToggled((boolean)((((-1338820789 ^ 1338820790) + ((-1338820789 & 1338820790) << 1))) != 0)); + } + + @Override + public void toggle() { + super.setToggled((boolean)((((-810696517 | 810696518) + (-810696517 & 810696518))) != 0)); + } + + private avv getInTransition() { + return this.getTransition(this.zoomInTransition.get()); + } + + private avv getOutTransition() { + return this.getTransition(this.zoomOutTransition.get()); + } + + private avv getTransition(String var1) { + String var2 = var1; + int var3 = -1; + switch (var2.hashCode()) { + case -2018804923: + if (var2.equals("Linear")) { + var3 = 0; + } + break; + case -1997404848: + if (var2.equals("Ease In Quad")) { + var3 = 4; + } + break; + case -1997356394: + if (var2.equals("Ease In Sine")) { + var3 = 1; + } + break; + case -1802936223: + if (var2.equals("Ease In Cubic")) { + var3 = 7; + } + break; + case -1552442001: + if (var2.equals("Ease In Out Cubic")) { + var3 = 9; + } + break; + case -690875399: + if (var2.equals("Ease Out Exp")) { + var3 = 11; + } + break; + case 58053355: + if (var2.equals("Ease Out Quad")) { + var3 = 5; + } + break; + case 58101809: + if (var2.equals("Ease Out Sine")) { + var3 = 2; + } + break; + case 324643202: + if (var2.equals("Ease In Out Exp")) { + var3 = 12; + } + break; + case 1474358914: + if (var2.equals("Ease In Out Quad")) { + var3 = 6; + } + break; + case 1474407368: + if (var2.equals("Ease In Out Sine")) { + var3 = 3; + } + break; + case 1736671476: + if (var2.equals("Ease In Exp")) { + var3 = 10; + } + break; + case 1786725926: + if (var2.equals("Ease Out Cubic")) { + var3 = 8; + } + } + + switch (var3) { + case 0: + return avv.LINEAR; + case 1: + return avv.EASE_IN_SINE; + case 2: + return avv.EASE_OUT_SINE; + case 3: + return avv.EASE_IN_OUT_SINE; + case 4: + return avv.EASE_IN_QUAD; + case 5: + return avv.EASE_OUT_QUAD; + case 6: + return avv.EASE_IN_OUT_QUAD; + case 7: + return avv.EASE_IN_CUBIC; + case 8: + return avv.EASE_OUT_CUBIC; + case 9: + return avv.EASE_IN_OUT_CUBIC; + case 10: + return avv.EASE_IN_EXP; + case 11: + return avv.EASE_OUT_EXP; + case 12: + return avv.EASE_IN_OUT_EXP; + default: + return avv.INSTANT; + } + } + + @Override + public void onEnable() { + int var1 = -1301683824; + + while (true) { + switch (var1) { + case -1384889925: + return; + case -1301683824: + default: + super.onEnable(); + if (this.mode.is("Toggle")) { + var1 = 1781578978; + } else { + var1 = -1384889925; + } + break; + case 1781578978: + this.isZooming = (boolean)(((1)) != 0); + var1 = -1384889925; + } + } + } + + @Override + public void onDisable() { + int var1 = -1069571609; + + while (true) { + switch (var1) { + case -1954310839: + this.isZooming = (boolean)(((0)) != 0); + var1 = -156549947; + break; + case -1069571609: + default: + super.onDisable(); + if (this.mode.is("Toggle")) { + var1 = -1954310839; + } else { + var1 = -156549947; + } + break; + case -156549947: + this.scrollTiers = 0; + return; + } + } + } + + public boolean handleScroll(double var1) { + double var3 = 0.0; + double var5 = 0.0; + int var7 = 1120862836; + + while (true) { + switch (var7) { + case -2127027369: + var3 = this.getMaxEffectiveSteps(); + var5 = this.getMinEffectiveSteps(); + this.scrollTiers = Math.max((int)Math.ceil(var5), Math.min((int)var3, this.scrollTiers)); + return (boolean)(((1)) != 0); + case -687893205: + this.scrollTiers += 1; + var7 = -2127027369; + break; + case -585705512: + this.scrollTiers -= 1; + var7 = -2127027369; + break; + case 299134447: + if (this.isZooming) { + var7 = 1223869061; + } else { + var7 = 745330008; + } + break; + case 745330008: + return (boolean)(((0)) != 0); + case 878355508: + if (var1 < 0.0) { + var7 = -585705512; + } else { + var7 = -2127027369; + } + break; + case 1120862836: + default: + if (this.scrollZoom.isEnabled()) { + var7 = 299134447; + } else { + var7 = 745330008; + } + break; + case 1223869061: + if (var1 > 0.0) { + var7 = -687893205; + } else { + var7 = 878355508; + } + } + } + } + + private double getMaxEffectiveSteps() { + double var1 = 0.0; + int var3 = 1993753414; + + while (true) { + switch (var3) { + case 1770798745: + return Math.floor(Math.log(500.0 / this.initialZoom.getCurrent()) / Math.log(var1)); + case 1993753414: + default: + var1 = this.zoomPerStep.getCurrent(); + if (var1 <= 1.01) { + var3 = 2106069130; + } else { + var3 = 1770798745; + } + break; + case 2106069130: + return 0.0; + } + } + } + + private double getMinEffectiveSteps() { + double var1 = 0.0; + double var3 = 0.0; + int var5 = 1688477916; + + while (true) { + switch (var5) { + case -1535690285: + return 0.0; + case 1688477916: + default: + var1 = this.zoomPerStep.getCurrent(); + if (var1 <= 1.01) { + var5 = -1535690285; + } else { + var5 = 1861021117; + } + break; + case 1861021117: + var3 = Math.min(2.0, this.initialZoom.getCurrent()); + return Math.log(var3 / this.initialZoom.getCurrent()) / Math.log(var1); + } + } + } + + public double getZoomDivisor(float var1) { + Minecraft var2 = Minecraft.getInstance(); + long var3 = System.nanoTime(); + double var5 = (var3 - this.lastFrameTime) / 1.0E9; + if (var5 > 1.0E-4) { + this.lastFrameTime = var3; + if (var2.player != null) { + if (var2.gui.screen() != null) { + this.isZooming = (boolean)(((0)) != 0); + } else { + int var7 = this.getKeyCode(); + int var8 = var7 > 0 && GLFW.glfwGetKey(var2.getWindow().handle(), var7) == 1? 1: 0; + if (this.mode.is("Hold")) { + if (var8 != 0) { + this.isZooming = (boolean)(((1)) != 0); + } else { + this.isZooming = (boolean)(((0)) != 0); + } + } else { + if (var8 != 0 && !this.wasPressed) { + this.toggleZoomState = (boolean)(((!this.toggleZoomState + ? 1: (1984521064 | -1984521064) + (1984521064 & -1984521064))) != 0); + } + + this.isZooming = this.toggleZoomState; + } + + this.wasPressed = (boolean)((var8) != 0); + } + + this.isSecondaryZooming = (boolean)(((this.secondaryZoom.isEnabled() + && GLFW.glfwGetKey(var2.getWindow().handle(), (-1249536343 ^ 1249536685) + ((-1249536343 & 1249536685) << 1)) + == 1? 1: (1079250368 | -1079250368) + (1079250368 & -1079250368))) != 0); + this.regularZoomHelper.tick(this.isZooming, this.scrollTiers, var5); + this.secondaryZoomHelper.tick(this.isSecondaryZooming, 0, var5); + } + } + + if (!this.isZooming) { + this.scrollTiers = 0; + this.regularZoomHelper.reset(); + this.secondaryZoomHelper.reset(); + } + + double var9 = this.regularZoomHelper.getZoomDivisor(1.0F); + if (this.secondaryZoom.isEnabled()) { + if (!this.isSecondaryZooming) { + this.secondaryZoomHelper.reset(); + } + + var9 *= this.secondaryZoomHelper.getZoomDivisor(1.0F); + } + + return var9; + } + + public boolean shouldRenderOverlay(boolean var1) { + int var3 = 0; + int var2 = 390903391; + + while (true) { + switch (var2) { + case -1844285473: + return var1; + case -1812602303: + if (var1) { + var2 = 1194559564; + } else { + var2 = 867218102; + } + break; + case -942260045: + if (this.spyglassOverlay.is("Holding")) { + var2 = -1844285473; + } else { + var2 = 1698491783; + } + break; + case -571365247: + if (!this.isZooming) { + var2 = -1812602303; + } else { + var2 = 1194559564; + } + break; + case -97731090: + return (boolean)((var3) != 0); + case 390903391: + default: + if (!this.isEnabled()) { + var2 = 2015214280; + } else { + var2 = 1401099911; + } + break; + case 867218102: + var3 = 0; + var2 = -97731090; + break; + case 1194559564: + var3 = 1; + var2 = -97731090; + break; + case 1401099911: + if (this.spyglassOverlay.is("Always")) { + var2 = -571365247; + } else { + var2 = -942260045; + } + break; + case 1698491783: + return (boolean)(((0)) != 0); + case 2015214280: + return var1; + } + } + } +} diff --git a/src/main/java/defpackage/ws.java b/src/main/java/defpackage/ws.java new file mode 100644 index 0000000..881e032 --- /dev/null +++ b/src/main/java/defpackage/ws.java @@ -0,0 +1,110 @@ +package defpackage; + +public enum ws { + BAR( + "Bar", + "A short bar under the crosshair fills up while your attack recharges" + ), + RING( + "Ring", + "A thin ring around the crosshair fills clockwise while your attack recharges" + ), + SPREAD( + "Spread", + "The crosshair opens up after an attack and closes as it recharges" + ), + OFF( + "Off", + "No attack cooldown indicator" + ); + + private static final ws[] VALUES = values(); + private final String displayName; + private final String description; + + ws(String var3, String var4) { + this.displayName = var3; + this.description = var4; + } + + public String displayName() { + return this.displayName; + } + + public String description() { + return this.description; + } + + public static ws byDisplayName(String var0, ws var1) { + ws[] var2 = null; + int var3 = 0; + int var4 = 0; + ws var5 = null; + int var6 = -275531364; + + while (true) { + switch (var6) { + case -890124804: + return var1; + case -496442050: + return var5; + case -275531364: + default: + var2 = VALUES; + var3 = var2.length; + var4 = 0; + var6 = 548498259; + break; + case -7967034: + var4++; + var6 = 548498259; + break; + case 102071667: + var5 = var2[var4]; + if (var5.displayName.equals(var0)) { + var6 = -496442050; + } else { + var6 = -7967034; + } + break; + case 548498259: + if (var4 < var3) { + var6 = 102071667; + } else { + var6 = -890124804; + } + } + } + } + + public static String[] displayNames() { + String[] var0 = null; + int var1 = 0; + int var2 = -910761421; + + while (true) { + switch (var2) { + case -1709998162: + var0[var1] = VALUES[var1].displayName; + var1++; + var2 = -1148568051; + break; + case -1148568051: + if (var1 < VALUES.length) { + var2 = -1709998162; + } else { + var2 = 2053840815; + } + break; + case -910761421: + default: + var0 = new String[VALUES.length]; + var1 = 0; + var2 = -1148568051; + break; + case 2053840815: + return var0; + } + } + } +} diff --git a/src/main/java/defpackage/wt.java b/src/main/java/defpackage/wt.java new file mode 100644 index 0000000..24fe7dc --- /dev/null +++ b/src/main/java/defpackage/wt.java @@ -0,0 +1,93 @@ +package defpackage; + +public final class wt { + private static final float VISIBLE = 1.0F; + private static final float HIDDEN = 0.0F; + private static final float HALF_BLEND = 0.5F; + private static final ob SHAPE_MOTION = ob.MEDIUM; + private final wx frame = new wx(); + private final ct size = ct.layout(SHAPE_MOTION); + private final ct thickness = ct.layout(SHAPE_MOTION); + private final ct gap = ct.layout(SHAPE_MOTION); + private final ct outline = ct.layout(SHAPE_MOTION); + private final ct outlineOpacity = ct.layout(SHAPE_MOTION); + private final ct outlineThickness = ct.layout(SHAPE_MOTION); + private final ct opacity = ct.layout(SHAPE_MOTION); + private final ct centerDot = ct.layout(SHAPE_MOTION); + private final ct outerLines = ct.layout(SHAPE_MOTION); + private final ct outerLength = ct.layout(SHAPE_MOTION); + private final ct outerGap = ct.layout(SHAPE_MOTION); + private final ct indicatorExtent = ct.layout(SHAPE_MOTION); + private final ct styleBlend = ct.layout(SHAPE_MOTION, 1.0F); + private final ct colorBlend = ct.layout(SHAPE_MOTION, 1.0F); + private xh targetStyle = xh.CROSS; + private int colorFrom; + private int colorTo; + private boolean primed; + + public wx update(xb var1) { + if (!this.primed) { + this.snap(var1); + return this.frame; + } + + xh var2 = var1.style(); + if (var2 != this.targetStyle) { + this.frame.previousStyle = this.frame.styleBlend >= 0.5F ? this.targetStyle : this.frame.previousStyle; + this.targetStyle = var2; + this.styleBlend.jumpTo(0.0F); + this.styleBlend.animateTo(1.0F); + } + + this.frame.style = this.targetStyle; + this.frame.styleBlend = this.styleBlend.update(); + int var3 = var1.color(); + if (var3 != this.colorTo) { + this.colorFrom = this.frame.color; + this.colorTo = var3; + this.colorBlend.jumpTo(0.0F); + this.colorBlend.animateTo(1.0F); + } + + this.frame.color = asu.mixRGB(this.colorFrom, this.colorTo, this.colorBlend.update(), 1.0F); + this.frame.size = this.size.update(var1.size()); + this.frame.thickness = this.thickness.update(var1.thickness()); + this.frame.gap = this.gap.update(var1.gap()); + this.frame.outline = this.outline.update(var1.outline() ? 1.0F : 0.0F); + this.frame.outlineOpacity = this.outlineOpacity.update(var1.outlineOpacity()); + this.frame.outlineThickness = this.outlineThickness.update(var1.outlineThickness()); + this.frame.opacity = this.opacity.update(var1.opacity()); + this.frame.centerDot = this.centerDot.update(wx.hasCenterDot(var1) ? 1.0F : 0.0F); + this.frame.outerLines = this.outerLines.update(var1.outerLines() && var2.hasLines() ? 1.0F : 0.0F); + this.frame.outerLength = this.outerLength.update(var1.outerLength()); + this.frame.outerGap = this.outerGap.update(var1.outerGap()); + this.frame.indicatorExtent = this.indicatorExtent.update((float)Math.ceil(xf.restExtent(var1))); + return this.frame; + } + + public void snap(xb var1) { + this.frame.set(var1); + this.targetStyle = this.frame.style; + this.colorFrom = this.frame.color; + this.colorTo = this.frame.color; + this.styleBlend.jumpTo(1.0F); + this.colorBlend.jumpTo(1.0F); + this.size.jumpTo(this.frame.size); + this.thickness.jumpTo(this.frame.thickness); + this.gap.jumpTo(this.frame.gap); + this.outline.jumpTo(this.frame.outline); + this.outlineOpacity.jumpTo(this.frame.outlineOpacity); + this.outlineThickness.jumpTo(this.frame.outlineThickness); + this.opacity.jumpTo(this.frame.opacity); + this.centerDot.jumpTo(this.frame.centerDot); + this.outerLines.jumpTo(this.frame.outerLines); + this.outerLength.jumpTo(this.frame.outerLength); + this.outerGap.jumpTo(this.frame.outerGap); + this.indicatorExtent.jumpTo(this.frame.indicatorExtent); + this.primed = (boolean)(((1)) != 0); + } + + public wx frame() { + return this.frame; + } +} diff --git a/src/main/java/defpackage/wu.java b/src/main/java/defpackage/wu.java new file mode 100644 index 0000000..703a8cd --- /dev/null +++ b/src/main/java/defpackage/wu.java @@ -0,0 +1,134 @@ +package defpackage; + +import java.util.Optional; +import net.minecraft.nbt.StringTag; +import net.minecraft.network.chat.ClickEvent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.ClickEvent.Custom; +import net.minecraft.network.chat.HoverEvent.ShowText; +import net.minecraft.resources.Identifier; + +public final class wu { + public static final Identifier CLICK_ID = Identifier.fromNamespaceAndPath( + "evovisuals", + "crosshair" + ); + private static final String BUTTON_TEXT = " [Apply crosshair]"; + private static final String HOVER_UNNAMED = "Apply this crosshair and save it to My Presets"; + private static final String HOVER_NAMED = "Apply \"%s\" and save it to My Presets"; + private static final int BUTTON_COLOR = 5636095; + private static final float DECODE_SCALE = 1.0F; + + private wu() { + } + + public static Component decorate(Component var0) { + Optional var1 = null; + String var2 = null; + Optional var3 = null; + String var4 = null; + Component var5 = null; + Component var6 = null; + String var8 = null; + int var7 = -769711321; + + while (true) { + switch (var7) { + case -1804078547: + var8 = "Apply this crosshair and save it to My Presets"; + var7 = 1441548384; + break; + case -1751586511: + return null; + case -1061012962: + var2 = (String)var1.get(); + var3 = ww.decodeShared(var2, 1.0F); + if (var3.isEmpty()) { + var7 = 2045392103; + } else { + var7 = 1168648276; + } + break; + case -769711321: + default: + if (var0 == null) { + var7 = -1751586511; + } else { + var7 = -97444080; + } + break; + case -453690565: + return var0; + case -159818462: + String var10000 = "Apply \"%s\" and save it to My Presets"; + Object[] var10001 = new Object[1]; + var10001[0] = var4; + var8 = String.format(var10000, var10001); + var7 = 1441548384; + break; + case -97444080: + var1 = ww.findEmbedded(var0.getString()); + if (var1.isEmpty()) { + var7 = -453690565; + } else { + var7 = -1061012962; + } + break; + case 1168648276: + var4 = ((wv)var3.get()).name(); + if (var4 == null) { + var7 = -1804078547; + } else { + var7 = -159818462; + } + break; + case 1441548384: + var5 = Component.literal(var8); + var6 = Component.literal(" [Apply crosshair]") + .withStyle( + var2x -> var2x.withColor((874855522 | -869219427) + (874855522 & -869219427)) + .withUnderlined(Boolean.valueOf((boolean)((((1746720106 | -1746720105) + (1746720106 & -1746720105))) != 0))) + .withClickEvent(new Custom(CLICK_ID, Optional.of(StringTag.valueOf(var2)))) + .withHoverEvent(new ShowText(var5)) + ); + return var0.copy().append(var6); + case 2045392103: + return var0; + } + } + } + + public static boolean handle(ClickEvent var0) { + Custom var1 = null; + int var2 = -314911107; + + while (true) { + switch (var2) { + case -1138103174: + var1.payload() + .filter(StringTag.class::isInstance) + .map(var0x -> ((StringTag)var0x).value()) + .ifPresent(var0x -> ue.INSTANCE.applySharedCode(var0x, null)); + return (boolean)(((1)) != 0); + case -314911107: + default: + if (var0 instanceof Custom) { + var2 = -172953564; + } else { + var2 = 429071026; + } + break; + case -172953564: + var1 = (Custom)var0; + if (!CLICK_ID.equals(var1.id())) { + var2 = 429071026; + } else { + var2 = -1138103174; + } + break; + case 429071026: + return (boolean)(((0)) != 0); + } + } + } +} diff --git a/src/main/java/defpackage/wv.java b/src/main/java/defpackage/wv.java new file mode 100644 index 0000000..4984c26 --- /dev/null +++ b/src/main/java/defpackage/wv.java @@ -0,0 +1,4 @@ +package defpackage; + +public record wv(xd profile, String name) { +} diff --git a/src/main/java/defpackage/ww.java b/src/main/java/defpackage/ww.java new file mode 100644 index 0000000..71ff6e8 --- /dev/null +++ b/src/main/java/defpackage/ww.java @@ -0,0 +1,665 @@ +package defpackage; + +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.util.Locale; +import java.util.Optional; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public final class ww { + public static final String PREFIX = "EVO2>"; + private static final String LEGACY_PREFIX = "EVO>"; + private static final String SECTION_SEPARATOR = "|"; + private static final String SECTION_SPLIT = "\\|"; + private static final String KEY_SEPARATOR = ":"; + private static final String VALUE_SEPARATOR = ","; + private static final String TRUE = "1"; + private static final String FALSE = "0"; + private static final String KEY_STYLE = "S"; + private static final String KEY_COLOR = "C"; + private static final String KEY_SHAPE = "Z"; + private static final String KEY_OUTLINE = "O"; + private static final String KEY_OPACITY = "A"; + private static final String KEY_DOT = "D"; + private static final String KEY_OUTER = "U"; + private static final String KEY_NAME = "N"; + private static final String COLOR_FORMAT = "%08X"; + private static final int HEX_RADIX = 16; + private static final Pattern VALORANT_PATTERN = Pattern.compile( + "^\\d+;.*" + ); + private static final Pattern EMBEDDED_PATTERN = Pattern.compile( + Pattern.quote("EVO2>") + "[A-Za-z0-9|:,._\\-]+" + ); + private static final String VALORANT_SEPARATOR = ";"; + private static final String VALORANT_PRIMARY = "P"; + private static final String VALORANT_ADS = "A"; + private static final String VALORANT_SNIPER = "S"; + private static final String VALORANT_COLOR = "c"; + private static final String VALORANT_CUSTOM_COLOR = "u"; + private static final String VALORANT_OUTLINE = "h"; + private static final String VALORANT_OUTLINE_THICKNESS = "t"; + private static final String VALORANT_OUTLINE_OPACITY = "o"; + private static final String VALORANT_DOT = "d"; + private static final String VALORANT_DOT_SIZE = "z"; + private static final String VALORANT_DOT_OPACITY = "a"; + private static final String VALORANT_INNER_SHOW = "0b"; + private static final String VALORANT_INNER_THICKNESS = "0t"; + private static final String VALORANT_INNER_LENGTH = "0l"; + private static final String VALORANT_INNER_OFFSET = "0o"; + private static final String VALORANT_INNER_OPACITY = "0a"; + private static final String VALORANT_OUTER_SHOW = "1b"; + private static final String VALORANT_OUTER_LENGTH = "1l"; + private static final String VALORANT_OUTER_OFFSET = "1o"; + private static final int[] VALORANT_COLORS; + private static final int VALORANT_CUSTOM_COLOR_INDEX = 8; + private static final int VALORANT_DEFAULT_THICKNESS = 2; + private static final int VALORANT_DEFAULT_LENGTH = 6; + private static final int VALORANT_DEFAULT_OFFSET = 3; + private static final float VALORANT_DEFAULT_INNER_OPACITY = 0.8F; + private static final float VALORANT_DEFAULT_OUTLINE_OPACITY = 0.5F; + private static final int VALORANT_DEFAULT_OUTLINE_THICKNESS = 1; + private static final int VALORANT_DEFAULT_DOT_SIZE = 2; + private static final float VALORANT_DEFAULT_DOT_OPACITY = 1.0F; + private static final int VALORANT_DEFAULT_OUTER_LENGTH = 2; + private static final int VALORANT_DEFAULT_OUTER_OFFSET = 10; + + private ww() { + } + + public static String encode(xd var0, String var1) { + String var2 = null; + int var3 = 1286075652; + + while (true) { + switch (var3) { + case -1069623043: + return var2 + "|N:" + Base64.getUrlEncoder().withoutPadding().encodeToString(var1.getBytes(StandardCharsets.UTF_8)); + case 435416446: + if (var1.isBlank()) { + var3 = 1956764950; + } else { + var3 = -1069623043; + } + break; + case 1286075652: + default: + var2 = encode(var0); + if (var1 != null) { + var3 = 435416446; + } else { + var3 = 1956764950; + } + break; + case 1956764950: + return var2; + } + } + } + + public static Optional findEmbedded(String var0) { + Matcher var1 = null; + Optional var3 = null; + int var2 = 613466177; + + while (true) { + switch (var2) { + case -1862186366: + var3 = Optional.empty(); + var2 = -737906505; + break; + case -737906505: + return var3; + case -670225177: + var3 = Optional.of(var1.group()); + var2 = -737906505; + break; + case -510922136: + if (!var0.contains("EVO2>")) { + var2 = 448697748; + } else { + var2 = -265270421; + } + break; + case -265270421: + var1 = EMBEDDED_PATTERN.matcher(var0); + if (var1.find()) { + var2 = -670225177; + } else { + var2 = -1862186366; + } + break; + case 448697748: + return Optional.empty(); + case 613466177: + default: + if (var0 != null) { + var2 = -510922136; + } else { + var2 = 448697748; + } + } + } + } + + public static Optional decodeShared(String var0, float var1) { + Optional var2 = decode(var0, var1); + return var2.map(var1x -> new wv(var1x, extractName(var0))); + } + + public static String encode(xd var0) { + String var10000 = var0.style().name(); + Locale var10001 = Locale.ROOT; + String var10002 = "%08X"; + Object[] var10003 = new Object[1]; + var10003[0] = var0.color(); + return "EVO2>S:" + + var10000 + + "|C:" + + String.format(var10001, var10002, var10003) + + "|Z:" + + var0.size() + + "," + + var0.thickness() + + "," + + var0.gap() + + "|O:" + + flag(var0.outline()) + + "," + + number(var0.outlineOpacity()) + + "," + + var0.outlineThickness() + + "|A:" + + number(var0.opacity()) + + "|D:" + + flag(var0.centerDot()) + + "|U:" + + flag(var0.outerLines()) + + "," + + var0.outerLength() + + "," + + var0.outerGap(); + } + + public static Optional decode(String var0, float var1) { + if (var0 == null) { + return Optional.empty(); + } + + String var2 = var0.trim(); + + try { + if (var2.startsWith("EVO2>")) { + return decodeCurrent(var2.substring("EVO2>".length())); + } + + if (var2.startsWith("EVO>")) { + return Optional.of( + xj.fromShareCode(var2.substring("EVO>".length())).toProfile(var1) + ); + } + + if (VALORANT_PATTERN.matcher(var2).matches()) { + return decodeValorant(var2); + } + } catch (RuntimeException var4) { + return Optional.empty(); + } + + return Optional.empty(); + } + + private static Optional decodeCurrent(String var0) { + xd var1 = xd.DEFAULT; + xh var2 = var1.style(); + int var3 = var1.color(); + int var4 = var1.size(); + int var5 = var1.thickness(); + int var6 = var1.gap(); + boolean var7 = var1.outline(); + float var8 = var1.outlineOpacity(); + int var9 = var1.outlineThickness(); + float var10 = var1.opacity(); + boolean var11 = var1.centerDot(); + boolean var12 = var1.outerLines(); + int var13 = var1.outerLength(); + int var14 = var1.outerGap(); + int var15 = 0; + String[] var16 = var0.split("\\|"); + int var17 = var16.length; + + for (int var18 = 0; var18 < var17; var18++) { + String var19 = var16[var18]; + String[] var20 = var19.split(":", (980674481 | -980674479) + (980674481 & -980674479)); + if (var20.length >= (-447509533 | 447509535) + (-447509533 & 447509535)) { + String[] var21 = var20[1] + .split(","); + String var22 = var20[0]; + int var23 = -1; + switch (var22.hashCode()) { + case 65: + if (var22.equals("A")) { + var23 = 4; + } + case 66: + case 69: + case 70: + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + case 77: + case 80: + case 81: + case 82: + case 84: + case 86: + case 87: + case 88: + case 89: + default: + break; + case 67: + if (var22.equals("C")) { + var23 = 1; + } + break; + case 68: + if (var22.equals("D")) { + var23 = 5; + } + break; + case 78: + if (var22.equals("N")) { + var23 = 7; + } + break; + case 79: + if (var22.equals("O")) { + var23 = 3; + } + break; + case 83: + if (var22.equals("S")) { + var23 = 0; + } + break; + case 85: + if (var22.equals("U")) { + var23 = 6; + } + break; + case 90: + if (var22.equals("Z")) { + var23 = 2; + } + } + + switch (var23) { + case 0: + xh var24 = xh.byName(var21[0], null); + if (var24 == null) { + return Optional.empty(); + } + + var2 = var24; + break; + case 1: + var3 = (int)Long.parseLong( + var21[0], (-1297240434 | 1297240450) + (-1297240434 & 1297240450) + ); + break; + case 2: + var4 = Integer.parseInt(var21[0]); + var5 = Integer.parseInt(var21[1]); + var6 = Integer.parseInt(var21[2]); + break; + case 3: + var7 = "1".equals(var21[0]); + var8 = Float.parseFloat(var21[1]); + var9 = Integer.parseInt(var21[2]); + break; + case 4: + var10 = Float.parseFloat(var21[0]); + break; + case 5: + var11 = "1" + .equals(var21[0]); + break; + case 6: + var12 = "1" + .equals(var21[0]); + var13 = Integer.parseInt(var21[1]); + var14 = Integer.parseInt(var21[2]); + break; + case 7: + default: + continue; + } + + var15 = 1; + } + } + + return var15 == 0 ? Optional.empty() : Optional.of(new xd(var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14).sanitized()); + } + + private static Optional decodeValorant(String var0) { + String[] var1 = var0.split(";"); + int var2 = VALORANT_COLORS[0]; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 1; + float var7 = 0.5F; + int var8 = 1; + int var9 = 0; + int var10 = 2; + float var11 = 1.0F; + int var12 = 1; + int var13 = 2; + int var14 = 6; + int var15 = 3; + float var16 = 0.8F; + int var17 = 1; + int var18 = 2; + int var19 = 10; + int var20 = 0; + int var21 = 0; + int var22 = 1; + + while (var22 < var1.length) { + String var23 = var1[var22]; + if (!"P".equals(var23) + && !"A".equals(var23) + && !"S".equals(var23)) { + if (var22 + (-834094733 | 834094734) + (-834094733 & 834094734) >= var1.length) { + break; + } + + String var24 = var1[var22 + 1]; + var22 += 2; + if (var20 != 0) { + String var25 = var23; + int var26 = -1; + switch (var25.hashCode()) { + case 97: + if (var25.equals("a")) { + var26 = 7; + } + break; + case 99: + if (var25.equals("c")) { + var26 = 0; + } + break; + case 100: + if (var25.equals("d")) { + var26 = 5; + } + break; + case 104: + if (var25.equals("h")) { + var26 = 2; + } + break; + case 111: + if (var25.equals("o")) { + var26 = 4; + } + break; + case 116: + if (var25.equals("t")) { + var26 = 3; + } + break; + case 117: + if (var25.equals("u")) { + var26 = 1; + } + break; + case 122: + if (var25.equals("z")) { + var26 = 6; + } + break; + case 1585: + if (var25.equals("0a")) { + var26 = 12; + } + break; + case 1586: + if (var25.equals("0b")) { + var26 = 8; + } + break; + case 1596: + if (var25.equals("0l")) { + var26 = 10; + } + break; + case 1599: + if (var25.equals("0o")) { + var26 = 11; + } + break; + case 1604: + if (var25.equals("0t")) { + var26 = 9; + } + break; + case 1617: + if (var25.equals("1b")) { + var26 = 13; + } + break; + case 1627: + if (var25.equals("1l")) { + var26 = 14; + } + break; + case 1630: + if (var25.equals("1o")) { + var26 = 15; + } + } + + switch (var26) { + case 0: + var3 = Integer.parseInt(var24); + break; + case 1: + var4 = xj.rgbaToArgb(var24); + var5 = 1; + break; + case 2: + var6 = ("1".equals(var24)) ? 1 : 0; + break; + case 3: + var8 = Math.round(Float.parseFloat(var24)); + break; + case 4: + var7 = Float.parseFloat(var24); + break; + case 5: + var9 = ("1".equals(var24)) ? 1 : 0; + break; + case 6: + var10 = Math.round(Float.parseFloat(var24)); + break; + case 7: + var11 = Float.parseFloat(var24); + break; + case 8: + var12 = !"0".equals(var24) + ? 1: 0; + break; + case 9: + var13 = Math.round(Float.parseFloat(var24)); + break; + case 10: + var14 = Math.round(Float.parseFloat(var24)); + break; + case 11: + var15 = Math.round(Float.parseFloat(var24)); + break; + case 12: + var16 = Float.parseFloat(var24); + break; + case 13: + var17 = !"0".equals(var24) + ? 1: 0; + break; + case 14: + var18 = Math.round(Float.parseFloat(var24)); + break; + case 15: + var19 = Math.round(Float.parseFloat(var24)); + } + } + } else { + var20 = ("P".equals(var23)) ? 1 : 0; + var21 |= var20; + var22++; + } + } + + if (var21 == 0) { + return Optional.empty(); + } + + if (var3 == (-1236920561 | 1236920569) + (-1236920561 & 1236920569) && var5 != 0) { + var2 = var4; + } else if (var3 >= 0 && var3 < VALORANT_COLORS.length) { + var2 = VALORANT_COLORS[var3]; + } + + xd var27; + if (var12 == 0 && var9 != 0) { + var27 = new xd( + xh.DOT, + var2, + var10, + var13, + var15, + (boolean)((var6) != 0), + var7, + var8, + var11, + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + var18, + var19 + ); + } else { + var27 = new xd(xh.CROSS, var2, var14, var13, var15, (boolean)var6, var7, var8, var16, (boolean)(((var9) != 0)), (boolean)((var17) != 0), var18, var19); + } + + return Optional.of(var27.sanitized()); + } + + private static String extractName(String var0) { + String var1 = var0.trim(); + if (!var1.startsWith("EVO2>")) { + return null; + } + + String[] var2 = var1.substring("EVO2>".length()) + .split("\\|"); + int var3 = var2.length; + + for (int var4 = 0; var4 < var3; var4++) { + String var5 = var2[var4]; + String[] var6 = var5.split( + ":", (653907017 ^ -653907015) + ((653907017 & -653907015) << 1) + ); + if (var6.length == (-1890553378 | 1890553380) + (-1890553378 & 1890553380) + && "N".equals(var6[0]) + ) + { + try { + String var7 = new String(Base64.getUrlDecoder().decode(var6[1]), StandardCharsets.UTF_8) + .strip(); + return var7.isEmpty() ? null : var7; + } catch (IllegalArgumentException var8) { + return null; + } + } + } + + return null; + } + + private static String flag(boolean var0) { + String var2 = null; + int var1 = 159936041; + + while (true) { + switch (var1) { + case -1839617872: + var2 = "1"; + var1 = 1348934989; + break; + case -1291224881: + var2 = "0"; + var1 = 1348934989; + break; + case 159936041: + default: + if (var0) { + var1 = -1839617872; + } else { + var1 = -1291224881; + } + break; + case 1348934989: + return var2; + } + } + } + + private static String number(float var0) { + int var1 = 0; + String var3 = null; + int var2 = 1322596319; + + while (true) { + switch (var2) { + case -607657039: + var3 = Float.toString(var0); + var2 = -65975992; + break; + case -65975992: + return var3; + case 1043733125: + var3 = Integer.toString(var1); + var2 = -65975992; + break; + case 1322596319: + default: + var1 = (int)var0; + if (var1 == var0) { + var2 = 1043733125; + } else { + var2 = -607657039; + } + } + } + } + + static { + int[] var10000 = new int[8]; + var10000[0] = -1; + var10000[1] = -16711936; + var10000[2] = -5374161; + var10000[3] = -3473617; + var10000[4] = -256; + var10000[5] = -16711681; + var10000[6] = -65281; + var10000[7] = -65536; + VALORANT_COLORS = var10000; + } +} diff --git a/src/main/java/defpackage/wx.java b/src/main/java/defpackage/wx.java new file mode 100644 index 0000000..7428c63 --- /dev/null +++ b/src/main/java/defpackage/wx.java @@ -0,0 +1,105 @@ +package defpackage; + +public final class wx { + private static final float VISIBLE = 1.0F; + private static final float HIDDEN = 0.0F; + private static final float SETTLED_BLEND = 1.0F; + xh style = xh.CROSS; + xh previousStyle = xh.CROSS; + float styleBlend = 1.0F; + int color; + float size; + float thickness; + float gap; + float outline; + float outlineOpacity; + float outlineThickness; + float opacity; + float centerDot; + float outerLines; + float outerLength; + float outerGap; + float indicatorExtent; + + public static wx of(xb var0) { + wx var1 = new wx(); + var1.set(var0); + return var1; + } + + public void set(xb var1) { + this.style = var1.style(); + this.previousStyle = this.style; + this.styleBlend = 1.0F; + this.color = var1.color(); + this.size = var1.size(); + this.thickness = var1.thickness(); + this.gap = var1.gap(); + this.outline = var1.outline() ? 1.0F : 0.0F; + this.outlineOpacity = var1.outlineOpacity(); + this.outlineThickness = var1.outlineThickness(); + this.opacity = var1.opacity(); + this.centerDot = hasCenterDot(var1) ? 1.0F : 0.0F; + this.outerLines = var1.outerLines() && var1.style().hasLines() ? 1.0F : 0.0F; + this.outerLength = var1.outerLength(); + this.outerGap = var1.outerGap(); + this.indicatorExtent = (float)Math.ceil(xf.restExtent(var1)); + } + + public xh style() { + return this.style; + } + + public int color() { + return this.color; + } + + public float thickness() { + return this.thickness; + } + + public float indicatorExtent() { + return this.indicatorExtent; + } + + static boolean hasCenterDot(xb var0) { + int var2 = 0; + int var1 = 2018298665; + + while (true) { + switch (var1) { + case -1055334885: + if (var0.centerDot()) { + var1 = 1313028480; + } else { + var1 = 37610515; + } + break; + case 37610515: + var2 = 0; + var1 = 141812331; + break; + case 141812331: + return (boolean)((var2) != 0); + case 1313028480: + var2 = 1; + var1 = 141812331; + break; + case 2018298665: + default: + if (!var0.style().alwaysHasCenterDot()) { + var1 = 2057558020; + } else { + var1 = 1313028480; + } + break; + case 2057558020: + if (var0.style().allowsCenterDot()) { + var1 = -1055334885; + } else { + var1 = 37610515; + } + } + } + } +} diff --git a/src/main/java/defpackage/wy.java b/src/main/java/defpackage/wy.java new file mode 100644 index 0000000..062cc80 --- /dev/null +++ b/src/main/java/defpackage/wy.java @@ -0,0 +1,354 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.Minecraft; + +public final class wy { + private static final String REQUEST_MARKER = "[evo:crosshair-request]"; + private static final String REQUEST_TEXT = "Can you send me your crosshair? [evo:crosshair-request]"; + private static final String SHARE_FORMAT = "Crosshair \"%s\" %s"; + private static final String OWN_NAME_FORMAT = "%s's crosshair"; + private static final String FALLBACK_NAME_FORMAT = "From %s"; + private static final String STATUS_SENT = "Crosshair sent to %s"; + private static final String STATUS_ASKED = "Asked %s for their crosshair"; + private static final float DECODE_SCALE = 1.0F; + private static final Map INCOMING = new ConcurrentHashMap<>(); + + private wy() { + } + + public static void initialize() { + anb.addUnreadListener(wy::onUnread); + anb.registerResolver(ana.CROSSHAIR_REQUEST, wy::resolveRequest); + anb.registerResolver(ana.CROSSHAIR_RECEIVED, wy::resolveReceived); + } + + public static boolean signedIn() { + return cp.isAuthorized(); + } + + public static List friends() { + ArrayList var0 = new ArrayList<>(anb.friends()); + var0.sort(Comparator.comparing(var0x -> { + int var2 = 0; + int var1 = -930476348; + + while (true) { + switch (var1) { + case -1768743596: + return Boolean.valueOf((boolean)((var2) != 0)); + case -1461969186: + var2 = 0; + var1 = -1768743596; + break; + case -930476348: + default: + if (!var0x.online()) { + var1 = 1362737734; + } else { + var1 = -1461969186; + } + break; + case 1362737734: + var2 = 1; + var1 = -1768743596; + } + } + }).thenComparing(var0x -> var0x.username().toLowerCase(Locale.ROOT))); + return var0; + } + + public static void send(String var0, xd var1, String var2) { + String var10000 = "Crosshair \"%s\" %s"; + Object[] var10001 = new Object[2]; + var10001[0] = var2; + var10001[1] = ww.encode(var1, var2); + String var3 = String.format(var10000, var10001); + anb.sendMessage(var0, var3, var1x -> { + String var3x = null; + int var2x = -1055689929; + + while (true) { + switch (var2x) { + case -1798869586: + var3x = var1x; + var2x = 1786738051; + break; + case -1055689929: + default: + if (var1x == null) { + var2x = 476350770; + } else { + var2x = -1798869586; + } + break; + case 476350770: + String var10000x = "Crosshair sent to %s"; + Object[] var10001x = new Object[1]; + var10001x[0] = var0; + var3x = String.format(var10000x, var10001x); + var2x = 1786738051; + break; + case 1786738051: + notifyStatus(var3x); + return; + } + } + }); + } + + public static void ask(String var0) { + anb.sendMessage( + var0, + "Can you send me your crosshair? [evo:crosshair-request]", + var1 -> { + String var3 = null; + int var2 = -1669676579; + + while (true) { + switch (var2) { + case -1669676579: + default: + if (var1 == null) { + var2 = 641779528; + } else { + var2 = -1179471270; + } + break; + case -1179471270: + var3 = var1; + var2 = 1752828853; + break; + case 641779528: + String var10000 = "Asked %s for their crosshair"; + Object[] var10001 = new Object[1]; + var10001[0] = var0; + var3 = String.format(var10000, var10001); + var2 = 1752828853; + break; + case 1752828853: + notifyStatus(var3); + return; + } + } + } + ); + } + + private static void onUnread(String var0, int var1) { + anb.thread(var0, var2 -> accept(var0, var1, var2)); + } + + static void accept(String var0, int var1, List var2) { + String var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = 0; + amw var7 = null; + Optional var8 = null; + int var9 = -1919253101; + + while (true) { + switch (var9) { + case -2117610286: + if (ww.decode((String)var8.get(), 1.0F).isPresent()) { + var9 = -891878690; + } else { + var9 = 820951357; + } + break; + case -1924970621: + var4 = 1; + var9 = 820951357; + break; + case -1919253101: + default: + if (var2 == null) { + var9 = 282253735; + } else { + var9 = 784172526; + } + break; + case -1875533287: + var5++; + if (var7.text().contains("[evo:crosshair-request]")) { + var9 = -1924970621; + } else { + var9 = -1138110372; + } + break; + case -1666533151: + if (var3 != null) { + var9 = -874723272; + } else { + var9 = -1358072113; + } + break; + case -1633019486: + if (var7.text() == null) { + var9 = -1320036708; + } else { + var9 = -1875533287; + } + break; + case -1358072113: + if (var4 != 0) { + var9 = -688266548; + } else { + var9 = 1508306916; + } + break; + case -1320036708: + var9 = 820951357; + break; + case -1138110372: + if (var3 == null) { + var9 = -936695936; + } else { + var9 = 820951357; + } + break; + case -936695936: + var8 = ww.findEmbedded(var7.text()); + if (var8.isPresent()) { + var9 = -2117610286; + } else { + var9 = 820951357; + } + break; + case -891878690: + var3 = (String)var8.get(); + var9 = 820951357; + break; + case -874723272: + INCOMING.put(key(var0), var3); + replaceMessagePopup(var0, ana.CROSSHAIR_RECEIVED); + var9 = -1358072113; + break; + case -688266548: + replaceMessagePopup(var0, ana.CROSSHAIR_REQUEST); + var9 = 1508306916; + break; + case 282253735: + return; + case 327884224: + var7 = (amw)var2.get(var6); + if (!var7.mine()) { + var9 = -1633019486; + } else { + var9 = 820951357; + } + break; + case 767250748: + if (var5 < var1) { + var9 = 327884224; + } else { + var9 = -1666533151; + } + break; + case 784172526: + var3 = null; + var4 = 0; + var5 = 0; + var6 = var2.size() - (1); + var9 = 1887731006; + break; + case 820951357: + var6--; + var9 = 1887731006; + break; + case 1508306916: + return; + case 1887731006: + if (var6 >= 0) { + var9 = 767250748; + } else { + var9 = -1666533151; + } + } + } + } + + private static void replaceMessagePopup(String var0, ana var1) { + anb.dropPopups(ana.MESSAGE, var0::equalsIgnoreCase); + anb.pushPopup(new amz(var0, 0, var1)); + } + + private static void resolveRequest(amz var0, boolean var1) { + String var2 = null; + int var3 = -1954349368; + + while (true) { + switch (var3) { + case -1954349368: + default: + if (!var1) { + var3 = 1993521983; + } else { + var3 = 189660598; + } + break; + case 189660598: + String var10000 = "%s's crosshair"; + Object[] var10001 = new Object[1]; + var10001[0] = Minecraft.getInstance().getUser().getName(); + var2 = String.format(var10000, var10001); + send(var0.username(), ue.INSTANCE.currentProfile(), var2); + return; + case 1993521983: + return; + } + } + } + + private static void resolveReceived(amz var0, boolean var1) { + String var2 = null; + int var3 = -1548608254; + + while (true) { + switch (var3) { + case -1548608254: + default: + var2 = INCOMING.remove(key(var0.username())); + if (var1) { + var3 = -1070559723; + } else { + var3 = 580708314; + } + break; + case -1070559723: + if (var2 != null) { + var3 = 1601601452; + } else { + var3 = 580708314; + } + break; + case 580708314: + return; + case 1601601452: + Minecraft.getInstance().execute(() -> { + ue var10000 = ue.INSTANCE; + String var10002 = "From %s"; + Object[] var10003 = new Object[1]; + var10003[0] = var0.username(); + var10000.applySharedCode(var2, String.format(var10002, var10003)); + }); + var3 = 580708314; + } + } + } + + private static String key(String var0) { + return var0.toLowerCase(Locale.ROOT); + } + + private static void notifyStatus(String var0) { + le.getInstance().addCustomNotification(rk.glyph(ue.INSTANCE), ue.INSTANCE.getName(), var0); + } +} diff --git a/src/main/java/defpackage/wz.java b/src/main/java/defpackage/wz.java new file mode 100644 index 0000000..8115c29 --- /dev/null +++ b/src/main/java/defpackage/wz.java @@ -0,0 +1,4 @@ +package defpackage; + +public record wz(String name, xd profile, wx frame) { +} diff --git a/src/main/java/defpackage/x.java b/src/main/java/defpackage/x.java new file mode 100644 index 0000000..50602a5 --- /dev/null +++ b/src/main/java/defpackage/x.java @@ -0,0 +1,17 @@ +package defpackage; + +public interface x { + void hMI5_0$setTransform(boolean var1); + + void hMI5_0$setTransform(int var1); + + int hMI5_0$getTransform(); + + void hMI5_0$setSwingSpeed(int var1); + + int hMI5_0$getSwingSpeed(); + + void hMI5_0$setRenderAsBlock(boolean var1); + + int hMI5_0$getRenderAsBlock(); +} diff --git a/src/main/java/defpackage/xa.java b/src/main/java/defpackage/xa.java new file mode 100644 index 0000000..59bcadd --- /dev/null +++ b/src/main/java/defpackage/xa.java @@ -0,0 +1,440 @@ +package defpackage; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.AtomicMoveNotSupportedException; +import java.nio.file.CopyOption; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public final class xa { + public static final int MAX_ENTRIES = 24; + public static final int MAX_NAME_LENGTH = 24; + private static final String KEY_NAME = "name"; + private static final String KEY_CODE = "code"; + private static final String TEMP_SUFFIX = ".tmp"; + private static final String NUMBER_SEPARATOR = " "; + private static final String WRITER_THREAD = "evo-crosshair-presets"; + private static final String READ_FAILURE = "crosshair presets {} could not be read"; + private static final String WRITE_FAILURE = "crosshair presets {} could not be written"; + private static final String ENTRY_SKIPPED = "crosshair preset entry skipped in {}"; + private static final float NO_LEGACY_SCALE = 1.0F; + private static final ExecutorService WRITER = Executors.newSingleThreadExecutor( + var0 -> { + Thread var1 = new Thread( + var0, "evo-crosshair-presets" + ); + var1.setDaemon((boolean)((((2139495210 | -2139495209) + (2139495210 & -2139495209))) != 0)); + return var1; + } + ); + private final Path file; + private final List entries = new ArrayList<>(); + private boolean loaded; + + public xa(Path var1) { + this.file = var1; + } + + public int size() { + this.ensureLoaded(); + return this.entries.size(); + } + + public wz get(int var1) { + this.ensureLoaded(); + return this.entries.get(var1); + } + + public boolean isFull() { + int var2 = 0; + int var1 = 918949845; + + while (true) { + switch (var1) { + case -335047670: + var2 = 1; + var1 = 790543484; + break; + case 144711220: + var2 = 0; + var1 = 790543484; + break; + case 790543484: + return (boolean)((var2) != 0); + case 918949845: + default: + if (this.size() >= (-38696950 | 38696974) + (-38696950 & 38696974)) { + var1 = -335047670; + } else { + var1 = 144711220; + } + } + } + } + + public int indexOf(xb var1) { + int var2 = 0; + int var3 = 1682637113; + + while (true) { + switch (var3) { + case -1481602381: + if (xd.matches(this.entries.get(var2).profile(), var1)) { + var3 = -135497843; + } else { + var3 = -1281548446; + } + break; + case -1281548446: + var2++; + var3 = -737139340; + break; + case -737139340: + if (var2 < this.entries.size()) { + var3 = -1481602381; + } else { + var3 = 564790859; + } + break; + case -135497843: + return var2; + case 564790859: + return -1; + case 1682637113: + default: + this.ensureLoaded(); + var2 = 0; + var3 = -737139340; + } + } + } + + public boolean add(String var1, xd var2) { + int var3 = -1721578230; + + while (true) { + switch (var3) { + case -1721578230: + default: + this.ensureLoaded(); + if (this.entries.size() >= (-1905499656 ^ 1905499680) + ((-1905499656 & 1905499680) << 1)) { + var3 = -818609159; + } else { + var3 = 983006226; + } + break; + case -818609159: + return (boolean)(((0)) != 0); + case 983006226: + this.entries.add(new wz(clampName(var1), var2, wx.of(var2))); + this.persist(); + return (boolean)(((1)) != 0); + } + } + } + + public void remove(int var1) { + int var2 = 602004678; + + while (true) { + switch (var2) { + case 91082347: + return; + case 485805230: + if (var1 >= this.entries.size()) { + var2 = 91082347; + } else { + var2 = 660009421; + } + break; + case 602004678: + default: + this.ensureLoaded(); + if (var1 >= 0) { + var2 = 485805230; + } else { + var2 = 91082347; + } + break; + case 660009421: + this.entries.remove(var1); + this.persist(); + return; + } + } + } + + public String nextDefaultName(String var1) { + int var2 = 0; + String var3 = null; + int var4 = 57659069; + + while (true) { + switch (var4) { + case -1154904182: + return var3; + case -1036881012: + if (this.containsName(var3)) { + var4 = 881324123; + } else { + var4 = -1154904182; + } + break; + case 57659069: + default: + this.ensureLoaded(); + var2 = this.entries.size() + 1; + var3 = var1 + " " + var2; + var4 = -1036881012; + break; + case 881324123: + var3 = var1 + " " + ++var2; + var4 = -1036881012; + } + } + } + + public static String clampName(String var0) { + String var1 = null; + String var3 = null; + String var4 = null; + int var2 = -1473851204; + + while (true) { + switch (var2) { + case -1830355032: + var3 = ""; + var2 = 872363880; + break; + case -1473851204: + default: + if (var0 == null) { + var2 = -1830355032; + } else { + var2 = -569729771; + } + break; + case -569729771: + var3 = var0.strip(); + var2 = 872363880; + break; + case -17619000: + var4 = var1; + var2 = 2123747285; + break; + case 405655846: + var4 = var1.substring(0, (-1635799674 | 1635799698) + (-1635799674 & 1635799698)); + var2 = 2123747285; + break; + case 872363880: + var1 = var3; + if (var1.length() > (1227865686 ^ -1227865662) + ((1227865686 & -1227865662) << 1)) { + var2 = 405655846; + } else { + var2 = -17619000; + } + break; + case 2123747285: + return var4; + } + } + } + + private boolean containsName(String var1) { + Iterator var2 = null; + wz var3 = null; + int var4 = 1889769644; + + while (true) { + switch (var4) { + case -1961498435: + if (var2.hasNext()) { + var4 = 1878748766; + } else { + var4 = -1586135326; + } + break; + case -1873356492: + var4 = -1961498435; + break; + case -1586135326: + return (boolean)(((0)) != 0); + case -1251692522: + return (boolean)(((1)) != 0); + case 1878748766: + var3 = (wz)var2.next(); + if (var3.name().equalsIgnoreCase(var1)) { + var4 = -1251692522; + } else { + var4 = -1873356492; + } + break; + case 1889769644: + default: + var2 = this.entries.iterator(); + var4 = -1961498435; + } + } + } + + private void ensureLoaded() { + if (!this.loaded) { + this.loaded = (boolean)(((1)) != 0); + if (Files.isRegularFile(this.file)) { + try { + JsonElement var1 = JsonParser.parseString(Files.readString(this.file, StandardCharsets.UTF_8)); + if (!var1.isJsonArray()) { + id.warn( + Cif.CONFIG, + "crosshair presets {} could not be read", + this.file.getFileName() + ); + return; + } + + for (JsonElement var3 : var1.getAsJsonArray()) { + readEntry(var3) + .ifPresentOrElse( + this.entries::add, + () -> id.warn( + Cif.CONFIG, + "crosshair preset entry skipped in {}", + this.file.getFileName() + ) + ); + if (this.entries.size() >= (409011651 ^ -409011627) + ((409011651 & -409011627) << 1)) { + break; + } + } + } catch (IOException | RuntimeException var4) { + id.warn( + Cif.CONFIG, + "crosshair presets {} could not be read", + this.file.getFileName(), + var4 + ); + } + } + } + } + + private static Optional readEntry(JsonElement var0) { + JsonObject var1 = null; + String var2 = null; + int var3 = -21105412; + + while (true) { + switch (var3) { + case -2121542719: + return Optional.empty(); + case -1764337802: + var1 = var0.getAsJsonObject(); + if (var1.has("name")) { + var3 = 392569615; + } else { + var3 = -933719277; + } + break; + case -933719277: + return Optional.empty(); + case -21105412: + default: + if (!var0.isJsonObject()) { + var3 = -2121542719; + } else { + var3 = -1764337802; + } + break; + case 392569615: + if (!var1.has("code")) { + var3 = -933719277; + } else { + var3 = 632032887; + } + break; + case 632032887: + var2 = clampName(var1.get("name").getAsString()); + return ww.decode(var1.get("code").getAsString(), 1.0F) + .map(var1x -> new wz(var2, var1x, wx.of(var1x))); + } + } + } + + private void persist() { + JsonArray var1 = null; + Iterator var2 = null; + wz var3 = null; + JsonObject var4 = null; + int var5 = -1762440203; + + while (true) { + switch (var5) { + case -1762440203: + default: + var1 = new JsonArray(); + var2 = this.entries.iterator(); + var5 = 1713193458; + break; + case -1080284614: + String var6 = var1.toString(); + WRITER.execute(() -> this.write(var6)); + return; + case 513989948: + var3 = (wz)var2.next(); + var4 = new JsonObject(); + var4.addProperty("name", var3.name()); + var4.addProperty("code", ww.encode(var3.profile())); + var1.add(var4); + var5 = 1713193458; + break; + case 1713193458: + if (var2.hasNext()) { + var5 = 513989948; + } else { + var5 = -1080284614; + } + } + } + } + + private void write(String var1) { + Path var2 = this.file.resolveSibling(this.file.getFileName() + ".tmp"); + + try { + Files.createDirectories(this.file.getParent()); + Files.writeString(var2, var1, StandardCharsets.UTF_8); + + try { + Path var6 = this.file; + CopyOption[] var7 = new CopyOption[2]; + var7[0] = StandardCopyOption.REPLACE_EXISTING; + var7[1] = StandardCopyOption.ATOMIC_MOVE; + Files.move(var2, var6, var7); + } catch (AtomicMoveNotSupportedException var4) { + Path var10001 = this.file; + CopyOption[] var10002 = new CopyOption[1]; + var10002[0] = StandardCopyOption.REPLACE_EXISTING; + Files.move(var2, var10001, var10002); + } + } catch (IOException var5) { + id.warn( + Cif.CONFIG, + "crosshair presets {} could not be written", + this.file.getFileName(), + var5 + ); + } + } +} diff --git a/src/main/java/defpackage/xb.java b/src/main/java/defpackage/xb.java new file mode 100644 index 0000000..4e72e20 --- /dev/null +++ b/src/main/java/defpackage/xb.java @@ -0,0 +1,29 @@ +package defpackage; + +public interface xb { + xh style(); + + int color(); + + int size(); + + int thickness(); + + int gap(); + + boolean outline(); + + float outlineOpacity(); + + int outlineThickness(); + + float opacity(); + + boolean centerDot(); + + boolean outerLines(); + + int outerLength(); + + int outerGap(); +} diff --git a/src/main/java/defpackage/xc.java b/src/main/java/defpackage/xc.java new file mode 100644 index 0000000..e9dc5d2 --- /dev/null +++ b/src/main/java/defpackage/xc.java @@ -0,0 +1,213 @@ +package defpackage; + +public enum xc { + CLASSIC( + "Classic", + "White cross with a thin outline", + new xd( + xh.CROSS, + -1, + 6, + 2, + 3, + (boolean)(((1)) != 0), + 1.0F, + 1, + 1.0F, + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + 2, + (93450535 | -93450525) + (93450535 & -93450525) + ) + ), + DOT( + "Dot", + "Small cyan dot", + new xd( + xh.DOT, + -16711681, + 4, + 2, + 0, + (boolean)(((1)) != 0), + 1.0F, + 1, + 1.0F, + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + 2, + (112401053 | -112401043) + (112401053 & -112401043) + ) + ), + CIRCLE( + "Circle", + "Thin ring with a centre dot", + new xd( + xh.CIRCLE_DOT, + -1, + 9, + 1, + 0, + (boolean)(((1)) != 0), + 0.8F, + 1, + 1.0F, + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + 2, + (1613111968 ^ -1613111958) + ((1613111968 & -1613111958) << 1) + ) + ), + VALORANT( + "Valorant", + "Cyan cross with short outer lines", + new xd( + xh.CROSS, + -16711681, + 5, + 2, + 3, + (boolean)(((1)) != 0), + 0.8F, + 1, + 1.0F, + (boolean)(((0)) != 0), + (boolean)(((1)) != 0), + 2, + (-965786944 ^ 965786954) + ((-965786944 & 965786954) << 1) + ) + ), + CS( + "CS", + "Thin green cross with a small gap", + new xd( + xh.CROSS, + -16711936, + 5, + 1, + 2, + (boolean)(((1)) != 0), + 1.0F, + 1, + 1.0F, + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + 2, + (430594133 ^ -430594123) + ((430594133 & -430594123) << 1) + ) + ), + SNIPER( + "Sniper", + "Long thin cross with a centre dot", + new xd( + xh.CROSS, + -49088, + 12, + 1, + 5, + (boolean)(((1)) != 0), + 1.0F, + 1, + 1.0F, + (boolean)(((1)) != 0), + (boolean)(((0)) != 0), + 2, + (317016984 ^ -317016974) + ((317016984 & -317016974) << 1) + ) + ); + + private static final xc[] VALUES = values(); + private final String displayName; + private final String description; + private final xd profile; + + xc(String var3, String var4, xd var5) { + this.displayName = var3; + this.description = var4; + this.profile = var5; + } + + public String displayName() { + return this.displayName; + } + + public String description() { + return this.description; + } + + public xd profile() { + return this.profile; + } + + public static xc byDisplayName(String var0) { + xc[] var1 = null; + int var2 = 0; + int var3 = 0; + xc var4 = null; + int var5 = -711107632; + + while (true) { + switch (var5) { + case -711107632: + default: + var1 = VALUES; + var2 = var1.length; + var3 = 0; + var5 = 1293741354; + break; + case -433731324: + var3++; + var5 = 1293741354; + break; + case 245966502: + return var4; + case 1030195608: + return null; + case 1293741354: + if (var3 < var2) { + var5 = 1303882299; + } else { + var5 = 1030195608; + } + break; + case 1303882299: + var4 = var1[var3]; + if (var4.displayName.equals(var0)) { + var5 = 245966502; + } else { + var5 = -433731324; + } + } + } + } + + public static String[] displayNames() { + String[] var0 = null; + int var1 = 0; + int var2 = 152401330; + + while (true) { + switch (var2) { + case -2065294814: + var0[var1] = VALUES[var1].displayName; + var1++; + var2 = 952217079; + break; + case -34421164: + return var0; + case 152401330: + default: + var0 = new String[VALUES.length]; + var1 = 0; + var2 = 952217079; + break; + case 952217079: + if (var1 < VALUES.length) { + var2 = -2065294814; + } else { + var2 = -34421164; + } + } + } + } +} diff --git a/src/main/java/defpackage/xd.java b/src/main/java/defpackage/xd.java new file mode 100644 index 0000000..955966f --- /dev/null +++ b/src/main/java/defpackage/xd.java @@ -0,0 +1,267 @@ +package defpackage; + +public record xd( + xh style, + int color, + int size, + int thickness, + int gap, + boolean outline, + float outlineOpacity, + int outlineThickness, + float opacity, + boolean centerDot, + boolean outerLines, + int outerLength, + int outerGap +) implements xb { + public static final int MIN_SIZE = 1; + public static final int MAX_SIZE = 30; + public static final int DEFAULT_SIZE = 6; + public static final int DEFAULT_DOT_SIZE = 4; + public static final int MIN_THICKNESS = 1; + public static final int MAX_THICKNESS = 10; + public static final int DEFAULT_THICKNESS = 2; + public static final int MIN_GAP = 0; + public static final int MAX_GAP = 30; + public static final int DEFAULT_GAP = 3; + public static final int MIN_OUTLINE_THICKNESS = 1; + public static final int MAX_OUTLINE_THICKNESS = 4; + public static final int DEFAULT_OUTLINE_THICKNESS = 1; + public static final float MIN_OPACITY = 0.1F; + public static final float MAX_OPACITY = 1.0F; + public static final float DEFAULT_OPACITY = 1.0F; + public static final float MIN_OUTLINE_OPACITY = 0.0F; + public static final float DEFAULT_OUTLINE_OPACITY = 1.0F; + public static final int MIN_OUTER_LENGTH = 1; + public static final int MAX_OUTER_LENGTH = 20; + public static final int DEFAULT_OUTER_LENGTH = 2; + public static final int MIN_OUTER_GAP = 0; + public static final int MAX_OUTER_GAP = 40; + public static final int DEFAULT_OUTER_GAP = 10; + public static final int WHITE = -1; + public static final xd DEFAULT = new xd( + xh.CROSS, + -1, + 6, + 2, + 3, + (boolean)(((1)) != 0), + 1.0F, + 1, + 1.0F, + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + 2, + (-1819868274 | 1819868284) + (-1819868274 & 1819868284) + ); + + public static boolean matches(xb var0, xb var1) { + int var3 = 0; + int var2 = -676242631; + + while (true) { + switch (var2) { + case -1584674450: + if (var0.gap() == var1.gap()) { + var2 = 679928535; + } else { + var2 = 387966596; + } + break; + case -1498442596: + if (Float.compare(var0.outlineOpacity(), var1.outlineOpacity()) == 0) { + var2 = 1931739967; + } else { + var2 = 387966596; + } + break; + case -1281694149: + if (Float.compare(var0.opacity(), var1.opacity()) == 0) { + var2 = 305652530; + } else { + var2 = 387966596; + } + break; + case -1073785207: + if (var0.outerLines() == var1.outerLines()) { + var2 = 1993528546; + } else { + var2 = 387966596; + } + break; + case -857138064: + if (var0.outerGap() == var1.outerGap()) { + var2 = 902179800; + } else { + var2 = 387966596; + } + break; + case -676242631: + default: + if (var0.style() == var1.style()) { + var2 = 1893441496; + } else { + var2 = 387966596; + } + break; + case 31014137: + if (var0.size() == var1.size()) { + var2 = 508586484; + } else { + var2 = 387966596; + } + break; + case 305652530: + if (var0.centerDot() == var1.centerDot()) { + var2 = -1073785207; + } else { + var2 = 387966596; + } + break; + case 387966596: + var3 = 0; + var2 = 2146021813; + break; + case 508586484: + if (var0.thickness() == var1.thickness()) { + var2 = -1584674450; + } else { + var2 = 387966596; + } + break; + case 679928535: + if (var0.outline() == var1.outline()) { + var2 = -1498442596; + } else { + var2 = 387966596; + } + break; + case 902179800: + var3 = 1; + var2 = 2146021813; + break; + case 1893441496: + if (var0.color() == var1.color()) { + var2 = 31014137; + } else { + var2 = 387966596; + } + break; + case 1931739967: + if (var0.outlineThickness() == var1.outlineThickness()) { + var2 = -1281694149; + } else { + var2 = 387966596; + } + break; + case 1993528546: + if (var0.outerLength() == var1.outerLength()) { + var2 = -857138064; + } else { + var2 = 387966596; + } + break; + case 2146021813: + return (boolean)((var3) != 0); + } + } + } + + public static xd of(xb var0) { + return new xd( + var0.style(), + var0.color(), + var0.size(), + var0.thickness(), + var0.gap(), + var0.outline(), + var0.outlineOpacity(), + var0.outlineThickness(), + var0.opacity(), + var0.centerDot(), + var0.outerLines(), + var0.outerLength(), + var0.outerGap() + ); + } + + public xd withStyle(xh var1) { + return new xd( + var1, + this.color, + this.size, + this.thickness, + this.gap, + this.outline, + this.outlineOpacity, + this.outlineThickness, + this.opacity, + this.centerDot, + this.outerLines, + this.outerLength, + this.outerGap + ); + } + + public xd withColor(int var1) { + return new xd( + this.style, + var1, + this.size, + this.thickness, + this.gap, + this.outline, + this.outlineOpacity, + this.outlineThickness, + this.opacity, + this.centerDot, + this.outerLines, + this.outerLength, + this.outerGap + ); + } + + public xd sanitized() { + return new xd( + this.style == null ? xh.CROSS : this.style, + this.color, + clamp(this.size, 1, (1951274100 ^ -1951274070) + ((1951274100 & -1951274070) << 1)), + clamp(this.thickness, 1, (-1262284666 | 1262284676) + (-1262284666 & 1262284676)), + clamp(this.gap, 0, (-1168548253 | 1168548283) + (-1168548253 & 1168548283)), + this.outline, + clamp(this.outlineOpacity, 0.0F, 1.0F), + clamp(this.outlineThickness, 1, (2058380335 | -2058380331) + (2058380335 & -2058380331)), + clamp(this.opacity, 0.1F, 1.0F), + this.centerDot, + this.outerLines, + clamp(this.outerLength, 1, (-1968551524 ^ 1968551544) + ((-1968551524 & 1968551544) << 1)), + clamp(this.outerGap, 0, (1942698402 ^ -1942698362) + ((1942698402 & -1942698362) << 1)) + ); + } + + private static int clamp(int var0, int var1, int var2) { + return Math.max(var1, Math.min(var2, var0)); + } + + private static float clamp(float var0, float var1, float var2) { + int var3 = 1615707458; + + while (true) { + switch (var3) { + case -113482933: + return var2; + case 1615707458: + default: + if (Float.isNaN(var0)) { + var3 = -113482933; + } else { + var3 = 1910537924; + } + break; + case 1910537924: + return Math.max(var1, Math.min(var2, var0)); + } + } + } +} diff --git a/src/main/java/defpackage/xe.java b/src/main/java/defpackage/xe.java new file mode 100644 index 0000000..62d72c4 --- /dev/null +++ b/src/main/java/defpackage/xe.java @@ -0,0 +1,51 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:xe.class */ +/* synthetic */ class xe { + static final /* synthetic */ int[] $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle; + static final /* synthetic */ int[] $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CooldownIndicator = new int[ws.values().length]; + + static { + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CooldownIndicator[ws.BAR.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CooldownIndicator[ws.RING.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CooldownIndicator[ws.SPREAD.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CooldownIndicator[ws.OFF.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle = new int[xh.values().length]; + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle[xh.CROSS.ordinal()] = 1; + } catch (NoSuchFieldError e5) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle[xh.T_SHAPE.ordinal()] = 2; + } catch (NoSuchFieldError e6) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle[xh.DOT.ordinal()] = 3; + } catch (NoSuchFieldError e7) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle[xh.CIRCLE.ordinal()] = 4; + } catch (NoSuchFieldError e8) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle[xh.CIRCLE_DOT.ordinal()] = 5; + } catch (NoSuchFieldError e9) { + } + try { + $SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle[xh.CHEVRON.ordinal()] = 6; + } catch (NoSuchFieldError e10) { + } + } +} diff --git a/src/main/java/defpackage/xf.java b/src/main/java/defpackage/xf.java new file mode 100644 index 0000000..9c6b710 --- /dev/null +++ b/src/main/java/defpackage/xf.java @@ -0,0 +1,497 @@ +package defpackage; + +public final class xf { + private static final int OUTLINE_ARGB = -16777216; + private static final float HALF = 0.5F; + private static final float MIN_ALPHA = 0.002F; + private static final float CENTER_DOT_MIN = 2.0F; + private static final float CENTER_DOT_GROWTH = 2.0F; + private static final float ROUND_DOT_START = 3.0F; + private static final float JOIN_FADE = 1.0F; + private static final float DIAGONAL = 0.70710677F; + private static final float CHEVRON_RIGHT_ANGLE = (float) (Math.PI / 4); + private static final float CHEVRON_LEFT_ANGLE = (float) (Math.PI * 3.0 / 4.0); + private static final float STYLE_SHRINK = 0.2F; + private static final float FULL_PROGRESS = 1.0F; + private static final float MIN_VISIBLE_PROGRESS = 0.001F; + private static final float BAR_MARGIN = 3.0F; + private static final float BAR_HEIGHT = 2.0F; + private static final float BAR_FRAME = 1.0F; + private static final float BAR_MIN_HALF_WIDTH = 8.0F; + private static final float BAR_TRACK_ALPHA = 0.55F; + private static final float RING_MARGIN = 3.0F; + private static final float RING_THICKNESS = 2.0F; + private static final float RING_TRACK_ALPHA = 0.35F; + private static final float RING_ANTIALIAS_COMPENSATION = 1.0F; + + private xf() { + } + + public static float parityHalf(float var0) { + float var2 = 0.0F; + int var1 = 1619319159; + + while (true) { + switch (var1) { + case -2028119270: + return var2; + case -368953764: + var2 = 0.0F; + var1 = -2028119270; + break; + case 467826187: + var2 = 0.5F; + var1 = -2028119270; + break; + case 1619319159: + default: + if ((Math.round(var0) & (-304597980 | 304597981) + (-304597980 & 304597981)) == (-795005729 ^ 795005730) + ((-795005729 & 795005730) << 1)) { + var1 = 467826187; + } else { + var1 = -368953764; + } + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public static float restExtent(xb var0) { + float var1 = switch (xe.$SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle[var0.style().ordinal()]) { + case 1, 2 -> { + float var2 = parityHalf(var0.thickness()); + float var3 = var0.gap() + var2 + var0.size(); + float var4 = var0.outerLines() ? var0.outerGap() + var2 + var0.outerLength() : 0.0F; + yield Math.max(var3, var4); + } + case 3 -> var0.size() * 0.5F; + case 4, 5 -> var0.size() + var0.thickness() * 0.5F; + case 6 -> (var0.size() + var0.thickness()) * 0.70710677F; + default -> throw new MatchException(null, null); + }; + return var0.outline() ? var1 + var0.outlineThickness() : var1; + } + + public static float extent(wx var0, float var1) { + return Math.max(styleExtent(var0, var0.style, var1), var0.styleBlend < 1.0F ? styleExtent(var0, var0.previousStyle, var1) : 0.0F); + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public static float cooldownExtent(wx var0, ws var1) { + return switch (xe.$SwitchMap$evo$systems$client$modules$impl$render$crosshair$CooldownIndicator[var1.ordinal()]) { + case 1 -> var0.indicatorExtent + 3.0F + 2.0F + 1.0F; + case 2 -> var0.indicatorExtent + 3.0F + 2.0F; + case 3, 4 -> var0.indicatorExtent; + default -> throw new MatchException(null, null); + }; + } + + public static void draw(aru var0, wx var1, float var2, float var3, float var4, float var5, float var6, int var7, float var8) { + float var9 = 0.0F; + int var10 = -1546955175; + + while (true) { + switch (var10) { + case -1546955175: + default: + var9 = var1.styleBlend; + if (var9 >= 1.0F) { + var10 = -491051293; + } else { + var10 = 2105506586; + } + break; + case -491051293: + drawStyle(var0, var1, var1.style, var2, var3, var4, var5, var6, var7, var8); + return; + case 2105506586: + drawStyle(var0, var1, var1.previousStyle, var2, var3, var4 * (1.0F - 0.2F * var9), var5, var6, var7, var8 * (1.0F - var9)); + drawStyle(var0, var1, var1.style, var2, var3, var4 * (1.0F - 0.2F * (1.0F - var9)), var5, var6, var7, var8 * var9); + return; + } + } + } + + public static void drawCooldownBar(aru var0, wx var1, float var2, float var3, float var4, float var5, float var6, int var7, float var8) { + float var9 = Math.max(8.0F, var1.indicatorExtent) * var4 + var5; + float var10 = var3 + (var1.indicatorExtent + 3.0F) * var4 + var5; + float var11 = var2 - var9; + float var12 = var9 * 2.0F; + float var13 = 2.0F * var4; + float var14 = 1.0F * var4; + var0.drawCoverageRect( + var11 - var14, + var10 - var14, + var12 + var14 * 2.0F, + var13 + var14 * 2.0F, + asu.getRGBWithAlpha(-16777216, 0.55F * var8) + ); + var0.drawCoverageRect(var11, var10, var12 * clampProgress(var6), var13, asu.getRGBWithAlpha(var7, var1.opacity * var8)); + } + + public static void drawCooldownRing(aru var0, wx var1, float var2, float var3, float var4, float var5, float var6, int var7, float var8) { + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = -1657716041; + + while (true) { + switch (var12) { + case -1657716041: + default: + var9 = (var1.indicatorExtent + 3.0F + 1.0F) * var4 + var5; + var10 = 2.0F * var4; + drawBand(var0, var2, var3, var9, var10, 1.0F, asu.getRGBWithAlpha(-16777216, 0.35F * var8)); + var11 = clampProgress(var6); + if (var11 > 0.001F) { + var12 = 666013513; + } else { + var12 = 855422706; + } + break; + case 666013513: + drawBand(var0, var2, var3, var9, var10, var11, asu.getRGBWithAlpha(var7, var1.opacity * var8)); + var12 = 855422706; + break; + case 855422706: + return; + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static float styleExtent(wx var0, xh var1, float var2) { + float var3 = switch (xe.$SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle[var1.ordinal()]) { + case 1, 2 -> { + float var4 = var0.gap + var2 + var0.size + parityHalf(var0.thickness); + float var5 = var0.outerGap + var2 + var0.outerLength + parityHalf(var0.thickness); + yield var0.outerLines > 0.002F ? Math.max(var4, var5) : var4; + } + case 3 -> var0.size * 0.5F; + case 4, 5 -> var0.size + var2 + var0.thickness * 0.5F; + case 6 -> (var0.size + var0.thickness) * 0.70710677F; + default -> throw new MatchException(null, null); + }; + return var3 + var0.outlineThickness * var0.outline; + } + + private static void drawStyle(aru var0, wx var1, xh var2, float var3, float var4, float var5, float var6, float var7, int var8, float var9) { + float var10 = 0.0F; + int var11 = 1117839248; + + while (true) { + switch (var11) { + case -1676741316: + return; + case -404308082: + drawElements( + var0, + var1, + var2, + var3, + var4, + var5, + var6, + var7, + var1.outlineThickness * var5, + -16777216, + var10, + (boolean)((((1319197433 | -1319197433) + (1319197433 & -1319197433)) + ) != 0)); + var11 = 150075496; + break; + case 150075496: + drawElements( + var0, + var1, + var2, + var3, + var4, + var5, + var6, + var7, + 0.0F, + var8, + var1.opacity * var9, + (boolean)((((1360324626 ^ -1360324625) + ((1360324626 & -1360324625) << 1)) + ) != 0)); + return; + case 391299261: + var10 = var1.outline * var1.outlineOpacity * var9; + if (var10 > 0.002F) { + var11 = -404308082; + } else { + var11 = 150075496; + } + break; + case 1117839248: + default: + if (var9 <= 0.002F) { + var11 = -1676741316; + } else { + var11 = 391299261; + } + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static void drawElements( + aru var0, wx var1, xh var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, float var10, boolean var11 + ) { + int var12 = asu.getRGBWithAlpha(var9, var10); + float var13 = 1.0F; + switch (xe.$SwitchMap$evo$systems$client$modules$impl$render$crosshair$CrosshairStyle[var2.ordinal()]) { + case 1: + case 2: + var13 = drawLines(var0, var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11); + break; + case 3: + drawDot(var0, var3, var4, var1.size, var5, var8, var12); + break; + case 4: + case 5: + drawBand(var0, var3, var4, (var1.size + var7) * var5, var1.thickness * var5 + var8 * 2.0F, 1.0F, var12); + break; + case 6: + drawChevron(var0, var1, var3, var4, var5, var8, var12); + } + + int var14 = !var2.alwaysHasCenterDot() && !var2.allowsCenterDot() + ? 0: 1; + float var15 = var10 * var1.centerDot * var13; + if (var14 != 0 && var15 > 0.002F) { + drawDot(var0, var3, var4, centerDotSize(var1.thickness), var5, var8, asu.getRGBWithAlpha(var9, var15)); + } + } + + private static float drawLines( + aru var0, wx var1, xh var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9, float var10, boolean var11 + ) { + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = 0; + float var15 = 0.0F; + float var16 = 0.0F; + int var17 = 2056124841; + + while (true) { + switch (var17) { + case -1504199574: + if (var15 > 0.0F) { + var17 = 326787062; + } else { + var17 = -390884460; + } + break; + case -610275981: + return 1.0F - var15; + case -390884460: + var16 = var10 * var1.outerLines; + if (var16 > 0.002F) { + var17 = -16011783; + } else { + var17 = -610275981; + } + break; + case -16011783: + drawArmSet( + var0, + var3, + var4, + (var1.outerGap + var7) * var5 + var6, + var1.outerLength * var5, + var12, + var8, + (boolean)((var14) != 0), + asu.getRGBWithAlpha(var9, var16) + ); + var17 = -610275981; + break; + case 326787062: + var0.drawCoverageRect(var3 - var6, var4 - var6, var6 * 2.0F, var6 * 2.0F, asu.getRGBWithAlpha(var9, var10 * var15)); + var17 = -390884460; + break; + case 1811367917: + if (var6 > 0.0F) { + var17 = -1504199574; + } else { + var17 = -390884460; + } + break; + case 2056124841: + default: + var12 = var1.thickness * var5; + var13 = (var1.gap + var7) * var5; + var14 = (var2.hasTopLine()) ? 1 : 0; + drawArmSet(var0, var3, var4, var13 + var6, var1.size * var5, var12, var8, (boolean)((var14) != 0), asu.getRGBWithAlpha(var9, var10)); + var15 = clamp01(1.0F - var13 / (1.0F * var5)); + if (var11) { + var17 = 1811367917; + } else { + var17 = -390884460; + } + } + } + } + + private static void drawArmSet(aru var0, float var1, float var2, float var3, float var4, float var5, float var6, boolean var7, int var8) { + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + int var20 = 35436463; + + while (true) { + switch (var20) { + case -500654384: + drawVertical(var0, var12, var13, var2 - var14, Math.min(var2 - var15, var2), var10, var11, var18, var19, var8); + var20 = 1512641182; + break; + case 35436463: + default: + var9 = var5 * 0.5F; + var10 = var2 - var9 - var6; + var11 = var2 + var9 + var6; + var12 = var1 - var9 - var6; + var13 = var1 + var9 + var6; + var14 = var3 + var4 + var6; + var15 = var3 - var6; + var16 = Math.min(var1 - var15, var1); + var17 = Math.max(var1 + var15, var1); + var0.drawCoverageRect(var1 - var14, var10, var16 - (var1 - var14), var11 - var10, var8); + var0.drawCoverageRect(var17, var10, var1 + var14 - var17, var11 - var10, var8); + var18 = Math.max(var12, var1 - var15); + var19 = Math.min(var13, var1 + var15); + if (var7) { + var20 = -500654384; + } else { + var20 = 1512641182; + } + break; + case 1512641182: + drawVertical(var0, var12, var13, Math.max(var2 + var15, var2), var2 + var14, var10, var11, var18, var19, var8); + return; + } + } + } + + private static void drawVertical(aru var0, float var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, int var9) { + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = -358277835; + + while (true) { + switch (var14) { + case -1590391920: + if (var8 > var7) { + var14 = 1032968464; + } else { + var14 = 396978625; + } + break; + case -1167902190: + var11 = Math.max(var3, var6); + if (var4 > var11) { + var14 = 843247851; + } else { + var14 = -941551790; + } + break; + case -941551790: + var12 = Math.max(var3, var5); + var13 = Math.min(var4, var6); + if (var13 > var12) { + var14 = -1590391920; + } else { + var14 = 396978625; + } + break; + case -358277835: + default: + if (var4 <= var3) { + var14 = 1467274947; + } else { + var14 = 1633840158; + } + break; + case 396978625: + return; + case 843247851: + var0.drawCoverageRect(var1, var11, var2 - var1, var4 - var11, var9); + var14 = -941551790; + break; + case 1032968464: + var0.drawCoverageRect(var7, var12, var8 - var7, var13 - var12, var9); + var14 = 396978625; + break; + case 1142810241: + var0.drawCoverageRect(var1, var3, var2 - var1, var10 - var3, var9); + var14 = -1167902190; + break; + case 1467274947: + return; + case 1633840158: + var10 = Math.min(var4, var5); + if (var10 > var3) { + var14 = 1142810241; + } else { + var14 = -1167902190; + } + } + } + } + + private static void drawDot(aru var0, float var1, float var2, float var3, float var4, float var5, int var6) { + float var7 = var3 * var4 + var5 * 2.0F; + float var8 = var7 * 0.5F * clamp01(var3 - 3.0F); + var0.drawCoverageRect(var1 - var7 * 0.5F, var2 - var7 * 0.5F, var7, var7, var8, var6); + } + + private static void drawChevron(aru var0, wx var1, float var2, float var3, float var4, float var5, int var6) { + float var7 = var1.thickness * var4; + float var8 = var7 * 0.5F; + float var9 = -var8 - var5; + float var10 = var1.size * var4 + var8 + var5 * 2.0F; + float var11 = var7 + var5 * 2.0F; + drawChevronArm(var0, var2, var3, (float) (Math.PI / 4), var9, var10, var11, var6); + drawChevronArm(var0, var2, var3, (float) (Math.PI * 3.0 / 4.0), var9, var10, var11, var6); + } + + private static void drawChevronArm(aru var0, float var1, float var2, float var3, float var4, float var5, float var6, int var7) { + var0.pose().pushMatrix(); + var0.pose().translate(var1, var2); + var0.pose().rotate(var3); + var0.drawCoverageRect(var4, -var6 * 0.5F, var5, var6, var7); + var0.pose().popMatrix(); + } + + private static void drawBand(aru var0, float var1, float var2, float var3, float var4, float var5, int var6) { + float var7 = var4 + 1.0F; + var0.drawRing(var1, var2, var3 + var7 * 0.5F, var7, var5, var6); + } + + private static float centerDotSize(float var0) { + return var0 + 2.0F * clamp01(2.0F - var0); + } + + private static float clamp01(float var0) { + return Math.max(0.0F, Math.min(1.0F, var0)); + } + + private static float clampProgress(float var0) { + return Math.max(0.0F, Math.min(1.0F, var0)); + } +} diff --git a/src/main/java/defpackage/xg.java b/src/main/java/defpackage/xg.java new file mode 100644 index 0000000..9a56b04 --- /dev/null +++ b/src/main/java/defpackage/xg.java @@ -0,0 +1,143 @@ +package defpackage; + +public enum xg { + AUTO( + "Auto", + "Follows your screen height: 720p is 1x, 1080p and 1440p are 2x, 4K is 3x", + (484169160 | -484169160) + (484169160 & -484169160) + ), + X1( + "1x", + "One screen pixel per crosshair pixel", + (-1467829730 ^ 1467829731) + ((-1467829730 & 1467829731) << 1) + ), + X2( + "2x", + "Two screen pixels per crosshair pixel", + (-1002574725 ^ 1002574727) + ((-1002574725 & 1002574727) << 1) + ), + X3( + "3x", + "Three screen pixels per crosshair pixel", + (1286918866 | -1286918863) + (1286918866 & -1286918863) + ), + X4( + "4x", + "Four screen pixels per crosshair pixel", + (-2130143002 | 2130143006) + (-2130143002 & 2130143006) + ); + + private static final xg[] VALUES = values(); + private static final float AUTO_REFERENCE_HEIGHT = 720.0F; + private static final int MIN_PIXELS = 1; + private final String displayName; + private final String description; + private final int fixedPixels; + + xg(String var3, String var4, int var5) { + this.displayName = var3; + this.description = var4; + this.fixedPixels = var5; + } + + public String displayName() { + return this.displayName; + } + + public String description() { + return this.description; + } + + public int pixels(int var1) { + int var2 = -2141237843; + + while (true) { + switch (var2) { + case -2141237843: + default: + if (this != AUTO) { + var2 = 1395899403; + } else { + var2 = 20868483; + } + break; + case 20868483: + return Math.max(1, Math.round(var1 / 720.0F)); + case 1395899403: + return this.fixedPixels; + } + } + } + + public static xg byDisplayName(String var0, xg var1) { + xg[] var2 = null; + int var3 = 0; + int var4 = 0; + xg var5 = null; + int var6 = -1906731571; + + while (true) { + switch (var6) { + case -1906731571: + default: + var2 = VALUES; + var3 = var2.length; + var4 = 0; + var6 = 1341048054; + break; + case -474273243: + return var1; + case 39215189: + var4++; + var6 = 1341048054; + break; + case 505107934: + return var5; + case 867061245: + var5 = var2[var4]; + if (var5.displayName.equals(var0)) { + var6 = 505107934; + } else { + var6 = 39215189; + } + break; + case 1341048054: + if (var4 < var3) { + var6 = 867061245; + } else { + var6 = -474273243; + } + } + } + } + + public static String[] displayNames() { + String[] var0 = null; + int var1 = 0; + int var2 = 1059639506; + + while (true) { + switch (var2) { + case -1501323958: + return var0; + case -1302878080: + if (var1 < VALUES.length) { + var2 = 158682651; + } else { + var2 = -1501323958; + } + break; + case 158682651: + var0[var1] = VALUES[var1].displayName; + var1++; + var2 = -1302878080; + break; + case 1059639506: + default: + var0 = new String[VALUES.length]; + var1 = 0; + var2 = -1302878080; + } + } + } +} diff --git a/src/main/java/defpackage/xh.java b/src/main/java/defpackage/xh.java new file mode 100644 index 0000000..5f19141 --- /dev/null +++ b/src/main/java/defpackage/xh.java @@ -0,0 +1,266 @@ +package defpackage; + +public enum xh { + CROSS( + "Cross", + "Four lines around the aim point", + (boolean)(((1)) != 0), + (boolean)(((1)) != 0), + (boolean)(((0)) != 0), + (boolean)((((517086802 | -517086801) + (517086802 & -517086801)) + ) != 0)), + T_SHAPE( + "T-Shape", + "A cross without the top line, keeps the target clear", + (boolean)(((1)) != 0), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)((((1955991893 ^ -1955991892) + ((1955991893 & -1955991892) << 1)) + ) != 0)), + DOT( + "Dot", + "A single dot, the most minimal choice", + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)((((-1684798464 ^ 1684798464) + ((-1684798464 & 1684798464) << 1)) + ) != 0)), + CIRCLE( + "Circle", + "A ring around the aim point", + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((1)) != 0), + (boolean)((((596082275 | -596082274) + (596082275 & -596082274)) + ) != 0)), + CIRCLE_DOT( + "Circle Dot", + "A ring with a dot in the middle", + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((1)) != 0), + (boolean)((((164769487 ^ -164769487) + ((164769487 & -164769487) << 1)) + ) != 0)), + CHEVRON( + "Chevron", + "An upward chevron with its tip on the aim point", + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + (boolean)((((-1001260586 ^ 1001260587) + ((-1001260586 & 1001260587) << 1)) + ) != 0)); + + private static final xh[] VALUES = values(); + private final String displayName; + private final String description; + private final boolean lines; + private final boolean topLine; + private final boolean ring; + private final boolean optionalCenterDot; + + xh(String var3, String var4, boolean var5, boolean var6, boolean var7, boolean var8) { + this.displayName = var3; + this.description = var4; + this.lines = var5; + this.topLine = var6; + this.ring = var7; + this.optionalCenterDot = var8; + } + + public String displayName() { + return this.displayName; + } + + public String description() { + return this.description; + } + + public boolean hasLines() { + return this.lines; + } + + public boolean hasTopLine() { + return this.topLine; + } + + public boolean hasRing() { + return this.ring; + } + + public boolean allowsCenterDot() { + return this.optionalCenterDot; + } + + public boolean alwaysHasCenterDot() { + int var2 = 0; + int var1 = -116716084; + + while (true) { + switch (var1) { + case -177307007: + return (boolean)((var2) != 0); + case -116716084: + default: + if (this == CIRCLE_DOT) { + var1 = 166994997; + } else { + var1 = 1830863355; + } + break; + case 166994997: + var2 = 1; + var1 = -177307007; + break; + case 1830863355: + var2 = 0; + var1 = -177307007; + } + } + } + + public boolean usesGap() { + return this.lines; + } + + public boolean usesThickness() { + int var2 = 0; + int var1 = 587395970; + + while (true) { + switch (var1) { + case -1472896588: + var2 = 0; + var1 = 132546475; + break; + case 132546475: + return (boolean)((var2) != 0); + case 587395970: + default: + if (this != DOT) { + var1 = 1048867869; + } else { + var1 = -1472896588; + } + break; + case 1048867869: + var2 = 1; + var1 = 132546475; + } + } + } + + public static xh byDisplayName(String var0, xh var1) { + xh[] var2 = null; + int var3 = 0; + int var4 = 0; + xh var5 = null; + int var6 = -1134418305; + + while (true) { + switch (var6) { + case -1134418305: + default: + var2 = VALUES; + var3 = var2.length; + var4 = 0; + var6 = -196414221; + break; + case -818553609: + var4++; + var6 = -196414221; + break; + case -694749215: + var5 = var2[var4]; + if (var5.displayName.equals(var0)) { + var6 = 940162441; + } else { + var6 = -818553609; + } + break; + case -196414221: + if (var4 < var3) { + var6 = -694749215; + } else { + var6 = 1592739865; + } + break; + case 940162441: + return var5; + case 1592739865: + return var1; + } + } + } + + public static xh byName(String var0, xh var1) { + xh[] var2 = null; + int var3 = 0; + int var4 = 0; + xh var5 = null; + int var6 = 1533431797; + + while (true) { + switch (var6) { + case -562394521: + if (var4 < var3) { + var6 = 1684701161; + } else { + var6 = 1433036458; + } + break; + case 1433036458: + return var1; + case 1533431797: + default: + var2 = VALUES; + var3 = var2.length; + var4 = 0; + var6 = -562394521; + break; + case 1580256694: + return var5; + case 1684701161: + var5 = var2[var4]; + if (var5.name().equals(var0)) { + var6 = 1580256694; + } else { + var6 = 1960411857; + } + break; + case 1960411857: + var4++; + var6 = -562394521; + } + } + } + + public static String[] displayNames() { + String[] var0 = null; + int var1 = 0; + int var2 = -796858998; + + while (true) { + switch (var2) { + case -2051366390: + if (var1 < VALUES.length) { + var2 = -1277758266; + } else { + var2 = -1292567992; + } + break; + case -1292567992: + return var0; + case -1277758266: + var0[var1] = VALUES[var1].displayName; + var1++; + var2 = -2051366390; + break; + case -796858998: + default: + var0 = new String[VALUES.length]; + var1 = 0; + var2 = -2051366390; + } + } + } +} diff --git a/src/main/java/defpackage/xi.java b/src/main/java/defpackage/xi.java new file mode 100644 index 0000000..decb468 --- /dev/null +++ b/src/main/java/defpackage/xi.java @@ -0,0 +1,105 @@ +package defpackage; + +public enum xi { + WHITE("White", (-1680290073 ^ 1680290072) + ((-1680290073 & 1680290072) << 1)), + GREEN("Green", (-1902262774 ^ 1885550838) + ((-1902262774 & 1885550838) << 1)), + LIME("Lime", (-410071983 | 404697822) + (-410071983 & 404697822)), + YELLOW("Yellow", (1233692415 ^ -1233692671) + ((1233692415 & -1233692671) << 1)), + ORANGE( + "Orange", + (1420551212 ^ -1420575788) + ((1420551212 & -1420575788) << 1) + ), + RED("Red", (456499522 ^ -456548610) + ((456499522 & -456548610) << 1)), + PINK("Pink", (87728515 ^ -87793796) + ((87728515 & -87793796) << 1)), + CYAN("Cyan", (524203136 ^ -540914817) + ((524203136 & -540914817) << 1)); + + private static final xi[] VALUES = values(); + private final String displayName; + private final int color; + + xi(String var3, int var4) { + this.displayName = var3; + this.color = var4; + } + + public String displayName() { + return this.displayName; + } + + public int color() { + return this.color; + } + + public static xi byDisplayName(String var0) { + xi[] var1 = null; + int var2 = 0; + int var3 = 0; + xi var4 = null; + int var5 = -1487109523; + + while (true) { + switch (var5) { + case -1685448832: + var3++; + var5 = 1870989409; + break; + case -1487109523: + default: + var1 = VALUES; + var2 = var1.length; + var3 = 0; + var5 = 1870989409; + break; + case 79065132: + var4 = var1[var3]; + if (var4.displayName.equals(var0)) { + var5 = 194803574; + } else { + var5 = -1685448832; + } + break; + case 194803574: + return var4; + case 1363312176: + return null; + case 1870989409: + if (var3 < var2) { + var5 = 79065132; + } else { + var5 = 1363312176; + } + } + } + } + + public static String[] displayNames() { + String[] var0 = null; + int var1 = 0; + int var2 = -1529865367; + + while (true) { + switch (var2) { + case -1761380887: + if (var1 < VALUES.length) { + var2 = 1604702997; + } else { + var2 = 1877982559; + } + break; + case -1529865367: + default: + var0 = new String[VALUES.length]; + var1 = 0; + var2 = -1761380887; + break; + case 1604702997: + var0[var1] = VALUES[var1].displayName; + var1++; + var2 = -1761380887; + break; + case 1877982559: + return var0; + } + } + } +} diff --git a/src/main/java/defpackage/xj.java b/src/main/java/defpackage/xj.java new file mode 100644 index 0000000..5fe889b --- /dev/null +++ b/src/main/java/defpackage/xj.java @@ -0,0 +1,592 @@ +package defpackage; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + +public final class xj { + public static final String STYLE_KEY = "Style"; + public static final String MARKER_KEY = "Show Inner Lines"; + private static final String KEY_COLOR = "Color"; + private static final String KEY_OUTLINE = "Outlines"; + private static final String KEY_OUTLINE_OPACITY = "Outline Opacity"; + private static final String KEY_OUTLINE_THICKNESS = "Outline Thickness"; + private static final String KEY_DOT = "Center Dot"; + private static final String KEY_DOT_OPACITY = "Dot Opacity"; + private static final String KEY_DOT_THICKNESS = "Dot Thickness"; + private static final String KEY_INNER_OPACITY = "Inner Opacity"; + private static final String KEY_INNER_LENGTH = "Inner Length"; + private static final String KEY_INNER_THICKNESS = "Inner Thickness"; + private static final String KEY_INNER_OFFSET = "Inner Offset"; + private static final String KEY_INNER_DYNAMIC = "Inner Dynamic Gap"; + private static final String KEY_OUTER = "Show Outer Lines"; + private static final String KEY_OUTER_LENGTH = "Outer Length"; + private static final String KEY_OUTER_OFFSET = "Outer Offset"; + private static final String KEY_OUTER_DYNAMIC = "Outer Dynamic Gap"; + private static final String KEY_TARGET = "Color on hover"; + private static final String KEY_TARGET_COLOR = "Hover color"; + private static final String CODE_SECTION_SEPARATOR = "\\|"; + private static final String CODE_KEY_SEPARATOR = ":"; + private static final String CODE_VALUE_SEPARATOR = ","; + private static final String CODE_TRUE = "1"; + private static final String CODE_COLOR = "C"; + private static final String CODE_OUTLINE = "O"; + private static final String CODE_DOT = "D"; + private static final String CODE_INNER = "I"; + private static final String CODE_OUTER = "U"; + private static final int HEX_RADIX = 16; + private static final int RGBA_RED_SHIFT = 24; + private static final int RGBA_GREEN_SHIFT = 16; + private static final int RGBA_BLUE_SHIFT = 8; + private static final int CHANNEL_MASK = 255; + private static final int OPAQUE_ALPHA = -16777216; + private static final int ARGB_RED_SHIFT = 16; + private static final int ARGB_GREEN_SHIFT = 8; + private static final int OLD_COLOR = -16711936; + private static final float OLD_OUTLINE_OPACITY = 0.5F; + private static final float OLD_OUTLINE_THICKNESS = 1.0F; + private static final float OLD_DOT_OPACITY = 1.0F; + private static final float OLD_DOT_THICKNESS = 2.0F; + private static final float OLD_INNER_OPACITY = 1.0F; + private static final float OLD_INNER_LENGTH = 6.0F; + private static final float OLD_INNER_THICKNESS = 2.0F; + private static final float OLD_INNER_OFFSET = 3.0F; + private static final float OLD_OUTER_LENGTH = 2.0F; + private static final float OLD_OUTER_OFFSET = 10.0F; + private static final int OLD_TARGET_COLOR = -49088; + private static final float DEFAULT_MATCH_EPSILON = 0.001F; + private int color = -16711936; + private boolean outline = (boolean)(((1)) != 0); + private float outlineOpacity = 0.5F; + private float outlineThickness = 1.0F; + private boolean dot; + private float dotOpacity = 1.0F; + private float dotThickness = 2.0F; + private boolean inner = (boolean)(((1)) != 0); + private float innerOpacity = 1.0F; + private float innerLength = 6.0F; + private float innerThickness = 2.0F; + private float innerOffset = 3.0F; + private boolean innerDynamic; + private boolean outer; + private float outerLength = 2.0F; + private float outerOffset = 10.0F; + private boolean outerDynamic; + private boolean targetHighlight; + private int targetColor = -49088; + + private xj() { + } + + public static boolean isLegacyConfig(JsonObject var0) { + int var2 = 0; + int var1 = 1889902876; + + while (true) { + switch (var1) { + case -1616630765: + if (!var0.has("Style")) { + var1 = -1055302224; + } else { + var1 = 1925926740; + } + break; + case -1055302224: + var2 = 1; + var1 = -928359537; + break; + case -928359537: + return (boolean)((var2) != 0); + case 100543681: + if (var0.has("Show Inner Lines")) { + var1 = -1616630765; + } else { + var1 = 1925926740; + } + break; + case 1889902876: + default: + if (var0 != null) { + var1 = 100543681; + } else { + var1 = 1925926740; + } + break; + case 1925926740: + var2 = 0; + var1 = -928359537; + } + } + } + + public static xj fromConfig(JsonObject var0) { + xj var1 = new xj(); + var1.color = intValue(var0, "Color", var1.color); + var1.outline = boolValue(var0, "Outlines", var1.outline); + var1.outlineOpacity = floatValue( + var0, "Outline Opacity", var1.outlineOpacity + ); + var1.outlineThickness = floatValue( + var0, "Outline Thickness", var1.outlineThickness + ); + var1.dot = boolValue(var0, "Center Dot", var1.dot); + var1.dotOpacity = floatValue( + var0, "Dot Opacity", var1.dotOpacity + ); + var1.dotThickness = floatValue( + var0, "Dot Thickness", var1.dotThickness + ); + var1.inner = boolValue(var0, "Show Inner Lines", var1.inner); + var1.innerOpacity = floatValue( + var0, "Inner Opacity", var1.innerOpacity + ); + var1.innerLength = floatValue(var0, "Inner Length", var1.innerLength); + var1.innerThickness = floatValue( + var0, "Inner Thickness", var1.innerThickness + ); + var1.innerOffset = floatValue(var0, "Inner Offset", var1.innerOffset); + var1.innerDynamic = boolValue( + var0, "Inner Dynamic Gap", var1.innerDynamic + ); + var1.outer = boolValue(var0, "Show Outer Lines", var1.outer); + var1.outerLength = floatValue(var0, "Outer Length", var1.outerLength); + var1.outerOffset = floatValue(var0, "Outer Offset", var1.outerOffset); + var1.outerDynamic = boolValue( + var0, "Outer Dynamic Gap", var1.outerDynamic + ); + var1.targetHighlight = boolValue( + var0, "Color on hover", var1.targetHighlight + ); + var1.targetColor = intValue(var0, "Hover color", var1.targetColor); + return var1; + } + + public static xj fromShareCode(String var0) { + xj var1 = new xj(); + int var2 = 0; + String[] var3 = var0.split("\\|"); + int var4 = var3.length; + + for (int var5 = 0; var5 < var4; var5++) { + String var6 = var3[var5]; + String[] var7 = var6.split(":", (1454666386 | -1454666384) + (1454666386 & -1454666384)); + if (var7.length >= (-1604593622 | 1604593624) + (-1604593622 & 1604593624)) { + String[] var8 = var7[1] + .split(","); + String var9 = var7[0]; + int var10 = -1; + switch (var9.hashCode()) { + case 67: + if (var9.equals("C")) { + var10 = 0; + } + break; + case 68: + if (var9.equals("D")) { + var10 = 2; + } + break; + case 73: + if (var9.equals("I")) { + var10 = 3; + } + break; + case 79: + if (var9.equals("O")) { + var10 = 1; + } + break; + case 85: + if (var9.equals("U")) { + var10 = 4; + } + } + + switch (var10) { + case 0: + var1.color = rgbaToArgb(var8[0]); + break; + case 1: + var1.outline = "1" + .equals(var8[0]); + var1.outlineOpacity = floatAt(var8, 1, var1.outlineOpacity); + var1.outlineThickness = floatAt(var8, 2, var1.outlineThickness); + break; + case 2: + var1.dot = "1" + .equals(var8[0]); + var1.dotOpacity = floatAt(var8, 1, var1.dotOpacity); + var1.dotThickness = floatAt(var8, 2, var1.dotThickness); + break; + case 3: + var1.inner = "1" + .equals(var8[0]); + var1.innerThickness = floatAt(var8, 1, var1.innerThickness); + var1.innerLength = floatAt(var8, 2, var1.innerLength); + var1.innerOffset = floatAt(var8, 3, var1.innerOffset); + var1.innerOpacity = floatAt(var8, 4, var1.innerOpacity); + var1.innerDynamic = (boolean)(((var8.length > (742376541 ^ -742376536) + ((742376541 & -742376536) << 1) + && "1" + .equals(var8[5]) + ? 1: (-982968077 | 982968077) + (-982968077 & 982968077))) != 0); + break; + case 4: + var1.outer = "1" + .equals(var8[0]); + var1.outerLength = floatAt(var8, 2, var1.outerLength); + var1.outerOffset = floatAt(var8, 3, var1.outerOffset); + var1.outerDynamic = (boolean)(((var8.length > (-202189226 ^ 202189231) + ((-202189226 & 202189231) << 1) + && "1" + .equals(var8[5]) + ? 1: (1265942812 | -1265942812) + (1265942812 & -1265942812))) != 0); + break; + default: + continue; + } + + var2 = 1; + } + } + + if (var2 == 0) { + throw new IllegalArgumentException( + "no legacy crosshair sections" + ); + } else { + return var1; + } + } + + public xd toProfile(float var1) { + int var2 = 0; + float var3 = 0.0F; + xd var4 = null; + float var6 = 0.0F; + int var5 = -480980859; + + while (true) { + switch (var5) { + case -2103012305: + return var4.sanitized(); + case -1346171269: + var4 = new xd( + xh.CROSS, + this.color, + convert(this.innerLength, 6.0F, 6, var1), + convert(this.innerThickness, 2.0F, 2, var1), + convert(this.innerOffset, 3.0F, 3, var1), + this.outline, + var3, + var2, + this.innerOpacity, + this.dot, + this.outer, + convert(this.outerLength, 2.0F, 2, var1), + convert(this.outerOffset, 10.0F, 10, var1) + ); + var5 = -2103012305; + break; + case -738406611: + var6 = this.outlineOpacity; + var5 = 718440237; + break; + case -480980859: + default: + var2 = convert(this.outlineThickness, 1.0F, 1, var1); + if (matches(this.outlineOpacity, 0.5F)) { + var5 = 1988835349; + } else { + var5 = -738406611; + } + break; + case -478513844: + var4 = xc.CLASSIC.profile().withColor(this.color); + var5 = -2103012305; + break; + case 471425856: + var4 = new xd( + xh.DOT, + this.color, + convert(this.dotThickness, 2.0F, 4, var1), + 2, + 3, + this.outline, + var3, + var2, + this.dotOpacity, + (boolean)(((0)) != 0), + (boolean)(((0)) != 0), + 2, + (-318283917 ^ 318283927) + ((-318283917 & 318283927) << 1) + ); + var5 = -2103012305; + break; + case 718440237: + var3 = var6; + if (this.inner) { + var5 = -1346171269; + } else { + var5 = 1637891070; + } + break; + case 1637891070: + if (this.dot) { + var5 = 471425856; + } else { + var5 = -478513844; + } + break; + case 1988835349: + var6 = 1.0F; + var5 = 718440237; + } + } + } + + public ws cooldown() { + ws var2 = null; + int var1 = 1570552520; + + while (true) { + switch (var1) { + case -1838042441: + var2 = ws.SPREAD; + var1 = -897786251; + break; + case -1418458395: + if (this.outerDynamic) { + var1 = -1838042441; + } else { + var1 = 1540027185; + } + break; + case -897786251: + return var2; + case 1540027185: + var2 = ws.BAR; + var1 = -897786251; + break; + case 1570552520: + default: + if (!this.innerDynamic) { + var1 = -1418458395; + } else { + var1 = -1838042441; + } + } + } + } + + public boolean targetHighlight() { + return this.targetHighlight; + } + + public int targetColor() { + return this.targetColor; + } + + private static int convert(float var0, float var1, int var2, float var3) { + int var4 = -1361765155; + + while (true) { + switch (var4) { + case -1361765155: + default: + if (matches(var0, var1)) { + var4 = 1773694341; + } else { + var4 = -726698924; + } + break; + case -726698924: + return Math.round(var0 * var3); + case 1773694341: + return var2; + } + } + } + + private static boolean matches(float var0, float var1) { + int var3 = 0; + int var2 = -292433409; + + while (true) { + switch (var2) { + case -292433409: + default: + if (Math.abs(var0 - var1) < 0.001F) { + var2 = 127372582; + } else { + var2 = 937268636; + } + break; + case 127372582: + var3 = 1; + var2 = 1694892374; + break; + case 937268636: + var3 = 0; + var2 = 1694892374; + break; + case 1694892374: + return (boolean)((var3) != 0); + } + } + } + + static int rgbaToArgb(String var0) { + long var1 = Long.parseLong(var0, (-1918507476 ^ 1918507492) + ((-1918507476 & 1918507492) << 1)); + int var3 = (int)( + var1 >> (-1544106020 | 1544106044) + (-1544106020 & 1544106044) + & (3331505527444303592L ^ -3331505527444303337L) + ((3331505527444303592L & -3331505527444303337L) << 1) + ); + int var4 = (int)( + var1 >> (920009689 | -920009673) + (920009689 & -920009673) + & (2817371728833268163L ^ -2817371728833267908L) + ((2817371728833268163L & -2817371728833267908L) << 1) + ); + int var5 = (int)( + var1 >> (-1310988572 | 1310988580) + (-1310988572 & 1310988580) + & (-6783497359934567322L ^ 6783497359934567577L) + ((-6783497359934567322L & 6783497359934567577L) << 1) + ); + return (-1257998307 | 1241221091) + (-1257998307 & 1241221091) + | var3 << (1838287290 | -1838287274) + (1838287290 & -1838287274) + | var4 << (1157004307 ^ -1157004299) + ((1157004307 & -1157004299) << 1) + | var5; + } + + private static float floatAt(String[] var0, int var1, float var2) { + float var4 = 0.0F; + int var3 = -2001429528; + + while (true) { + switch (var3) { + case -2001429528: + default: + if (var0.length > var1) { + var3 = -417050865; + } else { + var3 = -1561651682; + } + break; + case -1561651682: + var4 = var2; + var3 = 535600590; + break; + case -417050865: + var4 = Float.parseFloat(var0[var1]); + var3 = 535600590; + break; + case 535600590: + return var4; + } + } + } + + private static boolean boolValue(JsonObject var0, String var1, boolean var2) { + JsonElement var3 = null; + int var5 = 0; + int var4 = 2122329256; + + while (true) { + switch (var4) { + case -2070033726: + var5 = (var3.getAsBoolean()) ? 1 : 0; + var4 = 1557711755; + break; + case -1201634259: + if (var3.isJsonNull()) { + var4 = 1431742422; + } else { + var4 = -2070033726; + } + break; + case 1431742422: + var5 = (var2) ? 1 : 0; + var4 = 1557711755; + break; + case 1557711755: + return (boolean)((var5) != 0); + case 2122329256: + default: + var3 = var0.get(var1); + if (var3 != null) { + var4 = -1201634259; + } else { + var4 = 1431742422; + } + } + } + } + + private static float floatValue(JsonObject var0, String var1, float var2) { + JsonElement var3 = null; + float var5 = 0.0F; + int var4 = -850812015; + + while (true) { + switch (var4) { + case -850812015: + default: + var3 = var0.get(var1); + if (var3 != null) { + var4 = 257810866; + } else { + var4 = 254792435; + } + break; + case -322376704: + var5 = var3.getAsFloat(); + var4 = 927145201; + break; + case 254792435: + var5 = var2; + var4 = 927145201; + break; + case 257810866: + if (var3.isJsonNull()) { + var4 = 254792435; + } else { + var4 = -322376704; + } + break; + case 927145201: + return var5; + } + } + } + + private static int intValue(JsonObject var0, String var1, int var2) { + JsonElement var3 = null; + int var5 = 0; + int var4 = 1728897763; + + while (true) { + switch (var4) { + case -1297261055: + var5 = var2; + var4 = -300616518; + break; + case -300616518: + return var5; + case 141146894: + if (var3.isJsonNull()) { + var4 = -1297261055; + } else { + var4 = 218424749; + } + break; + case 218424749: + var5 = var3.getAsInt(); + var4 = -300616518; + break; + case 1728897763: + default: + var3 = var0.get(var1); + if (var3 != null) { + var4 = 141146894; + } else { + var4 = -1297261055; + } + } + } + } +} diff --git a/src/main/java/defpackage/xk.java b/src/main/java/defpackage/xk.java new file mode 100644 index 0000000..d002d71 --- /dev/null +++ b/src/main/java/defpackage/xk.java @@ -0,0 +1,247 @@ +package defpackage; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.components.AbstractWidget; +import net.minecraft.client.gui.narration.NarrationElementOutput; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.network.chat.Component; + +public class xk extends AbstractWidget { + private static final long REQUEST_TIMEOUT_MS = 12000L; + private static final long INFO_TIMEOUT_MS = 6000L; + private static final int TOAST_HEIGHT = 22; + private static final int BUTTON_SIZE = 12; + private static final int EDGE_PAD = 7; + private static final int BUTTON_GAP = 6; + private static final int BUTTON_SPACING = 4; + private static final int TEXT_HEIGHT = 8; + private static final float ENTRY_SLIDE = 14.0F; + private static final float HIDDEN_THRESHOLD = 0.01F; + private static final float SURFACE_ALPHA = 0.88F; + private static final float ACCEPT_ALPHA = 0.9F; + private static final String ACCEPT_GLYPH = "+"; + private static final String DECLINE_GLYPH = "x"; + private static final asu ACCEPT = new asu( + 88, + 194, + 125, + (-1039273090 ^ 1039273345) + ((-1039273090 & 1039273345) << 1) + ); + private static final asu DECLINE = new asu( + 226, + 96, + 96, + (708753743 ^ -708753488) + ((708753743 & -708753488) << 1) + ); + private final Screen parent; + private final Font textRenderer; + private final ct reveal = ct.transform(ob.SETTLED); + private amz shown; + private String retainedLabel; + private boolean retainedChoice; + private long shownAt; + private int acceptX; + private int declineX; + private int buttonY; + + public xk(Screen var1, Font var2) { + super( + 10, + 10, + 0, + 22, + Component.empty() + ); + this.parent = var1; + this.textRenderer = var2; + } + + private String labelOf(amz var1) { + return anb.describe(var1); + } + + private static boolean needsChoice(amz var0) { + return var0.kind().needsChoice(); + } + + protected void extractWidgetRenderState(GuiGraphicsExtractor var1, int var2, int var3, float var4) { + amz var5 = anb.peekPopup(); + long var6 = System.currentTimeMillis(); + if (var5 != null) { + if (!var5.equals(this.shown)) { + this.shown = var5; + this.shownAt = var6; + } + + long var8 = needsChoice(this.shown) + ? (-9017797691401389566L ^ 9017797691401401566L) + ((-9017797691401389566L & 9017797691401401566L) << 1) + : (-2502270055717405513L ^ 2502270055717411513L) + ((-2502270055717405513L & 2502270055717411513L) << 1); + if (var6 - this.shownAt > var8) { + anb.dismissPopup(); + this.shown = null; + } + } else { + this.shown = null; + } + + if (this.shown != null) { + this.retainedLabel = this.labelOf(this.shown); + this.retainedChoice = needsChoice(this.shown); + } + + this.reveal.animateTo(this.shown != null ? 1.0F : 0.0F); + float var17 = this.reveal.update(); + if (this.retainedLabel != null && !(var17 <= 0.01F)) { + int var9 = this.textRenderer.width(this.retainedLabel); + int var10 = (228335115 | -228335108) + + (228335115 & -228335108) + + var9 + + (this.retainedChoice ? 34: (1991203578 | -1991203578) + (1991203578 & -1991203578)) + + (1109013076 | -1109013069) + + (1109013076 & -1109013069); + this.setWidth(var10); + int var11 = this.getX(); + int var12 = this.getY(); + float var13 = var12 - 14.0F * (1.0F - var17); + mv var14 = bz.getInstance().getThemeManager().getCurrentTheme(); + asq var15 = asq.of(var1, var2, var3, var4); + var15.drawSurface(aso.CARD, var11, var13, var10, 22.0F, asj.all(oc.PANEL), var14.getBackgroundColor().mulAlpha(0.88F * var17)); + atb.drawRoundedBorder(var15.pose(), var11, var13, var10, 22.0F, pk.borderRim(), asj.all(oc.PANEL), var14.getColor().mulAlpha(var17)); + var1.text( + this.textRenderer, + this.retainedLabel, + var11 + 7, + Math.round(var13) + 7, + var14.getWhite().withAlpha(var17).getRGB(), + (boolean)((((-1355150985 ^ 1355150985) + ((-1355150985 & 1355150985) << 1)) + ) != 0)); + if (this.retainedChoice) { + this.acceptX = var11 + (-409047371 | 409047378) + (-409047371 & 409047378) + var9 + 6; + this.declineX = this.acceptX + 16; + this.buttonY = var12 + 5; + float var16 = var13 + 5.0F; + this.drawChoice(var15, this.acceptX, var16, ACCEPT.mulAlpha(0.9F * var17), "+", var14, var17, var1); + this.drawChoice( + var15, this.declineX, var16, DECLINE.mulAlpha(0.9F * var17), "x", var14, var17, var1 + ); + } + } else { + this.setWidth((159971458 ^ -159971458) + ((159971458 & -159971458) << 1)); + } + } + + private void drawChoice(asq var1, int var2, float var3, asu var4, String var5, mv var6, float var7, GuiGraphicsExtractor var8) { + var1.drawRoundedRect(var2, var3, 12.0F, 12.0F, asj.all(oc.CONTROL), var4); + var8.text( + this.textRenderer, + var5, + var2 + + ((664065912 ^ -664065900) + ((664065912 & -664065900) << 1) - this.textRenderer.width(var5)) + / (2), + Math.round(var3) + 2, + var6.getWhite().withAlpha(var7).getRGB(), + (boolean)((((107519764 ^ -107519764) + ((107519764 & -107519764) << 1)) + ) != 0)); + } + + public void onClick(MouseButtonEvent var1, boolean var2) { + String var3 = null; + Object var4 = null; + xl var5 = null; + int var6 = 890747935; + + while (true) { + switch (var6) { + case -2141462262: + if (var1.x() >= this.acceptX) { + var6 = 305653962; + } else { + var6 = -1194140895; + } + break; + case -1720467447: + if (!needsChoice(this.shown)) { + var6 = 119609388; + } else { + var6 = -2141462262; + } + break; + case -1194140895: + if (var1.x() >= this.declineX) { + var6 = 1609822297; + } else { + var6 = 445157939; + } + break; + case -572991473: + if (this.getWidth() == 0) { + var6 = 1506177800; + } else { + var6 = -109681314; + } + break; + case -266432342: + anb.resolvePopup((boolean)((((-1155008316 ^ 1155008316) + ((-1155008316 & 1155008316) << 1))) != 0)); + this.shown = null; + var6 = 445157939; + break; + case -109681314: + if (this.shown.kind() == ana.MESSAGE) { + var6 = 1474119070; + } else { + var6 = -1720467447; + } + break; + case 119609388: + anb.dismissPopup(); + this.shown = null; + return; + case 305653962: + if (var1.x() < this.acceptX + (458277755 ^ -458277743) + ((458277755 & -458277743) << 1)) { + var6 = 817716245; + } else { + var6 = -1194140895; + } + break; + case 445157939: + return; + case 817716245: + anb.resolvePopup((boolean)((((-681903003 | 681903004) + (-681903003 & 681903004))) != 0)); + this.shown = null; + var6 = 445157939; + break; + case 890747935: + default: + if (this.shown != null) { + var6 = -572991473; + } else { + var6 = 1506177800; + } + break; + case 1474119070: + var3 = this.shown.username(); + anb.dismissPopup(); + this.shown = null; + var4 = Minecraft.getInstance(); + var5 = new xl(this.parent); + ((Minecraft)var4).gui.setScreen(var5); + var5.openChatWith(var3); + return; + case 1506177800: + return; + case 1609822297: + if (var1.x() < this.declineX + (1492642770 ^ -1492642758) + ((1492642770 & -1492642758) << 1)) { + var6 = -266432342; + } else { + var6 = 445157939; + } + } + } + } + + protected void updateWidgetNarration(NarrationElementOutput var1) { + } +} diff --git a/src/main/java/defpackage/xl.java b/src/main/java/defpackage/xl.java new file mode 100644 index 0000000..b841505 --- /dev/null +++ b/src/main/java/defpackage/xl.java @@ -0,0 +1,347 @@ +package defpackage; + +import net.minecraft.client.TextureFilteringMethod; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.util.Mth; +import org.joml.Matrix3x2fStack; + +public class xl extends api { + private static final float BOX_WIDTH = 340.0F; + private static final float BOX_HEIGHT = 300.0F; + private static final float BOX_MARGIN = 40.0F; + private static final float HEADER_HEIGHT = 30.0F; + private static final float PADDING = 10.0F; + private static final float SHADOW_SPREAD = 22.0F; + private static final float SHADOW_ALPHA = 0.55F; + private static final float BACKGROUND_BOOST = 4.0F; + private static final float SCROLL_LANE_INSET = 5.0F; + private static final float SCROLL_STEP_MIN = 20.0F; + private static final float SCROLL_STEP_MAX = 60.0F; + private static final float SCROLL_STEP_GAIN = 10.0F; + private static final float SCROLL_STEP_DIVISOR = 8.0F; + private static final float CLIP_INSET = 1.0F; + private static final float TITLE_FONT_SIZE = 8.0F; + private static final float HINT_FONT_SIZE = 5.5F; + private static final String TITLE = "Friends"; + private static final String HINT = "ESC to return"; + private final Screen parent; + private final aaj panel = new aaj(); + private final arl scrollHandler = new arl(); + private final ark scrollBar = new ark(); + private final xm frame = new xm(); + private float boxX; + private float boxY; + private float boxHeight; + private float contentX; + private float contentY; + private float contentWidth; + private float visibleHeight; + + private static arq WINDOW_RADIUS() { + return asj.all(oc.WINDOW); + } + + public xl(Screen var1) { + this.parent = var1; + } + + protected void init() { + this.frame.open(); + } + + public void openChatWith(String var1) { + this.panel.openChatWith(var1); + } + + @Override + public void render(asq var1, float var2, float var3) { + mv var4 = null; + float var5 = 0.0F; + Matrix3x2fStack var6 = null; + asu var7 = null; + ge var8 = null; + ge var9 = null; + asu var10 = null; + asu var11 = null; + float var12 = 0.0F; + int var13 = 927235495; + + while (true) { + switch (var13) { + case -1599885979: + this.panel.onClosed(); + this.minecraft.gui.setScreen(this.parent); + var13 = 1904610331; + break; + case -204231165: + this.scrollHandler.setTargetValue(-this.scrollHandler.getMax()); + var13 = 1740806593; + break; + case 927235495: + default: + var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + this.frame.measure(this.width, this.height, 340.0F, 300.0F); + var5 = this.frame.advance(); + atb.endGui(); + this.applyAnimatedBlur(var5); + atb.beginGui(); + aqr.renderImmediate(var1.pose(), this.width, this.height); + var1.drawRect(0.0F, 0.0F, this.width, this.height, var4.getBackgroundColor().mulAlpha(0.4F * var5)); + this.boxHeight = Math.min(300.0F, this.frame.viewHeight() - 40.0F); + this.boxX = this.frame.centerX(340.0F); + this.boxY = this.frame.centerY(this.boxHeight); + var6 = var1.pose(); + this.frame.push(var1, this.boxX + 170.0F, this.boxY + this.boxHeight / 2.0F); + var2 = (float)this.frame.toLocalX(var2); + var3 = (float)this.frame.toLocalY(var3); + var7 = var4.getBackgroundColor().mulAlpha(var5 * 4.0F); + atb.drawShadow(var6, this.boxX, this.boxY, 340.0F, this.boxHeight, 22.0F, asj.all(oc.WINDOW), var4.getColor().mulAlpha(var5 * 0.55F)); + var1.drawSurface(aso.WINDOW, this.boxX, this.boxY, 340.0F, this.boxHeight, WINDOW_RADIUS(), var7.getRGB()); + arx.invalidateScene(); + atb.drawRoundedBorder(var6, this.boxX, this.boxY, 340.0F, this.boxHeight, pk.borderRim(), asj.all(oc.WINDOW), var4.getColor().mulAlpha(var5)); + var8 = gl.SEMIBOLD.getFont(8.0F); + var9 = gl.MEDIUM.getFont(5.5F); + var10 = var4.getWhite().mulAlpha(var5); + var11 = var4.getGrayLight().mulAlpha(var5); + var1.drawText( + var8, + "Friends", + this.boxX + 10.0F, + this.boxY + 10.0F, + var10 + ); + var1.drawText( + var9, + "ESC to return", + this.boxX + + 340.0F + - 10.0F + - var9.width("ESC to return"), + this.boxY + 10.0F + (var8.height() - var9.height()) / 2.0F, + var11 + ); + this.contentX = this.boxX + 10.0F; + this.contentY = this.boxY + 30.0F; + this.contentWidth = 320.0F; + this.visibleHeight = this.boxHeight - 30.0F - 10.0F; + var1.clipScroll(this.boxX + 1.0F, this.contentY, this.boxX + 340.0F - 1.0F, this.contentY + this.visibleHeight, ars.edgeFade()); + gt.beginBatch(); + var12 = this.panel + .render( + var1, + this.contentX, + this.contentY, + this.contentWidth, + this.visibleHeight, + (float)Mth.clamp(this.scrollHandler.getValue(), 0.0, this.scrollHandler.getMax()), + var5, + var4, + var2, + var3 + ); + gt.endBatch(); + var1.popClip(); + this.scrollHandler.update(); + this.scrollHandler.setMax(Math.max(0.0F, var12 - this.visibleHeight)); + if (this.panel.consumeScrollToBottom()) { + var13 = -204231165; + } else { + var13 = 1740806593; + } + break; + case 1740806593: + this.scrollBar + .measure( + this.boxX + 340.0F - 5.0F, + this.contentY, + 3.5F, + this.visibleHeight, + (float)this.scrollHandler.getMax(), + (float)Mth.clamp(this.scrollHandler.getValue(), 0.0, this.scrollHandler.getMax()) + ); + this.scrollBar.render(var1, var4, var5, var2, var3, this.scrollHandler.isSettled()); + this.frame.pop(var1); + if (this.frame.isClosed()) { + var13 = -1599885979; + } else { + var13 = 1904610331; + } + break; + case 1904610331: + return; + } + } + } + + private void applyAnimatedBlur(float var1) { + int var2 = this.minecraft.options.getMenuBackgroundBlurriness(); + int var3 = Math.round(var1 * var2); + if (var3 > 0) { + this.minecraft + .gameRenderer + .globalSettingsUniform + .update( + this.minecraft.getWindow().getWidth(), + this.minecraft.getWindow().getHeight(), + (Double)this.minecraft.options.glintStrength().get(), + this.minecraft.level == null + ? (7818027918098218509L ^ -7818027918098218509L) + ((7818027918098218509L & -7818027918098218509L) << 1) + : this.minecraft.level.getGameTime(), + this.minecraft.getDeltaTracker(), + var3, + this.minecraft.gameRenderer.mainCamera().position(), + (boolean)(((this.minecraft.options.textureFiltering().get() == TextureFilteringMethod.RGSS + ? 1: (-165386028 | 165386028) + (-165386028 & 165386028)) + ) != 0)); + this.minecraft.gameRenderer.processBlurEffect(); + } + } + + public void extractBackground(GuiGraphicsExtractor var1, int var2, int var3, float var4) { + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + int var10 = -375692986; + + while (true) { + switch (var10) { + case -1391615425: + return; + case -1084705608: + this.panel.handleMouseClicked(var6, var8, var5); + return; + case -375692986: + default: + if (!this.frame.isInteractive()) { + var10 = 1348108536; + } else { + var10 = 1966701063; + } + break; + case 1348108536: + return; + case 1966701063: + var6 = this.frame.toLocalX(var1); + var8 = this.frame.toLocalY(var3); + if (var5 == apf.LEFT) { + var10 = 2021410451; + } else { + var10 = -1084705608; + } + break; + case 2021410451: + if (this.scrollBar.press(var6, var8)) { + var10 = -1391615425; + } else { + var10 = -1084705608; + } + } + } + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + int var10 = 1378767284; + + while (true) { + switch (var10) { + case 928691533: + this.scrollHandler.jumpTo(-this.scrollBar.dragTo(this.frame.toLocalY(var3))); + var10 = 1363999110; + break; + case 1363999110: + return; + case 1378767284: + default: + if (this.scrollBar.isDragging()) { + var10 = 928691533; + } else { + var10 = 1363999110; + } + } + } + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + this.scrollBar.release(); + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = 2108826178; + + while (true) { + switch (var4) { + case -1356870464: + if (this.panel.keyPressed(var1, var2, var3)) { + var4 = 687690659; + } else { + var4 = 1405814141; + } + break; + case 687690659: + return (boolean)(((1)) != 0); + case 1405814141: + return super.keyPressed(var1, var2, var3); + case 2108826178: + default: + if (!this.frame.isClosing()) { + var4 = -1356870464; + } else { + var4 = 1405814141; + } + } + } + } + + @Override + public boolean charTyped(char var1, int var2) { + int var4 = 0; + int var3 = 2130332808; + + while (true) { + switch (var3) { + case -1185058990: + var4 = 1; + var3 = 496276223; + break; + case -346131372: + if (this.panel.charTyped(var1, var2)) { + var3 = -1185058990; + } else { + var3 = 886489375; + } + break; + case 496276223: + return (boolean)((var4) != 0); + case 886489375: + var4 = 0; + var3 = 496276223; + break; + case 2130332808: + default: + if (!this.frame.isClosing()) { + var3 = -346131372; + } else { + var3 = 886489375; + } + } + } + } + + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + float var9 = (float)Math.max(20.0, Math.min(60.0, this.scrollHandler.getMax() / Math.max(1.0F, this.visibleHeight) * 10.0)); + this.scrollHandler.scroll(var7 * var9 / 8.0); + this.scrollBar.notifyScrolled(); + return (boolean)(((1)) != 0); + } + + public void onClose() { + this.frame.beginClose(); + } +} diff --git a/src/main/java/defpackage/xm.java b/src/main/java/defpackage/xm.java new file mode 100644 index 0000000..55209e3 --- /dev/null +++ b/src/main/java/defpackage/xm.java @@ -0,0 +1,305 @@ +package defpackage; + +import net.minecraft.util.Mth; +import org.joml.Matrix3x2fStack; + +public final class xm { + private static final float SCALE_DIVISOR = 2.0F; + private static final float HALF = 0.5F; + private static final float FULL = 1.0F; + private static final float CLOSED_PHASE = 0.0F; + private static final float OPEN_PHASE = 1.0F; + private static final float CLOSED_EPSILON = 0.02F; + private static final float INTERACTIVE_PHASE = 0.5F; + private static final float MIN_FIT_SCALE = 0.3F; + private static final float MIN_OPEN_SCALE = 0.01F; + private static final float VIEWPORT_MARGIN = 10.0F; + public static final float BACKDROP_ALPHA = 0.4F; + private final cu transition = new cu(yb.DEFAULT.durationMillis(), yb.DEFAULT.getEasing(), 0.0F); + private boolean opened; + private boolean closing; + private float scale = 1.0F; + private float screenWidth; + private float screenHeight; + private float pivotX; + private float pivotY; + private float phase = 0.0F; + private float alpha; + private float openScaleX = 1.0F; + private float openScaleY = 1.0F; + private float riseY; + + public static float userScale() { + return vm.INSTANCE.getCustomScale() / 2.0F; + } + + public static float minUserScale() { + return vm.INSTANCE.getCustomScaleMin() / 2.0F; + } + + public static float maxUserScale() { + return vm.INSTANCE.getCustomScaleMax() / 2.0F; + } + + public static void applyUserScale(float var0) { + vm.INSTANCE.setCustomScale(var0 * 2.0F); + } + + public static float fitScale(float var0, float var1, float var2, float var3) { + float var4 = 0.0F; + int var5 = -548164361; + + while (true) { + switch (var5) { + case -1481157511: + var4 = Math.min(var4, (var1 - 20.0F) / var3); + var5 = 1906244565; + break; + case -548164361: + default: + var4 = userScale(); + if (var2 > 0.0F) { + var5 = -133242856; + } else { + var5 = 1848764814; + } + break; + case -133242856: + var4 = Math.min(var4, (var0 - 20.0F) / var2); + var5 = 1848764814; + break; + case 1848764814: + if (var3 > 0.0F) { + var5 = -1481157511; + } else { + var5 = 1906244565; + } + break; + case 1906244565: + return Math.max(0.3F, var4); + } + } + } + + public void open() { + int var1 = -1524150491; + + while (true) { + switch (var1) { + case -1524150491: + default: + this.closing = (boolean)(((0)) != 0); + if (this.opened) { + var1 = -220118589; + } else { + var1 = 415136659; + } + break; + case -220118589: + return; + case 415136659: + this.opened = (boolean)(((1)) != 0); + this.transition.jumpTo(0.0F); + return; + } + } + } + + public void restart() { + this.opened = (boolean)(((1)) != 0); + this.closing = (boolean)(((0)) != 0); + this.phase = 0.0F; + this.alpha = 0.0F; + this.transition.jumpTo(0.0F); + } + + public void beginClose() { + this.closing = (boolean)(((1)) != 0); + } + + public boolean isClosing() { + return this.closing; + } + + public boolean isClosed() { + int var2 = 0; + int var1 = -1685208842; + + while (true) { + switch (var1) { + case -1685208842: + default: + if (this.closing) { + var1 = -254755297; + } else { + var1 = 1552013346; + } + break; + case -1272337231: + return (boolean)((var2) != 0); + case -254755297: + if (this.phase <= 0.02F) { + var1 = -232909154; + } else { + var1 = 1552013346; + } + break; + case -232909154: + var2 = 1; + var1 = -1272337231; + break; + case 1552013346: + var2 = 0; + var1 = -1272337231; + } + } + } + + public boolean isInteractive() { + int var2 = 0; + int var1 = -655061853; + + while (true) { + switch (var1) { + case -1071670626: + if (this.phase >= 0.5F) { + var1 = 1727228865; + } else { + var1 = -3194533; + } + break; + case -655061853: + default: + if (!this.closing) { + var1 = -1071670626; + } else { + var1 = -3194533; + } + break; + case -3194533: + var2 = 0; + var1 = 660723057; + break; + case 660723057: + return (boolean)((var2) != 0); + case 1727228865: + var2 = 1; + var1 = 660723057; + } + } + } + + public void measure(float var1, float var2, float var3, float var4) { + this.screenWidth = var1; + this.screenHeight = var2; + this.scale = fitScale(var1, var2, var3, var4); + } + + public float advance() { + yb var1 = vm.INSTANCE.getMenuOpenEffect(); + this.transition.retime(var1.durationMillis(), var1.getEasing()); + this.phase = this.transition.update(this.closing ? 0.0F : 1.0F); + this.alpha = Mth.clamp(var1.alpha(this.phase), 0.0F, 1.0F); + this.openScaleX = Math.max(0.01F, var1.scaleX(this.phase)); + this.openScaleY = Math.max(0.01F, var1.scaleY(this.phase)); + this.riseY = var1.offsetY(this.phase); + return this.alpha; + } + + public float alpha() { + return this.alpha; + } + + public float phase() { + return this.phase; + } + + public float scale() { + return this.scale; + } + + public float viewWidth() { + return this.screenWidth / this.scale; + } + + public float viewHeight() { + return this.screenHeight / this.scale; + } + + public float viewLeft() { + return this.screenWidth * 0.5F * (1.0F - 1.0F / this.scale); + } + + public float viewTop() { + return this.screenHeight * 0.5F * (1.0F - 1.0F / this.scale); + } + + public float viewRight() { + return this.viewLeft() + this.viewWidth(); + } + + public float viewBottom() { + return this.viewTop() + this.viewHeight(); + } + + public float centerX(float var1) { + return (this.screenWidth - var1) * 0.5F; + } + + public float centerY(float var1) { + return (this.screenHeight - var1) * 0.5F; + } + + public void push(aru var1, float var2, float var3) { + this.pivotX = var2; + this.pivotY = var3; + Matrix3x2fStack var4 = var1.pose(); + var1.pushMatrix(); + float var5 = this.screenWidth * 0.5F; + float var6 = this.screenHeight * 0.5F; + var4.translate(var5, var6); + var4.scale(this.scale, this.scale); + var4.translate(-var5, -var6); + var4.translate(0.0F, this.riseY); + var4.translate(var2, var3); + var4.scale(this.openScaleX, this.openScaleY); + var4.translate(-var2, -var3); + } + + public void pushView(aru var1) { + this.pivotX = 0.0F; + this.pivotY = 0.0F; + this.openScaleX = 1.0F; + this.openScaleY = 1.0F; + this.riseY = 0.0F; + Matrix3x2fStack var2 = var1.pose(); + var1.pushMatrix(); + float var3 = this.screenWidth * 0.5F; + float var4 = this.screenHeight * 0.5F; + var2.translate(var3, var4); + var2.scale(this.scale, this.scale); + var2.translate(-var3, -var4); + } + + public void pop(aru var1) { + var1.popMatrix(); + } + + public double toViewX(double var1) { + float var3 = this.screenWidth * 0.5F; + return var3 + (var1 - var3) / this.scale; + } + + public double toViewY(double var1) { + float var3 = this.screenHeight * 0.5F; + return var3 + (var1 - var3) / this.scale; + } + + public double toLocalX(double var1) { + return this.pivotX + (this.toViewX(var1) - this.pivotX) / this.openScaleX; + } + + public double toLocalY(double var1) { + return this.pivotY + (this.toViewY(var1) - this.riseY - this.pivotY) / this.openScaleY; + } +} diff --git a/src/main/java/defpackage/xn.java b/src/main/java/defpackage/xn.java new file mode 100644 index 0000000..4fb98f1 --- /dev/null +++ b/src/main/java/defpackage/xn.java @@ -0,0 +1,4 @@ +package defpackage; + +record xn(String id, float x, float y, float size) { +} diff --git a/src/main/java/defpackage/xo.java b/src/main/java/defpackage/xo.java new file mode 100644 index 0000000..7c92177 --- /dev/null +++ b/src/main/java/defpackage/xo.java @@ -0,0 +1,4 @@ +package defpackage; + +record xo(String username, float x, float y, float width, float height) { +} diff --git a/src/main/java/defpackage/xp.java b/src/main/java/defpackage/xp.java new file mode 100644 index 0000000..db8b178 --- /dev/null +++ b/src/main/java/defpackage/xp.java @@ -0,0 +1,567 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; +import org.joml.Matrix3x2fStack; + +public final class xp extends api { + private static final float PANEL_WIDTH = 252.0F; + private static final float PANEL_MIN_HEIGHT = 132.0F; + private static final float PANEL_MAX_HEIGHT = 286.0F; + private static final float PADDING = 8.0F; + private static final float TITLE_Y = 8.0F; + private static final float CONTENT_TOP = 30.0F; + private static final float CONTENT_BOTTOM = 26.0F; + private static final float CELL_GAP = 4.0F; + private static final int COLUMNS = 3; + private static final float SCROLLBAR_GAP = 3.0F; + private static final float HEADER_BUTTON_SIZE = 12.0F; + private static final float HEADER_BUTTON_Y = 6.0F; + private static final float SELECTION_RIM = 1.2F; + private static final float BACKGROUND_ALPHA = 0.97F; + private static final float SHADOW_BLUR = 13.0F; + private static final float SHADOW_ALPHA = 0.2F; + private static final float PLACEHOLDER_ALPHA = 0.25F; + private static final float FOOTER_GAP = 4.0F; + private static final float SCROLL_STEP = 18.0F; + private static final String TITLE = "Photos"; + private static final String CLOSE_GLYPH = "x"; + private static final String SEND_LABEL = "Send"; + private static final String SEND_TITLE = "Send to"; + private static final String SEND_BACK = "Back"; + private static final String SEND_EMPTY = "No friends yet"; + private static final String SEND_HINT = "Pick a friend to send this photo to"; + private static final String SENT_RESULT = "Photo sent"; + private static final float SEND_BUTTON_WIDTH = 30.0F; + private static final float ROW_HEIGHT = 18.0F; + private static final float ROW_GAP = 2.0F; + private static final float ONLINE_DOT = 2.2F; + private static final float RESULT_MILLIS = 3000.0F; + private static final String EMPTY_TITLE = "No photos yet"; + private static final String EMPTY_HINT = "Place a tripod, frame a shot and press the shutter"; + private static final String HINT_HOLD = "LMB - hold it in your hand"; + private static final String HINT_DELETE = "RMB - delete"; + private static final String COUNT_ONE = " photo"; + private static final String COUNT_MANY = " photos"; + private final xm frame = new xm(); + private final arl scrollHandler = new arl(); + private final ark scrollBar = new ark(); + private final List cells = new ArrayList<>(); + private final List rows = new ArrayList<>(); + private float boxX; + private float boxY; + private float panelHeight = 132.0F; + private boolean positioned; + private String sendTarget; + private String result; + private long resultAt; + + public static void open() { + age.getInstance().load(); + mc.gui.setScreen(new xp()); + } + + protected void init() { + int var1 = -1877492109; + + while (true) { + switch (var1) { + case -1877492109: + default: + this.frame.open(); + this.panelHeight = this.measurePanelHeight(); + this.frame.measure(this.width, this.height, 252.0F, this.panelHeight); + if (!this.positioned) { + var1 = 1263874026; + } else { + var1 = -1070550690; + } + break; + case -1070550690: + return; + case 1263874026: + this.boxX = this.frame.centerX(252.0F); + this.boxY = this.frame.centerY(this.panelHeight); + this.positioned = (boolean)(((1)) != 0); + var1 = -1070550690; + } + } + } + + private float measurePanelHeight() { + int var1 = 0; + int var2 = 0; + float var3 = 0.0F; + float var4 = 0.0F; + int var5 = -537573065; + + while (true) { + switch (var5) { + case -1038742812: + var1 = Math.max(1, age.getInstance().count()); + var2 = Mth.ceil(var1 / 3.0F); + var3 = this.cellSize(); + var4 = var2 * var3 + (var2 - ((197268110 | -197268109) + (197268110 & -197268109))) * 4.0F; + return Mth.clamp(30.0F + var4 + 26.0F, 132.0F, 286.0F); + case -537573065: + default: + if (this.sendTarget != null) { + var5 = 1633740500; + } else { + var5 = -1038742812; + } + break; + case 1633740500: + var1 = Math.max(1, anb.friends().size()); + return Mth.clamp(30.0F + var1 * 20.0F + 26.0F, 132.0F, 286.0F); + } + } + } + + private float cellSize() { + return 73.833336F; + } + + public boolean shouldCloseOnEsc() { + return (boolean)(((0)) != 0); + } + + @Override + public void tick() { + int var1 = 799665868; + + while (true) { + switch (var1) { + case -795417533: + mc.gui.setScreen(null); + var1 = 1691346250; + break; + case 799665868: + default: + if (this.frame.isClosed()) { + var1 = -795417533; + } else { + var1 = 1691346250; + } + break; + case 1691346250: + return; + } + } + } + + public void extractBackground(GuiGraphicsExtractor var1, int var2, int var3, float var4) { + } + + @Override + public void render(asq var1, float var2, float var3) { + mv var4 = null; + Matrix3x2fStack var5 = null; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + arq var9 = null; + int var10 = 2115748017; + + while (true) { + switch (var10) { + case -974777299: + this.renderFooter(var1, var4, var6); + this.frame.pop(var1); + return; + case 1589676987: + this.renderFriends(var1, var4, var6, var7, var8); + var10 = -974777299; + break; + case 1826092298: + this.renderGrid(var1, var4, var6, var7, var8); + var10 = -974777299; + break; + case 2115748017: + default: + var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + var5 = var1.pose(); + this.panelHeight = this.measurePanelHeight(); + this.frame.measure(this.width, this.height, 252.0F, this.panelHeight); + this.clampBox(); + var6 = this.frame.advance(); + this.frame.push(var1, this.boxX + 126.0F, this.boxY + this.panelHeight * 0.5F); + var7 = (float)this.frame.toLocalX(var2); + var8 = (float)this.frame.toLocalY(var3); + var9 = asj.all(oc.WINDOW); + atb.drawShadow(var5, this.boxX, this.boxY, 252.0F, this.panelHeight, 13.0F, var9, var4.getColor().mulAlpha(var6 * 0.2F)); + var1.drawSurface(aso.WINDOW, this.boxX, this.boxY, 252.0F, this.panelHeight, var9, var4.getBackgroundColor().withAlpha(var6 * 0.97F).getRGB()); + arx.invalidateScene(); + atb.drawRoundedBorder(var5, this.boxX, this.boxY, 252.0F, this.panelHeight, pk.borderRim(), var9, var4.getColor().mulAlpha(var6)); + this.renderHeader(var1, var4, var6, var7, var8); + if (this.sendTarget == null) { + var10 = 1826092298; + } else { + var10 = 1589676987; + } + } + } + } + + private void renderHeader(asq var1, mv var2, float var3, float var4, float var5) { + ge var6 = asp.font(oe.TITLE); + String var7 = this.sendTarget == null + ? "Photos" + : "Send to"; + var1.drawText(var6, var7, this.boxX + 8.0F, this.boxY + 8.0F, var2.getWhite().mulAlpha(var3)); + int var8 = age.getInstance().count(); + ge var9 = asp.font(oe.CAPTION); + String var10 = this.sendTarget == null + ? var8 + + ( + var8 == 1? " photo" + : " photos" + ) + : "Pick a friend to send this photo to"; + var1.drawText( + var9, var10, this.boxX + 8.0F + var6.width(var7) + 4.0F, this.boxY + 8.0F + var6.height() - var9.height() - 0.5F, var2.getGrayLight().mulAlpha(var3) + ); + float var11 = this.boxX + 252.0F - 8.0F - 12.0F; + this.renderSendButton(var1, var2, var3, var4, var5, var11); + float var12 = this.boxY + 6.0F; + boolean var13 = inside(var4, var5, var11, var12, 12.0F, 12.0F); + var1.drawSurface(aso.CONTROL, var11, var12, 12.0F, 12.0F, asj.all(oc.CONTROL), var2.getForegroundColor().mulAlpha(var3 * (var13 ? 1.0F : 0.7F)).getRGB()); + ge var14 = asp.font(oe.CAPTION); + var1.drawText( + var14, + "x", + var11 + (12.0F - var14.width("x")) * 0.5F, + var12 + (12.0F - var14.height()) * 0.5F, + var2.getColor().mulAlpha(var3) + ); + } + + private void renderSendButton(asq var1, mv var2, float var3, float var4, float var5, float var6) { + String var7 = afi.getInstance().photoId(); + if (this.sendTarget == null && var7 != null) { + float var8 = var6 - 30.0F - 4.0F; + float var9 = this.boxY + 6.0F; + boolean var10 = inside(var4, var5, var8, var9, 30.0F, 12.0F); + var1.drawSurface(aso.CONTROL, var8, var9, 30.0F, 12.0F, asj.all(oc.CONTROL), var2.getForegroundColor().mulAlpha(var3 * (var10 ? 1.0F : 0.7F)).getRGB()); + ge var11 = asp.font(oe.CAPTION); + var1.drawText( + var11, + "Send", + var8 + (30.0F - var11.width("Send")) * 0.5F, + var9 + (12.0F - var11.height()) * 0.5F, + var2.getWhite().mulAlpha(var3) + ); + } + } + + private void renderFriends(asq var1, mv var2, float var3, float var4, float var5) { + this.rows.clear(); + List var6 = anb.friends(); + float var7 = this.boxX + 8.0F; + float var8 = this.boxY + 30.0F; + float var9 = 236.0F; + ge var10 = asp.font(oe.BODY); + if (var6.isEmpty()) { + var1.drawText( + var10, + "No friends yet", + this.boxX + (252.0F - var10.width("No friends yet")) * 0.5F, + var8 + 4.0F, + var2.getGray().mulAlpha(var3) + ); + } else { + for (int var11 = 0; var11 < var6.size(); var11++) { + amx var12 = (amx)var6.get(var11); + float var13 = var8 + var11 * 20.0F; + boolean var14 = inside(var4, var5, var7, var13, var9, 18.0F); + var1.drawSurface(aso.ROW, var7, var13, var9, 18.0F, asj.all(oc.ROW), var2.getForegroundColor().mulAlpha(var3 * (var14 ? 0.9F : 0.5F)).getRGB()); + float var15 = var7 + 8.0F; + float var16 = var13 + 9.0F; + var1.drawRoundedRect(var15 - 2.2F, var16 - 2.2F, 4.4F, 4.4F, asj.uniform(2.2F), (var12.online() ? var2.getColor() : var2.getGray()).mulAlpha(var3)); + var1.drawText(var10, var12.username(), var15 + 2.2F + 4.0F, var13 + (18.0F - var10.height()) * 0.5F, var2.getWhite().mulAlpha(var3)); + this.rows.add(new xo(var12.username(), var7, var13, var9, 18.0F)); + } + } + } + + private void renderGrid(asq var1, mv var2, float var3, float var4, float var5) { + this.cells.clear(); + List var6 = age.getInstance().photos(); + float var7 = this.boxX + 8.0F; + float var8 = this.boxY + 30.0F; + float var9 = 229.5F; + float var10 = this.panelHeight - 30.0F - 26.0F; + if (var6.isEmpty()) { + ge var21 = asp.font(oe.BODY); + ge var22 = asp.font(oe.CAPTION); + float var23 = this.boxX + 126.0F; + float var24 = var8 + var10 * 0.5F; + var1.drawText( + var21, + "No photos yet", + var23 - var21.width("No photos yet") * 0.5F, + var24 - var21.height(), + var2.getWhite().mulAlpha(var3) + ); + var1.drawText( + var22, + "Place a tripod, frame a shot and press the shutter", + var23 + - var22.width( + "Place a tripod, frame a shot and press the shutter" + ) + * 0.5F, + var24 + 4.0F, + var2.getGray().mulAlpha(var3) + ); + this.scrollHandler.setMax(0.0); + this.scrollHandler.update(); + } else { + float var11 = this.cellSize(); + int var12 = Mth.ceil(var6.size() / 3.0F); + float var13 = var12 * var11 + (var12 - ((-2073886464 | 2073886465) + (-2073886464 & 2073886465))) * 4.0F; + float var14 = Math.max(0.0F, var13 - var10); + this.scrollHandler.setMax(var14); + this.scrollHandler.update(); + float var15 = (float)this.scrollHandler.getValue(); + var1.clipScroll(var7, var8, var7 + var9, var8 + var10, ars.edgeFade()); + String var16 = afi.getInstance().photoId(); + + for (int var17 = 0; var17 < var6.size(); var17++) { + afx var18 = (afx)var6.get(var17); + float var19 = var7 + var17 % ((-1588968483 | 1588968486) + (-1588968483 & 1588968486)) * (var11 + 4.0F); + float var20 = var8 + var17 / ((-1217456046 ^ 1217456049) + ((-1217456046 & 1217456049) << 1)) * (var11 + 4.0F) - var15; + if (!(var20 + var11 < var8) && !(var20 > var8 + var10)) { + this.renderCell(var1, var2, var3, var18, var19, var20, var11, var18.id().equals(var16), inside(var4, var5, var19, var20, var11, var11)); + this.cells.add(new xn(var18.id(), var19, var20, var11)); + } + } + + var1.popClip(); + this.scrollBar.measure(this.boxX + 252.0F - 8.0F - 3.5F, var8, 3.5F, var10, var14, var15); + this.scrollBar.render(var1, var2, var3, var4, var5, this.scrollHandler.isSettled()); + } + } + + private void renderCell(asq var1, mv var2, float var3, afx var4, float var5, float var6, float var7, boolean var8, boolean var9) { + arq var10 = asj.all(oc.CARD); + var1.drawSurface(aso.CONTROL, var5, var6, var7, var7, var10, var2.getForegroundColor().mulAlpha(var3 * 0.25F).getRGB()); + Identifier var11 = age.getInstance().texture(var4.id()); + if (var11 != null) { + atb.drawRoundedTexture(var1.pose(), var11, var5, var6, var7, var7, var10, asu.WHITE.mulAlpha(var3 * (var9 ? 1.0F : 0.92F))); + } + + if (var8) { + atb.drawRoundedBorder(var1.pose(), var5, var6, var7, var7, 1.2F, var10, var2.getColor().mulAlpha(var3)); + } + } + + private void renderFooter(asq var1, mv var2, float var3) { + ge var4 = null; + float var5 = 0.0F; + int var6 = -1793547398; + + while (true) { + switch (var6) { + case -1793547398: + default: + var4 = asp.font(oe.CAPTION); + var5 = this.boxY + this.panelHeight - 26.0F + 4.0F; + if (this.result != null) { + var6 = -107557824; + } else { + var6 = 2118998479; + } + break; + case -417367077: + var1.drawText(var4, this.result, this.boxX + 8.0F, var5, var2.getColor().mulAlpha(var3)); + return; + case -107557824: + if ((float)(System.currentTimeMillis() - this.resultAt) < 3000.0F) { + var6 = -417367077; + } else { + var6 = 2118998479; + } + break; + case 1666658105: + var1.drawText( + var4, + "Back", + this.boxX + 8.0F, + var5, + var2.getGray().mulAlpha(var3) + ); + return; + case 1733121253: + var1.drawText( + var4, + "LMB - hold it in your hand", + this.boxX + 8.0F, + var5, + var2.getGray().mulAlpha(var3) + ); + var1.drawText( + var4, + "RMB - delete", + this.boxX + 252.0F - 8.0F - var4.width("RMB - delete"), + var5, + var2.getGray().mulAlpha(var3) + ); + return; + case 2118998479: + if (this.sendTarget != null) { + var6 = 1666658105; + } else { + var6 = 1733121253; + } + } + } + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + if (this.frame.isInteractive()) { + float var6 = (float)this.frame.toLocalX(var1); + float var7 = (float)this.frame.toLocalY(var3); + float var8 = this.boxX + 252.0F - 8.0F - 12.0F; + float var9 = this.boxY + 6.0F; + if (inside(var6, var7, var8, var9, 12.0F, 12.0F)) { + if (this.sendTarget != null) { + this.sendTarget = null; + } else { + this.frame.beginClose(); + } + } else { + String var10 = afi.getInstance().photoId(); + if (this.sendTarget == null && var10 != null && inside(var6, var7, var8 - 30.0F - 4.0F, var9, 30.0F, 12.0F)) { + this.sendTarget = var10; + } else if (this.sendTarget != null) { + for (xo var15 : this.rows) { + if (inside(var6, var7, var15.x(), var15.y(), var15.width(), var15.height())) { + agf.send(var15.username(), this.sendTarget, var1x -> this.showResult(var1x)); + this.sendTarget = null; + return; + } + } + } else { + for (xn var12 : this.cells) { + if (inside(var6, var7, var12.x(), var12.y(), var12.size(), var12.size())) { + if (var5 == apf.RIGHT) { + age.getInstance().remove(var12.id()); + if (var12.id().equals(afi.getInstance().photoId())) { + afi.getInstance().setPhoto(null); + } + + return; + } + + boolean var13 = var12.id().equals(afi.getInstance().photoId()); + afi.getInstance().setPhoto(var13 ? null : var12.id()); + return; + } + } + } + } + } + } + + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + this.scrollHandler.scroll(var7 * 18.0); + return (boolean)(((1)) != 0); + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = -444573287; + + while (true) { + switch (var4) { + case -1613309550: + this.frame.beginClose(); + return (boolean)(((1)) != 0); + case -444573287: + default: + if (var1 == (-867188080 | 867188336) + (-867188080 & 867188336)) { + var4 = -310055562; + } else { + var4 = -197069295; + } + break; + case -310055562: + if (this.sendTarget != null) { + var4 = 1309791161; + } else { + var4 = -1613309550; + } + break; + case -197069295: + return super.keyPressed(var1, var2, var3); + case 1309791161: + this.sendTarget = null; + return (boolean)(((1)) != 0); + } + } + } + + private void clampBox() { + this.boxX = Mth.clamp(this.boxX, this.frame.viewLeft(), this.frame.viewRight() - 252.0F); + this.boxY = Mth.clamp(this.boxY, this.frame.viewTop(), this.frame.viewBottom() - this.panelHeight); + } + + private static boolean inside(float var0, float var1, float var2, float var3, float var4, float var5) { + int var7 = 0; + int var6 = 27268866; + + while (true) { + switch (var6) { + case -2019126564: + var7 = 0; + var6 = 323259420; + break; + case -1545088233: + if (var1 <= var3 + var5) { + var6 = -1179713967; + } else { + var6 = -2019126564; + } + break; + case -1502229558: + if (var0 <= var2 + var4) { + var6 = -330904264; + } else { + var6 = -2019126564; + } + break; + case -1179713967: + var7 = 1; + var6 = 323259420; + break; + case -330904264: + if (var1 >= var3) { + var6 = -1545088233; + } else { + var6 = -2019126564; + } + break; + case 27268866: + default: + if (var0 >= var2) { + var6 = -1502229558; + } else { + var6 = -2019126564; + } + break; + case 323259420: + return (boolean)((var7) != 0); + } + } + } + + private void showResult(String var1) { + this.result = var1 == null ? "Photo sent" : var1; + this.resultAt = System.currentTimeMillis(); + } +} diff --git a/src/main/java/defpackage/xq.java b/src/main/java/defpackage/xq.java new file mode 100644 index 0000000..aeabdef --- /dev/null +++ b/src/main/java/defpackage/xq.java @@ -0,0 +1,408 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.core.NonNullList; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.food.FoodData; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; + +public final class xq implements aqg { + private static final float SLOT_SIZE = 16.0F; + private static final float SLOT_BORDER_INSET = 1.0F; + private static final float BADGE_SIZE = 9.0F; + private static final float BADGE_OFFSET = 2.0F; + private static final float BADGE_FONT_SIZE = 6.0F; + private static final float COUNT_FONT_SIZE = 5.5F; + private static final float COUNT_OFFSET = 1.0F; + private static final float CHIP_FONT_SIZE = 7.0F; + private static final float CHIP_PADDING = 5.0F; + private static final float CHIP_GAP = 4.0F; + private static final float MIN_Y = 2.0F; + private static final float TEXT_BASELINE_FIX = 0.5F; + private static final float LEAD_ALPHA = 1.0F; + private static final float TRAIL_ALPHA = 0.5F; + private static final float BORDER_ALPHA = 0.85F; + private static final float CHIP_ALPHA = 0.9F; + private static final float SATURATION_QUANTUM = 20.0F; + private static final String CHIP_LABEL = "Eat order +%s HP"; + private static final String BITE_LABEL = "x%d"; + private static final String DECIMAL_FORMAT = "%.1f"; + private static final asu WASTE_COLOR = new asu( + 238, + 162, + (1963630657 ^ -1963630603) + ((1963630657 & -1963630603) << 1) + ); + private static final long SIGNATURE_SEED = 1125899906842597L; + private static final long SIGNATURE_MULTIPLIER = 31L; + private static hd plan = hd.EMPTY; + private static String summaryLabel = ""; + private static long planSignature = (8059222486426793653L ^ 1164149550427982155L) + ((8059222486426793653L & 1164149550427982155L) << 1); + + public static void render() { + uy var0 = uy.INSTANCE; + if (var0.isAdvisorActive() && mc.player != null) { + if (mc.gameMode != null && mc.gameMode.canHurtPlayer()) { + if (!(mc.gui.screen() instanceof AbstractContainerScreen var1)) { + reset(); + } else { + NonNullList var17 = var1.getMenu().slots; + FoodData var3 = mc.player.getFoodData(); + refresh(var3.getFoodLevel(), var3.getSaturationLevel(), var17); + if (!plan.isEmpty()) { + b.f var4 = (b.f)var1; + float var5 = var4.getX(); + float var6 = var4.getY(); + mv var7 = bz.getInstance().getThemeManager().getCurrentTheme(); + int var8 = !atf.isRecording() + ? 1: 0; + atb.beginGui(); + if (var8 != 0) { + atf.begin(); + } + + try { + asq var9 = asq.of( + 0, 0, 0.0F + ); + List var10 = plan.steps(); + + for (int var11 = 0; var11 < var10.size(); var11++) { + hc var12 = (hc)var10.get(var11); + if (var12.slotIndex() >= 0 && var12.slotIndex() < var17.size()) { + Slot var13 = (Slot)var17.get(var12.slotIndex()); + drawStep(var9, var7, var12, var5 + var13.x, var6 + var13.y); + } + } + + drawSummary(var9, var7, var5, var6); + } finally { + if (var8 != 0) { + atf.end(); + } + + atb.endGui(); + } + } + } + } else { + reset(); + } + } + } + + private static void reset() { + planSignature = (5424124265606491100L | 3799247771248284708L) + (5424124265606491100L & 3799247771248284708L); + plan = hd.EMPTY; + summaryLabel = ""; + } + + private static void drawStep(asq var0, mv var1, hc var2, float var3, float var4) { + int var5 = 0; + asu var6 = null; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + ge var10 = null; + String var11 = null; + ge var12 = null; + String var13 = null; + int var15 = 0; + asu var16 = null; + float var17 = 0.0F; + int var14 = 299078948; + + while (true) { + switch (var14) { + case -1879011339: + var15 = 0; + var14 = -1726383250; + break; + case -1726383250: + var5 = var15; + if (var2.isWasteful()) { + var14 = 1368347606; + } else { + var14 = 1824085069; + } + break; + case -1533559176: + var15 = 1; + var14 = -1726383250; + break; + case -760698371: + var17 = 0.5F; + var14 = 966146958; + break; + case 269063622: + var12 = gl.MEDIUM.getFont(5.5F); + Locale var10000 = Locale.ROOT; + String var10001 = "x%d"; + Object[] var10002 = new Object[1]; + var10002[0] = var2.bites(); + var13 = String.format(var10000, var10001, var10002); + var0.drawText(var12, var13, var3 + 16.0F - var12.width(var13) - 1.0F, var4 + 16.0F - var12.height() - 1.0F, var6.mulAlpha(var7)); + var14 = 1239937036; + break; + case 299078948: + default: + if (var2.order() == (-1733349903 | 1733349904) + (-1733349903 & 1733349904)) { + var14 = -1533559176; + } else { + var14 = -1879011339; + } + break; + case 827189345: + var17 = 1.0F; + var14 = 966146958; + break; + case 966146958: + var7 = var17; + atb.drawRoundedBorder(var0.pose(), var3 - 1.0F, var4 - 1.0F, 18.0F, 18.0F, pk.borderThickness(), asj.all(oc.CHIP), var6.mulAlpha(var7 * 0.85F)); + var8 = var3 - 2.0F; + var9 = var4 - 2.0F; + var0.drawRoundedRect(var8, var9, 9.0F, 9.0F, asj.dot(9.0F), var6.mulAlpha(var7)); + var10 = gl.BOLD.getFont(6.0F); + var11 = String.valueOf(var2.order()); + var0.drawText( + var10, var11, var8 + (9.0F - var10.width(var11)) / 2.0F, var9 + (9.0F - var10.height()) / 2.0F + 0.5F, var1.getWhite().mulAlpha(var7) + ); + if (var2.bites() > (-1905027712 ^ 1905027713) + ((-1905027712 & 1905027713) << 1)) { + var14 = 269063622; + } else { + var14 = 1239937036; + } + break; + case 1168396776: + var6 = var16; + if (var5 != 0) { + var14 = 827189345; + } else { + var14 = -760698371; + } + break; + case 1239937036: + return; + case 1368347606: + var16 = WASTE_COLOR; + var14 = 1168396776; + break; + case 1824085069: + var16 = var1.getColor(); + var14 = 1168396776; + } + } + } + + private static void drawSummary(asq var0, mv var1, float var2, float var3) { + ge var4 = gl.MEDIUM.getFont(7.0F); + String var5 = summaryLabel; + float var6 = var4.width(var5) + 10.0F; + float var7 = var4.height() + 10.0F; + float var8 = Mth.clamp(var2, 2.0F, Math.max(2.0F, mc.getWindow().getGuiScaledWidth() - var6 - 2.0F)); + float var9 = Math.max(2.0F, var3 - var7 - 4.0F); + var0.drawSurface(aso.TOOLTIP, var8, var9, var6, var7, asj.all(oc.CARD), var1.getForegroundColor().mulAlpha(0.9F)); + atb.drawRoundedBorder(var0.pose(), var8, var9, var6, var7, pk.borderRim(), asj.all(oc.CARD), var1.getColor().mulAlpha(0.85F)); + var0.drawText(var4, var5, var8 + 5.0F, var9 + 5.0F + 0.5F, var1.getWhite()); + } + + private static List collect(List var0) { + ArrayList var1 = null; + int var2 = 0; + Slot var3 = null; + ItemStack var4 = null; + int var5 = -1003562190; + + while (true) { + switch (var5) { + case -1915603090: + var3 = (Slot)var0.get(var2); + if (!isEdibleSource(var3)) { + var5 = -683568824; + } else { + var5 = -73800240; + } + break; + case -1003562190: + default: + var1 = new ArrayList(); + var2 = 0; + var5 = 620579129; + break; + case -683568824: + var5 = 1150906414; + break; + case -73800240: + var4 = var3.getItem(); + var1.add(new hf(var2, var4, hb.propertiesOf(var4), var4.getCount())); + var5 = 1150906414; + break; + case 620579129: + if (var2 < var0.size()) { + var5 = -1915603090; + } else { + var5 = 1587739262; + } + break; + case 1150906414: + var2++; + var5 = 620579129; + break; + case 1587739262: + return var1; + } + } + } + + private static boolean isEdibleSource(Slot var0) { + int var2 = 0; + int var1 = -1226902016; + + while (true) { + switch (var1) { + case -1817542369: + var2 = 1; + var1 = 1378245620; + break; + case -1226902016: + default: + if (var0.container instanceof Inventory) { + var1 = 930125213; + } else { + var1 = 1338612030; + } + break; + case 930125213: + if (hb.propertiesOf(var0.getItem()) != null) { + var1 = -1817542369; + } else { + var1 = 1338612030; + } + break; + case 1338612030: + var2 = 0; + var1 = 1378245620; + break; + case 1378245620: + return (boolean)((var2) != 0); + } + } + } + + private static void refresh(int var0, float var1, List var2) { + long var3 = (7600649726057881480L | -7600649726057881480L) + (7600649726057881480L & -7600649726057881480L); + String var6 = null; + int var5 = -294118200; + + while (true) { + switch (var5) { + case -1718709865: + return; + case -835363013: + var6 = ""; + var5 = 1766669235; + break; + case -294118200: + default: + var3 = signatureOf(var0, var1, var2); + if (var3 == planSignature) { + var5 = -1718709865; + } else { + var5 = 242087237; + } + break; + case 10497867: + Locale var10000 = Locale.ROOT; + String var10001 = "Eat order +%s HP"; + Object[] var10002 = new Object[1]; + var10002[0] = format(plan.healthGain()); + var6 = String.format(var10000, var10001, var10002); + var5 = 1766669235; + break; + case 242087237: + planSignature = var3; + plan = hl.plan(var0, var1, collect(var2)); + if (plan.isEmpty()) { + var5 = -835363013; + } else { + var5 = 10497867; + } + break; + case 1766669235: + summaryLabel = var6; + return; + } + } + } + + private static long signatureOf(int var0, float var1, List var2) { + long var3 = (-2582866834534030494L ^ 2582866834534030494L) + ((-2582866834534030494L & 2582866834534030494L) << 1); + int var5 = 0; + Slot var6 = null; + ItemStack var7 = null; + int var8 = -1530325348; + + while (true) { + switch (var8) { + case -1530325348: + default: + var3 = (-8921102712661189648L | 8922228612568032245L) + (-8921102712661189648L & 8922228612568032245L); + var3 = var3 * ((9029035941145522667L | -9029035941145522636L) + (9029035941145522667L & -9029035941145522636L)) + var0; + var3 = var3 * ((-8373936005501280445L ^ 8373936005501280476L) + ((-8373936005501280445L & 8373936005501280476L) << 1)) + + Math.round(var1 * 20.0F); + var5 = 0; + var8 = -888160533; + break; + case -1433118585: + var6 = (Slot)var2.get(var5); + if (!isEdibleSource(var6)) { + var8 = -1240857462; + } else { + var8 = -1431789957; + } + break; + case -1431789957: + var7 = var6.getItem(); + var3 = var3 * ((1267154459596299467L | -1267154459596299436L) + (1267154459596299467L & -1267154459596299436L)) + var5; + var3 = var3 * ((4281576592662907571L ^ -4281576592662907540L) + ((4281576592662907571L & -4281576592662907540L) << 1)) + + System.identityHashCode(var7.getItem()); + var3 = var3 * ((7623247689284618924L ^ -7623247689284618893L) + ((7623247689284618924L & -7623247689284618893L) << 1)) + var7.getCount(); + var8 = 2049968552; + break; + case -1240857462: + var8 = 2049968552; + break; + case -888160533: + if (var5 < var2.size()) { + var8 = -1433118585; + } else { + var8 = -110433399; + } + break; + case -110433399: + return var3; + case 2049968552: + var5++; + var8 = -888160533; + } + } + } + + private static String format(float var0) { + Locale var10000 = Locale.ROOT; + String var10001 = "%.1f"; + Object[] var10002 = new Object[1]; + var10002[0] = var0; + return String.format(var10000, var10001, var10002); + } + + private xq() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/xr.java b/src/main/java/defpackage/xr.java new file mode 100644 index 0000000..e4721f9 --- /dev/null +++ b/src/main/java/defpackage/xr.java @@ -0,0 +1,262 @@ +package defpackage; + +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.util.Mth; + +public final class xr implements aqg { + private static final String ICON = ";"; + private static final String TOOLTIP_SORT = "Sort"; + private static final String TOOLTIP_PRESET = "Right click: preset"; + private static final String TOOLTIP_PLAYER = "Shift: sort inventory"; + private static final float SIZE = 14.0F; + private static final float PANEL_GAP = 4.0F; + private static final float MIN_Y = 2.0F; + private static final float ICON_SIZE = 7.0F; + private static final float TOOLTIP_PADDING = 5.0F; + private static final float TOOLTIP_GAP = 3.0F; + private static final float TOOLTIP_LINE_GAP = 2.0F; + private static final float HOVER_ALPHA = 0.55F; + private static final float BORDER_ALPHA = 0.35F; + private static final float TOOLTIP_VISIBLE_ALPHA = 0.01F; + private static final float SORTING_ALPHA = 0.45F; + private static final float TEXT_BASELINE_FIX = 0.5F; + private static final ct hover = asa.spring(); + + public static void render() { + AbstractContainerScreen var0 = activeScreen(); + if (var0 != null) { + float var1 = buttonX(var0); + float var2 = buttonY(var0); + float var3 = mouseX(); + float var4 = mouseY(); + float var5 = hover.update(aqj.isHovered(var3, var4, var1, var2, 14.0, 14.0) ? 1.0F : 0.0F); + mv var6 = bz.getInstance().getThemeManager().getCurrentTheme(); + boolean var7 = tg.INSTANCE.isSorting(); + int var8 = !atf.isRecording() ? 1: 0; + atb.beginGui(); + if (var8 != 0) { + atf.begin(); + } + + try { + asq var9 = asq.of((int)var3, (int)var4, 0.0F); + var9.drawSurface(aso.CONTROL, var1, var2, 14.0F, 14.0F, asj.all(oc.CONTROL), var6.getForegroundColor().mulAlpha(0.55F + 0.45F * var5)); + atb.drawRoundedBorder(var9.pose(), var1, var2, 14.0F, 14.0F, pk.borderRim(), asj.all(oc.CONTROL), var6.getColor().mulAlpha(0.35F + 0.65F * var5)); + ge var10 = gl.ICONS.getFont(7.0F); + var9.drawText( + var10, + ";", + var1 + (14.0F - var10.width(";")) / 2.0F, + var2 + (14.0F - var10.height()) / 2.0F, + var6.getColor().mix(var6.getWhite(), var5).mulAlpha(var7 ? 0.45F : 1.0F) + ); + if (var5 > 0.01F && !var7) { + renderTooltip(var9, var6, var0, var1, var2, var5); + } + } finally { + if (var8 != 0) { + atf.end(); + } + + atb.endGui(); + } + } + } + + public static boolean click(AbstractContainerScreen var0, double var1, double var3, int var5, boolean var6) { + tg var7 = null; + int var8 = -829270988; + + while (true) { + switch (var8) { + case -1998288884: + if (var5 != 0) { + var8 = 1720024010; + } else { + var8 = -1675567939; + } + break; + case -1675567939: + var7.sort(var0, var6); + if (bz.getInstance().getSoundManager() != null) { + var8 = -947154006; + } else { + var8 = 703522574; + } + break; + case -1411580225: + return (boolean)(((0)) != 0); + case -947154006: + bz.getInstance().getSoundManager().playClick(); + var8 = 703522574; + break; + case -829270988: + default: + var7 = tg.INSTANCE; + if (var7.isEnabled()) { + var8 = 410916004; + } else { + var8 = -1411580225; + } + break; + case 410916004: + if (!var7.canSort(var0)) { + var8 = -1411580225; + } else { + var8 = 851998936; + } + break; + case 549309844: + return (boolean)(((0)) != 0); + case 703522574: + return (boolean)(((1)) != 0); + case 726261175: + if (var5 == (-131679310 | 131679311) + (-131679310 & 131679311)) { + var8 = 1600944235; + } else { + var8 = -1998288884; + } + break; + case 851998936: + if (!aqj.isHovered(var1, var3, buttonX(var0), buttonY(var0), 14.0, 14.0)) { + var8 = 549309844; + } else { + var8 = 726261175; + } + break; + case 1600944235: + tg.openEditor(); + return (boolean)(((1)) != 0); + case 1720024010: + return (boolean)(((0)) != 0); + } + } + } + + private static void renderTooltip(asq var0, mv var1, AbstractContainerScreen var2, float var3, float var4, float var5) { + ge var6 = null; + ge var7 = null; + int var8 = 0; + String var9 = null; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + String var15 = null; + int var14 = -952314590; + + while (true) { + switch (var14) { + case -1831453220: + var15 = "Right click: preset"; + var14 = 412025943; + break; + case -952314590: + default: + var6 = gl.MEDIUM.getFont(7.0F); + var7 = gl.MEDIUM.getFont(6.0F); + boolean var16 = tg.INSTANCE.sortsContainer(var2); + if (var16) { + var14 = 1321362546; + } else { + var14 = -1831453220; + } + break; + case 412025943: + var9 = var15; + var10 = Math.max(var6.width("Sort"), var7.width(var9)) + 10.0F; + var11 = var6.height() + var7.height() + 2.0F + 10.0F; + var12 = Mth.clamp(var3 + 14.0F - var10, 2.0F, Math.max(2.0F, mc.getWindow().getGuiScaledWidth() - var10 - 2.0F)); + var13 = var4 + 14.0F + 3.0F; + var0.drawSurface(aso.TOOLTIP, var12, var13, var10, var11, asj.all(oc.CARD), var1.getForegroundColor().mulAlpha(var5)); + atb.drawRoundedBorder(var0.pose(), var12, var13, var10, var11, pk.borderRim(), asj.all(oc.CARD), var1.getColor().mulAlpha(var5 * 0.55F)); + var0.drawText( + var6, + "Sort", + var12 + 5.0F, + var13 + 5.0F + 0.5F, + var1.getWhite().mulAlpha(var5) + ); + var0.drawText(var7, var9, var12 + 5.0F, var13 + 5.0F + var6.height() + 2.0F, var1.getGrayLight().mulAlpha(var5)); + return; + case 1321362546: + var15 = "Shift: sort inventory"; + var14 = 412025943; + } + } + } + + private static AbstractContainerScreen activeScreen() { + AbstractContainerScreen var0 = null; + Screen var1 = null; + AbstractContainerScreen var3 = null; + int var2 = -1982052389; + + while (true) { + switch (var2) { + case -1982052389: + default: + if (tg.INSTANCE.isEnabled()) { + var2 = 2093922101; + } else { + var2 = -1793546924; + } + break; + case -1793546924: + return null; + case -1392605177: + if (tg.INSTANCE.canSort(var0)) { + var2 = -445976356; + } else { + var2 = 952437426; + } + break; + case -445976356: + var3 = var0; + var2 = 495119644; + break; + case 164421191: + var0 = (AbstractContainerScreen)var1; + var2 = -1392605177; + break; + case 495119644: + return var3; + case 952437426: + var3 = null; + var2 = 495119644; + break; + case 2093922101: + var1 = mc.gui.screen(); + if (var1 instanceof AbstractContainerScreen) { + var2 = 164421191; + } else { + var2 = -1793546924; + } + } + } + } + + private static float buttonX(AbstractContainerScreen var0) { + b.f var1 = (b.f)var0; + return var1.getX() + var1.getImageWidth() - 14.0F; + } + + private static float buttonY(AbstractContainerScreen var0) { + return Math.max(2.0F, ((b.f)var0).getY() - 14.0F - 4.0F); + } + + private static float mouseX() { + return (float)(mc.mouseHandler.xpos() * mc.getWindow().getGuiScaledWidth() / mc.getWindow().getScreenWidth()); + } + + private static float mouseY() { + return (float)(mc.mouseHandler.ypos() * mc.getWindow().getGuiScaledHeight() / mc.getWindow().getScreenHeight()); + } + + private xr() { + throw new UnsupportedOperationException( + "This is a utility class and cannot be instantiated" + ); + } +} diff --git a/src/main/java/defpackage/xs.java b/src/main/java/defpackage/xs.java new file mode 100644 index 0000000..1e0c761 --- /dev/null +++ b/src/main/java/defpackage/xs.java @@ -0,0 +1,20 @@ +package defpackage; + +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; + +final class xs { + final ItemStack stack; + final Slot target; + final float fromX; + final float fromY; + final long startedAt; + + xs(ItemStack var1, Slot var2, float var3, float var4, long var5) { + this.stack = var1; + this.target = var2; + this.fromX = var3; + this.fromY = var4; + this.startedAt = var5; + } +} diff --git a/src/main/java/defpackage/xt.java b/src/main/java/defpackage/xt.java new file mode 100644 index 0000000..2abf36d --- /dev/null +++ b/src/main/java/defpackage/xt.java @@ -0,0 +1,836 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; +import net.minecraft.core.NonNullList; +import net.minecraft.util.Mth; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import org.joml.Matrix3x2fStack; + +public final class xt implements aqg { + private static final int MAX_FLIGHTS = 48; + private static final int CURSOR_ITEM_OFFSET = 8; + private static final int EMPTY_COUNT = 0; + private static final Item[] NO_ITEMS = new Item[0]; + private static final int[] NO_COUNTS = new int[0]; + private static final Slot[] NO_SLOTS = new Slot[0]; + private static final Slot CURSOR_ENDPOINT = null; + public static final xt INSTANCE = new xt(); + private final List flights = new ArrayList<>(); + private AbstractContainerScreen trackedScreen; + private Item[] snapshotItems = NO_ITEMS; + private int[] snapshotCounts = NO_COUNTS; + private Item carriedItem; + private int carriedCount; + private Item[] lossItems = NO_ITEMS; + private int[] lossAmounts = NO_COUNTS; + private Slot[] lossSlots = NO_SLOTS; + private int lossCount; + private Item[] gainItems = NO_ITEMS; + private int[] gainAmounts = NO_COUNTS; + private Slot[] gainSlots = NO_SLOTS; + private int gainCount; + private float cursorX; + private float cursorY; + + private xt() { + } + + public void update(AbstractContainerScreen var1, int var2, int var3, int var4, int var5) { + tq var6 = null; + AbstractContainerMenu var7 = null; + NonNullList var8 = null; + int var9 = -1699509786; + + while (true) { + switch (var9) { + case -2039174126: + this.pairChanges(var6); + var9 = -1941105427; + break; + case -1941105427: + this.storeSnapshot(var8, var7); + return; + case -1699509786: + default: + var6 = tq.INSTANCE; + if (var6.animateSwaps()) { + var9 = -503946996; + } else { + var9 = 620454097; + } + break; + case -789803974: + var7 = var1.getMenu(); + var8 = var7.slots; + this.cursorX = var2 - var4 - (8); + this.cursorY = var3 - var5 - (8); + this.expireFlights(var6); + if (this.trackedScreen == var1) { + var9 = 991348343; + } else { + var9 = 1026423612; + } + break; + case -503946996: + if (var1 instanceof CreativeModeInventoryScreen) { + var9 = 620454097; + } else { + var9 = -789803974; + } + break; + case -7171650: + if (this.gainCount > 0) { + var9 = -2039174126; + } else { + var9 = -1941105427; + } + break; + case 620454097: + this.reset(); + return; + case 991348343: + if (this.snapshotItems.length != var8.size()) { + var9 = 1026423612; + } else { + var9 = 1727040270; + } + break; + case 1026423612: + this.adopt(var1, var8, var7); + return; + case 1727040270: + this.collectChanges(var8, var7); + if (this.lossCount > 0) { + var9 = -7171650; + } else { + var9 = -1941105427; + } + } + } + } + + public void render(GuiGraphicsExtractor var1) { + tq var2 = null; + Font var3 = null; + Matrix3x2fStack var4 = null; + int var5 = 0; + xs var6 = null; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 1788877440; + + while (true) { + switch (var10) { + case -725087187: + return; + case -629405355: + return; + case 358213292: + if (var5 < this.flights.size()) { + var10 = 2090427803; + } else { + var10 = -725087187; + } + break; + case 522367846: + var2 = tq.INSTANCE; + var3 = mc.font; + var4 = var1.pose(); + var5 = 0; + var10 = 358213292; + break; + case 1788877440: + default: + if (this.flights.isEmpty()) { + var10 = -629405355; + } else { + var10 = 522367846; + } + break; + case 2090427803: + var6 = this.flights.get(var5); + var7 = var2.swapEase(var6.startedAt); + var8 = Mth.lerp(var7, var6.fromX, this.targetX(var6)); + var9 = Mth.lerp(var7, var6.fromY, this.targetY(var6)); + var4.pushMatrix(); + var4.translate(var8, var9); + var1.item(var6.stack, 0, (406271968 ^ -406271968) + ((406271968 & -406271968) << 1)); + var1.itemDecorations( + var3, var6.stack, 0, (-1461896269 ^ 1461896269) + ((-1461896269 & 1461896269) << 1) + ); + var4.popMatrix(); + var5++; + var10 = 358213292; + } + } + } + + public boolean extractPendingSlot(GuiGraphicsExtractor var1, Slot var2, int var3) { + int var4 = 0; + ItemStack var5 = null; + int var6 = 0; + ItemStack var7 = null; + int var8 = 0; + int var9 = -831379256; + + while (true) { + switch (var9) { + case -1515230719: + return (boolean)(((0)) != 0); + case -943812942: + return (boolean)(((1)) != 0); + case -831379256: + default: + var4 = this.pendingFor(var2); + if (var4 <= 0) { + var9 = -1515230719; + } else { + var9 = 1832612983; + } + break; + case -544979369: + var1.item(var7, var2.x, var2.y, var8); + var9 = 59724186; + break; + case 59724186: + var1.itemDecorations(mc.font, var7, var2.x, var2.y); + var9 = -943812942; + break; + case 402289239: + var7 = var5.copyWithCount(var6); + var8 = var2.x + var2.y * var3; + if (var2.isFake()) { + var9 = 1360277488; + } else { + var9 = -544979369; + } + break; + case 1360277488: + var1.fakeItem(var7, var2.x, var2.y, var8); + var9 = 59724186; + break; + case 1832612983: + var5 = var2.getItem(); + var6 = var5.getCount() - var4; + if (var6 > 0) { + var9 = 402289239; + } else { + var9 = -943812942; + } + } + } + } + + public boolean extractPendingCarried(GuiGraphicsExtractor var1, ItemStack var2, int var3, int var4) { + int var5 = 0; + int var6 = 0; + ItemStack var7 = null; + int var8 = 0; + int var9 = 0; + int var10 = 1731318003; + + while (true) { + switch (var10) { + case -1095305977: + return (boolean)(((0)) != 0); + case 753296923: + var6 = var2.getCount() - var5; + if (var6 > 0) { + var10 = 2086178704; + } else { + var10 = 1009309903; + } + break; + case 1009309903: + return (boolean)(((1)) != 0); + case 1731318003: + default: + var5 = this.pendingFor(CURSOR_ENDPOINT); + if (var5 <= 0) { + var10 = -1095305977; + } else { + var10 = 753296923; + } + break; + case 2086178704: + var7 = var2.copyWithCount(var6); + var8 = var3 - (8); + var9 = var4 - (8); + var1.nextStratum(); + var1.item(var7, var8, var9); + var1.itemDecorations(mc.font, var7, var8, var9); + var10 = 1009309903; + } + } + } + + public void reset() { + this.flights.clear(); + this.trackedScreen = null; + this.snapshotItems = NO_ITEMS; + this.snapshotCounts = NO_COUNTS; + this.carriedItem = null; + this.carriedCount = 0; + this.lossCount = 0; + this.gainCount = 0; + } + + private void adopt(AbstractContainerScreen var1, NonNullList var2, AbstractContainerMenu var3) { + int var4 = 0; + int var5 = 0; + int var6 = -794697608; + + while (true) { + switch (var6) { + case -794697608: + default: + this.flights.clear(); + this.trackedScreen = var1; + var4 = var2.size(); + if (this.snapshotItems.length != var4) { + var6 = -782909507; + } else { + var6 = 1092136513; + } + break; + case -782909507: + this.snapshotItems = new Item[var4]; + this.snapshotCounts = new int[var4]; + var5 = var4 + 1; + this.lossItems = new Item[var5]; + this.lossAmounts = new int[var5]; + this.lossSlots = new Slot[var5]; + this.gainItems = new Item[var5]; + this.gainAmounts = new int[var5]; + this.gainSlots = new Slot[var5]; + var6 = 1092136513; + break; + case 1092136513: + this.storeSnapshot(var2, var3); + return; + } + } + } + + private void storeSnapshot(NonNullList var1, AbstractContainerMenu var2) { + for (int var3 = 0; var3 < var1.size(); var3++) { + ItemStack var4 = ((Slot)var1.get(var3)).getItem(); + this.snapshotItems[var3] = var4.isEmpty() ? null : var4.getItem(); + this.snapshotCounts[var3] = var4.isEmpty() ? 0: var4.getCount(); + } + + ItemStack var5 = var2.getCarried(); + this.carriedItem = var5.isEmpty() ? null : var5.getItem(); + this.carriedCount = var5.isEmpty() ? 0: var5.getCount(); + } + + private void collectChanges(NonNullList var1, AbstractContainerMenu var2) { + this.lossCount = 0; + this.gainCount = 0; + + for (int var3 = 0; var3 < var1.size(); var3++) { + Slot var4 = (Slot)var1.get(var3); + ItemStack var5 = var4.getItem(); + Item var6 = var5.isEmpty() ? null : var5.getItem(); + int var7 = var5.isEmpty() ? 0: var5.getCount(); + this.recordChange(var4, this.snapshotItems[var3], this.snapshotCounts[var3], var6, var7); + } + + ItemStack var8 = var2.getCarried(); + Item var9 = var8.isEmpty() ? null : var8.getItem(); + int var10 = var8.isEmpty() ? 0: var8.getCount(); + this.recordChange(CURSOR_ENDPOINT, this.carriedItem, this.carriedCount, var9, var10); + } + + private void recordChange(Slot var1, Item var2, int var3, Item var4, int var5) { + int var6 = 0; + int var7 = 1341586012; + + while (true) { + switch (var7) { + case -1562877161: + if (var6 < 0) { + var7 = -726470268; + } else { + var7 = -408373085; + } + break; + case -1325011563: + return; + case -1096469816: + if (var5 > 0) { + var7 = -479244461; + } else { + var7 = -1325011563; + } + break; + case -813347406: + if (var3 > 0) { + var7 = -191308916; + } else { + var7 = -1096469816; + } + break; + case -726470268: + this.addLoss(var1, var2, -var6); + var7 = -408373085; + break; + case -479244461: + this.addGain(var1, var4, var5); + var7 = -1325011563; + break; + case -408373085: + return; + case -191308916: + this.addLoss(var1, var2, var3); + var7 = -1096469816; + break; + case 646308579: + var6 = var5 - var3; + if (var6 > 0) { + var7 = 1305378642; + } else { + var7 = -1562877161; + } + break; + case 1305378642: + this.addGain(var1, var4, var6); + var7 = -408373085; + break; + case 1341586012: + default: + if (var2 == var4) { + var7 = 646308579; + } else { + var7 = -813347406; + } + } + } + } + + private void addLoss(Slot var1, Item var2, int var3) { + int var4 = 1235318432; + + while (true) { + switch (var4) { + case 572487638: + return; + case 801780363: + this.lossItems[this.lossCount] = var2; + this.lossAmounts[this.lossCount] = var3; + this.lossSlots[this.lossCount] = var1; + this.lossCount += 1; + return; + case 1235318432: + default: + if (var2 != null) { + var4 = 1855802892; + } else { + var4 = 572487638; + } + break; + case 1855802892: + if (this.lossCount >= this.lossItems.length) { + var4 = 572487638; + } else { + var4 = 801780363; + } + } + } + } + + private void addGain(Slot var1, Item var2, int var3) { + int var4 = -601986904; + + while (true) { + switch (var4) { + case -601986904: + default: + if (var2 != null) { + var4 = 1031137070; + } else { + var4 = -410647211; + } + break; + case -410647211: + return; + case -375395653: + this.gainItems[this.gainCount] = var2; + this.gainAmounts[this.gainCount] = var3; + this.gainSlots[this.gainCount] = var1; + this.gainCount += 1; + return; + case 1031137070: + if (this.gainCount >= this.gainItems.length) { + var4 = -410647211; + } else { + var4 = -375395653; + } + } + } + } + + private void pairChanges(tq var1) { + int var2 = 0; + Item var3 = null; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 1933763783; + + while (true) { + switch (var7) { + case -2025746107: + if (this.lossItems[var5] == var3) { + var7 = 1620213558; + } else { + var7 = 734895916; + } + break; + case 424820624: + return; + case 426212321: + if (var5 < this.lossCount) { + var7 = 2140050912; + } else { + var7 = 597363986; + } + break; + case 597363986: + var2++; + var7 = 1852653950; + break; + case 734895916: + var5++; + var7 = 426212321; + break; + case 1620213558: + if (this.lossAmounts[var5] <= 0) { + var7 = 2108076804; + } else { + var7 = 2113931420; + } + break; + case 1852653950: + if (var2 < this.gainCount) { + var7 = 2136093339; + } else { + var7 = 424820624; + } + break; + case 1933763783: + default: + var2 = 0; + var7 = 1852653950; + break; + case 2108076804: + var7 = 734895916; + break; + case 2113931420: + var6 = Math.min(var4, this.lossAmounts[var5]); + this.lossAmounts[var5] = this.lossAmounts[var5] - var6; + var4 -= var6; + this.addFlight(var1, this.lossSlots[var5], this.gainSlots[var2], var6); + var7 = 734895916; + break; + case 2136093339: + var3 = this.gainItems[var2]; + var4 = this.gainAmounts[var2]; + var5 = 0; + var7 = 426212321; + break; + case 2140050912: + if (var4 > 0) { + var7 = -2025746107; + } else { + var7 = 597363986; + } + } + } + } + + private void addFlight(tq var1, Slot var2, Slot var3, int var4) { + int var5 = 0; + ItemStack var6 = null; + float var7 = 0.0F; + float var8 = 0.0F; + int var10 = 0; + ItemStack var11 = null; + float var12 = 0.0F; + float var13 = 0.0F; + int var9 = -2072596671; + + while (true) { + switch (var9) { + case -2072596671: + default: + if (var2 != CURSOR_ENDPOINT) { + var9 = 931472988; + } else { + var9 = 2076192017; + } + break; + case -1989515564: + if (!var1.animateCursorSwaps()) { + var9 = 1098582426; + } else { + var9 = 1045987282; + } + break; + case -1589473275: + var6 = var11; + if (var6.isEmpty()) { + var9 = 640427677; + } else { + var9 = 917068416; + } + break; + case -1250035925: + var10 = 0; + var9 = -848843571; + break; + case -1217738086: + var11 = var3.getItem(); + var9 = -1589473275; + break; + case -862715930: + if (this.flights.size() >= (849157545 | -849157497) + (849157545 & -849157497)) { + var9 = -455864904; + } else { + var9 = 571198880; + } + break; + case -848843571: + var5 = var10; + if (var5 != 0) { + var9 = -1989515564; + } else { + var9 = 397125000; + } + break; + case -545335901: + var12 = this.cursorX; + var9 = 1435799545; + break; + case -455864904: + return; + case -384830579: + var8 = var13; + this.flights.add(new xs(var6.copyWithCount(var4), var3, var7, var8, System.currentTimeMillis())); + return; + case -325877775: + return; + case 392068928: + var11 = this.trackedScreen.getMenu().getCarried(); + var9 = -1589473275; + break; + case 397125000: + if (!var1.animateSlotSwaps()) { + var9 = -325877775; + } else { + var9 = 1045987282; + } + break; + case 571198880: + if (var3 == CURSOR_ENDPOINT) { + var9 = 392068928; + } else { + var9 = -1217738086; + } + break; + case 640427677: + return; + case 917068416: + if (var2 == CURSOR_ENDPOINT) { + var9 = -545335901; + } else { + var9 = 2001282342; + } + break; + case 931472988: + if (var3 == CURSOR_ENDPOINT) { + var9 = 2076192017; + } else { + var9 = -1250035925; + } + break; + case 973497433: + var13 = var2.y; + var9 = -384830579; + break; + case 1045987282: + if (var2 != var3) { + var9 = -862715930; + } else { + var9 = -455864904; + } + break; + case 1098582426: + var9 = -325877775; + break; + case 1099343519: + var13 = this.cursorY; + var9 = -384830579; + break; + case 1435799545: + var7 = var12; + if (var2 == CURSOR_ENDPOINT) { + var9 = 1099343519; + } else { + var9 = 973497433; + } + break; + case 2001282342: + var12 = var2.x; + var9 = 1435799545; + break; + case 2076192017: + var10 = 1; + var9 = -848843571; + } + } + } + + private void expireFlights(tq var1) { + int var2 = 0; + int var3 = 728894086; + + while (true) { + switch (var3) { + case -1887459129: + if (var1.swapFinished(this.flights.get(var2).startedAt)) { + var3 = 1096538821; + } else { + var3 = 1333949921; + } + break; + case -1526371118: + if (var2 >= 0) { + var3 = -1887459129; + } else { + var3 = -646165195; + } + break; + case -646165195: + return; + case 728894086: + default: + var2 = this.flights.size() - (1); + var3 = -1526371118; + break; + case 1096538821: + this.flights.remove(var2); + var3 = 1333949921; + break; + case 1333949921: + var2--; + var3 = -1526371118; + } + } + } + + private int pendingFor(Slot var1) { + int var2 = 0; + int var3 = 0; + xs var4 = null; + int var5 = 1945625982; + + while (true) { + switch (var5) { + case -1103617563: + if (var3 < this.flights.size()) { + var5 = -1015623398; + } else { + var5 = 142551012; + } + break; + case -1015623398: + var4 = this.flights.get(var3); + if (var4.target == var1) { + var5 = -132571271; + } else { + var5 = 1098707179; + } + break; + case -132571271: + var2 += var4.stack.getCount(); + var5 = 1098707179; + break; + case 142551012: + return var2; + case 1098707179: + var3++; + var5 = -1103617563; + break; + case 1945625982: + default: + var2 = 0; + var3 = 0; + var5 = -1103617563; + } + } + } + + private float targetX(xs var1) { + float var3 = 0.0F; + int var2 = 1606705618; + + while (true) { + switch (var2) { + case 305877149: + var3 = var1.target.x; + var2 = 1088463286; + break; + case 1088463286: + return var3; + case 1606705618: + default: + if (var1.target == CURSOR_ENDPOINT) { + var2 = 2105555011; + } else { + var2 = 305877149; + } + break; + case 2105555011: + var3 = this.cursorX; + var2 = 1088463286; + } + } + } + + private float targetY(xs var1) { + float var3 = 0.0F; + int var2 = -712076832; + + while (true) { + switch (var2) { + case -2069922802: + var3 = var1.target.y; + var2 = -144457002; + break; + case -712076832: + default: + if (var1.target == CURSOR_ENDPOINT) { + var2 = 262779191; + } else { + var2 = -2069922802; + } + break; + case -144457002: + return var3; + case 262779191: + var3 = this.cursorY; + var2 = -144457002; + } + } + } +} diff --git a/src/main/java/defpackage/xu.java b/src/main/java/defpackage/xu.java new file mode 100644 index 0000000..2f910c4 --- /dev/null +++ b/src/main/java/defpackage/xu.java @@ -0,0 +1,1067 @@ +package defpackage; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.util.Mth; +import net.minecraft.world.item.ItemStack; +import org.joml.Matrix3x2fStack; + +public final class xu extends api { + private static final String TITLE = "Inventory Sort"; + private static final String SUBTITLE = "preset"; + private static final String PRIORITY_LABEL = "PRIORITY"; + private static final String OPTIONS_LABEL = "OPTIONS"; + private static final String RESET_LABEL = "Reset preset"; + private static final String FALLBACK_HINT = "always last"; + private static final String CLOSE_GLYPH = "x"; + private static final String UP_GLYPH = "R"; + private static final String DOWN_GLYPH = "Q"; + private static final String CHECK_GLYPH = "S"; + private static final String NO_PIN_LABEL = "No slot"; + private static final String PIN_LABEL = "Slot "; + private static final String START_INVENTORY = "Inventory"; + private static final String START_HOTBAR = "Hotbar"; + private static final String STATE_ON = "On"; + private static final String STATE_OFF = "Off"; + private static final String SLOTS_LABEL = "LOCKED SLOTS"; + private static final String EMPTY_SLOT_LABEL = "Empty slot"; + private static final String[] SLOT_HINTS; + private static final String[] OPTION_LABELS; + private static final int OPTION_SORT_KEY = 0; + private static final int OPTION_START = 1; + private static final int OPTION_MERGE = 2; + private static final int OPTION_HOTBAR = 3; + private static final float PANEL_WIDTH = 416.0F; + private static final float PANEL_HEIGHT = 258.0F; + private static final float LEFT_WIDTH = 236.0F; + private static final float PADDING = 8.0F; + private static final float TITLE_Y = 8.0F; + private static final float HEADER_BUTTON_SIZE = 12.0F; + private static final float HEADER_BUTTON_Y = 6.0F; + private static final float PRIORITY_LABEL_Y = 24.0F; + private static final float LIST_TOP = 34.0F; + private static final float ROW_HEIGHT = 14.0F; + private static final float ROW_STEP = 16.0F; + private static final float OPTIONS_LABEL_Y = 166.0F; + private static final float OPTIONS_TOP = 174.0F; + private static final float OPTION_HEIGHT = 13.0F; + private static final float OPTION_STEP = 15.0F; + private static final float FOOTER_Y = 236.0F; + private static final float FOOTER_HEIGHT = 14.0F; + private static final float ARROW_SIZE = 10.0F; + private static final float ARROW_X = 2.0F; + private static final float ARROW_GAP = 1.0F; + private static final float NAME_X = 26.0F; + private static final float PIN_WIDTH = 38.0F; + private static final float PIN_HEIGHT = 10.0F; + private static final float TOGGLE_SIZE = 10.0F; + private static final float TOGGLE_MARGIN = 4.0F; + private static final float PIN_MARGIN = 6.0F; + private static final float NAME_GAP = 6.0F; + private static final float VALUE_WIDTH = 66.0F; + private static final float VALUE_HEIGHT = 10.0F; + private static final float VALUE_MARGIN = 4.0F; + private static final float GRID_X = 256.0F; + private static final float GRID_TOP = 34.0F; + private static final float CELL_SIZE = 16.0F; + private static final float CELL_STEP = 17.0F; + private static final float HOTBAR_GAP = 5.0F; + private static final int GRID_COLUMNS = 9; + private static final int GRID_MAIN_ROWS = 3; + private static final float SLOT_INFO_Y = 112.0F; + private static final float SLOT_HINT_Y = 126.0F; + private static final float SLOT_HINT_STEP = 9.0F; + private static final float TEXT_BASELINE_FIX = 0.5F; + private static final float HOVER_MIX = 0.35F; + private static final float PIN_FILL_ALPHA = 0.35F; + private static final float SUBTLE_ALPHA = 0.55F; + private static final float ROW_ALPHA = 0.7F; + private static final float SHADOW_SPREAD = 22.0F; + private static final float SHADOW_ALPHA = 0.5F; + private static final float BACKGROUND_ALPHA = 0.97F; + private static final int HOVER_ROW = 0; + private static final int HOVER_UP = 100; + private static final int HOVER_DOWN = 200; + private static final int HOVER_PIN = 300; + private static final int HOVER_TOGGLE = 400; + private static final int HOVER_OPTION = 500; + private static final int HOVER_CELL = 600; + private static final int HOVER_FOOTER = 900; + private static final int HOVER_CLOSE = 901; + private final xm frame = new xm(); + private final ase hover = new ase(); + private final Map pinnedStacks = new HashMap<>(); + private final Screen previous; + private float boxX; + private float boxY; + private boolean positioned; + private boolean dragging; + private float dragOffsetX; + private float dragOffsetY; + + public xu(Screen var1) { + this.previous = var1 == this ? null : var1; + } + + private hy preset() { + return tg.INSTANCE.preset(); + } + + protected void init() { + int var1 = -1501938660; + + while (true) { + switch (var1) { + case -1501938660: + default: + this.frame.open(); + this.frame.measure(this.width, this.height, 416.0F, 258.0F); + if (!this.positioned) { + var1 = 1740099880; + } else { + var1 = 348657113; + } + break; + case 348657113: + this.clampBox(); + return; + case 1740099880: + this.boxX = this.frame.centerX(416.0F); + this.boxY = this.frame.centerY(258.0F); + this.positioned = (boolean)(((1)) != 0); + var1 = 348657113; + } + } + } + + public boolean shouldCloseOnEsc() { + return (boolean)(((0)) != 0); + } + + @Override + public void tick() { + int var1 = -655852985; + + while (true) { + switch (var1) { + case -2060010017: + return; + case -913523336: + mc.gui.setScreen(this.previous); + var1 = -2060010017; + break; + case -655852985: + default: + if (this.frame.isClosed()) { + var1 = -913523336; + } else { + var1 = -2060010017; + } + } + } + } + + public void extractBackground(GuiGraphicsExtractor var1, int var2, int var3, float var4) { + } + + @Override + public void render(asq var1, float var2, float var3) { + mv var4 = bz.getInstance().getThemeManager().getCurrentTheme(); + Matrix3x2fStack var5 = var1.pose(); + this.frame.measure(this.width, this.height, 416.0F, 258.0F); + this.clampBox(); + float var6 = this.frame.advance(); + this.frame.push(var1, this.boxX + 208.0F, this.boxY + 129.0F); + var2 = (float)this.frame.toLocalX(var2); + var3 = (float)this.frame.toLocalY(var3); + atb.drawShadow(var5, this.boxX, this.boxY, 416.0F, 258.0F, 22.0F, asj.all(oc.WINDOW), var4.getColor().mulAlpha(var6 * 0.5F)); + var1.drawSurface(aso.WINDOW, this.boxX, this.boxY, 416.0F, 258.0F, asj.all(oc.WINDOW), var4.getBackgroundColor().withAlpha(var6 * 0.97F).getRGB()); + atb.drawRoundedBorder(var5, this.boxX, this.boxY, 416.0F, 258.0F, pk.borderRim(), asj.all(oc.WINDOW), var4.getColor().mulAlpha(var6)); + this.renderHeader(var1, var4, var6, var2, var3); + this.renderRules(var1, var4, var6, var2, var3); + this.renderOptions(var1, var4, var6, var2, var3); + this.renderFooter(var1, var4, var6, var2, var3); + this.renderSlotPins(var1, var4, var6, var2, var3); + this.frame.pop(var1); + this.hover.endFrame(); + } + + private void renderHeader(asq var1, mv var2, float var3, float var4, float var5) { + ge var6 = asp.font(oe.TITLE); + var1.drawText( + var6, + "Inventory Sort", + this.boxX + 8.0F, + this.boxY + 8.0F, + var2.getWhite().mulAlpha(var3) + ); + ge var7 = asp.font(oe.CAPTION); + var1.drawText( + var7, + "preset", + this.boxX + 8.0F + var6.width("Inventory Sort") + 4.0F, + this.boxY + 8.0F + var6.height() - var7.height() - 0.5F, + var2.getGrayLight().mulAlpha(var3) + ); + float var8 = this.boxX + 416.0F - 8.0F - 12.0F; + float var9 = this.boxY + 6.0F; + float var10 = this.hover.hover(901, aqj.isHovered(var4, var5, var8, var9, 12.0, 12.0)); + asa.plateControl(var1, var8, var9, 12.0F, 12.0F, asa.plateColor(var2), var3, var10); + boolean var11 = asa.push(var1, var8, var9, 12.0F, 12.0F, var10, 0.05F); + var1.drawSurface(aso.CONTROL, var8, var9, 12.0F, 12.0F, asj.all(oc.ROW), var2.getForegroundColor().mulAlpha(var3 * fill(var10))); + ge var12 = asp.font(oe.CAPTION); + var1.drawText( + var12, + "x", + var8 + (12.0F - var12.width("x")) / 2.0F, + var9 + (12.0F - var12.height()) / 2.0F + 0.5F, + var2.getColor().mix(var2.getWhite(), 0.35F * var10).mulAlpha(var3) + ); + asa.pop(var1, var11); + var1.drawText( + asp.font(oe.CAPTION), + "PRIORITY", + this.boxX + 8.0F, + this.boxY + 24.0F, + var2.getGrayLight().mulAlpha(var3) + ); + } + + private void renderRules(asq var1, mv var2, float var3, float var4, float var5) { + hy var6 = this.preset(); + List var7 = var6.getRules(); + ge var8 = asp.font(oe.BODY); + ge var9 = asp.font(oe.CAPTION); + ge var10 = gl.ICONS.getFont(4.0F); + float var11 = this.boxX + 8.0F; + float var12 = 236.0F; + + for (int var13 = 0; var13 < var7.size(); var13++) { + hz var14 = (hz)var7.get(var13); + float var15 = this.rowY(var13); + float var16 = this.hover + .hover((595290359 ^ -595290359) + ((595290359 & -595290359) << 1) + var13, aqj.isHovered(var4, var5, var11, var15, var12, 14.0)); + var1.drawSurface(aso.ROW, var11, var15, var12, 14.0F, asj.all(oc.CONTROL), var2.getForegroundGray().mulAlpha(var3 * fill(var16))); + asa.plateRow(var1, var11, var15, var12, 14.0F, asa.plateColor(var2), var3, var16); + this.renderArrow( + var1, + var2, + var3, + var4, + var5, + var10, + var11 + 2.0F, + var15, + "R", + (boolean)(((var13 > 0 ? 1: (-201174242 ^ 201174242) + ((-201174242 & 201174242) << 1))) != 0), + (-531805421 | 531805521) + (-531805421 & 531805521) + var13 + ); + this.renderArrow( + var1, + var2, + var3, + var4, + var5, + var10, + var11 + 2.0F + 10.0F + 1.0F, + var15, + "Q", + (boolean)(((var13 < var7.size() - 1? 1: (-583229476 ^ 583229476) + ((-583229476 & 583229476) << 1))) != 0), + (956227840 | -956227640) + (956227840 & -956227640) + var13 + ); + asu var17 = var14.isEnabled() ? var2.getWhite() : var2.getGray(); + float var18 = this.pinX(var11, var12); + float var19 = Math.max(0.0F, var18 - 6.0F - (var11 + 26.0F)); + var1.drawScrollingText( + var8, + var14.getCategory().getDisplayName(), + var11 + 26.0F, + var15 + (14.0F - var8.height()) / 2.0F + 0.5F, + var19, + asa.liftText(var17, var2, var16).mulAlpha(var3), + (boolean)((((1511917407 ^ -1511917406) + ((1511917407 & -1511917406) << 1)) + ) != 0)); + float var20 = var15 + 2.0F; + float var21 = this.hover + .hover((324332941 ^ -324332641) + ((324332941 & -324332641) << 1) + var13, aqj.isHovered(var4, var5, var18, var20, 38.0, 10.0)); + int var22 = var14.isPinned() && var14.isEnabled() && var6.sortsHotbar() + ? 1: 0; + boolean var23 = asa.push(var1, var18, var20, 38.0F, 10.0F, var21, 0.05F); + var1.drawSurface( + aso.CONTROL, + var18, + var20, + 38.0F, + 10.0F, + asj.all(oc.ROW), + (var22 != 0 ? var2.getColor().mulAlpha(0.35F) : var2.getForegroundColor()).mulAlpha(var3 * fill(var21)) + ); + String var24 = var14.isPinned() + ? "Slot " + (var14.getPinnedHotbarSlot() + (576010486 ^ -576010485) + ((576010486 & -576010485) << 1)) + : "No slot"; + var1.drawText( + var9, + var24, + var18 + (38.0F - var9.width(var24)) / 2.0F, + var20 + (10.0F - var9.height()) / 2.0F + 0.5F, + asa.liftText(var22 != 0 ? var2.getWhite() : var2.getGrayLight(), var2, var21).mulAlpha(var3) + ); + asa.pop(var1, var23); + float var25 = this.toggleX(var11, var12); + float var26 = var15 + 2.0F; + float var27 = this.hover.hover((1123386324 | -1123385924) + (1123386324 & -1123385924) + var13, aqj.isHovered(var4, var5, var25, var26, 10.0, 10.0)); + boolean var28 = asa.push(var1, var25, var26, 10.0F, 10.0F, var27, 0.05F); + var1.drawSurface( + aso.CONTROL, + var25, + var26, + 10.0F, + 10.0F, + asj.all(oc.ROW), + (var14.isEnabled() ? var2.getColor() : var2.getForegroundColor()).mulAlpha(var3 * fill(var27)) + ); + if (var14.isEnabled()) { + ge var29 = gl.ICONS.getFont(4.0F); + var1.drawText( + var29, + "S", + var25 + (10.0F - var29.width("S")) / 2.0F, + var26 + (10.0F - var29.height()) / 2.0F, + var2.getWhite().mulAlpha(var3) + ); + } + + asa.pop(var1, var28); + } + + float var30 = this.rowY(var7.size()); + var1.drawSurface(aso.ROW, var11, var30, var12, 14.0F, asj.all(oc.CONTROL), var2.getForegroundGray().mulAlpha(var3 * 0.55F)); + float var31 = var11 + var12 - var9.width("always last") - 6.0F; + var1.drawScrollingText( + var8, + hs.MISC.getDisplayName(), + var11 + 26.0F, + var30 + (14.0F - var8.height()) / 2.0F + 0.5F, + Math.max(0.0F, var31 - 6.0F - (var11 + 26.0F)), + var2.getGray().mulAlpha(var3), + (boolean)((((-1346176313 | 1346176314) + (-1346176313 & 1346176314)) + ) != 0)); + var1.drawText( + var9, + "always last", + var31, + var30 + (14.0F - var9.height()) / 2.0F + 0.5F, + var2.getGray().mulAlpha(var3) + ); + } + + private void renderArrow(asq var1, mv var2, float var3, float var4, float var5, ge var6, float var7, float var8, String var9, boolean var10, int var11) { + float var12 = var8 + 2.0F; + float var13 = this.hover + .hover( + var11, + (boolean)(((var10 && aqj.isHovered(var4, var5, var7, var12, 10.0, 10.0) + ? 1: (-935437132 | 935437132) + (-935437132 & 935437132)) + ) != 0)); + boolean var14 = asa.push(var1, var7, var12, 10.0F, 10.0F, var13, 0.05F); + var1.drawSurface(aso.CONTROL, var7, var12, 10.0F, 10.0F, asj.all(oc.ROW), var2.getForegroundColor().mulAlpha(var3 * (0.55F + 0.45F * var13))); + asu var15 = var10 ? var2.getWhite().mix(var2.getColor(), var13) : var2.getGray(); + var1.drawText(var6, var9, var7 + (10.0F - var6.width(var9)) / 2.0F, var12 + (10.0F - var6.height()) / 2.0F, var15.mulAlpha(var3)); + asa.pop(var1, var14); + } + + private static float fill(float var0) { + return 0.7F + 0.3F * var0; + } + + private void renderOptions(asq var1, mv var2, float var3, float var4, float var5) { + ge var6 = null; + ge var7 = null; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 0; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + String var15 = null; + int var16 = -1936318979; + + while (true) { + switch (var16) { + case -1936318979: + default: + var1.drawText( + asp.font(oe.CAPTION), + "OPTIONS", + this.boxX + 8.0F, + this.boxY + 166.0F, + var2.getGrayLight().mulAlpha(var3) + ); + var6 = asp.font(oe.BODY); + var7 = asp.font(oe.CAPTION); + var8 = this.boxX + 8.0F; + var9 = 236.0F; + var10 = 0; + var16 = 1672801698; + break; + case -1838669592: + var11 = this.optionY(var10); + var12 = this.hover.hover((473172685 | -473172185) + (473172685 & -473172185) + var10, aqj.isHovered(var4, var5, var8, var11, var9, 13.0)); + var1.drawSurface(aso.ROW, var8, var11, var9, 13.0F, asj.all(oc.CONTROL), var2.getForegroundGray().mulAlpha(var3 * fill(var12))); + asa.plateRow(var1, var8, var11, var9, 13.0F, asa.plateColor(var2), var3, var12); + var1.drawText( + var6, + OPTION_LABELS[var10], + var8 + 6.0F, + var11 + (13.0F - var6.height()) / 2.0F + 0.5F, + asa.liftText(var2.getWhite(), var2, var12).mulAlpha(var3) + ); + var13 = var8 + var9 - 66.0F - 4.0F; + var14 = var11 + 1.5F; + var1.drawSurface(aso.CONTROL, var13, var14, 66.0F, 10.0F, asj.all(oc.ROW), var2.getForegroundColor().mulAlpha(var3 * fill(var12))); + var15 = this.optionValue(var10); + var1.drawText( + var7, + var15, + var13 + (66.0F - var7.width(var15)) / 2.0F, + var14 + (10.0F - var7.height()) / 2.0F + 0.5F, + var2.getColor().mix(var2.getWhite(), 0.35F * var12).mulAlpha(var3) + ); + var10++; + var16 = 1672801698; + break; + case -294196969: + return; + case 1672801698: + if (var10 < OPTION_LABELS.length) { + var16 = -1838669592; + } else { + var16 = -294196969; + } + } + } + } + + private void renderFooter(asq var1, mv var2, float var3, float var4, float var5) { + float var6 = this.boxX + 8.0F; + float var7 = 236.0F; + float var8 = this.boxY + 236.0F; + float var9 = this.hover.hover(900, aqj.isHovered(var4, var5, var6, var8, var7, 14.0)); + asa.plateRow(var1, var6, var8, var7, 14.0F, asa.plateColor(var2), var3, var9); + boolean var10 = asa.push(var1, var6, var8, var7, 14.0F, var9, asa.controlAmount(var7)); + var1.drawSurface(aso.CONTROL, var6, var8, var7, 14.0F, asj.all(oc.CONTROL), var2.getForegroundColor().mulAlpha(var3 * fill(var9))); + ge var11 = asp.font(oe.BODY); + var1.drawText( + var11, + "Reset preset", + var6 + (var7 - var11.width("Reset preset")) / 2.0F, + var8 + (14.0F - var11.height()) / 2.0F + 0.5F, + var2.getWhite().mix(var2.getColor(), var9).mulAlpha(var3) + ); + asa.pop(var1, var10); + } + + private void renderSlotPins(asq var1, mv var2, float var3, float var4, float var5) { + var1.drawText( + asp.font(oe.CAPTION), + "LOCKED SLOTS", + this.boxX + 256.0F, + this.boxY + 24.0F, + var2.getGrayLight().mulAlpha(var3) + ); + hy var6 = this.preset(); + String var7 = null; + + for (int var8 = 0; var8 < 36; var8++) { + float var9 = this.cellX(var8); + float var10 = this.cellY(var8); + boolean var11 = aqj.isHovered(var4, var5, var9, var10, 16.0, 16.0); + float var12 = this.hover.hover((85171883 | -85171283) + (85171883 & -85171283) + var8, var11); + String var13 = var6.pinnedItem(var8); + ItemStack var14 = this.inventoryStack(var8); + ItemStack var15 = var13 == null ? var14 : (hw.matches(var13, var14) ? var14 : this.pinnedStack(var13)); + int var16 = var13 != null + ? 1: 0; + asa.plateControl(var1, var9, var10, 16.0F, 16.0F, asa.plateColor(var2), var3, var12); + boolean var17 = asa.push(var1, var9, var10, 16.0F, 16.0F, var12, 0.05F); + var1.drawSurface( + aso.ROW, + var9, + var10, + 16.0F, + 16.0F, + asj.all(oc.CONTROL), + (var16 != 0 ? var2.getColor().mulAlpha(0.35F) : var2.getForegroundGray()).mulAlpha(var3 * fill(var12)) + ); + if (var16 != 0) { + atb.drawRoundedBorder(var1.pose(), var9, var10, 16.0F, 16.0F, pk.borderRim(), asj.all(oc.CONTROL), var2.getColor().mulAlpha(var3)); + } + + if (!var15.isEmpty()) { + var1.item(var15, (int)var9, (int)var10); + } + + asa.pop(var1, var17); + if (var11) { + var7 = var13 != null + ? hw.describe(var13) + : (var15.isEmpty() ? "Empty slot" : var15.getHoverName().getString()); + } + } + + ge var18 = asp.font(oe.CAPTION); + if (var7 != null) { + var1.drawScrollingText( + var18, + var7, + this.boxX + 256.0F, + this.boxY + 112.0F, + 152.0F, + var2.getWhite().mulAlpha(var3), + (boolean)((((-2050058115 | 2050058116) + (-2050058115 & 2050058116)) + ) != 0)); + } + + for (int var19 = 0; var19 < SLOT_HINTS.length; var19++) { + var1.drawText(var18, SLOT_HINTS[var19], this.boxX + 256.0F, this.boxY + 126.0F + var19 * 9.0F, var2.getGray().mulAlpha(var3)); + } + } + + private float cellX(int var1) { + return this.boxX + 256.0F + var1 % ((-1155988044 ^ 1155988053) + ((-1155988044 & 1155988053) << 1)) * 17.0F; + } + + private float cellY(int var1) { + int var2 = 0; + float var4 = 0.0F; + int var3 = 691023526; + + while (true) { + switch (var3) { + case -2046361863: + var4 = this.boxY + 34.0F + (var2 - ((1158453388 | -1158453387) + (1158453388 & -1158453387))) * 17.0F; + var3 = 782024077; + break; + case -118881785: + var4 = this.boxY + 34.0F + 51.0F + 5.0F; + var3 = 782024077; + break; + case 691023526: + default: + var2 = var1 / (9); + if (var2 == 0) { + var3 = -118881785; + } else { + var3 = -2046361863; + } + break; + case 782024077: + return var4; + } + } + } + + private ItemStack inventoryStack(int var1) { + ItemStack var3 = null; + int var2 = 369455813; + + while (true) { + switch (var2) { + case 369455813: + default: + if (mc.player == null) { + var2 = 1190721203; + } else { + var2 = 963273043; + } + break; + case 963273043: + var3 = mc.player.getInventory().getItem(var1); + var2 = 1637205905; + break; + case 1190721203: + var3 = ItemStack.EMPTY; + var2 = 1637205905; + break; + case 1637205905: + return var3; + } + } + } + + private ItemStack pinnedStack(String var1) { + return this.pinnedStacks.computeIfAbsent(var1, hw::representativeStack); + } + + private boolean clickSlotPins(double var1, double var3) { + hy var5 = null; + int var6 = 0; + ItemStack var7 = null; + int var8 = -271390795; + + while (true) { + switch (var8) { + case -2079215710: + var5.clearSlotPin(var6); + var8 = -926027977; + break; + case -2024313873: + var8 = -1768046192; + break; + case -1768046192: + var6++; + var8 = 838767596; + break; + case -926027977: + this.playClick(); + return (boolean)(((1)) != 0); + case -271390795: + default: + var5 = this.preset(); + var6 = 0; + var8 = 838767596; + break; + case 118810310: + var5.pinSlot(var6, hw.tokenFor(var7)); + if (var6 < (1172363858 ^ -1172363849) + ((1172363858 & -1172363849) << 1)) { + var8 = 1241644329; + } else { + var8 = -926027977; + } + break; + case 838767596: + if (var6 < (296740561 ^ -296740525) + ((296740561 & -296740525) << 1)) { + var8 = 1567984811; + } else { + var8 = 979231396; + } + break; + case 979231396: + return (boolean)(((0)) != 0); + case 1175107344: + return (boolean)(((1)) != 0); + case 1216646910: + if (var5.pinnedItem(var6) != null) { + var8 = -2079215710; + } else { + var8 = 1415139409; + } + break; + case 1241644329: + var5.setIncludeHotbar((boolean)((((1381482403 ^ -1381482402) + ((1381482403 & -1381482402) << 1))) != 0)); + var8 = -926027977; + break; + case 1415139409: + var7 = this.inventoryStack(var6); + if (var7.isEmpty()) { + var8 = 1175107344; + } else { + var8 = 118810310; + } + break; + case 1567984811: + if (!aqj.isHovered(var1, var3, this.cellX(var6), this.cellY(var6), 16.0, 16.0)) { + var8 = -2024313873; + } else { + var8 = 1216646910; + } + } + } + } + + private String optionValue(int var1) { + hy var2 = this.preset(); + + return switch (var1) { + case 0 -> var2.getSortKey().getDisplayName(); + case 1 -> var2.isStartAtHotbar() + ? "Hotbar" + : "Inventory"; + case 2 -> var2.isMergeStacks() + ? "On" + : "Off"; + default -> var2.sortsHotbar() + ? "On" + : "Off"; + }; + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + float var6 = 0.0F; + int var7 = 1923485272; + + while (true) { + switch (var7) { + case -1892373918: + if (!this.clickRules(var1, var3)) { + var7 = -1487766934; + } else { + var7 = -1186126491; + } + break; + case -1623966082: + if (aqj.isHovered(var1, var3, this.boxX, this.boxY, 416.0, 24.0)) { + var7 = -209181875; + } else { + var7 = 284686765; + } + break; + case -1487766934: + if (!this.clickOptions(var1, var3)) { + var7 = -143825365; + } else { + var7 = -1186126491; + } + break; + case -1393275358: + var1 = this.frame.toLocalX(var1); + var3 = this.frame.toLocalY(var3); + var6 = this.boxX + 416.0F - 8.0F - 12.0F; + if (aqj.isHovered(var1, var3, var6, this.boxY + 6.0F, 12.0, 12.0)) { + var7 = 1418301821; + } else { + var7 = -1892373918; + } + break; + case -1186126491: + return; + case -1175509287: + if (var5 != apf.LEFT) { + var7 = -738810183; + } else { + var7 = -1393275358; + } + break; + case -738810183: + return; + case -415206878: + this.startClose(); + var7 = 411624388; + break; + case -209181875: + this.dragging = (boolean)(((1)) != 0); + this.dragOffsetX = (float)var1 - this.boxX; + this.dragOffsetY = (float)var3 - this.boxY; + return; + case -143825365: + if (!this.clickFooter(var1, var3)) { + var7 = 1893386633; + } else { + var7 = -1186126491; + } + break; + case 284686765: + if (!aqj.isHovered(var1, var3, this.boxX, this.boxY, 416.0, 258.0)) { + var7 = -415206878; + } else { + var7 = 411624388; + } + break; + case 411624388: + return; + case 1418301821: + this.startClose(); + return; + case 1893386633: + if (this.clickSlotPins(var1, var3)) { + var7 = -1186126491; + } else { + var7 = -1623966082; + } + break; + case 1923485272: + default: + if (this.frame.isInteractive()) { + var7 = -1175509287; + } else { + var7 = -738810183; + } + } + } + } + + private boolean clickRules(double var1, double var3) { + hy var5 = this.preset(); + List var6 = var5.getRules(); + float var7 = this.boxX + 8.0F; + float var8 = 236.0F; + + for (int var9 = 0; var9 < var6.size(); var9++) { + float var10 = this.rowY(var9); + if (aqj.isHovered(var1, var3, var7, var10, var8, 14.0)) { + hz var11 = (hz)var6.get(var9); + float var12 = var10 + 2.0F; + if (aqj.isHovered(var1, var3, var7 + 2.0F, var12, 10.0, 10.0)) { + var5.move(var9, (-1001225358 ^ 1001225357) + ((-1001225358 & 1001225357) << 1)); + } else if (aqj.isHovered(var1, var3, var7 + 2.0F + 10.0F + 1.0F, var12, 10.0, 10.0)) { + var5.move(var9, (-1620415694 | 1620415695) + (-1620415694 & 1620415695)); + } else if (aqj.isHovered(var1, var3, this.pinX(var7, var8), var10 + 2.0F, 38.0, 10.0)) { + var11.cyclePin(); + if (var11.isPinned()) { + var5.setIncludeHotbar((boolean)((((-840076453 | 840076454) + (-840076453 & 840076454))) != 0)); + } + } else { + var11.setEnabled( + (boolean)(((!var11.isEnabled() + ? 1: (-1788505992 ^ 1788505992) + ((-1788505992 & 1788505992) << 1)) + ) != 0)); + } + + this.playClick(); + return (boolean)(((1)) != 0); + } + } + + return (boolean)(((0)) != 0); + } + + private boolean clickOptions(double var1, double var3) { + hy var5 = this.preset(); + float var6 = this.boxX + 8.0F; + float var7 = 236.0F; + + for (int var8 = 0; var8 < OPTION_LABELS.length; var8++) { + if (aqj.isHovered(var1, var3, var6, this.optionY(var8), var7, 13.0)) { + switch (var8) { + case 0: + var5.setSortKey(var5.getSortKey().next()); + break; + case 1: + var5.setStartAtHotbar( + (boolean)(((!var5.isStartAtHotbar() + ? 1: (-1946884635 ^ 1946884635) + ((-1946884635 & 1946884635) << 1)) + ) != 0)); + break; + case 2: + var5.setMergeStacks( + (boolean)(((!var5.isMergeStacks() + ? 1: (748259341 ^ -748259341) + ((748259341 & -748259341) << 1)) + ) != 0)); + break; + default: + this.toggleHotbarSorting(var5); + } + + this.playClick(); + return (boolean)(((1)) != 0); + } + } + + return (boolean)(((0)) != 0); + } + + private void toggleHotbarSorting(hy var1) { + int var2 = 1537918732; + + while (true) { + switch (var2) { + case -1208610847: + return; + case 1362900351: + var1.setIncludeHotbar((boolean)((((1734685629 | -1734685628) + (1734685629 & -1734685628))) != 0)); + var2 = -1208610847; + break; + case 1537918732: + default: + if (var1.sortsHotbar()) { + var2 = 1646192924; + } else { + var2 = 1362900351; + } + break; + case 1646192924: + var1.setIncludeHotbar((boolean)((((2049498693 ^ -2049498693) + ((2049498693 & -2049498693) << 1))) != 0)); + var1.clearHotbarPins(); + var2 = -1208610847; + } + } + } + + private boolean clickFooter(double var1, double var3) { + int var5 = 694697896; + + while (true) { + switch (var5) { + case -386689189: + return (boolean)(((0)) != 0); + case 694697896: + default: + if (!aqj.isHovered(var1, var3, this.boxX + 8.0F, this.boxY + 236.0F, 236.0, 14.0)) { + var5 = -386689189; + } else { + var5 = 2072660632; + } + break; + case 2072660632: + this.preset().reset(); + this.playClick(); + return (boolean)(((1)) != 0); + } + } + } + + private float rowY(int var1) { + return this.boxY + 34.0F + var1 * 16.0F; + } + + private float optionY(int var1) { + return this.boxY + 174.0F + var1 * 15.0F; + } + + private float pinX(float var1, float var2) { + return var1 + var2 - 10.0F - 4.0F - 38.0F - 6.0F; + } + + private float toggleX(float var1, float var2) { + return var1 + var2 - 10.0F - 4.0F; + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + int var6 = -313210637; + + while (true) { + switch (var6) { + case -1256480805: + this.dragging = (boolean)(((0)) != 0); + var6 = 1536116534; + break; + case -313210637: + default: + if (var5 == apf.LEFT) { + var6 = -1256480805; + } else { + var6 = 1536116534; + } + break; + case 1536116534: + return; + } + } + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + int var10 = -597565307; + + while (true) { + switch (var10) { + case -1704783972: + this.boxX = (float)this.frame.toLocalX(var1) - this.dragOffsetX; + this.boxY = (float)this.frame.toLocalY(var3) - this.dragOffsetY; + this.clampBox(); + var10 = -988991997; + break; + case -988991997: + return; + case -597565307: + default: + if (this.dragging) { + var10 = -1704783972; + } else { + var10 = -988991997; + } + } + } + } + + private void clampBox() { + this.boxX = Mth.clamp(this.boxX, this.frame.viewLeft(), Math.max(this.frame.viewLeft(), this.frame.viewRight() - 416.0F)); + this.boxY = Mth.clamp(this.boxY, this.frame.viewTop(), Math.max(this.frame.viewTop(), this.frame.viewBottom() - 258.0F)); + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = -2072540507; + + while (true) { + switch (var4) { + case -2072540507: + default: + if (var1 == (-1228693862 | 1228694118) + (-1228693862 & 1228694118)) { + var4 = 2044664348; + } else { + var4 = -1338016806; + } + break; + case -1338016806: + return super.keyPressed(var1, var2, var3); + case 2044664348: + this.startClose(); + return (boolean)(((1)) != 0); + } + } + } + + private void startClose() { + int var1 = -1724740379; + + while (true) { + switch (var1) { + case -1724740379: + default: + if (!this.frame.isClosing()) { + var1 = 997862585; + } else { + var1 = 1798788498; + } + break; + case -1045666176: + bz.getInstance().getSoundManager().playClose(); + var1 = 1798788498; + break; + case 997862585: + this.frame.beginClose(); + if (bz.getInstance().getSoundManager() != null) { + var1 = -1045666176; + } else { + var1 = 1798788498; + } + break; + case 1798788498: + return; + } + } + } + + private void playClick() { + int var1 = -1821125133; + + while (true) { + switch (var1) { + case -1821125133: + default: + if (bz.getInstance().getSoundManager() != null) { + var1 = 737590142; + } else { + var1 = 482564588; + } + break; + case 482564588: + return; + case 737590142: + bz.getInstance().getSoundManager().playClick(); + var1 = 482564588; + } + } + } + + static { + String[] var10000 = new String[3]; + var10000[0] = "Locked items always return to"; + var10000[1] = "their own slot when sorting."; + var10000[2] = "Click a slot to lock or release it."; + SLOT_HINTS = var10000; + var10000 = new String[4]; + var10000[0] = "Order by"; + var10000[1] = "Start at"; + var10000[2] = "Merge stacks"; + var10000[3] = "Sort hotbar"; + OPTION_LABELS = var10000; + } +} diff --git a/src/main/java/defpackage/xv.java b/src/main/java/defpackage/xv.java new file mode 100644 index 0000000..7fd9f7c --- /dev/null +++ b/src/main/java/defpackage/xv.java @@ -0,0 +1,254 @@ +package defpackage; + + +public final class xv { + private static final float SIDEBAR_COLLAPSED_WIDTH = 30.0F; + private static final float SIDEBAR_EXPANDED_WIDTH = 88.0F; + private static final float SCROLL_LANE_WIDTH = 3.5F; + private static final float HEADER_BASE_HEIGHT = 20.0F; + private static final float FOOTER_BASE_HEIGHT = 13.0F; + private static final float CONTENT_WIDTH_TWO_COLUMN = 345.0F; + private static final float CONTENT_WIDTH_THREE_COLUMN = 414.0F; + private static final float CONTENT_HEIGHT_TWO_COLUMN = 236.0F; + private static final float CONTENT_HEIGHT_THREE_COLUMN = 274.0F; + private static final float HOVER_BLEED_RIGHT = 5.0F; + private static final float HOVER_BLEED_TOP = 6.0F; + private static final float HOVER_BLEED_BOTTOM = 4.0F; + private float outerPad; + private float gutter; + private float columnGap; + private float headerHeight; + private float headerGap; + private float footerHeight; + private float footerGap; + private float windowX; + private float windowY; + private float windowWidth; + private float windowHeight; + private float sidebarWidth; + private float sidebarX; + private float sidebarY; + private float sidebarHeight; + private float headerX; + private float headerY; + private float headerWidth; + private float contentX; + private float contentY; + private float contentWidth; + private float contentHeight; + private float scrollX; + private float scrollWidth; + private float footerX; + private float footerY; + private float footerWidth; + + public void resolveSize(float var1) { + oq var2 = oq.current(); + float var3 = var2.rowScale(); + this.outerPad = var2.spacing(od.XL); + this.gutter = var2.spacing(od.XXL); + this.columnGap = var2.spacing(od.LG); + this.headerGap = var2.spacing(od.XL); + this.footerGap = var2.spacing(od.MD); + this.headerHeight = 20.0F * var3; + this.footerHeight = 13.0F * var3; + this.scrollWidth = 3.5F; + float var4 = lerp(345.0F, 414.0F, var1); + float var5 = lerp(236.0F, 274.0F, var1); + this.windowWidth = this.outerPad * 2.0F + 88.0F + this.gutter + var4 + this.gutter + this.scrollWidth; + this.windowHeight = this.outerPad * 2.0F + this.headerHeight + this.headerGap + var5 + this.footerGap + this.footerHeight; + } + + public void resolvePlacement(float var1, float var2, float var3, float var4) { + this.windowX = var1; + this.windowY = var2; + this.sidebarWidth = 30.0F + 58.0F * var3; + this.sidebarX = this.windowX + this.outerPad; + this.sidebarY = this.windowY + this.outerPad; + this.scrollX = this.windowX + this.windowWidth - this.outerPad - this.scrollWidth; + this.contentX = this.sidebarX + this.sidebarWidth + this.gutter; + this.contentY = this.windowY + this.outerPad + this.headerHeight + this.headerGap; + this.contentWidth = Math.max(0.0F, this.scrollX - this.gutter - this.contentX); + this.footerY = this.windowY + this.windowHeight - this.outerPad - this.footerHeight; + this.contentHeight = Math.max(0.0F, this.footerY - this.footerGap - this.contentY); + this.sidebarHeight = Math.max(0.0F, this.contentY + this.contentHeight - this.sidebarY); + this.headerX = this.contentX; + this.headerY = this.windowY + this.outerPad; + this.headerWidth = Math.max(0.0F, this.windowX + this.windowWidth - this.outerPad - this.headerX - var4); + this.footerX = this.windowX + this.outerPad; + this.footerWidth = Math.max(0.0F, this.windowX + this.windowWidth - this.outerPad - this.footerX); + } + + public static float sidebarCollapsedWidth() { + return 30.0F; + } + + public static float sidebarExpandedWidth() { + return 88.0F; + } + + public static float scrollLaneWidth() { + return 3.5F; + } + + public float contentBottom() { + return this.contentY + this.contentHeight; + } + + public float dragBandHeight() { + return this.outerPad + this.headerHeight; + } + + public float moduleWidth(int var1) { + int var2 = -149577968; + + while (true) { + switch (var2) { + case -149577968: + default: + if (var1 <= 0) { + var2 = 1024839793; + } else { + var2 = 509294056; + } + break; + case 509294056: + return (this.contentWidth - this.columnGap * (var1 - ((-1357302152 ^ 1357302153) + ((-1357302152 & 1357302153) << 1)))) / var1; + case 1024839793: + return this.contentWidth; + } + } + } + + public float sidebarRight() { + return this.sidebarX + this.sidebarWidth; + } + + public float scissorLeft() { + return this.sidebarRight(); + } + + public float scissorTop() { + return this.contentY - 6.0F; + } + + public float scissorRight() { + return this.scrollX + 5.0F; + } + + public float scissorBottom() { + return this.contentBottom() + 4.0F; + } + + private static float lerp(float var0, float var1, float var2) { + return var0 + (var1 - var0) * var2; + } + + public float getOuterPad() { + return this.outerPad; + } + + public float getGutter() { + return this.gutter; + } + + public float getColumnGap() { + return this.columnGap; + } + + public float getHeaderHeight() { + return this.headerHeight; + } + + public float getHeaderGap() { + return this.headerGap; + } + + public float getFooterHeight() { + return this.footerHeight; + } + + public float getFooterGap() { + return this.footerGap; + } + + public float getWindowX() { + return this.windowX; + } + + public float getWindowY() { + return this.windowY; + } + + public float getWindowWidth() { + return this.windowWidth; + } + + public float getWindowHeight() { + return this.windowHeight; + } + + public float getSidebarWidth() { + return this.sidebarWidth; + } + + public float getSidebarX() { + return this.sidebarX; + } + + public float getSidebarY() { + return this.sidebarY; + } + + public float getSidebarHeight() { + return this.sidebarHeight; + } + + public float getHeaderX() { + return this.headerX; + } + + public float getHeaderY() { + return this.headerY; + } + + public float getHeaderWidth() { + return this.headerWidth; + } + + public float getContentX() { + return this.contentX; + } + + public float getContentY() { + return this.contentY; + } + + public float getContentWidth() { + return this.contentWidth; + } + + public float getContentHeight() { + return this.contentHeight; + } + + public float getScrollX() { + return this.scrollX; + } + + public float getScrollWidth() { + return this.scrollWidth; + } + + public float getFooterX() { + return this.footerX; + } + + public float getFooterY() { + return this.footerY; + } + + public float getFooterWidth() { + return this.footerWidth; + } +} diff --git a/src/main/java/defpackage/y.java b/src/main/java/defpackage/y.java new file mode 100644 index 0000000..abc2c58 --- /dev/null +++ b/src/main/java/defpackage/y.java @@ -0,0 +1,23 @@ +package defpackage; + +public interface y { + float hMI5_0$getMainHandSwingProgress(float var1); + + float hMI5_0$getOffHandSwingProgress(float var1); + + boolean hMI5_0$getMHandEvent(); + + boolean hMI5_0$getOHandEvent(); + + boolean hMI5_0$getMInteract(); + + boolean hMI5_0$getOInteract(); + + boolean hMI5_0$getBlockBreak(); + + void hMI5_0$resetOffHandSwing(boolean var1); + + void hMI5_0$resetMainHandSwing(boolean var1); + + int hMI5_0$getSwingCount(); +} diff --git a/src/main/java/defpackage/yb.java b/src/main/java/defpackage/yb.java new file mode 100644 index 0000000..2379141 --- /dev/null +++ b/src/main/java/defpackage/yb.java @@ -0,0 +1,255 @@ +package defpackage; + + +public enum yb { + RISE( + "Rise", + ob.SETTLED, + de.BAKEK_SIZE, + "Scales up a touch while rising into place" + ) { + @Override + public float scaleX(float var1) { + return yb.lerp(0.94F, 1.0F, var1); + } + + @Override + public float scaleY(float var1) { + return this.scaleX(var1); + } + + @Override + public float offsetY(float var1) { + return 12.0F * yb.remaining(var1); + } + }, + FADE( + "Fade", + ob.SLOW, + de.BAKEK_SIZE, + "Opacity only, the window never moves" + ), + POP( + "Pop", + ob.SLOW, + de.BAKEK, + "Springs up from small with a soft overshoot" + ) { + @Override + public float scaleX(float var1) { + return yb.lerp(0.82F, 1.0F, var1); + } + + @Override + public float scaleY(float var1) { + return this.scaleX(var1); + } + + @Override + public float alpha(float var1) { + return var1 * 1.6F; + } + }, + ZOOM( + "Zoom", + ob.SETTLED, + de.QUINTIC_OUT, + "Settles toward the screen from oversized" + ) { + @Override + public float scaleX(float var1) { + return yb.lerp(1.12F, 1.0F, var1); + } + + @Override + public float scaleY(float var1) { + return this.scaleX(var1); + } + + @Override + public float alpha(float var1) { + return var1 * 1.35F; + } + }, + SLIDE( + "Slide", + ob.SLOW, + de.EXPO_OUT, + "Slides up from below the centre" + ) { + @Override + public float offsetY(float var1) { + return 54.0F * yb.remaining(var1); + } + }, + UNFOLD( + "Unfold", + ob.SETTLED, + de.BAKEK_PAGES, + "Unfolds vertically like a drawer" + ) { + @Override + public float scaleX(float var1) { + return yb.lerp(0.92F, 1.0F, var1); + } + + @Override + public float scaleY(float var1) { + return yb.lerp(0.35F, 1.0F, var1); + } + + @Override + public float alpha(float var1) { + return var1 * 1.45F; + } + }; + + private static final float FULL_SCALE = 1.0F; + private static final float FULL_PHASE = 1.0F; + private static final float RISE_SCALE = 0.94F; + private static final float RISE_OFFSET = 12.0F; + private static final float POP_SCALE = 0.82F; + private static final float POP_ALPHA_LEAD = 1.6F; + private static final float ZOOM_SCALE = 1.12F; + private static final float ZOOM_ALPHA_LEAD = 1.35F; + private static final float SLIDE_OFFSET = 54.0F; + private static final float UNFOLD_SCALE_X = 0.92F; + private static final float UNFOLD_SCALE_Y = 0.35F; + private static final float UNFOLD_ALPHA_LEAD = 1.45F; + private static final yb[] VALUES = values(); + private static final String[] LABELS = buildLabels(); + public static final yb DEFAULT = RISE; + private final String label; + private final ob role; + private final de easing; + private final String description; + + yb(String var3, ob var4, de var5, String var6) { + this.label = var3; + this.role = var4; + this.easing = var5; + this.description = var6; + } + + public float scaleX(float var1) { + return 1.0F; + } + + public float scaleY(float var1) { + return 1.0F; + } + + public float offsetY(float var1) { + return 0.0F; + } + + public float alpha(float var1) { + return var1; + } + + public float durationMillis() { + return pk.motion(this.role); + } + + private static float lerp(float var0, float var1, float var2) { + return var0 + (var1 - var0) * var2; + } + + private static float remaining(float var0) { + return 1.0F - var0; + } + + public static String[] labels() { + return (String[])LABELS.clone(); + } + + public static yb byLabel(String var0) { + yb[] var1 = null; + int var2 = 0; + int var3 = 0; + yb var4 = null; + int var5 = -1955476782; + + while (true) { + switch (var5) { + case -1955476782: + default: + var1 = VALUES; + var2 = var1.length; + var3 = 0; + var5 = -1923904542; + break; + case -1923904542: + if (var3 < var2) { + var5 = 432947207; + } else { + var5 = -1440521219; + } + break; + case -1440521219: + return DEFAULT; + case -442929124: + return var4; + case -81080206: + var3++; + var5 = -1923904542; + break; + case 432947207: + var4 = var1[var3]; + if (var4.label.equals(var0)) { + var5 = -442929124; + } else { + var5 = -81080206; + } + } + } + } + + private static String[] buildLabels() { + yb[] var0 = null; + String[] var1 = null; + int var2 = 0; + int var3 = 1722123870; + + while (true) { + switch (var3) { + case 140725455: + var1[var2] = var0[var2].label; + var2++; + var3 = 1846102128; + break; + case 984050131: + return var1; + case 1722123870: + default: + var0 = values(); + var1 = new String[var0.length]; + var2 = 0; + var3 = 1846102128; + break; + case 1846102128: + if (var2 < var0.length) { + var3 = 140725455; + } else { + var3 = 984050131; + } + } + } + } + + public String getLabel() { + return this.label; + } + + public ob getRole() { + return this.role; + } + + public de getEasing() { + return this.easing; + } + + public String getDescription() { + return this.description; + } +} diff --git a/src/main/java/defpackage/yc.java b/src/main/java/defpackage/yc.java new file mode 100644 index 0000000..510847c --- /dev/null +++ b/src/main/java/defpackage/yc.java @@ -0,0 +1,2711 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.model.geom.builders.UVPair; +import net.minecraft.util.Mth; +import org.joml.Matrix3x2fStack; +import org.lwjgl.glfw.GLFW; + +public class yc extends api { + private static final float CURSOR_ANCHOR_HALF = 6.0F; + private static final float STAGGER_STEP = 0.12F; + private static final float CONTENT_EDGE_FADE = 30.0F; + private static final float CONTENT_FADE_RAMP = 60.0F; + private static final int MAX_STAGGER_STEPS = 6; + private static final float FOOTER_DOT_SIZE = 3.5F; + private static final arq RADIUS_FOOTER_DOT = asj.pill(3.5F); + private static final float FOOTER_SEPARATOR_HEIGHT = 7.0F; + private static final String FOOTER_ACTIVE_SUFFIX = " active"; + private static final String FOOTER_THEME_TOOLTIP_PREFIX = "Active theme: "; + private static final String FOOTER_ACTIVE_TOOLTIP_SUFFIX = " modules enabled across every category"; + private static final String FOOTER_BUILD_TOOLTIP = "Client name, version and build channel"; + private static final String RESIZE_GRIP_TOOLTIP = "Drag to resize the window"; + private static final int FOOTER_SLOT_THEME = 0; + private static final int FOOTER_SLOT_ACTIVE = 1; + private static final int FOOTER_SLOT_BUILD = 2; + private static final float CORNER_ARC_INSET_FACTOR = 0.2929F; + private static final float RESIZE_GRIP_CORE_RADIUS = 2.4F; + private static final float RESIZE_GRIP_GRAB_GROWTH = 1.8F; + private static final float RESIZE_GRIP_HALO_OUTER = 2.2F; + private static final float RESIZE_GRIP_HALO_INNER = 1.0F; + private static final float RESIZE_GRIP_HALO_BASE_ALPHA = 0.35F; + private static final float RESIZE_GRIP_HALO_GRAB_ALPHA = 0.35F; + private static final float RESIZE_GRIP_HIT_PAD = 5.0F; + private static final float RESIZE_GRIP_OVERHANG = 5.0F; + private static final float RESIZE_GRIP_MIN_ALPHA = 0.01F; + private static final double RESIZE_GRIP_PULSE_PERIOD = 320.0; + private static final float RESIZE_GRIP_PULSE_DEPTH = 0.3F; + private static final long RESIZE_SOUND_INTERVAL_MS = 120L; + private static final String EMPTY_SEARCH_TITLE = "Nothing found"; + private static final String EMPTY_SEARCH_HINT = "Try another module name"; + private static final String EMPTY_CATEGORY_TITLE = "Nothing here yet"; + private static final String EMPTY_CATEGORY_HINT = "This category has no modules"; + private final xv layout = new xv(); + private rl selectedCategory = rl.COMBAT; + private rl realSelectedCategory = rl.COMBAT; + private float boxX; + private float boxY; + private float targetBoxX; + private float targetBoxY; + private ct boxXAnim; + private ct boxYAnim; + private int columns = 2; + private float boxWidth; + private float boxHeight; + private boolean dragging; + private float dragOffsetX; + private float dragOffsetY; + private boolean resizing; + private float resizeAnchorScreenX; + private float resizeAnchorScreenY; + private float resizeGrabOffsetX; + private float resizeGrabOffsetY; + private long lastResizeSoundTime; + private final ct resizeGripAnim = asa.spring(); + private final ct resizeGrabAnim = ct.transform(ob.FAST, 0.0F); + private final ct sidebarAnimation = ct.layout(ob.SLOW, 1.0F); + private boolean isSidebarExpanded = (boolean)(((1)) != 0); + private final cu openTransition = new cu(yb.DEFAULT.getRole().baseMillis(), yb.DEFAULT.getEasing(), 0.0F); + private boolean initialized; + private long openTime; + private arn searchField; + private final arl scrollHandler = new arl(); + private final zx pointerIntent = new zx(); + private boolean closing = (boolean)(((0)) != 0); + private aam sidebarPanel; + private aak headerPanel; + private final aah cosmeticsPanel = new aah(); + private final aaj friendsPanel = new aaj(); + private final aat waypointsPanel = new aat(); + private final aas ticketsPanel = new aas(); + private rl ticketsReturnCategory = rl.COMBAT; + private final yk appearancePanel = new yk(); + private int knownPoolVersion = -1; + private int knownThemeVersion = -1; + private float scaledScissorX = 0.0F; + private float scaledScissorY = 0.0F; + private float scaledScissorEndX = 2000.0F; + private float scaledScissorEndY = 2000.0F; + private boolean inputScaleFrozen = (boolean)(((0)) != 0); + private float frozenInputScale = 1.0F; + private final ct animationColums; + private final ct blurAnimation = ct.layout(ob.MEDIUM, 0.0F); + private final ct animationChangeCategory; + private final ark scrollBar = new ark((boolean)((((-1546540504 | 1546540505) + (-1546540504 & 1546540505))) != 0)); + private final aau sidePreview = new aau(); + private final ct[] footerHover; + private String cachedFooterThemeName; + private String cachedFooterThemeTooltip; + private int cachedFooterActive; + private String cachedFooterActiveTooltip; + private boolean categoryJustChanged; + private float categoryChangeOffset; + private Set popupSettings; + private aay hoveredSetting; + private aay lastFrameHoveredSetting; + private long lastManualScrollTime; + private static final float WINDOW_ACCENT_GLOW_SOFTNESS = 9.0F; + private static final float WINDOW_ACCENT_GLOW_ALPHA = 0.2F; + List modules; + private List cachedVisibleModules; + private String lastSearch; + private rl lastCategory; + + private static arq RADIUS_WINDOW() { + return asj.all(oc.WINDOW); + } + + public Set getPopupSettings() { + return this.popupSettings; + } + + public void setHoveredSetting(aay var1) { + this.lastFrameHoveredSetting = var1; + } + + public yc() { + ct[] var10001 = new ct[3]; + var10001[0] = asa.spring(); + var10001[1] = asa.spring(); + var10001[2] = asa.spring(); + this.footerHover = var10001; + this.cachedFooterThemeName = ""; + this.cachedFooterThemeTooltip = ""; + this.cachedFooterActive = -1; + this.cachedFooterActiveTooltip = ""; + this.categoryJustChanged = (boolean)(((0)) != 0); + this.categoryChangeOffset = 0.0F; + this.popupSettings = new HashSet<>(); + this.modules = new ArrayList<>(); + this.cachedVisibleModules = new ArrayList<>(); + this.lastSearch = null; + this.lastCategory = null; + this.animationColums = ct.layout(ob.SLOW, this.columns == 3? 1.0F : 0.0F); + this.animationChangeCategory = ct.layout(ob.FAST, 1.0F); + } + + public void initialize() { + this.modules.addAll(bz.getInstance().getModuleManager().getModules().stream().map(aab::new).toList()); + this.refreshThemes(); + this.modules.add(new aaa()); + this.refreshConfigs(); + } + + private void refreshThemes() { + List var1 = null; + Iterator var2 = null; + mv var3 = null; + int var4 = 0; + Iterator var5 = null; + zu var6 = null; + aae var7 = null; + int var8 = 1629176927; + + while (true) { + switch (var8) { + case -2104596517: + if (var2.hasNext()) { + var8 = 1711633173; + } else { + var8 = -282468991; + } + break; + case -1773774181: + this.modules.add(new aae(var3)); + var8 = -859026804; + break; + case -1125760842: + var7 = (aae)var6; + if (var7.getTheme() == var3) { + var8 = 123913646; + } else { + var8 = -1120239588; + } + break; + case -1120239588: + var8 = 483525990; + break; + case -859026804: + var8 = -2104596517; + break; + case -595745510: + var6 = (zu)var5.next(); + if (var6 instanceof aae) { + var8 = -1125760842; + } else { + var8 = -1120239588; + } + break; + case -282468991: + this.knownThemeVersion = bz.getInstance().getThemeManager().version(); + this.lastSearch = null; + return; + case 123913646: + var4 = 1; + var8 = 1397950867; + break; + case 483525990: + if (var5.hasNext()) { + var8 = -595745510; + } else { + var8 = 1397950867; + } + break; + case 1397950867: + if (var4 == 0) { + var8 = -1773774181; + } else { + var8 = -859026804; + } + break; + case 1629176927: + default: + var1 = bz.getInstance().getThemeManager().getThemes(); + this.modules.removeIf(var1x -> { + aae var2x = null; + int var4x = 0; + int var3x = -1985115269; + + while (true) { + switch (var3x) { + case -1985115269: + default: + if (var1x instanceof aae) { + var3x = 1874733119; + } else { + var3x = 1245967796; + } + break; + case 356639278: + return (boolean)((var4x) != 0); + case 1205756249: + var4x = 1; + var3x = 356639278; + break; + case 1245967796: + var4x = 0; + var3x = 356639278; + break; + case 1874733119: + var2x = (aae)var1x; + if (!var1.contains(var2x.getTheme())) { + var3x = 1205756249; + } else { + var3x = 1245967796; + } + } + } + }); + var2 = var1.iterator(); + var8 = -2104596517; + break; + case 1711633173: + var3 = (mv)var2.next(); + var4 = 0; + var5 = this.modules.iterator(); + var8 = 483525990; + } + } + } + + public void refreshConfigs() { + Iterator var1 = null; + String var2 = null; + int var3 = 60509920; + + while (true) { + switch (var3) { + case -1189150361: + amu var5 = (amu)var1.next(); + this.modules.add(new aac(var5)); + var3 = 1163579104; + break; + case 60509920: + default: + this.modules.removeIf(var0 -> { + int var2x = 0; + int var1x = 969174265; + + while (true) { + switch (var1x) { + case -1113605229: + return (boolean)((var2x) != 0); + case -924248849: + var2x = 1; + var1x = -1113605229; + break; + case 969174265: + default: + if (!(var0 instanceof zz)) { + var1x = 1399728244; + } else { + var1x = -924248849; + } + break; + case 1399728244: + if (var0 instanceof aac) { + var1x = -924248849; + } else { + var1x = 1817612441; + } + break; + case 1817612441: + var2x = 0; + var1x = -1113605229; + } + } + }); + var1 = bz.getInstance().getConfigManager().configNames().iterator(); + var3 = 271278612; + break; + case 161632403: + var1 = amv.pool().iterator(); + var3 = 1163579104; + break; + case 271278612: + if (var1.hasNext()) { + var3 = 2001956665; + } else { + var3 = 161632403; + } + break; + case 442359480: + this.knownPoolVersion = amv.poolVersion(); + this.lastSearch = null; + return; + case 1163579104: + if (var1.hasNext()) { + var3 = -1189150361; + } else { + var3 = 442359480; + } + break; + case 2001956665: + var2 = (String)var1.next(); + this.modules + .add(new zz(var2.replace("." + "Evolution".toLowerCase(), ""))); + var3 = 271278612; + } + } + } + + protected void init() { + this.openTime = System.currentTimeMillis(); + this.sidePreview.reset(); + this.pointerIntent.reset(); + this.categoryJustChanged = (boolean)(((1)) != 0); + this.categoryChangeOffset = 300.0F; + this.cosmeticsPanel.onCategoryOpened(this.categoryChangeOffset); + this.appearancePanel.onCategoryOpened(this.categoryChangeOffset); + this.closing = (boolean)(((0)) != 0); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playOpen(); + } + + this.animationColums.jumpTo(this.columns == 3? 1.0F : 0.0F); + this.layout.resolveSize(this.animationColums.value()); + this.boxWidth = this.layout.getWindowWidth(); + this.boxHeight = this.layout.getWindowHeight(); + if (this.boxXAnim == null) { + this.targetBoxX = (this.width - this.boxWidth) / 2.0F; + this.targetBoxY = (this.height - this.boxHeight) / 2.0F; + this.boxXAnim = ct.transform(ob.SETTLED, this.targetBoxX); + this.boxYAnim = ct.transform(ob.SETTLED, this.targetBoxY); + this.boxX = this.targetBoxX; + this.boxY = this.targetBoxY; + } + + this.layout.resolvePlacement(this.boxX, this.boxY, this.isSidebarExpanded ? 1.0F : 0.0F, this.headerRightReserve()); + this.syncOpenTransition(); + this.openTransition.jumpTo(0.0F); + this.openTransition.update(1.0F); + if (!this.initialized) { + this.searchField = new arn( + new UVPair(this.layout.getHeaderX(), this.layout.getHeaderY()), + gl.MEDIUM.getFont(7.0F), + "Search", + 100.0F + ); + this.sidebarPanel = new aam(this.sidebarAnimation, this.isSidebarExpanded, this::selectCategory); + this.headerPanel = new aak( + this.searchField, + () -> this.columns = this.columns % 4, + () -> bz.getInstance().getThemeManager().switchTheme(), + () -> { + this.isSidebarExpanded = (boolean)(((!this.isSidebarExpanded + ? 1: (-1590966918 | 1590966918) + (-1590966918 & 1590966918))) != 0); + this.sidebarAnimation.animateTo(this.isSidebarExpanded ? 1.0F : 0.0F); + }, + this::toggleTickets + ); + } + + this.initialized = (boolean)(((1)) != 0); + } + + public boolean selectCategory(rl var1) { + if (this.realSelectedCategory == var1) { + return (boolean)(((0)) != 0); + } + + if (this.realSelectedCategory == rl.APPEARANCE && this.appearancePanel.guardLeave(() -> this.selectCategory(var1))) { + return (boolean)(((0)) != 0); + } + + this.animationChangeCategory.jumpTo(0.0F); + this.headerPanel.resetAnim(this.realSelectedCategory, var1); + this.categoryChangeOffset = var1.ordinal() > this.realSelectedCategory.ordinal() ? 300.0F : -300.0F; + this.cosmeticsPanel.onCategoryOpened(this.categoryChangeOffset); + this.appearancePanel.onCategoryOpened(this.categoryChangeOffset); + this.waypointsPanel.onCategoryOpened(this.categoryChangeOffset); + if (this.realSelectedCategory == rl.FRIENDS) { + this.friendsPanel.onClosed(); + } + + if (this.realSelectedCategory == rl.WAYPOINTS) { + this.waypointsPanel.onClosed(); + } + + if (this.realSelectedCategory == rl.TICKETS) { + this.ticketsPanel.onClosed(); + } + + if (var1 == rl.TICKETS) { + this.ticketsPanel.onCategoryOpened(); + } + + if (var1 == rl.CONFIGS) { + amv.refreshPool(null); + } + + this.realSelectedCategory = var1; + this.scrollHandler.setTargetValue(0.0); + this.searchField.setSelectAll((boolean)((((1625021306 | -1625021305) + (1625021306 & -1625021305))) != 0)); + this.searchField.setText(""); + return (boolean)(((1)) != 0); + } + + private void toggleTickets() { + int var1 = -1045636749; + + while (true) { + switch (var1) { + case -1045636749: + default: + if (this.realSelectedCategory == rl.TICKETS) { + var1 = -334591582; + } else { + var1 = 1645904192; + } + break; + case -334591582: + this.selectCategory(this.ticketsReturnCategory); + return; + case 1645904192: + this.ticketsReturnCategory = this.realSelectedCategory; + this.selectCategory(rl.TICKETS); + return; + } + } + } + + @Override + public void tick() { + int var1 = -1158272669; + + while (true) { + switch (var1) { + case -1158272669: + default: + if (this.closing) { + var1 = -106772694; + } else { + var1 = 1252642062; + } + break; + case -106772694: + if (this.openTransition.value() == 0.0F) { + var1 = 1460321367; + } else { + var1 = 1252642062; + } + break; + case 1252642062: + super.tick(); + return; + case 1460321367: + this.onClose(); + var1 = 1252642062; + } + } + } + + public boolean shouldCloseOnEsc() { + return (boolean)(((0)) != 0); + } + + @Override + public boolean showsHudOverlays() { + return (boolean)(((1)) != 0); + } + + public void removed() { + int var1 = -72105470; + + while (true) { + switch (var1) { + case -1650910183: + bz.getInstance().getSoundManager().playClose(); + var1 = -1182143890; + break; + case -1182143890: + super.removed(); + return; + case -72105470: + default: + yd.abort(); + this.closing = (boolean)(((1)) != 0); + if (bz.getInstance().getSoundManager() != null) { + var1 = -1650910183; + } else { + var1 = -1182143890; + } + } + } + } + + public void focusCategory(rl var1) { + int var2 = -1383035917; + + while (true) { + switch (var2) { + case -1383035917: + default: + if (var1 == null) { + var2 = 1012836773; + } else { + var2 = 1813767290; + } + break; + case -872245350: + return; + case 495199402: + this.searchField.setSelected((boolean)((((421118970 ^ -421118970) + ((421118970 & -421118970) << 1))) != 0)); + this.searchField.setSelectAll((boolean)((((372801110 | -372801110) + (372801110 & -372801110))) != 0)); + this.searchField.setText(""); + this.searchField.setCursor((1356599310 ^ -1356599310) + ((1356599310 & -1356599310) << 1)); + var2 = -872245350; + break; + case 1012836773: + return; + case 1813767290: + this.selectedCategory = var1; + this.realSelectedCategory = var1; + this.scrollHandler.setTargetValue(0.0); + if (this.searchField != null) { + var2 = 495199402; + } else { + var2 = -872245350; + } + } + } + } + + public void focusModule(rm var1) { + int var2 = -1388083603; + + while (true) { + switch (var2) { + case -1752119590: + this.focusCategory(var1.getCategory()); + if (this.searchField == null) { + var2 = -556828694; + } else { + var2 = -494190858; + } + break; + case -1388083603: + default: + if (var1 == null) { + var2 = -623768017; + } else { + var2 = -1752119590; + } + break; + case -623768017: + return; + case -556828694: + return; + case -494190858: + this.searchField.setText(var1.getName()); + this.searchField.setCursor(var1.getName().length()); + this.searchField.setSelectAll((boolean)((((-1942056995 | 1942056996) + (-1942056995 & 1942056996))) != 0)); + return; + } + } + } + + public void openFriendChat(String var1) { + this.selectedCategory = rl.FRIENDS; + this.realSelectedCategory = rl.FRIENDS; + this.scrollHandler.setTargetValue(0.0); + this.friendsPanel.openChatWith(var1); + } + + public void extractBackground(GuiGraphicsExtractor var1, int var2, int var3, float var4) { + } + + public boolean isFinish() { + int var2 = 0; + int var1 = 624562400; + + while (true) { + switch (var1) { + case -1709929504: + var2 = 0; + var1 = 1220749508; + break; + case -239313518: + var2 = 1; + var1 = 1220749508; + break; + case 624562400: + default: + if (this.openTransition.isDone()) { + var1 = 1964710239; + } else { + var1 = -1709929504; + } + break; + case 1220749508: + return (boolean)((var2) != 0); + case 1964710239: + if (this.closing) { + var1 = -239313518; + } else { + var1 = -1709929504; + } + } + } + } + + private yb syncOpenTransition() { + yb var1 = vm.INSTANCE.getMenuOpenEffect(); + this.openTransition.retime(var1.durationMillis(), var1.getEasing()); + return var1; + } + + public void renderTop(asq var1, float var2, float var3) { + if (this.initialized) { + this.releaseStaleInputScale(); + float var4 = (float)this.toLocalX(var2); + float var5 = (float)this.toLocalY(var3); + this.pointerIntent.track(var2, var3, var5, System.currentTimeMillis()); + zu.beginLayoutFrame(); + ass.beginFrame(); + this.animationColums.update(this.columns == 3 ? 1.0F : 0.0F); + float var6 = this.boxWidth; + float var7 = this.boxHeight; + this.layout.resolveSize(this.animationColums.value()); + this.boxWidth = this.layout.getWindowWidth(); + this.boxHeight = this.layout.getWindowHeight(); + if (!this.dragging) { + this.targetBoxX = this.targetBoxX - (this.boxWidth - var6) / 2.0F; + this.targetBoxY = this.targetBoxY - (this.boxHeight - var7) / 2.0F; + } + + this.clampTargetBox(this.menuScale()); + this.boxXAnim.animateTo(this.targetBoxX); + this.boxYAnim.animateTo(this.targetBoxY); + this.boxX = this.boxXAnim.update(); + this.boxY = this.boxYAnim.update(); + this.sidePreview.update(); + this.sidePreview.beginFrame(); + yb var8 = this.syncOpenTransition(); + float var9 = this.openTransition.update(this.closing ? 0.0F : 1.0F); + float var10 = Mth.clamp(var8.alpha(var9), 0.0F, 1.0F); + float var11 = this.sidebarAnimation.update(); + this.layout.resolvePlacement(this.boxX, this.boxY, var11, this.headerRightReserve()); + float var12 = var8.scaleX(var9); + float var13 = var8.scaleY(var9); + float var14 = var8.offsetY(var9); + mv var15 = bz.getInstance().getThemeManager().getCurrentTheme(); + Matrix3x2fStack var16 = var1.pose(); + var1.pushMatrix(); + float var17 = this.menuScale(); + float var18 = this.width / 2.0F; + float var19 = this.height / 2.0F; + var16.translate(var18, var19); + var16.scale(var17, var17); + var16.translate(-var18, -var19); + float var20 = this.boxX + this.boxWidth / 2.0F; + float var21 = this.boxY + this.boxHeight / 2.0F; + var16.translate(0.0F, var14); + var16.translate(var20, var21); + var16.scale(var12, var13); + var16.translate(-var20, -var21); + float var22 = arx.progress(); + boolean var23 = vm.INSTANCE.isBlur(); + this.blurAnimation.animateTo(var23 ? 1.0F : 0.0F); + float var24 = this.blurAnimation.update() * (1.0F - var22); + asu var25 = var15.getColor().mulAlpha(var10); + asu var26 = var15.getBackgroundColor().mulAlpha(var10 * 4.0F); + asu var27 = var15.getBackgroundColor().withAlpha(var10 * 0.72F); + asu var28 = var26.mix(var27, var24); + asu var29 = var15.getWhite().mulAlpha(var10); + asu var30 = var15.getWhite().mulAlpha(var10); + if (var24 > 0.0F) { + atb.drawBlurHudBooleanCheck( + var1.pose(), this.boxX, this.boxY, this.boxWidth, this.boxHeight, 20.0F, asj.all(oc.WINDOW), asu.WHITE.mulAlpha(var10 * var24), true + ); + atb.drawRoundedRect( + var1.pose(), this.boxX, this.boxY, this.boxWidth, this.boxHeight, asj.all(oc.WINDOW), var15.getForegroundLight().mulAlpha(0.2F * var24 * var10) + ); + } + + atb.drawShadow( + var16, + this.boxX, + this.boxY, + this.boxWidth, + this.boxHeight, + pk.shadowSoftness(nz.OVERLAY), + RADIUS_WINDOW(), + asu.BLACK.withAlpha(var10 * pk.shadowAlpha(nz.OVERLAY)) + ); + boolean var31 = var15.getBackdrop().isActive(); + asu var32 = var31 ? var15.getMiddleColor() : var15.getColor(); + atb.drawShadow( + var16, + this.boxX, + this.boxY, + this.boxWidth, + this.boxHeight, + 9.0F * pk.shadowSoftScale(), + RADIUS_WINDOW(), + var32.mulAlpha(var10 * 0.2F * pk.shadowAlphaScale()) + ); + var1.drawSurface(aso.WINDOW, this.boxX, this.boxY, this.boxWidth, this.boxHeight, RADIUS_WINDOW(), var28.getRGB()); + atb.drawThemeBackdrop( + var16, this.boxX, this.boxY, this.boxWidth, this.boxHeight, RADIUS_WINDOW(), var15.getBackdrop(), var15.getAccent(), var10 * (1.0F - var22) + ); + if (var31) { + atb.drawRoundedBorder( + var16, this.boxX, this.boxY, this.boxWidth, this.boxHeight, pk.borderRim(), RADIUS_WINDOW(), var15.getAccent().corners().mulAlpha(var10) + ); + } else { + atb.drawRoundedBorder(var16, this.boxX, this.boxY, this.boxWidth, this.boxHeight, pk.borderRim(), RADIUS_WINDOW(), var15.getColor().mulAlpha(var10)); + } + + if (vm.INSTANCE.isShimmer()) { + atb.drawAnimatedGloss(var16, this.boxX, this.boxY, this.boxWidth, this.boxHeight, RADIUS_WINDOW(), var10); + } + + arx.invalidateScene(); + var1.pushClipBounds(this.boxX, this.boxY, this.boxX + this.boxWidth, this.boxY + this.boxHeight); + this.sidebarPanel.render(var1, this.layout, var10, var15, this.realSelectedCategory, var25, var30, var29, var4, var5); + float var33 = this.layout.getContentX(); + float var34 = this.layout.getContentY(); + this.refreshVisibleModules(); + this.headerPanel + .render(var1, this.layout, this.columns, var10, var15, this.realSelectedCategory, this.searchResultCount(), this.isSidebarExpanded, var4, var5); + float var35 = this.layout.getContentHeight(); + float var36 = this.layout.getContentWidth(); + this.scaledScissorX = this.layout.scissorLeft(); + this.scaledScissorY = this.layout.scissorTop(); + this.scaledScissorEndX = this.layout.scissorRight(); + this.scaledScissorEndY = this.layout.scissorBottom(); + if (amv.poolVersion() != this.knownPoolVersion) { + this.refreshConfigs(); + } + + if (bz.getInstance().getThemeManager().version() != this.knownThemeVersion) { + this.refreshThemes(); + } + + float var37 = var10 * this.animationChangeCategory.update(this.selectedCategory == this.realSelectedCategory ? 1.0F : 0.0F); + float var38 = (float)Mth.clamp(this.scrollHandler.getValue(), 0.0, this.scrollHandler.getMax()); + float var39 = (float)this.scrollHandler.getMax() - var38; + float var40 = 30.0F * Math.min(1.0F, var38 / 60.0F); + float var41 = 30.0F * Math.min(1.0F, var39 / 60.0F); + if (this.selectedCategory == rl.COSMETICS || this.selectedCategory == rl.APPEARANCE) { + var40 = 0.0F; + } + + var1.clipScroll(this.scaledScissorX, this.scaledScissorY, this.scaledScissorEndX, this.scaledScissorEndY, var40, var41); + boolean var42 = this.dragging || this.scrollBar.isDragging() || this.resizing || this.closing || System.currentTimeMillis() - this.openTime < 500L; + float var43 = var42 ? -1000.0F : var4; + float var44 = var42 ? -1000.0F : var5; + if (this.selectedCategory == rl.COSMETICS) { + float var45 = this.cosmeticsPanel + .render( + var1, + var33, + var34, + var36, + var35, + (float)Mth.clamp(this.scrollHandler.getValue(), 0.0, this.scrollHandler.getMax()), + var37, + var15, + var43, + var44, + false, + this.columns + 1, + this.searchField.getText() + ); + this.scrollHandler.update(); + this.scrollHandler.setMax(Math.max(0.0F, var45 - var35)); + } else if (this.selectedCategory == rl.FRIENDS) { + gt.beginBatch(); + float var54 = this.friendsPanel + .render( + var1, + var33, + var34, + var36, + var35, + (float)Mth.clamp(this.scrollHandler.getValue(), 0.0, this.scrollHandler.getMax()), + var37, + var15, + var43, + var44 + ); + gt.endBatch(); + this.scrollHandler.update(); + this.scrollHandler.setMax(Math.max(0.0F, var54 - var35)); + if (this.friendsPanel.consumeScrollToBottom()) { + this.scrollHandler.setTargetValue(-this.scrollHandler.getMax()); + } + } else if (this.selectedCategory == rl.WAYPOINTS) { + gt.beginBatch(); + float var55 = this.waypointsPanel + .render( + var1, + var33, + var34, + var36, + var35, + (float)Mth.clamp(this.scrollHandler.getValue(), 0.0, this.scrollHandler.getMax()), + var37, + var15, + var43, + var44 + ); + gt.endBatch(); + this.scrollHandler.update(); + this.scrollHandler.setMax(Math.max(0.0F, var55 - var35)); + if (this.waypointsPanel.consumeScrollReset()) { + this.scrollHandler.setTargetValue(0.0); + } + } else if (this.selectedCategory == rl.TICKETS) { + gt.beginBatch(); + float var56 = this.ticketsPanel + .render( + var1, + var33, + var34, + var36, + var35, + (float)Mth.clamp(this.scrollHandler.getValue(), 0.0, this.scrollHandler.getMax()), + var37, + var15, + var43, + var44 + ); + gt.endBatch(); + this.scrollHandler.update(); + this.scrollHandler.setMax(Math.max(0.0F, var56 - var35)); + if (this.ticketsPanel.consumeScrollReset()) { + this.scrollHandler.setTargetValue(0.0); + } + + if (this.ticketsPanel.consumeScrollToBottom()) { + this.scrollHandler.setTargetValue(-this.scrollHandler.getMax()); + } + } else if (this.selectedCategory == rl.APPEARANCE) { + gt.beginBatch(); + float var57 = this.appearancePanel + .render( + var1, + var33, + var34, + var36, + var35, + (float)Mth.clamp(this.scrollHandler.getValue(), 0.0, this.scrollHandler.getMax()), + var37, + var15, + var43, + var44, + this.searchField.getText() + ); + gt.endBatch(); + this.scrollHandler.update(); + this.scrollHandler.setMax(Math.max(0.0F, var57 - var35)); + if (this.appearancePanel.consumeScrollReset()) { + this.scrollHandler.setTargetValue(0.0); + } + } else { + gt.beginBatch(); + this.renderModules(var1, var43, var44, var37, (int)var33, var36, (int)var34); + if (this.cachedVisibleModules.isEmpty()) { + this.renderEmptyState(var1, var33, var34, var36, var35, var37, var15); + } + + gt.endBatch(); + } + + float var58 = -5.0F; + float var46 = -7.0F; + float var47 = 0.0F; + float var48 = 0.0F; + float var49 = 7.0F; + var1.popClip(); + if (this.selectedCategory == rl.COSMETICS) { + this.cosmeticsPanel + .render( + var1, + var33, + var34, + var36, + var35, + (float)Mth.clamp(this.scrollHandler.getValue(), 0.0, this.scrollHandler.getMax()), + var37, + var15, + var43, + var44, + true, + this.columns + 1, + this.searchField.getText() + ); + } else if (this.selectedCategory != rl.FRIENDS + && this.selectedCategory != rl.APPEARANCE + && this.selectedCategory != rl.WAYPOINTS + && this.selectedCategory != rl.TICKETS) { + this.renderModulesHover(var1, var43, var44, var37, (int)var33, var36, (int)var34, var58, var46, var47, var48, var49); + } + + if (this.usesModuleGrid()) { + this.requestSidePreview(); + } + + var1.popClip(); + this.scrollBar + .measure( + this.layout.getScrollX(), + var34, + this.layout.getScrollWidth(), + var35, + (float)this.scrollHandler.getMax(), + (float)Mth.clamp(this.scrollHandler.getValue(), 0.0, this.scrollHandler.getMax()) + ); + this.scrollBar.render(var1, var15, var10, var4, var5, this.scrollHandler.isSettled()); + this.renderFooter(var1, var10, var15, var43, var44); + this.renderResizeGrip(var1, var10, var4, var5); + this.sidePreview.render(var1, var15, var10, this.boxX, this.boxY, var34, this.boxWidth, (float)this.toLocalX(0.0), (float)this.toLocalX(this.width)); + arx.invalidateScene(); + if (!this.popupSettings.isEmpty()) { + ArrayList var50 = null; + + for (aax var52 : this.popupSettings) { + if (var52 instanceof abq var53 && var53.getSetting() != null && !var53.getSetting().isVisible()) { + var52.getAnimationScale().animateTo(0.0F); + } + + var52.render(var1, (float)var52.toPopupX(var4), (float)var52.toPopupY(var5), var10, var15); + if (var52.getAnimationScale().value() == 0.0F && var52.getAnimationScale().target() == 0.0F) { + if (var50 == null) { + var50 = new ArrayList(); + } + + var50.add(var52); + } + } + + if (var50 != null) { + this.popupSettings.removeAll(var50); + } + } + + if (this.animationChangeCategory.value() == 0.0F && this.selectedCategory != this.realSelectedCategory) { + this.selectedCategory = this.realSelectedCategory; + this.categoryJustChanged = true; + } + + if (this.scrollBar.isDragging()) { + this.lastManualScrollTime = System.currentTimeMillis(); + this.scrollHandler.jumpTo(-this.scrollBar.dragTo(var5)); + } + + if (this.dragging || this.scrollBar.isDragging() || this.resizing || this.closing) { + ass.suppress(); + } + + String var59 = this.lastFrameHoveredSetting != null ? this.lastFrameHoveredSetting.getHoverDescription(var4, var5) : null; + if (this.lastFrameHoveredSetting != null && var59 != null) { + ass.tooltip(this.lastFrameHoveredSetting, var59, var4 - 6.0F, var5 - 6.0F, 12.0F, 12.0F, asr.ABOVE); + } + + this.hoveredSetting = this.lastFrameHoveredSetting; + this.lastFrameHoveredSetting = null; + ass.render(var1, var10, this.boxX, this.boxY, this.boxWidth, this.boxHeight); + float var60 = Math.max(pk.shadowSoftness(nz.OVERLAY), 9.0F * pk.shadowSoftScale()); + yd.render( + var1, this.boxX - var60, this.boxY - var60, this.boxWidth + var60 * 2.0F, this.boxHeight + var60 * 2.0F, arq.all(asj.of(oc.WINDOW) + var60), var10 + ); + this.publishPresence(var4, var5); + var1.popMatrix(); + } + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + this.frozenInputScale = this.menuScale(); + this.inputScaleFrozen = (boolean)(((1)) != 0); + var1 = this.toLocalX(var1); + var3 = this.toLocalY(var3); + if (!this.popupSettings.isEmpty()) { + int var6 = 0; + + for (aax var8 : this.popupSettings) { + if (var8.containsCursor(var1, var3)) { + var8.onMouseClicked(var8.toPopupX(var1), var8.toPopupY(var3), var5); + var6 = 1; + } else if (var8.getAnimationScale().target() != 0.0F) { + var8.getAnimationScale().animateTo(0.0F); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + } + } + + if (var6 != 0) { + return; + } + } + + if (!this.isClosing()) { + if (var5.getButtonIndex() == 0 && this.isOverResizeGrip(var1, var3)) { + if (this.searchField.isSelected()) { + this.searchField.setSelected((boolean)((((1310761062 ^ -1310761062) + ((1310761062 & -1310761062) << 1))) != 0)); + } + + this.beginResize(var1, var3); + } else if (this.headerPanel.handleMouseClicked(var1, var3)) { + if (this.headerPanel.isOverSearchBar(var1, var3)) { + this.searchField.setSelected((boolean)((((-1961481645 ^ 1961481646) + ((-1961481645 & 1961481646) << 1))) != 0)); + } + } else if (!this.sidebarPanel.handleMouseClicked(var1, var3)) { + if (this.searchField.isSelected()) { + this.searchField.setSelected((boolean)((((1898693101 | -1898693101) + (1898693101 & -1898693101))) != 0)); + } + + if (var5.getButtonIndex() == 0 && aqj.isHovered(var1, var3, this.boxX, this.boxY, this.boxWidth, this.layout.dragBandHeight())) { + this.dragging = (boolean)(((1)) != 0); + this.dragOffsetX = (float)var1 - this.boxX; + this.dragOffsetY = (float)var3 - this.boxY; + } else if (this.openTransition.isDone()) { + if (var5.getButtonIndex() != 0 || !this.scrollBar.press(var1, var3)) { + if (this.selectedCategory == rl.COSMETICS) { + this.cosmeticsPanel.handleMouseClicked(var1, var3, this.searchField.getText()); + super.onMouseClicked(var1, var3, var5); + } else if (this.selectedCategory == rl.FRIENDS) { + this.friendsPanel.handleMouseClicked(var1, var3, var5); + super.onMouseClicked(var1, var3, var5); + } else if (this.selectedCategory == rl.APPEARANCE) { + this.appearancePanel.handleMouseClicked(var1, var3, var5); + super.onMouseClicked(var1, var3, var5); + } else if (this.selectedCategory == rl.WAYPOINTS) { + this.waypointsPanel.handleMouseClicked(var1, var3, var5); + super.onMouseClicked(var1, var3, var5); + } else if (this.selectedCategory == rl.TICKETS) { + this.ticketsPanel.handleMouseClicked(var1, var3, var5); + super.onMouseClicked(var1, var3, var5); + } else if (!(var1 < this.layout.scissorLeft()) + && !(var1 > this.layout.scissorRight()) + && !(var3 < this.layout.scissorTop()) + && !(var3 > this.layout.scissorBottom())) { + double var12 = var1; + double var13 = var3; + this.modules.stream().filter(var1x -> { + int var3x = 0; + int var2 = 89276247; + + while (true) { + switch (var2) { + case -1724281718: + var3x = 0; + var2 = 1186344397; + break; + case -745076628: + var3x = (var1x.getName().toLowerCase().contains(this.searchField.getText().toLowerCase())) ? 1 : 0; + var2 = 1186344397; + break; + case 89276247: + default: + if (this.searchField.isEmpty()) { + var2 = 1201124090; + } else { + var2 = -745076628; + } + break; + case 625421787: + var3x = 1; + var2 = 1186344397; + break; + case 1186344397: + return (boolean)((var3x) != 0); + case 1201124090: + if (var1x.getCategory() == this.selectedCategory) { + var2 = 625421787; + } else { + var2 = -1724281718; + } + } + } + }).forEach(var5x -> var5x.onMouseClicked(var12, var13, var5)); + super.onMouseClicked(var1, var3, var5); + } + } + } + } + } + } + + @Override + public boolean charTyped(char var1, int var2) { + if (this.searchField.isSelected()) { + return this.searchField.charTyped(var1, var2); + } + + if (this.realSelectedCategory == rl.FRIENDS && this.friendsPanel.charTyped(var1, var2)) { + return (boolean)(((1)) != 0); + } + + if (this.realSelectedCategory == rl.APPEARANCE && this.appearancePanel.charTyped(var1, var2)) { + return (boolean)(((1)) != 0); + } + + if (this.realSelectedCategory == rl.WAYPOINTS && this.waypointsPanel.charTyped(var1, var2)) { + return (boolean)(((1)) != 0); + } + + if (this.realSelectedCategory == rl.TICKETS && this.ticketsPanel.charTyped(var1, var2)) { + return (boolean)(((1)) != 0); + } + + for (aax var4 : this.popupSettings) { + var4.charTyped(var1, var2); + } + + int var6 = 0; + + for (zu var5 : this.cachedVisibleModules) { + if (var5.charTyped(var1, var2)) { + var6 = 1; + } + } + + return (boolean)(var6 != 0 ? 1: super.charTyped(var1, var2)); + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + Iterator var6 = null; + zu var7 = null; + int var8 = 934057480; + + while (true) { + switch (var8) { + case -1781079791: + aax var10 = (aax)var6.next(); + var10.onMouseReleased(var10.toPopupX(var1), var10.toPopupY(var3), var5); + var8 = -411069947; + break; + case -1601605914: + if (var6.hasNext()) { + var8 = -726496411; + } else { + var8 = 1409934692; + } + break; + case -1520399233: + if (this.selectedCategory == rl.APPEARANCE) { + var8 = 808883238; + } else { + var8 = 3489232; + } + break; + case -1361089345: + this.dragging = (boolean)(((0)) != 0); + this.scrollBar.release(); + this.endResize(); + var8 = -1520399233; + break; + case -1073422385: + var6 = this.cachedVisibleModules.iterator(); + var8 = -1601605914; + break; + case -857161913: + if (var5.getButtonIndex() == 0) { + var8 = -1361089345; + } else { + var8 = -1520399233; + } + break; + case -726496411: + var7 = (zu)var6.next(); + var7.onMouseReleased(var1, var3, var5); + var8 = -1601605914; + break; + case -411069947: + if (var6.hasNext()) { + var8 = -1781079791; + } else { + var8 = -857161913; + } + break; + case 3489232: + if (this.selectedCategory == rl.WAYPOINTS) { + var8 = 2111299750; + } else { + var8 = -1073422385; + } + break; + case 808883238: + this.appearancePanel.handleMouseReleased(var1, var3, var5); + var8 = 3489232; + break; + case 934057480: + default: + var1 = this.toLocalX(var1); + var3 = this.toLocalY(var3); + var6 = this.popupSettings.iterator(); + var8 = -411069947; + break; + case 1409934692: + super.onMouseReleased(var1, var3, var5); + this.inputScaleFrozen = (boolean)(((0)) != 0); + return; + case 2111299750: + this.waypointsPanel.handleMouseReleased(var1, var3, var5); + var8 = -1073422385; + } + } + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = 0; + + for (aax var6 : this.popupSettings) { + if (var6.keyPressed(var1, var2, var3)) { + this.searchField.setSelected((boolean)((((-1285437254 | 1285437254) + (-1285437254 & 1285437254))) != 0)); + var4 = 1; + } + } + + if (var4 != 0) { + return (boolean)(((1)) != 0); + } + + if (this.searchField.isSelected()) { + if (var1 == (-484722595 | 484722851) + (-484722595 & 484722851)) { + this.searchField.setSelected((boolean)((((-2031013360 | 2031013360) + (-2031013360 & 2031013360))) != 0)); + return (boolean)(((1)) != 0); + } else { + return this.searchField.keyPressed(var1, var2, var3); + } + } else { + if (this.realSelectedCategory == rl.FRIENDS && this.friendsPanel.keyPressed(var1, var2, var3)) { + return (boolean)(((1)) != 0); + } + + if (this.realSelectedCategory == rl.COSMETICS && this.cosmeticsPanel.keyPressed(var1, var2, var3)) { + return (boolean)(((1)) != 0); + } + + if (this.realSelectedCategory == rl.APPEARANCE && this.appearancePanel.keyPressed(var1, var2, var3)) { + return (boolean)(((1)) != 0); + } + + if (this.realSelectedCategory == rl.WAYPOINTS && this.waypointsPanel.keyPressed(var1, var2, var3)) { + return (boolean)(((1)) != 0); + } + + if (this.realSelectedCategory == rl.TICKETS && this.ticketsPanel.keyPressed(var1, var2, var3)) { + return (boolean)(((1)) != 0); + } + + int var8 = 0; + + for (zu var7 : this.cachedVisibleModules) { + if (var7.keyPressed(var1, var2, var3)) { + var8 = 1; + } + } + + if (var8 != 0) { + return (boolean)(((1)) != 0); + } + + if ((var1 == (-1259084297 | 1259084553) + (-1259084297 & 1259084553) || var1 == vq.INSTANCE.getKeyCode()) + && !this.closing + && System.currentTimeMillis() - this.openTime > (-324797475723476474L | 324797475723476674L) + (-324797475723476474L & 324797475723476674L)) { + if (this.realSelectedCategory == rl.APPEARANCE && this.appearancePanel.guardLeave(this::requestClose)) { + return (boolean)(((1)) != 0); + } + + this.requestClose(); + return (boolean)(((1)) != 0); + } else { + return super.keyPressed(var1, var2, var3); + } + } + } + + private void requestClose() { + Iterator var1 = null; + aax var2 = null; + int var3 = 1962439025; + + while (true) { + switch (var3) { + case -1921984876: + this.closing = (boolean)(((1)) != 0); + this.onClose(); + return; + case -778758115: + if (var1.hasNext()) { + var3 = 1668452241; + } else { + var3 = -1921984876; + } + break; + case -644253978: + this.onMouseReleased(0.0, 0.0, apf.LEFT); + this.onMouseReleased(0.0, 0.0, apf.RIGHT); + this.onMouseReleased(0.0, 0.0, apf.MIDDLE); + var1 = this.popupSettings.iterator(); + var3 = -778758115; + break; + case 1668452241: + var2 = (aax)var1.next(); + var2.getAnimationScale().animateTo(0.0F); + var3 = -778758115; + break; + case 1789960929: + return; + case 1962439025: + default: + if (this.closing) { + var3 = 1789960929; + } else { + var3 = -644253978; + } + } + } + } + + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + this.lastManualScrollTime = System.currentTimeMillis(); + this.scrollBar.notifyScrolled(); + var1 = this.toLocalX(var1); + var3 = this.toLocalY(var3); + if (!this.popupSettings.isEmpty()) { + int var9 = 0; + int var10 = 0; + + for (aax var12 : this.popupSettings) { + if (var12.containsCursor(var1, var3) && var12.getAnimationScale().value() > 0.0F) { + var10 = 1; + if (var12.mouseScrolled(var12.toPopupX(var1), var12.toPopupY(var3), var5, var7)) { + var9 = 1; + } + } else if (var12.getAnimationScale().target() != 0.0F) { + var12.getAnimationScale().animateTo(0.0F); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + } + } + + if (var9 != 0 || var10 != 0) { + return (boolean)(((1)) != 0); + } + } + + if (this.selectedCategory == rl.APPEARANCE && this.appearancePanel.mouseScrolled(var1, var3, var5, var7)) { + return (boolean)(((1)) != 0); + } + + if (this.selectedCategory == rl.WAYPOINTS && this.waypointsPanel.mouseScrolled(var1, var3, var5, var7)) { + return (boolean)(((1)) != 0); + } + + if (this.selectedCategory != rl.COSMETICS + && this.selectedCategory != rl.FRIENDS + && this.selectedCategory != rl.APPEARANCE + && this.selectedCategory != rl.WAYPOINTS + && this.selectedCategory != rl.TICKETS + && this.cachedVisibleModules != null) { + for (zu var17 : this.cachedVisibleModules) { + if (var17.mouseScrolled(var1, var3, var5, var7)) { + return (boolean)(((1)) != 0); + } + } + } + + float var16 = this.getContentVisibleHeight(); + float var18 = (float)Math.max(20.0, Math.min(60.0, this.scrollHandler.getMax() / var16 * 10.0)); + this.scrollHandler.scroll(var7 * var18 / 8.0); + return super.mouseScrolled(var1, var3, var5, var7); + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + var1 = this.toLocalX(var1); + var3 = this.toLocalY(var3); + var6 /= this.inputScale(); + var8 /= this.inputScale(); + if (var5.getButtonIndex() == 0) { + if (this.resizing) { + this.applyResize(var1, var3); + return; + } + + if (this.dragging) { + this.targetBoxX = (float)var1 - this.dragOffsetX; + this.targetBoxY = (float)var3 - this.dragOffsetY; + float var18 = (float)this.toLocalX(0.0); + float var19 = (float)this.toLocalY(0.0); + float var12 = (float)this.toLocalX(this.width); + float var13 = (float)this.toLocalY(this.height); + if (this.targetBoxX < var18) { + this.targetBoxX = var18; + } + + if (this.targetBoxY < var19) { + this.targetBoxY = var19; + } + + if (this.targetBoxX + this.boxWidth > var12) { + this.targetBoxX = var12 - this.boxWidth; + } + + if (this.targetBoxY + this.boxHeight > var13) { + this.targetBoxY = var13 - this.boxHeight; + } + + return; + } + } + + if (this.selectedCategory == rl.APPEARANCE) { + this.appearancePanel.handleMouseDragged(var1, var3, var5, var6, var8); + super.onMouseDragged(var1, var3, var5, var6, var8); + } else if (this.selectedCategory == rl.WAYPOINTS) { + this.waypointsPanel.handleMouseDragged(var1, var3, var5, var6, var8); + super.onMouseDragged(var1, var3, var5, var6, var8); + } else if (this.selectedCategory == rl.TICKETS) { + super.onMouseDragged(var1, var3, var5, var6, var8); + } else { + for (zu var11 : this.cachedVisibleModules) { + var11.onMouseDragged(var1, var3, var5, var6, var8); + } + + super.onMouseDragged(var1, var3, var5, var6, var8); + } + } + + public void onClose() { + super.onClose(); + } + + private void publishPresence(float var1, float var2) { + if (!this.closing && !(this.boxWidth <= 0.0F) && !(this.boxHeight <= 0.0F)) { + double var3 = this.scrollHandler.getMax(); + float var5 = var3 <= 0.0 ? 0.0F : (float)(Mth.clamp(this.scrollHandler.getValue(), 0.0, var3) / var3); + int var6 = GLFW.glfwGetMouseButton(mc.getWindow().handle(), (-1215448944 | 1215448944) + (-1215448944 & 1215448944)) + == 1? 1: 0; + anh.capture( + this.realSelectedCategory, + this.cachedVisibleModules.size(), + this.columns, + this.isSidebarExpanded, + (boolean)(((!this.searchField.isEmpty() + ? 1: (-2092201408 | 2092201408) + (-2092201408 & 2092201408))) != 0), + (var1 - this.boxX) / this.boxWidth, + (var2 - this.boxY) / this.boxHeight, + var5, + (boolean)((var6 + ) != 0)); + } + } + + private void refreshVisibleModules() { + String var1 = null; + rl var2 = null; + Comparator var3 = null; + int var4 = 1401502317; + + while (true) { + switch (var4) { + case -2023713571: + if (this.lastCategory == var2) { + var4 = -1910877110; + } else { + var4 = 2121200736; + } + break; + case -1910877110: + return; + case -1705195063: + if (this.lastSearch.equals(var1)) { + var4 = -2023713571; + } else { + var4 = 2121200736; + } + break; + case 1401502317: + default: + var1 = this.searchField.getText().toLowerCase(); + var2 = this.selectedCategory; + if (this.lastSearch != null) { + var4 = -1705195063; + } else { + var4 = 2121200736; + } + break; + case 2121200736: + var3 = this.resolveOrder(var2); + this.cachedVisibleModules = this.modules.stream().filter(var3x -> { + int var5x = 0; + int var4x = 818919891; + + while (true) { + switch (var4x) { + case -1994053734: + var5x = (var3x.getName().toLowerCase().contains(var1)) ? 1 : 0; + var4x = 841569715; + break; + case -1559034135: + var5x = 0; + var4x = 841569715; + break; + case -68546177: + if (var3x.getCategory() == var2) { + var4x = 1684260877; + } else { + var4x = -1559034135; + } + break; + case 818919891: + default: + if (this.searchField.isEmpty()) { + var4x = -68546177; + } else { + var4x = -1994053734; + } + break; + case 841569715: + return (boolean)((var5x) != 0); + case 1684260877: + var5x = 1; + var4x = 841569715; + } + } + }).sorted(var3).toList(); + this.lastSearch = var1; + this.lastCategory = var2; + return; + } + } + } + + private Comparator resolveOrder(rl var1) { + Comparator var2 = null; + int var3 = 1578949205; + + while (true) { + switch (var3) { + case -1873695920: + if (var1 == rl.CONFIGS) { + var3 = -917862217; + } else { + var3 = -32186807; + } + break; + case -1146374492: + return Comparator.comparingInt(zu::getSortGroup).thenComparing(var2); + case -917862217: + return Comparator.comparingInt(zu::getSortGroup).thenComparing(Comparator.comparingDouble(zu::getSortRank).reversed()).thenComparing(var2); + case -32186807: + return var2; + case 306688165: + if (var1 == rl.THEMES) { + var3 = -1146374492; + } else { + var3 = -1873695920; + } + break; + case 956586254: + return var2; + case 1578949205: + default: + var2 = Comparator.comparing(zu::getName, String.CASE_INSENSITIVE_ORDER); + if (!this.searchField.isEmpty()) { + var3 = 956586254; + } else { + var3 = 306688165; + } + } + } + } + + private boolean usesModuleGrid() { + int var2 = 0; + int var1 = -705396840; + + while (true) { + switch (var1) { + case -1656684151: + if (this.selectedCategory != rl.APPEARANCE) { + var1 = -1656371270; + } else { + var1 = 892620490; + } + break; + case -1656371270: + if (this.selectedCategory != rl.WAYPOINTS) { + var1 = -1420317440; + } else { + var1 = 892620490; + } + break; + case -1420317440: + if (this.selectedCategory != rl.TICKETS) { + var1 = 1609456950; + } else { + var1 = 892620490; + } + break; + case -705396840: + default: + if (this.selectedCategory != rl.COSMETICS) { + var1 = 242573451; + } else { + var1 = 892620490; + } + break; + case 242573451: + if (this.selectedCategory != rl.FRIENDS) { + var1 = -1656684151; + } else { + var1 = 892620490; + } + break; + case 892620490: + var2 = 0; + var1 = 1744925527; + break; + case 1609456950: + var2 = 1; + var1 = 1744925527; + break; + case 1744925527: + return (boolean)((var2) != 0); + } + } + } + + private void requestSidePreview() { + int var1 = 0; + zu var2 = null; + aab var3 = null; + aav var4 = null; + rm var5 = null; + int var6 = 1488525813; + + while (true) { + switch (var6) { + case -660601776: + var2 = this.cachedVisibleModules.get(var1); + if (var2.isHovered()) { + var6 = 799837724; + } else { + var6 = 1123601884; + } + break; + case 324036968: + if (var1 < this.cachedVisibleModules.size()) { + var6 = -660601776; + } else { + var6 = 881157641; + } + break; + case 799837724: + if (var2 instanceof aab) { + var6 = 1874453625; + } else { + var6 = 1123601884; + } + break; + case 881157641: + return; + case 1123601884: + var1++; + var6 = 324036968; + break; + case 1488525813: + default: + var1 = 0; + var6 = 324036968; + break; + case 1872812349: + var4 = (aav)var5; + this.sidePreview.request(var4, var3.getName()); + return; + case 1874453625: + var3 = (aab)var2; + var5 = var3.getModule(); + if (var5 instanceof aav) { + var6 = 1872812349; + } else { + var6 = 1123601884; + } + } + } + } + + private int searchResultCount() { + int var1 = -1594874857; + + while (true) { + switch (var1) { + case -1594874857: + default: + if (!this.searchField.isEmpty()) { + var1 = -65521264; + } else { + var1 = 1710933713; + } + break; + case -1187356626: + if (this.selectedCategory != rl.APPEARANCE) { + var1 = 143370693; + } else { + var1 = 1710933713; + } + break; + case -892964921: + if (this.selectedCategory != rl.TICKETS) { + var1 = -192691887; + } else { + var1 = 1710933713; + } + break; + case -192691887: + if (this.selectedCategory == rl.FRIENDS) { + var1 = 1710933713; + } else { + var1 = 259114645; + } + break; + case -65521264: + if (this.selectedCategory != rl.COSMETICS) { + var1 = -1187356626; + } else { + var1 = 1710933713; + } + break; + case 143370693: + if (this.selectedCategory != rl.WAYPOINTS) { + var1 = -892964921; + } else { + var1 = 1710933713; + } + break; + case 259114645: + return this.cachedVisibleModules.size(); + case 1710933713: + return -1; + } + } + } + + private void renderModules(asq var1, float var2, float var3, float var4, float var5, float var6, float var7) { + this.refreshVisibleModules(); + List var8 = this.cachedVisibleModules; + int var9 = this.columns; + float var10 = this.layout.getColumnGap(); + float var11 = this.layout.moduleWidth(var9); + ge var12 = asp.font(oe.HEADING); + double[] var13 = new double[var9]; + float[] var14 = new float[var9]; + + for (int var15 = 0; var15 < var9; var15++) { + var14[var15] = -99999.0F; + } + + float[] var31 = new float[var9]; + int[] var16 = new int[var8.size()]; + + for (int var17 = 0; var17 < var8.size(); var17++) { + zu var18 = (zu)var8.get(var17); + int var19 = 0; + + for (int var20 = 1; var20 < var9; var20++) { + if (var13[var20] < var13[var19]) { + var19 = var20; + } + } + + var16[var17] = var19; + float var39 = var11 * asa.cardAmount(var11) * var18.getToyHover(); + if (var39 > var31[var19]) { + var31[var19] = var39; + } + + var13[var19] += var18.getHeight() + var10; + } + + float[] var32 = new float[var9]; + + for (int var33 = 0; var33 < var9; var33++) { + for (int var36 = 0; var36 < var9; var36++) { + if (var33 != var36) { + if (var36 < var33) { + var32[var33] += var31[var36] / 2.0F; + } else { + var32[var33] -= var31[var36] / 2.0F; + } + } + } + } + + for (int var34 = 0; var34 < var9; var34++) { + var13[var34] = 0.0; + } + + float[] var35 = new float[var9]; + + for (int var37 = 0; var37 < var8.size(); var37++) { + zu var40 = (zu)var8.get(var37); + int var21 = var16[var37]; + float var22 = var40.getHeight() * asa.cardAmount(var11) * var40.getToyHover(); + float var23 = var5 + var21 * (var11 + var10) + var32[var21]; + float var24 = (float)(var7 + var13[var21] - this.scrollHandler.getValue()) + var22 / 2.0F; + var40.settledLayoutY = (float)(var7 + var35[var21] - this.scrollHandler.getValue()); + var35[var21] += var40.getHeight() + var10; + float var25 = this.getContentStartY(); + float var26 = var25 + this.getContentVisibleHeight(); + float var27 = -99999.0F; + float var28 = Float.MAX_VALUE; + float var29 = Float.MAX_VALUE; + var40.updatePhysics(var23, var24, var27, var28, var14[var21], var29, var11); + if (this.categoryJustChanged) { + float var30 = 1.0F + Math.min(var37, (-695204962 | 695204968) + (-695204962 & 695204968)) * 0.12F; + var40.resetPhysics(var40.currentX, var24 + this.categoryChangeOffset * var30); + } + + var14[var21] = var40.currentY + var40.getHeight() + var22 / 2.0F; + if (var40.getHoverValue() <= 0.001F) { + var40.render(var1, var2, var3, var12, var40.currentX, var40.currentY, var11, var4, var21, var25 - 10.0F, var26 + 7.0F); + } + + var13[var21] += var40.getHeight() + var22 + var10; + } + + if (this.categoryJustChanged) { + this.categoryJustChanged = (boolean)(((0)) != 0); + } + + this.scrollHandler.update(); + double var38 = Arrays.stream(var13).max().orElse(0.0); + float var41 = this.getContentVisibleHeight(); + this.scrollHandler + .setMax( + Math.max(0.0, var38 - var41) + + (var38 > var41 ? 4: (359978227 | -359978227) + (359978227 & -359978227)) + ); + } + + private void renderModulesHover( + asq var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9, float var10, float var11, float var12 + ) { + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + ge var18 = null; + float var19 = 0.0F; + float var20 = 0.0F; + Iterator var21 = null; + zu var22 = null; + float var23 = 0.0F; + float var24 = 0.0F; + float var25 = 0.0F; + int var26 = -276648001; + + while (true) { + switch (var26) { + case -1257758453: + return; + case -823821700: + if (var21.hasNext()) { + var26 = 74966340; + } else { + var26 = 1498457840; + } + break; + case -276648001: + default: + if (this.cachedVisibleModules == null) { + var26 = -1257758453; + } else { + var26 = 684017465; + } + break; + case 74966340: + var22 = (zu)var21.next(); + if (var22.getHoverValue() <= 0.001F) { + var26 = 1272383308; + } else { + var26 = 777563913; + } + break; + case 684017465: + var13 = (float)Mth.clamp(this.scrollHandler.getValue(), 0.0, this.scrollHandler.getMax()); + var14 = (float)this.scrollHandler.getMax() - var13; + var15 = 30.0F * Math.min(1.0F, var13 / 60.0F); + var16 = 30.0F * Math.min(1.0F, var14 / 60.0F); + var17 = this.layout.moduleWidth(this.columns); + var18 = asp.font(oe.HEADING); + var19 = this.getContentStartY(); + var20 = var19 + this.getContentVisibleHeight(); + var21 = this.cachedVisibleModules.iterator(); + var26 = -823821700; + break; + case 777563913: + var23 = var22.getHoverValue(); + var1.clipScroll( + this.scaledScissorX + var8 * var23, + this.scaledScissorY + var10 * var23, + this.scaledScissorEndX - var9 * var23, + this.scaledScissorEndY + var11 * var23, + var15, + var16 + ); + gt.beginBatch(); + var24 = 10.0F + var10 * var23; + var25 = 7.0F + var11 * var23; + var22.render( + var1, + var2, + var3, + var18, + var22.currentX, + var22.currentY, + var17, + var4, + 0, + var19 - var24, + var20 + var25 + ); + gt.endBatch(); + var1.popClip(); + var26 = -823821700; + break; + case 1272383308: + var26 = -823821700; + break; + case 1498457840: + return; + } + } + } + + private void renderFooter(asq var1, float var2, mv var3, float var4, float var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + oq var10 = null; + ge var11 = null; + ge var12 = null; + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + asu var16 = null; + asu var17 = null; + asu var18 = null; + float var19 = 0.0F; + String var20 = null; + float var21 = 0.0F; + int var22 = 0; + String var23 = null; + float var24 = 0.0F; + float var25 = 0.0F; + String var26 = null; + float var27 = 0.0F; + int var28 = -987318417; + + while (true) { + switch (var28) { + case -1725571751: + var10 = oq.current(); + ast.divider(var1, var7, var6 - this.layout.getFooterGap() * 0.5F, var8, var2); + var11 = asp.font(oe.CAPTION); + var12 = asp.font(oe.MICRO); + var13 = var6 + (var9 - var11.height()) * 0.5F; + var14 = var6 + (var9 - var12.height()) * 0.5F; + var15 = pk.space(od.SM); + var16 = var10.color(nx.ON_SURFACE_MUTED).mulAlpha(var2); + var17 = var10.color(nx.ON_SURFACE_FAINT).mulAlpha(var2); + var18 = var10.color(nx.ACCENT).mulAlpha(var2); + gt.beginBatch(); + var19 = var7; + var1.drawSurface(aso.ACCENT, var19, var6 + (var9 - 3.5F) * 0.5F, 3.5F, 3.5F, RADIUS_FOOTER_DOT, var18); + var19 += 3.5F + var15; + var20 = var3.getName(); + var1.drawText(var11, var20, var19, var13, var16); + var21 = var19 + var11.width(var20); + var19 = var21 + var15; + var1.drawRect(var19, var6 + (var9 - 7.0F) * 0.5F, mx.current().borderThickness(), 7.0F, var17); + var19 += var15 * 2.0F; + var22 = this.countActiveModules(); + var23 = String.valueOf(var22); + var24 = var19; + var1.drawText(var11, var23, var19, var13, var18); + var19 += var11.width(var23); + var1.drawText(var11, " active", var19, var13, var16); + var25 = var19 + var11.width(" active"); + var26 = "Evolution 2.0 DEV"; + asp.drawRight(var1, oe.MICRO, var26, var7 + var8, var14, var17); + var27 = var12.width(var26); + gt.endBatch(); + this.requestFooterTooltip( + 0, var7, var6, var21 - var7, var9, var4, var5, this.footerThemeTooltip(var20) + ); + this.requestFooterTooltip( + 1, var24, var6, var25 - var24, var9, var4, var5, this.footerActiveTooltip(var22) + ); + this.requestFooterTooltip( + 2, + var7 + var8 - var27, + var6, + var27, + var9, + var4, + var5, + "Client name, version and build channel" + ); + return; + case -987318417: + default: + var6 = this.layout.getFooterY(); + var7 = this.layout.getFooterX(); + var8 = this.layout.getFooterWidth(); + var9 = this.layout.getFooterHeight(); + if (!(var8 <= 0.0F)) { + var28 = 1818341832; + } else { + var28 = 874295652; + } + break; + case 874295652: + return; + case 1818341832: + if (var9 <= 0.0F) { + var28 = 874295652; + } else { + var28 = -1725571751; + } + } + } + } + + private void requestFooterTooltip(int var1, float var2, float var3, float var4, float var5, float var6, float var7, String var8) { + int var9 = var4 > 0.0F && aqj.isHovered(var6, var7, var2, var3, var4, var5) + ? 1: 0; + if (!(this.footerHover[var1].update(var9 != 0 ? 1.0F : 0.0F) <= 0.5F)) { + ass.tooltip(var8, var8, var2, var3, var4, var5, asr.ABOVE); + } + } + + private String footerThemeTooltip(String var1) { + int var2 = 456047503; + + while (true) { + switch (var2) { + case -222985738: + this.cachedFooterThemeName = var1; + this.cachedFooterThemeTooltip = "Active theme: " + var1; + var2 = 1631977176; + break; + case 456047503: + default: + if (!var1.equals(this.cachedFooterThemeName)) { + var2 = -222985738; + } else { + var2 = 1631977176; + } + break; + case 1631977176: + return this.cachedFooterThemeTooltip; + } + } + } + + private String footerActiveTooltip(int var1) { + int var2 = 1299732955; + + while (true) { + switch (var2) { + case 111871363: + this.cachedFooterActive = var1; + this.cachedFooterActiveTooltip = var1 + " modules enabled across every category"; + var2 = 1280779446; + break; + case 1280779446: + return this.cachedFooterActiveTooltip; + case 1299732955: + default: + if (var1 != this.cachedFooterActive) { + var2 = 111871363; + } else { + var2 = 1280779446; + } + } + } + } + + private int countActiveModules() { + List var1 = null; + int var2 = 0; + int var3 = 0; + int var4 = -830439191; + + while (true) { + switch (var4) { + case -1256657028: + return var2; + case -1024389342: + var3++; + var4 = 819905581; + break; + case -830439191: + default: + var1 = bz.getInstance().getModuleManager().getModules(); + var2 = 0; + var3 = 0; + var4 = 819905581; + break; + case -657524428: + var2++; + var4 = -1024389342; + break; + case 819905581: + if (var3 < var1.size()) { + var4 = 1052120780; + } else { + var4 = -1256657028; + } + break; + case 1052120780: + if (((rm)var1.get(var3)).isEnabled()) { + var4 = -657524428; + } else { + var4 = -1024389342; + } + } + } + } + + private void renderEmptyState(asq var1, float var2, float var3, float var4, float var5, float var6, mv var7) { + int var8 = !this.searchField.isEmpty() + ? 1: 0; + arw.draw( + var1, + var7, + this.realSelectedCategory.getIcon(), + var8 != 0 + ? "Nothing found" + : "Nothing here yet", + var8 != 0 + ? "Try another module name" + : "This category has no modules", + var2, + var3, + var4, + var5, + var6 + ); + } + + private float getContentStartY() { + return this.layout.getContentY(); + } + + private float getContentVisibleHeight() { + return this.layout.getContentHeight(); + } + + private float menuScale() { + return Math.min(xm.userScale(), this.maxMenuScale()); + } + + private float inputScale() { + float var2 = 0.0F; + int var1 = 827865769; + + while (true) { + switch (var1) { + case 162734226: + var2 = this.menuScale(); + var1 = 1543853150; + break; + case 827865769: + default: + if (this.inputScaleFrozen) { + var1 = 959907926; + } else { + var1 = 162734226; + } + break; + case 959907926: + var2 = this.frozenInputScale; + var1 = 1543853150; + break; + case 1543853150: + return var2; + } + } + } + + private void releaseStaleInputScale() { + long var1 = (-5291000527963736288L | 5291000527963736288L) + (-5291000527963736288L & 5291000527963736288L); + int var3 = 176115074; + + while (true) { + switch (var3) { + case -1709126825: + var1 = mc.getWindow().handle(); + if (GLFW.glfwGetMouseButton(var1, (887336536 ^ -887336536) + ((887336536 & -887336536) << 1)) == 0) { + var3 = -1183950456; + } else { + var3 = 571273653; + } + break; + case -1413006901: + this.inputScaleFrozen = (boolean)(((0)) != 0); + var3 = 571273653; + break; + case -1183950456: + if (GLFW.glfwGetMouseButton(var1, (1317988486 ^ -1317988485) + ((1317988486 & -1317988485) << 1)) == 0) { + var3 = -1413006901; + } else { + var3 = 571273653; + } + break; + case -417508645: + if (!this.dragging) { + var3 = -214217379; + } else { + var3 = -234537827; + } + break; + case -234537827: + return; + case -214217379: + if (!this.scrollBar.isDragging()) { + var3 = 818553787; + } else { + var3 = -234537827; + } + break; + case 176115074: + default: + if (this.inputScaleFrozen) { + var3 = -417508645; + } else { + var3 = -234537827; + } + break; + case 571273653: + return; + case 818553787: + if (this.resizing) { + var3 = -234537827; + } else { + var3 = -1709126825; + } + } + } + } + + private double toLocalX(double var1) { + return this.toLocalX(var1, this.inputScale()); + } + + private double toLocalY(double var1) { + return this.toLocalY(var1, this.inputScale()); + } + + private double toLocalX(double var1, float var3) { + float var4 = this.width / 2.0F; + return var4 + (var1 - var4) / var3; + } + + private double toLocalY(double var1, float var3) { + float var4 = this.height / 2.0F; + return var4 + (var1 - var4) / var3; + } + + private float toScreenX(double var1) { + float var3 = this.width / 2.0F; + return var3 + ((float)var1 - var3) * this.inputScale(); + } + + private float toScreenY(double var1) { + float var3 = this.height / 2.0F; + return var3 + ((float)var1 - var3) * this.inputScale(); + } + + private void clampTargetBox(float var1) { + float var2 = 0.0F; + float var3 = 0.0F; + float var4 = 0.0F; + float var5 = 0.0F; + int var6 = 1435846243; + + while (true) { + switch (var6) { + case -1980728250: + this.targetBoxX = var2; + var6 = 941950198; + break; + case -1458118585: + this.targetBoxY = var5 - this.boxHeight; + var6 = 693753053; + break; + case -1424618383: + this.targetBoxY = var3; + var6 = -1388356155; + break; + case -1388356155: + if (this.targetBoxX + this.boxWidth > var4) { + var6 = -1190736931; + } else { + var6 = 1255794605; + } + break; + case -1190736931: + this.targetBoxX = var4 - this.boxWidth; + var6 = 1255794605; + break; + case 693753053: + return; + case 941950198: + if (this.targetBoxY < var3) { + var6 = -1424618383; + } else { + var6 = -1388356155; + } + break; + case 1255794605: + if (this.targetBoxY + this.boxHeight > var5) { + var6 = -1458118585; + } else { + var6 = 693753053; + } + break; + case 1435846243: + default: + var2 = (float)this.toLocalX(0.0, var1); + var3 = (float)this.toLocalY(0.0, var1); + var4 = (float)this.toLocalX(this.width, var1); + var5 = (float)this.toLocalY(this.height, var1); + if (this.targetBoxX < var2) { + var6 = -1980728250; + } else { + var6 = 941950198; + } + } + } + } + + private float minMenuScale() { + return xm.minUserScale(); + } + + private float maxMenuScale() { + float var1 = 0.0F; + int var2 = 1923905162; + + while (true) { + switch (var2) { + case -1521050962: + var1 = Math.min(var1, this.height / this.boxHeight); + var2 = 1745994133; + break; + case -1423188159: + if (this.boxHeight > 0.0F) { + var2 = -1521050962; + } else { + var2 = 1745994133; + } + break; + case -621618821: + var1 = Math.min(var1, this.width / this.boxWidth); + var2 = -1423188159; + break; + case 1745994133: + return Math.max(this.minMenuScale(), var1); + case 1923905162: + default: + var1 = xm.maxUserScale(); + if (this.boxWidth > 0.0F) { + var2 = -621618821; + } else { + var2 = -1423188159; + } + } + } + } + + private float resizeGripInset() { + return asj.of(oc.WINDOW) * 0.2929F; + } + + private float resizeGripSpan() { + return this.resizeGripInset() + 2.4F + 1.8F + 2.2F; + } + + private float headerRightReserve() { + return Math.max(0.0F, this.resizeGripSpan() - this.layout.getOuterPad()); + } + + private boolean isOverResizeGrip(double var1, double var3) { + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + int var9 = 0; + int var8 = -1167581531; + + while (true) { + switch (var8) { + case -1899152917: + return (boolean)((var9) != 0); + case -1892803811: + if (var1 <= var5 + 5.0F) { + var8 = -139550913; + } else { + var8 = 1599097780; + } + break; + case -1272574022: + var9 = 1; + var8 = -1899152917; + break; + case -1167581531: + default: + var5 = this.boxX + this.boxWidth; + var6 = this.boxY; + var7 = this.resizeGripSpan() + 5.0F; + if (var1 >= var5 - var7) { + var8 = -1892803811; + } else { + var8 = 1599097780; + } + break; + case -139550913: + if (var3 >= var6 - 5.0F) { + var8 = 1994521727; + } else { + var8 = 1599097780; + } + break; + case 1599097780: + var9 = 0; + var8 = -1899152917; + break; + case 1994521727: + if (var3 <= var6 + var7) { + var8 = -1272574022; + } else { + var8 = 1599097780; + } + } + } + } + + private void beginResize(double var1, double var3) { + this.resizing = (boolean)(((1)) != 0); + this.resizeAnchorScreenX = this.toScreenX(this.boxX); + this.resizeAnchorScreenY = this.toScreenY(this.boxY + this.boxHeight); + this.resizeGrabOffsetX = this.toScreenX(this.boxX + this.boxWidth) - this.toScreenX(var1); + this.resizeGrabOffsetY = this.toScreenY(this.boxY) - this.toScreenY(var3); + this.lastResizeSoundTime = (-1334250527852039034L | 1334250527852039034L) + (-1334250527852039034L & 1334250527852039034L); + } + + private void applyResize(double var1, double var3) { + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + long var9 = (8978125682473654777L ^ -8978125682473654777L) + ((8978125682473654777L & -8978125682473654777L) << 1); + int var11 = -1013387881; + + while (true) { + switch (var11) { + case -1585042044: + if (this.boxHeight <= 0.0F) { + var11 = -558240999; + } else { + var11 = 1647318526; + } + break; + case -1013387881: + default: + if (!(this.boxWidth <= 0.0F)) { + var11 = -1585042044; + } else { + var11 = -558240999; + } + break; + case -989052224: + bz.getInstance().getSoundManager().playResize(var8); + var11 = 1094741555; + break; + case -965524240: + this.lastResizeSoundTime = var9; + if (bz.getInstance().getSoundManager() != null) { + var11 = -989052224; + } else { + var11 = 1094741555; + } + break; + case -558240999: + return; + case 1094741555: + return; + case 1647318526: + var5 = this.toScreenX(var1) + this.resizeGrabOffsetX - this.resizeAnchorScreenX; + var6 = this.resizeAnchorScreenY - (this.toScreenY(var3) + this.resizeGrabOffsetY); + var7 = this.boxWidth * this.boxWidth + this.boxHeight * this.boxHeight; + var8 = Mth.clamp((var5 * this.boxWidth + var6 * this.boxHeight) / var7, this.minMenuScale(), this.maxMenuScale()); + xm.applyUserScale(var8); + this.targetBoxX = (float)this.toLocalX(this.resizeAnchorScreenX, var8); + this.targetBoxY = (float)this.toLocalY(this.resizeAnchorScreenY, var8) - this.boxHeight; + this.clampTargetBox(var8); + this.boxXAnim.jumpTo(this.targetBoxX); + this.boxYAnim.jumpTo(this.targetBoxY); + var9 = System.currentTimeMillis(); + if (var9 - this.lastResizeSoundTime >= (5493285411734935822L | -5493285411734935702L) + (5493285411734935822L & -5493285411734935702L)) { + var11 = -965524240; + } else { + var11 = 1094741555; + } + } + } + } + + private void endResize() { + int var1 = -154647529; + + while (true) { + switch (var1) { + case -1655218010: + return; + case -1234723215: + bz.getInstance().getSoundManager().stopDragAndResize(); + var1 = -454441432; + break; + case -454441432: + return; + case -363336422: + this.resizing = (boolean)(((0)) != 0); + if (bz.getInstance().getSoundManager() != null) { + var1 = -1234723215; + } else { + var1 = -454441432; + } + break; + case -154647529: + default: + if (!this.resizing) { + var1 = -1655218010; + } else { + var1 = -363336422; + } + } + } + } + + private void renderResizeGrip(asq var1, float var2, float var3, float var4) { + int var5 = !this.resizing && (this.dragging || this.scrollBar.isDragging() || this.closing || !this.isOverResizeGrip(var3, var4)) + ? 0: 1; + float var6 = this.resizeGripAnim.update(var5 != 0 ? 1.0F : 0.0F); + float var7 = this.resizeGrabAnim.update(this.resizing ? 1.0F : 0.0F); + float var8 = var2 * var6; + if (!(var8 <= 0.01F)) { + oq var9 = oq.current(); + asu var10 = var9.color(nx.ACCENT); + float var11 = this.resizeGripInset(); + float var12 = this.boxX + this.boxWidth - var11; + float var13 = this.boxY + var11; + float var14 = (2.4F + 1.8F * var7) * var6; + float var15 = var8 * (0.35F + 0.35F * var7); + if (var7 > 0.0F) { + float var16 = 0.5F + 0.5F * (float)Math.sin(cs.elapsedMillis() / 320.0); + var15 *= 1.0F - 0.3F * var7 * (1.0F - var16); + } + + drawGripDot(var1, var12, var13, var14 + 2.2F, var10.mulAlpha(var15)); + drawGripDot(var1, var12, var13, var14 + 1.0F, var10.mulAlpha(var8)); + drawGripDot(var1, var12, var13, var14, asu.WHITE.mulAlpha(var8)); + if (var5 != 0 && !this.resizing && var6 > 0.5F) { + float var17 = var14 + 2.2F; + ass.tooltip( + "Drag to resize the window", + "Drag to resize the window", + var12 - var17, + var13 - var17, + var17 * 2.0F, + var17 * 2.0F, + asr.BELOW + ); + } + } + } + + private static void drawGripDot(asq var0, float var1, float var2, float var3, asu var4) { + var0.drawRoundedRect(var1 - var3, var2 - var3, var3 * 2.0F, var3 * 2.0F, asj.uniform(var3), var4); + } + + public void addPopupMenuSetting(aax var1) { + this.popupSettings.add(var1); + } + + public void removePopupMenuSetting(aax var1) { + this.popupSettings.remove(var1); + } + + @Override + public void render(asq var1, float var2, float var3) { + this.renderTop(var1, var2, var3); + } + + public xv getLayout() { + return this.layout; + } + + public int getColumns() { + return this.columns; + } + + public void setColumns(int var1) { + this.columns = var1; + } + + public arl getScrollHandler() { + return this.scrollHandler; + } + + public zx getPointerIntent() { + return this.pointerIntent; + } + + public boolean isClosing() { + return this.closing; + } + + public void setClosing(boolean var1) { + this.closing = var1; + } + + public aak getHeaderPanel() { + return this.headerPanel; + } + + public yk getAppearancePanel() { + return this.appearancePanel; + } + + public aay getHoveredSetting() { + return this.hoveredSetting; + } + + public long getLastManualScrollTime() { + return this.lastManualScrollTime; + } +} diff --git a/src/main/java/defpackage/yd.java b/src/main/java/defpackage/yd.java new file mode 100644 index 0000000..cf27e0d --- /dev/null +++ b/src/main/java/defpackage/yd.java @@ -0,0 +1,311 @@ +package defpackage; + +import com.mojang.blaze3d.textures.GpuTextureView; +import net.minecraft.client.gui.screens.Screen; + +public final class yd { + private static final ob ROLE = ob.DELIBERATE; + private static final de EASING = de.generate(0.32, 0.72, 0.0, 1.0); + private static final float DURATION_SCALE = 1.8F; + private static final float MIN_DURATION_MS = 32.0F; + private static final float CENTER = 0.5F; + private static final float START = 0.0F; + private static final float END = 1.0F; + private static final cu SWEEP = new cu(ROLE.baseMillis(), EASING, 1.0F); + private static mv pending; + private static float pendingOriginX = Float.NaN; + private static float pendingOriginY = Float.NaN; + private static GpuTextureView snapshot; + private static ask snapshotUv; + private static ask snapshotRect; + private static arq snapshotRadius; + private static float originX = 0.5F; + private static float originY = 0.5F; + private static boolean running; + + private yd() { + } + + public static void from(ask var0) { + int var1 = -938846484; + + while (true) { + switch (var1) { + case -938846484: + default: + if (var0 == null) { + var1 = 1374446941; + } else { + var1 = 1760056121; + } + break; + case 1374446941: + return; + case 1760056121: + pendingOriginX = var0.x() + var0.width() / 2.0F; + pendingOriginY = var0.y() + var0.height() / 2.0F; + return; + } + } + } + + public static void from(asi var0) { + int var1 = 199694860; + + while (true) { + switch (var1) { + case -1377375803: + if (!var0.isValid()) { + var1 = -383061179; + } else { + var1 = 493069597; + } + break; + case -383061179: + return; + case 199694860: + default: + if (var0 != null) { + var1 = -1377375803; + } else { + var1 = -383061179; + } + break; + case 493069597: + pendingOriginX = var0.x() + var0.width() / 2.0F; + pendingOriginY = var0.y() + var0.height() / 2.0F; + return; + } + } + } + + public static boolean defer(mv var0) { + yc var1 = null; + Screen var2 = null; + int var3 = 37425430; + + while (true) { + switch (var3) { + case -1481168071: + return (boolean)(((0)) != 0); + case -1034768651: + var1 = (yc)var2; + if (var1.isClosing()) { + var3 = 128767784; + } else { + var3 = 970510972; + } + break; + case 37425430: + default: + if (var0 != null) { + var3 = 870567297; + } else { + var3 = -1481168071; + } + break; + case 128767784: + return (boolean)(((0)) != 0); + case 787133231: + var2 = aqg.mc.gui.screen(); + if (var2 instanceof yc) { + var3 = -1034768651; + } else { + var3 = 128767784; + } + break; + case 870567297: + if (atb.themeWipeProgram != null) { + var3 = 1750739021; + } else { + var3 = -1481168071; + } + break; + case 970510972: + pending = var0; + return (boolean)(((1)) != 0); + case 1750739021: + if (duration() < 32.0F) { + var3 = -1481168071; + } else { + var3 = 787133231; + } + } + } + } + + public static void render(asq var0, float var1, float var2, float var3, float var4, arq var5, float var6) { + float var7 = 0.0F; + int var8 = -91533397; + + while (true) { + switch (var8) { + case -1989199555: + return; + case -1601847732: + var7 = SWEEP.update(1.0F); + if (SWEEP.isDone()) { + var8 = 881769513; + } else { + var8 = -943257634; + } + break; + case -943257634: + atb.drawScreenWipe( + var0.pose(), + snapshot, + snapshotRect.x(), + snapshotRect.y(), + snapshotRect.width(), + snapshotRect.height(), + snapshotRadius, + snapshotUv, + var7, + originX, + originY, + var6 + ); + var8 = 108997338; + break; + case -91533397: + default: + if (running) { + var8 = -1601847732; + } else { + var8 = 108997338; + } + break; + case 108997338: + if (pending != null) { + var8 = 2079758727; + } else { + var8 = -1989199555; + } + break; + case 881769513: + release(); + var8 = 108997338; + break; + case 2079758727: + capture(var0, var1, var2, var3, var4, var5); + var8 = -1989199555; + } + } + } + + public static void abort() { + mv var0 = null; + int var1 = -772159755; + + while (true) { + switch (var1) { + case -772159755: + default: + var0 = pending; + pending = null; + release(); + if (var0 != null) { + var1 = 1616629392; + } else { + var1 = 656264777; + } + break; + case 656264777: + return; + case 1616629392: + bz.getInstance().getThemeManager().commitTheme(var0); + var1 = 656264777; + } + } + } + + private static void capture(asq var0, float var1, float var2, float var3, float var4, arq var5) { + mv var6 = null; + my var7 = null; + GpuTextureView var8 = null; + float var10 = 0.0F; + float var11 = 0.0F; + int var9 = 2121326758; + + while (true) { + switch (var9) { + case -2062462967: + originY = var11; + resetOrigin(); + SWEEP.retime(duration(), EASING); + SWEEP.jumpTo(0.0F); + running = (boolean)(((1)) != 0); + var7.commitTheme(var6); + return; + case -1711537947: + originX = var10; + if (Float.isNaN(pendingOriginY)) { + var9 = -1040187612; + } else { + var9 = 827827952; + } + break; + case -1040187612: + var11 = 0.5F; + var9 = -2062462967; + break; + case -780906729: + var10 = 0.5F; + var9 = -1711537947; + break; + case 827827952: + var11 = (pendingOriginY - var2) / var4; + var9 = -2062462967; + break; + case 1185907844: + var10 = (pendingOriginX - var1) / var3; + var9 = -1711537947; + break; + case 1524822257: + resetOrigin(); + var7.commitTheme(var6); + return; + case 1541342266: + snapshot = var8; + snapshotUv = atb.screenUvRect(var0.pose(), var1, var2, var3, var4); + snapshotRect = new ask(var1, var2, var3, var4); + snapshotRadius = var5; + if (Float.isNaN(pendingOriginX)) { + var9 = -780906729; + } else { + var9 = 1185907844; + } + break; + case 2121326758: + default: + var6 = pending; + pending = null; + var7 = bz.getInstance().getThemeManager(); + var8 = atb.captureScreenSnapshot(); + if (var8 == null) { + var9 = 1524822257; + } else { + var9 = 1541342266; + } + } + } + } + + private static void release() { + running = (boolean)(((0)) != 0); + snapshot = null; + snapshotUv = null; + snapshotRect = null; + snapshotRadius = null; + atb.releaseScreenSnapshot(); + } + + private static void resetOrigin() { + pendingOriginX = Float.NaN; + pendingOriginY = Float.NaN; + } + + private static float duration() { + return pk.motion(ROLE) * 1.8F; + } +} diff --git a/src/main/java/defpackage/ye.java b/src/main/java/defpackage/ye.java new file mode 100644 index 0000000..53d6747 --- /dev/null +++ b/src/main/java/defpackage/ye.java @@ -0,0 +1,1343 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.EnumMap; +import java.util.EnumSet; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; + +public final class ye { + private static final float CHIP_HEIGHT = 19.0F; + private static final float CHIP_GAP = 4.0F; + private static final float CHIP_PAD_X = 6.0F; + private static final float CHIP_ICON_GAP = 4.0F; + private static final float CHIP_ICON_SIZE = 6.0F; + private static final int CHIP_COLUMNS = 3; + private static final float CHIP_DOT = 3.0F; + private static final float CHIP_DOT_INSET = 3.5F; + private static final float SECTION_GAP = 9.0F; + private static final float ROW_GAP = 2.0F; + private static final float STATUS_HEIGHT = 15.0F; + private static final float STATUS_GAP = 6.0F; + private static final float STATUS_BUTTON_PAD = 6.0F; + private static final float STATUS_DOT = 3.0F; + private static final float BODY_INSET = 3.0F; + private static final float ADVANCED_HEIGHT = 17.0F; + private static final float ADVANCED_PAD = 6.0F; + private static final float MARKER_SIZE = 3.0F; + private static final float MARKER_HIT = 9.0F; + private static final float MARKER_INSET = 2.5F; + private static final float ICON_SIZE = 6.0F; + private static final float WHEEL_SIZE = 70.0F; + private static final float HERO_GAP = 7.0F; + private static final float SEARCH_HEADER_HEIGHT = 14.0F; + private static final float EMPTY_BLOCK_HEIGHT = 46.0F; + private static final float EMPTY_GLYPH_SIZE = 13.0F; + private static final float EMPTY_GAP = 5.0F; + private static final float HALF = 0.5F; + private static final float GLYPH_BLEED = 1.5F; + private static final float BODY_FADE = 14.0F; + private static final float BODY_FADE_RAMP = 6.0F; + private static final float BODY_FADE_BOTTOM = 7.0F; + private static final float PILL_GLOW_ALPHA = 0.35F; + private static final float PILL_GLOW_SPREAD = 1.0F; + private static final float SWITCH_SLIDE = 14.0F; + private static final float SWITCH_MIN_FADE = 0.02F; + private static final long DIRTY_SAMPLE_MILLIS = 150L; + private static final String EMPTY_SEARCH = "No token matches"; + private static final String EMPTY_HINT = "Try a shorter word, or clear the search"; + private static final String REVERT_TOOLTIP = "Changed from the theme default - click to revert"; + private static final String ADVANCED_LABEL = "Exact values"; + private static final String COUNT_OPEN = " ("; + private static final String COUNT_CLOSE = ")"; + private static final String SUMMARY_ONE = " value changed"; + private static final String SUMMARY_MANY = " values changed"; + private static final String SUMMARY_REVERT = "Revert"; + private static final String SUMMARY_TOOLTIP = "Restore every value of this group to its default"; + private static final String KEY_STATUS = "inspector.status"; + private static final String KEY_REVERT = "inspector.revert"; + private static final String CHIP_DIRTY_SUFFIX = " - edited"; + private final Map> byGroup = new EnumMap<>(or.class); + private final Set expanded = EnumSet.noneOf(or.class); + private final Map dirtyCounts = new EnumMap<>(or.class); + private final List visible = new ArrayList<>(); + private final ze motion = new ze(); + private final yu wheel = new yu(); + private final yt harmonyPicker = new yt(); + private final ys ramp = new ys(); + private final yr matrix = new yr(); + private final yx motionPreview = new yx(); + private final yy roles = new yy(var1 -> this.wheel.target(var1)); + private final zt tiles = new zt(); + private final ct pillX = ct.layout(ob.FAST, 0.0F); + private final ct pillY = ct.layout(ob.FAST, 0.0F); + private final ct switchFade = ct.layout(ob.FAST, 1.0F); + private or activeGroup = or.COLOUR; + private mv edited; + private boolean rowsRendered; + private boolean pillPlaced; + private float switchDirection = 1.0F; + private long dirtySampledAt; + private boolean scrollResetPending; + private float lastContentHeight; + private int summaryCount = -1; + private String summaryLabel = ""; + private int advancedCount = -1; + private String advancedText = ""; + + public void activeGroup(or var1) { + if (var1 != null && var1 != this.activeGroup) { + this.switchDirection = var1.ordinal() > this.activeGroup.ordinal() ? 1.0F : -1.0F; + this.activeGroup = var1; + this.switchFade.jumpTo(0.0F); + this.switchFade.animateTo(1.0F); + this.scrollResetPending = (boolean)(((1)) != 0); + } + } + + public boolean consumeScrollReset() { + boolean var1 = this.scrollResetPending; + this.scrollResetPending = (boolean)(((0)) != 0); + return var1; + } + + public float render( + asq var1, yw var2, float var3, float var4, float var5, float var6, float var7, float var8, mv var9, mv var10, float var11, float var12, String var13 + ) { + this.edited = var10; + this.ensureBindings(); + this.sampleDirtyCounts(var10); + float var14 = this.drawChips(var1, var2, var3, var4, var5, var8, var9, var11, var12); + float var15 = this.drawStatus(var1, var2, var3, var4 + var14, var5, var8, var9, var11, var12); + float var16 = var15 + 9.0F - 3.0F; + float var17 = var4 + var6; + boolean var18 = this.collectVisible(var13); + float var19 = var18 ? 1.0F : this.switchFade.update(); + float var20 = var18 ? 0.0F : (1.0F - var19) * 14.0F * this.switchDirection; + float var21 = var8 * Math.max(var19, 0.0F); + float var22 = var3 + var20; + float var23 = var16 + 3.0F - var7; + float var24 = this.lastContentHeight - var7 - (var17 - var4); + var1.clipScroll( + var3 - 1.5F, var16, var3 + var5, var17, 14.0F * Math.min(1.0F, Math.max(var7, 0.0F) / 6.0F), 7.0F * Math.min(1.0F, Math.max(var24, 0.0F) / 6.0F) + ); + var2.clip(var3, var16, var3 + var5, var17); + if (var19 > 0.02F) { + if (!var18) { + var23 = this.drawHero(var1, var2, var22, var23, var5, var21, var9, var11, var12); + var23 = this.drawTiles(var1, var2, var22, var23, var5, var21, var9, var11, var12); + var23 = this.drawAdvancedToggle(var1, var2, var22, var23, var5, var21, var9, var11, var12); + } + + this.rowsRendered = (boolean)(((!var18 && !this.expanded.contains(this.activeGroup) + ? 0: (2063768237 ^ -2063768236) + ((2063768237 & -2063768236) << 1))) != 0); + if (this.rowsRendered) { + var23 = this.drawRows(var1, var2, var22, var23, var5, var21, var9, var11, var12, var16, var17, var18); + } + } else { + this.rowsRendered = (boolean)(((0)) != 0); + } + + var1.popClip(); + var2.clipReset(); + this.motion.endFrame(); + this.lastContentHeight = var23 + var7 - var4; + return this.lastContentHeight; + } + + private float drawChips(asq var1, yw var2, float var3, float var4, float var5, float var6, mv var7, float var8, float var9) { + or[] var10 = or.values(); + ge var11 = asp.font(oe.MICRO); + ge var12 = gl.ICONS.getFont(6.0F); + int var13 = Math.min(3, var10.length); + float var14 = (var5 - 4.0F * (var13 - ((-646156197 | 646156198) + (-646156197 & 646156198)))) / var13; + int var15 = (var10.length + var13 - ((230800734 ^ -230800733) + ((230800734 & -230800733) << 1))) / var13; + + for (int var16 = 0; var16 < var10.length; var16++) { + or var17 = var10[var16]; + float var18 = var3 + var16 % var13 * (var14 + 4.0F); + float var19 = var4 + var16 / var13 * 23.0F; + boolean var20 = zb.hits(var8, var9, var18, var19, var14, 19.0F, this.motion.peekHover(var17), 4.0F); + float var21 = this.motion.hover(var17, var20); + float var22 = this.motion + .select( + var17, + ob.FAST, + (boolean)(((var17 == this.activeGroup + ? 1: (-2054599354 | 2054599354) + (-2054599354 & 2054599354)) + ) != 0)); + boolean var23 = zb.begin(var1, var18, var19, var14, 19.0F, var21, 4.0F); + zb.ghost(var1, var18, var19, var14, 19.0F, asj.all(oc.CONTROL), var7, var6 * (1.0F - var22), var21); + zb.end(var1, var23); + } + + int var31 = this.activeGroup.ordinal(); + float var32 = var31 % var13 * (var14 + 4.0F); + float var33 = var31 / var13 * 23.0F; + if (!this.pillPlaced) { + this.pillPlaced = (boolean)(((1)) != 0); + this.pillX.jumpTo(var32); + this.pillY.jumpTo(var33); + } + + float var34 = var3 + this.pillX.update(var32); + float var35 = var4 + this.pillY.update(var33); + float var36 = this.motion.peekHover(this.activeGroup); + boolean var37 = zb.begin(var1, var34, var35, var14, 19.0F, var36, 4.0F); + var1.drawRoundedRect(var34, var35, var14, 19.0F, asj.all(oc.CONTROL), var7.getColor().mulAlpha(var6)); + zb.primaryHighlight(var1, var34, var35, var14, 19.0F, asj.all(oc.CONTROL), var7.getWhite(), var6, var36); + var1.drawRoundedBorder(var34 - 1.0F, var35 - 1.0F, var14 + 2.0F, 21.0F, 1.0F, asj.outer(oc.CONTROL, 1.0F), var7.getColor().mulAlpha(var6 * 0.35F)); + zb.end(var1, var37); + + for (int var38 = 0; var38 < var10.length; var38++) { + or var24 = var10[var38]; + float var25 = var3 + var38 % var13 * (var14 + 4.0F); + float var26 = var4 + var38 / var13 * 23.0F; + float var27 = this.motion.peekHover(var24); + float var28 = this.motion + .select( + var24, + ob.FAST, + (boolean)(((var24 == this.activeGroup + ? 1: (-1604156993 ^ 1604156993) + ((-1604156993 & 1604156993) << 1)) + ) != 0)); + boolean var29 = zb.begin(var1, var25, var26, var14, 19.0F, var27, 4.0F); + asu var30 = asu.lerp(zb.lift(var7.getGrayLight(), var7, var27), var7.getForegroundDark(), var28).mulAlpha(var6); + zb.leading(var1, var11, var12, var24.icon(), var24.label(), var25 + 6.0F, var26, 19.0F, var14 - 12.0F, var30, var30, var27); + if (this.dirtyCountOf(var24) > 0) { + var1.drawRoundedRect( + var25 + var14 - 3.0F - 3.5F, var26 + 3.5F, 3.0F, 3.0F, asj.pill(3.0F), asu.lerp(var7.getColor(), var7.getForegroundDark(), var28).mulAlpha(var6) + ); + } + + zb.end(var1, var29); + if (var27 > 0.5F) { + ass.tooltip(var24, this.dirtyCountOf(var24) > 0 ? var24.description() + " - edited" : var24.description(), var25, var26, var14, 19.0F, asr.BELOW); + } + + var2.add(var25, var26, var14, 19.0F, () -> this.activeGroup(var24)); + } + + return var15 * 23.0F - 4.0F; + } + + private float drawStatus(asq var1, yw var2, float var3, float var4, float var5, float var6, mv var7, float var8, float var9) { + float var10 = var4 + 6.0F; + int var11 = this.dirtyCountOf(this.activeGroup); + float var12 = this.motion + .select( + "inspector.status", + ob.MEDIUM, + (boolean)(((var11 > 0 ? 1: (2013352741 ^ -2013352741) + ((2013352741 & -2013352741) << 1)) + ) != 0)); + ge var13 = asp.font(oe.MICRO); + ge var14 = gl.ICONS.getFont(5.0F); + float var15 = 12.0F + + zb.contentWidth( + var13, + var14, + "G", + "Revert" + ); + float var16 = var3 + var5 - var15; + float var17 = var5 - (var15 + 6.0F) * var12; + float var18 = var10 + (15.0F - var13.height()) * 0.5F; + float var19 = 1.0F - var12; + if (var19 > 0.001F) { + var1.drawScrollingText( + var13, + this.activeGroup.description(), + var3, + var18, + var17, + var7.getGray().mulAlpha(var6 * var19), + (boolean)((((-693818738 | 693818739) + (-693818738 & 693818739)) + ) != 0)); + } + + if (var12 > 0.001F) { + String var20 = this.summaryLabel(Math.max(var11, (-762847492 | 762847493) + (-762847492 & 762847493))); + var1.drawRoundedRect(var3, var10 + 6.0F, 3.0F, 3.0F, asj.pill(3.0F), var7.getColor().mulAlpha(var6 * var12)); + var1.drawScrollingText( + var13, + var20, + var3 + 3.0F + 4.0F, + var18, + var17 - 3.0F - 4.0F, + var7.getGrayLight().mulAlpha(var6 * var12), + (boolean)((((698928483 ^ -698928482) + ((698928483 & -698928482) << 1)) + ) != 0)); + int var21 = var11 > 0 + && zb.hits( + var8, + var9, + var16, + var10, + var15, + 15.0F, + this.motion.peekHover("inspector.revert"), + 6.0F + ) + ? 1: 0; + float var22 = this.motion + .hover("inspector.revert", (boolean)((var21) != 0)); + float var23 = var6 * var12; + boolean var24 = zb.begin(var1, var16, var10, var15, 15.0F, var22, 6.0F); + zb.ghost(var1, var16, var10, var15, 15.0F, asj.all(oc.CHIP), var7, var23, var22); + asu var25 = zb.lift(var7.getGrayLight(), var7, var22).mulAlpha(var23); + zb.content( + var1, + var13, + var14, + "G", + "Revert", + var16, + var10, + var15, + 15.0F, + var7.getColor().mulAlpha(var23), + var25, + var22 + ); + zb.end(var1, var24); + if (var22 > 0.5F) { + ass.tooltip( + "inspector.revert", + "Restore every value of this group to its default", + var16, + var10, + var15, + 15.0F, + asr.LEFT + ); + } + + if (var11 > 0) { + var2.add(var16, var10, var15, 15.0F, this::revertActiveGroup); + } + } + + return var10 + 15.0F; + } + + private String summaryLabel(int var1) { + if (var1 != this.summaryCount) { + this.summaryCount = var1; + this.summaryLabel = var1 + + ( + var1 == 1? " value changed" + : " values changed" + ); + } + + return this.summaryLabel; + } + + private float drawHero(asq var1, yw var2, float var3, float var4, float var5, float var6, mv var7, float var8, float var9) { + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = 1928027248; + + while (true) { + switch (var13) { + case -1855372862: + this.motionPreview.render(var1, var3, var4, var5, var6, var7, var8, var9, this.motion); + var2.add(var3, var4, var5, this.motionPreview.height(), (var1x, var3x) -> this.motionPreview.mouseClicked(var1x, var3x)); + return var4 + this.motionPreview.height() + 9.0F; + case 830165682: + return var4; + case 1246114016: + if (this.activeGroup == or.MOTION) { + var13 = -1855372862; + } else { + var13 = 830165682; + } + break; + case 1298803825: + var10 = this.wheel.width(70.0F); + var11 = var3 + (var5 - var10) * 0.5F; + this.wheel.render(var1, var11, var4, 70.0F, var6, this.edited, var8, var9); + var2.add(var11, var4, var10, this.wheel.height(70.0F), (var1x, var3x) -> this.wheel.mouseClicked(var1x, var3x, this.edited)); + var12 = var4 + this.wheel.height(70.0F) + 7.0F; + this.harmonyPicker.render(var1, var2, var3, var12, var5, var6, var7, this.edited, var8, var9, this.motion); + var12 += this.harmonyPicker.height() + 7.0F; + this.ramp.render(var1, var3, var12, var5, var6, this.edited, var8, var9); + var2.add(var3, var12, var5, this.ramp.height(), (var1x, var3x) -> this.ramp.mouseClicked(var1x, var3x, this.edited)); + var12 += this.ramp.height() + 7.0F; + this.roles.render(var1, var2, var3, var12, var5, var6, var7, this.edited, this.wheel.target(), var8, var9, this.motion); + var12 += this.roles.height(var5) + 7.0F; + this.matrix.render(var1, var2, var3, var12, var5, var6, var7, this.edited, var8, var9, this.motion); + return var12 + this.matrix.height() + 9.0F; + case 1928027248: + default: + if (this.activeGroup == or.COLOUR) { + var13 = 1298803825; + } else { + var13 = 1246114016; + } + } + } + } + + private float drawTiles(asq var1, yw var2, float var3, float var4, float var5, float var6, mv var7, float var8, float var9) { + List var10 = null; + int var11 = 1405182375; + + while (true) { + switch (var11) { + case -266299052: + this.tiles.render(var1, var2, var10, var3, var4, var5, var6, var7, this.edited, var8, var9, this.motion); + return var4 + this.tiles.height(var10, var5) + 9.0F; + case 168997764: + return var4; + case 1405182375: + } + + var10 = nj.rowsFor(this.activeGroup); + if (var10.isEmpty()) { + var11 = 168997764; + } else { + var11 = -266299052; + } + } + } + + private float drawAdvancedToggle(asq var1, yw var2, float var3, float var4, float var5, float var6, mv var7, float var8, float var9) { + List var10 = null; + int var11 = 0; + int var12 = 0; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = 0; + ge var16 = null; + ge var17 = null; + String var18 = null; + asu var19 = null; + String var21 = null; + int var20 = -1245060822; + + while (true) { + switch (var20) { + case -1245060822: + default: + var10 = this.advancedOf(this.activeGroup); + if (var10.isEmpty()) { + var20 = -355271684; + } else { + var20 = 350607689; + } + break; + case -355271684: + return var4; + case -111231628: + var18 = var21; + var19 = zb.lift(asu.lerp(var7.getGrayLight(), var7.getWhite(), var14), var7, var13).mulAlpha(var6); + zb.leading( + var1, + var17, + var16, + var18, + this.advancedLabel(var10.size()), + var3 + 6.0F, + var4, + 17.0F, + var5 - 12.0F, + var7.getColor().mulAlpha(var6), + var19, + var13 + ); + zb.end(var1, (boolean)((var15) != 0)); + var2.add(var3, var4, var5, 17.0F, () -> { + int var1x = 2143070282; + + while (true) { + switch (var1x) { + case 366076746: + this.expanded.add(this.activeGroup); + var1x = 509262066; + break; + case 509262066: + return; + case 2143070282: + default: + if (!this.expanded.remove(this.activeGroup)) { + var1x = 366076746; + } else { + var1x = 509262066; + } + } + } + }); + return var4 + 17.0F + 9.0F; + case 125834519: + var21 = "Q"; + var20 = -111231628; + break; + case 350607689: + boolean var22 = this.expanded.contains(this.activeGroup); + boolean var23 = zb.hits( + var8, + var9, + var3, + var4, + var5, + 17.0F, + this.motion.peekHover("Exact values"), + 9.0F + ); + var13 = this.motion.hover("Exact values", var23); + var14 = this.motion.select(this.activeGroup.label(), ob.FAST, var22); + var15 = (zb.begin(var1, var3, var4, var5, 17.0F, var13, 9.0F)) ? 1 : 0; + zb.ghost(var1, var3, var4, var5, 17.0F, asj.all(oc.CONTROL), var7, var6, var13); + var16 = gl.ICONS.getFont(5.0F); + var17 = asp.font(oe.MICRO); + if (var22) { + var20 = 2067226009; + } else { + var20 = 125834519; + } + break; + case 2067226009: + var21 = "R"; + var20 = -111231628; + } + } + } + + private String advancedLabel(int var1) { + int var2 = 1565661039; + + while (true) { + switch (var2) { + case -942845301: + return this.advancedText; + case -326521148: + this.advancedCount = var1; + this.advancedText = "Exact values (" + var1 + ")"; + var2 = -942845301; + break; + case 1565661039: + default: + if (var1 != this.advancedCount) { + var2 = -326521148; + } else { + var2 = -942845301; + } + } + } + } + + private float drawRows( + asq var1, yw var2, float var3, float var4, float var5, float var6, mv var7, float var8, float var9, float var10, float var11, boolean var12 + ) { + int var13 = 0; + int var14 = 0; + int var15 = 0; + float var16 = 0.0F; + or var17 = null; + Iterator var18 = null; + zr var19 = null; + float var20 = 0.0F; + int var21 = -1737221462; + + while (true) { + switch (var21) { + case -1737221462: + default: + var13 = var7.getColor().getRGBWithAlpha(var6); + var14 = var7.getWhite().getRGBWithAlpha(var6); + var15 = var7.getGrayLight().getRGBWithAlpha(var6); + var16 = var4; + if (this.visible.isEmpty()) { + var21 = 217702782; + } else { + var21 = -1552796317; + } + break; + case -1552796317: + var17 = null; + var18 = this.visible.iterator(); + var21 = -1340695337; + break; + case -1340695337: + if (var18.hasNext()) { + var21 = 1326604702; + } else { + var21 = 71660809; + } + break; + case -1219770587: + if (var16 <= var11) { + var21 = 2113090641; + } else { + var21 = -787183027; + } + break; + case -910572391: + var16 += var20 + 2.0F; + var21 = -1340695337; + break; + case -885767020: + var19.sync(); + var20 = var19.height(); + if (var16 + var20 >= var10 - var20) { + var21 = 1467038544; + } else { + var21 = -910572391; + } + break; + case -787183027: + var16 += 14.0F; + var21 = -885767020; + break; + case -286266820: + if (var19.token().group() != var17) { + var21 = 920973861; + } else { + var21 = -885767020; + } + break; + case -83772824: + var19.setting().render(var1, var8, var9, var3, var16, var5, var6, 1.0F, var13, var14, var15, var7); + var2.add(var3, var16, var5, var20, (var1x, var3x) -> { + var19.setting().onMouseClicked(var1x, var3x, apf.LEFT); + return (boolean)(((1)) != 0); + }); + this.drawMarker(var1, var2, var19, var3, var16, var20, var6, var7, var8, var9); + var21 = -910572391; + break; + case 71660809: + return var16; + case 217702782: + return this.drawEmptyState(var1, var3, var16, var5, var6, var7); + case 920973861: + var17 = var19.token().group(); + if (var16 + 14.0F >= var10) { + var21 = -1219770587; + } else { + var21 = -787183027; + } + break; + case 1326604702: + var19 = (zr)var18.next(); + if (var12) { + var21 = -286266820; + } else { + var21 = -885767020; + } + break; + case 1467038544: + if (var16 <= var11) { + var21 = -83772824; + } else { + var21 = -910572391; + } + break; + case 2113090641: + this.drawSearchHeader(var1, var17, var3, var16, var5, var6, var7); + var21 = -787183027; + } + } + } + + private void drawSearchHeader(asq var1, or var2, float var3, float var4, float var5, float var6, mv var7) { + ge var8 = asp.font(oe.MICRO); + ge var9 = gl.ICONS.getFont(5.5F); + float var10 = var4 + (14.0F - var8.height()) * 0.5F; + var1.drawText(var9, var2.icon(), var3, var4 + (14.0F - var9.height()) * 0.5F, var7.getColor().mulAlpha(var6)); + float var11 = var3 + var9.width(var2.icon()) + 4.0F; + var1.drawText(var8, var2.label(), var11, var10, var7.getGrayLight().mulAlpha(var6)); + float var12 = var11 + var8.width(var2.label()) + 4.0F; + var1.drawRect(var12, var4 + 7.0F, Math.max(var3 + var5 - var12, 0.0F), 1.0F, var7.getForegroundStroke().mulAlpha(var6)); + } + + private float drawEmptyState(asq var1, float var2, float var3, float var4, float var5, mv var6) { + ge var7 = gl.ICONS.getFont(13.0F); + ge var8 = asp.font(oe.CAPTION); + ge var9 = asp.font(oe.MICRO); + float var10 = var2 + var4 * 0.5F; + var1.drawText( + var7, + "V", + var10 - var7.width("V") * 0.5F, + var3, + var6.getForegroundLightStroke().mulAlpha(var5) + ); + float var11 = var3 + var7.height() + 5.0F; + var1.drawText( + var8, + "No token matches", + var10 - var8.width("No token matches") * 0.5F, + var11, + var6.getGrayLight().mulAlpha(var5) + ); + var1.drawScrollingText( + var9, + "Try a shorter word, or clear the search", + var2, + var11 + var8.height() + 2.5F, + var4, + var6.getGray().mulAlpha(var5), + (boolean)((((-148875124 ^ 148875125) + ((-148875124 & 148875125) << 1)) + ) != 0)); + return var3 + 46.0F; + } + + private void drawMarker(asq var1, yw var2, zr var3, float var4, float var5, float var6, float var7, mv var8, float var9, float var10) { + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = 0; + float var14 = 0.0F; + float var15 = 0.0F; + int var16 = -433159321; + + while (true) { + switch (var16) { + case -698698939: + var2.add(var12 - 4.5F, var11 - 4.5F, 9.0F, 9.0F, var3::revert); + return; + case -513443139: + ass.tooltip( + var3.token(), + "Changed from the theme default - click to revert", + var12, + var11 - 4.5F, + 9.0F, + 9.0F, + asr.RIGHT + ); + var16 = -698698939; + break; + case -433159321: + default: + if (!var3.isModified()) { + var16 = 634525171; + } else { + var16 = 703324584; + } + break; + case 634525171: + return; + case 703324584: + var11 = var5 + var6 * 0.5F; + var12 = var4 + 2.5F; + boolean var17 = aqj.isHovered(var9, var10, var12 - 4.5F, var11 - 4.5F, 9.0, 9.0); + var14 = this.motion.hover(var3, var17); + var15 = 3.0F * (1.0F + var14); + var1.drawRoundedRect(var12 - (var15 - 3.0F) * 0.5F, var11 - var15 * 0.5F, var15, var15, asj.pill(var15), var8.getColor().mulAlpha(var7)); + if (var14 > 0.5F) { + var16 = -513443139; + } else { + var16 = -698698939; + } + } + } + } + + private void revertActiveGroup() { + Iterator var1 = null; + zr var2 = null; + int var3 = -152867756; + + while (true) { + switch (var3) { + case -818124061: + var2.revert(); + var3 = -268079572; + break; + case -268079572: + var3 = 95560928; + break; + case -152867756: + default: + var1 = this.byGroup.getOrDefault(this.activeGroup, List.of()).iterator(); + var3 = 95560928; + break; + case 95560928: + if (var1.hasNext()) { + var3 = 956954505; + } else { + var3 = 1431343054; + } + break; + case 956954505: + var2 = (zr)var1.next(); + if (var2.isModified()) { + var3 = -818124061; + } else { + var3 = -268079572; + } + break; + case 1431343054: + this.dirtySampledAt = (5976337040788990387L | -5976337040788990387L) + (5976337040788990387L & -5976337040788990387L); + return; + } + } + } + + private int dirtyCountOf(or var1) { + Integer var2 = null; + int var4 = 0; + int var3 = -2050766730; + + while (true) { + switch (var3) { + case -2135428538: + return var4; + case -2050766730: + default: + var2 = this.dirtyCounts.get(var1); + if (var2 == null) { + var3 = 527689142; + } else { + var3 = 1888330943; + } + break; + case 527689142: + var4 = 0; + var3 = -2135428538; + break; + case 1888330943: + var4 = var2; + var3 = -2135428538; + } + } + } + + private void sampleDirtyCounts(mv var1) { + long var2 = (-552198443642440605L | 552198443642440605L) + (-552198443642440605L & 552198443642440605L); + or[] var4 = null; + int var5 = 0; + int var6 = 0; + Object var7 = null; + int var8 = 0; + Iterator var9 = null; + zr var10 = null; + int var11 = 361869832; + + while (true) { + switch (var11) { + case -2136405846: + return; + case -911563645: + if (var6 < var5) { + var11 = 483485253; + } else { + var11 = 1489932692; + } + break; + case -754235085: + this.dirtyCounts.put((or)var7, var8); + var6++; + var11 = -911563645; + break; + case 107970538: + var8++; + var11 = 1322916909; + break; + case 361869832: + default: + var2 = System.currentTimeMillis(); + if (var2 - this.dirtySampledAt < (-1285862677223511906L ^ 1285862677223512056L) + ((-1285862677223511906L & 1285862677223512056L) << 1)) { + var11 = -2136405846; + } else { + var11 = 1049641745; + } + break; + case 483485253: + var7 = var4[var6]; + var8 = 0; + var9 = this.byGroup.getOrDefault(var7, List.of()).iterator(); + var11 = 1916922714; + break; + case 1049641745: + this.dirtySampledAt = var2; + var4 = or.values(); + var5 = var4.length; + var6 = 0; + var11 = -911563645; + break; + case 1322916909: + var11 = 1916922714; + break; + case 1489932692: + return; + case 1822849920: + var10 = (zr)var9.next(); + if (var10.token().isModified(var1)) { + var11 = 107970538; + } else { + var11 = 1322916909; + } + break; + case 1916922714: + if (var9.hasNext()) { + var11 = 1822849920; + } else { + var11 = -754235085; + } + } + } + } + + private List advancedOf(or var1) { + ArrayList var2 = null; + Iterator var3 = null; + zr var4 = null; + int var5 = 790938840; + + while (true) { + switch (var5) { + case -1822378824: + return var2; + case -1041414353: + var4 = (zr)var3.next(); + if (!var4.token().isTileDriven()) { + var5 = 1040166096; + } else { + var5 = -924490323; + } + break; + case -924490323: + var5 = -383131033; + break; + case -383131033: + if (var3.hasNext()) { + var5 = -1041414353; + } else { + var5 = -1822378824; + } + break; + case 790938840: + default: + var2 = new ArrayList(); + var3 = this.byGroup.getOrDefault(var1, List.of()).iterator(); + var5 = -383131033; + break; + case 1040166096: + var2.add(var4); + var5 = -924490323; + } + } + } + + private boolean collectVisible(String var1) { + String var2 = null; + or[] var3 = null; + int var4 = 0; + int var5 = 0; + Object var6 = null; + Iterator var7 = null; + zr var8 = null; + oo var9 = null; + String var11 = null; + int var10 = -1044347021; + + while (true) { + switch (var10) { + case -1801493103: + var6 = var3[var5]; + var7 = this.byGroup.getOrDefault(var6, List.of()).iterator(); + var10 = 1488475533; + break; + case -1044347021: + default: + this.visible.clear(); + if (var1 == null) { + var10 = 1087861101; + } else { + var10 = 2013502484; + } + break; + case -774531512: + if (var5 < var4) { + var10 = -1801493103; + } else { + var10 = -115517891; + } + break; + case -252531188: + this.visible.add(var8); + var10 = -161239473; + break; + case -167856349: + if (var9.description().toLowerCase(Locale.ROOT).contains(var2)) { + var10 = -252531188; + } else { + var10 = -161239473; + } + break; + case -165403262: + var2 = var11; + if (var2.isEmpty()) { + var10 = 1328304953; + } else { + var10 = 98199634; + } + break; + case -161239473: + var10 = 1488475533; + break; + case -115517891: + return (boolean)(((1)) != 0); + case 98199634: + var3 = or.values(); + var4 = var3.length; + var5 = 0; + var10 = -774531512; + break; + case 169404742: + var5++; + var10 = -774531512; + break; + case 1087861101: + var11 = ""; + var10 = -165403262; + break; + case 1328304953: + this.visible.addAll(this.advancedOf(this.activeGroup)); + return (boolean)(((0)) != 0); + case 1488475533: + if (var7.hasNext()) { + var10 = 1616413186; + } else { + var10 = 169404742; + } + break; + case 1616413186: + var8 = (zr)var7.next(); + var9 = var8.token(); + if (!var9.label().toLowerCase(Locale.ROOT).contains(var2)) { + var10 = -167856349; + } else { + var10 = -252531188; + } + break; + case 2013502484: + var11 = var1.trim().toLowerCase(Locale.ROOT); + var10 = -165403262; + } + } + } + + public void mouseReleased(double var1, double var3, apf var5) { + Iterator var6 = null; + zr var7 = null; + int var8 = 1892356864; + + while (true) { + switch (var8) { + case -1769973948: + var7 = (zr)var6.next(); + var7.setting().onMouseReleased(var1, var3, var5); + var8 = -876065643; + break; + case -876065643: + if (var6.hasNext()) { + var8 = -1769973948; + } else { + var8 = 637212891; + } + break; + case 637212891: + return; + case 1508729369: + return; + case 1535042095: + var6 = this.visible.iterator(); + var8 = -876065643; + break; + case 1892356864: + default: + this.wheel.mouseReleased(); + this.ramp.mouseReleased(); + if (!this.rowsRendered) { + var8 = 1508729369; + } else { + var8 = 1535042095; + } + } + } + } + + public void mouseDragged(double var1, double var3, apf var5, double var6, double var8, mv var10) { + Iterator var11 = null; + zr var12 = null; + int var13 = 990029815; + + while (true) { + switch (var13) { + case -1795293599: + var11 = this.visible.iterator(); + var13 = -995430515; + break; + case -1383166873: + this.wheel.mouseDragged(var1, var3, var10); + return; + case -995430515: + if (var11.hasNext()) { + var13 = 118026174; + } else { + var13 = 778922843; + } + break; + case -709431143: + return; + case -78159017: + if (this.ramp.isDragging()) { + var13 = 412150050; + } else { + var13 = 1717923123; + } + break; + case 118026174: + var12 = (zr)var11.next(); + var12.setting().onMouseDragged(var1, var3, var5, var6, var8); + var13 = -995430515; + break; + case 412150050: + this.ramp.mouseDragged(var1, var3, var10); + return; + case 778922843: + return; + case 990029815: + default: + if (this.wheel.isDragging()) { + var13 = -1383166873; + } else { + var13 = -78159017; + } + break; + case 1717923123: + if (!this.rowsRendered) { + var13 = -709431143; + } else { + var13 = -1795293599; + } + } + } + } + + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = 0; + Iterator var5 = null; + zr var6 = null; + int var7 = -494349061; + + while (true) { + switch (var7) { + case -868868206: + var4 = 1; + var7 = -557962361; + break; + case -557962361: + var7 = -526647216; + break; + case -526647216: + if (var5.hasNext()) { + var7 = 2091869290; + } else { + var7 = 54256675; + } + break; + case -494349061: + default: + if (!this.rowsRendered) { + var7 = 393213925; + } else { + var7 = 1916897237; + } + break; + case 54256675: + return (boolean)((var4) != 0); + case 393213925: + return (boolean)(((0)) != 0); + case 1916897237: + var4 = 0; + var5 = this.visible.iterator(); + var7 = -526647216; + break; + case 2091869290: + var6 = (zr)var5.next(); + if (var6.setting().keyPressed(var1, var2, var3)) { + var7 = -868868206; + } else { + var7 = -557962361; + } + } + } + } + + public boolean charTyped(char var1, int var2) { + int var3 = 0; + Iterator var4 = null; + zr var5 = null; + int var6 = -423092932; + + while (true) { + switch (var6) { + case -1658156820: + var5 = (zr)var4.next(); + if (var5.setting().charTyped(var1, var2)) { + var6 = -963160079; + } else { + var6 = 330671371; + } + break; + case -1016477958: + var3 = 0; + var4 = this.visible.iterator(); + var6 = 2030292785; + break; + case -963160079: + var3 = 1; + var6 = 330671371; + break; + case -612306456: + return (boolean)((var3) != 0); + case -423092932: + default: + if (!this.rowsRendered) { + var6 = 628977110; + } else { + var6 = -1016477958; + } + break; + case 330671371: + var6 = 2030292785; + break; + case 628977110: + return (boolean)(((0)) != 0); + case 2030292785: + if (var4.hasNext()) { + var6 = -1658156820; + } else { + var6 = -612306456; + } + } + } + } + + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + Iterator var9 = null; + zr var10 = null; + int var11 = 624990644; + + while (true) { + switch (var11) { + case -1759583615: + return (boolean)(((1)) != 0); + case -1347839295: + return (boolean)(((0)) != 0); + case -795307892: + var9 = this.visible.iterator(); + var11 = -304788968; + break; + case -357303347: + var10 = (zr)var9.next(); + if (var10.setting().mouseScrolled(var1, var3, var5, var7)) { + var11 = -1759583615; + } else { + var11 = 2030885420; + } + break; + case -304788968: + if (var9.hasNext()) { + var11 = -357303347; + } else { + var11 = -304501432; + } + break; + case -304501432: + return (boolean)(((0)) != 0); + case 624990644: + default: + if (!this.rowsRendered) { + var11 = -1347839295; + } else { + var11 = -795307892; + } + break; + case 2030885420: + var11 = -304788968; + } + } + } + + public boolean isDragging() { + int var2 = 0; + int var1 = -1687662453; + + while (true) { + switch (var1) { + case -1687662453: + default: + if (!this.wheel.isDragging()) { + var1 = -99021852; + } else { + var1 = 874057999; + } + break; + case -730602865: + var2 = 0; + var1 = -204716257; + break; + case -204716257: + return (boolean)((var2) != 0); + case -99021852: + if (this.ramp.isDragging()) { + var1 = 874057999; + } else { + var1 = -730602865; + } + break; + case 874057999: + var2 = 1; + var1 = -204716257; + } + } + } + + private void ensureBindings() { + Iterator var1 = null; + oo var2 = null; + int var3 = -1610044069; + + while (true) { + switch (var3) { + case -2110555796: + if (var1.hasNext()) { + var3 = -1742905796; + } else { + var3 = 1632272162; + } + break; + case -1742905796: + var2 = (oo)var1.next(); + this.byGroup.computeIfAbsent(var2.group(), var0 -> new ArrayList<>()).add(zr.of(var2)); + var3 = -2110555796; + break; + case -1610044069: + default: + if (!this.byGroup.isEmpty()) { + var3 = 756341861; + } else { + var3 = -136852586; + } + break; + case -136852586: + var1 = op.all().iterator(); + var3 = -2110555796; + break; + case 756341861: + return; + case 1632272162: + return; + } + } + } +} diff --git a/src/main/java/defpackage/yf.java b/src/main/java/defpackage/yf.java new file mode 100644 index 0000000..38fbe05 --- /dev/null +++ b/src/main/java/defpackage/yf.java @@ -0,0 +1,28 @@ +package defpackage; + +import java.util.Objects; + +/* JADX INFO: loaded from: evovis-dec.jar:yf.class */ +class yf implements yl { + final /* synthetic */ yk this$0; + + yf(yk ykVar) { + Objects.requireNonNull(ykVar); + this.this$0 = ykVar; + } + + @Override // defpackage.yl + public boolean pending() { + return this.this$0.history.hasUncommitted(); + } + + @Override // defpackage.yl + public void apply() { + this.this$0.applyChanges(); + } + + @Override // defpackage.yl + public void discard() { + this.this$0.discardChanges(); + } +} diff --git a/src/main/java/defpackage/yg.java b/src/main/java/defpackage/yg.java new file mode 100644 index 0000000..921c6fe --- /dev/null +++ b/src/main/java/defpackage/yg.java @@ -0,0 +1,33 @@ +package defpackage; + +import java.util.Objects; + +/* JADX INFO: loaded from: evovis-dec.jar:yg.class */ +class yg implements zf { + final /* synthetic */ yk this$0; + + yg(yk ykVar) { + Objects.requireNonNull(ykVar); + this.this$0 = ykVar; + } + + @Override // defpackage.zf + public void switchTo(mv mvVar, asi asiVar) { + this.this$0.requestSwitch(mvVar, asiVar); + } + + @Override // defpackage.zf + public void saveAsNew(String str) { + this.this$0.createFromEdited(str); + } + + @Override // defpackage.zf + public void reset(mv mvVar) { + this.this$0.resetTheme(mvVar); + } + + @Override // defpackage.zf + public void delete(mv mvVar) { + this.this$0.deleteTheme(mvVar); + } +} diff --git a/src/main/java/defpackage/yh.java b/src/main/java/defpackage/yh.java new file mode 100644 index 0000000..b5410f9 --- /dev/null +++ b/src/main/java/defpackage/yh.java @@ -0,0 +1,21 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:yh.class */ +/* synthetic */ class yh { + static final /* synthetic */ int[] $SwitchMap$evo$systems$client$screens$menu$appearance$ConfirmDialog$Choice = new int[yo.values().length]; + + static { + try { + $SwitchMap$evo$systems$client$screens$menu$appearance$ConfirmDialog$Choice[yo.APPLY.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$client$screens$menu$appearance$ConfirmDialog$Choice[yo.DISCARD.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$client$screens$menu$appearance$ConfirmDialog$Choice[yo.KEEP.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + } +} diff --git a/src/main/java/defpackage/yi.java b/src/main/java/defpackage/yi.java new file mode 100644 index 0000000..dc42e73 --- /dev/null +++ b/src/main/java/defpackage/yi.java @@ -0,0 +1,34 @@ +package defpackage; + +enum yi { + UNDO( + "Undo", + "R", + "Step back through your changes - Ctrl+Z" + ), + REDO( + "Redo", + "Q", + "Step forward again - Ctrl+Shift+Z" + ), + SHUFFLE( + "Shuffle", + "W", + "Generate a new harmonic palette - click again for another take" + ), + RESET( + "Reset", + "G", + "Restore every value of this theme to its default" + ); + + final String label; + final String icon; + final String tooltip; + + yi(String var3, String var4, String var5) { + this.label = var3; + this.icon = var4; + this.tooltip = var5; + } +} diff --git a/src/main/java/defpackage/yj.java b/src/main/java/defpackage/yj.java new file mode 100644 index 0000000..93adba7 --- /dev/null +++ b/src/main/java/defpackage/yj.java @@ -0,0 +1,19 @@ +package defpackage; + +enum yj { + ROOMY((boolean)(((1)) != 0), 7.0F, 4.0F, 10.0F), + COMPACT((boolean)(((1)) != 0), 4.0F, 2.0F, 6.0F), + ICONS((boolean)(((0)) != 0), 6.0F, 3.0F, 9.0F); + + final boolean labelled; + final float padX; + final float chipGap; + final float gap; + + yj(boolean var3, float var4, float var5, float var6) { + this.labelled = var3; + this.padX = var4; + this.chipGap = var5; + this.gap = var6; + } +} diff --git a/src/main/java/defpackage/yk.java b/src/main/java/defpackage/yk.java new file mode 100644 index 0000000..b2742be --- /dev/null +++ b/src/main/java/defpackage/yk.java @@ -0,0 +1,1316 @@ +package defpackage; + +public final class yk { + private static final yi[] ACTIONS = yi.values(); + private static final int[] SEGMENT_BREAKS; + private static final float SWITCHER_PAD = 7.0F; + private static final float SWITCHER_GAP = 5.0F; + private static final float SWITCHER_NAME_MAX = 110.0F; + private static final float SWITCHER_DOT = 3.5F; + private static final float CLUSTER_GAP = 10.0F; + private static final String SWITCHER_TOOLTIP = "The theme you are editing - click to switch, save a copy, reset or delete themes"; + private static final String SWITCHER_PENDING_TOOLTIP = "The theme you are editing has unsaved changes - click to switch or manage themes"; + private static final String KEY_SWITCHER = "header.switcher"; + private static final float TOOLBAR_HEIGHT = 22.0F; + private static final float TOOLBAR_GAP = 8.0F; + private static final float TOOLBAR_PAD = 4.0F; + private static final float CHIP_HEIGHT = 16.0F; + private static final float SEGMENT_RULE_WIDTH = 1.0F; + private static final float SEGMENT_RULE_INSET = 4.0F; + private static final float ICON_SIZE = 5.5F; + private static final float COLUMN_GAP = 6.0F; + private static final float INSPECTOR_PAD = 4.0F; + private static final float INSPECTOR_MIN = 154.0F; + private static final float STAGE_RATIO = 0.44F; + private static final float STAGE_MIN = 184.0F; + private static final float STAGE_MAX = 236.0F; + private static final float BLOCK_HOVER_BORDER = 0.55F; + private static final float STAGGER_STEP = 0.12F; + private static final int TOOLBAR_SLOT = 0; + private static final int STAGE_SLOT = 1; + private static final int INSPECTOR_SLOT = 2; + private static final float DISABLED_ALPHA = 0.32F; + private static final float TOOLBAR_PLATE_ALPHA = 0.05F; + private static final float SCRIM_ALPHA = 0.82F; + private static final float HALF = 0.5F; + private static final float GALLERY_INSET = 8.0F; + private static final float GALLERY_MAX_WIDTH = 420.0F; + private static final long CONFIRM_TIMEOUT_MILLIS = 3200L; + private static final String RESET_CONFIRM_LABEL = "Sure?"; + private static final String RESET_CONFIRM_TOOLTIP = "Click again to reset every value - Ctrl+Z still brings it back"; + private static final String NOTIFY_ICON = "V"; + private static final String NOTIFY_TITLE = "Theme"; + private static final String STATUS_APPLIED = " saved"; + private static final String STATUS_CREATED = " created"; + private static final String STATUS_DISCARDED = "changes discarded"; + private static final String STATUS_FAILED = "could not be saved, see log"; + private final ym stage = new ym(); + private final ye inspector = new ye(); + private final zh gallery = new zh(); + private final yq dialog = new yq(); + final zj history = new zj(); + private final nf shuffle = new nf(); + private final yw hits = new yw(); + private final ze motion = new ze(); + private final yn toolbarBlock = new yn(); + private final yn stageBlock = new yn(); + private final yn inspectorBlock = new yn(); + private final asi transitionOrigin = new asi(); + private final asi panelBounds = new asi(); + private final yl commit = new yl() { + @Override + public boolean pending() { + return yk.this.history.hasUncommitted(); + } + + @Override + public void apply() { + yk.this.applyChanges(); + } + + @Override + public void discard() { + yk.this.discardChanges(); + } + }; + private final zf galleryActions = new zf() { + @Override + public void switchTo(mv var1, asi var2) { + yk.this.requestSwitch(var1, var2); + } + + @Override + public void saveAsNew(String var1) { + yk.this.createFromEdited(var1); + } + + @Override + public void reset(mv var1) { + yk.this.resetTheme(var1); + } + + @Override + public void delete(mv var1) { + yk.this.deleteTheme(var1); + } + }; + private final yp leaveListener = this::onLeaveChoice; + private long resetArmedAt; + private Runnable leaveContinuation; + private mv switchTarget; + private float enterOffset = Float.NaN; + + public void onCategoryOpened(float var1) { + this.enterOffset = var1; + this.gallery.close(); + this.dialog.dismiss(); + this.leaveContinuation = null; + this.history.attach(theme()); + this.history.markCommitted(); + this.resetArmedAt = (2272949537621118967L ^ -2272949537621118967L) + ((2272949537621118967L & -2272949537621118967L) << 1); + } + + public void focus(or var1) { + this.inspector.activeGroup(var1); + } + + public boolean consumeScrollReset() { + return this.inspector.consumeScrollReset(); + } + + public boolean guardLeave(Runnable var1) { + int var2 = 1697441867; + + while (true) { + switch (var2) { + case -1178194126: + this.gallery.close(); + this.leaveContinuation = var1; + this.dialog.open(this.leaveListener); + return (boolean)(((1)) != 0); + case -400358821: + return (boolean)(((0)) != 0); + case 3733509: + return (boolean)(((1)) != 0); + case 1697441867: + default: + if (this.dialog.isOpen()) { + var2 = 3733509; + } else { + var2 = 2040131822; + } + break; + case 2040131822: + this.history.attach(theme()); + this.history.refreshNow(); + if (!this.history.hasUncommitted()) { + var2 = -400358821; + } else { + var2 = -1178194126; + } + } + } + } + + public float render(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, mv var8, float var9, float var10, String var11) { + mv var12 = theme(); + this.history.attach(var12); + this.history.update(); + this.hits.clear(); + this.panelBounds.set(var2, var3, var4, var5); + float var13 = this.resolveStageWidth(var4); + float var14 = Math.max(var4 - var13 - 6.0F, 1.0F); + float var15 = 30.0F; + float var16 = Math.max(var5 - var15, 1.0F); + if (!Float.isNaN(this.enterOffset)) { + this.toolbarBlock.enter(stagger(this.enterOffset, (484442570 ^ -484442570) + ((484442570 & -484442570) << 1))); + this.stageBlock.enter(stagger(this.enterOffset, (1438442657 ^ -1438442656) + ((1438442657 & -1438442656) << 1))); + this.inspectorBlock.enter(stagger(this.enterOffset, (-897726482 ^ 897726484) + ((-897726482 & 897726484) << 1))); + this.enterOffset = Float.NaN; + } + + this.toolbarBlock.update(var2, var3); + this.stageBlock.update(var2, var3 + var15); + this.inspectorBlock.update(var2 + var13 + 6.0F, var3 + var15); + int var17 = !this.gallery.isOpen() && !this.dialog.isOpen() + ? 0: 1; + float var18 = var17 != 0 ? Float.NEGATIVE_INFINITY : var9; + float var19 = var17 != 0 ? Float.NEGATIVE_INFINITY : var10; + this.drawStage(var1, var13, var16, var7, var8, var12, var18, var19); + float var20 = this.drawInspector(var1, var14, var16, var6, var7, var8, var12, var18, var19, var11); + this.drawToolbar(var1, this.toolbarBlock.x(), this.toolbarBlock.y(), var4, var7, var8, var18, var19); + if (this.gallery.isVisible()) { + this.drawGallery( + var1, + this.stageBlock.x(), + this.stageBlock.y(), + var4, + var16, + var7, + var8, + var9, + var10, + (boolean)(((this.gallery.isOpen() && !this.dialog.isOpen() + ? 1: (1214813529 | -1214813529) + (1214813529 & -1214813529)) + ) != 0)); + } + + if (this.dialog.isVisible()) { + this.dialog.render(var1, this.hits, var2, var3, var4, var5, var7, var8, var9, var10); + } + + if (this.inspector.isDragging()) { + ass.suppress(); + } + + this.motion.endFrame(); + return var15 + var20 + 8.0F; + } + + private static float stagger(float var0, int var1) { + return var0 * (1.0F + var1 * 0.12F); + } + + private void drawStage(asq var1, float var2, float var3, float var4, mv var5, mv var6, float var7, float var8) { + float var9 = this.stageBlock.x(); + float var10 = this.stageBlock.y(); + float var11 = this.stageBlock.hover(aqj.isHovered(var7, var8, var9, var10, var2, var3)); + this.drawBlockChrome(var1, var9, var10, var2, var3, var4, var5, var11, (boolean)((((358511341 | -358511341) + (358511341 & -358511341))) != 0)); + var1.pushClipBounds(var9, var10, var9 + var2, var10 + var3); + this.hits.clip(var9, var10, var9 + var2, var10 + var3); + this.stage.render(var1, this.hits, var9, var10, var2, var3, var4, themes().getCurrentTheme(), var7, var8, this.commit); + this.hits.clipReset(); + var1.popClip(); + zv.activeBorder(var1, var9, var10, var2, var3, var4, var11 * 0.55F, var5.getColor()); + } + + private float drawInspector(asq var1, float var2, float var3, float var4, float var5, mv var6, mv var7, float var8, float var9, String var10) { + float var11 = this.inspectorBlock.x(); + float var12 = this.inspectorBlock.y(); + float var13 = this.inspectorBlock.hover(aqj.isHovered(var8, var9, var11, var12, var2, var3)); + this.drawBlockChrome(var1, var11, var12, var2, var3, var5, var6, var13, (boolean)((((634879745 | -634879744) + (634879745 & -634879744))) != 0)); + var1.pushClipBounds(var11, var12, var11 + var2, var12 + var3); + this.hits.clip(var11, var12, var11 + var2, var12 + var3); + float var14 = this.inspector + .render( + var1, this.hits, var11 + 4.0F, var12 + 4.0F, Math.max(var2 - 8.0F, 1.0F), Math.max(var3 - 8.0F, 1.0F), var4, var5, var6, var7, var8, var9, var10 + ); + this.hits.clipReset(); + var1.popClip(); + zv.activeBorder(var1, var11, var12, var2, var3, var5, var13 * 0.55F, var6.getColor()); + return var14; + } + + private void drawBlockChrome(asq var1, float var2, float var3, float var4, float var5, float var6, mv var7, float var8, boolean var9) { + int var10 = -387773092; + + while (true) { + switch (var10) { + case -1147089620: + zv.border(var1, var2, var3, var4, var5, var7, var6); + return; + case -786632601: + zv.surface(var1, var2, var3, var4, var5, zv.radius(), var7.getForegroundDark().getRGBWithAlpha(var6)); + var10 = -1147089620; + break; + case -387773092: + default: + zv.restShadow(var1, var2, var3, var4, var5, var6); + zv.activeShadow(var1, var2, var3, var4, var5, var6, var8, var7.getColor()); + if (var9) { + var10 = -786632601; + } else { + var10 = -1147089620; + } + } + } + } + + private float resolveStageWidth(float var1) { + float var2 = 0.0F; + float var3 = 0.0F; + int var4 = 851975327; + + while (true) { + switch (var4) { + case 851975327: + default: + var2 = Math.min(Math.max(var1 * 0.44F, 184.0F), 236.0F); + var3 = var1 - var2 - 6.0F; + if (var3 >= 154.0F) { + var4 = 1981569356; + } else { + var4 = 1155070228; + } + break; + case 1155070228: + return Math.max(var1 - 154.0F - 6.0F, 1.0F); + case 1981569356: + return var2; + } + } + } + + private void drawGallery(asq var1, float var2, float var3, float var4, float var5, float var6, mv var7, float var8, float var9, boolean var10) { + float var11 = this.gallery.fade(); + var1.drawRoundedRect(var2, var3, var4, var5, asj.all(oc.PANEL), var7.getBackgroundColor().mulAlpha(var6 * var11 * 0.82F)); + if (var10) { + this.hits.add(var2, var3, var4, var5, this.gallery::close); + } + + float var12 = Math.min(var4 - 16.0F, 420.0F); + float var13 = var2 + (var4 - var12) * 0.5F; + this.gallery + .render( + var1, + this.hits, + var13, + var3 + 8.0F, + var12, + var5 - 16.0F, + var6, + var7, + var10 ? var8 : Float.NEGATIVE_INFINITY, + var10 ? var9 : Float.NEGATIVE_INFINITY, + this.galleryActions + ); + } + + private void drawToolbar(asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8) { + ge var9 = asp.font(oe.MICRO); + ge var10 = gl.ICONS.getFont(5.5F); + float var11 = this.toolbarBlock.hover(aqj.isHovered(var7, var8, var2, var3, var4, 22.0)); + zv.restShadow(var1, var2, var3, var4, 22.0F, var5); + zv.activeShadow(var1, var2, var3, var4, 22.0F, var5, var11, var6.getColor()); + zv.surface(var1, var2, var3, var4, 22.0F, zv.radius(), var6.getForegroundColor().getRGBWithAlpha(var5)); + var1.drawRoundedRect(var2, var3, var4, 22.0F, zv.radius(), var6.getWhite().mulAlpha(var5 * 0.05F)); + zv.border(var1, var2, var3, var4, 22.0F, var6, var5); + float var12 = var3 + 3.0F; + float var13 = this.drawSwitcher(var1, var9, var10, var2 + 4.0F, var12, var4 - 8.0F, var5, var6, var7, var8); + float var14 = var4 - 8.0F - var13 - 10.0F; + yj var15 = yj.ROOMY; + if (this.measure(var9, var10, var15) > var14) { + var15 = yj.COMPACT; + } + + if (this.measure(var9, var10, var15) > var14) { + var15 = yj.ICONS; + } + + float var16 = var2 + var4 - 4.0F - Math.min(this.measure(var9, var10, var15), var14); + float var17 = var2 + var4 - 4.0F; + + for (int var18 = 0; var18 < ACTIONS.length; var18++) { + yi var19 = ACTIONS[var18]; + if (var18 > 0) { + boolean var20 = isSegmentBreak(var18 - ((-214482334 ^ 214482335) + ((-214482334 & 214482335) << 1))); + if (var20) { + float var21 = var16 + (var15.gap - 1.0F) * 0.5F; + var1.drawRect(var21, var12 + 4.0F, 1.0F, 8.0F, var6.getForegroundLightStroke().mulAlpha(var5)); + } + + var16 += var20 ? var15.gap : var15.chipGap; + } + + float var22 = this.chipWidth(var9, var10, var19, var15); + if (var16 + var22 > var17 + 1.0F) { + break; + } + + this.drawChip(var1, var19, var9, var10, var16, var12, var22, var15, var5, var6, var7, var8); + var16 += var22; + } + + zv.activeBorder(var1, var2, var3, var4, 22.0F, var5, var11 * 0.55F, var6.getColor()); + } + + private float drawSwitcher(asq var1, ge var2, ge var3, float var4, float var5, float var6, float var7, mv var8, float var9, float var10) { + ge var11 = asp.font(oe.LABEL_STRONG); + String var12 = theme().getName(); + boolean var13 = this.history.hasUncommitted(); + float var14 = this.motion + .select("header.switcher", ob.MEDIUM, var13); + float var15 = var3.width("d"); + float var16 = var3.width("Q"); + float var17 = Math.min(var11.width(var12), 110.0F); + float var18 = 14.0F + var15 + 5.0F + var17 + 8.5F * var14 + 5.0F + var16; + var18 = Math.min(var18, var6 * 0.5F); + boolean var19 = zb.hits(var9, var10, var4, var5, var18, 16.0F, this.motion.peekHover(this), 10.0F); + float var20 = this.motion.hover(this, var19); + float var21 = this.motion.select(this.gallery, ob.FAST, this.gallery.isOpen()); + boolean var22 = zb.begin(var1, var4, var5, var18, 16.0F, var20, 10.0F); + zb.ghost(var1, var4, var5, var18, 16.0F, asj.all(oc.CHIP), var8, var7 * (1.0F - var21), var20); + if (var21 > 0.001F) { + var1.drawRoundedRect(var4, var5, var18, 16.0F, asj.all(oc.CHIP), var8.getColor().mulAlpha(var7 * var21)); + } + + asu var23 = asu.lerp(var8.getColor(), var8.getForegroundDark(), var21).mulAlpha(var7); + asu var24 = asu.lerp(var8.getWhite(), var8.getForegroundDark(), var21).mulAlpha(var7); + float var25 = var4 + 7.0F; + var1.drawText( + var3, + "d", + var3.glyphCenterX("d", var25, var15), + var3.glyphCenterY("d", var5, 16.0F), + var23 + ); + var25 += var15 + 5.0F; + float var26 = var4 + var18 - 7.0F - var16; + float var27 = Math.max(var26 - 5.0F - 8.5F * var14 - var25, 0.0F); + var1.drawScrollingText( + var11, var12, var25, var5 + (16.0F - var11.height()) * 0.5F, var27, var24, (boolean)((((2073765141 | -2073765140) + (2073765141 & -2073765140)) + ) != 0)); + if (var14 > 0.001F) { + float var28 = var25 + Math.min(var17, var27) + 5.0F; + var1.drawRoundedRect(var28, var5 + 6.25F, 3.5F, 3.5F, asj.pill(3.5F), var23.mulAlpha(var14)); + } + + String var31 = this.gallery.isOpen() + ? "R" + : "Q"; + var1.drawText( + var3, + var31, + var3.glyphCenterX(var31, var26, var16), + var3.glyphCenterY(var31, var5, 16.0F), + asu.lerp(zb.lift(var8.getGrayLight(), var8, var20), var8.getForegroundDark(), var21).mulAlpha(var7) + ); + zb.end(var1, var22); + if (var20 > 0.5F) { + ass.tooltip( + "header.switcher", + var13 + ? "The theme you are editing has unsaved changes - click to switch or manage themes" + : "The theme you are editing - click to switch, save a copy, reset or delete themes", + var4, + var5, + var18, + 16.0F, + asr.BELOW + ); + } + + this.hits.add(var4, var5, var18, 16.0F, () -> this.gallery.toggle(theme())); + return var18; + } + + private void drawChip(asq var1, yi var2, ge var3, ge var4, float var5, float var6, float var7, yj var8, float var9, mv var10, float var11, float var12) { + boolean var13 = this.isEnabled(var2); + boolean var14 = this.isActive(var2); + float var15 = var8.chipGap; + int var16 = var13 && zb.hits(var11, var12, var5, var6, var7, 16.0F, this.motion.peekHover(var2), var15) + ? 1: 0; + float var17 = this.motion.hover(var2, (boolean)((var16) != 0)); + float var18 = this.motion.select(var2, ob.FAST, var14); + boolean var19 = zb.begin(var1, var5, var6, var7, 16.0F, var17, var15); + zb.ghost(var1, var5, var6, var7, 16.0F, asj.all(oc.CHIP), var10, var9 * (1.0F - var18), var17); + if (var18 > 0.001F) { + var1.drawRoundedRect(var5, var6, var7, 16.0F, asj.all(oc.CHIP), var10.getColor().mulAlpha(var9 * var18)); + zb.primaryHighlight(var1, var5, var6, var7, 16.0F, asj.all(oc.CHIP), var10.getWhite(), var9 * var18, var17); + } + + float var20 = var13 ? var9 : var9 * 0.32F; + asu var21 = var13 ? asu.lerp(var10.getColor(), var10.getForegroundDark(), var18) : var10.getGray(); + asu var22 = var13 ? asu.lerp(var10.getWhite(), var10.getForegroundDark(), var18) : var10.getGray(); + zb.content( + var1, var3, var4, var2.icon, var8.labelled ? this.labelOf(var2) : null, var5, var6, var7, 16.0F, var21.mulAlpha(var20), var22.mulAlpha(var20), var17 + ); + zb.end(var1, var19); + if (var17 > 0.5F) { + ass.tooltip(var2, this.tooltipOf(var2), var5, var6, var7, 16.0F, asr.BELOW); + } + + if (var13) { + this.hits.add(var5, var6, var7, 16.0F, () -> this.trigger(var2, theme())); + } + } + + private float measure(ge var1, ge var2, yj var3) { + float var4 = 0.0F; + + for (int var5 = 0; var5 < ACTIONS.length; var5++) { + var4 += this.chipWidth(var1, var2, ACTIONS[var5], var3); + if (var5 < ACTIONS.length - ((971714005 ^ -971714004) + ((971714005 & -971714004) << 1))) { + var4 += isSegmentBreak(var5) ? var3.gap : var3.chipGap; + } + } + + return var4; + } + + private float chipWidth(ge var1, ge var2, yi var3, yj var4) { + return var4.padX * 2.0F + zb.contentWidth(var1, var2, var3.icon, var4.labelled ? this.labelOf(var3) : null); + } + + private static boolean isSegmentBreak(int var0) { + int[] var1 = null; + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 152187548; + + while (true) { + switch (var5) { + case -1965875052: + var4 = var1[var3]; + if (var0 == var4 - ((1787597853 ^ -1787597852) + ((1787597853 & -1787597852) << 1))) { + var5 = -1326150102; + } else { + var5 = 192932462; + } + break; + case -1800145281: + if (var3 < var2) { + var5 = -1965875052; + } else { + var5 = 2048244876; + } + break; + case -1326150102: + return (boolean)(((1)) != 0); + case 152187548: + default: + var1 = SEGMENT_BREAKS; + var2 = var1.length; + var3 = 0; + var5 = -1800145281; + break; + case 192932462: + var3++; + var5 = -1800145281; + break; + case 2048244876: + return (boolean)(((0)) != 0); + } + } + } + + private String labelOf(yi var1) { + int var2 = -1640899738; + + while (true) { + switch (var2) { + case -1640899738: + default: + if (var1 == yi.RESET) { + var2 = 951668546; + } else { + var2 = -285553425; + } + break; + case -285553425: + return var1.label; + case 86876051: + return "Sure?"; + case 951668546: + if (this.isResetArmed()) { + var2 = 86876051; + } else { + var2 = -285553425; + } + } + } + } + + private String tooltipOf(yi var1) { + int var2 = -262785363; + + while (true) { + switch (var2) { + case -1680253150: + if (this.isResetArmed()) { + var2 = -753528980; + } else { + var2 = 231594821; + } + break; + case -753528980: + return "Click again to reset every value - Ctrl+Z still brings it back"; + case -262785363: + default: + if (var1 == yi.RESET) { + var2 = -1680253150; + } else { + var2 = 231594821; + } + break; + case 231594821: + return var1.tooltip; + } + } + } + + private boolean isEnabled(yi var1) { + return (boolean)(switch (var1) { + case UNDO -> this.history.canUndo(); + case REDO -> this.history.canRedo(); + default -> 1; + }); + } + + private boolean isActive(yi var1) { + return (boolean)(switch (var1) { + case RESET -> this.isResetArmed(); + default -> 0; + }); + } + + private boolean isResetArmed() { + int var2 = 0; + int var1 = 536897064; + + while (true) { + switch (var1) { + case -48294926: + return (boolean)((var2) != 0); + case 133621959: + var2 = 0; + var1 = -48294926; + break; + case 536897064: + default: + if (this.resetArmedAt != (-2242570303220634777L | 2242570303220634777L) + (-2242570303220634777L & 2242570303220634777L)) { + var1 = 586215028; + } else { + var1 = 133621959; + } + break; + case 586215028: + if (System.currentTimeMillis() - this.resetArmedAt + < (2737223832549767091L ^ -2737223832549763891L) + ((2737223832549767091L & -2737223832549763891L) << 1)) { + var1 = 1018341041; + } else { + var1 = 133621959; + } + break; + case 1018341041: + var2 = 1; + var1 = -48294926; + } + } + } + + boolean applyChanges() { + mv var1 = null; + int var2 = 0; + int var4 = 0; + int var3 = -131402336; + + while (true) { + switch (var3) { + case -1046503504: + var4 = 1; + var3 = 976893639; + break; + case -630672925: + this.history.markCommitted(); + persistConfig(); + notifyStatus(var1.getName() + " saved"); + return (boolean)(((1)) != 0); + case -280324445: + notifyStatus("could not be saved, see log"); + return (boolean)(((0)) != 0); + case -131402336: + default: + var1 = theme(); + this.history.attach(var1); + if (themes().isUser(var1)) { + var3 = 1663399849; + } else { + var3 = -1046503504; + } + break; + case 976893639: + var2 = var4; + if (var2 == 0) { + var3 = -280324445; + } else { + var3 = -630672925; + } + break; + case 1072794914: + var4 = 0; + var3 = 976893639; + break; + case 1663399849: + if (na.save(var1)) { + var3 = -1046503504; + } else { + var3 = 1072794914; + } + } + } + } + + void discardChanges() { + this.history.attach(theme()); + this.history.revertToCommitted(); + notifyStatus("changes discarded"); + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private void onLeaveChoice(yo var1) { + Runnable var2 = this.leaveContinuation; + this.leaveContinuation = null; + playClick(); + switch (yh.$SwitchMap$evo$systems$client$screens$menu$appearance$ConfirmDialog$Choice[var1.ordinal()]) { + case 1: + if (this.applyChanges() && var2 != null) { + var2.run(); + } + break; + case 2: + this.discardChanges(); + if (var2 != null) { + var2.run(); + } + case 3: + } + } + + void requestSwitch(mv var1, asi var2) { + int var3 = 1491230188; + + while (true) { + switch (var3) { + case -1930738705: + this.transitionOrigin.set(var2.x(), var2.y(), var2.width(), var2.height()); + var3 = 1290227183; + break; + case -1695031713: + if (var1 == theme()) { + var3 = 328464806; + } else { + var3 = -308919457; + } + break; + case -1518351782: + return; + case -1085817924: + if (var2.isValid()) { + var3 = -1930738705; + } else { + var3 = -140262951; + } + break; + case -308919457: + if (var2 != null) { + var3 = -1085817924; + } else { + var3 = -140262951; + } + break; + case -140262951: + this.transitionOrigin.set(this.panelBounds.x(), this.panelBounds.y(), this.panelBounds.width(), this.panelBounds.height()); + var3 = 1290227183; + break; + case 237332879: + this.switchToTarget(); + var3 = -1518351782; + break; + case 328464806: + this.gallery.close(); + return; + case 546180408: + return; + case 1290227183: + this.switchTarget = var1; + if (!this.guardLeave(this::switchToTarget)) { + var3 = 237332879; + } else { + var3 = -1518351782; + } + break; + case 1491230188: + default: + if (var1 == null) { + var3 = 546180408; + } else { + var3 = -1695031713; + } + } + } + } + + private void switchToTarget() { + mv var1 = null; + int var2 = -2035055389; + + while (true) { + switch (var2) { + case -2035055389: + default: + var1 = this.switchTarget; + this.switchTarget = null; + this.gallery.close(); + if (var1 != null) { + var2 = -1398884407; + } else { + var2 = -412791398; + } + break; + case -1398884407: + if (!themes().getThemes().contains(var1)) { + var2 = -412791398; + } else { + var2 = 1897217255; + } + break; + case -412791398: + return; + case 1897217255: + yd.from(this.transitionOrigin); + themes().switchTheme(var1); + return; + } + } + } + + void createFromEdited(String var1) { + mv var2 = null; + mv var3 = null; + int var4 = -158409261; + + while (true) { + switch (var4) { + case -158409261: + default: + var2 = theme(); + var3 = na.create(themes(), var2, var1); + if (var3 == null) { + var4 = 718933021; + } else { + var4 = 260548104; + } + break; + case 260548104: + this.history.attach(var2); + this.history.refreshNow(); + if (this.history.hasUncommitted()) { + var4 = 877038016; + } else { + var4 = 1441566563; + } + break; + case 718933021: + notifyStatus("could not be saved, see log"); + return; + case 877038016: + this.history.revertToCommitted(); + var4 = 1441566563; + break; + case 1441566563: + notifyStatus(var3.getName() + " created"); + this.transitionOrigin.set(this.panelBounds.x(), this.panelBounds.y(), this.panelBounds.width(), this.panelBounds.height()); + this.switchTarget = var3; + this.switchToTarget(); + return; + } + } + } + + void resetTheme(mv var1) { + int var2 = -1451730105; + + while (true) { + switch (var2) { + case -1451730105: + default: + if (var1 == null) { + var2 = 82081279; + } else { + var2 = -1029041576; + } + break; + case -1029041576: + var1.reset(); + if (var1 != theme()) { + var2 = -845995287; + } else { + var2 = -793170584; + } + break; + case -845995287: + persistConfig(); + var2 = -793170584; + break; + case -793170584: + return; + case 82081279: + return; + } + } + } + + void deleteTheme(mv var1) { + int var2 = 1650908862; + + while (true) { + switch (var2) { + case -1921763765: + notifyStatus("could not be saved, see log"); + var2 = 1443157042; + break; + case -251524912: + persistConfig(); + var2 = 1443157042; + break; + case 1443157042: + return; + case 1650908862: + default: + if (na.delete(themes(), var1)) { + var2 = -251524912; + } else { + var2 = -1921763765; + } + } + } + } + + public boolean handleMouseClicked(double var1, double var3, apf var5) { + int var6 = 0; + int var7 = 1428401641; + + while (true) { + switch (var7) { + case -1887707711: + return this.hits.click(var1, var3); + case -1552767713: + if (this.gallery.isOpen()) { + var7 = 1427015377; + } else { + var7 = 530377675; + } + break; + case -1284758319: + playClick(); + var7 = 2048595643; + break; + case -993255402: + this.resetArmedAt = (-4014696568794731224L ^ 4014696568794731224L) + ((-4014696568794731224L & 4014696568794731224L) << 1); + var7 = 2048595643; + break; + case -32288062: + this.gallery.stopTyping(); + var7 = -1887707711; + break; + case 530377675: + var6 = (this.hits.click(var1, var3)) ? 1 : 0; + if (var6 != 0) { + var7 = -1284758319; + } else { + var7 = -993255402; + } + break; + case 1427015377: + if (this.gallery.isTyping()) { + var7 = -32288062; + } else { + var7 = -1887707711; + } + break; + case 1428401641: + default: + if (this.dialog.isOpen()) { + var7 = 1457840716; + } else { + var7 = -1552767713; + } + break; + case 1457840716: + return this.hits.click(var1, var3); + case 2048595643: + return (boolean)((var6) != 0); + } + } + } + + public void handleMouseReleased(double var1, double var3, apf var5) { + this.inspector.mouseReleased(var1, var3, var5); + } + + public void handleMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + int var10 = 458649185; + + while (true) { + switch (var10) { + case -1957842872: + if (this.gallery.isOpen()) { + var10 = -680006354; + } else { + var10 = -1175988283; + } + break; + case -1175988283: + this.inspector.mouseDragged(var1, var3, var5, var6, var8, theme()); + return; + case -680006354: + return; + case 458649185: + default: + if (!this.dialog.isOpen()) { + var10 = -1957842872; + } else { + var10 = -680006354; + } + } + } + } + + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = 0; + int var6 = 0; + int var5 = 1203304163; + + while (true) { + switch (var5) { + case -1670953798: + this.gallery.close(); + var5 = -1353135159; + break; + case -1596618794: + this.history.refreshNow(); + if (this.history.hasUncommitted()) { + var5 = -580328974; + } else { + var5 = 241860975; + } + break; + case -1555710135: + if ((var3 & (-393198042 | 393198044) + (-393198042 & 393198044)) != 0) { + var5 = -500602490; + } else { + var5 = -529756872; + } + break; + case -1542025137: + this.history.redo(); + return (boolean)(((1)) != 0); + case -1353135159: + return (boolean)(((1)) != 0); + case -1206440009: + if (var4 != 0) { + var5 = 1947545448; + } else { + var5 = -642715582; + } + break; + case -1157467188: + if (this.gallery.isTyping()) { + var5 = 1621412540; + } else { + var5 = -1670953798; + } + break; + case -985384623: + if ((var3 & (-1080969854 | 1080969855) + (-1080969854 & 1080969855)) != 0) { + var5 = -608608110; + } else { + var5 = -44727977; + } + break; + case -732644667: + if (var1 == (-1783358953 | 1783359036) + (-1783358953 & 1783359036)) { + var5 = -1596618794; + } else { + var5 = -1206440009; + } + break; + case -676723130: + if (var1 == (487272491 ^ -487272235) + ((487272491 & -487272235) << 1)) { + var5 = -1157467188; + } else { + var5 = -463961345; + } + break; + case -642715582: + if (var4 != 0) { + var5 = 398700005; + } else { + var5 = 1538995009; + } + break; + case -608608110: + this.history.redo(); + var5 = 274297; + break; + case -580328974: + this.applyChanges(); + var5 = 241860975; + break; + case -529756872: + var6 = 0; + var5 = 1939030314; + break; + case -500602490: + var6 = 1; + var5 = 1939030314; + break; + case -463961345: + if (this.gallery.keyPressed(var1, var2, var3)) { + var5 = 1305849874; + } else { + var5 = -1555710135; + } + break; + case -304917517: + return this.dialog.keyPressed(var1); + case -44727977: + this.history.undo(); + var5 = 274297; + break; + case 274297: + return (boolean)(((1)) != 0); + case 241860975: + return (boolean)(((1)) != 0); + case 398700005: + if (var1 == (825024486 | -825024397) + (825024486 & -825024397)) { + var5 = -1542025137; + } else { + var5 = 1538995009; + } + break; + case 950570688: + if (this.gallery.isOpen()) { + var5 = -676723130; + } else { + var5 = -1555710135; + } + break; + case 1203304163: + default: + if (this.dialog.isOpen()) { + var5 = -304917517; + } else { + var5 = 950570688; + } + break; + case 1305849874: + return (boolean)(((1)) != 0); + case 1538995009: + return this.inspector.keyPressed(var1, var2, var3); + case 1621412540: + this.gallery.stopTyping(); + var5 = -1353135159; + break; + case 1939030314: + var4 = var6; + if (var4 != 0) { + var5 = -732644667; + } else { + var5 = -1206440009; + } + break; + case 1947545448: + if (var1 == (1273646132 ^ -1273646042) + ((1273646132 & -1273646042) << 1)) { + var5 = -985384623; + } else { + var5 = -642715582; + } + } + } + } + + public boolean charTyped(char var1, int var2) { + int var3 = 1870537525; + + while (true) { + switch (var3) { + case -146554365: + return this.inspector.charTyped(var1, var2); + case 81832473: + return (boolean)(((1)) != 0); + case 613107509: + if (this.gallery.isOpen()) { + var3 = 792543706; + } else { + var3 = -146554365; + } + break; + case 792543706: + return this.gallery.charTyped(var1, var2); + case 1870537525: + default: + if (this.dialog.isOpen()) { + var3 = 81832473; + } else { + var3 = 613107509; + } + } + } + } + + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + int var9 = -757238321; + + while (true) { + switch (var9) { + case -1626478479: + if (this.gallery.isOpen()) { + var9 = 695255396; + } else { + var9 = -451828190; + } + break; + case -1563213796: + return (boolean)(((1)) != 0); + case -1055610051: + return this.inspector.mouseScrolled(var1, var3, var5, var7); + case -757238321: + default: + if (this.dialog.isOpen()) { + var9 = -1563213796; + } else { + var9 = -1626478479; + } + break; + case -451828190: + if (this.stage.mouseScrolled(var1, var3, var7)) { + var9 = 1636798187; + } else { + var9 = -1055610051; + } + break; + case 695255396: + return this.gallery.mouseScrolled(var7); + case 1636798187: + return (boolean)(((1)) != 0); + } + } + } + + private void trigger(yi var1, mv var2) { + if (var1 != yi.RESET) { + this.resetArmedAt = (2398675700196393214L | -2398675700196393214L) + (2398675700196393214L & -2398675700196393214L); + } + + switch (var1) { + case UNDO: + this.history.undo(); + break; + case REDO: + this.history.redo(); + break; + case SHUFFLE: + this.shuffle.next(var2); + break; + case RESET: + if (this.isResetArmed()) { + this.resetArmedAt = (421262551773362519L | -421262551773362519L) + (421262551773362519L & -421262551773362519L); + var2.reset(); + } else { + this.resetArmedAt = System.currentTimeMillis(); + } + } + } + + private static void persistConfig() { + int var0 = 1772584089; + + while (true) { + switch (var0) { + case 162983286: + bz.getInstance().getConfigManager().saveCurrent(); + var0 = 1771173403; + break; + case 1771173403: + return; + case 1772584089: + default: + if (bz.getInstance().getConfigManager() != null) { + var0 = 162983286; + } else { + var0 = 1771173403; + } + } + } + } + + private static void notifyStatus(String var0) { + le.getInstance() + .addCustomNotification( + "V", + "Theme", + var0 + ); + } + + private static my themes() { + return bz.getInstance().getThemeManager(); + } + + private static mv theme() { + return themes().getSelectedTheme(); + } + + private static void playClick() { + int var0 = 1865806630; + + while (true) { + switch (var0) { + case 426082628: + return; + case 1508741191: + bz.getInstance().getSoundManager().playClick(); + var0 = 426082628; + break; + case 1865806630: + default: + if (bz.getInstance().getSoundManager() != null) { + var0 = 1508741191; + } else { + var0 = 426082628; + } + } + } + } + + static { + int[] var10000 = new int[2]; + var10000[0] = 2; + var10000[1] = 3; + SEGMENT_BREAKS = var10000; + } +} diff --git a/src/main/java/defpackage/yl.java b/src/main/java/defpackage/yl.java new file mode 100644 index 0000000..e38260c --- /dev/null +++ b/src/main/java/defpackage/yl.java @@ -0,0 +1,9 @@ +package defpackage; + +public interface yl { + boolean pending(); + + void apply(); + + void discard(); +} diff --git a/src/main/java/defpackage/ym.java b/src/main/java/defpackage/ym.java new file mode 100644 index 0000000..16b33f9 --- /dev/null +++ b/src/main/java/defpackage/ym.java @@ -0,0 +1,722 @@ +package defpackage; + +public final class ym { + private static final float CARD_MAX_WIDTH = 172.0F; + private static final float SCENE_PAD = 6.0F; + private static final float STACK_GAP = 7.0F; + private static final float SCROLL_FADE = 6.0F; + private static final float SCROLL_STEP = 22.0F; + private static final float HALF = 0.5F; + private static final float FRAME_THICKNESS = 1.5F; + private static final float ROW_EPSILON = 0.01F; + private static final String HUD_ICON = "k"; + private static final String HUD_TITLE = "Keybinds"; + private static final String[] HUD_ROWS; + private static final String[] HUD_ICONS; + private static final String[] HUD_KEYS; + private static final String[] HUD_COUNTS; + private static final String HUD_DOT = "."; + private static final float HUD_HEADER_HEIGHT = 18.0F; + private static final float HUD_ROW_HEIGHT = 18.0F; + private static final float HUD_LAST_TRIM = 2.0F; + private static final float HUD_ROW_INSET = 2.0F; + private static final int HUD_ROW_TINT_ALPHA = 20; + private static final float HUD_PAD = 8.0F; + private static final float HUD_DOT_OFFSET = 10.0F; + private static final float HUD_DOT_BASELINE = 4.0F; + private static final float HUD_NAME_OFFSET = 16.0F; + private static final float HUD_ICON_SIZE = 6.0F; + private static final float HUD_TEXT_SIZE = 6.0F; + private static final float HUD_DOT_SIZE = 8.0F; + private static final float STRIP_HEIGHT = 20.0F; + private static final float STRIP_GAP = 5.0F; + private static final float STRIP_PAD_X = 8.0F; + private static final float STRIP_ICON_SIZE = 5.5F; + private static final float STATUS_PAD_X = 6.0F; + private static final float STATUS_HEIGHT = 12.0F; + private static final float STATUS_DOT = 3.5F; + private static final float STATUS_GAP = 4.0F; + private static final float STATUS_PLATE_ALPHA = 0.22F; + private static final float STATUS_IDLE_PLATE_ALPHA = 0.08F; + private static final float GHOST_PLATE_ALPHA = 0.1F; + private static final float DISABLED_ALPHA = 0.38F; + private static final String APPLY_LABEL = "Apply"; + private static final String DISCARD_LABEL = "Discard"; + private static final String STATUS_PENDING = "Unsaved"; + private static final String STATUS_SAVED = "Saved"; + private static final String APPLY_TOOLTIP = "Save your changes to this theme - Ctrl+S"; + private static final String DISCARD_TOOLTIP = "Throw away every change since the last Apply"; + private static final String IDLE_TOOLTIP = "Nothing to apply yet - change something first"; + private static final String STATUS_PENDING_TOOLTIP = "These changes are live but not saved yet"; + private static final String STATUS_SAVED_TOOLTIP = "Every change is saved"; + private static final String KEY_APPLY = "stage.apply"; + private static final String KEY_DISCARD = "stage.discard"; + private static final String KEY_IDLE = "stage.idle"; + private static final String KEY_STATUS = "stage.status"; + private static final String KEY_ENABLED = "stage.enabled"; + private final za paint = new za(); + private final yz card = new yz(); + private final ze motion = new ze(); + private final asi bounds = new asi(); + private final asi applyBounds = new asi(); + private final asi discardBounds = new asi(); + private final asi statusBounds = new asi(); + private yl commit; + private final yv applyHit = (var1, var3) -> { + int var5 = -1086110753; + + while (true) { + switch (var5) { + case -1229433920: + this.commit.apply(); + var5 = 22941414; + break; + case -1086110753: + default: + if (this.commit != null) { + var5 = -1229433920; + } else { + var5 = 22941414; + } + break; + case 22941414: + return (boolean)(((1)) != 0); + } + } + }; + private final yv discardHit = (var1, var3) -> { + int var5 = 1396226046; + + while (true) { + switch (var5) { + case -654727824: + return (boolean)(((1)) != 0); + case 1396226046: + default: + if (this.commit != null) { + var5 = 1925290666; + } else { + var5 = -654727824; + } + break; + case 1925290666: + this.commit.discard(); + var5 = -654727824; + } + } + }; + private float scroll; + private float scrollMax; + private final ct hudRowSpring; + private float hudRows; + private boolean hudPlaced; + private boolean pending; + private float enabledFade; + private float applyHover; + private float discardHover; + private float pendingFade; + + public ym() { + this.hudRowSpring = ct.layout(ob.DELIBERATE, HUD_ROWS.length); + this.hudRows = HUD_ROWS.length; + } + + public void render(asq var1, yw var2, float var3, float var4, float var5, float var6, float var7, mv var8, float var9, float var10, yl var11) { + int var12 = 0; + int var14 = 0; + int var13 = -1602953783; + + while (true) { + switch (var13) { + case -1797479816: + this.drawScene(var1, this.paint, var3, var4, var5, var6, var9, var10); + if (this.scrollMax > 0.0F) { + var13 = 600321940; + } else { + var13 = 1805059814; + } + break; + case -1602953783: + default: + this.commit = var11; + this.bounds.set(var3, var4, var5, var6); + if (this.sceneHeight(HUD_ROWS.length) <= var6) { + var13 = 2106805387; + } else { + var13 = 1709670219; + } + break; + case -546810322: + this.hudPlaced = (boolean)(((1)) != 0); + this.hudRowSpring.jumpTo(var12); + var13 = 2030325003; + break; + case -248493012: + var12 = var14; + if (!this.hudPlaced) { + var13 = -546810322; + } else { + var13 = 2030325003; + } + break; + case 600321940: + var1.popClip(); + var13 = 1805059814; + break; + case 1519721977: + var1.clipScroll(var3, var4, var3 + var5, var4 + var6, 6.0F); + var13 = -1797479816; + break; + case 1709670219: + var14 = 1; + var13 = -248493012; + break; + case 1805059814: + this.drawStripTooltips(); + this.motion.endFrame(); + return; + case 2030325003: + this.hudRows = this.hudRowSpring.update(var12); + this.scrollMax = Math.max(this.sceneHeight(this.hudRows) - var6, 0.0F); + this.scroll = Math.max(0.0F, Math.min(this.scroll, this.scrollMax)); + this.paint.bind(var8, nb.NORMAL, var7); + this.layoutStrip(var3, var4, var5, var6, var9, var10, var2); + if (this.scrollMax > 0.0F) { + var13 = 1519721977; + } else { + var13 = -1797479816; + } + break; + case 2106805387: + var14 = HUD_ROWS.length; + var13 = -248493012; + } + } + } + + private float sceneHeight(float var1) { + return 12.0F + this.card.height() + 7.0F + this.hudHeight(var1) + 7.0F + 20.0F; + } + + private void layoutStrip(float var1, float var2, float var3, float var4, float var5, float var6, yw var7) { + ge var8 = this.paint.font(oe.LABEL); + ge var9 = gl.ICONS.getFont(5.5F); + float var10 = var1 + 6.0F; + float var11 = var2 + 6.0F - this.scroll + this.card.height() + 7.0F + this.hudHeight(this.hudRows) + 7.0F; + float var12 = buttonWidth( + var8, + var9, + "Apply", + "S" + ); + float var13 = buttonWidth( + var8, + var9, + "Discard", + "G" + ); + this.applyBounds.set(var10, var11, var12, 20.0F); + this.discardBounds.set(var10 + var12 + 5.0F, var11, var13, 20.0F); + this.pending = (boolean)(((this.commit != null && this.commit.pending() + ? 1: (-1983807248 ^ 1983807248) + ((-1983807248 & 1983807248) << 1))) != 0); + float var14 = Math.max( + this.statusWidth(var8, "Unsaved"), + this.statusWidth(var8, "Saved") + ); + float var15 = var1 + var3 - 6.0F - var14; + if (var15 > this.discardBounds.x() + var13 + 5.0F) { + this.statusBounds.set(var15, var11 + 4.0F, var14, 12.0F); + } else { + this.statusBounds.invalidate(); + } + + this.enabledFade = this.motion.select("stage.enabled", ob.FAST, this.pending); + int var16 = var6 >= var2 && var6 <= var2 + var4 + ? 1: 0; + this.applyHover = this.updateHover( + "stage.apply", this.applyBounds, var5, var6, (boolean)((var16 + ) != 0)); + this.discardHover = this.updateHover( + "stage.discard", this.discardBounds, var5, var6, (boolean)((var16 + ) != 0)); + this.pendingFade = this.motion + .select("stage.status", ob.MEDIUM, this.pending); + if (this.pending && var7 != null) { + var7.add(this.applyBounds.x(), this.applyBounds.y(), this.applyBounds.width(), this.applyBounds.height(), this.applyHit); + var7.add(this.discardBounds.x(), this.discardBounds.y(), this.discardBounds.width(), this.discardBounds.height(), this.discardHit); + } + + int var17 = this.pending || var16 == 0 || !this.applyBounds.contains(var5, var6) && !this.discardBounds.contains(var5, var6) + ? 0: 1; + this.motion.hover("stage.idle", (boolean)((var17) != 0)); + this.motion + .hover( + "stage.status", + (boolean)(((var16 != 0 && this.statusBounds.isValid() && this.statusBounds.contains(var5, var6) + ? 1: (-547646037 | 547646037) + (-547646037 & 547646037)) + ) != 0)); + } + + private float updateHover(Object var1, asi var2, float var3, float var4, boolean var5) { + int var6 = 0; + int var8 = 0; + int var7 = 833482485; + + while (true) { + switch (var7) { + case -284558990: + if (zb.hits(var3, var4, var2.x(), var2.y(), var2.width(), var2.height(), this.motion.peekHover(var1), 5.0F)) { + var7 = -76004980; + } else { + var7 = 514502382; + } + break; + case -76004980: + var8 = 1; + var7 = 1974723246; + break; + case 514502382: + var8 = 0; + var7 = 1974723246; + break; + case 833482485: + default: + if (this.pending) { + var7 = 1659568255; + } else { + var7 = 514502382; + } + break; + case 1659568255: + if (var5) { + var7 = -284558990; + } else { + var7 = 514502382; + } + break; + case 1974723246: + var6 = var8; + return this.motion.hover(var1, (boolean)((var6) != 0)); + } + } + } + + private void drawStripTooltips() { + if (this.applyHover > 0.5F) { + ass.tooltip( + "stage.apply", + "Save your changes to this theme - Ctrl+S", + this.applyBounds.x(), + this.applyBounds.y(), + this.applyBounds.width(), + this.applyBounds.height(), + asr.ABOVE + ); + } else if (this.discardHover > 0.5F) { + ass.tooltip( + "stage.discard", + "Throw away every change since the last Apply", + this.discardBounds.x(), + this.discardBounds.y(), + this.discardBounds.width(), + this.discardBounds.height(), + asr.ABOVE + ); + } else if (this.motion.peekHover("stage.idle") > 0.5F) { + ass.tooltip( + "stage.idle", + "Nothing to apply yet - change something first", + this.applyBounds.x(), + this.applyBounds.y(), + this.discardBounds.x() + this.discardBounds.width() - this.applyBounds.x(), + this.applyBounds.height(), + asr.ABOVE + ); + } else if (this.motion.peekHover("stage.status") > 0.5F && this.statusBounds.isValid()) { + ass.tooltip( + "stage.status", + this.pending + ? "These changes are live but not saved yet" + : "Every change is saved", + this.statusBounds.x(), + this.statusBounds.y(), + this.statusBounds.width(), + this.statusBounds.height(), + asr.ABOVE + ); + } + } + + private void drawScene(asq var1, za var2, float var3, float var4, float var5, float var6, float var7, float var8) { + this.drawWindowBackground(var1, var2, var3, var4, var5, var6); + float var9 = var3 + 6.0F; + float var10 = var5 - 12.0F; + float var11 = var4 + 6.0F - this.scroll; + float var12 = Math.min(172.0F, var10); + float var13 = var3 + (var5 - var12) * 0.5F; + this.card.render(var1, var13, var11, var12, var2.alpha(), var2.theme(), var7, var8); + var11 += this.card.height() + 7.0F; + this.drawHud(var1, var2, var9, var11, var10); + this.drawControlStrip(var1, var2); + } + + private void drawWindowBackground(asq var1, za var2, float var3, float var4, float var5, float var6) { + arq var7 = null; + int var8 = -1254276231; + + while (true) { + switch (var8) { + case -1690376555: + atb.drawThemeBackdrop(var1.pose(), var3, var4, var5, var6, var7, var2.theme().getBackdrop(), var2.theme().getAccent(), var2.alpha()); + var8 = 73385715; + break; + case -1254276231: + default: + var7 = var2.round(oc.WINDOW); + var1.drawRoundedRect(var3, var4, var5, var6, var7, var2.opaque(nx.BACKGROUND)); + if (var2.theme().getBackdrop().isActive()) { + var8 = -1690376555; + } else { + var8 = 73385715; + } + break; + case 73385715: + var1.drawRoundedBorder(var3, var4, var5, var6, var2.borderThickness() * 1.5F, var7, var2.accent()); + return; + } + } + } + + private float hudHeight(float var1) { + return 18.0F + 18.0F * var1; + } + + private void drawHud(asq var1, za var2, float var3, float var4, float var5) { + float var6 = this.hudHeight(this.hudRows); + pi.surface(var1, var3, var4, var5, var6, asj.uniform(pk.radiusPanel()), nz.LOW, var2.alpha()); + int var7 = Math.min(Math.round(this.hudRows), HUD_ROWS.length); + pi.header( + var1, + "k", + "Keybinds", + HUD_COUNTS[var7], + var3, + var4, + var5, + var2.theme(), + var2.alpha() + ); + ge var8 = gl.ICONS.getFont(6.0F); + ge var9 = gl.MEDIUM.getFont(6.0F); + ge var10 = gl.BOLD.getFont(8.0F); + float var11 = var4 + 18.0F; + int var12 = Math.min((int)Math.ceil(this.hudRows - 0.01F), HUD_ROWS.length); + var1.pushClipBounds(var3, var4, var3 + var5, var4 + var6); + + for (int var13 = 0; var13 < var12; var13++) { + float var14 = Math.max(0.0F, Math.min(1.0F, this.hudRows - var13)); + float var15 = var14 * var14 * var14; + int var16 = var13 == var12 - 1? 1: 0; + float var17 = var16 != 0 ? 16.0F : 18.0F; + if (var13 % 2== 0) { + var1.drawSurface( + aso.ROW, + var3 + 2.0F, + var11, + var5 - 4.0F, + var17, + var16 != 0 ? asj.bottom(oc.CHIP) : arq.ZERO, + var2.accent().withAlpha(Math.round(20.0F * var2.alpha() * var15)) + ); + } + + var1.drawText(var8, HUD_ICONS[var13], var3 + 8.0F, var11 + (18.0F - var8.height()) * 0.5F, var2.color(nx.ON_SURFACE, var15)); + var1.drawText( + var10, + ".", + var3 + 8.0F + 10.0F, + var11 + 4.0F, + var2.color(nx.ICON_INACTIVE, var15) + ); + var1.drawText(var9, HUD_ROWS[var13], var3 + 8.0F + 16.0F, var11 + (18.0F - var9.height()) * 0.5F, var2.color(nx.ON_SURFACE, var15)); + String var18 = HUD_KEYS[var13]; + var1.drawText(var9, var18, var3 + var5 - 8.0F - var9.width(var18), var11 + (18.0F - var9.height()) * 0.5F, var2.accent().mulAlpha(var15)); + var11 += 18.0F; + } + + var1.popClip(); + } + + private void drawControlStrip(asq var1, za var2) { + ge var3 = null; + ge var4 = null; + float var5 = 0.0F; + int var6 = -1572914183; + + while (true) { + switch (var6) { + case -1572914183: + default: + var3 = var2.font(oe.LABEL); + var4 = gl.ICONS.getFont(5.5F); + var5 = 0.38F + 0.62F * this.enabledFade; + this.drawButton( + var1, + var2, + var3, + var4, + (boolean)(((1)) != 0), + "Apply", + "S", + this.applyBounds, + this.applyHover, + var5 + ); + this.drawButton( + var1, + var2, + var3, + var4, + (boolean)(((0)) != 0), + "Discard", + "G", + this.discardBounds, + this.discardHover, + var5 + ); + if (this.statusBounds.isValid()) { + var6 = 1486765882; + } else { + var6 = 668352773; + } + break; + case 668352773: + return; + case 1486765882: + this.drawStatus(var1, var2, var3, var4); + var6 = 668352773; + } + } + } + + private void drawButton(asq var1, za var2, ge var3, ge var4, boolean var5, String var6, String var7, asi var8, float var9, float var10) { + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = 0; + arq var16 = null; + asu var17 = null; + float var18 = 0.0F; + int var19 = 530364755; + + while (true) { + switch (var19) { + case -2134948017: + var1.drawSurface(aso.ROW, var11, var12, var13, var14, var16, var2.color(nx.SURFACE_RAISED, 0.55F * var18)); + var19 = -981408508; + break; + case -1700310887: + var1.drawSurface(aso.CONTROL, var11, var12, var13, var14, var16, var2.accent().mulAlpha(var10)); + var1.drawRoundedRect(var11, var12, var13, var14, var16, var2.accentGradient().mulAlpha(var10)); + zb.primaryHighlight(var1, var11, var12, var13, var14, var16, var2.color(nx.ON_SURFACE), var2.alpha(), var9); + var17 = var2.color(nx.SURFACE_SUNKEN, var10); + var19 = -833112405; + break; + case -1090411622: + atb.drawShadow(var1.pose(), var11, var12, var13, var14, var2.shadowSoftness(nz.LOW), var16, var2.accent().mulAlpha(Math.min(var18, 1.0F))); + var19 = -1700310887; + break; + case -981408508: + var1.drawRoundedBorder(var11, var12, var13, var14, var2.borderThickness(), var16, var2.color(nx.OUTLINE_STRONG, var10)); + var17 = var2.color(nx.ON_SURFACE, var10); + var19 = -833112405; + break; + case -833112405: + zb.content(var1, var3, var4, var7, var6, var11, var12, var13, var14, var17, var17, var9); + zb.end(var1, (boolean)((var15) != 0)); + return; + case 530364755: + default: + var11 = var8.x(); + var12 = var8.y(); + var13 = var8.width(); + var14 = var8.height(); + var15 = (zb.begin(var1, var11, var12, var13, var14, var9, 5.0F)) ? 1 : 0; + var16 = var2.round(oc.CONTROL); + if (var5) { + var19 = 778262266; + } else { + var19 = 2001597008; + } + break; + case 778262266: + var18 = var2.neonFor(aso.CONTROL) * this.enabledFade; + if (var18 > 0.0F) { + var19 = -1090411622; + } else { + var19 = -1700310887; + } + break; + case 2001597008: + var18 = zb.settled(var9); + var1.drawSurface(aso.CONTROL, var11, var12, var13, var14, var16, var2.color(nx.ON_SURFACE, 0.1F * var10 * (1.0F - var18))); + if (var18 > 0.001F) { + var19 = -2134948017; + } else { + var19 = -981408508; + } + } + } + } + + private void drawStatus(asq var1, za var2, ge var3, ge var4) { + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + asu var8 = null; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = -1667249211; + + while (true) { + switch (var12) { + case -1667249211: + default: + var5 = this.statusBounds.x(); + var6 = this.statusBounds.y(); + var7 = this.statusBounds.width(); + var8 = asu.lerp(var2.color(nx.ON_SURFACE_MUTED, 1.0F), var2.accent(), this.pendingFade); + var9 = 0.08F + 0.14F * this.pendingFade; + var1.drawRoundedRect(var5, var6, var7, 12.0F, asj.pill(12.0F), var8.mulAlpha(var9)); + zb.content( + var1, + var3, + var4, + "S", + "Saved", + var5, + var6, + var7, + 12.0F, + var8.mulAlpha(1.0F - this.pendingFade), + var8.mulAlpha(1.0F - this.pendingFade), + 0.0F + ); + var10 = 7.5F + var3.width("Unsaved"); + var11 = var5 + (var7 - var10) * 0.5F; + if (this.pendingFade > 0.001F) { + var12 = 934439742; + } else { + var12 = 1480081124; + } + break; + case 934439742: + var1.drawRoundedRect(var11, var6 + 4.25F, 3.5F, 3.5F, asj.pill(3.5F), var8.mulAlpha(this.pendingFade)); + var1.drawText( + var3, + "Unsaved", + var11 + 3.5F + 4.0F, + var6 + (12.0F - var3.height()) * 0.5F, + var8.mulAlpha(this.pendingFade) + ); + var12 = 1480081124; + break; + case 1480081124: + return; + } + } + } + + private static float buttonWidth(ge var0, ge var1, String var2, String var3) { + return 16.0F + zb.contentWidth(var0, var1, var3, var2); + } + + private float statusWidth(ge var1, String var2) { + ge var3 = null; + float var4 = 0.0F; + float var6 = 0.0F; + int var5 = 1887946040; + + while (true) { + switch (var5) { + case -1476308309: + var4 = var6; + return 12.0F + var4 + var1.width(var2); + case 1364540468: + var6 = var3.width("S") + 4.0F; + var5 = -1476308309; + break; + case 1779169116: + var6 = 7.5F; + var5 = -1476308309; + break; + case 1887946040: + default: + var3 = gl.ICONS.getFont(5.5F); + if (var2.equals("Unsaved")) { + var5 = 1779169116; + } else { + var5 = 1364540468; + } + } + } + } + + public boolean mouseScrolled(double var1, double var3, double var5) { + int var7 = 32716615; + + while (true) { + switch (var7) { + case 32716615: + default: + if (!(this.scrollMax <= 0.0F)) { + var7 = 613046318; + } else { + var7 = 292049618; + } + break; + case 208595175: + if (!this.bounds.contains(var1, var3)) { + var7 = 292049618; + } else { + var7 = 1630891514; + } + break; + case 292049618: + return (boolean)(((0)) != 0); + case 613046318: + if (this.bounds.isValid()) { + var7 = 208595175; + } else { + var7 = 292049618; + } + break; + case 1630891514: + this.scroll = Math.max(0.0F, Math.min(this.scroll - (float)var5 * 22.0F, this.scrollMax)); + return (boolean)(((1)) != 0); + } + } + } + + static { + String[] var10000 = new String[2]; + var10000[0] = "Interface"; + var10000[1] = "Zoom"; + HUD_ROWS = var10000; + var10000 = new String[2]; + var10000[0] = "r"; + var10000[1] = "s"; + HUD_ICONS = var10000; + var10000 = new String[2]; + var10000[0] = "R"; + var10000[1] = "C"; + HUD_KEYS = var10000; + var10000 = new String[3]; + var10000[0] = "0"; + var10000[1] = "1"; + var10000[2] = "2"; + HUD_COUNTS = var10000; + } +} diff --git a/src/main/java/defpackage/yn.java b/src/main/java/defpackage/yn.java new file mode 100644 index 0000000..62295cc --- /dev/null +++ b/src/main/java/defpackage/yn.java @@ -0,0 +1,72 @@ +package defpackage; + +public final class yn { + private final ct x = ct.layout(ob.FAST, 0.0F); + private final ct y = ct.layout(ob.SETTLED, 0.0F); + private final ct hover = asa.cardSpring(); + private boolean placed; + private boolean entering; + private float enterOffset; + private float currentX; + private float currentY; + + public void enter(float var1) { + this.entering = (boolean)(((1)) != 0); + this.enterOffset = var1; + } + + public void update(float var1, float var2) { + int var3 = -457374133; + + while (true) { + switch (var3) { + case -1433525642: + this.entering = (boolean)(((0)) != 0); + this.x.jumpTo(var1); + this.y.jumpTo(var2 + this.enterOffset); + var3 = 561146983; + break; + case -1188832143: + this.placed = (boolean)(((1)) != 0); + this.x.jumpTo(var1); + this.y.jumpTo(var2); + var3 = 1585665444; + break; + case -457374133: + default: + if (!this.placed) { + var3 = -1188832143; + } else { + var3 = 1585665444; + } + break; + case 561146983: + this.currentX = this.x.update(var1); + this.currentY = this.y.update(var2); + return; + case 1585665444: + if (this.entering) { + var3 = -1433525642; + } else { + var3 = 561146983; + } + } + } + } + + public float hover(boolean var1) { + return this.hover.update(var1 ? 1.0F : 0.0F); + } + + public float hoverValue() { + return this.hover.value(); + } + + public float x() { + return this.currentX; + } + + public float y() { + return this.currentY; + } +} diff --git a/src/main/java/defpackage/yo.java b/src/main/java/defpackage/yo.java new file mode 100644 index 0000000..f47d723 --- /dev/null +++ b/src/main/java/defpackage/yo.java @@ -0,0 +1,7 @@ +package defpackage; + +public enum yo { + APPLY, + DISCARD, + KEEP; +} diff --git a/src/main/java/defpackage/yp.java b/src/main/java/defpackage/yp.java new file mode 100644 index 0000000..205c1d2 --- /dev/null +++ b/src/main/java/defpackage/yp.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +public interface yp { + void chosen(yo var1); +} diff --git a/src/main/java/defpackage/yq.java b/src/main/java/defpackage/yq.java new file mode 100644 index 0000000..91ae82a --- /dev/null +++ b/src/main/java/defpackage/yq.java @@ -0,0 +1,399 @@ +package defpackage; + +public final class yq { + private static final yo[] BUTTONS; + private static final String[] BUTTON_LABELS; + private static final String[] BUTTON_ICONS; + private static final String TITLE = "Unsaved theme changes"; + private static final String MESSAGE = "Apply them before you move on?"; + private static final String HINT = "Enter applies - Esc keeps editing"; + private static final float WIDTH = 214.0F; + private static final float PAD = 10.0F; + private static final float TITLE_HEIGHT = 14.0F; + private static final float MESSAGE_HEIGHT = 12.0F; + private static final float HINT_HEIGHT = 10.0F; + private static final float BUTTON_HEIGHT = 17.0F; + private static final float BUTTON_GAP = 5.0F; + private static final float SECTION_GAP = 8.0F; + private static final float ICON_SIZE = 6.0F; + private static final float BUTTON_ICON_SIZE = 5.0F; + private static final float ICON_GAP = 5.0F; + private static final float BUTTON_ICON_GAP = 3.0F; + private static final float SCRIM_ALPHA = 0.72F; + private static final float OPEN_SCALE = 0.94F; + private static final float MIN_FADE = 0.01F; + private static final float HALF = 0.5F; + private final ct fade = ct.layout(ob.MEDIUM, 0.0F); + private final ct pop = ct.transform(ob.MEDIUM, 0.0F); + private final ze motion = new ze(); + private final yv[] buttonHits; + private final yv swallow; + private yp listener; + private boolean open; + + public yq() { + this.buttonHits = new yv[BUTTONS.length]; + this.swallow = (var0, var2x) -> (boolean)(((1)) != 0); + + for (int var1 = 0; var1 < BUTTONS.length; var1++) { + yo var2 = BUTTONS[var1]; + this.buttonHits[var1] = (var2x, var4) -> { + this.choose(var2); + return (boolean)(((1)) != 0); + }; + } + } + + public void open(yp var1) { + this.listener = var1; + this.open = (boolean)(((1)) != 0); + this.fade.animateTo(1.0F); + this.pop.jumpTo(0.0F); + this.pop.animateTo(1.0F); + } + + public boolean isOpen() { + return this.open; + } + + public boolean isVisible() { + int var2 = 0; + int var1 = 1663284458; + + while (true) { + switch (var1) { + case -1407792023: + var2 = 0; + var1 = 1120937521; + break; + case -186690207: + if (this.fade.value() > 0.01F) { + var1 = 263571182; + } else { + var1 = -1407792023; + } + break; + case 263571182: + var2 = 1; + var1 = 1120937521; + break; + case 1120937521: + return (boolean)((var2) != 0); + case 1663284458: + default: + if (!this.open) { + var1 = -186690207; + } else { + var1 = 263571182; + } + } + } + } + + public void dismiss() { + this.open = (boolean)(((0)) != 0); + this.listener = null; + this.fade.animateTo(0.0F); + this.pop.animateTo(0.0F); + } + + private void choose(yo var1) { + yp var2 = null; + int var3 = 1302831757; + + while (true) { + switch (var3) { + case 22636406: + var2.chosen(var1); + var3 = 1152737214; + break; + case 1152737214: + return; + case 1302831757: + default: + var2 = this.listener; + this.dismiss(); + if (var2 != null) { + var3 = 22636406; + } else { + var3 = 1152737214; + } + } + } + } + + public boolean keyPressed(int var1) { + int var2 = 1815869272; + + while (true) { + switch (var2) { + case -2110163808: + this.choose(yo.KEEP); + return (boolean)(((1)) != 0); + case -1027760264: + if (var1 == (-1209908873 ^ 1209909208) + ((-1209908873 & 1209909208) << 1)) { + var2 = -1000677303; + } else { + var2 = 55258567; + } + break; + case -1000677303: + this.choose(yo.APPLY); + return (boolean)(((1)) != 0); + case -707904828: + return (boolean)(((0)) != 0); + case 7027610: + return (boolean)(((1)) != 0); + case 55258567: + if (var1 == (1486285160 | -1486284904) + (1486285160 & -1486284904)) { + var2 = -2110163808; + } else { + var2 = 7027610; + } + break; + case 664899528: + if (var1 != (-1807253223 ^ 1807253480) + ((-1807253223 & 1807253480) << 1)) { + var2 = -1027760264; + } else { + var2 = -1000677303; + } + break; + case 1815869272: + default: + if (!this.open) { + var2 = -707904828; + } else { + var2 = 664899528; + } + } + } + } + + public void render(asq var1, yw var2, float var3, float var4, float var5, float var6, float var7, mv var8, float var9, float var10) { + float var11 = this.fade.update(); + float var12 = this.pop.update(); + if (!(var11 <= 0.01F) || this.open) { + float var13 = var7 * var11; + var1.drawRoundedRect(var3, var4, var5, var6, asj.all(oc.PANEL), var8.getBackgroundColor().mulAlpha(var13 * 0.72F)); + if (this.open) { + var2.add(var3, var4, var5, var6, this.swallow); + } + + float var14 = Math.min(214.0F, var5 - 20.0F); + float var15 = 81.0F; + float var16 = var3 + (var5 - var14) * 0.5F; + float var17 = var4 + (var6 - var15) * 0.5F; + float var18 = 0.94F + 0.060000002F * var12; + float var19 = var16 + var14 * 0.5F; + float var20 = var17 + var15 * 0.5F; + var1.pushMatrix(); + var1.pose().translate(var19, var20); + var1.pose().scale(var18, var18); + var1.pose().translate(-var19, -var20); + atb.drawShadow( + var1.pose(), var16, var17, var14, var15, pk.shadowSoftness(nz.OVERLAY), zv.radius(), asu.BLACK.withAlpha(var13 * pk.shadowAlpha(nz.OVERLAY)) + ); + zv.surface(var1, var16, var17, var14, var15, zv.radius(), var8.getForegroundColor().getRGBWithAlpha(var13)); + zv.border(var1, var16, var17, var14, var15, var8, var13); + zv.activeBorder(var1, var16, var17, var14, var15, var13, 1.0F, var8.getColor()); + float var21 = var16 + 10.0F; + float var22 = var17 + 10.0F; + ge var23 = gl.ICONS.getFont(6.0F); + ge var24 = asp.font(oe.LABEL_STRONG); + var1.drawText( + var23, + "d", + var23.glyphCenterX( + "d", + var21, + var23.width("d") + ), + var23.glyphCenterY("d", var22, 14.0F), + var8.getColor().mulAlpha(var13) + ); + float var25 = var21 + var23.width("d") + 5.0F; + var1.drawScrollingText( + var24, + "Unsaved theme changes", + var25, + var22 + (14.0F - var24.height()) * 0.5F, + var16 + var14 - 10.0F - var25, + var8.getWhite().mulAlpha(var13), + (boolean)((((-779122983 | 779122984) + (-779122983 & 779122984)) + ) != 0)); + var22 += 14.0F; + ge var26 = asp.font(oe.CAPTION); + var1.drawScrollingText( + var26, + "Apply them before you move on?", + var21, + var22 + (12.0F - var26.height()) * 0.5F, + var14 - 20.0F, + var8.getGrayLight().mulAlpha(var13), + (boolean)((((-100117978 ^ 100117979) + ((-100117978 & 100117979) << 1)) + ) != 0)); + var22 += 20.0F; + float var27 = (var14 - 20.0F - 5.0F * (BUTTONS.length - ((1037998096 ^ -1037998095) + ((1037998096 & -1037998095) << 1)))) / BUTTONS.length; + + for (int var28 = 0; var28 < BUTTONS.length; var28++) { + float var29 = var21 + var28 * (var27 + 5.0F); + this.drawButton(var1, var2, var28, var29, var22, var27, var13, var8, var9, var10); + } + + var22 += 17.0F; + ge var33 = asp.font(oe.MICRO); + var1.drawText( + var33, + "Enter applies - Esc keeps editing", + var16 + + ( + var14 + - var33.width( + "Enter applies - Esc keeps editing" + ) + ) + * 0.5F, + var22 + (10.0F - var33.height()) * 0.5F + 0.5F, + var8.getGray().mulAlpha(var13) + ); + var1.popMatrix(); + this.motion.endFrame(); + } + } + + private void drawButton(asq var1, yw var2, int var3, float var4, float var5, float var6, float var7, mv var8, float var9, float var10) { + yo var11 = null; + int var12 = 0; + int var13 = 0; + float var14 = 0.0F; + int var15 = 0; + asu var16 = null; + asu var17 = null; + ge var18 = null; + ge var19 = null; + String var20 = null; + String var21 = null; + int var23 = 0; + int var24 = 0; + int var22 = 1628994200; + + while (true) { + switch (var22) { + case -1698809343: + return; + case -1643568619: + zb.ghost(var1, var4, var5, var6, 17.0F, asj.all(oc.CONTROL), var8, var7, var14); + var1.drawRoundedBorder(var4, var5, var6, 17.0F, pk.borderHairline(), asj.all(oc.CONTROL), var8.getForegroundLightStroke().mulAlpha(var7)); + var16 = var8.getColor().mulAlpha(var7); + var17 = zb.lift(var8.getGrayLight(), var8, var14).mulAlpha(var7); + var22 = -283400602; + break; + case -1369462806: + var12 = var23; + if (this.open) { + var22 = 2140431234; + } else { + var22 = -602208979; + } + break; + case -1009367395: + var2.add(var4, var5, var6, 17.0F, this.buttonHits[var3]); + var22 = -1698809343; + break; + case -602208979: + var24 = 0; + var22 = 1638446811; + break; + case -554700980: + var23 = 0; + var22 = -1369462806; + break; + case -283400602: + var18 = asp.font(oe.CAPTION); + var19 = gl.ICONS.getFont(5.0F); + var20 = BUTTON_ICONS[var3]; + var21 = BUTTON_LABELS[var3]; + if (zb.contentWidth(var18, var19, var20, var21) <= var6 - 6.0F) { + var22 = 1915910808; + } else { + var22 = 1341730070; + } + break; + case -129711615: + var24 = 1; + var22 = 1638446811; + break; + case 377151580: + var1.drawSurface(aso.CONTROL, var4, var5, var6, 17.0F, asj.all(oc.CONTROL), var8.getColor().mulAlpha(var7)); + zb.primaryHighlight(var1, var4, var5, var6, 17.0F, asj.all(oc.CONTROL), var8.getWhite(), var7, var14); + var16 = var8.getForegroundDark().mulAlpha(var7); + var17 = var16; + var22 = -283400602; + break; + case 404715180: + zb.end(var1, (boolean)((var15) != 0)); + if (this.open) { + var22 = -1009367395; + } else { + var22 = -1698809343; + } + break; + case 784787674: + var23 = 1; + var22 = -1369462806; + break; + case 1341730070: + var1.drawScrollingTextCentered(var18, var21, var4 + 3.0F, var5 + (17.0F - var18.height()) * 0.5F, var6 - 6.0F, var17.getRGB()); + var22 = 404715180; + break; + case 1628994200: + default: + var11 = BUTTONS[var3]; + if (var11 == yo.APPLY) { + var22 = 784787674; + } else { + var22 = -554700980; + } + break; + case 1638446811: + var13 = var24; + var14 = this.motion.hover(var11, (boolean)((var13) != 0)); + var15 = (zb.begin(var1, var4, var5, var6, 17.0F, var14, 5.0F)) ? 1 : 0; + if (var12 != 0) { + var22 = 377151580; + } else { + var22 = -1643568619; + } + break; + case 1915910808: + zb.content(var1, var18, var19, var20, var21, var4, var5, var6, 17.0F, var16, var17, var14); + var22 = 404715180; + break; + case 2140431234: + if (zb.hits(var9, var10, var4, var5, var6, 17.0F, this.motion.peekHover(var11), 5.0F)) { + var22 = -129711615; + } else { + var22 = -602208979; + } + } + } + } + + static { + yo[] var10000 = new yo[3]; + var10000[0] = yo.KEEP; + var10000[1] = yo.DISCARD; + var10000[2] = yo.APPLY; + BUTTONS = var10000; + String[] var0 = new String[3]; + var0[0] = "Keep editing"; + var0[1] = "Discard"; + var0[2] = "Apply"; + BUTTON_LABELS = var0; + String[] var1 = new String[3]; + var1[0] = "A"; + var1[1] = "G"; + var1[2] = "S"; + BUTTON_ICONS = var1; + } +} diff --git a/src/main/java/defpackage/yr.java b/src/main/java/defpackage/yr.java new file mode 100644 index 0000000..45fb68a --- /dev/null +++ b/src/main/java/defpackage/yr.java @@ -0,0 +1,1021 @@ +package defpackage; + +import java.util.Locale; + +public final class yr { + private static final nx[] SURFACES; + private static final String[] SURFACE_NAMES; + private static final String[] SURFACE_PHRASES; + private static final nx[] INKS; + private static final String[] INK_NAMES; + private static final String[] INK_PHRASES; + private static final float[] INK_MINIMUM; + private static final float[] INK_EASY; + private static final int GRADE_EASY = 0; + private static final int GRADE_OKAY = 1; + private static final int GRADE_HARD = 2; + private static final int PAIRS; + private static final int MANY_PROBLEMS = 4; + private static final float FIX_MARGIN = 0.35F; + private static final float LIGHTNESS_FLOOR = 0.02F; + private static final float LIGHTNESS_CEILING = 0.99F; + private static final int SEARCH_STEPS = 18; + private static final int OPAQUE = 255; + private static final asu GOOD = new asu( + 95, + 212, + (1643225117 ^ -1643225012) + ((1643225117 & -1643225012) << 1) + ); + private static final asu WARN = new asu( + 226, + 186, + (264579566 | -264579474) + (264579566 & -264579474) + ); + private static final asu BAD = new asu( + 226, + 96, + (-75409691 | 75409787) + (-75409691 & 75409787) + ); + private static final asu[] LEGEND_TONES; + private static final String[] LEGEND_LABELS; + private static final float SUMMARY_HEIGHT = 30.0F; + private static final float SUMMARY_PAD = 7.0F; + private static final float TITLE_LINE = 12.0F; + private static final float VERDICT_LINE = 10.0F; + private static final float ICON_SIZE = 7.0F; + private static final float ICON_GAP = 6.0F; + private static final float DOT = 3.5F; + private static final float DOT_GAP = 4.0F; + private static final float TOGGLE_ICON_SIZE = 5.0F; + private static final float ROW_GAP = 9.0F; + private static final float FIX_HEIGHT = 14.0F; + private static final float FIX_PAD = 6.0F; + private static final float FIX_ICON_SIZE = 5.0F; + private static final float FIX_GAP = 5.0F; + private static final float DETAIL_GAP = 6.0F; + private static final float INTRO_HEIGHT = 20.0F; + private static final float HEADER_HEIGHT = 11.0F; + private static final float LABEL_COLUMN = 30.0F; + private static final float CELL_HEIGHT = 15.0F; + private static final float CELL_GAP = 2.0F; + private static final float CELL_DOT = 3.0F; + private static final float CELL_DOT_INSET = 2.5F; + private static final float HARD_BORDER = 1.2F; + private static final float BORDER = 1.0F; + private static final float LEGEND_HEIGHT = 14.0F; + private static final float LEGEND_GAP = 8.0F; + private static final float HALF = 0.5F; + private static final float TEN = 10.0F; + private static final int TOOLTIP_KEY_STRIDE = 1000; + private static final String TITLE = "Readability"; + private static final String VERDICT_ALL_GOOD = "All text is easy to read"; + private static final String VERDICT_ONE = "Hard to read in 1 place"; + private static final String VERDICT_MANY_PREFIX = "Hard to read in "; + private static final String VERDICT_MANY_SUFFIX = " places"; + private static final String FIX_LABEL = "Fix"; + private static final String INTRO_FIRST = "Each cell is a text colour on a background of this theme."; + private static final String INTRO_SECOND = "Click a red cell, or press Fix, to make it readable."; + private static final String SAMPLE = "Aa"; + private static final String SUMMARY_TOOLTIP = "Checks that every text colour stands out from every background - click to see where"; + private static final String FIX_TOOLTIP = "Brighten or darken only the hard-to-read text colours, just enough to read - Ctrl+Z undoes it"; + private static final String TOOLTIP_ON = " on "; + private static final String TOOLTIP_CONTRAST = ": contrast "; + private static final String TOOLTIP_TO_ONE = " to 1 - "; + private static final String[] GRADE_PHRASES; + private static final String RATIO_FORMAT = "%.1f"; + private static final String KEY_SUMMARY = "readability.summary"; + private static final String KEY_FIX = "readability.fix"; + private final ct openness = ct.layout(ob.MEDIUM, 0.0F); + private final ct fixReveal = ct.layout(ob.MEDIUM, 0.0F); + private final float[] ratios; + private final int[] grades; + private final yv[] rowFixes; + private boolean expanded; + private mv edited; + private int problems; + private int verdictCount; + private String verdictMany; + private int tooltipKey; + private String tooltipText; + private final yv toggle; + private final yv fixAll; + + public yr() { + this.ratios = new float[PAIRS]; + this.grades = new int[PAIRS]; + this.rowFixes = new yv[INKS.length]; + this.verdictCount = -1; + this.verdictMany = ""; + this.tooltipKey = -1; + this.tooltipText = ""; + this.toggle = (var1x, var3) -> { + this.expanded = (boolean)(((!this.expanded + ? 1: (-364828221 ^ 364828221) + ((-364828221 & 364828221) << 1))) != 0); + return (boolean)(((1)) != 0); + }; + this.fixAll = (var1x, var3) -> { + this.fixEverything(); + return (boolean)(((1)) != 0); + }; + + for (int var1 = 0; var1 < INKS.length; var1++) { + int var2 = var1; + this.rowFixes[var1] = (var2x, var4) -> { + int var6 = -92494591; + + while (true) { + switch (var6) { + case -92494591: + default: + if (this.edited != null) { + var6 = 826035098; + } else { + var6 = 308461581; + } + break; + case 308461581: + return (boolean)(((1)) != 0); + case 826035098: + fixRow(this.edited, var2); + var6 = 308461581; + } + } + }; + } + } + + public float height() { + return 30.0F + this.openness.value() * detailsHeight(); + } + + private static float detailsHeight() { + return 37.0F + 17.0F * INKS.length + 14.0F; + } + + public void render(asq var1, yw var2, float var3, float var4, float var5, float var6, mv var7, mv var8, float var9, float var10, ze var11) { + this.edited = var8; + this.measure(var7); + float var12 = this.openness.update(this.expanded ? 1.0F : 0.0F); + float var13 = this.fixReveal.update(this.problems > 0 ? 1.0F : 0.0F); + this.drawSummary(var1, var2, var3, var4, var5, var6, var7, var9, var10, var11, var13); + if (!(var12 <= 0.001F)) { + float var14 = var4 + 30.0F; + var1.pushClipBounds(var3 - 1.0F, var14, var3 + var5 + 1.0F, var14 + var12 * detailsHeight()); + this.drawDetails(var1, var2, var3, var14 + 6.0F, var5, var6 * var12, var7, var9, var10, var12); + var1.popClip(); + } + } + + private void measure(mv var1) { + this.problems = 0; + + for (int var2 = 0; var2 < INKS.length; var2++) { + asu var3 = INKS[var2].raw(var1); + + for (int var4 = 0; var4 < SURFACES.length; var4++) { + int var5 = var2 * SURFACES.length + var4; + float var6 = nc.contrastRatio(var3, SURFACES[var4].raw(var1)); + this.ratios[var5] = var6; + this.grades[var5] = var6 >= INK_EASY[var2] + ? 0: ( + var6 >= INK_MINIMUM[var2] + ? 1: (-1646496484 ^ 1646496486) + ((-1646496484 & 1646496486) << 1) + ); + if (this.grades[var5] == (-1678988520 | 1678988522) + (-1678988520 & 1678988522)) { + this.problems += 1; + } + } + } + } + + private void drawSummary(asq var1, yw var2, float var3, float var4, float var5, float var6, mv var7, float var8, float var9, ze var10, float var11) { + ge var12 = null; + ge var13 = null; + float var14 = 0.0F; + ge var15 = null; + String var16 = null; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + int var21 = 0; + int var22 = 0; + float var23 = 0.0F; + int var24 = 0; + ge var25 = null; + float var26 = 0.0F; + float var27 = 0.0F; + asu var28 = null; + float var29 = 0.0F; + float var30 = 0.0F; + float var31 = 0.0F; + float var32 = 0.0F; + ge var33 = null; + asu var34 = null; + float var35 = 0.0F; + String var37 = null; + int var38 = 0; + int var39 = 0; + asu var40 = null; + int var36 = 35111099; + + while (true) { + switch (var36) { + case -1870149348: + var40 = GOOD; + var36 = 1813842735; + break; + case -1820595368: + if (this.problems >= (639095479 ^ -639095475) + ((639095479 & -639095475) << 1)) { + var36 = -926857082; + } else { + var36 = 1556632896; + } + break; + case -1768713023: + var38 = 1; + var36 = -82946993; + break; + case -1691595614: + var39 = 0; + var36 = 48961333; + break; + case -959580111: + ass.tooltip( + "readability.summary", + "Checks that every text colour stands out from every background - click to see where", + var3, + var4, + var5, + 30.0F, + asr.ABOVE + ); + var36 = -843632925; + break; + case -926857082: + var40 = BAD; + var36 = 1813842735; + break; + case -843632925: + var2.add(var3, var4, var5, 30.0F, this.toggle); + if (var11 > 0.001F) { + var36 = 821191299; + } else { + var36 = 731128151; + } + break; + case -82946993: + var21 = var38; + if (var21 == 0) { + var36 = 1931716966; + } else { + var36 = -1691595614; + } + break; + case 35111099: + default: + var12 = asp.font(oe.MICRO); + var13 = gl.ICONS.getFont(5.0F); + var14 = 12.0F + + zb.contentWidth( + var12, + var13, + "S", + "Fix" + ); + var15 = gl.ICONS.getFont(5.0F); + if (this.expanded) { + var36 = 500963857; + } else { + var36 = 917904988; + } + break; + case 48961333: + var22 = var39; + var23 = var10.hover( + "readability.summary", (boolean)((var22 + ) != 0)); + var24 = (zb.begin(var1, var3, var4, var5, 30.0F, var23, 9.0F)) ? 1 : 0; + zb.ghost(var1, var3, var4, var5, 30.0F, asj.all(oc.CONTROL), var7, var6, var23); + var25 = gl.ICONS.getFont(7.0F); + var26 = var25.width("r"); + var27 = var3 + 7.0F; + var1.drawText( + var25, + "r", + var25.glyphCenterX("r", var27, var26), + var25.glyphCenterY("r", var4, 30.0F), + var7.getColor().mulAlpha(var6) + ); + var28 = zb.lift(var7.getGrayLight(), var7, var23).mulAlpha(var6); + var1.drawText(var15, var16, var15.glyphCenterX(var16, var18, var17), var15.glyphCenterY(var16, var4, 30.0F), var28); + var29 = var27 + var26 + 6.0F; + var30 = var18 - 6.0F - (var14 + 5.0F) * var11; + var31 = Math.max(var30 - var29, 0.0F); + var32 = var4 + 4.0F; + var33 = asp.font(oe.LABEL_STRONG); + var1.drawScrollingText( + var33, + "Readability", + var29, + var32 + (12.0F - var33.height()) * 0.5F, + var31, + zb.lift(var7.getWhite(), var7, var23).mulAlpha(var6), + (boolean)((((-1776152588 | 1776152589) + (-1776152588 & 1776152589)) + ) != 0)); + if (this.problems == 0) { + var36 = -1870149348; + } else { + var36 = -1820595368; + } + break; + case 500963857: + var37 = "R"; + var36 = 2029314933; + break; + case 731128151: + return; + case 821191299: + this.drawFixButton(var1, var2, var19, var20, var14, var6 * var11, var7, var8, var9, var10, var12, var13); + var36 = 731128151; + break; + case 917904988: + var37 = "Q"; + var36 = 2029314933; + break; + case 1415553579: + var38 = 0; + var36 = -82946993; + break; + case 1556632896: + var40 = WARN; + var36 = 1813842735; + break; + case 1633610042: + if (aqj.isHovered(var8, var9, var19, var20, var14, 14.0)) { + var36 = -1768713023; + } else { + var36 = 1415553579; + } + break; + case 1813842735: + var34 = var40; + var35 = var32 + 12.0F; + var1.drawRoundedRect(var29, var35 + 3.25F, 3.5F, 3.5F, asj.pill(3.5F), var34.mulAlpha(var6)); + var1.drawScrollingText( + var12, + this.verdict(), + var29 + 3.5F + 4.0F, + var35 + (10.0F - var12.height()) * 0.5F, + Math.max(var31 - 3.5F - 4.0F, 0.0F), + var34.mulAlpha(var6), + (boolean)((((-2112803964 ^ 2112803965) + ((-2112803964 & 2112803965) << 1)) + ) != 0)); + zb.end(var1, (boolean)((var24) != 0)); + if (var23 > 0.5F) { + var36 = -959580111; + } else { + var36 = -843632925; + } + break; + case 1931716966: + if (zb.hits( + var8, + var9, + var3, + var4, + var5, + 30.0F, + var10.peekHover( + "readability.summary" + ), + 9.0F + )) { + var36 = 2140398387; + } else { + var36 = -1691595614; + } + break; + case 2029314933: + var16 = var37; + var17 = var15.width(var16); + var18 = var3 + var5 - 7.0F - var17; + var19 = var18 - 5.0F - var14; + var20 = var4 + 8.0F; + if (var11 > 0.001F) { + var36 = 1633610042; + } else { + var36 = 1415553579; + } + break; + case 2140398387: + var39 = 1; + var36 = 48961333; + } + } + } + + private void drawFixButton(asq var1, yw var2, float var3, float var4, float var5, float var6, mv var7, float var8, float var9, ze var10, ge var11, ge var12) { + int var13 = 0; + float var14 = 0.0F; + int var15 = 0; + asu var16 = null; + int var18 = 0; + int var17 = -209651483; + + while (true) { + switch (var17) { + case -1150188229: + return; + case -649907014: + ass.tooltip( + "readability.fix", + "Brighten or darken only the hard-to-read text colours, just enough to read - Ctrl+Z undoes it", + var3, + var4, + var5, + 14.0F, + asr.ABOVE + ); + var17 = -22688306; + break; + case -209651483: + default: + if (this.problems > 0) { + var17 = 1282603080; + } else { + var17 = 1475252434; + } + break; + case -154908119: + var18 = 1; + var17 = 515888068; + break; + case -22688306: + if (this.problems > 0) { + var17 = 1521493510; + } else { + var17 = -1150188229; + } + break; + case 515888068: + var13 = var18; + var14 = var10.hover("readability.fix", (boolean)((var13) != 0)); + boolean var21 = zb.begin(var1, var3, var4, var5, 14.0F, var14, 5.0F); + var1.drawSurface(aso.CONTROL, var3, var4, var5, 14.0F, asj.all(oc.CHIP), var7.getColor().mulAlpha(var6)); + zb.primaryHighlight(var1, var3, var4, var5, 14.0F, asj.all(oc.CHIP), var7.getWhite(), var6, var14); + var16 = var7.getForegroundDark().mulAlpha(var6); + zb.content( + var1, + var11, + var12, + "S", + "Fix", + var3, + var4, + var5, + 14.0F, + var16, + var16, + var14 + ); + zb.end(var1, var21); + if (var14 > 0.5F) { + var17 = -649907014; + } else { + var17 = -22688306; + } + break; + case 1282603080: + if (zb.hits( + var8, + var9, + var3, + var4, + var5, + 14.0F, + var10.peekHover("readability.fix"), + 5.0F + )) { + var17 = -154908119; + } else { + var17 = 1475252434; + } + break; + case 1475252434: + var18 = 0; + var17 = 515888068; + break; + case 1521493510: + var2.add(var3, var4, var5, 14.0F, this.fixAll); + var17 = -1150188229; + } + } + } + + private String verdict() { + int var1 = -1904062012; + + while (true) { + switch (var1) { + case -2061880529: + this.verdictCount = this.problems; + this.verdictMany = "Hard to read in " + this.problems + " places"; + var1 = 1587098058; + break; + case -1904062012: + default: + if (this.problems == 0) { + var1 = 112339453; + } else { + var1 = 101614270; + } + break; + case -1260098550: + if (this.problems != this.verdictCount) { + var1 = -2061880529; + } else { + var1 = 1587098058; + } + break; + case 101614270: + if (this.problems == (-955960828 ^ 955960829) + ((-955960828 & 955960829) << 1)) { + var1 = 1694879273; + } else { + var1 = -1260098550; + } + break; + case 112339453: + return "All text is easy to read"; + case 1587098058: + return this.verdictMany; + case 1694879273: + return "Hard to read in 1 place"; + } + } + } + + private void drawDetails(asq var1, yw var2, float var3, float var4, float var5, float var6, mv var7, float var8, float var9, float var10) { + ge var11 = asp.font(oe.MICRO); + asu var12 = var7.getGray().mulAlpha(var6); + var1.drawScrollingText( + var11, + "Each cell is a text colour on a background of this theme.", + var3, + var4 + (10.0F - var11.height()) * 0.5F, + var5, + var12, + (boolean)((((-1909475900 | 1909475901) + (-1909475900 & 1909475901)) + ) != 0)); + var1.drawScrollingText( + var11, + "Click a red cell, or press Fix, to make it readable.", + var3, + var4 + 10.0F + (10.0F - var11.height()) * 0.5F, + var5, + var12, + (boolean)((((41302936 ^ -41302935) + ((41302936 & -41302935) << 1)) + ) != 0)); + float var13 = var4 + 20.0F; + float var14 = var3 + 30.0F; + float var15 = (var5 - 30.0F - 2.0F * (SURFACES.length - ((327195457 | -327195456) + (327195457 & -327195456)))) / SURFACES.length; + asu var16 = var7.getGrayLight().mulAlpha(var6); + + for (int var17 = 0; var17 < SURFACES.length; var17++) { + float var18 = var14 + var17 * (var15 + 2.0F); + String var19 = SURFACE_NAMES[var17]; + float var20 = Math.min(var11.width(var19), var15); + var1.drawScrollingText( + var11, + var19, + var18 + (var15 - var20) * 0.5F, + var13 + (11.0F - var11.height()) * 0.5F, + var15, + var16, + (boolean)((((1423888039 ^ -1423888038) + ((1423888039 & -1423888038) << 1)) + ) != 0)); + } + + var13 += 11.0F; + ge var25 = asp.font(oe.LABEL_STRONG); + int var26 = var10 >= 0.999F ? 1: 0; + + for (int var27 = 0; var27 < INKS.length; var27++) { + var1.drawScrollingText( + var11, + INK_NAMES[var27], + var3, + var13 + (15.0F - var11.height()) * 0.5F, + 28.0F, + var16, + (boolean)((((1031258126 | -1031258125) + (1031258126 & -1031258125)) + ) != 0)); + asu var28 = INKS[var27].raw(var7); + + for (int var21 = 0; var21 < SURFACES.length; var21++) { + int var22 = var27 * SURFACES.length + var21; + float var23 = var14 + var21 * (var15 + 2.0F); + this.drawCell(var1, var23, var13, var15, var6, var7, var28, SURFACES[var21].raw(var7), this.grades[var22], var25); + if (var26 != 0) { + if (aqj.isHovered(var8, var9, var23, var13, var15, 15.0)) { + ass.tooltip(this, this.cellTooltip(var27, var21, var22), var23, var13, var15, 15.0F, asr.ABOVE); + } + + if (this.grades[var22] == (978657789 | -978657787) + (978657789 & -978657787)) { + var2.add(var23, var13, var15, 15.0F, this.rowFixes[var27]); + } + } + } + + var13 += 17.0F; + } + + this.drawLegend(var1, var3, var13, var6, var11); + } + + private void drawCell(asq var1, float var2, float var3, float var4, float var5, mv var6, asu var7, asu var8, int var9, ge var10) { + var1.drawRoundedRect(var2, var3, var4, 15.0F, asj.all(oc.CHIP), var8.mulAlpha(var5)); + int var11 = var9 == 2? 1: 0; + var1.drawRoundedBorder( + var2, var3, var4, 15.0F, var11 != 0 ? 1.2F : 1.0F, asj.all(oc.CHIP), (var11 != 0 ? BAD : var6.getForegroundLightStroke()).mulAlpha(var5) + ); + float var12 = var10.width("Aa"); + var1.drawText( + var10, + "Aa", + var2 + (var4 - var12) * 0.5F, + var3 + (15.0F - var10.height()) * 0.5F, + var7.mulAlpha(var5) + ); + var1.drawRoundedRect(var2 + var4 - 3.0F - 2.5F, var3 + 2.5F, 3.0F, 3.0F, asj.pill(3.0F), toneOf(var9).mulAlpha(var5)); + } + + private void drawLegend(asq var1, float var2, float var3, float var4, ge var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = 0; + int var10 = -211204357; + + while (true) { + switch (var10) { + case -1791053278: + return; + case -1038927954: + var1.drawRoundedRect(var6, var8, 3.5F, 3.5F, asj.pill(3.5F), LEGEND_TONES[var9].mulAlpha(var4)); + var6 += 7.5F; + var1.drawText(var5, LEGEND_LABELS[var9], var6, var7, LEGEND_TONES[var9].mulAlpha(var4)); + var6 += var5.width(LEGEND_LABELS[var9]) + 8.0F; + var9++; + var10 = 1101778555; + break; + case -211204357: + default: + var6 = var2; + var7 = var3 + (14.0F - var5.height()) * 0.5F; + var8 = var3 + 5.25F; + var9 = 0; + var10 = 1101778555; + break; + case 1101778555: + if (var9 < LEGEND_LABELS.length) { + var10 = -1038927954; + } else { + var10 = -1791053278; + } + } + } + } + + private void fixEverything() { + int var1 = 0; + int var2 = -1697587092; + + while (true) { + switch (var2) { + case -1876323203: + fixRow(this.edited, var1); + var1++; + var2 = -1854781495; + break; + case -1854781495: + if (var1 < INKS.length) { + var2 = -1876323203; + } else { + var2 = -1845396738; + } + break; + case -1845396738: + return; + case -1697587092: + default: + if (this.edited == null) { + var2 = -1519046055; + } else { + var2 = 1695198604; + } + break; + case -1519046055: + return; + case 1695198604: + var1 = 0; + var2 = -1854781495; + } + } + } + + private static void fixRow(mv var0, int var1) { + nx var2 = null; + asu var3 = null; + float var4 = 0.0F; + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = 0; + float var13 = 0.0F; + float var15 = 0.0F; + int var14 = -94591172; + + while (true) { + switch (var14) { + case -1824178693: + var15 = 0.02F; + var14 = 1564377697; + break; + case -1732081396: + var13 = (var11 + var10) * 0.5F; + if (worstContrast(var0, nc.of(var13, var6, var7, (1438801357 ^ -1438801102) + ((1438801357 & -1438801102) << 1))) >= var4) { + var14 = 1857402404; + } else { + var14 = -267175794; + } + break; + case -1063226912: + nd.apply(var0); + return; + case -267175794: + var11 = var13; + var14 = -138837877; + break; + case -254706573: + return; + case -138837877: + var12++; + var14 = 1954261484; + break; + case -94591172: + default: + var2 = INKS[var1]; + var3 = var2.raw(var0); + var4 = INK_MINIMUM[var1] + 0.35F; + if (worstContrast(var0, var3) >= var4) { + var14 = -254706573; + } else { + var14 = 1759745753; + } + break; + case 969894341: + var2.apply(var0, nc.of(var10, var6, var7, (1009275372 | -1009275117) + (1009275372 & -1009275117))); + if (var2 != nx.ACCENT) { + var14 = 1084572306; + } else { + var14 = -1063226912; + } + break; + case 1083889726: + var12 = 0; + var14 = 1954261484; + break; + case 1084572306: + if (var0.getPalette().generated()) { + var14 = 1770522133; + } else { + var14 = -1063226912; + } + break; + case 1381599870: + var15 = 0.99F; + var14 = 1564377697; + break; + case 1564377697: + var10 = var15; + var11 = var5; + if (Math.max(var8, var9) >= var4) { + var14 = 1083889726; + } else { + var14 = 969894341; + } + break; + case 1759745753: + var5 = nc.lightness(var3); + var6 = nc.chroma(var3); + var7 = nc.hue(var3); + var8 = worstContrast(var0, nc.of(0.99F, var6, var7, (-186413541 | 186413796) + (-186413541 & 186413796))); + var9 = worstContrast(var0, nc.of(0.02F, var6, var7, (-738925728 | 738925983) + (-738925728 & 738925983))); + if (var8 >= var9) { + var14 = 1381599870; + } else { + var14 = -1824178693; + } + break; + case 1770522133: + var0.setPalette(var0.getPalette().withLock(var2, (boolean)((((1338181326 ^ -1338181325) + ((1338181326 & -1338181325) << 1))) != 0))); + var14 = -1063226912; + break; + case 1857402404: + var10 = var13; + var14 = -138837877; + break; + case 1954261484: + if (var12 < (1829643883 ^ -1829643865) + ((1829643883 & -1829643865) << 1)) { + var14 = -1732081396; + } else { + var14 = 969894341; + } + } + } + } + + private static float worstContrast(mv var0, asu var1) { + float var2 = 0.0F; + nx[] var3 = null; + int var4 = 0; + int var5 = 0; + Object var6 = null; + int var7 = -65035548; + + while (true) { + switch (var7) { + case -927924651: + var6 = var3[var5]; + var2 = Math.min(var2, nc.contrastRatio(var1, ((nx)var6).raw(var0))); + var5++; + var7 = -451791372; + break; + case -451791372: + if (var5 < var4) { + var7 = -927924651; + } else { + var7 = 946379972; + } + break; + case -65035548: + default: + var2 = Float.MAX_VALUE; + var3 = SURFACES; + var4 = var3.length; + var5 = 0; + var7 = -451791372; + break; + case 946379972: + return var2; + } + } + } + + private String cellTooltip(int var1, int var2, int var3) { + int var4 = 0; + int var5 = 396134135; + + while (true) { + switch (var5) { + case -1952292380: + return this.tooltipText; + case -736295972: + this.tooltipKey = var4; + String var10001 = INK_PHRASES[var1]; + String var10002 = SURFACE_PHRASES[var2]; + Locale var10003 = Locale.US; + String var10004 = "%.1f"; + Object[] var10005 = new Object[1]; + var10005[0] = this.ratios[var3]; + this.tooltipText = var10001 + + " on " + + var10002 + + ": contrast " + + String.format(var10003, var10004, var10005) + + " to 1 - " + + GRADE_PHRASES[this.grades[var3]]; + var5 = -1952292380; + break; + case 396134135: + default: + var4 = var3 * ((1019411800 | -1019410800) + (1019411800 & -1019410800)) + Math.round(this.ratios[var3] * 10.0F); + if (var4 != this.tooltipKey) { + var5 = -736295972; + } else { + var5 = -1952292380; + } + } + } + } + + private static asu toneOf(int var0) { + asu var2 = null; + int var1 = 1929528365; + + while (true) { + switch (var1) { + case -663791839: + if (var0 == (-834501529 | 834501530) + (-834501529 & 834501530)) { + var1 = 1180789234; + } else { + var1 = 1563859084; + } + break; + case 560620772: + var2 = GOOD; + var1 = 1020950406; + break; + case 1020950406: + return var2; + case 1180789234: + var2 = WARN; + var1 = 1020950406; + break; + case 1563859084: + var2 = BAD; + var1 = 1020950406; + break; + case 1929528365: + default: + if (var0 == 0) { + var1 = 560620772; + } else { + var1 = -663791839; + } + } + } + } + + static { + nx[] var10000 = new nx[4]; + var10000[0] = nx.BACKGROUND; + var10000[1] = nx.SURFACE; + var10000[2] = nx.SURFACE_RAISED; + var10000[3] = nx.SURFACE_MUTED; + SURFACES = var10000; + String[] var0 = new String[4]; + var0[0] = "Window"; + var0[1] = "Panel"; + var0[2] = "Raised"; + var0[3] = "Muted"; + SURFACE_NAMES = var0; + String[] var1 = new String[4]; + var1[0] = "the window background"; + var1[1] = "a panel"; + var1[2] = "a raised card"; + var1[3] = "an inactive control"; + SURFACE_PHRASES = var1; + var10000 = new nx[4]; + var10000[0] = nx.ON_SURFACE; + var10000[1] = nx.ON_SURFACE_MUTED; + var10000[2] = nx.ON_SURFACE_FAINT; + var10000[3] = nx.ACCENT; + INKS = var10000; + String[] var3 = new String[4]; + var3[0] = "Text"; + var3[1] = "Muted"; + var3[2] = "Hints"; + var3[3] = "Accent"; + INK_NAMES = var3; + String[] var4 = new String[4]; + var4[0] = "Main text"; + var4[1] = "Secondary text"; + var4[2] = "Hint text"; + var4[3] = "Accent text"; + INK_PHRASES = var4; + float[] var5 = new float[4]; + var5[0] = 4.5F; + var5[1] = 4.5F; + var5[2] = 3.0F; + var5[3] = 3.0F; + INK_MINIMUM = var5; + float[] var6 = new float[4]; + var6[0] = 7.0F; + var6[1] = 7.0F; + var6[2] = 4.5F; + var6[3] = 4.5F; + INK_EASY = var6; + PAIRS = INKS.length * SURFACES.length; + asu[] var7 = new asu[3]; + var7[0] = GOOD; + var7[1] = WARN; + var7[2] = BAD; + LEGEND_TONES = var7; + String[] var8 = new String[3]; + var8[0] = "Easy"; + var8[1] = "Okay"; + var8[2] = "Hard to read"; + LEGEND_LABELS = var8; + String[] var9 = new String[3]; + var9[0] = "easy to read"; + var9[1] = "readable"; + var9[2] = "hard to read, click to fix it"; + GRADE_PHRASES = var9; + } +} diff --git a/src/main/java/defpackage/ys.java b/src/main/java/defpackage/ys.java new file mode 100644 index 0000000..4bd57a4 --- /dev/null +++ b/src/main/java/defpackage/ys.java @@ -0,0 +1,162 @@ +package defpackage; + +import java.util.Locale; + +public final class ys { + private static final float BAR_HEIGHT = 14.0F; + private static final float DIAL_SIZE = 26.0F; + private static final float DIAL_GAP = 6.0F; + private static final float ROW_GAP = 4.0F; + private static final float BORDER = 1.0F; + private static final float SPOKE_THICKNESS = 1.4F; + private static final int SPOKE_STEPS = 5; + private static final float DIAL_KNOB = 4.0F; + private static final float DIAL_INSET = 2.0F; + private static final float RING_ALPHA = 0.4F; + private static final float DEGREES = 180.0F / (float)Math.PI; + private static final float HALF = 0.5F; + private static final float FULL_TURN = 360.0F; + private static final float GRADIENT_SECOND_STOP = 0.33333334F; + private static final float GRADIENT_THIRD_STOP = 0.6666667F; + private static final float RING_HOVER_ALPHA = 1.0F; + private static final float KNOB_HOVER_GROWTH = 1.5F; + private static final String HEX_PREFIX = "#"; + private static final String HEX_FORMAT = "%02X%02X%02X"; + private static final String ANGLE_SUFFIX = "°"; + private static final String DIAL_TOOLTIP = "Drag to turn the accent gradient"; + private static final int HOVER_DIAL = 0; + private final ase hover = new ase(); + private final asi barBounds = new asi(); + private final asi dialBounds = new asi(); + private boolean draggingDial; + + public float height() { + return Math.max(14.0F, 26.0F) + 4.0F + asp.height(oe.MICRO); + } + + public void render(asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8) { + float var9 = var2 + var4 - 26.0F; + float var10 = Math.max(var9 - 6.0F - var2, 1.0F); + float var11 = Math.max(14.0F, 26.0F); + float var12 = var3 + (var11 - 14.0F) * 0.5F; + this.barBounds.set(var2, var12, var10, 14.0F); + this.dialBounds.set(var9, var3 + (var11 - 26.0F) * 0.5F, 26.0F, 26.0F); + asu var13 = var6.getAccent().sample(0.0F).mulAlpha(var5); + asu var14 = var6.getAccent().sample(0.33333334F).mulAlpha(var5); + asu var15 = var6.getAccent().sample(0.6666667F).mulAlpha(var5); + asu var16 = var6.getAccent().sample(1.0F).mulAlpha(var5); + var1.drawRoundedRect(var2, var12, var10 * 0.5F, 14.0F, asj.all(oc.CHIP), ary.of(var13, var13, var14, var14)); + var1.drawRoundedRect(var2 + var10 * 0.5F, var12, var10 * 0.5F, 14.0F, asj.all(oc.CHIP), ary.of(var15, var15, var16, var16)); + var1.drawRoundedBorder(var2, var12, var10, 14.0F, 1.0F, asj.all(oc.CHIP), var6.getForegroundLightStroke().mulAlpha(var5)); + this.drawDial(var1, var6, var5, var7, var8); + this.drawLabels(var1, var6, var2, var3 + var11 + 4.0F, var10, var5); + } + + private void drawDial(asq var1, mv var2, float var3, float var4, float var5) { + int var6 = !this.draggingDial && !this.dialBounds.contains(var4, var5) + ? 0: 1; + float var7 = this.dialBounds.width(); + float var8 = this.dialBounds.x() + var7 * 0.5F; + float var9 = this.dialBounds.y() + var7 * 0.5F; + var1.drawRoundedRect(this.dialBounds.x(), this.dialBounds.y(), var7, var7, asj.pill(var7), var2.getForegroundDark().mulAlpha(var3)); + var1.drawRoundedBorder(this.dialBounds.x(), this.dialBounds.y(), var7, var7, 1.0F, asj.pill(var7), var2.getForegroundLightStroke().mulAlpha(var3)); + float var10 = var2.getAccent().angle() / (180.0F / (float)Math.PI); + float var11 = (float)Math.cos(var10); + float var12 = -((float)Math.sin(var10)); + float var13 = var7 * 0.5F - 2.0F; + asu var14 = var2.getColor().mulAlpha(var3); + + for (int var15 = 1; var15 <= 5; var15++) { + float var16 = var13 * var15 / 5.0F; + var1.drawRoundedRect(var8 + var11 * var16 - 0.7F, var9 + var12 * var16 - 0.7F, 1.4F, 1.4F, asj.pill(1.4F), var14); + } + + float var17 = this.hover.hover(0, (boolean)((var6) != 0)); + float var18 = 4.0F + 1.5F * var17; + var1.drawRoundedRect( + var8 + var11 * var13 - var18 * 0.5F, var9 + var12 * var13 - var18 * 0.5F, var18, var18, asj.pill(var18), var2.getWhite().mulAlpha(var3) + ); + var1.drawRoundedBorder(this.dialBounds.x(), this.dialBounds.y(), var7, var7, 1.0F, asj.pill(var7), var2.getColor().mulAlpha(var3 * (0.4F + 0.6F * var17))); + if (var17 > 0.5F) { + ass.tooltip( + this, + "Drag to turn the accent gradient", + this.dialBounds.x(), + this.dialBounds.y(), + var7, + var7, + asr.LEFT + ); + } + } + + private void drawLabels(asq var1, mv var2, float var3, float var4, float var5, float var6) { + ge var7 = asp.font(oe.MICRO); + asu var8 = var2.getGrayLight().mulAlpha(var6); + String var9 = hex(var2.getColor()); + String var10 = hex(var2.getSecondColor()); + var1.drawText(var7, var9, var3, var4, var8); + var1.drawText(var7, var10, var3 + var5 - var7.width(var10), var4, var8); + String var11 = Math.round(var2.getAccent().angle()) + "°"; + var1.drawText(var7, var11, this.dialBounds.x() + (this.dialBounds.width() - var7.width(var11)) * 0.5F, var4, var8); + String var12 = hex(var2.getMiddleColor()); + var1.drawText(var7, var12, var3 + (var5 - var7.width(var12)) * 0.5F, var4, var8); + } + + public boolean mouseClicked(double var1, double var3, mv var5) { + int var6 = -1115604325; + + while (true) { + switch (var6) { + case -1501956934: + if (this.dialBounds.contains(var1, var3)) { + var6 = -1364862890; + } else { + var6 = -949803971; + } + break; + case -1364862890: + this.draggingDial = (boolean)(((1)) != 0); + this.mouseDragged(var1, var3, var5); + return (boolean)(((1)) != 0); + case -1115604325: + default: + if (this.dialBounds.isValid()) { + var6 = -1501956934; + } else { + var6 = -949803971; + } + break; + case -949803971: + return (boolean)(((0)) != 0); + } + } + } + + public void mouseDragged(double var1, double var3, mv var5) { + if (this.draggingDial && var5 != null) { + float var6 = this.dialBounds.x() + this.dialBounds.width() * 0.5F; + float var7 = this.dialBounds.y() + this.dialBounds.height() * 0.5F; + float var8 = (float)Math.atan2(var7 - var3, var1 - var6) * (180.0F / (float)Math.PI); + var5.setAccent(var5.getAccent().withAngle(var8 < 0.0F ? var8 + 360.0F : var8)); + } + } + + public void mouseReleased() { + this.draggingDial = (boolean)(((0)) != 0); + } + + public boolean isDragging() { + return this.draggingDial; + } + + private static String hex(asu var0) { + Locale var10000 = Locale.US; + String var10001 = "%02X%02X%02X"; + Object[] var10002 = new Object[3]; + var10002[0] = var0.getRed(); + var10002[1] = var0.getGreen(); + var10002[2] = var0.getBlue(); + return "#" + String.format(var10000, var10001, var10002); + } +} diff --git a/src/main/java/defpackage/yt.java b/src/main/java/defpackage/yt.java new file mode 100644 index 0000000..30ce1dd --- /dev/null +++ b/src/main/java/defpackage/yt.java @@ -0,0 +1,130 @@ +package defpackage; + +import java.util.EnumMap; +import java.util.Map; + +public final class yt { + private static final nr[] HARMONIES = nr.values(); + private static final Map LABELS = new EnumMap<>(nr.class); + private static final Map TOOLTIPS = new EnumMap<>(nr.class); + private static final String TITLE = "Harmony"; + private static final int COLUMNS = 3; + private static final float TITLE_HEIGHT = 12.0F; + private static final float CHIP_HEIGHT = 14.0F; + private static final float CHIP_GAP = 3.0F; + private static final float HALF = 0.5F; + private final yv[] hits = new yv[HARMONIES.length]; + private mv bound; + + public yt() { + for (int var1 = 0; var1 < HARMONIES.length; var1++) { + nr var2 = HARMONIES[var1]; + this.hits[var1] = (var2x, var4) -> { + mv var6 = null; + int var7 = -1645360962; + + while (true) { + switch (var7) { + case -1645360962: + default: + var6 = this.bound; + if (var6 == null) { + var7 = 997327579; + } else { + var7 = 1947495838; + } + break; + case 997327579: + return (boolean)(((0)) != 0); + case 1947495838: + var6.setPalette(var6.getPalette().withActiveHarmony(var2)); + nd.apply(var6); + return (boolean)(((1)) != 0); + } + } + }; + } + } + + public float height() { + int var1 = (HARMONIES.length + (186155352 | -186155349) + (186155352 & -186155349) - ((-1450910858 | 1450910859) + (-1450910858 & 1450910859))) + / ((-2097750691 | 2097750694) + (-2097750691 & 2097750694)); + return 12.0F + var1 * 14.0F + (var1 - ((321184310 | -321184309) + (321184310 & -321184309))) * 3.0F; + } + + public void render(asq var1, yw var2, float var3, float var4, float var5, float var6, mv var7, mv var8, float var9, float var10, ze var11) { + this.bound = var8; + ge var12 = asp.font(oe.MICRO); + var1.drawText( + var12, + "Harmony", + var3, + var4 + (12.0F - var12.height()) * 0.5F, + var7.getGrayLight().mulAlpha(var6) + ); + float var13 = (var5 - 6.0F) / 3.0F; + float var14 = var4 + 12.0F; + nr var15 = var8.getPalette().harmony(); + + for (int var16 = 0; var16 < HARMONIES.length; var16++) { + nr var17 = HARMONIES[var16]; + float var18 = var3 + var16 % ((-1246258555 | 1246258558) + (-1246258555 & 1246258558)) * (var13 + 3.0F); + float var19 = var14 + var16 / ((729618345 | -729618342) + (729618345 & -729618342)) * 17.0F; + boolean var20 = zb.hits(var9, var10, var18, var19, var13, 14.0F, var11.peekHover(var17), 3.0F); + float var21 = var11.hover(var17, var20); + float var22 = var11.select( + var17, + ob.FAST, + (boolean)(((var17 == var15 + ? 1: (-1804433967 ^ 1804433967) + ((-1804433967 & 1804433967) << 1)) + ) != 0)); + boolean var23 = zb.begin(var1, var18, var19, var13, 14.0F, var21, 3.0F); + zb.ghost(var1, var18, var19, var13, 14.0F, asj.all(oc.CHIP), var7, var6 * (1.0F - var22), var21); + if (var22 > 0.001F) { + var1.drawRoundedRect(var18, var19, var13, 14.0F, asj.all(oc.CHIP), var7.getColor().mulAlpha(var6 * var22)); + zb.primaryHighlight(var1, var18, var19, var13, 14.0F, asj.all(oc.CHIP), var7.getWhite(), var6 * var22, var21); + } + + asu var24 = asu.lerp(zb.lift(var7.getGrayLight(), var7, var21), var7.getForegroundDark(), var22).mulAlpha(var6); + zb.content(var1, var12, var12, null, LABELS.get(var17), var18, var19, var13, 14.0F, var24, var24, var21); + zb.end(var1, var23); + if (var21 > 0.5F) { + ass.tooltip(var17, TOOLTIPS.get(var17), var18, var19, var13, 14.0F, asr.BELOW); + } + + var2.add(var18, var19, var13, 14.0F, this.hits[var16]); + } + } + + static { + LABELS.put(nr.MONOCHROME, "Mono"); + LABELS.put(nr.ANALOGOUS, "Analog"); + LABELS.put(nr.COMPLEMENT, "Opposite"); + LABELS.put(nr.TRIAD, "Triad"); + LABELS.put(nr.SPLIT, "Split"); + LABELS.put(nr.CUSTOM, "Free"); + TOOLTIPS.put( + nr.MONOCHROME, + "One hue - the gradient only changes brightness" + ); + TOOLTIPS.put( + nr.ANALOGOUS, + "Neighbouring hues for a calm, subtle gradient" + ); + TOOLTIPS.put( + nr.COMPLEMENT, + "The accent and the hue opposite it - strong contrast" + ); + TOOLTIPS.put( + nr.TRIAD, "Three hues spaced evenly around the wheel" + ); + TOOLTIPS.put( + nr.SPLIT, + "The accent plus the two hues beside its opposite" + ); + TOOLTIPS.put( + nr.CUSTOM, + "No rule - drag every stop on the wheel on its own" + ); + } +} diff --git a/src/main/java/defpackage/yu.java b/src/main/java/defpackage/yu.java new file mode 100644 index 0000000..09a7292 --- /dev/null +++ b/src/main/java/defpackage/yu.java @@ -0,0 +1,1147 @@ +package defpackage; + +import java.util.Locale; +import net.minecraft.resources.Identifier; + +public final class yu { + private static final Identifier WHEEL = bz.id("icons/huewheel.png"); + private static final nx[] STOPS; + private static final float MAX_CHROMA = 0.33F; + private static final float BAR_WIDTH = 7.0F; + private static final float BAR_GAP = 6.0F; + private static final float LABEL_HEIGHT = 11.0F; + private static final float HANDLE_SIZE = 8.0F; + private static final float STOP_HANDLE_SIZE = 6.0F; + private static final float HANDLE_BORDER = 1.4F; + private static final float HANDLE_HOVER_GROWTH = 1.5F; + private static final float HANDLE_SHADOW_SOFTNESS = 3.0F; + private static final float HANDLE_SHADOW_ALPHA = 0.45F; + private static final float TARGET_RING_SPREAD = 2.0F; + private static final float TARGET_RING_ALPHA = 0.55F; + private static final float PICK_RADIUS = 7.0F; + private static final float PLOT_INSET = 7.4F; + private static final float GUIDE_DOT = 1.2F; + private static final float GUIDE_SPACING = 3.5F; + private static final float SPOKE_ALPHA = 0.35F; + private static final float EDGE_ALPHA = 0.6F; + private static final float LIGHTNESS_MIN = 0.05F; + private static final float LIGHTNESS_MAX = 0.98F; + private static final float DEGREES = 180.0F / (float)Math.PI; + private static final float HALF = 0.5F; + private static final int OPAQUE = 255; + private static final float HEX_ALPHA = 0.9F; + private static final float RING_THICKNESS = 1.0F; + private static final float RING_IDLE_ALPHA = 0.25F; + private static final float RING_HOVER_ALPHA = 0.9F; + private static final float BAR_HANDLE = 4.5F; + private static final int TARGET_NONE = -1; + private static final int TARGET_WHEEL = 0; + private static final int TARGET_LIGHTNESS = 1; + private static final int HOVER_LIGHTNESS = 0; + private static final int HOVER_WHEEL = 1; + private static final int HOVER_HANDLE_BASE = 2; + private static final int NO_HANDLE = -1; + private static final String HEX_PREFIX = "#"; + private static final String HEX_FORMAT = "%02X%02X%02X"; + private static final String SEPARATOR = " "; + private static final String LIGHTNESS_TOOLTIP = "Drag to lighten or darken"; + private static final String HANDLE_ROTATE_TOOLTIP = " - drag to turn the whole harmony"; + private static final String HANDLE_FREE_TOOLTIP = " - drag to move this stop"; + private final ase hover = new ase(); + private final asi wheelBounds = new asi(); + private final asi lightnessBounds = new asi(); + private final float[] handleX; + private final float[] handleY; + private final boolean[] handleVisible; + private final String[] rotateTooltips; + private final String[] freeTooltips; + private nx target; + private nx dragRole; + private int dragging; + private final float[] trackedHue; + private final float[] trackedChroma; + private final int[] trackedRgb; + private final boolean[] tracked; + private String labelCache; + private nx labelRole; + private int labelRgb; + + public yu() { + this.handleX = new float[STOPS.length]; + this.handleY = new float[STOPS.length]; + this.handleVisible = new boolean[STOPS.length]; + this.rotateTooltips = new String[STOPS.length]; + this.freeTooltips = new String[STOPS.length]; + this.target = nx.ACCENT; + this.dragRole = nx.ACCENT; + this.dragging = -1; + this.trackedHue = new float[nx.COUNT]; + this.trackedChroma = new float[nx.COUNT]; + this.trackedRgb = new int[nx.COUNT]; + this.tracked = new boolean[nx.COUNT]; + this.labelCache = ""; + + for (int var1 = 0; var1 < STOPS.length; var1++) { + this.rotateTooltips[var1] = STOPS[var1].label() + " - drag to turn the whole harmony"; + this.freeTooltips[var1] = STOPS[var1].label() + " - drag to move this stop"; + } + } + + public nx target() { + return this.target; + } + + public void target(nx var1) { + int var2 = -460088674; + + while (true) { + switch (var2) { + case -578749711: + this.target = var1; + var2 = -275769678; + break; + case -460088674: + default: + if (var1 != null) { + var2 = -578749711; + } else { + var2 = -275769678; + } + break; + case -275769678: + return; + } + } + } + + public float height(float var1) { + return var1 + 11.0F; + } + + public float width(float var1) { + return var1 + 6.0F + 7.0F; + } + + public void render(asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8) { + this.wheelBounds.set(var2, var3, var4, var4); + float var9 = var2 + var4 + 6.0F; + this.lightnessBounds.set(var9, var3, 7.0F, var4); + atb.drawRoundedTexture(var1.pose(), WHEEL, var2, var3, var4, var4, asj.pill(var4), asu.WHITE.mulAlpha(var5)); + float var10 = this.hover + .hover( + 1, + (boolean)(((this.dragging != 0 && !this.insideWheel(var7, var8) + ? 0: (-1053809541 ^ 1053809542) + ((-1053809541 & 1053809542) << 1)) + ) != 0)); + var1.drawRoundedBorder(var2, var3, var4, var4, 1.0F, asj.pill(var4), var6.getColor().mulAlpha(var5 * (0.25F + 0.65F * var10))); + float var11 = var2 + var4 * 0.5F; + float var12 = var3 + var4 * 0.5F; + float var13 = plotRadius(var4 * 0.5F); + nr var14 = var6.getPalette().harmony(); + boolean var15 = isAccentRole(this.target); + + for (int var16 = 0; var16 < STOPS.length; var16++) { + this.handleVisible[var16] = (boolean)(((0)) != 0); + } + + if (var15) { + float var22 = this.plottedHue(var6, nx.ACCENT); + float var17 = this.plottedChroma(var6, nx.ACCENT); + + for (int var18 = 0; var18 < STOPS.length; var18++) { + nx var19 = STOPS[var18]; + this.place(var18, var11, var12, var13, this.stopHue(var6, var19, var22), this.stopChroma(var6, var19, var17)); + } + + if (var14.drivesStops()) { + this.drawGuides(var1, var6, var11, var12, var14, var5); + } + } else { + this.place( + 0, + var11, + var12, + var13, + this.plottedHue(var6, this.target), + this.plottedChroma(var6, this.target) + ); + } + + int var23 = this.dragging == 0 ? indexOf(this.dragRole) : this.pickHandle(var7, var8); + + for (int var24 = STOPS.length - (1); var24 >= 0; var24--) { + if (this.handleVisible[var24]) { + nx var26 = var15 ? STOPS[var24] : this.target; + float var27 = this.hover + .hover( + (900209599 | -900209597) + (900209599 & -900209597) + var24, + (boolean)(((var23 == var24 ? 1: (1940046350 | -1940046350) + (1940046350 & -1940046350)) + ) != 0)); + int var20 = var26 == this.target + ? 1: 0; + float var21 = (var20 != 0 ? 8.0F : 6.0F) + 1.5F * var27; + drawHandle(var1, var6, this.handleX[var24], this.handleY[var24], var21, var26.raw(var6), (boolean)((var20) != 0), var5); + if (var15 && var27 > 0.5F && this.dragging == (1653310095 | -1653310096) + (1653310095 & -1653310096)) { + ass.tooltip( + var26, + var14.drivesStops() ? this.rotateTooltips[var24] : this.freeTooltips[var24], + this.handleX[var24] - var21 * 0.5F, + this.handleY[var24] - var21 * 0.5F, + var21, + var21, + asr.ABOVE + ); + } + } + } + + nx var25 = this.lightnessRole(var6); + this.drawLightnessBar(var1, var6, var9, var3, var4, var5, var25.raw(var6), var7, var8); + this.drawLabel(var1, var6, var2, var3 + var4, this.width(var4), var5, this.target, this.target.raw(var6)); + } + + private void place(int var1, float var2, float var3, float var4, float var5, float var6) { + float var7 = var5 / (180.0F / (float)Math.PI); + float var8 = var4 * (Math.min(var6, 0.33F) / 0.33F); + this.handleX[var1] = var2 + (float)Math.cos(var7) * var8; + this.handleY[var1] = var3 - (float)Math.sin(var7) * var8; + this.handleVisible[var1] = (boolean)(((1)) != 0); + } + + private void drawGuides(asq var1, mv var2, float var3, float var4, nr var5, float var6) { + asu var7 = var2.getWhite().mulAlpha(var6 * 0.35F); + + for (int var8 = 0; var8 < STOPS.length; var8++) { + dotted(var1, var3, var4, this.handleX[var8], this.handleY[var8], var7); + } + + asu var9 = var2.getWhite().mulAlpha(var6 * 0.6F); + dotted( + var1, + this.handleX[0], + this.handleY[0], + this.handleX[1], + this.handleY[1], + var9 + ); + dotted( + var1, + this.handleX[1], + this.handleY[1], + this.handleX[2], + this.handleY[2], + var9 + ); + if (var5 == nr.TRIAD || var5 == nr.SPLIT) { + dotted( + var1, + this.handleX[2], + this.handleY[2], + this.handleX[0], + this.handleY[0], + var9 + ); + } + } + + private static void dotted(asq var0, float var1, float var2, float var3, float var4, asu var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = 0; + int var10 = 0; + float var11 = 0.0F; + int var12 = -1466027448; + + while (true) { + switch (var12) { + case -1466027448: + default: + var6 = var3 - var1; + var7 = var4 - var2; + var8 = (float)Math.sqrt(var6 * var6 + var7 * var7); + var9 = (int)(var8 / 3.5F); + var10 = 1; + var12 = 34057455; + break; + case -208896559: + return; + case 34057455: + if (var10 < var9) { + var12 = 1880946744; + } else { + var12 = -208896559; + } + break; + case 1880946744: + var11 = (float)var10 / var9; + var0.drawRoundedRect(var1 + var6 * var11 - 0.6F, var2 + var7 * var11 - 0.6F, 1.2F, 1.2F, asj.pill(1.2F), var5); + var10++; + var12 = 34057455; + } + } + } + + private static void drawHandle(asq var0, mv var1, float var2, float var3, float var4, asu var5, boolean var6, float var7) { + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + int var11 = 940183356; + + while (true) { + switch (var11) { + case -1217340921: + var10 = var4 + 4.0F; + var0.drawRoundedBorder(var8 - 2.0F, var9 - 2.0F, var10, var10, 1.4F, asj.pill(var10), var1.getWhite().mulAlpha(var7 * 0.55F)); + var11 = 1105525377; + break; + case 940183356: + default: + var8 = var2 - var4 * 0.5F; + var9 = var3 - var4 * 0.5F; + atb.drawShadow(var0.pose(), var8, var9, var4, var4, 3.0F, asj.pill(var4), asu.BLACK.withAlpha(var7 * 0.45F)); + if (var6) { + var11 = -1217340921; + } else { + var11 = 1105525377; + } + break; + case 1105525377: + var0.drawRoundedRect(var8, var9, var4, var4, asj.pill(var4), var5.mulAlpha(var7)); + var0.drawRoundedBorder(var8, var9, var4, var4, 1.4F, asj.pill(var4), var1.getWhite().mulAlpha(var7)); + return; + } + } + } + + private void drawLabel(asq var1, mv var2, float var3, float var4, float var5, float var6, nx var7, asu var8) { + ge var9 = null; + float var10 = 0.0F; + int var11 = -1231742725; + + while (true) { + switch (var11) { + case -1816121616: + this.labelRole = var7; + this.labelRgb = var8.getRGB(); + this.labelCache = var7.label() + " " + hex(var8); + var11 = -340198497; + break; + case -1231742725: + default: + if (var7 == this.labelRole) { + var11 = 683937000; + } else { + var11 = -1816121616; + } + break; + case -340198497: + var9 = asp.font(oe.MICRO); + var10 = Math.min(var9.width(this.labelCache), var5); + var1.drawScrollingText( + var9, + this.labelCache, + var3 + (var5 - var10) * 0.5F, + var4 + (11.0F - var9.height()) * 0.5F, + var5, + var2.getGrayLight().mulAlpha(var6 * 0.9F), + (boolean)((((-111905151 | 111905152) + (-111905151 & 111905152)) + ) != 0)); + return; + case 683937000: + if (var8.getRGB() != this.labelRgb) { + var11 = -1816121616; + } else { + var11 = -340198497; + } + } + } + } + + private void drawLightnessBar(asq var1, mv var2, float var3, float var4, float var5, float var6, asu var7, float var8, float var9) { + float var10 = 0.0F; + float var11 = 0.0F; + asu var12 = null; + asu var13 = null; + int var14 = 0; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + int var22 = 0; + int var21 = -202388099; + + while (true) { + switch (var21) { + case -1858317189: + ass.tooltip( + this, + "Drag to lighten or darken", + var3, + var4, + 7.0F, + var5, + asr.LEFT + ); + var21 = -32371528; + break; + case -1573413818: + var22 = 0; + var21 = 1307774318; + break; + case -202388099: + default: + var10 = nc.hue(var7); + var11 = nc.chroma(var7); + var12 = nc.of(0.98F, var11, var10, 255).mulAlpha(var6); + var13 = nc.of(0.05F, var11, var10, 255).mulAlpha(var6); + var1.drawRoundedRect(var3, var4, 7.0F, var5, asj.pill(7.0F), ary.of(var12, var13, var12, var13)); + if (this.dragging != (899842526 ^ -899842525) + ((899842526 & -899842525) << 1)) { + var21 = 2047364639; + } else { + var21 = 1259752075; + } + break; + case -32371528: + return; + case 972520903: + if (this.lightnessBounds.contains(var8, var9)) { + var21 = 1259752075; + } else { + var21 = -1573413818; + } + break; + case 1259752075: + var22 = 1; + var21 = 1307774318; + break; + case 1307774318: + var14 = var22; + var15 = this.hover.hover(0, (boolean)((var14) != 0)); + var1.drawRoundedBorder(var3, var4, 7.0F, var5, 1.0F, asj.pill(7.0F), var2.getColor().mulAlpha(var6 * (0.25F + 0.65F * var15))); + var16 = nc.lightness(var7); + var17 = 1.0F - clamp01((var16 - 0.05F) / 0.93F); + var18 = 4.5F + 1.5F * var15; + var19 = var4 + var17 * var5 - var18 * 0.5F; + var20 = var3 + (7.0F - var18) * 0.5F; + atb.drawShadow(var1.pose(), var20, var19, var18, var18, 3.0F, asj.pill(var18), asu.BLACK.withAlpha(var6 * 0.45F)); + var1.drawRoundedRect(var20, var19, var18, var18, asj.pill(var18), var2.getWhite().mulAlpha(var6)); + if (var15 > 0.5F) { + var21 = -1858317189; + } else { + var21 = -32371528; + } + break; + case 2047364639: + if (this.lightnessBounds.isValid()) { + var21 = 972520903; + } else { + var21 = -1573413818; + } + } + } + } + + public boolean mouseClicked(double var1, double var3, mv var5) { + int var6 = 0; + int var7 = -1754974995; + + while (true) { + switch (var7) { + case -1865129771: + if (var6 != (1712477983 ^ -1712477984) + ((1712477983 & -1712477984) << 1)) { + var7 = -905461851; + } else { + var7 = -316392359; + } + break; + case -1754974995: + default: + if (this.lightnessBounds.isValid()) { + var7 = 1248688144; + } else { + var7 = -896451042; + } + break; + case -932420447: + return (boolean)(((0)) != 0); + case -905461851: + if (isAccentRole(this.target)) { + var7 = 518255643; + } else { + var7 = -316392359; + } + break; + case -896451042: + if (!this.wheelBounds.isValid()) { + var7 = 254774353; + } else { + var7 = 688824235; + } + break; + case -664611981: + if (!this.insideWheel(var1, var3)) { + var7 = -932420447; + } else { + var7 = -1865129771; + } + break; + case -316392359: + this.dragRole = this.target; + this.dragging = 0; + this.mouseDragged(var1, var3, var5); + return (boolean)(((1)) != 0); + case 254774353: + return (boolean)(((0)) != 0); + case 404211219: + this.dragging = 1; + this.mouseDragged(var1, var3, var5); + return (boolean)(((1)) != 0); + case 518255643: + this.dragRole = STOPS[var6]; + this.target = this.dragRole; + this.dragging = 0; + return (boolean)(((1)) != 0); + case 688824235: + var6 = this.pickHandle(var1, var3); + if (var6 == (-2033225243 | 2033225242) + (-2033225243 & 2033225242)) { + var7 = -664611981; + } else { + var7 = -1865129771; + } + break; + case 1248688144: + if (this.lightnessBounds.contains(var1, var3)) { + var7 = 404211219; + } else { + var7 = -896451042; + } + } + } + } + + public void mouseDragged(double var1, double var3, mv var5) { + if (this.dragging != (-623016078 ^ 623016077) + ((-623016078 & 623016077) << 1) && var5 != null) { + nt var6 = var5.getPalette(); + boolean var7 = var6.harmony().drivesStops(); + if (this.dragging == (-801826110 | 801826111) + (-801826110 & 801826111)) { + nx var19 = this.lightnessRole(var5); + float var20 = this.plottedHue(var5, var19); + float var21 = this.plottedChroma(var5, var19); + boolean var22 = this.isTracked(var5, var19); + float var23 = clamp01((float)(var3 - this.lightnessBounds.y()) / this.lightnessBounds.height()); + float var24 = 0.98F - var23 * 0.93F; + this.write(var5, var19, nc.of(var24, var21, var20, (1811896164 ^ -1811895909) + ((1811896164 & -1811895909) << 1))); + if (var22) { + this.track(var5, var19, var20, var21); + } + } else { + float var8 = this.wheelBounds.x() + this.wheelBounds.width() * 0.5F; + float var9 = this.wheelBounds.y() + this.wheelBounds.height() * 0.5F; + float var10 = plotRadius(this.wheelBounds.width() * 0.5F); + float var11 = (float)var1 - var8; + float var12 = var9 - (float)var3; + float var13 = (float)Math.sqrt(var11 * var11 + var12 * var12); + float var14 = nc.normalizeHue((float)Math.atan2(var12, var11) * (180.0F / (float)Math.PI)); + float var15 = clamp01(var13 / Math.max(var10, 1.0F)) * 0.33F; + if (var7 && isAccentRole(this.dragRole)) { + float var25 = nc.normalizeHue(var14 - offsetOf(var6.harmony(), this.dragRole)); + float var17 = Math.min(var15 / chromaScaleOf(this.dragRole), 0.33F); + asu var18 = var5.getColor(); + nx.ACCENT.apply(var5, nc.of(nc.lightness(var18), var17, var25, (-1133515349 ^ 1133515604) + ((-1133515349 & 1133515604) << 1))); + var5.setPalette(var6.withActiveHarmony(var6.harmony())); + nd.apply(var5); + this.track(var5, nx.ACCENT, var25, var17); + } else { + asu var16 = this.dragRole.raw(var5); + this.write(var5, this.dragRole, nc.of(nc.lightness(var16), var15, var14, (1936418270 ^ -1936418015) + ((1936418270 & -1936418015) << 1))); + this.track(var5, this.dragRole, var14, var15); + } + } + } + } + + private void write(mv var1, nx var2, asu var3) { + int var4 = 495162929; + + while (true) { + switch (var4) { + case -1024520361: + var1.setPalette(var1.getPalette().withLock(var2, (boolean)((((-1370659344 | 1370659345) + (-1370659344 & 1370659345))) != 0))); + var4 = -323590143; + break; + case -323590143: + nd.apply(var1); + return; + case -60259324: + if (var1.getPalette().generated()) { + var4 = -1024520361; + } else { + var4 = -323590143; + } + break; + case 495162929: + default: + var2.apply(var1, var3); + if (!isAccentRole(var2)) { + var4 = -60259324; + } else { + var4 = -323590143; + } + } + } + } + + private void track(mv var1, nx var2, float var3, float var4) { + int var5 = var2.ordinal(); + this.trackedHue[var5] = var3; + this.trackedChroma[var5] = var4; + this.trackedRgb[var5] = var2.raw(var1).getRGB(); + this.tracked[var5] = (boolean)(((1)) != 0); + } + + private boolean isTracked(mv var1, nx var2) { + int var3 = 0; + int var5 = 0; + int var4 = -2049583237; + + while (true) { + switch (var4) { + case -2049583237: + default: + var3 = var2.ordinal(); + if (this.tracked[var3]) { + var4 = 952322461; + } else { + var4 = 586646750; + } + break; + case -1991899348: + return (boolean)((var5) != 0); + case 586646750: + var5 = 0; + var4 = -1991899348; + break; + case 952322461: + if (this.trackedRgb[var3] == var2.raw(var1).getRGB()) { + var4 = 955712709; + } else { + var4 = 586646750; + } + break; + case 955712709: + var5 = 1; + var4 = -1991899348; + } + } + } + + private float plottedHue(mv var1, nx var2) { + float var4 = 0.0F; + int var3 = 1458745419; + + while (true) { + switch (var3) { + case 133522831: + var4 = this.trackedHue[var2.ordinal()]; + var3 = 276022106; + break; + case 276022106: + return var4; + case 800084963: + var4 = nc.hue(var2.raw(var1)); + var3 = 276022106; + break; + case 1458745419: + default: + if (this.isTracked(var1, var2)) { + var3 = 133522831; + } else { + var3 = 800084963; + } + } + } + } + + private float plottedChroma(mv var1, nx var2) { + float var4 = 0.0F; + int var3 = 251231231; + + while (true) { + switch (var3) { + case -2099088956: + return var4; + case -453186584: + var4 = nc.chroma(var2.raw(var1)); + var3 = -2099088956; + break; + case 251231231: + default: + if (this.isTracked(var1, var2)) { + var3 = 978676949; + } else { + var3 = -453186584; + } + break; + case 978676949: + var4 = this.trackedChroma[var2.ordinal()]; + var3 = -2099088956; + } + } + } + + private static float plotRadius(float var0) { + return Math.max(var0 - 7.4F, 1.0F); + } + + private nx lightnessRole(mv var1) { + nx var3 = null; + int var2 = -909985269; + + while (true) { + switch (var2) { + case -1643736940: + var3 = this.target; + var2 = -961585436; + break; + case -961585436: + return var3; + case -909985269: + default: + if (isAccentRole(this.target)) { + var2 = 376809117; + } else { + var2 = -1643736940; + } + break; + case 376809117: + if (var1.getPalette().harmony().drivesStops()) { + var2 = 1515073890; + } else { + var2 = -1643736940; + } + break; + case 1515073890: + var3 = nx.ACCENT; + var2 = -961585436; + } + } + } + + public void mouseReleased() { + this.dragging = -1; + } + + public boolean isDragging() { + int var2 = 0; + int var1 = 285924158; + + while (true) { + switch (var1) { + case 285924158: + default: + if (this.dragging != (-141518688 | 141518687) + (-141518688 & 141518687)) { + var1 = 1698743680; + } else { + var1 = 1631307475; + } + break; + case 1631307475: + var2 = 0; + var1 = 1937808731; + break; + case 1698743680: + var2 = 1; + var1 = 1937808731; + break; + case 1937808731: + return (boolean)((var2) != 0); + } + } + } + + private int pickHandle(double var1, double var3) { + int var5 = 0; + double var6 = 0.0; + int var8 = 0; + double var9 = 0.0; + double var11 = 0.0; + double var13 = 0.0; + int var15 = -476861733; + + while (true) { + switch (var15) { + case -2072791261: + var15 = 2108561174; + break; + case -1510021256: + var5 = -1; + var6 = 49.0; + var8 = 0; + var15 = -343666963; + break; + case -1269662965: + var6 = var13; + var5 = var8; + var15 = 2108561174; + break; + case -1168909781: + return var5; + case -593770520: + return -1; + case -476861733: + default: + if (!isAccentRole(this.target)) { + var15 = -593770520; + } else { + var15 = -1510021256; + } + break; + case -343666963: + if (var8 < STOPS.length) { + var15 = 671874559; + } else { + var15 = -1168909781; + } + break; + case 671874559: + if (!this.handleVisible[var8]) { + var15 = -2072791261; + } else { + var15 = 1569619491; + } + break; + case 1569619491: + var9 = var1 - this.handleX[var8]; + var11 = var3 - this.handleY[var8]; + var13 = var9 * var9 + var11 * var11; + if (var13 <= var6) { + var15 = -1269662965; + } else { + var15 = 2108561174; + } + break; + case 2108561174: + var8++; + var15 = -343666963; + } + } + } + + private static int indexOf(nx var0) { + int var1 = 0; + int var2 = -267065316; + + while (true) { + switch (var2) { + case -1961146817: + var1++; + var2 = 75947841; + break; + case -515740129: + return -1; + case -267065316: + default: + var1 = 0; + var2 = 75947841; + break; + case -51854547: + return var1; + case 75947841: + if (var1 < STOPS.length) { + var2 = 1748009318; + } else { + var2 = -515740129; + } + break; + case 1748009318: + if (STOPS[var1] == var0) { + var2 = -51854547; + } else { + var2 = -1961146817; + } + } + } + } + + private static float offsetOf(nr var0, nx var1) { + int var2 = 1299678166; + + while (true) { + switch (var2) { + case -1439484330: + return 0.0F; + case -1437348195: + return var0.endOffset(); + case 1299678166: + default: + if (var1 == nx.ACCENT_MIDDLE) { + var2 = 1444736484; + } else { + var2 = 1713110528; + } + break; + case 1444736484: + return var0.middleOffset(); + case 1713110528: + if (var1 == nx.ACCENT_END) { + var2 = -1437348195; + } else { + var2 = -1439484330; + } + } + } + } + + private static float chromaScaleOf(nx var0) { + int var1 = -1096418735; + + while (true) { + switch (var1) { + case -2053351152: + if (var0 == nx.ACCENT_END) { + var1 = -311776111; + } else { + var1 = -1028635883; + } + break; + case -1096418735: + default: + if (var0 == nx.ACCENT_MIDDLE) { + var1 = -862519286; + } else { + var1 = -2053351152; + } + break; + case -1028635883: + return 1.0F; + case -862519286: + return 0.96F; + case -311776111: + return 0.92F; + } + } + } + + private float stopHue(mv var1, nx var2, float var3) { + nt var4 = null; + int var5 = 1839342463; + + while (true) { + switch (var5) { + case -1716782869: + if (var4.harmony().drivesStops()) { + var5 = 1472812842; + } else { + var5 = 1118342212; + } + break; + case 114541193: + return nc.normalizeHue(var3 + offsetOf(var4.harmony(), var2)); + case 1118342212: + return this.plottedHue(var1, var2); + case 1472812842: + if (var4.locked(var2)) { + var5 = 1118342212; + } else { + var5 = 114541193; + } + break; + case 1557580922: + return var3; + case 1839342463: + default: + var4 = var1.getPalette(); + if (var2 == nx.ACCENT) { + var5 = 1557580922; + } else { + var5 = -1716782869; + } + } + } + } + + private float stopChroma(mv var1, nx var2, float var3) { + nt var4 = null; + int var5 = -465878648; + + while (true) { + switch (var5) { + case -1405759819: + if (var4.locked(var2)) { + var5 = -454602759; + } else { + var5 = -16463310; + } + break; + case -465878648: + default: + var4 = var1.getPalette(); + if (var2 == nx.ACCENT) { + var5 = 275458527; + } else { + var5 = 468474730; + } + break; + case -454602759: + return this.plottedChroma(var1, var2); + case -16463310: + return var3 * chromaScaleOf(var2); + case 275458527: + return var3; + case 468474730: + if (var4.harmony().drivesStops()) { + var5 = -1405759819; + } else { + var5 = -454602759; + } + } + } + } + + private static boolean isAccentRole(nx var0) { + int var2 = 0; + int var1 = -587783975; + + while (true) { + switch (var1) { + case -1789705560: + var2 = 1; + var1 = 1757915620; + break; + case -1674688967: + if (var0 != nx.ACCENT_MIDDLE) { + var1 = 1106407601; + } else { + var1 = -1789705560; + } + break; + case -990127682: + var2 = 0; + var1 = 1757915620; + break; + case -587783975: + default: + if (var0 != nx.ACCENT) { + var1 = -1674688967; + } else { + var1 = -1789705560; + } + break; + case 1106407601: + if (var0 == nx.ACCENT_END) { + var1 = -1789705560; + } else { + var1 = -990127682; + } + break; + case 1757915620: + return (boolean)((var2) != 0); + } + } + } + + private boolean insideWheel(double var1, double var3) { + float var5 = 0.0F; + float var6 = 0.0F; + float var7 = 0.0F; + double var8 = 0.0; + double var10 = 0.0; + int var13 = 0; + int var12 = -1154410247; + + while (true) { + switch (var12) { + case -2036697207: + var5 = this.wheelBounds.x() + this.wheelBounds.width() * 0.5F; + var6 = this.wheelBounds.y() + this.wheelBounds.height() * 0.5F; + var7 = this.wheelBounds.width() * 0.5F; + var8 = var1 - var5; + var10 = var3 - var6; + if (var8 * var8 + var10 * var10 <= var7 * var7) { + var12 = 41916877; + } else { + var12 = -518674875; + } + break; + case -1723005003: + return (boolean)(((0)) != 0); + case -1154410247: + default: + if (!this.wheelBounds.isValid()) { + var12 = -1723005003; + } else { + var12 = -2036697207; + } + break; + case -518674875: + var13 = 0; + var12 = 14767320; + break; + case 14767320: + return (boolean)((var13) != 0); + case 41916877: + var13 = 1; + var12 = 14767320; + } + } + } + + private static String hex(asu var0) { + Locale var10000 = Locale.US; + String var10001 = "%02X%02X%02X"; + Object[] var10002 = new Object[3]; + var10002[0] = var0.getRed(); + var10002[1] = var0.getGreen(); + var10002[2] = var0.getBlue(); + return "#" + String.format(var10000, var10001, var10002); + } + + private static float clamp01(float var0) { + float var2 = 0.0F; + int var1 = -1170585057; + + while (true) { + switch (var1) { + case -1544728607: + var2 = 0.0F; + var1 = 923445761; + break; + case -1170585057: + default: + if (var0 < 0.0F) { + var1 = -1544728607; + } else { + var1 = 1867222566; + } + break; + case -390790099: + var2 = 1.0F; + var1 = 923445761; + break; + case 657188238: + var2 = var0; + var1 = 923445761; + break; + case 923445761: + return var2; + case 1867222566: + if (var0 > 1.0F) { + var1 = -390790099; + } else { + var1 = 657188238; + } + } + } + } + + static { + nx[] var10000 = new nx[3]; + var10000[0] = nx.ACCENT; + var10000[1] = nx.ACCENT_MIDDLE; + var10000[2] = nx.ACCENT_END; + STOPS = var10000; + } +} diff --git a/src/main/java/defpackage/yv.java b/src/main/java/defpackage/yv.java new file mode 100644 index 0000000..63fa762 --- /dev/null +++ b/src/main/java/defpackage/yv.java @@ -0,0 +1,6 @@ +package defpackage; + +@FunctionalInterface +public interface yv { + boolean act(double var1, double var3); +} diff --git a/src/main/java/defpackage/yw.java b/src/main/java/defpackage/yw.java new file mode 100644 index 0000000..be01c98 --- /dev/null +++ b/src/main/java/defpackage/yw.java @@ -0,0 +1,185 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.List; + +public final class yw { + private static final float NO_CLIP = Float.MAX_VALUE; + private final asl bounds = new asl(); + private final List actions = new ArrayList<>(); + private float clipLeft = -Float.MAX_VALUE; + private float clipTop = -Float.MAX_VALUE; + private float clipRight = Float.MAX_VALUE; + private float clipBottom = Float.MAX_VALUE; + + public void clear() { + this.bounds.clear(); + this.actions.clear(); + this.clipReset(); + } + + public void clip(float var1, float var2, float var3, float var4) { + this.clipLeft = var1; + this.clipTop = var2; + this.clipRight = var3; + this.clipBottom = var4; + } + + public void clipReset() { + this.clipLeft = -Float.MAX_VALUE; + this.clipTop = -Float.MAX_VALUE; + this.clipRight = Float.MAX_VALUE; + this.clipBottom = Float.MAX_VALUE; + } + + public void add(float var1, float var2, float var3, float var4, yv var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 135444568; + + while (true) { + switch (var10) { + case -2086102405: + return; + case -1119244053: + if (var5 == null) { + var10 = -2086102405; + } else { + var10 = 1944370574; + } + break; + case 52965967: + if (var9 <= var7) { + var10 = 927743277; + } else { + var10 = 2145520344; + } + break; + case 135444568: + default: + if (!(var3 <= 0.0F)) { + var10 = 1111092180; + } else { + var10 = -2086102405; + } + break; + case 927743277: + return; + case 1111092180: + if (!(var4 <= 0.0F)) { + var10 = -1119244053; + } else { + var10 = -2086102405; + } + break; + case 1944370574: + var6 = Math.max(var1, this.clipLeft); + var7 = Math.max(var2, this.clipTop); + var8 = Math.min(var1 + var3, this.clipRight); + var9 = Math.min(var2 + var4, this.clipBottom); + if (!(var8 <= var6)) { + var10 = 52965967; + } else { + var10 = 927743277; + } + break; + case 2145520344: + this.bounds.add(var6, var7, var8 - var6, var9 - var7); + this.actions.add(var5); + return; + } + } + } + + public void add(float var1, float var2, float var3, float var4, Runnable var5) { + this.add(var1, var2, var3, var4, (var1x, var3x) -> { + var5.run(); + return (boolean)(((1)) != 0); + }); + } + + public boolean click(double var1, double var3) { + int var5 = 0; + int var6 = 1662246176; + + while (true) { + switch (var6) { + case -1523495783: + if (this.actions.get(var5).act(var1, var3)) { + var6 = -1254866853; + } else { + var6 = 2008282783; + } + break; + case -1358121236: + return (boolean)(((0)) != 0); + case -1254866853: + return (boolean)(((1)) != 0); + case -429894378: + if (var5 >= 0) { + var6 = 304298733; + } else { + var6 = -1358121236; + } + break; + case 304298733: + if (this.bounds.contains(var5, var1, var3)) { + var6 = -1523495783; + } else { + var6 = 2008282783; + } + break; + case 1662246176: + default: + var5 = this.actions.size() - (1); + var6 = -429894378; + break; + case 2008282783: + var5--; + var6 = -429894378; + } + } + } + + public boolean contains(double var1, double var3) { + int var5 = 0; + int var6 = -1602933193; + + while (true) { + switch (var6) { + case -2140916655: + if (this.bounds.contains(var5, var1, var3)) { + var6 = -585886468; + } else { + var6 = 1333315427; + } + break; + case -1602933193: + default: + var5 = this.actions.size() - (1); + var6 = -1129553425; + break; + case -1129553425: + if (var5 >= 0) { + var6 = -2140916655; + } else { + var6 = -203110548; + } + break; + case -585886468: + return (boolean)(((1)) != 0); + case -203110548: + return (boolean)(((0)) != 0); + case 1333315427: + var5--; + var6 = -1129553425; + } + } + } + + public int size() { + return this.actions.size(); + } +} diff --git a/src/main/java/defpackage/yx.java b/src/main/java/defpackage/yx.java new file mode 100644 index 0000000..ad440fe --- /dev/null +++ b/src/main/java/defpackage/yx.java @@ -0,0 +1,404 @@ +package defpackage; + +import java.util.Locale; + +public final class yx { + private static final ob[] ROLES = ob.values(); + private static final String[] ROLE_LABELS = roleLabels(); + private static final float TITLE_HEIGHT = 14.0F; + private static final float ROW_HEIGHT = 11.0F; + private static final float TRACK_HEIGHT = 2.0F; + private static final float DOT_SIZE = 5.0F; + private static final float LABEL_WIDTH = 42.0F; + private static final float LABEL_GAP = 5.0F; + private static final float VALUE_WIDTH = 26.0F; + private static final float BUTTON_HEIGHT = 16.0F; + private static final float BUTTON_PAD = 7.0F; + private static final float BUTTON_ICON_GAP = 4.0F; + private static final float BUTTON_GAP = 6.0F; + private static final float ICON_SIZE = 5.5F; + private static final long REPLAY_DELAY_MILLIS = 700L; + private static final float TRACK_ALPHA = 0.2F; + private static final float PLATE_IDLE_ALPHA = 0.08F; + private static final float PLATE_HOVER_ALPHA = 0.22F; + private static final float TITLE_RULE_GAP = 5.0F; + private static final float TITLE_RULE_HEIGHT = 1.0F; + private static final float HALF = 0.5F; + private static final String TITLE = "Role timings"; + private static final String MILLIS_SUFFIX = " ms"; + private static final String PLAY_LABEL = "Replay"; + private static final String PLAY_TOOLTIP = "Replay every motion role with the current timings"; + private final ct[] springs = new ct[ROLES.length]; + private final asi playButton = new asi(); + private long settledAt; + private boolean forward; + + public yx() { + for (int var1 = 0; var1 < ROLES.length; var1++) { + this.springs[var1] = ct.layout(ROLES[var1], 0.0F); + } + } + + public float height() { + return 14.0F + 11.0F * ROLES.length + 6.0F + 16.0F; + } + + public void render(asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8, ze var9) { + ge var10 = null; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = 0; + int var15 = 0; + float var16 = 0.0F; + ct var17 = null; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + String var21 = null; + int var22 = -1157820630; + + while (true) { + switch (var22) { + case -1157820630: + default: + this.drawTitle(var1, var2, var3, var4, var5, var6); + var10 = asp.font(oe.MICRO); + var11 = var3 + 14.0F; + var12 = var2 + 42.0F + 5.0F; + var13 = Math.max(var4 - 42.0F - 5.0F - 26.0F - 5.0F, 1.0F); + var14 = 1; + var15 = 0; + var22 = 1319308016; + break; + case 118816851: + var1.drawText(var10, ROLE_LABELS[var15], var2, var16 + (11.0F - var10.height()) * 0.5F, var6.getGrayLight().mulAlpha(var5)); + var19 = var16 + 4.5F; + var1.drawRoundedRect(var12, var19, var13, 2.0F, asj.pill(2.0F), var6.getWhite().mulAlpha(var5 * 0.2F)); + var1.drawRoundedRect(var12, var19, var13 * var18, 2.0F, asj.pill(2.0F), var6.getColor().mulAlpha(var5)); + var20 = var12 + var13 * var18 - 2.5F; + var1.drawRoundedRect(var20, var16 + 3.0F, 5.0F, 5.0F, asj.pill(5.0F), var6.getWhite().mulAlpha(var5)); + var21 = var6.getMotion().duration(ROLES[var15]) + " ms"; + var1.drawText(var10, var21, var2 + var4 - var10.width(var21), var16 + (11.0F - var10.height()) * 0.5F, var6.getGray().mulAlpha(var5)); + var15++; + var22 = 1319308016; + break; + case 509472436: + var16 = var11 + var15 * 11.0F; + var17 = this.springs[var15]; + var18 = clamp01(var17.update()); + if (!var17.isSettled()) { + var22 = 1598081308; + } else { + var22 = 118816851; + } + break; + case 1319308016: + if (var15 < ROLES.length) { + var22 = 509472436; + } else { + var22 = 1478158917; + } + break; + case 1478158917: + this.advance((boolean)((var14) != 0)); + this.drawPlayButton(var1, var2, var11 + 11.0F * ROLES.length + 6.0F, var5, var6, var7, var8, var9); + return; + case 1598081308: + var14 = 0; + var22 = 118816851; + } + } + } + + private void drawTitle(asq var1, float var2, float var3, float var4, float var5, mv var6) { + ge var7 = null; + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = -1878447657; + + while (true) { + switch (var10) { + case -1878447657: + default: + var7 = asp.font(oe.MICRO); + var1.drawText( + var7, + "Role timings", + var2, + var3 + (14.0F - var7.height()) * 0.5F, + var6.getGrayLight().mulAlpha(var5) + ); + var8 = var2 + var7.width("Role timings") + 5.0F; + var9 = Math.max(var2 + var4 - var8, 0.0F); + if (var9 > 0.0F) { + var10 = 560619048; + } else { + var10 = -1522124459; + } + break; + case -1522124459: + return; + case 560619048: + var1.drawRect(var8, var3 + 7.0F - 0.5F, var9, 1.0F, var6.getForegroundStroke().mulAlpha(var5)); + var10 = -1522124459; + } + } + } + + private void advance(boolean var1) { + long var2 = (-7790841911469396239L ^ 7790841911469396239L) + ((-7790841911469396239L & 7790841911469396239L) << 1); + int var4 = -1584028290; + + while (true) { + switch (var4) { + case -1768544017: + this.play(); + var4 = -458729153; + break; + case -1700710021: + this.settledAt = (1772910521355510036L ^ -1772910521355510036L) + ((1772910521355510036L & -1772910521355510036L) << 1); + return; + case -1584028290: + default: + var2 = System.currentTimeMillis(); + if (!var1) { + var4 = -1700710021; + } else { + var4 = -1023337897; + } + break; + case -1023337897: + if (this.settledAt == (4614491691985533066L | -4614491691985533066L) + (4614491691985533066L & -4614491691985533066L)) { + var4 = 2075838789; + } else { + var4 = -990816848; + } + break; + case -990816848: + if (var2 - this.settledAt >= (-8420094166376368225L ^ 8420094166376368925L) + ((-8420094166376368225L & 8420094166376368925L) << 1)) { + var4 = -1768544017; + } else { + var4 = -458729153; + } + break; + case -458729153: + return; + case 2075838789: + this.settledAt = var2; + return; + } + } + } + + private void drawPlayButton(asq var1, float var2, float var3, float var4, mv var5, float var6, float var7, ze var8) { + ge var9 = null; + ge var10 = null; + float var11 = 0.0F; + int var12 = 0; + float var13 = 0.0F; + asu var14 = null; + int var16 = 0; + int var15 = -409761809; + + while (true) { + switch (var15) { + case -1580649932: + var16 = 0; + var15 = -644163832; + break; + case -644163832: + var12 = var16; + var13 = var8.hover(this, (boolean)((var12) != 0)); + var1.drawRoundedRect(var2, var3, var11, 16.0F, asj.all(oc.CONTROL), var5.getWhite().mulAlpha(var4 * 0.08F)); + var1.drawRoundedRect(var2, var3, var11, 16.0F, asj.all(oc.CONTROL), var5.getColor().mulAlpha(var4 * 0.22F * var13)); + var14 = asu.lerp(var5.getGrayLight(), var5.getWhite(), var13).mulAlpha(var4); + var1.drawText( + var10, + "A", + var2 + 7.0F, + var3 + (16.0F - var10.height()) * 0.5F, + var5.getColor().mulAlpha(var4) + ); + var1.drawText( + var9, + "Replay", + var2 + 7.0F + var10.width("A") + 4.0F, + var3 + (16.0F - var9.height()) * 0.5F, + var14 + ); + if (var13 > 0.5F) { + var15 = 1440566725; + } else { + var15 = -71407395; + } + break; + case -618327291: + if (var7 <= var3 + 16.0F) { + var15 = 1915306747; + } else { + var15 = -1580649932; + } + break; + case -409761809: + default: + var9 = asp.font(oe.MICRO); + var10 = gl.ICONS.getFont(5.5F); + var11 = 14.0F + + var10.width("A") + + 4.0F + + var9.width("Replay"); + this.playButton.set(var2, var3, var11, 16.0F); + if (var6 >= var2) { + var15 = 1348980281; + } else { + var15 = -1580649932; + } + break; + case -71407395: + return; + case 1348980281: + if (var6 <= var2 + var11) { + var15 = 1669395380; + } else { + var15 = -1580649932; + } + break; + case 1440566725: + ass.tooltip( + this, + "Replay every motion role with the current timings", + var2, + var3, + var11, + 16.0F, + asr.RIGHT + ); + var15 = -71407395; + break; + case 1669395380: + if (var7 >= var3) { + var15 = -618327291; + } else { + var15 = -1580649932; + } + break; + case 1915306747: + var16 = 1; + var15 = -644163832; + } + } + } + + public boolean mouseClicked(double var1, double var3) { + int var5 = 759605021; + + while (true) { + switch (var5) { + case -1808632279: + return (boolean)(((0)) != 0); + case -929816653: + this.play(); + return (boolean)(((1)) != 0); + case 50057976: + if (!this.playButton.contains(var1, var3)) { + var5 = -1808632279; + } else { + var5 = -929816653; + } + break; + case 759605021: + default: + if (this.playButton.isValid()) { + var5 = 50057976; + } else { + var5 = -1808632279; + } + } + } + } + + public void play() { + this.forward = (boolean)(((!this.forward + ? 1: (-182303643 | 182303643) + (-182303643 & 182303643))) != 0); + this.settledAt = (4686575399060015552L ^ -4686575399060015552L) + ((4686575399060015552L & -4686575399060015552L) << 1); + ct[] var1 = this.springs; + int var2 = var1.length; + + for (int var3 = 0; var3 < var2; var3++) { + ct var4 = var1[var3]; + var4.animateTo(this.forward ? 1.0F : 0.0F); + } + } + + private static String[] roleLabels() { + String[] var0 = null; + int var1 = 0; + String var2 = null; + int var3 = -946485872; + + while (true) { + switch (var3) { + case -1512631977: + return var0; + case -946485872: + default: + var0 = new String[ROLES.length]; + var1 = 0; + var3 = 360412770; + break; + case -836113141: + var2 = ROLES[var1].name().toLowerCase(Locale.ROOT); + var0[var1] = Character.toUpperCase(var2.charAt((546922658 | -546922658) + (546922658 & -546922658))) + + var2.substring((110307237 | -110307236) + (110307237 & -110307236)); + var1++; + var3 = 360412770; + break; + case 360412770: + if (var1 < ROLES.length) { + var3 = -836113141; + } else { + var3 = -1512631977; + } + } + } + } + + private static float clamp01(float var0) { + float var2 = 0.0F; + int var1 = -1493692042; + + while (true) { + switch (var1) { + case -1493692042: + default: + if (var0 < 0.0F) { + var1 = 1764672685; + } else { + var1 = -146094884; + } + break; + case -1137927073: + return var2; + case -146094884: + if (var0 > 1.0F) { + var1 = 779809810; + } else { + var1 = 1420148501; + } + break; + case 779809810: + var2 = 1.0F; + var1 = -1137927073; + break; + case 1420148501: + var2 = var0; + var1 = -1137927073; + break; + case 1764672685: + var2 = 0.0F; + var1 = -1137927073; + } + } + } +} diff --git a/src/main/java/defpackage/yy.java b/src/main/java/defpackage/yy.java new file mode 100644 index 0000000..70d62a9 --- /dev/null +++ b/src/main/java/defpackage/yy.java @@ -0,0 +1,462 @@ +package defpackage; + +import java.util.EnumMap; +import java.util.Map; +import java.util.function.Consumer; + +public final class yy { + private static final String[] SECTION_TITLES; + private static final nx[][] SECTIONS; + private static final Map NAMES = new EnumMap<>(nx.class); + private static final String TOOLTIP_SELECT = " - click to edit it on the wheel"; + private static final String TOOLTIP_AUTO = ". Follows the accent automatically"; + private static final String TOOLTIP_PINNED = ". Pinned - the palette generator will not change it"; + private static final String PIN_TOOLTIP_OFF = "Pin this colour so the palette generator leaves it alone"; + private static final String PIN_TOOLTIP_ON = "Unpin - let the palette generator follow the accent again"; + private static final String HINT = "Pick a colour, then drag on the wheel above to change it"; + private static final int COLUMNS = 2; + private static final float HINT_HEIGHT = 12.0F; + private static final float TITLE_HEIGHT = 13.0F; + private static final float TITLE_RULE_GAP = 5.0F; + private static final float TITLE_RULE_HEIGHT = 1.0F; + private static final float ROW_HEIGHT = 15.0F; + private static final float ROW_GAP = 3.0F; + private static final float SECTION_GAP = 5.0F; + private static final float SWATCH = 9.0F; + private static final float SWATCH_INSET = 3.0F; + private static final float LABEL_GAP = 5.0F; + private static final float PIN_SIZE = 5.0F; + private static final float PIN_HIT = 11.0F; + private static final float PIN_INSET = 3.0F; + private static final float BORDER = 1.0F; + private static final float SELECTED_PLATE_ALPHA = 0.22F; + private static final float PIN_IDLE_ALPHA = 0.35F; + private static final float HALF = 0.5F; + private final Map selectHits = new EnumMap<>(nx.class); + private final Map pinHits = new EnumMap<>(nx.class); + private final Map tooltipCache = new EnumMap<>(nx.class); + private final Map tooltipPinned = new EnumMap<>(nx.class); + private mv edited; + + public yy(Consumer var1) { + nx[] var2 = nx.values(); + int var3 = var2.length; + + for (int var4 = 0; var4 < var3; var4++) { + nx var5 = var2[var4]; + this.selectHits.put(var5, (var2x, var4x) -> { + var1.accept(var5); + return (boolean)(((1)) != 0); + }); + this.pinHits + .put( + var5, + (var2x, var4x) -> { + mv var6 = this.edited; + if (var6 == null) { + return (boolean)(((0)) != 0); + } + + var6.setPalette( + var6.getPalette() + .withLock( + var5, + (boolean)(((!var6.getPalette().locked(var5) + ? 1: (-294332415 ^ 294332415) + ((-294332415 & 294332415) << 1)) + ) != 0)) + ); + nd.apply(var6); + return (boolean)(((1)) != 0); + } + ); + } + } + + public float height(float var1) { + float var2 = 0.0F; + nx[][] var3 = null; + int var4 = 0; + int var5 = 0; + Object var6 = null; + int var7 = 0; + int var8 = -939543332; + + while (true) { + switch (var8) { + case -1327610536: + return var2 - 5.0F; + case -939543332: + default: + var2 = 12.0F; + var3 = SECTIONS; + var4 = var3.length; + var5 = 0; + var8 = 920349223; + break; + case -138905664: + var6 = var3[var5]; + var7 = ( + ((Object[])var6).length + (-176463126 | 176463128) + (-176463126 & 176463128) - ((1159056534 | -1159056533) + (1159056534 & -1159056533)) + ) + / ((1322928579 | -1322928577) + (1322928579 & -1322928577)); + var2 += 13.0F + var7 * 15.0F + (var7 - ((-929702632 | 929702633) + (-929702632 & 929702633))) * 3.0F + 5.0F; + var5++; + var8 = 920349223; + break; + case 920349223: + if (var5 < var4) { + var8 = -138905664; + } else { + var8 = -1327610536; + } + } + } + } + + public void render(asq var1, yw var2, float var3, float var4, float var5, float var6, mv var7, mv var8, nx var9, float var10, float var11, ze var12) { + ge var13 = null; + float var14 = 0.0F; + float var15 = 0.0F; + int var16 = 0; + int var17 = 0; + nx[] var18 = null; + int var19 = 0; + float var20 = 0.0F; + float var21 = 0.0F; + int var22 = 1703216471; + + while (true) { + switch (var22) { + case -1063291727: + return; + case -313827596: + drawTitle(var1, SECTION_TITLES[var17], var3, var14, var5, var6, var7, var13); + var14 += 13.0F; + var18 = SECTIONS[var17]; + var19 = 0; + var22 = 355486806; + break; + case -195921309: + var20 = var3 + var19 % ((97419460 ^ -97419458) + ((97419460 & -97419458) << 1)) * (var15 + 3.0F); + var21 = var14 + var19 / ((-1893156179 ^ 1893156181) + ((-1893156179 & 1893156181) << 1)) * 18.0F; + this.drawRole(var1, var2, var18[var19], var20, var21, var15, var6, var7, var8, var9, (boolean)((var16) != 0), var10, var11, var12, var13); + var19++; + var22 = 355486806; + break; + case 355486806: + if (var19 < var18.length) { + var22 = -195921309; + } else { + var22 = 1751526269; + } + break; + case 611191123: + if (var17 < SECTIONS.length) { + var22 = -313827596; + } else { + var22 = -1063291727; + } + break; + case 1703216471: + default: + this.edited = var8; + var13 = asp.font(oe.MICRO); + var1.drawScrollingText( + var13, + "Pick a colour, then drag on the wheel above to change it", + var3, + var4 + (12.0F - var13.height()) * 0.5F, + var5, + var7.getGray().mulAlpha(var6), + (boolean)((((1206090004 ^ -1206090003) + ((1206090004 & -1206090003) << 1)) + ) != 0)); + var14 = var4 + 12.0F; + var15 = (var5 - 3.0F) / 2.0F; + var16 = (var8.getPalette().generated()) ? 1 : 0; + var17 = 0; + var22 = 611191123; + break; + case 1751526269: + var19 = (var18.length + (-812887586 | 812887588) + (-812887586 & 812887588) - ((823299052 | -823299051) + (823299052 & -823299051))) + / ((1145196596 ^ -1145196594) + ((1145196596 & -1145196594) << 1)); + var14 += var19 * 15.0F + (var19 - ((1569411975 ^ -1569411974) + ((1569411975 & -1569411974) << 1))) * 3.0F + 5.0F; + var17++; + var22 = 611191123; + } + } + } + + private static void drawTitle(asq var0, String var1, float var2, float var3, float var4, float var5, mv var6, ge var7) { + float var8 = 0.0F; + float var9 = 0.0F; + int var10 = 143473547; + + while (true) { + switch (var10) { + case -167791213: + var0.drawRect(var8, var3 + 6.0F, var9, 1.0F, var6.getForegroundStroke().mulAlpha(var5)); + var10 = 822202839; + break; + case 143473547: + default: + var0.drawText(var7, var1, var2, var3 + (13.0F - var7.height()) * 0.5F, var6.getGrayLight().mulAlpha(var5)); + var8 = var2 + var7.width(var1) + 5.0F; + var9 = Math.max(var2 + var4 - var8, 0.0F); + if (var9 > 0.0F) { + var10 = -167791213; + } else { + var10 = 822202839; + } + break; + case 822202839: + return; + } + } + } + + private void drawRole( + asq var1, + yw var2, + nx var3, + float var4, + float var5, + float var6, + float var7, + mv var8, + mv var9, + nx var10, + boolean var11, + float var12, + float var13, + ze var14, + ge var15 + ) { + int var16 = var11 && var3 != nx.ACCENT + ? 1: 0; + int var17 = var16 != 0 && var9.getPalette().locked(var3) + ? 1: 0; + float var18 = var4 + var6 - 3.0F - 5.0F; + int var19 = var16 != 0 && aqj.isHovered(var12, var13, var18 + 2.5F - 5.5F, var5 + 2.0F, 11.0, 11.0) + ? 1: 0; + int var20 = var19 == 0 && zb.hits(var12, var13, var4, var5, var6, 15.0F, var14.peekHover(var3), 3.0F) + ? 1: 0; + float var21 = var14.hover(var3, (boolean)((var20) != 0)); + float var22 = var14.select( + var3, + ob.FAST, + (boolean)(((var3 == var10 ? 1: (1895598347 ^ -1895598347) + ((1895598347 & -1895598347) << 1)) + ) != 0)); + boolean var23 = zb.begin(var1, var4, var5, var6, 15.0F, var21, 3.0F); + zb.ghost(var1, var4, var5, var6, 15.0F, asj.all(oc.CHIP), var8, var7 * (1.0F - var22), var21); + if (var22 > 0.001F) { + var1.drawRoundedRect(var4, var5, var6, 15.0F, asj.all(oc.CHIP), var8.getColor().mulAlpha(var7 * 0.22F * var22)); + var1.drawRoundedBorder(var4, var5, var6, 15.0F, 1.0F, asj.all(oc.CHIP), var8.getColor().mulAlpha(var7 * var22)); + } + + float var24 = var5 + 3.0F; + float var25 = var4 + 3.0F; + var1.drawRoundedRect(var25, var24, 9.0F, 9.0F, asj.all(oc.CHIP), var3.raw(var8).mulAlpha(var7)); + var1.drawRoundedBorder(var25, var24, 9.0F, 9.0F, 1.0F, asj.all(oc.CHIP), var8.getForegroundLightStroke().mulAlpha(var7)); + float var26 = var25 + 9.0F + 5.0F; + float var27 = Math.max((var16 != 0 ? var18 - 5.0F : var4 + var6 - 3.0F) - var26, 0.0F); + asu var28 = asu.lerp(zb.lift(var8.getGrayLight(), var8, var21), var8.getWhite(), var22); + var1.drawScrollingText( + var15, + NAMES.get(var3), + var26, + var5 + (15.0F - var15.height()) * 0.5F, + var27, + var28.mulAlpha(var7), + (boolean)((((-1860304372 ^ 1860304373) + ((-1860304372 & 1860304373) << 1)) + ) != 0)); + if (var16 != 0) { + float var29 = var14.select( + this.pinHits.get(var3), + ob.FAST, + (boolean)(((var17 == 0 && var19 == 0 + ? 0: (653655817 | -653655816) + (653655817 & -653655816)) + ) != 0)); + ge var30 = gl.ICONS.getFont(5.0F); + asu var31 = asu.lerp(var8.getGray(), var8.getColor(), var29); + float var32 = var7 * (0.35F + 0.65F * Math.max(var29, zb.settled(var21))); + var1.drawText( + var30, + "x", + var30.glyphCenterX("x", var18, 5.0F), + var30.glyphCenterY("x", var5, 15.0F), + var31.mulAlpha(var32) + ); + } + + zb.end(var1, var23); + if (var19 != 0) { + ass.tooltip( + this.pinHits.get(var3), + var17 != 0 + ? "Unpin - let the palette generator follow the accent again" + : "Pin this colour so the palette generator leaves it alone", + var18, + var5, + 5.0F, + 15.0F, + asr.LEFT + ); + } else if (var21 > 0.5F) { + ass.tooltip(var3, this.tooltipOf(var3, (boolean)(((var16) != 0)), (boolean)((var17) != 0)), var4, var5, var6, 15.0F, asr.LEFT); + } + + var2.add(var4, var5, var6, 15.0F, this.selectHits.get(var3)); + if (var16 != 0) { + var2.add(var18 + 2.5F - 5.5F, var5 + 2.0F, 11.0F, 11.0F, this.pinHits.get(var3)); + } + } + + private String tooltipOf(nx var1, boolean var2, boolean var3) { + Boolean var4 = null; + String var5 = null; + int var6 = 0; + Object var7 = null; + int var9 = 0; + String var10 = null; + int var8 = 715565710; + + while (true) { + switch (var8) { + case -1854738429: + var9 = 1; + var8 = -717864696; + break; + case -1694127393: + if (var4 != null) { + var8 = -421299240; + } else { + var8 = 1553119279; + } + break; + case -1615545337: + var9 = 0; + var8 = -717864696; + break; + case -900753808: + var7 = var10; + var5 = var1.description() + var7 + " - click to edit it on the wheel"; + this.tooltipCache.put(var1, var5); + this.tooltipPinned.put(var1, Boolean.valueOf((boolean)((var6) != 0))); + var8 = 1237392186; + break; + case -717864696: + var6 = var9; + if (var5 != null) { + var8 = -1694127393; + } else { + var8 = 1553119279; + } + break; + case -421299240: + if (var4 != var6) { + var8 = 1553119279; + } else { + var8 = 1237392186; + } + break; + case -213581746: + if (var3) { + var8 = 1590375962; + } else { + var8 = 927351851; + } + break; + case 715565710: + default: + var4 = this.tooltipPinned.get(var1); + var5 = this.tooltipCache.get(var1); + if (var2) { + var8 = 1823760135; + } else { + var8 = -1615545337; + } + break; + case 783227451: + var10 = ""; + var8 = -900753808; + break; + case 927351851: + var10 = ". Follows the accent automatically"; + var8 = -900753808; + break; + case 1237392186: + return var5; + case 1553119279: + if (!var2) { + var8 = 783227451; + } else { + var8 = -213581746; + } + break; + case 1590375962: + var10 = ". Pinned - the palette generator will not change it"; + var8 = -900753808; + break; + case 1823760135: + if (var3) { + var8 = -1854738429; + } else { + var8 = -1615545337; + } + } + } + } + + static { + String[] var10000 = new String[4]; + var10000[0] = "Backgrounds"; + var10000[1] = "Text and icons"; + var10000[2] = "Accent gradient"; + var10000[3] = "Lines and other"; + SECTION_TITLES = var10000; + nx[][] var0 = new nx[4][]; + int var10002 = 0; + nx[] var10003 = new nx[5]; + var10003[0] = nx.BACKGROUND; + var10003[1] = nx.SURFACE; + var10003[2] = nx.SURFACE_RAISED; + var10003[3] = nx.SURFACE_SUNKEN; + var10003[4] = nx.SURFACE_MUTED; + var0[var10002] = var10003; + var10002 = 1; + var10003 = new nx[4]; + var10003[0] = nx.ON_SURFACE; + var10003[1] = nx.ON_SURFACE_MUTED; + var10003[2] = nx.ON_SURFACE_FAINT; + var10003[3] = nx.ICON_INACTIVE; + var0[var10002] = var10003; + var10002 = 2; + var10003 = new nx[3]; + var10003[0] = nx.ACCENT; + var10003[1] = nx.ACCENT_MIDDLE; + var10003[2] = nx.ACCENT_END; + var0[var10002] = var10003; + var10002 = 3; + var10003 = new nx[3]; + var10003[0] = nx.OUTLINE; + var10003[1] = nx.OUTLINE_STRONG; + var10003[2] = nx.FRIEND; + var0[var10002] = var10003; + SECTIONS = var0; + NAMES.put(nx.BACKGROUND, "Window"); + NAMES.put(nx.SURFACE, "Panels"); + NAMES.put(nx.SURFACE_RAISED, "Raised cards"); + NAMES.put(nx.SURFACE_SUNKEN, "Card bodies"); + NAMES.put(nx.SURFACE_MUTED, "Inactive"); + NAMES.put(nx.ON_SURFACE, "Main text"); + NAMES.put(nx.ON_SURFACE_MUTED, "Secondary"); + NAMES.put(nx.ON_SURFACE_FAINT, "Hints"); + NAMES.put(nx.ICON_INACTIVE, "Icons off"); + NAMES.put(nx.ACCENT, "Start"); + NAMES.put(nx.ACCENT_MIDDLE, "Middle"); + NAMES.put(nx.ACCENT_END, "End"); + NAMES.put(nx.OUTLINE, "Borders"); + NAMES.put(nx.OUTLINE_STRONG, "Strong borders"); + NAMES.put(nx.FRIEND, "Friends"); + } +} diff --git a/src/main/java/defpackage/yz.java b/src/main/java/defpackage/yz.java new file mode 100644 index 0000000..04d9342 --- /dev/null +++ b/src/main/java/defpackage/yz.java @@ -0,0 +1,202 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public final class yz { + private static final String TITLE = "Preview"; + private static final String ICON_GLYPH = "B"; + private static final String BIND_LABEL = "R"; + private static final String LABEL_TOGGLE = "Enabled"; + private static final String LABEL_SLIDER = "Strength"; + private static final String LABEL_MODE = "Mode"; + private static final String LABEL_COLOUR = "Colour"; + private static final String[] MODE_OPTIONS; + private static final float SLIDER_VALUE = 0.62F; + private static final float SLIDER_MIN = 0.0F; + private static final float SLIDER_MAX = 1.0F; + private static final float SLIDER_STEP = 0.01F; + private static final float INSET = 1.0F; + private static final float ENABLED_STATE = 1.0F; + private static final float HEADER_BASE_INSET = 8.0F; + private static final float TITLE_ICON_GAP = 10.0F; + private static final float ICON_FONT_SIZE = 5.5F; + private static final float TITLE_BASELINE = 8.0F; + private static final float MODIFIED_DOT_SIZE = 3.5F; + private static final float MODIFIED_DOT_GAP = 4.0F; + private static final float KEY_BASE_PAD = 5.0F; + private static final float BIND_FONT_SIZE = 6.5F; + private static final float BIND_TEXT_PAD = 12.0F; + private static final float BIND_MIN_WIDTH = 20.0F; + private static final float BIND_TOP_MIX = 0.55F; + private static final float BIND_BOTTOM_MIX = 0.75F; + private static final float BIND_OUTLINE_MIX = 0.2F; + private static final float BIND_OUTLINE_ALPHA = 0.6F; + private static final float BIND_LIFT = 1.0F; + private static final float HALF = 0.5F; + private final List settings = new ArrayList<>(); + private final ct hoverSpring = asa.cardSpring(); + private final rx colour; + + public yz() { + ru var1 = new ru( + "Enabled", + (boolean)((((438186841 | -438186840) + (438186841 & -438186840)) + ) != 0)); + sm var2 = new sm("Strength", 0.62F, 0.0F, 1.0F, 0.01F); + sg var3 = new sg("Mode", MODE_OPTIONS); + this.colour = new rx("Colour", asu.WHITE); + this.settings.add(new abe(var1)); + this.settings.add(new abo(var2)); + this.settings.add(new abl(var3)); + this.settings.add(new abg(this.colour)); + } + + public float height() { + float var1 = 0.0F; + Iterator var2 = null; + aay var3 = null; + int var4 = 2064049478; + + while (true) { + switch (var4) { + case -1620064404: + var3 = (aay)var2.next(); + var1 += var3.getHeight() + zu.cardSettingGap(); + var4 = -57308836; + break; + case -57308836: + if (var2.hasNext()) { + var4 = -1620064404; + } else { + var4 = 572680338; + } + break; + case 572680338: + return var1; + case 2064049478: + default: + var1 = zu.cardHeaderHeight() + zu.cardSettingGap(); + var2 = this.settings.iterator(); + var4 = -57308836; + } + } + } + + public void render(asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8) { + this.colour.setColor(var6.getColor()); + float var9 = zu.cardHeaderHeight(); + float var10 = this.height(); + int var11 = var7 >= var2 && var7 <= var2 + var4 && var8 >= var3 && var8 <= var3 + var10 + ? 1: 0; + float var12 = this.hoverSpring.update(var11 != 0 ? 1.0F : 0.0F) * var6.getEffects().hoverLift(); + arq var13 = asj.all(oc.PANEL); + arq var14 = asj.top(oc.PANEL); + float var15 = var2 + 1.0F; + float var16 = var3 + 1.0F - var12; + float var17 = var4 - 2.0F; + float var18 = var10 - 2.0F; + nz var19 = var12 > 0.0F ? nz.RAISED : nz.LOW; + zv.restShadow(var1, var15, var16 + var12, var17, var18, var5, var19); + zv.activeShadow(var1, var15, var16, var17, var18, var5, 1.0F, var6.getColor()); + zv.body( + var1, + var15, + var16, + var17, + var18, + var9, + (boolean)(((1)) != 0), + var6.getForegroundColor().getRGBWithAlpha(var5), + var6.getForegroundDark().getRGBWithAlpha(var5) + ); + zv.border(var1, var15, var16, var17, var18, var6, var5); + zv.activeBorder(var1, var15, var16, var17, var18, var5, 1.0F, var6.getColor()); + this.drawHeader(var1, var15, var16, var17, var9, var5, var6); + this.drawRows(var1, var15, var16 + var9 + zu.cardSettingGap(), var17, var5, var6, var7, var8); + } + + private void drawHeader(asq var1, float var2, float var3, float var4, float var5, float var6, mv var7) { + ge var8 = asp.font(oe.HEADING); + int var9 = var7.getColor().getRGBWithAlpha(var6); + int var10 = var7.getWhite().getRGBWithAlpha(var6); + float var11 = asj.contentInset(oc.PANEL, 8.0F, var4, var5); + float var12 = var11 + 10.0F; + var1.drawText(gl.ICONS.getFont(5.5F), "B", var2 + var11, var3 + 8.0F, var9); + var1.drawText(var8, "Preview", var2 + var12, var3 + 8.0F, var10); + float var13 = var2 + var12 + var8.width("Preview") + 4.0F; + float var14 = var3 + var5 * 0.5F - 1.75F; + var1.drawSurface(aso.ACCENT, var13, var14, 3.5F, 3.5F, asj.pill(3.5F), var9); + this.drawBind(var1, var2, var3, var4, var5, var6, var7); + } + + private void drawBind(asq var1, float var2, float var3, float var4, float var5, float var6, mv var7) { + ge var8 = gl.ROUND_BOLD.getFont(6.5F); + float var9 = asj.contentInset(oc.PANEL, 5.0F, var4, var5); + float var10 = var5 - 10.0F; + float var11 = Math.max(20.0F, var8.width("R") + 12.0F); + float var12 = var2 + var4 - var11 - var9; + float var13 = var3 + 5.0F; + int var14 = asu.mixRGB(var7.getColor().getRGB(), asu.BLACK.getRGB(), 0.55F, var6); + int var15 = asu.mixRGB(var7.getColor().getRGB(), asu.BLACK.getRGB(), 0.75F, var6); + int var16 = asu.mixRGB(var7.getColor().getRGB(), asu.WHITE.getRGB(), 0.2F, 0.6F * var6); + arq var17 = asj.all(oc.CONTROL); + var1.drawSurface(aso.CONTROL, var12, var13 + 1.0F, var11, var10, var17, var15); + var1.drawSurface(aso.CONTROL, var12, var13, var11, var10 - 1.0F, var17, var14); + atb.drawRoundedBorder(var1.pose(), var12, var13, var11, var10, pk.borderHairline(), var17, var16); + var1.drawText( + var8, + "R", + var12 + (var11 - var8.width("R")) * 0.5F, + var13 + (var10 - var8.height()) * 0.5F, + var7.getWhite().getRGBWithAlpha(var6) + ); + } + + private void drawRows(asq var1, float var2, float var3, float var4, float var5, mv var6, float var7, float var8) { + int var9 = 0; + int var10 = 0; + int var11 = 0; + float var12 = 0.0F; + Iterator var13 = null; + aay var14 = null; + int var15 = -362068119; + + while (true) { + switch (var15) { + case -362068119: + default: + var9 = var6.getColor().getRGBWithAlpha(var5); + var10 = var6.getWhite().getRGBWithAlpha(var5); + var11 = var6.getGrayLight().getRGBWithAlpha(var5); + var12 = var3; + var13 = this.settings.iterator(); + var15 = 568837173; + break; + case -253486157: + return; + case 568837173: + if (var13.hasNext()) { + var15 = 618767604; + } else { + var15 = -253486157; + } + break; + case 618767604: + var14 = (aay)var13.next(); + var14.render(var1, var7, var8, var2, var12, var4, var5, 1.0F, var9, var10, var11, var6); + var12 += var14.getHeight() + zu.cardSettingGap(); + var15 = 568837173; + } + } + } + + static { + String[] var10000 = new String[3]; + var10000[0] = "Normal"; + var10000[1] = "Smooth"; + var10000[2] = "Instant"; + MODE_OPTIONS = var10000; + } +} diff --git a/src/main/java/defpackage/z.java b/src/main/java/defpackage/z.java new file mode 100644 index 0000000..11d2ba9 --- /dev/null +++ b/src/main/java/defpackage/z.java @@ -0,0 +1,9 @@ +package defpackage; + +public interface z { + String name = ""; + + String getName(); + + void setName(String var1); +} diff --git a/src/main/java/defpackage/za.java b/src/main/java/defpackage/za.java new file mode 100644 index 0000000..6afca96 --- /dev/null +++ b/src/main/java/defpackage/za.java @@ -0,0 +1,209 @@ +package defpackage; + +public final class za { + private static final float MIN_REFERENCE = 1.0E-4F; + private static final float GLASS_RIM_ALPHA = 0.35F; + private static final float GLASS_TINT_ALPHA = 0.22F; + private static final float GLASS_PANE_FILL = 0.55F; + private static final float GLASS_PANE_OPACITY = 0.98F; + private static final float GLASS_SPECULAR_ALPHA = 0.18F; + private static final float GRADIENT_SECOND_STOP = 0.33333334F; + private static final float GRADIENT_THIRD_STOP = 0.6666667F; + private mv theme; + private nb vision; + private float alpha; + + public za bind(mv var1, nb var2, float var3) { + this.theme = var1; + this.vision = var2 == null ? nb.NORMAL : var2; + this.alpha = var3; + return this; + } + + public mv theme() { + return this.theme; + } + + public float alpha() { + return this.alpha; + } + + public asu color(nx var1) { + return this.simulate(var1.raw(this.theme)); + } + + public asu color(nx var1, float var2) { + return this.color(var1).mulAlpha(this.alpha * var2); + } + + public asu accent() { + return this.simulate(this.theme.getAccent().start()).mulAlpha(this.alpha); + } + + public asu accentStop(float var1) { + return this.simulate(this.theme.getAccent().sample(var1)).mulAlpha(this.alpha); + } + + public asu rawAccentStop(float var1) { + return this.simulate(this.theme.getAccent().sample(var1)); + } + + public asu opaque(nx var1) { + return this.color(var1).mulAlpha(this.alpha); + } + + public asu simulate(asu var1) { + asu var3 = null; + int var2 = -1091781090; + + while (true) { + switch (var2) { + case -1091781090: + default: + if (this.vision.isIdentity()) { + var2 = 1566064239; + } else { + var2 = 1982565478; + } + break; + case -683862609: + return var3; + case 1566064239: + var3 = var1; + var2 = -683862609; + break; + case 1982565478: + var3 = this.vision.simulate(var1); + var2 = -683862609; + } + } + } + + public float radius(oc var1) { + return var1.base() * this.theme.getGeometry().radiusScale(var1.surface()); + } + + public arq round(oc var1) { + return asj.uniform(this.radius(var1)); + } + + public arq roundTop(oc var1) { + float var2 = this.radius(var1); + return arq.top(var2, var2); + } + + public float space(od var1) { + return this.theme.getSpacing().step(var1); + } + + public ge font(oe var1) { + return this.theme.getTypography().family(var1).msdf().getFont(this.theme.getTypography().size(var1)); + } + + public float borderThickness() { + return this.theme.getGeometry().borderThickness(); + } + + public float dividerAlpha() { + return this.theme.getGeometry().dividerAlpha(); + } + + public float shadowSoftness(nz var1) { + return this.theme.getElevation().softness(var1) * ratio(this.theme.getEffects().shadowSoftness(), nz.RAISED.softness()); + } + + public float shadowAlpha(nz var1) { + return this.theme.getElevation().alpha(var1) * ratio(this.theme.getEffects().shadowAlpha(), nz.RAISED.alpha()) * this.alpha; + } + + public float neonFor(aso var1) { + return this.theme.getEffects().neonIntensity(var1); + } + + public ary accentGradient() { + return ary.of(this.rawAccentStop(0.0F), this.rawAccentStop(0.33333334F), this.rawAccentStop(0.6666667F), this.rawAccentStop(1.0F)).mulAlpha(this.alpha); + } + + public float glassFillAlpha() { + return Math.min(0.55F * this.theme.getGlass().fillAlphaScale(), 1.0F); + } + + public float glassPaneOpacity() { + return Math.min(this.theme.getGlass().fillAlphaScale() * 0.98F, 1.0F); + } + + public float glassFrost() { + return Math.min(Math.max(this.theme.getGlass().frost(), 0.0F), 1.0F); + } + + public float glassRefraction() { + return Math.min(Math.max(this.theme.getGlass().refraction(), 0.0F), 1.0F); + } + + public asu glassSpecular() { + return this.color(nx.ON_SURFACE).mulAlpha(this.alpha * 0.18F * Math.min(this.theme.getGlass().specular(), 1.0F)); + } + + public asu glassRim() { + float var1 = Math.min(this.theme.getGlass().rimGain(), 1.0F); + return this.color(nx.ON_SURFACE).mulAlpha(this.alpha * 0.35F * var1 * this.theme.getGlass().borderAlphaScale()); + } + + public asu glassTint() { + float var1 = 0.0F; + asu var2 = null; + asu var4 = null; + int var3 = 1218600358; + + while (true) { + switch (var3) { + case -1611250304: + var4 = this.color(nx.ON_SURFACE); + var3 = 107273468; + break; + case -265955115: + var4 = this.color(nx.BACKGROUND); + var3 = 107273468; + break; + case 107273468: + var2 = var4; + return var2.mulAlpha(this.alpha * Math.abs(var1) * 0.22F); + case 1218600358: + default: + var1 = this.theme.getGlass().tint(); + if (var1 >= 0.0F) { + var3 = -1611250304; + } else { + var3 = -265955115; + } + } + } + } + + private static float ratio(float var0, float var1) { + float var3 = 0.0F; + int var2 = 1756771302; + + while (true) { + switch (var2) { + case -793450751: + var3 = var0 / var1; + var2 = 13268205; + break; + case -427895146: + var3 = 1.0F; + var2 = 13268205; + break; + case 13268205: + return var3; + case 1756771302: + default: + if (var1 <= 1.0E-4F) { + var2 = -427895146; + } else { + var2 = -793450751; + } + } + } + } +} diff --git a/src/main/java/defpackage/zb.java b/src/main/java/defpackage/zb.java new file mode 100644 index 0000000..c30b95f --- /dev/null +++ b/src/main/java/defpackage/zb.java @@ -0,0 +1,193 @@ +package defpackage; + +public final class zb { + public static final float ICON_GAP = 4.0F; + private static final float MIN_CLEARANCE = 1.0F; + private static final float HALF = 0.5F; + private static final float GHOST_IDLE_ALPHA = 0.07F; + private static final float PRIMARY_HOVER_ALPHA = 0.16F; + + private zb() { + } + + public static float amount(float var0, float var1) { + float var2 = Math.max(var1 - 1.0F, 0.0F) / Math.max(var0, 1.0F); + return Math.min(asa.controlAmount(var0), var2); + } + + public static boolean hits(double var0, double var2, float var4, float var5, float var6, float var7, float var8, float var9) { + return asa.hits(var0, var2, var4, var5, var6, var7, var8, amount(var6, var9)); + } + + public static boolean begin(asq var0, float var1, float var2, float var3, float var4, float var5, float var6) { + return asa.push(var0, var1, var2, var3, var4, var5, amount(var3, var6)); + } + + public static void end(asq var0, boolean var1) { + asa.pop(var0, var1); + } + + public static void ghost(asq var0, float var1, float var2, float var3, float var4, arq var5, mv var6, float var7, float var8) { + float var9 = 0.0F; + int var10 = -159062407; + + while (true) { + switch (var10) { + case -1981477777: + return; + case -771160989: + var0.drawSurface(aso.ROW, var1, var2, var3, var4, var5, asa.plateColor(var6).mulAlpha(var7 * 0.55F * var9)); + var10 = -1981477777; + break; + case -159062407: + default: + var9 = settled(var8); + var0.drawSurface(aso.CONTROL, var1, var2, var3, var4, var5, var6.getWhite().mulAlpha(var7 * 0.07F * (1.0F - var9))); + if (var9 > 0.001F) { + var10 = -771160989; + } else { + var10 = -1981477777; + } + } + } + } + + public static float settled(float var0) { + float var2 = 0.0F; + int var1 = 1720368324; + + while (true) { + switch (var1) { + case -952718467: + var2 = 0.0F; + var1 = 559559442; + break; + case 151332557: + var2 = Math.min(var0, 1.0F); + var1 = 559559442; + break; + case 559559442: + return var2; + case 1720368324: + default: + if (var0 < 0.0F) { + var1 = -952718467; + } else { + var1 = 151332557; + } + } + } + } + + public static asu lift(asu var0, mv var1, float var2) { + return asa.liftText(var0, var1, settled(var2)); + } + + public static void primaryHighlight(asq var0, float var1, float var2, float var3, float var4, arq var5, asu var6, float var7, float var8) { + float var9 = 0.0F; + int var10 = -1262746785; + + while (true) { + switch (var10) { + case -1262746785: + default: + var9 = settled(var8); + if (var9 > 0.001F) { + var10 = -628961138; + } else { + var10 = 1117771419; + } + break; + case -628961138: + var0.drawRoundedRect(var1, var2, var3, var4, var5, var6.mulAlpha(var7 * 0.16F * var9)); + var10 = 1117771419; + break; + case 1117771419: + return; + } + } + } + + public static float contentWidth(ge var0, ge var1, String var2, String var3) { + float var4 = 0.0F; + if (var2 != null) { + var4 += var1.width(var2); + } + + if (var3 != null) { + var4 += (var2 != null ? 4.0F : 0.0F) + var0.width(var3); + } + + return var4; + } + + public static void content( + asq var0, ge var1, ge var2, String var3, String var4, float var5, float var6, float var7, float var8, asu var9, asu var10, float var11 + ) { + float var12 = contentWidth(var1, var2, var3, var4); + float var13 = var5 + (var7 - var12) * 0.5F; + drawRun(var0, var1, var2, var3, var4, var13, var6, var8, var9, var10, var11); + } + + public static void leading( + asq var0, ge var1, ge var2, String var3, String var4, float var5, float var6, float var7, float var8, asu var9, asu var10, float var11 + ) { + float var12 = 0.0F; + float var13 = 0.0F; + int var14 = 1794358340; + + while (true) { + switch (var14) { + case -1723275593: + var13 = var2.width(var3); + var0.drawText(var2, var3, var2.glyphCenterX(var3, var12 + asa.iconShift(var11) * 0.5F, var13), var2.glyphCenterY(var3, var6, var7), var9); + var12 += var13 + 4.0F; + var14 = -1345117878; + break; + case -1345117878: + if (var4 != null) { + var14 = 1123218702; + } else { + var14 = 1884502082; + } + break; + case 1123218702: + var0.drawScrollingText( + var1, + var4, + var12, + var6 + (var7 - var1.height()) * 0.5F, + Math.max(var5 + var8 - var12, 0.0F), + var10, + (boolean)((((1056477856 ^ -1056477855) + ((1056477856 & -1056477855) << 1)) + ) != 0)); + var14 = 1884502082; + break; + case 1794358340: + default: + var12 = var5; + if (var3 != null) { + var14 = -1723275593; + } else { + var14 = -1345117878; + } + break; + case 1884502082: + return; + } + } + } + + private static void drawRun(asq var0, ge var1, ge var2, String var3, String var4, float var5, float var6, float var7, asu var8, asu var9, float var10) { + float var11 = var5; + if (var3 != null) { + float var12 = var2.width(var3); + var0.drawText(var2, var3, var2.glyphCenterX(var3, var11 + asa.iconShift(var10) * 0.5F, var12), var2.glyphCenterY(var3, var6, var7), var8); + var11 += var12 + (var4 != null ? 4.0F : 0.0F); + } + + if (var4 != null) { + var0.drawText(var1, var4, var11, var6 + (var7 - var1.height()) * 0.5F, var9); + } + } +} diff --git a/src/main/java/defpackage/zc.java b/src/main/java/defpackage/zc.java new file mode 100644 index 0000000..a1a40f9 --- /dev/null +++ b/src/main/java/defpackage/zc.java @@ -0,0 +1,19 @@ +package defpackage; + +public final class zc { + public static final String CLOSE = "M"; + public static final String PICK = "V"; + public static final String CHECK = "S"; + public static final String CHEVRON_UP = "R"; + public static final String CHEVRON_DOWN = "Q"; + public static final String CHEVRON_RIGHT = "A"; + public static final String EYE = "r"; + public static final String PALETTE = "d"; + public static final String SPLIT = "6"; + public static final String PIN = "x"; + public static final String SWAP = "W"; + public static final String RESTORE = "G"; + + private zc() { + } +} diff --git a/src/main/java/defpackage/zd.java b/src/main/java/defpackage/zd.java new file mode 100644 index 0000000..a6abebc --- /dev/null +++ b/src/main/java/defpackage/zd.java @@ -0,0 +1,11 @@ +package defpackage; + +final class zd { + final ct spring; + int touchedFrame; + + zd(ob var1, float var2, int var3, boolean var4) { + this.spring = var4 ? ct.transform(var1, var2) : ct.layout(var1, var2); + this.touchedFrame = var3; + } +} diff --git a/src/main/java/defpackage/ze.java b/src/main/java/defpackage/ze.java new file mode 100644 index 0000000..30f6ffe --- /dev/null +++ b/src/main/java/defpackage/ze.java @@ -0,0 +1,143 @@ +package defpackage; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + +public final class ze { + private static final int SWEEP_INTERVAL_FRAMES = 120; + private static final int EVICT_AFTER_FRAMES = 360; + private static final ob HOVER_ROLE = ob.MEDIUM; + private final Map hoverTracks = new HashMap<>(); + private final Map selectTracks = new HashMap<>(); + private int frame; + private int sweptFrame; + + public float hover(Object var1, boolean var2) { + return this.advance(this.hoverTracks, var1, HOVER_ROLE, var2 ? 1.0F : 0.0F, (boolean)((((1102989017 | -1102989016) + (1102989017 & -1102989016))) != 0)); + } + + public float hover(Object var1, ob var2, boolean var3) { + return this.advance(this.hoverTracks, var1, var2, var3 ? 1.0F : 0.0F, (boolean)((((-1806641723 | 1806641724) + (-1806641723 & 1806641724))) != 0)); + } + + public float peekHover(Object var1) { + zd var2 = null; + float var4 = 0.0F; + int var3 = -387959305; + + while (true) { + switch (var3) { + case -387959305: + default: + var2 = this.hoverTracks.get(var1); + if (var2 == null) { + var3 = -69917192; + } else { + var3 = 1111045171; + } + break; + case -69917192: + var4 = 0.0F; + var3 = 1749080448; + break; + case 1111045171: + var4 = var2.spring.value(); + var3 = 1749080448; + break; + case 1749080448: + return var4; + } + } + } + + public float select(Object var1, ob var2, boolean var3) { + return this.advance(this.selectTracks, var1, var2, var3 ? 1.0F : 0.0F, (boolean)((((726345702 | -726345702) + (726345702 & -726345702))) != 0)); + } + + public void endFrame() { + int var1 = -1380172363; + + while (true) { + switch (var1) { + case -1380172363: + default: + this.frame += 1; + if (this.frame - this.sweptFrame < (1238135031 ^ -1238134911) + ((1238135031 & -1238134911) << 1)) { + var1 = -1271500260; + } else { + var1 = 406700833; + } + break; + case -1271500260: + return; + case 406700833: + this.sweptFrame = this.frame; + this.evict(this.hoverTracks); + this.evict(this.selectTracks); + return; + } + } + } + + private float advance(Map var1, Object var2, ob var3, float var4, boolean var5) { + zd var6 = null; + int var7 = -1564322018; + + while (true) { + switch (var7) { + case -1564322018: + default: + var6 = (zd)var1.get(var2); + if (var6 == null) { + var7 = 60094930; + } else { + var7 = 374939069; + } + break; + case 60094930: + var1.put(var2, new zd(var3, var4, this.frame, var5)); + return var4; + case 374939069: + var6.touchedFrame = this.frame; + var6.spring.setRole(var3); + return var6.spring.update(var4); + } + } + } + + private void evict(Map var1) { + Iterator var2 = null; + int var3 = -103489449; + + while (true) { + switch (var3) { + case -299503130: + var2.remove(); + var3 = 191465541; + break; + case -103489449: + default: + var2 = var1.entrySet().iterator(); + var3 = 191465541; + break; + case -11023488: + return; + case 19761205: + if (this.frame - ((zd)((Entry)var2.next()).getValue()).touchedFrame > (-977349299 ^ 977349659) + ((-977349299 & 977349659) << 1)) { + var3 = -299503130; + } else { + var3 = 191465541; + } + break; + case 191465541: + if (var2.hasNext()) { + var3 = 19761205; + } else { + var3 = -11023488; + } + } + } + } +} diff --git a/src/main/java/defpackage/zf.java b/src/main/java/defpackage/zf.java new file mode 100644 index 0000000..6d10efc --- /dev/null +++ b/src/main/java/defpackage/zf.java @@ -0,0 +1,11 @@ +package defpackage; + +public interface zf { + void switchTo(mv var1, asi var2); + + void saveAsNew(String var1); + + void reset(mv var1); + + void delete(mv var1); +} diff --git a/src/main/java/defpackage/zg.java b/src/main/java/defpackage/zg.java new file mode 100644 index 0000000..f701c70 --- /dev/null +++ b/src/main/java/defpackage/zg.java @@ -0,0 +1,7 @@ +package defpackage; + +enum zg { + NONE, + RESET, + DELETE; +} diff --git a/src/main/java/defpackage/zh.java b/src/main/java/defpackage/zh.java new file mode 100644 index 0000000..015d3fe --- /dev/null +++ b/src/main/java/defpackage/zh.java @@ -0,0 +1,1264 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import net.minecraft.client.model.geom.builders.UVPair; + +public final class zh { + private static final float ART_WIDTH = 150.0F; + private static final float CARD_TARGET_WIDTH = 96.0F; + private static final float CARD_GAP = 6.0F; + private static final int MIN_COLUMNS = 2; + private static final float PANEL_PAD = 9.0F; + private static final float HEADER_HEIGHT = 20.0F; + private static final float FOOTER_HEIGHT = 24.0F; + private static final float FIELD_HEIGHT = 16.0F; + private static final float FIELD_TEXT_WIDTH = 140.0F; + private static final float FIELD_WIDTH_MIN = 40.0F; + private static final float TEXT_FIELD_FONT = 7.0F; + private static final float BUTTON_PAD_X = 8.0F; + private static final float BUTTON_GAP = 6.0F; + private static final float ICON_SIZE = 5.0F; + private static final float CORNER_BUTTON = 11.0F; + private static final float CORNER_INSET = 4.0F; + private static final float CORNER_GAP = 3.0F; + private static final float CORNER_IDLE_ALPHA = 0.55F; + private static final float SECTION_HEIGHT = 14.0F; + private static final float SECTION_RULE_GAP = 5.0F; + private static final float SECTION_RULE_HEIGHT = 1.0F; + private static final float GRID_BLEED = 3.0F; + private static final float HALF = 0.5F; + private static final float PANEL_ALPHA = 0.97F; + private static final float MIN_FADE = 0.01F; + private static final float OPEN_TRAVEL = 6.0F; + private static final float SCROLL_FADE = 8.0F; + private static final float SCROLL_STEP = 24.0F; + private static final float BORDER = 1.0F; + private static final long CONFIRM_TIMEOUT_MILLIS = 3200L; + private static final String TITLE = "Themes"; + private static final String CLOSE_HINT = "Esc"; + private static final String SECTION_BUILTIN = "Built in"; + private static final String SECTION_USER = "Your themes"; + private static final String EMPTY_USER = "No themes of your own yet - name one below and save it"; + private static final String SAVE_LABEL = "Save as new"; + private static final String NAME_HINT = "New theme name"; + private static final String SAVE_TOOLTIP = "Save the theme you are editing as a new theme and switch to it"; + private static final String RESET_TOOLTIP = "Reset to default - click twice"; + private static final String RESET_ARMED_TOOLTIP = "Click again to reset this theme"; + private static final String DELETE_TOOLTIP = "Delete this theme - click twice"; + private static final String DELETE_ARMED_TOOLTIP = "Click again to delete it for good"; + private static final String SWITCH_TOOLTIP_PREFIX = "Edit "; + private static final String KEY_SAVE = "gallery.save"; + private final asi panelBounds = new asi(); + private final asi cardBounds = new asi(); + private final ct openFade = ct.layout(ob.MEDIUM, 0.0F); + private final ze motion = new ze(); + private final Map physics = new HashMap<>(); + private final List entries = new ArrayList<>(); + private final Map switchTooltips = new HashMap<>(); + private final Map resetKeys = new HashMap<>(); + private final Map deleteKeys = new HashMap<>(); + private final yv swallow = (var0, var2) -> (boolean)(((1)) != 0); + private float[] columnGrowth = new float[0]; + private float[] columnOffsets = new float[0]; + private float[] rowGrowth = new float[0]; + private arn nameField; + private zf actions; + private mv armedTheme; + private zg armed = zg.NONE; + private long armedAt; + private boolean open; + private boolean entering; + private float scroll; + private float scrollMax; + private int knownVersion = -1; + + public boolean isOpen() { + return this.open; + } + + public boolean isVisible() { + int var2 = 0; + int var1 = 1917062634; + + while (true) { + switch (var1) { + case -914314957: + if (this.openFade.value() > 0.01F) { + var1 = -423461822; + } else { + var1 = 1444296489; + } + break; + case -423461822: + var2 = 1; + var1 = 1599750118; + break; + case 1444296489: + var2 = 0; + var1 = 1599750118; + break; + case 1599750118: + return (boolean)((var2) != 0); + case 1917062634: + default: + if (!this.open) { + var1 = -914314957; + } else { + var1 = -423461822; + } + } + } + } + + public float fade() { + return this.openFade.value(); + } + + public void open(mv var1) { + this.open = (boolean)(((1)) != 0); + this.entering = (boolean)(((1)) != 0); + this.openFade.animateTo(1.0F); + this.scroll = 0.0F; + this.ensureField(); + this.nameField.setText(na.suggestName(themes(), var1)); + this.disarm(); + } + + public void close() { + int var1 = -184624363; + + while (true) { + switch (var1) { + case -184624363: + default: + this.open = (boolean)(((0)) != 0); + this.openFade.animateTo(0.0F); + this.disarm(); + if (this.nameField != null) { + var1 = 714474784; + } else { + var1 = 1956255803; + } + break; + case 714474784: + this.nameField.setSelected((boolean)((((-12095158 | 12095158) + (-12095158 & 12095158))) != 0)); + var1 = 1956255803; + break; + case 1956255803: + return; + } + } + } + + public void toggle(mv var1) { + int var2 = -1159866049; + + while (true) { + switch (var2) { + case -2079625425: + this.close(); + var2 = -136176932; + break; + case -1159866049: + default: + if (this.open) { + var2 = -2079625425; + } else { + var2 = 1555910855; + } + break; + case -136176932: + return; + case 1555910855: + this.open(var1); + var2 = -136176932; + } + } + } + + public void render(asq var1, yw var2, float var3, float var4, float var5, float var6, float var7, mv var8, float var9, float var10, zf var11) { + this.actions = var11; + this.ensureField(); + float var12 = this.openFade.update(); + if (var12 <= 0.01F) { + this.panelBounds.invalidate(); + } else { + if (this.armed != zg.NONE + && System.currentTimeMillis() - this.armedAt + >= (3577215207898157989L ^ -3577215207898154789L) + ((3577215207898157989L & -3577215207898154789L) << 1)) { + this.disarm(); + } + + this.pruneState(); + float var13 = var7 * var12; + float var14 = var4 + (1.0F - var12) * 6.0F; + this.panelBounds.set(var3, var14, var5, var6); + if (this.open) { + var2.add(var3, var14, var5, var6, this.swallow); + } + + atb.drawShadow( + var1.pose(), var3, var14, var5, var6, pk.shadowSoftness(nz.OVERLAY), zv.radius(), asu.BLACK.withAlpha(var13 * pk.shadowAlpha(nz.OVERLAY)) + ); + zv.surface(var1, var3, var14, var5, var6, zv.radius(), var8.getForegroundColor().getRGBWithAlpha(var13 * 0.97F)); + zv.border(var1, var3, var14, var5, var6, var8, var13); + this.drawHeader(var1, var3, var14, var5, var13, var8); + float var15 = var14 + 20.0F; + float var16 = var14 + var6 - 24.0F; + float var17 = var3 + 9.0F; + float var18 = var5 - 18.0F; + int var19 = this.columnsFor(var18); + float var20 = (var18 - 6.0F * (var19 - ((186631131 | -186631130) + (186631131 & -186631130)))) / var19; + float var21 = Math.min(1.0F, var20 / 150.0F); + float var22 = 88.0F * var21; + my var23 = themes(); + this.entries.clear(); + List var24 = var23.getBuiltinThemes(); + + for (int var25 = 0; var25 < var24.size(); var25++) { + this.entries.add((mv)var24.get(var25)); + } + + int var30 = this.entries.size(); + List var26 = var23.getUserThemes(); + + for (int var27 = 0; var27 < var26.size(); var27++) { + this.entries.add((mv)var26.get(var27)); + } + + var1.clipScroll(var3, var15, var3 + var5, var16, this.scroll > 0.0F ? 8.0F : 0.0F, this.scrollMax - this.scroll > 0.0F ? 8.0F : 0.0F); + int var31 = this.open && var10 >= var15 && var10 <= var16 + ? 1: 0; + var2.clip(var3, var15, var3 + var5, var16); + float var28 = var15 - this.scroll; + var28 = this.drawSection(var1, "Built in", var17, var28, var18, var13, var8); + var28 = this.drawGrid( + var1, + var2, + 0, + var30, + var17, + var28, + var18, + var19, + var20, + var22, + var21, + var13, + var8, + var9, + var10, + (boolean)((var31 + ) != 0)); + var28 = this.drawSection( + var1, "Your themes", var17, var28 + 6.0F, var18, var13, var8 + ); + if (this.entries.size() == var30) { + ge var29 = asp.font(oe.MICRO); + var1.drawScrollingText( + var29, + "No themes of your own yet - name one below and save it", + var17, + var28, + var18, + var8.getGray().mulAlpha(var13), + (boolean)((((-361750205 | 361750206) + (-361750205 & 361750206)) + ) != 0)); + var28 += 14.0F; + } else { + var28 = this.drawGrid( + var1, var2, var30, this.entries.size(), var17, var28, var18, var19, var20, var22, var21, var13, var8, var9, var10, (boolean)((var31 + ) != 0)); + } + + var2.clipReset(); + var1.popClip(); + this.entering = (boolean)(((0)) != 0); + this.scrollMax = Math.max(var28 + this.scroll - var16, 0.0F); + this.scroll = Math.min(this.scroll, this.scrollMax); + this.drawFooter(var1, var2, var3, var16, var5, var13, var8, var9, var10); + this.motion.endFrame(); + } + } + + private int columnsFor(float var1) { + int var2 = (int)Math.floor((var1 + 6.0F) / 102.0F); + return Math.max(2, var2); + } + + private void drawHeader(asq var1, float var2, float var3, float var4, float var5, mv var6) { + ge var7 = asp.font(oe.HEADING); + ge var8 = gl.ICONS.getFont(6.0F); + var1.drawText( + var8, + "d", + var8.glyphCenterX( + "d", + var2 + 9.0F, + var8.width("d") + ), + var8.glyphCenterY("d", var3, 20.0F), + var6.getColor().mulAlpha(var5) + ); + var1.drawText( + var7, + "Themes", + var2 + 9.0F + var8.width("d") + 6.0F, + var3 + (20.0F - var7.height()) * 0.5F, + var6.getWhite().mulAlpha(var5) + ); + ge var9 = asp.font(oe.MICRO); + var1.drawText( + var9, + "Esc", + var2 + var4 - 9.0F - var9.width("Esc"), + var3 + (20.0F - var9.height()) * 0.5F, + var6.getGray().mulAlpha(var5) + ); + } + + private float drawSection(asq var1, String var2, float var3, float var4, float var5, float var6, mv var7) { + ge var8 = null; + float var9 = 0.0F; + float var10 = 0.0F; + int var11 = -906040220; + + while (true) { + switch (var11) { + case -906040220: + default: + var8 = asp.font(oe.MICRO); + var1.drawText(var8, var2, var3, var4 + (14.0F - var8.height()) * 0.5F, var7.getGrayLight().mulAlpha(var6)); + var9 = var3 + var8.width(var2) + 5.0F; + var10 = Math.max(var3 + var5 - var9, 0.0F); + if (var10 > 0.0F) { + var11 = -606751615; + } else { + var11 = 1221008576; + } + break; + case -606751615: + var1.drawRect(var9, var4 + 6.5F, var10, 1.0F, var7.getForegroundStroke().mulAlpha(var6)); + var11 = 1221008576; + break; + case 1221008576: + return var4 + 14.0F; + } + } + } + + private float drawGrid( + asq var1, + yw var2, + int var3, + int var4, + float var5, + float var6, + float var7, + int var8, + float var9, + float var10, + float var11, + float var12, + mv var13, + float var14, + float var15, + boolean var16 + ) { + int var17 = var4 - var3; + if (var17 <= 0) { + return var6; + } + + int var18 = (var17 + var8 - ((1078002618 | -1078002617) + (1078002618 & -1078002617))) / var8; + this.ensureScratch(var8, var18); + float var19 = asa.cardAmount(150.0F); + + for (int var20 = 0; var20 < var8; var20++) { + this.columnGrowth[var20] = 0.0F; + } + + for (int var31 = 0; var31 < var18; var31++) { + this.rowGrowth[var31] = 0.0F; + } + + for (int var32 = 0; var32 < var17; var32++) { + yn var21 = this.physicsOf(this.entries.get(var3 + var32)); + float var22 = asa.settle(var21.hoverValue()); + int var23 = var32 % var8; + int var24 = var32 / var8; + this.columnGrowth[var23] = Math.max(this.columnGrowth[var23], var9 * var19 * var22); + this.rowGrowth[var24] = Math.max(this.rowGrowth[var24], var10 * var19 * var22); + } + + for (int var33 = 0; var33 < var8; var33++) { + float var35 = 0.0F; + + for (int var37 = 0; var37 < var8; var37++) { + if (var37 < var33) { + var35 += this.columnGrowth[var37] * 0.5F; + } else if (var37 > var33) { + var35 -= this.columnGrowth[var37] * 0.5F; + } + } + + this.columnOffsets[var33] = var35; + } + + float var34 = var5 - 3.0F; + float var36 = var5 + var7 + 3.0F - var9; + float var38 = var6; + + for (int var39 = 0; var39 < var18; var39++) { + float var41 = this.rowGrowth[var39] * 0.5F; + + for (int var25 = 0; var25 < var8; var25++) { + int var26 = var39 * var8 + var25; + if (var26 >= var17) { + break; + } + + mv var27 = this.entries.get(var3 + var26); + yn var28 = this.physicsOf(var27); + float var29 = var5 + var25 * (var9 + 6.0F) + this.columnOffsets[var25]; + var29 = Math.max(var34, Math.min(var36, var29)); + if (this.entering) { + var28.enter(6.0F); + } + + var28.update(var29, var38 + var41); + int var30 = var16 && asa.hits(var14, var15, var28.x(), var28.y(), var9, var10, var28.hoverValue(), var19) + ? 1: 0; + var28.hover((boolean)((var30) != 0)); + } + + var38 += var10 + this.rowGrowth[var39] + 6.0F; + } + + for (int var40 = 0; var40 < 2; var40++) { + int var42 = var40 == 1? 1: 0; + + for (int var43 = 0; var43 < var17; var43++) { + mv var44 = this.entries.get(var3 + var43); + yn var45 = this.physicsOf(var44); + if (( + var45.hoverValue() > 0.001F + ? 1: (-977214079 ^ 977214079) + ((-977214079 & 977214079) << 1) + ) + == var42) { + this.drawCard(var1, var2, var44, var45, var9, var10, var11, var19, var12, var13, var14, var15); + } + } + } + + return var38; + } + + private void drawCard(asq var1, yw var2, mv var3, yn var4, float var5, float var6, float var7, float var8, float var9, mv var10, float var11, float var12) { + float var13 = var4.x(); + float var14 = var4.y(); + float var15 = var4.hoverValue(); + int var16 = themes().getSelectedTheme() == var3 + ? 1: 0; + float var17 = this.motion.select(var3, ob.MEDIUM, (boolean)((var16) != 0)); + boolean var18 = themes().isUser(var3); + boolean var19 = asa.push(var1, var13, var14, var5, var6, var15, var8); + var1.pushMatrix(); + var1.pose().translate(var13, var14); + var1.pose().scale(var7, var7); + zy.draw(var1, 0.0F, 0.0F, var5 / var7, 88.0F, var3, var10, var3.getName(), var9, var15, var17, (boolean)((var16) != 0), 0.0F); + var1.popMatrix(); + float var20 = asa.scale(var15, var8); + float var21 = var13 + var5 * 0.5F; + float var22 = var14 + var6 * 0.5F; + float var23 = var14 + 4.0F; + float var24 = var13 + var5 - 11.0F - 4.0F; + float var25 = var24 - 11.0F - 3.0F; + float var26 = Math.max(var15, this.isArmed(var3) ? 1.0F : 0.0F); + this.cardBounds.set(var13, var14, var5, var6); + var2.add(var21 - var5 * var20 * 0.5F, var22 - var6 * var20 * 0.5F, var5 * var20, var6 * var20, (var6x, var8x) -> { + int var10x = 768038031; + + while (true) { + switch (var10x) { + case -70801359: + this.actions.switchTo(var3, this.cardBounds); + var10x = 1241989943; + break; + case 768038031: + default: + this.disarm(); + this.cardBounds.set(var13, var14, var5, var6); + if (this.actions != null) { + var10x = -70801359; + } else { + var10x = 1241989943; + } + break; + case 1241989943: + return (boolean)(((1)) != 0); + } + } + }); + if (var26 > 0.001F) { + this.drawCorner( + var1, + var2, + var3, + zg.RESET, + "G", + var24, + var23, + var21, + var22, + var20, + var26, + var9, + var10, + var11, + var12 + ); + if (var18) { + this.drawCorner( + var1, + var2, + var3, + zg.DELETE, + "M", + var25, + var23, + var21, + var22, + var20, + var26, + var9, + var10, + var11, + var12 + ); + } + } + + asa.pop(var1, var19); + if (var15 > 0.5F && !this.isArmed(var3)) { + ass.tooltip(var3, this.switchTooltip(var3), var13, var14, var5, var6, asr.BELOW); + } + } + + private void drawCorner( + asq var1, + yw var2, + mv var3, + zg var4, + String var5, + float var6, + float var7, + float var8, + float var9, + float var10, + float var11, + float var12, + mv var13, + float var14, + float var15 + ) { + float var16 = var8 + (var6 - var8) * var10; + float var17 = var9 + (var7 - var9) * var10; + float var18 = 11.0F * var10; + int var19 = this.armedTheme == var3 && this.armed == var4 + ? 1: 0; + int var20 = this.open && aqj.isHovered(var14, var15, var16, var17, var18, var18) + ? 1: 0; + float var21 = this.motion + .hover( + var4 == zg.RESET ? this.cornerKeyReset(var3) : this.cornerKeyDelete(var3), + (boolean)(((var20 == 0 && var19 == 0 ? 0: (1762311800 | -1762311799) + (1762311800 & -1762311799)) + ) != 0)); + asu var22 = asu.lerp(var13.getForegroundDark(), var13.getColor(), var21); + var1.drawRoundedRect(var6, var7, 11.0F, 11.0F, asj.pill(11.0F), var22.mulAlpha(var12 * var11 * (0.55F + 0.45F * var21))); + ge var23 = gl.ICONS.getFont(5.0F); + asu var24 = asu.lerp(var13.getWhite(), var13.getForegroundDark(), var21); + var1.drawText(var23, var5, var23.glyphCenterX(var5, var6, 11.0F), var23.glyphCenterY(var5, var7, 11.0F), var24.mulAlpha(var12 * var11)); + if (var20 != 0) { + String var25 = var4 == zg.RESET + ? ( + var19 != 0 + ? "Click again to reset this theme" + : "Reset to default - click twice" + ) + : ( + var19 != 0 + ? "Click again to delete it for good" + : "Delete this theme - click twice" + ); + ass.tooltip(var4 == zg.RESET ? this.cornerKeyReset(var3) : this.cornerKeyDelete(var3), var25, var16, var17, var18, var18, asr.ABOVE); + } + + if (this.open) { + var2.add(var16, var17, var18, var18, (var3x, var5x) -> { + int var7x = -483633021; + + while (true) { + switch (var7x) { + case -1815738016: + if (var4 == zg.RESET) { + var7x = -1749753235; + } else { + var7x = -439059862; + } + break; + case -1749753235: + this.actions.reset(var3); + var7x = -1005769932; + break; + case -1005769932: + return (boolean)(((1)) != 0); + case -483633021: + default: + if (this.armedTheme == var3) { + var7x = 1391641446; + } else { + var7x = 1498575865; + } + break; + case -439059862: + this.actions.delete(var3); + var7x = -1005769932; + break; + case 42082188: + this.disarm(); + if (this.actions != null) { + var7x = -1815738016; + } else { + var7x = -1005769932; + } + break; + case 1391641446: + if (this.armed == var4) { + var7x = 42082188; + } else { + var7x = 1498575865; + } + break; + case 1498575865: + this.armedTheme = var3; + this.armed = var4; + this.armedAt = System.currentTimeMillis(); + var7x = -1005769932; + } + } + }); + } + } + + private void drawFooter(asq var1, yw var2, float var3, float var4, float var5, float var6, mv var7, float var8, float var9) { + ge var10 = asp.font(oe.CAPTION); + ge var11 = gl.ICONS.getFont(5.0F); + float var12 = 16.0F + + zb.contentWidth( + var10, + var11, + "S", + "Save as new" + ); + float var13 = var3 + var5 - 9.0F - var12; + float var14 = var3 + 9.0F; + float var15 = Math.max(var13 - 6.0F - var14, 40.0F); + float var16 = var4 + 4.0F; + var1.drawRoundedRect(var14, var16, var15, 16.0F, asj.all(oc.CONTROL), var7.getForegroundDark().mulAlpha(var6)); + var1.drawRoundedBorder( + var14, var16, var15, 16.0F, 1.0F, asj.all(oc.CONTROL), (this.nameField.isSelected() ? var7.getColor() : var7.getForegroundStroke()).mulAlpha(var6) + ); + var1.pushClipBounds(var14, var16, var14 + var15 - 6.0F, var16 + 16.0F); + this.nameField.render(var1, var14 + 6.0F, var16 + (16.0F - var10.height()) * 0.5F, var7.getWhite().mulAlpha(var6), var7.getGray().mulAlpha(var6)); + var1.popClip(); + if (this.open) { + var2.add(var14, var16, var15, 16.0F, (var1x, var3x) -> { + this.nameField.setSelected((boolean)((((-2026489531 ^ 2026489532) + ((-2026489531 & 2026489532) << 1))) != 0)); + return (boolean)(((1)) != 0); + }); + } + + int var17 = this.open + && zb.hits( + var8, + var9, + var13, + var16, + var12, + 16.0F, + this.motion.peekHover("gallery.save"), + 6.0F + ) + ? 1: 0; + float var18 = this.motion.hover("gallery.save", (boolean)((var17) != 0)); + boolean var19 = zb.begin(var1, var13, var16, var12, 16.0F, var18, 6.0F); + var1.drawSurface(aso.CONTROL, var13, var16, var12, 16.0F, asj.all(oc.CONTROL), var7.getColor().mulAlpha(var6)); + zb.primaryHighlight(var1, var13, var16, var12, 16.0F, asj.all(oc.CONTROL), var7.getWhite(), var6, var18); + asu var20 = var7.getForegroundDark().mulAlpha(var6); + zb.content( + var1, + var10, + var11, + "S", + "Save as new", + var13, + var16, + var12, + 16.0F, + var20, + var20, + var18 + ); + zb.end(var1, var19); + if (var18 > 0.5F) { + ass.tooltip( + "gallery.save", + "Save the theme you are editing as a new theme and switch to it", + var13, + var16, + var12, + 16.0F, + asr.ABOVE + ); + } + + if (this.open) { + var2.add(var13, var16, var12, 16.0F, (var1x, var3x) -> { + this.submit(); + return (boolean)(((1)) != 0); + }); + } + } + + private void submit() { + int var1 = 1645679275; + + while (true) { + switch (var1) { + case -2085728272: + if (this.nameField == null) { + var1 = 1965595945; + } else { + var1 = 892928025; + } + break; + case 892928025: + this.nameField.setSelected((boolean)((((-629752749 ^ 629752749) + ((-629752749 & 629752749) << 1))) != 0)); + this.actions.saveAsNew(this.nameField.getText()); + return; + case 1645679275: + default: + if (this.actions != null) { + var1 = -2085728272; + } else { + var1 = 1965595945; + } + break; + case 1965595945: + return; + } + } + } + + public boolean mouseScrolled(double var1) { + int var3 = -643191816; + + while (true) { + switch (var3) { + case -1980765685: + return this.open; + case -1347603515: + this.scroll = Math.max(0.0F, Math.min(this.scroll - (float)var1 * 24.0F, this.scrollMax)); + return (boolean)(((1)) != 0); + case -643191816: + default: + if (this.open) { + var3 = 882741506; + } else { + var3 = -1980765685; + } + break; + case 882741506: + if (this.scrollMax <= 0.0F) { + var3 = -1980765685; + } else { + var3 = -1347603515; + } + } + } + } + + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = -362441981; + + while (true) { + switch (var4) { + case -1664213114: + return (boolean)(((0)) != 0); + case -1661260557: + if (var1 == (408925290 | -408924955) + (408925290 & -408924955)) { + var4 = -1613840791; + } else { + var4 = -1640947498; + } + break; + case -1640947498: + return this.nameField.keyPressed(var1, var2, var3); + case -1613840791: + this.submit(); + return (boolean)(((1)) != 0); + case -1592744512: + if (!this.nameField.isSelected()) { + var4 = -1664213114; + } else { + var4 = -848328762; + } + break; + case -848328762: + if (var1 != (367841432 | -367841175) + (367841432 & -367841175)) { + var4 = -1661260557; + } else { + var4 = -1613840791; + } + break; + case -362441981: + default: + if (this.open) { + var4 = -100016208; + } else { + var4 = -1664213114; + } + break; + case -100016208: + if (this.nameField != null) { + var4 = -1592744512; + } else { + var4 = -1664213114; + } + } + } + } + + public boolean charTyped(char var1, int var2) { + int var4 = 0; + int var3 = -1458474673; + + while (true) { + switch (var3) { + case -1871417555: + var4 = 0; + var3 = -417852106; + break; + case -1684616330: + if (this.nameField != null) { + var3 = -594534778; + } else { + var3 = -1871417555; + } + break; + case -1458474673: + default: + if (this.open) { + var3 = -1684616330; + } else { + var3 = -1871417555; + } + break; + case -911639027: + var4 = 1; + var3 = -417852106; + break; + case -594534778: + if (this.nameField.charTyped(var1, var2)) { + var3 = -911639027; + } else { + var3 = -1871417555; + } + break; + case -417852106: + return (boolean)((var4) != 0); + } + } + } + + public boolean isTyping() { + int var2 = 0; + int var1 = -329267835; + + while (true) { + switch (var1) { + case -1722393721: + if (this.nameField.isSelected()) { + var1 = -1169904091; + } else { + var1 = -75425130; + } + break; + case -1169904091: + var2 = 1; + var1 = 1790518748; + break; + case -329267835: + default: + if (this.open) { + var1 = 2139454537; + } else { + var1 = -75425130; + } + break; + case -75425130: + var2 = 0; + var1 = 1790518748; + break; + case 1790518748: + return (boolean)((var2) != 0); + case 2139454537: + if (this.nameField != null) { + var1 = -1722393721; + } else { + var1 = -75425130; + } + } + } + } + + public void stopTyping() { + int var1 = 522265625; + + while (true) { + switch (var1) { + case 510265276: + this.nameField.setSelected((boolean)((((923241515 ^ -923241515) + ((923241515 & -923241515) << 1))) != 0)); + var1 = 640285104; + break; + case 522265625: + default: + if (this.nameField != null) { + var1 = 510265276; + } else { + var1 = 640285104; + } + break; + case 640285104: + return; + } + } + } + + private boolean isArmed(mv var1) { + int var3 = 0; + int var2 = -2039843258; + + while (true) { + switch (var2) { + case -2039843258: + default: + if (this.armed != zg.NONE) { + var2 = -67757368; + } else { + var2 = -585380597; + } + break; + case -1849708074: + var3 = 1; + var2 = 690383189; + break; + case -585380597: + var3 = 0; + var2 = 690383189; + break; + case -67757368: + if (this.armedTheme == var1) { + var2 = -1849708074; + } else { + var2 = -585380597; + } + break; + case 690383189: + return (boolean)((var3) != 0); + } + } + } + + private void disarm() { + this.armed = zg.NONE; + this.armedTheme = null; + } + + private yn physicsOf(mv var1) { + yn var2 = null; + int var3 = 942615689; + + while (true) { + switch (var3) { + case -1521695807: + return var2; + case 942615689: + default: + var2 = this.physics.get(var1); + if (var2 == null) { + var3 = 1964315911; + } else { + var3 = -1521695807; + } + break; + case 1964315911: + var2 = new yn(); + this.physics.put(var1, var2); + var3 = -1521695807; + } + } + } + + private String switchTooltip(mv var1) { + String var2 = null; + int var3 = 1140574258; + + while (true) { + switch (var3) { + case -1655260226: + return var2; + case 213825396: + var2 = "Edit " + var1.getName(); + this.switchTooltips.put(var1, var2); + var3 = -1655260226; + break; + case 1140574258: + default: + var2 = this.switchTooltips.get(var1); + if (var2 == null) { + var3 = 213825396; + } else { + var3 = -1655260226; + } + } + } + } + + private Object cornerKeyReset(mv var1) { + return this.resetKeys.computeIfAbsent(var1, var0 -> zg.RESET.name() + var0.getName()); + } + + private Object cornerKeyDelete(mv var1) { + return this.deleteKeys.computeIfAbsent(var1, var0 -> zg.DELETE.name() + var0.getName()); + } + + private void pruneState() { + my var1 = null; + List var2 = null; + int var3 = -750487780; + + while (true) { + switch (var3) { + case -1832322580: + this.knownVersion = var1.version(); + var2 = var1.getThemes(); + this.physics.keySet().removeIf(var1x -> { + int var3x = 0; + int var2x = -762662513; + + while (true) { + switch (var2x) { + case -803275119: + var3x = 1; + var2x = 1904387350; + break; + case -762662513: + default: + if (!var2.contains(var1x)) { + var2x = -803275119; + } else { + var2x = -422643490; + } + break; + case -422643490: + var3x = 0; + var2x = 1904387350; + break; + case 1904387350: + return (boolean)((var3x) != 0); + } + } + }); + this.switchTooltips.keySet().removeIf(var1x -> { + int var3x = 0; + int var2x = 713869619; + + while (true) { + switch (var2x) { + case 713869619: + default: + if (!var2.contains(var1x)) { + var2x = 909700049; + } else { + var2x = 939847377; + } + break; + case 909700049: + var3x = 1; + var2x = 1442955046; + break; + case 939847377: + var3x = 0; + var2x = 1442955046; + break; + case 1442955046: + return (boolean)((var3x) != 0); + } + } + }); + this.resetKeys.keySet().removeIf(var1x -> { + int var3x = 0; + int var2x = -467296252; + + while (true) { + switch (var2x) { + case -467296252: + default: + if (!var2.contains(var1x)) { + var2x = 2084960832; + } else { + var2x = 1695298005; + } + break; + case -77129568: + return (boolean)((var3x) != 0); + case 1695298005: + var3x = 0; + var2x = -77129568; + break; + case 2084960832: + var3x = 1; + var2x = -77129568; + } + } + }); + this.deleteKeys.keySet().removeIf(var1x -> { + int var3x = 0; + int var2x = 1957571895; + + while (true) { + switch (var2x) { + case -1851907591: + var3x = 0; + var2x = -198566619; + break; + case -1851697449: + var3x = 1; + var2x = -198566619; + break; + case -198566619: + return (boolean)((var3x) != 0); + case 1957571895: + default: + if (!var2.contains(var1x)) { + var2x = -1851697449; + } else { + var2x = -1851907591; + } + } + } + }); + if (this.armedTheme != null) { + var3 = 2052195416; + } else { + var3 = 2083492665; + } + break; + case -863688295: + return; + case -750487780: + default: + var1 = themes(); + if (var1.version() == this.knownVersion) { + var3 = -863688295; + } else { + var3 = -1832322580; + } + break; + case 1766033770: + this.disarm(); + var3 = 2083492665; + break; + case 2052195416: + if (!var2.contains(this.armedTheme)) { + var3 = 1766033770; + } else { + var3 = 2083492665; + } + break; + case 2083492665: + return; + } + } + } + + private void ensureScratch(int var1, int var2) { + int var3 = 206171277; + + while (true) { + switch (var3) { + case -1278474187: + if (this.rowGrowth.length < var2) { + var3 = 104690488; + } else { + var3 = -881799120; + } + break; + case -881799120: + return; + case -521667385: + this.columnGrowth = new float[var1]; + this.columnOffsets = new float[var1]; + var3 = -1278474187; + break; + case 104690488: + this.rowGrowth = new float[var2]; + var3 = -881799120; + break; + case 206171277: + default: + if (this.columnGrowth.length < var1) { + var3 = -521667385; + } else { + var3 = -1278474187; + } + } + } + } + + private void ensureField() { + int var1 = 1638520245; + + while (true) { + switch (var1) { + case 552592421: + this.nameField = new arn( + new UVPair(0.0F, 0.0F), + gl.MEDIUM.getFont(7.0F), + "New theme name", + 140.0F + ); + var1 = 881087516; + break; + case 881087516: + return; + case 1638520245: + default: + if (this.nameField == null) { + var1 = 552592421; + } else { + var1 = 881087516; + } + } + } + } + + private static my themes() { + return bz.getInstance().getThemeManager(); + } +} diff --git a/src/main/java/defpackage/zi.java b/src/main/java/defpackage/zi.java new file mode 100644 index 0000000..eafe4c0 --- /dev/null +++ b/src/main/java/defpackage/zi.java @@ -0,0 +1,29 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:zi.class */ +/* synthetic */ class zi { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$theme$token$ThemeToken$Kind = new int[ol.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$theme$token$ThemeToken$Kind[ol.SLIDER.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$theme$token$ThemeToken$Kind[ol.COLOR.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$base$theme$token$ThemeToken$Kind[ol.FLAG.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$base$theme$token$ThemeToken$Kind[ol.CHOICE.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + try { + $SwitchMap$evo$systems$base$theme$token$ThemeToken$Kind[ol.ACTION.ordinal()] = 5; + } catch (NoSuchFieldError e5) { + } + } +} diff --git a/src/main/java/defpackage/zj.java b/src/main/java/defpackage/zj.java new file mode 100644 index 0000000..ebc51c1 --- /dev/null +++ b/src/main/java/defpackage/zj.java @@ -0,0 +1,550 @@ +package defpackage; + +import com.google.gson.JsonObject; +import java.util.ArrayDeque; +import java.util.Deque; +import java.util.List; + +public final class zj { + private static final int CAPACITY = 64; + private static final long SETTLE_MILLIS = 260L; + private static final long SAMPLE_MILLIS = 100L; + private static final long PRIME = 1099511628211L; + private static final long SEED = -3750763034362895579L; + private static final float QUANTIZE = 4096.0F; + private static final int FLAG_TRUE = 1; + private static final int FLAG_FALSE = 0; + private final Deque past = new ArrayDeque<>(); + private final Deque future = new ArrayDeque<>(); + private mv tracked; + private JsonObject present; + private long fingerprint; + private long changedAt; + private long sampledAt; + private boolean pending; + private boolean suspended; + private JsonObject committed; + private long committedFingerprint; + + public void attach(mv var1) { + int var2 = -762583568; + + while (true) { + switch (var2) { + case -762583568: + default: + if (var1 != null) { + var2 = 874337728; + } else { + var2 = 920558930; + } + break; + case 874337728: + if (var1 == this.tracked) { + var2 = 920558930; + } else { + var2 = 1440291855; + } + break; + case 920558930: + return; + case 1440291855: + this.tracked = var1; + this.past.clear(); + this.future.clear(); + this.present = mw.write(var1); + this.fingerprint = fingerprintOf(var1); + this.pending = (boolean)(((0)) != 0); + this.committed = this.present; + this.committedFingerprint = this.fingerprint; + return; + } + } + } + + public mv tracked() { + return this.tracked; + } + + public boolean hasUncommitted() { + int var2 = 0; + int var1 = 200972636; + + while (true) { + switch (var1) { + case -833016945: + return (boolean)((var2) != 0); + case -511614857: + var2 = 0; + var1 = -833016945; + break; + case 200972636: + default: + if (this.tracked != null) { + var1 = 980249075; + } else { + var1 = -511614857; + } + break; + case 594232368: + var2 = 1; + var1 = -833016945; + break; + case 980249075: + if (this.fingerprint != this.committedFingerprint) { + var1 = 594232368; + } else { + var1 = -511614857; + } + } + } + } + + public void markCommitted() { + int var1 = 1136673161; + + while (true) { + switch (var1) { + case -191300380: + this.flushPending(); + this.committed = mw.write(this.tracked); + this.fingerprint = fingerprintOf(this.tracked); + this.committedFingerprint = this.fingerprint; + return; + case 1136673161: + default: + if (this.tracked == null) { + var1 = 1320781269; + } else { + var1 = -191300380; + } + break; + case 1320781269: + return; + } + } + } + + public void revertToCommitted() { + int var1 = 973893559; + + while (true) { + switch (var1) { + case -1966671644: + this.flushPending(); + if (!this.committed.equals(this.present)) { + var1 = -361677008; + } else { + var1 = -788061457; + } + break; + case -788061457: + this.restore(this.committed); + return; + case -361677008: + this.past.push(this.present); + this.trim(); + this.future.clear(); + this.present = this.committed; + var1 = -788061457; + break; + case 973893559: + default: + if (this.tracked != null) { + var1 = 1507919457; + } else { + var1 = 1949227958; + } + break; + case 1507919457: + if (this.committed == null) { + var1 = 1949227958; + } else { + var1 = -1966671644; + } + break; + case 1949227958: + return; + } + } + } + + public void refreshNow() { + int var1 = -1656699752; + + while (true) { + switch (var1) { + case -2071953457: + if (!this.suspended) { + var1 = -799446345; + } else { + var1 = -1492229596; + } + break; + case -1656699752: + default: + if (this.tracked != null) { + var1 = -2071953457; + } else { + var1 = -1492229596; + } + break; + case -1492229596: + return; + case -799446345: + this.sampledAt = (3496762401373013103L | -3496762401373013103L) + (3496762401373013103L & -3496762401373013103L); + this.update(); + var1 = -1492229596; + } + } + } + + public void setSuspended(boolean var1) { + int var2 = -1192664374; + + while (true) { + switch (var2) { + case -1318262082: + return; + case -1192664374: + default: + if (this.suspended == var1) { + var2 = -1318262082; + } else { + var2 = 375370083; + } + break; + case 300731111: + if (this.tracked != null) { + var2 = 2021689724; + } else { + var2 = 423242791; + } + break; + case 375370083: + this.suspended = var1; + if (!this.suspended) { + var2 = 300731111; + } else { + var2 = 423242791; + } + break; + case 423242791: + return; + case 2021689724: + this.fingerprint = fingerprintOf(this.tracked); + this.pending = (boolean)(((0)) != 0); + var2 = 423242791; + } + } + } + + public void update() { + long var1 = (-5432659539763135254L | 5432659539763135254L) + (-5432659539763135254L & 5432659539763135254L); + long var3 = (-6477454412120526099L | 6477454412120526099L) + (-6477454412120526099L & 6477454412120526099L); + int var5 = -6920383; + + while (true) { + switch (var5) { + case -952761145: + var1 = System.currentTimeMillis(); + if (var1 - this.sampledAt < (-7115059557504455753L ^ 7115059557504455853L) + ((-7115059557504455753L & 7115059557504455853L) << 1)) { + var5 = -941984224; + } else { + var5 = 924909344; + } + break; + case -941984224: + return; + case -389598593: + this.pending = (boolean)(((0)) != 0); + this.commit(); + var5 = 90509174; + break; + case -6920383: + default: + if (this.tracked == null) { + var5 = 1869814087; + } else { + var5 = 1470185660; + } + break; + case 90509174: + return; + case 924909344: + this.sampledAt = var1; + var3 = fingerprintOf(this.tracked); + if (var3 != this.fingerprint) { + var5 = 1397101961; + } else { + var5 = 926951517; + } + break; + case 926951517: + if (this.pending) { + var5 = 1023165442; + } else { + var5 = 90509174; + } + break; + case 1023165442: + if (var1 - this.changedAt >= (2921675833044240569L | -2921675833044240309L) + (2921675833044240569L & -2921675833044240309L)) { + var5 = -389598593; + } else { + var5 = 90509174; + } + break; + case 1397101961: + this.fingerprint = var3; + this.changedAt = var1; + this.pending = (boolean)(((1)) != 0); + return; + case 1470185660: + if (this.suspended) { + var5 = 1833816908; + } else { + var5 = -952761145; + } + break; + case 1833816908: + return; + case 1869814087: + return; + } + } + } + + public boolean canUndo() { + int var2 = 0; + int var1 = -698190954; + + while (true) { + switch (var1) { + case -1118147218: + var2 = 0; + var1 = 1703244139; + break; + case -698190954: + default: + if (!this.past.isEmpty()) { + var1 = 1603560301; + } else { + var1 = -1118147218; + } + break; + case 1603560301: + var2 = 1; + var1 = 1703244139; + break; + case 1703244139: + return (boolean)((var2) != 0); + } + } + } + + public boolean canRedo() { + int var2 = 0; + int var1 = -248144889; + + while (true) { + switch (var1) { + case -1028132016: + return (boolean)((var2) != 0); + case -248144889: + default: + if (!this.future.isEmpty()) { + var1 = 1759782350; + } else { + var1 = 2114397720; + } + break; + case 1759782350: + var2 = 1; + var1 = -1028132016; + break; + case 2114397720: + var2 = 0; + var1 = -1028132016; + } + } + } + + public void undo() { + int var1 = -1158660007; + + while (true) { + switch (var1) { + case -2006917678: + return; + case -1981622370: + return; + case -1574351732: + if (this.past.isEmpty()) { + var1 = -2006917678; + } else { + var1 = -538570191; + } + break; + case -1158660007: + default: + if (this.tracked != null) { + var1 = -1574351732; + } else { + var1 = -2006917678; + } + break; + case -851953525: + this.future.push(this.present); + this.present = this.past.pop(); + this.restore(this.present); + return; + case -538570191: + this.flushPending(); + if (this.past.isEmpty()) { + var1 = -1981622370; + } else { + var1 = -851953525; + } + } + } + } + + public void redo() { + int var1 = 188646739; + + while (true) { + switch (var1) { + case -1690965077: + if (this.future.isEmpty()) { + var1 = 1286177680; + } else { + var1 = 1648825602; + } + break; + case 188646739: + default: + if (this.tracked != null) { + var1 = -1690965077; + } else { + var1 = 1286177680; + } + break; + case 1286177680: + return; + case 1648825602: + this.past.push(this.present); + this.present = this.future.pop(); + this.restore(this.present); + return; + } + } + } + + private void flushPending() { + int var1 = -1908919044; + + while (true) { + switch (var1) { + case -1908919044: + default: + if (!this.pending) { + var1 = 1721693751; + } else { + var1 = -1242678002; + } + break; + case -1242678002: + this.pending = (boolean)(((0)) != 0); + this.commit(); + return; + case 1721693751: + return; + } + } + } + + private void commit() { + JsonObject var1 = null; + int var2 = 312854571; + + while (true) { + switch (var2) { + case -1783832355: + return; + case -613777864: + this.past.push(this.present); + this.trim(); + this.future.clear(); + this.present = var1; + return; + case 312854571: + } + + var1 = mw.write(this.tracked); + if (var1.equals(this.present)) { + var2 = -1783832355; + } else { + var2 = -613777864; + } + } + } + + private void trim() { + int var1 = 140999691; + + while (true) { + switch (var1) { + case -205221941: + return; + case 140999691: + default: + if (this.past.size() > (-40917110 ^ 40917174) + ((-40917110 & 40917174) << 1)) { + var1 = 414951808; + } else { + var1 = -205221941; + } + break; + case 414951808: + this.past.removeLast(); + var1 = 140999691; + } + } + } + + private void restore(JsonObject var1) { + mw.read(this.tracked, var1); + this.fingerprint = fingerprintOf(this.tracked); + this.pending = (boolean)(((0)) != 0); + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private static long fingerprintOf(mv var0) { + List var1 = op.all(); + long var2 = (-4632912954264235803L ^ 882149919901340224L) + ((-4632912954264235803L & 882149919901340224L) << 1); + + for (int var4 = 0; var4 < var1.size(); var4++) { + oo var5 = (oo)var1.get(var4); + + var2 = mix( + var2, + switch (zi.$SwitchMap$evo$systems$base$theme$token$ThemeToken$Kind[var5.kind().ordinal()]) { + case 1 -> Math.round(var5.readFloat(var0) * 4096.0F); + case 2 -> var5.readColor(var0).getRGB(); + case 3 -> var5.readFlag(var0) + ? (2318980554886790875L ^ -2318980554886790874L) + ((2318980554886790875L & -2318980554886790874L) << 1) + : (-6929166927155900138L | 6929166927155900138L) + (-6929166927155900138L & 6929166927155900138L); + case 4 -> var5.readText(var0).hashCode(); + case 5 -> (-310568825553881877L | 310568825553881877L) + (-310568825553881877L & 310568825553881877L); + default -> throw new MatchException(null, null); + } + ); + } + + return var2; + } + + private static long mix(long var0, long var2) { + return (var0 ^ var2) * ((5972269454176558810L | -5972268354664930599L) + (5972269454176558810L & -5972268354664930599L)); + } +} diff --git a/src/main/java/defpackage/zk.java b/src/main/java/defpackage/zk.java new file mode 100644 index 0000000..ac42ce2 --- /dev/null +++ b/src/main/java/defpackage/zk.java @@ -0,0 +1,58 @@ +package defpackage; + +import java.util.function.Supplier; + +/* JADX INFO: loaded from: evovis-dec.jar:zk.class */ +class zk implements zq { + final /* synthetic */ oo val$token; + final /* synthetic */ Supplier val$target; + final /* synthetic */ float[] val$pushed; + final /* synthetic */ boolean[] val$syncing; + final /* synthetic */ sm val$setting; + + /* JADX WARN: Switch 'out' block B:3:0x000e for B:4:0x000f already processed. Defaulting to fallback option. */ + @Override // defpackage.zq + public void run() { + int i = 2012019455; + int i2 = 839161990; + while (true) { + switch (i + i2) { + case -1443785851: + default: + if (this.val$token.readFloat((mv) this.val$target.get()) == this.val$pushed[0]) { + i = 826298515; + i2 = -1791097136; + } else { + i = -268738859; + i2 = 202916032; + } + break; + case -964798621: + return; + case -65822827: + pull(); + return; + } + } + } + + zk(oo ooVar, Supplier supplier, float[] fArr, boolean[] zArr, sm smVar) { + this.val$token = ooVar; + this.val$target = supplier; + this.val$pushed = fArr; + this.val$syncing = zArr; + this.val$setting = smVar; + } + + /* JADX WARN: Multi-variable type inference failed */ + /* JADX WARN: Type inference failed for: r2v10, types: [int] */ + /* JADX WARN: Type inference failed for: r2v16, types: [int] */ + @Override // defpackage.zq + public void pull() { + float f = this.val$token.readFloat((mv) this.val$target.get()); + this.val$pushed[0] = f; + this.val$syncing[0] = 1; + this.val$setting.setCurrent(f); + this.val$syncing[0] = 0; + } +} diff --git a/src/main/java/defpackage/zl.java b/src/main/java/defpackage/zl.java new file mode 100644 index 0000000..9806466 --- /dev/null +++ b/src/main/java/defpackage/zl.java @@ -0,0 +1,70 @@ +package defpackage; + +import java.util.function.Supplier; + +/* JADX INFO: loaded from: evovis-dec.jar:zl.class */ +class zl implements zq { + final /* synthetic */ rx val$setting; + final /* synthetic */ int[] val$pushed; + final /* synthetic */ oo val$token; + final /* synthetic */ Supplier val$target; + + @Override // defpackage.zq + public void run() { + asu color = null; + asu color2 = null; + int i = -193767160; + int i2 = 592106; + while (true) { + switch (i + i2) { + case -1859558846: + this.val$pushed[0] = color2.getRGB(); + this.val$setting.setColor(color2); + i = -275993602; + i2 = 1644691610; + break; + case -193175054: + default: + color = this.val$setting.getColor(); + if (color.getRGB() == this.val$pushed[0]) { + i = -1736847762; + i2 = -821272064; + } else { + i = 1128578969; + i2 = 812908680; + } + break; + case 1368698008: + return; + case 1736847470: + color2 = this.val$token.readColor((mv) this.val$target.get()); + if (color2.getRGB() == this.val$pushed[0]) { + i = 1280463446; + i2 = 88234562; + } else { + i = -22560769; + i2 = -1836998077; + } + break; + case 1941487649: + this.val$pushed[0] = color.getRGB(); + this.val$token.writeColor((mv) this.val$target.get(), color); + return; + } + } + } + + zl(rx rxVar, int[] iArr, oo ooVar, Supplier supplier) { + this.val$setting = rxVar; + this.val$pushed = iArr; + this.val$token = ooVar; + this.val$target = supplier; + } + + @Override // defpackage.zq + public void pull() { + asu color = this.val$token.readColor((mv) this.val$target.get()); + this.val$pushed[0] = color.getRGB(); + this.val$setting.setColor(color); + } +} diff --git a/src/main/java/defpackage/zm.java b/src/main/java/defpackage/zm.java new file mode 100644 index 0000000..2e144e8 --- /dev/null +++ b/src/main/java/defpackage/zm.java @@ -0,0 +1,93 @@ +package defpackage; + +import java.util.function.Supplier; + +/* JADX INFO: loaded from: evovis-dec.jar:zm.class */ +class zm implements zq { + final /* synthetic */ ru val$setting; + final /* synthetic */ boolean[] val$pushed; + final /* synthetic */ oo val$token; + final /* synthetic */ Supplier val$target; + + /* JADX WARN: Multi-variable type inference failed */ + /* JADX WARN: Type inference failed for: r2v19 */ + /* JADX WARN: Type inference failed for: r2v26 */ + /* JADX WARN: Type inference failed for: r7v0 */ + /* JADX WARN: Type inference failed for: r7v1 */ + /* JADX WARN: Type inference failed for: r7v2 */ + /* JADX WARN: Type inference failed for: r7v3 */ + /* JADX WARN: Type inference failed for: r7v4 */ + /* JADX WARN: Type inference failed for: r8v0 */ + /* JADX WARN: Type inference failed for: r8v1 */ + /* JADX WARN: Type inference failed for: r8v2 */ + /* JADX WARN: Type inference failed for: r8v3 */ + /* JADX WARN: Type inference failed for: r8v4 */ + /* JADX WARN: Type inference fix 'apply assigned field type' failed + java.lang.UnsupportedOperationException: ArgType.getObject(), call class: class jadx.core.dex.instructions.args.ArgType$UnknownArg + at jadx.core.dex.instructions.args.ArgType.getObject(ArgType.java:596) + at jadx.core.dex.attributes.nodes.ClassTypeVarsAttr.getTypeVarsMapFor(ClassTypeVarsAttr.java:35) + at jadx.core.dex.nodes.utils.TypeUtils.replaceClassGenerics(TypeUtils.java:177) + at jadx.core.dex.visitors.typeinference.FixTypesVisitor.insertExplicitUseCast(FixTypesVisitor.java:397) + at jadx.core.dex.visitors.typeinference.FixTypesVisitor.tryFieldTypeWithNewCasts(FixTypesVisitor.java:359) + at jadx.core.dex.visitors.typeinference.FixTypesVisitor.applyFieldType(FixTypesVisitor.java:309) + at jadx.core.dex.visitors.typeinference.FixTypesVisitor.visit(FixTypesVisitor.java:94) + */ + @Override // defpackage.zq + public void run() { + boolean IsEnabled = false; + boolean flag = false; + int i = 2100809724; + int i2 = 1157955596; + while (true) { + switch (i + i2) { + case -1890831546: + return; + case -1554842003: + this.val$pushed[0] = (IsEnabled == true ? 1 : 0) == true ? 1 : 0; + this.val$token.writeFlag((mv) this.val$target.get(), IsEnabled == true ? 1 : 0); + return; + case -1036201976: + default: + IsEnabled = this.val$setting.isEnabled(); + if (IsEnabled == this.val$pushed[0]) { + i = 1916948138; + i2 = 153698464; + } else { + i = -1644495363; + i2 = 89653360; + } + break; + case 3599530: + this.val$pushed[0] = (flag == true ? 1 : 0) == true ? 1 : 0; + this.val$setting.setEnabled(flag == true ? 1 : 0); + i = 205769910; + i2 = -2096601456; + break; + case 2070646602: + flag = this.val$token.readFlag((mv) this.val$target.get()); + if (flag == this.val$pushed[0]) { + i = 2146120438; + i2 = 258015312; + } else { + i = -1188961; + i2 = 4788491; + } + break; + } + } + } + + zm(ru ruVar, boolean[] zArr, oo ooVar, Supplier supplier) { + this.val$setting = ruVar; + this.val$pushed = zArr; + this.val$token = ooVar; + this.val$target = supplier; + } + + @Override // defpackage.zq + public void pull() { + boolean flag = this.val$token.readFlag((mv) this.val$target.get()); + this.val$pushed[0] = flag; + this.val$setting.setEnabled(flag); + } +} diff --git a/src/main/java/defpackage/zn.java b/src/main/java/defpackage/zn.java new file mode 100644 index 0000000..d52ae98 --- /dev/null +++ b/src/main/java/defpackage/zn.java @@ -0,0 +1,70 @@ +package defpackage; + +import java.util.function.Supplier; + +/* JADX INFO: loaded from: evovis-dec.jar:zn.class */ +class zn implements zq { + final /* synthetic */ sg val$setting; + final /* synthetic */ String[] val$pushed; + final /* synthetic */ oo val$token; + final /* synthetic */ Supplier val$target; + + @Override // defpackage.zq + public void run() { + String str = null; + String text = null; + int i = -537137201; + int i2 = 50569538; + while (true) { + switch (i + i2) { + case -486567663: + default: + str = this.val$setting.get(); + if (!str.equals(this.val$pushed[0])) { + i = 1065304058; + i2 = 588190736; + } else { + i = 339807592; + i2 = 287360004; + } + break; + case 536193106: + this.val$pushed[0] = text; + this.val$setting.set(text); + i = -441452929; + i2 = -2070953978; + break; + case 627167596: + text = this.val$token.readText((mv) this.val$target.get()); + if (!text.equals(this.val$pushed[0])) { + i = -545261646; + i2 = 1081454752; + } else { + i = -1074006411; + i2 = -1438400496; + } + break; + case 1653494794: + this.val$pushed[0] = str; + this.val$token.writeText((mv) this.val$target.get(), str); + return; + case 1782560389: + return; + } + } + } + + zn(sg sgVar, String[] strArr, oo ooVar, Supplier supplier) { + this.val$setting = sgVar; + this.val$pushed = strArr; + this.val$token = ooVar; + this.val$target = supplier; + } + + @Override // defpackage.zq + public void pull() { + String text = this.val$token.readText((mv) this.val$target.get()); + this.val$pushed[0] = text; + this.val$setting.set(text); + } +} diff --git a/src/main/java/defpackage/zo.java b/src/main/java/defpackage/zo.java new file mode 100644 index 0000000..8205a89 --- /dev/null +++ b/src/main/java/defpackage/zo.java @@ -0,0 +1,15 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:zo.class */ +class zo implements zq { + zo() { + } + + @Override // defpackage.zq + public void run() { + } + + @Override // defpackage.zq + public void pull() { + } +} diff --git a/src/main/java/defpackage/zp.java b/src/main/java/defpackage/zp.java new file mode 100644 index 0000000..a4652fb --- /dev/null +++ b/src/main/java/defpackage/zp.java @@ -0,0 +1,29 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:zp.class */ +/* synthetic */ class zp { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$theme$token$ThemeToken$Kind = new int[ol.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$theme$token$ThemeToken$Kind[ol.SLIDER.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$theme$token$ThemeToken$Kind[ol.COLOR.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$base$theme$token$ThemeToken$Kind[ol.FLAG.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$base$theme$token$ThemeToken$Kind[ol.CHOICE.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + try { + $SwitchMap$evo$systems$base$theme$token$ThemeToken$Kind[ol.ACTION.ordinal()] = 5; + } catch (NoSuchFieldError e5) { + } + } +} diff --git a/src/main/java/defpackage/zq.java b/src/main/java/defpackage/zq.java new file mode 100644 index 0000000..9171b60 --- /dev/null +++ b/src/main/java/defpackage/zq.java @@ -0,0 +1,7 @@ +package defpackage; + +interface zq { + void run(); + + void pull(); +} diff --git a/src/main/java/defpackage/zr.java b/src/main/java/defpackage/zr.java new file mode 100644 index 0000000..582d00d --- /dev/null +++ b/src/main/java/defpackage/zr.java @@ -0,0 +1,319 @@ +package defpackage; + +import java.util.function.Supplier; + +public final class zr { + private static final Supplier SELECTED = () -> bz.getInstance().getThemeManager().getSelectedTheme(); + private final oo token; + private final aay setting; + private final zq sync; + private final Supplier target; + + private zr(oo var1, aay var2, zq var3, Supplier var4) { + this.token = var1; + this.setting = var2; + this.sync = var3; + this.target = var4; + } + + public static zr of(oo var0) { + return of(var0, SELECTED); + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public static zr of(oo var0, Supplier var1) { + return switch (zp.$SwitchMap$evo$systems$base$theme$token$ThemeToken$Kind[var0.kind().ordinal()]) { + case 1 -> slider(var0, var1); + case 2 -> color(var0, var1); + case 3 -> flag(var0, var1); + case 4 -> choice(var0, var1); + case 5 -> action(var0, var1); + default -> throw new MatchException(null, null); + }; + } + + public oo token() { + return this.token; + } + + public aay setting() { + return this.setting; + } + + public float height() { + return this.setting.getHeight(); + } + + public void sync() { + this.sync.run(); + } + + public boolean isModified() { + return this.token.isModified(this.target.get()); + } + + public void revert() { + this.token.revert(this.target.get()); + this.sync.pull(); + } + + public void pull() { + this.sync.pull(); + } + + private static zr slider(final oo var0, final Supplier var1) { + float[] var10000 = new float[1]; + var10000[0] = var0.readFloat((mv)var1.get()); + final float[] var2 = var10000; + boolean[] var6 = new boolean[1]; + var6[0] = (boolean)(((0)) != 0); + final boolean[] var3 = var6; + final sm var4 = new sm( + var0.label(), var2[0], var0.min(), var0.max(), var0.step(), (var4x, var5x) -> { + int var6x = -2121532772; + + while (true) { + switch (var6x) { + case -2121532772: + default: + if (var3[0]) { + var6x = -817015314; + } else { + var6x = -183974187; + } + break; + case -817015314: + return; + case -183974187: + var2[0] = var5x; + var0.writeFloat((mv)var1.get(), var5x); + return; + } + } + } + ); + var4.description(var0.description()); + zq var5 = new zq() { + @Override + public void run() { + float var1x = 0.0F; + int var2x = -1443785851; + + while (true) { + switch (var2x) { + case -1443785851: + default: + var1x = var0.readFloat((mv)var1.get()); + if (var1x == var2[0]) { + var2x = -964798621; + } else { + var2x = -65822827; + } + break; + case -964798621: + return; + case -65822827: + this.pull(); + return; + } + } + } + + @Override + public void pull() { + float var1x = var0.readFloat((mv)var1.get()); + var2[0] = var1x; + var3[0] = (boolean)(((1)) != 0); + var4.setCurrent(var1x); + var3[0] = (boolean)(((0)) != 0); + } + }; + return new zr(var0, new abo(var4), var5, var1); + } + + private static zr color(final oo var0, final Supplier var1) { + int[] var10000 = new int[1]; + var10000[0] = var0.readColor((mv)var1.get()).getRGB(); + final int[] var2 = var10000; + final rx var3 = new rx(var0.label(), var0.readColor((mv)var1.get())); + var3.description(var0.description()); + zq var4 = new zq() { + @Override + public void run() { + asu var1x = null; + asu var2x = null; + int var3x = -193175054; + + while (true) { + switch (var3x) { + case -1859558846: + var2[0] = var2x.getRGB(); + var3.setColor(var2x); + var3x = 1368698008; + break; + case -193175054: + default: + var1x = var3.getColor(); + if (var1x.getRGB() != var2[0]) { + var3x = 1941487649; + } else { + var3x = 1736847470; + } + break; + case 1368698008: + return; + case 1736847470: + var2x = var0.readColor((mv)var1.get()); + if (var2x.getRGB() != var2[0]) { + var3x = -1859558846; + } else { + var3x = 1368698008; + } + break; + case 1941487649: + var2[0] = var1x.getRGB(); + var0.writeColor((mv)var1.get(), var1x); + return; + } + } + } + + @Override + public void pull() { + asu var1x = var0.readColor((mv)var1.get()); + var2[0] = var1x.getRGB(); + var3.setColor(var1x); + } + }; + return new zr(var0, new abg(var3), var4, var1); + } + + private static zr flag(final oo var0, final Supplier var1) { + boolean[] var10000 = new boolean[1]; + var10000[0] = var0.readFlag((mv)var1.get()); + final boolean[] var2 = var10000; + final ru var3 = new ru(var0.label(), var0.description(), var2[0]); + zq var4 = new zq() { + @Override + public void run() { + int var1x = 0; + int var2x = 0; + int var3x = -1036201976; + + while (true) { + switch (var3x) { + case -1890831546: + return; + case -1554842003: + var2[0] = (boolean)((var1x) != 0); + var0.writeFlag((mv)var1.get(), (boolean)((var1x) != 0)); + return; + case -1036201976: + default: + var1x = (var3.isEnabled()) ? 1 : 0; + if (var1x != var2[0]) { + var3x = -1554842003; + } else { + var3x = 2070646602; + } + break; + case 3599530: + var2[0] = (boolean)((var2x) != 0); + var3.setEnabled((boolean)((var2x) != 0)); + var3x = -1890831546; + break; + case 2070646602: + var2x = (var0.readFlag((mv)var1.get())) ? 1 : 0; + if (var2x != var2[0]) { + var3x = 3599530; + } else { + var3x = -1890831546; + } + } + } + } + + @Override + public void pull() { + boolean var1x = var0.readFlag((mv)var1.get()); + var2[0] = var1x; + var3.setEnabled(var1x); + } + }; + return new zr(var0, new abe(var3), var4, var1); + } + + private static zr choice(final oo var0, final Supplier var1) { + final sg var2 = new sg(var0.label(), var0.options()); + var2.description(var0.description()); + String[] var10000 = new String[1]; + var10000[0] = var0.readText((mv)var1.get()); + final String[] var3 = var10000; + var2.set(var3[0]); + zq var4 = new zq() { + @Override + public void run() { + String var1x = null; + String var2x = null; + int var3x = -486567663; + + while (true) { + switch (var3x) { + case -486567663: + default: + var1x = var2.get(); + if (!var1x.equals(var3[0])) { + var3x = 1653494794; + } else { + var3x = 627167596; + } + break; + case 536193106: + var3[0] = var2x; + var2.set(var2x); + var3x = 1782560389; + break; + case 627167596: + var2x = var0.readText((mv)var1.get()); + if (!var2x.equals(var3[0])) { + var3x = 536193106; + } else { + var3x = 1782560389; + } + break; + case 1653494794: + var3[0] = var1x; + var0.writeText((mv)var1.get(), var1x); + return; + case 1782560389: + return; + } + } + } + + @Override + public void pull() { + String var1x = var0.readText((mv)var1.get()); + var3[0] = var1x; + var2.set(var1x); + } + }; + return new zr(var0, new abl(var2), var4, var1); + } + + private static zr action(oo var0, Supplier var1) { + rv var2 = new rv(var0.label(), var0::run); + var2.description(var0.description()); + zq var3 = new zq() { + @Override + public void run() { + } + + @Override + public void pull() { + } + }; + return new zr(var0, new abf(var2), var3, var1); + } +} diff --git a/src/main/java/defpackage/zs.java b/src/main/java/defpackage/zs.java new file mode 100644 index 0000000..2676a45 --- /dev/null +++ b/src/main/java/defpackage/zs.java @@ -0,0 +1,73 @@ +package defpackage; + +/* JADX INFO: loaded from: evovis-dec.jar:zs.class */ +/* synthetic */ class zs { + static final /* synthetic */ int[] $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview = new int[nh.values().length]; + + static { + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.CORNER.ordinal()] = 1; + } catch (NoSuchFieldError e) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.BORDER.ordinal()] = 2; + } catch (NoSuchFieldError e2) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.DIVIDER.ordinal()] = 3; + } catch (NoSuchFieldError e3) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.DEPTH.ordinal()] = 4; + } catch (NoSuchFieldError e4) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.GLOW.ordinal()] = 5; + } catch (NoSuchFieldError e5) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.SWEEP.ordinal()] = 6; + } catch (NoSuchFieldError e6) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.GLASS.ordinal()] = 7; + } catch (NoSuchFieldError e7) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.MOTION.ordinal()] = 8; + } catch (NoSuchFieldError e8) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.TEXT_SCALE.ordinal()] = 9; + } catch (NoSuchFieldError e9) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.FONT.ordinal()] = 10; + } catch (NoSuchFieldError e10) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.DENSITY.ordinal()] = 11; + } catch (NoSuchFieldError e11) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.SPACING.ordinal()] = 12; + } catch (NoSuchFieldError e12) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.POLARITY.ordinal()] = 13; + } catch (NoSuchFieldError e13) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.HARMONY.ordinal()] = 14; + } catch (NoSuchFieldError e14) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.BACKDROP.ordinal()] = 15; + } catch (NoSuchFieldError e15) { + } + try { + $SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[nh.INTENSITY.ordinal()] = 16; + } catch (NoSuchFieldError e16) { + } + } +} diff --git a/src/main/java/defpackage/zt.java b/src/main/java/defpackage/zt.java new file mode 100644 index 0000000..814d8fa --- /dev/null +++ b/src/main/java/defpackage/zt.java @@ -0,0 +1,884 @@ +package defpackage; + +import java.util.Iterator; +import java.util.List; + +public final class zt { + private static final float TITLE_HEIGHT = 14.0F; + private static final float TILE_GAP = 4.0F; + private static final float ROW_GAP = 11.0F; + private static final float TILE_ASPECT = 0.66F; + private static final float LABEL_HEIGHT = 11.0F; + private static final float TILE_PAD = 4.0F; + private static final float TARGET_TILE_WIDTH = 46.0F; + private static final float MAX_TILE_WIDTH = 74.0F; + private static final int MIN_COLUMNS = 2; + private static final float BORDER = 1.0F; + private static final float SELECTED_BORDER = 1.8F; + private static final float IDLE_PLATE_ALPHA = 0.08F; + private static final float HOVER_PLATE_ALPHA = 0.13F; + private static final float ACTIVE_PLATE_ALPHA = 0.28F; + private static final float HOVER_LIFT = 2.0F; + private static final float HOVER_SHADOW_SOFTNESS = 5.0F; + private static final float HOVER_SHADOW_ALPHA = 0.3F; + private static final float SELECT_GLOW_SOFTNESS = 6.0F; + private static final float SELECT_GLOW_ALPHA = 0.3F; + private static final float BORDER_HOVER_MIX = 0.55F; + private static final float CHECK_GLYPH = 4.5F; + private static final float CHECK_GAP = 2.5F; + private static final float TITLE_RULE_GAP = 5.0F; + private static final float TITLE_RULE_HEIGHT = 1.0F; + private static final float HALF = 0.5F; + private static final float IDENTITY_DELTA = 1.0F; + private static final float SHADOW_SAMPLE_INSET = 3.0F; + private static final asu DEPTH_TABLE = new asu( + 226, + 226, + (1201048288 ^ -1201048056) + ((1201048288 & -1201048056) << 1) + ); + private static final float DEPTH_SHADOW_DROP = 1.5F; + private static final float DEPTH_SHADOW_GAIN = 1.6F; + private static final float GLOW_SOFTNESS_SCALE = 1.8F; + private static final float GLOW_ALPHA_SCALE = 0.55F; + private static final float SWEEP_BAR_RATIO = 0.28F; + private static final float SWEEP_PERIOD_MILLIS = 2200.0F; + private static final float MOTION_PERIOD_MILLIS = 1800.0F; + private static final float BAR_HEIGHT = 2.5F; + private static final int BAR_COUNT = 3; + private static final float DOT_SIZE = 4.0F; + private static final float HARMONY_RING = 0.74F; + private static final float HARMONY_DOT = 5.0F; + private static final float DEGREES = 180.0F / (float)Math.PI; + private static final float BACKDROP_PREVIEW_INTENSITY = 1.0F; + private static final int GLASS_STRIPES = 3; + private static final float GLASS_STRIPE_ALPHA = 0.55F; + private static final float GLASS_PANE_INSET_RATIO = 0.12F; + private static final float GLASS_PANE_TOP_RATIO = 0.2F; + private static final float GLASS_PANE_HEIGHT_RATIO = 0.6F; + private static final float GLASS_REFRACT_SHIFT = 6.0F; + private static final float GLASS_FROST_FADE = 0.75F; + private static final float GLASS_SPECULAR_RATIO = 0.42F; + private static final float MOTION_TRACK_ALPHA = 0.18F; + private static final float OUTLINE_SAMPLE_ALPHA = 0.82F; + private static final float TEXT_BODY_ALPHA = 1.0F; + private static final String SAMPLE_TEXT = "Aa"; + private static final String SAMPLE_BODY = "body"; + private final za paint = new za(); + private mv scratch; + + public float height(List var1, float var2) { + float var3 = 0.0F; + int var4 = 0; + int var5 = -1664770493; + + while (true) { + switch (var5) { + case -1664770493: + default: + var3 = 0.0F; + var4 = 0; + var5 = 1395151315; + break; + case -1247206878: + return var3; + case 875089665: + var3 += this.rowHeight((nw)var1.get(var4), var2); + if (var4 < var1.size() - ((-803041604 | 803041605) + (-803041604 & 803041605))) { + var5 = 1566867393; + } else { + var5 = 1259170885; + } + break; + case 1259170885: + var4++; + var5 = 1395151315; + break; + case 1395151315: + if (var4 < var1.size()) { + var5 = 875089665; + } else { + var5 = -1247206878; + } + break; + case 1566867393: + var3 += 11.0F; + var5 = 1259170885; + } + } + } + + private int columnsFor(nw var1, float var2) { + int var3 = (int)Math.floor((var2 + 4.0F) / 50.0F); + int var4 = Math.max( + 2, + Math.min(var1.columns(), Math.max(var3, (537561414 | -537561412) + (537561414 & -537561412))) + ); + return Math.min(var4, var1.variants().size()); + } + + private float tileWidthFor(int var1, float var2) { + return Math.min(74.0F, (var2 - 4.0F * (var1 - ((-877040270 | 877040271) + (-877040270 & 877040271)))) / var1); + } + + private float gapFor(int var1, float var2, float var3) { + float var4 = 0.0F; + int var5 = -689157371; + + while (true) { + switch (var5) { + case -689157371: + default: + if (var1 <= (38072856 | -38072855) + (38072856 & -38072855)) { + var5 = -75112503; + } else { + var5 = 383134734; + } + break; + case -75112503: + return 4.0F; + case 383134734: + var4 = var3 - var2 * var1; + return Math.max(4.0F, var4 / (var1 - ((-212883007 | 212883008) + (-212883007 & 212883008)))); + } + } + } + + private float rowHeight(nw var1, float var2) { + int var3 = this.columnsFor(var1, var2); + int var4 = (var1.variants().size() + var3 - ((142524222 ^ -142524221) + ((142524222 & -142524221) << 1))) / var3; + float var5 = this.tileWidthFor(var3, var2) * 0.66F + 11.0F; + return 14.0F + var4 * var5 + (var4 - ((-2089063750 | 2089063751) + (-2089063750 & 2089063751))) * 4.0F; + } + + public void render(asq var1, yw var2, List var3, float var4, float var5, float var6, float var7, mv var8, mv var9, float var10, float var11, ze var12) { + float var13 = 0.0F; + Iterator var14 = null; + nw var15 = null; + float var16 = 0.0F; + int var17 = 0; + float var18 = 0.0F; + float var19 = 0.0F; + float var20 = 0.0F; + float var21 = 0.0F; + List var22 = null; + int var23 = 0; + float var24 = 0.0F; + float var25 = 0.0F; + ni var26 = null; + int var27 = 580416436; + + while (true) { + switch (var27) { + case -1679028993: + return; + case -416415069: + var13 += this.rowHeight(var15, var6) + 11.0F; + var27 = 485156413; + break; + case -20985117: + var15 = (nw)var14.next(); + this.drawRowTitle(var1, var15, var4, var13, var6, var7, var8); + var16 = var13 + 14.0F; + var17 = this.columnsFor(var15, var6); + var18 = this.tileWidthFor(var17, var6); + var19 = this.gapFor(var17, var18, var6); + var20 = var18 * 0.66F; + var21 = var20 + 11.0F; + var22 = var15.variants(); + var23 = 0; + var27 = 887787567; + break; + case 485156413: + if (var14.hasNext()) { + var27 = -20985117; + } else { + var27 = -1679028993; + } + break; + case 580416436: + default: + this.ensureScratch(var8); + var13 = var5; + var14 = var3.iterator(); + var27 = 485156413; + break; + case 887787567: + if (var23 < var22.size()) { + var27 = 1317280180; + } else { + var27 = -416415069; + } + break; + case 1317280180: + var24 = var4 + var23 % var17 * (var18 + var19); + var25 = var16 + var23 / var17 * (var21 + 4.0F); + var26 = (ni)var22.get(var23); + this.drawTile(var1, var26, var24, var25, var18, var20, var21, var7, var8, var26.isActive(var9), var10, var11, var12); + var2.add(var24, var25, var18, var21, () -> var26.apply(var9)); + var23++; + var27 = 887787567; + } + } + } + + private void drawRowTitle(asq var1, nw var2, float var3, float var4, float var5, float var6, mv var7) { + ge var8 = null; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = 1781427349; + + while (true) { + switch (var12) { + case -1702956566: + return; + case 815152816: + var1.drawRect(var10, var4 + 7.0F - 0.5F, var11, 1.0F, var7.getForegroundStroke().mulAlpha(var6)); + var12 = -1702956566; + break; + case 1781427349: + default: + var8 = asp.font(oe.MICRO); + var9 = var4 + (14.0F - var8.height()) * 0.5F; + var1.drawText(var8, var2.title(), var3, var9, var7.getGrayLight().mulAlpha(var6)); + var10 = var3 + var8.width(var2.title()) + 5.0F; + var11 = Math.max(var3 + var5 - var10, 0.0F); + if (var11 > 0.0F) { + var12 = 815152816; + } else { + var12 = -1702956566; + } + } + } + } + + private void drawTile( + asq var1, ni var2, float var3, float var4, float var5, float var6, float var7, float var8, mv var9, boolean var10, float var11, float var12, ze var13 + ) { + int var14 = 0; + float var15 = 0.0F; + float var16 = 0.0F; + float var17 = 0.0F; + float var18 = 0.0F; + float var19 = 0.0F; + ge var20 = null; + float var21 = 0.0F; + float var22 = 0.0F; + ge var23 = null; + float var24 = 0.0F; + int var26 = 0; + int var25 = -1402805268; + + while (true) { + switch (var25) { + case -1987675650: + ass.tooltip(var2, var2.description(), var3, var17, var5, var6, asr.LEFT); + var25 = 1048614770; + break; + case -1402805268: + default: + if (var11 >= var3) { + var25 = -1368319604; + } else { + var25 = -1005032330; + } + break; + case -1379032009: + var1.drawRoundedRect(var3, var17, var5, var6, asj.all(oc.CARD), var9.getForegroundLight().mulAlpha(var8)); + var18 = 0.08F + 0.049999997F * var15 + 0.2F * var16; + var1.drawRoundedRect(var3, var17, var5, var6, asj.all(oc.CARD), asu.lerp(var9.getWhite(), var9.getColor(), var16).mulAlpha(var8 * var18)); + this.scratch.copyFrom(var9); + var2.apply(this.scratch); + this.paint.bind(this.scratch, nb.NORMAL, var8); + var1.pushClipBounds(var3, var17, var3 + var5, var17 + var6); + this.drawPreview(var1, var2, var3 + 4.0F, var17 + 4.0F, var5 - 8.0F, var6 - 8.0F); + var1.popClip(); + var19 = Math.max(var16, var15 * 0.55F); + var1.drawRoundedBorder( + var3, + var17, + var5, + var6, + 1.0F + 0.79999995F * var16, + asj.all(oc.CARD), + asu.lerp(var9.getForegroundStroke(), var9.getColor(), var19).mulAlpha(var8) + ); + var20 = asp.font(oe.MICRO); + var21 = var17 + var6; + var22 = var3; + if (var16 > 0.001F) { + var25 = -169993723; + } else { + var25 = 3966097; + } + break; + case -1368319604: + if (var11 <= var3 + var5) { + var25 = 1868021997; + } else { + var25 = -1005032330; + } + break; + case -1117708280: + atb.drawShadow(var1.pose(), var3, var17 + 2.0F, var5, var6, 5.0F, asj.all(oc.CARD), asu.BLACK.withAlpha(var8 * 0.3F * var15)); + var25 = 197219313; + break; + case -1005032330: + var26 = 0; + var25 = -920131936; + break; + case -920131936: + var14 = var26; + var15 = var13.hover(var2, (boolean)((var14) != 0)); + var16 = var13.select(var2, ob.FAST, var10); + var17 = var4 - var15 * 2.0F; + if (var15 > 0.0F) { + var25 = -1117708280; + } else { + var25 = 197219313; + } + break; + case -169993723: + var23 = gl.ICONS.getFont(4.5F); + var24 = var23.width("S"); + var1.drawText( + var23, + "S", + var23.glyphCenterX("S", var3, var24), + var23.glyphCenterY("S", var21, 11.0F), + var9.getColor().mulAlpha(var8 * var16) + ); + var22 += (var24 + 2.5F) * var16; + var25 = 3966097; + break; + case 3966097: + var1.drawScrollingText( + var20, + var2.label(), + var22, + var21 + (11.0F - var20.height()) * 0.5F, + Math.max(var3 + var5 - var22, 0.0F), + asu.lerp(var9.getGrayLight(), var9.getWhite(), var16).mulAlpha(var8), + (boolean)((((-2108710754 ^ 2108710755) + ((-2108710754 & 2108710755) << 1)) + ) != 0)); + if (var15 > 0.5F) { + var25 = -1987675650; + } else { + var25 = 1048614770; + } + break; + case 197219313: + if (var16 > 0.0F) { + var25 = 555629034; + } else { + var25 = -1379032009; + } + break; + case 283487779: + var26 = 1; + var25 = -920131936; + break; + case 555629034: + atb.drawShadow(var1.pose(), var3, var17, var5, var6, 6.0F, asj.all(oc.CARD), var9.getColor().mulAlpha(var8 * 0.3F * var16)); + var25 = -1379032009; + break; + case 1048614770: + return; + case 1365346187: + if (var12 <= var4 + var7) { + var25 = 283487779; + } else { + var25 = -1005032330; + } + break; + case 1868021997: + if (var12 >= var4) { + var25 = 1365346187; + } else { + var25 = -1005032330; + } + } + } + } + + // $VF: Unable to simplify switch on enum + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private void drawPreview(asq var1, ni var2, float var3, float var4, float var5, float var6) { + switch (zs.$SwitchMap$evo$systems$base$theme$style$StyleVariant$Preview[var2.preview().ordinal()]) { + case 1: + this.drawCorner(var1, var3, var4, var5, var6); + break; + case 2: + this.drawBorder(var1, var3, var4, var5, var6); + break; + case 3: + this.drawDivider(var1, var3, var4, var5, var6); + break; + case 4: + this.drawDepth(var1, var3, var4, var5, var6); + break; + case 5: + this.drawGlow(var1, var3, var4, var5, var6); + break; + case 6: + this.drawSweep(var1, var3, var4, var5, var6); + break; + case 7: + this.drawGlass(var1, var3, var4, var5, var6); + break; + case 8: + this.drawMotion(var1, var2, var3, var4, var5, var6); + break; + case 9: + this.drawTextScale(var1, var3, var4, var5, var6); + break; + case 10: + this.drawFont(var1, var3, var4, var5, var6); + break; + case 11: + case 12: + this.drawStack(var1, var3, var4, var5, var6); + break; + case 13: + this.drawPolarity(var1, var3, var4, var5, var6); + break; + case 14: + this.drawHarmony(var1, var3, var4, var5, var6); + break; + case 15: + this.drawBackdrop(var1, var3, var4, var5, var6, 1.0F); + break; + case 16: + this.drawBackdrop(var1, var3, var4, var5, var6, this.scratch.getBackdrop().intensity()); + } + } + + private void drawCorner(asq var1, float var2, float var3, float var4, float var5) { + float var6 = Math.min(var4, var5); + var1.drawRoundedRect(var2 + (var4 - var6) * 0.5F, var3 + (var5 - var6) * 0.5F, var6, var6, this.paint.round(oc.CARD), this.paint.accentGradient()); + } + + private void drawBorder(asq var1, float var2, float var3, float var4, float var5) { + var1.drawRoundedRect(var2, var3, var4, var5, this.paint.round(oc.CARD), this.paint.opaque(nx.SURFACE)); + var1.drawRoundedBorder(var2, var3, var4, var5, this.paint.borderThickness(), this.paint.round(oc.CARD), this.paint.color(nx.ON_SURFACE, 0.82F)); + } + + private void drawDivider(asq var1, float var2, float var3, float var4, float var5) { + float var6 = (var5 - this.paint.borderThickness()) * 0.5F; + var1.drawRoundedRect(var2, var3, var4, var6, this.paint.round(oc.CHIP), this.paint.opaque(nx.SURFACE_MUTED)); + var1.drawRoundedRect(var2, var3 + var6 + this.paint.borderThickness(), var4, var6, this.paint.round(oc.CHIP), this.paint.opaque(nx.SURFACE_MUTED)); + var1.drawRect(var2, var3 + var6, var4, this.paint.borderThickness(), this.paint.color(nx.ON_SURFACE, this.paint.dividerAlpha())); + } + + private void drawDepth(asq var1, float var2, float var3, float var4, float var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = 1821744050; + + while (true) { + switch (var12) { + case -1419028064: + var1.drawRoundedRect(var6, var7, var8, var9, this.paint.round(oc.CARD), this.paint.opaque(nx.SURFACE)); + return; + case -556240832: + if (var11 > 0.0F) { + var12 = -380592866; + } else { + var12 = -1419028064; + } + break; + case -380592866: + atb.drawShadow(var1.pose(), var6, var7 + 1.5F, var8, var9, var10, this.paint.round(oc.CARD), asu.BLACK.withAlpha(Math.min(var11 * 1.6F, 1.0F))); + var12 = -1419028064; + break; + case 1821744050: + default: + var1.drawRoundedRect(var2, var3, var4, var5, this.paint.round(oc.CHIP), DEPTH_TABLE.mulAlpha(this.paint.alpha())); + var6 = var2 + 3.0F; + var7 = var3 + 1.5F; + var8 = var4 - 6.0F; + var9 = var5 - 6.0F; + var10 = this.paint.shadowSoftness(nz.RAISED); + var11 = this.paint.shadowAlpha(nz.RAISED); + if (var10 > 0.0F) { + var12 = -556240832; + } else { + var12 = -1419028064; + } + } + } + } + + private void drawGlow(asq var1, float var2, float var3, float var4, float var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = 1730206040; + + while (true) { + switch (var12) { + case -1126452272: + var1.drawRoundedRect(var6, var7, var8, var9, this.paint.round(oc.CARD), this.paint.opaque(nx.SURFACE)); + var1.drawRoundedBorder( + var6, var7, var8, var9, this.paint.borderThickness(), this.paint.round(oc.CARD), this.paint.accent().mulAlpha(Math.min(var10, 1.0F)) + ); + return; + case -683419468: + if (var11 > 0.0F) { + var12 = 1610689430; + } else { + var12 = -1126452272; + } + break; + case 1610689430: + atb.drawShadow( + var1.pose(), var6, var7, var8, var9, var11 * 1.8F, this.paint.round(oc.CARD), this.paint.accent().mulAlpha(Math.min(var10 * 0.55F, 1.0F)) + ); + var12 = -1126452272; + break; + case 1730206040: + default: + var6 = var2 + 3.0F; + var7 = var3 + 3.0F; + var8 = var4 - 6.0F; + var9 = var5 - 6.0F; + var10 = this.scratch.getEffects().neonIntensity(); + var11 = this.scratch.getEffects().neonRadius(); + if (var10 > 0.0F) { + var12 = -683419468; + } else { + var12 = -1126452272; + } + } + } + } + + private void drawSweep(asq var1, float var2, float var3, float var4, float var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var11 = 0.0F; + int var10 = 2061452459; + + while (true) { + switch (var10) { + case -757238567: + var11 = (float)(cs.elapsedMillis() * var6 % 2200.0) / 2200.0F; + var10 = 1127163260; + break; + case 669783242: + var11 = 0.0F; + var10 = 1127163260; + break; + case 1127163260: + var9 = var11; + var1.drawRoundedRect( + var2 + var8 * var9, + var3, + var7, + this.paint.borderThickness() * 2.0F, + asj.pill(this.paint.borderThickness() * 2.0F), + this.paint.accent().mulAlpha(Math.max(this.scratch.getEffects().sweepIntensity(), 0.25F)) + ); + return; + case 2061452459: + default: + var1.drawRoundedRect(var2, var3, var4, var5, this.paint.round(oc.CARD), this.paint.opaque(nx.SURFACE)); + var1.drawRoundedBorder(var2, var3, var4, var5, this.paint.borderThickness(), this.paint.round(oc.CARD), this.paint.opaque(nx.OUTLINE_STRONG)); + var6 = this.scratch.getEffects().sweepSpeed(); + var7 = var4 * 0.28F; + var8 = var4 - var7; + if (var6 <= 0.0F) { + var10 = 669783242; + } else { + var10 = -757238567; + } + } + } + } + + private void drawGlass(asq var1, float var2, float var3, float var4, float var5) { + var1.drawRoundedRect(var2, var3, var4, var5, this.paint.round(oc.CHIP), this.paint.accentGradient()); + this.drawGlassStripes(var1, var2, var3, var4, var5, 0.0F, 1.0F); + float var6 = var2 + var4 * 0.12F; + float var7 = var3 + var5 * 0.2F; + float var8 = var4 * 0.76F; + float var9 = var5 * 0.6F; + float var10 = this.paint.glassFrost(); + float var11 = this.paint.glassRefraction() * 6.0F; + var1.pushClipBounds(var6, var7, var6 + var8, var7 + var9); + var1.drawRoundedRect(var6, var7, var8, var9, this.paint.round(oc.CHIP), this.paint.opaque(nx.BACKGROUND)); + this.drawGlassStripes(var1, var2, var3, var4, var5, var11, 1.0F - var10 * 0.75F); + var1.popClip(); + var1.drawRoundedRect(var6, var7, var8, var9, this.paint.round(oc.CHIP), this.paint.color(nx.SURFACE_RAISED, this.paint.glassPaneOpacity())); + var1.drawRoundedRect(var6, var7, var8, var9, this.paint.round(oc.CHIP), this.paint.glassTint()); + var1.drawRoundedRect(var6, var7, var8, var9 * 0.42F, this.paint.round(oc.CHIP), this.paint.glassSpecular()); + var1.drawRoundedBorder(var6, var7, var8, var9, this.paint.borderThickness(), this.paint.round(oc.CHIP), this.paint.glassRim()); + } + + private void drawGlassStripes(asq var1, float var2, float var3, float var4, float var5, float var6, float var7) { + float var8 = 0.0F; + asu var9 = null; + int var10 = 0; + float var11 = 0.0F; + float var12 = 0.0F; + int var13 = -1025551574; + + while (true) { + switch (var13) { + case -1170914258: + if (var10 < (1318165359 ^ -1318165356) + ((1318165359 & -1318165356) << 1)) { + var13 = 1719270463; + } else { + var13 = 1619300429; + } + break; + case -1025551574: + default: + if (var7 <= 0.0F) { + var13 = 1190714001; + } else { + var13 = 533082129; + } + break; + case 533082129: + var8 = var5 / 7.0F; + var9 = this.paint.color(nx.ON_SURFACE, 0.55F * var7); + var10 = 0; + var13 = -1170914258; + break; + case 1190714001: + return; + case 1619300429: + return; + case 1719270463: + var11 = var3 + var8 * (var10 * 2.0F + 1.0F); + var12 = var10 * var8 * 0.5F; + var1.drawRoundedRect(var2 + var12 + var6, var11, var4 - var12 * 2.0F, var8, asj.pill(var8), var9); + var10++; + var13 = -1170914258; + } + } + } + + private void drawMotion(asq var1, ni var2, float var3, float var4, float var5, float var6) { + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var13 = 0.0F; + int var12 = -1901961004; + + while (true) { + switch (var12) { + case -1901961004: + default: + var7 = var4 + (var6 - 2.5F) * 0.5F; + var1.drawRoundedRect(var3, var7, var5, 2.5F, asj.pill(2.5F), this.paint.color(nx.ON_SURFACE, 0.18F)); + var8 = 1800.0F / Math.max(var2.strength(), 0.1F); + var9 = (float)(cs.elapsedMillis() % (long)var8) / var8; + if (var9 < 0.5F) { + var12 = 1433058248; + } else { + var12 = 213669966; + } + break; + case -913791410: + var10 = var13; + var11 = var5 - 4.0F; + var1.drawRoundedRect(var3, var7, var11 * var10 + 2.0F, 2.5F, asj.pill(2.5F), this.paint.accent()); + var1.drawRoundedRect(var3 + var11 * var10, var4 + (var6 - 4.0F) * 0.5F, 4.0F, 4.0F, asj.pill(4.0F), this.paint.color(nx.ON_SURFACE, 1.0F)); + return; + case 213669966: + var13 = (1.0F - var9) * 2.0F; + var12 = -913791410; + break; + case 1433058248: + var13 = var9 * 2.0F; + var12 = -913791410; + } + } + } + + private void drawTextScale(asq var1, float var2, float var3, float var4, float var5) { + ge var6 = this.paint.font(oe.HEADING); + ge var7 = this.paint.font(oe.MICRO); + float var8 = var6.height() + var7.height(); + float var9 = var3 + (var5 - var8) * 0.5F; + var1.drawText( + var6, + "Aa", + var2 + (var4 - var6.width("Aa")) * 0.5F, + var9, + this.paint.color(nx.ON_SURFACE, 1.0F) + ); + var1.drawText( + var7, + "body", + var2 + (var4 - var7.width("body")) * 0.5F, + var9 + var6.height(), + this.paint.color(nx.ON_SURFACE_MUTED, 1.0F) + ); + } + + private void drawFont(asq var1, float var2, float var3, float var4, float var5) { + ge var6 = this.paint.font(oe.HEADING); + ge var7 = this.paint.font(oe.BODY); + float var8 = var6.height() + var7.height(); + float var9 = var3 + (var5 - var8) * 0.5F; + var1.drawText( + var6, + "Aa", + var2 + (var4 - var6.width("Aa")) * 0.5F, + var9, + this.paint.color(nx.ON_SURFACE, 1.0F) + ); + var1.drawText( + var7, + "body", + var2 + (var4 - var7.width("body")) * 0.5F, + var9 + var6.height(), + this.paint.color(nx.ON_SURFACE_MUTED, 1.0F) + ); + } + + private void drawStack(asq var1, float var2, float var3, float var4, float var5) { + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + int var9 = 0; + int var10 = 1920721238; + + while (true) { + switch (var10) { + case -169788806: + return; + case 27182571: + var1.drawRoundedRect(var2, var8 + var9 * (2.5F + var6), var4, 2.5F, asj.pill(2.5F), this.paint.opaque(nx.SURFACE_MUTED)); + var9++; + var10 = 855344331; + break; + case 855344331: + if (var9 < (-418993988 | 418993991) + (-418993988 & 418993991)) { + var10 = 27182571; + } else { + var10 = -169788806; + } + break; + case 1920721238: + default: + var6 = Math.max(this.paint.space(od.XS), 1.0F); + var7 = 7.5F + var6 * 2.0F; + var8 = var3 + (var5 - var7) * 0.5F; + var9 = 0; + var10 = 855344331; + } + } + } + + private void drawPolarity(asq var1, float var2, float var3, float var4, float var5) { + var1.drawRoundedRect(var2, var3, var4, var5, this.paint.round(oc.CHIP), this.paint.opaque(nx.BACKGROUND)); + float var6 = 2.0F; + float var7 = var3 + var5 * 0.2F; + float var8 = var5 - (var7 - var3) - var6; + var1.drawRoundedRect(var2 + var6, var7, var4 - var6 * 2.0F, var8, this.paint.round(oc.CHIP), this.paint.opaque(nx.SURFACE_RAISED)); + var1.drawRoundedRect(var2 + var6 * 2.0F, var7 + var6, (var4 - var6 * 4.0F) * 0.74F, 2.5F, asj.pill(2.5F), this.paint.accent()); + ge var9 = this.paint.font(oe.MICRO); + var1.drawText( + var9, + "Aa", + var2 + var6 * 2.0F, + var3 + var6, + this.paint.color(nx.ON_SURFACE, 1.0F) + ); + } + + private void drawHarmony(asq var1, float var2, float var3, float var4, float var5) { + float var6 = Math.min(var4, var5); + float var7 = var2 + var4 * 0.5F; + float var8 = var3 + var5 * 0.5F; + float var9 = var6 * 0.5F * 0.74F; + var1.drawRoundedBorder(var7 - var9, var8 - var9, var9 * 2.0F, var9 * 2.0F, 1.0F, asj.pill(var9 * 2.0F), this.paint.color(nx.OUTLINE_STRONG, 1.0F)); + this.plotHue(var1, var7, var8, var9, this.scratch.getColor()); + this.plotHue(var1, var7, var8, var9, this.scratch.getMiddleColor()); + this.plotHue(var1, var7, var8, var9, this.scratch.getSecondColor()); + } + + private void plotHue(asq var1, float var2, float var3, float var4, asu var5) { + float var6 = nc.hue(var5) / (180.0F / (float)Math.PI); + float var7 = var2 + (float)Math.cos(var6) * var4 - 2.5F; + float var8 = var3 - (float)Math.sin(var6) * var4 - 2.5F; + var1.drawRoundedRect(var7, var8, 5.0F, 5.0F, asj.pill(5.0F), this.paint.simulate(var5).mulAlpha(this.paint.alpha())); + } + + private void drawBackdrop(asq var1, float var2, float var3, float var4, float var5, float var6) { + int var7 = -1462580906; + + while (true) { + switch (var7) { + case -2052873219: + return; + case -1608533802: + if (var6 <= 0.0F) { + var7 = -2052873219; + } else { + var7 = 72847388; + } + break; + case -1462580906: + default: + var1.drawRoundedRect(var2, var3, var4, var5, this.paint.round(oc.CHIP), this.paint.opaque(nx.BACKGROUND)); + if (this.scratch.getBackdrop().mode() != nk.NONE) { + var7 = -1608533802; + } else { + var7 = -2052873219; + } + break; + case 72847388: + atb.drawThemeBackdrop( + var1.pose(), + var2, + var3, + var4, + var5, + this.paint.round(oc.CHIP), + this.scratch.getBackdrop().withIntensity(var6), + this.scratch.getAccent(), + this.paint.alpha() + ); + return; + } + } + } + + private void ensureScratch(mv var1) { + int var2 = -1213605525; + + while (true) { + switch (var2) { + case -1935023657: + this.scratch = var1.interpolateTheme(var1, 1.0F); + var2 = -1708730082; + break; + case -1708730082: + return; + case -1213605525: + default: + if (this.scratch == null) { + var2 = -1935023657; + } else { + var2 = -1708730082; + } + } + } + } +} diff --git a/src/main/java/defpackage/zu.java b/src/main/java/defpackage/zu.java new file mode 100644 index 0000000..3ff136c --- /dev/null +++ b/src/main/java/defpackage/zu.java @@ -0,0 +1,322 @@ +package defpackage; + +public abstract class zu { + public static final float CARD_HEADER_BASE_HEIGHT = 22.0F; + private static final float HOVER_TARGET_THRESHOLD = 0.5F; + private static int layoutFrame; + protected ct animationPosition; + protected ct animationY; + public float currentX; + public float currentY; + public float settledLayoutY = Float.NaN; + private boolean physicsInitialized = (boolean)(((0)) != 0); + protected ct hoverAnimation = asa.cardSpring(); + + public static void beginLayoutFrame() { + layoutFrame += 1; + } + + public static int layoutFrame() { + return layoutFrame; + } + + public static float cardHeaderHeight() { + return cardHeaderHeight(22.0F); + } + + public static float cardHeaderHeight(float var0) { + return var0 * oq.current().rowScale(); + } + + public static float cardSettingGap() { + return oq.current().spacing(od.XL); + } + + protected float autoScrollY(float var1) { + float var3 = 0.0F; + int var2 = -1187105200; + + while (true) { + switch (var2) { + case -1187105200: + default: + if (Float.isNaN(this.settledLayoutY)) { + var2 = 1043868888; + } else { + var2 = 1556843678; + } + break; + case 1043868888: + var3 = var1; + var2 = 1846241425; + break; + case 1556843678: + var3 = this.settledLayoutY; + var2 = 1846241425; + break; + case 1846241425: + return var3; + } + } + } + + public float getHoverValue() { + return this.hoverAnimation.value(); + } + + public boolean isHovered() { + int var2 = 0; + int var1 = 181473154; + + while (true) { + switch (var1) { + case -727593633: + var2 = 0; + var1 = 1878439251; + break; + case -299019209: + var2 = 1; + var1 = 1878439251; + break; + case 181473154: + default: + if (this.hoverAnimation.target() >= 0.5F) { + var1 = -299019209; + } else { + var1 = -727593633; + } + break; + case 1878439251: + return (boolean)((var2) != 0); + } + } + } + + public float getToyHover() { + return asa.settle(this.getHoverValue()); + } + + public static float cardHoverScale(float var0, float var1) { + return asa.scale(var0, asa.cardAmount(var1)); + } + + public double scaleMouseX(double var1, asi var3) { + float var4 = 0.0F; + float var5 = 0.0F; + int var6 = -772720501; + + while (true) { + switch (var6) { + case -2039929963: + if (var3.isValid()) { + var6 = 1761389584; + } else { + var6 = 57877873; + } + break; + case -772720501: + default: + var4 = this.getHoverValue(); + if (var4 > 0.0F) { + var6 = -2039929963; + } else { + var6 = 57877873; + } + break; + case 57877873: + return var1; + case 1761389584: + var5 = var3.x() + var3.width() / 2.0F; + return (var1 - var5) / cardHoverScale(var4, var3.width()) + var5; + } + } + } + + public double scaleMouseY(double var1, asi var3) { + float var4 = 0.0F; + float var5 = 0.0F; + int var6 = -1298805910; + + while (true) { + switch (var6) { + case -1298805910: + default: + var4 = this.getHoverValue(); + if (var4 > 0.0F) { + var6 = -159787998; + } else { + var6 = 604999560; + } + break; + case -159787998: + if (var3.isValid()) { + var6 = 417630432; + } else { + var6 = 604999560; + } + break; + case 417630432: + var5 = var3.y() + var3.height() / 2.0F; + return (var1 - var5) / cardHoverScale(var4, var3.width()) + var5; + case 604999560: + return var1; + } + } + } + + public void updatePhysics(float var1, float var2, float var3, float var4, float var5, float var6, float var7) { + int var8 = -1570565117; + + while (true) { + switch (var8) { + case -2014975569: + if (var4 > var3) { + var8 = -369464340; + } else { + var8 = -1087746186; + } + break; + case -1718819545: + this.currentY = var6 - this.getHeight(); + this.animationY.jumpTo(this.currentY); + var8 = -1537595457; + break; + case -1570565117: + default: + if (!this.physicsInitialized) { + var8 = -1348210278; + } else { + var8 = -1412724102; + } + break; + case -1537595457: + if (this.currentX < var3) { + var8 = 237107046; + } else { + var8 = -1076257608; + } + break; + case -1412724102: + this.animationPosition.animateTo(var1); + this.animationY.animateTo(var2); + this.currentX = this.animationPosition.update(); + this.currentY = this.animationY.update(); + if (this.currentY < var5) { + var8 = -89504576; + } else { + var8 = 1843156164; + } + break; + case -1348210278: + this.animationPosition = ct.layout(ob.FAST, var1); + this.animationY = ct.layout(ob.SETTLED, var2); + this.currentX = var1; + this.currentY = var2; + this.physicsInitialized = (boolean)(((1)) != 0); + var8 = -1412724102; + break; + case -1087746186: + return; + case -1076257608: + if (this.currentX + var7 > var4) { + var8 = -2014975569; + } else { + var8 = -1087746186; + } + break; + case -369464340: + this.currentX = var4 - var7; + this.animationPosition.jumpTo(this.currentX); + var8 = -1087746186; + break; + case -89504576: + this.currentY = var5; + this.animationY.jumpTo(this.currentY); + var8 = 1843156164; + break; + case 237107046: + this.currentX = var3; + this.animationPosition.jumpTo(this.currentX); + var8 = -1076257608; + break; + case 870570443: + if (var6 > var5) { + var8 = -1718819545; + } else { + var8 = -1537595457; + } + break; + case 1843156164: + if (this.currentY + this.getHeight() > var6) { + var8 = 870570443; + } else { + var8 = -1537595457; + } + } + } + } + + public void resetPhysics(float var1, float var2) { + int var3 = -897022374; + + while (true) { + switch (var3) { + case -967175299: + return; + case -897022374: + default: + if (this.animationPosition != null) { + var3 = -661413365; + } else { + var3 = -967175299; + } + break; + case -845522982: + this.animationPosition.jumpTo(var1); + this.animationY.jumpTo(var2); + this.currentX = var1; + this.currentY = var2; + var3 = -967175299; + break; + case -661413365: + if (this.animationY != null) { + var3 = -845522982; + } else { + var3 = -967175299; + } + } + } + } + + public abstract void render(asq var1, float var2, float var3, ge var4, float var5, float var6, float var7, float var8, int var9, float var10, float var11); + + public abstract float getHeight(); + + public abstract void onMouseClicked(double var1, double var3, apf var5); + + public abstract void onMouseReleased(double var1, double var3, apf var5); + + public abstract void onMouseDragged(double var1, double var3, apf var5, double var6, double var8); + + public boolean keyPressed(int var1, int var2, int var3) { + return (boolean)(((0)) != 0); + } + + public boolean charTyped(char var1, int var2) { + return (boolean)(((0)) != 0); + } + + public abstract boolean mouseScrolled(double var1, double var3, double var5, double var7); + + public abstract rl getCategory(); + + public abstract String getName(); + + public int getSortGroup() { + return 0; + } + + public float getSortRank() { + return 0.0F; + } +} diff --git a/src/main/java/defpackage/zv.java b/src/main/java/defpackage/zv.java new file mode 100644 index 0000000..270c087 --- /dev/null +++ b/src/main/java/defpackage/zv.java @@ -0,0 +1,175 @@ +package defpackage; + +public final class zv { + public static final float INSET = 1.0F; + private static final float REST_SHADOW_MIN_ALPHA = 0.004F; + private static final float ACTIVE_MIN = 0.05F; + private static final float ACTIVE_SHADOW_SPREAD = 0.5F; + private static final float ACTIVE_SHADOW_SOFTNESS = 4.0F; + private static final float ACTIVE_SHADOW_ALPHA = 0.04F; + private static final float ACTIVE_BORDER_SPREAD = 1.0F; + private static final float ACTIVE_BORDER_ALPHA = 0.8F; + + private zv() { + } + + public static arq radius() { + return asj.all(oc.PANEL); + } + + public static arq topRadius() { + return asj.top(oc.PANEL); + } + + public static void restShadow(asq var0, float var1, float var2, float var3, float var4, float var5) { + restShadow(var0, var1, var2, var3, var4, var5, nz.LOW); + } + + public static void restShadow(asq var0, float var1, float var2, float var3, float var4, float var5, nz var6) { + float var7 = 0.0F; + int var8 = -612836410; + + while (true) { + switch (var8) { + case -612836410: + default: + var7 = pk.shadowAlpha(var6) * var5; + if (var7 <= 0.004F) { + var8 = 356343617; + } else { + var8 = -32678605; + } + break; + case -32678605: + atb.drawShadow(var0.pose(), var1, var2, var3, var4, pk.shadowSoftness(var6), radius(), asu.BLACK.withAlpha(var7)); + return; + case 356343617: + return; + } + } + } + + public static void activeShadow(asq var0, float var1, float var2, float var3, float var4, float var5, float var6, asu var7) { + int var8 = 1990704226; + + while (true) { + switch (var8) { + case -1162139698: + atb.drawShadow(var0.pose(), var1 - 0.5F, var2 - 0.5F, var3 + 1.0F, var4 + 1.0F, 4.0F, radius(), var7.getRGBWithAlpha(var5 * var6 * 0.04F)); + return; + case 438817395: + return; + case 1990704226: + } + + if (var6 <= 0.05F) { + var8 = 438817395; + } else { + var8 = -1162139698; + } + } + } + + public static void activeBorder(asq var0, float var1, float var2, float var3, float var4, float var5, float var6, asu var7) { + int var8 = 1869762273; + + while (true) { + switch (var8) { + case -1529888801: + return; + case 1869762273: + default: + if (var6 <= 0.05F) { + var8 = -1529888801; + } else { + var8 = 1955047028; + } + break; + case 1955047028: + atb.drawRoundedBorder( + var0.pose(), + var1 - 1.0F, + var2 - 1.0F, + var3 + 2.0F, + var4 + 2.0F, + pk.borderThickness(), + asj.outer(oc.PANEL, 1.0F), + var7.getRGBWithAlpha(var5 * var6 * 0.8F) + ); + return; + } + } + } + + public static void activeBorder(asq var0, float var1, float var2, float var3, float var4, float var5, float var6, ary var7) { + int var8 = 2048608629; + + while (true) { + switch (var8) { + case -1237128481: + return; + case 521809436: + atb.drawRoundedBorder( + var0.pose(), + var1 - 1.0F, + var2 - 1.0F, + var3 + 2.0F, + var4 + 2.0F, + pk.borderThickness(), + asj.outer(oc.PANEL, 1.0F), + var7.mulAlpha(var5 * var6 * 0.8F) + ); + return; + case 2048608629: + } + + if (var6 <= 0.05F) { + var8 = -1237128481; + } else { + var8 = 521809436; + } + } + } + + public static void border(asq var0, float var1, float var2, float var3, float var4, mv var5, float var6) { + border(var0, var1, var2, var3, var4, radius(), var5, var6); + } + + public static void border(asq var0, float var1, float var2, float var3, float var4, arq var5, mv var6, float var7) { + atb.drawRoundedBorder( + var0.pose(), var1, var2, var3, var4, pk.borderHairline(), var5, var6.getForegroundStroke().getRGBWithAlpha(var7 * arx.classicFade()) + ); + } + + public static void surface(asq var0, float var1, float var2, float var3, float var4, arq var5, int var6) { + var0.drawSurface(aso.CARD, var1, var2, var3, var4, var5, var6); + } + + public static void body(asq var0, float var1, float var2, float var3, float var4, float var5, boolean var6, int var7, int var8) { + int var9 = -518844379; + + while (true) { + switch (var9) { + case -2075802963: + surface(var0, var1, var2, var3, var5, radius(), var7); + var9 = 1454346912; + break; + case -1096793820: + surface(var0, var1, var2, var3, var4, radius(), var8); + surface(var0, var1, var2, var3, var5, topRadius(), var7); + var9 = 1454346912; + break; + case -518844379: + default: + if (var6) { + var9 = -1096793820; + } else { + var9 = -2075802963; + } + break; + case 1454346912: + return; + } + } + } +} diff --git a/src/main/java/defpackage/zw.java b/src/main/java/defpackage/zw.java new file mode 100644 index 0000000..c1f5639 --- /dev/null +++ b/src/main/java/defpackage/zw.java @@ -0,0 +1,428 @@ +package defpackage; + +public final class zw { + private static final long REST_MILLIS = 260L; + private static final long ENTRY_MOTION_WINDOW_MILLIS = 150L; + private static final long MANUAL_SCROLL_QUIET_MILLIS = 450L; + private static final long GLIDE_TIMEOUT_MILLIS = 900L; + private static final float EDGE_MARGIN = 12.0F; + private static final float MAX_NUDGE_VIEW_FRACTION = 0.22F; + private static final float ARRIVAL_EPSILON = 1.0F; + private static final float IN_FLIGHT_EPSILON = 0.5F; + private static final float SETTLED_HOVER = 0.99F; + private boolean wasHovered; + private boolean armed; + private boolean active; + private float target; + private long startedMillis; + + public void update(yc var1, boolean var2, float var3, float var4, float var5, float var6, float var7, float var8) { + long var9 = (4068084564184482256L | -4068084564184482256L) + (4068084564184482256L & -4068084564184482256L); + int var11 = -733511459; + + while (true) { + switch (var11) { + case -2062242154: + if (var1.getPointerIntent().restMillis(var9) + >= (-7909065783446543142L ^ 7909065783446543402L) + ((-7909065783446543142L & 7909065783446543402L) << 1)) { + var11 = -1905256882; + } else { + var11 = 1101373869; + } + break; + case -1905256882: + this.armed = (boolean)(((0)) != 0); + this.plan(var1, var4, expandedHeight(var5, var6), var7, var8, var9); + var11 = 1101373869; + break; + case -733511459: + default: + if (!var2) { + var11 = 508180064; + } else { + var11 = 931408474; + } + break; + case -681620431: + clampInFlightGlide(var1, var4, expandedHeight(var5, var6), var7, var8); + var11 = -212596808; + break; + case -212596808: + if (this.armed) { + var11 = -2062242154; + } else { + var11 = 1101373869; + } + break; + case -80692513: + this.wasHovered = (boolean)(((1)) != 0); + this.armed = enteredByPointer(var1, var9); + if (this.armed) { + var11 = -681620431; + } else { + var11 = -212596808; + } + break; + case 508180064: + this.wasHovered = (boolean)(((0)) != 0); + this.cancel(); + return; + case 931408474: + var9 = System.currentTimeMillis(); + if (!this.wasHovered) { + var11 = -80692513; + } else { + var11 = -212596808; + } + break; + case 1101373869: + this.tick(var1, var3, var9); + return; + } + } + } + + public void cancel() { + this.armed = (boolean)(((0)) != 0); + this.active = (boolean)(((0)) != 0); + } + + private static boolean enteredByPointer(yc var0, long var1) { + int var4 = 0; + int var3 = 1869314956; + + while (true) { + switch (var3) { + case -1361921439: + var4 = 0; + var3 = 896364200; + break; + case -831021828: + if (var1 - var0.getLastManualScrollTime() > (-8933747326109216340L | 8933747326109216790L) + (-8933747326109216340L & 8933747326109216790L)) { + var3 = 1662872094; + } else { + var3 = -1361921439; + } + break; + case -633633193: + if (var0.getPointerIntent().restMillis(var1) < (2632481594934002320L | -2632481594934002170L) + (2632481594934002320L & -2632481594934002170L)) { + var3 = -831021828; + } else { + var3 = -1361921439; + } + break; + case 896364200: + return (boolean)((var4) != 0); + case 1662872094: + var4 = 1; + var3 = 896364200; + break; + case 1869314956: + default: + if (vm.INSTANCE.isAutoScroll()) { + var3 = -633633193; + } else { + var3 = -1361921439; + } + } + } + } + + private static float expandedHeight(float var0, float var1) { + float var2 = 0.0F; + float var4 = 0.0F; + int var3 = -1404906236; + + while (true) { + switch (var3) { + case -1404906236: + default: + if (var1 > 0.0F) { + var3 = -1025583893; + } else { + var3 = 1306523801; + } + break; + case -1025583893: + var4 = var0 * asa.cardAmount(var1); + var3 = 560685219; + break; + case 560685219: + var2 = var4; + return var0 + var2; + case 1306523801: + var4 = 0.0F; + var3 = 560685219; + } + } + } + + private void plan(yc var1, float var2, float var3, float var4, float var5, long var6) { + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + float var12 = 0.0F; + float var13 = 0.0F; + float var14 = 0.0F; + int var15 = 746407493; + + while (true) { + switch (var15) { + case -1401414166: + return; + case -1094970572: + if (!pointerStaysOnElement(var1, var2 - var14, var3)) { + var15 = -1401414166; + } else { + var15 = 503024423; + } + break; + case -948347830: + var9 = (float)var1.getScrollHandler().getValue(); + var10 = var2 + var9; + var11 = var10 - var4 - 12.0F; + var12 = var10 + var3 - var5 + 12.0F; + if (var2 < var4) { + var15 = 1019342835; + } else { + var15 = 1113580328; + } + break; + case -934893360: + var8 = var5 - var4; + if (!(var8 <= 0.0F)) { + var15 = -921174819; + } else { + var15 = 1763518891; + } + break; + case -921174819: + if (var3 > var8) { + var15 = 1763518891; + } else { + var15 = -948347830; + } + break; + case -406140952: + return; + case 483381236: + var13 = Math.min(var12, var11); + var15 = 1805974799; + break; + case 503024423: + this.target = -var13; + this.startedMillis = var6; + this.active = (boolean)(((1)) != 0); + return; + case 716211397: + return; + case 746407493: + default: + if (!vm.INSTANCE.isAutoScroll()) { + var15 = -406140952; + } else { + var15 = -934893360; + } + break; + case 893519732: + return; + case 1019342835: + var13 = var11; + var15 = 1805974799; + break; + case 1113580328: + if (var2 + var3 > var5) { + var15 = 483381236; + } else { + var15 = 893519732; + } + break; + case 1763518891: + return; + case 1805974799: + var13 = Math.max(0.0F, var13); + var14 = var13 - var9; + if (Math.abs(var14) > var8 * 0.22F) { + var15 = 716211397; + } else { + var15 = -1094970572; + } + } + } + } + + private static boolean pointerStaysOnElement(yc var0, float var1, float var2) { + float var3 = 0.0F; + int var5 = 0; + int var4 = -745653763; + + while (true) { + switch (var4) { + case -745653763: + default: + var3 = var0.getPointerIntent().localY(); + if (!Float.isNaN(var3)) { + var4 = -158170380; + } else { + var4 = 346801253; + } + break; + case -586448979: + var5 = 1; + var4 = 2093658289; + break; + case -158170380: + if (var3 >= var1) { + var4 = 1036708981; + } else { + var4 = 346801253; + } + break; + case 346801253: + var5 = 0; + var4 = 2093658289; + break; + case 1036708981: + if (var3 <= var1 + var2) { + var4 = -586448979; + } else { + var4 = 346801253; + } + break; + case 2093658289: + return (boolean)((var5) != 0); + } + } + } + + private static void clampInFlightGlide(yc var0, float var1, float var2, float var3, float var4) { + arl var5 = null; + float var6 = 0.0F; + float var7 = 0.0F; + float var8 = 0.0F; + float var9 = 0.0F; + float var10 = 0.0F; + float var11 = 0.0F; + int var12 = -793808946; + + while (true) { + switch (var12) { + case -2103382062: + var5.glideTo(-var11); + var12 = -681189074; + break; + case -997432592: + var11 = Math.max(var10, Math.min(var9, var7)); + if (var11 != var7) { + var12 = -2103382062; + } else { + var12 = -681189074; + } + break; + case -793808946: + default: + var5 = var0.getScrollHandler(); + if (!var5.isGliding()) { + var12 = 1762055741; + } else { + var12 = -438171656; + } + break; + case -681189074: + return; + case -438171656: + var6 = (float)var5.getValue(); + var7 = (float)(-var5.getTargetValue()); + if (Math.abs(var7 - var6) < 0.5F) { + var12 = 551430106; + } else { + var12 = 1402127474; + } + break; + case 551430106: + return; + case 1094055822: + return; + case 1402127474: + var8 = var1 + var6; + var9 = var8 - var3 - 12.0F; + var10 = var8 + var2 - var4 + 12.0F; + if (var9 < var10) { + var12 = 1094055822; + } else { + var12 = -997432592; + } + break; + case 1762055741: + return; + } + } + } + + private void tick(yc var1, float var2, long var3) { + arl var5 = null; + int var6 = 793527838; + + while (true) { + switch (var6) { + case -2016217478: + if (var3 - this.startedMillis > (1853411431787512058L | -1853411431787511158L) + (1853411431787512058L & -1853411431787511158L)) { + var6 = 946201183; + } else { + var6 = -1026393302; + } + break; + case -1638166723: + if (vm.INSTANCE.isAutoScroll()) { + var6 = 1108861211; + } else { + var6 = 946201183; + } + break; + case -1026393302: + var5 = var1.getScrollHandler(); + var5.glideTo(this.target); + if (var2 >= 0.99F) { + var6 = 638528439; + } else { + var6 = 1718891862; + } + break; + case -458616648: + return; + case 638528439: + if (Math.abs((float)var5.getValue() + this.target) < 1.0F) { + var6 = 1219021076; + } else { + var6 = 1718891862; + } + break; + case 793527838: + default: + if (!this.active) { + var6 = -458616648; + } else { + var6 = -1638166723; + } + break; + case 946201183: + this.active = (boolean)(((0)) != 0); + return; + case 1108861211: + if (var1.getLastManualScrollTime() < this.startedMillis) { + var6 = -2016217478; + } else { + var6 = 946201183; + } + break; + case 1219021076: + this.active = (boolean)(((0)) != 0); + var6 = 1718891862; + break; + case 1718891862: + return; + } + } + } +} diff --git a/src/main/java/defpackage/zx.java b/src/main/java/defpackage/zx.java new file mode 100644 index 0000000..84594c3 --- /dev/null +++ b/src/main/java/defpackage/zx.java @@ -0,0 +1,67 @@ +package defpackage; + +public final class zx { + private static final double REST_TOLERANCE = 1.5; + private static final double REST_TOLERANCE_SQ = 2.25; + private static final long NEVER_MOVED = -4611686018427387904L; + private double anchorX = Double.NaN; + private double anchorY = Double.NaN; + private long lastMotionMillis; + private float localY = Float.NaN; + + public void track(double var1, double var3, float var5, long var6) { + double var8 = 0.0; + double var10 = 0.0; + int var12 = -2006968692; + + while (true) { + switch (var12) { + case -2006968692: + default: + this.localY = var5; + if (Double.isNaN(this.anchorX)) { + var12 = 1851319053; + } else { + var12 = 1700838064; + } + break; + case -630102062: + return; + case -51403791: + this.anchorX = var1; + this.anchorY = var3; + this.lastMotionMillis = var6; + var12 = -630102062; + break; + case 1700838064: + var8 = var1 - this.anchorX; + var10 = var3 - this.anchorY; + if (var8 * var8 + var10 * var10 > 2.25) { + var12 = -51403791; + } else { + var12 = -630102062; + } + break; + case 1851319053: + this.anchorX = var1; + this.anchorY = var3; + this.lastMotionMillis = (507121611053206766L | -5118807629480594670L) + (507121611053206766L & -5118807629480594670L); + return; + } + } + } + + public void reset() { + this.anchorX = Double.NaN; + this.anchorY = Double.NaN; + this.localY = Float.NaN; + } + + public long restMillis(long var1) { + return var1 - this.lastMotionMillis; + } + + public float localY() { + return this.localY; + } +} diff --git a/src/main/java/defpackage/zy.java b/src/main/java/defpackage/zy.java new file mode 100644 index 0000000..f92dc68 --- /dev/null +++ b/src/main/java/defpackage/zy.java @@ -0,0 +1,170 @@ +package defpackage; + +public final class zy { + public static final float HEIGHT = 88.0F; + public static final float WINDOW_PAD = 7.0F; + public static final float NAME_STRIP = 13.0F; + private static final float BACKDROP_ALPHA = 0.85F; + private static final float DIM_ALPHA = 0.65F; + private static final float SIDEBAR_MIN = 16.0F; + private static final float SIDEBAR_RATIO = 0.16F; + private static final float SIDEBAR_BAR_INSET = 4.0F; + private static final float SIDEBAR_BAR_TOP = 7.0F; + private static final float SIDEBAR_BAR_PITCH = 7.0F; + private static final int SIDEBAR_BARS = 3; + private static final float BAR_THICKNESS = 3.0F; + private static final float CONTENT_GAP = 6.0F; + private static final float DOT_TOP = 5.0F; + private static final float DOT_PITCH = 5.0F; + private static final int DOTS = 3; + private static final float FIRST_LINE_TOP = 12.0F; + private static final float FIRST_LINE_RATIO = 0.55F; + private static final float SECOND_LINE_TOP = 18.0F; + private static final float SECOND_LINE_RATIO = 0.75F; + private static final float BLOCK_TOP = 27.0F; + private static final float BLOCK_MIN_HEIGHT = 8.0F; + private static final float BLOCK_BOTTOM_PAD = 6.0F; + private static final float BLOCK_GAP = 5.0F; + private static final float BLOCK_HEADER = 3.0F; + private static final float NAME_BASELINE = 3.5F; + private static final float ACTIVE_DOT = 3.0F; + private static final float ACTIVE_DOT_DROP = 1.5F; + private static final float ACTIVE_DOT_ADVANCE = 6.0F; + private static final float HALF = 0.5F; + + private zy() { + } + + public static void draw( + asq var0, float var1, float var2, float var3, float var4, mv var5, mv var6, String var7, float var8, float var9, float var10, boolean var11, float var12 + ) { + float var13 = 0.0F; + float var14 = 0.0F; + float var15 = 0.0F; + float var16 = 0.0F; + int var17 = 1842881975; + + while (true) { + switch (var17) { + case -1965649536: + return; + case -664858980: + zv.activeBorder(var0, var1, var2, var3, var4, var8, var10, var5.getAccent().corners()); + var17 = -1965649536; + break; + case -139390822: + zv.activeBorder(var0, var1, var2, var3, var4, var8, var10, var5.getColor()); + var17 = -1965649536; + break; + case 1842881975: + default: + zv.restShadow(var0, var1, var2, var3, var4, var8); + zv.activeShadow(var0, var1, var2, var3, var4, var8, var10, var5.getColor()); + var0.drawSurface(aso.CARD, var1, var2, var3, var4, zv.radius(), var5.getForegroundDark().mulAlpha(var8).getRGB()); + asa.plateRow(var0, var1, var2, var3, var4, asa.plateColor(var6), var8, var9); + var13 = var1 + 7.0F; + var14 = var2 + 7.0F; + var15 = var3 - 14.0F; + var16 = var4 - 14.0F - 13.0F; + drawWindow(var0, var13, var14, var15, var16, var5, var8); + drawName(var0, var1, var2, var3, var4, var5, var6, var7, var8, var11, var12); + zv.border(var0, var1, var2, var3, var4, var6, var8); + if (var5.getBackdrop().isActive()) { + var17 = -664858980; + } else { + var17 = -139390822; + } + } + } + } + + private static void drawWindow(asq var0, float var1, float var2, float var3, float var4, mv var5, float var6) { + if (!(var3 <= 0.0F) && !(var4 <= 0.0F)) { + asu var7 = var5.getColor().mulAlpha(var6); + asu var8 = var5.getForegroundColor().mulAlpha(var6); + asu var9 = var5.getForegroundLight().mulAlpha(var6); + asu var10 = var5.getGrayLight().mulAlpha(var6); + asu var11 = var5.getWhiteGray().mulAlpha(var6 * 0.65F); + var0.drawRoundedRect(var1, var2, var3, var4, asj.all(oc.ROW), var8); + atb.drawThemeBackdrop(var0.pose(), var1, var2, var3, var4, asj.all(oc.ROW), var5.getBackdrop(), var5.getAccent(), var6 * 0.85F); + float var12 = Math.max(16.0F, var3 * 0.16F); + var0.drawRoundedRect(var1, var2, var12, var4, asj.left(oc.ROW), var9); + + for (int var13 = 0; var13 < 3; var13++) { + var0.drawRoundedRect(var1 + 4.0F, var2 + 7.0F + var13 * 7.0F, var12 - 8.0F, 3.0F, asj.all(oc.CHIP), var13 == 0 ? var7 : var11); + } + + float var18 = var1 + var12 + 6.0F; + float var14 = var3 - var12 - 12.0F; + + for (int var15 = 0; var15 < 3; var15++) { + var0.drawRoundedRect(var18 + var15 * 5.0F, var2 + 5.0F, 3.0F, 3.0F, asj.all(oc.CHIP), var11); + } + + var0.drawRoundedRect(var18, var2 + 12.0F, var14 * 0.55F, 3.0F, asj.all(oc.CHIP), var10); + var0.drawRoundedRect(var18, var2 + 18.0F, var14 * 0.75F, 3.0F, asj.all(oc.CHIP), var11); + float var19 = var2 + 27.0F; + float var16 = Math.max(8.0F, var4 - 27.0F - 6.0F); + float var17 = (var14 - 5.0F) * 0.5F; + var0.drawRoundedRect(var18, var19, var17, var16, asj.all(oc.INNER), var9); + var0.drawRoundedRect(var18, var19, var17, 3.0F, asj.top(oc.INNER), var7); + var0.drawRoundedRect(var18 + var17 + 5.0F, var19, var17, var16, asj.all(oc.INNER), var9); + } + } + + private static void drawName(asq var0, float var1, float var2, float var3, float var4, mv var5, mv var6, String var7, float var8, boolean var9, float var10) { + ge var11 = null; + float var12 = 0.0F; + float var13 = 0.0F; + asu var14 = null; + asu var16 = null; + int var15 = -1774266628; + + while (true) { + switch (var15) { + case -1774266628: + default: + var11 = asp.font(oe.LABEL); + var12 = var2 + var4 - 13.0F + 3.5F; + var13 = var1 + 7.0F; + if (var9) { + var15 = -1080258065; + } else { + var15 = 1274303095; + } + break; + case -1745985799: + var14 = var16.mulAlpha(var8); + var0.drawScrollingText( + var11, + var7, + var13, + var12, + Math.max(0.0F, var1 + var3 - 7.0F - var10 - var13), + var14, + (boolean)((((226586962 ^ -226586961) + ((226586962 & -226586961) << 1)) + ) != 0)); + return; + case -1617751643: + var16 = var6.getWhite(); + var15 = -1745985799; + break; + case -1080258065: + var0.drawRoundedRect(var13, var12 + 1.5F, 3.0F, 3.0F, asj.all(oc.CHIP), var5.getColor().mulAlpha(var8)); + var13 += 6.0F; + var15 = 1274303095; + break; + case -220387317: + var16 = var6.getGrayLight(); + var15 = -1745985799; + break; + case 1274303095: + if (var9) { + var15 = -1617751643; + } else { + var15 = -220387317; + } + } + } + } +} diff --git a/src/main/java/defpackage/zz.java b/src/main/java/defpackage/zz.java new file mode 100644 index 0000000..7927e77 --- /dev/null +++ b/src/main/java/defpackage/zz.java @@ -0,0 +1,682 @@ +package defpackage; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import net.minecraft.client.model.geom.builders.UVPair; + +public class zz extends zu { + private static final float ICON_SIZE = 6.0F; + private static final float TITLE_ICON_GAP = 10.0F; + private static final float HEADER_BASE_INSET = 8.0F; + private static final float SHARE_BLOCK_HEIGHT = 62.0F; + private static final asu SUCCESS = new asu( + 88, + 194, + 125, + (-1909219604 | 1909219859) + (-1909219604 & 1909219859) + ); + private static final asu FAILURE = new asu( + 226, + 96, + 96, + (-1139285833 | 1139286088) + (-1139285833 & 1139286088) + ); + private static final float HINT_IDLE_ALPHA = 0.35F; + private static final float HINT_HOVER_ALPHA = 0.35F; + private static final String HEADER_TOOLTIP_IDLE = "Click to open this profile, right click to share it"; + private static final String HEADER_TOOLTIP_SHARING = "Right click to leave sharing and go back to the profile actions"; + private final String configName; + private final List settings = new ArrayList<>(); + private final abf shareButton; + private arn descriptionBox; + private final asi bounds = new asi(); + private final asi clickBounds = new asi(); + private final ct animation = ct.layout(ob.SETTLED, 0.0F); + private final ct hoverHeader = asa.spring(); + private final zw autoScroll = new zw(); + private boolean selected = (boolean)(((0)) != 0); + private boolean sharing = (boolean)(((0)) != 0); + private String shareMessage; + private boolean shareError; + private long shareAt; + + private static arq ROW_RADIUS() { + return asj.all(oc.CARD); + } + + public zz(String var1) { + this.configName = var1; + this.settings + .add( + new abf( + new rv("Load", () -> { + int var1x = 290073366; + + while (true) { + switch (var1x) { + case -1209423359: + bz.getInstance().getSoundManager().playTab(); + var1x = 614333998; + break; + case 290073366: + default: + bz.getInstance().getConfigManager().loadConfig(var1); + if (bz.getInstance().getSoundManager() != null) { + var1x = -1209423359; + } else { + var1x = 614333998; + } + break; + case 614333998: + return; + } + } + }) + .description( + "Load this configuration profile" + ) + ) + ); + this.settings + .add( + new abf( + new rv("Save", () -> { + int var1x = -153089774; + + while (true) { + switch (var1x) { + case -1183404979: + return; + case -153089774: + default: + bz.getInstance().getConfigManager().saveConfig(var1); + if (bz.getInstance().getSoundManager() != null) { + var1x = 1575364636; + } else { + var1x = -1183404979; + } + break; + case 1575364636: + bz.getInstance().getSoundManager().playTab(); + var1x = -1183404979; + } + } + }) + .description( + "Save your current settings to this profile" + ) + ) + ); + this.settings.add(new abf(new rv("Delete", () -> { + int var1x = 308239711; + + while (true) { + switch (var1x) { + case -1593665129: + bz.getInstance().getSoundManager().playTab(); + var1x = 1260014175; + break; + case 308239711: + default: + bz.getInstance().getConfigManager().deleteConfig(var1); + bz.getInstance().getMenuScreen().refreshConfigs(); + if (bz.getInstance().getSoundManager() != null) { + var1x = -1593665129; + } else { + var1x = 1260014175; + } + break; + case 1260014175: + return; + } + } + }).description("Delete this configuration profile"))); + this.shareButton = new abf( + new rv( + "Share to community", + () -> { + String var2 = null; + String var3 = null; + String var5 = null; + int var4 = -2125343924; + + while (true) { + switch (var4) { + case -2125343924: + default: + var2 = bz.getInstance().getConfigManager().exportConfig(var1); + if (var2 == null) { + var4 = -262420376; + } else { + var4 = 455390574; + } + break; + case -1559616339: + var3 = var5; + amv.publish( + var1, + var3, + var2, + var1xx -> this.showShare( + var1xx == null + ? "Shared to community" + : var1xx, + (boolean)(((var1xx != null + ? 1: (487511230 | -487511230) + (487511230 & -487511230)) + ) != 0)) + ); + if (bz.getInstance().getSoundManager() != null) { + var4 = 63516613; + } else { + var4 = 1960332565; + } + break; + case -262420376: + this.showShare( + "Could not read config", + (boolean)((((60220559 ^ -60220558) + ((60220559 & -60220558) << 1)) + ) != 0)); + return; + case 49136945: + var5 = this.descriptionBox.getText().trim(); + var4 = -1559616339; + break; + case 63516613: + bz.getInstance().getSoundManager().playTab(); + var4 = 1960332565; + break; + case 455390574: + this.showShare( + "Sharing...", + (boolean)((((-1931057623 ^ 1931057623) + ((-1931057623 & 1931057623) << 1)) + ) != 0)); + if (this.descriptionBox == null) { + var4 = 1936864910; + } else { + var4 = 49136945; + } + break; + case 1936864910: + var5 = ""; + var4 = -1559616339; + break; + case 1960332565: + return; + } + } + } + ) + .description( + "Publish this config to the community pool" + ) + ); + } + + private void showShare(String var1, boolean var2) { + this.shareMessage = var1; + this.shareError = var2; + this.shareAt = System.currentTimeMillis(); + } + + private arn descriptionBox() { + int var1 = 1410258094; + + while (true) { + switch (var1) { + case -1517436212: + this.descriptionBox = new arn( + new UVPair(0.0F, 0.0F), + gl.MEDIUM.getFont(7.0F), + "Short description...", + 100.0F + ); + this.descriptionBox.setMaxLength((-627851200 ^ 627851360) + ((-627851200 & 627851360) << 1)); + var1 = 692867171; + break; + case 692867171: + return this.descriptionBox; + case 1410258094: + default: + if (this.descriptionBox == null) { + var1 = -1517436212; + } else { + var1 = 692867171; + } + } + } + } + + @Override + public void render(asq var1, float var2, float var3, ge var4, float var5, float var6, float var7, float var8, int var9, float var10, float var11) { + int var12 = !this.selected && !this.sharing + ? 0: 1; + this.animation.animateTo(var12 != 0 ? 1.0F : 0.0F); + this.animation.update(); + float var13 = cardHeaderHeight(); + mv var14 = bz.getInstance().getThemeManager().getCurrentTheme(); + asu var15 = var14.getForegroundColor().mulAlpha(var8); + float var16 = this.getHeight(); + asu var17 = var14.getForegroundDark().mulAlpha(var8); + this.clickBounds.set(var5, var6, var7, var13); + this.bounds.set(var5, var6, var7, var12 != 0 ? var16 : var13); + int var18 = (this.bounds.contains(this.scaleMouseX(var2, this.bounds), this.scaleMouseY(var3, this.bounds))) ? 1 : 0; + if (var3 < var10 || var3 > var11) { + var18 = 0; + } + + this.hoverAnimation.animateTo(var18 != 0 ? 1.0F : 0.0F); + float var19 = this.hoverAnimation.update(); + if (bz.getInstance().getMenuScreen() != null) { + this.autoScroll.update(bz.getInstance().getMenuScreen(), (boolean)((var18) != 0), this.getToyHover(), this.autoScrollY(var6), var16, var7, var10, var11); + } + + if (!(var6 > var11) && !(var6 + var16 < var10)) { + boolean var20 = asa.push(var1, var5, var6, var7, var12 != 0 ? var16 : var13, var19, asa.cardAmount(var7)); + int var21 = (asa.hits( + this.scaleMouseX(var2, this.bounds), this.scaleMouseY(var3, this.bounds), this.clickBounds, this.hoverHeader, asa.controlAmount(var7) + )) ? 1 : 0; + if (var3 < var10 || var3 > var11) { + var21 = 0; + } + + this.hoverHeader.animateTo(var21 != 0 ? 1.0F : 0.0F); + float var22 = this.hoverHeader.update(); + float var23 = 1.0F; + var5 += var23; + var6 += var23; + var7 -= var23 * 2.0F; + var13 -= var23 * 2.0F; + var16 -= var23 * 2.0F; + float var24 = var12 != 0 ? var16 : var13; + float var25 = this.animation.value(); + zv.restShadow(var1, var5, var6, var7, var24, var8); + zv.activeShadow(var1, var5, var6, var7, var24, var8, var25, var14.getColor()); + zv.body(var1, var5, var6, var7, var24, var13, (boolean)((var12) != 0), var15.getRGB(), var17.getRGB()); + asa.plateRow(var1, var5, var6, var7, var13, asa.plateColor(var14), var8, var22); + boolean var26 = asa.push(var1, var5, var6, var7, var13, var22, asa.controlAmount(var7)); + asu var27 = var14.getGray().mix(var14.getColor(), var25).mulAlpha(var8); + asu var28 = var14.getGrayLight().mix(var14.getWhite(), var25).mulAlpha(var8); + var28 = asa.liftText(var28, var14, var22); + float var29 = asj.contentInset(oc.PANEL, 8.0F, var7, var13); + ge var30 = gl.ICONS.getFont(6.0F); + var1.drawText( + var30, + "g", + var5 + var29 + asa.iconShift(var22), + var6 + (var13 - var30.height()) / 2.0F, + var27 + ); + ge var31 = asp.font(oe.MICRO); + float var32 = var5 + var29 + 10.0F; + float var33 = var7 - var29 * 2.0F - 10.0F; + if (!this.sharing) { + String var34 = "RMB share"; + float var35 = var31.width(var34); + var1.drawText( + var31, var34, var5 + var7 - var29 - var35, var6 + (var13 - var31.height()) / 2.0F, var14.getGrayLight().mulAlpha(var8 * (0.35F + 0.35F * var22)) + ); + var33 -= var35 + 10.0F; + } + + var1.drawScrollingText( + var4, + this.configName, + var32, + var6 + (var13 - var4.height()) / 2.0F, + Math.max(0.0F, var33), + var28, + (boolean)((((510531621 | -510531620) + (510531621 & -510531620)) + ) != 0)); + if (var22 > 0.5F) { + ass.tooltip( + this, + this.sharing + ? "Right click to leave sharing and go back to the profile actions" + : "Click to open this profile, right click to share it", + this.clickBounds.x(), + this.clickBounds.y(), + this.clickBounds.width(), + this.clickBounds.height(), + asr.BELOW + ); + } + + asa.pop(var1, var26); + if (this.sharing) { + this.renderShare(var1, var2, var3, var5, var6 + var13, var7, var8, var14); + } else if (this.selected) { + float var45 = var6 + var13 + cardSettingGap(); + asu var46 = var14.getWhiteGray().mix(var14.getGrayLight(), var25).mulAlpha(var8); + + for (aay var37 : this.settings) { + if (var37.isVisible()) { + float var38 = var37.getHeight(); + if (var45 <= var11 && var45 + var38 >= var10) { + var37.render( + var1, + (float)this.scaleMouseX(var2, this.bounds), + (float)this.scaleMouseY(var3, this.bounds), + var5, + var45, + var7, + var8, + var25, + var27.getRGB(), + var28.getRGB(), + var46.getRGB(), + var14 + ); + } + + var45 += var38 + cardSettingGap(); + } + } + } + + zv.border(var1, var5, var6, var7, var24, var14, var8); + zv.activeBorder(var1, var5, var6, var7, var24, var8, var25, var14.getColor()); + asa.pop(var1, var20); + } + } + + private void renderShare(asq var1, float var2, float var3, float var4, float var5, float var6, float var7, mv var8) { + float var9 = var4 + 6.0F; + float var10 = var5 + 6.0F; + float var11 = var6 - 12.0F; + float var12 = 18.0F; + boolean var13 = this.descriptionBox().isSelected(); + var1.drawSurface(aso.CONTROL, var9, var10, var11, var12, ROW_RADIUS(), var8.getForegroundColor().mulAlpha(0.6F * var7)); + atb.drawRoundedBorder( + var1.pose(), + var9, + var10, + var11, + var12, + pk.borderHairline(), + asj.all(oc.CARD), + var13 ? var8.getColor().mulAlpha(0.85F * var7) : var8.getForegroundStroke().mulAlpha(var7) + ); + this.descriptionBox().setWidth((int)(var11 - 14.0F)); + float var14 = var10 + (var12 - this.descriptionBox().getFont().height()) / 2.0F; + this.descriptionBox().setPosition(new UVPair(var9 + 7.0F, var14)); + this.descriptionBox().render(var1, var9 + 7.0F, var14, var8.getWhite().mulAlpha(var7), var8.getGrayLight().mulAlpha((var13 ? 0.35F : 0.75F) * var7)); + float var15 = var10 + var12 + 6.0F; + this.shareButton + .render( + var1, + (float)this.scaleMouseX(var2, this.bounds), + (float)this.scaleMouseY(var3, this.bounds), + var4, + var15, + var6, + var7, + this.animation.value(), + var8.getColor().getRGB(), + var8.getWhite().getRGB(), + var8.getWhiteGray().getRGB(), + var8 + ); + ge var16 = asp.font(oe.MICRO); + int var17 = this.shareMessage != null + && System.currentTimeMillis() - this.shareAt + < (-2087639949906116908L ^ 2087639949906121908L) + ((-2087639949906116908L & 2087639949906121908L) << 1) + ? 1: 0; + String var18 = var17 != 0 ? this.shareMessage : "Shares this profile as \"" + this.configName + "\""; + asu var19 = var17 != 0 ? (this.shareError ? FAILURE : SUCCESS).mulAlpha(var7) : var8.getGrayLight().mulAlpha(var7 * 0.8F); + var1.drawText(var16, var18, var4 + 8.0F, var15 + 16.0F + 5.0F, var19); + } + + @Override + public float getHeight() { + float var1 = 0.0F; + int var2 = -1186653274; + + while (true) { + switch (var2) { + case -2007270335: + if (this.selected) { + var2 = 746640467; + } else { + var2 = 808958304; + } + break; + case -1186653274: + default: + if (this.sharing) { + var2 = -340145883; + } else { + var2 = -2007270335; + } + break; + case -340145883: + return cardHeaderHeight() + 62.0F; + case -165251717: + var1 = cardSettingGap(); + return (float)(cardHeaderHeight() + this.settings.stream().filter(aay::isVisible).mapToDouble(var1x -> var1x.getHeight() + var1).sum() + var1); + case 746640467: + if (!this.hasSettings()) { + var2 = 808958304; + } else { + var2 = -165251717; + } + break; + case 808958304: + return cardHeaderHeight(); + } + } + } + + private boolean hasSettings() { + int var2 = 0; + int var1 = 872950685; + + while (true) { + switch (var1) { + case -1465020475: + return (boolean)((var2) != 0); + case -703455282: + var2 = 1; + var1 = -1465020475; + break; + case 872950685: + default: + if (!this.settings.isEmpty()) { + var1 = -703455282; + } else { + var1 = 901891858; + } + break; + case 901891858: + var2 = 0; + var1 = -1465020475; + } + } + } + + private boolean headerHit(double var1, double var3) { + return asa.hitsControl(var1, var3, this.clickBounds, this.hoverHeader); + } + + @Override + public void onMouseClicked(double var1, double var3, apf var5) { + double var6 = this.scaleMouseX(var1, this.bounds); + double var8 = this.scaleMouseY(var3, this.bounds); + boolean var10 = this.headerHit(var6, var8); + if (var10 && var5 == apf.RIGHT) { + this.sharing = (boolean)(((!this.sharing ? 1: (-233102447 | 233102447) + (-233102447 & 233102447))) != 0); + this.selected = (boolean)(((0)) != 0); + if (!this.sharing) { + this.descriptionBox().setSelected((boolean)((((-977791538 | 977791538) + (-977791538 & 977791538))) != 0)); + } + + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + } else { + if (var10 && var5 == apf.LEFT) { + this.selected = (boolean)(((!this.selected + ? 1: (-1699331543 | 1699331543) + (-1699331543 & 1699331543))) != 0); + this.sharing = (boolean)(((0)) != 0); + this.descriptionBox().setSelected((boolean)((((1330176668 | -1330176668) + (1330176668 & -1330176668))) != 0)); + if (bz.getInstance().getSoundManager() != null) { + bz.getInstance().getSoundManager().playClick(); + } + } + + if (this.sharing) { + this.descriptionBox().onMouseClicked(var6, var8, var5); + this.shareButton.onMouseClicked(var6, var8, var5); + } else if (this.selected) { + for (aay var12 : this.settings) { + if (var12.isVisible()) { + var12.onMouseClicked(var6, var8, var5); + } + } + } + } + } + + @Override + public void onMouseReleased(double var1, double var3, apf var5) { + double var6 = 0.0; + double var8 = 0.0; + Iterator var10 = null; + aay var11 = null; + int var12 = 499070022; + + while (true) { + switch (var12) { + case -885067536: + var11 = (aay)var10.next(); + if (!var11.isVisible()) { + var12 = 2087904366; + } else { + var12 = 349208568; + } + break; + case -567122536: + this.shareButton.onMouseReleased(var6, var8, var5); + var12 = 95443906; + break; + case 26512719: + if (this.selected) { + var12 = 916885229; + } else { + var12 = 95443906; + } + break; + case 95443906: + return; + case 349208568: + var11.onMouseReleased(var6, var8, var5); + var12 = 1401620628; + break; + case 499070022: + default: + var6 = this.scaleMouseX(var1, this.bounds); + var8 = this.scaleMouseY(var3, this.bounds); + if (this.sharing) { + var12 = -567122536; + } else { + var12 = 26512719; + } + break; + case 916885229: + var10 = this.settings.iterator(); + var12 = 1401620628; + break; + case 1401620628: + if (var10.hasNext()) { + var12 = -885067536; + } else { + var12 = 95443906; + } + break; + case 2087904366: + var12 = 1401620628; + } + } + } + + @Override + public void onMouseDragged(double var1, double var3, apf var5, double var6, double var8) { + } + + @Override + public boolean keyPressed(int var1, int var2, int var3) { + int var4 = 1288299952; + + while (true) { + switch (var4) { + case -595914966: + if (this.descriptionBox().isSelected()) { + var4 = -569124606; + } else { + var4 = 1576200308; + } + break; + case -569124606: + return this.descriptionBox().keyPressed(var1, var2, var3); + case 1288299952: + default: + if (this.sharing) { + var4 = -595914966; + } else { + var4 = 1576200308; + } + break; + case 1576200308: + return (boolean)(((0)) != 0); + } + } + } + + @Override + public boolean charTyped(char var1, int var2) { + int var3 = -115544494; + + while (true) { + switch (var3) { + case -1205162816: + return (boolean)(((0)) != 0); + case -604960665: + return this.descriptionBox().charTyped(var1, var2); + case -115544494: + default: + if (this.sharing) { + var3 = 354381432; + } else { + var3 = -1205162816; + } + break; + case 354381432: + if (this.descriptionBox().isSelected()) { + var3 = -604960665; + } else { + var3 = -1205162816; + } + } + } + } + + @Override + public boolean mouseScrolled(double var1, double var3, double var5, double var7) { + return (boolean)(((0)) != 0); + } + + @Override + public int getSortGroup() { + return 2; + } + + @Override + public rl getCategory() { + return rl.CONFIGS; + } + + @Override + public String getName() { + return this.configName; + } +} diff --git a/src/main/java/evo/systems/security/natives/NativeGuard.java b/src/main/java/evo/systems/security/natives/NativeGuard.java new file mode 100644 index 0000000..3d9ed19 --- /dev/null +++ b/src/main/java/evo/systems/security/natives/NativeGuard.java @@ -0,0 +1,105 @@ +package evo.systems.security.natives; + +import defpackage.*; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.Locale; + +public final class NativeGuard { + private static final String RESOURCE_ROOT = "/META-INF/evo/native/"; + private static final String LIBRARY_STEM = "evoguard"; + private static final String TEMP_PREFIX = "evoguard-"; + private static final String OS_PROPERTY = "os.name"; + private static final String ARCH_PROPERTY = "os.arch"; + private static final String OS_WINDOWS = "win"; + private static final String OS_MAC = "mac"; + private static final String ARCH_X64 = "x64"; + private static final String ARCH_ARM64 = "arm64"; + private static volatile boolean available = load(); + private static volatile boolean attempted; + + private NativeGuard() { + } + + public static boolean isAvailable() { + return available; + } + + public static byte[] share(String hwid) { + if (available && hwid != null) { + try { + byte[] result = nativeShare(hwid); + return result != null && result.length == 32 ? result : null; + } catch (Throwable failure) { + id.warn(Cif.SECURITY, "native guard unavailable ({})", failure); + return null; + } + } else { + return null; + } + } + + private static native byte[] nativeShare(String var0); + + private static boolean load() { + if (attempted) { + return available; + } + + attempted = true; + String platform = platform(); + if (platform == null) { + id.warn(Cif.SECURITY, "native guard unavailable ({})", "unsupported platform"); + return false; + } + + String resource = "/META-INF/evo/native/" + platform + "/" + libraryName(platform); + + try (InputStream stream = NativeGuard.class.getResourceAsStream(resource)) { + if (stream == null) { + id.warn(Cif.SECURITY, "native guard unavailable ({})", "missing " + resource); + return false; + } else { + Path temp = Files.createTempFile("evoguard-", suffix(platform)); + temp.toFile().deleteOnExit(); + Files.copy(stream, temp, StandardCopyOption.REPLACE_EXISTING); + System.load(temp.toAbsolutePath().toString()); + return true; + } + } catch (Throwable failure) { + id.warn(Cif.SECURITY, "native guard unavailable ({})", failure); + return false; + } + } + + private static String platform() { + String os = System.getProperty("os.name", "").toLowerCase(Locale.ROOT); + String arch = System.getProperty("os.arch", "").toLowerCase(Locale.ROOT); + String archTag = !arch.contains("arm64") && !arch.contains("aarch64") ? (arch.contains("64") ? "x64" : null) : "arm64"; + if (archTag == null) { + return null; + } else if (os.contains("win")) { + return "win-" + archTag; + } else { + return !os.contains("mac") && !os.contains("darwin") ? null : "macos-" + archTag; + } + } + + private static String libraryName(String platform) { + if (platform.startsWith("win")) { + return "evoguard.dll"; + } else { + return platform.startsWith("macos") ? "libevoguard.dylib" : "libevoguard.so"; + } + } + + private static String suffix(String platform) { + if (platform.startsWith("win")) { + return ".dll"; + } else { + return platform.startsWith("macos") ? ".dylib" : ".so"; + } + } +} diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 0000000..59448bf --- /dev/null +++ b/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,11 @@ +Manifest-Version: 1.0 +Fabric-Mapping-Namespace: official +Fabric-Gradle-Version: 9.5.1 +Fabric-Loom-Version: 1.17.17 +Fabric-Mixin-Compile-Extensions-Version: 0.6.0 +Fabric-Minecraft-Version: 26.2 +Fabric-Tiny-Remapper-Version: 0.14.0 +Fabric-Loader-Version: 0.19.5 +Fabric-Mixin-Version: 0.17.4+mixin.0.8.7 +Fabric-Mixin-Group: net.fabricmc + diff --git a/src/main/resources/META-INF/evo/native/macos-arm64/libevoguard.dylib b/src/main/resources/META-INF/evo/native/macos-arm64/libevoguard.dylib new file mode 100644 index 0000000..6de0f95 Binary files /dev/null and b/src/main/resources/META-INF/evo/native/macos-arm64/libevoguard.dylib differ diff --git a/src/main/resources/META-INF/evo/native/macos-x64/libevoguard.dylib b/src/main/resources/META-INF/evo/native/macos-x64/libevoguard.dylib new file mode 100644 index 0000000..710f3ae Binary files /dev/null and b/src/main/resources/META-INF/evo/native/macos-x64/libevoguard.dylib differ diff --git a/src/main/resources/META-INF/evo/native/win-arm64/evoguard.dll b/src/main/resources/META-INF/evo/native/win-arm64/evoguard.dll new file mode 100644 index 0000000..dd0d775 Binary files /dev/null and b/src/main/resources/META-INF/evo/native/win-arm64/evoguard.dll differ diff --git a/src/main/resources/META-INF/evo/native/win-x64/evoguard.dll b/src/main/resources/META-INF/evo/native/win-x64/evoguard.dll new file mode 100644 index 0000000..2b0ec34 Binary files /dev/null and b/src/main/resources/META-INF/evo/native/win-x64/evoguard.dll differ diff --git a/src/main/resources/META-INF/jars/api-0.32.0.jar b/src/main/resources/META-INF/jars/api-0.32.0.jar new file mode 100644 index 0000000..396aaa4 Binary files /dev/null and b/src/main/resources/META-INF/jars/api-0.32.0.jar differ diff --git a/src/main/resources/META-INF/jars/jcodec-0.2.5.jar b/src/main/resources/META-INF/jars/jcodec-0.2.5.jar new file mode 100644 index 0000000..5945098 Binary files /dev/null and b/src/main/resources/META-INF/jars/jcodec-0.2.5.jar differ diff --git a/src/main/resources/META-INF/jars/luaj-jse-3.0.1.jar b/src/main/resources/META-INF/jars/luaj-jse-3.0.1.jar new file mode 100644 index 0000000..fd4719d Binary files /dev/null and b/src/main/resources/META-INF/jars/luaj-jse-3.0.1.jar differ diff --git a/src/main/resources/META-INF/jars/pytorch-engine-0.32.0.jar b/src/main/resources/META-INF/jars/pytorch-engine-0.32.0.jar new file mode 100644 index 0000000..26975dc Binary files /dev/null and b/src/main/resources/META-INF/jars/pytorch-engine-0.32.0.jar differ diff --git a/src/main/resources/META-INF/jars/viafabricplus-5.0.2.jar b/src/main/resources/META-INF/jars/viafabricplus-5.0.2.jar new file mode 100644 index 0000000..7609583 Binary files /dev/null and b/src/main/resources/META-INF/jars/viafabricplus-5.0.2.jar differ diff --git a/src/main/resources/META-INF/jars/voicechat-fabric-2.6.21+26.2.jar b/src/main/resources/META-INF/jars/voicechat-fabric-2.6.21+26.2.jar new file mode 100644 index 0000000..4e32e55 Binary files /dev/null and b/src/main/resources/META-INF/jars/voicechat-fabric-2.6.21+26.2.jar differ diff --git a/src/main/resources/META-INF/jars/whisper-jni-1.7.1.jar b/src/main/resources/META-INF/jars/whisper-jni-1.7.1.jar new file mode 100644 index 0000000..033c339 Binary files /dev/null and b/src/main/resources/META-INF/jars/whisper-jni-1.7.1.jar differ diff --git a/src/main/resources/assets/evolution/cosmetic/backpacks/adidas.geo.json b/src/main/resources/assets/evolution/cosmetic/backpacks/adidas.geo.json new file mode 100644 index 0000000..ba68c66 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/backpacks/adidas.geo.json @@ -0,0 +1,412 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 2, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [ + 0, + 1.25, + 0 + ] + }, + "bones": [ + { + "name": "backpack", + "pivot": [ + 0, + 0, + 0 + ], + "cubes": [ + { + "origin": [ + 3, + -2.75, + -2.5 + ], + "size": [ + 1, + 9, + 5 + ], + "inflate": 0.01, + "uv": [ + 18, + 13 + ] + }, + { + "origin": [ + -4, + -2.75, + -2.5 + ], + "size": [ + 1, + 9, + 5 + ], + "inflate": 0.01, + "uv": [ + 0, + 22 + ] + }, + { + "origin": [ + -4, + -4.75, + 2.5 + ], + "size": [ + 8, + 9, + 4 + ], + "uv": [ + 0, + 0 + ] + }, + { + "origin": [ + -3, + -1.75, + 6 + ], + "size": [ + 6, + 1, + 1 + ], + "uv": [ + 41, + 62 + ] + }, + { + "origin": [ + -4, + -0.75, + 5.75 + ], + "size": [ + 8, + 5, + 0.5 + ], + "inflate": 0.05, + "uv": { + "north": { + "uv": [ + 19, + 59 + ], + "uv_size": [ + 8, + 5 + ] + }, + "east": { + "uv": [ + 18, + 59 + ], + "uv_size": [ + 1, + 5 + ] + }, + "south": { + "uv": [ + 28, + 59 + ], + "uv_size": [ + 8, + 5 + ] + }, + "west": { + "uv": [ + 27, + 59 + ], + "uv_size": [ + 1, + 5 + ] + }, + "up": { + "uv": [ + 19, + 58 + ], + "uv_size": [ + 8, + 1 + ] + }, + "down": { + "uv": [ + 27, + 59 + ], + "uv_size": [ + 8, + -1 + ] + } + } + }, + { + "origin": [ + -5, + -4.75, + 3 + ], + "size": [ + 1, + 4, + 3 + ], + "uv": [ + 12, + 27 + ] + }, + { + "origin": [ + 4, + -4.75, + 3 + ], + "size": [ + 1, + 4, + 3 + ], + "uv": [ + 20, + 27 + ] + }, + { + "origin": [ + -4.425, + -0.6000000000000014, + 5.6 + ], + "size": [ + 0, + 2, + 1 + ], + "pivot": [ + -3.925, + -0.10000000000000142, + 6.6 + ], + "rotation": [ + 5, + 15, + 20 + ], + "uv": [ + 12, + 22 + ] + }, + { + "origin": [ + -3, + 4.25, + 2.5 + ], + "size": [ + 6, + 1, + 4 + ], + "uv": [ + 24, + 0 + ] + }, + { + "origin": [ + -3, + 4.25, + 5.75 + ], + "size": [ + 6, + 1, + 0.5 + ], + "inflate": 0.05, + "uv": { + "north": { + "uv": [ + 1, + 63 + ], + "uv_size": [ + 6, + 1 + ] + }, + "east": { + "uv": [ + 0, + 63 + ], + "uv_size": [ + 1, + 1 + ] + }, + "south": { + "uv": [ + 8, + 63 + ], + "uv_size": [ + 6, + 1 + ] + }, + "west": { + "uv": [ + 7, + 63 + ], + "uv_size": [ + 1, + 1 + ] + }, + "up": { + "uv": [ + 1, + 62 + ], + "uv_size": [ + 6, + 1 + ] + }, + "down": { + "uv": [ + 7, + 63 + ], + "uv_size": [ + 6, + -1 + ] + } + } + }, + { + "origin": [ + -1.5, + 1.25, + 6.5 + ], + "size": [ + 3, + 3, + 0 + ], + "inflate": 0.01, + "uv": { + "north": { + "uv": [ + 0, + 13 + ], + "uv_size": [ + 9, + 9 + ] + }, + "east": { + "uv": [ + 0, + 13 + ], + "uv_size": [ + 0, + 9 + ] + }, + "south": { + "uv": [ + 9, + 13 + ], + "uv_size": [ + 9, + 9 + ] + }, + "west": { + "uv": [ + 9, + 13 + ], + "uv_size": [ + 0, + 9 + ] + }, + "up": { + "uv": [ + 0, + 13 + ], + "uv_size": [ + 9, + 0 + ] + }, + "down": { + "uv": [ + 9, + 13 + ], + "uv_size": [ + 9, + 0 + ] + } + } + }, + { + "origin": [ + -2, + 5.25, + 3.5 + ], + "size": [ + 4, + 1, + 2 + ], + "uv": [ + 24, + 5 + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/backpacks/gucci.geo.json b/src/main/resources/assets/evolution/cosmetic/backpacks/gucci.geo.json new file mode 100644 index 0000000..a636f5d --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/backpacks/gucci.geo.json @@ -0,0 +1,637 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 2, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [ + 0, + 1.25, + 0 + ] + }, + "bones": [ + { + "name": "backpack", + "pivot": [ + 0, + 0, + 0 + ], + "cubes": [ + { + "origin": [ + 3, + -2.75, + -2.5 + ], + "size": [ + 1, + 9, + 5 + ], + "inflate": 0.01, + "uv": [ + 0, + 20 + ] + }, + { + "origin": [ + -4, + -2.75, + -2.5 + ], + "size": [ + 1, + 9, + 5 + ], + "inflate": 0.01, + "uv": [ + 12, + 20 + ] + }, + { + "origin": [ + -4, + -4.75, + 2.5 + ], + "size": [ + 8, + 10, + 4 + ], + "uv": [ + 0, + 0 + ] + }, + { + "origin": [ + -0.5, + -4.75, + 6.5 + ], + "size": [ + 1, + 10, + 0 + ], + "inflate": 0.01, + "uv": [ + 62, + 0 + ] + }, + { + "origin": [ + 4, + -4.25, + 2.5 + ], + "size": [ + 1, + 3, + 4 + ], + "uv": [ + 26, + 9 + ] + }, + { + "origin": [ + -5, + -4.25, + 2.5 + ], + "size": [ + 1, + 3, + 4 + ], + "uv": [ + 24, + 26 + ] + }, + { + "origin": [ + -5.25, + -3, + 2.5 + ], + "size": [ + 2, + 2, + 4 + ], + "inflate": -0.1, + "pivot": [ + -4.25, + -2, + 4.5 + ], + "rotation": [ + 0, + 0, + 7.5 + ], + "uv": [ + 24, + 3 + ] + }, + { + "origin": [ + 3.25, + -3, + 2.5 + ], + "size": [ + 2, + 2, + 4 + ], + "inflate": -0.1, + "pivot": [ + 4.25, + -2, + 4.5 + ], + "rotation": [ + 0, + 0, + -7.5 + ], + "uv": [ + 24, + 20 + ] + }, + { + "origin": [ + -2.7, + -3.744579999999999, + 6.83272 + ], + "size": [ + 1, + 5, + 0 + ], + "pivot": [ + -2.2, + 1.2554200000000009, + 6.83272 + ], + "rotation": [ + 4.98107, + -0.43523, + 4.98107 + ], + "uv": { + "north": { + "uv": [ + 24, + 9 + ], + "uv_size": [ + 1, + 5 + ] + }, + "east": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 0, + 5 + ] + }, + "south": { + "uv": [ + 25, + 9 + ], + "uv_size": [ + 1, + 5 + ] + }, + "west": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 0, + 5 + ] + }, + "up": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 1, + 0 + ] + }, + "down": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 1, + 0 + ] + } + } + }, + { + "origin": [ + -2.7, + 1.2554200000000009, + 6.58272 + ], + "size": [ + 1, + 3, + 0.5 + ], + "uv": { + "north": { + "uv": [ + 26, + 16 + ], + "uv_size": [ + 1, + 3 + ] + }, + "east": { + "uv": [ + 27, + 16 + ], + "uv_size": [ + 1, + 3 + ] + }, + "south": { + "uv": [ + 28, + 16 + ], + "uv_size": [ + 1, + 3 + ] + }, + "west": { + "uv": [ + 29, + 16 + ], + "uv_size": [ + 1, + 3 + ] + }, + "up": { + "uv": [ + 26, + 19 + ], + "uv_size": [ + 1, + 1 + ] + }, + "down": { + "uv": [ + 27, + 20 + ], + "uv_size": [ + 1, + -1 + ] + } + } + }, + { + "origin": [ + 1.7, + 1.2554200000000009, + 6.58272 + ], + "size": [ + 1, + 3, + 0.5 + ], + "uv": { + "north": { + "uv": [ + 30, + 16 + ], + "uv_size": [ + 1, + 3 + ] + }, + "east": { + "uv": [ + 31, + 16 + ], + "uv_size": [ + 1, + 3 + ] + }, + "south": { + "uv": [ + 32, + 16 + ], + "uv_size": [ + 1, + 3 + ] + }, + "west": { + "uv": [ + 33, + 16 + ], + "uv_size": [ + 1, + 3 + ] + }, + "up": { + "uv": [ + 28, + 19 + ], + "uv_size": [ + 1, + 1 + ] + }, + "down": { + "uv": [ + 29, + 20 + ], + "uv_size": [ + 1, + -1 + ] + } + } + }, + { + "origin": [ + 1.7, + -3.744579999999999, + 6.83272 + ], + "size": [ + 1, + 5, + 0 + ], + "pivot": [ + 2.2, + 1.2554200000000009, + 6.83272 + ], + "rotation": [ + 4.98107, + 0.43523, + -4.98107 + ], + "uv": { + "north": { + "uv": [ + 0, + 34 + ], + "uv_size": [ + 1, + 5 + ] + }, + "east": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 0, + 5 + ] + }, + "south": { + "uv": [ + 1, + 34 + ], + "uv_size": [ + 1, + 5 + ] + }, + "west": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 0, + 5 + ] + }, + "up": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 1, + 0 + ] + }, + "down": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 1, + 0 + ] + } + } + }, + { + "origin": [ + -4.5, + 4.25, + 2.25 + ], + "size": [ + 9, + 2, + 4 + ], + "pivot": [ + 0, + 5.25, + 4.25 + ], + "rotation": [ + -7.5, + 0, + 0 + ], + "uv": [ + 0, + 14 + ] + }, + { + "origin": [ + -4.5, + 3.9032300000000006, + 5.9755 + ], + "size": [ + 9, + 2, + 1 + ], + "inflate": 0.01, + "pivot": [ + 0, + 4.403230000000001, + 6.4755 + ], + "rotation": [ + 22.5, + 0, + 0 + ], + "uv": [ + 24, + 0 + ] + }, + { + "origin": [ + -0.885, + 4.32948, + 8.01666 + ], + "size": [ + 2, + 2, + 0 + ], + "pivot": [ + 0.115, + 2.07948, + 8.04166 + ], + "rotation": [ + 22.5, + 0, + 0 + ], + "uv": { + "north": { + "uv": [ + 24, + 33 + ], + "uv_size": [ + 9, + 9 + ] + }, + "east": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 0, + 9 + ] + }, + "south": { + "uv": [ + 33, + 33 + ], + "uv_size": [ + 9, + 9 + ] + }, + "west": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 0, + 9 + ] + }, + "up": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 9, + 0 + ] + }, + "down": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 9, + 0 + ] + } + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/backpacks/hermes.geo.json b/src/main/resources/assets/evolution/cosmetic/backpacks/hermes.geo.json new file mode 100644 index 0000000..1f47652 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/backpacks/hermes.geo.json @@ -0,0 +1,380 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 2, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [ + 0, + 1.25, + 0 + ] + }, + "bones": [ + { + "name": "backpack", + "pivot": [ + 0, + 0, + 0 + ], + "cubes": [ + { + "origin": [ + 3, + -2.75, + -2.5 + ], + "size": [ + 1, + 9, + 5 + ], + "inflate": 0.01, + "uv": [ + 0, + 18 + ] + }, + { + "origin": [ + -4, + -2.75, + -2.5 + ], + "size": [ + 1, + 9, + 5 + ], + "inflate": 0.01, + "uv": [ + 12, + 18 + ] + }, + { + "origin": [ + -4, + -4.75, + 2.5 + ], + "size": [ + 8, + 7, + 4 + ], + "uv": [ + 0, + 0 + ] + }, + { + "origin": [ + -4, + 0.25, + 5.75 + ], + "size": [ + 8, + 2, + 1 + ], + "inflate": 0.01, + "uv": { + "north": { + "uv": [ + 28, + 0 + ], + "uv_size": [ + 8, + 2 + ] + }, + "east": { + "uv": [ + 24, + 31 + ], + "uv_size": [ + 1, + 2 + ] + }, + "south": { + "uv": [ + 30, + 11 + ], + "uv_size": [ + 8, + 2 + ] + }, + "west": { + "uv": [ + 25, + 31 + ], + "uv_size": [ + 1, + 2 + ] + }, + "up": { + "uv": [ + 30, + 13 + ], + "uv_size": [ + 8, + 1 + ] + }, + "down": { + "uv": [ + 30, + 15 + ], + "uv_size": [ + 8, + -1 + ] + } + } + }, + { + "origin": [ + -3, + 2.25, + 2.5 + ], + "size": [ + 6, + 3, + 4 + ], + "uv": [ + 0, + 11 + ] + }, + { + "origin": [ + -3, + 2.25, + 5.75 + ], + "size": [ + 6, + 3, + 1 + ], + "inflate": 0.01, + "uv": { + "north": { + "uv": [ + 24, + 24 + ], + "uv_size": [ + 6, + 3 + ] + }, + "east": { + "uv": [ + 30, + 25 + ], + "uv_size": [ + 1, + 3 + ] + }, + "south": { + "uv": [ + 24, + 27 + ], + "uv_size": [ + 6, + 3 + ] + }, + "west": { + "uv": [ + 30, + 28 + ], + "uv_size": [ + 1, + 3 + ] + }, + "up": { + "uv": [ + 24, + 30 + ], + "uv_size": [ + 6, + 1 + ] + }, + "down": { + "uv": [ + 30, + 25 + ], + "uv_size": [ + 6, + -1 + ] + } + } + }, + { + "origin": [ + -2.5, + -3.25, + 6.5 + ], + "size": [ + 2, + 2, + 0 + ], + "inflate": 0.01, + "pivot": [ + -1.5, + -2.25, + 6.5 + ], + "rotation": [ + 0, + 0, + -45 + ], + "uv": { + "north": { + "uv": [ + 24, + 2 + ], + "uv_size": [ + 9, + 9 + ] + }, + "east": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 0, + 9 + ] + }, + "south": { + "uv": [ + 24, + 15 + ], + "uv_size": [ + 9, + 9 + ] + }, + "west": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 0, + 9 + ] + }, + "up": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 9, + 0 + ] + }, + "down": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 9, + 0 + ] + } + } + }, + { + "origin": [ + -1.5, + 5.25, + 3.5 + ], + "size": [ + 3, + 2, + 2 + ], + "uv": [ + 20, + 11 + ] + }, + { + "origin": [ + -2.5, + 4.25, + 5 + ], + "size": [ + 2, + 2, + 0 + ], + "uv": [ + 20, + 15 + ] + }, + { + "origin": [ + 0.5, + 4.25, + 5 + ], + "size": [ + 2, + 2, + 0 + ], + "uv": [ + 24, + 0 + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/backpacks/labubu.geo.json b/src/main/resources/assets/evolution/cosmetic/backpacks/labubu.geo.json new file mode 100644 index 0000000..341ea30 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/backpacks/labubu.geo.json @@ -0,0 +1,773 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.labubu", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 2, + "visible_bounds_height": 3, + "visible_bounds_offset": [ + 0, + 0.5, + 0 + ] + }, + "bones": [ + { + "name": "backpack", + "pivot": [ + 0, + 0, + 0 + ], + "cubes": [ + { + "origin": [ + -3.5, + -0.5, + 1.5 + ], + "size": [ + 7, + 7, + 7 + ], + "uv": { + "north": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "south": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 20, + 20 + ] + }, + "east": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "west": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "up": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "down": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + } + } + }, + { + "origin": [ + -2.75, + 6.5, + 4.25 + ], + "size": [ + 1.5, + 4, + 1 + ], + "uv": { + "north": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "south": { + "uv": [ + 22, + 0 + ], + "uv_size": [ + 6, + 7 + ] + }, + "east": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "west": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "up": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "down": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + } + } + }, + { + "origin": [ + 1.25, + 6.5, + 4.25 + ], + "size": [ + 1.5, + 4, + 1 + ], + "uv": { + "north": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "south": { + "uv": [ + 22, + 0 + ], + "uv_size": [ + 6, + 7 + ] + }, + "east": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "west": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "up": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "down": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + } + } + }, + { + "origin": [ + -3, + -6.5, + 2.5 + ], + "size": [ + 6, + 6, + 4 + ], + "uv": { + "north": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "south": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "east": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "west": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "up": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "down": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + } + } + }, + { + "origin": [ + -4.75, + -5, + 3 + ], + "size": [ + 1.75, + 4.5, + 2 + ], + "uv": { + "north": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "south": { + "uv": [ + 22, + 8 + ], + "uv_size": [ + 5, + 12 + ] + }, + "east": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "west": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "up": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "down": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + } + } + }, + { + "origin": [ + 3, + -5, + 3 + ], + "size": [ + 1.75, + 4.5, + 2 + ], + "uv": { + "north": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "south": { + "uv": [ + 22, + 8 + ], + "uv_size": [ + 5, + 12 + ] + }, + "east": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "west": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "up": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "down": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + } + } + }, + { + "origin": [ + -2.6, + -9, + 3 + ], + "size": [ + 2.25, + 2.5, + 2.25 + ], + "uv": { + "north": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "south": { + "uv": [ + 42, + 0 + ], + "uv_size": [ + 6, + 6 + ] + }, + "east": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "west": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "up": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "down": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + } + } + }, + { + "origin": [ + 0.35, + -9, + 3 + ], + "size": [ + 2.25, + 2.5, + 2.25 + ], + "uv": { + "north": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "south": { + "uv": [ + 42, + 0 + ], + "uv_size": [ + 6, + 6 + ] + }, + "east": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "west": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "up": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + }, + "down": { + "uv": [ + 44, + 44 + ], + "uv_size": [ + 12, + 12 + ] + } + } + }, + { + "origin": [ + 3.0, + -2.75, + -2.5 + ], + "size": [ + 1, + 9, + 5 + ], + "inflate": 0.01, + "uv": { + "north": { + "uv": [ + 30, + 0 + ], + "uv_size": [ + 10, + 10 + ] + }, + "south": { + "uv": [ + 30, + 0 + ], + "uv_size": [ + 10, + 10 + ] + }, + "east": { + "uv": [ + 30, + 0 + ], + "uv_size": [ + 10, + 10 + ] + }, + "west": { + "uv": [ + 30, + 0 + ], + "uv_size": [ + 10, + 10 + ] + }, + "up": { + "uv": [ + 30, + 0 + ], + "uv_size": [ + 10, + 10 + ] + }, + "down": { + "uv": [ + 30, + 0 + ], + "uv_size": [ + 10, + 10 + ] + } + } + }, + { + "origin": [ + -4.0, + -2.75, + -2.5 + ], + "size": [ + 1, + 9, + 5 + ], + "inflate": 0.01, + "uv": { + "north": { + "uv": [ + 30, + 0 + ], + "uv_size": [ + 10, + 10 + ] + }, + "south": { + "uv": [ + 30, + 0 + ], + "uv_size": [ + 10, + 10 + ] + }, + "east": { + "uv": [ + 30, + 0 + ], + "uv_size": [ + 10, + 10 + ] + }, + "west": { + "uv": [ + 30, + 0 + ], + "uv_size": [ + 10, + 10 + ] + }, + "up": { + "uv": [ + 30, + 0 + ], + "uv_size": [ + 10, + 10 + ] + }, + "down": { + "uv": [ + 30, + 0 + ], + "uv_size": [ + 10, + 10 + ] + } + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/backpacks/lui_vuitton.geo.json b/src/main/resources/assets/evolution/cosmetic/backpacks/lui_vuitton.geo.json new file mode 100644 index 0000000..9ff7ff1 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/backpacks/lui_vuitton.geo.json @@ -0,0 +1,360 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 32, + "texture_height": 32, + "visible_bounds_width": 2, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [ + 0, + 1.25, + 0 + ] + }, + "bones": [ + { + "name": "backpack", + "pivot": [ + 0, + 0, + 0 + ], + "cubes": [ + { + "origin": [ + 3, + -2.75, + -2.5 + ], + "size": [ + 1, + 9, + 5 + ], + "inflate": 0.01, + "uv": [ + 0, + 12 + ] + }, + { + "origin": [ + -4, + -2.75, + -2.5 + ], + "size": [ + 1, + 9, + 5 + ], + "inflate": 0.01, + "uv": [ + 0, + 12 + ], + "mirror": true + }, + { + "origin": [ + -4, + -4.75, + 2.5 + ], + "size": [ + 8, + 8, + 4 + ], + "uv": [ + 0, + 0 + ] + }, + { + "origin": [ + -4, + 0.25, + 5.75 + ], + "size": [ + 8, + 3, + 0.5 + ], + "inflate": 0.01, + "uv": { + "north": { + "uv": [ + 1, + 29 + ], + "uv_size": [ + 8, + 3 + ] + }, + "east": { + "uv": [ + 0, + 29 + ], + "uv_size": [ + 1, + 3 + ] + }, + "south": { + "uv": [ + 10, + 29 + ], + "uv_size": [ + 8, + 3 + ] + }, + "west": { + "uv": [ + 9, + 29 + ], + "uv_size": [ + 1, + 3 + ] + }, + "up": { + "uv": [ + 1, + 28 + ], + "uv_size": [ + 8, + 1 + ] + }, + "down": { + "uv": [ + 9, + 29 + ], + "uv_size": [ + 8, + -1 + ] + } + } + }, + { + "origin": [ + -3, + -4.25, + 6.5 + ], + "size": [ + 6, + 4, + 1 + ], + "uv": [ + 12, + 18 + ] + }, + { + "origin": [ + 2, + -4.6, + 7.6 + ], + "size": [ + 1, + 3, + 0 + ], + "pivot": [ + 2.5, + -3.0999999999999996, + 7.6 + ], + "rotation": [ + 4.98107, + 0.43523, + -4.98107 + ], + "uv": [ + 30, + 24 + ] + }, + { + "origin": [ + -3, + 3.25, + 2.5 + ], + "size": [ + 6, + 2, + 4 + ], + "uv": [ + 12, + 12 + ] + }, + { + "origin": [ + -3, + 3.25, + 5.75 + ], + "size": [ + 6, + 2, + 0.5 + ], + "inflate": 0.01, + "uv": { + "north": { + "uv": [ + 19, + 30 + ], + "uv_size": [ + 6, + 2 + ] + }, + "east": { + "uv": [ + 18, + 30 + ], + "uv_size": [ + 1, + 2 + ] + }, + "south": { + "uv": [ + 26, + 30 + ], + "uv_size": [ + 6, + 2 + ] + }, + "west": { + "uv": [ + 25, + 30 + ], + "uv_size": [ + 1, + 2 + ] + }, + "up": { + "uv": [ + 19, + 29 + ], + "uv_size": [ + 6, + 1 + ] + }, + "down": { + "uv": [ + 25, + 30 + ], + "uv_size": [ + 6, + -1 + ] + } + } + }, + { + "origin": [ + -1, + 2.25, + 6.5 + ], + "size": [ + 2, + 2, + 0 + ], + "inflate": 0.01, + "pivot": [ + 0, + 3.25, + 6.5 + ], + "rotation": [ + 0, + 0, + -45 + ], + "uv": [ + 28, + 20 + ] + }, + { + "origin": [ + -1, + -1.75, + 6.5 + ], + "size": [ + 2, + 2, + 0 + ], + "inflate": 0.01, + "pivot": [ + 0, + -0.75, + 6.5 + ], + "rotation": [ + 0, + 0, + -45 + ], + "uv": [ + 28, + 22 + ] + }, + { + "origin": [ + -2, + 5.25, + 3.5 + ], + "size": [ + 4, + 1, + 2 + ], + "uv": [ + 12, + 23 + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/backpacks/mage_staff.geo.json b/src/main/resources/assets/evolution/cosmetic/backpacks/mage_staff.geo.json new file mode 100644 index 0000000..1dc0ff7 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/backpacks/mage_staff.geo.json @@ -0,0 +1,2487 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 32, + "texture_height": 32, + "visible_bounds_width": 3, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [ + 0, + 1.25, + 0 + ] + }, + "bones": [ + { + "name": "MageStaff", + "pivot": [ + -3.29326, + 6.38497, + -3.91814 + ], + "rotation": [ + 4.6908, + 2.36038, + -26.65331 + ], + "parent": null + }, + { + "name": "Strings", + "parent": "MageStaff", + "pivot": [ + -4.6304, + -7.4584, + 2.91809 + ], + "cubes": [ + { + "origin": [ + -5.41642, + 2.31901, + -5.25345 + ], + "size": [ + 1.715, + 0.75, + 1.02 + ], + "uv": { + "north": { + "uv": [ + 8, + 18 + ], + "uv_size": [ + 1.75, + 0.75 + ] + }, + "east": { + "uv": [ + 17, + 5 + ], + "uv_size": [ + 1, + 0.75 + ] + }, + "south": { + "uv": [ + 8, + 19 + ], + "uv_size": [ + 1.75, + 0.75 + ] + }, + "west": { + "uv": [ + 9, + 20 + ], + "uv_size": [ + 1, + 0.75 + ] + }, + "up": { + "uv": [ + 18, + 6 + ], + "uv_size": [ + 1.75, + 1 + ] + }, + "down": { + "uv": [ + 18, + 8 + ], + "uv_size": [ + 1.75, + -1 + ] + } + } + } + ] + }, + { + "name": "bone5", + "parent": "Strings", + "pivot": [ + -5.79433, + 1.65161, + -4.46949 + ], + "rotation": [ + 0, + 0, + 10.25 + ], + "cubes": [ + { + "origin": [ + -5.16277, + 1.62136, + -4.57845 + ], + "size": [ + 0.4, + 0.4, + 0.22 + ], + "pivot": [ + -5.76277, + 1.62136, + -4.61845 + ], + "rotation": [ + 0, + 6.75, + -70 + ], + "uv": { + "north": { + "uv": [ + 21, + 15 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "east": { + "uv": [ + 12, + 22 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "south": { + "uv": [ + 16, + 21 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "west": { + "uv": [ + 22, + 12 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "up": { + "uv": [ + 13, + 22 + ], + "uv_size": [ + 0.5, + 0.25 + ] + }, + "down": { + "uv": [ + 22, + 13.25 + ], + "uv_size": [ + 0.5, + -0.25 + ] + } + } + }, + { + "origin": [ + -5.56277, + 1.62136, + -4.57845 + ], + "size": [ + 0.4, + 0.4, + 0.22 + ], + "pivot": [ + -5.76277, + 1.62136, + -4.61845 + ], + "rotation": [ + 0, + 6.75, + -70 + ], + "uv": { + "north": { + "uv": [ + 21, + 16 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "east": { + "uv": [ + 14, + 22 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "south": { + "uv": [ + 17, + 21 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "west": { + "uv": [ + 22, + 14 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "up": { + "uv": [ + 15, + 22 + ], + "uv_size": [ + 0.5, + 0.25 + ] + }, + "down": { + "uv": [ + 22, + 15.25 + ], + "uv_size": [ + 0.5, + -0.25 + ] + } + } + }, + { + "origin": [ + -5.96277, + 1.62136, + -4.57845 + ], + "size": [ + 0.4, + 0.4, + 0.22 + ], + "pivot": [ + -5.76277, + 1.62136, + -4.61845 + ], + "rotation": [ + 0, + 6.75, + -70 + ], + "uv": { + "north": { + "uv": [ + 21, + 19 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "east": { + "uv": [ + 20, + 22 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "south": { + "uv": [ + 20, + 21 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "west": { + "uv": [ + 22, + 20 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "up": { + "uv": [ + 21, + 22 + ], + "uv_size": [ + 0.5, + 0.25 + ] + }, + "down": { + "uv": [ + 22, + 21.25 + ], + "uv_size": [ + 0.5, + -0.25 + ] + } + } + }, + { + "origin": [ + -6.36277, + 1.22136, + -4.57845 + ], + "size": [ + 0.4, + 0.4, + 0.22 + ], + "pivot": [ + -5.76277, + 1.62136, + -4.61845 + ], + "rotation": [ + 0, + 6.75, + -70 + ], + "uv": { + "north": { + "uv": [ + 21, + 17 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "east": { + "uv": [ + 16, + 22 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "south": { + "uv": [ + 18, + 21 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "west": { + "uv": [ + 22, + 16 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "up": { + "uv": [ + 17, + 22 + ], + "uv_size": [ + 0.5, + 0.25 + ] + }, + "down": { + "uv": [ + 22, + 17.25 + ], + "uv_size": [ + 0.5, + -0.25 + ] + } + } + }, + { + "origin": [ + -7.16277, + 1.22136, + -4.57845 + ], + "size": [ + 0.4, + 0.4, + 0.22 + ], + "pivot": [ + -5.76277, + 1.62136, + -4.61845 + ], + "rotation": [ + 0, + 6.75, + -70 + ], + "uv": { + "north": { + "uv": [ + 21, + 18 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "east": { + "uv": [ + 18, + 22 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "south": { + "uv": [ + 19, + 21 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "west": { + "uv": [ + 22, + 18 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "up": { + "uv": [ + 19, + 22 + ], + "uv_size": [ + 0.5, + 0.25 + ] + }, + "down": { + "uv": [ + 22, + 19.25 + ], + "uv_size": [ + 0.5, + -0.25 + ] + } + } + }, + { + "origin": [ + -6.76277, + 1.22136, + -4.57845 + ], + "size": [ + 0.4, + 0.4, + 0.22 + ], + "pivot": [ + -5.76277, + 1.62136, + -4.61845 + ], + "rotation": [ + 0, + 6.75, + -70 + ], + "uv": { + "north": { + "uv": [ + 21, + 20 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "east": { + "uv": [ + 22, + 22 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "south": { + "uv": [ + 21, + 21 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "west": { + "uv": [ + 0, + 23 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "up": { + "uv": [ + 23, + 0 + ], + "uv_size": [ + 0.5, + 0.25 + ] + }, + "down": { + "uv": [ + 1, + 23.25 + ], + "uv_size": [ + 0.5, + -0.25 + ] + } + } + } + ] + }, + { + "name": "bone4", + "parent": "Strings", + "pivot": [ + -5.62312, + 1.64118, + -4.91816 + ], + "rotation": [ + 0, + 0, + 5 + ], + "cubes": [ + { + "origin": [ + -6.18777, + 1.22136, + -5.02845 + ], + "size": [ + 0.4, + 0.4, + 0.22 + ], + "pivot": [ + -5.58777, + 1.62136, + -4.84345 + ], + "rotation": [ + 0, + -5, + -70 + ], + "uv": { + "north": { + "uv": [ + 13, + 21 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "east": { + "uv": [ + 8, + 22 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "south": { + "uv": [ + 14, + 21 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "west": { + "uv": [ + 22, + 8 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "up": { + "uv": [ + 9, + 22 + ], + "uv_size": [ + 0.5, + 0.25 + ] + }, + "down": { + "uv": [ + 22, + 9.25 + ], + "uv_size": [ + 0.5, + -0.25 + ] + } + } + }, + { + "origin": [ + -5.78777, + 1.62136, + -5.02845 + ], + "size": [ + 0.4, + 0.4, + 0.22 + ], + "pivot": [ + -5.58777, + 1.62136, + -4.84345 + ], + "rotation": [ + 0, + -5, + -70 + ], + "uv": { + "north": { + "uv": [ + 21, + 11 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "east": { + "uv": [ + 6, + 22 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "south": { + "uv": [ + 12, + 21 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "west": { + "uv": [ + 22, + 6 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "up": { + "uv": [ + 7, + 22 + ], + "uv_size": [ + 0.5, + 0.25 + ] + }, + "down": { + "uv": [ + 22, + 7.25 + ], + "uv_size": [ + 0.5, + -0.25 + ] + } + } + }, + { + "origin": [ + -5.38777, + 1.62136, + -5.02845 + ], + "size": [ + 0.4, + 0.4, + 0.22 + ], + "pivot": [ + -5.58777, + 1.62136, + -4.84345 + ], + "rotation": [ + 0, + -5, + -70 + ], + "uv": { + "north": { + "uv": [ + 21, + 10 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "east": { + "uv": [ + 4, + 22 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "south": { + "uv": [ + 11, + 21 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "west": { + "uv": [ + 22, + 4 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "up": { + "uv": [ + 5, + 22 + ], + "uv_size": [ + 0.5, + 0.25 + ] + }, + "down": { + "uv": [ + 22, + 5.25 + ], + "uv_size": [ + 0.5, + -0.25 + ] + } + } + }, + { + "origin": [ + -4.98777, + 1.62136, + -5.02845 + ], + "size": [ + 0.4, + 0.4, + 0.22 + ], + "pivot": [ + -5.58777, + 1.62136, + -4.84345 + ], + "rotation": [ + 0, + -5, + -70 + ], + "uv": { + "north": { + "uv": [ + 21, + 9 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "east": { + "uv": [ + 2, + 22 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "south": { + "uv": [ + 10, + 21 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "west": { + "uv": [ + 22, + 2 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "up": { + "uv": [ + 3, + 22 + ], + "uv_size": [ + 0.5, + 0.25 + ] + }, + "down": { + "uv": [ + 22, + 3.25 + ], + "uv_size": [ + 0.5, + -0.25 + ] + } + } + }, + { + "origin": [ + -6.58777, + 1.22136, + -5.02845 + ], + "size": [ + 0.4, + 0.4, + 0.22 + ], + "pivot": [ + -5.58777, + 1.62136, + -4.84345 + ], + "rotation": [ + 0, + -5, + -70 + ], + "uv": { + "north": { + "uv": [ + 21, + 14 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "east": { + "uv": [ + 10, + 22 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "south": { + "uv": [ + 15, + 21 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "west": { + "uv": [ + 22, + 10 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "up": { + "uv": [ + 11, + 22 + ], + "uv_size": [ + 0.5, + 0.25 + ] + }, + "down": { + "uv": [ + 22, + 11.25 + ], + "uv_size": [ + 0.5, + -0.25 + ] + } + } + }, + { + "origin": [ + -7.38777, + 1.22136, + -5.02845 + ], + "size": [ + 0.4, + 0.4, + 0.22 + ], + "pivot": [ + -5.58777, + 1.62136, + -4.84345 + ], + "rotation": [ + 0, + -5, + -70 + ], + "uv": { + "north": { + "uv": [ + 1, + 22 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "east": { + "uv": [ + 23, + 3 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "south": { + "uv": [ + 22, + 1 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "west": { + "uv": [ + 4, + 23 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "up": { + "uv": [ + 23, + 4 + ], + "uv_size": [ + 0.5, + 0.25 + ] + }, + "down": { + "uv": [ + 5, + 23.25 + ], + "uv_size": [ + 0.5, + -0.25 + ] + } + } + }, + { + "origin": [ + -6.98777, + 1.22136, + -5.02845 + ], + "size": [ + 0.4, + 0.4, + 0.22 + ], + "pivot": [ + -5.58777, + 1.62136, + -4.84345 + ], + "rotation": [ + 0, + -5, + -70 + ], + "uv": { + "north": { + "uv": [ + 0, + 22 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "east": { + "uv": [ + 23, + 1 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "south": { + "uv": [ + 22, + 0 + ], + "uv_size": [ + 0.5, + 0.5 + ] + }, + "west": { + "uv": [ + 2, + 23 + ], + "uv_size": [ + 0.25, + 0.5 + ] + }, + "up": { + "uv": [ + 23, + 2 + ], + "uv_size": [ + 0.5, + 0.25 + ] + }, + "down": { + "uv": [ + 3, + 23.25 + ], + "uv_size": [ + 0.5, + -0.25 + ] + } + } + } + ] + }, + { + "name": "Head", + "parent": "MageStaff", + "pivot": [ + -4.6304, + 5.5016, + -3.92191 + ], + "cubes": [ + { + "origin": [ + -6.13781, + 4.81557, + -5.15345 + ], + "size": [ + 1.44, + 3.6, + 0.82 + ], + "pivot": [ + -4.6304, + 5.5016, + -3.92191 + ], + "rotation": [ + 0, + 0, + 90 + ], + "uv": { + "north": { + "uv": [ + 6, + 14 + ], + "uv_size": [ + 1.5, + 3.5 + ] + }, + "east": { + "uv": [ + 10, + 17 + ], + "uv_size": [ + 0.75, + 3.5 + ] + }, + "south": { + "uv": [ + 8, + 14 + ], + "uv_size": [ + 1.5, + 3.5 + ] + }, + "west": { + "uv": [ + 11, + 17 + ], + "uv_size": [ + 0.75, + 3.5 + ] + }, + "up": { + "uv": [ + 19, + 14 + ], + "uv_size": [ + 1.5, + 0.75 + ] + }, + "down": { + "uv": [ + 19, + 15.75 + ], + "uv_size": [ + 1.5, + -0.75 + ] + } + } + }, + { + "origin": [ + -6.85781, + 7.12557, + -5.40345 + ], + "size": [ + 1.44, + 2.92, + 1.32 + ], + "pivot": [ + -4.6304, + 5.5016, + -3.92191 + ], + "rotation": [ + 0, + 0, + 90 + ], + "uv": { + "north": { + "uv": [ + 14, + 8 + ], + "uv_size": [ + 1.5, + 3 + ] + }, + "east": { + "uv": [ + 16, + 6 + ], + "uv_size": [ + 1.25, + 3 + ] + }, + "south": { + "uv": [ + 10, + 14 + ], + "uv_size": [ + 1.5, + 3 + ] + }, + "west": { + "uv": [ + 16, + 9 + ], + "uv_size": [ + 1.25, + 3 + ] + }, + "up": { + "uv": [ + 17, + 14 + ], + "uv_size": [ + 1.5, + 1.25 + ] + }, + "down": { + "uv": [ + 17, + 17.25 + ], + "uv_size": [ + 1.5, + -1.25 + ] + } + } + }, + { + "origin": [ + -11.89781, + 9.28557, + -5.40345 + ], + "size": [ + 5.04, + 1.54, + 1.32 + ], + "pivot": [ + -4.6304, + 5.5016, + -3.92191 + ], + "rotation": [ + 0, + 0, + 90 + ], + "uv": { + "north": { + "uv": [ + 8, + 0 + ], + "uv_size": [ + 5, + 1.5 + ] + }, + "east": { + "uv": [ + 18, + 4 + ], + "uv_size": [ + 1.25, + 1.5 + ] + }, + "south": { + "uv": [ + 8, + 2 + ], + "uv_size": [ + 5, + 1.5 + ] + }, + "west": { + "uv": [ + 6, + 18 + ], + "uv_size": [ + 1.25, + 1.5 + ] + }, + "up": { + "uv": [ + 8, + 4 + ], + "uv_size": [ + 5, + 1.25 + ] + }, + "down": { + "uv": [ + 8, + 7.25 + ], + "uv_size": [ + 5, + -1.25 + ] + } + } + }, + { + "origin": [ + -7.59781, + 8.58557, + -5.40345 + ], + "size": [ + 0.74, + 0.74, + 1.32 + ], + "pivot": [ + -4.6504, + 5.5216, + -3.92191 + ], + "rotation": [ + 0, + 0, + 90 + ], + "uv": { + "north": { + "uv": [ + 14, + 20 + ], + "uv_size": [ + 0.75, + 0.75 + ] + }, + "east": { + "uv": [ + 6, + 20 + ], + "uv_size": [ + 1.25, + 0.75 + ] + }, + "south": { + "uv": [ + 15, + 20 + ], + "uv_size": [ + 0.75, + 0.75 + ] + }, + "west": { + "uv": [ + 20, + 6 + ], + "uv_size": [ + 1.25, + 0.75 + ] + }, + "up": { + "uv": [ + 15, + 6 + ], + "uv_size": [ + 0.75, + 1.25 + ] + }, + "down": { + "uv": [ + 8, + 21.25 + ], + "uv_size": [ + 0.75, + -1.25 + ] + } + } + }, + { + "origin": [ + -13.34281, + 9.28557, + -5.40345 + ], + "size": [ + 1.435, + 0.77, + 1.32 + ], + "pivot": [ + -4.6354, + 5.4966, + -3.92191 + ], + "rotation": [ + 0, + 0, + 90 + ], + "uv": { + "north": { + "uv": [ + 16, + 19 + ], + "uv_size": [ + 1.5, + 0.75 + ] + }, + "east": { + "uv": [ + 20, + 7 + ], + "uv_size": [ + 1.25, + 0.75 + ] + }, + "south": { + "uv": [ + 19, + 16 + ], + "uv_size": [ + 1.5, + 0.75 + ] + }, + "west": { + "uv": [ + 12, + 20 + ], + "uv_size": [ + 1.25, + 0.75 + ] + }, + "up": { + "uv": [ + 18, + 0 + ], + "uv_size": [ + 1.5, + 1.25 + ] + }, + "down": { + "uv": [ + 18, + 3.25 + ], + "uv_size": [ + 1.5, + -1.25 + ] + } + } + }, + { + "origin": [ + -13.33781, + 8.51557, + -5.40345 + ], + "size": [ + 2.16, + 0.77, + 1.32 + ], + "pivot": [ + -4.6304, + 5.5016, + -3.92191 + ], + "rotation": [ + 0, + 0, + 90 + ], + "uv": { + "north": { + "uv": [ + 17, + 18 + ], + "uv_size": [ + 2.25, + 0.75 + ] + }, + "east": { + "uv": [ + 20, + 12 + ], + "uv_size": [ + 1.25, + 0.75 + ] + }, + "south": { + "uv": [ + 13, + 19 + ], + "uv_size": [ + 2.25, + 0.75 + ] + }, + "west": { + "uv": [ + 20, + 13 + ], + "uv_size": [ + 1.25, + 0.75 + ] + }, + "up": { + "uv": [ + 17, + 12 + ], + "uv_size": [ + 2.25, + 1.25 + ] + }, + "down": { + "uv": [ + 14, + 18.25 + ], + "uv_size": [ + 2.25, + -1.25 + ] + } + } + }, + { + "origin": [ + -16.21781, + 4.96557, + -5.12845 + ], + "size": [ + 2.16, + 0.765, + 0.77 + ], + "pivot": [ + -4.6304, + 5.5016, + -3.92191 + ], + "rotation": [ + 0, + 0, + 90 + ], + "uv": { + "north": { + "uv": [ + 18, + 8 + ], + "uv_size": [ + 2.25, + 0.75 + ] + }, + "east": { + "uv": [ + 18, + 20 + ], + "uv_size": [ + 0.75, + 0.75 + ] + }, + "south": { + "uv": [ + 18, + 9 + ], + "uv_size": [ + 2.25, + 0.75 + ] + }, + "west": { + "uv": [ + 20, + 18 + ], + "uv_size": [ + 0.75, + 0.75 + ] + }, + "up": { + "uv": [ + 18, + 10 + ], + "uv_size": [ + 2.25, + 0.75 + ] + }, + "down": { + "uv": [ + 18, + 11.75 + ], + "uv_size": [ + 2.25, + -0.75 + ] + } + } + }, + { + "origin": [ + -15.45281, + 5.68557, + -5.12845 + ], + "size": [ + 1.44, + 0.765, + 0.77 + ], + "pivot": [ + -4.5854, + 5.5016, + -3.92191 + ], + "rotation": [ + 0, + 0, + 90 + ], + "uv": { + "north": { + "uv": [ + 19, + 17 + ], + "uv_size": [ + 1.5, + 0.75 + ] + }, + "east": { + "uv": [ + 16, + 20 + ], + "uv_size": [ + 0.75, + 0.75 + ] + }, + "south": { + "uv": [ + 18, + 19 + ], + "uv_size": [ + 1.5, + 0.75 + ] + }, + "west": { + "uv": [ + 17, + 20 + ], + "uv_size": [ + 0.75, + 0.75 + ] + }, + "up": { + "uv": [ + 20, + 0 + ], + "uv_size": [ + 1.5, + 0.75 + ] + }, + "down": { + "uv": [ + 20, + 1.75 + ], + "uv_size": [ + 1.5, + -0.75 + ] + } + } + }, + { + "origin": [ + -14.05781, + 4.96557, + -5.12845 + ], + "size": [ + 1.44, + 4.32, + 0.77 + ], + "pivot": [ + -4.6304, + 5.5016, + -3.92191 + ], + "rotation": [ + 0, + 0, + 90 + ], + "uv": { + "north": { + "uv": [ + 0, + 8 + ], + "uv_size": [ + 1.5, + 4.25 + ] + }, + "east": { + "uv": [ + 16, + 12 + ], + "uv_size": [ + 0.75, + 4.25 + ] + }, + "south": { + "uv": [ + 2, + 8 + ], + "uv_size": [ + 1.5, + 4.25 + ] + }, + "west": { + "uv": [ + 17, + 0 + ], + "uv_size": [ + 0.75, + 4.25 + ] + }, + "up": { + "uv": [ + 20, + 2 + ], + "uv_size": [ + 1.5, + 0.75 + ] + }, + "down": { + "uv": [ + 20, + 3.75 + ], + "uv_size": [ + 1.5, + -0.75 + ] + } + } + } + ] + }, + { + "name": "MagicCube", + "parent": "MageStaff", + "pivot": [ + -4.59642, + 10.32629, + -4.69073 + ], + "cubes": [ + { + "origin": [ + -6.24344, + 9.68018, + -5.403 + ], + "size": [ + 2.52, + 2.52, + 2.52 + ], + "pivot": [ + -4.6304, + 10.1316, + -3.74191 + ], + "rotation": [ + 54.73561, + -30, + -35.26439 + ], + "uv": { + "north": { + "uv": [ + 8, + 8 + ], + "uv_size": [ + 2.5, + 2.5 + ] + }, + "east": { + "uv": [ + 4, + 11 + ], + "uv_size": [ + 2.5, + 2.5 + ] + }, + "south": { + "uv": [ + 7, + 11 + ], + "uv_size": [ + 2.5, + 2.5 + ] + }, + "west": { + "uv": [ + 11, + 8 + ], + "uv_size": [ + 2.5, + 2.5 + ] + }, + "up": { + "uv": [ + 10, + 11 + ], + "uv_size": [ + 2.5, + 2.5 + ] + }, + "down": { + "uv": [ + 0, + 15.5 + ], + "uv_size": [ + 2.5, + -2.5 + ] + } + } + } + ] + }, + { + "name": "Bottom", + "parent": "MageStaff", + "pivot": [ + -4.6304, + -7.4584, + 2.91809 + ], + "cubes": [ + { + "origin": [ + -5.31642, + -1.63099, + -5.15345 + ], + "size": [ + 0.77, + 7.2, + 0.82 + ], + "uv": { + "north": { + "uv": [ + 13, + 0 + ], + "uv_size": [ + 0.75, + 7.25 + ] + }, + "east": { + "uv": [ + 3, + 13 + ], + "uv_size": [ + 0.75, + 7.25 + ] + }, + "south": { + "uv": [ + 13, + 11 + ], + "uv_size": [ + 0.75, + 7.25 + ] + }, + "west": { + "uv": [ + 14, + 0 + ], + "uv_size": [ + 0.75, + 7.25 + ] + }, + "up": { + "uv": [ + 20, + 20 + ], + "uv_size": [ + 0.75, + 0.75 + ] + }, + "down": { + "uv": [ + 3, + 21.75 + ], + "uv_size": [ + 0.75, + -0.75 + ] + } + } + }, + { + "origin": [ + -4.54642, + -7.38099, + -5.15345 + ], + "size": [ + 1.54, + 7.2, + 0.82 + ], + "uv": { + "north": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 1.5, + 7.25 + ] + }, + "east": { + "uv": [ + 4, + 14 + ], + "uv_size": [ + 0.75, + 7.25 + ] + }, + "south": { + "uv": [ + 2, + 0 + ], + "uv_size": [ + 1.5, + 7.25 + ] + }, + "west": { + "uv": [ + 5, + 14 + ], + "uv_size": [ + 0.75, + 7.25 + ] + }, + "up": { + "uv": [ + 20, + 4 + ], + "uv_size": [ + 1.5, + 0.75 + ] + }, + "down": { + "uv": [ + 20, + 5.75 + ], + "uv_size": [ + 1.5, + -0.75 + ] + } + } + }, + { + "origin": [ + -5.31642, + -16.86099, + -5.15345 + ], + "size": [ + 0.77, + 10.48, + 0.82 + ], + "uv": { + "north": { + "uv": [ + 4, + 0 + ], + "uv_size": [ + 0.75, + 10.5 + ] + }, + "east": { + "uv": [ + 5, + 0 + ], + "uv_size": [ + 0.75, + 10.5 + ] + }, + "south": { + "uv": [ + 6, + 0 + ], + "uv_size": [ + 0.75, + 10.5 + ] + }, + "west": { + "uv": [ + 7, + 0 + ], + "uv_size": [ + 0.75, + 10.5 + ] + }, + "up": { + "uv": [ + 19, + 20 + ], + "uv_size": [ + 0.75, + 0.75 + ] + }, + "down": { + "uv": [ + 20, + 19.75 + ], + "uv_size": [ + 0.75, + -0.75 + ] + } + } + }, + { + "origin": [ + -4.54642, + -0.18099, + -5.15345 + ], + "size": [ + 0.77, + 5.75, + 0.82 + ], + "uv": { + "north": { + "uv": [ + 14, + 11 + ], + "uv_size": [ + 0.75, + 5.75 + ] + }, + "east": { + "uv": [ + 12, + 14 + ], + "uv_size": [ + 0.75, + 5.75 + ] + }, + "south": { + "uv": [ + 15, + 0 + ], + "uv_size": [ + 0.75, + 5.75 + ] + }, + "west": { + "uv": [ + 15, + 11 + ], + "uv_size": [ + 0.75, + 5.75 + ] + }, + "up": { + "uv": [ + 6, + 21 + ], + "uv_size": [ + 0.75, + 0.75 + ] + }, + "down": { + "uv": [ + 7, + 21.75 + ], + "uv_size": [ + 0.75, + -0.75 + ] + } + } + }, + { + "origin": [ + -4.54642, + -12.78599, + -5.15345 + ], + "size": [ + 0.77, + 5.405, + 0.82 + ], + "uv": { + "north": { + "uv": [ + 0, + 16 + ], + "uv_size": [ + 0.75, + 5.5 + ] + }, + "east": { + "uv": [ + 16, + 0 + ], + "uv_size": [ + 0.75, + 5.5 + ] + }, + "south": { + "uv": [ + 1, + 16 + ], + "uv_size": [ + 0.75, + 5.5 + ] + }, + "west": { + "uv": [ + 2, + 16 + ], + "uv_size": [ + 0.75, + 5.5 + ] + }, + "up": { + "uv": [ + 21, + 8 + ], + "uv_size": [ + 0.75, + 0.75 + ] + }, + "down": { + "uv": [ + 9, + 21.75 + ], + "uv_size": [ + 0.75, + -0.75 + ] + } + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/backpacks/nike.geo.json b/src/main/resources/assets/evolution/cosmetic/backpacks/nike.geo.json new file mode 100644 index 0000000..93e62a7 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/backpacks/nike.geo.json @@ -0,0 +1,550 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 2, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [ + 0, + 1.25, + 0 + ] + }, + "bones": [ + { + "name": "backpack", + "pivot": [ + 0, + 0, + 0 + ], + "cubes": [ + { + "origin": [ + 3, + -2.75, + -2.5 + ], + "size": [ + 1, + 9, + 5 + ], + "inflate": 0.01, + "uv": [ + 18, + 13 + ] + }, + { + "origin": [ + -4, + -2.75, + -2.5 + ], + "size": [ + 1, + 9, + 5 + ], + "inflate": 0.01, + "uv": [ + 0, + 22 + ] + }, + { + "origin": [ + -4, + -4.75, + 2.5 + ], + "size": [ + 8, + 9, + 4 + ], + "uv": [ + 0, + 0 + ] + }, + { + "origin": [ + -4, + 0.25, + 5.75 + ], + "size": [ + 8, + 4, + 0.5 + ], + "inflate": 0.01, + "uv": { + "north": { + "uv": [ + 12, + 27 + ], + "uv_size": [ + 8, + 4 + ] + }, + "east": { + "uv": [ + 30, + 14 + ], + "uv_size": [ + 1, + 4 + ] + }, + "south": { + "uv": [ + 20, + 27 + ], + "uv_size": [ + 8, + 4 + ] + }, + "west": { + "uv": [ + 30, + 18 + ], + "uv_size": [ + 1, + 4 + ] + }, + "up": { + "uv": [ + 28, + 27 + ], + "uv_size": [ + 8, + 1 + ] + }, + "down": { + "uv": [ + 28, + 29 + ], + "uv_size": [ + 8, + -1 + ] + } + } + }, + { + "origin": [ + -3, + -4.25, + 6.5 + ], + "size": [ + 6, + 4, + 1 + ], + "uv": [ + 24, + 5 + ] + }, + { + "origin": [ + 2, + -4.6, + 7.6 + ], + "size": [ + 1, + 3, + 0 + ], + "pivot": [ + 2.5, + -3.0999999999999996, + 7.6 + ], + "rotation": [ + 4.98107, + 0.43523, + -4.98107 + ], + "uv": [ + 12, + 22 + ] + }, + { + "origin": [ + -3, + 4.25, + 2.5 + ], + "size": [ + 6, + 1, + 4 + ], + "uv": [ + 24, + 0 + ] + }, + { + "origin": [ + -3, + 4.25, + 5.75 + ], + "size": [ + 6, + 1, + 0.5 + ], + "inflate": 0.01, + "uv": { + "north": { + "uv": [ + 12, + 25 + ], + "uv_size": [ + 6, + 1 + ] + }, + "east": { + "uv": [ + 14, + 22 + ], + "uv_size": [ + 1, + 1 + ] + }, + "south": { + "uv": [ + 12, + 26 + ], + "uv_size": [ + 6, + 1 + ] + }, + "west": { + "uv": [ + 15, + 22 + ], + "uv_size": [ + 1, + 1 + ] + }, + "up": { + "uv": [ + 28, + 29 + ], + "uv_size": [ + 6, + 1 + ] + }, + "down": { + "uv": [ + 30, + 14 + ], + "uv_size": [ + 6, + -1 + ] + } + } + }, + { + "origin": [ + 0.25, + 3.5, + 6.075 + ], + "size": [ + 0.5, + 1.75, + 0.5 + ], + "inflate": 0.02, + "pivot": [ + 0.5, + 4.25, + 6.325 + ], + "rotation": [ + 4.99527, + 0.21782, + -2.4905 + ], + "uv": { + "north": { + "uv": [ + 27, + 62 + ], + "uv_size": [ + 1, + 2 + ] + }, + "east": { + "uv": [ + 26, + 62 + ], + "uv_size": [ + 1, + 2 + ] + }, + "south": { + "uv": [ + 29, + 62 + ], + "uv_size": [ + 1, + 2 + ] + }, + "west": { + "uv": [ + 28, + 62 + ], + "uv_size": [ + 1, + 2 + ] + }, + "up": { + "uv": [ + 27, + 61 + ], + "uv_size": [ + 1, + 1 + ] + }, + "down": { + "uv": [ + 28, + 62 + ], + "uv_size": [ + 1, + -1 + ] + } + } + }, + { + "origin": [ + -0.5, + 3.5, + 6.075 + ], + "size": [ + 0.5, + 1.75, + 0.5 + ], + "inflate": 0.02, + "pivot": [ + -0.25, + 4.25, + 6.325 + ], + "rotation": [ + 4.99527, + -0.21782, + 2.4905 + ], + "uv": { + "north": { + "uv": [ + 28, + 62 + ], + "uv_size": [ + -1, + 2 + ] + }, + "east": { + "uv": [ + 29, + 62 + ], + "uv_size": [ + -1, + 2 + ] + }, + "south": { + "uv": [ + 30, + 62 + ], + "uv_size": [ + -1, + 2 + ] + }, + "west": { + "uv": [ + 27, + 62 + ], + "uv_size": [ + -1, + 2 + ] + }, + "up": { + "uv": [ + 28, + 61 + ], + "uv_size": [ + -1, + 1 + ] + }, + "down": { + "uv": [ + 29, + 62 + ], + "uv_size": [ + -1, + -1 + ] + } + } + }, + { + "origin": [ + -1.5, + 1.5, + 6.5 + ], + "size": [ + 3, + 3, + 0 + ], + "inflate": 0.01, + "uv": { + "north": { + "uv": [ + 0, + 13 + ], + "uv_size": [ + 9, + 9 + ] + }, + "east": { + "uv": [ + 0, + 13 + ], + "uv_size": [ + 0, + 9 + ] + }, + "south": { + "uv": [ + 9, + 13 + ], + "uv_size": [ + 9, + 9 + ] + }, + "west": { + "uv": [ + 9, + 13 + ], + "uv_size": [ + 0, + 9 + ] + }, + "up": { + "uv": [ + 0, + 13 + ], + "uv_size": [ + 9, + 0 + ] + }, + "down": { + "uv": [ + 9, + 13 + ], + "uv_size": [ + 9, + 0 + ] + } + } + }, + { + "origin": [ + -2, + 5.25, + 3.5 + ], + "size": [ + 4, + 1, + 2 + ], + "uv": [ + 24, + 10 + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/backpacks/snoopy.geo.json b/src/main/resources/assets/evolution/cosmetic/backpacks/snoopy.geo.json new file mode 100644 index 0000000..4f7d0d6 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/backpacks/snoopy.geo.json @@ -0,0 +1,187 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.snoopy", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 2, + "visible_bounds_height": 3, + "visible_bounds_offset": [0, 0.5, 0] + }, + "bones": [ + { + "name": "backpack", + "pivot": [0, 0, 0], + "cubes": [ + { + "origin": [-4, 1, 1.5], + "size": [8, 4, 4.5], + "uv": { + "north": { "uv": [33, 17], "uv_size": [12, 12] }, + "south": { "uv": [0, 0], "uv_size": [32, 16] }, + "east": { "uv": [1, 37], "uv_size": [9, 9] }, + "west": { "uv": [1, 37], "uv_size": [9, 9] }, + "up": { "uv": [1, 37], "uv_size": [9, 9] }, + "down": { "uv": [33, 17], "uv_size": [12, 12] } + } + }, + { + "origin": [-4, -3, 1.5], + "size": [8, 4, 5.5], + "uv": { + "north": { "uv": [33, 17], "uv_size": [12, 12] }, + "south": { "uv": [0, 16], "uv_size": [32, 16] }, + "east": { "uv": [1, 37], "uv_size": [9, 9] }, + "west": { "uv": [1, 37], "uv_size": [9, 9] }, + "up": { "uv": [1, 37], "uv_size": [9, 9] }, + "down": { "uv": [1, 37], "uv_size": [9, 9] } + } + }, + { + "origin": [-3, 5, 2], + "size": [6, 1, 3.5], + "uv": { + "north": { "uv": [1, 37], "uv_size": [9, 9] }, + "south": { "uv": [1, 37], "uv_size": [9, 9] }, + "east": { "uv": [1, 37], "uv_size": [9, 9] }, + "west": { "uv": [1, 37], "uv_size": [9, 9] }, + "up": { "uv": [1, 37], "uv_size": [9, 9] }, + "down": { "uv": [1, 37], "uv_size": [9, 9] } + } + }, + { + "origin": [-2, 6, 2.5], + "size": [4, 0.75, 2.5], + "uv": { + "north": { "uv": [1, 38], "uv_size": [7, 7] }, + "south": { "uv": [1, 38], "uv_size": [7, 7] }, + "east": { "uv": [1, 38], "uv_size": [7, 7] }, + "west": { "uv": [1, 38], "uv_size": [7, 7] }, + "up": { "uv": [1, 38], "uv_size": [7, 7] }, + "down": { "uv": [1, 38], "uv_size": [7, 7] } + } + }, + { + "origin": [-3, -4, 2], + "size": [6, 1, 4.5], + "uv": { + "north": { "uv": [1, 37], "uv_size": [9, 9] }, + "south": { "uv": [1, 37], "uv_size": [9, 9] }, + "east": { "uv": [1, 37], "uv_size": [9, 9] }, + "west": { "uv": [1, 37], "uv_size": [9, 9] }, + "up": { "uv": [1, 37], "uv_size": [9, 9] }, + "down": { "uv": [1, 37], "uv_size": [9, 9] } + } + }, + { + "origin": [-3.25, 6.1, -2.6], + "size": [1.5, 1, 5.6], + "uv": { + "north": { "uv": [50, 2], "uv_size": [5, 5] }, + "south": { "uv": [50, 2], "uv_size": [5, 5] }, + "east": { "uv": [50, 8], "uv_size": [5, 9] }, + "west": { "uv": [50, 8], "uv_size": [5, 9] }, + "up": { "uv": [50, 8], "uv_size": [5, 9] }, + "down": { "uv": [50, 8], "uv_size": [5, 9] } + } + }, + { + "origin": [-3.25, 6.1, -3.55], + "size": [1.5, 1, 2.0], + "pivot": [-2.5, 6.6, -1.55], + "rotation": [45, 0, 0], + "uv": { + "north": { "uv": [50, 3], "uv_size": [5, 5] }, + "south": { "uv": [50, 3], "uv_size": [5, 5] }, + "east": { "uv": [50, 3], "uv_size": [5, 5] }, + "west": { "uv": [50, 3], "uv_size": [5, 5] }, + "up": { "uv": [50, 3], "uv_size": [5, 5] }, + "down": { "uv": [50, 3], "uv_size": [5, 5] } + } + }, + { + "origin": [-3.25, 5.6, 1.85], + "size": [1.5, 1, 2.0], + "pivot": [-2.5, 6.1, 1.85], + "rotation": [-45, 0, 0], + "uv": { + "north": { "uv": [50, 3], "uv_size": [5, 5] }, + "south": { "uv": [50, 3], "uv_size": [5, 5] }, + "east": { "uv": [50, 3], "uv_size": [5, 5] }, + "west": { "uv": [50, 3], "uv_size": [5, 5] }, + "up": { "uv": [50, 3], "uv_size": [5, 5] }, + "down": { "uv": [50, 3], "uv_size": [5, 5] } + } + }, + { + "origin": [-3.25, -1.5, -3.2], + "size": [1.5, 6.4, 1], + "uv": { + "north": { "uv": [49, 28], "uv_size": [7, 16] }, + "south": { "uv": [50, 2], "uv_size": [5, 12] }, + "east": { "uv": [50, 2], "uv_size": [5, 12] }, + "west": { "uv": [50, 2], "uv_size": [5, 12] }, + "up": { "uv": [50, 2], "uv_size": [5, 5] }, + "down": { "uv": [50, 2], "uv_size": [5, 5] } + } + }, + { + "origin": [1.75, 6.1, -2.6], + "size": [1.5, 1, 5.6], + "uv": { + "north": { "uv": [50, 2], "uv_size": [5, 5] }, + "south": { "uv": [50, 2], "uv_size": [5, 5] }, + "east": { "uv": [50, 8], "uv_size": [5, 9] }, + "west": { "uv": [50, 8], "uv_size": [5, 9] }, + "up": { "uv": [50, 8], "uv_size": [5, 9] }, + "down": { "uv": [50, 8], "uv_size": [5, 9] } + } + }, + { + "origin": [1.75, 6.1, -3.55], + "size": [1.5, 1, 2.0], + "pivot": [2.5, 6.6, -1.55], + "rotation": [45, 0, 0], + "uv": { + "north": { "uv": [50, 3], "uv_size": [5, 5] }, + "south": { "uv": [50, 3], "uv_size": [5, 5] }, + "east": { "uv": [50, 3], "uv_size": [5, 5] }, + "west": { "uv": [50, 3], "uv_size": [5, 5] }, + "up": { "uv": [50, 3], "uv_size": [5, 5] }, + "down": { "uv": [50, 3], "uv_size": [5, 5] } + } + }, + { + "origin": [1.75, 5.6, 1.85], + "size": [1.5, 1, 2.0], + "pivot": [2.5, 6.1, 1.85], + "rotation": [-45, 0, 0], + "uv": { + "north": { "uv": [50, 3], "uv_size": [5, 5] }, + "south": { "uv": [50, 3], "uv_size": [5, 5] }, + "east": { "uv": [50, 3], "uv_size": [5, 5] }, + "west": { "uv": [50, 3], "uv_size": [5, 5] }, + "up": { "uv": [50, 3], "uv_size": [5, 5] }, + "down": { "uv": [50, 3], "uv_size": [5, 5] } + } + }, + { + "origin": [1.75, -1.5, -3.2], + "size": [1.5, 6.4, 1], + "uv": { + "north": { "uv": [49, 28], "uv_size": [7, 16] }, + "south": { "uv": [50, 2], "uv_size": [5, 12] }, + "east": { "uv": [50, 2], "uv_size": [5, 12] }, + "west": { "uv": [50, 2], "uv_size": [5, 12] }, + "up": { "uv": [50, 2], "uv_size": [5, 5] }, + "down": { "uv": [50, 2], "uv_size": [5, 5] } + } + } + ] + } + ] + } + ] +} diff --git a/src/main/resources/assets/evolution/cosmetic/melee/annihil.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/annihil.anim.json new file mode 100644 index 0000000..e6be4ff --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/annihil.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"inspect":{"loop":true,"animation_length":13.4094,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-13.198,170.251,-58.765],"0.0417":[-11.668,166.596,-54.377],"0.0833":[-18.795,163.012,-51.695],"0.125":[-34.618,163.175,-54.575],"0.1667":[-50.873,157.486,-59.261],"0.2083":[-57.243,152.83,-62.523],"0.25":[-57.878,152.176,-63.045],"0.2917":[-57.243,152.83,-62.523],"0.3333":[-58.457,153.635,-62.186],"0.375":[-59.291,154.198,-61.935],"0.4167":[-60.576,155.071,-61.525],"0.4583":[-61.454,155.667,-61.231],"0.5":[-62.798,156.573,-60.764],"0.5417":[-63.711,157.178,-60.438],"0.5833":[-65.102,158.081,-59.932],"0.625":[-66.516,158.967,-59.413],"0.6667":[-67.469,159.541,-59.063],"0.7083":[-68.909,160.372,-58.541],"0.75":[-69.874,160.9,-58.196],"0.7917":[-71.327,161.646,-57.695],"0.8333":[-72.332,162.09,-57.391],"0.875":[-74.177,162.514,-57.143],"0.9167":[-75.458,162.689,-57.063],"0.9583":[-77.088,162.918,-56.949],"1.0":[-77.419,162.849,-56.969],"1.0417":[-76.028,163.314,-56.813],"1.0833":[-74.939,163.721,-56.683],"1.125":[-73.2,164.378,-56.491],"1.1667":[-71.936,164.865,-56.363],"1.2083":[-69.822,165.703,-56.167],"1.25":[-68.233,166.352,-56.038],"1.2917":[-65.013,167.656,-55.84],"1.3333":[-62.442,168.713,-55.735],"1.375":[-58.83,170.303,-55.646],"1.4167":[-56.656,171.553,-55.574],"1.4583":[-56.767,172.053,-55.447],"1.5":[-57.541,172.642,-55.2],"1.5417":[-57.67,173.007,-55.047],"1.5833":[-57.928,173.677,-54.623],"1.625":[-58.078,174.052,-54.353],"1.6667":[-58.322,174.649,-53.973],"1.7083":[-58.541,175.205,-53.674],"1.75":[-58.873,176.055,-53.245],"1.7917":[-59.098,176.63,-52.963],"1.8333":[-59.444,177.498,-52.531],"1.875":[-59.684,178.077,-52.227],"1.9167":[-60.06,178.939,-51.733],"1.9583":[-60.326,179.507,-51.369],"2.0":[-60.751,180.34,-50.754],"2.0417":[-61.056,180.878,-50.29],"2.0833":[-61.18,181.42,-49.304],"2.125":[-60.62,181.345,-48.233],"2.1667":[-59.434,181.009,-46.327],"2.2083":[-58.85,180.904,-45.085],"2.25":[-59.053,181.335,-43.669],"2.2917":[-60.363,182.245,-43.238],"2.3333":[-64.837,184.995,-43.622],"2.375":[-92.628,202.773,-49.417],"2.4167":[-104.086,210.173,-49.238],"2.4583":[-104.796,210.601,-48.948],"2.5":[-104.681,210.504,-48.432],"2.5417":[-103.914,210.02,-48.102],"2.5833":[-101.916,208.789,-47.713],"2.625":[-100.133,207.699,-47.565],"2.6667":[-96.988,205.763,-47.578],"2.7083":[-94.698,204.325,-47.788],"2.75":[-91.176,202.025,-48.497],"2.7917":[-87.798,199.637,-49.818],"2.8333":[-78.447,191.722,-61.848],"2.875":[-70.703,170.706,-40.043],"2.9167":[-56.754,166.176,-16.02],"2.9583":[-74.991,198.413,-8.971],"3.0":[-28.566,180.189,-58.558],"3.0417":[17.73,178.581,-70.771],"3.0833":[27.078,198.751,-88.714],"3.125":[48.912,246.768,-131.025],"3.1667":[167.718,254.726,-234.916],"3.2083":[205.613,210.391,-231.637],"3.25":[230.458,191.932,-220.297],"3.2917":[249.347,209.687,-210.144],"3.3333":[268.412,235.937,-231.497],"3.375":[349.588,182.567,-305.934],"3.4167":[339.312,134.111,-335.95],"3.4583":[409.453,82.282,-296.61],"3.5":[393.536,48.244,-341.501],"3.5417":[425.819,32.338,-341.15],"3.5833":[467.082,42.565,-298.35],"3.625":[491.538,27.942,-251.871],"3.6667":[502.688,5.875,-208.564],"3.7083":[503.895,-11.438,-180.315],"3.75":[485.016,-41.648,-126.685],"3.7917":[457.075,-62.754,-94.955],"3.8333":[421.222,-78.465,-65.567],"3.875":[414.316,-79.801,-58.528],"3.9167":[417.418,-77.216,-58.715],"3.9583":[420.727,-76.737,-61.114],"4.0":[424.381,-76.404,-64.133],"4.0417":[425.442,-76.43,-65.158],"4.0833":[426.187,-76.448,-66.044],"4.125":[425.555,-76.379,-65.542],"4.1667":[423.978,-76.205,-64.114],"4.2083":[423.651,-76.163,-63.9],"4.25":[423.92,-76.186,-64.319],"4.2917":[424.349,-76.232,-64.844],"4.3333":[424.859,-76.272,-65.462],"4.375":[424.953,-76.265,-65.592],"4.4167":[424.9,-76.261,-65.606],"4.4583":[424.785,-76.291,-65.554],"4.5":[424.563,-76.388,-65.462],"4.5417":[424.285,-76.447,-65.317],"4.5833":[423.905,-76.732,-65.239],"4.625":[423.784,-77.129,-65.402],"4.6667":[423.41,-77.886,-65.512],"4.7083":[423.156,-78.466,-65.608],"4.75":[422.92,-79.323,-65.864],"4.7917":[423.593,-80.475,-67.239],"4.8333":[425.061,-81.157,-69.2],"4.875":[429.138,-81.565,-73.831],"4.9167":[432.29,-81.547,-77.282],"4.9583":[436.333,-80.647,-81.537],"5.0":[438.169,-79.608,-83.385],"5.0417":[439.263,-79.029,-84.708],"5.0833":[438.976,-79.056,-84.62],"5.125":[436.634,-79.151,-82.408],"5.1667":[435.822,-78.714,-81.625],"5.2083":[435.94,-77.377,-81.719],"5.25":[436.643,-76.339,-82.296],"5.2917":[455.795,-76.056,-96.312],"5.3333":[484.68,-75.617,-115.536],"5.375":[549.454,-59.568,-163.522],"5.4167":[556.577,-12.433,-165.82],"5.4583":[492.147,47.04,-198.595],"5.5":[457.416,33.601,-223.977],"5.5417":[433.475,21.274,-234.154],"5.5833":[425.576,6.923,-233.615],"5.625":[424.534,-2.024,-229.253],"5.6667":[425.222,-13.797,-219.717],"5.7083":[429.462,-19.601,-211.25],"5.75":[438.39,-29.271,-196.577],"5.7917":[440.794,-38.311,-184.945],"5.8333":[409.71,-59.474,-137.323],"5.875":[413.49,-59.315,-118.772],"5.9167":[474.219,-63.901,-161.058],"5.9583":[484.22,-62.481,-171.755],"6.0":[488.783,-61.501,-180.393],"6.0417":[496.769,-58.633,-192.058],"6.0833":[504.182,-54.104,-204.231],"6.125":[507.065,-51.461,-209.64],"6.1667":[510.183,-47.539,-216.361],"6.2083":[511.444,-45.427,-219.529],"6.25":[512.244,-43.835,-221.761],"6.2917":[512.351,-43.603,-222.077],"6.3333":[512.505,-43.262,-222.537],"6.375":[512.603,-43.04,-222.835],"6.4167":[512.742,-42.714,-223.268],"6.4583":[512.832,-42.501,-223.549],"6.5":[512.959,-42.188,-223.957],"6.5417":[513.04,-41.984,-224.222],"6.5833":[513.156,-41.684,-224.608],"6.625":[513.23,-41.489,-224.858],"6.6667":[513.335,-41.202,-225.222],"6.7083":[513.402,-41.015,-225.458],"6.75":[513.499,-40.741,-225.801],"6.7917":[513.56,-40.562,-226.024],"6.8333":[513.648,-40.3,-226.349],"6.875":[513.704,-40.129,-226.56],"6.9167":[513.785,-39.879,-226.867],"6.9583":[513.86,-39.635,-227.164],"7.0":[513.909,-39.476,-227.357],"7.0417":[513.979,-39.242,-227.638],"7.0833":[514.023,-39.09,-227.821],"7.125":[514.088,-38.867,-228.088],"7.1667":[514.128,-38.721,-228.262],"7.2083":[514.187,-38.508,-228.515],"7.25":[514.225,-38.369,-228.68],"7.2917":[514.279,-38.164,-228.92],"7.3333":[514.314,-38.03,-229.077],"7.375":[514.363,-37.834,-229.306],"7.4167":[514.395,-37.707,-229.454],"7.4583":[514.441,-37.518,-229.674],"7.5":[514.47,-37.397,-229.815],"7.5417":[514.514,-37.216,-230.024],"7.5833":[514.541,-37.097,-230.16],"7.625":[514.581,-36.923,-230.359],"7.6667":[514.606,-36.81,-230.489],"7.7083":[514.643,-36.642,-230.68],"7.75":[514.678,-36.478,-230.867],"7.7917":[514.7,-36.37,-230.989],"7.8333":[514.734,-36.211,-231.169],"7.875":[514.755,-36.107,-231.287],"7.9167":[514.786,-35.952,-231.461],"7.9583":[514.806,-35.851,-231.575],"8.0":[514.835,-35.7,-231.743],"8.0417":[514.854,-35.601,-231.854],"8.0833":[514.881,-35.455,-232.018],"8.125":[514.899,-35.358,-232.126],"8.1667":[514.925,-35.214,-232.286],"8.2083":[514.942,-35.119,-232.391],"8.25":[514.966,-34.976,-232.548],"8.2917":[514.982,-34.883,-232.652],"8.3333":[515.006,-34.742,-232.807],"8.375":[515.021,-34.65,-232.909],"8.4167":[515.044,-34.511,-233.062],"8.4583":[515.059,-34.418,-233.163],"8.5":[515.081,-34.279,-233.315],"8.5417":[515.095,-34.187,-233.416],"8.5833":[515.116,-34.047,-233.568],"8.625":[515.129,-33.955,-233.668],"8.6667":[515.149,-33.815,-233.82],"8.7083":[515.163,-33.721,-233.921],"8.75":[515.182,-33.58,-234.074],"8.7917":[515.195,-33.485,-234.176],"8.8333":[515.214,-33.342,-234.33],"8.875":[515.227,-33.245,-234.434],"8.9167":[515.245,-33.099,-234.59],"8.9583":[515.263,-32.951,-234.749],"9.0":[515.275,-32.851,-234.855],"9.0417":[515.293,-32.7,-235.017],"9.0833":[515.305,-32.597,-235.126],"9.125":[515.322,-32.441,-235.291],"9.1667":[515.333,-32.336,-235.403],"9.2083":[515.35,-32.175,-235.573],"9.25":[515.362,-32.066,-235.688],"9.2917":[515.378,-31.899,-235.863],"9.3333":[515.389,-31.786,-235.981],"9.375":[515.404,-31.613,-236.161],"9.4167":[515.414,-31.496,-236.284],"9.4583":[515.429,-31.316,-236.471],"9.5":[515.439,-31.194,-236.598],"9.5417":[515.454,-31.008,-236.792],"9.5833":[515.464,-30.881,-236.924],"9.625":[515.478,-30.687,-237.125],"9.6667":[515.478,-30.692,-237.123],"9.7083":[515.538,-29.622,-238.217],"9.75":[515.585,-27.772,-240.073],"9.7917":[515.555,-25.567,-242.245],"9.8333":[515.308,-21.918,-245.772],"9.875":[515.002,-19.412,-248.166],"9.9167":[514.329,-15.582,-251.816],"9.9583":[513.735,-13.005,-254.287],"10.0":[512.629,-9.147,-258.051],"10.0417":[511.751,-6.603,-260.596],"10.0833":[510.232,-2.869,-264.466],"10.125":[509.09,-0.456,-267.077],"10.1667":[507.199,3.009,-271.031],"10.2083":[505.831,5.201,-273.686],"10.25":[503.613,8.316,-277.723],"10.2917":[502.024,10.277,-280.46],"10.3333":[499.477,13.041,-284.641],"10.375":[497.664,14.768,-287.496],"10.4167":[494.759,17.181,-291.915],"10.4583":[492.7,18.661,-294.955],"10.5":[489.432,20.677,-299.659],"10.5417":[487.139,21.875,-302.89],"10.5833":[483.538,23.436,-307.871],"10.625":[481.04,24.311,-311.277],"10.6667":[477.166,25.363,-316.494],"10.7083":[474.515,25.884,-320.035],"10.75":[470.462,26.383,-325.413],"10.7917":[467.73,26.525,-329.027],"10.8333":[463.631,26.448,-334.444],"10.875":[460.917,26.205,-338.035],"10.9167":[456.726,25.52,-343.608],"10.9583":[454.252,24.931,-346.922],"11.0":[451.239,24.016,-350.992],"11.0417":[448.663,23.04,-354.534],"11.0833":[446.53,22.082,-357.524],"11.125":[443.004,20.039,-362.92],"11.1667":[440.955,18.68,-366.042],"11.2083":[438.593,16.913,-369.689],"11.25":[437.111,15.575,-372.214],"11.2917":[435.046,13.361,-376.078],"11.3333":[433.781,11.766,-378.67],"11.375":[432.055,9.237,-382.531],"11.4167":[431.015,7.485,-385.059],"11.4583":[429.608,4.8,-388.738],"11.5":[428.759,2.999,-391.09],"11.5417":[427.593,0.323,-394.426],"11.5833":[426.866,-1.418,-396.498],"11.625":[425.814,-3.925,-399.327],"11.6667":[425.114,-5.504,-401.002],"11.7083":[424.014,-7.696,-403.142],"11.75":[423.221,-9.013,-404.292],"11.7917":[421.891,-10.737,-405.545],"11.8333":[420.885,-11.69,-406.034],"11.875":[419.159,-12.771,-406.195],"11.9167":[410.572,2.535,-385.659],"11.9583":[408.452,15.257,-371.521],"12.0":[407.676,14.761,-371.933],"12.0417":[408.451,15.258,-371.521],"12.0833":[412.387,23.495,-361.693],"12.125":[416.484,28.854,-353.496],"12.1667":[425.33,35.943,-338.455],"12.2083":[433.129,39.527,-326.586],"12.25":[447.052,42.381,-306.754],"12.2917":[456.885,42.368,-293.167],"12.3333":[470.596,39.752,-274.203],"12.375":[478.382,36.762,-263.246],"12.4167":[487.882,31.412,-249.664],"12.4583":[493.593,30.709,-244.272],"12.5":[508.386,45.621,-243.028],"12.5417":[522.813,44.101,-230.449],"12.5833":[533.982,31.613,-226.034],"12.625":[532.957,22.312,-235.611],"12.6667":[530.471,13.721,-246.193],"12.7083":[529.584,10.058,-247.292],"12.75":[528.877,7.914,-243.257],"12.7917":[528.557,6.941,-240.809],"12.8333":[528.051,6.063,-238.119],"12.875":[527.593,6.086,-237.729],"12.9167":[527.028,6.543,-238.142],"12.9583":[527.043,6.88,-238.419],"13.0":[527.153,7.275,-239.298],"13.0417":[527.097,7.341,-240.226],"13.0833":[526.939,7.689,-241.02],"13.125":[526.76,8.149,-241.333],"13.1667":[526.728,8.323,-241.319],"13.2083":[526.674,8.335,-241.155],"13.25":[526.583,8.158,-241.015],"13.2917":[526.538,8.014,-240.879],"13.3333":[526.542,7.976,-240.824],"13.375":[526.509,7.969,-240.787],"13.4167":[526.497,7.971,-240.779]},"position":{"0.0":[5.392,40.054,-9.384],"0.0417":[7.139,40.702,-9.036],"0.0833":[10.461,38.902,-7.957],"0.125":[13.428,34.87,-6.627],"0.1667":[15.001,28.819,-8.216],"0.2083":[14.878,25.774,-10.141],"0.25":[14.868,25.366,-10.27],"0.2917":[14.878,25.774,-10.141],"0.3333":[15.009,25.913,-10.425],"0.375":[15.092,26.016,-10.626],"0.4167":[15.214,26.183,-10.941],"0.4583":[15.296,26.301,-11.159],"0.5":[15.421,26.48,-11.492],"0.5417":[15.508,26.599,-11.716],"0.5833":[15.648,26.773,-12.054],"0.625":[15.801,26.936,-12.388],"0.6667":[15.913,27.035,-12.606],"0.7083":[16.098,27.164,-12.923],"0.75":[16.235,27.235,-13.125],"0.7917":[16.464,27.314,-13.413],"0.8333":[16.662,27.321,-13.581],"0.875":[17.258,27.048,-13.711],"0.9167":[17.744,26.772,-13.746],"0.9583":[18.358,26.425,-13.795],"1.0":[18.375,26.406,-13.802],"1.0417":[18.434,26.436,-13.789],"1.0833":[18.51,26.448,-13.783],"1.125":[18.632,26.466,-13.774],"1.1667":[18.723,26.479,-13.767],"1.2083":[18.881,26.502,-13.756],"1.25":[19.006,26.52,-13.747],"1.2917":[19.249,26.555,-13.728],"1.3333":[19.445,26.584,-13.714],"1.375":[19.758,26.626,-13.692],"1.4167":[20.063,26.658,-13.675],"1.4583":[20.272,26.67,-13.668],"1.5":[20.582,26.684,-13.66],"1.5417":[20.754,26.698,-13.655],"1.5833":[21.112,26.74,-13.65],"1.625":[21.323,26.767,-13.647],"1.6667":[21.653,26.807,-13.643],"1.7083":[22.005,26.849,-13.637],"1.75":[22.458,26.895,-13.63],"1.7917":[22.705,26.915,-13.625],"1.8333":[23.05,26.939,-13.617],"1.875":[23.273,26.954,-13.612],"1.9167":[23.614,26.977,-13.604],"1.9583":[23.855,26.997,-13.599],"2.0":[24.253,27.037,-13.592],"2.0417":[24.554,27.074,-13.588],"2.0833":[25.084,27.141,-13.583],"2.125":[25.502,27.189,-13.581],"2.1667":[26.191,27.268,-13.579],"2.2083":[26.668,27.331,-13.578],"2.25":[27.37,27.445,-13.575],"2.2917":[27.807,27.538,-13.571],"2.3333":[28.377,27.708,-13.562],"2.375":[28.266,28.112,-13.526],"2.4167":[27.694,28.835,-13.482],"2.4583":[27.309,29.27,-13.444],"2.5":[26.716,29.895,-13.373],"2.5417":[26.314,30.304,-13.322],"2.5833":[25.707,30.926,-13.25],"2.625":[25.305,31.357,-13.21],"2.6667":[24.71,32.048,-13.172],"2.7083":[24.324,32.549,-13.167],"2.75":[23.767,33.381,-13.198],"2.7917":[23.245,34.333,-13.287],"2.8333":[23.402,36.445,-14.103],"2.875":[22.228,41.088,-15.599],"2.9167":[18.322,42.238,-16.469],"2.9583":[9.208,42.362,-16.778],"3.0":[3.031,40.198,-13.908],"3.0417":[1.692,39.273,-10.799],"3.0833":[1.272,39.506,-10.315],"3.125":[1.021,40.623,-10.468],"3.1667":[1.32,41.578,-11.391],"3.2083":[2.395,42.786,-13.288],"3.25":[3.626,42.608,-13.959],"3.2917":[5.898,41.094,-13.773],"3.3333":[7.377,39.673,-12.719],"3.375":[8.345,40.326,-10.607],"3.4167":[8.788,41.235,-10.276],"3.4583":[9.126,41.65,-12.029],"3.5":[8.601,41.788,-13.269],"3.5417":[8.242,42.145,-14.321],"3.5833":[8.641,43.092,-14.089],"3.625":[9.18,43.381,-14.164],"3.6667":[9.986,43.234,-14.547],"3.7083":[10.363,42.735,-14.552],"3.75":[10.709,40.732,-14.01],"3.7917":[10.911,39.094,-13.371],"3.8333":[11.439,39.5,-12.402],"3.875":[11.654,40.323,-12.114],"3.9167":[11.749,41.375,-12.186],"3.9583":[11.702,41.624,-12.249],"4.0":[11.617,41.831,-12.323],"4.0417":[11.564,41.891,-12.352],"4.0833":[11.495,41.929,-12.375],"4.125":[11.461,41.924,-12.382],"4.1667":[11.431,41.894,-12.386],"4.2083":[11.42,41.866,-12.382],"4.25":[11.413,41.833,-12.379],"4.2917":[11.412,41.815,-12.378],"4.3333":[11.412,41.79,-12.376],"4.375":[11.415,41.777,-12.374],"4.4167":[11.421,41.759,-12.371],"4.4583":[11.425,41.75,-12.37],"4.5":[11.432,41.739,-12.369],"4.5417":[11.437,41.732,-12.368],"4.5833":[11.449,41.716,-12.365],"4.625":[11.464,41.7,-12.36],"4.6667":[11.479,41.664,-12.348],"4.7083":[11.482,41.63,-12.338],"4.75":[11.468,41.563,-12.325],"4.7917":[11.435,41.438,-12.298],"4.8333":[11.415,41.332,-12.277],"4.875":[11.403,41.175,-12.256],"4.9167":[11.405,41.075,-12.244],"4.9583":[11.443,40.956,-12.225],"5.0":[11.496,40.896,-12.211],"5.0417":[11.623,40.838,-12.178],"5.0833":[11.736,40.824,-12.156],"5.125":[11.914,40.828,-12.149],"5.1667":[12.051,40.856,-12.143],"5.2083":[12.279,40.924,-12.129],"5.25":[12.495,40.995,-12.113],"5.2917":[14.927,41.755,-11.16],"5.3333":[18.973,42.453,-10.822],"5.375":[28.008,41.322,-10.421],"5.4167":[31.927,39.965,-8.732],"5.4583":[33.373,36.164,-11.484],"5.5":[32.141,32.157,-12.159],"5.5417":[29.005,31.246,-14.253],"5.5833":[24.548,31.552,-15.346],"5.625":[21.867,31.969,-15.863],"5.6667":[18.866,32.463,-16.364],"5.7083":[17.772,32.76,-16.43],"5.75":[16.686,33.324,-16.391],"5.7917":[15.706,33.913,-16.45],"5.8333":[13.204,36.937,-16.502],"5.875":[14.071,37.212,-15.875],"5.9167":[15.265,32.797,-13.677],"5.9583":[14.955,30.478,-13.132],"6.0":[14.318,27.904,-12.735],"6.0417":[14.165,27.2,-12.601],"6.0833":[14.105,27.037,-12.572],"6.125":[14.08,27.003,-12.568],"6.1667":[14.06,27.035,-12.576],"6.2083":[14.054,27.078,-12.586],"6.25":[14.05,27.118,-12.594],"6.2917":[14.049,27.119,-12.595],"6.3333":[14.048,27.121,-12.595],"6.375":[14.047,27.123,-12.595],"6.4167":[14.045,27.125,-12.596],"6.4583":[14.044,27.126,-12.596],"6.5":[14.042,27.128,-12.596],"6.5417":[14.041,27.129,-12.597],"6.5833":[14.04,27.131,-12.597],"6.625":[14.039,27.133,-12.597],"6.6667":[14.038,27.135,-12.598],"6.7083":[14.037,27.136,-12.598],"6.75":[14.035,27.138,-12.598],"6.7917":[14.035,27.139,-12.598],"6.8333":[14.033,27.141,-12.599],"6.875":[14.033,27.142,-12.599],"6.9167":[14.031,27.143,-12.599],"6.9583":[14.03,27.145,-12.6],"7.0":[14.03,27.146,-12.6],"7.0417":[14.029,27.148,-12.6],"7.0833":[14.028,27.149,-12.6],"7.125":[14.027,27.151,-12.6],"7.1667":[14.026,27.152,-12.601],"7.2083":[14.026,27.153,-12.601],"7.25":[14.025,27.154,-12.601],"7.2917":[14.024,27.156,-12.601],"7.3333":[14.024,27.157,-12.601],"7.375":[14.023,27.158,-12.602],"7.4167":[14.022,27.159,-12.602],"7.4583":[14.022,27.161,-12.602],"7.5":[14.021,27.162,-12.602],"7.5417":[14.02,27.163,-12.602],"7.5833":[14.02,27.164,-12.603],"7.625":[14.019,27.166,-12.603],"7.6667":[14.019,27.167,-12.603],"7.7083":[14.018,27.168,-12.603],"7.75":[14.018,27.169,-12.603],"7.7917":[14.017,27.17,-12.603],"7.8333":[14.017,27.172,-12.604],"7.875":[14.016,27.173,-12.604],"7.9167":[14.016,27.174,-12.604],"7.9583":[14.015,27.175,-12.604],"8.0":[14.015,27.177,-12.604],"8.0417":[14.015,27.178,-12.604],"8.0833":[14.014,27.179,-12.605],"8.125":[14.014,27.18,-12.605],"8.1667":[14.013,27.181,-12.605],"8.2083":[14.013,27.182,-12.605],"8.25":[14.012,27.184,-12.605],"8.2917":[14.012,27.185,-12.605],"8.3333":[14.012,27.186,-12.606],"8.375":[14.011,27.187,-12.606],"8.4167":[14.011,27.189,-12.606],"8.4583":[14.011,27.19,-12.606],"8.5":[14.01,27.191,-12.606],"8.5417":[14.01,27.192,-12.607],"8.5833":[14.009,27.194,-12.607],"8.625":[14.009,27.195,-12.607],"8.6667":[14.009,27.197,-12.607],"8.7083":[14.008,27.198,-12.607],"8.75":[14.008,27.199,-12.608],"8.7917":[14.007,27.2,-12.608],"8.8333":[14.007,27.202,-12.608],"8.875":[14.007,27.203,-12.608],"8.9167":[14.006,27.205,-12.609],"8.9583":[14.005,27.207,-12.609],"9.0":[14.005,27.208,-12.609],"9.0417":[14.004,27.21,-12.609],"9.0833":[14.004,27.211,-12.61],"9.125":[14.003,27.213,-12.61],"9.1667":[14.003,27.214,-12.61],"9.2083":[14.002,27.216,-12.611],"9.25":[14.002,27.217,-12.611],"9.2917":[14.001,27.219,-12.611],"9.3333":[14.001,27.221,-12.611],"9.375":[14,27.223,-12.612],"9.4167":[14,27.224,-12.612],"9.4583":[13.999,27.227,-12.613],"9.5":[13.999,27.232,-12.614],"9.5417":[13.998,27.244,-12.616],"9.5833":[13.998,27.254,-12.618],"9.625":[13.997,27.268,-12.621],"9.6667":[13.997,27.276,-12.622],"9.7083":[13.993,27.29,-12.625],"9.75":[13.986,27.303,-12.629],"9.7917":[13.976,27.306,-12.631],"9.8333":[13.959,27.31,-12.635],"9.875":[13.948,27.311,-12.637],"9.9167":[13.931,27.314,-12.64],"9.9583":[13.919,27.315,-12.643],"10.0":[13.901,27.317,-12.647],"10.0417":[13.89,27.318,-12.649],"10.0833":[13.872,27.321,-12.653],"10.125":[13.861,27.322,-12.656],"10.1667":[13.845,27.325,-12.66],"10.2083":[13.834,27.327,-12.663],"10.25":[13.819,27.331,-12.668],"10.2917":[13.808,27.333,-12.671],"10.3333":[13.794,27.338,-12.676],"10.375":[13.784,27.342,-12.68],"10.4167":[13.769,27.348,-12.687],"10.4583":[13.76,27.352,-12.691],"10.5":[13.746,27.359,-12.697],"10.5417":[13.736,27.364,-12.701],"10.5833":[13.722,27.371,-12.707],"10.625":[13.713,27.376,-12.712],"10.6667":[13.699,27.385,-12.718],"10.7083":[13.69,27.39,-12.722],"10.75":[13.676,27.399,-12.727],"10.7917":[13.666,27.405,-12.731],"10.8333":[13.652,27.414,-12.737],"10.875":[13.643,27.421,-12.74],"10.9167":[13.629,27.431,-12.746],"10.9583":[13.62,27.438,-12.75],"11.0":[13.609,27.446,-12.754],"11.0417":[13.598,27.457,-12.756],"11.0833":[13.586,27.469,-12.755],"11.125":[13.568,27.481,-12.762],"11.1667":[13.556,27.488,-12.767],"11.2083":[13.541,27.496,-12.775],"11.25":[13.532,27.502,-12.78],"11.2917":[13.517,27.51,-12.789],"11.3333":[13.507,27.516,-12.794],"11.375":[13.492,27.525,-12.803],"11.4167":[13.482,27.53,-12.808],"11.4583":[13.467,27.539,-12.815],"11.5":[13.456,27.544,-12.819],"11.5417":[13.441,27.552,-12.823],"11.5833":[13.43,27.557,-12.826],"11.625":[13.414,27.564,-12.828],"11.6667":[13.404,27.568,-12.833],"11.7083":[13.388,27.574,-12.842],"11.75":[13.378,27.578,-12.846],"11.7917":[13.363,27.583,-12.842],"11.8333":[13.355,27.587,-12.831],"11.875":[13.343,27.59,-12.792],"11.9167":[13.351,27.576,-12.6],"11.9583":[13.352,27.563,-12.474],"12.0":[13.353,27.563,-12.457],"12.0417":[13.352,27.563,-12.474],"12.0833":[13.284,27.364,-12.613],"12.125":[13.205,27.137,-12.77],"12.1667":[13.131,26.936,-12.907],"12.2083":[13.168,27.061,-12.816],"12.25":[13.47,27.917,-12.2],"12.2917":[13.934,28.983,-11.37],"12.3333":[14.85,31.079,-9.747],"12.375":[15.45,32.64,-8.614],"12.4167":[16.061,34.939,-7.186],"12.4583":[15.97,36.323,-6.805],"12.5":[13.761,38.267,-7.854],"12.5417":[11.176,39.206,-8.213],"12.5833":[5.766,40.092,-9.055],"12.625":[4.203,39.895,-9.351],"12.6667":[3.962,39.468,-9.221],"12.7083":[4.224,39.264,-9.193],"12.75":[4.823,39.285,-9.303],"12.7917":[4.95,39.376,-9.381],"12.8333":[4.989,39.551,-9.481],"12.875":[4.946,39.627,-9.519],"12.9167":[4.821,39.693,-9.556],"12.9583":[4.747,39.69,-9.57],"13.0":[4.644,39.641,-9.573],"13.0417":[4.588,39.593,-9.564],"13.0833":[4.553,39.546,-9.547],"13.125":[4.549,39.52,-9.528],"13.1667":[4.552,39.51,-9.52],"13.2083":[4.559,39.507,-9.515],"13.25":[4.563,39.512,-9.517],"13.2917":[4.566,39.517,-9.52],"13.3333":[4.566,39.521,-9.523],"13.375":[4.564,39.524,-9.526],"13.4167":[4.562,39.525,-9.527]}},"lefthand_1":{"rotation":{"3.0":[0,0,0],"3.125":[0,0,-27.5],"3.4583":[0,0,0]},"position":{"0.0":[0,2.5,0],"3.0":[0,2.5,0]},"scale":{"0.0":[1,1.5,1],"3.0":[1,1.5,1]}},"righthand":{"rotation":{"0.0":[-37.13,-182.626,74.147],"0.0417":[-41.203,-211.924,51.251],"0.0833":[-61.558,-239.916,12.207],"0.125":[-38.718,-247.003,9.908],"0.1667":[-90.396,-234.482,-47.54],"0.2083":[-91.383,-221.935,-48.751],"0.25":[-108.97,-209.836,-67.825],"0.2917":[-112.285,-205.597,-75.047],"0.3333":[-95.247,-195.472,-83.441],"0.375":[-80.011,-191.849,-92.641],"0.4167":[-62.908,-196.808,-101.567],"0.4583":[-49.882,-200.59,-91.368],"0.5":[-16.502,-166.56,-50.983],"0.5417":[-29.025,-150.104,-36.416],"0.5833":[-83.983,-134.123,42.427],"0.625":[-108.716,-171.211,84.149],"0.6667":[-95.318,-187.077,109.019],"0.7083":[-62.78,-186.527,167.526],"0.75":[-56.022,-177.407,205.249],"0.7917":[-62.994,-175.733,243.159],"0.8333":[-84.545,-167.705,245.293],"0.875":[-98.457,-126.194,208.09],"0.9167":[-58.512,-126.93,146.26],"0.9583":[-90.804,-130.377,109.806],"1.0":[-93.386,-128.435,62.954],"1.0417":[-116.03,-182.246,-21.913],"1.0833":[-120.923,-205.144,-17.816],"1.125":[-71.772,-204.778,65.273],"1.1667":[-57.551,-176.183,106.28],"1.2083":[-40.789,-144.975,128.344],"1.25":[-16.702,-140.824,105.631],"1.2917":[0.027,-171.891,69.131],"1.3333":[-7.301,-207.61,52.077],"1.375":[-64.966,-245.421,-11.975],"1.4167":[-145.509,-234.68,-94.26],"1.4583":[-150.719,-217.055,-105.925],"1.5":[-126.331,-192.629,-117.385],"1.5417":[-108.447,-190.454,-122.534],"1.5833":[-80.016,-194.789,-109.007],"1.625":[-58.925,-195.891,-92.115],"1.6667":[-22.687,-179.055,-57.027],"1.7083":[-27.968,-151.023,-29.974],"1.75":[-77.79,-144.402,19.752],"1.7917":[-92.006,-152.272,44.14],"1.8333":[-90.512,-159.918,73.491],"1.875":[-82.126,-159.433,84.62],"1.9167":[-53.958,-148.112,73.725],"1.9583":[-29.048,-149.755,46.414],"2.0":[-17.782,-181.317,11.842],"2.0417":[-30.446,-211.55,-6.352],"2.0833":[-87.47,-229.551,-58.156],"2.125":[-104.851,-215.772,-70.718],"2.1667":[-127.398,-210.793,-55.884],"2.2083":[-133.126,-233.449,-22.783],"2.25":[-68.827,-232.1,59.181],"2.2917":[-56.061,-213.168,84.595],"2.3333":[-71.459,-175.059,114.23],"2.375":[-80.906,-173.629,166.889],"2.4167":[-87.463,-171.949,134.493],"2.4583":[-81.508,-163.428,87.714],"2.5":[-73.371,-170.085,26.039],"2.5417":[-92.707,-179.757,-1.758],"2.5833":[-95.593,-179.813,-8.793],"2.625":[-96.887,-179.607,-12.521],"2.6667":[-98.024,-179.13,-16.904],"2.7083":[-98.343,-178.766,-19.166],"2.75":[-98.328,-178.211,-21.818],"2.7917":[-97.924,-177.676,-23.877],"2.8333":[-97.548,-177.334,-25.084],"2.875":[-96.981,-176.841,-26.889],"2.9167":[-96.693,-176.521,-28.227],"2.9583":[-96.551,-176.04,-30.677],"3.0":[-96.657,-175.786,-32.213],"3.0417":[-96.202,-175.315,-34.09],"3.0833":[-95.551,-174.657,-36.811],"3.125":[-95.175,-174.348,-38.204],"3.1667":[-94.948,-174.128,-39.128],"3.2083":[-94.632,-173.782,-40.506],"3.25":[-94.434,-173.547,-41.417],"3.2917":[-94.145,-173.196,-42.767],"3.3333":[-93.955,-172.965,-43.655],"3.375":[-93.664,-172.634,-44.964],"3.4167":[-93.462,-172.428,-45.819],"3.4583":[-93.142,-172.148,-47.074],"3.5":[-92.912,-171.987,-47.888],"3.5417":[-92.538,-171.792,-49.074],"3.5833":[-92.121,-171.662,-50.211],"3.625":[-91.814,-171.62,-50.94],"3.6667":[-91.308,-171.628,-51.983],"3.7083":[-90.936,-171.689,-52.643],"3.75":[-90.322,-171.869,-53.575],"3.7917":[-89.203,-172.712,-53.679],"3.8333":[-85.36,-177.957,-49.734],"3.875":[-85.837,-180.658,-46.805],"3.9167":[-86.76,-184.881,-42.275],"3.9583":[-87.417,-187.794,-39.203],"4.0":[-88.306,-192.258,-34.566],"4.0417":[-88.748,-195.255,-31.469],"4.0833":[-89.046,-199.691,-26.825],"4.125":[-88.922,-202.545,-23.725],"4.1667":[-88.127,-206.549,-19.055],"4.2083":[-87.124,-208.954,-15.924],"4.25":[-84.82,-212.021,-11.207],"4.2917":[-82.565,-213.429,-8.131],"4.3333":[-76.971,-212.795,-4.422],"4.375":[-72.526,-211.206,-2.718],"4.4167":[-65.982,-208.705,-1.078],"4.4583":[-62.22,-207.902,-0.179],"4.5":[-56.986,-208.856,0.692],"4.5417":[-53.716,-210.312,0.988],"4.5833":[-50.161,-212.29,1.67],"4.625":[-49.733,-213.031,2.386],"4.6667":[-51.279,-213.898,3.512],"4.7083":[-52.054,-214.469,4.22],"4.75":[-53.216,-215.262,5.223],"4.7917":[-54.477,-216.033,6.154],"4.8333":[-55.501,-216.491,6.626],"4.875":[-57.638,-217.043,6.881],"4.9167":[-59.049,-217.322,6.956],"4.9583":[-61.062,-217.773,7.074],"5.0":[-62.099,-217.878,7.143],"5.0417":[-62.374,-217.223,7.319],"5.0833":[-62.009,-216.453,7.473],"5.125":[-61.277,-215.075,7.611],"5.1667":[-61.123,-214.402,7.829],"5.2083":[-61.242,-213.529,8.238],"5.25":[-56.731,-204.885,2.175],"5.2917":[-51.381,-204.763,-25.274],"5.3333":[-44.64,-188.107,-44.123],"5.375":[-44.421,-180.544,-37.319],"5.4167":[-46.109,-177.103,-29.603],"5.4583":[-48.805,-173.991,-21.721],"5.5":[-49.49,-172.376,-20.874],"5.5417":[-49.612,-170.261,-21.765],"5.5833":[-49.598,-168.949,-24.197],"5.625":[-50.114,-168.741,-26.051],"5.6667":[-52.634,-169.696,-28.252],"5.7083":[-55.756,-171.321,-29.345],"5.75":[-61.996,-174.941,-31.357],"5.7917":[-66.873,-177.788,-33.031],"5.8333":[-74.721,-182.107,-36.059],"5.875":[-79.971,-184.703,-38.335],"5.9167":[-87.209,-187.737,-41.792],"5.9583":[-90.687,-188.92,-43.642],"6.0":[-94.186,-190.196,-45.288],"6.0417":[-89.372,-190.149,-37.249],"6.0833":[-74.662,-183.057,-16.089],"6.125":[-67.712,-183.437,-10.478],"6.1667":[-61.437,-197.003,-14.18],"6.2083":[-68.791,-207.992,-22.088],"6.25":[-90.997,-221,-40.709],"6.2917":[-89.069,-221.898,-24.583],"6.3333":[-78.911,-230.957,-9.855],"6.375":[-70.699,-250.156,-3.216],"6.4167":[-69.869,-252.028,-2.524],"6.4583":[-73.372,-250.94,-6.606],"6.5":[-76.591,-249.69,-10.195],"6.5417":[-77.973,-248.93,-11.875],"6.5833":[-78.444,-248.852,-12.762],"6.625":[-78.361,-249.2,-12.745],"6.6667":[-79.336,-250.709,-13.613],"6.7083":[-79.032,-251.341,-12.952],"6.75":[-78.701,-251.777,-12.208],"6.7917":[-78.634,-251.915,-11.94],"6.8333":[-78.555,-252.032,-11.616],"6.875":[-78.551,-252.058,-11.492],"6.9167":[-78.871,-252.194,-11.772],"6.9583":[-79.415,-252.309,-12.376],"7.0":[-79.775,-252.313,-12.775],"7.0417":[-80.128,-252.251,-13.216],"7.0833":[-80.096,-252.13,-13.273],"7.125":[-79.89,-251.896,-13.156],"7.1667":[-79.732,-251.75,-13.051],"7.2083":[-79.521,-251.613,-12.912],"7.25":[-79.428,-251.546,-12.841],"7.2917":[-79.343,-251.504,-12.756],"7.3333":[-79.285,-251.535,-12.696],"7.375":[-79.357,-251.703,-12.733],"7.4167":[-79.388,-251.771,-12.744],"7.4583":[-79.395,-251.8,-12.729],"7.5":[-79.383,-251.797,-12.704],"7.5417":[-79.359,-251.783,-12.663],"7.5833":[-79.276,-251.684,-12.572],"7.625":[-78.868,-251.199,-12.176],"7.6667":[-78.691,-250.909,-11.987],"7.7083":[-78.989,-250.773,-12.189],"7.75":[-79.337,-250.73,-12.424],"7.7917":[-79.162,-250.681,-12.214],"7.8333":[-77.782,-250.42,-10.898],"7.875":[-76.534,-250.256,-9.729],"7.9167":[-75.137,-250.487,-8.392],"7.9583":[-74.532,-251.133,-7.776],"8.0":[-73.779,-252.14,-7.003],"8.0417":[-73.313,-252.553,-6.548],"8.0833":[-72.691,-253.055,-5.955],"8.125":[-72.342,-253.372,-5.623],"8.1667":[-72.026,-253.911,-5.306],"8.2083":[-72.018,-254.268,-5.283],"8.25":[-72.058,-254.653,-5.3],"8.2917":[-72.118,-254.859,-5.343],"8.3333":[-72.243,-255.139,-5.445],"8.375":[-72.34,-255.33,-5.532],"8.4167":[-72.538,-255.62,-5.72],"8.4583":[-72.677,-255.728,-5.866],"8.5":[-72.883,-255.682,-6.124],"8.5417":[-73.016,-255.522,-6.301],"8.5833":[-73.125,-255.07,-6.478],"8.625":[-73.26,-254.663,-6.66],"8.6667":[-73.424,-253.945,-6.912],"8.7083":[-73.632,-253.422,-7.177],"8.75":[-74.663,-252.615,-8.26],"8.7917":[-75.898,-252.045,-9.506],"8.8333":[-77.849,-251.164,-11.459],"8.875":[-78.799,-250.599,-12.408],"8.9167":[-79.659,-249.768,-13.27],"8.9583":[-80.25,-248.947,-13.861],"9.0":[-80.581,-248.437,-14.19],"9.0417":[-81.103,-247.775,-14.701],"9.0833":[-81.511,-247.493,-15.092],"9.125":[-82.143,-247.334,-15.683],"9.1667":[-82.522,-247.294,-16.034],"9.2083":[-83.077,-247.323,-16.548],"9.25":[-83.42,-247.378,-16.86],"9.2917":[-83.834,-247.456,-17.222],"9.3333":[-84.035,-247.49,-17.396],"9.375":[-84.27,-247.579,-17.57],"9.4167":[-84.417,-247.713,-17.629],"9.4583":[-84.542,-248.412,-17.306],"9.5":[-81.441,-250.401,-13.87],"9.5417":[-89.257,-252.685,-18.497],"9.5833":[-104.592,-253.145,-30.453],"9.625":[-140.193,-249.217,-60.966],"9.6667":[-170.632,-235.265,-88.196],"9.7083":[-179.207,-200.722,-112.497],"9.75":[-147.591,-191.388,-130.891],"9.7917":[-137.088,-201.114,-130.287],"9.8333":[-108.209,-209.785,-108.531],"9.875":[-85.726,-207.151,-84.262],"9.9167":[-84.344,-196.965,-70.957],"9.9583":[-86.676,-191.51,-72.545],"10.0":[-78.97,-181.699,-69.493],"10.0417":[-67.646,-169.227,-51.665],"10.0833":[-79.37,-145.917,13.785],"10.125":[-102.818,-148.171,59.987],"10.1667":[-114.579,-149.086,139.533],"10.2083":[-113.577,-162.823,168.167],"10.25":[-101.303,-156.544,194.308],"10.2917":[-86.372,-137.79,192.608],"10.3333":[-100.013,-99.82,199.825],"10.375":[-1.174,-120.036,79.461],"10.4167":[-33.327,-177.777,53.445],"10.4583":[-46.267,-223.594,21.468],"10.5":[-136.536,-235.062,-93.361],"10.5417":[-137.245,-222.218,-113.375],"10.5833":[-94.031,-214.778,-108.49],"10.625":[-49.896,-192.894,-87.445],"10.6667":[-25.502,-154.429,-61.32],"10.7083":[-36.231,-135.125,-42.531],"10.75":[-67.013,-115.234,17.214],"10.7917":[-109.643,-111.773,81.604],"10.8333":[-100.854,-127.639,93.964],"10.875":[-93.754,-142.559,110.641],"10.9167":[-82.81,-144.289,118.045],"10.9583":[-73.037,-134.611,125.47],"11.0":[-43.495,-128.605,96.851],"11.0417":[-19.752,-146.514,55.563],"11.0833":[-12.866,-164.756,12.842],"11.125":[-24.681,-191.646,-18.189],"11.1667":[-45.071,-206.914,-40.212],"11.2083":[-73.384,-217.592,-64.892],"11.25":[-87.244,-222.625,-74.396],"11.2917":[-102.961,-226.805,-90.274],"11.3333":[-107.91,-225.999,-101.617],"11.375":[-90.628,-219.475,-101.791],"11.4167":[-74.124,-214.534,-96.321],"11.4583":[-50.391,-204.041,-79.416],"11.5":[-36.853,-188.704,-62.546],"11.5417":[-27.382,-161.48,-38.992],"11.5833":[-40.418,-135.639,-15.254],"11.625":[-91.363,-127.702,48.274],"11.6667":[-92.798,-131.455,59.734],"11.7083":[-99.396,-143.761,90.341],"11.75":[-95.76,-149.074,99.085],"11.7917":[-72.299,-142.5,81.854],"11.8333":[-45.672,-143.416,54.689],"11.875":[-22.189,-154.46,23.972],"11.9167":[-21.77,-171.731,4.639],"11.9583":[-29.899,-178.583,-8.776],"12.0":[-44.283,-185.245,-32.357],"12.0417":[-56.304,-197.053,-52.216],"12.0833":[-99.539,-201.59,-90.147],"12.125":[-146.127,-199.484,-117.886],"12.1667":[-156.951,-215.89,-134.555],"12.2083":[-146.747,-221.301,-126.424],"12.25":[-128.666,-211.218,-109.093],"12.2917":[-110.424,-204.52,-86.431],"12.3333":[-84.66,-178.424,-45.326],"12.375":[-77.905,-158.016,-23.52],"12.4167":[-71.444,-151.689,-9.61],"12.4583":[-65.543,-162.084,-9.305],"12.5":[-62.466,-180.399,-11.831],"12.5417":[-59.526,-198.873,-7.439],"12.5833":[-48.887,-183.269,49.418],"12.625":[-41.322,-175.47,64.476],"12.6667":[-39.807,-165.584,77.106],"12.7083":[-42.864,-157.559,80.142],"12.75":[-45.047,-147.434,82.783],"12.7917":[-43.631,-142.953,83.448],"12.8333":[-40.817,-140.909,83.26],"12.875":[-39.901,-141.564,83.583],"12.9167":[-39.382,-142.634,84.127],"12.9583":[-39.558,-143.15,84.699],"13.0":[-39.92,-143.806,85.37],"13.0417":[-40.144,-144.064,85.608],"13.0833":[-40.331,-144.053,85.593],"13.125":[-40.491,-143.984,85.629],"13.1667":[-40.607,-143.94,85.697],"13.2083":[-40.692,-143.868,85.772],"13.25":[-40.705,-143.816,85.8],"13.2917":[-40.702,-143.732,85.801],"13.3333":[-40.695,-143.675,85.794],"13.375":[-40.677,-143.589,85.779],"13.4167":[-40.671,-143.561,85.775]},"position":{"0.0":[-2.249,39.94,-15.197],"0.0417":[-1.578,40.988,-15.883],"0.0833":[-1.986,42.286,-16.182],"0.125":[-2.605,42.903,-16.279],"0.1667":[-3.911,43.408,-16.608],"0.2083":[-4.887,43.17,-16.514],"0.25":[-6.921,42.162,-15.865],"0.2917":[-7.771,41.687,-15.327],"0.3333":[-8.633,41.331,-14.066],"0.375":[-9.133,41.245,-13.301],"0.4167":[-9.944,41.074,-12.647],"0.4583":[-10.487,40.769,-12.452],"0.5":[-10.95,40.211,-12.17],"0.5417":[-11.464,38.989,-12.249],"0.5833":[-13.027,37.633,-12.615],"0.625":[-14.435,37.677,-13.049],"0.6667":[-14.765,38.521,-13.125],"0.7083":[-14.616,39.694,-13.949],"0.75":[-14.01,40.016,-14.694],"0.7917":[-11.747,39.623,-16.952],"0.8333":[-10.444,39.764,-17.948],"0.875":[-9.393,41.258,-18.41],"0.9167":[-9.434,42.301,-18.146],"0.9583":[-9.917,41.445,-17.142],"1.0":[-9.395,39.546,-16.695],"1.0417":[-8.471,38.57,-16.889],"1.0833":[-7.789,38.262,-17.076],"1.125":[-7.172,37.999,-17.19],"1.1667":[-6.873,37.524,-17.217],"1.2083":[-7.247,37.028,-16.979],"1.25":[-7.996,37.004,-16.714],"1.2917":[-9.231,37.496,-16.496],"1.3333":[-9.7,38.249,-16.668],"1.375":[-10.172,39.434,-17.054],"1.4167":[-10.485,40.322,-17.245],"1.4583":[-10.826,40.769,-17.077],"1.5":[-11.482,41.042,-16.358],"1.5417":[-11.645,41.012,-15.383],"1.5833":[-12.104,40.75,-14.01],"1.625":[-12.532,40.655,-13.502],"1.6667":[-13.339,40.818,-13.544],"1.7083":[-13.718,41.047,-14.066],"1.75":[-13.594,41.163,-14.972],"1.7917":[-13.265,40.915,-15.555],"1.8333":[-13.15,40.371,-16.19],"1.875":[-13.111,39.984,-16.531],"1.9167":[-12.989,39.324,-16.815],"1.9583":[-12.86,39.003,-16.831],"2.0":[-12.324,38.96,-16.651],"2.0417":[-12.162,39.195,-16.45],"2.0833":[-12.317,39.536,-16.151],"2.125":[-12.355,39.399,-15.936],"2.1667":[-12.288,38.945,-15.311],"2.2083":[-12.061,38.23,-14.878],"2.25":[-11.818,36.385,-14.638],"2.2917":[-12.373,34.64,-14.74],"2.3333":[-13.652,34.067,-15.764],"2.375":[-14.636,38.077,-16.461],"2.4167":[-15.264,39.727,-16.323],"2.4583":[-15.831,39.209,-15.841],"2.5":[-17.917,34.788,-15.436],"2.5417":[-19.982,30.311,-15.466],"2.5833":[-19.962,29.669,-15.287],"2.625":[-19.877,29.383,-15.165],"2.6667":[-19.66,29.129,-14.977],"2.7083":[-19.466,29.056,-14.849],"2.75":[-19.118,29.055,-14.654],"2.7917":[-18.724,29.139,-14.455],"2.8333":[-18.447,29.219,-14.321],"2.875":[-18.029,29.338,-14.118],"2.9167":[-17.759,29.395,-13.982],"2.9583":[-17.383,29.413,-13.776],"3.0":[-17.11,29.398,-13.618],"3.0417":[-16.479,29.524,-13.298],"3.0833":[-16.142,29.594,-13.127],"3.125":[-15.833,29.656,-12.97],"3.1667":[-15.63,29.697,-12.867],"3.2083":[-15.327,29.758,-12.713],"3.25":[-15.127,29.799,-12.612],"3.2917":[-14.83,29.859,-12.46],"3.3333":[-14.633,29.899,-12.36],"3.375":[-14.339,29.959,-12.211],"3.4167":[-14.144,29.998,-12.112],"3.4583":[-13.853,30.057,-11.965],"3.5":[-13.66,30.096,-11.867],"3.5417":[-13.371,30.154,-11.72],"3.5833":[-13.083,30.212,-11.573],"3.625":[-12.891,30.25,-11.476],"3.6667":[-12.603,30.306,-11.329],"3.7083":[-12.411,30.344,-11.231],"3.75":[-12.123,30.399,-11.084],"3.7917":[-11.922,30.425,-10.988],"3.8333":[-11.71,30.437,-10.862],"3.875":[-11.725,30.481,-10.771],"3.9167":[-11.771,30.491,-10.615],"3.9583":[-11.813,30.475,-10.502],"4.0":[-11.888,30.44,-10.33],"4.0417":[-11.941,30.425,-10.217],"4.0833":[-12.018,30.438,-10.059],"4.125":[-12.065,30.485,-9.965],"4.1667":[-12.12,30.639,-9.852],"4.2083":[-12.143,30.811,-9.799],"4.25":[-12.149,31.199,-9.762],"4.2917":[-12.124,31.614,-9.785],"4.3333":[-11.963,32.984,-10.036],"4.375":[-11.801,34.206,-10.303],"4.4167":[-11.534,36.069,-10.745],"4.4583":[-11.374,37.077,-11.004],"4.5":[-11.142,38.146,-11.371],"4.5417":[-10.984,38.69,-11.617],"4.5833":[-10.79,39.377,-11.921],"4.625":[-10.714,39.737,-12.038],"4.6667":[-10.667,40.061,-12.108],"4.7083":[-10.656,40.179,-12.13],"4.75":[-10.688,40.147,-12.097],"4.7917":[-10.764,40.074,-12.059],"4.8333":[-10.853,39.993,-12.043],"4.875":[-11.032,39.829,-12.077],"4.9167":[-11.193,39.719,-12.112],"4.9583":[-11.492,39.582,-12.177],"5.0":[-11.735,39.5,-12.22],"5.0417":[-12.208,39.38,-12.255],"5.0833":[-12.611,39.289,-12.271],"5.125":[-13.383,39.145,-12.299],"5.1667":[-14.039,39.072,-12.328],"5.2083":[-15.452,38.988,-12.395],"5.25":[-16.983,38.361,-12.44],"5.2917":[-22.964,37.353,-13.027],"5.3333":[-26.162,34.866,-10.716],"5.375":[-26.448,32.754,-9.616],"5.4167":[-26.219,31.517,-9.113],"5.4583":[-25.634,30.301,-8.814],"5.5":[-25.201,29.974,-8.908],"5.5417":[-24.424,29.86,-9.298],"5.5833":[-23.553,29.982,-9.865],"5.625":[-22.951,30.075,-10.271],"5.6667":[-22.065,30.052,-10.817],"5.7083":[-21.482,29.902,-11.135],"5.75":[-20.575,29.609,-11.625],"5.7917":[-19.962,29.386,-11.953],"5.8333":[-19.052,29.041,-12.439],"5.875":[-18.465,28.821,-12.753],"5.9167":[-17.637,28.537,-13.198],"5.9583":[-17.213,28.433,-13.42],"6.0":[-16.805,28.422,-13.656],"6.0417":[-17.829,29.762,-13.806],"6.0833":[-20.93,33.692,-14.09],"6.125":[-21.575,35.781,-14.849],"6.1667":[-19.844,37.936,-16.85],"6.2083":[-16.436,38.701,-17.444],"6.25":[-9.965,37.811,-17.988],"6.2917":[-5.116,35.849,-17.247],"6.3333":[-5.225,34.58,-12.872],"6.375":[-6.578,33.865,-12.338],"6.4167":[-8.14,33.922,-12.827],"6.4583":[-8.645,34.18,-13.361],"6.5":[-8.968,34.852,-13.738],"6.5417":[-9.007,35.285,-13.784],"6.5833":[-8.836,35.781,-13.731],"6.625":[-8.703,35.947,-13.667],"6.6667":[-8.487,36.096,-13.513],"6.7083":[-8.368,36.082,-13.409],"6.75":[-8.296,35.988,-13.355],"6.7917":[-8.284,35.91,-13.356],"6.8333":[-8.293,35.817,-13.371],"6.875":[-8.315,35.766,-13.39],"6.9167":[-8.347,35.708,-13.416],"6.9583":[-8.377,35.684,-13.439],"7.0":[-8.393,35.684,-13.45],"7.0417":[-8.414,35.697,-13.464],"7.0833":[-8.424,35.714,-13.471],"7.125":[-8.427,35.732,-13.472],"7.1667":[-8.427,35.742,-13.471],"7.2083":[-8.418,35.757,-13.464],"7.25":[-8.41,35.765,-13.455],"7.2917":[-8.394,35.767,-13.436],"7.3333":[-8.383,35.759,-13.426],"7.375":[-8.37,35.741,-13.418],"7.4167":[-8.363,35.727,-13.414],"7.4583":[-8.354,35.704,-13.406],"7.5":[-8.349,35.685,-13.399],"7.5417":[-8.343,35.657,-13.388],"7.5833":[-8.338,35.618,-13.37],"7.625":[-8.327,35.525,-13.318],"7.6667":[-8.328,35.405,-13.258],"7.7083":[-8.351,35.131,-13.125],"7.75":[-8.381,34.806,-12.974],"7.7917":[-8.4,34.569,-12.879],"7.8333":[-8.422,34.157,-12.748],"7.875":[-8.435,33.861,-12.666],"7.9167":[-8.454,33.446,-12.559],"7.9583":[-8.467,33.176,-12.498],"8.0":[-8.483,32.86,-12.433],"8.0417":[-8.489,32.728,-12.412],"8.0833":[-8.498,32.572,-12.394],"8.125":[-8.504,32.485,-12.385],"8.1667":[-8.514,32.382,-12.37],"8.2083":[-8.523,32.348,-12.362],"8.25":[-8.536,32.321,-12.35],"8.2917":[-8.546,32.312,-12.343],"8.3333":[-8.559,32.31,-12.33],"8.375":[-8.567,32.311,-12.32],"8.4167":[-8.575,32.324,-12.303],"8.4583":[-8.58,32.345,-12.286],"8.5":[-8.586,32.403,-12.245],"8.5417":[-8.588,32.459,-12.211],"8.5833":[-8.59,32.571,-12.157],"8.625":[-8.588,32.664,-12.12],"8.6667":[-8.58,32.818,-12.065],"8.7083":[-8.574,32.932,-12.028],"8.75":[-8.561,33.142,-11.965],"8.7917":[-8.55,33.31,-11.912],"8.8333":[-8.533,33.582,-11.837],"8.875":[-8.52,33.764,-11.804],"8.9167":[-8.502,34.041,-11.785],"8.9583":[-8.482,34.325,-11.784],"9.0":[-8.469,34.509,-11.788],"9.0417":[-8.448,34.765,-11.79],"9.0833":[-8.433,34.911,-11.789],"9.125":[-8.41,35.08,-11.791],"9.1667":[-8.399,35.169,-11.792],"9.2083":[-8.387,35.275,-11.795],"9.25":[-8.38,35.333,-11.798],"9.2917":[-8.371,35.405,-11.807],"9.3333":[-8.366,35.44,-11.811],"9.375":[-8.359,35.481,-11.827],"9.4167":[-8.352,35.51,-11.858],"9.4583":[-8.326,35.562,-12.041],"9.5":[-8.271,35.615,-12.51],"9.5417":[-8.176,35.704,-13.336],"9.5833":[-8.114,35.782,-13.883],"9.625":[-8.056,36.013,-14.539],"9.6667":[-8.079,36.175,-14.726],"9.7083":[-8.147,36.445,-14.55],"9.75":[-8.418,36.432,-13.751],"9.7917":[-8.674,36.74,-13.606],"9.8333":[-9.261,36.947,-13.694],"9.875":[-9.732,36.924,-13.645],"9.9167":[-10.316,36.567,-13.31],"9.9583":[-10.7,36.158,-13.075],"10.0":[-11.373,35.261,-12.434],"10.0417":[-12.147,34.649,-11.656],"10.0833":[-14.917,35.217,-10.495],"10.125":[-15.924,37.245,-10.974],"10.1667":[-15.46,41.241,-12.485],"10.2083":[-14.673,43.009,-13.626],"10.25":[-12.052,43.34,-15.981],"10.2917":[-9.746,39.802,-16.921],"10.3333":[-6.448,38.998,-15.752],"10.375":[-5.267,39.949,-14.938],"10.4167":[-4.878,41.016,-14.904],"10.4583":[-5.031,41.58,-15.609],"10.5":[-5.649,41.629,-16.787],"10.5417":[-6.122,41.164,-17.156],"10.5833":[-6.906,39.97,-16.566],"10.625":[-7.727,39.173,-15.276],"10.6667":[-8.954,38.902,-14.114],"10.7083":[-9.615,39.301,-13.807],"10.75":[-10.45,40.261,-14.223],"10.7917":[-10.629,40.589,-14.856],"10.8333":[-10.674,40.765,-16.017],"10.875":[-10.442,40.672,-16.308],"10.9167":[-10.419,40.304,-16.887],"10.9583":[-10.442,39.951,-17.228],"11.0":[-10.467,39.186,-17.638],"11.0417":[-10.336,38.763,-17.781],"11.0833":[-9.757,38.675,-17.563],"11.125":[-9.15,39.106,-17.198],"11.1667":[-9.057,39.576,-17.052],"11.2083":[-9.282,40.139,-17.031],"11.25":[-9.483,40.291,-17.1],"11.2917":[-9.968,40.348,-17.28],"11.3333":[-10.266,40.232,-17.394],"11.375":[-10.784,39.911,-17.476],"11.4167":[-11.071,39.667,-17.416],"11.4583":[-11.489,39.373,-17.008],"11.5":[-11.928,39.304,-16.5],"11.5417":[-12.597,39.637,-15.855],"11.5833":[-13.08,40.051,-15.718],"11.625":[-13.686,41.12,-15.912],"11.6667":[-13.768,41.571,-16.58],"11.7083":[-13.638,41.48,-17.3],"11.75":[-13.598,41.216,-17.603],"11.7917":[-13.712,40.323,-17.927],"11.8333":[-13.824,39.67,-17.965],"11.875":[-14.141,38.907,-17.922],"11.9167":[-14.493,38.103,-17.727],"11.9583":[-14.614,37.271,-17.56],"12.0":[-14.457,35.741,-17.504],"12.0417":[-13.926,34.872,-17.696],"12.0833":[-11.681,34.702,-17.586],"12.125":[-11.101,35.859,-17.323],"12.1667":[-11.813,36.167,-17.083],"12.2083":[-13.238,35.01,-15.529],"12.25":[-15.753,32.514,-11.303],"12.2917":[-18.302,32.535,-10.935],"12.3333":[-23.335,34.347,-13.26],"12.375":[-25.799,36.004,-15.388],"12.4167":[-24.495,39.683,-17.211],"12.4583":[-20.682,42.984,-17.858],"12.5":[-14.804,45.94,-18.59],"12.5417":[-7.428,45.709,-18.483],"12.5833":[-0.373,40.174,-16.064],"12.625":[-0.562,38.603,-14.44],"12.6667":[-2.415,38.123,-13.548],"12.7083":[-2.952,38.244,-14.138],"12.75":[-3.11,38.888,-14.733],"12.7917":[-3.058,39.292,-14.799],"12.8333":[-2.928,39.571,-14.77],"12.875":[-2.881,39.584,-14.73],"12.9167":[-2.85,39.525,-14.692],"12.9583":[-2.856,39.487,-14.688],"13.0":[-2.881,39.451,-14.692],"13.0417":[-2.899,39.44,-14.698],"13.0833":[-2.911,39.442,-14.707],"13.125":[-2.914,39.449,-14.711],"13.1667":[-2.914,39.453,-14.712],"13.2083":[-2.911,39.457,-14.712],"13.25":[-2.909,39.459,-14.711],"13.2917":[-2.905,39.459,-14.709],"13.3333":[-2.904,39.459,-14.709],"13.375":[-2.903,39.457,-14.708],"13.4167":[-2.903,39.457,-14.708]}},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.0833":[4.9574,-0.6518,7.4718],"0.2917":[4.9953,0.2178,-2.4905],"0.4167":[-20.0047,0.2178,-2.4905],"0.5833":[-17.9936,-8.893,-28.5413],"0.6667":[0,0,0],"0.75":[-25,0,0],"0.875":[-10.0691,-2.6822,-14.7637],"0.9167":[-31.0415,-1.6093,-8.8582],"0.9583":[0,0,0],"1.0":[40,0,-11.25],"1.0417":[10,0,-22.5],"1.125":[17.7632,0,-11.8421],"1.2083":[0,0,0],"1.2917":[-12.5,0,0],"1.625":[-12.5,0,0],"1.7083":[-9.6385,-7.9972,-39.3247],"1.8333":[14.7822,2.5759,-9.6658],"2.0833":[0,0,0],"4.5417":[0,0,0],"10.1667":[0,0,0],"10.375":[-15,0,-20],"10.5":[0,0,0],"10.6667":[-53.6609,-24.9417,-17.2344],"10.7083":[-24.7422,-25.8209,-31.4258],"10.75":[-4.3955,-15.236,-41.9872],"10.7917":[0,0,0],"11.1667":[0,0,0],"11.5":[-27.5,0,0],"11.6667":[0,0,0]},"position":{"0.0":[0,2.5,0],"4.5417":[0,2.5,0],"4.8333":[-0.5917,1.84,-0.463],"5.7083":[-0.5917,1.84,-0.463],"6.1667":[0,2.5,0],"9.7917":[0,2.5,0],"10.0417":[0,4.5,0],"12.25":[0,4.5,0],"12.5417":[0,2.5,0]},"scale":[1,1.5,1]},"annihil":{"rotation":{"0.0":[-13.254,-19.959,81.045],"0.0417":[-21.42,-69.04,64.361],"0.0833":[71.276,-79.702,-80.947],"0.125":[93.057,-72.3,-138.743],"0.1667":[24.143,-22.7,-130.369],"0.2083":[-2.795,-16.237,-137.929],"0.25":[-41.705,24.75,-200.313],"0.2917":[-57.097,24.756,-240.661],"0.3333":[-54.207,18.583,-300.953],"0.375":[-36.633,31.313,-325.976],"0.4167":[16.528,43.08,-316.944],"0.4583":[49.765,35.149,-299.316],"0.5":[91.476,13.57,-243.045],"0.5417":[53.475,-8.903,-204.888],"0.5833":[-13.07,-36.346,-149.917],"0.625":[-42.011,6.29,-93.812],"0.6667":[-21.598,17.856,-62.887],"0.7083":[21.411,7.041,0.362],"0.75":[33.703,2.824,43.341],"0.7917":[26.355,-5.063,74.835],"0.8333":[15.579,-10.965,83.562],"0.875":[2.498,-8.61,103.414],"0.9167":[-7.505,-8.905,115.414],"0.9583":[-27.048,-8.198,133.813],"1.0":[-35.336,12.315,134.297],"1.0417":[-62.751,25.356,145.706],"1.0833":[-76.659,38.237,147.712],"1.125":[-30.041,44.187,237.97],"1.1667":[-8.767,2.096,292.227],"1.2083":[19.848,-13.408,322.484],"1.25":[53.017,-25.574,320.629],"1.2917":[109.402,-12.589,277.561],"1.3333":[118.99,31.663,272.672],"1.375":[181.959,58.614,346.284],"1.4167":[233.79,33.984,395.376],"1.4583":[252.181,20.369,400.857],"1.5":[289.218,24.084,387.076],"1.5417":[317.579,30.329,384.397],"1.5833":[361.216,45.018,396.402],"1.625":[399.267,42.889,434.554],"1.6667":[421.279,5.606,489.69],"1.7083":[396.581,-9.951,522.844],"1.75":[352.659,-18.468,562.859],"1.7917":[335.012,-23.935,593.164],"1.8333":[338.729,-11.021,616.663],"1.875":[350.791,-11.239,631.467],"1.9167":[386.676,-31.615,635.995],"1.9583":[419.609,-36.037,618.969],"2.0":[464.331,-12.821,626.458],"2.0417":[480.994,25.467,577.242],"2.0833":[347.154,54.915,444.444],"2.125":[317.159,27.949,451.692],"2.1667":[277.193,24.781,488.908],"2.2083":[282.203,46.823,532.154],"2.25":[341.73,41.869,602.048],"2.2917":[361.272,28.063,628.441],"2.3333":[371.207,8.095,668.402],"2.375":[368.977,-4.751,724.813],"2.4167":[355.894,21.63,794.48],"2.4583":[339.136,34.976,828.035],"2.5":[357.807,50.256,912.923],"2.5417":[360.438,49.802,964.66],"2.5833":[345.602,68.738,1024.208],"2.625":[346.528,77.731,1062.68],"2.6667":[318.293,86.727,1085.197],"2.7083":[227.994,78.584,1029.899],"2.75":[199.649,57.571,1055.218],"2.7917":[178.118,54.593,1085.546],"2.8333":[167.785,60.06,1107.271],"2.875":[179.742,64.58,1162.558],"2.9167":[193.648,52.518,1203.69],"2.9583":[185.83,13.781,1239.464],"3.0":[214.098,-2.881,1189.413],"3.0417":[260.274,9.203,1183.108],"3.0833":[270.501,-10.002,1166.525],"3.125":[306.731,-56.931,1126.786],"3.1667":[402.85,-75.199,1063.963],"3.2083":[474.367,-38.623,1034.43],"3.25":[497.284,-23.402,1042.392],"3.2917":[524.162,-46.671,1050.048],"3.3333":[564.54,-69.714,1010.474],"3.375":[631.748,3.671,949.121],"3.4167":[591.086,42.272,899.613],"3.4583":[491.895,72.399,787.196],"3.5":[473.937,40.631,743.537],"3.5417":[503.465,11.316,724.707],"3.5833":[491.261,-34.231,714.165],"3.625":[481.961,-48.231,696.2],"3.6667":[498.483,-70.209,673.934],"3.7083":[520.973,-76.066,651.241],"3.75":[553.35,-78.776,617.895],"3.7917":[552.641,-77.25,616.731],"3.8333":[559.133,-85.334,607.249],"3.875":[563.298,-87.178,603.346],"3.9167":[542.372,-84.902,627.084],"3.9583":[545.942,-84.082,624.356],"4.0":[550.566,-83.324,620.293],"4.0417":[552.398,-83.198,618.482],"4.0833":[553.666,-83.11,617.059],"4.125":[552.311,-83.139,618.294],"4.1667":[548.921,-83.212,621.554],"4.2083":[548.191,-83.222,622.176],"4.25":[548.718,-83.207,621.496],"4.2917":[549.666,-83.187,620.449],"4.3333":[550.676,-83.15,619.323],"4.375":[550.853,-83.13,619.107],"4.4167":[550.724,-83.134,619.171],"4.4583":[550.672,-83.176,619.164],"4.5":[550.797,-83.281,618.915],"4.5417":[550.648,-83.372,618.937],"4.5833":[551.507,-83.654,617.791],"4.625":[553.551,-83.982,615.481],"4.6667":[558.005,-84.603,610.571],"4.7083":[562.226,-85.047,606.023],"4.75":[570.208,-85.602,597.579],"4.7917":[585.076,-86.012,582.041],"4.8333":[595.409,-85.959,571.219],"4.875":[602.021,-85.419,564.025],"4.9167":[602.709,-84.96,563.007],"4.9583":[595.411,-84.104,570.012],"5.0":[588.14,-83.368,577.198],"5.0417":[584.982,-82.884,580.088],"5.0833":[584.925,-82.942,579.952],"5.125":[583.499,-83.366,581.278],"5.1667":[579.67,-83.24,585.068],"5.2083":[571.69,-82.344,593.006],"5.25":[567.513,-81.473,597.25],"5.2917":[583.495,-77.707,584.315],"5.3333":[603.149,-72.875,572.947],"5.375":[646.398,-51.472,549.386],"5.4167":[656.539,-4.217,548.13],"5.4583":[597.373,38.878,504.304],"5.5":[582.115,16.674,487.85],"5.5417":[569.63,0.242,485.361],"5.5833":[558.045,-12.811,488.678],"5.625":[551.177,-19.975,493.144],"5.6667":[542.78,-29.382,502.187],"5.7083":[537.506,-33.581,509.674],"5.75":[534.791,-40.076,522.022],"5.7917":[537.972,-46.9,532.341],"5.8333":[561.564,-66.319,579.669],"5.875":[558.945,-35.176,612.257],"5.9167":[554.523,-20.979,676.732],"5.9583":[541.589,0.159,718.649],"6.0":[548.065,33.195,780.087],"6.0417":[548.586,49.112,820.803],"6.0833":[523.669,79.385,861.075],"6.125":[482.24,88.55,861.287],"6.1667":[495.063,100.495,931.678],"6.2083":[516.845,107.608,988.299],"6.25":[529.526,127.76,1051.066],"6.2917":[534.574,123.929,1065.676],"6.3333":[531.435,115.174,1074.429],"6.375":[562.291,97.023,1104.405],"6.4167":[577.765,95.989,1119.037],"6.4583":[563.26,96.216,1103.852],"6.5":[549.946,96.884,1090.067],"6.5417":[544.331,97.455,1084.109],"6.5833":[542.902,97.485,1082.244],"6.625":[543.856,97.161,1083.13],"6.6667":[544.914,95.617,1084.229],"6.7083":[548.175,95.055,1087.847],"6.75":[551.256,94.69,1091.349],"6.7917":[552.201,94.572,1092.495],"6.8333":[553.079,94.474,1093.62],"6.875":[553.25,94.453,1093.913],"6.9167":[552.86,94.286,1093.547],"6.9583":[551.473,94.113,1092.076],"7.0":[550.061,94.066,1090.61],"7.0417":[548.369,94.081,1088.819],"7.0833":[547.871,94.193,1088.237],"7.125":[547.515,94.439,1087.802],"7.1667":[547.438,94.59,1087.682],"7.2083":[547.629,94.744,1087.809],"7.25":[547.678,94.814,1087.839],"7.2917":[547.791,94.861,1087.958],"7.3333":[548.112,94.843,1088.284],"7.375":[548.615,94.677,1088.818],"7.4167":[548.794,94.612,1089.012],"7.4583":[548.913,94.581,1089.153],"7.5":[548.947,94.586,1089.202],"7.5417":[548.956,94.603,1089.228],"7.5833":[548.808,94.704,1089.094],"7.625":[548.165,95.204,1088.459],"7.6667":[547.674,95.495,1087.993],"7.7083":[546.272,95.591,1086.678],"7.75":[545.019,95.596,1085.523],"7.7917":[545.388,95.659,1085.936],"7.8333":[548.796,96.057,1089.34],"7.875":[551.883,96.364,1092.403],"7.9167":[556.587,96.341,1097.101],"7.9583":[561.087,95.859,1101.618],"8.0":[568.854,95.14,1109.409],"8.0417":[573.052,94.903,1113.6],"8.0833":[578.768,94.659,1119.297],"8.125":[582.504,94.518,1123.018],"8.1667":[588.774,94.254,1129.282],"8.2083":[592.909,94.058,1133.424],"8.25":[597.719,93.858,1138.243],"8.2917":[600.412,93.756,1140.947],"8.3333":[604.288,93.628,1144.829],"8.375":[607.056,93.544,1147.601],"8.4167":[611.456,93.422,1151.996],"8.4583":[613.181,93.367,1153.707],"8.5":[612.227,93.324,1152.698],"8.5417":[609.416,93.327,1149.843],"8.5833":[601.958,93.437,1142.326],"8.625":[595.625,93.572,1135.95],"8.6667":[585.978,93.918,1126.232],"8.7083":[579.778,94.21,1119.982],"8.75":[569.747,94.6,1109.885],"8.7917":[562.081,94.853,1102.174],"8.8333":[551.349,95.357,1091.383],"8.875":[546.302,95.774,1086.308],"8.9167":[541.449,96.488,1081.432],"8.9583":[538.157,97.241,1078.125],"9.0":[536.491,97.714,1076.453],"9.0417":[534.31,98.332,1074.265],"9.0833":[532.982,98.591,1072.939],"9.125":[531.244,98.717,1071.212],"9.1667":[530.26,98.74,1070.239],"9.2083":[528.867,98.689,1068.858],"9.25":[528.032,98.623,1068.037],"9.2917":[527.002,98.531,1067.039],"9.3333":[526.509,98.492,1066.563],"9.375":[525.937,98.396,1066.04],"9.4167":[525.612,98.259,1065.796],"9.4583":[525.566,97.557,1066.188],"9.5":[521.769,95.937,1063.745],"9.5417":[472.373,96.395,1018.854],"9.5833":[446.738,101.096,997.178],"9.625":[428.103,114.041,983.808],"9.6667":[416.536,133.813,973.192],"9.7083":[419.129,168.703,961.17],"9.75":[455.461,186.129,939.335],"9.7917":[486.654,182.689,932.821],"9.8333":[538.321,161.43,930.978],"9.875":[584.141,133.697,970.242],"9.9167":[607.48,149.146,1039.733],"9.9583":[588.48,160.267,1057.877],"10.0":[550.412,178.594,1080.372],"10.0417":[516.011,195.883,1112.604],"10.0833":[492.964,182.288,1193.376],"10.125":[514.724,166.219,1231.342],"10.1667":[554.39,159.105,1293.012],"10.2083":[572.109,164.527,1336.829],"10.25":[573.645,162.345,1389.42],"10.2917":[548.728,151.89,1423.205],"10.3333":[468.368,144.261,1375.819],"10.375":[447.73,198.119,1351.754],"10.4167":[547.49,247.204,1238.05],"10.4583":[607.812,223.806,1157.316],"10.5":[611.135,201.98,1109.795],"10.5417":[592.357,206.942,1098.091],"10.5833":[540.84,218.477,1105.811],"10.625":[469.224,215.639,1151.075],"10.6667":[467.337,153.324,1216.743],"10.7083":[537.787,142.858,1273.63],"10.75":[603.63,156.985,1359.673],"10.7917":[589.792,181.655,1411.137],"10.8333":[554.258,178.002,1444.571],"10.875":[535.079,171.691,1464.407],"10.9167":[532.5,160.992,1487.061],"10.9583":[545.367,173.632,1508.84],"11.0":[593.624,178.207,1513.671],"11.0417":[629.085,176.64,1514.053],"11.0833":[650.709,135.36,1467.819],"11.125":[515.56,129.652,1321.036],"11.1667":[472.996,166.8,1281.869],"11.2083":[468.504,230.015,1241.263],"11.25":[529.121,249.247,1170.985],"11.2917":[588.911,237.2,1108.789],"11.3333":[593.204,229.094,1097.749],"11.375":[598.991,247.314,1064.001],"11.4167":[548.631,280.935,1096.106],"11.4583":[581.288,331.721,1049.548],"11.5":[598.193,363.521,1045.601],"11.5417":[677.177,401.252,1086.778],"11.5833":[734.03,409.493,1124.681],"11.625":[782.787,376.613,1190.4],"11.6667":[757.707,362.11,1230.071],"11.7083":[708.203,353.281,1279.561],"11.75":[698.822,350.288,1313.103],"11.7917":[716.954,338.063,1335.919],"11.8333":[749.845,343.363,1333.486],"11.875":[785.096,347.343,1328.512],"11.9167":[813.178,359.453,1292.297],"11.9583":[808.459,385.199,1257.666],"12.0":[743.58,405.711,1175.056],"12.0417":[698.7,392.185,1134.185],"12.0833":[678.809,356.583,1091.721],"12.125":[684.046,310.87,1052.825],"12.1667":[651.729,297.237,1047.603],"12.2083":[650.951,283.925,1015.971],"12.25":[737.676,285.106,884.215],"12.2917":[739.684,293.006,853.16],"12.3333":[731.154,295.255,817.582],"12.375":[727.285,288.664,791.238],"12.4167":[722.716,296.612,754.949],"12.4583":[715.236,308.593,738.924],"12.5":[716.335,328.37,717.51],"12.5417":[716.896,336.375,715.299],"12.5833":[710.667,362.133,773.268],"12.625":[703.541,370.387,787.654],"12.6667":[702.552,380.365,800.331],"12.7083":[706.268,388.207,803.967],"12.75":[709.464,398.168,807.365],"12.7917":[708.417,402.73,808.159],"12.8333":[705.583,404.946,807.742],"12.875":[704.509,404.347,807.885],"12.9167":[703.831,403.308,808.274],"12.9583":[703.974,402.781,808.84],"13.0":[704.3,402.11,809.508],"13.0417":[704.516,401.838,809.758],"13.0833":[704.724,401.831,809.772],"13.125":[704.901,401.893,809.828],"13.1667":[705.031,401.931,809.915],"13.2083":[705.129,401.999,810.008],"13.25":[705.153,402.047,810.042],"13.2917":[705.153,402.133,810.046],"13.3333":[705.153,402.191,810.042],"13.375":[705.141,402.276,810.031],"13.4167":[705.141,402.304,810.031]},"position":{"0.0":[6.649,52.114,-16.888],"0.0417":[7.936,53.553,-17.189],"0.0833":[7.435,55.81,-16.384],"0.125":[6.578,58.185,-15.464],"0.1667":[6.247,60.031,-16.809],"0.2083":[4.81,60.332,-18.803],"0.25":[0.97,58.257,-18.254],"0.2917":[-0.613,56.501,-17.646],"0.3333":[-2.631,56.153,-16.333],"0.375":[-4.374,56.062,-15.417],"0.4167":[-6.552,55.692,-14.855],"0.4583":[-7.242,55.524,-14.559],"0.5":[-6.481,56.088,-13.701],"0.5417":[-6.639,53.752,-14.273],"0.5833":[-7.626,50.702,-15.524],"0.625":[-8.996,49.505,-15.631],"0.6667":[-9.338,49.895,-15.663],"0.7083":[-9.464,50.971,-16.837],"0.75":[-9.454,51.387,-18.036],"0.7917":[-7.44,52.23,-20.242],"0.8333":[-5.045,52.241,-21.469],"0.875":[-1.758,51.716,-21.966],"0.9167":[-1.086,51.472,-21.294],"0.9583":[-1.564,51.783,-20.56],"1.0":[-1.419,51.258,-20.893],"1.0417":[0.017,50.795,-19.511],"1.0833":[0.872,50.157,-19.5],"1.125":[1.031,48.822,-20.285],"1.1667":[1.05,48.498,-20.603],"1.2083":[1.609,48.091,-19.957],"1.25":[1.654,48.331,-18.685],"1.2917":[1.308,49.947,-17.003],"1.3333":[0.962,51.125,-17.456],"1.375":[-0.934,53.475,-17.083],"1.4167":[-2.315,55.483,-17.311],"1.4583":[-3.067,56.171,-18.193],"1.5":[-5.022,56.031,-19.094],"1.5417":[-6.482,55.444,-18.283],"1.5833":[-8.094,55.555,-16.499],"1.625":[-8.617,55.679,-16.122],"1.6667":[-9.251,55.623,-15.472],"1.7083":[-8.795,55.418,-16.301],"1.75":[-8.575,53.854,-18.049],"1.7917":[-8.085,53.427,-18.805],"1.8333":[-7.375,53.02,-19.639],"1.875":[-6.897,52.698,-19.857],"1.9167":[-5.779,53.01,-19.713],"1.9583":[-4.845,54.053,-19.276],"2.0":[-3.87,55.189,-17.688],"2.0417":[-4.251,56.002,-17.906],"2.0833":[-4.506,55.396,-17.795],"2.125":[-4.481,53.879,-18.058],"2.1667":[-3.946,52.206,-17.528],"2.2083":[-2.986,49.941,-15.811],"2.25":[-3.438,46.998,-15.68],"2.2917":[-4.76,45.106,-16.438],"2.3333":[-7.3,45.497,-18.726],"2.375":[-9.395,49.374,-20.423],"2.4167":[-6.755,56.719,-19.828],"2.4583":[-6.788,57.418,-18.575],"2.5":[-11.808,59.357,-19.995],"2.5417":[-14.877,65.267,-20.223],"2.5833":[-12.056,74.994,-19.859],"2.625":[-7.511,77.352,-19.879],"2.6667":[-0.574,75.064,-19.639],"2.7083":[1.846,71.054,-19.032],"2.75":[1.298,64.499,-18.901],"2.7917":[-1.974,60.868,-19.994],"2.8333":[-4.066,60.468,-20.451],"2.875":[-5.221,61.052,-19.925],"2.9167":[-3.973,60.568,-19.296],"2.9583":[0.245,55.575,-19.583],"3.0":[-5.436,52.983,-15.174],"3.0417":[-6.652,51.547,-10.577],"3.0833":[-7.083,51.538,-8.906],"3.125":[-7.395,53.233,-8.906],"3.1667":[-6.947,55.424,-10.704],"3.2083":[-4.487,57.716,-14.558],"3.25":[-2.276,56.737,-16.475],"3.2917":[1.529,54.913,-16.185],"3.3333":[3.627,54.216,-13.935],"3.375":[4.199,54.941,-10.772],"3.4167":[3.921,56.55,-11.908],"3.4583":[3.652,57.344,-13.742],"3.5":[2.464,57.028,-15.642],"3.5417":[2.509,55.556,-16.61],"3.5833":[4.685,57.251,-17.518],"3.625":[5.515,59.429,-17.61],"3.6667":[5.186,59.722,-15.825],"3.7083":[4.76,59.181,-15.372],"3.75":[4.816,56.253,-14.579],"3.7917":[5.282,54.115,-14.134],"3.8333":[5.723,54.642,-12.442],"3.875":[5.954,55.452,-12.067],"3.9167":[6.199,56.498,-12.273],"3.9583":[6.193,56.744,-12.374],"4.0":[6.134,56.947,-12.478],"4.0417":[6.081,57.007,-12.509],"4.0833":[6.003,57.047,-12.533],"4.125":[5.963,57.044,-12.542],"4.1667":[5.931,57.014,-12.549],"4.2083":[5.915,56.988,-12.546],"4.25":[5.899,56.956,-12.542],"4.2917":[5.891,56.94,-12.54],"4.3333":[5.887,56.914,-12.538],"4.375":[5.887,56.901,-12.538],"4.4167":[5.89,56.883,-12.534],"4.4583":[5.89,56.877,-12.532],"4.5":[5.89,56.867,-12.525],"4.5417":[5.89,56.861,-12.52],"4.5833":[5.887,56.844,-12.5],"4.625":[5.887,56.831,-12.475],"4.6667":[5.876,56.796,-12.425],"4.7083":[5.858,56.76,-12.385],"4.75":[5.819,56.696,-12.33],"4.7917":[5.747,56.567,-12.247],"4.8333":[5.697,56.461,-12.196],"4.875":[5.649,56.307,-12.162],"4.9167":[5.631,56.208,-12.156],"4.9583":[5.653,56.095,-12.185],"5.0":[5.705,56.041,-12.226],"5.0417":[5.817,55.986,-12.224],"5.0833":[5.92,55.973,-12.2],"5.125":[6.095,55.978,-12.187],"5.1667":[6.235,56.007,-12.203],"5.2083":[6.463,56.079,-12.258],"5.25":[6.685,56.153,-12.296],"5.2917":[9.35,56.911,-11.335],"5.3333":[13.826,57.521,-10.841],"5.375":[23.142,56.007,-9.555],"5.4167":[26.055,54.702,-7.7],"5.4583":[27.964,50.4,-13.697],"5.5":[27.515,44.935,-15.543],"5.5417":[23.654,43.366,-16.972],"5.5833":[19.054,42.976,-18.005],"5.625":[16.061,43.052,-18.479],"5.6667":[12.42,43.194,-18.879],"5.7083":[10.798,43.364,-18.908],"5.75":[8.707,44.305,-18.717],"5.7917":[7.021,45.828,-18.524],"5.8333":[2.721,50.949,-18.391],"5.875":[0.837,54.078,-18.802],"5.9167":[-3.75,56.532,-19.335],"5.9583":[-8.005,59.134,-20.702],"6.0":[-13.282,65.7,-20.435],"6.0417":[-13.916,71.141,-20.609],"6.0833":[-8.837,77.622,-21.124],"6.125":[-3.215,77.324,-20.603],"6.1667":[1.422,70.934,-19.848],"6.2083":[1.42,63.82,-19.982],"6.25":[-1.945,52.209,-20.059],"6.2917":[3.018,49.118,-18.599],"6.3333":[3.011,47.783,-13.835],"6.375":[1.717,47.133,-12.45],"6.4167":[0.156,47.178,-12.851],"6.4583":[-0.358,47.472,-13.449],"6.5":[-0.687,48.169,-13.894],"6.5417":[-0.73,48.617,-13.978],"6.5833":[-0.568,49.135,-13.93],"6.625":[-0.438,49.303,-13.85],"6.6667":[-0.219,49.45,-13.634],"6.7083":[-0.094,49.42,-13.504],"6.75":[-0.015,49.308,-13.429],"6.7917":[0.004,49.221,-13.424],"6.8333":[-0.002,49.117,-13.433],"6.875":[-0.018,49.061,-13.452],"6.9167":[-0.05,49.005,-13.473],"6.9583":[-0.078,48.983,-13.493],"7.0":[-0.094,48.987,-13.505],"7.0417":[-0.118,49.005,-13.523],"7.0833":[-0.126,49.025,-13.535],"7.125":[-0.129,49.045,-13.546],"7.1667":[-0.126,49.058,-13.55],"7.2083":[-0.118,49.074,-13.549],"7.25":[-0.107,49.084,-13.543],"7.2917":[-0.091,49.084,-13.526],"7.3333":[-0.077,49.077,-13.514],"7.375":[-0.062,49.057,-13.5],"7.4167":[-0.054,49.043,-13.492],"7.4583":[-0.044,49.018,-13.484],"7.5":[-0.037,48.999,-13.477],"7.5417":[-0.028,48.97,-13.466],"7.5833":[-0.023,48.931,-13.452],"7.625":[-0.007,48.838,-13.42],"7.6667":[-0.005,48.716,-13.372],"7.7083":[-0.024,48.439,-13.246],"7.75":[-0.052,48.11,-13.099],"7.7917":[-0.068,47.872,-13.006],"7.8333":[-0.087,47.459,-12.881],"7.875":[-0.098,47.163,-12.802],"7.9167":[-0.115,46.743,-12.678],"7.9583":[-0.128,46.47,-12.586],"8.0":[-0.145,46.151,-12.477],"8.0417":[-0.152,46.018,-12.435],"8.0833":[-0.161,45.861,-12.393],"8.125":[-0.167,45.772,-12.369],"8.1667":[-0.179,45.668,-12.329],"8.2083":[-0.187,45.633,-12.307],"8.25":[-0.203,45.607,-12.28],"8.2917":[-0.211,45.597,-12.262],"8.3333":[-0.223,45.594,-12.24],"8.375":[-0.231,45.594,-12.222],"8.4167":[-0.24,45.607,-12.193],"8.4583":[-0.245,45.628,-12.172],"8.5":[-0.25,45.687,-12.133],"8.5417":[-0.25,45.747,-12.108],"8.5833":[-0.249,45.863,-12.073],"8.625":[-0.244,45.96,-12.053],"8.6667":[-0.232,46.117,-12.03],"8.7083":[-0.223,46.234,-12.017],"8.75":[-0.206,46.45,-11.993],"8.7917":[-0.193,46.623,-11.97],"8.8333":[-0.173,46.902,-11.941],"8.875":[-0.159,47.087,-11.937],"8.9167":[-0.138,47.369,-11.958],"8.9583":[-0.116,47.653,-11.996],"9.0":[-0.101,47.839,-12.024],"9.0417":[-0.079,48.097,-12.058],"9.0833":[-0.063,48.242,-12.072],"9.125":[-0.037,48.414,-12.082],"9.1667":[-0.026,48.5,-12.087],"9.2083":[-0.013,48.609,-12.09],"9.25":[-0.005,48.665,-12.092],"9.2917":[0.007,48.736,-12.099],"9.3333":[0.013,48.771,-12.102],"9.375":[0.023,48.81,-12.115],"9.4167":[0.033,48.835,-12.14],"9.4583":[0.068,48.87,-12.292],"9.5":[0.145,48.895,-12.624],"9.5417":[0.297,48.889,-13.299],"9.5833":[0.402,48.888,-13.771],"9.625":[0.484,49.064,-14.286],"9.6667":[0.33,49.323,-14.189],"9.7083":[-0.28,50.715,-14.509],"9.75":[-2.163,51.834,-15.745],"9.7917":[-2.786,52.64,-15.22],"9.8333":[-3.895,53.048,-16.181],"9.875":[-4.699,53.186,-17.016],"9.9167":[-4.406,51.851,-18.667],"9.9583":[-4.991,49.691,-19.087],"10.0":[-7.357,47.122,-17.716],"10.0417":[-9.414,47.209,-15.547],"10.0833":[-11.272,50.243,-14.199],"10.125":[-11.438,52.246,-15.596],"10.1667":[-8.354,56.243,-17.17],"10.2083":[-7.634,56.432,-18.687],"10.25":[-4.604,55.262,-20.666],"10.2917":[-1.539,50.83,-20.546],"10.3333":[3.125,49.301,-16.939],"10.375":[5.28,51.888,-15.158],"10.4167":[5.03,55.973,-16.928],"10.4583":[4.295,57.071,-17.856],"10.5":[3.648,57.709,-19.179],"10.5417":[2.24,57.677,-19.822],"10.5833":[-1.978,55.399,-20.85],"10.625":[-5.198,52.769,-19.238],"10.6667":[-7.877,53.32,-15.48],"10.7083":[-8.261,54.23,-16.489],"10.75":[-6.835,56.246,-17.824],"10.7917":[-6.139,55.852,-18.015],"10.8333":[-5.376,55.146,-19.217],"10.875":[-4.377,53.892,-19.811],"10.9167":[-3.937,53.3,-20.281],"10.9583":[-3.33,53.242,-20.413],"11.0":[-2.22,52.923,-21.595],"11.0417":[-1.234,53.787,-21.443],"11.0833":[-1.317,55.027,-20.374],"11.125":[-2.539,55.701,-18.764],"11.1667":[-3.388,56.056,-18.84],"11.2083":[-3.981,56.388,-19.824],"11.25":[-4.031,56.402,-19.7],"11.2917":[-5.439,56.535,-19.69],"11.3333":[-6.221,56.182,-19.837],"11.375":[-7.488,55.271,-20.344],"11.4167":[-8.521,54.464,-20.031],"11.4583":[-8.918,54.06,-18.773],"11.5":[-9.248,54.348,-17.785],"11.5417":[-9.252,56.096,-17.368],"11.5833":[-9.271,57.017,-18.073],"11.625":[-8.398,56.896,-20.885],"11.6667":[-8.145,55.76,-21.126],"11.7083":[-7.863,55.111,-21.366],"11.75":[-7.918,54.775,-21.777],"11.7917":[-7.314,54.888,-21.627],"11.8333":[-7.289,55.13,-21.669],"11.875":[-7.284,55.674,-21.634],"11.9167":[-7.658,55.465,-21.456],"11.9583":[-8.061,54.452,-21.552],"12.0":[-8.795,52.413,-20.994],"12.0417":[-8.685,50.465,-20.91],"12.0833":[-5.464,50.114,-21.729],"12.125":[-3.1,52.488,-20.356],"12.1667":[-2.131,55.385,-20.071],"12.2083":[-1.205,57.539,-20.604],"12.25":[2.007,59.776,-21.561],"12.2917":[4.216,61.58,-21.794],"12.3333":[5.935,65.675,-21.839],"12.375":[5.176,68.564,-21.534],"12.4167":[2.11,71.007,-21.17],"12.4583":[-0.352,70.372,-20.615],"12.5":[-3.331,64.271,-20.509],"12.5417":[-0.163,59.872,-20.261],"12.5833":[7.842,52.955,-17.936],"12.625":[7.81,51.075,-16.149],"12.6667":[5.92,50.33,-15.331],"12.7083":[5.25,50.582,-16.096],"12.75":[4.992,51.46,-16.777],"12.7917":[5.074,51.948,-16.785],"12.8333":[5.272,52.232,-16.663],"12.875":[5.348,52.196,-16.598],"12.9167":[5.401,52.075,-16.546],"12.9583":[5.396,52.001,-16.548],"13.0":[5.368,51.928,-16.564],"13.0417":[5.348,51.904,-16.578],"13.0833":[5.331,51.911,-16.592],"13.125":[5.324,51.919,-16.602],"13.1667":[5.323,51.925,-16.606],"13.2083":[5.323,51.932,-16.608],"13.25":[5.323,51.934,-16.608],"13.2917":[5.328,51.936,-16.605],"13.3333":[5.328,51.936,-16.604],"13.375":[5.331,51.938,-16.603],"13.4167":[5.331,51.938,-16.603]}},"camera":{"rotation":{"0.0":[-0.019,0.004,0.003],"0.0417":[-0.076,0.019,0.013],"0.0833":[-0.198,0.051,0.034],"0.125":[-0.288,0.076,0.051],"0.1667":[-0.378,0.117,0.076],"0.2083":[-0.402,0.142,0.092],"0.25":[-0.337,0.179,0.115],"0.2917":[-0.239,0.21,0.129],"0.3333":[-0.06,0.248,0.143],"0.375":[0.095,0.268,0.147],"0.4167":[0.343,0.295,0.142],"0.4583":[0.467,0.303,0.131],"0.5":[0.537,0.313,0.097],"0.5417":[0.591,0.322,0.061],"0.5833":[0.658,0.335,-0.004],"0.625":[0.699,0.34,-0.072],"0.6667":[0.69,0.34,-0.113],"0.7083":[0.609,0.313,-0.162],"0.75":[0.527,0.253,-0.182],"0.7917":[0.332,0.11,-0.203],"0.8333":[0.213,0.03,-0.212],"0.875":[0.079,-0.052,-0.136],"0.9167":[-0.001,-0.098,-0.03],"0.9583":[-0.068,-0.151,0.145],"1.0":[-0.074,-0.18,0.228],"1.0417":[-0.068,-0.213,0.251],"1.0833":[-0.013,-0.217,0.183],"1.125":[0.129,-0.214,0.006],"1.1667":[0.242,-0.21,-0.115],"1.2083":[0.369,-0.203,-0.235],"1.25":[0.421,-0.195,-0.263],"1.2917":[0.376,-0.177,-0.241],"1.3333":[0.249,-0.159,-0.202],"1.375":[0.032,-0.132,-0.12],"1.4167":[-0.071,-0.082,-0.014],"1.4583":[-0.044,-0.02,0.063],"1.5":[0.089,0.097,0.177],"1.5417":[0.177,0.166,0.243],"1.5833":[0.319,0.256,0.279],"1.625":[0.398,0.291,0.202],"1.6667":[0.342,0.289,0.038],"1.7083":[0.213,0.276,-0.063],"1.75":[0.103,0.233,-0.164],"1.7917":[0.072,0.195,-0.212],"1.8333":[0.042,0.135,-0.265],"1.875":[0.036,0.096,-0.281],"1.9167":[0.03,0.049,-0.281],"1.9583":[0.041,0.033,-0.208],"2.0":[0.085,0.017,-0.03],"2.0417":[0.129,0.011,0.099],"2.0833":[0.183,0.008,0.227],"2.125":[0.237,0.01,0.227],"2.1667":[0.411,0.019,0.163],"2.2083":[0.564,0.028,0.099],"2.25":[0.75,0.048,-0.015],"2.2917":[0.788,0.065,-0.08],"2.3333":[0.1,0.164,-0.18],"2.375":[-0.69,0.267,-0.214],"2.4167":[-2.359,0.312,-0.182],"2.4583":[-3.646,0.301,-0.138],"2.5":[-5.634,0.266,-0.066],"2.5417":[-6.758,0.229,-0.027],"2.5833":[-7.735,0.16,0],"2.625":[-7.986,0.109,-0.015],"2.6667":[-8.22,0.03,-0.082],"2.7083":[-8.204,-0.017,-0.14],"2.75":[-7.832,-0.077,-0.224],"2.7917":[-6.894,-0.117,-0.287],"2.8333":[-5.748,-0.144,-0.323],"2.875":[-3.584,-0.169,-0.373],"2.9167":[-2.229,-0.165,-0.403],"2.9583":[-0.268,-0.118,-0.427],"3.0":[0.783,0.01,-0.358],"3.0417":[1.701,0.423,0.111],"3.0833":[1.467,0.455,0.232],"3.125":[0.708,0.456,0.316],"3.1667":[0.278,0.44,0.296],"3.2083":[-0.18,0.272,0.098],"3.25":[-0.086,0.106,-0.063],"3.2917":[0.224,-0.163,-0.287],"3.3333":[0.392,-0.312,-0.241],"3.375":[0.568,-0.446,0.202],"3.4167":[0.48,-0.455,0.313],"3.4583":[0.138,-0.401,0.425],"3.5":[-0.09,-0.336,0.456],"3.5417":[-0.282,-0.241,0.424],"3.5833":[-0.439,-0.147,0.28],"3.625":[-0.51,-0.086,0.155],"3.6667":[-0.555,-0.001,-0.032],"3.7083":[-0.249,0.051,-0.118],"3.75":[0.677,0.115,-0.128],"3.7917":[0.983,0.131,-0.037],"3.8333":[0.67,0.022,0.354],"3.875":[0.249,-0.087,0.276],"3.9167":[0.031,-0.06,0.036],"3.9583":[-0.096,-0.024,-0.066],"4.0":[-0.245,0.036,-0.091],"4.0417":[-0.238,0.039,-0.032],"4.0833":[-0.223,0.041,0.002],"4.125":[-0.208,0.041,0.012],"4.1667":[-0.179,0.038,0.018],"4.2083":[-0.162,0.037,0.02],"4.25":[-0.129,0.035,0.022],"4.2917":[-0.104,0.033,0.023],"4.3333":[-0.071,0.03,0.024],"4.375":[-0.046,0.028,0.024],"4.4167":[-0.014,0.025,0.024],"4.4583":[0.011,0.022,0.024],"4.5":[0.052,0.018,0.024],"4.5417":[0.077,0.015,0.025],"4.5833":[0.118,0.013,0.026],"4.625":[0.143,0.01,0.028],"4.6667":[0.176,0.007,0.031],"4.7083":[0.198,0.003,0.036],"4.75":[0.243,0.003,0.048],"4.7917":[0.31,0,0.09],"4.8333":[0.37,0.016,0.137],"4.875":[0.475,0.082,0.215],"4.9167":[0.542,0.147,0.258],"4.9583":[0.634,0.264,0.298],"5.0":[0.676,0.395,0.323],"5.0417":[0.712,0.639,0.357],"5.0833":[0.733,0.827,0.376],"5.125":[0.764,1.109,0.393],"5.1667":[0.779,1.268,0.396],"5.2083":[0.794,1.439,0.383],"5.25":[0.794,1.494,0.362],"5.2917":[0.663,1.521,0.278],"5.3333":[0.468,1.495,0.182],"5.375":[0.043,1.185,0.005],"5.4167":[-0.281,0.651,-0.105],"5.4583":[-0.627,-0.181,-0.233],"5.5":[-0.703,-0.609,-0.272],"5.5417":[-0.624,-0.836,-0.235],"5.5833":[-0.484,-0.991,-0.152],"5.625":[-0.318,-1.056,-0.091],"5.6667":[0.023,-1.109,-0.017],"5.7083":[0.225,-1.12,-0.001],"5.75":[0.414,-1.108,0],"5.7917":[0.439,-1.062,0],"5.8333":[0.27,-0.877,0.01],"5.875":[-0.559,-0.645,0.075],"5.9167":[-2.701,-0.187,0.232],"5.9583":[-4.365,0.144,0.335],"6.0":[-6.584,0.594,0.409],"6.0417":[-7.822,0.835,0.4],"6.0833":[-8.945,1.047,0.342],"6.125":[-9.204,1.071,0.285],"6.1667":[-9.105,0.952,0.191],"6.2083":[-8.431,0.78,0.13],"6.25":[-5.049,0.318,0.035],"6.2917":[-2.909,0.044,-0.038],"6.3333":[0.188,-0.313,-0.16],"6.375":[1.385,-0.329,-0.221],"6.4167":[1.593,-0.165,-0.081],"6.4583":[1.592,-0.038,0.036],"6.5":[1.318,0.096,0.075],"6.5417":[1.011,0.119,0.092],"6.5833":[0.539,0.113,0.105],"6.625":[0.232,0.091,0.075],"6.6667":[-0.205,0.05,0],"6.7083":[-0.335,0.016,-0.022],"6.75":[-0.37,-0.031,-0.042],"6.7917":[-0.347,-0.05,-0.049],"6.8333":[-0.209,-0.049,-0.048],"6.875":[-0.094,-0.039,-0.043],"6.9167":[0.052,-0.009,-0.025],"6.9583":[0.126,0.009,0],"7.0":[0.118,0.019,0.009],"7.0417":[0.085,0.029,0.016],"7.0833":[0.058,0.032,0.017],"7.125":[0.008,0.029,0.017],"7.1667":[-0.017,0.024,0.017],"7.2083":[-0.05,0.016,0.008],"7.25":[-0.067,0.011,0.001],"7.2917":[-0.067,0.006,0],"7.3333":[-0.065,0.003,0],"7.375":[-0.045,0,0],"7.4167":[-0.01,-0.002,0],"7.4583":[0.038,-0.004,0],"7.5":[0.052,-0.004,0],"7.5417":[0.059,-0.005,0],"7.5833":[0.038,-0.005,0],"7.625":[-0.042,-0.004,0],"7.6667":[-0.127,-0.003,0],"7.7083":[-0.317,-0.001,0],"7.75":[-0.651,0.001,0],"7.7917":[-0.979,0.004,0],"7.8333":[-1.594,0.008,0],"7.875":[-2.065,0.012,0],"7.9167":[-2.772,0.02,0],"7.9583":[-3.095,0.029,0],"8.0":[-3.462,0.048,0],"8.0417":[-3.663,0.062,0],"8.0833":[-3.899,0.089,0],"8.125":[-4.04,0.109,0],"8.1667":[-4.208,0.136,0],"8.2083":[-4.314,0.147,0],"8.25":[-4.42,0.162,0],"8.2917":[-4.465,0.172,0],"8.3333":[-4.482,0.184,0],"8.375":[-4.474,0.192,0],"8.4167":[-4.431,0.202,0],"8.4583":[-4.389,0.208,0],"8.5":[-4.31,0.217,0],"8.5417":[-4.225,0.221,0],"8.5833":[-4.03,0.228,0],"8.625":[-3.854,0.232,0],"8.6667":[-3.545,0.235,0],"8.7083":[-3.312,0.235,0],"8.75":[-2.941,0.234,0],"8.7917":[-2.675,0.223,0],"8.8333":[-2.263,0.192,0],"8.875":[-1.981,0.162,0],"8.9167":[-1.557,0.111,0],"8.9583":[-1.161,0.058,0],"9.0":[-0.913,0.025,0],"9.0417":[-0.574,-0.019,0],"9.0833":[-0.383,-0.039,0],"9.125":[-0.16,-0.064,0],"9.1667":[-0.038,-0.078,0],"9.2083":[0.118,-0.097,0],"9.25":[0.222,-0.109,0],"9.2917":[0.349,-0.123,0],"9.3333":[0.43,-0.13,0],"9.375":[0.545,-0.139,0],"9.4167":[0.615,-0.142,0],"9.4583":[0.718,-0.147,0],"9.5":[0.773,-0.147,0],"9.5417":[0.851,-0.145,0],"9.5833":[0.895,-0.143,0],"9.625":[0.939,-0.137,0],"9.6667":[0.95,-0.13,0],"9.7083":[0.973,-0.114,0],"9.75":[0.98,-0.084,0],"9.7917":[0.973,-0.065,0],"9.8333":[0.96,-0.007,0.002],"9.875":[0.946,0.042,0.005],"9.9167":[0.911,0.119,0.011],"9.9583":[0.884,0.178,0.014],"10.0":[0.842,0.245,0.021],"10.0417":[0.816,0.283,0.026],"10.0833":[0.771,0.313,0.031],"10.125":[0.726,0.316,0.035],"10.1667":[0.432,0.3,0.038],"10.2083":[0.22,0.288,0.041],"10.25":[-0.001,0.241,0.044],"10.2917":[0.061,0.098,-0.01],"10.3333":[0.257,-0.137,-0.189],"10.375":[0.318,-0.212,-0.266],"10.4167":[0.214,-0.229,-0.282],"10.4583":[0.116,-0.196,-0.287],"10.5":[0.026,-0.055,-0.292],"10.5417":[0.058,0.077,-0.275],"10.5833":[0.156,0.235,-0.18],"10.625":[0.222,0.294,0.009],"10.6667":[0.288,0.333,0.241],"10.7083":[0.255,0.34,0.224],"10.75":[0.146,0.34,0.155],"10.7917":[0.067,0.33,0.092],"10.8333":[0.001,0.302,-0.002],"10.875":[-0.003,0.227,-0.056],"10.9167":[0.026,0.048,-0.14],"10.9583":[0.067,0.019,-0.174],"11.0":[0.144,-0.004,-0.13],"11.0417":[0.186,-0.011,-0.042],"11.0833":[0.211,-0.022,0.13],"11.125":[0.186,-0.027,0.231],"11.1667":[0.161,-0.028,0.17],"11.2083":[0.103,-0.025,-0.022],"11.25":[0.07,-0.022,-0.083],"11.2917":[0.042,-0.013,-0.044],"11.3333":[0.053,0.001,0.005],"11.375":[0.109,0.043,0.079],"11.4167":[0.164,0.071,0.145],"11.4583":[0.253,0.113,0.202],"11.5":[0.286,0.141,0.194],"11.5417":[0.286,0.184,0.071],"11.5833":[0.265,0.205,-0.001],"11.625":[0.143,0.229,-0.047],"11.6667":[0.033,0.238,-0.064],"11.7083":[-0.012,0.226,-0.085],"11.75":[-0.001,0.198,-0.093],"11.7917":[0.033,0.165,-0.081],"11.8333":[0.129,0.159,-0.055],"11.875":[0.349,0.163,0.005],"11.9167":[0.59,0.177,0.075],"11.9583":[0.739,0.188,0.118],"12.0":[0.902,0.203,0.162],"12.0417":[0.937,0.206,0.171],"12.0833":[0.891,0.193,0.076],"12.125":[0.739,0.172,-0.019],"12.1667":[0.098,0.138,-0.162],"12.2083":[-0.474,0.124,-0.211],"12.25":[-1.382,0.117,-0.171],"12.2917":[-2.015,0.12,-0.115],"12.3333":[-2.907,0.132,-0.025],"12.375":[-3.4,0.142,0.022],"12.4167":[-3.7,0.156,0.085],"12.4583":[-3.399,0.161,0.123],"12.5":[-2.294,0.156,0.161],"12.5417":[-1.245,0.065,0.158],"12.5833":[0.21,-0.141,0.114],"12.625":[0.411,-0.124,0.077],"12.6667":[0.556,-0.061,0.017],"12.7083":[0.532,-0.031,-0.019],"12.75":[0.198,0.007,-0.076],"12.7917":[-0.002,0.016,-0.109],"12.8333":[-0.105,0.005,-0.15],"12.875":[-0.111,-0.004,-0.161],"12.9167":[-0.085,-0.009,-0.144],"12.9583":[-0.052,-0.008,-0.124],"13.0":[-0.002,-0.006,-0.094],"13.0417":[0.023,-0.004,-0.068],"13.0833":[0.023,-0.001,-0.038],"13.125":[0.015,0.001,-0.008],"13.1667":[0.001,0.001,0.007],"13.2083":[-0.01,0.001,0.014],"13.25":[-0.01,0.001,0.014],"13.2917":[-0.004,0.001,0.009],"13.3333":[-0.004,0.001,0.004],"13.375":[0.001,0.001,0],"13.4167":[0.001,0.001,0]}},"angel":{"scale":0}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_inspect_1"}}},"inspect_angel":{"loop":true,"animation_length":13.4094,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-13.198,170.251,-58.765],"0.0417":[-11.668,166.596,-54.377],"0.0833":[-18.795,163.012,-51.695],"0.125":[-34.618,163.175,-54.575],"0.1667":[-50.873,157.486,-59.261],"0.2083":[-57.243,152.83,-62.523],"0.25":[-57.878,152.176,-63.045],"0.2917":[-57.243,152.83,-62.523],"0.3333":[-58.457,153.635,-62.186],"0.375":[-59.291,154.198,-61.935],"0.4167":[-60.576,155.071,-61.525],"0.4583":[-61.454,155.667,-61.231],"0.5":[-62.798,156.573,-60.764],"0.5417":[-63.711,157.178,-60.438],"0.5833":[-65.102,158.081,-59.932],"0.625":[-66.516,158.967,-59.413],"0.6667":[-67.469,159.541,-59.063],"0.7083":[-68.909,160.372,-58.541],"0.75":[-69.874,160.9,-58.196],"0.7917":[-71.327,161.646,-57.695],"0.8333":[-72.332,162.09,-57.391],"0.875":[-74.177,162.514,-57.143],"0.9167":[-75.458,162.689,-57.063],"0.9583":[-77.088,162.918,-56.949],"1.0":[-77.419,162.849,-56.969],"1.0417":[-76.028,163.314,-56.813],"1.0833":[-74.939,163.721,-56.683],"1.125":[-73.2,164.378,-56.491],"1.1667":[-71.936,164.865,-56.363],"1.2083":[-69.822,165.703,-56.167],"1.25":[-68.233,166.352,-56.038],"1.2917":[-65.013,167.656,-55.84],"1.3333":[-62.442,168.713,-55.735],"1.375":[-58.83,170.303,-55.646],"1.4167":[-56.656,171.553,-55.574],"1.4583":[-56.767,172.053,-55.447],"1.5":[-57.541,172.642,-55.2],"1.5417":[-57.67,173.007,-55.047],"1.5833":[-57.928,173.677,-54.623],"1.625":[-58.078,174.052,-54.353],"1.6667":[-58.322,174.649,-53.973],"1.7083":[-58.541,175.205,-53.674],"1.75":[-58.873,176.055,-53.245],"1.7917":[-59.098,176.63,-52.963],"1.8333":[-59.444,177.498,-52.531],"1.875":[-59.684,178.077,-52.227],"1.9167":[-60.06,178.939,-51.733],"1.9583":[-60.326,179.507,-51.369],"2.0":[-60.751,180.34,-50.754],"2.0417":[-61.056,180.878,-50.29],"2.0833":[-61.18,181.42,-49.304],"2.125":[-60.62,181.345,-48.233],"2.1667":[-59.434,181.009,-46.327],"2.2083":[-58.85,180.904,-45.085],"2.25":[-59.053,181.335,-43.669],"2.2917":[-60.363,182.245,-43.238],"2.3333":[-64.837,184.995,-43.622],"2.375":[-92.628,202.773,-49.417],"2.4167":[-104.086,210.173,-49.238],"2.4583":[-104.796,210.601,-48.948],"2.5":[-104.681,210.504,-48.432],"2.5417":[-103.914,210.02,-48.102],"2.5833":[-101.916,208.789,-47.713],"2.625":[-100.133,207.699,-47.565],"2.6667":[-96.988,205.763,-47.578],"2.7083":[-94.698,204.325,-47.788],"2.75":[-91.176,202.025,-48.497],"2.7917":[-87.798,199.637,-49.818],"2.8333":[-78.447,191.722,-61.848],"2.875":[-70.703,170.706,-40.043],"2.9167":[-56.754,166.176,-16.02],"2.9583":[-74.991,198.413,-8.971],"3.0":[-28.566,180.189,-58.558],"3.0417":[17.73,178.581,-70.771],"3.0833":[27.078,198.751,-88.714],"3.125":[48.912,246.768,-131.025],"3.1667":[167.718,254.726,-234.916],"3.2083":[205.613,210.391,-231.637],"3.25":[230.458,191.932,-220.297],"3.2917":[249.347,209.687,-210.144],"3.3333":[268.412,235.937,-231.497],"3.375":[349.588,182.567,-305.934],"3.4167":[339.312,134.111,-335.95],"3.4583":[409.453,82.282,-296.61],"3.5":[393.536,48.244,-341.501],"3.5417":[425.819,32.338,-341.15],"3.5833":[467.082,42.565,-298.35],"3.625":[491.538,27.942,-251.871],"3.6667":[502.688,5.875,-208.564],"3.7083":[503.895,-11.438,-180.315],"3.75":[485.016,-41.648,-126.685],"3.7917":[457.075,-62.754,-94.955],"3.8333":[421.222,-78.465,-65.567],"3.875":[414.316,-79.801,-58.528],"3.9167":[417.418,-77.216,-58.715],"3.9583":[420.727,-76.737,-61.114],"4.0":[424.381,-76.404,-64.133],"4.0417":[425.442,-76.43,-65.158],"4.0833":[426.187,-76.448,-66.044],"4.125":[425.555,-76.379,-65.542],"4.1667":[423.978,-76.205,-64.114],"4.2083":[423.651,-76.163,-63.9],"4.25":[423.92,-76.186,-64.319],"4.2917":[424.349,-76.232,-64.844],"4.3333":[424.859,-76.272,-65.462],"4.375":[424.953,-76.265,-65.592],"4.4167":[424.9,-76.261,-65.606],"4.4583":[424.785,-76.291,-65.554],"4.5":[424.563,-76.388,-65.462],"4.5417":[424.285,-76.447,-65.317],"4.5833":[423.905,-76.732,-65.239],"4.625":[423.784,-77.129,-65.402],"4.6667":[423.41,-77.886,-65.512],"4.7083":[423.156,-78.466,-65.608],"4.75":[422.92,-79.323,-65.864],"4.7917":[423.593,-80.475,-67.239],"4.8333":[425.061,-81.157,-69.2],"4.875":[429.138,-81.565,-73.831],"4.9167":[432.29,-81.547,-77.282],"4.9583":[436.333,-80.647,-81.537],"5.0":[438.169,-79.608,-83.385],"5.0417":[439.263,-79.029,-84.708],"5.0833":[438.976,-79.056,-84.62],"5.125":[436.634,-79.151,-82.408],"5.1667":[435.822,-78.714,-81.625],"5.2083":[435.94,-77.377,-81.719],"5.25":[436.643,-76.339,-82.296],"5.2917":[455.795,-76.056,-96.312],"5.3333":[484.68,-75.617,-115.536],"5.375":[549.454,-59.568,-163.522],"5.4167":[556.577,-12.433,-165.82],"5.4583":[492.147,47.04,-198.595],"5.5":[457.416,33.601,-223.977],"5.5417":[433.475,21.274,-234.154],"5.5833":[425.576,6.923,-233.615],"5.625":[424.534,-2.024,-229.253],"5.6667":[425.222,-13.797,-219.717],"5.7083":[429.462,-19.601,-211.25],"5.75":[438.39,-29.271,-196.577],"5.7917":[440.794,-38.311,-184.945],"5.8333":[409.71,-59.474,-137.323],"5.875":[413.49,-59.315,-118.772],"5.9167":[474.219,-63.901,-161.058],"5.9583":[484.22,-62.481,-171.755],"6.0":[488.783,-61.501,-180.393],"6.0417":[496.769,-58.633,-192.058],"6.0833":[504.182,-54.104,-204.231],"6.125":[507.065,-51.461,-209.64],"6.1667":[510.183,-47.539,-216.361],"6.2083":[511.444,-45.427,-219.529],"6.25":[512.244,-43.835,-221.761],"6.2917":[512.351,-43.603,-222.077],"6.3333":[512.505,-43.262,-222.537],"6.375":[512.603,-43.04,-222.835],"6.4167":[512.742,-42.714,-223.268],"6.4583":[512.832,-42.501,-223.549],"6.5":[512.959,-42.188,-223.957],"6.5417":[513.04,-41.984,-224.222],"6.5833":[513.156,-41.684,-224.608],"6.625":[513.23,-41.489,-224.858],"6.6667":[513.335,-41.202,-225.222],"6.7083":[513.402,-41.015,-225.458],"6.75":[513.499,-40.741,-225.801],"6.7917":[513.56,-40.562,-226.024],"6.8333":[513.648,-40.3,-226.349],"6.875":[513.704,-40.129,-226.56],"6.9167":[513.785,-39.879,-226.867],"6.9583":[513.86,-39.635,-227.164],"7.0":[513.909,-39.476,-227.357],"7.0417":[513.979,-39.242,-227.638],"7.0833":[514.023,-39.09,-227.821],"7.125":[514.088,-38.867,-228.088],"7.1667":[514.128,-38.721,-228.262],"7.2083":[514.187,-38.508,-228.515],"7.25":[514.225,-38.369,-228.68],"7.2917":[514.279,-38.164,-228.92],"7.3333":[514.314,-38.03,-229.077],"7.375":[514.363,-37.834,-229.306],"7.4167":[514.395,-37.707,-229.454],"7.4583":[514.441,-37.518,-229.674],"7.5":[514.47,-37.397,-229.815],"7.5417":[514.514,-37.216,-230.024],"7.5833":[514.541,-37.097,-230.16],"7.625":[514.581,-36.923,-230.359],"7.6667":[514.606,-36.81,-230.489],"7.7083":[514.643,-36.642,-230.68],"7.75":[514.678,-36.478,-230.867],"7.7917":[514.7,-36.37,-230.989],"7.8333":[514.734,-36.211,-231.169],"7.875":[514.755,-36.107,-231.287],"7.9167":[514.786,-35.952,-231.461],"7.9583":[514.806,-35.851,-231.575],"8.0":[514.835,-35.7,-231.743],"8.0417":[514.854,-35.601,-231.854],"8.0833":[514.881,-35.455,-232.018],"8.125":[514.899,-35.358,-232.126],"8.1667":[514.925,-35.214,-232.286],"8.2083":[514.942,-35.119,-232.391],"8.25":[514.966,-34.976,-232.548],"8.2917":[514.982,-34.883,-232.652],"8.3333":[515.006,-34.742,-232.807],"8.375":[515.021,-34.65,-232.909],"8.4167":[515.044,-34.511,-233.062],"8.4583":[515.059,-34.418,-233.163],"8.5":[515.081,-34.279,-233.315],"8.5417":[515.095,-34.187,-233.416],"8.5833":[515.116,-34.047,-233.568],"8.625":[515.129,-33.955,-233.668],"8.6667":[515.149,-33.815,-233.82],"8.7083":[515.163,-33.721,-233.921],"8.75":[515.182,-33.58,-234.074],"8.7917":[515.195,-33.485,-234.176],"8.8333":[515.214,-33.342,-234.33],"8.875":[515.227,-33.245,-234.434],"8.9167":[515.245,-33.099,-234.59],"8.9583":[515.263,-32.951,-234.749],"9.0":[515.275,-32.851,-234.855],"9.0417":[515.293,-32.7,-235.017],"9.0833":[515.305,-32.597,-235.126],"9.125":[515.322,-32.441,-235.291],"9.1667":[515.333,-32.336,-235.403],"9.2083":[515.35,-32.175,-235.573],"9.25":[515.362,-32.066,-235.688],"9.2917":[515.378,-31.899,-235.863],"9.3333":[515.389,-31.786,-235.981],"9.375":[515.404,-31.613,-236.161],"9.4167":[515.414,-31.496,-236.284],"9.4583":[515.429,-31.316,-236.471],"9.5":[515.439,-31.194,-236.598],"9.5417":[515.454,-31.008,-236.792],"9.5833":[515.464,-30.881,-236.924],"9.625":[515.478,-30.687,-237.125],"9.6667":[515.478,-30.692,-237.123],"9.7083":[515.538,-29.622,-238.217],"9.75":[515.585,-27.772,-240.073],"9.7917":[515.555,-25.567,-242.245],"9.8333":[515.308,-21.918,-245.772],"9.875":[515.002,-19.412,-248.166],"9.9167":[514.329,-15.582,-251.816],"9.9583":[513.735,-13.005,-254.287],"10.0":[512.629,-9.147,-258.051],"10.0417":[511.751,-6.603,-260.596],"10.0833":[510.232,-2.869,-264.466],"10.125":[509.09,-0.456,-267.077],"10.1667":[507.199,3.009,-271.031],"10.2083":[505.831,5.201,-273.686],"10.25":[503.613,8.316,-277.723],"10.2917":[502.024,10.277,-280.46],"10.3333":[499.477,13.041,-284.641],"10.375":[497.664,14.768,-287.496],"10.4167":[494.759,17.181,-291.915],"10.4583":[492.7,18.661,-294.955],"10.5":[489.432,20.677,-299.659],"10.5417":[487.139,21.875,-302.89],"10.5833":[483.538,23.436,-307.871],"10.625":[481.04,24.311,-311.277],"10.6667":[477.166,25.363,-316.494],"10.7083":[474.515,25.884,-320.035],"10.75":[470.462,26.383,-325.413],"10.7917":[467.73,26.525,-329.027],"10.8333":[463.631,26.448,-334.444],"10.875":[460.917,26.205,-338.035],"10.9167":[456.726,25.52,-343.608],"10.9583":[454.252,24.931,-346.922],"11.0":[451.239,24.016,-350.992],"11.0417":[448.663,23.04,-354.534],"11.0833":[446.53,22.082,-357.524],"11.125":[443.004,20.039,-362.92],"11.1667":[440.955,18.68,-366.042],"11.2083":[438.593,16.913,-369.689],"11.25":[437.111,15.575,-372.214],"11.2917":[435.046,13.361,-376.078],"11.3333":[433.781,11.766,-378.67],"11.375":[432.055,9.237,-382.531],"11.4167":[431.015,7.485,-385.059],"11.4583":[429.608,4.8,-388.738],"11.5":[428.759,2.999,-391.09],"11.5417":[427.593,0.323,-394.426],"11.5833":[426.866,-1.418,-396.498],"11.625":[425.814,-3.925,-399.327],"11.6667":[425.114,-5.504,-401.002],"11.7083":[424.014,-7.696,-403.142],"11.75":[423.221,-9.013,-404.292],"11.7917":[421.891,-10.737,-405.545],"11.8333":[420.885,-11.69,-406.034],"11.875":[419.159,-12.771,-406.195],"11.9167":[410.572,2.535,-385.659],"11.9583":[408.452,15.257,-371.521],"12.0":[407.676,14.761,-371.933],"12.0417":[408.451,15.258,-371.521],"12.0833":[412.387,23.495,-361.693],"12.125":[416.484,28.854,-353.496],"12.1667":[425.33,35.943,-338.455],"12.2083":[433.129,39.527,-326.586],"12.25":[447.052,42.381,-306.754],"12.2917":[456.885,42.368,-293.167],"12.3333":[470.596,39.752,-274.203],"12.375":[478.382,36.762,-263.246],"12.4167":[487.882,31.412,-249.664],"12.4583":[493.593,30.709,-244.272],"12.5":[508.386,45.621,-243.028],"12.5417":[522.813,44.101,-230.449],"12.5833":[533.982,31.613,-226.034],"12.625":[532.957,22.312,-235.611],"12.6667":[530.471,13.721,-246.193],"12.7083":[529.584,10.058,-247.292],"12.75":[528.877,7.914,-243.257],"12.7917":[528.557,6.941,-240.809],"12.8333":[528.051,6.063,-238.119],"12.875":[527.593,6.086,-237.729],"12.9167":[527.028,6.543,-238.142],"12.9583":[527.043,6.88,-238.419],"13.0":[527.153,7.275,-239.298],"13.0417":[527.097,7.341,-240.226],"13.0833":[526.939,7.689,-241.02],"13.125":[526.76,8.149,-241.333],"13.1667":[526.728,8.323,-241.319],"13.2083":[526.674,8.335,-241.155],"13.25":[526.583,8.158,-241.015],"13.2917":[526.538,8.014,-240.879],"13.3333":[526.542,7.976,-240.824],"13.375":[526.509,7.969,-240.787],"13.4167":[526.497,7.971,-240.779]},"position":{"0.0":[5.392,40.054,-9.384],"0.0417":[7.139,40.702,-9.036],"0.0833":[10.461,38.902,-7.957],"0.125":[13.428,34.87,-6.627],"0.1667":[15.001,28.819,-8.216],"0.2083":[14.878,25.774,-10.141],"0.25":[14.868,25.366,-10.27],"0.2917":[14.878,25.774,-10.141],"0.3333":[15.009,25.913,-10.425],"0.375":[15.092,26.016,-10.626],"0.4167":[15.214,26.183,-10.941],"0.4583":[15.296,26.301,-11.159],"0.5":[15.421,26.48,-11.492],"0.5417":[15.508,26.599,-11.716],"0.5833":[15.648,26.773,-12.054],"0.625":[15.801,26.936,-12.388],"0.6667":[15.913,27.035,-12.606],"0.7083":[16.098,27.164,-12.923],"0.75":[16.235,27.235,-13.125],"0.7917":[16.464,27.314,-13.413],"0.8333":[16.662,27.321,-13.581],"0.875":[17.258,27.048,-13.711],"0.9167":[17.744,26.772,-13.746],"0.9583":[18.358,26.425,-13.795],"1.0":[18.375,26.406,-13.802],"1.0417":[18.434,26.436,-13.789],"1.0833":[18.51,26.448,-13.783],"1.125":[18.632,26.466,-13.774],"1.1667":[18.723,26.479,-13.767],"1.2083":[18.881,26.502,-13.756],"1.25":[19.006,26.52,-13.747],"1.2917":[19.249,26.555,-13.728],"1.3333":[19.445,26.584,-13.714],"1.375":[19.758,26.626,-13.692],"1.4167":[20.063,26.658,-13.675],"1.4583":[20.272,26.67,-13.668],"1.5":[20.582,26.684,-13.66],"1.5417":[20.754,26.698,-13.655],"1.5833":[21.112,26.74,-13.65],"1.625":[21.323,26.767,-13.647],"1.6667":[21.653,26.807,-13.643],"1.7083":[22.005,26.849,-13.637],"1.75":[22.458,26.895,-13.63],"1.7917":[22.705,26.915,-13.625],"1.8333":[23.05,26.939,-13.617],"1.875":[23.273,26.954,-13.612],"1.9167":[23.614,26.977,-13.604],"1.9583":[23.855,26.997,-13.599],"2.0":[24.253,27.037,-13.592],"2.0417":[24.554,27.074,-13.588],"2.0833":[25.084,27.141,-13.583],"2.125":[25.502,27.189,-13.581],"2.1667":[26.191,27.268,-13.579],"2.2083":[26.668,27.331,-13.578],"2.25":[27.37,27.445,-13.575],"2.2917":[27.807,27.538,-13.571],"2.3333":[28.377,27.708,-13.562],"2.375":[28.266,28.112,-13.526],"2.4167":[27.694,28.835,-13.482],"2.4583":[27.309,29.27,-13.444],"2.5":[26.716,29.895,-13.373],"2.5417":[26.314,30.304,-13.322],"2.5833":[25.707,30.926,-13.25],"2.625":[25.305,31.357,-13.21],"2.6667":[24.71,32.048,-13.172],"2.7083":[24.324,32.549,-13.167],"2.75":[23.767,33.381,-13.198],"2.7917":[23.245,34.333,-13.287],"2.8333":[23.402,36.445,-14.103],"2.875":[22.228,41.088,-15.599],"2.9167":[18.322,42.238,-16.469],"2.9583":[9.208,42.362,-16.778],"3.0":[3.031,40.198,-13.908],"3.0417":[1.692,39.273,-10.799],"3.0833":[1.272,39.506,-10.315],"3.125":[1.021,40.623,-10.468],"3.1667":[1.32,41.578,-11.391],"3.2083":[2.395,42.786,-13.288],"3.25":[3.626,42.608,-13.959],"3.2917":[5.898,41.094,-13.773],"3.3333":[7.377,39.673,-12.719],"3.375":[8.345,40.326,-10.607],"3.4167":[8.788,41.235,-10.276],"3.4583":[9.126,41.65,-12.029],"3.5":[8.601,41.788,-13.269],"3.5417":[8.242,42.145,-14.321],"3.5833":[8.641,43.092,-14.089],"3.625":[9.18,43.381,-14.164],"3.6667":[9.986,43.234,-14.547],"3.7083":[10.363,42.735,-14.552],"3.75":[10.709,40.732,-14.01],"3.7917":[10.911,39.094,-13.371],"3.8333":[11.439,39.5,-12.402],"3.875":[11.654,40.323,-12.114],"3.9167":[11.749,41.375,-12.186],"3.9583":[11.702,41.624,-12.249],"4.0":[11.617,41.831,-12.323],"4.0417":[11.564,41.891,-12.352],"4.0833":[11.495,41.929,-12.375],"4.125":[11.461,41.924,-12.382],"4.1667":[11.431,41.894,-12.386],"4.2083":[11.42,41.866,-12.382],"4.25":[11.413,41.833,-12.379],"4.2917":[11.412,41.815,-12.378],"4.3333":[11.412,41.79,-12.376],"4.375":[11.415,41.777,-12.374],"4.4167":[11.421,41.759,-12.371],"4.4583":[11.425,41.75,-12.37],"4.5":[11.432,41.739,-12.369],"4.5417":[11.437,41.732,-12.368],"4.5833":[11.449,41.716,-12.365],"4.625":[11.464,41.7,-12.36],"4.6667":[11.479,41.664,-12.348],"4.7083":[11.482,41.63,-12.338],"4.75":[11.468,41.563,-12.325],"4.7917":[11.435,41.438,-12.298],"4.8333":[11.415,41.332,-12.277],"4.875":[11.403,41.175,-12.256],"4.9167":[11.405,41.075,-12.244],"4.9583":[11.443,40.956,-12.225],"5.0":[11.496,40.896,-12.211],"5.0417":[11.623,40.838,-12.178],"5.0833":[11.736,40.824,-12.156],"5.125":[11.914,40.828,-12.149],"5.1667":[12.051,40.856,-12.143],"5.2083":[12.279,40.924,-12.129],"5.25":[12.495,40.995,-12.113],"5.2917":[14.927,41.755,-11.16],"5.3333":[18.973,42.453,-10.822],"5.375":[28.008,41.322,-10.421],"5.4167":[31.927,39.965,-8.732],"5.4583":[33.373,36.164,-11.484],"5.5":[32.141,32.157,-12.159],"5.5417":[29.005,31.246,-14.253],"5.5833":[24.548,31.552,-15.346],"5.625":[21.867,31.969,-15.863],"5.6667":[18.866,32.463,-16.364],"5.7083":[17.772,32.76,-16.43],"5.75":[16.686,33.324,-16.391],"5.7917":[15.706,33.913,-16.45],"5.8333":[13.204,36.937,-16.502],"5.875":[14.071,37.212,-15.875],"5.9167":[15.265,32.797,-13.677],"5.9583":[14.955,30.478,-13.132],"6.0":[14.318,27.904,-12.735],"6.0417":[14.165,27.2,-12.601],"6.0833":[14.105,27.037,-12.572],"6.125":[14.08,27.003,-12.568],"6.1667":[14.06,27.035,-12.576],"6.2083":[14.054,27.078,-12.586],"6.25":[14.05,27.118,-12.594],"6.2917":[14.049,27.119,-12.595],"6.3333":[14.048,27.121,-12.595],"6.375":[14.047,27.123,-12.595],"6.4167":[14.045,27.125,-12.596],"6.4583":[14.044,27.126,-12.596],"6.5":[14.042,27.128,-12.596],"6.5417":[14.041,27.129,-12.597],"6.5833":[14.04,27.131,-12.597],"6.625":[14.039,27.133,-12.597],"6.6667":[14.038,27.135,-12.598],"6.7083":[14.037,27.136,-12.598],"6.75":[14.035,27.138,-12.598],"6.7917":[14.035,27.139,-12.598],"6.8333":[14.033,27.141,-12.599],"6.875":[14.033,27.142,-12.599],"6.9167":[14.031,27.143,-12.599],"6.9583":[14.03,27.145,-12.6],"7.0":[14.03,27.146,-12.6],"7.0417":[14.029,27.148,-12.6],"7.0833":[14.028,27.149,-12.6],"7.125":[14.027,27.151,-12.6],"7.1667":[14.026,27.152,-12.601],"7.2083":[14.026,27.153,-12.601],"7.25":[14.025,27.154,-12.601],"7.2917":[14.024,27.156,-12.601],"7.3333":[14.024,27.157,-12.601],"7.375":[14.023,27.158,-12.602],"7.4167":[14.022,27.159,-12.602],"7.4583":[14.022,27.161,-12.602],"7.5":[14.021,27.162,-12.602],"7.5417":[14.02,27.163,-12.602],"7.5833":[14.02,27.164,-12.603],"7.625":[14.019,27.166,-12.603],"7.6667":[14.019,27.167,-12.603],"7.7083":[14.018,27.168,-12.603],"7.75":[14.018,27.169,-12.603],"7.7917":[14.017,27.17,-12.603],"7.8333":[14.017,27.172,-12.604],"7.875":[14.016,27.173,-12.604],"7.9167":[14.016,27.174,-12.604],"7.9583":[14.015,27.175,-12.604],"8.0":[14.015,27.177,-12.604],"8.0417":[14.015,27.178,-12.604],"8.0833":[14.014,27.179,-12.605],"8.125":[14.014,27.18,-12.605],"8.1667":[14.013,27.181,-12.605],"8.2083":[14.013,27.182,-12.605],"8.25":[14.012,27.184,-12.605],"8.2917":[14.012,27.185,-12.605],"8.3333":[14.012,27.186,-12.606],"8.375":[14.011,27.187,-12.606],"8.4167":[14.011,27.189,-12.606],"8.4583":[14.011,27.19,-12.606],"8.5":[14.01,27.191,-12.606],"8.5417":[14.01,27.192,-12.607],"8.5833":[14.009,27.194,-12.607],"8.625":[14.009,27.195,-12.607],"8.6667":[14.009,27.197,-12.607],"8.7083":[14.008,27.198,-12.607],"8.75":[14.008,27.199,-12.608],"8.7917":[14.007,27.2,-12.608],"8.8333":[14.007,27.202,-12.608],"8.875":[14.007,27.203,-12.608],"8.9167":[14.006,27.205,-12.609],"8.9583":[14.005,27.207,-12.609],"9.0":[14.005,27.208,-12.609],"9.0417":[14.004,27.21,-12.609],"9.0833":[14.004,27.211,-12.61],"9.125":[14.003,27.213,-12.61],"9.1667":[14.003,27.214,-12.61],"9.2083":[14.002,27.216,-12.611],"9.25":[14.002,27.217,-12.611],"9.2917":[14.001,27.219,-12.611],"9.3333":[14.001,27.221,-12.611],"9.375":[14,27.223,-12.612],"9.4167":[14,27.224,-12.612],"9.4583":[13.999,27.227,-12.613],"9.5":[13.999,27.232,-12.614],"9.5417":[13.998,27.244,-12.616],"9.5833":[13.998,27.254,-12.618],"9.625":[13.997,27.268,-12.621],"9.6667":[13.997,27.276,-12.622],"9.7083":[13.993,27.29,-12.625],"9.75":[13.986,27.303,-12.629],"9.7917":[13.976,27.306,-12.631],"9.8333":[13.959,27.31,-12.635],"9.875":[13.948,27.311,-12.637],"9.9167":[13.931,27.314,-12.64],"9.9583":[13.919,27.315,-12.643],"10.0":[13.901,27.317,-12.647],"10.0417":[13.89,27.318,-12.649],"10.0833":[13.872,27.321,-12.653],"10.125":[13.861,27.322,-12.656],"10.1667":[13.845,27.325,-12.66],"10.2083":[13.834,27.327,-12.663],"10.25":[13.819,27.331,-12.668],"10.2917":[13.808,27.333,-12.671],"10.3333":[13.794,27.338,-12.676],"10.375":[13.784,27.342,-12.68],"10.4167":[13.769,27.348,-12.687],"10.4583":[13.76,27.352,-12.691],"10.5":[13.746,27.359,-12.697],"10.5417":[13.736,27.364,-12.701],"10.5833":[13.722,27.371,-12.707],"10.625":[13.713,27.376,-12.712],"10.6667":[13.699,27.385,-12.718],"10.7083":[13.69,27.39,-12.722],"10.75":[13.676,27.399,-12.727],"10.7917":[13.666,27.405,-12.731],"10.8333":[13.652,27.414,-12.737],"10.875":[13.643,27.421,-12.74],"10.9167":[13.629,27.431,-12.746],"10.9583":[13.62,27.438,-12.75],"11.0":[13.609,27.446,-12.754],"11.0417":[13.598,27.457,-12.756],"11.0833":[13.586,27.469,-12.755],"11.125":[13.568,27.481,-12.762],"11.1667":[13.556,27.488,-12.767],"11.2083":[13.541,27.496,-12.775],"11.25":[13.532,27.502,-12.78],"11.2917":[13.517,27.51,-12.789],"11.3333":[13.507,27.516,-12.794],"11.375":[13.492,27.525,-12.803],"11.4167":[13.482,27.53,-12.808],"11.4583":[13.467,27.539,-12.815],"11.5":[13.456,27.544,-12.819],"11.5417":[13.441,27.552,-12.823],"11.5833":[13.43,27.557,-12.826],"11.625":[13.414,27.564,-12.828],"11.6667":[13.404,27.568,-12.833],"11.7083":[13.388,27.574,-12.842],"11.75":[13.378,27.578,-12.846],"11.7917":[13.363,27.583,-12.842],"11.8333":[13.355,27.587,-12.831],"11.875":[13.343,27.59,-12.792],"11.9167":[13.351,27.576,-12.6],"11.9583":[13.352,27.563,-12.474],"12.0":[13.353,27.563,-12.457],"12.0417":[13.352,27.563,-12.474],"12.0833":[13.284,27.364,-12.613],"12.125":[13.205,27.137,-12.77],"12.1667":[13.131,26.936,-12.907],"12.2083":[13.168,27.061,-12.816],"12.25":[13.47,27.917,-12.2],"12.2917":[13.934,28.983,-11.37],"12.3333":[14.85,31.079,-9.747],"12.375":[15.45,32.64,-8.614],"12.4167":[16.061,34.939,-7.186],"12.4583":[15.97,36.323,-6.805],"12.5":[13.761,38.267,-7.854],"12.5417":[11.176,39.206,-8.213],"12.5833":[5.766,40.092,-9.055],"12.625":[4.203,39.895,-9.351],"12.6667":[3.962,39.468,-9.221],"12.7083":[4.224,39.264,-9.193],"12.75":[4.823,39.285,-9.303],"12.7917":[4.95,39.376,-9.381],"12.8333":[4.989,39.551,-9.481],"12.875":[4.946,39.627,-9.519],"12.9167":[4.821,39.693,-9.556],"12.9583":[4.747,39.69,-9.57],"13.0":[4.644,39.641,-9.573],"13.0417":[4.588,39.593,-9.564],"13.0833":[4.553,39.546,-9.547],"13.125":[4.549,39.52,-9.528],"13.1667":[4.552,39.51,-9.52],"13.2083":[4.559,39.507,-9.515],"13.25":[4.563,39.512,-9.517],"13.2917":[4.566,39.517,-9.52],"13.3333":[4.566,39.521,-9.523],"13.375":[4.564,39.524,-9.526],"13.4167":[4.562,39.525,-9.527]}},"lefthand_1":{"rotation":{"3.0":[0,0,0],"3.125":[0,0,-27.5],"3.4583":[0,0,0]},"position":{"0.0":[0,2.5,0],"3.0":[0,2.5,0]},"scale":{"0.0":[1,1.5,1],"3.0":[1,1.5,1]}},"righthand":{"rotation":{"0.0":[-37.13,-182.626,74.147],"0.0417":[-41.203,-211.924,51.251],"0.0833":[-61.558,-239.916,12.207],"0.125":[-38.718,-247.003,9.908],"0.1667":[-90.396,-234.482,-47.54],"0.2083":[-91.383,-221.935,-48.751],"0.25":[-108.97,-209.836,-67.825],"0.2917":[-112.285,-205.597,-75.047],"0.3333":[-95.247,-195.472,-83.441],"0.375":[-80.011,-191.849,-92.641],"0.4167":[-62.908,-196.808,-101.567],"0.4583":[-49.882,-200.59,-91.368],"0.5":[-16.502,-166.56,-50.983],"0.5417":[-29.025,-150.104,-36.416],"0.5833":[-83.983,-134.123,42.427],"0.625":[-108.716,-171.211,84.149],"0.6667":[-95.318,-187.077,109.019],"0.7083":[-62.78,-186.527,167.526],"0.75":[-56.022,-177.407,205.249],"0.7917":[-62.994,-175.733,243.159],"0.8333":[-84.545,-167.705,245.293],"0.875":[-98.457,-126.194,208.09],"0.9167":[-58.512,-126.93,146.26],"0.9583":[-90.804,-130.377,109.806],"1.0":[-93.386,-128.435,62.954],"1.0417":[-116.03,-182.246,-21.913],"1.0833":[-120.923,-205.144,-17.816],"1.125":[-71.772,-204.778,65.273],"1.1667":[-57.551,-176.183,106.28],"1.2083":[-40.789,-144.975,128.344],"1.25":[-16.702,-140.824,105.631],"1.2917":[0.027,-171.891,69.131],"1.3333":[-7.301,-207.61,52.077],"1.375":[-64.966,-245.421,-11.975],"1.4167":[-145.509,-234.68,-94.26],"1.4583":[-150.719,-217.055,-105.925],"1.5":[-126.331,-192.629,-117.385],"1.5417":[-108.447,-190.454,-122.534],"1.5833":[-80.016,-194.789,-109.007],"1.625":[-58.925,-195.891,-92.115],"1.6667":[-22.687,-179.055,-57.027],"1.7083":[-27.968,-151.023,-29.974],"1.75":[-77.79,-144.402,19.752],"1.7917":[-92.006,-152.272,44.14],"1.8333":[-90.512,-159.918,73.491],"1.875":[-82.126,-159.433,84.62],"1.9167":[-53.958,-148.112,73.725],"1.9583":[-29.048,-149.755,46.414],"2.0":[-17.782,-181.317,11.842],"2.0417":[-30.446,-211.55,-6.352],"2.0833":[-87.47,-229.551,-58.156],"2.125":[-104.851,-215.772,-70.718],"2.1667":[-127.398,-210.793,-55.884],"2.2083":[-133.126,-233.449,-22.783],"2.25":[-68.827,-232.1,59.181],"2.2917":[-56.061,-213.168,84.595],"2.3333":[-71.459,-175.059,114.23],"2.375":[-80.906,-173.629,166.889],"2.4167":[-87.463,-171.949,134.493],"2.4583":[-81.508,-163.428,87.714],"2.5":[-73.371,-170.085,26.039],"2.5417":[-92.707,-179.757,-1.758],"2.5833":[-95.593,-179.813,-8.793],"2.625":[-96.887,-179.607,-12.521],"2.6667":[-98.024,-179.13,-16.904],"2.7083":[-98.343,-178.766,-19.166],"2.75":[-98.328,-178.211,-21.818],"2.7917":[-97.924,-177.676,-23.877],"2.8333":[-97.548,-177.334,-25.084],"2.875":[-96.981,-176.841,-26.889],"2.9167":[-96.693,-176.521,-28.227],"2.9583":[-96.551,-176.04,-30.677],"3.0":[-96.657,-175.786,-32.213],"3.0417":[-96.202,-175.315,-34.09],"3.0833":[-95.551,-174.657,-36.811],"3.125":[-95.175,-174.348,-38.204],"3.1667":[-94.948,-174.128,-39.128],"3.2083":[-94.632,-173.782,-40.506],"3.25":[-94.434,-173.547,-41.417],"3.2917":[-94.145,-173.196,-42.767],"3.3333":[-93.955,-172.965,-43.655],"3.375":[-93.664,-172.634,-44.964],"3.4167":[-93.462,-172.428,-45.819],"3.4583":[-93.142,-172.148,-47.074],"3.5":[-92.912,-171.987,-47.888],"3.5417":[-92.538,-171.792,-49.074],"3.5833":[-92.121,-171.662,-50.211],"3.625":[-91.814,-171.62,-50.94],"3.6667":[-91.308,-171.628,-51.983],"3.7083":[-90.936,-171.689,-52.643],"3.75":[-90.322,-171.869,-53.575],"3.7917":[-89.203,-172.712,-53.679],"3.8333":[-85.36,-177.957,-49.734],"3.875":[-85.837,-180.658,-46.805],"3.9167":[-86.76,-184.881,-42.275],"3.9583":[-87.417,-187.794,-39.203],"4.0":[-88.306,-192.258,-34.566],"4.0417":[-88.748,-195.255,-31.469],"4.0833":[-89.046,-199.691,-26.825],"4.125":[-88.922,-202.545,-23.725],"4.1667":[-88.127,-206.549,-19.055],"4.2083":[-87.124,-208.954,-15.924],"4.25":[-84.82,-212.021,-11.207],"4.2917":[-82.565,-213.429,-8.131],"4.3333":[-76.971,-212.795,-4.422],"4.375":[-72.526,-211.206,-2.718],"4.4167":[-65.982,-208.705,-1.078],"4.4583":[-62.22,-207.902,-0.179],"4.5":[-56.986,-208.856,0.692],"4.5417":[-53.716,-210.312,0.988],"4.5833":[-50.161,-212.29,1.67],"4.625":[-49.733,-213.031,2.386],"4.6667":[-51.279,-213.898,3.512],"4.7083":[-52.054,-214.469,4.22],"4.75":[-53.216,-215.262,5.223],"4.7917":[-54.477,-216.033,6.154],"4.8333":[-55.501,-216.491,6.626],"4.875":[-57.638,-217.043,6.881],"4.9167":[-59.049,-217.322,6.956],"4.9583":[-61.062,-217.773,7.074],"5.0":[-62.099,-217.878,7.143],"5.0417":[-62.374,-217.223,7.319],"5.0833":[-62.009,-216.453,7.473],"5.125":[-61.277,-215.075,7.611],"5.1667":[-61.123,-214.402,7.829],"5.2083":[-61.242,-213.529,8.238],"5.25":[-56.731,-204.885,2.175],"5.2917":[-51.381,-204.763,-25.274],"5.3333":[-44.64,-188.107,-44.123],"5.375":[-44.421,-180.544,-37.319],"5.4167":[-46.109,-177.103,-29.603],"5.4583":[-48.805,-173.991,-21.721],"5.5":[-49.49,-172.376,-20.874],"5.5417":[-49.612,-170.261,-21.765],"5.5833":[-49.598,-168.949,-24.197],"5.625":[-50.114,-168.741,-26.051],"5.6667":[-52.634,-169.696,-28.252],"5.7083":[-55.756,-171.321,-29.345],"5.75":[-61.996,-174.941,-31.357],"5.7917":[-66.873,-177.788,-33.031],"5.8333":[-74.721,-182.107,-36.059],"5.875":[-79.971,-184.703,-38.335],"5.9167":[-87.209,-187.737,-41.792],"5.9583":[-90.687,-188.92,-43.642],"6.0":[-94.186,-190.196,-45.288],"6.0417":[-89.372,-190.149,-37.249],"6.0833":[-74.662,-183.057,-16.089],"6.125":[-67.712,-183.437,-10.478],"6.1667":[-61.437,-197.003,-14.18],"6.2083":[-68.791,-207.992,-22.088],"6.25":[-90.997,-221,-40.709],"6.2917":[-89.069,-221.898,-24.583],"6.3333":[-78.911,-230.957,-9.855],"6.375":[-70.699,-250.156,-3.216],"6.4167":[-69.869,-252.028,-2.524],"6.4583":[-73.372,-250.94,-6.606],"6.5":[-76.591,-249.69,-10.195],"6.5417":[-77.973,-248.93,-11.875],"6.5833":[-78.444,-248.852,-12.762],"6.625":[-78.361,-249.2,-12.745],"6.6667":[-79.336,-250.709,-13.613],"6.7083":[-79.032,-251.341,-12.952],"6.75":[-78.701,-251.777,-12.208],"6.7917":[-78.634,-251.915,-11.94],"6.8333":[-78.555,-252.032,-11.616],"6.875":[-78.551,-252.058,-11.492],"6.9167":[-78.871,-252.194,-11.772],"6.9583":[-79.415,-252.309,-12.376],"7.0":[-79.775,-252.313,-12.775],"7.0417":[-80.128,-252.251,-13.216],"7.0833":[-80.096,-252.13,-13.273],"7.125":[-79.89,-251.896,-13.156],"7.1667":[-79.732,-251.75,-13.051],"7.2083":[-79.521,-251.613,-12.912],"7.25":[-79.428,-251.546,-12.841],"7.2917":[-79.343,-251.504,-12.756],"7.3333":[-79.285,-251.535,-12.696],"7.375":[-79.357,-251.703,-12.733],"7.4167":[-79.388,-251.771,-12.744],"7.4583":[-79.395,-251.8,-12.729],"7.5":[-79.383,-251.797,-12.704],"7.5417":[-79.359,-251.783,-12.663],"7.5833":[-79.276,-251.684,-12.572],"7.625":[-78.868,-251.199,-12.176],"7.6667":[-78.691,-250.909,-11.987],"7.7083":[-78.989,-250.773,-12.189],"7.75":[-79.337,-250.73,-12.424],"7.7917":[-79.162,-250.681,-12.214],"7.8333":[-77.782,-250.42,-10.898],"7.875":[-76.534,-250.256,-9.729],"7.9167":[-75.137,-250.487,-8.392],"7.9583":[-74.532,-251.133,-7.776],"8.0":[-73.779,-252.14,-7.003],"8.0417":[-73.313,-252.553,-6.548],"8.0833":[-72.691,-253.055,-5.955],"8.125":[-72.342,-253.372,-5.623],"8.1667":[-72.026,-253.911,-5.306],"8.2083":[-72.018,-254.268,-5.283],"8.25":[-72.058,-254.653,-5.3],"8.2917":[-72.118,-254.859,-5.343],"8.3333":[-72.243,-255.139,-5.445],"8.375":[-72.34,-255.33,-5.532],"8.4167":[-72.538,-255.62,-5.72],"8.4583":[-72.677,-255.728,-5.866],"8.5":[-72.883,-255.682,-6.124],"8.5417":[-73.016,-255.522,-6.301],"8.5833":[-73.125,-255.07,-6.478],"8.625":[-73.26,-254.663,-6.66],"8.6667":[-73.424,-253.945,-6.912],"8.7083":[-73.632,-253.422,-7.177],"8.75":[-74.663,-252.615,-8.26],"8.7917":[-75.898,-252.045,-9.506],"8.8333":[-77.849,-251.164,-11.459],"8.875":[-78.799,-250.599,-12.408],"8.9167":[-79.659,-249.768,-13.27],"8.9583":[-80.25,-248.947,-13.861],"9.0":[-80.581,-248.437,-14.19],"9.0417":[-81.103,-247.775,-14.701],"9.0833":[-81.511,-247.493,-15.092],"9.125":[-82.143,-247.334,-15.683],"9.1667":[-82.522,-247.294,-16.034],"9.2083":[-83.077,-247.323,-16.548],"9.25":[-83.42,-247.378,-16.86],"9.2917":[-83.834,-247.456,-17.222],"9.3333":[-84.035,-247.49,-17.396],"9.375":[-84.27,-247.579,-17.57],"9.4167":[-84.417,-247.713,-17.629],"9.4583":[-84.542,-248.412,-17.306],"9.5":[-81.441,-250.401,-13.87],"9.5417":[-89.257,-252.685,-18.497],"9.5833":[-104.592,-253.145,-30.453],"9.625":[-140.193,-249.217,-60.966],"9.6667":[-170.632,-235.265,-88.196],"9.7083":[-179.207,-200.722,-112.497],"9.75":[-147.591,-191.388,-130.891],"9.7917":[-137.088,-201.114,-130.287],"9.8333":[-108.209,-209.785,-108.531],"9.875":[-85.726,-207.151,-84.262],"9.9167":[-84.344,-196.965,-70.957],"9.9583":[-86.676,-191.51,-72.545],"10.0":[-78.97,-181.699,-69.493],"10.0417":[-67.646,-169.227,-51.665],"10.0833":[-79.37,-145.917,13.785],"10.125":[-102.818,-148.171,59.987],"10.1667":[-114.579,-149.086,139.533],"10.2083":[-113.577,-162.823,168.167],"10.25":[-101.303,-156.544,194.308],"10.2917":[-86.372,-137.79,192.608],"10.3333":[-100.013,-99.82,199.825],"10.375":[-1.174,-120.036,79.461],"10.4167":[-33.327,-177.777,53.445],"10.4583":[-46.267,-223.594,21.468],"10.5":[-136.536,-235.062,-93.361],"10.5417":[-137.245,-222.218,-113.375],"10.5833":[-94.031,-214.778,-108.49],"10.625":[-49.896,-192.894,-87.445],"10.6667":[-25.502,-154.429,-61.32],"10.7083":[-36.231,-135.125,-42.531],"10.75":[-67.013,-115.234,17.214],"10.7917":[-109.643,-111.773,81.604],"10.8333":[-100.854,-127.639,93.964],"10.875":[-93.754,-142.559,110.641],"10.9167":[-82.81,-144.289,118.045],"10.9583":[-73.037,-134.611,125.47],"11.0":[-43.495,-128.605,96.851],"11.0417":[-19.752,-146.514,55.563],"11.0833":[-12.866,-164.756,12.842],"11.125":[-24.681,-191.646,-18.189],"11.1667":[-45.071,-206.914,-40.212],"11.2083":[-73.384,-217.592,-64.892],"11.25":[-87.244,-222.625,-74.396],"11.2917":[-102.961,-226.805,-90.274],"11.3333":[-107.91,-225.999,-101.617],"11.375":[-90.628,-219.475,-101.791],"11.4167":[-74.124,-214.534,-96.321],"11.4583":[-50.391,-204.041,-79.416],"11.5":[-36.853,-188.704,-62.546],"11.5417":[-27.382,-161.48,-38.992],"11.5833":[-40.418,-135.639,-15.254],"11.625":[-91.363,-127.702,48.274],"11.6667":[-92.798,-131.455,59.734],"11.7083":[-99.396,-143.761,90.341],"11.75":[-95.76,-149.074,99.085],"11.7917":[-72.299,-142.5,81.854],"11.8333":[-45.672,-143.416,54.689],"11.875":[-22.189,-154.46,23.972],"11.9167":[-21.77,-171.731,4.639],"11.9583":[-29.899,-178.583,-8.776],"12.0":[-44.283,-185.245,-32.357],"12.0417":[-56.304,-197.053,-52.216],"12.0833":[-99.539,-201.59,-90.147],"12.125":[-146.127,-199.484,-117.886],"12.1667":[-156.951,-215.89,-134.555],"12.2083":[-146.747,-221.301,-126.424],"12.25":[-128.666,-211.218,-109.093],"12.2917":[-110.424,-204.52,-86.431],"12.3333":[-84.66,-178.424,-45.326],"12.375":[-77.905,-158.016,-23.52],"12.4167":[-71.444,-151.689,-9.61],"12.4583":[-65.543,-162.084,-9.305],"12.5":[-62.466,-180.399,-11.831],"12.5417":[-59.526,-198.873,-7.439],"12.5833":[-48.887,-183.269,49.418],"12.625":[-41.322,-175.47,64.476],"12.6667":[-39.807,-165.584,77.106],"12.7083":[-42.864,-157.559,80.142],"12.75":[-45.047,-147.434,82.783],"12.7917":[-43.631,-142.953,83.448],"12.8333":[-40.817,-140.909,83.26],"12.875":[-39.901,-141.564,83.583],"12.9167":[-39.382,-142.634,84.127],"12.9583":[-39.558,-143.15,84.699],"13.0":[-39.92,-143.806,85.37],"13.0417":[-40.144,-144.064,85.608],"13.0833":[-40.331,-144.053,85.593],"13.125":[-40.491,-143.984,85.629],"13.1667":[-40.607,-143.94,85.697],"13.2083":[-40.692,-143.868,85.772],"13.25":[-40.705,-143.816,85.8],"13.2917":[-40.702,-143.732,85.801],"13.3333":[-40.695,-143.675,85.794],"13.375":[-40.677,-143.589,85.779],"13.4167":[-40.671,-143.561,85.775]},"position":{"0.0":[-2.249,39.94,-15.197],"0.0417":[-1.578,40.988,-15.883],"0.0833":[-1.986,42.286,-16.182],"0.125":[-2.605,42.903,-16.279],"0.1667":[-3.911,43.408,-16.608],"0.2083":[-4.887,43.17,-16.514],"0.25":[-6.921,42.162,-15.865],"0.2917":[-7.771,41.687,-15.327],"0.3333":[-8.633,41.331,-14.066],"0.375":[-9.133,41.245,-13.301],"0.4167":[-9.944,41.074,-12.647],"0.4583":[-10.487,40.769,-12.452],"0.5":[-10.95,40.211,-12.17],"0.5417":[-11.464,38.989,-12.249],"0.5833":[-13.027,37.633,-12.615],"0.625":[-14.435,37.677,-13.049],"0.6667":[-14.765,38.521,-13.125],"0.7083":[-14.616,39.694,-13.949],"0.75":[-14.01,40.016,-14.694],"0.7917":[-11.747,39.623,-16.952],"0.8333":[-10.444,39.764,-17.948],"0.875":[-9.393,41.258,-18.41],"0.9167":[-9.434,42.301,-18.146],"0.9583":[-9.917,41.445,-17.142],"1.0":[-9.395,39.546,-16.695],"1.0417":[-8.471,38.57,-16.889],"1.0833":[-7.789,38.262,-17.076],"1.125":[-7.172,37.999,-17.19],"1.1667":[-6.873,37.524,-17.217],"1.2083":[-7.247,37.028,-16.979],"1.25":[-7.996,37.004,-16.714],"1.2917":[-9.231,37.496,-16.496],"1.3333":[-9.7,38.249,-16.668],"1.375":[-10.172,39.434,-17.054],"1.4167":[-10.485,40.322,-17.245],"1.4583":[-10.826,40.769,-17.077],"1.5":[-11.482,41.042,-16.358],"1.5417":[-11.645,41.012,-15.383],"1.5833":[-12.104,40.75,-14.01],"1.625":[-12.532,40.655,-13.502],"1.6667":[-13.339,40.818,-13.544],"1.7083":[-13.718,41.047,-14.066],"1.75":[-13.594,41.163,-14.972],"1.7917":[-13.265,40.915,-15.555],"1.8333":[-13.15,40.371,-16.19],"1.875":[-13.111,39.984,-16.531],"1.9167":[-12.989,39.324,-16.815],"1.9583":[-12.86,39.003,-16.831],"2.0":[-12.324,38.96,-16.651],"2.0417":[-12.162,39.195,-16.45],"2.0833":[-12.317,39.536,-16.151],"2.125":[-12.355,39.399,-15.936],"2.1667":[-12.288,38.945,-15.311],"2.2083":[-12.061,38.23,-14.878],"2.25":[-11.818,36.385,-14.638],"2.2917":[-12.373,34.64,-14.74],"2.3333":[-13.652,34.067,-15.764],"2.375":[-14.636,38.077,-16.461],"2.4167":[-15.264,39.727,-16.323],"2.4583":[-15.831,39.209,-15.841],"2.5":[-17.917,34.788,-15.436],"2.5417":[-19.982,30.311,-15.466],"2.5833":[-19.962,29.669,-15.287],"2.625":[-19.877,29.383,-15.165],"2.6667":[-19.66,29.129,-14.977],"2.7083":[-19.466,29.056,-14.849],"2.75":[-19.118,29.055,-14.654],"2.7917":[-18.724,29.139,-14.455],"2.8333":[-18.447,29.219,-14.321],"2.875":[-18.029,29.338,-14.118],"2.9167":[-17.759,29.395,-13.982],"2.9583":[-17.383,29.413,-13.776],"3.0":[-17.11,29.398,-13.618],"3.0417":[-16.479,29.524,-13.298],"3.0833":[-16.142,29.594,-13.127],"3.125":[-15.833,29.656,-12.97],"3.1667":[-15.63,29.697,-12.867],"3.2083":[-15.327,29.758,-12.713],"3.25":[-15.127,29.799,-12.612],"3.2917":[-14.83,29.859,-12.46],"3.3333":[-14.633,29.899,-12.36],"3.375":[-14.339,29.959,-12.211],"3.4167":[-14.144,29.998,-12.112],"3.4583":[-13.853,30.057,-11.965],"3.5":[-13.66,30.096,-11.867],"3.5417":[-13.371,30.154,-11.72],"3.5833":[-13.083,30.212,-11.573],"3.625":[-12.891,30.25,-11.476],"3.6667":[-12.603,30.306,-11.329],"3.7083":[-12.411,30.344,-11.231],"3.75":[-12.123,30.399,-11.084],"3.7917":[-11.922,30.425,-10.988],"3.8333":[-11.71,30.437,-10.862],"3.875":[-11.725,30.481,-10.771],"3.9167":[-11.771,30.491,-10.615],"3.9583":[-11.813,30.475,-10.502],"4.0":[-11.888,30.44,-10.33],"4.0417":[-11.941,30.425,-10.217],"4.0833":[-12.018,30.438,-10.059],"4.125":[-12.065,30.485,-9.965],"4.1667":[-12.12,30.639,-9.852],"4.2083":[-12.143,30.811,-9.799],"4.25":[-12.149,31.199,-9.762],"4.2917":[-12.124,31.614,-9.785],"4.3333":[-11.963,32.984,-10.036],"4.375":[-11.801,34.206,-10.303],"4.4167":[-11.534,36.069,-10.745],"4.4583":[-11.374,37.077,-11.004],"4.5":[-11.142,38.146,-11.371],"4.5417":[-10.984,38.69,-11.617],"4.5833":[-10.79,39.377,-11.921],"4.625":[-10.714,39.737,-12.038],"4.6667":[-10.667,40.061,-12.108],"4.7083":[-10.656,40.179,-12.13],"4.75":[-10.688,40.147,-12.097],"4.7917":[-10.764,40.074,-12.059],"4.8333":[-10.853,39.993,-12.043],"4.875":[-11.032,39.829,-12.077],"4.9167":[-11.193,39.719,-12.112],"4.9583":[-11.492,39.582,-12.177],"5.0":[-11.735,39.5,-12.22],"5.0417":[-12.208,39.38,-12.255],"5.0833":[-12.611,39.289,-12.271],"5.125":[-13.383,39.145,-12.299],"5.1667":[-14.039,39.072,-12.328],"5.2083":[-15.452,38.988,-12.395],"5.25":[-16.983,38.361,-12.44],"5.2917":[-22.964,37.353,-13.027],"5.3333":[-26.162,34.866,-10.716],"5.375":[-26.448,32.754,-9.616],"5.4167":[-26.219,31.517,-9.113],"5.4583":[-25.634,30.301,-8.814],"5.5":[-25.201,29.974,-8.908],"5.5417":[-24.424,29.86,-9.298],"5.5833":[-23.553,29.982,-9.865],"5.625":[-22.951,30.075,-10.271],"5.6667":[-22.065,30.052,-10.817],"5.7083":[-21.482,29.902,-11.135],"5.75":[-20.575,29.609,-11.625],"5.7917":[-19.962,29.386,-11.953],"5.8333":[-19.052,29.041,-12.439],"5.875":[-18.465,28.821,-12.753],"5.9167":[-17.637,28.537,-13.198],"5.9583":[-17.213,28.433,-13.42],"6.0":[-16.805,28.422,-13.656],"6.0417":[-17.829,29.762,-13.806],"6.0833":[-20.93,33.692,-14.09],"6.125":[-21.575,35.781,-14.849],"6.1667":[-19.844,37.936,-16.85],"6.2083":[-16.436,38.701,-17.444],"6.25":[-9.965,37.811,-17.988],"6.2917":[-5.116,35.849,-17.247],"6.3333":[-5.225,34.58,-12.872],"6.375":[-6.578,33.865,-12.338],"6.4167":[-8.14,33.922,-12.827],"6.4583":[-8.645,34.18,-13.361],"6.5":[-8.968,34.852,-13.738],"6.5417":[-9.007,35.285,-13.784],"6.5833":[-8.836,35.781,-13.731],"6.625":[-8.703,35.947,-13.667],"6.6667":[-8.487,36.096,-13.513],"6.7083":[-8.368,36.082,-13.409],"6.75":[-8.296,35.988,-13.355],"6.7917":[-8.284,35.91,-13.356],"6.8333":[-8.293,35.817,-13.371],"6.875":[-8.315,35.766,-13.39],"6.9167":[-8.347,35.708,-13.416],"6.9583":[-8.377,35.684,-13.439],"7.0":[-8.393,35.684,-13.45],"7.0417":[-8.414,35.697,-13.464],"7.0833":[-8.424,35.714,-13.471],"7.125":[-8.427,35.732,-13.472],"7.1667":[-8.427,35.742,-13.471],"7.2083":[-8.418,35.757,-13.464],"7.25":[-8.41,35.765,-13.455],"7.2917":[-8.394,35.767,-13.436],"7.3333":[-8.383,35.759,-13.426],"7.375":[-8.37,35.741,-13.418],"7.4167":[-8.363,35.727,-13.414],"7.4583":[-8.354,35.704,-13.406],"7.5":[-8.349,35.685,-13.399],"7.5417":[-8.343,35.657,-13.388],"7.5833":[-8.338,35.618,-13.37],"7.625":[-8.327,35.525,-13.318],"7.6667":[-8.328,35.405,-13.258],"7.7083":[-8.351,35.131,-13.125],"7.75":[-8.381,34.806,-12.974],"7.7917":[-8.4,34.569,-12.879],"7.8333":[-8.422,34.157,-12.748],"7.875":[-8.435,33.861,-12.666],"7.9167":[-8.454,33.446,-12.559],"7.9583":[-8.467,33.176,-12.498],"8.0":[-8.483,32.86,-12.433],"8.0417":[-8.489,32.728,-12.412],"8.0833":[-8.498,32.572,-12.394],"8.125":[-8.504,32.485,-12.385],"8.1667":[-8.514,32.382,-12.37],"8.2083":[-8.523,32.348,-12.362],"8.25":[-8.536,32.321,-12.35],"8.2917":[-8.546,32.312,-12.343],"8.3333":[-8.559,32.31,-12.33],"8.375":[-8.567,32.311,-12.32],"8.4167":[-8.575,32.324,-12.303],"8.4583":[-8.58,32.345,-12.286],"8.5":[-8.586,32.403,-12.245],"8.5417":[-8.588,32.459,-12.211],"8.5833":[-8.59,32.571,-12.157],"8.625":[-8.588,32.664,-12.12],"8.6667":[-8.58,32.818,-12.065],"8.7083":[-8.574,32.932,-12.028],"8.75":[-8.561,33.142,-11.965],"8.7917":[-8.55,33.31,-11.912],"8.8333":[-8.533,33.582,-11.837],"8.875":[-8.52,33.764,-11.804],"8.9167":[-8.502,34.041,-11.785],"8.9583":[-8.482,34.325,-11.784],"9.0":[-8.469,34.509,-11.788],"9.0417":[-8.448,34.765,-11.79],"9.0833":[-8.433,34.911,-11.789],"9.125":[-8.41,35.08,-11.791],"9.1667":[-8.399,35.169,-11.792],"9.2083":[-8.387,35.275,-11.795],"9.25":[-8.38,35.333,-11.798],"9.2917":[-8.371,35.405,-11.807],"9.3333":[-8.366,35.44,-11.811],"9.375":[-8.359,35.481,-11.827],"9.4167":[-8.352,35.51,-11.858],"9.4583":[-8.326,35.562,-12.041],"9.5":[-8.271,35.615,-12.51],"9.5417":[-8.176,35.704,-13.336],"9.5833":[-8.114,35.782,-13.883],"9.625":[-8.056,36.013,-14.539],"9.6667":[-8.079,36.175,-14.726],"9.7083":[-8.147,36.445,-14.55],"9.75":[-8.418,36.432,-13.751],"9.7917":[-8.674,36.74,-13.606],"9.8333":[-9.261,36.947,-13.694],"9.875":[-9.732,36.924,-13.645],"9.9167":[-10.316,36.567,-13.31],"9.9583":[-10.7,36.158,-13.075],"10.0":[-11.373,35.261,-12.434],"10.0417":[-12.147,34.649,-11.656],"10.0833":[-14.917,35.217,-10.495],"10.125":[-15.924,37.245,-10.974],"10.1667":[-15.46,41.241,-12.485],"10.2083":[-14.673,43.009,-13.626],"10.25":[-12.052,43.34,-15.981],"10.2917":[-9.746,39.802,-16.921],"10.3333":[-6.448,38.998,-15.752],"10.375":[-5.267,39.949,-14.938],"10.4167":[-4.878,41.016,-14.904],"10.4583":[-5.031,41.58,-15.609],"10.5":[-5.649,41.629,-16.787],"10.5417":[-6.122,41.164,-17.156],"10.5833":[-6.906,39.97,-16.566],"10.625":[-7.727,39.173,-15.276],"10.6667":[-8.954,38.902,-14.114],"10.7083":[-9.615,39.301,-13.807],"10.75":[-10.45,40.261,-14.223],"10.7917":[-10.629,40.589,-14.856],"10.8333":[-10.674,40.765,-16.017],"10.875":[-10.442,40.672,-16.308],"10.9167":[-10.419,40.304,-16.887],"10.9583":[-10.442,39.951,-17.228],"11.0":[-10.467,39.186,-17.638],"11.0417":[-10.336,38.763,-17.781],"11.0833":[-9.757,38.675,-17.563],"11.125":[-9.15,39.106,-17.198],"11.1667":[-9.057,39.576,-17.052],"11.2083":[-9.282,40.139,-17.031],"11.25":[-9.483,40.291,-17.1],"11.2917":[-9.968,40.348,-17.28],"11.3333":[-10.266,40.232,-17.394],"11.375":[-10.784,39.911,-17.476],"11.4167":[-11.071,39.667,-17.416],"11.4583":[-11.489,39.373,-17.008],"11.5":[-11.928,39.304,-16.5],"11.5417":[-12.597,39.637,-15.855],"11.5833":[-13.08,40.051,-15.718],"11.625":[-13.686,41.12,-15.912],"11.6667":[-13.768,41.571,-16.58],"11.7083":[-13.638,41.48,-17.3],"11.75":[-13.598,41.216,-17.603],"11.7917":[-13.712,40.323,-17.927],"11.8333":[-13.824,39.67,-17.965],"11.875":[-14.141,38.907,-17.922],"11.9167":[-14.493,38.103,-17.727],"11.9583":[-14.614,37.271,-17.56],"12.0":[-14.457,35.741,-17.504],"12.0417":[-13.926,34.872,-17.696],"12.0833":[-11.681,34.702,-17.586],"12.125":[-11.101,35.859,-17.323],"12.1667":[-11.813,36.167,-17.083],"12.2083":[-13.238,35.01,-15.529],"12.25":[-15.753,32.514,-11.303],"12.2917":[-18.302,32.535,-10.935],"12.3333":[-23.335,34.347,-13.26],"12.375":[-25.799,36.004,-15.388],"12.4167":[-24.495,39.683,-17.211],"12.4583":[-20.682,42.984,-17.858],"12.5":[-14.804,45.94,-18.59],"12.5417":[-7.428,45.709,-18.483],"12.5833":[-0.373,40.174,-16.064],"12.625":[-0.562,38.603,-14.44],"12.6667":[-2.415,38.123,-13.548],"12.7083":[-2.952,38.244,-14.138],"12.75":[-3.11,38.888,-14.733],"12.7917":[-3.058,39.292,-14.799],"12.8333":[-2.928,39.571,-14.77],"12.875":[-2.881,39.584,-14.73],"12.9167":[-2.85,39.525,-14.692],"12.9583":[-2.856,39.487,-14.688],"13.0":[-2.881,39.451,-14.692],"13.0417":[-2.899,39.44,-14.698],"13.0833":[-2.911,39.442,-14.707],"13.125":[-2.914,39.449,-14.711],"13.1667":[-2.914,39.453,-14.712],"13.2083":[-2.911,39.457,-14.712],"13.25":[-2.909,39.459,-14.711],"13.2917":[-2.905,39.459,-14.709],"13.3333":[-2.904,39.459,-14.709],"13.375":[-2.903,39.457,-14.708],"13.4167":[-2.903,39.457,-14.708]}},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.0833":[4.9574,-0.6518,7.4718],"0.2917":[4.9953,0.2178,-2.4905],"0.4167":[-20.0047,0.2178,-2.4905],"0.5833":[-17.9936,-8.893,-28.5413],"0.6667":[0,0,0],"0.75":[-25,0,0],"0.875":[-10.0691,-2.6822,-14.7637],"0.9167":[-31.0415,-1.6093,-8.8582],"0.9583":[0,0,0],"1.0":[40,0,-11.25],"1.0417":[10,0,-22.5],"1.125":[17.7632,0,-11.8421],"1.2083":[0,0,0],"1.2917":[-12.5,0,0],"1.625":[-12.5,0,0],"1.7083":[-9.6385,-7.9972,-39.3247],"1.8333":[14.7822,2.5759,-9.6658],"2.0833":[0,0,0],"4.5417":[0,0,0],"10.1667":[0,0,0],"10.375":[-15,0,-20],"10.5":[0,0,0],"10.6667":[-53.6609,-24.9417,-17.2344],"10.7083":[-24.7422,-25.8209,-31.4258],"10.75":[-4.3955,-15.236,-41.9872],"10.7917":[0,0,0],"11.1667":[0,0,0],"11.5":[-27.5,0,0],"11.6667":[0,0,0]},"position":{"0.0":[0,2.5,0],"4.5417":[0,2.5,0],"4.8333":[-0.5917,1.84,-0.463],"5.7083":[-0.5917,1.84,-0.463],"6.1667":[0,2.5,0],"9.7917":[0,2.5,0],"10.0417":[0,4.5,0],"12.25":[0,4.5,0],"12.5417":[0,2.5,0]},"scale":[1,1.5,1]},"annihil":{"rotation":{"0.0":[-13.254,-19.959,81.045],"0.0417":[-21.42,-69.04,64.361],"0.0833":[71.276,-79.702,-80.947],"0.125":[93.057,-72.3,-138.743],"0.1667":[24.143,-22.7,-130.369],"0.2083":[-2.795,-16.237,-137.929],"0.25":[-41.705,24.75,-200.313],"0.2917":[-57.097,24.756,-240.661],"0.3333":[-54.207,18.583,-300.953],"0.375":[-36.633,31.313,-325.976],"0.4167":[16.528,43.08,-316.944],"0.4583":[49.765,35.149,-299.316],"0.5":[91.476,13.57,-243.045],"0.5417":[53.475,-8.903,-204.888],"0.5833":[-13.07,-36.346,-149.917],"0.625":[-42.011,6.29,-93.812],"0.6667":[-21.598,17.856,-62.887],"0.7083":[21.411,7.041,0.362],"0.75":[33.703,2.824,43.341],"0.7917":[26.355,-5.063,74.835],"0.8333":[15.579,-10.965,83.562],"0.875":[2.498,-8.61,103.414],"0.9167":[-7.505,-8.905,115.414],"0.9583":[-27.048,-8.198,133.813],"1.0":[-35.336,12.315,134.297],"1.0417":[-62.751,25.356,145.706],"1.0833":[-76.659,38.237,147.712],"1.125":[-30.041,44.187,237.97],"1.1667":[-8.767,2.096,292.227],"1.2083":[19.848,-13.408,322.484],"1.25":[53.017,-25.574,320.629],"1.2917":[109.402,-12.589,277.561],"1.3333":[118.99,31.663,272.672],"1.375":[181.959,58.614,346.284],"1.4167":[233.79,33.984,395.376],"1.4583":[252.181,20.369,400.857],"1.5":[289.218,24.084,387.076],"1.5417":[317.579,30.329,384.397],"1.5833":[361.216,45.018,396.402],"1.625":[399.267,42.889,434.554],"1.6667":[421.279,5.606,489.69],"1.7083":[396.581,-9.951,522.844],"1.75":[352.659,-18.468,562.859],"1.7917":[335.012,-23.935,593.164],"1.8333":[338.729,-11.021,616.663],"1.875":[350.791,-11.239,631.467],"1.9167":[386.676,-31.615,635.995],"1.9583":[419.609,-36.037,618.969],"2.0":[464.331,-12.821,626.458],"2.0417":[480.994,25.467,577.242],"2.0833":[347.154,54.915,444.444],"2.125":[317.159,27.949,451.692],"2.1667":[277.193,24.781,488.908],"2.2083":[282.203,46.823,532.154],"2.25":[341.73,41.869,602.048],"2.2917":[361.272,28.063,628.441],"2.3333":[371.207,8.095,668.402],"2.375":[368.977,-4.751,724.813],"2.4167":[355.894,21.63,794.48],"2.4583":[339.136,34.976,828.035],"2.5":[357.807,50.256,912.923],"2.5417":[360.438,49.802,964.66],"2.5833":[345.602,68.738,1024.208],"2.625":[346.528,77.731,1062.68],"2.6667":[318.293,86.727,1085.197],"2.7083":[227.994,78.584,1029.899],"2.75":[199.649,57.571,1055.218],"2.7917":[178.118,54.593,1085.546],"2.8333":[167.785,60.06,1107.271],"2.875":[179.742,64.58,1162.558],"2.9167":[193.648,52.518,1203.69],"2.9583":[185.83,13.781,1239.464],"3.0":[214.098,-2.881,1189.413],"3.0417":[260.274,9.203,1183.108],"3.0833":[270.501,-10.002,1166.525],"3.125":[306.731,-56.931,1126.786],"3.1667":[402.85,-75.199,1063.963],"3.2083":[474.367,-38.623,1034.43],"3.25":[497.284,-23.402,1042.392],"3.2917":[524.162,-46.671,1050.048],"3.3333":[564.54,-69.714,1010.474],"3.375":[631.748,3.671,949.121],"3.4167":[591.086,42.272,899.613],"3.4583":[491.895,72.399,787.196],"3.5":[473.937,40.631,743.537],"3.5417":[503.465,11.316,724.707],"3.5833":[491.261,-34.231,714.165],"3.625":[481.961,-48.231,696.2],"3.6667":[498.483,-70.209,673.934],"3.7083":[520.973,-76.066,651.241],"3.75":[553.35,-78.776,617.895],"3.7917":[552.641,-77.25,616.731],"3.8333":[559.133,-85.334,607.249],"3.875":[563.298,-87.178,603.346],"3.9167":[542.372,-84.902,627.084],"3.9583":[545.942,-84.082,624.356],"4.0":[550.566,-83.324,620.293],"4.0417":[552.398,-83.198,618.482],"4.0833":[553.666,-83.11,617.059],"4.125":[552.311,-83.139,618.294],"4.1667":[548.921,-83.212,621.554],"4.2083":[548.191,-83.222,622.176],"4.25":[548.718,-83.207,621.496],"4.2917":[549.666,-83.187,620.449],"4.3333":[550.676,-83.15,619.323],"4.375":[550.853,-83.13,619.107],"4.4167":[550.724,-83.134,619.171],"4.4583":[550.672,-83.176,619.164],"4.5":[550.797,-83.281,618.915],"4.5417":[550.648,-83.372,618.937],"4.5833":[551.507,-83.654,617.791],"4.625":[553.551,-83.982,615.481],"4.6667":[558.005,-84.603,610.571],"4.7083":[562.226,-85.047,606.023],"4.75":[570.208,-85.602,597.579],"4.7917":[585.076,-86.012,582.041],"4.8333":[595.409,-85.959,571.219],"4.875":[602.021,-85.419,564.025],"4.9167":[602.709,-84.96,563.007],"4.9583":[595.411,-84.104,570.012],"5.0":[588.14,-83.368,577.198],"5.0417":[584.982,-82.884,580.088],"5.0833":[584.925,-82.942,579.952],"5.125":[583.499,-83.366,581.278],"5.1667":[579.67,-83.24,585.068],"5.2083":[571.69,-82.344,593.006],"5.25":[567.513,-81.473,597.25],"5.2917":[583.495,-77.707,584.315],"5.3333":[603.149,-72.875,572.947],"5.375":[646.398,-51.472,549.386],"5.4167":[656.539,-4.217,548.13],"5.4583":[597.373,38.878,504.304],"5.5":[582.115,16.674,487.85],"5.5417":[569.63,0.242,485.361],"5.5833":[558.045,-12.811,488.678],"5.625":[551.177,-19.975,493.144],"5.6667":[542.78,-29.382,502.187],"5.7083":[537.506,-33.581,509.674],"5.75":[534.791,-40.076,522.022],"5.7917":[537.972,-46.9,532.341],"5.8333":[561.564,-66.319,579.669],"5.875":[558.945,-35.176,612.257],"5.9167":[554.523,-20.979,676.732],"5.9583":[541.589,0.159,718.649],"6.0":[548.065,33.195,780.087],"6.0417":[548.586,49.112,820.803],"6.0833":[523.669,79.385,861.075],"6.125":[482.24,88.55,861.287],"6.1667":[495.063,100.495,931.678],"6.2083":[516.845,107.608,988.299],"6.25":[529.526,127.76,1051.066],"6.2917":[534.574,123.929,1065.676],"6.3333":[531.435,115.174,1074.429],"6.375":[562.291,97.023,1104.405],"6.4167":[577.765,95.989,1119.037],"6.4583":[563.26,96.216,1103.852],"6.5":[549.946,96.884,1090.067],"6.5417":[544.331,97.455,1084.109],"6.5833":[542.902,97.485,1082.244],"6.625":[543.856,97.161,1083.13],"6.6667":[544.914,95.617,1084.229],"6.7083":[548.175,95.055,1087.847],"6.75":[551.256,94.69,1091.349],"6.7917":[552.201,94.572,1092.495],"6.8333":[553.079,94.474,1093.62],"6.875":[553.25,94.453,1093.913],"6.9167":[552.86,94.286,1093.547],"6.9583":[551.473,94.113,1092.076],"7.0":[550.061,94.066,1090.61],"7.0417":[548.369,94.081,1088.819],"7.0833":[547.871,94.193,1088.237],"7.125":[547.515,94.439,1087.802],"7.1667":[547.438,94.59,1087.682],"7.2083":[547.629,94.744,1087.809],"7.25":[547.678,94.814,1087.839],"7.2917":[547.791,94.861,1087.958],"7.3333":[548.112,94.843,1088.284],"7.375":[548.615,94.677,1088.818],"7.4167":[548.794,94.612,1089.012],"7.4583":[548.913,94.581,1089.153],"7.5":[548.947,94.586,1089.202],"7.5417":[548.956,94.603,1089.228],"7.5833":[548.808,94.704,1089.094],"7.625":[548.165,95.204,1088.459],"7.6667":[547.674,95.495,1087.993],"7.7083":[546.272,95.591,1086.678],"7.75":[545.019,95.596,1085.523],"7.7917":[545.388,95.659,1085.936],"7.8333":[548.796,96.057,1089.34],"7.875":[551.883,96.364,1092.403],"7.9167":[556.587,96.341,1097.101],"7.9583":[561.087,95.859,1101.618],"8.0":[568.854,95.14,1109.409],"8.0417":[573.052,94.903,1113.6],"8.0833":[578.768,94.659,1119.297],"8.125":[582.504,94.518,1123.018],"8.1667":[588.774,94.254,1129.282],"8.2083":[592.909,94.058,1133.424],"8.25":[597.719,93.858,1138.243],"8.2917":[600.412,93.756,1140.947],"8.3333":[604.288,93.628,1144.829],"8.375":[607.056,93.544,1147.601],"8.4167":[611.456,93.422,1151.996],"8.4583":[613.181,93.367,1153.707],"8.5":[612.227,93.324,1152.698],"8.5417":[609.416,93.327,1149.843],"8.5833":[601.958,93.437,1142.326],"8.625":[595.625,93.572,1135.95],"8.6667":[585.978,93.918,1126.232],"8.7083":[579.778,94.21,1119.982],"8.75":[569.747,94.6,1109.885],"8.7917":[562.081,94.853,1102.174],"8.8333":[551.349,95.357,1091.383],"8.875":[546.302,95.774,1086.308],"8.9167":[541.449,96.488,1081.432],"8.9583":[538.157,97.241,1078.125],"9.0":[536.491,97.714,1076.453],"9.0417":[534.31,98.332,1074.265],"9.0833":[532.982,98.591,1072.939],"9.125":[531.244,98.717,1071.212],"9.1667":[530.26,98.74,1070.239],"9.2083":[528.867,98.689,1068.858],"9.25":[528.032,98.623,1068.037],"9.2917":[527.002,98.531,1067.039],"9.3333":[526.509,98.492,1066.563],"9.375":[525.937,98.396,1066.04],"9.4167":[525.612,98.259,1065.796],"9.4583":[525.566,97.557,1066.188],"9.5":[521.769,95.937,1063.745],"9.5417":[472.373,96.395,1018.854],"9.5833":[446.738,101.096,997.178],"9.625":[428.103,114.041,983.808],"9.6667":[416.536,133.813,973.192],"9.7083":[419.129,168.703,961.17],"9.75":[455.461,186.129,939.335],"9.7917":[486.654,182.689,932.821],"9.8333":[538.321,161.43,930.978],"9.875":[584.141,133.697,970.242],"9.9167":[607.48,149.146,1039.733],"9.9583":[588.48,160.267,1057.877],"10.0":[550.412,178.594,1080.372],"10.0417":[516.011,195.883,1112.604],"10.0833":[492.964,182.288,1193.376],"10.125":[514.724,166.219,1231.342],"10.1667":[554.39,159.105,1293.012],"10.2083":[572.109,164.527,1336.829],"10.25":[573.645,162.345,1389.42],"10.2917":[548.728,151.89,1423.205],"10.3333":[468.368,144.261,1375.819],"10.375":[447.73,198.119,1351.754],"10.4167":[547.49,247.204,1238.05],"10.4583":[607.812,223.806,1157.316],"10.5":[611.135,201.98,1109.795],"10.5417":[592.357,206.942,1098.091],"10.5833":[540.84,218.477,1105.811],"10.625":[469.224,215.639,1151.075],"10.6667":[467.337,153.324,1216.743],"10.7083":[537.787,142.858,1273.63],"10.75":[603.63,156.985,1359.673],"10.7917":[589.792,181.655,1411.137],"10.8333":[554.258,178.002,1444.571],"10.875":[535.079,171.691,1464.407],"10.9167":[532.5,160.992,1487.061],"10.9583":[545.367,173.632,1508.84],"11.0":[593.624,178.207,1513.671],"11.0417":[629.085,176.64,1514.053],"11.0833":[650.709,135.36,1467.819],"11.125":[515.56,129.652,1321.036],"11.1667":[472.996,166.8,1281.869],"11.2083":[468.504,230.015,1241.263],"11.25":[529.121,249.247,1170.985],"11.2917":[588.911,237.2,1108.789],"11.3333":[593.204,229.094,1097.749],"11.375":[598.991,247.314,1064.001],"11.4167":[548.631,280.935,1096.106],"11.4583":[581.288,331.721,1049.548],"11.5":[598.193,363.521,1045.601],"11.5417":[677.177,401.252,1086.778],"11.5833":[734.03,409.493,1124.681],"11.625":[782.787,376.613,1190.4],"11.6667":[757.707,362.11,1230.071],"11.7083":[708.203,353.281,1279.561],"11.75":[698.822,350.288,1313.103],"11.7917":[716.954,338.063,1335.919],"11.8333":[749.845,343.363,1333.486],"11.875":[785.096,347.343,1328.512],"11.9167":[813.178,359.453,1292.297],"11.9583":[808.459,385.199,1257.666],"12.0":[743.58,405.711,1175.056],"12.0417":[698.7,392.185,1134.185],"12.0833":[678.809,356.583,1091.721],"12.125":[684.046,310.87,1052.825],"12.1667":[651.729,297.237,1047.603],"12.2083":[650.951,283.925,1015.971],"12.25":[737.676,285.106,884.215],"12.2917":[739.684,293.006,853.16],"12.3333":[731.154,295.255,817.582],"12.375":[727.285,288.664,791.238],"12.4167":[722.716,296.612,754.949],"12.4583":[715.236,308.593,738.924],"12.5":[716.335,328.37,717.51],"12.5417":[716.896,336.375,715.299],"12.5833":[710.667,362.133,773.268],"12.625":[703.541,370.387,787.654],"12.6667":[702.552,380.365,800.331],"12.7083":[706.268,388.207,803.967],"12.75":[709.464,398.168,807.365],"12.7917":[708.417,402.73,808.159],"12.8333":[705.583,404.946,807.742],"12.875":[704.509,404.347,807.885],"12.9167":[703.831,403.308,808.274],"12.9583":[703.974,402.781,808.84],"13.0":[704.3,402.11,809.508],"13.0417":[704.516,401.838,809.758],"13.0833":[704.724,401.831,809.772],"13.125":[704.901,401.893,809.828],"13.1667":[705.031,401.931,809.915],"13.2083":[705.129,401.999,810.008],"13.25":[705.153,402.047,810.042],"13.2917":[705.153,402.133,810.046],"13.3333":[705.153,402.191,810.042],"13.375":[705.141,402.276,810.031],"13.4167":[705.141,402.304,810.031]},"position":{"0.0":[6.649,52.114,-16.888],"0.0417":[7.936,53.553,-17.189],"0.0833":[7.435,55.81,-16.384],"0.125":[6.578,58.185,-15.464],"0.1667":[6.247,60.031,-16.809],"0.2083":[4.81,60.332,-18.803],"0.25":[0.97,58.257,-18.254],"0.2917":[-0.613,56.501,-17.646],"0.3333":[-2.631,56.153,-16.333],"0.375":[-4.374,56.062,-15.417],"0.4167":[-6.552,55.692,-14.855],"0.4583":[-7.242,55.524,-14.559],"0.5":[-6.481,56.088,-13.701],"0.5417":[-6.639,53.752,-14.273],"0.5833":[-7.626,50.702,-15.524],"0.625":[-8.996,49.505,-15.631],"0.6667":[-9.338,49.895,-15.663],"0.7083":[-9.464,50.971,-16.837],"0.75":[-9.454,51.387,-18.036],"0.7917":[-7.44,52.23,-20.242],"0.8333":[-5.045,52.241,-21.469],"0.875":[-1.758,51.716,-21.966],"0.9167":[-1.086,51.472,-21.294],"0.9583":[-1.564,51.783,-20.56],"1.0":[-1.419,51.258,-20.893],"1.0417":[0.017,50.795,-19.511],"1.0833":[0.872,50.157,-19.5],"1.125":[1.031,48.822,-20.285],"1.1667":[1.05,48.498,-20.603],"1.2083":[1.609,48.091,-19.957],"1.25":[1.654,48.331,-18.685],"1.2917":[1.308,49.947,-17.003],"1.3333":[0.962,51.125,-17.456],"1.375":[-0.934,53.475,-17.083],"1.4167":[-2.315,55.483,-17.311],"1.4583":[-3.067,56.171,-18.193],"1.5":[-5.022,56.031,-19.094],"1.5417":[-6.482,55.444,-18.283],"1.5833":[-8.094,55.555,-16.499],"1.625":[-8.617,55.679,-16.122],"1.6667":[-9.251,55.623,-15.472],"1.7083":[-8.795,55.418,-16.301],"1.75":[-8.575,53.854,-18.049],"1.7917":[-8.085,53.427,-18.805],"1.8333":[-7.375,53.02,-19.639],"1.875":[-6.897,52.698,-19.857],"1.9167":[-5.779,53.01,-19.713],"1.9583":[-4.845,54.053,-19.276],"2.0":[-3.87,55.189,-17.688],"2.0417":[-4.251,56.002,-17.906],"2.0833":[-4.506,55.396,-17.795],"2.125":[-4.481,53.879,-18.058],"2.1667":[-3.946,52.206,-17.528],"2.2083":[-2.986,49.941,-15.811],"2.25":[-3.438,46.998,-15.68],"2.2917":[-4.76,45.106,-16.438],"2.3333":[-7.3,45.497,-18.726],"2.375":[-9.395,49.374,-20.423],"2.4167":[-6.755,56.719,-19.828],"2.4583":[-6.788,57.418,-18.575],"2.5":[-11.808,59.357,-19.995],"2.5417":[-14.877,65.267,-20.223],"2.5833":[-12.056,74.994,-19.859],"2.625":[-7.511,77.352,-19.879],"2.6667":[-0.574,75.064,-19.639],"2.7083":[1.846,71.054,-19.032],"2.75":[1.298,64.499,-18.901],"2.7917":[-1.974,60.868,-19.994],"2.8333":[-4.066,60.468,-20.451],"2.875":[-5.221,61.052,-19.925],"2.9167":[-3.973,60.568,-19.296],"2.9583":[0.245,55.575,-19.583],"3.0":[-5.436,52.983,-15.174],"3.0417":[-6.652,51.547,-10.577],"3.0833":[-7.083,51.538,-8.906],"3.125":[-7.395,53.233,-8.906],"3.1667":[-6.947,55.424,-10.704],"3.2083":[-4.487,57.716,-14.558],"3.25":[-2.276,56.737,-16.475],"3.2917":[1.529,54.913,-16.185],"3.3333":[3.627,54.216,-13.935],"3.375":[4.199,54.941,-10.772],"3.4167":[3.921,56.55,-11.908],"3.4583":[3.652,57.344,-13.742],"3.5":[2.464,57.028,-15.642],"3.5417":[2.509,55.556,-16.61],"3.5833":[4.685,57.251,-17.518],"3.625":[5.515,59.429,-17.61],"3.6667":[5.186,59.722,-15.825],"3.7083":[4.76,59.181,-15.372],"3.75":[4.816,56.253,-14.579],"3.7917":[5.282,54.115,-14.134],"3.8333":[5.723,54.642,-12.442],"3.875":[5.954,55.452,-12.067],"3.9167":[6.199,56.498,-12.273],"3.9583":[6.193,56.744,-12.374],"4.0":[6.134,56.947,-12.478],"4.0417":[6.081,57.007,-12.509],"4.0833":[6.003,57.047,-12.533],"4.125":[5.963,57.044,-12.542],"4.1667":[5.931,57.014,-12.549],"4.2083":[5.915,56.988,-12.546],"4.25":[5.899,56.956,-12.542],"4.2917":[5.891,56.94,-12.54],"4.3333":[5.887,56.914,-12.538],"4.375":[5.887,56.901,-12.538],"4.4167":[5.89,56.883,-12.534],"4.4583":[5.89,56.877,-12.532],"4.5":[5.89,56.867,-12.525],"4.5417":[5.89,56.861,-12.52],"4.5833":[5.887,56.844,-12.5],"4.625":[5.887,56.831,-12.475],"4.6667":[5.876,56.796,-12.425],"4.7083":[5.858,56.76,-12.385],"4.75":[5.819,56.696,-12.33],"4.7917":[5.747,56.567,-12.247],"4.8333":[5.697,56.461,-12.196],"4.875":[5.649,56.307,-12.162],"4.9167":[5.631,56.208,-12.156],"4.9583":[5.653,56.095,-12.185],"5.0":[5.705,56.041,-12.226],"5.0417":[5.817,55.986,-12.224],"5.0833":[5.92,55.973,-12.2],"5.125":[6.095,55.978,-12.187],"5.1667":[6.235,56.007,-12.203],"5.2083":[6.463,56.079,-12.258],"5.25":[6.685,56.153,-12.296],"5.2917":[9.35,56.911,-11.335],"5.3333":[13.826,57.521,-10.841],"5.375":[23.142,56.007,-9.555],"5.4167":[26.055,54.702,-7.7],"5.4583":[27.964,50.4,-13.697],"5.5":[27.515,44.935,-15.543],"5.5417":[23.654,43.366,-16.972],"5.5833":[19.054,42.976,-18.005],"5.625":[16.061,43.052,-18.479],"5.6667":[12.42,43.194,-18.879],"5.7083":[10.798,43.364,-18.908],"5.75":[8.707,44.305,-18.717],"5.7917":[7.021,45.828,-18.524],"5.8333":[2.721,50.949,-18.391],"5.875":[0.837,54.078,-18.802],"5.9167":[-3.75,56.532,-19.335],"5.9583":[-8.005,59.134,-20.702],"6.0":[-13.282,65.7,-20.435],"6.0417":[-13.916,71.141,-20.609],"6.0833":[-8.837,77.622,-21.124],"6.125":[-3.215,77.324,-20.603],"6.1667":[1.422,70.934,-19.848],"6.2083":[1.42,63.82,-19.982],"6.25":[-1.945,52.209,-20.059],"6.2917":[3.018,49.118,-18.599],"6.3333":[3.011,47.783,-13.835],"6.375":[1.717,47.133,-12.45],"6.4167":[0.156,47.178,-12.851],"6.4583":[-0.358,47.472,-13.449],"6.5":[-0.687,48.169,-13.894],"6.5417":[-0.73,48.617,-13.978],"6.5833":[-0.568,49.135,-13.93],"6.625":[-0.438,49.303,-13.85],"6.6667":[-0.219,49.45,-13.634],"6.7083":[-0.094,49.42,-13.504],"6.75":[-0.015,49.308,-13.429],"6.7917":[0.004,49.221,-13.424],"6.8333":[-0.002,49.117,-13.433],"6.875":[-0.018,49.061,-13.452],"6.9167":[-0.05,49.005,-13.473],"6.9583":[-0.078,48.983,-13.493],"7.0":[-0.094,48.987,-13.505],"7.0417":[-0.118,49.005,-13.523],"7.0833":[-0.126,49.025,-13.535],"7.125":[-0.129,49.045,-13.546],"7.1667":[-0.126,49.058,-13.55],"7.2083":[-0.118,49.074,-13.549],"7.25":[-0.107,49.084,-13.543],"7.2917":[-0.091,49.084,-13.526],"7.3333":[-0.077,49.077,-13.514],"7.375":[-0.062,49.057,-13.5],"7.4167":[-0.054,49.043,-13.492],"7.4583":[-0.044,49.018,-13.484],"7.5":[-0.037,48.999,-13.477],"7.5417":[-0.028,48.97,-13.466],"7.5833":[-0.023,48.931,-13.452],"7.625":[-0.007,48.838,-13.42],"7.6667":[-0.005,48.716,-13.372],"7.7083":[-0.024,48.439,-13.246],"7.75":[-0.052,48.11,-13.099],"7.7917":[-0.068,47.872,-13.006],"7.8333":[-0.087,47.459,-12.881],"7.875":[-0.098,47.163,-12.802],"7.9167":[-0.115,46.743,-12.678],"7.9583":[-0.128,46.47,-12.586],"8.0":[-0.145,46.151,-12.477],"8.0417":[-0.152,46.018,-12.435],"8.0833":[-0.161,45.861,-12.393],"8.125":[-0.167,45.772,-12.369],"8.1667":[-0.179,45.668,-12.329],"8.2083":[-0.187,45.633,-12.307],"8.25":[-0.203,45.607,-12.28],"8.2917":[-0.211,45.597,-12.262],"8.3333":[-0.223,45.594,-12.24],"8.375":[-0.231,45.594,-12.222],"8.4167":[-0.24,45.607,-12.193],"8.4583":[-0.245,45.628,-12.172],"8.5":[-0.25,45.687,-12.133],"8.5417":[-0.25,45.747,-12.108],"8.5833":[-0.249,45.863,-12.073],"8.625":[-0.244,45.96,-12.053],"8.6667":[-0.232,46.117,-12.03],"8.7083":[-0.223,46.234,-12.017],"8.75":[-0.206,46.45,-11.993],"8.7917":[-0.193,46.623,-11.97],"8.8333":[-0.173,46.902,-11.941],"8.875":[-0.159,47.087,-11.937],"8.9167":[-0.138,47.369,-11.958],"8.9583":[-0.116,47.653,-11.996],"9.0":[-0.101,47.839,-12.024],"9.0417":[-0.079,48.097,-12.058],"9.0833":[-0.063,48.242,-12.072],"9.125":[-0.037,48.414,-12.082],"9.1667":[-0.026,48.5,-12.087],"9.2083":[-0.013,48.609,-12.09],"9.25":[-0.005,48.665,-12.092],"9.2917":[0.007,48.736,-12.099],"9.3333":[0.013,48.771,-12.102],"9.375":[0.023,48.81,-12.115],"9.4167":[0.033,48.835,-12.14],"9.4583":[0.068,48.87,-12.292],"9.5":[0.145,48.895,-12.624],"9.5417":[0.297,48.889,-13.299],"9.5833":[0.402,48.888,-13.771],"9.625":[0.484,49.064,-14.286],"9.6667":[0.33,49.323,-14.189],"9.7083":[-0.28,50.715,-14.509],"9.75":[-2.163,51.834,-15.745],"9.7917":[-2.786,52.64,-15.22],"9.8333":[-3.895,53.048,-16.181],"9.875":[-4.699,53.186,-17.016],"9.9167":[-4.406,51.851,-18.667],"9.9583":[-4.991,49.691,-19.087],"10.0":[-7.357,47.122,-17.716],"10.0417":[-9.414,47.209,-15.547],"10.0833":[-11.272,50.243,-14.199],"10.125":[-11.438,52.246,-15.596],"10.1667":[-8.354,56.243,-17.17],"10.2083":[-7.634,56.432,-18.687],"10.25":[-4.604,55.262,-20.666],"10.2917":[-1.539,50.83,-20.546],"10.3333":[3.125,49.301,-16.939],"10.375":[5.28,51.888,-15.158],"10.4167":[5.03,55.973,-16.928],"10.4583":[4.295,57.071,-17.856],"10.5":[3.648,57.709,-19.179],"10.5417":[2.24,57.677,-19.822],"10.5833":[-1.978,55.399,-20.85],"10.625":[-5.198,52.769,-19.238],"10.6667":[-7.877,53.32,-15.48],"10.7083":[-8.261,54.23,-16.489],"10.75":[-6.835,56.246,-17.824],"10.7917":[-6.139,55.852,-18.015],"10.8333":[-5.376,55.146,-19.217],"10.875":[-4.377,53.892,-19.811],"10.9167":[-3.937,53.3,-20.281],"10.9583":[-3.33,53.242,-20.413],"11.0":[-2.22,52.923,-21.595],"11.0417":[-1.234,53.787,-21.443],"11.0833":[-1.317,55.027,-20.374],"11.125":[-2.539,55.701,-18.764],"11.1667":[-3.388,56.056,-18.84],"11.2083":[-3.981,56.388,-19.824],"11.25":[-4.031,56.402,-19.7],"11.2917":[-5.439,56.535,-19.69],"11.3333":[-6.221,56.182,-19.837],"11.375":[-7.488,55.271,-20.344],"11.4167":[-8.521,54.464,-20.031],"11.4583":[-8.918,54.06,-18.773],"11.5":[-9.248,54.348,-17.785],"11.5417":[-9.252,56.096,-17.368],"11.5833":[-9.271,57.017,-18.073],"11.625":[-8.398,56.896,-20.885],"11.6667":[-8.145,55.76,-21.126],"11.7083":[-7.863,55.111,-21.366],"11.75":[-7.918,54.775,-21.777],"11.7917":[-7.314,54.888,-21.627],"11.8333":[-7.289,55.13,-21.669],"11.875":[-7.284,55.674,-21.634],"11.9167":[-7.658,55.465,-21.456],"11.9583":[-8.061,54.452,-21.552],"12.0":[-8.795,52.413,-20.994],"12.0417":[-8.685,50.465,-20.91],"12.0833":[-5.464,50.114,-21.729],"12.125":[-3.1,52.488,-20.356],"12.1667":[-2.131,55.385,-20.071],"12.2083":[-1.205,57.539,-20.604],"12.25":[2.007,59.776,-21.561],"12.2917":[4.216,61.58,-21.794],"12.3333":[5.935,65.675,-21.839],"12.375":[5.176,68.564,-21.534],"12.4167":[2.11,71.007,-21.17],"12.4583":[-0.352,70.372,-20.615],"12.5":[-3.331,64.271,-20.509],"12.5417":[-0.163,59.872,-20.261],"12.5833":[7.842,52.955,-17.936],"12.625":[7.81,51.075,-16.149],"12.6667":[5.92,50.33,-15.331],"12.7083":[5.25,50.582,-16.096],"12.75":[4.992,51.46,-16.777],"12.7917":[5.074,51.948,-16.785],"12.8333":[5.272,52.232,-16.663],"12.875":[5.348,52.196,-16.598],"12.9167":[5.401,52.075,-16.546],"12.9583":[5.396,52.001,-16.548],"13.0":[5.368,51.928,-16.564],"13.0417":[5.348,51.904,-16.578],"13.0833":[5.331,51.911,-16.592],"13.125":[5.324,51.919,-16.602],"13.1667":[5.323,51.925,-16.606],"13.2083":[5.323,51.932,-16.608],"13.25":[5.323,51.934,-16.608],"13.2917":[5.328,51.936,-16.605],"13.3333":[5.328,51.936,-16.604],"13.375":[5.331,51.938,-16.603],"13.4167":[5.331,51.938,-16.603]}},"camera":{"rotation":{"0.0":[-0.019,0.004,0.003],"0.0417":[-0.076,0.019,0.013],"0.0833":[-0.198,0.051,0.034],"0.125":[-0.288,0.076,0.051],"0.1667":[-0.378,0.117,0.076],"0.2083":[-0.402,0.142,0.092],"0.25":[-0.337,0.179,0.115],"0.2917":[-0.239,0.21,0.129],"0.3333":[-0.06,0.248,0.143],"0.375":[0.095,0.268,0.147],"0.4167":[0.343,0.295,0.142],"0.4583":[0.467,0.303,0.131],"0.5":[0.537,0.313,0.097],"0.5417":[0.591,0.322,0.061],"0.5833":[0.658,0.335,-0.004],"0.625":[0.699,0.34,-0.072],"0.6667":[0.69,0.34,-0.113],"0.7083":[0.609,0.313,-0.162],"0.75":[0.527,0.253,-0.182],"0.7917":[0.332,0.11,-0.203],"0.8333":[0.213,0.03,-0.212],"0.875":[0.079,-0.052,-0.136],"0.9167":[-0.001,-0.098,-0.03],"0.9583":[-0.068,-0.151,0.145],"1.0":[-0.074,-0.18,0.228],"1.0417":[-0.068,-0.213,0.251],"1.0833":[-0.013,-0.217,0.183],"1.125":[0.129,-0.214,0.006],"1.1667":[0.242,-0.21,-0.115],"1.2083":[0.369,-0.203,-0.235],"1.25":[0.421,-0.195,-0.263],"1.2917":[0.376,-0.177,-0.241],"1.3333":[0.249,-0.159,-0.202],"1.375":[0.032,-0.132,-0.12],"1.4167":[-0.071,-0.082,-0.014],"1.4583":[-0.044,-0.02,0.063],"1.5":[0.089,0.097,0.177],"1.5417":[0.177,0.166,0.243],"1.5833":[0.319,0.256,0.279],"1.625":[0.398,0.291,0.202],"1.6667":[0.342,0.289,0.038],"1.7083":[0.213,0.276,-0.063],"1.75":[0.103,0.233,-0.164],"1.7917":[0.072,0.195,-0.212],"1.8333":[0.042,0.135,-0.265],"1.875":[0.036,0.096,-0.281],"1.9167":[0.03,0.049,-0.281],"1.9583":[0.041,0.033,-0.208],"2.0":[0.085,0.017,-0.03],"2.0417":[0.129,0.011,0.099],"2.0833":[0.183,0.008,0.227],"2.125":[0.237,0.01,0.227],"2.1667":[0.411,0.019,0.163],"2.2083":[0.564,0.028,0.099],"2.25":[0.75,0.048,-0.015],"2.2917":[0.788,0.065,-0.08],"2.3333":[0.1,0.164,-0.18],"2.375":[-0.69,0.267,-0.214],"2.4167":[-2.359,0.312,-0.182],"2.4583":[-3.646,0.301,-0.138],"2.5":[-5.634,0.266,-0.066],"2.5417":[-6.758,0.229,-0.027],"2.5833":[-7.735,0.16,0],"2.625":[-7.986,0.109,-0.015],"2.6667":[-8.22,0.03,-0.082],"2.7083":[-8.204,-0.017,-0.14],"2.75":[-7.832,-0.077,-0.224],"2.7917":[-6.894,-0.117,-0.287],"2.8333":[-5.748,-0.144,-0.323],"2.875":[-3.584,-0.169,-0.373],"2.9167":[-2.229,-0.165,-0.403],"2.9583":[-0.268,-0.118,-0.427],"3.0":[0.783,0.01,-0.358],"3.0417":[1.701,0.423,0.111],"3.0833":[1.467,0.455,0.232],"3.125":[0.708,0.456,0.316],"3.1667":[0.278,0.44,0.296],"3.2083":[-0.18,0.272,0.098],"3.25":[-0.086,0.106,-0.063],"3.2917":[0.224,-0.163,-0.287],"3.3333":[0.392,-0.312,-0.241],"3.375":[0.568,-0.446,0.202],"3.4167":[0.48,-0.455,0.313],"3.4583":[0.138,-0.401,0.425],"3.5":[-0.09,-0.336,0.456],"3.5417":[-0.282,-0.241,0.424],"3.5833":[-0.439,-0.147,0.28],"3.625":[-0.51,-0.086,0.155],"3.6667":[-0.555,-0.001,-0.032],"3.7083":[-0.249,0.051,-0.118],"3.75":[0.677,0.115,-0.128],"3.7917":[0.983,0.131,-0.037],"3.8333":[0.67,0.022,0.354],"3.875":[0.249,-0.087,0.276],"3.9167":[0.031,-0.06,0.036],"3.9583":[-0.096,-0.024,-0.066],"4.0":[-0.245,0.036,-0.091],"4.0417":[-0.238,0.039,-0.032],"4.0833":[-0.223,0.041,0.002],"4.125":[-0.208,0.041,0.012],"4.1667":[-0.179,0.038,0.018],"4.2083":[-0.162,0.037,0.02],"4.25":[-0.129,0.035,0.022],"4.2917":[-0.104,0.033,0.023],"4.3333":[-0.071,0.03,0.024],"4.375":[-0.046,0.028,0.024],"4.4167":[-0.014,0.025,0.024],"4.4583":[0.011,0.022,0.024],"4.5":[0.052,0.018,0.024],"4.5417":[0.077,0.015,0.025],"4.5833":[0.118,0.013,0.026],"4.625":[0.143,0.01,0.028],"4.6667":[0.176,0.007,0.031],"4.7083":[0.198,0.003,0.036],"4.75":[0.243,0.003,0.048],"4.7917":[0.31,0,0.09],"4.8333":[0.37,0.016,0.137],"4.875":[0.475,0.082,0.215],"4.9167":[0.542,0.147,0.258],"4.9583":[0.634,0.264,0.298],"5.0":[0.676,0.395,0.323],"5.0417":[0.712,0.639,0.357],"5.0833":[0.733,0.827,0.376],"5.125":[0.764,1.109,0.393],"5.1667":[0.779,1.268,0.396],"5.2083":[0.794,1.439,0.383],"5.25":[0.794,1.494,0.362],"5.2917":[0.663,1.521,0.278],"5.3333":[0.468,1.495,0.182],"5.375":[0.043,1.185,0.005],"5.4167":[-0.281,0.651,-0.105],"5.4583":[-0.627,-0.181,-0.233],"5.5":[-0.703,-0.609,-0.272],"5.5417":[-0.624,-0.836,-0.235],"5.5833":[-0.484,-0.991,-0.152],"5.625":[-0.318,-1.056,-0.091],"5.6667":[0.023,-1.109,-0.017],"5.7083":[0.225,-1.12,-0.001],"5.75":[0.414,-1.108,0],"5.7917":[0.439,-1.062,0],"5.8333":[0.27,-0.877,0.01],"5.875":[-0.559,-0.645,0.075],"5.9167":[-2.701,-0.187,0.232],"5.9583":[-4.365,0.144,0.335],"6.0":[-6.584,0.594,0.409],"6.0417":[-7.822,0.835,0.4],"6.0833":[-8.945,1.047,0.342],"6.125":[-9.204,1.071,0.285],"6.1667":[-9.105,0.952,0.191],"6.2083":[-8.431,0.78,0.13],"6.25":[-5.049,0.318,0.035],"6.2917":[-2.909,0.044,-0.038],"6.3333":[0.188,-0.313,-0.16],"6.375":[1.385,-0.329,-0.221],"6.4167":[1.593,-0.165,-0.081],"6.4583":[1.592,-0.038,0.036],"6.5":[1.318,0.096,0.075],"6.5417":[1.011,0.119,0.092],"6.5833":[0.539,0.113,0.105],"6.625":[0.232,0.091,0.075],"6.6667":[-0.205,0.05,0],"6.7083":[-0.335,0.016,-0.022],"6.75":[-0.37,-0.031,-0.042],"6.7917":[-0.347,-0.05,-0.049],"6.8333":[-0.209,-0.049,-0.048],"6.875":[-0.094,-0.039,-0.043],"6.9167":[0.052,-0.009,-0.025],"6.9583":[0.126,0.009,0],"7.0":[0.118,0.019,0.009],"7.0417":[0.085,0.029,0.016],"7.0833":[0.058,0.032,0.017],"7.125":[0.008,0.029,0.017],"7.1667":[-0.017,0.024,0.017],"7.2083":[-0.05,0.016,0.008],"7.25":[-0.067,0.011,0.001],"7.2917":[-0.067,0.006,0],"7.3333":[-0.065,0.003,0],"7.375":[-0.045,0,0],"7.4167":[-0.01,-0.002,0],"7.4583":[0.038,-0.004,0],"7.5":[0.052,-0.004,0],"7.5417":[0.059,-0.005,0],"7.5833":[0.038,-0.005,0],"7.625":[-0.042,-0.004,0],"7.6667":[-0.127,-0.003,0],"7.7083":[-0.317,-0.001,0],"7.75":[-0.651,0.001,0],"7.7917":[-0.979,0.004,0],"7.8333":[-1.594,0.008,0],"7.875":[-2.065,0.012,0],"7.9167":[-2.772,0.02,0],"7.9583":[-3.095,0.029,0],"8.0":[-3.462,0.048,0],"8.0417":[-3.663,0.062,0],"8.0833":[-3.899,0.089,0],"8.125":[-4.04,0.109,0],"8.1667":[-4.208,0.136,0],"8.2083":[-4.314,0.147,0],"8.25":[-4.42,0.162,0],"8.2917":[-4.465,0.172,0],"8.3333":[-4.482,0.184,0],"8.375":[-4.474,0.192,0],"8.4167":[-4.431,0.202,0],"8.4583":[-4.389,0.208,0],"8.5":[-4.31,0.217,0],"8.5417":[-4.225,0.221,0],"8.5833":[-4.03,0.228,0],"8.625":[-3.854,0.232,0],"8.6667":[-3.545,0.235,0],"8.7083":[-3.312,0.235,0],"8.75":[-2.941,0.234,0],"8.7917":[-2.675,0.223,0],"8.8333":[-2.263,0.192,0],"8.875":[-1.981,0.162,0],"8.9167":[-1.557,0.111,0],"8.9583":[-1.161,0.058,0],"9.0":[-0.913,0.025,0],"9.0417":[-0.574,-0.019,0],"9.0833":[-0.383,-0.039,0],"9.125":[-0.16,-0.064,0],"9.1667":[-0.038,-0.078,0],"9.2083":[0.118,-0.097,0],"9.25":[0.222,-0.109,0],"9.2917":[0.349,-0.123,0],"9.3333":[0.43,-0.13,0],"9.375":[0.545,-0.139,0],"9.4167":[0.615,-0.142,0],"9.4583":[0.718,-0.147,0],"9.5":[0.773,-0.147,0],"9.5417":[0.851,-0.145,0],"9.5833":[0.895,-0.143,0],"9.625":[0.939,-0.137,0],"9.6667":[0.95,-0.13,0],"9.7083":[0.973,-0.114,0],"9.75":[0.98,-0.084,0],"9.7917":[0.973,-0.065,0],"9.8333":[0.96,-0.007,0.002],"9.875":[0.946,0.042,0.005],"9.9167":[0.911,0.119,0.011],"9.9583":[0.884,0.178,0.014],"10.0":[0.842,0.245,0.021],"10.0417":[0.816,0.283,0.026],"10.0833":[0.771,0.313,0.031],"10.125":[0.726,0.316,0.035],"10.1667":[0.432,0.3,0.038],"10.2083":[0.22,0.288,0.041],"10.25":[-0.001,0.241,0.044],"10.2917":[0.061,0.098,-0.01],"10.3333":[0.257,-0.137,-0.189],"10.375":[0.318,-0.212,-0.266],"10.4167":[0.214,-0.229,-0.282],"10.4583":[0.116,-0.196,-0.287],"10.5":[0.026,-0.055,-0.292],"10.5417":[0.058,0.077,-0.275],"10.5833":[0.156,0.235,-0.18],"10.625":[0.222,0.294,0.009],"10.6667":[0.288,0.333,0.241],"10.7083":[0.255,0.34,0.224],"10.75":[0.146,0.34,0.155],"10.7917":[0.067,0.33,0.092],"10.8333":[0.001,0.302,-0.002],"10.875":[-0.003,0.227,-0.056],"10.9167":[0.026,0.048,-0.14],"10.9583":[0.067,0.019,-0.174],"11.0":[0.144,-0.004,-0.13],"11.0417":[0.186,-0.011,-0.042],"11.0833":[0.211,-0.022,0.13],"11.125":[0.186,-0.027,0.231],"11.1667":[0.161,-0.028,0.17],"11.2083":[0.103,-0.025,-0.022],"11.25":[0.07,-0.022,-0.083],"11.2917":[0.042,-0.013,-0.044],"11.3333":[0.053,0.001,0.005],"11.375":[0.109,0.043,0.079],"11.4167":[0.164,0.071,0.145],"11.4583":[0.253,0.113,0.202],"11.5":[0.286,0.141,0.194],"11.5417":[0.286,0.184,0.071],"11.5833":[0.265,0.205,-0.001],"11.625":[0.143,0.229,-0.047],"11.6667":[0.033,0.238,-0.064],"11.7083":[-0.012,0.226,-0.085],"11.75":[-0.001,0.198,-0.093],"11.7917":[0.033,0.165,-0.081],"11.8333":[0.129,0.159,-0.055],"11.875":[0.349,0.163,0.005],"11.9167":[0.59,0.177,0.075],"11.9583":[0.739,0.188,0.118],"12.0":[0.902,0.203,0.162],"12.0417":[0.937,0.206,0.171],"12.0833":[0.891,0.193,0.076],"12.125":[0.739,0.172,-0.019],"12.1667":[0.098,0.138,-0.162],"12.2083":[-0.474,0.124,-0.211],"12.25":[-1.382,0.117,-0.171],"12.2917":[-2.015,0.12,-0.115],"12.3333":[-2.907,0.132,-0.025],"12.375":[-3.4,0.142,0.022],"12.4167":[-3.7,0.156,0.085],"12.4583":[-3.399,0.161,0.123],"12.5":[-2.294,0.156,0.161],"12.5417":[-1.245,0.065,0.158],"12.5833":[0.21,-0.141,0.114],"12.625":[0.411,-0.124,0.077],"12.6667":[0.556,-0.061,0.017],"12.7083":[0.532,-0.031,-0.019],"12.75":[0.198,0.007,-0.076],"12.7917":[-0.002,0.016,-0.109],"12.8333":[-0.105,0.005,-0.15],"12.875":[-0.111,-0.004,-0.161],"12.9167":[-0.085,-0.009,-0.144],"12.9583":[-0.052,-0.008,-0.124],"13.0":[-0.002,-0.006,-0.094],"13.0417":[0.023,-0.004,-0.068],"13.0833":[0.023,-0.001,-0.038],"13.125":[0.015,0.001,-0.008],"13.1667":[0.001,0.001,0.007],"13.2083":[-0.01,0.001,0.014],"13.25":[-0.01,0.001,0.014],"13.2917":[-0.004,0.001,0.009],"13.3333":[-0.004,0.001,0.004],"13.375":[0.001,0.001,0],"13.4167":[0.001,0.001,0]}},"devil":{"scale":0},"angel":{"position":[2,0,0]}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_inspect_1"}}},"inspect_1":{"loop":true,"animation_length":9.6621,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-13.881,171.838,-60.671],"0.0417":[-16.604,170.499,-60.045],"0.0833":[-24.034,167.116,-59.307],"0.125":[-31.733,163.981,-59.476],"0.1667":[-46.189,157.786,-60.697],"0.2083":[-56.373,153.22,-62.346],"0.25":[-57.24,152.83,-62.522],"0.2917":[-57.239,152.83,-62.522],"0.3333":[-57.238,152.83,-62.522],"0.375":[-57.238,152.83,-62.522],"0.4167":[-57.237,152.831,-62.522],"0.4583":[-57.237,152.83,-62.522],"0.5":[-57.236,152.831,-62.522],"0.5417":[-57.235,152.831,-62.522],"0.5833":[-57.237,152.83,-62.522],"0.625":[-57.237,152.831,-62.522],"0.6667":[-57.236,152.831,-62.522],"0.8333":[-57.236,152.83,-62.522],"0.875":[-57.236,152.83,-62.522],"0.9167":[-57.236,152.83,-62.522],"0.9583":[-57.236,152.83,-62.523],"1.0":[-57.236,152.83,-62.522],"1.0417":[-57.236,152.83,-62.522],"1.0833":[-57.236,152.83,-62.523],"1.125":[-57.237,152.831,-62.521],"1.375":[-57.236,152.831,-62.521],"2.2083":[-57.236,152.831,-62.521],"2.25":[-57.236,152.83,-62.523],"3.3333":[-57.235,152.83,-62.522],"3.625":[-57.237,152.83,-62.523],"3.6667":[-57.237,152.83,-62.523],"3.7083":[-57.236,152.83,-62.523],"3.875":[-57.236,152.831,-62.522],"3.9167":[-57.236,152.831,-62.522],"3.9583":[-57.236,152.83,-62.521],"4.0":[-57.236,152.831,-62.522],"4.0417":[-57.236,152.83,-62.521],"4.0833":[-57.236,152.831,-62.522],"4.125":[-57.237,152.831,-62.522],"4.1667":[-57.236,152.831,-62.522],"4.2083":[-57.237,152.831,-62.522],"4.25":[-57.236,152.831,-62.522],"4.2917":[-57.235,152.831,-62.522],"4.3333":[-57.237,152.831,-62.522],"4.375":[-57.236,152.831,-62.522],"4.4167":[-57.236,152.831,-62.522],"4.5":[-57.236,152.831,-62.522],"4.5417":[-57.236,152.831,-62.522],"4.625":[-57.21,152.854,-62.491],"4.6667":[-57.109,152.94,-62.376],"4.7083":[-56.887,153.132,-62.122],"4.75":[-56.693,153.3,-61.901],"4.7917":[-56.342,153.612,-61.499],"4.8333":[-56.067,153.859,-61.185],"4.875":[-55.602,154.288,-60.653],"4.9167":[-55.078,154.785,-60.051],"4.9583":[-54.699,155.155,-59.614],"5.0":[-54.09,155.765,-58.914],"5.0417":[-53.66,156.209,-58.417],"5.0833":[-52.986,156.929,-57.637],"5.125":[-52.518,157.445,-57.094],"5.1667":[-51.797,158.272,-56.254],"5.2083":[-51.304,158.858,-55.677],"5.25":[-50.552,159.787,-54.795],"5.2917":[-50.045,160.44,-54.197],"5.3333":[-49.279,161.465,-53.29],"5.375":[-48.768,162.18,-52.68],"5.4167":[-48.002,163.296,-51.764],"5.4583":[-47.495,164.068,-51.153],"5.5":[-46.742,165.266,-50.239],"5.5417":[-46.001,166.508,-49.334],"5.5833":[-45.517,167.359,-48.737],"5.625":[-44.804,168.667,-47.851],"5.6667":[-44.34,169.558,-47.269],"5.7083":[-43.661,170.921,-46.412],"5.75":[-43.222,171.845,-45.852],"5.7917":[-42.584,173.251,-45.03],"5.8333":[-42.173,174.199,-44.494],"5.875":[-41.578,175.634,-43.712],"5.9167":[-41.011,177.08,-42.955],"5.9583":[-40.648,178.048,-42.465],"6.0":[-40.127,179.502,-41.753],"6.0417":[-39.795,180.47,-41.294],"6.0833":[-39.32,181.918,-40.629],"6.125":[-39.019,182.877,-40.202],"6.1667":[-38.59,184.304,-39.586],"6.2083":[-38.318,185.244,-39.193],"6.25":[-37.933,186.634,-38.629],"6.2917":[-37.69,187.547,-38.269],"6.3333":[-37.345,188.915,-37.735],"6.375":[-37.127,189.841,-37.375],"6.4167":[-36.817,191.249,-36.828],"6.4583":[-36.621,192.203,-36.46],"6.5":[-36.343,193.653,-35.903],"6.5417":[-36.168,194.635,-35.53],"6.5833":[-35.921,196.129,-34.967],"6.625":[-35.69,197.652,-34.404],"6.6667":[-35.546,198.682,-34.028],"6.7083":[-35.342,200.252,-33.467],"6.75":[-35.214,201.315,-33.094],"6.7917":[-35.033,202.934,-32.539],"6.8333":[-34.92,204.031,-32.172],"6.875":[-34.761,205.702,-31.63],"6.9167":[-34.612,207.406,-31.098],"6.9583":[-34.519,208.56,-30.75],"7.0":[-34.385,210.319,-30.241],"7.0417":[-34.299,211.51,-29.912],"7.0833":[-34.176,213.328,-29.432],"7.125":[-34.097,214.559,-29.127],"7.1667":[-33.979,216.437,-28.687],"7.2083":[-33.899,217.711,-28.411],"7.25":[-33.776,219.649,-28.025],"7.2917":[-33.691,220.964,-27.786],"7.3333":[-33.554,222.969,-27.465],"7.375":[-33.454,224.328,-27.277],"7.4167":[-33.286,226.399,-27.041],"7.4583":[-32.967,228.018,-27.126],"7.5":[-30.194,232.634,-29.746],"7.5417":[-27.068,236.307,-32.835],"7.5833":[-22.254,240.998,-37.558],"7.625":[-22.236,243.304,-36.574],"7.6667":[-27.387,243.837,-26.767],"7.7083":[-39.474,243.921,-8.034],"7.75":[-55.333,243.286,8.97],"7.7917":[-72.478,234.049,28.986],"7.8333":[-75.562,228.133,34.426],"7.875":[-79.23,230.319,38.516],"7.9167":[-77.754,242.431,34.042],"7.9583":[-73.651,255.483,27.987],"8.0":[-79.381,253.703,34.477],"8.0417":[-88.596,241.368,47.458],"8.0833":[-88.572,228.848,53.422],"8.125":[-92.274,224.535,61.577],"8.1667":[-92.409,230.952,59.896],"8.2083":[-92.847,233.338,57.642],"8.25":[-74.791,245.399,33.737],"8.2917":[-55.631,243.219,12.91],"8.3333":[-48.231,231.228,3.665],"8.375":[-47.98,229.889,3.27],"8.4167":[-47.98,229.891,3.27],"8.4583":[-47.981,229.89,3.27],"8.5":[-47.981,229.892,3.27],"8.5417":[-47.98,229.891,3.269],"8.5833":[-47.98,229.888,3.269],"8.625":[-39.858,168.472,-47.619],"8.6667":[-53.316,142.495,-75.087],"8.7083":[-31.619,134.391,-63.034],"8.75":[-17.448,135.813,-50.954],"8.7917":[-5.754,142.826,-40.412],"8.8333":[-6.023,148.39,-46.038],"8.875":[-7.967,161.056,-60.396],"8.9167":[-9.531,166.328,-66.158],"8.9583":[-10.714,170.877,-66.461],"9.0":[-11.113,172.028,-63.363],"9.0417":[-11.574,173.569,-59.58],"9.0833":[-12.222,173.813,-58.195],"9.125":[-12.731,173.591,-58.142],"9.1667":[-12.953,173.375,-58.199],"9.2083":[-12.861,172.97,-58.595],"9.25":[-12.87,172.702,-59.74],"9.2917":[-12.94,172.588,-60.554],"9.3333":[-13.079,172.136,-61.201],"9.375":[-13.242,171.84,-61.342],"9.4167":[-13.249,171.586,-61.293],"9.4583":[-13.377,171.689,-61.161],"9.5":[-13.453,171.91,-60.962],"9.5417":[-13.454,171.991,-60.878],"9.5833":[-13.469,172.034,-60.806],"9.625":[-13.502,172.029,-60.779]},"position":{"0.0":[4.806,39.553,-9.527],"0.0417":[6.339,39.714,-9.529],"0.0833":[9.148,39.903,-9.547],"0.125":[10.703,38.12,-9.635],"0.1667":[13.168,31.666,-9.903],"0.2083":[14.749,26.259,-10.121],"0.25":[14.878,25.774,-10.14],"3.3333":[14.878,25.775,-10.14],"3.625":[14.878,25.774,-10.14],"4.0833":[14.878,25.774,-10.14],"4.125":[14.878,25.774,-10.14],"4.9167":[14.878,25.774,-10.14],"4.9583":[14.876,25.779,-10.136],"5.0":[14.866,25.804,-10.118],"5.0417":[14.856,25.833,-10.097],"5.0833":[14.833,25.891,-10.055],"5.125":[14.815,25.94,-10.019],"5.1667":[14.781,26.029,-9.955],"5.2083":[14.755,26.098,-9.905],"5.25":[14.711,26.214,-9.822],"5.2917":[14.679,26.299,-9.761],"5.3333":[14.626,26.439,-9.661],"5.375":[14.589,26.54,-9.59],"5.4167":[14.528,26.701,-9.476],"5.4583":[14.486,26.815,-9.397],"5.5":[14.419,26.994,-9.272],"5.5417":[14.349,27.182,-9.142],"5.5833":[14.301,27.312,-9.053],"5.625":[14.226,27.513,-8.916],"5.6667":[14.176,27.651,-8.823],"5.7083":[14.098,27.862,-8.682],"5.75":[14.046,28.005,-8.587],"5.7917":[13.966,28.223,-8.444],"5.8333":[13.913,28.37,-8.349],"5.875":[13.833,28.592,-8.207],"5.9167":[13.753,28.814,-8.067],"5.9583":[13.7,28.962,-7.975],"6.0":[13.621,29.183,-7.84],"6.0417":[13.569,29.329,-7.752],"6.0833":[13.493,29.546,-7.625],"6.125":[13.444,29.688,-7.543],"6.1667":[13.372,29.898,-7.426],"6.2083":[13.325,30.034,-7.352],"6.25":[13.258,30.233,-7.248],"6.2917":[13.215,30.361,-7.184],"6.3333":[13.153,30.55,-7.089],"6.375":[13.114,30.675,-7.023],"6.4167":[13.056,30.861,-6.923],"6.4583":[13.018,30.985,-6.855],"6.5":[12.963,31.171,-6.751],"6.5417":[12.926,31.296,-6.682],"6.5833":[12.872,31.483,-6.577],"6.625":[12.819,31.671,-6.473],"6.6667":[12.783,31.798,-6.403],"6.7083":[12.73,31.99,-6.301],"6.75":[12.693,32.12,-6.233],"6.7917":[12.639,32.317,-6.134],"6.8333":[12.601,32.451,-6.07],"6.875":[12.544,32.655,-5.976],"6.9167":[12.485,32.864,-5.887],"6.9583":[12.444,33.007,-5.83],"7.0":[12.381,33.225,-5.749],"7.0417":[12.337,33.374,-5.698],"7.0833":[12.269,33.603,-5.628],"7.125":[12.222,33.76,-5.585],"7.1667":[12.147,34.002,-5.527],"7.2083":[12.095,34.168,-5.493],"7.25":[12.014,34.424,-5.449],"7.2917":[11.957,34.6,-5.425],"7.3333":[11.867,34.871,-5.397],"7.375":[11.804,35.058,-5.385],"7.4167":[11.705,35.347,-5.375],"7.4583":[11.612,35.579,-5.398],"7.5":[11.233,36.295,-5.698],"7.5417":[10.907,36.927,-6.032],"7.5833":[10.502,37.889,-6.615],"7.625":[10.402,38.623,-7.175],"7.6667":[10.407,38.966,-7.603],"7.7083":[10.445,39.189,-8.345],"7.75":[10.561,39.137,-8.966],"7.7917":[10.655,38.973,-9.852],"7.8333":[10.63,38.869,-9.918],"7.875":[10.44,38.971,-9.201],"7.9167":[10.312,39.11,-8.42],"7.9583":[10.261,39.462,-7.904],"8.0":[10.442,39.59,-8.082],"8.0417":[10.922,39.64,-8.862],"8.0833":[11.164,39.599,-9.76],"8.125":[11.102,39.516,-9.481],"8.1667":[10.816,39.602,-8.678],"8.2083":[10.627,39.695,-7.986],"8.25":[10.338,39.346,-6.933],"8.2917":[10.337,38.494,-6.569],"8.3333":[10.772,36.841,-6.426],"8.375":[11.075,35.742,-6.432],"8.4167":[11.504,33.925,-6.519],"8.4583":[11.938,33.394,-6.553],"8.5":[12.89,33.457,-6.55],"8.5417":[13.621,33.595,-6.548],"8.5833":[14.721,34.008,-6.546],"8.625":[15.978,35.118,-6.711],"8.6667":[15.932,36.257,-7.064],"8.7083":[13.759,38.267,-7.856],"8.75":[11.632,39.124,-8.172],"8.7917":[8.007,39.971,-8.593],"8.8333":[5.766,40.094,-9.055],"8.875":[3.949,39.745,-9.31],"8.9167":[3.96,39.443,-9.225],"8.9583":[4.425,39.242,-9.218],"9.0":[4.822,39.274,-9.304],"9.0417":[4.976,39.442,-9.42],"9.0833":[4.978,39.597,-9.502],"9.125":[4.905,39.665,-9.533],"9.1667":[4.784,39.691,-9.564],"9.2083":[4.709,39.674,-9.573],"9.25":[4.612,39.617,-9.569],"9.2917":[4.568,39.573,-9.559],"9.3333":[4.55,39.536,-9.54],"9.375":[4.548,39.52,-9.528],"9.4167":[4.554,39.508,-9.517],"9.4583":[4.559,39.508,-9.516],"9.5":[4.565,39.514,-9.518],"9.5417":[4.566,39.518,-9.52],"9.5833":[4.566,39.522,-9.524],"9.625":[4.562,39.525,-9.526]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand":{"rotation":{"0.0":[138.47,-35.671,-98.738],"0.0417":[135.733,-35.231,-106.957],"0.0833":[135.016,-30.305,-122.56],"0.125":[138.673,-15.444,-138.499],"0.1667":[137.433,14.46,-159.23],"0.2083":[128.267,32.544,-174.152],"0.25":[121.818,31.47,-180.609],"0.2917":[134.638,38.251,-178.354],"0.3333":[133.475,42.156,-172.734],"0.375":[137.824,28.354,-184.435],"0.4167":[95.474,23.416,-172.06],"0.4583":[115.875,8.544,-162.827],"0.5":[97.69,24.191,-183.83],"0.5417":[65.793,35.582,-219.581],"0.5833":[64.18,41.555,-225.659],"0.625":[60.689,50.837,-234.56],"0.6667":[29.946,40.777,-263.789],"0.7083":[19.47,23.662,-267.967],"0.75":[17.107,14.819,-261.229],"0.7917":[15.382,8.677,-248.223],"0.8333":[12.928,8.742,-241.342],"0.875":[11.754,19.863,-216.606],"0.9167":[30.949,40.311,-165.982],"0.9583":[49.765,45.364,-139.195],"1.0":[87.953,26.649,-87.994],"1.0417":[96.113,8.523,-73.155],"1.0833":[99.822,-19.461,-58.174],"1.125":[98.537,-36.532,-50.222],"1.1667":[92.587,-56.598,-40.67],"1.2083":[74.385,-71.883,-22.307],"1.25":[44.395,-78.015,6.804],"1.2917":[3.162,-79.079,46.377],"1.3333":[-7.4,-79.061,55.6],"1.375":[-15.964,-79.65,62.69],"1.4167":[-17.43,-80.682,63.382],"1.4583":[-20.053,-81.927,65.034],"1.5":[-22.387,-82.417,66.894],"1.5417":[-25.449,-83.081,69.389],"1.5833":[-27.363,-83.503,70.995],"1.625":[-29.734,-84.17,72.955],"1.6667":[-30.59,-84.697,73.559],"1.7083":[-30.559,-85.581,73.185],"1.75":[-29.561,-86.258,71.951],"1.7917":[-25.99,-87.266,68.052],"1.8333":[-23.076,-87.754,64.981],"1.875":[-17.304,-88.345,59.016],"1.9167":[-7.209,-88.847,48.746],"1.9583":[5.76,-89.137,35.666],"2.0":[49.224,-89.378,-7.974],"2.0417":[84.872,-89.225,-43.755],"2.0833":[124.593,-86.112,-84.309],"2.125":[129.77,-81.537,-90.695],"2.1667":[130.412,-70.366,-95.047],"2.2083":[129.223,-57.291,-98.112],"2.25":[125.061,-21.849,-106.081],"2.2917":[121.359,0.618,-112.671],"2.3333":[113.913,25.782,-123.337],"2.375":[105.777,41.935,-133.511],"2.4167":[101.873,46.594,-138.476],"2.4583":[98.921,50.025,-142.068],"2.5":[99.269,50.25,-141.815],"2.5417":[100.536,49.839,-140.798],"2.5833":[101.428,49.23,-140.085],"2.625":[101.675,49.081,-140.087],"2.6667":[101.247,49.47,-140.643],"2.7083":[100.481,50.152,-141.523],"2.75":[100.003,50.569,-142.069],"2.7917":[99.362,51.109,-142.809],"2.8333":[99.067,51.344,-143.169],"2.875":[98.831,51.512,-143.503],"2.9167":[98.731,51.561,-143.701],"2.9583":[98.703,51.561,-143.792],"3.0":[98.664,51.566,-143.923],"3.0417":[98.607,51.601,-144.038],"3.0833":[98.484,51.692,-144.243],"3.125":[98.398,51.76,-144.38],"3.1667":[98.265,51.872,-144.587],"3.2083":[98.171,51.951,-144.726],"3.25":[98.024,52.079,-144.935],"3.2917":[97.915,52.174,-145.078],"3.3333":[97.736,52.342,-145.3],"3.375":[97.556,52.508,-145.513],"3.4167":[97.45,52.604,-145.64],"3.4583":[97.362,52.676,-145.746],"3.5":[97.335,52.692,-145.777],"3.5417":[97.265,52.746,-145.858],"3.5833":[97.152,52.847,-145.99],"3.625":[95.705,54.176,-147.679],"3.6667":[90.505,60.58,-153.428],"3.7083":[71.141,70.5,-173.828],"3.75":[40.108,74.57,-205.732],"3.7917":[0.724,67.72,-246.385],"3.8333":[-4.676,58.515,-252.533],"3.875":[-1.135,43.205,-255.297],"3.9167":[13.363,32.166,-256.434],"3.9583":[33.736,25.344,-253.899],"4.0":[71.329,9.706,-253.222],"4.0417":[83.826,8.919,-266.076],"4.0833":[97.317,7.404,-270.939],"4.125":[103.795,7.366,-265.446],"4.1667":[109.251,4.917,-248.908],"4.2083":[107.799,1.326,-232.63],"4.25":[98.025,-2.315,-225.731],"4.2917":[93.838,-1.474,-240.345],"4.3333":[97.754,0.28,-253.26],"4.375":[103.811,3.985,-249.498],"4.4167":[111.637,0.732,-236.157],"4.4583":[116.245,-1.567,-216.529],"4.5":[122.771,-19.938,-183.518],"4.5417":[106.812,-23.127,-165.837],"4.5833":[104.532,-25.064,-160.573],"4.625":[92.335,-29.667,-150.47],"4.6667":[84.999,-41.942,-134.024],"4.7083":[71.931,-55.939,-107.355],"4.75":[75.626,-60.954,-105.578],"4.7917":[99.465,-56.538,-132.031],"4.8333":[114.129,-44.228,-140.746],"4.875":[134.436,-31.618,-138.087],"4.9167":[146.232,-42.943,-117.474],"4.9583":[152.077,-47.633,-113.878],"5.0":[157.898,-52.072,-112.656],"5.0417":[160.237,-53.883,-112.293],"5.0833":[161.211,-54.84,-111.439],"5.125":[161.441,-55.116,-111.046],"5.1667":[162.447,-55.647,-111.352],"5.2083":[163.054,-55.938,-111.664],"5.25":[163.943,-56.372,-112.162],"5.2917":[164.477,-56.625,-112.469],"5.3333":[165.024,-56.893,-112.716],"5.375":[165.214,-56.994,-112.725],"5.4167":[165.353,-57.083,-112.628],"5.4583":[165.407,-57.126,-112.553],"5.5":[165.474,-57.194,-112.476],"5.5417":[165.468,-57.234,-112.389],"5.5833":[165.458,-57.26,-112.342],"5.625":[165.493,-57.314,-112.329],"5.6667":[165.583,-57.374,-112.401],"5.7083":[165.731,-57.467,-112.536],"5.75":[165.78,-57.508,-112.568],"5.7917":[164.885,-57.175,-111.484],"5.8333":[160.606,-55.17,-106.484],"5.875":[157.725,-52.683,-102.723],"5.9167":[154.977,-47.107,-99.76],"5.9583":[152.979,-41.729,-97.864],"6.0":[150.411,-25.287,-97.178],"6.0417":[150.434,-14.672,-99.922],"6.0833":[153.956,5.176,-115.255],"6.125":[157.953,23.489,-126.671],"6.1667":[164.255,55.122,-140.26],"6.2083":[172.01,69.392,-145.51],"6.25":[147.358,81.802,-186.784],"6.2917":[99.831,81.15,-243.701],"6.3333":[84.069,80.328,-269.591],"6.375":[85.976,79.677,-270.427],"6.4167":[91.292,79.1,-266.915],"6.4583":[94.027,78.848,-265.028],"6.5":[95.958,78.677,-264.316],"6.5417":[96.855,78.717,-263.997],"6.5833":[98.017,78.765,-263.523],"6.625":[98.882,79.03,-263.063],"6.6667":[99.55,79.204,-262.601],"6.7083":[100.345,79.351,-262.043],"6.75":[100.595,79.328,-261.901],"6.7917":[100.853,79.275,-261.786],"6.8333":[100.977,79.23,-261.747],"6.875":[101.084,79.165,-261.756],"6.9167":[101.037,79.085,-261.884],"6.9583":[100.975,79.023,-262],"7.0":[100.877,78.938,-262.171],"7.0417":[100.846,78.894,-262.242],"7.0833":[100.865,78.866,-262.265],"7.125":[100.925,78.866,-262.229],"7.1667":[101.035,78.88,-262.146],"7.2083":[101.09,78.89,-262.103],"7.25":[101.093,78.893,-262.107],"7.2917":[100.273,78.783,-262.801],"7.3333":[98.434,78.163,-264.47],"7.375":[104.83,77.567,-257.946],"7.4167":[126.991,75.122,-234.508],"7.4583":[134.237,72.931,-226.426],"7.5":[128.815,71.099,-230.672],"7.5417":[123.777,69.976,-234.805],"7.5833":[116.816,69.333,-240.708],"7.625":[116.074,71.774,-241.238],"7.6667":[120.804,74.379,-236.248],"7.7083":[128.799,76.294,-228.336],"7.75":[133.863,76.874,-223.511],"7.7917":[140.118,76.464,-217.743],"7.8333":[145.272,74.726,-212.16],"7.875":[152.268,70.611,-203.953],"7.9167":[152.992,69.592,-203.222],"7.9583":[149.323,71.4,-207.775],"8.0":[145.531,73.333,-212.054],"8.0417":[133.4,76.109,-225.996],"8.0833":[141.914,72.775,-218.665],"8.125":[149.684,70.236,-210.967],"8.1667":[146.703,70.85,-213.724],"8.2083":[140.56,71.717,-220.377],"8.25":[113.482,66.911,-248.597],"8.2917":[96.855,53.977,-264.979],"8.3333":[87.089,26.304,-271.952],"8.375":[85.921,11.883,-270.049],"8.4167":[86.63,18.32,-263.64],"8.4583":[88.239,40.539,-259.369],"8.5":[132.564,54.523,-201.795],"8.5417":[144.249,44.493,-180.626],"8.5833":[142.214,33.957,-176.371],"8.625":[139.604,19.181,-179.936],"8.6667":[140.452,11.504,-181.625],"8.7083":[132.337,1.549,-187.508],"8.75":[124.021,5.193,-185.351],"8.7917":[121.792,11.804,-164.295],"8.8333":[134.377,-0.931,-123.586],"8.875":[140.698,-7.184,-109.618],"8.9167":[139.815,-14.221,-103.036],"8.9583":[135.47,-26.237,-98.749],"9.0":[134.834,-32.483,-97.184],"9.0417":[137.415,-38.426,-96.496],"9.0833":[139.751,-38.806,-96.384],"9.125":[140.455,-38.126,-96.042],"9.1667":[140.664,-37.119,-95.384],"9.2083":[140.396,-36.651,-94.819],"9.25":[140.051,-36.043,-94.28],"9.2917":[139.836,-35.924,-94.174],"9.3333":[139.686,-35.982,-94.254],"9.375":[139.569,-36.026,-94.215],"9.4167":[139.398,-36.09,-94.142],"9.4583":[139.348,-36.139,-94.113],"9.5":[139.326,-36.216,-94.114],"9.5417":[139.322,-36.273,-94.137],"9.5833":[139.318,-36.355,-94.18],"9.625":[139.327,-36.438,-94.222]},"position":{"0.0":[-3.816,39.639,-14.668],"0.0417":[-5.665,39.943,-14.591],"0.0833":[-8.544,40.021,-14.499],"0.125":[-10.731,39.613,-14.48],"0.1667":[-13.65,37.629,-14.433],"0.2083":[-14.457,34.763,-14.7],"0.25":[-13.46,34.055,-15.37],"0.2917":[-11.934,36.069,-16.597],"0.3333":[-12.528,38.834,-16.2],"0.375":[-14.071,36.205,-13.702],"0.4167":[-16.011,30.453,-11.715],"0.4583":[-12.506,24.704,-11.448],"0.5":[-11.034,27.474,-11.955],"0.5417":[-9.229,33.159,-12.941],"0.5833":[-8.079,36.054,-13.544],"0.625":[-6.355,40.295,-14.518],"0.6667":[-5.089,41.744,-15.862],"0.7083":[-4.724,40.215,-16.692],"0.75":[-5.347,38.382,-16.533],"0.7917":[-6.862,35.947,-15.861],"0.8333":[-7.739,35.539,-15.329],"0.875":[-8.893,35.83,-14.486],"0.9167":[-9.642,37.479,-13.767],"0.9583":[-9.941,38.63,-13.468],"1.0":[-10.214,40.841,-12.402],"1.0417":[-10.397,41.95,-11.794],"1.0833":[-10.875,43.375,-10.749],"1.125":[-11.352,44.16,-10.1],"1.1667":[-12.42,45.086,-9.61],"1.2083":[-13.548,45.612,-9.271],"1.25":[-14.281,45.81,-9.07],"1.2917":[-15.166,46.021,-8.627],"1.3333":[-15.634,46.098,-8.286],"1.375":[-16.182,46.162,-7.944],"1.4167":[-16.469,46.175,-7.786],"1.4583":[-16.855,46.184,-7.61],"1.5":[-17.077,46.181,-7.548],"1.5417":[-17.362,46.164,-7.503],"1.5833":[-17.53,46.146,-7.496],"1.625":[-17.755,46.113,-7.502],"1.6667":[-17.888,46.086,-7.507],"1.7083":[-18.054,46.042,-7.525],"1.75":[-18.149,46.012,-7.543],"1.7917":[-18.267,45.969,-7.575],"1.8333":[-18.324,45.944,-7.595],"1.875":[-18.396,45.91,-7.626],"1.9167":[-18.46,45.877,-7.657],"1.9583":[-18.501,45.856,-7.677],"2.0":[-18.564,45.823,-7.708],"2.0417":[-18.609,45.799,-7.729],"2.0833":[-18.793,45.695,-7.792],"2.125":[-19.008,45.555,-7.855],"2.1667":[-19.326,45.185,-7.924],"2.2083":[-19.535,44.856,-7.931],"2.25":[-19.788,44.198,-7.823],"2.2917":[-19.855,43.722,-7.714],"2.3333":[-19.853,43.176,-7.594],"2.375":[-19.777,42.802,-7.611],"2.4167":[-19.639,42.534,-7.568],"2.4583":[-19.409,42.272,-7.541],"2.5":[-19.266,42.185,-7.554],"2.5417":[-19.058,42.084,-7.577],"2.5833":[-18.931,42.048,-7.587],"2.625":[-18.755,42.026,-7.605],"2.6667":[-18.645,42.029,-7.624],"2.7083":[-18.494,42.054,-7.659],"2.75":[-18.393,42.071,-7.684],"2.7917":[-18.246,42.097,-7.717],"2.8333":[-18.154,42.116,-7.736],"2.875":[-18.023,42.145,-7.758],"2.9167":[-17.896,42.176,-7.777],"2.9583":[-17.814,42.197,-7.788],"3.0":[-17.699,42.225,-7.804],"3.0417":[-17.629,42.242,-7.813],"3.0833":[-17.533,42.263,-7.826],"3.125":[-17.475,42.276,-7.833],"3.1667":[-17.395,42.292,-7.843],"3.2083":[-17.346,42.302,-7.849],"3.25":[-17.277,42.316,-7.859],"3.2917":[-17.238,42.324,-7.865],"3.3333":[-17.192,42.334,-7.873],"3.375":[-17.153,42.341,-7.881],"3.4167":[-17.127,42.345,-7.887],"3.4583":[-17.09,42.351,-7.893],"3.5":[-17.069,42.354,-7.896],"3.5417":[-17.036,42.358,-7.902],"3.5833":[-17.011,42.361,-7.909],"3.625":[-16.92,42.366,-7.965],"3.6667":[-16.63,42.354,-8.168],"3.7083":[-15.969,42.143,-8.759],"3.75":[-15.33,41.828,-9.421],"3.7917":[-14.427,41.233,-10.353],"3.8333":[-13.924,40.735,-10.86],"3.875":[-13.239,39.965,-11.499],"3.9167":[-12.667,39.352,-11.85],"3.9583":[-12.326,39.082,-12.014],"4.0":[-12.044,39.345,-12.359],"4.0417":[-12.055,39.655,-12.584],"4.0833":[-11.807,40.499,-12.675],"4.125":[-11.554,40.695,-12.812],"4.1667":[-11.026,40.502,-13.119],"4.2083":[-10.579,39.902,-13.383],"4.25":[-10.532,38.437,-13.24],"4.2917":[-10.894,37.754,-12.426],"4.3333":[-12.117,38.029,-11.442],"4.375":[-13.01,38.661,-11.217],"4.4167":[-13.889,40.635,-11.673],"4.4583":[-13.893,42.1,-12.366],"4.5":[-12.043,43.052,-13.511],"4.5417":[-9.828,41.682,-13.684],"4.5833":[-9.604,40.179,-13.395],"4.625":[-10.769,38.863,-12.231],"4.6667":[-12.287,39.084,-11.896],"4.7083":[-13.501,40.861,-11.855],"4.75":[-13.771,42.533,-12.123],"4.7917":[-13.126,44.034,-12.683],"4.8333":[-11.697,44.227,-12.532],"4.875":[-8.533,43.113,-10.885],"4.9167":[-4.48,40.779,-8.012],"4.9583":[-3.698,40.333,-7.265],"5.0":[-3.139,40.05,-6.962],"5.0417":[-2.909,39.957,-6.889],"5.0833":[-2.635,39.914,-6.824],"5.125":[-2.497,39.907,-6.797],"5.1667":[-2.383,39.904,-6.76],"5.2083":[-2.338,39.898,-6.751],"5.25":[-2.277,39.884,-6.749],"5.2917":[-2.245,39.874,-6.751],"5.3333":[-2.207,39.861,-6.756],"5.375":[-2.191,39.853,-6.761],"5.4167":[-2.175,39.842,-6.77],"5.4583":[-2.167,39.835,-6.776],"5.5":[-2.156,39.824,-6.785],"5.5417":[-2.148,39.814,-6.795],"5.5833":[-2.145,39.808,-6.801],"5.625":[-2.14,39.797,-6.811],"5.6667":[-2.138,39.79,-6.817],"5.7083":[-2.135,39.779,-6.828],"5.75":[-2.133,39.771,-6.834],"5.7917":[-2.13,39.756,-6.827],"5.8333":[-2.13,39.728,-6.761],"5.875":[-2.153,39.669,-6.68],"5.9167":[-2.231,39.621,-6.6],"5.9583":[-2.311,39.598,-6.553],"6.0":[-2.689,39.657,-6.657],"6.0417":[-3.062,39.869,-6.749],"6.0833":[-4.033,40.54,-6.958],"6.125":[-4.788,41.194,-7.131],"6.1667":[-5.94,42.233,-7.415],"6.2083":[-7.014,42.48,-7.655],"6.25":[-8.359,42.57,-7.918],"6.2917":[-9.079,42.574,-8.037],"6.3333":[-9.866,42.569,-8.124],"6.375":[-10.276,42.553,-8.109],"6.4167":[-10.733,42.524,-8.058],"6.4583":[-10.982,42.506,-8.031],"6.5":[-11.271,42.477,-8.016],"6.5417":[-11.419,42.46,-7.999],"6.5833":[-11.618,42.439,-7.978],"6.625":[-11.766,42.415,-7.961],"6.6667":[-11.86,42.401,-7.949],"6.7083":[-12,42.377,-7.933],"6.75":[-12.068,42.365,-7.925],"6.7917":[-12.16,42.349,-7.911],"6.8333":[-12.216,42.339,-7.901],"6.875":[-12.296,42.328,-7.885],"6.9167":[-12.373,42.315,-7.876],"6.9583":[-12.429,42.305,-7.87],"7.0":[-12.507,42.291,-7.863],"7.0417":[-12.548,42.283,-7.861],"7.0833":[-12.587,42.277,-7.86],"7.125":[-12.611,42.273,-7.859],"7.1667":[-12.644,42.267,-7.86],"7.2083":[-12.666,42.264,-7.863],"7.25":[-12.698,42.26,-7.872],"7.2917":[-12.714,42.265,-7.93],"7.3333":[-12.707,42.312,-8.234],"7.375":[-12.692,42.353,-8.347],"7.4167":[-12.635,42.335,-8.64],"7.4583":[-12.624,42.196,-8.818],"7.5":[-12.697,41.349,-9.42],"7.5417":[-12.583,41.017,-9.8],"7.5833":[-12.164,41.066,-10.214],"7.625":[-11.83,41.383,-10.343],"7.6667":[-11.666,41.641,-10.289],"7.7083":[-11.557,41.829,-10.211],"7.75":[-11.521,41.904,-10.167],"7.7917":[-11.511,41.951,-10.117],"7.8333":[-11.517,41.966,-10.085],"7.875":[-11.55,41.952,-10.144],"7.9167":[-11.569,41.932,-10.216],"7.9583":[-11.59,41.899,-10.278],"8.0":[-11.619,41.888,-10.255],"8.0417":[-11.728,41.906,-10.143],"8.0833":[-11.767,41.946,-10.08],"8.125":[-11.809,41.94,-10.091],"8.1667":[-11.851,41.877,-10.146],"8.2083":[-11.863,41.815,-10.197],"8.25":[-11.928,41.45,-10.487],"8.2917":[-12.154,40.778,-11.279],"8.3333":[-12.478,39.526,-13.019],"8.375":[-12.356,39.146,-13.892],"8.4167":[-12.427,39.967,-15.082],"8.4583":[-12.699,40.941,-15.102],"8.5":[-13.742,42.574,-14.475],"8.5417":[-14.536,43.389,-13.891],"8.5833":[-15.427,44.477,-13.174],"8.625":[-16.081,45.66,-13.217],"8.6667":[-15.976,46.469,-13.497],"8.7083":[-14.951,47.214,-14.48],"8.75":[-12.411,46.997,-15.126],"8.7917":[-5.282,44.751,-16.041],"8.8333":[-0.886,41.365,-14.752],"8.875":[-0.587,38.436,-13.556],"8.9167":[-1.944,37.952,-13.657],"8.9583":[-3.099,38.444,-14.448],"9.0":[-3.106,38.918,-14.772],"9.0417":[-2.996,39.506,-14.811],"9.0833":[-2.905,39.596,-14.75],"9.125":[-2.87,39.577,-14.716],"9.1667":[-2.853,39.511,-14.689],"9.2083":[-2.865,39.475,-14.69],"9.25":[-2.892,39.446,-14.695],"9.2917":[-2.905,39.44,-14.702],"9.3333":[-2.913,39.444,-14.709],"9.375":[-2.914,39.448,-14.711],"9.4167":[-2.913,39.454,-14.712],"9.4583":[-2.911,39.457,-14.712],"9.5":[-2.907,39.459,-14.71],"9.5417":[-2.905,39.46,-14.709],"9.5833":[-2.904,39.458,-14.709],"9.625":[-2.903,39.457,-14.708]}},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.75":[15,0,0],"0.9167":[40,0,0],"1.25":[-17.5,0,0],"2.7917":[0,0,0],"3.5833":[0,0,0],"3.875":[27.5,0,0],"4.2083":[-9.7294,0,-7.4342],"4.8333":[0,0,0]},"position":{"0.0":[0,2.5,0],"3.8333":[0,2.5,0],"4.2083":[-0.1275,3.4773,0.169],"4.4583":[-0.2575,4.4573,0.339],"4.8333":[-0.2575,4.4573,0.339],"5.0833":[0,2.5,0]},"scale":[1,1.5,1]},"annihil":{"rotation":{"0.0":[-14.04,41.493,85.506],"0.0417":[-11.17,40.95,77.506],"0.0833":[-10.921,36.098,61.532],"0.125":[-15.823,21.567,44.497],"0.1667":[-16.077,-8.305,23.642],"0.2083":[-8.331,-26.756,9.953],"0.25":[-2.354,-26.344,4.397],"0.2917":[-19.397,-34.984,10.522],"0.3333":[-72.24,-27.345,22.625],"0.375":[-120.761,17.718,58.556],"0.4167":[-143.943,56.092,47.91],"0.4583":[-241.706,50.106,-62.115],"0.5":[-248.871,20.578,-93.423],"0.5417":[-227.155,3.194,-145.066],"0.5833":[-203.221,26.899,-174.106],"0.625":[-139.059,47.73,-154.878],"0.6667":[-73.4,23.61,-93.585],"0.7083":[-74.417,-19.59,-75.199],"0.75":[-73.137,-16.716,-70.336],"0.7917":[-71.355,-9.92,-56.804],"0.8333":[-69.45,-9.997,-49.588],"0.875":[-69.977,-19.611,-27.474],"0.9167":[-88.613,-38.399,18.026],"0.9583":[-109.904,-43.321,48.575],"1.0":[-145.592,-22.316,98.69],"1.0417":[-152.749,-7.436,112.166],"1.0833":[-154.447,20.138,128.943],"1.125":[-150.188,38.109,139.389],"1.1667":[-139.668,57.328,152.036],"1.2083":[-116.427,70.713,174.39],"1.25":[-87.757,75.161,201.774],"1.2917":[-56.264,75.166,231.379],"1.3333":[-48.517,75.025,237.722],"1.375":[-42.276,75.588,242.433],"1.4167":[-41.291,76.624,242.637],"1.4583":[-39.62,77.878,243.329],"1.5":[-38.171,78.379,244.293],"1.5417":[-36.39,79.064,245.498],"1.5833":[-35.362,79.501,246.212],"1.625":[-34.272,80.189,246.892],"1.6667":[-34.132,80.72,246.779],"1.7083":[-34.861,81.597,245.713],"1.75":[-35.988,82.256,244.358],"1.7917":[-38.54,83.233,241.496],"1.8333":[-40.084,83.704,239.801],"1.875":[-42.278,84.281,237.419],"1.9167":[-44.647,84.791,234.887],"1.9583":[-46.516,85.12,232.913],"2.0":[-50.274,85.63,228.985],"2.0417":[-53.892,85.996,225.241],"2.0833":[-112.387,87.027,165.875],"2.125":[-160.783,83.525,116.17],"2.1667":[-176.826,72.048,96.452],"2.2083":[-179.81,58.524,89.529],"2.25":[-179.892,22.176,78.927],"2.2917":[-177.913,-1.018,72.303],"2.3333":[-172.725,-27.449,62.545],"2.375":[-166.653,-44.87,53.693],"2.4167":[-163.452,-50.076,49.206],"2.4583":[-161.056,-53.7,45.913],"2.5":[-161.481,-53.769,46.186],"2.5417":[-162.736,-53.183,47.211],"2.5833":[-163.542,-52.498,47.888],"2.625":[-163.772,-52.33,47.882],"2.6667":[-163.406,-52.754,47.36],"2.7083":[-162.749,-53.498,46.54],"2.75":[-162.339,-53.954,46.031],"2.7917":[-161.782,-54.545,45.337],"2.8333":[-161.525,-54.806,44.996],"2.875":[-161.31,-54.992,44.671],"2.9167":[-161.215,-55.049,44.475],"2.9583":[-161.184,-55.051,44.379],"3.0":[-161.142,-55.059,44.245],"3.0417":[-161.09,-55.099,44.132],"3.0833":[-160.981,-55.202,43.935],"3.125":[-160.904,-55.276,43.802],"3.1667":[-160.791,-55.398,43.607],"3.2083":[-160.713,-55.487,43.477],"3.25":[-160.586,-55.626,43.279],"3.2917":[-160.494,-55.731,43.146],"3.3333":[-160.339,-55.91,42.939],"3.375":[-160.187,-56.091,42.742],"3.4167":[-160.094,-56.195,42.623],"3.4583":[-160.018,-56.274,42.523],"3.5":[-159.994,-56.293,42.493],"3.5417":[-159.934,-56.352,42.418],"3.5833":[-159.838,-56.463,42.296],"3.625":[-158.623,-57.904,40.75],"3.6667":[-149.736,-64.788,31.004],"3.7083":[-115.76,-73.525,-3.979],"3.75":[-75.175,-72.972,-45],"3.7917":[-47.068,-59.69,-73.335],"3.8333":[-44.652,-47.54,-75.826],"3.875":[-45.762,-25.553,-78.007],"3.9167":[-54.31,10.861,-85.294],"3.9583":[-73.339,34.115,-104.161],"4.0":[-133.184,17.187,-154.414],"4.0417":[-145.761,-3.286,-157.368],"4.0833":[-159.427,-28.244,-150.299],"4.125":[-179.325,-34.105,-134.776],"4.1667":[-209.079,-34.264,-96.467],"4.2083":[-218.81,-29.053,-58.555],"4.25":[-198.863,-7.568,-13.973],"4.2917":[-178.58,3.735,21.476],"4.3333":[-161.241,18.964,66.735],"4.375":[-156.991,28.292,101.921],"4.4167":[-164.793,34.699,137.956],"4.4583":[-174.233,24.005,168.913],"4.5":[-188.453,-11.604,216.785],"4.5417":[-201.03,-12.923,274.92],"4.5833":[-195.085,-4.109,303.625],"4.625":[-184.327,4.874,356.072],"4.6667":[-173.863,24.236,396.487],"4.7083":[-157.752,26.278,465.897],"4.75":[-162.941,15.407,502.344],"4.7917":[-170.651,-11.295,540.78],"4.8333":[-170.141,-30.327,563.46],"4.875":[-162.735,-17.767,598.718],"4.9167":[-157.212,-35.842,619.142],"4.9583":[-154.019,-41.559,624.898],"5.0":[-151.216,-47.01,628.615],"5.0417":[-150.266,-49.214,630.139],"5.0833":[-150.031,-50.316,631.604],"5.125":[-150.01,-50.622,632.17],"5.1667":[-149.512,-51.336,632.304],"5.2083":[-149.201,-51.739,632.253],"5.25":[-148.755,-52.336,632.141],"5.2917":[-148.489,-52.688,632.069],"5.3333":[-148.222,-53.057,632.067],"5.375":[-148.132,-53.194,632.145],"5.4167":[-148.08,-53.305,632.317],"5.4583":[-148.067,-53.357,632.428],"5.5":[-148.058,-53.434,632.552],"5.5417":[-148.093,-53.471,632.663],"5.5833":[-148.12,-53.49,632.723],"5.625":[-148.129,-53.546,632.773],"5.6667":[-148.096,-53.622,632.75],"5.7083":[-148.038,-53.742,632.694],"5.75":[-148.027,-53.79,632.693],"5.7917":[-148.525,-53.284,633.425],"5.8333":[-150.779,-50.514,636.586],"5.875":[-152.071,-47.61,638.737],"5.9167":[-152.13,-41.805,639.333],"5.9583":[-151.942,-36.279,639.561],"6.0":[-149.243,-19.928,637.461],"6.0417":[-146.324,-9.675,633.992],"6.0833":[-137.314,8.71,618.795],"6.125":[-127.512,25.428,608.885],"6.1667":[-105.332,53.828,603.968],"6.2083":[-83.587,64.737,608.66],"6.25":[-60.399,77.058,609.93],"6.2917":[-52.477,84.068,605.402],"6.3333":[-28.665,86.45,615.271],"6.375":[-35.963,87.106,603.259],"6.4167":[-56.624,87.077,578.879],"6.4583":[-65.337,86.787,568.839],"6.5":[-70.251,86.507,562.571],"6.5417":[-70.429,86.33,561.776],"6.5833":[-70.157,86.096,561.305],"6.625":[-66.309,85.845,564.708],"6.6667":[-63.883,85.651,566.919],"6.7083":[-61.547,85.424,569.025],"6.75":[-61.185,85.356,569.288],"6.7917":[-60.756,85.281,569.607],"6.8333":[-60.577,85.243,569.726],"6.875":[-60.325,85.203,569.902],"6.9167":[-60.32,85.207,569.872],"6.9583":[-60.566,85.223,569.609],"7.0":[-61.241,85.256,568.902],"7.0417":[-61.79,85.28,568.344],"7.0833":[-62.774,85.305,567.348],"7.125":[-63.628,85.321,566.486],"7.1667":[-65.409,85.356,564.691],"7.2083":[-67.087,85.392,562.993],"7.25":[-70.584,85.478,559.462],"7.2917":[-78.714,85.767,551.35],"7.3333":[-129.248,84.741,500.38],"7.375":[-136.747,81.665,492.898],"7.4167":[-127.513,75.053,503.786],"7.4583":[-126.856,71.197,505.623],"7.5":[-132.067,70.128,503.163],"7.5417":[-127.114,73.418,511.661],"7.5833":[-115.712,78.13,526.602],"7.625":[-98.255,80.141,543.852],"7.6667":[-83.107,79.718,558.36],"7.7083":[-74.093,78.422,566.116],"7.75":[-70.355,77.499,569.441],"7.7917":[-70.063,76.027,569.265],"7.8333":[-73.824,74.1,566.16],"7.875":[-80.181,69.921,561.58],"7.9167":[-81.714,69.028,560.194],"7.9583":[-80.411,71.162,560.34],"8.0":[-77.818,73.269,562.166],"8.0417":[-74.098,77.374,563.591],"8.0833":[-81.481,73.788,555.624],"8.125":[-82.626,70.27,554.904],"8.1667":[-83.281,71.412,554.4],"8.2083":[-85.244,73.479,551.727],"8.25":[-125.43,77.163,509.947],"8.2917":[-169.314,68.389,465.885],"8.3333":[-187.16,41.97,450.081],"8.375":[-189.487,27.028,451.22],"8.4167":[-191.055,23.349,458.894],"8.4583":[-188.626,29.297,463.566],"8.5":[-189.257,53.245,475.155],"8.5417":[-195.291,76.274,482.027],"8.5833":[-353.571,85.186,339.229],"8.625":[-368.574,76.147,335.654],"8.6667":[-371.596,69.67,340.309],"8.7083":[-374.113,54.055,351.198],"8.75":[-372.892,39.781,363.664],"8.7917":[-369.227,16.317,381.538],"8.8333":[-373.054,6.847,420.271],"8.875":[-378.889,13.408,433.564],"8.9167":[-377.452,20.335,440.323],"8.9583":[-371.891,31.998,445.432],"9.0":[-370.547,38.142,447.351],"9.0417":[-372.591,44.176,448.028],"9.0833":[-375.027,44.646,447.785],"9.125":[-375.844,44.002,447.967],"9.1667":[-376.158,43.003,448.521],"9.2083":[-375.911,42.523,449.095],"9.25":[-375.603,41.903,449.652],"9.2917":[-375.392,41.778,449.784],"9.3333":[-375.236,41.829,449.747],"9.375":[-375.107,41.863,449.819],"9.4167":[-374.928,41.922,449.941],"9.4583":[-374.876,41.969,449.999],"9.5":[-374.857,42.048,450.035],"9.5417":[-374.857,42.105,450.035],"9.5833":[-374.857,42.19,450.028],"9.625":[-374.87,42.279,450.016]},"position":{"0.0":[4.344,52.257,-16.524],"0.0417":[2.306,52.825,-16.411],"0.0833":[-0.797,53.245,-16.254],"0.125":[-2.972,53.072,-16.17],"0.1667":[-5.755,51.372,-15.899],"0.2083":[-6.553,48.62,-16.009],"0.25":[-5.651,47.939,-16.869],"0.2917":[-4.098,50.788,-17.366],"0.3333":[-3.379,53.691,-17.847],"0.375":[-1.046,58.176,-19.767],"0.4167":[-0.053,60.778,-22.796],"0.4583":[2.783,64.321,-27.571],"0.5":[4.758,67.566,-28.842],"0.5417":[5.791,71.897,-27.189],"0.5833":[5.537,73.043,-24.648],"0.625":[4.172,70.596,-20.045],"0.6667":[3.566,64.647,-17.586],"0.7083":[3.781,54.435,-17.609],"0.75":[3.154,51.157,-17.528],"0.7917":[1.839,48.288,-16.952],"0.8333":[0.933,47.412,-16.228],"0.875":[-0.58,46.635,-15.107],"0.9167":[-2.439,47.23,-14.63],"0.9583":[-3.208,48.256,-14.67],"1.0":[-4.078,51.077,-14.656],"1.0417":[-4.325,52.849,-14.394],"1.0833":[-4.329,55.33,-13.533],"1.125":[-4.367,56.672,-12.699],"1.1667":[-5.137,58.159,-11.761],"1.2083":[-6.197,59.099,-10.942],"1.25":[-6.966,59.505,-10.434],"1.2917":[-7.861,59.86,-9.711],"1.3333":[-8.344,59.978,-9.299],"1.375":[-8.909,60.075,-8.909],"1.4167":[-9.212,60.095,-8.761],"1.4583":[-9.616,60.113,-8.593],"1.5":[-9.846,60.116,-8.53],"1.5417":[-10.141,60.105,-8.486],"1.5833":[-10.313,60.09,-8.482],"1.625":[-10.546,60.058,-8.495],"1.6667":[-10.683,60.03,-8.51],"1.7083":[-10.854,59.983,-8.548],"1.75":[-10.955,59.951,-8.583],"1.7917":[-11.083,59.9,-8.643],"1.8333":[-11.143,59.871,-8.679],"1.875":[-11.22,59.834,-8.725],"1.9167":[-11.289,59.796,-8.77],"1.9583":[-11.331,59.771,-8.801],"2.0":[-11.398,59.733,-8.849],"2.0417":[-11.446,59.706,-8.881],"2.0833":[-11.626,59.564,-9.057],"2.125":[-11.808,59.358,-9.281],"2.1667":[-12.105,58.796,-9.683],"2.2083":[-12.307,58.172,-9.995],"2.25":[-12.419,56.497,-10.219],"2.2917":[-12.246,55.401,-9.935],"2.3333":[-11.866,54.368,-9.302],"2.375":[-11.506,53.865,-8.823],"2.4167":[-11.274,53.615,-8.618],"2.4583":[-11.007,53.366,-8.463],"2.5":[-10.876,53.277,-8.465],"2.5417":[-10.674,53.181,-8.498],"2.5833":[-10.548,53.153,-8.528],"2.625":[-10.369,53.14,-8.55],"2.6667":[-10.253,53.149,-8.556],"2.7083":[-10.095,53.177,-8.567],"2.75":[-9.988,53.196,-8.576],"2.7917":[-9.834,53.226,-8.59],"2.8333":[-9.742,53.247,-8.6],"2.875":[-9.606,53.28,-8.616],"2.9167":[-9.475,53.316,-8.634],"2.9583":[-9.393,53.338,-8.645],"3.0":[-9.278,53.371,-8.661],"3.0417":[-9.205,53.39,-8.669],"3.0833":[-9.108,53.416,-8.679],"3.125":[-9.05,53.43,-8.684],"3.1667":[-8.965,53.45,-8.689],"3.2083":[-8.916,53.462,-8.692],"3.25":[-8.845,53.479,-8.697],"3.2917":[-8.805,53.487,-8.699],"3.3333":[-8.756,53.5,-8.7],"3.375":[-8.715,53.507,-8.703],"3.4167":[-8.69,53.513,-8.706],"3.4583":[-8.648,53.52,-8.708],"3.5":[-8.628,53.523,-8.711],"3.5417":[-8.597,53.526,-8.714],"3.5833":[-8.571,53.53,-8.717],"3.625":[-8.463,53.546,-8.72],"3.6667":[-8.184,53.544,-8.607],"3.7083":[-7.582,53.458,-8.674],"3.75":[-7.023,53.321,-8.969],"3.7917":[-6.252,53.085,-9.566],"3.8333":[-5.783,52.847,-10.04],"3.875":[-5.016,52.74,-10.913],"3.9167":[-4.571,53.866,-11.521],"3.9583":[-5.002,54.615,-12.775],"4.0":[-6.408,55.26,-14.758],"4.0417":[-6.922,55.627,-15.229],"4.0833":[-7.451,55.791,-15.712],"4.125":[-7.082,55.886,-15.722],"4.1667":[-6.009,55.629,-16.374],"4.2083":[-4.917,55.05,-17.755],"4.25":[-4.618,51.81,-18.85],"4.2917":[-5.845,50.491,-17.554],"4.3333":[-7.818,50.807,-16.65],"4.375":[-8.853,52.116,-16.473],"4.4167":[-9.421,54.552,-17.035],"4.4583":[-9.137,56.467,-17.758],"4.5":[-7.57,59.113,-18.294],"4.5417":[-4.308,55.913,-19.578],"4.5833":[-3.994,53.522,-18.834],"4.625":[-7.054,51.441,-17.076],"4.6667":[-9.724,53.169,-16.184],"4.7083":[-9.785,57.245,-15.727],"4.75":[-8.077,59.027,-16.177],"4.7917":[-6.219,59.319,-16.14],"4.8333":[-5.01,58.33,-15.231],"4.875":[-1.403,56.941,-12.923],"4.9167":[3.463,54.065,-9.589],"4.9583":[4.417,53.469,-8.672],"5.0":[5.096,53.072,-8.217],"5.0417":[5.37,52.927,-8.091],"5.0833":[5.664,52.836,-8.004],"5.125":[5.812,52.811,-7.972],"5.1667":[5.938,52.796,-7.913],"5.2083":[5.99,52.789,-7.89],"5.25":[6.056,52.774,-7.87],"5.2917":[6.092,52.762,-7.86],"5.3333":[6.135,52.745,-7.854],"5.375":[6.155,52.732,-7.854],"5.4167":[6.173,52.715,-7.86],"5.4583":[6.184,52.704,-7.867],"5.5":[6.196,52.688,-7.875],"5.5417":[6.203,52.675,-7.883],"5.5833":[6.207,52.668,-7.891],"5.625":[6.211,52.655,-7.899],"5.6667":[6.215,52.652,-7.903],"5.7083":[6.219,52.641,-7.911],"5.75":[6.222,52.635,-7.916],"5.7917":[6.223,52.599,-7.928],"5.8333":[6.212,52.472,-7.957],"5.875":[6.173,52.316,-7.947],"5.9167":[6.074,52.138,-7.94],"5.9583":[5.977,51.995,-7.946],"6.0":[5.595,51.763,-8.071],"6.0417":[5.267,51.889,-8.075],"6.0833":[4.459,52.946,-7.878],"6.125":[3.721,54.072,-7.58],"6.1667":[2.163,55.976,-7.166],"6.2083":[0.545,56.751,-7.135],"6.25":[-1.665,57.399,-7.554],"6.2917":[-2.902,57.591,-7.937],"6.3333":[-4.242,57.647,-8.111],"6.375":[-4.792,57.649,-8.136],"6.4167":[-5.327,57.651,-8.112],"6.4583":[-5.612,57.648,-8.092],"6.5":[-5.959,57.627,-8.081],"6.5417":[-6.137,57.607,-8.059],"6.5833":[-6.368,57.58,-8.033],"6.625":[-6.537,57.554,-8],"6.6667":[-6.641,57.539,-7.979],"6.7083":[-6.789,57.515,-7.954],"6.75":[-6.863,57.502,-7.948],"6.7917":[-6.96,57.486,-7.938],"6.8333":[-7.022,57.478,-7.93],"6.875":[-7.107,57.465,-7.919],"6.9167":[-7.187,57.452,-7.915],"6.9583":[-7.245,57.44,-7.914],"7.0":[-7.33,57.426,-7.911],"7.0417":[-7.371,57.417,-7.911],"7.0833":[-7.412,57.408,-7.91],"7.125":[-7.437,57.4,-7.907],"7.1667":[-7.473,57.391,-7.904],"7.2083":[-7.496,57.386,-7.904],"7.25":[-7.529,57.376,-7.907],"7.2917":[-7.544,57.373,-7.964],"7.3333":[-7.555,57.373,-8.233],"7.375":[-7.513,57.37,-8.306],"7.4167":[-7.249,57.27,-8.536],"7.4583":[-7.102,57.062,-8.735],"7.5":[-7.062,56.177,-9.502],"7.5417":[-6.904,55.921,-10.021],"7.5833":[-6.435,56.071,-10.574],"7.625":[-6.086,56.412,-10.614],"7.6667":[-5.904,56.658,-10.414],"7.7083":[-5.789,56.816,-10.199],"7.75":[-5.756,56.879,-10.092],"7.7917":[-5.751,56.918,-9.997],"7.8333":[-5.711,56.934,-9.953],"7.875":[-5.64,56.924,-10.007],"7.9167":[-5.645,56.904,-10.084],"7.9583":[-5.737,56.873,-10.167],"8.0":[-5.813,56.86,-10.151],"8.0417":[-6.058,56.873,-10.095],"8.0833":[-6.116,56.912,-10.035],"8.125":[-6.12,56.905,-9.998],"8.1667":[-6.166,56.846,-10.084],"8.2083":[-6.229,56.786,-10.198],"8.25":[-6.435,56.409,-10.979],"8.2917":[-6.698,55.574,-12.49],"8.3333":[-6.873,53.558,-15.364],"8.375":[-6.617,52.632,-16.682],"8.4167":[-6.503,54.141,-17.714],"8.4583":[-6.595,56.255,-17.092],"8.5":[-6.138,62.723,-16.776],"8.5417":[-5.082,67.29,-16.863],"8.5833":[-3.515,70.58,-16.853],"8.625":[-2.288,71.646,-16.854],"8.6667":[-1.441,71.698,-16.801],"8.7083":[0.03,70.17,-16.446],"8.75":[0.933,64.575,-16.681],"8.7917":[3.161,58.493,-17.644],"8.8333":[7.342,54.061,-16.589],"8.875":[7.794,50.762,-15.237],"8.9167":[6.373,50.178,-15.447],"8.9583":[5.045,50.873,-16.464],"9.0":[4.999,51.486,-16.811],"9.0417":[5.165,52.179,-16.757],"9.0833":[5.318,52.225,-16.628],"9.125":[5.373,52.16,-16.574],"9.1667":[5.402,52.038,-16.544],"9.2083":[5.389,51.972,-16.554],"9.25":[5.358,51.911,-16.57],"9.2917":[5.339,51.903,-16.584],"9.3333":[5.328,51.915,-16.596],"9.375":[5.324,51.919,-16.602],"9.4167":[5.321,51.927,-16.607],"9.4583":[5.321,51.93,-16.607],"9.5":[5.326,51.933,-16.607],"9.5417":[5.326,51.937,-16.604],"9.5833":[5.329,51.937,-16.604],"9.625":[5.332,51.937,-16.604]}},"camera":{"rotation":{"0.0":[0.039,0.013,0.007],"0.0417":[0.346,0.112,0.053],"0.0833":[1.112,0.367,0.181],"0.125":[1.685,0.562,0.285],"0.1667":[2.361,0.799,0.436],"0.2083":[2.526,0.881,0.542],"0.25":[2.434,0.888,0.592],"0.2917":[1.778,0.854,0.645],"0.3333":[0.19,0.814,0.666],"0.375":[-3.142,0.621,0.682],"0.4167":[-5.328,0.45,0.682],"0.4583":[-6.607,0.201,0.67],"0.5":[-6.976,0.034,0.655],"0.5417":[-6.914,-0.215,0.623],"0.5833":[-6.436,-0.377,0.597],"0.625":[-5.002,-0.597,0.552],"0.6667":[-3.839,-0.679,0.52],"0.7083":[-1.828,-0.739,0.47],"0.75":[-0.394,-0.771,0.436],"0.7917":[1.625,-0.81,0.386],"0.8333":[2.709,-0.835,0.355],"0.875":[3.423,-0.856,0.313],"0.9167":[3.45,-0.871,0.274],"0.9583":[3.173,-0.881,0.228],"1.0":[2.434,-0.896,0.133],"1.0417":[1.944,-0.904,0.055],"1.0833":[1.275,-0.913,-0.068],"1.125":[0.883,-0.919,-0.15],"1.1667":[0.366,-0.931,-0.262],"1.2083":[-0.042,-0.949,-0.35],"1.25":[-0.246,-0.966,-0.39],"1.2917":[-0.45,-1.005,-0.42],"1.3333":[-0.567,-1.043,-0.438],"1.375":[-0.727,-1.126,-0.463],"1.4167":[-0.827,-1.195,-0.478],"1.4583":[-0.964,-1.332,-0.497],"1.5":[-1.047,-1.446,-0.509],"1.5417":[-1.156,-1.628,-0.524],"1.5833":[-1.228,-1.757,-0.533],"1.625":[-1.321,-1.97,-0.543],"1.6667":[-1.376,-2.097,-0.547],"1.7083":[-1.454,-2.267,-0.552],"1.75":[-1.506,-2.364,-0.553],"1.7917":[-1.564,-2.469,-0.553],"1.8333":[-1.604,-2.517,-0.551],"1.875":[-1.656,-2.558,-0.545],"1.9167":[-1.702,-2.566,-0.537],"1.9583":[-1.726,-2.542,-0.53],"2.0":[-1.759,-2.473,-0.516],"2.0417":[-1.778,-2.403,-0.507],"2.0833":[-1.798,-2.264,-0.488],"2.125":[-1.807,-2.157,-0.466],"2.1667":[-1.819,-1.96,-0.414],"2.2083":[-1.826,-1.808,-0.368],"2.25":[-1.833,-1.566,-0.289],"2.2917":[-1.837,-1.4,-0.232],"2.3333":[-1.84,-1.128,-0.156],"2.375":[-1.842,-0.844,-0.097],"2.4167":[-1.843,-0.655,-0.068],"2.4583":[-1.844,-0.372,-0.03],"2.5":[-1.843,-0.176,-0.004],"2.5417":[-1.842,0.122,0.03],"2.5833":[-1.842,0.308,0.05],"2.625":[-1.84,0.607,0.081],"2.6667":[-1.838,0.793,0.098],"2.7083":[-1.835,1.066,0.123],"2.75":[-1.832,1.253,0.139],"2.7917":[-1.828,1.52,0.162],"2.8333":[-1.826,1.691,0.176],"2.875":[-1.821,1.956,0.197],"2.9167":[-1.815,2.193,0.214],"2.9583":[-1.808,2.335,0.225],"3.0":[-1.795,2.497,0.238],"3.0417":[-1.784,2.572,0.247],"3.0833":[-1.77,2.691,0.258],"3.125":[-1.762,2.778,0.264],"3.1667":[-1.753,2.896,0.272],"3.2083":[-1.748,2.974,0.277],"3.25":[-1.74,3.081,0.281],"3.2917":[-1.734,3.13,0.284],"3.3333":[-1.724,3.194,0.288],"3.375":[-1.708,3.237,0.29],"3.4167":[-1.692,3.259,0.291],"3.4583":[-1.66,3.276,0.292],"3.5":[-1.644,3.284,0.292],"3.5417":[-1.596,3.289,0.293],"3.5833":[-1.564,3.289,0.293],"3.625":[-1.493,3.279,0.292],"3.6667":[-1.428,3.263,0.291],"3.7083":[-1.292,3.22,0.287],"3.75":[-1.181,3.182,0.283],"3.7917":[-1.006,3.111,0.276],"3.8333":[-0.875,3.057,0.27],"3.875":[-0.697,2.973,0.261],"3.9167":[-0.528,2.864,0.25],"3.9583":[-0.41,2.728,0.235],"4.0":[-0.225,2.492,0.21],"4.0417":[-0.098,2.311,0.192],"4.0833":[0.128,2.048,0.118],"4.125":[0.296,1.886,0.042],"4.1667":[0.55,1.72,-0.085],"4.2083":[0.764,1.656,-0.147],"4.25":[1.025,1.702,-0.088],"4.2917":[1.131,1.812,0.036],"4.3333":[0.978,1.996,0.204],"4.375":[0.647,2.121,0.267],"4.4167":[0.024,2.232,0.115],"4.4583":[-0.351,2.096,-0.031],"4.5":[-0.513,1.716,-0.104],"4.5417":[-0.105,1.274,0.041],"4.5833":[0.184,1.138,0.144],"4.625":[0.448,1.372,0.237],"4.6667":[0.345,1.617,0.212],"4.7083":[0.011,1.879,0.119],"4.75":[-0.259,1.818,0.018],"4.7917":[-0.641,1.626,-0.148],"4.8333":[-0.794,1.497,-0.249],"4.875":[-0.977,1.289,-0.414],"4.9167":[-1.111,1.091,-0.551],"4.9583":[-1.183,0.989,-0.606],"5.0":[-1.269,0.895,-0.626],"5.0417":[-1.319,0.844,-0.633],"5.0833":[-1.384,0.771,-0.647],"5.125":[-1.42,0.735,-0.655],"5.1667":[-1.47,0.691,-0.664],"5.2083":[-1.499,0.662,-0.67],"5.25":[-1.536,0.626,-0.678],"5.2917":[-1.564,0.607,-0.682],"5.3333":[-1.602,0.577,-0.687],"5.375":[-1.62,0.565,-0.689],"5.4167":[-1.657,0.547,-0.69],"5.4583":[-1.679,0.537,-0.689],"5.5":[-1.705,0.529,-0.685],"5.5417":[-1.732,0.524,-0.678],"5.5833":[-1.752,0.521,-0.674],"5.625":[-1.772,0.516,-0.664],"5.6667":[-1.785,0.511,-0.656],"5.7083":[-1.792,0.504,-0.643],"5.75":[-1.802,0.494,-0.633],"5.7917":[-1.802,0.475,-0.616],"5.8333":[-1.729,0.459,-0.604],"5.875":[-1.395,0.431,-0.58],"5.9167":[-0.905,0.392,-0.549],"5.9583":[-0.561,0.358,-0.525],"6.0":[-0.114,0.292,-0.484],"6.0417":[0.096,0.238,-0.454],"6.0833":[0.246,0.086,-0.407],"6.125":[0.219,-0.03,-0.37],"6.1667":[0.103,-0.213,-0.315],"6.2083":[0.015,-0.335,-0.274],"6.25":[-0.12,-0.533,-0.213],"6.2917":[-0.202,-0.661,-0.172],"6.3333":[-0.296,-0.853,-0.108],"6.375":[-0.339,-0.981,-0.066],"6.4167":[-0.402,-1.172,-0.002],"6.4583":[-0.438,-1.308,0.039],"6.5":[-0.485,-1.505,0.098],"6.5417":[-0.512,-1.637,0.136],"6.5833":[-0.546,-1.817,0.19],"6.625":[-0.569,-1.983,0.24],"6.6667":[-0.58,-2.08,0.269],"6.7083":[-0.591,-2.226,0.304],"6.75":[-0.598,-2.323,0.323],"6.7917":[-0.607,-2.475,0.346],"6.8333":[-0.612,-2.582,0.359],"6.875":[-0.619,-2.733,0.376],"6.9167":[-0.624,-2.885,0.39],"6.9583":[-0.627,-2.979,0.398],"7.0":[-0.631,-3.112,0.409],"7.0417":[-0.633,-3.193,0.414],"7.0833":[-0.636,-3.305,0.422],"7.125":[-0.636,-3.365,0.425],"7.1667":[-0.639,-3.442,0.429],"7.2083":[-0.639,-3.484,0.431],"7.25":[-0.639,-3.519,0.43],"7.2917":[-0.639,-3.525,0.429],"7.3333":[-0.523,-3.334,0.429],"7.375":[-0.358,-3.048,0.428],"7.4167":[-0.068,-2.492,0.428],"7.4583":[0.097,-2.093,0.428],"7.5":[0.215,-1.589,0.428],"7.5417":[0.213,-1.337,0.364],"7.5833":[0.174,-1.035,0.164],"7.625":[-0.033,-0.875,-0.075],"7.6667":[-0.201,-0.807,-0.268],"7.7083":[-0.434,-0.761,-0.453],"7.75":[-0.48,-0.76,-0.356],"7.7917":[-0.501,-0.759,-0.157],"7.8333":[-0.465,-0.713,-0.262],"7.875":[-0.318,-0.394,-0.612],"7.9167":[-0.304,-0.259,-0.48],"7.9583":[-0.32,-0.254,-0.214],"8.0":[-0.387,-0.319,-0.108],"8.0417":[-0.542,-0.605,-0.07],"8.0833":[-0.623,-0.533,-0.607],"8.125":[-0.632,-0.346,-0.683],"8.1667":[-0.593,-0.325,-0.528],"8.2083":[-0.539,-0.539,-0.26],"8.25":[-0.266,-0.662,-0.056],"8.2917":[0.007,-0.702,0.036],"8.3333":[0.375,-0.735,0.12],"8.375":[0.464,-0.752,0.139],"8.4167":[-0.33,-0.76,-0.171],"8.4583":[-1.235,-0.76,-0.356],"8.5":[-2.897,-0.759,-0.379],"8.5417":[-3.823,-0.758,-0.37],"8.5833":[-4.541,-0.758,-0.327],"8.625":[-4.38,-0.759,-0.257],"8.6667":[-3.824,-0.758,-0.2],"8.7083":[-2.752,-0.695,-0.11],"8.75":[-1.973,-0.599,-0.053],"8.7917":[-0.679,-0.413,0.021],"8.8333":[0.161,-0.284,0.056],"8.875":[0.783,-0.125,0.077],"8.9167":[0.915,-0.07,0.048],"8.9583":[0.879,-0.032,-0.019],"9.0":[0.519,-0.003,-0.058],"9.0417":[0,0.016,-0.109],"9.0833":[-0.105,0.006,-0.151],"9.125":[-0.112,-0.002,-0.162],"9.1667":[-0.084,-0.007,-0.142],"9.2083":[-0.043,-0.007,-0.122],"9.25":[-0.001,-0.007,-0.091],"9.2917":[0.026,-0.002,-0.071],"9.3333":[0.026,-0.002,-0.041],"9.375":[0.012,-0.002,-0.02],"9.4167":[0.007,0.002,0.007],"9.4583":[-0.001,0.002,0.014],"9.5":[-0.01,0.002,0.014],"9.5417":[-0.01,0.002,0.012],"9.5833":[-0.001,0.002,0.003],"9.625":[-0.001,0.002,0.001]}},"angel":{"scale":0}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_inspect_2"}}},"inspect_1_angel":{"loop":true,"animation_length":9.6621,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-13.881,171.838,-60.671],"0.0417":[-16.604,170.499,-60.045],"0.0833":[-24.034,167.116,-59.307],"0.125":[-31.733,163.981,-59.476],"0.1667":[-46.189,157.786,-60.697],"0.2083":[-56.373,153.22,-62.346],"0.25":[-57.24,152.83,-62.522],"0.2917":[-57.239,152.83,-62.522],"0.3333":[-57.238,152.83,-62.522],"0.375":[-57.238,152.83,-62.522],"0.4167":[-57.237,152.831,-62.522],"0.4583":[-57.237,152.83,-62.522],"0.5":[-57.236,152.831,-62.522],"0.5417":[-57.235,152.831,-62.522],"0.5833":[-57.237,152.83,-62.522],"0.625":[-57.237,152.831,-62.522],"0.6667":[-57.236,152.831,-62.522],"0.8333":[-57.236,152.83,-62.522],"0.875":[-57.236,152.83,-62.522],"0.9167":[-57.236,152.83,-62.522],"0.9583":[-57.236,152.83,-62.523],"1.0":[-57.236,152.83,-62.522],"1.0417":[-57.236,152.83,-62.522],"1.0833":[-57.236,152.83,-62.523],"1.125":[-57.237,152.831,-62.521],"1.375":[-57.236,152.831,-62.521],"2.2083":[-57.236,152.831,-62.521],"2.25":[-57.236,152.83,-62.523],"3.3333":[-57.235,152.83,-62.522],"3.625":[-57.237,152.83,-62.523],"3.6667":[-57.237,152.83,-62.523],"3.7083":[-57.236,152.83,-62.523],"3.875":[-57.236,152.831,-62.522],"3.9167":[-57.236,152.831,-62.522],"3.9583":[-57.236,152.83,-62.521],"4.0":[-57.236,152.831,-62.522],"4.0417":[-57.236,152.83,-62.521],"4.0833":[-57.236,152.831,-62.522],"4.125":[-57.237,152.831,-62.522],"4.1667":[-57.236,152.831,-62.522],"4.2083":[-57.237,152.831,-62.522],"4.25":[-57.236,152.831,-62.522],"4.2917":[-57.235,152.831,-62.522],"4.3333":[-57.237,152.831,-62.522],"4.375":[-57.236,152.831,-62.522],"4.4167":[-57.236,152.831,-62.522],"4.5":[-57.236,152.831,-62.522],"4.5417":[-57.236,152.831,-62.522],"4.625":[-57.21,152.854,-62.491],"4.6667":[-57.109,152.94,-62.376],"4.7083":[-56.887,153.132,-62.122],"4.75":[-56.693,153.3,-61.901],"4.7917":[-56.342,153.612,-61.499],"4.8333":[-56.067,153.859,-61.185],"4.875":[-55.602,154.288,-60.653],"4.9167":[-55.078,154.785,-60.051],"4.9583":[-54.699,155.155,-59.614],"5.0":[-54.09,155.765,-58.914],"5.0417":[-53.66,156.209,-58.417],"5.0833":[-52.986,156.929,-57.637],"5.125":[-52.518,157.445,-57.094],"5.1667":[-51.797,158.272,-56.254],"5.2083":[-51.304,158.858,-55.677],"5.25":[-50.552,159.787,-54.795],"5.2917":[-50.045,160.44,-54.197],"5.3333":[-49.279,161.465,-53.29],"5.375":[-48.768,162.18,-52.68],"5.4167":[-48.002,163.296,-51.764],"5.4583":[-47.495,164.068,-51.153],"5.5":[-46.742,165.266,-50.239],"5.5417":[-46.001,166.508,-49.334],"5.5833":[-45.517,167.359,-48.737],"5.625":[-44.804,168.667,-47.851],"5.6667":[-44.34,169.558,-47.269],"5.7083":[-43.661,170.921,-46.412],"5.75":[-43.222,171.845,-45.852],"5.7917":[-42.584,173.251,-45.03],"5.8333":[-42.173,174.199,-44.494],"5.875":[-41.578,175.634,-43.712],"5.9167":[-41.011,177.08,-42.955],"5.9583":[-40.648,178.048,-42.465],"6.0":[-40.127,179.502,-41.753],"6.0417":[-39.795,180.47,-41.294],"6.0833":[-39.32,181.918,-40.629],"6.125":[-39.019,182.877,-40.202],"6.1667":[-38.59,184.304,-39.586],"6.2083":[-38.318,185.244,-39.193],"6.25":[-37.933,186.634,-38.629],"6.2917":[-37.69,187.547,-38.269],"6.3333":[-37.345,188.915,-37.735],"6.375":[-37.127,189.841,-37.375],"6.4167":[-36.817,191.249,-36.828],"6.4583":[-36.621,192.203,-36.46],"6.5":[-36.343,193.653,-35.903],"6.5417":[-36.168,194.635,-35.53],"6.5833":[-35.921,196.129,-34.967],"6.625":[-35.69,197.652,-34.404],"6.6667":[-35.546,198.682,-34.028],"6.7083":[-35.342,200.252,-33.467],"6.75":[-35.214,201.315,-33.094],"6.7917":[-35.033,202.934,-32.539],"6.8333":[-34.92,204.031,-32.172],"6.875":[-34.761,205.702,-31.63],"6.9167":[-34.612,207.406,-31.098],"6.9583":[-34.519,208.56,-30.75],"7.0":[-34.385,210.319,-30.241],"7.0417":[-34.299,211.51,-29.912],"7.0833":[-34.176,213.328,-29.432],"7.125":[-34.097,214.559,-29.127],"7.1667":[-33.979,216.437,-28.687],"7.2083":[-33.899,217.711,-28.411],"7.25":[-33.776,219.649,-28.025],"7.2917":[-33.691,220.964,-27.786],"7.3333":[-33.554,222.969,-27.465],"7.375":[-33.454,224.328,-27.277],"7.4167":[-33.286,226.399,-27.041],"7.4583":[-32.967,228.018,-27.126],"7.5":[-30.194,232.634,-29.746],"7.5417":[-27.068,236.307,-32.835],"7.5833":[-22.254,240.998,-37.558],"7.625":[-22.236,243.304,-36.574],"7.6667":[-27.387,243.837,-26.767],"7.7083":[-39.474,243.921,-8.034],"7.75":[-55.333,243.286,8.97],"7.7917":[-72.478,234.049,28.986],"7.8333":[-75.562,228.133,34.426],"7.875":[-79.23,230.319,38.516],"7.9167":[-77.754,242.431,34.042],"7.9583":[-73.651,255.483,27.987],"8.0":[-79.381,253.703,34.477],"8.0417":[-88.596,241.368,47.458],"8.0833":[-88.572,228.848,53.422],"8.125":[-92.274,224.535,61.577],"8.1667":[-92.409,230.952,59.896],"8.2083":[-92.847,233.338,57.642],"8.25":[-74.791,245.399,33.737],"8.2917":[-55.631,243.219,12.91],"8.3333":[-48.231,231.228,3.665],"8.375":[-47.98,229.889,3.27],"8.4167":[-47.98,229.891,3.27],"8.4583":[-47.981,229.89,3.27],"8.5":[-47.981,229.892,3.27],"8.5417":[-47.98,229.891,3.269],"8.5833":[-47.98,229.888,3.269],"8.625":[-39.858,168.472,-47.619],"8.6667":[-53.316,142.495,-75.087],"8.7083":[-31.619,134.391,-63.034],"8.75":[-17.448,135.813,-50.954],"8.7917":[-5.754,142.826,-40.412],"8.8333":[-6.023,148.39,-46.038],"8.875":[-7.967,161.056,-60.396],"8.9167":[-9.531,166.328,-66.158],"8.9583":[-10.714,170.877,-66.461],"9.0":[-11.113,172.028,-63.363],"9.0417":[-11.574,173.569,-59.58],"9.0833":[-12.222,173.813,-58.195],"9.125":[-12.731,173.591,-58.142],"9.1667":[-12.953,173.375,-58.199],"9.2083":[-12.861,172.97,-58.595],"9.25":[-12.87,172.702,-59.74],"9.2917":[-12.94,172.588,-60.554],"9.3333":[-13.079,172.136,-61.201],"9.375":[-13.242,171.84,-61.342],"9.4167":[-13.249,171.586,-61.293],"9.4583":[-13.377,171.689,-61.161],"9.5":[-13.453,171.91,-60.962],"9.5417":[-13.454,171.991,-60.878],"9.5833":[-13.469,172.034,-60.806],"9.625":[-13.502,172.029,-60.779]},"position":{"0.0":[4.806,39.553,-9.527],"0.0417":[6.339,39.714,-9.529],"0.0833":[9.148,39.903,-9.547],"0.125":[10.703,38.12,-9.635],"0.1667":[13.168,31.666,-9.903],"0.2083":[14.749,26.259,-10.121],"0.25":[14.878,25.774,-10.14],"3.3333":[14.878,25.775,-10.14],"3.625":[14.878,25.774,-10.14],"4.0833":[14.878,25.774,-10.14],"4.125":[14.878,25.774,-10.14],"4.9167":[14.878,25.774,-10.14],"4.9583":[14.876,25.779,-10.136],"5.0":[14.866,25.804,-10.118],"5.0417":[14.856,25.833,-10.097],"5.0833":[14.833,25.891,-10.055],"5.125":[14.815,25.94,-10.019],"5.1667":[14.781,26.029,-9.955],"5.2083":[14.755,26.098,-9.905],"5.25":[14.711,26.214,-9.822],"5.2917":[14.679,26.299,-9.761],"5.3333":[14.626,26.439,-9.661],"5.375":[14.589,26.54,-9.59],"5.4167":[14.528,26.701,-9.476],"5.4583":[14.486,26.815,-9.397],"5.5":[14.419,26.994,-9.272],"5.5417":[14.349,27.182,-9.142],"5.5833":[14.301,27.312,-9.053],"5.625":[14.226,27.513,-8.916],"5.6667":[14.176,27.651,-8.823],"5.7083":[14.098,27.862,-8.682],"5.75":[14.046,28.005,-8.587],"5.7917":[13.966,28.223,-8.444],"5.8333":[13.913,28.37,-8.349],"5.875":[13.833,28.592,-8.207],"5.9167":[13.753,28.814,-8.067],"5.9583":[13.7,28.962,-7.975],"6.0":[13.621,29.183,-7.84],"6.0417":[13.569,29.329,-7.752],"6.0833":[13.493,29.546,-7.625],"6.125":[13.444,29.688,-7.543],"6.1667":[13.372,29.898,-7.426],"6.2083":[13.325,30.034,-7.352],"6.25":[13.258,30.233,-7.248],"6.2917":[13.215,30.361,-7.184],"6.3333":[13.153,30.55,-7.089],"6.375":[13.114,30.675,-7.023],"6.4167":[13.056,30.861,-6.923],"6.4583":[13.018,30.985,-6.855],"6.5":[12.963,31.171,-6.751],"6.5417":[12.926,31.296,-6.682],"6.5833":[12.872,31.483,-6.577],"6.625":[12.819,31.671,-6.473],"6.6667":[12.783,31.798,-6.403],"6.7083":[12.73,31.99,-6.301],"6.75":[12.693,32.12,-6.233],"6.7917":[12.639,32.317,-6.134],"6.8333":[12.601,32.451,-6.07],"6.875":[12.544,32.655,-5.976],"6.9167":[12.485,32.864,-5.887],"6.9583":[12.444,33.007,-5.83],"7.0":[12.381,33.225,-5.749],"7.0417":[12.337,33.374,-5.698],"7.0833":[12.269,33.603,-5.628],"7.125":[12.222,33.76,-5.585],"7.1667":[12.147,34.002,-5.527],"7.2083":[12.095,34.168,-5.493],"7.25":[12.014,34.424,-5.449],"7.2917":[11.957,34.6,-5.425],"7.3333":[11.867,34.871,-5.397],"7.375":[11.804,35.058,-5.385],"7.4167":[11.705,35.347,-5.375],"7.4583":[11.612,35.579,-5.398],"7.5":[11.233,36.295,-5.698],"7.5417":[10.907,36.927,-6.032],"7.5833":[10.502,37.889,-6.615],"7.625":[10.402,38.623,-7.175],"7.6667":[10.407,38.966,-7.603],"7.7083":[10.445,39.189,-8.345],"7.75":[10.561,39.137,-8.966],"7.7917":[10.655,38.973,-9.852],"7.8333":[10.63,38.869,-9.918],"7.875":[10.44,38.971,-9.201],"7.9167":[10.312,39.11,-8.42],"7.9583":[10.261,39.462,-7.904],"8.0":[10.442,39.59,-8.082],"8.0417":[10.922,39.64,-8.862],"8.0833":[11.164,39.599,-9.76],"8.125":[11.102,39.516,-9.481],"8.1667":[10.816,39.602,-8.678],"8.2083":[10.627,39.695,-7.986],"8.25":[10.338,39.346,-6.933],"8.2917":[10.337,38.494,-6.569],"8.3333":[10.772,36.841,-6.426],"8.375":[11.075,35.742,-6.432],"8.4167":[11.504,33.925,-6.519],"8.4583":[11.938,33.394,-6.553],"8.5":[12.89,33.457,-6.55],"8.5417":[13.621,33.595,-6.548],"8.5833":[14.721,34.008,-6.546],"8.625":[15.978,35.118,-6.711],"8.6667":[15.932,36.257,-7.064],"8.7083":[13.759,38.267,-7.856],"8.75":[11.632,39.124,-8.172],"8.7917":[8.007,39.971,-8.593],"8.8333":[5.766,40.094,-9.055],"8.875":[3.949,39.745,-9.31],"8.9167":[3.96,39.443,-9.225],"8.9583":[4.425,39.242,-9.218],"9.0":[4.822,39.274,-9.304],"9.0417":[4.976,39.442,-9.42],"9.0833":[4.978,39.597,-9.502],"9.125":[4.905,39.665,-9.533],"9.1667":[4.784,39.691,-9.564],"9.2083":[4.709,39.674,-9.573],"9.25":[4.612,39.617,-9.569],"9.2917":[4.568,39.573,-9.559],"9.3333":[4.55,39.536,-9.54],"9.375":[4.548,39.52,-9.528],"9.4167":[4.554,39.508,-9.517],"9.4583":[4.559,39.508,-9.516],"9.5":[4.565,39.514,-9.518],"9.5417":[4.566,39.518,-9.52],"9.5833":[4.566,39.522,-9.524],"9.625":[4.562,39.525,-9.526]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand":{"rotation":{"0.0":[138.47,-35.671,-98.738],"0.0417":[135.733,-35.231,-106.957],"0.0833":[135.016,-30.305,-122.56],"0.125":[138.673,-15.444,-138.499],"0.1667":[137.433,14.46,-159.23],"0.2083":[128.267,32.544,-174.152],"0.25":[121.818,31.47,-180.609],"0.2917":[134.638,38.251,-178.354],"0.3333":[133.475,42.156,-172.734],"0.375":[137.824,28.354,-184.435],"0.4167":[95.474,23.416,-172.06],"0.4583":[115.875,8.544,-162.827],"0.5":[97.69,24.191,-183.83],"0.5417":[65.793,35.582,-219.581],"0.5833":[64.18,41.555,-225.659],"0.625":[60.689,50.837,-234.56],"0.6667":[29.946,40.777,-263.789],"0.7083":[19.47,23.662,-267.967],"0.75":[17.107,14.819,-261.229],"0.7917":[15.382,8.677,-248.223],"0.8333":[12.928,8.742,-241.342],"0.875":[11.754,19.863,-216.606],"0.9167":[30.949,40.311,-165.982],"0.9583":[49.765,45.364,-139.195],"1.0":[87.953,26.649,-87.994],"1.0417":[96.113,8.523,-73.155],"1.0833":[99.822,-19.461,-58.174],"1.125":[98.537,-36.532,-50.222],"1.1667":[92.587,-56.598,-40.67],"1.2083":[74.385,-71.883,-22.307],"1.25":[44.395,-78.015,6.804],"1.2917":[3.162,-79.079,46.377],"1.3333":[-7.4,-79.061,55.6],"1.375":[-15.964,-79.65,62.69],"1.4167":[-17.43,-80.682,63.382],"1.4583":[-20.053,-81.927,65.034],"1.5":[-22.387,-82.417,66.894],"1.5417":[-25.449,-83.081,69.389],"1.5833":[-27.363,-83.503,70.995],"1.625":[-29.734,-84.17,72.955],"1.6667":[-30.59,-84.697,73.559],"1.7083":[-30.559,-85.581,73.185],"1.75":[-29.561,-86.258,71.951],"1.7917":[-25.99,-87.266,68.052],"1.8333":[-23.076,-87.754,64.981],"1.875":[-17.304,-88.345,59.016],"1.9167":[-7.209,-88.847,48.746],"1.9583":[5.76,-89.137,35.666],"2.0":[49.224,-89.378,-7.974],"2.0417":[84.872,-89.225,-43.755],"2.0833":[124.593,-86.112,-84.309],"2.125":[129.77,-81.537,-90.695],"2.1667":[130.412,-70.366,-95.047],"2.2083":[129.223,-57.291,-98.112],"2.25":[125.061,-21.849,-106.081],"2.2917":[121.359,0.618,-112.671],"2.3333":[113.913,25.782,-123.337],"2.375":[105.777,41.935,-133.511],"2.4167":[101.873,46.594,-138.476],"2.4583":[98.921,50.025,-142.068],"2.5":[99.269,50.25,-141.815],"2.5417":[100.536,49.839,-140.798],"2.5833":[101.428,49.23,-140.085],"2.625":[101.675,49.081,-140.087],"2.6667":[101.247,49.47,-140.643],"2.7083":[100.481,50.152,-141.523],"2.75":[100.003,50.569,-142.069],"2.7917":[99.362,51.109,-142.809],"2.8333":[99.067,51.344,-143.169],"2.875":[98.831,51.512,-143.503],"2.9167":[98.731,51.561,-143.701],"2.9583":[98.703,51.561,-143.792],"3.0":[98.664,51.566,-143.923],"3.0417":[98.607,51.601,-144.038],"3.0833":[98.484,51.692,-144.243],"3.125":[98.398,51.76,-144.38],"3.1667":[98.265,51.872,-144.587],"3.2083":[98.171,51.951,-144.726],"3.25":[98.024,52.079,-144.935],"3.2917":[97.915,52.174,-145.078],"3.3333":[97.736,52.342,-145.3],"3.375":[97.556,52.508,-145.513],"3.4167":[97.45,52.604,-145.64],"3.4583":[97.362,52.676,-145.746],"3.5":[97.335,52.692,-145.777],"3.5417":[97.265,52.746,-145.858],"3.5833":[97.152,52.847,-145.99],"3.625":[95.705,54.176,-147.679],"3.6667":[90.505,60.58,-153.428],"3.7083":[71.141,70.5,-173.828],"3.75":[40.108,74.57,-205.732],"3.7917":[0.724,67.72,-246.385],"3.8333":[-4.676,58.515,-252.533],"3.875":[-1.135,43.205,-255.297],"3.9167":[13.363,32.166,-256.434],"3.9583":[33.736,25.344,-253.899],"4.0":[71.329,9.706,-253.222],"4.0417":[83.826,8.919,-266.076],"4.0833":[97.317,7.404,-270.939],"4.125":[103.795,7.366,-265.446],"4.1667":[109.251,4.917,-248.908],"4.2083":[107.799,1.326,-232.63],"4.25":[98.025,-2.315,-225.731],"4.2917":[93.838,-1.474,-240.345],"4.3333":[97.754,0.28,-253.26],"4.375":[103.811,3.985,-249.498],"4.4167":[111.637,0.732,-236.157],"4.4583":[116.245,-1.567,-216.529],"4.5":[122.771,-19.938,-183.518],"4.5417":[106.812,-23.127,-165.837],"4.5833":[104.532,-25.064,-160.573],"4.625":[92.335,-29.667,-150.47],"4.6667":[84.999,-41.942,-134.024],"4.7083":[71.931,-55.939,-107.355],"4.75":[75.626,-60.954,-105.578],"4.7917":[99.465,-56.538,-132.031],"4.8333":[114.129,-44.228,-140.746],"4.875":[134.436,-31.618,-138.087],"4.9167":[146.232,-42.943,-117.474],"4.9583":[152.077,-47.633,-113.878],"5.0":[157.898,-52.072,-112.656],"5.0417":[160.237,-53.883,-112.293],"5.0833":[161.211,-54.84,-111.439],"5.125":[161.441,-55.116,-111.046],"5.1667":[162.447,-55.647,-111.352],"5.2083":[163.054,-55.938,-111.664],"5.25":[163.943,-56.372,-112.162],"5.2917":[164.477,-56.625,-112.469],"5.3333":[165.024,-56.893,-112.716],"5.375":[165.214,-56.994,-112.725],"5.4167":[165.353,-57.083,-112.628],"5.4583":[165.407,-57.126,-112.553],"5.5":[165.474,-57.194,-112.476],"5.5417":[165.468,-57.234,-112.389],"5.5833":[165.458,-57.26,-112.342],"5.625":[165.493,-57.314,-112.329],"5.6667":[165.583,-57.374,-112.401],"5.7083":[165.731,-57.467,-112.536],"5.75":[165.78,-57.508,-112.568],"5.7917":[164.885,-57.175,-111.484],"5.8333":[160.606,-55.17,-106.484],"5.875":[157.725,-52.683,-102.723],"5.9167":[154.977,-47.107,-99.76],"5.9583":[152.979,-41.729,-97.864],"6.0":[150.411,-25.287,-97.178],"6.0417":[150.434,-14.672,-99.922],"6.0833":[153.956,5.176,-115.255],"6.125":[157.953,23.489,-126.671],"6.1667":[164.255,55.122,-140.26],"6.2083":[172.01,69.392,-145.51],"6.25":[147.358,81.802,-186.784],"6.2917":[99.831,81.15,-243.701],"6.3333":[84.069,80.328,-269.591],"6.375":[85.976,79.677,-270.427],"6.4167":[91.292,79.1,-266.915],"6.4583":[94.027,78.848,-265.028],"6.5":[95.958,78.677,-264.316],"6.5417":[96.855,78.717,-263.997],"6.5833":[98.017,78.765,-263.523],"6.625":[98.882,79.03,-263.063],"6.6667":[99.55,79.204,-262.601],"6.7083":[100.345,79.351,-262.043],"6.75":[100.595,79.328,-261.901],"6.7917":[100.853,79.275,-261.786],"6.8333":[100.977,79.23,-261.747],"6.875":[101.084,79.165,-261.756],"6.9167":[101.037,79.085,-261.884],"6.9583":[100.975,79.023,-262],"7.0":[100.877,78.938,-262.171],"7.0417":[100.846,78.894,-262.242],"7.0833":[100.865,78.866,-262.265],"7.125":[100.925,78.866,-262.229],"7.1667":[101.035,78.88,-262.146],"7.2083":[101.09,78.89,-262.103],"7.25":[101.093,78.893,-262.107],"7.2917":[100.273,78.783,-262.801],"7.3333":[98.434,78.163,-264.47],"7.375":[104.83,77.567,-257.946],"7.4167":[126.991,75.122,-234.508],"7.4583":[134.237,72.931,-226.426],"7.5":[128.815,71.099,-230.672],"7.5417":[123.777,69.976,-234.805],"7.5833":[116.816,69.333,-240.708],"7.625":[116.074,71.774,-241.238],"7.6667":[120.804,74.379,-236.248],"7.7083":[128.799,76.294,-228.336],"7.75":[133.863,76.874,-223.511],"7.7917":[140.118,76.464,-217.743],"7.8333":[145.272,74.726,-212.16],"7.875":[152.268,70.611,-203.953],"7.9167":[152.992,69.592,-203.222],"7.9583":[149.323,71.4,-207.775],"8.0":[145.531,73.333,-212.054],"8.0417":[133.4,76.109,-225.996],"8.0833":[141.914,72.775,-218.665],"8.125":[149.684,70.236,-210.967],"8.1667":[146.703,70.85,-213.724],"8.2083":[140.56,71.717,-220.377],"8.25":[113.482,66.911,-248.597],"8.2917":[96.855,53.977,-264.979],"8.3333":[87.089,26.304,-271.952],"8.375":[85.921,11.883,-270.049],"8.4167":[86.63,18.32,-263.64],"8.4583":[88.239,40.539,-259.369],"8.5":[132.564,54.523,-201.795],"8.5417":[144.249,44.493,-180.626],"8.5833":[142.214,33.957,-176.371],"8.625":[139.604,19.181,-179.936],"8.6667":[140.452,11.504,-181.625],"8.7083":[132.337,1.549,-187.508],"8.75":[124.021,5.193,-185.351],"8.7917":[121.792,11.804,-164.295],"8.8333":[134.377,-0.931,-123.586],"8.875":[140.698,-7.184,-109.618],"8.9167":[139.815,-14.221,-103.036],"8.9583":[135.47,-26.237,-98.749],"9.0":[134.834,-32.483,-97.184],"9.0417":[137.415,-38.426,-96.496],"9.0833":[139.751,-38.806,-96.384],"9.125":[140.455,-38.126,-96.042],"9.1667":[140.664,-37.119,-95.384],"9.2083":[140.396,-36.651,-94.819],"9.25":[140.051,-36.043,-94.28],"9.2917":[139.836,-35.924,-94.174],"9.3333":[139.686,-35.982,-94.254],"9.375":[139.569,-36.026,-94.215],"9.4167":[139.398,-36.09,-94.142],"9.4583":[139.348,-36.139,-94.113],"9.5":[139.326,-36.216,-94.114],"9.5417":[139.322,-36.273,-94.137],"9.5833":[139.318,-36.355,-94.18],"9.625":[139.327,-36.438,-94.222]},"position":{"0.0":[-3.816,39.639,-14.668],"0.0417":[-5.665,39.943,-14.591],"0.0833":[-8.544,40.021,-14.499],"0.125":[-10.731,39.613,-14.48],"0.1667":[-13.65,37.629,-14.433],"0.2083":[-14.457,34.763,-14.7],"0.25":[-13.46,34.055,-15.37],"0.2917":[-11.934,36.069,-16.597],"0.3333":[-12.528,38.834,-16.2],"0.375":[-14.071,36.205,-13.702],"0.4167":[-16.011,30.453,-11.715],"0.4583":[-12.506,24.704,-11.448],"0.5":[-11.034,27.474,-11.955],"0.5417":[-9.229,33.159,-12.941],"0.5833":[-8.079,36.054,-13.544],"0.625":[-6.355,40.295,-14.518],"0.6667":[-5.089,41.744,-15.862],"0.7083":[-4.724,40.215,-16.692],"0.75":[-5.347,38.382,-16.533],"0.7917":[-6.862,35.947,-15.861],"0.8333":[-7.739,35.539,-15.329],"0.875":[-8.893,35.83,-14.486],"0.9167":[-9.642,37.479,-13.767],"0.9583":[-9.941,38.63,-13.468],"1.0":[-10.214,40.841,-12.402],"1.0417":[-10.397,41.95,-11.794],"1.0833":[-10.875,43.375,-10.749],"1.125":[-11.352,44.16,-10.1],"1.1667":[-12.42,45.086,-9.61],"1.2083":[-13.548,45.612,-9.271],"1.25":[-14.281,45.81,-9.07],"1.2917":[-15.166,46.021,-8.627],"1.3333":[-15.634,46.098,-8.286],"1.375":[-16.182,46.162,-7.944],"1.4167":[-16.469,46.175,-7.786],"1.4583":[-16.855,46.184,-7.61],"1.5":[-17.077,46.181,-7.548],"1.5417":[-17.362,46.164,-7.503],"1.5833":[-17.53,46.146,-7.496],"1.625":[-17.755,46.113,-7.502],"1.6667":[-17.888,46.086,-7.507],"1.7083":[-18.054,46.042,-7.525],"1.75":[-18.149,46.012,-7.543],"1.7917":[-18.267,45.969,-7.575],"1.8333":[-18.324,45.944,-7.595],"1.875":[-18.396,45.91,-7.626],"1.9167":[-18.46,45.877,-7.657],"1.9583":[-18.501,45.856,-7.677],"2.0":[-18.564,45.823,-7.708],"2.0417":[-18.609,45.799,-7.729],"2.0833":[-18.793,45.695,-7.792],"2.125":[-19.008,45.555,-7.855],"2.1667":[-19.326,45.185,-7.924],"2.2083":[-19.535,44.856,-7.931],"2.25":[-19.788,44.198,-7.823],"2.2917":[-19.855,43.722,-7.714],"2.3333":[-19.853,43.176,-7.594],"2.375":[-19.777,42.802,-7.611],"2.4167":[-19.639,42.534,-7.568],"2.4583":[-19.409,42.272,-7.541],"2.5":[-19.266,42.185,-7.554],"2.5417":[-19.058,42.084,-7.577],"2.5833":[-18.931,42.048,-7.587],"2.625":[-18.755,42.026,-7.605],"2.6667":[-18.645,42.029,-7.624],"2.7083":[-18.494,42.054,-7.659],"2.75":[-18.393,42.071,-7.684],"2.7917":[-18.246,42.097,-7.717],"2.8333":[-18.154,42.116,-7.736],"2.875":[-18.023,42.145,-7.758],"2.9167":[-17.896,42.176,-7.777],"2.9583":[-17.814,42.197,-7.788],"3.0":[-17.699,42.225,-7.804],"3.0417":[-17.629,42.242,-7.813],"3.0833":[-17.533,42.263,-7.826],"3.125":[-17.475,42.276,-7.833],"3.1667":[-17.395,42.292,-7.843],"3.2083":[-17.346,42.302,-7.849],"3.25":[-17.277,42.316,-7.859],"3.2917":[-17.238,42.324,-7.865],"3.3333":[-17.192,42.334,-7.873],"3.375":[-17.153,42.341,-7.881],"3.4167":[-17.127,42.345,-7.887],"3.4583":[-17.09,42.351,-7.893],"3.5":[-17.069,42.354,-7.896],"3.5417":[-17.036,42.358,-7.902],"3.5833":[-17.011,42.361,-7.909],"3.625":[-16.92,42.366,-7.965],"3.6667":[-16.63,42.354,-8.168],"3.7083":[-15.969,42.143,-8.759],"3.75":[-15.33,41.828,-9.421],"3.7917":[-14.427,41.233,-10.353],"3.8333":[-13.924,40.735,-10.86],"3.875":[-13.239,39.965,-11.499],"3.9167":[-12.667,39.352,-11.85],"3.9583":[-12.326,39.082,-12.014],"4.0":[-12.044,39.345,-12.359],"4.0417":[-12.055,39.655,-12.584],"4.0833":[-11.807,40.499,-12.675],"4.125":[-11.554,40.695,-12.812],"4.1667":[-11.026,40.502,-13.119],"4.2083":[-10.579,39.902,-13.383],"4.25":[-10.532,38.437,-13.24],"4.2917":[-10.894,37.754,-12.426],"4.3333":[-12.117,38.029,-11.442],"4.375":[-13.01,38.661,-11.217],"4.4167":[-13.889,40.635,-11.673],"4.4583":[-13.893,42.1,-12.366],"4.5":[-12.043,43.052,-13.511],"4.5417":[-9.828,41.682,-13.684],"4.5833":[-9.604,40.179,-13.395],"4.625":[-10.769,38.863,-12.231],"4.6667":[-12.287,39.084,-11.896],"4.7083":[-13.501,40.861,-11.855],"4.75":[-13.771,42.533,-12.123],"4.7917":[-13.126,44.034,-12.683],"4.8333":[-11.697,44.227,-12.532],"4.875":[-8.533,43.113,-10.885],"4.9167":[-4.48,40.779,-8.012],"4.9583":[-3.698,40.333,-7.265],"5.0":[-3.139,40.05,-6.962],"5.0417":[-2.909,39.957,-6.889],"5.0833":[-2.635,39.914,-6.824],"5.125":[-2.497,39.907,-6.797],"5.1667":[-2.383,39.904,-6.76],"5.2083":[-2.338,39.898,-6.751],"5.25":[-2.277,39.884,-6.749],"5.2917":[-2.245,39.874,-6.751],"5.3333":[-2.207,39.861,-6.756],"5.375":[-2.191,39.853,-6.761],"5.4167":[-2.175,39.842,-6.77],"5.4583":[-2.167,39.835,-6.776],"5.5":[-2.156,39.824,-6.785],"5.5417":[-2.148,39.814,-6.795],"5.5833":[-2.145,39.808,-6.801],"5.625":[-2.14,39.797,-6.811],"5.6667":[-2.138,39.79,-6.817],"5.7083":[-2.135,39.779,-6.828],"5.75":[-2.133,39.771,-6.834],"5.7917":[-2.13,39.756,-6.827],"5.8333":[-2.13,39.728,-6.761],"5.875":[-2.153,39.669,-6.68],"5.9167":[-2.231,39.621,-6.6],"5.9583":[-2.311,39.598,-6.553],"6.0":[-2.689,39.657,-6.657],"6.0417":[-3.062,39.869,-6.749],"6.0833":[-4.033,40.54,-6.958],"6.125":[-4.788,41.194,-7.131],"6.1667":[-5.94,42.233,-7.415],"6.2083":[-7.014,42.48,-7.655],"6.25":[-8.359,42.57,-7.918],"6.2917":[-9.079,42.574,-8.037],"6.3333":[-9.866,42.569,-8.124],"6.375":[-10.276,42.553,-8.109],"6.4167":[-10.733,42.524,-8.058],"6.4583":[-10.982,42.506,-8.031],"6.5":[-11.271,42.477,-8.016],"6.5417":[-11.419,42.46,-7.999],"6.5833":[-11.618,42.439,-7.978],"6.625":[-11.766,42.415,-7.961],"6.6667":[-11.86,42.401,-7.949],"6.7083":[-12,42.377,-7.933],"6.75":[-12.068,42.365,-7.925],"6.7917":[-12.16,42.349,-7.911],"6.8333":[-12.216,42.339,-7.901],"6.875":[-12.296,42.328,-7.885],"6.9167":[-12.373,42.315,-7.876],"6.9583":[-12.429,42.305,-7.87],"7.0":[-12.507,42.291,-7.863],"7.0417":[-12.548,42.283,-7.861],"7.0833":[-12.587,42.277,-7.86],"7.125":[-12.611,42.273,-7.859],"7.1667":[-12.644,42.267,-7.86],"7.2083":[-12.666,42.264,-7.863],"7.25":[-12.698,42.26,-7.872],"7.2917":[-12.714,42.265,-7.93],"7.3333":[-12.707,42.312,-8.234],"7.375":[-12.692,42.353,-8.347],"7.4167":[-12.635,42.335,-8.64],"7.4583":[-12.624,42.196,-8.818],"7.5":[-12.697,41.349,-9.42],"7.5417":[-12.583,41.017,-9.8],"7.5833":[-12.164,41.066,-10.214],"7.625":[-11.83,41.383,-10.343],"7.6667":[-11.666,41.641,-10.289],"7.7083":[-11.557,41.829,-10.211],"7.75":[-11.521,41.904,-10.167],"7.7917":[-11.511,41.951,-10.117],"7.8333":[-11.517,41.966,-10.085],"7.875":[-11.55,41.952,-10.144],"7.9167":[-11.569,41.932,-10.216],"7.9583":[-11.59,41.899,-10.278],"8.0":[-11.619,41.888,-10.255],"8.0417":[-11.728,41.906,-10.143],"8.0833":[-11.767,41.946,-10.08],"8.125":[-11.809,41.94,-10.091],"8.1667":[-11.851,41.877,-10.146],"8.2083":[-11.863,41.815,-10.197],"8.25":[-11.928,41.45,-10.487],"8.2917":[-12.154,40.778,-11.279],"8.3333":[-12.478,39.526,-13.019],"8.375":[-12.356,39.146,-13.892],"8.4167":[-12.427,39.967,-15.082],"8.4583":[-12.699,40.941,-15.102],"8.5":[-13.742,42.574,-14.475],"8.5417":[-14.536,43.389,-13.891],"8.5833":[-15.427,44.477,-13.174],"8.625":[-16.081,45.66,-13.217],"8.6667":[-15.976,46.469,-13.497],"8.7083":[-14.951,47.214,-14.48],"8.75":[-12.411,46.997,-15.126],"8.7917":[-5.282,44.751,-16.041],"8.8333":[-0.886,41.365,-14.752],"8.875":[-0.587,38.436,-13.556],"8.9167":[-1.944,37.952,-13.657],"8.9583":[-3.099,38.444,-14.448],"9.0":[-3.106,38.918,-14.772],"9.0417":[-2.996,39.506,-14.811],"9.0833":[-2.905,39.596,-14.75],"9.125":[-2.87,39.577,-14.716],"9.1667":[-2.853,39.511,-14.689],"9.2083":[-2.865,39.475,-14.69],"9.25":[-2.892,39.446,-14.695],"9.2917":[-2.905,39.44,-14.702],"9.3333":[-2.913,39.444,-14.709],"9.375":[-2.914,39.448,-14.711],"9.4167":[-2.913,39.454,-14.712],"9.4583":[-2.911,39.457,-14.712],"9.5":[-2.907,39.459,-14.71],"9.5417":[-2.905,39.46,-14.709],"9.5833":[-2.904,39.458,-14.709],"9.625":[-2.903,39.457,-14.708]}},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.75":[15,0,0],"0.9167":[40,0,0],"1.25":[-17.5,0,0],"2.7917":[0,0,0],"3.5833":[0,0,0],"3.875":[27.5,0,0],"4.2083":[-9.7294,0,-7.4342],"4.8333":[0,0,0]},"position":{"0.0":[0,2.5,0],"3.8333":[0,2.5,0],"4.2083":[-0.1275,3.4773,0.169],"4.4583":[-0.2575,4.4573,0.339],"4.8333":[-0.2575,4.4573,0.339],"5.0833":[0,2.5,0]},"scale":[1,1.5,1]},"annihil":{"rotation":{"0.0":[-14.04,41.493,85.506],"0.0417":[-11.17,40.95,77.506],"0.0833":[-10.921,36.098,61.532],"0.125":[-15.823,21.567,44.497],"0.1667":[-16.077,-8.305,23.642],"0.2083":[-8.331,-26.756,9.953],"0.25":[-2.354,-26.344,4.397],"0.2917":[-19.397,-34.984,10.522],"0.3333":[-72.24,-27.345,22.625],"0.375":[-120.761,17.718,58.556],"0.4167":[-143.943,56.092,47.91],"0.4583":[-241.706,50.106,-62.115],"0.5":[-248.871,20.578,-93.423],"0.5417":[-227.155,3.194,-145.066],"0.5833":[-203.221,26.899,-174.106],"0.625":[-139.059,47.73,-154.878],"0.6667":[-73.4,23.61,-93.585],"0.7083":[-74.417,-19.59,-75.199],"0.75":[-73.137,-16.716,-70.336],"0.7917":[-71.355,-9.92,-56.804],"0.8333":[-69.45,-9.997,-49.588],"0.875":[-69.977,-19.611,-27.474],"0.9167":[-88.613,-38.399,18.026],"0.9583":[-109.904,-43.321,48.575],"1.0":[-145.592,-22.316,98.69],"1.0417":[-152.749,-7.436,112.166],"1.0833":[-154.447,20.138,128.943],"1.125":[-150.188,38.109,139.389],"1.1667":[-139.668,57.328,152.036],"1.2083":[-116.427,70.713,174.39],"1.25":[-87.757,75.161,201.774],"1.2917":[-56.264,75.166,231.379],"1.3333":[-48.517,75.025,237.722],"1.375":[-42.276,75.588,242.433],"1.4167":[-41.291,76.624,242.637],"1.4583":[-39.62,77.878,243.329],"1.5":[-38.171,78.379,244.293],"1.5417":[-36.39,79.064,245.498],"1.5833":[-35.362,79.501,246.212],"1.625":[-34.272,80.189,246.892],"1.6667":[-34.132,80.72,246.779],"1.7083":[-34.861,81.597,245.713],"1.75":[-35.988,82.256,244.358],"1.7917":[-38.54,83.233,241.496],"1.8333":[-40.084,83.704,239.801],"1.875":[-42.278,84.281,237.419],"1.9167":[-44.647,84.791,234.887],"1.9583":[-46.516,85.12,232.913],"2.0":[-50.274,85.63,228.985],"2.0417":[-53.892,85.996,225.241],"2.0833":[-112.387,87.027,165.875],"2.125":[-160.783,83.525,116.17],"2.1667":[-176.826,72.048,96.452],"2.2083":[-179.81,58.524,89.529],"2.25":[-179.892,22.176,78.927],"2.2917":[-177.913,-1.018,72.303],"2.3333":[-172.725,-27.449,62.545],"2.375":[-166.653,-44.87,53.693],"2.4167":[-163.452,-50.076,49.206],"2.4583":[-161.056,-53.7,45.913],"2.5":[-161.481,-53.769,46.186],"2.5417":[-162.736,-53.183,47.211],"2.5833":[-163.542,-52.498,47.888],"2.625":[-163.772,-52.33,47.882],"2.6667":[-163.406,-52.754,47.36],"2.7083":[-162.749,-53.498,46.54],"2.75":[-162.339,-53.954,46.031],"2.7917":[-161.782,-54.545,45.337],"2.8333":[-161.525,-54.806,44.996],"2.875":[-161.31,-54.992,44.671],"2.9167":[-161.215,-55.049,44.475],"2.9583":[-161.184,-55.051,44.379],"3.0":[-161.142,-55.059,44.245],"3.0417":[-161.09,-55.099,44.132],"3.0833":[-160.981,-55.202,43.935],"3.125":[-160.904,-55.276,43.802],"3.1667":[-160.791,-55.398,43.607],"3.2083":[-160.713,-55.487,43.477],"3.25":[-160.586,-55.626,43.279],"3.2917":[-160.494,-55.731,43.146],"3.3333":[-160.339,-55.91,42.939],"3.375":[-160.187,-56.091,42.742],"3.4167":[-160.094,-56.195,42.623],"3.4583":[-160.018,-56.274,42.523],"3.5":[-159.994,-56.293,42.493],"3.5417":[-159.934,-56.352,42.418],"3.5833":[-159.838,-56.463,42.296],"3.625":[-158.623,-57.904,40.75],"3.6667":[-149.736,-64.788,31.004],"3.7083":[-115.76,-73.525,-3.979],"3.75":[-75.175,-72.972,-45],"3.7917":[-47.068,-59.69,-73.335],"3.8333":[-44.652,-47.54,-75.826],"3.875":[-45.762,-25.553,-78.007],"3.9167":[-54.31,10.861,-85.294],"3.9583":[-73.339,34.115,-104.161],"4.0":[-133.184,17.187,-154.414],"4.0417":[-145.761,-3.286,-157.368],"4.0833":[-159.427,-28.244,-150.299],"4.125":[-179.325,-34.105,-134.776],"4.1667":[-209.079,-34.264,-96.467],"4.2083":[-218.81,-29.053,-58.555],"4.25":[-198.863,-7.568,-13.973],"4.2917":[-178.58,3.735,21.476],"4.3333":[-161.241,18.964,66.735],"4.375":[-156.991,28.292,101.921],"4.4167":[-164.793,34.699,137.956],"4.4583":[-174.233,24.005,168.913],"4.5":[-188.453,-11.604,216.785],"4.5417":[-201.03,-12.923,274.92],"4.5833":[-195.085,-4.109,303.625],"4.625":[-184.327,4.874,356.072],"4.6667":[-173.863,24.236,396.487],"4.7083":[-157.752,26.278,465.897],"4.75":[-162.941,15.407,502.344],"4.7917":[-170.651,-11.295,540.78],"4.8333":[-170.141,-30.327,563.46],"4.875":[-162.735,-17.767,598.718],"4.9167":[-157.212,-35.842,619.142],"4.9583":[-154.019,-41.559,624.898],"5.0":[-151.216,-47.01,628.615],"5.0417":[-150.266,-49.214,630.139],"5.0833":[-150.031,-50.316,631.604],"5.125":[-150.01,-50.622,632.17],"5.1667":[-149.512,-51.336,632.304],"5.2083":[-149.201,-51.739,632.253],"5.25":[-148.755,-52.336,632.141],"5.2917":[-148.489,-52.688,632.069],"5.3333":[-148.222,-53.057,632.067],"5.375":[-148.132,-53.194,632.145],"5.4167":[-148.08,-53.305,632.317],"5.4583":[-148.067,-53.357,632.428],"5.5":[-148.058,-53.434,632.552],"5.5417":[-148.093,-53.471,632.663],"5.5833":[-148.12,-53.49,632.723],"5.625":[-148.129,-53.546,632.773],"5.6667":[-148.096,-53.622,632.75],"5.7083":[-148.038,-53.742,632.694],"5.75":[-148.027,-53.79,632.693],"5.7917":[-148.525,-53.284,633.425],"5.8333":[-150.779,-50.514,636.586],"5.875":[-152.071,-47.61,638.737],"5.9167":[-152.13,-41.805,639.333],"5.9583":[-151.942,-36.279,639.561],"6.0":[-149.243,-19.928,637.461],"6.0417":[-146.324,-9.675,633.992],"6.0833":[-137.314,8.71,618.795],"6.125":[-127.512,25.428,608.885],"6.1667":[-105.332,53.828,603.968],"6.2083":[-83.587,64.737,608.66],"6.25":[-60.399,77.058,609.93],"6.2917":[-52.477,84.068,605.402],"6.3333":[-28.665,86.45,615.271],"6.375":[-35.963,87.106,603.259],"6.4167":[-56.624,87.077,578.879],"6.4583":[-65.337,86.787,568.839],"6.5":[-70.251,86.507,562.571],"6.5417":[-70.429,86.33,561.776],"6.5833":[-70.157,86.096,561.305],"6.625":[-66.309,85.845,564.708],"6.6667":[-63.883,85.651,566.919],"6.7083":[-61.547,85.424,569.025],"6.75":[-61.185,85.356,569.288],"6.7917":[-60.756,85.281,569.607],"6.8333":[-60.577,85.243,569.726],"6.875":[-60.325,85.203,569.902],"6.9167":[-60.32,85.207,569.872],"6.9583":[-60.566,85.223,569.609],"7.0":[-61.241,85.256,568.902],"7.0417":[-61.79,85.28,568.344],"7.0833":[-62.774,85.305,567.348],"7.125":[-63.628,85.321,566.486],"7.1667":[-65.409,85.356,564.691],"7.2083":[-67.087,85.392,562.993],"7.25":[-70.584,85.478,559.462],"7.2917":[-78.714,85.767,551.35],"7.3333":[-129.248,84.741,500.38],"7.375":[-136.747,81.665,492.898],"7.4167":[-127.513,75.053,503.786],"7.4583":[-126.856,71.197,505.623],"7.5":[-132.067,70.128,503.163],"7.5417":[-127.114,73.418,511.661],"7.5833":[-115.712,78.13,526.602],"7.625":[-98.255,80.141,543.852],"7.6667":[-83.107,79.718,558.36],"7.7083":[-74.093,78.422,566.116],"7.75":[-70.355,77.499,569.441],"7.7917":[-70.063,76.027,569.265],"7.8333":[-73.824,74.1,566.16],"7.875":[-80.181,69.921,561.58],"7.9167":[-81.714,69.028,560.194],"7.9583":[-80.411,71.162,560.34],"8.0":[-77.818,73.269,562.166],"8.0417":[-74.098,77.374,563.591],"8.0833":[-81.481,73.788,555.624],"8.125":[-82.626,70.27,554.904],"8.1667":[-83.281,71.412,554.4],"8.2083":[-85.244,73.479,551.727],"8.25":[-125.43,77.163,509.947],"8.2917":[-169.314,68.389,465.885],"8.3333":[-187.16,41.97,450.081],"8.375":[-189.487,27.028,451.22],"8.4167":[-191.055,23.349,458.894],"8.4583":[-188.626,29.297,463.566],"8.5":[-189.257,53.245,475.155],"8.5417":[-195.291,76.274,482.027],"8.5833":[-353.571,85.186,339.229],"8.625":[-368.574,76.147,335.654],"8.6667":[-371.596,69.67,340.309],"8.7083":[-374.113,54.055,351.198],"8.75":[-372.892,39.781,363.664],"8.7917":[-369.227,16.317,381.538],"8.8333":[-373.054,6.847,420.271],"8.875":[-378.889,13.408,433.564],"8.9167":[-377.452,20.335,440.323],"8.9583":[-371.891,31.998,445.432],"9.0":[-370.547,38.142,447.351],"9.0417":[-372.591,44.176,448.028],"9.0833":[-375.027,44.646,447.785],"9.125":[-375.844,44.002,447.967],"9.1667":[-376.158,43.003,448.521],"9.2083":[-375.911,42.523,449.095],"9.25":[-375.603,41.903,449.652],"9.2917":[-375.392,41.778,449.784],"9.3333":[-375.236,41.829,449.747],"9.375":[-375.107,41.863,449.819],"9.4167":[-374.928,41.922,449.941],"9.4583":[-374.876,41.969,449.999],"9.5":[-374.857,42.048,450.035],"9.5417":[-374.857,42.105,450.035],"9.5833":[-374.857,42.19,450.028],"9.625":[-374.87,42.279,450.016]},"position":{"0.0":[4.344,52.257,-16.524],"0.0417":[2.306,52.825,-16.411],"0.0833":[-0.797,53.245,-16.254],"0.125":[-2.972,53.072,-16.17],"0.1667":[-5.755,51.372,-15.899],"0.2083":[-6.553,48.62,-16.009],"0.25":[-5.651,47.939,-16.869],"0.2917":[-4.098,50.788,-17.366],"0.3333":[-3.379,53.691,-17.847],"0.375":[-1.046,58.176,-19.767],"0.4167":[-0.053,60.778,-22.796],"0.4583":[2.783,64.321,-27.571],"0.5":[4.758,67.566,-28.842],"0.5417":[5.791,71.897,-27.189],"0.5833":[5.537,73.043,-24.648],"0.625":[4.172,70.596,-20.045],"0.6667":[3.566,64.647,-17.586],"0.7083":[3.781,54.435,-17.609],"0.75":[3.154,51.157,-17.528],"0.7917":[1.839,48.288,-16.952],"0.8333":[0.933,47.412,-16.228],"0.875":[-0.58,46.635,-15.107],"0.9167":[-2.439,47.23,-14.63],"0.9583":[-3.208,48.256,-14.67],"1.0":[-4.078,51.077,-14.656],"1.0417":[-4.325,52.849,-14.394],"1.0833":[-4.329,55.33,-13.533],"1.125":[-4.367,56.672,-12.699],"1.1667":[-5.137,58.159,-11.761],"1.2083":[-6.197,59.099,-10.942],"1.25":[-6.966,59.505,-10.434],"1.2917":[-7.861,59.86,-9.711],"1.3333":[-8.344,59.978,-9.299],"1.375":[-8.909,60.075,-8.909],"1.4167":[-9.212,60.095,-8.761],"1.4583":[-9.616,60.113,-8.593],"1.5":[-9.846,60.116,-8.53],"1.5417":[-10.141,60.105,-8.486],"1.5833":[-10.313,60.09,-8.482],"1.625":[-10.546,60.058,-8.495],"1.6667":[-10.683,60.03,-8.51],"1.7083":[-10.854,59.983,-8.548],"1.75":[-10.955,59.951,-8.583],"1.7917":[-11.083,59.9,-8.643],"1.8333":[-11.143,59.871,-8.679],"1.875":[-11.22,59.834,-8.725],"1.9167":[-11.289,59.796,-8.77],"1.9583":[-11.331,59.771,-8.801],"2.0":[-11.398,59.733,-8.849],"2.0417":[-11.446,59.706,-8.881],"2.0833":[-11.626,59.564,-9.057],"2.125":[-11.808,59.358,-9.281],"2.1667":[-12.105,58.796,-9.683],"2.2083":[-12.307,58.172,-9.995],"2.25":[-12.419,56.497,-10.219],"2.2917":[-12.246,55.401,-9.935],"2.3333":[-11.866,54.368,-9.302],"2.375":[-11.506,53.865,-8.823],"2.4167":[-11.274,53.615,-8.618],"2.4583":[-11.007,53.366,-8.463],"2.5":[-10.876,53.277,-8.465],"2.5417":[-10.674,53.181,-8.498],"2.5833":[-10.548,53.153,-8.528],"2.625":[-10.369,53.14,-8.55],"2.6667":[-10.253,53.149,-8.556],"2.7083":[-10.095,53.177,-8.567],"2.75":[-9.988,53.196,-8.576],"2.7917":[-9.834,53.226,-8.59],"2.8333":[-9.742,53.247,-8.6],"2.875":[-9.606,53.28,-8.616],"2.9167":[-9.475,53.316,-8.634],"2.9583":[-9.393,53.338,-8.645],"3.0":[-9.278,53.371,-8.661],"3.0417":[-9.205,53.39,-8.669],"3.0833":[-9.108,53.416,-8.679],"3.125":[-9.05,53.43,-8.684],"3.1667":[-8.965,53.45,-8.689],"3.2083":[-8.916,53.462,-8.692],"3.25":[-8.845,53.479,-8.697],"3.2917":[-8.805,53.487,-8.699],"3.3333":[-8.756,53.5,-8.7],"3.375":[-8.715,53.507,-8.703],"3.4167":[-8.69,53.513,-8.706],"3.4583":[-8.648,53.52,-8.708],"3.5":[-8.628,53.523,-8.711],"3.5417":[-8.597,53.526,-8.714],"3.5833":[-8.571,53.53,-8.717],"3.625":[-8.463,53.546,-8.72],"3.6667":[-8.184,53.544,-8.607],"3.7083":[-7.582,53.458,-8.674],"3.75":[-7.023,53.321,-8.969],"3.7917":[-6.252,53.085,-9.566],"3.8333":[-5.783,52.847,-10.04],"3.875":[-5.016,52.74,-10.913],"3.9167":[-4.571,53.866,-11.521],"3.9583":[-5.002,54.615,-12.775],"4.0":[-6.408,55.26,-14.758],"4.0417":[-6.922,55.627,-15.229],"4.0833":[-7.451,55.791,-15.712],"4.125":[-7.082,55.886,-15.722],"4.1667":[-6.009,55.629,-16.374],"4.2083":[-4.917,55.05,-17.755],"4.25":[-4.618,51.81,-18.85],"4.2917":[-5.845,50.491,-17.554],"4.3333":[-7.818,50.807,-16.65],"4.375":[-8.853,52.116,-16.473],"4.4167":[-9.421,54.552,-17.035],"4.4583":[-9.137,56.467,-17.758],"4.5":[-7.57,59.113,-18.294],"4.5417":[-4.308,55.913,-19.578],"4.5833":[-3.994,53.522,-18.834],"4.625":[-7.054,51.441,-17.076],"4.6667":[-9.724,53.169,-16.184],"4.7083":[-9.785,57.245,-15.727],"4.75":[-8.077,59.027,-16.177],"4.7917":[-6.219,59.319,-16.14],"4.8333":[-5.01,58.33,-15.231],"4.875":[-1.403,56.941,-12.923],"4.9167":[3.463,54.065,-9.589],"4.9583":[4.417,53.469,-8.672],"5.0":[5.096,53.072,-8.217],"5.0417":[5.37,52.927,-8.091],"5.0833":[5.664,52.836,-8.004],"5.125":[5.812,52.811,-7.972],"5.1667":[5.938,52.796,-7.913],"5.2083":[5.99,52.789,-7.89],"5.25":[6.056,52.774,-7.87],"5.2917":[6.092,52.762,-7.86],"5.3333":[6.135,52.745,-7.854],"5.375":[6.155,52.732,-7.854],"5.4167":[6.173,52.715,-7.86],"5.4583":[6.184,52.704,-7.867],"5.5":[6.196,52.688,-7.875],"5.5417":[6.203,52.675,-7.883],"5.5833":[6.207,52.668,-7.891],"5.625":[6.211,52.655,-7.899],"5.6667":[6.215,52.652,-7.903],"5.7083":[6.219,52.641,-7.911],"5.75":[6.222,52.635,-7.916],"5.7917":[6.223,52.599,-7.928],"5.8333":[6.212,52.472,-7.957],"5.875":[6.173,52.316,-7.947],"5.9167":[6.074,52.138,-7.94],"5.9583":[5.977,51.995,-7.946],"6.0":[5.595,51.763,-8.071],"6.0417":[5.267,51.889,-8.075],"6.0833":[4.459,52.946,-7.878],"6.125":[3.721,54.072,-7.58],"6.1667":[2.163,55.976,-7.166],"6.2083":[0.545,56.751,-7.135],"6.25":[-1.665,57.399,-7.554],"6.2917":[-2.902,57.591,-7.937],"6.3333":[-4.242,57.647,-8.111],"6.375":[-4.792,57.649,-8.136],"6.4167":[-5.327,57.651,-8.112],"6.4583":[-5.612,57.648,-8.092],"6.5":[-5.959,57.627,-8.081],"6.5417":[-6.137,57.607,-8.059],"6.5833":[-6.368,57.58,-8.033],"6.625":[-6.537,57.554,-8],"6.6667":[-6.641,57.539,-7.979],"6.7083":[-6.789,57.515,-7.954],"6.75":[-6.863,57.502,-7.948],"6.7917":[-6.96,57.486,-7.938],"6.8333":[-7.022,57.478,-7.93],"6.875":[-7.107,57.465,-7.919],"6.9167":[-7.187,57.452,-7.915],"6.9583":[-7.245,57.44,-7.914],"7.0":[-7.33,57.426,-7.911],"7.0417":[-7.371,57.417,-7.911],"7.0833":[-7.412,57.408,-7.91],"7.125":[-7.437,57.4,-7.907],"7.1667":[-7.473,57.391,-7.904],"7.2083":[-7.496,57.386,-7.904],"7.25":[-7.529,57.376,-7.907],"7.2917":[-7.544,57.373,-7.964],"7.3333":[-7.555,57.373,-8.233],"7.375":[-7.513,57.37,-8.306],"7.4167":[-7.249,57.27,-8.536],"7.4583":[-7.102,57.062,-8.735],"7.5":[-7.062,56.177,-9.502],"7.5417":[-6.904,55.921,-10.021],"7.5833":[-6.435,56.071,-10.574],"7.625":[-6.086,56.412,-10.614],"7.6667":[-5.904,56.658,-10.414],"7.7083":[-5.789,56.816,-10.199],"7.75":[-5.756,56.879,-10.092],"7.7917":[-5.751,56.918,-9.997],"7.8333":[-5.711,56.934,-9.953],"7.875":[-5.64,56.924,-10.007],"7.9167":[-5.645,56.904,-10.084],"7.9583":[-5.737,56.873,-10.167],"8.0":[-5.813,56.86,-10.151],"8.0417":[-6.058,56.873,-10.095],"8.0833":[-6.116,56.912,-10.035],"8.125":[-6.12,56.905,-9.998],"8.1667":[-6.166,56.846,-10.084],"8.2083":[-6.229,56.786,-10.198],"8.25":[-6.435,56.409,-10.979],"8.2917":[-6.698,55.574,-12.49],"8.3333":[-6.873,53.558,-15.364],"8.375":[-6.617,52.632,-16.682],"8.4167":[-6.503,54.141,-17.714],"8.4583":[-6.595,56.255,-17.092],"8.5":[-6.138,62.723,-16.776],"8.5417":[-5.082,67.29,-16.863],"8.5833":[-3.515,70.58,-16.853],"8.625":[-2.288,71.646,-16.854],"8.6667":[-1.441,71.698,-16.801],"8.7083":[0.03,70.17,-16.446],"8.75":[0.933,64.575,-16.681],"8.7917":[3.161,58.493,-17.644],"8.8333":[7.342,54.061,-16.589],"8.875":[7.794,50.762,-15.237],"8.9167":[6.373,50.178,-15.447],"8.9583":[5.045,50.873,-16.464],"9.0":[4.999,51.486,-16.811],"9.0417":[5.165,52.179,-16.757],"9.0833":[5.318,52.225,-16.628],"9.125":[5.373,52.16,-16.574],"9.1667":[5.402,52.038,-16.544],"9.2083":[5.389,51.972,-16.554],"9.25":[5.358,51.911,-16.57],"9.2917":[5.339,51.903,-16.584],"9.3333":[5.328,51.915,-16.596],"9.375":[5.324,51.919,-16.602],"9.4167":[5.321,51.927,-16.607],"9.4583":[5.321,51.93,-16.607],"9.5":[5.326,51.933,-16.607],"9.5417":[5.326,51.937,-16.604],"9.5833":[5.329,51.937,-16.604],"9.625":[5.332,51.937,-16.604]}},"camera":{"rotation":{"0.0":[0.039,0.013,0.007],"0.0417":[0.346,0.112,0.053],"0.0833":[1.112,0.367,0.181],"0.125":[1.685,0.562,0.285],"0.1667":[2.361,0.799,0.436],"0.2083":[2.526,0.881,0.542],"0.25":[2.434,0.888,0.592],"0.2917":[1.778,0.854,0.645],"0.3333":[0.19,0.814,0.666],"0.375":[-3.142,0.621,0.682],"0.4167":[-5.328,0.45,0.682],"0.4583":[-6.607,0.201,0.67],"0.5":[-6.976,0.034,0.655],"0.5417":[-6.914,-0.215,0.623],"0.5833":[-6.436,-0.377,0.597],"0.625":[-5.002,-0.597,0.552],"0.6667":[-3.839,-0.679,0.52],"0.7083":[-1.828,-0.739,0.47],"0.75":[-0.394,-0.771,0.436],"0.7917":[1.625,-0.81,0.386],"0.8333":[2.709,-0.835,0.355],"0.875":[3.423,-0.856,0.313],"0.9167":[3.45,-0.871,0.274],"0.9583":[3.173,-0.881,0.228],"1.0":[2.434,-0.896,0.133],"1.0417":[1.944,-0.904,0.055],"1.0833":[1.275,-0.913,-0.068],"1.125":[0.883,-0.919,-0.15],"1.1667":[0.366,-0.931,-0.262],"1.2083":[-0.042,-0.949,-0.35],"1.25":[-0.246,-0.966,-0.39],"1.2917":[-0.45,-1.005,-0.42],"1.3333":[-0.567,-1.043,-0.438],"1.375":[-0.727,-1.126,-0.463],"1.4167":[-0.827,-1.195,-0.478],"1.4583":[-0.964,-1.332,-0.497],"1.5":[-1.047,-1.446,-0.509],"1.5417":[-1.156,-1.628,-0.524],"1.5833":[-1.228,-1.757,-0.533],"1.625":[-1.321,-1.97,-0.543],"1.6667":[-1.376,-2.097,-0.547],"1.7083":[-1.454,-2.267,-0.552],"1.75":[-1.506,-2.364,-0.553],"1.7917":[-1.564,-2.469,-0.553],"1.8333":[-1.604,-2.517,-0.551],"1.875":[-1.656,-2.558,-0.545],"1.9167":[-1.702,-2.566,-0.537],"1.9583":[-1.726,-2.542,-0.53],"2.0":[-1.759,-2.473,-0.516],"2.0417":[-1.778,-2.403,-0.507],"2.0833":[-1.798,-2.264,-0.488],"2.125":[-1.807,-2.157,-0.466],"2.1667":[-1.819,-1.96,-0.414],"2.2083":[-1.826,-1.808,-0.368],"2.25":[-1.833,-1.566,-0.289],"2.2917":[-1.837,-1.4,-0.232],"2.3333":[-1.84,-1.128,-0.156],"2.375":[-1.842,-0.844,-0.097],"2.4167":[-1.843,-0.655,-0.068],"2.4583":[-1.844,-0.372,-0.03],"2.5":[-1.843,-0.176,-0.004],"2.5417":[-1.842,0.122,0.03],"2.5833":[-1.842,0.308,0.05],"2.625":[-1.84,0.607,0.081],"2.6667":[-1.838,0.793,0.098],"2.7083":[-1.835,1.066,0.123],"2.75":[-1.832,1.253,0.139],"2.7917":[-1.828,1.52,0.162],"2.8333":[-1.826,1.691,0.176],"2.875":[-1.821,1.956,0.197],"2.9167":[-1.815,2.193,0.214],"2.9583":[-1.808,2.335,0.225],"3.0":[-1.795,2.497,0.238],"3.0417":[-1.784,2.572,0.247],"3.0833":[-1.77,2.691,0.258],"3.125":[-1.762,2.778,0.264],"3.1667":[-1.753,2.896,0.272],"3.2083":[-1.748,2.974,0.277],"3.25":[-1.74,3.081,0.281],"3.2917":[-1.734,3.13,0.284],"3.3333":[-1.724,3.194,0.288],"3.375":[-1.708,3.237,0.29],"3.4167":[-1.692,3.259,0.291],"3.4583":[-1.66,3.276,0.292],"3.5":[-1.644,3.284,0.292],"3.5417":[-1.596,3.289,0.293],"3.5833":[-1.564,3.289,0.293],"3.625":[-1.493,3.279,0.292],"3.6667":[-1.428,3.263,0.291],"3.7083":[-1.292,3.22,0.287],"3.75":[-1.181,3.182,0.283],"3.7917":[-1.006,3.111,0.276],"3.8333":[-0.875,3.057,0.27],"3.875":[-0.697,2.973,0.261],"3.9167":[-0.528,2.864,0.25],"3.9583":[-0.41,2.728,0.235],"4.0":[-0.225,2.492,0.21],"4.0417":[-0.098,2.311,0.192],"4.0833":[0.128,2.048,0.118],"4.125":[0.296,1.886,0.042],"4.1667":[0.55,1.72,-0.085],"4.2083":[0.764,1.656,-0.147],"4.25":[1.025,1.702,-0.088],"4.2917":[1.131,1.812,0.036],"4.3333":[0.978,1.996,0.204],"4.375":[0.647,2.121,0.267],"4.4167":[0.024,2.232,0.115],"4.4583":[-0.351,2.096,-0.031],"4.5":[-0.513,1.716,-0.104],"4.5417":[-0.105,1.274,0.041],"4.5833":[0.184,1.138,0.144],"4.625":[0.448,1.372,0.237],"4.6667":[0.345,1.617,0.212],"4.7083":[0.011,1.879,0.119],"4.75":[-0.259,1.818,0.018],"4.7917":[-0.641,1.626,-0.148],"4.8333":[-0.794,1.497,-0.249],"4.875":[-0.977,1.289,-0.414],"4.9167":[-1.111,1.091,-0.551],"4.9583":[-1.183,0.989,-0.606],"5.0":[-1.269,0.895,-0.626],"5.0417":[-1.319,0.844,-0.633],"5.0833":[-1.384,0.771,-0.647],"5.125":[-1.42,0.735,-0.655],"5.1667":[-1.47,0.691,-0.664],"5.2083":[-1.499,0.662,-0.67],"5.25":[-1.536,0.626,-0.678],"5.2917":[-1.564,0.607,-0.682],"5.3333":[-1.602,0.577,-0.687],"5.375":[-1.62,0.565,-0.689],"5.4167":[-1.657,0.547,-0.69],"5.4583":[-1.679,0.537,-0.689],"5.5":[-1.705,0.529,-0.685],"5.5417":[-1.732,0.524,-0.678],"5.5833":[-1.752,0.521,-0.674],"5.625":[-1.772,0.516,-0.664],"5.6667":[-1.785,0.511,-0.656],"5.7083":[-1.792,0.504,-0.643],"5.75":[-1.802,0.494,-0.633],"5.7917":[-1.802,0.475,-0.616],"5.8333":[-1.729,0.459,-0.604],"5.875":[-1.395,0.431,-0.58],"5.9167":[-0.905,0.392,-0.549],"5.9583":[-0.561,0.358,-0.525],"6.0":[-0.114,0.292,-0.484],"6.0417":[0.096,0.238,-0.454],"6.0833":[0.246,0.086,-0.407],"6.125":[0.219,-0.03,-0.37],"6.1667":[0.103,-0.213,-0.315],"6.2083":[0.015,-0.335,-0.274],"6.25":[-0.12,-0.533,-0.213],"6.2917":[-0.202,-0.661,-0.172],"6.3333":[-0.296,-0.853,-0.108],"6.375":[-0.339,-0.981,-0.066],"6.4167":[-0.402,-1.172,-0.002],"6.4583":[-0.438,-1.308,0.039],"6.5":[-0.485,-1.505,0.098],"6.5417":[-0.512,-1.637,0.136],"6.5833":[-0.546,-1.817,0.19],"6.625":[-0.569,-1.983,0.24],"6.6667":[-0.58,-2.08,0.269],"6.7083":[-0.591,-2.226,0.304],"6.75":[-0.598,-2.323,0.323],"6.7917":[-0.607,-2.475,0.346],"6.8333":[-0.612,-2.582,0.359],"6.875":[-0.619,-2.733,0.376],"6.9167":[-0.624,-2.885,0.39],"6.9583":[-0.627,-2.979,0.398],"7.0":[-0.631,-3.112,0.409],"7.0417":[-0.633,-3.193,0.414],"7.0833":[-0.636,-3.305,0.422],"7.125":[-0.636,-3.365,0.425],"7.1667":[-0.639,-3.442,0.429],"7.2083":[-0.639,-3.484,0.431],"7.25":[-0.639,-3.519,0.43],"7.2917":[-0.639,-3.525,0.429],"7.3333":[-0.523,-3.334,0.429],"7.375":[-0.358,-3.048,0.428],"7.4167":[-0.068,-2.492,0.428],"7.4583":[0.097,-2.093,0.428],"7.5":[0.215,-1.589,0.428],"7.5417":[0.213,-1.337,0.364],"7.5833":[0.174,-1.035,0.164],"7.625":[-0.033,-0.875,-0.075],"7.6667":[-0.201,-0.807,-0.268],"7.7083":[-0.434,-0.761,-0.453],"7.75":[-0.48,-0.76,-0.356],"7.7917":[-0.501,-0.759,-0.157],"7.8333":[-0.465,-0.713,-0.262],"7.875":[-0.318,-0.394,-0.612],"7.9167":[-0.304,-0.259,-0.48],"7.9583":[-0.32,-0.254,-0.214],"8.0":[-0.387,-0.319,-0.108],"8.0417":[-0.542,-0.605,-0.07],"8.0833":[-0.623,-0.533,-0.607],"8.125":[-0.632,-0.346,-0.683],"8.1667":[-0.593,-0.325,-0.528],"8.2083":[-0.539,-0.539,-0.26],"8.25":[-0.266,-0.662,-0.056],"8.2917":[0.007,-0.702,0.036],"8.3333":[0.375,-0.735,0.12],"8.375":[0.464,-0.752,0.139],"8.4167":[-0.33,-0.76,-0.171],"8.4583":[-1.235,-0.76,-0.356],"8.5":[-2.897,-0.759,-0.379],"8.5417":[-3.823,-0.758,-0.37],"8.5833":[-4.541,-0.758,-0.327],"8.625":[-4.38,-0.759,-0.257],"8.6667":[-3.824,-0.758,-0.2],"8.7083":[-2.752,-0.695,-0.11],"8.75":[-1.973,-0.599,-0.053],"8.7917":[-0.679,-0.413,0.021],"8.8333":[0.161,-0.284,0.056],"8.875":[0.783,-0.125,0.077],"8.9167":[0.915,-0.07,0.048],"8.9583":[0.879,-0.032,-0.019],"9.0":[0.519,-0.003,-0.058],"9.0417":[0,0.016,-0.109],"9.0833":[-0.105,0.006,-0.151],"9.125":[-0.112,-0.002,-0.162],"9.1667":[-0.084,-0.007,-0.142],"9.2083":[-0.043,-0.007,-0.122],"9.25":[-0.001,-0.007,-0.091],"9.2917":[0.026,-0.002,-0.071],"9.3333":[0.026,-0.002,-0.041],"9.375":[0.012,-0.002,-0.02],"9.4167":[0.007,0.002,0.007],"9.4583":[-0.001,0.002,0.014],"9.5":[-0.01,0.002,0.014],"9.5417":[-0.01,0.002,0.012],"9.5833":[-0.001,0.002,0.003],"9.625":[-0.001,0.002,0.001]}},"devil":{"scale":0},"angel":{"position":[2,0,0]}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_inspect_2"}}},"static_idle":{"loop":true,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":[-13.502,172.029,-60.78],"position":[4.562,39.525,-9.527]},"righthand":{"rotation":[139.329,-36.439,-94.225],"position":[-2.903,39.457,-14.708]},"annihil":{"rotation":[-14.87,42.277,90.016],"position":[5.33,51.939,-16.603]},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"devil":{"scale":1},"angel":{"scale":0}}},"static_idle_angel":{"loop":true,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":[-13.502,172.029,-60.78],"position":[4.562,39.525,-9.527]},"righthand":{"rotation":[139.329,-36.439,-94.225],"position":[-2.903,39.457,-14.708]},"annihil":{"rotation":[-14.87,42.277,90.016],"position":[5.33,51.939,-16.603]},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"devil":{"scale":0},"angel":{"position":[2,0,0],"scale":1}}},"melee_1":{"loop":true,"animation_length":1.9333,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-9.191,166.694,-63.93],"0.0417":[-25.793,165.47,-70.8],"0.0833":[-41.886,151.064,-48.368],"0.125":[-25.533,157.131,-25.229],"0.1667":[-28.142,175.893,-19.286],"0.2083":[-27.24,173.995,-21.349],"0.25":[-25.358,172.379,-22.943],"0.2917":[-24.024,171.152,-23.844],"0.3333":[-21.579,169.748,-24.448],"0.375":[-26.725,166.937,-27.304],"0.4167":[-45.939,160.744,-34.792],"0.4583":[-45.934,160.743,-34.791],"0.5":[-45.93,160.743,-34.789],"0.5417":[-45.929,160.743,-34.788],"0.5833":[-45.93,160.744,-34.788],"0.625":[-45.936,160.745,-34.79],"0.6667":[-46.084,160.655,-35.115],"0.7083":[-46.802,160.175,-36.906],"0.75":[-48.652,158.787,-42.487],"0.7917":[-49.868,157.564,-47.534],"0.8333":[-50.853,155.203,-55.97],"0.875":[-50.689,153.166,-61.345],"0.9167":[-47.187,147.445,-67.76],"0.9583":[-37.281,137.288,-66.698],"1.0":[-19.359,135.148,-52.688],"1.0417":[-9.491,139.649,-43.727],"1.0833":[-5.814,144.69,-42.267],"1.125":[-6.411,152.974,-50.644],"1.1667":[-8.795,163.936,-63.903],"1.2083":[-10.002,168.318,-67.208],"1.25":[-10.923,171.576,-64.839],"1.2917":[-11.294,172.548,-62.131],"1.3333":[-11.754,173.754,-58.781],"1.375":[-12.224,173.827,-58.131],"1.4167":[-12.904,173.496,-58.141],"1.4583":[-12.954,173.374,-58.201],"1.5":[-12.845,172.827,-58.901],"1.5417":[-12.865,172.693,-59.735],"1.5833":[-12.994,172.463,-60.809],"1.625":[-13.131,172.144,-61.182],"1.6667":[-13.262,171.744,-61.346],"1.7083":[-13.28,171.629,-61.284],"1.75":[-13.381,171.722,-61.105],"1.7917":[-13.452,171.91,-60.961],"1.8333":[-13.459,172.01,-60.846],"1.875":[-13.47,172.032,-60.805],"1.9167":[-13.502,172.03,-60.779]},"position":{"0.0":[4.777,40.635,-12.069],"0.0417":[7.38,40.656,-16.348],"0.0833":[13.636,38.567,-14.993],"0.125":[16.394,35.888,-7.681],"0.1667":[16.485,32.783,-2.359],"0.2083":[16.565,32.454,-1.919],"0.25":[16.532,32.301,-1.649],"0.2917":[16.508,32.23,-1.516],"0.3333":[16.41,32.196,-1.41],"0.375":[16.932,32.253,-1.709],"0.4167":[18.609,32.506,-2.657],"0.4583":[18.61,32.508,-2.658],"0.5":[18.61,32.509,-2.66],"0.5417":[18.61,32.51,-2.66],"0.5833":[18.61,32.509,-2.66],"0.625":[18.61,32.508,-2.658],"0.6667":[18.589,32.529,-2.701],"0.7083":[18.473,32.669,-2.958],"0.75":[18.103,33.115,-3.735],"0.7917":[17.753,33.532,-4.414],"0.8333":[17.115,34.278,-5.524],"0.875":[16.642,34.813,-6.232],"0.9167":[15.771,35.823,-7.129],"0.9583":[14.541,37.188,-7.651],"1.0":[11.991,38.673,-8.136],"1.0417":[10.039,39.444,-8.343],"1.0833":[6.875,40.078,-8.814],"1.125":[4.856,40.025,-9.25],"1.1667":[3.886,39.596,-9.272],"1.2083":[4.064,39.325,-9.199],"1.25":[4.658,39.25,-9.261],"1.2917":[4.9,39.318,-9.342],"1.3333":[4.989,39.502,-9.453],"1.375":[4.974,39.6,-9.503],"1.4167":[4.861,39.686,-9.545],"1.4583":[4.784,39.691,-9.565],"1.5":[4.675,39.659,-9.574],"1.5417":[4.612,39.617,-9.569],"1.5833":[4.559,39.558,-9.554],"1.625":[4.55,39.536,-9.54],"1.6667":[4.549,39.514,-9.523],"1.7083":[4.554,39.508,-9.517],"1.75":[4.561,39.51,-9.516],"1.7917":[4.565,39.514,-9.518],"1.8333":[4.567,39.519,-9.522],"1.875":[4.566,39.522,-9.524],"1.9167":[4.562,39.525,-9.526]}},"righthand":{"rotation":{"0.0":[139.568,-11.863,-114.908],"0.0417":[125.62,1.502,-139.807],"0.0833":[128.394,-6.046,-127.892],"0.125":[125.911,-11.045,-118.079],"0.1667":[126.373,-19.04,-102.484],"0.2083":[178.031,-13.702,-108.377],"0.25":[254.825,-8.508,-87.996],"0.2917":[271.232,-9.207,-84.768],"0.3333":[258.848,-0.879,-81.54],"0.375":[235.551,-0.342,-73.482],"0.4167":[186.969,16.548,-60.67],"0.4583":[175.894,25.865,-60.02],"0.5":[161.696,38.742,-63.462],"0.5417":[151.671,45.738,-67.155],"0.5833":[129.441,49.05,-77.493],"0.625":[109.441,35.019,-79.626],"0.6667":[100.476,14.138,-59.762],"0.7083":[110.597,8.171,-40.474],"0.75":[109.731,-4.032,-9.681],"0.7917":[107.098,-10.412,-4.781],"0.8333":[126.311,-9.659,-44.484],"0.875":[122.679,-4.011,-68.354],"0.9167":[111.231,13.712,-118.733],"0.9583":[103.506,14.245,-153.185],"1.0":[112.307,19.162,-173.986],"1.0417":[117.244,17.203,-172.137],"1.0833":[124.006,11.974,-144.814],"1.125":[130.799,3.515,-127.382],"1.1667":[140.397,-7.843,-109.731],"1.2083":[140.358,-14.165,-102.91],"1.25":[135.629,-26.042,-98.598],"1.2917":[134.892,-32.251,-97.094],"1.3333":[137.361,-38.049,-96.502],"1.375":[139.104,-38.791,-96.578],"1.4167":[140.283,-37.796,-96.092],"1.4583":[140.522,-37.06,-95.709],"1.5":[140.227,-36.31,-94.884],"1.5417":[139.991,-35.885,-94.472],"1.5833":[139.677,-35.605,-94.217],"1.625":[139.583,-35.634,-94.263],"1.6667":[139.427,-35.705,-94.233],"1.7083":[139.309,-35.748,-94.16],"1.75":[139.225,-35.821,-94.087],"1.7917":[139.209,-35.873,-94.058],"1.8333":[139.214,-35.956,-94.056],"1.875":[139.221,-36.018,-94.064],"1.9167":[139.242,-36.128,-94.081]},"position":{"0.0":[-5.552,36.198,-11.534],"0.0417":[-13.992,35.723,-7.561],"0.0833":[-21.888,38.539,-8.068],"0.125":[-21.491,39.992,-10.379],"0.1667":[-15.082,41.77,-13.833],"0.2083":[-1.569,41.974,-14.326],"0.25":[8.486,40.846,-3.204],"0.2917":[8.875,40.03,-2.706],"0.3333":[9.117,36.794,-1.172],"0.375":[6.357,32.587,-2.716],"0.4167":[-5.017,29.199,-7.358],"0.4583":[-8.372,28.316,-8.263],"0.5":[-12.522,27.411,-9.156],"0.5417":[-14.884,26.99,-9.514],"0.5833":[-17.863,27.317,-10.553],"0.625":[-18.111,30.104,-11.91],"0.6667":[-16.154,34.865,-14.241],"0.7083":[-14.476,36.354,-15.628],"0.75":[-11.992,38.332,-16.655],"0.7917":[-10.858,39.653,-16.989],"0.8333":[-10.865,41.107,-17.364],"0.875":[-11.361,41.638,-17.358],"0.9167":[-12.26,42.348,-17.283],"0.9583":[-12.83,43.004,-17.221],"1.0":[-11.475,44.194,-17.029],"1.0417":[-8.809,43.902,-16.637],"1.0833":[-3.311,41.959,-15.337],"1.125":[-0.834,40.418,-14.398],"1.1667":[-1.315,38.467,-13.412],"1.2083":[-2.387,38.105,-13.553],"1.25":[-3.07,38.444,-14.425],"1.2917":[-3.115,38.894,-14.735],"1.3333":[-3.014,39.44,-14.801],"1.375":[-2.933,39.58,-14.772],"1.4167":[-2.87,39.579,-14.717],"1.4583":[-2.853,39.53,-14.694],"1.5":[-2.865,39.475,-14.69],"1.5417":[-2.882,39.452,-14.693],"1.5833":[-2.905,39.44,-14.702],"1.625":[-2.911,39.442,-14.707],"1.6667":[-2.914,39.448,-14.711],"1.7083":[-2.914,39.452,-14.712],"1.75":[-2.911,39.457,-14.711],"1.7917":[-2.909,39.459,-14.711],"1.8333":[-2.905,39.459,-14.709],"1.875":[-2.904,39.458,-14.709],"1.9167":[-2.903,39.457,-14.708]}},"annihil":{"rotation":{"0.0":[-25.503,27.671,60.044],"0.0417":[-20.783,-1.64,45.045],"0.0833":[-20.733,11.233,56.392],"0.125":[-17.922,16.821,66.553],"0.1667":[-17.319,21.732,84.3],"0.2083":[-65.666,15.569,84.03],"0.25":[-148.392,10.379,84.676],"0.2917":[-165.186,14.077,88.585],"0.3333":[-151.715,-16.676,78.54],"0.375":[-120.742,-21.993,64.78],"0.4167":[-77.405,5.948,53.074],"0.4583":[-68.238,17.889,43.586],"0.5":[-63.802,38.325,29.354],"0.5417":[-71.156,53.173,15.319],"0.5833":[-127.086,64.954,-40.615],"0.625":[-171.734,39.803,-70.705],"0.6667":[-184.15,0.612,-53.538],"0.7083":[-173.055,-5.296,-35.264],"0.75":[-161.978,-13.912,-2.511],"0.7917":[-157.576,-22.969,15.981],"0.8333":[-160.629,-51.794,52.04],"0.875":[-123.004,-81.86,38.577],"0.9167":[-178.109,-124.989,126.043],"0.9583":[-175.289,-140.301,144.699],"1.0":[-176.55,-156.27,172.781],"1.0417":[-180.791,-158.115,187.311],"1.0833":[-185.867,-167.017,218.699],"1.125":[-189.761,-180.92,236.217],"1.1667":[-197.454,-195.55,253.211],"1.2083":[-197.302,-201.241,259.832],"1.25":[-191.959,-212.272,265.175],"1.2917":[-190.646,-218.421,267.082],"1.3333":[-192.764,-224.351,267.703],"1.375":[-194.607,-225.192,267.403],"1.4167":[-196.004,-224.259,267.64],"1.4583":[-196.332,-223.54,267.938],"1.5":[-196.076,-222.776,268.762],"1.5417":[-195.852,-222.334,269.187],"1.5833":[-195.533,-222.041,269.471],"1.625":[-195.429,-222.067,269.443],"1.6667":[-195.248,-222.129,269.504],"1.7083":[-195.12,-222.165,269.594],"1.75":[-195.021,-222.23,269.684],"1.7917":[-194.997,-222.287,269.72],"1.8333":[-194.998,-222.366,269.723],"1.875":[-194.998,-222.43,269.719],"1.9167":[-195.013,-222.537,269.705]},"position":{"0.0":[1.401,50.137,-13.634],"0.0417":[-5.97,48.313,-9.678],"0.0833":[-14.025,51.199,-10.358],"0.125":[-13.761,52.437,-12.817],"0.1667":[-7.139,54.066,-16.437],"0.2083":[6.694,53.793,-13.572],"0.25":[14.8,51.504,-0.584],"0.2917":[14.184,50.436,-0.112],"0.3333":[15.745,47.148,1.17],"0.375":[13.311,43.558,-0.976],"0.4167":[2.049,38.82,-8.245],"0.4583":[-2.089,37.826,-9.639],"0.5":[-7.463,36.762,-10.574],"0.5417":[-10.502,36.511,-10.853],"0.5833":[-14.372,37.18,-11.407],"0.625":[-15.162,40.774,-12.693],"0.6667":[-8.951,44.776,-16.791],"0.7083":[-7.813,46.034,-17.822],"0.75":[-6.631,48.504,-19.345],"0.7917":[-6.137,50.475,-20.002],"0.8333":[-5.807,53.671,-20.573],"0.875":[-5.34,55.528,-20.401],"0.9167":[-4.365,57.27,-20.212],"0.9583":[-3.671,57.943,-20.007],"1.0":[-2.873,58.236,-19.534],"1.0417":[-1.069,57.661,-18.879],"1.0833":[4.827,54.964,-17.268],"1.125":[7.45,52.964,-16.322],"1.1667":[7.039,50.696,-15.194],"1.2083":[5.936,50.234,-15.357],"1.25":[5.072,50.892,-16.436],"1.2917":[4.989,51.481,-16.765],"1.3333":[5.146,52.131,-16.735],"1.375":[5.272,52.255,-16.649],"1.4167":[5.373,52.185,-16.562],"1.4583":[5.399,52.096,-16.534],"1.5":[5.388,51.995,-16.541],"1.5417":[5.367,51.947,-16.553],"1.5833":[5.338,51.927,-16.571],"1.625":[5.331,51.931,-16.581],"1.6667":[5.323,51.941,-16.589],"1.7083":[5.321,51.947,-16.594],"1.75":[5.321,51.953,-16.596],"1.7917":[5.323,51.955,-16.596],"1.8333":[5.327,51.957,-16.593],"1.875":[5.329,51.959,-16.593],"1.9167":[5.329,51.961,-16.592]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.2083":[-32.5,0,0],"0.2917":[-86.25,0,0],"0.4583":[-86.25,0,0],"0.5833":[0,0,0],"0.75":[-10,0,0],"0.8333":[-22.5,0,0],"1.0":[-5,0,0],"1.2083":[0,0,0]},"position":[0,2.5,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.098,0.062,-0.117],"0.0417":[0.436,0.312,-0.516],"0.0833":[0.681,0.525,-0.304],"0.125":[0.703,0.555,0.307],"0.1667":[0.11,0.505,0.584],"0.2083":[-0.356,0.326,-0.208],"0.25":[-0.496,-0.519,-0.295],"0.2917":[-0.464,-0.641,-0.109],"0.3333":[-0.199,-0.607,-0.393],"0.375":[-0.09,-0.543,0.046],"0.4167":[0.007,-0.44,0.19],"0.4583":[0.039,-0.379,0.209],"0.5":[0.071,-0.332,0.202],"0.5417":[0.09,-0.29,0.184],"0.5833":[0.145,-0.199,0.137],"0.625":[0.173,-0.126,0.1],"0.6667":[0.145,-0.013,0.035],"0.7083":[0.075,0.06,-0.013],"0.75":[-0.101,0.148,-0.078],"0.7917":[-0.199,0.205,-0.121],"0.8333":[-0.265,0.255,-0.182],"0.875":[-0.273,0.275,-0.221],"0.9167":[-0.284,0.288,-0.279],"0.9583":[-0.284,0.294,-0.314],"1.0":[-0.285,0.288,-0.361],"1.0417":[-0.255,0.222,-0.388],"1.0833":[-0.116,-0.021,-0.41],"1.125":[-0.006,-0.18,-0.418],"1.1667":[0.122,-0.228,-0.401],"1.2083":[0.138,-0.138,-0.281],"1.25":[0.074,0.064,-0.025],"1.2917":[-0.002,0.175,0.095],"1.3333":[-0.074,0.168,0.103],"1.375":[-0.109,0.119,0.078],"1.4167":[-0.121,0.026,0.019],"1.4583":[-0.098,-0.012,-0.019],"1.5":[-0.057,-0.018,-0.052],"1.5417":[-0.03,-0.012,-0.052],"1.5833":[0.006,-0.004,-0.035],"1.625":[0.011,-0.001,-0.019],"1.6667":[0.008,0.004,0.009],"1.7083":[0.005,0.006,0.017],"1.75":[0,0.004,0.017],"1.7917":[-0.003,0.004,0.017],"1.8333":[0,0.001,0.009],"1.875":[0,0.001,0.004],"1.9167":[0,0.001,0]}},"angel":{"scale":0}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_melee_1"},"0.75":{"effect":"melee.annihil.annihil_rotate_1"}}},"melee_1_angel":{"loop":true,"animation_length":1.9333,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-9.191,166.694,-63.93],"0.0417":[-25.793,165.47,-70.8],"0.0833":[-41.886,151.064,-48.368],"0.125":[-25.533,157.131,-25.229],"0.1667":[-28.142,175.893,-19.286],"0.2083":[-27.24,173.995,-21.349],"0.25":[-25.358,172.379,-22.943],"0.2917":[-24.024,171.152,-23.844],"0.3333":[-21.579,169.748,-24.448],"0.375":[-26.725,166.937,-27.304],"0.4167":[-45.939,160.744,-34.792],"0.4583":[-45.934,160.743,-34.791],"0.5":[-45.93,160.743,-34.789],"0.5417":[-45.929,160.743,-34.788],"0.5833":[-45.93,160.744,-34.788],"0.625":[-45.936,160.745,-34.79],"0.6667":[-46.084,160.655,-35.115],"0.7083":[-46.802,160.175,-36.906],"0.75":[-48.652,158.787,-42.487],"0.7917":[-49.868,157.564,-47.534],"0.8333":[-50.853,155.203,-55.97],"0.875":[-50.689,153.166,-61.345],"0.9167":[-47.187,147.445,-67.76],"0.9583":[-37.281,137.288,-66.698],"1.0":[-19.359,135.148,-52.688],"1.0417":[-9.491,139.649,-43.727],"1.0833":[-5.814,144.69,-42.267],"1.125":[-6.411,152.974,-50.644],"1.1667":[-8.795,163.936,-63.903],"1.2083":[-10.002,168.318,-67.208],"1.25":[-10.923,171.576,-64.839],"1.2917":[-11.294,172.548,-62.131],"1.3333":[-11.754,173.754,-58.781],"1.375":[-12.224,173.827,-58.131],"1.4167":[-12.904,173.496,-58.141],"1.4583":[-12.954,173.374,-58.201],"1.5":[-12.845,172.827,-58.901],"1.5417":[-12.865,172.693,-59.735],"1.5833":[-12.994,172.463,-60.809],"1.625":[-13.131,172.144,-61.182],"1.6667":[-13.262,171.744,-61.346],"1.7083":[-13.28,171.629,-61.284],"1.75":[-13.381,171.722,-61.105],"1.7917":[-13.452,171.91,-60.961],"1.8333":[-13.459,172.01,-60.846],"1.875":[-13.47,172.032,-60.805],"1.9167":[-13.502,172.03,-60.779]},"position":{"0.0":[4.777,40.635,-12.069],"0.0417":[7.38,40.656,-16.348],"0.0833":[13.636,38.567,-14.993],"0.125":[16.394,35.888,-7.681],"0.1667":[16.485,32.783,-2.359],"0.2083":[16.565,32.454,-1.919],"0.25":[16.532,32.301,-1.649],"0.2917":[16.508,32.23,-1.516],"0.3333":[16.41,32.196,-1.41],"0.375":[16.932,32.253,-1.709],"0.4167":[18.609,32.506,-2.657],"0.4583":[18.61,32.508,-2.658],"0.5":[18.61,32.509,-2.66],"0.5417":[18.61,32.51,-2.66],"0.5833":[18.61,32.509,-2.66],"0.625":[18.61,32.508,-2.658],"0.6667":[18.589,32.529,-2.701],"0.7083":[18.473,32.669,-2.958],"0.75":[18.103,33.115,-3.735],"0.7917":[17.753,33.532,-4.414],"0.8333":[17.115,34.278,-5.524],"0.875":[16.642,34.813,-6.232],"0.9167":[15.771,35.823,-7.129],"0.9583":[14.541,37.188,-7.651],"1.0":[11.991,38.673,-8.136],"1.0417":[10.039,39.444,-8.343],"1.0833":[6.875,40.078,-8.814],"1.125":[4.856,40.025,-9.25],"1.1667":[3.886,39.596,-9.272],"1.2083":[4.064,39.325,-9.199],"1.25":[4.658,39.25,-9.261],"1.2917":[4.9,39.318,-9.342],"1.3333":[4.989,39.502,-9.453],"1.375":[4.974,39.6,-9.503],"1.4167":[4.861,39.686,-9.545],"1.4583":[4.784,39.691,-9.565],"1.5":[4.675,39.659,-9.574],"1.5417":[4.612,39.617,-9.569],"1.5833":[4.559,39.558,-9.554],"1.625":[4.55,39.536,-9.54],"1.6667":[4.549,39.514,-9.523],"1.7083":[4.554,39.508,-9.517],"1.75":[4.561,39.51,-9.516],"1.7917":[4.565,39.514,-9.518],"1.8333":[4.567,39.519,-9.522],"1.875":[4.566,39.522,-9.524],"1.9167":[4.562,39.525,-9.526]}},"righthand":{"rotation":{"0.0":[139.568,-11.863,-114.908],"0.0417":[125.62,1.502,-139.807],"0.0833":[128.394,-6.046,-127.892],"0.125":[125.911,-11.045,-118.079],"0.1667":[126.373,-19.04,-102.484],"0.2083":[178.031,-13.702,-108.377],"0.25":[254.825,-8.508,-87.996],"0.2917":[271.232,-9.207,-84.768],"0.3333":[258.848,-0.879,-81.54],"0.375":[235.551,-0.342,-73.482],"0.4167":[186.969,16.548,-60.67],"0.4583":[175.894,25.865,-60.02],"0.5":[161.696,38.742,-63.462],"0.5417":[151.671,45.738,-67.155],"0.5833":[129.441,49.05,-77.493],"0.625":[109.441,35.019,-79.626],"0.6667":[100.476,14.138,-59.762],"0.7083":[110.597,8.171,-40.474],"0.75":[109.731,-4.032,-9.681],"0.7917":[107.098,-10.412,-4.781],"0.8333":[126.311,-9.659,-44.484],"0.875":[122.679,-4.011,-68.354],"0.9167":[111.231,13.712,-118.733],"0.9583":[103.506,14.245,-153.185],"1.0":[112.307,19.162,-173.986],"1.0417":[117.244,17.203,-172.137],"1.0833":[124.006,11.974,-144.814],"1.125":[130.799,3.515,-127.382],"1.1667":[140.397,-7.843,-109.731],"1.2083":[140.358,-14.165,-102.91],"1.25":[135.629,-26.042,-98.598],"1.2917":[134.892,-32.251,-97.094],"1.3333":[137.361,-38.049,-96.502],"1.375":[139.104,-38.791,-96.578],"1.4167":[140.283,-37.796,-96.092],"1.4583":[140.522,-37.06,-95.709],"1.5":[140.227,-36.31,-94.884],"1.5417":[139.991,-35.885,-94.472],"1.5833":[139.677,-35.605,-94.217],"1.625":[139.583,-35.634,-94.263],"1.6667":[139.427,-35.705,-94.233],"1.7083":[139.309,-35.748,-94.16],"1.75":[139.225,-35.821,-94.087],"1.7917":[139.209,-35.873,-94.058],"1.8333":[139.214,-35.956,-94.056],"1.875":[139.221,-36.018,-94.064],"1.9167":[139.242,-36.128,-94.081]},"position":{"0.0":[-5.552,36.198,-11.534],"0.0417":[-13.992,35.723,-7.561],"0.0833":[-21.888,38.539,-8.068],"0.125":[-21.491,39.992,-10.379],"0.1667":[-15.082,41.77,-13.833],"0.2083":[-1.569,41.974,-14.326],"0.25":[8.486,40.846,-3.204],"0.2917":[8.875,40.03,-2.706],"0.3333":[9.117,36.794,-1.172],"0.375":[6.357,32.587,-2.716],"0.4167":[-5.017,29.199,-7.358],"0.4583":[-8.372,28.316,-8.263],"0.5":[-12.522,27.411,-9.156],"0.5417":[-14.884,26.99,-9.514],"0.5833":[-17.863,27.317,-10.553],"0.625":[-18.111,30.104,-11.91],"0.6667":[-16.154,34.865,-14.241],"0.7083":[-14.476,36.354,-15.628],"0.75":[-11.992,38.332,-16.655],"0.7917":[-10.858,39.653,-16.989],"0.8333":[-10.865,41.107,-17.364],"0.875":[-11.361,41.638,-17.358],"0.9167":[-12.26,42.348,-17.283],"0.9583":[-12.83,43.004,-17.221],"1.0":[-11.475,44.194,-17.029],"1.0417":[-8.809,43.902,-16.637],"1.0833":[-3.311,41.959,-15.337],"1.125":[-0.834,40.418,-14.398],"1.1667":[-1.315,38.467,-13.412],"1.2083":[-2.387,38.105,-13.553],"1.25":[-3.07,38.444,-14.425],"1.2917":[-3.115,38.894,-14.735],"1.3333":[-3.014,39.44,-14.801],"1.375":[-2.933,39.58,-14.772],"1.4167":[-2.87,39.579,-14.717],"1.4583":[-2.853,39.53,-14.694],"1.5":[-2.865,39.475,-14.69],"1.5417":[-2.882,39.452,-14.693],"1.5833":[-2.905,39.44,-14.702],"1.625":[-2.911,39.442,-14.707],"1.6667":[-2.914,39.448,-14.711],"1.7083":[-2.914,39.452,-14.712],"1.75":[-2.911,39.457,-14.711],"1.7917":[-2.909,39.459,-14.711],"1.8333":[-2.905,39.459,-14.709],"1.875":[-2.904,39.458,-14.709],"1.9167":[-2.903,39.457,-14.708]}},"annihil":{"rotation":{"0.0":[-25.503,27.671,60.044],"0.0417":[-20.783,-1.64,45.045],"0.0833":[-20.733,11.233,56.392],"0.125":[-17.922,16.821,66.553],"0.1667":[-17.319,21.732,84.3],"0.2083":[-65.666,15.569,84.03],"0.25":[-148.392,10.379,84.676],"0.2917":[-165.186,14.077,88.585],"0.3333":[-151.715,-16.676,78.54],"0.375":[-120.742,-21.993,64.78],"0.4167":[-77.405,5.948,53.074],"0.4583":[-68.238,17.889,43.586],"0.5":[-63.802,38.325,29.354],"0.5417":[-71.156,53.173,15.319],"0.5833":[-127.086,64.954,-40.615],"0.625":[-171.734,39.803,-70.705],"0.6667":[-184.15,0.612,-53.538],"0.7083":[-173.055,-5.296,-35.264],"0.75":[-161.978,-13.912,-2.511],"0.7917":[-157.576,-22.969,15.981],"0.8333":[-160.629,-51.794,52.04],"0.875":[-123.004,-81.86,38.577],"0.9167":[-178.109,-124.989,126.043],"0.9583":[-175.289,-140.301,144.699],"1.0":[-176.55,-156.27,172.781],"1.0417":[-180.791,-158.115,187.311],"1.0833":[-185.867,-167.017,218.699],"1.125":[-189.761,-180.92,236.217],"1.1667":[-197.454,-195.55,253.211],"1.2083":[-197.302,-201.241,259.832],"1.25":[-191.959,-212.272,265.175],"1.2917":[-190.646,-218.421,267.082],"1.3333":[-192.764,-224.351,267.703],"1.375":[-194.607,-225.192,267.403],"1.4167":[-196.004,-224.259,267.64],"1.4583":[-196.332,-223.54,267.938],"1.5":[-196.076,-222.776,268.762],"1.5417":[-195.852,-222.334,269.187],"1.5833":[-195.533,-222.041,269.471],"1.625":[-195.429,-222.067,269.443],"1.6667":[-195.248,-222.129,269.504],"1.7083":[-195.12,-222.165,269.594],"1.75":[-195.021,-222.23,269.684],"1.7917":[-194.997,-222.287,269.72],"1.8333":[-194.998,-222.366,269.723],"1.875":[-194.998,-222.43,269.719],"1.9167":[-195.013,-222.537,269.705]},"position":{"0.0":[1.401,50.137,-13.634],"0.0417":[-5.97,48.313,-9.678],"0.0833":[-14.025,51.199,-10.358],"0.125":[-13.761,52.437,-12.817],"0.1667":[-7.139,54.066,-16.437],"0.2083":[6.694,53.793,-13.572],"0.25":[14.8,51.504,-0.584],"0.2917":[14.184,50.436,-0.112],"0.3333":[15.745,47.148,1.17],"0.375":[13.311,43.558,-0.976],"0.4167":[2.049,38.82,-8.245],"0.4583":[-2.089,37.826,-9.639],"0.5":[-7.463,36.762,-10.574],"0.5417":[-10.502,36.511,-10.853],"0.5833":[-14.372,37.18,-11.407],"0.625":[-15.162,40.774,-12.693],"0.6667":[-8.951,44.776,-16.791],"0.7083":[-7.813,46.034,-17.822],"0.75":[-6.631,48.504,-19.345],"0.7917":[-6.137,50.475,-20.002],"0.8333":[-5.807,53.671,-20.573],"0.875":[-5.34,55.528,-20.401],"0.9167":[-4.365,57.27,-20.212],"0.9583":[-3.671,57.943,-20.007],"1.0":[-2.873,58.236,-19.534],"1.0417":[-1.069,57.661,-18.879],"1.0833":[4.827,54.964,-17.268],"1.125":[7.45,52.964,-16.322],"1.1667":[7.039,50.696,-15.194],"1.2083":[5.936,50.234,-15.357],"1.25":[5.072,50.892,-16.436],"1.2917":[4.989,51.481,-16.765],"1.3333":[5.146,52.131,-16.735],"1.375":[5.272,52.255,-16.649],"1.4167":[5.373,52.185,-16.562],"1.4583":[5.399,52.096,-16.534],"1.5":[5.388,51.995,-16.541],"1.5417":[5.367,51.947,-16.553],"1.5833":[5.338,51.927,-16.571],"1.625":[5.331,51.931,-16.581],"1.6667":[5.323,51.941,-16.589],"1.7083":[5.321,51.947,-16.594],"1.75":[5.321,51.953,-16.596],"1.7917":[5.323,51.955,-16.596],"1.8333":[5.327,51.957,-16.593],"1.875":[5.329,51.959,-16.593],"1.9167":[5.329,51.961,-16.592]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.2083":[-32.5,0,0],"0.2917":[-86.25,0,0],"0.4583":[-86.25,0,0],"0.5833":[0,0,0],"0.75":[-10,0,0],"0.8333":[-22.5,0,0],"1.0":[-5,0,0],"1.2083":[0,0,0]},"position":[0,2.5,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.098,0.062,-0.117],"0.0417":[0.436,0.312,-0.516],"0.0833":[0.681,0.525,-0.304],"0.125":[0.703,0.555,0.307],"0.1667":[0.11,0.505,0.584],"0.2083":[-0.356,0.326,-0.208],"0.25":[-0.496,-0.519,-0.295],"0.2917":[-0.464,-0.641,-0.109],"0.3333":[-0.199,-0.607,-0.393],"0.375":[-0.09,-0.543,0.046],"0.4167":[0.007,-0.44,0.19],"0.4583":[0.039,-0.379,0.209],"0.5":[0.071,-0.332,0.202],"0.5417":[0.09,-0.29,0.184],"0.5833":[0.145,-0.199,0.137],"0.625":[0.173,-0.126,0.1],"0.6667":[0.145,-0.013,0.035],"0.7083":[0.075,0.06,-0.013],"0.75":[-0.101,0.148,-0.078],"0.7917":[-0.199,0.205,-0.121],"0.8333":[-0.265,0.255,-0.182],"0.875":[-0.273,0.275,-0.221],"0.9167":[-0.284,0.288,-0.279],"0.9583":[-0.284,0.294,-0.314],"1.0":[-0.285,0.288,-0.361],"1.0417":[-0.255,0.222,-0.388],"1.0833":[-0.116,-0.021,-0.41],"1.125":[-0.006,-0.18,-0.418],"1.1667":[0.122,-0.228,-0.401],"1.2083":[0.138,-0.138,-0.281],"1.25":[0.074,0.064,-0.025],"1.2917":[-0.002,0.175,0.095],"1.3333":[-0.074,0.168,0.103],"1.375":[-0.109,0.119,0.078],"1.4167":[-0.121,0.026,0.019],"1.4583":[-0.098,-0.012,-0.019],"1.5":[-0.057,-0.018,-0.052],"1.5417":[-0.03,-0.012,-0.052],"1.5833":[0.006,-0.004,-0.035],"1.625":[0.011,-0.001,-0.019],"1.6667":[0.008,0.004,0.009],"1.7083":[0.005,0.006,0.017],"1.75":[0,0.004,0.017],"1.7917":[-0.003,0.004,0.017],"1.8333":[0,0.001,0.009],"1.875":[0,0.001,0.004],"1.9167":[0,0.001,0]}},"devil":{"scale":0},"angel":{"position":[2,0,0]}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_melee_1"},"0.75":{"effect":"melee.annihil.annihil_rotate_1"}}},"melee_2":{"loop":true,"animation_length":2.1333,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[80.837,36.222,150.299],"0.0167":[80.837,36.221,150.3],"0.0333":[80.826,36.219,150.29],"0.05":[80.828,36.222,150.281],"0.0667":[80.804,36.214,150.271],"0.0833":[80.708,36.179,150.258],"0.1":[77.489,35.432,150.065],"0.1167":[69.545,33.489,149.973],"0.1333":[59.075,30.707,150.781],"0.15":[48.032,27.633,152.962],"0.1667":[37.817,24.81,156.361],"0.1833":[29.423,22.565,160.23],"0.2":[23.722,20.944,163.364],"0.2167":[21.473,19.786,164.396],"0.2333":[21.274,18.792,163.915],"0.25":[21.195,17.74,163.379],"0.2667":[21.234,16.634,162.783],"0.2833":[21.389,15.477,162.126],"0.3":[21.659,14.275,161.404],"0.3167":[22.043,13.033,160.615],"0.3333":[22.542,11.756,159.757],"0.35":[23.156,10.451,158.829],"0.3667":[23.886,9.124,157.828],"0.3833":[24.734,7.782,156.753],"0.4":[25.702,6.433,155.604],"0.4167":[26.792,5.086,154.379],"0.4333":[28.004,3.749,153.078],"0.45":[29.342,2.432,151.7],"0.4667":[30.805,1.145,150.246],"0.4833":[32.396,-0.102,148.716],"0.5":[34.115,-1.298,147.112],"0.5167":[35.962,-2.432,145.435],"0.5333":[37.934,-3.491,143.69],"0.55":[40.03,-4.466,141.88],"0.5667":[42.246,-5.344,140.011],"0.5833":[44.578,-6.115,138.089],"0.6":[47.018,-6.767,136.125],"0.6167":[49.559,-7.292,134.126],"0.6333":[52.192,-7.681,132.105],"0.65":[54.906,-7.925,130.075],"0.6667":[57.69,-8.02,128.049],"0.6833":[60.531,-7.961,126.042],"0.7":[63.416,-7.745,124.069],"0.7167":[66.333,-7.372,122.146],"0.7333":[69.269,-6.843,120.288],"0.75":[72.21,-6.161,118.509],"0.7667":[75.148,-5.331,116.824],"0.7833":[78.071,-4.36,115.245],"0.8":[80.971,-3.255,113.783],"0.8167":[83.84,-2.027,112.449],"0.8333":[86.674,-0.685,111.251],"0.85":[89.468,0.758,110.194],"0.8667":[92.219,2.292,109.285],"0.8833":[94.925,3.903,108.527],"0.9":[97.587,5.579,107.922],"0.9167":[100.205,7.308,107.472],"0.9333":[102.778,9.076,107.176],"0.95":[105.31,10.872,107.033],"0.9667":[107.8,12.683,107.041],"0.9833":[110.252,14.499,107.195],"1.0":[112.665,16.309,107.493],"1.0167":[115.04,18.103,107.928],"1.0333":[117.379,19.871,108.495],"1.05":[119.68,21.607,109.184],"1.0667":[121.942,23.302,109.988],"1.0833":[124.164,24.951,110.898],"1.1":[126.341,26.55,111.901],"1.1167":[128.471,28.095,112.985],"1.1333":[130.548,29.584,114.139],"1.15":[133.443,32.393,114.02],"1.1667":[137.645,37.176,113.152],"1.1833":[142.772,42.36,113.834],"1.2":[148.423,45.613,116.982],"1.2167":[155.162,45.916,122.488],"1.2333":[162.604,44.182,129.043],"1.25":[168.82,41.24,134.657],"1.2667":[172.838,38.418,138.303],"1.2833":[174.263,37.174,139.594],"1.3":[174.2,35.309,137.738],"1.3167":[173.982,31.609,133.964],"1.3333":[173.591,27.026,129.357],"1.35":[172.958,22.313,124.389],"1.3667":[171.992,18.865,119.451],"1.3833":[171.057,16.074,115.652],"1.4":[170.466,13.709,113.833],"1.4167":[170.006,11.681,112.912],"1.4333":[169.616,10.066,112.735],"1.45":[169.3,9.012,113.564],"1.4667":[169.077,8.424,115.161],"1.4833":[168.885,7.971,116.637],"1.5":[168.705,7.452,117.869],"1.5167":[168.557,6.941,119.191],"1.5333":[168.418,6.507,120.405],"1.55":[168.256,6.214,121.318],"1.5667":[168.042,6.125,121.73],"1.5833":[167.776,6.188,121.804],"1.6":[167.505,6.293,121.844],"1.6167":[167.267,6.411,121.858],"1.6333":[167.095,6.504,121.858],"1.65":[167.029,6.543,121.858],"1.6667":[167.046,6.626,121.799],"1.6833":[167.09,6.816,121.637],"1.7":[167.137,7.033,121.399],"1.7167":[167.161,7.196,121.112],"1.7333":[167.156,7.27,120.733],"1.75":[167.134,7.305,120.265],"1.7667":[167.101,7.339,119.804],"1.7833":[167.06,7.412,119.446],"1.8":[167.006,7.537,119.191],"1.8167":[166.94,7.69,118.98],"1.8333":[166.869,7.856,118.818],"1.85":[166.805,8.019,118.71],"1.8667":[166.759,8.16,118.658],"1.8833":[166.736,8.261,118.655],"1.9":[166.729,8.323,118.681],"1.9167":[166.724,8.359,118.722],"1.9333":[166.705,8.386,118.764],"1.95":[166.666,8.365,118.819],"1.9667":[166.619,8.278,118.894],"1.9833":[166.576,8.171,118.974],"2.0":[166.548,8.089,119.039],"2.0167":[166.538,8.045,119.086],"2.0333":[166.539,8.013,119.124],"2.05":[166.543,7.992,119.154],"2.0667":[166.541,7.975,119.178],"2.0833":[166.531,7.966,119.195],"2.1":[166.516,7.965,119.206],"2.1167":[166.503,7.968,119.214],"2.1333":[166.498,7.97,119.221]},"position":{"0.0":[23.26,33.141,-6.362],"0.0167":[23.26,32.667,-5.447],"0.0333":[23.257,31.488,-3.263],"0.05":[23.259,29.976,-0.66],"0.0667":[23.251,28.497,1.528],"0.0833":[23.217,27.42,2.469],"0.1":[22.986,26.671,2.535],"0.1167":[22.478,25.977,2.619],"0.1333":[21.825,25.382,2.667],"0.15":[21.164,24.875,2.64],"0.1667":[20.555,24.435,2.561],"0.1833":[20.012,24.091,2.472],"0.2":[19.597,23.865,2.381],"0.2167":[19.367,23.783,2.294],"0.2333":[19.252,23.779,2.21],"0.25":[19.142,23.775,2.126],"0.2667":[19.036,23.77,2.04],"0.2833":[18.934,23.765,1.953],"0.3":[18.837,23.761,1.865],"0.3167":[18.743,23.756,1.776],"0.3333":[18.654,23.752,1.685],"0.35":[18.569,23.748,1.594],"0.3667":[18.488,23.745,1.5],"0.3833":[18.411,23.744,1.406],"0.4":[18.337,23.743,1.31],"0.4167":[18.267,23.745,1.212],"0.4333":[18.201,23.748,1.113],"0.45":[18.138,23.753,1.012],"0.4667":[18.079,23.761,0.909],"0.4833":[18.023,23.771,0.805],"0.5":[17.97,23.784,0.698],"0.5167":[17.921,23.8,0.59],"0.5333":[17.874,23.82,0.479],"0.55":[17.83,23.843,0.366],"0.5667":[17.788,23.871,0.251],"0.5833":[17.749,23.902,0.133],"0.6":[17.712,23.938,0.013],"0.6167":[17.677,23.979,-0.11],"0.6333":[17.643,24.025,-0.236],"0.65":[17.611,24.076,-0.364],"0.6667":[17.581,24.133,-0.495],"0.6833":[17.551,24.196,-0.629],"0.7":[17.521,24.265,-0.766],"0.7167":[17.493,24.341,-0.906],"0.7333":[17.464,24.423,-1.048],"0.75":[17.435,24.512,-1.193],"0.7667":[17.405,24.609,-1.341],"0.7833":[17.374,24.713,-1.492],"0.8":[17.343,24.825,-1.645],"0.8167":[17.31,24.944,-1.8],"0.8333":[17.276,25.072,-1.958],"0.85":[17.24,25.209,-2.118],"0.8667":[17.202,25.353,-2.28],"0.8833":[17.161,25.507,-2.444],"0.9":[17.118,25.67,-2.61],"0.9167":[17.073,25.842,-2.777],"0.9333":[17.025,26.023,-2.947],"0.95":[16.974,26.214,-3.117],"0.9667":[16.92,26.414,-3.289],"0.9833":[16.863,26.624,-3.462],"1.0":[16.803,26.844,-3.636],"1.0167":[16.754,27.29,-3.869],"1.0333":[16.723,28.113,-4.203],"1.05":[16.695,29.219,-4.611],"1.0667":[16.658,30.511,-5.067],"1.0833":[16.596,31.894,-5.545],"1.1":[16.497,33.273,-6.019],"1.1167":[16.348,34.552,-6.463],"1.1333":[16.133,35.636,-6.851],"1.15":[15.789,36.495,-7.17],"1.1667":[15.27,37.194,-7.434],"1.1833":[14.587,37.774,-7.659],"1.2":[13.755,38.279,-7.859],"1.2167":[12.761,38.735,-8.031],"1.2333":[11.628,39.135,-8.174],"1.25":[10.417,39.478,-8.304],"1.2667":[9.188,39.759,-8.438],"1.2833":[8.005,39.976,-8.593],"1.3":[6.837,40.082,-8.819],"1.3167":[5.766,40.095,-9.055],"1.3333":[4.856,40.026,-9.25],"1.35":[4.203,39.895,-9.351],"1.3667":[3.949,39.745,-9.31],"1.3833":[3.913,39.592,-9.254],"1.4":[3.96,39.443,-9.225],"1.4167":[4.076,39.303,-9.203],"1.4333":[4.224,39.24,-9.196],"1.45":[4.425,39.242,-9.218],"1.4667":[4.658,39.25,-9.261],"1.4833":[4.822,39.274,-9.305],"1.5":[4.901,39.317,-9.342],"1.5167":[4.95,39.376,-9.381],"1.5333":[4.976,39.442,-9.419],"1.55":[4.987,39.505,-9.453],"1.5667":[4.989,39.556,-9.481],"1.5833":[4.978,39.597,-9.502],"1.6":[4.947,39.635,-9.519],"1.6167":[4.906,39.665,-9.533],"1.6333":[4.861,39.686,-9.545],"1.65":[4.821,39.693,-9.556],"1.6667":[4.784,39.691,-9.565],"1.6833":[4.746,39.685,-9.57],"1.7":[4.709,39.674,-9.573],"1.7167":[4.675,39.66,-9.574],"1.7333":[4.643,39.641,-9.573],"1.75":[4.612,39.617,-9.569],"1.7667":[4.586,39.592,-9.564],"1.7833":[4.568,39.573,-9.559],"1.8":[4.559,39.558,-9.554],"1.8167":[4.553,39.546,-9.547],"1.8333":[4.55,39.536,-9.541],"1.85":[4.549,39.528,-9.534],"1.8667":[4.548,39.52,-9.528],"1.8833":[4.549,39.514,-9.523],"1.9":[4.551,39.51,-9.52],"1.9167":[4.554,39.508,-9.517],"1.9333":[4.557,39.508,-9.516],"1.95":[4.559,39.508,-9.516],"1.9667":[4.561,39.51,-9.516],"1.9833":[4.563,39.512,-9.517],"2.0":[4.565,39.514,-9.518],"2.0167":[4.566,39.515,-9.519],"2.0333":[4.566,39.517,-9.52],"2.05":[4.566,39.519,-9.522],"2.0667":[4.567,39.521,-9.523],"2.0833":[4.566,39.522,-9.524],"2.1":[4.564,39.524,-9.525],"2.1167":[4.563,39.525,-9.526],"2.1333":[4.562,39.525,-9.526]}},"righthand":{"rotation":{"0.0":[0.393,-137.018,78.276],"0.1167":[0.393,-137.018,78.276],"0.1333":[-9.576,-128.878,75.852],"0.15":[-20.984,-120.675,75.011],"0.1667":[-36.828,-111.116,76.857],"0.1833":[-55.006,-105.244,82.593],"0.2":[-43.373,-116.49,67.639],"0.2167":[-45.315,-150.63,52.774],"0.2333":[-50.23,-169.853,43.418],"0.25":[-54.949,-171.176,41.045],"0.2667":[-67.1,-168.302,38.656],"0.2833":[-105.014,-160.517,47.62],"0.3":[-150.703,-163.471,58.728],"0.3167":[-187.087,-153.81,47.414],"0.3333":[-197.839,-175.893,58.269],"0.35":[-184.649,-186.017,68.145],"0.3667":[-172.086,-188.987,75.897],"0.3833":[-169.807,-190.046,77.858],"0.4":[-169.454,-190.968,78.729],"0.4167":[-170.286,-191.568,78.712],"0.4333":[-171.536,-191.596,78.052],"0.45":[-172.405,-190.806,77.027],"0.4667":[-172.086,-188.987,75.897],"0.4833":[-170.787,-186.421,74.668],"0.5":[-169.257,-183.553,73.214],"0.5167":[-167.496,-180.449,71.532],"0.5333":[-165.504,-177.179,69.619],"0.55":[-163.28,-173.812,67.473],"0.5667":[-160.824,-170.419,65.095],"0.5833":[-158.141,-167.066,62.488],"0.6":[-155.243,-163.821,59.663],"0.6167":[-152.152,-160.746,56.641],"0.6333":[-148.899,-157.895,53.453],"0.65":[-145.537,-155.316,50.151],"0.6667":[-142.132,-153.043,46.803],"0.6833":[-138.769,-151.097,43.491],"0.7":[-135.549,-149.483,40.317],"0.7167":[-132.582,-148.193,37.389],"0.7333":[-129.983,-147.207,34.823],"0.75":[-128.2,-146.594,33.05],"0.7667":[-127.484,-146.345,32.308],"0.7833":[-127.615,-146.355,32.392],"0.8":[-128.351,-146.555,33.066],"0.8167":[-129.439,-146.884,34.092],"0.8333":[-130.63,-147.279,35.229],"0.85":[-131.686,-147.659,36.25],"0.8667":[-132.377,-147.933,36.938],"0.8833":[-132.481,-148.002,37.08],"0.9":[-131.768,-147.779,36.456],"0.9167":[-129.983,-147.207,34.823],"0.9333":[-126.987,-146.289,31.913],"0.95":[-122.889,-145.21,27.754],"0.9667":[-117.799,-144.232,22.542],"0.9833":[-111.905,-143.604,16.542],"1.0":[-105.483,-143.518,10.11],"1.0167":[-98.884,-144.072,3.673],"1.0333":[-92.467,-145.25,-2.334],"1.05":[-86.534,-146.93,-7.529],"1.0667":[-81.293,-148.908,-11.627],"1.0833":[-76.862,-150.938,-14.433],"1.1":[-73.15,-152.493,-14.971],"1.1167":[-69.9,-153.423,-13.141],"1.1333":[-67.019,-154.158,-10.029],"1.15":[-64.446,-155.242,-6.651],"1.1667":[-62.106,-157.304,-3.985],"1.1833":[-61.194,-163.595,-2.078],"1.2":[-61.062,-171.592,-1.056],"1.2167":[-60.588,-177.381,-1.733],"1.2333":[-60.293,-182.748,-2.888],"1.25":[-59.902,-188.142,-2.163],"1.2667":[-57.799,-193.601,8.869],"1.2833":[-55.685,-192.665,23.565],"1.3":[-53.331,-189.607,37.577],"1.3167":[-49.065,-184.43,48.194],"1.3333":[-44.926,-178.796,56.699],"1.35":[-41.35,-175.494,64.398],"1.3667":[-38.799,-172.585,70.546],"1.3833":[-38.75,-169.149,74.46],"1.4":[-39.811,-165.597,77.072],"1.4167":[-41.259,-161.599,78.867],"1.4333":[-42.864,-157.56,80.14],"1.45":[-44.323,-153.641,81.292],"1.4667":[-45.201,-150.189,82.176],"1.4833":[-45.048,-147.432,82.795],"1.5":[-44.412,-145.005,83.207],"1.5167":[-43.633,-142.95,83.46],"1.5333":[-42.57,-141.543,83.38],"1.55":[-41.49,-140.927,83.2],"1.5667":[-40.82,-140.906,83.273],"1.5833":[-40.301,-141.209,83.425],"1.6":[-39.902,-141.56,83.595],"1.6167":[-39.621,-141.898,83.754],"1.6333":[-39.455,-142.283,83.928],"1.65":[-39.382,-142.631,84.134],"1.6667":[-39.427,-142.909,84.406],"1.6833":[-39.558,-143.148,84.704],"1.7":[-39.696,-143.375,84.974],"1.7167":[-39.807,-143.599,85.19],"1.7333":[-39.916,-143.805,85.369],"1.75":[-40.031,-143.976,85.522],"1.7667":[-40.143,-144.066,85.609],"1.7833":[-40.237,-144.089,85.636],"1.8":[-40.291,-144.082,85.623],"1.8167":[-40.33,-144.055,85.591],"1.8333":[-40.375,-144.028,85.576],"1.85":[-40.432,-144.009,85.594],"1.8667":[-40.488,-143.985,85.626],"1.8833":[-40.547,-143.965,85.663],"1.9":[-40.605,-143.942,85.695],"1.9167":[-40.651,-143.918,85.725],"1.9333":[-40.677,-143.893,85.751],"1.95":[-40.691,-143.869,85.773],"1.9667":[-40.7,-143.842,85.787],"1.9833":[-40.705,-143.816,85.801],"2.0":[-40.706,-143.789,85.805],"2.0167":[-40.699,-143.76,85.8],"2.0333":[-40.702,-143.732,85.801],"2.05":[-40.701,-143.704,85.798],"2.0667":[-40.693,-143.676,85.792],"2.0833":[-40.687,-143.646,85.787],"2.1":[-40.682,-143.618,85.783],"2.1167":[-40.681,-143.59,85.783],"2.1333":[-40.675,-143.561,85.776]},"position":{"0.0":[-3.672,34.343,-9.374],"0.1167":[-3.672,34.343,-9.374],"0.1333":[-2.093,37.383,-10.177],"0.15":[-0.987,39.571,-11.312],"0.1667":[0.374,42.446,-12.559],"0.1833":[1.216,44.873,-13.751],"0.2":[0.507,45.792,-14.726],"0.2167":[-0.727,45.978,-15.636],"0.2333":[-1.744,45.283,-16.613],"0.25":[-3.718,43.781,-16.872],"0.2667":[-8.255,40.084,-16.45],"0.2833":[-13.089,36.595,-14.804],"0.3":[-19.253,32.388,-10.751],"0.3167":[-23.714,28.608,-5.879],"0.3333":[-23.308,31.256,-0.296],"0.35":[-24.464,31.923,3.917],"0.3667":[-25.463,32.341,6.228],"0.3833":[-25.64,33.195,6.134],"0.4":[-25.671,34.188,5.518],"0.4167":[-25.611,35.204,4.564],"0.4333":[-25.519,36.125,3.46],"0.45":[-25.451,36.834,2.392],"0.4667":[-25.463,37.212,1.545],"0.4833":[-25.54,37.357,0.862],"0.5":[-25.628,37.444,0.161],"0.5167":[-25.724,37.481,-0.552],"0.5333":[-25.827,37.474,-1.272],"0.55":[-25.936,37.428,-1.993],"0.5667":[-26.048,37.35,-2.711],"0.5833":[-26.163,37.247,-3.421],"0.6":[-26.279,37.124,-4.117],"0.6167":[-26.393,36.988,-4.794],"0.6333":[-26.506,36.845,-5.448],"0.65":[-26.614,36.701,-6.073],"0.6667":[-26.717,36.563,-6.664],"0.6833":[-26.813,36.435,-7.216],"0.7":[-26.9,36.326,-7.723],"0.7167":[-26.977,36.241,-8.182],"0.7333":[-27.041,36.186,-8.586],"0.75":[-27.09,36.149,-8.869],"0.7667":[-27.12,36.116,-8.99],"0.7833":[-27.135,36.088,-8.984],"0.8":[-27.138,36.066,-8.887],"0.8167":[-27.13,36.051,-8.733],"0.8333":[-27.116,36.045,-8.558],"0.85":[-27.098,36.048,-8.397],"0.8667":[-27.079,36.063,-8.284],"0.8833":[-27.061,36.09,-8.254],"0.9":[-27.048,36.13,-8.343],"0.9167":[-27.041,36.186,-8.586],"0.9333":[-27.061,36.237,-8.989],"0.95":[-27.112,36.272,-9.52],"0.9667":[-27.182,36.305,-10.156],"0.9833":[-27.256,36.347,-10.872],"1.0":[-27.321,36.411,-11.646],"1.0167":[-27.362,36.511,-12.452],"1.0333":[-27.365,36.658,-13.269],"1.05":[-27.317,36.865,-14.072],"1.0667":[-27.203,37.145,-14.837],"1.0833":[-27.01,37.51,-15.541],"1.1":[-26.344,38.47,-16.17],"1.1167":[-25.157,40.051,-16.732],"1.1333":[-23.953,41.545,-17.236],"1.15":[-22.919,42.638,-17.63],"1.1667":[-21.783,43.582,-17.93],"1.1833":[-20.487,44.486,-18.2],"1.2":[-18.945,45.217,-18.404],"1.2167":[-17.132,45.746,-18.574],"1.2333":[-15.174,46.166,-18.708],"1.25":[-13.063,46.441,-18.716],"1.2667":[-10.182,45.982,-18.057],"1.2833":[-6.731,44.872,-17.487],"1.3":[-2.94,42.49,-16.871],"1.3167":[-1.081,40.852,-16.062],"1.3333":[-0.24,39.589,-15.237],"1.35":[-0.619,38.909,-14.403],"1.3667":[-1.241,38.445,-13.743],"1.3833":[-1.85,38.198,-13.508],"1.4":[-2.402,38.111,-13.536],"1.4167":[-2.739,38.13,-13.793],"1.4333":[-2.952,38.244,-14.138],"1.45":[-3.071,38.444,-14.426],"1.4667":[-3.112,38.678,-14.641],"1.4833":[-3.115,38.894,-14.735],"1.5":[-3.094,39.108,-14.776],"1.5167":[-3.063,39.298,-14.801],"1.5333":[-3.016,39.446,-14.806],"1.55":[-2.966,39.538,-14.79],"1.5667":[-2.933,39.577,-14.772],"1.5833":[-2.907,39.59,-14.751],"1.6":[-2.886,39.59,-14.732],"1.6167":[-2.87,39.578,-14.717],"1.6333":[-2.859,39.554,-14.703],"1.65":[-2.853,39.53,-14.693],"1.6667":[-2.854,39.51,-14.69],"1.6833":[-2.858,39.491,-14.689],"1.7":[-2.865,39.474,-14.691],"1.7167":[-2.873,39.462,-14.692],"1.7333":[-2.882,39.453,-14.693],"1.75":[-2.892,39.445,-14.695],"1.7667":[-2.899,39.441,-14.698],"1.7833":[-2.905,39.44,-14.702],"1.8":[-2.908,39.44,-14.704],"1.8167":[-2.911,39.442,-14.707],"1.8333":[-2.913,39.444,-14.709],"1.85":[-2.914,39.446,-14.711],"1.8667":[-2.914,39.448,-14.711],"1.8833":[-2.914,39.45,-14.712],"1.9":[-2.913,39.452,-14.712],"1.9167":[-2.913,39.454,-14.712],"1.9333":[-2.913,39.456,-14.712],"1.95":[-2.911,39.457,-14.712],"1.9667":[-2.91,39.458,-14.711],"1.9833":[-2.909,39.459,-14.711],"2.0":[-2.908,39.459,-14.711],"2.0167":[-2.906,39.46,-14.709],"2.0333":[-2.905,39.459,-14.709],"2.05":[-2.905,39.459,-14.709],"2.0667":[-2.904,39.459,-14.709],"2.0833":[-2.903,39.459,-14.708],"2.1":[-2.903,39.458,-14.708],"2.1167":[-2.904,39.457,-14.709],"2.1333":[-2.904,39.457,-14.709]}},"annihil":{"rotation":{"0.0":[-5.465,-176.444,-81.146],"0.0167":[-5.273,-167.929,-80.743],"0.0333":[-5.098,-159.496,-80.374],"0.05":[-5.056,-150.896,-79.957],"0.0667":[-5.324,-141.881,-79.349],"0.0833":[-6.342,-132.008,-78.131],"0.1":[-8.568,-121.581,-75.822],"0.1167":[-12.612,-111.484,-71.778],"0.1333":[-23.815,-101.592,-60.663],"0.15":[-90.064,-94.696,5.433],"0.1667":[-155.585,-100.627,70.807],"0.1833":[-168.591,-107.566,83.748],"0.2":[-162.151,-109.64,74.497],"0.2167":[-168.793,-142.118,63.344],"0.2333":[-170.795,-161.708,53.575],"0.25":[-174.736,-163.942,51.15],"0.2667":[-187.072,-163.807,49.404],"0.2833":[-225.572,-163.092,58.552],"0.3":[-269.179,-172.423,65.662],"0.3167":[-304.627,-165.98,49.108],"0.3333":[-314.759,-188.892,58.324],"0.35":[-300.605,-199.134,72.163],"0.3667":[-286.413,-201.423,84.716],"0.3833":[-282.976,-202.62,89.397],"0.4":[-281.6,-203.853,92.316],"0.4167":[-281.856,-204.847,93.194],"0.4333":[-283.345,-205.082,91.8],"0.45":[-285.518,-203.881,88.033],"0.4667":[-287.454,-200.603,81.944],"0.4833":[-279.617,-202.167,98.766],"0.5":[-272.577,-200.989,114.568],"0.5167":[-267.292,-197.896,128.939],"0.5333":[-264.094,-193.821,141.953],"0.55":[-262.899,-189.597,153.982],"0.5667":[-263.407,-185.898,165.439],"0.5833":[-265.217,-183.248,176.649],"0.6":[-267.841,-182.007,187.779],"0.6167":[-270.727,-182.364,198.877],"0.6333":[-273.278,-184.326,209.948],"0.65":[-274.933,-187.706,221.069],"0.6667":[-275.173,-192.141,232.462],"0.6833":[-273.54,-197.091,244.517],"0.7":[-269.652,-201.827,257.753],"0.7167":[-263.348,-205.42,272.623],"0.7333":[-263.983,-217.636,268.709],"0.75":[-261.255,-236.793,271.191],"0.7667":[-263.193,-256.872,270.767],"0.7833":[-264.172,-280.809,272.363],"0.8":[-268.971,-307.974,268.755],"0.8167":[-271.223,-336.831,268.343],"0.8333":[-275.895,-364.812,273.972],"0.85":[-290.525,-389.499,296.359],"0.8667":[-325.941,-392.839,335.947],"0.8833":[-358.126,-360.39,359.895],"0.9":[-383.963,-323.794,351.854],"0.9167":[-421.548,-313.633,314.524],"0.9333":[-450.428,-327.413,279.105],"0.95":[-459.985,-348.246,261.746],"0.9667":[-457.518,-364.994,257.424],"0.9833":[-450.013,-379.969,257.217],"1.0":[-442.74,-396.098,255.538],"1.0167":[-435.039,-412.742,252.574],"1.0333":[-424.398,-429.906,244.621],"1.05":[-361.284,-443.854,183.847],"1.0667":[-278.006,-432.315,101.966],"1.0833":[-267.567,-415.449,91.397],"1.1":[-264.195,-398.731,85.265],"1.1167":[-264.126,-382.62,79.203],"1.1333":[-267.495,-368.116,73.612],"1.15":[-273.416,-355.523,67.891],"1.1667":[-281.587,-344.672,60.628],"1.1833":[-292.806,-336.087,51.154],"1.2":[-307.552,-330.616,39.11],"1.2167":[-327.398,-332.045,25.744],"1.2333":[-346.899,-339.808,15.215],"1.25":[-361.553,-350.158,8.499],"1.2667":[-364.005,-364.671,14.13],"1.2833":[-364.701,-366.279,27.98],"1.3":[-365.435,-364.519,41.921],"1.3167":[-369.285,-359.049,52.136],"1.3333":[-373.055,-353.154,60.273],"1.35":[-376.463,-349.641,67.646],"1.3667":[-378.889,-346.592,73.564],"1.3833":[-378.75,-343.158,77.527],"1.4":[-377.453,-339.666,80.323],"1.4167":[-375.699,-335.756,82.377],"1.4333":[-373.738,-331.819,83.956],"1.45":[-371.891,-328.002,85.432],"1.4667":[-370.653,-324.616,86.589],"1.4833":[-370.547,-321.857,87.351],"1.5":[-370.978,-319.397,87.842],"1.5167":[-371.596,-317.295,88.142],"1.5333":[-372.59,-315.825,88.03],"1.55":[-373.698,-315.146,87.751],"1.5667":[-374.428,-315.083,87.73],"1.5833":[-375.027,-315.352,87.785],"1.6":[-375.5,-315.679,87.873],"1.6167":[-375.843,-315.999,87.965],"1.6333":[-376.064,-316.377,88.089],"1.65":[-376.175,-316.719,88.266],"1.6667":[-376.158,-316.996,88.519],"1.6833":[-376.039,-317.244,88.823],"1.7":[-375.909,-317.479,89.096],"1.7167":[-375.814,-317.707,89.311],"1.7333":[-375.708,-317.922,89.495],"1.75":[-375.603,-318.095,89.649],"1.7667":[-375.493,-318.192,89.745],"1.7833":[-375.39,-318.22,89.787],"1.8":[-375.332,-318.22,89.781],"1.8167":[-375.287,-318.192,89.756],"1.8333":[-375.236,-318.171,89.746],"1.85":[-375.178,-318.15,89.773],"1.8667":[-375.107,-318.136,89.815],"1.8833":[-375.043,-318.117,89.861],"1.9":[-374.979,-318.096,89.904],"1.9167":[-374.927,-318.075,89.941],"1.9333":[-374.897,-318.055,89.972],"1.95":[-374.88,-318.029,89.995],"1.9667":[-374.863,-318.004,90.018],"1.9833":[-374.859,-317.979,90.029],"2.0":[-374.859,-317.95,90.034],"2.0167":[-374.854,-317.925,90.037],"2.0333":[-374.854,-317.895,90.035],"2.05":[-374.854,-317.866,90.032],"2.0667":[-374.854,-317.837,90.032],"2.0833":[-374.859,-317.808,90.029],"2.1":[-374.863,-317.782,90.023],"2.1167":[-374.867,-317.753,90.02],"2.1333":[-374.872,-317.724,90.015]},"position":{"0.0":[16.25,46.474,-15.494],"0.0167":[15.693,48.747,-15.546],"0.0333":[15.122,50.945,-15.585],"0.05":[14.534,52.986,-15.617],"0.0667":[13.914,54.789,-15.646],"0.0833":[13.232,56.207,-15.659],"0.1":[12.501,57.236,-15.666],"0.1167":[11.774,58.03,-15.709],"0.1333":[11.048,58.681,-15.815],"0.15":[10.308,59.196,-15.952],"0.1667":[9.603,59.594,-16.069],"0.1833":[9.006,59.905,-16.126],"0.2":[8.507,60.058,-16.934],"0.2167":[6.607,58.916,-17.86],"0.2333":[5.404,57.935,-18.692],"0.25":[3.104,56.483,-19.058],"0.2667":[-1.769,52.588,-18.981],"0.2833":[-7.761,48.181,-17.399],"0.3":[-14.723,43.116,-12.112],"0.3167":[-18.583,38.88,-6.204],"0.3333":[-18.364,41.876,-0.07],"0.35":[-19.86,42.878,3.768],"0.3667":[-20.933,43.687,5.546],"0.3833":[-21.063,44.86,5.175],"0.4":[-21.053,46.115,4.351],"0.4167":[-20.992,47.265,3.303],"0.4333":[-20.941,48.129,2.268],"0.45":[-20.94,48.519,1.48],"0.4667":[-21.025,48.219,1.138],"0.4833":[-21.247,47.375,1.085],"0.5":[-21.488,46.249,1.001],"0.5167":[-21.707,44.852,0.824],"0.5333":[-21.86,43.209,0.491],"0.55":[-21.905,41.359,-0.045],"0.5667":[-21.807,39.348,-0.827],"0.5833":[-21.539,37.246,-1.876],"0.6":[-21.085,35.116,-3.189],"0.6167":[-20.439,33.031,-4.756],"0.6333":[-19.608,31.064,-6.546],"0.65":[-18.616,29.272,-8.504],"0.6667":[-17.497,27.709,-10.57],"0.6833":[-16.295,26.403,-12.674],"0.7":[-15.064,25.38,-14.738],"0.7167":[-13.862,24.642,-16.677],"0.7333":[-12.351,26.885,-17.924],"0.75":[-11.119,31.316,-18.951],"0.7667":[-10.826,35.744,-20.537],"0.7833":[-10.794,40.633,-22.867],"0.8":[-10.727,45.403,-25.219],"0.8167":[-10.809,50.795,-26.908],"0.8333":[-11.092,56.412,-27.353],"0.85":[-10.895,61.6,-26.449],"0.8667":[-10.337,65.357,-24.678],"0.8833":[-9.742,67.643,-22.538],"0.9":[-8.887,68.515,-20.836],"0.9167":[-8.664,68.577,-19.495],"0.9333":[-8.522,67.883,-18.356],"0.95":[-8.03,66.832,-17.795],"0.9667":[-7.776,65.781,-17.701],"0.9833":[-7.901,64.61,-17.921],"1.0":[-7.878,63.517,-18.56],"1.0167":[-7.794,62.576,-19.584],"1.0333":[-7.604,61.896,-20.924],"1.05":[-7.459,61.666,-22.439],"1.0667":[-7.306,61.894,-23.924],"1.0833":[-7.098,62.487,-25.198],"1.1":[-6.804,63.289,-26.139],"1.1167":[-6.484,64.175,-26.702],"1.1333":[-6.142,65.017,-26.903],"1.15":[-5.799,65.815,-26.797],"1.1667":[-5.498,66.518,-26.409],"1.1833":[-5.216,66.964,-25.741],"1.2":[-4.967,67.004,-24.785],"1.2167":[-4.527,66.005,-23.399],"1.2333":[-4.196,64.215,-21.809],"1.25":[-4.32,62.213,-20.811],"1.2667":[-2.028,60.416,-19.838],"1.2833":[1.122,58.501,-19.366],"1.3":[5.116,55.485,-18.826],"1.3167":[7.077,53.662,-17.966],"1.3333":[7.995,52.271,-17.078],"1.35":[7.712,51.398,-16.151],"1.3667":[7.144,50.76,-15.427],"1.3833":[6.518,50.432,-15.227],"1.4":[5.918,50.329,-15.33],"1.4167":[5.523,50.39,-15.671],"1.4333":[5.251,50.581,-16.096],"1.45":[5.076,50.868,-16.444],"1.4667":[5,51.185,-16.691],"1.4833":[4.991,51.459,-16.776],"1.5":[5.026,51.719,-16.792],"1.5167":[5.073,51.947,-16.786],"1.5333":[5.146,52.118,-16.753],"1.55":[5.222,52.21,-16.702],"1.5667":[5.272,52.234,-16.665],"1.5833":[5.316,52.221,-16.627],"1.6":[5.348,52.195,-16.597],"1.6167":[5.374,52.162,-16.574],"1.6333":[5.392,52.118,-16.557],"1.65":[5.401,52.073,-16.546],"1.6667":[5.403,52.037,-16.544],"1.6833":[5.396,52.002,-16.548],"1.7":[5.389,51.972,-16.554],"1.7167":[5.38,51.948,-16.559],"1.7333":[5.367,51.927,-16.564],"1.75":[5.357,51.911,-16.57],"1.7667":[5.348,51.903,-16.577],"1.7833":[5.339,51.903,-16.584],"1.8":[5.334,51.905,-16.589],"1.8167":[5.33,51.911,-16.593],"1.8333":[5.329,51.915,-16.596],"1.85":[5.325,51.917,-16.599],"1.8667":[5.323,51.919,-16.602],"1.8833":[5.324,51.921,-16.603],"1.9":[5.32,51.924,-16.605],"1.9167":[5.32,51.927,-16.607],"1.9333":[5.32,51.93,-16.607],"1.95":[5.324,51.93,-16.607],"1.9667":[5.324,51.932,-16.607],"1.9833":[5.324,51.932,-16.607],"2.0":[5.324,51.935,-16.607],"2.0167":[5.328,51.935,-16.605],"2.05":[5.328,51.935,-16.605],"2.0667":[5.328,51.938,-16.605],"2.0833":[5.328,51.938,-16.603],"2.1":[5.331,51.938,-16.603],"2.1333":[5.331,51.938,-16.603]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.013,-0.469,0.19],"0.0167":[-0.031,-0.469,0.157],"0.0333":[-0.053,-0.468,0.092],"0.05":[-0.082,-0.468,0.008],"0.0667":[-0.116,-0.467,-0.089],"0.0833":[-0.154,-0.465,-0.206],"0.1":[-0.19,-0.462,-0.336],"0.1167":[-0.223,-0.458,-0.473],"0.1333":[-0.257,-0.453,-0.616],"0.15":[-0.294,-0.445,-0.752],"0.1667":[-0.328,-0.435,-0.889],"0.1833":[-0.354,-0.424,-1.025],"0.2":[-0.378,-0.411,-1.142],"0.2167":[-0.388,-0.396,-1.246],"0.2333":[-0.353,-0.38,-1.337],"0.25":[-0.198,-0.367,-1.409],"0.2667":[0.079,-0.344,-1.449],"0.2833":[0.419,-0.267,-1.465],"0.3":[0.674,-0.127,-0.904],"0.3167":[0.758,0.019,0.084],"0.3333":[0.824,0.159,0.706],"0.35":[0.873,0.262,-0.084],"0.3667":[0.913,0.344,-0.866],"0.3833":[0.954,0.407,-0.262],"0.4":[0.992,0.456,0.402],"0.4167":[1.017,0.498,0.462],"0.4333":[1.032,0.528,0.403],"0.45":[1.039,0.554,0.284],"0.4667":[1.031,0.577,0.174],"0.4833":[1.016,0.599,0.072],"0.5":[0.993,0.618,-0.004],"0.5167":[0.968,0.629,-0.039],"0.5333":[0.94,0.64,-0.047],"0.55":[0.907,0.647,-0.058],"0.5667":[0.88,0.655,-0.062],"0.5833":[0.847,0.663,-0.06],"0.6":[0.814,0.67,-0.054],"0.6167":[0.781,0.676,-0.045],"0.6333":[0.742,0.682,-0.032],"0.65":[0.709,0.687,-0.019],"0.6667":[0.676,0.691,-0.005],"0.6833":[0.643,0.694,0.007],"0.7":[0.603,0.696,0.016],"0.7167":[0.57,0.697,0.022],"0.7333":[0.55,0.697,0.024],"0.75":[0.531,0.697,0.024],"0.7667":[0.458,0.697,0.026],"0.7833":[0.313,0.696,0.028],"0.8":[0.095,0.695,0.032],"0.8167":[-0.169,0.694,0.035],"0.8333":[-0.474,0.693,0.039],"0.85":[-0.812,0.691,0.042],"0.8667":[-1.15,0.69,0.046],"0.8833":[-1.488,0.688,0.049],"0.9":[-1.815,0.686,0.052],"0.9167":[-2.12,0.684,0.055],"0.9333":[-2.316,0.682,0.056],"0.95":[-2.469,0.68,0.056],"0.9667":[-2.6,0.677,0.056],"0.9833":[-2.698,0.674,0.056],"1.0":[-2.774,0.67,0.056],"1.0167":[-2.839,0.665,0.056],"1.0333":[-2.883,0.659,0.056],"1.05":[-2.916,0.652,0.056],"1.0667":[-2.927,0.643,0.056],"1.0833":[-2.915,0.632,0.057],"1.1":[-2.892,0.619,0.055],"1.1167":[-2.858,0.606,0.056],"1.1333":[-2.801,0.589,0.057],"1.15":[-2.721,0.572,0.056],"1.1667":[-2.619,0.552,0.056],"1.1833":[-2.493,0.529,0.056],"1.2":[-2.323,0.502,0.055],"1.2167":[-2.083,0.485,0.057],"1.2333":[-1.799,0.462,0.056],"1.25":[-1.514,0.408,0.056],"1.2667":[-1.218,0.301,0.022],"1.2833":[-0.899,0.163,-0.066],"1.3":[-0.569,0.016,-0.18],"1.3167":[-0.273,-0.117,-0.294],"1.3333":[-0.044,-0.213,-0.382],"1.35":[0.083,-0.249,-0.418],"1.3667":[0.13,-0.228,-0.392],"1.3833":[0.148,-0.186,-0.34],"1.4":[0.148,-0.137,-0.28],"1.4167":[0.139,-0.087,-0.219],"1.4333":[0.12,-0.024,-0.15],"1.45":[0.092,0.032,-0.072],"1.4667":[0.059,0.095,-0.003],"1.4833":[0.026,0.145,0.057],"1.5":[-0.007,0.18,0.1],"1.5167":[-0.035,0.187,0.118],"1.5333":[-0.053,0.18,0.109],"1.55":[-0.077,0.166,0.1],"1.5667":[-0.091,0.138,0.083],"1.5833":[-0.11,0.11,0.074],"1.6":[-0.119,0.081,0.057],"1.6167":[-0.122,0.053,0.039],"1.6333":[-0.117,0.032,0.021],"1.65":[-0.107,0.008,0.003],"1.6667":[-0.097,-0.01,-0.018],"1.6833":[-0.087,-0.018,-0.032],"1.7":[-0.072,-0.018,-0.043],"1.7167":[-0.057,-0.018,-0.054],"1.7333":[-0.047,-0.016,-0.054],"1.75":[-0.032,-0.013,-0.054],"1.7667":[-0.017,-0.01,-0.05],"1.7833":[-0.002,-0.008,-0.043],"1.8":[0.008,-0.005,-0.036],"1.8167":[0.013,-0.002,-0.029],"1.8333":[0.013,0,-0.018],"1.85":[0.008,0.003,-0.011],"1.8667":[0.008,0.003,0],"1.8833":[0.008,0.005,0.008],"1.9":[0.004,0.005,0.013],"1.9167":[0.004,0.005,0.018],"1.9333":[-0.001,0.005,0.018],"1.9667":[-0.001,0.005,0.018],"1.9833":[-0.001,0.003,0.018],"2.0":[-0.001,0.003,0.013],"2.0167":[-0.001,0.003,0.013],"2.0333":[-0.001,0.003,0.008],"2.05":[-0.001,0.001,0.008],"2.0667":[-0.001,0.001,0.004],"2.1":[-0.001,0.001,0.004],"2.1167":[-0.001,-0.001,-0.001],"2.1333":[-0.001,-0.001,-0.001]}},"angel":{"scale":0}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_melee_2"},"0.75":{"effect":"melee.annihil.annihil_rotate_2"}}},"melee_2_angel":{"loop":true,"animation_length":2.1333,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[80.837,36.222,150.299],"0.0167":[80.837,36.221,150.3],"0.0333":[80.826,36.219,150.29],"0.05":[80.828,36.222,150.281],"0.0667":[80.804,36.214,150.271],"0.0833":[80.708,36.179,150.258],"0.1":[77.489,35.432,150.065],"0.1167":[69.545,33.489,149.973],"0.1333":[59.075,30.707,150.781],"0.15":[48.032,27.633,152.962],"0.1667":[37.817,24.81,156.361],"0.1833":[29.423,22.565,160.23],"0.2":[23.722,20.944,163.364],"0.2167":[21.473,19.786,164.396],"0.2333":[21.274,18.792,163.915],"0.25":[21.195,17.74,163.379],"0.2667":[21.234,16.634,162.783],"0.2833":[21.389,15.477,162.126],"0.3":[21.659,14.275,161.404],"0.3167":[22.043,13.033,160.615],"0.3333":[22.542,11.756,159.757],"0.35":[23.156,10.451,158.829],"0.3667":[23.886,9.124,157.828],"0.3833":[24.734,7.782,156.753],"0.4":[25.702,6.433,155.604],"0.4167":[26.792,5.086,154.379],"0.4333":[28.004,3.749,153.078],"0.45":[29.342,2.432,151.7],"0.4667":[30.805,1.145,150.246],"0.4833":[32.396,-0.102,148.716],"0.5":[34.115,-1.298,147.112],"0.5167":[35.962,-2.432,145.435],"0.5333":[37.934,-3.491,143.69],"0.55":[40.03,-4.466,141.88],"0.5667":[42.246,-5.344,140.011],"0.5833":[44.578,-6.115,138.089],"0.6":[47.018,-6.767,136.125],"0.6167":[49.559,-7.292,134.126],"0.6333":[52.192,-7.681,132.105],"0.65":[54.906,-7.925,130.075],"0.6667":[57.69,-8.02,128.049],"0.6833":[60.531,-7.961,126.042],"0.7":[63.416,-7.745,124.069],"0.7167":[66.333,-7.372,122.146],"0.7333":[69.269,-6.843,120.288],"0.75":[72.21,-6.161,118.509],"0.7667":[75.148,-5.331,116.824],"0.7833":[78.071,-4.36,115.245],"0.8":[80.971,-3.255,113.783],"0.8167":[83.84,-2.027,112.449],"0.8333":[86.674,-0.685,111.251],"0.85":[89.468,0.758,110.194],"0.8667":[92.219,2.292,109.285],"0.8833":[94.925,3.903,108.527],"0.9":[97.587,5.579,107.922],"0.9167":[100.205,7.308,107.472],"0.9333":[102.778,9.076,107.176],"0.95":[105.31,10.872,107.033],"0.9667":[107.8,12.683,107.041],"0.9833":[110.252,14.499,107.195],"1.0":[112.665,16.309,107.493],"1.0167":[115.04,18.103,107.928],"1.0333":[117.379,19.871,108.495],"1.05":[119.68,21.607,109.184],"1.0667":[121.942,23.302,109.988],"1.0833":[124.164,24.951,110.898],"1.1":[126.341,26.55,111.901],"1.1167":[128.471,28.095,112.985],"1.1333":[130.548,29.584,114.139],"1.15":[133.443,32.393,114.02],"1.1667":[137.645,37.176,113.152],"1.1833":[142.772,42.36,113.834],"1.2":[148.423,45.613,116.982],"1.2167":[155.162,45.916,122.488],"1.2333":[162.604,44.182,129.043],"1.25":[168.82,41.24,134.657],"1.2667":[172.838,38.418,138.303],"1.2833":[174.263,37.174,139.594],"1.3":[174.2,35.309,137.738],"1.3167":[173.982,31.609,133.964],"1.3333":[173.591,27.026,129.357],"1.35":[172.958,22.313,124.389],"1.3667":[171.992,18.865,119.451],"1.3833":[171.057,16.074,115.652],"1.4":[170.466,13.709,113.833],"1.4167":[170.006,11.681,112.912],"1.4333":[169.616,10.066,112.735],"1.45":[169.3,9.012,113.564],"1.4667":[169.077,8.424,115.161],"1.4833":[168.885,7.971,116.637],"1.5":[168.705,7.452,117.869],"1.5167":[168.557,6.941,119.191],"1.5333":[168.418,6.507,120.405],"1.55":[168.256,6.214,121.318],"1.5667":[168.042,6.125,121.73],"1.5833":[167.776,6.188,121.804],"1.6":[167.505,6.293,121.844],"1.6167":[167.267,6.411,121.858],"1.6333":[167.095,6.504,121.858],"1.65":[167.029,6.543,121.858],"1.6667":[167.046,6.626,121.799],"1.6833":[167.09,6.816,121.637],"1.7":[167.137,7.033,121.399],"1.7167":[167.161,7.196,121.112],"1.7333":[167.156,7.27,120.733],"1.75":[167.134,7.305,120.265],"1.7667":[167.101,7.339,119.804],"1.7833":[167.06,7.412,119.446],"1.8":[167.006,7.537,119.191],"1.8167":[166.94,7.69,118.98],"1.8333":[166.869,7.856,118.818],"1.85":[166.805,8.019,118.71],"1.8667":[166.759,8.16,118.658],"1.8833":[166.736,8.261,118.655],"1.9":[166.729,8.323,118.681],"1.9167":[166.724,8.359,118.722],"1.9333":[166.705,8.386,118.764],"1.95":[166.666,8.365,118.819],"1.9667":[166.619,8.278,118.894],"1.9833":[166.576,8.171,118.974],"2.0":[166.548,8.089,119.039],"2.0167":[166.538,8.045,119.086],"2.0333":[166.539,8.013,119.124],"2.05":[166.543,7.992,119.154],"2.0667":[166.541,7.975,119.178],"2.0833":[166.531,7.966,119.195],"2.1":[166.516,7.965,119.206],"2.1167":[166.503,7.968,119.214],"2.1333":[166.498,7.97,119.221]},"position":{"0.0":[23.26,33.141,-6.362],"0.0167":[23.26,32.667,-5.447],"0.0333":[23.257,31.488,-3.263],"0.05":[23.259,29.976,-0.66],"0.0667":[23.251,28.497,1.528],"0.0833":[23.217,27.42,2.469],"0.1":[22.986,26.671,2.535],"0.1167":[22.478,25.977,2.619],"0.1333":[21.825,25.382,2.667],"0.15":[21.164,24.875,2.64],"0.1667":[20.555,24.435,2.561],"0.1833":[20.012,24.091,2.472],"0.2":[19.597,23.865,2.381],"0.2167":[19.367,23.783,2.294],"0.2333":[19.252,23.779,2.21],"0.25":[19.142,23.775,2.126],"0.2667":[19.036,23.77,2.04],"0.2833":[18.934,23.765,1.953],"0.3":[18.837,23.761,1.865],"0.3167":[18.743,23.756,1.776],"0.3333":[18.654,23.752,1.685],"0.35":[18.569,23.748,1.594],"0.3667":[18.488,23.745,1.5],"0.3833":[18.411,23.744,1.406],"0.4":[18.337,23.743,1.31],"0.4167":[18.267,23.745,1.212],"0.4333":[18.201,23.748,1.113],"0.45":[18.138,23.753,1.012],"0.4667":[18.079,23.761,0.909],"0.4833":[18.023,23.771,0.805],"0.5":[17.97,23.784,0.698],"0.5167":[17.921,23.8,0.59],"0.5333":[17.874,23.82,0.479],"0.55":[17.83,23.843,0.366],"0.5667":[17.788,23.871,0.251],"0.5833":[17.749,23.902,0.133],"0.6":[17.712,23.938,0.013],"0.6167":[17.677,23.979,-0.11],"0.6333":[17.643,24.025,-0.236],"0.65":[17.611,24.076,-0.364],"0.6667":[17.581,24.133,-0.495],"0.6833":[17.551,24.196,-0.629],"0.7":[17.521,24.265,-0.766],"0.7167":[17.493,24.341,-0.906],"0.7333":[17.464,24.423,-1.048],"0.75":[17.435,24.512,-1.193],"0.7667":[17.405,24.609,-1.341],"0.7833":[17.374,24.713,-1.492],"0.8":[17.343,24.825,-1.645],"0.8167":[17.31,24.944,-1.8],"0.8333":[17.276,25.072,-1.958],"0.85":[17.24,25.209,-2.118],"0.8667":[17.202,25.353,-2.28],"0.8833":[17.161,25.507,-2.444],"0.9":[17.118,25.67,-2.61],"0.9167":[17.073,25.842,-2.777],"0.9333":[17.025,26.023,-2.947],"0.95":[16.974,26.214,-3.117],"0.9667":[16.92,26.414,-3.289],"0.9833":[16.863,26.624,-3.462],"1.0":[16.803,26.844,-3.636],"1.0167":[16.754,27.29,-3.869],"1.0333":[16.723,28.113,-4.203],"1.05":[16.695,29.219,-4.611],"1.0667":[16.658,30.511,-5.067],"1.0833":[16.596,31.894,-5.545],"1.1":[16.497,33.273,-6.019],"1.1167":[16.348,34.552,-6.463],"1.1333":[16.133,35.636,-6.851],"1.15":[15.789,36.495,-7.17],"1.1667":[15.27,37.194,-7.434],"1.1833":[14.587,37.774,-7.659],"1.2":[13.755,38.279,-7.859],"1.2167":[12.761,38.735,-8.031],"1.2333":[11.628,39.135,-8.174],"1.25":[10.417,39.478,-8.304],"1.2667":[9.188,39.759,-8.438],"1.2833":[8.005,39.976,-8.593],"1.3":[6.837,40.082,-8.819],"1.3167":[5.766,40.095,-9.055],"1.3333":[4.856,40.026,-9.25],"1.35":[4.203,39.895,-9.351],"1.3667":[3.949,39.745,-9.31],"1.3833":[3.913,39.592,-9.254],"1.4":[3.96,39.443,-9.225],"1.4167":[4.076,39.303,-9.203],"1.4333":[4.224,39.24,-9.196],"1.45":[4.425,39.242,-9.218],"1.4667":[4.658,39.25,-9.261],"1.4833":[4.822,39.274,-9.305],"1.5":[4.901,39.317,-9.342],"1.5167":[4.95,39.376,-9.381],"1.5333":[4.976,39.442,-9.419],"1.55":[4.987,39.505,-9.453],"1.5667":[4.989,39.556,-9.481],"1.5833":[4.978,39.597,-9.502],"1.6":[4.947,39.635,-9.519],"1.6167":[4.906,39.665,-9.533],"1.6333":[4.861,39.686,-9.545],"1.65":[4.821,39.693,-9.556],"1.6667":[4.784,39.691,-9.565],"1.6833":[4.746,39.685,-9.57],"1.7":[4.709,39.674,-9.573],"1.7167":[4.675,39.66,-9.574],"1.7333":[4.643,39.641,-9.573],"1.75":[4.612,39.617,-9.569],"1.7667":[4.586,39.592,-9.564],"1.7833":[4.568,39.573,-9.559],"1.8":[4.559,39.558,-9.554],"1.8167":[4.553,39.546,-9.547],"1.8333":[4.55,39.536,-9.541],"1.85":[4.549,39.528,-9.534],"1.8667":[4.548,39.52,-9.528],"1.8833":[4.549,39.514,-9.523],"1.9":[4.551,39.51,-9.52],"1.9167":[4.554,39.508,-9.517],"1.9333":[4.557,39.508,-9.516],"1.95":[4.559,39.508,-9.516],"1.9667":[4.561,39.51,-9.516],"1.9833":[4.563,39.512,-9.517],"2.0":[4.565,39.514,-9.518],"2.0167":[4.566,39.515,-9.519],"2.0333":[4.566,39.517,-9.52],"2.05":[4.566,39.519,-9.522],"2.0667":[4.567,39.521,-9.523],"2.0833":[4.566,39.522,-9.524],"2.1":[4.564,39.524,-9.525],"2.1167":[4.563,39.525,-9.526],"2.1333":[4.562,39.525,-9.526]}},"righthand":{"rotation":{"0.0":[0.393,-137.018,78.276],"0.1167":[0.393,-137.018,78.276],"0.1333":[-9.576,-128.878,75.852],"0.15":[-20.984,-120.675,75.011],"0.1667":[-36.828,-111.116,76.857],"0.1833":[-55.006,-105.244,82.593],"0.2":[-43.373,-116.49,67.639],"0.2167":[-45.315,-150.63,52.774],"0.2333":[-50.23,-169.853,43.418],"0.25":[-54.949,-171.176,41.045],"0.2667":[-67.1,-168.302,38.656],"0.2833":[-105.014,-160.517,47.62],"0.3":[-150.703,-163.471,58.728],"0.3167":[-187.087,-153.81,47.414],"0.3333":[-197.839,-175.893,58.269],"0.35":[-184.649,-186.017,68.145],"0.3667":[-172.086,-188.987,75.897],"0.3833":[-169.807,-190.046,77.858],"0.4":[-169.454,-190.968,78.729],"0.4167":[-170.286,-191.568,78.712],"0.4333":[-171.536,-191.596,78.052],"0.45":[-172.405,-190.806,77.027],"0.4667":[-172.086,-188.987,75.897],"0.4833":[-170.787,-186.421,74.668],"0.5":[-169.257,-183.553,73.214],"0.5167":[-167.496,-180.449,71.532],"0.5333":[-165.504,-177.179,69.619],"0.55":[-163.28,-173.812,67.473],"0.5667":[-160.824,-170.419,65.095],"0.5833":[-158.141,-167.066,62.488],"0.6":[-155.243,-163.821,59.663],"0.6167":[-152.152,-160.746,56.641],"0.6333":[-148.899,-157.895,53.453],"0.65":[-145.537,-155.316,50.151],"0.6667":[-142.132,-153.043,46.803],"0.6833":[-138.769,-151.097,43.491],"0.7":[-135.549,-149.483,40.317],"0.7167":[-132.582,-148.193,37.389],"0.7333":[-129.983,-147.207,34.823],"0.75":[-128.2,-146.594,33.05],"0.7667":[-127.484,-146.345,32.308],"0.7833":[-127.615,-146.355,32.392],"0.8":[-128.351,-146.555,33.066],"0.8167":[-129.439,-146.884,34.092],"0.8333":[-130.63,-147.279,35.229],"0.85":[-131.686,-147.659,36.25],"0.8667":[-132.377,-147.933,36.938],"0.8833":[-132.481,-148.002,37.08],"0.9":[-131.768,-147.779,36.456],"0.9167":[-129.983,-147.207,34.823],"0.9333":[-126.987,-146.289,31.913],"0.95":[-122.889,-145.21,27.754],"0.9667":[-117.799,-144.232,22.542],"0.9833":[-111.905,-143.604,16.542],"1.0":[-105.483,-143.518,10.11],"1.0167":[-98.884,-144.072,3.673],"1.0333":[-92.467,-145.25,-2.334],"1.05":[-86.534,-146.93,-7.529],"1.0667":[-81.293,-148.908,-11.627],"1.0833":[-76.862,-150.938,-14.433],"1.1":[-73.15,-152.493,-14.971],"1.1167":[-69.9,-153.423,-13.141],"1.1333":[-67.019,-154.158,-10.029],"1.15":[-64.446,-155.242,-6.651],"1.1667":[-62.106,-157.304,-3.985],"1.1833":[-61.194,-163.595,-2.078],"1.2":[-61.062,-171.592,-1.056],"1.2167":[-60.588,-177.381,-1.733],"1.2333":[-60.293,-182.748,-2.888],"1.25":[-59.902,-188.142,-2.163],"1.2667":[-57.799,-193.601,8.869],"1.2833":[-55.685,-192.665,23.565],"1.3":[-53.331,-189.607,37.577],"1.3167":[-49.065,-184.43,48.194],"1.3333":[-44.926,-178.796,56.699],"1.35":[-41.35,-175.494,64.398],"1.3667":[-38.799,-172.585,70.546],"1.3833":[-38.75,-169.149,74.46],"1.4":[-39.811,-165.597,77.072],"1.4167":[-41.259,-161.599,78.867],"1.4333":[-42.864,-157.56,80.14],"1.45":[-44.323,-153.641,81.292],"1.4667":[-45.201,-150.189,82.176],"1.4833":[-45.048,-147.432,82.795],"1.5":[-44.412,-145.005,83.207],"1.5167":[-43.633,-142.95,83.46],"1.5333":[-42.57,-141.543,83.38],"1.55":[-41.49,-140.927,83.2],"1.5667":[-40.82,-140.906,83.273],"1.5833":[-40.301,-141.209,83.425],"1.6":[-39.902,-141.56,83.595],"1.6167":[-39.621,-141.898,83.754],"1.6333":[-39.455,-142.283,83.928],"1.65":[-39.382,-142.631,84.134],"1.6667":[-39.427,-142.909,84.406],"1.6833":[-39.558,-143.148,84.704],"1.7":[-39.696,-143.375,84.974],"1.7167":[-39.807,-143.599,85.19],"1.7333":[-39.916,-143.805,85.369],"1.75":[-40.031,-143.976,85.522],"1.7667":[-40.143,-144.066,85.609],"1.7833":[-40.237,-144.089,85.636],"1.8":[-40.291,-144.082,85.623],"1.8167":[-40.33,-144.055,85.591],"1.8333":[-40.375,-144.028,85.576],"1.85":[-40.432,-144.009,85.594],"1.8667":[-40.488,-143.985,85.626],"1.8833":[-40.547,-143.965,85.663],"1.9":[-40.605,-143.942,85.695],"1.9167":[-40.651,-143.918,85.725],"1.9333":[-40.677,-143.893,85.751],"1.95":[-40.691,-143.869,85.773],"1.9667":[-40.7,-143.842,85.787],"1.9833":[-40.705,-143.816,85.801],"2.0":[-40.706,-143.789,85.805],"2.0167":[-40.699,-143.76,85.8],"2.0333":[-40.702,-143.732,85.801],"2.05":[-40.701,-143.704,85.798],"2.0667":[-40.693,-143.676,85.792],"2.0833":[-40.687,-143.646,85.787],"2.1":[-40.682,-143.618,85.783],"2.1167":[-40.681,-143.59,85.783],"2.1333":[-40.675,-143.561,85.776]},"position":{"0.0":[-3.672,34.343,-9.374],"0.1167":[-3.672,34.343,-9.374],"0.1333":[-2.093,37.383,-10.177],"0.15":[-0.987,39.571,-11.312],"0.1667":[0.374,42.446,-12.559],"0.1833":[1.216,44.873,-13.751],"0.2":[0.507,45.792,-14.726],"0.2167":[-0.727,45.978,-15.636],"0.2333":[-1.744,45.283,-16.613],"0.25":[-3.718,43.781,-16.872],"0.2667":[-8.255,40.084,-16.45],"0.2833":[-13.089,36.595,-14.804],"0.3":[-19.253,32.388,-10.751],"0.3167":[-23.714,28.608,-5.879],"0.3333":[-23.308,31.256,-0.296],"0.35":[-24.464,31.923,3.917],"0.3667":[-25.463,32.341,6.228],"0.3833":[-25.64,33.195,6.134],"0.4":[-25.671,34.188,5.518],"0.4167":[-25.611,35.204,4.564],"0.4333":[-25.519,36.125,3.46],"0.45":[-25.451,36.834,2.392],"0.4667":[-25.463,37.212,1.545],"0.4833":[-25.54,37.357,0.862],"0.5":[-25.628,37.444,0.161],"0.5167":[-25.724,37.481,-0.552],"0.5333":[-25.827,37.474,-1.272],"0.55":[-25.936,37.428,-1.993],"0.5667":[-26.048,37.35,-2.711],"0.5833":[-26.163,37.247,-3.421],"0.6":[-26.279,37.124,-4.117],"0.6167":[-26.393,36.988,-4.794],"0.6333":[-26.506,36.845,-5.448],"0.65":[-26.614,36.701,-6.073],"0.6667":[-26.717,36.563,-6.664],"0.6833":[-26.813,36.435,-7.216],"0.7":[-26.9,36.326,-7.723],"0.7167":[-26.977,36.241,-8.182],"0.7333":[-27.041,36.186,-8.586],"0.75":[-27.09,36.149,-8.869],"0.7667":[-27.12,36.116,-8.99],"0.7833":[-27.135,36.088,-8.984],"0.8":[-27.138,36.066,-8.887],"0.8167":[-27.13,36.051,-8.733],"0.8333":[-27.116,36.045,-8.558],"0.85":[-27.098,36.048,-8.397],"0.8667":[-27.079,36.063,-8.284],"0.8833":[-27.061,36.09,-8.254],"0.9":[-27.048,36.13,-8.343],"0.9167":[-27.041,36.186,-8.586],"0.9333":[-27.061,36.237,-8.989],"0.95":[-27.112,36.272,-9.52],"0.9667":[-27.182,36.305,-10.156],"0.9833":[-27.256,36.347,-10.872],"1.0":[-27.321,36.411,-11.646],"1.0167":[-27.362,36.511,-12.452],"1.0333":[-27.365,36.658,-13.269],"1.05":[-27.317,36.865,-14.072],"1.0667":[-27.203,37.145,-14.837],"1.0833":[-27.01,37.51,-15.541],"1.1":[-26.344,38.47,-16.17],"1.1167":[-25.157,40.051,-16.732],"1.1333":[-23.953,41.545,-17.236],"1.15":[-22.919,42.638,-17.63],"1.1667":[-21.783,43.582,-17.93],"1.1833":[-20.487,44.486,-18.2],"1.2":[-18.945,45.217,-18.404],"1.2167":[-17.132,45.746,-18.574],"1.2333":[-15.174,46.166,-18.708],"1.25":[-13.063,46.441,-18.716],"1.2667":[-10.182,45.982,-18.057],"1.2833":[-6.731,44.872,-17.487],"1.3":[-2.94,42.49,-16.871],"1.3167":[-1.081,40.852,-16.062],"1.3333":[-0.24,39.589,-15.237],"1.35":[-0.619,38.909,-14.403],"1.3667":[-1.241,38.445,-13.743],"1.3833":[-1.85,38.198,-13.508],"1.4":[-2.402,38.111,-13.536],"1.4167":[-2.739,38.13,-13.793],"1.4333":[-2.952,38.244,-14.138],"1.45":[-3.071,38.444,-14.426],"1.4667":[-3.112,38.678,-14.641],"1.4833":[-3.115,38.894,-14.735],"1.5":[-3.094,39.108,-14.776],"1.5167":[-3.063,39.298,-14.801],"1.5333":[-3.016,39.446,-14.806],"1.55":[-2.966,39.538,-14.79],"1.5667":[-2.933,39.577,-14.772],"1.5833":[-2.907,39.59,-14.751],"1.6":[-2.886,39.59,-14.732],"1.6167":[-2.87,39.578,-14.717],"1.6333":[-2.859,39.554,-14.703],"1.65":[-2.853,39.53,-14.693],"1.6667":[-2.854,39.51,-14.69],"1.6833":[-2.858,39.491,-14.689],"1.7":[-2.865,39.474,-14.691],"1.7167":[-2.873,39.462,-14.692],"1.7333":[-2.882,39.453,-14.693],"1.75":[-2.892,39.445,-14.695],"1.7667":[-2.899,39.441,-14.698],"1.7833":[-2.905,39.44,-14.702],"1.8":[-2.908,39.44,-14.704],"1.8167":[-2.911,39.442,-14.707],"1.8333":[-2.913,39.444,-14.709],"1.85":[-2.914,39.446,-14.711],"1.8667":[-2.914,39.448,-14.711],"1.8833":[-2.914,39.45,-14.712],"1.9":[-2.913,39.452,-14.712],"1.9167":[-2.913,39.454,-14.712],"1.9333":[-2.913,39.456,-14.712],"1.95":[-2.911,39.457,-14.712],"1.9667":[-2.91,39.458,-14.711],"1.9833":[-2.909,39.459,-14.711],"2.0":[-2.908,39.459,-14.711],"2.0167":[-2.906,39.46,-14.709],"2.0333":[-2.905,39.459,-14.709],"2.05":[-2.905,39.459,-14.709],"2.0667":[-2.904,39.459,-14.709],"2.0833":[-2.903,39.459,-14.708],"2.1":[-2.903,39.458,-14.708],"2.1167":[-2.904,39.457,-14.709],"2.1333":[-2.904,39.457,-14.709]}},"annihil":{"rotation":{"0.0":[-5.465,-176.444,-81.146],"0.0167":[-5.273,-167.929,-80.743],"0.0333":[-5.098,-159.496,-80.374],"0.05":[-5.056,-150.896,-79.957],"0.0667":[-5.324,-141.881,-79.349],"0.0833":[-6.342,-132.008,-78.131],"0.1":[-8.568,-121.581,-75.822],"0.1167":[-12.612,-111.484,-71.778],"0.1333":[-23.815,-101.592,-60.663],"0.15":[-90.064,-94.696,5.433],"0.1667":[-155.585,-100.627,70.807],"0.1833":[-168.591,-107.566,83.748],"0.2":[-162.151,-109.64,74.497],"0.2167":[-168.793,-142.118,63.344],"0.2333":[-170.795,-161.708,53.575],"0.25":[-174.736,-163.942,51.15],"0.2667":[-187.072,-163.807,49.404],"0.2833":[-225.572,-163.092,58.552],"0.3":[-269.179,-172.423,65.662],"0.3167":[-304.627,-165.98,49.108],"0.3333":[-314.759,-188.892,58.324],"0.35":[-300.605,-199.134,72.163],"0.3667":[-286.413,-201.423,84.716],"0.3833":[-282.976,-202.62,89.397],"0.4":[-281.6,-203.853,92.316],"0.4167":[-281.856,-204.847,93.194],"0.4333":[-283.345,-205.082,91.8],"0.45":[-285.518,-203.881,88.033],"0.4667":[-287.454,-200.603,81.944],"0.4833":[-279.617,-202.167,98.766],"0.5":[-272.577,-200.989,114.568],"0.5167":[-267.292,-197.896,128.939],"0.5333":[-264.094,-193.821,141.953],"0.55":[-262.899,-189.597,153.982],"0.5667":[-263.407,-185.898,165.439],"0.5833":[-265.217,-183.248,176.649],"0.6":[-267.841,-182.007,187.779],"0.6167":[-270.727,-182.364,198.877],"0.6333":[-273.278,-184.326,209.948],"0.65":[-274.933,-187.706,221.069],"0.6667":[-275.173,-192.141,232.462],"0.6833":[-273.54,-197.091,244.517],"0.7":[-269.652,-201.827,257.753],"0.7167":[-263.348,-205.42,272.623],"0.7333":[-263.983,-217.636,268.709],"0.75":[-261.255,-236.793,271.191],"0.7667":[-263.193,-256.872,270.767],"0.7833":[-264.172,-280.809,272.363],"0.8":[-268.971,-307.974,268.755],"0.8167":[-271.223,-336.831,268.343],"0.8333":[-275.895,-364.812,273.972],"0.85":[-290.525,-389.499,296.359],"0.8667":[-325.941,-392.839,335.947],"0.8833":[-358.126,-360.39,359.895],"0.9":[-383.963,-323.794,351.854],"0.9167":[-421.548,-313.633,314.524],"0.9333":[-450.428,-327.413,279.105],"0.95":[-459.985,-348.246,261.746],"0.9667":[-457.518,-364.994,257.424],"0.9833":[-450.013,-379.969,257.217],"1.0":[-442.74,-396.098,255.538],"1.0167":[-435.039,-412.742,252.574],"1.0333":[-424.398,-429.906,244.621],"1.05":[-361.284,-443.854,183.847],"1.0667":[-278.006,-432.315,101.966],"1.0833":[-267.567,-415.449,91.397],"1.1":[-264.195,-398.731,85.265],"1.1167":[-264.126,-382.62,79.203],"1.1333":[-267.495,-368.116,73.612],"1.15":[-273.416,-355.523,67.891],"1.1667":[-281.587,-344.672,60.628],"1.1833":[-292.806,-336.087,51.154],"1.2":[-307.552,-330.616,39.11],"1.2167":[-327.398,-332.045,25.744],"1.2333":[-346.899,-339.808,15.215],"1.25":[-361.553,-350.158,8.499],"1.2667":[-364.005,-364.671,14.13],"1.2833":[-364.701,-366.279,27.98],"1.3":[-365.435,-364.519,41.921],"1.3167":[-369.285,-359.049,52.136],"1.3333":[-373.055,-353.154,60.273],"1.35":[-376.463,-349.641,67.646],"1.3667":[-378.889,-346.592,73.564],"1.3833":[-378.75,-343.158,77.527],"1.4":[-377.453,-339.666,80.323],"1.4167":[-375.699,-335.756,82.377],"1.4333":[-373.738,-331.819,83.956],"1.45":[-371.891,-328.002,85.432],"1.4667":[-370.653,-324.616,86.589],"1.4833":[-370.547,-321.857,87.351],"1.5":[-370.978,-319.397,87.842],"1.5167":[-371.596,-317.295,88.142],"1.5333":[-372.59,-315.825,88.03],"1.55":[-373.698,-315.146,87.751],"1.5667":[-374.428,-315.083,87.73],"1.5833":[-375.027,-315.352,87.785],"1.6":[-375.5,-315.679,87.873],"1.6167":[-375.843,-315.999,87.965],"1.6333":[-376.064,-316.377,88.089],"1.65":[-376.175,-316.719,88.266],"1.6667":[-376.158,-316.996,88.519],"1.6833":[-376.039,-317.244,88.823],"1.7":[-375.909,-317.479,89.096],"1.7167":[-375.814,-317.707,89.311],"1.7333":[-375.708,-317.922,89.495],"1.75":[-375.603,-318.095,89.649],"1.7667":[-375.493,-318.192,89.745],"1.7833":[-375.39,-318.22,89.787],"1.8":[-375.332,-318.22,89.781],"1.8167":[-375.287,-318.192,89.756],"1.8333":[-375.236,-318.171,89.746],"1.85":[-375.178,-318.15,89.773],"1.8667":[-375.107,-318.136,89.815],"1.8833":[-375.043,-318.117,89.861],"1.9":[-374.979,-318.096,89.904],"1.9167":[-374.927,-318.075,89.941],"1.9333":[-374.897,-318.055,89.972],"1.95":[-374.88,-318.029,89.995],"1.9667":[-374.863,-318.004,90.018],"1.9833":[-374.859,-317.979,90.029],"2.0":[-374.859,-317.95,90.034],"2.0167":[-374.854,-317.925,90.037],"2.0333":[-374.854,-317.895,90.035],"2.05":[-374.854,-317.866,90.032],"2.0667":[-374.854,-317.837,90.032],"2.0833":[-374.859,-317.808,90.029],"2.1":[-374.863,-317.782,90.023],"2.1167":[-374.867,-317.753,90.02],"2.1333":[-374.872,-317.724,90.015]},"position":{"0.0":[16.25,46.474,-15.494],"0.0167":[15.693,48.747,-15.546],"0.0333":[15.122,50.945,-15.585],"0.05":[14.534,52.986,-15.617],"0.0667":[13.914,54.789,-15.646],"0.0833":[13.232,56.207,-15.659],"0.1":[12.501,57.236,-15.666],"0.1167":[11.774,58.03,-15.709],"0.1333":[11.048,58.681,-15.815],"0.15":[10.308,59.196,-15.952],"0.1667":[9.603,59.594,-16.069],"0.1833":[9.006,59.905,-16.126],"0.2":[8.507,60.058,-16.934],"0.2167":[6.607,58.916,-17.86],"0.2333":[5.404,57.935,-18.692],"0.25":[3.104,56.483,-19.058],"0.2667":[-1.769,52.588,-18.981],"0.2833":[-7.761,48.181,-17.399],"0.3":[-14.723,43.116,-12.112],"0.3167":[-18.583,38.88,-6.204],"0.3333":[-18.364,41.876,-0.07],"0.35":[-19.86,42.878,3.768],"0.3667":[-20.933,43.687,5.546],"0.3833":[-21.063,44.86,5.175],"0.4":[-21.053,46.115,4.351],"0.4167":[-20.992,47.265,3.303],"0.4333":[-20.941,48.129,2.268],"0.45":[-20.94,48.519,1.48],"0.4667":[-21.025,48.219,1.138],"0.4833":[-21.247,47.375,1.085],"0.5":[-21.488,46.249,1.001],"0.5167":[-21.707,44.852,0.824],"0.5333":[-21.86,43.209,0.491],"0.55":[-21.905,41.359,-0.045],"0.5667":[-21.807,39.348,-0.827],"0.5833":[-21.539,37.246,-1.876],"0.6":[-21.085,35.116,-3.189],"0.6167":[-20.439,33.031,-4.756],"0.6333":[-19.608,31.064,-6.546],"0.65":[-18.616,29.272,-8.504],"0.6667":[-17.497,27.709,-10.57],"0.6833":[-16.295,26.403,-12.674],"0.7":[-15.064,25.38,-14.738],"0.7167":[-13.862,24.642,-16.677],"0.7333":[-12.351,26.885,-17.924],"0.75":[-11.119,31.316,-18.951],"0.7667":[-10.826,35.744,-20.537],"0.7833":[-10.794,40.633,-22.867],"0.8":[-10.727,45.403,-25.219],"0.8167":[-10.809,50.795,-26.908],"0.8333":[-11.092,56.412,-27.353],"0.85":[-10.895,61.6,-26.449],"0.8667":[-10.337,65.357,-24.678],"0.8833":[-9.742,67.643,-22.538],"0.9":[-8.887,68.515,-20.836],"0.9167":[-8.664,68.577,-19.495],"0.9333":[-8.522,67.883,-18.356],"0.95":[-8.03,66.832,-17.795],"0.9667":[-7.776,65.781,-17.701],"0.9833":[-7.901,64.61,-17.921],"1.0":[-7.878,63.517,-18.56],"1.0167":[-7.794,62.576,-19.584],"1.0333":[-7.604,61.896,-20.924],"1.05":[-7.459,61.666,-22.439],"1.0667":[-7.306,61.894,-23.924],"1.0833":[-7.098,62.487,-25.198],"1.1":[-6.804,63.289,-26.139],"1.1167":[-6.484,64.175,-26.702],"1.1333":[-6.142,65.017,-26.903],"1.15":[-5.799,65.815,-26.797],"1.1667":[-5.498,66.518,-26.409],"1.1833":[-5.216,66.964,-25.741],"1.2":[-4.967,67.004,-24.785],"1.2167":[-4.527,66.005,-23.399],"1.2333":[-4.196,64.215,-21.809],"1.25":[-4.32,62.213,-20.811],"1.2667":[-2.028,60.416,-19.838],"1.2833":[1.122,58.501,-19.366],"1.3":[5.116,55.485,-18.826],"1.3167":[7.077,53.662,-17.966],"1.3333":[7.995,52.271,-17.078],"1.35":[7.712,51.398,-16.151],"1.3667":[7.144,50.76,-15.427],"1.3833":[6.518,50.432,-15.227],"1.4":[5.918,50.329,-15.33],"1.4167":[5.523,50.39,-15.671],"1.4333":[5.251,50.581,-16.096],"1.45":[5.076,50.868,-16.444],"1.4667":[5,51.185,-16.691],"1.4833":[4.991,51.459,-16.776],"1.5":[5.026,51.719,-16.792],"1.5167":[5.073,51.947,-16.786],"1.5333":[5.146,52.118,-16.753],"1.55":[5.222,52.21,-16.702],"1.5667":[5.272,52.234,-16.665],"1.5833":[5.316,52.221,-16.627],"1.6":[5.348,52.195,-16.597],"1.6167":[5.374,52.162,-16.574],"1.6333":[5.392,52.118,-16.557],"1.65":[5.401,52.073,-16.546],"1.6667":[5.403,52.037,-16.544],"1.6833":[5.396,52.002,-16.548],"1.7":[5.389,51.972,-16.554],"1.7167":[5.38,51.948,-16.559],"1.7333":[5.367,51.927,-16.564],"1.75":[5.357,51.911,-16.57],"1.7667":[5.348,51.903,-16.577],"1.7833":[5.339,51.903,-16.584],"1.8":[5.334,51.905,-16.589],"1.8167":[5.33,51.911,-16.593],"1.8333":[5.329,51.915,-16.596],"1.85":[5.325,51.917,-16.599],"1.8667":[5.323,51.919,-16.602],"1.8833":[5.324,51.921,-16.603],"1.9":[5.32,51.924,-16.605],"1.9167":[5.32,51.927,-16.607],"1.9333":[5.32,51.93,-16.607],"1.95":[5.324,51.93,-16.607],"1.9667":[5.324,51.932,-16.607],"1.9833":[5.324,51.932,-16.607],"2.0":[5.324,51.935,-16.607],"2.0167":[5.328,51.935,-16.605],"2.05":[5.328,51.935,-16.605],"2.0667":[5.328,51.938,-16.605],"2.0833":[5.328,51.938,-16.603],"2.1":[5.331,51.938,-16.603],"2.1333":[5.331,51.938,-16.603]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.013,-0.469,0.19],"0.0167":[-0.031,-0.469,0.157],"0.0333":[-0.053,-0.468,0.092],"0.05":[-0.082,-0.468,0.008],"0.0667":[-0.116,-0.467,-0.089],"0.0833":[-0.154,-0.465,-0.206],"0.1":[-0.19,-0.462,-0.336],"0.1167":[-0.223,-0.458,-0.473],"0.1333":[-0.257,-0.453,-0.616],"0.15":[-0.294,-0.445,-0.752],"0.1667":[-0.328,-0.435,-0.889],"0.1833":[-0.354,-0.424,-1.025],"0.2":[-0.378,-0.411,-1.142],"0.2167":[-0.388,-0.396,-1.246],"0.2333":[-0.353,-0.38,-1.337],"0.25":[-0.198,-0.367,-1.409],"0.2667":[0.079,-0.344,-1.449],"0.2833":[0.419,-0.267,-1.465],"0.3":[0.674,-0.127,-0.904],"0.3167":[0.758,0.019,0.084],"0.3333":[0.824,0.159,0.706],"0.35":[0.873,0.262,-0.084],"0.3667":[0.913,0.344,-0.866],"0.3833":[0.954,0.407,-0.262],"0.4":[0.992,0.456,0.402],"0.4167":[1.017,0.498,0.462],"0.4333":[1.032,0.528,0.403],"0.45":[1.039,0.554,0.284],"0.4667":[1.031,0.577,0.174],"0.4833":[1.016,0.599,0.072],"0.5":[0.993,0.618,-0.004],"0.5167":[0.968,0.629,-0.039],"0.5333":[0.94,0.64,-0.047],"0.55":[0.907,0.647,-0.058],"0.5667":[0.88,0.655,-0.062],"0.5833":[0.847,0.663,-0.06],"0.6":[0.814,0.67,-0.054],"0.6167":[0.781,0.676,-0.045],"0.6333":[0.742,0.682,-0.032],"0.65":[0.709,0.687,-0.019],"0.6667":[0.676,0.691,-0.005],"0.6833":[0.643,0.694,0.007],"0.7":[0.603,0.696,0.016],"0.7167":[0.57,0.697,0.022],"0.7333":[0.55,0.697,0.024],"0.75":[0.531,0.697,0.024],"0.7667":[0.458,0.697,0.026],"0.7833":[0.313,0.696,0.028],"0.8":[0.095,0.695,0.032],"0.8167":[-0.169,0.694,0.035],"0.8333":[-0.474,0.693,0.039],"0.85":[-0.812,0.691,0.042],"0.8667":[-1.15,0.69,0.046],"0.8833":[-1.488,0.688,0.049],"0.9":[-1.815,0.686,0.052],"0.9167":[-2.12,0.684,0.055],"0.9333":[-2.316,0.682,0.056],"0.95":[-2.469,0.68,0.056],"0.9667":[-2.6,0.677,0.056],"0.9833":[-2.698,0.674,0.056],"1.0":[-2.774,0.67,0.056],"1.0167":[-2.839,0.665,0.056],"1.0333":[-2.883,0.659,0.056],"1.05":[-2.916,0.652,0.056],"1.0667":[-2.927,0.643,0.056],"1.0833":[-2.915,0.632,0.057],"1.1":[-2.892,0.619,0.055],"1.1167":[-2.858,0.606,0.056],"1.1333":[-2.801,0.589,0.057],"1.15":[-2.721,0.572,0.056],"1.1667":[-2.619,0.552,0.056],"1.1833":[-2.493,0.529,0.056],"1.2":[-2.323,0.502,0.055],"1.2167":[-2.083,0.485,0.057],"1.2333":[-1.799,0.462,0.056],"1.25":[-1.514,0.408,0.056],"1.2667":[-1.218,0.301,0.022],"1.2833":[-0.899,0.163,-0.066],"1.3":[-0.569,0.016,-0.18],"1.3167":[-0.273,-0.117,-0.294],"1.3333":[-0.044,-0.213,-0.382],"1.35":[0.083,-0.249,-0.418],"1.3667":[0.13,-0.228,-0.392],"1.3833":[0.148,-0.186,-0.34],"1.4":[0.148,-0.137,-0.28],"1.4167":[0.139,-0.087,-0.219],"1.4333":[0.12,-0.024,-0.15],"1.45":[0.092,0.032,-0.072],"1.4667":[0.059,0.095,-0.003],"1.4833":[0.026,0.145,0.057],"1.5":[-0.007,0.18,0.1],"1.5167":[-0.035,0.187,0.118],"1.5333":[-0.053,0.18,0.109],"1.55":[-0.077,0.166,0.1],"1.5667":[-0.091,0.138,0.083],"1.5833":[-0.11,0.11,0.074],"1.6":[-0.119,0.081,0.057],"1.6167":[-0.122,0.053,0.039],"1.6333":[-0.117,0.032,0.021],"1.65":[-0.107,0.008,0.003],"1.6667":[-0.097,-0.01,-0.018],"1.6833":[-0.087,-0.018,-0.032],"1.7":[-0.072,-0.018,-0.043],"1.7167":[-0.057,-0.018,-0.054],"1.7333":[-0.047,-0.016,-0.054],"1.75":[-0.032,-0.013,-0.054],"1.7667":[-0.017,-0.01,-0.05],"1.7833":[-0.002,-0.008,-0.043],"1.8":[0.008,-0.005,-0.036],"1.8167":[0.013,-0.002,-0.029],"1.8333":[0.013,0,-0.018],"1.85":[0.008,0.003,-0.011],"1.8667":[0.008,0.003,0],"1.8833":[0.008,0.005,0.008],"1.9":[0.004,0.005,0.013],"1.9167":[0.004,0.005,0.018],"1.9333":[-0.001,0.005,0.018],"1.9667":[-0.001,0.005,0.018],"1.9833":[-0.001,0.003,0.018],"2.0":[-0.001,0.003,0.013],"2.0167":[-0.001,0.003,0.013],"2.0333":[-0.001,0.003,0.008],"2.05":[-0.001,0.001,0.008],"2.0667":[-0.001,0.001,0.004],"2.1":[-0.001,0.001,0.004],"2.1167":[-0.001,-0.001,-0.001],"2.1333":[-0.001,-0.001,-0.001]}},"devil":{"scale":0},"angel":{"position":[2,0,0]}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_melee_2"},"0.75":{"effect":"melee.annihil.annihil_rotate_2"}}},"melee_3":{"loop":true,"animation_length":3.2917,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-5.285,16.501,-98.429],"0.0417":[7.221,17.884,-94.718],"0.0833":[13.674,12.401,-93.35],"0.125":[16.978,8.442,-93.027],"0.1667":[21.133,2.38,-93.136],"0.2083":[23.749,-1.57,-93.474],"0.25":[26.389,-5.619,-94.39],"0.2917":[27.682,-8.881,-91.387],"0.3333":[22.418,-6.71,-74.171],"0.375":[19.014,-4.286,-65.829],"0.4167":[19.016,-6.603,-67.972],"0.4583":[19.441,-7.5,-68.584],"0.5":[21.658,-9.484,-78.49],"0.5417":[26.856,-11.569,-99.301],"0.5833":[50.806,-4.626,-164.543],"0.625":[59.259,8.316,-209.585],"0.6667":[87.288,-7.166,-236.165],"0.7083":[78.273,-1.689,-241.813],"0.75":[84.182,-0.242,-245.395],"0.7917":[83.87,0.666,-244.757],"0.8333":[83.6,-1.02,-245.322],"0.875":[84.164,-4.925,-247.468],"0.9167":[85.626,-12.485,-251.809],"0.9583":[87.201,-18.071,-255.325],"1.0":[90.657,-26.243,-261.339],"1.0417":[93.659,-30.968,-265.649],"1.0833":[100.863,-34.917,-272.636],"1.125":[110.691,-25.665,-273.364],"1.1667":[124.3,-12.969,-273.135],"1.2083":[131.648,-8.715,-275.038],"1.25":[141.153,-2.882,-278.456],"1.2917":[146.654,1.638,-280.47],"1.3333":[154.144,8.696,-283.333],"1.375":[158.542,13.52,-284.892],"1.4167":[163.81,20.684,-286.386],"1.4583":[164.85,25.072,-287.128],"1.5":[165.524,31.171,-287.86],"1.5417":[165.8,34.787,-287.767],"1.5833":[166.099,37.925,-287.173],"1.625":[166.155,39.955,-286.651],"1.6667":[166.098,42.847,-285.75],"1.7083":[166.012,44.637,-285.104],"1.75":[165.886,47.055,-284.118],"1.7917":[165.854,48.455,-283.47],"1.8333":[165.969,50.179,-282.54],"1.875":[166.21,51.044,-281.954],"1.9167":[166.918,51.859,-281.129],"1.9583":[168.777,50.608,-280.858],"2.0":[176.465,37.761,-281.642],"2.0417":[174.136,26.271,-281.05],"2.0833":[171.027,16.034,-284.259],"2.125":[173.883,16.356,-287.429],"2.1667":[170.571,11.124,-285.99],"2.2083":[155.311,13.273,-270.826],"2.25":[134.016,25.649,-249.942],"2.2917":[130.759,33.92,-244.209],"2.3333":[147.133,46.848,-240.355],"2.375":[159.561,45.704,-230.129],"2.4167":[173.581,37.306,-219.177],"2.4583":[173.732,31.651,-225.684],"2.5":[171.977,18.856,-240.551],"2.5417":[170.472,13.721,-246.192],"2.5833":[169.3,9.012,-246.435],"2.625":[168.877,7.914,-243.257],"2.6667":[168.402,6.551,-239.704],"2.7083":[168.051,6.063,-238.119],"2.75":[167.362,6.228,-237.834],"2.7917":[167.028,6.544,-238.141],"2.8333":[167.118,7.061,-238.638],"2.875":[167.152,7.275,-239.297],"2.9167":[167.056,7.412,-240.581],"2.9583":[166.94,7.689,-241.019],"3.0":[166.76,8.148,-241.331],"3.0417":[166.729,8.323,-241.318],"3.0833":[166.674,8.335,-241.155],"3.125":[166.582,8.159,-241.014],"3.1667":[166.539,8.014,-240.879],"3.2083":[166.542,7.976,-240.823],"3.25":[166.51,7.97,-240.787],"3.2917":[166.498,7.971,-240.779]},"position":{"0.0":[-0.801,26.597,-5.958],"0.0417":[0.69,29.019,-7.366],"0.0833":[1.583,30.445,-3.46],"0.125":[2.071,31.214,-0.555],"0.1667":[2.724,32.249,3.887],"0.2083":[3.158,32.947,6.688],"0.25":[3.953,34.427,7.605],"0.2917":[4.376,35.764,0.496],"0.3333":[6.812,40.329,-17.81],"0.375":[7.097,40.499,-16.557],"0.4167":[7.155,40.167,-16.102],"0.4583":[7.087,40.006,-16.115],"0.5":[7.152,39.686,-16.141],"0.5417":[7.54,39.455,-15.963],"0.5833":[8.92,40.464,-14.959],"0.625":[9.426,41.526,-14.611],"0.6667":[11.103,42.959,-15.011],"0.7083":[14.08,39.82,-4.317],"0.75":[15.516,42.869,13.947],"0.7917":[15.339,43.065,14.113],"0.8333":[15.45,42.341,11.412],"0.875":[16.057,41.147,8.388],"0.9167":[17.311,38.81,2.514],"0.9583":[18.213,37.056,-1.916],"1.0":[19.39,34.42,-8.682],"1.0417":[19.894,32.825,-12.896],"1.0833":[18.058,31.233,-18.484],"1.125":[15.314,33.252,-19.538],"1.1667":[11.616,36.343,-19.433],"1.2083":[9.862,37.545,-18.84],"1.25":[7.936,38.773,-17.837],"1.2917":[7.139,39.256,-17.358],"1.3333":[6.341,39.682,-16.686],"1.375":[5.94,39.868,-16.271],"1.4167":[5.361,40.136,-15.724],"1.4583":[5.176,40.174,-15.511],"1.5":[4.995,40.177,-15.247],"1.5417":[4.934,40.152,-15.108],"1.5833":[4.924,40.064,-14.958],"1.625":[4.922,40.022,-14.87],"1.6667":[4.931,39.968,-14.749],"1.7083":[4.944,39.928,-14.675],"1.75":[4.98,39.845,-14.568],"1.7917":[5.015,39.765,-14.497],"1.8333":[5.086,39.593,-14.385],"1.875":[5.146,39.435,-14.302],"1.9167":[5.258,39.121,-14.156],"1.9583":[5.413,38.734,-13.93],"2.0":[6.202,36.463,-13.276],"2.0417":[7.148,32.508,-13.246],"2.0833":[9.619,28.466,-11.558],"2.125":[10.761,29.353,-10.931],"2.1667":[12.224,30.133,-10.045],"2.2083":[13.763,32.001,-8.891],"2.25":[15.737,34.871,-7.215],"2.2917":[16.117,36.361,-6.789],"2.3333":[13.839,38.393,-7.718],"2.375":[11.725,39.19,-8.051],"2.4167":[8.067,40.014,-8.545],"2.4583":[5.784,40.108,-9.043],"2.5":[3.942,39.748,-9.321],"2.5417":[3.962,39.468,-9.221],"2.5833":[4.425,39.242,-9.218],"2.625":[4.823,39.285,-9.303],"2.6667":[4.976,39.439,-9.419],"2.7083":[4.989,39.551,-9.481],"2.75":[4.905,39.656,-9.533],"2.7917":[4.821,39.693,-9.556],"2.8333":[4.71,39.676,-9.573],"2.875":[4.644,39.641,-9.573],"2.9167":[4.569,39.573,-9.559],"2.9583":[4.553,39.546,-9.547],"3.0":[4.549,39.52,-9.528],"3.0417":[4.551,39.51,-9.52],"3.0833":[4.559,39.507,-9.515],"3.125":[4.563,39.511,-9.517],"3.1667":[4.566,39.517,-9.52],"3.2083":[4.566,39.521,-9.523],"3.25":[4.564,39.524,-9.526],"3.2917":[4.562,39.525,-9.527]}},"righthand":{"rotation":{"0.0":[20.956,35.653,-76.775],"0.0417":[20.956,35.653,-76.775],"0.0833":[50.222,-19.173,-61.388],"0.125":[108.798,-58.362,-108.715],"0.1667":[77.778,-56.883,-81.142],"0.2083":[64.383,-57.393,-75.948],"0.25":[94.296,-67.044,-119.464],"0.2917":[119.45,-56.987,-156.058],"0.3333":[100.164,-51.178,-136.989],"0.375":[93.141,-48.998,-123.671],"0.4167":[101.723,-54.088,-128.061],"0.4583":[102.366,-54.158,-130.202],"0.5":[108.321,-49.199,-148.312],"0.5417":[104.576,-33.455,-169.9],"0.5833":[82.754,-0.591,-217.604],"0.625":[68.062,8.505,-256.608],"0.6667":[74.056,9.983,-259.068],"0.7083":[60.612,10.843,-269.15],"0.75":[43.027,7.189,-259.67],"0.7917":[42.296,7.41,-259.063],"0.8333":[41.579,7.709,-258.556],"0.875":[41.359,11.392,-256.168],"0.9167":[44.344,26.35,-245.258],"0.9583":[52.217,38.205,-232.21],"1.0":[79.048,47.664,-203.153],"1.0417":[99.219,45.758,-187.604],"1.0833":[107.066,48.174,-171.139],"1.125":[108.178,47.561,-170.506],"1.1667":[108.987,47.059,-172.638],"1.2083":[108.58,48.064,-175.056],"1.25":[104.598,51.617,-183.438],"1.2917":[99.729,54.529,-191.742],"1.3333":[90.248,58.435,-206.123],"1.375":[84.213,60.42,-214.812],"1.4167":[81.138,61.218,-220.385],"1.4583":[82.738,60.024,-219.766],"1.5":[89.579,58.953,-216.205],"1.5417":[89.021,57.829,-219.722],"1.5833":[88.297,55.873,-224.109],"1.625":[87.791,55.251,-225.469],"1.6667":[86.564,54.564,-227.243],"1.7083":[84.556,54.679,-229.803],"1.75":[81.507,55.1,-233.639],"1.7917":[79.712,55.416,-235.93],"1.8333":[77.486,55.855,-238.976],"1.875":[73.882,57.14,-243.744],"1.9167":[63.93,59.754,-257.022],"1.9583":[54.921,61.008,-269.696],"2.0":[48.879,57.325,-284.242],"2.0417":[52.641,54.52,-285.559],"2.0833":[83.342,43.568,-270.449],"2.125":[108.549,41.081,-267.554],"2.1667":[130.018,34.226,-268.902],"2.2083":[167.625,12.179,-247.614],"2.25":[171.85,-54.77,-199.491],"2.2917":[130.833,-65.202,-144.355],"2.3333":[114.611,-47.222,-124.863],"2.375":[110.438,-35.866,-121.656],"2.4167":[125.725,-21.808,-109.83],"2.4583":[135.272,-11.32,-96.428],"2.5":[141.289,-18.295,-96.44],"2.5417":[139.604,-15.818,-95.215],"2.5833":[134.343,-28.409,-96.032],"2.625":[134.009,-33.945,-95.449],"2.6667":[137.574,-38.452,-97.61],"2.7083":[139.058,-38.904,-97.48],"2.75":[140.358,-38.135,-96.131],"2.7917":[140.616,-37.369,-95.862],"2.8333":[140.304,-36.626,-95.023],"2.875":[140.092,-36.191,-94.621],"2.9167":[139.764,-35.913,-94.364],"2.9583":[139.673,-35.947,-94.411],"3.0":[139.512,-36.016,-94.373],"3.0417":[139.387,-36.056,-94.298],"3.0833":[139.307,-36.13,-94.226],"3.125":[139.293,-36.182,-94.198],"3.1667":[139.296,-36.269,-94.196],"3.2083":[139.305,-36.329,-94.205],"3.25":[139.322,-36.429,-94.22],"3.2917":[139.326,-36.44,-94.223]},"position":{"0.0":[-25.014,36.733,2.476],"0.0417":[-25.014,36.733,2.476],"0.0833":[-17.875,36.717,0.002],"0.125":[-15.749,36.738,-1.929],"0.1667":[-12.098,37.603,3.137],"0.2083":[-11.322,37.129,5.342],"0.25":[-10.396,36.52,3.846],"0.2917":[-9.716,34.634,4.609],"0.3333":[-7.205,39.537,-13.651],"0.375":[-6.856,40.035,-12.291],"0.4167":[-6.903,39.48,-11.878],"0.4583":[-6.94,39.154,-11.924],"0.5":[-7.195,38.844,-12.096],"0.5417":[-7.698,38.386,-12.146],"0.5833":[-5.846,36.977,-11.507],"0.625":[-3.961,38.573,-11.584],"0.6667":[-2.489,39.783,-10.619],"0.7083":[-0.347,36.844,-0.394],"0.75":[-2.183,33.805,17.891],"0.7917":[-1.343,34.415,19.55],"0.8333":[-0.917,33.916,17.62],"0.875":[-2.455,31.166,11.485],"0.9167":[-5.929,25.35,-1.559],"0.9583":[-8.391,22.377,-9.093],"1.0":[-11.613,22.696,-12.709],"1.0417":[-13.675,25.817,-10.699],"1.0833":[-15.726,31.326,-7.032],"1.125":[-13.864,32.368,-7.2],"1.1667":[-10.949,33.434,-7.957],"1.2083":[-9.95,34.39,-8.414],"1.25":[-9.094,36.019,-9.089],"1.2917":[-8.729,37.143,-9.55],"1.3333":[-8.319,38.809,-10.232],"1.375":[-8.038,39.862,-10.667],"1.4167":[-7.599,41.131,-11.219],"1.4583":[-7.442,41.645,-11.466],"1.5":[-7.342,42.071,-11.672],"1.5417":[-7.311,42.292,-11.785],"1.5833":[-7.29,42.563,-11.94],"1.625":[-7.298,42.724,-12.032],"1.6667":[-7.324,42.967,-12.174],"1.7083":[-7.358,43.148,-12.294],"1.75":[-7.418,43.417,-12.475],"1.7917":[-7.466,43.61,-12.612],"1.8333":[-7.556,43.96,-12.884],"1.875":[-7.627,44.268,-13.12],"1.9167":[-7.817,44.917,-13.754],"1.9583":[-8.087,45.66,-14.727],"2.0":[-8.998,46.597,-16.892],"2.0417":[-9.938,46.789,-18.284],"2.0833":[-11.542,46.026,-19.096],"2.125":[-12.444,44.805,-18.326],"2.1667":[-13.358,43.32,-16.918],"2.2083":[-14.46,42.821,-15.624],"2.25":[-15.675,43.799,-14.509],"2.2917":[-15.177,44.795,-14.954],"2.3333":[-13.189,45.621,-15.645],"2.375":[-10.841,45.098,-16.332],"2.4167":[-5.303,41.969,-16.802],"2.4583":[-1.953,39.378,-16.119],"2.5":[-2.061,37.877,-13.743],"2.5417":[-2.776,37.97,-13.511],"2.5833":[-3.148,38.452,-14.427],"2.625":[-3.146,38.893,-14.735],"2.6667":[-3.012,39.445,-14.806],"2.7083":[-2.932,39.576,-14.772],"2.75":[-2.868,39.577,-14.717],"2.7917":[-2.851,39.529,-14.694],"2.8333":[-2.863,39.473,-14.691],"2.875":[-2.881,39.452,-14.693],"2.9167":[-2.903,39.439,-14.702],"2.9583":[-2.91,39.441,-14.707],"3.0":[-2.913,39.448,-14.711],"3.0417":[-2.914,39.452,-14.713],"3.0833":[-2.911,39.456,-14.712],"3.125":[-2.909,39.458,-14.711],"3.1667":[-2.906,39.459,-14.709],"3.2083":[-2.904,39.459,-14.709],"3.25":[-2.904,39.457,-14.709],"3.2917":[-2.903,39.457,-14.709]}},"annihil":{"rotation":{"0.0":[-118.74,15.225,-100.367],"0.0417":[-105.16,10.633,-100.268],"0.0833":[-98.324,5.835,-99.608],"0.125":[-94.641,2.288,-99.622],"0.1667":[-89.811,-3.2,-100.155],"0.2083":[-86.709,-6.778,-100.783],"0.25":[-83.53,-10.475,-102.001],"0.2917":[-81.779,-13.586,-99.197],"0.3333":[-87.368,-12.711,-81.468],"0.375":[-91.108,-10.624,-72.696],"0.4167":[-90.822,-12.713,-74.907],"0.4583":[-90.281,-13.411,-75.594],"0.5":[-87.429,-14.978,-85.784],"0.5417":[-82.239,-16.388,-107.142],"0.5833":[-70.682,-6.518,-175.224],"0.625":[-72.392,5.904,-228.913],"0.6667":[-76.787,9.864,-257.294],"0.7083":[-89.74,11.628,-266.153],"0.75":[-104.736,9.458,-252.224],"0.7917":[-102.214,11.251,-246.113],"0.8333":[-100.533,0.528,-242.274],"0.875":[-100.27,-15.152,-242.697],"0.9167":[-93.083,-36.255,-245.058],"0.9583":[-79.065,-47.825,-255.838],"1.0":[-39.725,-51.141,-298.568],"1.0417":[-22.587,-42.017,-328.268],"1.0833":[-5.722,-38.755,-350.891],"1.125":[1.982,-34.563,-360.597],"1.1667":[6.958,-32.926,-358.353],"1.2083":[9.582,-34.297,-354.918],"1.25":[14.239,-37.454,-360.717],"1.2917":[17.738,-41.493,-367.734],"1.3333":[25.665,-48.173,-380.228],"1.375":[31.335,-52.098,-388.401],"1.4167":[36.575,-55.219,-395.888],"1.4583":[38.082,-55.312,-397.643],"1.5":[37.767,-55.826,-397.467],"1.5417":[39.64,-56.256,-400.148],"1.5833":[44.843,-56.939,-406.742],"1.625":[46.659,-57.013,-409.462],"1.6667":[48.188,-56.661,-411.888],"1.7083":[49.467,-56.21,-413.587],"1.75":[50.574,-55.384,-415.089],"1.7917":[51.3,-55.078,-416.086],"1.8333":[53.992,-55.767,-419.698],"1.875":[59.405,-57.745,-426.599],"1.9167":[70,-60.131,-440.536],"1.9583":[67.819,-59.084,-440.27],"2.0":[69.852,-54.938,-449.069],"2.0417":[67.556,-51.305,-453.993],"2.0833":[39.026,-37.732,-448.385],"2.125":[10.728,-36.379,-448.326],"2.1667":[-40.713,-28.782,-439.049],"2.2083":[-73.56,-0.487,-427.038],"2.25":[-74.526,61.111,-407.808],"2.2917":[-50.428,81.475,-371.588],"2.3333":[24.964,71.021,-282.282],"2.375":[14.911,50.052,-279.046],"2.4167":[-1.966,15.753,-273.089],"2.4583":[-12.967,13.61,-266.993],"2.5":[-18.357,24.282,-273.227],"2.5417":[-16.763,21.716,-271.873],"2.5833":[-10.306,33.957,-271.648],"2.625":[-9.4,39.453,-270.697],"2.6667":[-12.755,44.177,-272.989],"2.7083":[-14.322,44.723,-273.028],"2.75":[-15.82,44.028,-271.918],"2.7917":[-16.176,43.281,-271.734],"2.8333":[-15.913,42.522,-270.907],"2.875":[-15.723,42.075,-270.503],"2.9167":[-15.392,41.776,-270.214],"2.9583":[-15.293,41.806,-270.251],"3.0":[-15.111,41.867,-270.185],"3.0417":[-14.979,41.901,-270.099],"3.0833":[-14.879,41.971,-270.004],"3.125":[-14.861,42.021,-269.971],"3.1667":[-14.855,42.107,-269.967],"3.2083":[-14.855,42.167,-269.967],"3.25":[-14.867,42.267,-269.98],"3.2917":[-14.873,42.277,-269.984]},"position":{"0.0":[-11.31,43.82,-4.771],"0.0417":[-7.493,41.872,-8.055],"0.0833":[-6.553,43.335,-4.3],"0.125":[-6.032,44.141,-1.451],"0.1667":[-5.335,45.233,2.939],"0.2083":[-4.875,45.967,5.716],"0.25":[-4.071,47.468,6.61],"0.2917":[-3.604,48.945,-0.497],"0.3333":[-1.026,54.006,-18.729],"0.375":[-0.573,54.424,-17.38],"0.4167":[-0.589,54.071,-16.87],"0.4583":[-0.683,53.911,-16.861],"0.5":[-0.885,53.276,-16.85],"0.5417":[-0.812,52.249,-16.699],"0.5833":[1.321,51.534,-16.801],"0.625":[2.903,52.429,-16.698],"0.6667":[3.749,53.535,-15.104],"0.7083":[6.653,50.591,-4.753],"0.75":[6.2,46.067,13.28],"0.7917":[7.025,45.714,14.157],"0.8333":[7.929,45.28,12.454],"0.875":[7.201,44.065,7.424],"0.9167":[5.264,40.381,-3.794],"0.9583":[3.593,37.804,-10.282],"1.0":[0.034,37.638,-13.52],"1.0417":[-3.428,40.404,-11.758],"1.0833":[-7.484,44.185,-8.319],"1.125":[-6.401,44.867,-8.612],"1.1667":[-3.075,46.506,-9.175],"1.2083":[-1.601,47.938,-9.422],"1.25":[-0.745,49.926,-9.969],"1.2917":[-0.466,51.216,-10.413],"1.3333":[-0.157,53.061,-11.077],"1.375":[0.072,54.203,-11.485],"1.4167":[0.434,55.525,-12.031],"1.4583":[0.543,56.055,-12.328],"1.5":[0.57,56.689,-12.511],"1.5417":[0.532,57.035,-12.637],"1.5833":[0.462,57.392,-12.911],"1.625":[0.406,57.571,-13.037],"1.6667":[0.334,57.831,-13.218],"1.7083":[0.267,58.038,-13.349],"1.75":[0.164,58.354,-13.531],"1.7917":[0.091,58.57,-13.661],"1.8333":[-0.034,58.925,-13.901],"1.875":[-0.155,59.245,-14.048],"1.9167":[-0.519,59.975,-14.484],"1.9583":[-1.015,60.852,-15.344],"2.0":[-2.39,61.927,-17.637],"2.0417":[-3.676,62.075,-19.27],"2.0833":[-6.407,60.968,-20.862],"2.125":[-8.345,59.574,-19.63],"2.1667":[-9.708,57.949,-17.783],"2.2083":[-10.443,57.714,-15.719],"2.25":[-10.044,59.437,-15.7],"2.2917":[-8.674,60.655,-17.407],"2.3333":[-4.692,60.485,-19.938],"2.375":[-1.645,58.689,-20.386],"2.4167":[3.039,54.575,-19.061],"2.4583":[6.143,51.436,-17.976],"2.5":[6.265,49.925,-15.525],"2.5417":[5.512,49.92,-15.34],"2.5833":[4.963,50.86,-16.493],"2.625":[4.939,51.453,-16.801],"2.6667":[5.143,52.152,-16.748],"2.7083":[5.263,52.257,-16.668],"2.75":[5.375,52.159,-16.576],"2.7917":[5.402,52.073,-16.546],"2.8333":[5.388,51.972,-16.554],"2.875":[5.369,51.925,-16.563],"2.9167":[5.34,51.902,-16.585],"2.9583":[5.33,51.91,-16.591],"3.0":[5.325,51.921,-16.602],"3.0417":[5.321,51.925,-16.607],"3.0833":[5.323,51.93,-16.607],"3.125":[5.324,51.933,-16.607],"3.1667":[5.328,51.936,-16.604],"3.2083":[5.329,51.936,-16.604],"3.25":[5.33,51.939,-16.604],"3.2917":[5.33,51.939,-16.604]}},"lefthand_1":{"rotation":{"0.0":[0,0,0],"0.625":[20.5764,-9.3073,23.307],"0.9583":[20.5764,-9.3073,23.307],"1.1667":[0,0,0],"1.4583":[-12.5,0,0],"2.125":[-12.5,0,0],"2.4583":[0,0,0]},"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"2.0":[0,0,0],"2.2083":[-30,0,0],"2.7083":[0,0,0]},"position":{"0.0":[0,2.5,0],"2.0":[0,2.5,0]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.843,0.672,-0.057],"0.0417":[0.843,0.667,-0.03],"0.0833":[0.847,0.639,0.044],"0.125":[0.851,0.611,0.111],"0.1667":[0.855,0.557,0.211],"0.2083":[0.856,0.513,0.271],"0.25":[0.657,0.334,0.33],"0.2917":[0.317,0.136,0.345],"0.3333":[-0.335,-0.104,-1.728],"0.375":[-0.58,-0.14,1.756],"0.4167":[-0.097,-0.063,-1.163],"0.4583":[0.031,0.076,-0.467],"0.5":[0.225,0.145,0.27],"0.5417":[0.395,0.04,0.474],"0.5833":[0.451,-0.227,0.733],"0.625":[0.121,-0.412,0.855],"0.6667":[-0.488,-0.605,0.944],"0.7083":[-0.184,-0.652,0.806],"0.75":[0.57,-0.664,-0.44],"0.7917":[0.656,-0.639,-0.771],"0.8333":[0.724,-0.571,-0.013],"0.875":[0.757,-0.5,0.215],"0.9167":[0.779,-0.363,0.291],"0.9583":[0.788,-0.262,0.26],"1.0":[0.81,-0.114,0.136],"1.0417":[0.836,-0.05,0.05],"1.0833":[0.914,-0.003,-0.021],"1.125":[1.02,-0.002,-0.019],"1.1667":[1.293,-0.002,-0.019],"1.2083":[1.486,-0.002,-0.019],"1.25":[1.727,-0.002,-0.019],"1.2917":[1.831,-0.002,-0.019],"1.3333":[1.952,0,-0.019],"1.375":[2,0.002,-0.019],"1.4167":[2.043,0.005,-0.019],"1.4583":[2.032,0.008,-0.019],"1.5":[1.964,0.013,-0.019],"1.5417":[1.885,0.017,-0.019],"1.5833":[1.726,0.023,-0.019],"1.625":[1.59,0.027,-0.019],"1.6667":[1.341,0.033,-0.019],"1.7083":[1.155,0.038,-0.019],"1.75":[0.814,0.044,-0.016],"1.7917":[0.544,0.048,-0.01],"1.8333":[0.131,0.054,0.007],"1.875":[-0.132,0.058,0.026],"1.9167":[-0.48,0.062,0.068],"1.9583":[-0.58,0.061,0.108],"2.0":[-0.484,-0.01,0.251],"2.0417":[-0.382,-0.122,0.376],"2.0833":[-0.242,-0.29,0.518],"2.125":[-0.258,-0.378,0.51],"2.1667":[-0.493,-0.434,0.244],"2.2083":[-0.676,-0.411,0.004],"2.25":[-0.848,-0.335,-0.264],"2.2917":[-0.769,-0.276,-0.337],"2.3333":[-0.459,-0.183,-0.397],"2.375":[-0.221,-0.115,-0.414],"2.4167":[0.08,-0.017,-0.417],"2.4583":[0.143,0.042,-0.336],"2.5":[0.123,0.119,-0.168],"2.5417":[0.075,0.157,-0.037],"2.5833":[-0.01,0.189,0.106],"2.625":[-0.048,0.184,0.106],"2.6667":[-0.096,0.124,0.082],"2.7083":[-0.115,0.075,0.058],"2.75":[-0.108,0.008,0.002],"2.7917":[-0.084,-0.019,-0.032],"2.8333":[-0.046,-0.016,-0.056],"2.875":[-0.023,-0.011,-0.051],"2.9167":[0.011,-0.004,-0.032],"2.9583":[0.011,0,-0.022],"3.0":[0.006,0.004,0.002],"3.0417":[0.006,0.006,0.016],"3.0833":[0.001,0.004,0.022],"3.125":[-0.004,0.004,0.016],"3.1667":[0.001,0.002,0.011],"3.2083":[0.001,0,0.005],"3.25":[0.001,0,-0.001],"3.2917":[0.001,0,-0.001]}},"angel":{"scale":0}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_melee_3"},"1.0417":{"effect":"melee.annihil.annihil_rotate_3"}}},"melee_3_angel":{"loop":true,"animation_length":3.2917,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-5.285,16.501,-98.429],"0.0417":[7.221,17.884,-94.718],"0.0833":[13.674,12.401,-93.35],"0.125":[16.978,8.442,-93.027],"0.1667":[21.133,2.38,-93.136],"0.2083":[23.749,-1.57,-93.474],"0.25":[26.389,-5.619,-94.39],"0.2917":[27.682,-8.881,-91.387],"0.3333":[22.418,-6.71,-74.171],"0.375":[19.014,-4.286,-65.829],"0.4167":[19.016,-6.603,-67.972],"0.4583":[19.441,-7.5,-68.584],"0.5":[21.658,-9.484,-78.49],"0.5417":[26.856,-11.569,-99.301],"0.5833":[50.806,-4.626,-164.543],"0.625":[59.259,8.316,-209.585],"0.6667":[87.288,-7.166,-236.165],"0.7083":[78.273,-1.689,-241.813],"0.75":[84.182,-0.242,-245.395],"0.7917":[83.87,0.666,-244.757],"0.8333":[83.6,-1.02,-245.322],"0.875":[84.164,-4.925,-247.468],"0.9167":[85.626,-12.485,-251.809],"0.9583":[87.201,-18.071,-255.325],"1.0":[90.657,-26.243,-261.339],"1.0417":[93.659,-30.968,-265.649],"1.0833":[100.863,-34.917,-272.636],"1.125":[110.691,-25.665,-273.364],"1.1667":[124.3,-12.969,-273.135],"1.2083":[131.648,-8.715,-275.038],"1.25":[141.153,-2.882,-278.456],"1.2917":[146.654,1.638,-280.47],"1.3333":[154.144,8.696,-283.333],"1.375":[158.542,13.52,-284.892],"1.4167":[163.81,20.684,-286.386],"1.4583":[164.85,25.072,-287.128],"1.5":[165.524,31.171,-287.86],"1.5417":[165.8,34.787,-287.767],"1.5833":[166.099,37.925,-287.173],"1.625":[166.155,39.955,-286.651],"1.6667":[166.098,42.847,-285.75],"1.7083":[166.012,44.637,-285.104],"1.75":[165.886,47.055,-284.118],"1.7917":[165.854,48.455,-283.47],"1.8333":[165.969,50.179,-282.54],"1.875":[166.21,51.044,-281.954],"1.9167":[166.918,51.859,-281.129],"1.9583":[168.777,50.608,-280.858],"2.0":[176.465,37.761,-281.642],"2.0417":[174.136,26.271,-281.05],"2.0833":[171.027,16.034,-284.259],"2.125":[173.883,16.356,-287.429],"2.1667":[170.571,11.124,-285.99],"2.2083":[155.311,13.273,-270.826],"2.25":[134.016,25.649,-249.942],"2.2917":[130.759,33.92,-244.209],"2.3333":[147.133,46.848,-240.355],"2.375":[159.561,45.704,-230.129],"2.4167":[173.581,37.306,-219.177],"2.4583":[173.732,31.651,-225.684],"2.5":[171.977,18.856,-240.551],"2.5417":[170.472,13.721,-246.192],"2.5833":[169.3,9.012,-246.435],"2.625":[168.877,7.914,-243.257],"2.6667":[168.402,6.551,-239.704],"2.7083":[168.051,6.063,-238.119],"2.75":[167.362,6.228,-237.834],"2.7917":[167.028,6.544,-238.141],"2.8333":[167.118,7.061,-238.638],"2.875":[167.152,7.275,-239.297],"2.9167":[167.056,7.412,-240.581],"2.9583":[166.94,7.689,-241.019],"3.0":[166.76,8.148,-241.331],"3.0417":[166.729,8.323,-241.318],"3.0833":[166.674,8.335,-241.155],"3.125":[166.582,8.159,-241.014],"3.1667":[166.539,8.014,-240.879],"3.2083":[166.542,7.976,-240.823],"3.25":[166.51,7.97,-240.787],"3.2917":[166.498,7.971,-240.779]},"position":{"0.0":[-0.801,26.597,-5.958],"0.0417":[0.69,29.019,-7.366],"0.0833":[1.583,30.445,-3.46],"0.125":[2.071,31.214,-0.555],"0.1667":[2.724,32.249,3.887],"0.2083":[3.158,32.947,6.688],"0.25":[3.953,34.427,7.605],"0.2917":[4.376,35.764,0.496],"0.3333":[6.812,40.329,-17.81],"0.375":[7.097,40.499,-16.557],"0.4167":[7.155,40.167,-16.102],"0.4583":[7.087,40.006,-16.115],"0.5":[7.152,39.686,-16.141],"0.5417":[7.54,39.455,-15.963],"0.5833":[8.92,40.464,-14.959],"0.625":[9.426,41.526,-14.611],"0.6667":[11.103,42.959,-15.011],"0.7083":[14.08,39.82,-4.317],"0.75":[15.516,42.869,13.947],"0.7917":[15.339,43.065,14.113],"0.8333":[15.45,42.341,11.412],"0.875":[16.057,41.147,8.388],"0.9167":[17.311,38.81,2.514],"0.9583":[18.213,37.056,-1.916],"1.0":[19.39,34.42,-8.682],"1.0417":[19.894,32.825,-12.896],"1.0833":[18.058,31.233,-18.484],"1.125":[15.314,33.252,-19.538],"1.1667":[11.616,36.343,-19.433],"1.2083":[9.862,37.545,-18.84],"1.25":[7.936,38.773,-17.837],"1.2917":[7.139,39.256,-17.358],"1.3333":[6.341,39.682,-16.686],"1.375":[5.94,39.868,-16.271],"1.4167":[5.361,40.136,-15.724],"1.4583":[5.176,40.174,-15.511],"1.5":[4.995,40.177,-15.247],"1.5417":[4.934,40.152,-15.108],"1.5833":[4.924,40.064,-14.958],"1.625":[4.922,40.022,-14.87],"1.6667":[4.931,39.968,-14.749],"1.7083":[4.944,39.928,-14.675],"1.75":[4.98,39.845,-14.568],"1.7917":[5.015,39.765,-14.497],"1.8333":[5.086,39.593,-14.385],"1.875":[5.146,39.435,-14.302],"1.9167":[5.258,39.121,-14.156],"1.9583":[5.413,38.734,-13.93],"2.0":[6.202,36.463,-13.276],"2.0417":[7.148,32.508,-13.246],"2.0833":[9.619,28.466,-11.558],"2.125":[10.761,29.353,-10.931],"2.1667":[12.224,30.133,-10.045],"2.2083":[13.763,32.001,-8.891],"2.25":[15.737,34.871,-7.215],"2.2917":[16.117,36.361,-6.789],"2.3333":[13.839,38.393,-7.718],"2.375":[11.725,39.19,-8.051],"2.4167":[8.067,40.014,-8.545],"2.4583":[5.784,40.108,-9.043],"2.5":[3.942,39.748,-9.321],"2.5417":[3.962,39.468,-9.221],"2.5833":[4.425,39.242,-9.218],"2.625":[4.823,39.285,-9.303],"2.6667":[4.976,39.439,-9.419],"2.7083":[4.989,39.551,-9.481],"2.75":[4.905,39.656,-9.533],"2.7917":[4.821,39.693,-9.556],"2.8333":[4.71,39.676,-9.573],"2.875":[4.644,39.641,-9.573],"2.9167":[4.569,39.573,-9.559],"2.9583":[4.553,39.546,-9.547],"3.0":[4.549,39.52,-9.528],"3.0417":[4.551,39.51,-9.52],"3.0833":[4.559,39.507,-9.515],"3.125":[4.563,39.511,-9.517],"3.1667":[4.566,39.517,-9.52],"3.2083":[4.566,39.521,-9.523],"3.25":[4.564,39.524,-9.526],"3.2917":[4.562,39.525,-9.527]}},"righthand":{"rotation":{"0.0":[20.956,35.653,-76.775],"0.0417":[20.956,35.653,-76.775],"0.0833":[50.222,-19.173,-61.388],"0.125":[108.798,-58.362,-108.715],"0.1667":[77.778,-56.883,-81.142],"0.2083":[64.383,-57.393,-75.948],"0.25":[94.296,-67.044,-119.464],"0.2917":[119.45,-56.987,-156.058],"0.3333":[100.164,-51.178,-136.989],"0.375":[93.141,-48.998,-123.671],"0.4167":[101.723,-54.088,-128.061],"0.4583":[102.366,-54.158,-130.202],"0.5":[108.321,-49.199,-148.312],"0.5417":[104.576,-33.455,-169.9],"0.5833":[82.754,-0.591,-217.604],"0.625":[68.062,8.505,-256.608],"0.6667":[74.056,9.983,-259.068],"0.7083":[60.612,10.843,-269.15],"0.75":[43.027,7.189,-259.67],"0.7917":[42.296,7.41,-259.063],"0.8333":[41.579,7.709,-258.556],"0.875":[41.359,11.392,-256.168],"0.9167":[44.344,26.35,-245.258],"0.9583":[52.217,38.205,-232.21],"1.0":[79.048,47.664,-203.153],"1.0417":[99.219,45.758,-187.604],"1.0833":[107.066,48.174,-171.139],"1.125":[108.178,47.561,-170.506],"1.1667":[108.987,47.059,-172.638],"1.2083":[108.58,48.064,-175.056],"1.25":[104.598,51.617,-183.438],"1.2917":[99.729,54.529,-191.742],"1.3333":[90.248,58.435,-206.123],"1.375":[84.213,60.42,-214.812],"1.4167":[81.138,61.218,-220.385],"1.4583":[82.738,60.024,-219.766],"1.5":[89.579,58.953,-216.205],"1.5417":[89.021,57.829,-219.722],"1.5833":[88.297,55.873,-224.109],"1.625":[87.791,55.251,-225.469],"1.6667":[86.564,54.564,-227.243],"1.7083":[84.556,54.679,-229.803],"1.75":[81.507,55.1,-233.639],"1.7917":[79.712,55.416,-235.93],"1.8333":[77.486,55.855,-238.976],"1.875":[73.882,57.14,-243.744],"1.9167":[63.93,59.754,-257.022],"1.9583":[54.921,61.008,-269.696],"2.0":[48.879,57.325,-284.242],"2.0417":[52.641,54.52,-285.559],"2.0833":[83.342,43.568,-270.449],"2.125":[108.549,41.081,-267.554],"2.1667":[130.018,34.226,-268.902],"2.2083":[167.625,12.179,-247.614],"2.25":[171.85,-54.77,-199.491],"2.2917":[130.833,-65.202,-144.355],"2.3333":[114.611,-47.222,-124.863],"2.375":[110.438,-35.866,-121.656],"2.4167":[125.725,-21.808,-109.83],"2.4583":[135.272,-11.32,-96.428],"2.5":[141.289,-18.295,-96.44],"2.5417":[139.604,-15.818,-95.215],"2.5833":[134.343,-28.409,-96.032],"2.625":[134.009,-33.945,-95.449],"2.6667":[137.574,-38.452,-97.61],"2.7083":[139.058,-38.904,-97.48],"2.75":[140.358,-38.135,-96.131],"2.7917":[140.616,-37.369,-95.862],"2.8333":[140.304,-36.626,-95.023],"2.875":[140.092,-36.191,-94.621],"2.9167":[139.764,-35.913,-94.364],"2.9583":[139.673,-35.947,-94.411],"3.0":[139.512,-36.016,-94.373],"3.0417":[139.387,-36.056,-94.298],"3.0833":[139.307,-36.13,-94.226],"3.125":[139.293,-36.182,-94.198],"3.1667":[139.296,-36.269,-94.196],"3.2083":[139.305,-36.329,-94.205],"3.25":[139.322,-36.429,-94.22],"3.2917":[139.326,-36.44,-94.223]},"position":{"0.0":[-25.014,36.733,2.476],"0.0417":[-25.014,36.733,2.476],"0.0833":[-17.875,36.717,0.002],"0.125":[-15.749,36.738,-1.929],"0.1667":[-12.098,37.603,3.137],"0.2083":[-11.322,37.129,5.342],"0.25":[-10.396,36.52,3.846],"0.2917":[-9.716,34.634,4.609],"0.3333":[-7.205,39.537,-13.651],"0.375":[-6.856,40.035,-12.291],"0.4167":[-6.903,39.48,-11.878],"0.4583":[-6.94,39.154,-11.924],"0.5":[-7.195,38.844,-12.096],"0.5417":[-7.698,38.386,-12.146],"0.5833":[-5.846,36.977,-11.507],"0.625":[-3.961,38.573,-11.584],"0.6667":[-2.489,39.783,-10.619],"0.7083":[-0.347,36.844,-0.394],"0.75":[-2.183,33.805,17.891],"0.7917":[-1.343,34.415,19.55],"0.8333":[-0.917,33.916,17.62],"0.875":[-2.455,31.166,11.485],"0.9167":[-5.929,25.35,-1.559],"0.9583":[-8.391,22.377,-9.093],"1.0":[-11.613,22.696,-12.709],"1.0417":[-13.675,25.817,-10.699],"1.0833":[-15.726,31.326,-7.032],"1.125":[-13.864,32.368,-7.2],"1.1667":[-10.949,33.434,-7.957],"1.2083":[-9.95,34.39,-8.414],"1.25":[-9.094,36.019,-9.089],"1.2917":[-8.729,37.143,-9.55],"1.3333":[-8.319,38.809,-10.232],"1.375":[-8.038,39.862,-10.667],"1.4167":[-7.599,41.131,-11.219],"1.4583":[-7.442,41.645,-11.466],"1.5":[-7.342,42.071,-11.672],"1.5417":[-7.311,42.292,-11.785],"1.5833":[-7.29,42.563,-11.94],"1.625":[-7.298,42.724,-12.032],"1.6667":[-7.324,42.967,-12.174],"1.7083":[-7.358,43.148,-12.294],"1.75":[-7.418,43.417,-12.475],"1.7917":[-7.466,43.61,-12.612],"1.8333":[-7.556,43.96,-12.884],"1.875":[-7.627,44.268,-13.12],"1.9167":[-7.817,44.917,-13.754],"1.9583":[-8.087,45.66,-14.727],"2.0":[-8.998,46.597,-16.892],"2.0417":[-9.938,46.789,-18.284],"2.0833":[-11.542,46.026,-19.096],"2.125":[-12.444,44.805,-18.326],"2.1667":[-13.358,43.32,-16.918],"2.2083":[-14.46,42.821,-15.624],"2.25":[-15.675,43.799,-14.509],"2.2917":[-15.177,44.795,-14.954],"2.3333":[-13.189,45.621,-15.645],"2.375":[-10.841,45.098,-16.332],"2.4167":[-5.303,41.969,-16.802],"2.4583":[-1.953,39.378,-16.119],"2.5":[-2.061,37.877,-13.743],"2.5417":[-2.776,37.97,-13.511],"2.5833":[-3.148,38.452,-14.427],"2.625":[-3.146,38.893,-14.735],"2.6667":[-3.012,39.445,-14.806],"2.7083":[-2.932,39.576,-14.772],"2.75":[-2.868,39.577,-14.717],"2.7917":[-2.851,39.529,-14.694],"2.8333":[-2.863,39.473,-14.691],"2.875":[-2.881,39.452,-14.693],"2.9167":[-2.903,39.439,-14.702],"2.9583":[-2.91,39.441,-14.707],"3.0":[-2.913,39.448,-14.711],"3.0417":[-2.914,39.452,-14.713],"3.0833":[-2.911,39.456,-14.712],"3.125":[-2.909,39.458,-14.711],"3.1667":[-2.906,39.459,-14.709],"3.2083":[-2.904,39.459,-14.709],"3.25":[-2.904,39.457,-14.709],"3.2917":[-2.903,39.457,-14.709]}},"annihil":{"rotation":{"0.0":[-118.74,15.225,-100.367],"0.0417":[-105.16,10.633,-100.268],"0.0833":[-98.324,5.835,-99.608],"0.125":[-94.641,2.288,-99.622],"0.1667":[-89.811,-3.2,-100.155],"0.2083":[-86.709,-6.778,-100.783],"0.25":[-83.53,-10.475,-102.001],"0.2917":[-81.779,-13.586,-99.197],"0.3333":[-87.368,-12.711,-81.468],"0.375":[-91.108,-10.624,-72.696],"0.4167":[-90.822,-12.713,-74.907],"0.4583":[-90.281,-13.411,-75.594],"0.5":[-87.429,-14.978,-85.784],"0.5417":[-82.239,-16.388,-107.142],"0.5833":[-70.682,-6.518,-175.224],"0.625":[-72.392,5.904,-228.913],"0.6667":[-76.787,9.864,-257.294],"0.7083":[-89.74,11.628,-266.153],"0.75":[-104.736,9.458,-252.224],"0.7917":[-102.214,11.251,-246.113],"0.8333":[-100.533,0.528,-242.274],"0.875":[-100.27,-15.152,-242.697],"0.9167":[-93.083,-36.255,-245.058],"0.9583":[-79.065,-47.825,-255.838],"1.0":[-39.725,-51.141,-298.568],"1.0417":[-22.587,-42.017,-328.268],"1.0833":[-5.722,-38.755,-350.891],"1.125":[1.982,-34.563,-360.597],"1.1667":[6.958,-32.926,-358.353],"1.2083":[9.582,-34.297,-354.918],"1.25":[14.239,-37.454,-360.717],"1.2917":[17.738,-41.493,-367.734],"1.3333":[25.665,-48.173,-380.228],"1.375":[31.335,-52.098,-388.401],"1.4167":[36.575,-55.219,-395.888],"1.4583":[38.082,-55.312,-397.643],"1.5":[37.767,-55.826,-397.467],"1.5417":[39.64,-56.256,-400.148],"1.5833":[44.843,-56.939,-406.742],"1.625":[46.659,-57.013,-409.462],"1.6667":[48.188,-56.661,-411.888],"1.7083":[49.467,-56.21,-413.587],"1.75":[50.574,-55.384,-415.089],"1.7917":[51.3,-55.078,-416.086],"1.8333":[53.992,-55.767,-419.698],"1.875":[59.405,-57.745,-426.599],"1.9167":[70,-60.131,-440.536],"1.9583":[67.819,-59.084,-440.27],"2.0":[69.852,-54.938,-449.069],"2.0417":[67.556,-51.305,-453.993],"2.0833":[39.026,-37.732,-448.385],"2.125":[10.728,-36.379,-448.326],"2.1667":[-40.713,-28.782,-439.049],"2.2083":[-73.56,-0.487,-427.038],"2.25":[-74.526,61.111,-407.808],"2.2917":[-50.428,81.475,-371.588],"2.3333":[24.964,71.021,-282.282],"2.375":[14.911,50.052,-279.046],"2.4167":[-1.966,15.753,-273.089],"2.4583":[-12.967,13.61,-266.993],"2.5":[-18.357,24.282,-273.227],"2.5417":[-16.763,21.716,-271.873],"2.5833":[-10.306,33.957,-271.648],"2.625":[-9.4,39.453,-270.697],"2.6667":[-12.755,44.177,-272.989],"2.7083":[-14.322,44.723,-273.028],"2.75":[-15.82,44.028,-271.918],"2.7917":[-16.176,43.281,-271.734],"2.8333":[-15.913,42.522,-270.907],"2.875":[-15.723,42.075,-270.503],"2.9167":[-15.392,41.776,-270.214],"2.9583":[-15.293,41.806,-270.251],"3.0":[-15.111,41.867,-270.185],"3.0417":[-14.979,41.901,-270.099],"3.0833":[-14.879,41.971,-270.004],"3.125":[-14.861,42.021,-269.971],"3.1667":[-14.855,42.107,-269.967],"3.2083":[-14.855,42.167,-269.967],"3.25":[-14.867,42.267,-269.98],"3.2917":[-14.873,42.277,-269.984]},"position":{"0.0":[-11.31,43.82,-4.771],"0.0417":[-7.493,41.872,-8.055],"0.0833":[-6.553,43.335,-4.3],"0.125":[-6.032,44.141,-1.451],"0.1667":[-5.335,45.233,2.939],"0.2083":[-4.875,45.967,5.716],"0.25":[-4.071,47.468,6.61],"0.2917":[-3.604,48.945,-0.497],"0.3333":[-1.026,54.006,-18.729],"0.375":[-0.573,54.424,-17.38],"0.4167":[-0.589,54.071,-16.87],"0.4583":[-0.683,53.911,-16.861],"0.5":[-0.885,53.276,-16.85],"0.5417":[-0.812,52.249,-16.699],"0.5833":[1.321,51.534,-16.801],"0.625":[2.903,52.429,-16.698],"0.6667":[3.749,53.535,-15.104],"0.7083":[6.653,50.591,-4.753],"0.75":[6.2,46.067,13.28],"0.7917":[7.025,45.714,14.157],"0.8333":[7.929,45.28,12.454],"0.875":[7.201,44.065,7.424],"0.9167":[5.264,40.381,-3.794],"0.9583":[3.593,37.804,-10.282],"1.0":[0.034,37.638,-13.52],"1.0417":[-3.428,40.404,-11.758],"1.0833":[-7.484,44.185,-8.319],"1.125":[-6.401,44.867,-8.612],"1.1667":[-3.075,46.506,-9.175],"1.2083":[-1.601,47.938,-9.422],"1.25":[-0.745,49.926,-9.969],"1.2917":[-0.466,51.216,-10.413],"1.3333":[-0.157,53.061,-11.077],"1.375":[0.072,54.203,-11.485],"1.4167":[0.434,55.525,-12.031],"1.4583":[0.543,56.055,-12.328],"1.5":[0.57,56.689,-12.511],"1.5417":[0.532,57.035,-12.637],"1.5833":[0.462,57.392,-12.911],"1.625":[0.406,57.571,-13.037],"1.6667":[0.334,57.831,-13.218],"1.7083":[0.267,58.038,-13.349],"1.75":[0.164,58.354,-13.531],"1.7917":[0.091,58.57,-13.661],"1.8333":[-0.034,58.925,-13.901],"1.875":[-0.155,59.245,-14.048],"1.9167":[-0.519,59.975,-14.484],"1.9583":[-1.015,60.852,-15.344],"2.0":[-2.39,61.927,-17.637],"2.0417":[-3.676,62.075,-19.27],"2.0833":[-6.407,60.968,-20.862],"2.125":[-8.345,59.574,-19.63],"2.1667":[-9.708,57.949,-17.783],"2.2083":[-10.443,57.714,-15.719],"2.25":[-10.044,59.437,-15.7],"2.2917":[-8.674,60.655,-17.407],"2.3333":[-4.692,60.485,-19.938],"2.375":[-1.645,58.689,-20.386],"2.4167":[3.039,54.575,-19.061],"2.4583":[6.143,51.436,-17.976],"2.5":[6.265,49.925,-15.525],"2.5417":[5.512,49.92,-15.34],"2.5833":[4.963,50.86,-16.493],"2.625":[4.939,51.453,-16.801],"2.6667":[5.143,52.152,-16.748],"2.7083":[5.263,52.257,-16.668],"2.75":[5.375,52.159,-16.576],"2.7917":[5.402,52.073,-16.546],"2.8333":[5.388,51.972,-16.554],"2.875":[5.369,51.925,-16.563],"2.9167":[5.34,51.902,-16.585],"2.9583":[5.33,51.91,-16.591],"3.0":[5.325,51.921,-16.602],"3.0417":[5.321,51.925,-16.607],"3.0833":[5.323,51.93,-16.607],"3.125":[5.324,51.933,-16.607],"3.1667":[5.328,51.936,-16.604],"3.2083":[5.329,51.936,-16.604],"3.25":[5.33,51.939,-16.604],"3.2917":[5.33,51.939,-16.604]}},"lefthand_1":{"rotation":{"0.0":[0,0,0],"0.625":[20.5764,-9.3073,23.307],"0.9583":[20.5764,-9.3073,23.307],"1.1667":[0,0,0],"1.4583":[-12.5,0,0],"2.125":[-12.5,0,0],"2.4583":[0,0,0]},"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"2.0":[0,0,0],"2.2083":[-30,0,0],"2.7083":[0,0,0]},"position":{"0.0":[0,2.5,0],"2.0":[0,2.5,0]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.843,0.672,-0.057],"0.0417":[0.843,0.667,-0.03],"0.0833":[0.847,0.639,0.044],"0.125":[0.851,0.611,0.111],"0.1667":[0.855,0.557,0.211],"0.2083":[0.856,0.513,0.271],"0.25":[0.657,0.334,0.33],"0.2917":[0.317,0.136,0.345],"0.3333":[-0.335,-0.104,-1.728],"0.375":[-0.58,-0.14,1.756],"0.4167":[-0.097,-0.063,-1.163],"0.4583":[0.031,0.076,-0.467],"0.5":[0.225,0.145,0.27],"0.5417":[0.395,0.04,0.474],"0.5833":[0.451,-0.227,0.733],"0.625":[0.121,-0.412,0.855],"0.6667":[-0.488,-0.605,0.944],"0.7083":[-0.184,-0.652,0.806],"0.75":[0.57,-0.664,-0.44],"0.7917":[0.656,-0.639,-0.771],"0.8333":[0.724,-0.571,-0.013],"0.875":[0.757,-0.5,0.215],"0.9167":[0.779,-0.363,0.291],"0.9583":[0.788,-0.262,0.26],"1.0":[0.81,-0.114,0.136],"1.0417":[0.836,-0.05,0.05],"1.0833":[0.914,-0.003,-0.021],"1.125":[1.02,-0.002,-0.019],"1.1667":[1.293,-0.002,-0.019],"1.2083":[1.486,-0.002,-0.019],"1.25":[1.727,-0.002,-0.019],"1.2917":[1.831,-0.002,-0.019],"1.3333":[1.952,0,-0.019],"1.375":[2,0.002,-0.019],"1.4167":[2.043,0.005,-0.019],"1.4583":[2.032,0.008,-0.019],"1.5":[1.964,0.013,-0.019],"1.5417":[1.885,0.017,-0.019],"1.5833":[1.726,0.023,-0.019],"1.625":[1.59,0.027,-0.019],"1.6667":[1.341,0.033,-0.019],"1.7083":[1.155,0.038,-0.019],"1.75":[0.814,0.044,-0.016],"1.7917":[0.544,0.048,-0.01],"1.8333":[0.131,0.054,0.007],"1.875":[-0.132,0.058,0.026],"1.9167":[-0.48,0.062,0.068],"1.9583":[-0.58,0.061,0.108],"2.0":[-0.484,-0.01,0.251],"2.0417":[-0.382,-0.122,0.376],"2.0833":[-0.242,-0.29,0.518],"2.125":[-0.258,-0.378,0.51],"2.1667":[-0.493,-0.434,0.244],"2.2083":[-0.676,-0.411,0.004],"2.25":[-0.848,-0.335,-0.264],"2.2917":[-0.769,-0.276,-0.337],"2.3333":[-0.459,-0.183,-0.397],"2.375":[-0.221,-0.115,-0.414],"2.4167":[0.08,-0.017,-0.417],"2.4583":[0.143,0.042,-0.336],"2.5":[0.123,0.119,-0.168],"2.5417":[0.075,0.157,-0.037],"2.5833":[-0.01,0.189,0.106],"2.625":[-0.048,0.184,0.106],"2.6667":[-0.096,0.124,0.082],"2.7083":[-0.115,0.075,0.058],"2.75":[-0.108,0.008,0.002],"2.7917":[-0.084,-0.019,-0.032],"2.8333":[-0.046,-0.016,-0.056],"2.875":[-0.023,-0.011,-0.051],"2.9167":[0.011,-0.004,-0.032],"2.9583":[0.011,0,-0.022],"3.0":[0.006,0.004,0.002],"3.0417":[0.006,0.006,0.016],"3.0833":[0.001,0.004,0.022],"3.125":[-0.004,0.004,0.016],"3.1667":[0.001,0.002,0.011],"3.2083":[0.001,0,0.005],"3.25":[0.001,0,-0.001],"3.2917":[0.001,0,-0.001]}},"devil":{"scale":0},"angel":{"position":[2,0,0]}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_melee_3"},"1.0417":{"effect":"melee.annihil.annihil_rotate_3"}}},"draw":{"loop":true,"animation_length":0.9167,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[67.403,6.754,167.736],"0.0417":[67.579,6.671,167.653],"0.0833":[68.131,6.414,167.398],"0.125":[69.305,5.886,166.858],"0.1667":[72.16,4.803,165.599],"0.2083":[77.911,1.158,162.218],"0.25":[125.602,-12.14,134.432],"0.2917":[152.74,-0.82,127.797],"0.3333":[160.724,17.771,125.845],"0.375":[167.809,15.82,127.755],"0.4167":[170.341,6.518,127.349],"0.4583":[171.451,8.132,121.091],"0.5":[171.615,7.758,117.555],"0.5417":[171.46,7.478,115.395],"0.5833":[170.946,7.178,115.085],"0.625":[169.931,7.173,116.278],"0.6667":[168.276,7.441,118.187],"0.7083":[167.249,7.677,118.943],"0.75":[166.789,7.773,119.052],"0.7917":[166.668,7.844,119.088],"0.8333":[166.578,7.907,119.132],"0.875":[166.506,7.962,119.201],"0.9167":[166.497,7.97,119.22]},"position":{"0.0":[17.261,24.819,-1.241],"0.0417":[17.281,24.841,-1.279],"0.0833":[17.306,24.907,-1.398],"0.125":[17.332,25.049,-1.649],"0.1667":[17.358,25.384,-2.265],"0.2083":[17.341,26.125,-3.2],"0.25":[16.714,31.519,-6.974],"0.2917":[15.386,35.235,-9.125],"0.3333":[13.046,37.799,-10.014],"0.375":[9.095,39.157,-10.077],"0.4167":[5.926,39.244,-9.776],"0.4583":[4.143,39.094,-9.411],"0.5":[4.08,39.005,-9.331],"0.5417":[4.156,38.984,-9.307],"0.5833":[4.294,39.093,-9.346],"0.625":[4.391,39.206,-9.381],"0.6667":[4.504,39.356,-9.428],"0.7083":[4.551,39.453,-9.462],"0.75":[4.566,39.511,-9.498],"0.7917":[4.566,39.52,-9.511],"0.8333":[4.565,39.523,-9.519],"0.875":[4.563,39.525,-9.525],"0.9167":[4.562,39.525,-9.527]}},"righthand":{"rotation":{"0.0":[109.477,10.999,91.504],"0.0417":[52.54,22.057,84.124],"0.0833":[65.235,-22.68,82.298],"0.125":[69.462,-6.293,112.634],"0.1667":[81.112,-5.251,132.189],"0.2083":[106.239,-19.601,193.008],"0.25":[125.642,-27.147,202.836],"0.2917":[129.61,-19.702,187.751],"0.3333":[115.459,-7.833,190.936],"0.375":[130.544,-40.445,272.631],"0.4167":[147.517,-38.468,263.58],"0.4583":[151.393,-31.565,260.231],"0.5":[149.057,-28.619,260.216],"0.5417":[145.982,-27.891,261.156],"0.5833":[142.149,-29.184,262.91],"0.625":[139.634,-31.176,264.322],"0.6667":[138.948,-33.562,264.832],"0.7083":[138.886,-34.712,264.96],"0.75":[138.887,-35.993,265.236],"0.7917":[138.993,-36.267,265.505],"0.8333":[139.126,-36.327,265.694],"0.875":[139.287,-36.419,265.762],"0.9167":[139.327,-36.44,265.776]},"position":{"0.0":[-11.952,27.736,-10.063],"0.0417":[-15.147,29.025,-11.131],"0.0833":[-19.803,29.212,-13.114],"0.125":[-20.363,28.257,-11.008],"0.1667":[-20.468,28.883,-6.499],"0.2083":[-21.099,33.342,-6.094],"0.25":[-22.209,40.397,-7.885],"0.2917":[-20.145,44.834,-13.45],"0.3333":[-12.934,47.301,-18.493],"0.375":[-1.751,40.663,-15.465],"0.4167":[-1.108,38.047,-14.354],"0.4583":[-2.418,37.484,-14.246],"0.5":[-2.953,37.94,-14.425],"0.5417":[-3.123,38.438,-14.562],"0.5833":[-3.061,38.888,-14.678],"0.625":[-2.906,39.148,-14.73],"0.6667":[-2.85,39.269,-14.732],"0.7083":[-2.846,39.336,-14.73],"0.75":[-2.853,39.409,-14.725],"0.7917":[-2.868,39.437,-14.718],"0.8333":[-2.884,39.45,-14.712],"0.875":[-2.899,39.456,-14.709],"0.9167":[-2.903,39.457,-14.708]}},"annihil":{"rotation":{"0.0":[88.77,-144.683,1.399],"0.0417":[28.585,-129.419,9.197],"0.0833":[-38.461,-114.488,3.162],"0.125":[-82.696,-103.541,-17.163],"0.1667":[22.003,-94.51,-200.569],"0.2083":[10.282,-100.374,-237.228],"0.25":[-122.793,-99.106,-162.605],"0.2917":[-164.258,-127.105,-155.117],"0.3333":[-172.87,-147.445,-176.462],"0.375":[-184.86,-225.67,-81.637],"0.4167":[-203.564,-224.794,-93.181],"0.4583":[-208.313,-217.979,-97.456],"0.5":[-205.942,-214.951,-97.228],"0.5417":[-202.701,-214.093,-95.906],"0.5833":[-198.53,-215.196,-93.612],"0.625":[-195.686,-217.046,-91.787],"0.6667":[-194.738,-219.384,-91.058],"0.7083":[-194.562,-220.528,-90.854],"0.75":[-194.439,-221.803,-90.496],"0.7917":[-194.524,-222.086,-90.22],"0.8333":[-194.663,-222.152,-90.044],"0.875":[-194.828,-222.254,-89.994],"0.9167":[-194.87,-222.275,-89.985]},"position":{"0.0":[17.753,46.024,-6.623],"0.0417":[14.475,56.696,-13.933],"0.0833":[4.899,60.838,-19.837],"0.125":[-1.047,56.962,-20.991],"0.1667":[1.692,53.364,-19.999],"0.2083":[4.304,55.724,-20.31],"0.25":[2.514,61.004,-21.613],"0.2917":[-1.494,63.127,-21.676],"0.3333":[-5.423,63.059,-21.241],"0.375":[6.281,53.211,-17.596],"0.4167":[7.29,50.498,-15.994],"0.4583":[6.079,49.826,-15.718],"0.5":[5.506,50.266,-15.972],"0.5417":[5.276,50.76,-16.22],"0.5833":[5.249,51.233,-16.478],"0.625":[5.34,51.534,-16.62],"0.6667":[5.375,51.715,-16.644],"0.7083":[5.376,51.807,-16.641],"0.75":[5.368,51.909,-16.635],"0.7917":[5.356,51.933,-16.623],"0.8333":[5.344,51.933,-16.613],"0.875":[5.333,51.939,-16.604],"0.9167":[5.33,51.939,-16.604]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.001,-0.002,0.001],"0.0417":[0.015,-0.028,0.009],"0.0833":[0.026,-0.032,0.019],"0.125":[0.032,-0.013,0.033],"0.1667":[-0.028,0.017,0.054],"0.2083":[-0.137,0.035,0.075],"0.25":[-0.115,0.046,0.115],"0.2917":[0.056,0.05,0.159],"0.3333":[0.161,0.035,0.291],"0.375":[0.167,-0.02,0.521],"0.4167":[0.111,-0.064,0.423],"0.4583":[0.017,-0.077,-0.229],"0.5":[-0.013,-0.069,0.067],"0.5417":[-0.03,-0.055,0.374],"0.5833":[-0.038,-0.03,0.257],"0.625":[-0.035,-0.011,0.067],"0.6667":[-0.025,0.005,-0.049],"0.7083":[-0.017,0.009,-0.058],"0.75":[-0.007,0.011,-0.026],"0.7917":[-0.003,0.009,-0.004],"0.8333":[-0.003,0.005,0.018],"0.875":[0,0,0.007],"0.9167":[0,0,-0.004]}},"angel":{"scale":0}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_draw"}}},"draw_angel":{"loop":true,"animation_length":0.9167,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[67.403,6.754,167.736],"0.0417":[67.579,6.671,167.653],"0.0833":[68.131,6.414,167.398],"0.125":[69.305,5.886,166.858],"0.1667":[72.16,4.803,165.599],"0.2083":[77.911,1.158,162.218],"0.25":[125.602,-12.14,134.432],"0.2917":[152.74,-0.82,127.797],"0.3333":[160.724,17.771,125.845],"0.375":[167.809,15.82,127.755],"0.4167":[170.341,6.518,127.349],"0.4583":[171.451,8.132,121.091],"0.5":[171.615,7.758,117.555],"0.5417":[171.46,7.478,115.395],"0.5833":[170.946,7.178,115.085],"0.625":[169.931,7.173,116.278],"0.6667":[168.276,7.441,118.187],"0.7083":[167.249,7.677,118.943],"0.75":[166.789,7.773,119.052],"0.7917":[166.668,7.844,119.088],"0.8333":[166.578,7.907,119.132],"0.875":[166.506,7.962,119.201],"0.9167":[166.497,7.97,119.22]},"position":{"0.0":[17.261,24.819,-1.241],"0.0417":[17.281,24.841,-1.279],"0.0833":[17.306,24.907,-1.398],"0.125":[17.332,25.049,-1.649],"0.1667":[17.358,25.384,-2.265],"0.2083":[17.341,26.125,-3.2],"0.25":[16.714,31.519,-6.974],"0.2917":[15.386,35.235,-9.125],"0.3333":[13.046,37.799,-10.014],"0.375":[9.095,39.157,-10.077],"0.4167":[5.926,39.244,-9.776],"0.4583":[4.143,39.094,-9.411],"0.5":[4.08,39.005,-9.331],"0.5417":[4.156,38.984,-9.307],"0.5833":[4.294,39.093,-9.346],"0.625":[4.391,39.206,-9.381],"0.6667":[4.504,39.356,-9.428],"0.7083":[4.551,39.453,-9.462],"0.75":[4.566,39.511,-9.498],"0.7917":[4.566,39.52,-9.511],"0.8333":[4.565,39.523,-9.519],"0.875":[4.563,39.525,-9.525],"0.9167":[4.562,39.525,-9.527]}},"righthand":{"rotation":{"0.0":[109.477,10.999,91.504],"0.0417":[52.54,22.057,84.124],"0.0833":[65.235,-22.68,82.298],"0.125":[69.462,-6.293,112.634],"0.1667":[81.112,-5.251,132.189],"0.2083":[106.239,-19.601,193.008],"0.25":[125.642,-27.147,202.836],"0.2917":[129.61,-19.702,187.751],"0.3333":[115.459,-7.833,190.936],"0.375":[130.544,-40.445,272.631],"0.4167":[147.517,-38.468,263.58],"0.4583":[151.393,-31.565,260.231],"0.5":[149.057,-28.619,260.216],"0.5417":[145.982,-27.891,261.156],"0.5833":[142.149,-29.184,262.91],"0.625":[139.634,-31.176,264.322],"0.6667":[138.948,-33.562,264.832],"0.7083":[138.886,-34.712,264.96],"0.75":[138.887,-35.993,265.236],"0.7917":[138.993,-36.267,265.505],"0.8333":[139.126,-36.327,265.694],"0.875":[139.287,-36.419,265.762],"0.9167":[139.327,-36.44,265.776]},"position":{"0.0":[-11.952,27.736,-10.063],"0.0417":[-15.147,29.025,-11.131],"0.0833":[-19.803,29.212,-13.114],"0.125":[-20.363,28.257,-11.008],"0.1667":[-20.468,28.883,-6.499],"0.2083":[-21.099,33.342,-6.094],"0.25":[-22.209,40.397,-7.885],"0.2917":[-20.145,44.834,-13.45],"0.3333":[-12.934,47.301,-18.493],"0.375":[-1.751,40.663,-15.465],"0.4167":[-1.108,38.047,-14.354],"0.4583":[-2.418,37.484,-14.246],"0.5":[-2.953,37.94,-14.425],"0.5417":[-3.123,38.438,-14.562],"0.5833":[-3.061,38.888,-14.678],"0.625":[-2.906,39.148,-14.73],"0.6667":[-2.85,39.269,-14.732],"0.7083":[-2.846,39.336,-14.73],"0.75":[-2.853,39.409,-14.725],"0.7917":[-2.868,39.437,-14.718],"0.8333":[-2.884,39.45,-14.712],"0.875":[-2.899,39.456,-14.709],"0.9167":[-2.903,39.457,-14.708]}},"annihil":{"rotation":{"0.0":[88.77,-144.683,1.399],"0.0417":[28.585,-129.419,9.197],"0.0833":[-38.461,-114.488,3.162],"0.125":[-82.696,-103.541,-17.163],"0.1667":[22.003,-94.51,-200.569],"0.2083":[10.282,-100.374,-237.228],"0.25":[-122.793,-99.106,-162.605],"0.2917":[-164.258,-127.105,-155.117],"0.3333":[-172.87,-147.445,-176.462],"0.375":[-184.86,-225.67,-81.637],"0.4167":[-203.564,-224.794,-93.181],"0.4583":[-208.313,-217.979,-97.456],"0.5":[-205.942,-214.951,-97.228],"0.5417":[-202.701,-214.093,-95.906],"0.5833":[-198.53,-215.196,-93.612],"0.625":[-195.686,-217.046,-91.787],"0.6667":[-194.738,-219.384,-91.058],"0.7083":[-194.562,-220.528,-90.854],"0.75":[-194.439,-221.803,-90.496],"0.7917":[-194.524,-222.086,-90.22],"0.8333":[-194.663,-222.152,-90.044],"0.875":[-194.828,-222.254,-89.994],"0.9167":[-194.87,-222.275,-89.985]},"position":{"0.0":[17.753,46.024,-6.623],"0.0417":[14.475,56.696,-13.933],"0.0833":[4.899,60.838,-19.837],"0.125":[-1.047,56.962,-20.991],"0.1667":[1.692,53.364,-19.999],"0.2083":[4.304,55.724,-20.31],"0.25":[2.514,61.004,-21.613],"0.2917":[-1.494,63.127,-21.676],"0.3333":[-5.423,63.059,-21.241],"0.375":[6.281,53.211,-17.596],"0.4167":[7.29,50.498,-15.994],"0.4583":[6.079,49.826,-15.718],"0.5":[5.506,50.266,-15.972],"0.5417":[5.276,50.76,-16.22],"0.5833":[5.249,51.233,-16.478],"0.625":[5.34,51.534,-16.62],"0.6667":[5.375,51.715,-16.644],"0.7083":[5.376,51.807,-16.641],"0.75":[5.368,51.909,-16.635],"0.7917":[5.356,51.933,-16.623],"0.8333":[5.344,51.933,-16.613],"0.875":[5.333,51.939,-16.604],"0.9167":[5.33,51.939,-16.604]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.001,-0.002,0.001],"0.0417":[0.015,-0.028,0.009],"0.0833":[0.026,-0.032,0.019],"0.125":[0.032,-0.013,0.033],"0.1667":[-0.028,0.017,0.054],"0.2083":[-0.137,0.035,0.075],"0.25":[-0.115,0.046,0.115],"0.2917":[0.056,0.05,0.159],"0.3333":[0.161,0.035,0.291],"0.375":[0.167,-0.02,0.521],"0.4167":[0.111,-0.064,0.423],"0.4583":[0.017,-0.077,-0.229],"0.5":[-0.013,-0.069,0.067],"0.5417":[-0.03,-0.055,0.374],"0.5833":[-0.038,-0.03,0.257],"0.625":[-0.035,-0.011,0.067],"0.6667":[-0.025,0.005,-0.049],"0.7083":[-0.017,0.009,-0.058],"0.75":[-0.007,0.011,-0.026],"0.7917":[-0.003,0.009,-0.004],"0.8333":[-0.003,0.005,0.018],"0.875":[0,0,0.007],"0.9167":[0,0,-0.004]}},"devil":{"scale":0},"angel":{"position":[2,0,0]}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_draw"}}},"draw_1":{"loop":true,"animation_length":1.1,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[69.849,5.65,166.608],"0.0417":[71.702,6.056,166.037],"0.0833":[116.419,-12.166,136.484],"0.125":[144.793,-6.698,128.609],"0.1667":[112.354,-12.472,138.191],"0.2083":[78.496,-2.065,161.25],"0.25":[88.936,-5.789,153.155],"0.2917":[144.623,0.953,128.816],"0.3333":[156.019,16.049,126.1],"0.375":[162.059,22.051,125.72],"0.4167":[167.424,15.285,127.705],"0.4583":[169.612,7.374,126.561],"0.5":[169.192,8.183,121.879],"0.5417":[168.795,7.889,118.658],"0.5833":[168.372,7.49,118.148],"0.625":[168.006,7.428,118.388],"0.6667":[167.687,7.449,118.794],"0.7083":[167.439,7.49,119.042],"0.75":[167.242,7.564,119.201],"0.7917":[167.07,7.652,119.254],"0.8333":[166.913,7.739,119.252],"0.875":[166.782,7.811,119.24],"0.9167":[166.689,7.863,119.233],"0.9583":[166.616,7.903,119.229],"1.0":[166.561,7.935,119.225],"1.0417":[166.527,7.954,119.222],"1.0833":[166.517,7.96,119.22]},"position":{"0.0":[17.34,25.298,-1.765],"0.0417":[17.347,25.854,-2.33],"0.0833":[17.249,28.258,-6.275],"0.125":[17.159,29.226,-8.393],"0.1667":[17.257,25.719,-5.879],"0.2083":[17.076,21.879,-3.076],"0.25":[17.351,22.071,-4.047],"0.2917":[17.114,27.205,-8.954],"0.3333":[15.983,33.287,-10.031],"0.375":[13.966,37.046,-10.161],"0.4167":[9.669,39.38,-10.061],"0.4583":[5.931,39.852,-9.731],"0.5":[4.531,39.685,-9.558],"0.5417":[4.275,39.493,-9.483],"0.5833":[4.358,39.401,-9.473],"0.625":[4.447,39.415,-9.479],"0.6667":[4.525,39.444,-9.489],"0.7083":[4.571,39.471,-9.496],"0.75":[4.593,39.5,-9.505],"0.7917":[4.595,39.517,-9.511],"0.8333":[4.584,39.523,-9.517],"0.875":[4.57,39.525,-9.522],"0.9167":[4.564,39.525,-9.524],"0.9583":[4.561,39.525,-9.525],"1.0":[4.56,39.525,-9.526],"1.0417":[4.559,39.524,-9.526],"1.0833":[4.558,39.524,-9.526]}},"righthand":{"rotation":{"0.0":[93.851,8.177,101.221],"0.0417":[88.424,11.117,122.732],"0.0833":[92.582,13.491,128.861],"0.125":[84.518,36.479,81.862],"0.1667":[90.943,5.459,102.419],"0.2083":[97.697,-3.456,125.202],"0.25":[89.464,11.747,134.056],"0.2917":[88.478,22.451,122.177],"0.3333":[105.185,-3.376,140.749],"0.375":[110.201,-24.61,216.14],"0.4167":[117.495,-47.856,276.604],"0.4583":[155.818,-33.055,263.791],"0.5":[152.829,-25.659,258.743],"0.5417":[145.525,-26.126,259.079],"0.5833":[141.076,-28.13,260.478],"0.625":[139.92,-29.781,261.177],"0.6667":[139.396,-31.304,261.98],"0.7083":[139.268,-32.579,262.771],"0.75":[139.141,-33.59,263.453],"0.7917":[138.99,-34.607,264.162],"0.8333":[138.878,-35.518,264.79],"0.875":[138.868,-36.207,265.224],"0.9167":[139.009,-36.561,265.391],"0.9583":[139.146,-36.58,265.591],"1.0":[139.24,-36.478,265.765],"1.0417":[139.298,-36.449,265.778],"1.0833":[139.303,-36.441,265.788]},"position":{"0.0":[-12.76,25.305,-11.144],"0.0417":[-12.008,23.383,-12.216],"0.0833":[-12.951,27.395,-12.188],"0.125":[-11.974,33.727,-12.671],"0.1667":[-9.88,38.22,-13.726],"0.2083":[-7.564,39.865,-13.911],"0.25":[-8.606,38.642,-14.016],"0.2917":[-12.976,39.042,-14.366],"0.3333":[-14.269,42.458,-15.508],"0.375":[-11.192,45.469,-16.494],"0.4167":[-6.713,42.888,-16.227],"0.4583":[-4.495,39.26,-15.551],"0.5":[-3.186,38.622,-15.032],"0.5417":[-2.575,38.98,-14.797],"0.5833":[-2.524,39.319,-14.714],"0.625":[-2.624,39.467,-14.689],"0.6667":[-2.729,39.521,-14.681],"0.7083":[-2.831,39.527,-14.681],"0.75":[-2.911,39.502,-14.696],"0.7917":[-2.941,39.471,-14.706],"0.8333":[-2.946,39.445,-14.714],"0.875":[-2.939,39.438,-14.716],"0.9167":[-2.927,39.439,-14.716],"0.9583":[-2.916,39.445,-14.716],"1.0":[-2.91,39.451,-14.715],"1.0417":[-2.908,39.455,-14.713],"1.0833":[-2.909,39.457,-14.71]}},"annihil":{"rotation":{"0.0":[20.206,-4.116,283.047],"0.0417":[-11.707,-11.377,199.857],"0.0833":[-33.609,-27.698,268.369],"0.125":[-39.393,-9.682,320.972],"0.1667":[-34.084,3.191,381.381],"0.2083":[-13.008,-3.06,458.293],"0.25":[-3.561,-5.309,542.741],"0.2917":[-18.815,1.81,626.974],"0.3333":[-15.026,-21.843,684.612],"0.375":[10.388,30.397,763.538],"0.4167":[10.627,51.895,824.909],"0.4583":[-33.723,40.072,804.894],"0.5":[-30.11,32.13,800.72],"0.5417":[-22.32,32.293,802.018],"0.5833":[-17.464,34.09,804.051],"0.625":[-16.107,35.675,804.967],"0.6667":[-15.418,37.161,805.912],"0.7083":[-15.171,38.428,806.788],"0.75":[-14.942,39.43,807.544],"0.7917":[-14.687,40.433,808.332],"0.8333":[-14.48,41.334,809.029],"0.875":[-14.403,42.022,809.511],"0.9167":[-14.523,42.384,809.681],"0.9583":[-14.672,42.41,809.862],"1.0":[-14.789,42.313,810.014],"1.0417":[-14.859,42.29,810.011],"1.0833":[-14.87,42.282,810.017]},"position":{"0.0":[-2.947,31.124,-16.832],"0.0417":[-7.677,35.874,-15.375],"0.0833":[-7.832,42.575,-15.452],"0.125":[-8.198,48.854,-16.066],"0.1667":[-5.305,52.84,-17.695],"0.2083":[-0.585,54.314,-19.15],"0.25":[-2.089,50.936,-19.58],"0.2917":[-7.24,52.5,-18.773],"0.3333":[-10.36,56.809,-20.299],"0.375":[-4.818,59.114,-19.692],"0.4167":[0.972,55.875,-18.562],"0.4583":[4.242,51.434,-16.797],"0.5":[5.352,50.886,-16.417],"0.5417":[5.813,51.35,-16.465],"0.5833":[5.755,51.748,-16.55],"0.625":[5.624,51.931,-16.569],"0.6667":[5.502,52.004,-16.58],"0.7083":[5.395,52.014,-16.584],"0.75":[5.313,51.993,-16.602],"0.7917":[5.28,51.966,-16.616],"0.8333":[5.273,51.944,-16.625],"0.875":[5.282,51.94,-16.627],"0.9167":[5.297,51.94,-16.621],"0.9583":[5.316,51.937,-16.616],"1.0":[5.325,51.933,-16.613],"1.0417":[5.331,51.933,-16.61],"1.0833":[5.331,51.933,-16.604]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"position":{"0.0":[0,2.5,0],"0.1667":[0,4.5,0],"0.4167":[0,4.5,0],"0.5417":[0,2.5,0]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.036,-0.026,-0.102],"0.0417":[-0.03,-0.094,-0.223],"0.0833":[0.075,-0.116,-0.223],"0.125":[0.112,-0.067,-0.125],"0.1667":[-0.018,-0.003,-0.034],"0.2083":[-0.048,-0.045,-0.148],"0.25":[0.02,-0.112,-0.231],"0.2917":[0.127,-0.101,-0.141],"0.3333":[0.153,-0.002,0.173],"0.375":[0.104,0.054,0.219],"0.4167":[0.09,0.057,0.192],"0.4583":[0.079,-0.068,-0.113],"0.5":[-0.004,-0.073,-0.048],"0.5417":[-0.034,-0.047,0.33],"0.5833":[-0.038,-0.017,0.14],"0.625":[-0.033,-0.006,0.032],"0.6667":[-0.028,0.002,-0.044],"0.7083":[-0.022,0.008,-0.069],"0.75":[-0.015,0.011,-0.063],"0.7917":[-0.009,0.012,-0.044],"0.8333":[-0.005,0.01,-0.023],"0.875":[-0.002,0.01,0.004],"0.9167":[0,0.007,0.011],"0.9583":[0,0.005,0.011],"1.0":[0,0.003,0.004],"1.0417":[0,0.002,0.004],"1.0833":[0,0,-0.003]}},"angel":{"scale":0}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_draw_1"}}},"draw_1_angel":{"loop":true,"animation_length":1.1,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[69.849,5.65,166.608],"0.0417":[71.702,6.056,166.037],"0.0833":[116.419,-12.166,136.484],"0.125":[144.793,-6.698,128.609],"0.1667":[112.354,-12.472,138.191],"0.2083":[78.496,-2.065,161.25],"0.25":[88.936,-5.789,153.155],"0.2917":[144.623,0.953,128.816],"0.3333":[156.019,16.049,126.1],"0.375":[162.059,22.051,125.72],"0.4167":[167.424,15.285,127.705],"0.4583":[169.612,7.374,126.561],"0.5":[169.192,8.183,121.879],"0.5417":[168.795,7.889,118.658],"0.5833":[168.372,7.49,118.148],"0.625":[168.006,7.428,118.388],"0.6667":[167.687,7.449,118.794],"0.7083":[167.439,7.49,119.042],"0.75":[167.242,7.564,119.201],"0.7917":[167.07,7.652,119.254],"0.8333":[166.913,7.739,119.252],"0.875":[166.782,7.811,119.24],"0.9167":[166.689,7.863,119.233],"0.9583":[166.616,7.903,119.229],"1.0":[166.561,7.935,119.225],"1.0417":[166.527,7.954,119.222],"1.0833":[166.517,7.96,119.22]},"position":{"0.0":[17.34,25.298,-1.765],"0.0417":[17.347,25.854,-2.33],"0.0833":[17.249,28.258,-6.275],"0.125":[17.159,29.226,-8.393],"0.1667":[17.257,25.719,-5.879],"0.2083":[17.076,21.879,-3.076],"0.25":[17.351,22.071,-4.047],"0.2917":[17.114,27.205,-8.954],"0.3333":[15.983,33.287,-10.031],"0.375":[13.966,37.046,-10.161],"0.4167":[9.669,39.38,-10.061],"0.4583":[5.931,39.852,-9.731],"0.5":[4.531,39.685,-9.558],"0.5417":[4.275,39.493,-9.483],"0.5833":[4.358,39.401,-9.473],"0.625":[4.447,39.415,-9.479],"0.6667":[4.525,39.444,-9.489],"0.7083":[4.571,39.471,-9.496],"0.75":[4.593,39.5,-9.505],"0.7917":[4.595,39.517,-9.511],"0.8333":[4.584,39.523,-9.517],"0.875":[4.57,39.525,-9.522],"0.9167":[4.564,39.525,-9.524],"0.9583":[4.561,39.525,-9.525],"1.0":[4.56,39.525,-9.526],"1.0417":[4.559,39.524,-9.526],"1.0833":[4.558,39.524,-9.526]}},"righthand":{"rotation":{"0.0":[93.851,8.177,101.221],"0.0417":[88.424,11.117,122.732],"0.0833":[92.582,13.491,128.861],"0.125":[84.518,36.479,81.862],"0.1667":[90.943,5.459,102.419],"0.2083":[97.697,-3.456,125.202],"0.25":[89.464,11.747,134.056],"0.2917":[88.478,22.451,122.177],"0.3333":[105.185,-3.376,140.749],"0.375":[110.201,-24.61,216.14],"0.4167":[117.495,-47.856,276.604],"0.4583":[155.818,-33.055,263.791],"0.5":[152.829,-25.659,258.743],"0.5417":[145.525,-26.126,259.079],"0.5833":[141.076,-28.13,260.478],"0.625":[139.92,-29.781,261.177],"0.6667":[139.396,-31.304,261.98],"0.7083":[139.268,-32.579,262.771],"0.75":[139.141,-33.59,263.453],"0.7917":[138.99,-34.607,264.162],"0.8333":[138.878,-35.518,264.79],"0.875":[138.868,-36.207,265.224],"0.9167":[139.009,-36.561,265.391],"0.9583":[139.146,-36.58,265.591],"1.0":[139.24,-36.478,265.765],"1.0417":[139.298,-36.449,265.778],"1.0833":[139.303,-36.441,265.788]},"position":{"0.0":[-12.76,25.305,-11.144],"0.0417":[-12.008,23.383,-12.216],"0.0833":[-12.951,27.395,-12.188],"0.125":[-11.974,33.727,-12.671],"0.1667":[-9.88,38.22,-13.726],"0.2083":[-7.564,39.865,-13.911],"0.25":[-8.606,38.642,-14.016],"0.2917":[-12.976,39.042,-14.366],"0.3333":[-14.269,42.458,-15.508],"0.375":[-11.192,45.469,-16.494],"0.4167":[-6.713,42.888,-16.227],"0.4583":[-4.495,39.26,-15.551],"0.5":[-3.186,38.622,-15.032],"0.5417":[-2.575,38.98,-14.797],"0.5833":[-2.524,39.319,-14.714],"0.625":[-2.624,39.467,-14.689],"0.6667":[-2.729,39.521,-14.681],"0.7083":[-2.831,39.527,-14.681],"0.75":[-2.911,39.502,-14.696],"0.7917":[-2.941,39.471,-14.706],"0.8333":[-2.946,39.445,-14.714],"0.875":[-2.939,39.438,-14.716],"0.9167":[-2.927,39.439,-14.716],"0.9583":[-2.916,39.445,-14.716],"1.0":[-2.91,39.451,-14.715],"1.0417":[-2.908,39.455,-14.713],"1.0833":[-2.909,39.457,-14.71]}},"annihil":{"rotation":{"0.0":[20.206,-4.116,283.047],"0.0417":[-11.707,-11.377,199.857],"0.0833":[-33.609,-27.698,268.369],"0.125":[-39.393,-9.682,320.972],"0.1667":[-34.084,3.191,381.381],"0.2083":[-13.008,-3.06,458.293],"0.25":[-3.561,-5.309,542.741],"0.2917":[-18.815,1.81,626.974],"0.3333":[-15.026,-21.843,684.612],"0.375":[10.388,30.397,763.538],"0.4167":[10.627,51.895,824.909],"0.4583":[-33.723,40.072,804.894],"0.5":[-30.11,32.13,800.72],"0.5417":[-22.32,32.293,802.018],"0.5833":[-17.464,34.09,804.051],"0.625":[-16.107,35.675,804.967],"0.6667":[-15.418,37.161,805.912],"0.7083":[-15.171,38.428,806.788],"0.75":[-14.942,39.43,807.544],"0.7917":[-14.687,40.433,808.332],"0.8333":[-14.48,41.334,809.029],"0.875":[-14.403,42.022,809.511],"0.9167":[-14.523,42.384,809.681],"0.9583":[-14.672,42.41,809.862],"1.0":[-14.789,42.313,810.014],"1.0417":[-14.859,42.29,810.011],"1.0833":[-14.87,42.282,810.017]},"position":{"0.0":[-2.947,31.124,-16.832],"0.0417":[-7.677,35.874,-15.375],"0.0833":[-7.832,42.575,-15.452],"0.125":[-8.198,48.854,-16.066],"0.1667":[-5.305,52.84,-17.695],"0.2083":[-0.585,54.314,-19.15],"0.25":[-2.089,50.936,-19.58],"0.2917":[-7.24,52.5,-18.773],"0.3333":[-10.36,56.809,-20.299],"0.375":[-4.818,59.114,-19.692],"0.4167":[0.972,55.875,-18.562],"0.4583":[4.242,51.434,-16.797],"0.5":[5.352,50.886,-16.417],"0.5417":[5.813,51.35,-16.465],"0.5833":[5.755,51.748,-16.55],"0.625":[5.624,51.931,-16.569],"0.6667":[5.502,52.004,-16.58],"0.7083":[5.395,52.014,-16.584],"0.75":[5.313,51.993,-16.602],"0.7917":[5.28,51.966,-16.616],"0.8333":[5.273,51.944,-16.625],"0.875":[5.282,51.94,-16.627],"0.9167":[5.297,51.94,-16.621],"0.9583":[5.316,51.937,-16.616],"1.0":[5.325,51.933,-16.613],"1.0417":[5.331,51.933,-16.61],"1.0833":[5.331,51.933,-16.604]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"position":{"0.0":[0,2.5,0],"0.1667":[0,4.5,0],"0.4167":[0,4.5,0],"0.5417":[0,2.5,0]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.036,-0.026,-0.102],"0.0417":[-0.03,-0.094,-0.223],"0.0833":[0.075,-0.116,-0.223],"0.125":[0.112,-0.067,-0.125],"0.1667":[-0.018,-0.003,-0.034],"0.2083":[-0.048,-0.045,-0.148],"0.25":[0.02,-0.112,-0.231],"0.2917":[0.127,-0.101,-0.141],"0.3333":[0.153,-0.002,0.173],"0.375":[0.104,0.054,0.219],"0.4167":[0.09,0.057,0.192],"0.4583":[0.079,-0.068,-0.113],"0.5":[-0.004,-0.073,-0.048],"0.5417":[-0.034,-0.047,0.33],"0.5833":[-0.038,-0.017,0.14],"0.625":[-0.033,-0.006,0.032],"0.6667":[-0.028,0.002,-0.044],"0.7083":[-0.022,0.008,-0.069],"0.75":[-0.015,0.011,-0.063],"0.7917":[-0.009,0.012,-0.044],"0.8333":[-0.005,0.01,-0.023],"0.875":[-0.002,0.01,0.004],"0.9167":[0,0.007,0.011],"0.9583":[0,0.005,0.011],"1.0":[0,0.003,0.004],"1.0417":[0,0.002,0.004],"1.0833":[0,0,-0.003]}},"devil":{"scale":0},"angel":{"position":[2,0,0]}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_draw_1"}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/annihil.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/annihil.geo.json new file mode 100644 index 0000000..a5aabe6 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/annihil.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.unknown","texture_width":128,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":7,"visible_bounds_offset":[0,2.5,0]},"bones":[{"name":"root","pivot":[0,4.4442,0.1281]},{"name":"bone5","parent":"root","pivot":[0,9.6875,4.3375]},{"name":"fn_lefthand","parent":"bone5","pivot":[-6,19,0]},{"name":"lefthand","parent":"fn_lefthand","pivot":[-6,19,0]},{"name":"lefthand_1","parent":"lefthand","pivot":[-6,19,0]},{"name":"lefthand_pos","parent":"lefthand_1","pivot":[0,8,0],"cubes":[{"origin":[-7,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[7,12],"uv_size":[3,12]},"east":{"uv":[8,0],"uv_size":[4,12]},"south":{"uv":[10,12],"uv_size":[3,12]},"west":{"uv":[0,12],"uv_size":[4,12]},"up":{"uv":[17,14],"uv_size":[3,4]},"down":{"uv":[18,6],"uv_size":[3,-4]}}}]},{"name":"knife_and_right","parent":"bone5","pivot":[6,19,0]},{"name":"righthand","parent":"knife_and_right","pivot":[6,19,0]},{"name":"righthand_1","parent":"righthand","pivot":[6,19,0]},{"name":"righthand_pos","parent":"righthand_1","pivot":[0,8,0],"cubes":[{"origin":[4,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[12,0],"uv_size":[3,12]},"east":{"uv":[0,0],"uv_size":[4,12]},"south":{"uv":[4,12],"uv_size":[3,12]},"west":{"uv":[4,0],"uv_size":[4,12]},"up":{"uv":[15,2],"uv_size":[3,4]},"down":{"uv":[15,10],"uv_size":[3,-4]}}}]},{"name":"annihil","parent":"knife_and_right","pivot":[0,6.8142,0.2954]},{"name":"devil","parent":"annihil","pivot":[0,6.8142,0.2954]},{"name":"group","parent":"devil","pivot":[0,6.8142,0.2954],"cubes":[{"origin":[-0.1591,-9.6354,-0.5356],"size":[0.0195,8.7247,1.1193],"pivot":[-0.1591,-2.5264,0.5836],"rotation":[0.6932,-7.3,-0.0939],"uv":{"north":{"uv":[12,0],"uv_size":[0.25,8]},"east":{"uv":[0,0],"uv_size":[1,8]},"south":{"uv":[8,12],"uv_size":[0.25,8]},"west":{"uv":[1,0],"uv_size":[1,8]},"up":{"uv":[41,20],"uv_size":[0.25,1]},"down":{"uv":[41,22],"uv_size":[0.25,-1]}}},{"origin":[0.1396,-9.6354,-0.5356],"size":[0.0195,8.7247,1.1193],"pivot":[0.1591,-2.5264,0.5836],"rotation":[0.6932,7.3,0.0939],"uv":{"north":{"uv":[12,8],"uv_size":[0.25,8]},"east":{"uv":[2,0],"uv_size":[1,8]},"south":{"uv":[9,12],"uv_size":[0.25,8]},"west":{"uv":[3,0],"uv_size":[1,8]},"up":{"uv":[22,41],"uv_size":[0.25,1]},"down":{"uv":[41,23],"uv_size":[0.25,-1]}}},{"origin":[-0.0053,-9.8904,-0.5253],"size":[0.0127,0.2424,1.1193],"pivot":[-0.0053,-9.648,-0.5253],"rotation":[3.19,0,-0.0635],"uv":{"north":{"uv":[59,21],"uv_size":[0.25,0.25]},"east":{"uv":[41,23],"uv_size":[1,0.25]},"south":{"uv":[22,59],"uv_size":[0.25,0.25]},"west":{"uv":[41,24],"uv_size":[1,0.25]},"up":{"uv":[41,25],"uv_size":[0.25,1]},"down":{"uv":[41,27],"uv_size":[0.25,-1]}}},{"origin":[-0.0051,-10.2794,-0.5119],"size":[0.0127,0.3894,1.1193],"pivot":[-0.0051,-9.89,-0.5119],"rotation":[21.19,0,-0.0635],"uv":{"north":{"uv":[59,22],"uv_size":[0.25,0.25]},"east":{"uv":[41,27],"uv_size":[1,0.25]},"south":{"uv":[23,59],"uv_size":[0.25,0.25]},"west":{"uv":[41,28],"uv_size":[1,0.25]},"up":{"uv":[41,29],"uv_size":[0.25,1]},"down":{"uv":[41,31],"uv_size":[0.25,-1]}}},{"origin":[-0.0076,-10.2794,-0.5119],"size":[0.0127,0.3894,1.1193],"pivot":[0.0051,-9.89,-0.5119],"rotation":[21.19,0,0.0635],"uv":{"north":{"uv":[59,23],"uv_size":[0.25,0.25]},"east":{"uv":[41,31],"uv_size":[1,0.25]},"south":{"uv":[24,59],"uv_size":[0.25,0.25]},"west":{"uv":[41,32],"uv_size":[1,0.25]},"up":{"uv":[41,33],"uv_size":[0.25,1]},"down":{"uv":[41,35],"uv_size":[0.25,-1]}}},{"origin":[-0.0074,-9.8904,-0.5253],"size":[0.0127,0.2424,1.1193],"pivot":[0.0053,-9.648,-0.5253],"rotation":[3.19,0,0.0635],"uv":{"north":{"uv":[59,24],"uv_size":[0.25,0.25]},"east":{"uv":[41,35],"uv_size":[1,0.25]},"south":{"uv":[25,59],"uv_size":[0.25,0.25]},"west":{"uv":[41,36],"uv_size":[1,0.25]},"up":{"uv":[41,37],"uv_size":[0.25,1]},"down":{"uv":[41,39],"uv_size":[0.25,-1]}}},{"origin":[-0.0047,-10.6473,-0.3711],"size":[0.0127,0.3942,1.1193],"pivot":[-0.0047,-10.2531,-0.3711],"rotation":[29.19,0,-0.0635],"uv":{"north":{"uv":[59,25],"uv_size":[0.25,0.25]},"east":{"uv":[41,39],"uv_size":[1,0.25]},"south":{"uv":[26,59],"uv_size":[0.25,0.25]},"west":{"uv":[40,41],"uv_size":[1,0.25]},"up":{"uv":[41,40],"uv_size":[0.25,1]},"down":{"uv":[41,42],"uv_size":[0.25,-1]}}},{"origin":[-0.008,-10.6473,-0.3711],"size":[0.0127,0.3942,1.1193],"pivot":[0.0047,-10.2531,-0.3711],"rotation":[29.19,0,0.0635],"uv":{"north":{"uv":[59,26],"uv_size":[0.25,0.25]},"east":{"uv":[42,0],"uv_size":[1,0.25]},"south":{"uv":[27,59],"uv_size":[0.25,0.25]},"west":{"uv":[42,1],"uv_size":[1,0.25]},"up":{"uv":[42,2],"uv_size":[0.25,1]},"down":{"uv":[42,4],"uv_size":[0.25,-1]}}},{"origin":[-0.0043,-11.2067,-0.1788],"size":[0.0127,0.6094,0.7086],"pivot":[-0.0043,-10.5972,-0.1788],"rotation":[36.94,0,-0.0635],"uv":{"north":{"uv":[50,50],"uv_size":[0.25,0.5]},"east":{"uv":[39,13],"uv_size":[0.75,0.5]},"south":{"uv":[0,51],"uv_size":[0.25,0.5]},"west":{"uv":[39,22],"uv_size":[0.75,0.5]},"up":{"uv":[17,46],"uv_size":[0.25,0.75]},"down":{"uv":[46,17.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0084,-11.2067,-0.1788],"size":[0.0127,0.6094,0.7086],"pivot":[0.0043,-10.5972,-0.1788],"rotation":[36.94,0,0.0635],"uv":{"north":{"uv":[51,0],"uv_size":[0.25,0.5]},"east":{"uv":[23,39],"uv_size":[0.75,0.5]},"south":{"uv":[1,51],"uv_size":[0.25,0.5]},"west":{"uv":[39,23],"uv_size":[0.75,0.5]},"up":{"uv":[18,46],"uv_size":[0.25,0.75]},"down":{"uv":[46,18.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0037,-11.6691,0.1874],"size":[0.0127,0.5847,0.2376],"pivot":[-0.0037,-11.0844,0.1874],"rotation":[42.19,0,-0.0635],"uv":{"north":{"uv":[51,1],"uv_size":[0.25,0.5]},"east":{"uv":[2,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,2],"uv_size":[0.25,0.5]},"west":{"uv":[3,51],"uv_size":[0.25,0.5]},"up":{"uv":[59,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.009,-11.6691,0.1874],"size":[0.0127,0.5847,0.2376],"pivot":[0.0037,-11.0844,0.1874],"rotation":[42.19,0,0.0635],"uv":{"north":{"uv":[51,3],"uv_size":[0.25,0.5]},"east":{"uv":[4,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,4],"uv_size":[0.25,0.5]},"west":{"uv":[5,51],"uv_size":[0.25,0.5]},"up":{"uv":[59,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1567,-9.9674,0.4709],"size":[0.0126,0.3122,0.1862],"pivot":[-0.1567,-9.6552,0.6571],"rotation":[14.9454,-9.269,-6.7401],"uv":{"north":{"uv":[59,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3117,-9.5943,0.6233],"size":[0.0744,0.1827,0.0114],"pivot":[-0.2374,-9.9109,0.6233],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[59,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3167,-9.4651,0.6148],"size":[0.0744,0.0591,0.0288],"pivot":[-0.2424,-9.9052,0.6148],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[59,35],"uv_size":[0.25,0.25]},"east":{"uv":[36,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,36],"uv_size":[0.25,0.25]},"west":{"uv":[37,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3314,-9.5164,0.5894],"size":[0.0744,0.0491,0.0245],"pivot":[-0.257,-9.9566,0.5894],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[59,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,39],"uv_size":[0.25,0.25]},"west":{"uv":[40,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1858,-9.6576,0.8377],"size":[0.0721,0.2792,0.0335],"pivot":[-0.1137,-9.4772,0.8377],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[59,41],"uv_size":[0.25,0.25]},"east":{"uv":[42,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,42],"uv_size":[0.25,0.25]},"west":{"uv":[43,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,43],"uv_size":[0.25,0.25]},"down":{"uv":[44,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.067,-9.4151,0.9575],"size":[0.0224,0.1042,0.0335],"pivot":[-0.0446,-9.2347,0.9575],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[59,44],"uv_size":[0.25,0.25]},"east":{"uv":[45,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,45],"uv_size":[0.25,0.25]},"west":{"uv":[46,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,46],"uv_size":[0.25,0.25]},"down":{"uv":[47,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0468,-9.4261,0.9728],"size":[0.0143,0.06,0.0335],"pivot":[-0.0325,-9.2457,0.9728],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[59,47],"uv_size":[0.25,0.25]},"east":{"uv":[48,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,48],"uv_size":[0.25,0.25]},"west":{"uv":[49,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,49],"uv_size":[0.25,0.25]},"down":{"uv":[50,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0404,-9.4331,0.9826],"size":[0.0157,0.0309,0.0335],"pivot":[-0.0247,-9.2527,0.9826],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[59,50],"uv_size":[0.25,0.25]},"east":{"uv":[51,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,51],"uv_size":[0.25,0.25]},"west":{"uv":[52,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,52],"uv_size":[0.25,0.25]},"down":{"uv":[53,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1549,-9.65,0.8868],"size":[0.0801,0.0773,0.0335],"pivot":[-0.0748,-9.5126,0.8868],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[59,53],"uv_size":[0.25,0.25]},"east":{"uv":[54,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,54],"uv_size":[0.25,0.25]},"west":{"uv":[55,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,55],"uv_size":[0.25,0.25]},"down":{"uv":[56,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0707,-9.5828,0.92],"size":[0.0151,0.1311,0.0335],"pivot":[-0.0556,-9.4455,0.92],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[59,56],"uv_size":[0.25,0.25]},"east":{"uv":[57,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,57],"uv_size":[0.25,0.25]},"west":{"uv":[58,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,58],"uv_size":[0.25,0.25]},"down":{"uv":[59,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-9.5902,0.9303],"size":[0.0432,0.0455,0.0335],"pivot":[-0.0475,-9.4529,0.9303],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[0,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,0],"uv_size":[0.25,0.25]},"south":{"uv":[1,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,1],"uv_size":[0.25,0.25]},"up":{"uv":[2,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0593,-9.5497,0.9464],"size":[0.0211,0.0457,0.0335],"pivot":[-0.0382,-9.4204,0.9464],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[3,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1881,-9.4772,0.8377],"size":[0.0744,0.2496,0.1032],"pivot":[-0.1137,-9.4772,0.8377],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[6,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1716,-9.3579,0.8675],"size":[0.0744,0.1486,0.056],"pivot":[-0.0972,-9.2093,0.8675],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[9,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1584,-9.2597,0.7603],"size":[0.0205,6.0549,0.2117],"pivot":[-0.1584,-9.6339,0.7603],"rotation":[-0.2894,30.2497,-0.1792],"uv":{"north":{"uv":[20,21],"uv_size":[0.25,5.5]},"east":{"uv":[21,20],"uv_size":[0.25,5.5]},"south":{"uv":[0,22],"uv_size":[0.25,5.5]},"west":{"uv":[22,0],"uv_size":[0.25,5.5]},"up":{"uv":[12,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1379,-9.2597,0.7603],"size":[0.0205,6.0549,0.2117],"pivot":[0.1584,-9.6339,0.7603],"rotation":[-0.2894,-30.2497,0.1792],"uv":{"north":{"uv":[1,22],"uv_size":[0.25,5.5]},"east":{"uv":[2,22],"uv_size":[0.25,5.5]},"south":{"uv":[3,22],"uv_size":[0.25,5.5]},"west":{"uv":[4,22],"uv_size":[0.25,5.5]},"up":{"uv":[13,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1422,-3.2197,0.9166],"size":[0.0205,3.8421,0.178],"pivot":[0.1627,-1.6819,0.9166],"rotation":[-0.3475,-43.9995,0.2748],"uv":{"north":{"uv":[28,7],"uv_size":[0.25,3.5]},"east":{"uv":[10,28],"uv_size":[0.25,3.5]},"south":{"uv":[11,28],"uv_size":[0.25,3.5]},"west":{"uv":[28,11],"uv_size":[0.25,3.5]},"up":{"uv":[14,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1627,-3.2197,0.9166],"size":[0.0205,3.8421,0.178],"pivot":[-0.1627,-1.6819,0.9166],"rotation":[-0.3475,43.9995,-0.2748],"uv":{"north":{"uv":[12,28],"uv_size":[0.25,3.5]},"east":{"uv":[13,28],"uv_size":[0.25,3.5]},"south":{"uv":[14,28],"uv_size":[0.25,3.5]},"west":{"uv":[28,15],"uv_size":[0.25,3.5]},"up":{"uv":[15,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1439,0.565,0.8844],"size":[0.1838,0.057,0.1702],"pivot":[0.0382,0.6219,1.0546],"rotation":[-18.8475,-43.9995,0.2748],"uv":{"north":{"uv":[16,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1439,0.565,0.8844],"size":[0.1838,0.057,0.1702],"pivot":[0.0382,0.6219,1.0546],"rotation":[-31.8378,-36.7415,20.1736],"uv":{"north":{"uv":[19,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0399,0.565,0.8844],"size":[0.1838,0.057,0.1702],"pivot":[-0.0382,0.6219,1.0546],"rotation":[-31.8378,36.7415,-20.1736],"uv":{"north":{"uv":[22,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0399,0.565,0.8844],"size":[0.1838,0.057,0.1702],"pivot":[-0.0382,0.6219,1.0546],"rotation":[-18.8475,43.9995,-0.2748],"uv":{"north":{"uv":[25,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0176,-3.2202,1.038],"size":[0.0205,3.8421,0.0763],"pivot":[0.0382,-3.2202,1.038],"rotation":[-90,-89.7526,90],"uv":{"north":{"uv":[28,19],"uv_size":[0.25,3.5]},"east":{"uv":[28,23],"uv_size":[0.25,3.5]},"south":{"uv":[26,28],"uv_size":[0.25,3.5]},"west":{"uv":[28,27],"uv_size":[0.25,3.5]},"up":{"uv":[28,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0964,0.4824,0.9783],"size":[0.0582,0.1395,0.0763],"pivot":[-0.0382,0.6219,1.0546],"rotation":[-90,-65.2526,90],"uv":{"north":{"uv":[29,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.435,-3.3973,0.7158],"size":[0.0205,0.3125,0.0763],"pivot":[0.0382,-2.8924,0.7158],"rotation":[-90,-69.2526,90],"uv":{"north":{"uv":[32,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0587,-3.5327,1.038],"size":[0.0205,0.3125,0.1724],"pivot":[-0.0382,-3.2202,1.038],"rotation":[-151.4366,-42.1916,159.9167],"uv":{"north":{"uv":[35,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0382,-3.5327,1.038],"size":[0.0205,0.3125,0.1724],"pivot":[0.0382,-3.2202,1.038],"rotation":[-151.4366,42.1916,-159.9167],"uv":{"north":{"uv":[38,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.8809,-9.5279,0.9321],"size":[0.0205,0.2733,0.0569],"pivot":[-0.8809,-15.2193,-0.5086],"rotation":[-0.2894,30.2497,-0.1792],"uv":{"north":{"uv":[41,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.8807,-9.6059,0.9309],"size":[0.0205,0.078,0.0086],"pivot":[-0.8807,-15.4926,-0.5098],"rotation":[-0.2894,30.2497,-0.1792],"uv":{"north":{"uv":[44,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,44],"uv_size":[0.25,0.25]},"south":{"uv":[45,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,45],"uv_size":[0.25,0.25]},"up":{"uv":[46,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.8764,-9.5903,0.9383],"size":[0.0205,0.0624,0.0121],"pivot":[-0.8764,-15.4927,-0.5024],"rotation":[-0.2894,30.2497,-0.1792],"uv":{"north":{"uv":[47,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,47],"uv_size":[0.25,0.25]},"south":{"uv":[48,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,48],"uv_size":[0.25,0.25]},"up":{"uv":[49,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1137,-9.4772,0.8377],"size":[0.0744,0.2496,0.1032],"pivot":[0.1137,-9.4772,0.8377],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[50,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,50],"uv_size":[0.25,0.25]},"south":{"uv":[51,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,51],"uv_size":[0.25,0.25]},"up":{"uv":[52,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2424,-9.4651,0.6148],"size":[0.0744,0.0591,0.0288],"pivot":[0.2424,-9.9052,0.6148],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[53,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,53],"uv_size":[0.25,0.25]},"south":{"uv":[54,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,54],"uv_size":[0.25,0.25]},"up":{"uv":[55,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,55.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2374,-9.5943,0.6233],"size":[0.0744,0.1827,0.0114],"pivot":[0.2374,-9.9109,0.6233],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[56,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,56],"uv_size":[0.25,0.25]},"south":{"uv":[57,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,57],"uv_size":[0.25,0.25]},"up":{"uv":[58,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.8603,-9.5279,0.9321],"size":[0.0205,0.2733,0.0569],"pivot":[0.8809,-15.2193,-0.5086],"rotation":[-0.2894,-30.2497,0.1792],"uv":{"north":{"uv":[59,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,59],"uv_size":[0.25,0.25]},"south":{"uv":[60,60],"uv_size":[0.25,0.25]},"west":{"uv":[0,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.257,-9.5164,0.5894],"size":[0.0744,0.0491,0.0245],"pivot":[0.257,-9.9566,0.5894],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[61,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.8602,-9.6059,0.9309],"size":[0.0205,0.078,0.0086],"pivot":[0.8807,-15.4926,-0.5098],"rotation":[-0.2894,-30.2497,0.1792],"uv":{"north":{"uv":[61,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.8559,-9.5903,0.9383],"size":[0.0205,0.0624,0.0121],"pivot":[0.8764,-15.4927,-0.5024],"rotation":[-0.2894,-30.2497,0.1792],"uv":{"north":{"uv":[61,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0972,-9.3579,0.8675],"size":[0.0744,0.1486,0.056],"pivot":[0.0972,-9.2093,0.8675],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[61,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0185,-10.0415,0.9919],"size":[0.0205,0.7812,0.028],"pivot":[0.0389,-9.2604,0.9448],"rotation":[-89.9999,-85.2501,89.9999],"uv":{"north":{"uv":[19,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,19],"uv_size":[0.25,0.75]},"south":{"uv":[20,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,20],"uv_size":[0.25,0.75]},"up":{"uv":[61,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0185,-10.82,0.9272],"size":[0.0205,0.7812,0.0137],"pivot":[0.0389,-10.0389,0.8801],"rotation":[-89.9999,-85.2501,89.9999],"uv":{"north":{"uv":[21,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,21],"uv_size":[0.25,0.75]},"south":{"uv":[22,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,22],"uv_size":[0.25,0.75]},"up":{"uv":[61,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0348,-11.6396,0.9919],"size":[0.0205,2.3793,0.0163],"pivot":[0.0553,-9.2604,0.9448],"rotation":[-89.9999,-85.2501,89.9999],"uv":{"north":{"uv":[35,0],"uv_size":[0.25,2.25]},"east":{"uv":[35,3],"uv_size":[0.25,2.25]},"south":{"uv":[6,35],"uv_size":[0.25,2.25]},"west":{"uv":[35,6],"uv_size":[0.25,2.25]},"up":{"uv":[61,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0287,-11.6315,0.7314],"size":[0.0205,2.3793,0.0163],"pivot":[-0.0082,-11.6315,0.7478],"rotation":[-91.0535,-85.2501,89.9999],"uv":{"north":{"uv":[7,35],"uv_size":[0.25,2.25]},"east":{"uv":[8,35],"uv_size":[0.25,2.25]},"south":{"uv":[9,35],"uv_size":[0.25,2.25]},"west":{"uv":[35,9],"uv_size":[0.25,2.25]},"up":{"uv":[61,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0724,-11.4219,0.9284],"size":[0.0205,2.1612,0.0163],"pivot":[-0.0519,-9.2608,0.9447],"rotation":[-7.8148,-52.49,5.1561],"uv":{"north":{"uv":[36,2],"uv_size":[0.25,2]},"east":{"uv":[4,36],"uv_size":[0.25,2]},"south":{"uv":[36,4],"uv_size":[0.25,2]},"west":{"uv":[5,36],"uv_size":[0.25,2]},"up":{"uv":[61,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1507,-11.4419,0.3936],"size":[0.0166,0.0525,0.0163],"pivot":[-0.277,-11.3895,0.4099],"rotation":[-7.9506,-53.2329,5.3264],"uv":{"north":{"uv":[61,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1566,-11.4942,0.3892],"size":[0.0117,0.0525,0.0163],"pivot":[-0.276,-11.4417,0.4056],"rotation":[-7.9506,-53.2329,5.3264],"uv":{"north":{"uv":[61,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1624,-11.5589,0.3849],"size":[0.0068,0.0649,0.0163],"pivot":[-0.2751,-11.494,0.4012],"rotation":[-7.9506,-53.2329,5.3264],"uv":{"north":{"uv":[61,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1897,-10.0946,0.912],"size":[0.1256,0.458,0.0163],"pivot":[-0.0641,-9.2597,0.9283],"rotation":[-7.8148,-52.49,5.1561],"uv":{"north":{"uv":[51,5],"uv_size":[0.25,0.5]},"east":{"uv":[6,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,6],"uv_size":[0.25,0.5]},"west":{"uv":[7,51],"uv_size":[0.25,0.5]},"up":{"uv":[61,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1087,-10.6781,0.8741],"size":[0.053,0.5851,0.0163],"pivot":[-0.0557,-9.716,0.8904],"rotation":[-7.8148,-52.49,5.1561],"uv":{"north":{"uv":[51,7],"uv_size":[0.25,0.5]},"east":{"uv":[8,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,8],"uv_size":[0.25,0.5]},"west":{"uv":[9,51],"uv_size":[0.25,0.5]},"up":{"uv":[61,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0557,-10.6781,0.8741],"size":[0.053,0.5851,0.0163],"pivot":[0.0557,-9.716,0.8904],"rotation":[-7.8148,52.49,-5.1561],"uv":{"north":{"uv":[51,9],"uv_size":[0.25,0.5]},"east":{"uv":[10,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,10],"uv_size":[0.25,0.5]},"west":{"uv":[11,51],"uv_size":[0.25,0.5]},"up":{"uv":[61,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0641,-10.0946,0.912],"size":[0.1256,0.458,0.0163],"pivot":[0.0641,-9.2597,0.9283],"rotation":[-7.8148,52.49,-5.1561],"uv":{"north":{"uv":[51,11],"uv_size":[0.25,0.5]},"east":{"uv":[12,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,12],"uv_size":[0.25,0.5]},"west":{"uv":[13,51],"uv_size":[0.25,0.5]},"up":{"uv":[61,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0519,-11.4219,0.9284],"size":[0.0205,2.1612,0.0163],"pivot":[0.0519,-9.2608,0.9447],"rotation":[-7.8148,52.49,-5.1561],"uv":{"north":{"uv":[36,6],"uv_size":[0.25,2]},"east":{"uv":[36,8],"uv_size":[0.25,2]},"south":{"uv":[36,10],"uv_size":[0.25,2]},"west":{"uv":[36,12],"uv_size":[0.25,2]},"up":{"uv":[61,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1137,-9.6576,0.8377],"size":[0.0721,0.2792,0.0335],"pivot":[0.1137,-9.4772,0.8377],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0475,-9.5902,0.9303],"size":[0.0432,0.0455,0.0335],"pivot":[0.0475,-9.4529,0.9303],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,35],"uv_size":[0.25,0.25]},"east":{"uv":[36,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,36],"uv_size":[0.25,0.25]},"west":{"uv":[37,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0556,-9.5828,0.92],"size":[0.0151,0.1311,0.0335],"pivot":[0.0556,-9.4455,0.92],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,39],"uv_size":[0.25,0.25]},"west":{"uv":[40,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0382,-9.5497,0.9464],"size":[0.0211,0.0457,0.0335],"pivot":[0.0382,-9.4204,0.9464],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,41],"uv_size":[0.25,0.25]},"east":{"uv":[42,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,42],"uv_size":[0.25,0.25]},"west":{"uv":[43,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,43],"uv_size":[0.25,0.25]},"down":{"uv":[44,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0748,-9.65,0.8868],"size":[0.0801,0.0773,0.0335],"pivot":[0.0748,-9.5126,0.8868],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,44],"uv_size":[0.25,0.25]},"east":{"uv":[45,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,45],"uv_size":[0.25,0.25]},"west":{"uv":[46,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,46],"uv_size":[0.25,0.25]},"down":{"uv":[47,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0446,-9.4151,0.9575],"size":[0.0224,0.1042,0.0335],"pivot":[0.0446,-9.2347,0.9575],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,47],"uv_size":[0.25,0.25]},"east":{"uv":[48,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,48],"uv_size":[0.25,0.25]},"west":{"uv":[49,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,49],"uv_size":[0.25,0.25]},"down":{"uv":[50,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0325,-9.4261,0.9728],"size":[0.0143,0.06,0.0335],"pivot":[0.0325,-9.2457,0.9728],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,50],"uv_size":[0.25,0.25]},"east":{"uv":[51,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,51],"uv_size":[0.25,0.25]},"west":{"uv":[52,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,52],"uv_size":[0.25,0.25]},"down":{"uv":[53,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0247,-9.4331,0.9826],"size":[0.0157,0.0309,0.0335],"pivot":[0.0247,-9.2527,0.9826],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,53],"uv_size":[0.25,0.25]},"east":{"uv":[54,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,54],"uv_size":[0.25,0.25]},"west":{"uv":[55,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,55],"uv_size":[0.25,0.25]},"down":{"uv":[56,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1673,-11.4419,0.3936],"size":[0.0166,0.0525,0.0163],"pivot":[0.277,-11.3895,0.4099],"rotation":[-7.9506,53.2329,-5.3264],"uv":{"north":{"uv":[61,56],"uv_size":[0.25,0.25]},"east":{"uv":[57,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,57],"uv_size":[0.25,0.25]},"west":{"uv":[58,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,58],"uv_size":[0.25,0.25]},"down":{"uv":[59,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1683,-11.4942,0.3892],"size":[0.0117,0.0525,0.0163],"pivot":[0.276,-11.4417,0.4056],"rotation":[-7.9506,53.2329,-5.3264],"uv":{"north":{"uv":[61,59],"uv_size":[0.25,0.25]},"east":{"uv":[60,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,60],"uv_size":[0.25,0.25]},"west":{"uv":[61,61],"uv_size":[0.25,0.25]},"up":{"uv":[0,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1693,-11.5589,0.3849],"size":[0.0068,0.0649,0.0163],"pivot":[0.2751,-11.494,0.4012],"rotation":[-7.9506,53.2329,-5.3264],"uv":{"north":{"uv":[1,62],"uv_size":[0.25,0.25]},"east":{"uv":[62,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,62],"uv_size":[0.25,0.25]},"west":{"uv":[62,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0389,-10.0415,0.9919],"size":[0.0205,0.7812,0.028],"pivot":[-0.0389,-9.2604,0.9448],"rotation":[-89.9999,85.2501,-89.9999],"uv":{"north":{"uv":[23,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,23],"uv_size":[0.25,0.75]},"south":{"uv":[24,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,24],"uv_size":[0.25,0.75]},"up":{"uv":[4,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0082,-11.6315,0.7314],"size":[0.0205,2.3793,0.0163],"pivot":[0.0082,-11.6315,0.7478],"rotation":[-91.0535,85.2501,-89.9999],"uv":{"north":{"uv":[10,35],"uv_size":[0.25,2.25]},"east":{"uv":[11,35],"uv_size":[0.25,2.25]},"south":{"uv":[12,35],"uv_size":[0.25,2.25]},"west":{"uv":[35,12],"uv_size":[0.25,2.25]},"up":{"uv":[5,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0389,-10.82,0.9272],"size":[0.0205,0.7812,0.0137],"pivot":[-0.0389,-10.0389,0.8801],"rotation":[-89.9999,85.2501,-89.9999],"uv":{"north":{"uv":[25,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,25],"uv_size":[0.25,0.75]},"south":{"uv":[26,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,26],"uv_size":[0.25,0.75]},"up":{"uv":[6,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1617,-2.3983,0.8299],"size":[0.3235,0.8046,0.2482],"inflate":-0.001,"pivot":[-0.1549,-3.2197,0.9099],"rotation":[17.5,0,0],"uv":{"north":{"uv":[27,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,27],"uv_size":[0.25,0.75]},"south":{"uv":[28,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,28],"uv_size":[0.25,0.75]},"up":{"uv":[7,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1618,-2.4605,0.3381],"size":[0.2092,0.8048,0.2484],"pivot":[-0.1618,-2.4605,0.5865],"rotation":[18.0778,-14.2906,-4.6066],"uv":{"north":{"uv":[29,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,29],"uv_size":[0.25,0.75]},"south":{"uv":[30,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,30],"uv_size":[0.25,0.75]},"up":{"uv":[8,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1618,-1.6182,0.333],"size":[0.3237,0.2931,0.2484],"pivot":[-0.1549,-1.6182,0.5814],"rotation":[29.5,0,0],"uv":{"north":{"uv":[9,62],"uv_size":[0.25,0.25]},"east":{"uv":[62,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,62],"uv_size":[0.25,0.25]},"west":{"uv":[62,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1618,-1.7406,0.0037],"size":[0.1513,0.2931,0.3615],"pivot":[-0.1618,-1.7406,0.3652],"rotation":[30.3588,-13.0184,-7.5164],"uv":{"north":{"uv":[12,62],"uv_size":[0.25,0.25]},"east":{"uv":[62,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,62],"uv_size":[0.25,0.25]},"west":{"uv":[62,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0105,-1.7406,0.0037],"size":[0.1513,0.2931,0.3615],"pivot":[0.1618,-1.7406,0.3652],"rotation":[30.3588,13.0184,7.5164],"uv":{"north":{"uv":[15,62],"uv_size":[0.25,0.25]},"east":{"uv":[62,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,62],"uv_size":[0.25,0.25]},"west":{"uv":[62,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0474,-2.4605,0.3381],"size":[0.2092,0.8048,0.2484],"pivot":[0.1618,-2.4605,0.5865],"rotation":[18.0778,14.2906,4.6066],"uv":{"north":{"uv":[31,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,31],"uv_size":[0.25,0.75]},"south":{"uv":[32,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,32],"uv_size":[0.25,0.75]},"up":{"uv":[18,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1619,-1.3651,0.1887],"size":[0.1134,0.9844,0.2484],"pivot":[-0.1653,-1.3631,0.4371],"rotation":[28.9663,-1.4768,2.5782],"uv":{"north":{"uv":[42,4],"uv_size":[0.25,1]},"east":{"uv":[42,5],"uv_size":[0.25,1]},"south":{"uv":[42,6],"uv_size":[0.25,1]},"west":{"uv":[42,7],"uv_size":[0.25,1]},"up":{"uv":[19,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1656,-1.0899,0.0863],"size":[0.1134,0.5738,0.3023],"pivot":[-0.1608,-1.0899,0.0863],"rotation":[28.9663,-1.4768,2.5782],"uv":{"north":{"uv":[51,13],"uv_size":[0.25,0.5]},"east":{"uv":[14,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,14],"uv_size":[0.25,0.5]},"west":{"uv":[15,51],"uv_size":[0.25,0.5]},"up":{"uv":[20,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1656,-1.6635,0.0862],"size":[0.1134,0.5738,0.3023],"pivot":[-0.1656,-1.0897,0.0862],"rotation":[36.4663,-1.4768,2.5782],"uv":{"north":{"uv":[51,15],"uv_size":[0.25,0.5]},"east":{"uv":[16,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,16],"uv_size":[0.25,0.5]},"west":{"uv":[17,51],"uv_size":[0.25,0.5]},"up":{"uv":[21,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0818,-2.0567,0.4271],"size":[0.1134,0.5064,0.208],"pivot":[0.1951,-1.5503,0.4271],"rotation":[48.9663,1.4768,-2.5782],"uv":{"north":{"uv":[51,17],"uv_size":[0.25,0.5]},"east":{"uv":[18,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,18],"uv_size":[0.25,0.5]},"west":{"uv":[19,51],"uv_size":[0.25,0.5]},"up":{"uv":[22,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1951,-2.0567,0.4271],"size":[0.1134,0.5064,0.208],"pivot":[-0.1951,-1.5503,0.4271],"rotation":[48.9663,-1.4768,2.5782],"uv":{"north":{"uv":[51,19],"uv_size":[0.25,0.5]},"east":{"uv":[20,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,20],"uv_size":[0.25,0.5]},"west":{"uv":[21,51],"uv_size":[0.25,0.5]},"up":{"uv":[23,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0522,-1.6635,0.0862],"size":[0.1134,0.5738,0.3023],"pivot":[0.1656,-1.0897,0.0862],"rotation":[36.4663,1.4768,-2.5782],"uv":{"north":{"uv":[51,21],"uv_size":[0.25,0.5]},"east":{"uv":[22,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,22],"uv_size":[0.25,0.5]},"west":{"uv":[23,51],"uv_size":[0.25,0.5]},"up":{"uv":[24,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1359,-0.5888,-0.1915],"size":[0.1134,0.6478,0.3023],"pivot":[-0.131,-0.5888,-0.1915],"rotation":[20.9959,-0.9396,1.1774],"uv":{"north":{"uv":[51,23],"uv_size":[0.25,0.5]},"east":{"uv":[24,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,24],"uv_size":[0.25,0.5]},"west":{"uv":[25,51],"uv_size":[0.25,0.5]},"up":{"uv":[25,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1197,0.0158,-0.4236],"size":[0.1134,0.6478,0.3023],"pivot":[-0.1148,0.0158,-0.4236],"rotation":[9.9959,-0.9396,1.1774],"uv":{"north":{"uv":[51,25],"uv_size":[0.25,0.5]},"east":{"uv":[26,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,26],"uv_size":[0.25,0.5]},"west":{"uv":[27,51],"uv_size":[0.25,0.5]},"up":{"uv":[26,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1047,0.6536,-0.536],"size":[0.1403,0.6478,0.3023],"pivot":[-0.0998,0.6536,-0.536],"rotation":[2.0349,-0.8517,-1.3214],"uv":{"north":{"uv":[51,27],"uv_size":[0.25,0.5]},"east":{"uv":[28,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,28],"uv_size":[0.25,0.5]},"west":{"uv":[29,51],"uv_size":[0.25,0.5]},"up":{"uv":[27,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.27,0.2875,-0.2742],"size":[0.2211,0.6478,0.2445],"pivot":[-0.27,0.9353,-0.2742],"rotation":[8.2887,-0.8505,-1.5714],"uv":{"north":{"uv":[51,29],"uv_size":[0.25,0.5]},"east":{"uv":[30,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,30],"uv_size":[0.25,0.5]},"west":{"uv":[31,51],"uv_size":[0.25,0.5]},"up":{"uv":[28,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.27,0.2674,-0.2717],"size":[0.2185,0.699,0.242],"pivot":[-0.27,0.9353,-0.2742],"rotation":[11.474,43.5627,6.5156],"uv":{"north":{"uv":[33,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,33],"uv_size":[0.25,0.75]},"south":{"uv":[34,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,34],"uv_size":[0.25,0.75]},"up":{"uv":[29,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2538,-0.359,-0.18],"size":[0.221,0.6535,0.2437],"pivot":[-0.2538,0.2945,-0.1809],"rotation":[15.7887,-0.8505,-1.5714],"uv":{"north":{"uv":[51,31],"uv_size":[0.25,0.5]},"east":{"uv":[32,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,32],"uv_size":[0.25,0.5]},"west":{"uv":[33,51],"uv_size":[0.25,0.5]},"up":{"uv":[30,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2538,-0.3805,-0.1793],"size":[0.2194,0.675,0.2429],"pivot":[-0.2538,0.2945,-0.1809],"rotation":[21.4947,42.0562,13.4467],"uv":{"north":{"uv":[51,33],"uv_size":[0.25,0.5]},"east":{"uv":[34,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,34],"uv_size":[0.25,0.5]},"west":{"uv":[35,51],"uv_size":[0.25,0.5]},"up":{"uv":[31,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0328,-0.359,-0.18],"size":[0.221,0.6535,0.2437],"pivot":[0.2538,0.2945,-0.1809],"rotation":[15.7887,0.8505,1.5714],"uv":{"north":{"uv":[51,35],"uv_size":[0.25,0.5]},"east":{"uv":[36,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,36],"uv_size":[0.25,0.5]},"west":{"uv":[37,51],"uv_size":[0.25,0.5]},"up":{"uv":[32,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,32.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2393,-1.0438,-0.0046],"size":[0.2211,0.7151,0.2445],"pivot":[-0.2393,-0.3287,-0.0046],"rotation":[24.261,-1.4672,-0.2038],"uv":{"north":{"uv":[35,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,35],"uv_size":[0.25,0.75]},"south":{"uv":[36,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,36],"uv_size":[0.25,0.75]},"up":{"uv":[33,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2393,-1.0615,-0.0039],"size":[0.2204,0.7328,0.2439],"pivot":[-0.2393,-0.3287,-0.0046],"rotation":[31.7975,38.7807,21.6791],"uv":{"north":{"uv":[37,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,37],"uv_size":[0.25,0.75]},"south":{"uv":[38,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,38],"uv_size":[0.25,0.75]},"up":{"uv":[34,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2445,-1.8036,0.2891],"size":[0.2211,0.8229,0.2445],"pivot":[-0.2445,-0.9807,0.2891],"rotation":[31.5252,-1.0751,-0.8433],"uv":{"north":{"uv":[39,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,39],"uv_size":[0.25,0.75]},"south":{"uv":[40,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,40],"uv_size":[0.25,0.75]},"up":{"uv":[35,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2445,-1.8036,0.2891],"size":[0.2211,0.8229,0.2445],"pivot":[-0.2445,-0.9807,0.2891],"rotation":[40.3246,36.1125,26.393],"uv":{"north":{"uv":[41,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,41],"uv_size":[0.25,0.75]},"south":{"uv":[42,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,42],"uv_size":[0.25,0.75]},"up":{"uv":[36,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2422,-1.8453,0.7193],"size":[0.2211,0.1631,0.2445],"pivot":[-0.2422,-1.6822,0.7193],"rotation":[31.1165,5.4417,-11.5237],"uv":{"north":{"uv":[37,62],"uv_size":[0.25,0.25]},"east":{"uv":[62,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,62],"uv_size":[0.25,0.25]},"west":{"uv":[62,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.27,0.9247,-0.2742],"size":[0.2208,0.6584,0.2445],"pivot":[-0.27,0.9353,-0.2742],"rotation":[0.3291,-0.8356,-4.3217],"uv":{"north":{"uv":[51,37],"uv_size":[0.25,0.5]},"east":{"uv":[38,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,38],"uv_size":[0.25,0.5]},"west":{"uv":[39,51],"uv_size":[0.25,0.5]},"up":{"uv":[40,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3224,0.8163,-0.0335],"size":[0.2208,0.7661,0.81],"pivot":[-0.3224,1.5824,-0.0335],"rotation":[0.3541,21.664,-4.1861],"uv":{"north":{"uv":[43,46],"uv_size":[0.25,0.75]},"east":{"uv":[33,28],"uv_size":[0.75,0.75]},"south":{"uv":[46,43],"uv_size":[0.25,0.75]},"west":{"uv":[13,35],"uv_size":[0.75,0.75]},"up":{"uv":[44,46],"uv_size":[0.25,0.75]},"down":{"uv":[46,44.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.27,0.9247,-0.2742],"size":[0.3151,0.6584,0.2445],"pivot":[-0.27,0.9353,-0.2742],"rotation":[0.4588,44.1634,-3.9973],"uv":{"north":{"uv":[51,39],"uv_size":[0.25,0.5]},"east":{"uv":[40,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,40],"uv_size":[0.25,0.5]},"west":{"uv":[41,51],"uv_size":[0.25,0.5]},"up":{"uv":[41,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0491,0.9247,-0.2742],"size":[0.2208,0.6584,0.2445],"pivot":[0.27,0.9353,-0.2742],"rotation":[0.3291,0.8356,4.3217],"uv":{"north":{"uv":[51,41],"uv_size":[0.25,0.5]},"east":{"uv":[42,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,42],"uv_size":[0.25,0.5]},"west":{"uv":[43,51],"uv_size":[0.25,0.5]},"up":{"uv":[42,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3187,1.5746,-0.278],"size":[0.221,0.6546,0.2445],"pivot":[-0.3187,1.5813,-0.278],"rotation":[-7.1422,-1.0537,-6.0583],"uv":{"north":{"uv":[51,43],"uv_size":[0.25,0.5]},"east":{"uv":[44,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,44],"uv_size":[0.25,0.5]},"west":{"uv":[45,51],"uv_size":[0.25,0.5]},"up":{"uv":[43,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3893,1.5351,0.0452],"size":[0.221,0.6546,0.8639],"pivot":[-0.3893,2.1896,0.0452],"rotation":[-7.6657,21.2637,-8.9848],"uv":{"north":{"uv":[51,45],"uv_size":[0.25,0.5]},"east":{"uv":[24,39],"uv_size":[0.75,0.5]},"south":{"uv":[46,51],"uv_size":[0.25,0.5]},"west":{"uv":[39,24],"uv_size":[0.75,0.5]},"up":{"uv":[45,46],"uv_size":[0.25,0.75]},"down":{"uv":[46,45.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.1016,0.8163,-0.0335],"size":[0.2208,0.7661,0.81],"pivot":[0.3224,1.5824,-0.0335],"rotation":[0.3541,-21.664,4.1861],"uv":{"north":{"uv":[46,46],"uv_size":[0.25,0.75]},"east":{"uv":[14,35],"uv_size":[0.75,0.75]},"south":{"uv":[0,47],"uv_size":[0.25,0.75]},"west":{"uv":[35,15],"uv_size":[0.75,0.75]},"up":{"uv":[47,0],"uv_size":[0.25,0.75]},"down":{"uv":[1,47.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.1683,1.5351,0.0452],"size":[0.221,0.6546,0.8639],"pivot":[0.3893,2.1896,0.0452],"rotation":[-7.6657,-21.2637,8.9848],"uv":{"north":{"uv":[51,46],"uv_size":[0.25,0.5]},"east":{"uv":[25,39],"uv_size":[0.75,0.5]},"south":{"uv":[47,51],"uv_size":[0.25,0.5]},"west":{"uv":[39,25],"uv_size":[0.75,0.5]},"up":{"uv":[47,1],"uv_size":[0.25,0.75]},"down":{"uv":[2,47.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.3187,1.5454,-0.2773],"size":[0.313,0.6837,0.2439],"pivot":[-0.3187,1.5813,-0.278],"rotation":[-9.8697,43.5114,-13.0211],"uv":{"north":{"uv":[51,47],"uv_size":[0.25,0.5]},"east":{"uv":[48,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,48],"uv_size":[0.25,0.5]},"west":{"uv":[49,51],"uv_size":[0.25,0.5]},"up":{"uv":[44,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0978,1.5746,-0.278],"size":[0.221,0.6546,0.2445],"pivot":[0.3187,1.5813,-0.278],"rotation":[-7.1422,1.0537,6.0583],"uv":{"north":{"uv":[51,49],"uv_size":[0.25,0.5]},"east":{"uv":[50,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,50],"uv_size":[0.25,0.5]},"west":{"uv":[51,51],"uv_size":[0.25,0.5]},"up":{"uv":[45,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3881,2.1944,-0.1974],"size":[0.2196,0.3237,0.2445],"pivot":[-0.3881,2.2203,-0.1974],"rotation":[-8.7091,-2.0876,-12.7312],"uv":{"north":{"uv":[46,62],"uv_size":[0.25,0.25]},"east":{"uv":[62,46],"uv_size":[0.25,0.25]},"south":{"uv":[47,62],"uv_size":[0.25,0.25]},"west":{"uv":[62,47],"uv_size":[0.25,0.25]},"up":{"uv":[48,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1228,2.1348,-0.0193],"size":[0.2196,0.4045,0.5946],"pivot":[-0.1228,2.1608,0.5732],"rotation":[-9.6171,25.0754,-17.1584],"uv":{"north":{"uv":[49,62],"uv_size":[0.25,0.25]},"east":{"uv":[0,52],"uv_size":[0.5,0.25]},"south":{"uv":[62,49],"uv_size":[0.25,0.25]},"west":{"uv":[52,0],"uv_size":[0.5,0.25]},"up":{"uv":[1,52],"uv_size":[0.25,0.5]},"down":{"uv":[52,1.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0968,2.1348,-0.0193],"size":[0.2196,0.4045,0.5946],"pivot":[0.1228,2.1608,0.5732],"rotation":[-9.6171,-25.0754,17.1584],"uv":{"north":{"uv":[50,62],"uv_size":[0.25,0.25]},"east":{"uv":[2,52],"uv_size":[0.5,0.25]},"south":{"uv":[62,50],"uv_size":[0.25,0.25]},"west":{"uv":[52,2],"uv_size":[0.5,0.25]},"up":{"uv":[3,52],"uv_size":[0.25,0.5]},"down":{"uv":[52,3.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3881,2.1876,-0.1984],"size":[0.3113,0.3305,0.2455],"pivot":[-0.3881,2.2203,-0.1974],"rotation":[-11.8011,42.2783,-21.0517],"uv":{"north":{"uv":[51,62],"uv_size":[0.25,0.25]},"east":{"uv":[62,51],"uv_size":[0.25,0.25]},"south":{"uv":[52,62],"uv_size":[0.25,0.25]},"west":{"uv":[62,52],"uv_size":[0.25,0.25]},"up":{"uv":[53,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0234,-1.8036,0.2891],"size":[0.2211,0.8229,0.2445],"pivot":[0.2445,-0.9807,0.2891],"rotation":[40.3246,-36.1125,-26.393],"uv":{"north":{"uv":[47,2],"uv_size":[0.25,0.75]},"east":{"uv":[3,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,3],"uv_size":[0.25,0.75]},"west":{"uv":[4,47],"uv_size":[0.25,0.75]},"up":{"uv":[54,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0189,-1.0615,-0.0039],"size":[0.2204,0.7328,0.2439],"pivot":[0.2393,-0.3287,-0.0046],"rotation":[31.7975,-38.7807,-21.6791],"uv":{"north":{"uv":[47,4],"uv_size":[0.25,0.75]},"east":{"uv":[5,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,5],"uv_size":[0.25,0.75]},"west":{"uv":[6,47],"uv_size":[0.25,0.75]},"up":{"uv":[55,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,55.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0344,-0.3805,-0.1793],"size":[0.2194,0.675,0.2429],"pivot":[0.2538,0.2945,-0.1809],"rotation":[21.4947,-42.0562,-13.4467],"uv":{"north":{"uv":[4,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,4],"uv_size":[0.25,0.5]},"south":{"uv":[5,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,5],"uv_size":[0.25,0.5]},"up":{"uv":[56,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0515,0.2674,-0.2717],"size":[0.2185,0.699,0.242],"pivot":[0.27,0.9353,-0.2742],"rotation":[11.474,-43.5627,-6.5156],"uv":{"north":{"uv":[47,6],"uv_size":[0.25,0.75]},"east":{"uv":[7,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,7],"uv_size":[0.25,0.75]},"west":{"uv":[8,47],"uv_size":[0.25,0.75]},"up":{"uv":[57,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,57.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0451,0.9247,-0.2742],"size":[0.3151,0.6584,0.2445],"pivot":[0.27,0.9353,-0.2742],"rotation":[0.4588,-44.1634,3.9973],"uv":{"north":{"uv":[6,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,6],"uv_size":[0.25,0.5]},"south":{"uv":[7,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,7],"uv_size":[0.25,0.5]},"up":{"uv":[58,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0767,2.1876,-0.1984],"size":[0.3113,0.3305,0.2455],"pivot":[0.3881,2.2203,-0.1974],"rotation":[-11.8011,-42.2783,21.0517],"uv":{"north":{"uv":[59,62],"uv_size":[0.25,0.25]},"east":{"uv":[62,59],"uv_size":[0.25,0.25]},"south":{"uv":[60,62],"uv_size":[0.25,0.25]},"west":{"uv":[62,60],"uv_size":[0.25,0.25]},"up":{"uv":[61,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0057,1.5454,-0.2773],"size":[0.313,0.6837,0.2439],"pivot":[0.3187,1.5813,-0.278],"rotation":[-9.8697,-43.5114,13.0211],"uv":{"north":{"uv":[8,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,8],"uv_size":[0.25,0.5]},"south":{"uv":[9,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,9],"uv_size":[0.25,0.5]},"up":{"uv":[62,62],"uv_size":[0.25,0.25]},"down":{"uv":[0,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4603,2.497,-0.1437],"size":[0.2182,0.3329,0.2398],"pivot":[-0.4603,2.5321,-0.1484],"rotation":[-18.357,-2.7834,-15.1346],"uv":{"north":{"uv":[63,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,63],"uv_size":[0.25,0.25]},"south":{"uv":[63,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,63],"uv_size":[0.25,0.25]},"up":{"uv":[63,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5383,2.8022,-0.0503],"size":[0.2182,1.0061,0.2398],"pivot":[-0.5383,2.8022,-0.0503],"rotation":[-18.1505,3.9423,5.0356],"uv":{"north":{"uv":[42,8],"uv_size":[0.25,1]},"east":{"uv":[42,9],"uv_size":[0.25,1]},"south":{"uv":[42,10],"uv_size":[0.25,1]},"west":{"uv":[42,11],"uv_size":[0.25,1]},"up":{"uv":[63,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.311,2.7264,0.177],"size":[0.2182,1.0061,0.2398],"pivot":[0.5293,2.7264,0.177],"rotation":[-22.8609,-36.8745,7.8709],"uv":{"north":{"uv":[42,12],"uv_size":[0.25,1]},"east":{"uv":[42,13],"uv_size":[0.25,1]},"south":{"uv":[42,14],"uv_size":[0.25,1]},"west":{"uv":[42,15],"uv_size":[0.25,1]},"up":{"uv":[63,4],"uv_size":[0.25,0.25]},"down":{"uv":[5,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.233,2.4212,0.0836],"size":[0.2182,0.3329,0.2936],"pivot":[0.4513,2.4563,0.0788],"rotation":[-20.4973,-26.0593,25.3839],"uv":{"north":{"uv":[63,5],"uv_size":[0.25,0.25]},"east":{"uv":[6,63],"uv_size":[0.25,0.25]},"south":{"uv":[63,6],"uv_size":[0.25,0.25]},"west":{"uv":[7,63],"uv_size":[0.25,0.25]},"up":{"uv":[63,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4513,2.4212,0.0836],"size":[0.2182,0.3329,0.2936],"pivot":[-0.4513,2.4563,0.0788],"rotation":[-20.4973,26.0593,-25.3839],"uv":{"north":{"uv":[63,8],"uv_size":[0.25,0.25]},"east":{"uv":[9,63],"uv_size":[0.25,0.25]},"south":{"uv":[63,9],"uv_size":[0.25,0.25]},"west":{"uv":[10,63],"uv_size":[0.25,0.25]},"up":{"uv":[63,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5293,2.7264,0.177],"size":[0.2182,1.0061,0.2398],"pivot":[-0.5293,2.7264,0.177],"rotation":[-22.8609,36.8745,-7.8709],"uv":{"north":{"uv":[42,16],"uv_size":[0.25,1]},"east":{"uv":[42,17],"uv_size":[0.25,1]},"south":{"uv":[42,18],"uv_size":[0.25,1]},"west":{"uv":[42,19],"uv_size":[0.25,1]},"up":{"uv":[63,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5383,2.8022,-0.4121],"size":[0.2182,1.0061,0.3619],"pivot":[-0.5383,2.8022,-0.0503],"rotation":[-18.1309,-2.9482,7.2916],"uv":{"north":{"uv":[20,42],"uv_size":[0.25,1]},"east":{"uv":[42,20],"uv_size":[0.25,1]},"south":{"uv":[21,42],"uv_size":[0.25,1]},"west":{"uv":[42,21],"uv_size":[0.25,1]},"up":{"uv":[63,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.138,1.9103,-0.5024],"size":[0.1443,0.3543,0.3619],"pivot":[-0.138,2.2646,-0.5024],"rotation":[-6.4475,-9.5838,-10.2331],"uv":{"north":{"uv":[63,13],"uv_size":[0.25,0.25]},"east":{"uv":[14,63],"uv_size":[0.25,0.25]},"south":{"uv":[63,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,63],"uv_size":[0.25,0.25]},"up":{"uv":[63,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0063,1.9103,-0.5024],"size":[0.1443,0.3543,0.3619],"pivot":[0.138,2.2646,-0.5024],"rotation":[-6.4475,9.5838,10.2331],"uv":{"north":{"uv":[63,16],"uv_size":[0.25,0.25]},"east":{"uv":[17,63],"uv_size":[0.25,0.25]},"south":{"uv":[63,17],"uv_size":[0.25,0.25]},"west":{"uv":[18,63],"uv_size":[0.25,0.25]},"up":{"uv":[63,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0705,1.6879,-0.5407],"size":[0.0907,0.2392,0.3619],"pivot":[-0.0705,1.9271,-0.5407],"rotation":[-7.2596,-8.9868,-5.2029],"uv":{"north":{"uv":[63,19],"uv_size":[0.25,0.25]},"east":{"uv":[20,63],"uv_size":[0.25,0.25]},"south":{"uv":[63,20],"uv_size":[0.25,0.25]},"west":{"uv":[21,63],"uv_size":[0.25,0.25]},"up":{"uv":[63,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0203,1.6879,-0.5407],"size":[0.0907,0.2392,0.3619],"pivot":[0.0705,1.9271,-0.5407],"rotation":[-7.2596,8.9868,5.2029],"uv":{"north":{"uv":[63,22],"uv_size":[0.25,0.25]},"east":{"uv":[23,63],"uv_size":[0.25,0.25]},"south":{"uv":[63,23],"uv_size":[0.25,0.25]},"west":{"uv":[24,63],"uv_size":[0.25,0.25]},"up":{"uv":[63,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.153,2.2365,-0.4708],"size":[0.0902,0.3566,0.3619],"pivot":[0.2431,2.5931,-0.4708],"rotation":[-5.3158,10.2507,16.797],"uv":{"north":{"uv":[63,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,63],"uv_size":[0.25,0.25]},"south":{"uv":[63,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,63],"uv_size":[0.25,0.25]},"up":{"uv":[63,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2431,2.2365,-0.4708],"size":[0.0902,0.3566,0.3619],"pivot":[-0.2431,2.5931,-0.4708],"rotation":[-5.3158,-10.2507,-16.797],"uv":{"north":{"uv":[63,28],"uv_size":[0.25,0.25]},"east":{"uv":[29,63],"uv_size":[0.25,0.25]},"south":{"uv":[63,29],"uv_size":[0.25,0.25]},"west":{"uv":[30,63],"uv_size":[0.25,0.25]},"up":{"uv":[63,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2882,2.4643,-0.3937],"size":[0.2182,0.4474,0.3619],"pivot":[0.5065,2.9117,-0.3937],"rotation":[-10.9359,14.84,36.7504],"uv":{"north":{"uv":[10,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,10],"uv_size":[0.25,0.5]},"south":{"uv":[11,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,11],"uv_size":[0.25,0.5]},"up":{"uv":[63,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5065,2.4643,-0.3937],"size":[0.2182,0.4474,0.3619],"pivot":[-0.5065,2.9117,-0.3937],"rotation":[-10.9359,-14.84,-36.7504],"uv":{"north":{"uv":[12,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,12],"uv_size":[0.25,0.5]},"south":{"uv":[13,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,13],"uv_size":[0.25,0.5]},"up":{"uv":[63,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.442,3.8284,0.2749],"size":[0.2182,1.0061,0.2424],"pivot":[-0.442,3.8284,0.0351],"rotation":[-17.7581,5.4845,9.8081],"uv":{"north":{"uv":[22,42],"uv_size":[0.25,1]},"east":{"uv":[42,22],"uv_size":[0.25,1]},"south":{"uv":[23,42],"uv_size":[0.25,1]},"west":{"uv":[42,23],"uv_size":[0.25,1]},"up":{"uv":[63,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4329,3.7527,-0.0607],"size":[0.2182,1.0061,0.3231],"pivot":[-0.4329,3.7527,0.2624],"rotation":[-17.6818,-1.6606,12.0906],"uv":{"north":{"uv":[24,42],"uv_size":[0.25,1]},"east":{"uv":[42,24],"uv_size":[0.25,1]},"south":{"uv":[25,42],"uv_size":[0.25,1]},"west":{"uv":[42,25],"uv_size":[0.25,1]},"up":{"uv":[63,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2147,3.7527,-0.0607],"size":[0.2182,1.0061,0.3231],"pivot":[0.4329,3.7527,0.2624],"rotation":[-17.6818,1.6606,-12.0906],"uv":{"north":{"uv":[26,42],"uv_size":[0.25,1]},"east":{"uv":[42,26],"uv_size":[0.25,1]},"south":{"uv":[27,42],"uv_size":[0.25,1]},"west":{"uv":[42,27],"uv_size":[0.25,1]},"up":{"uv":[63,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3201,2.8022,-0.4121],"size":[0.2182,1.0061,0.3619],"pivot":[0.5383,2.8022,-0.0503],"rotation":[-18.1309,2.9482,-7.2916],"uv":{"north":{"uv":[28,42],"uv_size":[0.25,1]},"east":{"uv":[42,28],"uv_size":[0.25,1]},"south":{"uv":[29,42],"uv_size":[0.25,1]},"west":{"uv":[42,29],"uv_size":[0.25,1]},"up":{"uv":[63,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2238,3.8284,0.2749],"size":[0.2182,1.0061,0.2424],"pivot":[0.442,3.8284,0.0351],"rotation":[-17.7581,-5.4845,-9.8081],"uv":{"north":{"uv":[30,42],"uv_size":[0.25,1]},"east":{"uv":[42,30],"uv_size":[0.25,1]},"south":{"uv":[31,42],"uv_size":[0.25,1]},"west":{"uv":[42,31],"uv_size":[0.25,1]},"up":{"uv":[63,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3201,2.8022,-0.0503],"size":[0.2182,1.0061,0.2398],"pivot":[0.5383,2.8022,-0.0503],"rotation":[-18.1505,-3.9423,-5.0356],"uv":{"north":{"uv":[32,42],"uv_size":[0.25,1]},"east":{"uv":[42,32],"uv_size":[0.25,1]},"south":{"uv":[33,42],"uv_size":[0.25,1]},"west":{"uv":[42,33],"uv_size":[0.25,1]},"up":{"uv":[63,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1685,2.1944,-0.1974],"size":[0.2196,0.3237,0.2445],"pivot":[0.3881,2.2203,-0.1974],"rotation":[-8.7091,2.0876,12.7312],"uv":{"north":{"uv":[63,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,63],"uv_size":[0.25,0.25]},"south":{"uv":[63,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,63],"uv_size":[0.25,0.25]},"up":{"uv":[63,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2421,2.497,-0.1437],"size":[0.2182,0.3329,0.2398],"pivot":[0.4603,2.5321,-0.1484],"rotation":[-18.357,2.7834,15.1346],"uv":{"north":{"uv":[63,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,63],"uv_size":[0.25,0.25]},"south":{"uv":[63,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,63],"uv_size":[0.25,0.25]},"up":{"uv":[63,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1565,2.4596,-0.1456],"size":[0.3039,0.3703,0.2417],"pivot":[0.4603,2.5321,-0.1484],"rotation":[-24.056,-39.4938,31.9075],"uv":{"north":{"uv":[63,45],"uv_size":[0.25,0.25]},"east":{"uv":[46,63],"uv_size":[0.25,0.25]},"south":{"uv":[63,46],"uv_size":[0.25,0.25]},"west":{"uv":[47,63],"uv_size":[0.25,0.25]},"up":{"uv":[63,47],"uv_size":[0.25,0.25]},"down":{"uv":[48,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4603,2.4596,-0.1456],"size":[0.3039,0.3703,0.2417],"pivot":[-0.4603,2.5321,-0.1484],"rotation":[-24.056,39.4938,-31.9075],"uv":{"north":{"uv":[63,48],"uv_size":[0.25,0.25]},"east":{"uv":[49,63],"uv_size":[0.25,0.25]},"south":{"uv":[63,49],"uv_size":[0.25,0.25]},"west":{"uv":[50,63],"uv_size":[0.25,0.25]},"up":{"uv":[63,50],"uv_size":[0.25,0.25]},"down":{"uv":[51,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0489,0.2875,-0.2742],"size":[0.2211,0.6478,0.2445],"pivot":[0.27,0.9353,-0.2742],"rotation":[8.2887,0.8505,1.5714],"uv":{"north":{"uv":[14,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,14],"uv_size":[0.25,0.5]},"south":{"uv":[15,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,15],"uv_size":[0.25,0.5]},"up":{"uv":[63,51],"uv_size":[0.25,0.25]},"down":{"uv":[52,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0182,-1.0438,-0.0046],"size":[0.2211,0.7151,0.2445],"pivot":[0.2393,-0.3287,-0.0046],"rotation":[24.261,1.4672,0.2038],"uv":{"north":{"uv":[47,8],"uv_size":[0.25,0.75]},"east":{"uv":[9,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,9],"uv_size":[0.25,0.75]},"west":{"uv":[10,47],"uv_size":[0.25,0.75]},"up":{"uv":[63,52],"uv_size":[0.25,0.25]},"down":{"uv":[53,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2717,-2.3383,0.1701],"size":[0,3.1925,0.81],"pivot":[0.2595,-0.2498,0.1701],"rotation":[24.1314,-6.3962,-0.5927],"uv":{"north":{"uv":[0,0],"uv_size":[0,3]},"east":{"uv":[11,0],"uv_size":[0.75,3]},"south":{"uv":[0,0],"uv_size":[0,3]},"west":{"uv":[11,3],"uv_size":[0.75,3]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0.3895,1.1177,0.1982],"size":[0.2387,0.429,0.2876],"pivot":[0.6282,1.2018,0.2279],"rotation":[-60.4656,-5.3177,21.427],"uv":{"north":{"uv":[16,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,16],"uv_size":[0.25,0.5]},"south":{"uv":[17,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,17],"uv_size":[0.25,0.5]},"up":{"uv":[63,53],"uv_size":[0.25,0.25]},"down":{"uv":[54,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.6185,1.6029,0.0425],"size":[0.2548,0.7757,0.258],"pivot":[0.9069,1.0105,0.1233],"rotation":[-45.7893,-21.8606,-16.0024],"uv":{"north":{"uv":[47,10],"uv_size":[0.25,0.75]},"east":{"uv":[11,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,11],"uv_size":[0.25,0.75]},"west":{"uv":[12,47],"uv_size":[0.25,0.75]},"up":{"uv":[63,54],"uv_size":[0.25,0.25]},"down":{"uv":[55,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.8733,1.6029,0.0425],"size":[0.2548,0.7757,0.258],"pivot":[-0.9069,1.0105,0.1233],"rotation":[-45.7893,21.8606,16.0024],"uv":{"north":{"uv":[47,12],"uv_size":[0.25,0.75]},"east":{"uv":[13,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,13],"uv_size":[0.25,0.75]},"west":{"uv":[14,47],"uv_size":[0.25,0.75]},"up":{"uv":[63,55],"uv_size":[0.25,0.25]},"down":{"uv":[56,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.6282,1.1177,0.1982],"size":[0.2387,0.429,0.2876],"pivot":[-0.6282,1.2018,0.2279],"rotation":[-60.4656,5.3177,-21.427],"uv":{"north":{"uv":[18,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,18],"uv_size":[0.25,0.5]},"south":{"uv":[19,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,19],"uv_size":[0.25,0.5]},"up":{"uv":[63,56],"uv_size":[0.25,0.25]},"down":{"uv":[57,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2326,0.5814,-0.5025],"size":[0.2516,0.5711,0.2177],"pivot":[-0.106,-0.1939,0.0967],"rotation":[-28.6754,25.457,-17.5201],"uv":{"north":{"uv":[20,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,20],"uv_size":[0.25,0.5]},"south":{"uv":[21,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,21],"uv_size":[0.25,0.5]},"up":{"uv":[63,57],"uv_size":[0.25,0.25]},"down":{"uv":[58,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.019,0.5814,-0.5025],"size":[0.2516,0.5711,0.2177],"pivot":[0.106,-0.1939,0.0967],"rotation":[-28.6754,-25.457,17.5201],"uv":{"north":{"uv":[22,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,22],"uv_size":[0.25,0.5]},"south":{"uv":[23,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,23],"uv_size":[0.25,0.5]},"up":{"uv":[63,58],"uv_size":[0.25,0.25]},"down":{"uv":[59,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5922,0.1622,0.1045],"size":[0.2548,0.5603,0.1503],"pivot":[-0.5922,0.7225,-0.0032],"rotation":[11.9078,32.0515,-10.4389],"uv":{"north":{"uv":[24,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,24],"uv_size":[0.25,0.5]},"south":{"uv":[25,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,25],"uv_size":[0.25,0.5]},"up":{"uv":[63,59],"uv_size":[0.25,0.25]},"down":{"uv":[60,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3374,0.1622,0.1045],"size":[0.2548,0.5603,0.1503],"pivot":[0.5922,0.7225,-0.0032],"rotation":[11.9078,-32.0515,10.4389],"uv":{"north":{"uv":[26,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,26],"uv_size":[0.25,0.5]},"south":{"uv":[27,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,27],"uv_size":[0.25,0.5]},"up":{"uv":[63,60],"uv_size":[0.25,0.25]},"down":{"uv":[61,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0823,0.4641,0.1936],"size":[0.1987,0.8684,0.2013],"pivot":[0.1822,0.0723,0.6925],"rotation":[-8.0217,-31.1033,-2.8089],"uv":{"north":{"uv":[47,14],"uv_size":[0.25,0.75]},"east":{"uv":[15,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,15],"uv_size":[0.25,0.75]},"west":{"uv":[16,47],"uv_size":[0.25,0.75]},"up":{"uv":[63,61],"uv_size":[0.25,0.25]},"down":{"uv":[62,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.243,-0.0139,0.3963],"size":[0.1987,0.6088,0.2012],"pivot":[0.4417,0.7834,0.3963],"rotation":[41.6895,-33.459,2.4091],"uv":{"north":{"uv":[28,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,28],"uv_size":[0.25,0.5]},"south":{"uv":[29,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,29],"uv_size":[0.25,0.5]},"up":{"uv":[63,62],"uv_size":[0.25,0.25]},"down":{"uv":[63,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4417,-0.0139,0.3963],"size":[0.1987,0.6088,0.2012],"pivot":[-0.4417,0.7834,0.3963],"rotation":[41.6895,33.459,-2.4091],"uv":{"north":{"uv":[30,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,30],"uv_size":[0.25,0.5]},"south":{"uv":[31,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,31],"uv_size":[0.25,0.5]},"up":{"uv":[0,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.281,0.4641,0.1936],"size":[0.1987,0.8684,0.2013],"pivot":[-0.1822,0.0723,0.6925],"rotation":[-8.0217,31.1033,2.8089],"uv":{"north":{"uv":[47,16],"uv_size":[0.25,0.75]},"east":{"uv":[17,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,17],"uv_size":[0.25,0.75]},"west":{"uv":[18,47],"uv_size":[0.25,0.75]},"up":{"uv":[1,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2717,-2.3383,0.1701],"size":[0,3.1925,0.81],"pivot":[-0.2595,-0.2498,0.1701],"rotation":[24.1314,6.3962,0.5927],"uv":{"north":{"uv":[0,0],"uv_size":[0,3]},"east":{"uv":[11,6],"uv_size":[0.75,3]},"south":{"uv":[0,0],"uv_size":[0,3]},"west":{"uv":[11,9],"uv_size":[0.75,3]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[-0.2102,2.2194,0.6592],"size":[0,1.3883,0.5677],"pivot":[0.0659,2.7367,1.7317],"rotation":[-14.6158,-31.2165,1.5246],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.25]},"east":{"uv":[33,24],"uv_size":[0.5,1.25]},"south":{"uv":[0,0],"uv_size":[0,1.25]},"west":{"uv":[33,26],"uv_size":[0.5,1.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0.2102,2.2194,0.6592],"size":[0,1.3883,0.5677],"pivot":[-0.0659,2.7367,1.7317],"rotation":[-14.6158,31.2165,-1.5246],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.25]},"east":{"uv":[30,33],"uv_size":[0.5,1.25]},"south":{"uv":[0,0],"uv_size":[0,1.25]},"west":{"uv":[31,33],"uv_size":[0.5,1.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0.0234,-1.8036,0.2891],"size":[0.2211,0.8229,0.2445],"pivot":[0.2445,-0.9807,0.2891],"rotation":[31.5252,1.0751,0.8433],"uv":{"north":{"uv":[47,18],"uv_size":[0.25,0.75]},"east":{"uv":[19,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,19],"uv_size":[0.25,0.75]},"west":{"uv":[20,47],"uv_size":[0.25,0.75]},"up":{"uv":[2,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0211,-1.8453,0.7193],"size":[0.2211,0.1631,0.2445],"pivot":[0.2422,-1.6822,0.7193],"rotation":[31.1165,-5.4417,11.5237],"uv":{"north":{"uv":[3,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1193,1.3009,-0.559],"size":[0.1403,0.3853,0.3023],"pivot":[-0.1144,1.3009,-0.559],"rotation":[-3.9651,-0.8517,-1.3214],"uv":{"north":{"uv":[6,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1285,1.6799,-0.5323],"size":[0.1133,0.3905,0.3023],"pivot":[-0.1237,1.6851,-0.5323],"rotation":[-3.9197,-1.0408,-4.0653],"uv":{"north":{"uv":[9,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1563,2.059,-0.506],"size":[0.113,0.664,0.3023],"pivot":[-0.1514,2.0685,-0.506],"rotation":[-9.0458,-1.8328,-9.0037],"uv":{"north":{"uv":[32,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,32],"uv_size":[0.25,0.5]},"south":{"uv":[33,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,33],"uv_size":[0.25,0.5]},"up":{"uv":[12,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0522,-1.0899,0.0863],"size":[0.1134,0.5738,0.3023],"pivot":[0.1608,-1.0899,0.0863],"rotation":[28.9663,1.4768,-2.5782],"uv":{"north":{"uv":[34,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,34],"uv_size":[0.25,0.5]},"south":{"uv":[35,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,35],"uv_size":[0.25,0.5]},"up":{"uv":[13,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0225,-0.5888,-0.1915],"size":[0.1134,0.6478,0.3023],"pivot":[0.131,-0.5888,-0.1915],"rotation":[20.9959,0.9396,-1.1774],"uv":{"north":{"uv":[36,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,36],"uv_size":[0.25,0.5]},"south":{"uv":[37,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,37],"uv_size":[0.25,0.5]},"up":{"uv":[14,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0063,0.0158,-0.4236],"size":[0.1134,0.6478,0.3023],"pivot":[0.1148,0.0158,-0.4236],"rotation":[9.9959,0.9396,-1.1774],"uv":{"north":{"uv":[38,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,38],"uv_size":[0.25,0.5]},"south":{"uv":[39,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,39],"uv_size":[0.25,0.5]},"up":{"uv":[15,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0356,0.6536,-0.536],"size":[0.1403,0.6478,0.3023],"pivot":[0.0998,0.6536,-0.536],"rotation":[2.0349,0.8517,1.3214],"uv":{"north":{"uv":[40,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,40],"uv_size":[0.25,0.5]},"south":{"uv":[41,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,41],"uv_size":[0.25,0.5]},"up":{"uv":[16,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.021,1.3009,-0.559],"size":[0.1403,0.3853,0.3023],"pivot":[0.1144,1.3009,-0.559],"rotation":[-3.9651,0.8517,1.3214],"uv":{"north":{"uv":[17,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0153,1.6799,-0.5323],"size":[0.1133,0.3905,0.3023],"pivot":[0.1237,1.6851,-0.5323],"rotation":[-3.9197,1.0408,4.0653],"uv":{"north":{"uv":[20,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,20],"uv_size":[0.25,0.25]},"south":{"uv":[21,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,21],"uv_size":[0.25,0.25]},"up":{"uv":[22,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0433,2.059,-0.506],"size":[0.113,0.664,0.3023],"pivot":[0.1514,2.0685,-0.506],"rotation":[-9.0458,1.8328,9.0037],"uv":{"north":{"uv":[42,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,42],"uv_size":[0.25,0.5]},"south":{"uv":[43,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,43],"uv_size":[0.25,0.5]},"up":{"uv":[23,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1963,-0.5559,0.3502],"size":[0.0212,0.1389,0.1923],"pivot":[-0.1963,-2.0657,0.5425],"rotation":[30.0072,-14.5202,-4.8434],"uv":{"north":{"uv":[24,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1181,-1.5907,-0.5945],"size":[0.0215,0.8439,0.4061],"inflate":0.001,"pivot":[-0.118,-0.747,-0.1885],"rotation":[30.0072,-14.5202,-4.8434],"uv":{"north":{"uv":[47,20],"uv_size":[0.25,0.75]},"east":{"uv":[21,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,21],"uv_size":[0.25,0.75]},"west":{"uv":[22,47],"uv_size":[0.25,0.75]},"up":{"uv":[27,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0131,-0.9418,-0.5287],"size":[0.0212,0.2944,0.2794],"pivot":[-0.0131,-0.9418,-0.5287],"rotation":[-16.4928,-14.5202,-4.8434],"uv":{"north":{"uv":[28,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0131,-0.9418,-0.5287],"size":[0.028,0.2944,0.064],"pivot":[-0.0131,-0.9418,-0.5287],"rotation":[-16.0532,-6.3595,-7.2633],"uv":{"north":{"uv":[31,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0141,-0.8409,-0.5225],"size":[0.0286,0.2006,0.064],"pivot":[0.0421,-0.9348,-0.5225],"rotation":[-16.0532,-6.3595,-7.2633],"uv":{"north":{"uv":[34,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0427,-0.8409,-0.5225],"size":[0.0286,0.2006,0.064],"pivot":[-0.0421,-0.9348,-0.5225],"rotation":[-16.0532,6.3595,7.2633],"uv":{"north":{"uv":[37,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0149,-0.9418,-0.5287],"size":[0.028,0.2944,0.064],"pivot":[0.0131,-0.9418,-0.5287],"rotation":[-16.0532,6.3595,7.2633],"uv":{"north":{"uv":[40,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,40],"uv_size":[0.25,0.25]},"south":{"uv":[41,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,41],"uv_size":[0.25,0.25]},"up":{"uv":[42,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0082,-0.9418,-0.5287],"size":[0.0212,0.2944,0.2794],"pivot":[0.0131,-0.9418,-0.5287],"rotation":[-16.4928,14.5202,4.8434],"uv":{"north":{"uv":[43,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,43],"uv_size":[0.25,0.25]},"south":{"uv":[44,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,44],"uv_size":[0.25,0.25]},"up":{"uv":[45,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.175,-0.5559,0.3502],"size":[0.0212,0.1389,0.1923],"pivot":[0.1963,-2.0657,0.5425],"rotation":[30.0072,14.5202,4.8434],"uv":{"north":{"uv":[46,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,46],"uv_size":[0.25,0.25]},"south":{"uv":[47,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,47],"uv_size":[0.25,0.25]},"up":{"uv":[48,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1405,-1.4837,-0.1852],"size":[0.0214,0.8439,0.4061],"inflate":0.001,"pivot":[0.1618,-1.4854,0.2209],"rotation":[30.0072,14.5202,4.8434],"uv":{"north":{"uv":[47,22],"uv_size":[0.25,0.75]},"east":{"uv":[23,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,23],"uv_size":[0.25,0.75]},"west":{"uv":[24,47],"uv_size":[0.25,0.75]},"up":{"uv":[49,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1246,-0.4586,-0.018],"size":[0.1134,0.7151,0.2484],"pivot":[-0.1653,-1.3631,0.4371],"rotation":[16.502,-0.5883,0.5167],"uv":{"north":{"uv":[47,24],"uv_size":[0.25,0.75]},"east":{"uv":[25,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,25],"uv_size":[0.25,0.75]},"west":{"uv":[26,47],"uv_size":[0.25,0.75]},"up":{"uv":[50,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.107,-0.6297,-0.2693],"size":[0.0191,0.7151,0.0147],"pivot":[-0.107,-0.6297,-0.2693],"rotation":[17.0789,-14.731,-3.7762],"uv":{"north":{"uv":[47,26],"uv_size":[0.25,0.75]},"east":{"uv":[27,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,27],"uv_size":[0.25,0.75]},"west":{"uv":[28,47],"uv_size":[0.25,0.75]},"up":{"uv":[51,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0878,-0.6297,-0.2693],"size":[0.0191,0.7151,0.0147],"pivot":[0.107,-0.6297,-0.2693],"rotation":[17.0789,14.731,3.7762],"uv":{"north":{"uv":[47,28],"uv_size":[0.25,0.75]},"east":{"uv":[29,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,29],"uv_size":[0.25,0.75]},"west":{"uv":[30,47],"uv_size":[0.25,0.75]},"up":{"uv":[52,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0987,-0.1812,-0.4724],"size":[0.1067,0.2372,0.0147],"pivot":[-0.0987,0.056,-0.4724],"rotation":[13.343,-0.6856,-0.9735],"uv":{"north":{"uv":[53,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,53],"uv_size":[0.25,0.25]},"south":{"uv":[54,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,54],"uv_size":[0.25,0.25]},"up":{"uv":[55,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,55.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.008,-0.1812,-0.4724],"size":[0.1067,0.2372,0.0147],"pivot":[0.0987,0.056,-0.4724],"rotation":[13.343,0.6856,0.9735],"uv":{"north":{"uv":[56,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,56],"uv_size":[0.25,0.25]},"south":{"uv":[57,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,57],"uv_size":[0.25,0.25]},"up":{"uv":[58,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0987,-0.1812,-0.4724],"size":[0.0191,0.2372,0.0147],"pivot":[-0.0987,0.056,-0.4724],"rotation":[13.8398,-15.2703,-4.5233],"uv":{"north":{"uv":[59,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,59],"uv_size":[0.25,0.25]},"south":{"uv":[60,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,60],"uv_size":[0.25,0.25]},"up":{"uv":[61,64],"uv_size":[0.25,0.25]},"down":{"uv":[64,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0954,-0.4254,-0.4177],"size":[0.0191,0.2525,0.0348],"pivot":[-0.0954,-0.1748,-0.4177],"rotation":[6.3398,-15.2703,-4.5233],"uv":{"north":{"uv":[62,64],"uv_size":[0.25,0.25]},"east":{"uv":[64,62],"uv_size":[0.25,0.25]},"south":{"uv":[63,64],"uv_size":[0.25,0.25]},"west":{"uv":[64,63],"uv_size":[0.25,0.25]},"up":{"uv":[64,64],"uv_size":[0.25,0.25]},"down":{"uv":[0,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0954,-0.4254,-0.4177],"size":[0.0999,0.2525,0.0415],"pivot":[-0.0954,-0.1748,-0.4177],"rotation":[6.1155,-0.6064,-2.9122],"uv":{"north":{"uv":[65,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0045,-0.4254,-0.4177],"size":[0.0999,0.2525,0.0415],"pivot":[0.0954,-0.1748,-0.4177],"rotation":[6.1155,0.6064,2.9122],"uv":{"north":{"uv":[65,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1048,-0.4425,-0.3844],"size":[0.0191,0.1718,0.028],"pivot":[-0.1048,-0.1717,-0.3844],"rotation":[6.3398,-15.2703,-4.5233],"uv":{"north":{"uv":[65,6],"uv_size":[0.25,0.25]},"east":{"uv":[7,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,7],"uv_size":[0.25,0.25]},"west":{"uv":[8,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0857,-0.4425,-0.3844],"size":[0.0191,0.1718,0.028],"pivot":[0.1048,-0.1717,-0.3844],"rotation":[6.3398,15.2703,4.5233],"uv":{"north":{"uv":[65,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0763,-0.4254,-0.4177],"size":[0.0191,0.2525,0.0348],"pivot":[0.0954,-0.1748,-0.4177],"rotation":[6.3398,15.2703,4.5233],"uv":{"north":{"uv":[65,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0103,-0.1812,-0.4724],"size":[0.0191,0.2372,0.0147],"pivot":[0.0088,0.056,-0.4724],"rotation":[13.8398,15.2703,4.5233],"uv":{"north":{"uv":[65,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0838,-0.6763,-0.3925],"size":[0.0192,0.2707,0.0947],"pivot":[-0.0837,-0.4103,-0.3925],"rotation":[-12.7812,-15.1594,-2.4819],"uv":{"north":{"uv":[65,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0838,-0.6763,-0.3925],"size":[0.0852,0.2707,0.0947],"pivot":[-0.0837,-0.4103,-0.3925],"rotation":[-12.3667,-4.4216,-4.9084],"uv":{"north":{"uv":[65,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0014,-0.6763,-0.3925],"size":[0.0852,0.2707,0.0947],"pivot":[0.0837,-0.4103,-0.3925],"rotation":[-12.3667,4.4216,4.9084],"uv":{"north":{"uv":[65,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.107,-0.6983,-0.3033],"size":[0.0192,0.1024,0.088],"pivot":[-0.1069,-0.4323,-0.3033],"rotation":[-12.7812,-15.1594,-2.4819],"uv":{"north":{"uv":[65,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1173,-0.5988,-0.2814],"size":[0.0192,0.1158,0.0274],"pivot":[-0.1172,-0.3328,-0.2814],"rotation":[-12.7812,-15.1594,-2.4819],"uv":{"north":{"uv":[65,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.124,-0.6051,-0.2556],"size":[0.0192,0.0687,0.0409],"pivot":[-0.1239,-0.3392,-0.2556],"rotation":[-12.7812,-15.1594,-2.4819],"uv":{"north":{"uv":[65,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0878,-0.6983,-0.3033],"size":[0.0192,0.1024,0.088],"pivot":[0.1069,-0.4323,-0.3033],"rotation":[-12.7812,15.1594,2.4819],"uv":{"north":{"uv":[65,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1048,-0.6051,-0.2556],"size":[0.0192,0.0687,0.0409],"pivot":[0.1239,-0.3392,-0.2556],"rotation":[-12.7812,15.1594,2.4819],"uv":{"north":{"uv":[65,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.098,-0.5988,-0.2814],"size":[0.0192,0.1158,0.0274],"pivot":[0.1172,-0.3328,-0.2814],"rotation":[-12.7812,15.1594,2.4819],"uv":{"north":{"uv":[65,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0646,-0.6763,-0.3925],"size":[0.0192,0.2707,0.0947],"pivot":[0.0837,-0.4103,-0.3925],"rotation":[-12.7812,15.1594,2.4819],"uv":{"north":{"uv":[65,45],"uv_size":[0.25,0.25]},"east":{"uv":[46,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,46],"uv_size":[0.25,0.25]},"west":{"uv":[47,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,47],"uv_size":[0.25,0.25]},"down":{"uv":[48,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1876,0.1668,-0.2732],"size":[0.1095,0.7712,0.2625],"pivot":[-0.1653,-1.3631,0.4371],"rotation":[7.7193,-0.9249,2.9941],"uv":{"north":{"uv":[47,30],"uv_size":[0.25,0.75]},"east":{"uv":[31,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,31],"uv_size":[0.25,0.75]},"west":{"uv":[32,47],"uv_size":[0.25,0.75]},"up":{"uv":[65,48],"uv_size":[0.25,0.25]},"down":{"uv":[49,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.078,0.1668,-0.2732],"size":[0.1095,0.7712,0.2625],"pivot":[0.1653,-1.3631,0.4371],"rotation":[7.7193,0.9249,-2.9941],"uv":{"north":{"uv":[47,32],"uv_size":[0.25,0.75]},"east":{"uv":[33,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,33],"uv_size":[0.25,0.75]},"west":{"uv":[34,47],"uv_size":[0.25,0.75]},"up":{"uv":[65,49],"uv_size":[0.25,0.25]},"down":{"uv":[50,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0485,-1.3651,0.1887],"size":[0.1134,0.9844,0.2484],"pivot":[0.1653,-1.3631,0.4371],"rotation":[28.9663,1.4768,-2.5782],"uv":{"north":{"uv":[34,42],"uv_size":[0.25,1]},"east":{"uv":[42,34],"uv_size":[0.25,1]},"south":{"uv":[35,42],"uv_size":[0.25,1]},"west":{"uv":[42,35],"uv_size":[0.25,1]},"up":{"uv":[65,50],"uv_size":[0.25,0.25]},"down":{"uv":[51,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0112,-0.4586,-0.018],"size":[0.1134,0.7151,0.2484],"pivot":[0.1653,-1.3631,0.4371],"rotation":[16.502,0.5883,-0.5167],"uv":{"north":{"uv":[47,34],"uv_size":[0.25,0.75]},"east":{"uv":[35,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,35],"uv_size":[0.25,0.75]},"west":{"uv":[36,47],"uv_size":[0.25,0.75]},"up":{"uv":[65,51],"uv_size":[0.25,0.25]},"down":{"uv":[52,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.016,-9.6481,-0.5259],"size":[0.0125,6.4787,0.0846],"inflate":-0.001,"pivot":[-0.0161,-9.6482,-0.4412],"rotation":[-0.0568,-7.3,-0.0939],"uv":{"north":{"uv":[12,16],"uv_size":[0.25,6]},"east":{"uv":[13,16],"uv_size":[0.25,6]},"south":{"uv":[16,14],"uv_size":[0.25,6]},"west":{"uv":[17,0],"uv_size":[0.25,6]},"up":{"uv":[65,52],"uv_size":[0.25,0.25]},"down":{"uv":[53,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0035,-9.6481,-0.5259],"size":[0.0125,6.4787,0.0846],"inflate":-0.001,"pivot":[0.0161,-9.6482,-0.4412],"rotation":[-0.0568,7.3,0.0939],"uv":{"north":{"uv":[17,6],"uv_size":[0.25,6]},"east":{"uv":[17,12],"uv_size":[0.25,6]},"south":{"uv":[18,0],"uv_size":[0.25,6]},"west":{"uv":[18,6],"uv_size":[0.25,6]},"up":{"uv":[65,53],"uv_size":[0.25,0.25]},"down":{"uv":[54,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1584,-9.6337,0.6571],"size":[0.0282,5.9646,0.1032],"pivot":[-0.1584,-9.6336,0.7603],"rotation":[-0.25,0,-0.0334],"uv":{"north":{"uv":[5,22],"uv_size":[0.25,5.5]},"east":{"uv":[6,22],"uv_size":[0.25,5.5]},"south":{"uv":[22,6],"uv_size":[0.25,5.5]},"west":{"uv":[12,22],"uv_size":[0.25,5.5]},"up":{"uv":[65,54],"uv_size":[0.25,0.25]},"down":{"uv":[55,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1301,-9.6337,0.6571],"size":[0.0282,5.9646,0.1032],"pivot":[0.1584,-9.6336,0.7603],"rotation":[-0.25,0,0.0334],"uv":{"north":{"uv":[22,12],"uv_size":[0.25,5.5]},"east":{"uv":[13,22],"uv_size":[0.25,5.5]},"south":{"uv":[14,22],"uv_size":[0.25,5.5]},"west":{"uv":[22,18],"uv_size":[0.25,5.5]},"up":{"uv":[65,55],"uv_size":[0.25,0.25]},"down":{"uv":[56,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,-3.2197,0.6615],"size":[0.3281,3.8421,0.2484],"pivot":[-0.1618,-3.2197,0.9099],"rotation":[-0.25,-0.0001,0],"uv":{"north":{"uv":[29,0],"uv_size":[0.25,3.5]},"east":{"uv":[4,29],"uv_size":[0.25,3.5]},"south":{"uv":[29,4],"uv_size":[0.25,3.5]},"west":{"uv":[5,29],"uv_size":[0.25,3.5]},"up":{"uv":[65,56],"uv_size":[0.25,0.25]},"down":{"uv":[57,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,-1.1047,0.413],"size":[0.3281,1.8764,0.2484],"pivot":[-0.1618,-3.2186,0.6615],"rotation":[-0.25,-0.0001,0],"uv":{"north":{"uv":[38,3],"uv_size":[0.25,1.75]},"east":{"uv":[4,38],"uv_size":[0.25,1.75]},"south":{"uv":[5,38],"uv_size":[0.25,1.75]},"west":{"uv":[38,5],"uv_size":[0.25,1.75]},"up":{"uv":[65,57],"uv_size":[0.25,0.25]},"down":{"uv":[58,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,0.4982,0.7115],"size":[0.3281,0.1771,0.2152],"pivot":[-0.1641,0.6224,0.9267],"rotation":[-30.25,-0.0001,0],"uv":{"north":{"uv":[65,58],"uv_size":[0.25,0.25]},"east":{"uv":[59,65],"uv_size":[0.25,0.25]},"south":{"uv":[65,59],"uv_size":[0.25,0.25]},"west":{"uv":[60,65],"uv_size":[0.25,0.25]},"up":{"uv":[65,60],"uv_size":[0.25,0.25]},"down":{"uv":[61,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,0.3114,0.4718],"size":[0.3281,0.4723,0.2852],"pivot":[-0.1641,0.7308,0.7408],"rotation":[-37.75,-0.0001,0],"uv":{"north":{"uv":[44,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,44],"uv_size":[0.25,0.5]},"south":{"uv":[45,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,45],"uv_size":[0.25,0.5]},"up":{"uv":[65,61],"uv_size":[0.25,0.25]},"down":{"uv":[62,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,0.4989,0.2209],"size":[0.3281,0.4165,0.3712],"pivot":[-0.1641,0.8625,0.5707],"rotation":[-47.75,-0.0001,0],"uv":{"north":{"uv":[46,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,46],"uv_size":[0.25,0.5]},"south":{"uv":[47,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,47],"uv_size":[0.25,0.5]},"up":{"uv":[65,62],"uv_size":[0.25,0.25]},"down":{"uv":[63,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2314,1.1519,-0.5667],"size":[0.4628,0.4165,0.3712],"pivot":[-0.1775,0.8625,0.5707],"rotation":[-82.75,-0.0001,0],"uv":{"north":{"uv":[36,42],"uv_size":[0.5,0.5]},"east":{"uv":[48,52],"uv_size":[0.25,0.5]},"south":{"uv":[42,36],"uv_size":[0.5,0.5]},"west":{"uv":[52,48],"uv_size":[0.25,0.5]},"up":{"uv":[49,52],"uv_size":[0.5,0.25]},"down":{"uv":[52,49.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2987,1.3515,-0.556],"size":[0.5974,0.5848,0.9097],"pivot":[0.5411,1.6073,0.3537],"rotation":[-112.75,-0.0001,0],"uv":{"north":{"uv":[37,42],"uv_size":[0.5,0.5]},"east":{"uv":[39,26],"uv_size":[0.75,0.5]},"south":{"uv":[42,37],"uv_size":[0.5,0.5]},"west":{"uv":[39,27],"uv_size":[0.75,0.5]},"up":{"uv":[39,28],"uv_size":[0.5,0.75]},"down":{"uv":[39,29.75],"uv_size":[0.5,-0.75]}}},{"origin":[-0.0732,0.7749,-0.6879],"size":[0.1464,0.4165,0.3712],"pivot":[-0.2011,0.8625,0.5707],"rotation":[-110.25,-0.0001,0],"uv":{"north":{"uv":[50,52],"uv_size":[0.25,0.5]},"east":{"uv":[52,50],"uv_size":[0.25,0.5]},"south":{"uv":[51,52],"uv_size":[0.25,0.5]},"west":{"uv":[52,51],"uv_size":[0.25,0.5]},"up":{"uv":[65,63],"uv_size":[0.25,0.25]},"down":{"uv":[64,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2314,0.5393,-0.9505],"size":[0.4628,0.4165,0.3712],"pivot":[-0.1775,0.8625,0.5707],"rotation":[-112.75,-0.0001,0],"uv":{"north":{"uv":[38,42],"uv_size":[0.5,0.5]},"east":{"uv":[52,52],"uv_size":[0.25,0.5]},"south":{"uv":[42,38],"uv_size":[0.5,0.5]},"west":{"uv":[0,53],"uv_size":[0.25,0.5]},"up":{"uv":[53,0],"uv_size":[0.5,0.25]},"down":{"uv":[1,53.25],"uv_size":[0.5,-0.25]}}},{"origin":[0.0841,1.9235,0.9572],"size":[0.3281,0.4165,0.3712],"pivot":[0.2913,2.3398,0.9008],"rotation":[-71.6094,62.53,10.7721],"uv":{"north":{"uv":[53,1],"uv_size":[0.25,0.5]},"east":{"uv":[2,53],"uv_size":[0.25,0.5]},"south":{"uv":[53,2],"uv_size":[0.25,0.5]},"west":{"uv":[3,53],"uv_size":[0.25,0.5]},"up":{"uv":[65,64],"uv_size":[0.25,0.25]},"down":{"uv":[65,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4392,1.8696,0.8764],"size":[0.3281,0.4165,0.5327],"pivot":[-0.2913,2.3398,0.9008],"rotation":[-126.6325,-52.4197,60.5258],"uv":{"north":{"uv":[53,3],"uv_size":[0.25,0.5]},"east":{"uv":[39,42],"uv_size":[0.5,0.5]},"south":{"uv":[4,53],"uv_size":[0.25,0.5]},"west":{"uv":[42,39],"uv_size":[0.5,0.5]},"up":{"uv":[53,4],"uv_size":[0.25,0.5]},"down":{"uv":[5,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.111,1.8696,0.8764],"size":[0.3281,0.4165,0.5327],"pivot":[0.2913,2.3398,0.9008],"rotation":[-126.6325,52.4197,-60.5258],"uv":{"north":{"uv":[53,5],"uv_size":[0.25,0.5]},"east":{"uv":[40,42],"uv_size":[0.5,0.5]},"south":{"uv":[6,53],"uv_size":[0.25,0.5]},"west":{"uv":[42,40],"uv_size":[0.5,0.5]},"up":{"uv":[53,6],"uv_size":[0.25,0.5]},"down":{"uv":[7,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4123,1.9235,0.9572],"size":[0.3281,0.4165,0.3712],"pivot":[-0.2913,2.3398,0.9008],"rotation":[-71.6094,-62.53,-10.7721],"uv":{"north":{"uv":[53,7],"uv_size":[0.25,0.5]},"east":{"uv":[8,53],"uv_size":[0.25,0.5]},"south":{"uv":[53,8],"uv_size":[0.25,0.5]},"west":{"uv":[9,53],"uv_size":[0.25,0.5]},"up":{"uv":[0,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4274,2.2399,1.314],"size":[0.4628,0.3896,0.3577],"pivot":[0.2913,2.3398,0.9008],"rotation":[-123.3368,59.6814,-3.6453],"uv":{"north":{"uv":[53,9],"uv_size":[0.5,0.25]},"east":{"uv":[1,66],"uv_size":[0.25,0.25]},"south":{"uv":[10,53],"uv_size":[0.5,0.25]},"west":{"uv":[66,1],"uv_size":[0.25,0.25]},"up":{"uv":[53,10],"uv_size":[0.5,0.25]},"down":{"uv":[11,53.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.8902,2.2399,1.314],"size":[0.4628,0.3896,0.3577],"pivot":[-0.2913,2.3398,0.9008],"rotation":[-123.3368,-59.6814,3.6453],"uv":{"north":{"uv":[53,11],"uv_size":[0.5,0.25]},"east":{"uv":[2,66],"uv_size":[0.25,0.25]},"south":{"uv":[12,53],"uv_size":[0.5,0.25]},"west":{"uv":[66,2],"uv_size":[0.25,0.25]},"up":{"uv":[53,12],"uv_size":[0.5,0.25]},"down":{"uv":[13,53.25],"uv_size":[0.5,-0.25]}}},{"origin":[0.0841,2.0447,1.2601],"size":[0.4628,0.4165,0.2769],"pivot":[0.2913,2.3398,0.9008],"rotation":[-81.6094,62.53,10.7721],"uv":{"north":{"uv":[41,42],"uv_size":[0.5,0.5]},"east":{"uv":[53,13],"uv_size":[0.25,0.5]},"south":{"uv":[42,41],"uv_size":[0.5,0.5]},"west":{"uv":[14,53],"uv_size":[0.25,0.5]},"up":{"uv":[53,14],"uv_size":[0.5,0.25]},"down":{"uv":[15,53.25],"uv_size":[0.5,-0.25]}}},{"origin":[0.3534,2.1389,1.3611],"size":[0.4628,0.4165,0.3577],"pivot":[0.2913,2.3398,0.9008],"rotation":[-59.7992,52.1012,49.7626],"uv":{"north":{"uv":[42,42],"uv_size":[0.5,0.5]},"east":{"uv":[53,15],"uv_size":[0.25,0.5]},"south":{"uv":[0,43],"uv_size":[0.5,0.5]},"west":{"uv":[16,53],"uv_size":[0.25,0.5]},"up":{"uv":[53,16],"uv_size":[0.5,0.25]},"down":{"uv":[17,53.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.8162,2.1389,1.3611],"size":[0.4628,0.4165,0.3577],"pivot":[-0.2913,2.3398,0.9008],"rotation":[-59.7992,-52.1012,-49.7626],"uv":{"north":{"uv":[43,0],"uv_size":[0.5,0.5]},"east":{"uv":[53,17],"uv_size":[0.25,0.5]},"south":{"uv":[1,43],"uv_size":[0.5,0.5]},"west":{"uv":[18,53],"uv_size":[0.25,0.5]},"up":{"uv":[53,18],"uv_size":[0.5,0.25]},"down":{"uv":[19,53.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.5469,2.0447,1.2601],"size":[0.4628,0.4165,0.2769],"pivot":[-0.2913,2.3398,0.9008],"rotation":[-81.6094,-62.53,-10.7721],"uv":{"north":{"uv":[43,1],"uv_size":[0.5,0.5]},"east":{"uv":[53,19],"uv_size":[0.25,0.5]},"south":{"uv":[2,43],"uv_size":[0.5,0.5]},"west":{"uv":[20,53],"uv_size":[0.25,0.5]},"up":{"uv":[53,20],"uv_size":[0.5,0.25]},"down":{"uv":[21,53.25],"uv_size":[0.5,-0.25]}}},{"origin":[0.8372,0.9256,-0.7445],"size":[0.3271,0.4163,0.3271],"inflate":-0.001,"pivot":[0.7554,1.2488,0.7327],"rotation":[-106.5158,-15.8695,-42.6823],"uv":{"north":{"uv":[53,21],"uv_size":[0.25,0.5]},"east":{"uv":[22,53],"uv_size":[0.25,0.5]},"south":{"uv":[53,22],"uv_size":[0.25,0.5]},"west":{"uv":[23,53],"uv_size":[0.25,0.5]},"up":{"uv":[3,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2314,1.475,0.0593],"size":[0.4628,0.4165,0.3712],"pivot":[-0.1775,0.8625,0.5707],"rotation":[-47.75,-0.0001,0],"uv":{"north":{"uv":[43,2],"uv_size":[0.5,0.5]},"east":{"uv":[53,23],"uv_size":[0.25,0.5]},"south":{"uv":[3,43],"uv_size":[0.5,0.5]},"west":{"uv":[24,53],"uv_size":[0.25,0.5]},"up":{"uv":[53,24],"uv_size":[0.5,0.25]},"down":{"uv":[25,53.25],"uv_size":[0.5,-0.25]}}},{"origin":[0.7374,1.6635,0.2143],"size":[0.2693,0.2693,0.2693],"pivot":[0.1535,0.8625,-0.0081],"rotation":[-28.7007,-25.652,-38.3331],"uv":{"north":{"uv":[4,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1245,1.468,0.7841],"size":[0.4376,0.2693,0.2693],"pivot":[0.1535,1.4818,0.9344],"rotation":[30.5933,-25.891,-112.5533],"uv":{"north":{"uv":[53,25],"uv_size":[0.5,0.25]},"east":{"uv":[7,66],"uv_size":[0.25,0.25]},"south":{"uv":[26,53],"uv_size":[0.5,0.25]},"west":{"uv":[66,7],"uv_size":[0.25,0.25]},"up":{"uv":[53,26],"uv_size":[0.5,0.25]},"down":{"uv":[27,53.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.3763,1.1881,0.6691],"size":[0.5991,0.2693,0.2424],"pivot":[0.2228,1.1881,0.9114],"rotation":[20.7152,-38.8822,-94.4708],"uv":{"north":{"uv":[53,27],"uv_size":[0.5,0.25]},"east":{"uv":[8,66],"uv_size":[0.25,0.25]},"south":{"uv":[28,53],"uv_size":[0.5,0.25]},"west":{"uv":[66,8],"uv_size":[0.25,0.25]},"up":{"uv":[53,28],"uv_size":[0.5,0.25]},"down":{"uv":[29,53.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2228,1.1881,0.6691],"size":[0.5991,0.2693,0.2424],"pivot":[-0.2228,1.1881,0.9114],"rotation":[20.7152,38.8822,94.4708],"uv":{"north":{"uv":[53,29],"uv_size":[0.5,0.25]},"east":{"uv":[9,66],"uv_size":[0.25,0.25]},"south":{"uv":[30,53],"uv_size":[0.5,0.25]},"west":{"uv":[66,9],"uv_size":[0.25,0.25]},"up":{"uv":[53,30],"uv_size":[0.5,0.25]},"down":{"uv":[31,53.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.313,1.468,0.7841],"size":[0.4376,0.2693,0.2693],"pivot":[-0.1535,1.4818,0.9344],"rotation":[30.5933,25.891,112.5533],"uv":{"north":{"uv":[53,31],"uv_size":[0.5,0.25]},"east":{"uv":[10,66],"uv_size":[0.25,0.25]},"south":{"uv":[32,53],"uv_size":[0.5,0.25]},"west":{"uv":[66,10],"uv_size":[0.25,0.25]},"up":{"uv":[53,32],"uv_size":[0.5,0.25]},"down":{"uv":[33,53.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1617,-3.6989,0.6278],"size":[0.3237,0.3189,0.1585],"pivot":[-0.1547,-3.6691,0.7863],"rotation":[-10.5,0,-0.0334],"uv":{"north":{"uv":[11,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,11],"uv_size":[0.25,0.25]},"south":{"uv":[12,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,12],"uv_size":[0.25,0.25]},"up":{"uv":[13,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1617,-3.6984,0.7809],"size":[0.0207,0.3922,0.1585],"pivot":[-0.1617,-3.6984,0.7809],"rotation":[-13.7975,40.1712,-9.0351],"uv":{"north":{"uv":[14,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,15],"uv_size":[0.25,0.25]},"up":{"uv":[16,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1409,-3.6984,0.7809],"size":[0.0207,0.3922,0.1585],"pivot":[0.1617,-3.6984,0.7809],"rotation":[-13.7975,-40.1712,9.0351],"uv":{"north":{"uv":[17,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0314,-9.2604,0.9415],"size":[0.0205,5.9876,0.1104],"pivot":[0.0519,-9.2604,0.9448],"rotation":[-90,-89.7501,90],"uv":{"north":{"uv":[23,0],"uv_size":[0.25,5.5]},"east":{"uv":[23,6],"uv_size":[0.25,5.5]},"south":{"uv":[8,23],"uv_size":[0.25,5.5]},"west":{"uv":[9,23],"uv_size":[0.25,5.5]},"up":{"uv":[20,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1618,-3.4334,0.5851],"size":[0.3236,0.2282,0.2449],"pivot":[-0.1549,-3.4334,0.83],"rotation":[-20.5,0,-0.0334],"uv":{"north":{"uv":[21,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,21],"uv_size":[0.25,0.25]},"south":{"uv":[22,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,22],"uv_size":[0.25,0.25]},"up":{"uv":[23,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1618,-9.6221,0.5835],"size":[0.3237,7.9938,0.0914],"pivot":[-0.1549,-2.5129,1.7027],"rotation":[0.6882,0,0],"uv":{"north":{"uv":[0,14],"uv_size":[0.25,7.25]},"east":{"uv":[14,0],"uv_size":[0.25,7.25]},"south":{"uv":[1,14],"uv_size":[0.25,7.25]},"west":{"uv":[2,14],"uv_size":[0.25,7.25]},"up":{"uv":[24,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,24.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group4","parent":"group","pivot":[-0.0087,-11.6319,0.7292],"rotation":[0,1,0],"cubes":[{"origin":[-0.0866,-11.5191,0.5828],"size":[0.0127,1.8958,0.1509],"pivot":[-0.0866,-10.592,0.7337],"rotation":[-0.2502,-4.9785,-4.2618],"uv":{"north":{"uv":[6,38],"uv_size":[0.25,1.75]},"east":{"uv":[7,38],"uv_size":[0.25,1.75]},"south":{"uv":[38,7],"uv_size":[0.25,1.75]},"west":{"uv":[8,38],"uv_size":[0.25,1.75]},"up":{"uv":[25,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0735,-10.7028,0.096],"size":[0.0125,1.0811,0.4873],"inflate":-0.001,"pivot":[-0.0736,-10.5904,0.5834],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[43,3],"uv_size":[0.25,1]},"east":{"uv":[13,36],"uv_size":[0.5,1]},"south":{"uv":[4,43],"uv_size":[0.25,1]},"west":{"uv":[14,36],"uv_size":[0.5,1]},"up":{"uv":[53,33],"uv_size":[0.25,0.5]},"down":{"uv":[34,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0072,-11.3345,0.4211],"size":[0.0127,0.6346,0.1576],"pivot":[0.0072,-11.6686,0.5787],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[53,34],"uv_size":[0.25,0.5]},"east":{"uv":[35,53],"uv_size":[0.25,0.5]},"south":{"uv":[53,35],"uv_size":[0.25,0.5]},"west":{"uv":[36,53],"uv_size":[0.25,0.5]},"up":{"uv":[26,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0546,-11.4374,0.5108],"size":[0.0127,0.1046,0.0652],"pivot":[0.0546,-12.3015,0.5759],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[27,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,27],"uv_size":[0.25,0.25]},"south":{"uv":[28,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,28],"uv_size":[0.25,0.25]},"up":{"uv":[29,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0624,-11.4938,0.5574],"size":[0.0127,0.0567,0.0181],"pivot":[0.0624,-12.4058,0.5755],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[30,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,30],"uv_size":[0.25,0.25]},"south":{"uv":[31,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,31],"uv_size":[0.25,0.25]},"up":{"uv":[32,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,32.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0022,-10.2176,-0.1844],"size":[0.0129,0.6035,0.2858],"inflate":0.001,"pivot":[-0.0021,-10.5829,0.1012],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[53,36],"uv_size":[0.25,0.5]},"east":{"uv":[37,53],"uv_size":[0.25,0.5]},"south":{"uv":[53,37],"uv_size":[0.25,0.5]},"west":{"uv":[38,53],"uv_size":[0.25,0.5]},"up":{"uv":[33,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0713,-9.7251,-0.501],"size":[0.006,0.1186,0.1078],"pivot":[0.0713,-10.5753,-0.3931],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[34,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0099,-11.5045,0.5881],"size":[0.006,0.0147,0.0236],"pivot":[-0.0099,-11.4574,0.5881],"rotation":[-48.502,-8.4785,-4.2463],"uv":{"north":{"uv":[37,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0016,-11.4155,0.4901],"size":[0.006,0.0357,0.0963],"pivot":[0.0016,-11.4155,0.4901],"rotation":[-48.502,-8.4785,-4.2463],"uv":{"north":{"uv":[40,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,40],"uv_size":[0.25,0.25]},"south":{"uv":[41,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,41],"uv_size":[0.25,0.25]},"up":{"uv":[42,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0047,-9.7868,0.7491],"size":[0.006,0.1137,0.4822],"pivot":[-0.0047,-9.7648,-0.2875],"rotation":[-60.752,-8.4785,-4.2463],"uv":{"north":{"uv":[43,66],"uv_size":[0.25,0.25]},"east":{"uv":[53,38],"uv_size":[0.5,0.25]},"south":{"uv":[66,43],"uv_size":[0.25,0.25]},"west":{"uv":[39,53],"uv_size":[0.5,0.25]},"up":{"uv":[53,39],"uv_size":[0.25,0.5]},"down":{"uv":[40,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0148,-9.8215,-0.4977],"size":[0.006,0.0962,1.9286],"pivot":[0.0148,-9.8215,-0.3898],"rotation":[-60.752,-8.4785,-4.2463],"uv":{"north":{"uv":[44,66],"uv_size":[0.25,0.25]},"east":{"uv":[9,38],"uv_size":[1.75,0.25]},"south":{"uv":[66,44],"uv_size":[0.25,0.25]},"west":{"uv":[38,9],"uv_size":[1.75,0.25]},"up":{"uv":[38,10],"uv_size":[0.25,1.75]},"down":{"uv":[11,39.75],"uv_size":[0.25,-1.75]}}},{"origin":[-0.0198,-9.7211,0.8282],"size":[0.006,0.0917,0.4408],"pivot":[-0.0198,-9.7211,-0.2084],"rotation":[-60.752,-8.4785,-4.2463],"uv":{"north":{"uv":[45,66],"uv_size":[0.25,0.25]},"east":{"uv":[53,40],"uv_size":[0.5,0.25]},"south":{"uv":[66,45],"uv_size":[0.25,0.25]},"west":{"uv":[41,53],"uv_size":[0.5,0.25]},"up":{"uv":[53,41],"uv_size":[0.25,0.5]},"down":{"uv":[42,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0047,-9.7882,-0.0794],"size":[0.006,0.1621,0.6597],"pivot":[-0.0047,-9.7648,-0.2875],"rotation":[-60.752,-8.4785,-4.2463],"uv":{"north":{"uv":[46,66],"uv_size":[0.25,0.25]},"east":{"uv":[53,42],"uv_size":[0.5,0.25]},"south":{"uv":[66,46],"uv_size":[0.25,0.25]},"west":{"uv":[43,53],"uv_size":[0.5,0.25]},"up":{"uv":[53,43],"uv_size":[0.25,0.5]},"down":{"uv":[44,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.059,-9.8207,-0.3941],"size":[0.0127,0.2128,0.0836],"pivot":[0.059,-10.5765,-0.3105],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[47,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,47],"uv_size":[0.25,0.25]},"south":{"uv":[48,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,48],"uv_size":[0.25,0.25]},"up":{"uv":[49,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0398,-9.9775,-0.3119],"size":[0.0127,0.3677,0.1307],"pivot":[0.0398,-10.5785,-0.1812],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[50,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,50],"uv_size":[0.25,0.25]},"south":{"uv":[51,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,51],"uv_size":[0.25,0.25]},"up":{"uv":[52,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.055,-11.6261,0.6823],"size":[0.0127,0.1123,0.0432],"pivot":[0.055,-12.4825,0.7255],"rotation":[-0.2502,-4.9785,-4.2618],"uv":{"north":{"uv":[53,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,53],"uv_size":[0.25,0.25]},"south":{"uv":[54,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,54],"uv_size":[0.25,0.25]},"up":{"uv":[55,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,55.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0052,-11.628,0.6851],"size":[0.0127,0.1556,0.0552],"pivot":[-0.0052,-11.628,0.6862],"rotation":[43.1645,-4.9785,-4.2618],"uv":{"north":{"uv":[56,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,56],"uv_size":[0.25,0.25]},"south":{"uv":[57,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,57],"uv_size":[0.25,0.25]},"up":{"uv":[58,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0084,-11.495,0.7328],"size":[0.0127,0.0964,0.0903],"pivot":[-0.0084,-11.6094,0.7061],"rotation":[43.1645,-4.9785,-4.2618],"uv":{"north":{"uv":[59,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,59],"uv_size":[0.25,0.25]},"south":{"uv":[60,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,60],"uv_size":[0.25,0.25]},"up":{"uv":[61,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0117,-11.3752,1.1822],"size":[0.0127,0.0571,0.0553],"pivot":[-0.0117,-12.092,1.1555],"rotation":[43.1645,-4.9785,-4.2618],"uv":{"north":{"uv":[62,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,62],"uv_size":[0.25,0.25]},"south":{"uv":[63,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,63],"uv_size":[0.25,0.25]},"up":{"uv":[64,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,64.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group5","parent":"group","pivot":[0.0087,-11.6319,0.7292],"rotation":[0,-1,0],"cubes":[{"origin":[0.0739,-11.5191,0.5828],"size":[0.0127,1.8958,0.1509],"pivot":[0.0866,-10.592,0.7337],"rotation":[-0.2502,4.9785,4.2618],"uv":{"north":{"uv":[12,38],"uv_size":[0.25,1.75]},"east":{"uv":[38,12],"uv_size":[0.25,1.75]},"south":{"uv":[13,38],"uv_size":[0.25,1.75]},"west":{"uv":[14,38],"uv_size":[0.25,1.75]},"up":{"uv":[65,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0609,-10.7028,0.096],"size":[0.0125,1.0811,0.4873],"inflate":-0.001,"pivot":[0.0736,-10.5904,0.5834],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[43,4],"uv_size":[0.25,1]},"east":{"uv":[36,14],"uv_size":[0.5,1]},"south":{"uv":[5,43],"uv_size":[0.25,1]},"west":{"uv":[15,36],"uv_size":[0.5,1]},"up":{"uv":[53,44],"uv_size":[0.25,0.5]},"down":{"uv":[45,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0199,-11.3345,0.4211],"size":[0.0127,0.6346,0.1576],"pivot":[-0.0072,-11.6686,0.5787],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[53,45],"uv_size":[0.25,0.5]},"east":{"uv":[46,53],"uv_size":[0.25,0.5]},"south":{"uv":[53,46],"uv_size":[0.25,0.5]},"west":{"uv":[47,53],"uv_size":[0.25,0.5]},"up":{"uv":[66,66],"uv_size":[0.25,0.25]},"down":{"uv":[0,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0673,-11.4374,0.5108],"size":[0.0127,0.1046,0.0652],"pivot":[-0.0546,-12.3015,0.5759],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[67,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0751,-11.4938,0.5574],"size":[0.0127,0.0567,0.0181],"pivot":[-0.0624,-12.4058,0.5755],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[67,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0108,-10.2176,-0.1844],"size":[0.0129,0.6035,0.2858],"inflate":0.001,"pivot":[0.0021,-10.5829,0.1012],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[53,47],"uv_size":[0.25,0.5]},"east":{"uv":[48,53],"uv_size":[0.25,0.5]},"south":{"uv":[53,48],"uv_size":[0.25,0.5]},"west":{"uv":[49,53],"uv_size":[0.25,0.5]},"up":{"uv":[67,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0773,-9.7251,-0.501],"size":[0.006,0.1186,0.1078],"pivot":[-0.0713,-10.5753,-0.3931],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[67,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0208,-9.8215,-0.4977],"size":[0.006,0.0962,1.9286],"pivot":[-0.0148,-9.8215,-0.3898],"rotation":[-60.752,8.4785,4.2463],"uv":{"north":{"uv":[67,10],"uv_size":[0.25,0.25]},"east":{"uv":[38,14],"uv_size":[1.75,0.25]},"south":{"uv":[11,67],"uv_size":[0.25,0.25]},"west":{"uv":[38,15],"uv_size":[1.75,0.25]},"up":{"uv":[38,16],"uv_size":[0.25,1.75]},"down":{"uv":[38,19.75],"uv_size":[0.25,-1.75]}}},{"origin":[0.0039,-11.5045,0.5881],"size":[0.006,0.0147,0.0236],"pivot":[0.0099,-11.4574,0.5881],"rotation":[-48.502,8.4785,4.2463],"uv":{"north":{"uv":[67,11],"uv_size":[0.25,0.25]},"east":{"uv":[12,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0076,-11.4155,0.4901],"size":[0.006,0.0357,0.0963],"pivot":[-0.0016,-11.4155,0.4901],"rotation":[-48.502,8.4785,4.2463],"uv":{"north":{"uv":[67,14],"uv_size":[0.25,0.25]},"east":{"uv":[15,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,15],"uv_size":[0.25,0.25]},"west":{"uv":[16,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0013,-9.7868,0.7491],"size":[0.006,0.1137,0.4822],"pivot":[0.0047,-9.7648,-0.2875],"rotation":[-60.752,8.4785,4.2463],"uv":{"north":{"uv":[67,17],"uv_size":[0.25,0.25]},"east":{"uv":[53,49],"uv_size":[0.5,0.25]},"south":{"uv":[18,67],"uv_size":[0.25,0.25]},"west":{"uv":[50,53],"uv_size":[0.5,0.25]},"up":{"uv":[53,50],"uv_size":[0.25,0.5]},"down":{"uv":[51,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0138,-9.7211,0.8282],"size":[0.006,0.0917,0.4408],"pivot":[0.0198,-9.7211,-0.2084],"rotation":[-60.752,8.4785,4.2463],"uv":{"north":{"uv":[67,18],"uv_size":[0.25,0.25]},"east":{"uv":[53,51],"uv_size":[0.5,0.25]},"south":{"uv":[19,67],"uv_size":[0.25,0.25]},"west":{"uv":[52,53],"uv_size":[0.5,0.25]},"up":{"uv":[53,52],"uv_size":[0.25,0.5]},"down":{"uv":[53,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0013,-9.7882,-0.0794],"size":[0.006,0.1621,0.6597],"pivot":[0.0047,-9.7648,-0.2875],"rotation":[-60.752,8.4785,4.2463],"uv":{"north":{"uv":[67,19],"uv_size":[0.25,0.25]},"east":{"uv":[0,54],"uv_size":[0.5,0.25]},"south":{"uv":[20,67],"uv_size":[0.25,0.25]},"west":{"uv":[54,0],"uv_size":[0.5,0.25]},"up":{"uv":[1,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,1.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0717,-9.8207,-0.3941],"size":[0.0127,0.2128,0.0836],"pivot":[-0.059,-10.5765,-0.3105],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[67,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0526,-9.9775,-0.3119],"size":[0.0127,0.3677,0.1307],"pivot":[-0.0398,-10.5785,-0.1812],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[67,23],"uv_size":[0.25,0.25]},"east":{"uv":[24,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,24],"uv_size":[0.25,0.25]},"west":{"uv":[25,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0677,-11.6261,0.6823],"size":[0.0127,0.1123,0.0432],"pivot":[-0.055,-12.4825,0.7255],"rotation":[-0.2502,4.9785,4.2618],"uv":{"north":{"uv":[67,26],"uv_size":[0.25,0.25]},"east":{"uv":[27,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,27],"uv_size":[0.25,0.25]},"west":{"uv":[28,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0075,-11.628,0.6851],"size":[0.0127,0.1556,0.0552],"pivot":[0.0052,-11.628,0.6862],"rotation":[43.1645,4.9785,4.2618],"uv":{"north":{"uv":[67,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0044,-11.495,0.7328],"size":[0.0127,0.0964,0.0903],"pivot":[0.0084,-11.6094,0.7061],"rotation":[43.1645,4.9785,4.2618],"uv":{"north":{"uv":[67,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0011,-11.3752,1.1822],"size":[0.0127,0.0571,0.0553],"pivot":[0.0117,-12.092,1.1555],"rotation":[43.1645,4.9785,4.2618],"uv":{"north":{"uv":[67,35],"uv_size":[0.25,0.25]},"east":{"uv":[36,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,36],"uv_size":[0.25,0.25]},"west":{"uv":[37,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,67.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group2","parent":"group","pivot":[-0.1584,-9.6339,0.7603],"rotation":[0,0,0.25],"cubes":[{"origin":[-0.0913,-10.8298,0.7342],"size":[0.0717,1.1985,0.0224],"pivot":[-0.0913,-10.4797,0.7566],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[43,5],"uv_size":[0.25,1]},"east":{"uv":[6,43],"uv_size":[0.25,1]},"south":{"uv":[43,6],"uv_size":[0.25,1]},"west":{"uv":[7,43],"uv_size":[0.25,1]},"up":{"uv":[67,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0034,-11.0618,0.729],"size":[0.0423,0.2358,0.0224],"pivot":[0.0034,-11.6744,0.7514],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[67,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0221,-11.2969,0.728],"size":[0.0221,0.2358,0.0224],"pivot":[0.0221,-11.9095,0.7503],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[67,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0264,-11.375,0.7307],"size":[0.0217,0.0762,0.0224],"pivot":[-0.0264,-11.2988,0.753],"rotation":[-0.3589,-46.0168,-4.2752],"uv":{"north":{"uv":[67,45],"uv_size":[0.25,0.25]},"east":{"uv":[46,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,46],"uv_size":[0.25,0.25]},"west":{"uv":[47,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,47],"uv_size":[0.25,0.25]},"down":{"uv":[48,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0351,-11.168,0.7458],"size":[0.0154,0.1079,0.0224],"pivot":[0.0351,-11.9085,0.7682],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[67,48],"uv_size":[0.25,0.25]},"east":{"uv":[49,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,49],"uv_size":[0.25,0.25]},"west":{"uv":[50,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,50],"uv_size":[0.25,0.25]},"down":{"uv":[51,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0284,-10.9523,0.7631],"size":[0.0154,0.1281,0.0224],"pivot":[0.0284,-11.6726,0.7855],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[67,51],"uv_size":[0.25,0.25]},"east":{"uv":[52,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,52],"uv_size":[0.25,0.25]},"west":{"uv":[53,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,53],"uv_size":[0.25,0.25]},"down":{"uv":[54,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0437,-10.9523,0.7631],"size":[0.0154,0.1281,0.0224],"pivot":[-0.0284,-11.6726,0.7855],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[67,54],"uv_size":[0.25,0.25]},"east":{"uv":[55,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,55],"uv_size":[0.25,0.25]},"west":{"uv":[56,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,56],"uv_size":[0.25,0.25]},"down":{"uv":[57,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0505,-11.168,0.7458],"size":[0.0154,0.1079,0.0224],"pivot":[-0.0351,-11.9085,0.7682],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[67,57],"uv_size":[0.25,0.25]},"east":{"uv":[58,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,58],"uv_size":[0.25,0.25]},"west":{"uv":[59,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,59],"uv_size":[0.25,0.25]},"down":{"uv":[60,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0047,-11.375,0.7307],"size":[0.0217,0.0762,0.0224],"pivot":[0.0264,-11.2988,0.753],"rotation":[-0.3589,46.0168,4.2752],"uv":{"north":{"uv":[67,60],"uv_size":[0.25,0.25]},"east":{"uv":[61,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,61],"uv_size":[0.25,0.25]},"west":{"uv":[62,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,62],"uv_size":[0.25,0.25]},"down":{"uv":[63,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1584,-11.6376,0.7379],"size":[0.0205,2.0036,0.0224],"pivot":[-0.1584,-9.6339,0.7603],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[20,38],"uv_size":[0.25,1.75]},"east":{"uv":[38,20],"uv_size":[0.25,1.75]},"south":{"uv":[21,38],"uv_size":[0.25,1.75]},"west":{"uv":[38,22],"uv_size":[0.25,1.75]},"up":{"uv":[67,63],"uv_size":[0.25,0.25]},"down":{"uv":[64,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1584,-9.7891,0.6932],"size":[0.0205,0.1335,0.0224],"pivot":[-0.1584,-9.6341,0.791],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[67,64],"uv_size":[0.25,0.25]},"east":{"uv":[65,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,65],"uv_size":[0.25,0.25]},"west":{"uv":[66,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,66],"uv_size":[0.25,0.25]},"down":{"uv":[67,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1584,-9.6556,0.6571],"size":[0.0205,0.0217,0.0808],"pivot":[-0.1584,-9.6338,0.7379],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[0,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,0],"uv_size":[0.25,0.25]},"south":{"uv":[1,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,1],"uv_size":[0.25,0.25]},"up":{"uv":[2,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1584,-9.87,0.7156],"size":[0.0205,0.2143,0.0224],"pivot":[-0.1584,-9.6342,0.8133],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[3,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1584,-9.7055,0.6708],"size":[0.0205,0.05,0.0224],"pivot":[-0.1584,-9.634,0.7686],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[6,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1328,-9.9561,0.7365],"size":[0.0205,0.3122,0.0224],"pivot":[-0.1328,-9.9561,0.7365],"rotation":[14.7459,-0.0196,-4.5334],"uv":{"north":{"uv":[9,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,11.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group3","parent":"group","pivot":[0.1584,-9.6339,0.7603],"rotation":[0,0,-0.25],"cubes":[{"origin":[0.0196,-10.8298,0.7342],"size":[0.0717,1.1985,0.0224],"pivot":[0.0913,-10.4797,0.7566],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[43,7],"uv_size":[0.25,1]},"east":{"uv":[8,43],"uv_size":[0.25,1]},"south":{"uv":[43,8],"uv_size":[0.25,1]},"west":{"uv":[9,43],"uv_size":[0.25,1]},"up":{"uv":[12,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0457,-11.0618,0.729],"size":[0.0423,0.2358,0.0224],"pivot":[-0.0034,-11.6744,0.7514],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[13,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,13],"uv_size":[0.25,0.25]},"south":{"uv":[14,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,14],"uv_size":[0.25,0.25]},"up":{"uv":[15,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0442,-11.2969,0.728],"size":[0.0221,0.2358,0.0224],"pivot":[-0.0221,-11.9095,0.7503],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[16,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0047,-11.375,0.7307],"size":[0.0217,0.0762,0.0224],"pivot":[0.0264,-11.2988,0.753],"rotation":[-0.3589,46.0168,4.2752],"uv":{"north":{"uv":[19,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0505,-11.168,0.7458],"size":[0.0154,0.1079,0.0224],"pivot":[-0.0351,-11.9085,0.7682],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[22,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0437,-10.9523,0.7631],"size":[0.0154,0.1281,0.0224],"pivot":[-0.0284,-11.6726,0.7855],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[25,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0284,-10.9523,0.7631],"size":[0.0154,0.1281,0.0224],"pivot":[0.0284,-11.6726,0.7855],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[28,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0351,-11.168,0.7458],"size":[0.0154,0.1079,0.0224],"pivot":[0.0351,-11.9085,0.7682],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[31,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0264,-11.375,0.7307],"size":[0.0217,0.0762,0.0224],"pivot":[-0.0264,-11.2988,0.753],"rotation":[-0.3589,-46.0168,-4.2752],"uv":{"north":{"uv":[34,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1379,-11.6376,0.7379],"size":[0.0205,2.0036,0.0224],"pivot":[0.1584,-9.6339,0.7603],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[38,24],"uv_size":[0.25,1.75]},"east":{"uv":[26,38],"uv_size":[0.25,1.75]},"south":{"uv":[38,26],"uv_size":[0.25,1.75]},"west":{"uv":[27,38],"uv_size":[0.25,1.75]},"up":{"uv":[37,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1379,-9.7891,0.6932],"size":[0.0205,0.1335,0.0224],"pivot":[0.1584,-9.6341,0.791],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[38,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1379,-9.6556,0.6571],"size":[0.0205,0.0217,0.0808],"pivot":[0.1584,-9.6338,0.7379],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[41,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1379,-9.87,0.7156],"size":[0.0205,0.2143,0.0224],"pivot":[0.1584,-9.6342,0.8133],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[44,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,44],"uv_size":[0.25,0.25]},"south":{"uv":[45,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,45],"uv_size":[0.25,0.25]},"up":{"uv":[46,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1379,-9.7055,0.6708],"size":[0.0205,0.05,0.0224],"pivot":[0.1584,-9.634,0.7686],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[47,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,47],"uv_size":[0.25,0.25]},"south":{"uv":[48,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,48],"uv_size":[0.25,0.25]},"up":{"uv":[49,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1123,-9.9561,0.7365],"size":[0.0205,0.3122,0.0224],"pivot":[0.1328,-9.9561,0.7365],"rotation":[14.7459,0.0196,4.5334],"uv":{"north":{"uv":[50,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,50],"uv_size":[0.25,0.25]},"south":{"uv":[51,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,51],"uv_size":[0.25,0.25]},"up":{"uv":[52,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,52.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group7","parent":"group","pivot":[-0.7521,0.4527,0.874],"rotation":[60,0,0],"cubes":[{"origin":[0.4973,1.0451,0.8672],"size":[0.2548,0.7757,0.258],"pivot":[0.7521,0.4527,0.874],"rotation":[-49.2766,-28.6247,-7.8505],"uv":{"north":{"uv":[47,36],"uv_size":[0.25,0.75]},"east":{"uv":[37,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,37],"uv_size":[0.25,0.75]},"west":{"uv":[38,47],"uv_size":[0.25,0.75]},"up":{"uv":[53,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.7521,1.0451,0.8672],"size":[0.2548,0.7757,0.258],"pivot":[-0.7521,0.4527,0.874],"rotation":[-49.2766,28.6247,7.8505],"uv":{"north":{"uv":[47,38],"uv_size":[0.25,0.75]},"east":{"uv":[39,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,39],"uv_size":[0.25,0.75]},"west":{"uv":[40,47],"uv_size":[0.25,0.75]},"up":{"uv":[54,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.421,0.6068,0.9318],"size":[0.2548,0.7757,0.258],"pivot":[-0.4345,0.6068,1.412],"rotation":[-95.0444,31.4574,-17.8385],"uv":{"north":{"uv":[47,40],"uv_size":[0.25,0.75]},"east":{"uv":[41,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,41],"uv_size":[0.25,0.75]},"west":{"uv":[42,47],"uv_size":[0.25,0.75]},"up":{"uv":[55,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,55.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4816,-0.0055,1.029],"size":[0.2547,0.8296,0.3926],"pivot":[-0.4816,0.8241,1.4216],"rotation":[-94.6868,-23.3735,-13.3382],"uv":{"north":{"uv":[47,42],"uv_size":[0.25,0.75]},"east":{"uv":[43,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,43],"uv_size":[0.25,0.75]},"west":{"uv":[44,47],"uv_size":[0.25,0.75]},"up":{"uv":[56,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2268,-0.0055,1.029],"size":[0.2547,0.8296,0.3926],"pivot":[0.4816,0.8241,1.4216],"rotation":[-94.6868,23.3735,13.3382],"uv":{"north":{"uv":[47,44],"uv_size":[0.25,0.75]},"east":{"uv":[45,47],"uv_size":[0.25,0.75]},"south":{"uv":[47,45],"uv_size":[0.25,0.75]},"west":{"uv":[46,47],"uv_size":[0.25,0.75]},"up":{"uv":[57,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,57.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1662,0.6068,0.9318],"size":[0.2548,0.7757,0.258],"pivot":[0.4345,0.6068,1.412],"rotation":[-95.0444,-31.4574,17.8385],"uv":{"north":{"uv":[47,46],"uv_size":[0.25,0.75]},"east":{"uv":[47,47],"uv_size":[0.25,0.75]},"south":{"uv":[0,48],"uv_size":[0.25,0.75]},"west":{"uv":[48,0],"uv_size":[0.25,0.75]},"up":{"uv":[58,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5063,0.8376,1.205],"size":[0.2387,0.429,0.1799],"pivot":[-0.5803,0.9216,1.0529],"rotation":[-95.4656,5.3177,-21.427],"uv":{"north":{"uv":[2,54],"uv_size":[0.25,0.5]},"east":{"uv":[54,2],"uv_size":[0.25,0.5]},"south":{"uv":[3,54],"uv_size":[0.25,0.5]},"west":{"uv":[54,3],"uv_size":[0.25,0.5]},"up":{"uv":[59,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2676,0.8376,1.205],"size":[0.2387,0.429,0.1799],"pivot":[0.5803,0.9216,1.0529],"rotation":[-95.4656,-5.3177,21.427],"uv":{"north":{"uv":[4,54],"uv_size":[0.25,0.5]},"east":{"uv":[54,4],"uv_size":[0.25,0.5]},"south":{"uv":[5,54],"uv_size":[0.25,0.5]},"west":{"uv":[54,5],"uv_size":[0.25,0.5]},"up":{"uv":[60,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,60.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group8","parent":"group7","pivot":[0.5895,1.7039,3.082],"rotation":[160.4087,34.9817,54.2134],"cubes":[{"origin":[0.5895,2.4848,3.0753],"size":[0.2548,0.5872,0.258],"pivot":[0.5895,1.7039,3.082],"rotation":[-49.2766,28.6247,7.8505],"uv":{"north":{"uv":[6,54],"uv_size":[0.25,0.5]},"east":{"uv":[54,6],"uv_size":[0.25,0.5]},"south":{"uv":[7,54],"uv_size":[0.25,0.5]},"west":{"uv":[54,7],"uv_size":[0.25,0.5]},"up":{"uv":[61,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.9026,2.2706,3.3659],"size":[0.1848,0.3482,0.1597],"pivot":[0.7613,2.1729,3.2609],"rotation":[-95.4656,5.3177,-21.427],"uv":{"north":{"uv":[62,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,62],"uv_size":[0.25,0.25]},"south":{"uv":[63,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,63],"uv_size":[0.25,0.25]},"up":{"uv":[64,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,64.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.8759,2.6124,3.2853],"size":[0.1309,0.2674,0.1059],"pivot":[0.7346,2.4339,3.1264],"rotation":[-119.789,12.9327,-8.1],"uv":{"north":{"uv":[65,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,65],"uv_size":[0.25,0.25]},"south":{"uv":[66,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,66],"uv_size":[0.25,0.25]},"up":{"uv":[67,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,67.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group9","parent":"group7","pivot":[-0.5895,1.7039,3.082],"rotation":[160.4087,-34.9817,-54.2134],"cubes":[{"origin":[-0.8442,2.4848,3.0753],"size":[0.2548,0.5872,0.258],"pivot":[-0.5895,1.7039,3.082],"rotation":[-49.2766,-28.6247,-7.8505],"uv":{"north":{"uv":[8,54],"uv_size":[0.25,0.5]},"east":{"uv":[54,8],"uv_size":[0.25,0.5]},"south":{"uv":[9,54],"uv_size":[0.25,0.5]},"west":{"uv":[54,9],"uv_size":[0.25,0.5]},"up":{"uv":[68,68],"uv_size":[0.25,0.25]},"down":{"uv":[0,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.0874,2.2706,3.3659],"size":[0.1848,0.3482,0.1597],"pivot":[-0.7613,2.1729,3.2609],"rotation":[-95.4656,-5.3177,21.427],"uv":{"north":{"uv":[69,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.0069,2.6124,3.2853],"size":[0.1309,0.2674,0.1059],"pivot":[-0.7346,2.4339,3.1264],"rotation":[-119.789,-12.9327,8.1],"uv":{"north":{"uv":[69,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,69.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group6","parent":"devil","pivot":[0,6.8142,0.2954],"cubes":[{"origin":[-0.4477,8.3265,-0.2809],"size":[0.8954,2.0196,0.7271],"uv":{"north":{"uv":[10,26],"uv_size":[0.75,1.75]},"east":{"uv":[11,26],"uv_size":[0.75,1.75]},"south":{"uv":[26,12],"uv_size":[0.75,1.75]},"west":{"uv":[26,14],"uv_size":[0.75,1.75]},"up":{"uv":[16,35],"uv_size":[0.75,0.75]},"down":{"uv":[35,16.75],"uv_size":[0.75,-0.75]}}},{"origin":[-0.1872,10.0229,0.4461],"size":[0.3743,0.3231,0.873],"pivot":[-0.4322,10.3461,0.4461],"rotation":[-46.5,0,0],"uv":{"north":{"uv":[69,6],"uv_size":[0.25,0.25]},"east":{"uv":[1,48],"uv_size":[0.75,0.25]},"south":{"uv":[7,69],"uv_size":[0.25,0.25]},"west":{"uv":[48,1],"uv_size":[0.75,0.25]},"up":{"uv":[2,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,2.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.4477,10.0229,0.4461],"size":[0.8954,0.3231,0.0714],"pivot":[-0.6927,10.3461,0.4461],"rotation":[-46.5,0,0],"uv":{"north":{"uv":[3,48],"uv_size":[0.75,0.25]},"east":{"uv":[69,7],"uv_size":[0.25,0.25]},"south":{"uv":[48,3],"uv_size":[0.75,0.25]},"west":{"uv":[8,69],"uv_size":[0.25,0.25]},"up":{"uv":[4,48],"uv_size":[0.75,0.25]},"down":{"uv":[48,4.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.0625,9.3897,0.2042],"size":[0.2497,0.3231,0.8428],"pivot":[0.1872,9.7129,1.047],"rotation":[-47.9341,-12.2852,13.2662],"uv":{"north":{"uv":[69,8],"uv_size":[0.25,0.25]},"east":{"uv":[5,48],"uv_size":[0.75,0.25]},"south":{"uv":[9,69],"uv_size":[0.25,0.25]},"west":{"uv":[48,5],"uv_size":[0.75,0.25]},"up":{"uv":[6,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,6.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1872,9.3897,0.2042],"size":[0.2497,0.3231,0.8428],"pivot":[-0.1872,9.7129,1.047],"rotation":[-47.9341,12.2852,-13.2662],"uv":{"north":{"uv":[69,9],"uv_size":[0.25,0.25]},"east":{"uv":[7,48],"uv_size":[0.75,0.25]},"south":{"uv":[10,69],"uv_size":[0.25,0.25]},"west":{"uv":[48,7],"uv_size":[0.75,0.25]},"up":{"uv":[8,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,8.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.3336,9.5877,0.3598],"size":[0.2497,0.4521,0.8509],"pivot":[-0.3336,10.0398,0.7368],"rotation":[-44.4838,23.4258,-2.0987],"uv":{"north":{"uv":[10,54],"uv_size":[0.25,0.5]},"east":{"uv":[39,30],"uv_size":[0.75,0.5]},"south":{"uv":[54,10],"uv_size":[0.25,0.5]},"west":{"uv":[39,31],"uv_size":[0.75,0.5]},"up":{"uv":[9,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,9.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.084,9.5877,0.3598],"size":[0.2497,0.4521,0.8509],"pivot":[0.3336,10.0398,0.7368],"rotation":[-44.4838,-23.4258,2.0987],"uv":{"north":{"uv":[11,54],"uv_size":[0.25,0.5]},"east":{"uv":[39,32],"uv_size":[0.75,0.5]},"south":{"uv":[54,11],"uv_size":[0.25,0.5]},"west":{"uv":[39,33],"uv_size":[0.75,0.5]},"up":{"uv":[10,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,10.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1872,8.9862,0.3921],"size":[0.2497,0.7267,0.6549],"pivot":[-0.1872,9.7129,1.047],"rotation":[0,23.4398,0],"uv":{"north":{"uv":[11,48],"uv_size":[0.25,0.75]},"east":{"uv":[39,34],"uv_size":[0.5,0.75]},"south":{"uv":[48,11],"uv_size":[0.25,0.75]},"west":{"uv":[39,35],"uv_size":[0.5,0.75]},"up":{"uv":[12,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,12.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1872,8.2596,0.3921],"size":[0.2497,0.7267,0.1298],"pivot":[-0.1872,8.9862,1.047],"rotation":[0,23.4398,0],"uv":{"north":{"uv":[12,48],"uv_size":[0.25,0.75]},"east":{"uv":[48,12],"uv_size":[0.25,0.75]},"south":{"uv":[13,48],"uv_size":[0.25,0.75]},"west":{"uv":[48,13],"uv_size":[0.25,0.75]},"up":{"uv":[69,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0625,8.2596,0.3921],"size":[0.2497,0.7267,0.1298],"pivot":[0.1872,8.9862,1.047],"rotation":[0,-23.4398,0],"uv":{"north":{"uv":[14,48],"uv_size":[0.25,0.75]},"east":{"uv":[48,14],"uv_size":[0.25,0.75]},"south":{"uv":[15,48],"uv_size":[0.25,0.75]},"west":{"uv":[48,15],"uv_size":[0.25,0.75]},"up":{"uv":[69,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1872,7.9009,0.5153],"size":[0.2499,1.0854,0.5319],"inflate":0.001,"pivot":[-0.1872,8.9862,1.047],"rotation":[-10,23.4398,0],"uv":{"north":{"uv":[43,9],"uv_size":[0.25,1]},"east":{"uv":[36,15],"uv_size":[0.5,1]},"south":{"uv":[10,43],"uv_size":[0.25,1]},"west":{"uv":[16,36],"uv_size":[0.5,1]},"up":{"uv":[13,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,13.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.6201,6.4674,-0.3486],"size":[0.2497,2.6605,0.397],"pivot":[-0.6201,5.875,0.0484],"rotation":[-9.671,-18.4903,7.1057],"uv":{"north":{"uv":[33,32],"uv_size":[0.25,2.5]},"east":{"uv":[0,34],"uv_size":[0.25,2.5]},"south":{"uv":[34,0],"uv_size":[0.25,2.5]},"west":{"uv":[1,34],"uv_size":[0.25,2.5]},"up":{"uv":[69,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3705,6.4674,-0.3486],"size":[0.2497,2.6605,0.397],"pivot":[0.6201,5.875,0.0484],"rotation":[-9.671,18.4903,-7.1057],"uv":{"north":{"uv":[2,34],"uv_size":[0.25,2.5]},"east":{"uv":[3,34],"uv_size":[0.25,2.5]},"south":{"uv":[34,3],"uv_size":[0.25,2.5]},"west":{"uv":[34,6],"uv_size":[0.25,2.5]},"up":{"uv":[69,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4478,5.2113,-0.2284],"size":[0.2497,1.298,0.397],"pivot":[-0.4478,6.5093,-0.2284],"rotation":[-5.4926,-20.0804,-5.4989],"uv":{"north":{"uv":[40,19],"uv_size":[0.25,1.25]},"east":{"uv":[20,40],"uv_size":[0.25,1.25]},"south":{"uv":[21,40],"uv_size":[0.25,1.25]},"west":{"uv":[40,21],"uv_size":[0.25,1.25]},"up":{"uv":[69,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1981,5.2113,-0.2284],"size":[0.2497,1.298,0.397],"pivot":[0.4478,6.5093,-0.2284],"rotation":[-5.4926,20.0804,5.4989],"uv":{"north":{"uv":[23,40],"uv_size":[0.25,1.25]},"east":{"uv":[40,23],"uv_size":[0.25,1.25]},"south":{"uv":[24,40],"uv_size":[0.25,1.25]},"west":{"uv":[25,40],"uv_size":[0.25,1.25]},"up":{"uv":[69,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4887,5.9259,-0.7602],"size":[0.2497,3.2529,0.4374],"pivot":[-0.4887,5.9259,-0.3228],"rotation":[-18.5411,-59.9321,20.1981],"uv":{"north":{"uv":[32,8],"uv_size":[0.25,3]},"east":{"uv":[18,12],"uv_size":[0.5,3]},"south":{"uv":[10,32],"uv_size":[0.25,3]},"west":{"uv":[18,15],"uv_size":[0.5,3]},"up":{"uv":[14,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,14.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1126,4.592,-0.541],"size":[0.2497,1.341,0.4374],"pivot":[-0.1126,5.933,-0.541],"rotation":[12.4051,-60.8974,-15.1155],"uv":{"north":{"uv":[40,25],"uv_size":[0.25,1.25]},"east":{"uv":[34,9],"uv_size":[0.5,1.25]},"south":{"uv":[26,40],"uv_size":[0.25,1.25]},"west":{"uv":[34,11],"uv_size":[0.5,1.25]},"up":{"uv":[15,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,15.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1371,4.592,-0.541],"size":[0.2497,1.341,0.4374],"pivot":[0.1126,5.933,-0.541],"rotation":[12.4051,60.8974,15.1155],"uv":{"north":{"uv":[27,40],"uv_size":[0.25,1.25]},"east":{"uv":[34,13],"uv_size":[0.5,1.25]},"south":{"uv":[40,27],"uv_size":[0.25,1.25]},"west":{"uv":[34,15],"uv_size":[0.5,1.25]},"up":{"uv":[16,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,16.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3891,5.9259,-0.7461],"size":[0.2497,3.2529,0.4909],"pivot":[-0.4887,5.9259,-0.3228],"rotation":[-3.751,-46.5466,3.1325],"uv":{"north":{"uv":[11,32],"uv_size":[0.25,3]},"east":{"uv":[17,18],"uv_size":[0.5,3]},"south":{"uv":[32,11],"uv_size":[0.25,3]},"west":{"uv":[18,18],"uv_size":[0.5,3]},"up":{"uv":[17,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,17.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1394,5.9259,-0.7461],"size":[0.2497,3.2529,0.4909],"pivot":[0.4887,5.9259,-0.3228],"rotation":[-3.751,46.5466,-3.1325],"uv":{"north":{"uv":[12,32],"uv_size":[0.25,3]},"east":{"uv":[19,0],"uv_size":[0.5,3]},"south":{"uv":[13,32],"uv_size":[0.25,3]},"west":{"uv":[19,3],"uv_size":[0.5,3]},"up":{"uv":[18,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,18.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2391,5.9259,-0.7602],"size":[0.2497,3.2529,0.4374],"pivot":[0.4887,5.9259,-0.3228],"rotation":[-18.5411,59.9321,-20.1981],"uv":{"north":{"uv":[14,32],"uv_size":[0.25,3]},"east":{"uv":[19,6],"uv_size":[0.5,3]},"south":{"uv":[32,14],"uv_size":[0.25,3]},"west":{"uv":[19,9],"uv_size":[0.5,3]},"up":{"uv":[19,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,19.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.2621,6.8322,0.3425],"size":[0.2497,1.0852,0.5317],"pivot":[-0.2621,7.9175,0.8741],"rotation":[-10,23.4398,0],"uv":{"north":{"uv":[43,10],"uv_size":[0.25,1]},"east":{"uv":[36,16],"uv_size":[0.5,1]},"south":{"uv":[11,43],"uv_size":[0.25,1]},"west":{"uv":[17,36],"uv_size":[0.5,1]},"up":{"uv":[20,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,20.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3371,5.7635,0.1696],"size":[0.2497,1.0852,0.5317],"pivot":[-0.3371,6.8487,0.7012],"rotation":[-10,23.4398,0],"uv":{"north":{"uv":[43,11],"uv_size":[0.25,1]},"east":{"uv":[36,17],"uv_size":[0.5,1]},"south":{"uv":[12,43],"uv_size":[0.25,1]},"west":{"uv":[18,36],"uv_size":[0.5,1]},"up":{"uv":[21,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,21.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4096,4.8334,0.0022],"size":[0.2497,1.0852,0.5317],"pivot":[-0.4096,5.9186,0.5339],"rotation":[5,23.4398,0],"uv":{"north":{"uv":[43,12],"uv_size":[0.25,1]},"east":{"uv":[36,18],"uv_size":[0.5,1]},"south":{"uv":[13,43],"uv_size":[0.25,1]},"west":{"uv":[19,36],"uv_size":[0.5,1]},"up":{"uv":[22,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,22.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.372,4.3582,0.089],"size":[0.2497,0.4793,0.5317],"pivot":[-0.372,4.8375,0.6207],"rotation":[-0.5033,23.9327,-13.6446],"uv":{"north":{"uv":[23,54],"uv_size":[0.25,0.5]},"east":{"uv":[43,13],"uv_size":[0.5,0.5]},"south":{"uv":[54,23],"uv_size":[0.25,0.5]},"west":{"uv":[14,43],"uv_size":[0.5,0.5]},"up":{"uv":[24,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,24.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1224,4.3582,0.089],"size":[0.2497,0.4793,0.5317],"pivot":[0.372,4.8375,0.6207],"rotation":[-0.5033,-23.9327,13.6446],"uv":{"north":{"uv":[25,54],"uv_size":[0.25,0.5]},"east":{"uv":[43,14],"uv_size":[0.5,0.5]},"south":{"uv":[54,25],"uv_size":[0.25,0.5]},"west":{"uv":[15,43],"uv_size":[0.5,0.5]},"up":{"uv":[26,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,26.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.16,4.8334,0.0022],"size":[0.2497,1.0852,0.5317],"pivot":[0.4096,5.9186,0.5339],"rotation":[5,-23.4398,0],"uv":{"north":{"uv":[43,15],"uv_size":[0.25,1]},"east":{"uv":[36,19],"uv_size":[0.5,1]},"south":{"uv":[16,43],"uv_size":[0.25,1]},"west":{"uv":[20,36],"uv_size":[0.5,1]},"up":{"uv":[27,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,27.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0874,5.7635,0.1696],"size":[0.2497,1.0852,0.5317],"pivot":[0.3371,6.8487,0.7012],"rotation":[-10,-23.4398,0],"uv":{"north":{"uv":[43,16],"uv_size":[0.25,1]},"east":{"uv":[36,20],"uv_size":[0.5,1]},"south":{"uv":[17,43],"uv_size":[0.25,1]},"west":{"uv":[21,36],"uv_size":[0.5,1]},"up":{"uv":[28,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,28.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0125,6.8322,0.3425],"size":[0.2497,1.0852,0.5317],"pivot":[0.2621,7.9175,0.8741],"rotation":[-10,-23.4398,0],"uv":{"north":{"uv":[43,17],"uv_size":[0.25,1]},"east":{"uv":[36,21],"uv_size":[0.5,1]},"south":{"uv":[18,43],"uv_size":[0.25,1]},"west":{"uv":[36,22],"uv_size":[0.5,1]},"up":{"uv":[29,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1872,7.901,1.047],"size":[0.0814,1.0901,0.196],"pivot":[-0.1872,8.9862,1.047],"rotation":[-93.1669,80.8185,-89.1957],"uv":{"north":{"uv":[43,18],"uv_size":[0.25,1]},"east":{"uv":[19,43],"uv_size":[0.25,1]},"south":{"uv":[43,19],"uv_size":[0.25,1]},"west":{"uv":[20,43],"uv_size":[0.25,1]},"up":{"uv":[69,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1058,7.901,1.047],"size":[0.0814,1.0901,0.196],"pivot":[0.1872,8.9862,1.047],"rotation":[-93.1669,-80.8185,89.1957],"uv":{"north":{"uv":[43,20],"uv_size":[0.25,1]},"east":{"uv":[21,43],"uv_size":[0.25,1]},"south":{"uv":[43,21],"uv_size":[0.25,1]},"west":{"uv":[22,43],"uv_size":[0.25,1]},"up":{"uv":[69,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0626,7.9009,0.5153],"size":[0.2499,1.0854,0.5319],"inflate":0.001,"pivot":[0.1872,8.9862,1.047],"rotation":[-10,-23.4398,0],"uv":{"north":{"uv":[43,22],"uv_size":[0.25,1]},"east":{"uv":[36,23],"uv_size":[0.5,1]},"south":{"uv":[23,43],"uv_size":[0.25,1]},"west":{"uv":[36,24],"uv_size":[0.5,1]},"up":{"uv":[30,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,30.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0625,8.9862,0.3921],"size":[0.2497,0.7267,0.6549],"pivot":[0.1872,9.7129,1.047],"rotation":[0,-23.4398,0],"uv":{"north":{"uv":[16,48],"uv_size":[0.25,0.75]},"east":{"uv":[39,36],"uv_size":[0.5,0.75]},"south":{"uv":[48,16],"uv_size":[0.25,0.75]},"west":{"uv":[39,37],"uv_size":[0.5,0.75]},"up":{"uv":[31,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1171,3.304,0.1741],"size":[0.2343,5.6822,0.873],"uv":{"north":{"uv":[16,26],"uv_size":[0.25,5.25]},"east":{"uv":[0,8],"uv_size":[0.75,5.25]},"south":{"uv":[26,16],"uv_size":[0.25,5.25]},"west":{"uv":[8,0],"uv_size":[0.75,5.25]},"up":{"uv":[17,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,17.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1171,3.304,0.3558],"size":[0.2343,5.6822,0.6912],"pivot":[-0.1171,3.304,1.047],"rotation":[0,28.8142,0],"uv":{"north":{"uv":[21,26],"uv_size":[0.25,5.25]},"east":{"uv":[1,8],"uv_size":[0.75,5.25]},"south":{"uv":[26,22],"uv_size":[0.25,5.25]},"west":{"uv":[2,8],"uv_size":[0.75,5.25]},"up":{"uv":[18,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,18.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1171,3.304,0.3558],"size":[0.2343,5.6822,0.6912],"pivot":[0.1171,3.304,1.047],"rotation":[0,-28.8142,0],"uv":{"north":{"uv":[27,0],"uv_size":[0.25,5.25]},"east":{"uv":[3,8],"uv_size":[0.75,5.25]},"south":{"uv":[27,6],"uv_size":[0.25,5.25]},"west":{"uv":[4,8],"uv_size":[0.75,5.25]},"up":{"uv":[19,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,19.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1872,8.9862,0.1741],"size":[0.3743,0.7267,0.873],"uv":{"north":{"uv":[20,48],"uv_size":[0.25,0.75]},"east":{"uv":[35,17],"uv_size":[0.75,0.75]},"south":{"uv":[48,20],"uv_size":[0.25,0.75]},"west":{"uv":[35,18],"uv_size":[0.75,0.75]},"up":{"uv":[21,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,21.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1279,2.6622,-0.5394],"size":[0.2558,7.6839,0.2787],"uv":{"north":{"uv":[7,14],"uv_size":[0.25,7]},"east":{"uv":[14,8],"uv_size":[0.25,7]},"south":{"uv":[15,0],"uv_size":[0.25,7]},"west":{"uv":[15,7],"uv_size":[0.25,7]},"up":{"uv":[69,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.128,3.719,-1.1145],"size":[0.256,0.2991,0.5751],"inflate":0.001,"uv":{"north":{"uv":[69,19],"uv_size":[0.25,0.25]},"east":{"uv":[32,54],"uv_size":[0.5,0.25]},"south":{"uv":[20,69],"uv_size":[0.25,0.25]},"west":{"uv":[54,32],"uv_size":[0.5,0.25]},"up":{"uv":[33,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1279,3.7471,-1.1144],"size":[0.2558,0.2709,0.1263],"pivot":[-0.1279,4.018,-1.1144],"rotation":[-25,0,0],"uv":{"north":{"uv":[69,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1279,4.018,-1.1144],"size":[0.2558,0.4055,0.1263],"pivot":[-0.1279,4.018,-1.1144],"rotation":[-67.5,0,0],"uv":{"north":{"uv":[69,23],"uv_size":[0.25,0.25]},"east":{"uv":[24,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,24],"uv_size":[0.25,0.25]},"west":{"uv":[25,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1279,3.9847,-0.7397],"size":[0.2558,0.594,0.261],"pivot":[-0.1279,4.1732,-0.7397],"rotation":[-30,0,0],"uv":{"north":{"uv":[34,54],"uv_size":[0.25,0.5]},"east":{"uv":[54,34],"uv_size":[0.25,0.5]},"south":{"uv":[35,54],"uv_size":[0.25,0.5]},"west":{"uv":[54,35],"uv_size":[0.25,0.5]},"up":{"uv":[69,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1279,2.6622,-0.5394],"size":[0.2558,0.2885,0.2787],"pivot":[0.1279,2.6622,-0.5394],"rotation":[0,46.75,0],"uv":{"north":{"uv":[69,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1279,2.6622,-0.5394],"size":[0.2558,0.2885,0.2787],"pivot":[-0.1279,2.6622,-0.5394],"rotation":[0,-46.75,0],"uv":{"north":{"uv":[69,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0438,2.2556,-0.5394],"size":[0.0875,0.4066,0.2787],"uv":{"north":{"uv":[69,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[6.3356,-0.4443,-0.5394],"size":[0.0619,0.0619,0.2787],"pivot":[6.4049,8.6062,-0.3684],"rotation":[0,0,45],"uv":{"north":{"uv":[69,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0438,2.2556,-0.5394],"size":[0.0875,0.4066,0.0902],"pivot":[0.0438,2.2556,-0.5394],"rotation":[0,45,0],"uv":{"north":{"uv":[69,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0438,2.2556,-0.5394],"size":[0.0875,0.4066,0.0902],"pivot":[-0.0438,2.2556,-0.5394],"rotation":[0,-45,0],"uv":{"north":{"uv":[69,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1279,2.3363,-0.5394],"size":[0.0808,0.3258,0.2787],"pivot":[-0.1279,2.6622,-0.5394],"rotation":[0,0,-16.5],"uv":{"north":{"uv":[69,45],"uv_size":[0.25,0.25]},"east":{"uv":[46,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,46],"uv_size":[0.25,0.25]},"west":{"uv":[47,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,47],"uv_size":[0.25,0.25]},"down":{"uv":[48,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0471,2.3363,-0.5394],"size":[0.0808,0.3258,0.2787],"pivot":[0.1279,2.6622,-0.5394],"rotation":[0,0,16.5],"uv":{"north":{"uv":[69,48],"uv_size":[0.25,0.25]},"east":{"uv":[49,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,49],"uv_size":[0.25,0.25]},"west":{"uv":[50,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,50],"uv_size":[0.25,0.25]},"down":{"uv":[51,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0471,2.3363,-0.5394],"size":[0.0808,0.3554,0.1373],"pivot":[0.1279,2.6622,-0.5394],"rotation":[0,45.5,16.5],"uv":{"north":{"uv":[69,51],"uv_size":[0.25,0.25]},"east":{"uv":[52,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,52],"uv_size":[0.25,0.25]},"west":{"uv":[53,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,53],"uv_size":[0.25,0.25]},"down":{"uv":[54,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1279,2.3363,-0.5394],"size":[0.0808,0.3554,0.1373],"pivot":[-0.1279,2.6622,-0.5394],"rotation":[0,-45.5,-16.5],"uv":{"north":{"uv":[69,54],"uv_size":[0.25,0.25]},"east":{"uv":[55,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,55],"uv_size":[0.25,0.25]},"west":{"uv":[56,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,56],"uv_size":[0.25,0.25]},"down":{"uv":[57,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4477,8.3265,-0.004],"size":[0.0824,2.0196,0.4501],"pivot":[-0.4477,10.3461,0.4461],"rotation":[0,9.25,0],"uv":{"north":{"uv":[28,38],"uv_size":[0.25,1.75]},"east":{"uv":[6,29],"uv_size":[0.5,1.75]},"south":{"uv":[38,28],"uv_size":[0.25,1.75]},"west":{"uv":[7,29],"uv_size":[0.5,1.75]},"up":{"uv":[36,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,36.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4477,7.5186,-0.004],"size":[0.0824,0.8078,0.4501],"pivot":[-0.4477,8.3265,0.4461],"rotation":[-3.5663,8.5404,-22.7664],"uv":{"north":{"uv":[22,48],"uv_size":[0.25,0.75]},"east":{"uv":[39,38],"uv_size":[0.5,0.75]},"south":{"uv":[48,22],"uv_size":[0.25,0.75]},"west":{"uv":[39,39],"uv_size":[0.5,0.75]},"up":{"uv":[37,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,37.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3653,7.5186,-0.004],"size":[0.0824,0.8078,0.4501],"pivot":[0.4477,8.3265,0.4461],"rotation":[-3.5663,-8.5404,22.7664],"uv":{"north":{"uv":[23,48],"uv_size":[0.25,0.75]},"east":{"uv":[0,40],"uv_size":[0.5,0.75]},"south":{"uv":[48,23],"uv_size":[0.25,0.75]},"west":{"uv":[1,40],"uv_size":[0.5,0.75]},"up":{"uv":[38,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,38.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3653,8.3265,-0.004],"size":[0.0824,2.0196,0.4501],"pivot":[0.4477,10.3461,0.4461],"rotation":[0,-9.25,0],"uv":{"north":{"uv":[29,38],"uv_size":[0.25,1.75]},"east":{"uv":[8,29],"uv_size":[0.5,1.75]},"south":{"uv":[30,38],"uv_size":[0.25,1.75]},"west":{"uv":[29,8],"uv_size":[0.5,1.75]},"up":{"uv":[39,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,39.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.52,8.138,-0.2717],"size":[0.0913,2.2081,0.2736],"pivot":[-0.52,10.3461,0.0019],"rotation":[0,-5.25,0],"uv":{"north":{"uv":[36,25],"uv_size":[0.25,2]},"east":{"uv":[27,36],"uv_size":[0.25,2]},"south":{"uv":[36,27],"uv_size":[0.25,2]},"west":{"uv":[36,29],"uv_size":[0.25,2]},"up":{"uv":[69,57],"uv_size":[0.25,0.25]},"down":{"uv":[58,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.52,7.3059,-0.2717],"size":[0.0913,0.8321,0.0851],"pivot":[-0.52,8.138,0.0019],"rotation":[0,-5.25,0],"uv":{"north":{"uv":[24,48],"uv_size":[0.25,0.75]},"east":{"uv":[48,24],"uv_size":[0.25,0.75]},"south":{"uv":[25,48],"uv_size":[0.25,0.75]},"west":{"uv":[48,25],"uv_size":[0.25,0.75]},"up":{"uv":[69,58],"uv_size":[0.25,0.25]},"down":{"uv":[59,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5278,7.6223,-0.187],"size":[0.0913,0.5157,0.0662],"pivot":[-0.5278,8.138,0.0866],"rotation":[0,-5.25,0],"uv":{"north":{"uv":[40,54],"uv_size":[0.25,0.5]},"east":{"uv":[54,40],"uv_size":[0.25,0.5]},"south":{"uv":[41,54],"uv_size":[0.25,0.5]},"west":{"uv":[54,41],"uv_size":[0.25,0.5]},"up":{"uv":[69,59],"uv_size":[0.25,0.25]},"down":{"uv":[60,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5028,7.3059,-0.1858],"size":[0.0913,0.0714,0.8532],"pivot":[-0.5028,7.3059,-0.1858],"rotation":[77.2534,-4.3235,-0.2105],"uv":{"north":{"uv":[69,60],"uv_size":[0.25,0.25]},"east":{"uv":[26,48],"uv_size":[0.75,0.25]},"south":{"uv":[61,69],"uv_size":[0.25,0.25]},"west":{"uv":[48,26],"uv_size":[0.75,0.25]},"up":{"uv":[27,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,27.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.4976,7.3217,0.2564],"size":[0.0913,0.0579,0.3415],"pivot":[-0.4976,7.3217,-0.2552],"rotation":[77.2534,-4.3235,-0.2105],"uv":{"north":{"uv":[69,61],"uv_size":[0.25,0.25]},"east":{"uv":[62,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,62],"uv_size":[0.25,0.25]},"west":{"uv":[63,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,63],"uv_size":[0.25,0.25]},"down":{"uv":[64,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4115,7.3059,-0.1858],"size":[0.0913,0.0714,0.8532],"pivot":[0.5028,7.3059,-0.1858],"rotation":[77.2534,4.3235,0.2105],"uv":{"north":{"uv":[69,64],"uv_size":[0.25,0.25]},"east":{"uv":[28,48],"uv_size":[0.75,0.25]},"south":{"uv":[65,69],"uv_size":[0.25,0.25]},"west":{"uv":[48,28],"uv_size":[0.75,0.25]},"up":{"uv":[29,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,29.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.4063,7.3217,0.2564],"size":[0.0913,0.0579,0.3415],"pivot":[0.4976,7.3217,-0.2552],"rotation":[77.2534,4.3235,0.2105],"uv":{"north":{"uv":[69,65],"uv_size":[0.25,0.25]},"east":{"uv":[66,69],"uv_size":[0.25,0.25]},"south":{"uv":[69,66],"uv_size":[0.25,0.25]},"west":{"uv":[67,69],"uv_size":[0.25,0.25]},"up":{"uv":[69,67],"uv_size":[0.25,0.25]},"down":{"uv":[68,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4287,7.3059,-0.2717],"size":[0.0913,0.8321,0.0851],"pivot":[0.52,8.138,0.0019],"rotation":[0,5.25,0],"uv":{"north":{"uv":[30,48],"uv_size":[0.25,0.75]},"east":{"uv":[48,30],"uv_size":[0.25,0.75]},"south":{"uv":[31,48],"uv_size":[0.25,0.75]},"west":{"uv":[48,31],"uv_size":[0.25,0.75]},"up":{"uv":[69,68],"uv_size":[0.25,0.25]},"down":{"uv":[69,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4365,7.6223,-0.187],"size":[0.0913,0.5157,0.0662],"pivot":[0.5278,8.138,0.0866],"rotation":[0,5.25,0],"uv":{"north":{"uv":[42,54],"uv_size":[0.25,0.5]},"east":{"uv":[54,42],"uv_size":[0.25,0.5]},"south":{"uv":[43,54],"uv_size":[0.25,0.5]},"west":{"uv":[54,43],"uv_size":[0.25,0.5]},"up":{"uv":[0,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.495,7.3059,-0.7601],"size":[0.2154,0.0442,0.4895],"pivot":[-0.495,7.3059,-0.2706],"rotation":[63.0121,-41.5,0],"uv":{"north":{"uv":[1,70],"uv_size":[0.25,0.25]},"east":{"uv":[44,54],"uv_size":[0.5,0.25]},"south":{"uv":[70,1],"uv_size":[0.25,0.25]},"west":{"uv":[54,44],"uv_size":[0.5,0.25]},"up":{"uv":[45,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,45.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4689,7.326,-0.703],"size":[0.2154,0.0631,0.403],"pivot":[-0.4689,7.326,-0.3001],"rotation":[63.0121,-41.5,0],"uv":{"north":{"uv":[2,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,2],"uv_size":[0.25,0.25]},"south":{"uv":[3,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,3],"uv_size":[0.25,0.25]},"up":{"uv":[4,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4316,7.3546,-0.5566],"size":[0.2154,0.0631,0.2145],"pivot":[-0.4316,7.3546,-0.3422],"rotation":[63.0121,-41.5,0],"uv":{"north":{"uv":[5,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,5],"uv_size":[0.25,0.25]},"south":{"uv":[6,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,6],"uv_size":[0.25,0.25]},"up":{"uv":[7,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2162,7.3546,-0.5566],"size":[0.2154,0.0631,0.2145],"pivot":[0.4316,7.3546,-0.3422],"rotation":[63.0121,41.5,0],"uv":{"north":{"uv":[8,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,8],"uv_size":[0.25,0.25]},"south":{"uv":[9,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,9],"uv_size":[0.25,0.25]},"up":{"uv":[10,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2535,7.326,-0.703],"size":[0.2154,0.0631,0.403],"pivot":[0.4689,7.326,-0.3001],"rotation":[63.0121,41.5,0],"uv":{"north":{"uv":[11,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,11],"uv_size":[0.25,0.25]},"south":{"uv":[12,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,12],"uv_size":[0.25,0.25]},"up":{"uv":[13,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2796,7.3059,-0.7601],"size":[0.2154,0.0442,0.4895],"pivot":[0.495,7.3059,-0.2706],"rotation":[63.0121,41.5,0],"uv":{"north":{"uv":[14,70],"uv_size":[0.25,0.25]},"east":{"uv":[46,54],"uv_size":[0.5,0.25]},"south":{"uv":[70,14],"uv_size":[0.25,0.25]},"west":{"uv":[54,46],"uv_size":[0.5,0.25]},"up":{"uv":[47,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,47.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0444,6.8697,-0.672],"size":[0.2693,3.4764,0.1965],"pivot":[0.3137,10.3461,-0.4755],"rotation":[0,71,0],"uv":{"north":{"uv":[30,28],"uv_size":[0.25,3.25]},"east":{"uv":[31,0],"uv_size":[0.25,3.25]},"south":{"uv":[31,4],"uv_size":[0.25,3.25]},"west":{"uv":[6,31],"uv_size":[0.25,3.25]},"up":{"uv":[15,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2796,7.3059,-0.5442],"size":[0.2154,3.0402,0.2736],"pivot":[0.495,10.3461,-0.2706],"rotation":[0,41.5,0],"uv":{"north":{"uv":[32,32],"uv_size":[0.25,2.75]},"east":{"uv":[33,0],"uv_size":[0.25,2.75]},"south":{"uv":[33,3],"uv_size":[0.25,2.75]},"west":{"uv":[4,33],"uv_size":[0.25,2.75]},"up":{"uv":[16,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.495,7.3059,-0.5442],"size":[0.2154,3.0402,0.2736],"pivot":[-0.495,10.3461,-0.2706],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[5,33],"uv_size":[0.25,2.75]},"east":{"uv":[33,6],"uv_size":[0.25,2.75]},"south":{"uv":[33,9],"uv_size":[0.25,2.75]},"west":{"uv":[33,12],"uv_size":[0.25,2.75]},"up":{"uv":[17,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.495,7.0932,-0.5442],"size":[0.2154,0.2127,0.112],"pivot":[-0.495,7.3059,-0.2706],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[18,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,18],"uv_size":[0.25,0.25]},"south":{"uv":[19,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,19],"uv_size":[0.25,0.25]},"up":{"uv":[20,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2796,7.0932,-0.5442],"size":[0.2154,0.2127,0.112],"pivot":[0.495,7.3059,-0.2706],"rotation":[0,41.5,0],"uv":{"north":{"uv":[21,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,21],"uv_size":[0.25,0.25]},"south":{"uv":[22,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,22],"uv_size":[0.25,0.25]},"up":{"uv":[23,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.495,6.8697,-0.5442],"size":[0.2154,0.2235,0.0515],"pivot":[-0.495,7.0932,-0.2706],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[24,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2796,6.8697,-0.5442],"size":[0.2154,0.2235,0.0515],"pivot":[0.495,7.0932,-0.2706],"rotation":[0,41.5,0],"uv":{"north":{"uv":[27,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,27],"uv_size":[0.25,0.25]},"south":{"uv":[28,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,28],"uv_size":[0.25,0.25]},"up":{"uv":[29,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3137,6.8697,-0.672],"size":[0.2693,3.4764,0.1965],"pivot":[-0.3137,10.3461,-0.4755],"rotation":[0,-71,0],"uv":{"north":{"uv":[7,31],"uv_size":[0.25,3.25]},"east":{"uv":[8,31],"uv_size":[0.25,3.25]},"south":{"uv":[31,8],"uv_size":[0.25,3.25]},"west":{"uv":[9,31],"uv_size":[0.25,3.25]},"up":{"uv":[30,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3137,6.7718,-0.672],"size":[0.2693,0.0979,0.0897],"pivot":[-0.3137,6.8697,-0.4755],"rotation":[0,-71,0],"uv":{"north":{"uv":[31,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0444,6.7718,-0.672],"size":[0.2693,0.0979,0.0897],"pivot":[0.3137,6.8697,-0.4755],"rotation":[0,71,0],"uv":{"north":{"uv":[34,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3137,6.8697,-0.6203],"size":[0.2693,0.1328,0.1449],"pivot":[-0.3137,6.8697,-0.4755],"rotation":[42.5,-71,0],"uv":{"north":{"uv":[37,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0444,6.8697,-0.6203],"size":[0.2693,0.1328,0.1449],"pivot":[0.3137,6.8697,-0.4755],"rotation":[42.5,71,0],"uv":{"north":{"uv":[40,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,40],"uv_size":[0.25,0.25]},"south":{"uv":[41,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,41],"uv_size":[0.25,0.25]},"up":{"uv":[42,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4287,8.138,-0.2717],"size":[0.0913,2.2081,0.2736],"pivot":[0.52,10.3461,0.0019],"rotation":[0,5.25,0],"uv":{"north":{"uv":[36,31],"uv_size":[0.25,2]},"east":{"uv":[36,33],"uv_size":[0.25,2]},"south":{"uv":[35,36],"uv_size":[0.25,2]},"west":{"uv":[36,35],"uv_size":[0.25,2]},"up":{"uv":[43,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4477,4.395,-0.004],"size":[0.0824,1.1848,0.4501],"pivot":[-0.4477,6.4146,0.4461],"rotation":[0,9.25,0],"uv":{"north":{"uv":[43,23],"uv_size":[0.25,1]},"east":{"uv":[0,37],"uv_size":[0.5,1]},"south":{"uv":[24,43],"uv_size":[0.25,1]},"west":{"uv":[37,0],"uv_size":[0.5,1]},"up":{"uv":[48,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,48.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3653,4.395,-0.004],"size":[0.0824,1.1848,0.4501],"pivot":[0.4477,6.4146,0.4461],"rotation":[0,-9.25,0],"uv":{"north":{"uv":[43,24],"uv_size":[0.25,1]},"east":{"uv":[1,37],"uv_size":[0.5,1]},"south":{"uv":[25,43],"uv_size":[0.25,1]},"west":{"uv":[37,1],"uv_size":[0.5,1]},"up":{"uv":[49,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,49.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.52,4.2065,-0.2717],"size":[0.0913,1.3733,0.2736],"pivot":[-0.52,6.4146,0.0019],"rotation":[0,-5.25,0],"uv":{"north":{"uv":[28,40],"uv_size":[0.25,1.25]},"east":{"uv":[29,40],"uv_size":[0.25,1.25]},"south":{"uv":[40,29],"uv_size":[0.25,1.25]},"west":{"uv":[30,40],"uv_size":[0.25,1.25]},"up":{"uv":[44,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0491,5.5046,-0.2531],"size":[0.0913,1.3733,0.3476],"pivot":[0.0491,7.7127,0.0542],"rotation":[-1.3624,-5.0706,15.0603],"uv":{"north":{"uv":[31,40],"uv_size":[0.25,1.25]},"east":{"uv":[40,31],"uv_size":[0.25,1.25]},"south":{"uv":[32,40],"uv_size":[0.25,1.25]},"west":{"uv":[33,40],"uv_size":[0.25,1.25]},"up":{"uv":[45,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1404,5.5046,-0.2531],"size":[0.0913,1.3733,0.3476],"pivot":[-0.0491,7.7127,0.0542],"rotation":[-1.3624,5.0706,-15.0603],"uv":{"north":{"uv":[40,33],"uv_size":[0.25,1.25]},"east":{"uv":[34,40],"uv_size":[0.25,1.25]},"south":{"uv":[35,40],"uv_size":[0.25,1.25]},"west":{"uv":[40,35],"uv_size":[0.25,1.25]},"up":{"uv":[46,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4287,4.2065,-0.2717],"size":[0.0913,1.3733,0.2736],"pivot":[0.52,6.4146,0.0019],"rotation":[0,5.25,0],"uv":{"north":{"uv":[36,40],"uv_size":[0.25,1.25]},"east":{"uv":[37,40],"uv_size":[0.25,1.25]},"south":{"uv":[40,37],"uv_size":[0.25,1.25]},"west":{"uv":[38,40],"uv_size":[0.25,1.25]},"up":{"uv":[47,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.495,3.3744,-0.7601],"size":[0.2154,0.0442,0.4895],"pivot":[-0.495,3.3744,-0.2706],"rotation":[63.0121,-41.5,0],"uv":{"north":{"uv":[48,70],"uv_size":[0.25,0.25]},"east":{"uv":[50,54],"uv_size":[0.5,0.25]},"south":{"uv":[70,48],"uv_size":[0.25,0.25]},"west":{"uv":[54,50],"uv_size":[0.5,0.25]},"up":{"uv":[51,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,51.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3137,2.9382,-0.672],"size":[0.2693,1.1875,0.1965],"pivot":[-0.3137,2.9382,-0.4755],"rotation":[-7.2198,-70.8423,7.6382],"uv":{"north":{"uv":[43,25],"uv_size":[0.25,1]},"east":{"uv":[26,43],"uv_size":[0.25,1]},"south":{"uv":[43,26],"uv_size":[0.25,1]},"west":{"uv":[27,43],"uv_size":[0.25,1]},"up":{"uv":[49,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[1.059,4.1246,0.3441],"size":[0.2693,1.1875,0.1965],"pivot":[1.059,4.1246,-0.8933],"rotation":[-26.7623,-68.6154,28.4399],"uv":{"north":{"uv":[43,27],"uv_size":[0.25,1]},"east":{"uv":[28,43],"uv_size":[0.25,1]},"south":{"uv":[43,28],"uv_size":[0.25,1]},"west":{"uv":[29,43],"uv_size":[0.25,1]},"up":{"uv":[50,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.3282,4.1246,0.3441],"size":[0.2693,1.1875,0.1965],"pivot":[-1.059,4.1246,-0.8933],"rotation":[-26.7623,68.6154,-28.4399],"uv":{"north":{"uv":[43,29],"uv_size":[0.25,1]},"east":{"uv":[30,43],"uv_size":[0.25,1]},"south":{"uv":[43,30],"uv_size":[0.25,1]},"west":{"uv":[31,43],"uv_size":[0.25,1]},"up":{"uv":[51,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0444,2.9382,-0.672],"size":[0.2693,1.1875,0.1965],"pivot":[0.3137,2.9382,-0.4755],"rotation":[-7.2198,70.8423,-7.6382],"uv":{"north":{"uv":[43,31],"uv_size":[0.25,1]},"east":{"uv":[32,43],"uv_size":[0.25,1]},"south":{"uv":[43,32],"uv_size":[0.25,1]},"west":{"uv":[33,43],"uv_size":[0.25,1]},"up":{"uv":[52,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.495,3.3744,-0.5442],"size":[0.2154,1.1283,0.2736],"pivot":[-0.495,6.4146,-0.2706],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[43,33],"uv_size":[0.25,1]},"east":{"uv":[34,43],"uv_size":[0.25,1]},"south":{"uv":[43,34],"uv_size":[0.25,1]},"west":{"uv":[35,43],"uv_size":[0.25,1]},"up":{"uv":[53,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.495,4.5027,-0.318],"size":[0.2154,1.0771,0.0474],"pivot":[-0.495,7.5429,-0.2706],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[43,35],"uv_size":[0.25,1]},"east":{"uv":[36,43],"uv_size":[0.25,1]},"south":{"uv":[43,36],"uv_size":[0.25,1]},"west":{"uv":[37,43],"uv_size":[0.25,1]},"up":{"uv":[54,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4636,4.5027,-0.4881],"size":[0.2154,0.2087,0.182],"pivot":[-0.4636,7.5429,-0.3061],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[55,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,55],"uv_size":[0.25,0.25]},"south":{"uv":[56,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,56],"uv_size":[0.25,0.25]},"up":{"uv":[57,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,57.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4636,4.7114,-0.4006],"size":[0.2154,0.3029,0.0945],"pivot":[-0.4636,7.7516,-0.3061],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[58,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,58],"uv_size":[0.25,0.25]},"south":{"uv":[59,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,59],"uv_size":[0.25,0.25]},"up":{"uv":[60,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4636,5.0143,-0.34],"size":[0.2154,0.3299,0.0339],"pivot":[-0.4636,8.0545,-0.3061],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[61,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,61],"uv_size":[0.25,0.25]},"south":{"uv":[62,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,62],"uv_size":[0.25,0.25]},"up":{"uv":[63,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4411,5.0143,-0.3654],"size":[0.2154,0.1818,0.0339],"pivot":[-0.4411,8.0545,-0.3315],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[64,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,64],"uv_size":[0.25,0.25]},"south":{"uv":[65,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,65],"uv_size":[0.25,0.25]},"up":{"uv":[66,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,66.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4009,4.7114,-0.4175],"size":[0.2154,0.1818,0.0407],"pivot":[-0.4009,7.7516,-0.3769],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[67,70],"uv_size":[0.25,0.25]},"east":{"uv":[70,67],"uv_size":[0.25,0.25]},"south":{"uv":[68,70],"uv_size":[0.25,0.25]},"west":{"uv":[70,68],"uv_size":[0.25,0.25]},"up":{"uv":[69,70],"uv_size":[0.25,0.25]},"down":{"uv":[70,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3137,4.5027,-0.4755],"size":[0.2154,1.1006,0.0504],"pivot":[-0.3137,4.5027,-0.4755],"rotation":[-11.8598,-41.5,0],"uv":{"north":{"uv":[43,37],"uv_size":[0.25,1]},"east":{"uv":[38,43],"uv_size":[0.25,1]},"south":{"uv":[43,38],"uv_size":[0.25,1]},"west":{"uv":[39,43],"uv_size":[0.25,1]},"up":{"uv":[70,70],"uv_size":[0.25,0.25]},"down":{"uv":[0,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0983,4.5027,-0.4755],"size":[0.2154,1.1006,0.0504],"pivot":[0.3137,4.5027,-0.4755],"rotation":[-11.8598,41.5,0],"uv":{"north":{"uv":[43,39],"uv_size":[0.25,1]},"east":{"uv":[40,43],"uv_size":[0.25,1]},"south":{"uv":[43,40],"uv_size":[0.25,1]},"west":{"uv":[41,43],"uv_size":[0.25,1]},"up":{"uv":[71,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2482,4.5027,-0.4881],"size":[0.2154,0.2087,0.182],"pivot":[0.4636,7.5429,-0.3061],"rotation":[0,41.5,0],"uv":{"north":{"uv":[71,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2482,4.7114,-0.4006],"size":[0.2154,0.3029,0.0945],"pivot":[0.4636,7.7516,-0.3061],"rotation":[0,41.5,0],"uv":{"north":{"uv":[71,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2796,4.5027,-0.318],"size":[0.2154,1.0771,0.0474],"pivot":[0.495,7.5429,-0.2706],"rotation":[0,41.5,0],"uv":{"north":{"uv":[43,41],"uv_size":[0.25,1]},"east":{"uv":[42,43],"uv_size":[0.25,1]},"south":{"uv":[43,42],"uv_size":[0.25,1]},"west":{"uv":[43,43],"uv_size":[0.25,1]},"up":{"uv":[71,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2257,5.0143,-0.3654],"size":[0.2154,0.1818,0.0339],"pivot":[0.4411,8.0545,-0.3315],"rotation":[0,41.5,0],"uv":{"north":{"uv":[71,8],"uv_size":[0.25,0.25]},"east":{"uv":[9,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,9],"uv_size":[0.25,0.25]},"west":{"uv":[10,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2482,5.0143,-0.34],"size":[0.2154,0.3299,0.0339],"pivot":[0.4636,8.0545,-0.3061],"rotation":[0,41.5,0],"uv":{"north":{"uv":[71,11],"uv_size":[0.25,0.25]},"east":{"uv":[12,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1855,4.7114,-0.4175],"size":[0.2154,0.1818,0.0407],"pivot":[0.4009,7.7516,-0.3769],"rotation":[0,41.5,0],"uv":{"north":{"uv":[71,14],"uv_size":[0.25,0.25]},"east":{"uv":[15,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,15],"uv_size":[0.25,0.25]},"west":{"uv":[16,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2796,3.3744,-0.5442],"size":[0.2154,1.1283,0.2736],"pivot":[0.495,6.4146,-0.2706],"rotation":[0,41.5,0],"uv":{"north":{"uv":[0,44],"uv_size":[0.25,1]},"east":{"uv":[44,0],"uv_size":[0.25,1]},"south":{"uv":[1,44],"uv_size":[0.25,1]},"west":{"uv":[44,1],"uv_size":[0.25,1]},"up":{"uv":[71,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.495,3.1617,-0.5442],"size":[0.2154,0.2127,0.112],"pivot":[-0.495,3.3744,-0.2706],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[71,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.495,2.9382,-0.5442],"size":[0.2154,0.2235,0.0515],"pivot":[-0.495,3.1617,-0.2706],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[71,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3137,2.9382,-0.6203],"size":[0.2693,0.1328,0.1449],"pivot":[-0.3137,2.9382,-0.4755],"rotation":[42.5,-71,0],"uv":{"north":{"uv":[71,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0444,2.9382,-0.6203],"size":[0.2693,0.1328,0.1449],"pivot":[0.3137,2.9382,-0.4755],"rotation":[42.5,71,0],"uv":{"north":{"uv":[71,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3137,2.8403,-0.672],"size":[0.2693,0.0979,0.0897],"pivot":[-0.3137,2.9382,-0.4755],"rotation":[0,-71,0],"uv":{"north":{"uv":[71,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0444,2.8403,-0.672],"size":[0.2693,0.0979,0.0897],"pivot":[0.3137,2.9382,-0.4755],"rotation":[0,71,0],"uv":{"north":{"uv":[71,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.52,3.3744,-0.2717],"size":[0.0913,0.8321,0.0851],"pivot":[-0.52,4.2065,0.0019],"rotation":[0,-5.25,0],"uv":{"north":{"uv":[32,48],"uv_size":[0.25,0.75]},"east":{"uv":[48,32],"uv_size":[0.25,0.75]},"south":{"uv":[33,48],"uv_size":[0.25,0.75]},"west":{"uv":[48,33],"uv_size":[0.25,0.75]},"up":{"uv":[71,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2796,3.3744,-0.7601],"size":[0.2154,0.0442,0.4895],"pivot":[0.495,3.3744,-0.2706],"rotation":[63.0121,41.5,0],"uv":{"north":{"uv":[71,37],"uv_size":[0.25,0.25]},"east":{"uv":[52,54],"uv_size":[0.5,0.25]},"south":{"uv":[38,71],"uv_size":[0.25,0.25]},"west":{"uv":[54,52],"uv_size":[0.5,0.25]},"up":{"uv":[53,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2796,2.9382,-0.5442],"size":[0.2154,0.2235,0.0515],"pivot":[0.495,3.1617,-0.2706],"rotation":[0,41.5,0],"uv":{"north":{"uv":[71,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,39],"uv_size":[0.25,0.25]},"west":{"uv":[40,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2796,3.1617,-0.5442],"size":[0.2154,0.2127,0.112],"pivot":[0.495,3.3744,-0.2706],"rotation":[0,41.5,0],"uv":{"north":{"uv":[71,41],"uv_size":[0.25,0.25]},"east":{"uv":[42,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,42],"uv_size":[0.25,0.25]},"west":{"uv":[43,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,43],"uv_size":[0.25,0.25]},"down":{"uv":[44,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4689,3.3945,-0.703],"size":[0.2154,0.0631,0.403],"pivot":[-0.4689,3.3945,-0.3001],"rotation":[63.0121,-41.5,0],"uv":{"north":{"uv":[71,44],"uv_size":[0.25,0.25]},"east":{"uv":[45,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,45],"uv_size":[0.25,0.25]},"west":{"uv":[46,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,46],"uv_size":[0.25,0.25]},"down":{"uv":[47,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2535,3.3945,-0.703],"size":[0.2154,0.0631,0.403],"pivot":[0.4689,3.3945,-0.3001],"rotation":[63.0121,41.5,0],"uv":{"north":{"uv":[71,47],"uv_size":[0.25,0.25]},"east":{"uv":[48,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,48],"uv_size":[0.25,0.25]},"west":{"uv":[49,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,49],"uv_size":[0.25,0.25]},"down":{"uv":[50,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4316,3.4231,-0.5566],"size":[0.2154,0.0631,0.2145],"pivot":[-0.4316,3.4231,-0.3422],"rotation":[63.0121,-41.5,0],"uv":{"north":{"uv":[71,50],"uv_size":[0.25,0.25]},"east":{"uv":[51,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,51],"uv_size":[0.25,0.25]},"west":{"uv":[52,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,52],"uv_size":[0.25,0.25]},"down":{"uv":[53,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2162,3.4231,-0.5566],"size":[0.2154,0.0631,0.2145],"pivot":[0.4316,3.4231,-0.3422],"rotation":[63.0121,41.5,0],"uv":{"north":{"uv":[71,53],"uv_size":[0.25,0.25]},"east":{"uv":[54,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,54],"uv_size":[0.25,0.25]},"west":{"uv":[55,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,55],"uv_size":[0.25,0.25]},"down":{"uv":[56,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5028,3.3744,-0.1858],"size":[0.0913,0.0714,0.8532],"pivot":[-0.5028,3.3744,-0.1858],"rotation":[77.2534,-4.3235,-0.2105],"uv":{"north":{"uv":[71,56],"uv_size":[0.25,0.25]},"east":{"uv":[34,48],"uv_size":[0.75,0.25]},"south":{"uv":[57,71],"uv_size":[0.25,0.25]},"west":{"uv":[48,34],"uv_size":[0.75,0.25]},"up":{"uv":[35,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,35.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.5028,3.0338,-0.1858],"size":[0.0913,0.3406,0.8666],"pivot":[-0.5028,3.3744,-0.1858],"rotation":[72.8432,41.7691,-12.8084],"uv":{"north":{"uv":[71,57],"uv_size":[0.25,0.25]},"east":{"uv":[36,48],"uv_size":[0.75,0.25]},"south":{"uv":[58,71],"uv_size":[0.25,0.25]},"west":{"uv":[48,36],"uv_size":[0.75,0.25]},"up":{"uv":[37,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,37.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.5278,3.6908,-0.187],"size":[0.0913,0.5157,0.0662],"pivot":[-0.5278,4.2065,0.0866],"rotation":[0,-5.25,0],"uv":{"north":{"uv":[54,54],"uv_size":[0.25,0.5]},"east":{"uv":[0,55],"uv_size":[0.25,0.5]},"south":{"uv":[55,0],"uv_size":[0.25,0.5]},"west":{"uv":[1,55],"uv_size":[0.25,0.5]},"up":{"uv":[71,58],"uv_size":[0.25,0.25]},"down":{"uv":[59,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4976,3.3902,0.2564],"size":[0.0913,0.0579,0.3415],"pivot":[-0.4976,3.3902,-0.2552],"rotation":[77.2534,-4.3235,-0.2105],"uv":{"north":{"uv":[71,59],"uv_size":[0.25,0.25]},"east":{"uv":[60,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,60],"uv_size":[0.25,0.25]},"west":{"uv":[61,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,61],"uv_size":[0.25,0.25]},"down":{"uv":[62,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4365,3.6908,-0.187],"size":[0.0913,0.5157,0.0662],"pivot":[0.5278,4.2065,0.0866],"rotation":[0,5.25,0],"uv":{"north":{"uv":[55,1],"uv_size":[0.25,0.5]},"east":{"uv":[2,55],"uv_size":[0.25,0.5]},"south":{"uv":[55,2],"uv_size":[0.25,0.5]},"west":{"uv":[3,55],"uv_size":[0.25,0.5]},"up":{"uv":[71,62],"uv_size":[0.25,0.25]},"down":{"uv":[63,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4287,3.3744,-0.2717],"size":[0.0913,0.8321,0.0851],"pivot":[0.52,4.2065,0.0019],"rotation":[0,5.25,0],"uv":{"north":{"uv":[38,48],"uv_size":[0.25,0.75]},"east":{"uv":[48,38],"uv_size":[0.25,0.75]},"south":{"uv":[39,48],"uv_size":[0.25,0.75]},"west":{"uv":[48,39],"uv_size":[0.25,0.75]},"up":{"uv":[71,63],"uv_size":[0.25,0.25]},"down":{"uv":[64,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4063,3.3902,0.2564],"size":[0.0913,0.0579,0.3415],"pivot":[0.4976,3.3902,-0.2552],"rotation":[77.2534,4.3235,0.2105],"uv":{"north":{"uv":[71,64],"uv_size":[0.25,0.25]},"east":{"uv":[65,71],"uv_size":[0.25,0.25]},"south":{"uv":[71,65],"uv_size":[0.25,0.25]},"west":{"uv":[66,71],"uv_size":[0.25,0.25]},"up":{"uv":[71,66],"uv_size":[0.25,0.25]},"down":{"uv":[67,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4115,3.3744,-0.1858],"size":[0.0913,0.0714,0.8532],"pivot":[0.5028,3.3744,-0.1858],"rotation":[77.2534,4.3235,0.2105],"uv":{"north":{"uv":[71,67],"uv_size":[0.25,0.25]},"east":{"uv":[40,48],"uv_size":[0.75,0.25]},"south":{"uv":[68,71],"uv_size":[0.25,0.25]},"west":{"uv":[48,40],"uv_size":[0.75,0.25]},"up":{"uv":[41,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,41.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.4477,4.395,0.0065],"size":[0.0824,0.1739,0.4396],"pivot":[-0.4477,4.395,0.4461],"rotation":[25.3879,9.25,0],"uv":{"north":{"uv":[71,68],"uv_size":[0.25,0.25]},"east":{"uv":[55,3],"uv_size":[0.5,0.25]},"south":{"uv":[69,71],"uv_size":[0.25,0.25]},"west":{"uv":[4,55],"uv_size":[0.5,0.25]},"up":{"uv":[55,4],"uv_size":[0.25,0.5]},"down":{"uv":[5,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.5115,3.8441,-0.0132],"size":[0.0824,0.3624,0.507],"pivot":[-0.5115,4.2065,0.0541],"rotation":[15.9262,21.9868,-33.9747],"uv":{"north":{"uv":[71,69],"uv_size":[0.25,0.25]},"east":{"uv":[55,5],"uv_size":[0.5,0.25]},"south":{"uv":[70,71],"uv_size":[0.25,0.25]},"west":{"uv":[6,55],"uv_size":[0.5,0.25]},"up":{"uv":[55,6],"uv_size":[0.25,0.5]},"down":{"uv":[7,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.4292,3.8441,-0.0132],"size":[0.0824,0.3624,0.507],"pivot":[0.5115,4.2065,0.0541],"rotation":[15.9262,-21.9868,33.9747],"uv":{"north":{"uv":[71,70],"uv_size":[0.25,0.25]},"east":{"uv":[55,7],"uv_size":[0.5,0.25]},"south":{"uv":[71,71],"uv_size":[0.25,0.25]},"west":{"uv":[8,55],"uv_size":[0.5,0.25]},"up":{"uv":[55,8],"uv_size":[0.25,0.5]},"down":{"uv":[9,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.4115,3.0338,-0.1858],"size":[0.0913,0.3406,0.8666],"pivot":[0.5028,3.3744,-0.1858],"rotation":[72.8432,-41.7691,12.8084],"uv":{"north":{"uv":[0,72],"uv_size":[0.25,0.25]},"east":{"uv":[42,48],"uv_size":[0.75,0.25]},"south":{"uv":[72,0],"uv_size":[0.25,0.25]},"west":{"uv":[48,42],"uv_size":[0.75,0.25]},"up":{"uv":[43,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,43.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.4477,4.2065,-0.004],"size":[0.0824,0.1885,0.0529],"pivot":[-0.4477,4.395,0.4461],"rotation":[0,9.25,0],"uv":{"north":{"uv":[1,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3653,4.395,0.0065],"size":[0.0824,0.1739,0.4396],"pivot":[0.4477,4.395,0.4461],"rotation":[25.3879,-9.25,0],"uv":{"north":{"uv":[4,72],"uv_size":[0.25,0.25]},"east":{"uv":[55,9],"uv_size":[0.5,0.25]},"south":{"uv":[72,4],"uv_size":[0.25,0.25]},"west":{"uv":[10,55],"uv_size":[0.5,0.25]},"up":{"uv":[55,10],"uv_size":[0.25,0.5]},"down":{"uv":[11,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3653,4.2065,-0.004],"size":[0.0824,0.1885,0.0529],"pivot":[0.4477,4.395,0.4461],"rotation":[0,-9.25,0],"uv":{"north":{"uv":[5,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,5],"uv_size":[0.25,0.25]},"south":{"uv":[6,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,6],"uv_size":[0.25,0.25]},"up":{"uv":[7,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,7.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group10","parent":"group6","pivot":[0.1007,2.3354,0.9222],"rotation":[-12.5,0,0],"cubes":[{"origin":[-0.1007,2.3354,0.2253],"size":[0.2015,0.4974,0.6969],"uv":{"north":{"uv":[55,11],"uv_size":[0.25,0.5]},"east":{"uv":[40,1],"uv_size":[0.75,0.5]},"south":{"uv":[12,55],"uv_size":[0.25,0.5]},"west":{"uv":[40,2],"uv_size":[0.75,0.5]},"up":{"uv":[44,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,44.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1007,2.3354,0.3816],"size":[0.2015,0.4974,0.5406],"pivot":[-0.1007,2.3354,0.9222],"rotation":[0,28.8142,0],"uv":{"north":{"uv":[55,12],"uv_size":[0.25,0.5]},"east":{"uv":[2,44],"uv_size":[0.5,0.5]},"south":{"uv":[13,55],"uv_size":[0.25,0.5]},"west":{"uv":[44,2],"uv_size":[0.5,0.5]},"up":{"uv":[55,13],"uv_size":[0.25,0.5]},"down":{"uv":[14,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1007,2.3354,0.3816],"size":[0.2015,0.4974,0.5406],"pivot":[0.1007,2.3354,0.9222],"rotation":[0,-28.8142,0],"uv":{"north":{"uv":[55,14],"uv_size":[0.25,0.5]},"east":{"uv":[3,44],"uv_size":[0.5,0.5]},"south":{"uv":[15,55],"uv_size":[0.25,0.5]},"west":{"uv":[44,3],"uv_size":[0.5,0.5]},"up":{"uv":[55,15],"uv_size":[0.25,0.5]},"down":{"uv":[16,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1007,2.8328,0.3816],"size":[0.2015,0.4974,0.5406],"pivot":[-0.1007,2.8328,0.9222],"rotation":[11.911,28.4693,3.7656],"uv":{"north":{"uv":[55,16],"uv_size":[0.25,0.5]},"east":{"uv":[4,44],"uv_size":[0.5,0.5]},"south":{"uv":[17,55],"uv_size":[0.25,0.5]},"west":{"uv":[44,4],"uv_size":[0.5,0.5]},"up":{"uv":[55,17],"uv_size":[0.25,0.5]},"down":{"uv":[18,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1007,2.8328,0.3816],"size":[0.2015,0.4974,0.5406],"pivot":[0.1007,2.8328,0.9222],"rotation":[11.911,-28.4693,-3.7656],"uv":{"north":{"uv":[55,18],"uv_size":[0.25,0.5]},"east":{"uv":[5,44],"uv_size":[0.5,0.5]},"south":{"uv":[19,55],"uv_size":[0.25,0.5]},"west":{"uv":[44,5],"uv_size":[0.5,0.5]},"up":{"uv":[55,19],"uv_size":[0.25,0.5]},"down":{"uv":[20,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1006,2.826,0.3816],"size":[0.2014,0.5043,0.5406],"pivot":[0.1007,2.8328,0.9222],"rotation":[10.4535,-0.3527,1.9111],"uv":{"north":{"uv":[55,20],"uv_size":[0.25,0.5]},"east":{"uv":[6,44],"uv_size":[0.5,0.5]},"south":{"uv":[21,55],"uv_size":[0.25,0.5]},"west":{"uv":[44,6],"uv_size":[0.5,0.5]},"up":{"uv":[55,21],"uv_size":[0.25,0.5]},"down":{"uv":[22,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1007,2.826,0.3816],"size":[0.2014,0.5043,0.5406],"pivot":[-0.1007,2.8328,0.9222],"rotation":[10.4535,0.3527,-1.9111],"uv":{"north":{"uv":[55,22],"uv_size":[0.25,0.5]},"east":{"uv":[7,44],"uv_size":[0.5,0.5]},"south":{"uv":[23,55],"uv_size":[0.25,0.5]},"west":{"uv":[44,7],"uv_size":[0.5,0.5]},"up":{"uv":[55,23],"uv_size":[0.25,0.5]},"down":{"uv":[24,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3613,2.3354,-0.0921],"size":[0.2015,0.4974,0.5406],"pivot":[-0.3613,2.8328,0.4485],"rotation":[0,8.8142,0],"uv":{"north":{"uv":[55,24],"uv_size":[0.25,0.5]},"east":{"uv":[8,44],"uv_size":[0.5,0.5]},"south":{"uv":[25,55],"uv_size":[0.25,0.5]},"west":{"uv":[44,8],"uv_size":[0.5,0.5]},"up":{"uv":[55,25],"uv_size":[0.25,0.5]},"down":{"uv":[26,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3613,2.8328,-0.0921],"size":[0.2015,0.4974,0.5406],"pivot":[-0.3613,2.8328,0.4485],"rotation":[11.829,8.852,-0.3696],"uv":{"north":{"uv":[55,26],"uv_size":[0.25,0.5]},"east":{"uv":[9,44],"uv_size":[0.5,0.5]},"south":{"uv":[27,55],"uv_size":[0.25,0.5]},"west":{"uv":[44,9],"uv_size":[0.5,0.5]},"up":{"uv":[55,27],"uv_size":[0.25,0.5]},"down":{"uv":[28,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1598,2.8328,-0.0921],"size":[0.2015,0.4974,0.5406],"pivot":[0.3613,2.8328,0.4485],"rotation":[11.829,-8.852,0.3696],"uv":{"north":{"uv":[55,28],"uv_size":[0.25,0.5]},"east":{"uv":[10,44],"uv_size":[0.5,0.5]},"south":{"uv":[29,55],"uv_size":[0.25,0.5]},"west":{"uv":[44,10],"uv_size":[0.5,0.5]},"up":{"uv":[55,29],"uv_size":[0.25,0.5]},"down":{"uv":[30,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1598,2.3354,-0.0921],"size":[0.2015,0.4974,0.5406],"pivot":[0.3613,2.8328,0.4485],"rotation":[0,-8.8142,0],"uv":{"north":{"uv":[55,30],"uv_size":[0.25,0.5]},"east":{"uv":[11,44],"uv_size":[0.5,0.5]},"south":{"uv":[31,55],"uv_size":[0.25,0.5]},"west":{"uv":[44,11],"uv_size":[0.5,0.5]},"up":{"uv":[55,31],"uv_size":[0.25,0.5]},"down":{"uv":[32,55.5],"uv_size":[0.25,-0.5]}}}]},{"name":"angel","parent":"annihil","pivot":[-2.2,6.8142,0.2954]},{"name":"group11","parent":"angel","pivot":[-2.2,6.8142,0.2954],"cubes":[{"origin":[-2.6477,8.3265,-0.2809],"size":[0.8954,2.0196,0.7271],"uv":{"north":{"uv":[7,27],"uv_size":[0.75,1.75]},"east":{"uv":[27,12],"uv_size":[0.75,1.75]},"south":{"uv":[27,14],"uv_size":[0.75,1.75]},"west":{"uv":[27,16],"uv_size":[0.75,1.75]},"up":{"uv":[35,19],"uv_size":[0.75,0.75]},"down":{"uv":[35,20.75],"uv_size":[0.75,-0.75]}}},{"origin":[-2.3872,10.0229,0.4461],"size":[0.3743,0.3231,0.873],"pivot":[-2.6322,10.3461,0.4461],"rotation":[-46.5,0,0],"uv":{"north":{"uv":[8,72],"uv_size":[0.25,0.25]},"east":{"uv":[45,48],"uv_size":[0.75,0.25]},"south":{"uv":[72,8],"uv_size":[0.25,0.25]},"west":{"uv":[48,45],"uv_size":[0.75,0.25]},"up":{"uv":[46,48],"uv_size":[0.25,0.75]},"down":{"uv":[48,46.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.6477,10.0229,0.4461],"size":[0.8954,0.3231,0.0714],"pivot":[-2.8927,10.3461,0.4461],"rotation":[-46.5,0,0],"uv":{"north":{"uv":[47,48],"uv_size":[0.75,0.25]},"east":{"uv":[9,72],"uv_size":[0.25,0.25]},"south":{"uv":[48,47],"uv_size":[0.75,0.25]},"west":{"uv":[72,9],"uv_size":[0.25,0.25]},"up":{"uv":[48,48],"uv_size":[0.75,0.25]},"down":{"uv":[0,49.25],"uv_size":[0.75,-0.25]}}},{"origin":[-2.2625,9.3897,0.2042],"size":[0.2497,0.3231,0.8428],"pivot":[-2.0128,9.7129,1.047],"rotation":[-47.9341,-12.2852,13.2662],"uv":{"north":{"uv":[10,72],"uv_size":[0.25,0.25]},"east":{"uv":[49,0],"uv_size":[0.75,0.25]},"south":{"uv":[72,10],"uv_size":[0.25,0.25]},"west":{"uv":[1,49],"uv_size":[0.75,0.25]},"up":{"uv":[49,1],"uv_size":[0.25,0.75]},"down":{"uv":[2,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.3872,9.3897,0.2042],"size":[0.2497,0.3231,0.8428],"pivot":[-2.3872,9.7129,1.047],"rotation":[-47.9341,12.2852,-13.2662],"uv":{"north":{"uv":[11,72],"uv_size":[0.25,0.25]},"east":{"uv":[49,2],"uv_size":[0.75,0.25]},"south":{"uv":[72,11],"uv_size":[0.25,0.25]},"west":{"uv":[3,49],"uv_size":[0.75,0.25]},"up":{"uv":[49,3],"uv_size":[0.25,0.75]},"down":{"uv":[4,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.5336,9.5877,0.3598],"size":[0.2496,0.4521,0.8509],"pivot":[-2.5336,10.0398,0.7368],"rotation":[-44.4838,23.4258,-2.0987],"uv":{"north":{"uv":[55,32],"uv_size":[0.25,0.5]},"east":{"uv":[40,3],"uv_size":[0.75,0.5]},"south":{"uv":[33,55],"uv_size":[0.25,0.5]},"west":{"uv":[4,40],"uv_size":[0.75,0.5]},"up":{"uv":[49,4],"uv_size":[0.25,0.75]},"down":{"uv":[5,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.116,9.5877,0.3598],"size":[0.2497,0.4521,0.8509],"pivot":[-1.8664,10.0398,0.7368],"rotation":[-44.4838,-23.4258,2.0987],"uv":{"north":{"uv":[55,33],"uv_size":[0.25,0.5]},"east":{"uv":[40,4],"uv_size":[0.75,0.5]},"south":{"uv":[34,55],"uv_size":[0.25,0.5]},"west":{"uv":[5,40],"uv_size":[0.75,0.5]},"up":{"uv":[49,5],"uv_size":[0.25,0.75]},"down":{"uv":[6,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.3872,8.9862,0.3921],"size":[0.2497,0.7267,0.6549],"pivot":[-2.3872,9.7129,1.047],"rotation":[0,23.4398,0],"uv":{"north":{"uv":[49,6],"uv_size":[0.25,0.75]},"east":{"uv":[40,5],"uv_size":[0.5,0.75]},"south":{"uv":[7,49],"uv_size":[0.25,0.75]},"west":{"uv":[6,40],"uv_size":[0.5,0.75]},"up":{"uv":[55,34],"uv_size":[0.25,0.5]},"down":{"uv":[35,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.3872,8.2596,0.3921],"size":[0.2497,0.7267,0.1298],"pivot":[-2.3872,8.9862,1.047],"rotation":[0,23.4398,0],"uv":{"north":{"uv":[49,7],"uv_size":[0.25,0.75]},"east":{"uv":[8,49],"uv_size":[0.25,0.75]},"south":{"uv":[49,8],"uv_size":[0.25,0.75]},"west":{"uv":[9,49],"uv_size":[0.25,0.75]},"up":{"uv":[12,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2625,8.2596,0.3921],"size":[0.2497,0.7267,0.1298],"pivot":[-2.0128,8.9862,1.047],"rotation":[0,-23.4398,0],"uv":{"north":{"uv":[49,9],"uv_size":[0.25,0.75]},"east":{"uv":[10,49],"uv_size":[0.25,0.75]},"south":{"uv":[49,10],"uv_size":[0.25,0.75]},"west":{"uv":[11,49],"uv_size":[0.25,0.75]},"up":{"uv":[13,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3872,7.9009,0.5153],"size":[0.2499,1.0854,0.5319],"inflate":0.001,"pivot":[-2.3872,8.9862,1.047],"rotation":[-10,23.4398,0],"uv":{"north":{"uv":[12,44],"uv_size":[0.25,1]},"east":{"uv":[2,37],"uv_size":[0.5,1]},"south":{"uv":[44,12],"uv_size":[0.25,1]},"west":{"uv":[37,2],"uv_size":[0.5,1]},"up":{"uv":[55,35],"uv_size":[0.25,0.5]},"down":{"uv":[36,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.8201,6.4674,-0.3486],"size":[0.2497,2.6605,0.397],"pivot":[-2.8201,5.875,0.0484],"rotation":[-9.671,-18.4903,7.1057],"uv":{"north":{"uv":[34,17],"uv_size":[0.25,2.5]},"east":{"uv":[34,20],"uv_size":[0.25,2.5]},"south":{"uv":[22,34],"uv_size":[0.25,2.5]},"west":{"uv":[23,34],"uv_size":[0.25,2.5]},"up":{"uv":[14,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.8295,6.4674,-0.3486],"size":[0.2497,2.6605,0.397],"pivot":[-1.5799,5.875,0.0484],"rotation":[-9.671,18.4903,-7.1057],"uv":{"north":{"uv":[34,23],"uv_size":[0.25,2.5]},"east":{"uv":[24,34],"uv_size":[0.25,2.5]},"south":{"uv":[25,34],"uv_size":[0.25,2.5]},"west":{"uv":[34,26],"uv_size":[0.25,2.5]},"up":{"uv":[15,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6478,5.2113,-0.2284],"size":[0.2496,1.298,0.397],"pivot":[-2.6478,6.5093,-0.2284],"rotation":[-5.4926,-20.0804,-5.4989],"uv":{"north":{"uv":[39,40],"uv_size":[0.25,1.25]},"east":{"uv":[40,39],"uv_size":[0.25,1.25]},"south":{"uv":[0,41],"uv_size":[0.25,1.25]},"west":{"uv":[41,0],"uv_size":[0.25,1.25]},"up":{"uv":[16,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0019,5.2113,-0.2284],"size":[0.2496,1.298,0.397],"pivot":[-1.7522,6.5093,-0.2284],"rotation":[-5.4926,20.0804,5.4989],"uv":{"north":{"uv":[1,41],"uv_size":[0.25,1.25]},"east":{"uv":[2,41],"uv_size":[0.25,1.25]},"south":{"uv":[41,2],"uv_size":[0.25,1.25]},"west":{"uv":[3,41],"uv_size":[0.25,1.25]},"up":{"uv":[17,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6887,5.9259,-0.7602],"size":[0.2497,3.2529,0.4374],"pivot":[-2.6887,5.9259,-0.3228],"rotation":[-18.5411,-59.9321,20.1981],"uv":{"north":{"uv":[16,32],"uv_size":[0.25,3]},"east":{"uv":[19,12],"uv_size":[0.5,3]},"south":{"uv":[32,17],"uv_size":[0.25,3]},"west":{"uv":[19,15],"uv_size":[0.5,3]},"up":{"uv":[55,36],"uv_size":[0.25,0.5]},"down":{"uv":[37,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.3126,4.592,-0.541],"size":[0.2497,1.341,0.4374],"pivot":[-2.3126,5.933,-0.541],"rotation":[12.4051,-60.8974,-15.1155],"uv":{"north":{"uv":[4,41],"uv_size":[0.25,1.25]},"east":{"uv":[27,34],"uv_size":[0.5,1.25]},"south":{"uv":[41,4],"uv_size":[0.25,1.25]},"west":{"uv":[34,29],"uv_size":[0.5,1.25]},"up":{"uv":[55,37],"uv_size":[0.25,0.5]},"down":{"uv":[38,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.3371,4.592,-0.541],"size":[0.2497,1.341,0.4374],"pivot":[-2.0874,5.933,-0.541],"rotation":[12.4051,60.8974,15.1155],"uv":{"north":{"uv":[5,41],"uv_size":[0.25,1.25]},"east":{"uv":[34,31],"uv_size":[0.5,1.25]},"south":{"uv":[6,41],"uv_size":[0.25,1.25]},"west":{"uv":[34,33],"uv_size":[0.5,1.25]},"up":{"uv":[55,38],"uv_size":[0.25,0.5]},"down":{"uv":[39,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.5891,5.9259,-0.7461],"size":[0.2497,3.2529,0.4909],"pivot":[-2.6887,5.9259,-0.3228],"rotation":[-3.751,-46.5466,3.1325],"uv":{"north":{"uv":[32,20],"uv_size":[0.25,3]},"east":{"uv":[19,18],"uv_size":[0.5,3]},"south":{"uv":[21,32],"uv_size":[0.25,3]},"west":{"uv":[20,0],"uv_size":[0.5,3]},"up":{"uv":[55,39],"uv_size":[0.25,0.5]},"down":{"uv":[40,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.0606,5.9259,-0.7461],"size":[0.2497,3.2529,0.4909],"pivot":[-1.7113,5.9259,-0.3228],"rotation":[-3.751,46.5466,-3.1325],"uv":{"north":{"uv":[32,23],"uv_size":[0.25,3]},"east":{"uv":[20,3],"uv_size":[0.5,3]},"south":{"uv":[26,32],"uv_size":[0.25,3]},"west":{"uv":[20,6],"uv_size":[0.5,3]},"up":{"uv":[55,40],"uv_size":[0.25,0.5]},"down":{"uv":[41,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-1.9609,5.9259,-0.7602],"size":[0.2496,3.2529,0.4374],"pivot":[-1.7113,5.9259,-0.3228],"rotation":[-18.5411,59.9321,-20.1981],"uv":{"north":{"uv":[32,26],"uv_size":[0.25,3]},"east":{"uv":[8,20],"uv_size":[0.5,3]},"south":{"uv":[29,32],"uv_size":[0.25,3]},"west":{"uv":[9,20],"uv_size":[0.5,3]},"up":{"uv":[55,41],"uv_size":[0.25,0.5]},"down":{"uv":[42,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.4621,6.8322,0.3425],"size":[0.2497,1.0852,0.5317],"pivot":[-2.4621,7.9175,0.8741],"rotation":[-10,23.4398,0],"uv":{"north":{"uv":[13,44],"uv_size":[0.25,1]},"east":{"uv":[3,37],"uv_size":[0.5,1]},"south":{"uv":[44,13],"uv_size":[0.25,1]},"west":{"uv":[37,3],"uv_size":[0.5,1]},"up":{"uv":[55,42],"uv_size":[0.25,0.5]},"down":{"uv":[43,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.5371,5.7635,0.1696],"size":[0.2497,1.0852,0.5317],"pivot":[-2.5371,6.8487,0.7012],"rotation":[-10,23.4398,0],"uv":{"north":{"uv":[14,44],"uv_size":[0.25,1]},"east":{"uv":[37,4],"uv_size":[0.5,1]},"south":{"uv":[44,14],"uv_size":[0.25,1]},"west":{"uv":[37,5],"uv_size":[0.5,1]},"up":{"uv":[55,43],"uv_size":[0.25,0.5]},"down":{"uv":[44,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.6096,4.8334,0.0022],"size":[0.2497,1.0852,0.5317],"pivot":[-2.6096,5.9186,0.5339],"rotation":[5,23.4398,0],"uv":{"north":{"uv":[15,44],"uv_size":[0.25,1]},"east":{"uv":[37,6],"uv_size":[0.5,1]},"south":{"uv":[44,15],"uv_size":[0.25,1]},"west":{"uv":[37,7],"uv_size":[0.5,1]},"up":{"uv":[55,44],"uv_size":[0.25,0.5]},"down":{"uv":[45,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.572,4.3582,0.089],"size":[0.2497,0.4793,0.5317],"pivot":[-2.572,4.8375,0.6207],"rotation":[-0.5033,23.9327,-13.6446],"uv":{"north":{"uv":[55,45],"uv_size":[0.25,0.5]},"east":{"uv":[16,44],"uv_size":[0.5,0.5]},"south":{"uv":[46,55],"uv_size":[0.25,0.5]},"west":{"uv":[44,16],"uv_size":[0.5,0.5]},"up":{"uv":[55,46],"uv_size":[0.25,0.5]},"down":{"uv":[47,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.0777,4.3582,0.089],"size":[0.2497,0.4793,0.5317],"pivot":[-1.828,4.8375,0.6207],"rotation":[-0.5033,-23.9327,13.6446],"uv":{"north":{"uv":[55,47],"uv_size":[0.25,0.5]},"east":{"uv":[17,44],"uv_size":[0.5,0.5]},"south":{"uv":[48,55],"uv_size":[0.25,0.5]},"west":{"uv":[44,17],"uv_size":[0.5,0.5]},"up":{"uv":[55,48],"uv_size":[0.25,0.5]},"down":{"uv":[49,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.04,4.8334,0.0022],"size":[0.2496,1.0852,0.5317],"pivot":[-1.7904,5.9186,0.5339],"rotation":[5,-23.4398,0],"uv":{"north":{"uv":[18,44],"uv_size":[0.25,1]},"east":{"uv":[37,8],"uv_size":[0.5,1]},"south":{"uv":[44,18],"uv_size":[0.25,1]},"west":{"uv":[37,9],"uv_size":[0.5,1]},"up":{"uv":[55,49],"uv_size":[0.25,0.5]},"down":{"uv":[50,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.1126,5.7635,0.1696],"size":[0.2496,1.0852,0.5317],"pivot":[-1.8629,6.8487,0.7012],"rotation":[-10,-23.4398,0],"uv":{"north":{"uv":[19,44],"uv_size":[0.25,1]},"east":{"uv":[37,10],"uv_size":[0.5,1]},"south":{"uv":[44,19],"uv_size":[0.25,1]},"west":{"uv":[37,11],"uv_size":[0.5,1]},"up":{"uv":[55,50],"uv_size":[0.25,0.5]},"down":{"uv":[51,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.1875,6.8322,0.3425],"size":[0.2497,1.0852,0.5317],"pivot":[-1.9379,7.9175,0.8741],"rotation":[-10,-23.4398,0],"uv":{"north":{"uv":[20,44],"uv_size":[0.25,1]},"east":{"uv":[37,12],"uv_size":[0.5,1]},"south":{"uv":[44,20],"uv_size":[0.25,1]},"west":{"uv":[13,37],"uv_size":[0.5,1]},"up":{"uv":[55,51],"uv_size":[0.25,0.5]},"down":{"uv":[52,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.3872,7.901,1.047],"size":[0.0814,1.0901,0.196],"pivot":[-2.3872,8.9862,1.047],"rotation":[-93.1669,80.8185,-89.1957],"uv":{"north":{"uv":[21,44],"uv_size":[0.25,1]},"east":{"uv":[44,21],"uv_size":[0.25,1]},"south":{"uv":[22,44],"uv_size":[0.25,1]},"west":{"uv":[44,22],"uv_size":[0.25,1]},"up":{"uv":[18,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0942,7.901,1.047],"size":[0.0814,1.0901,0.196],"pivot":[-2.0128,8.9862,1.047],"rotation":[-93.1669,-80.8185,89.1957],"uv":{"north":{"uv":[23,44],"uv_size":[0.25,1]},"east":{"uv":[44,23],"uv_size":[0.25,1]},"south":{"uv":[24,44],"uv_size":[0.25,1]},"west":{"uv":[44,24],"uv_size":[0.25,1]},"up":{"uv":[19,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2626,7.9009,0.5153],"size":[0.2499,1.0854,0.5319],"inflate":0.001,"pivot":[-2.0128,8.9862,1.047],"rotation":[-10,-23.4398,0],"uv":{"north":{"uv":[25,44],"uv_size":[0.25,1]},"east":{"uv":[37,13],"uv_size":[0.5,1]},"south":{"uv":[44,25],"uv_size":[0.25,1]},"west":{"uv":[14,37],"uv_size":[0.5,1]},"up":{"uv":[55,52],"uv_size":[0.25,0.5]},"down":{"uv":[53,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.2625,8.9862,0.3921],"size":[0.2497,0.7267,0.6549],"pivot":[-2.0128,9.7129,1.047],"rotation":[0,-23.4398,0],"uv":{"north":{"uv":[49,11],"uv_size":[0.25,0.75]},"east":{"uv":[40,6],"uv_size":[0.5,0.75]},"south":{"uv":[12,49],"uv_size":[0.25,0.75]},"west":{"uv":[7,40],"uv_size":[0.5,0.75]},"up":{"uv":[55,53],"uv_size":[0.25,0.5]},"down":{"uv":[54,55.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.3171,3.304,0.1741],"size":[0.2343,5.6822,0.873],"uv":{"north":{"uv":[27,18],"uv_size":[0.25,5.25]},"east":{"uv":[5,8],"uv_size":[0.75,5.25]},"south":{"uv":[20,27],"uv_size":[0.25,5.25]},"west":{"uv":[6,8],"uv_size":[0.75,5.25]},"up":{"uv":[49,12],"uv_size":[0.25,0.75]},"down":{"uv":[13,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.3171,3.304,0.3558],"size":[0.2343,5.6822,0.6912],"pivot":[-2.3171,3.304,1.047],"rotation":[0,28.8142,0],"uv":{"north":{"uv":[27,24],"uv_size":[0.25,5.25]},"east":{"uv":[8,6],"uv_size":[0.75,5.25]},"south":{"uv":[0,28],"uv_size":[0.25,5.25]},"west":{"uv":[7,8],"uv_size":[0.75,5.25]},"up":{"uv":[49,13],"uv_size":[0.25,0.75]},"down":{"uv":[14,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.3171,3.304,0.3558],"size":[0.2343,5.6822,0.6912],"pivot":[-2.3171,3.304,1.047],"rotation":[0,28.8142,0],"uv":{"north":{"uv":[28,0],"uv_size":[0.25,5.25]},"east":{"uv":[9,0],"uv_size":[0.75,5.25]},"south":{"uv":[1,28],"uv_size":[0.25,5.25]},"west":{"uv":[9,6],"uv_size":[0.75,5.25]},"up":{"uv":[49,14],"uv_size":[0.25,0.75]},"down":{"uv":[15,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.3171,3.304,0.3558],"size":[0.2343,5.6822,0.6912],"pivot":[-2.0829,3.304,1.047],"rotation":[0,-28.8142,0],"uv":{"north":{"uv":[2,28],"uv_size":[0.25,5.25]},"east":{"uv":[10,0],"uv_size":[0.75,5.25]},"south":{"uv":[3,28],"uv_size":[0.25,5.25]},"west":{"uv":[10,6],"uv_size":[0.75,5.25]},"up":{"uv":[49,15],"uv_size":[0.25,0.75]},"down":{"uv":[16,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.3872,8.9862,0.1741],"size":[0.3743,0.7267,0.873],"uv":{"north":{"uv":[49,16],"uv_size":[0.25,0.75]},"east":{"uv":[21,35],"uv_size":[0.75,0.75]},"south":{"uv":[17,49],"uv_size":[0.25,0.75]},"west":{"uv":[35,21],"uv_size":[0.75,0.75]},"up":{"uv":[49,17],"uv_size":[0.25,0.75]},"down":{"uv":[18,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.3279,2.6622,-0.5394],"size":[0.2558,7.6839,0.2787],"uv":{"north":{"uv":[14,15],"uv_size":[0.25,7]},"east":{"uv":[15,14],"uv_size":[0.25,7]},"south":{"uv":[16,0],"uv_size":[0.25,7]},"west":{"uv":[16,7],"uv_size":[0.25,7]},"up":{"uv":[20,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.328,3.719,-1.1145],"size":[0.256,0.2991,0.5751],"inflate":0.001,"uv":{"north":{"uv":[21,72],"uv_size":[0.25,0.25]},"east":{"uv":[55,54],"uv_size":[0.5,0.25]},"south":{"uv":[72,21],"uv_size":[0.25,0.25]},"west":{"uv":[55,55],"uv_size":[0.5,0.25]},"up":{"uv":[0,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,0.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.3279,3.7471,-1.1144],"size":[0.2558,0.2709,0.1263],"pivot":[-2.3279,4.018,-1.1144],"rotation":[-25,0,0],"uv":{"north":{"uv":[22,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3279,4.018,-1.1144],"size":[0.2558,0.4055,0.1263],"pivot":[-2.3279,4.018,-1.1144],"rotation":[-67.5,0,0],"uv":{"north":{"uv":[25,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3279,3.9847,-0.7397],"size":[0.2558,0.594,0.261],"pivot":[-2.3279,4.1732,-0.7397],"rotation":[-30,0,0],"uv":{"north":{"uv":[1,56],"uv_size":[0.25,0.5]},"east":{"uv":[56,1],"uv_size":[0.25,0.5]},"south":{"uv":[2,56],"uv_size":[0.25,0.5]},"west":{"uv":[56,2],"uv_size":[0.25,0.5]},"up":{"uv":[28,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3279,2.6622,-0.5394],"size":[0.2558,0.2885,0.2787],"pivot":[-2.0721,2.6622,-0.5394],"rotation":[0,46.75,0],"uv":{"north":{"uv":[29,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3279,2.6622,-0.5394],"size":[0.2558,0.2885,0.2787],"pivot":[-2.3279,2.6622,-0.5394],"rotation":[0,-46.75,0],"uv":{"north":{"uv":[32,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2438,2.2556,-0.5394],"size":[0.0875,0.4066,0.2787],"uv":{"north":{"uv":[35,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[4.1356,-0.4443,-0.5394],"size":[0.0619,0.0619,0.2787],"pivot":[4.2049,8.6062,-0.3684],"rotation":[0,0,45],"uv":{"north":{"uv":[38,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2438,2.2556,-0.5394],"size":[0.0875,0.4066,0.0902],"pivot":[-2.1562,2.2556,-0.5394],"rotation":[0,45,0],"uv":{"north":{"uv":[41,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2438,2.2556,-0.5394],"size":[0.0875,0.4066,0.0902],"pivot":[-2.2438,2.2556,-0.5394],"rotation":[0,-45,0],"uv":{"north":{"uv":[44,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,44],"uv_size":[0.25,0.25]},"south":{"uv":[45,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,45],"uv_size":[0.25,0.25]},"up":{"uv":[46,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3279,2.3363,-0.5394],"size":[0.0808,0.3258,0.2787],"pivot":[-2.3279,2.6622,-0.5394],"rotation":[0,0,-16.5],"uv":{"north":{"uv":[47,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,47],"uv_size":[0.25,0.25]},"south":{"uv":[48,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,48],"uv_size":[0.25,0.25]},"up":{"uv":[49,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1529,2.3363,-0.5394],"size":[0.0808,0.3258,0.2787],"pivot":[-2.0721,2.6622,-0.5394],"rotation":[0,0,16.5],"uv":{"north":{"uv":[50,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,50],"uv_size":[0.25,0.25]},"south":{"uv":[51,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,51],"uv_size":[0.25,0.25]},"up":{"uv":[52,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1529,2.3363,-0.5394],"size":[0.0808,0.3554,0.1373],"pivot":[-2.0721,2.6622,-0.5394],"rotation":[0,45.5,16.5],"uv":{"north":{"uv":[53,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,53],"uv_size":[0.25,0.25]},"south":{"uv":[54,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,54],"uv_size":[0.25,0.25]},"up":{"uv":[55,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,55.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3279,2.3363,-0.5394],"size":[0.0808,0.3554,0.1373],"pivot":[-2.3279,2.6622,-0.5394],"rotation":[0,-45.5,-16.5],"uv":{"north":{"uv":[56,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,56],"uv_size":[0.25,0.25]},"south":{"uv":[57,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,57],"uv_size":[0.25,0.25]},"up":{"uv":[58,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6477,8.3265,-0.004],"size":[0.0824,2.0196,0.4501],"pivot":[-2.6477,10.3461,0.4461],"rotation":[0,9.25,0],"uv":{"north":{"uv":[38,30],"uv_size":[0.25,1.75]},"east":{"uv":[9,29],"uv_size":[0.5,1.75]},"south":{"uv":[31,38],"uv_size":[0.25,1.75]},"west":{"uv":[29,10],"uv_size":[0.5,1.75]},"up":{"uv":[3,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,3.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.6477,7.5186,-0.004],"size":[0.0824,0.8078,0.4501],"pivot":[-2.6477,8.3265,0.4461],"rotation":[-3.5663,8.5404,-22.7664],"uv":{"north":{"uv":[49,18],"uv_size":[0.25,0.75]},"east":{"uv":[40,7],"uv_size":[0.5,0.75]},"south":{"uv":[19,49],"uv_size":[0.25,0.75]},"west":{"uv":[8,40],"uv_size":[0.5,0.75]},"up":{"uv":[4,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,4.5],"uv_size":[0.25,-0.5]}}},{"origin":[-1.8347,7.5186,-0.004],"size":[0.0824,0.8078,0.4501],"pivot":[-1.7523,8.3265,0.4461],"rotation":[-3.5663,-8.5404,22.7664],"uv":{"north":{"uv":[49,19],"uv_size":[0.25,0.75]},"east":{"uv":[40,8],"uv_size":[0.5,0.75]},"south":{"uv":[20,49],"uv_size":[0.25,0.75]},"west":{"uv":[9,40],"uv_size":[0.5,0.75]},"up":{"uv":[5,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,5.5],"uv_size":[0.25,-0.5]}}},{"origin":[-1.8347,8.3265,-0.004],"size":[0.0824,2.0196,0.4501],"pivot":[-1.7523,10.3461,0.4461],"rotation":[0,-9.25,0],"uv":{"north":{"uv":[32,38],"uv_size":[0.25,1.75]},"east":{"uv":[29,12],"uv_size":[0.5,1.75]},"south":{"uv":[38,32],"uv_size":[0.25,1.75]},"west":{"uv":[29,14],"uv_size":[0.5,1.75]},"up":{"uv":[6,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,6.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.72,8.138,-0.2717],"size":[0.0913,2.2081,0.2736],"pivot":[-2.72,10.3461,0.0019],"rotation":[0,-5.25,0],"uv":{"north":{"uv":[37,14],"uv_size":[0.25,2]},"east":{"uv":[15,37],"uv_size":[0.25,2]},"south":{"uv":[16,37],"uv_size":[0.25,2]},"west":{"uv":[37,16],"uv_size":[0.25,2]},"up":{"uv":[59,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.72,7.3059,-0.2717],"size":[0.0913,0.8321,0.0851],"pivot":[-2.72,8.138,0.0019],"rotation":[0,-5.25,0],"uv":{"north":{"uv":[49,20],"uv_size":[0.25,0.75]},"east":{"uv":[21,49],"uv_size":[0.25,0.75]},"south":{"uv":[49,21],"uv_size":[0.25,0.75]},"west":{"uv":[22,49],"uv_size":[0.25,0.75]},"up":{"uv":[60,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.7278,7.6223,-0.187],"size":[0.0913,0.5157,0.0662],"pivot":[-2.7278,8.138,0.0866],"rotation":[0,-5.25,0],"uv":{"north":{"uv":[7,56],"uv_size":[0.25,0.5]},"east":{"uv":[56,7],"uv_size":[0.25,0.5]},"south":{"uv":[8,56],"uv_size":[0.25,0.5]},"west":{"uv":[56,8],"uv_size":[0.25,0.5]},"up":{"uv":[61,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.7028,7.3059,-0.1858],"size":[0.0913,0.0714,0.8532],"pivot":[-2.7028,7.3059,-0.1858],"rotation":[77.2534,-4.3235,-0.2105],"uv":{"north":{"uv":[62,72],"uv_size":[0.25,0.25]},"east":{"uv":[49,22],"uv_size":[0.75,0.25]},"south":{"uv":[72,62],"uv_size":[0.25,0.25]},"west":{"uv":[23,49],"uv_size":[0.75,0.25]},"up":{"uv":[49,23],"uv_size":[0.25,0.75]},"down":{"uv":[24,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.6976,7.3217,0.2564],"size":[0.0913,0.0579,0.3415],"pivot":[-2.6976,7.3217,-0.2552],"rotation":[77.2534,-4.3235,-0.2105],"uv":{"north":{"uv":[63,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,63],"uv_size":[0.25,0.25]},"south":{"uv":[64,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,64],"uv_size":[0.25,0.25]},"up":{"uv":[65,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.7885,7.3059,-0.1858],"size":[0.0913,0.0714,0.8532],"pivot":[-1.6972,7.3059,-0.1858],"rotation":[77.2534,4.3235,0.2105],"uv":{"north":{"uv":[66,72],"uv_size":[0.25,0.25]},"east":{"uv":[49,24],"uv_size":[0.75,0.25]},"south":{"uv":[72,66],"uv_size":[0.25,0.25]},"west":{"uv":[25,49],"uv_size":[0.75,0.25]},"up":{"uv":[49,25],"uv_size":[0.25,0.75]},"down":{"uv":[26,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-1.7937,7.3217,0.2564],"size":[0.0913,0.0579,0.3415],"pivot":[-1.7024,7.3217,-0.2552],"rotation":[77.2534,4.3235,0.2105],"uv":{"north":{"uv":[67,72],"uv_size":[0.25,0.25]},"east":{"uv":[72,67],"uv_size":[0.25,0.25]},"south":{"uv":[68,72],"uv_size":[0.25,0.25]},"west":{"uv":[72,68],"uv_size":[0.25,0.25]},"up":{"uv":[69,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,69.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.7713,7.3059,-0.2717],"size":[0.0913,0.8321,0.0851],"pivot":[-1.68,8.138,0.0019],"rotation":[0,5.25,0],"uv":{"north":{"uv":[49,26],"uv_size":[0.25,0.75]},"east":{"uv":[27,49],"uv_size":[0.25,0.75]},"south":{"uv":[49,27],"uv_size":[0.25,0.75]},"west":{"uv":[28,49],"uv_size":[0.25,0.75]},"up":{"uv":[70,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,70.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.7635,7.6223,-0.187],"size":[0.0913,0.5157,0.0662],"pivot":[-1.6722,8.138,0.0866],"rotation":[0,5.25,0],"uv":{"north":{"uv":[9,56],"uv_size":[0.25,0.5]},"east":{"uv":[56,9],"uv_size":[0.25,0.5]},"south":{"uv":[10,56],"uv_size":[0.25,0.5]},"west":{"uv":[56,10],"uv_size":[0.25,0.5]},"up":{"uv":[71,72],"uv_size":[0.25,0.25]},"down":{"uv":[72,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.695,7.3059,-0.7601],"size":[0.2154,0.0442,0.4895],"pivot":[-2.695,7.3059,-0.2706],"rotation":[63.0121,-41.5,0],"uv":{"north":{"uv":[72,72],"uv_size":[0.25,0.25]},"east":{"uv":[11,56],"uv_size":[0.5,0.25]},"south":{"uv":[0,73],"uv_size":[0.25,0.25]},"west":{"uv":[56,11],"uv_size":[0.5,0.25]},"up":{"uv":[12,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,12.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.6689,7.326,-0.703],"size":[0.2154,0.0631,0.403],"pivot":[-2.6689,7.326,-0.3001],"rotation":[63.0121,-41.5,0],"uv":{"north":{"uv":[73,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6316,7.3546,-0.5566],"size":[0.2154,0.0631,0.2145],"pivot":[-2.6316,7.3546,-0.3422],"rotation":[63.0121,-41.5,0],"uv":{"north":{"uv":[73,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9838,7.3546,-0.5566],"size":[0.2154,0.0631,0.2145],"pivot":[-1.7684,7.3546,-0.3422],"rotation":[63.0121,41.5,0],"uv":{"north":{"uv":[73,6],"uv_size":[0.25,0.25]},"east":{"uv":[7,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,7],"uv_size":[0.25,0.25]},"west":{"uv":[8,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9465,7.326,-0.703],"size":[0.2154,0.0631,0.403],"pivot":[-1.7311,7.326,-0.3001],"rotation":[63.0121,41.5,0],"uv":{"north":{"uv":[73,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9204,7.3059,-0.7601],"size":[0.2154,0.0442,0.4895],"pivot":[-1.705,7.3059,-0.2706],"rotation":[63.0121,41.5,0],"uv":{"north":{"uv":[73,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,56],"uv_size":[0.5,0.25]},"south":{"uv":[13,73],"uv_size":[0.25,0.25]},"west":{"uv":[56,13],"uv_size":[0.5,0.25]},"up":{"uv":[14,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,14.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.1556,6.8697,-0.672],"size":[0.2693,3.4764,0.1965],"pivot":[-1.8863,10.3461,-0.4755],"rotation":[0,71,0],"uv":{"north":{"uv":[31,12],"uv_size":[0.25,3.25]},"east":{"uv":[31,16],"uv_size":[0.25,3.25]},"south":{"uv":[31,20],"uv_size":[0.25,3.25]},"west":{"uv":[31,24],"uv_size":[0.25,3.25]},"up":{"uv":[73,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9204,7.3059,-0.5442],"size":[0.2154,3.0402,0.2736],"pivot":[-1.705,10.3461,-0.2706],"rotation":[0,41.5,0],"uv":{"north":{"uv":[15,33],"uv_size":[0.25,2.75]},"east":{"uv":[33,15],"uv_size":[0.25,2.75]},"south":{"uv":[17,33],"uv_size":[0.25,2.75]},"west":{"uv":[18,33],"uv_size":[0.25,2.75]},"up":{"uv":[73,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.695,7.3059,-0.5442],"size":[0.2154,3.0402,0.2736],"pivot":[-2.695,10.3461,-0.2706],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[33,18],"uv_size":[0.25,2.75]},"east":{"uv":[19,33],"uv_size":[0.25,2.75]},"south":{"uv":[20,33],"uv_size":[0.25,2.75]},"west":{"uv":[33,21],"uv_size":[0.25,2.75]},"up":{"uv":[73,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.695,7.0932,-0.5442],"size":[0.2154,0.2127,0.112],"pivot":[-2.695,7.3059,-0.2706],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[73,16],"uv_size":[0.25,0.25]},"east":{"uv":[17,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,17],"uv_size":[0.25,0.25]},"west":{"uv":[18,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9204,7.0932,-0.5442],"size":[0.2154,0.2127,0.112],"pivot":[-1.705,7.3059,-0.2706],"rotation":[0,41.5,0],"uv":{"north":{"uv":[73,19],"uv_size":[0.25,0.25]},"east":{"uv":[20,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,20],"uv_size":[0.25,0.25]},"west":{"uv":[21,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.695,6.8697,-0.5442],"size":[0.2154,0.2235,0.0515],"pivot":[-2.695,7.0932,-0.2706],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[73,22],"uv_size":[0.25,0.25]},"east":{"uv":[23,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,23],"uv_size":[0.25,0.25]},"west":{"uv":[24,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9204,6.8697,-0.5442],"size":[0.2154,0.2235,0.0515],"pivot":[-1.705,7.0932,-0.2706],"rotation":[0,41.5,0],"uv":{"north":{"uv":[73,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.5137,6.8697,-0.672],"size":[0.2693,3.4764,0.1965],"pivot":[-2.5137,10.3461,-0.4755],"rotation":[0,-71,0],"uv":{"north":{"uv":[28,31],"uv_size":[0.25,3.25]},"east":{"uv":[31,28],"uv_size":[0.25,3.25]},"south":{"uv":[32,0],"uv_size":[0.25,3.25]},"west":{"uv":[32,4],"uv_size":[0.25,3.25]},"up":{"uv":[73,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.5137,6.7718,-0.672],"size":[0.2693,0.0979,0.0897],"pivot":[-2.5137,6.8697,-0.4755],"rotation":[0,-71,0],"uv":{"north":{"uv":[73,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1556,6.7718,-0.672],"size":[0.2693,0.0979,0.0897],"pivot":[-1.8863,6.8697,-0.4755],"rotation":[0,71,0],"uv":{"north":{"uv":[73,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.5137,6.8697,-0.6203],"size":[0.2693,0.1328,0.1449],"pivot":[-2.5137,6.8697,-0.4755],"rotation":[42.5,-71,0],"uv":{"north":{"uv":[73,35],"uv_size":[0.25,0.25]},"east":{"uv":[36,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,36],"uv_size":[0.25,0.25]},"west":{"uv":[37,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1556,6.8697,-0.6203],"size":[0.2693,0.1328,0.1449],"pivot":[-1.8863,6.8697,-0.4755],"rotation":[42.5,71,0],"uv":{"north":{"uv":[73,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,39],"uv_size":[0.25,0.25]},"west":{"uv":[40,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.7713,8.138,-0.2717],"size":[0.0913,2.2081,0.2736],"pivot":[-1.68,10.3461,0.0019],"rotation":[0,5.25,0],"uv":{"north":{"uv":[17,37],"uv_size":[0.25,2]},"east":{"uv":[18,37],"uv_size":[0.25,2]},"south":{"uv":[37,18],"uv_size":[0.25,2]},"west":{"uv":[19,37],"uv_size":[0.25,2]},"up":{"uv":[73,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6476,4.3951,-0.0039],"size":[0.0822,1.1846,0.4499],"inflate":-0.001,"pivot":[-2.6477,6.4146,0.4461],"rotation":[0,9.25,0],"uv":{"north":{"uv":[26,44],"uv_size":[0.25,1]},"east":{"uv":[20,37],"uv_size":[0.5,1]},"south":{"uv":[44,26],"uv_size":[0.25,1]},"west":{"uv":[37,20],"uv_size":[0.5,1]},"up":{"uv":[15,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,15.5],"uv_size":[0.25,-0.5]}}},{"origin":[-1.8347,4.395,-0.004],"size":[0.0824,1.1848,0.4501],"pivot":[-1.7523,6.4146,0.4461],"rotation":[0,-9.25,0],"uv":{"north":{"uv":[27,44],"uv_size":[0.25,1]},"east":{"uv":[21,37],"uv_size":[0.5,1]},"south":{"uv":[44,27],"uv_size":[0.25,1]},"west":{"uv":[37,21],"uv_size":[0.5,1]},"up":{"uv":[16,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,16.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.72,4.2065,-0.2717],"size":[0.0913,1.3733,0.2736],"pivot":[-2.72,6.4146,0.0019],"rotation":[0,-5.25,0],"uv":{"north":{"uv":[41,6],"uv_size":[0.25,1.25]},"east":{"uv":[7,41],"uv_size":[0.25,1.25]},"south":{"uv":[8,41],"uv_size":[0.25,1.25]},"west":{"uv":[41,8],"uv_size":[0.25,1.25]},"up":{"uv":[73,42],"uv_size":[0.25,0.25]},"down":{"uv":[43,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1509,5.5046,-0.2531],"size":[0.0913,1.3733,0.3476],"pivot":[-2.1509,7.7127,0.0542],"rotation":[-1.3624,-5.0706,15.0603],"uv":{"north":{"uv":[9,41],"uv_size":[0.25,1.25]},"east":{"uv":[10,41],"uv_size":[0.25,1.25]},"south":{"uv":[41,10],"uv_size":[0.25,1.25]},"west":{"uv":[11,41],"uv_size":[0.25,1.25]},"up":{"uv":[73,43],"uv_size":[0.25,0.25]},"down":{"uv":[44,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3404,5.5046,-0.2531],"size":[0.0913,1.3733,0.3476],"pivot":[-2.2491,7.7127,0.0542],"rotation":[-1.3624,5.0706,-15.0603],"uv":{"north":{"uv":[12,41],"uv_size":[0.25,1.25]},"east":{"uv":[41,12],"uv_size":[0.25,1.25]},"south":{"uv":[13,41],"uv_size":[0.25,1.25]},"west":{"uv":[14,41],"uv_size":[0.25,1.25]},"up":{"uv":[73,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.7713,4.2065,-0.2717],"size":[0.0913,1.3733,0.2736],"pivot":[-1.68,6.4146,0.0019],"rotation":[0,5.25,0],"uv":{"north":{"uv":[41,14],"uv_size":[0.25,1.25]},"east":{"uv":[15,41],"uv_size":[0.25,1.25]},"south":{"uv":[16,41],"uv_size":[0.25,1.25]},"west":{"uv":[41,16],"uv_size":[0.25,1.25]},"up":{"uv":[73,45],"uv_size":[0.25,0.25]},"down":{"uv":[46,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.695,3.3744,-0.7601],"size":[0.2154,0.0442,0.4895],"pivot":[-2.695,3.3744,-0.2706],"rotation":[63.0121,-41.5,0],"uv":{"north":{"uv":[73,46],"uv_size":[0.25,0.25]},"east":{"uv":[17,56],"uv_size":[0.5,0.25]},"south":{"uv":[47,73],"uv_size":[0.25,0.25]},"west":{"uv":[56,17],"uv_size":[0.5,0.25]},"up":{"uv":[18,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,18.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.5137,2.9382,-0.672],"size":[0.2693,1.1875,0.1965],"pivot":[-2.5137,2.9382,-0.4755],"rotation":[-7.2198,-70.8423,7.6382],"uv":{"north":{"uv":[28,44],"uv_size":[0.25,1]},"east":{"uv":[44,28],"uv_size":[0.25,1]},"south":{"uv":[29,44],"uv_size":[0.25,1]},"west":{"uv":[44,29],"uv_size":[0.25,1]},"up":{"uv":[73,47],"uv_size":[0.25,0.25]},"down":{"uv":[48,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.141,4.1246,0.3441],"size":[0.2693,1.1875,0.1965],"pivot":[-1.141,4.1246,-0.8933],"rotation":[-26.7623,-68.6154,28.4399],"uv":{"north":{"uv":[30,44],"uv_size":[0.25,1]},"east":{"uv":[44,30],"uv_size":[0.25,1]},"south":{"uv":[31,44],"uv_size":[0.25,1]},"west":{"uv":[44,31],"uv_size":[0.25,1]},"up":{"uv":[73,48],"uv_size":[0.25,0.25]},"down":{"uv":[49,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-3.5282,4.1246,0.3441],"size":[0.2693,1.1875,0.1965],"pivot":[-3.259,4.1246,-0.8933],"rotation":[-26.7623,68.6154,-28.4399],"uv":{"north":{"uv":[32,44],"uv_size":[0.25,1]},"east":{"uv":[44,32],"uv_size":[0.25,1]},"south":{"uv":[33,44],"uv_size":[0.25,1]},"west":{"uv":[44,33],"uv_size":[0.25,1]},"up":{"uv":[73,49],"uv_size":[0.25,0.25]},"down":{"uv":[50,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1556,2.9382,-0.672],"size":[0.2693,1.1875,0.1965],"pivot":[-1.8863,2.9382,-0.4755],"rotation":[-7.2198,70.8423,-7.6382],"uv":{"north":{"uv":[34,44],"uv_size":[0.25,1]},"east":{"uv":[44,34],"uv_size":[0.25,1]},"south":{"uv":[35,44],"uv_size":[0.25,1]},"west":{"uv":[44,35],"uv_size":[0.25,1]},"up":{"uv":[73,50],"uv_size":[0.25,0.25]},"down":{"uv":[51,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.695,3.3744,-0.5442],"size":[0.2154,1.1283,0.2736],"pivot":[-2.695,6.4146,-0.2706],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[36,44],"uv_size":[0.25,1]},"east":{"uv":[44,36],"uv_size":[0.25,1]},"south":{"uv":[37,44],"uv_size":[0.25,1]},"west":{"uv":[44,37],"uv_size":[0.25,1]},"up":{"uv":[73,51],"uv_size":[0.25,0.25]},"down":{"uv":[52,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.695,4.5027,-0.318],"size":[0.2154,1.0771,0.0474],"pivot":[-2.695,7.5429,-0.2706],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[38,44],"uv_size":[0.25,1]},"east":{"uv":[44,38],"uv_size":[0.25,1]},"south":{"uv":[39,44],"uv_size":[0.25,1]},"west":{"uv":[44,39],"uv_size":[0.25,1]},"up":{"uv":[73,52],"uv_size":[0.25,0.25]},"down":{"uv":[53,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6636,4.5027,-0.4881],"size":[0.2154,0.2087,0.182],"pivot":[-2.6636,7.5429,-0.3061],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[73,53],"uv_size":[0.25,0.25]},"east":{"uv":[54,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,54],"uv_size":[0.25,0.25]},"west":{"uv":[55,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,55],"uv_size":[0.25,0.25]},"down":{"uv":[56,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6636,4.7114,-0.4006],"size":[0.2154,0.3029,0.0945],"pivot":[-2.6636,7.7516,-0.3061],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[73,56],"uv_size":[0.25,0.25]},"east":{"uv":[57,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,57],"uv_size":[0.25,0.25]},"west":{"uv":[58,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,58],"uv_size":[0.25,0.25]},"down":{"uv":[59,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6636,5.0143,-0.34],"size":[0.2154,0.3299,0.0339],"pivot":[-2.6636,8.0545,-0.3061],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[73,59],"uv_size":[0.25,0.25]},"east":{"uv":[60,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,60],"uv_size":[0.25,0.25]},"west":{"uv":[61,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,61],"uv_size":[0.25,0.25]},"down":{"uv":[62,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6411,5.0143,-0.3654],"size":[0.2154,0.1818,0.0339],"pivot":[-2.6411,8.0545,-0.3315],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[73,62],"uv_size":[0.25,0.25]},"east":{"uv":[63,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,63],"uv_size":[0.25,0.25]},"west":{"uv":[64,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,64],"uv_size":[0.25,0.25]},"down":{"uv":[65,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.601,4.7114,-0.4175],"size":[0.2154,0.1818,0.0407],"pivot":[-2.601,7.7516,-0.3769],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[73,65],"uv_size":[0.25,0.25]},"east":{"uv":[66,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,66],"uv_size":[0.25,0.25]},"west":{"uv":[67,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,67],"uv_size":[0.25,0.25]},"down":{"uv":[68,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.5137,4.5027,-0.4755],"size":[0.2154,1.1006,0.0504],"pivot":[-2.5137,4.5027,-0.4755],"rotation":[-11.8598,-41.5,0],"uv":{"north":{"uv":[40,44],"uv_size":[0.25,1]},"east":{"uv":[44,40],"uv_size":[0.25,1]},"south":{"uv":[41,44],"uv_size":[0.25,1]},"west":{"uv":[44,41],"uv_size":[0.25,1]},"up":{"uv":[73,68],"uv_size":[0.25,0.25]},"down":{"uv":[69,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1017,4.5027,-0.4755],"size":[0.2154,1.1006,0.0504],"pivot":[-1.8863,4.5027,-0.4755],"rotation":[-11.8598,41.5,0],"uv":{"north":{"uv":[42,44],"uv_size":[0.25,1]},"east":{"uv":[44,42],"uv_size":[0.25,1]},"south":{"uv":[43,44],"uv_size":[0.25,1]},"west":{"uv":[44,43],"uv_size":[0.25,1]},"up":{"uv":[73,69],"uv_size":[0.25,0.25]},"down":{"uv":[70,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9518,4.5027,-0.4881],"size":[0.2154,0.2087,0.182],"pivot":[-1.7364,7.5429,-0.3061],"rotation":[0,41.5,0],"uv":{"north":{"uv":[73,70],"uv_size":[0.25,0.25]},"east":{"uv":[71,73],"uv_size":[0.25,0.25]},"south":{"uv":[73,71],"uv_size":[0.25,0.25]},"west":{"uv":[72,73],"uv_size":[0.25,0.25]},"up":{"uv":[73,72],"uv_size":[0.25,0.25]},"down":{"uv":[73,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9518,4.7114,-0.4006],"size":[0.2154,0.3029,0.0945],"pivot":[-1.7364,7.7516,-0.3061],"rotation":[0,41.5,0],"uv":{"north":{"uv":[0,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,0],"uv_size":[0.25,0.25]},"south":{"uv":[1,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,1],"uv_size":[0.25,0.25]},"up":{"uv":[2,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9204,4.5027,-0.318],"size":[0.2154,1.0771,0.0474],"pivot":[-1.705,7.5429,-0.2706],"rotation":[0,41.5,0],"uv":{"north":{"uv":[44,44],"uv_size":[0.25,1]},"east":{"uv":[0,45],"uv_size":[0.25,1]},"south":{"uv":[45,0],"uv_size":[0.25,1]},"west":{"uv":[1,45],"uv_size":[0.25,1]},"up":{"uv":[3,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9743,5.0143,-0.3654],"size":[0.2154,0.1818,0.0339],"pivot":[-1.7589,8.0545,-0.3315],"rotation":[0,41.5,0],"uv":{"north":{"uv":[4,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9518,5.0143,-0.34],"size":[0.2154,0.3299,0.0339],"pivot":[-1.7364,8.0545,-0.3061],"rotation":[0,41.5,0],"uv":{"north":{"uv":[7,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,7],"uv_size":[0.25,0.25]},"south":{"uv":[8,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,8],"uv_size":[0.25,0.25]},"up":{"uv":[9,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0145,4.7114,-0.4175],"size":[0.2154,0.1818,0.0407],"pivot":[-1.7991,7.7516,-0.3769],"rotation":[0,41.5,0],"uv":{"north":{"uv":[10,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,10],"uv_size":[0.25,0.25]},"south":{"uv":[11,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,11],"uv_size":[0.25,0.25]},"up":{"uv":[12,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9204,3.3744,-0.5442],"size":[0.2154,1.1283,0.2736],"pivot":[-1.705,6.4146,-0.2706],"rotation":[0,41.5,0],"uv":{"north":{"uv":[45,1],"uv_size":[0.25,1]},"east":{"uv":[2,45],"uv_size":[0.25,1]},"south":{"uv":[45,2],"uv_size":[0.25,1]},"west":{"uv":[3,45],"uv_size":[0.25,1]},"up":{"uv":[13,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.695,3.1617,-0.5442],"size":[0.2154,0.2127,0.112],"pivot":[-2.695,3.3744,-0.2706],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[14,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,15],"uv_size":[0.25,0.25]},"up":{"uv":[16,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.695,2.9382,-0.5442],"size":[0.2154,0.2235,0.0515],"pivot":[-2.695,3.1617,-0.2706],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[17,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.5137,2.9382,-0.6203],"size":[0.2693,0.1328,0.1449],"pivot":[-2.5137,2.9382,-0.4755],"rotation":[42.5,-71,0],"uv":{"north":{"uv":[20,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,20],"uv_size":[0.25,0.25]},"south":{"uv":[21,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,21],"uv_size":[0.25,0.25]},"up":{"uv":[22,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1556,2.9382,-0.6203],"size":[0.2693,0.1328,0.1449],"pivot":[-1.8863,2.9382,-0.4755],"rotation":[42.5,71,0],"uv":{"north":{"uv":[23,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,23],"uv_size":[0.25,0.25]},"south":{"uv":[24,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.5137,2.8403,-0.672],"size":[0.2693,0.0979,0.0897],"pivot":[-2.5137,2.9382,-0.4755],"rotation":[0,-71,0],"uv":{"north":{"uv":[26,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1556,2.8403,-0.672],"size":[0.2693,0.0979,0.0897],"pivot":[-1.8863,2.9382,-0.4755],"rotation":[0,71,0],"uv":{"north":{"uv":[29,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.72,3.3744,-0.2717],"size":[0.0913,0.8321,0.0851],"pivot":[-2.72,4.2065,0.0019],"rotation":[0,-5.25,0],"uv":{"north":{"uv":[49,28],"uv_size":[0.25,0.75]},"east":{"uv":[29,49],"uv_size":[0.25,0.75]},"south":{"uv":[49,29],"uv_size":[0.25,0.75]},"west":{"uv":[30,49],"uv_size":[0.25,0.75]},"up":{"uv":[32,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,32.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9204,3.3744,-0.7601],"size":[0.2154,0.0442,0.4895],"pivot":[-1.705,3.3744,-0.2706],"rotation":[63.0121,41.5,0],"uv":{"north":{"uv":[33,74],"uv_size":[0.25,0.25]},"east":{"uv":[19,56],"uv_size":[0.5,0.25]},"south":{"uv":[74,33],"uv_size":[0.25,0.25]},"west":{"uv":[56,19],"uv_size":[0.5,0.25]},"up":{"uv":[20,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,20.5],"uv_size":[0.25,-0.5]}}},{"origin":[-1.9204,2.9382,-0.5442],"size":[0.2154,0.2235,0.0515],"pivot":[-1.705,3.1617,-0.2706],"rotation":[0,41.5,0],"uv":{"north":{"uv":[34,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9204,3.1617,-0.5442],"size":[0.2154,0.2127,0.112],"pivot":[-1.705,3.3744,-0.2706],"rotation":[0,41.5,0],"uv":{"north":{"uv":[37,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6689,3.3945,-0.703],"size":[0.2154,0.0631,0.403],"pivot":[-2.6689,3.3945,-0.3001],"rotation":[63.0121,-41.5,0],"uv":{"north":{"uv":[40,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,40],"uv_size":[0.25,0.25]},"south":{"uv":[41,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,41],"uv_size":[0.25,0.25]},"up":{"uv":[42,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9465,3.3945,-0.703],"size":[0.2154,0.0631,0.403],"pivot":[-1.7311,3.3945,-0.3001],"rotation":[63.0121,41.5,0],"uv":{"north":{"uv":[43,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,43],"uv_size":[0.25,0.25]},"south":{"uv":[44,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,44],"uv_size":[0.25,0.25]},"up":{"uv":[45,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6316,3.4231,-0.5566],"size":[0.2154,0.0631,0.2145],"pivot":[-2.6316,3.4231,-0.3422],"rotation":[63.0121,-41.5,0],"uv":{"north":{"uv":[46,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,46],"uv_size":[0.25,0.25]},"south":{"uv":[47,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,47],"uv_size":[0.25,0.25]},"up":{"uv":[48,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9838,3.4231,-0.5566],"size":[0.2154,0.0631,0.2145],"pivot":[-1.7684,3.4231,-0.3422],"rotation":[63.0121,41.5,0],"uv":{"north":{"uv":[49,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,49],"uv_size":[0.25,0.25]},"south":{"uv":[50,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,50],"uv_size":[0.25,0.25]},"up":{"uv":[51,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.7028,3.3744,-0.1858],"size":[0.0913,0.0714,0.8532],"pivot":[-2.7028,3.3744,-0.1858],"rotation":[77.2534,-4.3235,-0.2105],"uv":{"north":{"uv":[52,74],"uv_size":[0.25,0.25]},"east":{"uv":[49,30],"uv_size":[0.75,0.25]},"south":{"uv":[74,52],"uv_size":[0.25,0.25]},"west":{"uv":[31,49],"uv_size":[0.75,0.25]},"up":{"uv":[49,31],"uv_size":[0.25,0.75]},"down":{"uv":[32,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.7028,3.0338,-0.1858],"size":[0.0913,0.3406,0.8666],"pivot":[-2.7028,3.3744,-0.1858],"rotation":[72.8432,41.7691,-12.8084],"uv":{"north":{"uv":[53,74],"uv_size":[0.25,0.25]},"east":{"uv":[49,32],"uv_size":[0.75,0.25]},"south":{"uv":[74,53],"uv_size":[0.25,0.25]},"west":{"uv":[33,49],"uv_size":[0.75,0.25]},"up":{"uv":[49,33],"uv_size":[0.25,0.75]},"down":{"uv":[34,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.7278,3.6908,-0.187],"size":[0.0913,0.5157,0.0662],"pivot":[-2.7278,4.2065,0.0866],"rotation":[0,-5.25,0],"uv":{"north":{"uv":[21,56],"uv_size":[0.25,0.5]},"east":{"uv":[56,21],"uv_size":[0.25,0.5]},"south":{"uv":[22,56],"uv_size":[0.25,0.5]},"west":{"uv":[56,22],"uv_size":[0.25,0.5]},"up":{"uv":[54,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6976,3.3902,0.2564],"size":[0.0913,0.0579,0.3415],"pivot":[-2.6976,3.3902,-0.2552],"rotation":[77.2534,-4.3235,-0.2105],"uv":{"north":{"uv":[55,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,55],"uv_size":[0.25,0.25]},"south":{"uv":[56,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,56],"uv_size":[0.25,0.25]},"up":{"uv":[57,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,57.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.7635,3.6908,-0.187],"size":[0.0913,0.5157,0.0662],"pivot":[-1.6722,4.2065,0.0866],"rotation":[0,5.25,0],"uv":{"north":{"uv":[23,56],"uv_size":[0.25,0.5]},"east":{"uv":[56,23],"uv_size":[0.25,0.5]},"south":{"uv":[24,56],"uv_size":[0.25,0.5]},"west":{"uv":[56,24],"uv_size":[0.25,0.5]},"up":{"uv":[58,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.7713,3.3744,-0.2717],"size":[0.0913,0.8321,0.0851],"pivot":[-1.68,4.2065,0.0019],"rotation":[0,5.25,0],"uv":{"north":{"uv":[49,34],"uv_size":[0.25,0.75]},"east":{"uv":[35,49],"uv_size":[0.25,0.75]},"south":{"uv":[49,35],"uv_size":[0.25,0.75]},"west":{"uv":[36,49],"uv_size":[0.25,0.75]},"up":{"uv":[59,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.7937,3.3902,0.2564],"size":[0.0913,0.0579,0.3415],"pivot":[-1.7024,3.3902,-0.2552],"rotation":[77.2534,4.3235,0.2105],"uv":{"north":{"uv":[60,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,60],"uv_size":[0.25,0.25]},"south":{"uv":[61,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,61],"uv_size":[0.25,0.25]},"up":{"uv":[62,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,62.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.7885,3.3744,-0.1858],"size":[0.0913,0.0714,0.8532],"pivot":[-1.6972,3.3744,-0.1858],"rotation":[77.2534,4.3235,0.2105],"uv":{"north":{"uv":[63,74],"uv_size":[0.25,0.25]},"east":{"uv":[49,36],"uv_size":[0.75,0.25]},"south":{"uv":[74,63],"uv_size":[0.25,0.25]},"west":{"uv":[37,49],"uv_size":[0.75,0.25]},"up":{"uv":[49,37],"uv_size":[0.25,0.75]},"down":{"uv":[38,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.6477,4.395,0.0065],"size":[0.0824,0.1739,0.4396],"pivot":[-2.6477,4.395,0.4461],"rotation":[25.3879,9.25,0],"uv":{"north":{"uv":[64,74],"uv_size":[0.25,0.25]},"east":{"uv":[25,56],"uv_size":[0.5,0.25]},"south":{"uv":[74,64],"uv_size":[0.25,0.25]},"west":{"uv":[56,25],"uv_size":[0.5,0.25]},"up":{"uv":[26,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,26.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.7115,3.8441,-0.0132],"size":[0.0824,0.3624,0.507],"pivot":[-2.7115,4.2065,0.0541],"rotation":[15.9262,21.9868,-33.9747],"uv":{"north":{"uv":[65,74],"uv_size":[0.25,0.25]},"east":{"uv":[27,56],"uv_size":[0.5,0.25]},"south":{"uv":[74,65],"uv_size":[0.25,0.25]},"west":{"uv":[56,27],"uv_size":[0.5,0.25]},"up":{"uv":[28,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,28.5],"uv_size":[0.25,-0.5]}}},{"origin":[-1.7708,3.8441,-0.0132],"size":[0.0824,0.3624,0.507],"pivot":[-1.6885,4.2065,0.0541],"rotation":[15.9262,-21.9868,33.9747],"uv":{"north":{"uv":[66,74],"uv_size":[0.25,0.25]},"east":{"uv":[29,56],"uv_size":[0.5,0.25]},"south":{"uv":[74,66],"uv_size":[0.25,0.25]},"west":{"uv":[56,29],"uv_size":[0.5,0.25]},"up":{"uv":[30,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,30.5],"uv_size":[0.25,-0.5]}}},{"origin":[-1.7885,3.0338,-0.1858],"size":[0.0913,0.3406,0.8666],"pivot":[-1.6972,3.3744,-0.1858],"rotation":[72.8432,-41.7691,12.8084],"uv":{"north":{"uv":[67,74],"uv_size":[0.25,0.25]},"east":{"uv":[49,38],"uv_size":[0.75,0.25]},"south":{"uv":[74,67],"uv_size":[0.25,0.25]},"west":{"uv":[39,49],"uv_size":[0.75,0.25]},"up":{"uv":[49,39],"uv_size":[0.25,0.75]},"down":{"uv":[40,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.6477,4.2065,-0.004],"size":[0.0824,0.1885,0.0529],"pivot":[-2.6477,4.395,0.4461],"rotation":[0,9.25,0],"uv":{"north":{"uv":[68,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,68],"uv_size":[0.25,0.25]},"south":{"uv":[69,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,69],"uv_size":[0.25,0.25]},"up":{"uv":[70,74],"uv_size":[0.25,0.25]},"down":{"uv":[74,70.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.8347,4.395,0.0065],"size":[0.0824,0.1739,0.4396],"pivot":[-1.7523,4.395,0.4461],"rotation":[25.3879,-9.25,0],"uv":{"north":{"uv":[71,74],"uv_size":[0.25,0.25]},"east":{"uv":[31,56],"uv_size":[0.5,0.25]},"south":{"uv":[74,71],"uv_size":[0.25,0.25]},"west":{"uv":[56,31],"uv_size":[0.5,0.25]},"up":{"uv":[32,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,32.5],"uv_size":[0.25,-0.5]}}},{"origin":[-1.8347,4.2065,-0.004],"size":[0.0824,0.1885,0.0529],"pivot":[-1.7523,4.395,0.4461],"rotation":[0,-9.25,0],"uv":{"north":{"uv":[72,74],"uv_size":[0.25,0.25]},"east":{"uv":[74,72],"uv_size":[0.25,0.25]},"south":{"uv":[73,74],"uv_size":[0.25,0.25]},"west":{"uv":[74,73],"uv_size":[0.25,0.25]},"up":{"uv":[74,74],"uv_size":[0.25,0.25]},"down":{"uv":[0,75.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group12","parent":"group11","pivot":[-2.0993,2.3354,0.9222],"rotation":[-12.5,0,0],"cubes":[{"origin":[-2.3007,2.3354,0.2253],"size":[0.2015,0.4974,0.6969],"uv":{"north":{"uv":[33,56],"uv_size":[0.25,0.5]},"east":{"uv":[40,9],"uv_size":[0.75,0.5]},"south":{"uv":[56,33],"uv_size":[0.25,0.5]},"west":{"uv":[10,40],"uv_size":[0.75,0.5]},"up":{"uv":[49,40],"uv_size":[0.25,0.75]},"down":{"uv":[41,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.3007,2.3354,0.3816],"size":[0.2015,0.4974,0.5406],"pivot":[-2.3007,2.3354,0.9222],"rotation":[0,28.8142,0],"uv":{"north":{"uv":[34,56],"uv_size":[0.25,0.5]},"east":{"uv":[45,3],"uv_size":[0.5,0.5]},"south":{"uv":[56,34],"uv_size":[0.25,0.5]},"west":{"uv":[4,45],"uv_size":[0.5,0.5]},"up":{"uv":[35,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.3007,2.3354,0.3816],"size":[0.2015,0.4974,0.5406],"pivot":[-2.0993,2.3354,0.9222],"rotation":[0,-28.8142,0],"uv":{"north":{"uv":[36,56],"uv_size":[0.25,0.5]},"east":{"uv":[45,4],"uv_size":[0.5,0.5]},"south":{"uv":[56,36],"uv_size":[0.25,0.5]},"west":{"uv":[5,45],"uv_size":[0.5,0.5]},"up":{"uv":[37,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,37.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.3007,2.8328,0.3816],"size":[0.2015,0.4974,0.5406],"pivot":[-2.3007,2.8328,0.9222],"rotation":[11.911,28.4693,3.7656],"uv":{"north":{"uv":[38,56],"uv_size":[0.25,0.5]},"east":{"uv":[45,5],"uv_size":[0.5,0.5]},"south":{"uv":[56,38],"uv_size":[0.25,0.5]},"west":{"uv":[6,45],"uv_size":[0.5,0.5]},"up":{"uv":[39,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,39.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.3007,2.8328,0.3816],"size":[0.2015,0.4974,0.5406],"pivot":[-2.0993,2.8328,0.9222],"rotation":[11.911,-28.4693,-3.7656],"uv":{"north":{"uv":[40,56],"uv_size":[0.25,0.5]},"east":{"uv":[45,6],"uv_size":[0.5,0.5]},"south":{"uv":[56,40],"uv_size":[0.25,0.5]},"west":{"uv":[7,45],"uv_size":[0.5,0.5]},"up":{"uv":[41,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,41.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.3006,2.826,0.3816],"size":[0.2014,0.5043,0.5406],"pivot":[-2.0993,2.8328,0.9222],"rotation":[10.4535,-0.3527,1.9111],"uv":{"north":{"uv":[42,56],"uv_size":[0.25,0.5]},"east":{"uv":[45,7],"uv_size":[0.5,0.5]},"south":{"uv":[56,42],"uv_size":[0.25,0.5]},"west":{"uv":[8,45],"uv_size":[0.5,0.5]},"up":{"uv":[43,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,43.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.3007,2.826,0.3816],"size":[0.2014,0.5043,0.5406],"pivot":[-2.3007,2.8328,0.9222],"rotation":[10.4535,0.3527,-1.9111],"uv":{"north":{"uv":[44,56],"uv_size":[0.25,0.5]},"east":{"uv":[45,8],"uv_size":[0.5,0.5]},"south":{"uv":[56,44],"uv_size":[0.25,0.5]},"west":{"uv":[9,45],"uv_size":[0.5,0.5]},"up":{"uv":[45,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,45.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.5613,2.3354,-0.0921],"size":[0.2015,0.4974,0.5406],"pivot":[-2.5613,2.8328,0.4485],"rotation":[0,8.8142,0],"uv":{"north":{"uv":[46,56],"uv_size":[0.25,0.5]},"east":{"uv":[45,9],"uv_size":[0.5,0.5]},"south":{"uv":[56,46],"uv_size":[0.25,0.5]},"west":{"uv":[10,45],"uv_size":[0.5,0.5]},"up":{"uv":[47,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,47.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.5613,2.8328,-0.0921],"size":[0.2015,0.4974,0.5406],"pivot":[-2.5613,2.8328,0.4485],"rotation":[11.829,8.852,-0.3696],"uv":{"north":{"uv":[48,56],"uv_size":[0.25,0.5]},"east":{"uv":[45,10],"uv_size":[0.5,0.5]},"south":{"uv":[56,48],"uv_size":[0.25,0.5]},"west":{"uv":[11,45],"uv_size":[0.5,0.5]},"up":{"uv":[49,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,49.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.0402,2.8328,-0.0921],"size":[0.2015,0.4974,0.5406],"pivot":[-1.8387,2.8328,0.4485],"rotation":[11.829,-8.852,0.3696],"uv":{"north":{"uv":[50,56],"uv_size":[0.25,0.5]},"east":{"uv":[45,11],"uv_size":[0.5,0.5]},"south":{"uv":[56,50],"uv_size":[0.25,0.5]},"west":{"uv":[12,45],"uv_size":[0.5,0.5]},"up":{"uv":[51,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,51.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.0402,2.3354,-0.0921],"size":[0.2015,0.4974,0.5406],"pivot":[-1.8387,2.8328,0.4485],"rotation":[0,-8.8142,0],"uv":{"north":{"uv":[52,56],"uv_size":[0.25,0.5]},"east":{"uv":[45,12],"uv_size":[0.5,0.5]},"south":{"uv":[56,52],"uv_size":[0.25,0.5]},"west":{"uv":[13,45],"uv_size":[0.5,0.5]},"up":{"uv":[53,56],"uv_size":[0.25,0.5]},"down":{"uv":[56,53.5],"uv_size":[0.25,-0.5]}}}]},{"name":"group13","parent":"angel","pivot":[-2.2,6.8142,0.2954],"cubes":[{"origin":[-2.3591,-9.6354,-0.5356],"size":[0.0195,8.7247,1.1193],"pivot":[-2.3591,-2.5264,0.5836],"rotation":[0.6932,-7.3,-0.0939],"uv":{"north":{"uv":[10,12],"uv_size":[0.25,8]},"east":{"uv":[4,0],"uv_size":[1,8]},"south":{"uv":[11,12],"uv_size":[0.25,8]},"west":{"uv":[5,0],"uv_size":[1,8]},"up":{"uv":[45,13],"uv_size":[0.25,1]},"down":{"uv":[14,46],"uv_size":[0.25,-1]}}},{"origin":[-2.0604,-9.6354,-0.5356],"size":[0.0195,8.7247,1.1193],"pivot":[-2.0409,-2.5264,0.5836],"rotation":[0.6932,7.3,0.0939],"uv":{"north":{"uv":[13,0],"uv_size":[0.25,8]},"east":{"uv":[6,0],"uv_size":[1,8]},"south":{"uv":[13,8],"uv_size":[0.25,8]},"west":{"uv":[7,0],"uv_size":[1,8]},"up":{"uv":[45,14],"uv_size":[0.25,1]},"down":{"uv":[15,46],"uv_size":[0.25,-1]}}},{"origin":[-2.2054,-9.8904,-0.5253],"size":[0.0127,0.2424,1.1193],"pivot":[-2.2054,-9.648,-0.5253],"rotation":[3.19,0,-0.0635],"uv":{"north":{"uv":[75,0],"uv_size":[0.25,0.25]},"east":{"uv":[45,15],"uv_size":[1,0.25]},"south":{"uv":[1,75],"uv_size":[0.25,0.25]},"west":{"uv":[16,45],"uv_size":[1,0.25]},"up":{"uv":[45,16],"uv_size":[0.25,1]},"down":{"uv":[17,46],"uv_size":[0.25,-1]}}},{"origin":[-2.2051,-10.2794,-0.5119],"size":[0.0127,0.3894,1.1193],"pivot":[-2.2051,-9.89,-0.5119],"rotation":[21.19,0,-0.0635],"uv":{"north":{"uv":[75,1],"uv_size":[0.25,0.25]},"east":{"uv":[45,17],"uv_size":[1,0.25]},"south":{"uv":[2,75],"uv_size":[0.25,0.25]},"west":{"uv":[18,45],"uv_size":[1,0.25]},"up":{"uv":[45,18],"uv_size":[0.25,1]},"down":{"uv":[19,46],"uv_size":[0.25,-1]}}},{"origin":[-2.2076,-10.2794,-0.5119],"size":[0.0127,0.3894,1.1193],"pivot":[-2.1949,-9.89,-0.5119],"rotation":[21.19,0,0.0635],"uv":{"north":{"uv":[75,2],"uv_size":[0.25,0.25]},"east":{"uv":[45,19],"uv_size":[1,0.25]},"south":{"uv":[3,75],"uv_size":[0.25,0.25]},"west":{"uv":[20,45],"uv_size":[1,0.25]},"up":{"uv":[45,20],"uv_size":[0.25,1]},"down":{"uv":[21,46],"uv_size":[0.25,-1]}}},{"origin":[-2.2074,-9.8904,-0.5253],"size":[0.0127,0.2424,1.1193],"pivot":[-2.1947,-9.648,-0.5253],"rotation":[3.19,0,0.0635],"uv":{"north":{"uv":[75,3],"uv_size":[0.25,0.25]},"east":{"uv":[45,21],"uv_size":[1,0.25]},"south":{"uv":[4,75],"uv_size":[0.25,0.25]},"west":{"uv":[22,45],"uv_size":[1,0.25]},"up":{"uv":[45,22],"uv_size":[0.25,1]},"down":{"uv":[23,46],"uv_size":[0.25,-1]}}},{"origin":[-2.2047,-10.6473,-0.3711],"size":[0.0127,0.3942,1.1193],"pivot":[-2.2047,-10.2531,-0.3711],"rotation":[29.19,0,-0.0635],"uv":{"north":{"uv":[75,4],"uv_size":[0.25,0.25]},"east":{"uv":[45,23],"uv_size":[1,0.25]},"south":{"uv":[5,75],"uv_size":[0.25,0.25]},"west":{"uv":[24,45],"uv_size":[1,0.25]},"up":{"uv":[45,24],"uv_size":[0.25,1]},"down":{"uv":[25,46],"uv_size":[0.25,-1]}}},{"origin":[-2.2081,-10.6473,-0.3711],"size":[0.0127,0.3942,1.1193],"pivot":[-2.1953,-10.2531,-0.3711],"rotation":[29.19,0,0.0635],"uv":{"north":{"uv":[75,5],"uv_size":[0.25,0.25]},"east":{"uv":[45,25],"uv_size":[1,0.25]},"south":{"uv":[6,75],"uv_size":[0.25,0.25]},"west":{"uv":[26,45],"uv_size":[1,0.25]},"up":{"uv":[45,26],"uv_size":[0.25,1]},"down":{"uv":[27,46],"uv_size":[0.25,-1]}}},{"origin":[-2.2043,-11.2067,-0.1788],"size":[0.0127,0.6094,0.7086],"pivot":[-2.2043,-10.5972,-0.1788],"rotation":[36.94,0,-0.0635],"uv":{"north":{"uv":[54,56],"uv_size":[0.25,0.5]},"east":{"uv":[11,40],"uv_size":[0.75,0.5]},"south":{"uv":[56,54],"uv_size":[0.25,0.5]},"west":{"uv":[40,11],"uv_size":[0.75,0.5]},"up":{"uv":[49,41],"uv_size":[0.25,0.75]},"down":{"uv":[42,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.2084,-11.2067,-0.1788],"size":[0.0127,0.6094,0.7086],"pivot":[-2.1957,-10.5972,-0.1788],"rotation":[36.94,0,0.0635],"uv":{"north":{"uv":[55,56],"uv_size":[0.25,0.5]},"east":{"uv":[12,40],"uv_size":[0.75,0.5]},"south":{"uv":[56,55],"uv_size":[0.25,0.5]},"west":{"uv":[40,12],"uv_size":[0.75,0.5]},"up":{"uv":[49,42],"uv_size":[0.25,0.75]},"down":{"uv":[43,49.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.2037,-11.6691,0.1874],"size":[0.0127,0.5847,0.2376],"pivot":[-2.2037,-11.0844,0.1874],"rotation":[42.19,0,-0.0635],"uv":{"north":{"uv":[56,56],"uv_size":[0.25,0.5]},"east":{"uv":[0,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,0],"uv_size":[0.25,0.5]},"west":{"uv":[1,57],"uv_size":[0.25,0.5]},"up":{"uv":[75,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.209,-11.6691,0.1874],"size":[0.0127,0.5847,0.2376],"pivot":[-2.1963,-11.0844,0.1874],"rotation":[42.19,0,0.0635],"uv":{"north":{"uv":[57,1],"uv_size":[0.25,0.5]},"east":{"uv":[2,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,2],"uv_size":[0.25,0.5]},"west":{"uv":[3,57],"uv_size":[0.25,0.5]},"up":{"uv":[75,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3567,-9.9674,0.4709],"size":[0.0126,0.3122,0.1862],"pivot":[-2.3567,-9.6552,0.6571],"rotation":[14.9454,-9.269,-6.7401],"uv":{"north":{"uv":[75,8],"uv_size":[0.25,0.25]},"east":{"uv":[9,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,9],"uv_size":[0.25,0.25]},"west":{"uv":[10,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.5117,-9.5943,0.6233],"size":[0.0744,0.1827,0.0114],"pivot":[-2.4373,-9.9109,0.6233],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[75,11],"uv_size":[0.25,0.25]},"east":{"uv":[12,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.5167,-9.4651,0.6148],"size":[0.0744,0.0591,0.0288],"pivot":[-2.4423,-9.9052,0.6148],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[75,14],"uv_size":[0.25,0.25]},"east":{"uv":[15,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,15],"uv_size":[0.25,0.25]},"west":{"uv":[16,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.5314,-9.5164,0.5894],"size":[0.0744,0.0491,0.0245],"pivot":[-2.457,-9.9566,0.5894],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[75,17],"uv_size":[0.25,0.25]},"east":{"uv":[18,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,18],"uv_size":[0.25,0.25]},"west":{"uv":[19,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3858,-9.6576,0.8377],"size":[0.0721,0.2792,0.0335],"pivot":[-2.3137,-9.4772,0.8377],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[75,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.267,-9.4151,0.9575],"size":[0.0224,0.1042,0.0335],"pivot":[-2.2446,-9.2347,0.9575],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[75,23],"uv_size":[0.25,0.25]},"east":{"uv":[24,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,24],"uv_size":[0.25,0.25]},"west":{"uv":[25,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2468,-9.4261,0.9728],"size":[0.0143,0.06,0.0335],"pivot":[-2.2325,-9.2457,0.9728],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[75,26],"uv_size":[0.25,0.25]},"east":{"uv":[27,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,27],"uv_size":[0.25,0.25]},"west":{"uv":[28,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2404,-9.4331,0.9826],"size":[0.0157,0.0309,0.0335],"pivot":[-2.2247,-9.2527,0.9826],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[75,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3549,-9.65,0.8868],"size":[0.0801,0.0773,0.0335],"pivot":[-2.2748,-9.5126,0.8868],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[75,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2707,-9.5828,0.92],"size":[0.0151,0.1311,0.0335],"pivot":[-2.2556,-9.4455,0.92],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[75,35],"uv_size":[0.25,0.25]},"east":{"uv":[36,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,36],"uv_size":[0.25,0.25]},"west":{"uv":[37,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2907,-9.5902,0.9303],"size":[0.0432,0.0455,0.0335],"pivot":[-2.2475,-9.4529,0.9303],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[75,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,39],"uv_size":[0.25,0.25]},"west":{"uv":[40,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2593,-9.5497,0.9464],"size":[0.0211,0.0457,0.0335],"pivot":[-2.2382,-9.4204,0.9464],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[75,41],"uv_size":[0.25,0.25]},"east":{"uv":[42,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,42],"uv_size":[0.25,0.25]},"west":{"uv":[43,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,43],"uv_size":[0.25,0.25]},"down":{"uv":[44,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3881,-9.4772,0.8377],"size":[0.0744,0.2496,0.1032],"pivot":[-2.3137,-9.4772,0.8377],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[75,44],"uv_size":[0.25,0.25]},"east":{"uv":[45,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,45],"uv_size":[0.25,0.25]},"west":{"uv":[46,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,46],"uv_size":[0.25,0.25]},"down":{"uv":[47,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3715,-9.3579,0.8675],"size":[0.0744,0.1486,0.056],"pivot":[-2.2972,-9.2093,0.8675],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[75,47],"uv_size":[0.25,0.25]},"east":{"uv":[48,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,48],"uv_size":[0.25,0.25]},"west":{"uv":[49,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,49],"uv_size":[0.25,0.25]},"down":{"uv":[50,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3584,-9.2597,0.7603],"size":[0.0205,6.0549,0.2117],"pivot":[-2.3584,-9.6339,0.7603],"rotation":[-0.2894,30.2497,-0.1792],"uv":{"north":{"uv":[23,12],"uv_size":[0.25,5.5]},"east":{"uv":[15,23],"uv_size":[0.25,5.5]},"south":{"uv":[17,23],"uv_size":[0.25,5.5]},"west":{"uv":[18,23],"uv_size":[0.25,5.5]},"up":{"uv":[75,50],"uv_size":[0.25,0.25]},"down":{"uv":[51,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0621,-9.2597,0.7603],"size":[0.0205,6.0549,0.2117],"pivot":[-2.0416,-9.6339,0.7603],"rotation":[-0.2894,-30.2497,0.1792],"uv":{"north":{"uv":[23,18],"uv_size":[0.25,5.5]},"east":{"uv":[19,23],"uv_size":[0.25,5.5]},"south":{"uv":[24,0],"uv_size":[0.25,5.5]},"west":{"uv":[24,6],"uv_size":[0.25,5.5]},"up":{"uv":[75,51],"uv_size":[0.25,0.25]},"down":{"uv":[52,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0578,-3.2197,0.9166],"size":[0.0205,3.8421,0.178],"pivot":[-2.0373,-1.6819,0.9166],"rotation":[-0.3475,-43.9995,0.2748],"uv":{"north":{"uv":[15,29],"uv_size":[0.25,3.5]},"east":{"uv":[29,16],"uv_size":[0.25,3.5]},"south":{"uv":[17,29],"uv_size":[0.25,3.5]},"west":{"uv":[18,29],"uv_size":[0.25,3.5]},"up":{"uv":[75,52],"uv_size":[0.25,0.25]},"down":{"uv":[53,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3627,-3.2197,0.9166],"size":[0.0205,3.8421,0.178],"pivot":[-2.3627,-1.6819,0.9166],"rotation":[-0.3475,43.9995,-0.2748],"uv":{"north":{"uv":[19,29],"uv_size":[0.25,3.5]},"east":{"uv":[29,20],"uv_size":[0.25,3.5]},"south":{"uv":[29,24],"uv_size":[0.25,3.5]},"west":{"uv":[29,28],"uv_size":[0.25,3.5]},"up":{"uv":[75,53],"uv_size":[0.25,0.25]},"down":{"uv":[54,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3439,0.565,0.8844],"size":[0.1838,0.057,0.1702],"pivot":[-2.1618,0.6219,1.0546],"rotation":[-18.8475,-43.9995,0.2748],"uv":{"north":{"uv":[75,54],"uv_size":[0.25,0.25]},"east":{"uv":[55,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,55],"uv_size":[0.25,0.25]},"west":{"uv":[56,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,56],"uv_size":[0.25,0.25]},"down":{"uv":[57,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3439,0.565,0.8844],"size":[0.1838,0.057,0.1702],"pivot":[-2.1618,0.6219,1.0546],"rotation":[-31.8378,-36.7415,20.1736],"uv":{"north":{"uv":[75,57],"uv_size":[0.25,0.25]},"east":{"uv":[58,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,58],"uv_size":[0.25,0.25]},"west":{"uv":[59,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,59],"uv_size":[0.25,0.25]},"down":{"uv":[60,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2399,0.565,0.8844],"size":[0.1838,0.057,0.1702],"pivot":[-2.2382,0.6219,1.0546],"rotation":[-31.8378,36.7415,-20.1736],"uv":{"north":{"uv":[75,60],"uv_size":[0.25,0.25]},"east":{"uv":[61,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,61],"uv_size":[0.25,0.25]},"west":{"uv":[62,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,62],"uv_size":[0.25,0.25]},"down":{"uv":[63,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2399,0.565,0.8844],"size":[0.1838,0.057,0.1702],"pivot":[-2.2382,0.6219,1.0546],"rotation":[-18.8475,43.9995,-0.2748],"uv":{"north":{"uv":[75,63],"uv_size":[0.25,0.25]},"east":{"uv":[64,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,64],"uv_size":[0.25,0.25]},"west":{"uv":[65,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,65],"uv_size":[0.25,0.25]},"down":{"uv":[66,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1824,-3.2202,1.038],"size":[0.0205,3.8421,0.0763],"pivot":[-2.1618,-3.2202,1.038],"rotation":[-90,-89.7526,90],"uv":{"north":{"uv":[30,0],"uv_size":[0.25,3.5]},"east":{"uv":[30,4],"uv_size":[0.25,3.5]},"south":{"uv":[30,8],"uv_size":[0.25,3.5]},"west":{"uv":[30,12],"uv_size":[0.25,3.5]},"up":{"uv":[75,66],"uv_size":[0.25,0.25]},"down":{"uv":[67,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2964,0.4824,0.9783],"size":[0.0582,0.1395,0.0763],"pivot":[-2.2382,0.6219,1.0546],"rotation":[-90,-65.2526,90],"uv":{"north":{"uv":[75,67],"uv_size":[0.25,0.25]},"east":{"uv":[68,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,68],"uv_size":[0.25,0.25]},"west":{"uv":[69,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,69],"uv_size":[0.25,0.25]},"down":{"uv":[70,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.765,-3.3973,0.7158],"size":[0.0205,0.3125,0.0763],"pivot":[-2.1618,-2.8924,0.7158],"rotation":[-90,-69.2526,90],"uv":{"north":{"uv":[75,70],"uv_size":[0.25,0.25]},"east":{"uv":[71,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,71],"uv_size":[0.25,0.25]},"west":{"uv":[72,75],"uv_size":[0.25,0.25]},"up":{"uv":[75,72],"uv_size":[0.25,0.25]},"down":{"uv":[73,75.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2587,-3.5327,1.038],"size":[0.0205,0.3125,0.1724],"pivot":[-2.2382,-3.2202,1.038],"rotation":[-151.4366,-42.1916,159.9167],"uv":{"north":{"uv":[75,73],"uv_size":[0.25,0.25]},"east":{"uv":[74,75],"uv_size":[0.25,0.25]},"south":{"uv":[75,74],"uv_size":[0.25,0.25]},"west":{"uv":[75,75],"uv_size":[0.25,0.25]},"up":{"uv":[0,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1618,-3.5327,1.038],"size":[0.0205,0.3125,0.1724],"pivot":[-2.1618,-3.2202,1.038],"rotation":[-151.4366,42.1916,-159.9167],"uv":{"north":{"uv":[1,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[-3.0809,-9.5279,0.9321],"size":[0.0205,0.2733,0.0569],"pivot":[-3.0809,-15.2193,-0.5086],"rotation":[-0.2894,30.2497,-0.1792],"uv":{"north":{"uv":[4,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[-3.0807,-9.6059,0.9309],"size":[0.0205,0.078,0.0086],"pivot":[-3.0807,-15.4926,-0.5098],"rotation":[-0.2894,30.2497,-0.1792],"uv":{"north":{"uv":[7,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,7],"uv_size":[0.25,0.25]},"south":{"uv":[8,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,8],"uv_size":[0.25,0.25]},"up":{"uv":[9,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[-3.0764,-9.5903,0.9383],"size":[0.0205,0.0624,0.0121],"pivot":[-3.0764,-15.4927,-0.5024],"rotation":[-0.2894,30.2497,-0.1792],"uv":{"north":{"uv":[10,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,10],"uv_size":[0.25,0.25]},"south":{"uv":[11,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,11],"uv_size":[0.25,0.25]},"up":{"uv":[12,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0863,-9.4772,0.8377],"size":[0.0744,0.2496,0.1032],"pivot":[-2.0863,-9.4772,0.8377],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[13,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,13],"uv_size":[0.25,0.25]},"south":{"uv":[14,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,14],"uv_size":[0.25,0.25]},"up":{"uv":[15,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9576,-9.4651,0.6148],"size":[0.0744,0.0591,0.0288],"pivot":[-1.9576,-9.9052,0.6148],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[16,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9627,-9.5943,0.6233],"size":[0.0744,0.1827,0.0114],"pivot":[-1.9627,-9.9109,0.6233],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[19,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.3397,-9.5279,0.9321],"size":[0.0205,0.2733,0.0569],"pivot":[-1.3191,-15.2193,-0.5086],"rotation":[-0.2894,-30.2497,0.1792],"uv":{"north":{"uv":[22,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.943,-9.5164,0.5894],"size":[0.0744,0.0491,0.0245],"pivot":[-1.943,-9.9566,0.5894],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[25,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.3398,-9.6059,0.9309],"size":[0.0205,0.078,0.0086],"pivot":[-1.3193,-15.4926,-0.5098],"rotation":[-0.2894,-30.2497,0.1792],"uv":{"north":{"uv":[28,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.3441,-9.5903,0.9383],"size":[0.0205,0.0624,0.0121],"pivot":[-1.3236,-15.4927,-0.5024],"rotation":[-0.2894,-30.2497,0.1792],"uv":{"north":{"uv":[31,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1028,-9.3579,0.8675],"size":[0.0744,0.1486,0.056],"pivot":[-2.1028,-9.2093,0.8675],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[34,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1816,-10.0415,0.9919],"size":[0.0205,0.7812,0.028],"pivot":[-2.161,-9.2604,0.9448],"rotation":[-89.9999,-85.2501,89.9999],"uv":{"north":{"uv":[49,43],"uv_size":[0.25,0.75]},"east":{"uv":[44,49],"uv_size":[0.25,0.75]},"south":{"uv":[49,44],"uv_size":[0.25,0.75]},"west":{"uv":[45,49],"uv_size":[0.25,0.75]},"up":{"uv":[37,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1816,-10.82,0.9272],"size":[0.0205,0.7812,0.0137],"pivot":[-2.161,-10.0389,0.8801],"rotation":[-89.9999,-85.2501,89.9999],"uv":{"north":{"uv":[49,45],"uv_size":[0.25,0.75]},"east":{"uv":[46,49],"uv_size":[0.25,0.75]},"south":{"uv":[49,46],"uv_size":[0.25,0.75]},"west":{"uv":[47,49],"uv_size":[0.25,0.75]},"up":{"uv":[38,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,38.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1652,-11.6396,0.9919],"size":[0.0205,2.3793,0.0163],"pivot":[-2.1447,-9.2604,0.9448],"rotation":[-89.9999,-85.2501,89.9999],"uv":{"north":{"uv":[35,22],"uv_size":[0.25,2.25]},"east":{"uv":[35,25],"uv_size":[0.25,2.25]},"south":{"uv":[26,35],"uv_size":[0.25,2.25]},"west":{"uv":[28,35],"uv_size":[0.25,2.25]},"up":{"uv":[39,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2287,-11.6315,0.7314],"size":[0.0205,2.3793,0.0163],"pivot":[-2.2082,-11.6315,0.7478],"rotation":[-91.0535,-85.2501,89.9999],"uv":{"north":{"uv":[35,28],"uv_size":[0.25,2.25]},"east":{"uv":[29,35],"uv_size":[0.25,2.25]},"south":{"uv":[30,35],"uv_size":[0.25,2.25]},"west":{"uv":[31,35],"uv_size":[0.25,2.25]},"up":{"uv":[40,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2724,-11.4219,0.9284],"size":[0.0205,2.1612,0.0163],"pivot":[-2.2519,-9.2608,0.9447],"rotation":[-7.8148,-52.49,5.1561],"uv":{"north":{"uv":[22,37],"uv_size":[0.25,2]},"east":{"uv":[37,22],"uv_size":[0.25,2]},"south":{"uv":[23,37],"uv_size":[0.25,2]},"west":{"uv":[24,37],"uv_size":[0.25,2]},"up":{"uv":[41,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0493,-11.4419,0.3936],"size":[0.0166,0.0525,0.0163],"pivot":[-2.477,-11.3895,0.4099],"rotation":[-7.9506,-53.2329,5.3264],"uv":{"north":{"uv":[42,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,42],"uv_size":[0.25,0.25]},"south":{"uv":[43,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,43],"uv_size":[0.25,0.25]},"up":{"uv":[44,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0434,-11.4942,0.3892],"size":[0.0117,0.0525,0.0163],"pivot":[-2.476,-11.4417,0.4056],"rotation":[-7.9506,-53.2329,5.3264],"uv":{"north":{"uv":[45,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,45],"uv_size":[0.25,0.25]},"south":{"uv":[46,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,46],"uv_size":[0.25,0.25]},"up":{"uv":[47,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0376,-11.5589,0.3849],"size":[0.0068,0.0649,0.0163],"pivot":[-2.4751,-11.494,0.4012],"rotation":[-7.9506,-53.2329,5.3264],"uv":{"north":{"uv":[48,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,48],"uv_size":[0.25,0.25]},"south":{"uv":[49,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,49],"uv_size":[0.25,0.25]},"up":{"uv":[50,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3897,-10.0946,0.912],"size":[0.1256,0.458,0.0163],"pivot":[-2.2641,-9.2597,0.9283],"rotation":[-7.8148,-52.49,5.1561],"uv":{"north":{"uv":[57,3],"uv_size":[0.25,0.5]},"east":{"uv":[4,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,4],"uv_size":[0.25,0.5]},"west":{"uv":[5,57],"uv_size":[0.25,0.5]},"up":{"uv":[51,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3087,-10.6781,0.8741],"size":[0.053,0.5851,0.0163],"pivot":[-2.2557,-9.716,0.8904],"rotation":[-7.8148,-52.49,5.1561],"uv":{"north":{"uv":[57,5],"uv_size":[0.25,0.5]},"east":{"uv":[6,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,6],"uv_size":[0.25,0.5]},"west":{"uv":[7,57],"uv_size":[0.25,0.5]},"up":{"uv":[52,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1443,-10.6781,0.8741],"size":[0.053,0.5851,0.0163],"pivot":[-2.1443,-9.716,0.8904],"rotation":[-7.8148,52.49,-5.1561],"uv":{"north":{"uv":[57,7],"uv_size":[0.25,0.5]},"east":{"uv":[8,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,8],"uv_size":[0.25,0.5]},"west":{"uv":[9,57],"uv_size":[0.25,0.5]},"up":{"uv":[53,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1359,-10.0946,0.912],"size":[0.1256,0.458,0.0163],"pivot":[-2.1359,-9.2597,0.9283],"rotation":[-7.8148,52.49,-5.1561],"uv":{"north":{"uv":[57,9],"uv_size":[0.25,0.5]},"east":{"uv":[10,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,10],"uv_size":[0.25,0.5]},"west":{"uv":[11,57],"uv_size":[0.25,0.5]},"up":{"uv":[54,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1481,-11.4219,0.9284],"size":[0.0205,2.1612,0.0163],"pivot":[-2.1481,-9.2608,0.9447],"rotation":[-7.8148,52.49,-5.1561],"uv":{"north":{"uv":[37,24],"uv_size":[0.25,2]},"east":{"uv":[25,37],"uv_size":[0.25,2]},"south":{"uv":[37,26],"uv_size":[0.25,2]},"west":{"uv":[37,28],"uv_size":[0.25,2]},"up":{"uv":[55,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,55.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0863,-9.6576,0.8377],"size":[0.0721,0.2792,0.0335],"pivot":[-2.0863,-9.4772,0.8377],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[56,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,56],"uv_size":[0.25,0.25]},"south":{"uv":[57,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,57],"uv_size":[0.25,0.25]},"up":{"uv":[58,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1525,-9.5902,0.9303],"size":[0.0432,0.0455,0.0335],"pivot":[-2.1525,-9.4529,0.9303],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[59,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,59],"uv_size":[0.25,0.25]},"south":{"uv":[60,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,60],"uv_size":[0.25,0.25]},"up":{"uv":[61,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1444,-9.5828,0.92],"size":[0.0151,0.1311,0.0335],"pivot":[-2.1444,-9.4455,0.92],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[62,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,62],"uv_size":[0.25,0.25]},"south":{"uv":[63,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,63],"uv_size":[0.25,0.25]},"up":{"uv":[64,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,64.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1618,-9.5497,0.9464],"size":[0.0211,0.0457,0.0335],"pivot":[-2.1618,-9.4204,0.9464],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[65,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,65],"uv_size":[0.25,0.25]},"south":{"uv":[66,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,66],"uv_size":[0.25,0.25]},"up":{"uv":[67,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1252,-9.65,0.8868],"size":[0.0801,0.0773,0.0335],"pivot":[-2.1252,-9.5126,0.8868],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[68,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,68],"uv_size":[0.25,0.25]},"south":{"uv":[69,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,69],"uv_size":[0.25,0.25]},"up":{"uv":[70,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,70.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1554,-9.4151,0.9575],"size":[0.0224,0.1042,0.0335],"pivot":[-2.1554,-9.2347,0.9575],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[71,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,71],"uv_size":[0.25,0.25]},"south":{"uv":[72,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,72],"uv_size":[0.25,0.25]},"up":{"uv":[73,76],"uv_size":[0.25,0.25]},"down":{"uv":[76,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1675,-9.4261,0.9728],"size":[0.0143,0.06,0.0335],"pivot":[-2.1675,-9.2457,0.9728],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[74,76],"uv_size":[0.25,0.25]},"east":{"uv":[76,74],"uv_size":[0.25,0.25]},"south":{"uv":[75,76],"uv_size":[0.25,0.25]},"west":{"uv":[76,75],"uv_size":[0.25,0.25]},"up":{"uv":[76,76],"uv_size":[0.25,0.25]},"down":{"uv":[0,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1753,-9.4331,0.9826],"size":[0.0157,0.0309,0.0335],"pivot":[-2.1753,-9.2527,0.9826],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[77,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,77],"uv_size":[0.25,0.25]},"south":{"uv":[77,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,77],"uv_size":[0.25,0.25]},"up":{"uv":[77,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3673,-11.4419,0.3936],"size":[0.0166,0.0525,0.0163],"pivot":[-1.923,-11.3895,0.4099],"rotation":[-7.9506,53.2329,-5.3264],"uv":{"north":{"uv":[77,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,77],"uv_size":[0.25,0.25]},"south":{"uv":[77,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,77],"uv_size":[0.25,0.25]},"up":{"uv":[77,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3683,-11.4942,0.3892],"size":[0.0117,0.0525,0.0163],"pivot":[-1.924,-11.4417,0.4056],"rotation":[-7.9506,53.2329,-5.3264],"uv":{"north":{"uv":[77,6],"uv_size":[0.25,0.25]},"east":{"uv":[7,77],"uv_size":[0.25,0.25]},"south":{"uv":[77,7],"uv_size":[0.25,0.25]},"west":{"uv":[8,77],"uv_size":[0.25,0.25]},"up":{"uv":[77,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3693,-11.5589,0.3849],"size":[0.0068,0.0649,0.0163],"pivot":[-1.9249,-11.494,0.4012],"rotation":[-7.9506,53.2329,-5.3264],"uv":{"north":{"uv":[77,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,77],"uv_size":[0.25,0.25]},"south":{"uv":[77,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,77],"uv_size":[0.25,0.25]},"up":{"uv":[77,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2389,-10.0415,0.9919],"size":[0.0205,0.7812,0.028],"pivot":[-2.2389,-9.2604,0.9448],"rotation":[-89.9999,85.2501,-89.9999],"uv":{"north":{"uv":[49,47],"uv_size":[0.25,0.75]},"east":{"uv":[48,49],"uv_size":[0.25,0.75]},"south":{"uv":[49,48],"uv_size":[0.25,0.75]},"west":{"uv":[49,49],"uv_size":[0.25,0.75]},"up":{"uv":[77,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1918,-11.6315,0.7314],"size":[0.0205,2.3793,0.0163],"pivot":[-2.1918,-11.6315,0.7478],"rotation":[-91.0535,85.2501,-89.9999],"uv":{"north":{"uv":[35,31],"uv_size":[0.25,2.25]},"east":{"uv":[32,35],"uv_size":[0.25,2.25]},"south":{"uv":[33,35],"uv_size":[0.25,2.25]},"west":{"uv":[34,35],"uv_size":[0.25,2.25]},"up":{"uv":[77,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2389,-10.82,0.9272],"size":[0.0205,0.7812,0.0137],"pivot":[-2.2389,-10.0389,0.8801],"rotation":[-89.9999,85.2501,-89.9999],"uv":{"north":{"uv":[0,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,0],"uv_size":[0.25,0.75]},"south":{"uv":[1,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,1],"uv_size":[0.25,0.75]},"up":{"uv":[77,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3617,-2.3983,0.8299],"size":[0.3235,0.8046,0.2482],"inflate":-0.001,"pivot":[-2.3549,-3.2197,0.9099],"rotation":[17.5,0,0],"uv":{"north":{"uv":[2,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,2],"uv_size":[0.25,0.75]},"south":{"uv":[3,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,3],"uv_size":[0.25,0.75]},"up":{"uv":[77,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3618,-2.4605,0.3381],"size":[0.2092,0.8048,0.2484],"pivot":[-2.3618,-2.4605,0.5865],"rotation":[18.0778,-14.2906,-4.6066],"uv":{"north":{"uv":[4,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,4],"uv_size":[0.25,0.75]},"south":{"uv":[5,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,5],"uv_size":[0.25,0.75]},"up":{"uv":[77,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3618,-1.6182,0.333],"size":[0.3237,0.2931,0.2484],"pivot":[-2.3549,-1.6182,0.5814],"rotation":[29.5,0,0],"uv":{"north":{"uv":[77,17],"uv_size":[0.25,0.25]},"east":{"uv":[18,77],"uv_size":[0.25,0.25]},"south":{"uv":[77,18],"uv_size":[0.25,0.25]},"west":{"uv":[19,77],"uv_size":[0.25,0.25]},"up":{"uv":[77,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3618,-1.7406,0.0037],"size":[0.1513,0.2931,0.3615],"pivot":[-2.3618,-1.7406,0.3652],"rotation":[30.3588,-13.0184,-7.5164],"uv":{"north":{"uv":[77,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,77],"uv_size":[0.25,0.25]},"south":{"uv":[77,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,77],"uv_size":[0.25,0.25]},"up":{"uv":[77,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1895,-1.7406,0.0037],"size":[0.1513,0.2931,0.3615],"pivot":[-2.0382,-1.7406,0.3652],"rotation":[30.3588,13.0184,7.5164],"uv":{"north":{"uv":[77,23],"uv_size":[0.25,0.25]},"east":{"uv":[24,77],"uv_size":[0.25,0.25]},"south":{"uv":[77,24],"uv_size":[0.25,0.25]},"west":{"uv":[25,77],"uv_size":[0.25,0.25]},"up":{"uv":[77,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2474,-2.4605,0.3381],"size":[0.2092,0.8048,0.2484],"pivot":[-2.0382,-2.4605,0.5865],"rotation":[18.0778,14.2906,4.6066],"uv":{"north":{"uv":[6,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,6],"uv_size":[0.25,0.75]},"south":{"uv":[7,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,7],"uv_size":[0.25,0.75]},"up":{"uv":[77,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3619,-1.3651,0.1887],"size":[0.1134,0.9844,0.2484],"pivot":[-2.3653,-1.3631,0.4371],"rotation":[28.9663,-1.4768,2.5782],"uv":{"north":{"uv":[45,27],"uv_size":[0.25,1]},"east":{"uv":[28,45],"uv_size":[0.25,1]},"south":{"uv":[45,28],"uv_size":[0.25,1]},"west":{"uv":[29,45],"uv_size":[0.25,1]},"up":{"uv":[77,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3656,-1.0899,0.0863],"size":[0.1134,0.5738,0.3023],"pivot":[-2.3608,-1.0899,0.0863],"rotation":[28.9663,-1.4768,2.5782],"uv":{"north":{"uv":[57,11],"uv_size":[0.25,0.5]},"east":{"uv":[12,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,12],"uv_size":[0.25,0.5]},"west":{"uv":[13,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3656,-1.6635,0.0862],"size":[0.1134,0.5738,0.3023],"pivot":[-2.3656,-1.0897,0.0862],"rotation":[36.4663,-1.4768,2.5782],"uv":{"north":{"uv":[57,13],"uv_size":[0.25,0.5]},"east":{"uv":[14,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,14],"uv_size":[0.25,0.5]},"west":{"uv":[15,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1183,-2.0567,0.4271],"size":[0.1134,0.5064,0.208],"pivot":[-2.0049,-1.5503,0.4271],"rotation":[48.9663,1.4768,-2.5782],"uv":{"north":{"uv":[57,15],"uv_size":[0.25,0.5]},"east":{"uv":[16,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,16],"uv_size":[0.25,0.5]},"west":{"uv":[17,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3951,-2.0567,0.4271],"size":[0.1134,0.5064,0.208],"pivot":[-2.3951,-1.5503,0.4271],"rotation":[48.9663,-1.4768,2.5782],"uv":{"north":{"uv":[57,17],"uv_size":[0.25,0.5]},"east":{"uv":[18,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,18],"uv_size":[0.25,0.5]},"west":{"uv":[19,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1478,-1.6635,0.0862],"size":[0.1134,0.5738,0.3023],"pivot":[-2.0344,-1.0897,0.0862],"rotation":[36.4663,1.4768,-2.5782],"uv":{"north":{"uv":[57,19],"uv_size":[0.25,0.5]},"east":{"uv":[20,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,20],"uv_size":[0.25,0.5]},"west":{"uv":[21,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3359,-0.5888,-0.1915],"size":[0.1134,0.6478,0.3023],"pivot":[-2.331,-0.5888,-0.1915],"rotation":[20.9959,-0.9396,1.1774],"uv":{"north":{"uv":[57,21],"uv_size":[0.25,0.5]},"east":{"uv":[22,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,22],"uv_size":[0.25,0.5]},"west":{"uv":[23,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3197,0.0158,-0.4236],"size":[0.1134,0.6478,0.3023],"pivot":[-2.3148,0.0158,-0.4236],"rotation":[9.9959,-0.9396,1.1774],"uv":{"north":{"uv":[57,23],"uv_size":[0.25,0.5]},"east":{"uv":[24,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,24],"uv_size":[0.25,0.5]},"west":{"uv":[25,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3047,0.6536,-0.536],"size":[0.1403,0.6478,0.3023],"pivot":[-2.2999,0.6536,-0.536],"rotation":[2.0349,-0.8517,-1.3214],"uv":{"north":{"uv":[57,25],"uv_size":[0.25,0.5]},"east":{"uv":[26,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,26],"uv_size":[0.25,0.5]},"west":{"uv":[27,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.47,0.2875,-0.2742],"size":[0.2211,0.6478,0.2445],"pivot":[-2.47,0.9353,-0.2742],"rotation":[8.2887,-0.8505,-1.5714],"uv":{"north":{"uv":[57,27],"uv_size":[0.25,0.5]},"east":{"uv":[28,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,28],"uv_size":[0.25,0.5]},"west":{"uv":[29,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.47,0.2674,-0.2717],"size":[0.2185,0.699,0.242],"pivot":[-2.47,0.9353,-0.2742],"rotation":[11.474,43.5627,6.5156],"uv":{"north":{"uv":[8,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,8],"uv_size":[0.25,0.75]},"south":{"uv":[9,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,9],"uv_size":[0.25,0.75]},"up":{"uv":[77,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.4538,-0.359,-0.18],"size":[0.221,0.6535,0.2437],"pivot":[-2.4538,0.2945,-0.1809],"rotation":[15.7887,-0.8505,-1.5714],"uv":{"north":{"uv":[57,29],"uv_size":[0.25,0.5]},"east":{"uv":[30,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,30],"uv_size":[0.25,0.5]},"west":{"uv":[31,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.4538,-0.3805,-0.1793],"size":[0.2194,0.675,0.2429],"pivot":[-2.4538,0.2945,-0.1809],"rotation":[21.4947,42.0562,13.4467],"uv":{"north":{"uv":[57,31],"uv_size":[0.25,0.5]},"east":{"uv":[32,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,32],"uv_size":[0.25,0.5]},"west":{"uv":[33,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,39],"uv_size":[0.25,0.25]},"down":{"uv":[40,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1672,-0.359,-0.18],"size":[0.221,0.6535,0.2437],"pivot":[-1.9462,0.2945,-0.1809],"rotation":[15.7887,0.8505,1.5714],"uv":{"north":{"uv":[57,33],"uv_size":[0.25,0.5]},"east":{"uv":[34,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,34],"uv_size":[0.25,0.5]},"west":{"uv":[35,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.4393,-1.0438,-0.0046],"size":[0.2211,0.7151,0.2445],"pivot":[-2.4393,-0.3287,-0.0046],"rotation":[24.261,-1.4672,-0.2038],"uv":{"north":{"uv":[10,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,10],"uv_size":[0.25,0.75]},"south":{"uv":[11,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,11],"uv_size":[0.25,0.75]},"up":{"uv":[77,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.4393,-1.0615,-0.0039],"size":[0.2204,0.7328,0.2439],"pivot":[-2.4393,-0.3287,-0.0046],"rotation":[31.7975,38.7807,21.6791],"uv":{"north":{"uv":[12,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,12],"uv_size":[0.25,0.75]},"south":{"uv":[13,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,13],"uv_size":[0.25,0.75]},"up":{"uv":[77,42],"uv_size":[0.25,0.25]},"down":{"uv":[43,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.4445,-1.8036,0.2891],"size":[0.2211,0.8229,0.2445],"pivot":[-2.4445,-0.9807,0.2891],"rotation":[31.5252,-1.0751,-0.8433],"uv":{"north":{"uv":[14,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,14],"uv_size":[0.25,0.75]},"south":{"uv":[15,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,15],"uv_size":[0.25,0.75]},"up":{"uv":[77,43],"uv_size":[0.25,0.25]},"down":{"uv":[44,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.4445,-1.8036,0.2891],"size":[0.2211,0.8229,0.2445],"pivot":[-2.4445,-0.9807,0.2891],"rotation":[40.3246,36.1125,26.393],"uv":{"north":{"uv":[16,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,16],"uv_size":[0.25,0.75]},"south":{"uv":[17,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,17],"uv_size":[0.25,0.75]},"up":{"uv":[77,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.4423,-1.8453,0.7193],"size":[0.2211,0.1631,0.2445],"pivot":[-2.4423,-1.6822,0.7193],"rotation":[31.1165,5.4417,-11.5237],"uv":{"north":{"uv":[77,45],"uv_size":[0.25,0.25]},"east":{"uv":[46,77],"uv_size":[0.25,0.25]},"south":{"uv":[77,46],"uv_size":[0.25,0.25]},"west":{"uv":[47,77],"uv_size":[0.25,0.25]},"up":{"uv":[77,47],"uv_size":[0.25,0.25]},"down":{"uv":[48,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.47,0.9247,-0.2742],"size":[0.2208,0.6584,0.2445],"pivot":[-2.47,0.9353,-0.2742],"rotation":[0.3291,-0.8356,-4.3217],"uv":{"north":{"uv":[57,35],"uv_size":[0.25,0.5]},"east":{"uv":[36,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,36],"uv_size":[0.25,0.5]},"west":{"uv":[37,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,48],"uv_size":[0.25,0.25]},"down":{"uv":[49,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.5224,0.8163,-0.0335],"size":[0.2208,0.7661,0.81],"pivot":[-2.5224,1.5824,-0.0335],"rotation":[0.3541,21.664,-4.1861],"uv":{"north":{"uv":[18,50],"uv_size":[0.25,0.75]},"east":{"uv":[35,34],"uv_size":[0.75,0.75]},"south":{"uv":[50,18],"uv_size":[0.25,0.75]},"west":{"uv":[35,35],"uv_size":[0.75,0.75]},"up":{"uv":[19,50],"uv_size":[0.25,0.75]},"down":{"uv":[50,19.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.47,0.9247,-0.2742],"size":[0.3151,0.6584,0.2445],"pivot":[-2.47,0.9353,-0.2742],"rotation":[0.4588,44.1634,-3.9973],"uv":{"north":{"uv":[57,37],"uv_size":[0.25,0.5]},"east":{"uv":[38,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,38],"uv_size":[0.25,0.5]},"west":{"uv":[39,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,49],"uv_size":[0.25,0.25]},"down":{"uv":[50,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1509,0.9247,-0.2742],"size":[0.2208,0.6584,0.2445],"pivot":[-1.93,0.9353,-0.2742],"rotation":[0.3291,0.8356,4.3217],"uv":{"north":{"uv":[57,39],"uv_size":[0.25,0.5]},"east":{"uv":[40,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,40],"uv_size":[0.25,0.5]},"west":{"uv":[41,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,50],"uv_size":[0.25,0.25]},"down":{"uv":[51,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.5187,1.5746,-0.278],"size":[0.221,0.6546,0.2445],"pivot":[-2.5187,1.5813,-0.278],"rotation":[-7.1422,-1.0537,-6.0583],"uv":{"north":{"uv":[57,41],"uv_size":[0.25,0.5]},"east":{"uv":[42,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,42],"uv_size":[0.25,0.5]},"west":{"uv":[43,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,51],"uv_size":[0.25,0.25]},"down":{"uv":[52,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.5893,1.5351,0.0452],"size":[0.221,0.6546,0.8639],"pivot":[-2.5893,2.1896,0.0452],"rotation":[-7.6657,21.2637,-8.9848],"uv":{"north":{"uv":[57,43],"uv_size":[0.25,0.5]},"east":{"uv":[13,40],"uv_size":[0.75,0.5]},"south":{"uv":[44,57],"uv_size":[0.25,0.5]},"west":{"uv":[40,13],"uv_size":[0.75,0.5]},"up":{"uv":[20,50],"uv_size":[0.25,0.75]},"down":{"uv":[50,20.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.0985,0.8163,-0.0335],"size":[0.2208,0.7661,0.81],"pivot":[-1.8776,1.5824,-0.0335],"rotation":[0.3541,-21.664,4.1861],"uv":{"north":{"uv":[21,50],"uv_size":[0.25,0.75]},"east":{"uv":[36,0],"uv_size":[0.75,0.75]},"south":{"uv":[50,21],"uv_size":[0.25,0.75]},"west":{"uv":[36,1],"uv_size":[0.75,0.75]},"up":{"uv":[22,50],"uv_size":[0.25,0.75]},"down":{"uv":[50,22.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.0317,1.5351,0.0452],"size":[0.221,0.6546,0.8639],"pivot":[-1.8107,2.1896,0.0452],"rotation":[-7.6657,-21.2637,8.9848],"uv":{"north":{"uv":[57,44],"uv_size":[0.25,0.5]},"east":{"uv":[14,40],"uv_size":[0.75,0.5]},"south":{"uv":[45,57],"uv_size":[0.25,0.5]},"west":{"uv":[40,14],"uv_size":[0.75,0.5]},"up":{"uv":[23,50],"uv_size":[0.25,0.75]},"down":{"uv":[50,23.75],"uv_size":[0.25,-0.75]}}},{"origin":[-2.5187,1.5454,-0.2773],"size":[0.313,0.6837,0.2439],"pivot":[-2.5187,1.5813,-0.278],"rotation":[-9.8697,43.5114,-13.0211],"uv":{"north":{"uv":[57,45],"uv_size":[0.25,0.5]},"east":{"uv":[46,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,46],"uv_size":[0.25,0.5]},"west":{"uv":[47,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,52],"uv_size":[0.25,0.25]},"down":{"uv":[53,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1023,1.5746,-0.278],"size":[0.221,0.6546,0.2445],"pivot":[-1.8813,1.5813,-0.278],"rotation":[-7.1422,1.0537,6.0583],"uv":{"north":{"uv":[57,47],"uv_size":[0.25,0.5]},"east":{"uv":[48,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,48],"uv_size":[0.25,0.5]},"west":{"uv":[49,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,53],"uv_size":[0.25,0.25]},"down":{"uv":[54,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.588,2.1944,-0.1974],"size":[0.2196,0.3237,0.2445],"pivot":[-2.588,2.2203,-0.1974],"rotation":[-8.7091,-2.0876,-12.7312],"uv":{"north":{"uv":[77,54],"uv_size":[0.25,0.25]},"east":{"uv":[55,77],"uv_size":[0.25,0.25]},"south":{"uv":[77,55],"uv_size":[0.25,0.25]},"west":{"uv":[56,77],"uv_size":[0.25,0.25]},"up":{"uv":[77,56],"uv_size":[0.25,0.25]},"down":{"uv":[57,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3228,2.1348,-0.0193],"size":[0.2196,0.4045,0.5946],"pivot":[-2.3228,2.1608,0.5732],"rotation":[-9.6171,25.0754,-17.1584],"uv":{"north":{"uv":[77,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,49],"uv_size":[0.5,0.25]},"south":{"uv":[58,77],"uv_size":[0.25,0.25]},"west":{"uv":[50,57],"uv_size":[0.5,0.25]},"up":{"uv":[57,50],"uv_size":[0.25,0.5]},"down":{"uv":[51,57.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.2968,2.1348,-0.0193],"size":[0.2196,0.4045,0.5946],"pivot":[-2.0772,2.1608,0.5732],"rotation":[-9.6171,-25.0754,17.1584],"uv":{"north":{"uv":[77,58],"uv_size":[0.25,0.25]},"east":{"uv":[57,51],"uv_size":[0.5,0.25]},"south":{"uv":[59,77],"uv_size":[0.25,0.25]},"west":{"uv":[52,57],"uv_size":[0.5,0.25]},"up":{"uv":[57,52],"uv_size":[0.25,0.5]},"down":{"uv":[53,57.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.588,2.1876,-0.1984],"size":[0.3113,0.3305,0.2455],"pivot":[-2.588,2.2203,-0.1974],"rotation":[-11.8011,42.2783,-21.0517],"uv":{"north":{"uv":[77,59],"uv_size":[0.25,0.25]},"east":{"uv":[60,77],"uv_size":[0.25,0.25]},"south":{"uv":[77,60],"uv_size":[0.25,0.25]},"west":{"uv":[61,77],"uv_size":[0.25,0.25]},"up":{"uv":[77,61],"uv_size":[0.25,0.25]},"down":{"uv":[62,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1766,-1.8036,0.2891],"size":[0.2211,0.8229,0.2445],"pivot":[-1.9555,-0.9807,0.2891],"rotation":[40.3246,-36.1125,-26.393],"uv":{"north":{"uv":[24,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,24],"uv_size":[0.25,0.75]},"south":{"uv":[25,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,25],"uv_size":[0.25,0.75]},"up":{"uv":[77,62],"uv_size":[0.25,0.25]},"down":{"uv":[63,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1811,-1.0615,-0.0039],"size":[0.2204,0.7328,0.2439],"pivot":[-1.9607,-0.3287,-0.0046],"rotation":[31.7975,-38.7807,-21.6791],"uv":{"north":{"uv":[26,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,26],"uv_size":[0.25,0.75]},"south":{"uv":[27,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,27],"uv_size":[0.25,0.75]},"up":{"uv":[77,63],"uv_size":[0.25,0.25]},"down":{"uv":[64,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1656,-0.3805,-0.1793],"size":[0.2194,0.675,0.2429],"pivot":[-1.9462,0.2945,-0.1809],"rotation":[21.4947,-42.0562,-13.4467],"uv":{"north":{"uv":[57,53],"uv_size":[0.25,0.5]},"east":{"uv":[54,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,54],"uv_size":[0.25,0.5]},"west":{"uv":[55,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,64],"uv_size":[0.25,0.25]},"down":{"uv":[65,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1485,0.2674,-0.2717],"size":[0.2185,0.699,0.242],"pivot":[-1.93,0.9353,-0.2742],"rotation":[11.474,-43.5627,-6.5156],"uv":{"north":{"uv":[28,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,28],"uv_size":[0.25,0.75]},"south":{"uv":[29,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,29],"uv_size":[0.25,0.75]},"up":{"uv":[77,65],"uv_size":[0.25,0.25]},"down":{"uv":[66,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2451,0.9247,-0.2742],"size":[0.3151,0.6584,0.2445],"pivot":[-1.93,0.9353,-0.2742],"rotation":[0.4588,-44.1634,3.9973],"uv":{"north":{"uv":[57,55],"uv_size":[0.25,0.5]},"east":{"uv":[56,57],"uv_size":[0.25,0.5]},"south":{"uv":[57,56],"uv_size":[0.25,0.5]},"west":{"uv":[57,57],"uv_size":[0.25,0.5]},"up":{"uv":[77,66],"uv_size":[0.25,0.25]},"down":{"uv":[67,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1233,2.1876,-0.1984],"size":[0.3113,0.3305,0.2455],"pivot":[-1.8119,2.2203,-0.1974],"rotation":[-11.8011,-42.2783,21.0517],"uv":{"north":{"uv":[77,67],"uv_size":[0.25,0.25]},"east":{"uv":[68,77],"uv_size":[0.25,0.25]},"south":{"uv":[77,68],"uv_size":[0.25,0.25]},"west":{"uv":[69,77],"uv_size":[0.25,0.25]},"up":{"uv":[77,69],"uv_size":[0.25,0.25]},"down":{"uv":[70,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1943,1.5454,-0.2773],"size":[0.313,0.6837,0.2439],"pivot":[-1.8813,1.5813,-0.278],"rotation":[-9.8697,-43.5114,13.0211],"uv":{"north":{"uv":[0,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,0],"uv_size":[0.25,0.5]},"south":{"uv":[1,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,1],"uv_size":[0.25,0.5]},"up":{"uv":[77,70],"uv_size":[0.25,0.25]},"down":{"uv":[71,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6603,2.497,-0.1437],"size":[0.2182,0.3329,0.2398],"pivot":[-2.6603,2.5321,-0.1484],"rotation":[-18.357,-2.7834,-15.1346],"uv":{"north":{"uv":[77,71],"uv_size":[0.25,0.25]},"east":{"uv":[72,77],"uv_size":[0.25,0.25]},"south":{"uv":[77,72],"uv_size":[0.25,0.25]},"west":{"uv":[73,77],"uv_size":[0.25,0.25]},"up":{"uv":[77,73],"uv_size":[0.25,0.25]},"down":{"uv":[74,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.7383,2.8022,-0.0717],"size":[0.2182,1.0061,0.2612],"pivot":[-2.7383,2.8022,-0.0503],"rotation":[-18.1505,3.9423,5.0356],"uv":{"north":{"uv":[45,29],"uv_size":[0.25,1]},"east":{"uv":[30,45],"uv_size":[0.25,1]},"south":{"uv":[45,30],"uv_size":[0.25,1]},"west":{"uv":[31,45],"uv_size":[0.25,1]},"up":{"uv":[77,74],"uv_size":[0.25,0.25]},"down":{"uv":[75,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.889,2.7264,0.177],"size":[0.2182,1.0061,0.2398],"pivot":[-1.6707,2.7264,0.177],"rotation":[-22.8609,-36.8745,7.8709],"uv":{"north":{"uv":[45,31],"uv_size":[0.25,1]},"east":{"uv":[32,45],"uv_size":[0.25,1]},"south":{"uv":[45,32],"uv_size":[0.25,1]},"west":{"uv":[33,45],"uv_size":[0.25,1]},"up":{"uv":[77,75],"uv_size":[0.25,0.25]},"down":{"uv":[76,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.967,2.4212,0.0836],"size":[0.2182,0.3329,0.2936],"pivot":[-1.7487,2.4563,0.0788],"rotation":[-20.4973,-26.0593,25.3839],"uv":{"north":{"uv":[77,76],"uv_size":[0.25,0.25]},"east":{"uv":[77,77],"uv_size":[0.25,0.25]},"south":{"uv":[0,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6513,2.4212,0.0836],"size":[0.2182,0.3329,0.2936],"pivot":[-2.6513,2.4563,0.0788],"rotation":[-20.4973,26.0593,-25.3839],"uv":{"north":{"uv":[2,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,2],"uv_size":[0.25,0.25]},"south":{"uv":[3,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,3],"uv_size":[0.25,0.25]},"up":{"uv":[4,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.7293,2.7264,0.177],"size":[0.2182,1.0061,0.2398],"pivot":[-2.7293,2.7264,0.177],"rotation":[-22.8609,36.8745,-7.8709],"uv":{"north":{"uv":[45,33],"uv_size":[0.25,1]},"east":{"uv":[34,45],"uv_size":[0.25,1]},"south":{"uv":[45,34],"uv_size":[0.25,1]},"west":{"uv":[35,45],"uv_size":[0.25,1]},"up":{"uv":[5,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.7383,2.8022,-0.468],"size":[0.2182,1.0061,0.4177],"pivot":[-2.7383,2.8022,-0.0503],"rotation":[-18.1309,-2.9482,7.2916],"uv":{"north":{"uv":[45,35],"uv_size":[0.25,1]},"east":{"uv":[37,30],"uv_size":[0.5,1]},"south":{"uv":[36,45],"uv_size":[0.25,1]},"west":{"uv":[37,31],"uv_size":[0.5,1]},"up":{"uv":[2,58],"uv_size":[0.25,0.5]},"down":{"uv":[58,2.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.338,1.9103,-0.5024],"size":[0.1443,0.3543,0.3619],"pivot":[-2.338,2.2646,-0.5024],"rotation":[-6.4475,-9.5838,-10.2331],"uv":{"north":{"uv":[6,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2063,1.9103,-0.5024],"size":[0.1443,0.3543,0.3619],"pivot":[-2.062,2.2646,-0.5024],"rotation":[-6.4475,9.5838,10.2331],"uv":{"north":{"uv":[9,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2705,1.6879,-0.5407],"size":[0.0907,0.2392,0.3619],"pivot":[-2.2705,1.9271,-0.5407],"rotation":[-7.2596,-8.9868,-5.2029],"uv":{"north":{"uv":[12,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2203,1.6879,-0.5407],"size":[0.0907,0.2392,0.3619],"pivot":[-2.1295,1.9271,-0.5407],"rotation":[-7.2596,8.9868,5.2029],"uv":{"north":{"uv":[15,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.4431,2.2365,-0.531],"size":[0.0902,0.3566,0.422],"pivot":[-2.4431,2.5931,-0.4708],"rotation":[-5.3158,-10.2507,-16.797],"uv":{"north":{"uv":[18,78],"uv_size":[0.25,0.25]},"east":{"uv":[3,58],"uv_size":[0.5,0.25]},"south":{"uv":[78,18],"uv_size":[0.25,0.25]},"west":{"uv":[58,3],"uv_size":[0.5,0.25]},"up":{"uv":[4,58],"uv_size":[0.25,0.5]},"down":{"uv":[58,4.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.7065,2.4643,-0.4539],"size":[0.2182,0.4474,0.422],"pivot":[-2.7065,2.9117,-0.3937],"rotation":[-10.9359,-14.84,-36.7504],"uv":{"north":{"uv":[5,58],"uv_size":[0.25,0.5]},"east":{"uv":[45,36],"uv_size":[0.5,0.5]},"south":{"uv":[58,5],"uv_size":[0.25,0.5]},"west":{"uv":[37,45],"uv_size":[0.5,0.5]},"up":{"uv":[6,58],"uv_size":[0.25,0.5]},"down":{"uv":[58,6.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.642,3.8284,0.2749],"size":[0.2182,1.0061,0.2424],"pivot":[-2.642,3.8284,0.0351],"rotation":[-17.7581,5.4845,9.8081],"uv":{"north":{"uv":[45,37],"uv_size":[0.25,1]},"east":{"uv":[38,45],"uv_size":[0.25,1]},"south":{"uv":[45,38],"uv_size":[0.25,1]},"west":{"uv":[39,45],"uv_size":[0.25,1]},"up":{"uv":[19,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6329,3.7527,-0.1767],"size":[0.2182,1.0061,0.4391],"pivot":[-2.6329,3.7527,0.2624],"rotation":[-17.6818,-1.6606,12.0906],"uv":{"north":{"uv":[45,39],"uv_size":[0.25,1]},"east":{"uv":[37,32],"uv_size":[0.5,1]},"south":{"uv":[40,45],"uv_size":[0.25,1]},"west":{"uv":[37,33],"uv_size":[0.5,1]},"up":{"uv":[7,58],"uv_size":[0.25,0.5]},"down":{"uv":[58,7.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.0471,2.2365,-0.531],"size":[0.0902,0.3566,0.422],"pivot":[-1.9569,2.5931,-0.4708],"rotation":[-5.3158,10.2507,16.797],"uv":{"north":{"uv":[20,78],"uv_size":[0.25,0.25]},"east":{"uv":[8,58],"uv_size":[0.5,0.25]},"south":{"uv":[78,20],"uv_size":[0.25,0.25]},"west":{"uv":[58,8],"uv_size":[0.5,0.25]},"up":{"uv":[9,58],"uv_size":[0.25,0.5]},"down":{"uv":[58,9.5],"uv_size":[0.25,-0.5]}}},{"origin":[-1.9118,2.4643,-0.4539],"size":[0.2182,0.4474,0.422],"pivot":[-1.6935,2.9117,-0.3937],"rotation":[-10.9359,14.84,36.7504],"uv":{"north":{"uv":[10,58],"uv_size":[0.25,0.5]},"east":{"uv":[45,40],"uv_size":[0.5,0.5]},"south":{"uv":[58,10],"uv_size":[0.25,0.5]},"west":{"uv":[41,45],"uv_size":[0.5,0.5]},"up":{"uv":[11,58],"uv_size":[0.25,0.5]},"down":{"uv":[58,11.5],"uv_size":[0.25,-0.5]}}},{"origin":[-1.8799,2.8022,-0.468],"size":[0.2182,1.0061,0.4177],"pivot":[-1.6617,2.8022,-0.0503],"rotation":[-18.1309,2.9482,-7.2916],"uv":{"north":{"uv":[45,41],"uv_size":[0.25,1]},"east":{"uv":[37,34],"uv_size":[0.5,1]},"south":{"uv":[42,45],"uv_size":[0.25,1]},"west":{"uv":[37,35],"uv_size":[0.5,1]},"up":{"uv":[12,58],"uv_size":[0.25,0.5]},"down":{"uv":[58,12.5],"uv_size":[0.25,-0.5]}}},{"origin":[-1.9853,3.7527,-0.1767],"size":[0.2182,1.0061,0.4391],"pivot":[-1.7671,3.7527,0.2624],"rotation":[-17.6818,1.6606,-12.0906],"uv":{"north":{"uv":[45,42],"uv_size":[0.25,1]},"east":{"uv":[36,37],"uv_size":[0.5,1]},"south":{"uv":[43,45],"uv_size":[0.25,1]},"west":{"uv":[37,36],"uv_size":[0.5,1]},"up":{"uv":[13,58],"uv_size":[0.25,0.5]},"down":{"uv":[58,13.5],"uv_size":[0.25,-0.5]}}},{"origin":[-1.9763,3.8284,0.2362],"size":[0.2182,1.0061,0.281],"pivot":[-1.758,3.8284,0.0351],"rotation":[-17.7581,-5.4845,-9.8081],"uv":{"north":{"uv":[45,43],"uv_size":[0.25,1]},"east":{"uv":[44,45],"uv_size":[0.25,1]},"south":{"uv":[45,44],"uv_size":[0.25,1]},"west":{"uv":[45,45],"uv_size":[0.25,1]},"up":{"uv":[21,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.8799,2.8022,-0.0503],"size":[0.2182,1.0061,0.2398],"pivot":[-1.6617,2.8022,-0.0503],"rotation":[-18.1505,-3.9423,-5.0356],"uv":{"north":{"uv":[0,46],"uv_size":[0.25,1]},"east":{"uv":[46,0],"uv_size":[0.25,1]},"south":{"uv":[1,46],"uv_size":[0.25,1]},"west":{"uv":[46,1],"uv_size":[0.25,1]},"up":{"uv":[22,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0315,2.1944,-0.1974],"size":[0.2196,0.3237,0.2445],"pivot":[-1.8119,2.2203,-0.1974],"rotation":[-8.7091,2.0876,12.7312],"uv":{"north":{"uv":[23,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,23],"uv_size":[0.25,0.25]},"south":{"uv":[24,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.9579,2.497,-0.1437],"size":[0.2182,0.3329,0.2398],"pivot":[-1.7397,2.5321,-0.1484],"rotation":[-18.357,2.7834,15.1346],"uv":{"north":{"uv":[26,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0436,2.4596,-0.1456],"size":[0.3039,0.3703,0.2417],"pivot":[-1.7397,2.5321,-0.1484],"rotation":[-24.056,-39.4938,31.9075],"uv":{"north":{"uv":[29,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.6603,2.4596,-0.1456],"size":[0.3039,0.3703,0.2417],"pivot":[-2.6603,2.5321,-0.1484],"rotation":[-24.056,39.4938,-31.9075],"uv":{"north":{"uv":[32,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1511,0.2875,-0.2742],"size":[0.2211,0.6478,0.2445],"pivot":[-1.93,0.9353,-0.2742],"rotation":[8.2887,0.8505,1.5714],"uv":{"north":{"uv":[14,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,14],"uv_size":[0.25,0.5]},"south":{"uv":[15,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,15],"uv_size":[0.25,0.5]},"up":{"uv":[35,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1818,-1.0438,-0.0046],"size":[0.2211,0.7151,0.2445],"pivot":[-1.9607,-0.3287,-0.0046],"rotation":[24.261,1.4672,0.2038],"uv":{"north":{"uv":[30,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,30],"uv_size":[0.25,0.75]},"south":{"uv":[31,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,31],"uv_size":[0.25,0.75]},"up":{"uv":[36,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1766,-1.8036,0.2891],"size":[0.2211,0.8229,0.2445],"pivot":[-1.9555,-0.9807,0.2891],"rotation":[31.5252,1.0751,0.8433],"uv":{"north":{"uv":[32,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,32],"uv_size":[0.25,0.75]},"south":{"uv":[33,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,33],"uv_size":[0.25,0.75]},"up":{"uv":[37,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1789,-1.8453,0.7193],"size":[0.2211,0.1631,0.2445],"pivot":[-1.9578,-1.6822,0.7193],"rotation":[31.1165,-5.4417,11.5237],"uv":{"north":{"uv":[38,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3193,1.3009,-0.559],"size":[0.1403,0.3853,0.3023],"pivot":[-2.3144,1.3009,-0.559],"rotation":[-3.9651,-0.8517,-1.3214],"uv":{"north":{"uv":[41,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3285,1.6799,-0.5323],"size":[0.1133,0.3905,0.3023],"pivot":[-2.3237,1.6851,-0.5323],"rotation":[-3.9197,-1.0408,-4.0653],"uv":{"north":{"uv":[44,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,44],"uv_size":[0.25,0.25]},"south":{"uv":[45,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,45],"uv_size":[0.25,0.25]},"up":{"uv":[46,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3563,2.059,-0.506],"size":[0.113,0.664,0.3023],"pivot":[-2.3514,2.0685,-0.506],"rotation":[-9.0458,-1.8328,-9.0037],"uv":{"north":{"uv":[16,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,16],"uv_size":[0.25,0.5]},"south":{"uv":[17,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,17],"uv_size":[0.25,0.5]},"up":{"uv":[47,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1478,-1.0899,0.0863],"size":[0.1134,0.5738,0.3023],"pivot":[-2.0392,-1.0899,0.0863],"rotation":[28.9663,1.4768,-2.5782],"uv":{"north":{"uv":[18,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,18],"uv_size":[0.25,0.5]},"south":{"uv":[19,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,19],"uv_size":[0.25,0.5]},"up":{"uv":[48,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1775,-0.5888,-0.1915],"size":[0.1134,0.6478,0.3023],"pivot":[-2.069,-0.5888,-0.1915],"rotation":[20.9959,0.9396,-1.1774],"uv":{"north":{"uv":[20,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,20],"uv_size":[0.25,0.5]},"south":{"uv":[21,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,21],"uv_size":[0.25,0.5]},"up":{"uv":[49,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1937,0.0158,-0.4236],"size":[0.1134,0.6478,0.3023],"pivot":[-2.0852,0.0158,-0.4236],"rotation":[9.9959,0.9396,-1.1774],"uv":{"north":{"uv":[22,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,22],"uv_size":[0.25,0.5]},"south":{"uv":[23,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,23],"uv_size":[0.25,0.5]},"up":{"uv":[50,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2356,0.6536,-0.536],"size":[0.1403,0.6478,0.3023],"pivot":[-2.1002,0.6536,-0.536],"rotation":[2.0349,0.8517,1.3214],"uv":{"north":{"uv":[24,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,24],"uv_size":[0.25,0.5]},"south":{"uv":[25,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,25],"uv_size":[0.25,0.5]},"up":{"uv":[51,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.221,1.3009,-0.559],"size":[0.1403,0.3853,0.3023],"pivot":[-2.0856,1.3009,-0.559],"rotation":[-3.9651,0.8517,1.3214],"uv":{"north":{"uv":[52,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,52],"uv_size":[0.25,0.25]},"south":{"uv":[53,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,53],"uv_size":[0.25,0.25]},"up":{"uv":[54,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1847,1.6799,-0.5323],"size":[0.1133,0.3905,0.3023],"pivot":[-2.0763,1.6851,-0.5323],"rotation":[-3.9197,1.0408,4.0653],"uv":{"north":{"uv":[55,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,55],"uv_size":[0.25,0.25]},"south":{"uv":[56,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,56],"uv_size":[0.25,0.25]},"up":{"uv":[57,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,57.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1567,2.059,-0.506],"size":[0.113,0.664,0.3023],"pivot":[-2.0486,2.0685,-0.506],"rotation":[-9.0458,1.8328,9.0037],"uv":{"north":{"uv":[26,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,26],"uv_size":[0.25,0.5]},"south":{"uv":[27,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,27],"uv_size":[0.25,0.5]},"up":{"uv":[58,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3963,-0.5559,0.3502],"size":[0.0212,0.1389,0.1923],"pivot":[-2.3963,-2.0657,0.5425],"rotation":[30.0072,-14.5202,-4.8434],"uv":{"north":{"uv":[59,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,59],"uv_size":[0.25,0.25]},"south":{"uv":[60,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,60],"uv_size":[0.25,0.25]},"up":{"uv":[61,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3181,-1.5907,-0.5945],"size":[0.0215,0.8439,0.4061],"inflate":0.001,"pivot":[-2.318,-0.747,-0.1885],"rotation":[30.0072,-14.5202,-4.8434],"uv":{"north":{"uv":[34,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,34],"uv_size":[0.25,0.75]},"south":{"uv":[35,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,35],"uv_size":[0.25,0.75]},"up":{"uv":[62,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,62.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2131,-0.9418,-0.5287],"size":[0.0212,0.2944,0.2794],"pivot":[-2.2131,-0.9418,-0.5287],"rotation":[-16.4928,-14.5202,-4.8434],"uv":{"north":{"uv":[63,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,63],"uv_size":[0.25,0.25]},"south":{"uv":[64,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,64],"uv_size":[0.25,0.25]},"up":{"uv":[65,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2131,-0.9418,-0.5287],"size":[0.028,0.2944,0.064],"pivot":[-2.2131,-0.9418,-0.5287],"rotation":[-16.0532,-6.3595,-7.2633],"uv":{"north":{"uv":[66,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,66],"uv_size":[0.25,0.25]},"south":{"uv":[67,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,67],"uv_size":[0.25,0.25]},"up":{"uv":[68,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,68.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1859,-0.8409,-0.5225],"size":[0.0286,0.2006,0.064],"pivot":[-2.1579,-0.9348,-0.5225],"rotation":[-16.0532,-6.3595,-7.2633],"uv":{"north":{"uv":[69,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,69],"uv_size":[0.25,0.25]},"south":{"uv":[70,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,70],"uv_size":[0.25,0.25]},"up":{"uv":[71,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,71.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2427,-0.8409,-0.5225],"size":[0.0286,0.2006,0.064],"pivot":[-2.2421,-0.9348,-0.5225],"rotation":[-16.0532,6.3595,7.2633],"uv":{"north":{"uv":[72,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,72],"uv_size":[0.25,0.25]},"south":{"uv":[73,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,73],"uv_size":[0.25,0.25]},"up":{"uv":[74,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,74.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2149,-0.9418,-0.5287],"size":[0.028,0.2944,0.064],"pivot":[-2.1869,-0.9418,-0.5287],"rotation":[-16.0532,6.3595,7.2633],"uv":{"north":{"uv":[75,78],"uv_size":[0.25,0.25]},"east":{"uv":[78,75],"uv_size":[0.25,0.25]},"south":{"uv":[76,78],"uv_size":[0.25,0.25]},"west":{"uv":[78,76],"uv_size":[0.25,0.25]},"up":{"uv":[77,78],"uv_size":[0.25,0.25]},"down":{"uv":[78,77.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2082,-0.9418,-0.5287],"size":[0.0212,0.2944,0.2794],"pivot":[-2.1869,-0.9418,-0.5287],"rotation":[-16.4928,14.5202,4.8434],"uv":{"north":{"uv":[78,78],"uv_size":[0.25,0.25]},"east":{"uv":[0,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,0],"uv_size":[0.25,0.25]},"west":{"uv":[1,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.025,-0.5559,0.3502],"size":[0.0212,0.1389,0.1923],"pivot":[-2.0038,-2.0657,0.5425],"rotation":[30.0072,14.5202,4.8434],"uv":{"north":{"uv":[79,2],"uv_size":[0.25,0.25]},"east":{"uv":[3,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,3],"uv_size":[0.25,0.25]},"west":{"uv":[4,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,4],"uv_size":[0.25,0.25]},"down":{"uv":[5,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0595,-1.4837,-0.1852],"size":[0.0214,0.8439,0.4061],"inflate":0.001,"pivot":[-2.0382,-1.4854,0.2209],"rotation":[30.0072,14.5202,4.8434],"uv":{"north":{"uv":[36,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,36],"uv_size":[0.25,0.75]},"south":{"uv":[37,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,37],"uv_size":[0.25,0.75]},"up":{"uv":[79,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3246,-0.4586,-0.018],"size":[0.1134,0.7151,0.2484],"pivot":[-2.3653,-1.3631,0.4371],"rotation":[16.502,-0.5883,0.5167],"uv":{"north":{"uv":[38,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,38],"uv_size":[0.25,0.75]},"south":{"uv":[39,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,39],"uv_size":[0.25,0.75]},"up":{"uv":[79,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.307,-0.6297,-0.2693],"size":[0.0191,0.7151,0.0147],"pivot":[-2.307,-0.6297,-0.2693],"rotation":[17.0789,-14.731,-3.7762],"uv":{"north":{"uv":[40,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,40],"uv_size":[0.25,0.75]},"south":{"uv":[41,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,41],"uv_size":[0.25,0.75]},"up":{"uv":[79,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1122,-0.6297,-0.2693],"size":[0.0191,0.7151,0.0147],"pivot":[-2.093,-0.6297,-0.2693],"rotation":[17.0789,14.731,3.7762],"uv":{"north":{"uv":[42,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,42],"uv_size":[0.25,0.75]},"south":{"uv":[43,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,43],"uv_size":[0.25,0.75]},"up":{"uv":[79,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2987,-0.1812,-0.4724],"size":[0.1067,0.2372,0.0147],"pivot":[-2.2987,0.056,-0.4724],"rotation":[13.343,-0.6856,-0.9735],"uv":{"north":{"uv":[79,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.208,-0.1812,-0.4724],"size":[0.1067,0.2372,0.0147],"pivot":[-2.1013,0.056,-0.4724],"rotation":[13.343,0.6856,0.9735],"uv":{"north":{"uv":[79,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2987,-0.1812,-0.4724],"size":[0.0191,0.2372,0.0147],"pivot":[-2.2987,0.056,-0.4724],"rotation":[13.8398,-15.2703,-4.5233],"uv":{"north":{"uv":[79,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2954,-0.4254,-0.4177],"size":[0.0191,0.2525,0.0348],"pivot":[-2.2954,-0.1748,-0.4177],"rotation":[6.3398,-15.2703,-4.5233],"uv":{"north":{"uv":[79,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2954,-0.4254,-0.4177],"size":[0.0999,0.2525,0.0415],"pivot":[-2.2954,-0.1748,-0.4177],"rotation":[6.1155,-0.6064,-2.9122],"uv":{"north":{"uv":[79,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2045,-0.4254,-0.4177],"size":[0.0999,0.2525,0.0415],"pivot":[-2.1046,-0.1748,-0.4177],"rotation":[6.1155,0.6064,2.9122],"uv":{"north":{"uv":[79,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3048,-0.4425,-0.3844],"size":[0.0191,0.1718,0.028],"pivot":[-2.3048,-0.1717,-0.3844],"rotation":[6.3398,-15.2703,-4.5233],"uv":{"north":{"uv":[79,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1143,-0.4425,-0.3844],"size":[0.0191,0.1718,0.028],"pivot":[-2.0952,-0.1717,-0.3844],"rotation":[6.3398,15.2703,4.5233],"uv":{"north":{"uv":[79,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1237,-0.4254,-0.4177],"size":[0.0191,0.2525,0.0348],"pivot":[-2.1046,-0.1748,-0.4177],"rotation":[6.3398,15.2703,4.5233],"uv":{"north":{"uv":[79,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2103,-0.1812,-0.4724],"size":[0.0191,0.2372,0.0147],"pivot":[-2.1912,0.056,-0.4724],"rotation":[13.8398,15.2703,4.5233],"uv":{"north":{"uv":[79,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2838,-0.6763,-0.3925],"size":[0.0192,0.2707,0.0947],"pivot":[-2.2837,-0.4103,-0.3925],"rotation":[-12.7812,-15.1594,-2.4819],"uv":{"north":{"uv":[79,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2838,-0.6763,-0.3925],"size":[0.0852,0.2707,0.0947],"pivot":[-2.2837,-0.4103,-0.3925],"rotation":[-12.3667,-4.4216,-4.9084],"uv":{"north":{"uv":[79,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2014,-0.6763,-0.3925],"size":[0.0852,0.2707,0.0947],"pivot":[-2.1163,-0.4103,-0.3925],"rotation":[-12.3667,4.4216,4.9084],"uv":{"north":{"uv":[79,45],"uv_size":[0.25,0.25]},"east":{"uv":[46,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,46],"uv_size":[0.25,0.25]},"west":{"uv":[47,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,47],"uv_size":[0.25,0.25]},"down":{"uv":[48,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.307,-0.6983,-0.3033],"size":[0.0192,0.1024,0.088],"pivot":[-2.3069,-0.4323,-0.3033],"rotation":[-12.7812,-15.1594,-2.4819],"uv":{"north":{"uv":[79,48],"uv_size":[0.25,0.25]},"east":{"uv":[49,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,49],"uv_size":[0.25,0.25]},"west":{"uv":[50,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,50],"uv_size":[0.25,0.25]},"down":{"uv":[51,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3173,-0.5988,-0.2814],"size":[0.0192,0.1158,0.0274],"pivot":[-2.3172,-0.3328,-0.2814],"rotation":[-12.7812,-15.1594,-2.4819],"uv":{"north":{"uv":[79,51],"uv_size":[0.25,0.25]},"east":{"uv":[52,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,52],"uv_size":[0.25,0.25]},"west":{"uv":[53,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,53],"uv_size":[0.25,0.25]},"down":{"uv":[54,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.324,-0.6051,-0.2556],"size":[0.0192,0.0687,0.0409],"pivot":[-2.3239,-0.3392,-0.2556],"rotation":[-12.7812,-15.1594,-2.4819],"uv":{"north":{"uv":[79,54],"uv_size":[0.25,0.25]},"east":{"uv":[55,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,55],"uv_size":[0.25,0.25]},"west":{"uv":[56,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,56],"uv_size":[0.25,0.25]},"down":{"uv":[57,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1122,-0.6983,-0.3033],"size":[0.0192,0.1024,0.088],"pivot":[-2.0931,-0.4323,-0.3033],"rotation":[-12.7812,15.1594,2.4819],"uv":{"north":{"uv":[79,57],"uv_size":[0.25,0.25]},"east":{"uv":[58,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,58],"uv_size":[0.25,0.25]},"west":{"uv":[59,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,59],"uv_size":[0.25,0.25]},"down":{"uv":[60,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0952,-0.6051,-0.2556],"size":[0.0192,0.0687,0.0409],"pivot":[-2.0761,-0.3392,-0.2556],"rotation":[-12.7812,15.1594,2.4819],"uv":{"north":{"uv":[79,60],"uv_size":[0.25,0.25]},"east":{"uv":[61,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,61],"uv_size":[0.25,0.25]},"west":{"uv":[62,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,62],"uv_size":[0.25,0.25]},"down":{"uv":[63,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.102,-0.5988,-0.2814],"size":[0.0192,0.1158,0.0274],"pivot":[-2.0828,-0.3328,-0.2814],"rotation":[-12.7812,15.1594,2.4819],"uv":{"north":{"uv":[79,63],"uv_size":[0.25,0.25]},"east":{"uv":[64,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,64],"uv_size":[0.25,0.25]},"west":{"uv":[65,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,65],"uv_size":[0.25,0.25]},"down":{"uv":[66,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1354,-0.6763,-0.3925],"size":[0.0192,0.2707,0.0947],"pivot":[-2.1163,-0.4103,-0.3925],"rotation":[-12.7812,15.1594,2.4819],"uv":{"north":{"uv":[79,66],"uv_size":[0.25,0.25]},"east":{"uv":[67,79],"uv_size":[0.25,0.25]},"south":{"uv":[79,67],"uv_size":[0.25,0.25]},"west":{"uv":[68,79],"uv_size":[0.25,0.25]},"up":{"uv":[79,68],"uv_size":[0.25,0.25]},"down":{"uv":[69,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3876,0.1668,-0.2732],"size":[0.1095,0.7712,0.2625],"pivot":[-2.3653,-1.3631,0.4371],"rotation":[7.7193,-0.9249,2.9941],"uv":{"north":{"uv":[44,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,44],"uv_size":[0.25,0.75]},"south":{"uv":[45,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,45],"uv_size":[0.25,0.75]},"up":{"uv":[79,69],"uv_size":[0.25,0.25]},"down":{"uv":[70,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.122,0.1668,-0.2732],"size":[0.1095,0.7712,0.2625],"pivot":[-2.0347,-1.3631,0.4371],"rotation":[7.7193,0.9249,-2.9941],"uv":{"north":{"uv":[46,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,46],"uv_size":[0.25,0.75]},"south":{"uv":[47,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,47],"uv_size":[0.25,0.75]},"up":{"uv":[79,70],"uv_size":[0.25,0.25]},"down":{"uv":[71,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1515,-1.3651,0.1887],"size":[0.1134,0.9844,0.2484],"pivot":[-2.0347,-1.3631,0.4371],"rotation":[28.9663,1.4768,-2.5782],"uv":{"north":{"uv":[2,46],"uv_size":[0.25,1]},"east":{"uv":[46,2],"uv_size":[0.25,1]},"south":{"uv":[3,46],"uv_size":[0.25,1]},"west":{"uv":[46,3],"uv_size":[0.25,1]},"up":{"uv":[79,71],"uv_size":[0.25,0.25]},"down":{"uv":[72,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1888,-0.4586,-0.018],"size":[0.1134,0.7151,0.2484],"pivot":[-2.0347,-1.3631,0.4371],"rotation":[16.502,0.5883,-0.5167],"uv":{"north":{"uv":[48,50],"uv_size":[0.25,0.75]},"east":{"uv":[50,48],"uv_size":[0.25,0.75]},"south":{"uv":[49,50],"uv_size":[0.25,0.75]},"west":{"uv":[50,49],"uv_size":[0.25,0.75]},"up":{"uv":[79,72],"uv_size":[0.25,0.25]},"down":{"uv":[73,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.216,-9.6481,-0.5259],"size":[0.0125,6.4787,0.0846],"inflate":-0.001,"pivot":[-2.2161,-9.6482,-0.4412],"rotation":[-0.0568,-7.3,-0.0939],"uv":{"north":{"uv":[20,9],"uv_size":[0.25,6]},"east":{"uv":[10,20],"uv_size":[0.25,6]},"south":{"uv":[11,20],"uv_size":[0.25,6]},"west":{"uv":[20,15],"uv_size":[0.25,6]},"up":{"uv":[79,73],"uv_size":[0.25,0.25]},"down":{"uv":[74,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1965,-9.6481,-0.5259],"size":[0.0125,6.4787,0.0846],"inflate":-0.001,"pivot":[-2.1839,-9.6482,-0.4412],"rotation":[-0.0568,7.3,0.0939],"uv":{"north":{"uv":[16,20],"uv_size":[0.25,6]},"east":{"uv":[21,0],"uv_size":[0.25,6]},"south":{"uv":[21,6],"uv_size":[0.25,6]},"west":{"uv":[7,21],"uv_size":[0.25,6]},"up":{"uv":[79,74],"uv_size":[0.25,0.25]},"down":{"uv":[75,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3584,-9.6337,0.6571],"size":[0.0282,5.9646,0.1032],"pivot":[-2.3584,-9.6336,0.7603],"rotation":[-0.25,0,-0.0334],"uv":{"north":{"uv":[24,12],"uv_size":[0.25,5.5]},"east":{"uv":[24,18],"uv_size":[0.25,5.5]},"south":{"uv":[22,24],"uv_size":[0.25,5.5]},"west":{"uv":[23,24],"uv_size":[0.25,5.5]},"up":{"uv":[79,75],"uv_size":[0.25,0.25]},"down":{"uv":[76,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0699,-9.6337,0.6571],"size":[0.0282,5.9646,0.1032],"pivot":[-2.0416,-9.6336,0.7603],"rotation":[-0.25,0,0.0334],"uv":{"north":{"uv":[24,24],"uv_size":[0.25,5.5]},"east":{"uv":[25,0],"uv_size":[0.25,5.5]},"south":{"uv":[25,6],"uv_size":[0.25,5.5]},"west":{"uv":[25,12],"uv_size":[0.25,5.5]},"up":{"uv":[79,76],"uv_size":[0.25,0.25]},"down":{"uv":[77,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3641,-3.2197,0.6615],"size":[0.3281,3.8421,0.2484],"pivot":[-2.3618,-3.2197,0.9099],"rotation":[-0.25,0,0],"uv":{"north":{"uv":[30,16],"uv_size":[0.25,3.5]},"east":{"uv":[30,20],"uv_size":[0.25,3.5]},"south":{"uv":[22,30],"uv_size":[0.25,3.5]},"west":{"uv":[23,30],"uv_size":[0.25,3.5]},"up":{"uv":[79,77],"uv_size":[0.25,0.25]},"down":{"uv":[78,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3642,-3.2198,0.8676],"size":[0.3283,3.8423,0.0424],"inflate":0.001,"pivot":[-2.3618,-3.2197,0.9099],"rotation":[-0.25,-0.0001,0],"uv":{"north":{"uv":[24,30],"uv_size":[0.25,3.5]},"east":{"uv":[30,24],"uv_size":[0.25,3.5]},"south":{"uv":[25,30],"uv_size":[0.25,3.5]},"west":{"uv":[27,30],"uv_size":[0.25,3.5]},"up":{"uv":[79,78],"uv_size":[0.25,0.25]},"down":{"uv":[79,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3641,-1.1047,0.413],"size":[0.3281,1.8764,0.2484],"pivot":[-2.3618,-3.2186,0.6615],"rotation":[-0.25,-0.0001,0],"uv":{"north":{"uv":[33,38],"uv_size":[0.25,1.75]},"east":{"uv":[34,38],"uv_size":[0.25,1.75]},"south":{"uv":[38,34],"uv_size":[0.25,1.75]},"west":{"uv":[35,38],"uv_size":[0.25,1.75]},"up":{"uv":[0,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3641,-0.6087,0.0804],"size":[0.3281,1.4329,0.3326],"pivot":[-2.3618,-3.2175,0.413],"rotation":[-0.25,-0.0001,0],"uv":{"north":{"uv":[17,41],"uv_size":[0.25,1.25]},"east":{"uv":[18,41],"uv_size":[0.25,1.25]},"south":{"uv":[41,18],"uv_size":[0.25,1.25]},"west":{"uv":[19,41],"uv_size":[0.25,1.25]},"up":{"uv":[1,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3641,0.2178,-0.1723],"size":[0.3281,0.6079,0.2527],"pivot":[-2.3618,-3.2161,0.0804],"rotation":[-0.25,-0.0001,0],"uv":{"north":{"uv":[28,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,28],"uv_size":[0.25,0.5]},"south":{"uv":[29,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,29],"uv_size":[0.25,0.5]},"up":{"uv":[2,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3642,0.4981,0.7114],"size":[0.3283,0.1773,0.2154],"inflate":0.001,"pivot":[-2.3641,0.6224,0.9267],"rotation":[-30.25,-0.0001,0],"uv":{"north":{"uv":[3,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3642,0.6074,0.4717],"size":[0.3283,0.1764,0.2834],"inflate":0.001,"pivot":[-2.3641,0.7308,0.7408],"rotation":[-37.75,-0.0001,0],"uv":{"north":{"uv":[6,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.364,0.499,0.221],"size":[0.328,0.4163,0.371],"inflate":-0.001,"pivot":[-2.3641,0.8625,0.5707],"rotation":[-47.75,-0.0001,0],"uv":{"north":{"uv":[30,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,30],"uv_size":[0.25,0.5]},"south":{"uv":[31,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,31],"uv_size":[0.25,0.5]},"up":{"uv":[9,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.4314,1.1519,-0.5667],"size":[0.4628,0.4165,0.3712],"pivot":[-2.3775,0.8625,0.5707],"rotation":[-82.75,-0.0001,0],"uv":{"north":{"uv":[4,46],"uv_size":[0.5,0.5]},"east":{"uv":[32,58],"uv_size":[0.25,0.5]},"south":{"uv":[46,4],"uv_size":[0.5,0.5]},"west":{"uv":[58,32],"uv_size":[0.25,0.5]},"up":{"uv":[33,58],"uv_size":[0.5,0.25]},"down":{"uv":[58,33.25],"uv_size":[0.5,-0.25]}}},{"origin":[-2.4437,1.3515,-0.556],"size":[0.4874,0.5848,0.9097],"pivot":[-1.6039,1.6073,0.3537],"rotation":[-112.75,-0.0001,0],"uv":{"north":{"uv":[5,46],"uv_size":[0.5,0.5]},"east":{"uv":[40,15],"uv_size":[0.75,0.5]},"south":{"uv":[46,5],"uv_size":[0.5,0.5]},"west":{"uv":[40,16],"uv_size":[0.75,0.5]},"up":{"uv":[40,17],"uv_size":[0.5,0.75]},"down":{"uv":[40,18.75],"uv_size":[0.5,-0.75]}}},{"origin":[-2.2732,0.7749,-0.7781],"size":[0.1464,0.4165,0.3712],"pivot":[-2.4011,0.8625,0.4805],"rotation":[-110.25,-0.0001,0],"uv":{"north":{"uv":[34,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,34],"uv_size":[0.25,0.5]},"south":{"uv":[35,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,35],"uv_size":[0.25,0.5]},"up":{"uv":[10,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.4315,1.6633,1.1273],"size":[0.188,0.4168,0.3714],"inflate":0.001,"pivot":[-2.4314,2.0799,1.1274],"rotation":[-97.7042,-16.0396,-63.9129],"uv":{"north":{"uv":[36,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,36],"uv_size":[0.25,0.5]},"south":{"uv":[37,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,37],"uv_size":[0.25,0.5]},"up":{"uv":[11,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1564,1.6634,1.1274],"size":[0.1878,0.4165,0.3712],"pivot":[-1.9686,2.0799,1.1274],"rotation":[-97.7042,16.0396,63.9129],"uv":{"north":{"uv":[38,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,38],"uv_size":[0.25,0.5]},"south":{"uv":[39,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,39],"uv_size":[0.25,0.5]},"up":{"uv":[12,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.5521,1.9235,0.9185],"size":[0.3281,0.4165,0.3712],"pivot":[-2.4312,2.3398,0.8621],"rotation":[-59.1094,-62.53,-10.7721],"uv":{"north":{"uv":[40,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,40],"uv_size":[0.25,0.5]},"south":{"uv":[41,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,41],"uv_size":[0.25,0.5]},"up":{"uv":[13,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[-3.0935,2.1389,1.3826],"size":[0.4628,0.4165,0.3577],"pivot":[-2.5686,2.3398,0.9223],"rotation":[-54.8773,-62.9601,-61.4586],"uv":{"north":{"uv":[6,46],"uv_size":[0.5,0.5]},"east":{"uv":[42,58],"uv_size":[0.25,0.5]},"south":{"uv":[46,6],"uv_size":[0.5,0.5]},"west":{"uv":[58,42],"uv_size":[0.25,0.5]},"up":{"uv":[43,58],"uv_size":[0.5,0.25]},"down":{"uv":[58,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-2.7469,2.0447,1.2601],"size":[0.4628,0.4165,0.2769],"pivot":[-2.4913,2.3398,0.9008],"rotation":[-78.6927,-69.9222,-13.9526],"uv":{"north":{"uv":[7,46],"uv_size":[0.5,0.5]},"east":{"uv":[44,58],"uv_size":[0.25,0.5]},"south":{"uv":[46,7],"uv_size":[0.5,0.5]},"west":{"uv":[58,44],"uv_size":[0.25,0.5]},"up":{"uv":[45,58],"uv_size":[0.5,0.25]},"down":{"uv":[58,45.25],"uv_size":[0.5,-0.25]}}},{"origin":[-1.7693,2.1389,1.3826],"size":[0.4628,0.4165,0.3577],"pivot":[-1.8314,2.3398,0.9223],"rotation":[-54.8773,62.9601,61.4586],"uv":{"north":{"uv":[8,46],"uv_size":[0.5,0.5]},"east":{"uv":[46,58],"uv_size":[0.25,0.5]},"south":{"uv":[46,8],"uv_size":[0.5,0.5]},"west":{"uv":[58,46],"uv_size":[0.25,0.5]},"up":{"uv":[47,58],"uv_size":[0.5,0.25]},"down":{"uv":[58,47.25],"uv_size":[0.5,-0.25]}}},{"origin":[-2.1159,2.0447,1.2601],"size":[0.4628,0.4165,0.2769],"pivot":[-1.9087,2.3398,0.9008],"rotation":[-78.6927,69.9222,13.9526],"uv":{"north":{"uv":[9,46],"uv_size":[0.5,0.5]},"east":{"uv":[48,58],"uv_size":[0.25,0.5]},"south":{"uv":[46,9],"uv_size":[0.5,0.5]},"west":{"uv":[58,48],"uv_size":[0.25,0.5]},"up":{"uv":[49,58],"uv_size":[0.5,0.25]},"down":{"uv":[58,49.25],"uv_size":[0.5,-0.25]}}},{"origin":[-2.1761,1.9235,0.9185],"size":[0.3281,0.4165,0.3712],"pivot":[-1.9688,2.3398,0.8621],"rotation":[-59.1094,62.53,10.7721],"uv":{"north":{"uv":[50,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,50],"uv_size":[0.25,0.5]},"south":{"uv":[51,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,51],"uv_size":[0.25,0.5]},"up":{"uv":[14,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.2852,0.897,-0.7219],"size":[0.2174,0.4167,0.2174],"inflate":0.001,"pivot":[-1.3668,1.2203,0.7554],"rotation":[-102.7537,-12.4491,-43.6033],"uv":{"north":{"uv":[52,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,52],"uv_size":[0.25,0.5]},"south":{"uv":[53,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,53],"uv_size":[0.25,0.5]},"up":{"uv":[15,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.4314,1.475,0.0593],"size":[0.4628,0.4165,0.3712],"pivot":[-2.3775,0.8625,0.5707],"rotation":[-47.75,-0.0001,0],"uv":{"north":{"uv":[10,46],"uv_size":[0.5,0.5]},"east":{"uv":[56,58],"uv_size":[0.25,0.5]},"south":{"uv":[46,10],"uv_size":[0.5,0.5]},"west":{"uv":[58,56],"uv_size":[0.25,0.5]},"up":{"uv":[57,58],"uv_size":[0.5,0.25]},"down":{"uv":[58,57.25],"uv_size":[0.5,-0.25]}}},{"origin":[-2.3617,-3.6989,0.6278],"size":[0.3237,0.3189,0.1585],"pivot":[-2.3547,-3.6691,0.7863],"rotation":[-10.5,0,-0.0334],"uv":{"north":{"uv":[35,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3617,-3.6984,0.7809],"size":[0.0207,0.3922,0.1585],"pivot":[-2.3617,-3.6984,0.7809],"rotation":[-13.7975,40.1712,-9.0351],"uv":{"north":{"uv":[38,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0591,-3.6984,0.7809],"size":[0.0207,0.3922,0.1585],"pivot":[-2.0383,-3.6984,0.7809],"rotation":[-13.7975,-40.1712,9.0351],"uv":{"north":{"uv":[41,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1686,-9.2604,0.9415],"size":[0.0205,5.9876,0.1104],"pivot":[-2.1481,-9.2604,0.9448],"rotation":[-90,-89.7501,90],"uv":{"north":{"uv":[25,18],"uv_size":[0.25,5.5]},"east":{"uv":[25,24],"uv_size":[0.25,5.5]},"south":{"uv":[26,0],"uv_size":[0.25,5.5]},"west":{"uv":[26,6],"uv_size":[0.25,5.5]},"up":{"uv":[44,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3618,-3.4334,0.5851],"size":[0.3236,0.2282,0.2449],"pivot":[-2.3549,-3.4334,0.83],"rotation":[-20.5,0,-0.0334],"uv":{"north":{"uv":[45,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,45],"uv_size":[0.25,0.25]},"south":{"uv":[46,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,46],"uv_size":[0.25,0.25]},"up":{"uv":[47,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3618,-9.6221,0.5835],"size":[0.3237,7.9938,0.0914],"pivot":[-2.3549,-2.5129,1.7027],"rotation":[0.6882,0,0],"uv":{"north":{"uv":[3,14],"uv_size":[0.25,7.25]},"east":{"uv":[4,14],"uv_size":[0.25,7.25]},"south":{"uv":[5,14],"uv_size":[0.25,7.25]},"west":{"uv":[6,14],"uv_size":[0.25,7.25]},"up":{"uv":[48,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,48.25],"uv_size":[0.25,-0.25]}}}]},{"name":"bone2","parent":"group13","pivot":[-2.522,0.7069,0.6728],"rotation":[1.8993,15.9985,7.8193],"cubes":[{"origin":[-3.5348,0.7058,0.6728],"size":[1.0128,0,1.5677],"pivot":[-2.522,0.7069,0.6728],"rotation":[172.9302,-66.7677,91.8938],"uv":{"north":{"uv":[0,0],"uv_size":[1,0]},"east":{"uv":[0,0],"uv_size":[1.5,0]},"south":{"uv":[0,0],"uv_size":[1,0]},"west":{"uv":[0,0],"uv_size":[1.5,0]},"up":{"uv":[21,12],"uv_size":[1,1.5]},"down":{"uv":[21,15.5],"uv_size":[1,-1.5]}}},{"origin":[-1.878,0.7058,0.6728],"size":[1.0128,0,1.5677],"pivot":[-1.878,0.7069,0.6728],"rotation":[172.9302,66.7677,-91.8938],"uv":{"north":{"uv":[0,0],"uv_size":[1,0]},"east":{"uv":[0,0],"uv_size":[1.5,0]},"south":{"uv":[0,0],"uv_size":[1,0]},"west":{"uv":[0,0],"uv_size":[1.5,0]},"up":{"uv":[15,21],"uv_size":[1,1.5]},"down":{"uv":[21,17.5],"uv_size":[1,-1.5]}}},{"origin":[-3.5484,0.9324,0.8991],"size":[1.0128,0,0.5777],"pivot":[-2.5356,0.9335,0.8991],"rotation":[173.1721,-51.9973,89.0647],"uv":{"north":{"uv":[0,0],"uv_size":[1,0]},"east":{"uv":[0,0],"uv_size":[0.5,0]},"south":{"uv":[0,0],"uv_size":[1,0]},"west":{"uv":[0,0],"uv_size":[0.5,0]},"up":{"uv":[37,37],"uv_size":[1,0.5]},"down":{"uv":[0,38.5],"uv_size":[1,-0.5]}}},{"origin":[-4.1939,1.4668,1.1592],"size":[1.5628,0,0.5777],"pivot":[-2.6652,1.578,1.068],"rotation":[171.7328,-74.1431,94.3288],"uv":{"north":{"uv":[0,0],"uv_size":[1.5,0]},"east":{"uv":[0,0],"uv_size":[0.5,0]},"south":{"uv":[0,0],"uv_size":[1.5,0]},"west":{"uv":[0,0],"uv_size":[0.5,0]},"up":{"uv":[32,29],"uv_size":[1.5,0.5]},"down":{"uv":[30,32.5],"uv_size":[1.5,-0.5]}}},{"origin":[-4.6146,1.151,1.5475],"size":[1.1778,0,1.0177],"pivot":[-3.1429,1.6074,1.4987],"rotation":[178.2255,-41.1357,73.0807],"uv":{"north":{"uv":[0,0],"uv_size":[1,0]},"east":{"uv":[0,0],"uv_size":[1,0]},"south":{"uv":[0,0],"uv_size":[1,0]},"west":{"uv":[0,0],"uv_size":[1,0]},"up":{"uv":[4,28],"uv_size":[1,1]},"down":{"uv":[5,29],"uv_size":[1,-1]}}}]},{"name":"bone3","parent":"group13","pivot":[-1.878,0.7069,0.6728],"rotation":[1.8993,-15.9985,-7.8193],"cubes":[{"origin":[-1.878,0.7058,0.6728],"size":[1.0128,0,1.5677],"pivot":[-1.878,0.7069,0.6728],"rotation":[172.9302,66.7677,-91.8938],"uv":{"north":{"uv":[0,0],"uv_size":[1,0]},"east":{"uv":[0,0],"uv_size":[1.5,0]},"south":{"uv":[0,0],"uv_size":[1,0]},"west":{"uv":[0,0],"uv_size":[1.5,0]},"up":{"uv":[17,21],"uv_size":[1,1.5]},"down":{"uv":[18,22.5],"uv_size":[1,-1.5]}}},{"origin":[-3.5348,0.7058,0.6728],"size":[1.0128,0,1.5677],"pivot":[-2.522,0.7069,0.6728],"rotation":[172.9302,-66.7677,91.8938],"uv":{"north":{"uv":[0,0],"uv_size":[1,0]},"east":{"uv":[0,0],"uv_size":[1.5,0]},"south":{"uv":[0,0],"uv_size":[1,0]},"west":{"uv":[0,0],"uv_size":[1.5,0]},"up":{"uv":[21,18],"uv_size":[1,1.5]},"down":{"uv":[19,22.5],"uv_size":[1,-1.5]}}},{"origin":[-1.8644,0.9324,0.8991],"size":[1.0128,0,0.5777],"pivot":[-1.8644,0.9335,0.8991],"rotation":[173.1721,51.9973,-89.0647],"uv":{"north":{"uv":[0,0],"uv_size":[1,0]},"east":{"uv":[0,0],"uv_size":[0.5,0]},"south":{"uv":[0,0],"uv_size":[1,0]},"west":{"uv":[0,0],"uv_size":[0.5,0]},"up":{"uv":[38,0],"uv_size":[1,0.5]},"down":{"uv":[1,38.5],"uv_size":[1,-0.5]}}},{"origin":[-1.7689,1.4668,1.1592],"size":[1.5628,0,0.5777],"pivot":[-1.7348,1.578,1.068],"rotation":[171.7328,74.1431,-94.3288],"uv":{"north":{"uv":[0,0],"uv_size":[1.5,0]},"east":{"uv":[0,0],"uv_size":[0.5,0]},"south":{"uv":[0,0],"uv_size":[1.5,0]},"west":{"uv":[0,0],"uv_size":[0.5,0]},"up":{"uv":[32,30],"uv_size":[1.5,0.5]},"down":{"uv":[32,31.5],"uv_size":[1.5,-0.5]}}},{"origin":[-0.9631,1.151,1.5475],"size":[1.1778,0,1.0177],"pivot":[-1.2571,1.6074,1.4987],"rotation":[178.2255,41.1357,-73.0807],"uv":{"north":{"uv":[0,0],"uv_size":[1,0]},"east":{"uv":[0,0],"uv_size":[1,0]},"south":{"uv":[0,0],"uv_size":[1,0]},"west":{"uv":[0,0],"uv_size":[1,0]},"up":{"uv":[6,28],"uv_size":[1,1]},"down":{"uv":[28,7],"uv_size":[1,-1]}}}]},{"name":"bone","parent":"group13","pivot":[-2.2637,1.4517,-1.2708],"rotation":[-62.5,0,0],"cubes":[{"origin":[-4.2077,4.728,1.6982],"size":[0.1878,0.1416,0.3712],"pivot":[-3.0332,4.9617,0.4865],"rotation":[-97.7042,-16.0396,-63.9129],"uv":{"north":{"uv":[16,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.3422,4.728,0.1879],"size":[0.1878,0.1416,0.3712],"pivot":[-3.0332,4.9617,0.4865],"rotation":[-97.7042,16.0396,63.9129],"uv":{"north":{"uv":[19,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.416,3.6549,0.0153],"size":[0.217,0.1413,0.217],"inflate":-0.001,"pivot":[-2.2,3.7952,0.0163],"rotation":[-102.7537,-12.4491,-43.6033],"uv":{"north":{"uv":[22,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1576,4.0089,-0.3532],"size":[0.327,0.4713,0.327],"inflate":-0.001,"pivot":[-2.2,3.7952,0.0163],"rotation":[118.2668,-25.3411,38.5199],"uv":{"north":{"uv":[54,58],"uv_size":[0.25,0.5]},"east":{"uv":[58,54],"uv_size":[0.25,0.5]},"south":{"uv":[55,58],"uv_size":[0.25,0.5]},"west":{"uv":[58,55],"uv_size":[0.25,0.5]},"up":{"uv":[25,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0327,2.7035,-0.1126],"size":[0.3577,0.3578,0.1348],"pivot":[-2.7248,2.7536,-0.7668],"rotation":[0,0,-45],"uv":{"north":{"uv":[26,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-1.4679,2.4401,-0.2102],"size":[0.3577,0.2477,0.1348],"pivot":[-2.1959,2.4544,-0.7668],"rotation":[0,0,-77.5],"uv":{"north":{"uv":[29,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-3.2898,2.4401,-0.2102],"size":[0.3577,0.2477,0.1348],"pivot":[-2.2041,2.4544,-0.7668],"rotation":[0,0,77.5],"uv":{"north":{"uv":[32,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,34.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group14","parent":"group13","pivot":[-2.2087,-11.6319,0.7292],"rotation":[0,1,0],"cubes":[{"origin":[-2.2866,-11.5191,0.5828],"size":[0.0127,1.8958,0.1509],"pivot":[-2.2866,-10.592,0.7337],"rotation":[-0.2502,-4.9785,-4.2618],"uv":{"north":{"uv":[36,38],"uv_size":[0.25,1.75]},"east":{"uv":[38,36],"uv_size":[0.25,1.75]},"south":{"uv":[37,38],"uv_size":[0.25,1.75]},"west":{"uv":[38,38],"uv_size":[0.25,1.75]},"up":{"uv":[49,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2735,-10.7028,0.096],"size":[0.0125,1.0811,0.4873],"inflate":-0.001,"pivot":[-2.2736,-10.5904,0.5834],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[11,46],"uv_size":[0.25,1]},"east":{"uv":[38,1],"uv_size":[0.5,1]},"south":{"uv":[46,11],"uv_size":[0.25,1]},"west":{"uv":[2,38],"uv_size":[0.5,1]},"up":{"uv":[58,58],"uv_size":[0.25,0.5]},"down":{"uv":[0,59.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.1928,-11.3345,0.4211],"size":[0.0127,0.6346,0.1576],"pivot":[-2.1928,-11.6686,0.5787],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[59,0],"uv_size":[0.25,0.5]},"east":{"uv":[1,59],"uv_size":[0.25,0.5]},"south":{"uv":[59,1],"uv_size":[0.25,0.5]},"west":{"uv":[2,59],"uv_size":[0.25,0.5]},"up":{"uv":[50,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1454,-11.4374,0.5108],"size":[0.0127,0.1046,0.0652],"pivot":[-2.1454,-12.3015,0.5759],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[51,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,51],"uv_size":[0.25,0.25]},"south":{"uv":[52,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,52],"uv_size":[0.25,0.25]},"up":{"uv":[53,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1376,-11.4938,0.5574],"size":[0.0127,0.0567,0.0181],"pivot":[-2.1376,-12.4058,0.5755],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[54,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,54],"uv_size":[0.25,0.25]},"south":{"uv":[55,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,55],"uv_size":[0.25,0.25]},"up":{"uv":[56,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2022,-10.2176,-0.1844],"size":[0.0129,0.6035,0.2858],"inflate":0.001,"pivot":[-2.2021,-10.5829,0.1012],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[59,2],"uv_size":[0.25,0.5]},"east":{"uv":[3,59],"uv_size":[0.25,0.5]},"south":{"uv":[59,3],"uv_size":[0.25,0.5]},"west":{"uv":[4,59],"uv_size":[0.25,0.5]},"up":{"uv":[57,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,57.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1287,-9.7251,-0.501],"size":[0.006,0.1186,0.1078],"pivot":[-2.1287,-10.5753,-0.3931],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[58,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,58],"uv_size":[0.25,0.25]},"south":{"uv":[59,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,59],"uv_size":[0.25,0.25]},"up":{"uv":[60,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2099,-11.5045,0.5881],"size":[0.006,0.0147,0.0236],"pivot":[-2.2099,-11.4574,0.5881],"rotation":[-48.502,-8.4785,-4.2463],"uv":{"north":{"uv":[61,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,61],"uv_size":[0.25,0.25]},"south":{"uv":[62,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,62],"uv_size":[0.25,0.25]},"up":{"uv":[63,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,63.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1984,-11.4155,0.4901],"size":[0.006,0.0357,0.0963],"pivot":[-2.1984,-11.4155,0.4901],"rotation":[-48.502,-8.4785,-4.2463],"uv":{"north":{"uv":[64,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,64],"uv_size":[0.25,0.25]},"south":{"uv":[65,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,65],"uv_size":[0.25,0.25]},"up":{"uv":[66,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,66.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2047,-9.7868,0.7491],"size":[0.006,0.1137,0.4822],"pivot":[-2.2047,-9.7648,-0.2875],"rotation":[-60.752,-8.4785,-4.2463],"uv":{"north":{"uv":[67,80],"uv_size":[0.25,0.25]},"east":{"uv":[59,4],"uv_size":[0.5,0.25]},"south":{"uv":[80,67],"uv_size":[0.25,0.25]},"west":{"uv":[5,59],"uv_size":[0.5,0.25]},"up":{"uv":[59,5],"uv_size":[0.25,0.5]},"down":{"uv":[6,59.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.1852,-9.8215,-0.4977],"size":[0.006,0.0962,1.9286],"pivot":[-2.1852,-9.8215,-0.3898],"rotation":[-60.752,-8.4785,-4.2463],"uv":{"north":{"uv":[68,80],"uv_size":[0.25,0.25]},"east":{"uv":[0,39],"uv_size":[1.75,0.25]},"south":{"uv":[80,68],"uv_size":[0.25,0.25]},"west":{"uv":[39,0],"uv_size":[1.75,0.25]},"up":{"uv":[39,1],"uv_size":[0.25,1.75]},"down":{"uv":[2,40.75],"uv_size":[0.25,-1.75]}}},{"origin":[-2.2198,-9.7211,0.8282],"size":[0.006,0.0917,0.4408],"pivot":[-2.2198,-9.7211,-0.2084],"rotation":[-60.752,-8.4785,-4.2463],"uv":{"north":{"uv":[69,80],"uv_size":[0.25,0.25]},"east":{"uv":[59,6],"uv_size":[0.5,0.25]},"south":{"uv":[80,69],"uv_size":[0.25,0.25]},"west":{"uv":[7,59],"uv_size":[0.5,0.25]},"up":{"uv":[59,7],"uv_size":[0.25,0.5]},"down":{"uv":[8,59.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.2047,-9.7882,-0.0794],"size":[0.006,0.1621,0.6597],"pivot":[-2.2047,-9.7648,-0.2875],"rotation":[-60.752,-8.4785,-4.2463],"uv":{"north":{"uv":[70,80],"uv_size":[0.25,0.25]},"east":{"uv":[59,8],"uv_size":[0.5,0.25]},"south":{"uv":[80,70],"uv_size":[0.25,0.25]},"west":{"uv":[9,59],"uv_size":[0.5,0.25]},"up":{"uv":[59,9],"uv_size":[0.25,0.5]},"down":{"uv":[10,59.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.141,-9.8207,-0.3941],"size":[0.0127,0.2128,0.0836],"pivot":[-2.141,-10.5765,-0.3105],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[71,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,71],"uv_size":[0.25,0.25]},"south":{"uv":[72,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,72],"uv_size":[0.25,0.25]},"up":{"uv":[73,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,73.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1602,-9.9775,-0.3119],"size":[0.0127,0.3677,0.1307],"pivot":[-2.1602,-10.5785,-0.1812],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[74,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,74],"uv_size":[0.25,0.25]},"south":{"uv":[75,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,75],"uv_size":[0.25,0.25]},"up":{"uv":[76,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,76.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.145,-11.6261,0.6823],"size":[0.0127,0.1123,0.0432],"pivot":[-2.145,-12.4825,0.7255],"rotation":[-0.2502,-4.9785,-4.2618],"uv":{"north":{"uv":[77,80],"uv_size":[0.25,0.25]},"east":{"uv":[80,77],"uv_size":[0.25,0.25]},"south":{"uv":[78,80],"uv_size":[0.25,0.25]},"west":{"uv":[80,78],"uv_size":[0.25,0.25]},"up":{"uv":[79,80],"uv_size":[0.25,0.25]},"down":{"uv":[80,79.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2052,-11.628,0.6851],"size":[0.0127,0.1556,0.0552],"pivot":[-2.2052,-11.628,0.6862],"rotation":[43.1645,-4.9785,-4.2618],"uv":{"north":{"uv":[80,80],"uv_size":[0.25,0.25]},"east":{"uv":[0,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,0],"uv_size":[0.25,0.25]},"west":{"uv":[1,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2084,-11.495,0.7328],"size":[0.0127,0.0964,0.0903],"pivot":[-2.2084,-11.6094,0.7061],"rotation":[43.1645,-4.9785,-4.2618],"uv":{"north":{"uv":[81,2],"uv_size":[0.25,0.25]},"east":{"uv":[3,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,3],"uv_size":[0.25,0.25]},"west":{"uv":[4,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,4],"uv_size":[0.25,0.25]},"down":{"uv":[5,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2117,-11.3752,1.1822],"size":[0.0127,0.0571,0.0553],"pivot":[-2.2117,-12.092,1.1555],"rotation":[43.1645,-4.9785,-4.2618],"uv":{"north":{"uv":[81,5],"uv_size":[0.25,0.25]},"east":{"uv":[6,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,6],"uv_size":[0.25,0.25]},"west":{"uv":[7,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,81.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group15","parent":"group13","pivot":[-2.1913,-11.6319,0.7292],"rotation":[0,-1,0],"cubes":[{"origin":[-2.1261,-11.5191,0.5828],"size":[0.0127,1.8958,0.1509],"pivot":[-2.1134,-10.592,0.7337],"rotation":[-0.2502,4.9785,4.2618],"uv":{"north":{"uv":[3,39],"uv_size":[0.25,1.75]},"east":{"uv":[39,3],"uv_size":[0.25,1.75]},"south":{"uv":[39,5],"uv_size":[0.25,1.75]},"west":{"uv":[39,7],"uv_size":[0.25,1.75]},"up":{"uv":[81,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1391,-10.7028,0.096],"size":[0.0125,1.0811,0.4873],"inflate":-0.001,"pivot":[-2.1264,-10.5904,0.5834],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[12,46],"uv_size":[0.25,1]},"east":{"uv":[38,2],"uv_size":[0.5,1]},"south":{"uv":[46,12],"uv_size":[0.25,1]},"west":{"uv":[3,38],"uv_size":[0.5,1]},"up":{"uv":[59,10],"uv_size":[0.25,0.5]},"down":{"uv":[11,59.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.2199,-11.3345,0.4211],"size":[0.0127,0.6346,0.1576],"pivot":[-2.2072,-11.6686,0.5787],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[59,11],"uv_size":[0.25,0.5]},"east":{"uv":[12,59],"uv_size":[0.25,0.5]},"south":{"uv":[59,12],"uv_size":[0.25,0.5]},"west":{"uv":[13,59],"uv_size":[0.25,0.5]},"up":{"uv":[81,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2673,-11.4374,0.5108],"size":[0.0127,0.1046,0.0652],"pivot":[-2.2546,-12.3015,0.5759],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[81,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2751,-11.4938,0.5574],"size":[0.0127,0.0567,0.0181],"pivot":[-2.2624,-12.4058,0.5755],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[81,13],"uv_size":[0.25,0.25]},"east":{"uv":[14,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2108,-10.2176,-0.1844],"size":[0.0129,0.6035,0.2858],"inflate":0.001,"pivot":[-2.1979,-10.5829,0.1012],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[59,13],"uv_size":[0.25,0.5]},"east":{"uv":[14,59],"uv_size":[0.25,0.5]},"south":{"uv":[59,14],"uv_size":[0.25,0.5]},"west":{"uv":[15,59],"uv_size":[0.25,0.5]},"up":{"uv":[81,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2773,-9.7251,-0.501],"size":[0.006,0.1186,0.1078],"pivot":[-2.2713,-10.5753,-0.3931],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[81,17],"uv_size":[0.25,0.25]},"east":{"uv":[18,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,18],"uv_size":[0.25,0.25]},"west":{"uv":[19,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2208,-9.8215,-0.4977],"size":[0.006,0.0962,1.9286],"pivot":[-2.2148,-9.8215,-0.3898],"rotation":[-60.752,8.4785,4.2463],"uv":{"north":{"uv":[81,20],"uv_size":[0.25,0.25]},"east":{"uv":[9,39],"uv_size":[1.75,0.25]},"south":{"uv":[21,81],"uv_size":[0.25,0.25]},"west":{"uv":[39,10],"uv_size":[1.75,0.25]},"up":{"uv":[39,11],"uv_size":[0.25,1.75]},"down":{"uv":[15,40.75],"uv_size":[0.25,-1.75]}}},{"origin":[-2.1961,-11.5045,0.5881],"size":[0.006,0.0147,0.0236],"pivot":[-2.1901,-11.4574,0.5881],"rotation":[-48.502,8.4785,4.2463],"uv":{"north":{"uv":[81,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2076,-11.4155,0.4901],"size":[0.006,0.0357,0.0963],"pivot":[-2.2016,-11.4155,0.4901],"rotation":[-48.502,8.4785,4.2463],"uv":{"north":{"uv":[81,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2013,-9.7868,0.7491],"size":[0.006,0.1137,0.4822],"pivot":[-2.1953,-9.7648,-0.2875],"rotation":[-60.752,8.4785,4.2463],"uv":{"north":{"uv":[81,27],"uv_size":[0.25,0.25]},"east":{"uv":[59,15],"uv_size":[0.5,0.25]},"south":{"uv":[28,81],"uv_size":[0.25,0.25]},"west":{"uv":[16,59],"uv_size":[0.5,0.25]},"up":{"uv":[59,16],"uv_size":[0.25,0.5]},"down":{"uv":[17,59.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.1862,-9.7211,0.8282],"size":[0.006,0.0917,0.4408],"pivot":[-2.1802,-9.7211,-0.2084],"rotation":[-60.752,8.4785,4.2463],"uv":{"north":{"uv":[81,28],"uv_size":[0.25,0.25]},"east":{"uv":[59,17],"uv_size":[0.5,0.25]},"south":{"uv":[29,81],"uv_size":[0.25,0.25]},"west":{"uv":[18,59],"uv_size":[0.5,0.25]},"up":{"uv":[59,18],"uv_size":[0.25,0.5]},"down":{"uv":[19,59.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.2013,-9.7882,-0.0794],"size":[0.006,0.1621,0.6597],"pivot":[-2.1953,-9.7648,-0.2875],"rotation":[-60.752,8.4785,4.2463],"uv":{"north":{"uv":[81,29],"uv_size":[0.25,0.25]},"east":{"uv":[59,19],"uv_size":[0.5,0.25]},"south":{"uv":[30,81],"uv_size":[0.25,0.25]},"west":{"uv":[20,59],"uv_size":[0.5,0.25]},"up":{"uv":[59,20],"uv_size":[0.25,0.5]},"down":{"uv":[21,59.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.2717,-9.8207,-0.3941],"size":[0.0127,0.2128,0.0836],"pivot":[-2.259,-10.5765,-0.3105],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[81,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2526,-9.9775,-0.3119],"size":[0.0127,0.3677,0.1307],"pivot":[-2.2398,-10.5785,-0.1812],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[81,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2677,-11.6261,0.6823],"size":[0.0127,0.1123,0.0432],"pivot":[-2.255,-12.4825,0.7255],"rotation":[-0.2502,4.9785,4.2618],"uv":{"north":{"uv":[81,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2075,-11.628,0.6851],"size":[0.0127,0.1556,0.0552],"pivot":[-2.1948,-11.628,0.6862],"rotation":[43.1645,4.9785,4.2618],"uv":{"north":{"uv":[81,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2044,-11.495,0.7328],"size":[0.0127,0.0964,0.0903],"pivot":[-2.1916,-11.6094,0.7061],"rotation":[43.1645,4.9785,4.2618],"uv":{"north":{"uv":[81,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2011,-11.3752,1.1822],"size":[0.0127,0.0571,0.0553],"pivot":[-2.1883,-12.092,1.1555],"rotation":[43.1645,4.9785,4.2618],"uv":{"north":{"uv":[81,45],"uv_size":[0.25,0.25]},"east":{"uv":[46,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,46],"uv_size":[0.25,0.25]},"west":{"uv":[47,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,47],"uv_size":[0.25,0.25]},"down":{"uv":[48,81.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group16","parent":"group13","pivot":[-2.3584,-9.6339,0.7603],"rotation":[0,0,0.25],"cubes":[{"origin":[-2.2913,-10.8298,0.7342],"size":[0.0717,1.1985,0.0224],"pivot":[-2.2913,-10.4797,0.7566],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[13,46],"uv_size":[0.25,1]},"east":{"uv":[46,13],"uv_size":[0.25,1]},"south":{"uv":[14,46],"uv_size":[0.25,1]},"west":{"uv":[46,14],"uv_size":[0.25,1]},"up":{"uv":[81,48],"uv_size":[0.25,0.25]},"down":{"uv":[49,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1966,-11.0618,0.729],"size":[0.0423,0.2358,0.0224],"pivot":[-2.1966,-11.6744,0.7514],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[81,49],"uv_size":[0.25,0.25]},"east":{"uv":[50,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,50],"uv_size":[0.25,0.25]},"west":{"uv":[51,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,51],"uv_size":[0.25,0.25]},"down":{"uv":[52,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1779,-11.2969,0.728],"size":[0.0221,0.2358,0.0224],"pivot":[-2.1779,-11.9095,0.7503],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[81,52],"uv_size":[0.25,0.25]},"east":{"uv":[53,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,53],"uv_size":[0.25,0.25]},"west":{"uv":[54,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,54],"uv_size":[0.25,0.25]},"down":{"uv":[55,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2264,-11.375,0.7307],"size":[0.0217,0.0762,0.0224],"pivot":[-2.2264,-11.2988,0.753],"rotation":[-0.3589,-46.0168,-4.2752],"uv":{"north":{"uv":[81,55],"uv_size":[0.25,0.25]},"east":{"uv":[56,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,56],"uv_size":[0.25,0.25]},"west":{"uv":[57,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,57],"uv_size":[0.25,0.25]},"down":{"uv":[58,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1649,-11.168,0.7458],"size":[0.0154,0.1079,0.0224],"pivot":[-2.1649,-11.9085,0.7682],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[81,58],"uv_size":[0.25,0.25]},"east":{"uv":[59,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,59],"uv_size":[0.25,0.25]},"west":{"uv":[60,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,60],"uv_size":[0.25,0.25]},"down":{"uv":[61,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1716,-10.9523,0.7631],"size":[0.0154,0.1281,0.0224],"pivot":[-2.1716,-11.6726,0.7855],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[81,61],"uv_size":[0.25,0.25]},"east":{"uv":[62,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,62],"uv_size":[0.25,0.25]},"west":{"uv":[63,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,63],"uv_size":[0.25,0.25]},"down":{"uv":[64,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2437,-10.9523,0.7631],"size":[0.0154,0.1281,0.0224],"pivot":[-2.2284,-11.6726,0.7855],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[81,64],"uv_size":[0.25,0.25]},"east":{"uv":[65,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,65],"uv_size":[0.25,0.25]},"west":{"uv":[66,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,66],"uv_size":[0.25,0.25]},"down":{"uv":[67,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2505,-11.168,0.7458],"size":[0.0154,0.1079,0.0224],"pivot":[-2.2351,-11.9085,0.7682],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[81,67],"uv_size":[0.25,0.25]},"east":{"uv":[68,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,68],"uv_size":[0.25,0.25]},"west":{"uv":[69,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,69],"uv_size":[0.25,0.25]},"down":{"uv":[70,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1953,-11.375,0.7307],"size":[0.0217,0.0762,0.0224],"pivot":[-2.1736,-11.2988,0.753],"rotation":[-0.3589,46.0168,4.2752],"uv":{"north":{"uv":[81,70],"uv_size":[0.25,0.25]},"east":{"uv":[71,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,71],"uv_size":[0.25,0.25]},"west":{"uv":[72,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,72],"uv_size":[0.25,0.25]},"down":{"uv":[73,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3584,-11.6376,0.7379],"size":[0.0205,2.0036,0.0224],"pivot":[-2.3584,-9.6339,0.7603],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[16,39],"uv_size":[0.25,1.75]},"east":{"uv":[39,16],"uv_size":[0.25,1.75]},"south":{"uv":[17,39],"uv_size":[0.25,1.75]},"west":{"uv":[18,39],"uv_size":[0.25,1.75]},"up":{"uv":[81,73],"uv_size":[0.25,0.25]},"down":{"uv":[74,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3584,-9.7891,0.6932],"size":[0.0205,0.1335,0.0224],"pivot":[-2.3584,-9.6341,0.791],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[81,74],"uv_size":[0.25,0.25]},"east":{"uv":[75,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,75],"uv_size":[0.25,0.25]},"west":{"uv":[76,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,76],"uv_size":[0.25,0.25]},"down":{"uv":[77,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3584,-9.6556,0.6571],"size":[0.0205,0.0217,0.0808],"pivot":[-2.3584,-9.6338,0.7379],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[81,77],"uv_size":[0.25,0.25]},"east":{"uv":[78,81],"uv_size":[0.25,0.25]},"south":{"uv":[81,78],"uv_size":[0.25,0.25]},"west":{"uv":[79,81],"uv_size":[0.25,0.25]},"up":{"uv":[81,79],"uv_size":[0.25,0.25]},"down":{"uv":[80,81.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3584,-9.87,0.7156],"size":[0.0205,0.2143,0.0224],"pivot":[-2.3584,-9.6342,0.8133],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[81,80],"uv_size":[0.25,0.25]},"east":{"uv":[81,81],"uv_size":[0.25,0.25]},"south":{"uv":[0,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3584,-9.7055,0.6708],"size":[0.0205,0.05,0.0224],"pivot":[-2.3584,-9.634,0.7686],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[2,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,2],"uv_size":[0.25,0.25]},"south":{"uv":[3,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,3],"uv_size":[0.25,0.25]},"up":{"uv":[4,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.3328,-9.9561,0.7365],"size":[0.0205,0.3122,0.0224],"pivot":[-2.3328,-9.9561,0.7365],"rotation":[14.7459,-0.0196,-4.5334],"uv":{"north":{"uv":[5,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,5],"uv_size":[0.25,0.25]},"south":{"uv":[6,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,6],"uv_size":[0.25,0.25]},"up":{"uv":[7,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,7.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group17","parent":"group13","pivot":[-2.0416,-9.6339,0.7603],"rotation":[0,0,-0.25],"cubes":[{"origin":[-2.1804,-10.8298,0.7342],"size":[0.0717,1.1985,0.0224],"pivot":[-2.1087,-10.4797,0.7566],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[15,46],"uv_size":[0.25,1]},"east":{"uv":[46,15],"uv_size":[0.25,1]},"south":{"uv":[16,46],"uv_size":[0.25,1]},"west":{"uv":[46,16],"uv_size":[0.25,1]},"up":{"uv":[8,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2457,-11.0618,0.729],"size":[0.0423,0.2358,0.0224],"pivot":[-2.2034,-11.6744,0.7514],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[9,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2442,-11.2969,0.728],"size":[0.0221,0.2358,0.0224],"pivot":[-2.2221,-11.9095,0.7503],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[12,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1953,-11.375,0.7307],"size":[0.0217,0.0762,0.0224],"pivot":[-2.1736,-11.2988,0.753],"rotation":[-0.3589,46.0168,4.2752],"uv":{"north":{"uv":[15,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2505,-11.168,0.7458],"size":[0.0154,0.1079,0.0224],"pivot":[-2.2351,-11.9085,0.7682],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[18,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,18],"uv_size":[0.25,0.25]},"south":{"uv":[19,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,19],"uv_size":[0.25,0.25]},"up":{"uv":[20,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2437,-10.9523,0.7631],"size":[0.0154,0.1281,0.0224],"pivot":[-2.2284,-11.6726,0.7855],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[21,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,21],"uv_size":[0.25,0.25]},"south":{"uv":[22,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,22],"uv_size":[0.25,0.25]},"up":{"uv":[23,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1716,-10.9523,0.7631],"size":[0.0154,0.1281,0.0224],"pivot":[-2.1716,-11.6726,0.7855],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[24,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.1649,-11.168,0.7458],"size":[0.0154,0.1079,0.0224],"pivot":[-2.1649,-11.9085,0.7682],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[27,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,27],"uv_size":[0.25,0.25]},"south":{"uv":[28,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,28],"uv_size":[0.25,0.25]},"up":{"uv":[29,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.2264,-11.375,0.7307],"size":[0.0217,0.0762,0.0224],"pivot":[-2.2264,-11.2988,0.753],"rotation":[-0.3589,-46.0168,-4.2752],"uv":{"north":{"uv":[30,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,30],"uv_size":[0.25,0.25]},"south":{"uv":[31,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,31],"uv_size":[0.25,0.25]},"up":{"uv":[32,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,32.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0621,-11.6376,0.7379],"size":[0.0205,2.0036,0.0224],"pivot":[-2.0416,-9.6339,0.7603],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[39,18],"uv_size":[0.25,1.75]},"east":{"uv":[19,39],"uv_size":[0.25,1.75]},"south":{"uv":[39,20],"uv_size":[0.25,1.75]},"west":{"uv":[22,39],"uv_size":[0.25,1.75]},"up":{"uv":[33,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0621,-9.7891,0.6932],"size":[0.0205,0.1335,0.0224],"pivot":[-2.0416,-9.6341,0.791],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[34,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0621,-9.6556,0.6571],"size":[0.0205,0.0217,0.0808],"pivot":[-2.0416,-9.6338,0.7379],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[37,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0621,-9.87,0.7156],"size":[0.0205,0.2143,0.0224],"pivot":[-2.0416,-9.6342,0.8133],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[40,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,40],"uv_size":[0.25,0.25]},"south":{"uv":[41,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,41],"uv_size":[0.25,0.25]},"up":{"uv":[42,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0621,-9.7055,0.6708],"size":[0.0205,0.05,0.0224],"pivot":[-2.0416,-9.634,0.7686],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[43,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,43],"uv_size":[0.25,0.25]},"south":{"uv":[44,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,44],"uv_size":[0.25,0.25]},"up":{"uv":[45,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-2.0877,-9.9561,0.7365],"size":[0.0205,0.3122,0.0224],"pivot":[-2.0672,-9.9561,0.7365],"rotation":[14.7459,0.0196,4.5334],"uv":{"north":{"uv":[46,82],"uv_size":[0.25,0.25]},"east":{"uv":[82,46],"uv_size":[0.25,0.25]},"south":{"uv":[47,82],"uv_size":[0.25,0.25]},"west":{"uv":[82,47],"uv_size":[0.25,0.25]},"up":{"uv":[48,82],"uv_size":[0.25,0.25]},"down":{"uv":[82,48.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group18","parent":"group13","pivot":[-2.9521,0.4527,0.874],"rotation":[60,0,0]},{"name":"group19","parent":"group18","pivot":[-1.6105,1.7039,3.082],"rotation":[160.4087,34.9817,54.2134]},{"name":"group20","parent":"group18","pivot":[-2.7895,1.7039,3.082],"rotation":[160.4087,-34.9817,-54.2134]},{"name":"positioning","pivot":[0,4.4442,0.1281]},{"name":"ground","parent":"positioning","pivot":[0,0,0]},{"name":"thirdperson_hand","parent":"positioning","pivot":[-0.0156,6.125,-2.0625]},{"name":"fixed","parent":"positioning","pivot":[0.7969,5.125,-1.0625],"rotation":[0,90,0]},{"name":"view","pivot":[0,4.4442,0.1281]},{"name":"idle_view","parent":"view","pivot":[0,63.25,-1.75]},{"name":"camera","pivot":[0,63.25,-1.75]},{"name":"constraint","pivot":[0,4.4442,0.1281]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/bayonet.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/bayonet.anim.json new file mode 100644 index 0000000..720da43 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/bayonet.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"draw":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[60.444,23.132,-131.18],"0.04":[70.661,20.192,-114.8],"0.08":[82.293,1.837,-77.496],"0.12":[89.366,-6.99,-98.48],"0.17":[99.081,1.766,-157.261],"0.21":[100.554,6.272,-177.568],"0.25":[105.238,3.038,-177.141],"0.29":[113.836,-1.351,-177.365],"0.33":[136.226,-5.631,-179.655],"0.38":[148.515,-3.983,-185.937],"0.42":[149.54,-1.726,-194.436],"0.46":[156.223,-9.406,-197.414],"0.5":[166.99,-25.155,-196.181],"0.54":[172.204,-38.286,-189.26],"0.58":[178.277,-54.612,-190.129],"0.62":[169.386,-65.559,-179.879],"0.67":[120.489,-64.324,-134.107],"0.71":[101.274,-52.156,-114.862],"0.75":[98.745,-47.242,-107.998],"0.79":[95.549,-37.97,-101.426],"0.83":[90.358,-24.663,-96.525],"0.88":[87.456,-19.284,-93.43],"0.92":[85.904,-19.407,-91.32],"0.96":[85.136,-20.251,-90.32],"1.0":[84.761,-25.77,-89.949],"1.04":[84.194,-35.229,-89.449],"1.08":[84.16,-44.46,-89.682],"1.12":[85.91,-49.27,-92.033]},"position":{"0.0":[-12.82,-35.773,-10.05],"0.04":[-12.844,-35.226,-10.512],"0.08":[-12.934,-32.669,-12.608],"0.12":[-13.029,-28.715,-15.681],"0.17":[-13.009,-25.331,-18.211],"0.21":[-12.824,-23.796,-19.16],"0.25":[-12.598,-23.226,-19.393],"0.29":[-12.397,-22.539,-19.515],"0.33":[-12.241,-20.944,-19.476],"0.38":[-12.187,-19.966,-19.328],"0.42":[-12.188,-19.731,-19.148],"0.46":[-12.186,-19.661,-18.991],"0.5":[-12.173,-19.767,-18.821],"0.54":[-12.138,-19.984,-18.653],"0.58":[-12.132,-20.307,-18.515],"0.62":[-12.085,-20.715,-18.471],"0.67":[-12.028,-21.99,-18.589],"0.71":[-11.928,-23.761,-19.004],"0.75":[-12,-24.718,-19.089],"0.79":[-12.026,-25.32,-19.103],"0.83":[-11.99,-25.807,-19.106],"0.88":[-11.97,-26.171,-19.108],"0.92":[-11.967,-26.454,-19.106],"0.96":[-11.971,-26.596,-19.105],"1.0":[-11.971,-26.512,-19.105],"1.04":[-11.97,-26.352,-19.106],"1.08":[-11.97,-26.193,-19.106],"1.12":[-11.969,-26.114,-19.107]}},"bayonet":{"rotation":{"0.0":[19.417,9.535,166.149],"0.04":[19.749,9.63,166.35],"0.08":[20.052,9.584,166.185],"0.12":[19.905,15.827,168.447],"0.17":[24.337,35.47,176.923],"0.21":[78.934,70.725,240.799],"0.25":[152.007,46.098,321.74],"0.29":[158.436,26.809,332.74],"0.33":[162.156,5.668,340.009],"0.38":[169.087,-14.551,339.414],"0.42":[195.907,-30.949,309.311],"0.46":[225.505,-71.622,291.518],"0.5":[209.804,-116.589,314.436],"0.54":[215.356,-146.862,324.284],"0.58":[221.51,-173.773,326.845],"0.62":[225.506,-190.003,332.867],"0.67":[221.743,-201.582,352.582],"0.71":[214.179,-208.116,358.162],"0.75":[205.473,-198.524,349.142],"0.79":[199.489,-189.758,346.372],"0.83":[199.411,-189.57,346.172],"0.88":[199.411,-189.556,346.169],"0.92":[199.432,-189.563,346.173],"0.96":[199.426,-189.57,346.163],"1.0":[199.427,-189.574,346.165],"1.04":[199.43,-189.578,346.176],"1.08":[199.435,-189.564,346.178],"1.12":[199.454,-189.575,346.194]},"position":{"0.0":[5.191,13.196,-4.244],"0.04":[5.188,13.175,-4.239],"0.08":[5.207,13.133,-4.223],"0.12":[5.13,13.436,-4.596],"0.17":[5.346,13.917,-5.012],"0.21":[6.065,14.128,-4.845],"0.25":[6.535,14.007,-4.125],"0.29":[6.885,13.866,-3.598],"0.33":[7.131,13.844,-2.939],"0.38":[7.038,14.536,-2.362],"0.42":[6.301,15.683,-1.859],"0.46":[4.814,16.282,-0.334],"0.5":[2.549,14.737,0.158],"0.54":[1.467,13.832,-0.338],"0.58":[0.933,12.732,-1.726],"0.62":[1.414,12.506,-2.676],"0.67":[2.62,13.79,-3.868],"0.71":[5.177,14.08,-4.689],"0.75":[5.587,13.566,-4.632],"0.79":[5.27,13.257,-4.367],"0.83":[5.196,13.188,-4.241],"0.88":[5.195,13.192,-4.245],"0.92":[5.194,13.19,-4.241],"0.96":[5.199,13.192,-4.244],"1.0":[5.192,13.194,-4.241],"1.04":[5.195,13.191,-4.243],"1.08":[5.196,13.197,-4.241],"1.12":[5.206,13.195,-4.238]}},"lefthand":{"rotation":{"0.0":[125.978,7.34,59.673],"0.04":[125.979,7.338,59.668],"0.08":[125.985,7.336,59.667],"0.12":[125.977,7.339,59.675],"0.17":[125.977,7.34,59.667],"0.21":[125.98,7.353,59.672],"0.25":[125.936,7.96,60.191],"0.29":[125.863,10.342,62.263],"0.33":[126.096,14.581,66.093],"0.38":[127.073,19.72,71.18],"0.42":[129.082,25.114,77.269],"0.46":[132.173,30.041,84.031],"0.5":[135.786,33.804,90.762],"0.54":[138.905,36.109,96.384],"0.58":[140.313,36.905,99.693],"0.62":[139.679,36.597,100.69],"0.67":[137.934,36.045,100.715],"0.71":[135.967,35.442,100.383],"0.75":[134.271,34.928,99.931],"0.79":[133.362,34.597,99.551],"0.83":[132.723,35.032,98.568],"0.88":[131.434,36.333,96.44],"0.92":[129.572,38.197,93.431],"0.96":[127.289,40.28,89.849],"1.0":[124.787,42.282,86.074],"1.04":[122.414,43.934,82.603],"1.08":[120.604,45.063,80.022],"1.12":[119.824,45.507,78.923]},"position":{"0.0":[21.192,-34.985,-21.197],"0.04":[20.733,-34.558,-21.625],"0.08":[20.094,-33.951,-22.204],"0.12":[19.376,-33.238,-22.84],"0.17":[18.687,-32.502,-23.413],"0.21":[18.146,-31.828,-23.84],"0.25":[17.788,-31.216,-24.083],"0.29":[17.518,-30.535,-24.24],"0.33":[17.301,-29.767,-24.348],"0.38":[17.13,-28.974,-24.427],"0.42":[17.008,-28.207,-24.474],"0.46":[16.936,-27.505,-24.493],"0.5":[16.884,-26.941,-24.5],"0.54":[16.858,-26.542,-24.505],"0.58":[16.84,-26.361,-24.499],"0.62":[16.84,-26.386,-24.489],"0.67":[16.845,-26.579,-24.462],"0.71":[16.837,-26.837,-24.435],"0.75":[16.804,-27.108,-24.423],"0.79":[16.732,-27.333,-24.453],"0.83":[16.609,-27.517,-24.547],"0.88":[16.432,-27.708,-24.68],"0.92":[16.22,-27.901,-24.84],"0.96":[16.003,-28.075,-25.014],"1.0":[15.793,-28.228,-25.174],"1.04":[15.618,-28.348,-25.31],"1.08":[15.499,-28.425,-25.407],"1.12":[15.448,-28.463,-25.444]},"scale":[1,1.5,1]},"righthand":{"position":[0,3.85,-2.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_deploy1"}}},"melee_1":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[88.114,0.802,133.206],"0.04":[66.622,12.371,134.328],"0.08":[51.448,23.609,130.508],"0.12":[40.283,31.412,122.389],"0.17":[30.288,17.219,126.363],"0.21":[27.006,13.883,154.389],"0.25":[34.288,22.139,171.736],"0.29":[52.204,33.061,185.222],"0.33":[76.407,40.036,202.462],"0.38":[98.125,39.149,219.806],"0.42":[107.436,32.311,230.435],"0.46":[105.327,23.318,235.299],"0.5":[99.072,13.8,238.94],"0.54":[94.913,5.012,244.555],"0.58":[95.066,-3.484,253.78],"0.62":[95.199,-13.634,267.06],"0.67":[90.033,-23.364,282.421],"0.71":[80.809,-28.944,295.65],"0.75":[74.139,-32.212,300.609],"0.79":[73.111,-37.15,296.314],"0.83":[77.243,-42.783,285.825],"0.88":[82.406,-46.676,275.84],"0.92":[85.031,-48.684,270.845],"0.96":[86.016,-49.569,268.794],"1.0":[86.211,-49.702,268.184],"1.04":[86.051,-49.508,268.221],"1.08":[85.847,-49.268,268.315],"1.12":[85.916,-49.286,267.95]},"position":{"0.0":[-15.641,-22.8,-25.776],"0.04":[-8.222,-24.051,-29.071],"0.08":[-0.093,-26.436,-29.207],"0.12":[6.657,-29.289,-26.037],"0.17":[15.389,-31.728,-17.282],"0.21":[12.794,-39.753,-12.404],"0.25":[9.179,-43.389,-10.997],"0.29":[6.943,-44.478,-11.927],"0.33":[5.308,-44.453,-13.662],"0.38":[3.791,-43.968,-15.44],"0.42":[1.721,-43.512,-17.193],"0.46":[-1.197,-42.986,-18.965],"0.5":[-4.361,-42.025,-20.396],"0.54":[-6.811,-40.591,-21.438],"0.58":[-7.808,-38.572,-22.431],"0.62":[-7.667,-35.766,-23.521],"0.67":[-7.417,-32.513,-24.259],"0.71":[-7.762,-29.746,-24.348],"0.75":[-8.656,-28.094,-23.937],"0.79":[-9.706,-27.363,-23.262],"0.83":[-10.653,-27.109,-22.373],"0.88":[-11.346,-26.886,-21.427],"0.92":[-11.72,-26.557,-20.553],"0.96":[-11.858,-26.265,-19.823],"1.0":[-11.877,-26.128,-19.412],"1.04":[-11.87,-26.083,-19.183],"1.08":[-11.894,-26.093,-19.112],"1.12":[-11.969,-26.11,-19.105]}},"bayonet":{"rotation":{"0.0":[19.384,9.528,166.092],"0.04":[19.423,9.512,166.164],"0.08":[19.392,9.471,166.127],"0.12":[19.435,9.484,166.153],"0.17":[19.623,8.896,166.054],"0.21":[19.543,9.144,165.939],"0.25":[19.409,9.437,166.141],"0.29":[19.393,9.488,166.16],"0.33":[19.417,9.503,166.226],"0.38":[19.458,9.547,166.236],"0.42":[19.45,9.57,166.166],"0.46":[19.399,9.554,166.168],"0.5":[19.462,9.589,166.15],"0.54":[19.515,9.594,166.15],"0.58":[19.565,9.587,166.196],"0.62":[19.412,9.562,166.17],"0.67":[19.596,9.566,166.076],"0.71":[19.512,9.52,166.086],"0.75":[19.431,9.497,166.169],"0.79":[19.433,9.494,166.159],"0.83":[19.439,9.539,166.173],"0.88":[19.438,9.558,166.17],"0.92":[19.447,9.567,166.165],"0.96":[19.453,9.549,166.176],"1.0":[19.432,9.548,166.169],"1.04":[19.442,9.559,166.177],"1.08":[19.444,9.557,166.182],"1.12":[19.447,9.562,166.182]},"position":{"0.0":[5.189,13.101,-4.216],"0.04":[5.154,13.035,-4.181],"0.08":[5.182,13.117,-4.214],"0.12":[5.189,13.197,-4.237],"0.17":[5.23,12.872,-4.205],"0.21":[5.261,12.984,-4.28],"0.25":[5.187,13.193,-4.251],"0.29":[5.185,13.191,-4.255],"0.33":[5.182,13.186,-4.243],"0.38":[5.19,13.192,-4.248],"0.42":[5.197,13.184,-4.252],"0.46":[5.189,13.189,-4.252],"0.5":[5.207,13.176,-4.237],"0.54":[5.212,13.171,-4.235],"0.58":[5.207,13.188,-4.225],"0.62":[5.194,13.204,-4.242],"0.67":[5.187,13.169,-4.215],"0.71":[5.197,13.174,-4.222],"0.75":[5.196,13.188,-4.237],"0.79":[5.19,13.203,-4.241],"0.83":[5.2,13.196,-4.235],"0.88":[5.193,13.199,-4.24],"0.92":[5.202,13.198,-4.24],"0.96":[5.194,13.201,-4.242],"1.0":[5.193,13.201,-4.243],"1.04":[5.197,13.203,-4.239],"1.08":[5.199,13.199,-4.241],"1.12":[5.201,13.193,-4.238]}},"lefthand":{"rotation":{"0.0":[62.489,-1.706,70.419],"0.04":[48.009,-7.833,65.384],"0.08":[34.056,-14.756,61.705],"0.12":[21.528,-21.565,59.39],"0.17":[12.316,-26.995,57.956],"0.21":[8.071,-30.391,56.212],"0.25":[11.176,-31.055,52.568],"0.29":[19.258,-28.723,48.289],"0.33":[27.836,-23.787,46.617],"0.38":[34.089,-18.001,49.011],"0.42":[39.745,-11.743,54.696],"0.46":[46.235,-5.391,62.461],"0.5":[53.972,0.4,71.501],"0.54":[62.857,5.029,80.738],"0.58":[72.429,8.273,89.117],"0.62":[82.157,10.332,95.509],"0.67":[92.181,11.902,98.623],"0.71":[102.521,13.506,99.328],"0.75":[112.178,15.515,98.347],"0.79":[120.341,18.221,96.533],"0.83":[125.631,21.854,94.657],"0.88":[127.223,27.118,91.817],"0.92":[125.526,33.453,87.535],"0.96":[122.196,39.321,82.651],"1.0":[120.006,43.239,79.322],"1.04":[119.482,44.899,78.332],"1.08":[119.661,45.212,78.635],"1.12":[119.824,45.507,78.923]},"position":{"0.0":[31.796,-31.18,-9.762],"0.04":[33.411,-28.906,-4.067],"0.08":[33.429,-26.536,1.698],"0.12":[32.174,-24.379,6.627],"0.17":[30.884,-22.881,9.546],"0.21":[30.355,-21.915,10.715],"0.25":[30.898,-21.374,10.064],"0.29":[32.096,-21.341,7.961],"0.33":[33.156,-22.07,5.117],"0.38":[33.639,-23.462,2.43],"0.42":[33.474,-25.405,-0.234],"0.46":[32.634,-27.569,-3.041],"0.5":[31.051,-29.581,-5.934],"0.54":[28.969,-31.105,-8.704],"0.58":[26.712,-31.995,-11.228],"0.62":[24.588,-32.255,-13.459],"0.67":[22.941,-31.793,-15.514],"0.71":[21.59,-30.874,-17.461],"0.75":[20.373,-29.796,-19.184],"0.79":[19.18,-28.837,-20.675],"0.83":[18.036,-28.316,-21.953],"0.88":[17.19,-28.187,-23.021],"0.92":[16.644,-28.269,-23.929],"0.96":[16.234,-28.426,-24.664],"1.0":[15.866,-28.47,-25.111],"1.04":[15.599,-28.477,-25.36],"1.08":[15.501,-28.487,-25.443],"1.12":[15.448,-28.463,-25.444]},"scale":[1,1.5,1]},"root":{"position":{"0.0":[0,0,9],"0.23":{"pre":[0,0,9],"post":[0,0,0]}}},"righthand":{"position":{"0.0":[-1,3.85,-2.25],"0.44":{"pre":[-1,3.85,-2.25],"post":[0,3.85,-2.25]}},"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"melee_2":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[-59.088,-133.536,55.396],"0.04":[-80.216,-129.604,78.815],"0.08":[-121.437,-133.893,105.2],"0.12":[-143.435,-150.711,111.724],"0.17":[-155.369,-166.479,103.91],"0.21":[-171.167,-177.733,90.549],"0.25":[-189.967,-181.559,74.104],"0.29":[-199.446,-180.648,67.244],"0.33":[-184.617,-189.207,70.32],"0.38":[-166.02,-195.779,76.542],"0.42":[-145.874,-198.051,84.809],"0.46":[-128.684,-194.683,93.172],"0.5":[-118.747,-184.818,103.945],"0.54":[-116.386,-172.53,116.706],"0.58":[-118.182,-162.57,126.369],"0.62":[-118.57,-154.579,127.625],"0.67":[-116.275,-147.322,122.367],"0.71":[-111.584,-141.208,113.512],"0.75":[-105.442,-136.812,103.36],"0.79":[-99.872,-133.88,95.153],"0.83":[-96.715,-132.12,91.063],"0.88":[-95.111,-131.315,89.086],"0.92":[-94.569,-131.016,88.457],"0.96":[-94.443,-130.905,88.359],"1.0":[-93.994,-130.671,87.843],"1.04":[-93.739,-130.559,87.536],"1.08":[-93.915,-130.63,87.75],"1.12":[-94.084,-130.714,87.95]},"position":{"0.0":[1.722,-26.583,-24.013],"0.04":[-5.747,-24.434,-26.473],"0.08":[-13.973,-25.511,-24.989],"0.12":[-19.503,-27.436,-22.192],"0.17":[-23.657,-28.381,-19.712],"0.21":[-26.816,-29.446,-16.694],"0.25":[-28.975,-30.722,-13.231],"0.29":[-30.565,-32.684,-7.438],"0.33":[-28.559,-33.226,-11.281],"0.38":[-24.838,-33.517,-15.602],"0.42":[-19.96,-33.529,-18.751],"0.46":[-15.719,-33.032,-20.086],"0.5":[-14.185,-31.671,-20.07],"0.54":[-14.247,-29.965,-19.457],"0.58":[-14.447,-28.593,-18.786],"0.62":[-14.093,-27.802,-18.528],"0.67":[-13.588,-27.33,-18.575],"0.71":[-13.08,-26.991,-18.751],"0.75":[-12.619,-26.731,-18.949],"0.79":[-12.268,-26.497,-19.061],"0.83":[-12.092,-26.32,-19.075],"0.88":[-12.01,-26.217,-19.089],"0.92":[-11.986,-26.167,-19.096],"0.96":[-11.986,-26.139,-19.103],"1.0":[-11.965,-26.106,-19.106],"1.04":[-11.952,-26.096,-19.11],"1.08":[-11.96,-26.102,-19.107],"1.12":[-11.969,-26.11,-19.105]}},"bayonet":{"rotation":{"0.0":[19.577,9.614,166.097],"0.04":[19.588,9.692,166.138],"0.08":[19.08,8.798,166.637],"0.12":[19.43,9.562,166.177],"0.17":[19.545,9.753,166.282],"0.21":[19.622,9.848,166.348],"0.25":[19.454,9.695,166.109],"0.29":[19.462,9.534,166.131],"0.33":[19.49,9.55,166.232],"0.38":[19.507,9.537,166.244],"0.42":[19.494,9.523,166.207],"0.46":[19.411,9.559,166.117],"0.5":[19.582,9.459,166.18],"0.54":[19.579,9.403,166.148],"0.58":[19.468,9.47,166.183],"0.62":[19.415,9.484,166.177],"0.67":[19.428,9.511,166.166],"0.71":[19.429,9.539,166.161],"0.75":[19.448,9.563,166.172],"0.79":[19.455,9.563,166.173],"0.83":[19.438,9.56,166.164],"0.88":[19.451,9.575,166.17],"0.92":[19.447,9.555,166.178],"0.96":[19.447,9.563,166.176],"1.0":[19.453,9.558,166.174],"1.04":[19.453,9.561,166.179],"1.08":[19.451,9.56,166.168],"1.12":[19.452,9.556,166.175]},"position":{"0.0":[5.274,13.186,-4.194],"0.04":[5.318,13.136,-4.162],"0.08":[5.455,12.93,-4.084],"0.12":[5.193,13.206,-4.241],"0.17":[5.239,13.146,-4.196],"0.21":[5.241,13.11,-4.175],"0.25":[5.181,13.122,-4.199],"0.29":[5.189,13.2,-4.233],"0.33":[5.165,13.136,-4.201],"0.38":[5.157,13.092,-4.176],"0.42":[5.175,13.119,-4.19],"0.46":[5.185,13.193,-4.244],"0.5":[5.185,13.161,-4.223],"0.54":[5.19,13.162,-4.229],"0.58":[5.196,13.181,-4.237],"0.62":[5.191,13.194,-4.243],"0.67":[5.195,13.201,-4.234],"0.71":[5.199,13.2,-4.237],"0.75":[5.203,13.194,-4.237],"0.79":[5.194,13.199,-4.237],"0.83":[5.202,13.197,-4.241],"0.88":[5.194,13.198,-4.241],"0.92":[5.191,13.204,-4.242],"0.96":[5.192,13.201,-4.24],"1.0":[5.201,13.195,-4.238],"1.04":[5.203,13.2,-4.239],"1.08":[5.202,13.198,-4.239],"1.12":[5.2,13.193,-4.238]}},"lefthand":{"rotation":{"0.0":[100.257,-17.721,91.865],"0.04":[84.539,-23.194,96.422],"0.08":[71.674,-26.146,100.353],"0.12":[63.088,-26.675,102.28],"0.17":[56.384,-26.177,103.145],"0.21":[51.16,-25.251,103.122],"0.25":[47.622,-24.201,102.108],"0.29":[45.978,-23.21,100.025],"0.33":[47.071,-22.248,96.475],"0.38":[51.995,-20.843,90.415],"0.42":[59.986,-18.173,82.728],"0.46":[68.692,-14.041,75.618],"0.5":[75.968,-9.234,71.085],"0.54":[80.839,-4.98,69.677],"0.58":[84.447,-1.486,70.585],"0.62":[87.828,1.399,72.856],"0.67":[91.276,3.807,75.876],"0.71":[95.012,5.988,78.877],"0.75":[99.003,8.334,81.361],"0.79":[103.17,11.377,82.953],"0.83":[107.462,17.549,82.56],"0.88":[111.248,25.853,81.196],"0.92":[114.071,33.049,80.187],"0.96":[116.305,37.989,79.86],"1.0":[117.645,40.911,79.505],"1.04":[118.63,43.04,79.157],"1.08":[119.432,44.707,78.962],"1.12":[119.824,45.507,78.923]},"position":{"0.0":[25.263,-35.266,-17.244],"0.04":[24.471,-35.253,-17.323],"0.08":[24.093,-35.208,-17.23],"0.12":[24.306,-35.141,-16.933],"0.17":[24.848,-35.05,-16.469],"0.21":[25.525,-34.938,-15.915],"0.25":[26.195,-34.831,-15.327],"0.29":[26.74,-34.737,-14.796],"0.33":[27.051,-34.681,-14.439],"0.38":[27.228,-34.692,-14.128],"0.42":[27.312,-34.751,-13.877],"0.46":[27.282,-34.805,-13.852],"0.5":[27.069,-34.82,-14.299],"0.54":[26.618,-34.721,-15.283],"0.58":[25.887,-34.475,-16.705],"0.62":[24.865,-34.052,-18.373],"0.67":[23.541,-33.41,-20.084],"0.71":[22.024,-32.601,-21.648],"0.75":[20.455,-31.697,-22.943],"0.79":[18.982,-30.799,-23.915],"0.83":[17.741,-30.016,-24.556],"0.88":[16.77,-29.368,-24.977],"0.92":[16.082,-28.894,-25.226],"0.96":[15.64,-28.589,-25.368],"1.0":[15.505,-28.502,-25.416],"1.04":[15.495,-28.496,-25.426],"1.08":[15.473,-28.476,-25.439],"1.12":[15.448,-28.463,-25.444]},"scale":[1,1.5,1]},"root":{"position":{"0.0":[-1,-1,1],"0.39":{"pre":[-1,-1,1],"post":[0,0,0]}}},"righthand":{"position":[0,3.85,-2.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash2"}}},"melee_3":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[60.356,-40.862,-108.691],"0.04":[121.157,-50.253,-122.077],"0.08":[172.123,-42.699,-128.471],"0.12":[180.83,-41.254,-129.169],"0.17":[182.387,-40.929,-129.514],"0.21":[184.179,-40.562,-129.804],"0.25":[185.767,-40.479,-129.765],"0.29":[186.557,-40.55,-130.191],"0.33":[189.267,-41.304,-111.348],"0.38":[185.356,-33.059,-90.093],"0.42":[182.721,-13.211,-76.743],"0.46":[175.432,-0.851,-82.318],"0.5":[155.919,2.874,-97.555],"0.54":[111.854,4.713,-88.112],"0.58":[82.209,14.47,-75.779],"0.62":[76.85,7.094,-74.96],"0.67":[74.905,-3.963,-73.59],"0.71":[73.843,-15.501,-71.861],"0.75":[72.383,-24.905,-70.178],"0.79":[71.07,-31.43,-69.842],"0.83":[72.343,-36.739,-72.906],"0.88":[75.567,-41.138,-78.11],"0.92":[79.719,-44.548,-84.149],"0.96":[83.288,-47.183,-88.934],"1.0":[85.022,-48.679,-91.034],"1.04":[85.588,-49.11,-91.693],"1.08":[85.644,-49.111,-91.744],"1.12":[85.916,-49.286,-92.05]},"position":{"0.0":[-13.853,-26.459,-26.016],"0.04":[-3.286,-22.775,-28.332],"0.08":[1.613,-22.726,-28.199],"0.12":[2.055,-22.753,-27.975],"0.17":[2.303,-22.64,-27.857],"0.21":[2.537,-22.521,-27.719],"0.25":[2.732,-22.472,-27.581],"0.29":[2.967,-22.536,-27.42],"0.33":[5.023,-27.324,-25.537],"0.38":[6.035,-32.194,-21.569],"0.42":[7.862,-33.937,-15.442],"0.46":[8.831,-34.353,-12.47],"0.5":[8.928,-35.047,-12.442],"0.54":[2.503,-39.056,-16.964],"0.58":[-5.965,-41.066,-19.829],"0.62":[-7.981,-38.724,-21.51],"0.67":[-9.065,-35.476,-22.672],"0.71":[-9.738,-32.16,-22.99],"0.75":[-10.402,-29.521,-22.547],"0.79":[-11.136,-27.901,-21.72],"0.83":[-11.538,-27.066,-20.85],"0.88":[-11.706,-26.617,-20.065],"0.92":[-11.741,-26.346,-19.38],"0.96":[-11.86,-26.199,-19.172],"1.0":[-11.962,-26.068,-19.11],"1.04":[-11.982,-26.058,-19.095],"1.08":[-11.97,-26.098,-19.105],"1.12":[-11.969,-26.11,-19.105]}},"bayonet":{"rotation":{"0.0":[172.51,-2.055,-12.508],"0.04":[172.543,-2.79,-13.084],"0.08":[172.606,-1.893,-12.73],"0.12":[172.615,-1.89,-12.728],"0.17":[172.617,-1.921,-12.682],"0.21":[172.612,-1.911,-12.661],"0.25":[172.607,-1.929,-12.615],"0.29":[172.602,-1.956,-12.594],"0.33":[172.569,-1.704,-12.661],"0.38":[173.088,-1.595,-12.754],"0.42":[172.922,-1.814,-12.735],"0.46":[172.586,-2.044,-12.453],"0.5":[199.689,175.367,-15.229],"0.54":[199.201,190.115,-19.825],"0.58":[199.734,186.022,-17.151],"0.62":[199.467,175.324,-14.625],"0.67":[199.514,170.871,-13.547],"0.71":[199.49,170.785,-13.62],"0.75":[199.46,170.679,-13.684],"0.79":[199.456,170.506,-13.76],"0.83":[199.433,170.45,-13.814],"0.88":[199.442,170.418,-13.817],"0.92":[199.45,170.435,-13.82],"0.96":[199.454,170.412,-13.842],"1.0":[199.452,170.44,-13.825],"1.04":[199.449,170.438,-13.826],"1.08":[199.438,170.43,-13.824],"1.12":[199.448,170.444,-13.822]},"position":{"0.0":[4.655,12.144,-0.456],"0.04":[4.714,11.917,-0.673],"0.08":[4.558,12.449,-0.518],"0.12":[4.551,12.544,-0.482],"0.17":[4.562,12.569,-0.513],"0.21":[4.55,12.589,-0.521],"0.25":[4.548,12.608,-0.535],"0.29":[4.55,12.632,-0.561],"0.33":[4.563,12.486,-0.611],"0.38":[4.639,12.607,-0.672],"0.42":[4.577,12.67,-0.645],"0.46":[4.53,12.78,-0.704],"0.5":[5.129,12.753,-3.974],"0.54":[4.88,11.154,-3.64],"0.58":[4.963,12.734,-4.05],"0.62":[5.138,12.867,-4.025],"0.67":[5.214,12.882,-3.998],"0.71":[5.217,12.942,-4.053],"0.75":[5.206,13.05,-4.126],"0.79":[5.195,13.14,-4.189],"0.83":[5.195,13.205,-4.24],"0.88":[5.198,13.198,-4.237],"0.92":[5.201,13.192,-4.236],"0.96":[5.195,13.201,-4.24],"1.0":[5.194,13.2,-4.24],"1.04":[5.2,13.196,-4.24],"1.08":[5.2,13.201,-4.242],"1.12":[5.201,13.193,-4.238]}},"lefthand":{"rotation":{"0.0":[69.312,8.546,53.514],"0.04":[49.982,-3.814,50.977],"0.08":[31.799,-15.791,51.818],"0.12":[16.163,-25.198,54.977],"0.17":[7.63,-30.183,57.272],"0.21":[6.119,-32.958,56.292],"0.25":[9.834,-34.248,52.381],"0.29":[16.71,-33.254,47.383],"0.33":[24.235,-29.209,44.288],"0.38":[30.107,-22.944,45.478],"0.42":[34.12,-13.13,54.806],"0.46":[39.912,1.226,75.414],"0.5":[51.673,13.299,102.586],"0.54":[66.311,16.443,124.876],"0.58":[79.617,13.319,130.716],"0.62":[93.448,10.936,120.584],"0.67":[105.882,14.834,102.911],"0.71":[113.855,22.56,88.457],"0.75":[118.013,29.087,81.747],"0.79":[119.855,33.813,79.4],"0.83":[120.133,37.165,79.058],"0.88":[119.897,39.853,79.329],"0.92":[119.809,42.433,79.331],"0.96":[119.936,44.449,78.962],"1.0":[119.91,45.041,78.99],"1.04":[119.854,45.377,78.974],"1.08":[119.849,45.502,78.934],"1.12":[119.824,45.507,78.923]},"position":{"0.0":[32.77,-25.644,-12.687],"0.04":[34.752,-24.607,-5.445],"0.08":[34.835,-24.171,0.187],"0.12":[33.633,-23.829,4.591],"0.17":[32.587,-23.603,6.649],"0.21":[32.393,-23.165,7.128],"0.25":[32.873,-22.554,6.566],"0.29":[33.719,-22.102,5.177],"0.33":[34.56,-22.281,3.137],"0.38":[35.037,-23.336,0.932],"0.42":[34.711,-26.069,-1.506],"0.46":[32.421,-30.651,-4.663],"0.5":[27.601,-34.479,-8.191],"0.54":[22.731,-35.875,-11.102],"0.58":[20.033,-35.58,-13.496],"0.62":[19.226,-34.514,-16.098],"0.67":[19.138,-32.862,-18.848],"0.71":[18.762,-31.235,-21.116],"0.75":[17.958,-30.217,-22.597],"0.79":[17.217,-29.652,-23.576],"0.83":[16.69,-29.338,-24.269],"0.88":[16.233,-29.131,-24.829],"0.92":[15.741,-28.921,-25.34],"0.96":[15.508,-28.619,-25.45],"1.0":[15.471,-28.519,-25.459],"1.04":[15.46,-28.463,-25.463],"1.08":[15.45,-28.45,-25.456],"1.12":[15.448,-28.463,-25.444]},"scale":[1,1.5,1]},"root":{"position":{"0.0":[0,0,12.28267],"0.49":{"pre":[0,0,12.28267],"post":[0,0,0]}}},"righthand":{"position":{"0.0":[0,3.85,1.62333],"0.52":{"pre":[0,3.85,1.62333],"post":[0,3.85,-2.25]}},"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"inspect":{"loop":true,"animation_length":6.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[86.892,-49.453,-93.634],"0.04":[89.373,-49.773,-97.598],"0.08":[93.034,-49.959,-103.457],"0.12":[97.519,-49.771,-110.642],"0.17":[102.232,-48.972,-118.376],"0.21":[106.63,-47.663,-125.926],"0.25":[110.89,-45.589,-134.019],"0.29":[115.481,-42.02,-144.221],"0.33":[119.616,-37.662,-154.781],"0.38":[122.802,-32.269,-164.215],"0.42":[124.532,-25.516,-172.078],"0.46":[124.804,-18.126,-178.412],"0.5":[123.81,-10.911,-183.467],"0.54":[122.073,-4.432,-187.972],"0.58":[120.018,0.919,-192.407],"0.62":[117.983,5.323,-197.193],"0.67":[116.066,9.446,-202.211],"0.71":[114.094,13.552,-207.242],"0.75":[112.002,17.593,-211.98],"0.79":[109.779,21.481,-216.223],"0.83":[107.557,24.876,-219.552],"0.88":[105.776,27.524,-221.97],"0.92":[104.585,29.479,-223.671],"0.96":[103.809,30.901,-224.833],"1.0":[103.231,31.997,-225.696],"1.04":[102.548,32.984,-226.539],"1.08":[101.886,33.795,-227.284],"1.12":[101.313,34.399,-227.905],"1.17":[100.893,34.844,-228.333],"1.21":[100.584,35.128,-228.638],"1.25":[100.399,35.277,-228.832],"1.29":[100.348,35.321,-228.892],"1.33":[100.349,35.32,-228.89],"1.38":[100.368,35.293,-228.863],"1.42":[100.442,35.231,-228.776],"1.46":[100.583,35.089,-228.638],"1.5":[100.659,34.874,-228.525],"1.54":[100.701,34.6,-228.434],"1.58":[100.988,34.19,-228.092],"1.62":[101.755,33.548,-227.324],"1.67":[103.27,32.58,-225.871],"1.71":[105.255,31.136,-223.838],"1.75":[107.467,29.067,-221.344],"1.79":[109.689,26.553,-218.651],"1.83":[112.074,23.474,-215.629],"1.88":[114.536,19.938,-212.381],"1.92":[117.145,15.724,-208.754],"1.96":[119.873,10.146,-204.291],"2.0":[122.443,3.556,-198.605],"2.04":[124.683,-2.867,-192.308],"2.08":[126.969,-8.896,-186.166],"2.12":[129.648,-16.167,-180.525],"2.17":[131.806,-24.217,-175.116],"2.21":[132.757,-31.045,-169.984],"2.25":[133.029,-36.359,-166.058],"2.29":[133.095,-40.332,-163.577],"2.33":[132.857,-42.472,-161.922],"2.38":[132.579,-43.722,-160.773],"2.42":[132.398,-44.427,-160.129],"2.46":[132.302,-44.768,-159.811],"2.5":[132.231,-45.015,-159.605],"2.54":[132.177,-45.237,-159.401],"2.58":[132.128,-45.424,-159.215],"2.62":[132.096,-45.548,-159.09],"2.67":[132.103,-45.623,-159.063],"2.71":[132.118,-45.662,-159.061],"2.75":[132.159,-45.653,-159.109],"2.79":[132.217,-45.602,-159.205],"2.83":[132.262,-45.523,-159.294],"2.88":[132.306,-45.437,-159.391],"2.92":[132.346,-45.334,-159.488],"2.96":[132.381,-45.238,-159.584],"3.0":[132.421,-45.134,-159.632],"3.04":[132.463,-45.018,-159.688],"3.08":[132.54,-44.869,-159.805],"3.12":[132.588,-44.663,-159.945],"3.17":[132.623,-44.375,-160.118],"3.21":[132.671,-43.991,-160.404],"3.25":[132.687,-43.502,-160.747],"3.29":[132.697,-42.923,-161.153],"3.33":[132.657,-42.284,-161.532],"3.38":[132.605,-41.545,-161.983],"3.42":[132.51,-40.646,-162.557],"3.46":[132.379,-39.56,-163.324],"3.5":[132.144,-38.192,-164.357],"3.54":[131.859,-36.389,-165.825],"3.58":[131.72,-34.078,-167.907],"3.62":[131.727,-31.448,-170.346],"3.67":[131.81,-28.488,-173.079],"3.71":[131.848,-25.345,-175.9],"3.75":[131.827,-22.082,-178.789],"3.79":[131.7,-18.635,-181.623],"3.83":[131.478,-14.777,-184.482],"3.88":[131.075,-10.734,-187.187],"3.92":[130.498,-6.474,-189.862],"3.96":[129.753,-2.112,-192.572],"4.0":[128.854,2.441,-195.456],"4.04":[127.804,7.639,-198.776],"4.08":[126.457,13.469,-202.319],"4.12":[124.698,19.448,-205.727],"4.17":[122.623,24.759,-208.585],"4.21":[120.482,28.795,-211.033],"4.25":[118.417,31.646,-213.373],"4.29":[116.493,33.656,-215.626],"4.33":[114.671,35.034,-217.756],"4.38":[112.915,36.065,-219.629],"4.42":[111.181,36.859,-221.249],"4.46":[109.541,37.252,-222.654],"4.5":[108.072,37.237,-223.802],"4.54":[106.737,37.026,-224.792],"4.58":[105.573,36.763,-225.631],"4.62":[104.539,36.577,-226.399],"4.67":[103.652,36.43,-227.033],"4.71":[102.896,36.218,-227.567],"4.75":[102.282,35.997,-227.975],"4.79":[101.81,35.795,-228.273],"4.83":[101.491,35.649,-228.438],"4.88":[101.215,35.581,-228.606],"4.92":[100.891,35.546,-228.82],"4.96":[100.568,35.515,-228.993],"5.0":[100.322,35.445,-229.065],"5.04":[100.315,35.114,-228.673],"5.08":[100.384,33.648,-227.592],"5.12":[101.844,29.632,-224.788],"5.17":[109.518,18.861,-214.367],"5.21":[115.006,7.699,-203.464],"5.25":[117.212,-1.538,-195.07],"5.29":[117.878,-9.151,-188.203],"5.33":[119.778,-16.612,-181.039],"5.38":[121.385,-25.191,-170.98],"5.42":[119.699,-33.22,-155.049],"5.46":[116.034,-36.271,-136.041],"5.5":[116.605,-37.852,-121.3],"5.54":[115.651,-41.108,-113.069],"5.58":[107.736,-44.154,-105.454],"5.62":[95.019,-46.16,-96.64],"5.67":[86.481,-47.067,-90.953],"5.71":[84.034,-47.728,-89.623],"5.75":[82.613,-48.429,-89.01],"5.79":[82.273,-49.029,-89.093],"5.83":[82.575,-49.448,-89.543],"5.88":[83.087,-49.553,-89.96],"5.92":[83.681,-49.539,-90.405],"5.96":[84.161,-49.512,-90.761],"6.0":[84.635,-49.479,-91.119],"6.04":[85.113,-49.404,-91.467],"6.08":[85.537,-49.345,-91.776],"6.12":[85.831,-49.29,-91.988]},"position":{"0.0":[-11.965,-26.154,-19.042],"0.04":[-11.954,-26.259,-18.882],"0.08":[-11.942,-26.4,-18.661],"0.12":[-11.922,-26.561,-18.401],"0.17":[-11.906,-26.718,-18.149],"0.21":[-11.891,-26.855,-17.928],"0.25":[-11.871,-26.951,-17.768],"0.29":[-11.848,-26.997,-17.672],"0.33":[-11.824,-27,-17.632],"0.38":[-11.805,-26.947,-17.614],"0.42":[-11.788,-26.841,-17.606],"0.46":[-11.766,-26.682,-17.602],"0.5":[-11.75,-26.501,-17.606],"0.54":[-11.732,-26.314,-17.612],"0.58":[-11.719,-26.136,-17.618],"0.62":[-11.704,-25.96,-17.627],"0.67":[-11.692,-25.763,-17.647],"0.71":[-11.68,-25.56,-17.67],"0.75":[-11.671,-25.365,-17.693],"0.79":[-11.664,-25.186,-17.714],"0.83":[-11.665,-25.048,-17.73],"0.88":[-11.666,-24.947,-17.74],"0.92":[-11.666,-24.87,-17.747],"0.96":[-11.67,-24.825,-17.753],"1.0":[-11.671,-24.785,-17.753],"1.04":[-11.673,-24.757,-17.757],"1.08":[-11.677,-24.74,-17.761],"1.12":[-11.684,-24.723,-17.762],"1.17":[-11.685,-24.72,-17.764],"1.21":[-11.687,-24.72,-17.764],"1.25":[-11.692,-24.721,-17.765],"1.33":[-11.692,-24.721,-17.765],"1.38":[-11.692,-24.722,-17.763],"1.42":[-11.691,-24.723,-17.759],"1.46":[-11.692,-24.736,-17.757],"1.5":[-11.687,-24.745,-17.755],"1.54":[-11.683,-24.757,-17.75],"1.58":[-11.675,-24.771,-17.746],"1.62":[-11.66,-24.792,-17.742],"1.67":[-11.641,-24.812,-17.738],"1.71":[-11.614,-24.843,-17.732],"1.75":[-11.581,-24.881,-17.725],"1.79":[-11.544,-24.924,-17.717],"1.83":[-11.503,-24.965,-17.708],"1.88":[-11.473,-24.999,-17.698],"1.92":[-11.441,-25.028,-17.685],"1.96":[-11.412,-25.059,-17.669],"2.0":[-11.394,-25.088,-17.651],"2.04":[-11.377,-25.102,-17.63],"2.08":[-11.365,-25.102,-17.614],"2.12":[-11.36,-25.06,-17.597],"2.17":[-11.357,-25.009,-17.586],"2.21":[-11.359,-24.957,-17.582],"2.25":[-11.358,-24.926,-17.581],"2.29":[-11.359,-24.904,-17.581],"2.33":[-11.356,-24.889,-17.581],"2.38":[-11.355,-24.877,-17.582],"2.42":[-11.356,-24.875,-17.582],"2.46":[-11.355,-24.87,-17.582],"2.5":[-11.357,-24.866,-17.583],"2.54":[-11.357,-24.862,-17.583],"2.58":[-11.356,-24.858,-17.583],"2.62":[-11.357,-24.858,-17.583],"2.67":[-11.357,-24.857,-17.582],"2.71":[-11.356,-24.856,-17.581],"2.75":[-11.354,-24.854,-17.58],"2.79":[-11.357,-24.853,-17.579],"2.83":[-11.358,-24.855,-17.58],"2.88":[-11.358,-24.856,-17.581],"2.92":[-11.359,-24.858,-17.582],"2.96":[-11.356,-24.858,-17.583],"3.0":[-11.359,-24.861,-17.581],"3.04":[-11.357,-24.863,-17.583],"3.08":[-11.358,-24.866,-17.582],"3.12":[-11.359,-24.87,-17.58],"3.17":[-11.362,-24.876,-17.584],"3.21":[-11.363,-24.881,-17.584],"3.25":[-11.368,-24.89,-17.582],"3.29":[-11.372,-24.907,-17.582],"3.33":[-11.377,-24.915,-17.581],"3.38":[-11.381,-24.919,-17.582],"3.42":[-11.389,-24.939,-17.582],"3.46":[-11.396,-24.959,-17.584],"3.5":[-11.411,-24.981,-17.584],"3.54":[-11.43,-25.013,-17.583],"3.58":[-11.459,-25.062,-17.584],"3.62":[-11.495,-25.127,-17.591],"3.67":[-11.531,-25.186,-17.601],"3.71":[-11.565,-25.249,-17.613],"3.75":[-11.599,-25.288,-17.624],"3.79":[-11.626,-25.314,-17.636],"3.83":[-11.656,-25.334,-17.652],"3.88":[-11.679,-25.345,-17.668],"3.92":[-11.7,-25.348,-17.682],"3.96":[-11.714,-25.355,-17.697],"4.0":[-11.717,-25.348,-17.705],"4.04":[-11.718,-25.34,-17.715],"4.08":[-11.715,-25.324,-17.72],"4.12":[-11.714,-25.297,-17.726],"4.17":[-11.712,-25.268,-17.729],"4.21":[-11.71,-25.238,-17.732],"4.25":[-11.708,-25.203,-17.737],"4.29":[-11.706,-25.152,-17.74],"4.33":[-11.706,-25.106,-17.742],"4.38":[-11.702,-25.062,-17.744],"4.42":[-11.7,-25.02,-17.748],"4.46":[-11.698,-24.985,-17.752],"4.5":[-11.697,-24.944,-17.751],"4.54":[-11.695,-24.902,-17.754],"4.58":[-11.691,-24.869,-17.754],"4.62":[-11.694,-24.833,-17.752],"4.67":[-11.691,-24.812,-17.757],"4.71":[-11.69,-24.791,-17.756],"4.75":[-11.691,-24.772,-17.757],"4.79":[-11.689,-24.755,-17.758],"4.83":[-11.69,-24.749,-17.763],"4.88":[-11.69,-24.732,-17.762],"4.92":[-11.692,-24.724,-17.761],"4.96":[-11.691,-24.724,-17.764],"5.0":[-11.692,-24.716,-17.764],"5.04":[-11.692,-24.725,-17.761],"5.08":[-11.704,-24.778,-17.743],"5.12":[-11.733,-24.967,-17.693],"5.17":[-11.817,-25.377,-17.603],"5.21":[-11.902,-25.798,-17.503],"5.25":[-11.967,-26.083,-17.406],"5.29":[-12.012,-26.246,-17.319],"5.33":[-12.038,-26.344,-17.261],"5.38":[-12.044,-26.361,-17.284],"5.42":[-12.035,-26.306,-17.488],"5.46":[-12.024,-26.242,-17.786],"5.5":[-12.009,-26.156,-18.153],"5.54":[-11.988,-26.058,-18.649],"5.58":[-11.97,-25.984,-19.115],"5.62":[-11.969,-25.975,-19.337],"5.67":[-11.97,-25.994,-19.369],"5.71":[-11.97,-26.01,-19.371],"5.75":[-11.972,-26.025,-19.355],"5.79":[-11.97,-26.044,-19.324],"5.83":[-11.97,-26.064,-19.273],"5.88":[-11.971,-26.082,-19.222],"5.92":[-11.971,-26.1,-19.173],"5.96":[-11.968,-26.104,-19.133],"6.0":[-11.971,-26.108,-19.119],"6.04":[-11.97,-26.112,-19.113],"6.08":[-11.97,-26.111,-19.107],"6.12":[-11.97,-26.111,-19.105]}},"bayonet":{"rotation":{"0.0":[21.292,9.285,166.647],"0.04":[25.589,8.648,167.736],"0.08":[31.236,7.777,169.176],"0.12":[37.257,6.856,170.722],"0.17":[42.275,6.134,171.962],"0.21":[45.283,5.703,172.665],"0.25":[46.081,5.901,172.347],"0.29":[46.195,6.889,170.822],"0.33":[46.234,8.429,169.035],"0.38":[46.259,10.178,167.117],"0.42":[46.304,12.153,165.268],"0.46":[46.487,14.182,164.271],"0.5":[47.641,16.512,164.13],"0.54":[49.694,18.943,164.093],"0.58":[51.651,21.103,164.026],"0.62":[53.175,22.934,163.658],"0.67":[54.698,24.726,162.811],"0.71":[56.169,26.407,161.796],"0.75":[57.39,27.819,160.822],"0.79":[58.234,28.774,160.111],"0.83":[58.462,29.027,159.897],"0.88":[58.456,29.027,159.898],"0.92":[58.468,29.021,159.903],"0.96":[58.442,29.032,159.888],"1.0":[58.451,29.035,159.895],"1.04":[58.445,29.029,159.901],"1.08":[58.445,29.035,159.893],"1.12":[58.447,29.026,159.871],"1.17":[58.443,29.027,159.886],"1.21":[58.444,29.017,159.885],"1.25":[58.461,29.021,159.882],"1.29":[58.479,29.015,159.881],"1.33":[58.47,29.013,159.882],"1.38":[58.471,29.014,159.876],"1.42":[58.461,29.022,159.886],"1.46":[58.453,29.023,159.877],"1.5":[58.448,29.027,159.862],"1.54":[58.456,29.012,159.875],"1.58":[58.455,29.024,159.896],"1.62":[58.454,29.035,159.9],"1.67":[58.454,29.013,159.901],"1.71":[58.458,29.024,159.902],"1.75":[58.454,29.033,159.9],"1.79":[58.441,29.02,159.903],"1.83":[58.45,29.033,159.901],"1.88":[58.459,28.435,159.802],"1.92":[58.446,26.821,159.521],"1.96":[58.433,25.057,159.207],"2.0":[58.43,23.297,158.898],"2.04":[58.445,21.692,158.628],"2.08":[58.458,20.361,158.411],"2.12":[58.224,18.653,158.804],"2.17":[57.48,15.205,160.755],"2.21":[56.425,10.742,163.614],"2.25":[55.227,5.915,166.923],"2.29":[54.049,1.41,170.195],"2.33":[52.787,-3.256,173.694],"2.38":[51.635,-7.438,176.971],"2.42":[50.449,-11.67,180.312],"2.46":[49.292,-15.731,183.614],"2.5":[48.22,-19.395,186.69],"2.54":[47.233,-22.515,189.508],"2.58":[46.355,-24.932,191.967],"2.62":[45.658,-26.107,193.801],"2.67":[45.054,-27.836,195.232],"2.71":[44.594,-28.963,196.222],"2.75":[44.372,-29.515,196.724],"2.79":[44.187,-29.915,197.094],"2.83":[44.022,-30.212,197.413],"2.88":[43.873,-30.438,197.668],"2.92":[43.727,-30.614,197.887],"2.96":[43.577,-30.748,198.056],"3.0":[43.488,-30.821,198.187],"3.04":[43.419,-30.865,198.268],"3.08":[43.366,-30.9,198.298],"3.12":[43.337,-30.916,198.322],"3.17":[43.398,-30.803,198.197],"3.21":[43.558,-30.567,197.864],"3.25":[43.793,-30.185,197.368],"3.29":[44.063,-29.717,196.766],"3.33":[44.363,-29.107,196.092],"3.38":[44.709,-28.37,195.325],"3.42":[45.143,-27.324,194.341],"3.46":[45.67,-26.016,193.145],"3.5":[46.252,-24.487,191.859],"3.54":[46.932,-22.717,190.426],"3.58":[47.654,-20.748,188.863],"3.62":[48.347,-18.209,187.12],"3.67":[49.101,-15.118,185.148],"3.71":[49.893,-11.622,183.02],"3.75":[50.731,-7.877,180.767],"3.79":[51.592,-3.942,178.488],"3.83":[52.445,-0.048,176.155],"3.88":[53.272,3.846,173.909],"3.92":[54.061,7.584,171.778],"3.96":[54.797,11.003,169.798],"4.0":[55.451,14.013,168.024],"4.04":[56.09,16.954,166.342],"4.08":[56.69,19.909,164.705],"4.12":[57.251,22.742,163.161],"4.17":[57.701,25.191,161.857],"4.21":[58.08,27.17,160.826],"4.25":[58.332,28.483,160.133],"4.29":[58.442,29.025,159.866],"4.33":[58.463,29.023,159.883],"4.38":[58.458,29.028,159.877],"4.42":[58.455,29.032,159.88],"4.46":[58.463,29.015,159.891],"4.5":[58.463,29.025,159.886],"4.54":[58.451,29.017,159.871],"4.58":[58.441,29.026,159.869],"4.62":[58.461,29.018,159.878],"4.67":[58.437,29.035,159.875],"4.71":[58.442,29.021,159.87],"4.75":[58.455,29.013,159.883],"4.79":[58.469,29.015,159.89],"4.83":[58.446,29.029,159.87],"4.88":[58.451,29.018,159.879],"4.92":[58.465,29.012,159.884],"4.96":[58.467,29.034,159.882],"5.0":[58.464,29.01,159.884],"5.04":[58.447,29.021,159.878],"5.08":[58.456,29.025,159.89],"5.12":[58.458,29.035,159.895],"5.17":[58.466,29.014,159.88],"5.21":[58.445,29.011,159.89],"5.25":[57.582,27.863,160.294],"5.29":[54.37,23.877,161.737],"5.33":[49.152,18.581,163.487],"5.38":[42.236,14.557,164.656],"5.42":[33.298,12.146,165.4],"5.46":[26.328,10.824,165.946],"5.5":[20.292,10.103,166.028],"5.54":[16.692,9.724,166.131],"5.58":[16.62,9.586,166.177],"5.62":[18.544,9.587,166.178],"5.67":[19.447,9.571,166.171],"5.71":[19.448,9.565,166.183],"5.75":[19.454,9.57,166.178],"5.79":[19.446,9.581,166.169],"5.83":[19.442,9.557,166.165],"5.88":[19.448,9.569,166.174],"5.92":[19.447,9.567,166.174],"5.96":[19.437,9.553,166.182],"6.0":[19.438,9.549,166.164],"6.04":[19.444,9.551,166.18],"6.08":[19.449,9.556,166.18],"6.12":[19.449,9.555,166.185]},"position":{"0.0":[5.159,13.253,-4.266],"0.04":[5.067,13.391,-4.321],"0.08":[4.95,13.567,-4.39],"0.12":[4.827,13.757,-4.447],"0.17":[4.744,13.923,-4.487],"0.21":[4.693,14.051,-4.505],"0.25":[4.688,14.134,-4.506],"0.29":[4.706,14.189,-4.499],"0.33":[4.731,14.243,-4.475],"0.38":[4.762,14.265,-4.446],"0.42":[4.792,14.292,-4.414],"0.46":[4.826,14.332,-4.389],"0.5":[4.807,14.452,-4.361],"0.54":[4.763,14.604,-4.324],"0.58":[4.716,14.753,-4.285],"0.62":[4.679,14.876,-4.258],"0.67":[4.631,15.005,-4.245],"0.71":[4.578,15.12,-4.243],"0.75":[4.534,15.234,-4.242],"0.79":[4.505,15.308,-4.245],"0.83":[4.486,15.317,-4.246],"0.88":[4.487,15.316,-4.247],"0.92":[4.493,15.322,-4.24],"0.96":[4.485,15.317,-4.247],"1.0":[4.49,15.318,-4.243],"1.04":[4.49,15.318,-4.245],"1.08":[4.489,15.325,-4.246],"1.12":[4.488,15.323,-4.243],"1.17":[4.487,15.321,-4.245],"1.21":[4.485,15.322,-4.245],"1.25":[4.48,15.319,-4.244],"1.29":[4.481,15.319,-4.243],"1.33":[4.481,15.319,-4.243],"1.38":[4.482,15.319,-4.242],"1.42":[4.487,15.319,-4.243],"1.46":[4.482,15.319,-4.247],"1.5":[4.488,15.324,-4.245],"1.54":[4.486,15.321,-4.244],"1.58":[4.492,15.326,-4.238],"1.62":[4.487,15.319,-4.244],"1.67":[4.487,15.315,-4.243],"1.71":[4.492,15.322,-4.242],"1.75":[4.488,15.315,-4.245],"1.79":[4.485,15.315,-4.248],"1.83":[4.493,15.328,-4.245],"1.88":[4.482,15.32,-4.246],"1.92":[4.469,15.313,-4.253],"1.96":[4.452,15.306,-4.264],"2.0":[4.429,15.304,-4.271],"2.04":[4.413,15.301,-4.271],"2.08":[4.397,15.289,-4.283],"2.12":[4.385,15.277,-4.295],"2.17":[4.363,15.264,-4.331],"2.21":[4.329,15.233,-4.374],"2.25":[4.293,15.204,-4.426],"2.29":[4.254,15.177,-4.472],"2.33":[4.216,15.148,-4.516],"2.38":[4.174,15.12,-4.559],"2.42":[4.118,15.104,-4.596],"2.46":[4.063,15.09,-4.622],"2.5":[4.02,15.069,-4.654],"2.54":[3.983,15.06,-4.667],"2.58":[3.972,15.053,-4.678],"2.62":[3.976,15.052,-4.686],"2.67":[3.969,15.054,-4.682],"2.71":[3.964,15.055,-4.678],"2.75":[3.961,15.057,-4.674],"2.79":[3.955,15.056,-4.673],"2.83":[3.954,15.057,-4.673],"2.88":[3.953,15.057,-4.673],"2.92":[3.952,15.056,-4.674],"2.96":[3.952,15.056,-4.674],"3.0":[3.949,15.058,-4.674],"3.04":[3.951,15.058,-4.673],"3.08":[3.956,15.051,-4.678],"3.12":[3.955,15.049,-4.68],"3.17":[3.96,15.049,-4.681],"3.21":[3.959,15.048,-4.679],"3.25":[3.958,15.048,-4.68],"3.29":[3.949,15.061,-4.677],"3.33":[3.951,15.058,-4.679],"3.38":[3.954,15.047,-4.68],"3.42":[3.952,15.054,-4.685],"3.46":[3.961,15.05,-4.691],"3.5":[3.959,15.052,-4.689],"3.54":[3.97,15.051,-4.688],"3.58":[3.98,15.058,-4.678],"3.62":[4.009,15.059,-4.679],"3.67":[4.043,15.071,-4.658],"3.71":[4.093,15.082,-4.649],"3.75":[4.138,15.09,-4.626],"3.79":[4.184,15.117,-4.591],"3.83":[4.223,15.135,-4.563],"3.88":[4.269,15.156,-4.532],"3.92":[4.311,15.178,-4.496],"3.96":[4.343,15.204,-4.464],"4.0":[4.372,15.218,-4.43],"4.04":[4.396,15.241,-4.393],"4.08":[4.421,15.259,-4.364],"4.12":[4.442,15.273,-4.331],"4.17":[4.465,15.296,-4.296],"4.21":[4.474,15.304,-4.276],"4.25":[4.48,15.315,-4.261],"4.29":[4.488,15.319,-4.244],"4.33":[4.486,15.319,-4.242],"4.38":[4.49,15.322,-4.241],"4.42":[4.488,15.318,-4.243],"4.46":[4.482,15.318,-4.247],"4.5":[4.488,15.325,-4.243],"4.54":[4.491,15.324,-4.244],"4.58":[4.488,15.32,-4.249],"4.62":[4.486,15.317,-4.239],"4.67":[4.486,15.318,-4.245],"4.71":[4.49,15.321,-4.245],"4.75":[4.487,15.318,-4.244],"4.79":[4.496,15.325,-4.242],"4.83":[4.487,15.323,-4.248],"4.88":[4.488,15.317,-4.246],"4.92":[4.485,15.316,-4.242],"4.96":[4.484,15.321,-4.244],"5.0":[4.49,15.323,-4.239],"5.04":[4.485,15.314,-4.244],"5.08":[4.485,15.313,-4.243],"5.12":[4.487,15.319,-4.246],"5.17":[4.485,15.314,-4.254],"5.21":[4.494,15.317,-4.25],"5.25":[4.512,15.257,-4.256],"5.29":[4.557,15.019,-4.288],"5.33":[4.607,14.663,-4.348],"5.38":[4.655,14.334,-4.401],"5.42":[4.755,13.996,-4.456],"5.46":[4.888,13.711,-4.451],"5.5":[5.041,13.413,-4.374],"5.54":[5.158,13.222,-4.313],"5.58":[5.207,13.156,-4.272],"5.62":[5.2,13.184,-4.25],"5.67":[5.193,13.208,-4.242],"5.71":[5.2,13.201,-4.241],"5.75":[5.196,13.201,-4.24],"5.79":[5.187,13.207,-4.243],"5.83":[5.196,13.199,-4.242],"5.88":[5.194,13.203,-4.243],"5.92":[5.198,13.205,-4.242],"5.96":[5.196,13.198,-4.24],"6.0":[5.198,13.196,-4.243],"6.04":[5.195,13.202,-4.243],"6.08":[5.2,13.197,-4.241],"6.12":[5.201,13.193,-4.242]}},"lefthand":{"rotation":{"0.0":[122.885,39.887,78.761],"0.04":[126.311,28.05,77.143],"0.08":[126.861,15.551,75.343],"0.12":[124.968,5.11,75.51],"0.17":[120.934,-4.002,78.105],"0.21":[115.691,-10.757,82.414],"0.25":[111.182,-14.636,87.375],"0.29":[109.396,-15.946,90.321],"0.33":[109.401,-15.945,90.305],"0.38":[109.395,-15.939,90.308],"0.42":[109.406,-15.945,90.295],"0.46":[109.404,-15.947,90.303],"0.5":[109.405,-15.949,90.286],"0.54":[109.412,-15.936,90.282],"0.58":[109.416,-15.929,90.276],"0.62":[109.42,-15.949,90.265],"0.67":[109.435,-15.935,90.266],"0.71":[109.439,-15.919,90.261],"0.75":[109.433,-15.921,90.249],"0.79":[109.445,-15.918,90.239],"0.83":[109.454,-15.914,90.224],"0.88":[109.465,-15.908,90.208],"0.92":[109.456,-15.908,90.208],"0.96":[109.467,-15.899,90.201],"1.0":[109.489,-15.891,90.186],"1.04":[109.493,-15.886,90.175],"1.08":[109.505,-15.877,90.145],"1.12":[109.515,-15.872,90.126],"1.17":[109.527,-15.872,90.124],"1.21":[109.537,-15.861,90.1],"1.25":[109.547,-15.849,90.097],"1.29":[109.571,-15.856,90.076],"1.33":[109.574,-15.837,90.048],"1.38":[109.591,-15.831,90.027],"1.42":[109.604,-15.818,90.014],"1.46":[109.607,-15.798,89.991],"1.5":[109.638,-15.795,89.96],"1.54":[109.695,-15.767,89.886],"1.58":[109.755,-15.735,89.794],"1.62":[109.789,-15.698,89.738],"1.67":[109.848,-15.673,89.664],"1.71":[109.889,-15.647,89.613],"1.75":[109.889,-15.637,89.584],"1.79":[109.916,-15.628,89.558],"1.83":[109.925,-15.612,89.543],"1.88":[109.934,-15.602,89.53],"1.92":[109.953,-15.595,89.511],"1.96":[109.959,-15.594,89.488],"2.0":[109.974,-15.583,89.48],"2.04":[109.996,-15.574,89.46],"2.08":[109.989,-15.557,89.455],"2.12":[110.016,-15.567,89.41],"2.17":[110.028,-15.546,89.39],"2.21":[110.048,-15.533,89.372],"2.25":[110.056,-15.528,89.363],"2.29":[110.06,-15.527,89.337],"2.33":[110.091,-15.509,89.315],"2.38":[110.1,-15.5,89.294],"2.42":[110.123,-15.495,89.266],"2.46":[110.134,-15.489,89.243],"2.5":[110.133,-15.484,89.241],"2.54":[110.16,-15.466,89.214],"2.58":[110.181,-15.446,89.195],"2.62":[110.175,-15.449,89.187],"2.67":[110.19,-15.441,89.158],"2.71":[110.205,-15.435,89.133],"2.75":[110.217,-15.416,89.121],"2.79":[110.224,-15.409,89.111],"2.83":[110.246,-15.402,89.088],"2.88":[110.272,-15.39,89.062],"2.92":[110.287,-15.38,89.04],"2.96":[110.294,-15.372,89.016],"3.0":[110.301,-15.361,89.007],"3.04":[110.308,-15.354,89.001],"3.08":[110.327,-15.351,88.969],"3.12":[110.334,-15.332,88.957],"3.17":[110.357,-15.333,88.935],"3.21":[110.358,-15.319,88.924],"3.25":[110.371,-15.304,88.899],"3.29":[110.389,-15.313,88.891],"3.33":[110.396,-15.29,88.87],"3.38":[110.402,-15.29,88.859],"3.42":[110.415,-15.288,88.845],"3.46":[110.444,-15.292,88.808],"3.5":[110.451,-15.274,88.808],"3.54":[110.463,-15.262,88.789],"3.58":[110.468,-15.256,88.777],"3.62":[110.47,-15.244,88.763],"3.67":[110.475,-15.246,88.756],"3.71":[110.493,-15.241,88.732],"3.75":[110.51,-15.23,88.728],"3.79":[110.511,-15.229,88.721],"3.83":[110.516,-15.22,88.697],"3.88":[110.524,-15.214,88.692],"3.92":[110.534,-15.209,88.675],"3.96":[110.528,-15.202,88.672],"4.0":[110.541,-15.196,88.668],"4.04":[110.563,-15.205,88.642],"4.08":[110.558,-15.188,88.636],"4.12":[110.557,-15.184,88.635],"4.17":[110.566,-15.185,88.635],"4.21":[110.57,-15.185,88.622],"4.25":[110.57,-15.178,88.626],"4.29":[110.579,-15.163,88.604],"4.33":[110.58,-15.167,88.603],"4.38":[110.589,-15.174,88.596],"4.42":[110.589,-15.179,88.595],"4.46":[110.58,-15.152,88.597],"4.5":[110.587,-15.174,88.594],"4.54":[110.585,-15.17,88.586],"4.58":[110.579,-15.171,88.589],"4.62":[110.578,-15.173,88.593],"4.67":[110.589,-15.165,88.585],"4.71":[110.58,-15.169,88.585],"4.75":[110.578,-15.173,88.593],"4.79":[110.578,-15.173,88.593],"4.83":[110.574,-15.174,88.591],"4.88":[110.58,-15.169,88.585],"4.92":[110.575,-15.172,88.587],"4.96":[110.578,-15.173,88.593],"5.0":[110.579,-15.171,88.589],"5.04":[110.583,-15.165,88.577],"5.08":[110.583,-15.165,88.577],"5.12":[110.588,-15.168,88.58],"5.17":[110.583,-15.167,88.577],"5.21":[111.181,-14.331,87.872],"5.25":[113.716,-10.094,84.667],"5.29":[116.864,-2.254,79.845],"5.33":[118.78,7.215,75.219],"5.38":[119.038,16.642,72.095],"5.42":[118.533,25.506,70.967],"5.46":[118.406,32.561,70.834],"5.5":[118.42,37.884,71.047],"5.54":[118.021,41.407,71.394],"5.58":[117.521,43.615,71.784],"5.62":[117.312,44.934,72.389],"5.67":[117.4,45.578,73.241],"5.71":[117.677,45.927,74.266],"5.75":[118.098,46.09,75.374],"5.79":[118.585,46.062,76.389],"5.83":[119.016,45.932,77.165],"5.88":[119.369,45.764,77.79],"5.92":[119.632,45.623,78.279],"5.96":[119.753,45.554,78.601],"6.0":[119.822,45.502,78.871],"6.04":[119.829,45.508,78.919],"6.08":[119.823,45.503,78.923],"6.12":[119.819,45.513,78.907]},"position":{"0.0":[16.289,-29.518,-24.497],"0.04":[18.06,-31.547,-22.559],"0.08":[19.898,-33.401,-20.596],"0.12":[21.285,-34.782,-18.934],"0.17":[22.413,-35.959,-17.478],"0.21":[23.013,-36.583,-16.614],"0.25":[22.893,-36.726,-16.549],"0.29":[22.639,-36.954,-16.843],"0.33":[22.583,-37.436,-17.187],"0.38":[22.527,-37.969,-17.561],"0.42":[22.467,-38.483,-17.924],"0.46":[22.423,-38.908,-18.222],"0.5":[22.398,-39.071,-18.329],"0.54":[22.395,-39.181,-18.41],"0.58":[22.381,-39.221,-18.438],"0.62":[22.376,-39.223,-18.436],"0.67":[22.377,-39.222,-18.436],"0.71":[22.377,-39.222,-18.437],"0.75":[22.379,-39.222,-18.437],"0.79":[22.378,-39.223,-18.437],"0.83":[22.379,-39.223,-18.436],"0.88":[22.38,-39.224,-18.436],"0.92":[22.382,-39.224,-18.436],"0.96":[22.383,-39.225,-18.436],"1.0":[22.382,-39.226,-18.435],"1.04":[22.383,-39.226,-18.435],"1.08":[22.385,-39.227,-18.435],"1.12":[22.385,-39.227,-18.435],"1.17":[22.386,-39.228,-18.433],"1.21":[22.388,-39.23,-18.433],"1.25":[22.389,-39.229,-18.433],"1.29":[22.389,-39.231,-18.432],"1.33":[22.392,-39.232,-18.432],"1.38":[22.393,-39.233,-18.431],"1.42":[22.395,-39.233,-18.432],"1.46":[22.397,-39.234,-18.431],"1.5":[22.399,-39.236,-18.432],"1.54":[22.404,-39.244,-18.436],"1.58":[22.409,-39.252,-18.435],"1.62":[22.416,-39.258,-18.432],"1.67":[22.421,-39.261,-18.429],"1.71":[22.424,-39.264,-18.428],"1.75":[22.414,-39.264,-18.428],"1.79":[22.411,-39.265,-18.428],"1.83":[22.413,-39.265,-18.428],"1.88":[22.414,-39.266,-18.428],"1.92":[22.415,-39.268,-18.427],"1.96":[22.417,-39.269,-18.425],"2.0":[22.418,-39.272,-18.434],"2.04":[22.418,-39.28,-18.434],"2.08":[22.421,-39.28,-18.434],"2.12":[22.423,-39.282,-18.432],"2.17":[22.424,-39.283,-18.431],"2.21":[22.425,-39.283,-18.432],"2.25":[22.427,-39.284,-18.431],"2.29":[22.43,-39.286,-18.43],"2.33":[22.43,-39.287,-18.43],"2.38":[22.432,-39.287,-18.43],"2.42":[22.433,-39.288,-18.429],"2.46":[22.435,-39.29,-18.428],"2.5":[22.437,-39.291,-18.428],"2.54":[22.438,-39.292,-18.427],"2.58":[22.438,-39.293,-18.427],"2.62":[22.441,-39.294,-18.426],"2.67":[22.442,-39.294,-18.426],"2.71":[22.444,-39.296,-18.426],"2.75":[22.446,-39.296,-18.426],"2.79":[22.446,-39.297,-18.425],"2.83":[22.448,-39.299,-18.424],"2.88":[22.449,-39.3,-18.423],"2.92":[22.45,-39.3,-18.423],"2.96":[22.452,-39.31,-18.423],"3.0":[22.454,-39.311,-18.431],"3.04":[22.455,-39.312,-18.431],"3.08":[22.444,-39.313,-18.43],"3.12":[22.44,-39.313,-18.43],"3.17":[22.442,-39.314,-18.429],"3.21":[22.444,-39.315,-18.429],"3.25":[22.445,-39.315,-18.429],"3.29":[22.445,-39.318,-18.427],"3.33":[22.447,-39.317,-18.428],"3.38":[22.449,-39.318,-18.427],"3.42":[22.449,-39.32,-18.426],"3.46":[22.45,-39.321,-18.425],"3.5":[22.451,-39.322,-18.425],"3.54":[22.452,-39.322,-18.425],"3.58":[22.453,-39.322,-18.425],"3.62":[22.455,-39.322,-18.426],"3.67":[22.457,-39.325,-18.424],"3.71":[22.457,-39.325,-18.423],"3.75":[22.458,-39.325,-18.424],"3.79":[22.458,-39.326,-18.423],"3.83":[22.46,-39.327,-18.422],"3.88":[22.461,-39.327,-18.422],"3.92":[22.461,-39.327,-18.422],"3.96":[22.463,-39.327,-18.423],"4.0":[22.463,-39.328,-18.422],"4.04":[22.463,-39.33,-18.42],"4.08":[22.464,-39.329,-18.421],"4.12":[22.465,-39.329,-18.422],"4.17":[22.467,-39.33,-18.422],"4.21":[22.467,-39.33,-18.421],"4.25":[22.467,-39.33,-18.422],"4.29":[22.469,-39.33,-18.422],"4.33":[22.468,-39.331,-18.421],"4.38":[22.467,-39.332,-18.419],"4.42":[22.469,-39.332,-18.419],"4.46":[22.47,-39.33,-18.422],"4.5":[22.469,-39.333,-18.419],"4.54":[22.469,-39.333,-18.419],"4.58":[22.47,-39.333,-18.419],"4.92":[22.47,-39.333,-18.419],"4.96":[22.47,-39.342,-18.419],"5.08":[22.47,-39.342,-18.419],"5.12":[22.47,-39.34,-18.421],"5.17":[22.47,-39.342,-18.419],"5.21":[22.296,-39.209,-18.618],"5.25":[21.452,-38.573,-19.578],"5.29":[20.043,-37.437,-21.222],"5.33":[18.508,-36.104,-23.072],"5.38":[17.361,-34.822,-24.45],"5.42":[16.659,-33.501,-25.143],"5.46":[16.12,-32.229,-25.506],"5.5":[15.73,-31.05,-25.72],"5.54":[15.474,-30.054,-25.87],"5.58":[15.355,-29.219,-25.941],"5.62":[15.344,-28.568,-25.92],"5.67":[15.368,-28.278,-25.848],"5.71":[15.401,-28.192,-25.764],"5.75":[15.426,-28.204,-25.679],"5.79":[15.449,-28.268,-25.581],"5.83":[15.455,-28.353,-25.52],"5.88":[15.456,-28.412,-25.479],"5.92":[15.458,-28.457,-25.451],"5.96":[15.455,-28.492,-25.426],"6.0":[15.451,-28.499,-25.423],"6.04":[15.448,-28.489,-25.429],"6.08":[15.446,-28.479,-25.441],"6.12":[15.447,-28.465,-25.444]},"scale":[1,1.5,1]},"righthand":{"position":{"0.0":{"post":[0,3.85,-2.25],"lerp_mode":"catmullrom"},"0.62":{"post":[-1.75,5.65,-1.5],"lerp_mode":"catmullrom"},"5.12":{"post":[-1.75,5.65,-1.5],"lerp_mode":"catmullrom"},"5.81":{"post":[0,3.85,-2.25],"lerp_mode":"catmullrom"}},"scale":[1,1.5,1]},"root":{"position":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.62":{"post":[0,-3,2],"lerp_mode":"catmullrom"},"5.08":{"post":[0,-3,2],"lerp_mode":"catmullrom"},"5.59":{"post":[0,0,0],"lerp_mode":"catmullrom"}}}}},"static_idle":{"loop":true,"animation_length":1.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[85.893,-49.343,-92.055],"0.04":[85.897,-49.389,-92.088],"0.08":[85.895,-49.439,-92.129],"0.12":[85.901,-49.492,-92.142],"0.17":[85.886,-49.516,-92.149],"0.21":[85.884,-49.563,-92.18],"0.25":[85.878,-49.597,-92.18],"0.29":[85.889,-49.615,-92.202],"0.33":[85.882,-49.628,-92.2],"0.38":[85.884,-49.627,-92.222],"0.42":[85.872,-49.628,-92.204],"0.46":[85.885,-49.623,-92.24],"0.5":[85.87,-49.596,-92.206],"0.54":[85.86,-49.554,-92.193],"0.58":[85.877,-49.513,-92.196],"0.62":[85.877,-49.474,-92.186],"0.67":[85.882,-49.41,-92.177],"0.71":[85.887,-49.338,-92.158],"0.75":[85.882,-49.273,-92.143],"0.79":[85.876,-49.192,-92.092],"0.83":[85.877,-49.106,-92.079],"0.88":[85.867,-49.032,-92.052],"0.92":[85.885,-48.955,-92.048],"0.96":[85.887,-48.862,-92.013],"1.0":[85.887,-48.785,-92.001],"1.04":[85.881,-48.712,-91.971],"1.08":[85.881,-48.633,-91.939],"1.12":[85.892,-48.561,-91.94],"1.17":[85.891,-48.498,-91.915],"1.21":[85.892,-48.433,-91.898],"1.25":[85.886,-48.378,-91.865],"1.29":[85.876,-48.329,-91.849],"1.33":[85.882,-48.306,-91.846],"1.38":[85.886,-48.291,-91.833],"1.42":[85.887,-48.284,-91.822],"1.46":[85.897,-48.27,-91.828],"1.5":[85.887,-48.302,-91.825],"1.54":[85.895,-48.324,-91.845],"1.58":[85.906,-48.369,-91.853],"1.62":[85.894,-48.408,-91.853],"1.67":[85.904,-48.479,-91.879],"1.71":[85.905,-48.547,-91.879],"1.75":[85.905,-48.649,-91.922],"1.79":[85.881,-48.731,-91.899],"1.83":[85.903,-48.855,-91.949],"1.88":[85.898,-48.987,-91.974],"1.92":[85.904,-49.126,-92.015],"1.96":[85.916,-49.286,-92.05]},"position":{"0.0":[-11.968,-26.138,-19.11],"0.04":[-11.969,-26.159,-19.113],"0.08":[-11.965,-26.178,-19.115],"0.12":[-11.966,-26.201,-19.117],"0.17":[-11.962,-26.216,-19.118],"0.21":[-11.963,-26.231,-19.117],"0.25":[-11.962,-26.239,-19.119],"0.29":[-11.962,-26.248,-19.12],"0.33":[-11.959,-26.261,-19.121],"0.38":[-11.96,-26.265,-19.12],"0.42":[-11.96,-26.268,-19.121],"0.46":[-11.96,-26.269,-19.121],"0.5":[-11.96,-26.267,-19.121],"0.54":[-11.96,-26.265,-19.121],"0.58":[-11.959,-26.253,-19.121],"0.62":[-11.962,-26.244,-19.118],"0.67":[-11.961,-26.237,-19.119],"0.71":[-11.962,-26.224,-19.118],"0.75":[-11.963,-26.21,-19.116],"0.79":[-11.966,-26.2,-19.117],"0.83":[-11.966,-26.18,-19.115],"0.88":[-11.967,-26.168,-19.111],"0.92":[-11.968,-26.149,-19.11],"0.96":[-11.967,-26.135,-19.109],"1.0":[-11.97,-26.113,-19.108],"1.04":[-11.97,-26.101,-19.107],"1.08":[-11.971,-26.083,-19.106],"1.12":[-11.973,-26.069,-19.101],"1.17":[-11.972,-26.05,-19.101],"1.21":[-11.974,-26.04,-19.101],"1.25":[-11.975,-26.025,-19.098],"1.29":[-11.977,-26.017,-19.1],"1.33":[-11.978,-26.008,-19.097],"1.38":[-11.979,-26.004,-19.097],"1.42":[-11.978,-26,-19.095],"1.46":[-11.977,-25.999,-19.094],"1.5":[-11.977,-25.999,-19.094],"1.54":[-11.978,-26,-19.095],"1.58":[-11.979,-26.002,-19.096],"1.62":[-11.974,-26.007,-19.099],"1.67":[-11.976,-26.012,-19.097],"1.71":[-11.976,-26.024,-19.099],"1.75":[-11.975,-26.035,-19.097],"1.79":[-11.975,-26.045,-19.102],"1.83":[-11.972,-26.058,-19.102],"1.88":[-11.973,-26.076,-19.102],"1.92":[-11.972,-26.095,-19.104],"1.96":[-11.969,-26.11,-19.105]}},"bayonet":{"rotation":{"0.0":[19.447,9.579,166.17],"0.04":[19.455,9.578,166.175],"0.08":[19.438,9.554,166.174],"0.12":[19.456,9.562,166.167],"0.17":[19.452,9.565,166.182],"0.21":[19.441,9.556,166.168],"0.25":[19.447,9.567,166.161],"0.29":[19.459,9.56,166.175],"0.33":[19.454,9.571,166.175],"0.38":[19.446,9.559,166.176],"0.42":[19.446,9.568,166.175],"0.46":[19.446,9.539,166.177],"0.5":[19.439,9.564,166.174],"0.54":[19.438,9.564,166.176],"0.58":[19.449,9.561,166.181],"0.62":[19.447,9.553,166.177],"0.67":[19.451,9.558,166.173],"0.71":[19.451,9.561,166.181],"0.75":[19.444,9.555,166.17],"0.79":[19.452,9.572,166.172],"0.83":[19.45,9.571,166.183],"0.88":[19.443,9.567,166.177],"0.92":[19.443,9.557,166.169],"0.96":[19.452,9.563,166.187],"1.0":[19.45,9.558,166.171],"1.04":[19.45,9.564,166.167],"1.08":[19.453,9.571,166.181],"1.12":[19.447,9.554,166.18],"1.17":[19.445,9.555,166.173],"1.21":[19.45,9.562,166.178],"1.25":[19.448,9.575,166.184],"1.29":[19.436,9.569,166.177],"1.33":[19.438,9.568,166.178],"1.38":[19.442,9.572,166.171],"1.42":[19.453,9.577,166.169],"1.46":[19.448,9.575,166.189],"1.5":[19.454,9.57,166.179],"1.54":[19.453,9.563,166.18],"1.58":[19.462,9.57,166.175],"1.62":[19.449,9.576,166.183],"1.67":[19.448,9.563,166.179],"1.71":[19.459,9.573,166.184],"1.75":[19.448,9.555,166.169],"1.79":[19.444,9.586,166.183],"1.83":[19.45,9.564,166.175],"1.88":[19.445,9.563,166.173],"1.92":[19.445,9.566,166.175],"1.96":[19.45,9.562,166.179]},"position":{"0.0":[5.205,13.194,-4.239],"0.04":[5.199,13.197,-4.241],"0.08":[5.192,13.202,-4.239],"0.12":[5.194,13.205,-4.245],"0.17":[5.194,13.204,-4.242],"0.21":[5.193,13.206,-4.244],"0.25":[5.191,13.203,-4.243],"0.29":[5.191,13.204,-4.244],"0.33":[5.194,13.206,-4.241],"0.38":[5.193,13.207,-4.244],"0.42":[5.194,13.205,-4.243],"0.46":[5.194,13.205,-4.244],"0.5":[5.194,13.204,-4.243],"0.54":[5.197,13.204,-4.243],"0.58":[5.195,13.201,-4.241],"0.62":[5.193,13.201,-4.243],"0.67":[5.197,13.201,-4.242],"0.71":[5.198,13.199,-4.242],"0.75":[5.197,13.197,-4.242],"0.79":[5.203,13.199,-4.244],"0.83":[5.201,13.195,-4.242],"0.88":[5.201,13.198,-4.244],"0.92":[5.201,13.196,-4.243],"0.96":[5.206,13.197,-4.241],"1.0":[5.198,13.194,-4.243],"1.04":[5.193,13.205,-4.243],"1.08":[5.194,13.203,-4.242],"1.12":[5.192,13.206,-4.244],"1.17":[5.191,13.201,-4.24],"1.21":[5.195,13.203,-4.238],"1.25":[5.194,13.202,-4.239],"1.29":[5.197,13.201,-4.241],"1.33":[5.194,13.201,-4.241],"1.38":[5.196,13.202,-4.242],"1.42":[5.196,13.205,-4.241],"1.46":[5.196,13.206,-4.239],"1.5":[5.197,13.208,-4.24],"1.54":[5.195,13.206,-4.241],"1.58":[5.194,13.205,-4.241],"1.62":[5.195,13.203,-4.238],"1.67":[5.204,13.194,-4.239],"1.71":[5.206,13.197,-4.239],"1.75":[5.2,13.198,-4.24],"1.79":[5.201,13.196,-4.241],"1.83":[5.196,13.197,-4.239],"1.88":[5.195,13.202,-4.24],"1.92":[5.193,13.205,-4.241],"1.96":[5.201,13.193,-4.238]}},"lefthand":{"rotation":{"0.0":[119.864,45.603,78.976],"0.04":[119.896,45.69,79.036],"0.08":[119.965,45.772,79.134],"0.12":[119.999,45.858,79.195],"0.17":[120.05,45.928,79.27],"0.21":[120.132,46.001,79.37],"0.25":[120.216,46.067,79.473],"0.29":[120.285,46.114,79.569],"0.33":[120.338,46.198,79.636],"0.38":[120.445,46.246,79.774],"0.42":[120.506,46.295,79.849],"0.46":[120.613,46.349,79.981],"0.5":[120.681,46.413,80.074],"0.54":[120.739,46.479,80.149],"0.58":[120.832,46.537,80.256],"0.62":[120.904,46.584,80.363],"0.67":[120.989,46.644,80.472],"0.71":[121.053,46.707,80.56],"0.75":[121.123,46.773,80.659],"0.79":[121.178,46.85,80.723],"0.83":[121.258,46.924,80.833],"0.88":[121.311,47.003,80.917],"0.92":[121.344,47.091,80.992],"0.96":[121.38,47.196,81.046],"1.0":[121.344,47.091,80.992],"1.04":[121.311,47.003,80.917],"1.08":[121.249,46.925,80.825],"1.12":[121.191,46.845,80.745],"1.17":[121.118,46.769,80.648],"1.21":[121.053,46.706,80.56],"1.25":[120.989,46.644,80.472],"1.29":[120.904,46.584,80.363],"1.33":[120.832,46.537,80.256],"1.38":[120.739,46.479,80.149],"1.42":[120.681,46.413,80.074],"1.46":[120.613,46.349,79.981],"1.5":[120.506,46.295,79.849],"1.54":[120.444,46.248,79.771],"1.58":[120.337,46.199,79.635],"1.62":[120.285,46.114,79.569],"1.67":[120.218,46.068,79.483],"1.71":[120.124,46.004,79.366],"1.75":[120.049,45.928,79.27],"1.79":[119.991,45.857,79.184],"1.83":[119.965,45.772,79.134],"1.88":[119.9,45.689,79.044],"1.92":[119.866,45.602,78.98],"1.96":[119.807,45.512,78.905]},"position":{"0.0":[15.453,-28.468,-25.448],"0.04":[15.457,-28.474,-25.452],"0.08":[15.46,-28.482,-25.455],"0.12":[15.457,-28.497,-25.46],"0.17":[15.46,-28.508,-25.463],"0.21":[15.462,-28.526,-25.46],"0.25":[15.455,-28.543,-25.457],"0.29":[15.456,-28.565,-25.459],"0.33":[15.458,-28.578,-25.454],"0.38":[15.45,-28.6,-25.454],"0.42":[15.453,-28.623,-25.451],"0.46":[15.444,-28.637,-25.449],"0.5":[15.444,-28.659,-25.449],"0.54":[15.441,-28.681,-25.446],"0.58":[15.441,-28.704,-25.447],"0.62":[15.434,-28.717,-25.44],"0.67":[15.437,-28.739,-25.442],"0.71":[15.439,-28.755,-25.44],"0.75":[15.435,-28.772,-25.439],"0.79":[15.435,-28.783,-25.441],"0.83":[15.438,-28.8,-25.443],"0.88":[15.442,-28.807,-25.442],"0.92":[15.448,-28.812,-25.442],"0.96":[15.453,-28.818,-25.447],"1.0":[15.448,-28.812,-25.442],"1.04":[15.442,-28.807,-25.442],"1.08":[15.438,-28.8,-25.443],"1.12":[15.435,-28.783,-25.441],"1.17":[15.435,-28.772,-25.439],"1.21":[15.439,-28.755,-25.44],"1.25":[15.437,-28.739,-25.442],"1.29":[15.434,-28.717,-25.44],"1.33":[15.441,-28.704,-25.447],"1.38":[15.441,-28.681,-25.446],"1.42":[15.444,-28.659,-25.449],"1.46":[15.444,-28.637,-25.449],"1.5":[15.453,-28.623,-25.451],"1.54":[15.45,-28.6,-25.454],"1.58":[15.458,-28.578,-25.454],"1.62":[15.456,-28.565,-25.459],"1.67":[15.456,-28.542,-25.457],"1.71":[15.462,-28.525,-25.461],"1.75":[15.46,-28.508,-25.463],"1.79":[15.457,-28.497,-25.46],"1.83":[15.46,-28.482,-25.455],"1.88":[15.457,-28.474,-25.452],"1.92":[15.453,-28.468,-25.448],"1.96":[15.449,-28.461,-25.445]},"scale":[1,1.5,1]},"righthand":{"position":[0,3.85,-2.25],"scale":[1,1.5,1]}}},"idle":{"loop":true,"bones":{"root":{"rotation":[0,0,0],"position":[0,0,0],"scale":1}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/bayonet.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/bayonet.geo.json new file mode 100644 index 0000000..06765f5 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/bayonet.geo.json @@ -0,0 +1,659 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 32, + "texture_height": 32, + "visible_bounds_width": 4, + "visible_bounds_height": 4, + "visible_bounds_offset": [0, 0, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "bone", + "parent": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "knife_and_right", + "parent": "bone", + "pivot": [6, 19, 0] + }, + { + "name": "bayonet", + "parent": "knife_and_right", + "pivot": [0, 9.5, 2.5] + }, + { + "name": "weapon", + "parent": "bayonet", + "pivot": [0, 9.5, -0.375] + }, + { + "name": "blade", + "parent": "weapon", + "pivot": [0, 10.0329, -2.71994], + "cubes": [ + { + "origin": [-2.20119, 8.6375, -2.86369], + "size": [7.17385, 1.8699, 0.28865], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [7.25, 1.75]}, + "east": {"uv": [6, 17], "uv_size": [0.25, 1.75]}, + "south": {"uv": [0, 2], "uv_size": [7.25, 1.75]}, + "west": {"uv": [7, 17], "uv_size": [0.25, 1.75]}, + "up": {"uv": [0, 12], "uv_size": [7.25, 0.25]}, + "down": {"uv": [12, 0.25], "uv_size": [7.25, -0.25]} + } + }, + { + "origin": [-2.20119, 8.4676, -2.86369], + "size": [0.92385, 0.1699, 0.28865], + "pivot": [0, 8.163, -2.71994], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [18, 13], "uv_size": [1, 0.25]}, + "east": {"uv": [21, 17], "uv_size": [0.25, 0.25]}, + "south": {"uv": [14, 18], "uv_size": [1, 0.25]}, + "west": {"uv": [18, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [18, 14], "uv_size": [1, 0.25]}, + "down": {"uv": [15, 18.25], "uv_size": [1, -0.25]} + } + }, + { + "origin": [5.81387, 7.6926, -4.86369], + "size": [0.8625, 0.2875, 0.2875], + "pivot": [0, 10.0329, -4.71994], + "rotation": [-90, 80, -90], + "uv": { + "north": {"uv": [18, 15], "uv_size": [0.75, 0.25]}, + "east": {"uv": [16, 20], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 18], "uv_size": [0.75, 0.25]}, + "west": {"uv": [20, 16], "uv_size": [0.25, 0.25]}, + "up": {"uv": [18, 16], "uv_size": [0.75, 0.25]}, + "down": {"uv": [17, 18.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [6.16855, 6.56882, -4.86369], + "size": [0.73672, 0.2875, 0.2875], + "pivot": [0, 10.0329, -4.71994], + "rotation": [-90, 70, -90], + "uv": { + "north": {"uv": [18, 17], "uv_size": [0.75, 0.25]}, + "east": {"uv": [17, 20], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 18], "uv_size": [0.75, 0.25]}, + "west": {"uv": [20, 17], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 19], "uv_size": [0.75, 0.25]}, + "down": {"uv": [1, 19.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [5.77341, 4.89964, -4.86369], + "size": [0.83555, 0.2875, 0.2875], + "pivot": [0, 10.0329, -4.71994], + "rotation": [-90, 55, -90], + "uv": { + "north": {"uv": [19, 1], "uv_size": [0.75, 0.25]}, + "east": {"uv": [18, 20], "uv_size": [0.25, 0.25]}, + "south": {"uv": [2, 19], "uv_size": [0.75, 0.25]}, + "west": {"uv": [20, 18], "uv_size": [0.25, 0.25]}, + "up": {"uv": [3, 19], "uv_size": [0.75, 0.25]}, + "down": {"uv": [4, 19.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-3.33869, 8.94455, -5.80829], + "size": [8.325, 0.2033, 0.2033], + "pivot": [0, 10.0329, -4.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [6, 10], "uv_size": [8.25, 0.25]}, + "east": {"uv": [19, 20], "uv_size": [0.25, 0.25]}, + "south": {"uv": [10, 8], "uv_size": [8.25, 0.25]}, + "west": {"uv": [20, 19], "uv_size": [0.25, 0.25]}, + "up": {"uv": [10, 9], "uv_size": [8.25, 0.25]}, + "down": {"uv": [6, 11.25], "uv_size": [8.25, -0.25]} + } + }, + { + "origin": [5.81387, 8.27641, -6.47643], + "size": [0.8625, 0.2033, 0.2033], + "pivot": [0, 10.0329, -4.71994], + "rotation": [-45, 80, -90], + "uv": { + "north": {"uv": [5, 19], "uv_size": [0.75, 0.25]}, + "east": {"uv": [20, 20], "uv_size": [0.25, 0.25]}, + "south": {"uv": [6, 19], "uv_size": [0.75, 0.25]}, + "west": {"uv": [0, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [7, 19], "uv_size": [0.75, 0.25]}, + "down": {"uv": [19, 7.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [6.16855, 7.48178, -7.27107], + "size": [0.73672, 0.20329, 0.2033], + "pivot": [0, 10.0329, -4.71994], + "rotation": [-45, 70, -90], + "uv": { + "north": {"uv": [8, 19], "uv_size": [0.75, 0.25]}, + "east": {"uv": [21, 0], "uv_size": [0.25, 0.25]}, + "south": {"uv": [19, 8], "uv_size": [0.75, 0.25]}, + "west": {"uv": [1, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [9, 19], "uv_size": [0.75, 0.25]}, + "down": {"uv": [19, 9.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [5.71387, 6.33693, -1.22599], + "size": [0.83554, 0.20329, 0.2033], + "pivot": [-0.05955, 9.98413, -4.7541], + "rotation": [-135, 55, -90], + "uv": { + "north": {"uv": [10, 19], "uv_size": [0.75, 0.25]}, + "east": {"uv": [21, 1], "uv_size": [0.25, 0.25]}, + "south": {"uv": [11, 19], "uv_size": [0.75, 0.25]}, + "west": {"uv": [2, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [12, 19], "uv_size": [0.75, 0.25]}, + "down": {"uv": [13, 19.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [5.80726, 10.7815, -10.72829], + "size": [0.20328, 0.21563, 0.2033], + "pivot": [0, 10.1649, -4.71773], + "rotation": [11.2413, 44.4451, 7.9231], + "uv": { + "north": {"uv": [21, 2], "uv_size": [0.25, 0.25]}, + "east": {"uv": [3, 21], "uv_size": [0.25, 0.25]}, + "south": {"uv": [21, 3], "uv_size": [0.25, 0.25]}, + "west": {"uv": [4, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 4], "uv_size": [0.25, 0.25]}, + "down": {"uv": [5, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [7.99708, 10.78151, -4.86148], + "size": [0.35937, 0.21563, 0.2875], + "pivot": [0, 10.1649, -4.71773], + "rotation": [90, 82, 90], + "uv": { + "north": {"uv": [21, 5], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 21], "uv_size": [0.25, 0.25]}, + "south": {"uv": [21, 6], "uv_size": [0.25, 0.25]}, + "west": {"uv": [7, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 7], "uv_size": [0.25, 0.25]}, + "down": {"uv": [8, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.14375, 10.14688, -8.55625], + "size": [4.52812, 0.35937, 0.2875], + "pivot": [0.14375, 10.50625, -8.26875], + "rotation": [90, 82, 90], + "uv": { + "north": {"uv": [15, 3], "uv_size": [4.5, 0.25]}, + "east": {"uv": [21, 8], "uv_size": [0.25, 0.25]}, + "south": {"uv": [15, 4], "uv_size": [4.5, 0.25]}, + "west": {"uv": [9, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [15, 5], "uv_size": [4.5, 0.25]}, + "down": {"uv": [15, 6.25], "uv_size": [4.5, -0.25]} + } + }, + { + "origin": [2.97366, 8.63735, -4.86384], + "size": [5.4628, 1.86905, 0.2878], + "inflate": 0.001, + "pivot": [0, 10.0329, -4.71994], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [5.5, 4], "uv_size": [-5.5, 1.75]}, + "east": {"uv": [17, 10], "uv_size": [0.25, 1.75]}, + "south": {"uv": [5.5, 6], "uv_size": [-5.5, 1.75]}, + "up": {"uv": [18.5, 7], "uv_size": [-5.5, 0.25]} + } + }, + { + "origin": [4.84571, 8.64101, -6.11183], + "size": [1.15, 0.20329, 0.20329], + "pivot": [0, 10.0329, -4.71994], + "rotation": [-45, 85, -90], + "uv": { + "north": {"uv": [18, 2], "uv_size": [1.25, 0.25]}, + "east": {"uv": [21, 9], "uv_size": [0.25, 0.25]}, + "south": {"uv": [3, 18], "uv_size": [1.25, 0.25]}, + "west": {"uv": [10, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [8, 18], "uv_size": [1.25, 0.25]}, + "down": {"uv": [10, 18.25], "uv_size": [1.25, -0.25]} + } + }, + { + "origin": [4.84571, 8.20823, -4.86369], + "size": [1.15, 0.2875, 0.2875], + "pivot": [0, 10.0329, -4.71994], + "rotation": [-90, 85, -90], + "uv": { + "north": {"uv": [18, 10], "uv_size": [1.25, 0.25]}, + "east": {"uv": [21, 10], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 11], "uv_size": [1.25, 0.25]}, + "west": {"uv": [11, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [12, 18], "uv_size": [1.25, 0.25]}, + "down": {"uv": [18, 12.25], "uv_size": [1.25, -0.25]} + } + } + ] + }, + { + "name": "grip", + "parent": "weapon", + "pivot": [0, 9.49999, 3.22902], + "cubes": [ + { + "origin": [-9.24494, 9.15295, -3.59989], + "size": [6.75625, 1.00625, 1.00625], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [6, 4], "uv_size": [6.75, 1]}, + "east": {"uv": [12, 3], "uv_size": [1, 1]}, + "south": {"uv": [6, 5], "uv_size": [6.75, 1]}, + "west": {"uv": [4, 15], "uv_size": [1, 1]}, + "up": {"uv": [6, 6], "uv_size": [6.75, 1]}, + "down": {"uv": [6, 8], "uv_size": [6.75, -1]} + } + }, + { + "origin": [-3.63869, 9.08108, -3.67176], + "size": [1.15, 1.15, 1.15], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [12, 1], "uv_size": [1.25, 1.25]}, + "east": {"uv": [8, 12], "uv_size": [1.25, 1.25]}, + "south": {"uv": [10, 12], "uv_size": [1.25, 1.25]}, + "west": {"uv": [12, 12], "uv_size": [1.25, 1.25]}, + "up": {"uv": [0, 13], "uv_size": [1.25, 1.25]}, + "down": {"uv": [2, 14.25], "uv_size": [1.25, -1.25]} + } + }, + { + "origin": [-4.78869, 9.08108, -3.67176], + "size": [0.8625, 1.15, 1.15], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [15, 12], "uv_size": [0.75, 1.25]}, + "east": {"uv": [13, 3], "uv_size": [1.25, 1.25]}, + "south": {"uv": [15, 14], "uv_size": [0.75, 1.25]}, + "west": {"uv": [4, 13], "uv_size": [1.25, 1.25]}, + "up": {"uv": [0, 16], "uv_size": [0.75, 1.25]}, + "down": {"uv": [1, 17.25], "uv_size": [0.75, -1.25]} + } + }, + { + "origin": [-5.93869, 9.08108, -3.67176], + "size": [0.8625, 1.15, 1.15], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [16, 1], "uv_size": [0.75, 1.25]}, + "east": {"uv": [13, 5], "uv_size": [1.25, 1.25]}, + "south": {"uv": [2, 16], "uv_size": [0.75, 1.25]}, + "west": {"uv": [6, 13], "uv_size": [1.25, 1.25]}, + "up": {"uv": [3, 16], "uv_size": [0.75, 1.25]}, + "down": {"uv": [4, 17.25], "uv_size": [0.75, -1.25]} + } + }, + { + "origin": [-7.08869, 9.08108, -3.67176], + "size": [0.8625, 1.15, 1.15], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [8, 16], "uv_size": [0.75, 1.25]}, + "east": {"uv": [14, 1], "uv_size": [1.25, 1.25]}, + "south": {"uv": [9, 16], "uv_size": [0.75, 1.25]}, + "west": {"uv": [8, 14], "uv_size": [1.25, 1.25]}, + "up": {"uv": [10, 16], "uv_size": [0.75, 1.25]}, + "down": {"uv": [16, 11.25], "uv_size": [0.75, -1.25]} + } + }, + { + "origin": [-9.10119, 8.93733, -3.81551], + "size": [1.4375, 1.4375, 1.4375], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [8, 8], "uv_size": [1.5, 1.5]}, + "east": {"uv": [0, 10], "uv_size": [1.5, 1.5]}, + "south": {"uv": [10, 0], "uv_size": [1.5, 1.5]}, + "west": {"uv": [2, 10], "uv_size": [1.5, 1.5]}, + "up": {"uv": [10, 2], "uv_size": [1.5, 1.5]}, + "down": {"uv": [4, 11.5], "uv_size": [1.5, -1.5]} + } + }, + { + "origin": [-8.23869, 9.08108, -3.67176], + "size": [0.8625, 1.15, 1.15], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [11, 16], "uv_size": [0.75, 1.25]}, + "east": {"uv": [10, 14], "uv_size": [1.25, 1.25]}, + "south": {"uv": [12, 16], "uv_size": [0.75, 1.25]}, + "west": {"uv": [12, 14], "uv_size": [1.25, 1.25]}, + "up": {"uv": [16, 12], "uv_size": [0.75, 1.25]}, + "down": {"uv": [13, 17.25], "uv_size": [0.75, -1.25]} + } + } + ] + }, + { + "name": "bone3", + "parent": "weapon", + "pivot": [0, 0.875, -1.09375], + "cubes": [ + { + "origin": [0.8625, 7.27188, -0.80625], + "size": [0.2875, 1.94062, 0.575], + "pivot": [0.8625, 9.2125, -0.23125], + "rotation": [0, 90, 15], + "uv": { + "north": {"uv": [14, 16], "uv_size": [0.25, 2]}, + "east": {"uv": [5, 15], "uv_size": [0.5, 2]}, + "south": {"uv": [16, 14], "uv_size": [0.25, 2]}, + "west": {"uv": [6, 15], "uv_size": [0.5, 2]}, + "up": {"uv": [11, 20], "uv_size": [0.25, 0.5]}, + "down": {"uv": [20, 11.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.8625, 7.27188, -1.09375], + "size": [0.2875, 1.94062, 0.575], + "pivot": [-0.8625, 9.2125, -0.51875], + "rotation": [0, -90, -15], + "uv": { + "north": {"uv": [15, 16], "uv_size": [0.25, 2]}, + "east": {"uv": [7, 15], "uv_size": [0.5, 2]}, + "south": {"uv": [16, 16], "uv_size": [0.25, 2]}, + "west": {"uv": [15, 10], "uv_size": [0.5, 2]}, + "up": {"uv": [12, 20], "uv_size": [0.25, 0.5]}, + "down": {"uv": [20, 12.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-2.48884, 7.3436, -3.07947], + "size": [0.2878, 2.0128, 0.71905], + "inflate": 0.001, + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [17, 1], "uv_size": [0.25, 2]}, + "east": {"uv": [14, 12], "uv_size": [0.75, 2]}, + "south": {"uv": [5, 17], "uv_size": [0.25, 2]}, + "west": {"uv": [14, 14], "uv_size": [0.75, 2]}, + "up": {"uv": [19, 13], "uv_size": [0.25, 0.75]}, + "down": {"uv": [14, 19.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-2.48869, 9.2125, -3.58244], + "size": [0.2875, 0.71875, 1.725], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [19, 14], "uv_size": [0.25, 0.75]}, + "east": {"uv": [0, 15], "uv_size": [1.75, 0.75]}, + "south": {"uv": [15, 19], "uv_size": [0.25, 0.75]}, + "west": {"uv": [2, 15], "uv_size": [1.75, 0.75]}, + "up": {"uv": [17, 12], "uv_size": [0.25, 1.75]}, + "down": {"uv": [17, 15.75], "uv_size": [0.25, -1.75]} + } + }, + { + "origin": [0.8625, 9.93125, -0.51875], + "size": [0.2875, 0.8625, 0.43125], + "pivot": [0.8625, 9.93125, -0.51875], + "rotation": [0, -90, -25], + "uv": { + "north": {"uv": [19, 15], "uv_size": [0.25, 0.75]}, + "east": {"uv": [17, 16], "uv_size": [0.5, 0.75]}, + "south": {"uv": [16, 19], "uv_size": [0.25, 0.75]}, + "west": {"uv": [17, 17], "uv_size": [0.5, 0.75]}, + "up": {"uv": [13, 20], "uv_size": [0.25, 0.5]}, + "down": {"uv": [20, 13.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.43125, 11.8, -0.56243], + "size": [0.8625, 0.2875, 0.21563], + "pivot": [0, 11.225, -1.09375], + "rotation": [-90, 0, 0], + "uv": { + "north": {"uv": [19, 16], "uv_size": [0.75, 0.25]}, + "east": {"uv": [21, 11], "uv_size": [0.25, 0.25]}, + "south": {"uv": [17, 19], "uv_size": [0.75, 0.25]}, + "west": {"uv": [12, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 17], "uv_size": [0.75, 0.25]}, + "down": {"uv": [18, 19.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-2.48869, 9.93125, -3.15119], + "size": [0.2875, 0.575, 0.8625], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [14, 20], "uv_size": [0.25, 0.5]}, + "east": {"uv": [0, 18], "uv_size": [0.75, 0.5]}, + "south": {"uv": [20, 14], "uv_size": [0.25, 0.5]}, + "west": {"uv": [1, 18], "uv_size": [0.75, 0.5]}, + "up": {"uv": [19, 18], "uv_size": [0.25, 0.75]}, + "down": {"uv": [19, 19.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-1.15, 9.93125, -0.51875], + "size": [0.2875, 0.8625, 0.43125], + "pivot": [-0.8625, 9.93125, -0.51875], + "rotation": [0, 90, 25], + "uv": { + "north": {"uv": [0, 20], "uv_size": [0.25, 0.75]}, + "east": {"uv": [18, 1], "uv_size": [0.5, 0.75]}, + "south": {"uv": [20, 0], "uv_size": [0.25, 0.75]}, + "west": {"uv": [2, 18], "uv_size": [0.5, 0.75]}, + "up": {"uv": [15, 20], "uv_size": [0.25, 0.5]}, + "down": {"uv": [20, 15.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-9.39461, 1.45, -5.73743], + "size": [0.8625, 0.2875, 0.21563], + "pivot": [0, 0.875, -1.09375], + "rotation": [-90, 0, 60], + "uv": { + "north": {"uv": [1, 20], "uv_size": [0.75, 0.25]}, + "east": {"uv": [21, 12], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 1], "uv_size": [0.75, 0.25]}, + "west": {"uv": [13, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [2, 20], "uv_size": [0.75, 0.25]}, + "down": {"uv": [20, 2.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [8.53211, 1.45, -5.73743], + "size": [0.8625, 0.2875, 0.21563], + "pivot": [0, 0.875, -1.09375], + "rotation": [-90, 0, -60], + "uv": { + "north": {"uv": [3, 20], "uv_size": [0.75, 0.25]}, + "east": {"uv": [21, 13], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 3], "uv_size": [0.75, 0.25]}, + "west": {"uv": [14, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [4, 20], "uv_size": [0.75, 0.25]}, + "down": {"uv": [20, 4.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [8.53211, 1.45, 4.61257], + "size": [0.8625, 0.2875, 0.21563], + "pivot": [0, 0.875, -1.09375], + "rotation": [-90, 0, -120], + "uv": { + "north": {"uv": [5, 20], "uv_size": [0.75, 0.25]}, + "east": {"uv": [21, 14], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 5], "uv_size": [0.75, 0.25]}, + "west": {"uv": [15, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [6, 20], "uv_size": [0.75, 0.25]}, + "down": {"uv": [20, 6.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.43125, 1.45, 9.78757], + "size": [0.8625, 0.2875, 0.21563], + "pivot": [0, 0.875, -1.09375], + "rotation": [-90, 0, 180], + "uv": { + "north": {"uv": [7, 20], "uv_size": [0.75, 0.25]}, + "east": {"uv": [21, 15], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 7], "uv_size": [0.75, 0.25]}, + "west": {"uv": [16, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [8, 20], "uv_size": [0.75, 0.25]}, + "down": {"uv": [20, 8.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-9.39461, 1.45, 4.61257], + "size": [0.8625, 0.2875, 0.21563], + "pivot": [0, 0.875, -1.09375], + "rotation": [-90, 0, 120], + "uv": { + "north": {"uv": [9, 20], "uv_size": [0.75, 0.25]}, + "east": {"uv": [21, 16], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 9], "uv_size": [0.75, 0.25]}, + "west": {"uv": [17, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [10, 20], "uv_size": [0.75, 0.25]}, + "down": {"uv": [20, 10.25], "uv_size": [0.75, -0.25]} + } + } + ] + }, + { + "name": "righthand", + "parent": "knife_and_right", + "pivot": [6, 19, 0] + }, + { + "name": "righthand_pos", + "parent": "righthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [4, 8, -2], + "size": [4, 12, 4], + "uv": { + "north": {"uv": [0, 0], "uv_size": [4, 12]}, + "east": {"uv": [4, 0], "uv_size": [4, 12]}, + "south": {"uv": [8, 0], "uv_size": [4, 12]}, + "west": {"uv": [0, 12], "uv_size": [4, 12]}, + "up": {"uv": [16, 0], "uv_size": [4, 4]}, + "down": {"uv": [16, 8], "uv_size": [4, -4]} + } + } + ] + }, + { + "name": "constraint", + "parent": "bone", + "pivot": [-0.01558, 8.125, 1.9375] + }, + { + "name": "lefthand", + "parent": "bone", + "pivot": [-6, 19, 0] + }, + { + "name": "lefthand_pos", + "parent": "lefthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [-8, 8, -2], + "size": [4, 12, 4], + "uv": { + "north": {"uv": [12.228, 0], "uv_size": [3.614, 12]}, + "east": {"uv": [5, 12], "uv_size": [3.614, 12]}, + "south": {"uv": [8.614, 12], "uv_size": [3.614, 12]}, + "west": {"uv": [12.228, 12], "uv_size": [3.614, 12]}, + "up": {"uv": [15.842, 8], "uv_size": [3.614, 4]}, + "down": {"uv": [15.842, 16], "uv_size": [3.614, -4]} + } + } + ] + }, + { + "name": "camera", + "pivot": [3.0813, 14.0031, 11.5313] + }, + { + "name": "view", + "pivot": [0, 0, 0] + }, + { + "name": "refit_view", + "parent": "view", + "pivot": [22.475, 5.55, 0.2], + "rotation": [0, 90, 0] + }, + { + "name": "iron_view", + "parent": "view", + "pivot": [-0.15326, 9.42188, 6.93493], + "rotation": [0, -1, 0] + }, + { + "name": "idle_view", + "parent": "view", + "pivot": [3.4563, 4.4656, -0.7687] + }, + { + "name": "positioning", + "pivot": [-0.01558, 4.125, 4.9375] + }, + { + "name": "ground", + "parent": "positioning", + "pivot": [0, 0, 0] + }, + { + "name": "thirdperson_hand", + "parent": "positioning", + "pivot": [-0.01558, 6.125, -2.0625] + }, + { + "name": "fixed", + "parent": "positioning", + "pivot": [0.79692, 5.125, -1.0625], + "rotation": [0, 90, 0] + }, + { + "name": "bone38", + "pivot": [62, -11.35, -167.5] + }, + { + "name": "bone39", + "parent": "bone38", + "pivot": [-65, -11.35, -167.5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/butterfly.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/butterfly.anim.json new file mode 100644 index 0000000..9edd596 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/butterfly.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"draw_1":{"loop":true,"animation_length":0.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[78.49,15.415,-135.461],"0.04":[80.488,21.654,-146.863],"0.08":[83.529,26.036,-148.032],"0.12":[98.963,26.441,-153.346],"0.17":[112.16,37.669,-185.93],"0.21":[116.886,46.364,-209.395],"0.25":[119.214,47.174,-214.879],"0.29":[119.259,46.709,-216.151],"0.33":[119.174,46.526,-217.079],"0.38":[120.096,46.601,-217.446],"0.42":[121.685,46.872,-217.391],"0.46":[123.211,47.222,-217.731],"0.5":[123.933,47.781,-219.927],"0.54":[126.017,47.868,-216.764],"0.58":[133.386,44.523,-196.742],"0.62":[139.376,35.14,-171.343],"0.67":[137.961,20.362,-152.808],"0.71":[132.699,6.947,-139.763],"0.75":[126.939,-6.235,-130.167],"0.79":[119.593,-21.7,-121.508],"0.83":[108.684,-35.678,-111.712],"0.88":[96.264,-44.346,-100.93],"0.92":[87.611,-48.385,-93.423],"0.96":[85.911,-49.28,-92.045]},"position":{"0.0":[-12.085,-27.59,-13.576],"0.04":[-12.112,-25.787,-15.083],"0.08":[-12.073,-24.641,-15.902],"0.12":[-11.944,-23.351,-16.305],"0.17":[-11.861,-22.348,-16.539],"0.21":[-11.902,-21.633,-16.673],"0.25":[-12.074,-21.331,-16.918],"0.29":[-12.177,-21.248,-16.997],"0.33":[-12.212,-21.213,-16.979],"0.38":[-12.228,-21.221,-16.959],"0.42":[-12.179,-21.329,-16.907],"0.46":[-12.061,-21.536,-16.825],"0.5":[-11.887,-21.815,-16.727],"0.54":[-11.688,-22.073,-16.651],"0.58":[-11.437,-22.246,-16.641],"0.62":[-11.224,-22.437,-16.698],"0.67":[-11.112,-22.654,-16.759],"0.71":[-11.072,-22.978,-16.773],"0.75":[-11.075,-23.43,-16.754],"0.79":[-11.09,-23.943,-16.698],"0.83":[-11.102,-24.434,-16.613],"0.88":[-11.111,-24.803,-16.511],"0.92":[-11.116,-25.027,-16.417],"0.96":[-11.116,-25.096,-16.376]}},"butterfly":{"rotation":{"0.0":[-31.126,-2.955,-17.454],"0.04":[-31.591,-3.526,-16.08],"0.08":[-31.865,-3.597,-16.631],"0.12":[-33.988,-5.303,-20.616],"0.17":[-32.335,-11.687,-29.653],"0.21":[-20.69,-23.151,-47.995],"0.25":[-4.295,-28.22,-73.819],"0.29":[6.501,-27.826,-97.272],"0.33":[10.622,-26.53,-114.036],"0.38":[16.25,-25.635,-135.331],"0.42":[26.009,-21.524,-157.575],"0.46":[34.727,-9.152,-178.932],"0.5":[37.906,2.665,-194.174],"0.54":[40.776,4.246,-195.196],"0.58":[46.43,5.763,-192.665],"0.62":[51.175,4.915,-190.038],"0.67":[51.988,2.931,-187.668],"0.71":[48.729,2.938,-187.583],"0.75":[41.764,3.809,-188.86],"0.79":[31.728,6.207,-190.982],"0.83":[22.903,8.463,-192.91],"0.88":[18.475,9.39,-193.975],"0.92":[17.28,9.549,-194.293],"0.96":[17.403,9.53,-194.301]},"position":[5.71209,14.17489,0.68477]},"down":{"rotation":{"0.0":[7.109,0,-0.021],"0.04":[15.484,0,-0.017],"0.08":[19.411,0,-0.014],"0.12":[10.71,0,-0.014],"0.17":[3.269,0,-0.014],"0.21":[11.193,0,-0.017],"0.25":[32.303,0,-0.016],"0.29":[63.554,0,0.014],"0.33":[93.506,0,0.014],"0.38":[139.369,0,0],"0.42":[185.888,0,-0.014],"0.46":[223.424,0,-0.021],"0.5":[260.209,0,-0.014],"0.54":[291.951,0,-0.017],"0.58":[318.085,0,-0.026],"0.62":[342.087,0,-0.014],"0.67":[355.866,0,0.01],"0.71":[359.525,0,-0.017],"0.75":[359.709,0,-0.014],"0.79":[360.091,0,-0.021],"0.83":[360.021,0,0.007],"0.88":[359.996,0,-0.017],"0.92":[359.967,0,-0.016],"0.96":[359.979,0,-0.014]}},"up":{"rotation":{"0.0":[0,0,-0.021],"0.04":[0,0,-0.017],"0.08":[0,0,-0.014],"0.17":[0,0,-0.014],"0.21":[0,0,-0.017],"0.25":[0,0,-0.016],"0.29":[0,0,0.014],"0.33":[0,0,0.014],"0.38":[0,0,0],"0.42":[0,0,-0.014],"0.46":[0,0,-0.021],"0.5":[0,0,-0.014],"0.54":[0,0,-0.017],"0.58":[0,0,-0.026],"0.62":[0,0,-0.014],"0.67":[0,0,0.01],"0.71":[0,0,-0.017],"0.75":[0,0,-0.014],"0.79":[0,0,-0.021],"0.83":[0,0,0.007],"0.88":[0,0,-0.017],"0.92":[0,0,-0.016],"0.96":[0,0,-0.014]}},"blade2":{"rotation":{"0.0":[174.514,0,-0.021],"0.04":[178.979,0,-0.018],"0.08":[181.252,0,-0.014],"0.12":[178.274,0,-0.014],"0.17":[173.512,0,-0.014],"0.21":[172.599,0,-0.018],"0.25":[174.071,0,-0.016],"0.29":[181.083,0,0.014],"0.33":[195.749,0,0.014],"0.38":[210.456,0,0],"0.42":[224.433,0,-0.014],"0.46":[241.236,0,-0.021],"0.5":[261.225,0,-0.014],"0.54":[283.084,0,-0.017],"0.58":[306.712,0,-0.026],"0.62":[332.114,0,-0.014],"0.67":[352.797,0,0.01],"0.71":[360.223,0,-0.017],"0.75":[360.049,0,-0.014],"0.79":[360,0,-0.021],"0.83":[360,0,0.007],"0.88":[360,0,-0.017],"0.92":[360,0,-0.016],"0.96":[360,0,-0.014]}},"lefthand":{"rotation":{"0.0":[127.414,-11.99,74.975],"0.04":[130.088,-14.31,76.239],"0.08":[132.61,-16.094,77.08],"0.12":[135.03,-17.218,77.634],"0.17":[137.277,-17.428,78.048],"0.21":[139.357,-16.71,78.47],"0.25":[141.273,-15.024,79.017],"0.29":[143.014,-12.302,79.865],"0.33":[144.4,-6.647,81.475],"0.38":[145.444,2.255,84.146],"0.42":[146.353,13.396,88.021],"0.46":[147.373,24.815,92.865],"0.5":[148.724,35.298,98.348],"0.54":[149.702,43.513,103.464],"0.58":[149.036,48.719,106.081],"0.62":[145.708,51.261,104.883],"0.67":[140.122,52.023,100.358],"0.71":[134.011,51.824,94.664],"0.75":[128.417,50.812,88.983],"0.79":[124.033,49.292,84.183],"0.83":[121.56,47.731,81.233],"0.88":[120.451,46.542,79.792],"0.92":[119.975,45.76,79.122],"0.96":[119.831,45.508,78.933]},"position":{"0.0":[16.867,-32.081,-18.288],"0.04":[16.526,-31.855,-18.216],"0.08":[16.121,-31.462,-18.156],"0.12":[15.665,-30.958,-18.128],"0.17":[15.193,-30.408,-18.141],"0.21":[14.745,-29.868,-18.207],"0.25":[14.343,-29.401,-18.331],"0.29":[14.011,-29.048,-18.539],"0.33":[13.81,-28.723,-18.893],"0.38":[13.721,-28.323,-19.373],"0.42":[13.732,-27.839,-19.942],"0.46":[13.808,-27.351,-20.533],"0.5":[13.92,-26.926,-21.076],"0.54":[14.025,-26.624,-21.495],"0.58":[14.09,-26.491,-21.745],"0.62":[14.109,-26.515,-21.845],"0.67":[14.109,-26.645,-21.864],"0.71":[14.11,-26.8,-21.865],"0.75":[14.109,-26.947,-21.852],"0.79":[14.107,-27.066,-21.833],"0.83":[14.101,-27.12,-21.819],"0.88":[14.099,-27.124,-21.813],"0.92":[14.099,-27.115,-21.81],"0.96":[14.098,-27.111,-21.809]}},"righthand":{"position":[-0.2,3.8,0.5],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.bknife_draw01"}}},"draw":{"loop":true,"animation_length":0.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[71.177,51.674,106.89],"0.04":[68.271,57.863,102.67],"0.08":[59.611,65.346,93.424],"0.12":[40.248,72.139,75.188],"0.17":[9.861,76.051,47.972],"0.21":[-15.966,75.772,25.846],"0.25":[-21.179,77.417,24.645],"0.29":[-81.801,101.2,-27.056],"0.33":[-64.061,136.777,4.473],"0.38":[-71.966,165.692,19.484],"0.42":[-80.982,175.686,24.872],"0.46":[-89.2,181.601,26.878],"0.5":[-97.373,187.996,29.251],"0.54":[-99.751,192.137,30.724],"0.58":[-97.819,194.714,33.897],"0.62":[-94.905,197.461,38.749],"0.67":[-91.502,201.096,45.072],"0.71":[-88.567,205.765,52.202],"0.75":[-86.832,211.307,59.871],"0.79":[-86.79,217.005,67.985],"0.83":[-88.502,222.353,75.884],"0.88":[-91.111,226.493,82.682],"0.92":[-93.393,228.774,86.925],"0.96":[-94.079,229.269,87.958]},"position":{"0.0":[-11.666,-30.68,-9.24],"0.04":[-11.391,-29.192,-10.255],"0.08":[-11.102,-27.137,-11.432],"0.12":[-10.787,-24.539,-13.208],"0.17":[-10.432,-23.004,-14.93],"0.21":[-10.029,-22.584,-16.442],"0.25":[-9.69,-22.593,-17.656],"0.29":[-9.463,-22.594,-18.352],"0.33":[-9.32,-22.667,-18.743],"0.38":[-9.208,-22.841,-18.967],"0.42":[-9.151,-23.044,-19.028],"0.46":[-9.195,-23.098,-18.917],"0.5":[-9.424,-22.972,-18.663],"0.54":[-9.787,-22.82,-18.385],"0.58":[-10.204,-22.705,-18.095],"0.62":[-10.61,-22.626,-17.749],"0.67":[-10.921,-22.655,-17.346],"0.71":[-11.076,-22.878,-16.941],"0.75":[-11.11,-23.347,-16.642],"0.79":[-11.104,-24.013,-16.517],"0.83":[-11.111,-24.62,-16.488],"0.88":[-11.116,-24.956,-16.433],"0.92":[-11.117,-25.076,-16.388],"0.96":[-11.116,-25.098,-16.378]}},"butterfly":{"rotation":{"0.0":[10.235,-30.217,-93.189],"0.04":[10.701,-30.454,-93.502],"0.08":[10.587,-30.599,-93.617],"0.12":[10.176,-30.793,-93.365],"0.17":[10.475,-30.45,-93.046],"0.21":[10.227,-30.295,-92.731],"0.25":[11.776,-30.14,-95.512],"0.29":[24.258,-28.132,-114.291],"0.33":[35.915,-23.972,-138.163],"0.38":[36.48,-11.639,-158.874],"0.42":[25.371,-4.325,-162.279],"0.46":[15.437,-1.984,-156.917],"0.5":[11.168,0.306,-154.685],"0.54":[12.108,2.228,-157.919],"0.58":[16.254,-1.842,-157.243],"0.62":[18.348,-3.878,-159.388],"0.67":[18.146,-0.752,-167.866],"0.71":[18.161,1.583,-174.518],"0.75":[18.256,3.526,-179.532],"0.79":[18.414,5.486,-184.233],"0.83":[18.8,7.186,-188.326],"0.88":[19.166,8.557,-191.557],"0.92":[19.379,9.353,-193.406],"0.96":[19.444,9.527,-193.806]},"position":[5.71209,14.17489,0.68477]},"down":{"rotation":{"0.0":[-1.158,0,-0.016],"0.04":[-1.158,0,-0.017],"0.08":[-1.127,0,0.012],"0.12":[-1.556,-0.005,0.016],"0.17":[2.673,0.022,-0.009],"0.21":[26.148,0.377,0.263],"0.25":[61.47,1.177,1.14],"0.29":[100.321,2.105,2.739],"0.33":[169.488,2.454,6.33],"0.38":[225.666,-0.849,11.141],"0.42":[279.026,-2.912,4.871],"0.46":[337.19,0,-0.014],"0.5":[361.222,0,0.014],"0.54":[360.017,0,0.017],"0.58":[360.016,0,0.016],"0.62":[360.014,0,-0.021],"0.67":[360.014,0,-0.016],"0.71":[360.014,0,-0.003],"0.75":[360.019,0,-0.007],"0.79":[360.028,0,-0.014],"0.83":[360.005,0,-0.016],"0.88":[360.004,0,-0.017],"0.92":[360.028,0,-0.014],"0.96":[360.014,0,-0.014]}},"up":{"rotation":{"0.0":[0,0,-0.016],"0.04":[0,0,-0.017],"0.08":[0,0,0.012],"0.12":[0,0,0.021],"0.17":[0,0,-0.023],"0.21":[0,0,-0.024],"0.25":[0,0,0.01],"0.29":[0,0,0.021],"0.33":[0,0,0.014],"0.38":[0,0,-0.007],"0.42":[0,0,-0.028],"0.46":[0,0,-0.014],"0.5":[0,0,0.014],"0.54":[0,0,0.017],"0.58":[0,0,0.016],"0.62":[0,0,-0.021],"0.67":[0,0,-0.016],"0.71":[0,0,-0.003],"0.75":[0,0,-0.007],"0.79":[0,0,-0.014],"0.83":[0,0,-0.016],"0.88":[0,0,-0.017],"0.92":[0,0,-0.014],"0.96":[0,0,-0.014]}},"blade2":{"rotation":{"0.0":[174.467,0,-0.016],"0.04":[174.466,0,-0.018],"0.08":[174.465,0,0.012],"0.12":[174.523,-0.005,0.016],"0.17":[174.294,0.022,-0.009],"0.21":[173.132,0.377,0.263],"0.25":[172.878,1.177,1.14],"0.29":[175.403,2.105,2.739],"0.33":[198.556,2.454,6.33],"0.38":[235.191,-0.849,11.141],"0.42":[282.878,-2.912,4.871],"0.46":[336.528,0,-0.014],"0.5":[361.272,0,0.014],"0.54":[359.993,0,0.017],"0.58":[360,0,0.016],"0.62":[360,0,-0.021],"0.67":[360,0,-0.016],"0.71":[360,0,-0.003],"0.75":[360,0,-0.007],"0.79":[360,0,-0.014],"0.83":[360,0,-0.016],"0.88":[360,0,-0.017],"0.92":[360,0,-0.014],"0.96":[360,0,-0.014]}},"lefthand":{"rotation":{"0.0":[127.414,-11.99,74.975],"0.04":[130.088,-14.31,76.239],"0.08":[132.61,-16.094,77.08],"0.12":[135.03,-17.218,77.634],"0.17":[137.277,-17.428,78.048],"0.21":[139.357,-16.71,78.47],"0.25":[141.273,-15.024,79.017],"0.29":[143.019,-12.303,79.864],"0.33":[144.381,-6.644,81.482],"0.38":[145.36,2.305,84.19],"0.42":[146.647,13.242,87.858],"0.46":[148.078,23.365,91.867],"0.5":[147.838,30.277,94.305],"0.54":[145.724,34.641,94.629],"0.58":[143.163,38.237,93.97],"0.62":[140.285,41.321,92.599],"0.67":[137.065,43.986,90.59],"0.71":[133.522,46.231,88.037],"0.75":[130.029,47.746,85.517],"0.79":[126.813,48.489,83.384],"0.83":[124.066,48.349,81.771],"0.88":[121.921,47.454,80.565],"0.92":[120.459,46.294,79.566],"0.96":[119.991,45.809,79.159]},"position":{"0.0":[16.867,-32.081,-18.288],"0.04":[16.526,-31.855,-18.216],"0.08":[16.121,-31.462,-18.156],"0.12":[15.665,-30.958,-18.128],"0.17":[15.193,-30.408,-18.141],"0.21":[14.745,-29.868,-18.207],"0.25":[14.343,-29.401,-18.331],"0.29":[14.011,-29.048,-18.539],"0.33":[13.81,-28.723,-18.893],"0.38":[13.721,-28.323,-19.373],"0.42":[13.733,-27.839,-19.942],"0.46":[13.808,-27.35,-20.533],"0.5":[13.917,-26.927,-21.078],"0.54":[14.023,-26.655,-21.536],"0.58":[14.077,-26.555,-21.88],"0.62":[14.092,-26.543,-22.139],"0.67":[14.115,-26.585,-22.292],"0.71":[14.144,-26.681,-22.303],"0.75":[14.144,-26.804,-22.203],"0.79":[14.12,-26.939,-22.055],"0.83":[14.097,-27.049,-21.921],"0.88":[14.093,-27.102,-21.841],"0.92":[14.098,-27.113,-21.813],"0.96":[14.098,-27.111,-21.809]}},"righthand":{"position":[-0.2,3.8,0.5],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.bknife_draw02"}}},"inspect":{"loop":true,"animation_length":4.79,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[96.886,-35.092,-98.98],"0.04":[104.568,-7.131,-111.26],"0.08":[102.638,19.635,-138.443],"0.12":[97.328,27.538,-172.566],"0.17":[114.311,24.452,-187.258],"0.21":[131.073,32.66,-198.916],"0.25":[123.458,48.429,-217.524],"0.29":[109.702,52.649,-228.203],"0.33":[114.325,48.157,-210.806],"0.38":[124.277,39.492,-184.639],"0.42":[131.441,27.236,-161.875],"0.46":[134.61,13.136,-148.427],"0.5":[136.49,8.001,-154.6],"0.54":[139.482,15.36,-173.421],"0.58":[139.841,27.833,-192.374],"0.62":[134.045,38.956,-206.665],"0.67":[112.249,49.423,-227.607],"0.71":[105.66,49.157,-225.599],"0.75":[114.654,44.86,-202.714],"0.79":[126.762,35.09,-174.989],"0.83":[133.098,21.801,-155.409],"0.88":[135.438,10.496,-149.329],"0.92":[137.853,10.057,-160.54],"0.96":[140.249,20.49,-180.334],"1.0":[137.109,32.304,-198.299],"1.04":[123.117,37.525,-217.311],"1.08":[114.638,35.141,-216.488],"1.12":[113.482,33.31,-197.612],"1.17":[113.268,32.868,-180.246],"1.21":[110.253,32.671,-168.661],"1.25":[107.183,32.894,-159.246],"1.29":[101.755,29.482,-155.74],"1.33":[97.217,26.153,-158.542],"1.38":[96.534,26.336,-164.248],"1.42":[96.232,26.922,-173.612],"1.46":[96.038,28.627,-185.182],"1.5":[95.13,31.894,-197.863],"1.54":[92.806,35.986,-210.305],"1.58":[89.181,39.828,-221.451],"1.62":[85.565,42.526,-229.706],"1.67":[84.287,43.441,-232.387],"1.71":[84.216,43.601,-232.834],"1.75":[84.216,43.562,-233.044],"1.79":[84.233,43.485,-233.173],"1.83":[84.263,43.411,-233.287],"1.88":[84.286,43.343,-233.409],"1.92":[84.306,43.284,-233.508],"1.96":[84.305,43.245,-233.621],"2.0":[84.335,43.203,-233.692],"2.04":[84.344,43.193,-233.755],"2.08":[84.349,43.197,-233.811],"2.12":[84.336,43.225,-233.85],"2.17":[84.324,43.286,-233.852],"2.21":[84.347,43.365,-233.775],"2.25":[84.424,43.471,-233.57],"2.29":[84.538,43.585,-233.274],"2.33":[84.701,43.724,-232.887],"2.38":[84.908,43.857,-232.429],"2.42":[85.13,44.001,-231.926],"2.46":[85.377,44.126,-231.387],"2.5":[85.633,44.251,-230.847],"2.54":[85.899,44.345,-230.316],"2.58":[86.163,44.423,-229.812],"2.62":[86.415,44.483,-229.348],"2.67":[86.626,44.489,-228.977],"2.71":[86.763,44.482,-228.713],"2.75":[86.81,44.457,-228.582],"2.79":[86.778,44.42,-228.571],"2.83":[86.68,44.402,-228.669],"2.88":[86.55,44.365,-228.831],"2.92":[86.373,44.324,-229.076],"2.96":[86.149,44.281,-229.393],"3.0":[85.917,44.238,-229.733],"3.04":[85.663,44.183,-230.119],"3.08":[85.407,44.134,-230.521],"3.12":[85.149,44.081,-230.94],"3.17":[84.906,44.016,-231.352],"3.21":[84.68,43.944,-231.754],"3.25":[84.5,43.874,-232.103],"3.29":[84.362,43.798,-232.416],"3.33":[84.254,43.726,-232.702],"3.38":[84.205,43.645,-232.907],"3.42":[87.902,41.404,-224.653],"3.46":[94.799,34.5,-200.261],"3.5":[97.585,30.412,-177.716],"3.54":[101.568,26.878,-172.722],"3.58":[113.307,19.338,-182.268],"3.62":[129.847,21.816,-200.114],"3.67":[130.429,37.201,-218.797],"3.71":[115.989,47.262,-239.789],"3.75":[106.863,47.732,-249.195],"3.79":[113.146,40.741,-234.721],"3.83":[123.085,25.738,-206.139],"3.88":[125.567,7.314,-175.542],"3.92":[121.078,-8.406,-143.753],"3.96":[113.486,-17.643,-114.505],"4.0":[108.356,-20.714,-97.073],"4.04":[105.806,-21.035,-89.009],"4.08":[104.653,-20.276,-86.227],"4.12":[104.278,-19.011,-87.188],"4.17":[104.174,-17.687,-90.443],"4.21":[103.872,-16.77,-93.991],"4.25":[103.174,-16.573,-96.36],"4.29":[101.9,-17.34,-97.188],"4.33":[100.054,-19.196,-97.641],"4.38":[98.021,-21.782,-97.947],"4.42":[96.022,-24.917,-98.081],"4.46":[94.266,-28.339,-98.039],"4.5":[92.884,-32.029,-97.741],"4.54":[91.688,-35.738,-97.197],"4.58":[90.568,-39.178,-96.375],"4.62":[89.387,-42.167,-95.301],"4.67":[88.194,-44.569,-94.164],"4.71":[87.175,-46.539,-93.225],"4.75":[86.392,-48.089,-92.508],"4.79":[85.917,-49.283,-92.05]},"position":{"0.0":[-11.388,-25.226,-16.967],"0.04":[-11.753,-24.41,-16.66],"0.08":[-11.92,-23.263,-16.367],"0.12":[-11.852,-22.614,-16.461],"0.17":[-11.935,-22.307,-16.579],"0.21":[-11.997,-22.161,-16.666],"0.25":[-11.921,-22.156,-16.712],"0.29":[-11.719,-22.267,-16.739],"0.33":[-11.447,-22.448,-16.759],"0.38":[-11.212,-22.614,-16.772],"0.42":[-11.093,-22.704,-16.782],"0.46":[-11.16,-22.67,-16.777],"0.5":[-11.417,-22.505,-16.752],"0.54":[-11.74,-22.312,-16.727],"0.58":[-12.053,-22.176,-16.703],"0.62":[-12.193,-22.005,-16.754],"0.67":[-11.876,-22.273,-16.799],"0.71":[-11.49,-22.603,-16.851],"0.75":[-11.117,-22.928,-16.896],"0.79":[-10.831,-23.176,-16.927],"0.83":[-10.766,-23.237,-16.925],"0.88":[-10.95,-23.073,-16.888],"0.92":[-11.317,-22.754,-16.826],"0.96":[-11.748,-22.405,-16.747],"1.0":[-12.122,-22.27,-16.7],"1.04":[-12.196,-22.534,-16.707],"1.08":[-11.806,-22.756,-16.713],"1.12":[-11.347,-23.011,-16.718],"1.17":[-11.028,-23.49,-16.665],"1.21":[-10.899,-24.332,-16.53],"1.25":[-10.839,-24.997,-16.389],"1.29":[-10.613,-25.127,-16.275],"1.33":[-10.12,-25.055,-16.193],"1.38":[-9.769,-24.853,-16.138],"1.42":[-9.646,-24.584,-16.01],"1.46":[-9.685,-24.286,-15.795],"1.5":[-9.826,-23.962,-15.544],"1.54":[-10.007,-23.642,-15.29],"1.58":[-10.192,-23.36,-15.072],"1.62":[-10.345,-23.151,-14.916],"1.67":[-10.417,-23.058,-14.874],"1.71":[-10.439,-23.025,-14.874],"1.75":[-10.442,-23.018,-14.875],"1.79":[-10.442,-23.018,-14.875],"1.83":[-10.443,-23.019,-14.876],"1.88":[-10.444,-23.02,-14.877],"1.92":[-10.446,-23.021,-14.875],"1.96":[-10.447,-23.022,-14.875],"2.0":[-10.448,-23.023,-14.876],"2.04":[-10.448,-23.025,-14.878],"2.08":[-10.449,-23.025,-14.876],"2.12":[-10.449,-23.026,-14.875],"2.17":[-10.449,-23.026,-14.876],"2.21":[-10.45,-23.026,-14.876],"2.25":[-10.45,-23.026,-14.875],"2.29":[-10.453,-23.026,-14.875],"2.33":[-10.454,-23.024,-14.875],"2.38":[-10.453,-23.022,-14.875],"2.42":[-10.453,-23.019,-14.876],"2.46":[-10.453,-23.017,-14.875],"2.5":[-10.451,-23.006,-14.875],"2.54":[-10.451,-23.003,-14.874],"2.58":[-10.451,-23,-14.873],"2.62":[-10.449,-22.997,-14.87],"2.67":[-10.449,-22.993,-14.872],"2.71":[-10.448,-22.986,-14.87],"2.75":[-10.444,-22.985,-14.869],"2.79":[-10.443,-22.985,-14.869],"2.83":[-10.442,-22.993,-14.869],"2.88":[-10.443,-22.993,-14.87],"2.92":[-10.443,-22.994,-14.871],"2.96":[-10.443,-22.996,-14.872],"3.0":[-10.444,-22.998,-14.87],"3.04":[-10.444,-23,-14.872],"3.08":[-10.445,-23.001,-14.874],"3.12":[-10.444,-23.003,-14.872],"3.17":[-10.444,-23.005,-14.873],"3.21":[-10.441,-23.01,-14.875],"3.25":[-10.441,-23.016,-14.873],"3.29":[-10.442,-23.017,-14.874],"3.33":[-10.443,-23.017,-14.874],"3.38":[-10.442,-23.018,-14.875],"3.42":[-10.292,-23.12,-14.867],"3.46":[-9.8,-23.456,-14.846],"3.5":[-9.291,-23.824,-14.851],"3.54":[-9.162,-23.961,-14.918],"3.58":[-9.398,-23.864,-15.052],"3.62":[-9.805,-23.687,-15.218],"3.67":[-10.259,-23.576,-15.37],"3.71":[-10.767,-23.597,-15.507],"3.75":[-10.922,-23.809,-15.638],"3.79":[-10.862,-24.114,-15.781],"3.83":[-10.746,-24.448,-15.925],"3.88":[-10.605,-24.785,-16.067],"3.92":[-10.475,-25.101,-16.198],"3.96":[-10.373,-25.384,-16.309],"4.0":[-10.334,-25.587,-16.391],"4.04":[-10.347,-25.739,-16.449],"4.08":[-10.392,-25.85,-16.488],"4.12":[-10.462,-25.932,-16.511],"4.17":[-10.543,-25.977,-16.517],"4.21":[-10.627,-25.99,-16.517],"4.25":[-10.702,-25.983,-16.512],"4.29":[-10.773,-25.924,-16.488],"4.33":[-10.842,-25.772,-16.428],"4.38":[-10.918,-25.589,-16.36],"4.42":[-10.986,-25.405,-16.305],"4.46":[-11.044,-25.272,-16.286],"4.5":[-11.091,-25.17,-16.308],"4.54":[-11.121,-25.083,-16.339],"4.58":[-11.139,-25.026,-16.362],"4.62":[-11.144,-25.015,-16.376],"4.67":[-11.142,-25.024,-16.377],"4.71":[-11.133,-25.043,-16.378],"4.75":[-11.123,-25.071,-16.378],"4.79":[-11.116,-25.096,-16.376]}},"butterfly":{"rotation":{"0.0":[19.486,10.895,153.658],"0.04":[11.914,17.566,122.331],"0.08":[10.476,7.889,99.404],"0.12":[6.98,5.116,58.793],"0.17":[-0.296,9.579,8.053],"0.21":[-7.28,17.161,-49.973],"0.25":[4.328,26.178,-94.734],"0.29":[2.316,36.796,-147.81],"0.33":[29.95,61.117,-141.009],"0.38":[79.263,68.976,-113.988],"0.42":[128.091,66.852,-92.943],"0.46":[169.234,60.719,-87.281],"0.5":[213.13,57.992,-98.225],"0.54":[247.387,47.694,-115.46],"0.58":[261.809,44.088,-132.295],"0.62":[310.475,52.637,-138.78],"0.67":[336.524,49.924,-155.669],"0.71":[367.808,57.037,-148.392],"0.75":[409.113,67.299,-130],"0.79":[469.32,72.566,-92.089],"0.83":[508.343,65.951,-86.92],"0.88":[546.97,59.556,-90.968],"0.92":[590.628,56.245,-105.234],"0.96":[615.838,40.163,-122.776],"1.0":[628.027,40.342,-139.049],"1.04":[652.664,29.314,-151.477],"1.08":[694.095,30.664,-153.795],"1.12":[737.31,24.042,-152.635],"1.17":[745.895,15.724,-137.806],"1.21":[748.118,6.875,-120.507],"1.25":[744.624,1.008,-114.632],"1.29":[743.464,-0.291,-128.874],"1.33":[743.538,-0.861,-143.996],"1.38":[743.674,-1.394,-156.043],"1.42":[743.836,-1.872,-165.442],"1.46":[744.032,-2.283,-172.448],"1.5":[744.229,-2.653,-177.173],"1.54":[744.411,-2.954,-180.275],"1.58":[744.572,-3.185,-182.095],"1.62":[744.706,-3.347,-182.987],"1.67":[744.765,-3.437,-183.232],"1.71":[744.785,-3.455,-183.252],"3.38":[744.785,-3.455,-183.252],"3.42":[745.579,-1.977,-185.335],"3.46":[748.319,3.321,-192.89],"3.5":[751.99,10.817,-204.082],"3.54":[754.294,17.077,-214.221],"3.58":[754.202,20.397,-221.373],"3.62":[752.271,21.884,-227.206],"3.67":[749.366,22.371,-232.159],"3.71":[746.42,22.37,-236.235],"3.75":[744.189,22.275,-239.248],"3.79":[743.309,22.028,-240.342],"3.83":[743.691,21.142,-238.587],"3.88":[744.344,19.966,-235.875],"3.92":[745.234,17.928,-231.008],"3.96":[743.616,22.349,-236.298],"4.0":[736.221,29.677,-246.851],"4.04":[725.378,22.856,-249.476],"4.08":[726.932,16.347,-233.748],"4.12":[732.938,11.258,-208.81],"4.17":[737.487,9.46,-193.916],"4.21":[737.98,9.207,-192.182],"4.25":[738.339,9.017,-190.91],"4.29":[738.577,8.891,-190.082],"4.33":[738.706,8.833,-189.65],"4.38":[738.736,8.813,-189.546],"4.42":[738.711,8.848,-189.703],"4.46":[738.603,8.9,-190.059],"4.5":[738.44,8.976,-190.618],"4.54":[738.256,9.068,-191.265],"4.58":[738.06,9.175,-191.953],"4.62":[737.86,9.273,-192.648],"4.67":[737.681,9.372,-193.28],"4.71":[737.538,9.449,-193.797],"4.75":[737.435,9.503,-194.152],"4.79":[737.404,9.525,-194.296]},"position":{"0.0":{"post":[5.71209,14.17489,0.68477],"lerp_mode":"catmullrom"},"0.32":{"post":[5.16135,14.34544,1.10516],"lerp_mode":"catmullrom"},"1.21":{"post":[5.16135,14.34544,1.10516],"lerp_mode":"catmullrom"},"1.64":{"post":[4.20206,13.70428,0.32007],"lerp_mode":"catmullrom"},"3.7":{"post":[4.20206,13.70428,0.32007],"lerp_mode":"catmullrom"},"3.98":{"post":[5.71209,14.17489,0.68477],"lerp_mode":"catmullrom"}}},"down":{"rotation":{"0.0":[-2.214,0,0.007],"0.04":[-22.852,0,-0.014],"0.08":[-54.276,0,0.007],"0.12":[-67.716,0,-0.021],"0.17":[-76.898,0,0.014],"0.21":[-86.292,0,-0.004],"0.25":[-98.209,0,-0.016],"0.29":[-83.606,0,-0.014],"0.33":[-55.722,0,-0.007],"0.38":[-41.48,0,0.014],"0.42":[-43.499,0,0.014],"0.46":[-46.778,0,0.014],"0.5":[-45.98,0,0.014],"0.54":[-44.892,0,0],"0.58":[-39.164,0,0.007],"0.62":[-36.713,0,-0.014],"0.67":[-42.831,0,-0.014],"0.71":[-47.089,0,-0.014],"0.75":[-44.053,0,0.012],"0.79":[-40.891,0,-0.014],"0.83":[-44.972,0,-0.014],"0.88":[-46.5,0,0],"0.92":[-45.442,0,-0.012],"0.96":[-44.592,0,0.014],"1.0":[-39.728,0,-0.011],"1.04":[-41.477,0,0.003],"1.08":[-42.388,0,0.007],"1.12":[-46.774,0,0.014],"1.17":[-42.811,0,0.014],"1.21":[-31.465,0,0.017],"1.25":[-14.632,0,-0.005],"1.29":[-3.527,0,-0.014],"1.33":[0.166,0,0.007],"1.38":[1.095,0,-0.014],"1.42":[1.782,0,-0.014],"1.46":[0.523,0,-0.014],"1.5":[-3.813,0,0.016],"1.54":[-11.717,0,0.021],"1.58":[-22.007,0,-0.005],"1.62":[-32.14,0,0.014],"1.67":[-38.573,0,-0.014],"1.71":[-40.28,0,-0.014],"1.75":[-40.273,0,0.012],"1.79":[-40.288,0,0.014],"1.83":[-40.288,0,0.016],"1.88":[-40.288,0,0.003],"1.92":[-40.285,0,-0.014],"1.96":[-40.294,0,-0.014],"2.0":[-40.282,0,-0.007],"2.04":[-40.276,0,0],"2.08":[-40.285,0,-0.014],"2.12":[-40.283,0,-0.014],"2.17":[-40.291,0,-0.014],"2.21":[-40.281,0,0],"2.25":[-40.283,0,0.014],"2.29":[-40.283,0,0.014],"2.33":[-40.287,0,-0.014],"2.38":[-40.283,0,0],"2.42":[-40.287,0,0.014],"2.46":[-40.283,0,-0.014],"2.5":[-40.283,0,0.012],"2.54":[-40.286,0,-0.014],"2.58":[-40.289,0,-0.014],"2.62":[-40.283,0,-0.014],"2.67":[-40.281,0,-0.014],"2.71":[-40.28,0,0],"2.75":[-40.281,0,-0.007],"2.79":[-40.283,0,-0.014],"2.83":[-40.286,0,0.012],"2.88":[-40.28,0,-0.014],"2.92":[-40.283,0,0.007],"2.96":[-40.289,0,-0.014],"3.0":[-40.283,0,0.012],"3.04":[-40.283,0,-0.014],"3.12":[-40.283,0,-0.014],"3.17":[-40.288,0,0.012],"3.21":[-40.286,0,-0.014],"3.25":[-40.283,0,0.007],"3.29":[-40.283,0,0.021],"3.33":[-40.28,0,-0.007],"3.38":[-40.283,0,0],"3.42":[-39.841,0,-0.014],"3.46":[-38.335,0,-0.014],"3.5":[-36.384,0,-0.007],"3.54":[-35.185,0,0.017],"3.58":[-39.815,0,0.016],"3.62":[-54.124,0,-0.014],"3.67":[-78.232,0,-0.014],"3.71":[-110.646,0,-0.017],"3.75":[-149.01,0,0.005],"3.79":[-211.68,0,-0.014],"3.83":[-260.678,0,0.007],"3.88":[-299.476,0,-0.014],"3.92":[-298.045,0,0.012],"3.96":[-266.77,0,0.014],"4.0":[-164.91,0,-0.014],"4.04":[-80.225,0,0.004],"4.08":[-14.278,0,-0.005],"4.12":[0.014,0,-0.014],"4.17":[-0.012,0,-0.012],"4.21":[-0.007,0,0],"4.25":[0.004,0,-0.014],"4.29":[0.014,0,0.014],"4.33":[0.005,0,-0.007],"4.38":[-0.003,0,0],"4.42":[0.019,0,-0.014],"4.46":[0.021,0,0.014],"4.5":[0.019,0,-0.014],"4.54":[0.014,0,-0.014],"4.58":[0.014,0,-0.014],"4.62":[-0.014,0,0.014],"4.67":[0.014,0,-0.012],"4.71":[-0.007,0,0],"4.75":[0.004,0,0.007],"4.79":[-0.014,0,-0.021]}},"up":{"rotation":{"0.0":[0,0,0.007],"0.04":[0,0,-0.014],"0.08":[0,0,0.007],"0.12":[0,0,-0.021],"0.17":[0,0,0.014],"0.21":[0,0,-0.004],"0.25":[0,0,-0.016],"0.29":[0,0,-0.014],"0.33":[0,0,-0.007],"0.38":[0,0,0.014],"0.5":[0,0,0.014],"0.54":[0,0,0],"0.58":[0,0,0.007],"0.62":[0,0,-0.014],"0.71":[0,0,-0.014],"0.75":[0,0,0.012],"0.79":[0,0,-0.014],"0.83":[0,0,-0.014],"0.88":[0,0,0],"0.92":[0,0,-0.012],"0.96":[0,0,0.014],"1.0":[0,0,-0.01],"1.04":[0,0,0.003],"1.08":[0,0,0.007],"1.12":[0,0,0.014],"1.17":[0,0,0.014],"1.21":[0,0,0.017],"1.25":[0,0,-0.005],"1.29":[0,0,-0.014],"1.33":[0,0,0.007],"1.38":[0,0,-0.014],"1.46":[0,0,-0.014],"1.5":[0,0,0.016],"1.54":[0,0,0.021],"1.58":[0,0,-0.005],"1.62":[0,0,0.014],"1.67":[0,0,-0.014],"1.71":[0,0,-0.014],"1.75":[0,0,0.012],"1.79":[0,0,0.014],"1.83":[0,0,0.016],"1.88":[0,0,0.003],"1.92":[0,0,-0.014],"1.96":[0,0,-0.014],"2.0":[0,0,-0.007],"2.04":[0,0,0],"2.08":[0,0,-0.014],"2.17":[0,0,-0.014],"2.21":[0,0,0],"2.25":[0,0,0.014],"2.29":[0,0,0.014],"2.33":[0,0,-0.014],"2.38":[0,0,0],"2.42":[0,0,0.014],"2.46":[0,0,-0.014],"2.5":[0,0,0.012],"2.54":[0,0,-0.014],"2.67":[0,0,-0.014],"2.71":[0,0,0],"2.75":[0,0,-0.007],"2.79":[0,0,-0.014],"2.83":[0,0,0.012],"2.88":[0,0,-0.014],"2.92":[0,0,0.007],"2.96":[0,0,-0.014],"3.0":[0,0,0.012],"3.04":[0,0,-0.014],"3.12":[0,0,-0.014],"3.17":[0,0,0.012],"3.21":[0,0,-0.014],"3.25":[0,0,0.007],"3.29":[0,0,0.021],"3.33":[0,0,-0.007],"3.38":[0,0,0],"3.42":[0,0,-0.014],"3.46":[0,0,-0.014],"3.5":[0,0,-0.007],"3.54":[0,0,0.017],"3.58":[0,0,0.016],"3.62":[0,0,-0.014],"3.67":[0,0,-0.014],"3.71":[0,0,-0.017],"3.75":[0,0,0.005],"3.79":[0,0,-0.014],"3.83":[0,0,0.007],"3.88":[0,0,-0.014],"3.92":[0,0,0.012],"3.96":[0,0,0.014],"4.0":[0,0,-0.014],"4.04":[0,0,0.004],"4.08":[0,0,-0.005],"4.12":[0,0,-0.014],"4.17":[0,0,-0.012],"4.21":[0,0,0],"4.25":[0,0,-0.014],"4.29":[0,0,0.014],"4.33":[0,0,-0.007],"4.38":[0,0,0],"4.42":[0,0,-0.014],"4.46":[0,0,0.014],"4.5":[0,0,-0.014],"4.58":[0,0,-0.014],"4.62":[0,0,0.014],"4.67":[0,0,-0.012],"4.71":[0,0,0],"4.75":[0,0,0.007],"4.79":[0,0,-0.021]}},"blade2":{"rotation":{"0.0":[-0.001,0,0.007],"0.04":[-2.573,0,-0.014],"0.08":[-5.408,0,0.007],"0.12":[-8.023,0,-0.021],"0.17":[-14.137,0,0.014],"0.21":[-21.432,0,-0.004],"0.25":[-31.036,0,-0.016],"0.29":[-13.443,0,-0.014],"0.33":[12.962,0,-0.007],"0.38":[20.357,0,0.014],"0.42":[23.32,0,0.014],"0.46":[23.882,0,0.014],"0.5":[23.877,0,0.014],"0.54":[23.882,0,0],"0.58":[13.396,0,0.007],"0.62":[-24.372,0,-0.014],"0.67":[-28.303,0,-0.014],"0.71":[-1.157,0,-0.014],"0.75":[16.622,0,0.012],"0.79":[22.256,0,-0.014],"0.83":[23.722,0,-0.014],"0.88":[23.884,0,0],"0.92":[23.883,0,-0.012],"0.96":[23.877,0,0.014],"1.0":[4.269,0,-0.011],"1.04":[5.588,0,0.003],"1.08":[23.885,0,0.007],"1.12":[23.856,0,0.014],"1.17":[14.313,0,0.014],"1.21":[1.942,0,0.017],"1.25":[-0.33,0,-0.005],"1.29":[0,0,-0.014],"1.33":[0,0,0.007],"1.38":[0,0,-0.014],"1.46":[0,0,-0.014],"1.5":[-0.226,0,0.016],"1.54":[-2.04,0,0.021],"1.58":[-5.388,0,-0.005],"1.62":[-9.095,0,0.014],"1.67":[-11.594,0,-0.014],"1.71":[-12.274,0,-0.014],"1.75":[-12.267,0,0.012],"1.79":[-12.279,0,0.014],"1.83":[-12.279,0,0.016],"1.88":[-12.279,0,0.003],"1.92":[-12.275,0,-0.014],"1.96":[-12.279,0,-0.014],"2.0":[-12.276,0,-0.007],"2.04":[-12.266,0,0],"2.08":[-12.275,0,-0.014],"2.12":[-12.279,0,-0.014],"2.17":[-12.277,0,-0.014],"2.21":[-12.271,0,0],"2.25":[-12.269,0,0.014],"2.29":[-12.274,0,0.014],"2.33":[-12.279,0,-0.014],"2.38":[-12.276,0,0],"2.42":[-12.277,0,0.014],"2.46":[-12.274,0,-0.014],"2.5":[-12.277,0,0.012],"2.54":[-12.276,0,-0.014],"2.58":[-12.275,0,-0.014],"2.62":[-12.274,0,-0.014],"2.67":[-12.272,0,-0.014],"2.71":[-12.274,0,0],"2.75":[-12.271,0,-0.007],"2.79":[-12.274,0,-0.014],"2.83":[-12.277,0,0.012],"2.88":[-12.274,0,-0.014],"2.92":[-12.274,0,0.007],"2.96":[-12.274,0,-0.014],"3.0":[-12.279,0,0.012],"3.04":[-12.279,0,-0.014],"3.08":[-12.279,0,-0.014],"3.12":[-12.274,0,-0.014],"3.17":[-12.279,0,0.012],"3.21":[-12.276,0,-0.014],"3.25":[-12.274,0,0.007],"3.29":[-12.279,0,0.021],"3.33":[-12.27,0,-0.007],"3.38":[-12.276,0,0],"3.42":[-11.872,0,-0.014],"3.46":[-10.36,0,-0.014],"3.5":[-7.819,0,-0.007],"3.54":[-4.997,0,0.017],"3.58":[-2.404,0,0.016],"3.62":[-0.519,0,-0.014],"3.67":[0,0,-0.014],"3.71":[-0.025,0,-0.017],"3.75":[-15.092,0,0.005],"3.79":[-63.648,0,-0.014],"3.83":[-111.983,0,0.007],"3.88":[-130.832,0,-0.014],"3.92":[-127.079,0,0.012],"3.96":[-105.102,0,0.014],"4.0":[-42.452,0,-0.014],"4.04":[0,0,0.004],"4.08":[0,0,-0.005],"4.12":[0,0,-0.014],"4.17":[0,0,-0.012],"4.21":[0,0,0],"4.25":[0,0,-0.014],"4.29":[0,0,0.014],"4.33":[0,0,-0.007],"4.38":[0,0,0],"4.42":[0,0,-0.014],"4.46":[0,0,0.014],"4.5":[0,0,-0.014],"4.58":[0,0,-0.014],"4.62":[0,0,0.014],"4.67":[0,0,-0.012],"4.71":[0,0,0],"4.75":[0,0,0.007],"4.79":[0,0,-0.021]}},"lefthand":{"rotation":{"0.0":[121.264,39.725,77.964],"0.04":[126.901,31.832,79.636],"0.08":[133.475,21.893,81.512],"0.12":[139.128,10.593,82.338],"0.17":[142.533,-0.265,81.95],"0.21":[143.449,-8.868,80.679],"0.25":[142.003,-14.393,77.506],"0.29":[140.575,-17.899,71.687],"0.33":[140.357,-18.914,69.084],"0.38":[140.359,-18.914,69.084],"0.42":[140.36,-18.915,69.084],"0.46":[140.356,-18.913,69.084],"0.5":[140.362,-18.915,69.084],"0.54":[140.362,-18.915,69.084],"0.58":[140.367,-18.918,69.089],"0.62":[140.369,-18.919,69.09],"0.67":[140.356,-18.922,69.081],"0.71":[140.358,-18.919,69.079],"0.75":[140.355,-18.925,69.083],"0.79":[140.355,-18.925,69.083],"0.83":[140.361,-18.916,69.076],"0.88":[140.358,-18.924,69.08],"0.92":[140.355,-18.925,69.083],"0.96":[140.361,-18.914,69.075],"1.0":[140.368,-18.918,69.091],"1.04":[140.364,-18.917,69.092],"1.08":[140.368,-18.919,69.091],"1.12":[140.369,-18.919,69.09],"1.17":[140.363,-18.914,69.094],"1.33":[140.363,-18.914,69.094],"1.38":[140.365,-18.917,69.095],"1.42":[140.367,-18.919,69.096],"1.46":[140.363,-18.914,69.094],"1.62":[140.363,-18.914,69.094],"1.67":[140.364,-18.916,69.095],"1.71":[140.365,-18.917,69.095],"1.75":[140.366,-18.918,69.096],"1.79":[140.363,-18.914,69.094],"1.83":[140.364,-18.916,69.095],"1.88":[140.367,-18.919,69.096],"1.92":[140.367,-18.919,69.096],"1.96":[140.368,-18.915,69.093],"2.0":[140.367,-18.919,69.096],"2.33":[140.367,-18.919,69.096],"2.38":[140.367,-18.919,69.093],"2.42":[140.367,-18.919,69.089],"2.46":[140.367,-18.919,69.089],"2.5":[140.367,-18.922,69.092],"2.54":[140.367,-18.919,69.089],"2.58":[140.364,-18.915,69.088],"2.62":[140.362,-18.918,69.098],"2.67":[140.366,-18.918,69.09],"2.71":[140.362,-18.918,69.091],"2.75":[140.366,-18.918,69.09],"2.79":[140.367,-18.919,69.089],"3.12":[140.367,-18.919,69.089],"3.17":[140.366,-18.919,69.095],"3.21":[140.366,-18.919,69.094],"3.25":[140.367,-18.919,69.096],"3.38":[140.367,-18.919,69.096],"3.42":[140.371,-18.922,69.092],"3.46":[140.367,-18.919,69.089],"3.5":[140.366,-18.918,69.096],"3.54":[140.365,-18.917,69.095],"3.58":[140.364,-18.916,69.095],"3.62":[140.363,-18.914,69.094],"3.67":[140.367,-18.919,69.096],"3.71":[140.365,-18.917,69.095],"3.75":[140.363,-18.914,69.094],"3.79":[140.363,-18.914,69.094],"3.83":[140.364,-18.916,69.093],"3.88":[140.369,-18.919,69.09],"3.92":[140.358,-18.924,69.085],"3.96":[140.361,-18.914,69.075],"4.0":[140.285,-18.712,69.168],"4.04":[139.675,-16.991,69.813],"4.08":[138.415,-13.296,71.188],"4.12":[136.798,-8.018,73.123],"4.17":[135.025,-1.542,75.558],"4.21":[133.388,5.519,78.277],"4.25":[132.055,12.699,81.186],"4.29":[131.07,19.598,84.157],"4.33":[130.403,25.677,86.891],"4.38":[129.742,31.094,88.764],"4.42":[128.278,36.67,88.822],"4.46":[125.963,41.494,87.134],"4.5":[123.986,43.646,84.811],"4.54":[122.816,44.003,83.129],"4.58":[122.095,43.842,82.085],"4.62":[121.56,43.836,81.298],"4.67":[120.991,44.302,80.496],"4.71":[120.433,44.837,79.733],"4.75":[120.003,45.296,79.158],"4.79":[119.815,45.505,78.918]},"position":{"0.0":[14.045,-27.084,-21.583],"0.04":[13.958,-27.207,-21.19],"0.08":[13.869,-27.459,-20.673],"0.12":[13.805,-27.816,-20.076],"0.17":[13.811,-28.274,-19.442],"0.21":[13.906,-28.793,-18.82],"0.25":[14.378,-29.71,-18.024],"0.29":[15.385,-31.205,-16.934],"0.33":[15.842,-31.845,-16.497],"0.38":[15.842,-31.845,-16.497],"0.42":[15.842,-31.846,-16.497],"0.46":[15.842,-31.845,-16.497],"0.5":[15.842,-31.846,-16.497],"0.54":[15.842,-31.846,-16.497],"0.58":[15.841,-31.845,-16.496],"0.62":[15.841,-31.845,-16.496],"0.67":[15.842,-31.846,-16.497],"0.71":[15.842,-31.845,-16.497],"0.75":[15.842,-31.846,-16.497],"0.79":[15.842,-31.846,-16.497],"0.83":[15.842,-31.845,-16.497],"0.88":[15.842,-31.846,-16.497],"0.92":[15.842,-31.846,-16.497],"0.96":[15.842,-31.845,-16.497],"1.0":[15.841,-31.845,-16.496],"1.04":[15.841,-31.844,-16.496],"1.08":[15.841,-31.845,-16.496],"1.12":[15.841,-31.845,-16.496],"1.17":[15.84,-31.844,-16.496],"3.12":[15.84,-31.844,-16.496],"3.17":[15.84,-31.845,-16.496],"3.21":[15.84,-31.845,-16.496],"3.25":[15.84,-31.844,-16.496],"3.79":[15.84,-31.844,-16.496],"3.83":[15.84,-31.845,-16.496],"3.88":[15.841,-31.845,-16.496],"3.92":[15.842,-31.846,-16.497],"3.96":[15.842,-31.845,-16.497],"4.0":[15.832,-31.825,-16.521],"4.04":[15.758,-31.658,-16.718],"4.08":[15.608,-31.309,-17.137],"4.12":[15.407,-30.814,-17.711],"4.17":[15.16,-30.227,-18.4],"4.21":[14.91,-29.603,-19.123],"4.25":[14.666,-28.993,-19.816],"4.29":[14.451,-28.453,-20.426],"4.33":[14.297,-28.041,-20.865],"4.38":[14.201,-27.771,-21.136],"4.42":[14.113,-27.572,-21.339],"4.46":[14.034,-27.407,-21.499],"4.5":[14.009,-27.317,-21.585],"4.54":[14.013,-27.259,-21.636],"4.58":[14.03,-27.212,-21.684],"4.62":[14.045,-27.173,-21.73],"4.67":[14.065,-27.142,-21.764],"4.71":[14.082,-27.124,-21.793],"4.75":[14.094,-27.113,-21.806],"4.79":[14.1,-27.11,-21.81]}},"righthand":{"position":[-0.2,3.8,0.5],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.bknife_look02_a"},"0.31":{"effect":"melee.cs2.bknife_look02_ab"},"3.54":{"effect":"melee.cs2.bknife_look02_b"}}},"inspect_1":{"loop":true,"animation_length":4.04,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[102.769,-21.8,-109.426],"0.04":[106.023,1.548,-123.869],"0.08":[101.893,21.093,-141.795],"0.12":[134.736,13.275,-148.275],"0.17":[142.115,7.012,-151.619],"0.21":[142.947,16.297,-170.106],"0.25":[140.233,28.193,-190.361],"0.29":[126.532,28.574,-204.911],"0.33":[103.651,15.775,-214.989],"0.38":[94.916,4.529,-210.685],"0.42":[102.765,-9.527,-196.783],"0.46":[113.004,-15.776,-184.916],"0.5":[143.182,-7.194,-174.306],"0.54":[139.708,-0.842,-164.683],"0.58":[123.637,9.94,-151.137],"0.62":[110.483,17.007,-152.88],"0.67":[103.102,19.516,-159.59],"0.71":[101.986,22.047,-169.863],"0.75":[100.977,26.352,-183.629],"0.79":[98.242,32.256,-199.191],"0.83":[92.636,37.98,-214.747],"0.88":[86.674,41.536,-227.019],"0.92":[84.456,43.17,-231.845],"0.96":[84.23,43.595,-232.696],"1.0":[84.206,43.591,-232.995],"1.04":[84.224,43.514,-233.121],"1.08":[84.253,43.44,-233.24],"1.12":[84.276,43.37,-233.364],"1.17":[84.29,43.302,-233.473],"1.21":[84.306,43.253,-233.575],"1.25":[84.324,43.216,-233.666],"1.29":[84.345,43.192,-233.727],"1.33":[84.345,43.195,-233.792],"1.38":[84.343,43.212,-233.835],"1.42":[84.327,43.261,-233.856],"1.46":[84.324,43.327,-233.835],"1.5":[84.388,43.423,-233.667],"1.54":[84.491,43.534,-233.398],"1.58":[84.63,43.67,-233.049],"1.62":[84.821,43.802,-232.626],"1.67":[85.038,43.946,-232.135],"1.71":[85.276,44.078,-231.606],"1.75":[85.529,44.205,-231.062],"1.79":[85.792,44.311,-230.526],"1.83":[86.058,44.393,-230.008],"1.88":[86.314,44.458,-229.531],"1.92":[86.552,44.486,-229.11],"1.96":[86.724,44.487,-228.792],"2.0":[86.804,44.471,-228.617],"2.04":[86.795,44.435,-228.568],"2.08":[86.729,44.411,-228.614],"2.12":[86.611,44.378,-228.748],"2.17":[86.449,44.344,-228.968],"2.21":[86.243,44.298,-229.258],"2.25":[86.013,44.257,-229.591],"2.29":[85.763,44.203,-229.96],"2.33":[85.507,44.153,-230.359],"2.38":[85.252,44.103,-230.77],"2.42":[85.002,44.044,-231.187],"2.46":[84.765,43.968,-231.6],"2.5":[84.563,43.905,-231.973],"2.54":[84.415,43.828,-232.292],"2.58":[84.292,43.757,-232.594],"2.62":[84.206,43.678,-232.844],"2.67":[85.494,42.916,-230.165],"2.71":[92.307,37.701,-210.834],"2.75":[96.687,31.651,-184.922],"2.79":[98.799,29.545,-171.092],"2.83":[107.283,22.501,-177.019],"2.88":[123.166,19.417,-192.64],"2.92":[132.163,31.189,-211.18],"2.96":[122.039,44.836,-232.185],"3.0":[108.495,48.648,-248.438],"3.04":[110.047,44.146,-241.774],"3.08":[119.961,32.356,-217.67],"3.12":[125.333,14.615,-188.208],"3.17":[123.487,-2.757,-156.612],"3.21":[116.795,-14.605,-126.056],"3.25":[110.158,-19.927,-102.962],"3.29":[106.502,-21.159,-91.058],"3.33":[104.964,-20.683,-86.729],"3.38":[104.395,-19.543,-86.575],"3.42":[104.231,-18.184,-89.072],"3.46":[104.048,-17.012,-92.686],"3.5":[103.513,-16.547,-95.65],"3.54":[102.449,-17.054,-96.95],"3.58":[100.822,-18.81,-97.458],"3.62":[98.845,-21.532,-97.836],"3.67":[96.823,-24.599,-98.031],"3.71":[94.951,-27.363,-98.061],"3.75":[93.451,-29.497,-98.009],"3.79":[92.409,-31.165,-98.084],"3.83":[91.881,-32.255,-98.313],"3.88":[91.705,-32.761,-98.59],"3.92":[91.781,-32.777,-98.842],"3.96":[92.026,-32.499,-99.103],"4.0":[92.341,-32.085,-99.367],"4.04":[92.532,-31.82,-99.517]},"position":{"0.0":[-11.388,-25.226,-16.967],"0.04":[-11.753,-24.41,-16.66],"0.08":[-11.92,-23.263,-16.367],"0.12":[-11.153,-22.674,-16.773],"0.17":[-11.318,-22.499,-16.825],"0.21":[-11.643,-22.339,-16.771],"0.25":[-11.99,-22.225,-16.71],"0.29":[-12.318,-22.458,-16.701],"0.33":[-12.417,-23.171,-16.717],"0.38":[-12.475,-23.925,-16.725],"0.42":[-12.372,-24.526,-16.699],"0.46":[-12.039,-24.874,-16.602],"0.5":[-11.514,-25.058,-16.459],"0.54":[-10.917,-25.131,-16.311],"0.58":[-10.324,-25.101,-16.215],"0.62":[-9.737,-25.128,-16.148],"0.67":[-9.527,-25.042,-16.077],"0.71":[-9.661,-24.409,-15.889],"0.75":[-9.773,-24.102,-15.654],"0.79":[-9.946,-23.78,-15.401],"0.83":[-10.131,-23.478,-15.16],"0.88":[-10.285,-23.226,-14.974],"0.92":[-10.394,-23.086,-14.885],"0.96":[-10.436,-23.032,-14.873],"1.0":[-10.442,-23.018,-14.875],"1.04":[-10.442,-23.018,-14.875],"1.08":[-10.443,-23.019,-14.875],"1.12":[-10.444,-23.02,-14.877],"1.17":[-10.444,-23.021,-14.877],"1.21":[-10.447,-23.022,-14.875],"1.25":[-10.447,-23.023,-14.876],"1.29":[-10.448,-23.024,-14.877],"1.33":[-10.448,-23.025,-14.877],"1.38":[-10.449,-23.026,-14.875],"1.42":[-10.449,-23.026,-14.876],"1.46":[-10.45,-23.026,-14.876],"1.5":[-10.45,-23.026,-14.876],"1.54":[-10.452,-23.026,-14.875],"1.58":[-10.454,-23.025,-14.874],"1.62":[-10.454,-23.022,-14.876],"1.67":[-10.454,-23.02,-14.875],"1.71":[-10.453,-23.018,-14.875],"1.75":[-10.452,-23.009,-14.875],"1.79":[-10.451,-23.004,-14.873],"1.83":[-10.451,-23.001,-14.874],"1.88":[-10.45,-22.998,-14.871],"1.92":[-10.449,-22.996,-14.872],"1.96":[-10.448,-22.987,-14.871],"2.0":[-10.446,-22.985,-14.87],"2.04":[-10.443,-22.985,-14.869],"2.08":[-10.443,-22.991,-14.869],"2.12":[-10.442,-22.993,-14.869],"2.17":[-10.443,-22.994,-14.87],"2.21":[-10.443,-22.995,-14.872],"2.25":[-10.443,-22.997,-14.87],"2.29":[-10.444,-22.999,-14.872],"2.33":[-10.444,-23,-14.873],"2.38":[-10.444,-23.003,-14.873],"2.42":[-10.445,-23.004,-14.872],"2.46":[-10.445,-23.006,-14.874],"2.5":[-10.441,-23.015,-14.875],"2.54":[-10.441,-23.016,-14.873],"2.58":[-10.442,-23.017,-14.874],"2.62":[-10.442,-23.018,-14.875],"2.67":[-10.392,-23.052,-14.872],"2.71":[-10.021,-23.304,-14.855],"2.75":[-9.461,-23.696,-14.844],"2.79":[-9.121,-23.968,-14.876],"2.83":[-9.268,-23.925,-14.991],"2.88":[-9.634,-23.76,-15.151],"2.92":[-10.059,-23.611,-15.311],"2.96":[-10.606,-23.55,-15.455],"3.0":[-10.927,-23.698,-15.584],"3.04":[-10.891,-23.989,-15.723],"3.08":[-10.794,-24.313,-15.867],"3.12":[-10.661,-24.654,-16.012],"3.17":[-10.525,-24.978,-16.147],"3.21":[-10.412,-25.273,-16.266],"3.25":[-10.344,-25.512,-16.361],"3.29":[-10.335,-25.686,-16.431],"3.33":[-10.37,-25.811,-16.474],"3.38":[-10.433,-25.901,-16.503],"3.42":[-10.51,-25.962,-16.515],"3.46":[-10.595,-25.992,-16.518],"3.5":[-10.674,-25.986,-16.515],"3.54":[-10.743,-25.954,-16.5],"3.58":[-10.815,-25.847,-16.464],"3.62":[-10.891,-25.682,-16.404],"3.67":[-10.962,-25.493,-16.345],"3.71":[-11.023,-25.329,-16.3],"3.75":[-11.071,-25.205,-16.29],"3.79":[-11.102,-25.107,-16.317],"3.83":[-11.117,-25.041,-16.355],"3.88":[-11.122,-25.016,-16.371],"3.92":[-11.124,-25.017,-16.377],"3.96":[-11.125,-25.038,-16.38],"4.0":[-11.122,-25.066,-16.377],"4.04":[-11.12,-25.084,-16.378]}},"butterfly":{"rotation":{"0.0":[19.473,10.884,153.66],"0.04":[11.914,17.56,122.331],"0.08":[10.842,16.702,95.741],"0.12":[8.081,22.792,69.643],"0.17":[-9.595,28.468,38.688],"0.21":[-10.676,30.345,34.65],"0.25":[-12.573,26.545,28.967],"0.29":[-16.444,15.786,19.679],"0.33":[-18.026,10.69,16.059],"0.38":[-18.019,10.684,16.073],"0.42":[-17.817,11.851,16.748],"0.46":[-16.011,15.835,23.091],"0.5":[-3.352,23.939,53.616],"0.54":[19.261,20.082,105.591],"0.58":[32.941,11.062,149.441],"0.62":[35.981,5.312,162.836],"0.67":[36.429,1.488,168.062],"0.71":[36.778,-1.779,172.468],"0.75":[36.352,-3.96,175.506],"0.79":[34.576,-4.86,177.046],"0.83":[31.587,-4.78,177.45],"0.88":[28.455,-4.302,177.305],"0.92":[25.909,-3.752,176.962],"0.96":[24.785,-3.455,176.748],"2.67":[24.785,-3.455,176.748],"2.71":[26.707,-0.128,171.867],"2.75":[30.646,7.857,160.377],"2.79":[33.75,15.172,149.209],"2.83":[34.565,19.469,141.099],"2.88":[33.144,21.395,135.096],"2.92":[30.537,22.243,129.719],"2.96":[27.52,22.407,125.196],"3.0":[24.954,22.309,121.812],"3.04":[23.569,22.144,119.939],"3.08":[23.495,21.533,120.575],"3.12":[24.107,20.452,123.014],"3.17":[24.803,18.958,126.488],"3.21":[24.603,19.916,127.006],"3.25":[21.166,28.893,117.78],"3.29":[5.164,24.894,106.424],"3.33":[6.045,19.349,118.513],"3.38":[10.247,13.298,140.69],"3.42":[16.319,10.058,162.096],"3.46":[17.806,9.286,167.229],"3.5":[18.207,9.088,168.628],"3.54":[18.488,8.942,169.612],"3.58":[18.66,8.856,170.207],"3.62":[18.729,8.805,170.454],"3.67":[18.735,8.82,170.391],"3.71":[18.651,8.871,170.099],"3.75":[18.508,8.949,169.625],"3.79":[18.321,9.039,169.01],"3.83":[18.135,9.134,168.326],"3.88":[17.94,9.228,167.621],"3.92":[17.748,9.346,166.961],"3.96":[17.585,9.428,166.38],"4.0":[17.468,9.489,165.96],"4.04":[17.416,9.517,165.789]},"position":{"0.0":{"post":[5.71209,14.17489,0.68477],"lerp_mode":"catmullrom"},"0.26":{"post":[4.20206,13.70428,0.32007],"lerp_mode":"catmullrom"},"2.65":{"post":[4.20206,13.70428,0.32007],"lerp_mode":"catmullrom"},"3.1":{"post":[5.71209,14.17489,0.68477],"lerp_mode":"catmullrom"}}},"down":{"rotation":{"0.0":[-2.193,0.294,0.06],"0.04":[-22.843,0.839,0.243],"0.08":[-54.265,1.201,0.335],"0.12":[-105.454,0.004,-0.016],"0.17":[-152.451,0.037,-0.046],"0.21":[-190.367,0.045,-0.092],"0.25":[-218.697,0.033,-0.122],"0.29":[-270.44,0.038,-0.094],"0.33":[-305.699,0.028,-0.135],"0.38":[-305.894,0.028,-0.137],"0.42":[-277.237,0.038,-0.109],"0.46":[-248.179,0.107,-0.197],"0.5":[-234.719,0.344,-0.384],"0.54":[-164.128,0.695,0.152],"0.58":[-99.933,0.774,0.352],"0.62":[-56.13,0.815,0.506],"0.67":[-50.782,0.805,0.679],"0.71":[-47.286,0.797,0.848],"0.75":[-45.478,0.809,0.981],"0.79":[-50.876,0.872,1.137],"0.83":[-57.41,1.035,1.2],"0.88":[-53.426,1.34,1.33],"0.92":[-45.173,1.853,1.604],"0.96":[-40.217,2.197,1.793],"1.0":[-40.21,2.195,1.832],"1.04":[-40.216,2.193,1.814],"1.08":[-40.217,2.198,1.798],"1.12":[-40.215,2.193,1.791],"1.17":[-40.214,2.192,1.796],"1.21":[-40.208,2.196,1.795],"1.25":[-40.213,2.189,1.794],"1.29":[-40.216,2.2,1.834],"1.33":[-40.221,2.188,1.794],"1.38":[-40.218,2.195,1.817],"1.42":[-40.224,2.198,1.83],"1.46":[-40.222,2.196,1.797],"1.5":[-40.214,2.195,1.816],"1.54":[-40.213,2.194,1.819],"1.58":[-40.219,2.2,1.809],"1.62":[-40.21,2.2,1.799],"1.67":[-40.211,2.194,1.83],"1.71":[-40.219,2.189,1.828],"1.75":[-40.217,2.196,1.806],"1.79":[-40.216,2.192,1.791],"1.83":[-40.215,2.196,1.797],"1.88":[-40.218,2.197,1.8],"1.92":[-40.218,2.194,1.794],"1.96":[-40.205,2.186,1.829],"2.0":[-40.211,2.192,1.816],"2.04":[-40.216,2.192,1.793],"2.08":[-40.221,2.192,1.797],"2.12":[-40.215,2.197,1.792],"2.17":[-40.216,2.192,1.796],"2.21":[-40.219,2.196,1.795],"2.25":[-40.217,2.196,1.817],"2.29":[-40.215,2.189,1.8],"2.33":[-40.216,2.193,1.792],"2.38":[-40.211,2.194,1.794],"2.42":[-40.211,2.188,1.794],"2.46":[-40.215,2.196,1.797],"2.5":[-40.214,2.199,1.804],"2.54":[-40.213,2.196,1.821],"2.58":[-40.212,2.193,1.799],"2.62":[-40.21,2.195,1.797],"2.67":[-40.076,2.181,1.805],"2.71":[-38.947,2.099,1.798],"2.75":[-37.054,1.922,1.758],"2.79":[-35.355,1.678,1.692],"2.83":[-36.559,1.403,1.591],"2.88":[-47.715,1.148,1.385],"2.92":[-67.35,0.91,1.141],"2.96":[-97.098,0.668,0.86],"3.0":[-132.238,0.518,0.532],"3.04":[-185.686,0.414,0.034],"3.08":[-241.389,0.072,-0.158],"3.12":[-289.662,-0.049,-0.096],"3.17":[-305.594,-0.061,-0.1],"3.21":[-280.455,-0.041,-0.046],"3.25":[-205.536,-0.008,-0.023],"3.29":[-102.458,-0.005,-0.013],"3.33":[-43.694,0.002,-0.01],"3.38":[0,0,-0.003],"3.42":[-0.016,0,0.005],"3.46":[0.021,0,-0.014],"3.5":[0.016,0,-0.014],"3.54":[0,0,0],"3.58":[-0.021,0,0.014],"3.62":[0.014,0,-0.014],"3.67":[0.014,0,-0.007],"3.71":[0.014,0,0],"3.75":[0.014,0,-0.014],"3.79":[0.014,0,0.021],"3.83":[0.009,0,-0.007],"3.88":[-0.007,0,0],"3.92":[-0.012,0,0.007],"3.96":[-0.021,0,-0.014],"4.0":[-0.021,0,0.021],"4.04":[-0.021,0,0.021]}},"up":{"rotation":{"0.0":[0,0,-0.014],"0.04":[0,0,0],"0.08":[0,0,-0.007],"0.12":[0,0,-0.014],"0.17":[0,0,-0.021],"0.21":[0,0,-0.021],"0.25":[0,0,-0.016],"0.29":[0,0,0.014],"0.33":[0,0,-0.016],"0.38":[0,0,-0.021],"0.42":[0,0,0.005],"0.46":[0,0,0.014],"0.5":[0,0,-0.007],"0.54":[0,0,0],"0.58":[0,0,0.007],"0.62":[0,0,-0.014],"0.67":[0,0,-0.007],"0.71":[0,0,0],"0.75":[0,0,-0.014],"0.79":[0,0,0.021],"0.83":[0,0,-0.007],"0.88":[0,0,0],"0.92":[0,0,-0.014],"0.96":[0,0,-0.014],"1.0":[0,0,0.021],"1.04":[0,0,0.003],"1.08":[0,0,-0.014],"1.25":[0,0,-0.014],"1.29":[0,0,0.021],"1.33":[0,0,-0.014],"1.38":[0,0,0.003],"1.42":[0,0,0.021],"1.46":[0,0,-0.014],"1.5":[0,0,0.007],"1.54":[0,0,0.003],"1.58":[0,0,-0.005],"1.62":[0,0,-0.014],"1.67":[0,0,0.014],"1.71":[0,0,0.014],"1.75":[0,0,-0.007],"1.79":[0,0,-0.014],"1.92":[0,0,-0.014],"1.96":[0,0,0.021],"2.0":[0,0,0.012],"2.04":[0,0,-0.014],"2.21":[0,0,-0.014],"2.25":[0,0,0.007],"2.29":[0,0,-0.014],"2.46":[0,0,-0.014],"2.5":[0,0,-0.007],"2.54":[0,0,0.017],"2.58":[0,0,-0.005],"2.62":[0,0,-0.014],"2.67":[0,0,-0.007],"2.71":[0,0,0],"2.75":[0,0,-0.014],"2.79":[0,0,-0.014],"2.83":[0,0,0.014],"2.88":[0,0,0],"2.92":[0,0,0.007],"2.96":[0,0,-0.014],"3.0":[0,0,-0.012],"3.04":[0,0,0],"3.08":[0,0,-0.014],"3.17":[0,0,-0.014],"3.21":[0,0,0],"3.25":[0,0,-0.007],"3.29":[0,0,-0.014],"3.33":[0,0,-0.007],"3.38":[0,0,-0.003],"3.42":[0,0,0.005],"3.46":[0,0,-0.014],"3.5":[0,0,-0.014],"3.54":[0,0,0],"3.58":[0,0,0.014],"3.62":[0,0,-0.014],"3.67":[0,0,-0.007],"3.71":[0,0,0],"3.75":[0,0,-0.014],"3.79":[0,0,0.021],"3.83":[0,0,-0.007],"3.88":[0,0,0],"3.92":[0,0,0.007],"3.96":[0,0,-0.014],"4.0":[0,0,0.021],"4.04":[0,0,0.021]}},"blade2":{"rotation":{"0.0":[-0.001,0.294,0.06],"0.04":[-2.563,0.839,0.243],"0.08":[-5.389,1.201,0.335],"0.12":[-41.849,0,-0.014],"0.17":[-80.29,0,-0.021],"0.21":[-109.477,0,-0.021],"0.25":[-123.698,0,-0.016],"0.29":[-125.623,0,0.014],"0.33":[-126.178,0,-0.016],"0.38":[-126.386,0,-0.021],"0.42":[-125.603,0,0.005],"0.46":[-116.637,0,0.014],"0.5":[-100.917,0,-0.007],"0.54":[-39.241,0,0],"0.58":[-27.595,0,0.007],"0.62":[-19.094,0,-0.014],"0.67":[-11.267,0,-0.007],"0.71":[-4.856,0,0],"0.75":[-0.665,0,-0.014],"0.79":[0.262,0,0.021],"0.83":[-2.462,0,-0.007],"0.88":[-6.589,0,0],"0.92":[-10.43,0,-0.014],"0.96":[-12.269,0,-0.014],"1.0":[-12.274,0,0.021],"1.04":[-12.276,0,0.003],"1.08":[-12.275,0,-0.014],"1.12":[-12.279,0,-0.014],"1.17":[-12.276,0,-0.014],"1.21":[-12.269,0,-0.014],"1.25":[-12.276,0,-0.014],"1.29":[-12.274,0,0.021],"1.33":[-12.279,0,-0.014],"1.38":[-12.279,0,0.003],"1.42":[-12.279,0,0.021],"1.46":[-12.274,0,-0.014],"1.5":[-12.274,0,0.007],"1.54":[-12.274,0,0.003],"1.58":[-12.277,0,-0.005],"1.62":[-12.274,0,-0.014],"1.67":[-12.274,0,0.014],"1.71":[-12.274,0,0.014],"1.75":[-12.274,0,-0.007],"1.79":[-12.274,0,-0.014],"1.83":[-12.279,0,-0.014],"1.88":[-12.279,0,-0.014],"1.92":[-12.271,0,-0.014],"1.96":[-12.269,0,0.021],"2.0":[-12.272,0,0.012],"2.04":[-12.274,0,-0.014],"2.08":[-12.279,0,-0.014],"2.12":[-12.279,0,-0.014],"2.17":[-12.276,0,-0.014],"2.21":[-12.271,0,-0.014],"2.25":[-12.277,0,0.007],"2.29":[-12.279,0,-0.014],"2.33":[-12.275,0,-0.014],"2.38":[-12.271,0,-0.014],"2.42":[-12.264,0,-0.014],"2.46":[-12.279,0,-0.014],"2.5":[-12.277,0,-0.007],"2.54":[-12.274,0,0.017],"2.58":[-12.274,0,-0.005],"2.62":[-12.274,0,-0.014],"2.67":[-12.147,0,-0.007],"2.71":[-11.048,0,0],"2.75":[-8.875,0,-0.014],"2.79":[-6.126,0,-0.014],"2.83":[-3.38,0,0.014],"2.88":[-1.212,0,0],"2.92":[-0.127,0,0.007],"2.96":[0.747,0,-0.014],"3.0":[-5.378,-0.001,-0.016],"3.04":[-42.943,-0.014,-0.03],"3.08":[-95.369,-0.038,-0.064],"3.12":[-130.944,-0.049,-0.096],"3.17":[-129.522,-0.061,-0.1],"3.21":[-115.446,-0.038,-0.051],"3.25":[-68.331,-0.006,-0.023],"3.29":[0,0,-0.014],"3.33":[0,0,-0.007],"3.38":[0,0,-0.003],"3.42":[0,0,0.005],"3.46":[0,0,-0.014],"3.5":[0,0,-0.014],"3.54":[0,0,0],"3.58":[0,0,0.014],"3.62":[0,0,-0.014],"3.67":[0,0,-0.007],"3.71":[0,0,0],"3.75":[0,0,-0.014],"3.79":[0,0,0.021],"3.83":[0,0,-0.007],"3.88":[0,0,0],"3.92":[0,0,0.007],"3.96":[0,0,-0.014],"4.0":[0,0,0.021],"4.04":[0,0,0.021]}},"lefthand":{"rotation":{"0.0":[122.385,42.946,83.803],"0.04":[126.899,38.138,93.161],"0.08":[129.892,32.972,101.014],"0.12":[129.5,27.529,104.384],"0.17":[125.483,20.551,104.192],"0.21":[120.98,14.711,102.773],"0.25":[118.024,10.688,100.175],"0.29":[117.201,6.123,96.065],"0.33":[118.766,0.445,90.846],"0.38":[122.218,-5.313,85.311],"0.42":[127.075,-10.477,79.855],"0.46":[132.485,-14.543,74.947],"0.5":[137.079,-17.14,71.394],"0.54":[139.711,-18.368,69.491],"0.58":[140.24,-18.592,69.122],"0.62":[140.24,-18.592,69.122],"0.67":[140.24,-18.596,69.12],"0.71":[140.241,-18.597,69.12],"0.75":[140.24,-18.592,69.122],"0.79":[140.239,-18.595,69.119],"0.88":[140.239,-18.595,69.119],"0.92":[140.239,-18.595,69.124],"0.96":[140.249,-18.601,69.119],"1.0":[140.242,-18.597,69.124],"1.04":[140.247,-18.598,69.118],"1.08":[140.24,-18.595,69.119],"1.12":[140.239,-18.595,69.119],"1.17":[140.243,-18.596,69.118],"1.21":[140.242,-18.595,69.118],"1.25":[140.24,-18.595,69.119],"1.29":[140.24,-18.592,69.122],"1.38":[140.24,-18.592,69.122],"1.42":[140.243,-18.598,69.121],"1.46":[140.249,-18.601,69.119],"1.5":[140.241,-18.596,69.119],"1.54":[140.244,-18.598,69.123],"1.58":[140.242,-18.599,69.122],"1.62":[140.24,-18.592,69.122],"1.67":[140.244,-18.596,69.117],"1.71":[140.242,-18.596,69.122],"1.75":[140.243,-18.596,69.12],"1.79":[140.244,-18.596,69.117],"1.83":[140.24,-18.592,69.122],"2.04":[140.24,-18.592,69.122],"2.08":[140.24,-18.589,69.12],"2.12":[140.244,-18.596,69.117],"2.17":[140.243,-18.595,69.119],"2.21":[140.24,-18.592,69.122],"2.25":[140.24,-18.592,69.122],"2.29":[140.239,-18.595,69.119],"2.33":[140.244,-18.596,69.117],"2.38":[140.242,-18.594,69.12],"2.42":[140.24,-18.592,69.122],"2.5":[140.24,-18.592,69.122],"2.54":[140.242,-18.595,69.118],"2.58":[140.241,-18.593,69.121],"2.62":[140.24,-18.592,69.122],"2.67":[140.24,-18.592,69.122],"2.71":[140.239,-18.594,69.124],"2.75":[140.243,-18.596,69.12],"2.79":[140.24,-18.592,69.122],"2.88":[140.24,-18.592,69.122],"2.92":[140.239,-18.594,69.12],"2.96":[140.24,-18.592,69.122],"3.08":[140.24,-18.592,69.122],"3.12":[140.239,-18.595,69.119],"3.17":[140.24,-18.592,69.122],"3.25":[140.24,-18.592,69.122],"3.29":[140.001,-17.747,69.289],"3.33":[139.079,-14.433,69.905],"3.38":[137.674,-9.325,70.841],"3.42":[135.904,-2.823,72.025],"3.46":[133.875,4.555,73.362],"3.5":[131.662,12.418,74.845],"3.54":[129.41,20.239,76.347],"3.58":[127.195,27.614,77.776],"3.62":[125.091,34.227,79.03],"3.67":[123.219,39.543,79.873],"3.71":[121.644,43.462,80.15],"3.75":[120.446,45.739,79.653],"3.79":[119.715,46.623,78.763],"3.83":[119.422,46.886,78.316],"3.88":[119.305,46.869,78.119],"3.92":[119.29,46.672,78.093],"3.96":[119.415,46.283,78.291],"4.0":[119.64,45.84,78.63],"4.04":[119.756,45.619,78.808]},"position":{"0.0":[14.393,-27.3,-21.647],"0.04":[14.954,-27.765,-21.251],"0.08":[15.6,-28.29,-20.813],"0.12":[16.377,-28.814,-20.388],"0.17":[17.294,-29.401,-19.944],"0.21":[17.995,-29.861,-19.563],"0.25":[18.254,-30.137,-19.257],"0.29":[18.188,-30.389,-18.889],"0.33":[17.869,-30.689,-18.43],"0.38":[17.437,-30.988,-17.944],"0.42":[16.941,-31.278,-17.462],"0.46":[16.461,-31.523,-17.041],"0.5":[16.081,-31.703,-16.729],"0.54":[15.866,-31.796,-16.559],"0.58":[15.823,-31.813,-16.525],"3.25":[15.823,-31.813,-16.525],"3.29":[15.805,-31.761,-16.593],"3.33":[15.729,-31.539,-16.849],"3.38":[15.606,-31.192,-17.248],"3.42":[15.445,-30.742,-17.751],"3.46":[15.269,-30.231,-18.335],"3.5":[15.067,-29.675,-18.977],"3.54":[14.864,-29.108,-19.622],"3.58":[14.667,-28.565,-20.241],"3.62":[14.483,-28.068,-20.814],"3.67":[14.325,-27.659,-21.277],"3.71":[14.199,-27.361,-21.613],"3.75":[14.117,-27.204,-21.796],"3.79":[14.075,-27.152,-21.845],"3.83":[14.061,-27.118,-21.839],"3.88":[14.054,-27.096,-21.824],"3.92":[14.059,-27.092,-21.819],"3.96":[14.075,-27.096,-21.817],"4.0":[14.089,-27.102,-21.819],"4.04":[14.097,-27.111,-21.815]}},"righthand":{"position":[-0.2,3.8,0.5],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.bknife_look01_a"},"0.18":{"effect":"melee.cs2.bknife_look01_ab"},"2.91":{"effect":"melee.cs2.bknife_look01_b"}}},"inspect_2":{"loop":true,"animation_length":4.46,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[96.886,-35.092,-98.98],"0.04":[104.568,-7.131,-111.26],"0.08":[102.641,19.629,-138.438],"0.12":[111.553,44.033,-188.356],"0.17":[118.245,47.475,-199.154],"0.21":[117.951,46.721,-218.953],"0.25":[115.799,44.152,-226.797],"0.29":[115.68,40.025,-232.113],"0.33":[117.6,35.897,-225.129],"0.38":[122.648,34.642,-204.454],"0.42":[130.418,32.16,-178.522],"0.46":[131.234,26.457,-160.352],"0.5":[131.086,11.468,-145.949],"0.54":[132.93,6.144,-154.019],"0.58":[137.954,16.889,-177.622],"0.62":[134.063,38.959,-203.889],"0.67":[115.57,51.508,-222.975],"0.71":[112.685,50.267,-215.498],"0.75":[114.86,42.788,-205.344],"0.79":[113.482,33.305,-197.662],"0.83":[113.134,32.71,-180.33],"0.88":[109.804,32.234,-168.997],"0.92":[107.093,32.822,-159.288],"0.96":[101.754,29.485,-155.748],"1.0":[97.224,26.16,-158.536],"1.04":[96.531,26.336,-164.256],"1.08":[96.236,26.922,-173.59],"1.12":[96.036,28.631,-185.221],"1.17":[95.132,31.888,-197.851],"1.21":[92.807,35.986,-210.294],"1.25":[89.177,39.828,-221.453],"1.29":[85.57,42.525,-229.7],"1.33":[84.285,43.441,-232.386],"1.38":[84.216,43.601,-232.834],"1.42":[84.216,43.562,-233.044],"1.46":[84.233,43.485,-233.173],"1.5":[84.263,43.411,-233.287],"1.54":[84.28,43.342,-233.41],"1.58":[84.302,43.276,-233.509],"1.62":[84.304,43.243,-233.623],"1.67":[84.333,43.205,-233.695],"1.71":[84.341,43.196,-233.762],"1.75":[84.349,43.197,-233.811],"1.79":[84.336,43.225,-233.85],"1.83":[84.326,43.279,-233.852],"1.88":[84.347,43.365,-233.775],"1.92":[84.426,43.463,-233.571],"1.96":[84.537,43.585,-233.274],"2.0":[84.701,43.724,-232.887],"2.04":[84.907,43.86,-232.433],"2.08":[85.13,44.002,-231.928],"2.12":[85.377,44.126,-231.387],"2.17":[85.633,44.251,-230.847],"2.21":[85.899,44.345,-230.316],"2.25":[86.163,44.423,-229.812],"2.29":[86.413,44.478,-229.349],"2.33":[86.629,44.488,-228.971],"2.38":[86.763,44.482,-228.713],"2.42":[86.81,44.457,-228.582],"2.46":[86.778,44.42,-228.571],"2.5":[86.687,44.401,-228.658],"2.54":[86.549,44.366,-228.832],"2.58":[86.374,44.324,-229.071],"2.62":[86.149,44.282,-229.393],"2.67":[85.917,44.238,-229.733],"2.71":[85.661,44.183,-230.119],"2.75":[85.406,44.134,-230.521],"2.79":[85.149,44.081,-230.94],"2.83":[84.906,44.016,-231.352],"2.88":[84.68,43.944,-231.754],"2.92":[84.5,43.874,-232.103],"2.96":[84.362,43.798,-232.416],"3.0":[84.254,43.726,-232.702],"3.04":[84.206,43.64,-232.908],"3.08":[87.893,41.422,-224.704],"3.12":[94.814,34.488,-200.198],"3.17":[97.576,30.415,-177.715],"3.21":[101.571,26.877,-172.74],"3.25":[113.318,19.334,-182.273],"3.29":[129.848,21.783,-200.062],"3.33":[130.409,37.219,-218.834],"3.38":[115.999,47.266,-239.786],"3.42":[106.877,47.72,-249.171],"3.46":[113.148,40.746,-234.719],"3.5":[123.072,25.766,-206.178],"3.54":[125.563,7.28,-175.5],"3.58":[121.094,-8.396,-143.805],"3.62":[113.474,-17.665,-114.466],"3.67":[108.356,-20.717,-97.08],"3.71":[105.802,-21.034,-89.02],"3.75":[104.653,-20.276,-86.227],"3.79":[104.279,-19.013,-87.177],"3.83":[104.172,-17.683,-90.45],"3.88":[103.872,-16.77,-93.991],"3.92":[103.176,-16.582,-96.362],"3.96":[101.899,-17.335,-97.187],"4.0":[100.053,-19.204,-97.644],"4.04":[98.012,-21.79,-97.945],"4.08":[96.019,-24.912,-98.081],"4.12":[94.255,-28.357,-98.03],"4.17":[92.887,-32.03,-97.744],"4.21":[91.685,-35.736,-97.193],"4.25":[90.566,-39.176,-96.374],"4.29":[89.387,-42.152,-95.306],"4.33":[88.199,-44.567,-94.165],"4.38":[87.173,-46.539,-93.221],"4.42":[86.39,-48.101,-92.497],"4.46":[85.918,-49.288,-92.051]},"position":{"0.0":[-11.388,-25.226,-16.967],"0.04":[-11.753,-24.41,-16.66],"0.08":[-11.92,-23.263,-16.367],"0.12":[-11.8,-22.552,-16.458],"0.17":[-11.814,-22.415,-16.541],"0.21":[-11.9,-22.36,-16.577],"0.25":[-12.014,-22.367,-16.546],"0.29":[-12.104,-22.396,-16.464],"0.33":[-12.09,-22.396,-16.468],"0.38":[-11.786,-22.486,-16.572],"0.42":[-11.34,-22.645,-16.7],"0.46":[-11.078,-22.715,-16.784],"0.5":[-11.212,-22.61,-16.785],"0.54":[-11.502,-22.432,-16.759],"0.58":[-11.81,-22.248,-16.719],"0.62":[-11.995,-22.133,-16.694],"0.67":[-11.815,-22.158,-16.714],"0.71":[-11.523,-22.306,-16.739],"0.75":[-11.404,-22.595,-16.74],"0.79":[-11.347,-23.01,-16.718],"0.83":[-11.036,-23.503,-16.661],"0.88":[-10.923,-24.366,-16.517],"0.92":[-10.844,-25.001,-16.387],"0.96":[-10.613,-25.127,-16.275],"1.0":[-10.12,-25.055,-16.193],"1.04":[-9.769,-24.853,-16.138],"1.08":[-9.646,-24.584,-16.01],"1.12":[-9.686,-24.285,-15.795],"1.17":[-9.826,-23.963,-15.544],"1.21":[-10.007,-23.642,-15.291],"1.25":[-10.192,-23.36,-15.073],"1.29":[-10.345,-23.151,-14.916],"1.33":[-10.417,-23.058,-14.874],"1.38":[-10.439,-23.025,-14.874],"1.42":[-10.442,-23.018,-14.875],"1.46":[-10.442,-23.018,-14.875],"1.5":[-10.443,-23.019,-14.876],"1.54":[-10.443,-23.02,-14.877],"1.58":[-10.446,-23.022,-14.876],"1.62":[-10.446,-23.023,-14.876],"1.67":[-10.448,-23.023,-14.876],"1.71":[-10.448,-23.025,-14.878],"1.75":[-10.449,-23.025,-14.876],"1.79":[-10.449,-23.026,-14.875],"1.83":[-10.449,-23.027,-14.876],"1.88":[-10.45,-23.026,-14.876],"1.92":[-10.45,-23.026,-14.875],"1.96":[-10.453,-23.026,-14.875],"2.0":[-10.454,-23.024,-14.875],"2.04":[-10.454,-23.022,-14.875],"2.08":[-10.453,-23.019,-14.876],"2.12":[-10.453,-23.017,-14.875],"2.17":[-10.451,-23.006,-14.875],"2.21":[-10.451,-23.003,-14.874],"2.25":[-10.451,-23,-14.873],"2.29":[-10.449,-22.997,-14.87],"2.33":[-10.449,-22.993,-14.872],"2.38":[-10.448,-22.986,-14.87],"2.42":[-10.444,-22.985,-14.869],"2.46":[-10.443,-22.985,-14.869],"2.5":[-10.442,-22.993,-14.869],"2.54":[-10.443,-22.993,-14.87],"2.58":[-10.443,-22.994,-14.871],"2.62":[-10.443,-22.996,-14.872],"2.67":[-10.444,-22.998,-14.87],"2.71":[-10.444,-23,-14.872],"2.75":[-10.444,-23.001,-14.874],"2.79":[-10.444,-23.003,-14.872],"2.83":[-10.445,-23.005,-14.873],"2.88":[-10.443,-23.01,-14.875],"2.92":[-10.441,-23.016,-14.873],"2.96":[-10.442,-23.017,-14.874],"3.0":[-10.443,-23.017,-14.874],"3.04":[-10.442,-23.018,-14.875],"3.08":[-10.292,-23.119,-14.866],"3.12":[-9.799,-23.457,-14.847],"3.17":[-9.291,-23.824,-14.852],"3.21":[-9.162,-23.962,-14.919],"3.25":[-9.398,-23.865,-15.053],"3.29":[-9.805,-23.686,-15.217],"3.33":[-10.259,-23.577,-15.371],"3.38":[-10.767,-23.596,-15.507],"3.42":[-10.922,-23.809,-15.638],"3.46":[-10.862,-24.114,-15.781],"3.5":[-10.744,-24.448,-15.925],"3.54":[-10.605,-24.785,-16.068],"3.58":[-10.475,-25.1,-16.198],"3.62":[-10.373,-25.384,-16.309],"3.67":[-10.334,-25.587,-16.391],"3.71":[-10.347,-25.739,-16.449],"3.75":[-10.392,-25.85,-16.488],"3.79":[-10.462,-25.932,-16.511],"3.83":[-10.543,-25.976,-16.517],"3.88":[-10.627,-25.99,-16.517],"3.92":[-10.702,-25.982,-16.512],"3.96":[-10.773,-25.924,-16.488],"4.0":[-10.843,-25.771,-16.428],"4.04":[-10.918,-25.589,-16.36],"4.08":[-10.986,-25.405,-16.305],"4.12":[-11.044,-25.272,-16.286],"4.17":[-11.091,-25.17,-16.308],"4.21":[-11.122,-25.084,-16.34],"4.25":[-11.139,-25.026,-16.362],"4.29":[-11.144,-25.015,-16.376],"4.33":[-11.142,-25.024,-16.377],"4.38":[-11.133,-25.043,-16.378],"4.42":[-11.123,-25.071,-16.378],"4.46":[-11.116,-25.096,-16.376]}},"butterfly":{"rotation":{"0.0":[19.486,10.895,153.658],"0.04":[11.914,17.566,122.331],"0.08":[10.401,7.856,95.7],"0.12":[27.202,37.505,110.351],"0.17":[27.899,13.529,138.627],"0.21":[23.556,19.495,145.49],"0.25":[17.355,22.269,129.976],"0.29":[17.641,25.632,128.942],"0.33":[18.471,23.502,117.249],"0.38":[19.198,20.774,96.459],"0.42":[17.15,21.602,76.603],"0.46":[10.95,25.093,59.275],"0.5":[3.97,28.292,52.935],"0.54":[0.075,27.574,27.657],"0.58":[-0.305,22.735,-25.178],"0.62":[2.843,34.705,-61.061],"0.67":[-3.667,31.533,-133.059],"0.71":[11.038,47.733,-147.614],"0.75":[22.339,58.504,-144.218],"0.79":[17.295,24.065,-152.676],"0.83":[25.847,12.649,-138.67],"0.88":[28.109,6.002,-120.775],"0.92":[24.641,1.015,-114.666],"0.96":[23.46,-0.3,-128.876],"1.0":[23.537,-0.863,-143.969],"1.04":[23.668,-1.393,-156.054],"1.08":[23.843,-1.871,-165.431],"1.12":[24.026,-2.293,-172.471],"1.17":[24.229,-2.654,-177.17],"1.21":[24.406,-2.943,-180.27],"1.25":[24.57,-3.181,-182.096],"1.29":[24.706,-3.347,-182.987],"1.33":[24.761,-3.437,-183.232],"1.38":[24.783,-3.462,-183.256],"1.42":[24.781,-3.469,-183.26],"3.04":[24.781,-3.469,-183.26],"3.08":[25.578,-1.997,-185.314],"3.12":[28.342,3.349,-192.909],"3.17":[31.985,10.812,-204.087],"3.21":[34.302,17.069,-214.22],"3.25":[34.201,20.401,-221.375],"3.29":[32.277,21.9,-227.197],"3.33":[29.353,22.371,-232.178],"3.38":[26.426,22.377,-236.231],"3.42":[24.203,22.279,-239.25],"3.46":[23.31,22.027,-240.336],"3.5":[23.691,21.139,-238.587],"3.54":[24.338,19.966,-235.878],"3.58":[25.235,17.923,-231.001],"3.62":[23.61,22.379,-236.331],"3.67":[16.221,29.675,-246.861],"3.71":[5.383,22.846,-249.465],"3.75":[6.932,16.345,-233.739],"3.79":[12.928,11.266,-208.847],"3.83":[17.491,9.46,-193.91],"3.88":[17.978,9.205,-192.185],"3.92":[18.337,9.018,-190.924],"3.96":[18.578,8.891,-190.077],"4.0":[18.693,8.828,-189.671],"4.04":[18.73,8.811,-189.552],"4.08":[18.702,8.846,-189.706],"4.12":[18.603,8.906,-190.063],"4.17":[18.441,8.977,-190.619],"4.21":[18.261,9.07,-191.26],"4.25":[18.061,9.175,-191.953],"4.29":[17.85,9.271,-192.649],"4.33":[17.686,9.38,-193.273],"4.38":[17.538,9.454,-193.801],"4.42":[17.445,9.506,-194.155],"4.46":[17.404,9.52,-194.302]},"position":{"0.0":{"post":[5.71209,14.17489,0.68477],"lerp_mode":"catmullrom"},"0.5":{"post":[5.16135,14.34544,1.10516],"lerp_mode":"catmullrom"},"0.79":{"post":[5.16135,14.34544,1.10516],"lerp_mode":"catmullrom"},"1.13":{"post":[4.20206,13.70428,0.32007],"lerp_mode":"catmullrom"},"3.1":{"post":[4.20206,13.70428,0.32007],"lerp_mode":"catmullrom"},"3.43":{"post":[5.71209,14.17489,0.68477],"lerp_mode":"catmullrom"}}},"down":{"rotation":{"0.0":[-2.214,0,0.007],"0.04":[-22.852,0,-0.014],"0.08":[-54.279,0,-0.014],"0.12":[-59.952,0,-0.014],"0.17":[-125.025,0,0.007],"0.21":[-229.198,0,-0.014],"0.25":[-291.898,0,-0.014],"0.29":[-306.738,0,-0.014],"0.33":[-306.833,0,-0.007],"0.38":[-306.893,0,0],"0.42":[-286.842,0,-0.014],"0.46":[-220.56,0,0.014],"0.5":[-147.902,0,0.007],"0.54":[-112.359,0,-0.017],"0.58":[-95.655,0,-0.016],"0.62":[-90.167,0,-0.021],"0.67":[-98.33,0,-0.014],"0.71":[-72.949,0,-0.014],"0.75":[-44.654,0,0.007],"0.79":[-46.778,0,0.014],"0.83":[-42.8,0,-0.014],"0.88":[-31.482,0,-0.014],"0.92":[-14.615,0,-0.014],"0.96":[-3.527,0,-0.014],"1.0":[0.16,0,-0.016],"1.04":[1.095,0,-0.017],"1.08":[1.787,0,-0.014],"1.12":[0.509,0,-0.014],"1.17":[-3.807,0,0.012],"1.21":[-11.715,0,0.003],"1.25":[-22.024,0,-0.005],"1.29":[-32.129,0,-0.014],"1.33":[-38.572,0,-0.014],"1.38":[-40.283,0,-0.014],"1.42":[-40.283,0,0.007],"1.46":[-40.283,0,-0.014],"1.54":[-40.283,0,-0.014],"1.58":[-40.28,0,-0.014],"1.62":[-40.283,0,-0.014],"1.67":[-40.277,0,0.016],"1.71":[-40.286,0,0.003],"1.75":[-40.287,0,-0.014],"1.79":[-40.278,0,0.021],"1.83":[-40.289,0,-0.014],"1.88":[-40.289,0,-0.014],"1.92":[-40.285,0,0.012],"1.96":[-40.283,0,0.021],"2.0":[-40.281,0,-0.007],"2.04":[-40.278,0,0.017],"2.08":[-40.287,0,-0.005],"2.12":[-40.288,0,-0.014],"2.17":[-40.283,0,-0.014],"2.21":[-40.28,0,-0.014],"2.25":[-40.282,0,-0.014],"2.29":[-40.278,0,0.021],"2.33":[-40.276,0,-0.007],"2.38":[-40.287,0,0],"2.42":[-40.277,0,-0.014],"2.46":[-40.278,0,0.014],"2.5":[-40.286,0,0.007],"2.54":[-40.28,0,0],"2.58":[-40.271,0,-0.007],"2.62":[-40.283,0,-0.014],"2.67":[-40.279,0,-0.014],"2.71":[-40.281,0,-0.014],"2.75":[-40.282,0,-0.014],"2.79":[-40.278,0,0.021],"2.83":[-40.276,0,-0.014],"2.88":[-40.283,0,-0.014],"2.92":[-40.275,0,-0.014],"2.96":[-40.283,0,0.021],"3.0":[-40.288,0,0.012],"3.04":[-40.285,0,-0.014],"3.08":[-39.853,0,-0.014],"3.12":[-38.315,0,-0.014],"3.17":[-36.385,0,0.021],"3.21":[-35.193,0,0.004],"3.25":[-39.818,0,-0.014],"3.29":[-54.067,0,-0.014],"3.33":[-78.292,0,0.007],"3.38":[-110.596,0,0],"3.42":[-149.095,0,-0.007],"3.46":[-211.686,0,-0.021],"3.5":[-260.619,0,-0.005],"3.54":[-299.503,0,0.021],"3.58":[-298.109,0,0.016],"3.62":[-266.541,0,-0.014],"3.67":[-164.945,0,-0.014],"3.71":[-80.207,0,-0.014],"3.75":[-14.236,0,-0.014],"3.79":[0.021,0,-0.014],"3.83":[0.007,0,-0.014],"3.88":[0,0,-0.017],"3.92":[0.014,0,0.005],"3.96":[0.014,0,-0.014],"4.0":[-0.016,0,-0.005],"4.04":[-0.017,0,0.003],"4.08":[-0.014,0,-0.014],"4.12":[-0.014,0,-0.014],"4.17":[-0.019,0,-0.014],"4.21":[-0.021,0,0],"4.25":[-0.023,0,-0.007],"4.29":[-0.014,0,0.014],"4.33":[-0.019,0,0.007],"4.38":[-0.014,0,-0.014],"4.42":[-0.019,0,0.007],"4.46":[-0.028,0,-0.021]}},"up":{"rotation":{"0.0":[0,0,0.007],"0.04":[0,0,-0.014],"0.12":[0,0,-0.014],"0.17":[0,0,0.007],"0.21":[0,0,-0.014],"0.29":[0,0,-0.014],"0.33":[0,0,-0.007],"0.38":[0,0,0],"0.42":[0,0,-0.014],"0.46":[0,0,0.014],"0.5":[0,0,0.007],"0.54":[0,0,-0.017],"0.58":[0,0,-0.016],"0.62":[0,0,-0.021],"0.67":[0,0,-0.014],"0.71":[0,0,-0.014],"0.75":[0,0,0.007],"0.79":[0,0,0.014],"0.83":[0,0,-0.014],"0.96":[0,0,-0.014],"1.0":[0,0,-0.016],"1.04":[0,0,-0.017],"1.08":[0,0,-0.014],"1.12":[0,0,-0.014],"1.17":[0,0,0.012],"1.21":[0,0,0.003],"1.25":[0,0,-0.005],"1.29":[0,0,-0.014],"1.38":[0,0,-0.014],"1.42":[0,0,0.007],"1.46":[0,0,-0.014],"1.62":[0,0,-0.014],"1.67":[0,0,0.016],"1.71":[0,0,0.003],"1.75":[0,0,-0.014],"1.79":[0,0,0.021],"1.83":[0,0,-0.014],"1.88":[0,0,-0.014],"1.92":[0,0,0.012],"1.96":[0,0,0.021],"2.0":[0,0,-0.007],"2.04":[0,0,0.017],"2.08":[0,0,-0.005],"2.12":[0,0,-0.014],"2.25":[0,0,-0.014],"2.29":[0,0,0.021],"2.33":[0,0,-0.007],"2.38":[0,0,0],"2.42":[0,0,-0.014],"2.46":[0,0,0.014],"2.5":[0,0,0.007],"2.54":[0,0,0],"2.58":[0,0,-0.007],"2.62":[0,0,-0.014],"2.75":[0,0,-0.014],"2.79":[0,0,0.021],"2.83":[0,0,-0.014],"2.92":[0,0,-0.014],"2.96":[0,0,0.021],"3.0":[0,0,0.012],"3.04":[0,0,-0.014],"3.12":[0,0,-0.014],"3.17":[0,0,0.021],"3.21":[0,0,0.003],"3.25":[0,0,-0.014],"3.29":[0,0,-0.014],"3.33":[0,0,0.007],"3.38":[0,0,0],"3.42":[0,0,-0.007],"3.46":[0,0,-0.021],"3.5":[0,0,-0.005],"3.54":[0,0,0.021],"3.58":[0,0,0.016],"3.62":[0,0,-0.014],"3.83":[0,0,-0.014],"3.88":[0,0,-0.017],"3.92":[0,0,0.005],"3.96":[0,0,-0.014],"4.0":[0,0,-0.005],"4.04":[0,0,0.003],"4.08":[0,0,-0.014],"4.17":[0,0,-0.014],"4.21":[0,0,0],"4.25":[0,0,-0.007],"4.29":[0,0,0.014],"4.33":[0,0,0.007],"4.38":[0,0,-0.014],"4.42":[0,0,0.007],"4.46":[0,0,-0.021]}},"blade2":{"rotation":{"0.0":[-0.001,0,0.007],"0.04":[-2.573,0,-0.014],"0.08":[-5.411,0,-0.014],"0.12":[-5.858,0,-0.014],"0.17":[-5.18,0,0.007],"0.21":[-50.542,0,-0.014],"0.25":[-115.947,0,-0.014],"0.29":[-124.363,0,-0.014],"0.33":[-124.39,0,-0.007],"0.38":[-124.419,0,0],"0.42":[-120.775,0,-0.014],"0.46":[-107.567,0,0.014],"0.5":[-88.045,0,0.007],"0.54":[-66.426,0,-0.017],"0.58":[-40.118,0,-0.016],"0.62":[-24.382,0,-0.021],"0.67":[-28.599,0,-0.014],"0.71":[-1.749,0,-0.014],"0.75":[18.586,0,0.007],"0.79":[23.882,0,0.014],"0.83":[14.28,0,-0.014],"0.88":[1.94,0,-0.014],"0.92":[-0.329,0,-0.014],"0.96":[0,0,-0.014],"1.0":[0,0,-0.016],"1.04":[0,0,-0.017],"1.08":[0,0,-0.014],"1.12":[0,0,-0.014],"1.17":[-0.223,0,0.012],"1.21":[-2.035,0,0.003],"1.25":[-5.397,0,-0.005],"1.29":[-9.09,0,-0.014],"1.33":[-11.593,0,-0.014],"1.38":[-12.279,0,-0.014],"1.42":[-12.275,0,0.007],"1.46":[-12.279,0,-0.014],"1.5":[-12.279,0,-0.014],"1.54":[-12.276,0,-0.014],"1.58":[-12.27,0,-0.014],"1.62":[-12.274,0,-0.014],"1.67":[-12.271,0,0.016],"1.71":[-12.276,0,0.003],"1.75":[-12.277,0,-0.014],"1.79":[-12.269,0,0.021],"1.83":[-12.277,0,-0.014],"1.88":[-12.276,0,-0.014],"1.92":[-12.271,0,0.012],"1.96":[-12.274,0,0.021],"2.0":[-12.272,0,-0.007],"2.04":[-12.271,0,0.017],"2.08":[-12.277,0,-0.005],"2.12":[-12.279,0,-0.014],"2.17":[-12.279,0,-0.014],"2.21":[-12.276,0,-0.014],"2.25":[-12.274,0,-0.014],"2.29":[-12.274,0,0.021],"2.33":[-12.269,0,-0.007],"2.38":[-12.271,0,0],"2.42":[-12.27,0,-0.014],"2.46":[-12.274,0,0.014],"2.5":[-12.277,0,0.007],"2.54":[-12.276,0,0],"2.58":[-12.267,0,-0.007],"2.62":[-12.274,0,-0.014],"2.67":[-12.274,0,-0.014],"2.71":[-12.271,0,-0.014],"2.75":[-12.276,0,-0.014],"2.79":[-12.269,0,0.021],"2.83":[-12.267,0,-0.014],"2.88":[-12.276,0,-0.014],"2.92":[-12.27,0,-0.014],"2.96":[-12.274,0,0.021],"3.0":[-12.279,0,0.012],"3.04":[-12.279,0,-0.014],"3.08":[-11.883,0,-0.014],"3.12":[-10.345,0,-0.014],"3.17":[-7.825,0,0.021],"3.21":[-4.999,0,0.003],"3.25":[-2.399,0,-0.014],"3.29":[-0.514,0,-0.014],"3.33":[0,0,0.007],"3.38":[0,0,0],"3.42":[-15.174,0,-0.007],"3.46":[-63.648,0,-0.021],"3.5":[-111.93,0,-0.005],"3.54":[-130.829,0,0.021],"3.58":[-127.129,0,0.016],"3.62":[-104.958,0,-0.014],"3.67":[-42.452,0,-0.014],"3.71":[0,0,-0.014],"3.83":[0,0,-0.014],"3.88":[0,0,-0.017],"3.92":[0,0,0.005],"3.96":[0,0,-0.014],"4.0":[0,0,-0.005],"4.04":[0,0,0.003],"4.08":[0,0,-0.014],"4.17":[0,0,-0.014],"4.21":[0,0,0],"4.25":[0,0,-0.007],"4.29":[0,0,0.014],"4.33":[0,0,0.007],"4.38":[0,0,-0.014],"4.42":[0,0,0.007],"4.46":[0,0,-0.021]}},"lefthand":{"rotation":{"0.0":[121.264,39.725,77.964],"0.04":[126.901,31.832,79.636],"0.08":[133.475,21.893,81.512],"0.12":[139.128,10.593,82.338],"0.17":[142.534,-0.265,81.95],"0.21":[143.451,-8.868,80.678],"0.25":[142.003,-14.393,77.506],"0.29":[140.575,-17.899,71.687],"0.33":[140.362,-18.915,69.084],"0.38":[140.365,-18.917,69.084],"0.42":[140.359,-18.915,69.084],"0.46":[140.357,-18.914,69.086],"0.5":[140.362,-18.915,69.084],"0.62":[140.362,-18.915,69.084],"0.67":[140.367,-18.92,69.089],"0.71":[140.361,-18.919,69.085],"0.75":[140.362,-18.915,69.084],"0.83":[140.362,-18.915,69.084],"0.88":[140.359,-18.914,69.084],"0.92":[140.36,-18.915,69.084],"0.96":[140.362,-18.915,69.084],"1.0":[140.362,-18.916,69.084],"1.04":[140.365,-18.919,69.086],"1.08":[140.363,-18.916,69.086],"1.12":[140.362,-18.915,69.084],"1.38":[140.362,-18.915,69.084],"1.42":[140.361,-18.921,69.085],"1.46":[140.37,-18.916,69.094],"1.5":[140.362,-18.915,69.084],"1.58":[140.362,-18.915,69.084],"1.62":[140.357,-18.914,69.086],"1.67":[140.362,-18.915,69.084],"1.75":[140.362,-18.915,69.084],"1.79":[140.357,-18.914,69.086],"1.83":[140.363,-18.917,69.09],"1.88":[140.362,-18.915,69.084],"1.96":[140.362,-18.915,69.084],"2.0":[140.367,-18.918,69.089],"2.04":[140.362,-18.915,69.084],"2.21":[140.362,-18.915,69.084],"2.25":[140.357,-18.914,69.084],"2.29":[140.362,-18.915,69.084],"3.62":[140.362,-18.915,69.084],"3.67":[140.305,-18.688,69.116],"3.71":[139.815,-16.715,69.4],"3.75":[138.771,-12.479,69.994],"3.79":[137.261,-6.466,70.833],"3.83":[135.29,0.944,71.902],"3.88":[133.039,8.948,73.075],"3.92":[130.619,17.149,74.318],"3.96":[128.107,25.041,75.55],"4.0":[125.648,32.092,76.775],"4.04":[123.447,38.018,77.863],"4.08":[121.692,42.523,78.752],"4.12":[120.52,45.369,79.337],"4.17":[120.29,45.987,79.567],"4.21":[120.69,45.342,80.1],"4.25":[121.255,44.383,80.88],"4.29":[121.579,43.841,81.317],"4.33":[121.284,44.118,80.913],"4.38":[120.717,44.675,80.133],"4.42":[120.129,45.229,79.325],"4.46":[119.815,45.505,78.918]},"position":{"0.0":[14.045,-27.084,-21.583],"0.04":[13.958,-27.207,-21.19],"0.08":[13.869,-27.459,-20.673],"0.12":[13.805,-27.816,-20.076],"0.17":[13.811,-28.274,-19.442],"0.21":[13.906,-28.793,-18.82],"0.25":[14.378,-29.71,-18.024],"0.29":[15.385,-31.205,-16.934],"0.33":[15.842,-31.846,-16.497],"0.38":[15.841,-31.846,-16.497],"0.42":[15.841,-31.845,-16.497],"0.46":[15.842,-31.846,-16.497],"0.62":[15.842,-31.846,-16.497],"0.67":[15.841,-31.845,-16.496],"0.71":[15.842,-31.846,-16.497],"0.83":[15.842,-31.846,-16.497],"0.88":[15.842,-31.845,-16.497],"0.92":[15.842,-31.846,-16.497],"1.0":[15.842,-31.846,-16.497],"1.04":[15.841,-31.845,-16.497],"1.08":[15.842,-31.846,-16.497],"1.42":[15.842,-31.846,-16.497],"1.46":[15.841,-31.845,-16.496],"1.5":[15.842,-31.846,-16.497],"1.79":[15.842,-31.846,-16.497],"1.83":[15.841,-31.845,-16.496],"1.88":[15.842,-31.846,-16.497],"1.96":[15.842,-31.846,-16.497],"2.0":[15.841,-31.845,-16.496],"2.04":[15.842,-31.846,-16.497],"2.21":[15.842,-31.846,-16.497],"2.25":[15.842,-31.845,-16.497],"2.29":[15.842,-31.846,-16.497],"3.62":[15.842,-31.846,-16.497],"3.67":[15.834,-31.831,-16.514],"3.71":[15.781,-31.705,-16.656],"3.75":[15.686,-31.437,-16.965],"3.79":[15.55,-31.054,-17.403],"3.83":[15.386,-30.565,-17.959],"3.88":[15.187,-30.025,-18.575],"3.92":[14.985,-29.458,-19.223],"3.96":[14.789,-28.892,-19.866],"4.0":[14.592,-28.363,-20.469],"4.04":[14.417,-27.899,-21],"4.08":[14.27,-27.524,-21.426],"4.12":[14.156,-27.266,-21.721],"4.17":[14.096,-27.175,-21.827],"4.21":[14.069,-27.138,-21.843],"4.25":[14.059,-27.105,-21.833],"4.29":[14.051,-27.092,-21.817],"4.33":[14.065,-27.093,-21.819],"4.38":[14.08,-27.097,-21.818],"4.42":[14.094,-27.108,-21.816],"4.46":[14.1,-27.11,-21.81]}},"righthand":{"position":[-0.2,3.8,0.5],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.bknife_look03_ab"},"3.18":{"effect":"melee.cs2.bknife_look02_b"}}},"melee_1":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[90.594,7.168,132.115],"0.04":[71.673,8.907,138.24],"0.08":[29.332,36.106,118.608],"0.12":[9.484,39.084,125.681],"0.17":[22.921,47.284,133.557],"0.21":[34.134,57.317,149.583],"0.25":[52.97,62.401,175.14],"0.29":[72.332,61.519,202.288],"0.33":[83.407,56.448,220.601],"0.38":[88.633,50.109,231.665],"0.42":[91.355,41.121,239.559],"0.46":[91.612,30.048,244.928],"0.5":[90.705,18.755,248.299],"0.54":[89.683,9.518,251.066],"0.58":[89.287,4.158,253.947],"0.62":[90.129,0.933,258.209],"0.67":[91.58,-4.588,264.347],"0.71":[91.915,-10.641,270.126],"0.75":[91.429,-14.825,273.478],"0.79":[91.385,-17.928,272.927],"0.83":[92.563,-23.413,269.325],"0.88":[94.966,-29.705,264.545],"0.92":[97.929,-35.412,259.885],"0.96":[99.502,-39.347,257.393],"1.0":[97.397,-42.518,258.805],"1.04":[93.06,-45.859,262.187],"1.08":[88.365,-48.306,265.965],"1.12":[85.916,-49.291,267.943]},"position":{"0.0":[-15.529,-21.488,-18.516],"0.04":[-8.536,-23.377,-19.303],"0.08":[-3.019,-25.787,-17.809],"0.12":[2.211,-28.77,-14.521],"0.17":[7.745,-29.833,-13.896],"0.21":[6.643,-34.044,-10.563],"0.25":[4.13,-36.539,-9.147],"0.29":[2.463,-37.547,-9.499],"0.33":[1.43,-38.352,-10.389],"0.38":[0.347,-38.721,-11.039],"0.42":[-0.876,-38.481,-11.872],"0.46":[-2.19,-37.758,-13.061],"0.5":[-3.468,-36.681,-14.464],"0.54":[-4.68,-35.478,-15.835],"0.58":[-5.747,-34.304,-17.009],"0.62":[-6.667,-32.725,-17.655],"0.67":[-7.441,-30.24,-17.54],"0.71":[-8.126,-27.725,-17.09],"0.75":[-8.696,-26.035,-16.701],"0.79":[-9.169,-25.293,-16.564],"0.83":[-9.616,-24.78,-16.486],"0.88":[-10.03,-24.387,-16.419],"0.92":[-10.388,-24.132,-16.367],"0.96":[-10.664,-24.045,-16.336],"1.0":[-10.856,-24.228,-16.337],"1.04":[-10.996,-24.581,-16.353],"1.08":[-11.083,-24.927,-16.368],"1.12":[-11.116,-25.094,-16.376]}},"butterfly":{"rotation":{"0.0":[17.378,9.503,165.684],"0.04":[17.388,9.5,165.684],"0.08":[17.386,9.507,165.685],"0.12":[17.367,9.52,165.67],"0.17":[17.39,9.502,165.683],"0.21":[17.388,9.506,165.697],"0.25":[17.388,9.513,165.693],"0.29":[17.374,9.502,165.663],"0.33":[17.373,9.491,165.674],"0.38":[17.373,9.499,165.678],"0.42":[17.366,9.513,165.667],"0.46":[17.378,9.52,165.681],"0.5":[17.365,9.521,165.679],"0.54":[17.364,9.526,165.678],"0.58":[17.362,9.518,165.683],"0.62":[17.369,9.509,165.679],"0.67":[17.378,9.527,165.692],"0.71":[17.385,9.525,165.685],"0.75":[17.386,9.533,165.705],"0.79":[17.391,9.508,165.7],"0.83":[17.392,9.516,165.69],"0.88":[17.39,9.531,165.696],"0.92":[17.383,9.531,165.699],"0.96":[17.379,9.526,165.707],"1.0":[17.394,9.522,165.704],"1.04":[17.394,9.525,165.706],"1.08":[17.396,9.535,165.697],"1.12":[17.404,9.52,165.698]},"position":[5.71209,14.17489,0.68477]},"down":{"rotation":{"0.0":[-0.019,0,-0.014],"0.04":[-0.014,0,0],"0.08":[-0.019,0,-0.007],"0.12":[-0.014,0,-0.014],"0.17":[-0.021,0,-0.007],"0.21":[-0.017,0,0],"0.25":[-0.019,0,-0.014],"0.29":[-0.014,0,-0.014],"0.38":[-0.014,0,-0.014],"0.42":[-0.014,0,0.007],"0.46":[-0.014,0,-0.014],"0.54":[-0.014,0,-0.014],"0.58":[-0.019,0,-0.014],"0.62":[-0.014,0,0.014],"0.67":[-0.014,0,-0.014],"0.71":[-0.014,0,-0.014],"0.75":[-0.019,0,-0.014],"0.79":[-0.014,0,-0.014],"0.83":[-0.016,0,0.007],"0.88":[-0.017,0,0],"0.92":[-0.019,0,-0.007],"0.96":[-0.014,0,-0.014],"1.0":[-0.014,0,-0.014],"1.04":[-0.014,0,0],"1.08":[-0.014,0,0.014],"1.12":[-0.028,0,-0.014]}},"up":{"rotation":{"0.0":[0,0,-0.014],"0.04":[0,0,0],"0.08":[0,0,-0.007],"0.12":[0,0,-0.014],"0.17":[0,0,-0.007],"0.21":[0,0,0],"0.25":[0,0,-0.014],"0.38":[0,0,-0.014],"0.42":[0,0,0.007],"0.46":[0,0,-0.014],"0.58":[0,0,-0.014],"0.62":[0,0,0.014],"0.67":[0,0,-0.014],"0.79":[0,0,-0.014],"0.83":[0,0,0.007],"0.88":[0,0,0],"0.92":[0,0,-0.007],"0.96":[0,0,-0.014],"1.0":[0,0,-0.014],"1.04":[0,0,0],"1.08":[0,0,0.014],"1.12":[0,0,-0.014]}},"blade2":{"rotation":{"0.0":[0,0,-0.014],"0.04":[0,0,0],"0.08":[0,0,-0.007],"0.12":[0,0,-0.014],"0.17":[0,0,-0.007],"0.21":[0,0,0],"0.25":[0,0,-0.014],"0.38":[0,0,-0.014],"0.42":[0,0,0.007],"0.46":[0,0,-0.014],"0.58":[0,0,-0.014],"0.62":[0,0,0.014],"0.67":[0,0,-0.014],"0.79":[0,0,-0.014],"0.83":[0,0,0.007],"0.88":[0,0,0],"0.92":[0,0,-0.007],"0.96":[0,0,-0.014],"1.0":[0,0,-0.014],"1.04":[0,0,0],"1.08":[0,0,0.014],"1.12":[0,0,-0.014]}},"lefthand":{"rotation":{"0.0":[87.702,-2.644,73.327],"0.04":[77.983,-2.749,74.646],"0.08":[66.007,-1.7,75.084],"0.12":[54.776,0.314,74.47],"0.17":[47.973,1.797,73.139],"0.21":[46.38,2.146,72.741],"0.25":[47.399,1.878,73.218],"0.29":[49.434,1.25,74.043],"0.33":[52.433,0.434,75.355],"0.38":[56.15,-0.553,76.777],"0.42":[60.466,-1.706,78.279],"0.46":[65.207,-2.95,79.787],"0.5":[70.394,-4.19,81.16],"0.54":[75.797,-5.302,82.322],"0.58":[81.305,-6.208,83.231],"0.62":[86.828,-6.714,83.841],"0.67":[92.175,-6.65,84.228],"0.71":[97.232,-5.93,84.43],"0.75":[102.289,-3.935,84.835],"0.79":[108.216,0.329,85.945],"0.83":[114.801,6.794,87.543],"0.88":[121.183,14.369,89.182],"0.92":[126.565,22.603,90.337],"0.96":[129.707,30.922,89.973],"1.0":[129.122,37.657,87.259],"1.04":[125.866,42.148,83.69],"1.08":[121.913,44.679,80.457],"1.12":[119.832,45.506,78.939]},"position":{"0.0":[26.475,-27.54,-11.944],"0.04":[27.63,-25.891,-7.371],"0.08":[29.102,-23.778,-1.733],"0.12":[30.411,-21.737,3.992],"0.17":[31.294,-20.47,7.49],"0.21":[31.498,-20.223,8.298],"0.25":[31.432,-20.701,7.63],"0.29":[31.273,-21.555,6.363],"0.33":[31.008,-22.769,4.54],"0.38":[30.652,-24.101,2.429],"0.42":[30.152,-25.466,0.125],"0.46":[29.469,-26.756,-2.152],"0.5":[28.651,-27.788,-4.342],"0.54":[27.506,-28.478,-6.415],"0.58":[25.645,-28.813,-8.684],"0.62":[23.25,-28.864,-11.109],"0.67":[20.891,-28.737,-13.4],"0.71":[19.11,-28.563,-15.204],"0.75":[18.066,-28.408,-16.476],"0.79":[17.267,-28.245,-17.537],"0.83":[16.545,-28.057,-18.487],"0.88":[15.914,-27.867,-19.332],"0.92":[15.376,-27.678,-20.066],"0.96":[14.919,-27.501,-20.686],"1.0":[14.573,-27.347,-21.163],"1.04":[14.314,-27.223,-21.513],"1.08":[14.157,-27.142,-21.734],"1.12":[14.098,-27.11,-21.809]}},"root":{"position":{"0.0":[0,0.7,1.8],"0.58":{"pre":[0,0.7,1.8],"post":[0,0,0]}}},"righthand":{"position":[-0.2,3.8,0.5],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"melee_2":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[123.874,-34.282,-99.239],"0.04":[106.865,-44.76,-100.536],"0.08":[78.079,-46.274,-88.126],"0.12":[61.548,-25.515,-91.312],"0.17":[46.671,-9.203,-87.768],"0.21":[40.949,-1.973,-83.055],"0.25":[39.72,14.853,-88.299],"0.29":[15.985,4.322,-100.39],"0.33":[44.14,20.283,-89.706],"0.38":[45.526,17.401,-82.327],"0.42":[44.534,17.626,-83.344],"0.46":[50.865,-6.742,-86.008],"0.5":[51.547,14.336,-78.602],"0.54":[60.814,-1.84,-86.95],"0.58":[80.626,-14.445,-100.897],"0.62":[100.836,-7.758,-112.973],"0.67":[114.249,10.248,-122.363],"0.71":[116.798,15.403,-124.805],"0.75":[115.493,8.313,-123.796],"0.79":[114.576,-1.143,-121.248],"0.83":[112.192,-9.539,-118.35],"0.88":[108.805,-17.123,-114.988],"0.92":[104.905,-24.532,-111.002],"0.96":[100.849,-32.334,-106.243],"1.0":[96.329,-39.699,-101.256],"1.04":[91.507,-44.956,-96.772],"1.08":[87.618,-48.129,-93.449],"1.12":[85.916,-49.291,-92.057]},"position":{"0.0":[0.359,-25.685,-20.062],"0.04":[-6.25,-24.155,-21.89],"0.08":[-13.806,-24.925,-20.611],"0.12":[-20.43,-26.044,-14.593],"0.17":[-23.769,-29.172,-8.452],"0.21":[-24.325,-28.613,-3.618],"0.25":[-23.847,-30.447,-1.653],"0.29":[-20.845,-30.852,-1.603],"0.33":[-22.143,-31.163,-3.676],"0.38":[-22.184,-31.651,-7.582],"0.42":[-21.519,-32.117,-11.686],"0.46":[-20.335,-33.751,-14.002],"0.5":[-19.175,-34.637,-15.038],"0.54":[-18.618,-33.27,-14.753],"0.58":[-17.837,-31.665,-14.374],"0.62":[-16.598,-30.599,-14.516],"0.67":[-15.552,-29.157,-15.207],"0.71":[-14.709,-27.638,-15.945],"0.75":[-14.041,-26.447,-16.354],"0.79":[-13.482,-25.696,-16.363],"0.83":[-12.974,-25.129,-16.325],"0.88":[-12.507,-24.696,-16.302],"0.92":[-12.104,-24.408,-16.284],"0.96":[-11.776,-24.287,-16.283],"1.0":[-11.523,-24.401,-16.307],"1.04":[-11.315,-24.678,-16.336],"1.08":[-11.175,-24.955,-16.365],"1.12":[-11.116,-25.094,-16.376]}},"butterfly":{"rotation":{"0.0":[17.375,9.513,165.704],"0.04":[17.377,9.504,165.712],"0.08":[17.396,9.525,165.694],"0.12":[17.395,9.477,165.711],"0.17":[17.39,9.524,165.697],"0.21":[17.374,9.529,165.682],"0.25":[17.388,9.523,165.69],"0.29":[17.39,9.518,165.702],"0.33":[17.372,9.516,165.675],"0.38":[17.387,9.502,165.674],"0.42":[17.388,9.513,165.668],"0.46":[17.389,9.514,165.691],"0.5":[17.383,9.504,165.668],"0.54":[17.391,9.516,165.686],"0.58":[17.38,9.531,165.689],"0.62":[17.37,9.506,165.694],"0.67":[17.373,9.519,165.698],"0.71":[17.365,9.521,165.678],"0.75":[17.359,9.522,165.688],"0.79":[17.368,9.519,165.675],"0.83":[17.373,9.52,165.677],"0.88":[17.38,9.524,165.687],"0.92":[17.385,9.521,165.692],"0.96":[17.391,9.511,165.711],"1.0":[17.392,9.531,165.697],"1.04":[17.395,9.521,165.705],"1.08":[17.4,9.519,165.703],"1.12":[17.404,9.52,165.698]},"position":[5.71209,14.17489,0.68477]},"down":{"rotation":{"0.0":[-0.016,0,-0.014],"0.04":[-0.017,0,-0.014],"0.08":[-0.014,0,-0.014],"0.12":[-0.021,0,0.014],"0.17":[-0.016,0,-0.014],"0.21":[-0.017,0,-0.014],"0.25":[-0.014,0,0.007],"0.29":[-0.014,0,0.014],"0.38":[-0.014,0,0.014],"0.42":[-0.014,0,-0.007],"0.46":[-0.014,0,-0.014],"0.54":[-0.014,0,-0.014],"0.58":[-0.014,0,0.007],"0.62":[-0.014,0,-0.014],"0.67":[-0.014,0,0.007],"0.71":[-0.014,0,-0.014],"0.75":[-0.019,0,-0.014],"0.79":[-0.014,0,-0.014],"0.83":[-0.014,0,-0.005],"0.88":[-0.014,0,0.003],"0.92":[-0.014,0,-0.014],"0.96":[-0.021,0,-0.014],"1.0":[-0.016,0,-0.014],"1.04":[-0.017,0,0],"1.08":[-0.019,0,-0.007],"1.12":[-0.021,0,-0.014]}},"up":{"rotation":{"0.0":[0,0,-0.014],"0.08":[0,0,-0.014],"0.12":[0,0,0.014],"0.17":[0,0,-0.014],"0.21":[0,0,-0.014],"0.25":[0,0,0.007],"0.29":[0,0,0.014],"0.38":[0,0,0.014],"0.42":[0,0,-0.007],"0.46":[0,0,-0.014],"0.54":[0,0,-0.014],"0.58":[0,0,0.007],"0.62":[0,0,-0.014],"0.67":[0,0,0.007],"0.71":[0,0,-0.014],"0.79":[0,0,-0.014],"0.83":[0,0,-0.005],"0.88":[0,0,0.003],"0.92":[0,0,-0.014],"1.0":[0,0,-0.014],"1.04":[0,0,0],"1.08":[0,0,-0.007],"1.12":[0,0,-0.014]}},"blade2":{"rotation":{"0.0":[0,0,-0.014],"0.08":[0,0,-0.014],"0.12":[0,0,0.014],"0.17":[0,0,-0.014],"0.21":[0,0,-0.014],"0.25":[0,0,0.007],"0.29":[0,0,0.014],"0.38":[0,0,0.014],"0.42":[0,0,-0.007],"0.46":[0,0,-0.014],"0.54":[0,0,-0.014],"0.58":[0,0,0.007],"0.62":[0,0,-0.014],"0.67":[0,0,0.007],"0.71":[0,0,-0.014],"0.79":[0,0,-0.014],"0.83":[0,0,-0.005],"0.88":[0,0,0.003],"0.92":[0,0,-0.014],"1.0":[0,0,-0.014],"1.04":[0,0,0],"1.08":[0,0,-0.007],"1.12":[0,0,-0.014]}},"lefthand":{"rotation":{"0.0":[87.672,-2.64,73.084],"0.04":[77.96,-2.773,74.453],"0.08":[65.999,-1.606,75.474],"0.12":[54.788,0.265,74.443],"0.17":[47.97,1.805,73.142],"0.21":[46.38,2.146,72.741],"0.25":[47.399,1.878,73.218],"0.29":[49.434,1.25,74.043],"0.33":[52.433,0.434,75.355],"0.38":[56.15,-0.553,76.777],"0.42":[60.466,-1.706,78.279],"0.46":[65.207,-2.95,79.787],"0.5":[70.394,-4.19,81.16],"0.54":[75.797,-5.302,82.322],"0.58":[81.305,-6.208,83.231],"0.62":[86.828,-6.714,83.841],"0.67":[92.175,-6.65,84.228],"0.71":[97.232,-5.93,84.43],"0.75":[102.289,-3.935,84.835],"0.79":[108.216,0.329,85.945],"0.83":[114.801,6.794,87.543],"0.88":[121.183,14.369,89.182],"0.92":[126.565,22.603,90.337],"0.96":[129.707,30.922,89.974],"1.0":[129.122,37.657,87.259],"1.04":[125.866,42.148,83.69],"1.08":[121.913,44.679,80.457],"1.12":[119.832,45.506,78.939]},"position":{"0.0":[27.073,-26.536,-6],"0.04":[28.09,-25.091,-2.706],"0.08":[29.302,-23.29,1.336],"0.12":[30.527,-21.527,5.307],"0.17":[31.308,-20.426,7.763],"0.21":[31.498,-20.223,8.298],"0.25":[31.432,-20.701,7.63],"0.29":[31.273,-21.555,6.363],"0.33":[31.008,-22.769,4.54],"0.38":[30.652,-24.101,2.429],"0.42":[30.152,-25.466,0.125],"0.46":[29.469,-26.756,-2.152],"0.5":[28.651,-27.788,-4.342],"0.54":[27.506,-28.478,-6.415],"0.58":[25.645,-28.813,-8.684],"0.62":[23.25,-28.864,-11.109],"0.67":[20.891,-28.737,-13.4],"0.71":[19.11,-28.563,-15.204],"0.75":[18.066,-28.408,-16.476],"0.79":[17.267,-28.245,-17.537],"0.83":[16.545,-28.057,-18.487],"0.88":[15.914,-27.867,-19.332],"0.92":[15.376,-27.678,-20.066],"0.96":[14.919,-27.501,-20.686],"1.0":[14.573,-27.347,-21.163],"1.04":[14.314,-27.223,-21.513],"1.08":[14.157,-27.142,-21.734],"1.12":[14.098,-27.11,-21.809]}},"root":{"position":{"0.0":{"post":[0,0.7,-4.2],"lerp_mode":"catmullrom"},"0.46":{"post":[0,0.7,-4.2],"lerp_mode":"catmullrom"},"0.6":{"post":[0,-1.19,1.9],"lerp_mode":"catmullrom"},"0.93":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"righthand":{"position":[-0.2,3.8,0.5],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash2"}}},"melee_3":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[77.838,-32.352,-110.807],"0.04":[113.928,-47.535,-112.239],"0.08":[149.177,-50.459,-110.665],"0.12":[156.56,-50.046,-105.972],"0.17":[157.934,-49.516,-103.391],"0.21":[158.157,-49.03,-101.053],"0.25":[157.966,-48.545,-98.625],"0.29":[158.317,-48.108,-96.006],"0.33":[157.384,-41.759,-90.252],"0.38":[153.856,-17.558,-75.537],"0.42":[149.083,-10.829,-59.51],"0.46":[144.326,-9.534,-55.191],"0.5":[138.383,-9.354,-51.577],"0.54":[131.552,-9.656,-48.718],"0.58":[124.094,-10.227,-46.701],"0.62":[116.22,-10.96,-45.597],"0.67":[108.427,-11.774,-45.82],"0.71":[101.052,-12.765,-47.179],"0.75":[94.018,-14.548,-50.236],"0.79":[86.94,-18.757,-55.606],"0.83":[81.196,-26.271,-62.653],"0.88":[78.325,-35.509,-70.259],"0.92":[78.859,-44.517,-78.198],"0.96":[81.978,-51.006,-85.764],"1.0":[84.298,-52.697,-89.641],"1.04":[85.294,-51.711,-91.141],"1.08":[85.78,-50.171,-91.865],"1.12":[85.935,-49.282,-92.069]},"position":{"0.0":[-12.931,-25.668,-21.602],"0.04":[-3.55,-22.18,-23.629],"0.08":[0.44,-22.357,-23.635],"0.12":[0.933,-22.364,-23.41],"0.17":[1.134,-22.355,-23.367],"0.21":[1.298,-22.356,-23.346],"0.25":[1.497,-22.386,-23.3],"0.29":[1.805,-22.463,-23.174],"0.33":[3.526,-25.236,-20.139],"0.38":[5.458,-30.098,-14.344],"0.42":[1.152,-31.73,-11.413],"0.46":[-1.876,-31.987,-11.15],"0.5":[-2.87,-32.528,-11.715],"0.54":[-3.558,-33.097,-12.497],"0.58":[-4.348,-33.535,-13.294],"0.62":[-5.763,-32.894,-14.464],"0.67":[-7.702,-31.066,-16.1],"0.71":[-9.451,-28.921,-17.362],"0.75":[-10.141,-27.701,-17.53],"0.79":[-10.421,-27.047,-17.175],"0.83":[-10.657,-26.441,-16.745],"0.88":[-10.854,-25.905,-16.306],"0.92":[-11.004,-25.459,-15.937],"0.96":[-11.106,-25.129,-15.713],"1.0":[-11.14,-24.973,-15.744],"1.04":[-11.137,-24.969,-15.972],"1.08":[-11.125,-25.043,-16.236],"1.12":[-11.115,-25.096,-16.376]}},"butterfly":{"rotation":{"0.0":[170.359,2.365,0.561],"0.04":[170.374,2.375,0.557],"0.08":[170.389,2.377,0.557],"0.12":[170.389,2.374,0.555],"0.17":[170.393,2.385,0.564],"0.21":[170.386,2.389,0.556],"0.25":[170.38,2.391,0.563],"0.29":[170.379,2.38,0.564],"0.33":[170.378,2.398,0.555],"0.38":[170.379,2.395,0.558],"0.42":[170.453,2.75,0.454],"0.46":[197.362,170.514,-14.315],"0.5":[197.373,170.512,-14.295],"0.54":[197.375,170.512,-14.301],"0.58":[197.395,170.505,-14.309],"0.62":[197.38,170.503,-14.332],"0.67":[197.389,170.509,-14.314],"0.71":[197.37,170.502,-14.318],"0.75":[197.36,170.502,-14.318],"0.79":[197.379,170.519,-14.299],"0.83":[197.392,170.506,-14.307],"0.88":[197.4,170.486,-14.296],"0.92":[197.401,170.469,-14.301],"0.96":[197.396,170.487,-14.294],"1.0":[197.395,170.463,-14.296],"1.04":[197.393,170.467,-14.298],"1.08":[197.395,170.477,-14.301],"1.12":[197.404,170.475,-14.296]},"position":{"0.0":[4.82903,12.96215,5.88485],"0.41":{"pre":[4.82903,12.96215,5.88485],"post":[5.71209,14.17489,0.68477]}}},"down":{"rotation":{"0.0":[-0.019,0,-0.014],"0.04":[-0.014,0,-0.014],"0.08":[-0.014,0,-0.014],"0.12":[-0.014,0,0.014],"0.17":[-0.019,0,0.007],"0.21":[-0.017,0,-0.014],"0.25":[-0.016,0,0.007],"0.29":[-0.014,0,-0.014],"0.46":[-0.014,0,-0.014],"0.5":[-0.016,0,-0.007],"0.54":[-0.017,0,0],"0.58":[-0.014,0,-0.014],"0.62":[-0.021,0,0.014],"0.67":[-0.014,0,0.007],"0.71":[-0.014,0,0.004],"0.75":[-0.014,0,-0.005],"0.79":[-0.014,0,0.014],"0.83":[-0.014,0,-0.014],"0.88":[-0.014,0,-0.014],"0.92":[-0.019,0,-0.014],"0.96":[-0.021,0,-0.014],"1.0":[-0.019,0,-0.014],"1.04":[-0.017,0,0],"1.08":[-0.021,0,0.014],"1.12":[-0.014,0,0.014]}},"up":{"rotation":{"0.0":[0,0,-0.014],"0.08":[0,0,-0.014],"0.12":[0,0,0.014],"0.17":[0,0,0.007],"0.21":[0,0,-0.014],"0.25":[0,0,0.007],"0.29":[0,0,-0.014],"0.46":[0,0,-0.014],"0.5":[0,0,-0.007],"0.54":[0,0,0],"0.58":[0,0,-0.014],"0.62":[0,0,0.014],"0.67":[0,0,0.007],"0.71":[0,0,0.003],"0.75":[0,0,-0.005],"0.79":[0,0,0.014],"0.83":[0,0,-0.014],"1.0":[0,0,-0.014],"1.04":[0,0,0],"1.08":[0,0,0.014],"1.12":[0,0,0.014]}},"blade2":{"rotation":{"0.0":[0,0,-0.014],"0.08":[0,0,-0.014],"0.12":[0,0,0.014],"0.17":[0,0,0.007],"0.21":[0,0,-0.014],"0.25":[0,0,0.007],"0.29":[0,0,-0.014],"0.46":[0,0,-0.014],"0.5":[0,0,-0.007],"0.54":[0,0,0],"0.58":[0,0,-0.014],"0.62":[0,0,0.014],"0.67":[0,0,0.007],"0.71":[0,0,0.003],"0.75":[0,0,-0.005],"0.79":[0,0,0.014],"0.83":[0,0,-0.014],"1.0":[0,0,-0.014],"1.04":[0,0,0],"1.08":[0,0,0.014],"1.12":[0,0,0.014]}},"lefthand":{"rotation":{"0.0":[76.601,20.765,93.684],"0.04":[50.842,19.888,84.074],"0.08":[31.496,12.129,77.75],"0.12":[21.011,4.87,74.785],"0.17":[21.022,4.401,75.493],"0.21":[21.224,3.429,77.526],"0.25":[21.813,2.341,80.959],"0.29":[23.148,1.432,85.87],"0.33":[26.289,0.925,92.53],"0.38":[31.286,-0.252,100.952],"0.42":[37.84,-3.351,110.416],"0.46":[45.519,-8.582,119.327],"0.5":[55.086,-15.431,125.372],"0.54":[65.945,-22.618,127.644],"0.58":[78.332,-28.146,125.588],"0.62":[91.474,-30,120.042],"0.67":[102.618,-26.654,113.58],"0.71":[112.235,-19.83,107.851],"0.75":[120.55,-10.756,103.333],"0.79":[127.126,-0.188,100.282],"0.83":[131.611,10.814,98.42],"0.88":[134.186,21.115,97.049],"0.92":[134.739,29.87,95.243],"0.96":[133.026,36.146,92.097],"1.0":[129.303,40.138,87.801],"1.04":[125.048,43.101,83.629],"1.08":[121.452,44.868,80.345],"1.12":[119.817,45.497,78.924]},"position":{"0.0":[27.059,-25.699,-12.532],"0.04":[30.024,-25.588,-7.507],"0.08":[32.018,-26.936,-4.947],"0.12":[33.112,-27.613,-4.611],"0.17":[33.237,-27.641,-4.768],"0.21":[33.301,-27.636,-4.875],"0.25":[33.313,-27.654,-5.019],"0.29":[33.275,-27.741,-5.285],"0.33":[33.135,-27.971,-5.826],"0.38":[32.269,-28.363,-6.699],"0.42":[30.443,-28.994,-7.831],"0.46":[27.937,-29.714,-8.966],"0.5":[25.109,-30.395,-10.412],"0.54":[22.248,-30.925,-11.833],"0.58":[19.685,-31.228,-13.196],"0.62":[17.678,-31.259,-14.469],"0.67":[16.564,-30.902,-15.565],"0.71":[15.884,-30.393,-16.49],"0.75":[15.342,-29.877,-17.275],"0.79":[14.919,-29.366,-17.956],"0.83":[14.58,-28.87,-18.549],"0.88":[14.31,-28.402,-19.1],"0.92":[14.069,-27.972,-19.639],"0.96":[13.837,-27.589,-20.195],"1.0":[13.757,-27.324,-20.766],"1.04":[13.856,-27.181,-21.278],"1.08":[14.011,-27.121,-21.657],"1.12":[14.099,-27.111,-21.81]}},"root":{"position":{"0.0":[0,0,6.68267],"0.45":{"pre":[0,0,6.68267],"post":[0,0,0]}}},"righthand":{"position":[-0.2,3.8,0.5],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"static_idle":{"loop":true,"animation_length":1.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[85.908,-49.27,-92.046],"0.04":[85.931,-49.235,-92.06],"0.08":[85.935,-49.183,-92.057],"0.12":[85.93,-49.11,-92.046],"0.17":[85.937,-49.03,-92.036],"0.21":[85.942,-48.947,-92.035],"0.25":[85.926,-48.852,-91.991],"0.29":[85.928,-48.753,-91.987],"0.33":[85.901,-48.66,-91.931],"0.38":[85.865,-48.578,-91.885],"0.42":[85.826,-48.504,-91.809],"0.46":[85.775,-48.455,-91.743],"0.5":[85.697,-48.416,-91.645],"0.54":[85.628,-48.379,-91.563],"0.58":[85.576,-48.362,-91.521],"0.62":[85.5,-48.343,-91.449],"0.67":[85.44,-48.347,-91.404],"0.71":[85.372,-48.349,-91.359],"0.75":[85.315,-48.373,-91.316],"0.79":[85.275,-48.39,-91.302],"0.83":[85.19,-48.419,-91.259],"0.88":[85.149,-48.444,-91.253],"0.92":[85.101,-48.483,-91.241],"0.96":[85.05,-48.524,-91.216],"1.0":[85.015,-48.568,-91.234],"1.04":[84.983,-48.607,-91.225],"1.08":[84.953,-48.671,-91.246],"1.12":[84.925,-48.719,-91.236],"1.17":[84.921,-48.759,-91.273],"1.21":[84.923,-48.806,-91.299],"1.25":[84.925,-48.851,-91.341],"1.29":[84.944,-48.882,-91.356],"1.33":[84.961,-48.923,-91.39],"1.38":[84.994,-48.95,-91.434],"1.42":[85.046,-48.971,-91.483],"1.46":[85.098,-49.002,-91.52],"1.5":[85.179,-49.029,-91.588],"1.54":[85.262,-49.067,-91.643],"1.58":[85.34,-49.093,-91.702],"1.62":[85.441,-49.136,-91.765],"1.67":[85.528,-49.153,-91.82],"1.71":[85.608,-49.185,-91.857],"1.75":[85.687,-49.212,-91.917],"1.79":[85.757,-49.243,-91.941],"1.83":[85.821,-49.263,-92.004],"1.88":[85.869,-49.28,-92.015],"1.92":[85.899,-49.291,-92.039],"1.96":[85.916,-49.291,-92.057]},"position":{"0.0":[-11.118,-25.089,-16.383],"0.04":[-11.124,-25.077,-16.384],"0.08":[-11.127,-25.066,-16.386],"0.12":[-11.134,-25.06,-16.385],"0.17":[-11.141,-25.053,-16.386],"0.21":[-11.15,-25.043,-16.386],"0.25":[-11.157,-25.039,-16.387],"0.29":[-11.167,-25.029,-16.385],"0.33":[-11.174,-25.026,-16.388],"0.38":[-11.182,-25.024,-16.387],"0.42":[-11.189,-25.023,-16.384],"0.46":[-11.196,-25.024,-16.384],"0.5":[-11.198,-25.024,-16.384],"0.54":[-11.202,-25.027,-16.384],"0.58":[-11.205,-25.029,-16.38],"0.62":[-11.205,-25.04,-16.377],"0.67":[-11.201,-25.045,-16.374],"0.71":[-11.2,-25.056,-16.372],"0.75":[-11.196,-25.065,-16.366],"0.79":[-11.193,-25.073,-16.364],"0.83":[-11.188,-25.086,-16.357],"0.88":[-11.182,-25.097,-16.353],"0.92":[-11.178,-25.108,-16.349],"0.96":[-11.171,-25.123,-16.344],"1.0":[-11.164,-25.13,-16.34],"1.04":[-11.16,-25.142,-16.336],"1.08":[-11.153,-25.151,-16.333],"1.12":[-11.144,-25.165,-16.327],"1.17":[-11.139,-25.172,-16.324],"1.21":[-11.134,-25.181,-16.321],"1.25":[-11.128,-25.184,-16.32],"1.29":[-11.125,-25.196,-16.319],"1.33":[-11.12,-25.198,-16.319],"1.38":[-11.119,-25.199,-16.32],"1.42":[-11.115,-25.199,-16.32],"1.46":[-11.113,-25.199,-16.32],"1.5":[-11.113,-25.196,-16.324],"1.54":[-11.113,-25.189,-16.328],"1.58":[-11.113,-25.182,-16.332],"1.62":[-11.112,-25.176,-16.338],"1.67":[-11.112,-25.166,-16.342],"1.71":[-11.112,-25.158,-16.348],"1.75":[-11.112,-25.15,-16.353],"1.79":[-11.112,-25.139,-16.357],"1.83":[-11.113,-25.131,-16.364],"1.88":[-11.115,-25.117,-16.368],"1.92":[-11.116,-25.107,-16.373],"1.96":[-11.116,-25.094,-16.376]}},"butterfly":{"rotation":{"0.0":[17.388,9.532,165.699],"0.04":[17.396,9.529,165.701],"0.08":[17.397,9.525,165.703],"0.12":[17.394,9.527,165.708],"0.17":[17.397,9.533,165.703],"0.21":[17.395,9.517,165.697],"0.25":[17.393,9.527,165.694],"0.29":[17.406,9.514,165.707],"0.33":[17.393,9.531,165.704],"0.38":[17.392,9.523,165.705],"0.42":[17.408,9.527,165.713],"0.46":[17.389,9.519,165.697],"0.5":[17.399,9.53,165.695],"0.54":[17.401,9.529,165.707],"0.58":[17.399,9.522,165.702],"0.62":[17.389,9.523,165.702],"0.67":[17.391,9.527,165.707],"0.71":[17.395,9.522,165.71],"0.75":[17.397,9.522,165.703],"0.79":[17.399,9.528,165.709],"0.83":[17.388,9.524,165.7],"0.88":[17.395,9.52,165.707],"0.92":[17.389,9.524,165.704],"0.96":[17.403,9.539,165.706],"1.0":[17.386,9.528,165.704],"1.04":[17.394,9.53,165.709],"1.08":[17.394,9.525,165.697],"1.12":[17.392,9.539,165.695],"1.17":[17.391,9.531,165.701],"1.21":[17.4,9.519,165.7],"1.25":[17.389,9.51,165.694],"1.29":[17.403,9.53,165.699],"1.33":[17.391,9.527,165.692],"1.38":[17.396,9.522,165.695],"1.42":[17.398,9.524,165.703],"1.46":[17.398,9.53,165.699],"1.5":[17.397,9.519,165.707],"1.54":[17.392,9.521,165.702],"1.58":[17.391,9.521,165.709],"1.62":[17.394,9.52,165.692],"1.67":[17.398,9.527,165.706],"1.71":[17.396,9.533,165.704],"1.75":[17.396,9.524,165.708],"1.79":[17.398,9.53,165.699],"1.83":[17.389,9.512,165.698],"1.88":[17.404,9.527,165.701],"1.92":[17.397,9.529,165.701],"1.96":[17.404,9.52,165.698]},"position":[5.71209,14.17489,0.68477]},"down":{"rotation":{"0.0":[-0.014,0,-0.014],"0.04":[-0.017,0,0],"0.08":[-0.021,0,0.014],"0.12":[-0.021,0,0.014],"0.17":[-0.019,0,-0.007],"0.21":[-0.017,0,0],"0.25":[-0.021,0,0.007],"0.29":[-0.021,0,-0.014],"0.33":[-0.021,0,-0.014],"0.38":[-0.017,0,-0.014],"0.42":[-0.014,0,0.007],"0.46":[-0.021,0,0.014],"0.5":[-0.016,0,-0.007],"0.54":[-0.021,0,0],"0.58":[-0.016,0,-0.014],"0.62":[-0.014,0,0.014],"0.67":[-0.021,0,0.007],"0.71":[-0.021,0,-0.017],"0.75":[-0.016,0,-0.016],"0.79":[-0.014,0,-0.014],"0.83":[-0.014,0,0.014],"0.88":[-0.017,0,0],"0.92":[-0.016,0,-0.014],"0.96":[-0.014,0,-0.014],"1.0":[-0.016,0,-0.007],"1.04":[-0.021,0,0.014],"1.08":[-0.016,0,0.014],"1.12":[-0.021,0,0.014],"1.17":[-0.014,0,-0.007],"1.21":[-0.014,0,0.014],"1.25":[-0.019,0,0.014],"1.29":[-0.021,0,-0.014],"1.33":[-0.014,0,-0.007],"1.38":[-0.014,0,0],"1.42":[-0.014,0,0.007],"1.46":[-0.021,0,-0.014],"1.5":[-0.019,0,0.007],"1.54":[-0.014,0,-0.014],"1.58":[-0.014,0,0.007],"1.62":[-0.014,0,-0.014],"1.67":[-0.014,0,0.007],"1.71":[-0.017,0,-0.014],"1.75":[-0.021,0,-0.014],"1.79":[-0.014,0,0.014],"1.83":[-0.014,0,-0.014],"1.88":[-0.014,0,-0.014],"1.92":[-0.019,0,-0.014],"1.96":[-0.028,0,-0.014]}},"up":{"rotation":{"0.0":[0,0,-0.014],"0.04":[0,0,0],"0.08":[0,0,0.014],"0.12":[0,0,0.014],"0.17":[0,0,-0.007],"0.21":[0,0,0],"0.25":[0,0,0.007],"0.29":[0,0,-0.014],"0.38":[0,0,-0.014],"0.42":[0,0,0.007],"0.46":[0,0,0.014],"0.5":[0,0,-0.007],"0.54":[0,0,0],"0.58":[0,0,-0.014],"0.62":[0,0,0.014],"0.67":[0,0,0.007],"0.71":[0,0,-0.018],"0.75":[0,0,-0.016],"0.79":[0,0,-0.014],"0.83":[0,0,0.014],"0.88":[0,0,0],"0.92":[0,0,-0.014],"0.96":[0,0,-0.014],"1.0":[0,0,-0.007],"1.04":[0,0,0.014],"1.12":[0,0,0.014],"1.17":[0,0,-0.007],"1.21":[0,0,0.014],"1.25":[0,0,0.014],"1.29":[0,0,-0.014],"1.33":[0,0,-0.007],"1.38":[0,0,0],"1.42":[0,0,0.007],"1.46":[0,0,-0.014],"1.5":[0,0,0.007],"1.54":[0,0,-0.014],"1.58":[0,0,0.007],"1.62":[0,0,-0.014],"1.67":[0,0,0.007],"1.71":[0,0,-0.014],"1.75":[0,0,-0.014],"1.79":[0,0,0.014],"1.83":[0,0,-0.014],"1.96":[0,0,-0.014]}},"blade2":{"rotation":{"0.0":[0,0,-0.014],"0.04":[0,0,0],"0.08":[0,0,0.014],"0.12":[0,0,0.014],"0.17":[0,0,-0.007],"0.21":[0,0,0],"0.25":[0,0,0.007],"0.29":[0,0,-0.014],"0.38":[0,0,-0.014],"0.42":[0,0,0.007],"0.46":[0,0,0.014],"0.5":[0,0,-0.007],"0.54":[0,0,0],"0.58":[0,0,-0.014],"0.62":[0,0,0.014],"0.67":[0,0,0.007],"0.71":[0,0,-0.018],"0.75":[0,0,-0.016],"0.79":[0,0,-0.014],"0.83":[0,0,0.014],"0.88":[0,0,0],"0.92":[0,0,-0.014],"0.96":[0,0,-0.014],"1.0":[0,0,-0.007],"1.04":[0,0,0.014],"1.12":[0,0,0.014],"1.17":[0,0,-0.007],"1.21":[0,0,0.014],"1.25":[0,0,0.014],"1.29":[0,0,-0.014],"1.33":[0,0,-0.007],"1.38":[0,0,0],"1.42":[0,0,0.007],"1.46":[0,0,-0.014],"1.5":[0,0,0.007],"1.54":[0,0,-0.014],"1.58":[0,0,0.007],"1.62":[0,0,-0.014],"1.67":[0,0,0.007],"1.71":[0,0,-0.014],"1.75":[0,0,-0.014],"1.79":[0,0,0.014],"1.83":[0,0,-0.014],"1.96":[0,0,-0.014]}},"lefthand":{"rotation":{"0.0":[119.844,45.516,78.948],"0.04":[119.858,45.529,78.961],"0.08":[119.904,45.532,79.006],"0.12":[119.934,45.541,79.045],"0.17":[120.005,45.533,79.121],"0.21":[120.067,45.524,79.181],"0.25":[120.146,45.518,79.257],"0.29":[120.197,45.5,79.302],"0.33":[120.283,45.501,79.395],"0.38":[120.377,45.48,79.478],"0.42":[120.466,45.448,79.555],"0.46":[120.552,45.429,79.637],"0.5":[120.647,45.406,79.714],"0.54":[120.744,45.382,79.804],"0.58":[120.834,45.354,79.886],"0.62":[120.963,45.317,79.984],"0.67":[121.058,45.289,80.047],"0.71":[121.149,45.259,80.118],"0.75":[121.237,45.223,80.185],"0.79":[121.336,45.178,80.273],"0.83":[121.431,45.11,80.336],"0.88":[121.51,45.035,80.384],"0.92":[121.568,44.954,80.428],"0.96":[121.606,44.884,80.45],"1.0":[121.662,44.801,80.479],"1.04":[121.685,44.723,80.485],"1.08":[121.698,44.649,80.489],"1.12":[121.704,44.596,80.491],"1.17":[121.68,44.535,80.463],"1.21":[121.67,44.5,80.448],"1.25":[121.617,44.479,80.4],"1.29":[121.559,44.48,80.324],"1.33":[121.484,44.505,80.268],"1.38":[121.4,44.556,80.195],"1.42":[121.298,44.621,80.107],"1.46":[121.171,44.685,79.995],"1.5":[121.024,44.759,79.871],"1.54":[120.868,44.839,79.747],"1.58":[120.711,44.934,79.606],"1.62":[120.575,45.013,79.501],"1.67":[120.415,45.099,79.374],"1.71":[120.283,45.184,79.264],"1.75":[120.131,45.249,79.147],"1.79":[120.017,45.331,79.064],"1.83":[119.945,45.379,78.992],"1.88":[119.873,45.44,78.943],"1.92":[119.839,45.485,78.918],"1.96":[119.816,45.514,78.921]},"position":{"0.0":[14.09,-27.101,-21.818],"0.04":[14.085,-27.098,-21.822],"0.08":[14.079,-27.095,-21.826],"0.12":[14.078,-27.084,-21.827],"0.17":[14.067,-27.081,-21.826],"0.21":[14.065,-27.078,-21.829],"0.25":[14.056,-27.074,-21.826],"0.29":[14.051,-27.064,-21.832],"0.33":[14.049,-27.059,-21.829],"0.38":[14.046,-27.057,-21.827],"0.42":[14.044,-27.054,-21.825],"0.46":[14.041,-27.051,-21.83],"0.5":[14.032,-27.05,-21.828],"0.54":[14.03,-27.047,-21.827],"0.58":[14.029,-27.045,-21.826],"0.62":[14.026,-27.045,-21.824],"0.67":[14.026,-27.044,-21.823],"0.71":[14.029,-27.044,-21.823],"0.75":[14.033,-27.044,-21.818],"0.79":[14.034,-27.045,-21.817],"0.83":[14.038,-27.051,-21.817],"0.88":[14.049,-27.061,-21.809],"0.92":[14.056,-27.072,-21.802],"0.96":[14.068,-27.08,-21.804],"1.0":[14.079,-27.087,-21.797],"1.04":[14.089,-27.099,-21.791],"1.08":[14.099,-27.111,-21.786],"1.12":[14.112,-27.118,-21.779],"1.17":[14.123,-27.132,-21.776],"1.21":[14.13,-27.137,-21.775],"1.25":[14.137,-27.147,-21.774],"1.29":[14.139,-27.154,-21.768],"1.33":[14.148,-27.155,-21.77],"1.38":[14.148,-27.155,-21.77],"1.42":[14.149,-27.156,-21.77],"1.46":[14.142,-27.157,-21.771],"1.5":[14.142,-27.156,-21.773],"1.54":[14.142,-27.156,-21.779],"1.58":[14.137,-27.148,-21.779],"1.62":[14.134,-27.145,-21.785],"1.67":[14.134,-27.143,-21.785],"1.71":[14.129,-27.141,-21.787],"1.75":[14.126,-27.134,-21.792],"1.79":[14.118,-27.129,-21.799],"1.83":[14.114,-27.127,-21.798],"1.88":[14.108,-27.12,-21.804],"1.92":[14.101,-27.114,-21.808],"1.96":[14.099,-27.11,-21.81]}},"righthand":{"position":[-0.2,3.8,0.5],"scale":[1,1.5,1]}}},"idle":{"loop":true,"bones":{"root":{"rotation":[0,0,0],"position":[0,0,0],"scale":1}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/butterfly.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/butterfly.geo.json new file mode 100644 index 0000000..0fd3cca --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/butterfly.geo.json @@ -0,0 +1,3449 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 4, + "visible_bounds_height": 4, + "visible_bounds_offset": [0, 0, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "bone", + "parent": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "knife_and_right", + "parent": "bone", + "pivot": [6, 19, 0] + }, + { + "name": "righthand", + "parent": "knife_and_right", + "pivot": [6, 19, 0] + }, + { + "name": "righthand_pos", + "parent": "righthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [4, 8, -2], + "size": [3, 12, 4], + "uv": { + "north": {"uv": [0, 0], "uv_size": [4, 12]}, + "east": {"uv": [4, 0], "uv_size": [4, 12]}, + "south": {"uv": [8, 0], "uv_size": [4, 12]}, + "west": {"uv": [0, 12], "uv_size": [4, 12]}, + "up": {"uv": [16, 0], "uv_size": [4, 4]}, + "down": {"uv": [16, 8], "uv_size": [4, -4]} + } + } + ] + }, + { + "name": "butterfly", + "parent": "knife_and_right", + "pivot": [0, 9.25, -2.5] + }, + { + "name": "weapon", + "parent": "butterfly", + "pivot": [0, 9.525, -0.3] + }, + { + "name": "down", + "parent": "weapon", + "pivot": [0.11364, 8.90002, -3.14082] + }, + { + "name": "octagon3", + "parent": "down", + "pivot": [-0.11363, 8.90002, -3.14082], + "cubes": [ + { + "origin": [-0.36931, 8.73528, -3.53853], + "size": [0.25568, 0.32948, 0.79543], + "pivot": [-0.11363, 8.90002, -3.14082], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [31, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [2, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [35, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 2], "uv_size": [0.75, 0.25]}, + "up": {"uv": [3, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 3.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.36931, 8.67503, -3.02373], + "size": [0.25568, 0.22726, 0.79543], + "pivot": [-0.24146, 8.67503, -2.68283], + "rotation": [2.5, 0, 0], + "uv": { + "north": {"uv": [32, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [4, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [35, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 4], "uv_size": [0.75, 0.25]}, + "up": {"uv": [5, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 5.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.36849, 8.9031, -3.02292], + "size": [0.25404, 0.16882, 2.61193], + "inflate": -0.001, + "pivot": [-0.24146, 8.67503, -2.68283], + "rotation": [2.5, 0, 0], + "uv": { + "north": {"uv": [33, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 0], "uv_size": [2.5, 0.25]}, + "south": {"uv": [35, 33], "uv_size": [0.25, 0.25]}, + "west": {"uv": [11, 1], "uv_size": [2.5, 0.25]}, + "up": {"uv": [1, 11], "uv_size": [0.25, 2.5]}, + "down": {"uv": [11, 4.5], "uv_size": [0.25, -2.5]} + } + }, + { + "origin": [-0.36849, 9.07356, -1.43205], + "size": [0.25404, 0.05517, 1.02106], + "inflate": -0.001, + "pivot": [-0.24146, 8.67503, -2.68283], + "rotation": [2.5, 0, 0], + "uv": { + "north": {"uv": [34, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 16], "uv_size": [1, 0.25]}, + "south": {"uv": [35, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [17, 17], "uv_size": [1, 0.25]}, + "up": {"uv": [0, 18], "uv_size": [0.25, 1]}, + "down": {"uv": [18, 1], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 8.69484, -2.22874], + "size": [0.25568, 0.22727, 0.45453], + "pivot": [-0.24146, 8.69484, -2.22874], + "rotation": [8.25, 0, 0], + "uv": { + "north": {"uv": [35, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 9], "uv_size": [0.5, 0.25]}, + "south": {"uv": [0, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 10], "uv_size": [0.25, 0.5]}, + "down": {"uv": [11, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 8.75772, -1.81153], + "size": [0.25568, 0.22726, 0.68179], + "pivot": [-0.24146, 8.98498, -1.81153], + "rotation": [5.25, 0, 0], + "uv": { + "north": {"uv": [36, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [1, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 6], "uv_size": [0.75, 0.25]}, + "up": {"uv": [7, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 7.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.36931, 8.8201, -1.13259], + "size": [0.25568, 0.22726, 0.90906], + "pivot": [-0.24146, 9.04736, -1.13259], + "rotation": [1, 0, 0], + "uv": { + "north": {"uv": [36, 1], "uv_size": [0.25, 0.25]}, + "east": {"uv": [1, 18], "uv_size": [1, 0.25]}, + "south": {"uv": [2, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 1], "uv_size": [1, 0.25]}, + "up": {"uv": [2, 18], "uv_size": [0.25, 1]}, + "down": {"uv": [18, 3], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 8.83597, -0.22367], + "size": [0.25568, 0.22726, 0.45453], + "pivot": [-0.24146, 9.06323, -0.22367], + "rotation": [-3.25, 0, 0], + "uv": { + "north": {"uv": [36, 2], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 11], "uv_size": [0.5, 0.25]}, + "south": {"uv": [3, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 12], "uv_size": [0.25, 0.5]}, + "down": {"uv": [13, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 8.81021, 0.23013], + "size": [0.25568, 0.22726, 0.6818], + "pivot": [-0.24146, 9.03747, 0.23013], + "rotation": [-6.25, 0, 0], + "uv": { + "north": {"uv": [36, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [4, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 8], "uv_size": [0.75, 0.25]}, + "up": {"uv": [9, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 9.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.36931, 8.73597, 0.90787], + "size": [0.25568, 0.22727, 0.56817], + "pivot": [-0.24146, 8.96324, 0.90787], + "rotation": [-10.25, 0, 0], + "uv": { + "north": {"uv": [36, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 13], "uv_size": [0.5, 0.25]}, + "south": {"uv": [5, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 14], "uv_size": [0.25, 0.5]}, + "down": {"uv": [15, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 8.63487, 1.46699], + "size": [0.25568, 0.22726, 0.45453], + "pivot": [-0.24146, 8.86213, 1.46699], + "rotation": [-13.5, 0, 0], + "uv": { + "north": {"uv": [36, 5], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 15], "uv_size": [0.5, 0.25]}, + "south": {"uv": [6, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 16], "uv_size": [0.25, 0.5]}, + "down": {"uv": [17, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36849, 8.20171, 1.86165], + "size": [0.25404, 0.50972, 2.44148], + "inflate": -0.001, + "pivot": [-0.24146, 8.41395, 3.0824], + "rotation": [-23.25, 0, 0], + "uv": { + "north": {"uv": [27, 17], "uv_size": [0.25, 0.5]}, + "east": {"uv": [0, 4], "uv_size": [2.5, 0.5]}, + "south": {"uv": [18, 27], "uv_size": [0.25, 0.5]}, + "west": {"uv": [3, 4], "uv_size": [2.5, 0.5]}, + "up": {"uv": [5, 11], "uv_size": [0.25, 2.5]}, + "down": {"uv": [6, 13.5], "uv_size": [0.25, -2.5]} + } + }, + { + "origin": [-0.36931, 8.52876, 1.90895], + "size": [0.25568, 0.22726, 1.0227], + "pivot": [-0.24146, 8.75602, 1.90895], + "rotation": [-18.25, 0, 0], + "uv": { + "north": {"uv": [36, 6], "uv_size": [0.25, 0.25]}, + "east": {"uv": [3, 18], "uv_size": [1, 0.25]}, + "south": {"uv": [7, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 3], "uv_size": [1, 0.25]}, + "up": {"uv": [4, 18], "uv_size": [0.25, 1]}, + "down": {"uv": [18, 5], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 8.2085, 2.88019], + "size": [0.25568, 0.22726, 0.90906], + "pivot": [-0.24146, 8.43576, 2.88019], + "rotation": [-23.75, 0, 0], + "uv": { + "north": {"uv": [36, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 18], "uv_size": [1, 0.25]}, + "south": {"uv": [8, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 5], "uv_size": [1, 0.25]}, + "up": {"uv": [6, 18], "uv_size": [0.25, 1]}, + "down": {"uv": [18, 7], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 7.84236, 3.71227], + "size": [0.25568, 0.2289, 0.59946], + "pivot": [-0.24146, 8.06962, 3.71227], + "rotation": [-43.5, 0, 0], + "uv": { + "north": {"uv": [36, 8], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 18], "uv_size": [0.5, 0.25]}, + "south": {"uv": [9, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [19, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 19], "uv_size": [0.25, 0.5]}, + "down": {"uv": [20, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 7.26487, 3.7634], + "size": [0.25568, 0.22726, 0.22726], + "pivot": [-0.24146, 7.49213, 3.99066], + "rotation": [-88.5, 0, 0], + "uv": { + "north": {"uv": [36, 9], "uv_size": [0.25, 0.25]}, + "east": {"uv": [10, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [36, 10], "uv_size": [0.25, 0.25]}, + "west": {"uv": [11, 36], "uv_size": [0.25, 0.25]}, + "up": {"uv": [36, 11], "uv_size": [0.25, 0.25]}, + "down": {"uv": [12, 36.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37998, 8.73528, -3.53853], + "size": [0.26635, 0.32948, 0.22726], + "uv": { + "north": {"uv": [36, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [36, 13], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 36], "uv_size": [0.25, 0.25]}, + "up": {"uv": [36, 14], "uv_size": [0.25, 0.25]}, + "down": {"uv": [15, 36.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.36931, 8.50231, -3.30556], + "size": [0.25568, 0.22726, 0.32948], + "pivot": [-0.11363, 8.90002, -3.14082], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [36, 15], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [36, 16], "uv_size": [0.25, 0.25]}, + "west": {"uv": [17, 36], "uv_size": [0.25, 0.25]}, + "up": {"uv": [36, 17], "uv_size": [0.25, 0.25]}, + "down": {"uv": [18, 36.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.35864, 8.50231, -3.30556], + "size": [0.24501, 0.79542, 0.32948], + "uv": { + "north": {"uv": [10, 22], "uv_size": [0.25, 0.75]}, + "east": {"uv": [22, 10], "uv_size": [0.25, 0.75]}, + "south": {"uv": [11, 22], "uv_size": [0.25, 0.75]}, + "west": {"uv": [22, 11], "uv_size": [0.25, 0.75]}, + "up": {"uv": [36, 18], "uv_size": [0.25, 0.25]}, + "down": {"uv": [19, 36.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.36931, 9.07047, -2.97608], + "size": [0.25568, 0.22726, 0.45453], + "pivot": [-0.24146, 9.29773, -2.97608], + "rotation": [-20, 0, 0], + "uv": { + "north": {"uv": [36, 19], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 20], "uv_size": [0.5, 0.25]}, + "south": {"uv": [20, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [21, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 21], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 8.92871, -2.62669], + "size": [0.25568, 0.22726, 0.45453], + "pivot": [-0.24146, 8.92871, -2.62669], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [36, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [21, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [23, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 23], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 8.90889, -2.1726], + "size": [0.25568, 0.22727, 0.45454], + "pivot": [-0.24146, 8.90889, -2.1726], + "rotation": [9, 0, 0], + "uv": { + "north": {"uv": [36, 21], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 24], "uv_size": [0.5, 0.25]}, + "south": {"uv": [22, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [25, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 25], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 8.97999, -1.72366], + "size": [0.25568, 0.22728, 0.45453], + "pivot": [-0.24146, 8.97999, -1.72366], + "rotation": [23, 0, 0], + "uv": { + "north": {"uv": [36, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [23, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [27, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [0, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 0.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 9.13952, -1.39406], + "size": [0.25568, 0.22727, 0.90906], + "pivot": [-0.24146, 9.36679, -1.39406], + "rotation": [5.25, 0, 0], + "uv": { + "north": {"uv": [36, 23], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 18], "uv_size": [1, 0.25]}, + "south": {"uv": [24, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 7], "uv_size": [1, 0.25]}, + "up": {"uv": [8, 18], "uv_size": [0.25, 1]}, + "down": {"uv": [18, 9], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 9.2227, -0.48881], + "size": [0.25568, 0.22727, 0.45453], + "pivot": [-0.24146, 9.44997, -0.48881], + "rotation": [2, 0, 0], + "uv": { + "north": {"uv": [36, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [1, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [25, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 1], "uv_size": [0.5, 0.25]}, + "up": {"uv": [2, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 2.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 9.23857, -0.03456], + "size": [0.25568, 0.22727, 0.45453], + "pivot": [-0.24146, 9.46584, -0.03456], + "rotation": [-0.5, 0, 0], + "uv": { + "north": {"uv": [36, 25], "uv_size": [0.25, 0.25]}, + "east": {"uv": [3, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [26, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 3], "uv_size": [0.5, 0.25]}, + "up": {"uv": [4, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 4.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 9.12098, 0.41996], + "size": [0.25568, 0.34089, 0.90906], + "pivot": [-0.24146, 9.46187, 0.41996], + "rotation": [-6, 0, 0], + "uv": { + "north": {"uv": [36, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 18], "uv_size": [1, 0.25]}, + "south": {"uv": [27, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 9], "uv_size": [1, 0.25]}, + "up": {"uv": [10, 18], "uv_size": [0.25, 1]}, + "down": {"uv": [18, 11], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 9.13957, 1.32404], + "size": [0.25568, 0.22727, 0.90906], + "pivot": [-0.24146, 9.36684, 1.32404], + "rotation": [-11, 0, 0], + "uv": { + "north": {"uv": [36, 27], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 18], "uv_size": [1, 0.25]}, + "south": {"uv": [28, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 11], "uv_size": [1, 0.25]}, + "up": {"uv": [12, 18], "uv_size": [0.25, 1]}, + "down": {"uv": [18, 13], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 8.96612, 2.21639], + "size": [0.25568, 0.22727, 0.90907], + "pivot": [-0.24146, 9.19339, 2.21639], + "rotation": [-18.5, 0, 0], + "uv": { + "north": {"uv": [36, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 18], "uv_size": [1, 0.25]}, + "south": {"uv": [29, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 13], "uv_size": [1, 0.25]}, + "up": {"uv": [14, 18], "uv_size": [0.25, 1]}, + "down": {"uv": [18, 15], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 8.67768, 3.0785], + "size": [0.25568, 0.22727, 0.90906], + "pivot": [-0.24146, 8.90495, 3.0785], + "rotation": [-23.5, 0, 0], + "uv": { + "north": {"uv": [36, 29], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 18], "uv_size": [1, 0.25]}, + "south": {"uv": [30, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 15], "uv_size": [1, 0.25]}, + "up": {"uv": [16, 18], "uv_size": [0.25, 1]}, + "down": {"uv": [18, 17], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 8.31519, 3.91216], + "size": [0.25568, 0.22726, 0.45454], + "pivot": [-0.24146, 8.54245, 3.91216], + "rotation": [-28.5, 0, 0], + "uv": { + "north": {"uv": [36, 30], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [31, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 5], "uv_size": [0.5, 0.25]}, + "up": {"uv": [6, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 6.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 8.0983, 4.3116], + "size": [0.25568, 0.22726, 0.3409], + "pivot": [-0.24146, 8.32556, 4.3116], + "rotation": [-43.5, 0, 0], + "uv": { + "north": {"uv": [36, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [36, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [33, 36], "uv_size": [0.25, 0.25]}, + "up": {"uv": [36, 33], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 36.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.36931, 7.729, 4.42524], + "size": [0.25568, 0.3693, 0.22726], + "pivot": [-0.24146, 8.32556, 4.3116], + "rotation": [-43.5, 0, 0], + "uv": { + "north": {"uv": [36, 34], "uv_size": [0.25, 0.25]}, + "east": {"uv": [35, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [36, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [36, 36], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 37], "uv_size": [0.25, 0.25]}, + "down": {"uv": [37, 0.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.42613, 8.92844, -0.52727], + "size": [0.36931, 0.36929, 0.79543], + "uv": { + "north": {"uv": [1, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [37, 1], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 12], "uv_size": [0.75, 0.25]}, + "up": {"uv": [13, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 13.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.42613, 8.92844, 0.26816], + "size": [0.36931, 0.36929, 0.6818], + "pivot": [-0.24146, 9.29773, 0.26816], + "rotation": [-5, 0, 0], + "uv": { + "north": {"uv": [2, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [37, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 14], "uv_size": [0.75, 0.25]}, + "up": {"uv": [15, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 15.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.42613, 8.869, 0.94736], + "size": [0.36931, 0.36932, 0.6818], + "pivot": [-0.24146, 9.23832, 0.94736], + "rotation": [-10, 0, 0], + "uv": { + "north": {"uv": [3, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [37, 3], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 16], "uv_size": [0.75, 0.25]}, + "up": {"uv": [17, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 17.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.42613, 8.75061, 1.61881], + "size": [0.36931, 0.36932, 1.19315], + "pivot": [-0.24146, 9.11993, 1.61881], + "rotation": [-16.5, 0, 0], + "uv": { + "north": {"uv": [4, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 4], "uv_size": [1.25, 0.25]}, + "south": {"uv": [37, 4], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 14], "uv_size": [1.25, 0.25]}, + "up": {"uv": [7, 14], "uv_size": [0.25, 1.25]}, + "down": {"uv": [14, 8.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.42613, 8.86424, 2.81196], + "size": [0.36931, 0.14204, 0.11363], + "pivot": [-0.24146, 9.11993, 1.61881], + "rotation": [-16.5, 0, 0], + "uv": { + "north": {"uv": [5, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [37, 5], "uv_size": [0.25, 0.25]}, + "south": {"uv": [6, 37], "uv_size": [0.25, 0.25]}, + "west": {"uv": [37, 6], "uv_size": [0.25, 0.25]}, + "up": {"uv": [7, 37], "uv_size": [0.25, 0.25]}, + "down": {"uv": [37, 7.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.42613, 8.63983, 2.72587], + "size": [0.36931, 0.16069, 0.11363], + "pivot": [-0.24146, 8.63983, 2.8395], + "rotation": [28.5, 0, 0], + "uv": { + "north": {"uv": [8, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [37, 8], "uv_size": [0.25, 0.25]}, + "south": {"uv": [9, 37], "uv_size": [0.25, 0.25]}, + "west": {"uv": [37, 9], "uv_size": [0.25, 0.25]}, + "up": {"uv": [10, 37], "uv_size": [0.25, 0.25]}, + "down": {"uv": [37, 10.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.42613, 8.34293, 2.68552], + "size": [0.36931, 0.1607, 0.11364], + "pivot": [-0.24146, 8.50363, 2.79916], + "rotation": [-61.5, 0, 0], + "uv": { + "north": {"uv": [11, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [37, 11], "uv_size": [0.25, 0.25]}, + "south": {"uv": [12, 37], "uv_size": [0.25, 0.25]}, + "west": {"uv": [37, 12], "uv_size": [0.25, 0.25]}, + "up": {"uv": [13, 37], "uv_size": [0.25, 0.25]}, + "down": {"uv": [37, 13.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.42613, 9.04207, -0.6409], + "size": [0.36931, 0.14203, 0.11363], + "uv": { + "north": {"uv": [14, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [37, 14], "uv_size": [0.25, 0.25]}, + "south": {"uv": [15, 37], "uv_size": [0.25, 0.25]}, + "west": {"uv": [37, 15], "uv_size": [0.25, 0.25]}, + "up": {"uv": [16, 37], "uv_size": [0.25, 0.25]}, + "down": {"uv": [37, 16.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.42613, 8.88137, -0.6409], + "size": [0.36931, 0.1607, 0.11363], + "pivot": [-0.24146, 9.04207, -0.6409], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [17, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [37, 17], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 37], "uv_size": [0.25, 0.25]}, + "west": {"uv": [37, 18], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 37], "uv_size": [0.25, 0.25]}, + "down": {"uv": [37, 19.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.42613, 9.1841, -0.6409], + "size": [0.36931, 0.16071, 0.11363], + "pivot": [-0.24146, 9.1841, -0.6409], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [20, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [37, 20], "uv_size": [0.25, 0.25]}, + "south": {"uv": [21, 37], "uv_size": [0.25, 0.25]}, + "west": {"uv": [37, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [22, 37], "uv_size": [0.25, 0.25]}, + "down": {"uv": [37, 22.25], "uv_size": [0.25, -0.25]} + } + } + ] + }, + { + "name": "octagon", + "parent": "down", + "pivot": [0.11364, 8.90002, -3.14082], + "cubes": [ + { + "origin": [0.11364, 8.73528, -3.53853], + "size": [0.25566, 0.32948, 0.79543], + "pivot": [0.11364, 8.90002, -3.14082], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [23, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [37, 23], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 18], "uv_size": [0.75, 0.25]}, + "up": {"uv": [19, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 19.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.11364, 8.67503, -3.02373], + "size": [0.25566, 0.22726, 0.79543], + "pivot": [0.24147, 8.67503, -2.68283], + "rotation": [2.5, 0, 0], + "uv": { + "north": {"uv": [24, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [20, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [37, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 20], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 21.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.11446, 8.9031, -3.02292], + "size": [0.25403, 0.16882, 2.61193], + "inflate": -0.001, + "pivot": [0.24147, 8.67503, -2.68283], + "rotation": [2.5, 0, 0], + "uv": { + "north": {"uv": [25, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 7], "uv_size": [2.5, 0.25]}, + "south": {"uv": [37, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [11, 8], "uv_size": [2.5, 0.25]}, + "up": {"uv": [7, 11], "uv_size": [0.25, 2.5]}, + "down": {"uv": [11, 11.5], "uv_size": [0.25, -2.5]} + } + }, + { + "origin": [0.11446, 9.07356, -1.43205], + "size": [0.25403, 0.05517, 1.02106], + "inflate": -0.001, + "pivot": [0.24147, 8.67503, -2.68283], + "rotation": [2.5, 0, 0], + "uv": { + "north": {"uv": [26, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 18], "uv_size": [1, 0.25]}, + "south": {"uv": [37, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 17], "uv_size": [1, 0.25]}, + "up": {"uv": [18, 18], "uv_size": [0.25, 1]}, + "down": {"uv": [0, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 8.69484, -2.22874], + "size": [0.25566, 0.22727, 0.45453], + "pivot": [0.24147, 8.69484, -2.22874], + "rotation": [8.25, 0, 0], + "uv": { + "north": {"uv": [27, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [37, 27], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 7], "uv_size": [0.5, 0.25]}, + "up": {"uv": [8, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 8.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 8.75772, -1.81153], + "size": [0.25566, 0.22726, 0.68179], + "pivot": [0.24147, 8.98498, -1.81153], + "rotation": [5.25, 0, 0], + "uv": { + "north": {"uv": [28, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [37, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 23], "uv_size": [0.75, 0.25]}, + "up": {"uv": [23, 0], "uv_size": [0.25, 0.75]}, + "down": {"uv": [1, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.11364, 8.8201, -1.13259], + "size": [0.25566, 0.22726, 0.90906], + "pivot": [0.24147, 9.04736, -1.13259], + "rotation": [1, 0, 0], + "uv": { + "north": {"uv": [29, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 0], "uv_size": [1, 0.25]}, + "south": {"uv": [37, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [1, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 1], "uv_size": [0.25, 1]}, + "down": {"uv": [2, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 8.83597, -0.22367], + "size": [0.25566, 0.22726, 0.45453], + "pivot": [0.24147, 9.06323, -0.22367], + "rotation": [-3.25, 0, 0], + "uv": { + "north": {"uv": [30, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [37, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 9], "uv_size": [0.5, 0.25]}, + "up": {"uv": [10, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 10.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 8.81021, 0.23013], + "size": [0.25566, 0.22726, 0.6818], + "pivot": [0.24147, 9.03747, 0.23013], + "rotation": [-6.25, 0, 0], + "uv": { + "north": {"uv": [31, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 1], "uv_size": [0.75, 0.25]}, + "south": {"uv": [37, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 23], "uv_size": [0.75, 0.25]}, + "up": {"uv": [23, 2], "uv_size": [0.25, 0.75]}, + "down": {"uv": [3, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.11364, 8.73597, 0.90787], + "size": [0.25566, 0.22727, 0.56817], + "pivot": [0.24147, 8.96324, 0.90787], + "rotation": [-10.25, 0, 0], + "uv": { + "north": {"uv": [32, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [37, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 11], "uv_size": [0.5, 0.25]}, + "up": {"uv": [12, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 12.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 8.63487, 1.46699], + "size": [0.25566, 0.22726, 0.45453], + "pivot": [0.24147, 8.86213, 1.46699], + "rotation": [-13.5, 0, 0], + "uv": { + "north": {"uv": [33, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [37, 33], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 13], "uv_size": [0.5, 0.25]}, + "up": {"uv": [14, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 14.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11446, 8.20171, 1.86165], + "size": [0.25403, 0.50972, 2.44148], + "inflate": -0.001, + "pivot": [0.24147, 8.41395, 3.0824], + "rotation": [-23.25, 0, 0], + "uv": { + "north": {"uv": [15, 28], "uv_size": [0.25, 0.5]}, + "east": {"uv": [0, 5], "uv_size": [2.5, 0.5]}, + "south": {"uv": [28, 15], "uv_size": [0.25, 0.5]}, + "west": {"uv": [5, 0], "uv_size": [2.5, 0.5]}, + "up": {"uv": [2, 12], "uv_size": [0.25, 2.5]}, + "down": {"uv": [12, 4.5], "uv_size": [0.25, -2.5]} + } + }, + { + "origin": [0.11364, 8.52876, 1.90895], + "size": [0.25566, 0.22726, 1.0227], + "pivot": [0.24147, 8.75602, 1.90895], + "rotation": [-18.25, 0, 0], + "uv": { + "north": {"uv": [34, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 2], "uv_size": [1, 0.25]}, + "south": {"uv": [37, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [3, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 3], "uv_size": [0.25, 1]}, + "down": {"uv": [4, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 8.2085, 2.88019], + "size": [0.25566, 0.22726, 0.90906], + "pivot": [0.24147, 8.43576, 2.88019], + "rotation": [-23.75, 0, 0], + "uv": { + "north": {"uv": [35, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 4], "uv_size": [1, 0.25]}, + "south": {"uv": [37, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 5], "uv_size": [0.25, 1]}, + "down": {"uv": [6, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 7.84236, 3.71227], + "size": [0.25566, 0.2289, 0.59946], + "pivot": [0.24147, 8.06962, 3.71227], + "rotation": [-43.5, 0, 0], + "uv": { + "north": {"uv": [36, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [37, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 16], "uv_size": [0.5, 0.25]}, + "up": {"uv": [17, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 17.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 7.26487, 3.7634], + "size": [0.25566, 0.22726, 0.22726], + "pivot": [0.24147, 7.49213, 3.99066], + "rotation": [-88.5, 0, 0], + "uv": { + "north": {"uv": [37, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [0, 38], "uv_size": [0.25, 0.25]}, + "south": {"uv": [38, 0], "uv_size": [0.25, 0.25]}, + "west": {"uv": [1, 38], "uv_size": [0.25, 0.25]}, + "up": {"uv": [38, 1], "uv_size": [0.25, 0.25]}, + "down": {"uv": [2, 38.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.11364, 8.73528, -3.53853], + "size": [0.26633, 0.32948, 0.22726], + "uv": { + "north": {"uv": [38, 2], "uv_size": [0.25, 0.25]}, + "east": {"uv": [3, 38], "uv_size": [0.25, 0.25]}, + "south": {"uv": [38, 3], "uv_size": [0.25, 0.25]}, + "west": {"uv": [4, 38], "uv_size": [0.25, 0.25]}, + "up": {"uv": [38, 4], "uv_size": [0.25, 0.25]}, + "down": {"uv": [5, 38.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.11364, 8.50231, -3.30556], + "size": [0.25566, 0.22726, 0.32948], + "pivot": [0.11364, 8.90002, -3.14082], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [38, 5], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 38], "uv_size": [0.25, 0.25]}, + "south": {"uv": [38, 6], "uv_size": [0.25, 0.25]}, + "west": {"uv": [7, 38], "uv_size": [0.25, 0.25]}, + "up": {"uv": [38, 7], "uv_size": [0.25, 0.25]}, + "down": {"uv": [8, 38.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.11364, 8.50231, -3.30556], + "size": [0.24499, 0.79542, 0.32948], + "uv": { + "north": {"uv": [23, 3], "uv_size": [0.25, 0.75]}, + "east": {"uv": [4, 23], "uv_size": [0.25, 0.75]}, + "south": {"uv": [23, 4], "uv_size": [0.25, 0.75]}, + "west": {"uv": [5, 23], "uv_size": [0.25, 0.75]}, + "up": {"uv": [38, 8], "uv_size": [0.25, 0.25]}, + "down": {"uv": [9, 38.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.11364, 9.07047, -2.97608], + "size": [0.25566, 0.22726, 0.45453], + "pivot": [0.24147, 9.29773, -2.97608], + "rotation": [-20, 0, 0], + "uv": { + "north": {"uv": [38, 9], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [10, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 18], "uv_size": [0.5, 0.25]}, + "up": {"uv": [19, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 19.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 8.92871, -2.62669], + "size": [0.25566, 0.22726, 0.45453], + "pivot": [0.24147, 8.92871, -2.62669], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [38, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [20, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [11, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 20], "uv_size": [0.5, 0.25]}, + "up": {"uv": [21, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 21.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 8.90889, -2.1726], + "size": [0.25566, 0.22727, 0.45454], + "pivot": [0.24147, 8.90889, -2.1726], + "rotation": [9, 0, 0], + "uv": { + "north": {"uv": [38, 11], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [12, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 22], "uv_size": [0.5, 0.25]}, + "up": {"uv": [23, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 23.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 8.97999, -1.72366], + "size": [0.25566, 0.22728, 0.45453], + "pivot": [0.24147, 8.97999, -1.72366], + "rotation": [23, 0, 0], + "uv": { + "north": {"uv": [38, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [13, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 24], "uv_size": [0.5, 0.25]}, + "up": {"uv": [25, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 25.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 9.13952, -1.39406], + "size": [0.25566, 0.22727, 0.90906], + "pivot": [0.24147, 9.36679, -1.39406], + "rotation": [5.25, 0, 0], + "uv": { + "north": {"uv": [38, 13], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 6], "uv_size": [1, 0.25]}, + "south": {"uv": [14, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [7, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 7], "uv_size": [0.25, 1]}, + "down": {"uv": [8, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 9.2227, -0.48881], + "size": [0.25566, 0.22727, 0.45453], + "pivot": [0.24147, 9.44997, -0.48881], + "rotation": [2, 0, 0], + "uv": { + "north": {"uv": [38, 14], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [15, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 26], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 9.23857, -0.03456], + "size": [0.25566, 0.22727, 0.45453], + "pivot": [0.24147, 9.46584, -0.03456], + "rotation": [-0.5, 0, 0], + "uv": { + "north": {"uv": [38, 15], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [16, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 29], "uv_size": [0.5, 0.25]}, + "up": {"uv": [29, 0], "uv_size": [0.25, 0.5]}, + "down": {"uv": [1, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 9.12098, 0.41996], + "size": [0.25566, 0.34089, 0.90906], + "pivot": [0.24147, 9.46187, 0.41996], + "rotation": [-6, 0, 0], + "uv": { + "north": {"uv": [38, 16], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 8], "uv_size": [1, 0.25]}, + "south": {"uv": [17, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 9], "uv_size": [0.25, 1]}, + "down": {"uv": [10, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 9.13957, 1.32404], + "size": [0.25566, 0.22727, 0.90906], + "pivot": [0.24147, 9.36684, 1.32404], + "rotation": [-11, 0, 0], + "uv": { + "north": {"uv": [38, 17], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 10], "uv_size": [1, 0.25]}, + "south": {"uv": [18, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [11, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 11], "uv_size": [0.25, 1]}, + "down": {"uv": [12, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 8.96612, 2.21639], + "size": [0.25566, 0.22727, 0.90907], + "pivot": [0.24147, 9.19339, 2.21639], + "rotation": [-18.5, 0, 0], + "uv": { + "north": {"uv": [38, 18], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 12], "uv_size": [1, 0.25]}, + "south": {"uv": [19, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [13, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 13], "uv_size": [0.25, 1]}, + "down": {"uv": [14, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 8.67768, 3.0785], + "size": [0.25566, 0.22727, 0.90906], + "pivot": [0.24147, 8.90495, 3.0785], + "rotation": [-23.5, 0, 0], + "uv": { + "north": {"uv": [38, 19], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 14], "uv_size": [1, 0.25]}, + "south": {"uv": [20, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 15], "uv_size": [0.25, 1]}, + "down": {"uv": [16, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 8.31519, 3.91216], + "size": [0.25566, 0.22726, 0.45454], + "pivot": [0.24147, 8.54245, 3.91216], + "rotation": [-28.5, 0, 0], + "uv": { + "north": {"uv": [38, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 1], "uv_size": [0.5, 0.25]}, + "south": {"uv": [21, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 29], "uv_size": [0.5, 0.25]}, + "up": {"uv": [29, 2], "uv_size": [0.25, 0.5]}, + "down": {"uv": [3, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 8.0983, 4.3116], + "size": [0.25566, 0.22726, 0.3409], + "pivot": [0.24147, 8.32556, 4.3116], + "rotation": [-43.5, 0, 0], + "uv": { + "north": {"uv": [38, 21], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 38], "uv_size": [0.25, 0.25]}, + "south": {"uv": [38, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [23, 38], "uv_size": [0.25, 0.25]}, + "up": {"uv": [38, 23], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 38.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.11364, 7.729, 4.42524], + "size": [0.25566, 0.3693, 0.22726], + "pivot": [0.24147, 8.32556, 4.3116], + "rotation": [-43.5, 0, 0], + "uv": { + "north": {"uv": [38, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 38], "uv_size": [0.25, 0.25]}, + "south": {"uv": [38, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 38], "uv_size": [0.25, 0.25]}, + "up": {"uv": [38, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [27, 38.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.05683, 8.92844, -0.52727], + "size": [0.36929, 0.36929, 0.79543], + "uv": { + "north": {"uv": [38, 27], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 5], "uv_size": [0.75, 0.25]}, + "south": {"uv": [28, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 23], "uv_size": [0.75, 0.25]}, + "up": {"uv": [23, 6], "uv_size": [0.25, 0.75]}, + "down": {"uv": [7, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.05683, 8.92844, 0.26816], + "size": [0.36929, 0.36929, 0.6818], + "pivot": [0.24147, 9.29773, 0.26816], + "rotation": [-5, 0, 0], + "uv": { + "north": {"uv": [38, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 7], "uv_size": [0.75, 0.25]}, + "south": {"uv": [29, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 23], "uv_size": [0.75, 0.25]}, + "up": {"uv": [23, 8], "uv_size": [0.25, 0.75]}, + "down": {"uv": [9, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.05683, 8.869, 0.94736], + "size": [0.36929, 0.36932, 0.6818], + "pivot": [0.24147, 9.23832, 0.94736], + "rotation": [-10, 0, 0], + "uv": { + "north": {"uv": [38, 29], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 9], "uv_size": [0.75, 0.25]}, + "south": {"uv": [30, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 23], "uv_size": [0.75, 0.25]}, + "up": {"uv": [23, 10], "uv_size": [0.25, 0.75]}, + "down": {"uv": [11, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.05683, 8.75061, 1.61881], + "size": [0.36929, 0.36932, 1.19315], + "pivot": [0.24147, 9.11993, 1.61881], + "rotation": [-16.5, 0, 0], + "uv": { + "north": {"uv": [38, 30], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 5], "uv_size": [1.25, 0.25]}, + "south": {"uv": [31, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 10], "uv_size": [1.25, 0.25]}, + "up": {"uv": [14, 11], "uv_size": [0.25, 1.25]}, + "down": {"uv": [13, 15.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.05683, 8.86424, 2.81196], + "size": [0.36929, 0.14204, 0.11363], + "pivot": [0.24147, 9.11993, 1.61881], + "rotation": [-16.5, 0, 0], + "uv": { + "north": {"uv": [38, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 38], "uv_size": [0.25, 0.25]}, + "south": {"uv": [38, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [33, 38], "uv_size": [0.25, 0.25]}, + "up": {"uv": [38, 33], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 38.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.05683, 8.63983, 2.72587], + "size": [0.36929, 0.16069, 0.11363], + "pivot": [0.24147, 8.63983, 2.8395], + "rotation": [28.5, 0, 0], + "uv": { + "north": {"uv": [38, 34], "uv_size": [0.25, 0.25]}, + "east": {"uv": [35, 38], "uv_size": [0.25, 0.25]}, + "south": {"uv": [38, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [36, 38], "uv_size": [0.25, 0.25]}, + "up": {"uv": [38, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [37, 38.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.05683, 8.34293, 2.68552], + "size": [0.36929, 0.1607, 0.11364], + "pivot": [0.24147, 8.50363, 2.79916], + "rotation": [-61.5, 0, 0], + "uv": { + "north": {"uv": [38, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 38], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 39], "uv_size": [0.25, 0.25]}, + "west": {"uv": [39, 0], "uv_size": [0.25, 0.25]}, + "up": {"uv": [1, 39], "uv_size": [0.25, 0.25]}, + "down": {"uv": [39, 1.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.05683, 9.04207, -0.6409], + "size": [0.36929, 0.14203, 0.11363], + "uv": { + "north": {"uv": [2, 39], "uv_size": [0.25, 0.25]}, + "east": {"uv": [39, 2], "uv_size": [0.25, 0.25]}, + "south": {"uv": [3, 39], "uv_size": [0.25, 0.25]}, + "west": {"uv": [39, 3], "uv_size": [0.25, 0.25]}, + "up": {"uv": [4, 39], "uv_size": [0.25, 0.25]}, + "down": {"uv": [39, 4.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.05683, 8.88137, -0.6409], + "size": [0.36929, 0.1607, 0.11363], + "pivot": [0.24147, 9.04207, -0.6409], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [5, 39], "uv_size": [0.25, 0.25]}, + "east": {"uv": [39, 5], "uv_size": [0.25, 0.25]}, + "south": {"uv": [6, 39], "uv_size": [0.25, 0.25]}, + "west": {"uv": [39, 6], "uv_size": [0.25, 0.25]}, + "up": {"uv": [7, 39], "uv_size": [0.25, 0.25]}, + "down": {"uv": [39, 7.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.05683, 9.1841, -0.6409], + "size": [0.36929, 0.16071, 0.11363], + "pivot": [0.24147, 9.1841, -0.6409], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [8, 39], "uv_size": [0.25, 0.25]}, + "east": {"uv": [39, 8], "uv_size": [0.25, 0.25]}, + "south": {"uv": [9, 39], "uv_size": [0.25, 0.25]}, + "west": {"uv": [39, 9], "uv_size": [0.25, 0.25]}, + "up": {"uv": [10, 39], "uv_size": [0.25, 0.25]}, + "down": {"uv": [39, 10.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.45453, 8.78638, -3.25446], + "size": [0.90906, 0.22727, 0.22727], + "pivot": [0, 8.90002, -3.14082], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [19, 16], "uv_size": [1, 0.25]}, + "east": {"uv": [11, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [17, 19], "uv_size": [1, 0.25]}, + "west": {"uv": [39, 11], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 17], "uv_size": [1, 0.25]}, + "down": {"uv": [18, 19.25], "uv_size": [1, -0.25]} + } + }, + { + "origin": [-0.45453, 7.87732, 3.87602], + "size": [0.90906, 0.22727, 0.22726], + "pivot": [0, 7.99096, 3.98965], + "rotation": [-90, 0, 0], + "uv": { + "north": {"uv": [19, 18], "uv_size": [1, 0.25]}, + "east": {"uv": [12, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [19, 19], "uv_size": [1, 0.25]}, + "west": {"uv": [39, 12], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 20], "uv_size": [1, 0.25]}, + "down": {"uv": [20, 0.25], "uv_size": [1, -0.25]} + } + } + ] + }, + { + "name": "up", + "parent": "weapon", + "pivot": [-0.11363, 9.69545, -2.68628] + }, + { + "name": "octagon2", + "parent": "up", + "pivot": [0.11364, 9.69545, -2.68628], + "cubes": [ + { + "origin": [0.11364, 9.53071, -3.084], + "size": [0.25566, 0.32948, 0.79543], + "pivot": [0.11364, 9.69545, -2.68628], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [32, 1], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 20], "uv_size": [0.75, 0.25]}, + "south": {"uv": [2, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 12], "uv_size": [0.75, 0.25]}, + "up": {"uv": [13, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 13.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.11364, 9.47045, -2.5692], + "size": [0.25566, 0.22727, 0.79543], + "pivot": [0.24147, 9.47045, -2.2283], + "rotation": [2.5, 0, 0], + "uv": { + "north": {"uv": [32, 2], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 20], "uv_size": [0.75, 0.25]}, + "south": {"uv": [3, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 14], "uv_size": [0.75, 0.25]}, + "up": {"uv": [15, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 15.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.11446, 9.69854, -2.56839], + "size": [0.25403, 0.16881, 2.61193], + "inflate": -0.001, + "pivot": [0.24147, 9.47045, -2.2283], + "rotation": [2.5, 0, 0], + "uv": { + "north": {"uv": [32, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 7], "uv_size": [2.5, 0.25]}, + "south": {"uv": [4, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 8], "uv_size": [2.5, 0.25]}, + "up": {"uv": [2, 9], "uv_size": [0.25, 2.5]}, + "down": {"uv": [8, 11.5], "uv_size": [0.25, -2.5]} + } + }, + { + "origin": [0.11446, 9.86899, -0.97752], + "size": [0.25403, 0.05518, 1.02106], + "inflate": -0.001, + "pivot": [0.24147, 9.47045, -2.2283], + "rotation": [2.5, 0, 0], + "uv": { + "north": {"uv": [32, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 7], "uv_size": [1, 0.25]}, + "south": {"uv": [5, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 15], "uv_size": [1, 0.25]}, + "up": {"uv": [15, 8], "uv_size": [0.25, 1]}, + "down": {"uv": [9, 16], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 9.49027, -1.77421], + "size": [0.25566, 0.22727, 0.45453], + "pivot": [0.24147, 9.49027, -1.77421], + "rotation": [8.25, 0, 0], + "uv": { + "north": {"uv": [32, 5], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 11], "uv_size": [0.5, 0.25]}, + "south": {"uv": [6, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 25], "uv_size": [0.5, 0.25]}, + "up": {"uv": [25, 12], "uv_size": [0.25, 0.5]}, + "down": {"uv": [13, 25.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 9.55315, -1.357], + "size": [0.25566, 0.22726, 0.68179], + "pivot": [0.24147, 9.78041, -1.357], + "rotation": [5.25, 0, 0], + "uv": { + "north": {"uv": [32, 6], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 20], "uv_size": [0.75, 0.25]}, + "south": {"uv": [7, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 16], "uv_size": [0.75, 0.25]}, + "up": {"uv": [17, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 17.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.11364, 9.61552, -0.67806], + "size": [0.25566, 0.22727, 0.90906], + "pivot": [0.24147, 9.84279, -0.67806], + "rotation": [1, 0, 0], + "uv": { + "north": {"uv": [32, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 9], "uv_size": [1, 0.25]}, + "south": {"uv": [8, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 15], "uv_size": [1, 0.25]}, + "up": {"uv": [11, 15], "uv_size": [0.25, 1]}, + "down": {"uv": [15, 12], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 9.63139, 0.23086], + "size": [0.25566, 0.22727, 0.45453], + "pivot": [0.24147, 9.85866, 0.23086], + "rotation": [-3.25, 0, 0], + "uv": { + "north": {"uv": [32, 8], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 13], "uv_size": [0.5, 0.25]}, + "south": {"uv": [9, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 25], "uv_size": [0.5, 0.25]}, + "up": {"uv": [25, 14], "uv_size": [0.25, 0.5]}, + "down": {"uv": [15, 25.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 9.60563, 0.68467], + "size": [0.25566, 0.22727, 0.68179], + "pivot": [0.24147, 9.8329, 0.68467], + "rotation": [-6.25, 0, 0], + "uv": { + "north": {"uv": [32, 9], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 20], "uv_size": [0.75, 0.25]}, + "south": {"uv": [10, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 18], "uv_size": [0.75, 0.25]}, + "up": {"uv": [19, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 19.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.11364, 9.5314, 1.3624], + "size": [0.25566, 0.22726, 0.56817], + "pivot": [0.24147, 9.75866, 1.3624], + "rotation": [-10.25, 0, 0], + "uv": { + "north": {"uv": [32, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 15], "uv_size": [0.5, 0.25]}, + "south": {"uv": [11, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 25], "uv_size": [0.5, 0.25]}, + "up": {"uv": [25, 16], "uv_size": [0.25, 0.5]}, + "down": {"uv": [17, 25.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 9.43029, 1.92152], + "size": [0.25566, 0.22727, 0.45453], + "pivot": [0.24147, 9.65756, 1.92152], + "rotation": [-13.5, 0, 0], + "uv": { + "north": {"uv": [32, 11], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 17], "uv_size": [0.5, 0.25]}, + "south": {"uv": [12, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 25], "uv_size": [0.5, 0.25]}, + "up": {"uv": [25, 18], "uv_size": [0.25, 0.5]}, + "down": {"uv": [19, 25.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11446, 8.99714, 2.31619], + "size": [0.25403, 0.50972, 2.44147], + "inflate": -0.001, + "pivot": [0.24147, 9.20938, 3.53693], + "rotation": [-23.25, 0, 0], + "uv": { + "north": {"uv": [25, 19], "uv_size": [0.25, 0.5]}, + "east": {"uv": [2, 0], "uv_size": [2.5, 0.5]}, + "south": {"uv": [20, 25], "uv_size": [0.25, 0.5]}, + "west": {"uv": [2, 1], "uv_size": [2.5, 0.5]}, + "up": {"uv": [9, 9], "uv_size": [0.25, 2.5]}, + "down": {"uv": [10, 3.5], "uv_size": [0.25, -2.5]} + } + }, + { + "origin": [0.11364, 9.32418, 2.36349], + "size": [0.25566, 0.22728, 1.02269], + "pivot": [0.24147, 9.55146, 2.36349], + "rotation": [-18.25, 0, 0], + "uv": { + "north": {"uv": [32, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 15], "uv_size": [1, 0.25]}, + "south": {"uv": [13, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 12], "uv_size": [1, 0.25]}, + "up": {"uv": [15, 13], "uv_size": [0.25, 1]}, + "down": {"uv": [14, 16], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 9.00393, 3.33472], + "size": [0.25566, 0.22726, 0.90906], + "pivot": [0.24147, 9.23119, 3.33472], + "rotation": [-23.75, 0, 0], + "uv": { + "north": {"uv": [32, 13], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 14], "uv_size": [1, 0.25]}, + "south": {"uv": [14, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 15], "uv_size": [1, 0.25]}, + "up": {"uv": [0, 16], "uv_size": [0.25, 1]}, + "down": {"uv": [16, 1], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 8.6378, 4.1668], + "size": [0.25566, 0.22889, 0.59946], + "pivot": [0.24147, 8.86506, 4.1668], + "rotation": [-43.5, 0, 0], + "uv": { + "north": {"uv": [32, 14], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 20], "uv_size": [0.5, 0.25]}, + "south": {"uv": [15, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [21, 25], "uv_size": [0.5, 0.25]}, + "up": {"uv": [25, 21], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 25.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 8.06031, 4.21793], + "size": [0.25566, 0.22726, 0.22726], + "pivot": [0.24147, 8.28757, 4.44519], + "rotation": [-88.5, 0, 0], + "uv": { + "north": {"uv": [32, 15], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 32], "uv_size": [0.25, 0.25]}, + "south": {"uv": [32, 16], "uv_size": [0.25, 0.25]}, + "west": {"uv": [17, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [32, 17], "uv_size": [0.25, 0.25]}, + "down": {"uv": [18, 32.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.11364, 9.53071, -3.084], + "size": [0.26633, 0.32948, 0.22726], + "uv": { + "north": {"uv": [32, 18], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 32], "uv_size": [0.25, 0.25]}, + "south": {"uv": [32, 19], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [32, 20], "uv_size": [0.25, 0.25]}, + "down": {"uv": [21, 32.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.11364, 9.29773, -2.85103], + "size": [0.25566, 0.22727, 0.32948], + "pivot": [0.11364, 9.69545, -2.68628], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [32, 21], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 32], "uv_size": [0.25, 0.25]}, + "south": {"uv": [32, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [23, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [32, 23], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 32.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.11364, 9.29773, -2.85103], + "size": [0.24499, 0.79543, 0.32948], + "uv": { + "north": {"uv": [20, 20], "uv_size": [0.25, 0.75]}, + "east": {"uv": [0, 21], "uv_size": [0.25, 0.75]}, + "south": {"uv": [21, 0], "uv_size": [0.25, 0.75]}, + "west": {"uv": [1, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [32, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [25, 32.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.11364, 9.8659, -2.52155], + "size": [0.25566, 0.22726, 0.45453], + "pivot": [0.24147, 10.09316, -2.52155], + "rotation": [-20, 0, 0], + "uv": { + "north": {"uv": [32, 25], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [26, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [23, 25], "uv_size": [0.5, 0.25]}, + "up": {"uv": [25, 23], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 25.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 9.72414, -2.17216], + "size": [0.25566, 0.22726, 0.45454], + "pivot": [0.24147, 9.72414, -2.17216], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [32, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 24], "uv_size": [0.5, 0.25]}, + "south": {"uv": [27, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [25, 25], "uv_size": [0.5, 0.25]}, + "up": {"uv": [0, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 0.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 9.70432, -1.71806], + "size": [0.25566, 0.22726, 0.45453], + "pivot": [0.24147, 9.70432, -1.71806], + "rotation": [9, 0, 0], + "uv": { + "north": {"uv": [32, 27], "uv_size": [0.25, 0.25]}, + "east": {"uv": [1, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [28, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 1], "uv_size": [0.5, 0.25]}, + "up": {"uv": [2, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 2.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 9.77543, -1.26913], + "size": [0.25566, 0.22727, 0.45453], + "pivot": [0.24147, 9.77543, -1.26913], + "rotation": [23, 0, 0], + "uv": { + "north": {"uv": [32, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [3, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [29, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 3], "uv_size": [0.5, 0.25]}, + "up": {"uv": [4, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 4.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 9.93495, -0.93953], + "size": [0.25566, 0.22727, 0.90906], + "pivot": [0.24147, 10.16222, -0.93953], + "rotation": [5.25, 0, 0], + "uv": { + "north": {"uv": [32, 29], "uv_size": [0.25, 0.25]}, + "east": {"uv": [1, 16], "uv_size": [1, 0.25]}, + "south": {"uv": [30, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 1], "uv_size": [1, 0.25]}, + "up": {"uv": [2, 16], "uv_size": [0.25, 1]}, + "down": {"uv": [16, 3], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 10.01813, -0.03428], + "size": [0.25566, 0.22727, 0.45453], + "pivot": [0.24147, 10.2454, -0.03428], + "rotation": [2, 0, 0], + "uv": { + "north": {"uv": [32, 30], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [31, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 5], "uv_size": [0.5, 0.25]}, + "up": {"uv": [6, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 6.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 10.034, 0.41997], + "size": [0.25566, 0.22726, 0.45454], + "pivot": [0.24147, 10.26126, 0.41997], + "rotation": [-0.5, 0, 0], + "uv": { + "north": {"uv": [32, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [32, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 7], "uv_size": [0.5, 0.25]}, + "up": {"uv": [8, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 8.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 9.9164, 0.87449], + "size": [0.25566, 0.3409, 0.90906], + "pivot": [0.24147, 10.2573, 0.87449], + "rotation": [-6, 0, 0], + "uv": { + "north": {"uv": [0, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [3, 16], "uv_size": [1, 0.25]}, + "south": {"uv": [33, 0], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 3], "uv_size": [1, 0.25]}, + "up": {"uv": [4, 16], "uv_size": [0.25, 1]}, + "down": {"uv": [16, 5], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 9.935, 1.77857], + "size": [0.25566, 0.22727, 0.90906], + "pivot": [0.24147, 10.16227, 1.77857], + "rotation": [-11, 0, 0], + "uv": { + "north": {"uv": [1, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 16], "uv_size": [1, 0.25]}, + "south": {"uv": [33, 1], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 5], "uv_size": [1, 0.25]}, + "up": {"uv": [6, 16], "uv_size": [0.25, 1]}, + "down": {"uv": [16, 7], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 9.76156, 2.67092], + "size": [0.25566, 0.22727, 0.90907], + "pivot": [0.24147, 9.98883, 2.67092], + "rotation": [-18.5, 0, 0], + "uv": { + "north": {"uv": [2, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 16], "uv_size": [1, 0.25]}, + "south": {"uv": [33, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 7], "uv_size": [1, 0.25]}, + "up": {"uv": [8, 16], "uv_size": [0.25, 1]}, + "down": {"uv": [16, 9], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 9.47311, 3.53303], + "size": [0.25566, 0.22726, 0.90906], + "pivot": [0.24147, 9.70037, 3.53303], + "rotation": [-23.5, 0, 0], + "uv": { + "north": {"uv": [3, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 16], "uv_size": [1, 0.25]}, + "south": {"uv": [33, 3], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 9], "uv_size": [1, 0.25]}, + "up": {"uv": [10, 16], "uv_size": [0.25, 1]}, + "down": {"uv": [16, 11], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.11364, 9.11061, 4.3667], + "size": [0.25566, 0.22727, 0.45453], + "pivot": [0.24147, 9.33788, 4.3667], + "rotation": [-28.5, 0, 0], + "uv": { + "north": {"uv": [4, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [33, 4], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 9], "uv_size": [0.5, 0.25]}, + "up": {"uv": [10, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 10.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.11364, 8.89373, 4.76613], + "size": [0.25566, 0.22726, 0.3409], + "pivot": [0.24147, 9.12099, 4.76613], + "rotation": [-43.5, 0, 0], + "uv": { + "north": {"uv": [5, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [33, 5], "uv_size": [0.25, 0.25]}, + "south": {"uv": [6, 33], "uv_size": [0.25, 0.25]}, + "west": {"uv": [33, 6], "uv_size": [0.25, 0.25]}, + "up": {"uv": [7, 33], "uv_size": [0.25, 0.25]}, + "down": {"uv": [33, 7.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.11364, 8.52443, 4.87977], + "size": [0.25566, 0.3693, 0.22726], + "pivot": [0.24147, 9.12099, 4.76613], + "rotation": [-43.5, 0, 0], + "uv": { + "north": {"uv": [8, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [33, 8], "uv_size": [0.25, 0.25]}, + "south": {"uv": [9, 33], "uv_size": [0.25, 0.25]}, + "west": {"uv": [33, 9], "uv_size": [0.25, 0.25]}, + "up": {"uv": [10, 33], "uv_size": [0.25, 0.25]}, + "down": {"uv": [33, 10.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.05683, 9.72387, -0.07273], + "size": [0.36929, 0.36929, 0.79542], + "uv": { + "north": {"uv": [11, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 1], "uv_size": [0.75, 0.25]}, + "south": {"uv": [33, 11], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 21], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 2], "uv_size": [0.25, 0.75]}, + "down": {"uv": [3, 21.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.05683, 9.72387, 0.72269], + "size": [0.36929, 0.36929, 0.6818], + "pivot": [0.24147, 10.09316, 0.72269], + "rotation": [-5, 0, 0], + "uv": { + "north": {"uv": [12, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 3], "uv_size": [0.75, 0.25]}, + "south": {"uv": [33, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [4, 21], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 4], "uv_size": [0.25, 0.75]}, + "down": {"uv": [5, 21.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.05683, 9.66444, 1.40189], + "size": [0.36929, 0.36931, 0.6818], + "pivot": [0.24147, 10.03375, 1.40189], + "rotation": [-10, 0, 0], + "uv": { + "north": {"uv": [13, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 5], "uv_size": [0.75, 0.25]}, + "south": {"uv": [33, 13], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 21], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 6], "uv_size": [0.25, 0.75]}, + "down": {"uv": [7, 21.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.05683, 9.54603, 2.07335], + "size": [0.36929, 0.36932, 1.19314], + "pivot": [0.24147, 9.91535, 2.07335], + "rotation": [-16.5, 0, 0], + "uv": { + "north": {"uv": [14, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 11], "uv_size": [1.25, 0.25]}, + "south": {"uv": [33, 14], "uv_size": [0.25, 0.25]}, + "west": {"uv": [13, 6], "uv_size": [1.25, 0.25]}, + "up": {"uv": [12, 13], "uv_size": [0.25, 1.25]}, + "down": {"uv": [13, 13.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.05683, 9.65967, 3.26649], + "size": [0.36929, 0.14205, 0.11363], + "pivot": [0.24147, 9.91535, 2.07335], + "rotation": [-16.5, 0, 0], + "uv": { + "north": {"uv": [15, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [33, 15], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 33], "uv_size": [0.25, 0.25]}, + "west": {"uv": [33, 16], "uv_size": [0.25, 0.25]}, + "up": {"uv": [17, 33], "uv_size": [0.25, 0.25]}, + "down": {"uv": [33, 17.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.05683, 9.43526, 3.1804], + "size": [0.36929, 0.16068, 0.11363], + "pivot": [0.24147, 9.43526, 3.29403], + "rotation": [28.5, 0, 0], + "uv": { + "north": {"uv": [18, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [33, 18], "uv_size": [0.25, 0.25]}, + "south": {"uv": [19, 33], "uv_size": [0.25, 0.25]}, + "west": {"uv": [33, 19], "uv_size": [0.25, 0.25]}, + "up": {"uv": [20, 33], "uv_size": [0.25, 0.25]}, + "down": {"uv": [33, 20.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.05683, 9.13836, 3.14005], + "size": [0.36929, 0.1607, 0.11364], + "pivot": [0.24147, 9.29906, 3.25369], + "rotation": [-61.5, 0, 0], + "uv": { + "north": {"uv": [21, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [33, 21], "uv_size": [0.25, 0.25]}, + "south": {"uv": [22, 33], "uv_size": [0.25, 0.25]}, + "west": {"uv": [33, 22], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 33], "uv_size": [0.25, 0.25]}, + "down": {"uv": [33, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.05683, 9.8375, -0.18637], + "size": [0.36929, 0.14203, 0.11364], + "uv": { + "north": {"uv": [24, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [33, 24], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 33], "uv_size": [0.25, 0.25]}, + "west": {"uv": [33, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [26, 33], "uv_size": [0.25, 0.25]}, + "down": {"uv": [33, 26.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.05683, 9.6768, -0.18637], + "size": [0.36929, 0.1607, 0.11364], + "pivot": [0.24147, 9.8375, -0.18637], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [27, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [33, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [28, 33], "uv_size": [0.25, 0.25]}, + "west": {"uv": [33, 28], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 33], "uv_size": [0.25, 0.25]}, + "down": {"uv": [33, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.05683, 9.97953, -0.18637], + "size": [0.36929, 0.1607, 0.11364], + "pivot": [0.24147, 9.97953, -0.18637], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [30, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [33, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 33], "uv_size": [0.25, 0.25]}, + "west": {"uv": [33, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [32, 33], "uv_size": [0.25, 0.25]}, + "down": {"uv": [33, 32.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.45453, 9.58182, -2.79993], + "size": [0.90906, 0.22727, 0.22728], + "pivot": [0, 9.69545, -2.68628], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [11, 16], "uv_size": [1, 0.25]}, + "east": {"uv": [33, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 11], "uv_size": [1, 0.25]}, + "west": {"uv": [0, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [12, 16], "uv_size": [1, 0.25]}, + "down": {"uv": [16, 12.25], "uv_size": [1, -0.25]} + } + }, + { + "origin": [-0.45453, 8.70117, 4.35894], + "size": [0.90906, 0.22727, 0.22727], + "pivot": [0, 8.81481, 4.47258], + "rotation": [-90, 0, 0], + "uv": { + "north": {"uv": [13, 16], "uv_size": [1, 0.25]}, + "east": {"uv": [34, 0], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 13], "uv_size": [1, 0.25]}, + "west": {"uv": [1, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [14, 16], "uv_size": [1, 0.25]}, + "down": {"uv": [16, 14.25], "uv_size": [1, -0.25]} + } + } + ] + }, + { + "name": "octagon4", + "parent": "up", + "pivot": [-0.11363, 9.69545, -2.68628], + "cubes": [ + { + "origin": [-0.36931, 9.53071, -3.084], + "size": [0.25568, 0.32948, 0.79543], + "pivot": [-0.11363, 9.69545, -2.68628], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [34, 1], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 7], "uv_size": [0.75, 0.25]}, + "south": {"uv": [2, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 21], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 8], "uv_size": [0.25, 0.75]}, + "down": {"uv": [9, 21.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.36931, 9.47045, -2.5692], + "size": [0.25568, 0.22727, 0.79543], + "pivot": [-0.24146, 9.47045, -2.2283], + "rotation": [2.5, 0, 0], + "uv": { + "north": {"uv": [34, 2], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 9], "uv_size": [0.75, 0.25]}, + "south": {"uv": [3, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 21], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 10], "uv_size": [0.25, 0.75]}, + "down": {"uv": [11, 21.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.36849, 9.69854, -2.56839], + "size": [0.25404, 0.16881, 2.61193], + "inflate": -0.001, + "pivot": [-0.24146, 9.47045, -2.2283], + "rotation": [2.5, 0, 0], + "uv": { + "north": {"uv": [34, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [10, 5], "uv_size": [2.5, 0.25]}, + "south": {"uv": [4, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 6], "uv_size": [2.5, 0.25]}, + "up": {"uv": [3, 10], "uv_size": [0.25, 2.5]}, + "down": {"uv": [4, 12.5], "uv_size": [0.25, -2.5]} + } + }, + { + "origin": [-0.36849, 9.86899, -0.97752], + "size": [0.25404, 0.05518, 1.02106], + "inflate": -0.001, + "pivot": [-0.24146, 9.47045, -2.2283], + "rotation": [2.5, 0, 0], + "uv": { + "north": {"uv": [34, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 16], "uv_size": [1, 0.25]}, + "south": {"uv": [5, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 15], "uv_size": [1, 0.25]}, + "up": {"uv": [16, 16], "uv_size": [0.25, 1]}, + "down": {"uv": [0, 18], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 9.49027, -1.77421], + "size": [0.25568, 0.22727, 0.45453], + "pivot": [-0.24146, 9.49027, -1.77421], + "rotation": [8.25, 0, 0], + "uv": { + "north": {"uv": [34, 5], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [6, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 11], "uv_size": [0.5, 0.25]}, + "up": {"uv": [12, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 12.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 9.55315, -1.357], + "size": [0.25568, 0.22726, 0.68179], + "pivot": [-0.24146, 9.78041, -1.357], + "rotation": [5.25, 0, 0], + "uv": { + "north": {"uv": [34, 6], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 11], "uv_size": [0.75, 0.25]}, + "south": {"uv": [7, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 21], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 12], "uv_size": [0.25, 0.75]}, + "down": {"uv": [13, 21.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.36931, 9.61552, -0.67806], + "size": [0.25568, 0.22727, 0.90906], + "pivot": [-0.24146, 9.84279, -0.67806], + "rotation": [1, 0, 0], + "uv": { + "north": {"uv": [34, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 0], "uv_size": [1, 0.25]}, + "south": {"uv": [8, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [1, 17], "uv_size": [1, 0.25]}, + "up": {"uv": [17, 1], "uv_size": [0.25, 1]}, + "down": {"uv": [2, 18], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 9.63139, 0.23086], + "size": [0.25568, 0.22727, 0.45453], + "pivot": [-0.24146, 9.85866, 0.23086], + "rotation": [-3.25, 0, 0], + "uv": { + "north": {"uv": [34, 8], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [9, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 13], "uv_size": [0.5, 0.25]}, + "up": {"uv": [14, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 14.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 9.60563, 0.68467], + "size": [0.25568, 0.22727, 0.68179], + "pivot": [-0.24146, 9.8329, 0.68467], + "rotation": [-6.25, 0, 0], + "uv": { + "north": {"uv": [34, 9], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 13], "uv_size": [0.75, 0.25]}, + "south": {"uv": [10, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 21], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 14], "uv_size": [0.25, 0.75]}, + "down": {"uv": [15, 21.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.36931, 9.5314, 1.3624], + "size": [0.25568, 0.22726, 0.56817], + "pivot": [-0.24146, 9.75866, 1.3624], + "rotation": [-10.25, 0, 0], + "uv": { + "north": {"uv": [34, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [11, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 15], "uv_size": [0.5, 0.25]}, + "up": {"uv": [16, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 16.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 9.43029, 1.92152], + "size": [0.25568, 0.22727, 0.45453], + "pivot": [-0.24146, 9.65756, 1.92152], + "rotation": [-13.5, 0, 0], + "uv": { + "north": {"uv": [34, 11], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [12, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 17], "uv_size": [0.5, 0.25]}, + "up": {"uv": [18, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 18.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36849, 8.99714, 2.31619], + "size": [0.25404, 0.50972, 2.44147], + "inflate": -0.001, + "pivot": [-0.24146, 9.20938, 3.53693], + "rotation": [-23.25, 0, 0], + "uv": { + "north": {"uv": [19, 26], "uv_size": [0.25, 0.5]}, + "east": {"uv": [2, 2], "uv_size": [2.5, 0.5]}, + "south": {"uv": [26, 19], "uv_size": [0.25, 0.5]}, + "west": {"uv": [2, 3], "uv_size": [2.5, 0.5]}, + "up": {"uv": [10, 9], "uv_size": [0.25, 2.5]}, + "down": {"uv": [0, 13.5], "uv_size": [0.25, -2.5]} + } + }, + { + "origin": [-0.36931, 9.32418, 2.36349], + "size": [0.25568, 0.22728, 1.02269], + "pivot": [-0.24146, 9.55146, 2.36349], + "rotation": [-18.25, 0, 0], + "uv": { + "north": {"uv": [34, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 2], "uv_size": [1, 0.25]}, + "south": {"uv": [13, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [3, 17], "uv_size": [1, 0.25]}, + "up": {"uv": [17, 3], "uv_size": [0.25, 1]}, + "down": {"uv": [4, 18], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 9.00393, 3.33472], + "size": [0.25568, 0.22726, 0.90906], + "pivot": [-0.24146, 9.23119, 3.33472], + "rotation": [-23.75, 0, 0], + "uv": { + "north": {"uv": [34, 13], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 4], "uv_size": [1, 0.25]}, + "south": {"uv": [14, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 17], "uv_size": [1, 0.25]}, + "up": {"uv": [17, 5], "uv_size": [0.25, 1]}, + "down": {"uv": [6, 18], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 8.6378, 4.1668], + "size": [0.25568, 0.22889, 0.59946], + "pivot": [-0.24146, 8.86506, 4.1668], + "rotation": [-43.5, 0, 0], + "uv": { + "north": {"uv": [34, 14], "uv_size": [0.25, 0.25]}, + "east": {"uv": [20, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [15, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 20], "uv_size": [0.5, 0.25]}, + "up": {"uv": [21, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 21.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 8.06031, 4.21793], + "size": [0.25568, 0.22726, 0.22726], + "pivot": [-0.24146, 8.28757, 4.44519], + "rotation": [-88.5, 0, 0], + "uv": { + "north": {"uv": [34, 15], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 34], "uv_size": [0.25, 0.25]}, + "south": {"uv": [34, 16], "uv_size": [0.25, 0.25]}, + "west": {"uv": [17, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [34, 17], "uv_size": [0.25, 0.25]}, + "down": {"uv": [18, 34.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37998, 9.53071, -3.084], + "size": [0.26635, 0.32948, 0.22726], + "uv": { + "north": {"uv": [34, 18], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 34], "uv_size": [0.25, 0.25]}, + "south": {"uv": [34, 19], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [34, 20], "uv_size": [0.25, 0.25]}, + "down": {"uv": [21, 34.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.36931, 9.29773, -2.85103], + "size": [0.25568, 0.22727, 0.32948], + "pivot": [-0.11363, 9.69545, -2.68628], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [34, 21], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 34], "uv_size": [0.25, 0.25]}, + "south": {"uv": [34, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [23, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [34, 23], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 34.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.35864, 9.29773, -2.85103], + "size": [0.24501, 0.79543, 0.32948], + "uv": { + "north": {"uv": [21, 15], "uv_size": [0.25, 0.75]}, + "east": {"uv": [16, 21], "uv_size": [0.25, 0.75]}, + "south": {"uv": [21, 16], "uv_size": [0.25, 0.75]}, + "west": {"uv": [17, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [34, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [25, 34.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.36931, 9.8659, -2.52155], + "size": [0.25568, 0.22726, 0.45453], + "pivot": [-0.24146, 10.09316, -2.52155], + "rotation": [-20, 0, 0], + "uv": { + "north": {"uv": [34, 25], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [26, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 22], "uv_size": [0.5, 0.25]}, + "up": {"uv": [23, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 23.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 9.72414, -2.17216], + "size": [0.25568, 0.22726, 0.45454], + "pivot": [-0.24146, 9.72414, -2.17216], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [34, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [27, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 24], "uv_size": [0.5, 0.25]}, + "up": {"uv": [25, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 25.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 9.70432, -1.71806], + "size": [0.25568, 0.22726, 0.45453], + "pivot": [-0.24146, 9.70432, -1.71806], + "rotation": [9, 0, 0], + "uv": { + "north": {"uv": [34, 27], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [28, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 0], "uv_size": [0.25, 0.5]}, + "down": {"uv": [1, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 9.77543, -1.26913], + "size": [0.25568, 0.22727, 0.45453], + "pivot": [-0.24146, 9.77543, -1.26913], + "rotation": [23, 0, 0], + "uv": { + "north": {"uv": [34, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 1], "uv_size": [0.5, 0.25]}, + "south": {"uv": [29, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 2], "uv_size": [0.25, 0.5]}, + "down": {"uv": [3, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 9.93495, -0.93953], + "size": [0.25568, 0.22727, 0.90906], + "pivot": [-0.24146, 10.16222, -0.93953], + "rotation": [5.25, 0, 0], + "uv": { + "north": {"uv": [34, 29], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 6], "uv_size": [1, 0.25]}, + "south": {"uv": [30, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [7, 17], "uv_size": [1, 0.25]}, + "up": {"uv": [17, 7], "uv_size": [0.25, 1]}, + "down": {"uv": [8, 18], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 10.01813, -0.03428], + "size": [0.25568, 0.22727, 0.45453], + "pivot": [-0.24146, 10.2454, -0.03428], + "rotation": [2, 0, 0], + "uv": { + "north": {"uv": [34, 30], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 3], "uv_size": [0.5, 0.25]}, + "south": {"uv": [31, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [4, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 4], "uv_size": [0.25, 0.5]}, + "down": {"uv": [5, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 10.034, 0.41997], + "size": [0.25568, 0.22726, 0.45454], + "pivot": [-0.24146, 10.26126, 0.41997], + "rotation": [-0.5, 0, 0], + "uv": { + "north": {"uv": [34, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 5], "uv_size": [0.5, 0.25]}, + "south": {"uv": [32, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 6], "uv_size": [0.25, 0.5]}, + "down": {"uv": [7, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 9.9164, 0.87449], + "size": [0.25568, 0.3409, 0.90906], + "pivot": [-0.24146, 10.2573, 0.87449], + "rotation": [-6, 0, 0], + "uv": { + "north": {"uv": [34, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 8], "uv_size": [1, 0.25]}, + "south": {"uv": [33, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 17], "uv_size": [1, 0.25]}, + "up": {"uv": [17, 9], "uv_size": [0.25, 1]}, + "down": {"uv": [10, 18], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 9.935, 1.77857], + "size": [0.25568, 0.22727, 0.90906], + "pivot": [-0.24146, 10.16227, 1.77857], + "rotation": [-11, 0, 0], + "uv": { + "north": {"uv": [34, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 10], "uv_size": [1, 0.25]}, + "south": {"uv": [34, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [11, 17], "uv_size": [1, 0.25]}, + "up": {"uv": [17, 11], "uv_size": [0.25, 1]}, + "down": {"uv": [12, 18], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 9.76156, 2.67092], + "size": [0.25568, 0.22727, 0.90907], + "pivot": [-0.24146, 9.98883, 2.67092], + "rotation": [-18.5, 0, 0], + "uv": { + "north": {"uv": [0, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 12], "uv_size": [1, 0.25]}, + "south": {"uv": [35, 0], "uv_size": [0.25, 0.25]}, + "west": {"uv": [13, 17], "uv_size": [1, 0.25]}, + "up": {"uv": [17, 13], "uv_size": [0.25, 1]}, + "down": {"uv": [14, 18], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 9.47311, 3.53303], + "size": [0.25568, 0.22726, 0.90906], + "pivot": [-0.24146, 9.70037, 3.53303], + "rotation": [-23.5, 0, 0], + "uv": { + "north": {"uv": [1, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 14], "uv_size": [1, 0.25]}, + "south": {"uv": [35, 1], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 17], "uv_size": [1, 0.25]}, + "up": {"uv": [17, 15], "uv_size": [0.25, 1]}, + "down": {"uv": [16, 18], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.36931, 9.11061, 4.3667], + "size": [0.25568, 0.22727, 0.45453], + "pivot": [-0.24146, 9.33788, 4.3667], + "rotation": [-28.5, 0, 0], + "uv": { + "north": {"uv": [2, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 7], "uv_size": [0.5, 0.25]}, + "south": {"uv": [35, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 8], "uv_size": [0.25, 0.5]}, + "down": {"uv": [9, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.36931, 8.89373, 4.76613], + "size": [0.25568, 0.22726, 0.3409], + "pivot": [-0.24146, 9.12099, 4.76613], + "rotation": [-43.5, 0, 0], + "uv": { + "north": {"uv": [3, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [35, 3], "uv_size": [0.25, 0.25]}, + "south": {"uv": [4, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [35, 4], "uv_size": [0.25, 0.25]}, + "up": {"uv": [5, 35], "uv_size": [0.25, 0.25]}, + "down": {"uv": [35, 5.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.36931, 8.52443, 4.87977], + "size": [0.25568, 0.3693, 0.22726], + "pivot": [-0.24146, 9.12099, 4.76613], + "rotation": [-43.5, 0, 0], + "uv": { + "north": {"uv": [6, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [35, 6], "uv_size": [0.25, 0.25]}, + "south": {"uv": [7, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [35, 7], "uv_size": [0.25, 0.25]}, + "up": {"uv": [8, 35], "uv_size": [0.25, 0.25]}, + "down": {"uv": [35, 8.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.42613, 9.72387, -0.07273], + "size": [0.36931, 0.36929, 0.79542], + "uv": { + "north": {"uv": [9, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 17], "uv_size": [0.75, 0.25]}, + "south": {"uv": [35, 9], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 21], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 18], "uv_size": [0.25, 0.75]}, + "down": {"uv": [19, 21.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.42613, 9.72387, 0.72269], + "size": [0.36931, 0.36929, 0.6818], + "pivot": [-0.24146, 10.09316, 0.72269], + "rotation": [-5, 0, 0], + "uv": { + "north": {"uv": [10, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 19], "uv_size": [0.75, 0.25]}, + "south": {"uv": [35, 10], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 21], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [21, 21.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.42613, 9.66444, 1.40189], + "size": [0.36931, 0.36931, 0.6818], + "pivot": [-0.24146, 10.03375, 1.40189], + "rotation": [-10, 0, 0], + "uv": { + "north": {"uv": [11, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [0, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [35, 11], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 0], "uv_size": [0.75, 0.25]}, + "up": {"uv": [1, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 1.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.42613, 9.54603, 2.07335], + "size": [0.36931, 0.36932, 1.19314], + "pivot": [-0.24146, 9.91535, 2.07335], + "rotation": [-16.5, 0, 0], + "uv": { + "north": {"uv": [12, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 9], "uv_size": [1.25, 0.25]}, + "south": {"uv": [35, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 14], "uv_size": [1.25, 0.25]}, + "up": {"uv": [14, 0], "uv_size": [0.25, 1.25]}, + "down": {"uv": [14, 3.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.42613, 9.65967, 3.26649], + "size": [0.36931, 0.14205, 0.11363], + "pivot": [-0.24146, 9.91535, 2.07335], + "rotation": [-16.5, 0, 0], + "uv": { + "north": {"uv": [13, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [35, 13], "uv_size": [0.25, 0.25]}, + "south": {"uv": [14, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [35, 14], "uv_size": [0.25, 0.25]}, + "up": {"uv": [15, 35], "uv_size": [0.25, 0.25]}, + "down": {"uv": [35, 15.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.42613, 9.43526, 3.1804], + "size": [0.36931, 0.16068, 0.11363], + "pivot": [-0.24146, 9.43526, 3.29403], + "rotation": [28.5, 0, 0], + "uv": { + "north": {"uv": [16, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [35, 16], "uv_size": [0.25, 0.25]}, + "south": {"uv": [17, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [35, 17], "uv_size": [0.25, 0.25]}, + "up": {"uv": [18, 35], "uv_size": [0.25, 0.25]}, + "down": {"uv": [35, 18.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.42613, 9.13836, 3.14005], + "size": [0.36931, 0.1607, 0.11364], + "pivot": [-0.24146, 9.29906, 3.25369], + "rotation": [-61.5, 0, 0], + "uv": { + "north": {"uv": [19, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [35, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [35, 20], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 35], "uv_size": [0.25, 0.25]}, + "down": {"uv": [35, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.42613, 9.8375, -0.18637], + "size": [0.36931, 0.14203, 0.11364], + "uv": { + "north": {"uv": [22, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [35, 22], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [35, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [24, 35], "uv_size": [0.25, 0.25]}, + "down": {"uv": [35, 24.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.42613, 9.6768, -0.18637], + "size": [0.36931, 0.1607, 0.11364], + "pivot": [-0.24146, 9.8375, -0.18637], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [25, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [35, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [26, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [35, 26], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 35], "uv_size": [0.25, 0.25]}, + "down": {"uv": [35, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.42613, 9.97953, -0.18637], + "size": [0.36931, 0.1607, 0.11364], + "pivot": [-0.24146, 9.97953, -0.18637], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [28, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [35, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [35, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [30, 35], "uv_size": [0.25, 0.25]}, + "down": {"uv": [35, 30.25], "uv_size": [0.25, -0.25]} + } + } + ] + }, + { + "name": "blade2", + "parent": "weapon", + "pivot": [-0.05682, 9.29773, -2.91356], + "cubes": [ + { + "origin": [-0.11282, 9.50556, -7.80696], + "size": [0.22564, 0.19723, 2.69714], + "inflate": -0.001, + "pivot": [-0.79542, 9.50475, -5.10899], + "rotation": [1.5, 0, 0], + "uv": { + "north": {"uv": [29, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 7], "uv_size": [2.75, 0.25]}, + "south": {"uv": [4, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [7, 6], "uv_size": [2.75, 0.25]}, + "up": {"uv": [2, 6], "uv_size": [0.25, 2.75]}, + "down": {"uv": [5, 10.75], "uv_size": [0.25, -2.75]} + } + }, + { + "origin": [-0.11282, 9.37813, -7.91818], + "size": [0.22564, 0.1404, 0.112], + "inflate": -0.001, + "pivot": [-0.79542, 9.37731, -7.80537], + "rotation": [-63.5, 0, 0], + "uv": { + "north": {"uv": [29, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 5], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 6], "uv_size": [0.25, 0.25]}, + "down": {"uv": [7, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11815, 9.45324, -4.99313], + "size": [0.23631, 0.22563, 0.112], + "inflate": -0.001, + "pivot": [-0.79009, 9.45242, -4.99394], + "rotation": [-63.5, 0, 0], + "uv": { + "north": {"uv": [29, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 8], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 9], "uv_size": [0.25, 0.25]}, + "down": {"uv": [10, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11282, 8.99565, -9.67374], + "size": [0.22564, 0.28245, 0.68016], + "inflate": -0.001, + "pivot": [-0.79542, 9.13689, -9.39048], + "rotation": [-21, 0, 0], + "uv": { + "north": {"uv": [29, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [1, 20], "uv_size": [0.75, 0.25]}, + "south": {"uv": [11, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 1], "uv_size": [0.75, 0.25]}, + "up": {"uv": [2, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 2.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.11282, 8.76695, -9.11374], + "size": [0.22564, 0.62334, 0.53813], + "inflate": -0.001, + "pivot": [-0.79542, 9.50475, -5.10899], + "rotation": [1.5, 0, 0], + "uv": { + "north": {"uv": [23, 11], "uv_size": [0.25, 0.5]}, + "east": {"uv": [14, 13], "uv_size": [0.5, 0.5]}, + "south": {"uv": [12, 23], "uv_size": [0.25, 0.5]}, + "west": {"uv": [14, 14], "uv_size": [0.5, 0.5]}, + "up": {"uv": [23, 12], "uv_size": [0.25, 0.5]}, + "down": {"uv": [13, 23.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11282, 8.76695, -8.57398], + "size": [0.22564, 0.73697, 0.76538], + "inflate": -0.001, + "pivot": [-0.79542, 9.50475, -5.10899], + "rotation": [1.5, 0, 0], + "uv": { + "north": {"uv": [3, 20], "uv_size": [0.25, 0.75]}, + "east": {"uv": [8, 12], "uv_size": [0.75, 0.75]}, + "south": {"uv": [20, 3], "uv_size": [0.25, 0.75]}, + "west": {"uv": [9, 12], "uv_size": [0.75, 0.75]}, + "up": {"uv": [4, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 4.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.11282, 8.76695, -7.80696], + "size": [0.22564, 0.4529, 1.04947], + "inflate": -0.001, + "pivot": [-0.79542, 9.50475, -5.10899], + "rotation": [1.5, 0, 0], + "uv": { + "north": {"uv": [23, 13], "uv_size": [0.25, 0.5]}, + "east": {"uv": [12, 9], "uv_size": [1, 0.5]}, + "south": {"uv": [14, 23], "uv_size": [0.25, 0.5]}, + "west": {"uv": [10, 12], "uv_size": [1, 0.5]}, + "up": {"uv": [0, 15], "uv_size": [0.25, 1]}, + "down": {"uv": [15, 1], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.11363, 9.00558, -2.33732], + "size": [0.22727, 0.47068, 0.45453], + "pivot": [-0.79542, 9.24091, -2.45095], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [23, 14], "uv_size": [0.25, 0.5]}, + "east": {"uv": [1, 15], "uv_size": [0.5, 0.5]}, + "south": {"uv": [15, 23], "uv_size": [0.25, 0.5]}, + "west": {"uv": [15, 1], "uv_size": [0.5, 0.5]}, + "up": {"uv": [23, 15], "uv_size": [0.25, 0.5]}, + "down": {"uv": [16, 23.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 9.00558, -2.33732], + "size": [0.22727, 0.47068, 0.45453], + "uv": { + "north": {"uv": [23, 16], "uv_size": [0.25, 0.5]}, + "east": {"uv": [2, 15], "uv_size": [0.5, 0.5]}, + "south": {"uv": [17, 23], "uv_size": [0.25, 0.5]}, + "west": {"uv": [15, 2], "uv_size": [0.5, 0.5]}, + "up": {"uv": [23, 17], "uv_size": [0.25, 0.5]}, + "down": {"uv": [18, 23.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 9.35456, -2.68628], + "size": [0.22727, 0.45453, 0.47066], + "pivot": [-0.79542, 9.24091, -2.45095], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [23, 18], "uv_size": [0.25, 0.5]}, + "east": {"uv": [3, 15], "uv_size": [0.5, 0.5]}, + "south": {"uv": [19, 23], "uv_size": [0.25, 0.5]}, + "west": {"uv": [15, 3], "uv_size": [0.5, 0.5]}, + "up": {"uv": [23, 19], "uv_size": [0.25, 0.5]}, + "down": {"uv": [20, 23.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 8.67275, -3.36809], + "size": [0.22727, 1.13634, 1.15247], + "uv": { + "north": {"uv": [8, 13], "uv_size": [0.25, 1.25]}, + "east": {"uv": [0, 0], "uv_size": [1.25, 1.25]}, + "south": {"uv": [9, 13], "uv_size": [0.25, 1.25]}, + "west": {"uv": [0, 2], "uv_size": [1.25, 1.25]}, + "up": {"uv": [10, 13], "uv_size": [0.25, 1.25]}, + "down": {"uv": [11, 14.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.11897, 8.67275, -8.12452], + "size": [0.23794, 0.22727, 4.80099], + "pivot": [-0.79009, 8.67275, -6.59047], + "rotation": [6.75, 0, 0], + "uv": { + "north": {"uv": [29, 11], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 1], "uv_size": [4.75, 0.25]}, + "south": {"uv": [12, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 2], "uv_size": [4.75, 0.25]}, + "up": {"uv": [3, 5], "uv_size": [0.25, 4.75]}, + "down": {"uv": [4, 9.75], "uv_size": [0.25, -4.75]} + } + }, + { + "origin": [-0.11363, 8.80621, -4.50284], + "size": [0.22727, 0.22726, 0.39772], + "pivot": [0, 8.91983, -4.50284], + "rotation": [-5, 0, 0], + "uv": { + "north": {"uv": [29, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 20], "uv_size": [0.5, 0.25]}, + "south": {"uv": [13, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [21, 23], "uv_size": [0.5, 0.25]}, + "up": {"uv": [23, 21], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 23.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 8.77198, -4.11654], + "size": [0.22727, 0.22728, 0.45453], + "pivot": [0, 8.77198, -4.11654], + "rotation": [17.5, 0, 0], + "uv": { + "north": {"uv": [29, 13], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [14, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [23, 23], "uv_size": [0.5, 0.25]}, + "up": {"uv": [0, 24], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 0.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 8.72668, -3.89979], + "size": [0.22727, 0.11364, 0.14204], + "pivot": [0, 8.84032, -3.89979], + "rotation": [60, 0, 0], + "uv": { + "north": {"uv": [29, 14], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 15], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 16], "uv_size": [0.25, 0.25]}, + "down": {"uv": [17, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11363, 8.51094, -3.68304], + "size": [0.22727, 0.51135, 0.3409], + "pivot": [0, 8.90866, -3.68304], + "rotation": [53.5, 0, 0], + "uv": { + "north": {"uv": [1, 24], "uv_size": [0.25, 0.5]}, + "east": {"uv": [24, 1], "uv_size": [0.25, 0.5]}, + "south": {"uv": [2, 24], "uv_size": [0.25, 0.5]}, + "west": {"uv": [24, 2], "uv_size": [0.25, 0.5]}, + "up": {"uv": [29, 17], "uv_size": [0.25, 0.25]}, + "down": {"uv": [18, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11282, 8.90084, -6.7601], + "size": [0.22564, 0.33926, 2.04738], + "inflate": -0.001, + "pivot": [-0.79542, 8.67275, -6.59047], + "rotation": [6.75, 0, 0], + "uv": { + "north": {"uv": [29, 18], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 10], "uv_size": [2, 0.25]}, + "south": {"uv": [19, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [11, 12], "uv_size": [2, 0.25]}, + "up": {"uv": [13, 2], "uv_size": [0.25, 2]}, + "down": {"uv": [3, 15], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.11282, 8.90084, -4.71472], + "size": [0.22564, 0.5097, 1.53241], + "inflate": -0.001, + "pivot": [-0.79542, 8.67275, -6.59047], + "rotation": [6.75, 0, 0], + "uv": { + "north": {"uv": [3, 24], "uv_size": [0.25, 0.5]}, + "east": {"uv": [6, 4], "uv_size": [1.5, 0.5]}, + "south": {"uv": [24, 3], "uv_size": [0.25, 0.5]}, + "west": {"uv": [5, 6], "uv_size": [1.5, 0.5]}, + "up": {"uv": [4, 13], "uv_size": [0.25, 1.5]}, + "down": {"uv": [13, 5.5], "uv_size": [0.25, -1.5]} + } + }, + { + "origin": [-0.11363, 8.49245, -8.56841], + "size": [0.22727, 0.22726, 0.45453], + "pivot": [-0.79542, 8.49245, -8.11388], + "rotation": [-2.25, 0, 0], + "uv": { + "north": {"uv": [29, 19], "uv_size": [0.25, 0.25]}, + "east": {"uv": [4, 24], "uv_size": [0.5, 0.25]}, + "south": {"uv": [20, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 4], "uv_size": [0.5, 0.25]}, + "up": {"uv": [5, 24], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 5.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 8.51028, -9.0226], + "size": [0.22727, 0.22727, 0.45453], + "pivot": [-0.79542, 8.51028, -8.56807], + "rotation": [-13.5, 0, 0], + "uv": { + "north": {"uv": [29, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 24], "uv_size": [0.5, 0.25]}, + "south": {"uv": [21, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 6], "uv_size": [0.5, 0.25]}, + "up": {"uv": [7, 24], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 7.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 8.61639, -9.46456], + "size": [0.22727, 0.22727, 0.45453], + "pivot": [-0.79542, 8.61639, -9.01003], + "rotation": [-23.25, 0, 0], + "uv": { + "north": {"uv": [29, 21], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 24], "uv_size": [0.5, 0.25]}, + "south": {"uv": [22, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 8], "uv_size": [0.5, 0.25]}, + "up": {"uv": [9, 24], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 9.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 8.79582, -9.88219], + "size": [0.22727, 0.22727, 0.45453], + "pivot": [-0.79542, 8.79582, -9.42766], + "rotation": [-35.25, 0, 0], + "uv": { + "north": {"uv": [29, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [10, 24], "uv_size": [0.5, 0.25]}, + "south": {"uv": [23, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 10], "uv_size": [0.5, 0.25]}, + "up": {"uv": [11, 24], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 11.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 8.76628, -9.84052], + "size": [0.16071, 0.16071, 0.45453], + "pivot": [-0.11363, 8.92699, -9.61325], + "rotation": [-26.55284, -24.08574, -39.2365], + "uv": { + "north": {"uv": [29, 23], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 24], "uv_size": [0.5, 0.25]}, + "south": {"uv": [24, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 12], "uv_size": [0.5, 0.25]}, + "up": {"uv": [13, 24], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 13.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.1083, 9.20019, -10.08293], + "size": [0.2166, 0.08524, 0.28408], + "pivot": [-0.80076, 9.05816, -9.79885], + "rotation": [-52.75, 0, 0], + "uv": { + "north": {"uv": [29, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [27, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11363, 9.05816, -10.25338], + "size": [0.22727, 0.14203, 0.45453], + "pivot": [-0.79542, 9.05816, -9.79885], + "rotation": [-52.75, 0, 0], + "uv": { + "north": {"uv": [29, 27], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 24], "uv_size": [0.5, 0.25]}, + "south": {"uv": [28, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 14], "uv_size": [0.5, 0.25]}, + "up": {"uv": [15, 24], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 15.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.00099, 8.66273, -8.13494], + "size": [0.15972, 0.15973, 4.81876], + "pivot": [0, 8.66175, -5.71666], + "rotation": [4.78403, 4.76744, -44.80074], + "uv": { + "north": {"uv": [29, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 3], "uv_size": [4.75, 0.25]}, + "south": {"uv": [29, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 5], "uv_size": [4.75, 0.25]}, + "up": {"uv": [0, 6], "uv_size": [0.25, 4.75]}, + "down": {"uv": [1, 10.75], "uv_size": [0.25, -4.75]} + } + }, + { + "origin": [0.00155, 8.38936, -8.59487], + "size": [0.15916, 0.15916, 0.4767], + "pivot": [0, 8.38782, -8.34543], + "rotation": [-1.5914, -1.59079, -44.9779], + "uv": { + "north": {"uv": [0, 30], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 24], "uv_size": [0.5, 0.25]}, + "south": {"uv": [30, 0], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 16], "uv_size": [0.5, 0.25]}, + "up": {"uv": [17, 24], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 17.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0, 8.45285, -9.04283], + "size": [0.16071, 0.1607, 0.45453], + "pivot": [0, 8.45285, -8.81557], + "rotation": [-9.63475, -9.50135, -44.19742], + "uv": { + "north": {"uv": [1, 30], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 24], "uv_size": [0.5, 0.25]}, + "south": {"uv": [30, 1], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 18], "uv_size": [0.5, 0.25]}, + "up": {"uv": [19, 24], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 19.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.00177, 8.60346, -9.51458], + "size": [0.15894, 0.15894, 0.4974], + "pivot": [0, 8.6017, -9.2637], + "rotation": [-16.89863, -16.20805, -42.57652], + "uv": { + "north": {"uv": [2, 30], "uv_size": [0.25, 0.25]}, + "east": {"uv": [20, 24], "uv_size": [0.5, 0.25]}, + "south": {"uv": [30, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 20], "uv_size": [0.5, 0.25]}, + "up": {"uv": [21, 24], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 21.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.00373, 9.17399, -10.41679], + "size": [0.15698, 0.15698, 0.65138], + "pivot": [0, 9.17028, -10.02686], + "rotation": [-42.91953, -34.25371, -31.18627], + "uv": { + "east": {"uv": [5, 20], "uv_size": [0.75, 0.25]}, + "south": {"uv": [3, 30], "uv_size": [0.25, 0.25]}, + "down": {"uv": [20, 5.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.11363, 9.05816, -10.41605], + "size": [0.22727, 0.02, 0.16267], + "pivot": [-0.79542, 9.05816, -9.79885], + "rotation": [-52.75, 0, 0], + "uv": { + "north": {"uv": [30, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [4, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 4], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [30, 5], "uv_size": [0.25, 0.25]}, + "down": {"uv": [6, 30.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11363, 9.07816, -10.38765], + "size": [0.22727, 0.01818, 0.13427], + "pivot": [-0.79542, 9.05816, -9.79885], + "rotation": [-52.75, 0, 0], + "uv": { + "north": {"uv": [30, 6], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 7], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [30, 8], "uv_size": [0.25, 0.25]}, + "down": {"uv": [9, 30.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11363, 9.09634, -10.35923], + "size": [0.22727, 0.01818, 0.10585], + "pivot": [-0.79542, 9.05816, -9.79885], + "rotation": [-52.75, 0, 0], + "uv": { + "north": {"uv": [30, 9], "uv_size": [0.25, 0.25]}, + "east": {"uv": [10, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 10], "uv_size": [0.25, 0.25]}, + "west": {"uv": [11, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [30, 11], "uv_size": [0.25, 0.25]}, + "down": {"uv": [12, 30.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11363, 9.11452, -10.33083], + "size": [0.22727, 0.01819, 0.07745], + "pivot": [-0.79542, 9.05816, -9.79885], + "rotation": [-52.75, 0, 0], + "uv": { + "north": {"uv": [30, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 13], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [30, 14], "uv_size": [0.25, 0.25]}, + "down": {"uv": [15, 30.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11897, 9.39595, -10.05076], + "size": [0.23794, 0.11, 0.31713], + "pivot": [-0.79009, 9.50595, -9.96089], + "rotation": [-13.5, 0, 0], + "uv": { + "north": {"uv": [30, 15], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 16], "uv_size": [0.25, 0.25]}, + "west": {"uv": [17, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [30, 17], "uv_size": [0.25, 0.25]}, + "down": {"uv": [18, 30.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11897, 9.22561, -9.76832], + "size": [0.23794, 0.22726, 0.48293], + "pivot": [-0.79009, 9.45287, -9.73992], + "rotation": [-8.25, 0, 0], + "uv": { + "north": {"uv": [30, 18], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 24], "uv_size": [0.5, 0.25]}, + "south": {"uv": [19, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 22], "uv_size": [0.5, 0.25]}, + "up": {"uv": [23, 24], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 23.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 9.16039, -9.3185], + "size": [0.22727, 0.22726, 0.51135], + "pivot": [-0.79542, 9.38765, -9.29008], + "rotation": [-0.75, 0, 0], + "uv": { + "north": {"uv": [30, 19], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 24], "uv_size": [0.5, 0.25]}, + "south": {"uv": [20, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 25], "uv_size": [0.5, 0.25]}, + "up": {"uv": [25, 0], "uv_size": [0.25, 0.5]}, + "down": {"uv": [1, 25.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 9.15444, -8.86401], + "size": [0.22727, 0.22727, 0.51135], + "pivot": [-0.79542, 9.38171, -8.83558], + "rotation": [8.25, 0, 0], + "uv": { + "north": {"uv": [30, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 1], "uv_size": [0.5, 0.25]}, + "south": {"uv": [21, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 25], "uv_size": [0.5, 0.25]}, + "up": {"uv": [25, 2], "uv_size": [0.25, 0.5]}, + "down": {"uv": [3, 25.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 9.21966, -8.41418], + "size": [0.22727, 0.22727, 0.48295], + "pivot": [-0.79542, 9.44693, -8.38576], + "rotation": [20.75, 0, 0], + "uv": { + "north": {"uv": [30, 21], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 3], "uv_size": [0.5, 0.25]}, + "south": {"uv": [22, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [4, 25], "uv_size": [0.5, 0.25]}, + "up": {"uv": [25, 4], "uv_size": [0.25, 0.5]}, + "down": {"uv": [5, 25.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 9.38071, -7.98912], + "size": [0.22727, 0.22727, 0.73862], + "pivot": [-0.79542, 9.60798, -7.96072], + "rotation": [28.25, 0, 0], + "uv": { + "north": {"uv": [30, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 20], "uv_size": [0.75, 0.25]}, + "south": {"uv": [23, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 6], "uv_size": [0.75, 0.25]}, + "up": {"uv": [7, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 7.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.11897, 9.71686, -7.3351], + "size": [0.23794, 0.22727, 0.79543], + "pivot": [-0.79009, 9.94413, -7.3351], + "rotation": [-11.25, 0, 0], + "uv": { + "north": {"uv": [30, 23], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 20], "uv_size": [0.75, 0.25]}, + "south": {"uv": [24, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 8], "uv_size": [0.75, 0.25]}, + "up": {"uv": [9, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 9.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.11363, 9.56167, -6.58336], + "size": [0.22727, 0.22726, 0.59656], + "pivot": [-0.79542, 9.78893, -6.55496], + "rotation": [-5.75, 0, 0], + "uv": { + "north": {"uv": [30, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 5], "uv_size": [0.5, 0.25]}, + "south": {"uv": [25, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 25], "uv_size": [0.5, 0.25]}, + "up": {"uv": [25, 6], "uv_size": [0.25, 0.5]}, + "down": {"uv": [7, 25.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 9.50475, -6.01805], + "size": [0.22727, 0.22726, 0.90906], + "uv": { + "north": {"uv": [30, 25], "uv_size": [0.25, 0.25]}, + "east": {"uv": [4, 15], "uv_size": [1, 0.25]}, + "south": {"uv": [26, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 15], "uv_size": [1, 0.25]}, + "up": {"uv": [6, 15], "uv_size": [0.25, 1]}, + "down": {"uv": [15, 7], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.11363, 9.22066, -7.80779], + "size": [0.22727, 0.22727, 2.86924], + "pivot": [-0.79542, 9.50475, -5.10899], + "rotation": [1.5, 0, 0], + "uv": { + "north": {"uv": [30, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 0], "uv_size": [2.75, 0.25]}, + "south": {"uv": [27, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 4], "uv_size": [2.75, 0.25]}, + "up": {"uv": [6, 8], "uv_size": [0.25, 2.75]}, + "down": {"uv": [7, 10.75], "uv_size": [0.25, -2.75]} + } + }, + { + "origin": [-0.1083, 9.70362, -7.46688], + "size": [0.2166, 0.11363, 0.42612], + "pivot": [-0.80076, 9.50475, -5.10899], + "rotation": [1.5, 0, 0], + "uv": { + "north": {"uv": [30, 27], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 7], "uv_size": [0.5, 0.25]}, + "south": {"uv": [28, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 25], "uv_size": [0.5, 0.25]}, + "up": {"uv": [25, 8], "uv_size": [0.25, 0.5]}, + "down": {"uv": [9, 25.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 9.50475, -5.13741], + "size": [0.22727, 0.22726, 0.45453], + "pivot": [-0.79542, 9.73201, -5.13741], + "rotation": [7, 0, 0], + "uv": { + "north": {"uv": [30, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 9], "uv_size": [0.5, 0.25]}, + "south": {"uv": [29, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 25], "uv_size": [0.5, 0.25]}, + "up": {"uv": [25, 10], "uv_size": [0.25, 0.5]}, + "down": {"uv": [11, 25.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.11363, 9.56015, -4.71468], + "size": [0.22727, 0.22726, 0.73861], + "pivot": [-0.79542, 9.78741, -4.68626], + "rotation": [10, 0, 0], + "uv": { + "north": {"uv": [30, 29], "uv_size": [0.25, 0.25]}, + "east": {"uv": [10, 20], "uv_size": [0.75, 0.25]}, + "south": {"uv": [30, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 10], "uv_size": [0.75, 0.25]}, + "up": {"uv": [11, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 11.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.11363, 9.68347, -4.01526], + "size": [0.22727, 0.22727, 0.36931], + "pivot": [-0.79542, 9.91074, -3.98685], + "rotation": [15.75, 0, 0], + "uv": { + "north": {"uv": [0, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 0], "uv_size": [0.25, 0.25]}, + "south": {"uv": [1, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 1], "uv_size": [0.25, 0.25]}, + "up": {"uv": [2, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 2.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11897, 9.71919, -3.88601], + "size": [0.23794, 0.28409, 0.22726], + "pivot": [-0.79009, 10.00328, -3.65875], + "rotation": [51.25, 0, 0], + "uv": { + "north": {"uv": [3, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 3], "uv_size": [0.25, 0.25]}, + "south": {"uv": [4, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 4], "uv_size": [0.25, 0.25]}, + "up": {"uv": [5, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 5.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11363, 9.63376, -3.70878], + "size": [0.22727, 0.28408, 0.22726], + "pivot": [-0.79542, 9.86103, -3.48152], + "rotation": [76.25, 0, 0], + "uv": { + "north": {"uv": [6, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 6], "uv_size": [0.25, 0.25]}, + "south": {"uv": [7, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 7], "uv_size": [0.25, 0.25]}, + "up": {"uv": [8, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 8.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11363, 9.50826, -10.15879], + "size": [0.22727, 0.01818, 0.14203], + "pivot": [-0.79542, 9.53665, -10.04516], + "rotation": [-17.75, 0, 0], + "uv": { + "north": {"uv": [9, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 9], "uv_size": [0.25, 0.25]}, + "south": {"uv": [10, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 10], "uv_size": [0.25, 0.25]}, + "up": {"uv": [11, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 11.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11363, 8.38867, -2.92581], + "size": [0.22727, 0.28408, 0.22727], + "pivot": [-0.79542, 8.67275, -2.69854], + "rotation": [-27.5, 0, 0], + "uv": { + "north": {"uv": [12, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 12], "uv_size": [0.25, 0.25]}, + "south": {"uv": [13, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 13], "uv_size": [0.25, 0.25]}, + "up": {"uv": [14, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 14.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11363, 8.27004, -3.03131], + "size": [0.22727, 0.25567, 0.22726], + "pivot": [-0.79542, 8.52571, -3.03131], + "rotation": [-7.5, 0, 0], + "uv": { + "north": {"uv": [15, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 15], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 16], "uv_size": [0.25, 0.25]}, + "up": {"uv": [17, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 17.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11363, 7.98814, -3.06467], + "size": [0.22727, 0.28408, 0.17044], + "pivot": [-0.79542, 8.27222, -3.06467], + "rotation": [17.5, 0, 0], + "uv": { + "north": {"uv": [18, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 18], "uv_size": [0.25, 0.25]}, + "south": {"uv": [19, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 19], "uv_size": [0.25, 0.25]}, + "up": {"uv": [20, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 20.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11363, 8.05254, -2.90192], + "size": [0.22727, 0.25568, 0.08522], + "pivot": [-0.79542, 8.05254, -2.8167], + "rotation": [4.75, 0, 0], + "uv": { + "north": {"uv": [21, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 21], "uv_size": [0.25, 0.25]}, + "south": {"uv": [22, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 22], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11363, 7.77402, -2.97926], + "size": [0.22727, 0.22726, 0.11363], + "pivot": [-0.79542, 8.00128, -2.97926], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [24, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 24], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [26, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 26.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11363, 7.76024, -2.81856], + "size": [0.22727, 0.08034, 0.08037], + "pivot": [-0.79542, 7.84058, -2.81856], + "rotation": [90, 0, 0], + "uv": { + "north": {"uv": [27, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [28, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 28], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.11363, 7.92094, -2.85182], + "size": [0.22727, 0.17045, 0.11363], + "pivot": [-0.79542, 7.92094, -2.73819], + "rotation": [30, 0, 0], + "uv": { + "north": {"uv": [30, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [32, 0], "uv_size": [0.25, 0.25]}, + "down": {"uv": [1, 32.25], "uv_size": [0.25, -0.25]} + } + } + ] + }, + { + "name": "constraint", + "parent": "bone", + "pivot": [-0.01558, 8.125, 1.9375] + }, + { + "name": "lefthand", + "parent": "bone", + "pivot": [-6, 19, 0] + }, + { + "name": "lefthand_pos", + "parent": "lefthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [-7, 8, -2], + "size": [3, 12, 4], + "uv": { + "north": {"uv": [12.228, 0], "uv_size": [3.614, 12]}, + "east": {"uv": [5, 12], "uv_size": [3.614, 12]}, + "south": {"uv": [8.614, 12], "uv_size": [3.614, 12]}, + "west": {"uv": [12.228, 12], "uv_size": [3.614, 12]}, + "up": {"uv": [15.842, 8], "uv_size": [3.614, 4]}, + "down": {"uv": [15.842, 16], "uv_size": [3.614, -4]} + } + } + ] + }, + { + "name": "camera", + "pivot": [3.4563, 3.4656, -0.7687] + }, + { + "name": "view", + "pivot": [0, 0, 0] + }, + { + "name": "refit_view", + "parent": "view", + "pivot": [22.475, 5.55, 0.2], + "rotation": [0, 90, 0] + }, + { + "name": "iron_view", + "parent": "view", + "pivot": [-0.15326, 9.42188, 6.93493], + "rotation": [0, -1, 0] + }, + { + "name": "idle_view", + "parent": "view", + "pivot": [3.4563, 3.4656, -0.7687] + }, + { + "name": "positioning", + "pivot": [-0.01558, 4.125, 4.9375] + }, + { + "name": "ground", + "parent": "positioning", + "pivot": [0, 0, 0] + }, + { + "name": "thirdperson_hand", + "parent": "positioning", + "pivot": [-0.01558, 6.125, -2.0625] + }, + { + "name": "fixed", + "parent": "positioning", + "pivot": [0.79692, 5.125, -1.0625], + "rotation": [0, 90, 0] + }, + { + "name": "bone38", + "pivot": [62, -11.35, -167.5] + }, + { + "name": "bone39", + "parent": "bone38", + "pivot": [-65, -11.35, -167.5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/cobra_vanguard.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/cobra_vanguard.anim.json new file mode 100644 index 0000000..04398cd --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/cobra_vanguard.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"draw":{"loop":true,"animation_length":1.6333,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[90.239,-38.47,130.538],"0.0417":[88.178,-37.414,131.599],"0.0833":[86.353,-35.962,132.487],"0.125":[84.095,-33.106,133.46],"0.1667":[82.867,-30.85,133.889],"0.2083":[81.417,-27.021,134.204],"0.25":[80.705,-24.185,134.217],"0.2917":[80.171,-21.173,134.089],"0.3333":[79.638,-16.388,133.681],"0.375":[79.428,-13.075,133.284],"0.4167":[79.273,-7.984,132.537],"0.4583":[79.271,-4.542,131.951],"0.5":[79.324,-1.104,131.302],"0.5417":[79.485,3.994,130.224],"0.5833":[79.626,7.314,129.451],"0.625":[79.863,12.102,128.204],"0.6667":[80.02,15.125,127.315],"0.7083":[80.174,17.969,126.386],"0.75":[80.372,21.855,124.911],"0.7917":[80.467,24.152,123.876],"0.8333":[80.552,27.066,122.257],"0.875":[81.916,26.989,120.107],"0.9167":[85.769,23.94,116.159],"0.9583":[94.588,17.525,108.833],"1.0":[100.055,14.363,104.549],"1.0417":[104.625,13.287,103.67],"1.0833":[106.417,13.54,105.533],"1.125":[108.661,13.244,106.822],"1.1667":[113.137,11.217,107.068],"1.2083":[115.847,10.637,106.067],"1.25":[118.223,13.328,102.584],"1.2917":[119.697,14.585,104.474],"1.3333":[121.3,14.974,109.598],"1.375":[123.371,15.954,116.132],"1.4167":[124.644,17.3,119.051],"1.4583":[126.154,19.233,122.061],"1.5":[126.646,20.109,122.981],"1.5417":[126.742,20.724,123.07],"1.5833":[126.461,21.453,122.324],"1.625":[126.221,21.91,121.715]},"position":{"0.0":[14.159,-33.044,-9.592],"0.0417":[14.474,-33.351,-9.263],"0.0833":[14.8,-33.634,-8.929],"0.125":[15.308,-34.011,-8.415],"0.1667":[15.651,-34.233,-8.072],"0.2083":[16.166,-34.532,-7.56],"0.25":[16.511,-34.703,-7.228],"0.2917":[16.852,-34.854,-6.913],"0.3333":[17.353,-35.046,-6.472],"0.375":[17.68,-35.15,-6.204],"0.4167":[18.15,-35.272,-5.844],"0.4583":[18.454,-35.328,-5.642],"0.5":[18.745,-35.364,-5.469],"0.5417":[19.158,-35.378,-5.274],"0.5833":[19.413,-35.358,-5.185],"0.625":[19.767,-35.288,-5.115],"0.6667":[19.98,-35.209,-5.109],"0.7083":[20.171,-35.107,-5.138],"0.75":[20.416,-34.9,-5.244],"0.7917":[20.544,-34.728,-5.351],"0.8333":[20.678,-34.417,-5.569],"0.875":[20.355,-33.596,-6.229],"0.9167":[19.347,-31.703,-7.789],"0.9583":[17.099,-27.884,-10.785],"1.0":[15.679,-25.707,-12.495],"1.0417":[14.517,-24.599,-13.406],"1.0833":[14.08,-24.774,-13.265],"1.125":[13.709,-24.852,-13.088],"1.1667":[13.407,-24.681,-12.781],"1.2083":[13.377,-24.552,-12.61],"1.25":[13.595,-24.42,-12.578],"1.2917":[13.738,-24.476,-12.723],"1.3333":[13.825,-24.632,-12.969],"1.375":[13.859,-24.808,-13.205],"1.4167":[13.825,-24.852,-13.236],"1.4583":[13.751,-24.882,-13.24],"1.5":[13.711,-24.91,-13.262],"1.5417":[13.675,-24.939,-13.298],"1.5833":[13.627,-24.983,-13.358],"1.625":[13.598,-25.011,-13.395]}},"righthand":{"rotation":{"0.0":[70.196,-22.42,-76.686],"0.0417":[91.129,-22.268,-96.392],"0.0833":[107.603,-13.836,-120.702],"0.125":[119.615,3.258,-152.521],"0.1667":[122.837,17.024,-164.501],"0.2083":[126.241,39.24,-171.463],"0.25":[126.418,52.734,-174.204],"0.2917":[118.257,62.177,-183.734],"0.3333":[84.023,62.792,-214.091],"0.375":[65.935,54.221,-227.53],"0.4167":[56.208,33.852,-235.72],"0.4583":[67.776,8.936,-245.271],"0.5":[90.521,-11.101,-259.374],"0.5417":[113.149,-15.14,-258.68],"0.5833":[122.922,-13.763,-248.335],"0.625":[128.348,-15.161,-227.05],"0.6667":[124.563,-15.543,-208.701],"0.7083":[117.96,-11.812,-192.095],"0.75":[105.06,-4.855,-166.293],"0.7917":[98.284,-18.494,-137.549],"0.8333":[97.529,-10.772,-148.285],"0.875":[98.097,-9.781,-149.256],"0.9167":[98.568,-9.15,-150.764],"0.9583":[99.202,-8.3,-153.661],"1.0":[99.399,-7.875,-154.981],"1.0417":[98.902,-7.63,-154.267],"1.0833":[94.496,-8.973,-143.296],"1.125":[93.287,-8.26,-129.894],"1.1667":[104.869,-4.202,-118.364],"1.2083":[111.949,-3.771,-113.44],"1.25":[110.581,-9.184,-109.389],"1.2917":[110.571,-12.65,-110.351],"1.3333":[111.235,-14.609,-112.236],"1.375":[109.507,-15.065,-112.453],"1.4167":[107.989,-15.252,-111.775],"1.4583":[107.825,-18.189,-110.73],"1.5":[108.421,-21.111,-109.945],"1.5417":[109.017,-23.826,-109.285],"1.5833":[109.282,-25.97,-108.881],"1.625":[109.13,-26.165,-109.005]},"position":{"0.0":[-12.575,-26.084,-13.683],"0.0417":[-12.596,-24.598,-12],"0.0833":[-13.057,-23.914,-10.824],"0.125":[-13.61,-24.179,-10.583],"0.1667":[-13.936,-24.275,-10.873],"0.2083":[-14.486,-24.118,-11.841],"0.25":[-14.699,-23.969,-12.618],"0.2917":[-14.696,-23.897,-13.144],"0.3333":[-14.382,-23.805,-13.345],"0.375":[-14.076,-23.713,-13.293],"0.4167":[-13.584,-23.686,-12.966],"0.4583":[-13.016,-23.98,-12.266],"0.5":[-12.347,-23.717,-11.76],"0.5417":[-11.471,-23.896,-11.626],"0.5833":[-11.088,-24.136,-11.586],"0.625":[-10.843,-23.758,-11.459],"0.6667":[-10.9,-22.913,-11.253],"0.7083":[-11.265,-22.413,-11.066],"0.75":[-11.704,-22.453,-10.987],"0.7917":[-10.207,-22.649,-10.609],"0.8333":[-11.105,-23.504,-10.327],"0.875":[-11.397,-23.717,-10.292],"0.9167":[-11.492,-23.725,-10.292],"0.9583":[-11.521,-23.621,-10.31],"1.0":[-11.51,-23.514,-10.319],"1.0417":[-11.487,-23.32,-10.298],"1.0833":[-11.363,-23.07,-10.163],"1.125":[-11.467,-22.786,-10.021],"1.1667":[-12.335,-22.298,-10.01],"1.2083":[-12.944,-22.085,-10.052],"1.25":[-13.431,-22.347,-9.909],"1.2917":[-13.643,-22.776,-9.905],"1.3333":[-13.726,-23.18,-9.95],"1.375":[-13.676,-23.509,-9.957],"1.4167":[-13.618,-23.629,-9.946],"1.4583":[-13.618,-23.736,-9.942],"1.5":[-13.647,-23.767,-9.947],"1.5417":[-13.675,-23.782,-9.959],"1.5833":[-13.684,-23.797,-9.968],"1.625":[-13.667,-23.796,-9.966]}},"weapon":{"rotation":{"0.0":[-27.413,6.813,-93.573],"0.0417":[-2.255,2.641,-94.899],"0.0833":[21.188,14.896,-112.502],"0.125":[-23.004,95.161,-193.698],"0.1667":[8.028,139.71,-166.954],"0.2083":[-3.466,208.05,-169.726],"0.25":[-38.823,257.892,-130.898],"0.2917":[20.064,318.306,-181.499],"0.3333":[-14.637,392.998,-186.316],"0.375":[-59.049,404.524,-209.51],"0.4167":[-91.535,379.069,-209.263],"0.4583":[-101.209,345.548,-206.091],"0.5":[-114.604,307.178,-197.583],"0.5417":[-149.656,283.682,-154.409],"0.5833":[-194.452,279.689,-97.613],"0.625":[-247.324,275.339,-12.567],"0.6667":[-200.436,280.424,-20.088],"0.7083":[-156.652,285.327,-7.596],"0.75":[-46.615,286.861,-28.954],"0.7917":[-44.06,304.233,-4.322],"0.8333":[-29.578,301.092,-27.752],"0.875":[-28.224,299.721,-29.735],"0.9167":[-27.645,298.529,-31.645],"0.9583":[-26.981,296.72,-35.007],"1.0":[-26.418,295.708,-36.799],"1.0417":[-24.787,295.018,-37.617],"1.0833":[-23.395,299.075,-30.297],"1.125":[-47.332,306.913,7.999],"1.1667":[-81.565,349.163,58.53],"1.2083":[-88.879,372.076,67.533],"1.25":[-91.892,382.867,70.838],"1.2917":[-90.887,380.823,71.958],"1.3333":[-88.235,376.924,72.612],"1.375":[-81.942,378.859,73.465],"1.4167":[-79.173,381.741,73.744],"1.4583":[-79.142,385.533,73.827],"1.5":[-79.815,388.673,74.159],"1.5417":[-80.394,391.505,74.591],"1.5833":[-80.548,393.681,74.983],"1.625":[-80.365,393.866,74.897]},"position":{"0.0":[-3.981,-15.496,-17.784],"0.0417":[-4.05,-14.099,-15.272],"0.0833":[-5.038,-12.564,-13.668],"0.125":[-7.197,-10.996,-15.222],"0.1667":[-6.788,-10.789,-16.809],"0.2083":[-3.872,-10.277,-17.265],"0.25":[-2.691,-10.399,-15.187],"0.2917":[-4.031,-10.652,-12.887],"0.3333":[-7.025,-9.286,-13.906],"0.375":[-7.291,-8.558,-16.14],"0.4167":[-6.647,-8.639,-18.606],"0.4583":[-8.369,-9.671,-19.356],"0.5":[-10.594,-10.833,-18.734],"0.5417":[-10.869,-10.364,-17.281],"0.5833":[-9.969,-9.352,-16.459],"0.625":[-7.363,-7.552,-15.459],"0.6667":[-4.6,-7.186,-15.94],"0.7083":[-2.556,-9.364,-16.281],"0.75":[-4.26,-12.152,-15.34],"0.7917":[-3.338,-12.783,-15.025],"0.8333":[-3.944,-13.633,-14.556],"0.875":[-4.194,-13.821,-14.5],"0.9167":[-4.26,-13.789,-14.493],"0.9583":[-4.25,-13.611,-14.512],"1.0":[-4.225,-13.471,-14.525],"1.0417":[-4.213,-13.302,-14.525],"1.0833":[-4.269,-13.377,-14.456],"1.125":[-4.463,-13.414,-14.422],"1.1667":[-5.128,-12.98,-14.515],"1.2083":[-5.578,-12.633,-14.381],"1.25":[-6.181,-12.718,-14.609],"1.2917":[-6.431,-12.921,-14.556],"1.3333":[-6.516,-13.149,-14.428],"1.375":[-6.516,-13.449,-14.287],"1.4167":[-6.494,-13.621,-14.259],"1.4583":[-6.531,-13.674,-14.287],"1.5":[-6.575,-13.611,-14.303],"1.5417":[-6.616,-13.533,-14.312],"1.5833":[-6.641,-13.471,-14.318],"1.625":[-6.635,-13.458,-14.318]}},"up":{"rotation":{"0.0":[74.987,0,0],"0.0417":[54.767,0,0],"0.0833":[54.633,0,0],"0.125":[61.642,0,0],"0.1667":[69.44,0,0],"0.2083":[83.42,0,0],"0.25":[80.829,0,0],"0.2917":[68.994,0,0],"0.3333":[79.91,0,0],"0.375":[94.518,0,0],"0.4167":[115.055,0,0],"0.4583":[124.783,0,0],"0.5":[130.125,0,0],"0.5417":[130.458,0,0],"0.625":[119.327,0,0],"0.6667":[91.852,0,0],"0.7083":[59.169,0,0],"0.75":[0,0,0],"1.625":[0,0,0]}},"down":{"rotation":{"0.0":[-141.057,0,0],"0.0417":[-43.151,0,0],"0.0833":[-20.501,0,0],"0.125":[-1.567,0,0],"0.1667":[0,0,0],"0.375":[-7.945,0,0],"0.4167":[-79.979,0,0],"0.4583":[-169.584,0,0],"0.5":[-165.463,0,0],"0.5417":[-168.98,0,0],"0.5833":[-172.024,0,0],"0.625":[-144.509,0,0],"0.6667":[-66.545,0,0],"0.7083":[-7.557,0,0],"0.75":[-1.002,0,0],"0.7917":[0.081,0,0],"0.9583":[0.081,0,0],"1.0":[0,0,0],"1.625":[0,0,0]}},"lefthand":{"position":[0,1.6,0],"scale":[1,1.6,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.5417":[0,0,-15],"1.125":[0,0,0]},"position":[0,2.7973,0],"scale":[1,1.4,1]},"camera":{"rotation":{"0.0":[-0.015,0.025,-0.042],"0.0417":[-0.058,0.089,-0.155],"0.0833":[-0.189,0.292,-0.472],"0.125":[-0.258,0.4,-0.605],"0.1667":[-0.32,0.489,-0.687],"0.2083":[-0.37,0.553,-0.688],"0.25":[-0.407,0.597,-0.586],"0.2917":[-0.443,0.63,-0.413],"0.3333":[-0.461,0.656,-0.198],"0.375":[-0.359,0.696,0.252],"0.4167":[-0.222,0.709,0.427],"0.4583":[-0.055,0.715,0.54],"0.5":[0.1,0.727,0.592],"0.5417":[0.218,0.732,0.613],"0.5833":[0.18,0.688,0.572],"0.625":[-0.019,0.574,0.448],"0.6667":[-0.248,0.415,0.304],"0.7083":[-0.441,0.243,0.141],"0.75":[-0.521,0.082,-0.002],"0.7917":[0.016,-0.071,-0.022],"0.8333":[0.088,-0.084,-0.021],"0.875":[0.208,-0.109,0.006],"0.9167":[0.245,-0.117,0.022],"0.9583":[0.281,-0.12,0.039],"1.0":[0.309,-0.126,0.055],"1.0417":[0.337,-0.129,0.083],"1.0833":[0.346,-0.129,0.088],"1.125":[0.318,-0.12,0.077],"1.1667":[0.162,-0.073,0.017],"1.2083":[-0.05,-0.01,-0.071],"1.25":[-0.216,0.036,-0.131],"1.2917":[-0.197,0.036,-0.032],"1.3333":[-0.142,0.028,0.099],"1.375":[-0.096,0.017,0.193],"1.4167":[-0.068,0.015,0.204],"1.4583":[-0.05,0.009,0.187],"1.5":[-0.022,0.003,0.105],"1.5417":[-0.013,0.003,0.061],"1.5833":[-0.004,0.001,0.023],"1.625":[-0.004,0.001,0.001]}}},"sound_effects":{"0.0":{"effect":"melee.cobra_vanguard.cobra_vanguard_draw"}}},"draw_1":{"loop":true,"animation_length":1.0417,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[84.643,-32.533,132.877],"0.0417":[81.215,-19.16,132.621],"0.0833":[80.327,-2.868,130.179],"0.125":[80.402,19.29,125.113],"0.1667":[80.579,27.417,121.925],"0.2083":[82.43,29.448,117.528],"0.25":[85.408,27.233,114.488],"0.2917":[89.315,23.514,111.438],"0.3333":[95.891,17.271,106.915],"0.375":[99.774,14.889,104.364],"0.4167":[104.045,13.297,103.341],"0.4583":[105.96,13.628,105.287],"0.5":[108.139,13.542,106.87],"0.5417":[112.728,11.365,107.144],"0.5833":[115.56,10.57,106.249],"0.625":[118.055,13.254,102.107],"0.6667":[119.513,14.615,103.562],"0.7083":[121.181,14.912,109.132],"0.75":[123.299,15.848,116.013],"0.7917":[124.568,17.21,118.906],"0.8333":[126.172,19.241,122.121],"0.875":[126.685,20.112,123.075],"0.9167":[126.774,20.728,123.143],"0.9583":[126.467,21.448,122.331],"1.0":[126.238,21.917,121.75],"1.0417":[126.155,22.167,121.513]},"position":{"0.0":[15.285,-33.88,-8.457],"0.0417":[16.865,-34.548,-7.001],"0.0833":[18.379,-34.876,-5.906],"0.125":[20.161,-34.798,-5.349],"0.1667":[20.684,-34.351,-5.605],"0.2083":[20.288,-32.891,-6.746],"0.25":[19.485,-31.423,-7.9],"0.2917":[18.43,-29.735,-9.235],"0.3333":[16.706,-27.179,-11.301],"0.375":[15.732,-25.614,-12.482],"0.4167":[14.625,-24.607,-13.374],"0.4583":[14.117,-24.759,-13.277],"0.5":[13.724,-24.895,-13.1],"0.5417":[13.415,-24.688,-12.811],"0.5833":[13.37,-24.565,-12.618],"0.625":[13.582,-24.407,-12.553],"0.6667":[13.727,-24.447,-12.683],"0.7083":[13.823,-24.62,-12.954],"0.75":[13.86,-24.806,-13.206],"0.7917":[13.827,-24.849,-13.235],"0.8333":[13.75,-24.883,-13.234],"0.875":[13.709,-24.908,-13.263],"0.9167":[13.674,-24.937,-13.301],"0.9583":[13.626,-24.983,-13.356],"1.0":[13.597,-25.012,-13.395],"1.0417":[13.581,-25.023,-13.414]}},"righthand":{"rotation":{"0.0":[63.477,-3.496,-156.421],"0.0417":[95.308,-15.808,-161.917],"0.0833":[117.603,-17.161,-173.499],"0.125":[129.408,-4.521,-190.093],"0.1667":[132.53,3.194,-196.782],"0.2083":[131.41,10.423,-201.835],"0.25":[128.788,13.618,-203.491],"0.2917":[125.188,16.654,-203.705],"0.3333":[116.12,24.065,-198.703],"0.375":[108.679,29.851,-191.918],"0.4167":[113.343,25.552,-180.899],"0.4583":[117.315,17.761,-174.304],"0.5":[110.345,17.148,-167.653],"0.5417":[96.024,20.388,-157.077],"0.5833":[94.789,17.149,-142.429],"0.625":[100.394,0.403,-120.628],"0.6667":[103.949,-11.084,-114.35],"0.7083":[106.639,-21.963,-109.506],"0.75":[107.801,-29.798,-104.743],"0.7917":[108.32,-30.879,-104.62],"0.8333":[108.473,-30.815,-105.649],"0.875":[108.47,-30.323,-106.54],"0.9167":[108.58,-29.601,-107.258],"0.9583":[108.833,-28.034,-108.173],"1.0":[108.998,-26.894,-108.754],"1.0417":[109.075,-26.339,-109.042]},"position":{"0.0":[-10.066,-24.928,-14.126],"0.0417":[-10.416,-24.171,-13.005],"0.0833":[-10.854,-23.983,-12.421],"0.125":[-11.373,-23.808,-12.026],"0.1667":[-11.58,-23.805,-11.785],"0.2083":[-11.72,-24.099,-11.299],"0.25":[-11.797,-24.395,-10.953],"0.2917":[-11.954,-24.671,-10.715],"0.3333":[-12.58,-24.789,-11.043],"0.375":[-13.161,-24.672,-11.654],"0.4167":[-13.51,-24.966,-11.423],"0.4583":[-13.55,-25.508,-10.815],"0.5":[-13.605,-26.305,-10.425],"0.5417":[-13.5,-27.414,-10.083],"0.5833":[-13.47,-26.568,-10.025],"0.625":[-13.566,-24.397,-9.927],"0.6667":[-13.631,-24.095,-9.887],"0.7083":[-13.698,-23.905,-9.93],"0.75":[-13.575,-23.695,-9.947],"0.7917":[-13.566,-23.647,-9.962],"0.8333":[-13.573,-23.694,-9.96],"0.875":[-13.585,-23.743,-9.955],"0.9167":[-13.599,-23.77,-9.954],"0.9583":[-13.628,-23.787,-9.958],"1.0":[-13.649,-23.794,-9.962],"1.0417":[-13.658,-23.798,-9.965]}},"weapon":{"rotation":{"0.0":[118.523,0.598,10.711],"0.0417":[75.204,7.197,9.032],"0.0833":[9.213,-1.121,6.91],"0.125":[-58.365,6.224,4.13],"0.1667":[-116.438,10.342,2.019],"0.2083":[-188.907,14.73,2.32],"0.25":[-218.758,15.575,4.61],"0.2917":[-246.338,15.03,7.456],"0.3333":[-289.831,7.52,5.091],"0.375":[-325.828,4.168,7.857],"0.4167":[-379.262,8.443,8.952],"0.4583":[-428.058,-17.451,4.75],"0.5":[-436.046,-27.227,7.311],"0.5417":[-430.011,-15.208,23.952],"0.5833":[-429.282,-10.108,43.239],"0.625":[-433.327,6.756,63.782],"0.6667":[-436.084,18.478,69.787],"0.7083":[-438.04,29.512,74.602],"0.75":[-438.605,37.405,79.561],"0.7917":[-439.064,38.519,79.661],"0.8333":[-439.242,38.466,78.6],"0.875":[-439.289,37.973,77.683],"0.9167":[-439.475,37.257,76.908],"0.9583":[-439.882,35.712,75.868],"1.0":[-440.16,34.584,75.204],"1.0417":[-440.289,34.032,74.874]},"position":{"0.0":[-2.628,-12.411,-21.628],"0.0417":[-3.031,-8.667,-18.875],"0.0833":[-3.247,-8.158,-15.112],"0.125":[-3.916,-6.836,-17.072],"0.1667":[-4.485,-5.189,-19.994],"0.2083":[-5.228,-2.723,-21.615],"0.25":[-5.197,-1.98,-21.231],"0.2917":[-4.766,-1.87,-20.359],"0.3333":[-4.3,-3.252,-18.037],"0.375":[-4.316,-6.62,-16.368],"0.4167":[-4.985,-11.596,-14.14],"0.4583":[-5.788,-14.53,-14.422],"0.5":[-5.878,-15.818,-14.459],"0.5417":[-5.616,-17.718,-13.95],"0.5833":[-5.791,-17.271,-13.931],"0.625":[-6.378,-14.996,-14.187],"0.6667":[-6.572,-14.318,-14.262],"0.7083":[-6.706,-13.746,-14.325],"0.75":[-6.606,-13.283,-14.312],"0.7917":[-6.588,-13.193,-14.315],"0.8333":[-6.597,-13.224,-14.312],"0.875":[-6.613,-13.277,-14.309],"0.9167":[-6.619,-13.324,-14.309],"0.9583":[-6.625,-13.386,-14.312],"1.0":[-6.631,-13.43,-14.315],"1.0417":[-6.631,-13.452,-14.315]}},"up":{"rotation":{"0.0":[159.11,0,0],"0.0417":[72.654,0,0],"0.0833":[56.729,0,0],"0.125":[67.994,0,0],"0.1667":[85.134,0,0],"0.2083":[0,0,0],"1.0417":[0,0,0]}},"down":{"rotation":{"0.0":[-155.778,0,0],"0.0417":[-65.328,0,0],"0.0833":[-58.788,0,0],"0.125":[-61.638,0,0],"0.1667":[-63.733,0,0],"0.2083":[0,0,0],"1.0417":[0,0,0]}},"lefthand":{"position":[0,1.6,0],"scale":[1,1.6,1]},"righthand_1":{"rotation":{"0.0":[32.5,0,0],"0.4583":[0,0,0]},"position":[0,2.7973,0],"scale":[1,1.4,1]},"camera":{"rotation":{"0.0":[-0.062,0.062,-0.062],"0.0417":[-0.213,0.226,-0.211],"0.0833":[-0.425,0.441,-0.398],"0.125":[-0.75,0.772,-0.64],"0.1667":[-0.912,0.93,-0.693],"0.2083":[-1.059,1.056,-0.658],"0.25":[-1.122,1.099,-0.589],"0.2917":[-1.175,1.133,-0.498],"0.3333":[-1.28,1.231,-0.334],"0.375":[-1.304,1.29,-0.215],"0.4167":[-1.297,1.303,-0.049],"0.4583":[-1.261,1.235,0.065],"0.5":[-1.067,0.849,0.22],"0.5417":[-0.687,0.217,0.136],"0.5833":[-0.44,-0.073,0.005],"0.625":[-0.182,-0.154,0.001],"0.6667":[-0.044,-0.171,0.001],"0.7083":[0.064,-0.171,0],"0.75":[0.144,-0.052,0],"0.7917":[0.156,0.062,0],"0.8333":[0.132,0.126,0],"0.875":[0.08,0.136,0],"0.9167":[0.028,0.136,0],"0.9583":[-0.047,0.082,0],"1.0":[-0.087,0.037,0],"1.0417":[-0.091,0.027,0]}}},"sound_effects":{"0.0":{"effect":"melee.cobra_vanguard.cobra_vanguard_draw_1"}}},"inspect":{"loop":true,"animation_length":8.6667,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[122.949,14.107,115.539],"0.0417":[120.428,4.604,109.439],"0.0833":[118.901,-5.421,103.584],"0.125":[118.429,-19.169,95.716],"0.1667":[118.997,-26.052,91.511],"0.2083":[119.721,-30.641,88.488],"0.25":[119.762,-30.863,88.333],"0.2917":[119.807,-31.091,88.185],"0.3333":[119.873,-31.415,87.961],"0.375":[119.923,-31.631,87.811],"0.4167":[119.997,-31.945,87.59],"0.4583":[120.048,-32.155,87.446],"0.5":[120.094,-32.362,87.301],"0.5417":[120.178,-32.663,87.084],"0.5833":[120.228,-32.863,86.942],"0.625":[120.31,-33.158,86.731],"0.6667":[120.367,-33.352,86.594],"0.7083":[120.426,-33.54,86.453],"0.75":[120.506,-33.829,86.249],"0.7917":[120.57,-34.009,86.115],"0.8333":[120.658,-34.281,85.915],"0.875":[120.72,-34.462,85.783],"0.9167":[120.781,-34.637,85.65],"0.9583":[120.874,-34.899,85.458],"1.0":[120.933,-35.067,85.329],"1.0417":[121.03,-35.32,85.135],"1.0833":[121.1,-35.483,85.011],"1.125":[121.16,-35.647,84.89],"1.1667":[121.26,-35.887,84.703],"1.2083":[121.321,-36.043,84.586],"1.25":[121.422,-36.27,84.407],"1.2917":[121.493,-36.425,84.286],"1.3333":[121.561,-36.574,84.169],"1.375":[121.662,-36.792,83.995],"1.4167":[121.73,-36.935,83.882],"1.4583":[121.833,-37.142,83.715],"1.5":[121.905,-37.277,83.602],"1.5417":[121.971,-37.41,83.495],"1.5833":[122.074,-37.614,83.334],"1.625":[122.142,-37.74,83.229],"1.6667":[122.247,-37.93,83.074],"1.7083":[122.32,-38.056,82.968],"1.75":[122.389,-38.174,82.867],"1.7917":[122.495,-38.353,82.72],"1.8333":[122.565,-38.468,82.618],"1.875":[122.666,-38.636,82.48],"1.9167":[122.738,-38.746,82.38],"1.9583":[122.811,-38.858,82.282],"2.0":[122.917,-39.015,82.149],"2.0417":[122.983,-39.115,82.067],"2.0833":[123.084,-39.267,81.931],"2.125":[123.159,-39.365,81.84],"2.1667":[123.228,-39.461,81.752],"2.2083":[123.33,-39.597,81.633],"2.25":[123.396,-39.688,81.552],"2.2917":[123.496,-39.822,81.436],"2.3333":[123.565,-39.902,81.357],"2.375":[123.634,-39.986,81.277],"2.4167":[123.729,-40.107,81.167],"2.4583":[123.798,-40.186,81.097],"2.5":[123.893,-40.3,80.992],"2.5417":[123.962,-40.373,80.92],"2.5833":[124.027,-40.444,80.85],"2.625":[124.123,-40.545,80.753],"2.6667":[124.185,-40.612,80.69],"2.7083":[124.28,-40.706,80.599],"2.75":[124.34,-40.768,80.542],"2.7917":[124.403,-40.825,80.482],"2.8333":[124.492,-40.91,80.398],"2.875":[124.55,-40.966,80.347],"2.9167":[124.637,-41.042,80.268],"2.9583":[124.695,-41.091,80.219],"3.0":[124.753,-41.14,80.169],"3.0417":[124.839,-41.207,80.101],"3.0833":[124.891,-41.246,80.059],"3.125":[124.971,-41.31,79.994],"3.1667":[125.025,-41.349,79.957],"3.2083":[125.074,-41.385,79.914],"3.25":[125.149,-41.437,79.864],"3.2917":[125.2,-41.469,79.828],"3.3333":[125.271,-41.51,79.781],"3.375":[125.321,-41.536,79.749],"3.4167":[125.375,-41.563,79.714],"3.4583":[125.435,-41.6,79.679],"3.5":[125.479,-41.621,79.655],"3.5417":[125.546,-41.649,79.616],"3.5833":[125.584,-41.663,79.602],"3.625":[125.63,-41.682,79.579],"3.6667":[125.689,-41.698,79.552],"3.7083":[125.723,-41.707,79.539],"3.75":[125.778,-41.723,79.522],"3.7917":[125.814,-41.731,79.506],"3.8333":[125.85,-41.737,79.501],"3.875":[125.894,-41.735,79.491],"3.9167":[125.927,-41.739,79.482],"3.9583":[125.969,-41.738,79.483],"4.0":[126.001,-41.734,79.478],"4.0417":[126.03,-41.728,79.474],"4.0833":[126.066,-41.717,79.481],"4.125":[126.09,-41.706,79.489],"4.1667":[126.125,-41.691,79.499],"4.2083":[126.148,-41.676,79.501],"4.25":[126.169,-41.661,79.515],"4.2917":[126.199,-41.636,79.529],"4.3333":[126.211,-41.62,79.544],"4.375":[126.228,-41.584,79.573],"4.4167":[126.243,-41.565,79.592],"4.4583":[126.257,-41.535,79.609],"4.5":[126.278,-41.501,79.638],"4.5417":[126.286,-41.472,79.666],"4.5833":[126.295,-41.424,79.707],"4.625":[126.301,-41.393,79.734],"4.6667":[126.306,-41.359,79.76],"4.7083":[126.314,-41.306,79.803],"4.75":[126.314,-41.27,79.84],"4.7917":[126.315,-41.21,79.89],"4.8333":[126.314,-41.169,79.928],"4.875":[126.308,-41.127,79.966],"4.9167":[126.299,-41.058,80.027],"4.9583":[126.293,-41.011,80.067],"5.0":[126.28,-40.941,80.134],"5.0417":[126.27,-40.89,80.177],"5.0833":[126.262,-40.841,80.22],"5.125":[126.241,-40.761,80.295],"5.1667":[126.224,-40.705,80.347],"5.2083":[126.196,-40.622,80.426],"5.25":[126.184,-40.563,80.477],"5.2917":[126.16,-40.5,80.532],"5.3333":[126.132,-40.405,80.615],"5.375":[126.108,-40.344,80.676],"5.4167":[126.069,-40.247,80.766],"5.4583":[126.045,-40.18,80.824],"5.5":[126.02,-40.109,80.89],"5.5417":[125.969,-40.004,80.986],"5.5833":[125.94,-39.931,81.054],"5.625":[125.887,-39.82,81.154],"5.6667":[125.856,-39.747,81.22],"5.7083":[125.82,-39.669,81.289],"5.75":[125.764,-39.552,81.398],"5.7917":[125.721,-39.472,81.473],"5.8333":[125.664,-39.347,81.582],"5.875":[125.618,-39.263,81.663],"5.9167":[125.575,-39.176,81.735],"5.9583":[125.509,-39.05,81.85],"6.0":[125.458,-38.96,81.938],"6.0417":[125.385,-38.824,82.057],"6.0833":[125.336,-38.73,82.135],"6.125":[125.281,-38.638,82.22],"6.1667":[125.198,-38.493,82.351],"6.2083":[125.144,-38.398,82.439],"6.25":[125.06,-38.252,82.566],"6.2917":[125.002,-38.152,82.651],"6.3333":[124.946,-38.048,82.738],"6.375":[124.849,-37.898,82.878],"6.4167":[124.777,-37.789,82.973],"6.4583":[124.686,-37.631,83.106],"6.5":[124.615,-37.522,83.205],"6.5417":[124.549,-37.415,83.295],"6.5833":[124.442,-37.246,83.439],"6.625":[124.371,-37.133,83.539],"6.6667":[124.256,-36.962,83.685],"6.7083":[124.182,-36.845,83.78],"6.75":[124.11,-36.731,83.881],"6.7917":[123.989,-36.551,84.033],"6.8333":[123.908,-36.431,84.135],"6.875":[123.786,-36.247,84.287],"6.9167":[123.705,-36.125,84.384],"6.9583":[123.621,-35.996,84.491],"7.0":[123.491,-35.811,84.644],"7.0417":[123.405,-35.68,84.746],"7.0833":[123.271,-35.488,84.909],"7.125":[123.179,-35.355,85.017],"7.1667":[123.084,-35.219,85.122],"7.2083":[122.942,-35.02,85.285],"7.25":[122.847,-34.883,85.393],"7.2917":[122.704,-34.678,85.555],"7.3333":[122.606,-34.538,85.663],"7.375":[122.503,-34.394,85.776],"7.4167":[122.349,-34.184,85.938],"7.4583":[122.248,-34.038,86.053],"7.5":[122.094,-33.826,86.215],"7.5417":[121.986,-33.678,86.322],"7.5833":[121.877,-33.528,86.439],"7.625":[121.71,-33.303,86.608],"7.6667":[121.602,-33.151,86.719],"7.7083":[121.438,-32.922,86.886],"7.75":[121.318,-32.769,87],"7.7917":[121.203,-32.61,87.117],"7.8333":[121.029,-32.376,87.286],"7.875":[120.909,-32.217,87.401],"7.9167":[120.729,-31.977,87.57],"7.9583":[120.608,-31.812,87.684],"8.0":[120.483,-31.65,87.8],"8.0417":[120.294,-31.403,87.972],"8.0833":[120.17,-31.235,88.087],"8.125":[119.976,-30.983,88.26],"8.1667":[119.846,-30.816,88.373],"8.2083":[119.715,-30.645,88.489],"8.25":[106.847,16.533,111.457],"8.2917":[109.802,12.848,106.567],"8.3333":[115.614,10.442,106.435],"8.375":[117.84,12.793,102.517],"8.4167":[119.715,14.587,104.193],"8.4583":[122.587,15.294,114.061],"8.5":[124.066,16.579,118.012],"8.5417":[125.951,18.976,121.911],"8.5833":[126.602,20.217,123.081],"8.625":[126.452,21.208,122.453],"8.6667":[126.151,22.168,121.515]},"position":{"0.0":[14.138,-26.748,-12.571],"0.0417":[14.72,-28.665,-11.72],"0.0833":[15.248,-30.61,-10.976],"0.125":[15.84,-33.267,-10.183],"0.1667":[16.081,-34.626,-9.872],"0.2083":[16.221,-35.549,-9.695],"0.25":[16.227,-35.596,-9.685],"0.2917":[16.234,-35.643,-9.677],"0.3333":[16.244,-35.706,-9.667],"0.375":[16.249,-35.752,-9.657],"0.4167":[16.259,-35.818,-9.647],"0.4583":[16.262,-35.859,-9.638],"0.5":[16.269,-35.902,-9.631],"0.5417":[16.278,-35.967,-9.621],"0.5833":[16.284,-36.007,-9.612],"0.625":[16.291,-36.069,-9.603],"0.6667":[16.296,-36.108,-9.593],"0.7083":[16.302,-36.149,-9.587],"0.75":[16.308,-36.207,-9.575],"0.7917":[16.313,-36.246,-9.57],"0.8333":[16.318,-36.303,-9.559],"0.875":[16.323,-36.342,-9.553],"0.9167":[16.328,-36.379,-9.544],"0.9583":[16.333,-36.435,-9.537],"1.0":[16.338,-36.47,-9.528],"1.0417":[16.347,-36.524,-9.519],"1.0833":[16.347,-36.559,-9.513],"1.125":[16.353,-36.593,-9.507],"1.1667":[16.356,-36.644,-9.496],"1.2083":[16.361,-36.679,-9.491],"1.25":[16.367,-36.728,-9.48],"1.2917":[16.369,-36.759,-9.475],"1.3333":[16.373,-36.794,-9.468],"1.375":[16.38,-36.841,-9.461],"1.4167":[16.381,-36.871,-9.453],"1.4583":[16.386,-36.917,-9.444],"1.5":[16.387,-36.947,-9.441],"1.5417":[16.392,-36.976,-9.435],"1.5833":[16.397,-37.02,-9.425],"1.625":[16.397,-37.047,-9.418],"1.6667":[16.403,-37.089,-9.411],"1.7083":[16.402,-37.118,-9.405],"1.75":[16.407,-37.144,-9.401],"1.7917":[16.411,-37.184,-9.392],"1.8333":[16.411,-37.209,-9.385],"1.875":[16.416,-37.247,-9.379],"1.9167":[16.416,-37.27,-9.373],"1.9583":[16.419,-37.297,-9.368],"2.0":[16.423,-37.331,-9.359],"2.0417":[16.423,-37.354,-9.357],"2.0833":[16.427,-37.39,-9.348],"2.125":[16.428,-37.412,-9.341],"2.1667":[16.429,-37.432,-9.338],"2.2083":[16.432,-37.465,-9.329],"2.25":[16.435,-37.485,-9.325],"2.2917":[16.435,-37.514,-9.318],"2.3333":[16.436,-37.533,-9.312],"2.375":[16.439,-37.555,-9.308],"2.4167":[16.439,-37.583,-9.302],"2.4583":[16.441,-37.6,-9.298],"2.5":[16.441,-37.626,-9.291],"2.5417":[16.443,-37.643,-9.287],"2.5833":[16.445,-37.659,-9.281],"2.625":[16.446,-37.684,-9.273],"2.6667":[16.446,-37.698,-9.27],"2.7083":[16.448,-37.721,-9.263],"2.75":[16.449,-37.738,-9.261],"2.7917":[16.447,-37.751,-9.256],"2.8333":[16.45,-37.772,-9.251],"2.875":[16.45,-37.784,-9.245],"2.9167":[16.45,-37.802,-9.242],"2.9583":[16.449,-37.816,-9.237],"3.0":[16.451,-37.827,-9.234],"3.0417":[16.451,-37.845,-9.227],"3.0833":[16.454,-37.854,-9.224],"3.125":[16.452,-37.869,-9.218],"3.1667":[16.452,-37.88,-9.216],"3.2083":[16.453,-37.889,-9.21],"3.25":[16.454,-37.902,-9.207],"3.2917":[16.453,-37.908,-9.205],"3.3333":[16.453,-37.92,-9.199],"3.375":[16.453,-37.928,-9.197],"3.4167":[16.452,-37.934,-9.192],"3.4583":[16.452,-37.943,-9.189],"3.5":[16.45,-37.95,-9.185],"3.5417":[16.452,-37.958,-9.18],"3.5833":[16.452,-37.964,-9.18],"3.625":[16.451,-37.968,-9.174],"3.6667":[16.449,-37.972,-9.173],"3.7083":[16.45,-37.976,-9.172],"3.75":[16.448,-37.981,-9.165],"3.7917":[16.449,-37.984,-9.164],"3.8333":[16.449,-37.985,-9.161],"3.875":[16.448,-37.986,-9.157],"3.9167":[16.448,-37.989,-9.155],"3.9583":[16.448,-37.989,-9.152],"4.0":[16.446,-37.991,-9.148],"4.0417":[16.446,-37.991,-9.147],"4.0833":[16.446,-37.989,-9.145],"4.125":[16.445,-37.988,-9.144],"4.1667":[16.445,-37.985,-9.141],"4.2083":[16.441,-37.983,-9.139],"4.25":[16.44,-37.981,-9.138],"4.2917":[16.44,-37.975,-9.136],"4.3333":[16.44,-37.972,-9.135],"4.375":[16.439,-37.967,-9.134],"4.4167":[16.439,-37.961,-9.132],"4.4583":[16.436,-37.956,-9.13],"4.5":[16.435,-37.95,-9.128],"4.5417":[16.434,-37.945,-9.128],"4.5833":[16.432,-37.936,-9.128],"4.625":[16.43,-37.926,-9.127],"4.6667":[16.429,-37.92,-9.127],"4.7083":[16.427,-37.909,-9.127],"4.75":[16.426,-37.902,-9.126],"4.7917":[16.424,-37.889,-9.126],"4.8333":[16.422,-37.881,-9.126],"4.875":[16.421,-37.872,-9.126],"4.9167":[16.42,-37.857,-9.126],"4.9583":[16.418,-37.847,-9.127],"5.0":[16.416,-37.832,-9.127],"5.0417":[16.415,-37.821,-9.127],"5.0833":[16.414,-37.81,-9.127],"5.125":[16.411,-37.792,-9.128],"5.1667":[16.41,-37.779,-9.129],"5.2083":[16.41,-37.76,-9.131],"5.25":[16.408,-37.747,-9.132],"5.2917":[16.405,-37.736,-9.134],"5.3333":[16.403,-37.714,-9.136],"5.375":[16.401,-37.7,-9.136],"5.4167":[16.399,-37.677,-9.138],"5.4583":[16.398,-37.665,-9.142],"5.5":[16.395,-37.648,-9.144],"5.5417":[16.394,-37.623,-9.145],"5.5833":[16.391,-37.606,-9.147],"5.625":[16.389,-37.583,-9.152],"5.6667":[16.387,-37.565,-9.154],"5.7083":[16.385,-37.547,-9.156],"5.75":[16.381,-37.522,-9.159],"5.7917":[16.381,-37.503,-9.163],"5.8333":[16.377,-37.476,-9.167],"5.875":[16.377,-37.457,-9.168],"5.9167":[16.376,-37.439,-9.174],"5.9583":[16.372,-37.408,-9.176],"6.0":[16.369,-37.39,-9.18],"6.0417":[16.367,-37.36,-9.187],"6.0833":[16.364,-37.337,-9.19],"6.125":[16.363,-37.318,-9.196],"6.1667":[16.361,-37.284,-9.2],"6.2083":[16.357,-37.264,-9.203],"6.25":[16.354,-37.23,-9.211],"6.2917":[16.352,-37.206,-9.214],"6.3333":[16.35,-37.184,-9.222],"6.375":[16.345,-37.15,-9.227],"6.4167":[16.344,-37.126,-9.234],"6.4583":[16.34,-37.09,-9.243],"6.5":[16.34,-37.065,-9.246],"6.5417":[16.336,-37.041,-9.25],"6.5833":[16.333,-37.002,-9.26],"6.625":[16.332,-36.978,-9.267],"6.6667":[16.328,-36.939,-9.274],"6.7083":[16.326,-36.914,-9.282],"6.75":[16.324,-36.886,-9.285],"6.7917":[16.32,-36.848,-9.297],"6.8333":[16.318,-36.818,-9.304],"6.875":[16.316,-36.779,-9.315],"6.9167":[16.312,-36.752,-9.32],"6.9583":[16.311,-36.725,-9.328],"7.0":[16.308,-36.681,-9.339],"7.0417":[16.305,-36.653,-9.345],"7.0833":[16.301,-36.609,-9.357],"7.125":[16.301,-36.579,-9.365],"7.1667":[16.296,-36.55,-9.372],"7.2083":[16.293,-36.507,-9.385],"7.25":[16.29,-36.476,-9.395],"7.2917":[16.287,-36.429,-9.406],"7.3333":[16.286,-36.398,-9.415],"7.375":[16.283,-36.366,-9.426],"7.4167":[16.28,-36.32,-9.44],"7.4583":[16.275,-36.288,-9.448],"7.5":[16.273,-36.241,-9.464],"7.5417":[16.271,-36.209,-9.471],"7.5833":[16.267,-36.175,-9.482],"7.625":[16.263,-36.126,-9.498],"7.6667":[16.262,-36.093,-9.508],"7.7083":[16.257,-36.043,-9.523],"7.75":[16.256,-36.009,-9.533],"7.7917":[16.251,-35.976,-9.547],"7.8333":[16.247,-35.922,-9.562],"7.875":[16.245,-35.89,-9.574],"7.9167":[16.242,-35.838,-9.593],"7.9583":[16.24,-35.801,-9.606],"8.0":[16.239,-35.765,-9.617],"8.0417":[16.234,-35.711,-9.634],"8.0833":[16.23,-35.677,-9.648],"8.125":[16.227,-35.622,-9.669],"8.1667":[16.225,-35.585,-9.681],"8.2083":[16.222,-35.55,-9.695],"8.25":[13.372,-25.369,-13.828],"8.2917":[13.706,-24.6,-12.85],"8.3333":[13.364,-24.567,-12.617],"8.375":[13.439,-24.41,-12.548],"8.4167":[13.572,-24.455,-12.713],"8.4583":[13.7,-24.752,-13.149],"8.5":[13.681,-24.844,-13.229],"8.5417":[13.593,-24.915,-13.228],"8.5833":[13.563,-24.957,-13.272],"8.625":[13.569,-24.991,-13.342],"8.6667":[13.579,-25.026,-13.413]}},"righthand":{"rotation":{"0.0":[119.733,-14.91,-101.476],"0.0417":[130.71,-5.751,-92.753],"0.0833":[137.137,-2.982,-86.141],"0.125":[136.616,-5.991,-86.883],"0.1667":[135.816,-4.006,-97.504],"0.2083":[133.549,0.413,-117.069],"0.25":[130.743,2.895,-131.981],"0.2917":[127.029,4.201,-148.274],"0.3333":[120.642,1.76,-176.875],"0.375":[117.44,-5.324,-202.806],"0.4167":[117.299,-14.381,-238.319],"0.4583":[116.105,-17.098,-243.935],"0.5":[111.97,-22.443,-216.162],"0.5417":[100.341,-24.168,-158.162],"0.5833":[94.48,-22.774,-127.635],"0.625":[89.788,-22.388,-94.186],"0.6667":[93.138,-24.023,-70.563],"0.7083":[97.368,-28.154,-48.555],"0.75":[100.338,-31.078,-36.164],"0.7917":[104.183,-26.514,-52.048],"0.8333":[104.25,-12.154,-93.364],"0.875":[99.259,-4.248,-118.754],"0.9167":[92.678,-0.14,-141.691],"0.9583":[92.294,-2.708,-151.112],"1.0":[92.923,-2.584,-152.451],"1.0417":[84.561,14.817,-166.773],"1.0833":[71.383,29.057,-184.611],"1.125":[75.841,32.18,-188.53],"1.1667":[111.718,18.344,-172.445],"1.2083":[124.016,13.626,-166.817],"1.25":[136.528,6.756,-164.843],"1.2917":[149.099,-9.175,-180.837],"1.3333":[159.576,-20.505,-199.04],"1.375":[142.291,-23.667,-192.874],"1.4167":[122.461,-19.889,-182.145],"1.4583":[95.505,-6.281,-174.321],"1.5":[94.579,-0.373,-183.924],"1.5417":[97.909,4.686,-196.897],"1.5833":[102.842,14.42,-218.021],"1.625":[104.38,18.885,-229.049],"1.6667":[103.566,19.213,-237.308],"1.7083":[102.8,17.621,-240.358],"1.75":[102.168,16.451,-242.34],"1.7917":[101.515,18.347,-244.018],"1.8333":[101.216,21.439,-243.342],"1.875":[102.016,25.583,-239.089],"1.9167":[104.186,27.51,-232.38],"1.9583":[106.162,28.294,-223.2],"2.0":[101.734,23.901,-208.916],"2.0417":[90.964,17.993,-202.436],"2.0833":[75.979,10.759,-190.907],"2.125":[73.031,8.194,-181.31],"2.1667":[77.423,5.329,-170.53],"2.2083":[84.52,0.455,-155.129],"2.25":[84.659,-0.197,-146.01],"2.2917":[83.178,2.113,-132.652],"2.3333":[83.267,4.627,-126.256],"2.375":[84.464,6.697,-129.545],"2.4167":[86.039,10.026,-138.417],"2.4583":[89.358,11.408,-142.111],"2.5":[103.167,8.924,-135.211],"2.5417":[116.739,1.797,-124.97],"2.5833":[129.558,-6.168,-118.881],"2.625":[145.106,-3.08,-129.304],"2.6667":[151.553,11.691,-146.091],"2.7083":[149.414,39.204,-175.55],"2.75":[146.07,47.076,-183.341],"2.7917":[143.219,52.664,-187.932],"2.8333":[139.712,58.066,-192.53],"2.875":[136.209,61.452,-197.101],"2.9167":[133.173,63.859,-200.752],"2.9583":[139.868,57.992,-192.272],"3.0":[149.154,37.224,-176.745],"3.0417":[149.232,-7.694,-158.519],"3.0833":[145.655,-24.707,-151.793],"3.125":[146.513,-28.644,-153.596],"3.1667":[148.961,-26.085,-158.137],"3.2083":[152.054,-16.677,-163.288],"3.25":[155.071,4.268,-169.45],"3.2917":[154.508,17.732,-173.432],"3.3333":[142.195,34.948,-185.858],"3.375":[129.266,41.1,-197.085],"3.4167":[116.689,43.584,-207.553],"3.4583":[96.375,41.824,-220.324],"3.5":[82.175,37.437,-226.02],"3.5417":[68.828,29.274,-234.014],"3.5833":[70.01,26.68,-239.462],"3.625":[72.05,24.78,-244.892],"3.6667":[74.506,23.44,-252.322],"3.7083":[71.716,23.748,-255.188],"3.75":[63.458,23.737,-257.773],"3.7917":[54.141,20.521,-257.483],"3.8333":[39.306,14.998,-253.528],"3.875":[25.609,7.042,-249.099],"3.9167":[37.288,2.188,-255.036],"3.9583":[69.389,2.32,-271.361],"4.0":[90.124,7.993,-277.131],"4.0417":[93.861,9.686,-259.941],"4.0833":[78.772,14.893,-207.61],"4.125":[76.964,21.47,-176.813],"4.1667":[87.5,16.741,-142.455],"4.2083":[93.543,7.639,-126.648],"4.25":[95.905,0.173,-114.746],"4.2917":[93.885,-3.33,-100.839],"4.3333":[92.122,-3.088,-95.28],"4.375":[95.049,-2.984,-101.527],"4.4167":[103.808,0.292,-125.918],"4.4583":[109.244,5.708,-145.272],"4.5":[111.089,15.65,-164.636],"4.5417":[108.433,22.43,-172.099],"4.5833":[106.594,28.554,-171.232],"4.625":[110.666,27.821,-156.008],"4.6667":[115.469,23.361,-134.483],"4.7083":[118.748,12.189,-105.061],"4.75":[118.59,4.572,-94.43],"4.7917":[118.447,-7.709,-91.582],"4.8333":[120.902,-16.614,-90.705],"4.875":[128.199,-27.452,-87.592],"4.9167":[142.539,-43.544,-87.073],"4.9583":[143.925,-48.723,-87.835],"5.0":[130.642,-50.065,-84.108],"5.0417":[123.089,-48.591,-85.465],"5.0833":[125.37,-46.59,-96.08],"5.125":[153.023,-29.175,-136.797],"5.1667":[162.971,-7.539,-156.836],"5.2083":[162.623,6.463,-167.552],"5.25":[159.369,5.487,-167.331],"5.2917":[154.462,3.364,-166.219],"5.3333":[146.441,1.408,-165.49],"5.375":[141.125,1.176,-166.077],"5.4167":[134.024,2.812,-169.166],"5.4583":[131.121,6.852,-175.46],"5.5":[128.241,11.584,-183.417],"5.5417":[120.333,18.083,-194.298],"5.5833":[110.467,21.403,-199.255],"5.625":[92.812,25.088,-204.939],"5.6667":[85.742,27.398,-208.237],"5.7083":[83.641,30.486,-209.732],"5.75":[78.879,34.214,-214.139],"5.7917":[65.879,33.471,-223.19],"5.8333":[36.09,20.14,-240.507],"5.875":[25.396,6.977,-247.776],"5.9167":[31.841,-5.391,-256.601],"5.9583":[60.841,-16.492,-275.602],"6.0":[75.538,-14.342,-276.962],"6.0417":[71.58,-4.53,-243.925],"6.0833":[69.029,6.233,-216.999],"6.125":[72.573,17.16,-189.624],"6.1667":[91.521,24.036,-148.537],"6.2083":[107.056,19.498,-122.636],"6.25":[115.259,7.272,-98.839],"6.2917":[109.278,2.977,-95.408],"6.3333":[101.283,-0.744,-93.509],"6.375":[92.635,-3.336,-96.407],"6.4167":[93.471,-3.156,-100.968],"6.4583":[96.055,-1.016,-109.968],"6.5":[97.886,1.112,-122.979],"6.5417":[99.574,5.377,-145.693],"6.5833":[99.243,11.088,-169.808],"6.625":[96.762,15.433,-181.281],"6.6667":[89.841,22.186,-194.344],"6.7083":[90.886,28.458,-187.495],"6.75":[112.132,31.519,-142.042],"6.7917":[132.646,8.187,-73.812],"6.8333":[134.322,8.01,-61.221],"6.875":[137.133,16.851,-62.202],"6.9167":[137.409,14.164,-64.787],"6.9583":[137.359,9.274,-69.709],"7.0":[137.575,1.612,-77.555],"7.0417":[137.249,-2.485,-82.072],"7.0833":[136.87,-7.325,-87.987],"7.125":[137.33,-11.049,-92.014],"7.1667":[140.083,-19.218,-98.412],"7.2083":[149.511,-31.127,-114.768],"7.25":[151.278,-20.339,-123.397],"7.2917":[140.876,17.5,-133.655],"7.3333":[126.23,41.63,-148.049],"7.375":[102.676,55.337,-173.883],"7.4167":[57.413,56.08,-224.46],"7.4583":[42.711,47.156,-244.587],"7.5":[50.626,31.094,-258.981],"7.5417":[67.545,22.789,-264.559],"7.5833":[81.597,18.205,-260.714],"7.625":[88.249,11.814,-232.567],"7.6667":[89.374,8.573,-205.297],"7.7083":[95.728,5.109,-154.792],"7.75":[105.612,-2.137,-108.196],"7.7917":[108.009,-14.537,-69.308],"7.8333":[102.46,-26.891,-59.878],"7.875":[108.171,-21.09,-80.035],"7.9167":[111.288,-2.104,-115.342],"7.9583":[107.684,9.902,-138.035],"8.0":[103.175,17.313,-156.832],"8.0417":[102.204,22.425,-174.742],"8.0833":[104.525,24.859,-182.476],"8.125":[108.042,28.088,-191.481],"8.1667":[107.252,29.811,-198.402],"8.2083":[94.541,26.964,-207.391],"8.25":[92.477,16.688,-179.41],"8.2917":[99.871,12.34,-141.942],"8.3333":[103.102,0.676,-105.106],"8.375":[101.817,-1.972,-94.274],"8.4167":[99.921,1.357,-97.03],"8.4583":[99.308,-1.008,-102.405],"8.5":[101.229,-10.102,-103.373],"8.5417":[104.913,-22.701,-105.499],"8.5833":[106.548,-25.463,-106.839],"8.625":[107.803,-25.912,-107.932],"8.6667":[109.073,-26.336,-109.044]},"position":{"0.0":[-13.023,-23.819,-10.649],"0.0417":[-12.269,-23.754,-11.497],"0.0833":[-11.706,-23.685,-12.036],"0.125":[-11.667,-23.63,-12.114],"0.1667":[-12.042,-23.587,-12.298],"0.2083":[-12.65,-23.454,-12.625],"0.25":[-12.978,-23.393,-12.805],"0.2917":[-13.169,-23.405,-12.933],"0.3333":[-13.011,-23.764,-12.966],"0.375":[-12.416,-24.394,-12.847],"0.4167":[-11.751,-24.691,-12.778],"0.4583":[-11.704,-24.513,-12.747],"0.5":[-11.891,-24.216,-12.697],"0.5417":[-12.352,-23.393,-12.583],"0.5833":[-12.219,-22.873,-12.542],"0.625":[-11.588,-22.78,-12.542],"0.6667":[-11.69,-23.369,-12.567],"0.7083":[-11.941,-23.995,-12.638],"0.75":[-12.055,-24.288,-12.707],"0.7917":[-11.955,-24.17,-12.672],"0.8333":[-11.871,-23.547,-12.593],"0.875":[-11.913,-23.119,-12.577],"0.9167":[-12.125,-22.828,-12.585],"0.9583":[-12.932,-23.429,-12.569],"1.0":[-13.294,-23.803,-12.573],"1.0417":[-13.738,-24.195,-12.867],"1.0833":[-13.908,-24.62,-13.385],"1.125":[-13.771,-24.711,-13.432],"1.1667":[-13.315,-24.171,-13.093],"1.2083":[-13.851,-23.898,-13.243],"1.25":[-14.92,-23.698,-13.478],"1.2917":[-14.761,-23.902,-13.785],"1.3333":[-14.254,-23.91,-14.167],"1.375":[-13.626,-24.23,-13.517],"1.4167":[-13.087,-24.388,-12.956],"1.4583":[-12.456,-24.219,-12.59],"1.5":[-12.453,-24.037,-12.629],"1.5417":[-12.522,-23.874,-12.695],"1.5833":[-12.433,-23.613,-12.885],"1.625":[-12.33,-23.418,-13.004],"1.6667":[-12.152,-23.225,-13.005],"1.7083":[-12.078,-23.126,-12.957],"1.75":[-12.027,-23.037,-12.923],"1.7917":[-11.989,-22.899,-12.96],"1.8333":[-12.002,-22.823,-13.033],"1.875":[-12.034,-22.855,-13.156],"1.9167":[-12.075,-23.041,-13.241],"1.9583":[-12.18,-23.266,-13.296],"2.0":[-12.503,-23.542,-13.137],"2.0417":[-12.709,-23.603,-12.941],"2.0833":[-12.78,-23.524,-12.88],"2.125":[-12.623,-23.322,-12.875],"2.1667":[-12.378,-22.963,-12.77],"2.2083":[-12.084,-22.432,-12.638],"2.25":[-11.977,-22.138,-12.624],"2.2917":[-11.88,-21.653,-12.645],"2.3333":[-11.878,-21.345,-12.668],"2.375":[-12.028,-21.178,-12.687],"2.4167":[-12.313,-21.003,-12.727],"2.4583":[-12.509,-21.059,-12.745],"2.5":[-12.781,-21.594,-12.788],"2.5417":[-13.021,-22.201,-12.927],"2.5833":[-13.341,-22.756,-13.211],"2.625":[-13.773,-23.319,-13.771],"2.6667":[-13.848,-23.728,-14.191],"2.7083":[-13.443,-24.23,-14.625],"2.75":[-13.329,-24.123,-14.711],"2.7917":[-13.287,-23.926,-14.78],"2.8333":[-13.262,-23.691,-14.853],"2.875":[-13.223,-23.66,-14.897],"2.9167":[-13.198,-23.702,-14.933],"2.9583":[-13.269,-23.664,-14.853],"3.0":[-13.398,-23.487,-14.542],"3.0417":[-13.141,-23.243,-13.894],"3.0833":[-12.87,-23.242,-13.74],"3.125":[-12.737,-23.327,-13.782],"3.1667":[-12.694,-23.408,-13.864],"3.2083":[-12.781,-23.414,-13.981],"3.25":[-12.993,-23.359,-14.245],"3.2917":[-13.064,-23.409,-14.39],"3.3333":[-13.089,-24.027,-14.291],"3.375":[-13.123,-24.479,-14.126],"3.4167":[-13.177,-24.812,-13.977],"3.4583":[-13.357,-25.085,-13.722],"3.5":[-13.522,-25.101,-13.575],"3.5417":[-13.595,-24.978,-13.438],"3.5833":[-13.457,-24.827,-13.337],"3.625":[-13.291,-24.626,-13.247],"3.6667":[-13.066,-24.215,-13.163],"3.7083":[-13.12,-23.851,-13.191],"3.75":[-13.362,-23.313,-13.303],"3.7917":[-13.604,-23.112,-13.437],"3.8333":[-13.886,-22.974,-13.799],"3.875":[-13.983,-23.163,-14.239],"3.9167":[-13.897,-23.76,-13.756],"3.9583":[-13.069,-24.844,-12.885],"4.0":[-12.321,-25.261,-12.802],"4.0417":[-12.58,-25.1,-12.822],"4.0833":[-13.839,-23.289,-12.943],"4.125":[-13.867,-21.934,-13.056],"4.1667":[-13.152,-21.733,-12.86],"4.2083":[-12.696,-22.153,-12.671],"4.25":[-12.392,-22.439,-12.573],"4.2917":[-12.134,-22.251,-12.523],"4.3333":[-12.043,-21.975,-12.513],"4.375":[-12.228,-21.576,-12.501],"4.4167":[-12.741,-21.489,-12.583],"4.4583":[-13.038,-21.598,-12.715],"4.5":[-13.279,-21.762,-12.916],"4.5417":[-13.439,-21.781,-13.03],"4.5833":[-13.673,-21.669,-13.172],"4.625":[-13.782,-21.386,-13.208],"4.6667":[-13.753,-21.002,-13.173],"4.7083":[-13.442,-20.662,-13.006],"4.75":[-13.276,-20.732,-12.893],"4.7917":[-13.226,-21.19,-12.799],"4.8333":[-13.315,-21.447,-12.85],"4.875":[-13.613,-21.497,-13.081],"4.9167":[-14.097,-21.243,-13.639],"4.9583":[-14.129,-21.078,-13.773],"5.0":[-13.777,-20.909,-13.578],"5.0417":[-13.476,-20.814,-13.46],"5.0833":[-13.341,-20.784,-13.491],"5.125":[-13.598,-21.21,-14.073],"5.1667":[-13.532,-21.663,-14.559],"5.2083":[-13.317,-22.024,-14.696],"5.25":[-13.312,-22.137,-14.541],"5.2917":[-13.305,-22.264,-14.309],"5.3333":[-13.249,-22.361,-13.964],"5.375":[-13.189,-22.386,-13.761],"5.4167":[-13.098,-22.463,-13.536],"5.4583":[-13.042,-22.627,-13.499],"5.5":[-12.982,-22.826,-13.492],"5.5417":[-12.964,-23.129,-13.406],"5.5833":[-13.066,-23.359,-13.266],"5.625":[-13.329,-23.647,-13.137],"5.6667":[-13.471,-23.663,-13.185],"5.7083":[-13.597,-23.553,-13.277],"5.75":[-13.753,-23.297,-13.426],"5.7917":[-13.882,-23.124,-13.564],"5.8333":[-14.036,-22.959,-14.034],"5.875":[-14.039,-23.159,-14.26],"5.9167":[-13.858,-23.693,-13.88],"5.9583":[-12.939,-24.443,-12.979],"6.0":[-12.382,-24.461,-12.709],"6.0417":[-12.637,-23.687,-12.762],"6.0833":[-12.945,-22.797,-12.891],"6.125":[-13.091,-21.932,-13.013],"6.1667":[-13.141,-21.542,-13.033],"6.2083":[-13.244,-21.829,-13],"6.25":[-13.202,-22.265,-12.877],"6.2917":[-12.886,-22.518,-12.728],"6.3333":[-12.484,-22.704,-12.596],"6.375":[-12.056,-22.191,-12.45],"6.4167":[-12.126,-21.114,-12.279],"6.4583":[-12.266,-19.587,-12.135],"6.5":[-12.452,-18.84,-12.248],"6.5417":[-12.73,-18.662,-12.694],"6.5833":[-12.927,-18.871,-13.229],"6.625":[-13.12,-19.355,-13.456],"6.6667":[-13.55,-20.48,-13.654],"6.7083":[-13.595,-21.275,-13.795],"6.75":[-12.855,-21.826,-13.902],"6.7917":[-10.544,-22.779,-13.507],"6.8333":[-9.828,-23.782,-13.393],"6.875":[-9.567,-24.683,-13.451],"6.9167":[-9.582,-24.307,-13.404],"6.9583":[-9.722,-23.548,-13.362],"7.0":[-9.895,-22.446,-13.31],"7.0417":[-9.894,-22.036,-13.21],"7.0833":[-9.858,-21.764,-13.063],"7.125":[-9.852,-21.677,-13.011],"7.1667":[-9.899,-21.674,-13.079],"7.2083":[-9.893,-21.629,-13.434],"7.25":[-9.911,-21.396,-13.482],"7.2917":[-10.155,-20.816,-13.45],"7.3333":[-10.357,-20.558,-13.678],"7.375":[-10.463,-20.526,-13.917],"7.4167":[-10.447,-20.624,-14.158],"7.4583":[-10.317,-20.895,-14.105],"7.5":[-10.259,-21.857,-13.52],"7.5417":[-9.893,-22.611,-12.987],"7.5833":[-9.745,-23.075,-12.645],"7.625":[-10.291,-23.627,-12.049],"7.6667":[-10.792,-23.693,-11.622],"7.7083":[-10.883,-22.926,-11.244],"7.75":[-10.636,-21.334,-11.229],"7.7917":[-10.421,-20.063,-11.236],"7.8333":[-10.552,-20.584,-11.269],"7.875":[-10.991,-21.118,-11.541],"7.9167":[-11.946,-21.993,-12.149],"7.9583":[-12.655,-22.583,-12.59],"8.0":[-13.214,-22.987,-12.918],"8.0417":[-13.713,-22.974,-13.147],"8.0833":[-13.896,-22.692,-13.22],"8.125":[-13.993,-22.191,-13.285],"8.1667":[-13.986,-22.017,-13.306],"8.2083":[-13.849,-22.449,-13.335],"8.25":[-13.265,-23.592,-10.779],"8.2917":[-12.535,-23.491,-9.849],"8.3333":[-12.742,-23.906,-9.746],"8.375":[-12.847,-23.765,-9.746],"8.4167":[-13.025,-23.125,-9.841],"8.4583":[-13.285,-22.74,-9.878],"8.5":[-13.414,-23.101,-9.834],"8.5417":[-13.559,-23.677,-9.882],"8.5833":[-13.609,-23.778,-9.922],"8.625":[-13.635,-23.788,-9.942],"8.6667":[-13.66,-23.798,-9.964]}},"weapon":{"rotation":{"0.0":[-91.694,5.322,73.87],"0.0417":[-98.375,-45.175,87.36],"0.0833":[-147.424,-75.876,145.898],"0.125":[-245.574,-65.566,245.05],"0.1667":[-247.296,-63.873,236.639],"0.2083":[-247.228,-64.329,219.707],"0.25":[-249.327,-65.7,209.098],"0.2917":[-254.858,-67.687,200.104],"0.3333":[-278.71,-69.613,187.864],"0.375":[-322.789,-67.034,168.948],"0.4167":[-395.715,-56.412,130.817],"0.4583":[-417.622,-52.126,122.878],"0.5":[-415.461,-58.896,146.604],"0.5417":[-405.998,-71.319,198.152],"0.5833":[-391.024,-78.644,222.293],"0.625":[-366.809,-85.191,249.121],"0.6667":[-329.751,-85.418,254.034],"0.7083":[-275.993,-87.172,245.342],"0.75":[-247.505,-89.949,254.372],"0.7917":[-277.046,-84.156,268.473],"0.8333":[-317.437,-69.939,231.185],"0.875":[-358.017,-64.475,209.397],"0.9167":[-399.769,-63.279,194.432],"0.9583":[-446.669,-60.438,187.936],"1.0":[-479.383,-54.958,189.96],"1.0417":[-527.112,-56.771,184.874],"1.0833":[-566.281,-69.38,191.77],"1.125":[-586.934,-70.654,188.28],"1.1667":[-577.974,-79.404,163.74],"1.2083":[-469.923,-79.272,42.461],"1.25":[-473.576,-40.423,4.758],"1.2917":[-494.535,-6.496,-18.79],"1.3333":[-503.996,11.572,-53.322],"1.375":[-479.131,24.866,-67.664],"1.4167":[-451.718,38.631,-64.848],"1.4583":[-386.332,54.245,-41.135],"1.5":[-346.871,48.242,-39.201],"1.5417":[-308.665,35.618,-42.506],"1.5833":[-257.094,12.728,-53.169],"1.625":[-228.843,4.855,-60.728],"1.6667":[-193.392,6.208,-66.085],"1.7083":[-171.19,9.224,-67.653],"1.75":[-146.017,11.379,-68.717],"1.7917":[-92.148,7.534,-69.553],"1.8333":[-46.863,0.578,-68.132],"1.875":[7.893,-5.604,-64.294],"1.9167":[34.762,-6.169,-59.251],"1.9583":[57.468,-5.299,-51.795],"2.0":[88.186,0.589,-36.168],"2.0417":[109.892,7.283,-25.154],"2.0833":[133.979,14.373,-7.065],"2.125":[128.273,16.705,3.883],"2.1667":[82.955,19.881,12.784],"2.2083":[36.215,24.967,25.094],"2.25":[16.974,25.623,38.995],"2.2917":[-14.718,21.787,68.506],"2.3333":[-43.309,18.348,81.723],"2.375":[-81.021,16.327,80.382],"2.4167":[-145.495,11.611,71.914],"2.4583":[-187.497,8.221,67.176],"2.5":[-241.483,5.508,67.474],"2.5417":[-270.967,3.972,71.896],"2.5833":[-297.256,0.095,79.247],"2.625":[-345.066,-17.37,91.587],"2.6667":[-393.572,-29.176,107.275],"2.7083":[-466.144,-22.455,118.686],"2.75":[-492.564,-17.007,115.976],"2.7917":[-514.388,-10.74,110.821],"2.8333":[-547.735,-6.02,105.183],"2.875":[-572.828,-5.828,103.898],"2.9167":[-611.427,-5.738,103.27],"2.9583":[-635.197,-5.934,105.202],"3.0":[-653.916,-10.505,107.182],"3.0417":[-674.794,-13.306,102.753],"3.0833":[-695.766,-12.179,104.465],"3.125":[-741.684,-14.121,110.958],"3.1667":[-776.589,-13.957,113.551],"3.2083":[-819.778,-10.668,112.452],"3.25":[-896.857,-4.949,109.45],"3.2917":[-945.567,-3.306,106.154],"3.3333":[-1008.181,-7.41,107.635],"3.375":[-1044.097,-5.399,117.023],"3.4167":[-1076.384,-0.936,124.969],"3.4583":[-1129.369,-5.556,136.292],"3.5":[-1170.604,-9.418,148.678],"3.5417":[-1230.72,-9.656,153.557],"3.5833":[-1264.422,-7.601,145.863],"3.625":[-1287.329,-5.958,138.107],"3.6667":[-1315.879,-2.77,127.584],"3.7083":[-1369.668,1.896,122.536],"3.75":[-1429.925,2.113,125.353],"3.7917":[-1460.381,2.458,130.893],"3.8333":[-1502.479,5.35,138.2],"3.875":[-1540.715,7.157,144.479],"3.9167":[-1533.328,-3.143,156.418],"3.9583":[-1539.348,-37.253,182.654],"4.0":[-1571.389,-48.292,217.328],"4.0417":[-1570.561,-44.172,240.923],"4.0833":[-1540.882,-33.803,281.787],"4.125":[-1522.603,-34.799,310.434],"4.1667":[-1520.295,-37.957,369.629],"4.2083":[-1521.893,-23.025,410.89],"4.25":[-1517.605,-2.232,439.841],"4.2917":[-1535.544,21.563,485.124],"4.3333":[-1545.12,44.082,523.839],"4.375":[-1511.76,49.594,585.355],"4.4167":[-1446.681,29.918,665.87],"4.4583":[-1441.305,-8.456,687.595],"4.5":[-1437.217,-59.726,697.729],"4.5417":[-1411.051,-72.552,697.729],"4.5833":[-1510.687,-79.398,834.994],"4.625":[-1509.789,-59.721,844.173],"4.6667":[-1513.383,-40.883,859.424],"4.7083":[-1520.795,-12.078,887.225],"4.75":[-1535.723,18.922,889.96],"4.7917":[-1435.654,64.065,1019.185],"4.8333":[-1388.891,8.078,1063.751],"4.875":[-1386.086,-22.225,1059.077],"4.9167":[-1402.021,-76.24,1085.057],"4.9583":[-1376.297,-105.913,1064.365],"5.0":[-1371.589,-141.352,1076.115],"5.0417":[-1359.202,-159.173,1076.919],"5.0833":[-1354.469,-169.21,1072.332],"5.125":[-1389.665,-164.328,1058.313],"5.1667":[-1419.002,-165.735,1058.072],"5.2083":[-1454.918,-171.684,1064.842],"5.25":[-1481.145,-170.868,1071.81],"5.2917":[-1524.352,-172.519,1076.589],"5.3333":[-1591.152,-168.038,1077.917],"5.375":[-1645.236,-165.889,1080.133],"5.4167":[-1702.525,-165.643,1080.586],"5.4583":[-1714.228,-169.134,1075.327],"5.5":[-1718.512,-173.378,1068.374],"5.5417":[-1736.128,-178.913,1060.095],"5.5833":[-1768.963,-181.574,1058.433],"5.625":[-1837.605,-185.451,1058.772],"5.6667":[-1877.607,-188.291,1057.867],"5.7083":[-1915.93,-191.566,1057.132],"5.75":[-1968.572,-196.105,1054.117],"5.7917":[-1998.655,-195.679,1051.552],"5.8333":[-2038.615,-189.43,1058.719],"5.875":[-2057.646,-187.761,1062.96],"5.9167":[-2063.855,-175.125,1055.969],"5.9583":[-2052.961,-144.219,1038.685],"6.0":[-2035.51,-133.669,1032.122],"6.0417":[-2032.012,-138.814,1073.499],"6.0833":[-2029.919,-142.184,1110.703],"6.125":[-2023.802,-138.418,1144.516],"6.1667":[-1993.646,-117.934,1178.504],"6.2083":[-1977.546,-98.677,1206.032],"6.25":[-1912.217,-56.525,1168.878],"6.2917":[-1919.291,-14.621,1179.062],"6.3333":[-1896.358,43.186,1211.841],"6.375":[-1843.788,59.942,1279.998],"6.4167":[-1812.263,56.584,1359.645],"6.4583":[-1816.602,2.942,1429.528],"6.5":[-1802.106,-12.977,1437.596],"6.5417":[-1789.35,-37.647,1450.804],"6.5833":[-1766.808,-84.232,1451.067],"6.625":[-1771.671,-106.508,1466.375],"6.6667":[-1765.44,-123.826,1460.987],"6.7083":[-1753.619,-138.431,1447.418],"6.75":[-1751.725,-171.8,1475.839],"6.7917":[-1757.357,-181.556,1552.339],"6.8333":[-1756.849,-186.284,1561.258],"6.875":[-1754.95,-199.576,1554.857],"6.9167":[-1758.695,-173.572,1538.986],"6.9583":[-1740.478,-126.463,1495.251],"7.0":[-1660.912,-170.144,1371.924],"7.0417":[-1667.227,-220.576,1331.483],"7.0833":[-1747.247,-231.039,1230.191],"7.125":[-1774.012,-198.269,1188.975],"7.1667":[-1769.205,-146.141,1150.399],"7.2083":[-1665.701,-138.675,1021.85],"7.25":[-1664.753,-137.768,1010.436],"7.2917":[-1741.036,-141.224,1086.038],"7.3333":[-1755.764,-184.65,1096.702],"7.375":[-1773.179,-204.784,1084.91],"7.4167":[-1800.795,-210.484,1059.329],"7.4583":[-1814.479,-207.495,1043.366],"7.5":[-1823.509,-174.916,1036.326],"7.5417":[-1851.911,-129.674,1052.194],"7.5833":[-1940.149,-112.508,1131.193],"7.625":[-1960.252,-135.12,1198.171],"7.6667":[-1936.579,-134.203,1225.199],"7.7083":[-1912.193,-106.953,1266.257],"7.75":[-1889.728,-87.432,1287.343],"7.7917":[-1883.722,-86.325,1319.136],"7.8333":[-1746.514,-79.279,1270.435],"7.875":[-1710.46,-78.883,1279.073],"7.9167":[-1702.425,-77.372,1321.903],"7.9583":[-1688.644,-74.024,1339.884],"8.0":[-1663.238,-72.255,1345.466],"8.0417":[-1618.731,-72.246,1345.554],"8.0833":[-1590.283,-72.246,1345.554],"8.125":[-1547.644,-72.255,1345.466],"8.1667":[-1518.28,-72.252,1345.467],"8.2083":[-1480.427,-72.255,1345.466],"8.25":[-1455.632,-64.333,1371.021],"8.2917":[-1456.699,-60.76,1406.016],"8.3333":[-1489.573,-30.267,1483.25],"8.375":[-1498.289,-6.626,1511.143],"8.4167":[-1508.164,1.143,1521.603],"8.4583":[-1512.386,8.36,1522.524],"8.5":[-1513.36,17.298,1521.102],"8.5417":[-1516.144,30.135,1518.9],"8.5833":[-1517.642,32.997,1517.443],"8.625":[-1518.953,33.527,1516.171],"8.6667":[-1520.288,34.036,1514.873]},"position":{"0.0":[-5.31,-14.177,-15.084],"0.0417":[-3.738,-15.202,-15.45],"0.0833":[-3.313,-15.633,-15.434],"0.125":[-4.341,-15.174,-15.487],"0.1667":[-4.535,-14.924,-15.678],"0.2083":[-4.738,-14.399,-16.084],"0.25":[-4.863,-13.952,-16.337],"0.2917":[-4.985,-13.48,-16.553],"0.3333":[-4.75,-13.049,-16.697],"0.375":[-3.985,-11.614,-16.359],"0.4167":[-8.419,-9.302,-16.434],"0.4583":[-10.153,-9.999,-16.981],"0.5":[-8.119,-8.746,-17.306],"0.5417":[-3.819,-9.264,-17.828],"0.5833":[-2.516,-11.105,-18.094],"0.625":[-2.613,-13.68,-18.415],"0.6667":[-3.935,-15.361,-18.334],"0.7083":[-5.431,-15.786,-18.319],"0.75":[-5.85,-15.102,-18.197],"0.7917":[-5.591,-15.321,-18.094],"0.8333":[-3.453,-15.515,-17.631],"0.875":[-1.988,-13.214,-17.453],"0.9167":[-3.019,-10.439,-17.972],"0.9583":[-5.978,-10.511,-18.628],"1.0":[-7.238,-12.03,-19.315],"1.0417":[-7.75,-15.158,-19.831],"1.0833":[-6.96,-17.24,-18.984],"1.125":[-5.903,-17.671,-18.522],"1.1667":[-5.456,-16.252,-17.909],"1.2083":[-5.3,-15.836,-18.003],"1.25":[-4.756,-14.724,-19.365],"1.2917":[-6.578,-12.543,-21.162],"1.3333":[-8.335,-11.799,-21.419],"1.375":[-6.591,-13.239,-20.65],"1.4167":[-4.963,-14.449,-19.547],"1.4583":[-3.341,-14.73,-17.64],"1.5":[-3.835,-12.927,-17.093],"1.5417":[-5.356,-11.377,-17.243],"1.5833":[-6.722,-10.296,-18.706],"1.625":[-6.635,-9.996,-19.575],"1.6667":[-5.86,-10.283,-20.044],"1.7083":[-5.238,-10.655,-20.034],"1.75":[-4.519,-11.011,-19.719],"1.7917":[-3.366,-11.042,-17.781],"1.8333":[-3.969,-10.836,-16.034],"1.875":[-6.022,-10.317,-15.543],"1.9167":[-6.681,-9.936,-16.381],"1.9583":[-6.735,-9.664,-17.525],"2.0":[-6.244,-10.061,-19.203],"2.0417":[-5.966,-11.302,-20.2],"2.0833":[-5.947,-13.33,-20.89],"2.125":[-5.91,-13.289,-20.597],"2.1667":[-5.122,-12.227,-18.672],"2.2083":[-4.535,-12.618,-17.034],"2.25":[-4.638,-13.446,-16.656],"2.2917":[-5.96,-14.449,-16.375],"2.3333":[-7.281,-14.189,-16.681],"2.375":[-7.888,-13.852,-17.447],"2.4167":[-6.588,-13.102,-19.453],"2.4583":[-4.994,-12.524,-19.99],"2.5":[-3.319,-12.039,-19.178],"2.5417":[-2.956,-11.955,-18.7],"2.5833":[-2.938,-11.78,-18.025],"2.625":[-4.269,-10.821,-16.49],"2.6667":[-6.106,-9.602,-16.593],"2.7083":[-7.972,-9.446,-18.947],"2.75":[-7.688,-9.749,-19.906],"2.7917":[-6.935,-9.839,-20.44],"2.8333":[-5.41,-9.83,-20.553],"2.875":[-4.416,-9.936,-20.137],"2.9167":[-3.566,-10.024,-18.856],"2.9583":[-3.594,-9.986,-17.753],"3.0":[-3.566,-9.914,-17.322],"3.0417":[-4.01,-9.321,-16.506],"3.0833":[-4.463,-9.196,-15.943],"3.125":[-5.919,-8.864,-15.928],"3.1667":[-6.76,-8.717,-16.781],"3.2083":[-7.081,-8.942,-18.215],"3.25":[-4.975,-9.646,-19.137],"3.2917":[-3.588,-9.924,-17.759],"3.3333":[-4.11,-10.108,-15.859],"3.375":[-5.463,-10.255,-16.112],"3.4167":[-6.653,-10.483,-17.103],"3.4583":[-6.841,-11.114,-18.794],"3.5":[-5.863,-12.449,-19.937],"3.5417":[-4.844,-14.852,-20.494],"3.5833":[-4.035,-15.615,-19.687],"3.625":[-3.141,-15.558,-18.303],"3.6667":[-2.544,-14.374,-16.368],"3.7083":[-3.997,-12.796,-14.478],"3.75":[-7.772,-9.727,-14.528],"3.7917":[-8.578,-8.749,-15.85],"3.8333":[-8.447,-8.539,-18.497],"3.875":[-7.181,-10.008,-21.2],"3.9167":[-7.569,-10.361,-20.84],"3.9583":[-8.635,-10.858,-20.144],"4.0":[-9.25,-11.514,-20.14],"4.0417":[-8.05,-10.742,-20.172],"4.0833":[-3.753,-11.071,-20.097],"4.125":[-2.813,-12.693,-19.225],"4.1667":[-4.025,-14.186,-18.675],"4.2083":[-4.688,-13.908,-18.469],"4.25":[-4.578,-13.655,-18.262],"4.2917":[-3.95,-12.764,-19.797],"4.3333":[-2.056,-12.568,-20.634],"4.375":[0.103,-13.289,-19.731],"4.4167":[0.006,-15.277,-16.503],"4.4583":[-1.228,-16.402,-14.797],"4.5":[-3.759,-16.908,-14.722],"4.5417":[-4.391,-15.411,-15.065],"4.5833":[-4.66,-13.683,-16.325],"4.625":[-4.878,-13.696,-16.837],"4.6667":[-5.263,-13.793,-17.7],"4.7083":[-5.71,-13.799,-19.147],"4.75":[-5.2,-13.989,-19.925],"4.7917":[-3.788,-14.599,-17.715],"4.8333":[-4.928,-14.177,-15.975],"4.875":[-6.075,-13.493,-16.312],"4.9167":[-6.985,-12.277,-17.328],"4.9583":[-6.875,-11.721,-18.425],"5.0":[-5.775,-10.577,-19.5],"5.0417":[-5.128,-9.955,-19.362],"5.0833":[-4.81,-9.602,-19.112],"5.125":[-4.691,-9.311,-18.412],"5.1667":[-4.972,-9.199,-17.722],"5.2083":[-5.11,-9.055,-17.85],"5.25":[-5.031,-9.039,-18.056],"5.2917":[-5.153,-8.802,-17.944],"5.3333":[-5.163,-8.452,-17.656],"5.375":[-5.478,-7.577,-18.884],"5.4167":[-6.085,-8.23,-21.497],"5.4583":[-5.86,-9.692,-20.965],"5.5":[-5.428,-10.908,-19.815],"5.5417":[-4.931,-12.064,-18.481],"5.5833":[-4.631,-12.98,-18.475],"5.625":[-4.475,-14.039,-16.95],"5.6667":[-4.835,-13.636,-15.375],"5.7083":[-5.306,-12.668,-14.268],"5.75":[-6.788,-10.117,-14.231],"5.7917":[-7.428,-8.858,-15.597],"5.8333":[-6.86,-8.842,-18.847],"5.875":[-6.381,-9.914,-20.344],"5.9167":[-7.363,-11.061,-20.715],"5.9583":[-9.463,-12.827,-19.531],"6.0":[-9.753,-12.633,-18.394],"6.0417":[-7.46,-9.542,-18.519],"6.0833":[-4.441,-8.399,-18.45],"6.125":[-1.609,-9.317,-17.881],"6.1667":[-1.419,-12.377,-16.706],"6.2083":[-2.778,-13.549,-16.493],"6.25":[-3.55,-14.661,-17.122],"6.2917":[-3.456,-14.914,-18.656],"6.3333":[-3.128,-14.155,-18.565],"6.375":[-2.438,-14.536,-18.406],"6.4167":[-1.306,-15.043,-17.85],"6.4583":[-3.078,-17.03,-15.693],"6.5":[-4.472,-14.408,-15.078],"6.5417":[-5.678,-11.274,-15.528],"6.5833":[-6.325,-7.946,-17.672],"6.625":[-6.563,-7.377,-18.734],"6.6667":[-6.86,-9.592,-19.325],"6.7083":[-6.625,-11.552,-19.49],"6.75":[-5.016,-12.539,-20.059],"6.7917":[-3.625,-15.033,-20.272],"6.8333":[-3.197,-16.465,-20.309],"6.875":[-2.603,-18.386,-20.319],"6.9167":[-2.044,-16.386,-20.625],"6.9583":[-2.438,-12.786,-19.444],"7.0":[-5.1,-12.524,-16.665],"7.0417":[-5.353,-14.864,-16.906],"7.0833":[-3.703,-14.964,-19.297],"7.125":[-2.744,-13.327,-20.497],"7.1667":[-2.725,-9.867,-20.069],"7.2083":[-4.91,-8.877,-16.172],"7.25":[-5.288,-9.249,-16.037],"7.2917":[-3.775,-9.499,-18.506],"7.3333":[-1.797,-10.558,-18.794],"7.375":[-1.009,-11.189,-18.425],"7.4167":[-0.503,-11.393,-17.815],"7.4583":[-0.184,-11.371,-17.465],"7.5":[-0.853,-12.489,-17.547],"7.5417":[-1.447,-14.418,-16.309],"7.5833":[-1.472,-15.043,-14.578],"7.625":[-3.678,-15.255,-13.281],"7.6667":[-5.219,-14.361,-13.431],"7.7083":[-5.447,-12.355,-14.493],"7.75":[-4.472,-10.121,-15.222],"7.7917":[-3.244,-8.761,-15.403],"7.8333":[-4.75,-9.024,-15.743],"7.875":[-6.616,-7.774,-16.087],"7.9167":[-8,-4.289,-16.228],"7.9583":[-7.86,-1.908,-16.406],"8.0":[-7.044,-0.258,-16.747],"8.0417":[-4.972,0.542,-16.981],"8.0833":[-3.434,0.061,-16.831],"8.125":[-1.734,-2.042,-16.322],"8.1667":[-1.394,-4.111,-15.89],"8.2083":[-2.05,-7.933,-15.331],"8.25":[-4.26,-13.661,-14.065],"8.2917":[-4.538,-14.143,-13.518],"8.3333":[-5.547,-14.968,-13.831],"8.375":[-5.944,-14.802,-13.978],"8.4167":[-6.153,-14.214,-14.078],"8.4583":[-6.375,-13.633,-14.181],"8.5":[-6.5,-13.58,-14.237],"8.5417":[-6.631,-13.561,-14.303],"8.5833":[-6.656,-13.518,-14.318],"8.625":[-6.644,-13.486,-14.318],"8.6667":[-6.631,-13.452,-14.318]}},"up":{"rotation":{"0.0":[0,0,0],"0.3333":[5.181,0,0],"0.375":[35.145,0,0],"0.4167":[93.744,0,0],"0.4583":[111.201,0,0],"0.5":[107.052,0,0],"0.5417":[90.283,0,0],"0.5833":[75.691,0,0],"0.625":[54.896,0,0],"0.6667":[40.401,0,0],"0.7083":[24.24,0,0],"0.75":[6.858,0,0],"0.7917":[7.422,0,0],"0.8333":[28.872,0,0],"0.875":[45.007,0,0],"0.9167":[52.505,0,0],"0.9583":[45.641,0,0],"1.0":[39.783,0,0],"1.0417":[50.984,0,0],"1.0833":[74.304,0,0],"1.125":[91.213,0,0],"1.1667":[109.25,0,0],"1.2083":[123.853,0,0],"1.25":[150.678,0,0],"1.2917":[145.991,0,0],"1.3333":[133.855,0,0],"1.375":[106.536,0,0],"1.4167":[86.247,0,0],"1.4583":[58.46,0,0],"1.5":[41.68,0,0],"1.5417":[24.524,0,0],"1.5833":[4.423,0,0],"1.625":[0.941,0,0],"1.6667":[5.923,0,0],"1.7083":[12.915,0,0],"1.75":[19.123,0,0],"1.7917":[21.74,0,0],"1.8333":[21.837,0,0],"1.875":[31.157,0,0],"1.9167":[77.997,0,0],"1.9583":[133.624,0,0],"2.0":[161.701,0,0],"2.0417":[162.104,0,0],"2.0833":[162.104,0,0],"2.125":[153.816,0,0],"2.1667":[106.337,0,0],"2.2083":[51.634,0,0],"2.25":[50.581,0,0],"2.2917":[50.919,0,0],"2.3333":[51.403,0,0],"2.375":[54.305,0,0],"2.4167":[64.281,0,0],"2.4583":[71.069,0,0],"2.5":[78.432,0,0],"2.5417":[82.694,0,0],"2.5833":[85.639,0,0],"2.625":[86.021,0,0],"2.7083":[86.021,0,0],"2.75":[82.603,0,0],"2.7917":[74.234,0,0],"2.8333":[61.255,0,0],"2.875":[54.735,0,0],"2.9167":[45.528,0,0],"2.9583":[37.784,0,0],"3.0":[25.019,0,0],"3.0417":[5.52,0,0],"3.0833":[3.327,0,0],"3.125":[2.999,0,0],"3.1667":[2.999,0,0],"3.2083":[5.348,0,0],"3.25":[29.147,0,0],"3.2917":[43.276,0,0],"3.3333":[44.728,0,0],"3.375":[42.556,0,0],"3.4167":[40.67,0,0],"3.4583":[40.67,0,0],"3.5":[41.68,0,0],"3.5417":[43.706,0,0],"3.5833":[45.41,0,0],"3.625":[47.813,0,0],"3.6667":[51.424,0,0],"3.7083":[54.515,0,0],"3.75":[60.545,0,0],"3.7917":[67.672,0,0],"3.8333":[78.975,0,0],"3.875":[89.493,0,0],"3.9167":[89.848,0,0],"3.9583":[89.896,0,0],"4.0417":[89.557,0,0],"4.0833":[81.7,0,0],"4.125":[70.999,0,0],"4.1667":[41.755,0,0],"4.2083":[20.526,0,0],"4.25":[11.163,0,0],"4.2917":[38.042,0,0],"4.3333":[67.366,0,0],"4.375":[74.342,0,0],"4.4167":[59.519,0,0],"4.4583":[69.155,0,0],"4.5":[73.858,0,0],"4.5417":[47.673,0,0],"4.5833":[16.457,0,0],"4.625":[17.097,0,0],"4.6667":[18.585,0,0],"4.7083":[22.439,0,0],"4.75":[26.535,0,0],"4.7917":[36.327,0,0],"4.8333":[40.267,0,0],"4.875":[40.761,0,0],"4.9167":[41.256,0,0],"4.9583":[39.772,0,0],"5.0":[23.799,0,0],"5.0417":[11.561,0,0],"5.0833":[6.213,0,0],"5.1667":[6.213,0,0],"5.2083":[6.514,0,0],"5.25":[6.81,0,0],"5.2917":[7.105,0,0],"5.3333":[16.258,0,0],"5.375":[33.602,0,0],"5.4167":[50.081,0,0],"5.4583":[40.089,0,0],"5.5":[19.763,0,0],"5.5417":[0.828,0,0],"5.5833":[1.978,0,0],"5.625":[12.313,0,0],"5.6667":[24.003,0,0],"5.7083":[42.685,0,0],"5.75":[66.14,0,0],"5.7917":[69.134,0,0],"5.875":[69.134,0,0],"5.9167":[69.171,0,0],"5.9583":[68.774,0,0],"6.125":[68.774,0,0],"6.1667":[53.902,0,0],"6.2083":[25.148,0,0],"6.25":[15.226,0,0],"6.2917":[31.372,0,0],"6.3333":[28.98,0,0],"6.375":[16.119,0,0],"6.4167":[41.852,0,0],"6.4583":[84.242,0,0],"6.5":[85.634,0,0],"6.5417":[68.123,0,0],"6.5833":[39.256,0,0],"6.625":[35.999,0,0],"6.7083":[35.999,0,0],"6.75":[44.029,0,0],"6.7917":[66.253,0,0],"6.8333":[78.781,0,0],"6.875":[90.315,0,0],"6.9167":[90.315,0,0],"6.9583":[89.821,0,0],"7.0":[89.923,0,0],"7.0417":[90.573,0,0],"7.0833":[90.251,0,0],"7.1667":[90.251,0,0],"7.2083":[89.923,0,0],"7.25":[87.047,0,0],"7.2917":[67.263,0,0],"7.3333":[54.918,0,0],"7.375":[52.725,0,0],"7.5":[67.935,0,0],"7.5417":[96.598,0,0],"7.5833":[112.029,0,0],"7.625":[84.774,0,0],"7.6667":[56.697,0,0],"7.7083":[43.164,0,0],"7.75":[43.615,0,0],"7.8333":[43.072,0,0],"7.875":[37.843,0,0],"7.9167":[22.025,0,0],"7.9583":[12.372,0,0],"8.0":[8.266,0,0],"8.0417":[15.393,0,0],"8.0833":[25.089,0,0],"8.125":[39.063,0,0],"8.1667":[43.411,0,0],"8.2083":[43.776,0,0],"8.25":[2.709,0,0],"8.2917":[0.339,0,0],"8.3333":[0,0,0],"8.6667":[0,0,0]}},"down":{"rotation":{"0.0":[-15.669,0,0],"0.0417":[-47.999,0,0],"0.0833":[-74.759,0,0],"0.125":[-76.575,0,0],"0.1667":[-72.96,0,0],"0.2083":[-72.96,0,0],"0.25":[-73.677,0,0],"0.2917":[-98.202,0,0],"0.3333":[-137.238,0,0],"0.375":[-147.688,0,0],"0.4167":[-157.841,0,0],"0.4583":[-159.872,0,0],"0.5":[-159.037,0,0],"0.5417":[-149.056,0,0],"0.5833":[-108.021,0,0],"0.625":[-21.902,0,0],"0.6667":[-21.902,0,0],"0.7083":[-22.586,0,0],"0.75":[-24.304,0,0],"0.7917":[-30.186,0,0],"0.8333":[-53.634,0,0],"0.875":[-70.24,0,0],"0.9167":[-78.078,0,0],"0.9583":[-78.358,0,0],"1.0417":[-85.791,0,0],"1.0833":[-96.903,0,0],"1.125":[-95.611,0,0],"1.1667":[-77.948,0,0],"1.2083":[-80.658,0,0],"1.25":[-105.183,0,0],"1.2917":[-145.598,0,0],"1.3333":[-174.819,0,0],"1.375":[-155.056,0,0],"1.4167":[-130.44,0,0],"1.4583":[-101.374,0,0],"1.5":[-94.469,0,0],"1.5417":[-92.616,0,0],"1.5833":[-91.054,0,0],"1.625":[-85.985,0,0],"1.6667":[-65.947,0,0],"1.7083":[-49.373,0,0],"1.75":[-37.846,0,0],"1.7917":[-36.715,0,0],"1.8333":[-39.553,0,0],"1.875":[-47.364,0,0],"1.9167":[-55.416,0,0],"1.9583":[-64.73,0,0],"2.0":[-78.794,0,0],"2.0417":[-89.088,0,0],"2.0833":[-101.283,0,0],"2.125":[-96.063,0,0],"2.1667":[-60.146,0,0],"2.2083":[-18.384,0,0],"2.25":[-17.528,0,0],"2.2917":[-18.029,0,0],"2.4167":[-18.029,0,0],"2.4583":[-17.646,0,0],"2.5":[-13.849,0,0],"2.5417":[-6.663,0,0],"2.5833":[-0.883,0,0],"2.625":[-2.429,0,0],"2.6667":[-8.177,0,0],"2.7083":[-13.504,0,0],"2.75":[-13.725,0,0],"2.8333":[-13.908,0,0],"2.875":[-16.946,0,0],"2.9167":[-27.455,0,0],"2.9583":[-34.587,0,0],"3.0":[-39.117,0,0],"3.0417":[-47.671,0,0],"3.0833":[-61.703,0,0],"3.125":[-96.92,0,0],"3.1667":[-115.067,0,0],"3.2083":[-118.369,0,0],"3.25":[-118.708,0,0],"3.3333":[-108.878,0,0],"3.375":[-88.387,0,0],"3.4167":[-71.668,0,0],"3.4583":[-86.82,0,0],"3.5":[-122.807,0,0],"3.5417":[-139.699,0,0],"3.5833":[-129.233,0,0],"3.625":[-113.656,0,0],"3.6667":[-92.67,0,0],"3.7083":[-83.033,0,0],"3.75":[-73.515,0,0],"3.7917":[-78.988,0,0],"3.8333":[-115.573,0,0],"3.875":[-157.631,0,0],"3.9167":[-158.552,0,0],"3.9583":[-158.768,0,0],"4.0":[-158.768,0,0],"4.0417":[-152.762,0,0],"4.0833":[-93.198,0,0],"4.125":[-56.704,0,0],"4.1667":[-26.545,0,0],"4.2083":[-14.129,0,0],"4.25":[-9.588,0,0],"4.2917":[-26.06,0,0],"4.3333":[-46.028,0,0],"4.375":[-69.809,0,0],"4.4167":[-82.435,0,0],"4.4583":[-92.433,0,0],"4.5":[-96.365,0,0],"4.5417":[-95.314,0,0],"4.5833":[-94.011,0,0],"4.625":[-104.461,0,0],"4.6667":[-127.219,0,0],"4.7083":[-157.362,0,0],"4.75":[-153.489,0,0],"4.7917":[-98.627,0,0],"4.8333":[-76.903,0,0],"4.875":[-77.07,0,0],"4.9167":[-77.738,0,0],"4.9583":[-82.333,0,0],"5.0":[-109.427,0,0],"5.0417":[-129.325,0,0],"5.0833":[-138.504,0,0],"5.125":[-113.208,0,0],"5.1667":[-91.108,0,0],"5.2083":[-82.209,0,0],"5.25":[-81.509,0,0],"5.2917":[-80.469,0,0],"5.3333":[-82.995,0,0],"5.375":[-90.106,0,0],"5.4167":[-105.183,0,0],"5.4583":[-121.073,0,0],"5.5":[-140.545,0,0],"5.5417":[-156.392,0,0],"5.5833":[-156.037,0,0],"5.625":[-145.872,0,0],"5.6667":[-129.217,0,0],"5.7083":[-99.661,0,0],"5.75":[-61.46,0,0],"5.7917":[-63.286,0,0],"5.8333":[-115.546,0,0],"5.875":[-150.338,0,0],"5.9167":[-161.439,0,0],"5.9583":[-165.366,0,0],"6.0":[-164.854,0,0],"6.0417":[-137.475,0,0],"6.0833":[-101.741,0,0],"6.125":[-67.929,0,0],"6.1667":[-41.67,0,0],"6.2083":[-34.668,0,0],"6.25":[-35.707,0,0],"6.2917":[-51.953,0,0],"6.3333":[-71.447,0,0],"6.375":[-76.629,0,0],"6.4167":[-53.989,0,0],"6.4583":[-16.235,0,0],"6.5":[-12.852,0,0],"6.5417":[-25.031,0,0],"6.5833":[-92.977,0,0],"6.625":[-123.125,0,0],"6.6667":[-122.387,0,0],"6.7083":[-97.695,0,0],"6.75":[-53.149,0,0],"6.7917":[-3.587,0,0],"6.8333":[-2.779,0,0],"7.0":[-2.661,0,0],"7.0833":[-2.871,0,0],"7.25":[-3.291,0,0],"7.2917":[-12.297,0,0],"7.3333":[-26.464,0,0],"7.375":[-51.334,0,0],"7.4167":[-116.042,0,0],"7.4583":[-151.356,0,0],"7.5":[-168.399,0,0],"7.5417":[-171.017,0,0],"7.5833":[-171.377,0,0],"7.625":[-163.729,0,0],"7.6667":[-152.358,0,0],"7.7083":[-125.21,0,0],"7.75":[-91.986,0,0],"7.7917":[-72.977,0,0],"7.8333":[-72.508,0,0],"7.875":[-72.142,0,0],"8.0":[-72.142,0,0],"8.0417":[-79.931,0,0],"8.0833":[-90.661,0,0],"8.125":[-105.123,0,0],"8.1667":[-108.829,0,0],"8.2083":[-90.58,0,0],"8.25":[-9.475,0,0],"8.2917":[0.081,0,0],"8.375":[0.081,0,0],"8.4167":[0,0,0],"8.6667":[-0.124,0,0]}},"righthand_1":{"rotation":{"0.0":[0,0,0],"2.9583":[0,0,0],"3.5833":[-17.5,0,-57.5],"3.875":[-7.5957,-2.7544,-46.3556],"4.125":[33.7022,-1.3772,-23.1778],"4.375":[0,0,0]},"position":{"0.0":[0,2.7973,0],"1.8333":[0.1707,2.8,0.9493],"2.9583":[0.1707,3.2987,0.9493],"4.5417":[-1.96,2.8,0.2],"4.9583":[0,2.7973,0]},"scale":[1,1.4,1]},"camera":{"rotation":{"0.0":[0.149,-0.038,-0.023],"0.0417":[0.486,-0.126,-0.079],"0.0833":[0.87,-0.225,-0.141],"0.125":[1.152,-0.298,-0.184],"0.1667":[1.123,-0.288,-0.173],"0.2083":[0.889,-0.218,-0.089],"0.25":[0.655,-0.151,-0.01],"0.2917":[0.4,-0.074,0.079],"0.3333":[0.013,0.04,0.213],"0.375":[-0.214,0.107,0.294],"0.4167":[-0.441,0.178,0.375],"0.4583":[-0.491,0.193,0.393],"0.5":[-0.466,0.173,0.378],"0.5417":[-0.349,0.088,0.312],"0.5833":[-0.24,0.01,0.248],"0.625":[-0.054,-0.131,0.142],"0.6667":[0.067,-0.218,0.078],"0.7083":[0.17,-0.292,0.019],"0.75":[0.263,-0.352,-0.029],"0.7917":[0.263,-0.352,-0.029],"0.8333":[0.216,-0.285,0.03],"0.875":[0.164,-0.213,0.096],"0.9167":[0.107,-0.134,0.168],"0.9583":[0.032,-0.009,0.262],"1.0":[0.003,0.056,0.298],"1.0417":[0.014,0.109,0.29],"1.0833":[0.054,0.128,0.266],"1.125":[0.111,0.142,0.227],"1.1667":[0.219,0.151,0.162],"1.2083":[0.3,0.159,0.118],"1.25":[0.429,0.19,0.07],"1.2917":[0.523,0.221,0.048],"1.3333":[0.652,0.26,0.031],"1.375":[0.854,0.326,0.012],"1.4167":[0.963,0.373,0.005],"1.4583":[1.03,0.444,-0.001],"1.5":[0.99,0.491,0.012],"1.5417":[0.871,0.544,0.046],"1.5833":[0.593,0.625,0.122],"1.625":[0.364,0.682,0.18],"1.6667":[0.016,0.757,0.26],"1.7083":[-0.203,0.802,0.303],"1.75":[-0.38,0.839,0.328],"1.7917":[-0.557,0.876,0.313],"1.8333":[-0.646,0.89,0.248],"1.875":[-0.744,0.902,0.119],"1.9167":[-0.78,0.905,0.026],"1.9583":[-0.807,0.908,-0.052],"2.0":[-0.803,0.918,-0.135],"2.0417":[-0.74,0.924,-0.169],"2.0833":[-0.563,0.934,-0.207],"2.125":[-0.423,0.939,-0.224],"2.1667":[-0.284,0.942,-0.234],"2.2083":[-0.132,0.944,-0.238],"2.25":[-0.069,0.932,-0.226],"2.2917":[0.023,0.876,-0.174],"2.3333":[0.084,0.827,-0.124],"2.375":[0.144,0.774,-0.075],"2.4167":[0.225,0.71,-0.012],"2.4583":[0.279,0.683,0.013],"2.5":[0.352,0.687,0],"2.5417":[0.392,0.706,-0.045],"2.5833":[0.422,0.729,-0.111],"2.625":[0.463,0.78,-0.204],"2.6667":[0.479,0.809,-0.258],"2.7083":[0.486,0.852,-0.297],"2.75":[0.479,0.873,-0.297],"2.7917":[0.451,0.902,-0.289],"2.8333":[0.38,0.937,-0.282],"2.875":[0.322,0.968,-0.27],"2.9167":[0.214,1.009,-0.25],"2.9583":[0.126,1.039,-0.234],"3.0":[0.048,1.066,-0.216],"3.0417":[-0.08,1.103,-0.186],"3.0833":[-0.168,1.127,-0.163],"3.125":[-0.279,1.16,-0.131],"3.1667":[-0.339,1.178,-0.106],"3.2083":[-0.4,1.193,-0.081],"3.25":[-0.452,1.208,-0.04],"3.2917":[-0.47,1.213,-0.014],"3.3333":[-0.46,1.205,0.037],"3.375":[-0.407,1.186,0.097],"3.4167":[-0.326,1.157,0.169],"3.4583":[-0.185,1.096,0.266],"3.5":[-0.08,1.044,0.315],"3.5417":[0.067,0.961,0.32],"3.5833":[0.192,0.9,0.238],"3.625":[0.338,0.839,0.105],"3.6667":[0.551,0.751,-0.142],"3.7083":[0.676,0.694,-0.289],"3.75":[0.781,0.622,-0.436],"3.7917":[0.786,0.578,-0.442],"3.8333":[0.75,0.544,-0.417],"3.875":[0.645,0.5,-0.356],"3.9167":[0.551,0.47,-0.306],"3.9583":[0.376,0.423,-0.244],"4.0":[0.253,0.387,-0.221],"4.0417":[0.12,0.336,-0.221],"4.0833":[-0.183,0.243,-0.268],"4.125":[-0.401,0.175,-0.313],"4.1667":[-0.667,0.067,-0.372],"4.2083":[-0.723,-0.001,-0.387],"4.25":[-0.632,-0.07,-0.364],"4.2917":[-0.244,-0.186,-0.272],"4.3333":[0.101,-0.262,-0.191],"4.375":[0.591,-0.351,-0.074],"4.4167":[0.826,-0.382,-0.017],"4.4583":[0.943,-0.386,0.011],"4.5":[1.068,-0.383,0.045],"4.5417":[1.14,-0.376,0.065],"4.5833":[1.24,-0.363,0.092],"4.625":[1.298,-0.353,0.11],"4.6667":[1.355,-0.34,0.124],"4.7083":[1.42,-0.318,0.144],"4.75":[1.463,-0.303,0.157],"4.7917":[1.507,-0.274,0.173],"4.8333":[1.534,-0.256,0.181],"4.875":[1.557,-0.233,0.188],"4.9167":[1.581,-0.203,0.198],"4.9583":[1.596,-0.18,0.204],"5.0":[1.608,-0.144,0.208],"5.0417":[1.612,-0.121,0.21],"5.0833":[1.612,-0.1,0.209],"5.125":[1.553,-0.051,0.185],"5.1667":[1.464,-0.007,0.143],"5.2083":[1.28,0.071,0.06],"5.25":[1.138,0.123,-0.004],"5.2917":[0.996,0.175,-0.065],"5.3333":[0.812,0.237,-0.147],"5.375":[0.719,0.268,-0.187],"5.4167":[0.662,0.288,-0.217],"5.4583":[0.69,0.279,-0.197],"5.5":[0.755,0.254,-0.147],"5.5417":[0.906,0.197,-0.038],"5.5833":[1.021,0.152,0.041],"5.625":[1.17,0.077,0.154],"5.6667":[1.231,0.039,0.201],"5.7083":[1.257,0.001,0.224],"5.75":[1.231,-0.045,0.192],"5.7917":[1.196,-0.082,0.145],"5.8333":[1.091,-0.138,0.059],"5.875":[1.012,-0.175,-0.012],"5.9167":[0.911,-0.211,-0.066],"5.9583":[0.741,-0.266,-0.129],"6.0":[0.618,-0.302,-0.14],"6.0417":[0.426,-0.355,-0.125],"6.0833":[0.287,-0.387,-0.1],"6.125":[0.148,-0.417,-0.07],"6.1667":[-0.059,-0.457,-0.031],"6.2083":[-0.195,-0.481,-0.009],"6.25":[-0.386,-0.508,-0.023],"6.2917":[-0.508,-0.52,-0.171],"6.3333":[-0.616,-0.529,-0.348],"6.375":[-0.766,-0.525,-0.419],"6.4167":[-0.848,-0.484,-0.333],"6.4583":[-0.969,-0.37,-0.089],"6.5":[-1.035,-0.271,0.097],"6.5417":[-1.085,-0.168,0.267],"6.5833":[-1.127,-0.036,0.427],"6.625":[-1.11,0.031,0.431],"6.6667":[-0.873,0.131,0.31],"6.7083":[-0.624,0.187,0.189],"6.75":[-0.348,0.234,0.081],"6.7917":[0.003,0.254,0.014],"6.8333":[0.185,0.148,0.144],"6.875":[0.334,-0.099,0.41],"6.9167":[0.3,-0.156,0.387],"6.9583":[0.205,-0.2,0.328],"7.0":[-0.01,-0.253,0.206],"7.0417":[-0.157,-0.282,0.12],"7.0833":[-0.367,-0.326,0.024],"7.125":[-0.451,-0.36,-0.001],"7.1667":[-0.514,-0.399,0.017],"7.2083":[-0.588,-0.472,0.1],"7.25":[-0.62,-0.52,0.179],"7.2917":[-0.664,-0.598,0.317],"7.3333":[-0.686,-0.641,0.413],"7.375":[-0.702,-0.68,0.497],"7.4167":[-0.716,-0.723,0.593],"7.4583":[-0.722,-0.734,0.629],"7.5":[-0.675,-0.676,0.617],"7.5417":[-0.556,-0.516,0.567],"7.5833":[-0.403,-0.29,0.485],"7.625":[-0.16,0.096,0.312],"7.6667":[-0.042,0.338,0.167],"7.7083":[-0.061,0.589,-0.117],"7.75":[-0.479,0.694,-0.483],"7.7917":[-1.065,0.765,-0.877],"7.8333":[-1.697,0.801,-1.19],"7.875":[-1.851,0.788,-1.195],"7.9167":[-2.013,0.689,-1.191],"7.9583":[-2.094,0.602,-1.181],"8.0":[-2.147,0.494,-1.164],"8.0417":[-2.2,0.321,-1.122],"8.0833":[-2.217,0.191,-1.079],"8.125":[-2.222,0.017,-0.986],"8.1667":[-2.222,-0.084,-0.904],"8.2083":[-2.041,-0.192,-0.581],"8.25":[-1.269,-0.352,0.264],"8.2917":[-0.648,-0.383,0.428],"8.3333":[0.126,-0.339,0.07],"8.375":[0.318,-0.264,-0.16],"8.4167":[0.271,-0.134,-0.103],"8.4583":[0.145,0.06,0.035],"8.5":[0.097,0.079,0.051],"8.5417":[0.045,0.051,0.035],"8.5833":[0.024,0.027,0.019],"8.625":[0.008,0.008,0.005],"8.6667":[0.003,0.003,0.002]}}},"sound_effects":{"0.0":{"effect":"melee.cobra_vanguard.cobra_vanguard_inspect"}}},"inspect_1":{"loop":true,"animation_length":7.9167,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0417":[-53.836,158.409,-57.11],"0.0833":[-53.915,158.463,-57.002],"0.125":[-53.992,158.423,-57.099],"0.1667":[-54.027,158.306,-57.365],"0.2083":[-53.949,157.982,-58.095],"0.25":[-53.878,157.866,-58.396],"0.2917":[-53.822,157.816,-58.563],"0.3333":[-53.768,157.771,-58.739],"0.375":[-53.664,157.644,-59.168],"0.4167":[-53.602,157.574,-59.402],"0.4583":[-53.546,157.498,-59.647],"0.5":[-53.495,157.418,-59.897],"0.5417":[-53.412,157.253,-60.39],"0.5833":[-53.377,157.174,-60.62],"0.625":[-53.351,157.097,-60.837],"0.6667":[-53.327,156.966,-61.197],"0.7083":[-53.324,156.914,-61.336],"0.75":[-53.335,156.869,-61.437],"0.7917":[-53.371,156.826,-61.529],"0.8333":[-53.398,156.827,-61.504],"0.875":[-53.436,156.846,-61.432],"0.9167":[-53.472,156.882,-61.298],"0.9583":[-53.563,157.028,-60.859],"1.0":[-53.605,157.135,-60.533],"1.0417":[-53.661,157.267,-60.142],"1.0833":[-53.719,157.432,-59.674],"1.125":[-53.849,157.836,-58.489],"1.1667":[-53.978,158.31,-57.193],"1.2083":[-54.295,159.086,-54.726],"1.25":[-55.937,161.031,-46.721],"1.2917":[-57.235,162.456,-41.592],"1.3333":[-58.535,164.489,-36.148],"1.375":[-60.582,171.84,-23.977],"1.4167":[-62.761,177.114,-16.822],"1.4583":[-66.204,181.792,-8.991],"1.5":[-69.383,183.026,1.524],"1.5417":[-70.022,188.516,1.272],"1.5833":[-67.891,191.389,-3.812],"1.625":[-64.123,194.665,-11.722],"1.6667":[-58.373,196.005,-20.011],"1.7083":[-42.493,192.189,-32.025],"1.75":[-48.791,197.555,-30.042],"1.7917":[-66.17,208.154,-21.314],"1.8333":[-97.455,203.872,-0.821],"1.875":[-108.116,196.95,2.239],"1.9167":[-111.397,199.538,6.729],"1.9583":[-123.437,216.265,28.826],"2.0":[-132.699,222.432,42.216],"2.0417":[-144.143,226.429,57.636],"2.0833":[-156.506,228.356,75.765],"2.125":[-173.912,225.957,108.365],"2.1667":[-173.652,224.732,111.77],"2.2083":[-170.132,224.429,110.29],"2.25":[-167.254,224.13,108.682],"2.2917":[-167.362,224.563,109.211],"2.3333":[-167.364,225.523,108.661],"2.375":[-166.585,226.653,107.272],"2.4167":[-164.606,228.73,103.831],"2.4583":[-163.508,229.561,102.01],"2.5":[-162.446,230.186,100.331],"2.5417":[-160.393,230.97,97.417],"2.5833":[-159.385,231.213,96.115],"2.625":[-158.417,231.395,94.887],"2.6667":[-157.499,231.542,93.718],"2.7083":[-155.856,231.807,91.463],"2.75":[-155.131,231.963,90.301],"2.7917":[-154.48,232.153,89.077],"2.8333":[-153.879,232.39,87.725],"2.875":[-154.735,233.293,84.301],"2.9167":[-154.672,235.494,79.052],"2.9583":[-144.43,239.479,64.15],"3.0":[-99.697,230.213,6.218],"3.0417":[-80.739,211.947,-18.346],"3.0833":[-71.679,193.524,-36.675],"3.125":[-61.106,148.086,-56.148],"3.1667":[-61.132,144.667,-56.955],"3.2083":[-60.6,139.874,-57.62],"3.25":[-59.633,135.721,-57.837],"3.2917":[-56.517,129.591,-57.111],"3.3333":[-54.958,127.714,-56.531],"3.375":[-53.909,126.537,-56.008],"3.4167":[-53.31,125.937,-55.63],"3.4583":[-53.106,125.771,-55.512],"3.5":[-53.093,125.789,-55.523],"3.5417":[-53.074,125.824,-55.519],"3.5833":[-53.057,125.986,-55.521],"3.625":[-53.057,126.131,-55.531],"3.6667":[-53.061,126.332,-55.546],"3.7083":[-53.082,126.934,-55.602],"3.75":[-53.111,127.352,-55.658],"3.7917":[-53.147,127.859,-55.73],"3.8333":[-53.2,128.465,-55.828],"3.875":[-53.448,130.224,-56.217],"3.9167":[-54.267,132.699,-57.155],"3.9583":[-55.375,136.263,-58.534],"4.0":[-56.377,140.341,-60.086],"4.0417":[-57.109,147.661,-62.959],"4.0833":[-56.604,149.701,-64.034],"4.125":[-50.491,164.066,-54.615],"4.1667":[-43.576,214.178,-33.005],"4.2083":[-39.618,215.567,-36.255],"4.25":[-36.668,207.817,-41.127],"4.2917":[-41.764,202.788,-35.557],"4.3333":[-46.473,200.522,-28.946],"4.375":[-50.847,199.087,-23.766],"4.4167":[-52.92,199.666,-20.467],"4.4583":[-55.929,203.777,-14.365],"4.5":[-58.552,206.962,-12.132],"4.5417":[-61.84,210.571,-9.135],"4.5833":[-66.386,214.833,-4.14],"4.625":[-81.681,224.232,13.18],"4.6667":[-84.671,225.101,16.921],"4.7083":[-82.421,222.916,14.39],"4.75":[-83.562,221.061,14.251],"4.7917":[-84.289,222.027,15.503],"4.8333":[-84.839,223.045,16.743],"4.875":[-83.356,221.217,16.208],"4.9167":[-81.086,218.014,14.276],"4.9583":[-77.201,214.507,10.612],"5.0":[-73.284,210.822,5.239],"5.0417":[-75.954,208.685,-3.464],"5.0833":[-77.284,208.628,-9.159],"5.125":[-78.25,209.386,-15.701],"5.1667":[-78.537,210.925,-23.004],"5.2083":[-76.158,215.532,-39.355],"5.25":[-73.351,217.955,-48.033],"5.2917":[-69.727,220.026,-56.611],"5.3333":[-62.203,222.314,-71.252],"5.375":[-59.674,222.521,-76.017],"5.4167":[-58.784,222.221,-78.3],"5.4583":[-59.202,221.117,-79.699],"5.5":[-59.608,220.532,-80.12],"5.5417":[-60.139,219.916,-80.375],"5.5833":[-60.784,219.282,-80.469],"5.625":[-62.375,217.921,-80.251],"5.6667":[-63.306,217.194,-79.951],"5.7083":[-64.322,216.426,-79.539],"5.75":[-65.403,215.621,-79.028],"5.7917":[-67.745,213.861,-77.764],"5.8333":[-68.984,212.911,-77.027],"5.875":[-70.258,211.904,-76.243],"5.9167":[-72.88,209.716,-74.543],"5.9583":[-74.206,208.54,-73.655],"6.0":[-75.538,207.304,-72.748],"6.0417":[-78.18,204.651,-70.924],"6.0833":[-79.478,203.236,-70.024],"6.125":[-80.751,201.769,-69.132],"6.1667":[-81.999,200.244,-68.257],"6.2083":[-84.398,197.057,-66.589],"6.25":[-85.544,195.392,-65.798],"6.2917":[-86.642,193.69,-65.038],"6.3333":[-87.709,191.95,-64.314],"6.375":[-89.7,188.39,-62.972],"6.4167":[-90.629,186.57,-62.362],"6.4583":[-91.51,184.742,-61.784],"6.5":[-92.343,182.898,-61.246],"6.5417":[-93.87,179.204,-60.285],"6.5833":[-94.56,177.364,-59.86],"6.625":[-95.206,175.532,-59.475],"6.6667":[-96.354,171.928,-58.806],"6.7083":[-96.86,170.16,-58.526],"6.75":[-97.317,168.425,-58.281],"6.7917":[-98.098,165.081,-57.891],"6.8333":[-98.42,163.476,-57.749],"6.875":[-98.691,161.93,-57.637],"6.9167":[-98.925,160.437,-57.566],"6.9583":[-99.266,157.647,-57.529],"7.0":[-99.372,156.356,-57.564],"7.0417":[-99.441,155.138,-57.646],"7.0833":[-99.46,152.949,-57.935],"7.125":[-99.112,152.318,-58.162],"7.1667":[-96.858,153.805,-58.644],"7.2083":[-93.234,156.959,-60.101],"7.25":[-84.859,163.88,-67.637],"7.2917":[-81.216,165.772,-72.624],"7.3333":[-78.451,166.357,-76.63],"7.375":[-74.212,166.029,-74.963],"7.4167":[-71.865,166.458,-73.128],"7.4583":[-68.888,167.865,-72.752],"7.5":[-65.74,169.351,-73.088],"7.5417":[-61.922,166.753,-77.887],"7.5833":[-60.484,165.389,-76.435],"7.625":[-58.796,165.115,-70.853],"7.6667":[-57.365,164.671,-65.752],"7.7083":[-54.84,162.016,-59.855],"7.75":[-53.824,160.739,-57.887],"7.7917":[-53.31,159.904,-56.918],"7.8333":[-53.397,158.815,-57.34],"7.875":[-53.66,158.351,-58.011],"7.9167":[-53.849,157.833,-58.486]},"position":{"0.0417":[13.304,-27.881,-14.091],"0.0833":[13.251,-28.957,-14.15],"0.125":[13.245,-30.01,-14.109],"0.1667":[13.29,-30.981,-13.987],"0.2083":[13.466,-32.474,-13.627],"0.25":[13.543,-32.922,-13.478],"0.2917":[13.582,-33.16,-13.396],"0.3333":[13.633,-33.341,-13.334],"0.375":[13.792,-33.614,-13.246],"0.4167":[13.893,-33.714,-13.217],"0.4583":[14.004,-33.787,-13.199],"0.5":[14.121,-33.841,-13.193],"0.5417":[14.363,-33.88,-13.204],"0.5833":[14.485,-33.873,-13.222],"0.625":[14.597,-33.85,-13.245],"0.6667":[14.797,-33.764,-13.305],"0.7083":[14.878,-33.708,-13.34],"0.75":[14.94,-33.64,-13.377],"0.7917":[15.003,-33.488,-13.457],"0.8333":[15,-33.404,-13.497],"0.875":[14.968,-33.324,-13.534],"0.9167":[14.906,-33.24,-13.571],"0.9583":[14.68,-33.081,-13.631],"1.0":[14.512,-33.003,-13.652],"1.0417":[14.303,-32.931,-13.665],"1.0833":[14.058,-32.859,-13.668],"1.125":[13.426,-32.722,-13.637],"1.1667":[12.521,-32.523,-13.519],"1.2083":[10.866,-31.966,-13.163],"1.25":[7.485,-29.608,-11.596],"1.2917":[6.511,-28.228,-10.636],"1.3333":[6.057,-27.174,-9.888],"1.375":[5.566,-26.258,-9.761],"1.4167":[5.646,-25.944,-9.592],"1.4583":[5.805,-25.754,-9.402],"1.5":[5.495,-25.889,-9.257],"1.5417":[7.417,-27.194,-9.397],"1.5833":[9.275,-27.356,-9.826],"1.625":[11.609,-26.543,-10.553],"1.6667":[13.126,-25.803,-11.087],"1.7083":[14.049,-24.677,-12.119],"1.75":[14.037,-24.031,-11.766],"1.7917":[13.978,-23.124,-11.789],"1.8333":[13.395,-22.893,-11.53],"1.875":[12.654,-22.867,-10.385],"1.9167":[11.988,-23.324,-9.919],"1.9583":[10.832,-24.089,-10.292],"2.0":[10.311,-24.459,-10.591],"2.0417":[9.807,-24.798,-10.845],"2.0833":[9.268,-25.157,-10.945],"2.125":[7.988,-25.733,-10.64],"2.1667":[7.627,-25.639,-10.248],"2.2083":[7.394,-25.427,-9.729],"2.25":[7.246,-25.23,-9.339],"2.2917":[7.231,-25.094,-9.375],"2.3333":[7.292,-25.081,-9.483],"2.375":[7.341,-25.072,-9.522],"2.4167":[7.472,-25.057,-9.553],"2.4583":[7.539,-25.044,-9.555],"2.5":[7.599,-25.029,-9.56],"2.5417":[7.686,-25,-9.554],"2.5833":[7.717,-24.988,-9.538],"2.625":[7.741,-24.979,-9.516],"2.6667":[7.766,-24.97,-9.496],"2.7083":[7.831,-24.954,-9.463],"2.75":[7.875,-24.942,-9.456],"2.7917":[7.938,-24.927,-9.454],"2.8333":[8.022,-24.905,-9.464],"2.875":[8.444,-24.725,-9.678],"2.9167":[8.884,-24.497,-10.08],"2.9583":[9.284,-24.356,-10.41],"3.0":[10.137,-23.638,-9.869],"3.0417":[10.118,-23.509,-9.54],"3.0833":[10.384,-23.038,-9.416],"3.125":[10.156,-23.452,-9.794],"3.1667":[10.067,-23.566,-9.81],"3.2083":[9.994,-23.719,-9.888],"3.25":[9.962,-23.847,-10.02],"3.2917":[10.008,-24.004,-10.368],"3.3333":[10.052,-24.036,-10.524],"3.375":[10.075,-24.065,-10.623],"3.4167":[10.085,-24.089,-10.678],"3.4583":[10.098,-24.104,-10.699],"3.5":[10.105,-24.109,-10.702],"3.5417":[10.115,-24.11,-10.701],"3.5833":[10.133,-24.115,-10.706],"3.625":[10.142,-24.115,-10.706],"3.6667":[10.153,-24.114,-10.707],"3.7083":[10.18,-24.102,-10.704],"3.75":[10.198,-24.087,-10.703],"3.7917":[10.216,-24.072,-10.699],"3.8333":[10.24,-24.053,-10.693],"3.875":[10.295,-23.989,-10.668],"3.9167":[10.361,-23.921,-10.584],"3.9583":[10.459,-23.818,-10.47],"4.0":[10.587,-23.68,-10.364],"4.0417":[10.874,-23.375,-10.293],"4.0833":[11.001,-23.263,-10.36],"4.125":[11.408,-23.428,-10.585],"4.1667":[12.8,-24.317,-12.349],"4.2083":[12.815,-24.206,-12.723],"4.25":[12.536,-24.02,-12.567],"4.2917":[12.092,-24.39,-11.667],"4.3333":[11.685,-24.68,-11.033],"4.375":[11.358,-24.737,-10.56],"4.4167":[11.362,-24.741,-10.55],"4.4583":[11.319,-25.098,-10.69],"4.5":[11.243,-25.25,-10.661],"4.5417":[11.178,-25.348,-10.616],"4.5833":[11.158,-25.328,-10.569],"4.625":[11.213,-24.963,-10.432],"4.6667":[11.108,-25.042,-10.284],"4.7083":[11.008,-25.281,-10.354],"4.75":[11.284,-25.641,-10.527],"4.7917":[11.607,-26.019,-9.973],"4.8333":[11.933,-26.332,-9.269],"4.875":[12.426,-26.389,-7.976],"4.9167":[12.621,-26.175,-7.406],"4.9583":[12.961,-25.956,-6.876],"5.0":[13.307,-25.918,-6.677],"5.0417":[13.017,-27.207,-7.589],"5.0833":[12.824,-28.065,-7.988],"5.125":[12.635,-29.037,-8.292],"5.1667":[12.474,-30.087,-8.469],"5.2083":[12.364,-32.222,-8.427],"5.25":[12.451,-33.203,-8.245],"5.2917":[12.619,-34.071,-8.004],"5.3333":[13.129,-35.349,-7.506],"5.375":[13.398,-35.732,-7.322],"5.4167":[13.634,-35.938,-7.222],"5.4583":[14.06,-36.144,-7.103],"5.5":[14.275,-36.234,-7.038],"5.5417":[14.488,-36.316,-6.971],"5.5833":[14.703,-36.39,-6.901],"5.625":[15.13,-36.514,-6.746],"5.6667":[15.338,-36.565,-6.667],"5.7083":[15.545,-36.611,-6.583],"5.75":[15.749,-36.648,-6.495],"5.7917":[16.146,-36.71,-6.314],"5.8333":[16.338,-36.732,-6.222],"5.875":[16.523,-36.749,-6.127],"5.9167":[16.883,-36.768,-5.934],"5.9583":[17.056,-36.773,-5.838],"6.0":[17.22,-36.774,-5.743],"6.0417":[17.535,-36.761,-5.553],"6.0833":[17.686,-36.749,-5.459],"6.125":[17.83,-36.733,-5.367],"6.1667":[17.969,-36.717,-5.278],"6.2083":[18.232,-36.672,-5.111],"6.25":[18.356,-36.644,-5.032],"6.2917":[18.476,-36.612,-4.96],"6.3333":[18.591,-36.579,-4.893],"6.375":[18.806,-36.498,-4.771],"6.4167":[18.907,-36.454,-4.719],"6.4583":[19.006,-36.405,-4.675],"6.5":[19.104,-36.354,-4.637],"6.5417":[19.288,-36.237,-4.585],"6.5833":[19.375,-36.173,-4.572],"6.625":[19.463,-36.105,-4.565],"6.6667":[19.631,-35.955,-4.577],"6.7083":[19.714,-35.871,-4.597],"6.75":[19.798,-35.783,-4.624],"6.7917":[19.96,-35.592,-4.71],"6.8333":[20.043,-35.485,-4.767],"6.875":[20.121,-35.375,-4.833],"6.9167":[20.202,-35.256,-4.91],"6.9583":[20.362,-35.002,-5.092],"7.0":[20.442,-34.865,-5.198],"7.0417":[20.523,-34.721,-5.312],"7.0833":[20.678,-34.407,-5.575],"7.125":[20.734,-34.14,-5.871],"7.1667":[20.611,-33.243,-7.038],"7.2083":[20.136,-31.763,-8.738],"7.25":[17.901,-28,-11.809],"7.2917":[16.477,-26.316,-12.626],"7.3333":[15.271,-25.086,-12.973],"7.375":[14.169,-24.749,-13.124],"7.4167":[13.719,-24.885,-13.115],"7.4583":[13.425,-24.76,-12.95],"7.5":[13.363,-24.62,-12.709],"7.5417":[13.579,-24.401,-12.563],"7.5833":[13.722,-24.441,-12.69],"7.625":[13.82,-24.612,-12.958],"7.6667":[13.859,-24.765,-13.167],"7.7083":[13.8,-24.855,-13.241],"7.75":[13.749,-24.876,-13.237],"7.7917":[13.712,-24.908,-13.262],"7.8333":[13.647,-24.973,-13.336],"7.875":[13.616,-25.002,-13.376],"7.9167":[13.579,-25.026,-13.412]}},"righthand":{"rotation":{"0.0417":[102.492,-47.602,-96.338],"0.0833":[115.16,-44.92,-107.235],"0.125":[122.012,-36.366,-110.813],"0.1667":[122.125,-29.064,-112.865],"0.2083":[116.397,-18.595,-115.193],"0.25":[114.54,-15.999,-119.552],"0.2917":[114.876,-16.879,-120.255],"0.3333":[115.217,-18.31,-119.746],"0.375":[116.265,-22.43,-117.664],"0.4167":[116.574,-23.827,-117.013],"0.4583":[116.724,-24.72,-116.785],"0.5":[116.893,-25.814,-116.698],"0.5417":[117.406,-29.278,-117.028],"0.5833":[117.866,-31.826,-117.59],"0.625":[118.502,-34.749,-118.433],"0.6667":[120.365,-40.996,-120.801],"0.7083":[121.548,-43.952,-122.203],"0.75":[122.79,-46.574,-123.626],"0.7917":[124.822,-50.192,-125.834],"0.8333":[125.477,-51.22,-126.493],"0.875":[126.099,-52.061,-127.072],"0.9167":[126.69,-52.749,-127.592],"0.9583":[127.697,-53.723,-128.412],"1.0":[128.103,-54.052,-128.73],"1.0417":[128.423,-54.293,-128.976],"1.0833":[128.661,-54.475,-129.164],"1.125":[128.85,-54.722,-129.377],"1.1667":[128.807,-54.819,-129.421],"1.2083":[128.663,-54.93,-129.432],"1.25":[127.726,-47.79,-129.028],"1.2917":[126.079,-31.471,-131.349],"1.3333":[123.785,-14.457,-137.075],"1.375":[117.392,15.85,-154.456],"1.4167":[111.682,26.976,-168.345],"1.4583":[105.952,35.474,-182.707],"1.5":[101.677,44.843,-191.933],"1.5417":[101.624,56.175,-180.453],"1.5833":[113.071,51.278,-156.81],"1.625":[119.442,40.811,-135.833],"1.6667":[121.927,26.564,-119.499],"1.7083":[126.277,-2.373,-101.223],"1.75":[125.443,4.518,-100.561],"1.7917":[121.609,20.902,-103.149],"1.8333":[123.343,41.208,-108.391],"1.875":[127.644,47.173,-111.711],"1.9167":[129.479,43.216,-116.26],"1.9583":[112.829,41.012,-140.694],"2.0":[108.644,41.679,-150.399],"2.0417":[106.13,41.693,-159.915],"2.0833":[105.483,41.465,-168.488],"2.125":[107.898,42.117,-181.33],"2.1667":[108.872,44.643,-186.561],"2.2083":[108.134,48.512,-192.612],"2.25":[105.947,51.102,-199.193],"2.2917":[104.927,52.374,-207.827],"2.3333":[105.119,52.933,-211.231],"2.375":[105.066,53.433,-213.64],"2.4167":[105.552,53.608,-215.034],"2.4583":[105.495,53.101,-216.318],"2.5":[105.348,52.182,-217.476],"2.5417":[104.768,51.337,-219.367],"2.5833":[104.488,51.746,-220.176],"2.625":[104.254,52.197,-220.965],"2.6667":[104.017,52.679,-221.765],"2.7083":[103.476,53.707,-223.464],"2.75":[103.096,54.222,-224.409],"2.7917":[102.595,54.727,-225.458],"2.8333":[101.911,55.205,-226.659],"2.875":[96.681,57.02,-230.262],"2.9167":[90.841,59.79,-234.124],"2.9583":[85.462,59.985,-239.384],"3.0":[71.387,62.197,-249.737],"3.0417":[63.288,62.636,-255.906],"3.0833":[55.53,62.517,-261.858],"3.125":[43.847,61.272,-270.697],"3.1667":[40.762,60.675,-272.906],"3.2083":[39.756,60.431,-273.497],"3.25":[38.917,60.216,-273.965],"3.2917":[37.663,59.865,-274.605],"3.3333":[37.221,59.724,-274.784],"3.375":[36.891,59.615,-274.886],"3.4167":[36.653,59.529,-274.92],"3.4583":[36.444,59.423,-274.766],"3.5":[36.45,59.402,-274.603],"3.5417":[36.514,59.392,-274.385],"3.5833":[36.807,59.414,-273.801],"3.625":[37.013,59.44,-273.442],"3.6667":[37.239,59.467,-273.058],"3.7083":[37.766,59.536,-272.183],"3.75":[38.042,59.572,-271.711],"3.7917":[38.306,59.602,-271.219],"3.8333":[38.567,59.628,-270.709],"3.875":[51.743,61.151,-254.125],"3.9167":[82.351,57.14,-216.733],"3.9583":[99.765,46.708,-191.229],"4.0":[107.653,34.359,-173.461],"4.0417":[124.312,14.666,-130.069],"4.0833":[129.885,2.247,-108.008],"4.125":[129.314,-5.247,-98.962],"4.1667":[126.696,-13.259,-106.837],"4.2083":[127.575,-17.531,-111.854],"4.25":[128.837,-19.405,-116.29],"4.2917":[123.629,-17.725,-144.05],"4.3333":[117.567,-16.917,-158.488],"4.375":[111.881,-14.398,-168.861],"4.4167":[108.202,-7.741,-175.967],"4.4583":[109.303,9.104,-196.319],"4.5":[119.611,13.845,-200.477],"4.5417":[134.526,12.297,-195.849],"4.5833":[149.622,-1.695,-184.095],"4.625":[148.746,-32.791,-144.443],"4.6667":[143.256,-29.822,-120.707],"4.7083":[140.414,-19.964,-97.016],"4.75":[138.804,-5.887,-73.048],"4.7917":[136.082,-7.199,-70.482],"4.8333":[133.205,-11.918,-70.501],"4.875":[132.945,-24.912,-76.397],"4.9167":[135.901,-29.946,-80.245],"4.9583":[138.677,-33.557,-83.593],"5.0":[139.471,-35.89,-84.593],"5.0417":[139.594,-38.949,-84.65],"5.0833":[139.485,-39.726,-84.438],"5.125":[139.313,-40.182,-84.15],"5.1667":[139.012,-40.558,-83.665],"5.2083":[138.042,-41.067,-82.119],"5.25":[137.38,-41.208,-81.084],"5.2917":[136.631,-41.264,-79.907],"5.3333":[134.904,-41.13,-77.188],"5.375":[133.967,-40.943,-75.705],"5.4167":[133.009,-40.673,-74.17],"5.4583":[130.737,-39.19,-70.486],"5.5":[129.575,-37.918,-68.557],"5.5417":[128.53,-36.444,-66.81],"5.5833":[127.649,-34.896,-65.359],"5.625":[126.401,-32.23,-63.489],"5.6667":[125.998,-31.397,-63.021],"5.7083":[125.717,-31.079,-62.786],"5.75":[125.562,-31.4,-62.749],"5.7917":[125.31,-31.347,-62.594],"5.8333":[125.18,-31.359,-62.505],"5.875":[125.05,-31.385,-62.408],"5.9167":[124.781,-31.485,-62.196],"5.9583":[124.649,-31.544,-62.082],"6.0":[124.517,-31.61,-61.972],"6.0417":[124.245,-31.722,-61.752],"6.0833":[124.117,-31.767,-61.648],"6.125":[123.981,-31.798,-61.547],"6.1667":[123.854,-31.803,-61.456],"6.2083":[123.598,-31.745,-61.303],"6.25":[126.833,-22.234,-67.649],"6.2917":[130.948,-7.884,-82.895],"6.3333":[131.664,1.287,-97.99],"6.375":[108.663,16.615,-121.005],"6.4167":[98.344,11.363,-127.347],"6.4583":[92.862,5.289,-127.34],"6.5":[95.104,-3.228,-117.645],"6.5417":[106.418,-23.95,-74.843],"6.5833":[112.97,-29.459,-76.433],"6.625":[137.427,-34.263,-100.533],"6.6667":[167.088,-10.366,-146.432],"6.7083":[154.828,4.309,-155.656],"6.75":[134.88,15.541,-164.287],"6.7917":[115.043,29.207,-179.086],"6.8333":[105.983,30.677,-188.804],"6.875":[91.813,33.683,-211.765],"6.9167":[73.64,33.086,-243.149],"6.9583":[52.838,30.692,-255.425],"7.0":[40.773,33.712,-265.656],"7.0417":[38.599,32.414,-271.465],"7.0833":[77.927,30.342,-248.977],"7.125":[93.228,20.944,-241.5],"7.1667":[105.534,8.413,-242.546],"7.2083":[117.364,8.086,-242.073],"7.25":[127.809,23.956,-178.905],"7.2917":[126.605,27.352,-175.286],"7.3333":[123.41,29.403,-179.931],"7.375":[145.272,27.899,-160.639],"7.4167":[149.766,13.395,-142.215],"7.4583":[134.221,-4.569,-119.665],"7.5":[117.813,-11.365,-96.927],"7.5417":[109.673,-19.098,-104.716],"7.5833":[107.755,-27.949,-105.454],"7.625":[107.479,-29.074,-106.605],"7.6667":[107.391,-30.63,-107.485],"7.7083":[107.464,-32.604,-108.27],"7.75":[107.58,-32.138,-108.334],"7.7917":[107.878,-30.987,-108.503],"7.8333":[108.652,-27.963,-108.875],"7.875":[108.951,-26.801,-108.997],"7.9167":[109.073,-26.337,-109.044]},"position":{"0.0417":[-12.572,-24.52,-9.727],"0.0833":[-12.695,-24.481,-10.073],"0.125":[-12.98,-23.826,-10.22],"0.1667":[-12.808,-23.286,-10.263],"0.2083":[-11.979,-22.124,-10.379],"0.25":[-11.628,-21.901,-10.458],"0.2917":[-11.446,-21.865,-10.478],"0.3333":[-11.309,-21.845,-10.473],"0.375":[-11.102,-21.88,-10.456],"0.4167":[-11.046,-21.892,-10.451],"0.4583":[-11.015,-21.902,-10.449],"0.5":[-10.99,-21.935,-10.444],"0.5417":[-10.937,-22.089,-10.427],"0.5833":[-10.908,-22.233,-10.423],"0.625":[-10.881,-22.414,-10.431],"0.6667":[-10.839,-22.822,-10.492],"0.7083":[-10.824,-23.02,-10.542],"0.75":[-10.812,-23.196,-10.597],"0.7917":[-10.798,-23.434,-10.688],"0.8333":[-10.795,-23.498,-10.716],"0.875":[-10.793,-23.552,-10.744],"0.9167":[-10.792,-23.595,-10.771],"0.9583":[-10.793,-23.659,-10.816],"1.0":[-10.795,-23.682,-10.833],"1.0417":[-10.796,-23.701,-10.848],"1.0833":[-10.798,-23.715,-10.859],"1.125":[-10.801,-23.74,-10.866],"1.1667":[-10.802,-23.753,-10.863],"1.2083":[-10.804,-23.767,-10.855],"1.25":[-10.894,-23.612,-10.712],"1.2917":[-11.031,-23.191,-10.57],"1.3333":[-11.14,-22.767,-10.573],"1.375":[-11.258,-22.286,-10.9],"1.4167":[-11.057,-22.346,-11.056],"1.4583":[-10.781,-22.485,-11.256],"1.5":[-10.779,-22.574,-11.662],"1.5417":[-11.739,-22.176,-12.321],"1.5833":[-12.071,-21.663,-12.085],"1.625":[-12.209,-21.14,-11.611],"1.6667":[-12.15,-20.851,-11.059],"1.7083":[-12.015,-20.959,-10.564],"1.75":[-12.019,-20.552,-10.886],"1.7917":[-12.03,-20.117,-11.482],"1.8333":[-12.417,-20.144,-12.489],"1.875":[-12.735,-19.982,-12.576],"1.9167":[-12.827,-20.193,-12.239],"1.9583":[-12.156,-20.398,-11.429],"2.0":[-11.782,-20.556,-11.255],"2.0417":[-11.351,-20.837,-11.175],"2.0833":[-10.897,-21.182,-11.187],"2.125":[-10.106,-21.745,-11.366],"2.1667":[-9.864,-21.851,-11.374],"2.2083":[-9.682,-21.875,-11.259],"2.25":[-9.493,-21.847,-11.098],"2.2917":[-9.061,-21.838,-11.012],"2.3333":[-8.851,-21.895,-11.018],"2.375":[-8.724,-21.948,-11.007],"2.4167":[-8.659,-22.007,-10.98],"2.4583":[-8.599,-22.039,-10.94],"2.5":[-8.544,-22.061,-10.898],"2.5417":[-8.47,-22.092,-10.867],"2.5833":[-8.445,-22.116,-10.883],"2.625":[-8.419,-22.141,-10.901],"2.6667":[-8.392,-22.171,-10.92],"2.7083":[-8.333,-22.229,-10.962],"2.75":[-8.302,-22.259,-10.984],"2.7917":[-8.27,-22.287,-11.007],"2.8333":[-8.236,-22.313,-11.031],"2.875":[-8.361,-22.27,-11.179],"2.9167":[-8.571,-22.249,-11.474],"2.9583":[-8.625,-22.36,-11.665],"3.0":[-8.953,-22.454,-12.058],"3.0417":[-9.148,-22.482,-12.246],"3.0833":[-9.349,-22.487,-12.411],"3.125":[-9.689,-22.443,-12.646],"3.1667":[-9.794,-22.413,-12.711],"3.2083":[-9.833,-22.399,-12.736],"3.25":[-9.866,-22.387,-12.758],"3.2917":[-9.915,-22.369,-12.795],"3.3333":[-9.932,-22.363,-12.809],"3.375":[-9.945,-22.359,-12.822],"3.4167":[-9.954,-22.357,-12.832],"3.4583":[-9.963,-22.356,-12.849],"3.5":[-9.963,-22.357,-12.855],"3.5417":[-9.962,-22.36,-12.861],"3.5833":[-9.957,-22.365,-12.869],"3.625":[-9.954,-22.367,-12.872],"3.6667":[-9.95,-22.369,-12.875],"3.7083":[-9.948,-22.37,-12.882],"3.75":[-9.949,-22.369,-12.885],"3.7917":[-9.952,-22.366,-12.89],"3.8333":[-9.959,-22.362,-12.895],"3.875":[-10.193,-22.104,-12.795],"3.9167":[-10.682,-21.504,-12.476],"3.9583":[-10.932,-20.971,-12.164],"4.0":[-10.943,-20.506,-11.888],"4.0417":[-10.981,-20.063,-11.399],"4.0833":[-11.003,-19.899,-11.199],"4.125":[-10.967,-19.939,-10.998],"4.1667":[-10.942,-20.675,-10.702],"4.2083":[-10.956,-21.076,-10.644],"4.25":[-10.978,-21.335,-10.629],"4.2917":[-10.262,-22.04,-10.538],"4.3333":[-9.82,-21.949,-10.511],"4.375":[-9.655,-21.639,-10.613],"4.4167":[-9.732,-21.425,-10.949],"4.4583":[-9.44,-22.143,-12.346],"4.5":[-9.183,-22.876,-12.885],"4.5417":[-9.161,-23.292,-12.974],"4.5833":[-9.322,-23.341,-12.528],"4.625":[-9.443,-22.605,-10.695],"4.6667":[-9.585,-22,-10.399],"4.7083":[-9.286,-21.159,-10.869],"4.75":[-8.309,-20.281,-11.896],"4.7917":[-7.979,-20.542,-11.026],"4.8333":[-7.695,-20.972,-9.819],"4.875":[-7.271,-21.615,-8.506],"4.9167":[-7.031,-21.686,-8.156],"4.9583":[-6.79,-21.686,-7.888],"5.0":[-6.576,-21.671,-7.652],"5.0417":[-6.351,-21.597,-7.403],"5.0833":[-6.311,-21.576,-7.375],"5.125":[-6.287,-21.571,-7.374],"5.1667":[-6.267,-21.566,-7.372],"5.2083":[-6.236,-21.558,-7.369],"5.25":[-6.222,-21.553,-7.366],"5.2917":[-6.206,-21.547,-7.361],"5.3333":[-6.169,-21.534,-7.347],"5.375":[-6.144,-21.525,-7.337],"5.4167":[-6.113,-21.514,-7.325],"5.4583":[-6.017,-21.469,-7.28],"5.5":[-5.952,-21.435,-7.248],"5.5417":[-5.881,-21.397,-7.215],"5.5833":[-5.808,-21.359,-7.183],"5.625":[-5.677,-21.299,-7.131],"5.6667":[-5.63,-21.286,-7.114],"5.7083":[-5.602,-21.289,-7.104],"5.75":[-5.599,-21.312,-7.102],"5.7917":[-5.59,-21.329,-7.1],"5.8333":[-5.586,-21.335,-7.101],"5.875":[-5.583,-21.342,-7.102],"5.9167":[-5.58,-21.352,-7.105],"5.9583":[-5.58,-21.358,-7.107],"6.0":[-5.581,-21.363,-7.109],"6.0417":[-5.586,-21.374,-7.115],"6.0833":[-5.589,-21.38,-7.119],"6.125":[-5.594,-21.386,-7.123],"6.1667":[-5.601,-21.394,-7.128],"6.2083":[-5.616,-21.41,-7.137],"6.25":[-5.855,-21.465,-7.418],"6.2917":[-6.555,-21.985,-8.249],"6.3333":[-7.505,-22.75,-9.248],"6.375":[-8.892,-23.599,-11.497],"6.4167":[-9.272,-24.131,-12.207],"6.4583":[-9.477,-24.363,-12.563],"6.5":[-9.615,-24.223,-12.572],"6.5417":[-10.476,-22.994,-12.528],"6.5833":[-10.9,-22.661,-12.411],"6.625":[-11.49,-22.913,-12.514],"6.6667":[-11.66,-23.788,-13.666],"6.7083":[-11.56,-24.107,-13.629],"6.75":[-11.498,-24.311,-13.324],"6.7917":[-11.666,-23.948,-12.884],"6.8333":[-11.772,-24.091,-12.962],"6.875":[-11.595,-24.28,-13.161],"6.9167":[-11.414,-24.249,-13.289],"6.9583":[-11.262,-23.786,-13.253],"7.0":[-11.416,-23.803,-13.72],"7.0417":[-11.669,-23.921,-13.602],"7.0833":[-10.52,-24.709,-12.693],"7.125":[-10.138,-24.637,-12.529],"7.1667":[-9.611,-24.316,-12.552],"7.2083":[-8.991,-24.254,-12.895],"7.25":[-11.807,-22.251,-13.105],"7.2917":[-11.573,-22.072,-13.178],"7.3333":[-11.057,-22.698,-13.059],"7.375":[-11.936,-25.34,-13.991],"7.4167":[-12.921,-26.052,-13.667],"7.4583":[-13.316,-25.384,-11.94],"7.5":[-12.939,-23.973,-10.697],"7.5417":[-13.361,-23.797,-9.874],"7.5833":[-13.203,-24.249,-9.928],"7.625":[-13.254,-24.267,-9.932],"7.6667":[-13.281,-24.307,-9.951],"7.7083":[-13.341,-24.316,-9.986],"7.75":[-13.396,-24.239,-9.985],"7.7917":[-13.464,-24.133,-9.977],"7.8333":[-13.596,-23.908,-9.967],"7.875":[-13.642,-23.827,-9.965],"7.9167":[-13.659,-23.796,-9.965]}},"weapon":{"rotation":{"0.0417":[-61.528,68.769,101.95],"0.0833":[-72.553,71.956,89.185],"0.125":[-83.147,66.569,78.396],"0.1667":[-84.898,60.031,73.88],"0.2083":[-83.253,52.585,76.065],"0.25":[-83.024,56.196,76.416],"0.2917":[-83.168,59.382,77.047],"0.3333":[-82.933,61.126,78.036],"0.375":[-82.442,63.391,79.722],"0.4167":[-82.19,64.247,80.379],"0.4583":[-81.857,65.137,80.969],"0.5":[-81.379,66.224,81.559],"0.5417":[-79.503,69.642,83.212],"0.5833":[-77.807,72.161,84.484],"0.625":[-75.454,75.058,86.252],"0.6667":[-66.705,81.233,93.61],"0.7083":[-57.193,84.079,102.435],"0.75":[-37.46,86.336,121.571],"0.7917":[33.39,87.089,191.636],"0.8333":[49.752,86.467,207.826],"0.875":[59.541,85.808,217.501],"0.9167":[65.901,85.213,223.788],"0.9583":[73.32,84.285,231.164],"1.0":[75.554,83.955,233.395],"1.0417":[77.18,83.703,235.032],"1.0833":[78.264,83.51,236.112],"1.125":[79.027,83.251,236.816],"1.1667":[78.712,83.154,236.42],"1.2083":[77.988,83.051,235.572],"1.25":[73.486,83.033,230.077],"1.2917":[54.665,84.233,207.02],"1.3333":[18.871,83.675,164.607],"1.375":[-2.181,76.153,129.112],"1.4167":[1.911,70.318,123.765],"1.4583":[8.002,64.943,121.058],"1.5":[11.005,62.593,120.148],"1.5417":[5.551,65.349,116.445],"1.5833":[-0.571,67.863,111.923],"1.625":[-8.259,70.305,105.822],"1.6667":[-16.162,72.162,99.215],"1.7083":[-22.209,69.189,93.21],"1.75":[-18.376,42.347,91.596],"1.7917":[-11.651,3.709,90.155],"1.8333":[-5.562,-60.206,89.01],"1.875":[-34.665,-84.307,118.524],"1.9167":[18.433,-97.509,66.942],"1.9583":[-14.041,-112.373,101.788],"2.0":[-22.075,-119.246,109.928],"2.0417":[-28.154,-125.465,115.472],"2.0833":[-32.607,-130.623,119.011],"2.125":[-36.135,-135.938,121.129],"2.1667":[-33.589,-135.221,118.793],"2.2083":[-28.576,-133.293,114.366],"2.25":[-24.167,-131.765,110.229],"2.2917":[-21.678,-128.323,106.993],"2.3333":[-21,-126.61,105.695],"2.375":[-19.83,-125.352,103.842],"2.4167":[-17.174,-123.198,99.623],"2.4583":[-15.817,-122.402,97.517],"2.5":[-14.58,-121.837,95.64],"2.5417":[-12.378,-121.236,92.562],"2.5833":[-11.33,-121.1,91.212],"2.625":[-10.339,-121.023,89.959],"2.6667":[-9.384,-120.985,88.745],"2.7083":[-7.51,-120.911,86.23],"2.75":[-6.558,-120.835,84.807],"2.7917":[-5.547,-120.707,83.179],"2.8333":[-4.456,-120.522,81.279],"2.875":[-3.523,-119.532,75.909],"2.9167":[-0.275,-117.369,67.297],"2.9583":[17.435,-115.305,44.49],"3.0":[58.625,-135.179,-12.074],"3.0417":[69.903,-158.114,-30.858],"3.0833":[74.712,-179.657,-47.084],"3.125":[76.017,-230.127,-68.745],"3.1667":[74.132,-235.384,-71.366],"3.2083":[72.544,-240.119,-73.698],"3.25":[71.41,-244.303,-75.567],"3.2917":[71.477,-250.787,-77.077],"3.3333":[72.33,-252.888,-76.902],"3.375":[72.99,-254.207,-76.581],"3.4167":[73.433,-254.892,-76.264],"3.4583":[73.642,-255.089,-76.113],"3.5":[73.692,-255.079,-76.081],"3.5417":[73.759,-255.047,-76.028],"3.5833":[74.019,-254.898,-75.797],"3.625":[74.235,-254.765,-75.596],"3.6667":[74.472,-254.571,-75.378],"3.7083":[75.169,-254.002,-74.745],"3.75":[75.589,-253.599,-74.374],"3.7917":[76.072,-253.111,-73.957],"3.8333":[76.59,-252.524,-73.522],"3.875":[77.771,-250.798,-72.598],"3.9167":[78.204,-248.271,-72.514],"3.9583":[78.604,-244.624,-72.738],"4.0":[79.114,-240.484,-73.168],"4.0417":[80.862,-233.205,-74.143],"4.0833":[82.181,-231.281,-74.44],"4.125":[83.992,-231.557,-74.424],"4.1667":[90.101,-240.859,-74.213],"4.2083":[91.685,-246.61,-75.656],"4.25":[89.777,-250.565,-79.47],"4.2917":[72.005,-249.636,-92.398],"4.3333":[61.191,-246.771,-97.579],"4.375":[54.972,-243.287,-99.519],"4.4167":[56.908,-239.73,-98.551],"4.4583":[92.696,-231.16,-92.631],"4.5":[116.943,-226.07,-87.002],"4.5417":[140.108,-219.374,-79.091],"4.5833":[167.406,-207.756,-70.075],"4.625":[211.763,-186.914,-69.662],"4.6667":[221.444,-185.564,-71.715],"4.7083":[229.464,-186.114,-72.854],"4.75":[241.926,-188.867,-73.985],"4.7917":[245.998,-191.763,-73.235],"4.8333":[248.665,-195.682,-72.48],"4.875":[247.895,-204.908,-75.031],"4.9167":[245.102,-209.694,-78.523],"4.9583":[242.492,-213.36,-81.811],"5.0":[241.81,-215.736,-82.781],"5.0417":[241.789,-218.931,-82.843],"5.0833":[241.912,-219.792,-82.657],"5.125":[242.067,-220.338,-82.402],"5.1667":[242.356,-220.796,-81.94],"5.2083":[243.304,-221.422,-80.422],"5.25":[243.956,-221.573,-79.381],"5.2917":[244.69,-221.609,-78.182],"5.3333":[246.431,-221.277,-75.38],"5.375":[247.393,-220.894,-73.828],"5.4167":[248.375,-220.361,-72.227],"5.4583":[250.661,-217.934,-68.364],"5.5":[251.799,-215.991,-66.347],"5.5417":[252.793,-213.74,-64.533],"5.5833":[253.607,-211.357,-63.027],"5.625":[254.711,-206.909,-61.041],"5.6667":[255.059,-205.189,-60.501],"5.7083":[255.305,-204.025,-60.193],"5.75":[255.463,-203.564,-60.062],"5.7917":[255.7,-203.499,-59.947],"5.8333":[255.822,-203.504,-59.875],"5.875":[255.945,-203.528,-59.798],"5.9167":[256.201,-203.615,-59.621],"5.9583":[256.325,-203.672,-59.529],"6.0":[256.45,-203.729,-59.438],"6.0417":[256.702,-203.835,-59.255],"6.0833":[256.832,-203.873,-59.167],"6.125":[256.956,-203.897,-59.088],"6.1667":[257.077,-203.9,-59.017],"6.2083":[257.314,-203.833,-58.899],"6.25":[253.385,-196.536,-65.564],"6.2917":[248.492,-184.372,-81.275],"6.3333":[247.448,-177.141,-97.117],"6.375":[271.007,-165.189,-120.71],"6.4167":[287.966,-159.111,-129.259],"6.4583":[295.904,-156.434,-132.637],"6.5":[286.83,-164.498,-118.44],"6.5417":[263.675,-188.963,-65.117],"6.5833":[249.895,-191.059,-62.635],"6.625":[221.819,-194.171,-74.045],"6.6667":[158.115,-186.47,-88.571],"6.7083":[125.673,-187.813,-88.083],"6.75":[85.079,-190.514,-86.872],"6.7917":[19.587,-191.134,-90.102],"6.8333":[-67.435,-179.79,-86.436],"6.875":[-115.369,-185.838,-70.712],"6.9167":[-191.102,-189.712,-57.447],"6.9583":[-256.191,-199.455,-61.448],"7.0":[-280.639,-203.857,-64.778],"7.0417":[-291.415,-204.575,-61.274],"7.0833":[-264.244,-172.043,-18.764],"7.125":[-267.417,-147.438,1.035],"7.1667":[-290.575,-128.502,29.96],"7.2083":[-303.5,-118.192,48.238],"7.25":[-243.121,-109.828,62.149],"7.2917":[-212.147,-112.013,58.631],"7.3333":[-183.069,-115.514,54.536],"7.375":[-163.361,-101.676,79.883],"7.4167":[-238.076,-104.284,177.665],"7.4583":[-243.442,-137.994,209.163],"7.5":[-246.199,-173.759,239.534],"7.5417":[-258.745,-208.654,258.419],"7.5833":[-258.724,-215.559,258.755],"7.625":[-258.326,-216.665,257.708],"7.6667":[-258.078,-218.211,256.937],"7.7083":[-257.955,-220.181,256.266],"7.75":[-258.135,-219.728,256.144],"7.7917":[-258.579,-218.594,255.857],"7.8333":[-259.702,-215.634,255.186],"7.875":[-260.118,-214.491,254.963],"7.9167":[-260.286,-214.035,254.878]},"position":{"0.0417":[-5.741,-13.371,-14.134],"0.0833":[-5.403,-13.296,-14.184],"0.125":[-5.188,-13.046,-14.237],"0.1667":[-4.891,-12.811,-14.362],"0.2083":[-4.147,-12.058,-14.593],"0.25":[-3.775,-11.88,-14.653],"0.2917":[-3.581,-11.814,-14.672],"0.3333":[-3.456,-11.761,-14.675],"0.375":[-3.303,-11.683,-14.681],"0.4167":[-3.266,-11.655,-14.681],"0.4583":[-3.244,-11.639,-14.681],"0.5":[-3.231,-11.633,-14.681],"0.5417":[-3.228,-11.649,-14.675],"0.5833":[-3.234,-11.683,-14.668],"0.625":[-3.253,-11.733,-14.668],"0.6667":[-3.303,-11.858,-14.684],"0.7083":[-3.331,-11.921,-14.697],"0.75":[-3.356,-11.98,-14.712],"0.7917":[-3.397,-12.055,-14.737],"0.8333":[-3.406,-12.077,-14.743],"0.875":[-3.416,-12.096,-14.753],"0.9167":[-3.422,-12.108,-14.759],"0.9583":[-3.428,-12.13,-14.778],"1.0":[-3.428,-12.139,-14.784],"1.0417":[-3.431,-12.146,-14.79],"1.0833":[-3.431,-12.155,-14.79],"1.125":[-3.438,-12.168,-14.793],"1.1667":[-3.444,-12.177,-14.79],"1.2083":[-3.453,-12.186,-14.784],"1.25":[-3.481,-12.199,-14.775],"1.2917":[-3.459,-12.158,-14.812],"1.3333":[-3.381,-12.086,-14.837],"1.375":[-3.044,-11.946,-14.753],"1.4167":[-2.694,-11.883,-14.628],"1.4583":[-2.316,-11.774,-14.518],"1.5":[-2.134,-11.708,-14.484],"1.5417":[-2.209,-12.186,-14.425],"1.5833":[-2.269,-12.658,-14.375],"1.625":[-2.316,-13.171,-14.331],"1.6667":[-2.338,-13.636,-14.3],"1.7083":[-2.25,-14.102,-14.103],"1.75":[-1.938,-13.546,-13.046],"1.7917":[-1.525,-11.886,-12.284],"1.8333":[-1.325,-8.646,-13.653],"1.875":[-1.447,-7.396,-14.731],"1.9167":[-1.409,-6.974,-15.322],"1.9583":[-1.384,-6.655,-16.209],"2.0":[-1.469,-6.57,-16.578],"2.0417":[-1.597,-6.499,-16.881],"2.0833":[-1.731,-6.414,-17.103],"2.125":[-1.894,-6.149,-17.312],"2.1667":[-1.85,-5.958,-17.212],"2.2083":[-1.747,-5.774,-16.975],"2.25":[-1.659,-5.614,-16.775],"2.2917":[-1.578,-5.349,-16.584],"2.3333":[-1.569,-5.261,-16.503],"2.375":[-1.584,-5.211,-16.415],"2.4167":[-1.641,-5.155,-16.247],"2.4583":[-1.672,-5.139,-16.184],"2.5":[-1.7,-5.136,-16.147],"2.5417":[-1.728,-5.133,-16.128],"2.5833":[-1.738,-5.142,-16.125],"2.625":[-1.744,-5.152,-16.122],"2.6667":[-1.747,-5.161,-16.125],"2.7083":[-1.769,-5.189,-16.125],"2.75":[-1.788,-5.202,-16.125],"2.7917":[-1.813,-5.217,-16.122],"2.8333":[-1.85,-5.236,-16.115],"2.875":[-2.172,-5.289,-16.15],"2.9167":[-2.606,-5.352,-16.172],"2.9583":[-2.925,-5.467,-16.037],"3.0":[-3.538,-6.158,-15.878],"3.0417":[-3.85,-6.445,-15.728],"3.0833":[-4.366,-6.927,-15.565],"3.125":[-5.1,-7.717,-15.378],"3.1667":[-5.15,-7.774,-15.403],"3.2083":[-5.185,-7.808,-15.403],"3.25":[-5.21,-7.83,-15.384],"3.2917":[-5.244,-7.871,-15.3],"3.3333":[-5.26,-7.896,-15.262],"3.375":[-5.266,-7.905,-15.237],"3.4167":[-5.269,-7.908,-15.225],"3.4583":[-5.263,-7.914,-15.225],"3.5":[-5.26,-7.914,-15.225],"3.5417":[-5.253,-7.914,-15.228],"3.5833":[-5.244,-7.917,-15.231],"3.625":[-5.241,-7.917,-15.231],"3.6667":[-5.238,-7.917,-15.231],"3.7083":[-5.231,-7.924,-15.234],"3.75":[-5.228,-7.93,-15.234],"3.7917":[-5.228,-7.933,-15.234],"3.8333":[-5.228,-7.939,-15.231],"3.875":[-5.238,-7.967,-15.234],"3.9167":[-5.25,-8.061,-15.253],"3.9583":[-5.272,-8.221,-15.275],"4.0":[-5.306,-8.43,-15.297],"4.0417":[-5.391,-8.905,-15.29],"4.0833":[-5.441,-9.117,-15.25],"4.125":[-5.494,-9.289,-15.172],"4.1667":[-5.663,-9.708,-14.9],"4.2083":[-5.744,-9.924,-14.828],"4.25":[-5.797,-10.067,-14.843],"4.2917":[-5.669,-9.583,-15.278],"4.3333":[-5.46,-8.98,-15.703],"4.375":[-5.222,-8.489,-16.128],"4.4167":[-5.075,-8.38,-16.434],"4.4583":[-4.844,-9.486,-16.278],"4.5":[-4.403,-10.052,-15.69],"4.5417":[-3.831,-10.317,-14.887],"4.5833":[-2.803,-10.527,-14.003],"4.625":[-0.528,-11.002,-13.872],"4.6667":[-0.166,-11.271,-14.156],"4.7083":[0.031,-11.577,-14.5],"4.75":[0.334,-12.121,-14.943],"4.7917":[0.559,-12.433,-14.218],"4.8333":[0.838,-12.689,-13.231],"4.875":[1.5,-12.643,-12.084],"4.9167":[1.881,-12.455,-11.621],"4.9583":[2.219,-12.271,-11.24],"5.0":[2.459,-12.168,-10.975],"5.0417":[2.694,-12.018,-10.725],"5.0833":[2.734,-11.983,-10.703],"5.125":[2.753,-11.977,-10.709],"5.1667":[2.766,-11.98,-10.718],"5.2083":[2.775,-12.005,-10.756],"5.25":[2.772,-12.027,-10.778],"5.2917":[2.766,-12.055,-10.803],"5.3333":[2.753,-12.121,-10.856],"5.375":[2.75,-12.155,-10.884],"5.4167":[2.75,-12.193,-10.909],"5.4583":[2.759,-12.28,-10.956],"5.5":[2.766,-12.333,-10.975],"5.5417":[2.781,-12.38,-10.987],"5.5833":[2.797,-12.418,-10.993],"5.625":[2.838,-12.477,-11],"5.6667":[2.856,-12.493,-11],"5.7083":[2.872,-12.505,-11.003],"5.75":[2.878,-12.514,-11.006],"5.7917":[2.881,-12.527,-11.015],"5.8333":[2.878,-12.533,-11.021],"5.875":[2.878,-12.536,-11.031],"5.9167":[2.875,-12.543,-11.043],"5.9583":[2.872,-12.546,-11.05],"6.0":[2.866,-12.549,-11.059],"6.0417":[2.856,-12.555,-11.075],"6.0833":[2.847,-12.561,-11.084],"6.125":[2.838,-12.564,-11.093],"6.1667":[2.828,-12.571,-11.103],"6.2083":[2.803,-12.586,-11.121],"6.25":[2.728,-12.855,-11.212],"6.2917":[2.466,-13.183,-11.646],"6.3333":[1.903,-13.327,-12.4],"6.375":[0.506,-13.521,-15.518],"6.4167":[-0.288,-13.939,-17.253],"6.4583":[-0.884,-14.218,-18.165],"6.5":[-0.988,-13.952,-18.05],"6.5417":[-1.394,-14.083,-17.034],"6.5833":[-1.584,-13.733,-16.318],"6.625":[-1.613,-13.168,-14.915],"6.6667":[-3.4,-12.227,-13.425],"6.7083":[-4.778,-11.927,-13.89],"6.75":[-5.506,-11.38,-15.206],"6.7917":[-4.41,-10.661,-16.69],"6.8333":[-1.484,-11.174,-15.272],"6.875":[-2.403,-11.814,-14.056],"6.9167":[-5.956,-10.824,-13.672],"6.9583":[-6.706,-9.661,-17.615],"7.0":[-5.963,-9.533,-19.331],"7.0417":[-5.572,-9.492,-19.884],"7.0833":[-5.106,-9.105,-18.384],"7.125":[-4.772,-8.992,-18.39],"7.1667":[-4.906,-9.152,-18.912],"7.2083":[-4.703,-8.871,-18.659],"7.25":[-1.181,-8.286,-16.512],"7.2917":[-0.863,-9.717,-15.997],"7.3333":[-1.172,-11.118,-15.653],"7.375":[-3.156,-14.408,-16.068],"7.4167":[-4.328,-15.686,-15.975],"7.4583":[-5.128,-15.833,-15.168],"7.5":[-5.366,-14.93,-14.503],"7.5417":[-6.11,-13.846,-14.156],"7.5833":[-6.222,-13.902,-14.303],"7.625":[-6.306,-13.855,-14.306],"7.6667":[-6.366,-13.814,-14.322],"7.7083":[-6.456,-13.73,-14.343],"7.75":[-6.503,-13.674,-14.34],"7.7917":[-6.544,-13.611,-14.334],"7.8333":[-6.61,-13.499,-14.325],"7.875":[-6.625,-13.464,-14.318],"7.9167":[-6.631,-13.452,-14.318]}},"up":{"rotation":{"0.0":[0,0,0],"1.5":[0,0,0],"1.5417":[22.788,0,0],"1.5833":[44.314,0,0],"1.625":[67.366,0,0],"1.6667":[86.94,0,0],"1.7083":[100.452,0,0],"1.75":[99.877,0,0],"1.7917":[99.194,0,0],"1.8333":[104.665,0,0],"1.875":[115.807,0,0],"1.9167":[124.509,0,0],"1.9583":[143.072,0,0],"2.0":[152.591,0,0],"2.0417":[161.303,0,0],"2.0833":[168.387,0,0],"2.125":[175.008,0,0],"2.1667":[174.987,0,0],"2.7083":[175.148,0,0],"3.25":[175.148,0,0],"3.2917":[175.234,0,0],"4.2917":[175.358,0,0],"4.375":[175.358,0,0],"4.4167":[172.902,0,0],"4.4583":[132.302,0,0],"4.5":[106.573,0,0],"4.5417":[85.548,0,0],"4.5833":[64.506,0,0],"4.625":[25.857,0,0],"4.6667":[12.27,0,0],"4.7083":[4.069,0,0],"4.75":[0,0,0],"6.375":[0,0,0],"6.4167":[77.287,0,0],"6.4583":[161.056,0,0],"6.5":[170.574,0,0],"6.5417":[176.116,0,0],"6.5833":[173.133,0,0],"6.625":[154.332,0,0],"6.6667":[109.814,0,0],"6.7083":[102.327,0,0],"6.75":[99.818,0,0],"6.7917":[89.187,0,0],"6.8333":[74.589,0,0],"6.875":[72.665,0,0],"6.9167":[78.996,0,0],"6.9583":[101.451,0,0],"7.0":[109.89,0,0],"7.0417":[111.126,0,0],"7.0833":[108.374,0,0],"7.125":[105.423,0,0],"7.1667":[101.172,0,0],"7.2083":[96.05,0,0],"7.25":[81.99,0,0],"7.2917":[63.625,0,0],"7.3333":[37.52,0,0],"7.375":[5.74,0,0],"7.4167":[0,0,0],"7.9167":[0,0,0]}},"down":{"rotation":{"0.0":[0,0,0],"1.0417":[0,0,0],"1.0833":[-0.059,0,0],"1.5":[-0.059,0,0],"1.5417":[-7.509,0,0],"1.5833":[-15.761,0,0],"1.625":[-25.23,0,0],"1.6667":[-35.363,0,0],"1.7083":[-53.779,0,0],"1.75":[-62.672,0,0],"1.7917":[-71.958,0,0],"1.8333":[-90.924,0,0],"1.875":[-100.356,0,0],"1.9167":[-109.529,-0.048,0.246],"1.9583":[-127.337,-0.466,2.375],"2.0":[-135.363,-0.344,1.759],"2.0417":[-142.958,-0.12,0.615],"2.0833":[-150.246,0,0],"2.125":[-164.499,0,0],"2.1667":[-169.034,0,0],"2.2083":[-172.816,0,0],"2.25":[-174.432,0,0],"2.2917":[-175.083,0,0],"2.875":[-175.087,0,0],"3.8333":[-175.087,0,0],"3.875":[-175.083,0,0],"4.25":[-175.083,0,0],"4.2917":[-119.575,0,0],"4.3333":[-55.309,0,0],"4.375":[-7.552,0,0],"4.4167":[0.054,0,0],"4.7917":[0.054,0,0],"4.8333":[0,0,0],"6.375":[0.054,0,0],"6.6667":[0.054,0,0],"6.7083":[-2.903,0,0],"6.75":[-10.014,0,0],"6.7917":[-28.635,0,0],"6.8333":[-39.569,0,0],"6.875":[-51.334,0,0],"6.9167":[-62.888,0,0],"6.9583":[-83.76,0,0],"7.0":[-94.851,0,0],"7.0417":[-108.183,0,0],"7.0833":[-144.477,0,0],"7.125":[-160.497,0,0],"7.1667":[-170.37,0,0],"7.2083":[-171.765,0,0],"7.25":[-149.654,0,0],"7.2917":[-105.269,0,0],"7.3333":[-50.283,0,0],"7.375":[-3.523,0,0],"7.4167":[0,0,0],"7.9167":[0,0,0]}},"lefthand":{"position":[0,1.6,0],"scale":[1,1.6,1]},"righthand_1":{"rotation":{"2.375":[0,0,0],"2.9167":[0,5,0],"4.0833":[0,5,0],"4.2917":[0,0,0]},"position":{"0.0":[0,2.7973,0],"1.625":[0,2.7973,0],"2.375":[1.2027,2.8,0],"3.7917":[1.2027,2.8,0],"4.9583":[-1.2133,3.8,-0.75],"6.3333":[-1.2133,3.8,-0.75],"6.9583":[0,2.7973,0]},"scale":[1,1.4,1]},"camera":{"rotation":{"0.0":[0.149,-0.038,-0.023],"0.0417":[0.486,-0.126,-0.079],"0.0833":[1.03,-0.266,-0.168],"0.125":[1.161,-0.298,-0.184],"0.1667":[1.058,-0.269,-0.151],"0.2083":[0.776,-0.186,-0.053],"0.25":[0.4,-0.074,0.079],"0.2917":[0.139,0.003,0.169],"0.3333":[-0.214,0.107,0.294],"0.375":[-0.441,0.178,0.375],"0.4167":[-0.491,0.193,0.393],"0.4583":[-0.441,0.153,0.361],"0.5":[-0.349,0.088,0.312],"0.5417":[-0.175,-0.037,0.216],"0.5833":[0.011,-0.171,0.11],"0.625":[0.123,-0.252,0.046],"0.6667":[0.244,-0.338,-0.018],"0.7083":[0.272,-0.358,-0.034],"0.75":[0.254,-0.338,-0.018],"0.7917":[0.164,-0.213,0.096],"0.8333":[0.107,-0.134,0.168],"0.875":[0.032,-0.009,0.262],"0.9167":[0,0.076,0.302],"0.9583":[0.014,0.109,0.29],"1.0":[0.079,0.135,0.247],"1.0417":[0.179,0.147,0.184],"1.0833":[0.26,0.155,0.14],"1.125":[0.341,0.167,0.099],"1.1667":[0.523,0.221,0.048],"1.2083":[0.652,0.26,0.031],"1.25":[0.854,0.326,0.012],"1.2917":[0.963,0.373,0.005],"1.3333":[1.03,0.444,-0.001],"1.375":[0.94,0.519,0.028],"1.4167":[0.791,0.572,0.069],"1.4583":[0.483,0.653,0.15],"1.5":[0.245,0.707,0.208],"1.5417":[-0.093,0.78,0.283],"1.5833":[-0.38,0.839,0.328],"1.625":[-0.504,0.866,0.327],"1.6667":[-0.646,0.89,0.248],"1.7083":[-0.744,0.902,0.119],"1.75":[-0.78,0.905,0.026],"1.7917":[-0.816,0.912,-0.088],"1.8333":[-0.803,0.918,-0.135],"1.875":[-0.689,0.928,-0.184],"1.9167":[-0.487,0.937,-0.216],"1.9583":[-0.348,0.941,-0.229],"2.0":[-0.17,0.945,-0.239],"2.0417":[-0.069,0.932,-0.226],"2.0833":[-0.01,0.898,-0.195],"2.125":[0.084,0.827,-0.124],"2.1667":[0.171,0.748,-0.05],"2.2083":[0.225,0.71,-0.012],"2.25":[0.306,0.68,0.017],"2.2917":[0.372,0.695,-0.021],"2.3333":[0.409,0.715,-0.072],"2.375":[0.449,0.765,-0.173],"2.4167":[0.469,0.794,-0.235],"2.4583":[0.486,0.837,-0.297],"2.5":[0.479,0.873,-0.297],"2.5417":[0.451,0.902,-0.289],"2.5833":[0.38,0.937,-0.282],"2.625":[0.322,0.968,-0.27],"2.6667":[0.214,1.009,-0.25],"2.7083":[0.087,1.053,-0.225],"2.75":[0.008,1.08,-0.207],"2.7917":[-0.119,1.117,-0.175],"2.8333":[-0.244,1.151,-0.139],"2.875":[-0.313,1.17,-0.114],"2.9167":[-0.4,1.193,-0.081],"2.9583":[-0.452,1.208,-0.04],"3.0":[-0.47,1.213,-0.014],"3.0417":[-0.46,1.205,0.037],"3.0833":[-0.407,1.186,0.097],"3.125":[-0.283,1.138,0.205],"3.1667":[-0.136,1.07,0.292],"3.2083":[-0.031,1.019,0.325],"3.25":[0.13,0.932,0.288],"3.2917":[0.338,0.839,0.105],"3.3333":[0.484,0.779,-0.057],"3.375":[0.676,0.694,-0.289],"3.4167":[0.781,0.622,-0.436],"3.4583":[0.786,0.578,-0.442],"3.5":[0.724,0.529,-0.402],"3.5417":[0.645,0.5,-0.356],"3.5833":[0.493,0.455,-0.286],"3.625":[0.319,0.405,-0.229],"3.6667":[0.196,0.362,-0.221],"3.7083":[-0.069,0.276,-0.248],"3.75":[-0.297,0.207,-0.291],"3.7917":[-0.591,0.103,-0.355],"3.8333":[-0.723,-0.001,-0.387],"3.875":[-0.632,-0.07,-0.364],"3.9167":[-0.244,-0.186,-0.272],"3.9583":[0.274,-0.297,-0.149],"4.0":[0.591,-0.351,-0.074],"4.0417":[0.895,-0.386,0],"4.0833":[1.026,-0.384,0.035],"4.125":[1.104,-0.38,0.055],"4.1667":[1.176,-0.373,0.075],"4.2083":[1.298,-0.353,0.11],"4.25":[1.355,-0.34,0.124],"4.2917":[1.42,-0.318,0.144],"4.3333":[1.463,-0.303,0.157],"4.375":[1.507,-0.274,0.173],"4.4167":[1.546,-0.245,0.186],"4.4583":[1.565,-0.227,0.192],"4.5":[1.588,-0.192,0.2],"4.5417":[1.6,-0.168,0.204],"4.5833":[1.608,-0.132,0.208],"4.625":[1.612,-0.1,0.209],"4.6667":[1.588,-0.07,0.198],"4.7083":[1.464,-0.007,0.143],"4.75":[1.28,0.071,0.06],"4.7917":[1.138,0.123,-0.004],"4.8333":[0.93,0.197,-0.096],"4.875":[0.871,0.219,-0.124],"4.9167":[0.69,0.279,-0.202],"4.9583":[0.669,0.285,-0.212],"5.0":[0.719,0.268,-0.177],"5.0417":[0.856,0.217,-0.078],"5.0833":[1.021,0.152,0.041],"5.125":[1.126,0.106,0.116],"5.1667":[1.231,0.039,0.201],"5.2083":[1.257,-0.017,0.216],"5.25":[1.231,-0.045,0.192],"5.2917":[1.161,-0.101,0.114],"5.3333":[1.056,-0.156,0.02],"5.375":[0.965,-0.193,-0.038],"5.4167":[0.803,-0.247,-0.112],"5.4583":[0.68,-0.285,-0.138],"5.5":[0.487,-0.338,-0.135],"5.5417":[0.287,-0.387,-0.1],"5.5833":[0.148,-0.417,-0.07],"5.625":[-0.059,-0.457,-0.031],"5.6667":[-0.195,-0.481,-0.009],"5.7083":[-0.386,-0.508,-0.023],"5.75":[-0.562,-0.525,-0.263],"5.7917":[-0.67,-0.531,-0.405],"5.8333":[-0.807,-0.509,-0.383],"5.875":[-0.931,-0.414,-0.179],"5.9167":[-1.002,-0.32,0.001],"5.9583":[-1.085,-0.168,0.267],"6.0":[-1.127,-0.036,0.427],"6.0417":[-1.11,0.031,0.431],"6.0833":[-0.873,0.131,0.31],"6.125":[-0.624,0.187,0.189],"6.1667":[-0.22,0.25,0.033],"6.2083":[0.091,0.229,0.043],"6.25":[0.26,0.051,0.264],"6.2917":[0.327,-0.136,0.403],"6.3333":[0.205,-0.2,0.328],"6.375":[0.07,-0.236,0.247],"6.4167":[-0.157,-0.282,0.12],"6.4583":[-0.367,-0.326,0.024],"6.5":[-0.451,-0.36,-0.001],"6.5417":[-0.535,-0.423,0.04],"6.5833":[-0.588,-0.472,0.1],"6.625":[-0.641,-0.549,0.223],"6.6667":[-0.676,-0.619,0.365],"6.7083":[-0.696,-0.662,0.455],"6.75":[-0.712,-0.709,0.569],"6.7917":[-0.719,-0.731,0.617],"6.8333":[-0.722,-0.738,0.635],"6.875":[-0.556,-0.516,0.567],"6.9167":[-0.403,-0.29,0.485],"6.9583":[-0.16,0.096,0.312],"7.0":[-0.011,0.439,0.088],"7.0417":[-0.061,0.589,-0.117],"7.0833":[-0.766,0.735,-0.683],"7.125":[-1.563,0.796,-1.151],"7.1667":[-1.778,0.8,-1.195],"7.2083":[-1.914,0.755,-1.193],"7.25":[-2.094,0.602,-1.181],"7.2917":[-2.147,0.494,-1.164],"7.3333":[-2.2,0.321,-1.122],"7.375":[-2.217,0.191,-1.079],"7.4167":[-2.222,0.017,-0.986],"7.4583":[-2.171,-0.137,-0.777],"7.5":[-1.83,-0.25,-0.31],"7.5417":[-0.959,-0.378,0.424],"7.5833":[-0.347,-0.384,0.433],"7.625":[0.257,-0.306,-0.08],"7.6667":[0.271,-0.134,-0.103],"7.7083":[0.187,0.013,-0.001],"7.75":[0.097,0.079,0.051],"7.7917":[0.045,0.051,0.035],"7.8333":[0.024,0.027,0.019],"7.875":[0.003,0.003,0.002],"7.9167":[0.003,-0.001,-0.001]}}},"sound_effects":{"0.0":{"effect":"melee.cobra_vanguard.cobra_vanguard_inspect_1"}}},"static_idle":{"loop":true,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":[126.242,22.136,121.521],"position":[13.583,-25.017,-13.418]},"righthand":{"rotation":[109.144,-26.25,-109.048],"position":[-13.661,-23.795,-9.963]},"weapon":{"rotation":[-80.374,33.949,74.853],"position":[-6.631,-13.455,-14.315]},"lefthand":{"position":[0,1.6,0],"scale":[1,1.6,1]},"righthand_1":{"position":[0,2.7973,0],"scale":[1,1.4,1]}}},"melee_1":{"loop":true,"animation_length":2.0833,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[105.983,14.266,88.134],"0.0417":[138.043,37.159,82.091],"0.0833":[142.12,41.701,84.755],"0.125":[128.463,28.577,80.917],"0.1667":[109.799,-9,76.32],"0.2083":[97.27,-39.143,78.865],"0.25":[107.007,-20.009,75.309],"0.2917":[117.821,6.388,75.868],"0.3333":[129.591,30.086,81.405],"0.375":[131.19,32.65,82.384],"0.4167":[132.954,35.079,83.353],"0.4583":[134.084,36.494,83.914],"0.5":[135.104,37.675,84.364],"0.5417":[136.407,39.043,84.82],"0.5833":[137.115,39.709,84.977],"0.625":[137.924,40.377,84.996],"0.6667":[138.295,40.612,84.881],"0.7083":[138.539,40.704,84.673],"0.75":[138.677,40.586,84.219],"0.7917":[138.627,40.354,83.842],"0.8333":[138.359,39.802,83.199],"0.875":[138.065,39.316,82.747],"0.9167":[137.692,38.748,82.302],"0.9583":[136.985,37.757,81.656],"1.0":[136.435,37.025,81.273],"1.0417":[135.504,35.852,80.807],"1.0833":[134.81,35.046,80.582],"1.125":[134.074,34.222,80.452],"1.1667":[132.886,32.989,80.443],"1.2083":[132.032,32.198,80.576],"1.25":[130.68,31.087,81.025],"1.2917":[129.728,30.42,81.497],"1.3333":[122.271,25.911,85.599],"1.375":[103.433,16.663,98.409],"1.4167":[97.715,16.152,103.498],"1.4583":[99.208,16.632,104.567],"1.5":[102.436,17.666,104.448],"1.5417":[105.534,17.82,104.711],"1.5833":[111.62,13.376,105.87],"1.625":[114.989,12.133,104.373],"1.6667":[118.121,14.507,101.814],"1.7083":[120.609,14.998,107.712],"1.75":[122.639,15.328,114.25],"1.7917":[124.481,16.95,118.648],"1.8333":[125.484,18.201,120.763],"1.875":[126.499,19.73,122.733],"1.9167":[126.756,20.368,123.185],"1.9583":[126.735,20.879,123.031],"2.0":[126.427,21.514,122.226],"2.0417":[126.224,21.941,121.721],"2.0833":[126.155,22.166,121.513]},"position":{"0.0":[15.355,-35.229,-3.897],"0.0417":[13.582,-32.457,-8.672],"0.0833":[13.658,-30.494,-10.261],"0.125":[13.929,-29.74,-9.285],"0.1667":[12.578,-32.311,-6.58],"0.2083":[11.038,-34.58,-4.52],"0.25":[11.687,-33.512,-5.256],"0.2917":[12.673,-32.11,-6.998],"0.3333":[13.451,-30.674,-9.309],"0.375":[13.516,-30.52,-9.616],"0.4167":[13.562,-30.377,-9.877],"0.4583":[13.578,-30.303,-10.023],"0.5":[13.587,-30.25,-10.133],"0.5417":[13.578,-30.204,-10.244],"0.5833":[13.567,-30.198,-10.283],"0.625":[13.535,-30.213,-10.293],"0.6667":[13.51,-30.244,-10.272],"0.7083":[13.481,-30.282,-10.233],"0.75":[13.435,-30.358,-10.142],"0.7917":[13.404,-30.415,-10.067],"0.8333":[13.356,-30.512,-9.94],"0.875":[13.328,-30.576,-9.847],"0.9167":[13.3,-30.638,-9.752],"0.9583":[13.268,-30.727,-9.612],"1.0":[13.253,-30.782,-9.524],"1.0417":[13.239,-30.841,-9.406],"1.0833":[13.242,-30.87,-9.344],"1.125":[13.253,-30.881,-9.294],"1.1667":[13.284,-30.872,-9.255],"1.2083":[13.32,-30.841,-9.254],"1.25":[13.396,-30.754,-9.299],"1.2917":[13.46,-30.664,-9.362],"1.3333":[14.013,-29.945,-9.933],"1.375":[15.157,-27.599,-11.732],"1.4167":[15.272,-26.329,-12.506],"1.4583":[14.817,-25.53,-12.88],"1.5":[14.362,-25.134,-12.957],"1.5417":[13.967,-24.762,-13],"1.5833":[13.521,-24.494,-12.666],"1.625":[13.46,-24.429,-12.501],"1.6667":[13.699,-24.376,-12.569],"1.7083":[13.813,-24.568,-12.878],"1.75":[13.862,-24.771,-13.163],"1.7917":[13.834,-24.853,-13.243],"1.8333":[13.792,-24.868,-13.24],"1.875":[13.729,-24.89,-13.244],"1.9167":[13.697,-24.916,-13.276],"1.9583":[13.667,-24.945,-13.311],"2.0":[13.622,-24.984,-13.361],"2.0417":[13.596,-25.012,-13.397],"2.0833":[13.581,-25.023,-13.414]}},"righthand":{"rotation":{"0.0":[67.219,-3.711,-164.138],"0.0417":[83.289,10.85,-160.575],"0.0833":[106.313,15.604,-153.349],"0.125":[152.538,11.297,-187.777],"0.1667":[119.53,30.005,-219.611],"0.2083":[52.506,32.13,-210.907],"0.25":[22.281,42.726,-220.919],"0.2917":[0.144,49.265,-226.598],"0.3333":[-28.093,35.103,-238.177],"0.375":[-27.892,23.069,-238.759],"0.4167":[-12.631,3.177,-245.162],"0.4583":[2.241,-8.037,-252.076],"0.5":[18.354,-14.94,-257.522],"0.5417":[35.225,-19.169,-250.997],"0.5833":[40.753,-19.294,-231.429],"0.625":[43.557,-17.609,-188.094],"0.6667":[46.533,-18.168,-162.121],"0.7083":[62.167,-18.134,-169.529],"0.75":[101.837,-2.571,-208.125],"0.7917":[118.326,13.67,-225.816],"0.8333":[130.275,29.881,-223.256],"0.875":[124.165,20.053,-200.392],"0.9167":[111.049,11.103,-187.43],"0.9583":[93.237,-3.477,-216.446],"1.0":[95.614,-10.25,-236.238],"1.0417":[117.936,12.364,-240.107],"1.0833":[133.098,24.424,-226.336],"1.125":[133.842,24.005,-205.063],"1.1667":[120.486,17.539,-174.919],"1.2083":[103.578,1.417,-174.487],"1.25":[95.272,-52.306,-205.021],"1.2917":[96.528,-56.345,-200.946],"1.3333":[101.109,-33.25,-175.351],"1.375":[122.166,-2.887,-142.073],"1.4167":[124.379,0.62,-136.472],"1.4583":[115.3,1.303,-141.622],"1.5":[108.761,5.937,-145.162],"1.5417":[102.701,9.829,-144.341],"1.5833":[101.386,11.986,-117.36],"1.625":[102.548,10.572,-102.514],"1.6667":[104.658,3.074,-103.054],"1.7083":[106.835,-3.038,-108.384],"1.75":[108.074,-8.061,-110.136],"1.7917":[108.982,-15.669,-110.301],"1.8333":[109.23,-20.475,-109.912],"1.875":[109.338,-26.186,-109.24],"1.9167":[109.451,-28.307,-109.141],"1.9583":[109.438,-28.711,-109.109],"2.0":[109.257,-27.522,-109.075],"2.0417":[109.124,-26.65,-109.053],"2.0833":[109.074,-26.339,-109.043]},"position":{"0.0":[-24.12,-19.775,2.778],"0.0417":[-24.094,-18.068,0.055],"0.0833":[-23.545,-16.227,-2.435],"0.125":[-19.472,-14.294,-11.454],"0.1667":[-13.129,-19.172,-18.681],"0.2083":[-5.134,-25.566,-15.165],"0.25":[-2.005,-31.536,-15.5],"0.2917":[-1.753,-33.64,-14.919],"0.3333":[-5.511,-32.112,-13.941],"0.375":[-7.781,-31.985,-12.955],"0.4167":[-10.461,-32.93,-11.371],"0.4583":[-11.876,-33.549,-10.036],"0.5":[-13.037,-33.722,-8.459],"0.5417":[-14.925,-32.442,-5.459],"0.5833":[-16.273,-30.402,-2.738],"0.625":[-17.766,-27.039,1.897],"0.6667":[-18.562,-25.608,4.651],"0.7083":[-17.533,-25.519,2.615],"0.75":[-14.328,-25.413,-3.941],"0.7917":[-12.142,-25.083,-8.633],"0.8333":[-10.055,-24.671,-13.872],"0.875":[-11.706,-24.956,-14.158],"0.9167":[-12.802,-25.02,-13.715],"0.9583":[-11.971,-25.148,-12.945],"1.0":[-11.295,-25.095,-12.37],"1.0417":[-10.564,-24.849,-12.179],"1.0833":[-10.7,-24.653,-12.685],"1.125":[-11.889,-24.852,-13.339],"1.1667":[-13.572,-24.828,-13.927],"1.2083":[-13.079,-24.828,-13.664],"1.25":[-10.619,-24.577,-12.648],"1.2917":[-10.321,-24.46,-12.657],"1.3333":[-11.162,-24.466,-12.715],"1.375":[-13.116,-23.497,-13.721],"1.4167":[-13.338,-23.314,-13.659],"1.4583":[-12.928,-23.794,-12.696],"1.5":[-12.585,-24.032,-12.088],"1.5417":[-12.36,-24.093,-11.457],"1.5833":[-12.535,-23.354,-10.446],"1.625":[-12.716,-23.006,-9.916],"1.6667":[-13.278,-23.072,-9.619],"1.7083":[-13.644,-23.253,-9.616],"1.75":[-13.784,-23.385,-9.632],"1.7917":[-13.804,-23.575,-9.717],"1.8333":[-13.766,-23.698,-9.807],"1.875":[-13.702,-23.84,-9.946],"1.9167":[-13.689,-23.885,-10.001],"1.9583":[-13.683,-23.888,-10.014],"2.0":[-13.671,-23.843,-9.989],"2.0417":[-13.664,-23.811,-9.97],"2.0833":[-13.658,-23.798,-9.965]}},"weapon":{"rotation":{"0.0":[-28.607,16.57,-37.417],"0.0417":[-35.975,-10.499,-8.233],"0.0833":[-56.608,-16.289,11.187],"0.125":[-101.87,-15.657,-17.533],"0.1667":[-65.416,-28.469,-51.665],"0.2083":[-2.703,-21.967,-34.365],"0.25":[24.285,-32.326,-38.205],"0.2917":[42.502,-40.228,-38.705],"0.3333":[70.458,-29.775,-47.272],"0.375":[72.641,-17.9,-48.843],"0.4167":[60.913,4.023,-57.332],"0.4583":[47.277,16.942,-66.119],"0.5":[31.017,25.115,-74.217],"0.5417":[11.627,31.396,-75.085],"0.5833":[-3.221,34.115,-77.4],"0.625":[-19.963,26.518,-74.658],"0.6667":[-24.162,20.348,-59.15],"0.7083":[-164.947,-8.061,-52.158],"0.75":[-160.683,-49.484,-79.81],"0.7917":[-171.085,-66.81,-78.745],"0.8333":[-164.383,-58.058,-62.074],"0.875":[-64.581,-69.818,-84.753],"0.9167":[6.283,-53.067,-104.303],"0.9583":[-48.57,-19.01,-65.435],"1.0":[-45.063,37.994,-33.863],"1.0417":[12.825,74.724,51.526],"1.0833":[50.565,58.265,111.162],"1.125":[45.778,72.297,131.082],"1.1667":[-58.639,70.848,113.697],"1.2083":[-87.493,46.081,130.501],"1.25":[-72.011,-53.571,171.941],"1.2917":[-138.978,-62.503,234.069],"1.3333":[-115.914,-53.958,235.011],"1.375":[-78.486,-46.793,241.829],"1.4167":[-68.894,-59.974,264.168],"1.4583":[-61.483,-56.705,313.716],"1.5":[-31.526,-46.743,326.548],"1.5417":[-9.361,-38.085,330.973],"1.5833":[-24.196,-34.502,375.4],"1.625":[-46.017,-25.304,411.89],"1.6667":[-70.508,-2.962,432.942],"1.7083":[-78.821,9.669,434.244],"1.75":[-80.54,15.737,433.378],"1.7917":[-80.978,23.383,433.252],"1.8333":[-80.905,28.195,433.755],"1.875":[-80.584,33.905,434.632],"1.9167":[-80.533,36.022,434.815],"1.9583":[-80.483,36.43,434.869],"2.0":[-80.387,35.232,434.871],"2.0417":[-80.318,34.351,434.87],"2.0833":[-80.288,34.032,434.875]},"position":{"0.0":[-16.666,-10.736,-1.193],"0.0417":[-16.316,-9.049,-3.615],"0.0833":[-15.535,-6.677,-5.993],"0.125":[-12.219,-2.22,-14.156],"0.1667":[-6.238,-6.745,-22.35],"0.2083":[3.369,-15.805,-17.812],"0.25":[6.525,-22.208,-17.056],"0.2917":[6.45,-24.659,-15.747],"0.3333":[2.388,-22.83,-14.14],"0.375":[0.306,-22.393,-13.293],"0.4167":[-1.931,-22.733,-12.628],"0.4583":[-3.325,-23.055,-12.131],"0.5":[-4.685,-23.158,-11.315],"0.5417":[-6.9,-22.262,-8.984],"0.5833":[-8.497,-20.696,-6.462],"0.625":[-10.597,-18.211,-1.796],"0.6667":[-11.972,-17.08,0.948],"0.7083":[-11.528,-15.815,-7.431],"0.75":[-7.788,-10.389,-11.918],"0.7917":[-6.966,-8.446,-14.593],"0.8333":[-3.813,-8.121,-19.009],"0.875":[-2.288,-11.852,-18.081],"0.9167":[-4.828,-14.136,-17.375],"0.9583":[-4.675,-14.727,-17.418],"1.0":[-4.647,-14.98,-16.937],"1.0417":[-4.903,-14.121,-16.122],"1.0833":[-5.547,-13.411,-14.928],"1.125":[-6.472,-13.361,-16.081],"1.1667":[-8.338,-11.083,-18.24],"1.2083":[-8.135,-9.567,-19.753],"1.25":[-7.775,-10.255,-18.062],"1.2917":[-7.5,-10.167,-19.534],"1.3333":[-4.738,-9.13,-19.797],"1.375":[-1.309,-9.589,-18.584],"1.4167":[-1.075,-11.555,-18.24],"1.4583":[-2.941,-14.464,-17.559],"1.5":[-4.475,-14.777,-16.322],"1.5417":[-4.85,-14.452,-15.387],"1.5833":[-5.197,-14.449,-14.393],"1.625":[-5.572,-14.364,-13.881],"1.6667":[-6.091,-14.093,-13.75],"1.7083":[-6.385,-13.88,-13.834],"1.75":[-6.535,-13.755,-13.9],"1.7917":[-6.631,-13.636,-14.04],"1.8333":[-6.653,-13.571,-14.153],"1.875":[-6.663,-13.493,-14.297],"1.9167":[-6.675,-13.455,-14.347],"1.9583":[-6.675,-13.439,-14.359],"2.0":[-6.653,-13.446,-14.337],"2.0417":[-6.638,-13.452,-14.322],"2.0833":[-6.631,-13.452,-14.315]}},"up":{"rotation":{"0.0":[0,0,0],"0.6667":[0,0,0],"0.7083":[133.28,0,0],"0.75":[129.05,0,0],"0.7917":[123.364,0,0],"0.8333":[99.737,0,0],"0.875":[42.293,0,0],"0.9167":[1.236,0,0],"0.9583":[1.236,0,0],"1.0":[1.768,0,0],"1.0417":[12.136,0,0],"1.0833":[21.257,0,0],"1.125":[22.88,0,0],"1.1667":[73.251,0,0],"1.2083":[112.631,0,0],"1.25":[105.224,0,0],"1.2917":[117.027,0,0],"1.3333":[117.855,0,0],"1.375":[117.441,0,0],"1.4167":[98.726,0,0],"1.4583":[45.545,0,0],"1.5":[16.081,0,0],"1.5417":[0,0,0],"2.0833":[0,0,0]}},"down":{"rotation":{"0.0":[0,0,0],"0.6667":[0,0,0],"0.7083":[-173.941,0,0],"0.75":[-159.452,0,0],"0.7917":[-144.445,0,0],"0.8333":[-119.748,0,0],"0.875":[-97.905,0,0],"0.9167":[-75.508,0,0],"0.9583":[-37.856,0,0],"1.0":[-25.861,0,0],"1.0417":[-28.823,0,0],"1.0833":[-41.6,0,0],"1.125":[-102.004,0,0],"1.1667":[-136.284,0,0],"1.2083":[-147.93,0,0],"1.25":[-172.859,0,0],"1.2917":[-168.932,0,0],"1.3333":[-166.072,0,0],"1.375":[-150.025,0,0],"1.4167":[-119.241,0,0],"1.4583":[-52.804,0,0],"1.5":[-15.589,0,0],"1.5417":[-0.065,0,0],"1.7917":[0,0,0],"2.0833":[0,0,0]}},"lefthand":{"position":[0,1.6,0],"scale":[1,1.6,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.25":[15,0,0],"0.3333":[43,0,0],"1.2083":[14.8864,8.4368,-28.8958],"1.625":[6.7333,2.0683,0.5373],"1.9167":[0,0,0]},"position":[0,2.7973,0],"scale":[1,1.4,1]},"camera":{"rotation":{"0.0":[0.159,-0.048,0.048],"0.0417":[0.494,-0.147,0.13],"0.0833":[0.593,-0.192,0.165],"0.125":[-0.224,0.004,-0.153],"0.1667":[-0.565,0.121,-0.768],"0.2083":[-0.476,0.215,-0.237],"0.25":[-0.084,0.322,1.43],"0.2917":[-0.576,0.434,-1.585],"0.3333":[-0.245,0.539,-0.024],"0.375":[-0.017,0.667,-0.543],"0.4167":[-0.012,0.645,-0.602],"0.4583":[-0.059,0.449,-0.591],"0.5":[-0.12,0.181,-0.555],"0.5417":[-0.171,-0.03,-0.508],"0.5833":[-0.228,-0.241,-0.389],"0.625":[-0.255,-0.286,-0.318],"0.6667":[-0.297,-0.294,-0.247],"0.7083":[-0.36,-0.293,-0.173],"0.75":[-0.411,-0.279,-0.114],"0.7917":[-0.436,-0.252,-0.056],"0.8333":[-0.402,-0.203,0.012],"0.875":[-0.216,-0.043,0.168],"0.9167":[-0.097,0.033,0.236],"0.9583":[-0.003,0.102,0.294],"1.0":[0.056,0.137,0.324],"1.0417":[0.039,0.13,0.304],"1.0833":[0.005,0.109,0.255],"1.125":[-0.054,0.082,0.197],"1.1667":[-0.114,0.054,0.119],"1.2083":[-0.19,0.019,0.041],"1.25":[-0.258,-0.016,-0.037],"1.2917":[-0.385,-0.079,-0.174],"1.3333":[-0.436,-0.107,-0.232],"1.375":[-0.461,-0.121,-0.261],"1.4167":[-0.476,-0.127,-0.274],"1.4583":[-0.442,-0.122,-0.174],"1.5":[-0.233,-0.094,0.227],"1.5417":[-0.101,-0.075,0.163],"1.5833":[0.016,-0.047,-0.332],"1.625":[0.103,-0.019,-0.654],"1.6667":[0.132,-0.005,-0.382],"1.7083":[0.113,0.02,-0.06],"1.75":[0.089,0.034,0.034],"1.7917":[0.064,0.042,0.091],"1.8333":[0.045,0.041,0.091],"1.875":[0.025,0.026,0.055],"1.9167":[0.006,0.008,0.019],"1.9583":[0.001,0,-0.002],"2.0833":[0.001,0,-0.002]}}},"sound_effects":{"0.0":{"effect":"melee.cobra_vanguard.cobra_vanguard_melee_1"}}},"melee_2":{"loop":true,"animation_length":2.0833,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-33.197,161.941,-58.651],"0.0417":[-41.056,155.728,-69.853],"0.0833":[-81.943,151.393,-91.017],"0.125":[-99.67,152.408,-57.585],"0.1667":[-100.139,152.277,-56.666],"0.2083":[-100.787,152.056,-55.454],"0.25":[-101.176,151.892,-54.767],"0.2917":[-101.532,151.722,-54.167],"0.3333":[-102.003,151.458,-53.428],"0.375":[-102.281,151.281,-53.03],"0.4167":[-102.637,151.017,-52.57],"0.4583":[-102.834,150.851,-52.35],"0.5":[-103.003,150.691,-52.203],"0.5417":[-103.192,150.472,-52.099],"0.5833":[-103.282,150.341,-52.095],"0.625":[-103.362,150.179,-52.193],"0.6667":[-103.377,150.092,-52.32],"0.7083":[-103.36,150.026,-52.493],"0.75":[-103.28,149.969,-52.835],"0.7917":[-103.191,149.964,-53.102],"0.8333":[-102.993,149.999,-53.568],"0.875":[-102.827,150.055,-53.915],"0.9167":[-102.626,150.147,-54.284],"0.9583":[-102.263,150.345,-54.874],"1.0":[-101.979,150.515,-55.285],"1.0417":[-101.497,150.841,-55.927],"1.0833":[-101.136,151.104,-56.366],"1.125":[-100.738,151.401,-56.808],"1.1667":[-100.073,151.929,-57.467],"1.2083":[-99.554,152.375,-57.951],"1.25":[-97.662,154.125,-59.791],"1.2917":[-95.006,156.447,-62.422],"1.3333":[-91.491,159.177,-65.759],"1.375":[-85.363,163.082,-71.242],"1.4167":[-81.388,165.135,-74.518],"1.4583":[-76.819,166.592,-76.61],"1.5":[-74.752,166.516,-75.376],"1.5417":[-72.683,166.438,-73.69],"1.5833":[-68.508,167.979,-72.808],"1.625":[-65.463,169.303,-73.273],"1.6667":[-62.54,167.725,-76.662],"1.7083":[-61.021,165.933,-76.763],"1.75":[-59.115,165.098,-71.707],"1.7917":[-56.498,163.935,-63.562],"1.8333":[-55.018,162.361,-60.294],"1.875":[-53.596,160.28,-57.442],"1.9167":[-53.583,159.353,-57.265],"1.9583":[-54.086,158.668,-58.101],"2.0":[-54.487,157.985,-58.927],"2.0417":[-54.194,157.884,-58.737],"2.0833":[-53.849,157.833,-58.486]},"position":{"0.0":[12.292,-25.247,-13.027],"0.0417":[14.061,-25.735,-13.293],"0.0833":[18.372,-27.55,-13.542],"0.125":[20.733,-34.441,-5.507],"0.1667":[20.812,-34.617,-5.29],"0.2083":[20.926,-34.864,-4.996],"0.25":[20.999,-35.015,-4.824],"0.2917":[21.07,-35.155,-4.669],"0.3333":[21.174,-35.347,-4.468],"0.375":[21.238,-35.462,-4.352],"0.4167":[21.327,-35.616,-4.211],"0.4583":[21.38,-35.702,-4.134],"0.5":[21.43,-35.781,-4.072],"0.5417":[21.492,-35.87,-4.008],"0.5833":[21.53,-35.917,-3.984],"0.625":[21.57,-35.967,-3.97],"0.6667":[21.589,-35.985,-3.979],"0.7083":[21.599,-35.986,-3.998],"0.75":[21.603,-35.965,-4.054],"0.7917":[21.595,-35.94,-4.105],"0.8333":[21.567,-35.87,-4.203],"0.875":[21.537,-35.806,-4.283],"0.9167":[21.5,-35.727,-4.375],"0.9583":[21.421,-35.58,-4.534],"1.0":[21.358,-35.464,-4.65],"1.0417":[21.241,-35.259,-4.847],"1.0833":[21.149,-35.104,-4.987],"1.125":[21.049,-34.929,-5.14],"1.1667":[20.873,-34.639,-5.384],"1.2083":[20.727,-34.404,-5.575],"1.25":[20.204,-33.496,-6.315],"1.2917":[19.486,-32.21,-7.355],"1.3333":[18.563,-30.548,-8.677],"1.375":[17.007,-27.858,-10.784],"1.4167":[16.019,-26.225,-12.075],"1.4583":[14.887,-24.797,-13.225],"1.5":[14.361,-24.726,-13.304],"1.5417":[13.91,-24.858,-13.163],"1.5833":[13.466,-24.756,-12.904],"1.625":[13.379,-24.614,-12.681],"1.6667":[13.504,-24.447,-12.557],"1.7083":[13.674,-24.437,-12.642],"1.75":[13.808,-24.59,-12.905],"1.7917":[13.856,-24.813,-13.209],"1.8333":[13.81,-24.859,-13.232],"1.875":[13.732,-24.897,-13.254],"1.9167":[13.701,-24.923,-13.319],"1.9583":[13.676,-24.95,-13.39],"2.0":[13.637,-24.988,-13.451],"2.0417":[13.608,-25.007,-13.436],"2.0833":[13.579,-25.026,-13.412]}},"righthand":{"rotation":{"0.0":[127.759,17.913,-92.806],"0.0417":[169.84,41.363,-70.731],"0.0833":[201.895,33.531,-69.226],"0.125":[178.578,-1.171,-106.204],"0.1667":[148.838,-25.335,-108.188],"0.2083":[91.811,-27.506,-84.459],"0.25":[63.226,-20.503,-74.618],"0.2917":[48.059,-9.576,-82.872],"0.3333":[40.044,-9.331,-110.253],"0.375":[28.915,-23.532,-113.052],"0.4167":[22.382,-31.43,-111.498],"0.4583":[19.55,-34.269,-109.909],"0.5":[17.627,-35.953,-108.422],"0.5417":[18.66,-34.829,-108.402],"0.5833":[22.664,-30.8,-110.505],"0.625":[50.898,14.095,-117.654],"0.6667":[84.871,48.24,-111.022],"0.7083":[107.036,56.282,-111.822],"0.75":[127.118,24.937,-111.188],"0.7917":[126.438,-0.139,-115.721],"0.8333":[107.463,-21.632,-117.372],"0.875":[83.065,-15.264,-112.52],"0.9167":[66.153,-0.198,-111.899],"0.9583":[78.678,13.045,-104.706],"1.0":[99.19,15.82,-95.918],"1.0417":[118.694,14.176,-101.815],"1.0833":[113.393,10.366,-134.223],"1.125":[109.166,5.766,-160.866],"1.1667":[108.381,2.168,-186.221],"1.2083":[108.796,0.775,-200.422],"1.25":[109.563,-0.633,-218.697],"1.2917":[109.903,-1.551,-228.693],"1.3333":[109.589,-2.996,-235.768],"1.375":[105.443,-6.618,-231.306],"1.4167":[104.62,-7.198,-218.516],"1.4583":[113.546,-5.947,-185.773],"1.5":[113.971,-2.998,-168.172],"1.5417":[111.701,-0.531,-156.346],"1.5833":[112.091,-17.967,-141.662],"1.625":[111.483,-36.508,-133.098],"1.6667":[112.318,-38.092,-126.775],"1.7083":[110.202,-31.031,-122.572],"1.75":[105.563,-24.344,-116.836],"1.7917":[103.351,-17.115,-111.517],"1.8333":[106.416,-16.532,-110.51],"1.875":[108.388,-19.474,-108.551],"1.9167":[108.845,-22.517,-107.103],"1.9583":[109.084,-25.432,-105.935],"2.0":[109.208,-26.996,-106.314],"2.0417":[109.145,-26.662,-107.683],"2.0833":[109.073,-26.336,-109.042]},"position":{"0.0":[-10.341,-22.534,-8.627],"0.0417":[-4.76,-22.467,-7.156],"0.0833":[1.258,-22.82,-5.094],"0.125":[-0.748,-22.061,-10.593],"0.1667":[-3.533,-21.68,-14.265],"0.2083":[-11.212,-20.7,-15.716],"0.25":[-15.983,-21.149,-12.838],"0.2917":[-20.42,-22.49,-7.329],"0.3333":[-22.981,-24.342,1.569],"0.375":[-21.566,-24.208,3.145],"0.4167":[-21.058,-23.927,3.751],"0.4583":[-21.266,-23.726,4.132],"0.5":[-21.526,-23.561,4.389],"0.5417":[-21.678,-23.565,4.286],"0.5833":[-21.448,-23.829,3.748],"0.625":[-18.622,-27.016,-2.87],"0.6667":[-15.866,-27.683,-9.254],"0.7083":[-14.245,-24.813,-12.089],"0.75":[-13.479,-23.744,-12.686],"0.7917":[-12.964,-23.986,-12.346],"0.8333":[-11.69,-23.879,-11.133],"0.875":[-10.809,-22.797,-10.433],"0.9167":[-10.45,-21.66,-10.307],"0.9583":[-11.252,-21.26,-10.676],"1.0":[-12.24,-21.333,-11.201],"1.0417":[-13.331,-21.813,-11.902],"1.0833":[-13.093,-22.792,-11.661],"1.125":[-12.599,-23.341,-11.362],"1.1667":[-12.162,-23.673,-11.21],"1.2083":[-11.935,-23.756,-11.161],"1.25":[-11.656,-23.718,-11.104],"1.2917":[-11.502,-23.604,-11.058],"1.3333":[-11.376,-23.412,-10.975],"1.375":[-11.384,-22.961,-10.724],"1.4167":[-11.547,-22.877,-10.737],"1.4583":[-12.251,-23.411,-11.328],"1.5":[-12.657,-23.481,-11.649],"1.5417":[-12.742,-23.517,-11.721],"1.5833":[-12.052,-24.792,-10.985],"1.625":[-11.508,-26.118,-10.369],"1.6667":[-11.896,-26.737,-9.906],"1.7083":[-12.328,-26.24,-9.742],"1.75":[-12.593,-25.385,-9.678],"1.7917":[-13.012,-24.338,-9.718],"1.8333":[-13.365,-24.051,-9.827],"1.875":[-13.571,-23.817,-9.905],"1.9167":[-13.617,-23.72,-9.935],"1.9583":[-13.646,-23.651,-9.964],"2.0":[-13.669,-23.659,-9.98],"2.0417":[-13.664,-23.729,-9.972],"2.0833":[-13.66,-23.798,-9.964]}},"weapon":{"rotation":{"0.0":[-82.071,-15.834,83.554],"0.0417":[-120.568,-46.929,113.242],"0.0833":[-153.801,-36.891,117.558],"0.125":[-126.522,-3.124,78.512],"0.1667":[-97.036,19.856,72.224],"0.2083":[-42.254,23.677,89.908],"0.25":[-13.542,19.527,98.649],"0.2917":[2.814,10.54,90.535],"0.3333":[10.742,10.88,63.497],"0.375":[20.332,26.195,60.509],"0.4167":[25.999,34.712,61.938],"0.4583":[28.524,37.802,63.482],"0.5":[30.278,39.658,64.96],"0.5417":[29.354,38.441,64.98],"0.5833":[25.735,34.092,62.892],"0.625":[-88.777,-5.292,103.052],"0.6667":[-130.379,33.279,145.737],"0.7083":[-104.067,69.507,185.429],"0.75":[-2.866,83.869,221.275],"0.7917":[-35.682,85.945,151.63],"0.8333":[-69.565,69.086,93.853],"0.875":[-61.028,35.226,74.412],"0.9167":[-39.534,2.29,51.449],"0.9583":[-18.957,-37.259,17.144],"1.0":[10.482,-59.105,-15.042],"1.0417":[61.417,-61.724,-81.431],"1.0833":[34.136,-61.699,-103.093],"1.125":[5.473,-63.645,-116.889],"1.1667":[-22.632,-66.101,-134.819],"1.2083":[-40.171,-67.58,-146.547],"1.25":[-75.29,-69.627,-161.758],"1.2917":[-100.157,-70.896,-168.969],"1.3333":[-115.855,-71.546,-171.288],"1.375":[-133.472,-68.849,-153.793],"1.4167":[-144.359,-69.171,-129.385],"1.4583":[-190.814,-53.174,-29.004],"1.5":[-130.897,-50.187,-20.53],"1.5417":[-56.707,-50.039,-29.444],"1.5833":[-67.342,-28.355,15.606],"1.625":[-77.027,8.255,37.431],"1.6667":[-78.116,26.461,45.969],"1.7083":[-78.544,28.256,51.614],"1.75":[-74.893,27.501,60.541],"1.7917":[-73.713,23.882,71.056],"1.8333":[-78.038,24.035,73.229],"1.875":[-80.095,27.142,75.206],"1.9167":[-80.355,30.211,76.689],"1.9583":[-80.381,33.132,77.944],"2.0":[-80.379,34.696,77.618],"2.0417":[-80.338,34.365,76.243],"2.0833":[-80.286,34.035,74.878]},"position":{"0.0":[-1.981,-14.133,-12.056],"0.0417":[3.931,-14.296,-8.203],"0.0833":[9.685,-13.777,-4.837],"0.125":[8.144,-12.299,-11.859],"0.1667":[5.278,-11.177,-17.29],"0.2083":[-4.394,-10.386,-20.731],"0.25":[-10.685,-10.958,-17.894],"0.2917":[-15.929,-12.986,-12.021],"0.3333":[-18.469,-15.755,-2.984],"0.375":[-17.666,-15.39,-1.09],"0.4167":[-17.472,-14.955,-0.243],"0.4583":[-17.794,-14.686,0.248],"0.5":[-18.132,-14.468,0.582],"0.5417":[-18.251,-14.474,0.438],"0.5833":[-17.851,-14.833,-0.246],"0.625":[-13.957,-18.483,-9.149],"0.6667":[-6.972,-18.53,-14.862],"0.7083":[-3,-14.171,-15.35],"0.75":[-4.944,-11.677,-15.956],"0.7917":[-6.003,-12.171,-16.262],"0.8333":[-6.181,-12.496,-16.1],"0.875":[-6.138,-13.255,-15.637],"0.9167":[-5.738,-13.649,-14.693],"0.9583":[-5.788,-13.655,-14.612],"1.0":[-6.116,-13.686,-15.065],"1.0417":[-6.053,-14.036,-15.556],"1.0833":[-4.391,-14.124,-15.337],"1.125":[-3.097,-13.208,-15.309],"1.1667":[-2.85,-11.077,-15.534],"1.2083":[-3.616,-9.596,-15.762],"1.25":[-6.153,-7.914,-16.303],"1.2917":[-8.166,-7.792,-16.665],"1.3333":[-9.332,-8.127,-16.856],"1.375":[-9.035,-7.861,-17.228],"1.4167":[-7.891,-7.283,-17.447],"1.4583":[-4.697,-8.111,-18.462],"1.5":[-3.463,-11.268,-18.062],"1.5417":[-4.166,-13.164,-16.487],"1.5833":[-4.935,-14.377,-15.284],"1.625":[-4.985,-15.146,-14.634],"1.6667":[-5.191,-15.755,-14.218],"1.7083":[-5.41,-15.618,-14.184],"1.75":[-5.647,-15.164,-14.209],"1.7917":[-6.047,-14.439,-14.206],"1.8333":[-6.297,-14.105,-14.212],"1.875":[-6.472,-13.764,-14.262],"1.9167":[-6.535,-13.564,-14.293],"1.9583":[-6.585,-13.396,-14.318],"2.0":[-6.625,-13.333,-14.331],"2.0417":[-6.628,-13.393,-14.325],"2.0833":[-6.631,-13.452,-14.318]}},"up":{"rotation":{"0.0":[0,0,0],"0.625":[60.26,0,0],"0.6667":[101.161,0,0],"0.7083":[105.789,0,0],"0.75":[58.815,0,0],"0.7917":[31.764,0,0],"0.8333":[21.085,0,0],"0.875":[15.635,0,0],"0.9167":[10.368,0,0],"0.9583":[3.725,0,0],"1.0":[0.828,0,0],"1.0417":[7.874,0,0],"1.0833":[27.185,0,0],"1.125":[38.418,0,0],"1.1667":[54.671,0,0],"1.2083":[69.548,0,0],"1.25":[102.688,0,0],"1.2917":[125.61,0,0],"1.3333":[132.635,0,0],"1.375":[134.548,0,0],"1.4167":[134.548,0,0],"1.4583":[110.905,0,0],"1.5":[43.658,0,0],"1.5417":[0,0,0],"2.0833":[0,0,0]}},"down":{"rotation":{"0.0":[0,0,0],"0.625":[-125.097,0,0],"0.6667":[-174.184,0,0],"0.7083":[-175.417,0,0],"0.75":[-150.252,0,0],"0.7917":[-116.279,0,0],"0.8333":[-58.433,0,0],"0.875":[-36.467,0,0],"0.9167":[-24.062,0,0],"0.9583":[-18.013,0,0],"1.0":[-38.934,0,0],"1.0417":[-79.101,0,0],"1.0833":[-53.052,0,0],"1.125":[-48.667,0,0],"1.1667":[-70.24,0,0],"1.2083":[-93.154,0,0],"1.25":[-131.183,0,0],"1.2917":[-153.176,0,0],"1.3333":[-167.914,0,0],"1.375":[-174.469,0,0],"1.4167":[-171.496,0,0],"1.4583":[0,0,0],"1.5":[-3.49,0,0],"1.5417":[-6.695,0,0],"1.5833":[-4.476,0,0],"1.625":[-1.271,0,0],"1.6667":[-0.043,0,0],"1.7917":[0,0,0],"2.0833":[0,0,0]}},"lefthand":{"position":[0,1.6,0],"scale":[1,1.6,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.0833":[0,0,20],"0.9167":[0,0,20],"1.375":[-1.9515,7.2431,-5.1235],"1.75":[0,0,20]},"position":[0,2.7973,0],"scale":[1,1.4,1]},"camera":{"rotation":{"0.0":[-0.203,0.081,-0.232],"0.0417":[-0.52,0.204,-0.589],"0.0833":[-0.566,0.213,-0.448],"0.125":[-0.397,0.042,0.166],"0.1667":[-0.233,-0.124,-0.359],"0.2083":[0.107,-0.488,1.512],"0.25":[0.348,-0.631,-1.93],"0.2917":[0.24,-0.498,-0.534],"0.3333":[0.086,-0.222,0.778],"0.375":[0.044,-0.082,0.362],"0.4167":[-0.02,0.035,-0.138],"0.4583":[-0.053,0.022,-0.072],"0.5":[-0.075,-0.007,0.073],"0.5417":[-0.076,-0.075,0.295],"0.5833":[-0.044,-0.141,0.445],"0.625":[0.017,-0.236,0.651],"0.6667":[0.036,-0.262,0.707],"0.7083":[-0.123,-0.177,0.662],"0.75":[-0.122,-0.178,0.465],"0.7917":[-0.122,-0.178,0.325],"0.8333":[-0.122,-0.177,0.122],"0.875":[-0.126,-0.16,0.021],"0.9167":[-0.138,-0.081,-0.002],"0.9583":[0.002,-0.003,0.039],"1.0":[0.034,-0.014,0.169],"1.0417":[0.031,0.014,0.155],"1.0833":[0.02,0.088,0.032],"1.125":[0.005,0.166,-0.105],"1.1667":[-0.007,0.223,-0.201],"1.2083":[0.002,0.216,-0.163],"1.25":[0.042,0.158,0.049],"1.2917":[0.075,0.109,0.204],"1.3333":[0.1,0.063,0.339],"1.375":[0.109,0.017,0.377],"1.4167":[0.109,-0.003,0.348],"1.4583":[0.105,-0.032,0.252],"1.5":[0.1,-0.044,0.173],"1.5417":[0.09,-0.053,0.086],"1.5833":[0.066,-0.058,-0.03],"1.625":[0.001,-0.013,-0.093],"1.6667":[-0.109,0.075,-0.128],"1.7083":[-0.064,0.071,-0.03],"1.75":[0.018,0.062,0.15],"1.7917":[0.06,0.033,0.207],"1.8333":[0.047,0.005,0.088],"1.875":[0.026,-0.014,0.061],"1.9167":[0.012,-0.019,0.079],"1.9583":[0.003,-0.019,0.088],"2.0":[0.001,-0.019,0.043],"2.0417":[0.001,-0.017,0.006],"2.0833":[0.001,-0.017,-0.003]}}},"sound_effects":{"0.0":{"effect":"melee.cobra_vanguard.cobra_vanguard_melee_2"}}},"melee_3":{"loop":true,"animation_length":2.5917,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[118.565,11.507,145.694],"0.0417":[128.191,18.497,132.257],"0.0833":[119.888,31.969,107.87],"0.125":[98.424,41.538,69.107],"0.1667":[83.084,28.32,74.137],"0.2083":[56.2,8.673,99.208],"0.25":[38.056,3.683,118.399],"0.2917":[25.972,3.966,131.673],"0.3333":[21.76,4.65,136.024],"0.375":[20.29,4.912,137.441],"0.4167":[18.287,5.341,139.404],"0.4583":[17.158,5.618,140.515],"0.5":[16.198,5.867,141.478],"0.5417":[15.035,6.192,142.664],"0.5833":[14.433,6.365,143.295],"0.625":[13.778,6.562,144.016],"0.6667":[13.487,6.652,144.353],"0.7083":[13.311,6.705,144.591],"0.75":[13.231,6.716,144.77],"0.7917":[13.294,6.691,144.775],"0.8333":[13.544,6.599,144.633],"0.875":[13.803,6.507,144.445],"0.9167":[14.132,6.397,144.191],"0.9583":[14.738,6.2,143.698],"1.0":[15.198,6.053,143.305],"1.0417":[15.976,5.82,142.626],"1.0833":[16.534,5.656,142.128],"1.125":[17.117,5.491,141.601],"1.1667":[18.013,5.256,140.763],"1.2083":[18.63,5.104,140.186],"1.25":[19.538,4.888,139.304],"1.2917":[20.133,4.761,138.716],"1.3333":[20.706,4.646,138.139],"1.375":[21.516,4.498,137.301],"1.4167":[22.007,4.417,136.772],"1.4583":[22.658,4.326,136.038],"1.5":[23.012,4.279,135.599],"1.5417":[23.307,4.257,135.21],"1.5833":[23.61,4.245,134.728],"1.625":[23.704,4.256,134.493],"1.6667":[23.674,4.312,134.269],"1.7083":[17.541,6.573,132.155],"1.75":[86.039,27.813,120.904],"1.7917":[95.56,26.72,116.577],"1.8333":[97.963,23.136,113.241],"1.875":[98.846,18.576,108.252],"1.9167":[99.519,15.558,105.504],"1.9583":[101.554,13.643,103.374],"2.0":[105.139,13.229,104.546],"2.0417":[106.933,13.538,106.368],"2.0833":[111.126,12.202,107.227],"2.125":[114.285,10.674,106.906],"2.1667":[116.647,10.935,105.263],"2.2083":[118.764,14.066,102.287],"2.25":[120.333,14.83,106.126],"2.2917":[122.638,15.333,114.249],"2.3333":[123.925,16.499,117.474],"2.375":[125.18,17.934,120.176],"2.4167":[126.485,19.722,122.716],"2.4583":[126.771,20.442,123.198],"2.5":[126.599,21.223,122.665],"2.5417":[126.333,21.677,122.001],"2.5833":[126.155,22.167,121.513]},"position":{"0.0":[16.585,-27.462,-14.966],"0.0417":[15.196,-25.573,-16.301],"0.0833":[14.314,-25.07,-14.042],"0.125":[14.291,-28.417,-10.029],"0.1667":[15.135,-31.269,-7.187],"0.2083":[16.657,-34.515,-3.37],"0.25":[18.319,-35.953,-1.852],"0.2917":[19.817,-36.901,-1.04],"0.3333":[20.401,-37.279,-0.761],"0.375":[20.606,-37.432,-0.661],"0.4167":[20.902,-37.639,-0.524],"0.4583":[21.072,-37.758,-0.446],"0.5":[21.223,-37.863,-0.381],"0.5417":[21.413,-37.993,-0.294],"0.5833":[21.512,-38.065,-0.25],"0.625":[21.629,-38.146,-0.197],"0.6667":[21.683,-38.181,-0.17],"0.7083":[21.722,-38.208,-0.152],"0.75":[21.746,-38.224,-0.138],"0.7917":[21.748,-38.222,-0.136],"0.8333":[21.721,-38.201,-0.143],"0.875":[21.688,-38.179,-0.155],"0.9167":[21.643,-38.147,-0.17],"0.9583":[21.563,-38.087,-0.203],"1.0":[21.498,-38.04,-0.229],"1.0417":[21.388,-37.961,-0.275],"1.0833":[21.307,-37.903,-0.31],"1.125":[21.222,-37.846,-0.345],"1.1667":[21.091,-37.752,-0.401],"1.2083":[21.004,-37.689,-0.443],"1.25":[20.871,-37.595,-0.503],"1.2917":[20.783,-37.535,-0.543],"1.3333":[20.695,-37.476,-0.583],"1.375":[20.577,-37.391,-0.644],"1.4167":[20.498,-37.337,-0.68],"1.4583":[20.396,-37.265,-0.734],"1.5":[20.334,-37.221,-0.766],"1.5417":[20.281,-37.184,-0.797],"1.5833":[20.213,-37.142,-0.836],"1.625":[20.18,-37.122,-0.856],"1.6667":[20.15,-37.106,-0.878],"1.7083":[19.873,-37.608,-0.726],"1.75":[20.435,-33.875,-6.182],"1.7917":[19.428,-31.8,-8.054],"1.8333":[18.475,-30.315,-9.276],"1.875":[17.047,-27.806,-11.013],"1.9167":[16.104,-26.32,-12.048],"1.9583":[15.276,-25.104,-12.95],"2.0":[14.328,-24.703,-13.37],"2.0417":[13.907,-24.894,-13.194],"2.0833":[13.478,-24.771,-12.929],"2.125":[13.377,-24.629,-12.697],"2.1667":[13.396,-24.508,-12.572],"2.2083":[13.66,-24.409,-12.602],"2.25":[13.742,-24.529,-12.815],"2.2917":[13.761,-24.768,-13.161],"2.3333":[13.749,-24.832,-13.225],"2.375":[13.722,-24.86,-13.233],"2.4167":[13.674,-24.894,-13.245],"2.4583":[13.649,-24.923,-13.28],"2.5":[13.617,-24.969,-13.337],"2.5417":[13.6,-24.998,-13.376],"2.5833":[13.581,-25.023,-13.414]}},"righthand":{"rotation":{"0.0":[-108.398,164.578,-34.258],"0.0417":[-108.236,165.669,-33.458],"0.0833":[-108.493,166.989,-30.067],"0.125":[-110.922,149.474,-31.455],"0.1667":[-93.627,140.907,-5.604],"0.2083":[-98.341,141.053,-8.432],"0.25":[-97.596,144.552,-7.919],"0.2917":[-97.633,146.251,-8.299],"0.3333":[-92.858,149.502,2.812],"0.375":[-82.577,174.746,44.149],"0.4167":[-87.38,197.106,91.095],"0.4583":[-92.398,208.531,92.749],"0.5":[-92.974,203.699,91.407],"0.5417":[-127.335,203.258,46.498],"0.5833":[-123.734,199.188,42.002],"0.625":[-119.141,194.195,36.093],"0.6667":[-114.977,190.399,33.979],"0.7083":[-110.509,186.739,32.579],"0.75":[-100.138,184.634,30.636],"0.7917":[-92.618,188.917,38.615],"0.8333":[-85.926,179.91,49.223],"0.875":[-86.69,171.015,45.006],"0.9167":[-88.757,162.87,38.465],"0.9583":[-86.264,159.265,32.013],"1.0":[-77.721,163.919,30.742],"1.0417":[-65.025,172.555,27.4],"1.0833":[-63.084,173.132,23.62],"1.125":[-67.254,170.326,18.994],"1.1667":[-75.907,165.491,10.852],"1.2083":[-76.944,163.629,5.899],"1.25":[-71.163,161.278,-0.041],"1.2917":[-67.904,159.675,-4.581],"1.3333":[-69.393,158.839,-11.177],"1.375":[-78.239,161.322,-24.304],"1.4167":[-84.668,163.228,-33.113],"1.4583":[-92.542,154.978,-48.005],"1.5":[-101.179,148.764,-58.582],"1.5417":[-113.071,154.921,-58.376],"1.5833":[-120.24,178.599,-67.445],"1.625":[-104.872,198.784,-92.89],"1.6667":[-76.492,195.056,-95.587],"1.7083":[-63.792,190.04,-76.219],"1.75":[-59.563,191.632,-64.09],"1.7917":[-61.929,196.03,-42.458],"1.8333":[-69.505,198.018,-16.916],"1.875":[-88.203,203.152,28.243],"1.9167":[-87.807,191.15,37.961],"1.9583":[-76.849,169.658,31.443],"2.0":[-75.54,163.577,25.95],"2.0417":[-75.73,164.304,23.706],"2.0833":[-72.664,171.396,30.246],"2.125":[-70.548,180.37,39.229],"2.1667":[-69.919,188.88,48.159],"2.2083":[-71.489,198.234,61.74],"2.25":[-72.866,202.799,69.615],"2.2917":[-71.924,206.632,74.593],"2.3333":[-70.966,208.296,75.043],"2.375":[-70.277,208.888,73.406],"2.4167":[-70.424,206.736,71.679],"2.4583":[-70.654,205.545,70.934],"2.5":[-70.797,205.529,70.73],"2.5417":[-70.86,205.962,70.859],"2.5833":[-70.925,206.339,70.957]},"position":{"0.0":[-15.46,-27.428,-0.854],"0.0417":[-15.631,-27.4,-0.541],"0.0833":[-15.759,-27.312,-1.062],"0.125":[-14.204,-27.271,-9.71],"0.1667":[-10.413,-22.159,-17.613],"0.2083":[-10.535,-21.53,-18.977],"0.25":[-10.374,-21.49,-18.511],"0.2917":[-10.369,-21.637,-18.069],"0.3333":[-10.353,-21.516,-17.795],"0.375":[-9.292,-21.078,-17.046],"0.4167":[-9.637,-20.476,-16.664],"0.4583":[-10.062,-20.898,-16.712],"0.5":[-17.816,-25.197,-11.439],"0.5417":[-22.478,-22.115,-5.495],"0.5833":[-21.581,-22.669,-4.196],"0.625":[-19.91,-23.795,-2.187],"0.6667":[-18.556,-24.685,-0.985],"0.7083":[-17.156,-25.613,0.166],"0.75":[-15.271,-26.946,1.92],"0.7917":[-14.86,-27.905,1.256],"0.8333":[-15.408,-27.544,-3.358],"0.875":[-14.707,-26.588,-5.914],"0.9167":[-13.907,-25.612,-8.254],"0.9583":[-13.222,-24.788,-10.407],"1.0":[-13.125,-24.684,-10.779],"1.0417":[-13.125,-24.779,-10.819],"1.0833":[-13.1,-24.7,-11.007],"1.125":[-13.118,-24.546,-11.132],"1.1667":[-13.235,-24.322,-11.295],"1.2083":[-13.319,-24.263,-11.441],"1.25":[-13.411,-24.307,-11.706],"1.2917":[-13.447,-24.33,-11.905],"1.3333":[-13.498,-24.294,-12.08],"1.375":[-13.673,-24.118,-12.336],"1.4167":[-13.779,-23.971,-12.468],"1.4583":[-13.531,-23.945,-12.379],"1.5":[-13.159,-24.03,-12.205],"1.5417":[-13.22,-23.982,-12.141],"1.5833":[-12.984,-24.108,-11.946],"1.625":[-12.421,-24.13,-11.662],"1.6667":[-12.348,-24.141,-11.654],"1.7083":[-12.752,-24.418,-11.828],"1.75":[-12.858,-24.277,-11.872],"1.7917":[-12.923,-23.605,-11.79],"1.8333":[-13.094,-22.646,-11.774],"1.875":[-13.004,-22.334,-11.858],"1.9167":[-12.8,-22.999,-11.447],"1.9583":[-12.678,-23.847,-11.027],"2.0":[-12.493,-24.508,-11.102],"2.0417":[-12.428,-24.798,-11.137],"2.0833":[-12.513,-25.021,-10.913],"2.125":[-12.682,-25.07,-10.659],"2.1667":[-12.869,-25.005,-10.449],"2.2083":[-13.155,-24.388,-10.183],"2.25":[-13.344,-23.965,-10.069],"2.2917":[-13.545,-23.71,-10.096],"2.3333":[-13.605,-23.712,-10.14],"2.375":[-13.593,-23.835,-10.163],"2.4167":[-13.63,-23.813,-10.067],"2.4583":[-13.65,-23.789,-10.008],"2.5":[-13.659,-23.788,-9.978],"2.5417":[-13.659,-23.793,-9.972],"2.5833":[-13.658,-23.798,-9.965]}},"weapon":{"rotation":{"0.0":[6.298,-15.757,-91.95],"0.0417":[2.624,-15.162,-100.092],"0.0833":[-0.727,-12.633,-103.075],"0.125":[16.888,-14.34,-108.767],"0.1667":[24.297,-29.458,-95.6],"0.2083":[24.243,-25.798,-95.44],"0.25":[20.318,-26.167,-93.652],"0.2917":[18.434,-25.992,-93.187],"0.3333":[9.956,-30.443,-74.662],"0.375":[-24.715,-22.891,-9.964],"0.4167":[-34.374,2.069,51.927],"0.4583":[-39.555,8.202,67.407],"0.5":[-31.021,-13.543,28.421],"0.5417":[-25.231,15.934,-30.297],"0.5833":[-24.366,11.688,-32.73],"0.625":[-22.863,6.069,-36.76],"0.6667":[-21.183,1.043,-37.838],"0.7083":[-19.434,-4.31,-38.63],"0.75":[-18.034,-12.01,-44.446],"0.7917":[-47.645,-11.001,19.254],"0.8333":[42.094,24.77,126.879],"0.875":[4.653,7.876,120.174],"0.9167":[-60.653,-12.341,124.382],"0.9583":[-118.446,-12.413,128.618],"1.0":[-155.808,-4.819,123.08],"1.0417":[-236.092,7.325,117.379],"1.0833":[-281.481,9.236,113.528],"1.125":[-324.847,5.007,109.325],"1.1667":[-387.239,-4.243,103.852],"1.2083":[-427.205,-6.295,101.365],"1.25":[-488.333,-1.737,101.191],"1.2917":[-528.12,1.74,102.973],"1.3333":[-566.488,1.761,106.212],"1.375":[-624.058,3.349,115.018],"1.4167":[-656.948,5.81,118.847],"1.4583":[-696.746,11.714,124.206],"1.5":[-725.662,16.883,124.846],"1.5417":[-773.98,11.781,127.641],"1.5833":[-808.721,-14.908,132.224],"1.625":[-824.791,-43.99,148.167],"1.6667":[-808.677,-66.792,152.48],"1.7083":[-765.559,-74.568,136.486],"1.75":[-754.852,-78.216,139.006],"1.7917":[-782.91,-80.555,188.032],"1.8333":[-795.118,-74.888,234.382],"1.875":[-778.411,-57.281,304.926],"1.9167":[-751.229,-53.184,331.758],"1.9583":[-774.337,-53.965,374.785],"2.0":[-778.659,-50.086,377.786],"2.0417":[-778.857,-47.991,376.542],"2.0833":[-786.028,-39.765,386.533],"2.125":[-793.251,-27.253,397.917],"2.1667":[-798.451,-13.501,408.027],"2.2083":[-800.453,4.782,422.672],"2.25":[-798.698,14.59,431.68],"2.2917":[-799.039,24.059,437.623],"2.3333":[-800.479,27.865,437.83],"2.375":[-801.526,29.223,435.969],"2.4167":[-801.048,31.799,435.028],"2.4583":[-800.649,33.128,434.745],"2.5":[-800.498,33.24,434.588],"2.5417":[-800.392,33.665,434.748],"2.5833":[-800.289,34.033,434.872]},"position":{"0.0":[-7.685,-16.908,-4.718],"0.0417":[-7.741,-16.899,-4.487],"0.0833":[-7.794,-16.827,-5.077],"0.125":[-5.731,-16.515,-13.003],"0.1667":[-1.684,-11.777,-20.562],"0.2083":[-1.797,-11.221,-21.937],"0.25":[-1.709,-11.183,-21.637],"0.2917":[-1.744,-11.318,-21.275],"0.3333":[-1.778,-11.511,-21.178],"0.375":[-1.572,-11.736,-21.262],"0.4167":[-2.978,-11.152,-21.297],"0.4583":[-4.213,-10.983,-21.556],"0.5":[-11.485,-15.533,-16.231],"0.5417":[-17.054,-13.346,-10.059],"0.5833":[-15.86,-13.939,-8.774],"0.625":[-13.841,-15.008,-6.737],"0.6667":[-12.26,-15.799,-5.506],"0.7083":[-10.644,-16.605,-4.321],"0.75":[-8.482,-17.577,-2.615],"0.7917":[-7.906,-18.105,-2.715],"0.8333":[-6.485,-18.821,-8.037],"0.875":[-5.975,-16.883,-9.04],"0.9167":[-6.15,-13.78,-11.437],"0.9583":[-5.553,-12.508,-15.103],"1.0":[-4.75,-12.627,-16.278],"1.0417":[-2.506,-13.052,-14.953],"1.0833":[-2.372,-13.055,-13.09],"1.125":[-3.272,-12.568,-12.04],"1.1667":[-5.56,-11.502,-12.709],"1.2083":[-6.8,-11.196,-14.106],"1.25":[-6.825,-10.961,-16.084],"1.2917":[-5.647,-10.877,-16.665],"1.3333":[-4.385,-11.105,-16.618],"1.375":[-3.875,-11.821,-15.443],"1.4167":[-4.638,-11.921,-14.528],"1.4583":[-6.547,-11.664,-13.778],"1.5":[-7.669,-11.377,-14.225],"1.5417":[-8.332,-10.408,-16.19],"1.5833":[-8.691,-11.496,-18.619],"1.625":[-9.628,-13.008,-18.715],"1.6667":[-10.985,-11.721,-16.9],"1.7083":[-10.307,-9.867,-15.609],"1.75":[-9.422,-9.03,-15.447],"1.7917":[-7.435,-7.942,-15.847],"1.8333":[-5.05,-8.052,-16.368],"1.875":[-4.566,-12.239,-16.918],"1.9167":[-5.553,-13.474,-15.781],"1.9583":[-5.381,-14.33,-14.922],"2.0":[-4.96,-14.911,-14.834],"2.0417":[-4.897,-15.139,-14.862],"2.0833":[-5.06,-15.24,-14.7],"2.125":[-5.285,-15.164,-14.562],"2.1667":[-5.563,-15.027,-14.543],"2.2083":[-6.091,-14.305,-14.559],"2.25":[-6.41,-13.799,-14.5],"2.2917":[-6.581,-13.43,-14.481],"2.3333":[-6.588,-13.361,-14.493],"2.375":[-6.553,-13.427,-14.5],"2.4167":[-6.581,-13.461,-14.412],"2.4583":[-6.6,-13.474,-14.359],"2.5":[-6.616,-13.468,-14.331],"2.5417":[-6.625,-13.461,-14.325],"2.5833":[-6.631,-13.453,-14.315]}},"up":{"rotation":{"0.0":[0,0,0],"0.5417":[0,0,0],"0.5833":[-0.102,0,0],"0.7917":[31.909,0,0],"0.8333":[170.698,0,0],"0.875":[123.417,0,0],"0.9167":[50.731,0,0],"0.9583":[36.37,0,0],"1.0":[36.37,0,0],"1.0417":[36.048,0,0],"1.0833":[36.048,0,0],"1.125":[35.731,0,0],"1.1667":[35.666,0,0],"1.25":[35.666,0,0],"1.2917":[35.462,0,0],"1.4583":[35.467,0,0],"1.5":[35.467,0,0],"1.5417":[63.754,0,0],"1.5833":[93.11,0,0],"1.625":[93.395,0,0],"1.6667":[93.68,0,0],"1.7083":[93.965,0,0],"1.75":[94.212,0,0],"1.7917":[93.728,0,0],"1.8333":[81.361,0,0],"1.875":[35.951,0,0],"1.9167":[5.289,0,0],"1.9583":[0,0,0],"2.0":[0,0,0],"2.5833":[0,0,0]}},"down":{"rotation":{"0.0":[0,0,0],"0.7917":[-5.882,0,0],"0.8333":[-28.339,0,0],"0.875":[-36.995,0,0],"0.9167":[-42.263,0,0],"0.9583":[-42.968,0,0],"1.1667":[-42.914,0,0],"1.2083":[-42.71,0,0],"1.3333":[-42.71,0,0],"1.375":[-42.505,0,0],"1.4583":[-42.483,0,0],"1.5":[-42.483,0,0],"1.5417":[-72.384,0,0],"1.5833":[-134.372,0,0],"1.625":[-158.256,0,0],"1.6667":[-164.59,0,0],"1.7083":[-164.59,0,0],"1.75":[-162.641,0,0],"1.7917":[-124.488,0,0],"1.8333":[-42.871,0,0],"1.875":[-1.546,0,0],"1.9167":[-0.048,0,0],"1.9583":[0,0,0],"2.5833":[0,0,0]}},"lefthand":{"position":[0,1.6,0],"scale":[1,1.6,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.375":[12.5,0,0],"1.125":[0,0,0],"1.6667":[0,0,-22.5],"2.0833":[0,0,0]},"position":[0,2.7973,0],"scale":[1,1.4,1]},"camera":{"rotation":{"0.0":[-0.069,0.027,-0.077],"0.0417":[-0.377,0.152,-0.447],"0.0833":[-0.561,0.212,-0.569],"0.125":[-0.531,0.178,0.044],"0.1667":[-0.397,0.042,0.166],"0.2083":[-0.233,-0.124,-0.359],"0.25":[-0.012,-0.359,0.556],"0.2917":[0.254,-0.586,-0.206],"0.3333":[0.309,-0.586,-1.405],"0.375":[0.172,-0.4,0.339],"0.4167":[0.086,-0.222,0.778],"0.4583":[0.066,-0.154,0.6],"0.5":[0.021,-0.022,0.117],"0.5417":[-0.02,0.035,-0.138],"0.5833":[-0.053,0.022,-0.072],"0.625":[-0.075,-0.007,0.073],"0.6667":[-0.082,-0.05,0.223],"0.7083":[-0.063,-0.107,0.367],"0.75":[-0.024,-0.176,0.527],"0.7917":[0.017,-0.236,0.651],"0.8333":[0.036,-0.262,0.707],"0.875":[-0.123,-0.177,0.662],"0.9167":[-0.123,-0.177,0.533],"0.9583":[-0.122,-0.178,0.465],"1.0":[-0.122,-0.178,0.251],"1.0417":[-0.122,-0.178,0.184],"1.0833":[-0.122,-0.174,0.066],"1.125":[-0.132,-0.121,-0.002],"1.1667":[-0.094,-0.031,-0.002],"1.2083":[0.002,-0.003,0.039],"1.25":[0.034,-0.014,0.169],"1.2917":[0.037,-0.008,0.196],"1.3333":[0.026,0.048,0.1],"1.375":[0.011,0.127,-0.037],"1.4167":[-0.004,0.2,-0.167],"1.4583":[-0.007,0.223,-0.201],"1.5":[-0.006,0.224,-0.201],"1.5417":[0.013,0.2,-0.105],"1.5833":[0.042,0.158,0.049],"1.625":[0.075,0.109,0.204],"1.6667":[0.1,0.063,0.339],"1.7083":[0.109,0.03,0.387],"1.75":[0.109,0.009,0.367],"1.7917":[0.107,-0.011,0.319],"1.8333":[0.105,-0.032,0.252],"1.875":[0.1,-0.044,0.173],"1.9167":[0.09,-0.053,0.086],"1.9583":[0.08,-0.06,0.005],"2.0":[0.066,-0.058,-0.03],"2.0417":[0.001,-0.013,-0.093],"2.0833":[-0.05,0.028,-0.111],"2.125":[-0.092,0.073,-0.099],"2.1667":[-0.023,0.066,0.057],"2.2083":[0.049,0.055,0.213],"2.25":[0.06,0.033,0.207],"2.2917":[0.047,0.005,0.088],"2.3333":[0.033,-0.012,0.052],"2.375":[0.019,-0.017,0.07],"2.4167":[0.008,-0.019,0.079],"2.4583":[0.001,-0.019,0.079],"2.5":[0.001,-0.019,0.043],"2.5417":[0.001,-0.019,0.015],"2.5833":[0.001,-0.017,-0.003]}}},"sound_effects":{"0.0":{"effect":"melee.cobra_vanguard.cobra_vanguard_melee_3"}}},"run":{"loop":true,"animation_length":0.7167,"bones":{"lefthand_1":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.15":{"post":[0,0,-9],"lerp_mode":"catmullrom"},"0.2333":{"post":[0,0,-1.39],"lerp_mode":"catmullrom"},"0.7167":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,2.25,0],"lerp_mode":"catmullrom"},"0.15":{"post":[0,2,0],"lerp_mode":"catmullrom"},"0.3833":{"post":[1.75,-10,0],"lerp_mode":"catmullrom"},"0.5":{"post":[3.9125,-12.58,0],"lerp_mode":"catmullrom"},"0.5667":{"post":[0,-6.4425,0],"lerp_mode":"catmullrom"},"0.7167":{"post":[0,2.25,0],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.15":{"post":[0,0,-9],"lerp_mode":"catmullrom"},"0.2333":{"post":[0,0,-1.39],"lerp_mode":"catmullrom"},"0.7167":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,0.125,0],"lerp_mode":"catmullrom"},"0.15":{"post":[0,-0.125,0],"lerp_mode":"catmullrom"},"0.3833":{"post":[1.75,-8.9375,0],"lerp_mode":"catmullrom"},"0.5":{"post":[3.9125,-11.5175,0],"lerp_mode":"catmullrom"},"0.5667":{"post":[0,-5.38,0],"lerp_mode":"catmullrom"},"0.7167":{"post":[0,0.125,0],"lerp_mode":"catmullrom"}}},"knife_and_right":{"rotation":{"0.4":{"pre":[4.686,5.1486,15.1695],"post":[4.686,5.1486,15.1695],"lerp_mode":"catmullrom"},"0.7167":[0,0,0]},"position":{"0.0":[-2.995,-5.16,3.165],"0.2":[0.4388,-5.7242,3.1686],"0.3667":{"pre":[6.93,-5.4277,-3.9623],"post":[6.93,-5.4277,-3.9623],"lerp_mode":"catmullrom"},"0.5167":{"post":[4.693,-4.3737,-7.8469],"lerp_mode":"catmullrom"},"0.6333":[0.8125,-4.7493,-6.6018],"0.7167":[-2.875,-8.8125,-2.3125]}}}},"run_start":{"loop":"hold_on_last_frame","animation_length":0.25,"bones":{"lefthand_1":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,0.125,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0.125,0],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[0,0,0],"0.1667":{"pre":[0,0,0],"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":[0,0,0],"0.1667":{"pre":[0,0.125,0],"post":[0,0.125,0],"lerp_mode":"catmullrom"}}},"knife_and_right":{"rotation":[0,0,0],"position":{"0.0":[0,0,0],"0.1667":{"pre":[-10.7487,-12.9742,10.7936],"post":[-10.7487,-12.9742,10.7936],"lerp_mode":"catmullrom"}}}}},"run_end":{"animation_length":0.6667,"bones":{"lefthand_1":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.25":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,2.25,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.25":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0833":{"pre":[9,0,0],"post":[9,0,0],"lerp_mode":"catmullrom"},"0.2167":{"post":[2.125,4.3125,-1.4375],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,0.875,-0.3125],"lerp_mode":"catmullrom"},"0.4333":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,0.5,0.125],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,-0.0625,0],"lerp_mode":"catmullrom"},"0.2333":{"post":[0,0,-0.0625],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,0,0.0625],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"knife_and_right":{"rotation":{"0.0":{"post":[-6.8765,5.1486,9.232],"lerp_mode":"catmullrom"},"0.2167":{"post":[-1.1875,1.75,3.3125],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0.25,-0.0625],"lerp_mode":"catmullrom"},"0.55":{"post":[0,0,0.0625],"lerp_mode":"catmullrom"},"0.6667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.8167":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":[-6.8075,-15.16,11.6025],"0.1333":{"pre":[-1.5,-6.8125,3.625],"post":[-1.5,-6.8125,3.625],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,-1.25,-0.25],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.5833":{"post":[0,0,0],"lerp_mode":"catmullrom"}}}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/cobra_vanguard.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/cobra_vanguard.geo.json new file mode 100644 index 0000000..7f39cd4 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/cobra_vanguard.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.mercy","texture_width":64,"texture_height":64,"visible_bounds_width":24,"visible_bounds_height":8,"visible_bounds_offset":[0,0,0]},"bones":[{"name":"root","pivot":[0,9.6875,4.3375]},{"name":"bone5","parent":"root","pivot":[0,9.6875,4.3375]},{"name":"fn_lefthand","parent":"bone5","pivot":[-6,19,0]},{"name":"lefthand","parent":"fn_lefthand","pivot":[-6,19,0]},{"name":"lefthand_pos","parent":"lefthand","pivot":[0,8,0],"cubes":[{"origin":[-7,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[21,52],"uv_size":[3,12]},"east":{"uv":[9,52],"uv_size":[4,12]},"south":{"uv":[52,21],"uv_size":[3,12]},"west":{"uv":[52,9],"uv_size":[4,12]},"up":{"uv":[30,52],"uv_size":[3,4]},"down":{"uv":[33,56],"uv_size":[3,-4]}}}]},{"name":"knife_and_right","parent":"bone5","pivot":[6,19,0]},{"name":"righthand","parent":"knife_and_right","pivot":[6,19,0]},{"name":"righthand_1","parent":"righthand","pivot":[6,19,0]},{"name":"righthand_pos","parent":"righthand_1","pivot":[0,8,0],"cubes":[{"origin":[4,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[24,52],"uv_size":[3,12]},"east":{"uv":[13,52],"uv_size":[4,12]},"south":{"uv":[27,52],"uv_size":[3,12]},"west":{"uv":[17,52],"uv_size":[4,12]},"up":{"uv":[52,33],"uv_size":[3,4]},"down":{"uv":[36,56],"uv_size":[3,-4]}}}]},{"name":"weapon","parent":"knife_and_right","pivot":[0,9.08,1.89]},{"name":"blade","parent":"weapon","pivot":[0,9.08,1.89],"cubes":[{"origin":[-0.1031,8.8889,-7.339],"size":[0.2062,0.1719,0.55],"pivot":[0,8.8889,-6.789],"rotation":[-21.75,0,0],"uv":{"north":{"uv":[39,36],"uv_size":[0.25,0.125]},"east":{"uv":[21,34],"uv_size":[0.5,0.125]},"south":{"uv":[37,39],"uv_size":[0.25,0.125]},"west":{"uv":[34,21],"uv_size":[0.5,0.125]},"up":{"uv":[25,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,25.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1031,8.8017,-7.6288],"size":[0,0.1891,0.8594],"pivot":[0.1031,8.9908,-7.0444],"rotation":[-19.0605,10.6774,28.2024],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[24,32],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[32,24],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0.1031,8.8017,-7.7835],"size":[0,0.0859,0.1547],"pivot":[0.1031,8.9908,-7.0444],"rotation":[-19.0605,10.6774,28.2024],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[45,23],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[24,45],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.1031,9.0989,-7.5872],"size":[0,0.1085,0.1549],"pivot":[0.1031,9.2073,-7.5872],"rotation":[-74.0605,10.6774,28.2024],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[45,24],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[25,45],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.1031,8.9442,-7.5872],"size":[0,0.1547,0.0517],"pivot":[0.1031,9.2073,-7.5872],"rotation":[-74.0605,10.6774,28.2024],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[45,25],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[26,45],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.1031,8.6998,-6.8578],"size":[0,0.1891,0.0688],"pivot":[0.1031,8.8889,-6.789],"rotation":[-6.5605,10.6774,28.2024],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[45,26],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[27,45],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.0688,9.1593,-7.6685],"size":[0.0172,0.0344,0.1031],"pivot":[0.0172,9.1765,-7.8919],"rotation":[6.2322,15.6615,1.6886],"uv":{"north":{"uv":[45,27],"uv_size":[0.125,0.125]},"east":{"uv":[28,45],"uv_size":[0.125,0.125]},"south":{"uv":[45,28],"uv_size":[0.125,0.125]},"west":{"uv":[29,45],"uv_size":[0.125,0.125]},"up":{"uv":[45,29],"uv_size":[0.125,0.125]},"down":{"uv":[30,45.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.0516,9.1593,-7.7716],"size":[0.0344,0.0344,0.2062],"pivot":[0.0172,9.1765,-7.8919],"rotation":[6.2322,15.6615,1.6886],"uv":{"north":{"uv":[45,30],"uv_size":[0.125,0.125]},"east":{"uv":[39,37],"uv_size":[0.25,0.125]},"south":{"uv":[31,45],"uv_size":[0.125,0.125]},"west":{"uv":[38,39],"uv_size":[0.25,0.125]},"up":{"uv":[39,38],"uv_size":[0.125,0.25]},"down":{"uv":[39,39.25],"uv_size":[0.125,-0.25]}}},{"origin":[0.1031,8.6998,-6.789],"size":[0,0.1891,0.0688],"pivot":[0.1031,8.8889,-6.789],"rotation":[-5.9843,-0.8749,29.9884],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[45,31],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[32,45],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.1031,8.733,-6.7898],"size":[0,0.2062,3.9188],"pivot":[0.1031,8.9393,-5.1398],"rotation":[1.5157,-0.8749,29.9884],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[8,2],"uv_size":[3.625,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[8,3],"uv_size":[3.625,0.25]},"up":{"uv":[0,0],"uv_size":[0,3.625]},"down":{"uv":[0,3.625],"uv_size":[0,-3.625]}}},{"origin":[-0.0172,9.1593,-7.8919],"size":[0.0344,0.0344,0.3266],"pivot":[0.0172,9.1765,-7.8919],"rotation":[6.2322,15.6615,1.6886],"uv":{"north":{"uv":[45,32],"uv_size":[0.125,0.125]},"east":{"uv":[0,40],"uv_size":[0.25,0.125]},"south":{"uv":[33,45],"uv_size":[0.125,0.125]},"west":{"uv":[40,0],"uv_size":[0.25,0.125]},"up":{"uv":[1,40],"uv_size":[0.125,0.25]},"down":{"uv":[40,1.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.0172,9.1593,-7.8919],"size":[0.0344,0.0344,0.3266],"pivot":[-0.0172,9.1765,-7.8919],"rotation":[6.2322,-15.6615,-1.6886],"uv":{"north":{"uv":[45,33],"uv_size":[0.125,0.125]},"east":{"uv":[2,40],"uv_size":[0.25,0.125]},"south":{"uv":[34,45],"uv_size":[0.125,0.125]},"west":{"uv":[40,2],"uv_size":[0.25,0.125]},"up":{"uv":[3,40],"uv_size":[0.125,0.25]},"down":{"uv":[40,3.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.1031,8.8017,-7.6288],"size":[0,0.1891,0.8594],"pivot":[-0.1031,8.9908,-7.0444],"rotation":[-19.0605,-10.6774,-28.2024],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[25,32],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[32,25],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[-0.1031,8.8017,-7.7835],"size":[0,0.0859,0.1547],"pivot":[-0.1031,8.9908,-7.0444],"rotation":[-19.0605,-10.6774,-28.2024],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[45,34],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[35,45],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.1031,9.0989,-7.5872],"size":[0,0.1085,0.1549],"pivot":[-0.1031,9.2073,-7.5872],"rotation":[-74.0605,-10.6774,-28.2024],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[45,35],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[36,45],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.1031,8.9442,-7.5872],"size":[0,0.1547,0.0517],"pivot":[-0.1031,9.2073,-7.5872],"rotation":[-74.0605,-10.6774,-28.2024],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[45,36],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[37,45],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.1031,8.6998,-6.8578],"size":[0,0.1891,0.0688],"pivot":[-0.1031,8.8889,-6.789],"rotation":[-6.5605,-10.6774,-28.2024],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[45,37],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[38,45],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.0516,9.1593,-7.6685],"size":[0.0172,0.0344,0.1031],"pivot":[-0.0172,9.1765,-7.8919],"rotation":[6.2322,-15.6615,-1.6886],"uv":{"north":{"uv":[45,38],"uv_size":[0.125,0.125]},"east":{"uv":[39,45],"uv_size":[0.125,0.125]},"south":{"uv":[45,39],"uv_size":[0.125,0.125]},"west":{"uv":[40,45],"uv_size":[0.125,0.125]},"up":{"uv":[45,40],"uv_size":[0.125,0.125]},"down":{"uv":[41,45.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0172,9.1593,-7.7716],"size":[0.0344,0.0344,0.2062],"pivot":[-0.0172,9.1765,-7.8919],"rotation":[6.2322,-15.6615,-1.6886],"uv":{"north":{"uv":[45,41],"uv_size":[0.125,0.125]},"east":{"uv":[4,40],"uv_size":[0.25,0.125]},"south":{"uv":[42,45],"uv_size":[0.125,0.125]},"west":{"uv":[40,4],"uv_size":[0.25,0.125]},"up":{"uv":[5,40],"uv_size":[0.125,0.25]},"down":{"uv":[40,5.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.1031,8.6998,-6.789],"size":[0,0.1891,0.0688],"pivot":[-0.1031,8.8889,-6.789],"rotation":[-5.9843,0.8749,-29.9884],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[45,42],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[43,45],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.1031,8.733,-6.7898],"size":[0,0.2062,3.9188],"pivot":[-0.1031,8.9393,-5.1398],"rotation":[1.5157,0.8749,-29.9884],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[8,4],"uv_size":[3.625,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[8,5],"uv_size":[3.625,0.25]},"up":{"uv":[0,0],"uv_size":[0,3.625]},"down":{"uv":[0,3.625],"uv_size":[0,-3.625]}}},{"origin":[-0.1031,8.8889,-7.5624],"size":[0.2062,0.0688,0.2234],"pivot":[0,8.8889,-6.789],"rotation":[-21.75,0,0],"uv":{"north":{"uv":[6,40],"uv_size":[0.25,0.125]},"east":{"uv":[40,6],"uv_size":[0.25,0.125]},"south":{"uv":[7,40],"uv_size":[0.25,0.125]},"west":{"uv":[40,7],"uv_size":[0.25,0.125]},"up":{"uv":[22,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1031,8.8889,-7.6524],"size":[0.2062,0.0184,0.09],"pivot":[0,8.8889,-6.789],"rotation":[-21.75,0,0],"uv":{"north":{"uv":[8,40],"uv_size":[0.25,0.125]},"east":{"uv":[45,43],"uv_size":[0.125,0.125]},"south":{"uv":[40,8],"uv_size":[0.25,0.125]},"west":{"uv":[44,45],"uv_size":[0.125,0.125]},"up":{"uv":[9,40],"uv_size":[0.25,0.125]},"down":{"uv":[40,9.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1031,8.9072,-7.5837],"size":[0.2062,0.0344,0.0212],"pivot":[0,8.8889,-6.789],"rotation":[-21.75,0,0],"uv":{"north":{"uv":[10,40],"uv_size":[0.25,0.125]},"east":{"uv":[45,44],"uv_size":[0.125,0.125]},"south":{"uv":[40,10],"uv_size":[0.25,0.125]},"west":{"uv":[45,45],"uv_size":[0.125,0.125]},"up":{"uv":[11,40],"uv_size":[0.25,0.125]},"down":{"uv":[40,11.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1031,8.9072,-7.618],"size":[0.2062,0.0172,0.0344],"pivot":[0,8.8889,-6.789],"rotation":[-21.75,0,0],"uv":{"north":{"uv":[12,40],"uv_size":[0.25,0.125]},"east":{"uv":[0,46],"uv_size":[0.125,0.125]},"south":{"uv":[40,12],"uv_size":[0.25,0.125]},"west":{"uv":[46,0],"uv_size":[0.125,0.125]},"up":{"uv":[13,40],"uv_size":[0.25,0.125]},"down":{"uv":[40,13.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1031,10.9768,-5.8112],"size":[0.2062,0.199,0.1691],"pivot":[0,9.4815,-5.6421],"rotation":[97.5,0,0],"uv":{"north":{"uv":[14,40],"uv_size":[0.25,0.125]},"east":{"uv":[1,46],"uv_size":[0.125,0.125]},"south":{"uv":[40,14],"uv_size":[0.25,0.125]},"west":{"uv":[46,1],"uv_size":[0.125,0.125]},"up":{"uv":[15,40],"uv_size":[0.25,0.125]},"down":{"uv":[40,15.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1031,11.1758,-5.7109],"size":[0.2062,0.1614,0.0688],"pivot":[0,9.4815,-5.6421],"rotation":[97.5,0,0],"uv":{"north":{"uv":[16,40],"uv_size":[0.25,0.125]},"east":{"uv":[2,46],"uv_size":[0.125,0.125]},"south":{"uv":[40,16],"uv_size":[0.25,0.125]},"west":{"uv":[46,2],"uv_size":[0.125,0.125]},"up":{"uv":[17,40],"uv_size":[0.25,0.125]},"down":{"uv":[40,17.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1031,11.3372,-5.6593],"size":[0.2062,0.1031,0.0172],"pivot":[0,9.4815,-5.6421],"rotation":[97.5,0,0],"uv":{"north":{"uv":[18,40],"uv_size":[0.25,0.125]},"east":{"uv":[3,46],"uv_size":[0.125,0.125]},"south":{"uv":[40,18],"uv_size":[0.25,0.125]},"west":{"uv":[46,3],"uv_size":[0.125,0.125]},"up":{"uv":[19,40],"uv_size":[0.25,0.125]},"down":{"uv":[40,19.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1031,8.9576,-7.4421],"size":[0.2062,0.0344,0.1031],"pivot":[0,8.8889,-6.789],"rotation":[-21.75,0,0],"uv":{"north":{"uv":[20,40],"uv_size":[0.25,0.125]},"east":{"uv":[4,46],"uv_size":[0.125,0.125]},"south":{"uv":[40,20],"uv_size":[0.25,0.125]},"west":{"uv":[46,4],"uv_size":[0.125,0.125]},"up":{"uv":[21,40],"uv_size":[0.25,0.125]},"down":{"uv":[40,21.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1032,9.4814,-5.9172],"size":[0.2064,1.4955,0.2752],"inflate":0.001,"pivot":[0,9.4815,-5.6421],"rotation":[97.5,0,0],"uv":{"north":{"uv":[22,5],"uv_size":[0.25,1.375]},"east":{"uv":[22,7],"uv_size":[0.25,1.375]},"south":{"uv":[9,22],"uv_size":[0.25,1.375]},"west":{"uv":[22,9],"uv_size":[0.25,1.375]},"up":{"uv":[23,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1031,8.8889,-6.789],"size":[0.2062,0.275,3.3],"pivot":[-0.0344,8.8889,-6.789],"rotation":[1.75,0,0],"uv":{"north":{"uv":[24,34],"uv_size":[0.25,0.25]},"east":{"uv":[8,6],"uv_size":[3,0.25]},"south":{"uv":[34,24],"uv_size":[0.25,0.25]},"west":{"uv":[8,7],"uv_size":[3,0.25]},"up":{"uv":[8,8],"uv_size":[0.25,3]},"down":{"uv":[9,11],"uv_size":[0.25,-3]}}},{"origin":[-0.1033,8.7684,-5.8955],"size":[0.2067,0.1207,2.166],"inflate":0.002,"pivot":[0,8.8889,-6.789],"rotation":[10.25,0,0],"uv":{"north":{"uv":[22,40],"uv_size":[0.25,0.125]},"east":{"uv":[21,24],"uv_size":[2,0.125]},"south":{"uv":[40,22],"uv_size":[0.25,0.125]},"west":{"uv":[24,23],"uv_size":[2,0.125]},"up":{"uv":[10,0],"uv_size":[0.25,2]},"down":{"uv":[11,2],"uv_size":[0.25,-2]}}},{"origin":[-0.1033,8.5621,-4.5205],"size":[0.2067,0.2067,0.8598],"inflate":0.002,"pivot":[0,8.8889,-6.789],"rotation":[10.25,0,0],"uv":{"north":{"uv":[25,34],"uv_size":[0.25,0.25]},"east":{"uv":[27,2],"uv_size":[0.75,0.25]},"south":{"uv":[34,25],"uv_size":[0.25,0.25]},"west":{"uv":[4,27],"uv_size":[0.75,0.25]},"up":{"uv":[27,4],"uv_size":[0.25,0.75]},"down":{"uv":[5,27.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1027,8.8888,-6.7891],"size":[0.2054,0.2064,1.8564],"inflate":0.001,"pivot":[-0.0006,8.8889,-6.789],"rotation":[10.25,0,0],"uv":{"north":{"uv":[26,34],"uv_size":[0.25,0.25]},"east":{"uv":[10,18],"uv_size":[1.75,0.25]},"south":{"uv":[34,26],"uv_size":[0.25,0.25]},"west":{"uv":[12,18],"uv_size":[1.75,0.25]},"up":{"uv":[7,18],"uv_size":[0.25,1.75]},"down":{"uv":[14,19.75],"uv_size":[0.25,-1.75]}}},{"origin":[-0.1028,8.9895,-3.4989],"size":[0.2057,0.275,0.55],"pivot":[-0.0347,9.2645,-3.4989],"rotation":[-10.75,0,0],"uv":{"north":{"uv":[27,34],"uv_size":[0.25,0.25]},"east":{"uv":[26,30],"uv_size":[0.5,0.25]},"south":{"uv":[34,27],"uv_size":[0.25,0.25]},"west":{"uv":[30,26],"uv_size":[0.5,0.25]},"up":{"uv":[27,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,27.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1031,8.8869,-2.9586],"size":[0.2062,0.275,1.4781],"pivot":[-0.0344,9.1619,-2.9586],"rotation":[-26.75,0,0],"uv":{"north":{"uv":[28,34],"uv_size":[0.25,0.25]},"east":{"uv":[22,3],"uv_size":[1.375,0.25]},"south":{"uv":[34,28],"uv_size":[0.25,0.25]},"west":{"uv":[10,22],"uv_size":[1.375,0.25]},"up":{"uv":[22,11],"uv_size":[0.25,1.375]},"down":{"uv":[12,23.375],"uv_size":[0.25,-1.375]}}},{"origin":[-0.103,9.0933,-3.1647],"size":[0.2061,0.3092,1.6842],"inflate":-0.001,"pivot":[-0.0344,9.1619,-2.9586],"rotation":[-26.75,0,0],"uv":{"north":{"uv":[29,34],"uv_size":[0.25,0.25]},"east":{"uv":[18,17],"uv_size":[1.5,0.25]},"south":{"uv":[34,29],"uv_size":[0.25,0.25]},"west":{"uv":[18,18],"uv_size":[1.5,0.25]},"up":{"uv":[0,19],"uv_size":[0.25,1.5]},"down":{"uv":[1,20.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.103,9.4027,-2.6319],"size":[0.2061,0.292,0.9795],"inflate":-0.001,"pivot":[-0.0344,9.1619,-2.9586],"rotation":[-26.75,0,0],"uv":{"north":{"uv":[30,34],"uv_size":[0.25,0.25]},"east":{"uv":[26,12],"uv_size":[0.875,0.25]},"south":{"uv":[34,30],"uv_size":[0.25,0.25]},"west":{"uv":[13,26],"uv_size":[0.875,0.25]},"up":{"uv":[26,13],"uv_size":[0.25,0.875]},"down":{"uv":[14,26.875],"uv_size":[0.25,-0.875]}}},{"origin":[-0.103,9.6949,-2.2882],"size":[0.2061,0.2061,0.567],"inflate":-0.001,"pivot":[-0.0344,9.1619,-2.9586],"rotation":[-26.75,0,0],"uv":{"north":{"uv":[31,34],"uv_size":[0.25,0.25]},"east":{"uv":[28,30],"uv_size":[0.5,0.25]},"south":{"uv":[34,31],"uv_size":[0.25,0.25]},"west":{"uv":[30,28],"uv_size":[0.5,0.25]},"up":{"uv":[30,29],"uv_size":[0.25,0.5]},"down":{"uv":[30,30.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1028,8.2511,-2.0374],"size":[0.2057,0.825,0.275],"pivot":[-0.0003,8.2511,-1.7624],"rotation":[-33,0,0],"uv":{"north":{"uv":[27,5],"uv_size":[0.25,0.75]},"east":{"uv":[6,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,6],"uv_size":[0.25,0.75]},"west":{"uv":[27,7],"uv_size":[0.25,0.75]},"up":{"uv":[32,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,32.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1031,8.943,-1.5881],"size":[0.2062,0.1547,0.275],"uv":{"north":{"uv":[23,40],"uv_size":[0.25,0.125]},"east":{"uv":[40,23],"uv_size":[0.25,0.125]},"south":{"uv":[24,40],"uv_size":[0.25,0.125]},"west":{"uv":[40,24],"uv_size":[0.25,0.125]},"up":{"uv":[33,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1028,9.0977,-1.5881],"size":[0.2057,0.6875,0.275],"pivot":[-0.0003,9.0977,-1.3131],"rotation":[36,0,0],"uv":{"north":{"uv":[28,19],"uv_size":[0.25,0.625]},"east":{"uv":[20,28],"uv_size":[0.25,0.625]},"south":{"uv":[28,20],"uv_size":[0.25,0.625]},"west":{"uv":[21,28],"uv_size":[0.25,0.625]},"up":{"uv":[34,34],"uv_size":[0.25,0.25]},"down":{"uv":[0,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1031,9.6539,-1.9922],"size":[0.2062,0.1375,0.275],"pivot":[0,9.6539,-1.7172],"rotation":[73.5,0,0],"uv":{"north":{"uv":[25,40],"uv_size":[0.25,0.125]},"east":{"uv":[40,25],"uv_size":[0.25,0.125]},"south":{"uv":[26,40],"uv_size":[0.25,0.125]},"west":{"uv":[40,26],"uv_size":[0.25,0.125]},"up":{"uv":[35,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1028,9.6929,-2.124],"size":[0.2057,0.6188,0.275],"pivot":[-0.0003,9.6929,-1.849],"rotation":[108,0,0],"uv":{"north":{"uv":[28,21],"uv_size":[0.25,0.625]},"east":{"uv":[22,28],"uv_size":[0.25,0.625]},"south":{"uv":[23,28],"uv_size":[0.25,0.625]},"west":{"uv":[24,28],"uv_size":[0.25,0.625]},"up":{"uv":[35,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1031,9.2402,-2.3525],"size":[0.2062,1.375,0.275],"pivot":[0,9.2402,-2.3525],"rotation":[93.5,0,0],"uv":{"north":{"uv":[7,23],"uv_size":[0.25,1.25]},"east":{"uv":[8,23],"uv_size":[0.25,1.25]},"south":{"uv":[23,8],"uv_size":[0.25,1.25]},"west":{"uv":[10,23],"uv_size":[0.25,1.25]},"up":{"uv":[35,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1029,9.1561,-3.7251],"size":[0.2059,1.9252,0.2752],"inflate":0.001,"pivot":[-0.0003,9.1562,-3.725],"rotation":[88.5,0,0],"uv":{"north":{"uv":[15,18],"uv_size":[0.25,1.75]},"east":{"uv":[18,15],"uv_size":[0.25,1.75]},"south":{"uv":[16,18],"uv_size":[0.25,1.75]},"west":{"uv":[17,18],"uv_size":[0.25,1.75]},"up":{"uv":[35,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1031,9.156,-3.5877],"size":[0.2061,0.0692,0.1379],"inflate":0.002,"pivot":[-0.0003,9.1562,-3.725],"rotation":[88.5,0,0],"uv":{"north":{"uv":[27,40],"uv_size":[0.25,0.125]},"east":{"uv":[5,46],"uv_size":[0.125,0.125]},"south":{"uv":[40,27],"uv_size":[0.25,0.125]},"west":{"uv":[46,5],"uv_size":[0.125,0.125]},"up":{"uv":[28,40],"uv_size":[0.25,0.125]},"down":{"uv":[40,28.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.0172,8.5795,-6.9781],"size":[0.0344,0.55,2.2],"pivot":[-1.0828,8.5795,-6.9781],"rotation":[-1.5,0,0],"uv":{"north":{"uv":[35,4],"uv_size":[0.125,0.5]},"east":{"uv":[8,0],"uv_size":[2,0.5]},"south":{"uv":[5,35],"uv_size":[0.125,0.5]},"west":{"uv":[8,1],"uv_size":[2,0.5]},"up":{"uv":[23,15],"uv_size":[0.125,2]},"down":{"uv":[23,20],"uv_size":[0.125,-2]}}},{"origin":[-0.0172,8.5795,-7.6828],"size":[0.0344,0.3438,0.7047],"pivot":[-1.0828,8.5795,-6.9781],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[37,15],"uv_size":[0.125,0.375]},"east":{"uv":[25,16],"uv_size":[0.625,0.375]},"south":{"uv":[16,37],"uv_size":[0.125,0.375]},"west":{"uv":[25,17],"uv_size":[0.625,0.375]},"up":{"uv":[4,34],"uv_size":[0.125,0.625]},"down":{"uv":[34,4.625],"uv_size":[0.125,-0.625]}}},{"origin":[-0.0172,8.5795,-8.0265],"size":[0.0344,0.0688,0.3438],"pivot":[-1.0828,8.5795,-6.9781],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[6,46],"uv_size":[0.125,0.125]},"east":{"uv":[37,16],"uv_size":[0.375,0.125]},"south":{"uv":[46,6],"uv_size":[0.125,0.125]},"west":{"uv":[17,37],"uv_size":[0.375,0.125]},"up":{"uv":[37,17],"uv_size":[0.125,0.375]},"down":{"uv":[18,37.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.0172,8.6483,-7.9234],"size":[0.0344,0.0688,0.2406],"pivot":[-1.0828,8.5795,-6.9781],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[7,46],"uv_size":[0.125,0.125]},"east":{"uv":[29,40],"uv_size":[0.25,0.125]},"south":{"uv":[46,7],"uv_size":[0.125,0.125]},"west":{"uv":[40,29],"uv_size":[0.25,0.125]},"up":{"uv":[30,40],"uv_size":[0.125,0.25]},"down":{"uv":[40,30.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.0172,8.717,-7.8546],"size":[0.0344,0.0688,0.1719],"pivot":[-1.0828,8.5795,-6.9781],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[8,46],"uv_size":[0.125,0.125]},"east":{"uv":[46,8],"uv_size":[0.125,0.125]},"south":{"uv":[9,46],"uv_size":[0.125,0.125]},"west":{"uv":[46,9],"uv_size":[0.125,0.125]},"up":{"uv":[10,46],"uv_size":[0.125,0.125]},"down":{"uv":[46,10.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.0172,8.7858,-7.7515],"size":[0.0344,0.0688,0.0688],"pivot":[-1.0828,8.5795,-6.9781],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[11,46],"uv_size":[0.125,0.125]},"east":{"uv":[46,11],"uv_size":[0.125,0.125]},"south":{"uv":[12,46],"uv_size":[0.125,0.125]},"west":{"uv":[46,12],"uv_size":[0.125,0.125]},"up":{"uv":[13,46],"uv_size":[0.125,0.125]},"down":{"uv":[46,13.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.0172,8.5795,-8.0803],"size":[0.0344,0.026,0.0538],"pivot":[-1.0828,8.5795,-6.9781],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[14,46],"uv_size":[0.125,0.125]},"east":{"uv":[46,14],"uv_size":[0.125,0.125]},"south":{"uv":[15,46],"uv_size":[0.125,0.125]},"west":{"uv":[46,15],"uv_size":[0.125,0.125]},"up":{"uv":[16,46],"uv_size":[0.125,0.125]},"down":{"uv":[46,16.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.0172,9.1321,-7.8254],"size":[0.0344,0.0688,0.4469],"pivot":[-1.0828,9.2008,-7.8254],"rotation":[6,0,0],"uv":{"north":{"uv":[17,46],"uv_size":[0.125,0.125]},"east":{"uv":[37,18],"uv_size":[0.375,0.125]},"south":{"uv":[46,17],"uv_size":[0.125,0.125]},"west":{"uv":[19,37],"uv_size":[0.375,0.125]},"up":{"uv":[37,19],"uv_size":[0.125,0.375]},"down":{"uv":[20,37.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.0172,9.1664,-7.8941],"size":[0.0344,0.0344,0.0688],"pivot":[-1.0828,9.2008,-7.8254],"rotation":[6,0,0],"uv":{"north":{"uv":[18,46],"uv_size":[0.125,0.125]},"east":{"uv":[46,18],"uv_size":[0.125,0.125]},"south":{"uv":[19,46],"uv_size":[0.125,0.125]},"west":{"uv":[46,19],"uv_size":[0.125,0.125]},"up":{"uv":[20,46],"uv_size":[0.125,0.125]},"down":{"uv":[46,20.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.0173,8.5218,-4.7662],"size":[0.0347,0.55,1.1],"pivot":[-1.0827,9.003,-4.7662],"rotation":[-4,0,0],"uv":{"north":{"uv":[35,5],"uv_size":[0.125,0.5]},"east":{"uv":[10,14],"uv_size":[1,0.5]},"south":{"uv":[6,35],"uv_size":[0.125,0.5]},"west":{"uv":[10,15],"uv_size":[1,0.5]},"up":{"uv":[0,31],"uv_size":[0.125,1]},"down":{"uv":[31,1],"uv_size":[0.125,-1]}}},{"origin":[-0.0172,8.4462,-3.7025],"size":[0.0344,0.55,0.275],"pivot":[-1.0828,8.4462,-3.7025],"rotation":[36,0,0],"uv":{"north":{"uv":[35,6],"uv_size":[0.125,0.5]},"east":{"uv":[31,1],"uv_size":[0.25,0.5]},"south":{"uv":[7,35],"uv_size":[0.125,0.5]},"west":{"uv":[31,2],"uv_size":[0.25,0.5]},"up":{"uv":[31,40],"uv_size":[0.125,0.25]},"down":{"uv":[40,31.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.017,8.5028,-3.8033],"size":[0.0341,0.55,0.3438],"pivot":[-1.083,9.0528,-3.8033],"rotation":[23.5,0,0],"uv":{"north":{"uv":[35,7],"uv_size":[0.125,0.5]},"east":{"uv":[8,27],"uv_size":[0.375,0.5]},"south":{"uv":[8,35],"uv_size":[0.125,0.5]},"west":{"uv":[9,27],"uv_size":[0.375,0.5]},"up":{"uv":[37,20],"uv_size":[0.125,0.375]},"down":{"uv":[21,37.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.0172,8.6399,-3.488],"size":[0.0344,0.55,0.3438],"pivot":[-1.0828,9.1899,-3.488],"rotation":[8.5,0,0],"uv":{"north":{"uv":[35,8],"uv_size":[0.125,0.5]},"east":{"uv":[10,27],"uv_size":[0.375,0.5]},"south":{"uv":[9,35],"uv_size":[0.125,0.5]},"west":{"uv":[27,10],"uv_size":[0.375,0.5]},"up":{"uv":[37,21],"uv_size":[0.125,0.375]},"down":{"uv":[22,37.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.017,8.6907,-3.1481],"size":[0.0341,0.55,0.4125],"pivot":[-1.083,9.2407,-3.1481],"rotation":[-1.5,0,0],"uv":{"north":{"uv":[35,9],"uv_size":[0.125,0.5]},"east":{"uv":[27,11],"uv_size":[0.375,0.5]},"south":{"uv":[10,35],"uv_size":[0.125,0.5]},"west":{"uv":[12,27],"uv_size":[0.375,0.5]},"up":{"uv":[37,22],"uv_size":[0.125,0.375]},"down":{"uv":[23,37.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.0172,8.6799,-2.7357],"size":[0.0344,0.55,0.3438],"pivot":[-1.0828,9.2299,-2.7357],"rotation":[-11.5,0,0],"uv":{"north":{"uv":[35,10],"uv_size":[0.125,0.5]},"east":{"uv":[27,12],"uv_size":[0.375,0.5]},"south":{"uv":[11,35],"uv_size":[0.125,0.5]},"west":{"uv":[13,27],"uv_size":[0.375,0.5]},"up":{"uv":[37,23],"uv_size":[0.125,0.375]},"down":{"uv":[24,37.375],"uv_size":[0.125,-0.375]}}}]},{"name":"up","parent":"weapon","pivot":[0,9.3205,-2.0429]},{"name":"bone","parent":"up","pivot":[0,9.1321,-2.229],"cubes":[{"origin":[0.0688,8.9602,-2.3798],"size":[0.2406,0.1685,0.1507],"pivot":[0,9.1321,-2.229],"rotation":[150,0,0],"uv":{"north":{"uv":[32,40],"uv_size":[0.25,0.125]},"east":{"uv":[21,46],"uv_size":[0.125,0.125]},"south":{"uv":[40,32],"uv_size":[0.25,0.125]},"west":{"uv":[46,21],"uv_size":[0.125,0.125]},"up":{"uv":[33,40],"uv_size":[0.25,0.125]},"down":{"uv":[40,33.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.0608,-0.3952],"size":[0.2406,0.0688,4.8297],"pivot":[0,9.0608,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[34,40],"uv_size":[0.25,0.125]},"east":{"uv":[14,12],"uv_size":[4.375,0.125]},"south":{"uv":[40,34],"uv_size":[0.25,0.125]},"west":{"uv":[14,13],"uv_size":[4.375,0.125]},"up":{"uv":[0,0],"uv_size":[0.25,4.375]},"down":{"uv":[1,4.375],"uv_size":[0.25,-4.375]}}},{"origin":[0.0688,9.1296,2.922],"size":[0.2404,0.2748,1.5123],"inflate":-0.001,"pivot":[0,9.0608,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[35,11],"uv_size":[0.25,0.25]},"east":{"uv":[22,13],"uv_size":[1.375,0.25]},"south":{"uv":[12,35],"uv_size":[0.25,0.25]},"west":{"uv":[22,14],"uv_size":[1.375,0.25]},"up":{"uv":[15,22],"uv_size":[0.25,1.375]},"down":{"uv":[22,16.375],"uv_size":[0.25,-1.375]}}},{"origin":[0.0688,9.1296,0.8595],"size":[0.2404,0.0685,2.0623],"inflate":-0.001,"pivot":[0,9.0608,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[35,40],"uv_size":[0.25,0.125]},"east":{"uv":[25,18],"uv_size":[1.875,0.125]},"south":{"uv":[40,35],"uv_size":[0.25,0.125]},"west":{"uv":[25,19],"uv_size":[1.875,0.125]},"up":{"uv":[7,16],"uv_size":[0.25,1.875]},"down":{"uv":[10,17.875],"uv_size":[0.25,-1.875]}}},{"origin":[0.0688,9.1983,1.7705],"size":[0.2404,0.0685,1.1514],"inflate":-0.001,"pivot":[0,9.0608,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[36,40],"uv_size":[0.25,0.125]},"east":{"uv":[31,3],"uv_size":[1,0.125]},"south":{"uv":[40,36],"uv_size":[0.25,0.125]},"west":{"uv":[4,31],"uv_size":[1,0.125]},"up":{"uv":[23,2],"uv_size":[0.25,1]},"down":{"uv":[24,25],"uv_size":[0.25,-1]}}},{"origin":[0.0688,9.2671,2.6642],"size":[0.2404,0.017,0.2576],"inflate":-0.001,"pivot":[0,9.0608,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[37,40],"uv_size":[0.25,0.125]},"east":{"uv":[40,37],"uv_size":[0.25,0.125]},"south":{"uv":[38,40],"uv_size":[0.25,0.125]},"west":{"uv":[40,38],"uv_size":[0.25,0.125]},"up":{"uv":[35,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0686,9.0608,-2.0968],"size":[0.2406,0.1719,1.7016],"pivot":[0.0001,9.0608,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[39,40],"uv_size":[0.25,0.125]},"east":{"uv":[27,13],"uv_size":[1.5,0.125]},"south":{"uv":[40,39],"uv_size":[0.25,0.125]},"west":{"uv":[14,27],"uv_size":[1.5,0.125]},"up":{"uv":[2,19],"uv_size":[0.25,1.5]},"down":{"uv":[3,20.5],"uv_size":[0.25,-1.5]}}},{"origin":[0.0688,9.2154,-0.7218],"size":[0.2406,0.0859,0.3609],"pivot":[0,9.0608,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[40,40],"uv_size":[0.25,0.125]},"east":{"uv":[37,24],"uv_size":[0.375,0.125]},"south":{"uv":[0,41],"uv_size":[0.25,0.125]},"west":{"uv":[25,37],"uv_size":[0.375,0.125]},"up":{"uv":[26,32],"uv_size":[0.25,0.375]},"down":{"uv":[32,26.375],"uv_size":[0.25,-0.375]}}},{"origin":[0.0688,9.1998,-0.3994],"size":[0.2406,0.0688,0.3094],"pivot":[0,9.2686,-0.3994],"rotation":[-18.75,0,0],"uv":{"north":{"uv":[41,0],"uv_size":[0.25,0.125]},"east":{"uv":[1,41],"uv_size":[0.25,0.125]},"south":{"uv":[41,1],"uv_size":[0.25,0.125]},"west":{"uv":[2,41],"uv_size":[0.25,0.125]},"up":{"uv":[35,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0687,9.1003,-0.1065],"size":[0.2408,0.0689,4.7439],"inflate":0.001,"pivot":[0,9.1691,-0.1064],"rotation":[5.5,0,0],"uv":{"north":{"uv":[41,2],"uv_size":[0.25,0.125]},"east":{"uv":[14,14],"uv_size":[4.375,0.125]},"south":{"uv":[3,41],"uv_size":[0.25,0.125]},"west":{"uv":[15,0],"uv_size":[4.375,0.125]},"up":{"uv":[2,0],"uv_size":[0.25,4.375]},"down":{"uv":[3,4.375],"uv_size":[0.25,-4.375]}}},{"origin":[0.3094,9.1575,3.5525],"size":[0.0344,0.2578,1.0484],"pivot":[0,9.2262,-0.1428],"rotation":[5.5,0,0],"uv":{"north":{"uv":[41,3],"uv_size":[0.125,0.25]},"east":{"uv":[25,0],"uv_size":[1,0.25]},"south":{"uv":[4,41],"uv_size":[0.125,0.25]},"west":{"uv":[1,25],"uv_size":[1,0.25]},"up":{"uv":[31,4],"uv_size":[0.125,1]},"down":{"uv":[5,32],"uv_size":[0.125,-1]}}},{"origin":[0.3438,9.5851,3.5647],"size":[0.0344,0.0859,0.0859],"pivot":[0.3609,9.6367,3.5991],"rotation":[-39.5,0,0],"uv":{"north":{"uv":[22,46],"uv_size":[0.125,0.125]},"east":{"uv":[46,22],"uv_size":[0.125,0.125]},"south":{"uv":[23,46],"uv_size":[0.125,0.125]},"west":{"uv":[46,23],"uv_size":[0.125,0.125]},"up":{"uv":[24,46],"uv_size":[0.125,0.125]},"down":{"uv":[46,24.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.3438,9.6023,3.7709],"size":[0.0344,0.0859,0.0859],"pivot":[0.3609,9.6539,3.8053],"rotation":[-39.5,0,0],"uv":{"north":{"uv":[25,46],"uv_size":[0.125,0.125]},"east":{"uv":[46,25],"uv_size":[0.125,0.125]},"south":{"uv":[26,46],"uv_size":[0.125,0.125]},"west":{"uv":[46,26],"uv_size":[0.125,0.125]},"up":{"uv":[27,46],"uv_size":[0.125,0.125]},"down":{"uv":[46,27.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3781,9.6418,4.1944],"size":[0.7562,0.1547,0.1547],"pivot":[0.3609,9.6504,4.2546],"rotation":[-129.5,0,0],"uv":{"north":{"uv":[27,32],"uv_size":[0.75,0.125]},"east":{"uv":[28,46],"uv_size":[0.125,0.125]},"south":{"uv":[32,27],"uv_size":[0.75,0.125]},"west":{"uv":[46,28],"uv_size":[0.125,0.125]},"up":{"uv":[28,32],"uv_size":[0.75,0.125]},"down":{"uv":[32,28.125],"uv_size":[0.75,-0.125]}}},{"origin":[0.0688,9.5554,4.5744],"size":[0.2406,0.3815,0.0476],"pivot":[0,9.5554,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[29,32],"uv_size":[0.25,0.375]},"east":{"uv":[37,25],"uv_size":[0.125,0.375]},"south":{"uv":[32,29],"uv_size":[0.25,0.375]},"west":{"uv":[26,37],"uv_size":[0.125,0.375]},"up":{"uv":[41,4],"uv_size":[0.25,0.125]},"down":{"uv":[5,41.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.246,4.6221],"size":[0.0859,0.4159,0.0688],"pivot":[0,9.5554,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[37,26],"uv_size":[0.125,0.375]},"east":{"uv":[27,37],"uv_size":[0.125,0.375]},"south":{"uv":[37,27],"uv_size":[0.125,0.375]},"west":{"uv":[28,37],"uv_size":[0.125,0.375]},"up":{"uv":[29,46],"uv_size":[0.125,0.125]},"down":{"uv":[46,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.5484,4.5953],"size":[0.0859,0.0688,0.1375],"pivot":[0.1117,9.6172,4.7328],"rotation":[-58,0,0],"uv":{"north":{"uv":[30,46],"uv_size":[0.125,0.125]},"east":{"uv":[46,30],"uv_size":[0.125,0.125]},"south":{"uv":[31,46],"uv_size":[0.125,0.125]},"west":{"uv":[46,31],"uv_size":[0.125,0.125]},"up":{"uv":[32,46],"uv_size":[0.125,0.125]},"down":{"uv":[46,32.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.1296,4.4688],"size":[0.0859,0.1203,0.0688],"pivot":[0.1117,9.2499,4.5375],"rotation":[-66,0,0],"uv":{"north":{"uv":[33,46],"uv_size":[0.125,0.125]},"east":{"uv":[46,33],"uv_size":[0.125,0.125]},"south":{"uv":[34,46],"uv_size":[0.125,0.125]},"west":{"uv":[46,34],"uv_size":[0.125,0.125]},"up":{"uv":[35,46],"uv_size":[0.125,0.125]},"down":{"uv":[46,35.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.3094,9.6205,4.5058],"size":[0.0344,0.3128,0.0476],"pivot":[0,9.5518,4.5534],"rotation":[-28,0,0],"uv":{"north":{"uv":[41,5],"uv_size":[0.125,0.25]},"east":{"uv":[6,41],"uv_size":[0.125,0.25]},"south":{"uv":[41,6],"uv_size":[0.125,0.25]},"west":{"uv":[7,41],"uv_size":[0.125,0.25]},"up":{"uv":[36,46],"uv_size":[0.125,0.125]},"down":{"uv":[46,36.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.3094,9.6205,4.437],"size":[0.0344,0.244,0.0688],"pivot":[0,9.5518,4.5534],"rotation":[-28,0,0],"uv":{"north":{"uv":[41,7],"uv_size":[0.125,0.25]},"east":{"uv":[8,41],"uv_size":[0.125,0.25]},"south":{"uv":[41,8],"uv_size":[0.125,0.25]},"west":{"uv":[9,41],"uv_size":[0.125,0.25]},"up":{"uv":[37,46],"uv_size":[0.125,0.125]},"down":{"uv":[46,37.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.1602,4.437],"size":[0.2404,0.3951,0.1849],"inflate":-0.001,"pivot":[0,9.5554,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[30,32],"uv_size":[0.25,0.375]},"east":{"uv":[37,28],"uv_size":[0.125,0.375]},"south":{"uv":[32,30],"uv_size":[0.25,0.375]},"west":{"uv":[29,37],"uv_size":[0.125,0.375]},"up":{"uv":[41,9],"uv_size":[0.25,0.125]},"down":{"uv":[10,41.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.5554,4.4541],"size":[0.2406,0.2956,0.1203],"pivot":[0,9.5554,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[35,14],"uv_size":[0.25,0.25]},"east":{"uv":[41,10],"uv_size":[0.125,0.25]},"south":{"uv":[15,35],"uv_size":[0.25,0.25]},"west":{"uv":[11,41],"uv_size":[0.125,0.25]},"up":{"uv":[41,11],"uv_size":[0.25,0.125]},"down":{"uv":[12,41.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.1691,2.9186],"size":[0.2406,0.275,1.7188],"pivot":[0,9.1691,-0.1064],"rotation":[5.5,0,0],"uv":{"north":{"uv":[35,15],"uv_size":[0.25,0.25]},"east":{"uv":[4,19],"uv_size":[1.5,0.25]},"south":{"uv":[16,35],"uv_size":[0.25,0.25]},"west":{"uv":[8,19],"uv_size":[1.5,0.25]},"up":{"uv":[6,19],"uv_size":[0.25,1.5]},"down":{"uv":[10,20.5],"uv_size":[0.25,-1.5]}}},{"origin":[0.0688,9.3998,2.2028],"size":[0.2406,0.825,0.0859],"pivot":[0,9.3998,2.2887],"rotation":[65.5,0,0],"uv":{"north":{"uv":[27,14],"uv_size":[0.25,0.75]},"east":{"uv":[31,32],"uv_size":[0.125,0.75]},"south":{"uv":[27,15],"uv_size":[0.25,0.75]},"west":{"uv":[32,31],"uv_size":[0.125,0.75]},"up":{"uv":[41,12],"uv_size":[0.25,0.125]},"down":{"uv":[13,41.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.2406,9.2176,1.6027],"size":[0.0688,0.825,0.275],"pivot":[0.3094,9.4926,1.8777],"rotation":[67.9898,11.0394,25.3467],"uv":{"north":{"uv":[32,32],"uv_size":[0.125,0.75]},"east":{"uv":[27,16],"uv_size":[0.25,0.75]},"south":{"uv":[0,33],"uv_size":[0.125,0.75]},"west":{"uv":[27,17],"uv_size":[0.25,0.75]},"up":{"uv":[41,13],"uv_size":[0.125,0.25]},"down":{"uv":[14,41.25],"uv_size":[0.125,-0.25]}}},{"origin":[0.2406,10.0426,1.6027],"size":[0.0688,0.2062,0.1891],"pivot":[0.3094,9.4926,1.8777],"rotation":[67.9898,11.0394,25.3467],"uv":{"north":{"uv":[41,14],"uv_size":[0.125,0.25]},"east":{"uv":[15,41],"uv_size":[0.125,0.25]},"south":{"uv":[41,15],"uv_size":[0.125,0.25]},"west":{"uv":[16,41],"uv_size":[0.125,0.25]},"up":{"uv":[38,46],"uv_size":[0.125,0.125]},"down":{"uv":[46,38.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.6136,1.8195],"size":[0.2406,0.1719,0.0688],"pivot":[0,9.6136,1.8195],"rotation":[65.5,0,0],"uv":{"north":{"uv":[41,16],"uv_size":[0.25,0.125]},"east":{"uv":[39,46],"uv_size":[0.125,0.125]},"south":{"uv":[17,41],"uv_size":[0.25,0.125]},"west":{"uv":[46,39],"uv_size":[0.125,0.125]},"up":{"uv":[41,17],"uv_size":[0.25,0.125]},"down":{"uv":[18,41.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.1655,-0.3994],"size":[0.2406,0.0344,0.1719],"pivot":[0,9.2686,-0.3994],"rotation":[-18.75,0,0],"uv":{"north":{"uv":[41,18],"uv_size":[0.25,0.125]},"east":{"uv":[40,46],"uv_size":[0.125,0.125]},"south":{"uv":[19,41],"uv_size":[0.25,0.125]},"west":{"uv":[46,40],"uv_size":[0.125,0.125]},"up":{"uv":[41,19],"uv_size":[0.25,0.125]},"down":{"uv":[20,41.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.0787,-1.7914],"size":[0.2406,0.1719,0.5672],"pivot":[0,9.2506,-1.2242],"rotation":[-33.75,0,0],"uv":{"north":{"uv":[41,20],"uv_size":[0.25,0.125]},"east":{"uv":[35,16],"uv_size":[0.5,0.125]},"south":{"uv":[21,41],"uv_size":[0.25,0.125]},"west":{"uv":[17,35],"uv_size":[0.5,0.125]},"up":{"uv":[31,5],"uv_size":[0.25,0.5]},"down":{"uv":[6,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2406,9.4081,-1.6657],"size":[0.0646,0.188,0.4893],"pivot":[0.3094,9.4081,-1.46],"rotation":[-29.538,-17.122,-27.4546],"uv":{"north":{"uv":[41,46],"uv_size":[0.125,0.125]},"east":{"uv":[35,17],"uv_size":[0.5,0.125]},"south":{"uv":[46,41],"uv_size":[0.125,0.125]},"west":{"uv":[18,35],"uv_size":[0.5,0.125]},"up":{"uv":[35,18],"uv_size":[0.125,0.5]},"down":{"uv":[19,35.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.2406,9.4081,-1.7314],"size":[0.0646,0.0292,0.0658],"pivot":[0.3094,9.4081,-1.46],"rotation":[-29.538,-17.122,-27.4546],"uv":{"north":{"uv":[42,46],"uv_size":[0.125,0.125]},"east":{"uv":[46,42],"uv_size":[0.125,0.125]},"south":{"uv":[43,46],"uv_size":[0.125,0.125]},"west":{"uv":[46,43],"uv_size":[0.125,0.125]},"up":{"uv":[44,46],"uv_size":[0.125,0.125]},"down":{"uv":[46,44.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.1375,9.4813,-1.5436],"size":[0.0688,0.1719,0.0688],"pivot":[0.2062,9.6531,-1.5436],"rotation":[-52.038,-17.122,-27.4546],"uv":{"north":{"uv":[45,46],"uv_size":[0.125,0.125]},"east":{"uv":[46,45],"uv_size":[0.125,0.125]},"south":{"uv":[46,46],"uv_size":[0.125,0.125]},"west":{"uv":[0,47],"uv_size":[0.125,0.125]},"up":{"uv":[47,0],"uv_size":[0.125,0.125]},"down":{"uv":[1,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.2506,-1.2242],"size":[0.2406,2.6812,0.0859],"pivot":[0,9.2506,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[13,6],"uv_size":[0.25,2.5]},"east":{"uv":[23,10],"uv_size":[0.125,2.5]},"south":{"uv":[7,13],"uv_size":[0.25,2.5]},"west":{"uv":[11,23],"uv_size":[0.125,2.5]},"up":{"uv":[41,21],"uv_size":[0.25,0.125]},"down":{"uv":[22,41.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.2406,8.1543,-0.2498],"size":[0.0688,0.7219,0.3438],"pivot":[0.3094,9.4949,0.094],"rotation":[-79.9759,3.1413,-17.2244],"uv":{"north":{"uv":[5,34],"uv_size":[0.125,0.625]},"east":{"uv":[25,20],"uv_size":[0.375,0.625]},"south":{"uv":[34,5],"uv_size":[0.125,0.625]},"west":{"uv":[21,25],"uv_size":[0.375,0.625]},"up":{"uv":[37,29],"uv_size":[0.125,0.375]},"down":{"uv":[30,37.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.2422,9.2404,-1.5833],"size":[0.0688,0.1375,0.3609],"pivot":[0.2766,9.2404,-1.2223],"rotation":[-62.4759,3.1413,-17.2244],"uv":{"north":{"uv":[47,1],"uv_size":[0.125,0.125]},"east":{"uv":[37,30],"uv_size":[0.375,0.125]},"south":{"uv":[2,47],"uv_size":[0.125,0.125]},"west":{"uv":[31,37],"uv_size":[0.375,0.125]},"up":{"uv":[37,31],"uv_size":[0.125,0.375]},"down":{"uv":[32,37.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.206,9.7045,-0.5742],"size":[0,1.9937,0.0516],"pivot":[0.206,9.7045,-0.5742],"rotation":[-89.9759,3.1413,-17.2244],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.875]},"east":{"uv":[25,21],"uv_size":[0.125,1.875]},"south":{"uv":[0,0],"uv_size":[0,1.875]},"west":{"uv":[22,25],"uv_size":[0.125,1.875]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.2406,8.8761,0.0424],"size":[0.0688,1.65,0.0516],"pivot":[0.3094,9.4949,0.094],"rotation":[-79.9759,3.1413,-17.2244],"uv":{"north":{"uv":[18,27],"uv_size":[0.125,1.5]},"east":{"uv":[27,18],"uv_size":[0.125,1.5]},"south":{"uv":[19,27],"uv_size":[0.125,1.5]},"west":{"uv":[27,20],"uv_size":[0.125,1.5]},"up":{"uv":[47,2],"uv_size":[0.125,0.125]},"down":{"uv":[3,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2406,8.8761,-0.0092],"size":[0.0688,1.3406,0.0516],"pivot":[0.3094,9.4949,0.094],"rotation":[-79.9759,3.1413,-17.2244],"uv":{"north":{"uv":[28,24],"uv_size":[0.125,1.25]},"east":{"uv":[25,28],"uv_size":[0.125,1.25]},"south":{"uv":[26,28],"uv_size":[0.125,1.25]},"west":{"uv":[28,26],"uv_size":[0.125,1.25]},"up":{"uv":[47,3],"uv_size":[0.125,0.125]},"down":{"uv":[4,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2406,8.8761,-0.0607],"size":[0.0688,1.0484,0.0516],"pivot":[0.3094,9.4949,0.094],"rotation":[-79.9759,3.1413,-17.2244],"uv":{"north":{"uv":[31,6],"uv_size":[0.125,1]},"east":{"uv":[7,31],"uv_size":[0.125,1]},"south":{"uv":[31,7],"uv_size":[0.125,1]},"west":{"uv":[8,31],"uv_size":[0.125,1]},"up":{"uv":[47,4],"uv_size":[0.125,0.125]},"down":{"uv":[5,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2406,8.8761,-0.1123],"size":[0.0688,0.7734,0.0516],"pivot":[0.3094,9.4949,0.094],"rotation":[-79.9759,3.1413,-17.2244],"uv":{"north":{"uv":[33,0],"uv_size":[0.125,0.75]},"east":{"uv":[1,33],"uv_size":[0.125,0.75]},"south":{"uv":[33,1],"uv_size":[0.125,0.75]},"west":{"uv":[2,33],"uv_size":[0.125,0.75]},"up":{"uv":[47,5],"uv_size":[0.125,0.125]},"down":{"uv":[6,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2406,8.8761,-0.1638],"size":[0.0688,0.4641,0.0516],"pivot":[0.3094,9.4949,0.094],"rotation":[-79.9759,3.1413,-17.2244],"uv":{"north":{"uv":[37,32],"uv_size":[0.125,0.375]},"east":{"uv":[33,37],"uv_size":[0.125,0.375]},"south":{"uv":[37,33],"uv_size":[0.125,0.375]},"west":{"uv":[34,37],"uv_size":[0.125,0.375]},"up":{"uv":[47,6],"uv_size":[0.125,0.125]},"down":{"uv":[7,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2406,8.8761,-0.2154],"size":[0.0688,0.1891,0.0516],"pivot":[0.3094,9.4949,0.094],"rotation":[-79.9759,3.1413,-17.2244],"uv":{"north":{"uv":[47,7],"uv_size":[0.125,0.125]},"east":{"uv":[8,47],"uv_size":[0.125,0.125]},"south":{"uv":[47,8],"uv_size":[0.125,0.125]},"west":{"uv":[9,47],"uv_size":[0.125,0.125]},"up":{"uv":[47,9],"uv_size":[0.125,0.125]},"down":{"uv":[10,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,10.0756,-1.293],"size":[0.1375,1.8562,0.0688],"pivot":[0,9.2506,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[26,14],"uv_size":[0.125,1.75]},"east":{"uv":[16,26],"uv_size":[0.125,1.75]},"south":{"uv":[26,16],"uv_size":[0.125,1.75]},"west":{"uv":[17,26],"uv_size":[0.125,1.75]},"up":{"uv":[47,10],"uv_size":[0.125,0.125]},"down":{"uv":[11,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,10.0756,-1.3617],"size":[0.1375,1.3234,0.0688],"pivot":[0,9.2506,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[27,28],"uv_size":[0.125,1.25]},"east":{"uv":[28,28],"uv_size":[0.125,1.25]},"south":{"uv":[0,29],"uv_size":[0.125,1.25]},"west":{"uv":[29,0],"uv_size":[0.125,1.25]},"up":{"uv":[47,11],"uv_size":[0.125,0.125]},"down":{"uv":[12,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,10.0756,-1.4304],"size":[0.1375,0.8078,0.0688],"pivot":[0,9.2506,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[33,2],"uv_size":[0.125,0.75]},"east":{"uv":[3,33],"uv_size":[0.125,0.75]},"south":{"uv":[33,3],"uv_size":[0.125,0.75]},"west":{"uv":[4,33],"uv_size":[0.125,0.75]},"up":{"uv":[47,12],"uv_size":[0.125,0.125]},"down":{"uv":[13,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,10.0756,-1.4648],"size":[0.1375,0.3953,0.0344],"pivot":[0,9.2506,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[37,34],"uv_size":[0.125,0.375]},"east":{"uv":[35,37],"uv_size":[0.125,0.375]},"south":{"uv":[37,35],"uv_size":[0.125,0.375]},"west":{"uv":[36,37],"uv_size":[0.125,0.375]},"up":{"uv":[47,13],"uv_size":[0.125,0.125]},"down":{"uv":[14,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.7392,1.4122],"size":[0.2406,3.3516,0.0859],"pivot":[0,9.7392,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[0,10],"uv_size":[0.25,3]},"east":{"uv":[11,19],"uv_size":[0.125,3]},"south":{"uv":[1,10],"uv_size":[0.25,3]},"west":{"uv":[12,19],"uv_size":[0.125,3]},"up":{"uv":[41,22],"uv_size":[0.25,0.125]},"down":{"uv":[23,41.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.3094,10.6329,1.4122],"size":[0.0344,2.3891,0.0859],"pivot":[0,9.7392,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[0,24],"uv_size":[0.125,2.125]},"east":{"uv":[2,24],"uv_size":[0.125,2.125]},"south":{"uv":[24,2],"uv_size":[0.125,2.125]},"west":{"uv":[3,24],"uv_size":[0.125,2.125]},"up":{"uv":[47,14],"uv_size":[0.125,0.125]},"down":{"uv":[15,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.8251,1.4981],"size":[0.1203,0.3094,0.3438],"pivot":[0,9.7392,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[41,23],"uv_size":[0.125,0.25]},"east":{"uv":[33,4],"uv_size":[0.375,0.25]},"south":{"uv":[24,41],"uv_size":[0.125,0.25]},"west":{"uv":[5,33],"uv_size":[0.375,0.25]},"up":{"uv":[37,36],"uv_size":[0.125,0.375]},"down":{"uv":[37,37.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.0688,9.3047,0.9192],"size":[0.1203,0.2406,0.6188],"pivot":[0.1289,9.3047,1.5379],"rotation":[-24.5,0,0],"uv":{"north":{"uv":[41,24],"uv_size":[0.125,0.25]},"east":{"uv":[2,29],"uv_size":[0.625,0.25]},"south":{"uv":[25,41],"uv_size":[0.125,0.25]},"west":{"uv":[29,2],"uv_size":[0.625,0.25]},"up":{"uv":[6,34],"uv_size":[0.125,0.625]},"down":{"uv":[34,6.625],"uv_size":[0.125,-0.625]}}},{"origin":[0.0688,9.5453,1.1942],"size":[0.1203,0.0688,0.3438],"pivot":[0.1289,9.3047,1.5379],"rotation":[-24.5,0,0],"uv":{"north":{"uv":[47,15],"uv_size":[0.125,0.125]},"east":{"uv":[0,38],"uv_size":[0.375,0.125]},"south":{"uv":[16,47],"uv_size":[0.125,0.125]},"west":{"uv":[38,0],"uv_size":[0.375,0.125]},"up":{"uv":[1,38],"uv_size":[0.125,0.375]},"down":{"uv":[38,1.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.0688,6.7829,1.3434],"size":[0.1375,6.3078,0.0688],"pivot":[0,9.7392,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[10,8],"uv_size":[0.125,5.75]},"east":{"uv":[11,6],"uv_size":[0.125,5.75]},"south":{"uv":[8,11],"uv_size":[0.125,5.75]},"west":{"uv":[9,11],"uv_size":[0.125,5.75]},"up":{"uv":[47,16],"uv_size":[0.125,0.125]},"down":{"uv":[17,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.6531,-1.5436],"size":[0.1375,0.0688,0.1375],"pivot":[0.1375,9.6531,-1.5436],"rotation":[-132,0,0],"uv":{"north":{"uv":[47,17],"uv_size":[0.125,0.125]},"east":{"uv":[18,47],"uv_size":[0.125,0.125]},"south":{"uv":[47,18],"uv_size":[0.125,0.125]},"west":{"uv":[19,47],"uv_size":[0.125,0.125]},"up":{"uv":[47,19],"uv_size":[0.125,0.125]},"down":{"uv":[20,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.4362,-1.5846],"size":[0.1375,0.0688,0.1375],"pivot":[0.1375,9.5049,-1.5846],"rotation":[-177,0,0],"uv":{"north":{"uv":[47,20],"uv_size":[0.125,0.125]},"east":{"uv":[21,47],"uv_size":[0.125,0.125]},"south":{"uv":[47,21],"uv_size":[0.125,0.125]},"west":{"uv":[22,47],"uv_size":[0.125,0.125]},"up":{"uv":[47,22],"uv_size":[0.125,0.125]},"down":{"uv":[23,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,6.7829,1.4122],"size":[0.1375,1.1516,0.3438],"pivot":[0,9.7392,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[31,8],"uv_size":[0.125,1]},"east":{"uv":[19,12],"uv_size":[0.375,1]},"south":{"uv":[31,9],"uv_size":[0.125,1]},"west":{"uv":[13,19],"uv_size":[0.375,1]},"up":{"uv":[2,38],"uv_size":[0.125,0.375]},"down":{"uv":[38,2.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.1375,9.6205,1.6059],"size":[0.0689,3.3516,0.1239],"pivot":[0.2062,9.8182,1.6059],"rotation":[-88.3322,2.4941,-56.2137],"uv":{"north":{"uv":[19,13],"uv_size":[0.125,3]},"east":{"uv":[18,19],"uv_size":[0.125,3]},"south":{"uv":[19,19],"uv_size":[0.125,3]},"west":{"uv":[20,0],"uv_size":[0.125,3]},"up":{"uv":[47,23],"uv_size":[0.125,0.125]},"down":{"uv":[24,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.1375,8.6598,1.6059],"size":[0.0689,0.9607,0.0652],"pivot":[0.2062,9.8182,1.6059],"rotation":[-88.3322,2.4941,-56.2137],"uv":{"north":{"uv":[8,32],"uv_size":[0.125,0.875]},"east":{"uv":[32,8],"uv_size":[0.125,0.875]},"south":{"uv":[9,32],"uv_size":[0.125,0.875]},"west":{"uv":[32,9],"uv_size":[0.125,0.875]},"up":{"uv":[47,24],"uv_size":[0.125,0.125]},"down":{"uv":[25,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.1375,8.1109,1.6059],"size":[0.0689,0.549,0.0316],"pivot":[0.2062,9.8182,1.6059],"rotation":[-88.3322,2.4941,-56.2137],"uv":{"north":{"uv":[35,19],"uv_size":[0.125,0.5]},"east":{"uv":[20,35],"uv_size":[0.125,0.5]},"south":{"uv":[35,20],"uv_size":[0.125,0.5]},"west":{"uv":[21,35],"uv_size":[0.125,0.5]},"up":{"uv":[47,25],"uv_size":[0.125,0.125]},"down":{"uv":[26,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.1375,7.8359,1.6059],"size":[0.0689,0.275,0.0144],"pivot":[0.2062,9.8182,1.6059],"rotation":[-88.3322,2.4941,-56.2137],"uv":{"north":{"uv":[41,25],"uv_size":[0.125,0.25]},"east":{"uv":[26,41],"uv_size":[0.125,0.25]},"south":{"uv":[41,26],"uv_size":[0.125,0.25]},"west":{"uv":[27,41],"uv_size":[0.125,0.25]},"up":{"uv":[47,26],"uv_size":[0.125,0.125]},"down":{"uv":[27,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2558,8.7481,1.3449],"size":[0.0689,0.9625,0.0688],"pivot":[0.2903,9.7106,1.4137],"rotation":[-91.8322,2.4941,-56.2137],"uv":{"north":{"uv":[10,32],"uv_size":[0.125,0.875]},"east":{"uv":[32,10],"uv_size":[0.125,0.875]},"south":{"uv":[11,32],"uv_size":[0.125,0.875]},"west":{"uv":[32,11],"uv_size":[0.125,0.875]},"up":{"uv":[47,27],"uv_size":[0.125,0.125]},"down":{"uv":[28,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2558,8.1981,1.3793],"size":[0.0689,0.55,0.0344],"pivot":[0.2903,9.7106,1.4137],"rotation":[-91.8322,2.4941,-56.2137],"uv":{"north":{"uv":[35,21],"uv_size":[0.125,0.5]},"east":{"uv":[22,35],"uv_size":[0.125,0.5]},"south":{"uv":[35,22],"uv_size":[0.125,0.5]},"west":{"uv":[23,35],"uv_size":[0.125,0.5]},"up":{"uv":[47,28],"uv_size":[0.125,0.125]},"down":{"uv":[29,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2558,7.7512,1.3965],"size":[0.0689,0.4469,0.0172],"pivot":[0.2903,9.7106,1.4137],"rotation":[-91.8322,2.4941,-56.2137],"uv":{"north":{"uv":[3,38],"uv_size":[0.125,0.375]},"east":{"uv":[38,3],"uv_size":[0.125,0.375]},"south":{"uv":[4,38],"uv_size":[0.125,0.375]},"west":{"uv":[38,4],"uv_size":[0.125,0.375]},"up":{"uv":[47,29],"uv_size":[0.125,0.125]},"down":{"uv":[30,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.6822,1.88],"size":[0.2406,1.0312,0.0859],"pivot":[0,9.6822,1.9659],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[25,1],"uv_size":[0.25,1]},"east":{"uv":[10,31],"uv_size":[0.125,1]},"south":{"uv":[25,2],"uv_size":[0.25,1]},"west":{"uv":[31,10],"uv_size":[0.125,1]},"up":{"uv":[41,27],"uv_size":[0.25,0.125]},"down":{"uv":[28,41.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.3094,9.653,2.2571],"size":[0.0344,1.2547,0.0859],"pivot":[0,9.6874,2.343],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[9,30],"uv_size":[0.125,1.125]},"east":{"uv":[30,9],"uv_size":[0.125,1.125]},"south":{"uv":[30,11],"uv_size":[0.125,1.125]},"west":{"uv":[13,30],"uv_size":[0.125,1.125]},"up":{"uv":[47,30],"uv_size":[0.125,0.125]},"down":{"uv":[31,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.3094,10.478,2.0852],"size":[0.0344,0.4297,0.1719],"pivot":[0,9.6874,2.343],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[5,38],"uv_size":[0.125,0.375]},"east":{"uv":[38,5],"uv_size":[0.125,0.375]},"south":{"uv":[6,38],"uv_size":[0.125,0.375]},"west":{"uv":[38,6],"uv_size":[0.125,0.375]},"up":{"uv":[47,31],"uv_size":[0.125,0.125]},"down":{"uv":[32,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.3094,10.0483,2.1711],"size":[0.0344,0.4297,0.0859],"pivot":[0,9.6874,2.343],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[7,38],"uv_size":[0.125,0.375]},"east":{"uv":[38,7],"uv_size":[0.125,0.375]},"south":{"uv":[8,38],"uv_size":[0.125,0.375]},"west":{"uv":[38,8],"uv_size":[0.125,0.375]},"up":{"uv":[47,32],"uv_size":[0.125,0.125]},"down":{"uv":[33,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,10.0431,1.8112],"size":[0.2406,0.6703,0.0688],"pivot":[0,9.6822,1.9659],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[3,29],"uv_size":[0.25,0.625]},"east":{"uv":[7,34],"uv_size":[0.125,0.625]},"south":{"uv":[29,3],"uv_size":[0.25,0.625]},"west":{"uv":[34,7],"uv_size":[0.125,0.625]},"up":{"uv":[41,28],"uv_size":[0.25,0.125]},"down":{"uv":[29,41.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,10.4556,1.7768],"size":[0.2406,0.2578,0.0344],"pivot":[0,9.6822,1.9659],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[35,23],"uv_size":[0.25,0.25]},"east":{"uv":[41,29],"uv_size":[0.125,0.25]},"south":{"uv":[24,35],"uv_size":[0.25,0.25]},"west":{"uv":[30,41],"uv_size":[0.125,0.25]},"up":{"uv":[41,30],"uv_size":[0.25,0.125]},"down":{"uv":[31,41.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.3938,-2.2114],"size":[0.2406,0.1719,0.5156],"pivot":[0,9.5657,-1.6958],"rotation":[1.25,0,0],"uv":{"north":{"uv":[41,31],"uv_size":[0.25,0.125]},"east":{"uv":[35,24],"uv_size":[0.5,0.125]},"south":{"uv":[32,41],"uv_size":[0.25,0.125]},"west":{"uv":[25,35],"uv_size":[0.5,0.125]},"up":{"uv":[11,31],"uv_size":[0.25,0.5]},"down":{"uv":[31,11.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0688,9.5657,-2.2114],"size":[0.1375,0.0688,0.5156],"pivot":[0,9.5657,-1.6958],"rotation":[1.25,0,0],"uv":{"north":{"uv":[47,33],"uv_size":[0.125,0.125]},"east":{"uv":[35,25],"uv_size":[0.5,0.125]},"south":{"uv":[34,47],"uv_size":[0.125,0.125]},"west":{"uv":[26,35],"uv_size":[0.5,0.125]},"up":{"uv":[35,26],"uv_size":[0.125,0.5]},"down":{"uv":[27,35.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.0688,9.4969,-1.766],"size":[0.1375,0.1375,0.0688],"pivot":[0.1461,9.6344,-1.6973],"rotation":[23.75,0,0],"uv":{"north":{"uv":[47,34],"uv_size":[0.125,0.125]},"east":{"uv":[35,47],"uv_size":[0.125,0.125]},"south":{"uv":[47,35],"uv_size":[0.125,0.125]},"west":{"uv":[36,47],"uv_size":[0.125,0.125]},"up":{"uv":[47,36],"uv_size":[0.125,0.125]},"down":{"uv":[37,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2076,9.5618,-2.2129],"size":[0.1238,0.0667,0.5156],"pivot":[0.2076,9.6306,-1.9551],"rotation":[1.0394,-0.6944,33.7437],"uv":{"north":{"uv":[47,37],"uv_size":[0.125,0.125]},"east":{"uv":[35,27],"uv_size":[0.5,0.125]},"south":{"uv":[38,47],"uv_size":[0.125,0.125]},"west":{"uv":[28,35],"uv_size":[0.5,0.125]},"up":{"uv":[35,28],"uv_size":[0.125,0.5]},"down":{"uv":[29,35.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.0688,9.2391,-2.2114],"size":[0.2406,0.1547,0.6875],"pivot":[0,9.5657,-1.6958],"rotation":[1.25,0,0],"uv":{"north":{"uv":[41,32],"uv_size":[0.25,0.125]},"east":{"uv":[8,34],"uv_size":[0.625,0.125]},"south":{"uv":[33,41],"uv_size":[0.25,0.125]},"west":{"uv":[34,8],"uv_size":[0.625,0.125]},"up":{"uv":[4,29],"uv_size":[0.25,0.625]},"down":{"uv":[5,29.625],"uv_size":[0.25,-0.625]}}},{"origin":[0.0688,9.3826,-2.3488],"size":[0.2406,0.1719,0.1375],"pivot":[0,9.5544,-2.2113],"rotation":[46.25,0,0],"uv":{"north":{"uv":[41,33],"uv_size":[0.25,0.125]},"east":{"uv":[47,38],"uv_size":[0.125,0.125]},"south":{"uv":[34,41],"uv_size":[0.25,0.125]},"west":{"uv":[39,47],"uv_size":[0.125,0.125]},"up":{"uv":[41,34],"uv_size":[0.25,0.125]},"down":{"uv":[35,41.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.2833,-2.4954],"size":[0.2406,0.1719,0.1891],"pivot":[0,9.4551,-2.3064],"rotation":[90,0,0],"uv":{"north":{"uv":[41,35],"uv_size":[0.25,0.125]},"east":{"uv":[47,39],"uv_size":[0.125,0.125]},"south":{"uv":[36,41],"uv_size":[0.25,0.125]},"west":{"uv":[40,47],"uv_size":[0.125,0.125]},"up":{"uv":[41,36],"uv_size":[0.25,0.125]},"down":{"uv":[37,41.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.0942,-2.4611],"size":[0.2406,0.1719,0.1547],"pivot":[0,9.266,-2.3064],"rotation":[120,0,0],"uv":{"north":{"uv":[41,37],"uv_size":[0.25,0.125]},"east":{"uv":[47,40],"uv_size":[0.125,0.125]},"south":{"uv":[38,41],"uv_size":[0.25,0.125]},"west":{"uv":[41,47],"uv_size":[0.125,0.125]},"up":{"uv":[41,38],"uv_size":[0.25,0.125]},"down":{"uv":[39,41.125],"uv_size":[0.25,-0.125]}}}]},{"name":"octagon","parent":"bone","pivot":[0,9.3186,-2.0452],"rotation":[2.5,0,0],"cubes":[{"origin":[0.3093,9.2544,-2.2001],"size":[0.0002,0.1284,0.3096],"inflate":0.001,"pivot":[0,9.3186,-2.0452],"rotation":[-45,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[41,39],"uv_size":[0.25,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[40,41],"uv_size":[0.25,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.3093,9.2544,-2.2001],"size":[0.0002,0.1284,0.5846],"inflate":0.001,"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[35,29],"uv_size":[0.5,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[30,35],"uv_size":[0.5,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0.3093,9.2919,-1.6156],"size":[0.0002,0.0908,0.0908],"inflate":0.001,"pivot":[0,9.3826,-1.6155],"rotation":[-45,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[47,41],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[42,47],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.3093,9.1638,-2.1094],"size":[0.0002,0.3096,0.1284],"inflate":0.001,"pivot":[0,9.3186,-2.0452],"rotation":[-45,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,40],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[41,41],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.3093,9.1638,-2.1094],"size":[0.0002,0.3096,0.1284],"inflate":0.001,"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[0,42],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[42,0],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.3093,9.2497,-2.1094],"size":[0.0346,0.1378,0.1377],"inflate":0.001,"pivot":[0.3266,9.3186,-2.0406],"rotation":[-45,0,0],"uv":{"north":{"uv":[47,42],"uv_size":[0.125,0.125]},"east":{"uv":[43,47],"uv_size":[0.125,0.125]},"south":{"uv":[47,43],"uv_size":[0.125,0.125]},"west":{"uv":[44,47],"uv_size":[0.125,0.125]},"up":{"uv":[47,44],"uv_size":[0.125,0.125]},"down":{"uv":[45,47.125],"uv_size":[0.125,-0.125]}}}]},{"name":"bone2","parent":"up","pivot":[0,9.1321,-2.229],"cubes":[{"origin":[-0.3094,8.9602,-2.3798],"size":[0.2406,0.1685,0.1507],"pivot":[0,9.1321,-2.229],"rotation":[150,0,0],"uv":{"north":{"uv":[1,42],"uv_size":[0.25,0.125]},"east":{"uv":[47,45],"uv_size":[0.125,0.125]},"south":{"uv":[42,1],"uv_size":[0.25,0.125]},"west":{"uv":[46,47],"uv_size":[0.125,0.125]},"up":{"uv":[2,42],"uv_size":[0.25,0.125]},"down":{"uv":[42,2.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.0608,-0.3952],"size":[0.2406,0.0688,4.8297],"pivot":[0,9.0608,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[3,42],"uv_size":[0.25,0.125]},"east":{"uv":[15,1],"uv_size":[4.375,0.125]},"south":{"uv":[42,3],"uv_size":[0.25,0.125]},"west":{"uv":[15,2],"uv_size":[4.375,0.125]},"up":{"uv":[4,0],"uv_size":[0.25,4.375]},"down":{"uv":[0,9.375],"uv_size":[0.25,-4.375]}}},{"origin":[-0.3093,9.1296,2.922],"size":[0.2404,0.2748,1.5123],"inflate":-0.001,"pivot":[0,9.0608,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[35,30],"uv_size":[0.25,0.25]},"east":{"uv":[16,22],"uv_size":[1.375,0.25]},"south":{"uv":[31,35],"uv_size":[0.25,0.25]},"west":{"uv":[22,17],"uv_size":[1.375,0.25]},"up":{"uv":[18,22],"uv_size":[0.25,1.375]},"down":{"uv":[22,19.375],"uv_size":[0.25,-1.375]}}},{"origin":[-0.3093,9.1296,0.8595],"size":[0.2404,0.0685,2.0623],"inflate":-0.001,"pivot":[0,9.0608,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[4,42],"uv_size":[0.25,0.125]},"east":{"uv":[23,25],"uv_size":[1.875,0.125]},"south":{"uv":[42,4],"uv_size":[0.25,0.125]},"west":{"uv":[25,24],"uv_size":[1.875,0.125]},"up":{"uv":[13,16],"uv_size":[0.25,1.875]},"down":{"uv":[14,17.875],"uv_size":[0.25,-1.875]}}},{"origin":[-0.3093,9.1983,1.7705],"size":[0.2404,0.0685,1.1514],"inflate":-0.001,"pivot":[0,9.0608,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[5,42],"uv_size":[0.25,0.125]},"east":{"uv":[12,31],"uv_size":[1,0.125]},"south":{"uv":[42,5],"uv_size":[0.25,0.125]},"west":{"uv":[31,12],"uv_size":[1,0.125]},"up":{"uv":[25,3],"uv_size":[0.25,1]},"down":{"uv":[4,26],"uv_size":[0.25,-1]}}},{"origin":[-0.3093,9.2671,2.6642],"size":[0.2404,0.017,0.2576],"inflate":-0.001,"pivot":[0,9.0608,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[6,42],"uv_size":[0.25,0.125]},"east":{"uv":[42,6],"uv_size":[0.25,0.125]},"south":{"uv":[7,42],"uv_size":[0.25,0.125]},"west":{"uv":[42,7],"uv_size":[0.25,0.125]},"up":{"uv":[35,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3092,9.0608,-2.0968],"size":[0.2406,0.1719,1.7016],"pivot":[0.0001,9.0608,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[8,42],"uv_size":[0.25,0.125]},"east":{"uv":[27,22],"uv_size":[1.5,0.125]},"south":{"uv":[42,8],"uv_size":[0.25,0.125]},"west":{"uv":[27,23],"uv_size":[1.5,0.125]},"up":{"uv":[20,3],"uv_size":[0.25,1.5]},"down":{"uv":[4,21.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.3094,9.2154,-0.7218],"size":[0.2406,0.0859,0.3609],"pivot":[0,9.0608,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[9,42],"uv_size":[0.25,0.125]},"east":{"uv":[9,38],"uv_size":[0.375,0.125]},"south":{"uv":[42,9],"uv_size":[0.25,0.125]},"west":{"uv":[38,9],"uv_size":[0.375,0.125]},"up":{"uv":[33,5],"uv_size":[0.25,0.375]},"down":{"uv":[6,33.375],"uv_size":[0.25,-0.375]}}},{"origin":[-0.3094,9.1998,-0.3994],"size":[0.2406,0.0688,0.3094],"pivot":[0,9.2686,-0.3994],"rotation":[-18.75,0,0],"uv":{"north":{"uv":[10,42],"uv_size":[0.25,0.125]},"east":{"uv":[42,10],"uv_size":[0.25,0.125]},"south":{"uv":[11,42],"uv_size":[0.25,0.125]},"west":{"uv":[42,11],"uv_size":[0.25,0.125]},"up":{"uv":[35,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3095,9.1003,-0.1065],"size":[0.2408,0.0689,4.7439],"inflate":0.001,"pivot":[0,9.1691,-0.1064],"rotation":[5.5,0,0],"uv":{"north":{"uv":[12,42],"uv_size":[0.25,0.125]},"east":{"uv":[15,3],"uv_size":[4.375,0.125]},"south":{"uv":[42,12],"uv_size":[0.25,0.125]},"west":{"uv":[15,4],"uv_size":[4.375,0.125]},"up":{"uv":[5,0],"uv_size":[0.25,4.375]},"down":{"uv":[1,9.375],"uv_size":[0.25,-4.375]}}},{"origin":[-0.3438,9.1575,3.5525],"size":[0.0344,0.2578,1.0484],"pivot":[0,9.2262,-0.1428],"rotation":[5.5,0,0],"uv":{"north":{"uv":[13,42],"uv_size":[0.125,0.25]},"east":{"uv":[25,4],"uv_size":[1,0.25]},"south":{"uv":[42,13],"uv_size":[0.125,0.25]},"west":{"uv":[5,25],"uv_size":[1,0.25]},"up":{"uv":[31,13],"uv_size":[0.125,1]},"down":{"uv":[31,15],"uv_size":[0.125,-1]}}},{"origin":[-0.3781,9.5851,3.5647],"size":[0.0344,0.0859,0.0859],"pivot":[-0.3609,9.6367,3.5991],"rotation":[-39.5,0,0],"uv":{"north":{"uv":[47,46],"uv_size":[0.125,0.125]},"east":{"uv":[47,47],"uv_size":[0.125,0.125]},"south":{"uv":[0,48],"uv_size":[0.125,0.125]},"west":{"uv":[48,0],"uv_size":[0.125,0.125]},"up":{"uv":[1,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,1.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3781,9.6023,3.7709],"size":[0.0344,0.0859,0.0859],"pivot":[-0.3609,9.6539,3.8053],"rotation":[-39.5,0,0],"uv":{"north":{"uv":[2,48],"uv_size":[0.125,0.125]},"east":{"uv":[48,2],"uv_size":[0.125,0.125]},"south":{"uv":[3,48],"uv_size":[0.125,0.125]},"west":{"uv":[48,3],"uv_size":[0.125,0.125]},"up":{"uv":[4,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,4.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,9.5554,4.5744],"size":[0.2406,0.3815,0.0476],"pivot":[0,9.5554,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[33,6],"uv_size":[0.25,0.375]},"east":{"uv":[10,38],"uv_size":[0.125,0.375]},"south":{"uv":[7,33],"uv_size":[0.25,0.375]},"west":{"uv":[38,10],"uv_size":[0.125,0.375]},"up":{"uv":[14,42],"uv_size":[0.25,0.125]},"down":{"uv":[42,14.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1547,9.246,4.6221],"size":[0.0859,0.4159,0.0688],"pivot":[0,9.5554,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[11,38],"uv_size":[0.125,0.375]},"east":{"uv":[38,11],"uv_size":[0.125,0.375]},"south":{"uv":[12,38],"uv_size":[0.125,0.375]},"west":{"uv":[38,12],"uv_size":[0.125,0.375]},"up":{"uv":[5,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,5.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1547,9.5484,4.5953],"size":[0.0859,0.0688,0.1375],"pivot":[-0.1117,9.6172,4.7328],"rotation":[-58,0,0],"uv":{"north":{"uv":[6,48],"uv_size":[0.125,0.125]},"east":{"uv":[48,6],"uv_size":[0.125,0.125]},"south":{"uv":[7,48],"uv_size":[0.125,0.125]},"west":{"uv":[48,7],"uv_size":[0.125,0.125]},"up":{"uv":[8,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,8.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1547,9.1296,4.4688],"size":[0.0859,0.1203,0.0688],"pivot":[-0.1117,9.2499,4.5375],"rotation":[-66,0,0],"uv":{"north":{"uv":[9,48],"uv_size":[0.125,0.125]},"east":{"uv":[48,9],"uv_size":[0.125,0.125]},"south":{"uv":[10,48],"uv_size":[0.125,0.125]},"west":{"uv":[48,10],"uv_size":[0.125,0.125]},"up":{"uv":[11,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,11.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3438,9.6205,4.5058],"size":[0.0344,0.3128,0.0476],"pivot":[0,9.5518,4.5534],"rotation":[-28,0,0],"uv":{"north":{"uv":[15,42],"uv_size":[0.125,0.25]},"east":{"uv":[42,15],"uv_size":[0.125,0.25]},"south":{"uv":[16,42],"uv_size":[0.125,0.25]},"west":{"uv":[42,16],"uv_size":[0.125,0.25]},"up":{"uv":[12,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,12.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3438,9.6205,4.437],"size":[0.0344,0.244,0.0688],"pivot":[0,9.5518,4.5534],"rotation":[-28,0,0],"uv":{"north":{"uv":[17,42],"uv_size":[0.125,0.25]},"east":{"uv":[42,17],"uv_size":[0.125,0.25]},"south":{"uv":[18,42],"uv_size":[0.125,0.25]},"west":{"uv":[42,18],"uv_size":[0.125,0.25]},"up":{"uv":[13,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,13.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3093,9.1602,4.437],"size":[0.2404,0.3951,0.1849],"inflate":-0.001,"pivot":[0,9.5554,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[33,7],"uv_size":[0.25,0.375]},"east":{"uv":[13,38],"uv_size":[0.125,0.375]},"south":{"uv":[8,33],"uv_size":[0.25,0.375]},"west":{"uv":[38,13],"uv_size":[0.125,0.375]},"up":{"uv":[19,42],"uv_size":[0.25,0.125]},"down":{"uv":[42,19.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.5554,4.4541],"size":[0.2406,0.2956,0.1203],"pivot":[0,9.5554,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[35,33],"uv_size":[0.25,0.25]},"east":{"uv":[20,42],"uv_size":[0.125,0.25]},"south":{"uv":[34,35],"uv_size":[0.25,0.25]},"west":{"uv":[42,20],"uv_size":[0.125,0.25]},"up":{"uv":[21,42],"uv_size":[0.25,0.125]},"down":{"uv":[42,21.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.1691,2.9186],"size":[0.2406,0.275,1.7188],"pivot":[0,9.1691,-0.1064],"rotation":[5.5,0,0],"uv":{"north":{"uv":[35,34],"uv_size":[0.25,0.25]},"east":{"uv":[19,16],"uv_size":[1.5,0.25]},"south":{"uv":[35,35],"uv_size":[0.25,0.25]},"west":{"uv":[20,5],"uv_size":[1.5,0.25]},"up":{"uv":[5,20],"uv_size":[0.25,1.5]},"down":{"uv":[20,7.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.3094,9.3998,2.2028],"size":[0.2406,0.825,0.0859],"pivot":[0,9.3998,2.2887],"rotation":[65.5,0,0],"uv":{"north":{"uv":[22,27],"uv_size":[0.25,0.75]},"east":{"uv":[33,8],"uv_size":[0.125,0.75]},"south":{"uv":[27,24],"uv_size":[0.25,0.75]},"west":{"uv":[9,33],"uv_size":[0.125,0.75]},"up":{"uv":[22,42],"uv_size":[0.25,0.125]},"down":{"uv":[42,22.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.2176,1.6027],"size":[0.0688,0.825,0.275],"pivot":[-0.3094,9.4926,1.8777],"rotation":[67.9898,-11.0394,-25.3467],"uv":{"north":{"uv":[33,9],"uv_size":[0.125,0.75]},"east":{"uv":[27,25],"uv_size":[0.25,0.75]},"south":{"uv":[10,33],"uv_size":[0.125,0.75]},"west":{"uv":[26,27],"uv_size":[0.25,0.75]},"up":{"uv":[23,42],"uv_size":[0.125,0.25]},"down":{"uv":[42,23.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.3094,10.0426,1.6027],"size":[0.0688,0.2062,0.1891],"pivot":[-0.3094,9.4926,1.8777],"rotation":[67.9898,-11.0394,-25.3467],"uv":{"north":{"uv":[24,42],"uv_size":[0.125,0.25]},"east":{"uv":[42,24],"uv_size":[0.125,0.25]},"south":{"uv":[25,42],"uv_size":[0.125,0.25]},"west":{"uv":[42,25],"uv_size":[0.125,0.25]},"up":{"uv":[14,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,14.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,9.6136,1.8195],"size":[0.2406,0.1719,0.0688],"pivot":[0,9.6136,1.8195],"rotation":[65.5,0,0],"uv":{"north":{"uv":[26,42],"uv_size":[0.25,0.125]},"east":{"uv":[15,48],"uv_size":[0.125,0.125]},"south":{"uv":[42,26],"uv_size":[0.25,0.125]},"west":{"uv":[48,15],"uv_size":[0.125,0.125]},"up":{"uv":[27,42],"uv_size":[0.25,0.125]},"down":{"uv":[42,27.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.1655,-0.3994],"size":[0.2406,0.0344,0.1719],"pivot":[0,9.2686,-0.3994],"rotation":[-18.75,0,0],"uv":{"north":{"uv":[28,42],"uv_size":[0.25,0.125]},"east":{"uv":[16,48],"uv_size":[0.125,0.125]},"south":{"uv":[42,28],"uv_size":[0.25,0.125]},"west":{"uv":[48,16],"uv_size":[0.125,0.125]},"up":{"uv":[29,42],"uv_size":[0.25,0.125]},"down":{"uv":[42,29.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.0787,-1.7914],"size":[0.2406,0.1719,0.5672],"pivot":[0,9.2506,-1.2242],"rotation":[-33.75,0,0],"uv":{"north":{"uv":[30,42],"uv_size":[0.25,0.125]},"east":{"uv":[0,36],"uv_size":[0.5,0.125]},"south":{"uv":[42,30],"uv_size":[0.25,0.125]},"west":{"uv":[36,0],"uv_size":[0.5,0.125]},"up":{"uv":[31,15],"uv_size":[0.25,0.5]},"down":{"uv":[31,16.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3052,9.4081,-1.6657],"size":[0.0646,0.188,0.4893],"pivot":[-0.3094,9.4081,-1.46],"rotation":[-29.538,17.122,27.4546],"uv":{"north":{"uv":[17,48],"uv_size":[0.125,0.125]},"east":{"uv":[1,36],"uv_size":[0.5,0.125]},"south":{"uv":[48,17],"uv_size":[0.125,0.125]},"west":{"uv":[36,1],"uv_size":[0.5,0.125]},"up":{"uv":[2,36],"uv_size":[0.125,0.5]},"down":{"uv":[36,2.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.3052,9.4081,-1.7314],"size":[0.0646,0.0292,0.0658],"pivot":[-0.3094,9.4081,-1.46],"rotation":[-29.538,17.122,27.4546],"uv":{"north":{"uv":[18,48],"uv_size":[0.125,0.125]},"east":{"uv":[48,18],"uv_size":[0.125,0.125]},"south":{"uv":[19,48],"uv_size":[0.125,0.125]},"west":{"uv":[48,19],"uv_size":[0.125,0.125]},"up":{"uv":[20,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,20.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,9.4813,-1.5436],"size":[0.0688,0.1719,0.0688],"pivot":[-0.2062,9.6531,-1.5436],"rotation":[-52.038,17.122,27.4546],"uv":{"north":{"uv":[21,48],"uv_size":[0.125,0.125]},"east":{"uv":[48,21],"uv_size":[0.125,0.125]},"south":{"uv":[22,48],"uv_size":[0.125,0.125]},"west":{"uv":[48,22],"uv_size":[0.125,0.125]},"up":{"uv":[23,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,23.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,9.2506,-1.2242],"size":[0.2406,2.6812,0.0859],"pivot":[0,9.2506,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[13,9],"uv_size":[0.25,2.5]},"east":{"uv":[13,23],"uv_size":[0.125,2.5]},"south":{"uv":[13,12],"uv_size":[0.25,2.5]},"west":{"uv":[14,23],"uv_size":[0.125,2.5]},"up":{"uv":[31,42],"uv_size":[0.25,0.125]},"down":{"uv":[42,31.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,8.1543,-0.2498],"size":[0.0688,0.7219,0.3438],"pivot":[-0.3094,9.4949,0.094],"rotation":[-79.9759,-3.1413,17.2244],"uv":{"north":{"uv":[9,34],"uv_size":[0.125,0.625]},"east":{"uv":[25,25],"uv_size":[0.375,0.625]},"south":{"uv":[34,9],"uv_size":[0.125,0.625]},"west":{"uv":[26,0],"uv_size":[0.375,0.625]},"up":{"uv":[14,38],"uv_size":[0.125,0.375]},"down":{"uv":[38,14.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.311,9.2404,-1.5833],"size":[0.0688,0.1375,0.3609],"pivot":[-0.2766,9.2404,-1.2223],"rotation":[-62.4759,-3.1413,17.2244],"uv":{"north":{"uv":[24,48],"uv_size":[0.125,0.125]},"east":{"uv":[15,38],"uv_size":[0.375,0.125]},"south":{"uv":[48,24],"uv_size":[0.125,0.125]},"west":{"uv":[38,15],"uv_size":[0.375,0.125]},"up":{"uv":[16,38],"uv_size":[0.125,0.375]},"down":{"uv":[38,16.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.206,9.7045,-0.5742],"size":[0,1.9937,0.0516],"pivot":[-0.206,9.7045,-0.5742],"rotation":[-89.9759,-3.1413,17.2244],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.875]},"east":{"uv":[1,26],"uv_size":[0.125,1.875]},"south":{"uv":[0,0],"uv_size":[0,1.875]},"west":{"uv":[26,1],"uv_size":[0.125,1.875]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.3094,8.8761,0.0424],"size":[0.0688,1.65,0.0516],"pivot":[-0.3094,9.4949,0.094],"rotation":[-79.9759,-3.1413,17.2244],"uv":{"north":{"uv":[27,26],"uv_size":[0.125,1.5]},"east":{"uv":[28,0],"uv_size":[0.125,1.5]},"south":{"uv":[1,28],"uv_size":[0.125,1.5]},"west":{"uv":[28,2],"uv_size":[0.125,1.5]},"up":{"uv":[25,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,25.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,8.8761,-0.0092],"size":[0.0688,1.3406,0.0516],"pivot":[-0.3094,9.4949,0.094],"rotation":[-79.9759,-3.1413,17.2244],"uv":{"north":{"uv":[29,5],"uv_size":[0.125,1.25]},"east":{"uv":[6,29],"uv_size":[0.125,1.25]},"south":{"uv":[7,29],"uv_size":[0.125,1.25]},"west":{"uv":[29,7],"uv_size":[0.125,1.25]},"up":{"uv":[26,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,26.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,8.8761,-0.0607],"size":[0.0688,1.0484,0.0516],"pivot":[-0.3094,9.4949,0.094],"rotation":[-79.9759,-3.1413,17.2244],"uv":{"north":{"uv":[17,31],"uv_size":[0.125,1]},"east":{"uv":[31,17],"uv_size":[0.125,1]},"south":{"uv":[18,31],"uv_size":[0.125,1]},"west":{"uv":[31,18],"uv_size":[0.125,1]},"up":{"uv":[27,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,27.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,8.8761,-0.1123],"size":[0.0688,0.7734,0.0516],"pivot":[-0.3094,9.4949,0.094],"rotation":[-79.9759,-3.1413,17.2244],"uv":{"north":{"uv":[33,10],"uv_size":[0.125,0.75]},"east":{"uv":[11,33],"uv_size":[0.125,0.75]},"south":{"uv":[33,11],"uv_size":[0.125,0.75]},"west":{"uv":[12,33],"uv_size":[0.125,0.75]},"up":{"uv":[28,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,28.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,8.8761,-0.1638],"size":[0.0688,0.4641,0.0516],"pivot":[-0.3094,9.4949,0.094],"rotation":[-79.9759,-3.1413,17.2244],"uv":{"north":{"uv":[17,38],"uv_size":[0.125,0.375]},"east":{"uv":[38,17],"uv_size":[0.125,0.375]},"south":{"uv":[18,38],"uv_size":[0.125,0.375]},"west":{"uv":[38,18],"uv_size":[0.125,0.375]},"up":{"uv":[29,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,8.8761,-0.2154],"size":[0.0688,0.1891,0.0516],"pivot":[-0.3094,9.4949,0.094],"rotation":[-79.9759,-3.1413,17.2244],"uv":{"north":{"uv":[30,48],"uv_size":[0.125,0.125]},"east":{"uv":[48,30],"uv_size":[0.125,0.125]},"south":{"uv":[31,48],"uv_size":[0.125,0.125]},"west":{"uv":[48,31],"uv_size":[0.125,0.125]},"up":{"uv":[32,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,32.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,10.0756,-1.293],"size":[0.1375,1.8562,0.0688],"pivot":[0,9.2506,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[20,26],"uv_size":[0.125,1.75]},"east":{"uv":[26,20],"uv_size":[0.125,1.75]},"south":{"uv":[21,26],"uv_size":[0.125,1.75]},"west":{"uv":[26,22],"uv_size":[0.125,1.75]},"up":{"uv":[33,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,33.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,10.0756,-1.3617],"size":[0.1375,1.3234,0.0688],"pivot":[0,9.2506,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[29,9],"uv_size":[0.125,1.25]},"east":{"uv":[10,29],"uv_size":[0.125,1.25]},"south":{"uv":[11,29],"uv_size":[0.125,1.25]},"west":{"uv":[12,29],"uv_size":[0.125,1.25]},"up":{"uv":[34,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,34.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,10.0756,-1.4304],"size":[0.1375,0.8078,0.0688],"pivot":[0,9.2506,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[33,12],"uv_size":[0.125,0.75]},"east":{"uv":[13,33],"uv_size":[0.125,0.75]},"south":{"uv":[33,13],"uv_size":[0.125,0.75]},"west":{"uv":[14,33],"uv_size":[0.125,0.75]},"up":{"uv":[35,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,35.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,10.0756,-1.4648],"size":[0.1375,0.3953,0.0344],"pivot":[0,9.2506,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[19,38],"uv_size":[0.125,0.375]},"east":{"uv":[38,19],"uv_size":[0.125,0.375]},"south":{"uv":[20,38],"uv_size":[0.125,0.375]},"west":{"uv":[38,20],"uv_size":[0.125,0.375]},"up":{"uv":[36,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,36.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,9.7392,1.4122],"size":[0.2406,3.3516,0.0859],"pivot":[0,9.7392,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[2,10],"uv_size":[0.25,3]},"east":{"uv":[7,20],"uv_size":[0.125,3]},"south":{"uv":[3,10],"uv_size":[0.25,3]},"west":{"uv":[8,20],"uv_size":[0.125,3]},"up":{"uv":[32,42],"uv_size":[0.25,0.125]},"down":{"uv":[42,32.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3438,10.6329,1.4122],"size":[0.0344,2.3891,0.0859],"pivot":[0,9.7392,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[24,5],"uv_size":[0.125,2.125]},"east":{"uv":[6,24],"uv_size":[0.125,2.125]},"south":{"uv":[24,8],"uv_size":[0.125,2.125]},"west":{"uv":[9,24],"uv_size":[0.125,2.125]},"up":{"uv":[37,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,37.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1891,9.8251,1.4981],"size":[0.1203,0.3094,0.3438],"pivot":[0,9.7392,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[33,42],"uv_size":[0.125,0.25]},"east":{"uv":[33,14],"uv_size":[0.375,0.25]},"south":{"uv":[42,33],"uv_size":[0.125,0.25]},"west":{"uv":[15,33],"uv_size":[0.375,0.25]},"up":{"uv":[21,38],"uv_size":[0.125,0.375]},"down":{"uv":[38,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1891,9.3047,0.9192],"size":[0.1203,0.2406,0.6188],"pivot":[-0.1289,9.3047,1.5379],"rotation":[-24.5,0,0],"uv":{"north":{"uv":[34,42],"uv_size":[0.125,0.25]},"east":{"uv":[29,12],"uv_size":[0.625,0.25]},"south":{"uv":[42,34],"uv_size":[0.125,0.25]},"west":{"uv":[13,29],"uv_size":[0.625,0.25]},"up":{"uv":[10,34],"uv_size":[0.125,0.625]},"down":{"uv":[34,10.625],"uv_size":[0.125,-0.625]}}},{"origin":[-0.1891,9.5453,1.1942],"size":[0.1203,0.0688,0.3438],"pivot":[-0.1289,9.3047,1.5379],"rotation":[-24.5,0,0],"uv":{"north":{"uv":[38,48],"uv_size":[0.125,0.125]},"east":{"uv":[22,38],"uv_size":[0.375,0.125]},"south":{"uv":[48,38],"uv_size":[0.125,0.125]},"west":{"uv":[38,22],"uv_size":[0.375,0.125]},"up":{"uv":[23,38],"uv_size":[0.125,0.375]},"down":{"uv":[38,23.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.2062,6.7829,1.3434],"size":[0.1375,6.3078,0.0688],"pivot":[0,9.7392,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[12,0],"uv_size":[0.125,5.75]},"east":{"uv":[12,6],"uv_size":[0.125,5.75]},"south":{"uv":[11,12],"uv_size":[0.125,5.75]},"west":{"uv":[12,12],"uv_size":[0.125,5.75]},"up":{"uv":[39,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,39.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,9.6531,-1.5436],"size":[0.1375,0.0688,0.1375],"pivot":[-0.1375,9.6531,-1.5436],"rotation":[-132,0,0],"uv":{"north":{"uv":[40,48],"uv_size":[0.125,0.125]},"east":{"uv":[48,40],"uv_size":[0.125,0.125]},"south":{"uv":[41,48],"uv_size":[0.125,0.125]},"west":{"uv":[48,41],"uv_size":[0.125,0.125]},"up":{"uv":[42,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,42.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,9.4362,-1.5846],"size":[0.1375,0.0688,0.1375],"pivot":[-0.1375,9.5049,-1.5846],"rotation":[-177,0,0],"uv":{"north":{"uv":[43,48],"uv_size":[0.125,0.125]},"east":{"uv":[48,43],"uv_size":[0.125,0.125]},"south":{"uv":[44,48],"uv_size":[0.125,0.125]},"west":{"uv":[48,44],"uv_size":[0.125,0.125]},"up":{"uv":[45,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,45.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,6.7829,1.4122],"size":[0.1375,1.1516,0.3438],"pivot":[0,9.7392,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[19,31],"uv_size":[0.125,1]},"east":{"uv":[20,8],"uv_size":[0.375,1]},"south":{"uv":[31,19],"uv_size":[0.125,1]},"west":{"uv":[9,20],"uv_size":[0.375,1]},"up":{"uv":[24,38],"uv_size":[0.125,0.375]},"down":{"uv":[38,24.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.2064,9.6205,1.6059],"size":[0.0689,3.3516,0.1239],"pivot":[-0.2062,9.8182,1.6059],"rotation":[-88.3322,-2.4941,56.2137],"uv":{"north":{"uv":[20,9],"uv_size":[0.125,3]},"east":{"uv":[20,12],"uv_size":[0.125,3]},"south":{"uv":[13,20],"uv_size":[0.125,3]},"west":{"uv":[14,20],"uv_size":[0.125,3]},"up":{"uv":[46,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,46.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2064,8.6598,1.6059],"size":[0.0689,0.9607,0.0652],"pivot":[-0.2062,9.8182,1.6059],"rotation":[-88.3322,-2.4941,56.2137],"uv":{"north":{"uv":[12,32],"uv_size":[0.125,0.875]},"east":{"uv":[32,12],"uv_size":[0.125,0.875]},"south":{"uv":[13,32],"uv_size":[0.125,0.875]},"west":{"uv":[32,13],"uv_size":[0.125,0.875]},"up":{"uv":[47,48],"uv_size":[0.125,0.125]},"down":{"uv":[48,47.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2064,8.1109,1.6059],"size":[0.0689,0.549,0.0316],"pivot":[-0.2062,9.8182,1.6059],"rotation":[-88.3322,-2.4941,56.2137],"uv":{"north":{"uv":[3,36],"uv_size":[0.125,0.5]},"east":{"uv":[36,3],"uv_size":[0.125,0.5]},"south":{"uv":[4,36],"uv_size":[0.125,0.5]},"west":{"uv":[36,4],"uv_size":[0.125,0.5]},"up":{"uv":[48,48],"uv_size":[0.125,0.125]},"down":{"uv":[0,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2064,7.8359,1.6059],"size":[0.0689,0.275,0.0144],"pivot":[-0.2062,9.8182,1.6059],"rotation":[-88.3322,-2.4941,56.2137],"uv":{"north":{"uv":[35,42],"uv_size":[0.125,0.25]},"east":{"uv":[42,35],"uv_size":[0.125,0.25]},"south":{"uv":[36,42],"uv_size":[0.125,0.25]},"west":{"uv":[42,36],"uv_size":[0.125,0.25]},"up":{"uv":[49,0],"uv_size":[0.125,0.125]},"down":{"uv":[1,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3247,8.7481,1.3449],"size":[0.0689,0.9625,0.0688],"pivot":[-0.2903,9.7106,1.4137],"rotation":[-91.8322,-2.4941,56.2137],"uv":{"north":{"uv":[14,32],"uv_size":[0.125,0.875]},"east":{"uv":[32,14],"uv_size":[0.125,0.875]},"south":{"uv":[15,32],"uv_size":[0.125,0.875]},"west":{"uv":[32,15],"uv_size":[0.125,0.875]},"up":{"uv":[49,1],"uv_size":[0.125,0.125]},"down":{"uv":[2,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3247,8.1981,1.3793],"size":[0.0689,0.55,0.0344],"pivot":[-0.2903,9.7106,1.4137],"rotation":[-91.8322,-2.4941,56.2137],"uv":{"north":{"uv":[5,36],"uv_size":[0.125,0.5]},"east":{"uv":[36,5],"uv_size":[0.125,0.5]},"south":{"uv":[6,36],"uv_size":[0.125,0.5]},"west":{"uv":[36,6],"uv_size":[0.125,0.5]},"up":{"uv":[49,2],"uv_size":[0.125,0.125]},"down":{"uv":[3,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3247,7.7512,1.3965],"size":[0.0689,0.4469,0.0172],"pivot":[-0.2903,9.7106,1.4137],"rotation":[-91.8322,-2.4941,56.2137],"uv":{"north":{"uv":[25,38],"uv_size":[0.125,0.375]},"east":{"uv":[38,25],"uv_size":[0.125,0.375]},"south":{"uv":[26,38],"uv_size":[0.125,0.375]},"west":{"uv":[38,26],"uv_size":[0.125,0.375]},"up":{"uv":[49,3],"uv_size":[0.125,0.125]},"down":{"uv":[4,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,9.6822,1.88],"size":[0.2406,1.0312,0.0859],"pivot":[0,9.6822,1.9659],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[25,5],"uv_size":[0.25,1]},"east":{"uv":[20,31],"uv_size":[0.125,1]},"south":{"uv":[25,6],"uv_size":[0.25,1]},"west":{"uv":[31,20],"uv_size":[0.125,1]},"up":{"uv":[37,42],"uv_size":[0.25,0.125]},"down":{"uv":[42,37.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3438,9.653,2.2571],"size":[0.0344,1.2547,0.0859],"pivot":[0,9.6874,2.343],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[30,13],"uv_size":[0.125,1.125]},"east":{"uv":[14,30],"uv_size":[0.125,1.125]},"south":{"uv":[15,30],"uv_size":[0.125,1.125]},"west":{"uv":[30,15],"uv_size":[0.125,1.125]},"up":{"uv":[49,4],"uv_size":[0.125,0.125]},"down":{"uv":[5,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3438,10.478,2.0852],"size":[0.0344,0.4297,0.1719],"pivot":[0,9.6874,2.343],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[27,38],"uv_size":[0.125,0.375]},"east":{"uv":[38,27],"uv_size":[0.125,0.375]},"south":{"uv":[28,38],"uv_size":[0.125,0.375]},"west":{"uv":[38,28],"uv_size":[0.125,0.375]},"up":{"uv":[49,5],"uv_size":[0.125,0.125]},"down":{"uv":[6,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3438,10.0483,2.1711],"size":[0.0344,0.4297,0.0859],"pivot":[0,9.6874,2.343],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[29,38],"uv_size":[0.125,0.375]},"east":{"uv":[38,29],"uv_size":[0.125,0.375]},"south":{"uv":[30,38],"uv_size":[0.125,0.375]},"west":{"uv":[38,30],"uv_size":[0.125,0.375]},"up":{"uv":[49,6],"uv_size":[0.125,0.125]},"down":{"uv":[7,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,10.0431,1.8112],"size":[0.2406,0.6703,0.0688],"pivot":[0,9.6822,1.9659],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[29,13],"uv_size":[0.25,0.625]},"east":{"uv":[11,34],"uv_size":[0.125,0.625]},"south":{"uv":[14,29],"uv_size":[0.25,0.625]},"west":{"uv":[34,11],"uv_size":[0.125,0.625]},"up":{"uv":[38,42],"uv_size":[0.25,0.125]},"down":{"uv":[42,38.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,10.4556,1.7768],"size":[0.2406,0.2578,0.0344],"pivot":[0,9.6822,1.9659],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[7,36],"uv_size":[0.25,0.25]},"east":{"uv":[39,42],"uv_size":[0.125,0.25]},"south":{"uv":[36,7],"uv_size":[0.25,0.25]},"west":{"uv":[42,39],"uv_size":[0.125,0.25]},"up":{"uv":[40,42],"uv_size":[0.25,0.125]},"down":{"uv":[42,40.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.3938,-2.2114],"size":[0.2406,0.1719,0.5156],"pivot":[0,9.5657,-1.6958],"rotation":[1.25,0,0],"uv":{"north":{"uv":[41,42],"uv_size":[0.25,0.125]},"east":{"uv":[8,36],"uv_size":[0.5,0.125]},"south":{"uv":[42,41],"uv_size":[0.25,0.125]},"west":{"uv":[36,8],"uv_size":[0.5,0.125]},"up":{"uv":[21,31],"uv_size":[0.25,0.5]},"down":{"uv":[31,21.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.2062,9.5657,-2.2114],"size":[0.1375,0.0688,0.5156],"pivot":[0,9.5657,-1.6958],"rotation":[1.25,0,0],"uv":{"north":{"uv":[49,7],"uv_size":[0.125,0.125]},"east":{"uv":[9,36],"uv_size":[0.5,0.125]},"south":{"uv":[8,49],"uv_size":[0.125,0.125]},"west":{"uv":[36,9],"uv_size":[0.5,0.125]},"up":{"uv":[10,36],"uv_size":[0.125,0.5]},"down":{"uv":[36,10.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.2062,9.4969,-1.766],"size":[0.1375,0.1375,0.0688],"pivot":[-0.1461,9.6344,-1.6973],"rotation":[23.75,0,0],"uv":{"north":{"uv":[49,8],"uv_size":[0.125,0.125]},"east":{"uv":[9,49],"uv_size":[0.125,0.125]},"south":{"uv":[49,9],"uv_size":[0.125,0.125]},"west":{"uv":[10,49],"uv_size":[0.125,0.125]},"up":{"uv":[49,10],"uv_size":[0.125,0.125]},"down":{"uv":[11,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3314,9.5618,-2.2129],"size":[0.1238,0.0667,0.5156],"pivot":[-0.2076,9.6306,-1.9551],"rotation":[1.0394,0.6944,-33.7437],"uv":{"north":{"uv":[49,11],"uv_size":[0.125,0.125]},"east":{"uv":[11,36],"uv_size":[0.5,0.125]},"south":{"uv":[12,49],"uv_size":[0.125,0.125]},"west":{"uv":[36,11],"uv_size":[0.5,0.125]},"up":{"uv":[12,36],"uv_size":[0.125,0.5]},"down":{"uv":[36,12.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.3094,9.2391,-2.2114],"size":[0.2406,0.1547,0.6875],"pivot":[0,9.5657,-1.6958],"rotation":[1.25,0,0],"uv":{"north":{"uv":[42,42],"uv_size":[0.25,0.125]},"east":{"uv":[12,34],"uv_size":[0.625,0.125]},"south":{"uv":[0,43],"uv_size":[0.25,0.125]},"west":{"uv":[34,12],"uv_size":[0.625,0.125]},"up":{"uv":[29,14],"uv_size":[0.25,0.625]},"down":{"uv":[29,15.625],"uv_size":[0.25,-0.625]}}},{"origin":[-0.3094,9.3826,-2.3488],"size":[0.2406,0.1719,0.1375],"pivot":[0,9.5544,-2.2113],"rotation":[46.25,0,0],"uv":{"north":{"uv":[43,0],"uv_size":[0.25,0.125]},"east":{"uv":[49,12],"uv_size":[0.125,0.125]},"south":{"uv":[1,43],"uv_size":[0.25,0.125]},"west":{"uv":[13,49],"uv_size":[0.125,0.125]},"up":{"uv":[43,1],"uv_size":[0.25,0.125]},"down":{"uv":[2,43.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.2833,-2.4954],"size":[0.2406,0.1719,0.1891],"pivot":[0,9.4551,-2.3064],"rotation":[90,0,0],"uv":{"north":{"uv":[43,2],"uv_size":[0.25,0.125]},"east":{"uv":[49,13],"uv_size":[0.125,0.125]},"south":{"uv":[3,43],"uv_size":[0.25,0.125]},"west":{"uv":[14,49],"uv_size":[0.125,0.125]},"up":{"uv":[43,3],"uv_size":[0.25,0.125]},"down":{"uv":[4,43.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.0942,-2.4611],"size":[0.2406,0.1719,0.1547],"pivot":[0,9.266,-2.3064],"rotation":[120,0,0],"uv":{"north":{"uv":[43,4],"uv_size":[0.25,0.125]},"east":{"uv":[49,14],"uv_size":[0.125,0.125]},"south":{"uv":[5,43],"uv_size":[0.25,0.125]},"west":{"uv":[15,49],"uv_size":[0.125,0.125]},"up":{"uv":[43,5],"uv_size":[0.25,0.125]},"down":{"uv":[6,43.125],"uv_size":[0.25,-0.125]}}}]},{"name":"octagon2","parent":"bone2","pivot":[0,9.3186,-2.0452],"rotation":[2.5,0,0],"cubes":[{"origin":[-0.3095,9.2544,-2.2001],"size":[0.0002,0.1284,0.3096],"inflate":0.001,"pivot":[0,9.3186,-2.0452],"rotation":[-45,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[43,6],"uv_size":[0.25,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[7,43],"uv_size":[0.25,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.3095,9.2544,-2.2001],"size":[0.0002,0.1284,0.5846],"inflate":0.001,"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[13,36],"uv_size":[0.5,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[36,13],"uv_size":[0.5,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[-0.3095,9.2919,-1.6156],"size":[0.0002,0.0908,0.0908],"inflate":0.001,"pivot":[0,9.3826,-1.6155],"rotation":[-45,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[49,15],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[16,49],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.3095,9.1638,-2.1094],"size":[0.0002,0.3096,0.1284],"inflate":0.001,"pivot":[0,9.3186,-2.0452],"rotation":[-45,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[43,7],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[8,43],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.3095,9.1638,-2.1094],"size":[0.0002,0.3096,0.1284],"inflate":0.001,"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[43,8],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[9,43],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.3438,9.2497,-2.1094],"size":[0.0346,0.1378,0.1377],"inflate":0.001,"pivot":[-0.3266,9.3186,-2.0406],"rotation":[-45,0,0],"uv":{"north":{"uv":[49,16],"uv_size":[0.125,0.125]},"east":{"uv":[17,49],"uv_size":[0.125,0.125]},"south":{"uv":[49,17],"uv_size":[0.125,0.125]},"west":{"uv":[18,49],"uv_size":[0.125,0.125]},"up":{"uv":[49,18],"uv_size":[0.125,0.125]},"down":{"uv":[19,49.125],"uv_size":[0.125,-0.125]}}}]},{"name":"down","parent":"weapon","pivot":[0,8.7339,-2.0194],"cubes":[{"origin":[-0.3695,8.0639,3.8672],"size":[0.7391,0.8594,0.275],"uv":{"north":{"uv":[17,16],"uv_size":[0.625,0.75]},"east":{"uv":[17,28],"uv_size":[0.25,0.75]},"south":{"uv":[17,17],"uv_size":[0.625,0.75]},"west":{"uv":[28,18],"uv_size":[0.25,0.75]},"up":{"uv":[8,30],"uv_size":[0.625,0.25]},"down":{"uv":[30,8.25],"uv_size":[0.625,-0.25]}}}]},{"name":"bone4","parent":"down","pivot":[0,9.2009,-2.229],"rotation":[0,0,-180],"cubes":[{"origin":[-0.3094,9.3092,-2.3798],"size":[0.2406,0.1685,0.1507],"pivot":[0,9.481,-2.229],"rotation":[150,0,0],"uv":{"north":{"uv":[43,9],"uv_size":[0.25,0.125]},"east":{"uv":[49,19],"uv_size":[0.125,0.125]},"south":{"uv":[10,43],"uv_size":[0.25,0.125]},"west":{"uv":[20,49],"uv_size":[0.125,0.125]},"up":{"uv":[43,10],"uv_size":[0.25,0.125]},"down":{"uv":[11,43.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.4097,-0.3952],"size":[0.2406,0.0688,4.8297],"pivot":[0,9.4097,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[43,11],"uv_size":[0.25,0.125]},"east":{"uv":[15,5],"uv_size":[4.375,0.125]},"south":{"uv":[12,43],"uv_size":[0.25,0.125]},"west":{"uv":[15,6],"uv_size":[4.375,0.125]},"up":{"uv":[2,5],"uv_size":[0.25,4.375]},"down":{"uv":[3,9.375],"uv_size":[0.25,-4.375]}}},{"origin":[-0.3093,9.4785,2.922],"size":[0.2404,0.2748,1.5123],"inflate":-0.001,"pivot":[0,9.4097,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[14,36],"uv_size":[0.25,0.25]},"east":{"uv":[22,20],"uv_size":[1.375,0.25]},"south":{"uv":[36,14],"uv_size":[0.25,0.25]},"west":{"uv":[22,21],"uv_size":[1.375,0.25]},"up":{"uv":[19,22],"uv_size":[0.25,1.375]},"down":{"uv":[22,23.375],"uv_size":[0.25,-1.375]}}},{"origin":[-0.3093,9.4785,0.8595],"size":[0.2404,0.0685,2.0623],"inflate":-0.001,"pivot":[0,9.4097,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[43,12],"uv_size":[0.25,0.125]},"east":{"uv":[26,3],"uv_size":[1.875,0.125]},"south":{"uv":[13,43],"uv_size":[0.25,0.125]},"west":{"uv":[4,26],"uv_size":[1.875,0.125]},"up":{"uv":[15,16],"uv_size":[0.25,1.875]},"down":{"uv":[16,17.875],"uv_size":[0.25,-1.875]}}},{"origin":[-0.3093,9.5473,1.7705],"size":[0.2404,0.0685,1.1514],"inflate":-0.001,"pivot":[0,9.4097,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[43,13],"uv_size":[0.25,0.125]},"east":{"uv":[31,22],"uv_size":[1,0.125]},"south":{"uv":[14,43],"uv_size":[0.25,0.125]},"west":{"uv":[31,23],"uv_size":[1,0.125]},"up":{"uv":[7,25],"uv_size":[0.25,1]},"down":{"uv":[25,8],"uv_size":[0.25,-1]}}},{"origin":[-0.3093,9.616,2.6642],"size":[0.2404,0.017,0.2576],"inflate":-0.001,"pivot":[0,9.4097,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[43,14],"uv_size":[0.25,0.125]},"east":{"uv":[15,43],"uv_size":[0.25,0.125]},"south":{"uv":[43,15],"uv_size":[0.25,0.125]},"west":{"uv":[16,43],"uv_size":[0.25,0.125]},"up":{"uv":[15,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3102,9.4097,-2.0968],"size":[0.2406,0.1719,1.7016],"pivot":[-0.0003,9.4097,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[43,16],"uv_size":[0.25,0.125]},"east":{"uv":[4,28],"uv_size":[1.5,0.125]},"south":{"uv":[17,43],"uv_size":[0.25,0.125]},"west":{"uv":[28,4],"uv_size":[1.5,0.125]},"up":{"uv":[15,20],"uv_size":[0.25,1.5]},"down":{"uv":[16,21.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.3094,9.5644,-0.7218],"size":[0.2406,0.0859,0.3609],"pivot":[0,9.4097,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[43,17],"uv_size":[0.25,0.125]},"east":{"uv":[31,38],"uv_size":[0.375,0.125]},"south":{"uv":[18,43],"uv_size":[0.25,0.125]},"west":{"uv":[38,31],"uv_size":[0.375,0.125]},"up":{"uv":[33,15],"uv_size":[0.25,0.375]},"down":{"uv":[16,33.375],"uv_size":[0.25,-0.375]}}},{"origin":[-0.3094,9.5488,-0.3994],"size":[0.2406,0.0688,0.3094],"pivot":[0,9.6175,-0.3994],"rotation":[-18.75,0,0],"uv":{"north":{"uv":[43,18],"uv_size":[0.25,0.125]},"east":{"uv":[19,43],"uv_size":[0.25,0.125]},"south":{"uv":[43,19],"uv_size":[0.25,0.125]},"west":{"uv":[20,43],"uv_size":[0.25,0.125]},"up":{"uv":[16,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3095,9.4492,-0.1065],"size":[0.2408,0.0689,4.7439],"inflate":0.001,"pivot":[0,9.5181,-0.1064],"rotation":[5.5,0,0],"uv":{"north":{"uv":[43,20],"uv_size":[0.25,0.125]},"east":{"uv":[15,7],"uv_size":[4.375,0.125]},"south":{"uv":[21,43],"uv_size":[0.25,0.125]},"west":{"uv":[15,8],"uv_size":[4.375,0.125]},"up":{"uv":[4,5],"uv_size":[0.25,4.375]},"down":{"uv":[5,9.375],"uv_size":[0.25,-4.375]}}},{"origin":[-0.3438,9.5064,3.5525],"size":[0.0344,0.2578,1.0484],"pivot":[0,9.5752,-0.1428],"rotation":[5.5,0,0],"uv":{"north":{"uv":[43,21],"uv_size":[0.125,0.25]},"east":{"uv":[8,25],"uv_size":[1,0.25]},"south":{"uv":[22,43],"uv_size":[0.125,0.25]},"west":{"uv":[25,8],"uv_size":[1,0.25]},"up":{"uv":[31,24],"uv_size":[0.125,1]},"down":{"uv":[25,32],"uv_size":[0.125,-1]}}},{"origin":[-0.3781,9.9341,3.5647],"size":[0.0344,0.0859,0.0859],"pivot":[-0.3609,9.9856,3.5991],"rotation":[-39.5,0,0],"uv":{"north":{"uv":[49,20],"uv_size":[0.125,0.125]},"east":{"uv":[21,49],"uv_size":[0.125,0.125]},"south":{"uv":[49,21],"uv_size":[0.125,0.125]},"west":{"uv":[22,49],"uv_size":[0.125,0.125]},"up":{"uv":[49,22],"uv_size":[0.125,0.125]},"down":{"uv":[23,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3781,9.9512,3.7709],"size":[0.0344,0.0859,0.0859],"pivot":[-0.3609,10.0028,3.8053],"rotation":[-39.5,0,0],"uv":{"north":{"uv":[49,23],"uv_size":[0.125,0.125]},"east":{"uv":[24,49],"uv_size":[0.125,0.125]},"south":{"uv":[49,24],"uv_size":[0.125,0.125]},"west":{"uv":[25,49],"uv_size":[0.125,0.125]},"up":{"uv":[49,25],"uv_size":[0.125,0.125]},"down":{"uv":[26,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,9.9043,4.5744],"size":[0.2406,0.3815,0.0476],"pivot":[0,9.9043,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[33,16],"uv_size":[0.25,0.375]},"east":{"uv":[32,38],"uv_size":[0.125,0.375]},"south":{"uv":[17,33],"uv_size":[0.25,0.375]},"west":{"uv":[38,32],"uv_size":[0.125,0.375]},"up":{"uv":[43,22],"uv_size":[0.25,0.125]},"down":{"uv":[23,43.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1547,9.5949,4.6221],"size":[0.0859,0.4159,0.0688],"pivot":[0,9.9043,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[33,38],"uv_size":[0.125,0.375]},"east":{"uv":[38,33],"uv_size":[0.125,0.375]},"south":{"uv":[34,38],"uv_size":[0.125,0.375]},"west":{"uv":[38,34],"uv_size":[0.125,0.375]},"up":{"uv":[49,26],"uv_size":[0.125,0.125]},"down":{"uv":[27,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1547,9.8973,4.5953],"size":[0.0859,0.0688,0.1375],"pivot":[-0.1117,9.9661,4.7328],"rotation":[-58,0,0],"uv":{"north":{"uv":[49,27],"uv_size":[0.125,0.125]},"east":{"uv":[28,49],"uv_size":[0.125,0.125]},"south":{"uv":[49,28],"uv_size":[0.125,0.125]},"west":{"uv":[29,49],"uv_size":[0.125,0.125]},"up":{"uv":[49,29],"uv_size":[0.125,0.125]},"down":{"uv":[30,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1547,9.4786,4.4688],"size":[0.0859,0.1203,0.0688],"pivot":[-0.1117,9.5989,4.5375],"rotation":[-66,0,0],"uv":{"north":{"uv":[49,30],"uv_size":[0.125,0.125]},"east":{"uv":[31,49],"uv_size":[0.125,0.125]},"south":{"uv":[49,31],"uv_size":[0.125,0.125]},"west":{"uv":[32,49],"uv_size":[0.125,0.125]},"up":{"uv":[49,32],"uv_size":[0.125,0.125]},"down":{"uv":[33,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3438,9.9695,4.5058],"size":[0.0344,0.3128,0.0476],"pivot":[0,9.9007,4.5534],"rotation":[-28,0,0],"uv":{"north":{"uv":[43,23],"uv_size":[0.125,0.25]},"east":{"uv":[24,43],"uv_size":[0.125,0.25]},"south":{"uv":[43,24],"uv_size":[0.125,0.25]},"west":{"uv":[25,43],"uv_size":[0.125,0.25]},"up":{"uv":[49,33],"uv_size":[0.125,0.125]},"down":{"uv":[34,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3438,9.9695,4.437],"size":[0.0344,0.244,0.0688],"pivot":[0,9.9007,4.5534],"rotation":[-28,0,0],"uv":{"north":{"uv":[43,25],"uv_size":[0.125,0.25]},"east":{"uv":[26,43],"uv_size":[0.125,0.25]},"south":{"uv":[43,26],"uv_size":[0.125,0.25]},"west":{"uv":[27,43],"uv_size":[0.125,0.25]},"up":{"uv":[49,34],"uv_size":[0.125,0.125]},"down":{"uv":[35,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3093,9.5091,4.437],"size":[0.2404,0.3951,0.1849],"inflate":-0.001,"pivot":[0,9.9043,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[33,17],"uv_size":[0.25,0.375]},"east":{"uv":[35,38],"uv_size":[0.125,0.375]},"south":{"uv":[18,33],"uv_size":[0.25,0.375]},"west":{"uv":[38,35],"uv_size":[0.125,0.375]},"up":{"uv":[43,27],"uv_size":[0.25,0.125]},"down":{"uv":[28,43.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.9043,4.4541],"size":[0.2406,0.2956,0.1203],"pivot":[0,9.9043,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[17,36],"uv_size":[0.25,0.25]},"east":{"uv":[43,28],"uv_size":[0.125,0.25]},"south":{"uv":[36,17],"uv_size":[0.25,0.25]},"west":{"uv":[29,43],"uv_size":[0.125,0.25]},"up":{"uv":[43,29],"uv_size":[0.25,0.125]},"down":{"uv":[30,43.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.5181,2.9186],"size":[0.2406,0.275,1.7188],"pivot":[0,9.5181,-0.1064],"rotation":[5.5,0,0],"uv":{"north":{"uv":[18,36],"uv_size":[0.25,0.25]},"east":{"uv":[20,15],"uv_size":[1.5,0.25]},"south":{"uv":[36,18],"uv_size":[0.25,0.25]},"west":{"uv":[20,17],"uv_size":[1.5,0.25]},"up":{"uv":[17,20],"uv_size":[0.25,1.5]},"down":{"uv":[20,19.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.3094,9.7487,2.2028],"size":[0.2406,0.825,0.0859],"pivot":[0,9.7487,2.2887],"rotation":[65.5,0,0],"uv":{"north":{"uv":[28,5],"uv_size":[0.25,0.75]},"east":{"uv":[33,18],"uv_size":[0.125,0.75]},"south":{"uv":[6,28],"uv_size":[0.25,0.75]},"west":{"uv":[19,33],"uv_size":[0.125,0.75]},"up":{"uv":[43,30],"uv_size":[0.25,0.125]},"down":{"uv":[31,43.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.5666,1.6027],"size":[0.0688,0.825,0.275],"pivot":[-0.3094,9.8416,1.8777],"rotation":[67.9898,-11.0394,-25.3467],"uv":{"north":{"uv":[33,19],"uv_size":[0.125,0.75]},"east":{"uv":[28,6],"uv_size":[0.25,0.75]},"south":{"uv":[20,33],"uv_size":[0.125,0.75]},"west":{"uv":[7,28],"uv_size":[0.25,0.75]},"up":{"uv":[43,31],"uv_size":[0.125,0.25]},"down":{"uv":[32,43.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.3094,10.3916,1.6027],"size":[0.0688,0.2062,0.1891],"pivot":[-0.3094,9.8416,1.8777],"rotation":[67.9898,-11.0394,-25.3467],"uv":{"north":{"uv":[43,32],"uv_size":[0.125,0.25]},"east":{"uv":[33,43],"uv_size":[0.125,0.25]},"south":{"uv":[43,33],"uv_size":[0.125,0.25]},"west":{"uv":[34,43],"uv_size":[0.125,0.25]},"up":{"uv":[49,35],"uv_size":[0.125,0.125]},"down":{"uv":[36,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,9.9625,1.8195],"size":[0.2406,0.1719,0.0688],"pivot":[0,9.9625,1.8195],"rotation":[65.5,0,0],"uv":{"north":{"uv":[43,34],"uv_size":[0.25,0.125]},"east":{"uv":[49,36],"uv_size":[0.125,0.125]},"south":{"uv":[35,43],"uv_size":[0.25,0.125]},"west":{"uv":[37,49],"uv_size":[0.125,0.125]},"up":{"uv":[43,35],"uv_size":[0.25,0.125]},"down":{"uv":[36,43.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.5144,-0.3994],"size":[0.2406,0.0344,0.1719],"pivot":[0,9.6175,-0.3994],"rotation":[-18.75,0,0],"uv":{"north":{"uv":[43,36],"uv_size":[0.25,0.125]},"east":{"uv":[49,37],"uv_size":[0.125,0.125]},"south":{"uv":[37,43],"uv_size":[0.25,0.125]},"west":{"uv":[38,49],"uv_size":[0.125,0.125]},"up":{"uv":[43,37],"uv_size":[0.25,0.125]},"down":{"uv":[38,43.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.4276,-1.7914],"size":[0.2406,0.1719,0.5672],"pivot":[0,9.5995,-1.2242],"rotation":[-33.75,0,0],"uv":{"north":{"uv":[43,38],"uv_size":[0.25,0.125]},"east":{"uv":[19,36],"uv_size":[0.5,0.125]},"south":{"uv":[39,43],"uv_size":[0.25,0.125]},"west":{"uv":[36,19],"uv_size":[0.5,0.125]},"up":{"uv":[31,25],"uv_size":[0.25,0.5]},"down":{"uv":[26,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3052,9.7571,-1.6657],"size":[0.0646,0.188,0.4893],"pivot":[-0.3094,9.7571,-1.46],"rotation":[-29.538,17.122,27.4546],"uv":{"north":{"uv":[49,38],"uv_size":[0.125,0.125]},"east":{"uv":[20,36],"uv_size":[0.5,0.125]},"south":{"uv":[39,49],"uv_size":[0.125,0.125]},"west":{"uv":[36,20],"uv_size":[0.5,0.125]},"up":{"uv":[21,36],"uv_size":[0.125,0.5]},"down":{"uv":[36,21.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.3052,9.7571,-1.7314],"size":[0.0646,0.0292,0.0658],"pivot":[-0.3094,9.7571,-1.46],"rotation":[-29.538,17.122,27.4546],"uv":{"north":{"uv":[49,39],"uv_size":[0.125,0.125]},"east":{"uv":[40,49],"uv_size":[0.125,0.125]},"south":{"uv":[49,40],"uv_size":[0.125,0.125]},"west":{"uv":[41,49],"uv_size":[0.125,0.125]},"up":{"uv":[49,41],"uv_size":[0.125,0.125]},"down":{"uv":[42,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,9.8302,-1.5436],"size":[0.0688,0.1719,0.0688],"pivot":[-0.2062,10.0021,-1.5436],"rotation":[-52.038,17.122,27.4546],"uv":{"north":{"uv":[49,42],"uv_size":[0.125,0.125]},"east":{"uv":[43,49],"uv_size":[0.125,0.125]},"south":{"uv":[49,43],"uv_size":[0.125,0.125]},"west":{"uv":[44,49],"uv_size":[0.125,0.125]},"up":{"uv":[49,44],"uv_size":[0.125,0.125]},"down":{"uv":[45,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,9.5995,-1.2242],"size":[0.2406,2.6812,0.0859],"pivot":[0,9.5995,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[14,0],"uv_size":[0.25,2.5]},"east":{"uv":[16,23],"uv_size":[0.125,2.5]},"south":{"uv":[14,3],"uv_size":[0.25,2.5]},"west":{"uv":[17,23],"uv_size":[0.125,2.5]},"up":{"uv":[43,39],"uv_size":[0.25,0.125]},"down":{"uv":[40,43.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,8.5032,-0.2498],"size":[0.0688,0.7219,0.3438],"pivot":[-0.3094,9.8438,0.094],"rotation":[-79.9759,-3.1413,17.2244],"uv":{"north":{"uv":[13,34],"uv_size":[0.125,0.625]},"east":{"uv":[26,4],"uv_size":[0.375,0.625]},"south":{"uv":[34,13],"uv_size":[0.125,0.625]},"west":{"uv":[26,5],"uv_size":[0.375,0.625]},"up":{"uv":[36,38],"uv_size":[0.125,0.375]},"down":{"uv":[38,36.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.311,9.5893,-1.5833],"size":[0.0688,0.1375,0.3609],"pivot":[-0.2766,9.5893,-1.2223],"rotation":[-62.4759,-3.1413,17.2244],"uv":{"north":{"uv":[49,45],"uv_size":[0.125,0.125]},"east":{"uv":[37,38],"uv_size":[0.375,0.125]},"south":{"uv":[46,49],"uv_size":[0.125,0.125]},"west":{"uv":[38,37],"uv_size":[0.375,0.125]},"up":{"uv":[38,38],"uv_size":[0.125,0.375]},"down":{"uv":[0,39.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.206,10.0534,-0.5742],"size":[0,1.9937,0.0516],"pivot":[-0.206,10.0534,-0.5742],"rotation":[-89.9759,-3.1413,17.2244],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.875]},"east":{"uv":[26,6],"uv_size":[0.125,1.875]},"south":{"uv":[0,0],"uv_size":[0,1.875]},"west":{"uv":[7,26],"uv_size":[0.125,1.875]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.3094,9.2251,0.0424],"size":[0.0688,1.65,0.0516],"pivot":[-0.3094,9.8438,0.094],"rotation":[-79.9759,-3.1413,17.2244],"uv":{"north":{"uv":[28,7],"uv_size":[0.125,1.5]},"east":{"uv":[8,28],"uv_size":[0.125,1.5]},"south":{"uv":[9,28],"uv_size":[0.125,1.5]},"west":{"uv":[28,9],"uv_size":[0.125,1.5]},"up":{"uv":[49,46],"uv_size":[0.125,0.125]},"down":{"uv":[47,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,9.2251,-0.0092],"size":[0.0688,1.3406,0.0516],"pivot":[-0.3094,9.8438,0.094],"rotation":[-79.9759,-3.1413,17.2244],"uv":{"north":{"uv":[29,16],"uv_size":[0.125,1.25]},"east":{"uv":[17,29],"uv_size":[0.125,1.25]},"south":{"uv":[18,29],"uv_size":[0.125,1.25]},"west":{"uv":[29,18],"uv_size":[0.125,1.25]},"up":{"uv":[49,47],"uv_size":[0.125,0.125]},"down":{"uv":[48,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,9.2251,-0.0607],"size":[0.0688,1.0484,0.0516],"pivot":[-0.3094,9.8438,0.094],"rotation":[-79.9759,-3.1413,17.2244],"uv":{"north":{"uv":[31,26],"uv_size":[0.125,1]},"east":{"uv":[27,31],"uv_size":[0.125,1]},"south":{"uv":[31,27],"uv_size":[0.125,1]},"west":{"uv":[28,31],"uv_size":[0.125,1]},"up":{"uv":[49,48],"uv_size":[0.125,0.125]},"down":{"uv":[49,49.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,9.2251,-0.1123],"size":[0.0688,0.7734,0.0516],"pivot":[-0.3094,9.8438,0.094],"rotation":[-79.9759,-3.1413,17.2244],"uv":{"north":{"uv":[33,20],"uv_size":[0.125,0.75]},"east":{"uv":[21,33],"uv_size":[0.125,0.75]},"south":{"uv":[33,21],"uv_size":[0.125,0.75]},"west":{"uv":[22,33],"uv_size":[0.125,0.75]},"up":{"uv":[0,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,0.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,9.2251,-0.1638],"size":[0.0688,0.4641,0.0516],"pivot":[-0.3094,9.8438,0.094],"rotation":[-79.9759,-3.1413,17.2244],"uv":{"north":{"uv":[39,0],"uv_size":[0.125,0.375]},"east":{"uv":[1,39],"uv_size":[0.125,0.375]},"south":{"uv":[39,1],"uv_size":[0.125,0.375]},"west":{"uv":[2,39],"uv_size":[0.125,0.375]},"up":{"uv":[1,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,1.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,9.2251,-0.2154],"size":[0.0688,0.1891,0.0516],"pivot":[-0.3094,9.8438,0.094],"rotation":[-79.9759,-3.1413,17.2244],"uv":{"north":{"uv":[2,50],"uv_size":[0.125,0.125]},"east":{"uv":[50,2],"uv_size":[0.125,0.125]},"south":{"uv":[3,50],"uv_size":[0.125,0.125]},"west":{"uv":[50,3],"uv_size":[0.125,0.125]},"up":{"uv":[4,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,4.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,10.4245,-1.293],"size":[0.1375,1.8562,0.0688],"pivot":[0,9.5995,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[23,26],"uv_size":[0.125,1.75]},"east":{"uv":[24,26],"uv_size":[0.125,1.75]},"south":{"uv":[25,26],"uv_size":[0.125,1.75]},"west":{"uv":[26,25],"uv_size":[0.125,1.75]},"up":{"uv":[5,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,5.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,10.4245,-1.3617],"size":[0.1375,1.3234,0.0688],"pivot":[0,9.5995,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[19,29],"uv_size":[0.125,1.25]},"east":{"uv":[20,29],"uv_size":[0.125,1.25]},"south":{"uv":[29,20],"uv_size":[0.125,1.25]},"west":{"uv":[21,29],"uv_size":[0.125,1.25]},"up":{"uv":[6,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,6.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,10.4245,-1.4304],"size":[0.1375,0.8078,0.0688],"pivot":[0,9.5995,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[33,22],"uv_size":[0.125,0.75]},"east":{"uv":[23,33],"uv_size":[0.125,0.75]},"south":{"uv":[33,23],"uv_size":[0.125,0.75]},"west":{"uv":[24,33],"uv_size":[0.125,0.75]},"up":{"uv":[7,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,7.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,10.4245,-1.4648],"size":[0.1375,0.3953,0.0344],"pivot":[0,9.5995,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[39,2],"uv_size":[0.125,0.375]},"east":{"uv":[3,39],"uv_size":[0.125,0.375]},"south":{"uv":[39,3],"uv_size":[0.125,0.375]},"west":{"uv":[4,39],"uv_size":[0.125,0.375]},"up":{"uv":[8,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,8.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,10.0881,1.4122],"size":[0.2406,3.3516,0.0859],"pivot":[0,10.0881,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[4,10],"uv_size":[0.25,3]},"east":{"uv":[20,20],"uv_size":[0.125,3]},"south":{"uv":[5,10],"uv_size":[0.25,3]},"west":{"uv":[0,21],"uv_size":[0.125,3]},"up":{"uv":[43,40],"uv_size":[0.25,0.125]},"down":{"uv":[41,43.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3438,10.9819,1.4122],"size":[0.0344,2.3891,0.0859],"pivot":[0,10.0881,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[24,11],"uv_size":[0.125,2.125]},"east":{"uv":[12,24],"uv_size":[0.125,2.125]},"south":{"uv":[24,14],"uv_size":[0.125,2.125]},"west":{"uv":[15,24],"uv_size":[0.125,2.125]},"up":{"uv":[9,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,9.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1891,10.1741,1.4981],"size":[0.1203,0.3094,0.3438],"pivot":[0,10.0881,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[43,41],"uv_size":[0.125,0.25]},"east":{"uv":[33,24],"uv_size":[0.375,0.25]},"south":{"uv":[42,43],"uv_size":[0.125,0.25]},"west":{"uv":[25,33],"uv_size":[0.375,0.25]},"up":{"uv":[39,4],"uv_size":[0.125,0.375]},"down":{"uv":[5,39.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1891,9.6536,0.9192],"size":[0.1203,0.2406,0.6188],"pivot":[-0.1289,9.6536,1.5379],"rotation":[-24.5,0,0],"uv":{"north":{"uv":[43,42],"uv_size":[0.125,0.25]},"east":{"uv":[22,29],"uv_size":[0.625,0.25]},"south":{"uv":[43,43],"uv_size":[0.125,0.25]},"west":{"uv":[29,22],"uv_size":[0.625,0.25]},"up":{"uv":[14,34],"uv_size":[0.125,0.625]},"down":{"uv":[34,14.625],"uv_size":[0.125,-0.625]}}},{"origin":[-0.1891,9.8943,1.1942],"size":[0.1203,0.0688,0.3438],"pivot":[-0.1289,9.6536,1.5379],"rotation":[-24.5,0,0],"uv":{"north":{"uv":[10,50],"uv_size":[0.125,0.125]},"east":{"uv":[39,5],"uv_size":[0.375,0.125]},"south":{"uv":[50,10],"uv_size":[0.125,0.125]},"west":{"uv":[6,39],"uv_size":[0.375,0.125]},"up":{"uv":[39,6],"uv_size":[0.125,0.375]},"down":{"uv":[7,39.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.2062,7.1319,1.3434],"size":[0.1375,6.3078,0.0688],"pivot":[0,10.0881,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[0,13],"uv_size":[0.125,5.75]},"east":{"uv":[13,0],"uv_size":[0.125,5.75]},"south":{"uv":[1,13],"uv_size":[0.125,5.75]},"west":{"uv":[2,13],"uv_size":[0.125,5.75]},"up":{"uv":[11,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,11.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,10.0021,-1.5436],"size":[0.1375,0.0688,0.1375],"pivot":[-0.1375,10.0021,-1.5436],"rotation":[-132,0,0],"uv":{"north":{"uv":[12,50],"uv_size":[0.125,0.125]},"east":{"uv":[50,12],"uv_size":[0.125,0.125]},"south":{"uv":[13,50],"uv_size":[0.125,0.125]},"west":{"uv":[50,13],"uv_size":[0.125,0.125]},"up":{"uv":[14,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,14.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,9.7851,-1.5846],"size":[0.1375,0.0688,0.1375],"pivot":[-0.1375,9.8539,-1.5846],"rotation":[-177,0,0],"uv":{"north":{"uv":[15,50],"uv_size":[0.125,0.125]},"east":{"uv":[50,15],"uv_size":[0.125,0.125]},"south":{"uv":[16,50],"uv_size":[0.125,0.125]},"west":{"uv":[50,16],"uv_size":[0.125,0.125]},"up":{"uv":[17,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,17.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2062,7.1319,1.4122],"size":[0.1375,1.1516,0.3438],"pivot":[0,10.0881,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[31,28],"uv_size":[0.125,1]},"east":{"uv":[21,0],"uv_size":[0.375,1]},"south":{"uv":[29,31],"uv_size":[0.125,1]},"west":{"uv":[1,21],"uv_size":[0.375,1]},"up":{"uv":[39,7],"uv_size":[0.125,0.375]},"down":{"uv":[8,39.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.2064,9.9695,1.6059],"size":[0.0689,3.3516,0.1239],"pivot":[-0.2062,10.1671,1.6059],"rotation":[-88.3322,-2.4941,56.2137],"uv":{"north":{"uv":[21,1],"uv_size":[0.125,3]},"east":{"uv":[2,21],"uv_size":[0.125,3]},"south":{"uv":[3,21],"uv_size":[0.125,3]},"west":{"uv":[6,21],"uv_size":[0.125,3]},"up":{"uv":[18,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,18.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2064,9.0088,1.6059],"size":[0.0689,0.9607,0.0652],"pivot":[-0.2062,10.1671,1.6059],"rotation":[-88.3322,-2.4941,56.2137],"uv":{"north":{"uv":[16,32],"uv_size":[0.125,0.875]},"east":{"uv":[32,16],"uv_size":[0.125,0.875]},"south":{"uv":[17,32],"uv_size":[0.125,0.875]},"west":{"uv":[32,17],"uv_size":[0.125,0.875]},"up":{"uv":[19,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,19.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2064,8.4598,1.6059],"size":[0.0689,0.549,0.0316],"pivot":[-0.2062,10.1671,1.6059],"rotation":[-88.3322,-2.4941,56.2137],"uv":{"north":{"uv":[22,36],"uv_size":[0.125,0.5]},"east":{"uv":[36,22],"uv_size":[0.125,0.5]},"south":{"uv":[23,36],"uv_size":[0.125,0.5]},"west":{"uv":[36,23],"uv_size":[0.125,0.5]},"up":{"uv":[20,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,20.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2064,8.1848,1.6059],"size":[0.0689,0.275,0.0144],"pivot":[-0.2062,10.1671,1.6059],"rotation":[-88.3322,-2.4941,56.2137],"uv":{"north":{"uv":[0,44],"uv_size":[0.125,0.25]},"east":{"uv":[44,0],"uv_size":[0.125,0.25]},"south":{"uv":[1,44],"uv_size":[0.125,0.25]},"west":{"uv":[44,1],"uv_size":[0.125,0.25]},"up":{"uv":[21,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,21.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3247,9.097,1.3449],"size":[0.0689,0.9625,0.0688],"pivot":[-0.2903,10.0595,1.4137],"rotation":[-91.8322,-2.4941,56.2137],"uv":{"north":{"uv":[18,32],"uv_size":[0.125,0.875]},"east":{"uv":[32,18],"uv_size":[0.125,0.875]},"south":{"uv":[19,32],"uv_size":[0.125,0.875]},"west":{"uv":[32,19],"uv_size":[0.125,0.875]},"up":{"uv":[22,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,22.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3247,8.547,1.3793],"size":[0.0689,0.55,0.0344],"pivot":[-0.2903,10.0595,1.4137],"rotation":[-91.8322,-2.4941,56.2137],"uv":{"north":{"uv":[24,36],"uv_size":[0.125,0.5]},"east":{"uv":[36,24],"uv_size":[0.125,0.5]},"south":{"uv":[25,36],"uv_size":[0.125,0.5]},"west":{"uv":[36,25],"uv_size":[0.125,0.5]},"up":{"uv":[23,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,23.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3247,8.1002,1.3965],"size":[0.0689,0.4469,0.0172],"pivot":[-0.2903,10.0595,1.4137],"rotation":[-91.8322,-2.4941,56.2137],"uv":{"north":{"uv":[39,8],"uv_size":[0.125,0.375]},"east":{"uv":[9,39],"uv_size":[0.125,0.375]},"south":{"uv":[39,9],"uv_size":[0.125,0.375]},"west":{"uv":[10,39],"uv_size":[0.125,0.375]},"up":{"uv":[24,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,24.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,10.0311,1.88],"size":[0.2406,1.0312,0.0859],"pivot":[0,10.0311,1.9659],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[25,9],"uv_size":[0.25,1]},"east":{"uv":[31,29],"uv_size":[0.125,1]},"south":{"uv":[10,25],"uv_size":[0.25,1]},"west":{"uv":[30,31],"uv_size":[0.125,1]},"up":{"uv":[2,44],"uv_size":[0.25,0.125]},"down":{"uv":[44,2.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3438,10.0019,2.2571],"size":[0.0344,1.2547,0.0859],"pivot":[0,10.0363,2.343],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[16,30],"uv_size":[0.125,1.125]},"east":{"uv":[30,17],"uv_size":[0.125,1.125]},"south":{"uv":[30,19],"uv_size":[0.125,1.125]},"west":{"uv":[30,21],"uv_size":[0.125,1.125]},"up":{"uv":[25,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,25.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3438,10.8269,2.0852],"size":[0.0344,0.4297,0.1719],"pivot":[0,10.0363,2.343],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[39,10],"uv_size":[0.125,0.375]},"east":{"uv":[11,39],"uv_size":[0.125,0.375]},"south":{"uv":[39,11],"uv_size":[0.125,0.375]},"west":{"uv":[12,39],"uv_size":[0.125,0.375]},"up":{"uv":[26,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,26.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3438,10.3972,2.1711],"size":[0.0344,0.4297,0.0859],"pivot":[0,10.0363,2.343],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[39,12],"uv_size":[0.125,0.375]},"east":{"uv":[13,39],"uv_size":[0.125,0.375]},"south":{"uv":[39,13],"uv_size":[0.125,0.375]},"west":{"uv":[14,39],"uv_size":[0.125,0.375]},"up":{"uv":[27,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,27.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3094,10.392,1.8112],"size":[0.2406,0.6703,0.0688],"pivot":[0,10.0311,1.9659],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[23,29],"uv_size":[0.25,0.625]},"east":{"uv":[15,34],"uv_size":[0.125,0.625]},"south":{"uv":[29,23],"uv_size":[0.25,0.625]},"west":{"uv":[34,15],"uv_size":[0.125,0.625]},"up":{"uv":[3,44],"uv_size":[0.25,0.125]},"down":{"uv":[44,3.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,10.8046,1.7768],"size":[0.2406,0.2578,0.0344],"pivot":[0,10.0311,1.9659],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[26,36],"uv_size":[0.25,0.25]},"east":{"uv":[4,44],"uv_size":[0.125,0.25]},"south":{"uv":[36,26],"uv_size":[0.25,0.25]},"west":{"uv":[44,4],"uv_size":[0.125,0.25]},"up":{"uv":[5,44],"uv_size":[0.25,0.125]},"down":{"uv":[44,5.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.7428,-2.2114],"size":[0.2406,0.1719,0.5156],"pivot":[0,9.9146,-1.6958],"rotation":[1.25,0,0],"uv":{"north":{"uv":[6,44],"uv_size":[0.25,0.125]},"east":{"uv":[27,36],"uv_size":[0.5,0.125]},"south":{"uv":[44,6],"uv_size":[0.25,0.125]},"west":{"uv":[36,27],"uv_size":[0.5,0.125]},"up":{"uv":[31,30],"uv_size":[0.25,0.5]},"down":{"uv":[31,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.2062,9.9146,-2.2114],"size":[0.1375,0.0688,0.5156],"pivot":[0,9.9146,-1.6958],"rotation":[1.25,0,0],"uv":{"north":{"uv":[28,50],"uv_size":[0.125,0.125]},"east":{"uv":[28,36],"uv_size":[0.5,0.125]},"south":{"uv":[50,28],"uv_size":[0.125,0.125]},"west":{"uv":[36,28],"uv_size":[0.5,0.125]},"up":{"uv":[29,36],"uv_size":[0.125,0.5]},"down":{"uv":[36,29.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.2062,9.8459,-1.766],"size":[0.1375,0.1375,0.0688],"pivot":[-0.1461,9.9834,-1.6973],"rotation":[23.75,0,0],"uv":{"north":{"uv":[29,50],"uv_size":[0.125,0.125]},"east":{"uv":[50,29],"uv_size":[0.125,0.125]},"south":{"uv":[30,50],"uv_size":[0.125,0.125]},"west":{"uv":[50,30],"uv_size":[0.125,0.125]},"up":{"uv":[31,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,31.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3314,9.9108,-2.2129],"size":[0.1238,0.0667,0.5156],"pivot":[-0.2076,9.9795,-1.9551],"rotation":[1.0394,0.6944,-33.7437],"uv":{"north":{"uv":[32,50],"uv_size":[0.125,0.125]},"east":{"uv":[30,36],"uv_size":[0.5,0.125]},"south":{"uv":[50,32],"uv_size":[0.125,0.125]},"west":{"uv":[36,30],"uv_size":[0.5,0.125]},"up":{"uv":[31,36],"uv_size":[0.125,0.5]},"down":{"uv":[36,31.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.3094,9.5881,-2.2114],"size":[0.2406,0.1547,0.6875],"pivot":[0,9.9146,-1.6958],"rotation":[1.25,0,0],"uv":{"north":{"uv":[7,44],"uv_size":[0.25,0.125]},"east":{"uv":[16,34],"uv_size":[0.625,0.125]},"south":{"uv":[44,7],"uv_size":[0.25,0.125]},"west":{"uv":[34,16],"uv_size":[0.625,0.125]},"up":{"uv":[24,29],"uv_size":[0.25,0.625]},"down":{"uv":[29,24.625],"uv_size":[0.25,-0.625]}}},{"origin":[-0.3094,9.7315,-2.3488],"size":[0.2406,0.1719,0.1375],"pivot":[0,9.9034,-2.2113],"rotation":[46.25,0,0],"uv":{"north":{"uv":[8,44],"uv_size":[0.25,0.125]},"east":{"uv":[33,50],"uv_size":[0.125,0.125]},"south":{"uv":[44,8],"uv_size":[0.25,0.125]},"west":{"uv":[50,33],"uv_size":[0.125,0.125]},"up":{"uv":[9,44],"uv_size":[0.25,0.125]},"down":{"uv":[44,9.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.6322,-2.4954],"size":[0.2406,0.1719,0.1891],"pivot":[0,9.8041,-2.3064],"rotation":[90,0,0],"uv":{"north":{"uv":[10,44],"uv_size":[0.25,0.125]},"east":{"uv":[34,50],"uv_size":[0.125,0.125]},"south":{"uv":[44,10],"uv_size":[0.25,0.125]},"west":{"uv":[50,34],"uv_size":[0.125,0.125]},"up":{"uv":[11,44],"uv_size":[0.25,0.125]},"down":{"uv":[44,11.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.3094,9.4431,-2.4611],"size":[0.2406,0.1719,0.1547],"pivot":[0,9.615,-2.3064],"rotation":[120,0,0],"uv":{"north":{"uv":[12,44],"uv_size":[0.25,0.125]},"east":{"uv":[35,50],"uv_size":[0.125,0.125]},"south":{"uv":[44,12],"uv_size":[0.25,0.125]},"west":{"uv":[50,35],"uv_size":[0.125,0.125]},"up":{"uv":[13,44],"uv_size":[0.25,0.125]},"down":{"uv":[44,13.125],"uv_size":[0.25,-0.125]}}}]},{"name":"octagon4","parent":"bone4","pivot":[0,9.0144,-2.0452],"rotation":[-2.5,0,0],"cubes":[{"origin":[-0.3095,9.6033,-2.2001],"size":[0.0002,0.1284,0.3096],"inflate":0.001,"pivot":[0,9.6675,-2.0452],"rotation":[-45,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[14,44],"uv_size":[0.25,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[44,14],"uv_size":[0.25,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.3095,9.6033,-2.2001],"size":[0.0002,0.1284,0.5846],"inflate":0.001,"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[32,36],"uv_size":[0.5,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[36,32],"uv_size":[0.5,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[-0.3095,9.6409,-1.6156],"size":[0.0002,0.0908,0.0908],"inflate":0.001,"pivot":[0,9.7316,-1.6155],"rotation":[-45,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[36,50],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[50,36],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.3095,9.5127,-2.1094],"size":[0.0002,0.3096,0.1284],"inflate":0.001,"pivot":[0,9.6675,-2.0452],"rotation":[-45,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[15,44],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[44,15],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.3095,9.5127,-2.1094],"size":[0.0002,0.3096,0.1284],"inflate":0.001,"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[16,44],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[44,16],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.3438,9.5986,-2.1094],"size":[0.0346,0.1378,0.1377],"inflate":0.001,"pivot":[-0.3266,9.6675,-2.0406],"rotation":[-45,0,0],"uv":{"north":{"uv":[37,50],"uv_size":[0.125,0.125]},"east":{"uv":[50,37],"uv_size":[0.125,0.125]},"south":{"uv":[38,50],"uv_size":[0.125,0.125]},"west":{"uv":[50,38],"uv_size":[0.125,0.125]},"up":{"uv":[39,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,39.125],"uv_size":[0.125,-0.125]}}}]},{"name":"bone3","parent":"down","pivot":[0,9.2009,-2.229],"rotation":[0,0,-180],"cubes":[{"origin":[0.0688,9.3092,-2.3798],"size":[0.2406,0.1685,0.1507],"pivot":[0,9.481,-2.229],"rotation":[150,0,0],"uv":{"north":{"uv":[17,44],"uv_size":[0.25,0.125]},"east":{"uv":[40,50],"uv_size":[0.125,0.125]},"south":{"uv":[44,17],"uv_size":[0.25,0.125]},"west":{"uv":[50,40],"uv_size":[0.125,0.125]},"up":{"uv":[18,44],"uv_size":[0.25,0.125]},"down":{"uv":[44,18.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.4097,-0.3952],"size":[0.2406,0.0688,4.8297],"pivot":[0,9.4097,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[19,44],"uv_size":[0.25,0.125]},"east":{"uv":[15,9],"uv_size":[4.375,0.125]},"south":{"uv":[44,19],"uv_size":[0.25,0.125]},"west":{"uv":[15,10],"uv_size":[4.375,0.125]},"up":{"uv":[6,0],"uv_size":[0.25,4.375]},"down":{"uv":[6,9.375],"uv_size":[0.25,-4.375]}}},{"origin":[0.0688,9.4785,2.922],"size":[0.2404,0.2748,1.5123],"inflate":-0.001,"pivot":[0,9.4097,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[33,36],"uv_size":[0.25,0.25]},"east":{"uv":[23,0],"uv_size":[1.375,0.25]},"south":{"uv":[36,33],"uv_size":[0.25,0.25]},"west":{"uv":[23,1],"uv_size":[1.375,0.25]},"up":{"uv":[23,4],"uv_size":[0.25,1.375]},"down":{"uv":[23,7.375],"uv_size":[0.25,-1.375]}}},{"origin":[0.0688,9.4785,0.8595],"size":[0.2404,0.0685,2.0623],"inflate":-0.001,"pivot":[0,9.4097,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[20,44],"uv_size":[0.25,0.125]},"east":{"uv":[26,8],"uv_size":[1.875,0.125]},"south":{"uv":[44,20],"uv_size":[0.25,0.125]},"west":{"uv":[26,9],"uv_size":[1.875,0.125]},"up":{"uv":[8,17],"uv_size":[0.25,1.875]},"down":{"uv":[9,18.875],"uv_size":[0.25,-1.875]}}},{"origin":[0.0688,9.5473,1.7705],"size":[0.2404,0.0685,1.1514],"inflate":-0.001,"pivot":[0,9.4097,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[21,44],"uv_size":[0.25,0.125]},"east":{"uv":[0,32],"uv_size":[1,0.125]},"south":{"uv":[44,21],"uv_size":[0.25,0.125]},"west":{"uv":[32,0],"uv_size":[1,0.125]},"up":{"uv":[25,10],"uv_size":[0.25,1]},"down":{"uv":[25,12],"uv_size":[0.25,-1]}}},{"origin":[0.0688,9.616,2.6642],"size":[0.2404,0.017,0.2576],"inflate":-0.001,"pivot":[0,9.4097,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[22,44],"uv_size":[0.25,0.125]},"east":{"uv":[44,22],"uv_size":[0.25,0.125]},"south":{"uv":[23,44],"uv_size":[0.25,0.125]},"west":{"uv":[44,23],"uv_size":[0.25,0.125]},"up":{"uv":[34,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0685,9.4097,-2.0968],"size":[0.2406,0.1719,1.7016],"pivot":[-0.0003,9.4097,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[24,44],"uv_size":[0.25,0.125]},"east":{"uv":[10,28],"uv_size":[1.5,0.125]},"south":{"uv":[44,24],"uv_size":[0.25,0.125]},"west":{"uv":[28,11],"uv_size":[1.5,0.125]},"up":{"uv":[21,6],"uv_size":[0.25,1.5]},"down":{"uv":[21,9.5],"uv_size":[0.25,-1.5]}}},{"origin":[0.0688,9.5644,-0.7218],"size":[0.2406,0.0859,0.3609],"pivot":[0,9.4097,-2.0452],"rotation":[1.25,0,0],"uv":{"north":{"uv":[25,44],"uv_size":[0.25,0.125]},"east":{"uv":[39,14],"uv_size":[0.375,0.125]},"south":{"uv":[44,25],"uv_size":[0.25,0.125]},"west":{"uv":[15,39],"uv_size":[0.375,0.125]},"up":{"uv":[33,25],"uv_size":[0.25,0.375]},"down":{"uv":[26,33.375],"uv_size":[0.25,-0.375]}}},{"origin":[0.0688,9.5488,-0.3994],"size":[0.2406,0.0688,0.3094],"pivot":[0,9.6175,-0.3994],"rotation":[-18.75,0,0],"uv":{"north":{"uv":[26,44],"uv_size":[0.25,0.125]},"east":{"uv":[44,26],"uv_size":[0.25,0.125]},"south":{"uv":[27,44],"uv_size":[0.25,0.125]},"west":{"uv":[44,27],"uv_size":[0.25,0.125]},"up":{"uv":[35,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0687,9.4492,-0.1065],"size":[0.2408,0.0689,4.7439],"inflate":0.001,"pivot":[0,9.5181,-0.1064],"rotation":[5.5,0,0],"uv":{"north":{"uv":[28,44],"uv_size":[0.25,0.125]},"east":{"uv":[15,11],"uv_size":[4.375,0.125]},"south":{"uv":[44,28],"uv_size":[0.25,0.125]},"west":{"uv":[13,15],"uv_size":[4.375,0.125]},"up":{"uv":[7,0],"uv_size":[0.25,4.375]},"down":{"uv":[7,9.375],"uv_size":[0.25,-4.375]}}},{"origin":[0.3094,9.5064,3.5525],"size":[0.0344,0.2578,1.0484],"pivot":[0,9.5752,-0.1428],"rotation":[5.5,0,0],"uv":{"north":{"uv":[29,44],"uv_size":[0.125,0.25]},"east":{"uv":[25,12],"uv_size":[1,0.25]},"south":{"uv":[44,29],"uv_size":[0.125,0.25]},"west":{"uv":[25,13],"uv_size":[1,0.25]},"up":{"uv":[1,32],"uv_size":[0.125,1]},"down":{"uv":[32,2],"uv_size":[0.125,-1]}}},{"origin":[0.3438,9.9341,3.5647],"size":[0.0344,0.0859,0.0859],"pivot":[0.3609,9.9856,3.5991],"rotation":[-39.5,0,0],"uv":{"north":{"uv":[41,50],"uv_size":[0.125,0.125]},"east":{"uv":[50,41],"uv_size":[0.125,0.125]},"south":{"uv":[42,50],"uv_size":[0.125,0.125]},"west":{"uv":[50,42],"uv_size":[0.125,0.125]},"up":{"uv":[43,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,43.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.3438,9.9512,3.7709],"size":[0.0344,0.0859,0.0859],"pivot":[0.3609,10.0028,3.8053],"rotation":[-39.5,0,0],"uv":{"north":{"uv":[44,50],"uv_size":[0.125,0.125]},"east":{"uv":[50,44],"uv_size":[0.125,0.125]},"south":{"uv":[45,50],"uv_size":[0.125,0.125]},"west":{"uv":[50,45],"uv_size":[0.125,0.125]},"up":{"uv":[46,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,46.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.3781,9.9907,4.1944],"size":[0.7562,0.1547,0.1547],"pivot":[0.3609,9.9993,4.2546],"rotation":[-129.5,0,0],"uv":{"north":{"uv":[33,26],"uv_size":[0.75,0.125]},"east":{"uv":[47,50],"uv_size":[0.125,0.125]},"south":{"uv":[27,33],"uv_size":[0.75,0.125]},"west":{"uv":[50,47],"uv_size":[0.125,0.125]},"up":{"uv":[33,27],"uv_size":[0.75,0.125]},"down":{"uv":[28,33.125],"uv_size":[0.75,-0.125]}}},{"origin":[0.0688,9.9043,4.5744],"size":[0.2406,0.3815,0.0476],"pivot":[0,9.9043,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[33,28],"uv_size":[0.25,0.375]},"east":{"uv":[39,15],"uv_size":[0.125,0.375]},"south":{"uv":[29,33],"uv_size":[0.25,0.375]},"west":{"uv":[16,39],"uv_size":[0.125,0.375]},"up":{"uv":[30,44],"uv_size":[0.25,0.125]},"down":{"uv":[44,30.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.5949,4.6221],"size":[0.0859,0.4159,0.0688],"pivot":[0,9.9043,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[39,16],"uv_size":[0.125,0.375]},"east":{"uv":[17,39],"uv_size":[0.125,0.375]},"south":{"uv":[39,17],"uv_size":[0.125,0.375]},"west":{"uv":[18,39],"uv_size":[0.125,0.375]},"up":{"uv":[48,50],"uv_size":[0.125,0.125]},"down":{"uv":[50,48.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.8973,4.5953],"size":[0.0859,0.0688,0.1375],"pivot":[0.1117,9.9661,4.7328],"rotation":[-58,0,0],"uv":{"north":{"uv":[49,50],"uv_size":[0.125,0.125]},"east":{"uv":[50,49],"uv_size":[0.125,0.125]},"south":{"uv":[50,50],"uv_size":[0.125,0.125]},"west":{"uv":[0,51],"uv_size":[0.125,0.125]},"up":{"uv":[51,0],"uv_size":[0.125,0.125]},"down":{"uv":[1,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.4786,4.4688],"size":[0.0859,0.1203,0.0688],"pivot":[0.1117,9.5989,4.5375],"rotation":[-66,0,0],"uv":{"north":{"uv":[51,1],"uv_size":[0.125,0.125]},"east":{"uv":[2,51],"uv_size":[0.125,0.125]},"south":{"uv":[51,2],"uv_size":[0.125,0.125]},"west":{"uv":[3,51],"uv_size":[0.125,0.125]},"up":{"uv":[51,3],"uv_size":[0.125,0.125]},"down":{"uv":[4,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.3094,9.9695,4.5058],"size":[0.0344,0.3128,0.0476],"pivot":[0,9.9007,4.5534],"rotation":[-28,0,0],"uv":{"north":{"uv":[31,44],"uv_size":[0.125,0.25]},"east":{"uv":[44,31],"uv_size":[0.125,0.25]},"south":{"uv":[32,44],"uv_size":[0.125,0.25]},"west":{"uv":[44,32],"uv_size":[0.125,0.25]},"up":{"uv":[51,4],"uv_size":[0.125,0.125]},"down":{"uv":[5,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.3094,9.9695,4.437],"size":[0.0344,0.244,0.0688],"pivot":[0,9.9007,4.5534],"rotation":[-28,0,0],"uv":{"north":{"uv":[33,44],"uv_size":[0.125,0.25]},"east":{"uv":[44,33],"uv_size":[0.125,0.25]},"south":{"uv":[34,44],"uv_size":[0.125,0.25]},"west":{"uv":[44,34],"uv_size":[0.125,0.25]},"up":{"uv":[51,5],"uv_size":[0.125,0.125]},"down":{"uv":[6,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.5091,4.437],"size":[0.2404,0.3951,0.1849],"inflate":-0.001,"pivot":[0,9.9043,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[33,29],"uv_size":[0.25,0.375]},"east":{"uv":[39,18],"uv_size":[0.125,0.375]},"south":{"uv":[30,33],"uv_size":[0.25,0.375]},"west":{"uv":[19,39],"uv_size":[0.125,0.375]},"up":{"uv":[35,44],"uv_size":[0.25,0.125]},"down":{"uv":[44,35.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.9043,4.4541],"size":[0.2406,0.2956,0.1203],"pivot":[0,9.9043,4.6221],"rotation":[-28,0,0],"uv":{"north":{"uv":[36,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,44],"uv_size":[0.125,0.25]},"south":{"uv":[0,37],"uv_size":[0.25,0.25]},"west":{"uv":[44,36],"uv_size":[0.125,0.25]},"up":{"uv":[37,44],"uv_size":[0.25,0.125]},"down":{"uv":[44,37.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.5181,2.9186],"size":[0.2406,0.275,1.7188],"pivot":[0,9.5181,-0.1064],"rotation":[5.5,0,0],"uv":{"north":{"uv":[37,0],"uv_size":[0.25,0.25]},"east":{"uv":[21,4],"uv_size":[1.5,0.25]},"south":{"uv":[1,37],"uv_size":[0.25,0.25]},"west":{"uv":[9,21],"uv_size":[1.5,0.25]},"up":{"uv":[21,10],"uv_size":[0.25,1.5]},"down":{"uv":[21,13.5],"uv_size":[0.25,-1.5]}}},{"origin":[0.0688,9.7487,2.2028],"size":[0.2406,0.825,0.0859],"pivot":[0,9.7487,2.2887],"rotation":[65.5,0,0],"uv":{"north":{"uv":[12,28],"uv_size":[0.25,0.75]},"east":{"uv":[33,30],"uv_size":[0.125,0.75]},"south":{"uv":[28,12],"uv_size":[0.25,0.75]},"west":{"uv":[31,33],"uv_size":[0.125,0.75]},"up":{"uv":[38,44],"uv_size":[0.25,0.125]},"down":{"uv":[44,38.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.2406,9.5666,1.6027],"size":[0.0688,0.825,0.275],"pivot":[0.3094,9.8416,1.8777],"rotation":[67.9898,11.0394,25.3467],"uv":{"north":{"uv":[33,31],"uv_size":[0.125,0.75]},"east":{"uv":[13,28],"uv_size":[0.25,0.75]},"south":{"uv":[32,33],"uv_size":[0.125,0.75]},"west":{"uv":[14,28],"uv_size":[0.25,0.75]},"up":{"uv":[39,44],"uv_size":[0.125,0.25]},"down":{"uv":[44,39.25],"uv_size":[0.125,-0.25]}}},{"origin":[0.2406,10.3916,1.6027],"size":[0.0688,0.2062,0.1891],"pivot":[0.3094,9.8416,1.8777],"rotation":[67.9898,11.0394,25.3467],"uv":{"north":{"uv":[40,44],"uv_size":[0.125,0.25]},"east":{"uv":[44,40],"uv_size":[0.125,0.25]},"south":{"uv":[41,44],"uv_size":[0.125,0.25]},"west":{"uv":[44,41],"uv_size":[0.125,0.25]},"up":{"uv":[51,6],"uv_size":[0.125,0.125]},"down":{"uv":[7,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.9625,1.8195],"size":[0.2406,0.1719,0.0688],"pivot":[0,9.9625,1.8195],"rotation":[65.5,0,0],"uv":{"north":{"uv":[42,44],"uv_size":[0.25,0.125]},"east":{"uv":[51,7],"uv_size":[0.125,0.125]},"south":{"uv":[44,42],"uv_size":[0.25,0.125]},"west":{"uv":[8,51],"uv_size":[0.125,0.125]},"up":{"uv":[43,44],"uv_size":[0.25,0.125]},"down":{"uv":[44,43.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.5144,-0.3994],"size":[0.2406,0.0344,0.1719],"pivot":[0,9.6175,-0.3994],"rotation":[-18.75,0,0],"uv":{"north":{"uv":[44,44],"uv_size":[0.25,0.125]},"east":{"uv":[51,8],"uv_size":[0.125,0.125]},"south":{"uv":[0,45],"uv_size":[0.25,0.125]},"west":{"uv":[9,51],"uv_size":[0.125,0.125]},"up":{"uv":[45,0],"uv_size":[0.25,0.125]},"down":{"uv":[1,45.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.4276,-1.7914],"size":[0.2406,0.1719,0.5672],"pivot":[0,9.5995,-1.2242],"rotation":[-33.75,0,0],"uv":{"north":{"uv":[45,1],"uv_size":[0.25,0.125]},"east":{"uv":[37,1],"uv_size":[0.5,0.125]},"south":{"uv":[2,45],"uv_size":[0.25,0.125]},"west":{"uv":[2,37],"uv_size":[0.5,0.125]},"up":{"uv":[2,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,2.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2406,9.7571,-1.6657],"size":[0.0646,0.188,0.4893],"pivot":[0.3094,9.7571,-1.46],"rotation":[-29.538,-17.122,-27.4546],"uv":{"north":{"uv":[51,9],"uv_size":[0.125,0.125]},"east":{"uv":[37,2],"uv_size":[0.5,0.125]},"south":{"uv":[10,51],"uv_size":[0.125,0.125]},"west":{"uv":[3,37],"uv_size":[0.5,0.125]},"up":{"uv":[37,3],"uv_size":[0.125,0.5]},"down":{"uv":[4,37.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.2406,9.7571,-1.7314],"size":[0.0646,0.0292,0.0658],"pivot":[0.3094,9.7571,-1.46],"rotation":[-29.538,-17.122,-27.4546],"uv":{"north":{"uv":[51,10],"uv_size":[0.125,0.125]},"east":{"uv":[11,51],"uv_size":[0.125,0.125]},"south":{"uv":[51,11],"uv_size":[0.125,0.125]},"west":{"uv":[12,51],"uv_size":[0.125,0.125]},"up":{"uv":[51,12],"uv_size":[0.125,0.125]},"down":{"uv":[13,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.1375,9.8302,-1.5436],"size":[0.0688,0.1719,0.0688],"pivot":[0.2062,10.0021,-1.5436],"rotation":[-52.038,-17.122,-27.4546],"uv":{"north":{"uv":[51,13],"uv_size":[0.125,0.125]},"east":{"uv":[14,51],"uv_size":[0.125,0.125]},"south":{"uv":[51,14],"uv_size":[0.125,0.125]},"west":{"uv":[15,51],"uv_size":[0.125,0.125]},"up":{"uv":[51,15],"uv_size":[0.125,0.125]},"down":{"uv":[16,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.5995,-1.2242],"size":[0.2406,2.6812,0.0859],"pivot":[0,9.5995,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[14,6],"uv_size":[0.25,2.5]},"east":{"uv":[20,23],"uv_size":[0.125,2.5]},"south":{"uv":[14,9],"uv_size":[0.25,2.5]},"west":{"uv":[23,22],"uv_size":[0.125,2.5]},"up":{"uv":[45,2],"uv_size":[0.25,0.125]},"down":{"uv":[3,45.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.2406,8.5032,-0.2498],"size":[0.0688,0.7219,0.3438],"pivot":[0.3094,9.8438,0.094],"rotation":[-79.9759,3.1413,-17.2244],"uv":{"north":{"uv":[17,34],"uv_size":[0.125,0.625]},"east":{"uv":[8,26],"uv_size":[0.375,0.625]},"south":{"uv":[34,17],"uv_size":[0.125,0.625]},"west":{"uv":[10,26],"uv_size":[0.375,0.625]},"up":{"uv":[39,19],"uv_size":[0.125,0.375]},"down":{"uv":[20,39.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.2422,9.5893,-1.5833],"size":[0.0688,0.1375,0.3609],"pivot":[0.2766,9.5893,-1.2223],"rotation":[-62.4759,3.1413,-17.2244],"uv":{"north":{"uv":[51,16],"uv_size":[0.125,0.125]},"east":{"uv":[39,20],"uv_size":[0.375,0.125]},"south":{"uv":[17,51],"uv_size":[0.125,0.125]},"west":{"uv":[21,39],"uv_size":[0.375,0.125]},"up":{"uv":[39,21],"uv_size":[0.125,0.375]},"down":{"uv":[22,39.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.206,10.0534,-0.5742],"size":[0,1.9937,0.0516],"pivot":[0.206,10.0534,-0.5742],"rotation":[-89.9759,3.1413,-17.2244],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.875]},"east":{"uv":[26,10],"uv_size":[0.125,1.875]},"south":{"uv":[0,0],"uv_size":[0,1.875]},"west":{"uv":[11,26],"uv_size":[0.125,1.875]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.2406,9.2251,0.0424],"size":[0.0688,1.65,0.0516],"pivot":[0.3094,9.8438,0.094],"rotation":[-79.9759,3.1413,-17.2244],"uv":{"north":{"uv":[28,14],"uv_size":[0.125,1.5]},"east":{"uv":[15,28],"uv_size":[0.125,1.5]},"south":{"uv":[16,28],"uv_size":[0.125,1.5]},"west":{"uv":[28,16],"uv_size":[0.125,1.5]},"up":{"uv":[51,17],"uv_size":[0.125,0.125]},"down":{"uv":[18,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2406,9.2251,-0.0092],"size":[0.0688,1.3406,0.0516],"pivot":[0.3094,9.8438,0.094],"rotation":[-79.9759,3.1413,-17.2244],"uv":{"north":{"uv":[29,25],"uv_size":[0.125,1.25]},"east":{"uv":[29,27],"uv_size":[0.125,1.25]},"south":{"uv":[29,29],"uv_size":[0.125,1.25]},"west":{"uv":[30,0],"uv_size":[0.125,1.25]},"up":{"uv":[51,18],"uv_size":[0.125,0.125]},"down":{"uv":[19,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2406,9.2251,-0.0607],"size":[0.0688,1.0484,0.0516],"pivot":[0.3094,9.8438,0.094],"rotation":[-79.9759,3.1413,-17.2244],"uv":{"north":{"uv":[3,32],"uv_size":[0.125,1]},"east":{"uv":[32,3],"uv_size":[0.125,1]},"south":{"uv":[4,32],"uv_size":[0.125,1]},"west":{"uv":[32,4],"uv_size":[0.125,1]},"up":{"uv":[51,19],"uv_size":[0.125,0.125]},"down":{"uv":[20,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2406,9.2251,-0.1123],"size":[0.0688,0.7734,0.0516],"pivot":[0.3094,9.8438,0.094],"rotation":[-79.9759,3.1413,-17.2244],"uv":{"north":{"uv":[33,32],"uv_size":[0.125,0.75]},"east":{"uv":[33,33],"uv_size":[0.125,0.75]},"south":{"uv":[0,34],"uv_size":[0.125,0.75]},"west":{"uv":[34,0],"uv_size":[0.125,0.75]},"up":{"uv":[51,20],"uv_size":[0.125,0.125]},"down":{"uv":[21,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2406,9.2251,-0.1638],"size":[0.0688,0.4641,0.0516],"pivot":[0.3094,9.8438,0.094],"rotation":[-79.9759,3.1413,-17.2244],"uv":{"north":{"uv":[39,22],"uv_size":[0.125,0.375]},"east":{"uv":[23,39],"uv_size":[0.125,0.375]},"south":{"uv":[39,23],"uv_size":[0.125,0.375]},"west":{"uv":[24,39],"uv_size":[0.125,0.375]},"up":{"uv":[51,21],"uv_size":[0.125,0.125]},"down":{"uv":[22,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2406,9.2251,-0.2154],"size":[0.0688,0.1891,0.0516],"pivot":[0.3094,9.8438,0.094],"rotation":[-79.9759,3.1413,-17.2244],"uv":{"north":{"uv":[51,22],"uv_size":[0.125,0.125]},"east":{"uv":[23,51],"uv_size":[0.125,0.125]},"south":{"uv":[51,23],"uv_size":[0.125,0.125]},"west":{"uv":[24,51],"uv_size":[0.125,0.125]},"up":{"uv":[51,24],"uv_size":[0.125,0.125]},"down":{"uv":[25,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,10.4245,-1.293],"size":[0.1375,1.8562,0.0688],"pivot":[0,9.5995,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[0,27],"uv_size":[0.125,1.75]},"east":{"uv":[27,0],"uv_size":[0.125,1.75]},"south":{"uv":[2,27],"uv_size":[0.125,1.75]},"west":{"uv":[3,27],"uv_size":[0.125,1.75]},"up":{"uv":[51,25],"uv_size":[0.125,0.125]},"down":{"uv":[26,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,10.4245,-1.3617],"size":[0.1375,1.3234,0.0688],"pivot":[0,9.5995,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[1,30],"uv_size":[0.125,1.25]},"east":{"uv":[2,30],"uv_size":[0.125,1.25]},"south":{"uv":[30,2],"uv_size":[0.125,1.25]},"west":{"uv":[3,30],"uv_size":[0.125,1.25]},"up":{"uv":[51,26],"uv_size":[0.125,0.125]},"down":{"uv":[27,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,10.4245,-1.4304],"size":[0.1375,0.8078,0.0688],"pivot":[0,9.5995,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[1,34],"uv_size":[0.125,0.75]},"east":{"uv":[34,1],"uv_size":[0.125,0.75]},"south":{"uv":[2,34],"uv_size":[0.125,0.75]},"west":{"uv":[34,2],"uv_size":[0.125,0.75]},"up":{"uv":[51,27],"uv_size":[0.125,0.125]},"down":{"uv":[28,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,10.4245,-1.4648],"size":[0.1375,0.3953,0.0344],"pivot":[0,9.5995,-1.2242],"rotation":[-79.5,0,0],"uv":{"north":{"uv":[39,24],"uv_size":[0.125,0.375]},"east":{"uv":[25,39],"uv_size":[0.125,0.375]},"south":{"uv":[39,25],"uv_size":[0.125,0.375]},"west":{"uv":[26,39],"uv_size":[0.125,0.375]},"up":{"uv":[51,28],"uv_size":[0.125,0.125]},"down":{"uv":[29,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,10.0881,1.4122],"size":[0.2406,3.3516,0.0859],"pivot":[0,10.0881,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[6,10],"uv_size":[0.25,3]},"east":{"uv":[21,18],"uv_size":[0.125,3]},"south":{"uv":[7,10],"uv_size":[0.25,3]},"west":{"uv":[21,21],"uv_size":[0.125,3]},"up":{"uv":[45,3],"uv_size":[0.25,0.125]},"down":{"uv":[4,45.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.3094,10.9819,1.4122],"size":[0.0344,2.3891,0.0859],"pivot":[0,10.0881,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[24,17],"uv_size":[0.125,2.125]},"east":{"uv":[18,24],"uv_size":[0.125,2.125]},"south":{"uv":[19,24],"uv_size":[0.125,2.125]},"west":{"uv":[24,20],"uv_size":[0.125,2.125]},"up":{"uv":[51,29],"uv_size":[0.125,0.125]},"down":{"uv":[30,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,10.1741,1.4981],"size":[0.1203,0.3094,0.3438],"pivot":[0,10.0881,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[45,4],"uv_size":[0.125,0.25]},"east":{"uv":[3,34],"uv_size":[0.375,0.25]},"south":{"uv":[5,45],"uv_size":[0.125,0.25]},"west":{"uv":[34,3],"uv_size":[0.375,0.25]},"up":{"uv":[39,26],"uv_size":[0.125,0.375]},"down":{"uv":[27,39.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.0688,9.6536,0.9192],"size":[0.1203,0.2406,0.6188],"pivot":[0.1289,9.6536,1.5379],"rotation":[-24.5,0,0],"uv":{"north":{"uv":[45,5],"uv_size":[0.125,0.25]},"east":{"uv":[4,30],"uv_size":[0.625,0.25]},"south":{"uv":[6,45],"uv_size":[0.125,0.25]},"west":{"uv":[30,4],"uv_size":[0.625,0.25]},"up":{"uv":[18,34],"uv_size":[0.125,0.625]},"down":{"uv":[34,18.625],"uv_size":[0.125,-0.625]}}},{"origin":[0.0688,9.8943,1.1942],"size":[0.1203,0.0688,0.3438],"pivot":[0.1289,9.6536,1.5379],"rotation":[-24.5,0,0],"uv":{"north":{"uv":[51,30],"uv_size":[0.125,0.125]},"east":{"uv":[39,27],"uv_size":[0.375,0.125]},"south":{"uv":[31,51],"uv_size":[0.125,0.125]},"west":{"uv":[28,39],"uv_size":[0.375,0.125]},"up":{"uv":[39,28],"uv_size":[0.125,0.375]},"down":{"uv":[29,39.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.0688,7.1319,1.3434],"size":[0.1375,6.3078,0.0688],"pivot":[0,10.0881,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[3,13],"uv_size":[0.125,5.75]},"east":{"uv":[4,13],"uv_size":[0.125,5.75]},"south":{"uv":[5,13],"uv_size":[0.125,5.75]},"west":{"uv":[6,13],"uv_size":[0.125,5.75]},"up":{"uv":[51,31],"uv_size":[0.125,0.125]},"down":{"uv":[32,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,10.0021,-1.5436],"size":[0.1375,0.0688,0.1375],"pivot":[0.1375,10.0021,-1.5436],"rotation":[-132,0,0],"uv":{"north":{"uv":[51,32],"uv_size":[0.125,0.125]},"east":{"uv":[33,51],"uv_size":[0.125,0.125]},"south":{"uv":[51,33],"uv_size":[0.125,0.125]},"west":{"uv":[34,51],"uv_size":[0.125,0.125]},"up":{"uv":[51,34],"uv_size":[0.125,0.125]},"down":{"uv":[35,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,9.7851,-1.5846],"size":[0.1375,0.0688,0.1375],"pivot":[0.1375,9.8539,-1.5846],"rotation":[-177,0,0],"uv":{"north":{"uv":[51,35],"uv_size":[0.125,0.125]},"east":{"uv":[36,51],"uv_size":[0.125,0.125]},"south":{"uv":[51,36],"uv_size":[0.125,0.125]},"west":{"uv":[37,51],"uv_size":[0.125,0.125]},"up":{"uv":[51,37],"uv_size":[0.125,0.125]},"down":{"uv":[38,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,7.1319,1.4122],"size":[0.1375,1.1516,0.3438],"pivot":[0,10.0881,1.4122],"rotation":[-87,0,0],"uv":{"north":{"uv":[5,32],"uv_size":[0.125,1]},"east":{"uv":[21,14],"uv_size":[0.375,1]},"south":{"uv":[32,5],"uv_size":[0.125,1]},"west":{"uv":[21,16],"uv_size":[0.375,1]},"up":{"uv":[39,29],"uv_size":[0.125,0.375]},"down":{"uv":[30,39.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.1375,9.9695,1.6059],"size":[0.0689,3.3516,0.1239],"pivot":[0.2062,10.1671,1.6059],"rotation":[-88.3322,2.4941,-56.2137],"uv":{"north":{"uv":[22,0],"uv_size":[0.125,3]},"east":{"uv":[1,22],"uv_size":[0.125,3]},"south":{"uv":[4,22],"uv_size":[0.125,3]},"west":{"uv":[5,22],"uv_size":[0.125,3]},"up":{"uv":[51,38],"uv_size":[0.125,0.125]},"down":{"uv":[39,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.1375,9.0088,1.6059],"size":[0.0689,0.9607,0.0652],"pivot":[0.2062,10.1671,1.6059],"rotation":[-88.3322,2.4941,-56.2137],"uv":{"north":{"uv":[20,32],"uv_size":[0.125,0.875]},"east":{"uv":[32,20],"uv_size":[0.125,0.875]},"south":{"uv":[21,32],"uv_size":[0.125,0.875]},"west":{"uv":[32,21],"uv_size":[0.125,0.875]},"up":{"uv":[51,39],"uv_size":[0.125,0.125]},"down":{"uv":[40,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.1375,8.4598,1.6059],"size":[0.0689,0.549,0.0316],"pivot":[0.2062,10.1671,1.6059],"rotation":[-88.3322,2.4941,-56.2137],"uv":{"north":{"uv":[37,4],"uv_size":[0.125,0.5]},"east":{"uv":[5,37],"uv_size":[0.125,0.5]},"south":{"uv":[37,5],"uv_size":[0.125,0.5]},"west":{"uv":[6,37],"uv_size":[0.125,0.5]},"up":{"uv":[51,40],"uv_size":[0.125,0.125]},"down":{"uv":[41,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.1375,8.1848,1.6059],"size":[0.0689,0.275,0.0144],"pivot":[0.2062,10.1671,1.6059],"rotation":[-88.3322,2.4941,-56.2137],"uv":{"north":{"uv":[45,6],"uv_size":[0.125,0.25]},"east":{"uv":[7,45],"uv_size":[0.125,0.25]},"south":{"uv":[45,7],"uv_size":[0.125,0.25]},"west":{"uv":[8,45],"uv_size":[0.125,0.25]},"up":{"uv":[51,41],"uv_size":[0.125,0.125]},"down":{"uv":[42,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2558,9.097,1.3449],"size":[0.0689,0.9625,0.0688],"pivot":[0.2903,10.0595,1.4137],"rotation":[-91.8322,2.4941,-56.2137],"uv":{"north":{"uv":[22,32],"uv_size":[0.125,0.875]},"east":{"uv":[32,22],"uv_size":[0.125,0.875]},"south":{"uv":[23,32],"uv_size":[0.125,0.875]},"west":{"uv":[32,23],"uv_size":[0.125,0.875]},"up":{"uv":[51,42],"uv_size":[0.125,0.125]},"down":{"uv":[43,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2558,8.547,1.3793],"size":[0.0689,0.55,0.0344],"pivot":[0.2903,10.0595,1.4137],"rotation":[-91.8322,2.4941,-56.2137],"uv":{"north":{"uv":[37,6],"uv_size":[0.125,0.5]},"east":{"uv":[7,37],"uv_size":[0.125,0.5]},"south":{"uv":[37,7],"uv_size":[0.125,0.5]},"west":{"uv":[8,37],"uv_size":[0.125,0.5]},"up":{"uv":[51,43],"uv_size":[0.125,0.125]},"down":{"uv":[44,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2558,8.1002,1.3965],"size":[0.0689,0.4469,0.0172],"pivot":[0.2903,10.0595,1.4137],"rotation":[-91.8322,2.4941,-56.2137],"uv":{"north":{"uv":[39,30],"uv_size":[0.125,0.375]},"east":{"uv":[31,39],"uv_size":[0.125,0.375]},"south":{"uv":[39,31],"uv_size":[0.125,0.375]},"west":{"uv":[32,39],"uv_size":[0.125,0.375]},"up":{"uv":[51,44],"uv_size":[0.125,0.125]},"down":{"uv":[45,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,10.0311,1.88],"size":[0.2406,1.0312,0.0859],"pivot":[0,10.0311,1.9659],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[25,14],"uv_size":[0.25,1]},"east":{"uv":[6,32],"uv_size":[0.125,1]},"south":{"uv":[25,15],"uv_size":[0.25,1]},"west":{"uv":[32,6],"uv_size":[0.125,1]},"up":{"uv":[45,8],"uv_size":[0.25,0.125]},"down":{"uv":[9,45.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.3094,10.0019,2.2571],"size":[0.0344,1.2547,0.0859],"pivot":[0,10.0363,2.343],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[22,30],"uv_size":[0.125,1.125]},"east":{"uv":[23,30],"uv_size":[0.125,1.125]},"south":{"uv":[30,23],"uv_size":[0.125,1.125]},"west":{"uv":[24,30],"uv_size":[0.125,1.125]},"up":{"uv":[51,45],"uv_size":[0.125,0.125]},"down":{"uv":[46,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.3094,10.8269,2.0852],"size":[0.0344,0.4297,0.1719],"pivot":[0,10.0363,2.343],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[39,32],"uv_size":[0.125,0.375]},"east":{"uv":[33,39],"uv_size":[0.125,0.375]},"south":{"uv":[39,33],"uv_size":[0.125,0.375]},"west":{"uv":[34,39],"uv_size":[0.125,0.375]},"up":{"uv":[51,46],"uv_size":[0.125,0.125]},"down":{"uv":[47,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.3094,10.3972,2.1711],"size":[0.0344,0.4297,0.0859],"pivot":[0,10.0363,2.343],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[39,34],"uv_size":[0.125,0.375]},"east":{"uv":[35,39],"uv_size":[0.125,0.375]},"south":{"uv":[39,35],"uv_size":[0.125,0.375]},"west":{"uv":[36,39],"uv_size":[0.125,0.375]},"up":{"uv":[51,47],"uv_size":[0.125,0.125]},"down":{"uv":[48,51.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0688,10.392,1.8112],"size":[0.2406,0.6703,0.0688],"pivot":[0,10.0311,1.9659],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[5,30],"uv_size":[0.25,0.625]},"east":{"uv":[19,34],"uv_size":[0.125,0.625]},"south":{"uv":[30,5],"uv_size":[0.25,0.625]},"west":{"uv":[34,19],"uv_size":[0.125,0.625]},"up":{"uv":[45,9],"uv_size":[0.25,0.125]},"down":{"uv":[10,45.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,10.8046,1.7768],"size":[0.2406,0.2578,0.0344],"pivot":[0,10.0311,1.9659],"rotation":[-98.25,0,0],"uv":{"north":{"uv":[37,8],"uv_size":[0.25,0.25]},"east":{"uv":[45,10],"uv_size":[0.125,0.25]},"south":{"uv":[9,37],"uv_size":[0.25,0.25]},"west":{"uv":[11,45],"uv_size":[0.125,0.25]},"up":{"uv":[45,11],"uv_size":[0.25,0.125]},"down":{"uv":[12,45.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.7428,-2.2114],"size":[0.2406,0.1719,0.5156],"pivot":[0,9.9146,-1.6958],"rotation":[1.25,0,0],"uv":{"north":{"uv":[45,12],"uv_size":[0.25,0.125]},"east":{"uv":[37,9],"uv_size":[0.5,0.125]},"south":{"uv":[13,45],"uv_size":[0.25,0.125]},"west":{"uv":[10,37],"uv_size":[0.5,0.125]},"up":{"uv":[7,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,7.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0688,9.9146,-2.2114],"size":[0.1375,0.0688,0.5156],"pivot":[0,9.9146,-1.6958],"rotation":[1.25,0,0],"uv":{"north":{"uv":[51,48],"uv_size":[0.125,0.125]},"east":{"uv":[37,10],"uv_size":[0.5,0.125]},"south":{"uv":[49,51],"uv_size":[0.125,0.125]},"west":{"uv":[11,37],"uv_size":[0.5,0.125]},"up":{"uv":[37,11],"uv_size":[0.125,0.5]},"down":{"uv":[12,37.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.0688,9.8459,-1.766],"size":[0.1375,0.1375,0.0688],"pivot":[0.1461,9.9834,-1.6973],"rotation":[23.75,0,0],"uv":{"north":{"uv":[51,49],"uv_size":[0.125,0.125]},"east":{"uv":[50,51],"uv_size":[0.125,0.125]},"south":{"uv":[51,50],"uv_size":[0.125,0.125]},"west":{"uv":[51,51],"uv_size":[0.125,0.125]},"up":{"uv":[0,52],"uv_size":[0.125,0.125]},"down":{"uv":[52,0.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2076,9.9108,-2.2129],"size":[0.1238,0.0667,0.5156],"pivot":[0.2076,9.9795,-1.9551],"rotation":[1.0394,-0.6944,33.7437],"uv":{"north":{"uv":[1,52],"uv_size":[0.125,0.125]},"east":{"uv":[37,12],"uv_size":[0.5,0.125]},"south":{"uv":[52,1],"uv_size":[0.125,0.125]},"west":{"uv":[13,37],"uv_size":[0.5,0.125]},"up":{"uv":[37,13],"uv_size":[0.125,0.5]},"down":{"uv":[14,37.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.0688,9.5881,-2.2114],"size":[0.2406,0.1547,0.6875],"pivot":[0,9.9146,-1.6958],"rotation":[1.25,0,0],"uv":{"north":{"uv":[45,13],"uv_size":[0.25,0.125]},"east":{"uv":[20,34],"uv_size":[0.625,0.125]},"south":{"uv":[14,45],"uv_size":[0.25,0.125]},"west":{"uv":[34,20],"uv_size":[0.625,0.125]},"up":{"uv":[30,6],"uv_size":[0.25,0.625]},"down":{"uv":[30,7.625],"uv_size":[0.25,-0.625]}}},{"origin":[0.0688,9.7315,-2.3488],"size":[0.2406,0.1719,0.1375],"pivot":[0,9.9034,-2.2113],"rotation":[46.25,0,0],"uv":{"north":{"uv":[45,14],"uv_size":[0.25,0.125]},"east":{"uv":[2,52],"uv_size":[0.125,0.125]},"south":{"uv":[15,45],"uv_size":[0.25,0.125]},"west":{"uv":[52,2],"uv_size":[0.125,0.125]},"up":{"uv":[45,15],"uv_size":[0.25,0.125]},"down":{"uv":[16,45.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.6322,-2.4954],"size":[0.2406,0.1719,0.1891],"pivot":[0,9.8041,-2.3064],"rotation":[90,0,0],"uv":{"north":{"uv":[45,16],"uv_size":[0.25,0.125]},"east":{"uv":[3,52],"uv_size":[0.125,0.125]},"south":{"uv":[17,45],"uv_size":[0.25,0.125]},"west":{"uv":[52,3],"uv_size":[0.125,0.125]},"up":{"uv":[45,17],"uv_size":[0.25,0.125]},"down":{"uv":[18,45.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.0688,9.4431,-2.4611],"size":[0.2406,0.1719,0.1547],"pivot":[0,9.615,-2.3064],"rotation":[120,0,0],"uv":{"north":{"uv":[45,18],"uv_size":[0.25,0.125]},"east":{"uv":[4,52],"uv_size":[0.125,0.125]},"south":{"uv":[19,45],"uv_size":[0.25,0.125]},"west":{"uv":[52,4],"uv_size":[0.125,0.125]},"up":{"uv":[45,19],"uv_size":[0.25,0.125]},"down":{"uv":[20,45.125],"uv_size":[0.25,-0.125]}}}]},{"name":"octagon3","parent":"bone3","pivot":[0,9.0144,-2.0452],"rotation":[-2.5,0,0],"cubes":[{"origin":[0.3093,9.6033,-2.2001],"size":[0.0002,0.1284,0.3096],"inflate":0.001,"pivot":[0,9.6675,-2.0452],"rotation":[-45,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[45,20],"uv_size":[0.25,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[21,45],"uv_size":[0.25,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.3093,9.6033,-2.2001],"size":[0.0002,0.1284,0.5846],"inflate":0.001,"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[37,14],"uv_size":[0.5,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[15,37],"uv_size":[0.5,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0.3093,9.6409,-1.6156],"size":[0.0002,0.0908,0.0908],"inflate":0.001,"pivot":[0,9.7316,-1.6155],"rotation":[-45,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[5,52],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[52,5],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.3093,9.5127,-2.1094],"size":[0.0002,0.3096,0.1284],"inflate":0.001,"pivot":[0,9.6675,-2.0452],"rotation":[-45,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,21],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[22,45],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.3093,9.5127,-2.1094],"size":[0.0002,0.3096,0.1284],"inflate":0.001,"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,22],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[23,45],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.3093,9.5986,-2.1094],"size":[0.0346,0.1378,0.1377],"inflate":0.001,"pivot":[0.3266,9.6675,-2.0406],"rotation":[-45,0,0],"uv":{"north":{"uv":[6,52],"uv_size":[0.125,0.125]},"east":{"uv":[52,6],"uv_size":[0.125,0.125]},"south":{"uv":[7,52],"uv_size":[0.125,0.125]},"west":{"uv":[52,7],"uv_size":[0.125,0.125]},"up":{"uv":[8,52],"uv_size":[0.125,0.125]},"down":{"uv":[52,8.125],"uv_size":[0.125,-0.125]}}}]},{"name":"constraint","pivot":[-0.0156,8.125,1.9375]},{"name":"camera","pivot":[3.4563,3.4656,-0.7687]},{"name":"view","pivot":[0,0,0]},{"name":"idle_view","parent":"view","pivot":[0,0.4219,-1.0651],"rotation":[0,-1,0]},{"name":"positioning","pivot":[-0.0156,4.125,4.9375]},{"name":"ground","parent":"positioning","pivot":[0,0,0]},{"name":"thirdperson_hand","parent":"positioning","pivot":[-0.0156,6.125,-2.0625]},{"name":"fixed","parent":"positioning","pivot":[0.7969,5.125,-1.0625],"rotation":[0,90,0]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/css.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/css.anim.json new file mode 100644 index 0000000..84d6cc9 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/css.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"draw":{"loop":true,"animation_length":0.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[67.159,2.099,-154.886],"0.04":[84.325,-0.082,-173.615],"0.08":[98.143,2.651,-183.952],"0.12":[110.336,5.168,-188.122],"0.17":[121.473,8.218,-191.382],"0.21":[127.105,14.647,-200.006],"0.25":[120.787,24.295,-221.001],"0.29":[112.706,27.135,-236.866],"0.33":[115.216,18.921,-221.086],"0.38":[116.155,8.608,-198.554],"0.42":[113.903,1.422,-177.758],"0.46":[110.974,-1.311,-162.372],"0.5":[108.632,-2.626,-149.203],"0.54":[106.085,-4.463,-138.543],"0.58":[102.01,-9.587,-128.948],"0.62":[98.407,-16.893,-119.322],"0.67":[95.535,-25.763,-111.122],"0.71":[92.594,-33.71,-104.923],"0.75":[90.337,-39.486,-101.03],"0.79":[88.597,-44.033,-98.008],"0.83":[87.555,-47.146,-95.736],"0.88":[87.041,-48.641,-94.066],"0.92":[86.388,-49.165,-92.74],"0.96":[85.916,-49.265,-92.051]},"position":{"0.0":[-4.186,-36.841,-10.347],"0.04":[-5.042,-36.048,-11.339],"0.08":[-5.998,-34.116,-12.142],"0.12":[-7.063,-31.338,-12.771],"0.17":[-8.147,-28.274,-13.448],"0.21":[-9.142,-25.445,-14.07],"0.25":[-9.809,-23.471,-14.714],"0.29":[-10.01,-22.818,-15.293],"0.33":[-10.008,-23.049,-15.693],"0.38":[-9.948,-23.467,-16.083],"0.42":[-9.867,-23.981,-16.446],"0.46":[-9.795,-24.5,-16.756],"0.5":[-9.775,-24.915,-17.005],"0.54":[-9.83,-25.151,-17.162],"0.58":[-9.971,-25.223,-17.216],"0.62":[-10.17,-25.191,-17.19],"0.67":[-10.387,-25.1,-17.081],"0.71":[-10.573,-25.022,-16.936],"0.75":[-10.727,-25.009,-16.75],"0.79":[-10.886,-25.082,-16.503],"0.83":[-11.024,-25.168,-16.265],"0.88":[-11.113,-25.189,-16.114],"0.92":[-11.157,-25.177,-16.04],"0.96":[-11.174,-25.167,-16.018]}},"blade":{"rotation":{"0.0":[28.806,-169.887,-3.782],"0.04":[29.169,-170.077,-3.872],"0.08":[29.63,-170.475,-3.804],"0.12":[29.922,-170.742,-3.716],"0.17":[29.777,-170.602,-3.826],"0.21":[29.158,-170.137,-4.045],"0.25":[21.671,-164.352,-4.048],"0.29":[0.338,-160.719,-1.668],"0.33":[-35.537,-170.854,2.182],"0.38":[-67.165,-165.32,-4.885],"0.42":[-101.779,-160.936,2.484],"0.46":[-132.763,-168.282,19.226],"0.5":[-159.862,-182.751,3.744],"0.54":[-165.257,-190.016,-19.905],"0.58":[-160.585,-189.544,-13.84],"0.62":[-160.574,-189.569,-13.816],"0.67":[-160.576,-189.558,-13.82],"0.71":[-160.563,-189.561,-13.808],"0.75":[-160.554,-189.548,-13.81],"0.79":[-160.56,-189.576,-13.812],"0.83":[-160.568,-189.548,-13.827],"0.88":[-160.544,-189.575,-13.816],"0.92":[-160.555,-189.561,-13.808],"0.96":[-160.558,-189.562,-13.794]},"position":{"0.0":[4.572,12.265,-0.406],"0.04":[4.569,12.239,-0.427],"0.08":[4.546,12.234,-0.433],"0.12":[4.534,12.277,-0.409],"0.17":[4.529,12.227,-0.427],"0.21":[4.537,12.244,-0.412],"0.25":[4.638,12.395,-0.375],"0.29":[4.54,12.766,-0.267],"0.33":[4.599,13.327,-0.472],"0.38":[4.514,13.656,-0.856],"0.42":[4.582,13.733,-1.451],"0.46":[5.093,13.534,-1.952],"0.5":[5.323,13.14,-2.258],"0.54":[5.338,13.109,-2.264],"0.58":[5.314,13.163,-2.245],"0.62":[5.314,13.166,-2.244],"0.67":[5.312,13.168,-2.246],"0.71":[5.308,13.176,-2.246],"0.75":[5.312,13.172,-2.245],"0.79":[5.316,13.167,-2.242],"0.83":[5.311,13.175,-2.243],"0.88":[5.317,13.17,-2.242],"0.92":[5.318,13.17,-2.241],"0.96":[5.321,13.168,-2.242]}},"lefthand":{"rotation":{"0.0":[122.447,-6.198,94.575],"0.04":[121.657,-5.75,95.087],"0.08":[120.498,-5.044,95.82],"0.12":[119.087,-4.07,96.712],"0.17":[117.497,-2.831,97.667],"0.21":[115.883,-1.384,98.623],"0.25":[114.337,0.202,99.536],"0.29":[112.939,1.933,100.333],"0.33":[111.784,3.716,100.926],"0.38":[110.935,5.491,101.267],"0.42":[110.47,7.234,101.358],"0.46":[111.328,9.371,100.794],"0.5":[114.33,12.843,98.801],"0.54":[117.323,17.288,95.499],"0.58":[119.585,22.103,91.189],"0.62":[121.983,27.142,87.092],"0.67":[122.958,32.428,83.942],"0.71":[122.479,37.292,81.375],"0.75":[121.303,41.103,79.195],"0.79":[119.876,43.654,77.749],"0.83":[119.174,44.832,77.446],"0.88":[119.226,45.302,77.827],"0.92":[119.568,45.478,78.501],"0.96":[119.824,45.507,78.923]},"position":{"0.0":[17.453,-37.421,-13.153],"0.04":[17.387,-37.056,-13.534],"0.08":[17.288,-36.507,-14.1],"0.12":[17.153,-35.793,-14.826],"0.17":[17,-34.956,-15.683],"0.21":[16.814,-34.037,-16.614],"0.25":[16.611,-33.066,-17.568],"0.29":[16.392,-32.091,-18.52],"0.33":[16.159,-31.142,-19.423],"0.38":[15.928,-30.263,-20.234],"0.42":[15.681,-29.476,-20.921],"0.46":[15.426,-28.712,-21.355],"0.5":[15.144,-27.896,-21.479],"0.54":[14.884,-27.249,-21.557],"0.58":[14.663,-26.954,-21.679],"0.62":[14.459,-26.954,-21.699],"0.67":[14.339,-27.073,-21.679],"0.71":[14.279,-27.173,-21.684],"0.75":[14.229,-27.227,-21.692],"0.79":[14.186,-27.23,-21.698],"0.83":[14.155,-27.21,-21.725],"0.88":[14.128,-27.173,-21.763],"0.92":[14.109,-27.132,-21.796],"0.96":[14.098,-27.111,-21.809]}},"righthand":{"position":[-0.5,2.2,0],"scale":[1,1.4,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_deploy1"}}},"melee_1":{"loop":true,"animation_length":1.36,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[88.114,0.802,133.206],"0.04":[66.622,12.371,134.328],"0.08":[51.448,23.609,130.508],"0.12":[40.283,31.412,122.389],"0.17":[30.288,17.219,126.363],"0.21":[27.006,13.883,154.389],"0.25":[34.288,22.139,171.736],"0.29":[52.204,33.061,185.222],"0.33":[76.407,40.036,202.462],"0.38":[98.125,39.149,219.806],"0.42":[107.436,32.311,230.435],"0.46":[105.327,23.318,235.299],"0.5":[99.072,13.8,238.94],"0.54":[94.913,5.012,244.555],"0.58":[95.066,-3.484,253.78],"0.62":[95.199,-13.634,267.06],"0.67":[90.033,-23.364,282.421],"0.71":[80.809,-28.944,295.65],"0.75":[74.139,-32.212,300.609],"0.79":[73.111,-37.15,296.314],"0.83":[77.243,-42.783,285.825],"0.88":[82.406,-46.676,275.84],"0.92":[85.031,-48.684,270.845],"0.96":[86.016,-49.569,268.794],"1.0":[86.211,-49.702,268.184],"1.04":[86.051,-49.508,268.221],"1.08":[85.847,-49.268,268.315],"1.12":[85.916,-49.286,267.95]},"position":{"0.0":[-14.264,-22.257,-22.093],"0.04":[-7.905,-23.329,-24.918],"0.08":[-0.937,-25.374,-25.035],"0.12":[4.849,-27.819,-22.318],"0.17":[12.333,-29.91,-14.813],"0.21":[10.109,-36.788,-10.632],"0.25":[7.01,-39.905,-9.426],"0.29":[5.094,-40.839,-10.223],"0.33":[3.693,-40.817,-11.71],"0.38":[2.392,-40.401,-13.234],"0.42":[0.618,-40.011,-14.737],"0.46":[-1.883,-39.559,-16.256],"0.5":[-4.595,-38.736,-17.483],"0.54":[-6.695,-37.507,-18.376],"0.58":[-7.55,-35.776,-19.227],"0.62":[-7.429,-33.371,-20.161],"0.67":[-7.215,-30.583,-20.793],"0.71":[-7.511,-28.21,-20.87],"0.75":[-8.277,-26.795,-20.518],"0.79":[-9.176,-26.168,-19.938],"0.83":[-9.989,-25.951,-19.177],"0.88":[-10.582,-25.76,-18.366],"0.92":[-10.903,-25.478,-17.617],"0.96":[-11.021,-25.227,-16.991],"1.0":[-11.037,-25.109,-16.639],"1.04":[-11.031,-25.071,-16.442],"1.08":[-11.052,-25.079,-16.382],"1.12":[-11.116,-25.094,-16.376]}},"blade":{"rotation":{"0.0":[19.377,9.532,166.089],"0.04":[19.423,9.509,166.164],"0.08":[19.399,9.465,166.139],"0.12":[19.45,9.469,166.155],"0.17":[19.63,8.894,166.062],"0.21":[19.544,9.139,165.941],"0.25":[19.41,9.432,166.151],"0.29":[19.393,9.488,166.16],"0.33":[19.42,9.504,166.23],"0.38":[19.455,9.544,166.23],"0.42":[19.446,9.568,166.164],"0.46":[19.398,9.559,166.169],"0.5":[19.465,9.585,166.152],"0.54":[19.519,9.592,166.147],"0.58":[19.567,9.586,166.194],"0.62":[19.404,9.566,166.156],"0.67":[19.597,9.566,166.083],"0.71":[19.509,9.526,166.087],"0.75":[19.417,9.489,166.168],"0.79":[19.431,9.495,166.163],"0.83":[19.43,9.53,166.18],"0.88":[19.436,9.554,166.175],"0.92":[19.444,9.559,166.171],"0.96":[19.443,9.552,166.179],"1.0":[19.427,9.552,166.17],"1.04":[19.443,9.565,166.18],"1.08":[19.436,9.559,166.178],"1.12":[19.444,9.562,166.185]},"position":{"0.0":[5.305,13.087,-2.22],"0.04":[5.275,13.03,-2.191],"0.08":[5.298,13.1,-2.219],"0.12":[5.304,13.169,-2.239],"0.17":[5.339,12.891,-2.212],"0.21":[5.365,12.986,-2.276],"0.25":[5.302,13.165,-2.251],"0.29":[5.301,13.163,-2.255],"0.33":[5.299,13.16,-2.245],"0.38":[5.306,13.165,-2.249],"0.42":[5.312,13.158,-2.253],"0.46":[5.305,13.162,-2.252],"0.5":[5.32,13.151,-2.24],"0.54":[5.324,13.147,-2.238],"0.58":[5.32,13.161,-2.229],"0.62":[5.309,13.175,-2.244],"0.67":[5.303,13.145,-2.221],"0.71":[5.312,13.149,-2.227],"0.75":[5.311,13.161,-2.239],"0.79":[5.306,13.174,-2.243],"0.83":[5.314,13.168,-2.237],"0.88":[5.308,13.17,-2.242],"0.92":[5.316,13.169,-2.242],"0.96":[5.309,13.172,-2.244],"1.0":[5.308,13.172,-2.244],"1.04":[5.312,13.174,-2.241],"1.08":[5.314,13.171,-2.242],"1.12":[5.315,13.165,-2.24]}},"lefthand":{"rotation":{"0.0":[62.489,-1.706,70.419],"0.04":[48.009,-7.833,65.384],"0.08":[34.056,-14.756,61.705],"0.12":[21.528,-21.565,59.39],"0.17":[12.316,-26.995,57.956],"0.21":[8.071,-30.391,56.212],"0.25":[11.176,-31.055,52.568],"0.29":[19.258,-28.723,48.289],"0.33":[27.836,-23.787,46.617],"0.38":[34.089,-18.001,49.011],"0.42":[39.745,-11.743,54.696],"0.46":[46.235,-5.391,62.461],"0.5":[53.972,0.4,71.501],"0.54":[62.857,5.029,80.738],"0.58":[72.429,8.273,89.117],"0.62":[82.157,10.332,95.509],"0.67":[92.181,11.902,98.623],"0.71":[102.521,13.506,99.328],"0.75":[112.178,15.515,98.347],"0.79":[120.341,18.221,96.533],"0.83":[125.631,21.854,94.657],"0.88":[127.223,27.118,91.817],"0.92":[125.526,33.453,87.535],"0.96":[122.196,39.321,82.651],"1.0":[120.006,43.239,79.322],"1.04":[119.482,44.899,78.332],"1.08":[119.661,45.212,78.635],"1.12":[119.824,45.507,78.923]},"position":{"0.0":[28.111,-29.44,-8.368],"0.04":[29.495,-27.491,-3.486],"0.08":[29.511,-25.46,1.456],"0.12":[28.435,-23.611,5.681],"0.17":[27.329,-22.327,8.182],"0.21":[26.876,-21.499,9.185],"0.25":[27.341,-21.034,8.626],"0.29":[28.368,-21.007,6.824],"0.33":[29.277,-21.631,4.386],"0.38":[29.691,-22.825,2.083],"0.42":[29.549,-24.49,-0.2],"0.46":[28.829,-26.345,-2.607],"0.5":[27.472,-28.069,-5.086],"0.54":[25.688,-29.376,-7.46],"0.58":[23.753,-30.139,-9.624],"0.62":[21.933,-30.361,-11.536],"0.67":[20.521,-29.965,-13.298],"0.71":[19.363,-29.178,-14.966],"0.75":[18.319,-28.254,-16.444],"0.79":[17.297,-27.432,-17.722],"0.83":[16.316,-26.985,-18.817],"0.88":[15.591,-26.875,-19.732],"0.92":[15.124,-26.945,-20.511],"0.96":[14.772,-27.08,-21.14],"1.0":[14.456,-27.117,-21.524],"1.04":[14.227,-27.124,-21.737],"1.08":[14.144,-27.131,-21.809],"1.12":[14.098,-27.111,-21.809]}},"righthand":{"position":[-0.5,2.2,0],"scale":[1,1.4,1]},"root":{"position":{"0.0":[-2.4,0,0],"0.08":[-1.95,0,7.622],"0.42":[0,0,0]}}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"melee_2":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[-59.088,-133.536,55.396],"0.04":[-80.216,-129.604,78.815],"0.08":[-121.437,-133.893,105.2],"0.12":[-143.435,-150.711,111.724],"0.17":[-155.369,-166.479,103.91],"0.21":[-171.167,-177.733,90.549],"0.25":[-189.967,-181.559,74.104],"0.29":[-199.446,-180.648,67.244],"0.33":[-184.617,-189.207,70.32],"0.38":[-166.02,-195.779,76.542],"0.42":[-145.874,-198.051,84.809],"0.46":[-128.684,-194.683,93.172],"0.5":[-118.747,-184.818,103.945],"0.54":[-116.386,-172.53,116.706],"0.58":[-118.182,-162.57,126.369],"0.62":[-118.57,-154.579,127.625],"0.67":[-116.275,-147.322,122.367],"0.71":[-111.584,-141.208,113.512],"0.75":[-105.442,-136.812,103.36],"0.79":[-99.872,-133.88,95.153],"0.83":[-96.715,-132.12,91.063],"0.88":[-95.111,-131.315,89.086],"0.92":[-94.569,-131.016,88.457],"0.96":[-94.443,-130.905,88.359],"1.0":[-93.994,-130.671,87.843],"1.04":[-93.739,-130.559,87.536],"1.08":[-93.915,-130.63,87.75],"1.12":[-94.084,-130.714,87.95]},"position":{"0.0":[0.619,-25.499,-20.583],"0.04":[-5.783,-23.658,-22.691],"0.08":[-12.834,-24.581,-21.419],"0.12":[-17.574,-26.231,-19.022],"0.17":[-21.135,-27.041,-16.896],"0.21":[-23.842,-27.954,-14.309],"0.25":[-25.693,-29.047,-11.341],"0.29":[-27.056,-30.729,-6.375],"0.33":[-25.336,-31.194,-9.669],"0.38":[-22.147,-31.443,-13.373],"0.42":[-17.966,-31.454,-16.072],"0.46":[-14.331,-31.027,-17.216],"0.5":[-13.016,-29.861,-17.202],"0.54":[-13.069,-28.398,-16.678],"0.58":[-13.241,-27.222,-16.102],"0.62":[-12.937,-26.545,-15.881],"0.67":[-12.504,-26.14,-15.921],"0.71":[-12.069,-25.849,-16.072],"0.75":[-11.673,-25.626,-16.242],"0.79":[-11.373,-25.426,-16.338],"0.83":[-11.222,-25.274,-16.35],"0.88":[-11.152,-25.186,-16.362],"0.92":[-11.131,-25.143,-16.368],"0.96":[-11.131,-25.119,-16.374],"1.0":[-11.113,-25.091,-16.377],"1.04":[-11.102,-25.082,-16.38],"1.08":[-11.109,-25.088,-16.378],"1.12":[-11.116,-25.094,-16.376]}},"blade":{"rotation":{"0.0":[19.579,9.612,166.096],"0.04":[19.589,9.693,166.142],"0.08":[19.074,8.795,166.636],"0.12":[19.43,9.562,166.177],"0.17":[19.548,9.76,166.289],"0.21":[19.624,9.845,166.34],"0.25":[19.461,9.691,166.097],"0.29":[19.462,9.53,166.127],"0.33":[19.492,9.551,166.225],"0.38":[19.509,9.529,166.234],"0.42":[19.492,9.516,166.2],"0.46":[19.411,9.559,166.117],"0.5":[19.577,9.456,166.177],"0.54":[19.575,9.408,166.148],"0.58":[19.467,9.473,166.186],"0.62":[19.416,9.49,166.177],"0.67":[19.417,9.513,166.169],"0.71":[19.431,9.544,166.174],"0.75":[19.443,9.566,166.176],"0.79":[19.444,9.558,166.182],"0.83":[19.438,9.56,166.164],"0.88":[19.445,9.574,166.171],"0.92":[19.44,9.562,166.179],"0.96":[19.438,9.558,166.181],"1.0":[19.447,9.565,166.183],"1.04":[19.454,9.563,166.179],"1.08":[19.456,9.569,166.175],"1.12":[19.444,9.562,166.185]},"position":{"0.0":[5.377,13.159,-2.202],"0.04":[5.415,13.117,-2.175],"0.08":[5.533,12.94,-2.108],"0.12":[5.308,13.176,-2.243],"0.17":[5.347,13.125,-2.203],"0.21":[5.349,13.094,-2.186],"0.25":[5.297,13.105,-2.206],"0.29":[5.304,13.172,-2.235],"0.33":[5.284,13.117,-2.208],"0.38":[5.277,13.078,-2.187],"0.42":[5.292,13.102,-2.199],"0.46":[5.301,13.165,-2.246],"0.5":[5.301,13.138,-2.227],"0.54":[5.305,13.138,-2.232],"0.58":[5.311,13.155,-2.239],"0.62":[5.307,13.166,-2.244],"0.67":[5.31,13.172,-2.236],"0.71":[5.313,13.171,-2.239],"0.75":[5.317,13.166,-2.239],"0.79":[5.309,13.17,-2.239],"0.83":[5.316,13.168,-2.243],"0.88":[5.309,13.17,-2.243],"0.92":[5.307,13.175,-2.243],"0.96":[5.308,13.172,-2.242],"1.0":[5.315,13.167,-2.24],"1.04":[5.317,13.171,-2.24],"1.08":[5.316,13.17,-2.241],"1.12":[5.315,13.165,-2.24]}},"lefthand":{"rotation":{"0.0":[100.257,-17.721,91.865],"0.04":[84.539,-23.194,96.422],"0.08":[71.674,-26.146,100.353],"0.12":[63.088,-26.675,102.28],"0.17":[56.384,-26.177,103.145],"0.21":[51.16,-25.251,103.122],"0.25":[47.622,-24.201,102.108],"0.29":[45.978,-23.21,100.025],"0.33":[47.071,-22.248,96.475],"0.38":[51.995,-20.843,90.415],"0.42":[59.986,-18.173,82.728],"0.46":[68.692,-14.041,75.618],"0.5":[75.968,-9.234,71.085],"0.54":[80.839,-4.98,69.677],"0.58":[84.447,-1.486,70.585],"0.62":[87.828,1.399,72.856],"0.67":[91.276,3.807,75.876],"0.71":[95.012,5.988,78.877],"0.75":[99.003,8.334,81.361],"0.79":[103.17,11.377,82.953],"0.83":[107.462,17.549,82.56],"0.88":[111.248,25.853,81.196],"0.92":[114.071,33.049,80.187],"0.96":[116.305,37.989,79.86],"1.0":[117.645,40.911,79.505],"1.04":[118.63,43.04,79.157],"1.08":[119.432,44.707,78.962],"1.12":[119.824,45.507,78.923]},"position":{"0.0":[22.511,-32.943,-14.78],"0.04":[21.832,-32.931,-14.848],"0.08":[21.508,-32.893,-14.769],"0.12":[21.691,-32.835,-14.514],"0.17":[22.155,-32.757,-14.116],"0.21":[22.736,-32.661,-13.642],"0.25":[23.31,-32.569,-13.137],"0.29":[23.777,-32.489,-12.682],"0.33":[24.044,-32.441,-12.376],"0.38":[24.195,-32.451,-12.11],"0.42":[24.268,-32.501,-11.894],"0.46":[24.242,-32.547,-11.873],"0.5":[24.059,-32.56,-12.256],"0.54":[23.672,-32.475,-13.1],"0.58":[23.046,-32.265,-14.319],"0.62":[22.17,-31.901,-15.748],"0.67":[21.035,-31.352,-17.215],"0.71":[19.735,-30.658,-18.556],"0.75":[18.39,-29.884,-19.665],"0.79":[17.127,-29.113,-20.499],"0.83":[16.064,-28.442,-21.048],"0.88":[15.231,-27.887,-21.409],"0.92":[14.642,-27.481,-21.623],"0.96":[14.263,-27.219,-21.744],"1.0":[14.148,-27.144,-21.785],"1.04":[14.139,-27.139,-21.794],"1.08":[14.119,-27.123,-21.805],"1.12":[14.098,-27.111,-21.809]}},"righthand":{"position":[-0.5,2.2,0],"scale":[1,1.4,1]},"root":{"position":{"0.0":[0,-0.99733,0],"0.44":{"pre":[0,-0.99733,0],"post":[0,0,0]}}}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"melee_3":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[60.356,-40.862,-108.691],"0.04":[121.157,-50.253,-122.077],"0.08":[172.123,-42.699,-128.471],"0.12":[180.83,-41.254,-129.169],"0.17":[182.387,-40.929,-129.514],"0.21":[184.179,-40.562,-129.804],"0.25":[185.767,-40.479,-129.765],"0.29":[186.557,-40.55,-130.191],"0.33":[189.267,-41.304,-111.348],"0.38":[185.356,-33.059,-90.093],"0.42":[182.721,-13.211,-76.743],"0.46":[175.432,-0.851,-82.318],"0.5":[155.919,2.874,-97.555],"0.54":[111.854,4.713,-88.112],"0.58":[82.209,14.47,-75.779],"0.62":[76.85,7.094,-74.96],"0.67":[74.905,-3.963,-73.59],"0.71":[73.843,-15.501,-71.861],"0.75":[72.383,-24.905,-70.178],"0.79":[71.07,-31.43,-69.842],"0.83":[72.343,-36.739,-72.906],"0.88":[75.567,-41.138,-78.11],"0.92":[79.719,-44.548,-84.149],"0.96":[83.288,-47.183,-88.934],"1.0":[85.022,-48.679,-91.034],"1.04":[85.588,-49.109,-91.693],"1.08":[85.644,-49.111,-91.744],"1.12":[85.916,-49.286,-92.05]},"position":{"0.0":[-12.732,-25.393,-22.299],"0.04":[-3.674,-22.236,-24.284],"0.08":[0.526,-22.194,-24.171],"0.12":[0.904,-22.217,-23.978],"0.17":[1.117,-22.12,-23.877],"0.21":[1.317,-22.018,-23.759],"0.25":[1.484,-21.976,-23.641],"0.29":[1.686,-22.031,-23.503],"0.33":[3.449,-26.135,-21.889],"0.38":[4.316,-30.309,-18.488],"0.42":[5.882,-31.803,-13.236],"0.46":[6.713,-32.16,-10.689],"0.5":[6.795,-32.754,-10.664],"0.54":[1.289,-36.191,-14.54],"0.58":[-5.97,-37.914,-16.996],"0.62":[-7.698,-35.906,-18.437],"0.67":[-8.627,-33.123,-19.433],"0.71":[-9.204,-30.28,-19.706],"0.75":[-9.773,-28.018,-19.326],"0.79":[-10.403,-26.629,-18.617],"0.83":[-10.747,-25.914,-17.871],"0.88":[-10.891,-25.529,-17.198],"0.92":[-10.921,-25.297,-16.611],"0.96":[-11.023,-25.171,-16.433],"1.0":[-11.11,-25.058,-16.38],"1.04":[-11.127,-25.05,-16.367],"1.08":[-11.118,-25.084,-16.375],"1.12":[-11.116,-25.094,-16.376]}},"blade":{"rotation":{"0.0":[172.508,-2.054,-12.504],"0.04":[172.54,-2.796,-13.082],"0.08":[172.596,-1.885,-12.722],"0.12":[172.61,-1.892,-12.721],"0.17":[172.607,-1.915,-12.677],"0.21":[172.61,-1.907,-12.658],"0.25":[172.604,-1.924,-12.612],"0.29":[172.607,-1.95,-12.584],"0.33":[172.562,-1.712,-12.665],"0.38":[173.086,-1.591,-12.751],"0.42":[172.922,-1.805,-12.735],"0.46":[172.586,-2.044,-12.453],"0.5":[199.694,175.36,-15.227],"0.54":[199.198,190.096,-19.833],"0.58":[199.731,186.023,-17.157],"0.62":[199.463,175.325,-14.629],"0.67":[199.499,170.863,-13.552],"0.71":[199.489,170.795,-13.615],"0.75":[199.459,170.681,-13.683],"0.79":[199.449,170.502,-13.76],"0.83":[199.422,170.448,-13.81],"0.88":[199.438,170.42,-13.817],"0.92":[199.443,170.426,-13.822],"0.96":[199.45,170.426,-13.837],"1.0":[199.442,170.443,-13.822],"1.04":[199.438,170.438,-13.824],"1.08":[199.437,170.436,-13.826],"1.12":[199.443,170.429,-13.817]},"position":{"0.0":[4.847,12.266,1.002],"0.04":[4.898,12.071,0.816],"0.08":[4.765,12.528,0.949],"0.12":[4.758,12.609,0.98],"0.17":[4.767,12.631,0.953],"0.21":[4.758,12.648,0.946],"0.25":[4.756,12.664,0.935],"0.29":[4.758,12.684,0.912],"0.33":[4.769,12.56,0.869],"0.38":[4.834,12.663,0.817],"0.42":[4.781,12.717,0.84],"0.46":[4.74,12.812,0.789],"0.5":[5.254,12.789,-2.013],"0.54":[5.04,11.418,-1.728],"0.58":[5.112,12.772,-2.079],"0.62":[5.261,12.886,-2.058],"0.67":[5.326,12.899,-2.035],"0.71":[5.329,12.95,-2.082],"0.75":[5.319,13.043,-2.144],"0.79":[5.31,13.12,-2.198],"0.83":[5.31,13.176,-2.241],"0.88":[5.313,13.169,-2.239],"0.92":[5.316,13.165,-2.238],"0.96":[5.31,13.172,-2.242],"1.0":[5.309,13.171,-2.242],"1.04":[5.314,13.168,-2.242],"1.08":[5.314,13.172,-2.244],"1.12":[5.315,13.165,-2.24]}},"lefthand":{"rotation":{"0.0":[69.312,8.546,53.514],"0.04":[49.982,-3.814,50.977],"0.08":[31.799,-15.791,51.818],"0.12":[16.163,-25.198,54.977],"0.17":[7.63,-30.183,57.272],"0.21":[6.119,-32.958,56.292],"0.25":[9.834,-34.248,52.381],"0.29":[16.71,-33.254,47.383],"0.33":[24.235,-29.209,44.288],"0.38":[30.107,-22.944,45.478],"0.42":[34.12,-13.13,54.806],"0.46":[39.912,1.226,75.414],"0.5":[51.673,13.299,102.586],"0.54":[66.311,16.443,124.876],"0.58":[79.617,13.319,130.716],"0.62":[93.448,10.936,120.584],"0.67":[105.882,14.834,102.911],"0.71":[113.855,22.56,88.457],"0.75":[118.013,29.087,81.747],"0.79":[119.855,33.813,79.4],"0.83":[120.133,37.165,79.058],"0.88":[119.897,39.853,79.329],"0.92":[119.809,42.433,79.331],"0.96":[119.936,44.449,78.962],"1.0":[119.91,45.041,78.99],"1.04":[119.854,45.377,78.974],"1.08":[119.849,45.502,78.934],"1.12":[119.824,45.507,78.923]},"position":{"0.0":[28.946,-24.695,-10.875],"0.04":[30.644,-23.806,-4.667],"0.08":[30.716,-23.432,0.161],"0.12":[29.685,-23.139,3.936],"0.17":[28.789,-22.946,5.699],"0.21":[28.623,-22.57,6.11],"0.25":[29.034,-22.047,5.628],"0.29":[29.759,-21.659,4.437],"0.33":[30.48,-21.812,2.689],"0.38":[30.889,-22.717,0.799],"0.42":[30.61,-25.059,-1.291],"0.46":[28.647,-28.987,-3.997],"0.5":[24.515,-32.268,-7.021],"0.54":[20.341,-33.464,-9.516],"0.58":[18.028,-33.211,-11.568],"0.62":[17.336,-32.298,-13.798],"0.67":[17.261,-30.882,-16.156],"0.71":[16.938,-29.487,-18.099],"0.75":[16.25,-28.615,-19.368],"0.79":[15.615,-28.13,-20.208],"0.83":[15.163,-27.861,-20.802],"0.88":[14.772,-27.684,-21.282],"0.92":[14.349,-27.503,-21.72],"0.96":[14.15,-27.245,-21.815],"1.0":[14.118,-27.159,-21.822],"1.04":[14.108,-27.111,-21.825],"1.08":[14.1,-27.1,-21.82],"1.12":[14.098,-27.111,-21.809]}},"righthand":{"position":{"0.0":[-0.5,3.7,0],"0.64":{"pre":[-0.5,3.7,0],"post":[-0.5,2.2,0]}},"scale":[1,1.4,1]},"root":{"position":{"0.0":[0,0,7.18267],"0.49":{"pre":[0,0,7.18267],"post":[0,0,0]}}}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"inspect":{"loop":true,"animation_length":6.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[86.892,-49.453,-93.634],"0.04":[89.373,-49.773,-97.598],"0.08":[93.034,-49.959,-103.457],"0.12":[97.519,-49.771,-110.642],"0.17":[102.232,-48.972,-118.376],"0.21":[106.63,-47.663,-125.926],"0.25":[110.89,-45.589,-134.019],"0.29":[115.481,-42.02,-144.221],"0.33":[119.616,-37.662,-154.781],"0.38":[122.802,-32.269,-164.215],"0.42":[124.532,-25.516,-172.078],"0.46":[124.804,-18.126,-178.412],"0.5":[123.81,-10.911,-183.467],"0.54":[122.073,-4.432,-187.972],"0.58":[120.018,0.919,-192.407],"0.62":[117.983,5.323,-197.193],"0.67":[116.066,9.446,-202.211],"0.71":[114.094,13.552,-207.242],"0.75":[112.002,17.593,-211.979],"0.79":[109.779,21.481,-216.223],"0.83":[107.557,24.876,-219.552],"0.88":[105.776,27.524,-221.97],"0.92":[104.585,29.479,-223.671],"0.96":[103.809,30.901,-224.833],"1.0":[103.231,31.997,-225.696],"1.04":[102.548,32.984,-226.539],"1.08":[101.886,33.795,-227.284],"1.12":[101.31,34.416,-227.906],"1.17":[100.918,34.821,-228.279],"1.21":[100.559,35.199,-228.656],"1.25":[100.262,35.493,-228.954],"1.29":[100.147,35.624,-229.085],"1.33":[100.173,35.571,-229.042],"1.38":[100.259,35.473,-228.907],"1.42":[100.375,35.326,-228.752],"1.46":[100.497,35.163,-228.609],"1.5":[100.612,34.932,-228.505],"1.54":[100.704,34.612,-228.414],"1.58":[100.989,34.192,-228.09],"1.62":[101.763,33.546,-227.318],"1.67":[103.276,32.577,-225.854],"1.71":[105.065,31.28,-224.043],"1.75":[106.86,29.686,-222.071],"1.79":[108.655,27.785,-219.927],"1.83":[110.515,25.526,-217.617],"1.88":[112.423,22.966,-215.151],"1.92":[114.401,20.101,-212.527],"1.96":[116.47,16.891,-209.73],"2.0":[118.714,12.706,-206.297],"2.04":[120.924,7.622,-202.162],"2.08":[122.889,2.23,-197.445],"2.12":[124.624,-2.97,-192.319],"2.17":[126.433,-7.71,-187.292],"2.21":[128.61,-13.191,-182.669],"2.25":[130.717,-19.649,-178.228],"2.29":[132.185,-26.134,-173.857],"2.33":[132.769,-31.376,-169.722],"2.38":[132.994,-35.614,-166.531],"2.42":[133.086,-39.11,-164.315],"2.46":[132.999,-41.521,-162.729],"2.5":[132.768,-42.883,-161.538],"2.54":[132.551,-43.815,-160.674],"2.58":[132.393,-44.425,-160.126],"2.62":[132.29,-44.823,-159.77],"2.67":[132.219,-45.086,-159.536],"2.71":[132.155,-45.336,-159.308],"2.75":[132.119,-45.521,-159.14],"2.79":[132.106,-45.641,-159.073],"2.83":[132.126,-45.665,-159.085],"2.88":[132.165,-45.643,-159.14],"2.92":[132.232,-45.571,-159.233],"2.96":[132.298,-45.477,-159.369],"3.0":[132.346,-45.373,-159.483],"3.04":[132.377,-45.255,-159.553],"3.08":[132.44,-45.129,-159.643],"3.12":[132.499,-44.983,-159.718],"3.17":[132.562,-44.775,-159.859],"3.21":[132.63,-44.485,-160.071],"3.25":[132.662,-44.063,-160.331],"3.29":[132.715,-43.497,-160.791],"3.33":[132.679,-42.811,-161.215],"3.38":[132.638,-42.038,-161.674],"3.42":[132.556,-41.09,-162.26],"3.46":[132.418,-39.901,-163.066],"3.5":[132.195,-38.343,-164.266],"3.54":[131.877,-36.387,-165.843],"3.58":[131.715,-34.079,-167.89],"3.62":[131.735,-31.424,-170.355],"3.67":[131.812,-28.483,-173.08],"3.71":[131.86,-25.351,-175.907],"3.75":[131.82,-22.09,-178.768],"3.79":[131.716,-18.597,-181.694],"3.83":[131.465,-14.773,-184.466],"3.88":[131.069,-10.723,-187.187],"3.92":[130.498,-6.461,-189.87],"3.96":[129.761,-2.109,-192.579],"4.0":[128.852,2.444,-195.453],"4.04":[127.799,7.64,-198.781],"4.08":[126.454,13.466,-202.315],"4.12":[124.691,19.443,-205.727],"4.17":[122.632,24.758,-208.587],"4.21":[120.471,28.805,-211.032],"4.25":[118.388,31.69,-213.343],"4.29":[116.429,33.742,-215.585],"4.33":[114.583,35.117,-217.714],"4.38":[112.835,36.156,-219.586],"4.42":[111.089,36.954,-221.196],"4.46":[109.424,37.351,-222.616],"4.5":[107.948,37.343,-223.746],"4.54":[106.61,37.151,-224.74],"4.58":[105.433,36.876,-225.601],"4.62":[104.393,36.702,-226.358],"4.67":[103.493,36.561,-227.021],"4.71":[102.732,36.347,-227.542],"4.75":[102.121,36.12,-227.925],"4.79":[101.647,35.91,-228.224],"4.83":[101.326,35.784,-228.42],"4.88":[101.112,35.766,-228.528],"4.92":[100.839,35.769,-228.708],"4.96":[100.471,35.736,-228.927],"5.0":[100.066,35.569,-229.12],"5.04":[99.804,35.093,-228.935],"5.08":[100.113,33.742,-227.62],"5.12":[101.705,29.776,-224.767],"5.17":[109.487,18.916,-214.339],"5.21":[115,7.7,-203.458],"5.25":[117.222,-1.536,-195.075],"5.29":[117.882,-9.154,-188.205],"5.33":[119.778,-16.612,-181.039],"5.38":[121.385,-25.191,-170.98],"5.42":[119.699,-33.22,-155.049],"5.46":[116.034,-36.271,-136.041],"5.5":[116.605,-37.852,-121.3],"5.54":[115.651,-41.108,-113.069],"5.58":[107.736,-44.154,-105.454],"5.62":[95.019,-46.16,-96.64],"5.67":[86.481,-47.067,-90.953],"5.71":[84.034,-47.728,-89.623],"5.75":[82.613,-48.429,-89.01],"5.79":[82.273,-49.029,-89.093],"5.83":[82.575,-49.448,-89.543],"5.88":[83.087,-49.553,-89.96],"5.92":[83.681,-49.539,-90.405],"5.96":[84.161,-49.512,-90.761],"6.0":[84.635,-49.479,-91.119],"6.04":[85.113,-49.404,-91.467],"6.08":[85.537,-49.345,-91.776],"6.12":[85.831,-49.29,-91.988]},"position":{"0.0":[-11.113,-25.132,-16.322],"0.04":[-11.103,-25.222,-16.185],"0.08":[-11.093,-25.343,-15.995],"0.12":[-11.076,-25.481,-15.773],"0.17":[-11.063,-25.615,-15.556],"0.21":[-11.049,-25.733,-15.367],"0.25":[-11.032,-25.815,-15.23],"0.29":[-11.012,-25.855,-15.147],"0.33":[-10.992,-25.858,-15.113],"0.38":[-10.975,-25.812,-15.097],"0.42":[-10.961,-25.72,-15.091],"0.46":[-10.942,-25.585,-15.088],"0.5":[-10.929,-25.429,-15.091],"0.54":[-10.913,-25.269,-15.096],"0.58":[-10.902,-25.117,-15.101],"0.62":[-10.889,-24.966,-15.109],"0.67":[-10.879,-24.797,-15.126],"0.71":[-10.868,-24.623,-15.146],"0.75":[-10.861,-24.455,-15.166],"0.79":[-10.855,-24.303,-15.183],"0.83":[-10.856,-24.184,-15.197],"0.88":[-10.857,-24.097,-15.206],"0.92":[-10.857,-24.032,-15.211],"0.96":[-10.86,-23.993,-15.217],"1.0":[-10.861,-23.958,-15.217],"1.04":[-10.863,-23.935,-15.221],"1.08":[-10.866,-23.92,-15.224],"1.12":[-10.868,-23.907,-15.225],"1.17":[-10.873,-23.904,-15.228],"1.21":[-10.874,-23.904,-15.227],"1.25":[-10.877,-23.904,-15.227],"1.29":[-10.879,-23.904,-15.227],"1.33":[-10.879,-23.905,-15.227],"1.38":[-10.879,-23.905,-15.224],"1.42":[-10.878,-23.907,-15.223],"1.46":[-10.879,-23.917,-15.22],"1.5":[-10.875,-23.924,-15.218],"1.54":[-10.871,-23.935,-15.215],"1.58":[-10.865,-23.946,-15.211],"1.62":[-10.851,-23.965,-15.208],"1.67":[-10.835,-23.984,-15.204],"1.71":[-10.814,-24.008,-15.199],"1.75":[-10.792,-24.034,-15.195],"1.79":[-10.764,-24.063,-15.188],"1.83":[-10.739,-24.088,-15.183],"1.88":[-10.713,-24.117,-15.177],"1.92":[-10.691,-24.143,-15.17],"1.96":[-10.667,-24.164,-15.162],"2.0":[-10.65,-24.184,-15.152],"2.04":[-10.635,-24.205,-15.138],"2.08":[-10.619,-24.218,-15.126],"2.12":[-10.607,-24.229,-15.112],"2.17":[-10.6,-24.231,-15.1],"2.21":[-10.595,-24.213,-15.09],"2.25":[-10.59,-24.181,-15.079],"2.29":[-10.591,-24.134,-15.073],"2.33":[-10.59,-24.107,-15.071],"2.38":[-10.592,-24.088,-15.07],"2.42":[-10.589,-24.069,-15.071],"2.46":[-10.593,-24.059,-15.071],"2.5":[-10.592,-24.05,-15.071],"2.54":[-10.591,-24.041,-15.072],"2.58":[-10.592,-24.036,-15.071],"2.62":[-10.59,-24.032,-15.071],"2.67":[-10.59,-24.022,-15.069],"2.71":[-10.59,-24.021,-15.07],"2.75":[-10.592,-24.019,-15.071],"2.79":[-10.595,-24.019,-15.071],"2.83":[-10.59,-24.019,-15.07],"2.88":[-10.59,-24.018,-15.07],"2.92":[-10.589,-24.019,-15.07],"2.96":[-10.59,-24.019,-15.071],"3.0":[-10.59,-24.02,-15.071],"3.04":[-10.59,-24.022,-15.069],"3.08":[-10.593,-24.023,-15.07],"3.12":[-10.594,-24.032,-15.071],"3.17":[-10.596,-24.034,-15.069],"3.21":[-10.597,-24.038,-15.07],"3.25":[-10.597,-24.043,-15.069],"3.29":[-10.601,-24.055,-15.069],"3.33":[-10.607,-24.062,-15.07],"3.38":[-10.609,-24.073,-15.071],"3.42":[-10.616,-24.085,-15.07],"3.46":[-10.625,-24.096,-15.069],"3.5":[-10.639,-24.12,-15.071],"3.54":[-10.655,-24.153,-15.071],"3.58":[-10.678,-24.195,-15.075],"3.62":[-10.71,-24.251,-15.078],"3.67":[-10.741,-24.302,-15.088],"3.71":[-10.772,-24.35,-15.096],"3.75":[-10.798,-24.391,-15.107],"3.79":[-10.826,-24.414,-15.115],"3.83":[-10.848,-24.43,-15.129],"3.88":[-10.87,-24.438,-15.142],"3.92":[-10.886,-24.443,-15.155],"3.96":[-10.898,-24.44,-15.169],"4.0":[-10.902,-24.442,-15.178],"4.04":[-10.899,-24.434,-15.185],"4.08":[-10.901,-24.421,-15.189],"4.12":[-10.9,-24.399,-15.193],"4.17":[-10.898,-24.373,-15.196],"4.21":[-10.897,-24.347,-15.2],"4.25":[-10.895,-24.316,-15.203],"4.29":[-10.89,-24.276,-15.205],"4.33":[-10.89,-24.233,-15.209],"4.38":[-10.887,-24.2,-15.21],"4.42":[-10.886,-24.163,-15.212],"4.46":[-10.886,-24.128,-15.214],"4.5":[-10.882,-24.095,-15.215],"4.54":[-10.882,-24.058,-15.215],"4.58":[-10.879,-24.03,-15.217],"4.62":[-10.88,-24.004,-15.218],"4.67":[-10.878,-23.98,-15.217],"4.71":[-10.878,-23.964,-15.219],"4.75":[-10.877,-23.95,-15.221],"4.79":[-10.876,-23.939,-15.22],"4.83":[-10.878,-23.925,-15.224],"4.88":[-10.879,-23.915,-15.224],"4.92":[-10.878,-23.907,-15.225],"4.96":[-10.879,-23.904,-15.224],"5.0":[-10.879,-23.904,-15.227],"5.04":[-10.88,-23.911,-15.223],"5.08":[-10.888,-23.955,-15.205],"5.12":[-10.915,-24.108,-15.166],"5.17":[-10.986,-24.467,-15.089],"5.21":[-11.06,-24.828,-15.002],"5.25":[-11.117,-25.072,-14.918],"5.29":[-11.153,-25.211,-14.844],"5.33":[-11.175,-25.295,-14.793],"5.38":[-11.181,-25.31,-14.814],"5.42":[-11.173,-25.263,-14.989],"5.46":[-11.164,-25.208,-15.244],"5.5":[-11.15,-25.133,-15.559],"5.54":[-11.132,-25.05,-15.984],"5.58":[-11.118,-24.986,-16.384],"5.62":[-11.116,-24.979,-16.574],"5.67":[-11.117,-24.995,-16.602],"5.71":[-11.117,-25.009,-16.604],"5.75":[-11.118,-25.021,-16.59],"5.79":[-11.117,-25.038,-16.564],"5.83":[-11.117,-25.054,-16.52],"5.88":[-11.118,-25.07,-16.476],"5.92":[-11.118,-25.086,-16.434],"5.96":[-11.116,-25.089,-16.4],"6.0":[-11.118,-25.092,-16.388],"6.04":[-11.117,-25.096,-16.382],"6.08":[-11.117,-25.095,-16.377],"6.12":[-11.117,-25.095,-16.376]}},"blade":{"rotation":{"0.0":[21.285,9.286,166.645],"0.04":[25.579,8.644,167.733],"0.08":[31.233,7.774,169.181],"0.12":[37.259,6.859,170.716],"0.17":[42.275,6.134,171.962],"0.21":[45.284,5.701,172.666],"0.25":[46.081,5.9,172.347],"0.29":[46.181,6.878,170.817],"0.33":[46.224,8.423,169.034],"0.38":[46.259,10.169,167.116],"0.42":[46.318,12.158,165.273],"0.46":[46.486,14.182,164.271],"0.5":[47.651,16.511,164.123],"0.54":[49.701,18.941,164.09],"0.58":[51.655,21.101,164.02],"0.62":[53.181,22.931,163.656],"0.67":[54.697,24.733,162.816],"0.71":[56.164,26.41,161.79],"0.75":[57.38,27.824,160.814],"0.79":[58.234,28.774,160.111],"0.83":[58.449,29.026,159.89],"0.88":[58.45,29.028,159.896],"0.92":[58.455,29.023,159.899],"0.96":[58.442,29.032,159.888],"1.0":[58.438,29.032,159.884],"1.04":[58.444,29.032,159.894],"1.08":[58.441,29.031,159.892],"1.12":[58.447,29.017,159.884],"1.17":[58.457,29.021,159.879],"1.21":[58.458,29.015,159.877],"1.25":[58.436,29.015,159.87],"1.29":[58.446,29.019,159.881],"1.33":[58.454,29.009,159.874],"1.38":[58.457,29.018,159.88],"1.42":[58.458,29.021,159.88],"1.46":[58.438,29.012,159.882],"1.5":[58.434,29.03,159.87],"1.54":[58.445,29.03,159.874],"1.58":[58.45,29.023,159.894],"1.62":[58.459,29.032,159.902],"1.67":[58.436,29.032,159.89],"1.71":[58.442,29.014,159.888],"1.75":[58.458,29.018,159.899],"1.79":[58.444,29.04,159.902],"1.83":[58.443,29.025,159.899],"1.88":[58.437,29.032,159.889],"1.92":[58.429,29.016,159.905],"1.96":[58.433,29.018,159.9],"2.0":[58.42,29.034,159.891],"2.04":[58.432,29.04,159.9],"2.08":[58.438,29.027,159.895],"2.12":[58.227,28.112,160.466],"2.17":[57.478,24.879,162.414],"2.21":[56.418,20.204,165.269],"2.25":[55.214,14.957,168.522],"2.29":[54.033,9.808,171.684],"2.33":[53.078,5.577,174.245],"2.38":[52.209,1.722,176.553],"2.42":[51.323,-2.249,178.92],"2.46":[50.429,-6.246,181.291],"2.5":[49.581,-10.165,183.599],"2.54":[48.748,-13.917,185.842],"2.58":[47.953,-17.403,187.947],"2.62":[47.215,-20.568,189.9],"2.67":[46.552,-23.235,191.615],"2.71":[45.958,-25.391,193.109],"2.75":[45.421,-27.054,194.406],"2.79":[44.921,-28.296,195.51],"2.83":[44.497,-29.139,196.415],"2.88":[44.156,-29.685,197.129],"2.92":[43.893,-30.019,197.674],"2.96":[43.676,-30.181,198.046],"3.0":[43.582,-30.214,198.216],"3.04":[43.621,-30.133,198.176],"3.08":[43.817,-29.79,197.753],"3.12":[44.196,-29.125,196.977],"3.17":[44.664,-28.257,195.95],"3.21":[45.158,-27.333,194.866],"3.25":[45.635,-26.447,193.88],"3.29":[45.992,-25.759,193.073],"3.33":[46.174,-25.35,192.667],"3.38":[46.265,-25.155,192.472],"3.42":[46.315,-24.988,192.331],"3.46":[46.409,-24.678,192.07],"3.5":[46.642,-23.98,191.435],"3.54":[47.087,-22.711,190.341],"3.58":[47.679,-20.768,188.868],"3.62":[48.344,-18.229,187.135],"3.67":[49.101,-15.124,185.152],"3.71":[49.908,-11.621,183.012],"3.75":[50.732,-7.858,180.778],"3.79":[51.592,-4.019,178.471],"3.83":[52.445,-0.041,176.169],"3.88":[53.272,3.836,173.924],"3.92":[54.063,7.564,171.796],"3.96":[54.811,11.001,169.802],"4.0":[55.456,14.01,168.017],"4.04":[56.079,16.956,166.336],"4.08":[56.681,19.915,164.704],"4.12":[57.232,22.75,163.149],"4.17":[57.708,25.193,161.852],"4.21":[58.068,27.167,160.814],"4.25":[58.323,28.484,160.132],"4.29":[58.42,29.027,159.875],"4.33":[58.435,29.013,159.874],"4.38":[58.451,29.033,159.882],"4.42":[58.438,29.04,159.878],"4.46":[58.455,29.016,159.873],"4.5":[58.442,29.025,159.869],"4.54":[58.435,29.021,159.872],"4.58":[58.437,29.018,159.857],"4.62":[58.449,29.021,159.876],"4.67":[58.446,29.015,159.879],"4.71":[58.44,29.015,159.87],"4.75":[58.429,29.021,159.866],"4.79":[58.442,29.025,159.858],"4.83":[58.453,29.011,159.868],"4.88":[58.436,29.019,159.877],"4.92":[58.447,29.017,159.876],"4.96":[58.457,29.009,159.881],"5.0":[58.45,29.016,159.883],"5.04":[58.449,29.015,159.881],"5.08":[58.437,29.015,159.891],"5.12":[58.458,29.02,159.904],"5.17":[58.455,29.024,159.877],"5.21":[58.441,29.015,159.883],"5.25":[57.602,27.861,160.299],"5.29":[54.384,23.871,161.732],"5.33":[49.16,18.576,163.479],"5.38":[42.241,14.553,164.656],"5.42":[33.293,12.134,165.4],"5.46":[26.328,10.836,165.947],"5.5":[20.283,10.103,166.032],"5.54":[16.685,9.721,166.134],"5.58":[16.617,9.584,166.181],"5.62":[18.545,9.59,166.186],"5.67":[19.445,9.571,166.173],"5.71":[19.446,9.566,166.182],"5.75":[19.453,9.573,166.186],"5.79":[19.445,9.589,166.166],"5.83":[19.435,9.55,166.17],"5.88":[19.446,9.568,166.179],"5.92":[19.44,9.566,166.179],"5.96":[19.434,9.57,166.177],"6.0":[19.437,9.553,166.169],"6.04":[19.442,9.55,166.185],"6.08":[19.44,9.555,166.182],"6.12":[19.445,9.564,166.186]},"position":{"0.0":[5.279,13.216,-2.264],"0.04":[5.2,13.335,-2.311],"0.08":[5.1,13.486,-2.371],"0.12":[4.994,13.648,-2.419],"0.17":[4.924,13.791,-2.453],"0.21":[4.88,13.9,-2.468],"0.25":[4.875,13.972,-2.47],"0.29":[4.89,14.019,-2.464],"0.33":[4.912,14.065,-2.443],"0.38":[4.939,14.084,-2.418],"0.42":[4.965,14.108,-2.39],"0.46":[4.993,14.142,-2.369],"0.5":[4.977,14.245,-2.345],"0.54":[4.939,14.375,-2.313],"0.58":[4.899,14.502,-2.279],"0.62":[4.868,14.608,-2.257],"0.67":[4.827,14.718,-2.245],"0.71":[4.781,14.817,-2.244],"0.75":[4.743,14.915,-2.243],"0.79":[4.718,14.978,-2.245],"0.83":[4.702,14.986,-2.247],"0.88":[4.702,14.985,-2.247],"0.92":[4.709,14.99,-2.241],"0.96":[4.701,14.986,-2.247],"1.0":[4.706,14.986,-2.244],"1.04":[4.706,14.987,-2.246],"1.08":[4.705,14.993,-2.246],"1.12":[4.707,14.989,-2.247],"1.17":[4.7,14.988,-2.244],"1.21":[4.704,14.992,-2.246],"1.25":[4.703,14.994,-2.245],"1.29":[4.698,14.985,-2.246],"1.33":[4.698,14.987,-2.246],"1.38":[4.706,14.994,-2.243],"1.42":[4.704,14.991,-2.242],"1.46":[4.699,14.99,-2.245],"1.5":[4.707,14.993,-2.248],"1.54":[4.704,14.99,-2.245],"1.58":[4.707,14.994,-2.24],"1.62":[4.703,14.988,-2.245],"1.67":[4.703,14.985,-2.246],"1.71":[4.706,14.993,-2.244],"1.75":[4.705,14.992,-2.242],"1.79":[4.706,14.987,-2.251],"1.83":[4.708,14.991,-2.245],"1.88":[4.706,14.989,-2.248],"1.92":[4.707,14.991,-2.248],"1.96":[4.71,14.99,-2.248],"2.0":[4.709,14.984,-2.249],"2.04":[4.708,14.991,-2.246],"2.08":[4.712,14.993,-2.243],"2.12":[4.712,14.982,-2.258],"2.17":[4.696,14.965,-2.291],"2.21":[4.673,14.939,-2.34],"2.25":[4.65,14.911,-2.395],"2.29":[4.616,14.875,-2.438],"2.33":[4.579,14.857,-2.472],"2.38":[4.542,14.842,-2.501],"2.42":[4.504,14.821,-2.527],"2.46":[4.459,14.803,-2.56],"2.5":[4.41,14.791,-2.579],"2.54":[4.371,14.776,-2.598],"2.58":[4.332,14.767,-2.612],"2.62":[4.297,14.767,-2.616],"2.67":[4.275,14.759,-2.617],"2.71":[4.265,14.758,-2.619],"2.75":[4.258,14.758,-2.621],"2.79":[4.251,14.757,-2.624],"2.83":[4.251,14.759,-2.621],"2.88":[4.25,14.759,-2.621],"2.92":[4.251,14.761,-2.619],"2.96":[4.249,14.759,-2.62],"3.0":[4.248,14.759,-2.619],"3.04":[4.248,14.76,-2.619],"3.08":[4.244,14.759,-2.619],"3.12":[4.246,14.765,-2.623],"3.17":[4.244,14.763,-2.624],"3.21":[4.25,14.755,-2.628],"3.25":[4.252,14.756,-2.625],"3.29":[4.241,14.766,-2.619],"3.33":[4.244,14.762,-2.623],"3.38":[4.251,14.76,-2.624],"3.42":[4.247,14.763,-2.621],"3.46":[4.249,14.756,-2.623],"3.5":[4.248,14.758,-2.621],"3.54":[4.258,14.759,-2.622],"3.58":[4.271,14.762,-2.616],"3.62":[4.294,14.765,-2.616],"3.67":[4.322,14.774,-2.6],"3.71":[4.362,14.781,-2.587],"3.75":[4.407,14.792,-2.574],"3.79":[4.436,14.816,-2.542],"3.83":[4.478,14.832,-2.519],"3.88":[4.515,14.848,-2.491],"3.92":[4.552,14.869,-2.462],"3.96":[4.581,14.885,-2.427],"4.0":[4.603,14.9,-2.405],"4.04":[4.626,14.92,-2.374],"4.08":[4.645,14.935,-2.347],"4.12":[4.663,14.949,-2.319],"4.17":[4.682,14.969,-2.288],"4.21":[4.69,14.975,-2.273],"4.25":[4.695,14.984,-2.256],"4.29":[4.708,14.99,-2.25],"4.33":[4.705,14.986,-2.247],"4.38":[4.705,14.993,-2.245],"4.42":[4.704,14.99,-2.245],"4.46":[4.702,14.988,-2.245],"4.5":[4.707,14.994,-2.246],"4.54":[4.706,14.989,-2.244],"4.58":[4.702,14.988,-2.248],"4.62":[4.703,14.987,-2.247],"4.67":[4.707,14.99,-2.244],"4.71":[4.707,14.994,-2.245],"4.75":[4.705,14.989,-2.247],"4.79":[4.698,14.987,-2.247],"4.83":[4.698,14.986,-2.244],"4.88":[4.702,14.989,-2.244],"4.92":[4.705,14.991,-2.244],"4.96":[4.7,14.986,-2.245],"5.0":[4.699,14.986,-2.244],"5.04":[4.704,14.993,-2.244],"5.08":[4.706,14.991,-2.246],"5.12":[4.708,14.988,-2.239],"5.17":[4.701,14.984,-2.254],"5.21":[4.707,14.987,-2.25],"5.25":[4.721,14.936,-2.254],"5.29":[4.763,14.731,-2.282],"5.33":[4.806,14.427,-2.333],"5.38":[4.847,14.144,-2.38],"5.42":[4.932,13.855,-2.427],"5.46":[5.047,13.61,-2.423],"5.5":[5.177,13.354,-2.356],"5.54":[5.278,13.19,-2.304],"5.58":[5.32,13.134,-2.269],"5.62":[5.314,13.157,-2.25],"5.67":[5.308,13.178,-2.243],"5.71":[5.314,13.172,-2.242],"5.75":[5.31,13.172,-2.242],"5.79":[5.303,13.177,-2.244],"5.83":[5.31,13.17,-2.244],"5.88":[5.309,13.174,-2.244],"5.92":[5.313,13.175,-2.243],"5.96":[5.311,13.17,-2.241],"6.0":[5.313,13.168,-2.244],"6.04":[5.31,13.173,-2.244],"6.08":[5.314,13.168,-2.243],"6.12":[5.315,13.165,-2.243]}},"lefthand":{"rotation":{"0.0":[122.885,39.887,78.761],"0.04":[126.311,28.05,77.143],"0.08":[126.861,15.551,75.343],"0.12":[124.968,5.11,75.51],"0.17":[120.934,-4.002,78.105],"0.21":[115.691,-10.757,82.414],"0.25":[111.182,-14.636,87.375],"0.29":[109.396,-15.946,90.321],"0.33":[109.401,-15.945,90.305],"0.38":[109.395,-15.939,90.308],"0.42":[109.406,-15.945,90.295],"0.46":[109.404,-15.947,90.303],"0.5":[109.405,-15.949,90.286],"0.54":[109.412,-15.936,90.282],"0.58":[109.416,-15.929,90.276],"0.62":[109.42,-15.949,90.265],"0.67":[109.435,-15.935,90.266],"0.71":[109.439,-15.919,90.261],"0.75":[109.433,-15.921,90.249],"0.79":[109.445,-15.918,90.239],"0.83":[109.454,-15.914,90.224],"0.88":[109.465,-15.908,90.208],"0.92":[109.456,-15.908,90.208],"0.96":[109.467,-15.899,90.201],"1.0":[109.489,-15.891,90.186],"1.04":[109.493,-15.886,90.175],"1.08":[109.505,-15.877,90.145],"1.12":[109.515,-15.872,90.126],"1.17":[109.527,-15.872,90.124],"1.21":[109.537,-15.861,90.1],"1.25":[109.547,-15.849,90.097],"1.29":[109.571,-15.856,90.076],"1.33":[109.574,-15.837,90.048],"1.38":[109.591,-15.831,90.027],"1.42":[109.604,-15.818,90.014],"1.46":[109.607,-15.798,89.991],"1.5":[109.638,-15.795,89.96],"1.54":[109.695,-15.767,89.886],"1.58":[109.755,-15.735,89.794],"1.62":[109.789,-15.698,89.738],"1.67":[109.848,-15.673,89.664],"1.71":[109.889,-15.647,89.613],"1.75":[109.889,-15.637,89.584],"1.79":[109.916,-15.628,89.558],"1.83":[109.925,-15.612,89.543],"1.88":[109.934,-15.602,89.53],"1.92":[109.953,-15.595,89.511],"1.96":[109.959,-15.594,89.488],"2.0":[109.974,-15.583,89.48],"2.04":[109.996,-15.574,89.46],"2.08":[109.989,-15.557,89.455],"2.12":[110.016,-15.567,89.41],"2.17":[110.028,-15.546,89.39],"2.21":[110.048,-15.533,89.372],"2.25":[110.056,-15.528,89.363],"2.29":[110.06,-15.527,89.337],"2.33":[110.091,-15.509,89.315],"2.38":[110.1,-15.5,89.294],"2.42":[110.123,-15.495,89.266],"2.46":[110.134,-15.489,89.243],"2.5":[110.133,-15.484,89.241],"2.54":[110.16,-15.466,89.214],"2.58":[110.181,-15.446,89.195],"2.62":[110.175,-15.449,89.187],"2.67":[110.19,-15.441,89.158],"2.71":[110.205,-15.435,89.133],"2.75":[110.217,-15.416,89.121],"2.79":[110.224,-15.409,89.111],"2.83":[110.246,-15.402,89.088],"2.88":[110.272,-15.39,89.062],"2.92":[110.287,-15.38,89.04],"2.96":[110.294,-15.372,89.016],"3.0":[110.301,-15.361,89.007],"3.04":[110.308,-15.354,89.001],"3.08":[110.327,-15.351,88.969],"3.12":[110.334,-15.332,88.957],"3.17":[110.357,-15.333,88.935],"3.21":[110.358,-15.319,88.924],"3.25":[110.371,-15.304,88.899],"3.29":[110.389,-15.313,88.891],"3.33":[110.396,-15.29,88.87],"3.38":[110.402,-15.29,88.859],"3.42":[110.414,-15.288,88.845],"3.46":[110.444,-15.292,88.808],"3.5":[110.451,-15.274,88.808],"3.54":[110.463,-15.262,88.789],"3.58":[110.468,-15.256,88.777],"3.62":[110.47,-15.244,88.763],"3.67":[110.475,-15.246,88.756],"3.71":[110.493,-15.241,88.732],"3.75":[110.51,-15.23,88.728],"3.79":[110.511,-15.229,88.721],"3.83":[110.516,-15.22,88.697],"3.88":[110.524,-15.214,88.692],"3.92":[110.534,-15.209,88.675],"3.96":[110.528,-15.202,88.672],"4.0":[110.541,-15.196,88.668],"4.04":[110.563,-15.205,88.642],"4.08":[110.558,-15.188,88.636],"4.12":[110.557,-15.184,88.635],"4.17":[110.566,-15.185,88.635],"4.21":[110.57,-15.185,88.622],"4.25":[110.57,-15.178,88.626],"4.29":[110.579,-15.163,88.604],"4.33":[110.58,-15.167,88.603],"4.38":[110.589,-15.174,88.596],"4.42":[110.589,-15.179,88.595],"4.46":[110.58,-15.152,88.597],"4.5":[110.587,-15.174,88.594],"4.54":[110.585,-15.17,88.586],"4.58":[110.579,-15.171,88.589],"4.62":[110.578,-15.173,88.593],"4.67":[110.589,-15.165,88.585],"4.71":[110.58,-15.169,88.585],"4.75":[110.578,-15.173,88.593],"4.79":[110.578,-15.173,88.593],"4.83":[110.574,-15.174,88.591],"4.88":[110.58,-15.169,88.585],"4.92":[110.575,-15.172,88.587],"4.96":[110.578,-15.173,88.593],"5.0":[110.579,-15.171,88.589],"5.04":[110.582,-15.165,88.577],"5.08":[110.582,-15.165,88.577],"5.12":[110.588,-15.168,88.58],"5.17":[110.583,-15.167,88.577],"5.21":[111.181,-14.331,87.872],"5.25":[113.716,-10.094,84.667],"5.29":[116.864,-2.254,79.845],"5.33":[118.78,7.215,75.219],"5.38":[119.038,16.642,72.095],"5.42":[118.533,25.506,70.967],"5.46":[118.406,32.561,70.834],"5.5":[118.42,37.884,71.047],"5.54":[118.021,41.407,71.394],"5.58":[117.521,43.615,71.784],"5.62":[117.312,44.934,72.389],"5.67":[117.4,45.578,73.241],"5.71":[117.677,45.927,74.266],"5.75":[118.098,46.09,75.374],"5.79":[118.585,46.062,76.389],"5.83":[119.016,45.932,77.165],"5.88":[119.369,45.764,77.79],"5.92":[119.632,45.623,78.279],"5.96":[119.753,45.554,78.601],"6.0":[119.822,45.502,78.871],"6.04":[119.829,45.508,78.919],"6.08":[119.823,45.503,78.923],"6.12":[119.819,45.513,78.907]},"position":{"0.0":[14.819,-28.015,-20.998],"0.04":[16.337,-29.755,-19.336],"0.08":[17.913,-31.344,-17.654],"0.12":[19.101,-32.528,-16.229],"0.17":[20.069,-33.537,-14.981],"0.21":[20.583,-34.071,-14.241],"0.25":[20.48,-34.194,-14.185],"0.29":[20.262,-34.389,-14.437],"0.33":[20.214,-34.802,-14.732],"0.38":[20.166,-35.259,-15.052],"0.42":[20.114,-35.699,-15.363],"0.46":[20.077,-36.064,-15.619],"0.5":[20.055,-36.203,-15.71],"0.54":[20.053,-36.298,-15.78],"0.58":[20.041,-36.332,-15.804],"0.62":[20.037,-36.334,-15.802],"0.67":[20.037,-36.333,-15.803],"0.71":[20.037,-36.333,-15.803],"0.75":[20.039,-36.333,-15.803],"0.79":[20.038,-36.334,-15.803],"0.83":[20.039,-36.334,-15.802],"0.88":[20.04,-36.334,-15.803],"0.92":[20.042,-36.335,-15.802],"0.96":[20.043,-36.335,-15.802],"1.0":[20.042,-36.336,-15.801],"1.04":[20.043,-36.337,-15.801],"1.08":[20.044,-36.337,-15.801],"1.12":[20.045,-36.337,-15.801],"1.17":[20.045,-36.339,-15.8],"1.21":[20.047,-36.34,-15.8],"1.25":[20.048,-36.34,-15.8],"1.29":[20.048,-36.341,-15.799],"1.33":[20.05,-36.341,-15.799],"1.38":[20.051,-36.343,-15.798],"1.42":[20.053,-36.342,-15.799],"1.46":[20.054,-36.343,-15.798],"1.5":[20.056,-36.345,-15.799],"1.54":[20.06,-36.352,-15.803],"1.58":[20.065,-36.359,-15.801],"1.62":[20.071,-36.364,-15.799],"1.67":[20.075,-36.367,-15.796],"1.71":[20.077,-36.369,-15.796],"1.75":[20.069,-36.369,-15.796],"1.79":[20.067,-36.37,-15.796],"1.83":[20.068,-36.37,-15.796],"1.88":[20.069,-36.371,-15.795],"1.92":[20.07,-36.372,-15.794],"1.96":[20.071,-36.374,-15.793],"2.0":[20.072,-36.376,-15.8],"2.04":[20.073,-36.382,-15.8],"2.08":[20.075,-36.383,-15.8],"2.12":[20.076,-36.385,-15.799],"2.17":[20.078,-36.386,-15.798],"2.21":[20.079,-36.385,-15.799],"2.25":[20.08,-36.387,-15.798],"2.29":[20.083,-36.388,-15.797],"2.33":[20.083,-36.388,-15.797],"2.38":[20.084,-36.389,-15.797],"2.42":[20.085,-36.39,-15.797],"2.46":[20.087,-36.392,-15.795],"2.5":[20.089,-36.392,-15.795],"2.54":[20.09,-36.393,-15.795],"2.58":[20.09,-36.394,-15.794],"2.62":[20.092,-36.395,-15.794],"2.67":[20.094,-36.395,-15.794],"2.71":[20.095,-36.396,-15.793],"2.75":[20.096,-36.397,-15.793],"2.79":[20.097,-36.398,-15.793],"2.83":[20.098,-36.399,-15.792],"2.88":[20.099,-36.4,-15.791],"2.92":[20.1,-36.4,-15.791],"2.96":[20.102,-36.409,-15.791],"3.0":[20.103,-36.41,-15.798],"3.04":[20.105,-36.41,-15.798],"3.08":[20.095,-36.411,-15.797],"3.12":[20.092,-36.411,-15.797],"3.17":[20.093,-36.412,-15.796],"3.21":[20.095,-36.413,-15.796],"3.25":[20.096,-36.413,-15.796],"3.29":[20.096,-36.415,-15.795],"3.33":[20.098,-36.414,-15.796],"3.38":[20.099,-36.416,-15.795],"3.42":[20.099,-36.417,-15.794],"3.46":[20.1,-36.418,-15.793],"3.5":[20.101,-36.418,-15.793],"3.54":[20.102,-36.419,-15.793],"3.58":[20.103,-36.419,-15.793],"3.62":[20.105,-36.419,-15.794],"3.67":[20.106,-36.421,-15.792],"3.71":[20.106,-36.422,-15.791],"3.75":[20.107,-36.421,-15.792],"3.79":[20.106,-36.422,-15.791],"3.83":[20.109,-36.423,-15.79],"3.88":[20.109,-36.423,-15.79],"3.92":[20.11,-36.423,-15.79],"3.96":[20.111,-36.423,-15.791],"4.0":[20.111,-36.424,-15.79],"4.04":[20.111,-36.426,-15.789],"4.08":[20.112,-36.425,-15.79],"4.12":[20.113,-36.425,-15.79],"4.17":[20.114,-36.425,-15.79],"4.21":[20.114,-36.426,-15.79],"4.25":[20.115,-36.426,-15.79],"4.29":[20.116,-36.426,-15.79],"4.33":[20.116,-36.426,-15.79],"4.38":[20.115,-36.428,-15.788],"4.42":[20.116,-36.428,-15.788],"4.46":[20.117,-36.426,-15.79],"4.5":[20.116,-36.428,-15.788],"4.54":[20.117,-36.428,-15.788],"4.92":[20.117,-36.428,-15.788],"4.96":[20.117,-36.436,-15.788],"5.08":[20.117,-36.436,-15.788],"5.12":[20.117,-36.434,-15.789],"5.17":[20.117,-36.436,-15.788],"5.21":[19.968,-36.322,-15.958],"5.25":[19.245,-35.777,-16.781],"5.29":[18.037,-34.803,-18.191],"5.33":[16.721,-33.661,-19.776],"5.38":[15.738,-32.562,-20.958],"5.42":[15.136,-31.429,-21.551],"5.46":[14.674,-30.339,-21.862],"5.5":[14.34,-29.328,-22.046],"5.54":[14.121,-28.475,-22.174],"5.58":[14.018,-27.759,-22.235],"5.62":[14.009,-27.201,-22.217],"5.67":[14.03,-26.952,-22.155],"5.71":[14.058,-26.879,-22.083],"5.75":[14.08,-26.889,-22.011],"5.79":[14.099,-26.944,-21.927],"5.83":[14.105,-27.017,-21.875],"5.88":[14.105,-27.067,-21.839],"5.92":[14.107,-27.106,-21.815],"5.96":[14.104,-27.136,-21.793],"6.0":[14.101,-27.142,-21.792],"6.04":[14.099,-27.134,-21.796],"6.08":[14.096,-27.125,-21.806],"6.12":[14.098,-27.113,-21.809]}},"righthand":{"position":{"0.0":[-0.5,2.2,0],"0.71":[-1,3.45,0],"5.2":[-1,3.45,0],"5.62":[-0.5,2.2,0]},"scale":{"0.0":[1,1.4,1],"5.62":[1,1.4,1]}}}},"static_idle":{"loop":true,"animation_length":13.72,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[85.893,-49.343,-92.055],"0.04":[85.897,-49.389,-92.088],"0.08":[85.895,-49.439,-92.129],"0.12":[85.901,-49.492,-92.142],"0.17":[85.886,-49.516,-92.149],"0.21":[85.884,-49.563,-92.18],"0.25":[85.877,-49.597,-92.18],"0.29":[85.889,-49.615,-92.202],"0.33":[85.882,-49.628,-92.2],"0.38":[85.884,-49.627,-92.222],"0.42":[85.872,-49.628,-92.204],"0.46":[85.885,-49.623,-92.24],"0.5":[85.87,-49.596,-92.206],"0.54":[85.86,-49.554,-92.193],"0.58":[85.877,-49.513,-92.196],"0.62":[85.877,-49.474,-92.186],"0.67":[85.882,-49.41,-92.177],"0.71":[85.887,-49.338,-92.158],"0.75":[85.882,-49.273,-92.143],"0.79":[85.876,-49.192,-92.092],"0.83":[85.877,-49.106,-92.079],"0.88":[85.867,-49.032,-92.052],"0.92":[85.884,-48.955,-92.048],"0.96":[85.887,-48.862,-92.013],"1.0":[85.887,-48.785,-92.001],"1.04":[85.881,-48.712,-91.971],"1.08":[85.881,-48.633,-91.939],"1.12":[85.892,-48.561,-91.94],"1.17":[85.891,-48.498,-91.915],"1.21":[85.892,-48.433,-91.898],"1.25":[85.886,-48.378,-91.865],"1.29":[85.876,-48.329,-91.849],"1.33":[85.882,-48.306,-91.846],"1.38":[85.886,-48.291,-91.833],"1.42":[85.887,-48.284,-91.822],"1.46":[85.897,-48.27,-91.828],"1.5":[85.887,-48.302,-91.825],"1.54":[85.895,-48.324,-91.845],"1.58":[85.906,-48.369,-91.853],"1.62":[85.894,-48.408,-91.853],"1.67":[85.904,-48.479,-91.879],"1.71":[85.905,-48.547,-91.879],"1.75":[85.905,-48.649,-91.922],"1.79":[85.881,-48.731,-91.899],"1.83":[85.903,-48.855,-91.949],"1.88":[85.898,-48.986,-91.974],"1.92":[85.904,-49.126,-92.015],"1.96":[85.893,-49.343,-92.055],"2.0":[85.897,-49.389,-92.088],"2.04":[85.895,-49.439,-92.129],"2.08":[85.901,-49.492,-92.142],"2.13":[85.886,-49.516,-92.149],"2.17":[85.884,-49.563,-92.18],"2.21":[85.877,-49.597,-92.18],"2.25":[85.889,-49.615,-92.202],"2.29":[85.882,-49.628,-92.2],"2.34":[85.884,-49.627,-92.222],"2.38":[85.872,-49.628,-92.204],"2.42":[85.885,-49.623,-92.24],"2.46":[85.87,-49.596,-92.206],"2.5":[85.86,-49.554,-92.193],"2.54":[85.877,-49.513,-92.196],"2.58":[85.877,-49.474,-92.186],"2.63":[85.882,-49.41,-92.177],"2.67":[85.887,-49.338,-92.158],"2.71":[85.882,-49.273,-92.143],"2.75":[85.876,-49.192,-92.092],"2.79":[85.877,-49.106,-92.079],"2.84":[85.867,-49.032,-92.052],"2.88":[85.884,-48.955,-92.048],"2.92":[85.887,-48.862,-92.013],"2.96":[85.887,-48.785,-92.001],"3.0":[85.881,-48.712,-91.971],"3.04":[85.881,-48.633,-91.939],"3.08":[85.892,-48.561,-91.94],"3.13":[85.891,-48.498,-91.915],"3.17":[85.892,-48.433,-91.898],"3.21":[85.886,-48.378,-91.865],"3.25":[85.876,-48.329,-91.849],"3.29":[85.882,-48.306,-91.846],"3.34":[85.886,-48.291,-91.833],"3.38":[85.887,-48.284,-91.822],"3.42":[85.897,-48.27,-91.828],"3.46":[85.887,-48.302,-91.825],"3.5":[85.895,-48.324,-91.845],"3.54":[85.906,-48.369,-91.853],"3.58":[85.894,-48.408,-91.853],"3.63":[85.904,-48.479,-91.879],"3.67":[85.905,-48.547,-91.879],"3.71":[85.905,-48.649,-91.922],"3.75":[85.881,-48.731,-91.899],"3.79":[85.903,-48.855,-91.949],"3.84":[85.898,-48.986,-91.974],"3.88":[85.904,-49.126,-92.015],"3.92":[85.893,-49.343,-92.055],"3.96":[85.897,-49.389,-92.088],"4.0":[85.895,-49.439,-92.129],"4.04":[85.901,-49.492,-92.142],"4.09":[85.886,-49.516,-92.149],"4.13":[85.884,-49.563,-92.18],"4.17":[85.877,-49.597,-92.18],"4.21":[85.889,-49.615,-92.202],"4.25":[85.882,-49.628,-92.2],"4.3":[85.884,-49.627,-92.222],"4.34":[85.872,-49.628,-92.204],"4.38":[85.885,-49.623,-92.24],"4.42":[85.87,-49.596,-92.206],"4.46":[85.86,-49.554,-92.193],"4.5":[85.877,-49.513,-92.196],"4.54":[85.877,-49.474,-92.186],"4.59":[85.882,-49.41,-92.177],"4.63":[85.887,-49.338,-92.158],"4.67":[85.882,-49.273,-92.143],"4.71":[85.876,-49.192,-92.092],"4.75":[85.877,-49.106,-92.079],"4.8":[85.867,-49.032,-92.052],"4.84":[85.884,-48.955,-92.048],"4.88":[85.887,-48.862,-92.013],"4.92":[85.887,-48.785,-92.001],"4.96":[85.881,-48.712,-91.971],"5.0":[85.881,-48.633,-91.939],"5.04":[85.892,-48.561,-91.94],"5.09":[85.891,-48.498,-91.915],"5.13":[85.892,-48.433,-91.898],"5.17":[85.886,-48.378,-91.865],"5.21":[85.876,-48.329,-91.849],"5.25":[85.882,-48.306,-91.846],"5.3":[85.886,-48.291,-91.833],"5.34":[85.887,-48.284,-91.822],"5.38":[85.897,-48.27,-91.828],"5.42":[85.887,-48.302,-91.825],"5.46":[85.895,-48.324,-91.845],"5.5":[85.906,-48.369,-91.853],"5.54":[85.894,-48.408,-91.853],"5.59":[85.904,-48.479,-91.879],"5.63":[85.905,-48.547,-91.879],"5.67":[85.905,-48.649,-91.922],"5.71":[85.881,-48.731,-91.899],"5.75":[85.903,-48.855,-91.949],"5.8":[85.898,-48.986,-91.974],"5.84":[85.904,-49.126,-92.015],"5.88":[85.893,-49.343,-92.055],"5.92":[85.897,-49.389,-92.088],"5.96":[85.895,-49.439,-92.129],"6.0":[85.901,-49.492,-92.142],"6.05":[85.886,-49.516,-92.149],"6.09":[85.884,-49.563,-92.18],"6.13":[85.877,-49.597,-92.18],"6.17":[85.889,-49.615,-92.202],"6.21":[85.882,-49.628,-92.2],"6.26":[85.884,-49.627,-92.222],"6.3":[85.872,-49.628,-92.204],"6.34":[85.885,-49.623,-92.24],"6.38":[85.87,-49.596,-92.206],"6.42":[85.86,-49.554,-92.193],"6.46":[85.877,-49.513,-92.196],"6.5":[85.877,-49.474,-92.186],"6.55":[85.882,-49.41,-92.177],"6.59":[85.887,-49.338,-92.158],"6.63":[85.882,-49.273,-92.143],"6.67":[85.876,-49.192,-92.092],"6.71":[85.877,-49.106,-92.079],"6.76":[85.867,-49.032,-92.052],"6.8":[85.884,-48.955,-92.048],"6.84":[85.887,-48.862,-92.013],"6.88":[85.887,-48.785,-92.001],"6.92":[85.881,-48.712,-91.971],"6.96":[85.881,-48.633,-91.939],"7.0":[85.892,-48.561,-91.94],"7.05":[85.891,-48.498,-91.915],"7.09":[85.892,-48.433,-91.898],"7.13":[85.886,-48.378,-91.865],"7.17":[85.876,-48.329,-91.849],"7.21":[85.882,-48.306,-91.846],"7.26":[85.886,-48.291,-91.833],"7.3":[85.887,-48.284,-91.822],"7.34":[85.897,-48.27,-91.828],"7.38":[85.887,-48.302,-91.825],"7.42":[85.895,-48.324,-91.845],"7.46":[85.906,-48.369,-91.853],"7.5":[85.894,-48.408,-91.853],"7.55":[85.904,-48.479,-91.879],"7.59":[85.905,-48.547,-91.879],"7.63":[85.905,-48.649,-91.922],"7.67":[85.881,-48.731,-91.899],"7.71":[85.903,-48.855,-91.949],"7.76":[85.898,-48.986,-91.974],"7.8":[85.904,-49.126,-92.015],"7.84":[85.893,-49.343,-92.055],"7.88":[85.897,-49.389,-92.088],"7.92":[85.895,-49.439,-92.129],"7.96":[85.901,-49.492,-92.142],"8.01":[85.886,-49.516,-92.149],"8.05":[85.884,-49.563,-92.18],"8.09":[85.877,-49.597,-92.18],"8.13":[85.889,-49.615,-92.202],"8.17":[85.882,-49.628,-92.2],"8.22":[85.884,-49.627,-92.222],"8.26":[85.872,-49.628,-92.204],"8.3":[85.885,-49.623,-92.24],"8.34":[85.87,-49.596,-92.206],"8.38":[85.86,-49.554,-92.193],"8.42":[85.877,-49.513,-92.196],"8.46":[85.877,-49.474,-92.186],"8.51":[85.882,-49.41,-92.177],"8.55":[85.887,-49.338,-92.158],"8.59":[85.882,-49.273,-92.143],"8.63":[85.876,-49.192,-92.092],"8.67":[85.877,-49.106,-92.079],"8.72":[85.867,-49.032,-92.052],"8.76":[85.884,-48.955,-92.048],"8.8":[85.887,-48.862,-92.013],"8.84":[85.887,-48.785,-92.001],"8.88":[85.881,-48.712,-91.971],"8.92":[85.881,-48.633,-91.939],"8.96":[85.892,-48.561,-91.94],"9.01":[85.891,-48.498,-91.915],"9.05":[85.892,-48.433,-91.898],"9.09":[85.886,-48.378,-91.865],"9.13":[85.876,-48.329,-91.849],"9.17":[85.882,-48.306,-91.846],"9.22":[85.886,-48.291,-91.833],"9.26":[85.887,-48.284,-91.822],"9.3":[85.897,-48.27,-91.828],"9.34":[85.887,-48.302,-91.825],"9.38":[85.895,-48.324,-91.845],"9.42":[85.906,-48.369,-91.853],"9.46":[85.894,-48.408,-91.853],"9.51":[85.904,-48.479,-91.879],"9.55":[85.905,-48.547,-91.879],"9.59":[85.905,-48.649,-91.922],"9.63":[85.881,-48.731,-91.899],"9.67":[85.903,-48.855,-91.949],"9.72":[85.898,-48.986,-91.974],"9.76":[85.904,-49.126,-92.015],"9.8":[85.893,-49.343,-92.055],"9.84":[85.897,-49.389,-92.088],"9.88":[85.895,-49.439,-92.129],"9.92":[85.901,-49.492,-92.142],"9.97":[85.886,-49.516,-92.149],"10.01":[85.884,-49.563,-92.18],"10.05":[85.877,-49.597,-92.18],"10.09":[85.889,-49.615,-92.202],"10.13":[85.882,-49.628,-92.2],"10.18":[85.884,-49.627,-92.222],"10.22":[85.872,-49.628,-92.204],"10.26":[85.885,-49.623,-92.24],"10.3":[85.87,-49.596,-92.206],"10.34":[85.86,-49.554,-92.193],"10.38":[85.877,-49.513,-92.196],"10.42":[85.877,-49.474,-92.186],"10.47":[85.882,-49.41,-92.177],"10.51":[85.887,-49.338,-92.158],"10.55":[85.882,-49.273,-92.143],"10.59":[85.876,-49.192,-92.092],"10.63":[85.877,-49.106,-92.079],"10.68":[85.867,-49.032,-92.052],"10.72":[85.884,-48.955,-92.048],"10.76":[85.887,-48.862,-92.013],"10.8":[85.887,-48.785,-92.001],"10.84":[85.881,-48.712,-91.971],"10.88":[85.881,-48.633,-91.939],"10.92":[85.892,-48.561,-91.94],"10.97":[85.891,-48.498,-91.915],"11.01":[85.892,-48.433,-91.898],"11.05":[85.886,-48.378,-91.865],"11.09":[85.876,-48.329,-91.849],"11.13":[85.882,-48.306,-91.846],"11.18":[85.886,-48.291,-91.833],"11.22":[85.887,-48.284,-91.822],"11.26":[85.897,-48.27,-91.828],"11.3":[85.887,-48.302,-91.825],"11.34":[85.895,-48.324,-91.845],"11.38":[85.906,-48.369,-91.853],"11.42":[85.894,-48.408,-91.853],"11.47":[85.904,-48.479,-91.879],"11.51":[85.905,-48.547,-91.879],"11.55":[85.905,-48.649,-91.922],"11.59":[85.881,-48.731,-91.899],"11.63":[85.903,-48.855,-91.949],"11.68":[85.898,-48.986,-91.974],"11.72":[85.904,-49.126,-92.015],"11.76":[85.893,-49.343,-92.055],"11.8":[85.897,-49.389,-92.088],"11.84":[85.895,-49.439,-92.129],"11.88":[85.901,-49.492,-92.142],"11.93":[85.886,-49.516,-92.149],"11.97":[85.884,-49.563,-92.18],"12.01":[85.877,-49.597,-92.18],"12.05":[85.889,-49.615,-92.202],"12.09":[85.882,-49.628,-92.2],"12.14":[85.884,-49.627,-92.222],"12.18":[85.872,-49.628,-92.204],"12.22":[85.885,-49.623,-92.24],"12.26":[85.87,-49.596,-92.206],"12.3":[85.86,-49.554,-92.193],"12.34":[85.877,-49.513,-92.196],"12.38":[85.877,-49.474,-92.186],"12.43":[85.882,-49.41,-92.177],"12.47":[85.887,-49.338,-92.158],"12.51":[85.882,-49.273,-92.143],"12.55":[85.876,-49.192,-92.092],"12.59":[85.877,-49.106,-92.079],"12.64":[85.867,-49.032,-92.052],"12.68":[85.884,-48.955,-92.048],"12.72":[85.887,-48.862,-92.013],"12.76":[85.887,-48.785,-92.001],"12.8":[85.881,-48.712,-91.971],"12.84":[85.881,-48.633,-91.939],"12.88":[85.892,-48.561,-91.94],"12.93":[85.891,-48.498,-91.915],"12.97":[85.892,-48.433,-91.898],"13.01":[85.886,-48.378,-91.865],"13.05":[85.876,-48.329,-91.849],"13.09":[85.882,-48.306,-91.846],"13.14":[85.886,-48.291,-91.833],"13.18":[85.887,-48.284,-91.822],"13.22":[85.897,-48.27,-91.828],"13.26":[85.887,-48.302,-91.825],"13.3":[85.895,-48.324,-91.845],"13.34":[85.906,-48.369,-91.853],"13.38":[85.894,-48.408,-91.853],"13.43":[85.904,-48.479,-91.879],"13.47":[85.905,-48.547,-91.879],"13.51":[85.905,-48.649,-91.922],"13.55":[85.881,-48.731,-91.899],"13.59":[85.903,-48.855,-91.949],"13.64":[85.898,-48.986,-91.974],"13.68":[85.904,-49.126,-92.015],"13.72":{"pre":[85.916,-49.286,-92.05],"post":[85.916,-49.286,-92.05],"lerp_mode":"catmullrom"}},"position":{"0.0":[-11.115,-25.118,-16.38],"0.04":[-11.116,-25.136,-16.383],"0.08":[-11.113,-25.152,-16.384],"0.12":[-11.114,-25.172,-16.386],"0.17":[-11.111,-25.185,-16.387],"0.21":[-11.111,-25.198,-16.386],"0.25":[-11.11,-25.205,-16.388],"0.29":[-11.11,-25.213,-16.388],"0.33":[-11.108,-25.224,-16.389],"0.38":[-11.109,-25.227,-16.388],"0.42":[-11.109,-25.23,-16.389],"0.46":[-11.109,-25.23,-16.39],"0.5":[-11.108,-25.229,-16.389],"0.54":[-11.109,-25.227,-16.39],"0.58":[-11.108,-25.217,-16.389],"0.62":[-11.11,-25.209,-16.386],"0.67":[-11.11,-25.203,-16.388],"0.71":[-11.11,-25.192,-16.387],"0.75":[-11.111,-25.18,-16.385],"0.79":[-11.114,-25.171,-16.386],"0.83":[-11.113,-25.155,-16.385],"0.88":[-11.115,-25.144,-16.381],"0.92":[-11.115,-25.127,-16.38],"0.96":[-11.115,-25.116,-16.379],"1.0":[-11.117,-25.097,-16.378],"1.04":[-11.117,-25.087,-16.377],"1.08":[-11.118,-25.071,-16.377],"1.12":[-11.12,-25.059,-16.372],"1.17":[-11.119,-25.043,-16.372],"1.21":[-11.12,-25.034,-16.372],"1.25":[-11.122,-25.021,-16.37],"1.29":[-11.123,-25.014,-16.371],"1.33":[-11.124,-25.007,-16.368],"1.38":[-11.125,-25.003,-16.369],"1.42":[-11.124,-25,-16.367],"1.46":[-11.123,-24.999,-16.367],"1.5":[-11.123,-24.999,-16.367],"1.54":[-11.124,-25,-16.367],"1.58":[-11.125,-25.002,-16.368],"1.62":[-11.121,-25.006,-16.371],"1.67":[-11.122,-25.01,-16.369],"1.71":[-11.122,-25.021,-16.371],"1.75":[-11.122,-25.03,-16.369],"1.79":[-11.122,-25.039,-16.373],"1.83":[-11.119,-25.05,-16.373],"1.88":[-11.119,-25.065,-16.374],"1.92":[-11.118,-25.081,-16.375],"1.96":[-11.115,-25.118,-16.38],"2.0":[-11.116,-25.136,-16.383],"2.04":[-11.113,-25.152,-16.384],"2.08":[-11.114,-25.172,-16.386],"2.13":[-11.111,-25.185,-16.387],"2.17":[-11.111,-25.198,-16.386],"2.21":[-11.11,-25.205,-16.388],"2.25":[-11.11,-25.213,-16.388],"2.29":[-11.108,-25.224,-16.389],"2.34":[-11.109,-25.227,-16.388],"2.38":[-11.109,-25.23,-16.389],"2.42":[-11.109,-25.23,-16.39],"2.46":[-11.108,-25.229,-16.389],"2.5":[-11.109,-25.227,-16.39],"2.54":[-11.108,-25.217,-16.389],"2.58":[-11.11,-25.209,-16.386],"2.63":[-11.11,-25.203,-16.388],"2.67":[-11.11,-25.192,-16.387],"2.71":[-11.111,-25.18,-16.385],"2.75":[-11.114,-25.171,-16.386],"2.79":[-11.113,-25.155,-16.385],"2.84":[-11.115,-25.144,-16.381],"2.88":[-11.115,-25.127,-16.38],"2.92":[-11.115,-25.116,-16.379],"2.96":[-11.117,-25.097,-16.378],"3.0":[-11.117,-25.087,-16.377],"3.04":[-11.118,-25.071,-16.377],"3.08":[-11.12,-25.059,-16.372],"3.13":[-11.119,-25.043,-16.372],"3.17":[-11.12,-25.034,-16.372],"3.21":[-11.122,-25.021,-16.37],"3.25":[-11.123,-25.014,-16.371],"3.29":[-11.124,-25.007,-16.368],"3.34":[-11.125,-25.003,-16.369],"3.38":[-11.124,-25,-16.367],"3.42":[-11.123,-24.999,-16.367],"3.46":[-11.123,-24.999,-16.367],"3.5":[-11.124,-25,-16.367],"3.54":[-11.125,-25.002,-16.368],"3.58":[-11.121,-25.006,-16.371],"3.63":[-11.122,-25.01,-16.369],"3.67":[-11.122,-25.021,-16.371],"3.71":[-11.122,-25.03,-16.369],"3.75":[-11.122,-25.039,-16.373],"3.79":[-11.119,-25.05,-16.373],"3.84":[-11.119,-25.065,-16.374],"3.88":[-11.118,-25.081,-16.375],"3.92":[-11.115,-25.118,-16.38],"3.96":[-11.116,-25.136,-16.383],"4.0":[-11.113,-25.152,-16.384],"4.04":[-11.114,-25.172,-16.386],"4.09":[-11.111,-25.185,-16.387],"4.13":[-11.111,-25.198,-16.386],"4.17":[-11.11,-25.205,-16.388],"4.21":[-11.11,-25.213,-16.388],"4.25":[-11.108,-25.224,-16.389],"4.3":[-11.109,-25.227,-16.388],"4.34":[-11.109,-25.23,-16.389],"4.38":[-11.109,-25.23,-16.39],"4.42":[-11.108,-25.229,-16.389],"4.46":[-11.109,-25.227,-16.39],"4.5":[-11.108,-25.217,-16.389],"4.54":[-11.11,-25.209,-16.386],"4.59":[-11.11,-25.203,-16.388],"4.63":[-11.11,-25.192,-16.387],"4.67":[-11.111,-25.18,-16.385],"4.71":[-11.114,-25.171,-16.386],"4.75":[-11.113,-25.155,-16.385],"4.8":[-11.115,-25.144,-16.381],"4.84":[-11.115,-25.127,-16.38],"4.88":[-11.115,-25.116,-16.379],"4.92":[-11.117,-25.097,-16.378],"4.96":[-11.117,-25.087,-16.377],"5.0":[-11.118,-25.071,-16.377],"5.04":[-11.12,-25.059,-16.372],"5.09":[-11.119,-25.043,-16.372],"5.13":[-11.12,-25.034,-16.372],"5.17":[-11.122,-25.021,-16.37],"5.21":[-11.123,-25.014,-16.371],"5.25":[-11.124,-25.007,-16.368],"5.3":[-11.125,-25.003,-16.369],"5.34":[-11.124,-25,-16.367],"5.38":[-11.123,-24.999,-16.367],"5.42":[-11.123,-24.999,-16.367],"5.46":[-11.124,-25,-16.367],"5.5":[-11.125,-25.002,-16.368],"5.54":[-11.121,-25.006,-16.371],"5.59":[-11.122,-25.01,-16.369],"5.63":[-11.122,-25.021,-16.371],"5.67":[-11.122,-25.03,-16.369],"5.71":[-11.122,-25.039,-16.373],"5.75":[-11.119,-25.05,-16.373],"5.8":[-11.119,-25.065,-16.374],"5.84":[-11.118,-25.081,-16.375],"5.88":[-11.115,-25.118,-16.38],"5.92":[-11.116,-25.136,-16.383],"5.96":[-11.113,-25.152,-16.384],"6.0":[-11.114,-25.172,-16.386],"6.05":[-11.111,-25.185,-16.387],"6.09":[-11.111,-25.198,-16.386],"6.13":[-11.11,-25.205,-16.388],"6.17":[-11.11,-25.213,-16.388],"6.21":[-11.108,-25.224,-16.389],"6.26":[-11.109,-25.227,-16.388],"6.3":[-11.109,-25.23,-16.389],"6.34":[-11.109,-25.23,-16.39],"6.38":[-11.108,-25.229,-16.389],"6.42":[-11.109,-25.227,-16.39],"6.46":[-11.108,-25.217,-16.389],"6.5":[-11.11,-25.209,-16.386],"6.55":[-11.11,-25.203,-16.388],"6.59":[-11.11,-25.192,-16.387],"6.63":[-11.111,-25.18,-16.385],"6.67":[-11.114,-25.171,-16.386],"6.71":[-11.113,-25.155,-16.385],"6.76":[-11.115,-25.144,-16.381],"6.8":[-11.115,-25.127,-16.38],"6.84":[-11.115,-25.116,-16.379],"6.88":[-11.117,-25.097,-16.378],"6.92":[-11.117,-25.087,-16.377],"6.96":[-11.118,-25.071,-16.377],"7.0":[-11.12,-25.059,-16.372],"7.05":[-11.119,-25.043,-16.372],"7.09":[-11.12,-25.034,-16.372],"7.13":[-11.122,-25.021,-16.37],"7.17":[-11.123,-25.014,-16.371],"7.21":[-11.124,-25.007,-16.368],"7.26":[-11.125,-25.003,-16.369],"7.3":[-11.124,-25,-16.367],"7.34":[-11.123,-24.999,-16.367],"7.38":[-11.123,-24.999,-16.367],"7.42":[-11.124,-25,-16.367],"7.46":[-11.125,-25.002,-16.368],"7.5":[-11.121,-25.006,-16.371],"7.55":[-11.122,-25.01,-16.369],"7.59":[-11.122,-25.021,-16.371],"7.63":[-11.122,-25.03,-16.369],"7.67":[-11.122,-25.039,-16.373],"7.71":[-11.119,-25.05,-16.373],"7.76":[-11.119,-25.065,-16.374],"7.8":[-11.118,-25.081,-16.375],"7.84":[-11.115,-25.118,-16.38],"7.88":[-11.116,-25.136,-16.383],"7.92":[-11.113,-25.152,-16.384],"7.96":[-11.114,-25.172,-16.386],"8.01":[-11.111,-25.185,-16.387],"8.05":[-11.111,-25.198,-16.386],"8.09":[-11.11,-25.205,-16.388],"8.13":[-11.11,-25.213,-16.388],"8.17":[-11.108,-25.224,-16.389],"8.22":[-11.109,-25.227,-16.388],"8.26":[-11.109,-25.23,-16.389],"8.3":[-11.109,-25.23,-16.39],"8.34":[-11.108,-25.229,-16.389],"8.38":[-11.109,-25.227,-16.39],"8.42":[-11.108,-25.217,-16.389],"8.46":[-11.11,-25.209,-16.386],"8.51":[-11.11,-25.203,-16.388],"8.55":[-11.11,-25.192,-16.387],"8.59":[-11.111,-25.18,-16.385],"8.63":[-11.114,-25.171,-16.386],"8.67":[-11.113,-25.155,-16.385],"8.72":[-11.115,-25.144,-16.381],"8.76":[-11.115,-25.127,-16.38],"8.8":[-11.115,-25.116,-16.379],"8.84":[-11.117,-25.097,-16.378],"8.88":[-11.117,-25.087,-16.377],"8.92":[-11.118,-25.071,-16.377],"8.96":[-11.12,-25.059,-16.372],"9.01":[-11.119,-25.043,-16.372],"9.05":[-11.12,-25.034,-16.372],"9.09":[-11.122,-25.021,-16.37],"9.13":[-11.123,-25.014,-16.371],"9.17":[-11.124,-25.007,-16.368],"9.22":[-11.125,-25.003,-16.369],"9.26":[-11.124,-25,-16.367],"9.3":[-11.123,-24.999,-16.367],"9.34":[-11.123,-24.999,-16.367],"9.38":[-11.124,-25,-16.367],"9.42":[-11.125,-25.002,-16.368],"9.46":[-11.121,-25.006,-16.371],"9.51":[-11.122,-25.01,-16.369],"9.55":[-11.122,-25.021,-16.371],"9.59":[-11.122,-25.03,-16.369],"9.63":[-11.122,-25.039,-16.373],"9.67":[-11.119,-25.05,-16.373],"9.72":[-11.119,-25.065,-16.374],"9.76":[-11.118,-25.081,-16.375],"9.8":[-11.115,-25.118,-16.38],"9.84":[-11.116,-25.136,-16.383],"9.88":[-11.113,-25.152,-16.384],"9.92":[-11.114,-25.172,-16.386],"9.97":[-11.111,-25.185,-16.387],"10.01":[-11.111,-25.198,-16.386],"10.05":[-11.11,-25.205,-16.388],"10.09":[-11.11,-25.213,-16.388],"10.13":[-11.108,-25.224,-16.389],"10.18":[-11.109,-25.227,-16.388],"10.22":[-11.109,-25.23,-16.389],"10.26":[-11.109,-25.23,-16.39],"10.3":[-11.108,-25.229,-16.389],"10.34":[-11.109,-25.227,-16.39],"10.38":[-11.108,-25.217,-16.389],"10.42":[-11.11,-25.209,-16.386],"10.47":[-11.11,-25.203,-16.388],"10.51":[-11.11,-25.192,-16.387],"10.55":[-11.111,-25.18,-16.385],"10.59":[-11.114,-25.171,-16.386],"10.63":[-11.113,-25.155,-16.385],"10.68":[-11.115,-25.144,-16.381],"10.72":[-11.115,-25.127,-16.38],"10.76":[-11.115,-25.116,-16.379],"10.8":[-11.117,-25.097,-16.378],"10.84":[-11.117,-25.087,-16.377],"10.88":[-11.118,-25.071,-16.377],"10.92":[-11.12,-25.059,-16.372],"10.97":[-11.119,-25.043,-16.372],"11.01":[-11.12,-25.034,-16.372],"11.05":[-11.122,-25.021,-16.37],"11.09":[-11.123,-25.014,-16.371],"11.13":[-11.124,-25.007,-16.368],"11.18":[-11.125,-25.003,-16.369],"11.22":[-11.124,-25,-16.367],"11.26":[-11.123,-24.999,-16.367],"11.3":[-11.123,-24.999,-16.367],"11.34":[-11.124,-25,-16.367],"11.38":[-11.125,-25.002,-16.368],"11.42":[-11.121,-25.006,-16.371],"11.47":[-11.122,-25.01,-16.369],"11.51":[-11.122,-25.021,-16.371],"11.55":[-11.122,-25.03,-16.369],"11.59":[-11.122,-25.039,-16.373],"11.63":[-11.119,-25.05,-16.373],"11.68":[-11.119,-25.065,-16.374],"11.72":[-11.118,-25.081,-16.375],"11.76":[-11.115,-25.118,-16.38],"11.8":[-11.116,-25.136,-16.383],"11.84":[-11.113,-25.152,-16.384],"11.88":[-11.114,-25.172,-16.386],"11.93":[-11.111,-25.185,-16.387],"11.97":[-11.111,-25.198,-16.386],"12.01":[-11.11,-25.205,-16.388],"12.05":[-11.11,-25.213,-16.388],"12.09":[-11.108,-25.224,-16.389],"12.14":[-11.109,-25.227,-16.388],"12.18":[-11.109,-25.23,-16.389],"12.22":[-11.109,-25.23,-16.39],"12.26":[-11.108,-25.229,-16.389],"12.3":[-11.109,-25.227,-16.39],"12.34":[-11.108,-25.217,-16.389],"12.38":[-11.11,-25.209,-16.386],"12.43":[-11.11,-25.203,-16.388],"12.47":[-11.11,-25.192,-16.387],"12.51":[-11.111,-25.18,-16.385],"12.55":[-11.114,-25.171,-16.386],"12.59":[-11.113,-25.155,-16.385],"12.64":[-11.115,-25.144,-16.381],"12.68":[-11.115,-25.127,-16.38],"12.72":[-11.115,-25.116,-16.379],"12.76":[-11.117,-25.097,-16.378],"12.8":[-11.117,-25.087,-16.377],"12.84":[-11.118,-25.071,-16.377],"12.88":[-11.12,-25.059,-16.372],"12.93":[-11.119,-25.043,-16.372],"12.97":[-11.12,-25.034,-16.372],"13.01":[-11.122,-25.021,-16.37],"13.05":[-11.123,-25.014,-16.371],"13.09":[-11.124,-25.007,-16.368],"13.14":[-11.125,-25.003,-16.369],"13.18":[-11.124,-25,-16.367],"13.22":[-11.123,-24.999,-16.367],"13.26":[-11.123,-24.999,-16.367],"13.3":[-11.124,-25,-16.367],"13.34":[-11.125,-25.002,-16.368],"13.38":[-11.121,-25.006,-16.371],"13.43":[-11.122,-25.01,-16.369],"13.47":[-11.122,-25.021,-16.371],"13.51":[-11.122,-25.03,-16.369],"13.55":[-11.122,-25.039,-16.373],"13.59":[-11.119,-25.05,-16.373],"13.64":[-11.119,-25.065,-16.374],"13.68":[-11.118,-25.081,-16.375],"13.72":{"pre":[-11.116,-25.094,-16.376],"post":[-11.116,-25.094,-16.376],"lerp_mode":"catmullrom"}}},"blade":{"rotation":{"0.0":[19.441,9.576,166.175],"0.04":[19.44,9.568,166.182],"0.08":[19.437,9.554,166.178],"0.12":[19.455,9.568,166.172],"0.17":[19.448,9.576,166.185],"0.21":[19.436,9.557,166.172],"0.25":[19.445,9.571,166.165],"0.29":[19.453,9.566,166.168],"0.33":[19.447,9.569,166.172],"0.38":[19.446,9.556,166.183],"0.42":[19.444,9.573,166.179],"0.46":[19.435,9.553,166.17],"0.5":[19.434,9.564,166.178],"0.54":[19.435,9.563,166.182],"0.58":[19.446,9.56,166.186],"0.62":[19.438,9.554,166.168],"0.67":[19.448,9.559,166.175],"0.71":[19.453,9.559,166.183],"0.75":[19.438,9.556,166.174],"0.79":[19.453,9.583,166.178],"0.83":[19.449,9.565,166.189],"0.88":[19.438,9.57,166.175],"0.92":[19.439,9.562,166.169],"0.96":[19.454,9.568,166.188],"1.0":[19.448,9.566,166.176],"1.04":[19.438,9.561,166.172],"1.08":[19.45,9.578,166.176],"1.12":[19.439,9.551,166.178],"1.17":[19.441,9.558,166.174],"1.21":[19.448,9.561,166.183],"1.25":[19.45,9.576,166.188],"1.29":[19.436,9.58,166.182],"1.33":[19.433,9.568,166.183],"1.38":[19.442,9.576,166.169],"1.42":[19.439,9.58,166.169],"1.46":[19.443,9.569,166.191],"1.5":[19.444,9.571,166.179],"1.54":[19.44,9.558,166.181],"1.58":[19.453,9.56,166.179],"1.62":[19.438,9.565,166.187],"1.67":[19.446,9.563,166.179],"1.71":[19.449,9.571,166.184],"1.75":[19.437,9.548,166.167],"1.79":[19.435,9.584,166.181],"1.83":[19.439,9.569,166.176],"1.88":[19.437,9.566,166.178],"1.92":[19.434,9.559,166.178],"1.96":[19.441,9.576,166.175],"2.0":[19.44,9.568,166.182],"2.04":[19.437,9.554,166.178],"2.08":[19.455,9.568,166.172],"2.13":[19.448,9.576,166.185],"2.17":[19.436,9.557,166.172],"2.21":[19.445,9.571,166.165],"2.25":[19.453,9.566,166.168],"2.29":[19.447,9.569,166.172],"2.34":[19.446,9.556,166.183],"2.38":[19.444,9.573,166.179],"2.42":[19.435,9.553,166.17],"2.46":[19.434,9.564,166.178],"2.5":[19.435,9.563,166.182],"2.54":[19.446,9.56,166.186],"2.58":[19.438,9.554,166.168],"2.63":[19.448,9.559,166.175],"2.67":[19.453,9.559,166.183],"2.71":[19.438,9.556,166.174],"2.75":[19.453,9.583,166.178],"2.79":[19.449,9.565,166.189],"2.84":[19.438,9.57,166.175],"2.88":[19.439,9.562,166.169],"2.92":[19.454,9.568,166.188],"2.96":[19.448,9.566,166.176],"3.0":[19.438,9.561,166.172],"3.04":[19.45,9.578,166.176],"3.08":[19.439,9.551,166.178],"3.13":[19.441,9.558,166.174],"3.17":[19.448,9.561,166.183],"3.21":[19.45,9.576,166.188],"3.25":[19.436,9.58,166.182],"3.29":[19.433,9.568,166.183],"3.34":[19.442,9.576,166.169],"3.38":[19.439,9.58,166.169],"3.42":[19.443,9.569,166.191],"3.46":[19.444,9.571,166.179],"3.5":[19.44,9.558,166.181],"3.54":[19.453,9.56,166.179],"3.58":[19.438,9.565,166.187],"3.63":[19.446,9.563,166.179],"3.67":[19.449,9.571,166.184],"3.71":[19.437,9.548,166.167],"3.75":[19.435,9.584,166.181],"3.79":[19.439,9.569,166.176],"3.84":[19.437,9.566,166.178],"3.88":[19.434,9.559,166.178],"3.92":[19.441,9.576,166.175],"3.96":[19.44,9.568,166.182],"4.0":[19.437,9.554,166.178],"4.04":[19.455,9.568,166.172],"4.09":[19.448,9.576,166.185],"4.13":[19.436,9.557,166.172],"4.17":[19.445,9.571,166.165],"4.21":[19.453,9.566,166.168],"4.25":[19.447,9.569,166.172],"4.3":[19.446,9.556,166.183],"4.34":[19.444,9.573,166.179],"4.38":[19.435,9.553,166.17],"4.42":[19.434,9.564,166.178],"4.46":[19.435,9.563,166.182],"4.5":[19.446,9.56,166.186],"4.54":[19.438,9.554,166.168],"4.59":[19.448,9.559,166.175],"4.63":[19.453,9.559,166.183],"4.67":[19.438,9.556,166.174],"4.71":[19.453,9.583,166.178],"4.75":[19.449,9.565,166.189],"4.8":[19.438,9.57,166.175],"4.84":[19.439,9.562,166.169],"4.88":[19.454,9.568,166.188],"4.92":[19.448,9.566,166.176],"4.96":[19.438,9.561,166.172],"5.0":[19.45,9.578,166.176],"5.04":[19.439,9.551,166.178],"5.09":[19.441,9.558,166.174],"5.13":[19.448,9.561,166.183],"5.17":[19.45,9.576,166.188],"5.21":[19.436,9.58,166.182],"5.25":[19.433,9.568,166.183],"5.3":[19.442,9.576,166.169],"5.34":[19.439,9.58,166.169],"5.38":[19.443,9.569,166.191],"5.42":[19.444,9.571,166.179],"5.46":[19.44,9.558,166.181],"5.5":[19.453,9.56,166.179],"5.54":[19.438,9.565,166.187],"5.59":[19.446,9.563,166.179],"5.63":[19.449,9.571,166.184],"5.67":[19.437,9.548,166.167],"5.71":[19.435,9.584,166.181],"5.75":[19.439,9.569,166.176],"5.8":[19.437,9.566,166.178],"5.84":[19.434,9.559,166.178],"5.88":[19.441,9.576,166.175],"5.92":[19.44,9.568,166.182],"5.96":[19.437,9.554,166.178],"6.0":[19.455,9.568,166.172],"6.05":[19.448,9.576,166.185],"6.09":[19.436,9.557,166.172],"6.13":[19.445,9.571,166.165],"6.17":[19.453,9.566,166.168],"6.21":[19.447,9.569,166.172],"6.26":[19.446,9.556,166.183],"6.3":[19.444,9.573,166.179],"6.34":[19.435,9.553,166.17],"6.38":[19.434,9.564,166.178],"6.42":[19.435,9.563,166.182],"6.46":[19.446,9.56,166.186],"6.5":[19.438,9.554,166.168],"6.55":[19.448,9.559,166.175],"6.59":[19.453,9.559,166.183],"6.63":[19.438,9.556,166.174],"6.67":[19.453,9.583,166.178],"6.71":[19.449,9.565,166.189],"6.76":[19.438,9.57,166.175],"6.8":[19.439,9.562,166.169],"6.84":[19.454,9.568,166.188],"6.88":[19.448,9.566,166.176],"6.92":[19.438,9.561,166.172],"6.96":[19.45,9.578,166.176],"7.0":[19.439,9.551,166.178],"7.05":[19.441,9.558,166.174],"7.09":[19.448,9.561,166.183],"7.13":[19.45,9.576,166.188],"7.17":[19.436,9.58,166.182],"7.21":[19.433,9.568,166.183],"7.26":[19.442,9.576,166.169],"7.3":[19.439,9.58,166.169],"7.34":[19.443,9.569,166.191],"7.38":[19.444,9.571,166.179],"7.42":[19.44,9.558,166.181],"7.46":[19.453,9.56,166.179],"7.5":[19.438,9.565,166.187],"7.55":[19.446,9.563,166.179],"7.59":[19.449,9.571,166.184],"7.63":[19.437,9.548,166.167],"7.67":[19.435,9.584,166.181],"7.71":[19.439,9.569,166.176],"7.76":[19.437,9.566,166.178],"7.8":[19.434,9.559,166.178],"7.84":[19.441,9.576,166.175],"7.88":[19.44,9.568,166.182],"7.92":[19.437,9.554,166.178],"7.96":[19.455,9.568,166.172],"8.01":[19.448,9.576,166.185],"8.05":[19.436,9.557,166.172],"8.09":[19.445,9.571,166.165],"8.13":[19.453,9.566,166.168],"8.17":[19.447,9.569,166.172],"8.22":[19.446,9.556,166.183],"8.26":[19.444,9.573,166.179],"8.3":[19.435,9.553,166.17],"8.34":[19.434,9.564,166.178],"8.38":[19.435,9.563,166.182],"8.42":[19.446,9.56,166.186],"8.46":[19.438,9.554,166.168],"8.51":[19.448,9.559,166.175],"8.55":[19.453,9.559,166.183],"8.59":[19.438,9.556,166.174],"8.63":[19.453,9.583,166.178],"8.67":[19.449,9.565,166.189],"8.72":[19.438,9.57,166.175],"8.76":[19.439,9.562,166.169],"8.8":[19.454,9.568,166.188],"8.84":[19.448,9.566,166.176],"8.88":[19.438,9.561,166.172],"8.92":[19.45,9.578,166.176],"8.96":[19.439,9.551,166.178],"9.01":[19.441,9.558,166.174],"9.05":[19.448,9.561,166.183],"9.09":[19.45,9.576,166.188],"9.13":[19.436,9.58,166.182],"9.17":[19.433,9.568,166.183],"9.22":[19.442,9.576,166.169],"9.26":[19.439,9.58,166.169],"9.3":[19.443,9.569,166.191],"9.34":[19.444,9.571,166.179],"9.38":[19.44,9.558,166.181],"9.42":[19.453,9.56,166.179],"9.46":[19.438,9.565,166.187],"9.51":[19.446,9.563,166.179],"9.55":[19.449,9.571,166.184],"9.59":[19.437,9.548,166.167],"9.63":[19.435,9.584,166.181],"9.67":[19.439,9.569,166.176],"9.72":[19.437,9.566,166.178],"9.76":[19.434,9.559,166.178],"9.8":[19.441,9.576,166.175],"9.84":[19.44,9.568,166.182],"9.88":[19.437,9.554,166.178],"9.92":[19.455,9.568,166.172],"9.97":[19.448,9.576,166.185],"10.01":[19.436,9.557,166.172],"10.05":[19.445,9.571,166.165],"10.09":[19.453,9.566,166.168],"10.13":[19.447,9.569,166.172],"10.18":[19.446,9.556,166.183],"10.22":[19.444,9.573,166.179],"10.26":[19.435,9.553,166.17],"10.3":[19.434,9.564,166.178],"10.34":[19.435,9.563,166.182],"10.38":[19.446,9.56,166.186],"10.42":[19.438,9.554,166.168],"10.47":[19.448,9.559,166.175],"10.51":[19.453,9.559,166.183],"10.55":[19.438,9.556,166.174],"10.59":[19.453,9.583,166.178],"10.63":[19.449,9.565,166.189],"10.68":[19.438,9.57,166.175],"10.72":[19.439,9.562,166.169],"10.76":[19.454,9.568,166.188],"10.8":[19.448,9.566,166.176],"10.84":[19.438,9.561,166.172],"10.88":[19.45,9.578,166.176],"10.92":[19.439,9.551,166.178],"10.97":[19.441,9.558,166.174],"11.01":[19.448,9.561,166.183],"11.05":[19.45,9.576,166.188],"11.09":[19.436,9.58,166.182],"11.13":[19.433,9.568,166.183],"11.18":[19.442,9.576,166.169],"11.22":[19.439,9.58,166.169],"11.26":[19.443,9.569,166.191],"11.3":[19.444,9.571,166.179],"11.34":[19.44,9.558,166.181],"11.38":[19.453,9.56,166.179],"11.42":[19.438,9.565,166.187],"11.47":[19.446,9.563,166.179],"11.51":[19.449,9.571,166.184],"11.55":[19.437,9.548,166.167],"11.59":[19.435,9.584,166.181],"11.63":[19.439,9.569,166.176],"11.68":[19.437,9.566,166.178],"11.72":[19.434,9.559,166.178],"11.76":[19.441,9.576,166.175],"11.8":[19.44,9.568,166.182],"11.84":[19.437,9.554,166.178],"11.88":[19.455,9.568,166.172],"11.93":[19.448,9.576,166.185],"11.97":[19.436,9.557,166.172],"12.01":[19.445,9.571,166.165],"12.05":[19.453,9.566,166.168],"12.09":[19.447,9.569,166.172],"12.14":[19.446,9.556,166.183],"12.18":[19.444,9.573,166.179],"12.22":[19.435,9.553,166.17],"12.26":[19.434,9.564,166.178],"12.3":[19.435,9.563,166.182],"12.34":[19.446,9.56,166.186],"12.38":[19.438,9.554,166.168],"12.43":[19.448,9.559,166.175],"12.47":[19.453,9.559,166.183],"12.51":[19.438,9.556,166.174],"12.55":[19.453,9.583,166.178],"12.59":[19.449,9.565,166.189],"12.64":[19.438,9.57,166.175],"12.68":[19.439,9.562,166.169],"12.72":[19.454,9.568,166.188],"12.76":[19.448,9.566,166.176],"12.8":[19.438,9.561,166.172],"12.84":[19.45,9.578,166.176],"12.88":[19.439,9.551,166.178],"12.93":[19.441,9.558,166.174],"12.97":[19.448,9.561,166.183],"13.01":[19.45,9.576,166.188],"13.05":[19.436,9.58,166.182],"13.09":[19.433,9.568,166.183],"13.14":[19.442,9.576,166.169],"13.18":[19.439,9.58,166.169],"13.22":[19.443,9.569,166.191],"13.26":[19.444,9.571,166.179],"13.3":[19.44,9.558,166.181],"13.34":[19.453,9.56,166.179],"13.38":[19.438,9.565,166.187],"13.43":[19.446,9.563,166.179],"13.47":[19.449,9.571,166.184],"13.51":[19.437,9.548,166.167],"13.55":[19.435,9.584,166.181],"13.59":[19.439,9.569,166.176],"13.64":[19.437,9.566,166.178],"13.68":[19.434,9.559,166.178],"13.72":[19.447,9.562,166.182]},"position":{"0.0":[5.318,13.166,-2.241],"0.04":[5.313,13.169,-2.242],"0.08":[5.307,13.173,-2.241],"0.12":[5.309,13.175,-2.246],"0.17":[5.309,13.175,-2.244],"0.21":[5.308,13.177,-2.245],"0.25":[5.307,13.174,-2.245],"0.29":[5.307,13.175,-2.245],"0.33":[5.309,13.176,-2.243],"0.38":[5.308,13.177,-2.245],"0.42":[5.309,13.176,-2.244],"0.46":[5.309,13.175,-2.245],"0.5":[5.309,13.175,-2.244],"0.54":[5.312,13.175,-2.244],"0.58":[5.31,13.172,-2.242],"0.62":[5.308,13.172,-2.245],"0.67":[5.312,13.172,-2.243],"0.71":[5.312,13.171,-2.243],"0.75":[5.311,13.169,-2.243],"0.79":[5.317,13.171,-2.245],"0.83":[5.315,13.167,-2.244],"0.88":[5.316,13.169,-2.245],"0.92":[5.315,13.168,-2.244],"0.96":[5.319,13.169,-2.243],"1.0":[5.313,13.166,-2.244],"1.04":[5.308,13.176,-2.244],"1.08":[5.309,13.174,-2.244],"1.12":[5.308,13.176,-2.245],"1.17":[5.306,13.172,-2.242],"1.21":[5.31,13.174,-2.24],"1.25":[5.309,13.173,-2.241],"1.29":[5.312,13.172,-2.242],"1.33":[5.309,13.172,-2.242],"1.38":[5.311,13.173,-2.243],"1.42":[5.311,13.175,-2.242],"1.46":[5.311,13.176,-2.241],"1.5":[5.312,13.178,-2.242],"1.54":[5.31,13.177,-2.243],"1.58":[5.309,13.176,-2.243],"1.62":[5.31,13.174,-2.24],"1.67":[5.318,13.166,-2.241],"1.71":[5.32,13.169,-2.241],"1.75":[5.314,13.169,-2.242],"1.79":[5.315,13.168,-2.242],"1.83":[5.311,13.169,-2.24],"1.88":[5.31,13.173,-2.242],"1.92":[5.308,13.175,-2.243],"1.96":[5.318,13.166,-2.241],"2.0":[5.313,13.169,-2.242],"2.04":[5.307,13.173,-2.241],"2.08":[5.309,13.175,-2.246],"2.13":[5.309,13.175,-2.244],"2.17":[5.308,13.177,-2.245],"2.21":[5.307,13.174,-2.245],"2.25":[5.307,13.175,-2.245],"2.29":[5.309,13.176,-2.243],"2.34":[5.308,13.177,-2.245],"2.38":[5.309,13.176,-2.244],"2.42":[5.309,13.175,-2.245],"2.46":[5.309,13.175,-2.244],"2.5":[5.312,13.175,-2.244],"2.54":[5.31,13.172,-2.242],"2.58":[5.308,13.172,-2.245],"2.63":[5.312,13.172,-2.243],"2.67":[5.312,13.171,-2.243],"2.71":[5.311,13.169,-2.243],"2.75":[5.317,13.171,-2.245],"2.79":[5.315,13.167,-2.244],"2.84":[5.316,13.169,-2.245],"2.88":[5.315,13.168,-2.244],"2.92":[5.319,13.169,-2.243],"2.96":[5.313,13.166,-2.244],"3.0":[5.308,13.176,-2.244],"3.04":[5.309,13.174,-2.244],"3.08":[5.308,13.176,-2.245],"3.13":[5.306,13.172,-2.242],"3.17":[5.31,13.174,-2.24],"3.21":[5.309,13.173,-2.241],"3.25":[5.312,13.172,-2.242],"3.29":[5.309,13.172,-2.242],"3.34":[5.311,13.173,-2.243],"3.38":[5.311,13.175,-2.242],"3.42":[5.311,13.176,-2.241],"3.46":[5.312,13.178,-2.242],"3.5":[5.31,13.177,-2.243],"3.54":[5.309,13.176,-2.243],"3.58":[5.31,13.174,-2.24],"3.63":[5.318,13.166,-2.241],"3.67":[5.32,13.169,-2.241],"3.71":[5.314,13.169,-2.242],"3.75":[5.315,13.168,-2.242],"3.79":[5.311,13.169,-2.24],"3.84":[5.31,13.173,-2.242],"3.88":[5.308,13.175,-2.243],"3.92":[5.318,13.166,-2.241],"3.96":[5.313,13.169,-2.242],"4.0":[5.307,13.173,-2.241],"4.04":[5.309,13.175,-2.246],"4.09":[5.309,13.175,-2.244],"4.13":[5.308,13.177,-2.245],"4.17":[5.307,13.174,-2.245],"4.21":[5.307,13.175,-2.245],"4.25":[5.309,13.176,-2.243],"4.3":[5.308,13.177,-2.245],"4.34":[5.309,13.176,-2.244],"4.38":[5.309,13.175,-2.245],"4.42":[5.309,13.175,-2.244],"4.46":[5.312,13.175,-2.244],"4.5":[5.31,13.172,-2.242],"4.54":[5.308,13.172,-2.245],"4.59":[5.312,13.172,-2.243],"4.63":[5.312,13.171,-2.243],"4.67":[5.311,13.169,-2.243],"4.71":[5.317,13.171,-2.245],"4.75":[5.315,13.167,-2.244],"4.8":[5.316,13.169,-2.245],"4.84":[5.315,13.168,-2.244],"4.88":[5.319,13.169,-2.243],"4.92":[5.313,13.166,-2.244],"4.96":[5.308,13.176,-2.244],"5.0":[5.309,13.174,-2.244],"5.04":[5.308,13.176,-2.245],"5.09":[5.306,13.172,-2.242],"5.13":[5.31,13.174,-2.24],"5.17":[5.309,13.173,-2.241],"5.21":[5.312,13.172,-2.242],"5.25":[5.309,13.172,-2.242],"5.3":[5.311,13.173,-2.243],"5.34":[5.311,13.175,-2.242],"5.38":[5.311,13.176,-2.241],"5.42":[5.312,13.178,-2.242],"5.46":[5.31,13.177,-2.243],"5.5":[5.309,13.176,-2.243],"5.54":[5.31,13.174,-2.24],"5.59":[5.318,13.166,-2.241],"5.63":[5.32,13.169,-2.241],"5.67":[5.314,13.169,-2.242],"5.71":[5.315,13.168,-2.242],"5.75":[5.311,13.169,-2.24],"5.8":[5.31,13.173,-2.242],"5.84":[5.308,13.175,-2.243],"5.88":[5.318,13.166,-2.241],"5.92":[5.313,13.169,-2.242],"5.96":[5.307,13.173,-2.241],"6.0":[5.309,13.175,-2.246],"6.05":[5.309,13.175,-2.244],"6.09":[5.308,13.177,-2.245],"6.13":[5.307,13.174,-2.245],"6.17":[5.307,13.175,-2.245],"6.21":[5.309,13.176,-2.243],"6.26":[5.308,13.177,-2.245],"6.3":[5.309,13.176,-2.244],"6.34":[5.309,13.175,-2.245],"6.38":[5.309,13.175,-2.244],"6.42":[5.312,13.175,-2.244],"6.46":[5.31,13.172,-2.242],"6.5":[5.308,13.172,-2.245],"6.55":[5.312,13.172,-2.243],"6.59":[5.312,13.171,-2.243],"6.63":[5.311,13.169,-2.243],"6.67":[5.317,13.171,-2.245],"6.71":[5.315,13.167,-2.244],"6.76":[5.316,13.169,-2.245],"6.8":[5.315,13.168,-2.244],"6.84":[5.319,13.169,-2.243],"6.88":[5.313,13.166,-2.244],"6.92":[5.308,13.176,-2.244],"6.96":[5.309,13.174,-2.244],"7.0":[5.308,13.176,-2.245],"7.05":[5.306,13.172,-2.242],"7.09":[5.31,13.174,-2.24],"7.13":[5.309,13.173,-2.241],"7.17":[5.312,13.172,-2.242],"7.21":[5.309,13.172,-2.242],"7.26":[5.311,13.173,-2.243],"7.3":[5.311,13.175,-2.242],"7.34":[5.311,13.176,-2.241],"7.38":[5.312,13.178,-2.242],"7.42":[5.31,13.177,-2.243],"7.46":[5.309,13.176,-2.243],"7.5":[5.31,13.174,-2.24],"7.55":[5.318,13.166,-2.241],"7.59":[5.32,13.169,-2.241],"7.63":[5.314,13.169,-2.242],"7.67":[5.315,13.168,-2.242],"7.71":[5.311,13.169,-2.24],"7.76":[5.31,13.173,-2.242],"7.8":[5.308,13.175,-2.243],"7.84":[5.318,13.166,-2.241],"7.88":[5.313,13.169,-2.242],"7.92":[5.307,13.173,-2.241],"7.96":[5.309,13.175,-2.246],"8.01":[5.309,13.175,-2.244],"8.05":[5.308,13.177,-2.245],"8.09":[5.307,13.174,-2.245],"8.13":[5.307,13.175,-2.245],"8.17":[5.309,13.176,-2.243],"8.22":[5.308,13.177,-2.245],"8.26":[5.309,13.176,-2.244],"8.3":[5.309,13.175,-2.245],"8.34":[5.309,13.175,-2.244],"8.38":[5.312,13.175,-2.244],"8.42":[5.31,13.172,-2.242],"8.46":[5.308,13.172,-2.245],"8.51":[5.312,13.172,-2.243],"8.55":[5.312,13.171,-2.243],"8.59":[5.311,13.169,-2.243],"8.63":[5.317,13.171,-2.245],"8.67":[5.315,13.167,-2.244],"8.72":[5.316,13.169,-2.245],"8.76":[5.315,13.168,-2.244],"8.8":[5.319,13.169,-2.243],"8.84":[5.313,13.166,-2.244],"8.88":[5.308,13.176,-2.244],"8.92":[5.309,13.174,-2.244],"8.96":[5.308,13.176,-2.245],"9.01":[5.306,13.172,-2.242],"9.05":[5.31,13.174,-2.24],"9.09":[5.309,13.173,-2.241],"9.13":[5.312,13.172,-2.242],"9.17":[5.309,13.172,-2.242],"9.22":[5.311,13.173,-2.243],"9.26":[5.311,13.175,-2.242],"9.3":[5.311,13.176,-2.241],"9.34":[5.312,13.178,-2.242],"9.38":[5.31,13.177,-2.243],"9.42":[5.309,13.176,-2.243],"9.46":[5.31,13.174,-2.24],"9.51":[5.318,13.166,-2.241],"9.55":[5.32,13.169,-2.241],"9.59":[5.314,13.169,-2.242],"9.63":[5.315,13.168,-2.242],"9.67":[5.311,13.169,-2.24],"9.72":[5.31,13.173,-2.242],"9.76":[5.308,13.175,-2.243],"9.8":[5.318,13.166,-2.241],"9.84":[5.313,13.169,-2.242],"9.88":[5.307,13.173,-2.241],"9.92":[5.309,13.175,-2.246],"9.97":[5.309,13.175,-2.244],"10.01":[5.308,13.177,-2.245],"10.05":[5.307,13.174,-2.245],"10.09":[5.307,13.175,-2.245],"10.13":[5.309,13.176,-2.243],"10.18":[5.308,13.177,-2.245],"10.22":[5.309,13.176,-2.244],"10.26":[5.309,13.175,-2.245],"10.3":[5.309,13.175,-2.244],"10.34":[5.312,13.175,-2.244],"10.38":[5.31,13.172,-2.242],"10.42":[5.308,13.172,-2.245],"10.47":[5.312,13.172,-2.243],"10.51":[5.312,13.171,-2.243],"10.55":[5.311,13.169,-2.243],"10.59":[5.317,13.171,-2.245],"10.63":[5.315,13.167,-2.244],"10.68":[5.316,13.169,-2.245],"10.72":[5.315,13.168,-2.244],"10.76":[5.319,13.169,-2.243],"10.8":[5.313,13.166,-2.244],"10.84":[5.308,13.176,-2.244],"10.88":[5.309,13.174,-2.244],"10.92":[5.308,13.176,-2.245],"10.97":[5.306,13.172,-2.242],"11.01":[5.31,13.174,-2.24],"11.05":[5.309,13.173,-2.241],"11.09":[5.312,13.172,-2.242],"11.13":[5.309,13.172,-2.242],"11.18":[5.311,13.173,-2.243],"11.22":[5.311,13.175,-2.242],"11.26":[5.311,13.176,-2.241],"11.3":[5.312,13.178,-2.242],"11.34":[5.31,13.177,-2.243],"11.38":[5.309,13.176,-2.243],"11.42":[5.31,13.174,-2.24],"11.47":[5.318,13.166,-2.241],"11.51":[5.32,13.169,-2.241],"11.55":[5.314,13.169,-2.242],"11.59":[5.315,13.168,-2.242],"11.63":[5.311,13.169,-2.24],"11.68":[5.31,13.173,-2.242],"11.72":[5.308,13.175,-2.243],"11.76":[5.318,13.166,-2.241],"11.8":[5.313,13.169,-2.242],"11.84":[5.307,13.173,-2.241],"11.88":[5.309,13.175,-2.246],"11.93":[5.309,13.175,-2.244],"11.97":[5.308,13.177,-2.245],"12.01":[5.307,13.174,-2.245],"12.05":[5.307,13.175,-2.245],"12.09":[5.309,13.176,-2.243],"12.14":[5.308,13.177,-2.245],"12.18":[5.309,13.176,-2.244],"12.22":[5.309,13.175,-2.245],"12.26":[5.309,13.175,-2.244],"12.3":[5.312,13.175,-2.244],"12.34":[5.31,13.172,-2.242],"12.38":[5.308,13.172,-2.245],"12.43":[5.312,13.172,-2.243],"12.47":[5.312,13.171,-2.243],"12.51":[5.311,13.169,-2.243],"12.55":[5.317,13.171,-2.245],"12.59":[5.315,13.167,-2.244],"12.64":[5.316,13.169,-2.245],"12.68":[5.315,13.168,-2.244],"12.72":[5.319,13.169,-2.243],"12.76":[5.313,13.166,-2.244],"12.8":[5.308,13.176,-2.244],"12.84":[5.309,13.174,-2.244],"12.88":[5.308,13.176,-2.245],"12.93":[5.306,13.172,-2.242],"12.97":[5.31,13.174,-2.24],"13.01":[5.309,13.173,-2.241],"13.05":[5.312,13.172,-2.242],"13.09":[5.309,13.172,-2.242],"13.14":[5.311,13.173,-2.243],"13.18":[5.311,13.175,-2.242],"13.22":[5.311,13.176,-2.241],"13.26":[5.312,13.178,-2.242],"13.3":[5.31,13.177,-2.243],"13.34":[5.309,13.176,-2.243],"13.38":[5.31,13.174,-2.24],"13.43":[5.318,13.166,-2.241],"13.47":[5.32,13.169,-2.241],"13.51":[5.314,13.169,-2.242],"13.55":[5.315,13.168,-2.242],"13.59":[5.311,13.169,-2.24],"13.64":[5.31,13.173,-2.242],"13.68":[5.308,13.175,-2.243],"13.72":[5.315,13.166,-2.24]}},"lefthand":{"rotation":{"0.0":[119.863,45.603,78.976],"0.04":[119.896,45.69,79.036],"0.08":[119.965,45.772,79.134],"0.12":[119.998,45.858,79.195],"0.17":[120.05,45.928,79.27],"0.21":[120.132,46.001,79.37],"0.25":[120.216,46.067,79.473],"0.29":[120.285,46.114,79.569],"0.33":[120.338,46.198,79.636],"0.38":[120.445,46.246,79.774],"0.42":[120.506,46.295,79.849],"0.46":[120.613,46.349,79.981],"0.5":[120.681,46.413,80.074],"0.54":[120.739,46.479,80.149],"0.58":[120.832,46.537,80.256],"0.62":[120.904,46.584,80.363],"0.67":[120.989,46.644,80.472],"0.71":[121.053,46.707,80.56],"0.75":[121.123,46.773,80.659],"0.79":[121.178,46.85,80.723],"0.83":[121.258,46.924,80.833],"0.88":[121.311,47.003,80.917],"0.92":[121.344,47.091,80.992],"0.96":[121.38,47.196,81.046],"1.0":[121.344,47.091,80.992],"1.04":[121.311,47.003,80.917],"1.08":[121.249,46.925,80.825],"1.12":[121.191,46.845,80.745],"1.17":[121.118,46.769,80.648],"1.21":[121.053,46.706,80.56],"1.25":[120.989,46.644,80.472],"1.29":[120.904,46.584,80.363],"1.33":[120.832,46.537,80.256],"1.38":[120.739,46.479,80.149],"1.42":[120.681,46.413,80.074],"1.46":[120.613,46.349,79.981],"1.5":[120.506,46.295,79.849],"1.54":[120.444,46.248,79.771],"1.58":[120.337,46.199,79.635],"1.62":[120.285,46.114,79.569],"1.67":[120.218,46.068,79.483],"1.71":[120.124,46.004,79.366],"1.75":[120.049,45.928,79.27],"1.79":[119.991,45.857,79.184],"1.83":[119.965,45.772,79.134],"1.88":[119.9,45.689,79.044],"1.92":[119.866,45.602,78.98],"1.96":[119.863,45.603,78.976],"2.0":[119.896,45.69,79.036],"2.04":[119.965,45.772,79.134],"2.08":[119.998,45.858,79.195],"2.13":[120.05,45.928,79.27],"2.17":[120.132,46.001,79.37],"2.21":[120.216,46.067,79.473],"2.25":[120.285,46.114,79.569],"2.29":[120.338,46.198,79.636],"2.34":[120.445,46.246,79.774],"2.38":[120.506,46.295,79.849],"2.42":[120.613,46.349,79.981],"2.46":[120.681,46.413,80.074],"2.5":[120.739,46.479,80.149],"2.54":[120.832,46.537,80.256],"2.58":[120.904,46.584,80.363],"2.63":[120.989,46.644,80.472],"2.67":[121.053,46.707,80.56],"2.71":[121.123,46.773,80.659],"2.75":[121.178,46.85,80.723],"2.79":[121.258,46.924,80.833],"2.84":[121.311,47.003,80.917],"2.88":[121.344,47.091,80.992],"2.92":[121.38,47.196,81.046],"2.96":[121.344,47.091,80.992],"3.0":[121.311,47.003,80.917],"3.04":[121.249,46.925,80.825],"3.08":[121.191,46.845,80.745],"3.13":[121.118,46.769,80.648],"3.17":[121.053,46.706,80.56],"3.21":[120.989,46.644,80.472],"3.25":[120.904,46.584,80.363],"3.29":[120.832,46.537,80.256],"3.34":[120.739,46.479,80.149],"3.38":[120.681,46.413,80.074],"3.42":[120.613,46.349,79.981],"3.46":[120.506,46.295,79.849],"3.5":[120.444,46.248,79.771],"3.54":[120.337,46.199,79.635],"3.58":[120.285,46.114,79.569],"3.63":[120.218,46.068,79.483],"3.67":[120.124,46.004,79.366],"3.71":[120.049,45.928,79.27],"3.75":[119.991,45.857,79.184],"3.79":[119.965,45.772,79.134],"3.84":[119.9,45.689,79.044],"3.88":[119.866,45.602,78.98],"3.92":[119.863,45.603,78.976],"3.96":[119.896,45.69,79.036],"4.0":[119.965,45.772,79.134],"4.04":[119.998,45.858,79.195],"4.09":[120.05,45.928,79.27],"4.13":[120.132,46.001,79.37],"4.17":[120.216,46.067,79.473],"4.21":[120.285,46.114,79.569],"4.25":[120.338,46.198,79.636],"4.3":[120.445,46.246,79.774],"4.34":[120.506,46.295,79.849],"4.38":[120.613,46.349,79.981],"4.42":[120.681,46.413,80.074],"4.46":[120.739,46.479,80.149],"4.5":[120.832,46.537,80.256],"4.54":[120.904,46.584,80.363],"4.59":[120.989,46.644,80.472],"4.63":[121.053,46.707,80.56],"4.67":[121.123,46.773,80.659],"4.71":[121.178,46.85,80.723],"4.75":[121.258,46.924,80.833],"4.8":[121.311,47.003,80.917],"4.84":[121.344,47.091,80.992],"4.88":[121.38,47.196,81.046],"4.92":[121.344,47.091,80.992],"4.96":[121.311,47.003,80.917],"5.0":[121.249,46.925,80.825],"5.04":[121.191,46.845,80.745],"5.09":[121.118,46.769,80.648],"5.13":[121.053,46.706,80.56],"5.17":[120.989,46.644,80.472],"5.21":[120.904,46.584,80.363],"5.25":[120.832,46.537,80.256],"5.3":[120.739,46.479,80.149],"5.34":[120.681,46.413,80.074],"5.38":[120.613,46.349,79.981],"5.42":[120.506,46.295,79.849],"5.46":[120.444,46.248,79.771],"5.5":[120.337,46.199,79.635],"5.54":[120.285,46.114,79.569],"5.59":[120.218,46.068,79.483],"5.63":[120.124,46.004,79.366],"5.67":[120.049,45.928,79.27],"5.71":[119.991,45.857,79.184],"5.75":[119.965,45.772,79.134],"5.8":[119.9,45.689,79.044],"5.84":[119.866,45.602,78.98],"5.88":[119.863,45.603,78.976],"5.92":[119.896,45.69,79.036],"5.96":[119.965,45.772,79.134],"6.0":[119.998,45.858,79.195],"6.05":[120.05,45.928,79.27],"6.09":[120.132,46.001,79.37],"6.13":[120.216,46.067,79.473],"6.17":[120.285,46.114,79.569],"6.21":[120.338,46.198,79.636],"6.26":[120.445,46.246,79.774],"6.3":[120.506,46.295,79.849],"6.34":[120.613,46.349,79.981],"6.38":[120.681,46.413,80.074],"6.42":[120.739,46.479,80.149],"6.46":[120.832,46.537,80.256],"6.5":[120.904,46.584,80.363],"6.55":[120.989,46.644,80.472],"6.59":[121.053,46.707,80.56],"6.63":[121.123,46.773,80.659],"6.67":[121.178,46.85,80.723],"6.71":[121.258,46.924,80.833],"6.76":[121.311,47.003,80.917],"6.8":[121.344,47.091,80.992],"6.84":[121.38,47.196,81.046],"6.88":[121.344,47.091,80.992],"6.92":[121.311,47.003,80.917],"6.96":[121.249,46.925,80.825],"7.0":[121.191,46.845,80.745],"7.05":[121.118,46.769,80.648],"7.09":[121.053,46.706,80.56],"7.13":[120.989,46.644,80.472],"7.17":[120.904,46.584,80.363],"7.21":[120.832,46.537,80.256],"7.26":[120.739,46.479,80.149],"7.3":[120.681,46.413,80.074],"7.34":[120.613,46.349,79.981],"7.38":[120.506,46.295,79.849],"7.42":[120.444,46.248,79.771],"7.46":[120.337,46.199,79.635],"7.5":[120.285,46.114,79.569],"7.55":[120.218,46.068,79.483],"7.59":[120.124,46.004,79.366],"7.63":[120.049,45.928,79.27],"7.67":[119.991,45.857,79.184],"7.71":[119.965,45.772,79.134],"7.76":[119.9,45.689,79.044],"7.8":[119.866,45.602,78.98],"7.84":[119.863,45.603,78.976],"7.88":[119.896,45.69,79.036],"7.92":[119.965,45.772,79.134],"7.96":[119.998,45.858,79.195],"8.01":[120.05,45.928,79.27],"8.05":[120.132,46.001,79.37],"8.09":[120.216,46.067,79.473],"8.13":[120.285,46.114,79.569],"8.17":[120.338,46.198,79.636],"8.22":[120.445,46.246,79.774],"8.26":[120.506,46.295,79.849],"8.3":[120.613,46.349,79.981],"8.34":[120.681,46.413,80.074],"8.38":[120.739,46.479,80.149],"8.42":[120.832,46.537,80.256],"8.46":[120.904,46.584,80.363],"8.51":[120.989,46.644,80.472],"8.55":[121.053,46.707,80.56],"8.59":[121.123,46.773,80.659],"8.63":[121.178,46.85,80.723],"8.67":[121.258,46.924,80.833],"8.72":[121.311,47.003,80.917],"8.76":[121.344,47.091,80.992],"8.8":[121.38,47.196,81.046],"8.84":[121.344,47.091,80.992],"8.88":[121.311,47.003,80.917],"8.92":[121.249,46.925,80.825],"8.96":[121.191,46.845,80.745],"9.01":[121.118,46.769,80.648],"9.05":[121.053,46.706,80.56],"9.09":[120.989,46.644,80.472],"9.13":[120.904,46.584,80.363],"9.17":[120.832,46.537,80.256],"9.22":[120.739,46.479,80.149],"9.26":[120.681,46.413,80.074],"9.3":[120.613,46.349,79.981],"9.34":[120.506,46.295,79.849],"9.38":[120.444,46.248,79.771],"9.42":[120.337,46.199,79.635],"9.46":[120.285,46.114,79.569],"9.51":[120.218,46.068,79.483],"9.55":[120.124,46.004,79.366],"9.59":[120.049,45.928,79.27],"9.63":[119.991,45.857,79.184],"9.67":[119.965,45.772,79.134],"9.72":[119.9,45.689,79.044],"9.76":[119.866,45.602,78.98],"9.8":[119.863,45.603,78.976],"9.84":[119.896,45.69,79.036],"9.88":[119.965,45.772,79.134],"9.92":[119.998,45.858,79.195],"9.97":[120.05,45.928,79.27],"10.01":[120.132,46.001,79.37],"10.05":[120.216,46.067,79.473],"10.09":[120.285,46.114,79.569],"10.13":[120.338,46.198,79.636],"10.18":[120.445,46.246,79.774],"10.22":[120.506,46.295,79.849],"10.26":[120.613,46.349,79.981],"10.3":[120.681,46.413,80.074],"10.34":[120.739,46.479,80.149],"10.38":[120.832,46.537,80.256],"10.42":[120.904,46.584,80.363],"10.47":[120.989,46.644,80.472],"10.51":[121.053,46.707,80.56],"10.55":[121.123,46.773,80.659],"10.59":[121.178,46.85,80.723],"10.63":[121.258,46.924,80.833],"10.68":[121.311,47.003,80.917],"10.72":[121.344,47.091,80.992],"10.76":[121.38,47.196,81.046],"10.8":[121.344,47.091,80.992],"10.84":[121.311,47.003,80.917],"10.88":[121.249,46.925,80.825],"10.92":[121.191,46.845,80.745],"10.97":[121.118,46.769,80.648],"11.01":[121.053,46.706,80.56],"11.05":[120.989,46.644,80.472],"11.09":[120.904,46.584,80.363],"11.13":[120.832,46.537,80.256],"11.18":[120.739,46.479,80.149],"11.22":[120.681,46.413,80.074],"11.26":[120.613,46.349,79.981],"11.3":[120.506,46.295,79.849],"11.34":[120.444,46.248,79.771],"11.38":[120.337,46.199,79.635],"11.42":[120.285,46.114,79.569],"11.47":[120.218,46.068,79.483],"11.51":[120.124,46.004,79.366],"11.55":[120.049,45.928,79.27],"11.59":[119.991,45.857,79.184],"11.63":[119.965,45.772,79.134],"11.68":[119.9,45.689,79.044],"11.72":[119.866,45.602,78.98],"11.76":[119.863,45.603,78.976],"11.8":[119.896,45.69,79.036],"11.84":[119.965,45.772,79.134],"11.88":[119.998,45.858,79.195],"11.93":[120.05,45.928,79.27],"11.97":[120.132,46.001,79.37],"12.01":[120.216,46.067,79.473],"12.05":[120.285,46.114,79.569],"12.09":[120.338,46.198,79.636],"12.14":[120.445,46.246,79.774],"12.18":[120.506,46.295,79.849],"12.22":[120.613,46.349,79.981],"12.26":[120.681,46.413,80.074],"12.3":[120.739,46.479,80.149],"12.34":[120.832,46.537,80.256],"12.38":[120.904,46.584,80.363],"12.43":[120.989,46.644,80.472],"12.47":[121.053,46.707,80.56],"12.51":[121.123,46.773,80.659],"12.55":[121.178,46.85,80.723],"12.59":[121.258,46.924,80.833],"12.64":[121.311,47.003,80.917],"12.68":[121.344,47.091,80.992],"12.72":[121.38,47.196,81.046],"12.76":[121.344,47.091,80.992],"12.8":[121.311,47.003,80.917],"12.84":[121.249,46.925,80.825],"12.88":[121.191,46.845,80.745],"12.93":[121.118,46.769,80.648],"12.97":[121.053,46.706,80.56],"13.01":[120.989,46.644,80.472],"13.05":[120.904,46.584,80.363],"13.09":[120.832,46.537,80.256],"13.14":[120.739,46.479,80.149],"13.18":[120.681,46.413,80.074],"13.22":[120.613,46.349,79.981],"13.26":[120.506,46.295,79.849],"13.3":[120.444,46.248,79.771],"13.34":[120.337,46.199,79.635],"13.38":[120.285,46.114,79.569],"13.43":[120.218,46.068,79.483],"13.47":[120.124,46.004,79.366],"13.51":[120.049,45.928,79.27],"13.55":[119.991,45.857,79.184],"13.59":[119.965,45.772,79.134],"13.64":[119.9,45.689,79.044],"13.68":[119.866,45.602,78.98],"13.72":{"pre":[119.807,45.512,78.905],"post":[119.807,45.512,78.905],"lerp_mode":"catmullrom"}},"position":{"0.0":[14.102,-27.115,-21.813],"0.04":[14.106,-27.121,-21.816],"0.08":[14.109,-27.127,-21.818],"0.12":[14.106,-27.141,-21.823],"0.17":[14.109,-27.15,-21.825],"0.21":[14.11,-27.165,-21.823],"0.25":[14.105,-27.179,-21.82],"0.29":[14.105,-27.198,-21.822],"0.33":[14.106,-27.209,-21.818],"0.38":[14.1,-27.228,-21.818],"0.42":[14.103,-27.248,-21.815],"0.46":[14.095,-27.26,-21.813],"0.5":[14.095,-27.279,-21.814],"0.54":[14.092,-27.298,-21.811],"0.58":[14.093,-27.317,-21.811],"0.62":[14.086,-27.329,-21.806],"0.67":[14.089,-27.347,-21.808],"0.71":[14.091,-27.362,-21.806],"0.75":[14.087,-27.376,-21.804],"0.79":[14.087,-27.386,-21.806],"0.83":[14.089,-27.4,-21.808],"0.88":[14.093,-27.406,-21.807],"0.92":[14.098,-27.411,-21.808],"0.96":[14.103,-27.415,-21.812],"1.0":[14.098,-27.411,-21.808],"1.04":[14.093,-27.406,-21.807],"1.08":[14.089,-27.4,-21.808],"1.12":[14.087,-27.386,-21.806],"1.17":[14.087,-27.376,-21.804],"1.21":[14.091,-27.362,-21.806],"1.25":[14.089,-27.347,-21.808],"1.29":[14.086,-27.329,-21.806],"1.33":[14.093,-27.317,-21.811],"1.38":[14.092,-27.298,-21.811],"1.42":[14.095,-27.279,-21.814],"1.46":[14.095,-27.26,-21.813],"1.5":[14.103,-27.248,-21.815],"1.54":[14.1,-27.228,-21.818],"1.58":[14.106,-27.209,-21.818],"1.62":[14.105,-27.198,-21.822],"1.67":[14.105,-27.179,-21.82],"1.71":[14.111,-27.164,-21.824],"1.75":[14.109,-27.15,-21.825],"1.79":[14.106,-27.141,-21.823],"1.83":[14.109,-27.127,-21.818],"1.88":[14.106,-27.121,-21.816],"1.92":[14.102,-27.115,-21.813],"1.96":[14.102,-27.115,-21.813],"2.0":[14.106,-27.121,-21.816],"2.04":[14.109,-27.127,-21.818],"2.08":[14.106,-27.141,-21.823],"2.13":[14.109,-27.15,-21.825],"2.17":[14.11,-27.165,-21.823],"2.21":[14.105,-27.179,-21.82],"2.25":[14.105,-27.198,-21.822],"2.29":[14.106,-27.209,-21.818],"2.34":[14.1,-27.228,-21.818],"2.38":[14.103,-27.248,-21.815],"2.42":[14.095,-27.26,-21.813],"2.46":[14.095,-27.279,-21.814],"2.5":[14.092,-27.298,-21.811],"2.54":[14.093,-27.317,-21.811],"2.58":[14.086,-27.329,-21.806],"2.63":[14.089,-27.347,-21.808],"2.67":[14.091,-27.362,-21.806],"2.71":[14.087,-27.376,-21.804],"2.75":[14.087,-27.386,-21.806],"2.79":[14.089,-27.4,-21.808],"2.84":[14.093,-27.406,-21.807],"2.88":[14.098,-27.411,-21.808],"2.92":[14.103,-27.415,-21.812],"2.96":[14.098,-27.411,-21.808],"3.0":[14.093,-27.406,-21.807],"3.04":[14.089,-27.4,-21.808],"3.08":[14.087,-27.386,-21.806],"3.13":[14.087,-27.376,-21.804],"3.17":[14.091,-27.362,-21.806],"3.21":[14.089,-27.347,-21.808],"3.25":[14.086,-27.329,-21.806],"3.29":[14.093,-27.317,-21.811],"3.34":[14.092,-27.298,-21.811],"3.38":[14.095,-27.279,-21.814],"3.42":[14.095,-27.26,-21.813],"3.46":[14.103,-27.248,-21.815],"3.5":[14.1,-27.228,-21.818],"3.54":[14.106,-27.209,-21.818],"3.58":[14.105,-27.198,-21.822],"3.63":[14.105,-27.179,-21.82],"3.67":[14.111,-27.164,-21.824],"3.71":[14.109,-27.15,-21.825],"3.75":[14.106,-27.141,-21.823],"3.79":[14.109,-27.127,-21.818],"3.84":[14.106,-27.121,-21.816],"3.88":[14.102,-27.115,-21.813],"3.92":[14.102,-27.115,-21.813],"3.96":[14.106,-27.121,-21.816],"4.0":[14.109,-27.127,-21.818],"4.04":[14.106,-27.141,-21.823],"4.09":[14.109,-27.15,-21.825],"4.13":[14.11,-27.165,-21.823],"4.17":[14.105,-27.179,-21.82],"4.21":[14.105,-27.198,-21.822],"4.25":[14.106,-27.209,-21.818],"4.3":[14.1,-27.228,-21.818],"4.34":[14.103,-27.248,-21.815],"4.38":[14.095,-27.26,-21.813],"4.42":[14.095,-27.279,-21.814],"4.46":[14.092,-27.298,-21.811],"4.5":[14.093,-27.317,-21.811],"4.54":[14.086,-27.329,-21.806],"4.59":[14.089,-27.347,-21.808],"4.63":[14.091,-27.362,-21.806],"4.67":[14.087,-27.376,-21.804],"4.71":[14.087,-27.386,-21.806],"4.75":[14.089,-27.4,-21.808],"4.8":[14.093,-27.406,-21.807],"4.84":[14.098,-27.411,-21.808],"4.88":[14.103,-27.415,-21.812],"4.92":[14.098,-27.411,-21.808],"4.96":[14.093,-27.406,-21.807],"5.0":[14.089,-27.4,-21.808],"5.04":[14.087,-27.386,-21.806],"5.09":[14.087,-27.376,-21.804],"5.13":[14.091,-27.362,-21.806],"5.17":[14.089,-27.347,-21.808],"5.21":[14.086,-27.329,-21.806],"5.25":[14.093,-27.317,-21.811],"5.3":[14.092,-27.298,-21.811],"5.34":[14.095,-27.279,-21.814],"5.38":[14.095,-27.26,-21.813],"5.42":[14.103,-27.248,-21.815],"5.46":[14.1,-27.228,-21.818],"5.5":[14.106,-27.209,-21.818],"5.54":[14.105,-27.198,-21.822],"5.59":[14.105,-27.179,-21.82],"5.63":[14.111,-27.164,-21.824],"5.67":[14.109,-27.15,-21.825],"5.71":[14.106,-27.141,-21.823],"5.75":[14.109,-27.127,-21.818],"5.8":[14.106,-27.121,-21.816],"5.84":[14.102,-27.115,-21.813],"5.88":[14.102,-27.115,-21.813],"5.92":[14.106,-27.121,-21.816],"5.96":[14.109,-27.127,-21.818],"6.0":[14.106,-27.141,-21.823],"6.05":[14.109,-27.15,-21.825],"6.09":[14.11,-27.165,-21.823],"6.13":[14.105,-27.179,-21.82],"6.17":[14.105,-27.198,-21.822],"6.21":[14.106,-27.209,-21.818],"6.26":[14.1,-27.228,-21.818],"6.3":[14.103,-27.248,-21.815],"6.34":[14.095,-27.26,-21.813],"6.38":[14.095,-27.279,-21.814],"6.42":[14.092,-27.298,-21.811],"6.46":[14.093,-27.317,-21.811],"6.5":[14.086,-27.329,-21.806],"6.55":[14.089,-27.347,-21.808],"6.59":[14.091,-27.362,-21.806],"6.63":[14.087,-27.376,-21.804],"6.67":[14.087,-27.386,-21.806],"6.71":[14.089,-27.4,-21.808],"6.76":[14.093,-27.406,-21.807],"6.8":[14.098,-27.411,-21.808],"6.84":[14.103,-27.415,-21.812],"6.88":[14.098,-27.411,-21.808],"6.92":[14.093,-27.406,-21.807],"6.96":[14.089,-27.4,-21.808],"7.0":[14.087,-27.386,-21.806],"7.05":[14.087,-27.376,-21.804],"7.09":[14.091,-27.362,-21.806],"7.13":[14.089,-27.347,-21.808],"7.17":[14.086,-27.329,-21.806],"7.21":[14.093,-27.317,-21.811],"7.26":[14.092,-27.298,-21.811],"7.3":[14.095,-27.279,-21.814],"7.34":[14.095,-27.26,-21.813],"7.38":[14.103,-27.248,-21.815],"7.42":[14.1,-27.228,-21.818],"7.46":[14.106,-27.209,-21.818],"7.5":[14.105,-27.198,-21.822],"7.55":[14.105,-27.179,-21.82],"7.59":[14.111,-27.164,-21.824],"7.63":[14.109,-27.15,-21.825],"7.67":[14.106,-27.141,-21.823],"7.71":[14.109,-27.127,-21.818],"7.76":[14.106,-27.121,-21.816],"7.8":[14.102,-27.115,-21.813],"7.84":[14.102,-27.115,-21.813],"7.88":[14.106,-27.121,-21.816],"7.92":[14.109,-27.127,-21.818],"7.96":[14.106,-27.141,-21.823],"8.01":[14.109,-27.15,-21.825],"8.05":[14.11,-27.165,-21.823],"8.09":[14.105,-27.179,-21.82],"8.13":[14.105,-27.198,-21.822],"8.17":[14.106,-27.209,-21.818],"8.22":[14.1,-27.228,-21.818],"8.26":[14.103,-27.248,-21.815],"8.3":[14.095,-27.26,-21.813],"8.34":[14.095,-27.279,-21.814],"8.38":[14.092,-27.298,-21.811],"8.42":[14.093,-27.317,-21.811],"8.46":[14.086,-27.329,-21.806],"8.51":[14.089,-27.347,-21.808],"8.55":[14.091,-27.362,-21.806],"8.59":[14.087,-27.376,-21.804],"8.63":[14.087,-27.386,-21.806],"8.67":[14.089,-27.4,-21.808],"8.72":[14.093,-27.406,-21.807],"8.76":[14.098,-27.411,-21.808],"8.8":[14.103,-27.415,-21.812],"8.84":[14.098,-27.411,-21.808],"8.88":[14.093,-27.406,-21.807],"8.92":[14.089,-27.4,-21.808],"8.96":[14.087,-27.386,-21.806],"9.01":[14.087,-27.376,-21.804],"9.05":[14.091,-27.362,-21.806],"9.09":[14.089,-27.347,-21.808],"9.13":[14.086,-27.329,-21.806],"9.17":[14.093,-27.317,-21.811],"9.22":[14.092,-27.298,-21.811],"9.26":[14.095,-27.279,-21.814],"9.3":[14.095,-27.26,-21.813],"9.34":[14.103,-27.248,-21.815],"9.38":[14.1,-27.228,-21.818],"9.42":[14.106,-27.209,-21.818],"9.46":[14.105,-27.198,-21.822],"9.51":[14.105,-27.179,-21.82],"9.55":[14.111,-27.164,-21.824],"9.59":[14.109,-27.15,-21.825],"9.63":[14.106,-27.141,-21.823],"9.67":[14.109,-27.127,-21.818],"9.72":[14.106,-27.121,-21.816],"9.76":[14.102,-27.115,-21.813],"9.8":[14.102,-27.115,-21.813],"9.84":[14.106,-27.121,-21.816],"9.88":[14.109,-27.127,-21.818],"9.92":[14.106,-27.141,-21.823],"9.97":[14.109,-27.15,-21.825],"10.01":[14.11,-27.165,-21.823],"10.05":[14.105,-27.179,-21.82],"10.09":[14.105,-27.198,-21.822],"10.13":[14.106,-27.209,-21.818],"10.18":[14.1,-27.228,-21.818],"10.22":[14.103,-27.248,-21.815],"10.26":[14.095,-27.26,-21.813],"10.3":[14.095,-27.279,-21.814],"10.34":[14.092,-27.298,-21.811],"10.38":[14.093,-27.317,-21.811],"10.42":[14.086,-27.329,-21.806],"10.47":[14.089,-27.347,-21.808],"10.51":[14.091,-27.362,-21.806],"10.55":[14.087,-27.376,-21.804],"10.59":[14.087,-27.386,-21.806],"10.63":[14.089,-27.4,-21.808],"10.68":[14.093,-27.406,-21.807],"10.72":[14.098,-27.411,-21.808],"10.76":[14.103,-27.415,-21.812],"10.8":[14.098,-27.411,-21.808],"10.84":[14.093,-27.406,-21.807],"10.88":[14.089,-27.4,-21.808],"10.92":[14.087,-27.386,-21.806],"10.97":[14.087,-27.376,-21.804],"11.01":[14.091,-27.362,-21.806],"11.05":[14.089,-27.347,-21.808],"11.09":[14.086,-27.329,-21.806],"11.13":[14.093,-27.317,-21.811],"11.18":[14.092,-27.298,-21.811],"11.22":[14.095,-27.279,-21.814],"11.26":[14.095,-27.26,-21.813],"11.3":[14.103,-27.248,-21.815],"11.34":[14.1,-27.228,-21.818],"11.38":[14.106,-27.209,-21.818],"11.42":[14.105,-27.198,-21.822],"11.47":[14.105,-27.179,-21.82],"11.51":[14.111,-27.164,-21.824],"11.55":[14.109,-27.15,-21.825],"11.59":[14.106,-27.141,-21.823],"11.63":[14.109,-27.127,-21.818],"11.68":[14.106,-27.121,-21.816],"11.72":[14.102,-27.115,-21.813],"11.76":[14.102,-27.115,-21.813],"11.8":[14.106,-27.121,-21.816],"11.84":[14.109,-27.127,-21.818],"11.88":[14.106,-27.141,-21.823],"11.93":[14.109,-27.15,-21.825],"11.97":[14.11,-27.165,-21.823],"12.01":[14.105,-27.179,-21.82],"12.05":[14.105,-27.198,-21.822],"12.09":[14.106,-27.209,-21.818],"12.14":[14.1,-27.228,-21.818],"12.18":[14.103,-27.248,-21.815],"12.22":[14.095,-27.26,-21.813],"12.26":[14.095,-27.279,-21.814],"12.3":[14.092,-27.298,-21.811],"12.34":[14.093,-27.317,-21.811],"12.38":[14.086,-27.329,-21.806],"12.43":[14.089,-27.347,-21.808],"12.47":[14.091,-27.362,-21.806],"12.51":[14.087,-27.376,-21.804],"12.55":[14.087,-27.386,-21.806],"12.59":[14.089,-27.4,-21.808],"12.64":[14.093,-27.406,-21.807],"12.68":[14.098,-27.411,-21.808],"12.72":[14.103,-27.415,-21.812],"12.76":[14.098,-27.411,-21.808],"12.8":[14.093,-27.406,-21.807],"12.84":[14.089,-27.4,-21.808],"12.88":[14.087,-27.386,-21.806],"12.93":[14.087,-27.376,-21.804],"12.97":[14.091,-27.362,-21.806],"13.01":[14.089,-27.347,-21.808],"13.05":[14.086,-27.329,-21.806],"13.09":[14.093,-27.317,-21.811],"13.14":[14.092,-27.298,-21.811],"13.18":[14.095,-27.279,-21.814],"13.22":[14.095,-27.26,-21.813],"13.26":[14.103,-27.248,-21.815],"13.3":[14.1,-27.228,-21.818],"13.34":[14.106,-27.209,-21.818],"13.38":[14.105,-27.198,-21.822],"13.43":[14.105,-27.179,-21.82],"13.47":[14.111,-27.164,-21.824],"13.51":[14.109,-27.15,-21.825],"13.55":[14.106,-27.141,-21.823],"13.59":[14.109,-27.127,-21.818],"13.64":[14.106,-27.121,-21.816],"13.68":[14.102,-27.115,-21.813],"13.72":{"pre":[14.099,-27.109,-21.81],"post":[14.099,-27.109,-21.81],"lerp_mode":"catmullrom"}}},"righthand":{"position":[-0.5,2.2,0],"scale":[1,1.4,1]}}},"static_idle_1":{"animation_length":3.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[86.362,-49.187,-92.152],"0.04":[87.406,-48.931,-92.411],"0.08":[88.851,-48.528,-92.843],"0.12":[90.479,-47.972,-93.412],"0.17":[91.993,-47.256,-94.105],"0.21":[93.173,-46.439,-94.903],"0.25":[93.854,-45.361,-95.825],"0.29":[94.039,-43.864,-96.984],"0.33":[93.82,-42.114,-98.303],"0.38":[93.471,-40.632,-99.666],"0.42":[93.172,-39.707,-101.037],"0.46":[93.888,-39.888,-103.811],"0.5":[97.319,-41.492,-110.578],"0.54":[103.164,-43.201,-120.124],"0.58":[110.691,-43.921,-131.013],"0.62":[118.235,-43.027,-141.175],"0.67":[123.412,-40.673,-147.708],"0.71":[124.552,-39.876,-146.676],"0.75":[114.848,-45.873,-128.272],"0.79":[87.658,-50.732,-88.343],"0.83":[62.549,-44.541,-53.122],"0.88":[62.996,-44.326,-52.932],"0.92":[63.875,-43.963,-53.299],"0.96":[64.872,-43.629,-53.96],"1.0":[65.667,-43.601,-54.652],"1.04":[65.973,-44.009,-55.106],"1.08":[65.882,-44.793,-55.36],"1.12":[65.541,-45.785,-55.468],"1.17":[65.132,-46.771,-55.527],"1.21":[64.815,-47.56,-55.657],"1.25":[64.773,-47.971,-55.942],"1.29":[65.104,-47.899,-56.49],"1.33":[65.757,-47.354,-57.183],"1.38":[66.459,-46.612,-57.858],"1.42":[67.039,-45.833,-58.365],"1.46":[67.386,-45.207,-58.643],"1.5":[67.256,-45.012,-58.494],"1.54":[66.806,-45.124,-58.036],"1.58":[66.169,-45.427,-57.414],"1.62":[65.498,-45.841,-56.712],"1.67":[64.938,-46.259,-56.059],"1.71":[64.5,-46.578,-55.575],"1.75":[64.358,-46.704,-55.429],"1.79":[64.484,-46.658,-55.621],"1.83":[64.74,-46.51,-55.979],"1.88":[65.085,-46.324,-56.491],"1.92":[65.498,-46.088,-57.112],"1.96":[65.957,-45.834,-57.841],"2.0":[66.414,-45.526,-58.557],"2.04":[66.89,-45.213,-59.327],"2.08":[67.339,-44.895,-60.065],"2.12":[67.72,-44.566,-60.733],"2.17":[68.068,-44.266,-61.327],"2.21":[68.347,-43.987,-61.81],"2.25":[68.542,-43.735,-62.167],"2.29":[68.652,-43.546,-62.398],"2.33":[68.62,-43.433,-62.398],"2.38":[68.506,-43.436,-62.21],"2.42":[68.295,-43.562,-61.872],"2.46":[68.015,-43.794,-61.429],"2.5":[67.686,-44.104,-60.9],"2.54":[67.309,-44.455,-60.3],"2.58":[66.889,-44.806,-59.676],"2.62":[66.483,-45.164,-59.095],"2.67":[66.1,-45.483,-58.558],"2.71":[65.743,-45.764,-58.009],"2.75":[65.383,-46.054,-57.438],"2.79":[64.979,-46.392,-56.876],"2.83":[64.46,-46.77,-56.337],"2.88":[63.81,-47.232,-55.863],"2.92":[59.692,-47.617,-52.118],"2.96":[46.676,-50.845,-38.952],"3.0":[30.426,-50.53,-25.867],"3.04":[21.476,-52.303,-25.28],"3.08":[20.035,-53.162,-33.328],"3.12":[23.083,-48.467,-42.418],"3.17":[26.682,-43.156,-49.824],"3.21":[29.073,-39.421,-54.391],"3.25":[31.294,-37.435,-56.989],"3.29":[34.056,-37.207,-58.146],"3.33":[37.983,-38.911,-58.043],"3.38":[43.362,-42.06,-57.253],"3.42":[50.063,-45.888,-56.847],"3.46":[56.951,-48.759,-58.539],"3.5":[63.372,-50.184,-62.355],"3.54":[69.044,-50.554,-67.203],"3.58":[73.649,-50.161,-72.322],"3.62":[77.138,-49.368,-77.246],"3.67":[79.511,-48.588,-81.555],"3.71":[81.344,-48.085,-85.237],"3.75":[83.02,-48.096,-88.149],"3.79":[84.608,-48.597,-90.356],"3.83":[85.597,-49.121,-91.636],"3.88":[85.916,-49.286,-92.05],"3.96":[85.916,-49.286,-92.05]},"position":{"0.0":[-11.138,-25.082,-16.361],"0.04":[-11.189,-25.054,-16.321],"0.08":[-11.255,-25.007,-16.265],"0.12":[-11.323,-24.956,-16.195],"0.17":[-11.382,-24.881,-16.106],"0.21":[-11.413,-24.805,-16.011],"0.25":[-11.403,-24.724,-15.915],"0.29":[-11.343,-24.639,-15.812],"0.33":[-11.253,-24.554,-15.705],"0.38":[-11.168,-24.472,-15.603],"0.42":[-11.118,-24.398,-15.507],"0.46":[-11.103,-24.318,-15.405],"0.5":[-11.079,-24.225,-15.271],"0.54":[-11.044,-24.137,-15.139],"0.58":[-11.005,-24.081,-15.037],"0.62":[-10.961,-24.065,-14.994],"0.67":[-10.92,-24.147,-15.07],"0.71":[-10.87,-24.363,-15.333],"0.75":[-10.817,-24.686,-15.727],"0.79":[-10.764,-25.036,-16.129],"0.83":[-10.715,-25.333,-16.387],"0.88":[-10.671,-25.627,-16.484],"0.92":[-10.652,-25.809,-16.491],"0.96":[-10.67,-25.808,-16.494],"1.0":[-10.692,-25.752,-16.494],"1.04":[-10.72,-25.683,-16.495],"1.08":[-10.752,-25.597,-16.491],"1.12":[-10.782,-25.5,-16.487],"1.17":[-10.813,-25.401,-16.483],"1.21":[-10.846,-25.3,-16.477],"1.25":[-10.88,-25.21,-16.471],"1.29":[-10.911,-25.119,-16.455],"1.33":[-10.94,-25.048,-16.448],"1.38":[-10.966,-24.994,-16.439],"1.42":[-10.993,-24.965,-16.427],"1.46":[-11.013,-24.974,-16.414],"1.5":[-11.036,-25.03,-16.4],"1.54":[-11.057,-25.124,-16.377],"1.58":[-11.075,-25.239,-16.353],"1.62":[-11.085,-25.362,-16.331],"1.67":[-11.095,-25.471,-16.308],"1.71":[-11.094,-25.561,-16.292],"1.75":[-11.087,-25.61,-16.281],"1.79":[-11.073,-25.629,-16.278],"1.83":[-11.048,-25.629,-16.282],"1.88":[-11.021,-25.624,-16.285],"1.92":[-10.987,-25.61,-16.292],"1.96":[-10.955,-25.595,-16.302],"2.0":[-10.917,-25.57,-16.312],"2.04":[-10.879,-25.542,-16.325],"2.08":[-10.842,-25.508,-16.337],"2.12":[-10.805,-25.477,-16.349],"2.17":[-10.772,-25.447,-16.362],"2.21":[-10.74,-25.413,-16.374],"2.25":[-10.716,-25.388,-16.386],"2.29":[-10.697,-25.363,-16.392],"2.33":[-10.686,-25.344,-16.399],"2.38":[-10.676,-25.33,-16.403],"2.42":[-10.67,-25.317,-16.407],"2.46":[-10.662,-25.299,-16.407],"2.5":[-10.658,-25.289,-16.406],"2.54":[-10.652,-25.276,-16.406],"2.58":[-10.65,-25.262,-16.405],"2.62":[-10.648,-25.252,-16.405],"2.67":[-10.646,-25.233,-16.403],"2.71":[-10.652,-25.217,-16.402],"2.75":[-10.663,-25.201,-16.401],"2.79":[-10.678,-25.18,-16.395],"2.83":[-10.738,-25.173,-16.394],"2.88":[-11.02,-25.182,-16.381],"2.92":[-11.448,-25.211,-16.368],"2.96":[-11.95,-25.21,-16.367],"3.0":[-12.473,-25.159,-16.38],"3.04":[-12.944,-25.073,-16.402],"3.08":[-13.3,-25.005,-16.412],"3.12":[-13.497,-24.988,-16.41],"3.17":[-13.621,-25.023,-16.446],"3.21":[-13.697,-25.1,-16.523],"3.25":[-13.728,-25.2,-16.624],"3.29":[-13.713,-25.299,-16.729],"3.33":[-13.655,-25.39,-16.809],"3.38":[-13.557,-25.447,-16.85],"3.42":[-13.416,-25.456,-16.844],"3.46":[-13.228,-25.441,-16.807],"3.5":[-12.985,-25.408,-16.759],"3.54":[-12.719,-25.364,-16.696],"3.58":[-12.436,-25.314,-16.628],"3.62":[-12.15,-25.259,-16.562],"3.67":[-11.878,-25.203,-16.499],"3.71":[-11.628,-25.159,-16.447],"3.75":[-11.416,-25.125,-16.409],"3.79":[-11.255,-25.104,-16.39],"3.83":[-11.154,-25.095,-16.378],"3.88":[-11.116,-25.094,-16.376],"3.96":[-11.116,-25.094,-16.376]}},"blade":{"rotation":{"0.0":[19.45,9.565,166.183],"0.04":[19.446,9.57,166.181],"0.08":[19.448,9.562,166.179],"0.12":[19.452,9.559,166.177],"0.17":[19.436,9.556,166.183],"0.21":[19.434,9.554,166.179],"0.25":[19.448,9.56,166.193],"0.29":[19.437,9.554,166.173],"0.33":[19.432,9.559,166.191],"0.38":[19.447,9.57,166.175],"0.42":[19.438,9.563,166.172],"0.46":[19.433,9.555,166.18],"0.5":[19.435,9.562,166.18],"0.54":[19.428,9.552,166.18],"0.58":[19.42,9.556,166.18],"0.62":[19.436,9.557,166.187],"0.67":[19.43,9.56,166.188],"0.71":[19.414,9.568,166.17],"0.75":[19.392,9.551,166.15],"0.79":[19.454,9.565,166.174],"0.83":[19.433,9.487,166.173],"0.88":[19.439,9.498,166.161],"0.92":[19.44,9.506,166.169],"0.96":[19.427,9.503,166.167],"1.0":[19.442,9.507,166.177],"1.04":[19.438,9.507,166.173],"1.08":[19.43,9.503,166.167],"1.12":[19.425,9.496,166.163],"1.17":[19.443,9.503,166.173],"1.21":[19.437,9.494,166.178],"1.25":[19.443,9.509,166.186],"1.29":[19.435,9.481,166.181],"1.33":[19.44,9.489,166.175],"1.38":[19.436,9.485,166.164],"1.42":[19.433,9.503,166.164],"1.46":[19.437,9.501,166.173],"1.5":[19.437,9.495,166.162],"1.54":[19.443,9.501,166.171],"1.58":[19.427,9.498,166.172],"1.62":[19.425,9.502,166.152],"1.67":[19.447,9.505,166.17],"1.71":[19.43,9.505,166.16],"1.75":[19.44,9.502,166.161],"1.79":[19.433,9.481,166.162],"1.83":[19.43,9.491,166.166],"1.88":[19.432,9.501,166.165],"1.92":[19.437,9.504,166.168],"1.96":[19.444,9.484,166.165],"2.0":[19.434,9.499,166.167],"2.04":[19.441,9.499,166.17],"2.08":[19.443,9.492,166.171],"2.12":[19.427,9.491,166.174],"2.17":[19.437,9.5,166.17],"2.21":[19.442,9.508,166.172],"2.25":[19.437,9.512,166.179],"2.29":[19.437,9.481,166.179],"2.33":[19.429,9.49,166.173],"2.38":[19.437,9.497,166.165],"2.42":[19.436,9.506,166.165],"2.46":[19.436,9.506,166.161],"2.5":[19.429,9.486,166.165],"2.54":[19.434,9.49,166.164],"2.58":[19.43,9.506,166.171],"2.62":[19.424,9.489,166.166],"2.67":[19.443,9.504,166.167],"2.71":[19.445,9.511,166.171],"2.75":[19.443,9.513,166.173],"2.79":[19.442,9.487,166.167],"2.83":[19.43,9.492,166.171],"2.88":[19.435,9.496,166.175],"2.92":[19.43,9.49,166.175],"2.96":[19.449,9.518,166.174],"3.0":[19.435,9.484,166.185],"3.04":[19.473,9.502,166.213],"3.08":[19.49,9.502,166.211],"3.12":[19.484,9.517,166.194],"3.17":[19.442,9.579,166.159],"3.21":[19.436,9.575,166.15],"3.25":[19.428,9.574,166.149],"3.29":[19.444,9.573,166.165],"3.33":[19.437,9.571,166.152],"3.38":[19.441,9.57,166.179],"3.42":[19.449,9.554,166.181],"3.46":[19.452,9.561,166.179],"3.5":[19.456,9.564,166.173],"3.54":[19.448,9.56,166.167],"3.58":[19.447,9.561,166.178],"3.62":[19.451,9.567,166.175],"3.67":[19.447,9.565,166.176],"3.71":[19.446,9.559,166.184],"3.75":[19.458,9.573,166.179],"3.79":[19.436,9.569,166.178],"3.83":[19.442,9.576,166.178],"3.88":[19.447,9.562,166.182],"3.96":[19.447,9.562,166.182]},"position":{"0.0":[5.312,13.172,-2.242],"0.04":[5.314,13.174,-2.243],"0.08":[5.308,13.174,-2.245],"0.12":[5.314,13.173,-2.241],"0.17":[5.31,13.171,-2.244],"0.21":[5.312,13.17,-2.244],"0.25":[5.313,13.17,-2.243],"0.29":[5.316,13.164,-2.244],"0.33":[5.311,13.17,-2.246],"0.38":[5.309,13.171,-2.245],"0.42":[5.31,13.17,-2.245],"0.46":[5.314,13.163,-2.244],"0.5":[5.309,13.17,-2.24],"0.54":[5.309,13.169,-2.24],"0.58":[5.311,13.172,-2.244],"0.62":[5.315,13.165,-2.247],"0.67":[5.315,13.168,-2.248],"0.71":[5.312,13.168,-2.243],"0.75":[5.314,13.167,-2.235],"0.79":[5.319,13.168,-2.242],"0.83":[5.313,13.171,-2.238],"0.88":[5.312,13.169,-2.238],"0.92":[5.311,13.17,-2.24],"0.96":[5.313,13.17,-2.24],"1.0":[5.307,13.175,-2.242],"1.04":[5.307,13.174,-2.241],"1.08":[5.313,13.17,-2.243],"1.12":[5.303,13.174,-2.245],"1.17":[5.308,13.175,-2.241],"1.21":[5.314,13.169,-2.241],"1.25":[5.313,13.175,-2.239],"1.29":[5.303,13.178,-2.243],"1.33":[5.309,13.173,-2.24],"1.38":[5.305,13.171,-2.242],"1.42":[5.303,13.177,-2.244],"1.46":[5.305,13.179,-2.24],"1.5":[5.309,13.169,-2.241],"1.54":[5.308,13.171,-2.242],"1.58":[5.309,13.17,-2.243],"1.62":[5.308,13.171,-2.24],"1.67":[5.308,13.171,-2.243],"1.71":[5.311,13.172,-2.241],"1.75":[5.312,13.168,-2.24],"1.79":[5.314,13.167,-2.238],"1.83":[5.311,13.17,-2.241],"1.88":[5.312,13.167,-2.24],"1.92":[5.311,13.169,-2.24],"1.96":[5.315,13.172,-2.24],"2.0":[5.313,13.17,-2.242],"2.04":[5.309,13.175,-2.241],"2.08":[5.311,13.169,-2.242],"2.12":[5.314,13.167,-2.241],"2.17":[5.308,13.176,-2.244],"2.21":[5.307,13.172,-2.24],"2.25":[5.309,13.174,-2.242],"2.29":[5.312,13.167,-2.238],"2.33":[5.308,13.17,-2.242],"2.38":[5.31,13.168,-2.241],"2.42":[5.312,13.169,-2.242],"2.46":[5.304,13.172,-2.243],"2.5":[5.312,13.169,-2.241],"2.54":[5.312,13.17,-2.241],"2.58":[5.313,13.171,-2.243],"2.62":[5.319,13.17,-2.239],"2.67":[5.308,13.171,-2.241],"2.71":[5.309,13.172,-2.241],"2.75":[5.311,13.174,-2.243],"2.79":[5.307,13.168,-2.24],"2.83":[5.313,13.171,-2.239],"2.88":[5.31,13.173,-2.239],"2.92":[5.308,13.174,-2.244],"2.96":[5.311,13.17,-2.238],"3.0":[5.313,13.169,-2.236],"3.04":[5.306,13.169,-2.239],"3.08":[5.308,13.172,-2.237],"3.12":[5.309,13.169,-2.236],"3.17":[5.311,13.17,-2.237],"3.21":[5.313,13.17,-2.238],"3.25":[5.315,13.171,-2.24],"3.29":[5.308,13.169,-2.237],"3.33":[5.312,13.165,-2.239],"3.38":[5.313,13.168,-2.239],"3.42":[5.314,13.163,-2.236],"3.46":[5.31,13.171,-2.243],"3.5":[5.309,13.173,-2.242],"3.54":[5.31,13.171,-2.241],"3.58":[5.309,13.173,-2.242],"3.62":[5.311,13.175,-2.241],"3.67":[5.307,13.174,-2.244],"3.71":[5.313,13.173,-2.242],"3.75":[5.315,13.171,-2.242],"3.79":[5.313,13.17,-2.245],"3.83":[5.313,13.168,-2.242],"3.88":[5.315,13.166,-2.24],"3.96":[5.315,13.166,-2.24]}},"lefthand":{"rotation":{"0.0":[120.173,45.315,79.391],"0.04":[121.035,44.826,80.583],"0.08":[122.355,44.041,82.437],"0.12":[123.981,42.962,84.755],"0.17":[125.918,41.561,87.528],"0.21":[127.964,39.871,90.57],"0.25":[130.283,37.644,94.137],"0.29":[133.199,34.164,98.965],"0.33":[136.413,29.188,104.86],"0.38":[139.248,23.046,111.056],"0.42":[141.425,15.974,117.229],"0.46":[142.715,8.365,123.364],"0.5":[142.934,0.784,129.715],"0.54":[142.217,-6.41,136.274],"0.58":[140.758,-12.832,142.908],"0.62":[138.785,-18.261,149.484],"0.67":[136.716,-22.282,155.406],"0.71":[134.911,-24.868,160.225],"0.75":[133.799,-25.809,163.225],"0.79":[133.326,-25.745,164.738],"0.83":[133.101,-25.496,165.582],"0.88":[132.536,-25.376,166.732],"0.92":[131.681,-25.179,167.547],"0.96":[130.836,-24.898,167.983],"1.0":[130.408,-24.493,167.912],"1.04":[130.588,-24.037,167.404],"1.08":[131.275,-23.513,166.602],"1.12":[132.27,-22.896,165.614],"1.17":[133.248,-22.364,164.683],"1.21":[134.005,-21.905,163.944],"1.25":[134.332,-21.593,163.47],"1.29":[134.091,-21.507,163.281],"1.33":[133.348,-21.647,163.344],"1.38":[132.433,-21.89,163.511],"1.42":[131.534,-22.203,163.753],"1.46":[130.887,-22.487,163.977],"1.5":[130.838,-22.695,164.055],"1.54":[131.168,-22.836,164.053],"1.58":[131.735,-22.895,164.01],"1.62":[132.419,-22.893,163.96],"1.67":[133.051,-22.839,163.942],"1.71":[133.49,-22.771,163.951],"1.75":[133.674,-22.756,163.923],"1.79":[133.575,-22.735,163.885],"1.83":[133.314,-22.74,163.809],"1.88":[132.996,-22.716,163.663],"1.92":[132.596,-22.716,163.485],"1.96":[132.157,-22.695,163.272],"2.0":[131.678,-22.71,163.05],"2.04":[131.186,-22.725,162.822],"2.08":[130.703,-22.753,162.591],"2.12":[130.237,-22.797,162.379],"2.17":[129.832,-22.842,162.176],"2.21":[129.455,-22.909,162.018],"2.25":[129.166,-22.983,161.906],"2.29":[128.954,-23.074,161.852],"2.33":[128.875,-23.17,161.869],"2.38":[128.943,-23.235,161.943],"2.42":[129.151,-23.257,162.044],"2.46":[129.481,-23.215,162.172],"2.5":[129.905,-23.159,162.32],"2.54":[130.384,-23.093,162.456],"2.58":[130.882,-23.011,162.598],"2.62":[131.369,-22.949,162.705],"2.67":[131.816,-22.891,162.778],"2.71":[132.225,-22.847,162.903],"2.75":[132.646,-22.783,163.06],"2.79":[133.11,-22.706,163.143],"2.83":[133.745,-22.707,162.895],"2.88":[134.742,-24.096,161.315],"2.92":[138.613,-26.228,156.933],"2.96":[135.546,-25.107,160.057],"3.0":[128.985,-19.805,168.245],"3.04":[125.189,-15.092,174.691],"3.08":[122.849,-14.141,178.057],"3.12":[120.159,-15.479,181.024],"3.17":[116.754,-17.555,184.635],"3.21":[113.206,-19.565,188.107],"3.25":[110.12,-21.222,190.626],"3.29":[108.338,-22.377,191.164],"3.33":[109.114,-22.828,187.944],"3.38":[112.29,-22.438,179.809],"3.42":[117.987,-19.811,165.739],"3.46":[124.699,-13.676,148.332],"3.5":[130.336,-3.68,130.945],"3.54":[133.16,8.145,115.955],"3.58":[133.228,19.16,104.176],"3.62":[131.721,27.039,96.522],"3.67":[129.878,32.134,92.27],"3.71":[127.383,36.828,88.166],"3.75":[124.556,40.743,84.348],"3.79":[121.866,43.652,81.141],"3.83":[120.24,45.146,79.36],"3.88":[119.807,45.512,78.905],"3.96":[119.807,45.512,78.905]},"position":{"0.0":[14.092,-27.119,-21.8],"0.04":[14.079,-27.15,-21.769],"0.08":[14.055,-27.196,-21.717],"0.12":[14.021,-27.256,-21.654],"0.17":[13.975,-27.32,-21.581],"0.21":[13.915,-27.394,-21.503],"0.25":[13.847,-27.466,-21.427],"0.29":[13.77,-27.537,-21.343],"0.33":[13.673,-27.6,-21.273],"0.38":[13.559,-27.615,-21.176],"0.42":[13.391,-27.495,-20.986],"0.46":[13.156,-27.308,-20.746],"0.5":[12.836,-27.223,-20.57],"0.54":[12.529,-27.164,-20.468],"0.58":[12.312,-27.092,-20.46],"0.62":[12.185,-27.011,-20.611],"0.67":[12.057,-26.948,-20.919],"0.71":[11.931,-26.907,-21.293],"0.75":[11.822,-26.87,-21.663],"0.79":[11.732,-26.847,-21.974],"0.83":[11.681,-26.923,-22.255],"0.88":[11.697,-27.337,-22.392],"0.92":[11.722,-27.626,-22.367],"0.96":[11.744,-27.702,-22.293],"1.0":[11.77,-27.654,-22.19],"1.04":[11.804,-27.523,-22.091],"1.08":[11.831,-27.32,-22.004],"1.12":[11.853,-27.073,-21.926],"1.17":[11.872,-26.816,-21.859],"1.21":[11.879,-26.58,-21.806],"1.25":[11.87,-26.393,-21.76],"1.29":[11.86,-26.269,-21.718],"1.33":[11.839,-26.22,-21.686],"1.38":[11.815,-26.215,-21.654],"1.42":[11.788,-26.251,-21.638],"1.46":[11.758,-26.31,-21.633],"1.5":[11.715,-26.392,-21.648],"1.54":[11.671,-26.483,-21.67],"1.58":[11.63,-26.585,-21.697],"1.62":[11.597,-26.69,-21.716],"1.67":[11.576,-26.797,-21.728],"1.71":[11.568,-26.875,-21.732],"1.75":[11.569,-26.919,-21.731],"1.79":[11.594,-26.934,-21.717],"1.83":[11.624,-26.916,-21.703],"1.88":[11.67,-26.892,-21.68],"1.92":[11.719,-26.847,-21.66],"1.96":[11.774,-26.794,-21.637],"2.0":[11.828,-26.733,-21.618],"2.04":[11.887,-26.664,-21.6],"2.08":[11.942,-26.594,-21.582],"2.12":[11.99,-26.526,-21.573],"2.17":[12.037,-26.461,-21.562],"2.21":[12.077,-26.408,-21.56],"2.25":[12.108,-26.361,-21.567],"2.29":[12.126,-26.336,-21.581],"2.33":[12.131,-26.32,-21.59],"2.38":[12.13,-26.321,-21.609],"2.42":[12.129,-26.326,-21.628],"2.46":[12.129,-26.329,-21.649],"2.5":[12.121,-26.338,-21.669],"2.54":[12.116,-26.351,-21.688],"2.58":[12.105,-26.354,-21.708],"2.62":[12.093,-26.359,-21.732],"2.67":[12.081,-26.353,-21.751],"2.71":[12.066,-26.353,-21.77],"2.75":[12.044,-26.359,-21.783],"2.79":[12.016,-26.353,-21.8],"2.83":[11.981,-26.32,-21.816],"2.88":[11.993,-26.273,-21.791],"2.92":[12.149,-26.248,-21.889],"2.96":[12.444,-26.251,-21.928],"3.0":[12.796,-26.244,-21.828],"3.04":[13.052,-26.227,-21.78],"3.08":[13.249,-26.245,-21.794],"3.12":[13.406,-26.23,-21.802],"3.17":[13.566,-26.197,-21.816],"3.21":[13.719,-26.158,-21.829],"3.25":[13.85,-26.133,-21.833],"3.29":[13.953,-26.124,-21.826],"3.33":[14.011,-26.156,-21.798],"3.38":[14.029,-26.261,-21.78],"3.42":[14.016,-26.427,-21.78],"3.46":[13.991,-26.629,-21.785],"3.5":[13.949,-26.84,-21.798],"3.54":[13.912,-27.032,-21.812],"3.58":[13.889,-27.172,-21.816],"3.62":[13.885,-27.234,-21.814],"3.67":[13.912,-27.23,-21.808],"3.71":[13.956,-27.206,-21.802],"3.75":[14.009,-27.172,-21.805],"3.79":[14.057,-27.138,-21.809],"3.83":[14.091,-27.113,-21.814],"3.88":[14.099,-27.109,-21.81],"3.96":[14.099,-27.109,-21.81]}},"righthand":{"position":[-0.5,2.2,0],"scale":[1,1.4,1]},"lefthand_pos":{"scale":{"0.0":[1,1,1],"0.52":[1,1.3,1],"3.03":[1,1.3,1],"3.65":[1,1,1]}}}},"idle":{"loop":true,"bones":{"root":{"rotation":[0,0,0],"position":[0,0,0],"scale":1}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/css.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/css.geo.json new file mode 100644 index 0000000..6854356 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/css.geo.json @@ -0,0 +1,1639 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 32, + "texture_height": 32, + "visible_bounds_width": 4, + "visible_bounds_height": 4, + "visible_bounds_offset": [0, 0, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "bone", + "parent": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "knife_and_right", + "parent": "bone", + "pivot": [6, 19, 0] + }, + { + "name": "righthand", + "parent": "knife_and_right", + "pivot": [6, 19, 0] + }, + { + "name": "righthand_pos", + "parent": "righthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [4, 8, -2], + "size": [4, 12, 4], + "uv": { + "north": {"uv": [0, 0], "uv_size": [4, 12]}, + "east": {"uv": [4, 0], "uv_size": [4, 12]}, + "south": {"uv": [8, 0], "uv_size": [4, 12]}, + "west": {"uv": [0, 12], "uv_size": [4, 12]}, + "up": {"uv": [16, 0], "uv_size": [4, 4]}, + "down": {"uv": [16, 8], "uv_size": [4, -4]} + } + } + ] + }, + { + "name": "blade", + "parent": "knife_and_right", + "pivot": [0, 9, 0.75], + "cubes": [ + { + "origin": [-0.08125, 9.30469, -5.60625], + "size": [0.1625, 0.325, 1.625], + "uv": { + "north": {"uv": [21, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [0, 14], "uv_size": [1.25, 0.25]}, + "south": {"uv": [4, 21], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 0], "uv_size": [1.25, 0.25]}, + "up": {"uv": [14, 1], "uv_size": [0.25, 1.25]}, + "down": {"uv": [2, 15.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.08818, 9.30469, -4.13812], + "size": [0.17636, 0.26953, 3.13647], + "uv": { + "north": {"uv": [11, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [10, 0], "uv_size": [2.5, 0.25]}, + "south": {"uv": [26, 11], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 10], "uv_size": [2.5, 0.25]}, + "up": {"uv": [10, 7], "uv_size": [0.25, 2.5]}, + "down": {"uv": [9, 12.5], "uv_size": [0.25, -2.5]} + } + }, + { + "origin": [-0.09512, 9.16231, -3.70661], + "size": [0.19024, 0.26954, 1.01833], + "pivot": [0.01387, 7.55761, -2.17716], + "rotation": [-78.75, 0, 0], + "uv": { + "north": {"uv": [12, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 16], "uv_size": [0.75, 0.25]}, + "south": {"uv": [26, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [17, 17], "uv_size": [0.75, 0.25]}, + "up": {"uv": [0, 18], "uv_size": [0.25, 0.75]}, + "down": {"uv": [18, 0.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.09512, 8.86207, -1.83531], + "size": [0.19024, 0.26953, 0.39434], + "pivot": [0.01387, 7.25738, -0.30586], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [13, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 13], "uv_size": [0.25, 0.25]}, + "south": {"uv": [14, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 14], "uv_size": [0.25, 0.25]}, + "up": {"uv": [15, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 15.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 9.30469, -4.0625], + "size": [0.1625, 0.325, 1.4625], + "pivot": [0, 9.62969, -4.0625], + "rotation": [7, 0, 0], + "uv": { + "north": {"uv": [18, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 14], "uv_size": [1.25, 0.25]}, + "south": {"uv": [22, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 9], "uv_size": [1.25, 0.25]}, + "up": {"uv": [14, 10], "uv_size": [0.25, 1.25]}, + "down": {"uv": [14, 13.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.08125, 9.48292, -2.61091], + "size": [0.1625, 0.325, 2.6], + "pivot": [0, 9.80792, -2.61091], + "rotation": [-2.25, 0, 0], + "uv": { + "north": {"uv": [19, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 11], "uv_size": [2, 0.25]}, + "south": {"uv": [22, 19], "uv_size": [0.25, 0.25]}, + "west": {"uv": [11, 8], "uv_size": [2, 0.25]}, + "up": {"uv": [10, 11], "uv_size": [0.25, 2]}, + "down": {"uv": [11, 13], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.08125, 9.30469, -7.15], + "size": [0.1625, 0.325, 1.54375], + "pivot": [0, 9.62969, -5.60625], + "rotation": [2.75, 0, 0], + "uv": { + "north": {"uv": [21, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [3, 14], "uv_size": [1.25, 0.25]}, + "south": {"uv": [5, 21], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 3], "uv_size": [1.25, 0.25]}, + "up": {"uv": [14, 4], "uv_size": [0.25, 1.25]}, + "down": {"uv": [5, 15.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.08125, 9.23062, -8.85447], + "size": [0.1625, 0.325, 1.70625], + "pivot": [0, 9.55562, -7.14822], + "rotation": [4.75, 0, 0], + "uv": { + "north": {"uv": [21, 5], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 14], "uv_size": [1.25, 0.25]}, + "south": {"uv": [6, 21], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 6], "uv_size": [1.25, 0.25]}, + "up": {"uv": [14, 7], "uv_size": [0.25, 1.25]}, + "down": {"uv": [8, 15.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.08125, 9.08934, -9.33611], + "size": [0.1625, 0.325, 0.4875], + "pivot": [0, 9.41434, -8.84861], + "rotation": [8, 0, 0], + "uv": { + "north": {"uv": [21, 6], "uv_size": [0.25, 0.25]}, + "east": {"uv": [1, 18], "uv_size": [0.5, 0.25]}, + "south": {"uv": [7, 21], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 1], "uv_size": [0.5, 0.25]}, + "up": {"uv": [2, 18], "uv_size": [0.25, 0.5]}, + "down": {"uv": [18, 2.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.08125, 9.18399, -10.04231], + "size": [0.1625, 0.1625, 0.71094], + "pivot": [0, 9.34649, -9.33137], + "rotation": [16, 0, 0], + "uv": { + "north": {"uv": [21, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [3, 18], "uv_size": [0.5, 0.25]}, + "south": {"uv": [8, 21], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 3], "uv_size": [0.5, 0.25]}, + "up": {"uv": [4, 18], "uv_size": [0.25, 0.5]}, + "down": {"uv": [18, 4.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0, 9.62969, -5.60625], + "size": [0, 0.1625, 2.925], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [10, 10], "uv_size": [2.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [11, 1], "uv_size": [2.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 2.25]}, + "down": {"uv": [0, 2.25], "uv_size": [0, -2.25]} + } + }, + { + "origin": [0, 9.60938, -5.60625], + "size": [0, 0.18281, 2.925], + "pivot": [0, 9.79219, -4.14375], + "rotation": [0, 0, -26.25], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [11, 2], "uv_size": [2.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [11, 3], "uv_size": [2.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 2.25]}, + "down": {"uv": [0, 2.25], "uv_size": [0, -2.25]} + } + }, + { + "origin": [0, 9.62969, -7.17031], + "size": [0, 0.1625, 1.58438], + "pivot": [0.08125, 9.62969, -5.60625], + "rotation": [2.75, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [13, 14], "uv_size": [1.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [0, 15], "uv_size": [1.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 1.25]}, + "down": {"uv": [0, 1.25], "uv_size": [0, -1.25]} + } + }, + { + "origin": [0, 9.57216, -7.17722], + "size": [0, 0.1828, 1.58437], + "pivot": [0, 9.75496, -6.38503], + "rotation": [2.46145, 1.22667, -26.47365], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [15, 1], "uv_size": [1.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [15, 2], "uv_size": [1.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 1.25]}, + "down": {"uv": [0, 1.25], "uv_size": [0, -1.25]} + } + }, + { + "origin": [0, 9.55562, -8.20447], + "size": [0, 0.1625, 1.05625], + "pivot": [0.08125, 9.55562, -7.14822], + "rotation": [4.75, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [17, 13], "uv_size": [0.75, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [14, 17], "uv_size": [0.75, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "down": {"uv": [0, 0.75], "uv_size": [0, -0.75]} + } + }, + { + "origin": [0, 9.49102, -8.21612], + "size": [0, 0.18281, 1.05625], + "pivot": [0, 9.67383, -7.68799], + "rotation": [4.27115, 2.08034, -25.92242], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [17, 14], "uv_size": [0.75, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [15, 17], "uv_size": [0.75, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "down": {"uv": [0, 0.75], "uv_size": [0, -0.75]} + } + }, + { + "origin": [0, 9.3051, -9.3518], + "size": [0, 0.325, 1.1375], + "pivot": [0, 9.6301, -8.2143], + "rotation": [10.25, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [9, 16], "uv_size": [1, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [16, 9], "uv_size": [1, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 1]}, + "down": {"uv": [0, 1], "uv_size": [0, -1]} + } + }, + { + "origin": [0, 9.34607, -9.34272], + "size": [0, 0.18282, 1.1375], + "pivot": [0, 9.52889, -8.77397], + "rotation": [9.23147, 4.47392, -25.63862], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [10, 16], "uv_size": [1, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [16, 10], "uv_size": [1, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 1]}, + "down": {"uv": [0, 1], "uv_size": [0, -1]} + } + }, + { + "origin": [0, 9.26519, -10.11698], + "size": [0, 0.16239, 0.78333], + "pivot": [0, 9.42769, -9.33365], + "rotation": [19, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [20, 20], "uv_size": [0.5, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [0, 21], "uv_size": [0.5, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0, 9.19851, -10.09561], + "size": [0, 0.10157, 0.78333], + "pivot": [0, 9.30008, -9.70394], + "rotation": [17.33141, 7.90847, -23.7928], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [21, 0], "uv_size": [0.5, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [1, 21], "uv_size": [0.5, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0, 9.19851, -10.09561], + "size": [0, 0.10157, 0.78333], + "pivot": [0, 9.30008, -9.70394], + "rotation": [17.33141, -7.90847, 23.7928], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [21, 1], "uv_size": [0.5, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [2, 21], "uv_size": [0.5, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0, 9.34607, -9.34272], + "size": [0, 0.18282, 1.1375], + "pivot": [0, 9.52889, -8.77397], + "rotation": [9.23147, -4.47392, 25.63862], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [11, 16], "uv_size": [1, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [16, 11], "uv_size": [1, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 1]}, + "down": {"uv": [0, 1], "uv_size": [0, -1]} + } + }, + { + "origin": [0, 9.49102, -8.21612], + "size": [0, 0.18281, 1.05625], + "pivot": [0, 9.67383, -7.68799], + "rotation": [4.27115, -2.08034, 25.92242], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [17, 15], "uv_size": [0.75, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [16, 17], "uv_size": [0.75, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "down": {"uv": [0, 0.75], "uv_size": [0, -0.75]} + } + }, + { + "origin": [0, 9.57216, -7.17722], + "size": [0, 0.1828, 1.58437], + "pivot": [0, 9.75496, -6.38503], + "rotation": [2.46145, -1.22667, 26.47365], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [3, 15], "uv_size": [1.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [15, 4], "uv_size": [1.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 1.25]}, + "down": {"uv": [0, 1.25], "uv_size": [0, -1.25]} + } + }, + { + "origin": [0, 9.60938, -5.60625], + "size": [0, 0.18281, 2.925], + "pivot": [0, 9.79219, -4.14375], + "rotation": [0, 0, 26.25], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [4, 11], "uv_size": [2.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [11, 7], "uv_size": [2.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 2.25]}, + "down": {"uv": [0, 2.25], "uv_size": [0, -2.25]} + } + }, + { + "origin": [-0.08125, 9.02149, -9.79855], + "size": [0.1625, 0.1625, 0.46718], + "pivot": [0, 9.34649, -9.33137], + "rotation": [16, 0, 0], + "uv": { + "north": {"uv": [23, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [1, 23], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 1], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 2], "uv_size": [0.25, 0.25]}, + "down": {"uv": [3, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 9.32505, -10.14386], + "size": [0.1625, 0.02032, 0.10155], + "pivot": [0, 9.34649, -9.33137], + "rotation": [16, 0, 0], + "uv": { + "north": {"uv": [21, 14], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 21], "uv_size": [0.25, 0.25]}, + "south": {"uv": [21, 15], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 16], "uv_size": [0.25, 0.25]}, + "down": {"uv": [17, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 8.99432, -9.96997], + "size": [0.1625, 0.12892, 0.09891], + "pivot": [0, 8.99432, -9.96997], + "rotation": [53.5, 0, 0], + "uv": { + "north": {"uv": [21, 8], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 21], "uv_size": [0.25, 0.25]}, + "south": {"uv": [21, 9], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 10], "uv_size": [0.25, 0.25]}, + "down": {"uv": [11, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 8.73025, -9.96997], + "size": [0.1625, 0.26407, 0.22343], + "pivot": [0, 8.99432, -9.96997], + "rotation": [56, 0, 0], + "uv": { + "north": {"uv": [5, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 5], "uv_size": [0.25, 0.25]}, + "south": {"uv": [6, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 6], "uv_size": [0.25, 0.25]}, + "up": {"uv": [7, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 7.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 8.03415, -9.75105], + "size": [0.1625, 0.8125, 0.325], + "pivot": [0, 8.84665, -9.75105], + "rotation": [65.5, 0, 0], + "uv": { + "north": {"uv": [12, 16], "uv_size": [0.25, 0.75]}, + "east": {"uv": [16, 12], "uv_size": [0.25, 0.75]}, + "south": {"uv": [13, 16], "uv_size": [0.25, 0.75]}, + "west": {"uv": [16, 13], "uv_size": [0.25, 0.75]}, + "up": {"uv": [8, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 8.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 7.85972, -9.01172], + "size": [0.1625, 0.65, 0.325], + "pivot": [0, 8.50972, -9.01172], + "rotation": [74, 0, 0], + "uv": { + "north": {"uv": [5, 18], "uv_size": [0.25, 0.5]}, + "east": {"uv": [18, 5], "uv_size": [0.25, 0.5]}, + "south": {"uv": [6, 18], "uv_size": [0.25, 0.5]}, + "west": {"uv": [18, 6], "uv_size": [0.25, 0.5]}, + "up": {"uv": [9, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 9.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 7.68055, -8.3869], + "size": [0.1625, 0.65, 0.325], + "pivot": [0, 8.33055, -8.3869], + "rotation": [80.25, 0, 0], + "uv": { + "north": {"uv": [7, 18], "uv_size": [0.25, 0.5]}, + "east": {"uv": [18, 7], "uv_size": [0.25, 0.5]}, + "south": {"uv": [8, 18], "uv_size": [0.25, 0.5]}, + "west": {"uv": [18, 8], "uv_size": [0.25, 0.5]}, + "up": {"uv": [10, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 10.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 7.57048, -7.74628], + "size": [0.1625, 0.65, 0.325], + "pivot": [0, 8.22048, -7.74628], + "rotation": [85.25, 0, 0], + "uv": { + "north": {"uv": [9, 18], "uv_size": [0.25, 0.5]}, + "east": {"uv": [18, 9], "uv_size": [0.25, 0.5]}, + "south": {"uv": [10, 18], "uv_size": [0.25, 0.5]}, + "west": {"uv": [18, 10], "uv_size": [0.25, 0.5]}, + "up": {"uv": [11, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 11.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 7.4354, -7.09851], + "size": [0.1625, 0.73125, 0.325], + "pivot": [0, 8.16665, -7.09851], + "rotation": [90.25, 0, 0], + "uv": { + "north": {"uv": [11, 18], "uv_size": [0.25, 0.5]}, + "east": {"uv": [18, 11], "uv_size": [0.25, 0.5]}, + "south": {"uv": [12, 18], "uv_size": [0.25, 0.5]}, + "west": {"uv": [18, 12], "uv_size": [0.25, 0.5]}, + "up": {"uv": [12, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 12.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 6.21985, -6.36727], + "size": [0.1625, 1.95, 0.325], + "pivot": [0, 8.16985, -6.36727], + "rotation": [93, 0, 0], + "uv": { + "north": {"uv": [5, 12], "uv_size": [0.25, 1.5]}, + "east": {"uv": [6, 12], "uv_size": [0.25, 1.5]}, + "south": {"uv": [7, 12], "uv_size": [0.25, 1.5]}, + "west": {"uv": [8, 12], "uv_size": [0.25, 1.5]}, + "up": {"uv": [13, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 13.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 7.2969, -4.41995], + "size": [0.1625, 1.05625, 0.325], + "pivot": [0, 8.2719, -4.41995], + "rotation": [90.5, 0, 0], + "uv": { + "north": {"uv": [14, 16], "uv_size": [0.25, 0.75]}, + "east": {"uv": [16, 14], "uv_size": [0.25, 0.75]}, + "south": {"uv": [15, 16], "uv_size": [0.25, 0.75]}, + "west": {"uv": [16, 15], "uv_size": [0.25, 0.75]}, + "up": {"uv": [14, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 14.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 7.4679, -3.44497], + "size": [0.1625, 0.89375, 0.325], + "pivot": [0, 8.2804, -3.44497], + "rotation": [85.75, 0, 0], + "uv": { + "north": {"uv": [16, 16], "uv_size": [0.25, 0.75]}, + "east": {"uv": [0, 17], "uv_size": [0.25, 0.75]}, + "south": {"uv": [17, 0], "uv_size": [0.25, 0.75]}, + "west": {"uv": [1, 17], "uv_size": [0.25, 0.75]}, + "up": {"uv": [15, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 15.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 7.5702, -2.63471], + "size": [0.1625, 0.73125, 0.325], + "pivot": [0, 8.2202, -2.63471], + "rotation": [77.25, 0, 0], + "uv": { + "north": {"uv": [13, 18], "uv_size": [0.25, 0.5]}, + "east": {"uv": [18, 13], "uv_size": [0.25, 0.5]}, + "south": {"uv": [14, 18], "uv_size": [0.25, 0.5]}, + "west": {"uv": [18, 14], "uv_size": [0.25, 0.5]}, + "up": {"uv": [16, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 16.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 7.58924, -2.00074], + "size": [0.1625, 0.56875, 0.325], + "pivot": [0, 8.07674, -2.00074], + "rotation": [71.25, 0, 0], + "uv": { + "north": {"uv": [15, 18], "uv_size": [0.25, 0.5]}, + "east": {"uv": [18, 15], "uv_size": [0.25, 0.5]}, + "south": {"uv": [16, 18], "uv_size": [0.25, 0.5]}, + "west": {"uv": [18, 16], "uv_size": [0.25, 0.5]}, + "up": {"uv": [17, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 17.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 9.12324, -9.96997], + "size": [0.1625, 0.06093, 0.01766], + "pivot": [0, 8.99432, -9.96997], + "rotation": [53.5, 0, 0], + "uv": { + "north": {"uv": [21, 11], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 21], "uv_size": [0.25, 0.25]}, + "south": {"uv": [21, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [13, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 13], "uv_size": [0.25, 0.25]}, + "down": {"uv": [14, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 9.12324, -9.95231], + "size": [0.1625, 0.04063, 0.02032], + "pivot": [0, 8.99432, -9.96997], + "rotation": [53.5, 0, 0], + "uv": { + "north": {"uv": [21, 17], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 21], "uv_size": [0.25, 0.25]}, + "south": {"uv": [21, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [19, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 19], "uv_size": [0.25, 0.25]}, + "down": {"uv": [20, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 9.12324, -9.93199], + "size": [0.1625, 0.02031, 0.02031], + "pivot": [0, 8.99432, -9.96997], + "rotation": [53.5, 0, 0], + "uv": { + "north": {"uv": [21, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 21], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 0], "uv_size": [0.25, 0.25]}, + "up": {"uv": [1, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 1.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 9.12324, -9.91168], + "size": [0.1625, 0.02031, 0.02032], + "pivot": [0, 8.99432, -9.96997], + "rotation": [53.5, 0, 0], + "uv": { + "north": {"uv": [2, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 2], "uv_size": [0.25, 0.25]}, + "south": {"uv": [3, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 3], "uv_size": [0.25, 0.25]}, + "up": {"uv": [4, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 4.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08125, 8.43125, -0.92561], + "size": [0.1625, 0.325, 0.79497], + "pivot": [-0.4875, 7.61875, -0.46718], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [22, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 0], "uv_size": [0.5, 0.25]}, + "south": {"uv": [0, 23], "uv_size": [0.25, 0.25]}, + "west": {"uv": [1, 19], "uv_size": [0.5, 0.25]}, + "up": {"uv": [19, 1], "uv_size": [0.25, 0.5]}, + "down": {"uv": [2, 19.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.08125, 7.48533, -1.60468], + "size": [0.1625, 0.61216, 0.325], + "pivot": [-0.4875, 7.61875, -0.46718], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [17, 18], "uv_size": [0.25, 0.5]}, + "east": {"uv": [18, 17], "uv_size": [0.25, 0.5]}, + "south": {"uv": [18, 18], "uv_size": [0.25, 0.5]}, + "west": {"uv": [0, 19], "uv_size": [0.25, 0.5]}, + "up": {"uv": [21, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.03366, 8.9682, -10.1367], + "size": [0.11491, 0.18985, 0.11491], + "pivot": [0.08125, 9.03266, -10.02179], + "rotation": [62.38002, 24.87268, 38.7943], + "uv": { + "north": {"uv": [8, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 8], "uv_size": [0.25, 0.25]}, + "south": {"uv": [9, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 9], "uv_size": [0.25, 0.25]}, + "up": {"uv": [10, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 10.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.03366, 8.77505, -9.97537], + "size": [0.11486, 0.28101, 0.11486], + "pivot": [0.08125, 8.92049, -9.86051], + "rotation": [64.50121, 23.29149, 39.66001], + "uv": { + "north": {"uv": [5, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 5], "uv_size": [0.25, 0.25]}, + "south": {"uv": [6, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 6], "uv_size": [0.25, 0.25]}, + "up": {"uv": [7, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 7.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.03366, 8.27193, -9.49629], + "size": [0.11491, 0.8125, 0.11491], + "pivot": [0.08125, 8.67818, -9.38138], + "rotation": [72.13861, 17.05157, 42.30098], + "uv": { + "north": {"uv": [17, 11], "uv_size": [0.25, 0.75]}, + "east": {"uv": [12, 17], "uv_size": [0.25, 0.75]}, + "south": {"uv": [17, 12], "uv_size": [0.25, 0.75]}, + "west": {"uv": [13, 17], "uv_size": [0.25, 0.75]}, + "up": {"uv": [4, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 4.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.08061, 8.09513, -8.81357], + "size": [0.00064, 0.66202, 0.11427], + "pivot": [0.08125, 8.42014, -8.6993], + "rotation": [78.53812, 11.23918, 43.86846], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [19, 20], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [20, 19], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.08125, 8.09513, -8.81357], + "size": [0.00064, 0.66202, 0.11427], + "pivot": [-0.08125, 8.42014, -8.6993], + "rotation": [78.53812, -11.23918, -43.86846], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [21, 2], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [3, 21], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.03366, 7.94344, -8.18115], + "size": [0.11457, 0.66592, 0.11456], + "pivot": [0.08125, 8.27551, -8.06659], + "rotation": [83.07234, 6.87757, 44.58321], + "uv": { + "north": {"uv": [17, 20], "uv_size": [0.25, 0.5]}, + "east": {"uv": [20, 17], "uv_size": [0.25, 0.5]}, + "south": {"uv": [18, 20], "uv_size": [0.25, 0.5]}, + "west": {"uv": [20, 18], "uv_size": [0.25, 0.5]}, + "up": {"uv": [3, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 3.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.03366, 7.86856, -7.5373], + "size": [0.11491, 0.65, 0.1149], + "pivot": [0.08125, 8.19356, -7.4224], + "rotation": [86.63739, 3.35683, 44.90144], + "uv": { + "north": {"uv": [15, 20], "uv_size": [0.25, 0.5]}, + "east": {"uv": [20, 15], "uv_size": [0.25, 0.5]}, + "south": {"uv": [16, 20], "uv_size": [0.25, 0.5]}, + "west": {"uv": [20, 16], "uv_size": [0.25, 0.5]}, + "up": {"uv": [2, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 2.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.03366, 7.80262, -6.84758], + "size": [0.11469, 0.73834, 0.11469], + "pivot": [0.08125, 8.16825, -6.73289], + "rotation": [90.17678, -0.17678, 44.99973], + "uv": { + "north": {"uv": [13, 20], "uv_size": [0.25, 0.5]}, + "east": {"uv": [20, 13], "uv_size": [0.25, 0.5]}, + "south": {"uv": [14, 20], "uv_size": [0.25, 0.5]}, + "west": {"uv": [20, 14], "uv_size": [0.25, 0.5]}, + "up": {"uv": [1, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 1.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.03366, 7.24587, -5.50845], + "size": [0.11485, 1.9539, 0.11484], + "pivot": [0.08125, 8.22087, -5.39361], + "rotation": [92.12229, -2.12084, 44.96071], + "uv": { + "north": {"uv": [13, 10], "uv_size": [0.25, 1.5]}, + "east": {"uv": [11, 13], "uv_size": [0.25, 1.5]}, + "south": {"uv": [12, 13], "uv_size": [0.25, 1.5]}, + "west": {"uv": [13, 12], "uv_size": [0.25, 1.5]}, + "up": {"uv": [0, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 0.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.03366, 7.74767, -4.08799], + "size": [0.11491, 1.05625, 0.1149], + "pivot": [0.08125, 8.2758, -3.97309], + "rotation": [90.35356, -0.35355, 44.99891], + "uv": { + "north": {"uv": [17, 9], "uv_size": [0.25, 0.75]}, + "east": {"uv": [10, 17], "uv_size": [0.25, 0.75]}, + "south": {"uv": [17, 10], "uv_size": [0.25, 0.75]}, + "west": {"uv": [11, 17], "uv_size": [0.25, 0.75]}, + "up": {"uv": [25, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [25, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.03366, 7.80643, -3.19527], + "size": [0.11491, 0.89375, 0.11491], + "pivot": [0.08125, 8.25331, -3.08036], + "rotation": [86.99204, 3.00382, 44.92112], + "uv": { + "north": {"uv": [17, 7], "uv_size": [0.25, 0.75]}, + "east": {"uv": [8, 17], "uv_size": [0.25, 0.75]}, + "south": {"uv": [17, 8], "uv_size": [0.25, 0.75]}, + "west": {"uv": [9, 17], "uv_size": [0.25, 0.75]}, + "up": {"uv": [25, 23], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.03366, 7.79181, -2.47226], + "size": [0.11491, 0.73125, 0.11491], + "pivot": [0.08125, 8.15743, -2.35735], + "rotation": [80.90962, 8.97808, 44.28483], + "uv": { + "north": {"uv": [11, 20], "uv_size": [0.25, 0.5]}, + "east": {"uv": [20, 11], "uv_size": [0.25, 0.5]}, + "south": {"uv": [12, 20], "uv_size": [0.25, 0.5]}, + "west": {"uv": [20, 12], "uv_size": [0.25, 0.5]}, + "up": {"uv": [25, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [23, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.03366, 7.72707, -1.9233], + "size": [0.11491, 0.56875, 0.11491], + "pivot": [0.08125, 8.01144, -1.80839], + "rotation": [76.50262, 13.13769, 43.43861], + "uv": { + "north": {"uv": [9, 20], "uv_size": [0.25, 0.5]}, + "east": {"uv": [20, 9], "uv_size": [0.25, 0.5]}, + "south": {"uv": [10, 20], "uv_size": [0.25, 0.5]}, + "west": {"uv": [20, 10], "uv_size": [0.25, 0.5]}, + "up": {"uv": [25, 21], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.03366, 7.75369, -1.58153], + "size": [0.11491, 0.11491, 0.325], + "pivot": [0.08125, 7.8686, -1.41903], + "rotation": [-16.32495, 15.69986, 42.73421], + "uv": { + "north": {"uv": [25, 18], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 19], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 20], "uv_size": [0.25, 0.25]}, + "down": {"uv": [21, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08818, 7.16033, -1.60468], + "size": [0.17636, 0.93716, 0.325], + "pivot": [-0.48057, 7.61875, -0.46718], + "rotation": [-67.5, 0, 0], + "uv": { + "north": {"uv": [17, 1], "uv_size": [0.25, 0.75]}, + "east": {"uv": [2, 17], "uv_size": [0.25, 0.75]}, + "south": {"uv": [17, 2], "uv_size": [0.25, 0.75]}, + "west": {"uv": [3, 17], "uv_size": [0.25, 0.75]}, + "up": {"uv": [20, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 20.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08095, 8.75655, -9.4247], + "size": [0.1619, 0.40565, 0.6494], + "inflate": -0.001, + "uv": { + "north": {"uv": [23, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 3], "uv_size": [0.5, 0.25]}, + "south": {"uv": [4, 23], "uv_size": [0.25, 0.25]}, + "west": {"uv": [4, 19], "uv_size": [0.5, 0.25]}, + "up": {"uv": [19, 4], "uv_size": [0.25, 0.5]}, + "down": {"uv": [5, 19.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.08095, 8.5128, -8.7747], + "size": [0.1619, 0.73065, 0.9744], + "inflate": -0.001, + "uv": { + "north": {"uv": [19, 2], "uv_size": [0.25, 0.5]}, + "east": {"uv": [12, 6], "uv_size": [0.75, 0.5]}, + "south": {"uv": [3, 19], "uv_size": [0.25, 0.5]}, + "west": {"uv": [12, 9], "uv_size": [0.75, 0.5]}, + "up": {"uv": [17, 3], "uv_size": [0.25, 0.75]}, + "down": {"uv": [4, 17.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.08095, 8.5128, -1.21845], + "size": [0.1619, 0.9744, 1.21815], + "inflate": -0.001, + "uv": { + "north": {"uv": [17, 4], "uv_size": [0.25, 0.75]}, + "east": {"uv": [6, 2], "uv_size": [1, 0.75]}, + "south": {"uv": [5, 17], "uv_size": [0.25, 0.75]}, + "west": {"uv": [6, 3], "uv_size": [1, 0.75]}, + "up": {"uv": [12, 15], "uv_size": [0.25, 1]}, + "down": {"uv": [15, 13], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.08095, 8.10655, -1.6247], + "size": [0.1619, 1.38065, 0.40565], + "inflate": -0.001, + "uv": { + "north": {"uv": [10, 15], "uv_size": [0.25, 1]}, + "east": {"uv": [15, 10], "uv_size": [0.25, 1]}, + "south": {"uv": [11, 15], "uv_size": [0.25, 1]}, + "west": {"uv": [15, 11], "uv_size": [0.25, 1]}, + "up": {"uv": [23, 4], "uv_size": [0.25, 0.25]}, + "down": {"uv": [5, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08095, 8.26905, -2.7622], + "size": [0.1619, 1.21815, 1.1369], + "inflate": -0.001, + "uv": { + "north": {"uv": [7, 15], "uv_size": [0.25, 1]}, + "east": {"uv": [4, 0], "uv_size": [1, 1]}, + "south": {"uv": [15, 7], "uv_size": [0.25, 1]}, + "west": {"uv": [4, 1], "uv_size": [1, 1]}, + "up": {"uv": [15, 8], "uv_size": [0.25, 1]}, + "down": {"uv": [9, 16], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.08095, 8.3503, -7.7997], + "size": [0.1619, 1.1369, 5.0369], + "inflate": -0.001, + "uv": { + "north": {"uv": [15, 5], "uv_size": [0.25, 1]}, + "east": {"uv": [0, 0], "uv_size": [4, 1]}, + "south": {"uv": [6, 15], "uv_size": [0.25, 1]}, + "west": {"uv": [0, 1], "uv_size": [4, 1]}, + "up": {"uv": [4, 4], "uv_size": [0.25, 4]}, + "down": {"uv": [5, 8], "uv_size": [0.25, -4]} + } + } + ] + }, + { + "name": "body", + "parent": "blade", + "pivot": [-0.1625, 9.68491, 3.06138], + "cubes": [ + { + "origin": [-0.33193, 7.94375, -0.40625], + "size": [0.66386, 2.19375, 0.24375], + "pivot": [0.00693, 10.1375, -0.40625], + "rotation": [14.75, 0, 0], + "uv": { + "north": {"uv": [5, 0], "uv_size": [0.5, 1.75]}, + "east": {"uv": [4, 12], "uv_size": [0.25, 1.75]}, + "south": {"uv": [6, 0], "uv_size": [0.5, 1.75]}, + "west": {"uv": [12, 4], "uv_size": [0.25, 1.75]}, + "up": {"uv": [19, 5], "uv_size": [0.5, 0.25]}, + "down": {"uv": [6, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.1625, 10.1375, -0.40625], + "size": [0.325, 0.1625, 0.24375], + "pivot": [0, 10.1375, -0.40625], + "rotation": [14.75, 0, 0], + "uv": { + "north": {"uv": [23, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 23], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 21], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [23, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1625, 10.16317, -0.45163], + "size": [0.22981, 0.16251, 0.24375], + "pivot": [0.1625, 10.32568, -0.32976], + "rotation": [10.54578, -10.37155, 44.04021], + "uv": { + "north": {"uv": [0, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 0], "uv_size": [0.25, 0.25]}, + "south": {"uv": [1, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 1], "uv_size": [0.25, 0.25]}, + "up": {"uv": [2, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 2.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.39231, 10.16317, -0.45163], + "size": [0.22981, 0.16251, 0.24375], + "pivot": [-0.1625, 10.32568, -0.32976], + "rotation": [10.54578, 10.37155, -44.04021], + "uv": { + "north": {"uv": [3, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 3], "uv_size": [0.25, 0.25]}, + "south": {"uv": [4, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 4], "uv_size": [0.25, 0.25]}, + "up": {"uv": [5, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 5.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.33193, 8.35, -0.1625], + "size": [0.66386, 1.05625, 0.65], + "pivot": [0.00693, 10.1375, -0.40625], + "rotation": [14.75, 0, 0], + "uv": { + "north": {"uv": [12, 11], "uv_size": [0.5, 0.75]}, + "east": {"uv": [12, 12], "uv_size": [0.5, 0.75]}, + "south": {"uv": [0, 13], "uv_size": [0.5, 0.75]}, + "west": {"uv": [13, 0], "uv_size": [0.5, 0.75]}, + "up": {"uv": [13, 15], "uv_size": [0.5, 0.5]}, + "down": {"uv": [15, 13.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.325, 8.57439, 0.27118], + "size": [0.65, 0.24375, 0.40625], + "pivot": [0, 8.57439, 0.67743], + "rotation": [44.75, 0, 0], + "uv": { + "north": {"uv": [19, 14], "uv_size": [0.5, 0.25]}, + "east": {"uv": [23, 9], "uv_size": [0.25, 0.25]}, + "south": {"uv": [15, 19], "uv_size": [0.5, 0.25]}, + "west": {"uv": [10, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 15], "uv_size": [0.5, 0.25]}, + "down": {"uv": [16, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.325, 8.34559, 0.12162], + "size": [0.65, 0.24375, 0.42656], + "pivot": [0, 8.34559, 0.44662], + "rotation": [84.75, 0, 0], + "uv": { + "north": {"uv": [19, 16], "uv_size": [0.5, 0.25]}, + "east": {"uv": [23, 10], "uv_size": [0.25, 0.25]}, + "south": {"uv": [17, 19], "uv_size": [0.5, 0.25]}, + "west": {"uv": [11, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 17], "uv_size": [0.5, 0.25]}, + "down": {"uv": [18, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.325, 9.41415, 0.19735], + "size": [0.65, 0.24375, 0.44688], + "pivot": [0, 9.6579, 0.64423], + "rotation": [-0.25, 0, 0], + "uv": { + "north": {"uv": [19, 8], "uv_size": [0.5, 0.25]}, + "east": {"uv": [23, 6], "uv_size": [0.25, 0.25]}, + "south": {"uv": [9, 19], "uv_size": [0.5, 0.25]}, + "west": {"uv": [7, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 9], "uv_size": [0.5, 0.25]}, + "down": {"uv": [10, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.31807, 9.41592, 0.07548], + "size": [0.63614, 0.24375, 0.24375], + "pivot": [-0.00693, 9.65967, 0.23798], + "rotation": [-27.75, 0, 0], + "uv": { + "north": {"uv": [19, 10], "uv_size": [0.5, 0.25]}, + "east": {"uv": [23, 7], "uv_size": [0.25, 0.25]}, + "south": {"uv": [11, 19], "uv_size": [0.5, 0.25]}, + "west": {"uv": [8, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 11], "uv_size": [0.5, 0.25]}, + "down": {"uv": [12, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.325, 9.49158, -0.23083], + "size": [0.65, 0.24375, 0.40625], + "pivot": [0, 9.73533, 0.09417], + "rotation": [-45.25, 0, 0], + "uv": { + "north": {"uv": [19, 12], "uv_size": [0.5, 0.25]}, + "east": {"uv": [23, 8], "uv_size": [0.25, 0.25]}, + "south": {"uv": [13, 19], "uv_size": [0.5, 0.25]}, + "west": {"uv": [9, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 13], "uv_size": [0.5, 0.25]}, + "down": {"uv": [14, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.325, 7.77229, 0.15228], + "size": [0.65, 0.24375, 0.24375], + "pivot": [0, 8.01604, 0.15228], + "rotation": [22.25, 0, 0], + "uv": { + "north": {"uv": [19, 6], "uv_size": [0.5, 0.25]}, + "east": {"uv": [23, 5], "uv_size": [0.25, 0.25]}, + "south": {"uv": [7, 19], "uv_size": [0.5, 0.25]}, + "west": {"uv": [6, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 7], "uv_size": [0.5, 0.25]}, + "down": {"uv": [8, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.1625, 7.60979, 0.15228], + "size": [0.325, 0.1625, 0.24375], + "pivot": [0, 8.01604, 0.15228], + "rotation": [22.25, 0, 0], + "uv": { + "north": {"uv": [23, 11], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 23], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [13, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 13], "uv_size": [0.25, 0.25]}, + "down": {"uv": [14, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1625, 7.68619, 0.29704], + "size": [0.22981, 0.1625, 0.24375], + "pivot": [0.1625, 7.68619, 0.41891], + "rotation": [16.13436, 15.53013, -42.78551], + "uv": { + "north": {"uv": [23, 14], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 23], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 15], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 16], "uv_size": [0.25, 0.25]}, + "down": {"uv": [17, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.39231, 7.68619, 0.29704], + "size": [0.22981, 0.1625, 0.24375], + "pivot": [-0.1625, 7.68619, 0.41891], + "rotation": [16.13436, -15.53013, 42.78551], + "uv": { + "north": {"uv": [23, 17], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 23], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [19, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 19], "uv_size": [0.25, 0.25]}, + "down": {"uv": [20, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.28438, 8.675, 0.65], + "size": [0.56875, 0.89375, 0.65], + "uv": { + "north": {"uv": [1, 13], "uv_size": [0.5, 0.75]}, + "east": {"uv": [2, 13], "uv_size": [0.5, 0.75]}, + "south": {"uv": [3, 13], "uv_size": [0.5, 0.75]}, + "west": {"uv": [13, 4], "uv_size": [0.5, 0.75]}, + "up": {"uv": [14, 15], "uv_size": [0.5, 0.5]}, + "down": {"uv": [15, 14.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.33193, 8.61407, 0.99532], + "size": [0.66386, 0.99531, 0.34531], + "pivot": [0.00693, 8.61407, 0.99532], + "rotation": [-3.25, 0, 0], + "uv": { + "north": {"uv": [13, 5], "uv_size": [0.5, 0.75]}, + "east": {"uv": [17, 5], "uv_size": [0.25, 0.75]}, + "south": {"uv": [13, 6], "uv_size": [0.5, 0.75]}, + "west": {"uv": [6, 17], "uv_size": [0.25, 0.75]}, + "up": {"uv": [19, 18], "uv_size": [0.5, 0.25]}, + "down": {"uv": [19, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.325, 9.5427, 0.74649], + "size": [0.65, 0.06668, 0.24883], + "pivot": [0, 8.61407, 0.99532], + "rotation": [-3.25, 0, 0], + "uv": { + "north": {"uv": [1, 20], "uv_size": [0.5, 0.25]}, + "east": {"uv": [6, 24], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 1], "uv_size": [0.5, 0.25]}, + "west": {"uv": [24, 6], "uv_size": [0.25, 0.25]}, + "up": {"uv": [2, 20], "uv_size": [0.5, 0.25]}, + "down": {"uv": [20, 2.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.31807, 8.61407, 0.99532], + "size": [0.63614, 0.96139, 0.25759], + "pivot": [-0.00693, 8.61407, 0.99532], + "rotation": [11.75, 0, 0], + "uv": { + "north": {"uv": [13, 8], "uv_size": [0.5, 0.75]}, + "east": {"uv": [17, 6], "uv_size": [0.25, 0.75]}, + "south": {"uv": [9, 13], "uv_size": [0.5, 0.75]}, + "west": {"uv": [7, 17], "uv_size": [0.25, 0.75]}, + "up": {"uv": [0, 20], "uv_size": [0.5, 0.25]}, + "down": {"uv": [20, 0.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.325, 8.59564, 1.25886], + "size": [0.65, 0.99531, 3.55468], + "pivot": [0, 8.59564, 1.31979], + "rotation": [-7.25, 0, 0], + "uv": { + "north": {"uv": [13, 9], "uv_size": [0.5, 0.75]}, + "east": {"uv": [0, 2], "uv_size": [2.75, 0.75]}, + "south": {"uv": [10, 13], "uv_size": [0.5, 0.75]}, + "west": {"uv": [0, 3], "uv_size": [2.75, 0.75]}, + "up": {"uv": [2, 4], "uv_size": [0.5, 2.75]}, + "down": {"uv": [3, 6.75], "uv_size": [0.5, -2.75]} + } + }, + { + "origin": [-0.325, 8.59564, 4.81354], + "size": [0.65, 0.58906, 0.71094], + "pivot": [0, 8.59564, 1.31979], + "rotation": [-7.25, 0, 0], + "uv": { + "north": {"uv": [15, 15], "uv_size": [0.5, 0.5]}, + "east": {"uv": [0, 16], "uv_size": [0.5, 0.5]}, + "south": {"uv": [16, 0], "uv_size": [0.5, 0.5]}, + "west": {"uv": [1, 16], "uv_size": [0.5, 0.5]}, + "up": {"uv": [2, 16], "uv_size": [0.5, 0.5]}, + "down": {"uv": [3, 16.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.1625, 8.45157, 0.99532], + "size": [0.325, 0.1625, 0.34531], + "pivot": [0, 8.61407, 0.99532], + "rotation": [-3.25, 0, 0], + "uv": { + "north": {"uv": [9, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 9], "uv_size": [0.25, 0.25]}, + "south": {"uv": [10, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 10], "uv_size": [0.25, 0.25]}, + "up": {"uv": [11, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 11.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1625, 8.43314, 1.25886], + "size": [0.325, 0.1625, 3.55468], + "pivot": [0, 8.59564, 1.31979], + "rotation": [-7.25, 0, 0], + "uv": { + "north": {"uv": [8, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 4], "uv_size": [2.75, 0.25]}, + "south": {"uv": [24, 8], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 5], "uv_size": [2.75, 0.25]}, + "up": {"uv": [6, 6], "uv_size": [0.25, 2.75]}, + "down": {"uv": [0, 9.75], "uv_size": [0.25, -2.75]} + } + }, + { + "origin": [-0.1625, 8.43314, 4.81354], + "size": [0.325, 0.1625, 0.71094], + "pivot": [0, 8.59564, 1.31979], + "rotation": [-7.25, 0, 0], + "uv": { + "north": {"uv": [7, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [3, 20], "uv_size": [0.5, 0.25]}, + "south": {"uv": [24, 7], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 3], "uv_size": [0.5, 0.25]}, + "up": {"uv": [4, 20], "uv_size": [0.25, 0.5]}, + "down": {"uv": [20, 4.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.1625, 8.44204, 0.98582], + "size": [0.22981, 0.1625, 0.34532], + "pivot": [0.1625, 8.44204, 1.15848], + "rotation": [-2.29933, -2.29748, -44.95389], + "uv": { + "north": {"uv": [14, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 14], "uv_size": [0.25, 0.25]}, + "south": {"uv": [15, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 15], "uv_size": [0.25, 0.25]}, + "up": {"uv": [16, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 16.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1625, 8.21783, 1.22463], + "size": [0.22981, 0.1625, 3.55468], + "pivot": [0.1625, 8.21783, 3.00196], + "rotation": [-5.14023, -5.11966, -44.77004], + "uv": { + "north": {"uv": [13, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 0], "uv_size": [2.75, 0.25]}, + "south": {"uv": [24, 13], "uv_size": [0.25, 0.25]}, + "west": {"uv": [1, 7], "uv_size": [2.75, 0.25]}, + "up": {"uv": [7, 1], "uv_size": [0.25, 2.75]}, + "down": {"uv": [7, 8.75], "uv_size": [0.25, -2.75]} + } + }, + { + "origin": [0.1625, 7.94866, 4.76226], + "size": [0.22981, 0.1625, 0.71094], + "pivot": [0.1625, 7.94866, 5.11772], + "rotation": [-5.14023, -5.11966, -44.77004], + "uv": { + "north": {"uv": [12, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 20], "uv_size": [0.5, 0.25]}, + "south": {"uv": [24, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 5], "uv_size": [0.5, 0.25]}, + "up": {"uv": [6, 20], "uv_size": [0.25, 0.5]}, + "down": {"uv": [20, 6.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.39231, 7.94866, 4.76226], + "size": [0.22981, 0.1625, 0.71094], + "pivot": [-0.1625, 7.94866, 5.11772], + "rotation": [-5.14023, 5.11966, 44.77004], + "uv": { + "north": {"uv": [21, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 20], "uv_size": [0.5, 0.25]}, + "south": {"uv": [24, 21], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 7], "uv_size": [0.5, 0.25]}, + "up": {"uv": [8, 20], "uv_size": [0.25, 0.5]}, + "down": {"uv": [20, 8.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.39231, 8.21783, 1.22463], + "size": [0.22981, 0.1625, 3.55468], + "pivot": [-0.1625, 8.21783, 3.00196], + "rotation": [-5.14023, 5.11966, 44.77004], + "uv": { + "north": {"uv": [20, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [1, 8], "uv_size": [2.75, 0.25]}, + "south": {"uv": [24, 20], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 1], "uv_size": [2.75, 0.25]}, + "up": {"uv": [4, 8], "uv_size": [0.25, 2.75]}, + "down": {"uv": [5, 10.75], "uv_size": [0.25, -2.75]} + } + }, + { + "origin": [-0.39231, 8.44204, 0.98582], + "size": [0.22981, 0.1625, 0.34532], + "pivot": [-0.1625, 8.44204, 1.15848], + "rotation": [-2.29933, 2.29748, 44.95389], + "uv": { + "north": {"uv": [17, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 17], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 18], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 19.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3253, 8.06471, 5.00306], + "size": [0.6506, 0.56959, 0.4881], + "inflate": 0.001, + "pivot": [0, 8.06501, 5.49086], + "rotation": [-22.25, 0, 0], + "uv": { + "north": {"uv": [16, 3], "uv_size": [0.5, 0.5]}, + "east": {"uv": [4, 16], "uv_size": [0.5, 0.5]}, + "south": {"uv": [5, 16], "uv_size": [0.5, 0.5]}, + "west": {"uv": [16, 5], "uv_size": [0.5, 0.5]}, + "up": {"uv": [6, 16], "uv_size": [0.5, 0.5]}, + "down": {"uv": [16, 6.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.31837, 8.10383, 4.48726], + "size": [0.63674, 0.4881, 1.21935], + "inflate": 0.001, + "pivot": [-0.00693, 8.59163, 5.70631], + "rotation": [-44.75, 0, 0], + "uv": { + "north": {"uv": [7, 16], "uv_size": [0.5, 0.5]}, + "east": {"uv": [11, 9], "uv_size": [1, 0.5]}, + "south": {"uv": [16, 7], "uv_size": [0.5, 0.5]}, + "west": {"uv": [1, 12], "uv_size": [1, 0.5]}, + "up": {"uv": [2, 12], "uv_size": [0.5, 1]}, + "down": {"uv": [3, 13], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.3253, 8.96186, 1.26547], + "size": [0.6506, 0.4881, 3.5756], + "inflate": 0.001, + "pivot": [0, 9.44966, 4.84077], + "rotation": [-2.33692, 0, 0], + "uv": { + "north": {"uv": [8, 16], "uv_size": [0.5, 0.5]}, + "east": {"uv": [3, 2], "uv_size": [2.75, 0.5]}, + "south": {"uv": [16, 8], "uv_size": [0.5, 0.5]}, + "west": {"uv": [3, 3], "uv_size": [2.75, 0.5]}, + "up": {"uv": [0, 4], "uv_size": [0.5, 2.75]}, + "down": {"uv": [1, 6.75], "uv_size": [0.5, -2.75]} + } + }, + { + "origin": [-0.1625, 9.44966, 1.26577], + "size": [0.325, 0.1625, 3.575], + "pivot": [0, 9.44966, 4.84077], + "rotation": [-2.33692, 0, 0], + "uv": { + "north": {"uv": [25, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 2], "uv_size": [2.75, 0.25]}, + "south": {"uv": [4, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 3], "uv_size": [2.75, 0.25]}, + "up": {"uv": [8, 6], "uv_size": [0.25, 2.75]}, + "down": {"uv": [1, 11.75], "uv_size": [0.25, -2.75]} + } + }, + { + "origin": [-0.1625, 9.60938, 0.99532], + "size": [0.325, 0.1625, 0.34531], + "pivot": [0, 8.61407, 0.99532], + "rotation": [-3.25, 0, 0], + "uv": { + "north": {"uv": [25, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [1, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 1], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 2], "uv_size": [0.25, 0.25]}, + "down": {"uv": [3, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1625, 9.60938, 0.74649], + "size": [0.325, 0.1625, 0.24883], + "pivot": [0, 8.61407, 0.99532], + "rotation": [-3.25, 0, 0], + "uv": { + "north": {"uv": [22, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 22], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [24, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [0, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1625, 9.5224, 1.27388], + "size": [0.22981, 0.16251, 3.575], + "pivot": [0.1625, 9.68491, 3.06138], + "rotation": [-1.65291, 1.65222, 44.97616], + "uv": { + "north": {"uv": [25, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 4], "uv_size": [2.75, 0.25]}, + "south": {"uv": [11, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 5], "uv_size": [2.75, 0.25]}, + "up": {"uv": [2, 9], "uv_size": [0.25, 2.75]}, + "down": {"uv": [3, 11.75], "uv_size": [0.25, -2.75]} + } + }, + { + "origin": [0.1625, 9.59773, 1.06067], + "size": [0.22981, 0.1625, 0.26407], + "pivot": [0.1625, 9.76023, 1.23334], + "rotation": [-2.29933, 2.29748, 44.95389], + "uv": { + "north": {"uv": [25, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 8], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 9], "uv_size": [0.25, 0.25]}, + "down": {"uv": [10, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1625, 9.61456, 0.81232], + "size": [0.22981, 0.1625, 0.24883], + "pivot": [0.1625, 9.77706, 0.93674], + "rotation": [-2.29933, 2.29748, 44.95389], + "uv": { + "north": {"uv": [25, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 5], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 6], "uv_size": [0.25, 0.25]}, + "down": {"uv": [7, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.39231, 9.59773, 1.06067], + "size": [0.22981, 0.1625, 0.26407], + "pivot": [-0.1625, 9.76023, 1.23334], + "rotation": [-2.29933, -2.29748, -44.95389], + "uv": { + "north": {"uv": [25, 15], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 16], "uv_size": [0.25, 0.25]}, + "west": {"uv": [17, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 17], "uv_size": [0.25, 0.25]}, + "down": {"uv": [18, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.39231, 9.61456, 0.81232], + "size": [0.22981, 0.1625, 0.24883], + "pivot": [-0.1625, 9.77706, 0.93674], + "rotation": [-2.29933, -2.29748, -44.95389], + "uv": { + "north": {"uv": [25, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 13], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 14], "uv_size": [0.25, 0.25]}, + "down": {"uv": [15, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.39231, 9.5224, 1.27388], + "size": [0.22981, 0.16251, 3.575], + "pivot": [-0.1625, 9.68491, 3.06138], + "rotation": [-1.65291, -1.65222, -44.97616], + "uv": { + "north": {"uv": [25, 11], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 9], "uv_size": [2.75, 0.25]}, + "south": {"uv": [12, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 6], "uv_size": [2.75, 0.25]}, + "up": {"uv": [9, 7], "uv_size": [0.25, 2.75]}, + "down": {"uv": [0, 12.75], "uv_size": [0.25, -2.75]} + } + } + ] + }, + { + "name": "constraint", + "parent": "bone", + "pivot": [-0.01558, 8.125, 1.9375] + }, + { + "name": "lefthand", + "parent": "bone", + "pivot": [-6, 19, 0] + }, + { + "name": "lefthand_pos", + "parent": "lefthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [-8, 8, -2], + "size": [4, 12, 4], + "uv": { + "north": {"uv": [12, 0], "uv_size": [4, 12]}, + "east": {"uv": [4, 12], "uv_size": [4, 12]}, + "south": {"uv": [8, 12], "uv_size": [4, 12]}, + "west": {"uv": [12, 12], "uv_size": [4, 12]}, + "up": {"uv": [16, 8], "uv_size": [4, 4]}, + "down": {"uv": [16, 16], "uv_size": [4, -4]} + } + } + ] + }, + { + "name": "camera", + "pivot": [3.0813, 14.0031, 11.5313] + }, + { + "name": "view", + "pivot": [0, 0, 0] + }, + { + "name": "refit_view", + "parent": "view", + "pivot": [22.475, 5.55, 0.2], + "rotation": [0, 90, 0] + }, + { + "name": "iron_view", + "parent": "view", + "pivot": [-0.15326, 9.42188, 6.93493], + "rotation": [0, -1, 0] + }, + { + "name": "idle_view", + "parent": "view", + "pivot": [3.4563, 2.36563, -1.46875] + }, + { + "name": "positioning", + "pivot": [-0.01558, 4.125, 4.9375] + }, + { + "name": "ground", + "parent": "positioning", + "pivot": [0, 0, 0] + }, + { + "name": "thirdperson_hand", + "parent": "positioning", + "pivot": [-0.01558, 6.125, -2.0625] + }, + { + "name": "fixed", + "parent": "positioning", + "pivot": [0.79692, 5.125, -1.0625], + "rotation": [0, 90, 0] + }, + { + "name": "bone38", + "pivot": [62, -11.35, -167.5] + }, + { + "name": "bone39", + "parent": "bone38", + "pivot": [-65, -11.35, -167.5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/executor.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/executor.anim.json new file mode 100644 index 0000000..3ddbb80 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/executor.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"static_idle":{"loop":true,"override_previous_animation":true,"bones":{"lefthand":{"rotation":[123.244,4.453,133.19],"position":[13.061,38.948,-12.845]},"righthand":{"rotation":[113.702,-33.469,-105.339],"position":[-10.77,38.858,-13.459]},"executor":{"rotation":[-5.076,34.084,81.293],"position":[-4.89,54.162,-16.401]},"lefthand_1":{"scale":[1,1.5,1]},"righthand_1":{"position":[0,2.75,1.5],"scale":[1,1.5,1]}}},"draw":{"loop":true,"animation_length":0.875,"override_previous_animation":true,"bones":{"lefthand":{"rotation":{"0.0":[101.307,-9.365,131.478],"0.0417":[103.958,-8.381,128.555],"0.0833":[105.237,-7.836,127.001],"0.125":[108.759,-5.826,122.414],"0.1667":[109.81,-5.024,121.005],"0.2083":[111.72,-3.193,118.566],"0.25":[114.211,0.043,116.166],"0.2917":[115.806,2.79,116.878],"0.3333":[116.672,4.556,118.688],"0.375":[119.658,9.199,127.326],"0.4167":[120.459,9.865,129.53],"0.4583":[121.486,9.73,131.918],"0.5":[122.287,7.949,134.028],"0.5417":[122.6,6.707,134.822],"0.5833":[122.75,6.256,135.088],"0.625":[123.166,5.607,135.147],"0.6667":[123.263,5.481,134.933],"0.7083":[123.409,5.28,134.38],"0.75":[123.487,4.899,133.731],"0.7917":[123.344,4.601,133.376],"0.8333":[123.244,4.453,133.19],"0.875":[123.244,4.453,133.19]},"position":{"0.0":[14.544,32.728,-13.026],"0.0417":[14.406,33.664,-13.358],"0.0833":[14.338,34.155,-13.507],"0.125":[14.128,35.664,-13.858],"0.1667":[14.055,36.162,-13.937],"0.2083":[13.904,37.124,-14.036],"0.25":[13.668,38.427,-14.04],"0.2917":[13.462,38.977,-13.946],"0.3333":[13.357,39.106,-13.867],"0.375":[13.02,38.964,-13.563],"0.4167":[12.945,38.898,-13.479],"0.4583":[12.888,38.851,-13.36],"0.5":[12.89,38.727,-13.22],"0.5417":[12.91,38.665,-13.136],"0.5833":[12.918,38.651,-13.095],"0.625":[12.943,38.687,-12.966],"0.6667":[12.956,38.713,-12.926],"0.7083":[12.983,38.774,-12.853],"0.75":[13.021,38.858,-12.797],"0.7917":[13.048,38.917,-12.824],"0.8333":[13.061,38.948,-12.845],"0.875":[13.061,38.948,-12.845]}},"righthand":{"rotation":{"0.0":[113.581,-33.122,-105.686],"0.0417":[113.027,-31.759,-107.023],"0.0833":[112.545,-30.736,-108.103],"0.125":[110.4,-26.952,-111.044],"0.1667":[110.267,-27.008,-112.658],"0.2083":[109.768,-26.372,-113.57],"0.25":[110.661,-28.614,-111.256],"0.2917":[111.455,-30.722,-109.045],"0.3333":[111.821,-31.547,-108.121],"0.375":[112.915,-33.642,-105.577],"0.4167":[113.118,-33.89,-104.989],"0.4583":[113.257,-33.5,-104.351],"0.5":[113.335,-32.578,-104.064],"0.5417":[113.287,-32.491,-104.116],"0.5833":[113.223,-32.611,-104.207],"0.625":[113.055,-33.096,-104.713],"0.6667":[113.105,-33.226,-104.902],"0.7083":[113.357,-33.465,-105.297],"0.75":[113.556,-33.591,-105.481],"0.7917":[113.654,-33.506,-105.382],"0.8333":[113.707,-33.468,-105.342],"0.875":[113.707,-33.468,-105.342]},"position":{"0.0":[-14.921,34.965,-8.948],"0.0417":[-14.43,35.851,-9.588],"0.0833":[-14.016,36.546,-10.107],"0.125":[-12.516,38.594,-12.086],"0.1667":[-12.088,39.324,-12.598],"0.2083":[-11.339,39.854,-13.598],"0.25":[-10.85,39.579,-14.438],"0.2917":[-10.699,39.314,-14.606],"0.3333":[-10.63,39.2,-14.569],"0.375":[-10.509,38.89,-14.111],"0.4167":[-10.505,38.828,-13.956],"0.4583":[-10.534,38.789,-13.719],"0.5":[-10.586,38.798,-13.423],"0.5417":[-10.607,38.807,-13.317],"0.5833":[-10.611,38.811,-13.291],"0.625":[-10.622,38.833,-13.265],"0.6667":[-10.63,38.838,-13.269],"0.7083":[-10.662,38.851,-13.317],"0.75":[-10.72,38.86,-13.413],"0.7917":[-10.757,38.858,-13.448],"0.8333":[-10.769,38.858,-13.459],"0.875":[-10.769,38.858,-13.459]}},"executor":{"rotation":{"0.0":[-5.004,33.727,80.921],"0.0417":[-4.635,32.32,79.487],"0.0833":[-4.289,31.257,78.339],"0.125":[-2.626,27.289,75.176],"0.1667":[-2.487,27.331,73.566],"0.2083":[-2.067,26.651,72.62],"0.25":[-2.681,28.967,75.06],"0.2917":[-3.202,31.138,77.403],"0.3333":[-3.459,31.993,78.382],"0.375":[-4.265,34.179,81.075],"0.4167":[-4.433,34.446,81.681],"0.4583":[-4.627,34.072,82.288],"0.5":[-4.832,33.164,82.504],"0.5417":[-4.796,33.072,82.445],"0.5833":[-4.716,33.186,82.364],"0.625":[-4.481,33.651,81.896],"0.6667":[-4.513,33.785,81.717],"0.7083":[-4.731,34.046,81.338],"0.75":[-4.913,34.191,81.162],"0.7917":[-5.023,34.116,81.254],"0.8333":[-5.081,34.083,81.291],"0.875":[-5.081,34.083,81.291]},"position":{"0.0":[-9.046,50.253,-11.893],"0.0417":[-8.574,51.072,-12.547],"0.0833":[-8.174,51.716,-13.075],"0.125":[-6.723,53.567,-15.08],"0.1667":[-6.308,54.292,-15.591],"0.2083":[-5.571,54.784,-16.595],"0.25":[-5.074,54.624,-17.422],"0.2917":[-4.909,54.466,-17.575],"0.3333":[-4.829,54.395,-17.53],"0.375":[-4.666,54.192,-17.051],"0.4167":[-4.65,54.145,-16.893],"0.4583":[-4.662,54.092,-16.661],"0.5":[-4.699,54.064,-16.374],"0.5417":[-4.721,54.069,-16.269],"0.5833":[-4.73,54.077,-16.242],"0.625":[-4.758,54.116,-16.211],"0.6667":[-4.767,54.127,-16.213],"0.7083":[-4.796,54.152,-16.258],"0.75":[-4.849,54.168,-16.354],"0.7917":[-4.88,54.164,-16.389],"0.8333":[-4.89,54.162,-16.401],"0.875":[-4.89,54.162,-16.401]}},"lefthand_1":{"scale":[1,1.5,1]},"righthand_1":{"position":[0,2.75,1.5],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.01,-0.006,0],"0.0417":[-0.067,-0.044,0],"0.0833":[-0.106,-0.07,0],"0.125":[-0.235,-0.156,0],"0.1667":[-0.269,-0.178,0],"0.2083":[-0.303,-0.2,0],"0.25":[-0.279,-0.184,0],"0.2917":[-0.245,-0.162,0],"0.3333":[-0.226,-0.149,0],"0.375":[-0.163,-0.111,0],"0.4167":[-0.149,-0.102,0],"0.4583":[-0.113,-0.077,0],"0.5":[-0.053,-0.035,0],"0.5417":[-0.023,-0.015,0],"0.5833":[-0.007,-0.01,0],"0.625":[0,0.001,0],"0.875":[0,0.001,0]}}},"sound_effects":{"0.0":{"effect":"melee.executor.executor_draw"}}},"draw_1":{"loop":true,"animation_length":0.925,"override_previous_animation":true,"bones":{"lefthand":{"rotation":{"0.0":[-68.3,-166.45,28.101],"0.0417":[-66.074,-167.13,41.135],"0.0833":[-65.329,-166.696,44.298],"0.125":[-63.782,-163.737,38.53],"0.1667":[-57.325,-165.338,-10.059],"0.2083":[4.4,-207.239,-80.895],"0.25":[2.268,-197.972,-73.414],"0.2917":[-39.788,-182.57,-69.554],"0.3333":[-81.804,-171.026,-46.801],"0.375":[-65.603,-181.157,-63.949],"0.4167":[-63.21,-188.867,-60.895],"0.4583":[-61.694,-192.625,-55.276],"0.5":[-60.48,-191.453,-52.537],"0.5417":[-58.899,-188.691,-49.079],"0.5833":[-57.896,-186.285,-47.207],"0.625":[-57.259,-184.29,-46.584],"0.6667":[-56.763,-183.148,-46.089],"0.7083":[-56.379,-182.647,-45.743],"0.75":[-56.222,-182.548,-45.651],"0.7917":[-56.218,-182.895,-45.817],"0.8333":[-56.36,-183.532,-46.162],"0.875":[-56.562,-184.097,-46.536],"0.9167":[-56.756,-184.453,-46.81]},"position":{"0.0":[18.487,30.078,-15.094],"0.0417":[15.53,32.608,-15.127],"0.0833":[12.327,35.53,-15.064],"0.125":[10.104,37.463,-14.896],"0.1667":[7.456,33.877,-16.124],"0.2083":[7.575,33.349,-15.918],"0.25":[11.652,35.853,-10.992],"0.2917":[13.573,34.296,-11.614],"0.3333":[14.636,33.393,-13.465],"0.375":[13.579,38.765,-14.175],"0.4167":[13.212,39.444,-13.925],"0.4583":[12.944,38.898,-13.675],"0.5":[12.916,38.709,-13.478],"0.5417":[12.911,38.489,-13.182],"0.5833":[12.947,38.424,-12.94],"0.625":[13.011,38.483,-12.758],"0.6667":[13.057,38.595,-12.661],"0.7083":[13.09,38.75,-12.629],"0.75":[13.104,38.835,-12.628],"0.7917":[13.106,38.907,-12.666],"0.8333":[13.094,38.949,-12.732],"0.875":[13.074,38.961,-12.799],"0.9167":[13.061,38.948,-12.845]}},"righthand":{"rotation":{"0.0":[-61.242,-138.744,-25.401],"0.125":[-60.678,-137.587,-26.021],"0.1667":[-64.944,-155.581,-14.384],"0.2083":[-51.975,-194.478,22.309],"0.25":[-56.855,-173.073,33.608],"0.2917":[-54.573,-161.191,49.091],"0.3333":[-57.118,-155.588,59.201],"0.375":[-60.624,-153.853,69.62],"0.4167":[-63.1,-148.404,71.378],"0.4583":[-65.107,-149.341,72.619],"0.5":[-65.846,-149.269,72.96],"0.5417":[-66.239,-149.087,73.216],"0.5833":[-66.342,-147.815,73.488],"0.625":[-66.085,-146.055,73.635],"0.6667":[-65.959,-144.902,73.967],"0.7083":[-65.943,-144.792,74.267],"0.75":[-65.866,-145.033,74.389],"0.7917":[-65.897,-145.691,74.493],"0.8333":[-66.024,-146.223,74.569],"0.875":[-66.232,-146.477,74.641],"0.9167":[-66.298,-146.531,74.66]},"position":{"0.0":[-24.59,33.764,-13.698],"0.125":[-24.699,33.608,-13.558],"0.1667":[-23.098,37.694,-14.757],"0.2083":[-19.312,41.938,-14.955],"0.25":[-13.509,44.055,-13.53],"0.2917":[-12.425,42.788,-13.341],"0.3333":[-11.336,41.49,-13.133],"0.375":[-10.548,39.113,-13.431],"0.4167":[-10.648,38.279,-13.389],"0.4583":[-10.674,38.213,-13.051],"0.5":[-10.786,38.467,-12.881],"0.5417":[-10.881,38.846,-12.9],"0.5833":[-10.878,38.988,-12.987],"0.625":[-10.859,39.044,-13.114],"0.6667":[-10.803,38.999,-13.282],"0.7083":[-10.779,38.955,-13.379],"0.75":[-10.773,38.921,-13.419],"0.7917":[-10.775,38.897,-13.444],"0.8333":[-10.776,38.88,-13.454],"0.875":[-10.772,38.863,-13.459],"0.9167":[-10.77,38.858,-13.459]}},"executor":{"rotation":{"0.0":[5.185,-7.817,18.358],"0.0417":[3.179,-8.844,32.219],"0.0833":[2.11,-8.368,32.947],"0.125":[0.032,-5.821,25.645],"0.1667":[-4.405,-3.667,23.832],"0.2083":[-12.632,0.505,25.538],"0.25":[-17.487,8.576,38.953],"0.2917":[-18.87,19.835,55.028],"0.3333":[-15.636,25.301,65.362],"0.375":[-11.73,27.283,75.706],"0.4167":[-8.535,32.533,77.828],"0.4583":[-6.648,31.407,79.032],"0.5":[-5.9,31.407,79.387],"0.5417":[-5.482,31.55,79.659],"0.5833":[-5.209,32.805,80.022],"0.625":[-5.222,34.576,80.303],"0.6667":[-5.183,35.734,80.728],"0.7083":[-5.184,35.845,81.037],"0.75":[-5.296,35.613,81.139],"0.7917":[-5.359,34.956,81.189],"0.8333":[-5.307,34.415,81.223],"0.875":[-5.135,34.143,81.277],"0.9167":[-5.076,34.083,81.292]},"position":{"0.0":[11.617,46.369,-17.789],"0.0417":[9.135,49.103,-17.788],"0.0833":[6.038,52.054,-17.706],"0.125":[3.653,53.751,-17.635],"0.1667":[-0.336,56.367,-17.284],"0.2083":[-4.548,59.892,-16.357],"0.25":[-6.802,58.808,-16.446],"0.2917":[-6.032,57.82,-16.322],"0.3333":[-5.106,56.605,-16.117],"0.375":[-4.388,54.181,-16.418],"0.4167":[-4.649,53.54,-16.344],"0.4583":[-4.732,53.412,-16.018],"0.5":[-4.872,53.661,-15.848],"0.5417":[-4.983,54.043,-15.866],"0.5833":[-4.997,54.237,-15.942],"0.625":[-4.987,54.368,-16.05],"0.6667":[-4.936,54.372,-16.205],"0.7083":[-4.91,54.334,-16.3],"0.75":[-4.896,54.291,-16.343],"0.7917":[-4.891,54.24,-16.376],"0.8333":[-4.89,54.2,-16.392],"0.875":[-4.89,54.17,-16.4],"0.9167":[-4.89,54.162,-16.401]}},"lefthand_1":{"scale":[1,1.5,1]},"righthand_1":{"position":[0,2.75,1.5],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.054,0.005,0.028],"0.0417":[-0.534,0.048,0.289],"0.0833":[-0.992,0.108,0.47],"0.125":[-1.134,0.141,0.47],"0.1667":[-1.275,0.187,0.45],"0.2083":[-1.351,0.238,0.431],"0.25":[-1.373,0.307,0.422],"0.2917":[-1.34,0.379,0.448],"0.3333":[-1.185,0.52,0.541],"0.375":[-0.894,0.632,0.442],"0.4167":[-0.393,0.67,-0.161],"0.4583":[0.029,0.634,0.246],"0.5":[0.244,0.575,0.513],"0.5417":[0.345,0.436,-0.057],"0.5833":[0.319,0.276,-0.025],"0.625":[0.219,0.163,0.152],"0.6667":[0.103,0.118,0.01],"0.7083":[0.04,0.073,-0.002],"0.75":[0.022,0.047,0.01],"0.7917":[0.031,0.014,0.004],"0.8333":[0.067,-0.005,-0.002],"0.875":[0.067,-0.012,0.004],"0.9167":[-0.004,0.001,-0.002]}}},"sound_effects":{"0.0":{"effect":"melee.executor.executor_draw_1"}}},"inspect":{"loop":true,"animation_length":7.3,"override_previous_animation":true,"bones":{"lefthand":{"rotation":{"0.0":[123.462,2.935,134.212],"0.0417":[123.314,0.395,135.571],"0.0833":[120.057,-3.32,138.164],"0.125":[112.165,-6.192,138.338],"0.1667":[98.27,-11.526,137.041],"0.2083":[93.426,-13.291,136.814],"0.25":[89.913,-15.314,136.971],"0.2917":[88.326,-16.325,137.183],"0.3333":[86.759,-17.47,137.555],"0.375":[85.967,-18.08,137.779],"0.4167":[84.806,-18.862,138.004],"0.4583":[84.495,-19.05,138.051],"0.5":[84.692,-18.911,138.016],"0.5417":[84.978,-18.733,137.972],"0.5833":[85.201,-18.63,137.95],"0.625":[85.252,-18.622,137.967],"0.6667":[85.298,-18.613,138.027],"0.7083":[85.306,-18.607,138.088],"0.75":[85.287,-18.599,138.211],"0.7917":[85.258,-18.595,138.309],"0.8333":[85.186,-18.59,138.486],"0.875":[85.123,-18.589,138.621],"0.9167":[85.004,-18.585,138.84],"0.9583":[84.912,-18.583,139.004],"1.0":[84.753,-18.579,139.269],"1.0417":[84.639,-18.576,139.452],"1.0833":[84.45,-18.571,139.746],"1.125":[84.314,-18.569,139.953],"1.1667":[84.103,-18.562,140.274],"1.2083":[83.955,-18.559,140.495],"1.25":[83.727,-18.551,140.828],"1.2917":[83.576,-18.545,141.052],"1.3333":[83.337,-18.533,141.406],"1.375":[83.181,-18.525,141.63],"1.4167":[82.942,-18.512,141.984],"1.4583":[82.788,-18.5,142.212],"1.5":[82.558,-18.484,142.555],"1.5417":[82.408,-18.472,142.782],"1.5833":[82.194,-18.451,143.109],"1.625":[82.056,-18.438,143.324],"1.6667":[81.862,-18.417,143.637],"1.7083":[81.742,-18.402,143.83],"1.75":[81.578,-18.381,144.113],"1.7917":[81.475,-18.362,144.294],"1.8333":[81.346,-18.342,144.538],"1.875":[81.271,-18.324,144.692],"1.9167":[81.183,-18.306,144.895],"1.9583":[81.139,-18.29,145.016],"2.0":[81.102,-18.27,145.168],"2.0417":[81.092,-18.256,145.254],"2.0833":[81.109,-18.24,145.353],"2.125":[81.141,-18.228,145.393],"2.1667":[81.221,-18.215,145.426],"2.2083":[81.295,-18.209,145.425],"2.25":[81.444,-18.201,145.387],"2.2917":[81.568,-18.193,145.337],"2.3333":[81.795,-18.188,145.218],"2.375":[81.974,-18.186,145.112],"2.4167":[82.284,-18.183,144.909],"2.4583":[82.523,-18.185,144.741],"2.5":[82.923,-18.18,144.447],"2.5417":[83.223,-18.18,144.218],"2.5833":[83.726,-18.178,143.824],"2.625":[84.096,-18.175,143.526],"2.6667":[84.708,-18.17,143.026],"2.7083":[85.152,-18.162,142.657],"2.75":[85.877,-18.14,142.049],"2.7917":[86.405,-18.124,141.604],"2.8333":[87.256,-18.087,140.882],"2.875":[87.865,-18.055,140.358],"2.9167":[88.847,-17.991,139.516],"2.9583":[89.552,-17.934,138.914],"3.0":[90.692,-17.813,137.992],"3.0417":[91.588,-17.644,137.47],"3.0833":[93.113,-17.284,136.673],"3.125":[94.219,-16.995,136.078],"3.1667":[96.011,-16.492,135.106],"3.2083":[97.284,-16.101,134.416],"3.25":[99.303,-15.435,133.32],"3.2917":[100.718,-14.932,132.559],"3.3333":[102.931,-14.104,131.377],"3.375":[104.461,-13.492,130.57],"3.4167":[106.831,-12.491,129.341],"3.4583":[108.452,-11.765,128.516],"3.5":[110.936,-10.592,127.276],"3.5417":[112.625,-9.755,126.454],"3.5833":[115.2,-8.422,125.242],"3.625":[116.938,-7.479,124.451],"3.6667":[119.574,-5.993,123.293],"3.7083":[121.344,-4.953,122.55],"3.75":[124.021,-3.333,121.479],"3.7917":[125.815,-2.214,120.799],"3.8333":[128.509,-0.476,119.834],"3.875":[130.316,0.712,119.235],"3.9167":[133.028,2.536,118.4],"3.9583":[134.837,3.774,117.888],"4.0":[137.554,5.659,117.193],"4.0417":[139.367,6.928,116.778],"4.0833":[142.09,8.842,116.236],"4.125":[143.904,10.121,115.926],"4.1667":[146.623,12.036,115.539],"4.2083":[148.435,13.304,115.336],"4.25":[151.157,15.185,115.113],"4.2917":[152.964,16.419,115.014],"4.3333":[155.68,18.235,114.951],"4.375":[157.486,19.416,114.961],"4.4167":[160.189,21.135,115.052],"4.4583":[161.984,22.242,115.161],"4.5":[164.662,23.837,115.395],"4.5417":[166.436,24.852,115.595],"4.5833":[169.074,26.294,115.956],"4.625":[170.813,27.199,116.234],"4.6667":[173.382,28.465,116.698],"4.7083":[175.068,29.248,117.036],"4.75":[177.538,30.323,117.573],"4.7917":[179.141,30.969,117.948],"4.8333":[181.47,31.834,118.522],"4.875":[182.966,32.341,118.908],"4.9167":[185.1,32.99,119.476],"4.9583":[186.451,33.35,119.849],"5.0":[188.348,33.776,120.373],"5.0417":[189.519,33.985,120.696],"5.0833":[191.126,34.193,121.14],"5.125":[187.47,31.226,119.831],"5.1667":[173.305,17.564,116.481],"5.2083":[164.261,5.244,117.086],"5.25":[154.931,-10.299,120.202],"5.2917":[152.571,-14.323,120.228],"5.3333":[155.355,-2.075,110.226],"5.375":[157.269,14.406,100.231],"5.4167":[156.513,35.866,87.617],"5.4583":[155.852,39.053,85.921],"5.5":[158.335,29.148,94.567],"5.5417":[159.107,18.45,102.771],"5.5833":[156.549,4.974,114.907],"5.625":[151.138,-3.38,126.11],"5.6667":[142.374,-11.164,141.701],"5.7083":[141.806,-11.9,143.583],"5.75":[149.212,-7.166,133.295],"5.7917":[155.62,-1.302,124.558],"5.8333":[166.384,8.719,116.184],"5.875":[175.685,17.151,115.869],"5.9167":[182.954,26.183,116.602],"5.9583":[183.459,30.912,116.829],"6.0":[181.785,37.058,117.114],"6.0417":[180.507,40.59,117.15],"6.0833":[181.793,44.272,118.32],"6.125":[186.745,43.384,120.814],"6.1667":[192.845,53.321,126.978],"6.2083":[195.648,52.081,128.316],"6.25":[192.123,33.534,121.601],"6.2917":[181.365,29.206,116.247],"6.3333":[165.451,21.14,111.455],"6.375":[155.19,15.287,110.497],"6.4167":[140.334,6.775,112.084],"6.4583":[130.824,1.762,114.843],"6.5":[117.326,-4.341,120.686],"6.5417":[109.549,-6.979,125.625],"6.5833":[99.95,-9.812,132.867],"6.625":[105.24,-8.253,126.055],"6.6667":[114.513,0.633,115.145],"6.7083":[115.599,4.6,116.58],"6.75":[117.217,10.422,120.904],"6.7917":[118.78,14.12,125.522],"6.8333":[121.509,12.9,129.399],"6.875":[123.023,11.248,131.365],"6.9167":[123.676,7.846,133.178],"6.9583":[123.268,5.306,133.597],"7.0":[123.073,3.915,133.358],"7.0417":[123.057,3.909,132.773],"7.0833":[123.06,4.126,132.169],"7.125":[123.076,4.138,132.188],"7.1667":[123.118,4.21,132.409],"7.2083":[123.154,4.28,132.632],"7.25":[123.21,4.39,132.99],"7.2917":[123.245,4.453,133.19]},"position":{"0.0":[13.523,38.26,-13.472],"0.0417":[14.184,37.021,-14.467],"0.0833":[14.214,35.226,-15.307],"0.125":[14.37,33.383,-15.7],"0.1667":[14.868,30.294,-15.753],"0.2083":[15.054,29.334,-15.64],"0.25":[15.006,28.702,-15.471],"0.2917":[14.933,28.489,-15.407],"0.3333":[14.793,28.359,-15.36],"0.375":[14.708,28.31,-15.338],"0.4167":[14.634,28.173,-15.291],"0.4583":[14.622,28.13,-15.279],"0.5":[14.633,28.161,-15.293],"0.5417":[14.645,28.202,-15.305],"0.5833":[14.649,28.227,-15.303],"0.625":[14.648,28.23,-15.294],"0.6667":[14.649,28.234,-15.28],"0.7083":[14.652,28.236,-15.269],"0.75":[14.659,28.239,-15.251],"0.7917":[14.665,28.24,-15.239],"0.8333":[14.677,28.241,-15.219],"0.875":[14.686,28.242,-15.204],"0.9167":[14.703,28.242,-15.181],"0.9583":[14.714,28.241,-15.165],"1.0":[14.734,28.241,-15.14],"1.0417":[14.748,28.24,-15.123],"1.0833":[14.77,28.238,-15.097],"1.125":[14.785,28.237,-15.078],"1.1667":[14.81,28.235,-15.05],"1.2083":[14.826,28.234,-15.031],"1.25":[14.852,28.231,-15.002],"1.2917":[14.869,28.23,-14.983],"1.3333":[14.895,28.228,-14.953],"1.375":[14.913,28.226,-14.933],"1.4167":[14.939,28.224,-14.903],"1.4583":[14.957,28.223,-14.884],"1.5":[14.982,28.221,-14.854],"1.5417":[14.999,28.22,-14.834],"1.5833":[15.024,28.218,-14.805],"1.625":[15.039,28.217,-14.785],"1.6667":[15.062,28.217,-14.757],"1.7083":[15.076,28.217,-14.739],"1.75":[15.096,28.217,-14.712],"1.7917":[15.109,28.217,-14.694],"1.8333":[15.125,28.217,-14.668],"1.875":[15.136,28.219,-14.652],"1.9167":[15.148,28.221,-14.629],"1.9583":[15.156,28.223,-14.615],"2.0":[15.166,28.227,-14.594],"2.0417":[15.17,28.229,-14.581],"2.0833":[15.174,28.234,-14.563],"2.125":[15.175,28.238,-14.553],"2.1667":[15.174,28.245,-14.538],"2.2083":[15.171,28.25,-14.53],"2.25":[15.163,28.257,-14.52],"2.2917":[15.157,28.264,-14.514],"2.3333":[15.143,28.274,-14.507],"2.375":[15.131,28.281,-14.504],"2.4167":[15.109,28.293,-14.502],"2.4583":[15.092,28.302,-14.503],"2.5":[15.064,28.316,-14.505],"2.5417":[15.041,28.326,-14.509],"2.5833":[15.003,28.343,-14.517],"2.625":[14.974,28.354,-14.523],"2.6667":[14.926,28.373,-14.536],"2.7083":[14.891,28.387,-14.547],"2.75":[14.835,28.408,-14.564],"2.7917":[14.792,28.423,-14.578],"2.8333":[14.723,28.447,-14.601],"2.875":[14.674,28.464,-14.618],"2.9167":[14.593,28.49,-14.647],"2.9583":[14.535,28.509,-14.667],"3.0":[14.423,28.538,-14.683],"3.0417":[14.279,28.558,-14.634],"3.0833":[14.03,28.581,-14.528],"3.125":[13.868,28.592,-14.459],"3.1667":[13.628,28.603,-14.358],"3.2083":[13.47,28.606,-14.292],"3.25":[13.235,28.607,-14.196],"3.2917":[13.081,28.604,-14.133],"3.3333":[12.852,28.596,-14.044],"3.375":[12.701,28.588,-13.986],"3.4167":[12.477,28.574,-13.905],"3.4583":[12.33,28.562,-13.854],"3.5":[12.112,28.542,-13.784],"3.5417":[11.968,28.528,-13.74],"3.5833":[11.755,28.507,-13.681],"3.625":[11.614,28.493,-13.646],"3.6667":[11.405,28.471,-13.601],"3.7083":[11.267,28.458,-13.574],"3.75":[11.06,28.44,-13.542],"3.7917":[10.923,28.429,-13.525],"3.8333":[10.72,28.416,-13.506],"3.875":[10.584,28.41,-13.498],"3.9167":[10.38,28.406,-13.492],"3.9583":[10.245,28.405,-13.492],"4.0":[10.041,28.411,-13.498],"4.0417":[9.904,28.417,-13.506],"4.0833":[9.698,28.435,-13.522],"4.125":[9.559,28.45,-13.536],"4.1667":[9.35,28.479,-13.561],"4.2083":[9.209,28.503,-13.58],"4.25":[8.994,28.546,-13.611],"4.2917":[8.85,28.579,-13.633],"4.3333":[8.63,28.636,-13.667],"4.375":[8.481,28.678,-13.691],"4.4167":[8.254,28.747,-13.726],"4.4583":[8.101,28.798,-13.749],"4.5":[7.867,28.88,-13.783],"4.5417":[7.709,28.938,-13.805],"4.5833":[7.468,29.031,-13.835],"4.625":[7.305,29.095,-13.853],"4.6667":[7.057,29.197,-13.877],"4.7083":[6.889,29.267,-13.89],"4.75":[6.634,29.375,-13.906],"4.7917":[6.461,29.449,-13.914],"4.8333":[6.199,29.562,-13.92],"4.875":[6.023,29.638,-13.921],"4.9167":[5.756,29.753,-13.916],"4.9583":[5.576,29.83,-13.909],"5.0":[5.304,29.945,-13.892],"5.0417":[5.121,30.02,-13.876],"5.0833":[4.846,30.133,-13.847],"5.125":[4.665,30.611,-13.973],"5.1667":[4.502,32.399,-14.626],"5.2083":[4.651,33.978,-15.216],"5.25":[5.238,36.291,-16.048],"5.2917":[5.606,37.463,-16.471],"5.3333":[5.736,38.73,-17.089],"5.375":[5.6,39.534,-17.497],"5.4167":[5.271,40.767,-17.923],"5.4583":[5.138,41.516,-18.059],"5.5":[5.017,42.325,-18.174],"5.5417":[4.994,42.723,-18.239],"5.5833":[5.066,43.272,-18.353],"5.625":[5.205,43.603,-18.487],"5.6667":[5.473,43.911,-18.597],"5.7083":[5.67,43.966,-18.483],"5.75":[6.031,43.836,-18.02],"5.7917":[6.163,43.455,-17.578],"5.8333":[5.918,41.967,-16.585],"5.875":[5.65,40.836,-15.577],"5.9167":[5.273,39.478,-14.926],"5.9583":[5.018,39.093,-14.988],"6.0":[4.611,38.472,-14.979],"6.0417":[4.344,37.838,-14.888],"6.0833":[4.08,35.982,-14.576],"6.125":[4.1,33.152,-13.939],"6.1667":[3.564,31.051,-11.461],"6.2083":[3.681,31.105,-11.207],"6.25":[4.87,31.64,-13.771],"6.2917":[5.857,31.799,-14.192],"6.3333":[7.496,31.871,-14.503],"6.375":[8.627,31.843,-14.515],"6.4167":[10.282,31.758,-14.296],"6.4583":[11.314,31.717,-14.036],"6.5":[12.723,31.699,-13.572],"6.5417":[13.545,31.891,-13.252],"6.5833":[14.611,32.281,-12.845],"6.625":[14.37,34.728,-13.623],"6.6667":[13.396,38.473,-14.161],"6.7083":[13.244,38.937,-14.043],"6.75":[13.081,39.203,-13.854],"6.7917":[12.945,38.951,-13.675],"6.8333":[12.925,38.833,-13.372],"6.875":[12.932,38.787,-13.179],"6.9167":[12.966,38.753,-12.96],"6.9583":[13.002,38.757,-12.866],"7.0":[13.04,38.789,-12.792],"7.0417":[13.061,38.822,-12.773],"7.0833":[13.08,38.864,-12.767],"7.125":[13.082,38.882,-12.772],"7.1667":[13.079,38.904,-12.79],"7.2083":[13.074,38.916,-12.806],"7.25":[13.065,38.935,-12.831],"7.2917":[13.061,38.948,-12.845]}},"righthand":{"rotation":{"0.0":[113.703,-33.469,-105.341],"0.0417":[111.928,-32.391,-104.414],"0.0833":[108.684,-28.743,-108.435],"0.125":[114.075,-26.867,-116.79],"0.1667":[126.054,-18.253,-132.667],"0.2083":[132.341,-8.673,-142.211],"0.25":[135.581,6.795,-153.174],"0.2917":[134.668,14.927,-157.864],"0.3333":[132.437,23.59,-161.483],"0.375":[132.143,27.979,-161.501],"0.4167":[132.229,30.566,-160.681],"0.4583":[132.403,31.127,-160.465],"0.5":[132.768,31.076,-160.168],"0.5417":[132.981,30.835,-160.044],"0.5833":[133.115,30.765,-160.031],"0.625":[133.141,30.832,-160.094],"0.6667":[133.155,30.932,-160.241],"0.7083":[133.149,30.995,-160.364],"0.75":[133.121,31.078,-160.572],"0.7917":[133.092,31.122,-160.716],"0.8333":[133.038,31.166,-160.924],"0.875":[132.996,31.176,-161.049],"0.9167":[132.93,31.157,-161.197],"0.9583":[132.886,31.119,-161.261],"1.0":[132.818,31.013,-161.296],"1.0417":[132.764,30.904,-161.287],"1.0833":[132.671,30.695,-161.237],"1.125":[132.604,30.531,-161.184],"1.1667":[132.496,30.265,-161.086],"1.2083":[132.423,30.079,-161.013],"1.25":[132.315,29.803,-160.9],"1.2917":[132.245,29.627,-160.829],"1.3333":[132.152,29.391,-160.737],"1.375":[132.086,29.243,-160.69],"1.4167":[131.855,28.909,-160.65],"1.4583":[131.887,28.97,-160.665],"1.5":[134.102,30.191,-160.612],"1.5417":[132.278,39.047,-162.999],"1.5833":[117.178,65.251,-174.327],"1.625":[124.479,70.66,-163.586],"1.6667":[164.444,62.1,-123.324],"1.7083":[178.556,38.659,-113.424],"1.75":[188.664,8.773,-113.394],"1.7917":[191.796,4.692,-115.029],"1.8333":[191.921,2.781,-113.894],"1.875":[191.793,2.664,-111.381],"1.9167":[192.21,2.722,-112.482],"1.9583":[192.476,2.8,-111.133],"2.0":[192.938,1.561,-110.903],"2.0417":[193.055,-0.816,-111.079],"2.0833":[191.372,-7.861,-109.539],"2.125":[188.897,-14.104,-107.887],"2.1667":[182.513,-25.32,-105.734],"2.2083":[176.904,-33.492,-103.869],"2.25":[169.573,-44.951,-100.579],"2.2917":[169.673,-52.407,-103.165],"2.3333":[173.059,-59.155,-108.201],"2.375":[173.765,-61.032,-108.711],"2.4167":[172.236,-62.593,-106.897],"2.4583":[171.271,-63.386,-105.676],"2.5":[169.461,-63.979,-103.501],"2.5417":[168.416,-64.183,-102.22],"2.5833":[167.595,-64.326,-101.057],"2.625":[167.236,-64.361,-100.481],"2.6667":[166.848,-64.433,-99.757],"2.7083":[166.844,-64.484,-99.505],"2.75":[167.123,-64.515,-99.405],"2.7917":[167.409,-64.479,-99.453],"2.8333":[167.894,-64.338,-99.649],"2.875":[168.288,-64.222,-99.893],"2.9167":[168.939,-63.967,-100.266],"2.9583":[169.352,-63.745,-100.441],"3.0":[170.313,-62.716,-100.412],"3.0417":[173.924,-56.51,-102.54],"3.0833":[179.614,-33.132,-107.091],"3.125":[180.604,-12.453,-109.705],"3.1667":[177.964,17.504,-115.944],"3.2083":[174.281,33.451,-121.158],"3.25":[163.752,53.306,-135.999],"3.2917":[149.273,63.591,-153.193],"3.3333":[110.003,69.968,-195.425],"3.375":[84.68,67.523,-222.13],"3.4167":[65.619,60.976,-243.632],"3.4583":[58.892,59.207,-251.587],"3.5":[52.654,59.098,-258.984],"3.5417":[52.164,58.192,-259.876],"3.5833":[53.003,56.998,-259.466],"3.625":[53.174,56.528,-259.577],"3.6667":[52.472,56.479,-260.862],"3.7083":[51.984,56.742,-261.796],"3.75":[51.675,56.962,-262.625],"3.7917":[51.667,56.904,-262.873],"3.8333":[51.782,56.684,-263.035],"3.875":[51.886,56.513,-263.086],"3.9167":[51.968,56.306,-263.225],"3.9583":[51.954,56.193,-263.395],"4.0":[51.89,56.009,-263.688],"4.0417":[51.842,55.892,-263.868],"4.0833":[51.787,55.761,-264.056],"4.125":[51.773,55.732,-264.098],"4.1667":[51.77,55.73,-264.029],"4.2083":[51.775,55.745,-263.918],"4.25":[51.821,55.838,-263.682],"4.2917":[51.935,56.046,-263.423],"4.3333":[52.264,56.578,-262.866],"4.375":[53.111,56.203,-262.319],"4.4167":[56.215,54.561,-260.605],"4.4583":[58.455,53.236,-259.699],"4.5":[60.492,51.645,-259.601],"4.5417":[60.285,51.639,-261.454],"4.5833":[58.313,52.824,-266.927],"4.625":[57.264,53.537,-269.804],"4.6667":[57.841,53.654,-269.315],"4.7083":[58.489,53.547,-268.245],"4.75":[60.105,53.229,-265.637],"4.7917":[61.487,52.875,-263.413],"4.8333":[63.543,52.103,-259.988],"4.875":[64.687,51.456,-257.972],"4.9167":[66.601,49.945,-254.532],"4.9583":[68.189,48.427,-251.576],"5.0":[69.188,46.744,-248.877],"5.0417":[69.03,46.479,-248.513],"5.0833":[68.677,46.973,-248.281],"5.125":[73.198,53.033,-240.284],"5.1667":[126.614,66.975,-177.37],"5.2083":[173.1,51.543,-126.585],"5.25":[192.522,12.248,-107.361],"5.2917":[197.692,-9.056,-106.113],"5.3333":[203.777,-30.934,-106.913],"5.375":[208.139,-41.945,-107.616],"5.4167":[214.309,-53.421,-108.625],"5.4583":[214.625,-57.946,-106.334],"5.5":[209.741,-59.561,-98.687],"5.5417":[213.458,-58.876,-101.727],"5.5833":[219.718,-57.553,-107.488],"5.625":[223.326,-56.397,-110.837],"5.6667":[222.846,-56.045,-109.346],"5.7083":[204.628,-58.361,-90.243],"5.75":[193.48,-46.368,-73.864],"5.7917":[193.937,-20.436,-73.513],"5.8333":[193.596,32.911,-73.958],"5.875":[190.421,69.774,-76.671],"5.9167":[200.427,110.855,-66.384],"5.9583":[198.568,121.612,-67.386],"6.0":[194.976,126.584,-68.646],"6.0417":[192.72,127.157,-69.751],"6.0833":[199.956,130.232,-68.349],"6.125":[227.124,135.377,-65.667],"6.1667":[312.155,107.792,-7.691],"6.2083":[358.998,125.899,31.965],"6.25":[334.46,125.959,6.845],"6.2917":[325.512,131.324,-1.112],"6.3333":[318.919,138.414,-3.959],"6.375":[319.587,140.397,-0.991],"6.4167":[321.901,139.762,1.116],"6.4583":[317.251,138.059,0.228],"6.5":[308.569,137.486,-2.095],"6.5417":[312.549,143.572,-3.026],"6.5833":[318.243,182.309,15.01],"6.625":[307.004,191.494,40.326],"6.6667":[303.699,199.85,55.909],"6.7083":[301.123,204.566,63.642],"6.75":[295.584,210.704,70.827],"6.7917":[294.393,210.666,71.336],"6.8333":[293.168,210.928,72.377],"6.875":[293.031,211.801,73.194],"6.9167":[293.45,213.928,73.86],"6.9583":[293.658,214.487,73.924],"7.0":[293.898,215.25,74.339],"7.0417":[294.032,215.207,74.509],"7.0833":[294.14,214.732,74.637],"7.125":[294.074,214.105,74.716],"7.1667":[293.945,213.71,74.758],"7.2083":[293.849,213.583,74.735],"7.25":[293.732,213.484,74.677],"7.2917":[293.703,213.47,74.661]},"position":{"0.0":[-10.77,38.858,-13.459],"0.0417":[-10.794,38.891,-13.496],"0.0833":[-10.553,38.905,-13.42],"0.125":[-10.542,39.033,-13.223],"0.1667":[-10.809,39.749,-13.047],"0.2083":[-10.985,40.609,-13.147],"0.25":[-11.11,41.901,-13.624],"0.2917":[-11.052,42.759,-14.043],"0.3333":[-10.788,43.683,-14.657],"0.375":[-10.547,44.025,-14.97],"0.4167":[-10.275,44.259,-15.186],"0.4583":[-10.16,44.34,-15.211],"0.5":[-10.058,44.405,-15.192],"0.5417":[-10.018,44.423,-15.168],"0.5833":[-9.972,44.43,-15.154],"0.625":[-9.947,44.425,-15.154],"0.6667":[-9.916,44.408,-15.156],"0.7083":[-9.9,44.39,-15.157],"0.75":[-9.88,44.359,-15.159],"0.7917":[-9.871,44.336,-15.16],"0.8333":[-9.861,44.304,-15.16],"0.875":[-9.856,44.284,-15.159],"0.9167":[-9.852,44.262,-15.154],"0.9583":[-9.851,44.253,-15.149],"1.0":[-9.851,44.251,-15.137],"1.0417":[-9.855,44.255,-15.127],"1.0833":[-9.866,44.267,-15.109],"1.125":[-9.876,44.278,-15.094],"1.1667":[-9.893,44.298,-15.072],"1.2083":[-9.905,44.312,-15.056],"1.25":[-9.924,44.333,-15.033],"1.2917":[-9.936,44.347,-15.018],"1.3333":[-9.952,44.365,-14.999],"1.375":[-9.961,44.374,-14.985],"1.4167":[-9.974,44.371,-14.946],"1.4583":[-9.971,44.369,-14.952],"1.5":[-9.947,44.406,-15.302],"1.5417":[-9.547,44.571,-15.268],"1.5833":[-8.39,44.653,-15.229],"1.625":[-8.013,44.433,-14.833],"1.6667":[-6.373,43.109,-14.331],"1.7083":[-5.369,42.078,-13.463],"1.75":[-3.541,40.292,-11.927],"1.7917":[-2.702,39.678,-10.815],"1.8333":[-2.274,39.478,-9.695],"1.875":[-2.216,39.543,-9.373],"1.9167":[-2.19,39.553,-9.056],"1.9583":[-2.135,39.748,-8.943],"2.0":[-2.041,39.941,-8.965],"2.0417":[-2.005,40.024,-9.005],"2.0833":[-2.041,40.165,-8.942],"2.125":[-2.177,40.242,-8.793],"2.1667":[-2.873,40.224,-8.321],"2.2083":[-3.384,40.148,-7.945],"2.25":[-4.009,40.011,-7.509],"2.2917":[-4.225,39.849,-7.473],"2.3333":[-4.438,39.756,-7.455],"2.375":[-4.552,39.772,-7.396],"2.4167":[-4.663,39.793,-7.317],"2.4583":[-4.717,39.814,-7.286],"2.5":[-4.772,39.846,-7.253],"2.5417":[-4.802,39.867,-7.236],"2.5833":[-4.85,39.894,-7.232],"2.625":[-4.878,39.911,-7.238],"2.6667":[-4.908,39.936,-7.253],"2.7083":[-4.926,39.953,-7.268],"2.75":[-4.95,39.978,-7.297],"2.7917":[-4.963,39.995,-7.317],"2.8333":[-4.975,40.026,-7.347],"2.875":[-4.98,40.051,-7.369],"2.9167":[-4.972,40.096,-7.404],"2.9583":[-4.965,40.124,-7.428],"3.0":[-4.937,40.185,-7.494],"3.0417":[-4.693,40.18,-7.846],"3.0833":[-3.745,39.928,-9.126],"3.125":[-2.983,39.625,-10.26],"3.1667":[-2.177,39.197,-11.836],"3.2083":[-2.333,39.163,-12.46],"3.25":[-4.373,40.775,-12.928],"3.2917":[-6.063,42.194,-13.07],"3.3333":[-7.807,43.879,-13.341],"3.375":[-8.75,44.936,-13.542],"3.4167":[-9.981,46.37,-13.648],"3.4583":[-10.453,46.838,-13.696],"3.5":[-10.787,47.066,-13.796],"3.5417":[-10.982,47.184,-13.781],"3.5833":[-11.21,47.276,-13.735],"3.625":[-11.332,47.295,-13.72],"3.6667":[-11.473,47.29,-13.733],"3.7083":[-11.536,47.272,-13.752],"3.75":[-11.597,47.248,-13.776],"3.7917":[-11.623,47.231,-13.793],"3.8333":[-11.647,47.197,-13.823],"3.875":[-11.655,47.173,-13.843],"3.9167":[-11.656,47.133,-13.872],"3.9583":[-11.649,47.104,-13.889],"4.0":[-11.628,47.056,-13.913],"4.0417":[-11.61,47.022,-13.928],"4.0833":[-11.579,46.974,-13.949],"4.125":[-11.557,46.945,-13.962],"4.1667":[-11.52,46.904,-13.978],"4.2083":[-11.49,46.879,-13.986],"4.25":[-11.442,46.843,-13.994],"4.2917":[-11.407,46.819,-13.993],"4.3333":[-11.342,46.791,-13.958],"4.375":[-11.295,46.775,-13.895],"4.4167":[-11.213,46.745,-13.729],"4.4583":[-11.154,46.719,-13.608],"4.5":[-11.048,46.666,-13.481],"4.5417":[-10.986,46.662,-13.422],"4.5833":[-10.812,46.594,-13.425],"4.625":[-10.709,46.577,-13.434],"4.6667":[-10.664,46.647,-13.429],"4.7083":[-10.661,46.708,-13.429],"4.75":[-10.676,46.761,-13.413],"4.7917":[-10.695,46.738,-13.393],"4.8333":[-10.727,46.646,-13.355],"4.875":[-10.745,46.577,-13.328],"4.9167":[-10.773,46.52,-13.266],"4.9583":[-10.797,46.509,-13.202],"5.0":[-10.803,46.406,-13.138],"5.0417":[-10.787,46.254,-13.128],"5.0833":[-10.618,45.765,-13.102],"5.125":[-10.39,45.277,-13.139],"5.1667":[-9.955,44.734,-13.289],"5.2083":[-9.535,44.463,-13.246],"5.25":[-8.828,43.905,-12.859],"5.2917":[-8.448,43.38,-12.554],"5.3333":[-8.074,42.701,-12.212],"5.375":[-7.918,42.358,-12.03],"5.4167":[-7.799,41.897,-11.772],"5.4583":[-7.779,41.591,-11.569],"5.5":[-7.901,41.02,-11.023],"5.5417":[-8.046,40.513,-10.594],"5.5833":[-8.328,39.801,-9.968],"5.625":[-8.522,39.17,-9.498],"5.6667":[-8.959,37.441,-8.496],"5.7083":[-9.167,34.924,-7.079],"5.75":[-10.089,34.63,-6.478],"5.7917":[-10.464,36.266,-7.335],"5.8333":[-10.433,38.596,-9.965],"5.875":[-10.589,39.865,-11.798],"5.9167":[-10.496,41.643,-13.662],"5.9583":[-10.236,42.707,-14.187],"6.0":[-9.365,43.851,-14.546],"6.0417":[-8.794,44.462,-14.668],"6.0833":[-8.831,45.308,-14.568],"6.125":[-9.922,45.382,-13.826],"6.1667":[-11.761,46.055,-15.854],"6.2083":[-12.849,46.505,-17.076],"6.25":[-13.17,47.278,-16.53],"6.2917":[-13.346,47.605,-16.075],"6.3333":[-13.594,47.678,-15.289],"6.375":[-13.79,47.378,-14.802],"6.4167":[-13.837,46.525,-14.236],"6.4583":[-13.953,46.057,-13.95],"6.5":[-14.249,45.764,-13.888],"6.5417":[-14.579,45.281,-14.058],"6.5833":[-13.142,42.737,-14.206],"6.625":[-13.082,40.503,-13.902],"6.6667":[-11.581,39.178,-13.763],"6.7083":[-10.724,38.409,-13.679],"6.75":[-10.618,37.982,-13.184],"6.7917":[-10.714,38.251,-12.89],"6.8333":[-10.832,38.753,-12.851],"6.875":[-10.841,38.91,-12.955],"6.9167":[-10.814,38.953,-13.102],"6.9583":[-10.796,38.954,-13.179],"7.0":[-10.778,38.899,-13.318],"7.0417":[-10.774,38.872,-13.379],"7.0833":[-10.776,38.855,-13.432],"7.125":[-10.778,38.858,-13.448],"7.1667":[-10.778,38.859,-13.455],"7.2083":[-10.775,38.859,-13.458],"7.25":[-10.771,38.858,-13.459],"7.2917":[-10.77,38.858,-13.458]}},"executor":{"rotation":{"0.0":[-5.077,34.084,81.291],"0.0417":[-2.554,33.625,82.322],"0.0833":[1.424,29.252,77.474],"0.125":[-4.583,23.545,66.85],"0.1667":[-16.487,5.088,49.773],"0.2083":[-22.059,-12.512,42.021],"0.25":[-25.759,-41.747,35.774],"0.2917":[-27.463,-59.422,35.011],"0.3333":[-44.138,-79.509,48.711],"0.375":[-121.354,-83.052,121.905],"0.4167":[-156.781,-79.821,152.272],"0.4583":[-163.073,-80.133,155.896],"0.5":[-170.543,-80.467,159.596],"0.5417":[-174.519,-80.578,161.829],"0.5833":[-179.509,-80.429,166.288],"0.625":[-181.725,-80.17,169.333],"0.6667":[-183.693,-79.674,173.558],"0.7083":[-184.619,-79.312,176.322],"0.75":[-186.241,-78.74,180.898],"0.7917":[-187.303,-78.285,184.732],"0.8333":[-188.516,-77.675,189.534],"0.875":[-189.331,-77.316,191.685],"0.9167":[-190.531,-76.796,194.117],"0.9583":[-191.015,-76.585,194.97],"1.0":[-191.109,-76.608,194.962],"1.0417":[-191.148,-76.763,194.587],"1.0833":[-191.204,-77.156,193.652],"1.125":[-191.163,-77.508,192.772],"1.1667":[-190.898,-78.13,191.123],"1.2083":[-190.517,-78.588,189.807],"1.25":[-189.556,-79.296,187.552],"1.2917":[-188.65,-79.756,185.937],"1.3333":[-186.841,-80.375,183.417],"1.375":[-185.395,-80.702,181.808],"1.4167":[-182.983,-80.871,179.616],"1.4583":[-181.138,-80.917,178.14],"1.5":[-175.111,-84.883,173.253],"1.5417":[-114.874,-88.736,113.607],"1.5833":[-15.837,-83.988,15.334],"1.625":[-27.42,-68.213,27.748],"1.6667":[-57.04,-55.296,56.478],"1.7083":[-70.86,-33.218,66.213],"1.75":[-80.985,-4.11,66.58],"1.7917":[-84.11,-0.033,64.716],"1.8333":[-84.237,1.866,65.77],"1.875":[-84.102,1.966,68.2],"1.9167":[-84.502,1.874,66.925],"1.9583":[-84.757,1.768,68.157],"2.0":[-85.22,2.96,68.201],"2.0417":[-85.369,5.302,67.909],"2.0833":[-83.796,12.329,69.399],"2.125":[-81.407,18.585,71.104],"2.1667":[-75.051,29.856,73.545],"2.2083":[-69.315,38.066,75.756],"2.25":[-61.609,49.541,79.599],"2.2917":[-61.84,57.008,76.82],"2.3333":[-66.093,63.751,70.775],"2.375":[-67.242,65.623,69.774],"2.4167":[-65.909,67.209,71.367],"2.4583":[-65.071,68.023,72.446],"2.5":[-63.326,68.66,74.539],"2.5417":[-62.351,68.895,75.742],"2.5833":[-61.721,69.08,76.686],"2.625":[-61.522,69.144,77.076],"2.6667":[-61.388,69.262,77.518],"2.7083":[-61.591,69.339,77.543],"2.75":[-62.211,69.407,77.268],"2.7917":[-62.717,69.396,76.976],"2.8333":[-63.5,69.294,76.456],"2.875":[-64.089,69.205,76.001],"2.9167":[-64.992,68.991,75.357],"2.9583":[-65.526,68.802,75.055],"3.0":[-66.558,67.818,74.991],"3.0417":[-69.695,61.552,73.158],"3.0833":[-73.579,38.1,69.746],"3.125":[-73.443,17.513,67.666],"3.1667":[-69.638,-12.128,61.889],"3.2083":[-65.616,-27.818,56.992],"3.25":[-55.753,-47.319,43.531],"3.2917":[-43.98,-57.626,29.421],"3.3333":[-14.318,-65.869,-2.71],"3.375":[8.291,-65.889,-26.424],"3.4167":[29.654,-61.934,-49.934],"3.4583":[37.066,-61.196,-58.587],"3.5":[43.334,-62.126,-66.179],"3.5417":[44.076,-61.5,-67.332],"3.5833":[43.423,-60.511,-67.091],"3.625":[43.271,-60.192,-67.225],"3.6667":[43.878,-60.347,-68.457],"3.7083":[44.295,-60.597,-69.322],"3.75":[44.585,-60.715,-70.113],"3.7917":[44.633,-60.649,-70.391],"3.8333":[44.614,-60.487,-70.659],"3.875":[44.582,-60.362,-70.794],"3.9167":[44.602,-60.194,-71.031],"3.9583":[44.67,-60.09,-71.249],"4.0":[44.809,-59.909,-71.607],"4.0417":[44.91,-59.8,-71.834],"4.0833":[45.024,-59.678,-72.075],"4.125":[45.049,-59.651,-72.128],"4.1667":[45.056,-59.648,-72.063],"4.2083":[45.045,-59.662,-71.946],"4.25":[44.956,-59.748,-71.672],"4.2917":[44.745,-59.937,-71.326],"4.3333":[44.157,-60.42,-70.531],"4.375":[43.313,-59.952,-69.938],"4.4167":[40.411,-57.959,-68.228],"4.4583":[38.462,-56.377,-67.467],"4.5":[37.062,-54.577,-67.885],"4.5417":[37.863,-54.654,-70.432],"4.5833":[41.576,-56.174,-78.063],"4.625":[43.918,-57.024,-82.485],"4.6667":[44.038,-57.113,-82.789],"4.7083":[43.209,-56.957,-81.502],"4.75":[41.382,-56.519,-78.618],"4.7917":[39.97,-56.067,-76.323],"4.8333":[37.941,-55.146,-72.854],"4.875":[36.862,-54.417,-70.855],"4.9167":[35.151,-52.766,-67.518],"4.9583":[33.778,-51.133,-64.683],"5.0":[33.044,-49.383,-62.157],"5.0417":[33.256,-49.132,-61.838],"5.0833":[33.537,-49.651,-61.563],"5.125":[27.53,-55.291,-52.264],"5.1667":[-29.409,-64.392,13.628],"5.2083":[-67.715,-46.592,55.86],"5.25":[-85.273,-7.048,72.581],"5.2917":[-90.563,14.227,73.341],"5.3333":[-97.275,36.01,71.752],"5.375":[-102.404,46.908,70.237],"5.4167":[-110.202,58.159,67.585],"5.4583":[-111.211,62.656,69.251],"5.5":[-105.855,64.455,77.569],"5.5417":[-110.215,63.652,73.911],"5.5833":[-117.386,62.08,67.256],"5.625":[-121.392,60.757,63.524],"5.6667":[-121.006,60.455,65.122],"5.7083":[-100.515,63.499,87.117],"5.75":[-87.459,51.687,105.886],"5.7917":[-87.993,25.777,106.269],"5.8333":[-87.744,-27.536,105.86],"5.875":[-85.09,-64.38,103.648],"5.9167":[-97.711,-105.53,116.604],"5.9583":[-94.231,-116.255,114.031],"6.0":[-89.977,-121.176,111.911],"6.0417":[-87.144,-121.803,110.489],"6.0833":[-89.865,-125.019,111.747],"6.125":[-109.954,-130.422,115.988],"6.1667":[-189.738,-122.182,139.935],"6.2083":[-265.039,-131.603,176.817],"6.25":[-306.346,-148.725,178.268],"6.2917":[-333.227,-153.741,173.039],"6.3333":[-377.664,-159.192,170.779],"6.375":[-412.888,-159.027,175.215],"6.4167":[-478.376,-165.933,176.985],"6.4583":[-518.502,-160.88,171.298],"6.5":[-574.408,-154.725,181.348],"6.5417":[-571.998,-164.535,176.935],"6.5833":[-572.996,-185.296,199.695],"6.625":[-560.92,-193.474,225.633],"6.6667":[-556.762,-201.49,241.574],"6.7083":[-553.65,-205.94,249.585],"6.75":[-547.333,-211.516,257.237],"6.7917":[-546.146,-211.365,257.756],"6.8333":[-544.886,-211.508,258.827],"6.875":[-544.633,-212.362,259.707],"6.9167":[-544.76,-214.515,260.531],"6.9583":[-544.888,-215.091,260.639],"7.0":[-545.018,-215.871,261.115],"7.0417":[-545.158,-215.841,261.28],"7.0833":[-545.335,-215.38,261.367],"7.125":[-545.359,-214.751,261.395],"7.1667":[-545.285,-214.346,261.407],"7.2083":[-545.207,-214.21,261.375],"7.25":[-545.104,-214.101,261.31],"7.2917":[-545.077,-214.084,261.293]},"position":{"0.0":[-4.89,54.162,-16.401],"0.0417":[-4.876,54.092,-16.399],"0.0833":[-4.514,53.889,-16.333],"0.125":[-4.103,54.134,-16.259],"0.1667":[-3.406,55.187,-16.135],"0.2083":[-2.87,56.305,-16.031],"0.25":[-2.084,57.973,-15.897],"0.2917":[-1.571,59.045,-15.808],"0.3333":[-0.853,60.259,-15.682],"0.375":[-0.432,60.702,-15.618],"0.4167":[-0.06,60.978,-15.594],"0.4583":[0.073,61.061,-15.602],"0.5":[0.197,61.123,-15.621],"0.5417":[0.24,61.135,-15.634],"0.5833":[0.266,61.135,-15.648],"0.625":[0.27,61.136,-15.655],"0.6667":[0.277,61.133,-15.66],"0.7083":[0.278,61.131,-15.663],"0.75":[0.277,61.128,-15.667],"0.7917":[0.27,61.123,-15.668],"0.8333":[0.261,61.115,-15.669],"0.875":[0.254,61.109,-15.671],"0.9167":[0.242,61.104,-15.668],"0.9583":[0.237,61.099,-15.669],"1.0":[0.235,61.093,-15.672],"1.0417":[0.235,61.09,-15.671],"1.0833":[0.239,61.082,-15.674],"1.125":[0.239,61.079,-15.675],"1.1667":[0.242,61.074,-15.677],"1.2083":[0.245,61.07,-15.677],"1.25":[0.249,61.066,-15.679],"1.2917":[0.251,61.063,-15.68],"1.3333":[0.255,61.061,-15.68],"1.375":[0.256,61.06,-15.68],"1.4167":[0.257,61.061,-15.676],"1.4583":[0.259,61.062,-15.672],"1.5":[0.289,60.898,-15.686],"1.5417":[0.257,60.642,-15.672],"1.5833":[0.326,59.93,-15.68],"1.625":[0.486,59.245,-15.252],"1.6667":[1.845,57.533,-14.53],"1.7083":[3.017,56.621,-13.913],"1.75":[4.956,55.139,-12.499],"1.7917":[5.788,54.619,-11.319],"1.8333":[6.221,54.371,-10.221],"1.875":[6.285,54.324,-9.906],"1.9167":[6.311,54.381,-9.571],"1.9583":[6.373,54.519,-9.445],"2.0":[6.467,54.701,-9.466],"2.0417":[6.503,54.791,-9.534],"2.0833":[6.461,54.883,-9.643],"2.125":[6.301,54.938,-9.68],"2.1667":[5.513,55.014,-9.586],"2.2083":[4.892,55.08,-9.47],"2.25":[4.094,55.201,-9.279],"2.2917":[3.82,55.294,-9.219],"2.3333":[3.575,55.427,-9.095],"2.375":[3.46,55.478,-9.015],"2.4167":[3.335,55.507,-8.958],"2.4583":[3.277,55.528,-8.941],"2.5":[3.214,55.549,-8.935],"2.5417":[3.179,55.559,-8.935],"2.5833":[3.132,55.573,-8.945],"2.625":[3.106,55.582,-8.957],"2.6667":[3.081,55.595,-8.979],"2.7083":[3.067,55.603,-8.995],"2.75":[3.052,55.617,-9.019],"2.7917":[3.048,55.627,-9.038],"2.8333":[3.045,55.647,-9.061],"2.875":[3.045,55.665,-9.08],"2.9167":[3.066,55.701,-9.108],"2.9583":[3.08,55.718,-9.127],"3.0":[3.135,55.727,-9.185],"3.0417":[3.455,55.567,-9.501],"3.0833":[4.588,54.922,-10.576],"3.125":[5.453,54.421,-11.466],"3.1667":[6.339,53.975,-12.684],"3.2083":[6.197,54.021,-13.135],"3.25":[4.129,55.918,-13.435],"3.2917":[2.393,57.54,-13.527],"3.3333":[0.568,59.469,-13.826],"3.375":[-0.422,60.639,-14.088],"3.4167":[-1.729,62.217,-14.281],"3.4583":[-2.239,62.752,-14.298],"3.5":[-2.611,63.051,-14.306],"3.5417":[-2.819,63.183,-14.311],"3.5833":[-3.054,63.278,-14.316],"3.625":[-3.182,63.305,-14.32],"3.6667":[-3.337,63.321,-14.324],"3.7083":[-3.412,63.325,-14.324],"3.75":[-3.486,63.326,-14.336],"3.7917":[-3.518,63.317,-14.355],"3.8333":[-3.549,63.291,-14.394],"3.875":[-3.56,63.271,-14.421],"3.9167":[-3.566,63.239,-14.457],"3.9583":[-3.563,63.215,-14.477],"4.0":[-3.548,63.175,-14.505],"4.0417":[-3.533,63.147,-14.523],"4.0833":[-3.506,63.103,-14.547],"4.125":[-3.484,63.073,-14.561],"4.1667":[-3.445,63.03,-14.577],"4.2083":[-3.413,63.001,-14.584],"4.25":[-3.36,62.957,-14.59],"4.2917":[-3.321,62.929,-14.586],"4.3333":[-3.249,62.891,-14.541],"4.375":[-3.206,62.88,-14.504],"4.4167":[-3.151,62.875,-14.444],"4.4583":[-3.121,62.876,-14.406],"4.5":[-3.066,62.868,-14.366],"4.5417":[-3.053,62.923,-14.302],"4.5833":[-2.998,62.993,-14.23],"4.625":[-2.963,63.045,-14.196],"4.6667":[-2.923,63.116,-14.197],"4.7083":[-2.905,63.159,-14.212],"4.75":[-2.886,63.17,-14.235],"4.7917":[-2.878,63.11,-14.249],"4.8333":[-2.869,62.957,-14.271],"4.875":[-2.862,62.847,-14.285],"4.9167":[-2.852,62.715,-14.306],"4.9583":[-2.847,62.632,-14.32],"5.0":[-2.82,62.445,-14.33],"5.0417":[-2.793,62.273,-14.326],"5.0833":[-2.607,61.772,-14.277],"5.125":[-2.279,61.196,-14.166],"5.1667":[-1.582,60.213,-13.86],"5.2083":[-1.063,59.521,-13.61],"5.25":[-0.331,58.528,-13.235],"5.2917":[0.048,57.938,-13.023],"5.3333":[0.418,57.221,-12.776],"5.375":[0.567,56.818,-12.633],"5.4167":[0.668,56.237,-12.422],"5.4583":[0.666,55.837,-12.303],"5.5":[0.497,55.127,-11.885],"5.5417":[0.362,54.612,-11.368],"5.5833":[0.103,53.92,-10.591],"5.625":[-0.08,53.304,-10.02],"5.6667":[-0.528,51.53,-9.02],"5.7083":[-0.825,48.86,-8.031],"5.75":[-1.953,48.169,-7.578],"5.7917":[-2.397,49.572,-8.128],"5.8333":[-2.343,51.949,-10.039],"5.875":[-2.384,53.567,-11.567],"5.9167":[-2.122,55.847,-13.447],"5.9583":[-1.828,57.001,-14.037],"6.0":[-0.969,58.129,-14.356],"6.0417":[-0.417,58.73,-14.427],"6.0833":[-0.424,59.828,-14.58],"6.125":[-1.679,60.717,-14.664],"6.1667":[-3.179,61.929,-15.7],"6.2083":[-3.499,62.128,-16.691],"6.25":[-3.358,62.443,-17.796],"6.2917":[-3.411,62.868,-18.401],"6.3333":[-3.647,63.575,-19.206],"6.375":[-3.908,64.015,-19.325],"6.4167":[-4.567,64.318,-17.597],"6.4583":[-4.838,64.035,-16.289],"6.5":[-4.882,62.429,-15.167],"6.5417":[-5.154,61.058,-15.129],"6.5833":[-6.133,58.242,-16.874],"6.625":[-6.412,55.416,-16.821],"6.6667":[-5.198,54.135,-16.74],"6.7083":[-4.501,53.457,-16.664],"6.75":[-4.663,53.187,-16.151],"6.7917":[-4.803,53.441,-15.859],"6.8333":[-4.964,53.94,-15.818],"6.875":[-4.983,54.134,-15.914],"6.9167":[-4.959,54.272,-16.039],"6.9583":[-4.938,54.299,-16.109],"7.0":[-4.914,54.278,-16.24],"7.0417":[-4.902,54.252,-16.301],"7.0833":[-4.894,54.217,-16.36],"7.125":[-4.89,54.193,-16.383],"7.1667":[-4.891,54.177,-16.395],"7.2083":[-4.891,54.17,-16.398],"7.25":[-4.89,54.163,-16.401],"7.2917":[-4.89,54.162,-16.4]}},"lefthand_1":{"scale":[1,1.5,1]},"righthand_1":{"rotation":{"5.0417":[0,0,0],"5.5417":[-25,0,0],"6.0":[0,0,0]},"position":{"0.0":[0,2.75,1.5],"0.5417":[-1,2.75,-1.25],"1.4583":[-1,2.75,-1.25],"1.75":[0,2.75,1.5]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.043,0.014,0.064],"0.0417":[0.247,0.088,0.388],"0.0833":[0.5,0.199,0.782],"0.125":[0.477,0.23,0.782],"0.1667":[0.367,0.276,0.782],"0.2083":[0.257,0.304,0.781],"0.25":[0.061,0.342,0.775],"0.2917":[-0.081,0.361,0.773],"0.3333":[-0.28,0.383,0.769],"0.375":[-0.386,0.392,0.765],"0.4167":[-0.504,0.395,0.759],"0.4583":[-0.563,0.392,0.754],"0.5":[-0.657,0.385,0.747],"0.5417":[-0.716,0.378,0.743],"0.5833":[-0.795,0.364,0.735],"0.625":[-0.85,0.354,0.73],"0.6667":[-0.918,0.334,0.723],"0.7083":[-0.967,0.317,0.717],"0.75":[-1.028,0.293,0.708],"0.7917":[-1.065,0.275,0.701],"0.8333":[-1.125,0.249,0.692],"0.875":[-1.162,0.226,0.683],"0.9167":[-1.206,0.195,0.672],"0.9583":[-1.242,0.171,0.663],"1.0":[-1.279,0.132,0.649],"1.0417":[-1.294,0.101,0.641],"1.0833":[-1.308,0.047,0.624],"1.125":[-1.313,-0.003,0.611],"1.1667":[-1.319,-0.065,0.593],"1.2083":[-1.319,-0.101,0.582],"1.25":[-1.322,-0.163,0.563],"1.2917":[-1.327,-0.199,0.548],"1.3333":[-1.338,-0.235,0.529],"1.375":[-1.353,-0.253,0.514],"1.4167":[-1.38,-0.263,0.495],"1.4583":[-1.414,-0.254,0.481],"1.5":[-1.498,-0.217,0.463],"1.5417":[-1.566,-0.184,0.449],"1.5833":[-1.675,-0.147,0.415],"1.625":[-1.751,-0.138,0.384],"1.6667":[-1.869,-0.188,0.296],"1.7083":[-1.955,-0.261,0.216],"1.75":[-2.057,-0.451,0.061],"1.7917":[-2.056,-0.6,-0.167],"1.8333":[-1.919,-0.714,-0.65],"1.875":[-1.808,-0.763,-0.737],"1.9167":[-1.636,-0.805,-0.396],"1.9583":[-1.523,-0.825,-0.079],"2.0":[-1.415,-0.834,-0.029],"2.0417":[-1.397,-0.779,-0.042],"2.0833":[-1.406,-0.638,-0.049],"2.125":[-1.43,-0.516,-0.053],"2.1667":[-1.552,-0.303,-0.066],"2.2083":[-1.672,-0.156,-0.075],"2.25":[-1.84,0.038,-0.091],"2.2917":[-1.934,0.158,-0.105],"2.3333":[-2.08,0.343,-0.13],"2.375":[-2.174,0.453,-0.147],"2.4167":[-2.287,0.569,-0.165],"2.4583":[-2.334,0.594,-0.169],"2.5":[-2.384,0.581,-0.167],"2.5417":[-2.413,0.562,-0.165],"2.5833":[-2.457,0.524,-0.16],"2.625":[-2.486,0.487,-0.155],"2.6667":[-2.522,0.421,-0.147],"2.7083":[-2.544,0.383,-0.141],"2.75":[-2.573,0.317,-0.133],"2.7917":[-2.586,0.265,-0.127],"2.8333":[-2.607,0.205,-0.119],"2.875":[-2.617,0.172,-0.114],"2.9167":[-2.628,0.125,-0.109],"2.9583":[-2.633,0.105,-0.107],"3.0":[-2.633,0.099,-0.106],"3.0417":[-2.614,0.127,-0.106],"3.0833":[-2.522,0.265,-0.107],"3.125":[-2.436,0.404,-0.109],"3.1667":[-2.287,0.626,-0.112],"3.2083":[-2.195,0.771,-0.114],"3.25":[-2.084,0.938,-0.116],"3.2917":[-2.046,1,-0.117],"3.3333":[-2.074,0.98,-0.116],"3.375":[-2.182,0.889,-0.113],"3.4167":[-2.386,0.727,-0.108],"3.4583":[-2.514,0.609,-0.104],"3.5":[-2.632,0.501,-0.101],"3.5417":[-2.675,0.455,-0.099],"3.5833":[-2.718,0.403,-0.098],"3.625":[-2.752,0.375,-0.097],"3.6667":[-2.786,0.333,-0.096],"3.7083":[-2.813,0.305,-0.095],"3.75":[-2.84,0.27,-0.094],"3.7917":[-2.86,0.249,-0.094],"3.8333":[-2.881,0.217,-0.093],"3.875":[-2.896,0.197,-0.093],"3.9167":[-2.912,0.163,-0.092],"3.9583":[-2.918,0.143,-0.092],"4.0":[-2.928,0.103,-0.091],"4.0417":[-2.934,0.077,-0.09],"4.0833":[-2.937,0.03,-0.088],"4.125":[-2.934,-0.006,-0.087],"4.1667":[-2.903,-0.074,-0.086],"4.2083":[-2.85,-0.134,-0.086],"4.25":[-2.742,-0.231,-0.084],"4.2917":[-2.658,-0.299,-0.082],"4.3333":[-2.535,-0.404,-0.075],"4.375":[-2.444,-0.484,-0.061],"4.4167":[-2.265,-0.621,-0.01],"4.4583":[-2.155,-0.711,0.028],"4.5":[-2.045,-0.791,0.081],"4.5417":[-2.052,-0.795,0.111],"4.5833":[-2.232,-0.746,0.144],"4.625":[-2.411,-0.692,0.17],"4.6667":[-2.691,-0.606,0.197],"4.7083":[-2.825,-0.542,0.209],"4.75":[-2.876,-0.479,0.214],"4.7917":[-2.844,-0.435,0.213],"4.8333":[-2.748,-0.36,0.213],"4.875":[-2.664,-0.309,0.213],"4.9167":[-2.513,-0.242,0.212],"4.9583":[-2.403,-0.2,0.211],"5.0":[-2.238,-0.146,0.209],"5.0417":[-2.139,-0.122,0.206],"5.0833":[-2.007,-0.098,0.202],"5.125":[-1.952,-0.101,0.197],"5.1667":[-1.87,-0.137,0.184],"5.2083":[-1.821,-0.186,0.168],"5.25":[-1.757,-0.285,0.142],"5.2917":[-1.714,-0.374,0.121],"5.3333":[-1.66,-0.503,0.084],"5.375":[-1.623,-0.602,0.06],"5.4167":[-1.569,-0.751,0.023],"5.4583":[-1.531,-0.839,0.001],"5.5":[-1.469,-0.975,-0.03],"5.5417":[-1.427,-1.046,-0.05],"5.5833":[-1.365,-1.136,-0.071],"5.625":[-1.316,-1.181,-0.082],"5.6667":[-1.22,-1.2,-0.074],"5.7083":[-1.049,-1.138,0.055],"5.75":[-0.861,-1.035,0.027],"5.7917":[-0.837,-1.001,-0.069],"5.8333":[-0.839,-0.992,0.077],"5.875":[-0.839,-0.974,0.103],"5.9167":[-0.838,-0.915,0.019],"5.9583":[-0.846,-0.889,0.013],"6.0":[-0.91,-0.863,0.008],"6.0417":[-0.988,-0.847,0.008],"6.0833":[-1.145,-0.824,0.009],"6.125":[-1.268,-0.81,0.01],"6.1667":[-1.651,-0.788,0.508],"6.2083":[-2.053,-0.788,0.591],"6.25":[-2.621,-0.808,-0.012],"6.2917":[-2.987,-0.822,0],"6.3333":[-3.523,-0.844,0.055],"6.375":[-3.608,-0.861,0.101],"6.4167":[-3.271,-0.892,0.211],"6.4583":[-2.886,-0.887,0.228],"6.5":[-2.249,-0.772,0.227],"6.5417":[-1.813,-0.652,0.225],"6.5833":[-1.205,-0.469,0.221],"6.625":[-0.877,-0.379,0.215],"6.6667":[-0.531,-0.301,0.129],"6.7083":[-0.367,-0.266,0.023],"6.75":[-0.194,-0.227,-0.123],"6.7917":[-0.1,-0.2,-0.161],"6.8333":[0.012,-0.156,-0.12],"6.875":[0.063,-0.128,-0.06],"6.9167":[0.119,-0.09,0.046],"6.9583":[0.135,-0.068,0.107],"7.0":[0.145,-0.037,0.147],"7.0417":[0.139,-0.019,0.114],"7.0833":[0.113,-0.005,-0.001],"7.125":[0.098,-0.001,-0.064],"7.1667":[0.066,0,-0.058],"7.2083":[0.04,0,-0.02],"7.25":[0.009,0,0.038],"7.2917":[-0.001,0,0.057]}}},"sound_effects":{"0.0":{"effect":"melee.executor.executor_inspect"}}},"inspect_1":{"loop":true,"animation_length":5.368,"override_previous_animation":true,"bones":{"lefthand":{"rotation":{"0.0":[122.245,3.808,135.687],"0.0417":[120.18,4.761,140.724],"0.0833":[119.256,4.617,141.752],"0.125":[119.686,4.623,141.43],"0.1667":[120.351,4.636,140.943],"0.2083":[120.809,4.643,140.615],"0.25":[121.511,4.666,140.119],"0.2917":[121.992,4.68,139.786],"0.3333":[122.737,4.705,139.286],"0.375":[123.241,4.727,138.947],"0.4167":[124.022,4.761,138.439],"0.4583":[124.548,4.786,138.101],"0.5":[125.36,4.829,137.589],"0.5417":[125.913,4.859,137.249],"0.5833":[126.753,4.91,136.737],"0.625":[127.324,4.947,136.394],"0.6667":[128.193,5.008,135.881],"0.7083":[128.782,5.052,135.538],"0.75":[129.678,5.122,135.024],"0.7917":[130.283,5.172,134.682],"0.8333":[131.203,5.252,134.17],"0.875":[131.824,5.309,133.829],"0.9167":[132.765,5.399,133.319],"0.9583":[133.399,5.463,132.98],"1.0":[134.36,5.563,132.473],"1.0417":[135.006,5.634,132.137],"1.0833":[135.984,5.744,131.634],"1.125":[136.641,5.821,131.301],"1.1667":[137.633,5.942,130.805],"1.2083":[138.299,6.026,130.475],"1.25":[139.303,6.157,129.985],"1.2917":[139.976,6.248,129.66],"1.3333":[140.991,6.389,129.176],"1.375":[141.668,6.486,128.855],"1.4167":[142.693,6.636,128.379],"1.4583":[143.375,6.74,128.065],"1.5":[144.405,6.898,127.597],"1.5417":[145.091,7.008,127.287],"1.5833":[146.121,7.177,126.829],"1.625":[146.811,7.29,126.526],"1.6667":[147.843,7.468,126.076],"1.7083":[148.531,7.588,125.779],"1.75":[149.563,7.773,125.339],"1.7917":[150.249,7.898,125.049],"1.8333":[151.278,8.09,124.618],"1.875":[151.962,8.22,124.335],"1.9167":[152.985,8.418,123.914],"1.9583":[153.665,8.552,123.637],"2.0":[154.68,8.756,123.227],"2.0417":[155.354,8.895,122.957],"2.0833":[156.36,9.104,122.557],"2.125":[157.028,9.245,122.293],"2.1667":[158.022,9.46,121.903],"2.2083":[158.68,9.604,121.647],"2.25":[159.661,9.822,121.266],"2.2917":[160.309,9.969,121.016],"2.3333":[161.274,10.191,120.646],"2.375":[161.911,10.339,120.402],"2.4167":[162.858,10.564,120.041],"2.4583":[163.482,10.714,119.803],"2.5":[164.409,10.941,119.451],"2.5417":[165.019,11.092,119.219],"2.5833":[165.924,11.32,118.875],"2.625":[166.518,11.472,118.649],"2.6667":[167.398,11.7,118.313],"2.7083":[167.976,11.853,118.091],"2.75":[168.83,12.081,117.764],"2.7917":[169.389,12.233,117.547],"2.8333":[170.214,12.461,117.225],"2.875":[170.755,12.612,117.013],"2.9167":[171.547,12.839,116.696],"2.9583":[172.067,12.989,116.488],"3.0":[172.827,13.214,116.176],"3.0417":[173.323,13.362,115.971],"3.0833":[174.049,13.585,115.664],"3.125":[174.521,13.733,115.461],"3.1667":[175.209,13.951,115.158],"3.2083":[175.656,14.096,114.958],"3.25":[176.304,14.31,114.657],"3.2917":[176.724,14.453,114.457],"3.3333":[177.331,14.663,114.159],"3.375":[177.722,14.802,113.96],"3.4167":[178.286,15.007,113.663],"3.4583":[178.646,15.142,113.464],"3.5":[179.164,15.341,113.167],"3.5417":[179.493,15.472,112.968],"3.5833":[179.962,15.664,112.67],"3.625":[180.258,15.79,112.471],"3.6667":[180.677,15.975,112.17],"3.7083":[180.938,16.095,111.97],"3.75":[181.304,16.271,111.667],"3.7917":[181.53,16.386,111.464],"3.8333":[181.841,16.552,111.159],"3.875":[182.03,16.66,110.955],"3.9167":[182.282,16.815,110.644],"3.9583":[182.432,16.915,110.436],"4.0":[182.626,17.059,110.122],"4.0417":[182.735,17.15,109.912],"4.0833":[182.867,17.28,109.593],"4.125":[182.935,17.361,109.379],"4.1667":[183.004,17.476,109.055],"4.2083":[183.028,17.547,108.837],"4.25":[183.031,17.646,108.508],"4.2917":[183.011,17.705,108.286],"4.3333":[182.946,17.784,107.953],"4.375":[182.881,17.831,107.727],"4.4167":[182.747,17.889,107.388],"4.4583":[182.634,17.921,107.16],"4.5":[183.178,18.147,106.956],"4.5417":[179.582,17.567,106.519],"4.5833":[117.346,-5.945,121.013],"4.625":[97.774,-9.798,133.937],"4.6667":[113.613,0.687,117.213],"4.7083":[116.454,6.245,116.674],"4.75":[117.792,12.067,122.847],"4.7917":[118.912,12.169,126.109],"4.8333":[120.636,9.613,129.909],"4.875":[121.496,7.827,131.741],"4.9167":[122.342,5.548,133.068],"4.9583":[122.74,4.279,133.4],"5.0":[123.237,3.146,133.909],"5.0417":[123.509,2.762,134.166],"5.0833":[123.78,2.545,134.352],"5.125":[123.807,2.725,134.268],"5.1667":[123.683,3.358,133.936],"5.2083":[123.609,3.658,133.766],"5.25":[123.513,3.928,133.586],"5.2917":[123.438,4.098,133.464],"5.3333":[123.296,4.365,133.26],"5.375":[123.244,4.453,133.19]},"position":{"0.0":[13.068,36.841,-13.303],"0.0417":[13.108,32.844,-13.374],"0.0833":[13.023,30.472,-12.829],"0.125":[13.026,30.462,-12.808],"0.1667":[13.031,30.453,-12.778],"0.2083":[13.034,30.45,-12.757],"0.25":[13.039,30.449,-12.729],"0.2917":[13.041,30.452,-12.71],"0.3333":[13.044,30.46,-12.682],"0.375":[13.046,30.468,-12.664],"0.4167":[13.048,30.483,-12.637],"0.4583":[13.049,30.496,-12.62],"0.5":[13.05,30.52,-12.595],"0.5417":[13.051,30.538,-12.579],"0.5833":[13.05,30.568,-12.555],"0.625":[13.05,30.591,-12.539],"0.6667":[13.048,30.628,-12.516],"0.7083":[13.047,30.655,-12.501],"0.75":[13.044,30.698,-12.479],"0.7917":[13.041,30.729,-12.465],"0.8333":[13.036,30.779,-12.444],"0.875":[13.032,30.813,-12.431],"0.9167":[13.026,30.868,-12.411],"0.9583":[13.021,30.906,-12.397],"1.0":[13.013,30.966,-12.378],"1.0417":[13.007,31.007,-12.365],"1.0833":[12.997,31.071,-12.346],"1.125":[12.99,31.115,-12.334],"1.1667":[12.979,31.184,-12.315],"1.2083":[12.971,31.231,-12.303],"1.25":[12.958,31.303,-12.285],"1.2917":[12.948,31.352,-12.273],"1.3333":[12.933,31.428,-12.255],"1.375":[12.923,31.479,-12.242],"1.4167":[12.906,31.558,-12.225],"1.4583":[12.895,31.611,-12.212],"1.5":[12.877,31.692,-12.194],"1.5417":[12.864,31.748,-12.182],"1.5833":[12.845,31.831,-12.164],"1.625":[12.83,31.888,-12.152],"1.6667":[12.81,31.973,-12.133],"1.7083":[12.795,32.031,-12.12],"1.75":[12.772,32.118,-12.102],"1.7917":[12.757,32.177,-12.089],"1.8333":[12.733,32.265,-12.069],"1.875":[12.716,32.324,-12.056],"1.9167":[12.691,32.414,-12.036],"1.9583":[12.674,32.474,-12.023],"2.0":[12.648,32.564,-12.003],"2.0417":[12.63,32.624,-11.989],"2.0833":[12.603,32.715,-11.968],"2.125":[12.584,32.775,-11.954],"2.1667":[12.556,32.866,-11.932],"2.2083":[12.537,32.926,-11.917],"2.25":[12.508,33.017,-11.895],"2.2917":[12.489,33.077,-11.88],"2.3333":[12.459,33.167,-11.857],"2.375":[12.44,33.227,-11.842],"2.4167":[12.41,33.317,-11.819],"2.4583":[12.39,33.376,-11.803],"2.5":[12.36,33.465,-11.779],"2.5417":[12.34,33.523,-11.763],"2.5833":[12.309,33.611,-11.738],"2.625":[12.289,33.669,-11.722],"2.6667":[12.259,33.755,-11.697],"2.7083":[12.239,33.812,-11.681],"2.75":[12.209,33.897,-11.655],"2.7917":[12.189,33.952,-11.638],"2.8333":[12.159,34.035,-11.613],"2.875":[12.139,34.09,-11.596],"2.9167":[12.111,34.171,-11.57],"2.9583":[12.091,34.224,-11.553],"3.0":[12.063,34.304,-11.527],"3.0417":[12.044,34.355,-11.51],"3.0833":[12.016,34.432,-11.485],"3.125":[11.998,34.483,-11.468],"3.1667":[11.971,34.557,-11.442],"3.2083":[11.954,34.606,-11.425],"3.25":[11.928,34.678,-11.4],"3.2917":[11.912,34.725,-11.383],"3.3333":[11.887,34.794,-11.359],"3.375":[11.871,34.839,-11.342],"3.4167":[11.848,34.906,-11.318],"3.4583":[11.833,34.949,-11.302],"3.5":[11.812,35.013,-11.279],"3.5417":[11.798,35.054,-11.264],"3.5833":[11.778,35.114,-11.241],"3.625":[11.765,35.154,-11.226],"3.6667":[11.747,35.211,-11.205],"3.7083":[11.736,35.248,-11.191],"3.75":[11.72,35.302,-11.171],"3.7917":[11.71,35.337,-11.158],"3.8333":[11.695,35.387,-11.139],"3.875":[11.687,35.42,-11.127],"3.9167":[11.675,35.467,-11.11],"3.9583":[11.668,35.497,-11.099],"4.0":[11.658,35.54,-11.083],"4.0417":[11.652,35.568,-11.073],"4.0833":[11.645,35.607,-11.059],"4.125":[11.641,35.633,-11.05],"4.1667":[11.636,35.668,-11.038],"4.2083":[11.634,35.691,-11.031],"4.25":[11.632,35.722,-11.021],"4.2917":[11.631,35.742,-11.016],"4.3333":[11.632,35.769,-11.008],"4.375":[11.633,35.786,-11.004],"4.4167":[11.637,35.81,-10.998],"4.4583":[11.64,35.823,-10.996],"4.5":[11.619,35.87,-10.969],"4.5417":[11.778,35.773,-11.068],"4.5833":[14.156,32.936,-12.472],"4.625":[14.587,33.173,-13.391],"4.6667":[13.641,38.596,-14.181],"4.7083":[13.215,39.4,-14.008],"4.75":[12.992,39.079,-13.767],"4.7917":[12.928,38.802,-13.578],"4.8333":[12.909,38.548,-13.276],"4.875":[12.918,38.448,-13.095],"4.9167":[12.969,38.436,-12.871],"4.9583":[13.012,38.485,-12.757],"5.0":[13.057,38.596,-12.661],"5.0417":[13.08,38.699,-12.635],"5.0833":[13.104,38.836,-12.628],"5.125":[13.107,38.89,-12.649],"5.1667":[13.098,38.939,-12.713],"5.2083":[13.091,38.957,-12.745],"5.25":[13.081,38.963,-12.777],"5.2917":[13.074,38.961,-12.799],"5.3333":[13.064,38.952,-12.834],"5.375":[13.061,38.948,-12.845]}},"righthand":{"rotation":{"0.0":[113.702,-33.469,-105.34],"0.0417":[108.842,-41.242,-108.738],"0.0833":[116.819,-52.776,-114.037],"0.125":[125.72,-36.652,-128.352],"0.1667":[137.016,-9.274,-147.775],"0.2083":[149.96,-5.277,-150.996],"0.25":[160.804,-10.351,-142.132],"0.2917":[155.819,-12.625,-135.329],"0.3333":[149.819,-0.828,-133.861],"0.375":[149.544,15.801,-135.907],"0.4167":[141.345,48.091,-149.101],"0.4583":[123.415,68.808,-170.256],"0.5":[14.434,71.554,-283.326],"0.5417":[2.505,62.423,-294.86],"0.5833":[5.097,62.27,-290.916],"0.625":[4.739,60.852,-290.561],"0.6667":[3.785,58.924,-290.479],"0.7083":[4.482,58.719,-288.948],"0.75":[8.879,59.226,-283.389],"0.7917":[10.732,59.291,-281.095],"0.8333":[11.514,59.425,-279.797],"0.875":[11.779,59.559,-279.209],"0.9167":[10.413,59.474,-280.396],"0.9583":[9.138,59.398,-281.651],"1.0":[8.386,59.539,-282.437],"1.0417":[8.639,59.793,-282.244],"1.0833":[9.258,60.244,-281.748],"1.125":[9.433,60.533,-281.639],"1.1667":[9.453,60.736,-281.91],"1.2083":[9.282,60.913,-282.378],"1.25":[7.535,62.198,-284.388],"1.2917":[2.646,64.998,-289.25],"1.3333":[-10.819,69.921,-302.525],"1.375":[-20.606,72.034,-312.211],"1.4167":[-31.073,73.733,-322.517],"1.4583":[-36.365,74.434,-327.738],"1.5":[-43.241,74.922,-334.523],"1.5417":[-46.472,75.011,-337.713],"1.5833":[-49.27,75.056,-340.475],"1.625":[-50.511,75.063,-341.7],"1.6667":[-51.451,75.064,-342.628],"1.7083":[-51.683,75.064,-342.857],"1.75":[-51.943,75.064,-343.114],"1.7917":[-52.274,75.062,-343.44],"1.8333":[-52.721,75.06,-343.883],"1.875":[-53.019,75.058,-344.176],"1.9167":[-53.34,75.056,-344.493],"1.9583":[-53.531,75.052,-344.682],"2.0":[-68.359,79.893,-359.333],"2.0417":[-206.048,73.322,-499.021],"2.0833":[-207.797,3.883,-512.612],"2.125":[-206.549,-47.35,-501.404],"2.1667":[-214.686,-78.129,-471.309],"2.2083":[-217.973,-79.701,-451.94],"2.25":[-212.523,-76.195,-445.898],"2.2917":[-211.532,-77.022,-443.134],"2.3333":[-213.658,-78.71,-437.619],"2.375":[-218.333,-79.052,-431.51],"2.4167":[-220.89,-79.022,-427.588],"2.4583":[-222.303,-79.025,-425.542],"2.5":[-223.453,-79.009,-423.77],"2.5417":[-224.083,-79,-422.899],"2.5833":[-224.84,-78.999,-422.022],"2.625":[-225.298,-78.979,-421.521],"2.6667":[-228.273,-75.173,-418.612],"2.7083":[-229.684,-68.587,-417.495],"2.75":[-230.087,-57.702,-417.963],"2.7917":[-229.52,-50.473,-418.691],"2.8333":[-229.478,-46.264,-419.165],"2.875":[-229.635,-45.346,-419.111],"2.9167":[-229.864,-44.579,-418.896],"2.9583":[-229.971,-43.96,-418.825],"3.0":[-230.103,-43.268,-418.661],"3.0417":[-230.168,-43.039,-418.557],"3.0833":[-230.244,-42.94,-418.454],"3.125":[-230.264,-42.942,-418.409],"3.1667":[-230.217,-43.111,-418.369],"3.2083":[-230.109,-43.384,-418.361],"3.25":[-229.807,-44.116,-418.385],"3.2917":[-229.492,-44.878,-418.431],"3.3333":[-228.686,-46.37,-418.649],"3.375":[-228.85,-48.751,-418.513],"3.4167":[-233.197,-56.821,-417.563],"3.4583":[-236.666,-62.617,-417.607],"3.5":[-241.109,-71.39,-417.684],"3.5417":[-242.541,-75.854,-418.825],"3.5833":[-241.742,-79.64,-421.484],"3.625":[-240.251,-82.091,-423.812],"3.6667":[-234.31,-84.446,-430.492],"3.7083":[-231.217,-84.614,-433.849],"3.75":[-228.843,-84.446,-436.414],"3.7917":[-225.631,-84.896,-439.697],"3.8333":[-222.775,-85.217,-442.68],"3.875":[-220.532,-85.343,-444.985],"3.9167":[-217.201,-85.467,-448.359],"3.9583":[-215.491,-85.452,-450.061],"4.0":[-213.405,-85.183,-452.103],"4.0417":[-213.257,-84.738,-452.196],"4.0833":[-215.247,-83.418,-450.129],"4.125":[-210.105,-81.747,-454.885],"4.1667":[-175.584,-27.79,-473.512],"4.2083":[-170.225,17.216,-486.221],"4.25":[-250.904,70.611,-572.81],"4.2917":[-276.621,53.542,-595.713],"4.3333":[-259.234,43.458,-565.248],"4.375":[-245.917,42.952,-552.515],"4.4167":[-238.134,35.237,-540.955],"4.4583":[-232.74,23.969,-535.861],"4.5":[-229.588,8.717,-528.392],"4.5417":[-232.599,-3.83,-520.345],"4.5833":[-245.7,-28.642,-491.467],"4.625":[-244.289,-30.32,-481.745],"4.6667":[-247.511,-35.156,-473.988],"4.7083":[-248.213,-39.035,-466.421],"4.75":[-254.226,-32.335,-466.768],"4.7917":[-252.136,-32.215,-467.335],"4.8333":[-248.881,-32.27,-467.025],"4.875":[-247.614,-32.661,-466.58],"4.9167":[-246.956,-33.056,-465.418],"4.9583":[-246.75,-33.247,-464.839],"5.0":[-246.629,-33.42,-464.271],"5.0417":[-246.613,-33.442,-464.218],"5.0833":[-246.558,-33.445,-464.433],"5.125":[-246.493,-33.45,-464.654],"5.1667":[-246.391,-33.458,-465.014],"5.2083":[-246.334,-33.466,-465.207],"5.25":[-246.297,-33.468,-465.342],"5.2917":[-246.299,-33.471,-465.339],"5.3333":[-246.299,-33.472,-465.338],"5.375":[-246.298,-33.47,-465.337]},"position":{"0.0":[-10.77,38.858,-13.459],"0.0417":[-11.169,38.454,-13.506],"0.0833":[-11.861,37.353,-13.663],"0.125":[-10.934,37.95,-13.683],"0.1667":[-9.753,39.77,-14.69],"0.2083":[-8.555,40.055,-14.719],"0.25":[-8.008,41.615,-14.237],"0.2917":[-7.42,43.362,-14.16],"0.3333":[-8.12,44.234,-14.218],"0.375":[-8.438,43.313,-14.841],"0.4167":[-8.619,41.961,-14.885],"0.4583":[-8.688,41.175,-14.886],"0.5":[-8.563,39.743,-15.063],"0.5417":[-8.66,38.966,-14.987],"0.5833":[-9.144,38.432,-14.833],"0.625":[-9.302,38.398,-14.743],"0.6667":[-9.445,38.53,-14.641],"0.7083":[-9.518,38.64,-14.584],"0.75":[-9.614,38.802,-14.433],"0.7917":[-9.641,38.884,-14.359],"0.8333":[-9.648,38.977,-14.323],"0.875":[-9.647,39.02,-14.317],"0.9167":[-9.622,39.023,-14.354],"0.9583":[-9.598,39.014,-14.398],"1.0":[-9.57,39.007,-14.44],"1.0417":[-9.556,39.008,-14.452],"1.0833":[-9.538,39.015,-14.466],"1.125":[-9.525,39.018,-14.479],"1.1667":[-9.488,39.015,-14.488],"1.2083":[-9.454,39.012,-14.502],"1.25":[-9.438,38.904,-14.487],"1.2917":[-9.517,38.372,-14.064],"1.3333":[-9.679,37.27,-13.109],"1.375":[-9.74,36.755,-12.654],"1.4167":[-9.76,36.47,-12.454],"1.4583":[-9.756,36.427,-12.468],"1.5":[-9.748,36.365,-12.475],"1.5417":[-9.746,36.318,-12.47],"1.5833":[-9.744,36.288,-12.475],"1.625":[-9.743,36.292,-12.46],"1.6667":[-9.744,36.298,-12.423],"1.7083":[-9.745,36.302,-12.394],"1.75":[-9.75,36.31,-12.358],"1.7917":[-9.755,36.319,-12.343],"1.8333":[-9.76,36.33,-12.325],"1.875":[-9.763,36.344,-12.316],"1.9167":[-9.775,36.383,-12.306],"1.9583":[-9.79,36.429,-12.303],"2.0":[-10.018,36.766,-12.427],"2.0417":[-10.745,37.612,-12.322],"2.0833":[-12.014,39.473,-12.007],"2.125":[-13.161,41.435,-11.317],"2.1667":[-13.896,43.916,-11.214],"2.2083":[-14.32,46.076,-11.221],"2.25":[-14.235,47.19,-11.552],"2.2917":[-14.163,47.646,-11.596],"2.3333":[-14.074,48.089,-11.594],"2.375":[-13.964,48.336,-11.547],"2.4167":[-13.865,48.55,-11.547],"2.4583":[-13.817,48.665,-11.537],"2.5":[-13.776,48.786,-11.527],"2.5417":[-13.765,48.832,-11.523],"2.5833":[-13.782,48.856,-11.518],"2.625":[-13.791,48.873,-11.514],"2.6667":[-13.723,49.014,-11.427],"2.7083":[-13.62,49.213,-11.319],"2.75":[-13.461,49.553,-11.209],"2.7917":[-13.356,49.824,-11.201],"2.8333":[-13.304,50.055,-11.198],"2.875":[-13.294,50.171,-11.191],"2.9167":[-13.284,50.305,-11.181],"2.9583":[-13.271,50.362,-11.178],"3.0":[-13.25,50.423,-11.174],"3.0417":[-13.239,50.451,-11.171],"3.0833":[-13.227,50.476,-11.167],"3.125":[-13.22,50.486,-11.167],"3.1667":[-13.213,50.491,-11.172],"3.2083":[-13.209,50.484,-11.181],"3.25":[-13.209,50.457,-11.205],"3.2917":[-13.212,50.427,-11.227],"3.3333":[-13.217,50.372,-11.279],"3.375":[-13.257,50.201,-11.287],"3.4167":[-13.55,49.37,-11.175],"3.4583":[-13.883,48.758,-11.126],"3.5":[-14.433,47.85,-11.238],"3.5417":[-14.699,47.486,-11.267],"3.5833":[-14.995,46.957,-11.431],"3.625":[-15.135,46.732,-11.52],"3.6667":[-15.259,46.521,-11.64],"3.7083":[-15.302,46.456,-11.672],"3.75":[-15.358,46.403,-11.697],"3.7917":[-15.4,46.362,-11.735],"3.8333":[-15.449,46.309,-11.771],"3.875":[-15.473,46.284,-11.794],"3.9167":[-15.505,46.267,-11.827],"3.9583":[-15.529,46.271,-11.845],"4.0":[-15.56,46.286,-11.867],"4.0417":[-15.569,46.304,-11.873],"4.0833":[-15.584,46.353,-11.868],"4.125":[-15.699,46.352,-12.099],"4.1667":[-16.111,46.553,-14.184],"4.2083":[-14.865,43.872,-16.247],"4.25":[-13.727,39.854,-13.869],"4.2917":[-13.953,40.162,-11.861],"4.3333":[-13.126,40.991,-9.93],"4.375":[-12.337,41.384,-10.477],"4.4167":[-11.194,42.186,-10.252],"4.4583":[-10.71,42.062,-9.831],"4.5":[-10.938,42.53,-10.155],"4.5417":[-10.519,42.665,-10.01],"4.5833":[-9.82,42.278,-11.329],"4.625":[-10.32,41.064,-12.61],"4.6667":[-10.659,39.618,-13.588],"4.7083":[-11.142,38.077,-14.073],"4.75":[-11.341,38.311,-13.083],"4.7917":[-11.25,38.491,-13.186],"4.8333":[-11.026,38.768,-13.33],"4.875":[-10.94,38.957,-13.361],"4.9167":[-10.858,39.031,-13.402],"4.9583":[-10.833,39.017,-13.43],"5.0":[-10.821,38.97,-13.462],"5.0417":[-10.813,38.927,-13.47],"5.0833":[-10.801,38.843,-13.474],"5.125":[-10.795,38.788,-13.476],"5.1667":[-10.784,38.749,-13.476],"5.2083":[-10.771,38.765,-13.473],"5.25":[-10.756,38.81,-13.467],"5.2917":[-10.76,38.832,-13.463],"5.3333":[-10.769,38.855,-13.459],"5.375":[-10.77,38.858,-13.459]}},"executor":{"rotation":{"0.0":[-5.076,34.084,81.293],"0.0417":[-0.798,38.746,76.615],"0.0833":[-2.747,53.838,74.474],"0.125":[8.442,58.438,71.945],"0.1667":[62.221,79.662,94.236],"0.2083":[184.36,67.764,193.004],"0.25":[223.366,48.945,193.362],"0.2917":[242.666,51.775,186.144],"0.3333":[289.525,65.119,181.243],"0.375":[329.983,75.678,189.215],"0.4167":[304.209,79.499,145.068],"0.4583":[275.347,77.662,111.176],"0.5":[255.215,73.838,87.318],"0.5417":[252.147,71.927,85.26],"0.5833":[253.298,70.66,87.776],"0.625":[251.54,69.364,86.794],"0.6667":[248.795,67.651,85.146],"0.7083":[249.558,67.357,86.786],"0.75":[255.555,67.194,94.108],"0.7917":[257.922,66.965,96.991],"0.8333":[258.996,66.969,98.605],"0.875":[259.432,67.053,99.365],"0.9167":[257.673,67.195,97.734],"0.9583":[256.016,67.323,96.048],"1.0":[255.178,67.572,95.136],"1.0417":[255.703,67.775,95.596],"1.0833":[256.859,68.108,96.628],"1.125":[257.327,68.355,97.02],"1.1667":[257.529,68.544,96.919],"1.2083":[257.469,68.738,96.545],"1.25":[256.434,70.226,95.101],"1.2917":[252.941,73.6,91.298],"1.3333":[239.036,79.999,76.918],"1.375":[222.167,82.922,59.798],"1.4167":[193.907,84.827,31.391],"1.4583":[175.79,85.2,13.208],"1.5":[154.464,84.824,-8.191],"1.5417":[146.68,84.402,-16.01],"1.5833":[140.914,83.974,-21.806],"1.625":[138.642,83.765,-24.091],"1.6667":[137.015,83.602,-25.727],"1.7083":[136.628,83.56,-26.117],"1.75":[136.193,83.514,-26.554],"1.7917":[135.665,83.455,-27.086],"1.8333":[134.952,83.373,-27.804],"1.875":[134.489,83.319,-28.27],"1.9167":[133.993,83.259,-28.769],"1.9583":[133.717,83.222,-29.047],"2.0":[85.413,82.686,-77.188],"2.0417":[24.105,62.19,-139.926],"2.0833":[23.2,-7.251,-152.7],"2.125":[24.941,-58.482,-142.022],"2.1667":[-40.821,-88.518,-54.05],"2.2083":[-96.796,-88.004,18.047],"2.25":[1.433,-87.178,-68.76],"2.2917":[0.531,-88.036,-64.13],"2.3333":[-61.705,-88.933,1.526],"2.375":[-77.774,-88.058,19.111],"2.4167":[-77.193,-87.57,19.943],"2.4583":[-77.548,-87.304,20.956],"2.5":[-77.542,-87.084,21.594],"2.5417":[-77.574,-86.963,21.877],"2.5833":[-77.814,-86.82,22.251],"2.625":[-77.636,-86.729,22.124],"2.6667":[-37.698,-84.958,-17.732],"2.7083":[-15.123,-79.7,-40.426],"2.75":[-5.168,-69.957,-51.097],"2.7917":[-1.896,-63.209,-54.517],"2.8333":[-0.891,-59.285,-55.957],"2.875":[-0.829,-58.499,-56.135],"2.9167":[-0.835,-57.906,-56.161],"2.9583":[-0.798,-57.388,-56.246],"3.0":[-0.758,-56.821,-56.271],"3.0417":[-0.75,-56.661,-56.25],"3.0833":[-0.742,-56.64,-56.249],"3.125":[-0.73,-56.682,-56.242],"3.1667":[-0.636,-56.89,-56.266],"3.2083":[-0.487,-57.176,-56.319],"3.25":[-0.137,-57.913,-56.425],"3.2917":[0.224,-58.669,-56.552],"3.3333":[1.2,-60.146,-57.019],"3.375":[0.707,-62.45,-56.539],"3.4167":[-7.904,-69.932,-51.028],"3.4583":[-17.571,-74.92,-44.754],"3.5":[-43.395,-81.627,-23.519],"3.5417":[-70.406,-83.925,0.778],"3.5833":[-99.461,-84.427,27.785],"3.625":[-118.115,-84.032,45.458],"3.6667":[-134.452,-83.401,60.881],"3.7083":[-136.701,-83.503,62.831],"3.75":[-137.849,-83.77,63.775],"3.7917":[-142.855,-83.571,68.668],"3.8333":[-146.795,-83.382,72.451],"3.875":[-148.665,-83.341,74.239],"3.9167":[-151.176,-83.305,76.679],"3.9583":[-152.28,-83.35,77.778],"4.0":[-153.319,-83.647,78.848],"4.0417":[-152.759,-84.086,78.346],"4.0833":[-147.334,-85.327,73.03],"4.125":[-71.544,-91.666,-0.218],"4.1667":[-109.333,-156.957,59.393],"4.2083":[-102.575,-209.078,48.323],"4.25":[-229.384,-243.792,-90.193],"4.2917":[-237.073,-222.622,-99.322],"4.3333":[-277.681,-213.987,-100.836],"4.375":[-318.548,-211.032,-107.848],"4.4167":[-363.635,-208.096,-105.024],"4.4583":[-387.977,-211.374,-101.568],"4.5":[-425.377,-216.467,-93.803],"4.5417":[-456.006,-220.826,-95.869],"4.5833":[-506.231,-212.278,-105.826],"4.625":[-530.833,-210.747,-103.248],"4.6667":[-541.258,-216.107,-98.742],"4.7083":[-542.445,-219.374,-96.299],"4.75":[-537.336,-212.192,-100.209],"4.7917":[-539.428,-212.274,-100.776],"4.8333":[-542.661,-212.644,-100.467],"4.875":[-543.873,-213.155,-100],"4.9167":[-544.476,-213.611,-98.813],"4.9583":[-544.655,-213.821,-98.22],"5.0":[-544.752,-214.004,-97.64],"5.0417":[-544.765,-214.028,-97.586],"5.0833":[-544.82,-214.035,-97.801],"5.125":[-544.884,-214.046,-98.022],"5.1667":[-544.986,-214.065,-98.382],"5.2083":[-545.041,-214.077,-98.576],"5.25":[-545.077,-214.084,-98.71],"5.2917":[-545.076,-214.086,-98.708],"5.3333":[-545.075,-214.087,-98.706],"5.375":[-545.077,-214.085,-98.706]},"position":{"0.0":[-4.89,54.163,-16.4],"0.0417":[-5.074,54.059,-16.37],"0.0833":[-5.67,53.492,-16.173],"0.125":[-4.721,52.813,-16.011],"0.1667":[-1.94,53.098,-16.32],"0.2083":[0.987,53.419,-16.8],"0.25":[2.728,56.348,-17.01],"0.2917":[3.439,58.313,-16.902],"0.3333":[3.328,60.569,-16.656],"0.375":[2.878,61.251,-16.44],"0.4167":[1.614,60.834,-16.053],"0.4583":[0.803,60.13,-15.842],"0.5":[-0.279,58.654,-15.617],"0.5417":[-0.687,57.812,-15.528],"0.5833":[-1.017,57.223,-15.485],"0.625":[-1.125,57.16,-15.46],"0.6667":[-1.198,57.248,-15.43],"0.7083":[-1.207,57.319,-15.406],"0.75":[-1.196,57.406,-15.36],"0.7917":[-1.184,57.457,-15.336],"0.8333":[-1.153,57.524,-15.314],"0.875":[-1.129,57.552,-15.307],"0.9167":[-1.098,57.556,-15.312],"0.9583":[-1.079,57.554,-15.323],"1.0":[-1.058,57.554,-15.335],"1.0417":[-1.047,57.559,-15.341],"1.0833":[-1.035,57.57,-15.346],"1.125":[-1.026,57.577,-15.348],"1.1667":[-1.008,57.588,-15.346],"1.2083":[-0.996,57.599,-15.345],"1.25":[-1.009,57.52,-15.21],"1.2917":[-1.118,57.015,-14.506],"1.3333":[-1.35,55.911,-12.99],"1.375":[-1.456,55.367,-12.237],"1.4167":[-1.512,55.033,-11.772],"1.4583":[-1.522,54.962,-11.67],"1.5":[-1.535,54.863,-11.538],"1.5417":[-1.544,54.799,-11.47],"1.5833":[-1.551,54.753,-11.421],"1.625":[-1.555,54.75,-11.383],"1.6667":[-1.559,54.751,-11.327],"1.7083":[-1.561,54.753,-11.294],"1.75":[-1.567,54.759,-11.253],"1.7917":[-1.573,54.766,-11.232],"1.8333":[-1.579,54.775,-11.205],"1.875":[-1.583,54.787,-11.19],"1.9167":[-1.596,54.824,-11.174],"1.9583":[-1.613,54.869,-11.168],"2.0":[-1.727,55.102,-11.212],"2.0417":[-2.029,55.777,-11.406],"2.0833":[-2.895,57.528,-11.916],"2.125":[-3.417,58.78,-12.326],"2.1667":[-3.687,60.039,-12.929],"2.2083":[-3.897,61.007,-12.986],"2.25":[-3.838,61.166,-13.22],"2.2917":[-3.815,61.353,-13.252],"2.3333":[-3.795,61.575,-13.295],"2.375":[-3.737,61.721,-13.318],"2.4167":[-3.682,61.835,-13.357],"2.4583":[-3.657,61.904,-13.367],"2.5":[-3.637,61.981,-13.374],"2.5417":[-3.636,62.01,-13.379],"2.5833":[-3.659,62.025,-13.385],"2.625":[-3.672,62.04,-13.388],"2.6667":[-3.658,62.107,-13.391],"2.7083":[-3.64,62.181,-13.392],"2.75":[-3.613,62.32,-13.393],"2.7917":[-3.597,62.421,-13.393],"2.8333":[-3.588,62.574,-13.393],"2.875":[-3.591,62.673,-13.394],"2.9167":[-3.595,62.788,-13.397],"2.9583":[-3.593,62.831,-13.399],"3.0":[-3.585,62.872,-13.402],"3.0417":[-3.581,62.89,-13.402],"3.0833":[-3.571,62.912,-13.402],"3.125":[-3.566,62.92,-13.403],"3.1667":[-3.557,62.925,-13.405],"3.2083":[-3.551,62.919,-13.408],"3.25":[-3.542,62.895,-13.416],"3.2917":[-3.533,62.87,-13.422],"3.3333":[-3.515,62.821,-13.431],"3.375":[-3.522,62.711,-13.445],"3.4167":[-3.672,62.297,-13.486],"3.4583":[-3.874,62.084,-13.487],"3.5":[-4.25,61.739,-13.533],"3.5417":[-4.432,61.681,-13.464],"3.5833":[-4.669,61.38,-13.504],"3.625":[-4.775,61.272,-13.505],"3.6667":[-4.866,61.164,-13.514],"3.7083":[-4.9,61.123,-13.522],"3.75":[-4.952,61.08,-13.532],"3.7917":[-4.984,61.055,-13.541],"3.8333":[-5.026,61.018,-13.554],"3.875":[-5.045,61.001,-13.563],"3.9167":[-5.071,60.991,-13.574],"3.9583":[-5.093,60.994,-13.582],"4.0":[-5.12,61.001,-13.59],"4.0417":[-5.128,61.006,-13.593],"4.0833":[-5.146,61.018,-13.601],"4.125":[-5.203,61.013,-13.649],"4.1667":[-5.673,58.021,-15.571],"4.2083":[-6.383,61,-13.917],"4.25":[-7.288,59.409,-15.129],"4.2917":[-7.492,59.248,-15.273],"4.3333":[-3.964,59.806,-14.871],"4.375":[-1.276,59.996,-14.354],"4.4167":[0.243,59.871,-12.625],"4.4583":[0.42,59.608,-11.936],"4.5":[-0.819,59.077,-12.101],"4.5417":[-1.997,58.555,-12.612],"4.5833":[-3.288,57.114,-14.241],"4.625":[-4.048,55.984,-15.565],"4.6667":[-4.75,54.856,-16.544],"4.7083":[-5.356,53.564,-16.965],"4.75":[-5.779,53.46,-16.022],"4.7917":[-5.609,53.662,-16.134],"4.8333":[-5.252,53.987,-16.284],"4.875":[-5.117,54.209,-16.311],"4.9167":[-5.002,54.31,-16.349],"4.9583":[-4.964,54.309,-16.374],"5.0":[-4.943,54.271,-16.404],"5.0417":[-4.934,54.23,-16.412],"5.0833":[-4.923,54.146,-16.417],"5.125":[-4.916,54.091,-16.418],"5.1667":[-4.905,54.052,-16.418],"5.2083":[-4.891,54.069,-16.415],"5.25":[-4.876,54.114,-16.409],"5.2917":[-4.88,54.136,-16.405],"5.3333":[-4.889,54.159,-16.401],"5.375":[-4.89,54.162,-16.401]}},"lefthand_1":{"scale":[1,1.5,1]},"righthand_1":{"position":{"0.0":[0,2.75,1.5],"0.7083":[-0.2,4,-1.75],"4.125":[-0.2,4,-1.75],"4.5833":[0,2.75,1.5]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.047,0.021,0.065],"0.0417":[0.271,0.138,0.411],"0.0833":[0.544,0.277,0.825],"0.125":[0.408,0.233,0.824],"0.1667":[-0.079,0.066,0.83],"0.2083":[-0.39,-0.053,0.83],"0.25":[-0.672,-0.213,0.838],"0.2917":[-0.819,-0.333,0.844],"0.3333":[-1.003,-0.509,0.856],"0.375":[-1.106,-0.61,0.862],"0.4167":[-1.263,-0.696,0.869],"0.4583":[-1.365,-0.699,0.869],"0.5":[-1.514,-0.628,0.865],"0.5417":[-1.588,-0.55,0.859],"0.5833":[-1.639,-0.423,0.845],"0.625":[-1.613,-0.347,0.834],"0.6667":[-1.517,-0.205,0.812],"0.7083":[-1.421,-0.107,0.795],"0.75":[-1.273,0.023,0.773],"0.7917":[-1.186,0.1,0.76],"0.8333":[-1.062,0.202,0.743],"0.875":[-0.984,0.262,0.733],"0.9167":[-0.862,0.336,0.719],"0.9583":[-0.784,0.365,0.712],"1.0":[-0.689,0.377,0.701],"1.0417":[-0.629,0.367,0.694],"1.0833":[-0.534,0.336,0.686],"1.125":[-0.483,0.308,0.68],"1.1667":[-0.415,0.262,0.671],"1.2083":[-0.382,0.239,0.665],"1.25":[-0.393,0.193,0.655],"1.2917":[-0.484,0.163,0.644],"1.3333":[-0.675,0.118,0.629],"1.375":[-0.714,0.078,0.621],"1.4167":[-0.681,0.01,0.612],"1.4583":[-0.626,-0.033,0.607],"1.5":[-0.516,-0.107,0.601],"1.5417":[-0.449,-0.156,0.597],"1.5833":[-0.389,-0.235,0.591],"1.625":[-0.384,-0.303,0.588],"1.6667":[-0.419,-0.433,0.585],"1.7083":[-0.462,-0.525,0.582],"1.75":[-0.546,-0.612,0.578],"1.7917":[-0.603,-0.616,0.573],"1.8333":[-0.7,-0.607,0.564],"1.875":[-0.77,-0.592,0.558],"1.9167":[-0.884,-0.555,0.547],"1.9583":[-0.953,-0.521,0.538],"2.0":[-1.055,-0.444,0.523],"2.0417":[-1.13,-0.366,0.511],"2.0833":[-1.225,-0.221,0.49],"2.125":[-1.245,-0.127,0.475],"2.1667":[-1.226,0.002,0.455],"2.2083":[-1.201,0.096,0.442],"2.25":[-1.145,0.229,0.422],"2.2917":[-1.101,0.314,0.41],"2.3333":[-1.02,0.427,0.393],"2.375":[-0.964,0.493,0.383],"2.4167":[-0.859,0.587,0.37],"2.4583":[-0.782,0.641,0.362],"2.5":[-0.663,0.713,0.351],"2.5417":[-0.573,0.75,0.343],"2.5833":[-0.424,0.782,0.334],"2.625":[-0.335,0.79,0.329],"2.6667":[-0.235,0.767,0.321],"2.7083":[-0.18,0.703,0.315],"2.75":[-0.113,0.58,0.306],"2.7917":[-0.089,0.488,0.301],"2.8333":[-0.097,0.365,0.292],"2.875":[-0.128,0.283,0.286],"2.9167":[-0.192,0.15,0.278],"2.9583":[-0.239,0.069,0.272],"3.0":[-0.303,-0.048,0.264],"3.0417":[-0.331,-0.113,0.258],"3.0833":[-0.347,-0.189,0.249],"3.125":[-0.355,-0.222,0.244],"3.1667":[-0.363,-0.265,0.236],"3.2083":[-0.367,-0.287,0.229],"3.25":[-0.366,-0.311,0.221],"3.2917":[-0.366,-0.337,0.216],"3.3333":[-0.366,-0.381,0.207],"3.375":[-0.358,-0.432,0.201],"3.4167":[-0.197,-0.541,0.193],"3.4583":[-0.027,-0.631,0.188],"3.5":[0.224,-0.712,0.18],"3.5417":[0.388,-0.719,0.174],"3.5833":[0.634,-0.718,0.166],"3.625":[0.787,-0.716,0.161],"3.6667":[0.893,-0.711,0.152],"3.7083":[0.916,-0.708,0.147],"3.75":[0.951,-0.7,0.139],"3.7917":[0.961,-0.69,0.134],"3.8333":[0.975,-0.665,0.125],"3.875":[0.98,-0.635,0.12],"3.9167":[0.982,-0.574,0.109],"3.9583":[0.983,-0.519,0.102],"4.0":[0.889,-0.378,0.085],"4.0417":[0.74,-0.254,0.073],"4.0833":[0.42,-0.04,0.052],"4.125":[0.169,0.108,0.038],"4.1667":[-0.226,0.316,0.018],"4.2083":[-0.484,0.431,0.008],"4.25":[-0.811,0.546,-0.003],"4.2917":[-0.967,0.572,-0.005],"4.3333":[-1.106,0.317,0.01],"4.375":[-1.156,-0.024,0.029],"4.4167":[-1.181,-0.494,0.056],"4.4583":[-1.181,-0.623,0.063],"4.5":[-0.938,-0.568,0.055],"4.5417":[-0.602,-0.485,0.043],"4.5833":[-0.034,-0.329,0.026],"4.625":[0.253,-0.214,0.013],"4.6667":[0.301,-0.04,0.075],"4.7083":[-0.003,0.118,0.394],"4.75":[-0.379,0.273,0.779],"4.7917":[-0.356,0.209,0.565],"4.8333":[-0.278,0.005,-0.078],"4.875":[-0.217,-0.093,-0.253],"4.9167":[-0.105,-0.132,-0.125],"4.9583":[-0.023,-0.134,0.018],"5.0":[0.089,-0.124,0.209],"5.0417":[0.134,-0.103,0.217],"5.0833":[0.172,-0.054,0.018],"5.125":[0.176,-0.024,-0.056],"5.1667":[0.145,0.02,-0.039],"5.2083":[0.101,0.045,-0.018],"5.25":[0.044,0.063,-0.001],"5.2917":[0.025,0.049,-0.001],"5.3333":[0,0.005,-0.001],"5.375":[0,0.001,-0.001]}}},"sound_effects":{"0.0":{"effect":"melee.executor.executor_inspect_1"}}},"melee_1":{"loop":true,"animation_length":1.6026,"override_previous_animation":true,"bones":{"lefthand":{"rotation":{"0.0":[102.543,-12.08,131.961],"0.0417":[89.137,-33.097,134.257],"0.0833":[89.407,-30.631,134.184],"0.125":[88.847,-30.674,134.409],"0.1667":[88.183,-30.476,134.753],"0.2083":[87.73,-29.99,135.088],"0.25":[87.545,-29.524,135.3],"0.2917":[87.438,-28.636,135.592],"0.3333":[87.53,-27.553,135.844],"0.375":[87.699,-26.741,135.986],"0.4167":[88.105,-25.411,136.156],"0.4583":[88.473,-24.465,136.237],"0.5":[89.16,-22.979,136.308],"0.5417":[89.703,-21.958,136.318],"0.5833":[90.633,-20.398,136.273],"0.625":[91.686,-18.828,136.147],"0.6667":[92.845,-17.27,135.933],"0.7083":[93.667,-16.246,135.737],"0.75":[94.958,-14.75,135.353],"0.7917":[95.848,-13.782,135.034],"0.8333":[97.088,-12.456,134.397],"0.875":[98.135,-11.428,134.018],"0.9167":[99.498,-10.217,133.173],"0.9583":[107.285,-5.354,124.774],"1.0":[114.222,0.626,116.392],"1.0417":[116.297,6.57,116.861],"1.0833":[116.802,9.095,119.616],"1.125":[118.319,12.4,124.526],"1.1667":[120.102,10.567,128.742],"1.2083":[121.105,8.654,130.923],"1.25":[122.105,6.278,132.791],"1.2917":[122.552,4.872,133.256],"1.3333":[123.081,3.438,133.749],"1.375":[123.509,2.762,134.166],"1.4167":[123.713,2.57,134.321],"1.4583":[123.811,2.705,134.279],"1.5":[123.736,3.116,134.067],"1.5417":[123.594,3.703,133.737],"1.5833":[123.244,4.453,133.19]},"position":{"0.0":[14.142,31.545,-14.521],"0.0417":[13.034,24.297,-12.405],"0.0833":[13.402,24.907,-12.638],"0.125":[13.477,24.828,-12.531],"0.1667":[13.588,24.795,-12.405],"0.2083":[13.696,24.857,-12.319],"0.25":[13.766,24.947,-12.283],"0.2917":[13.868,25.152,-12.258],"0.3333":[13.965,25.432,-12.264],"0.375":[14.027,25.658,-12.281],"0.4167":[14.116,26.05,-12.323],"0.4583":[14.172,26.343,-12.359],"0.5":[14.251,26.827,-12.421],"0.5417":[14.3,27.175,-12.465],"0.5833":[14.368,27.73,-12.532],"0.625":[14.428,28.317,-12.596],"0.6667":[14.48,28.929,-12.654],"0.7083":[14.511,29.346,-12.688],"0.75":[14.549,29.98,-12.732],"0.7917":[14.569,30.405,-12.757],"0.8333":[14.597,31.008,-12.794],"0.875":[14.609,31.472,-12.812],"0.9167":[14.61,32.078,-12.836],"0.9583":[14.334,35.328,-13.81],"1.0":[13.564,38.528,-14.165],"1.0417":[13.272,39.513,-14.017],"1.0833":[13.15,39.259,-13.914],"1.125":[12.964,38.955,-13.678],"1.1667":[12.911,38.623,-13.376],"1.2083":[12.912,38.488,-13.181],"1.25":[12.948,38.424,-12.94],"1.2917":[12.991,38.457,-12.81],"1.3333":[13.043,38.55,-12.684],"1.375":[13.08,38.699,-12.635],"1.4167":[13.099,38.796,-12.626],"1.4583":[13.108,38.889,-12.647],"1.5":[13.102,38.922,-12.688],"1.5417":[13.089,38.958,-12.75],"1.5833":[13.061,38.948,-12.845]}},"righthand":{"rotation":{"0.0":[79.165,-11.242,-95.045],"0.0417":[49.304,-10.546,-97.209],"0.0833":[54.031,-11.2,-92.649],"0.125":[55.838,-12.76,-89.103],"0.1667":[69.727,-14.757,-85.539],"0.2083":[140.531,-19.066,-97.126],"0.25":[194.747,-10.433,-95.302],"0.2917":[205.382,-26.293,-90.112],"0.3333":[208.303,-1.848,-83.314],"0.375":[209.715,15.759,-78.121],"0.4167":[208.917,28.009,-76.692],"0.4583":[203.698,33.848,-81.676],"0.5":[189.94,38.903,-96.464],"0.5417":[179.651,39.012,-108.1],"0.5833":[167.908,37.048,-122.386],"0.625":[161.947,39.265,-130.879],"0.6667":[107.905,69.069,-176.243],"0.7083":[69.978,42.872,-226.172],"0.75":[83.742,15.006,-239.913],"0.7917":[99.027,4.382,-229.795],"0.8333":[112.57,-16.402,-207.305],"0.875":[113.2,-29.251,-190.566],"0.9167":[104.064,-41.572,-150.364],"0.9583":[93.961,-44.103,-109.157],"1.0":[96.169,-38.592,-92.637],"1.0417":[115.824,-29.015,-102.877],"1.0833":[115.752,-31.321,-105.687],"1.125":[114.367,-30.829,-106.325],"1.1667":[113.999,-30.778,-106.955],"1.2083":[113.767,-30.891,-106.789],"1.25":[113.665,-32.209,-106.544],"1.2917":[113.732,-33.316,-106.331],"1.3333":[114.037,-34.781,-106.163],"1.375":[114.024,-35.252,-105.8],"1.4167":[114.099,-35.099,-105.655],"1.4583":[114.129,-34.561,-105.536],"1.5":[114.077,-34.091,-105.484],"1.5417":[113.882,-33.644,-105.396],"1.5833":[113.701,-33.469,-105.339]},"position":{"0.0":[-23.098,36.085,-6.698],"0.0417":[-26.261,39.149,5.97],"0.0833":[-28.812,38.866,-0.235],"0.125":[-29.22,39.252,-4.276],"0.1667":[-27.181,41.593,-14.404],"0.2083":[-10.024,42.63,-21.964],"0.25":[3.388,42.079,-12.851],"0.2917":[7.509,37.822,-7.548],"0.3333":[7.119,35.365,-8.583],"0.375":[6.886,33.998,-9.003],"0.4167":[6.438,33.276,-9.216],"0.4583":[6.095,32.915,-9.134],"0.5":[5.52,32.418,-8.773],"0.5417":[5.162,32.116,-8.466],"0.5833":[4.636,31.769,-8.106],"0.625":[3.972,31.592,-8.101],"0.6667":[0.973,37.006,-14.318],"0.7083":[-0.161,37.506,-15.185],"0.75":[-1.049,37.216,-15.389],"0.7917":[-2.149,37.651,-15.905],"0.8333":[-3.923,37.847,-16.866],"0.875":[-5.27,37.926,-17.698],"0.9167":[-6.666,37.433,-15.957],"0.9583":[-8.005,37.916,-14.573],"1.0":[-9.015,38.499,-14.031],"1.0417":[-10.194,38.437,-13.469],"1.0833":[-10.627,37.876,-13.273],"1.125":[-10.882,37.735,-13.014],"1.1667":[-11.108,38.357,-12.867],"1.2083":[-11.152,38.744,-12.902],"1.25":[-11.1,38.936,-12.983],"1.2917":[-11.039,38.982,-13.079],"1.3333":[-10.922,39.006,-13.231],"1.375":[-10.848,38.972,-13.354],"1.4167":[-10.826,38.94,-13.402],"1.4583":[-10.804,38.906,-13.439],"1.5":[-10.794,38.892,-13.448],"1.5417":[-10.778,38.871,-13.457],"1.5833":[-10.771,38.857,-13.459]}},"executor":{"rotation":{"0.0":[26.643,8.742,89.982],"0.0417":[56.075,5.925,85.889],"0.0833":[51.449,6.844,90.827],"0.125":[49.767,8.51,94.522],"0.1667":[36.25,11.472,99.049],"0.2083":[-33.868,22.182,87.776],"0.25":[-89.794,15.978,84.774],"0.2917":[-100.987,31.753,88.771],"0.3333":[-103.463,7.267,95.469],"0.375":[-104.47,-10.367,100.517],"0.4167":[-103.361,-22.641,101.848],"0.4583":[-98.227,-28.416,97.262],"0.5":[-85.198,-33.44,83.823],"0.5417":[-75.541,-33.67,73.233],"0.5833":[-64.375,-31.996,60.003],"0.625":[-58.823,-34.401,52.042],"0.6667":[-13.898,-67.742,14.037],"0.7083":[31.364,-41.355,-46.894],"0.75":[32.397,-4.132,-89.498],"0.7917":[31.013,6.168,-115.401],"0.8333":[27.697,18.331,-153],"0.875":[15.759,30.57,-186.269],"0.9167":[-8.814,12.805,-233.52],"0.9583":[-5.114,-4.144,-256.143],"1.0":[-2.352,7.517,-264.29],"1.0417":[-6.513,29.866,-276.461],"1.0833":[-7.419,32.146,-279.237],"1.125":[-6.097,31.525,-279.892],"1.1667":[-5.736,31.438,-280.522],"1.2083":[-5.488,31.528,-280.346],"1.25":[-5.211,32.827,-280.006],"1.2917":[-5.125,33.934,-279.71],"1.3333":[-5.224,35.419,-279.427],"1.375":[-5.146,35.885,-279.026],"1.4167":[-5.243,35.74,-278.895],"1.4583":[-5.351,35.209,-278.821],"1.5":[-5.365,34.737,-278.806],"1.5417":[-5.233,34.275,-278.752],"1.5833":[-5.076,34.084,-278.708]},"position":{"0.0":[-18.38,50.226,-9.297],"0.0417":[-22.312,52.945,4.287],"0.0833":[-24.835,52.879,-2.095],"0.125":[-25.239,53.443,-6.215],"0.1667":[-22.842,56.046,-16.791],"0.2083":[-2.895,57.36,-24.718],"0.25":[11.83,56.225,-13.799],"0.2917":[15.912,51.714,-8.29],"0.3333":[15.43,48.944,-8.864],"0.375":[15.129,47.48,-8.989],"0.4167":[14.706,46.771,-9.075],"0.4583":[14.465,46.533,-9.094],"0.5":[14.086,46.32,-9.101],"0.5417":[13.809,46.236,-9.105],"0.5833":[13.317,46.187,-9.128],"0.625":[12.685,46.176,-9.196],"0.6667":[9.708,51.339,-14.694],"0.7083":[8.803,52.619,-16.612],"0.75":[7.481,53.134,-18.54],"0.7917":[6.16,53.983,-19.301],"0.8333":[4.014,55.298,-19.825],"0.875":[2.716,56.029,-19.849],"0.9167":[0.805,55.769,-19.568],"0.9583":[-1.107,55.054,-18.892],"1.0":[-2.297,54.592,-18.087],"1.0417":[-3.909,53.656,-16.79],"1.0833":[-4.643,53.111,-16.231],"1.125":[-4.953,52.934,-15.978],"1.1667":[-5.198,53.549,-15.832],"1.2083":[-5.253,53.937,-15.867],"1.25":[-5.218,54.184,-15.935],"1.2917":[-5.167,54.277,-16.02],"1.3333":[-5.053,54.366,-16.155],"1.375":[-4.981,54.353,-16.275],"1.4167":[-4.952,54.316,-16.325],"1.4583":[-4.921,54.26,-16.368],"1.5":[-4.907,54.226,-16.383],"1.5417":[-4.894,54.185,-16.397],"1.5833":[-4.891,54.162,-16.401]}},"lefthand_1":{"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.25":[-37.5,0,0],"0.4583":[0,0,0]},"position":[0,2.75,1.5],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.002,0,-0.019],"0.0417":[-0.019,0.004,-0.122],"0.0833":[-0.06,0.014,-0.39],"0.125":[-0.09,0.023,-0.575],"0.1667":[-0.118,0.038,-0.761],"0.2083":[0.024,0.051,0.098],"0.25":[0.063,0.002,-0.198],"0.2917":[-0.009,-0.173,-0.079],"0.3333":[-0.062,-0.069,0.177],"0.375":[-0.132,-0.163,-0.225],"0.4167":[-0.144,-0.163,-0.189],"0.4583":[-0.142,-0.117,0.023],"0.5":[-0.126,-0.058,-0.013],"0.5417":[-0.106,-0.026,-0.134],"0.5833":[-0.058,0.005,-0.125],"0.625":[-0.011,0.021,-0.03],"0.6667":[-0.022,0.037,-0.02],"0.7083":[-0.058,0.052,-0.058],"0.75":[-0.13,0.076,-0.115],"0.7917":[-0.19,0.084,-0.153],"0.8333":[-0.261,0.108,-0.187],"0.875":[-0.301,0.13,-0.187],"0.9167":[-0.351,0.167,-0.15],"0.9583":[-0.361,0.219,-0.098],"1.0":[-0.341,0.249,-0.053],"1.0417":[-0.286,0.309,0.015],"1.0833":[-0.24,0.33,0.053],"1.125":[-0.138,0.357,0.13],"1.1667":[-0.013,0.357,0.104],"1.2083":[0.096,0.339,-0.089],"1.25":[0.222,0.258,-0.004],"1.2917":[0.253,0.186,0.116],"1.3333":[0.214,0.079,0.023],"1.375":[0.157,0.005,-0.031],"1.4167":[0.125,-0.018,-0.002],"1.4583":[0.08,-0.026,0.011],"1.5":[0.054,-0.018,-0.002],"1.5417":[0.016,-0.008,0.002],"1.5833":[0.003,0,0]}}},"sound_effects":{"0.0":{"effect":"melee.executor.executor_swing_a"},"0.75":{"effect":"melee.executor.executor_rotate_a"}}},"melee_2":{"loop":true,"animation_length":2.1288,"override_previous_animation":true,"bones":{"lefthand":{"rotation":{"0.0":[-68.152,-166.147,26.998],"0.0379":[-67.99,-166.103,27.426],"0.0758":[-67.811,-166.053,27.892],"0.1136":[-67.619,-165.998,28.39],"0.1515":[-67.416,-165.938,28.913],"0.1894":[-67.203,-165.875,29.453],"0.2273":[-66.985,-165.808,30.003],"0.2652":[-66.763,-165.739,30.556],"0.303":[-66.539,-165.668,31.106],"0.3409":[-66.319,-165.597,31.645],"0.3788":[-66.103,-165.525,32.167],"0.4167":[-65.895,-165.455,32.665],"0.4545":[-65.698,-165.387,33.132],"0.4924":[-65.516,-165.323,33.561],"0.5303":[-65.351,-165.265,33.947],"0.5682":[-65.206,-165.213,34.283],"0.6061":[-65.086,-165.169,34.561],"0.6439":[-64.992,-165.135,34.777],"0.6818":[-64.929,-165.111,34.922],"0.7197":[-64.899,-165.1,34.99],"0.7576":[-64.905,-165.103,34.976],"0.7955":[-64.951,-165.12,34.871],"0.8333":[-65.039,-165.152,34.67],"0.8712":[-65.171,-165.2,34.364],"0.9091":[-65.351,-165.265,33.947],"0.947":[-65.579,-165.346,33.412],"0.9848":[-65.859,-165.442,32.75],"1.0227":[-66.191,-165.554,31.953],"1.0606":[-66.577,-165.68,31.014],"1.0985":[-67.016,-165.818,29.923],"1.1364":[-67.51,-165.966,28.672],"1.1742":[-68.056,-166.121,27.251],"1.2121":[-68.654,-166.281,25.651],"1.25":[-77.987,-168.266,-4.621],"1.2879":[-80.05,-170.188,-47.133],"1.3258":[-72.775,-174.339,-60.451],"1.3636":[-65.473,-179.558,-64.022],"1.4015":[-63.534,-187.2,-61.545],"1.4394":[-61.987,-192.508,-56.981],"1.4773":[-60.855,-192.715,-53.971],"1.5152":[-59.902,-191.302,-51.729],"1.553":[-59.119,-189.502,-49.795],"1.5909":[-58.499,-187.816,-48.243],"1.6288":[-58.039,-186.328,-47.273],"1.6667":[-57.697,-184.923,-46.797],"1.7045":[-57.394,-183.796,-46.441],"1.7424":[-57.096,-183.014,-46.063],"1.7803":[-56.826,-182.512,-45.795],"1.8182":[-56.608,-182.28,-45.668],"1.8561":[-56.488,-182.693,-45.875],"1.8939":[-56.473,-183.311,-46.186],"1.9318":[-56.507,-183.593,-46.334],"1.9697":[-56.56,-183.828,-46.462],"2.0076":[-56.625,-184.037,-46.577],"2.0455":[-56.693,-184.239,-46.69],"2.0833":[-56.756,-184.453,-46.81],"2.1212":[-56.756,-184.453,-46.81]},"position":{"0.0":[19.027,29.644,-15.12],"0.0379":[19.054,29.625,-15.125],"0.0758":[19.084,29.603,-15.13],"0.1136":[19.116,29.58,-15.136],"0.1515":[19.15,29.556,-15.141],"0.1894":[19.184,29.531,-15.147],"0.2273":[19.22,29.505,-15.152],"0.2652":[19.255,29.479,-15.157],"0.303":[19.291,29.453,-15.163],"0.3409":[19.326,29.427,-15.167],"0.3788":[19.359,29.402,-15.172],"0.4167":[19.391,29.379,-15.176],"0.4545":[19.422,29.356,-15.18],"0.4924":[19.45,29.335,-15.183],"0.5303":[19.475,29.317,-15.186],"0.5682":[19.496,29.3,-15.188],"0.6061":[19.514,29.287,-15.19],"0.6439":[19.528,29.276,-15.192],"0.6818":[19.538,29.269,-15.193],"0.7197":[19.542,29.265,-15.193],"0.7576":[19.541,29.266,-15.193],"0.7955":[19.535,29.271,-15.192],"0.8333":[19.521,29.281,-15.191],"0.8712":[19.502,29.296,-15.189],"0.9091":[19.475,29.317,-15.186],"0.947":[19.44,29.343,-15.182],"0.9848":[19.397,29.374,-15.177],"1.0227":[19.345,29.413,-15.17],"1.0606":[19.285,29.457,-15.162],"1.0985":[19.215,29.509,-15.151],"1.1364":[19.134,29.567,-15.139],"1.1742":[19.043,29.633,-15.123],"1.2121":[18.94,29.706,-15.104],"1.25":[17.045,30.576,-14.25],"1.2879":[14.611,32.281,-12.845],"1.3258":[13.787,35.187,-13.561],"1.3636":[13.377,38.354,-14.175],"1.4015":[13.146,39.15,-13.97],"1.4394":[12.992,39.192,-13.759],"1.4773":[12.922,38.976,-13.591],"1.5152":[12.908,38.768,-13.417],"1.553":[12.909,38.576,-13.245],"1.5909":[12.918,38.447,-13.095],"1.6288":[12.942,38.416,-12.978],"1.6667":[12.979,38.455,-12.891],"1.7045":[13.01,38.515,-12.825],"1.7424":[13.029,38.59,-12.782],"1.7803":[13.042,38.686,-12.758],"1.8182":[13.054,38.775,-12.744],"1.8561":[13.061,38.849,-12.742],"1.8939":[13.063,38.897,-12.755],"1.9318":[13.063,38.917,-12.771],"1.9697":[13.063,38.928,-12.789],"2.0076":[13.063,38.935,-12.808],"2.0455":[13.062,38.94,-12.827],"2.0833":[13.061,38.948,-12.845],"2.1212":[13.061,38.948,-12.845]}},"righthand":{"rotation":{"0.0379":[-244.805,-26.269,-58.816],"0.0758":[-256.531,-23.039,-53.917],"0.1136":[-262.608,-22.246,-51.541],"0.1515":[-255.058,-29.564,-60.849],"0.1894":[-230.399,-34.246,-86.551],"0.2273":[-195.291,-18.066,-100.026],"0.2652":[-180.333,-3.135,-80.06],"0.303":[-162.522,-5.412,-76.353],"0.3409":[-174.136,-8.934,-76.714],"0.3788":[-185.833,-12.361,-75.411],"0.4167":[-185.833,-12.361,-75.411],"0.4545":[-185.836,-12.36,-75.409],"0.4924":[-185.832,-12.361,-75.411],"0.5303":[-185.832,-12.36,-75.411],"0.5682":[-185.834,-12.361,-75.411],"0.6061":[-185.832,-12.362,-75.412],"0.6439":[-185.834,-12.361,-75.41],"0.6818":[-185.832,-12.361,-75.411],"0.7197":[-185.834,-12.362,-75.41],"0.7576":[-185.833,-12.362,-75.411],"0.7955":[-185.833,-12.361,-75.411],"0.8333":[-185.834,-12.361,-75.411],"0.8712":[-185.833,-12.361,-75.411],"0.9091":[-200.956,0.937,-86.687],"0.947":[-226.529,-3.777,-129.573],"0.9848":[-245.477,-28.151,-147.232],"1.0227":[-258.026,-55.274,-152.624],"1.0606":[-256.053,-59.9,-152.034],"1.0985":[-264.416,-63.987,-149.948],"1.1364":[-273.824,-64.326,-146.246],"1.1742":[-257.592,-41.05,-134.012],"1.2121":[-230.79,-25.69,-116.9],"1.25":[-227.709,-24.426,-128.183],"1.3258":[-236.362,-30.402,-115.136],"1.3636":[-236.155,-31.566,-113.302],"1.4015":[-242.241,-30.813,-109.55],"1.4394":[-244.417,-30.704,-106.573],"1.4773":[-245.61,-30.664,-105.96],"1.5152":[-246.692,-30.964,-105.497],"1.553":[-247.37,-31.193,-105.039],"1.5909":[-247.793,-31.476,-104.688],"1.6288":[-247.508,-32.363,-104.629],"1.6667":[-247.078,-33.37,-104.667],"1.7045":[-246.798,-33.868,-104.726],"1.7424":[-246.53,-34.19,-104.909],"1.7803":[-246.371,-34.37,-105.007],"1.8182":[-246.316,-34.441,-105.025],"1.8561":[-246.244,-34.416,-105.068],"1.8939":[-246.147,-34.287,-105.15],"1.9318":[-246.103,-34.142,-105.217],"1.9697":[-246.114,-34.027,-105.247],"2.0076":[-246.135,-33.91,-105.277],"2.0455":[-246.168,-33.783,-105.306],"2.0833":[-246.242,-33.595,-105.33],"2.1212":[-246.295,-33.468,-105.339]},"position":{"0.0":[-16.186,24.203,5.835],"0.0379":[-20.74,31.658,3.304],"0.0758":[-24.442,53.426,-7.814],"0.1136":[-22.362,52.931,-14.98],"0.1515":[-18.765,50.541,-19.819],"0.1894":[-12.775,46.436,-21.517],"0.2273":[-4.308,41.851,-19.832],"0.2652":[8.471,33.858,-9.975],"0.303":[6.669,34.417,-8.131],"0.3409":[5.962,31.355,-5.847],"0.3788":[5.671,28.464,-5.118],"0.4167":[4.939,28.423,-5.232],"0.4545":[4.292,28.391,-5.331],"0.4924":[3.705,28.368,-5.417],"0.5303":[3.153,28.352,-5.497],"0.5682":[2.611,28.343,-5.577],"0.6061":[2.054,28.339,-5.661],"0.6439":[1.458,28.339,-5.755],"0.6818":[0.797,28.342,-5.864],"0.7197":[0.046,28.346,-5.994],"0.7576":[-0.819,28.352,-6.148],"0.7955":[-1.824,28.358,-6.334],"0.8333":[-2.993,28.362,-6.555],"0.8712":[-4.351,28.363,-6.818],"0.9091":[-8.733,29.868,-9.535],"0.947":[-17.167,32.301,-8.451],"0.9848":[-20.132,39.769,-6.652],"1.0227":[-24.031,45.447,-10.896],"1.0606":[-23.502,46.807,-11.255],"1.0985":[-24.022,47.17,-11.63],"1.1364":[-24.2,46.974,-11.842],"1.1742":[-21.425,47.64,-12.392],"1.2121":[-15.567,46.01,-11.637],"1.25":[-12.741,43.783,-12.004],"1.2879":[-11.601,41.961,-12.891],"1.3258":[-10.617,39.829,-13.61],"1.3636":[-10.2,39.118,-13.567],"1.4015":[-10.296,38.301,-13.484],"1.4394":[-10.641,38.031,-13.184],"1.4773":[-10.737,38.143,-12.962],"1.5152":[-10.776,38.408,-12.884],"1.553":[-10.809,38.641,-12.892],"1.5909":[-10.83,38.845,-12.944],"1.6288":[-10.831,38.927,-13.038],"1.6667":[-10.835,38.976,-13.137],"1.7045":[-10.826,39.001,-13.211],"1.7424":[-10.805,38.998,-13.278],"1.7803":[-10.785,38.986,-13.33],"1.8182":[-10.772,38.964,-13.369],"1.8561":[-10.766,38.946,-13.395],"1.8939":[-10.768,38.934,-13.411],"1.9318":[-10.772,38.923,-13.423],"1.9697":[-10.772,38.91,-13.434],"2.0076":[-10.772,38.899,-13.442],"2.0455":[-10.773,38.886,-13.449],"2.0833":[-10.771,38.869,-13.456],"2.1212":[-10.769,38.858,-13.458]}},"executor":{"rotation":{"0.0":[-24.434,33.432,118.36],"0.0379":[-8.325,30.044,125.864],"0.0758":[3.323,26.299,131.267],"0.1136":[9.542,23.746,134.092],"0.1515":[3.757,25.143,126.527],"0.1894":[-15.101,22.238,110.404],"0.2273":[-48.783,12.279,111.484],"0.2652":[-69.933,7.433,127.321],"0.303":[-87.315,16.112,122.518],"0.3409":[-75.028,15.493,123.401],"0.3788":[-62.436,14.488,126.466],"0.4167":[-62.436,14.487,126.466],"0.4545":[-62.433,14.486,126.468],"0.4924":[-62.436,14.488,126.467],"0.5303":[-62.436,14.487,126.466],"0.5682":[-62.435,14.487,126.467],"0.6061":[-62.436,14.489,126.466],"0.6439":[-62.435,14.488,126.467],"0.6818":[-62.436,14.488,126.467],"0.7197":[-62.434,14.488,126.468],"0.7576":[-62.435,14.488,126.467],"0.7955":[-62.436,14.488,126.464],"0.8333":[-62.435,14.488,126.464],"0.8712":[-62.435,14.488,126.464],"0.9091":[-47.815,-4.758,100.817],"0.947":[-27.506,-7.702,68.502],"1.0227":[-34.515,-63.41,120.675],"1.0606":[-142.488,-70.774,232.378],"1.0985":[-169.204,-35.715,257.475],"1.1364":[-171.859,1.848,264.262],"1.1742":[-168.374,44.487,277.057],"1.2121":[-56.296,71.825,394.051],"1.25":[-19.429,32.863,429.573],"1.2879":[-15.36,22.548,433.028],"1.3258":[-12.858,22.542,435.8],"1.3636":[-11.729,27.282,435.706],"1.4015":[-9.502,31.834,436.832],"1.4394":[-7.334,31.518,439.835],"1.4773":[-6.144,31.362,440.46],"1.5152":[-5.022,31.556,440.954],"1.553":[-4.314,31.719,441.434],"1.5909":[-3.854,31.958,441.807],"1.6288":[-4.019,32.867,441.928],"1.6667":[-4.31,33.909,441.964],"1.7045":[-4.52,34.431,441.942],"1.7424":[-4.743,34.776,441.782],"1.7803":[-4.877,34.971,441.698],"1.8182":[-4.921,35.047,441.685],"1.8561":[-4.997,35.029,441.64],"1.8939":[-5.113,34.909,441.546],"1.9318":[-5.177,34.77,441.467],"1.9697":[-5.183,34.655,441.427],"2.0076":[-5.178,34.536,441.389],"2.0455":[-5.163,34.407,441.35],"2.0833":[-5.115,34.214,441.312],"2.1212":[-5.08,34.082,441.293]},"position":{"0.0379":[-14.498,46.529,0.246],"0.0758":[-19.097,68.777,-11.29],"0.1136":[-16.816,68.076,-17.959],"0.1515":[-12.819,65.801,-22.685],"0.1894":[-6.114,61.816,-24.009],"0.2273":[3.327,56.968,-21.677],"0.2652":[19.2,47.1,-12.989],"0.303":[17.048,47.364,-9.87],"0.3409":[15.018,44.897,-7.799],"0.3788":[13.483,42.419,-6.766],"0.4167":[12.649,42.397,-6.774],"0.4545":[11.929,42.379,-6.799],"0.4924":[11.299,42.364,-6.843],"0.5303":[10.731,42.352,-6.906],"0.5682":[10.19,42.341,-6.988],"0.6061":[9.653,42.334,-7.091],"0.6439":[9.088,42.328,-7.217],"0.6818":[8.466,42.324,-7.364],"0.7197":[7.755,42.321,-7.535],"0.7576":[6.928,42.32,-7.729],"0.7955":[5.956,42.319,-7.949],"0.8333":[4.811,42.319,-8.194],"0.8712":[3.462,42.317,-8.466],"0.9091":[-2.852,46.337,-9.458],"0.947":[-8.438,52.613,-11.047],"0.9848":[-8.049,56.843,-13.029],"1.0227":[-7.624,58.802,-13.816],"1.0606":[-7.274,59.885,-14.015],"1.0985":[-6.936,60.57,-14.089],"1.1364":[-6.61,60.898,-14.152],"1.1742":[-6.3,60.843,-14.302],"1.2121":[-6.03,60.266,-14.501],"1.25":[-5.825,59.486,-14.748],"1.2879":[-5.265,57.624,-15.44],"1.3258":[-4.374,55.167,-16.371],"1.3636":[-4.035,54.183,-16.553],"1.4015":[-4.261,53.538,-16.444],"1.4394":[-4.664,53.238,-16.15],"1.4773":[-4.803,53.336,-15.931],"1.5152":[-4.885,53.603,-15.851],"1.553":[-4.944,53.839,-15.857],"1.5909":[-4.982,54.051,-15.906],"1.6288":[-4.981,54.174,-15.992],"1.6667":[-4.979,54.269,-16.081],"1.7045":[-4.964,54.318,-16.149],"1.7424":[-4.938,54.331,-16.212],"1.7803":[-4.915,54.328,-16.262],"1.8182":[-4.9,54.309,-16.3],"1.8561":[-4.892,54.291,-16.327],"1.8939":[-4.89,54.275,-16.344],"1.9318":[-4.891,54.258,-16.358],"1.9697":[-4.89,54.24,-16.37],"2.0076":[-4.891,54.223,-16.379],"2.0455":[-4.891,54.205,-16.388],"2.0833":[-4.891,54.179,-16.396],"2.1212":[-4.89,54.162,-16.4]}},"lefthand_1":{"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.1894":[-25,0,0],"0.2273":[-30,0,0],"0.4924":[0,0,0]},"position":[0,2.75,1.5],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.003,0.001,-0.018],"0.0379":[-0.02,0.004,-0.119],"0.0758":[-0.046,0.004,-0.29],"0.1136":[-0.075,0.004,-0.482],"0.1515":[-0.102,0.005,-0.657],"0.1894":[-0.118,0.008,-0.763],"0.2273":[0.045,0.062,1.06],"0.2652":[0.171,0.027,-0.869],"0.303":[0.142,-0.143,-0.072],"0.3409":[0.076,-0.279,0.497],"0.3788":[-0.034,-0.048,-0.095],"0.4167":[-0.087,-0.151,0.11],"0.4545":[-0.118,-0.175,0.161],"0.4924":[-0.141,-0.106,0.048],"0.5303":[-0.152,-0.03,-0.026],"0.5682":[-0.146,0.019,0.021],"0.6061":[-0.124,0.04,0.074],"0.6439":[-0.09,0.033,0.061],"0.6818":[-0.05,0.012,0.028],"0.7197":[-0.011,0.005,0.001],"0.7576":[0.012,0.005,0.001],"0.7955":[0.024,0.047,0.021],"0.8333":[0.033,0.096,0.042],"0.8712":[0.033,0.119,0.052],"0.9091":[-0.034,0.119,0.044],"0.947":[-0.16,0.116,0.027],"0.9848":[-0.261,0.107,0.016],"1.0227":[-0.337,0.089,0.011],"1.0606":[-0.404,0.062,0.011],"1.0985":[-0.471,0.025,0.01],"1.1364":[-0.509,-0.012,0.009],"1.1742":[-0.527,-0.05,0],"1.2121":[-0.405,-0.098,-0.152],"1.25":[-0.144,-0.157,-0.486],"1.2879":[0.125,-0.205,-0.821],"1.3258":[0.246,-0.226,-0.974],"1.3636":[0.197,-0.203,-0.659],"1.4015":[0.087,-0.158,-0.086],"1.4394":[-0.011,-0.118,0.229],"1.4773":[-0.064,-0.105,0.056],"1.5152":[-0.1,-0.097,-0.12],"1.553":[-0.128,-0.093,0.019],"1.5909":[-0.148,-0.084,0.157],"1.6288":[-0.168,-0.072,0.093],"1.6667":[-0.18,-0.06,0],"1.7045":[-0.184,-0.052,-0.055],"1.7424":[-0.18,-0.035,-0.083],"1.7803":[-0.168,0.002,-0.009],"1.8182":[-0.141,0.037,0.064],"1.8561":[-0.121,0.06,0.034],"1.8939":[-0.09,0.065,-0.003],"1.9318":[-0.059,0.06,-0.025],"1.9697":[-0.039,0.046,-0.033],"2.0076":[-0.028,0.028,-0.033],"2.0455":[-0.008,0.013,-0.018],"2.0833":[-0.008,0.004,-0.01],"2.1212":[0.003,-0.001,-0.003]}}},"sound_effects":{"0.0379":{"effect":"melee.executor.executor_swing_b"},"0.9848":{"effect":"melee.executor.executor_rotate_b"}}},"melee_3":{"loop":true,"animation_length":1.5344,"override_previous_animation":true,"bones":{"lefthand":{"rotation":{"0.0":[-85.428,157.28,-16.442],"0.0417":[-85.428,157.28,-16.442],"0.0833":[-64.378,162.963,-1.757],"0.125":[-47.043,175.521,-5.868],"0.1667":[-39.797,181.803,-26.058],"0.2083":[-39.479,187.447,-52.578],"0.25":[-34.215,159.489,-92.707],"0.2917":[-17.939,180.031,-87.617],"0.3333":[-26.618,177.813,-108.487],"0.375":[-1.535,168.564,-111.54],"0.4167":[0.339,178.751,-105.741],"0.4583":[1.304,198.489,-93.347],"0.5":[-0.724,214.301,-83.32],"0.5417":[-4.091,224.975,-75.456],"0.5833":[-22.049,244.97,-50.086],"0.625":[-45.496,252.167,-23.517],"0.6667":[-99.466,252.025,34.773],"0.7083":[-139.315,238.842,77.282],"0.75":[-93.394,244.431,54.194],"0.7917":[-112.052,245.629,35.342],"0.8333":[-92.391,233.413,2.313],"0.875":[-84.985,218.064,-18.086],"0.9167":[-82.464,208.023,-28.779],"0.9583":[-79.709,190.423,-47.477],"1.0":[-69.452,183.908,-61.504],"1.0417":[-64.917,177.348,-64.314],"1.0833":[-63.45,171.493,-60.489],"1.125":[-61.204,166.263,-54.842],"1.1667":[-58.492,167.103,-50.604],"1.2083":[-56.518,169.748,-47.868],"1.25":[-56.515,173.516,-46.55],"1.2917":[-56.912,175.897,-46.449],"1.3333":[-56.946,176.005,-47.508],"1.375":[-56.94,175.883,-47.821],"1.4167":[-56.893,175.809,-47.651],"1.4583":[-56.835,175.696,-47.291],"1.5":[-56.774,175.581,-46.918],"1.5417":[-56.755,175.547,-46.81]},"position":{"0.0":[25.178,24.779,-14.803],"0.0417":[25.178,24.779,-14.803],"0.0833":[27.965,31.939,-16.046],"0.125":[29.339,40.767,-12.969],"0.1667":[26.745,47.253,-7.02],"0.2083":[17.292,49.588,-15.524],"0.25":[11.114,45.157,-21.763],"0.2917":[-1.757,39.068,-17.897],"0.3333":[-3.739,29.33,-16.383],"0.375":[-5.376,24.353,-8.637],"0.4167":[-5.195,24.439,-8.963],"0.4583":[-4.787,24.733,-9.975],"0.5":[-4.43,25.057,-10.8],"0.5417":[-4.156,25.359,-11.36],"0.5833":[-3.515,26.234,-12.449],"0.625":[-3.161,26.823,-12.956],"0.6667":[-2.623,27.899,-13.652],"0.7083":[-3.074,31.896,-13.243],"0.75":[-4.101,32.926,-15.111],"0.7917":[2.54,29.756,-14.429],"0.8333":[6.596,29.276,-14.775],"0.875":[10.215,29.557,-14.403],"0.9167":[12.086,30.151,-13.933],"0.9583":[14.516,32.291,-12.916],"1.0":[13.899,36.638,-13.989],"1.0417":[13.325,38.789,-14.111],"1.0833":[13.15,39.108,-13.922],"1.125":[12.962,39.028,-13.677],"1.1667":[12.924,38.833,-13.372],"1.2083":[12.94,38.77,-13.095],"1.25":[12.984,38.753,-12.908],"1.2917":[13.029,38.775,-12.81],"1.3333":[13.069,38.837,-12.769],"1.375":[13.08,38.864,-12.767],"1.4167":[13.08,38.899,-12.785],"1.4583":[13.072,38.92,-12.811],"1.5":[13.063,38.941,-12.837],"1.5417":[13.061,38.948,-12.845]}},"righthand":{"rotation":{"0.0":[-79.419,123.427,11.096],"0.0417":[-26.399,138.584,16.644],"0.0833":[-22.238,131.858,56.33],"0.125":[-49.077,114.487,56.306],"0.1667":[-66.68,115.651,47.835],"0.2083":[-81.948,119.335,40.516],"0.25":[-96.497,127.376,34.724],"0.2917":[-103.645,135.004,32.792],"0.3333":[-107.142,140.525,32.2],"0.375":[-111.928,152.091,31.933],"0.4167":[-113.531,157.874,32.048],"0.4583":[-115.72,168.85,32.545],"0.5":[-116.123,176.077,32.952],"0.5417":[-115.025,180.199,33.011],"0.5833":[-110.256,186.795,32.874],"0.625":[-107.078,189.403,32.878],"0.6667":[-102.033,192.866,33.082],"0.7083":[-95.789,197.858,33.238],"0.75":[-91.185,202.764,32.702],"0.7917":[-85.567,207.754,30.646],"0.8333":[-78.528,211.237,26.856],"0.875":[-70.753,213.258,21.655],"0.9167":[-61.647,201.035,32.021],"0.9583":[-73.848,170.026,26.844],"1.0":[-54.04,188.372,35.162],"1.0417":[-51.386,199.208,55.095],"1.0833":[-58.817,207.657,71.595],"1.125":[-64.547,209.652,71.531],"1.1667":[-66.747,209.241,72.436],"1.2083":[-67.757,209.236,73.783],"1.25":[-67.526,211.429,74.82],"1.2917":[-67.162,212.676,74.942],"1.3333":[-66.653,213.835,75.247],"1.375":[-66.41,214.006,75.164],"1.4167":[-66.163,213.607,75.013],"1.4583":[-66.188,213.462,74.857],"1.5":[-66.281,213.467,74.688],"1.5417":[-66.297,213.47,74.66]},"position":{"0.0":[-0.548,38.178,-17.679],"0.0417":[-2.575,38.724,-14.441],"0.0833":[-8.584,31.686,-9.157],"0.125":[-10.85,29.002,-6.746],"0.1667":[-11.98,27.836,-7.728],"0.2083":[-13.287,26.819,-8.884],"0.25":[-15.294,25.871,-10.557],"0.2917":[-16.958,25.556,-11.785],"0.3333":[-18.119,25.544,-12.525],"0.375":[-20.496,25.999,-13.72],"0.4167":[-21.679,26.441,-14.135],"0.4583":[-23.966,27.679,-14.563],"0.5":[-25.535,28.988,-14.549],"0.5417":[-26.445,30.164,-14.416],"0.5833":[-27.808,33.04,-13.94],"0.625":[-28.23,34.627,-13.643],"0.6667":[-28.576,37.028,-13.24],"0.7083":[-28.735,40.069,-13.112],"0.75":[-28.67,42.476,-13.561],"0.7917":[-28.258,44.998,-14.22],"0.8333":[-27.455,47.395,-14.774],"0.875":[-26.551,49.628,-14.947],"0.9167":[-23.745,49.585,-15.116],"0.9583":[-15.949,47.081,-16.301],"1.0":[-12.859,43.589,-16.121],"1.0417":[-11.603,40.576,-15.142],"1.0833":[-10.723,38.379,-13.711],"1.125":[-10.621,38.003,-13.15],"1.1667":[-10.776,38.515,-12.788],"1.2083":[-10.855,38.956,-12.841],"1.25":[-10.834,39.046,-12.998],"1.2917":[-10.807,39.053,-13.121],"1.3333":[-10.772,38.948,-13.307],"1.375":[-10.779,38.924,-13.363],"1.4167":[-10.781,38.886,-13.43],"1.4583":[-10.778,38.87,-13.45],"1.5":[-10.771,38.859,-13.458],"1.5417":[-10.77,38.858,-13.459]}},"executor":{"rotation":{"0.0":[2.565,14.814,46.392],"0.0417":[-2.812,14.772,25.56],"0.0833":[-9.145,6.202,-9.118],"0.125":[-14.061,5.367,-33.06],"0.1667":[-14.562,3.557,-55.842],"0.2083":[-14.142,-5.139,-73.11],"0.25":[-39.245,-30.074,-104.112],"0.2917":[-67.732,-15.406,-102.834],"0.3333":[-83.586,-20.489,-100.571],"0.375":[-92.818,-27.132,-94.445],"0.4167":[-92.545,-26.984,-94.919],"0.4583":[-92.592,-27.094,-94.895],"0.5":[-91.667,-25.227,-95.37],"0.5417":[-85.76,-12.48,-97.097],"0.5833":[-56.559,31.734,-78.434],"0.625":[-22.862,41.356,-42.533],"0.6667":[8.862,19.294,2.172],"0.7083":[8.52,-22.918,14.271],"0.75":[16.997,-63.575,-1.983],"0.7917":[152.276,-77.709,-132.931],"0.8333":[174.252,-37.684,-149.414],"0.875":[172.92,13.284,-148.344],"0.9167":[170.282,55.627,-152.003],"0.9583":[180,151.254,-137.014],"1.0":[160.391,188.422,-129.016],"1.0417":[159.745,171.534,-113.287],"1.0833":[166.922,152.544,-101.728],"1.125":[172.423,148.674,-102.53],"1.1667":[174.377,148.54,-101.943],"1.2083":[175.295,148.221,-100.732],"1.25":[175.287,145.939,-99.604],"1.2917":[175.116,144.839,-99.339],"1.3333":[174.889,144.123,-98.752],"1.375":[174.757,144.232,-98.694],"1.4167":[174.637,145.202,-98.605],"1.4583":[174.752,145.705,-98.606],"1.5":[174.901,145.894,-98.689],"1.5417":[174.924,145.917,-98.706]},"position":{"0.0":[9.09,53.123,-18.4],"0.0417":[8.882,56.949,-18.796],"0.0833":[7.17,60.915,-17.42],"0.125":[8.726,63.956,-19.919],"0.1667":[8.672,65.114,-20.337],"0.2083":[8.614,65.33,-21.452],"0.25":[3.876,60.21,-24.37],"0.2917":[-8.517,54.048,-21.336],"0.3333":[-16.774,48.015,-15.485],"0.375":[-20.661,43.059,-9.814],"0.4167":[-20.545,43.177,-9.844],"0.4583":[-20.552,43.177,-9.84],"0.5":[-20.461,43.176,-9.908],"0.5417":[-19.845,43.178,-10.375],"0.5833":[-17.364,43.197,-12.144],"0.625":[-15.82,43.221,-13.155],"0.6667":[-13.562,43.285,-14.424],"0.7083":[-11.696,47.161,-14.995],"0.75":[-11.062,55.389,-15.781],"0.7917":[-10.36,58.635,-16.936],"0.8333":[-9.698,60.233,-17.349],"0.875":[-8.848,61.337,-17.599],"0.9167":[-9.468,60.978,-17.555],"0.9583":[-7.909,60.602,-18.91],"1.0":[-6.457,58.576,-18.879],"1.0417":[-5.206,55.741,-17.978],"1.0833":[-4.509,53.538,-16.661],"1.125":[-4.647,53.159,-16.142],"1.1667":[-4.873,53.623,-15.799],"1.2083":[-4.981,54.049,-15.859],"1.25":[-4.967,54.237,-16.004],"1.2917":[-4.94,54.302,-16.109],"1.3333":[-4.897,54.257,-16.274],"1.375":[-4.898,54.243,-16.322],"1.4167":[-4.89,54.195,-16.38],"1.4583":[-4.89,54.174,-16.396],"1.5":[-4.891,54.164,-16.4],"1.5417":[-4.89,54.163,-16.401]}},"lefthand_1":{"rotation":{"0.0":[0,0,0],"0.2917":[-25.8364,-3.2837,-6.7466],"0.3333":[-25,0,0],"0.4167":[0,0,0]},"position":{"0.0":[0,0,0],"0.2917":[-3.8,3,1],"0.3333":[-1,3,1],"0.4167":[0,0,0]},"scale":[1,1.5,1]},"righthand_1":{"position":[0,2.75,1.5],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.001,-0.002,-0.001],"0.1667":[0.037,-0.053,0.04],"0.2083":[0.139,-0.261,0.17],"0.25":[0.168,-0.52,-0.026],"0.2917":[0.05,-0.289,0.524],"0.3333":[-0.074,0.182,0.583],"0.375":[-0.163,0.502,-0.049],"0.4167":[-0.183,0.515,0.453],"0.4583":[-0.218,0.442,-0.17],"0.5":[-0.184,0.331,-0.161],"0.5417":[-0.108,0.243,0.062],"0.5833":[-0.007,0.102,0.258],"0.625":[0.004,0.065,0.143],"0.6667":[0.015,0.025,-0.092],"0.7083":[0.015,-0.02,0.017],"0.75":[-0.278,-0.017,0.005],"0.7917":[-0.485,-0.036,-0.021],"0.8333":[-0.551,-0.117,-0.009],"0.875":[-0.583,-0.183,0.004],"0.9167":[-0.583,-0.189,0.004],"0.9583":[-0.564,-0.207,-0.058],"1.0":[-0.36,-0.286,-0.296],"1.0417":[-0.166,-0.261,0.021],"1.0833":[0.001,-0.203,0.25],"1.125":[0.163,-0.101,0.069],"1.1667":[0.275,0.025,-0.19],"1.2083":[0.278,0.106,-0.13],"1.25":[0.253,0.155,0.13],"1.2917":[0.203,0.199,0.07],"1.3333":[0.117,0.215,-0.09],"1.375":[0.075,0.2,-0.005],"1.4167":[0.027,0.126,0.052],"1.4583":[0.011,0.051,0.024],"1.5":[0,0.006,0.001],"1.5417":[0,-0.001,0.001]}}},"sound_effects":{"0.0":{"effect":"melee.executor.executor_swing_c"},"0.6667":{"effect":"melee.executor.executor_rotate_c"}}},"run_start":{"animation_length":0.2333,"bones":{"melee_and_right":{"rotation":{"0.0":[0,0,0],"0.1":[10.6406,-14.4375,-20],"0.1667":[0,-30,-77.5]},"position":{"0.0":[0,0,0],"0.1":[-4.625,-7.1875,0],"0.2333":[0,-28.0806,0]}},"lefthand":{"rotation":{"0.0":[0,0,0],"0.0667":[-0.9525,-10.7269,13.8908],"0.1333":[-1.5163,-13.5284,8.465]},"position":{"0.0":[0,0,0],"0.1333":[-0.2656,-4.2969,0.1875],"0.2":[-0.5944,0.4213,0.44]}},"knife_and_right":{"rotation":{"0.0":[0,0,0],"0.1":[10.6406,-14.4375,-20],"0.1667":[8,26,-22.5]},"position":{"0.0":[0,0,0],"0.1":[-4.625,-7.1875,0],"0.2333":[-0.9,-10.0806,-6]}}}},"run":{"loop":true,"animation_length":0.6,"bones":{"melee_and_right":{"rotation":{"0.0":[0,-30,-77.5],"0.0667":[0,-30,-77.5],"0.1333":{"pre":[0,-30,-48.75],"post":[0,-30,-48.75],"lerp_mode":"catmullrom"},"0.2":{"post":[0,-30,-33.5],"lerp_mode":"catmullrom"},"0.3":{"post":[-9.75,-30,-26.5312],"lerp_mode":"catmullrom"},"0.4":{"post":[-21.25,-30,-28.25],"lerp_mode":"catmullrom"},"0.4667":[0,-30,-52.98],"0.5333":[0,-30,-77.5]},"position":{"0.0":[0,-28.0806,0],"0.0667":[1.0781,-28.3769,0],"0.1333":{"pre":[-0.42,-16.9894,0],"post":[-0.42,-16.9894,0],"lerp_mode":"catmullrom"},"0.2":{"post":[-1.97,-9.5669,0],"lerp_mode":"catmullrom"},"0.3":{"post":[-2.8919,-4.8594,0],"lerp_mode":"catmullrom"},"0.4":{"post":[-1.97,-6.0475,0],"lerp_mode":"catmullrom"},"0.4667":[-0.98,-11.3919,0],"0.5333":[0,-28.0806,0]}},"root":{"rotation":{"0.0":[0,0,0],"0.0667":[0,0,0],"0.1333":{"pre":[0,0,0],"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.3333":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.4667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.5333":[0,0,0],"0.6":[0,0,0]},"position":{"0.0":[0,0,0],"0.0667":[0,-0.3125,-0.8594],"0.1333":{"pre":[0,-1.0781,-0.7344],"post":[0,-1.0781,-0.7344],"lerp_mode":"catmullrom"},"0.2":{"post":[0,-0.7656,-0.3594],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0.1094,0],"lerp_mode":"catmullrom"},"0.3333":{"post":[0,0.25,0.3594],"lerp_mode":"catmullrom"},"0.4":{"post":[0,-0.625,0.7656],"lerp_mode":"catmullrom"},"0.4667":{"post":[0,-0.4531,0.9062],"lerp_mode":"catmullrom"},"0.5333":[0,0,0.7031],"0.6":[0,0,0]}},"lefthand":{"rotation":{"0.0":[-1.5163,-13.5284,8.465],"0.0667":[0.3666,-16.9644,19.7489],"0.1333":{"pre":[-4.3575,-10.3212,6.2426],"post":[-4.3575,-10.3212,6.2426],"lerp_mode":"catmullrom"},"0.2":{"post":[-4.3575,11.8507,3.3832],"lerp_mode":"catmullrom"},"0.2667":{"post":[-4.4725,15.7063,2.5444],"lerp_mode":"catmullrom"},"0.3667":{"post":[-4.3575,11.8507,3.3832],"lerp_mode":"catmullrom"},"0.4333":{"post":[-3.3525,-6.3238,8.9144],"lerp_mode":"catmullrom"},"0.5333":[0.3666,-16.9644,19.7489],"0.6":[-1.5163,-13.5284,8.465]},"position":{"0.0":[-0.5944,0.4213,0.44],"0.0667":[-1.1256,1.0462,-0.185],"0.1333":{"pre":[1.2512,-2.5775,-0.3256],"post":[1.2512,-2.5775,-0.3256],"lerp_mode":"catmullrom"},"0.2":{"post":[4.6225,-12.5444,-0.26],"lerp_mode":"catmullrom"},"0.3":{"post":[5.5362,-13.0344,-0.26],"lerp_mode":"catmullrom"},"0.4":{"post":[4.6225,-9.5288,-0.26],"lerp_mode":"catmullrom"},"0.4667":{"post":[2.6888,-5.4525,-0.0287],"lerp_mode":"catmullrom"},"0.5333":[0.41,-0.7987,0.44],"0.6":[-0.5944,0.4213,0.44]}},"knife_and_right":{"rotation":{"0.0":[8,26,-22.5],"0.0667":[8,26,-22.5],"0.1333":{"pre":[8,26,-10.75],"post":[8,26,-10.75],"lerp_mode":"catmullrom"},"0.2":{"post":[8,26,4.5],"lerp_mode":"catmullrom"},"0.3":{"post":[3.5735,25.6893,11.8827],"lerp_mode":"catmullrom"},"0.4":{"post":[6.75,26,7.75],"lerp_mode":"catmullrom"},"0.4667":[8,26,-16.98],"0.5333":[8,26,-22.5]},"position":{"0.0":[-0.9,-10.0806,-6],"0.0667":[0.1781,-10.3769,-6],"0.1333":{"pre":[-0.32,-8.9894,-6],"post":[-0.32,-8.9894,-6],"lerp_mode":"catmullrom"},"0.2":{"post":[-0.87,-6.5669,-6],"lerp_mode":"catmullrom"},"0.3":{"post":[-1.2591,-1.6094,-6],"lerp_mode":"catmullrom"},"0.4":{"post":[0.03,-4.0475,-6],"lerp_mode":"catmullrom"},"0.4667":[0.02,-8.3919,-6],"0.5333":[0,-10.0806,-6]}}}},"run_end":{"animation_length":0.7,"bones":{"melee_and_right":{"rotation":{"0.0333":[0,-30,-77.5],"0.1":[10.6406,-14.4375,-20],"0.2":[0,0,2.75],"0.3":[0,0,0]},"position":{"0.0":[0,-28.0806,0],"0.1":[-4.625,-7.1875,0],"0.1667":[0,0,0]}},"root":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.3333":[0,0,0],"0.4333":[0,0,0]},"position":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2":{"post":[0,-0.5781,0],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.3333":[0,0,0],"0.4333":[0,0,0]}},"lefthand":{"rotation":{"0.0667":[-1.5163,-17.5284,31.465],"0.1333":[-0.9525,-10.7269,13.8908],"0.2":[0,0,-10],"0.2667":[0,0,0]},"position":{"0.0":[-0.5944,-1.4538,1.565],"0.1333":[0,0,0]}},"knife_and_right":{"rotation":{"0.0333":[0,-30,-77.5],"0.1":[10.6406,-14.4375,-20],"0.2":[0,0,1.4492],"0.3":[0,0,0]},"position":{"0.0":[0,-28.0806,0],"0.1":[-4.625,-7.1875,0],"0.1667":[0,0,0]}}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/executor.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/executor.geo.json new file mode 100644 index 0000000..6b4a64f --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/executor.geo.json @@ -0,0 +1 @@ +{"format_version":"1.21.0","minecraft:geometry":[{"description":{"identifier":"geometry.executor","texture_width":64,"texture_height":64,"visible_bounds_width":24,"visible_bounds_height":10,"visible_bounds_offset":[0,1,0]},"bones":[{"name":"root","pivot":[0,9.6875,4.3375]},{"name":"bone5","parent":"root","pivot":[0,9.6875,4.3375]},{"name":"fn_lefthand","parent":"bone5","pivot":[-6,19,0]},{"name":"lefthand","parent":"fn_lefthand","pivot":[-6,19,0]},{"name":"lefthand_1","parent":"lefthand","pivot":[-6,19,0]},{"name":"lefthand_pos","parent":"lefthand_1","pivot":[0,8,0],"cubes":[{"origin":[-7,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[7,12],"uv_size":[3,12]},"east":{"uv":[8,0],"uv_size":[4,12]},"south":{"uv":[10,12],"uv_size":[3,12]},"west":{"uv":[0,12],"uv_size":[4,12]},"up":{"uv":[15,4],"uv_size":[3,4]},"down":{"uv":[15,12],"uv_size":[3,-4]}}}]},{"name":"knife_and_right","parent":"bone5","pivot":[6,19,0]},{"name":"righthand","parent":"knife_and_right","pivot":[6,19,0]},{"name":"righthand_1","parent":"righthand","pivot":[6,19,0]},{"name":"righthand_pos","parent":"righthand_1","pivot":[0,8,0],"cubes":[{"origin":[4,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[12,0],"uv_size":[3,12]},"east":{"uv":[0,0],"uv_size":[4,12]},"south":{"uv":[4,12],"uv_size":[3,12]},"west":{"uv":[4,0],"uv_size":[4,12]},"up":{"uv":[13,12],"uv_size":[3,4]},"down":{"uv":[15,4],"uv_size":[3,-4]}}}]},{"name":"executor","parent":"knife_and_right","pivot":[0,4.3,0.468],"cubes":[{"origin":[-0.1417,2.2104,-0.2303],"size":[0.3105,1.242,0.54],"pivot":[0.0067,2.8314,0.4312],"rotation":[170,0,180],"uv":{"north":{"uv":[3,18],"uv_size":[0.25,1.25]},"down":{"uv":[1,24.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1417,2.6154,-0.2557],"size":[0.3105,0.135,0.027],"pivot":[0.0067,2.8314,0.4312],"rotation":[170,0,180],"uv":{"north":{"uv":[21,33],"uv_size":[0.25,0.125]},"east":{"uv":[42,6],"uv_size":[0.125,0.125]},"west":{"uv":[7,42],"uv_size":[0.125,0.125]},"up":{"uv":[33,21],"uv_size":[0.25,0.125]},"down":{"uv":[22,33.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,2.8314,-0.2557],"size":[0.3105,0.135,0.027],"pivot":[0.0067,2.8314,0.4312],"rotation":[170,0,180],"uv":{"north":{"uv":[33,22],"uv_size":[0.25,0.125]},"east":{"uv":[42,7],"uv_size":[0.125,0.125]},"west":{"uv":[8,42],"uv_size":[0.125,0.125]},"up":{"uv":[23,33],"uv_size":[0.25,0.125]},"down":{"uv":[33,23.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.3105,3.3879,0.9654],"size":[0.2835,0.162,0.027],"pivot":[0.2295,3.2124,1.0059],"rotation":[-172.5,0,180],"uv":{"north":{"uv":[24,33],"uv_size":[0.25,0.125]},"east":{"uv":[42,8],"uv_size":[0.125,0.125]},"west":{"uv":[9,42],"uv_size":[0.125,0.125]},"up":{"uv":[33,24],"uv_size":[0.25,0.125]},"down":{"uv":[25,33.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,3.0474,-0.2557],"size":[0.3105,0.135,0.027],"pivot":[0.0067,2.8314,0.4312],"rotation":[170,0,180],"uv":{"north":{"uv":[33,25],"uv_size":[0.25,0.125]},"east":{"uv":[42,9],"uv_size":[0.125,0.125]},"west":{"uv":[10,42],"uv_size":[0.125,0.125]},"up":{"uv":[26,33],"uv_size":[0.25,0.125]},"down":{"uv":[33,26.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.9756,0.7666],"size":[0.3105,0.729,0.486],"pivot":[0.0067,2.2996,0.991],"rotation":[165,0,180],"uv":{"north":{"uv":[21,11],"uv_size":[0.25,0.75]},"east":{"uv":[5,16],"uv_size":[0.5,0.75]},"west":{"uv":[6,16],"uv_size":[0.5,0.75]},"down":{"uv":[24,1.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1417,2.1646,0.7514],"size":[0.3105,0.135,0.027],"pivot":[0.0067,2.2996,0.991],"rotation":[165,0,180],"uv":{"north":{"uv":[27,33],"uv_size":[0.25,0.125]},"east":{"uv":[42,10],"uv_size":[0.125,0.125]},"west":{"uv":[11,42],"uv_size":[0.125,0.125]},"up":{"uv":[33,27],"uv_size":[0.25,0.125]},"down":{"uv":[28,33.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,2.3806,0.748],"size":[0.3105,0.135,0.027],"pivot":[0.0067,2.2996,0.991],"rotation":[165,0,180],"uv":{"north":{"uv":[33,28],"uv_size":[0.25,0.125]},"east":{"uv":[42,11],"uv_size":[0.125,0.125]},"west":{"uv":[12,42],"uv_size":[0.125,0.125]},"up":{"uv":[29,33],"uv_size":[0.25,0.125]},"down":{"uv":[33,29.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.0998,0.8274],"size":[0.3105,0.567,0.108],"pivot":[0.0067,2.2996,0.991],"rotation":[155,0,180],"uv":{"east":{"uv":[25,21],"uv_size":[0.125,0.625]},"west":{"uv":[22,25],"uv_size":[0.125,0.625]}}},{"origin":[-0.1958,0.6603,1.6464],"size":[0.3105,0.621,0.108],"pivot":[-0.0203,1.2813,1.6464],"rotation":[-175,0,180],"uv":{"east":{"uv":[25,22],"uv_size":[0.125,0.625]},"west":{"uv":[23,25],"uv_size":[0.125,0.625]}}},{"origin":[-0.1958,0.9033,1.7544],"size":[0.3105,0.459,0.054],"pivot":[-0.0203,1.2813,1.6464],"rotation":[-175,0,180],"uv":{"east":{"uv":[27,9],"uv_size":[0.125,0.5]},"west":{"uv":[10,27],"uv_size":[0.125,0.5]},"up":{"uv":[30,33],"uv_size":[0.25,0.125]}}},{"origin":[-0.1958,0.2553,1.6464],"size":[0.3105,0.405,0.054],"pivot":[-0.0203,1.2813,1.6464],"rotation":[-175,0,180],"uv":{"east":{"uv":[19,29],"uv_size":[0.125,0.375]},"west":{"uv":[29,19],"uv_size":[0.125,0.375]}}},{"origin":[-0.1958,0.2198,1.4223],"size":[0.3105,0.216,0.054],"pivot":[-0.0203,0.2198,1.4763],"rotation":[-177,0,180],"uv":{"east":{"uv":[33,30],"uv_size":[0.125,0.25]},"south":{"uv":[27,10],"uv_size":[0.25,0.25]},"west":{"uv":[31,33],"uv_size":[0.125,0.25]}}},{"origin":[-0.1417,0.407,1.4952],"size":[0.3105,0.243,0.054],"pivot":[0.0067,0.515,1.5188],"rotation":[-179.5,0,180],"uv":{"east":{"uv":[33,31],"uv_size":[0.125,0.25]},"south":{"uv":[11,27],"uv_size":[0.25,0.25]},"west":{"uv":[32,33],"uv_size":[0.125,0.25]}}},{"origin":[-0.0877,0.2838,1.5492],"size":[0.2025,0.378,0.081],"pivot":[0.0067,0.515,1.5188],"rotation":[-179.5,0,180],"uv":{"south":{"uv":[25,13],"uv_size":[0.25,0.375]}}},{"origin":[-0.1148,0.6472,1.4356],"size":[0.2025,0.27,0.081],"pivot":[-0.0067,0.8396,1.4507],"rotation":[173,0,180],"uv":{"south":{"uv":[27,11],"uv_size":[0.25,0.25]}}},{"origin":[-0.1148,0.9,1.305],"size":[0.2025,0.135,0.108],"pivot":[-0.0067,1.008,1.3725],"rotation":[155.5,0,180],"uv":{"south":{"uv":[33,32],"uv_size":[0.25,0.125]}}},{"origin":[-0.1148,1.0131,1.2679],"size":[0.2025,0.162,0.135],"pivot":[-0.0067,1.008,1.3725],"rotation":[133,0,180],"uv":{"east":{"uv":[42,12],"uv_size":[0.125,0.125]},"south":{"uv":[33,33],"uv_size":[0.25,0.125]},"west":{"uv":[13,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.0671,1.1008],"size":[0.2025,0.162,0.216],"pivot":[-0.0067,1.008,1.3725],"rotation":[98,0,180],"uv":{"east":{"uv":[0,34],"uv_size":[0.25,0.125]},"south":{"uv":[34,0],"uv_size":[0.25,0.125]},"west":{"uv":[1,34],"uv_size":[0.25,0.125]}}},{"origin":[-0.1148,1.2048,1.1283],"size":[0.2025,0.189,0.216],"pivot":[-0.0067,1.1896,1.2566],"rotation":[78,0,180],"uv":{"east":{"uv":[12,27],"uv_size":[0.25,0.25]},"south":{"uv":[27,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,27],"uv_size":[0.25,0.25]}}},{"origin":[-0.1148,1.027,0.943],"size":[0.2025,0.162,0.189],"pivot":[-0.0067,1.1199,1.024],"rotation":[45.5,0,180],"uv":{"east":{"uv":[34,1],"uv_size":[0.25,0.125]},"south":{"uv":[2,34],"uv_size":[0.25,0.125]},"west":{"uv":[34,2],"uv_size":[0.25,0.125]}}},{"origin":[-0.1148,1.184,0.9869],"size":[0.2025,0.162,0.108],"pivot":[-0.0067,1.1199,1.024],"rotation":[20.5,0,180],"uv":{"east":{"uv":[42,13],"uv_size":[0.125,0.125]},"south":{"uv":[3,34],"uv_size":[0.25,0.125]},"west":{"uv":[14,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.6264,1.5021],"size":[0.3105,0.189,0.054],"pivot":[0.0067,0.7732,1.5156],"rotation":[174.5,0,180],"uv":{"east":{"uv":[34,3],"uv_size":[0.125,0.25]},"south":{"uv":[27,13],"uv_size":[0.25,0.25]},"west":{"uv":[4,34],"uv_size":[0.125,0.25]}}},{"origin":[-0.1958,0.8046,1.4172],"size":[0.3105,0.189,0.054],"pivot":[-0.0203,0.8114,1.4712],"rotation":[168.5,0,180],"uv":{"east":{"uv":[34,4],"uv_size":[0.125,0.25]},"south":{"uv":[14,27],"uv_size":[0.25,0.25]},"west":{"uv":[5,34],"uv_size":[0.125,0.25]}}},{"origin":[-0.1958,0.9258,1.364],"size":[0.3105,0.27,0.081],"pivot":[-0.0203,0.9899,1.4349],"rotation":[156,0,180],"uv":{"east":{"uv":[34,5],"uv_size":[0.125,0.25]},"south":{"uv":[27,14],"uv_size":[0.25,0.25]},"west":{"uv":[6,34],"uv_size":[0.125,0.25]}}},{"origin":[-0.1417,1.1205,1.2691],"size":[0.3105,0.189,0.081],"pivot":[0.0067,1.242,1.3198],"rotation":[137.5,0,180],"uv":{"east":{"uv":[34,6],"uv_size":[0.125,0.25]},"south":{"uv":[15,27],"uv_size":[0.25,0.25]},"west":{"uv":[7,34],"uv_size":[0.125,0.25]}}},{"origin":[-0.1417,1.2825,1.2573],"size":[0.3105,0.135,0.054],"pivot":[0.0067,1.242,1.3198],"rotation":[105,0,180],"uv":{"east":{"uv":[42,14],"uv_size":[0.125,0.125]},"south":{"uv":[34,7],"uv_size":[0.25,0.125]},"west":{"uv":[15,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,1.2587,1.1092],"size":[0.3105,0.108,0.054],"pivot":[0.0067,1.2637,1.1969],"rotation":[72,0,180],"uv":{"east":{"uv":[42,15],"uv_size":[0.125,0.125]},"south":{"uv":[8,34],"uv_size":[0.25,0.125]},"west":{"uv":[16,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,1.1798,0.9891],"size":[0.3105,0.162,0.081],"pivot":[0.0067,1.2541,1.0431],"rotation":[42.5,0,180],"uv":{"east":{"uv":[42,16],"uv_size":[0.125,0.125]},"south":{"uv":[34,8],"uv_size":[0.25,0.125]},"west":{"uv":[17,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,1.0987,0.8671],"size":[0.3105,0.189,0.14],"pivot":[0.0067,1.1595,0.9564],"rotation":[22.5,0,180],"uv":{"east":{"uv":[9,34],"uv_size":[0.125,0.25]},"south":{"uv":[27,15],"uv_size":[0.25,0.25]},"west":{"uv":[34,9],"uv_size":[0.125,0.25]},"down":{"uv":[10,34.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,0.6272,0.8693],"size":[0.3105,0.243,0.054],"pivot":[0.0067,0.7369,0.8963],"rotation":[-1.5,0,180],"uv":{"east":{"uv":[34,10],"uv_size":[0.125,0.25]},"south":{"uv":[16,27],"uv_size":[0.25,0.25]},"west":{"uv":[11,34],"uv_size":[0.125,0.25]}}},{"origin":[-0.1417,0.3467,0.891],"size":[0.3105,0.27,0.054],"pivot":[0.0067,0.4876,0.918],"rotation":[-9,0,180],"uv":{"east":{"uv":[34,11],"uv_size":[0.125,0.25]},"south":{"uv":[27,16],"uv_size":[0.25,0.25]},"west":{"uv":[12,34],"uv_size":[0.125,0.25]}}},{"origin":[-0.0877,0.3467,0.9449],"size":[0.2025,0.27,0.081],"pivot":[0.0067,0.4876,0.918],"rotation":[-9,0,180],"uv":{"south":{"uv":[17,27],"uv_size":[0.25,0.25]}}},{"origin":[-0.1417,0.0914,0.8421],"size":[0.3105,0.297,0.154],"pivot":[0.0067,0.2399,0.9691],"rotation":[-14.5,0,180],"uv":{"east":{"uv":[34,12],"uv_size":[0.125,0.25]},"south":{"uv":[27,17],"uv_size":[0.25,0.25]},"west":{"uv":[13,34],"uv_size":[0.125,0.25]}}},{"origin":[-0.1148,0.1083,0.9939],"size":[0.2025,0.297,0.081],"pivot":[-0.0067,0.2568,1.0344],"rotation":[-14.5,0,180],"uv":{"south":{"uv":[18,27],"uv_size":[0.25,0.25]}}},{"origin":[-0.1958,0.0995,0.7784],"size":[0.3105,0.27,0.254],"inflate":0.002,"pivot":[-0.0203,0.1029,1.0324],"rotation":[-18.668,0,180],"uv":{"east":{"uv":[27,18],"uv_size":[0.25,0.25]},"south":{"uv":[19,27],"uv_size":[0.25,0.25]},"west":{"uv":[27,19],"uv_size":[0.25,0.25]}}},{"origin":[-0.1417,0.0928,1.0324],"size":[0.2025,0.27,0.081],"pivot":[-0.0203,0.1029,1.0324],"rotation":[-18.668,0,180],"uv":{"south":{"uv":[20,27],"uv_size":[0.25,0.25]}}},{"origin":[-0.1958,0.1805,0.9244],"size":[0.3105,0.135,0.054],"pivot":[-0.0203,0.1029,1.0324],"rotation":[-18.668,0,180],"uv":{"east":{"uv":[42,17],"uv_size":[0.125,0.125]},"west":{"uv":[18,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.0067,-0.157,1.1488],"size":[0.2025,0.1253,0.2402],"pivot":[0.0473,-0.145,1.1322],"rotation":[145,0,180],"uv":{"east":{"uv":[34,13],"uv_size":[0.25,0.125]},"south":{"uv":[14,34],"uv_size":[0.25,0.125]},"west":{"uv":[34,14],"uv_size":[0.25,0.125]},"down":{"uv":[27,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0067,-0.157,1.0678],"size":[0.2025,0.0443,0.081],"pivot":[0.0473,-0.145,1.1322],"rotation":[145,0,180],"uv":{"east":{"uv":[42,18],"uv_size":[0.125,0.125]},"south":{"uv":[15,34],"uv_size":[0.25,0.125]},"west":{"uv":[19,42],"uv_size":[0.125,0.125]},"down":{"uv":[34,15.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1688,-0.1664,-2.3942],"size":[0.3105,0.0167,0.0292],"pivot":[-0.0067,-0.1544,-0.6382],"rotation":[-180,0,180],"uv":{"north":{"uv":[16,34],"uv_size":[0.25,0.125]},"east":{"uv":[42,19],"uv_size":[0.125,0.125]},"west":{"uv":[20,42],"uv_size":[0.125,0.125]},"down":{"uv":[34,16.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,0.828,0.8846],"size":[0.3105,0.216,0.054],"pivot":[0.0067,0.9344,0.9116],"rotation":[9.5,0,180],"uv":{"east":{"uv":[17,34],"uv_size":[0.125,0.25]},"south":{"uv":[21,27],"uv_size":[0.25,0.25]},"west":{"uv":[34,17],"uv_size":[0.125,0.25]}}},{"origin":[-0.0877,0.6272,0.9233],"size":[0.2025,0.243,0.081],"pivot":[0.0067,0.7369,0.8963],"rotation":[-1.5,0,180],"uv":{"south":{"uv":[27,21],"uv_size":[0.25,0.25]}}},{"origin":[-0.0877,0.9091,0.9386],"size":[0.2025,0.135,0.081],"pivot":[0.0067,0.9344,0.9116],"rotation":[9.5,0,180],"uv":{"south":{"uv":[18,34],"uv_size":[0.25,0.125]}}},{"origin":[-0.1958,0.1592,1.6013],"size":[0.3105,0.1468,0.054],"pivot":[-0.0203,0.306,1.6013],"rotation":[-177,0,180],"uv":{"north":{"uv":[34,18],"uv_size":[0.25,0.125]},"east":{"uv":[42,20],"uv_size":[0.125,0.125]},"west":{"uv":[21,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,0.1862,1.6553],"size":[0.3105,0.0928,0.027],"pivot":[-0.0203,0.306,1.6013],"rotation":[-177,0,180],"uv":{"east":{"uv":[42,21],"uv_size":[0.125,0.125]},"west":{"uv":[22,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.1284,1.5667],"size":[0.3105,0.0316,0.0164],"pivot":[0.0067,0.1583,1.5801],"rotation":[-177.5,0,180],"uv":{"north":{"uv":[19,34],"uv_size":[0.25,0.125]},"east":{"uv":[42,22],"uv_size":[0.125,0.125]},"west":{"uv":[23,42],"uv_size":[0.125,0.125]},"down":{"uv":[34,19.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1958,-0.0404,1.5908],"size":[0.3105,0.135,0.0253],"pivot":[-0.0203,0.1149,1.5908],"rotation":[-47.5,0,180],"uv":{"north":{"uv":[20,34],"uv_size":[0.25,0.125]},"east":{"uv":[42,23],"uv_size":[0.125,0.125]},"west":{"uv":[24,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,-0.1366,1.5908],"size":[0.2025,0.108,0.0523],"pivot":[-0.0203,0.1149,1.5908],"rotation":[-47.5,0,180],"uv":{"north":{"uv":[34,20],"uv_size":[0.25,0.125]},"east":{"uv":[42,24],"uv_size":[0.125,0.125]},"west":{"uv":[25,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.3903,1.4521],"size":[0.3105,0.081,0.027],"pivot":[0.0067,0.4511,1.5331],"rotation":[-140,0,180],"uv":{"north":{"uv":[21,34],"uv_size":[0.25,0.125]},"east":{"uv":[42,25],"uv_size":[0.125,0.125]},"west":{"uv":[26,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.383,1.5001],"size":[0.3105,0.081,0.054],"pivot":[0.0067,0.4336,1.544],"rotation":[147.5,0,180],"uv":{"north":{"uv":[34,21],"uv_size":[0.25,0.125]},"east":{"uv":[42,26],"uv_size":[0.125,0.125]},"west":{"uv":[27,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.5031,1.5467],"size":[0.3105,0.081,0.054],"pivot":[0.0067,0.5402,1.5737],"rotation":[147.5,0,180],"uv":{"north":{"uv":[22,34],"uv_size":[0.25,0.125]},"east":{"uv":[42,27],"uv_size":[0.125,0.125]},"west":{"uv":[28,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.4992,1.4603],"size":[0.3105,0.081,0.027],"pivot":[0.0067,0.56,1.5413],"rotation":[-140,0,180],"uv":{"north":{"uv":[34,22],"uv_size":[0.25,0.125]},"east":{"uv":[42,28],"uv_size":[0.125,0.125]},"west":{"uv":[29,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.611,1.5549],"size":[0.3105,0.081,0.054],"pivot":[0.0067,0.6299,1.5874],"rotation":[150,0,180],"uv":{"north":{"uv":[23,34],"uv_size":[0.25,0.125]},"east":{"uv":[42,29],"uv_size":[0.125,0.125]},"west":{"uv":[30,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.5741,1.5596],"size":[0.3105,0.081,0.027],"pivot":[0.0067,0.6299,1.5874],"rotation":[-137.5,0,180],"uv":{"north":{"uv":[34,23],"uv_size":[0.25,0.125]},"east":{"uv":[42,30],"uv_size":[0.125,0.125]},"west":{"uv":[31,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.6838,1.5698],"size":[0.3105,0.081,0.027],"pivot":[0.0067,0.7396,1.5975],"rotation":[-137.5,0,180],"uv":{"north":{"uv":[24,34],"uv_size":[0.25,0.125]},"east":{"uv":[42,31],"uv_size":[0.125,0.125]},"west":{"uv":[32,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.7207,1.5651],"size":[0.3105,0.081,0.054],"pivot":[0.0067,0.7396,1.5975],"rotation":[150,0,180],"uv":{"north":{"uv":[34,24],"uv_size":[0.25,0.125]},"east":{"uv":[42,32],"uv_size":[0.125,0.125]},"west":{"uv":[33,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.7935,1.5833],"size":[0.3105,0.081,0.027],"pivot":[0.0067,0.8492,1.611],"rotation":[-137.5,0,180],"uv":{"north":{"uv":[25,34],"uv_size":[0.25,0.125]},"east":{"uv":[42,33],"uv_size":[0.125,0.125]},"west":{"uv":[34,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.8304,1.5785],"size":[0.3105,0.081,0.054],"pivot":[0.0067,0.8492,1.611],"rotation":[150,0,180],"uv":{"north":{"uv":[34,25],"uv_size":[0.25,0.125]},"east":{"uv":[42,34],"uv_size":[0.125,0.125]},"west":{"uv":[35,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.9015,1.5968],"size":[0.3105,0.081,0.027],"pivot":[0.0067,0.9572,1.6245],"rotation":[-135,0,180],"uv":{"north":{"uv":[26,34],"uv_size":[0.25,0.125]},"east":{"uv":[42,35],"uv_size":[0.125,0.125]},"west":{"uv":[36,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.9384,1.592],"size":[0.3105,0.081,0.054],"pivot":[0.0067,0.9572,1.6245],"rotation":[152.5,0,180],"uv":{"north":{"uv":[34,26],"uv_size":[0.25,0.125]},"east":{"uv":[42,36],"uv_size":[0.125,0.125]},"west":{"uv":[37,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,1.0095,1.6136],"size":[0.3105,0.081,0.027],"pivot":[0.0067,1.0652,1.6414],"rotation":[-135,0,180],"uv":{"north":{"uv":[27,34],"uv_size":[0.25,0.125]},"east":{"uv":[42,37],"uv_size":[0.125,0.125]},"west":{"uv":[38,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,1.0973,1.6778],"size":[0.3105,0.081,0.054],"pivot":[0.0067,1.0652,1.6414],"rotation":[-135,0,180],"uv":{"north":{"uv":[34,27],"uv_size":[0.25,0.125]},"east":{"uv":[42,38],"uv_size":[0.125,0.125]},"west":{"uv":[39,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,1.1725,1.6772],"size":[0.3105,0.108,0.081],"pivot":[0.0067,1.2214,1.6907],"rotation":[-170,0,180],"uv":{"north":{"uv":[28,34],"uv_size":[0.25,0.125]},"east":{"uv":[42,39],"uv_size":[0.125,0.125]},"west":{"uv":[40,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,1.2771,1.7107],"size":[0.3105,0.0405,0.081],"pivot":[-0.0203,1.3176,1.7107],"rotation":[175,0,180],"uv":{"north":{"uv":[34,28],"uv_size":[0.25,0.125]},"east":{"uv":[42,40],"uv_size":[0.125,0.125]},"west":{"uv":[41,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,1.3176,1.7107],"size":[0.3105,0.0405,0.081],"pivot":[-0.0203,1.3176,1.7107],"rotation":[160,0,180],"uv":{"north":{"uv":[29,34],"uv_size":[0.25,0.125]},"east":{"uv":[42,41],"uv_size":[0.125,0.125]},"west":{"uv":[42,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,1.425,1.7306],"size":[0.3105,0.4185,0.054],"pivot":[-0.0203,1.344,1.7036],"rotation":[150,0,180],"uv":{"north":{"uv":[14,25],"uv_size":[0.25,0.375]},"east":{"uv":[20,29],"uv_size":[0.125,0.375]},"west":{"uv":[29,20],"uv_size":[0.125,0.375]}}},{"origin":[-0.1958,1.3557,1.6969],"size":[0.3105,0.0675,0.081],"pivot":[-0.0203,1.3557,1.6969],"rotation":[150,0,180],"uv":{"north":{"uv":[34,29],"uv_size":[0.25,0.125]},"east":{"uv":[0,43],"uv_size":[0.125,0.125]},"west":{"uv":[43,0],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,1.3759,1.7656],"size":[0.3105,0.027,0.054],"pivot":[-0.0203,1.3523,1.7082],"rotation":[-167.5,0,180],"uv":{"east":{"uv":[1,43],"uv_size":[0.125,0.125]},"west":{"uv":[43,1],"uv_size":[0.125,0.125]},"up":{"uv":[30,34],"uv_size":[0.25,0.125]}}},{"origin":[-0.1417,1.3933,1.6322],"size":[0.3105,0.027,0.027],"pivot":[0.0067,1.4068,1.6339],"rotation":[-145,0,180],"uv":{"east":{"uv":[2,43],"uv_size":[0.125,0.125]},"west":{"uv":[43,2],"uv_size":[0.125,0.125]},"up":{"uv":[34,30],"uv_size":[0.25,0.125]}}},{"origin":[-0.1417,1.4625,1.5554],"size":[0.3105,0.027,0.054],"pivot":[0.0067,1.4878,1.5807],"rotation":[110,0,180],"uv":{"east":{"uv":[3,43],"uv_size":[0.125,0.125]},"west":{"uv":[43,3],"uv_size":[0.125,0.125]},"down":{"uv":[31,34.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1958,1.503,1.5051],"size":[0.3105,0.054,0.108],"pivot":[-0.0203,1.503,1.6131],"rotation":[61,0,180],"uv":{"east":{"uv":[4,43],"uv_size":[0.125,0.125]},"west":{"uv":[43,4],"uv_size":[0.125,0.125]},"down":{"uv":[34,31.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1958,1.6864,1.4042],"size":[0.3105,0.054,0.108],"pivot":[-0.0203,1.6864,1.5122],"rotation":[62,0,180],"uv":{"east":{"uv":[5,43],"uv_size":[0.125,0.125]},"west":{"uv":[43,5],"uv_size":[0.125,0.125]},"down":{"uv":[32,34.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1958,1.8704,1.3092],"size":[0.3105,0.054,0.108],"pivot":[-0.0203,1.8704,1.4172],"rotation":[64,0,180],"uv":{"east":{"uv":[6,43],"uv_size":[0.125,0.125]},"west":{"uv":[43,6],"uv_size":[0.125,0.125]},"down":{"uv":[34,32.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1958,2.0552,1.2208],"size":[0.3105,0.054,0.108],"pivot":[-0.0203,2.0552,1.3288],"rotation":[66,0,180],"uv":{"north":{"uv":[33,34],"uv_size":[0.25,0.125]},"east":{"uv":[7,43],"uv_size":[0.125,0.125]},"west":{"uv":[43,7],"uv_size":[0.125,0.125]},"down":{"uv":[34,33.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.481,1.5444],"size":[0.3105,0.027,0.027],"pivot":[0.0067,1.4878,1.5799],"rotation":[-100,0,180],"uv":{"east":{"uv":[8,43],"uv_size":[0.125,0.125]},"west":{"uv":[43,8],"uv_size":[0.125,0.125]},"up":{"uv":[34,34],"uv_size":[0.25,0.125]}}},{"origin":[-0.1417,1.5857,1.4994],"size":[0.3105,0.027,0.027],"pivot":[0.0067,1.5992,1.5062],"rotation":[-47.5,0,180],"uv":{"east":{"uv":[9,43],"uv_size":[0.125,0.125]},"south":{"uv":[0,35],"uv_size":[0.25,0.125]},"west":{"uv":[43,9],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,1.6575,1.4742],"size":[0.3105,0.027,0.027],"pivot":[-0.0203,1.6575,1.5012],"rotation":[-10,0,180],"uv":{"east":{"uv":[10,43],"uv_size":[0.125,0.125]},"south":{"uv":[35,0],"uv_size":[0.25,0.125]},"west":{"uv":[43,10],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,1.6275,1.4748],"size":[0.3105,0.054,0.027],"pivot":[-0.0203,1.6579,1.5018],"rotation":[20,0,180],"uv":{"east":{"uv":[11,43],"uv_size":[0.125,0.125]},"south":{"uv":[1,35],"uv_size":[0.25,0.125]},"west":{"uv":[43,11],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,1.8115,1.3528],"size":[0.3105,0.054,0.054],"pivot":[-0.0203,1.8419,1.4068],"rotation":[20,0,180],"uv":{"east":{"uv":[12,43],"uv_size":[0.125,0.125]},"south":{"uv":[35,1],"uv_size":[0.25,0.125]},"west":{"uv":[43,12],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,1.8415,1.3792],"size":[0.3105,0.054,0.027],"pivot":[-0.0203,1.8415,1.4062],"rotation":[-10,0,180],"uv":{"east":{"uv":[13,43],"uv_size":[0.125,0.125]},"south":{"uv":[2,35],"uv_size":[0.25,0.125]},"west":{"uv":[43,13],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,1.9963,1.2644],"size":[0.3105,0.054,0.054],"pivot":[-0.0203,2.0267,1.3184],"rotation":[20,0,180],"uv":{"east":{"uv":[14,43],"uv_size":[0.125,0.125]},"south":{"uv":[35,2],"uv_size":[0.25,0.125]},"west":{"uv":[43,14],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,2.0263,1.2908],"size":[0.3105,0.054,0.027],"pivot":[-0.0203,2.0263,1.3178],"rotation":[-10,0,180],"uv":{"east":{"uv":[15,43],"uv_size":[0.125,0.125]},"south":{"uv":[3,35],"uv_size":[0.25,0.125]},"west":{"uv":[43,15],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,1.5434,1.5338],"size":[0.3105,0.054,0.027],"pivot":[-0.0203,1.5974,1.5608],"rotation":[-75,0,180],"uv":{"east":{"uv":[16,43],"uv_size":[0.125,0.125]},"south":{"uv":[35,3],"uv_size":[0.25,0.125]},"west":{"uv":[43,16],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,1.7687,1.392],"size":[0.3105,0.054,0.027],"pivot":[-0.0203,1.7772,1.3621],"rotation":[-47.5,0,180],"uv":{"east":{"uv":[17,43],"uv_size":[0.125,0.125]},"south":{"uv":[4,35],"uv_size":[0.25,0.125]},"west":{"uv":[43,17],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,1.8179,1.3383],"size":[0.3105,0.054,0.054],"pivot":[-0.0203,1.7772,1.3621],"rotation":[-75,0,180],"uv":{"east":{"uv":[18,43],"uv_size":[0.125,0.125]},"south":{"uv":[35,4],"uv_size":[0.25,0.125]},"west":{"uv":[43,18],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,2.0036,1.2467],"size":[0.3105,0.054,0.054],"pivot":[-0.0203,1.9629,1.2706],"rotation":[-75,0,180],"uv":{"east":{"uv":[19,43],"uv_size":[0.125,0.125]},"south":{"uv":[5,35],"uv_size":[0.25,0.125]},"west":{"uv":[43,19],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,1.9544,1.3004],"size":[0.3105,0.054,0.027],"pivot":[-0.0203,1.9629,1.2706],"rotation":[-47.5,0,180],"uv":{"east":{"uv":[20,43],"uv_size":[0.125,0.125]},"south":{"uv":[35,5],"uv_size":[0.25,0.125]},"west":{"uv":[43,20],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,1.0464,1.6089],"size":[0.3105,0.081,0.054],"pivot":[0.0067,1.0652,1.6414],"rotation":[152.5,0,180],"uv":{"north":{"uv":[6,35],"uv_size":[0.25,0.125]},"east":{"uv":[21,43],"uv_size":[0.125,0.125]},"west":{"uv":[43,21],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,0.2852,1.5297],"size":[0.3105,0.081,0.054],"pivot":[0.0067,0.3257,1.5567],"rotation":[147.5,0,180],"uv":{"north":{"uv":[35,6],"uv_size":[0.25,0.125]},"east":{"uv":[22,43],"uv_size":[0.125,0.125]},"west":{"uv":[43,22],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,1.6667,0.8274],"size":[0.3105,0.378,0.162],"pivot":[0.0067,2.2996,0.991],"rotation":[155,0,180],"uv":{"east":{"uv":[21,29],"uv_size":[0.125,0.375]},"west":{"uv":[29,21],"uv_size":[0.125,0.375]}}},{"origin":[-0.1417,1.7191,0.9893],"size":[0.3105,0.324,0.513],"pivot":[0.0067,2.2996,0.991],"rotation":[155,0,180],"uv":{"east":{"uv":[12,21],"uv_size":[0.5,0.375]},"west":{"uv":[21,12],"uv_size":[0.5,0.375]}}},{"origin":[-0.1417,1.3951,1.2864],"size":[0.3105,0.324,0.216],"inflate":0.001,"pivot":[0.0067,2.2996,0.991],"rotation":[155,0,180],"uv":{"east":{"uv":[25,14],"uv_size":[0.25,0.375]},"west":{"uv":[15,25],"uv_size":[0.25,0.375]}}},{"origin":[-0.1958,0.8268,-3.8269],"size":[0.3105,0.059,2.134],"inflate":0.003,"pivot":[-0.0203,0.8268,-1.6914],"rotation":[-154.9079,0,180],"uv":{"north":{"uv":[7,35],"uv_size":[0.25,0.125]},"east":{"uv":[18,14],"uv_size":[2.125,0.125]},"south":{"uv":[35,7],"uv_size":[0.25,0.125]},"west":{"uv":[18,15],"uv_size":[2.125,0.125]},"up":{"uv":[11,13],"uv_size":[0.25,2.125]},"down":{"uv":[12,15.125],"uv_size":[0.25,-2.125]}}},{"origin":[-0.1958,0.8538,-3.8539],"size":[0.3105,0.216,2.133],"inflate":-0.001,"pivot":[-0.0203,0.8268,-1.6914],"rotation":[-154.9079,0,180],"uv":{"east":{"uv":[13,12],"uv_size":[2.125,0.25]},"west":{"uv":[13,13],"uv_size":[2.125,0.25]}}},{"origin":[-0.1958,1.0698,-1.9099],"size":[0.3105,0.054,0.189],"pivot":[-0.0203,0.8268,-1.6914],"rotation":[-154.9079,0,180],"uv":{"east":{"uv":[8,35],"uv_size":[0.25,0.125]},"west":{"uv":[35,8],"uv_size":[0.25,0.125]}}},{"origin":[-0.1958,0.8538,-1.7454],"size":[0.3105,0.1546,0.054],"pivot":[-0.0203,0.8268,-1.6914],"rotation":[-151.7093,0,180],"uv":{"north":{"uv":[9,35],"uv_size":[0.25,0.125]},"east":{"uv":[23,43],"uv_size":[0.125,0.125]},"south":{"uv":[35,9],"uv_size":[0.25,0.125]},"west":{"uv":[43,23],"uv_size":[0.125,0.125]},"up":{"uv":[10,35],"uv_size":[0.25,0.125]},"down":{"uv":[35,10.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1958,0.9868,-1.6323],"size":[0.3105,0.1756,0.027],"pivot":[-0.0203,0.9868,-1.6053],"rotation":[-144.791,0,180],"uv":{"north":{"uv":[11,35],"uv_size":[0.25,0.125]},"east":{"uv":[24,43],"uv_size":[0.125,0.125]},"south":{"uv":[35,11],"uv_size":[0.25,0.125]},"west":{"uv":[43,24],"uv_size":[0.125,0.125]},"up":{"uv":[12,35],"uv_size":[0.25,0.125]},"down":{"uv":[35,12.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1958,1.045,-1.6328],"size":[0.3105,0.054,0.189],"pivot":[-0.0203,1.099,-1.4662],"rotation":[-135.4632,0,180],"uv":{"east":{"uv":[13,35],"uv_size":[0.25,0.125]},"west":{"uv":[35,13],"uv_size":[0.25,0.125]},"up":{"uv":[22,27],"uv_size":[0.25,0.25]}}},{"origin":[-0.1417,0.8945,-1.3863],"size":[0.3105,0.054,0.189],"pivot":[0.0067,0.935,-1.2937],"rotation":[-146.2922,0,180],"uv":{"east":{"uv":[14,35],"uv_size":[0.25,0.125]},"west":{"uv":[35,14],"uv_size":[0.25,0.125]},"up":{"uv":[27,22],"uv_size":[0.25,0.25]}}},{"origin":[-0.1958,0.8408,-1.3944],"size":[0.3105,0.054,0.216],"pivot":[-0.0203,0.8948,-1.2091],"rotation":[-159.8295,0,180],"uv":{"east":{"uv":[15,35],"uv_size":[0.25,0.125]},"west":{"uv":[35,15],"uv_size":[0.25,0.125]},"up":{"uv":[23,27],"uv_size":[0.25,0.25]}}},{"origin":[-0.1958,-0.167,1.0447],"size":[0.3105,0.081,0.405],"pivot":[-0.0203,-0.167,1.0666],"rotation":[178.4908,0,180],"uv":{"east":{"uv":[22,29],"uv_size":[0.375,0.125]},"west":{"uv":[29,22],"uv_size":[0.375,0.125]},"down":{"uv":[25,15.375],"uv_size":[0.25,-0.375]}}},{"origin":[-0.1958,0.859,1.2286],"size":[0.3105,0.189,0.0321],"pivot":[-0.0203,-0.167,1.0666],"rotation":[-180,0,180],"uv":{"east":{"uv":[16,35],"uv_size":[0.125,0.25]},"west":{"uv":[35,16],"uv_size":[0.125,0.25]}}},{"origin":[-0.1958,-0.0276,1.2257],"size":[0.3105,1.7507,1.25],"inflate":0.002,"pivot":[-0.0203,-0.167,1.0666],"rotation":[-180,0,180],"uv":{"east":{"uv":[0,2],"uv_size":[1.25,1.75]},"west":{"uv":[2,2],"uv_size":[1.25,1.75]}}},{"origin":[-0.1958,-0.491,1.2607],"size":[0.3105,0.478,0.405],"inflate":0.001,"pivot":[-0.0203,-0.167,1.0666],"rotation":[-180,0,180],"uv":{"east":{"uv":[13,21],"uv_size":[0.375,0.5]},"west":{"uv":[21,13],"uv_size":[0.375,0.5]}}},{"origin":[4.2145,-2.1089,1.4077],"size":[0.3105,0.135,0.405],"pivot":[2.1849,-0.3269,1.1056],"rotation":[-180,0,180],"uv":{"east":{"uv":[23,29],"uv_size":[0.375,0.125]},"west":{"uv":[29,23],"uv_size":[0.375,0.125]}}},{"origin":[-0.4657,-5.7596,0.5653],"size":[0.3105,3.6543,0.1057],"inflate":0.001,"pivot":[-0.1552,-2.1052,0.671],"rotation":[-178,0,180],"uv":{"east":{"uv":[4,14],"uv_size":[0.125,3.625]},"west":{"uv":[13,14],"uv_size":[0.125,3.625]}}},{"origin":[-0.4657,-4.2345,0.4597],"size":[0.3105,2.133,0.1057],"pivot":[-0.1552,-2.1015,0.5654],"rotation":[-178,0,180],"uv":{"east":{"uv":[18,16],"uv_size":[0.125,2.125]},"west":{"uv":[19,0],"uv_size":[0.125,2.125]}}},{"origin":[-0.4657,-4.7662,0.3852],"size":[0.3105,0.533,0.1057],"pivot":[-0.1552,-4.2332,0.4909],"rotation":[177,0,180],"uv":{"east":{"uv":[14,28],"uv_size":[0.125,0.5]},"west":{"uv":[28,14],"uv_size":[0.125,0.5]}}},{"origin":[-0.4657,-5.1539,0.3459],"size":[0.3105,3.0463,0.1057],"inflate":-0.001,"pivot":[-0.1552,-2.1075,0.4516],"rotation":[177.4133,0,180],"uv":{"east":{"uv":[10,16],"uv_size":[0.125,3]},"west":{"uv":[11,16],"uv_size":[0.125,3]}}},{"origin":[-0.4657,-2.4492,0.4494],"size":[0.3105,0.3463,0.1057],"inflate":-0.001,"pivot":[-0.1552,-2.1028,0.5551],"rotation":[177.4133,0,180],"uv":{"east":{"uv":[10,16],"uv_size":[0.125,3]},"west":{"uv":[11,16],"uv_size":[0.125,3]}}},{"origin":[4.2145,-6.4559,1.5697],"size":[0.3105,0.432,0.0658],"pivot":[2.1849,-0.3269,1.1056],"rotation":[-180,0,180],"uv":{"east":{"uv":[24,29],"uv_size":[0.125,0.375]},"west":{"uv":[29,24],"uv_size":[0.125,0.375]}}},{"origin":[-0.1958,0.454,2.4757],"size":[0.3105,0.378,0.486],"pivot":[-0.0203,-0.167,1.0666],"rotation":[-180,0,180],"uv":{"east":{"uv":[14,21],"uv_size":[0.5,0.375]},"west":{"uv":[21,14],"uv_size":[0.5,0.375]}}},{"origin":[-0.1958,0.967,2.4757],"size":[0.3105,0.216,0.108],"pivot":[-0.0203,-0.167,1.0666],"rotation":[-180,0,180],"uv":{"east":{"uv":[17,35],"uv_size":[0.125,0.25]},"west":{"uv":[35,17],"uv_size":[0.125,0.25]}}},{"origin":[-0.1958,0.832,2.4757],"size":[0.3105,0.135,0.243],"pivot":[-0.0203,-0.167,1.0666],"rotation":[-180,0,180],"uv":{"east":{"uv":[18,35],"uv_size":[0.25,0.125]},"west":{"uv":[35,18],"uv_size":[0.25,0.125]}}},{"origin":[-0.1417,0.8016,-0.6125],"size":[0.3105,0.108,0.27],"pivot":[0.0067,0.643,-0.5855],"rotation":[160.5,0,180],"uv":{"east":{"uv":[19,35],"uv_size":[0.25,0.125]},"west":{"uv":[35,19],"uv_size":[0.25,0.125]},"up":{"uv":[27,23],"uv_size":[0.25,0.25]}}},{"origin":[-0.1958,0.7864,-0.8635],"size":[0.3105,0.108,0.216],"pivot":[-0.0203,0.8944,-0.6745],"rotation":[137.5,0,180],"uv":{"east":{"uv":[20,35],"uv_size":[0.25,0.125]},"west":{"uv":[35,20],"uv_size":[0.25,0.125]},"up":{"uv":[24,27],"uv_size":[0.25,0.25]}}},{"origin":[-0.1958,0.9242,-1.0481],"size":[0.3105,0.108,0.567],"pivot":[-0.0203,1.022,-0.5351],"rotation":[116.5,0,180],"uv":{"east":{"uv":[25,23],"uv_size":[0.625,0.125]},"west":{"uv":[24,25],"uv_size":[0.625,0.125]},"up":{"uv":[19,22],"uv_size":[0.25,0.625]}}},{"origin":[-0.1958,0.67,2.9617],"size":[0.3105,0.162,0.297],"inflate":0.001,"pivot":[-0.0203,-0.167,1.0666],"rotation":[-180,0,180],"uv":{"east":{"uv":[21,35],"uv_size":[0.25,0.125]},"west":{"uv":[35,21],"uv_size":[0.25,0.125]},"up":{"uv":[27,24],"uv_size":[0.25,0.25]}}},{"origin":[-0.1958,-0.1856,0.3598],"size":[0.3105,0.181,0.189],"pivot":[-0.0203,-0.1856,0.3598],"rotation":[-140.1452,0,180],"uv":{"east":{"uv":[22,35],"uv_size":[0.25,0.125]},"south":{"uv":[35,22],"uv_size":[0.25,0.125]},"west":{"uv":[23,35],"uv_size":[0.25,0.125]}}},{"origin":[-0.1958,-0.1856,0.2788],"size":[0.3105,0.235,0.135],"pivot":[-0.0203,-0.1856,0.3598],"rotation":[-120.1452,0,180],"uv":{"east":{"uv":[35,23],"uv_size":[0.125,0.25]},"west":{"uv":[24,35],"uv_size":[0.125,0.25]}}},{"origin":[-0.1958,-0.2556,0.2925],"size":[0.3105,0.081,0.135],"pivot":[-0.0203,-0.2556,0.4005],"rotation":[-105.1452,0,180],"uv":{"east":{"uv":[25,43],"uv_size":[0.125,0.125]},"west":{"uv":[43,25],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,-0.3599,0.2937],"size":[0.3105,0.081,0.162],"pivot":[-0.0203,-0.3599,0.4287],"rotation":[-95.1452,0,180],"uv":{"east":{"uv":[26,43],"uv_size":[0.125,0.125]},"west":{"uv":[43,26],"uv_size":[0.125,0.125]}}},{"origin":[-0.1958,-1.9739,0.3986],"size":[0.3105,0.405,1.512],"pivot":[-0.0203,-1.9739,0.3986],"rotation":[-88.3655,0,180],"uv":{"east":{"uv":[7,13],"uv_size":[1.5,0.375]},"west":{"uv":[9,13],"uv_size":[1.5,0.375]}}},{"origin":[-0.1958,-1.9312,0.3986],"size":[0.3105,0.305,1.512],"inflate":0.002,"pivot":[-0.0203,-1.9739,0.3986],"rotation":[-86.8655,0,180],"uv":{"east":{"uv":[62.125,57.75],"uv_size":[-21.5,4.375]},"west":{"uv":[62.125,57.75],"uv_size":[-21.5,4.375]}}},{"origin":[-0.1552,0.2461,-0.1376],"size":[0.3105,0.655,0.655],"inflate":0.004,"pivot":[0,0.5596,0.3572],"rotation":[-86.8655,0,180],"uv":{"east":{"uv":[11.625,52.125],"uv_size":[-11.625,11.875]},"west":{"uv":[11.625,52.125],"uv_size":[-11.625,11.875]}}},{"origin":[-0.027,0.261,-1.0607],"size":[0.0405,0.027,0.459],"pivot":[0,0.2745,-0.8312],"rotation":[-114.8564,0,180],"uv":{"down":{"uv":[25,27.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.1614,0.0606,-0.7508],"size":[0.1479,0.405,0.4898],"pivot":[-0.0135,0.0606,-0.747],"rotation":[-113.95,-6.8566,164.9559],"uv":{"down":{"uv":[27,25.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.0135,0.0606,-0.7508],"size":[0.1479,0.405,0.4898],"pivot":[0.0135,0.0606,-0.747],"rotation":[-113.95,6.8566,-164.9559],"uv":{"down":{"uv":[26,27.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.054,0.5648,-2.1656],"size":[0.0405,0.027,0.675],"pivot":[-0.0135,0.4838,-1.0046],"rotation":[-111.9127,0,180],"uv":{"down":{"uv":[25,24.625],"uv_size":[0.125,-0.625]}}},{"origin":[-0.054,-0.2112,-1.3787],"size":[0.0405,0.027,0.432],"pivot":[-0.0135,-0.2923,-0.6497],"rotation":[-104.4126,0,180],"uv":{"north":{"uv":[27,43],"uv_size":[0.125,0.125]},"down":{"uv":[25,29.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.054,-0.9984,-0.7956],"size":[0.0405,0.027,0.432],"pivot":[-0.0135,-0.9714,-0.3636],"rotation":[-94.4126,0,180],"uv":{"down":{"uv":[29,25.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.027,-1.5497,-0.4862],"size":[0.0405,0.027,0.27],"pivot":[0,-1.5362,-0.3512],"rotation":[-86.9127,0,180],"uv":{"down":{"uv":[35,24.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.054,-1.6988,-0.5879],"size":[0.0405,0.027,0.243],"pivot":[-0.0135,-1.6718,-0.3449],"rotation":[-71.9127,0,180],"uv":{"down":{"uv":[25,35.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.027,-2.0013,-0.6297],"size":[0.0405,0.027,0.243],"pivot":[0,-1.9878,-0.5082],"rotation":[-50.4127,0,180],"uv":{"down":{"uv":[35,25.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.054,-2.117,-0.8182],"size":[0.0405,0.027,0.243],"pivot":[-0.0135,-2.09,-0.5752],"rotation":[-26.9127,0,180],"uv":{"north":{"uv":[43,27],"uv_size":[0.125,0.125]},"down":{"uv":[26,35.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.054,-2.2,-0.7919],"size":[0.0405,0.027,0.081],"pivot":[-0.0135,-2.2,-0.7919],"rotation":[-180,0,180],"uv":{"east":{"uv":[28,43],"uv_size":[0.125,0.125]},"south":{"uv":[43,28],"uv_size":[0.125,0.125]},"west":{"uv":[29,43],"uv_size":[0.125,0.125]},"up":{"uv":[43,29],"uv_size":[0.125,0.125]}}},{"origin":[-0.027,-2.659,-0.905],"size":[0.0405,0.486,0.027],"pivot":[0,-2.2675,-0.8864],"rotation":[-177.5,0,180],"uv":{"south":{"uv":[27,26],"uv_size":[0.125,0.5]},"up":{"uv":[30,43],"uv_size":[0.125,0.125]}}},{"origin":[-0.054,-3.9539,-0.9191],"size":[0.0405,0.756,0.027],"pivot":[-0.0135,-3.2249,-0.8921],"rotation":[175.5,0,180],"uv":{"south":{"uv":[16,25],"uv_size":[0.125,0.75]}}},{"origin":[-0.054,-4.8967,-0.8619],"size":[0.0405,0.945,0.027],"pivot":[-0.0135,-3.9517,-0.8349],"rotation":[172.5,0,180],"uv":{"south":{"uv":[2,24],"uv_size":[0.125,1]},"west":{"uv":[24,2],"uv_size":[0.125,1]}}},{"origin":[-0.054,-6.0226,-0.7386],"size":[0.0405,1.134,0.027],"pivot":[-0.0135,-4.8886,-0.7116],"rotation":[167.5,0,180],"uv":{"south":{"uv":[4,23],"uv_size":[0.125,1.125]}}},{"origin":[-0.054,-7.0487,-0.4931],"size":[0.0405,1.053,0.027],"pivot":[-0.0135,-5.9957,-0.4662],"rotation":[160,0,180],"uv":{"south":{"uv":[3,24],"uv_size":[0.125,1]}}},{"origin":[-0.054,-7.6602,-0.133],"size":[0.0405,0.675,0.027],"pivot":[-0.0135,-6.9852,-0.106],"rotation":[152.5,0,180],"uv":{"south":{"uv":[25,25],"uv_size":[0.125,0.625]}}},{"origin":[-0.054,-8.2859,0.1787],"size":[0.0405,0.702,0.027],"pivot":[-0.0135,-7.5839,0.2057],"rotation":[142.5,0,180],"uv":{"east":{"uv":[25,16],"uv_size":[0.125,0.75]},"south":{"uv":[17,25],"uv_size":[0.125,0.75]},"west":{"uv":[25,17],"uv_size":[0.125,0.75]},"down":{"uv":[43,30.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.054,-8.1409,0.606],"size":[0.0405,0.756,0.027],"pivot":[-0.0135,-8.1409,0.633],"rotation":[-169.5,0,180],"uv":{"north":{"uv":[18,25],"uv_size":[0.125,0.75]},"down":{"uv":[31,43.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.0945,-7.3849,0.606],"size":[0.0675,0.351,0.027],"pivot":[-0.027,-8.1409,0.633],"rotation":[-169.5,0,180],"uv":{"north":{"uv":[26,29],"uv_size":[0.125,0.375]},"west":{"uv":[29,26],"uv_size":[0.125,0.375]}}},{"origin":[-0.081,-7.0524,0.8078],"size":[0.0945,0.567,0.027],"pivot":[-0.0135,-7.0524,0.8348],"rotation":[-164.5,0,180],"uv":{"north":{"uv":[0,26],"uv_size":[0.125,0.625]}}},{"origin":[-0.108,-6.5133,1.0123],"size":[0.1485,1.944,0.027],"pivot":[-0.0135,-6.5133,1.0123],"rotation":[-177,0,180],"uv":{"north":{"uv":[16,19],"uv_size":[0.125,2]}}},{"origin":[-0.081,-3.6117,1.2491],"size":[0.0945,0.27,0.027],"pivot":[-0.0135,-3.6117,1.2491],"rotation":[148,0,180],"uv":{"north":{"uv":[35,26],"uv_size":[0.125,0.25]}}},{"origin":[-0.108,-3.3971,1.0561],"size":[0.1485,0.351,0.027],"pivot":[-0.0135,-3.3971,1.0831],"rotation":[163,0,180],"uv":{"north":{"uv":[27,29],"uv_size":[0.125,0.375]}}},{"origin":[-0.135,-3.0614,0.9535],"size":[0.2025,0.189,0.027],"pivot":[-0.0135,-3.0614,0.9805],"rotation":[178,0,180],"uv":{"north":{"uv":[27,27],"uv_size":[0.25,0.25]},"west":{"uv":[27,35],"uv_size":[0.125,0.25]},"up":{"uv":[35,27],"uv_size":[0.25,0.125]}}},{"origin":[-0.135,-2.8725,0.9469],"size":[0.2025,0.135,0.135],"pivot":[-0.0135,-2.8725,0.9739],"rotation":[-149.5,0,180],"uv":{"north":{"uv":[28,35],"uv_size":[0.25,0.125]},"east":{"uv":[43,31],"uv_size":[0.125,0.125]},"west":{"uv":[32,43],"uv_size":[0.125,0.125]}}},{"origin":[-0.135,-2.8102,1.0154],"size":[0.2025,0.216,0.135],"pivot":[-0.0135,-2.7562,1.0424],"rotation":[-127,0,180],"uv":{"north":{"uv":[0,28],"uv_size":[0.25,0.25]},"east":{"uv":[35,28],"uv_size":[0.125,0.25]},"west":{"uv":[29,35],"uv_size":[0.125,0.25]}}},{"origin":[-0.135,-2.6803,1.188],"size":[0.2025,0.162,0.243],"pivot":[-0.0135,-2.6803,1.188],"rotation":[-179.5,0,180],"uv":{"north":{"uv":[35,29],"uv_size":[0.25,0.125]},"east":{"uv":[30,35],"uv_size":[0.25,0.125]},"west":{"uv":[35,30],"uv_size":[0.25,0.125]},"up":{"uv":[28,0],"uv_size":[0.25,0.25]}}},{"origin":[-0.108,-2.5082,0.8979],"size":[0.2025,0.054,0.081],"pivot":[0,-2.5352,0.9249],"rotation":[-120,0,180],"uv":{"east":{"uv":[43,32],"uv_size":[0.125,0.125]},"west":{"uv":[33,43],"uv_size":[0.125,0.125]},"up":{"uv":[31,35],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,-2.1032,0.8979],"size":[0.2025,0.054,0.108],"pivot":[0,-2.1302,0.9249],"rotation":[-120,0,180],"uv":{"east":{"uv":[43,33],"uv_size":[0.125,0.125]},"west":{"uv":[34,43],"uv_size":[0.125,0.125]},"up":{"uv":[35,31],"uv_size":[0.25,0.125]}}},{"origin":[-0.297,-2.5183,1.1895],"size":[0.2025,0.054,0.108],"pivot":[-0.0945,-2.5183,1.1895],"rotation":[148,0,180],"uv":{"east":{"uv":[43,34],"uv_size":[0.125,0.125]},"south":{"uv":[32,35],"uv_size":[0.25,0.125]},"west":{"uv":[35,43],"uv_size":[0.125,0.125]},"up":{"uv":[35,32],"uv_size":[0.25,0.125]}}},{"origin":[-0.297,-2.5183,1.1895],"size":[0.2025,0.0458,0.0286],"pivot":[-0.0945,-2.5183,1.1895],"rotation":[-180,0,180],"uv":{"north":{"uv":[33,35],"uv_size":[0.25,0.125]},"east":{"uv":[43,35],"uv_size":[0.125,0.125]},"west":{"uv":[36,43],"uv_size":[0.125,0.125]},"up":{"uv":[35,33],"uv_size":[0.25,0.125]}}},{"origin":[-0.135,-2.3782,1.0137],"size":[0.2025,0.216,0.135],"pivot":[-0.0135,-2.3242,1.0407],"rotation":[-127,0,180],"uv":{"north":{"uv":[1,28],"uv_size":[0.25,0.25]},"east":{"uv":[34,35],"uv_size":[0.125,0.25]},"west":{"uv":[35,34],"uv_size":[0.125,0.25]}}},{"origin":[-0.135,-2.4945,0.9671],"size":[0.2025,0.189,0.135],"pivot":[-0.0135,-2.4405,0.9722],"rotation":[-149.5,0,180],"uv":{"north":{"uv":[28,1],"uv_size":[0.25,0.25]},"east":{"uv":[35,35],"uv_size":[0.125,0.25]},"west":{"uv":[0,36],"uv_size":[0.125,0.25]}}},{"origin":[-0.135,-2.2483,1.1864],"size":[0.2025,0.162,0.243],"pivot":[-0.0135,-2.2483,1.1864],"rotation":[-179.5,0,180],"uv":{"north":{"uv":[36,0],"uv_size":[0.25,0.125]},"east":{"uv":[1,36],"uv_size":[0.25,0.125]},"west":{"uv":[36,1],"uv_size":[0.25,0.125]},"up":{"uv":[2,28],"uv_size":[0.25,0.25]}}},{"origin":[-0.297,-2.0863,1.1878],"size":[0.2025,0.054,0.108],"pivot":[-0.0945,-2.0863,1.1878],"rotation":[148,0,180],"uv":{"east":{"uv":[43,36],"uv_size":[0.125,0.125]},"south":{"uv":[2,36],"uv_size":[0.25,0.125]},"west":{"uv":[37,43],"uv_size":[0.125,0.125]},"up":{"uv":[36,2],"uv_size":[0.25,0.125]}}},{"origin":[-0.297,-2.0863,1.1878],"size":[0.2025,0.0458,0.0286],"pivot":[-0.0945,-2.0863,1.1878],"rotation":[-180,0,180],"uv":{"north":{"uv":[3,36],"uv_size":[0.25,0.125]},"east":{"uv":[43,37],"uv_size":[0.125,0.125]},"west":{"uv":[38,43],"uv_size":[0.125,0.125]},"up":{"uv":[36,3],"uv_size":[0.25,0.125]}}},{"origin":[-0.135,-1.8247,1.183],"size":[0.2025,0.162,0.243],"pivot":[-0.0135,-1.8247,1.183],"rotation":[-179.5,0,180],"uv":{"north":{"uv":[4,36],"uv_size":[0.25,0.125]},"east":{"uv":[36,4],"uv_size":[0.25,0.125]},"west":{"uv":[5,36],"uv_size":[0.25,0.125]},"up":{"uv":[28,2],"uv_size":[0.25,0.25]}}},{"origin":[-0.297,-1.6627,1.1844],"size":[0.2025,0.054,0.108],"pivot":[-0.0945,-1.6627,1.1844],"rotation":[148,0,180],"uv":{"east":{"uv":[43,38],"uv_size":[0.125,0.125]},"south":{"uv":[36,5],"uv_size":[0.25,0.125]},"west":{"uv":[39,43],"uv_size":[0.125,0.125]},"up":{"uv":[6,36],"uv_size":[0.25,0.125]}}},{"origin":[-0.297,-1.6627,1.1844],"size":[0.2025,0.0458,0.0286],"pivot":[-0.0945,-1.6627,1.1844],"rotation":[-180,0,180],"uv":{"north":{"uv":[36,6],"uv_size":[0.25,0.125]},"east":{"uv":[43,39],"uv_size":[0.125,0.125]},"west":{"uv":[40,43],"uv_size":[0.125,0.125]},"up":{"uv":[7,36],"uv_size":[0.25,0.125]}}},{"origin":[-0.135,-1.9546,1.0104],"size":[0.2025,0.216,0.162],"pivot":[-0.0135,-1.9006,1.0373],"rotation":[-127,0,180],"uv":{"north":{"uv":[3,28],"uv_size":[0.25,0.25]},"east":{"uv":[36,7],"uv_size":[0.125,0.25]},"west":{"uv":[8,36],"uv_size":[0.125,0.25]}}},{"origin":[-0.135,-2.0558,0.9621],"size":[0.2025,0.189,0.135],"pivot":[-0.0135,-2.0017,0.9722],"rotation":[-149.5,0,180],"uv":{"north":{"uv":[28,3],"uv_size":[0.25,0.25]},"east":{"uv":[36,8],"uv_size":[0.125,0.25]},"west":{"uv":[9,36],"uv_size":[0.125,0.25]}}},{"origin":[-0.108,-1.678,0.8962],"size":[0.2025,0.054,0.108],"pivot":[0,-1.705,0.9232],"rotation":[-120,0,180],"uv":{"east":{"uv":[43,40],"uv_size":[0.125,0.125]},"west":{"uv":[41,43],"uv_size":[0.125,0.125]},"up":{"uv":[36,9],"uv_size":[0.25,0.125]}}},{"origin":[-0.135,-1.6305,0.9604],"size":[0.2025,0.189,0.135],"pivot":[-0.0135,-1.5765,0.9705],"rotation":[-149.5,0,180],"uv":{"north":{"uv":[4,28],"uv_size":[0.25,0.25]},"east":{"uv":[10,36],"uv_size":[0.125,0.25]},"west":{"uv":[36,10],"uv_size":[0.125,0.25]}}},{"origin":[-0.135,-1.5294,1.0087],"size":[0.2025,0.216,0.162],"pivot":[-0.0135,-1.4754,1.0357],"rotation":[-127,0,180],"uv":{"north":{"uv":[28,4],"uv_size":[0.25,0.25]},"east":{"uv":[11,36],"uv_size":[0.125,0.25]},"west":{"uv":[36,11],"uv_size":[0.125,0.25]}}},{"origin":[-0.135,-1.3994,1.1813],"size":[0.2025,0.162,0.243],"pivot":[-0.0135,-1.3994,1.1813],"rotation":[-179.5,0,180],"uv":{"north":{"uv":[12,36],"uv_size":[0.25,0.125]},"east":{"uv":[36,12],"uv_size":[0.25,0.125]},"west":{"uv":[13,36],"uv_size":[0.25,0.125]},"up":{"uv":[5,28],"uv_size":[0.25,0.25]}}},{"origin":[-0.297,-1.2374,1.1827],"size":[0.2025,0.054,0.108],"pivot":[-0.0945,-1.2374,1.1827],"rotation":[148,0,180],"uv":{"east":{"uv":[43,41],"uv_size":[0.125,0.125]},"south":{"uv":[36,13],"uv_size":[0.25,0.125]},"west":{"uv":[42,43],"uv_size":[0.125,0.125]},"up":{"uv":[14,36],"uv_size":[0.25,0.125]}}},{"origin":[-0.297,-1.2374,1.1827],"size":[0.2025,0.0458,0.0286],"pivot":[-0.0945,-1.2374,1.1827],"rotation":[-180,0,180],"uv":{"north":{"uv":[36,14],"uv_size":[0.25,0.125]},"east":{"uv":[43,42],"uv_size":[0.125,0.125]},"west":{"uv":[43,43],"uv_size":[0.125,0.125]},"up":{"uv":[15,36],"uv_size":[0.25,0.125]}}},{"origin":[-0.135,-0.9759,1.1779],"size":[0.2025,0.162,0.243],"pivot":[-0.0135,-0.9759,1.1779],"rotation":[-179.5,0,180],"uv":{"north":{"uv":[36,15],"uv_size":[0.25,0.125]},"east":{"uv":[16,36],"uv_size":[0.25,0.125]},"west":{"uv":[36,16],"uv_size":[0.25,0.125]},"up":{"uv":[28,5],"uv_size":[0.25,0.25]}}},{"origin":[-0.135,-1.1058,1.0053],"size":[0.2025,0.216,0.162],"pivot":[-0.0135,-1.0518,1.0323],"rotation":[-127,0,180],"uv":{"north":{"uv":[6,28],"uv_size":[0.25,0.25]},"east":{"uv":[17,36],"uv_size":[0.125,0.25]},"west":{"uv":[36,17],"uv_size":[0.125,0.25]}}},{"origin":[-0.135,-1.2069,0.957],"size":[0.2025,0.189,0.135],"pivot":[-0.0135,-1.1529,0.9671],"rotation":[-149.5,0,180],"uv":{"north":{"uv":[28,6],"uv_size":[0.25,0.25]},"east":{"uv":[18,36],"uv_size":[0.125,0.25]},"west":{"uv":[36,18],"uv_size":[0.125,0.25]}}},{"origin":[-0.297,-0.8139,1.1793],"size":[0.2025,0.054,0.108],"pivot":[-0.0945,-0.8139,1.1793],"rotation":[148,0,180],"uv":{"east":{"uv":[0,44],"uv_size":[0.125,0.125]},"south":{"uv":[19,36],"uv_size":[0.25,0.125]},"west":{"uv":[44,0],"uv_size":[0.125,0.125]},"up":{"uv":[36,19],"uv_size":[0.25,0.125]}}},{"origin":[-0.297,-0.8139,1.1793],"size":[0.2025,0.0458,0.0286],"pivot":[-0.0945,-0.8139,1.1793],"rotation":[-180,0,180],"uv":{"north":{"uv":[20,36],"uv_size":[0.25,0.125]},"east":{"uv":[1,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,1],"uv_size":[0.125,0.125]},"up":{"uv":[36,20],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,-1.2544,0.8929],"size":[0.2025,0.054,0.108],"pivot":[0,-1.2814,0.9199],"rotation":[-120,0,180],"uv":{"east":{"uv":[2,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,2],"uv_size":[0.125,0.125]},"up":{"uv":[21,36],"uv_size":[0.25,0.125]}}},{"origin":[-0.135,-0.5506,1.1762],"size":[0.2025,0.162,0.243],"pivot":[-0.0135,-0.5506,1.1762],"rotation":[-179.5,0,180],"uv":{"north":{"uv":[36,21],"uv_size":[0.25,0.125]},"east":{"uv":[22,36],"uv_size":[0.25,0.125]},"west":{"uv":[36,22],"uv_size":[0.25,0.125]},"up":{"uv":[7,28],"uv_size":[0.25,0.25]}}},{"origin":[-0.135,-0.6806,1.0036],"size":[0.2025,0.216,0.162],"pivot":[-0.0135,-0.6266,1.0306],"rotation":[-127,0,180],"uv":{"north":{"uv":[28,7],"uv_size":[0.25,0.25]},"east":{"uv":[23,36],"uv_size":[0.125,0.25]},"west":{"uv":[36,23],"uv_size":[0.125,0.25]}}},{"origin":[-0.135,-0.7817,0.9553],"size":[0.2025,0.189,0.135],"pivot":[-0.0135,-0.7277,0.9655],"rotation":[-149.5,0,180],"uv":{"north":{"uv":[8,28],"uv_size":[0.25,0.25]},"east":{"uv":[24,36],"uv_size":[0.125,0.25]},"west":{"uv":[36,24],"uv_size":[0.125,0.25]}}},{"origin":[-0.297,-0.3886,1.1777],"size":[0.2025,0.054,0.108],"pivot":[-0.0945,-0.3886,1.1777],"rotation":[148,0,180],"uv":{"east":{"uv":[3,44],"uv_size":[0.125,0.125]},"south":{"uv":[25,36],"uv_size":[0.25,0.125]},"west":{"uv":[44,3],"uv_size":[0.125,0.125]},"up":{"uv":[36,25],"uv_size":[0.25,0.125]}}},{"origin":[-0.297,-0.3886,1.1777],"size":[0.2025,0.0458,0.0286],"pivot":[-0.0945,-0.3886,1.1777],"rotation":[-180,0,180],"uv":{"north":{"uv":[26,36],"uv_size":[0.25,0.125]},"east":{"uv":[4,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,4],"uv_size":[0.125,0.125]},"up":{"uv":[36,26],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,-0.8292,0.8912],"size":[0.2025,0.054,0.108],"pivot":[0,-0.8562,0.9182],"rotation":[-120,0,180],"uv":{"east":{"uv":[5,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,5],"uv_size":[0.125,0.125]},"up":{"uv":[27,36],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,-0.6267,1.2911],"size":[0.2025,0.054,0.108],"pivot":[0,-0.8562,0.9182],"rotation":[-120,0,180],"uv":{"east":{"uv":[6,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,6],"uv_size":[0.125,0.125]},"up":{"uv":[36,27],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,-0.3987,0.8982],"size":[0.2025,0.054,0.135],"pivot":[0,-0.3582,0.9268],"rotation":[-70,0,180],"uv":{"east":{"uv":[7,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,7],"uv_size":[0.125,0.125]},"up":{"uv":[28,36],"uv_size":[0.25,0.125]}}},{"origin":[-0.081,-4.5705,1.0601],"size":[0.0945,0.972,0.027],"pivot":[-0.0135,-4.5705,1.0871],"rotation":[-172,0,180],"uv":{"north":{"uv":[24,3],"uv_size":[0.125,1]}}},{"origin":[-0.054,-3.2253,-0.9389],"size":[0.0405,0.567,0.027],"pivot":[-0.0135,-2.6583,-0.9119],"rotation":[178,0,180],"uv":{"south":{"uv":[26,0],"uv_size":[0.125,0.625]}}},{"origin":[-0.1958,-0.545,-4.7241],"size":[0.3105,0.0582,5.8633],"inflate":0.002,"pivot":[-0.0203,-0.491,0.8725],"rotation":[-87.559,0,180],"uv":{"east":{"uv":[5,11],"uv_size":[5.625,0.125]},"south":{"uv":[36,28],"uv_size":[0.25,0.125]},"west":{"uv":[11,11],"uv_size":[5.625,0.125]}}},{"origin":[-0.1417,-0.518,-1.7271],"size":[0.2025,0.2742,2.7616],"pivot":[-0.0203,-0.248,0.9265],"rotation":[-91,0,180],"uv":{"east":{"uv":[0,12],"uv_size":[2.75,0.25]},"south":{"uv":[28,8],"uv_size":[0.25,0.25]},"west":{"uv":[12,4],"uv_size":[2.75,0.25]},"up":{"uv":[3,12],"uv_size":[0.25,2.75]}}},{"origin":[-0.1417,1.3411,0.9354],"size":[0.3105,0.054,0.5883],"pivot":[0.0067,2.2996,0.991],"rotation":[155,0,180],"uv":{"east":{"uv":[1,26],"uv_size":[0.625,0.125]},"west":{"uv":[26,1],"uv_size":[0.625,0.125]}}},{"origin":[-0.1417,1.5232,0.9593],"size":[0.3105,0.1167,0.081],"pivot":[0.0067,1.5779,1.1979],"rotation":[-167.5,0,180],"uv":{"north":{"uv":[29,36],"uv_size":[0.25,0.125]},"east":{"uv":[8,44],"uv_size":[0.125,0.125]},"south":{"uv":[36,29],"uv_size":[0.25,0.125]},"west":{"uv":[44,8],"uv_size":[0.125,0.125]},"up":{"uv":[30,36],"uv_size":[0.25,0.125]},"down":{"uv":[36,30.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.516,1.3554],"size":[0.3105,0.1167,0.081],"pivot":[0.0067,1.5779,1.1979],"rotation":[-167.5,0,180],"uv":{"north":{"uv":[31,36],"uv_size":[0.25,0.125]},"east":{"uv":[9,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,9],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,1.5228,1.3554],"size":[0.3105,0.0897,0.081],"pivot":[0.0067,1.5779,1.1979],"rotation":[167.5,0,180],"uv":{"north":{"uv":[36,31],"uv_size":[0.25,0.125]},"east":{"uv":[10,44],"uv_size":[0.125,0.125]},"south":{"uv":[32,36],"uv_size":[0.25,0.125]},"west":{"uv":[44,10],"uv_size":[0.125,0.125]},"up":{"uv":[36,32],"uv_size":[0.25,0.125]},"down":{"uv":[33,36.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.5164,1.0133],"size":[0.3105,0.1167,0.027],"pivot":[0.0067,1.5779,1.1979],"rotation":[167.5,0,180],"uv":{"north":{"uv":[36,33],"uv_size":[0.25,0.125]},"east":{"uv":[11,44],"uv_size":[0.125,0.125]},"south":{"uv":[34,36],"uv_size":[0.25,0.125]},"west":{"uv":[44,11],"uv_size":[0.125,0.125]},"up":{"uv":[36,34],"uv_size":[0.25,0.125]},"down":{"uv":[35,36.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.5245,1.3554],"size":[0.3105,0.0897,0.081],"pivot":[0.0067,1.5779,1.1979],"rotation":[122.5,0,180],"uv":{"north":{"uv":[36,35],"uv_size":[0.25,0.125]},"east":{"uv":[12,44],"uv_size":[0.125,0.125]},"south":{"uv":[36,36],"uv_size":[0.25,0.125]},"west":{"uv":[44,12],"uv_size":[0.125,0.125]},"up":{"uv":[0,37],"uv_size":[0.25,0.125]},"down":{"uv":[37,0.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.516,1.3554],"size":[0.3105,0.0897,0.081],"pivot":[0.0067,1.5779,1.1979],"rotation":[147.5,0,180],"uv":{"north":{"uv":[1,37],"uv_size":[0.25,0.125]},"east":{"uv":[13,44],"uv_size":[0.125,0.125]},"south":{"uv":[37,1],"uv_size":[0.25,0.125]},"west":{"uv":[44,13],"uv_size":[0.125,0.125]},"up":{"uv":[2,37],"uv_size":[0.25,0.125]},"down":{"uv":[37,2.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.5502,1.0133],"size":[0.3105,0.0897,0.027],"pivot":[0.0067,1.5779,1.1979],"rotation":[147.5,0,180],"uv":{"north":{"uv":[3,37],"uv_size":[0.25,0.125]},"east":{"uv":[14,44],"uv_size":[0.125,0.125]},"south":{"uv":[37,3],"uv_size":[0.25,0.125]},"west":{"uv":[44,14],"uv_size":[0.125,0.125]},"up":{"uv":[4,37],"uv_size":[0.25,0.125]},"down":{"uv":[37,4.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.5434,0.9863],"size":[0.3105,0.0627,0.054],"pivot":[0.0067,1.5779,1.1979],"rotation":[122.5,0,180],"uv":{"north":{"uv":[5,37],"uv_size":[0.25,0.125]},"east":{"uv":[15,44],"uv_size":[0.125,0.125]},"south":{"uv":[37,5],"uv_size":[0.25,0.125]},"west":{"uv":[44,15],"uv_size":[0.125,0.125]},"up":{"uv":[6,37],"uv_size":[0.25,0.125]},"down":{"uv":[37,6.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.5232,0.9863],"size":[0.3105,0.0897,0.054],"pivot":[0.0067,1.5779,1.1979],"rotation":[102.5,0,180],"uv":{"north":{"uv":[7,37],"uv_size":[0.25,0.125]},"east":{"uv":[16,44],"uv_size":[0.125,0.125]},"south":{"uv":[37,7],"uv_size":[0.25,0.125]},"west":{"uv":[44,16],"uv_size":[0.125,0.125]},"up":{"uv":[8,37],"uv_size":[0.25,0.125]},"down":{"uv":[37,8.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.5164,1.0133],"size":[0.3105,0.0897,0.027],"pivot":[0.0067,1.5779,1.1979],"rotation":[77.5,0,180],"uv":{"north":{"uv":[9,37],"uv_size":[0.25,0.125]},"east":{"uv":[17,44],"uv_size":[0.125,0.125]},"south":{"uv":[37,9],"uv_size":[0.25,0.125]},"west":{"uv":[44,17],"uv_size":[0.125,0.125]},"up":{"uv":[10,37],"uv_size":[0.25,0.125]},"down":{"uv":[37,10.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.5502,1.0133],"size":[0.3105,0.0897,0.027],"pivot":[0.0067,1.5779,1.1979],"rotation":[57.5,0,180],"uv":{"north":{"uv":[11,37],"uv_size":[0.25,0.125]},"east":{"uv":[18,44],"uv_size":[0.125,0.125]},"south":{"uv":[37,11],"uv_size":[0.25,0.125]},"west":{"uv":[44,18],"uv_size":[0.125,0.125]},"up":{"uv":[12,37],"uv_size":[0.25,0.125]},"down":{"uv":[37,12.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.5434,0.9863],"size":[0.3105,0.0897,0.054],"pivot":[0.0067,1.5779,1.1979],"rotation":[32.5,0,180],"uv":{"north":{"uv":[13,37],"uv_size":[0.25,0.125]},"east":{"uv":[19,44],"uv_size":[0.125,0.125]},"south":{"uv":[37,13],"uv_size":[0.25,0.125]},"west":{"uv":[44,19],"uv_size":[0.125,0.125]},"up":{"uv":[14,37],"uv_size":[0.25,0.125]},"down":{"uv":[37,14.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.543,1.3554],"size":[0.3105,0.0627,0.081],"pivot":[0.0067,1.5779,1.1979],"rotation":[102.5,0,180],"uv":{"north":{"uv":[15,37],"uv_size":[0.25,0.125]},"east":{"uv":[20,44],"uv_size":[0.125,0.125]},"south":{"uv":[37,15],"uv_size":[0.25,0.125]},"west":{"uv":[44,20],"uv_size":[0.125,0.125]},"up":{"uv":[16,37],"uv_size":[0.25,0.125]},"down":{"uv":[37,16.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.5228,1.3554],"size":[0.3105,0.1167,0.027],"pivot":[0.0067,1.5779,1.1979],"rotation":[77.5,0,180],"uv":{"north":{"uv":[17,37],"uv_size":[0.25,0.125]},"east":{"uv":[21,44],"uv_size":[0.125,0.125]},"south":{"uv":[37,17],"uv_size":[0.25,0.125]},"west":{"uv":[44,21],"uv_size":[0.125,0.125]},"up":{"uv":[18,37],"uv_size":[0.25,0.125]},"down":{"uv":[37,18.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,1.516,1.3554],"size":[0.3105,0.0897,0.027],"pivot":[0.0067,1.5779,1.1979],"rotation":[57.5,0,180],"uv":{"north":{"uv":[19,37],"uv_size":[0.25,0.125]},"east":{"uv":[22,44],"uv_size":[0.125,0.125]},"south":{"uv":[37,19],"uv_size":[0.25,0.125]},"west":{"uv":[44,22],"uv_size":[0.125,0.125]},"up":{"uv":[20,37],"uv_size":[0.25,0.125]},"down":{"uv":[37,20.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.135,0.8307,-1.7069],"size":[0.162,0.1816,0.054],"pivot":[-0.027,1.0124,-1.6529],"rotation":[-151.7093,0,180],"uv":{"north":{"uv":[23,44],"uv_size":[0.125,0.125]},"east":{"uv":[44,23],"uv_size":[0.125,0.125]},"south":{"uv":[24,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,24],"uv_size":[0.125,0.125]},"up":{"uv":[25,44],"uv_size":[0.125,0.125]},"down":{"uv":[44,25.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.135,0.9968,-1.6578],"size":[0.162,0.1823,0.054],"pivot":[-0.027,0.9968,-1.6308],"rotation":[-144.791,0,180],"uv":{"north":{"uv":[26,44],"uv_size":[0.125,0.125]},"east":{"uv":[44,26],"uv_size":[0.125,0.125]},"south":{"uv":[27,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,27],"uv_size":[0.125,0.125]},"up":{"uv":[28,44],"uv_size":[0.125,0.125]},"down":{"uv":[44,28.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1148,1.543,1.0396],"size":[0.2565,0.0627,0.027],"pivot":[0.0067,1.5779,1.1974],"rotation":[122.5,0,180],"uv":{"east":{"uv":[29,44],"uv_size":[0.125,0.125]},"south":{"uv":[21,37],"uv_size":[0.25,0.125]},"west":{"uv":[44,29],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.5497,1.0397],"size":[0.2565,0.0627,0.027],"pivot":[0.0067,1.5779,1.1974],"rotation":[102.5,0,180],"uv":{"east":{"uv":[30,44],"uv_size":[0.125,0.125]},"south":{"uv":[37,21],"uv_size":[0.25,0.125]},"west":{"uv":[44,30],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.543,1.0399],"size":[0.2565,0.0627,0.027],"pivot":[0.0067,1.5779,1.1974],"rotation":[77.5,0,180],"uv":{"east":{"uv":[31,44],"uv_size":[0.125,0.125]},"south":{"uv":[22,37],"uv_size":[0.25,0.125]},"west":{"uv":[44,31],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.5232,1.0403],"size":[0.2565,0.0897,0.027],"pivot":[0.0067,1.5779,1.1979],"rotation":[-167.5,0,180],"uv":{"east":{"uv":[32,44],"uv_size":[0.125,0.125]},"south":{"uv":[37,22],"uv_size":[0.25,0.125]},"west":{"uv":[44,32],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.543,1.3284],"size":[0.2565,0.0627,0.027],"pivot":[0.0067,1.5779,1.1979],"rotation":[-167.5,0,180],"uv":{"north":{"uv":[23,37],"uv_size":[0.25,0.125]},"east":{"uv":[33,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,33],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.5498,1.3284],"size":[0.2565,0.0627,0.027],"pivot":[0.0067,1.5779,1.1979],"rotation":[167.5,0,180],"uv":{"north":{"uv":[37,23],"uv_size":[0.25,0.125]},"east":{"uv":[34,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,34],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.5434,1.0403],"size":[0.2565,0.0627,0.027],"pivot":[0.0067,1.5779,1.1979],"rotation":[167.5,0,180],"uv":{"east":{"uv":[35,44],"uv_size":[0.125,0.125]},"south":{"uv":[24,37],"uv_size":[0.25,0.125]},"west":{"uv":[44,35],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.543,1.3284],"size":[0.2565,0.0627,0.027],"pivot":[0.0067,1.5779,1.1979],"rotation":[147.5,0,180],"uv":{"north":{"uv":[37,24],"uv_size":[0.25,0.125]},"east":{"uv":[36,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,36],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.5502,1.0403],"size":[0.2565,0.0627,0.027],"pivot":[0.0067,1.5779,1.1979],"rotation":[147.5,0,180],"uv":{"east":{"uv":[37,44],"uv_size":[0.125,0.125]},"south":{"uv":[25,37],"uv_size":[0.25,0.125]},"west":{"uv":[44,37],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.5498,1.0401],"size":[0.2565,0.0627,0.027],"pivot":[0.0067,1.5779,1.1974],"rotation":[57.5,0,180],"uv":{"east":{"uv":[38,44],"uv_size":[0.125,0.125]},"south":{"uv":[37,25],"uv_size":[0.25,0.125]},"west":{"uv":[44,38],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.5432,1.0402],"size":[0.2565,0.0627,0.027],"pivot":[0.0067,1.5779,1.1974],"rotation":[32.5,0,180],"uv":{"east":{"uv":[39,44],"uv_size":[0.125,0.125]},"south":{"uv":[26,37],"uv_size":[0.25,0.125]},"west":{"uv":[44,39],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.5241,1.3277],"size":[0.2565,0.0897,0.027],"pivot":[0.0067,1.5779,1.1974],"rotation":[122.5,0,180],"uv":{"north":{"uv":[37,26],"uv_size":[0.25,0.125]},"east":{"uv":[40,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.5426,1.3279],"size":[0.2565,0.0627,0.027],"pivot":[0.0067,1.5779,1.1974],"rotation":[102.5,0,180],"uv":{"north":{"uv":[27,37],"uv_size":[0.25,0.125]},"east":{"uv":[41,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,41],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.5493,1.3281],"size":[0.2565,0.0627,0.027],"pivot":[0.0067,1.5779,1.1974],"rotation":[77.5,0,180],"uv":{"north":{"uv":[37,27],"uv_size":[0.25,0.125]},"east":{"uv":[42,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.5427,1.3282],"size":[0.2565,0.0627,0.027],"pivot":[0.0067,1.5779,1.1974],"rotation":[57.5,0,180],"uv":{"north":{"uv":[28,37],"uv_size":[0.25,0.125]},"east":{"uv":[43,44],"uv_size":[0.125,0.125]},"west":{"uv":[44,43],"uv_size":[0.125,0.125]}}},{"origin":[-0.1148,1.5512,1.3283],"size":[0.2565,0.0627,0.027],"pivot":[0.0067,1.5779,1.1974],"rotation":[32.5,0,180],"uv":{"north":{"uv":[37,28],"uv_size":[0.25,0.125]},"east":{"uv":[44,44],"uv_size":[0.125,0.125]},"west":{"uv":[0,45],"uv_size":[0.125,0.125]}}},{"origin":[-0.1417,1.5515,1.3554],"size":[0.3105,0.0627,0.054],"pivot":[0.0067,1.5779,1.1979],"rotation":[32.5,0,180],"uv":{"north":{"uv":[29,37],"uv_size":[0.25,0.125]},"east":{"uv":[45,0],"uv_size":[0.125,0.125]},"south":{"uv":[37,29],"uv_size":[0.25,0.125]},"west":{"uv":[1,45],"uv_size":[0.125,0.125]},"up":{"uv":[30,37],"uv_size":[0.25,0.125]},"down":{"uv":[37,30.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.1417,0.9631,0.9624],"size":[0.3105,0.189,0.135],"pivot":[0.0067,2.2996,0.991],"rotation":[155,0,180],"uv":{"east":{"uv":[31,37],"uv_size":[0.125,0.25]},"west":{"uv":[37,31],"uv_size":[0.125,0.25]},"up":{"uv":[32,37],"uv_size":[0.25,0.125]}}},{"origin":[-0.1013,-0.3874,1.1923],"size":[0.0974,0.27,0],"pivot":[-0.1013,-0.1174,1.1923],"rotation":[-31.3449,52.0246,154.3531],"uv":{"south":{"uv":[37,32],"uv_size":[0.125,0.25]}}},{"origin":[-0.1013,-0.1738,1.0568],"size":[0.0974,0.297,0.054],"pivot":[-0.1013,0.1232,1.1108],"rotation":[-24.9963,53.6632,159.4153],"uv":{"south":{"uv":[33,37],"uv_size":[0.125,0.25]}}},{"origin":[-0.1283,1.1521,0.9354],"size":[0.297,0.189,0.216],"pivot":[0.0067,2.2996,0.991],"rotation":[155,0,180],"uv":{"east":{"uv":[9,28],"uv_size":[0.25,0.25]},"west":{"uv":[28,9],"uv_size":[0.25,0.25]}}},{"origin":[-0.0747,-8.1643,0.8612],"size":[0.027,1.107,0.027],"pivot":[-0.0477,-7.0573,0.8612],"rotation":[-169.5089,0.3315,178.2604],"uv":{"north":{"uv":[5,23],"uv_size":[0.125,1.125]},"west":{"uv":[6,23],"uv_size":[0.125,1.125]},"down":{"uv":[45,1.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.0945,-7.0803,1.0123],"size":[0.027,0.567,0.027],"pivot":[-0.0675,-6.5133,1.0123],"rotation":[-164.509,0.5344,178.0727],"uv":{"north":{"uv":[2,26],"uv_size":[0.125,0.625]},"west":{"uv":[26,2],"uv_size":[0.125,0.625]},"down":{"uv":[2,45.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.0945,-3.6522,1.108],"size":[0.027,0.27,0.027],"pivot":[-0.0675,-3.3892,1.1089],"rotation":[148.1348,-3.1021,175.0245],"uv":{"north":{"uv":[37,33],"uv_size":[0.125,0.25]}}},{"origin":[-0.1215,-3.4045,1.0066],"size":[0.027,0.351,0.027],"pivot":[-0.0945,-3.0604,1.0075],"rotation":[163.0491,-1.3109,175.7076],"uv":{"north":{"uv":[29,27],"uv_size":[0.125,0.375]}}},{"origin":[-0.0945,-4.5743,1.1138],"size":[0.027,0.972,0.027],"pivot":[-0.0675,-4.5743,1.1138],"rotation":[-172.003,-0.2214,-178.4243],"uv":{"north":{"uv":[24,4],"uv_size":[0.125,1]}}},{"origin":[-0.1283,1.2871,1.1514],"size":[0.297,0.054,0.081],"pivot":[0.0067,2.2996,0.991],"rotation":[155,0,180],"uv":{"north":{"uv":[34,37],"uv_size":[0.25,0.125]},"east":{"uv":[45,2],"uv_size":[0.125,0.125]},"west":{"uv":[3,45],"uv_size":[0.125,0.125]}}},{"origin":[-0.1822,-7.3192,0.5066],"size":[0.027,0.864,0.135],"pivot":[-0.1552,-6.4552,0.6416],"rotation":[179.5712,-16.5731,175.3134],"uv":{"west":{"uv":[24,8],"uv_size":[0.125,0.875]},"up":{"uv":[45,3],"uv_size":[0.125,0.125]}}},{"origin":[-0.1552,-3.5392,-2.181],"size":[0,0.2472,3.4096],"pivot":[-0.1552,-3.5392,0.7426],"rotation":[-87.4897,-13.4875,179.4141],"uv":{"east":{"uv":[10,7],"uv_size":[3.375,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[10,8],"uv_size":[3.375,0.25]},"up":{"uv":[0,0],"uv_size":[0,3.375]}}},{"origin":[-0.1552,-0.4911,-4.7199],"size":[0,0.081,5.5966],"pivot":[-0.1552,-0.4911,0.8767],"rotation":[-86.6908,-42.4524,177.765],"uv":{"east":{"uv":[12,0],"uv_size":[5.625,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[12,1],"uv_size":[5.625,0.125]}}},{"origin":[-0.0675,-4.5743,1.1138],"size":[0,0.972,0.432],"pivot":[-0.0675,-4.5743,1.1138],"rotation":[-171.8156,-12.2457,179.8595],"uv":{"west":{"uv":[7,16],"uv_size":[0.375,1]}}},{"origin":[-0.1013,-2.8669,0.9288],"size":[0,2.727,0.216],"pivot":[-0.1013,-0.1399,0.9288],"rotation":[178.9694,-13.9978,-179.7507],"uv":{"west":{"uv":[5,12],"uv_size":[0.25,2.75]}}},{"origin":[-0.0945,-3.0874,1.0075],"size":[0,0.243,0.243],"pivot":[-0.0945,-3.0604,1.0075],"rotation":[177.9388,-13.9913,-179.5015],"uv":{"west":{"uv":[10,28],"uv_size":[0.25,0.25]}}},{"origin":[-0.1215,-3.5125,1.0066],"size":[0.027,0.459,0.324],"pivot":[-0.0945,-3.0604,1.0075],"rotation":[162.6097,-12.7797,179.2713],"uv":{"west":{"uv":[15,21],"uv_size":[0.375,0.5]}}},{"origin":[-0.0675,-3.6522,1.108],"size":[0,0.351,0.324],"pivot":[-0.0675,-3.3892,1.1089],"rotation":[147.4469,-11.5694,-179.6063],"uv":{"west":{"uv":[7,23],"uv_size":[0.375,0.375]}}},{"origin":[-0.0675,-6.5133,1.0123],"size":[0,1.998,0.405],"pivot":[-0.0675,-6.5133,1.0123],"rotation":[-176.9305,-12.2135,179.35],"uv":{"west":{"uv":[11,2],"uv_size":[0.375,2]}}},{"origin":[0.0675,-6.5133,1.0123],"size":[0,1.998,0.405],"pivot":[0.0675,-6.5133,1.0123],"rotation":[-176.9305,12.2135,-179.35],"uv":{"east":{"uv":[11.375,2],"uv_size":[-0.375,2]}}},{"origin":[0.0675,-4.5743,1.1138],"size":[0,0.972,0.432],"pivot":[0.0675,-4.5743,1.1138],"rotation":[-171.8156,12.2457,-179.8595],"uv":{"east":{"uv":[7.375,16],"uv_size":[-0.375,1]}}},{"origin":[-0.0675,-7.1342,1.0123],"size":[0,0.621,0.243],"pivot":[-0.0675,-6.5133,1.0123],"rotation":[-164.1287,-12.4222,174.4247],"uv":{"west":{"uv":[22,19],"uv_size":[0.25,0.625]}}},{"origin":[-0.0477,-8.1643,0.8612],"size":[0,1.107,0.243],"pivot":[-0.0477,-7.0573,0.8612],"rotation":[-169.2382,-12.8078,175.7863],"uv":{"west":{"uv":[18,10],"uv_size":[0.25,1.125]}}},{"origin":[-0.1552,-0.572,0.7915],"size":[0,0.459,0.081],"pivot":[-0.1552,-0.491,0.8725],"rotation":[-180,-42.5,180],"uv":{"west":{"uv":[28,10],"uv_size":[0.125,0.5]}}},{"origin":[-0.2092,-0.1664,1.0135],"size":[0.054,0.0207,0.1043],"pivot":[-0.1552,-0.1664,1.1178],"rotation":[148.4116,-34.6475,-176.2133],"uv":{"south":{"uv":[4,45],"uv_size":[0.125,0.125]},"west":{"uv":[45,4],"uv_size":[0.125,0.125]},"down":{"uv":[5,45.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1702,-2.1089,-3.7594],"size":[0.3077,0.054,4.158],"inflate":0.003,"pivot":[-0.0082,-2.1089,0.3986],"rotation":[-92.5867,0,180],"uv":{"east":{"uv":[14,5],"uv_size":[4.125,0.125]},"west":{"uv":[14,6],"uv_size":[4.125,0.125]}}},{"origin":[-0.1215,-2.1089,-3.7594],"size":[0.297,0.054,4.158],"inflate":0.001,"pivot":[0.0135,-2.1089,0.3986],"rotation":[-92.5867,0,180],"uv":{"east":{"uv":[18.125,6],"uv_size":[-4.125,0.125]},"west":{"uv":[18.125,5],"uv_size":[-4.125,0.125]}}},{"origin":[-0.1013,0.107,1.0448],"size":[0.0974,0.27,0],"pivot":[-0.1013,0.377,1.0448],"rotation":[-15.9392,55.2745,166.7901],"uv":{"south":{"uv":[37,34],"uv_size":[0.125,0.25]}}},{"origin":[-0.1552,-7.9409,0.5757],"size":[0,1.485,0.729],"pivot":[-0.1552,-6.4559,0.5757],"rotation":[178.4733,10.4163,174.9309],"uv":{"west":{"uv":[1,9],"uv_size":[0.75,1.5]}}},{"origin":[-0.0135,-7.0487,-1.1682],"size":[0,1.053,0.702],"pivot":[-0.0135,-5.9957,-0.4662],"rotation":[159.8964,5.6984,177.9186],"uv":{"west":{"uv":[3,11],"uv_size":[0.75,1]}}},{"origin":[-0.0135,-7.6602,-0.565],"size":[0,0.675,0.459],"pivot":[-0.0135,-6.9852,-0.106],"rotation":[152.3658,5.424,177.1668],"uv":{"west":{"uv":[4,18],"uv_size":[0.5,0.625]}}},{"origin":[-0.0135,-8.2589,-0.0913],"size":[0,0.675,0.297],"pivot":[-0.0135,-7.5839,0.2057],"rotation":[142.337,4.9239,176.2096],"uv":{"west":{"uv":[22,20],"uv_size":[0.25,0.625]}}},{"origin":[-0.1013,0.3634,1.0078],"size":[0.0974,0.243,0],"pivot":[-0.1013,0.6064,1.0078],"rotation":[-2.7034,56.2893,177.7507],"uv":{"south":{"uv":[35,37],"uv_size":[0.125,0.25]}}},{"origin":[-0.1013,0.5924,1],"size":[0.0974,0.216,0],"pivot":[-0.1013,0.8084,1],"rotation":[16.7912,55.1573,-166.0903],"uv":{"south":{"uv":[37,35],"uv_size":[0.125,0.25]}}},{"origin":[-0.1552,0.8326,0.9541],"size":[0,0.27,0.1137],"pivot":[-0.1552,1.0216,0.9541],"rotation":[25.2068,-26.0309,168.3284],"uv":{"west":{"uv":[36,37],"uv_size":[0.125,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.1552,1.2906,1.1131],"size":[0,0.162,0.135],"pivot":[-0.1552,1.2906,1.1131],"rotation":[45.3151,-18.1549,162.5139],"uv":{"west":{"uv":[45,5],"uv_size":[0.125,0.125]}}},{"origin":[-0.1552,1.156,1.0886],"size":[0,0.135,0.162],"pivot":[-0.1552,1.264,1.0886],"rotation":[73.2909,-6.7914,158.4985],"uv":{"west":{"uv":[6,45],"uv_size":[0.125,0.125]}}},{"origin":[-0.1552,1.2607,1.2828],"size":[0,0.135,0.162],"pivot":[-0.1552,1.2607,1.2828],"rotation":[103.9042,5.6842,158.1937],"uv":{"west":{"uv":[45,6],"uv_size":[0.125,0.125]}}},{"origin":[-0.1552,1.0907,1.343],"size":[0,0.216,0.135],"pivot":[-0.1552,1.1717,1.343],"rotation":[134.0685,19.9035,160.6237],"uv":{"west":{"uv":[37,36],"uv_size":[0.125,0.25]}}},{"origin":[-0.1552,1.0472,1.3969],"size":[0,0.1383,0.0963],"pivot":[-0.1552,1.0488,1.3969],"rotation":[152.0106,30.8981,164.7347],"uv":{"west":{"uv":[7,45],"uv_size":[0.125,0.125]}}},{"origin":[-0.1552,0.9185,1.4564],"size":[0,0.1433,0.0963],"pivot":[-0.1552,0.9185,1.4564],"rotation":[151.1662,30.6972,164.3024],"uv":{"west":{"uv":[45,7],"uv_size":[0.125,0.125]}}},{"origin":[-0.1552,0.6505,1.4893],"size":[0,0.27,0.0974],"pivot":[-0.1552,0.6505,1.4893],"rotation":[171.6055,33.4058,175.3551],"uv":{"west":{"uv":[37,37],"uv_size":[0.125,0.25]}}},{"origin":[-0.1552,0.284,1.4864],"size":[0,0.378,0.0974],"pivot":[-0.1552,0.284,1.4864],"rotation":[-179.3991,33.6886,-179.6667],"uv":{"west":{"uv":[28,29],"uv_size":[0.125,0.375]}}},{"origin":[-0.1552,0.23,1.4864],"size":[0,0.054,0.0974],"pivot":[-0.1552,0.284,1.4864],"rotation":[178.9344,33.6785,177.3289],"uv":{"west":{"uv":[8,45],"uv_size":[0.125,0.125]}}},{"origin":[-0.2092,0.1095,1.4763],"size":[0.054,0.1103,0.0253],"pivot":[-0.1552,0.2198,1.4763],"rotation":[-43.5795,21.1569,-159.2293],"uv":{"north":{"uv":[45,8],"uv_size":[0.125,0.125]},"west":{"uv":[9,45],"uv_size":[0.125,0.125]}}},{"origin":[-0.081,0.8525,-1.793],"size":[0.0927,0.1815,0.054],"pivot":[-0.081,0.8524,-1.739],"rotation":[-146.0989,-31.8177,160.4913],"uv":{"south":{"uv":[45,9],"uv_size":[0.125,0.125]},"down":{"uv":[10,45.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1552,0.2062,-1.766],"size":[0,0.162,1.162],"pivot":[-0.1552,0.3682,-0.712],"rotation":[-157.4441,11.2924,154.7589],"uv":{"west":{"uv":[8,23],"uv_size":[1.125,0.125]}}},{"origin":[-0.0135,0.0606,-0.747],"size":[0,0.108,0.486],"pivot":[-0.0135,0.0606,-0.747],"rotation":[-114.4601,13.2508,155.968],"uv":{"west":{"uv":[11,28],"uv_size":[0.5,0.125]}}},{"origin":[-0.0805,-0.3709,0.1816],"size":[0,0.162,1],"pivot":[-0.0805,-0.2089,0.1816],"rotation":[-156.921,10.1287,157.5732],"uv":{"west":{"uv":[24,5],"uv_size":[1,0.125]}}},{"origin":[-0.0135,-0.5631,-0.5772],"size":[0,0.918,0.756],"pivot":[-0.0135,-0.5631,-0.4962],"rotation":[-112.0836,6.9554,177.1872],"uv":{"west":{"uv":[7,12],"uv_size":[0.75,0.875]}}},{"origin":[-0.1552,-0.4155,0.0257],"size":[0,0.351,0.27],"pivot":[-0.1552,-0.0645,0.2147],"rotation":[-142.359,14.196,162.3604],"uv":{"west":{"uv":[25,18],"uv_size":[0.25,0.375]}}},{"origin":[-0.1552,-0.3646,0.2584],"size":[0,0.135,0.135],"pivot":[-0.1552,-0.2296,0.3934],"rotation":[-105.764,15.9114,175.5747],"uv":{"west":{"uv":[45,10],"uv_size":[0.125,0.125]}}},{"origin":[-0.1552,-0.2739,0.1977],"size":[0,0.135,0.135],"pivot":[-0.1552,-0.1389,0.3327],"rotation":[-121.338,15.0722,171.0024],"uv":{"west":{"uv":[11,45],"uv_size":[0.125,0.125]}}},{"origin":[-0.1552,-0.387,0.2643],"size":[0,0.054,0.162],"pivot":[-0.1552,-0.333,0.4263],"rotation":[-95.3257,14.9381,178.6234],"uv":{"west":{"uv":[45,11],"uv_size":[0.125,0.125]}}},{"origin":[-0.1552,-2.7299,0.1286],"size":[0,0.756,2.295],"pivot":[-0.1552,-1.9739,0.3986],"rotation":[-88.3362,10.7687,-179.689],"uv":{"west":{"uv":[2,4],"uv_size":[2.25,0.75]}}},{"origin":[-0.0135,-0.9781,-0.3898],"size":[0,0.81,0.54],"pivot":[-0.0135,-0.9781,-0.3898],"rotation":[-104.5318,7.2627,178.1232],"uv":{"west":{"uv":[8,16],"uv_size":[0.5,0.75]}}},{"origin":[-0.0135,-1.4042,-0.3573],"size":[0,0.378,0.621],"pivot":[-0.0135,-1.4042,-0.3573],"rotation":[-94.4558,7.9761,179.3805],"uv":{"west":{"uv":[1,20],"uv_size":[0.625,0.375]}}},{"origin":[-0.0135,-1.6703,-0.5069],"size":[0,0.243,0.54],"pivot":[-0.0135,-1.6703,-0.3719],"rotation":[-86.8784,8.4876,-179.5388],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[24,6],"uv_size":[0.5,0.25]}}},{"origin":[-0.0135,-1.9457,-0.5168],"size":[0,0.459,0.486],"pivot":[-0.0135,-1.9457,-0.4628],"rotation":[-71.7669,7.1274,-177.6594],"uv":{"west":{"uv":[19,16],"uv_size":[0.5,0.5]}}},{"origin":[-0.0135,-2.0728,-0.7581],"size":[0,0.405,0.702],"pivot":[-0.0135,-2.0728,-0.596],"rotation":[-50.1707,5.7732,-175.2043],"uv":{"west":{"uv":[18,12],"uv_size":[0.75,0.375]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[-0.0135,-2.1759,-0.8041],"size":[0,0.162,0.351],"pivot":[-0.0135,-2.1759,-0.8041],"rotation":[-26.1713,6.5073,-167.0141],"uv":{"west":{"uv":[29,28],"uv_size":[0.375,0.125]}}},{"origin":[-0.0828,-2.1903,-1.4333],"size":[0.027,0.216,0.972],"pivot":[-0.0558,-2.1903,-0.4883],"rotation":[-176.3866,5.4046,-168.6984],"uv":{"south":{"uv":[0,38],"uv_size":[0.125,0.25]},"west":{"uv":[17,19],"uv_size":[1,0.25]}}},{"origin":[-0.0405,-2.6583,-2.2619],"size":[0.027,0.486,1.35],"pivot":[-0.0135,-2.6583,-0.9119],"rotation":[-178.2991,5.4947,-179.7594],"uv":{"west":{"uv":[12,5],"uv_size":[1.375,0.5]},"up":{"uv":[21,19],"uv_size":[0.125,1.375]}}},{"origin":[-0.1552,-6.9107,0.5862],"size":[0,0.648,4.023],"pivot":[-0.1552,-6.2627,0.5862],"rotation":[-92.6266,9.9897,179.5441],"uv":{"west":{"uv":[0,0],"uv_size":[4,0.625]}}},{"origin":[-0.0405,-3.2253,-2.2619],"size":[0.027,0.594,1.35],"pivot":[-0.0135,-2.6583,-0.9119],"rotation":[177.9891,5.9737,179.7906],"uv":{"west":{"uv":[6,10],"uv_size":[1.375,0.625]}}},{"origin":[-0.0405,-3.9539,-2.2421],"size":[0.027,0.729,1.35],"pivot":[-0.0135,-3.2249,-0.8921],"rotation":[175.4755,5.9645,179.5289],"uv":{"west":{"uv":[9,2],"uv_size":[1.375,0.75]}}},{"origin":[-0.0135,-4.8967,-2.1743],"size":[0,0.945,1.3393],"pivot":[-0.0135,-3.9517,-0.8349],"rotation":[172.4593,5.9398,179.2152],"uv":{"west":{"uv":[4,3],"uv_size":[1.375,1]}}},{"origin":[0.0135,-4.8967,-2.1743],"size":[0,0.945,1.3393],"pivot":[0.0135,-3.9517,-0.8349],"rotation":[172.4593,-5.9398,-179.2152],"uv":{"east":{"uv":[5.375,3],"uv_size":[-1.375,1]}}},{"origin":[-0.0135,-6.0226,-1.8456],"size":[0,1.134,1.134],"pivot":[-0.0135,-4.8886,-0.7116],"rotation":[167.433,5.8708,178.6938],"uv":{"west":{"uv":[1,6],"uv_size":[1.125,1.125]}}},{"origin":[-0.1822,-8.1299,0.5369],"size":[0.027,1.674,0.0388],"pivot":[-0.1552,-6.4559,0.5757],"rotation":[178.6656,-2.073,175.206],"uv":{"north":{"uv":[3,20],"uv_size":[0.125,1.625]},"south":{"uv":[20,3],"uv_size":[0.125,1.625]},"west":{"uv":[4,20],"uv_size":[0.125,1.625]},"up":{"uv":[12,45],"uv_size":[0.125,0.125]},"down":{"uv":[45,12.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1822,-8.1299,0.5099],"size":[0.027,1.674,0.0388],"pivot":[-0.1552,-6.4559,0.5757],"rotation":[179.4217,-0.0805,175.2091],"uv":{"north":{"uv":[5,20],"uv_size":[0.125,1.625]},"south":{"uv":[20,5],"uv_size":[0.125,1.625]},"west":{"uv":[6,20],"uv_size":[0.125,1.625]},"up":{"uv":[13,45],"uv_size":[0.125,0.125]},"down":{"uv":[45,13.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1098,-7.5052,0.5668],"size":[0.027,0.189,0.081],"pivot":[-0.0828,-7.3162,0.6478],"rotation":[-179.9566,-16.5777,173.2306],"uv":{"west":{"uv":[38,0],"uv_size":[0.125,0.25]}}},{"origin":[-0.1553,-6.5066,0.5746],"size":[0,0.243,0.621],"pivot":[-0.1552,-6.2905,0.5757],"rotation":[176.9337,10.3581,176.9346],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[21,22],"uv_size":[0.625,0.25]}}},{"origin":[-0.0312,-8.0972,0.6147],"size":[0,0.162,0.081],"pivot":[-0.0312,-7.9352,0.6147],"rotation":[178.2898,10.3881,173.9146],"uv":{"west":{"uv":[14,45],"uv_size":[0.125,0.125]}}},{"origin":[-0.081,0.979,-1.6018],"size":[0.0916,0.1821,0.054],"pivot":[-0.081,1.1613,-1.5478],"rotation":[-138.9653,-28.5726,157.3998],"uv":{"south":{"uv":[45,14],"uv_size":[0.125,0.125]},"up":{"uv":[15,45],"uv_size":[0.125,0.125]}}}]},{"name":"group20","parent":"executor","pivot":[0.1013,-0.1174,1.1923],"rotation":[-180,0,180],"cubes":[{"origin":[0.0039,-0.3874,1.1923],"size":[0.0974,0.27,0],"pivot":[0.1013,-0.1174,1.1923],"rotation":[148.6551,52.0246,-25.6469],"uv":{"south":{"uv":[1,38],"uv_size":[0.125,0.25]}}},{"origin":[0.0039,-0.1738,1.2198],"size":[0.0974,0.297,0.054],"pivot":[0.1013,0.1232,1.2738],"rotation":[155.0037,53.6632,-20.5847],"uv":{"south":{"uv":[38,1],"uv_size":[0.125,0.25]}}},{"origin":[0.0473,1.1521,1.338],"size":[0.297,0.189,0.216],"pivot":[0.2092,2.2996,1.3937],"rotation":[-25,0,0],"uv":{"east":{"uv":[28,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,28],"uv_size":[0.25,0.25]}}},{"origin":[0.1548,-8.1643,1.5234],"size":[0.027,1.107,0.027],"pivot":[0.1548,-7.0573,1.5234],"rotation":[10.4911,0.3315,-1.7396],"uv":{"north":{"uv":[23,8],"uv_size":[0.125,1.125]},"east":{"uv":[10,23],"uv_size":[0.125,1.125]},"down":{"uv":[45,15.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.135,-7.0803,1.3724],"size":[0.027,0.567,0.027],"pivot":[0.135,-6.5133,1.3724],"rotation":[15.491,0.5344,-1.9273],"uv":{"north":{"uv":[3,26],"uv_size":[0.125,0.625]},"east":{"uv":[26,3],"uv_size":[0.125,0.625]},"down":{"uv":[16,45.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.135,-3.6522,1.2748],"size":[0.027,0.27,0.027],"pivot":[0.135,-3.3892,1.2757],"rotation":[-31.8652,-3.1021,-4.9755],"uv":{"north":{"uv":[2,38],"uv_size":[0.125,0.25]}}},{"origin":[0.108,-3.4045,1.3763],"size":[0.027,0.351,0.027],"pivot":[0.108,-3.0604,1.3772],"rotation":[-16.9509,-1.3109,-4.2924],"uv":{"north":{"uv":[29,29],"uv_size":[0.125,0.375]}}},{"origin":[0.135,-4.5743,1.2709],"size":[0.027,0.972,0.027],"pivot":[0.135,-4.5743,1.2709],"rotation":[7.997,-0.2214,1.5757],"uv":{"north":{"uv":[7,24],"uv_size":[0.125,1]}}},{"origin":[0.0473,1.2871,1.554],"size":[0.297,0.054,0.081],"pivot":[0.2092,2.2996,1.3937],"rotation":[-25,0,0],"uv":{"north":{"uv":[38,2],"uv_size":[0.25,0.125]},"east":{"uv":[45,16],"uv_size":[0.125,0.125]},"west":{"uv":[17,45],"uv_size":[0.125,0.125]}}},{"origin":[0.0473,-7.3192,1.6081],"size":[0.027,0.864,0.135],"pivot":[0.0473,-6.4552,1.7431],"rotation":[-0.4288,-16.5731,-4.6866],"uv":{"east":{"uv":[9,24],"uv_size":[0.125,0.875]},"up":{"uv":[45,17],"uv_size":[0.125,0.125]}}},{"origin":[0.0473,-3.5392,-1.2815],"size":[0,0.2472,3.4096],"pivot":[0.0473,-3.5392,1.6421],"rotation":[92.5103,-13.4875,-0.5858],"uv":{"east":{"uv":[9,10],"uv_size":[3.375,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[10,9],"uv_size":[3.375,0.25]},"up":{"uv":[0,3.375],"uv_size":[0,-3.375]}}},{"origin":[0.0473,-0.4911,-4.0887],"size":[0,0.081,5.5966],"pivot":[0.0473,-0.4911,1.508],"rotation":[93.3092,-42.4524,-2.235],"uv":{"east":{"uv":[12,2],"uv_size":[5.625,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[12,3],"uv_size":[5.625,0.125]}}},{"origin":[0.1013,-2.8669,1.4559],"size":[0,2.727,0.216],"pivot":[0.1013,-0.1399,1.4559],"rotation":[-1.0306,-13.9978,0.2493],"uv":{"east":{"uv":[6,12],"uv_size":[0.25,2.75]}}},{"origin":[0.108,-3.0874,1.3772],"size":[0,0.243,0.243],"pivot":[0.108,-3.0604,1.3772],"rotation":[-2.0612,-13.9913,0.4985],"uv":{"east":{"uv":[28,12],"uv_size":[0.25,0.25]}}},{"origin":[0.108,-3.5125,1.3763],"size":[0.027,0.459,0.324],"pivot":[0.108,-3.0604,1.3772],"rotation":[-17.3903,-12.7797,-0.7287],"uv":{"east":{"uv":[21,15],"uv_size":[0.375,0.5]}}},{"origin":[0.135,-3.6522,1.2748],"size":[0,0.351,0.324],"pivot":[0.135,-3.3892,1.2757],"rotation":[-32.5531,-11.5694,0.3937],"uv":{"east":{"uv":[23,10],"uv_size":[0.375,0.375]}}},{"origin":[0.135,-7.1342,1.3724],"size":[0,0.621,0.243],"pivot":[0.135,-6.5133,1.3724],"rotation":[15.8713,-12.4222,-5.5753],"uv":{"east":{"uv":[22,22],"uv_size":[0.25,0.625]}}},{"origin":[0.1548,-8.1643,1.5234],"size":[0,1.107,0.243],"pivot":[0.1548,-7.0573,1.5234],"rotation":[10.7618,-12.8078,-4.2137],"uv":{"east":{"uv":[13,18],"uv_size":[0.25,1.125]}}},{"origin":[0.0473,-0.572,1.4311],"size":[0,0.459,0.081],"pivot":[0.0473,-0.491,1.5121],"rotation":[0,-42.5,0],"uv":{"east":{"uv":[13,28],"uv_size":[0.125,0.5]}}},{"origin":[0.0473,-0.1664,1.1626],"size":[0.054,0.0207,0.1043],"pivot":[0.0473,-0.1664,1.2669],"rotation":[-31.5884,-34.6475,3.7867],"uv":{"east":{"uv":[18,45],"uv_size":[0.125,0.125]},"south":{"uv":[45,18],"uv_size":[0.125,0.125]},"down":{"uv":[19,45.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0039,0.107,1.3398],"size":[0.0974,0.27,0],"pivot":[0.1013,0.377,1.3398],"rotation":[164.0608,55.2745,-13.2099],"uv":{"south":{"uv":[3,38],"uv_size":[0.125,0.25]}}},{"origin":[0.0473,-7.9409,1.8089],"size":[0,1.485,0.729],"pivot":[0.0473,-6.4559,1.8089],"rotation":[-1.5267,10.4163,-5.0691],"uv":{"east":{"uv":[2,9],"uv_size":[0.75,1.5]}}},{"origin":[0.189,-7.0487,2.1488],"size":[0,1.053,0.702],"pivot":[0.189,-5.9957,2.8508],"rotation":[-20.1036,5.6984,-2.0814],"uv":{"east":{"uv":[11,4],"uv_size":[0.75,1]}}},{"origin":[0.189,-7.6602,2.0317],"size":[0,0.675,0.459],"pivot":[0.189,-6.9852,2.4907],"rotation":[-27.6342,5.424,-2.8331],"uv":{"east":{"uv":[5,18],"uv_size":[0.5,0.625]}}},{"origin":[0.189,-8.2589,1.882],"size":[0,0.675,0.297],"pivot":[0.189,-7.5839,2.179],"rotation":[-37.663,4.9239,-3.7904],"uv":{"east":{"uv":[0,23],"uv_size":[0.25,0.625]}}},{"origin":[0.0039,0.3634,1.3768],"size":[0.0974,0.243,0],"pivot":[0.1013,0.6064,1.3769],"rotation":[177.2966,56.2893,-2.2493],"uv":{"south":{"uv":[38,3],"uv_size":[0.125,0.25]}}},{"origin":[0.0039,0.5924,1.3846],"size":[0.0974,0.216,0],"pivot":[0.1013,0.8084,1.3846],"rotation":[-163.2088,55.1573,13.9097],"uv":{"south":{"uv":[4,38],"uv_size":[0.125,0.25]}}},{"origin":[0.0473,0.8326,1.4306],"size":[0,0.27,0.1137],"pivot":[0.0473,1.0216,1.4306],"rotation":[-154.7932,-26.0309,-11.6716],"uv":{"east":{"uv":[38,4],"uv_size":[0.125,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0473,1.2906,1.2715],"size":[0,0.162,0.135],"pivot":[0.0473,1.2906,1.2715],"rotation":[-134.6849,-18.1549,-17.4861],"uv":{"east":{"uv":[45,19],"uv_size":[0.125,0.125]}}},{"origin":[0.0473,1.156,1.2961],"size":[0,0.135,0.162],"pivot":[0.0473,1.264,1.2961],"rotation":[-106.7091,-6.7914,-21.5015],"uv":{"east":{"uv":[20,45],"uv_size":[0.125,0.125]}}},{"origin":[0.0473,1.2607,1.1018],"size":[0,0.135,0.162],"pivot":[0.0473,1.2607,1.1018],"rotation":[-76.0958,5.6842,-21.8063],"uv":{"east":{"uv":[45,20],"uv_size":[0.125,0.125]}}},{"origin":[0.0473,1.0907,1.0417],"size":[0,0.216,0.135],"pivot":[0.0473,1.1717,1.0417],"rotation":[-45.9315,19.9035,-19.3763],"uv":{"east":{"uv":[5,38],"uv_size":[0.125,0.25]}}},{"origin":[0.0473,1.0472,0.9877],"size":[0,0.1383,0.0963],"pivot":[0.0473,1.0488,0.9877],"rotation":[-27.9894,30.8981,-15.2653],"uv":{"east":{"uv":[21,45],"uv_size":[0.125,0.125]}}},{"origin":[0.0473,0.9185,0.9283],"size":[0,0.1433,0.0963],"pivot":[0.0473,0.9185,0.9283],"rotation":[-28.8338,30.6972,-15.6976],"uv":{"east":{"uv":[45,21],"uv_size":[0.125,0.125]}}},{"origin":[0.0473,0.6505,0.8954],"size":[0,0.27,0.0974],"pivot":[0.0473,0.6505,0.8954],"rotation":[-8.3945,33.4058,-4.6449],"uv":{"east":{"uv":[38,5],"uv_size":[0.125,0.25]}}},{"origin":[0.0473,0.284,0.8983],"size":[0,0.378,0.0974],"pivot":[0.0473,0.284,0.8983],"rotation":[0.6009,33.6886,0.3333],"uv":{"east":{"uv":[0,30],"uv_size":[0.125,0.375]}}},{"origin":[0.0473,0.23,0.8983],"size":[0,0.054,0.0974],"pivot":[0.0473,0.284,0.8983],"rotation":[-1.0656,33.6785,-2.6711],"uv":{"east":{"uv":[22,45],"uv_size":[0.125,0.125]}}},{"origin":[0.0473,0.1095,0.9084],"size":[0.054,0.1103,0.0253],"pivot":[0.0473,0.2198,0.9084],"rotation":[136.4205,21.1569,20.7707],"uv":{"north":{"uv":[45,22],"uv_size":[0.125,0.125]},"east":{"uv":[23,45],"uv_size":[0.125,0.125]}}},{"origin":[0.0288,0.8525,4.0696],"size":[0.0927,0.1815,0.054],"pivot":[0.1215,0.8524,4.1236],"rotation":[33.9011,-31.8177,-19.5087],"uv":{"south":{"uv":[45,23],"uv_size":[0.125,0.125]},"down":{"uv":[24,45.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0473,0.2062,2.0427],"size":[0,0.162,1.162],"pivot":[0.0473,0.3682,3.0967],"rotation":[22.5559,11.2924,-25.2411],"uv":{"east":{"uv":[11,23],"uv_size":[1.125,0.125]}}},{"origin":[0.189,0.0606,3.1316],"size":[0,0.108,0.486],"pivot":[0.189,0.0606,3.1316],"rotation":[65.5399,13.2508,-24.032],"uv":{"east":{"uv":[28,13],"uv_size":[0.5,0.125]}}},{"origin":[0.122,-0.3709,2.2031],"size":[0,0.162,1],"pivot":[0.122,-0.2089,2.2031],"rotation":[23.079,10.1287,-22.4268],"uv":{"east":{"uv":[24,7],"uv_size":[1,0.125]}}},{"origin":[0.189,-0.5631,2.7999],"size":[0,0.918,0.756],"pivot":[0.189,-0.5631,2.8809],"rotation":[67.9164,6.9554,-2.8128],"uv":{"east":{"uv":[8,12],"uv_size":[0.75,0.875]}}},{"origin":[0.0473,-0.4155,1.981],"size":[0,0.351,0.27],"pivot":[0.0473,-0.0645,2.17],"rotation":[37.641,14.196,-17.6396],"uv":{"east":{"uv":[19,25],"uv_size":[0.25,0.375]}}},{"origin":[0.0473,-0.3646,1.8563],"size":[0,0.135,0.135],"pivot":[0.0473,-0.2296,1.9913],"rotation":[74.236,15.9114,-4.4253],"uv":{"east":{"uv":[45,24],"uv_size":[0.125,0.125]}}},{"origin":[0.0473,-0.2739,1.917],"size":[0,0.135,0.135],"pivot":[0.0473,-0.1389,2.052],"rotation":[58.662,15.0723,-8.9976],"uv":{"east":{"uv":[25,45],"uv_size":[0.125,0.125]}}},{"origin":[0.0473,-0.387,1.7964],"size":[0,0.054,0.162],"pivot":[0.0473,-0.333,1.9584],"rotation":[84.6743,14.9382,-1.3765],"uv":{"east":{"uv":[45,25],"uv_size":[0.125,0.125]}}},{"origin":[0.0473,-2.7299,1.7161],"size":[0,0.756,2.295],"pivot":[0.0473,-1.9739,1.9861],"rotation":[91.6638,10.7687,0.311],"uv":{"east":{"uv":[4,2],"uv_size":[2.25,0.75]}}},{"origin":[0.189,-0.9781,2.7745],"size":[0,0.81,0.54],"pivot":[0.189,-0.9781,2.7745],"rotation":[75.4682,7.2627,-1.8768],"uv":{"east":{"uv":[16,9],"uv_size":[0.5,0.75]}}},{"origin":[0.189,-1.4042,2.742],"size":[0,0.378,0.621],"pivot":[0.189,-1.4042,2.742],"rotation":[85.5442,7.9761,-0.6195],"uv":{"east":{"uv":[20,1],"uv_size":[0.625,0.375]}}},{"origin":[0.189,-1.6703,2.6216],"size":[0,0.243,0.54],"pivot":[0.189,-1.6703,2.7566],"rotation":[93.1216,8.4876,0.4612],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[8,24],"uv_size":[0.5,0.25]}}},{"origin":[0.189,-1.9457,2.7935],"size":[0,0.459,0.486],"pivot":[0.189,-1.9457,2.8475],"rotation":[108.2331,7.1274,2.3406],"uv":{"east":{"uv":[19,17],"uv_size":[0.5,0.5]}}},{"origin":[0.189,-2.0728,2.8187],"size":[0,0.405,0.702],"pivot":[0.189,-2.0728,2.9807],"rotation":[129.8293,5.7732,4.7957],"uv":{"east":{"uv":[18,13],"uv_size":[0.75,0.375]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0.189,-2.1759,3.1888],"size":[0,0.162,0.351],"pivot":[0.189,-2.1759,3.1888],"rotation":[153.8287,6.5073,12.9859],"uv":{"east":{"uv":[30,0],"uv_size":[0.375,0.125]}}},{"origin":[0.1467,-2.1903,1.928],"size":[0.027,0.216,0.972],"pivot":[0.1467,-2.1903,2.873],"rotation":[3.6134,5.4046,11.3016],"uv":{"east":{"uv":[18,19],"uv_size":[1,0.25]},"south":{"uv":[6,38],"uv_size":[0.125,0.25]}}},{"origin":[0.189,-2.6583,1.9466],"size":[0.027,0.486,1.35],"pivot":[0.189,-2.6583,3.2966],"rotation":[1.7009,5.4947,0.2406],"uv":{"east":{"uv":[13.375,5],"uv_size":[-1.375,0.5]},"up":{"uv":[20,21],"uv_size":[0.125,1.375]}}},{"origin":[0.0473,-6.9107,1.7985],"size":[0,0.648,4.023],"pivot":[0.0473,-6.2627,1.7985],"rotation":[87.3735,9.9897,-0.4559],"uv":{"east":{"uv":[0,1],"uv_size":[4,0.625]}}},{"origin":[0.189,-3.2253,1.9466],"size":[0.027,0.594,1.35],"pivot":[0.189,-2.6583,3.2966],"rotation":[-2.0109,5.9737,-0.2094],"uv":{"east":{"uv":[7.375,10],"uv_size":[-1.375,0.625]}}},{"origin":[0.189,-3.9539,1.9268],"size":[0.027,0.729,1.35],"pivot":[0.189,-3.2249,3.2768],"rotation":[-4.5245,5.9645,-0.4711],"uv":{"east":{"uv":[10.375,2],"uv_size":[-1.375,0.75]}}},{"origin":[0.189,-6.0226,1.9623],"size":[0,1.134,1.134],"pivot":[0.189,-4.8886,3.0963],"rotation":[-12.567,5.8708,-1.3062],"uv":{"east":{"uv":[6,3],"uv_size":[1.125,1.125]}}},{"origin":[0.0473,-8.1299,1.7701],"size":[0.027,1.674,0.0388],"pivot":[0.0473,-6.4559,1.8089],"rotation":[-1.3344,-2.073,-4.794],"uv":{"north":{"uv":[7,20],"uv_size":[0.125,1.625]},"east":{"uv":[20,7],"uv_size":[0.125,1.625]},"south":{"uv":[8,20],"uv_size":[0.125,1.625]},"up":{"uv":[26,45],"uv_size":[0.125,0.125]},"down":{"uv":[45,26.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.0473,-8.1299,1.7431],"size":[0.027,1.674,0.0388],"pivot":[0.0473,-6.4559,1.8089],"rotation":[-0.5783,-0.0805,-4.7909],"uv":{"north":{"uv":[9,20],"uv_size":[0.125,1.625]},"east":{"uv":[20,9],"uv_size":[0.125,1.625]},"south":{"uv":[10,20],"uv_size":[0.125,1.625]},"up":{"uv":[27,45],"uv_size":[0.125,0.125]},"down":{"uv":[45,27.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.1197,-7.5052,1.6559],"size":[0.027,0.189,0.081],"pivot":[0.1197,-7.3162,1.7369],"rotation":[0.0434,-16.5777,-6.7694],"uv":{"east":{"uv":[38,6],"uv_size":[0.125,0.25]}}},{"origin":[0.0473,-6.5066,1.8077],"size":[0,0.243,0.621],"pivot":[0.0473,-6.2905,1.8089],"rotation":[-3.0663,10.3581,-3.0654],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,23],"uv_size":[0.625,0.25]}}},{"origin":[0.1713,-8.0972,1.77],"size":[0,0.162,0.081],"pivot":[0.1713,-7.9352,1.77],"rotation":[-1.7102,10.3881,-6.0854],"uv":{"east":{"uv":[28,45],"uv_size":[0.125,0.125]}}},{"origin":[0.0299,0.979,3.8785],"size":[0.0916,0.1821,0.054],"pivot":[0.1215,1.1613,3.9325],"rotation":[41.0347,-28.5726,-22.6002],"uv":{"south":{"uv":[45,28],"uv_size":[0.125,0.125]},"up":{"uv":[29,45],"uv_size":[0.125,0.125]}}}]},{"name":"handle","parent":"executor","pivot":[0,4.5804,-0.1479],"rotation":[-180,0,180],"cubes":[{"origin":[-0.378,3.2283,-1.3933],"size":[0.756,1.242,1.377],"pivot":[0,3.8493,-0.7048],"rotation":[7.5,0,0],"uv":{"north":{"uv":[9,6],"uv_size":[0.75,1.25]},"south":{"uv":[8,9],"uv_size":[0.75,1.25]}}},{"origin":[-0.378,4.3722,-1.4688],"size":[0.756,1.053,1.431],"pivot":[0,4.3722,-1.4553],"rotation":[-10,0,0],"uv":{"north":{"uv":[0,11],"uv_size":[0.75,1]},"south":{"uv":[11,0],"uv_size":[0.75,1]}}},{"origin":[-0.216,4.4707,-0.153],"size":[0.432,0.567,0.27],"pivot":[0,4.9972,-0.1328],"rotation":[12.5,0,0],"uv":{"south":{"uv":[19,18],"uv_size":[0.375,0.625]}}},{"origin":[-0.216,4.4833,-0.018],"size":[0.432,0.054,0.243],"uv":{"south":{"uv":[15,28],"uv_size":[0.375,0.125]}}},{"origin":[-0.216,4.4097,0.0319],"size":[0.432,0.081,0.189],"pivot":[0,4.4637,0.1804],"rotation":[-10,0,0],"uv":{"south":{"uv":[28,15],"uv_size":[0.375,0.125]}}},{"origin":[-0.216,4.1801,-0.0397],"size":[0.432,0.243,0.243],"pivot":[0,4.3961,0.1628],"rotation":[-25,0,0],"uv":{"south":{"uv":[24,9],"uv_size":[0.375,0.25]}}},{"origin":[-0.216,4.0451,-0.011],"size":[0.432,0.243,0.189],"pivot":[0,4.3961,0.1628],"rotation":[-17.5,0,0],"uv":{"south":{"uv":[24,10],"uv_size":[0.375,0.25]}}},{"origin":[-0.216,3.9095,-0.0455],"size":[0.432,0.189,0.135],"pivot":[0,4.193,0.0439],"rotation":[-7.5,0,0],"uv":{"south":{"uv":[11,24],"uv_size":[0.375,0.25]}}},{"origin":[-0.216,3.6422,-0.0536],"size":[0.432,0.297,0.135],"pivot":[0,3.8177,0.0037],"rotation":[12.5,0,0],"uv":{"south":{"uv":[24,11],"uv_size":[0.375,0.25]}}},{"origin":[-0.378,5.4092,-1.2859],"size":[0.756,1.188,1.431],"pivot":[0,5.4092,-1.2724],"rotation":[-17.5,0,0],"uv":{"north":{"uv":[9,8],"uv_size":[0.75,1.25]},"south":{"uv":[10,0],"uv_size":[0.75,1.25]},"up":{"uv":[3,9],"uv_size":[0.75,1.375]}}},{"origin":[-0.378,6.5462,-0.9281],"size":[0.756,0.594,1.431],"pivot":[0.027,6.5462,-0.9281],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[0,14],"uv_size":[0.75,0.625]},"south":{"uv":[1,14],"uv_size":[0.75,0.625]},"west":{"uv":[10,5],"uv_size":[1.375,0.625]},"down":{"uv":[4,10.375],"uv_size":[0.75,-1.375]}}},{"origin":[-0.378,6.3276,-0.9966],"size":[0.756,0.297,1.728],"pivot":[0.2306,6.4761,-0.1595],"rotation":[-22,0,0],"uv":{"north":{"uv":[11,20],"uv_size":[0.75,0.25]},"south":{"uv":[20,11],"uv_size":[0.75,0.25]},"west":{"uv":[14,14],"uv_size":[1.75,0.25]},"up":{"uv":[4,5],"uv_size":[0.75,1.75]},"down":{"uv":[5,5.75],"uv_size":[0.75,-1.75]}}},{"origin":[-0.648,6.3276,-0.6726],"size":[1.296,0.297,0.972],"pivot":[0.2306,6.4761,-0.1595],"rotation":[-22,0,0],"uv":{"east":{"uv":[19,3],"uv_size":[1,0.25]},"west":{"uv":[4,19],"uv_size":[1,0.25]},"up":{"uv":[5,6],"uv_size":[1.25,1]},"down":{"uv":[6,6],"uv_size":[1.25,-1]}}},{"origin":[-0.5653,1.323,-0.4565],"size":[1.1306,0.2048,0.4073],"pivot":[0.1873,1.2071,-0.1741],"rotation":[26.5,0,0],"uv":{"east":{"uv":[12,24],"uv_size":[0.375,0.25]},"west":{"uv":[24,12],"uv_size":[0.375,0.25]},"down":{"uv":[2,15.375],"uv_size":[1.125,-0.375]}}},{"origin":[-0.5653,1.3687,-0.5599],"size":[1.1306,0.999,0.297],"pivot":[0.5653,1.8277,-0.2629],"rotation":[12.5,0,0],"uv":{"east":{"uv":[19,4],"uv_size":[0.25,1]},"west":{"uv":[5,19],"uv_size":[0.25,1]}}},{"origin":[-0.5653,2.0675,-1.249],"size":[1.1306,0.405,1.1716],"inflate":0.001,"pivot":[0.5653,2.0675,-1.249],"rotation":[-48.8814,0,0],"uv":{"east":{"uv":[15,4],"uv_size":[1.125,0.375]},"west":{"uv":[5,15],"uv_size":[1.125,0.375]}}},{"origin":[-0.5653,1.9513,-1.2038],"size":[1.1306,0.54,0.837],"inflate":-0.001,"pivot":[-0.0059,2.1808,-0.7853],"rotation":[-15,0,0],"uv":{"east":{"uv":[0,15],"uv_size":[0.875,0.5]},"west":{"uv":[1,15],"uv_size":[0.875,0.5]}}},{"origin":[-0.5653,2.4534,-1.1185],"size":[1.1306,0.999,0.891],"pivot":[-0.0017,2.8314,-0.727],"rotation":[-10,0,0],"uv":{"east":{"uv":[10,3],"uv_size":[0.875,1]},"west":{"uv":[5,10],"uv_size":[0.875,1]}}},{"origin":[-0.5636,3.2283,-1.1503],"size":[1.1306,1.242,0.972],"inflate":0.001,"pivot":[0.189,3.8493,-0.7048],"rotation":[7.5,0,0],"uv":{"east":{"uv":[3,6],"uv_size":[1,1.25]},"west":{"uv":[7,0],"uv_size":[1,1.25]}}},{"origin":[-0.5636,4.3722,-1.2528],"size":[1.1306,1.053,0.972],"pivot":[0.189,4.3722,-1.4553],"rotation":[-10,0,0],"uv":{"east":{"uv":[5,9],"uv_size":[1,1]},"west":{"uv":[9,5],"uv_size":[1,1]}}},{"origin":[-0.5636,5.4092,-1.0699],"size":[1.1306,1.188,0.972],"inflate":0.001,"pivot":[0,5.4092,-1.2724],"rotation":[-17.5,0,0],"uv":{"east":{"uv":[4,7],"uv_size":[1,1.25]},"west":{"uv":[5,7],"uv_size":[1,1.25]}}},{"origin":[-0.5636,6.5462,-0.7121],"size":[1.1306,0.594,0.972],"pivot":[0.027,6.5462,-0.9281],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[9,12],"uv_size":[1,0.625]},"west":{"uv":[10,12],"uv_size":[1,0.625]}}},{"origin":[-0.378,2.1865,-1.5838],"size":[0.756,0.297,1.701],"pivot":[0.2306,2.335,-0.7467],"rotation":[-24.5,0,0],"uv":{"north":{"uv":[12,20],"uv_size":[0.75,0.25]},"south":{"uv":[20,12],"uv_size":[0.75,0.25]},"up":{"uv":[0,6],"uv_size":[0.75,1.75]},"down":{"uv":[6,1.75],"uv_size":[0.75,-1.75]}}},{"origin":[-0.648,2.1865,-1.2598],"size":[1.296,0.297,1.026],"pivot":[0.2306,2.335,-0.7467],"rotation":[-24.5,0,0],"uv":{"east":{"uv":[19,5],"uv_size":[1,0.25]},"west":{"uv":[6,19],"uv_size":[1,0.25]},"up":{"uv":[7,2],"uv_size":[1.25,1]},"down":{"uv":[6,8],"uv_size":[1.25,-1]}}},{"origin":[-0.378,6.1494,-1.1448],"size":[0.756,0.216,0.216],"pivot":[0.2306,6.2169,-0.868],"rotation":[-4.5,0,0],"uv":{"north":{"uv":[13,20],"uv_size":[0.75,0.25]},"up":{"uv":[20,13],"uv_size":[0.75,0.25]},"down":{"uv":[14,20.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.378,5.728,0.2428],"size":[0.756,0.297,0.27],"pivot":[0.2222,5.909,-0.0361],"rotation":[-17,0,0],"uv":{"south":{"uv":[15,20],"uv_size":[0.75,0.25]},"down":{"uv":[20,16.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.648,6.1494,-0.8208],"size":[1.296,0.216,0.135],"pivot":[0.2306,6.2169,-0.868],"rotation":[-4.5,0,0],"uv":{"east":{"uv":[1,30],"uv_size":[0.125,0.25]},"south":{"uv":[16,16],"uv_size":[1.25,0.25]},"west":{"uv":[30,1],"uv_size":[0.125,0.25]},"up":{"uv":[21,21],"uv_size":[1.25,0.125]},"down":{"uv":[0,22.125],"uv_size":[1.25,-0.125]}}},{"origin":[-0.6508,5.5482,-0.8268],"size":[1.296,0.189,0.189],"pivot":[0.6452,5.7372,-0.8268],"rotation":[-34.5,0,0],"uv":{"east":{"uv":[4,26],"uv_size":[0.25,0.25]},"west":{"uv":[26,4],"uv_size":[0.25,0.25]},"up":{"uv":[0,17],"uv_size":[1.25,0.25]},"down":{"uv":[2,17.25],"uv_size":[1.25,-0.25]}}},{"origin":[-0.648,6.1616,-0.6747],"size":[1.296,0.189,0.189],"pivot":[0.648,6.3506,-0.6747],"rotation":[-34.5,0,0],"uv":{"east":{"uv":[5,26],"uv_size":[0.25,0.25]},"west":{"uv":[26,5],"uv_size":[0.25,0.25]},"up":{"uv":[17,4],"uv_size":[1.25,0.25]},"down":{"uv":[5,17.25],"uv_size":[1.25,-0.25]}}},{"origin":[-0.648,6.1616,-0.4857],"size":[1.296,0.027,0.054],"pivot":[0.648,6.3506,-0.6747],"rotation":[-34.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[1.25,0.125]},"east":{"uv":[7,38],"uv_size":[0.125,0.125]},"south":{"uv":[22,1],"uv_size":[1.25,0.125]},"west":{"uv":[38,7],"uv_size":[0.125,0.125]},"up":{"uv":[2,22],"uv_size":[1.25,0.125]},"down":{"uv":[22,2.125],"uv_size":[1.25,-0.125]}}},{"origin":[-0.702,6.0318,-0.6203],"size":[1.404,0.1483,0.1765],"pivot":[0,6.1275,-0.5168],"rotation":[-62,0,0],"uv":{"east":{"uv":[8,38],"uv_size":[0.125,0.125]},"west":{"uv":[38,8],"uv_size":[0.125,0.125]},"up":{"uv":[16,21],"uv_size":[1.375,0.125]},"down":{"uv":[21,16.125],"uv_size":[1.375,-0.125]}}},{"origin":[-0.648,5.728,-0.3242],"size":[1.296,0.297,0.405],"inflate":0.001,"pivot":[0.2222,5.909,-0.0361],"rotation":[-17,0,0],"uv":{"east":{"uv":[13,24],"uv_size":[0.375,0.25]},"west":{"uv":[24,13],"uv_size":[0.375,0.25]},"up":{"uv":[7,14],"uv_size":[1.25,0.375]},"down":{"uv":[9,14.375],"uv_size":[1.25,-0.375]}}},{"origin":[-0.648,5.8201,-0.6345],"size":[1.296,0.135,0.27],"pivot":[0.648,5.8201,-0.3645],"rotation":[-50,0,0],"uv":{"north":{"uv":[22,3],"uv_size":[1.25,0.125]},"east":{"uv":[2,30],"uv_size":[0.25,0.125]},"west":{"uv":[30,2],"uv_size":[0.25,0.125]},"down":{"uv":[7,17.25],"uv_size":[1.25,-0.25]}}},{"origin":[-0.702,5.9243,-0.5779],"size":[1.404,0.135,0.27],"pivot":[0.2222,5.909,-0.0361],"rotation":[-10,0,0],"uv":{"east":{"uv":[3,30],"uv_size":[0.25,0.125]},"west":{"uv":[30,3],"uv_size":[0.25,0.125]},"up":{"uv":[16,10],"uv_size":[1.375,0.25]},"down":{"uv":[16,12.25],"uv_size":[1.375,-0.25]}}},{"origin":[-0.378,6.3182,-0.9564],"size":[0.756,0.297,1.647],"pivot":[0.2327,6.4667,-0.1482],"rotation":[-10,0,0],"uv":{"north":{"uv":[17,20],"uv_size":[0.75,0.25]},"south":{"uv":[20,17],"uv_size":[0.75,0.25]},"west":{"uv":[14,15],"uv_size":[1.625,0.25]},"up":{"uv":[8,4],"uv_size":[0.75,1.625]},"down":{"uv":[6,9.625],"uv_size":[0.75,-1.625]}}},{"origin":[-0.621,6.3182,-0.6864],"size":[1.242,0.297,0.999],"pivot":[0.2327,6.4667,-0.1482],"rotation":[-10,0,0],"uv":{"east":{"uv":[19,6],"uv_size":[1,0.25]},"west":{"uv":[7,19],"uv_size":[1,0.25]},"up":{"uv":[7,6],"uv_size":[1.25,1]},"down":{"uv":[0,9],"uv_size":[1.25,-1]}}},{"origin":[0.7276,6.3182,0.0295],"size":[0.081,0.297,0.4494],"pivot":[0.2327,6.4667,-0.1482],"rotation":[-11.8389,-32.1774,6.3696],"uv":{"west":{"uv":[23,12],"uv_size":[0.5,0.25]},"up":{"uv":[6,26],"uv_size":[0.125,0.5]},"down":{"uv":[26,6.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.8085,6.3182,0.0295],"size":[0.081,0.297,0.4494],"pivot":[-0.2327,6.4667,-0.1482],"rotation":[-11.8389,32.1774,-6.3696],"uv":{"east":{"uv":[23.5,12],"uv_size":[-0.5,0.25]},"up":{"uv":[6.125,26],"uv_size":[-0.125,0.5]},"down":{"uv":[26.125,6.5],"uv_size":[-0.125,-0.5]}}},{"origin":[-0.621,5.7934,-0.9007],"size":[1.242,0.297,0.999],"pivot":[0.2327,5.9419,-0.3626],"rotation":[-5,0,0],"uv":{"east":{"uv":[19,7],"uv_size":[1,0.25]},"west":{"uv":[8,19],"uv_size":[1,0.25]},"up":{"uv":[8,0],"uv_size":[1.25,1]},"down":{"uv":[8,2],"uv_size":[1.25,-1]}}},{"origin":[-0.378,5.7934,-1.1707],"size":[0.756,0.297,1.647],"pivot":[0.2327,5.9419,-0.3626],"rotation":[-5,0,0],"uv":{"north":{"uv":[18,20],"uv_size":[0.75,0.25]},"south":{"uv":[20,18],"uv_size":[0.75,0.25]},"up":{"uv":[7,8],"uv_size":[0.75,1.625]},"down":{"uv":[8,8.625],"uv_size":[0.75,-1.625]}}},{"origin":[-0.378,5.2279,0.1149],"size":[0.756,0.297,0.216],"pivot":[0.3239,5.4197,-0.4866],"rotation":[-14.5,0,0],"uv":{"south":{"uv":[19,20],"uv_size":[0.75,0.25]},"up":{"uv":[20,19],"uv_size":[0.75,0.25]},"down":{"uv":[20,20.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.378,5.2889,-1.3517],"size":[0.756,0.233,1.647],"pivot":[0.3239,5.4467,-0.5288],"rotation":[5,0,0],"uv":{"north":{"uv":[0,21],"uv_size":[0.75,0.25]},"south":{"uv":[21,0],"uv_size":[0.75,0.25]},"up":{"uv":[0,9],"uv_size":[0.75,1.625]}}},{"origin":[-0.648,5.2279,-0.4521],"size":[1.296,0.297,0.351],"inflate":0.001,"pivot":[0.3239,5.4197,-0.4866],"rotation":[-14.5,0,0],"uv":{"east":{"uv":[14,24],"uv_size":[0.375,0.25]},"west":{"uv":[24,14],"uv_size":[0.375,0.25]},"up":{"uv":[14,9],"uv_size":[1.25,0.375]},"down":{"uv":[14,10.375],"uv_size":[1.25,-0.375]}}},{"origin":[-0.702,5.3849,-0.7095],"size":[1.404,0.135,0.27],"pivot":[0.3239,5.4197,-0.4866],"rotation":[-7.5,0,0],"uv":{"east":{"uv":[4,30],"uv_size":[0.25,0.125]},"west":{"uv":[30,4],"uv_size":[0.25,0.125]},"up":{"uv":[16,13],"uv_size":[1.375,0.25]},"down":{"uv":[14,16.25],"uv_size":[1.375,-0.25]}}},{"origin":[-0.648,5.2776,-0.6231],"size":[1.296,0.135,0.27],"pivot":[0.3239,5.4197,-0.4866],"rotation":[-47.5,0,0],"uv":{"east":{"uv":[5,30],"uv_size":[0.25,0.125]},"west":{"uv":[30,5],"uv_size":[0.25,0.125]},"down":{"uv":[17,9.25],"uv_size":[1.25,-0.25]}}},{"origin":[-0.702,5.2226,-0.7729],"size":[1.404,0.1483,0.1765],"pivot":[0.3239,5.4197,-0.4866],"rotation":[-59.5,0,0],"uv":{"north":{"uv":[21,17],"uv_size":[1.375,0.125]},"east":{"uv":[9,38],"uv_size":[0.125,0.125]},"west":{"uv":[38,9],"uv_size":[0.125,0.125]},"up":{"uv":[18,21],"uv_size":[1.375,0.125]},"down":{"uv":[21,18.125],"uv_size":[1.375,-0.125]}}},{"origin":[-0.6508,5.5016,-0.9505],"size":[1.296,0.216,0.135],"pivot":[0.2277,5.6096,-1.0247],"rotation":[5.5,0,0],"uv":{"east":{"uv":[6,30],"uv_size":[0.125,0.25]},"west":{"uv":[30,6],"uv_size":[0.125,0.25]},"up":{"uv":[4,22],"uv_size":[1.25,0.125]},"down":{"uv":[22,4.125],"uv_size":[1.25,-0.125]}}},{"origin":[-0.3808,5.5016,-1.2745],"size":[0.756,0.216,0.216],"pivot":[0.2277,5.6096,-1.0247],"rotation":[5.5,0,0],"uv":{"north":{"uv":[1,21],"uv_size":[0.75,0.25]},"up":{"uv":[21,1],"uv_size":[0.75,0.25]}}},{"origin":[-0.621,5.2249,-1.0817],"size":[1.242,0.297,0.999],"pivot":[0.3239,5.4467,-0.5288],"rotation":[5,0,0],"uv":{"east":{"uv":[19,8],"uv_size":[1,0.25]},"west":{"uv":[9,19],"uv_size":[1,0.25]},"up":{"uv":[2,8],"uv_size":[1.25,1]},"down":{"uv":[8,4],"uv_size":[1.25,-1]}}},{"origin":[-0.378,4.4198,-0.0721],"size":[0.756,0.297,0.324],"pivot":[0.2327,4.5683,-0.587],"rotation":[12.5,0,0],"uv":{"south":{"uv":[2,21],"uv_size":[0.75,0.25]},"up":{"uv":[6,18],"uv_size":[0.75,0.375]},"down":{"uv":[7,18.375],"uv_size":[0.75,-0.375]}}},{"origin":[-0.378,3.6908,-1.493],"size":[0.756,0.297,0.189],"pivot":[0.2327,3.8393,-0.6849],"rotation":[12.5,0,0],"uv":{"north":{"uv":[21,2],"uv_size":[0.75,0.25]},"up":{"uv":[21,3],"uv_size":[0.75,0.25]},"down":{"uv":[21,4.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.621,4.4198,-0.2341],"size":[1.242,0.297,0.108],"pivot":[0.2327,4.5683,-0.587],"rotation":[12.5,0,0],"uv":{"east":{"uv":[7,30],"uv_size":[0.125,0.25]},"west":{"uv":[30,7],"uv_size":[0.125,0.25]},"up":{"uv":[22,5],"uv_size":[1.25,0.125]},"down":{"uv":[6,22.125],"uv_size":[1.25,-0.125]}}},{"origin":[-0.621,3.5389,-1.2064],"size":[1.242,0.297,0.108],"pivot":[0.2327,3.6874,-1.3702],"rotation":[12.5,0,0],"uv":{"east":{"uv":[8,30],"uv_size":[0.125,0.25]},"west":{"uv":[30,8],"uv_size":[0.125,0.25]},"up":{"uv":[22,6],"uv_size":[1.25,0.125]},"down":{"uv":[22,7.125],"uv_size":[1.25,-0.125]}}},{"origin":[-0.621,3.6012,-1.0727],"size":[1.242,0.29,1.4018],"pivot":[0.621,3.6012,-1.0727],"rotation":[44.4284,0,0],"uv":{"east":{"uv":[16,14],"uv_size":[1.375,0.25]},"west":{"uv":[16,15],"uv_size":[1.375,0.25]},"up":{"uv":[0,4],"uv_size":[1.25,1.375]},"down":{"uv":[4,1.375],"uv_size":[1.25,-1.375]}}},{"origin":[-0.378,5.5688,0.5546],"size":[0.756,0.972,0.135],"pivot":[0.378,6.4598,0.6896],"rotation":[-26.9597,0,0],"uv":{"east":{"uv":[14,23],"uv_size":[0.125,1]},"south":{"uv":[1,11],"uv_size":[0.75,1]},"west":{"uv":[23,14],"uv_size":[0.125,1]},"up":{"uv":[24,16],"uv_size":[0.75,0.125]}}},{"origin":[-0.378,6.8929,-0.4185],"size":[0.756,0.351,0.702],"pivot":[0.378,7.2439,-0.4185],"rotation":[-22.5,0,0],"uv":{"south":{"uv":[8,18],"uv_size":[0.75,0.375]},"west":{"uv":[9,18],"uv_size":[0.75,0.375]},"up":{"uv":[2,13],"uv_size":[0.75,0.75]}}},{"origin":[-0.378,6.585,-0.0345],"size":[0.756,0.513,0.54],"pivot":[0.378,7.098,0.5055],"rotation":[15,0,0],"uv":{"east":{"uv":[19,9],"uv_size":[0.5,0.5]},"west":{"uv":[10,19],"uv_size":[0.5,0.5]},"up":{"uv":[0,16],"uv_size":[0.75,0.5]}}},{"origin":[-0.378,6.9477,-0.0126],"size":[0.756,0.081,0.27],"pivot":[0,6.9156,0.1326],"rotation":[-5,0,0],"uv":{"east":{"uv":[32,7],"uv_size":[0.25,0.125]},"west":{"uv":[8,32],"uv_size":[0.25,0.125]},"up":{"uv":[21,5],"uv_size":[0.75,0.25]}}},{"origin":[-0.378,6.8689,0.4731],"size":[0.756,0.162,0.1461],"pivot":[0.378,6.9142,0.801],"rotation":[-12.2812,0,0],"uv":{"east":{"uv":[40,20],"uv_size":[0.125,0.125]},"west":{"uv":[21,40],"uv_size":[0.125,0.125]},"up":{"uv":[17,24],"uv_size":[0.75,0.125]}}},{"origin":[-0.378,6.8905,0.3657],"size":[0.756,0.216,0.378],"pivot":[0.378,6.9714,0.7437],"rotation":[45,0,0],"uv":{"east":{"uv":[24,17],"uv_size":[0.375,0.25]},"south":{"uv":[21,6],"uv_size":[0.75,0.25]},"west":{"uv":[18,24],"uv_size":[0.375,0.25]}}},{"origin":[-0.378,6.9469,-0.4185],"size":[0.756,0.297,0.189],"pivot":[0.027,7.2439,-0.4185],"rotation":[-62.5,0,0],"uv":{"north":{"uv":[21,7],"uv_size":[0.75,0.25]},"east":{"uv":[26,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,26],"uv_size":[0.25,0.25]}}},{"origin":[-0.378,7.2108,-0.5867],"size":[0.756,0.1714,0.054],"pivot":[0.378,7.2108,-0.5867],"rotation":[-78.8634,0,0],"uv":{"north":{"uv":[24,18],"uv_size":[0.75,0.125]},"east":{"uv":[40,21],"uv_size":[0.125,0.125]},"west":{"uv":[22,40],"uv_size":[0.125,0.125]},"down":{"uv":[19,24.125],"uv_size":[0.75,-0.125]}}},{"origin":[-0.378,7.0535,-0.6519],"size":[0.756,0.162,0.054],"pivot":[0,7.1345,-0.6249],"rotation":[-45,0,0],"uv":{"north":{"uv":[24,19],"uv_size":[0.75,0.125]},"east":{"uv":[40,22],"uv_size":[0.125,0.125]},"west":{"uv":[23,40],"uv_size":[0.125,0.125]},"up":{"uv":[20,24],"uv_size":[0.75,0.125]}}},{"origin":[-0.216,2.8502,-0.3842],"size":[0.432,0.567,0.351],"pivot":[0,3.8493,-0.7048],"rotation":[25,0,0],"uv":{"south":{"uv":[19,19],"uv_size":[0.375,0.625]}}},{"origin":[-0.3487,3.9167,-0.1539],"size":[0.6974,0.162,0.135],"pivot":[0.3487,4.0787,-0.0189],"rotation":[-7.5,0,0],"uv":{"east":{"uv":[40,23],"uv_size":[0.125,0.125]},"west":{"uv":[24,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.3487,4.0578,-0.152],"size":[0.6974,0.189,0.135],"pivot":[0.3487,4.0848,-0.0169],"rotation":[-17.5,0,0],"uv":{"east":{"uv":[32,8],"uv_size":[0.125,0.25]},"west":{"uv":[9,32],"uv_size":[0.125,0.25]}}},{"origin":[-0.3487,4.22,-0.0996],"size":[0.6974,0.243,0.135],"pivot":[0.3487,4.247,0.0354],"rotation":[-25.0247,0,0],"uv":{"east":{"uv":[32,9],"uv_size":[0.125,0.25]},"west":{"uv":[10,32],"uv_size":[0.125,0.25]}}},{"origin":[-0.3463,4.4833,0.0006],"size":[0.6974,0.054,0.135],"uv":{"east":{"uv":[40,24],"uv_size":[0.125,0.125]},"west":{"uv":[25,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.3487,4.5172,-0.0007],"size":[0.6974,0.351,0.135],"pivot":[0.3487,4.5172,0.1343],"rotation":[12.5,0,0],"uv":{"east":{"uv":[20,28],"uv_size":[0.125,0.375]},"west":{"uv":[28,20],"uv_size":[0.125,0.375]}}},{"origin":[-0.3484,4.43,-0.0083],"size":[0.6971,0.0668,0.1321],"pivot":[0.3487,4.4428,0.1267],"rotation":[-10.2535,0,0],"uv":{"east":{"uv":[40,25],"uv_size":[0.125,0.125]},"west":{"uv":[26,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.4649,3.2202,-0.2433],"size":[0.9291,0.165,0.4243],"pivot":[0.3292,3.3012,-0.0273],"rotation":[-65,0,0],"uv":{"east":{"uv":[21,28],"uv_size":[0.375,0.125]},"west":{"uv":[28,21],"uv_size":[0.375,0.125]}}},{"origin":[-0.4649,2.9282,-0.2689],"size":[0.9291,0.1568,0.4255],"pivot":[0.3292,3.0092,-0.0529],"rotation":[-125,0,0],"uv":{"east":{"uv":[22,28],"uv_size":[0.375,0.125]},"west":{"uv":[28,22],"uv_size":[0.375,0.125]}}},{"origin":[-0.216,3.1506,0.176],"size":[0.432,0.054,0.162],"pivot":[0,3.1776,0.257],"rotation":[17.5,0,0],"uv":{"south":{"uv":[23,28],"uv_size":[0.375,0.125]}}},{"origin":[-0.216,3.5812,-0.4677],"size":[0.432,0.054,0.027],"pivot":[0,3.0007,-0.2922],"rotation":[-90,0,0],"uv":{"up":{"uv":[28,23],"uv_size":[0.375,0.125]}}},{"origin":[-0.216,3.3985,0.6346],"size":[0.432,0.081,0.054],"pivot":[0,3.412,0.3781],"rotation":[-112.5,0,0],"uv":{"east":{"uv":[40,26],"uv_size":[0.125,0.125]},"west":{"uv":[27,40],"uv_size":[0.125,0.125]},"up":{"uv":[24,28],"uv_size":[0.375,0.125]}}},{"origin":[-0.216,2.8833,0.3217],"size":[0.432,0.216,0.243],"pivot":[0,3.0993,0.3217],"rotation":[-137.5,0,0],"uv":{"east":{"uv":[26,15],"uv_size":[0.25,0.25]},"west":{"uv":[16,26],"uv_size":[0.25,0.25]},"up":{"uv":[24,20],"uv_size":[0.375,0.25]}}},{"origin":[-0.216,2.905,0.254],"size":[0.432,0.216,0.189],"pivot":[0,3.067,0.1865],"rotation":[-127.5,0,0],"uv":{"east":{"uv":[26,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,26],"uv_size":[0.25,0.25]},"up":{"uv":[21,24],"uv_size":[0.375,0.25]}}},{"origin":[-0.216,2.8207,0.0325],"size":[0.432,0.135,0.27],"pivot":[0,2.9017,0.046],"rotation":[-115,0,0],"uv":{"east":{"uv":[32,10],"uv_size":[0.25,0.125]},"west":{"uv":[11,32],"uv_size":[0.25,0.125]},"up":{"uv":[24,21],"uv_size":[0.375,0.25]}}},{"origin":[-0.378,2.4534,-0.0925],"size":[0.756,0.999,0.108],"pivot":[0.0067,2.8314,-0.727],"rotation":[-10,0,0],"uv":{"south":{"uv":[11,1],"uv_size":[0.75,1]}}},{"origin":[0.1392,2.0371,-1.5195],"size":[0.216,0.621,0.837],"pivot":[0,2.3476,-1.101],"rotation":[-15,0,0],"uv":{"north":{"uv":[8,22],"uv_size":[0.25,0.625]},"east":{"uv":[4,13],"uv_size":[0.875,0.625]},"down":{"uv":[2,20.875],"uv_size":[0.25,-0.875]}}},{"origin":[-0.3552,2.0371,-1.5195],"size":[0.216,0.621,0.837],"pivot":[0,2.3476,-1.101],"rotation":[-15,0,0],"uv":{"north":{"uv":[22,8],"uv_size":[0.25,0.625]},"west":{"uv":[13,10],"uv_size":[0.875,0.625]},"down":{"uv":[20,2.875],"uv_size":[0.25,-0.875]}}},{"origin":[-0.378,1.6704,-0.943],"size":[0.756,1.053,0.891],"uv":{"south":{"uv":[2,11],"uv_size":[0.75,1]}}},{"origin":[-0.2683,1.2384,-0.673],"size":[0.54,0.108,0.567],"pivot":[0.0017,2.0349,-0.4975],"rotation":[12.5,0,0],"uv":{"east":{"uv":[25,19],"uv_size":[0.625,0.125]},"south":{"uv":[26,17],"uv_size":[0.5,0.125]},"west":{"uv":[20,25],"uv_size":[0.625,0.125]},"down":{"uv":[12,16.625],"uv_size":[0.5,-0.625]}}},{"origin":[-0.378,1.3406,-0.6701],"size":[0.756,0.54,0.567],"pivot":[0,2.0291,-0.4946],"rotation":[12.5,0,0],"uv":{"east":{"uv":[9,17],"uv_size":[0.625,0.5]},"south":{"uv":[1,16],"uv_size":[0.75,0.5]},"west":{"uv":[17,11],"uv_size":[0.625,0.5]},"down":{"uv":[2,14.625],"uv_size":[0.75,-0.625]}}}]},{"name":"Pommel","parent":"handle","pivot":[0.027,6.5462,-0.9281],"cubes":[{"origin":[-0.108,7.5452,0.0169],"size":[0.216,0.162,0.513],"pivot":[0.027,6.5462,-0.9281],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[7,26],"uv_size":[0.5,0.125]},"west":{"uv":[26,7],"uv_size":[0.5,0.125]}}},{"origin":[-0.108,7.7072,0.1519],"size":[0.216,0.1384,0.297],"pivot":[0.027,6.5462,-0.9281],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[9,30],"uv_size":[0.25,0.125]},"west":{"uv":[30,9],"uv_size":[0.25,0.125]},"up":{"uv":[8,26],"uv_size":[0.25,0.25]}}},{"origin":[-0.108,7.0867,0.8131],"size":[0.216,0.135,0.243],"pivot":[0.108,7.2166,0.8401],"rotation":[-67.5,0,0],"uv":{"east":{"uv":[10,30],"uv_size":[0.25,0.125]},"south":{"uv":[30,10],"uv_size":[0.25,0.125]},"west":{"uv":[11,30],"uv_size":[0.25,0.125]},"up":{"uv":[26,8],"uv_size":[0.25,0.25]}}},{"origin":[-0.108,6.9821,0.8854],"size":[0.216,0.054,0.027],"pivot":[0,7.0091,0.8989],"rotation":[-97.5,0,0],"uv":{"east":{"uv":[10,38],"uv_size":[0.125,0.125]},"south":{"uv":[30,11],"uv_size":[0.25,0.125]},"west":{"uv":[38,10],"uv_size":[0.125,0.125]},"up":{"uv":[12,30],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,6.9096,0.8466],"size":[0.216,0.054,0.027],"pivot":[0,7.0091,0.8989],"rotation":[-37.5,0,0],"uv":{"east":{"uv":[11,38],"uv_size":[0.125,0.125]},"south":{"uv":[30,12],"uv_size":[0.25,0.125]},"west":{"uv":[38,11],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,6.8158,0.7772],"size":[0.216,0.108,0.081],"pivot":[0,6.9052,0.8043],"rotation":[-43.5,0,0],"uv":{"east":{"uv":[12,38],"uv_size":[0.125,0.125]},"south":{"uv":[13,30],"uv_size":[0.25,0.125]},"west":{"uv":[38,12],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,6.9196,0.7809],"size":[0.216,0.027,0.081],"pivot":[0,6.9331,0.8214],"rotation":[-43.5,0,0],"uv":{"east":{"uv":[13,38],"uv_size":[0.125,0.125]},"west":{"uv":[38,13],"uv_size":[0.125,0.125]},"up":{"uv":[30,13],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,6.888,0.8601],"size":[0.216,0.027,0.0338],"pivot":[0.108,6.915,0.8601],"rotation":[-96.6301,0,0],"uv":{"east":{"uv":[14,38],"uv_size":[0.125,0.125]},"west":{"uv":[38,14],"uv_size":[0.125,0.125]},"up":{"uv":[14,30],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,6.9318,0.7867],"size":[0.216,0.027,0.054],"pivot":[0,6.9368,0.8188],"rotation":[-77.5,0,0],"uv":{"east":{"uv":[15,38],"uv_size":[0.125,0.125]},"west":{"uv":[38,15],"uv_size":[0.125,0.125]},"up":{"uv":[30,14],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.0815,0.8343],"size":[0.216,0.162,0.027],"pivot":[0.108,7.2435,0.8344],"rotation":[-105,0,0],"uv":{"north":{"uv":[15,30],"uv_size":[0.25,0.125]},"east":{"uv":[16,38],"uv_size":[0.125,0.125]},"west":{"uv":[38,16],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,6.9498,0.7246],"size":[0.216,0.216,0.027],"pivot":[0.108,7.2452,0.7264],"rotation":[-126.5,0,0],"uv":{"north":{"uv":[9,26],"uv_size":[0.25,0.25]},"east":{"uv":[30,15],"uv_size":[0.125,0.25]},"west":{"uv":[16,30],"uv_size":[0.125,0.25]}}},{"origin":[-0.108,7.2603,0.4901],"size":[0.216,0.189,0.081],"pivot":[0.108,7.4223,0.4901],"rotation":[-136.5,0,0],"uv":{"north":{"uv":[26,9],"uv_size":[0.25,0.25]},"east":{"uv":[30,16],"uv_size":[0.125,0.25]},"west":{"uv":[17,30],"uv_size":[0.125,0.25]}}},{"origin":[-0.108,7.4123,0.3972],"size":[0.216,0.135,0.108],"pivot":[0.108,7.5203,0.3972],"rotation":[-159,0,0],"uv":{"north":{"uv":[30,17],"uv_size":[0.25,0.125]},"east":{"uv":[17,38],"uv_size":[0.125,0.125]},"west":{"uv":[38,17],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.5671,-0.1275],"size":[0.216,0.054,0.486],"pivot":[0.108,7.6211,0.3585],"rotation":[-17.5,0,0],"uv":{"east":{"uv":[10,26],"uv_size":[0.5,0.125]},"west":{"uv":[26,10],"uv_size":[0.5,0.125]},"up":{"uv":[13,23],"uv_size":[0.25,0.5]}}},{"origin":[-0.054,7.6719,-0.033],"size":[0.108,0.081,0.135],"pivot":[0.108,7.7529,0.102],"rotation":[-30,0,0],"uv":{"east":{"uv":[18,38],"uv_size":[0.125,0.125]},"west":{"uv":[38,18],"uv_size":[0.125,0.125]},"up":{"uv":[19,38],"uv_size":[0.125,0.125]}}},{"origin":[-0.054,7.8171,-0.1709],"size":[0.108,0.027,0.189],"pivot":[0,7.8306,-0.0358],"rotation":[-60,0,0],"uv":{"east":{"uv":[18,30],"uv_size":[0.25,0.125]},"west":{"uv":[30,18],"uv_size":[0.25,0.125]},"up":{"uv":[19,30],"uv_size":[0.125,0.25]}}},{"origin":[-0.054,7.9273,-0.1727],"size":[0.108,0.027,0.108],"pivot":[0.108,7.9543,-0.0917],"rotation":[-65,0,0],"uv":{"east":{"uv":[38,19],"uv_size":[0.125,0.125]},"west":{"uv":[20,38],"uv_size":[0.125,0.125]},"up":{"uv":[38,20],"uv_size":[0.125,0.125]}}},{"origin":[-0.054,8.0252,-0.2233],"size":[0.108,0.027,0.135],"pivot":[0.108,7.9543,-0.0917],"rotation":[40,0,0],"uv":{"east":{"uv":[21,38],"uv_size":[0.125,0.125]},"west":{"uv":[38,21],"uv_size":[0.125,0.125]},"up":{"uv":[22,38],"uv_size":[0.125,0.125]}}},{"origin":[-0.054,8.0044,-0.152],"size":[0.108,0.027,0.0264],"pivot":[0.108,8.0314,-0.152],"rotation":[-8.1455,0,0],"uv":{"east":{"uv":[38,22],"uv_size":[0.125,0.125]},"west":{"uv":[23,38],"uv_size":[0.125,0.125]},"up":{"uv":[38,23],"uv_size":[0.125,0.125]}}},{"origin":[-0.054,7.9055,-0.4315],"size":[0.108,0.027,0.216],"pivot":[0,7.9224,-0.283],"rotation":[25,0,0],"uv":{"east":{"uv":[30,19],"uv_size":[0.25,0.125]},"west":{"uv":[20,30],"uv_size":[0.25,0.125]},"up":{"uv":[30,20],"uv_size":[0.125,0.25]}}},{"origin":[-0.054,7.6569,0.0751],"size":[0.108,0.054,0.135],"pivot":[0,7.6974,0.1426],"rotation":[-42.5,0,0],"uv":{"east":{"uv":[24,38],"uv_size":[0.125,0.125]},"west":{"uv":[38,24],"uv_size":[0.125,0.125]},"up":{"uv":[25,38],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.1402,-0.9011],"size":[0.216,0.405,1.458],"pivot":[0.027,6.5462,-0.9281],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[11,12],"uv_size":[1.5,0.375]},"south":{"uv":[15,24],"uv_size":[0.25,0.375]},"west":{"uv":[0,13],"uv_size":[1.5,0.375]}}},{"origin":[-0.108,6.4322,0.6987],"size":[0.216,0.216,0.054],"pivot":[0,6.6162,0.7375],"rotation":[-30,0,0],"uv":{"east":{"uv":[21,30],"uv_size":[0.125,0.25]},"south":{"uv":[11,26],"uv_size":[0.25,0.25]},"west":{"uv":[30,21],"uv_size":[0.125,0.25]}}},{"origin":[-0.108,6.6343,0.6967],"size":[0.216,0.108,0.054],"pivot":[0,6.8183,0.7355],"rotation":[5,0,0],"uv":{"east":{"uv":[38,25],"uv_size":[0.125,0.125]},"south":{"uv":[22,30],"uv_size":[0.25,0.125]},"west":{"uv":[26,38],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.6714,-0.2303],"size":[0.216,0.054,0.432],"pivot":[0,7.7102,-0.0076],"rotation":[-26.5,0,0],"uv":{"east":{"uv":[16,28],"uv_size":[0.375,0.125]},"west":{"uv":[28,16],"uv_size":[0.375,0.125]},"up":{"uv":[24,15],"uv_size":[0.25,0.375]}}},{"origin":[-0.108,7.6246,0.0898],"size":[0.216,0.054,0.216],"pivot":[0.108,7.6786,0.0898],"rotation":[-39.5,0,0],"uv":{"east":{"uv":[30,22],"uv_size":[0.25,0.125]},"west":{"uv":[23,30],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.5045,0.1353],"size":[0.216,0.081,0.2096],"pivot":[0.108,7.5855,0.2973],"rotation":[-17,0,0],"uv":{"east":{"uv":[30,23],"uv_size":[0.25,0.125]},"west":{"uv":[24,30],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.5452,-0.4151],"size":[0.216,0.378,0.108],"pivot":[0.027,6.5462,-0.9281],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[17,28],"uv_size":[0.125,0.375]},"west":{"uv":[28,17],"uv_size":[0.125,0.375]}}},{"origin":[-0.108,7.5452,-0.0641],"size":[0.216,0.324,0.081],"pivot":[0.027,6.5462,-0.9281],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[18,28],"uv_size":[0.125,0.375]},"west":{"uv":[28,18],"uv_size":[0.125,0.375]}}},{"origin":[-0.108,7.5452,-0.3071],"size":[0.216,0.081,0.243],"pivot":[0.027,6.5462,-0.9281],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[30,24],"uv_size":[0.25,0.125]},"west":{"uv":[25,30],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.5452,-0.9011],"size":[0.216,0.243,0.108],"pivot":[0.027,6.5462,-0.9281],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[30,25],"uv_size":[0.125,0.25]},"west":{"uv":[26,30],"uv_size":[0.125,0.25]}}},{"origin":[-0.054,7.7677,-0.3493],"size":[0.108,0.135,0.27],"pivot":[0,7.8622,-0.2953],"rotation":[32,0,0],"uv":{"east":{"uv":[30,26],"uv_size":[0.25,0.125]},"west":{"uv":[27,30],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.8276,-0.5492],"size":[0.216,0.0371,0.027],"pivot":[0.108,7.8276,-0.5492],"rotation":[-21.335,0,0],"uv":{"north":{"uv":[30,27],"uv_size":[0.25,0.125]},"east":{"uv":[38,26],"uv_size":[0.125,0.125]},"west":{"uv":[27,38],"uv_size":[0.125,0.125]}}},{"origin":[-0.054,7.6327,-0.2413],"size":[0.108,0.135,0.162],"pivot":[0,7.8622,-0.2953],"rotation":[32,0,0],"uv":{"east":{"uv":[38,27],"uv_size":[0.125,0.125]},"west":{"uv":[28,38],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.667,-0.3837],"size":[0.216,0.135,0.054],"pivot":[0.108,7.694,-0.4073],"rotation":[-52.5,0,0],"uv":{"east":{"uv":[40,12],"uv_size":[0.125,0.125]},"west":{"uv":[13,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.7204,-0.4252],"size":[0.216,0.135,0.054],"pivot":[0,7.8554,-0.3982],"rotation":[-81.5,0,0],"uv":{"north":{"uv":[1,32],"uv_size":[0.25,0.125]},"east":{"uv":[40,13],"uv_size":[0.125,0.125]},"west":{"uv":[14,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.8821,-0.4022],"size":[0.216,0.2105,0.054],"pivot":[0.108,7.8821,-0.4022],"rotation":[-106.2609,0,0],"uv":{"north":{"uv":[26,12],"uv_size":[0.25,0.25]},"east":{"uv":[32,1],"uv_size":[0.125,0.25]},"west":{"uv":[2,32],"uv_size":[0.125,0.25]}}},{"origin":[-0.108,7.3292,-0.9551],"size":[0.216,0.459,0.054],"pivot":[0.027,6.5462,-0.9281],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[23,13],"uv_size":[0.25,0.5]},"east":{"uv":[13,26],"uv_size":[0.125,0.5]},"west":{"uv":[26,13],"uv_size":[0.125,0.5]}}},{"origin":[-0.108,7.6504,-0.5124],"size":[0.216,0.189,0.054],"pivot":[0,7.6655,-0.477],"rotation":[12.5,0,0],"uv":{"north":{"uv":[14,26],"uv_size":[0.25,0.25]},"east":{"uv":[32,2],"uv_size":[0.125,0.25]},"west":{"uv":[3,32],"uv_size":[0.125,0.25]}}},{"origin":[-0.108,7.2106,-0.6537],"size":[0.216,0.108,0.054],"pivot":[0,7.2561,-0.6267],"rotation":[17.5,0,0],"uv":{"north":{"uv":[32,3],"uv_size":[0.25,0.125]},"east":{"uv":[40,14],"uv_size":[0.125,0.125]},"west":{"uv":[15,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.4313,-0.612],"size":[0.216,0.162,0.054],"pivot":[0,7.4634,-0.5749],"rotation":[-36.5,0,0],"uv":{"north":{"uv":[4,32],"uv_size":[0.25,0.125]},"east":{"uv":[40,15],"uv_size":[0.125,0.125]},"west":{"uv":[16,40],"uv_size":[0.125,0.125]},"down":{"uv":[32,4.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.5769,-0.5199],"size":[0.216,0.135,0.027],"pivot":[0,7.6647,-0.5064],"rotation":[-6.5,0,0],"uv":{"north":{"uv":[5,32],"uv_size":[0.25,0.125]},"east":{"uv":[40,16],"uv_size":[0.125,0.125]},"west":{"uv":[17,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,6.7622,-0.9551],"size":[0.216,0.405,0.027],"pivot":[0.027,6.5462,-0.9281],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[16,24],"uv_size":[0.25,0.375]},"east":{"uv":[19,28],"uv_size":[0.125,0.375]},"west":{"uv":[28,19],"uv_size":[0.125,0.375]}}},{"origin":[-0.108,7.1303,-0.7154],"size":[0.216,0.108,0.054],"pivot":[-0.108,7.1303,-0.7154],"rotation":[-57.5,0,0],"uv":{"north":{"uv":[32,5],"uv_size":[0.25,0.125]},"east":{"uv":[40,17],"uv_size":[0.125,0.125]},"west":{"uv":[18,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.027,-0.7301],"size":[0.216,0.081,0.027],"pivot":[0,7.1333,-0.6728],"rotation":[180,0,0],"uv":{"east":{"uv":[40,18],"uv_size":[0.125,0.125]},"south":{"uv":[6,32],"uv_size":[0.25,0.125]},"west":{"uv":[19,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.301,-0.6517],"size":[0.216,0.054,0.027],"pivot":[0,7.3533,-0.645],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[32,6],"uv_size":[0.25,0.125]},"east":{"uv":[40,19],"uv_size":[0.125,0.125]},"west":{"uv":[20,40],"uv_size":[0.125,0.125]},"up":{"uv":[7,32],"uv_size":[0.25,0.125]}}}]},{"name":"group","parent":"Pommel","pivot":[0.0724,7.3188,0.2746],"cubes":[{"origin":[-0.108,7.2134,0.191],"size":[0.216,0.0765,0.1045],"pivot":[0.0724,7.3188,0.2746],"rotation":[22.5,0,0],"uv":{"east":{"uv":[38,28],"uv_size":[0.125,0.125]},"west":{"uv":[29,38],"uv_size":[0.125,0.125]},"up":{"uv":[28,30],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.3248,0.3035],"size":[0.216,0.0505,0.0225],"pivot":[0.0724,7.3188,0.2746],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[30,28],"uv_size":[0.25,0.125]},"east":{"uv":[38,29],"uv_size":[0.125,0.125]},"west":{"uv":[30,38],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.2466,0.2493],"size":[0.216,0.0495,0.0505],"pivot":[0.0724,7.3188,0.2746],"rotation":[45,0,0],"uv":{"east":{"uv":[38,30],"uv_size":[0.125,0.125]},"west":{"uv":[31,38],"uv_size":[0.125,0.125]},"up":{"uv":[29,30],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.2226,0.1914],"size":[0.216,0.0495,0.0505],"uv":{"east":{"uv":[38,31],"uv_size":[0.125,0.125]},"west":{"uv":[32,38],"uv_size":[0.125,0.125]},"up":{"uv":[30,29],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.2674,0.1649],"size":[0.216,0.0225,0.0505],"pivot":[0.0724,7.3188,0.1588],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[38,32],"uv_size":[0.125,0.125]},"west":{"uv":[33,38],"uv_size":[0.125,0.125]},"up":{"uv":[30,30],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.2935,0.0867],"size":[0.216,0.0505,0.0495],"pivot":[0.0724,7.3188,0.1588],"rotation":[45,0,0],"uv":{"east":{"uv":[38,33],"uv_size":[0.125,0.125]},"south":{"uv":[0,31],"uv_size":[0.25,0.125]},"west":{"uv":[34,38],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.2978,0.0534],"size":[0.216,0.1045,0.0765],"pivot":[0.0724,7.3188,0.1588],"rotation":[22.5,0,0],"uv":{"east":{"uv":[38,34],"uv_size":[0.125,0.125]},"south":{"uv":[31,0],"uv_size":[0.25,0.125]},"west":{"uv":[35,38],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.3514,0.0627],"size":[0.216,0.0505,0.0495],"uv":{"east":{"uv":[38,35],"uv_size":[0.125,0.125]},"south":{"uv":[1,31],"uv_size":[0.25,0.125]},"west":{"uv":[36,38],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.3779,0.1074],"size":[0.216,0.0505,0.0225],"pivot":[0.0724,7.4345,0.1588],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[38,36],"uv_size":[0.125,0.125]},"south":{"uv":[31,1],"uv_size":[0.25,0.125]},"west":{"uv":[37,38],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.4572,0.1335],"size":[0.216,0.0495,0.0505],"pivot":[0.0724,7.4345,0.1588],"rotation":[45,0,0],"uv":{"east":{"uv":[38,37],"uv_size":[0.125,0.125]},"west":{"uv":[38,38],"uv_size":[0.125,0.125]},"down":{"uv":[2,31.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.4634,0.1379],"size":[0.216,0.1035,0.1045],"pivot":[0.0724,7.4345,0.1588],"rotation":[22.5,0,0],"uv":{"east":{"uv":[0,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,0],"uv_size":[0.125,0.125]},"down":{"uv":[31,2.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.4812,0.1644],"size":[0.216,0.0495,0.0775],"uv":{"east":{"uv":[1,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,1],"uv_size":[0.125,0.125]},"down":{"uv":[3,31.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.4634,0.191],"size":[0.216,0.0495,0.1045],"pivot":[0.0724,7.4345,0.2746],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[2,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,2],"uv_size":[0.125,0.125]},"down":{"uv":[31,3.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.4093,0.2973],"size":[0.216,0.0505,0.0495],"pivot":[0.0724,7.4345,0.2746],"rotation":[45,0,0],"uv":{"north":{"uv":[4,31],"uv_size":[0.25,0.125]},"east":{"uv":[3,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,3],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.3779,0.3035],"size":[0.216,0.0775,0.0495],"pivot":[0.0724,7.4345,0.2746],"rotation":[22.5,0,0],"uv":{"north":{"uv":[31,4],"uv_size":[0.25,0.125]},"east":{"uv":[4,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,4],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.3514,0.3212],"size":[0.216,0.1045,0.0765],"uv":{"north":{"uv":[5,31],"uv_size":[0.25,0.125]},"east":{"uv":[5,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,5],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.3684,-0.1197],"size":[0.216,0.0356,0.0802],"pivot":[0.0724,7.44,-0.0796],"rotation":[45,0,0],"uv":{"east":{"uv":[6,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,6],"uv_size":[0.125,0.125]},"up":{"uv":[31,5],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.2775,-0.2234],"size":[0.216,0.1166,0.1882],"pivot":[0.0724,7.44,-0.0796],"rotation":[22.5,0,0],"uv":{"east":{"uv":[6,31],"uv_size":[0.25,0.125]},"west":{"uv":[31,6],"uv_size":[0.25,0.125]},"up":{"uv":[26,11],"uv_size":[0.25,0.25]}}},{"origin":[-0.108,7.3303,-0.2115],"size":[0.216,0.0356,0.0802],"uv":{"east":{"uv":[7,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,7],"uv_size":[0.125,0.125]},"up":{"uv":[7,31],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.3585,-0.2807],"size":[0.216,0.0356,0.1342],"pivot":[0.0724,7.44,-0.2633],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[8,39],"uv_size":[0.125,0.125]},"south":{"uv":[31,7],"uv_size":[0.25,0.125]},"west":{"uv":[39,8],"uv_size":[0.125,0.125]},"up":{"uv":[8,31],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.3999,-0.335],"size":[0.216,0.0802,0.0356],"pivot":[0.0724,7.44,-0.2633],"rotation":[45,0,0],"uv":{"east":{"uv":[9,39],"uv_size":[0.125,0.125]},"south":{"uv":[31,8],"uv_size":[0.25,0.125]},"west":{"uv":[39,9],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.3956,-0.4259],"size":[0.216,0.1882,0.1166],"pivot":[0.0724,7.44,-0.2633],"rotation":[22.5,0,0],"uv":{"east":{"uv":[9,31],"uv_size":[0.125,0.25]},"south":{"uv":[12,26],"uv_size":[0.25,0.25]},"west":{"uv":[31,9],"uv_size":[0.125,0.25]}}},{"origin":[-0.108,7.4918,-0.373],"size":[0.216,0.0802,0.0356],"uv":{"east":{"uv":[10,39],"uv_size":[0.125,0.125]},"south":{"uv":[10,31],"uv_size":[0.25,0.125]},"west":{"uv":[39,10],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.5339,-0.3448],"size":[0.216,0.0802,0.0356],"pivot":[0.0724,7.6238,-0.2633],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[11,39],"uv_size":[0.125,0.125]},"south":{"uv":[31,10],"uv_size":[0.25,0.125]},"west":{"uv":[39,11],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.6598,-0.3034],"size":[0.216,0.0356,0.0802],"pivot":[0.0724,7.6238,-0.2633],"rotation":[45,0,0],"uv":{"east":{"uv":[12,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,12],"uv_size":[0.125,0.125]},"down":{"uv":[11,31.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.6697,-0.2537],"size":[0.216,0.0896,0.1072],"pivot":[0.0724,7.6238,-0.2633],"rotation":[22.5,0,0],"uv":{"east":{"uv":[13,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,13],"uv_size":[0.125,0.125]},"down":{"uv":[31,11.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.6978,-0.2115],"size":[0.216,0.0626,0.0802],"uv":{"east":{"uv":[14,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,14],"uv_size":[0.125,0.125]},"down":{"uv":[12,31.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.6697,-0.1694],"size":[0.216,0.0356,0.0802],"pivot":[0.0724,7.6238,-0.0796],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[15,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,15],"uv_size":[0.125,0.125]},"down":{"uv":[31,12.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.5567,-0.0436],"size":[0.216,0.1072,0.0626],"pivot":[0.0724,7.6238,-0.0796],"rotation":[45,0,0],"uv":{"north":{"uv":[13,31],"uv_size":[0.25,0.125]},"east":{"uv":[16,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,16],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.5069,-0.0337],"size":[0.216,0.1072,0.1166],"pivot":[0.0724,7.6238,-0.0796],"rotation":[22.5,0,0],"uv":{"north":{"uv":[31,13],"uv_size":[0.25,0.125]},"east":{"uv":[17,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,17],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.4918,-0.0055],"size":[0.216,0.0802,0.0626],"uv":{"north":{"uv":[14,31],"uv_size":[0.25,0.125]},"east":{"uv":[18,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,18],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.4497,-0.0337],"size":[0.216,0.0802,0.0356],"pivot":[0.0724,7.44,-0.0796],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[31,14],"uv_size":[0.25,0.125]},"east":{"uv":[19,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,19],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.6774,-0.4229],"size":[0.216,0.0398,0.0558],"pivot":[0.0724,7.7301,-0.3815],"rotation":[45,0,0],"uv":{"east":{"uv":[20,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,20],"uv_size":[0.125,0.125]},"up":{"uv":[15,31],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.6738,-0.4137],"size":[0.216,0.0398,0.0288],"pivot":[0.0724,7.7301,-0.3815],"rotation":[22.5,0,0],"uv":{"east":{"uv":[21,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,21],"uv_size":[0.125,0.125]},"up":{"uv":[31,15],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.6907,-0.4288],"size":[0.216,0.0128,0.0288],"uv":{"east":{"uv":[22,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,22],"uv_size":[0.125,0.125]},"up":{"uv":[16,31],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.6738,-0.471],"size":[0.216,0.0398,0.1098],"pivot":[0.0724,7.7301,-0.4474],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[23,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,23],"uv_size":[0.125,0.125]},"up":{"uv":[31,16],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.7157,-0.4732],"size":[0.216,0.0288,0.0128],"pivot":[0.0724,7.7301,-0.4474],"rotation":[45,0,0],"uv":{"east":{"uv":[24,39],"uv_size":[0.125,0.125]},"south":{"uv":[17,31],"uv_size":[0.25,0.125]},"west":{"uv":[39,24],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.7336,-0.4767],"size":[0.216,0.0288,0.0128],"pivot":[0.0724,7.7301,-0.4474],"rotation":[22.5,0,0],"uv":{"east":{"uv":[25,39],"uv_size":[0.125,0.125]},"south":{"uv":[31,17],"uv_size":[0.25,0.125]},"west":{"uv":[39,25],"uv_size":[0.125,0.125]},"down":{"uv":[18,31.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.7487,-0.4868],"size":[0.216,0.0288,0.0128],"uv":{"east":{"uv":[26,39],"uv_size":[0.125,0.125]},"south":{"uv":[31,18],"uv_size":[0.25,0.125]},"west":{"uv":[39,26],"uv_size":[0.125,0.125]},"down":{"uv":[19,31.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.7638,-0.5307],"size":[0.216,0.0558,0.0668],"pivot":[0.0724,7.7961,-0.4474],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[27,39],"uv_size":[0.125,0.125]},"south":{"uv":[31,19],"uv_size":[0.25,0.125]},"west":{"uv":[39,27],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.809,-0.4618],"size":[0.216,0.0128,0.0288],"pivot":[0.0724,7.7961,-0.4474],"rotation":[45,0,0],"uv":{"east":{"uv":[28,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,28],"uv_size":[0.125,0.125]},"down":{"uv":[20,31.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.8125,-0.444],"size":[0.216,0.0128,0.0288],"pivot":[0.0724,7.7961,-0.4474],"rotation":[22.5,0,0],"uv":{"east":{"uv":[29,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,29],"uv_size":[0.125,0.125]},"down":{"uv":[31,20.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.8227,-0.4288],"size":[0.216,0.0128,0.0288],"uv":{"east":{"uv":[30,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,30],"uv_size":[0.125,0.125]},"down":{"uv":[21,31.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.8125,-0.4137],"size":[0.216,0.0128,0.0288],"pivot":[0.0724,7.7961,-0.3815],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[31,39],"uv_size":[0.125,0.125]},"south":{"uv":[31,21],"uv_size":[0.25,0.125]},"west":{"uv":[39,31],"uv_size":[0.125,0.125]},"down":{"uv":[22,31.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.7547,-0.3685],"size":[0.216,0.0558,0.0398],"pivot":[0.0724,7.7961,-0.3815],"rotation":[45,0,0],"uv":{"north":{"uv":[31,22],"uv_size":[0.25,0.125]},"east":{"uv":[32,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,32],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.7638,-0.365],"size":[0.216,0.0288,0.0128],"pivot":[1.2064,7.7961,-0.3815],"rotation":[22.5,0,0],"uv":{"north":{"uv":[23,31],"uv_size":[0.25,0.125]},"east":{"uv":[33,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,33],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.6947,-0.3549],"size":[0.216,0.1098,0.1208],"uv":{"north":{"uv":[31,23],"uv_size":[0.25,0.125]},"east":{"uv":[34,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,34],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.7336,-0.365],"size":[0.216,0.0288,0.0128],"pivot":[0.0724,7.7301,-0.3815],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[24,31],"uv_size":[0.25,0.125]},"east":{"uv":[35,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,35],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.3654,0.4369],"size":[0.216,0.0398,0.0558],"uv":{"east":{"uv":[36,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,36],"uv_size":[0.125,0.125]},"down":{"uv":[31,24.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.3552,0.4217],"size":[0.216,0.0398,0.0558],"pivot":[0.0724,7.3388,0.4452],"rotation":[22.5,0,0],"uv":{"east":{"uv":[37,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,37],"uv_size":[0.125,0.125]},"down":{"uv":[25,31.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.3517,0.4309],"size":[0.216,0.0128,0.0288],"pivot":[0.0724,7.3388,0.4452],"rotation":[45,0,0],"uv":{"east":{"uv":[38,39],"uv_size":[0.125,0.125]},"west":{"uv":[39,38],"uv_size":[0.125,0.125]},"down":{"uv":[31,25.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.108,7.3065,0.416],"size":[0.216,0.0288,0.0128],"pivot":[0.0724,7.3388,0.4452],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[39,39],"uv_size":[0.125,0.125]},"south":{"uv":[26,31],"uv_size":[0.25,0.125]},"west":{"uv":[0,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.2644,0.3789],"size":[0.216,0.0558,0.0398],"uv":{"east":{"uv":[40,0],"uv_size":[0.125,0.125]},"south":{"uv":[31,26],"uv_size":[0.25,0.125]},"west":{"uv":[1,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.2492,0.362],"size":[0.216,0.0558,0.0668],"pivot":[0.0724,7.2728,0.4452],"rotation":[22.5,0,0],"uv":{"east":{"uv":[40,1],"uv_size":[0.125,0.125]},"south":{"uv":[27,31],"uv_size":[0.25,0.125]},"west":{"uv":[2,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.2584,0.4195],"size":[0.216,0.0288,0.0128],"pivot":[0.0724,7.2728,0.4452],"rotation":[45,0,0],"uv":{"east":{"uv":[40,2],"uv_size":[0.125,0.125]},"south":{"uv":[31,27],"uv_size":[0.25,0.125]},"west":{"uv":[3,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.2165,0.4217],"size":[0.216,0.0398,0.0828],"pivot":[0.0724,7.2728,0.4452],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[40,3],"uv_size":[0.125,0.125]},"west":{"uv":[4,40],"uv_size":[0.125,0.125]},"up":{"uv":[28,31],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.2334,0.4638],"size":[0.216,0.0128,0.0288],"uv":{"east":{"uv":[40,4],"uv_size":[0.125,0.125]},"west":{"uv":[5,40],"uv_size":[0.125,0.125]},"up":{"uv":[31,28],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.1895,0.452],"size":[0.216,0.0668,0.0558],"pivot":[0.0724,7.2728,0.5112],"rotation":[22.5,0,0],"uv":{"east":{"uv":[40,5],"uv_size":[0.125,0.125]},"west":{"uv":[6,40],"uv_size":[0.125,0.125]},"up":{"uv":[29,31],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.22,0.4698],"size":[0.216,0.0398,0.0558],"pivot":[0.0724,7.2728,0.5112],"rotation":[45,0,0],"uv":{"east":{"uv":[40,6],"uv_size":[0.125,0.125]},"west":{"uv":[7,40],"uv_size":[0.125,0.125]},"up":{"uv":[31,29],"uv_size":[0.25,0.125]}}},{"origin":[-0.108,7.2762,0.5277],"size":[0.216,0.0288,0.0128],"pivot":[0.0724,7.2728,0.5112],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[30,31],"uv_size":[0.25,0.125]},"east":{"uv":[40,7],"uv_size":[0.125,0.125]},"west":{"uv":[8,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.2914,0.5378],"size":[0.216,0.0288,0.0398],"uv":{"north":{"uv":[31,30],"uv_size":[0.25,0.125]},"east":{"uv":[40,8],"uv_size":[0.125,0.125]},"west":{"uv":[9,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.2795,0.5277],"size":[0.216,0.0558,0.0398],"pivot":[0.0724,7.3388,0.5112],"rotation":[22.5,0,0],"uv":{"north":{"uv":[31,31],"uv_size":[0.25,0.125]},"east":{"uv":[40,9],"uv_size":[0.125,0.125]},"west":{"uv":[10,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.2974,0.5242],"size":[0.216,0.0558,0.0398],"pivot":[0.0724,7.3388,0.5112],"rotation":[45,0,0],"uv":{"north":{"uv":[0,32],"uv_size":[0.25,0.125]},"east":{"uv":[40,10],"uv_size":[0.125,0.125]},"west":{"uv":[11,40],"uv_size":[0.125,0.125]}}},{"origin":[-0.108,7.3552,0.452],"size":[0.216,0.0398,0.0558],"pivot":[0.0724,7.3388,0.5112],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[40,11],"uv_size":[0.125,0.125]},"west":{"uv":[12,40],"uv_size":[0.125,0.125]},"down":{"uv":[32,0.125],"uv_size":[0.25,-0.125]}}}]},{"name":"group16","parent":"handle","pivot":[0.5653,2.5271,-1.1782],"cubes":[{"origin":[0.1603,2.5787,-1.4707],"size":[0.216,0.81,0.135],"pivot":[0.3763,2.5787,-1.4707],"rotation":[-10,0,0],"uv":{"north":{"uv":[21,8],"uv_size":[0.25,0.75]},"east":{"uv":[22,24],"uv_size":[0.125,0.75]},"down":{"uv":[32,11.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.3763,2.1024,-0.3007],"size":[0.189,1.269,0.3079],"pivot":[0.5653,2.3724,-0.3007],"rotation":[-12.5921,-37.201,7.6918],"uv":{"west":{"uv":[12,17],"uv_size":[0.25,1.25]}}},{"origin":[0.108,6.9142,0.6766],"size":[0.27,0.162,0.1243],"pivot":[0.378,6.9142,0.801],"rotation":[116.7608,0,0],"uv":{"east":{"uv":[40,27],"uv_size":[0.125,0.125]},"west":{"uv":[28,40],"uv_size":[0.125,0.125]},"down":{"uv":[12,32.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.108,6.8032,0.75],"size":[0.27,0.108,0.1069],"pivot":[0.378,6.8032,0.8569],"rotation":[90.1795,0,0],"uv":{"east":{"uv":[40,28],"uv_size":[0.125,0.125]},"west":{"uv":[29,40],"uv_size":[0.125,0.125]},"down":{"uv":[32,12.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.108,6.3346,0.5116],"size":[0.27,0.378,0.297],"pivot":[0.027,6.6316,0.8086],"rotation":[-36.9597,0,0],"uv":{"east":{"uv":[24,22],"uv_size":[0.25,0.375]},"south":{"uv":[23,24],"uv_size":[0.25,0.375]},"west":{"uv":[24,23],"uv_size":[0.25,0.375]}}},{"origin":[0.378,1.8324,-0.241],"size":[0.307,0.567,0.189],"pivot":[0.378,1.8324,-0.052],"rotation":[0,52.4192,0],"uv":{"south":{"uv":[9,22],"uv_size":[0.25,0.625]}}},{"origin":[0.2682,1.8324,-0.4843],"size":[0.297,0.567,0.189],"uv":{"west":{"uv":[22,9],"uv_size":[0.25,0.625]}}},{"origin":[0.378,3.3023,-0.1017],"size":[0.189,1.242,0.2489],"pivot":[0.567,3.3023,-0.1017],"rotation":[11.4364,-48.8301,-8.6585],"uv":{"west":{"uv":[14,17],"uv_size":[0.25,1.25]}}},{"origin":[0.216,4.5373,0.117],"size":[0.162,0.567,0.108],"pivot":[0.216,4.5373,0.225],"rotation":[15.1437,34.0544,8.6177],"uv":{"south":{"uv":[25,20],"uv_size":[0.125,0.625]}}},{"origin":[0.2249,4.4833,0.0386],"size":[0.162,0.054,0.135],"pivot":[0.3059,4.5103,0.2141],"rotation":[0,33.5,0],"uv":{"south":{"uv":[40,29],"uv_size":[0.125,0.125]}}},{"origin":[0.216,4.4035,0.022],"size":[0.1654,0.081,0.189],"pivot":[0.216,4.4035,0.211],"rotation":[-14.7659,33.4613,-11.6213],"uv":{"south":{"uv":[30,40],"uv_size":[0.125,0.125]}}},{"origin":[0.216,4.1833,-0.1347],"size":[0.162,0.243,0.243],"pivot":[0.216,4.1833,0.1083],"rotation":[-29.651,31.3213,-16.4846],"uv":{"south":{"uv":[13,32],"uv_size":[0.125,0.25]}}},{"origin":[0.216,4.0504,-0.0632],"size":[0.1621,0.1684,0.1349],"pivot":[0.216,4.0568,0.0718],"rotation":[-21.0522,33.1635,-11.8903],"uv":{"south":{"uv":[40,30],"uv_size":[0.125,0.125]}}},{"origin":[0.216,3.906,-0.0829],"size":[0.162,0.162,0.135],"pivot":[0.216,3.906,0.0521],"rotation":[-9.1304,34.6575,-5.2221],"uv":{"south":{"uv":[31,40],"uv_size":[0.125,0.125]}}},{"origin":[0.648,6.0816,-0.7079],"size":[0.054,0.162,0.189],"pivot":[0.702,6.2436,-0.5189],"rotation":[-35.7778,14.3485,-10.1256],"uv":{"north":{"uv":[40,31],"uv_size":[0.125,0.125]},"east":{"uv":[32,13],"uv_size":[0.25,0.125]},"south":{"uv":[32,40],"uv_size":[0.125,0.125]},"west":{"uv":[14,32],"uv_size":[0.25,0.125]},"up":{"uv":[32,14],"uv_size":[0.125,0.25]},"down":{"uv":[15,32.25],"uv_size":[0.125,-0.25]}}},{"origin":[0.648,5.9692,-0.2777],"size":[0.054,0.135,0.189],"pivot":[0.702,6.1042,-0.2777],"rotation":[-17.7742,-16.7123,5.2669],"uv":{"north":{"uv":[40,32],"uv_size":[0.125,0.125]},"east":{"uv":[32,15],"uv_size":[0.25,0.125]},"south":{"uv":[33,40],"uv_size":[0.125,0.125]},"west":{"uv":[16,32],"uv_size":[0.25,0.125]},"up":{"uv":[32,16],"uv_size":[0.125,0.25]},"down":{"uv":[17,32.25],"uv_size":[0.125,-0.25]}}},{"origin":[0.6409,5.3899,-0.5673],"size":[0.054,0.135,0.189],"pivot":[0.3239,5.4197,-0.4866],"rotation":[-15.1719,-16.9255,4.5138],"uv":{"north":{"uv":[40,33],"uv_size":[0.125,0.125]},"east":{"uv":[32,17],"uv_size":[0.25,0.125]},"south":{"uv":[34,40],"uv_size":[0.125,0.125]},"west":{"uv":[18,32],"uv_size":[0.25,0.125]},"up":{"uv":[32,18],"uv_size":[0.125,0.25]},"down":{"uv":[19,32.25],"uv_size":[0.125,-0.25]}}},{"origin":[0.7136,5.3466,-0.8256],"size":[0.054,0.162,0.189],"pivot":[0.3239,5.4197,-0.4866],"rotation":[-33.2326,14.7744,-9.4855],"uv":{"north":{"uv":[40,34],"uv_size":[0.125,0.125]},"east":{"uv":[32,19],"uv_size":[0.25,0.125]},"south":{"uv":[35,40],"uv_size":[0.125,0.125]},"west":{"uv":[20,32],"uv_size":[0.25,0.125]},"up":{"uv":[32,20],"uv_size":[0.125,0.25]},"down":{"uv":[21,32.25],"uv_size":[0.125,-0.25]}}},{"origin":[0.216,3.6091,-0.0175],"size":[0.189,0.351,0.135],"pivot":[0.216,3.6631,0.1175],"rotation":[15.6125,36.465,9.4296],"uv":{"south":{"uv":[24,24],"uv_size":[0.25,0.375]}}},{"origin":[0.216,3.2277,0.1641],"size":[0.324,0.513,0.162],"pivot":[0.216,3.2277,0.3261],"rotation":[31.3298,35.631,19.5255],"uv":{"south":{"uv":[21,9],"uv_size":[0.375,0.5]}}},{"origin":[0.216,3.1762,0.1803],"size":[0.297,0.027,0.162],"pivot":[0.216,3.1762,0.3423],"rotation":[18.6184,39.562,8.1606],"uv":{"south":{"uv":[32,21],"uv_size":[0.25,0.125]},"west":{"uv":[40,35],"uv_size":[0.125,0.125]}}},{"origin":[0.216,3.2032,0.1803],"size":[0.162,0.027,0.162],"pivot":[0.216,3.1762,0.3423],"rotation":[18.6184,39.562,8.1606],"uv":{"south":{"uv":[36,40],"uv_size":[0.125,0.125]}}},{"origin":[0.216,3.1222,0.3423],"size":[0.324,0.054,0.027],"pivot":[0.216,3.1762,0.3423],"rotation":[-85.8828,39.3737,6.4737],"uv":{"north":{"uv":[28,24],"uv_size":[0.375,0.125]},"south":{"uv":[25,28],"uv_size":[0.375,0.125]},"west":{"uv":[40,36],"uv_size":[0.125,0.125]},"up":{"uv":[28,25],"uv_size":[0.375,0.125]}}},{"origin":[0.216,3.0183,0.2677],"size":[0.081,0.081,0.054],"pivot":[0.216,3.0993,0.3217],"rotation":[-115.9009,36.4313,-17.8023],"uv":{"south":{"uv":[37,40],"uv_size":[0.125,0.125]},"west":{"uv":[40,37],"uv_size":[0.125,0.125]},"up":{"uv":[38,40],"uv_size":[0.125,0.125]}}},{"origin":[0.216,3.0453,0.3217],"size":[0.1029,0.054,0.243],"pivot":[0.216,3.0993,0.3217],"rotation":[-143.9838,24.2848,-29.4983],"uv":{"north":{"uv":[40,38],"uv_size":[0.125,0.125]},"east":{"uv":[22,32],"uv_size":[0.25,0.125]},"south":{"uv":[39,40],"uv_size":[0.125,0.125]},"west":{"uv":[32,22],"uv_size":[0.25,0.125]},"up":{"uv":[23,32],"uv_size":[0.125,0.25]},"down":{"uv":[32,23.25],"uv_size":[0.125,-0.25]}}},{"origin":[0.2201,3.0956,0.0854],"size":[0.2191,0.0544,0.1601],"pivot":[0.3281,3.1057,0.151],"rotation":[-123.7836,38.8623,6.2194],"uv":{"east":{"uv":[40,39],"uv_size":[0.125,0.125]},"west":{"uv":[40,40],"uv_size":[0.125,0.125]},"up":{"uv":[24,32],"uv_size":[0.25,0.125]}}},{"origin":[0.216,2.7646,0.093],"size":[0.2836,0.216,0.2843],"pivot":[0.216,2.9806,0.1882],"rotation":[-131.2449,22.5754,-18.6038],"uv":{"up":{"uv":[18,26],"uv_size":[0.25,0.25]}}},{"origin":[0.216,2.7561,0.0737],"size":[0.135,0.135,0.297],"pivot":[0.216,2.8911,0.1007],"rotation":[-117.7312,24.7391,-12.4075],"uv":{"south":{"uv":[0,41],"uv_size":[0.125,0.125]},"up":{"uv":[32,24],"uv_size":[0.125,0.25]}}},{"origin":[0.378,3.1648,-1.5354],"size":[0.189,1.242,0.3079],"pivot":[0.567,4.4068,-1.2275],"rotation":[9.4689,37.4947,5.7968],"uv":{"west":{"uv":[15,17],"uv_size":[0.25,1.25]}}},{"origin":[0.378,6.501,-0.7007],"size":[0.287,0.594,0.162],"pivot":[0.378,7.095,-0.7007],"rotation":[-32.1708,-44.0504,23.6223],"uv":{"north":{"uv":[10,22],"uv_size":[0.25,0.625]},"up":{"uv":[25,32],"uv_size":[0.25,0.125]}}},{"origin":[0.378,7.095,-0.7007],"size":[0.287,0.108,0.162],"pivot":[0.378,7.095,-0.7007],"rotation":[-60.8224,-44.0504,23.6223],"uv":{"north":{"uv":[32,25],"uv_size":[0.25,0.125]}}},{"origin":[0.378,6.0464,0.3968],"size":[0.189,0.594,0.3079],"pivot":[0.567,6.6404,0.3968],"rotation":[-27.6883,-34.5557,16.5753],"uv":{"west":{"uv":[22,10],"uv_size":[0.25,0.625]},"up":{"uv":[26,18],"uv_size":[0.25,0.25]}}},{"origin":[0.378,6.6404,0.3968],"size":[0.189,0.324,0.3079],"pivot":[0.567,6.6404,0.3968],"rotation":[-24.5487,-43.114,-22.4531],"uv":{"west":{"uv":[0,25],"uv_size":[0.25,0.375]}}},{"origin":[0.378,7.0123,-0.5012],"size":[0.189,0.3099,0.972],"pivot":[0.567,7.0123,-0.5012],"rotation":[-18.1739,-13.4957,-35.4089],"uv":{"west":{"uv":[19,10],"uv_size":[1,0.25]}}},{"origin":[0.378,7.1204,-0.7442],"size":[0.189,0.2019,0.243],"pivot":[0.567,7.0123,-0.5012],"rotation":[-18.775,19.5545,-46.281],"uv":{"west":{"uv":[19,26],"uv_size":[0.25,0.25]}}},{"origin":[0.378,5.001,0.2049],"size":[0.189,1.188,0.3079],"pivot":[0.567,6.189,0.2049],"rotation":[-21.7737,-35.8401,13.1639],"uv":{"west":{"uv":[16,17],"uv_size":[0.25,1.25]}}},{"origin":[0.378,5.2933,-1.0091],"size":[0.189,1.188,0.287],"pivot":[0.567,6.4813,-0.7221],"rotation":[-22.7317,38.9047,-14.7414],"uv":{"west":{"uv":[17,17],"uv_size":[0.25,1.25]}}},{"origin":[0.378,4.1522,-0.1158],"size":[0.189,1.053,0.3079],"pivot":[0.567,5.2052,-0.1158],"rotation":[-12.5921,-37.201,7.6918],"uv":{"west":{"uv":[11,19],"uv_size":[0.25,1]}}},{"origin":[0.378,4.321,-1.36],"size":[0.189,1.053,0.287],"pivot":[0.567,5.374,-1.073],"rotation":[-13.1864,40.4286,-8.6396],"uv":{"west":{"uv":[19,11],"uv_size":[0.25,1]}}},{"origin":[0.3763,2.5271,-1.5302],"size":[0.189,0.999,0.352],"pivot":[0.5653,2.5271,-1.1782],"rotation":[-11.805,31.9189,-6.3058],"uv":{"west":{"uv":[2,16],"uv_size":[0.375,1]}}},{"origin":[0.1392,2.156,-1.5856],"size":[0.216,0.621,0.4066],"pivot":[0.3552,2.156,-1.5856],"rotation":[-17.1497,29.9415,-8.8756],"uv":{"west":{"uv":[0,20],"uv_size":[0.375,0.625]},"down":{"uv":[25,0.375],"uv_size":[0.25,-0.375]}}},{"origin":[0.3203,1.3536,-0.1035],"size":[0.108,0.081,0.108],"pivot":[0.3794,1.3941,-0.0495],"rotation":[1.5777,22.3253,-2.9419],"uv":{"east":{"uv":[41,0],"uv_size":[0.125,0.125]},"south":{"uv":[1,41],"uv_size":[0.125,0.125]},"west":{"uv":[41,1],"uv_size":[0.125,0.125]}}},{"origin":[0.4475,1.3586,-0.1251],"size":[0.108,0.054,0.108],"pivot":[0.4475,1.3586,-0.0171],"rotation":[1.9739,42.316,-2.2122],"uv":{"south":{"uv":[2,41],"uv_size":[0.125,0.125]}}},{"origin":[0.2717,1.3395,-0.0591],"size":[0.081,0.108,0.108],"pivot":[0.2717,1.4475,0.0337],"rotation":[4.6268,21.9187,5.1432],"uv":{"south":{"uv":[41,2],"uv_size":[0.125,0.125]}}},{"origin":[0.3223,0.7738,-1.6501],"size":[0.243,0.411,1.1716],"pivot":[0.5653,1.1848,-0.4785],"rotation":[-38.7155,32.5608,33.8775],"uv":{"west":{"uv":[7,15],"uv_size":[1.125,0.375]}}},{"origin":[0.2717,1.8783,-1.6816],"size":[0,0.411,0.216],"pivot":[0.2717,1.8783,-1.4656],"rotation":[-45.3432,35.6788,29.9546],"uv":{"west":{"uv":[1,25],"uv_size":[0.25,0.375]}}},{"origin":[0.2717,0.9957,-0.6952],"size":[0,0.411,0.135],"pivot":[0.2717,0.9957,-0.6952],"rotation":[-31.8525,-2.7051,58.8932],"uv":{"west":{"uv":[26,28],"uv_size":[0.125,0.375]}}},{"origin":[0.3493,1.4044,-0.1519],"size":[0.216,0.9754,0.2794],"pivot":[0.5653,1.3269,-0.1519],"rotation":[16.6343,-40.8792,-11.0635],"uv":{"west":{"uv":[12,19],"uv_size":[0.25,1]}}},{"origin":[0.1367,1.1172,-0.5903],"size":[0.135,0.216,0.54],"pivot":[0.1637,1.2016,-0.2021],"rotation":[26.5,0,0],"uv":{"north":{"uv":[26,32],"uv_size":[0.125,0.25]},"east":{"uv":[15,23],"uv_size":[0.5,0.25]},"west":{"uv":[16,23],"uv_size":[0.5,0.25]},"down":{"uv":[26,19.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.4303,1.3665,-0.114],"size":[0.135,0.2048,0.2519],"pivot":[0.5653,1.3665,-0.114],"rotation":[36.7173,-41.7278,-26.4012],"uv":{"north":{"uv":[32,26],"uv_size":[0.125,0.25]},"west":{"uv":[20,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,32.25],"uv_size":[0.125,-0.25]}}},{"origin":[0.4303,1.0153,-0.5213],"size":[0.135,0.3512,0.4067],"pivot":[0.5653,1.3665,-0.114],"rotation":[15.298,-21.9041,53.7502],"uv":{"north":{"uv":[28,26],"uv_size":[0.125,0.375]},"south":{"uv":[27,28],"uv_size":[0.125,0.375]},"west":{"uv":[2,23],"uv_size":[0.375,0.375]}}},{"origin":[0.2717,0.9522,-0.5133],"size":[0,0.1892,0.135],"pivot":[0.2717,0.9522,-0.5133],"rotation":[20.8398,-16.7482,37.1264],"uv":{"west":{"uv":[32,27],"uv_size":[0.125,0.25]}}},{"origin":[0.272,1.0127,-0.5276],"size":[0,0.3512,0.135],"pivot":[0.272,1.0127,-0.3909],"rotation":[14.187,-2.8117,58.8662],"uv":{"west":{"uv":[28,27],"uv_size":[0.125,0.375]}}},{"origin":[0.1367,0.9496,-0.7055],"size":[0.135,0.189,0.108],"pivot":[0.2717,0.9496,-0.5975],"rotation":[-25.2757,0,0],"uv":{"east":{"uv":[28,32],"uv_size":[0.125,0.25]},"south":{"uv":[32,28],"uv_size":[0.125,0.25]},"west":{"uv":[29,32],"uv_size":[0.125,0.25]},"down":{"uv":[3,41.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2717,0.9496,-0.7055],"size":[0,0.189,0.108],"pivot":[0.2717,0.9496,-0.5975],"rotation":[-19.8856,15.9295,37.19],"uv":{"west":{"uv":[32,29],"uv_size":[0.125,0.25]}}},{"origin":[0.1367,0.9957,-1.9911],"size":[0.135,0.162,1.296],"pivot":[0.1907,0.9957,-0.6952],"rotation":[-48.8814,0,0],"uv":{"east":{"uv":[11,22],"uv_size":[1.25,0.125]},"south":{"uv":[41,3],"uv_size":[0.125,0.125]},"west":{"uv":[22,11],"uv_size":[1.25,0.125]},"down":{"uv":[22,13.25],"uv_size":[0.125,-1.25]}}},{"origin":[0.1367,1.972,-1.6325],"size":[0.135,0.162,0.0851],"pivot":[0.1907,1.972,-1.5474],"rotation":[-64.421,0,0],"uv":{"east":{"uv":[4,41],"uv_size":[0.125,0.125]},"west":{"uv":[41,4],"uv_size":[0.125,0.125]},"down":{"uv":[5,41.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.1367,2.0488,-1.6423],"size":[0.162,0.135,0.0581],"pivot":[0.1907,2.0488,-1.5842],"rotation":[-79.8699,0,0],"uv":{"east":{"uv":[41,5],"uv_size":[0.125,0.125]},"west":{"uv":[6,41],"uv_size":[0.125,0.125]},"down":{"uv":[41,6.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.1367,2.106,-1.6525],"size":[0.162,0.135,0.0581],"pivot":[0.1907,2.106,-1.5944],"rotation":[-99.8699,0,0],"uv":{"east":{"uv":[7,41],"uv_size":[0.125,0.125]},"west":{"uv":[41,7],"uv_size":[0.125,0.125]},"down":{"uv":[8,41.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2987,2.0552,-1.5844],"size":[0.162,0.108,0.0581],"pivot":[0.2987,2.1632,-1.5844],"rotation":[3.412,-43.0247,8.1053],"uv":{"north":{"uv":[41,8],"uv_size":[0.125,0.125]}}},{"origin":[0.7448,6.3276,-0.7082],"size":[0.135,0.297,0.4218],"pivot":[0.2306,6.4761,-0.1595],"rotation":[-27.741,36.4107,-17.3369],"uv":{"west":{"uv":[25,1],"uv_size":[0.375,0.25]},"up":{"uv":[28,28],"uv_size":[0.125,0.375]},"down":{"uv":[0,29.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.6657,6.3276,0.0084],"size":[0.162,0.297,0.5094],"pivot":[0.2306,6.4761,-0.1595],"rotation":[-25.4753,-29.4331,13.1773],"uv":{"west":{"uv":[23,16],"uv_size":[0.5,0.25]},"up":{"uv":[26,20],"uv_size":[0.125,0.5]},"down":{"uv":[21,26.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.7448,2.1865,-1.2954],"size":[0.135,0.297,0.4218],"pivot":[0.2306,2.335,-0.7467],"rotation":[-30.6774,35.6296,-19.064],"uv":{"west":{"uv":[2,25],"uv_size":[0.375,0.25]},"up":{"uv":[29,0],"uv_size":[0.125,0.375]},"down":{"uv":[1,29.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.486,1.9872,-0.3416],"size":[0.162,0.297,0.4428],"pivot":[0.648,1.9872,-0.3416],"rotation":[-29.8971,-33.6979,17.6924],"uv":{"west":{"uv":[17,23],"uv_size":[0.5,0.25]},"up":{"uv":[26,21],"uv_size":[0.125,0.5]},"down":{"uv":[22,26.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.4832,5.728,-0.1626],"size":[0.162,0.297,0.5094],"pivot":[0.2222,5.909,-0.0361],"rotation":[-19.8259,-30.4536,10.3555],"uv":{"west":{"uv":[23,17],"uv_size":[0.5,0.25]},"up":{"uv":[26,22],"uv_size":[0.125,0.5]},"down":{"uv":[23,26.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.386,6.1494,-0.9863],"size":[0.135,0.216,0.4218],"pivot":[0.2306,6.2169,-0.868],"rotation":[-5.8494,39.6585,-3.7408],"uv":{"west":{"uv":[25,2],"uv_size":[0.375,0.25]},"up":{"uv":[29,1],"uv_size":[0.125,0.375]},"down":{"uv":[2,29.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.7463,6.3182,-0.6517],"size":[0.135,0.297,0.3633],"pivot":[0.2327,6.4667,-0.1482],"rotation":[-13.3452,41.2085,-8.8825],"uv":{"west":{"uv":[3,25],"uv_size":[0.375,0.25]},"up":{"uv":[29,2],"uv_size":[0.125,0.375]},"down":{"uv":[3,29.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.7276,5.7934,-0.1848],"size":[0.081,0.297,0.4494],"pivot":[0.2327,5.9419,-0.3626],"rotation":[-5.9378,-32.5952,3.2069],"uv":{"west":{"uv":[23,18],"uv_size":[0.5,0.25]},"up":{"uv":[26,23],"uv_size":[0.125,0.5]},"down":{"uv":[24,26.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.7463,5.7934,-0.866],"size":[0.135,0.297,0.3632],"pivot":[0.2327,5.9419,-0.3626],"rotation":[-6.713,41.7913,-4.4851],"uv":{"west":{"uv":[25,3],"uv_size":[0.375,0.25]},"up":{"uv":[29,3],"uv_size":[0.125,0.375]},"down":{"uv":[4,29.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.734,5.2889,-0.3142],"size":[0.081,0.233,0.4494],"pivot":[0.3239,5.4467,-0.5288],"rotation":[5.9378,-32.5952,-3.2069],"uv":{"west":{"uv":[19,23],"uv_size":[0.5,0.25]},"up":{"uv":[26,24],"uv_size":[0.125,0.5]},"down":{"uv":[25,26.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.815,5.2889,-0.3142],"size":[0.081,0.233,0.4494],"pivot":[-0.3239,5.4467,-0.5288],"rotation":[5.9378,32.5952,3.2069],"uv":{"east":{"uv":[19.5,23],"uv_size":[-0.5,0.25]},"up":{"uv":[26,24.5],"uv_size":[0.125,-0.5]},"down":{"uv":[25,26.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.6697,5.2414,-0.3379],"size":[0.162,0.297,0.5094],"pivot":[0.3239,5.4332,-0.5388],"rotation":[-16.9603,-30.8717,8.8939],"uv":{"west":{"uv":[23,19],"uv_size":[0.5,0.25]},"up":{"uv":[26,25],"uv_size":[0.125,0.5]},"down":{"uv":[26,26.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.3659,5.5016,-1.1222],"size":[0.135,0.216,0.4218],"pivot":[0.2277,5.6096,-1.0247],"rotation":[7.1442,39.5861,4.5666],"uv":{"west":{"uv":[4,25],"uv_size":[0.375,0.25]},"up":{"uv":[29,4],"uv_size":[0.125,0.375]},"down":{"uv":[5,29.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.7796,5.2249,-1.1042],"size":[0.135,0.297,0.3632],"pivot":[0.3239,5.4467,-0.5288],"rotation":[6.713,41.7913,4.4851],"uv":{"west":{"uv":[25,4],"uv_size":[0.375,0.25]},"up":{"uv":[29,5],"uv_size":[0.125,0.375]},"down":{"uv":[6,29.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.6465,4.4198,-0.4093],"size":[0.162,0.297,0.4494],"pivot":[0.2327,4.5683,-0.587],"rotation":[14.7647,-31.8663,-7.9213],"uv":{"west":{"uv":[20,23],"uv_size":[0.5,0.25]},"up":{"uv":[0,27],"uv_size":[0.125,0.5]},"down":{"uv":[27,0.5],"uv_size":[0.125,-0.5]}}},{"origin":[0.7463,3.6908,-1.1884],"size":[0.135,0.297,0.3633],"pivot":[0.2327,3.8393,-0.6849],"rotation":[16.6077,40.7763,11.0229],"uv":{"west":{"uv":[5,25],"uv_size":[0.375,0.25]},"up":{"uv":[29,6],"uv_size":[0.125,0.375]},"down":{"uv":[7,29.375],"uv_size":[0.125,-0.375]}}},{"origin":[0.1367,0.9512,-0.5986],"size":[0.135,0.135,0.0857],"pivot":[0.1637,0.9782,-0.5557],"rotation":[2.2243,0,0],"uv":{"north":{"uv":[9,41],"uv_size":[0.125,0.125]},"east":{"uv":[41,9],"uv_size":[0.125,0.125]},"south":{"uv":[10,41],"uv_size":[0.125,0.125]},"west":{"uv":[41,10],"uv_size":[0.125,0.125]},"up":{"uv":[11,41],"uv_size":[0.125,0.125]},"down":{"uv":[41,11.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2717,0.9529,-0.5976],"size":[0,0.162,0.0857],"pivot":[0.2717,0.9529,-0.5118],"rotation":[1.6403,-1.5025,42.4785],"uv":{"west":{"uv":[12,41],"uv_size":[0.125,0.125]}}},{"origin":[0.1367,1.1939,-0.0286],"size":[0.135,0.135,0.081],"pivot":[0.1907,1.1939,-0.0286],"rotation":[49,0,0],"uv":{"east":{"uv":[41,12],"uv_size":[0.125,0.125]},"west":{"uv":[13,41],"uv_size":[0.125,0.125]},"down":{"uv":[41,13.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2717,1.1939,-0.0286],"size":[0.189,0.135,0.081],"pivot":[0.2717,1.1939,-0.0286],"rotation":[45.4094,16.675,-26.8163],"uv":{"north":{"uv":[30,32],"uv_size":[0.25,0.125]},"south":{"uv":[32,30],"uv_size":[0.25,0.125]},"west":{"uv":[14,41],"uv_size":[0.125,0.125]},"down":{"uv":[31,32.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.1367,1.255,0.0246],"size":[0.135,0.135,0.0929],"pivot":[0.1907,1.255,0.0246],"rotation":[69.5036,0,0],"uv":{"east":{"uv":[41,14],"uv_size":[0.125,0.125]},"west":{"uv":[15,41],"uv_size":[0.125,0.125]},"down":{"uv":[41,15.125],"uv_size":[0.125,-0.125]}}},{"origin":[0.2717,1.337,-0.0358],"size":[0.189,0.135,0.0929],"pivot":[0.2717,1.342,0.0571],"rotation":[62.6306,23.3679,-9.1666],"uv":{"north":{"uv":[32,31],"uv_size":[0.25,0.125]},"east":{"uv":[16,41],"uv_size":[0.125,0.125]},"west":{"uv":[41,16],"uv_size":[0.125,0.125]},"down":{"uv":[32,32.125],"uv_size":[0.25,-0.125]}}},{"origin":[0.4451,1.3677,-0.1067],"size":[0.162,0,0.0929],"pivot":[0.4451,1.3677,-0.0137],"rotation":[53.4939,36.5716,-17.4484],"uv":{"east":{"uv":[0,0],"uv_size":[0.125,0]},"down":{"uv":[17,41.125],"uv_size":[0.125,-0.125]}}}]},{"name":"group17","parent":"handle","pivot":[-0.5653,2.5271,-1.1782],"cubes":[{"origin":[-0.3763,2.5787,-1.4707],"size":[0.216,0.81,0.135],"pivot":[-0.3763,2.5787,-1.4707],"rotation":[-10,0,0],"uv":{"north":{"uv":[21,10],"uv_size":[0.25,0.75]},"west":{"uv":[25,5],"uv_size":[0.125,0.75]},"down":{"uv":[0,33.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.5653,2.1024,-0.3007],"size":[0.189,1.269,0.3079],"pivot":[-0.5653,2.3724,-0.3007],"rotation":[-12.5921,37.201,-7.6918],"uv":{"east":{"uv":[0,18],"uv_size":[0.25,1.25]}}},{"origin":[-0.378,6.9142,0.6766],"size":[0.27,0.162,0.1243],"pivot":[-0.378,6.9142,0.801],"rotation":[116.7608,0,0],"uv":{"east":{"uv":[41,17],"uv_size":[0.125,0.125]},"west":{"uv":[18,41],"uv_size":[0.125,0.125]},"down":{"uv":[33,0.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.378,6.8032,0.75],"size":[0.27,0.108,0.1069],"pivot":[-0.378,6.8032,0.8569],"rotation":[90.1795,0,0],"uv":{"east":{"uv":[41,18],"uv_size":[0.125,0.125]},"west":{"uv":[19,41],"uv_size":[0.125,0.125]},"down":{"uv":[1,33.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.378,6.3346,0.5116],"size":[0.27,0.378,0.297],"pivot":[-0.027,6.6316,0.8086],"rotation":[-36.9597,0,0],"uv":{"east":{"uv":[6,25],"uv_size":[0.25,0.375]},"south":{"uv":[25,6],"uv_size":[0.25,0.375]},"west":{"uv":[7,25],"uv_size":[0.25,0.375]}}},{"origin":[-0.685,1.8324,-0.241],"size":[0.307,0.567,0.189],"pivot":[-0.378,1.8324,-0.052],"rotation":[0,-52.4192,0],"uv":{"south":{"uv":[13,22],"uv_size":[0.25,0.625]}}},{"origin":[-0.5652,1.8324,-0.4843],"size":[0.297,0.567,0.189],"uv":{"east":{"uv":[14,22],"uv_size":[0.25,0.625]}}},{"origin":[-0.567,3.3023,-0.1017],"size":[0.189,1.242,0.2489],"pivot":[-0.567,3.3023,-0.1017],"rotation":[11.4364,48.8301,8.6585],"uv":{"east":{"uv":[18,0],"uv_size":[0.25,1.25]}}},{"origin":[-0.378,4.5373,0.117],"size":[0.162,0.567,0.108],"pivot":[-0.216,4.5373,0.225],"rotation":[15.1437,-34.0544,-8.6177],"uv":{"south":{"uv":[21,25],"uv_size":[0.125,0.625]}}},{"origin":[-0.3869,4.4833,0.0386],"size":[0.162,0.054,0.135],"pivot":[-0.3059,4.5103,0.2141],"rotation":[0,-33.5,0],"uv":{"south":{"uv":[41,19],"uv_size":[0.125,0.125]}}},{"origin":[-0.3814,4.4035,0.022],"size":[0.1654,0.081,0.189],"pivot":[-0.216,4.4035,0.211],"rotation":[-14.7659,-33.4613,11.6213],"uv":{"south":{"uv":[20,41],"uv_size":[0.125,0.125]}}},{"origin":[-0.378,4.1833,-0.1347],"size":[0.162,0.243,0.243],"pivot":[-0.216,4.1833,0.1083],"rotation":[-29.651,-31.3213,16.4846],"uv":{"south":{"uv":[33,1],"uv_size":[0.125,0.25]}}},{"origin":[-0.3781,4.0504,-0.0632],"size":[0.1621,0.1684,0.1349],"pivot":[-0.216,4.0568,0.0718],"rotation":[-21.0522,-33.1635,11.8903],"uv":{"south":{"uv":[41,20],"uv_size":[0.125,0.125]}}},{"origin":[-0.378,3.906,-0.0829],"size":[0.162,0.162,0.135],"pivot":[-0.216,3.906,0.0521],"rotation":[-9.1304,-34.6575,5.2221],"uv":{"south":{"uv":[21,41],"uv_size":[0.125,0.125]}}},{"origin":[-0.702,6.0816,-0.7079],"size":[0.054,0.162,0.189],"pivot":[-0.702,6.2436,-0.5189],"rotation":[-35.7778,-14.3485,10.1256],"uv":{"north":{"uv":[41,21],"uv_size":[0.125,0.125]},"east":{"uv":[2,33],"uv_size":[0.25,0.125]},"south":{"uv":[22,41],"uv_size":[0.125,0.125]},"west":{"uv":[33,2],"uv_size":[0.25,0.125]},"up":{"uv":[3,33],"uv_size":[0.125,0.25]},"down":{"uv":[33,3.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.702,5.9692,-0.2777],"size":[0.054,0.135,0.189],"pivot":[-0.702,6.1042,-0.2777],"rotation":[-17.7742,16.7123,-5.2669],"uv":{"north":{"uv":[41,22],"uv_size":[0.125,0.125]},"east":{"uv":[4,33],"uv_size":[0.25,0.125]},"south":{"uv":[23,41],"uv_size":[0.125,0.125]},"west":{"uv":[33,4],"uv_size":[0.25,0.125]},"up":{"uv":[5,33],"uv_size":[0.125,0.25]},"down":{"uv":[33,5.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.6949,5.3899,-0.5673],"size":[0.054,0.135,0.189],"pivot":[-0.3239,5.4197,-0.4866],"rotation":[-15.1719,16.9255,-4.5138],"uv":{"north":{"uv":[41,23],"uv_size":[0.125,0.125]},"east":{"uv":[6,33],"uv_size":[0.25,0.125]},"south":{"uv":[24,41],"uv_size":[0.125,0.125]},"west":{"uv":[33,6],"uv_size":[0.25,0.125]},"up":{"uv":[7,33],"uv_size":[0.125,0.25]},"down":{"uv":[33,7.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.7676,5.3466,-0.8256],"size":[0.054,0.162,0.189],"pivot":[-0.3239,5.4197,-0.4866],"rotation":[-33.2326,-14.7744,9.4855],"uv":{"north":{"uv":[41,24],"uv_size":[0.125,0.125]},"east":{"uv":[8,33],"uv_size":[0.25,0.125]},"south":{"uv":[25,41],"uv_size":[0.125,0.125]},"west":{"uv":[33,8],"uv_size":[0.25,0.125]},"up":{"uv":[9,33],"uv_size":[0.125,0.25]},"down":{"uv":[33,9.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.405,3.6091,-0.0175],"size":[0.189,0.351,0.135],"pivot":[-0.216,3.6631,0.1175],"rotation":[15.6125,-36.465,-9.4296],"uv":{"south":{"uv":[25,7],"uv_size":[0.25,0.375]}}},{"origin":[-0.54,3.2277,0.1641],"size":[0.324,0.513,0.162],"pivot":[-0.216,3.2277,0.3261],"rotation":[31.3298,-35.631,-19.5255],"uv":{"south":{"uv":[11,21],"uv_size":[0.375,0.5]}}},{"origin":[-0.513,3.1762,0.1803],"size":[0.297,0.027,0.162],"pivot":[-0.216,3.1762,0.3423],"rotation":[18.6184,-39.562,-8.1606],"uv":{"east":{"uv":[41,25],"uv_size":[0.125,0.125]},"south":{"uv":[10,33],"uv_size":[0.25,0.125]}}},{"origin":[-0.378,3.2032,0.1803],"size":[0.162,0.027,0.162],"pivot":[-0.216,3.1762,0.3423],"rotation":[18.6184,-39.562,-8.1606],"uv":{"south":{"uv":[26,41],"uv_size":[0.125,0.125]}}},{"origin":[-0.54,3.1222,0.3423],"size":[0.324,0.054,0.027],"pivot":[-0.216,3.1762,0.3423],"rotation":[-85.8828,-39.3737,-6.4737],"uv":{"north":{"uv":[29,7],"uv_size":[0.375,0.125]},"east":{"uv":[41,26],"uv_size":[0.125,0.125]},"south":{"uv":[8,29],"uv_size":[0.375,0.125]},"up":{"uv":[29,8],"uv_size":[0.375,0.125]}}},{"origin":[-0.297,3.0183,0.2677],"size":[0.081,0.081,0.054],"pivot":[-0.216,3.0993,0.3217],"rotation":[-115.9009,-36.4313,17.8023],"uv":{"east":{"uv":[27,41],"uv_size":[0.125,0.125]},"south":{"uv":[41,27],"uv_size":[0.125,0.125]},"up":{"uv":[28,41],"uv_size":[0.125,0.125]}}},{"origin":[-0.3189,3.0453,0.3217],"size":[0.1029,0.054,0.243],"pivot":[-0.216,3.0993,0.3217],"rotation":[-143.9838,-24.2848,29.4983],"uv":{"north":{"uv":[41,28],"uv_size":[0.125,0.125]},"east":{"uv":[33,10],"uv_size":[0.25,0.125]},"south":{"uv":[29,41],"uv_size":[0.125,0.125]},"west":{"uv":[11,33],"uv_size":[0.25,0.125]},"up":{"uv":[33,11],"uv_size":[0.125,0.25]},"down":{"uv":[12,33.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.4392,3.0956,0.0854],"size":[0.2191,0.0544,0.1601],"pivot":[-0.3281,3.1057,0.151],"rotation":[-123.7836,-38.8623,-6.2194],"uv":{"east":{"uv":[41,29],"uv_size":[0.125,0.125]},"west":{"uv":[30,41],"uv_size":[0.125,0.125]},"up":{"uv":[33,12],"uv_size":[0.25,0.125]}}},{"origin":[-0.4996,2.7646,0.093],"size":[0.2836,0.216,0.2843],"pivot":[-0.216,2.9806,0.1882],"rotation":[-131.2449,-22.5754,18.6038],"uv":{"up":{"uv":[1,27],"uv_size":[0.25,0.25]}}},{"origin":[-0.351,2.7561,0.0737],"size":[0.135,0.135,0.297],"pivot":[-0.216,2.8911,0.1007],"rotation":[-117.7312,-24.7391,12.4075],"uv":{"south":{"uv":[41,30],"uv_size":[0.125,0.125]},"up":{"uv":[13,33],"uv_size":[0.125,0.25]}}},{"origin":[-0.567,3.1648,-1.5354],"size":[0.189,1.242,0.3079],"pivot":[-0.567,4.4068,-1.2275],"rotation":[9.4689,-37.4947,-5.7968],"uv":{"east":{"uv":[1,18],"uv_size":[0.25,1.25]}}},{"origin":[-0.665,6.501,-0.7007],"size":[0.287,0.594,0.162],"pivot":[-0.378,7.095,-0.7007],"rotation":[-32.1708,44.0504,-23.6223],"uv":{"north":{"uv":[22,14],"uv_size":[0.25,0.625]},"up":{"uv":[33,13],"uv_size":[0.25,0.125]}}},{"origin":[-0.665,7.095,-0.7007],"size":[0.287,0.108,0.162],"pivot":[-0.378,7.095,-0.7007],"rotation":[-60.8224,44.0504,-23.6223],"uv":{"north":{"uv":[14,33],"uv_size":[0.25,0.125]}}},{"origin":[-0.567,6.0464,0.3968],"size":[0.189,0.594,0.3079],"pivot":[-0.567,6.6404,0.3968],"rotation":[-27.6883,34.5557,-16.5753],"uv":{"east":{"uv":[15,22],"uv_size":[0.25,0.625]},"up":{"uv":[27,1],"uv_size":[0.25,0.25]}}},{"origin":[-0.567,6.6404,0.3968],"size":[0.189,0.324,0.3079],"pivot":[-0.567,6.6404,0.3968],"rotation":[-24.5487,43.114,22.4531],"uv":{"east":{"uv":[8,25],"uv_size":[0.25,0.375]}}},{"origin":[-0.567,7.0123,-0.5012],"size":[0.189,0.3099,0.972],"pivot":[-0.567,7.0123,-0.5012],"rotation":[-18.1739,13.4957,35.4089],"uv":{"east":{"uv":[19,12],"uv_size":[1,0.25]}}},{"origin":[-0.567,7.1204,-0.7442],"size":[0.189,0.2019,0.243],"pivot":[-0.567,7.0123,-0.5012],"rotation":[-18.775,-19.5545,46.281],"uv":{"east":{"uv":[2,27],"uv_size":[0.25,0.25]}}},{"origin":[-0.567,5.001,0.2049],"size":[0.189,1.188,0.3079],"pivot":[-0.567,6.189,0.2049],"rotation":[-21.7737,35.8401,-13.1639],"uv":{"east":{"uv":[2,18],"uv_size":[0.25,1.25]}}},{"origin":[-0.567,5.2933,-1.0091],"size":[0.189,1.188,0.287],"pivot":[-0.567,6.4813,-0.7221],"rotation":[-22.7317,-38.9047,14.7414],"uv":{"east":{"uv":[18,2],"uv_size":[0.25,1.25]}}},{"origin":[-0.567,4.1522,-0.1158],"size":[0.189,1.053,0.3079],"pivot":[-0.567,5.2052,-0.1158],"rotation":[-12.5921,37.201,-7.6918],"uv":{"east":{"uv":[19,13],"uv_size":[0.25,1]}}},{"origin":[-0.567,4.321,-1.36],"size":[0.189,1.053,0.287],"pivot":[-0.567,5.374,-1.073],"rotation":[-13.1864,-40.4286,8.6396],"uv":{"east":{"uv":[14,19],"uv_size":[0.25,1]}}},{"origin":[-0.5653,2.5271,-1.5302],"size":[0.189,0.999,0.352],"pivot":[-0.5653,2.5271,-1.1782],"rotation":[-11.805,-31.9189,6.3058],"uv":{"east":{"uv":[3,16],"uv_size":[0.375,1]}}},{"origin":[-0.3552,2.156,-1.5856],"size":[0.216,0.621,0.4066],"pivot":[-0.3552,2.156,-1.5856],"rotation":[-17.1497,-29.9415,8.8756],"uv":{"east":{"uv":[20,0],"uv_size":[0.375,0.625]},"down":{"uv":[25,8.375],"uv_size":[0.25,-0.375]}}},{"origin":[-0.4283,1.3536,-0.1035],"size":[0.108,0.081,0.108],"pivot":[-0.3794,1.3941,-0.0495],"rotation":[1.5777,-22.3253,2.9419],"uv":{"east":{"uv":[31,41],"uv_size":[0.125,0.125]},"south":{"uv":[41,31],"uv_size":[0.125,0.125]},"west":{"uv":[32,41],"uv_size":[0.125,0.125]}}},{"origin":[-0.5555,1.3586,-0.1251],"size":[0.108,0.054,0.108],"pivot":[-0.4475,1.3586,-0.0171],"rotation":[1.9739,-42.316,2.2122],"uv":{"south":{"uv":[41,32],"uv_size":[0.125,0.125]}}},{"origin":[-0.3527,1.3395,-0.0591],"size":[0.081,0.108,0.108],"pivot":[-0.2717,1.4475,0.0337],"rotation":[4.6268,-21.9187,-5.1432],"uv":{"south":{"uv":[33,41],"uv_size":[0.125,0.125]}}},{"origin":[-0.5653,0.7738,-1.6501],"size":[0.243,0.411,1.1716],"pivot":[-0.5653,1.1848,-0.4785],"rotation":[-38.7155,-32.5608,-33.8775],"uv":{"east":{"uv":[9,15],"uv_size":[1.125,0.375]}}},{"origin":[-0.2717,1.8783,-1.6816],"size":[0,0.411,0.216],"pivot":[-0.2717,1.8783,-1.4656],"rotation":[-45.3432,-35.6788,-29.9546],"uv":{"east":{"uv":[9,25],"uv_size":[0.25,0.375]}}},{"origin":[-0.2717,0.9957,-0.6952],"size":[0,0.411,0.135],"pivot":[-0.2717,0.9957,-0.6952],"rotation":[-31.8525,2.7051,-58.8932],"uv":{"east":{"uv":[9,29],"uv_size":[0.125,0.375]}}},{"origin":[-0.5653,1.4044,-0.1519],"size":[0.216,0.9754,0.2794],"pivot":[-0.5653,1.3269,-0.1519],"rotation":[16.6343,40.8792,11.0635],"uv":{"east":{"uv":[15,19],"uv_size":[0.25,1]}}},{"origin":[-0.2717,1.1172,-0.5903],"size":[0.135,0.216,0.54],"pivot":[-0.1637,1.2016,-0.2021],"rotation":[26.5,0,0],"uv":{"north":{"uv":[33,14],"uv_size":[0.125,0.25]},"east":{"uv":[23,20],"uv_size":[0.5,0.25]},"west":{"uv":[21,23],"uv_size":[0.5,0.25]},"down":{"uv":[27,2.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.5653,1.3665,-0.114],"size":[0.135,0.2048,0.2519],"pivot":[-0.5653,1.3665,-0.114],"rotation":[36.7173,41.7278,26.4012],"uv":{"north":{"uv":[15,33],"uv_size":[0.125,0.25]},"east":{"uv":[3,27],"uv_size":[0.25,0.25]},"down":{"uv":[33,15.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.5653,1.0153,-0.5213],"size":[0.135,0.3512,0.4067],"pivot":[-0.5653,1.3665,-0.114],"rotation":[15.298,21.9041,-53.7502],"uv":{"north":{"uv":[29,9],"uv_size":[0.125,0.375]},"east":{"uv":[3,23],"uv_size":[0.375,0.375]},"south":{"uv":[10,29],"uv_size":[0.125,0.375]}}},{"origin":[-0.2717,0.9522,-0.5133],"size":[0,0.1892,0.135],"pivot":[-0.2717,0.9522,-0.5133],"rotation":[20.8398,16.7482,-37.1264],"uv":{"east":{"uv":[16,33],"uv_size":[0.125,0.25]}}},{"origin":[-0.272,1.0127,-0.5276],"size":[0,0.3512,0.135],"pivot":[-0.272,1.0127,-0.3909],"rotation":[14.187,2.8117,-58.8662],"uv":{"east":{"uv":[29,10],"uv_size":[0.125,0.375]}}},{"origin":[-0.2717,0.9496,-0.7055],"size":[0.135,0.189,0.108],"pivot":[-0.2717,0.9496,-0.5975],"rotation":[-25.2757,0,0],"uv":{"east":{"uv":[33,16],"uv_size":[0.125,0.25]},"south":{"uv":[17,33],"uv_size":[0.125,0.25]},"west":{"uv":[33,17],"uv_size":[0.125,0.25]},"down":{"uv":[41,33.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2717,0.9496,-0.7055],"size":[0,0.189,0.108],"pivot":[-0.2717,0.9496,-0.5975],"rotation":[-19.8856,-15.9295,-37.19],"uv":{"east":{"uv":[18,33],"uv_size":[0.125,0.25]}}},{"origin":[-0.2717,0.9957,-1.9911],"size":[0.135,0.162,1.296],"pivot":[-0.1907,0.9957,-0.6952],"rotation":[-48.8814,0,0],"uv":{"east":{"uv":[22,15],"uv_size":[1.25,0.125]},"south":{"uv":[34,41],"uv_size":[0.125,0.125]},"west":{"uv":[16,22],"uv_size":[1.25,0.125]},"down":{"uv":[18,23.25],"uv_size":[0.125,-1.25]}}},{"origin":[-0.2717,1.972,-1.6325],"size":[0.135,0.162,0.0851],"pivot":[-0.1907,1.972,-1.5474],"rotation":[-64.421,0,0],"uv":{"east":{"uv":[41,34],"uv_size":[0.125,0.125]},"west":{"uv":[35,41],"uv_size":[0.125,0.125]},"down":{"uv":[41,35.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2987,2.0488,-1.6423],"size":[0.162,0.135,0.0581],"pivot":[-0.1907,2.0488,-1.5842],"rotation":[-79.8699,0,0],"uv":{"east":{"uv":[36,41],"uv_size":[0.125,0.125]},"west":{"uv":[41,36],"uv_size":[0.125,0.125]},"down":{"uv":[37,41.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2987,2.106,-1.6525],"size":[0.162,0.135,0.0581],"pivot":[-0.1907,2.106,-1.5944],"rotation":[-99.8699,0,0],"uv":{"east":{"uv":[41,37],"uv_size":[0.125,0.125]},"west":{"uv":[38,41],"uv_size":[0.125,0.125]},"down":{"uv":[41,38.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.4607,2.0552,-1.5844],"size":[0.162,0.108,0.0581],"pivot":[-0.2987,2.1632,-1.5844],"rotation":[3.412,43.0247,-8.1053],"uv":{"north":{"uv":[39,41],"uv_size":[0.125,0.125]}}},{"origin":[-0.8798,6.3276,-0.7082],"size":[0.135,0.297,0.4218],"pivot":[-0.2306,6.4761,-0.1595],"rotation":[-27.741,-36.4107,17.3369],"uv":{"east":{"uv":[25,9],"uv_size":[0.375,0.25]},"up":{"uv":[11,29],"uv_size":[0.125,0.375]},"down":{"uv":[29,11.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.8277,6.3276,0.0084],"size":[0.162,0.297,0.5094],"pivot":[-0.2306,6.4761,-0.1595],"rotation":[-25.4753,29.4331,-13.1773],"uv":{"east":{"uv":[23,21],"uv_size":[0.5,0.25]},"up":{"uv":[27,3],"uv_size":[0.125,0.5]},"down":{"uv":[4,27.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.8798,2.1865,-1.2954],"size":[0.135,0.297,0.4218],"pivot":[-0.2306,2.335,-0.7467],"rotation":[-30.6774,-35.6296,19.064],"uv":{"east":{"uv":[10,25],"uv_size":[0.375,0.25]},"up":{"uv":[12,29],"uv_size":[0.125,0.375]},"down":{"uv":[29,12.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.648,1.9872,-0.3416],"size":[0.162,0.297,0.4428],"pivot":[-0.648,1.9872,-0.3416],"rotation":[-29.8971,33.6979,-17.6924],"uv":{"east":{"uv":[22,23],"uv_size":[0.5,0.25]},"up":{"uv":[27,4],"uv_size":[0.125,0.5]},"down":{"uv":[5,27.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.6452,5.728,-0.1626],"size":[0.162,0.297,0.5094],"pivot":[-0.2222,5.909,-0.0361],"rotation":[-19.8259,30.4536,-10.3555],"uv":{"east":{"uv":[23,22],"uv_size":[0.5,0.25]},"up":{"uv":[27,5],"uv_size":[0.125,0.5]},"down":{"uv":[6,27.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.521,6.1494,-0.9863],"size":[0.135,0.216,0.4218],"pivot":[-0.2306,6.2169,-0.868],"rotation":[-5.8494,-39.6585,3.7408],"uv":{"east":{"uv":[25,10],"uv_size":[0.375,0.25]},"up":{"uv":[13,29],"uv_size":[0.125,0.375]},"down":{"uv":[29,13.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.8813,6.3182,-0.6517],"size":[0.135,0.297,0.3633],"pivot":[-0.2327,6.4667,-0.1482],"rotation":[-13.3452,-41.2085,8.8825],"uv":{"east":{"uv":[11,25],"uv_size":[0.375,0.25]},"up":{"uv":[14,29],"uv_size":[0.125,0.375]},"down":{"uv":[29,14.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.8085,5.7934,-0.1848],"size":[0.081,0.297,0.4494],"pivot":[-0.2327,5.9419,-0.3626],"rotation":[-5.9378,32.5952,-3.2069],"uv":{"east":{"uv":[23,23],"uv_size":[0.5,0.25]},"up":{"uv":[27,6],"uv_size":[0.125,0.5]},"down":{"uv":[7,27.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.8813,5.7934,-0.866],"size":[0.135,0.297,0.3632],"pivot":[-0.2327,5.9419,-0.3626],"rotation":[-6.713,-41.7913,4.4851],"uv":{"east":{"uv":[25,11],"uv_size":[0.375,0.25]},"up":{"uv":[15,29],"uv_size":[0.125,0.375]},"down":{"uv":[29,15.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.8317,5.2414,-0.3379],"size":[0.162,0.297,0.5094],"pivot":[-0.3239,5.4332,-0.5388],"rotation":[-16.9603,30.8717,-8.8939],"uv":{"east":{"uv":[0,24],"uv_size":[0.5,0.25]},"up":{"uv":[27,7],"uv_size":[0.125,0.5]},"down":{"uv":[8,27.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.5009,5.5016,-1.1222],"size":[0.135,0.216,0.4218],"pivot":[-0.2277,5.6096,-1.0247],"rotation":[7.1442,-39.5861,-4.5666],"uv":{"east":{"uv":[12,25],"uv_size":[0.375,0.25]},"up":{"uv":[16,29],"uv_size":[0.125,0.375]},"down":{"uv":[29,16.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.9146,5.2249,-1.1042],"size":[0.135,0.297,0.3632],"pivot":[-0.3239,5.4467,-0.5288],"rotation":[6.713,-41.7913,-4.4851],"uv":{"east":{"uv":[25,12],"uv_size":[0.375,0.25]},"up":{"uv":[17,29],"uv_size":[0.125,0.375]},"down":{"uv":[29,17.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.8085,4.4198,-0.4093],"size":[0.162,0.297,0.4494],"pivot":[-0.2327,4.5683,-0.587],"rotation":[14.7647,31.8663,7.9213],"uv":{"east":{"uv":[24,0],"uv_size":[0.5,0.25]},"up":{"uv":[27,8],"uv_size":[0.125,0.5]},"down":{"uv":[9,27.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.8813,3.6908,-1.1884],"size":[0.135,0.297,0.3633],"pivot":[-0.2327,3.8393,-0.6849],"rotation":[16.6077,-40.7763,-11.0229],"uv":{"east":{"uv":[13,25],"uv_size":[0.375,0.25]},"up":{"uv":[18,29],"uv_size":[0.125,0.375]},"down":{"uv":[29,18.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.2717,0.9512,-0.5986],"size":[0.135,0.135,0.0857],"pivot":[-0.1637,0.9782,-0.5557],"rotation":[2.2243,0,0],"uv":{"north":{"uv":[41,39],"uv_size":[0.125,0.125]},"east":{"uv":[40,41],"uv_size":[0.125,0.125]},"south":{"uv":[41,40],"uv_size":[0.125,0.125]},"west":{"uv":[41,41],"uv_size":[0.125,0.125]},"up":{"uv":[0,42],"uv_size":[0.125,0.125]},"down":{"uv":[42,0.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.2717,0.9529,-0.5976],"size":[0,0.162,0.0857],"pivot":[-0.2717,0.9529,-0.5118],"rotation":[1.6403,1.5025,-42.4785],"uv":{"east":{"uv":[1,42],"uv_size":[0.125,0.125]}}},{"origin":[-0.2717,1.1939,-0.0286],"size":[0.135,0.135,0.081],"pivot":[-0.1907,1.1939,-0.0286],"rotation":[49,0,0],"uv":{"east":{"uv":[42,1],"uv_size":[0.125,0.125]},"west":{"uv":[2,42],"uv_size":[0.125,0.125]},"down":{"uv":[42,2.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.4607,1.1939,-0.0286],"size":[0.189,0.135,0.081],"pivot":[-0.2717,1.1939,-0.0286],"rotation":[45.4094,-16.675,26.8163],"uv":{"north":{"uv":[33,18],"uv_size":[0.25,0.125]},"east":{"uv":[3,42],"uv_size":[0.125,0.125]},"south":{"uv":[19,33],"uv_size":[0.25,0.125]},"down":{"uv":[33,19.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.2717,1.255,0.0246],"size":[0.135,0.135,0.0929],"pivot":[-0.1907,1.255,0.0246],"rotation":[69.5036,0,0],"uv":{"east":{"uv":[42,3],"uv_size":[0.125,0.125]},"west":{"uv":[4,42],"uv_size":[0.125,0.125]},"down":{"uv":[42,4.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.4607,1.337,-0.0358],"size":[0.189,0.135,0.0929],"pivot":[-0.2717,1.342,0.0571],"rotation":[62.6306,-23.3679,9.1666],"uv":{"north":{"uv":[20,33],"uv_size":[0.25,0.125]},"east":{"uv":[5,42],"uv_size":[0.125,0.125]},"west":{"uv":[42,5],"uv_size":[0.125,0.125]},"down":{"uv":[33,20.125],"uv_size":[0.25,-0.125]}}},{"origin":[-0.6071,1.3677,-0.1067],"size":[0.162,0,0.0929],"pivot":[-0.4451,1.3677,-0.0137],"rotation":[53.4939,-36.5716,17.4484],"uv":{"west":{"uv":[0,0],"uv_size":[0.125,0]},"down":{"uv":[6,42.125],"uv_size":[0.125,-0.125]}}}]},{"name":"constraint","pivot":[-0.0156,8.125,1.9375]},{"name":"camera","pivot":[-0.5,64.25,-2.75]},{"name":"view","pivot":[0,0,0]},{"name":"idle_view","parent":"view","pivot":[-0.5,64.25,-2.75]},{"name":"positioning","pivot":[-0.0156,4.125,4.9375]},{"name":"ground","parent":"positioning","pivot":[0,0,0]},{"name":"thirdperson_hand","parent":"positioning","pivot":[-0.0156,6.125,-2.0625]},{"name":"fixed","parent":"positioning","pivot":[0.7969,5.125,-1.0625],"rotation":[0,90,0]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/index.json b/src/main/resources/assets/evolution/cosmetic/melee/index.json new file mode 100644 index 0000000..92471e8 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/index.json @@ -0,0 +1 @@ +{"melee":[{"key":"annihil","name":"Dark Star","clips":["draw","draw_1","draw_1_angel","draw_angel","inspect","inspect_1","inspect_1_angel","inspect_angel","melee_1","melee_1_angel","melee_2","melee_2_angel","melee_3","melee_3_angel","static_idle","static_idle_angel"],"transforms":{"thirdperson_righthand":{"rotation":[180,180,0],"translation":[1,-3.5,1]},"thirdperson_lefthand":{"rotation":[-180,-180,0],"translation":[-1,-3.5,1]},"ground":{"rotation":[-180,0,0]},"fixed":{"rotation":[-154.95,27.37,-43.25],"translation":[4,-6.25,-2.5],"scale":[1.5,1.5,1.5]}},"variants":[{"suffix":"","hidden":["angel"]},{"suffix":"_angel","hidden":["devil"]}]},{"key":"cobra_vanguard","name":"Cobra Vanguard","clips":["draw","draw_1","inspect","inspect_1","melee_1","melee_2","melee_3","run","run_end","run_start","static_idle"],"transforms":{"thirdperson_righthand":{"rotation":[90,0,0]},"thirdperson_lefthand":{"rotation":[90,0,0]},"fixed":{"rotation":[90,0,90],"translation":[1.5,0,0],"scale":[1.3,1.3,1.3]}}},{"key":"executor","name":"Executor","clips":["draw","draw_1","inspect","inspect_1","melee_1","melee_2","melee_3","run","run_end","run_start","static_idle"],"transforms":{"thirdperson_righthand":{"rotation":[180,180,0],"translation":[0,-5.5,1]},"thirdperson_lefthand":{"rotation":[-180,-180,0],"translation":[0,-5.5,1]},"ground":{"rotation":[-180,0,0]},"fixed":{"rotation":[-154.95,27.37,-43.25],"translation":[4,-6.25,-2.5],"scale":[1.5,1.5,1.5]}}},{"key":"mercy","name":"Mercy","clips":["draw","draw_1","inspect","melee_1","melee_2","melee_3","run","run_end","run_start","static_idle"],"transforms":{"thirdperson_righthand":{"rotation":[90,0,0]},"thirdperson_lefthand":{"rotation":[90,0,0]},"fixed":{"rotation":[90,0,90],"translation":[1,-1.25,0],"scale":[1.5,1.5,1.5]}}},{"key":"null_annihil","name":"\"Free Dark Star\"","clips":["draw","draw_1","inspect","inspect_1","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"rotation":[180,180,0],"translation":[1,-3.5,1]},"thirdperson_lefthand":{"rotation":[-180,-180,0],"translation":[-1,-3.5,1]},"ground":{"rotation":[-180,0,0]},"fixed":{"rotation":[-154.95,27.37,-43.25],"translation":[4,-6.25,-2.5],"scale":[1.5,1.5,1.5]}}},{"key":"polaris","name":"Desmoulins' Edge","clips":["draw","draw_1","inspect","melee_1","melee_2","melee_3","run","run_end","run_start","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,8.5,1]},"thirdperson_lefthand":{"translation":[0,8.5,1]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,10,0],"rotation":[0,90,0],"scale":[1.3,1.3,1.3]}}},{"key":"quenching","name":"Dragon's Fang","clips":["draw","draw_1","inspect","melee_1","melee_1_1","melee_2","melee_2_1","melee_3","melee_3_1","run","run_end","run_start","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,2.5,1]},"thirdperson_lefthand":{"translation":[0,2.5,1]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"rotation":[0,90,0],"scale":[2,2,2]}}},{"key":"shadowkiller","name":"Fiery Owl","clips":["draw","draw_1","inspect","melee_1","melee_2","melee_3","run","run_end","run_start","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,-3,-1],"rotation":[-90,0,180]},"thirdperson_lefthand":{"translation":[0,-3,-1],"rotation":[-90,0,180]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[-1,0,0],"rotation":[0,90,0],"scale":[2,2,2]}}},{"key":"silencefd","name":"TAC Dagger","clips":["draw","inspect","melee_1","melee_2","melee_3","run","run_end","run_start","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,2.5,1]},"thirdperson_lefthand":{"translation":[0,2.5,1]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"rotation":[0,90,0],"scale":[2,2,2]}}},{"key":"thieve_sea","name":"Sea Gleam","clips":["draw","draw_1","inspect","melee_1","melee_2","melee_3","run","run_end","run_start","static_idle"],"transforms":{"thirdperson_righthand":{"rotation":[90,0,0],"translation":[0,0,9]},"thirdperson_lefthand":{"rotation":[90,0,0],"translation":[0,0,8.75]},"ground":{"translation":[0,5.25,0]},"fixed":{"rotation":[90,0,90],"translation":[-7.5,0,0]}}},{"key":"treasure_kn","name":"Creed","clips":["draw","draw_1","inspect","melee_1","melee_2","melee_3","run","run_end","run_start","static_idle"],"transforms":{"thirdperson_righthand":{"rotation":[180,180,0],"translation":[0,-6.5,1]},"thirdperson_lefthand":{"rotation":[180,0,0],"translation":[0,-8.5,1]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"rotation":[0,90,0],"scale":[2,2,2]}}},{"key":"bayonet","name":"Bayonet","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"bayoauto","model":"bayonet","name":"Bayonet | Autotronic","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"butterfly","name":"Butterfly","clips":["draw","draw_1","idle","inspect","inspect_1","inspect_2","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"buemerald","model":"butterfly","name":"Butterfly | Emerald","clips":["draw","draw_1","idle","inspect","inspect_1","inspect_2","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"busnowfall","model":"butterfly","name":"Butterfly | Snowfall","clips":["draw","draw_1","idle","inspect","inspect_1","inspect_2","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"css","name":"Classic Knife","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle","static_idle_1"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"karambit","name":"Karambit","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"karobsidian","model":"karambit","name":"Karambit | Obsidian","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"m9","name":"M9 Bayonet","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"m9auto","model":"m9","name":"M9 Bayonet | Autotronic","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"m9amethyst","model":"m9","name":"M9 Bayonet | Amethyst","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"m9emerald","model":"m9","name":"M9 Bayonet | Emerald","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"m9sapphire","model":"m9","name":"M9 Bayonet | Sapphire","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"m9holy","name":"M9 Bayonet | Holy","model":"m9","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}},"holyBones":["blade"]},{"key":"push","name":"Push","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"skeleton","name":"Skeleton","clips":["draw","draw_1","idle","inspect","inspect_1","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"stiletto","name":"Stiletto","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"stilettosapphire","model":"stiletto","name":"Stiletto | Sapphire","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"stilettott","model":"stiletto","name":"Stiletto | Tiger tooth","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"stilettoholy","name":"Stiletto | Holy","model":"stiletto","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}},"holyBones":["b"]},{"key":"tactical","name":"Huntsman","clips":["draw","idle","inspect","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}},{"key":"talon","name":"Talon","clips":["draw","idle","inspect","inspect_1","melee_1","melee_2","melee_3","static_idle"],"transforms":{"thirdperson_righthand":{"translation":[0,0,1],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"thirdperson_lefthand":{"translation":[0,0,2],"rotation":[90,0,0],"scale":[0.7,0.7,0.7]},"ground":{"rotation":[45,0,0],"translation":[0,6,0]},"gui":{"rotation":[0,0,-45],"translation":[4.5,4,0]},"head":{"translation":[0,4.75,0]},"fixed":{"translation":[0,11,0],"scale":[2,2,2]}}}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/karambit.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/karambit.anim.json new file mode 100644 index 0000000..8818d97 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/karambit.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"draw":{"loop":true,"animation_length":0.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[83.492,-9.054,-170.476],"0.04":[92.946,-17.934,-181.384],"0.08":[103.066,-20.065,-184.632],"0.12":[110.41,-19.122,-170.639],"0.17":[116.817,-22.345,-152.829],"0.21":[120.313,-25.195,-141.661],"0.25":[121.978,-26.305,-134.941],"0.29":[119.394,-25.369,-136.742],"0.33":[111.386,-25.907,-149.581],"0.38":[111.619,-29.534,-156.908],"0.42":[119.855,-32.944,-158.907],"0.46":[119.718,-33.754,-149.183],"0.5":[117.245,-34.143,-130.844],"0.54":[117.65,-35.605,-118.131],"0.58":[117.931,-33.74,-109.59],"0.62":[117.926,-28.143,-103.11],"0.67":[116.71,-27.575,-101.027],"0.71":[112.933,-28.98,-99.252],"0.75":[109.306,-30.146,-97.603],"0.79":[109.538,-29.908,-98.558],"0.83":[111.786,-29.2,-100.352],"0.88":[112.323,-29.408,-99.574],"0.92":[112.323,-29.762,-98.568],"0.96":[112.296,-29.891,-98.255]},"position":{"0.0":[-16.834,-26.628,-11.518],"0.04":[-16.657,-24.568,-14.618],"0.08":[-16.041,-22.598,-17.334],"0.12":[-15.24,-21.214,-18.873],"0.17":[-14.803,-21.012,-19.294],"0.21":[-14.592,-21.237,-18.704],"0.25":[-14.604,-21.858,-17.391],"0.29":[-14.862,-22.673,-16.5],"0.33":[-15.025,-23.104,-16.364],"0.38":[-15.036,-22.943,-16.436],"0.42":[-14.994,-22.481,-16.677],"0.46":[-14.872,-21.947,-16.982],"0.5":[-14.685,-21.755,-17.038],"0.54":[-14.349,-21.837,-16.929],"0.58":[-13.662,-22.229,-16.565],"0.62":[-12.773,-22.817,-16.072],"0.67":[-11.884,-23.549,-15.812],"0.71":[-11.107,-24.203,-15.781],"0.75":[-10.44,-24.424,-15.894],"0.79":[-9.933,-24.315,-15.988],"0.83":[-9.636,-24.156,-16.04],"0.88":[-9.561,-24.107,-15.994],"0.92":[-9.616,-24.131,-15.98],"0.96":[-9.657,-24.192,-15.976]}},"karambit":{"rotation":{"0.0":[84.567,139.168,33.791],"0.04":[68.456,152.849,4.524],"0.08":[57.866,166.467,-8.145],"0.12":[45.762,170.597,-8.305],"0.17":[14.726,170.04,-3.69],"0.21":[-27.021,168.797,2.293],"0.25":[-80.246,168.325,8.706],"0.29":[-141.367,173.626,11.403],"0.33":[-201.394,184.653,8.911],"0.38":[-244.079,191.865,7.701],"0.42":[-270.476,196.159,5.235],"0.46":[-294.841,192.901,-1.049],"0.5":[-315.102,183.498,-5.984],"0.54":[-328.706,179.829,-10.56],"0.58":[-332.003,181.385,-11.874],"0.62":[-320.232,185.59,-7.205],"0.67":[-313.869,189.01,-5.642],"0.71":[-313.567,190.249,-3.731],"0.75":[-314.44,189.276,-2.743],"0.79":[-314.292,188.539,-3.271],"0.83":[-312.853,188.792,-3.834],"0.88":[-312.763,188.812,-3.857],"0.92":[-312.765,188.82,-3.861],"0.96":[-312.765,188.812,-3.864]},"position":{"0.0":{"post":[4.66785,13.59702,-6.58021],"lerp_mode":"catmullrom"},"0.41":{"post":[4.09257,13.4303,-6.04414],"lerp_mode":"catmullrom"},"0.67":{"post":[5.63783,13.31146,-6.21811],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[100.29,-19.045,52.857],"0.04":[99.948,-19.472,55.174],"0.08":[102.299,-19.39,62.847],"0.12":[106.354,-18.805,73.855],"0.17":[111.285,-16.775,84.23],"0.21":[116.477,-13.214,90.273],"0.25":[121.97,-6.583,90.364],"0.29":[126.293,3.392,87.701],"0.33":[128.447,12.861,86.396],"0.38":[130.299,20.191,86.721],"0.42":[132.192,26.058,87.545],"0.46":[133.478,30.274,88.585],"0.5":[133.91,32.84,89.535],"0.54":[134.243,34.42,90.46],"0.58":[134.571,35.268,91.414],"0.62":[134.9,35.663,92.414],"0.67":[135.295,35.796,93.482],"0.71":[135.696,35.72,94.434],"0.75":[136.037,35.524,95.183],"0.79":[136.297,35.293,95.722],"0.83":[136.483,35.074,96.171],"0.88":[136.585,34.938,96.505],"0.92":[136.629,34.874,96.756],"0.96":[136.653,34.857,96.878]},"position":{"0.0":[20.042,-34.992,-21.305],"0.04":[20.059,-35.006,-20.765],"0.08":[19.923,-34.702,-20.34],"0.12":[19.675,-34.189,-19.984],"0.17":[19.302,-33.521,-19.769],"0.21":[18.775,-32.734,-19.704],"0.25":[17.936,-31.65,-19.797],"0.29":[16.895,-30.335,-19.964],"0.33":[16.147,-29.207,-20.104],"0.38":[15.699,-28.263,-20.187],"0.42":[15.372,-27.378,-20.237],"0.46":[15.144,-26.58,-20.248],"0.5":[15.045,-25.886,-20.227],"0.54":[15.049,-25.362,-20.175],"0.58":[15.108,-25.061,-20.105],"0.62":[15.181,-24.941,-20.024],"0.67":[15.231,-24.948,-19.951],"0.71":[15.27,-25.006,-19.887],"0.75":[15.303,-25.081,-19.843],"0.79":[15.329,-25.146,-19.82],"0.83":[15.353,-25.172,-19.798],"0.88":[15.369,-25.19,-19.789],"0.92":[15.371,-25.2,-19.784],"0.96":[15.387,-25.204,-19.777]}},"righthand":{"rotation":[0,0,0],"position":[-0.6,3,0],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_deploy1"}}},"melee_1":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[91.036,-40.768,-79.596],"0.04":[135.525,-41.48,-96.564],"0.08":[171.85,-34.721,-107.691],"0.12":[202.982,-14.4,-122.558],"0.17":[211.408,5.373,-124.034],"0.21":[199.118,4.875,-123.614],"0.25":[181.878,0.266,-122.52],"0.29":[166.304,-2.407,-120.701],"0.33":[160.822,-1.726,-118.85],"0.38":[156.476,-1.965,-116.893],"0.42":[149.93,-5.518,-115.428],"0.46":[142.067,-11.4,-113.28],"0.5":[135.17,-10.666,-113.583],"0.54":[128.729,-8.801,-115.43],"0.58":[122.462,-7.656,-117.755],"0.62":[117.27,-7.849,-119.454],"0.67":[116.388,-14.422,-119.47],"0.71":[115.569,-19.656,-117.099],"0.75":[114.292,-23.222,-113.627],"0.79":[112.754,-25.799,-109.646],"0.83":[111.089,-28.021,-104.729],"0.88":[109.85,-29.731,-100.078],"0.92":[109.078,-30.85,-96.553],"0.96":[109.114,-31.179,-95.176],"1.0":[110.178,-30.773,-96.05],"1.04":[111.36,-30.291,-97.295],"1.08":[112.145,-29.955,-98.124],"1.12":[112.296,-29.891,-98.255]},"position":{"0.0":[-17.472,-24.587,-13.685],"0.04":[-11.734,-22,-17.682],"0.08":[-5.23,-21.601,-19.23],"0.12":[2.412,-23.226,-17.86],"0.17":[12.844,-25.928,-14.317],"0.21":[18.411,-28.6,-11.784],"0.25":[18.584,-31.069,-10.67],"0.29":[15.432,-32.573,-10.506],"0.33":[10.974,-32.566,-10.477],"0.38":[6.548,-32.557,-10.481],"0.42":[2.991,-32.149,-10.761],"0.46":[-0.513,-30.839,-11.652],"0.5":[-3.65,-29.311,-11.968],"0.54":[-5.903,-28.069,-12.054],"0.58":[-7.754,-27.04,-12.347],"0.62":[-9.106,-26.118,-13.017],"0.67":[-9.816,-25.384,-13.803],"0.71":[-10.347,-24.841,-14.533],"0.75":[-10.717,-24.458,-15.094],"0.79":[-10.928,-24.195,-15.506],"0.83":[-10.957,-24.049,-15.787],"0.88":[-10.778,-23.991,-15.959],"0.92":[-10.449,-24.009,-16.028],"0.96":[-10.089,-24.09,-16.023],"1.0":[-9.857,-24.179,-15.994],"1.04":[-9.734,-24.204,-15.968],"1.08":[-9.673,-24.195,-15.967],"1.12":[-9.657,-24.192,-15.976]}},"karambit":{"rotation":{"0.0":[48.99,-176.006,-12.253],"0.04":[38.388,-176.687,-11.894],"0.08":[24.599,-178.902,-12.013],"0.12":[23.524,-179.394,-12.146],"0.17":[23.963,-179.266,-12.121],"0.21":[27.396,-178.271,-11.905],"0.25":[33.303,-176.802,-11.731],"0.29":[38.901,-175.963,-11.784],"0.33":[42.595,-177.402,-10.97],"0.38":[45.194,-180.449,-9.414],"0.42":[46.675,-183.303,-8.447],"0.46":[47.158,-184.072,-8.401],"0.5":[47.181,-181.437,-8.199],"0.54":[47.228,-177.056,-6.886],"0.58":[47.256,-173.026,-4.962],"0.62":[47.235,-171.182,-3.862],"0.67":[47.224,-171.193,-3.867],"0.71":[47.223,-171.185,-3.857],"0.75":[47.22,-171.183,-3.86],"0.79":[47.24,-171.182,-3.862],"0.83":[47.237,-171.189,-3.859],"0.88":[47.227,-171.2,-3.853],"0.92":[47.237,-171.188,-3.86],"0.96":[47.234,-171.186,-3.86],"1.0":[47.232,-171.181,-3.858],"1.04":[47.237,-171.187,-3.86],"1.08":[47.242,-171.19,-3.859],"1.12":[47.235,-171.188,-3.864]},"position":[5.63783,13.31146,-6.21811]},"lefthand":{"rotation":{"0.0":[111.55,-4.629,56.512],"0.04":[107.894,-12.419,53.646],"0.08":[102.485,-17.681,52.779],"0.12":[99.332,-19.464,52.873],"0.17":[100.389,-19.458,56.865],"0.21":[103.162,-19.227,65.588],"0.25":[107.271,-18.37,76.134],"0.29":[112.099,-16.525,85.758],"0.33":[116.93,-12.899,90.755],"0.38":[122.093,-6.384,90.329],"0.42":[126.147,3.042,87.786],"0.46":[128.265,12.323,86.326],"0.5":[130.012,19.277,86.645],"0.54":[131.835,25.002,87.365],"0.58":[133.195,29.289,88.31],"0.62":[133.812,32.194,89.263],"0.67":[134.122,33.959,90.129],"0.71":[134.423,34.984,91.004],"0.75":[134.743,35.508,91.921],"0.79":[135.067,35.756,92.899],"0.83":[135.465,35.796,93.9],"0.88":[135.837,35.659,94.754],"0.92":[136.163,35.411,95.46],"0.96":[136.419,35.135,96.041],"1.0":[136.579,34.942,96.463],"1.04":[136.63,34.874,96.743],"1.08":[136.634,34.854,96.855],"1.12":[136.653,34.857,96.878]},"position":{"0.0":[18.885,-32.73,-23.336],"0.04":[19.436,-33.82,-22.453],"0.08":[19.841,-34.545,-21.484],"0.12":[20.039,-34.908,-20.856],"0.17":[20.018,-34.888,-20.564],"0.21":[19.868,-34.591,-20.258],"0.25":[19.602,-34.061,-19.944],"0.29":[19.25,-33.418,-19.732],"0.33":[18.734,-32.664,-19.701],"0.38":[17.909,-31.624,-19.807],"0.42":[16.929,-30.387,-19.968],"0.46":[16.183,-29.275,-20.095],"0.5":[15.751,-28.395,-20.176],"0.54":[15.424,-27.553,-20.224],"0.58":[15.193,-26.776,-20.247],"0.62":[15.061,-26.086,-20.235],"0.67":[15.039,-25.528,-20.194],"0.71":[15.076,-25.16,-20.136],"0.75":[15.139,-24.986,-20.067],"0.79":[15.196,-24.931,-19.989],"0.83":[15.245,-24.969,-19.923],"0.88":[15.287,-25.034,-19.868],"0.92":[15.322,-25.115,-19.83],"0.96":[15.349,-25.166,-19.807],"1.0":[15.369,-25.189,-19.791],"1.04":[15.372,-25.2,-19.787],"1.08":[15.384,-25.203,-19.779],"1.12":[15.387,-25.204,-19.777]}},"righthand":{"rotation":[0,0,0],"position":[-0.6,3,0],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"melee_2":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[60.307,1.987,80.568],"0.04":[86.801,3.794,74.414],"0.08":[119.679,12.766,72.929],"0.12":[150.226,23.349,78.89],"0.17":[181.802,31.344,93.528],"0.21":[213.138,31.713,112.869],"0.25":[231.104,20.863,119.161],"0.29":[219.965,10.899,104.341],"0.33":[195.564,-10.3,89.01],"0.38":[168.69,-38.682,95.823],"0.42":[117.943,-53.393,141.451],"0.46":[79.754,-37.324,186.43],"0.5":[76.232,-19.516,210.564],"0.54":[83.34,-11.672,229.631],"0.58":[91.247,-10.756,242.534],"0.62":[97.931,-13.304,250.54],"0.67":[103.009,-17.289,254.651],"0.71":[106.837,-21.398,256.85],"0.75":[109.862,-24.862,258.131],"0.79":[112.259,-27.487,258.906],"0.83":[113.793,-29.139,259.504],"0.88":[114.405,-30.052,260.094],"0.92":[114.213,-30.346,260.651],"0.96":[113.669,-30.291,261.026],"1.0":[113.014,-30.158,261.406],"1.04":[112.522,-30.057,261.655],"1.08":[112.335,-29.946,261.745],"1.12":[112.308,-29.887,261.758]},"position":{"0.0":[6.962,-28.034,-13.545],"0.04":[3.58,-25.072,-14.756],"0.08":[-3.446,-21.103,-15.302],"0.12":[-11.224,-21.247,-15.001],"0.17":[-19.281,-24.291,-13.856],"0.21":[-25.696,-27.795,-12.659],"0.25":[-27.043,-30.73,-11.987],"0.29":[-24.478,-32.169,-12.323],"0.33":[-22.82,-31.897,-12.962],"0.38":[-21.061,-31.419,-13.628],"0.42":[-19.52,-30.801,-14.323],"0.46":[-18.169,-30.113,-14.994],"0.5":[-16.765,-29.299,-15.642],"0.54":[-15.368,-28.296,-16.237],"0.58":[-13.993,-27.292,-16.609],"0.62":[-12.642,-26.4,-16.606],"0.67":[-11.537,-25.575,-16.45],"0.71":[-10.703,-24.907,-16.264],"0.75":[-10.085,-24.453,-16.106],"0.79":[-9.697,-24.164,-15.976],"0.83":[-9.541,-24.031,-15.897],"0.88":[-9.515,-24.005,-15.871],"0.92":[-9.544,-24.045,-15.879],"0.96":[-9.587,-24.102,-15.905],"1.0":[-9.623,-24.152,-15.938],"1.04":[-9.641,-24.177,-15.967],"1.08":[-9.652,-24.191,-15.98],"1.12":[-9.654,-24.193,-15.975]}},"karambit":{"rotation":{"0.0":[35.821,-178.956,-19.859],"0.04":[35.815,-178.963,-19.858],"0.08":[35.788,-178.974,-19.87],"0.12":[35.805,-178.961,-19.874],"0.17":[35.809,-178.96,-19.865],"0.21":[35.8,-178.961,-19.878],"0.25":[35.795,-178.986,-19.889],"0.29":[35.799,-178.972,-19.88],"0.33":[35.806,-178.962,-19.851],"0.38":[36.239,-178.667,-19.255],"0.42":[38.245,-177.303,-16.431],"0.46":[41.513,-175.068,-11.849],"0.5":[44.802,-172.835,-7.27],"0.54":[46.808,-171.478,-4.463],"0.58":[47.229,-171.194,-3.856],"0.62":[47.228,-171.191,-3.857],"0.67":[47.228,-171.193,-3.852],"0.71":[47.228,-171.194,-3.853],"0.75":[47.236,-171.198,-3.858],"0.79":[47.223,-171.186,-3.859],"0.83":[47.238,-171.19,-3.856],"0.88":[47.236,-171.189,-3.853],"0.92":[47.248,-171.188,-3.86],"0.96":[47.241,-171.178,-3.864],"1.0":[47.241,-171.192,-3.854],"1.04":[47.237,-171.186,-3.858],"1.08":[47.236,-171.179,-3.862],"1.12":[47.24,-171.182,-3.862]},"position":[5.63783,13.31146,-6.21811]},"lefthand":{"rotation":{"0.0":[111.548,-4.646,56.503],"0.04":[107.9,-12.437,53.656],"0.08":[102.488,-17.689,52.786],"0.12":[99.34,-19.462,52.888],"0.17":[100.433,-19.481,56.835],"0.21":[103.204,-19.261,65.555],"0.25":[107.298,-18.397,76.1],"0.29":[112.122,-16.513,85.755],"0.33":[116.943,-12.911,90.735],"0.38":[122.097,-6.399,90.292],"0.42":[126.15,3.039,87.775],"0.46":[128.264,12.317,86.314],"0.5":[129.998,19.273,86.644],"0.54":[131.829,25.002,87.368],"0.58":[133.191,29.291,88.303],"0.62":[133.812,32.194,89.263],"0.67":[134.122,33.959,90.129],"0.71":[134.423,34.984,91.004],"0.75":[134.743,35.508,91.921],"0.79":[135.067,35.756,92.899],"0.83":[135.465,35.796,93.9],"0.88":[135.837,35.659,94.754],"0.92":[136.163,35.411,95.46],"0.96":[136.419,35.135,96.041],"1.0":[136.579,34.942,96.463],"1.04":[136.63,34.874,96.743],"1.08":[136.634,34.854,96.855],"1.12":[136.653,34.857,96.878]},"position":{"0.0":[18.884,-32.718,-23.308],"0.04":[19.472,-33.918,-22.579],"0.08":[19.906,-34.741,-21.731],"0.12":[20.093,-35.081,-21.058],"0.17":[20.035,-34.943,-20.627],"0.21":[19.869,-34.583,-20.244],"0.25":[19.606,-34.056,-19.934],"0.29":[19.245,-33.414,-19.732],"0.33":[18.737,-32.665,-19.712],"0.38":[17.913,-31.625,-19.819],"0.42":[16.93,-30.387,-19.968],"0.46":[16.172,-29.277,-20.095],"0.5":[15.757,-28.391,-20.178],"0.54":[15.43,-27.549,-20.229],"0.58":[15.197,-26.778,-20.25],"0.62":[15.061,-26.086,-20.235],"0.67":[15.039,-25.528,-20.194],"0.71":[15.076,-25.16,-20.136],"0.75":[15.139,-24.986,-20.067],"0.79":[15.196,-24.931,-19.989],"0.83":[15.245,-24.969,-19.923],"0.88":[15.287,-25.034,-19.868],"0.92":[15.322,-25.115,-19.83],"0.96":[15.349,-25.166,-19.807],"1.0":[15.369,-25.189,-19.791],"1.04":[15.372,-25.2,-19.787],"1.08":[15.384,-25.203,-19.779],"1.12":[15.387,-25.204,-19.777]}},"righthand":{"rotation":[0,0,0],"position":[-0.6,3,0],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash2"}}},"inspect":{"loop":true,"animation_length":4.85,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[114.219,-25.312,-108.107],"0.04":[115.018,-16.021,-126.831],"0.08":[111.335,-7.004,-144.756],"0.12":[101.686,1.106,-155.925],"0.17":[86.74,7.917,-163.656],"0.21":[73.689,9.802,-172.143],"0.25":[67.592,7.288,-180.05],"0.29":[74.215,1.436,-187.894],"0.33":[88.589,-2.232,-196.376],"0.38":[100.463,-1.589,-204.405],"0.42":[108.618,2.106,-212.015],"0.46":[112.874,6.123,-216.7],"0.5":[111.7,6.779,-216.265],"0.54":[108.332,6.036,-213.791],"0.58":[105.187,5.635,-211.11],"0.62":[102.089,5.551,-208.227],"0.67":[99.371,5.788,-207.435],"0.71":[96.952,5.758,-208.571],"0.75":[95.476,6.209,-211.365],"0.79":[95.331,8.85,-218.853],"0.83":[95.325,13.345,-228.557],"0.88":[95.469,18.767,-235.84],"0.92":[95.158,24.686,-241.645],"0.96":[94.092,30.928,-246.841],"1.0":[92.779,36.321,-250.788],"1.04":[91.871,40.593,-253.227],"1.08":[90.981,43.839,-255.316],"1.12":[90.061,46.035,-257.097],"1.17":[89.225,46.424,-258.168],"1.21":[88.521,46.553,-258.979],"1.25":[87.878,46.369,-259.604],"1.29":[87.261,45.922,-260.118],"1.33":[86.753,45.376,-260.544],"1.38":[86.368,44.822,-260.847],"1.42":[86.07,44.305,-261.1],"1.46":[85.824,43.821,-261.312],"1.5":[85.693,43.353,-261.46],"1.54":[85.655,42.885,-261.536],"1.58":[85.704,42.433,-261.559],"1.62":[85.822,41.971,-261.542],"1.67":[85.986,41.49,-261.485],"1.71":[86.176,41.038,-261.412],"1.75":[86.391,40.656,-261.334],"1.79":[86.637,40.277,-261.244],"1.83":[86.902,39.894,-261.141],"1.88":[87.163,39.529,-261.056],"1.92":[87.427,39.177,-260.959],"1.96":[87.699,38.85,-260.84],"2.0":[87.991,38.542,-260.714],"2.04":[88.246,38.283,-260.593],"2.08":[88.499,38.073,-260.436],"2.12":[88.832,37.902,-260.215],"2.17":[89.172,37.789,-259.961],"2.21":[89.527,37.694,-259.694],"2.25":[89.85,37.624,-259.411],"2.29":[90.157,37.583,-259.106],"2.33":[90.373,37.564,-258.848],"2.38":[90.509,37.558,-258.618],"2.42":[90.523,37.622,-258.425],"2.46":[90.428,37.77,-258.285],"2.5":[90.232,37.95,-258.23],"2.54":[89.979,38.174,-258.21],"2.58":[89.701,38.419,-258.227],"2.62":[89.455,38.649,-258.213],"2.67":[89.262,38.879,-258.189],"2.71":[89.075,39.122,-258.166],"2.75":[88.864,39.388,-258.162],"2.79":[88.631,39.652,-258.204],"2.83":[88.41,39.926,-258.257],"2.88":[88.198,40.192,-258.324],"2.92":[87.992,40.444,-258.44],"2.96":[87.818,40.669,-258.557],"3.0":[87.626,40.857,-258.798],"3.04":[87.419,41.035,-259.131],"3.08":[87.183,41.184,-259.524],"3.12":[86.965,41.31,-259.884],"3.17":[86.738,41.398,-260.271],"3.21":[86.493,41.432,-260.667],"3.25":[86.281,41.384,-261.006],"3.29":[86.15,41.241,-261.242],"3.33":[86.124,41.051,-261.38],"3.38":[86.199,40.91,-261.406],"3.42":[87.001,40.736,-260.594],"3.46":[89.577,40.188,-257.219],"3.5":[95.248,38.599,-249.511],"3.54":[103.541,34.94,-237.664],"3.58":[111.596,28.143,-224.744],"3.62":[118.844,15.435,-210.796],"3.67":[119.778,-5.751,-195.975],"3.71":[111.762,-23.531,-183.957],"3.75":[104.07,-31.841,-174.801],"3.79":[99.387,-33.032,-166.676],"3.83":[107.199,-30.545,-161.666],"3.88":[116.239,-28.78,-154.358],"3.92":[120.034,-29.233,-145.123],"3.96":[121.421,-29.2,-136.694],"4.0":[121.05,-27.841,-135.107],"4.04":[114.874,-25.989,-143.754],"4.08":[109.574,-27.787,-154.53],"4.12":[114.589,-31.1,-157.831],"4.17":[121.22,-33.587,-157.111],"4.21":[118.682,-33.83,-142.982],"4.25":[117.167,-34.435,-127.063],"4.29":[117.888,-36.3,-115.761],"4.33":[117.907,-33.15,-108.64],"4.38":[117.828,-28.29,-103.174],"4.42":[116.648,-27.579,-101.025],"4.46":[113.067,-28.925,-99.315],"4.5":[109.55,-30.069,-97.725],"4.54":[109.323,-30.023,-98.256],"4.58":[111.504,-29.245,-100.282],"4.62":[112.348,-29.261,-99.995],"4.67":[112.318,-29.68,-98.79],"4.71":[112.306,-29.799,-98.465],"4.75":[112.297,-29.856,-98.303],"4.79":[112.3,-29.889,-98.254],"4.83":[112.296,-29.891,-98.255]},"position":{"0.0":[-9.634,-24.497,-15.81],"0.04":[-9.577,-25.071,-15.491],"0.08":[-9.528,-25.527,-15.226],"0.12":[-9.427,-25.726,-15.065],"0.17":[-9.248,-25.802,-14.928],"0.21":[-9.178,-25.74,-14.908],"0.25":[-9.401,-25.47,-15.122],"0.29":[-10.397,-24.666,-15.945],"0.33":[-12.1,-23.344,-17.373],"0.38":[-13.271,-22.443,-18.342],"0.42":[-13.835,-22.012,-18.839],"0.46":[-14.16,-21.84,-19.032],"0.5":[-14.331,-21.884,-18.817],"0.54":[-14.344,-22.149,-18.384],"0.58":[-14.224,-22.78,-17.907],"0.62":[-13.963,-23.75,-17.391],"0.67":[-13.535,-24.336,-16.91],"0.71":[-12.928,-24.45,-16.495],"0.75":[-12.289,-24.357,-16.11],"0.79":[-11.787,-24.157,-15.776],"0.83":[-11.487,-23.753,-15.537],"0.88":[-11.386,-23.154,-15.41],"0.92":[-11.324,-22.668,-15.322],"0.96":[-11.258,-22.322,-15.245],"1.0":[-11.173,-22.065,-15.203],"1.04":[-11.08,-21.875,-15.183],"1.08":[-10.997,-21.743,-15.172],"1.12":[-10.947,-21.668,-15.179],"1.17":[-10.936,-21.615,-15.186],"1.21":[-10.944,-21.589,-15.201],"1.25":[-10.948,-21.555,-15.213],"1.29":[-10.954,-21.5,-15.231],"1.33":[-10.956,-21.442,-15.239],"1.38":[-10.962,-21.384,-15.256],"1.42":[-10.962,-21.307,-15.256],"1.46":[-10.965,-21.215,-15.262],"1.5":[-10.968,-21.136,-15.267],"1.54":[-10.967,-21.068,-15.271],"1.58":[-10.964,-21.007,-15.277],"1.62":[-10.969,-20.961,-15.285],"1.67":[-10.961,-20.928,-15.291],"1.71":[-10.962,-20.901,-15.296],"1.75":[-10.957,-20.887,-15.301],"1.79":[-10.961,-20.877,-15.305],"1.83":[-10.96,-20.859,-15.318],"1.88":[-10.959,-20.852,-15.321],"1.92":[-10.957,-20.846,-15.324],"1.96":[-10.957,-20.837,-15.332],"2.0":[-10.956,-20.838,-15.335],"2.04":[-10.953,-20.838,-15.342],"2.08":[-10.949,-20.838,-15.343],"2.12":[-10.951,-20.838,-15.346],"2.17":[-10.951,-20.839,-15.346],"2.21":[-10.952,-20.839,-15.348],"2.25":[-10.952,-20.839,-15.35],"2.29":[-10.945,-20.84,-15.352],"2.33":[-10.945,-20.84,-15.352],"2.38":[-10.946,-20.844,-15.353],"2.42":[-10.946,-20.848,-15.354],"2.46":[-10.947,-20.848,-15.356],"2.5":[-10.948,-20.849,-15.355],"2.54":[-10.949,-20.853,-15.352],"2.58":[-10.951,-20.856,-15.354],"2.62":[-10.952,-20.857,-15.349],"2.67":[-10.953,-20.865,-15.351],"2.71":[-10.954,-20.869,-15.349],"2.75":[-10.954,-20.873,-15.347],"2.79":[-10.955,-20.88,-15.34],"2.83":[-10.957,-20.882,-15.333],"2.88":[-10.96,-20.889,-15.331],"2.92":[-10.965,-20.893,-15.322],"2.96":[-10.965,-20.896,-15.322],"3.0":[-10.967,-20.905,-15.313],"3.04":[-10.967,-20.915,-15.305],"3.08":[-10.968,-20.918,-15.296],"3.12":[-10.968,-20.926,-15.296],"3.17":[-10.968,-20.928,-15.289],"3.21":[-10.969,-20.934,-15.287],"3.25":[-10.969,-20.933,-15.286],"3.29":[-10.965,-20.917,-15.288],"3.33":[-10.961,-20.906,-15.289],"3.38":[-10.959,-20.896,-15.295],"3.42":[-10.94,-20.919,-15.306],"3.46":[-10.874,-20.991,-15.33],"3.5":[-10.79,-21.237,-15.361],"3.54":[-10.718,-21.566,-15.408],"3.58":[-10.785,-21.859,-15.458],"3.62":[-11.174,-22.073,-15.549],"3.67":[-12.379,-22.224,-15.784],"3.71":[-14.231,-22.223,-16.124],"3.75":[-15.517,-21.96,-16.471],"3.79":[-15.842,-21.325,-16.963],"3.83":[-15.391,-20.615,-18.453],"3.88":[-14.897,-20.399,-19.105],"3.92":[-14.637,-20.636,-18.923],"3.96":[-14.539,-21.264,-17.791],"4.0":[-14.733,-22.125,-16.713],"4.04":[-14.971,-22.872,-16.384],"4.08":[-15.041,-23.051,-16.377],"4.12":[-15.024,-22.807,-16.498],"4.17":[-14.954,-22.288,-16.794],"4.21":[-14.822,-21.879,-16.998],"4.25":[-14.636,-21.73,-17.042],"4.29":[-14.262,-21.86,-16.889],"4.33":[-13.546,-22.297,-16.499],"4.38":[-12.697,-22.885,-16.057],"4.42":[-11.868,-23.563,-15.809],"4.46":[-11.126,-24.22,-15.762],"4.5":[-10.49,-24.459,-15.867],"4.54":[-10.006,-24.333,-15.979],"4.58":[-9.681,-24.176,-16.027],"4.62":[-9.548,-24.106,-16.005],"4.67":[-9.578,-24.116,-15.97],"4.71":[-9.615,-24.149,-15.971],"4.75":[-9.646,-24.175,-15.975],"4.79":[-9.657,-24.192,-15.976],"4.83":[-9.657,-24.192,-15.976]}},"karambit":{"rotation":{"0.0":[48.52,-173.818,-4.222],"0.04":[51.06,-179,-4.963],"0.08":[53.551,-184.096,-5.776],"0.12":[55.471,-188.037,-6.639],"0.17":[57.177,-191.495,-7.611],"0.21":[58.186,-193.572,-8.239],"0.25":[54.901,-193.937,-7.942],"0.29":[41.28,-193.645,-6.194],"0.33":[17.816,-192.874,-3.308],"0.38":[-9.522,-191.79,-0.105],"0.42":[-43.093,-189.812,3.62],"0.46":[-87.207,-186.903,8.372],"0.5":[-127.645,-184.447,11.72],"0.54":[-159.308,-183.351,13.211],"0.58":[-187.99,-182.705,13.631],"0.62":[-216.002,-182.096,13.24],"0.67":[-240.967,-181.818,10.933],"0.71":[-266.006,-181.548,4.917],"0.75":[-282.193,-181.126,-1.842],"0.79":[-288.569,-181.122,-5.873],"0.83":[-291.018,-177.86,-6.415],"0.88":[-291.33,-173.981,-5.863],"0.92":[-290.105,-171.277,-4.45],"0.96":[-288.62,-168.56,-3.034],"1.0":[-287.573,-166.643,-2.023],"1.04":[-286.856,-166.08,-1.701],"1.08":[-286.364,-166.025,-1.564],"1.12":[-286.04,-166.076,-1.43],"1.17":[-285.939,-166.544,-1.258],"1.21":[-285.907,-167.108,-1.077],"1.25":[-285.936,-167.427,-0.913],"1.29":[-286.038,-167.59,-0.756],"1.33":[-286.192,-167.56,-0.626],"1.38":[-286.385,-167.437,-0.546],"1.42":[-286.581,-167.309,-0.464],"1.46":[-286.784,-167.203,-0.402],"1.5":[-286.877,-167.101,-0.323],"1.54":[-286.911,-167.04,-0.282],"1.58":[-286.941,-167.03,-0.264],"1.62":[-286.958,-167.018,-0.259],"1.67":[-286.967,-167.001,-0.25],"1.71":[-286.964,-166.93,-0.218],"1.75":[-286.962,-166.859,-0.181],"1.79":[-286.961,-166.851,-0.159],"1.83":[-286.961,-166.837,-0.15],"1.88":[-286.954,-166.825,-0.145],"1.92":[-286.95,-166.816,-0.125],"1.96":[-286.945,-166.823,-0.114],"2.0":[-286.952,-166.821,-0.111],"2.04":[-286.959,-166.824,-0.102],"2.08":[-286.977,-166.842,-0.099],"2.12":[-286.988,-166.874,-0.102],"2.17":[-287.012,-166.918,-0.104],"2.21":[-287.031,-166.961,-0.116],"2.25":[-287.061,-167.017,-0.132],"2.29":[-287.09,-167.094,-0.138],"2.33":[-287.105,-167.139,-0.149],"2.38":[-287.131,-167.181,-0.168],"2.42":[-287.149,-167.237,-0.187],"2.46":[-287.174,-167.288,-0.19],"2.5":[-287.176,-167.316,-0.221],"2.54":[-287.19,-167.356,-0.243],"2.58":[-287.193,-167.386,-0.259],"2.62":[-287.205,-167.424,-0.296],"2.67":[-287.208,-167.439,-0.301],"2.71":[-287.216,-167.463,-0.309],"2.75":[-287.222,-167.482,-0.325],"2.79":[-287.218,-167.485,-0.336],"2.83":[-287.223,-167.496,-0.349],"2.88":[-287.219,-167.493,-0.358],"2.92":[-287.209,-167.469,-0.359],"2.96":[-287.194,-167.453,-0.362],"3.0":[-287.183,-167.392,-0.356],"3.04":[-287.145,-167.314,-0.334],"3.08":[-287.111,-167.227,-0.305],"3.12":[-287.083,-167.14,-0.284],"3.17":[-287.043,-167.064,-0.263],"3.21":[-287.009,-166.99,-0.249],"3.25":[-286.98,-166.924,-0.238],"3.29":[-286.976,-166.892,-0.22],"3.33":[-286.965,-166.875,-0.2],"3.38":[-286.974,-166.84,-0.176],"3.42":[-286.99,-167.018,-0.252],"3.46":[-287.084,-167.213,-0.601],"3.5":[-287.102,-167.423,-1.211],"3.54":[-287.097,-169.195,-1.682],"3.58":[-287.279,-177.264,-1.443],"3.62":[-288.073,-188.346,-1.212],"3.67":[-289.945,-194.253,-2.037],"3.71":[-292.212,-191.857,-4.132],"3.75":[-294.931,-186.292,-6.455],"3.79":[-300.158,-184.339,-8.285],"3.83":[-311.726,-184.82,-9.071],"3.88":[-337.23,-186.783,-7.265],"3.92":[-373.189,-190.34,-0.243],"3.96":[-419.485,-192.716,6.705],"4.0":[-475.766,-189.467,10.384],"4.04":[-534.718,-180.47,9.48],"4.08":[-585.542,-170.991,8.21],"4.12":[-616.873,-166.248,7.261],"4.17":[-639.257,-163.939,3.585],"4.21":[-661.522,-170.637,-2.361],"4.25":[-679.132,-177.973,-6.928],"4.29":[-691.722,-180.759,-12.088],"4.33":[-691.121,-178.175,-11.46],"4.38":[-679.717,-174.124,-7.178],"4.42":[-674.058,-171.008,-5.776],"4.46":[-673.385,-169.54,-3.657],"4.5":[-674.3,-170.285,-2.639],"4.54":[-674.38,-171.455,-3.153],"4.58":[-673.06,-171.245,-3.751],"4.62":[-672.771,-171.184,-3.855],"4.67":[-672.754,-171.179,-3.86],"4.71":[-672.758,-171.186,-3.858],"4.75":[-672.761,-171.19,-3.858],"4.79":[-672.765,-171.188,-3.864],"4.83":[-672.765,-171.188,-3.864]},"position":{"0.0":{"post":[5.63783,13.31146,-6.21811],"lerp_mode":"catmullrom"},"0.5":{"post":[6.23464,13.24346,-4.55314],"lerp_mode":"catmullrom"},"0.8":{"post":[3.69575,13.32905,-4.6677],"lerp_mode":"catmullrom"},"3.58":{"post":[3.69575,13.32905,-4.6677],"lerp_mode":"catmullrom"},"4.11":{"post":[4.31924,13.4303,-6.04414],"lerp_mode":"catmullrom"},"4.43":{"post":[5.63783,13.31146,-6.21811],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[137.234,28.827,94.952],"0.04":[136.823,16.689,91.231],"0.08":[134.297,4.432,88.777],"0.12":[130.038,-5.296,89.327],"0.17":[123.805,-13.119,92.968],"0.21":[116.731,-18.257,98.526],"0.25":[111.087,-20.714,104.378],"0.29":[108.896,-21.447,107.627],"0.33":[108.897,-21.446,107.632],"0.38":[108.9,-21.441,107.63],"0.42":[108.887,-21.437,107.629],"0.46":[108.904,-21.434,107.625],"0.5":[108.916,-21.442,107.602],"0.54":[108.919,-21.44,107.589],"0.58":[108.92,-21.434,107.592],"0.62":[108.943,-21.442,107.575],"0.67":[108.959,-21.432,107.554],"0.71":[108.954,-21.432,107.55],"0.75":[108.97,-21.429,107.526],"0.79":[108.975,-21.414,107.51],"0.83":[108.997,-21.408,107.495],"0.88":[109.015,-21.406,107.472],"0.92":[109.031,-21.408,107.447],"0.96":[109.057,-21.418,107.426],"1.0":[109.064,-21.406,107.408],"1.04":[109.082,-21.393,107.38],"1.08":[109.093,-21.386,107.358],"1.12":[109.131,-21.394,107.319],"1.17":[109.153,-21.381,107.282],"1.21":[109.165,-21.37,107.267],"1.25":[109.184,-21.368,107.243],"1.29":[109.212,-21.352,107.212],"1.33":[109.235,-21.365,107.176],"1.38":[109.252,-21.352,107.152],"1.42":[109.287,-21.338,107.101],"1.46":[109.306,-21.344,107.083],"1.5":[109.332,-21.325,107.044],"1.54":[109.368,-21.319,107.004],"1.58":[109.39,-21.315,106.953],"1.62":[109.406,-21.304,106.942],"1.67":[109.437,-21.296,106.9],"1.71":[109.474,-21.301,106.857],"1.75":[109.512,-21.292,106.824],"1.79":[109.535,-21.275,106.786],"1.83":[109.552,-21.266,106.749],"1.88":[109.584,-21.259,106.71],"1.92":[109.62,-21.251,106.674],"1.96":[109.656,-21.243,106.626],"2.0":[109.671,-21.236,106.587],"2.04":[109.704,-21.226,106.55],"2.08":[109.733,-21.221,106.503],"2.12":[109.765,-21.205,106.465],"2.17":[109.792,-21.194,106.428],"2.21":[109.821,-21.193,106.391],"2.25":[109.855,-21.187,106.345],"2.29":[109.883,-21.175,106.305],"2.33":[109.912,-21.166,106.267],"2.38":[109.951,-21.151,106.217],"2.42":[109.982,-21.143,106.188],"2.46":[110.011,-21.141,106.135],"2.5":[110.044,-21.134,106.09],"2.54":[110.068,-21.117,106.052],"2.58":[110.092,-21.105,106.024],"2.62":[110.119,-21.11,105.984],"2.67":[110.157,-21.088,105.941],"2.71":[110.184,-21.085,105.901],"2.75":[110.226,-21.08,105.849],"2.79":[110.25,-21.062,105.817],"2.83":[110.269,-21.068,105.783],"2.88":[110.299,-21.05,105.744],"2.92":[110.33,-21.029,105.709],"2.96":[110.331,-21.025,105.709],"3.0":[110.336,-21.026,105.704],"3.04":[110.331,-21.025,105.709],"3.08":[110.336,-21.026,105.704],"3.12":[110.328,-21.028,105.707],"3.17":[110.336,-21.028,105.704],"3.21":[110.331,-21.028,105.708],"3.25":[110.331,-21.025,105.709],"3.29":[110.331,-21.025,105.709],"3.33":[110.329,-21.028,105.708],"3.38":[110.331,-21.025,105.709],"3.42":[110.336,-21.026,105.704],"3.46":[110.338,-21.027,105.703],"3.5":[110.331,-21.025,105.709],"3.62":[110.331,-21.025,105.709],"3.67":[110.332,-21.025,105.708],"3.71":[110.332,-21.029,105.704],"3.75":[110.33,-21.027,105.708],"3.79":[110.338,-21.027,105.703],"3.83":[110.331,-21.025,105.709],"3.92":[110.331,-21.025,105.709],"3.96":[110.335,-21.03,105.701],"4.0":[113.023,-18.907,102.958],"4.04":[118.219,-13.337,97.492],"4.08":[123.12,-5.218,91.898],"4.12":[126.295,3.428,87.688],"4.17":[128.438,12.864,86.399],"4.21":[130.295,20.188,86.718],"4.25":[132.197,26.048,87.549],"4.29":[133.478,30.273,88.589],"4.33":[133.914,32.844,89.547],"4.38":[134.247,34.425,90.468],"4.42":[134.57,35.277,91.413],"4.46":[134.91,35.673,92.412],"4.5":[135.285,35.792,93.47],"4.54":[135.688,35.724,94.43],"4.58":[136.034,35.532,95.178],"4.62":[136.289,35.297,95.741],"4.67":[136.476,35.082,96.173],"4.71":[136.584,34.936,96.503],"4.75":[136.634,34.872,96.753],"4.79":[136.639,34.844,96.88],"4.83":[136.639,34.844,96.88]},"position":{"0.0":[16.058,-25.872,-19.204],"0.04":[17.451,-27.204,-18.052],"0.08":[18.886,-28.531,-16.893],"0.12":[20.054,-29.629,-15.878],"0.17":[21.129,-30.655,-14.925],"0.21":[21.832,-31.263,-14.344],"0.25":[21.928,-31.491,-14.344],"0.29":[21.837,-31.752,-14.609],"0.33":[21.787,-32.17,-14.905],"0.38":[21.734,-32.626,-15.225],"0.42":[21.688,-33.065,-15.535],"0.46":[21.637,-33.434,-15.791],"0.5":[21.623,-33.642,-15.94],"0.54":[21.614,-33.697,-15.974],"0.58":[21.614,-33.697,-15.974],"0.62":[21.613,-33.697,-15.974],"0.67":[21.613,-33.697,-15.973],"0.71":[21.614,-33.698,-15.973],"0.75":[21.614,-33.698,-15.973],"0.79":[21.616,-33.697,-15.974],"0.83":[21.616,-33.697,-15.974],"0.88":[21.615,-33.698,-15.973],"0.92":[21.614,-33.699,-15.973],"0.96":[21.614,-33.7,-15.972],"1.0":[21.615,-33.7,-15.972],"1.04":[21.615,-33.7,-15.972],"1.08":[21.616,-33.701,-15.972],"1.12":[21.615,-33.703,-15.97],"1.17":[21.615,-33.703,-15.97],"1.21":[21.617,-33.703,-15.971],"1.25":[21.617,-33.704,-15.97],"1.29":[21.618,-33.704,-15.97],"1.33":[21.617,-33.706,-15.969],"1.38":[21.618,-33.706,-15.969],"1.42":[21.618,-33.707,-15.968],"1.46":[21.618,-33.709,-15.967],"1.5":[21.619,-33.708,-15.968],"1.54":[21.618,-33.713,-15.967],"1.58":[21.618,-33.718,-15.966],"1.62":[21.62,-33.719,-15.974],"1.67":[21.62,-33.719,-15.973],"1.71":[21.62,-33.721,-15.972],"1.75":[21.619,-33.722,-15.972],"1.79":[21.62,-33.722,-15.972],"1.83":[21.621,-33.723,-15.971],"1.88":[21.615,-33.724,-15.97],"1.92":[21.606,-33.726,-15.97],"1.96":[21.607,-33.726,-15.969],"2.0":[21.607,-33.728,-15.968],"2.04":[21.608,-33.729,-15.968],"2.08":[21.609,-33.731,-15.967],"2.12":[21.61,-33.731,-15.967],"2.17":[21.61,-33.731,-15.966],"2.21":[21.61,-33.733,-15.966],"2.25":[21.61,-33.734,-15.965],"2.29":[21.61,-33.734,-15.965],"2.33":[21.611,-33.736,-15.964],"2.38":[21.611,-33.737,-15.963],"2.42":[21.611,-33.737,-15.963],"2.46":[21.611,-33.739,-15.962],"2.5":[21.612,-33.741,-15.961],"2.54":[21.613,-33.741,-15.961],"2.58":[21.613,-33.741,-15.961],"2.62":[21.614,-33.743,-15.96],"2.67":[21.613,-33.743,-15.96],"2.71":[21.614,-33.745,-15.959],"2.75":[21.614,-33.746,-15.958],"2.79":[21.614,-33.747,-15.958],"2.83":[21.614,-33.748,-15.957],"2.88":[21.615,-33.749,-15.957],"2.92":[21.616,-33.749,-15.957],"2.96":[21.616,-33.756,-15.957],"3.96":[21.616,-33.756,-15.957],"4.0":[21.032,-33.344,-16.44],"4.04":[19.761,-32.407,-17.475],"4.08":[18.222,-31.252,-18.701],"4.12":[16.851,-30.168,-19.777],"4.17":[16.148,-29.207,-20.105],"4.21":[15.7,-28.263,-20.188],"4.25":[15.372,-27.38,-20.231],"4.29":[15.145,-26.58,-20.249],"4.33":[15.045,-25.885,-20.227],"4.38":[15.05,-25.362,-20.176],"4.42":[15.109,-25.06,-20.105],"4.46":[15.181,-24.941,-20.024],"4.5":[15.232,-24.949,-19.953],"4.54":[15.271,-25.006,-19.888],"4.58":[15.303,-25.081,-19.843],"4.62":[15.33,-25.144,-19.82],"4.67":[15.355,-25.172,-19.799],"4.71":[15.369,-25.19,-19.79],"4.75":[15.371,-25.201,-19.784],"4.79":[15.389,-25.204,-19.778],"4.83":[15.389,-25.204,-19.778]}},"root":{"position":{"0.43":[0,0,0],"0.69":[0,1,0],"3.5":[0,1,0],"3.83":[0,0,0]}},"righthand":{"rotation":{"0.0":[0,0,0],"0.7":[0,0,-20],"3.7":[0,0,-20],"3.85":[0,0,0]},"position":[-0.6,3,0],"scale":[1,1.5,1]},"camera":{"position":{"0.0":[0,0,0],"0.89":[0,0,4],"3.49":[0,0,4],"3.96":[0,0,0]}}}},"melee_3":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[107.032,-17.985,-114.325],"0.04":[100.657,-8.837,-135.569],"0.08":[106.903,-3.998,-150.319],"0.12":[135.161,14.522,-179.404],"0.17":[161.708,30.054,-180.414],"0.21":[197.244,33.999,-165.188],"0.25":[213.585,25.866,-163.445],"0.29":[214.665,23.404,-163.166],"0.33":[213.093,21.317,-162.472],"0.38":[210.633,20.655,-161.345],"0.42":[207.003,20.073,-161.892],"0.46":[202.243,19.119,-164.589],"0.5":[197.185,18.774,-167.941],"0.54":[191.502,18.087,-171.993],"0.58":[184.827,15.334,-176.816],"0.62":[176.086,10.066,-182.114],"0.67":[164.448,3.423,-185.633],"0.71":[151.271,-3.81,-184.15],"0.75":[136.039,-9.065,-175.924],"0.79":[123.925,-10.655,-162.66],"0.83":[119.471,-12.501,-148.356],"0.88":[117.863,-15.847,-134.728],"0.92":[116.028,-20.605,-121.794],"0.96":[112.6,-25.716,-109.129],"1.0":[110.435,-28.527,-101.492],"1.04":[111.088,-28.96,-99.955],"1.08":[111.886,-29.452,-98.752],"1.12":[112.296,-29.891,-98.254]},"position":{"0.0":[-10.61,-24.695,-15.623],"0.04":[-12.24,-26.88,-14.916],"0.08":[-12.798,-26.724,-14.068],"0.12":[-12.622,-24.4,-15.068],"0.17":[-11.677,-17.86,-16.018],"0.21":[-11.785,-13.759,-14.256],"0.25":[-12.506,-13.893,-13.006],"0.29":[-12.776,-13.712,-12.843],"0.33":[-12.86,-13.716,-12.932],"0.38":[-12.917,-13.866,-13.068],"0.42":[-12.957,-14.11,-13.202],"0.46":[-12.956,-14.538,-13.32],"0.5":[-12.96,-15.26,-13.427],"0.54":[-12.957,-16.126,-13.531],"0.58":[-12.92,-17.123,-13.634],"0.62":[-12.779,-18.294,-13.735],"0.67":[-12.562,-19.634,-13.848],"0.71":[-12.19,-20.988,-13.977],"0.75":[-11.707,-22.289,-14.105],"0.79":[-11.13,-23.37,-14.231],"0.83":[-10.532,-23.954,-14.426],"0.88":[-9.999,-24.322,-14.685],"0.92":[-9.608,-24.503,-14.979],"0.96":[-9.449,-24.536,-15.296],"1.0":[-9.497,-24.396,-15.611],"1.04":[-9.591,-24.26,-15.826],"1.08":[-9.65,-24.206,-15.939],"1.12":[-9.657,-24.192,-15.976]}},"karambit":{"rotation":{"0.0":[47.24,-171.184,-3.866],"0.04":[47.236,-171.184,-3.872],"0.08":[47.222,-171.177,-3.864],"0.12":[47.215,-171.174,-3.88],"0.17":[47.22,-171.168,-3.88],"0.21":[47.213,-171.167,-3.877],"0.25":[47.206,-171.167,-3.878],"0.29":[47.215,-171.178,-3.878],"0.33":[47.219,-171.173,-3.876],"0.38":[47.218,-171.164,-3.876],"0.42":[47.217,-171.168,-3.879],"0.46":[47.219,-171.185,-3.87],"0.5":[47.219,-171.177,-3.875],"0.54":[47.212,-171.176,-3.879],"0.58":[47.214,-171.169,-3.878],"0.62":[47.209,-171.176,-3.873],"0.67":[47.227,-171.166,-3.867],"0.71":[47.227,-171.174,-3.862],"0.75":[47.212,-171.174,-3.859],"0.79":[47.23,-171.173,-3.866],"0.83":[47.215,-171.191,-3.856],"0.88":[47.229,-171.187,-3.862],"0.92":[47.229,-171.188,-3.852],"0.96":[47.233,-171.189,-3.853],"1.0":[47.235,-171.192,-3.853],"1.04":[47.237,-171.182,-3.856],"1.08":[47.235,-171.181,-3.86],"1.12":[47.235,-171.188,-3.864]},"position":[5.63783,13.31146,-6.21811]},"lefthand":{"rotation":{"0.0":[111.549,-4.645,56.505],"0.04":[107.894,-12.42,53.647],"0.08":[102.488,-17.682,52.771],"0.12":[99.332,-19.466,52.883],"0.17":[100.433,-19.473,56.844],"0.21":[103.218,-19.249,65.563],"0.25":[107.301,-18.402,76.114],"0.29":[112.102,-16.511,85.739],"0.33":[116.93,-12.907,90.77],"0.38":[122.083,-6.38,90.34],"0.42":[126.144,3.043,87.789],"0.46":[128.264,12.317,86.314],"0.5":[129.998,19.273,86.644],"0.54":[131.829,25.002,87.368],"0.58":[133.191,29.291,88.303],"0.62":[133.812,32.194,89.263],"0.67":[134.122,33.959,90.129],"0.71":[134.423,34.984,91.004],"0.75":[134.743,35.508,91.921],"0.79":[135.067,35.756,92.899],"0.83":[135.465,35.796,93.9],"0.88":[135.837,35.659,94.754],"0.92":[136.163,35.411,95.46],"0.96":[136.419,35.135,96.041],"1.0":[136.579,34.942,96.463],"1.04":[136.63,34.874,96.743],"1.08":[136.634,34.854,96.855],"1.12":[136.653,34.857,96.878]},"position":{"0.0":[18.884,-32.718,-23.308],"0.04":[19.469,-33.912,-22.57],"0.08":[19.906,-34.743,-21.725],"0.12":[20.097,-35.083,-21.057],"0.17":[20.03,-34.941,-20.631],"0.21":[19.866,-34.584,-20.246],"0.25":[19.602,-34.062,-19.934],"0.29":[19.245,-33.419,-19.734],"0.33":[18.734,-32.665,-19.697],"0.38":[17.916,-31.622,-19.808],"0.42":[16.932,-30.387,-19.966],"0.46":[16.172,-29.277,-20.095],"0.5":[15.757,-28.391,-20.178],"0.54":[15.43,-27.549,-20.229],"0.58":[15.197,-26.778,-20.25],"0.62":[15.061,-26.086,-20.235],"0.67":[15.039,-25.528,-20.194],"0.71":[15.076,-25.16,-20.136],"0.75":[15.139,-24.986,-20.067],"0.79":[15.196,-24.931,-19.989],"0.83":[15.245,-24.969,-19.923],"0.88":[15.287,-25.034,-19.868],"0.92":[15.322,-25.115,-19.83],"0.96":[15.349,-25.166,-19.807],"1.0":[15.369,-25.189,-19.791],"1.04":[15.372,-25.2,-19.787],"1.08":[15.384,-25.203,-19.779],"1.12":[15.387,-25.204,-19.777]}},"righthand":{"position":[-0.6,3,0],"scale":{"0.0":{"post":[1,2,1],"lerp_mode":"catmullrom"},"0.68":{"post":[1,2,1],"lerp_mode":"catmullrom"},"0.96":{"post":[1,1.5,1],"lerp_mode":"catmullrom"}}}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"idle":{"loop":true,"bones":{"root":{"rotation":[0,0,0],"position":[0,0,0],"scale":1}}},"static_idle":{"loop":true,"animation_length":1.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[112.288,-29.891,-98.25],"0.04":[112.281,-29.917,-98.252],"0.08":[112.26,-29.937,-98.224],"0.12":[112.22,-29.972,-98.178],"0.17":[112.182,-29.987,-98.129],"0.21":[112.138,-30.033,-98.063],"0.25":[112.091,-30.06,-97.991],"0.29":[112.039,-30.088,-97.908],"0.33":[111.995,-30.121,-97.836],"0.38":[111.946,-30.152,-97.751],"0.42":[111.895,-30.187,-97.666],"0.46":[111.848,-30.211,-97.585],"0.5":[111.79,-30.25,-97.499],"0.54":[111.727,-30.285,-97.404],"0.58":[111.696,-30.296,-97.343],"0.62":[111.639,-30.321,-97.268],"0.67":[111.606,-30.341,-97.203],"0.71":[111.555,-30.351,-97.127],"0.75":[111.519,-30.355,-97.073],"0.79":[111.502,-30.357,-97.043],"0.83":[111.483,-30.351,-97.015],"0.88":[111.474,-30.335,-97.01],"0.92":[111.47,-30.318,-97.017],"0.96":[111.478,-30.31,-97.041],"1.0":[111.482,-30.292,-97.054],"1.04":[111.501,-30.257,-97.096],"1.08":[111.523,-30.235,-97.142],"1.12":[111.549,-30.202,-97.204],"1.17":[111.575,-30.174,-97.254],"1.21":[111.62,-30.149,-97.313],"1.25":[111.666,-30.109,-97.38],"1.29":[111.727,-30.086,-97.444],"1.33":[111.771,-30.047,-97.511],"1.38":[111.832,-30.019,-97.564],"1.42":[111.894,-29.994,-97.619],"1.46":[111.961,-29.964,-97.671],"1.5":[112.015,-29.948,-97.71],"1.54":[112.081,-29.93,-97.77],"1.58":[112.125,-29.904,-97.834],"1.62":[112.157,-29.895,-97.894],"1.67":[112.195,-29.878,-97.956],"1.71":[112.221,-29.869,-98.005],"1.75":[112.249,-29.865,-98.065],"1.79":[112.281,-29.858,-98.128],"1.83":[112.287,-29.863,-98.167],"1.88":[112.299,-29.87,-98.203],"1.92":[112.312,-29.872,-98.237],"1.96":[112.296,-29.891,-98.255]},"position":{"0.0":[-9.664,-24.193,-15.976],"0.04":[-9.664,-24.193,-15.976],"0.08":[-9.662,-24.193,-15.975],"0.12":[-9.654,-24.193,-15.967],"0.17":[-9.652,-24.201,-15.966],"0.21":[-9.649,-24.2,-15.964],"0.25":[-9.646,-24.199,-15.962],"0.29":[-9.636,-24.198,-15.96],"0.33":[-9.632,-24.205,-15.957],"0.38":[-9.625,-24.204,-15.955],"0.42":[-9.616,-24.202,-15.951],"0.46":[-9.612,-24.2,-15.948],"0.5":[-9.601,-24.206,-15.947],"0.54":[-9.598,-24.204,-15.95],"0.58":[-9.588,-24.203,-15.947],"0.62":[-9.584,-24.201,-15.944],"0.67":[-9.579,-24.199,-15.941],"0.71":[-9.571,-24.202,-15.939],"0.75":[-9.569,-24.205,-15.938],"0.79":[-9.568,-24.203,-15.936],"0.83":[-9.567,-24.201,-15.938],"0.88":[-9.563,-24.196,-15.943],"0.92":[-9.559,-24.195,-15.943],"0.96":[-9.56,-24.195,-15.943],"1.0":[-9.562,-24.195,-15.946],"1.04":[-9.563,-24.192,-15.953],"1.08":[-9.564,-24.189,-15.954],"1.12":[-9.575,-24.19,-15.956],"1.17":[-9.577,-24.189,-15.96],"1.21":[-9.579,-24.184,-15.967],"1.25":[-9.582,-24.185,-15.969],"1.29":[-9.584,-24.185,-15.971],"1.33":[-9.588,-24.18,-15.974],"1.38":[-9.594,-24.181,-15.976],"1.42":[-9.6,-24.181,-15.978],"1.46":[-9.603,-24.182,-15.979],"1.5":[-9.607,-24.175,-15.981],"1.54":[-9.615,-24.176,-15.983],"1.58":[-9.618,-24.177,-15.985],"1.62":[-9.629,-24.177,-15.987],"1.67":[-9.63,-24.178,-15.987],"1.71":[-9.636,-24.18,-15.983],"1.75":[-9.642,-24.18,-15.985],"1.79":[-9.644,-24.181,-15.986],"1.83":[-9.653,-24.182,-15.98],"1.88":[-9.654,-24.182,-15.981],"1.92":[-9.655,-24.183,-15.982],"1.96":[-9.657,-24.192,-15.976]}},"karambit":{"rotation":{"0.0":[47.249,-171.191,-3.844],"0.04":[47.253,-171.185,-3.857],"0.08":[47.252,-171.187,-3.857],"0.12":[47.245,-171.187,-3.861],"0.17":[47.24,-171.182,-3.85],"0.21":[47.242,-171.188,-3.857],"0.25":[47.247,-171.193,-3.853],"0.29":[47.244,-171.192,-3.847],"0.33":[47.242,-171.185,-3.85],"0.38":[47.246,-171.193,-3.85],"0.42":[47.249,-171.179,-3.855],"0.46":[47.266,-171.175,-3.846],"0.5":[47.253,-171.183,-3.858],"0.54":[47.242,-171.19,-3.856],"0.58":[47.252,-171.18,-3.852],"0.62":[47.25,-171.183,-3.852],"0.67":[47.249,-171.182,-3.852],"0.71":[47.244,-171.19,-3.848],"0.75":[47.24,-171.186,-3.846],"0.79":[47.25,-171.188,-3.85],"0.83":[47.246,-171.181,-3.848],"0.88":[47.25,-171.185,-3.851],"0.92":[47.246,-171.184,-3.851],"0.96":[47.256,-171.187,-3.861],"1.0":[47.251,-171.188,-3.855],"1.04":[47.25,-171.188,-3.85],"1.08":[47.252,-171.19,-3.852],"1.12":[47.25,-171.185,-3.856],"1.17":[47.244,-171.186,-3.853],"1.21":[47.248,-171.189,-3.86],"1.25":[47.246,-171.186,-3.853],"1.29":[47.256,-171.183,-3.864],"1.33":[47.245,-171.179,-3.859],"1.38":[47.242,-171.183,-3.851],"1.42":[47.243,-171.181,-3.851],"1.46":[47.24,-171.174,-3.855],"1.5":[47.25,-171.181,-3.854],"1.54":[47.252,-171.185,-3.851],"1.58":[47.251,-171.176,-3.846],"1.62":[47.239,-171.187,-3.849],"1.67":[47.243,-171.186,-3.847],"1.71":[47.24,-171.196,-3.845],"1.75":[47.247,-171.193,-3.842],"1.79":[47.244,-171.185,-3.845],"1.83":[47.249,-171.193,-3.847],"1.88":[47.252,-171.195,-3.849],"1.92":[47.251,-171.191,-3.854],"1.96":[47.24,-171.187,-3.86]},"position":[5.63783,13.31146,-6.21811]},"lefthand":{"rotation":{"0.0":[136.641,34.854,96.876],"0.04":[136.651,34.861,96.864],"0.08":[136.664,34.866,96.851],"0.12":[136.677,34.851,96.832],"0.17":[136.689,34.874,96.806],"0.21":[136.704,34.881,96.776],"0.25":[136.71,34.888,96.755],"0.29":[136.734,34.885,96.726],"0.33":[136.748,34.891,96.704],"0.38":[136.745,34.904,96.659],"0.42":[136.759,34.904,96.633],"0.46":[136.774,34.912,96.615],"0.5":[136.812,34.929,96.597],"0.54":[136.808,34.938,96.557],"0.58":[136.826,34.945,96.533],"0.62":[136.825,34.946,96.506],"0.67":[136.839,34.951,96.49],"0.71":[136.843,34.948,96.48],"0.75":[136.843,34.956,96.465],"0.79":[136.839,34.957,96.46],"0.83":[136.835,34.958,96.426],"0.88":[136.831,34.963,96.438],"0.92":[136.826,34.964,96.44],"0.96":[136.824,34.951,96.449],"1.0":[136.823,34.957,96.472],"1.04":[136.824,34.957,96.489],"1.08":[136.814,34.944,96.502],"1.12":[136.791,34.958,96.509],"1.17":[136.787,34.941,96.538],"1.21":[136.762,34.94,96.554],"1.25":[136.746,34.934,96.58],"1.29":[136.736,34.932,96.598],"1.33":[136.724,34.923,96.621],"1.38":[136.706,34.928,96.641],"1.42":[136.694,34.919,96.669],"1.46":[136.692,34.907,96.687],"1.5":[136.675,34.899,96.706],"1.54":[136.656,34.897,96.742],"1.58":[136.644,34.888,96.751],"1.62":[136.631,34.876,96.772],"1.67":[136.63,34.879,96.804],"1.71":[136.624,34.863,96.82],"1.75":[136.622,34.868,96.839],"1.79":[136.618,34.862,96.834],"1.83":[136.606,34.855,96.848],"1.88":[136.621,34.854,96.871],"1.92":[136.637,34.864,96.879],"1.96":[136.639,34.844,96.88]},"position":{"0.0":[15.388,-25.206,-19.778],"0.04":[15.379,-25.211,-19.777],"0.08":[15.371,-25.211,-19.776],"0.12":[15.37,-25.213,-19.776],"0.17":[15.369,-25.212,-19.774],"0.21":[15.368,-25.213,-19.773],"0.25":[15.367,-25.213,-19.772],"0.29":[15.365,-25.214,-19.771],"0.33":[15.364,-25.214,-19.77],"0.38":[15.363,-25.218,-19.77],"0.42":[15.362,-25.223,-19.769],"0.46":[15.36,-25.221,-19.766],"0.5":[15.358,-25.221,-19.765],"0.54":[15.357,-25.221,-19.764],"0.58":[15.355,-25.221,-19.763],"0.62":[15.355,-25.222,-19.763],"0.67":[15.355,-25.222,-19.762],"0.71":[15.354,-25.222,-19.761],"0.75":[15.353,-25.221,-19.761],"0.79":[15.353,-25.221,-19.761],"0.83":[15.353,-25.221,-19.767],"0.88":[15.352,-25.219,-19.766],"0.92":[15.353,-25.219,-19.767],"0.96":[15.353,-25.219,-19.767],"1.0":[15.352,-25.216,-19.765],"1.04":[15.352,-25.21,-19.764],"1.08":[15.352,-25.206,-19.765],"1.12":[15.353,-25.203,-19.765],"1.17":[15.354,-25.201,-19.764],"1.21":[15.355,-25.199,-19.769],"1.25":[15.356,-25.192,-19.773],"1.29":[15.357,-25.191,-19.774],"1.33":[15.358,-25.189,-19.774],"1.38":[15.359,-25.188,-19.774],"1.42":[15.36,-25.188,-19.775],"1.46":[15.36,-25.189,-19.769],"1.5":[15.362,-25.19,-19.771],"1.54":[15.364,-25.191,-19.773],"1.58":[15.366,-25.193,-19.775],"1.62":[15.367,-25.194,-19.777],"1.67":[15.373,-25.195,-19.778],"1.71":[15.385,-25.197,-19.777],"1.75":[15.387,-25.198,-19.775],"1.79":[15.387,-25.199,-19.776],"1.83":[15.389,-25.202,-19.778],"1.88":[15.389,-25.202,-19.778],"1.92":[15.388,-25.202,-19.778],"1.96":[15.389,-25.204,-19.778]}},"righthand":{"position":[-0.6,3,0],"scale":[1,1.5,1]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/karambit.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/karambit.geo.json new file mode 100644 index 0000000..1ad4b69 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/karambit.geo.json @@ -0,0 +1,3153 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 4, + "visible_bounds_height": 3, + "visible_bounds_offset": [0, 0.5, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "bone", + "parent": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "knife_and_right", + "parent": "bone", + "pivot": [6, 19, 0] + }, + { + "name": "karambit", + "parent": "knife_and_right", + "pivot": [0, 9.6875, 4.7375] + }, + { + "name": "weapon", + "parent": "karambit", + "pivot": [-0.1125, 9.8, 1.9625], + "rotation": [0, 0, -180], + "cubes": [ + { + "origin": [-0.4127, 10.15511, 0.63548], + "size": [0.6004, 0.2254, 1.2004], + "inflate": 0.001, + "pivot": [0.7875, 10.38031, 0.63568], + "rotation": [19, 0, 0], + "uv": { + "north": {"uv": [11, 16], "uv_size": [0.5, 0.25]}, + "east": {"uv": [12, 3], "uv_size": [1, 0.25]}, + "south": {"uv": [16, 11], "uv_size": [0.5, 0.25]}, + "west": {"uv": [12, 6], "uv_size": [1, 0.25]}, + "up": {"uv": [2, 6], "uv_size": [0.5, 1]}, + "down": {"uv": [6, 3], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.4125, 9.89281, 0.63568], + "size": [0.6, 0.35625, 2.85], + "pivot": [0.7875, 10.38031, 0.63568], + "rotation": [14.5, 0, 0], + "uv": { + "north": {"uv": [12, 16], "uv_size": [0.5, 0.25]}, + "east": {"uv": [5, 0], "uv_size": [2.5, 0.25]}, + "south": {"uv": [16, 12], "uv_size": [0.5, 0.25]}, + "west": {"uv": [5, 1], "uv_size": [2.5, 0.25]}, + "up": {"uv": [0, 2], "uv_size": [0.5, 2.5]}, + "down": {"uv": [1, 4.5], "uv_size": [0.5, -2.5]} + } + }, + { + "origin": [-0.1875, 9.12351, 0.33392], + "size": [0.15, 0.075, 0.375], + "pivot": [-0.1125, 9.19851, 0.70892], + "rotation": [39.5, 0, 0], + "uv": { + "north": {"uv": [13, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 13], "uv_size": [0.25, 0.25]}, + "south": {"uv": [14, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 14], "uv_size": [0.25, 0.25]}, + "up": {"uv": [15, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 15.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0375, 9.02137, 0.42444], + "size": [0.10607, 0.075, 0.375], + "pivot": [-0.0375, 9.02137, 0.61194], + "rotation": [30.23765, 26.72926, -37.65466], + "uv": { + "north": {"uv": [16, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 16], "uv_size": [0.25, 0.25]}, + "south": {"uv": [17, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 17], "uv_size": [0.25, 0.25]}, + "up": {"uv": [18, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 18.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1875, 8.88498, -0.18045], + "size": [0.15, 0.075, 0.675], + "pivot": [-0.1125, 8.95998, 0.41955], + "rotation": [72, 0, 0], + "uv": { + "north": {"uv": [19, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 16], "uv_size": [0.5, 0.25]}, + "south": {"uv": [24, 19], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 13], "uv_size": [0.5, 0.25]}, + "up": {"uv": [14, 16], "uv_size": [0.25, 0.5]}, + "down": {"uv": [16, 14.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.0375, 8.79415, -0.00546], + "size": [0.10607, 0.075, 0.6], + "pivot": [-0.0375, 8.79415, 0.44454], + "rotation": [65.32094, 42.2602, -17.17204], + "uv": { + "north": {"uv": [20, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 16], "uv_size": [0.5, 0.25]}, + "south": {"uv": [24, 20], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 15], "uv_size": [0.5, 0.25]}, + "up": {"uv": [16, 16], "uv_size": [0.25, 0.5]}, + "down": {"uv": [0, 17.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.1875, 9.14281, 0.41068], + "size": [0.15, 0.075, 2.475], + "pivot": [0.9375, 10.38031, 0.63568], + "rotation": [14.5, 0, 0], + "uv": { + "north": {"uv": [21, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [3, 6], "uv_size": [2, 0.25]}, + "south": {"uv": [24, 21], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 3], "uv_size": [2, 0.25]}, + "up": {"uv": [6, 4], "uv_size": [0.25, 2]}, + "down": {"uv": [5, 8], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.0375, 9.43574, 0.68828], + "size": [0.10607, 0.075, 2.475], + "pivot": [-0.0375, 9.43574, 1.92578], + "rotation": [10.36319, 10.19771, -44.07281], + "uv": { + "north": {"uv": [22, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 6], "uv_size": [2, 0.25]}, + "south": {"uv": [24, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 7], "uv_size": [2, 0.25]}, + "up": {"uv": [2, 7], "uv_size": [0.25, 2]}, + "down": {"uv": [3, 9], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.1875, 9.23618, 1.14458], + "size": [0.15, 0.075, 0.3], + "pivot": [-0.1125, 9.31118, 1.14458], + "rotation": [-8, 0, 0], + "uv": { + "north": {"uv": [23, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 23], "uv_size": [0.25, 0.25]}, + "south": {"uv": [24, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 0], "uv_size": [0.25, 0.25]}, + "down": {"uv": [1, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0375, 9.21603, 1.13269], + "size": [0.10607, 0.075, 0.3], + "pivot": [-0.0375, 9.21603, 1.28269], + "rotation": [-5.67527, -5.64763, -44.71984], + "uv": { + "north": {"uv": [25, 1], "uv_size": [0.25, 0.25]}, + "east": {"uv": [2, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [3, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 3], "uv_size": [0.25, 0.25]}, + "down": {"uv": [4, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1875, 9.74242, 2.36334], + "size": [0.15, 0.075, 0.20624], + "pivot": [-0.1125, 9.31118, 1.14458], + "rotation": [-8, 0, 0], + "uv": { + "north": {"uv": [25, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 5], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 6], "uv_size": [0.25, 0.25]}, + "down": {"uv": [7, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0375, 9.55426, 2.41048], + "size": [0.10607, 0.075, 0.20626], + "pivot": [-0.0375, 9.55426, 2.51361], + "rotation": [-5.67527, -5.64763, -44.71984], + "uv": { + "north": {"uv": [25, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 8], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 9], "uv_size": [0.25, 0.25]}, + "down": {"uv": [10, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1875, 10.00492, 3.00084], + "size": [0.15, 0.075, 0.69374], + "pivot": [-0.1125, 9.31118, 1.14458], + "rotation": [-8, 0, 0], + "uv": { + "north": {"uv": [25, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 0], "uv_size": [0.5, 0.25]}, + "south": {"uv": [11, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [1, 17], "uv_size": [0.5, 0.25]}, + "up": {"uv": [17, 1], "uv_size": [0.25, 0.5]}, + "down": {"uv": [2, 17.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.0375, 9.69156, 3.07594], + "size": [0.10607, 0.075, 0.69375], + "pivot": [-0.0375, 9.69156, 3.42282], + "rotation": [-5.67527, -5.64763, -44.71984], + "uv": { + "north": {"uv": [25, 11], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 2], "uv_size": [0.5, 0.25]}, + "south": {"uv": [12, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [3, 17], "uv_size": [0.5, 0.25]}, + "up": {"uv": [17, 3], "uv_size": [0.25, 0.5]}, + "down": {"uv": [4, 17.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.29357, 8.79415, -0.00546], + "size": [0.10607, 0.075, 0.6], + "pivot": [-0.1875, 8.79415, 0.44454], + "rotation": [65.32094, -42.2602, 17.17204], + "uv": { + "north": {"uv": [25, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 4], "uv_size": [0.5, 0.25]}, + "south": {"uv": [13, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 17], "uv_size": [0.5, 0.25]}, + "up": {"uv": [17, 5], "uv_size": [0.25, 0.5]}, + "down": {"uv": [6, 17.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.29357, 9.02137, 0.42444], + "size": [0.10607, 0.075, 0.375], + "pivot": [-0.1875, 9.02137, 0.61194], + "rotation": [30.23765, -26.72926, 37.65466], + "uv": { + "north": {"uv": [25, 13], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 14], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 15], "uv_size": [0.25, 0.25]}, + "down": {"uv": [16, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29357, 9.43574, 0.68828], + "size": [0.10607, 0.075, 2.475], + "pivot": [-0.1875, 9.43574, 1.92578], + "rotation": [10.36319, -10.19771, 44.07281], + "uv": { + "north": {"uv": [25, 16], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 2], "uv_size": [2, 0.25]}, + "south": {"uv": [17, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [7, 4], "uv_size": [2, 0.25]}, + "up": {"uv": [4, 7], "uv_size": [0.25, 2]}, + "down": {"uv": [6, 9], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.29357, 9.21603, 1.13269], + "size": [0.10607, 0.075, 0.3], + "pivot": [-0.1875, 9.21603, 1.28269], + "rotation": [-5.67527, 5.64763, 44.71984], + "uv": { + "north": {"uv": [25, 17], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [19, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 19], "uv_size": [0.25, 0.25]}, + "down": {"uv": [20, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29357, 9.55426, 2.41048], + "size": [0.10607, 0.075, 0.20626], + "pivot": [-0.1875, 9.55426, 2.51361], + "rotation": [-5.67527, 5.64763, 44.71984], + "uv": { + "north": {"uv": [25, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 21], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [23, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29357, 9.69156, 3.07594], + "size": [0.10607, 0.075, 0.69375], + "pivot": [-0.1875, 9.69156, 3.42282], + "rotation": [-5.67527, 5.64763, 44.71984], + "uv": { + "north": {"uv": [25, 23], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 6], "uv_size": [0.5, 0.25]}, + "south": {"uv": [24, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [7, 17], "uv_size": [0.5, 0.25]}, + "up": {"uv": [17, 7], "uv_size": [0.25, 0.5]}, + "down": {"uv": [8, 17.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.2625, 8.95998, 0.04455], + "size": [0.3, 0.15, 0.45], + "pivot": [-0.1125, 8.95998, 0.41955], + "rotation": [72, 0, 0], + "uv": { + "north": {"uv": [25, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 8], "uv_size": [0.5, 0.25]}, + "south": {"uv": [25, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 17], "uv_size": [0.5, 0.25]}, + "up": {"uv": [17, 9], "uv_size": [0.25, 0.5]}, + "down": {"uv": [10, 17.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.2625, 9.19851, 0.33392], + "size": [0.3, 0.15, 0.375], + "pivot": [-0.1125, 9.19851, 0.70892], + "rotation": [39.5, 0, 0], + "uv": { + "north": {"uv": [0, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 0], "uv_size": [0.25, 0.25]}, + "south": {"uv": [1, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 1], "uv_size": [0.25, 0.25]}, + "up": {"uv": [2, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 2.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.2625, 9.21781, 0.03568], + "size": [0.3, 0.675, 3.6], + "pivot": [0.9375, 10.38031, 0.63568], + "rotation": [14.5, 0, 0], + "uv": { + "north": {"uv": [17, 10], "uv_size": [0.25, 0.5]}, + "east": {"uv": [0, 0], "uv_size": [3, 0.5]}, + "south": {"uv": [11, 17], "uv_size": [0.25, 0.5]}, + "west": {"uv": [0, 1], "uv_size": [3, 0.5]}, + "up": {"uv": [2, 3], "uv_size": [0.25, 3]}, + "down": {"uv": [3, 6], "uv_size": [0.25, -3]} + } + }, + { + "origin": [-0.2623, 9.31138, 1.14478], + "size": [0.2996, 0.1496, 0.2996], + "inflate": -0.001, + "pivot": [-0.1125, 9.31118, 1.14458], + "rotation": [-8, 0, 0], + "uv": { + "north": {"uv": [3, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 3], "uv_size": [0.25, 0.25]}, + "south": {"uv": [4, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 4], "uv_size": [0.25, 0.25]}, + "up": {"uv": [5, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 5.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.2623, 9.81762, 2.36354], + "size": [0.2996, 0.1496, 0.20584], + "inflate": -0.001, + "pivot": [-0.1125, 9.31118, 1.14458], + "rotation": [-8, 0, 0], + "uv": { + "north": {"uv": [6, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 6], "uv_size": [0.25, 0.25]}, + "south": {"uv": [7, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 7], "uv_size": [0.25, 0.25]}, + "up": {"uv": [8, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 8.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.2623, 10.08012, 3.00104], + "size": [0.2996, 0.2996, 0.69334], + "inflate": -0.001, + "pivot": [-0.1125, 9.31118, 1.14458], + "rotation": [-8, 0, 0], + "uv": { + "north": {"uv": [9, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 11], "uv_size": [0.5, 0.25]}, + "south": {"uv": [26, 9], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 17], "uv_size": [0.5, 0.25]}, + "up": {"uv": [17, 12], "uv_size": [0.25, 0.5]}, + "down": {"uv": [13, 17.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.4123, 9.19644, 1.62449], + "size": [0.5996, 0.9746, 0.1496], + "inflate": -0.001, + "pivot": [-0.1125, 10.17124, 1.77429], + "rotation": [-18, 0, 0], + "uv": { + "north": {"uv": [1, 8], "uv_size": [0.5, 0.75]}, + "east": {"uv": [9, 15], "uv_size": [0.25, 0.75]}, + "south": {"uv": [8, 1], "uv_size": [0.5, 0.75]}, + "west": {"uv": [15, 9], "uv_size": [0.25, 0.75]}, + "up": {"uv": [17, 13], "uv_size": [0.5, 0.25]}, + "down": {"uv": [14, 17.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.2623, 9.09347, 1.47752], + "size": [0.2996, 0.1496, 0.1496], + "inflate": -0.001, + "pivot": [-0.1125, 9.73077, 1.55232], + "rotation": [-18, 0, 0], + "uv": { + "north": {"uv": [10, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 10], "uv_size": [0.25, 0.25]}, + "south": {"uv": [11, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 11], "uv_size": [0.25, 0.25]}, + "up": {"uv": [12, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 12.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0377, 9.12518, 1.28052], + "size": [0.21294, 0.1491, 0.1496], + "inflate": -0.001, + "pivot": [0.0375, 9.12448, 1.35532], + "rotation": [-12.93932, -12.62142, -43.563], + "uv": { + "north": {"uv": [13, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 13], "uv_size": [0.25, 0.25]}, + "south": {"uv": [14, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 14], "uv_size": [0.25, 0.25]}, + "up": {"uv": [15, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 15.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.47564, 9.12518, 1.28052], + "size": [0.21294, 0.1491, 0.1496], + "inflate": -0.001, + "pivot": [-0.2625, 9.12448, 1.35532], + "rotation": [-12.93932, 12.62142, 43.563], + "uv": { + "north": {"uv": [16, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 16], "uv_size": [0.25, 0.25]}, + "south": {"uv": [17, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 17], "uv_size": [0.25, 0.25]}, + "up": {"uv": [18, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 18.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.4123, 9.88612, 1.53179], + "size": [0.5996, 0.2996, 0.1496], + "inflate": -0.001, + "pivot": [-0.1125, 9.88592, 1.68159], + "rotation": [-40.5, 0, 0], + "uv": { + "north": {"uv": [17, 14], "uv_size": [0.5, 0.25]}, + "east": {"uv": [19, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [15, 17], "uv_size": [0.5, 0.25]}, + "west": {"uv": [26, 19], "uv_size": [0.25, 0.25]}, + "up": {"uv": [17, 15], "uv_size": [0.5, 0.25]}, + "down": {"uv": [16, 17.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4123, 10.07674, 1.72662], + "size": [0.5996, 0.3371, 0.1496], + "inflate": -0.001, + "pivot": [-0.1125, 10.11404, 1.87642], + "rotation": [-58.5, 0, 0], + "uv": { + "north": {"uv": [17, 16], "uv_size": [0.5, 0.25]}, + "east": {"uv": [20, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [17, 17], "uv_size": [0.5, 0.25]}, + "west": {"uv": [26, 20], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 18], "uv_size": [0.5, 0.25]}, + "down": {"uv": [18, 0.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4123, 9.64716, 1.44642], + "size": [0.5996, 0.1496, 0.1496], + "inflate": -0.001, + "pivot": [-0.1125, 9.64696, 1.44622], + "rotation": [14.5, 0, 0], + "uv": { + "north": {"uv": [1, 18], "uv_size": [0.5, 0.25]}, + "east": {"uv": [21, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 1], "uv_size": [0.5, 0.25]}, + "west": {"uv": [26, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [2, 18], "uv_size": [0.5, 0.25]}, + "down": {"uv": [18, 2.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4123, 9.71738, 1.40888], + "size": [0.5996, 0.2246, 0.1496], + "inflate": -0.001, + "pivot": [-0.1125, 9.79218, 1.40868], + "rotation": [42, 0, 0], + "uv": { + "north": {"uv": [3, 18], "uv_size": [0.5, 0.25]}, + "east": {"uv": [22, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 3], "uv_size": [0.5, 0.25]}, + "west": {"uv": [26, 22], "uv_size": [0.25, 0.25]}, + "up": {"uv": [4, 18], "uv_size": [0.5, 0.25]}, + "down": {"uv": [18, 4.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4123, 9.71636, 1.3085], + "size": [0.5996, 0.4121, 0.3746], + "inflate": -0.001, + "pivot": [-0.1125, 9.90366, 1.3083], + "rotation": [57, 0, 0], + "uv": { + "north": {"uv": [5, 18], "uv_size": [0.5, 0.25]}, + "east": {"uv": [23, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 5], "uv_size": [0.5, 0.25]}, + "west": {"uv": [26, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [6, 18], "uv_size": [0.5, 0.25]}, + "down": {"uv": [18, 6.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4123, 9.89019, 2.71199], + "size": [0.5996, 0.9746, 0.1496], + "inflate": -0.001, + "pivot": [-0.1125, 10.17124, 1.77429], + "rotation": [-18, 0, 0], + "uv": { + "north": {"uv": [8, 3], "uv_size": [0.5, 0.75]}, + "east": {"uv": [10, 15], "uv_size": [0.25, 0.75]}, + "south": {"uv": [5, 8], "uv_size": [0.5, 0.75]}, + "west": {"uv": [15, 10], "uv_size": [0.25, 0.75]}, + "up": {"uv": [7, 18], "uv_size": [0.5, 0.25]}, + "down": {"uv": [18, 7.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.2623, 9.74019, 2.71199], + "size": [0.2996, 0.1496, 0.1496], + "inflate": -0.001, + "pivot": [-0.1125, 10.17124, 1.77429], + "rotation": [-18, 0, 0], + "uv": { + "north": {"uv": [24, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 24], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [26, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [0, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0377, 9.44891, 2.52917], + "size": [0.21294, 0.14911, 0.1496], + "inflate": -0.001, + "pivot": [0.0375, 9.44822, 2.60397], + "rotation": [-12.93932, -12.62142, -43.563], + "uv": { + "north": {"uv": [27, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [1, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 1], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 2], "uv_size": [0.25, 0.25]}, + "down": {"uv": [3, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.47564, 9.44891, 2.52917], + "size": [0.21294, 0.14911, 0.1496], + "inflate": -0.001, + "pivot": [-0.2625, 9.44822, 2.60397], + "rotation": [-12.93932, 12.62142, 43.563], + "uv": { + "north": {"uv": [27, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [4, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 4], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 5], "uv_size": [0.25, 0.25]}, + "down": {"uv": [6, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.4123, 9.99131, 3.77726], + "size": [0.5996, 0.58085, 0.28084], + "inflate": -0.001, + "pivot": [-0.1125, 10.12236, 3.92706], + "rotation": [-0.25, 0, 0], + "uv": { + "north": {"uv": [7, 12], "uv_size": [0.5, 0.5]}, + "east": {"uv": [8, 18], "uv_size": [0.25, 0.5]}, + "south": {"uv": [12, 7], "uv_size": [0.5, 0.5]}, + "west": {"uv": [18, 8], "uv_size": [0.25, 0.5]}, + "up": {"uv": [9, 18], "uv_size": [0.5, 0.25]}, + "down": {"uv": [18, 9.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4123, 10.12322, 3.77726], + "size": [0.5996, 0.2996, 0.1496], + "inflate": -0.001, + "pivot": [-0.1125, 10.12302, 3.77706], + "rotation": [25.75, 0, 0], + "uv": { + "north": {"uv": [10, 18], "uv_size": [0.5, 0.25]}, + "east": {"uv": [27, 6], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 10], "uv_size": [0.5, 0.25]}, + "west": {"uv": [7, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [11, 18], "uv_size": [0.5, 0.25]}, + "down": {"uv": [18, 11.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4123, 10.31842, 3.64692], + "size": [0.5996, 0.2246, 0.1496], + "inflate": -0.001, + "pivot": [-0.1125, 10.39322, 3.64672], + "rotation": [55.75, 0, 0], + "uv": { + "north": {"uv": [12, 18], "uv_size": [0.5, 0.25]}, + "east": {"uv": [27, 7], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 12], "uv_size": [0.5, 0.25]}, + "west": {"uv": [8, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [13, 18], "uv_size": [0.5, 0.25]}, + "down": {"uv": [18, 13.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4123, 9.70814, 3.76937], + "size": [0.5996, 0.4121, 0.2621], + "inflate": -0.001, + "pivot": [-0.1125, 10.00794, 3.76917], + "rotation": [-25.25, 0, 0], + "uv": { + "north": {"uv": [14, 18], "uv_size": [0.5, 0.25]}, + "east": {"uv": [27, 8], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 14], "uv_size": [0.5, 0.25]}, + "west": {"uv": [9, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [15, 18], "uv_size": [0.5, 0.25]}, + "down": {"uv": [18, 15.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.2623, 9.55814, 3.76937], + "size": [0.2996, 0.1496, 0.2621], + "inflate": -0.001, + "pivot": [-0.1125, 10.00794, 3.76917], + "rotation": [-25.25, 0, 0], + "uv": { + "north": {"uv": [27, 9], "uv_size": [0.25, 0.25]}, + "east": {"uv": [10, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 10], "uv_size": [0.25, 0.25]}, + "west": {"uv": [11, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 11], "uv_size": [0.25, 0.25]}, + "down": {"uv": [12, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0377, 9.53764, 3.56309], + "size": [0.21294, 0.14911, 0.2621], + "inflate": -0.001, + "pivot": [0.0375, 9.53695, 3.71289], + "rotation": [-18.44319, -17.55551, -42.12793], + "uv": { + "north": {"uv": [27, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 13], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 14], "uv_size": [0.25, 0.25]}, + "down": {"uv": [15, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.47564, 9.53764, 3.56309], + "size": [0.21294, 0.14911, 0.2621], + "inflate": -0.001, + "pivot": [-0.2625, 9.53695, 3.71289], + "rotation": [-18.44319, 17.55551, 42.12793], + "uv": { + "north": {"uv": [27, 15], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 16], "uv_size": [0.25, 0.25]}, + "west": {"uv": [17, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 17], "uv_size": [0.25, 0.25]}, + "down": {"uv": [18, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.4123, 9.99587, 2.71091], + "size": [0.5996, 0.3371, 0.1496], + "inflate": -0.001, + "pivot": [-0.1125, 9.99567, 2.86071], + "rotation": [-33, 0, 0], + "uv": { + "north": {"uv": [16, 18], "uv_size": [0.5, 0.25]}, + "east": {"uv": [27, 18], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 16], "uv_size": [0.5, 0.25]}, + "west": {"uv": [19, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [17, 18], "uv_size": [0.5, 0.25]}, + "down": {"uv": [18, 17.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4123, 10.24143, 2.85723], + "size": [0.5996, 0.35584, 0.1871], + "inflate": -0.001, + "pivot": [-0.1125, 10.27873, 3.04453], + "rotation": [-53, 0, 0], + "uv": { + "north": {"uv": [18, 18], "uv_size": [0.5, 0.25]}, + "east": {"uv": [27, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 19], "uv_size": [0.5, 0.25]}, + "west": {"uv": [20, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 0], "uv_size": [0.5, 0.25]}, + "down": {"uv": [1, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4123, 9.82824, 2.64873], + "size": [0.5996, 0.2246, 0.1496], + "inflate": -0.001, + "pivot": [-0.1125, 9.82804, 2.64853], + "rotation": [4.5, 0, 0], + "uv": { + "north": {"uv": [19, 1], "uv_size": [0.5, 0.25]}, + "east": {"uv": [27, 20], "uv_size": [0.25, 0.25]}, + "south": {"uv": [2, 19], "uv_size": [0.5, 0.25]}, + "west": {"uv": [21, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 2], "uv_size": [0.5, 0.25]}, + "down": {"uv": [3, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4123, 9.97755, 2.63108], + "size": [0.5996, 0.2246, 0.1496], + "inflate": -0.001, + "pivot": [-0.1125, 10.05235, 2.63088], + "rotation": [34.5, 0, 0], + "uv": { + "north": {"uv": [19, 3], "uv_size": [0.5, 0.25]}, + "east": {"uv": [27, 21], "uv_size": [0.25, 0.25]}, + "south": {"uv": [4, 19], "uv_size": [0.5, 0.25]}, + "west": {"uv": [22, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 4], "uv_size": [0.5, 0.25]}, + "down": {"uv": [5, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4123, 9.98866, 2.54612], + "size": [0.5996, 0.4871, 0.4121], + "inflate": -0.001, + "pivot": [-0.1125, 10.17596, 2.54592], + "rotation": [57, 0, 0], + "uv": { + "north": {"uv": [8, 12], "uv_size": [0.5, 0.5]}, + "east": {"uv": [19, 5], "uv_size": [0.25, 0.5]}, + "south": {"uv": [12, 9], "uv_size": [0.5, 0.5]}, + "west": {"uv": [6, 19], "uv_size": [0.25, 0.5]}, + "up": {"uv": [19, 6], "uv_size": [0.5, 0.25]}, + "down": {"uv": [7, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4123, 10.25786, 2.42032], + "size": [0.5996, 0.2246, 0.0746], + "inflate": -0.001, + "pivot": [-0.1125, 10.25766, 2.42012], + "rotation": [79.5, 0, 0], + "uv": { + "north": {"uv": [19, 7], "uv_size": [0.5, 0.25]}, + "east": {"uv": [27, 22], "uv_size": [0.25, 0.25]}, + "south": {"uv": [8, 19], "uv_size": [0.5, 0.25]}, + "west": {"uv": [23, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 8], "uv_size": [0.5, 0.25]}, + "down": {"uv": [9, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4127, 10.14199, 0.01908], + "size": [0.6004, 0.23852, 0.6168], + "inflate": 0.001, + "pivot": [0.7875, 10.38031, 0.63568], + "rotation": [56.5, 0, 0], + "uv": { + "north": {"uv": [19, 9], "uv_size": [0.5, 0.25]}, + "east": {"uv": [10, 19], "uv_size": [0.5, 0.25]}, + "south": {"uv": [19, 10], "uv_size": [0.5, 0.25]}, + "west": {"uv": [11, 19], "uv_size": [0.5, 0.25]}, + "up": {"uv": [12, 10], "uv_size": [0.5, 0.5]}, + "down": {"uv": [11, 12.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.4127, 9.68726, -0.16292], + "size": [0.6004, 0.25546, 0.50904], + "inflate": 0.001, + "pivot": [0.7875, 9.94252, 0.34592], + "rotation": [35.5, 0, 0], + "uv": { + "north": {"uv": [19, 11], "uv_size": [0.5, 0.25]}, + "east": {"uv": [12, 19], "uv_size": [0.5, 0.25]}, + "south": {"uv": [19, 12], "uv_size": [0.5, 0.25]}, + "west": {"uv": [13, 19], "uv_size": [0.5, 0.25]}, + "up": {"uv": [12, 11], "uv_size": [0.5, 0.5]}, + "down": {"uv": [12, 12.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.4127, 9.40337, -0.62142], + "size": [0.6004, 0.23448, 0.64272], + "inflate": 0.001, + "pivot": [0.7875, 9.63765, -0.0815], + "rotation": [15.5, 0, 0], + "uv": { + "north": {"uv": [19, 13], "uv_size": [0.5, 0.25]}, + "east": {"uv": [14, 19], "uv_size": [0.5, 0.25]}, + "south": {"uv": [19, 14], "uv_size": [0.5, 0.25]}, + "west": {"uv": [15, 19], "uv_size": [0.5, 0.25]}, + "up": {"uv": [0, 13], "uv_size": [0.5, 0.5]}, + "down": {"uv": [13, 0.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.4127, 9.27216, -1.0376], + "size": [0.6004, 0.2254, 0.51662], + "inflate": 0.001, + "pivot": [0.7875, 9.49736, -0.5874], + "rotation": [-4.5, 0, 0], + "uv": { + "north": {"uv": [19, 15], "uv_size": [0.5, 0.25]}, + "east": {"uv": [16, 19], "uv_size": [0.5, 0.25]}, + "south": {"uv": [19, 16], "uv_size": [0.5, 0.25]}, + "west": {"uv": [17, 19], "uv_size": [0.5, 0.25]}, + "up": {"uv": [1, 13], "uv_size": [0.5, 0.5]}, + "down": {"uv": [13, 1.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.4127, 9.30746, -1.33621], + "size": [0.6004, 0.2254, 0.3004], + "inflate": 0.001, + "pivot": [-0.1125, 9.53266, -1.03601], + "rotation": [30.5, 0, 0], + "uv": { + "north": {"uv": [19, 17], "uv_size": [0.5, 0.25]}, + "east": {"uv": [27, 23], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 19], "uv_size": [0.5, 0.25]}, + "west": {"uv": [24, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 18], "uv_size": [0.5, 0.25]}, + "down": {"uv": [19, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4127, 9.0802, -1.2947], + "size": [0.6004, 0.3004, 0.2254], + "inflate": 0.001, + "pivot": [-0.1125, 9.3804, -1.2945], + "rotation": [18, 0, 0], + "uv": { + "north": {"uv": [0, 20], "uv_size": [0.5, 0.25]}, + "east": {"uv": [27, 24], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 0], "uv_size": [0.5, 0.25]}, + "west": {"uv": [25, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [1, 20], "uv_size": [0.5, 0.25]}, + "down": {"uv": [20, 1.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.3003, 8.46502, -1.68413], + "size": [0.3756, 0.84435, 0.4131], + "inflate": 0.0015, + "pivot": [-0.075, 9.30907, -1.27133], + "rotation": [36.5, 0, 0], + "uv": { + "north": {"uv": [11, 15], "uv_size": [0.25, 0.75]}, + "east": {"uv": [15, 11], "uv_size": [0.25, 0.75]}, + "south": {"uv": [12, 15], "uv_size": [0.25, 0.75]}, + "west": {"uv": [15, 12], "uv_size": [0.25, 0.75]}, + "up": {"uv": [27, 25], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3003, 8.7634, -1.60322], + "size": [0.3756, 0.3006, 0.3006], + "inflate": 0.0015, + "pivot": [-0.1125, 9.0637, -1.60292], + "rotation": [-8.5, 0, 0], + "uv": { + "north": {"uv": [27, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 0], "uv_size": [0.25, 0.25]}, + "up": {"uv": [1, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 1.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1125, 8.46228, -1.60433], + "size": [0, 0.6, 0.3], + "pivot": [-0.1125, 9.06228, -1.60433], + "rotation": [-47.25, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [2, 20], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [20, 2], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 8.59614, -1.82463], + "size": [0, 0.5625, 0.35377], + "pivot": [-0.1125, 8.85864, -1.82463], + "rotation": [-51.90776, 21.08568, -24.65283], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [3, 20], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [20, 3], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.075, 8.46016, -2.16449], + "size": [0, 0.04618, 0.35075], + "pivot": [0.075, 8.46016, -1.81374], + "rotation": [-44.40776, 21.08568, -24.65283], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [2, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 2], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 7.455, -2.04492], + "size": [0, 1.2, 0.3], + "pivot": [-0.1125, 8.655, -2.04492], + "rotation": [-36.75, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [2, 13], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [3, 13], "uv_size": [0.25, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 7.61175, -2.40392], + "size": [0, 1.14375, 0.35378], + "pivot": [-0.1125, 8.17425, -2.40392], + "rotation": [-41.36669, 25.12938, -20.50343], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [13, 3], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [4, 13], "uv_size": [0.25, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.075, 8.44504, -2.16921], + "size": [0, 0.01544, 0.35344], + "pivot": [0.075, 8.46048, -1.81577], + "rotation": [-43.86669, 25.12938, -20.50343], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [3, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 3], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.075, 7.54405, -2.85266], + "size": [0, 0.02929, 0.35256], + "pivot": [0.075, 7.54405, -2.5001], + "rotation": [-36.61669, 25.12938, -20.50343], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [4, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 4], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 6.4935, -2.76292], + "size": [0, 1.2, 0.3], + "pivot": [-0.1125, 7.6935, -2.76292], + "rotation": [-21.75, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [13, 4], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [13, 5], "uv_size": [0.25, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 6.59246, -2.98524], + "size": [0, 1.10624, 0.35377], + "pivot": [-0.1125, 7.1362, -2.98524], + "rotation": [-25.19568, 29.48977, -13.03971], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [13, 6], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [7, 13], "uv_size": [0.25, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.075, 7.50132, -2.84891], + "size": [0, 0.04617, 0.35075], + "pivot": [0.075, 7.54749, -2.49816], + "rotation": [-32.69568, 29.48977, -13.03971], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [5, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 5], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.075, 6.52, -3.25842], + "size": [0, 0.04924, 0.35032], + "pivot": [0.075, 6.52, -2.9081], + "rotation": [-17.19568, 29.48977, -13.03971], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [6, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 6], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 5.47267, -3.20758], + "size": [0, 1.10625, 0.3], + "pivot": [-0.1125, 6.57892, -3.20758], + "rotation": [-6.5, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [13, 7], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [8, 13], "uv_size": [0.25, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 5.38278, -3.2755], + "size": [0, 1.18125, 0.35377], + "pivot": [-0.1125, 5.98278, -3.2755], + "rotation": [-7.65234, 31.77548, -4.04705], + "uv": { + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [13, 8], "uv_size": [0.25, 1]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.075, 6.4955, -3.26406], + "size": [0, 0.03083, 0.35242], + "pivot": [0.075, 6.52633, -2.91164], + "rotation": [-12.65234, 31.77548, -4.04705], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [7, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 7], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 4.48664, -3.34343], + "size": [0, 0.9, 0.225], + "pivot": [-0.1125, 5.38664, -3.34343], + "rotation": [7, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "east": {"uv": [13, 15], "uv_size": [0.25, 0.75]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "west": {"uv": [15, 13], "uv_size": [0.25, 0.75]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 4.48999, -3.28859], + "size": [0, 0.8625, 0.1875], + "pivot": [-0.1125, 4.93999, -3.28859], + "rotation": [8.30602, 32.47572, 4.48219], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "east": {"uv": [14, 15], "uv_size": [0.25, 0.75]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "west": {"uv": [15, 14], "uv_size": [0.25, 0.75]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.01106, 5.29364, -3.36983], + "size": [0, 0.075, 0.1875], + "pivot": [-0.01106, 5.36864, -3.18233], + "rotation": [-2.44398, 32.47572, 4.48219], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [8, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 8], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.01106, 4.51256, -3.24598], + "size": [0, 0.84376, 0.16876], + "pivot": [-0.01106, 4.51256, -3.07722], + "rotation": [-2.56205, 32.4761, 4.47305], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "east": {"uv": [15, 15], "uv_size": [0.25, 0.75]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "west": {"uv": [0, 16], "uv_size": [0.25, 0.75]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 3.96835, -3.23374], + "size": [0, 0.525, 0.075], + "pivot": [-0.1125, 4.49335, -3.23374], + "rotation": [19.5, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [4, 20], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [20, 4], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 3.98341, -3.14612], + "size": [0.075, 0.525, 0], + "pivot": [-0.1125, 4.24591, -3.14612], + "rotation": [32.85665, -52.02861, -26.98247], + "uv": { + "north": {"uv": [5, 20], "uv_size": [0.25, 0.5]}, + "east": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "south": {"uv": [20, 5], "uv_size": [0.25, 0.5]}, + "west": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "down": {"uv": [0, 0], "uv_size": [0.25, 0]} + } + }, + { + "origin": [-0.14638, 4.0194, -2.99937], + "size": [0.075, 0.50625, 0], + "pivot": [-0.07138, 4.0194, -2.99937], + "rotation": [16.68037, -57.36158, -7.18933], + "uv": { + "north": {"uv": [6, 20], "uv_size": [0.25, 0.5]}, + "east": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "south": {"uv": [20, 6], "uv_size": [0.25, 0.5]}, + "west": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "down": {"uv": [0, 0], "uv_size": [0.25, 0]} + } + }, + { + "origin": [-0.18388, 4.3194, -2.99937], + "size": [0.0375, 0.20625, 0], + "pivot": [-0.07138, 4.0194, -2.99937], + "rotation": [16.68037, -57.36158, -7.18933], + "uv": { + "north": {"uv": [9, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "south": {"uv": [28, 9], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "down": {"uv": [0, 0], "uv_size": [0.25, 0]} + } + }, + { + "origin": [-0.1125, 4.0235, -3.0628], + "size": [0, 0.50624, 0.075], + "pivot": [-0.1125, 4.0235, -2.9878], + "rotation": [2, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [7, 20], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [20, 7], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.00466, 4.00183, -3.08024], + "size": [0, 0.54374, 0.0375], + "pivot": [-0.00466, 4.52683, -3.08024], + "rotation": [13.75584, -55.19972, -2.87997], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [8, 20], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [20, 8], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.00466, 4.18933, -3.04274], + "size": [0, 0.35624, 0.0375], + "pivot": [-0.00466, 4.52683, -3.08024], + "rotation": [13.75584, -55.19972, -2.87997], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [10, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 10], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.00466, 4.41433, -3.00524], + "size": [0, 0.1125, 0.0375], + "pivot": [-0.00466, 4.52683, -3.08024], + "rotation": [13.75584, -55.19972, -2.87997], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [11, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 11], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 4.02334, -3.03413], + "size": [0, 0.50625, 0.0375], + "pivot": [-0.1125, 4.27646, -2.99663], + "rotation": [3.50584, -55.19972, -2.87997], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [9, 20], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [20, 9], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 4.54706, -3.1601], + "size": [0, 0.6, 0.225], + "pivot": [-0.1125, 4.84706, -3.0476], + "rotation": [-13, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [10, 20], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [20, 10], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 4.52175, -3.06923], + "size": [0, 0.675, 0.13125], + "pivot": [-0.1125, 4.82175, -2.93798], + "rotation": [-18.0817, -43.54971, 12.67771], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [11, 20], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [20, 11], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.07312, 4.53706, -3.05135], + "size": [0, 0.80625, 0.13124], + "pivot": [0.07312, 5.15581, -3.05135], + "rotation": [-5.5817, -43.54971, 12.67771], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "east": {"uv": [16, 0], "uv_size": [0.25, 0.75]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "west": {"uv": [1, 16], "uv_size": [0.25, 0.75]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 5.41406, -3.26424], + "size": [0, 1.2, 0.39374], + "pivot": [-0.1125, 5.11406, -2.8705], + "rotation": [-25.5, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [9, 13], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [13, 9], "uv_size": [0.25, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 5.03906, -3.26424], + "size": [0, 0.375, 0.39374], + "pivot": [-0.1125, 5.11406, -2.8705], + "rotation": [-25.5, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [12, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 12], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 5.04465, -2.83982], + "size": [0, 1.5, 0.27606], + "pivot": [-0.1125, 5.75715, -2.56376], + "rotation": [-28.95918, -27.23421, 14.21093], + "uv": { + "west": {"uv": [2, 11], "uv_size": [0.25, 1.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.04648, 5.3658, -3.04985], + "size": [0, 0.15, 0.075], + "pivot": [0.04648, 5.3658, -3.04985], + "rotation": [-8.40313, -27.23421, 14.21093], + "uv": { + "west": {"uv": [13, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 5.30715, -2.93356], + "size": [0, 1.2375, 0.09374], + "pivot": [-0.1125, 5.75715, -2.56376], + "rotation": [-28.95918, -27.23421, 14.21093], + "uv": { + "west": {"uv": [10, 13], "uv_size": [0.25, 1]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 5.38278, -3.2755], + "size": [0, 1.18125, 0.35377], + "pivot": [-0.1125, 5.98278, -3.2755], + "rotation": [-7.65234, -31.77548, 4.04705], + "uv": { + "east": {"uv": [13, 10], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 5.30715, -2.93356], + "size": [0, 1.2375, 0.09374], + "pivot": [-0.1125, 5.75715, -2.56376], + "rotation": [-28.95918, 27.23421, -14.21093], + "uv": { + "east": {"uv": [11, 13], "uv_size": [0.25, 1]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.27148, 5.3658, -3.04985], + "size": [0, 0.15, 0.075], + "pivot": [-0.27148, 5.3658, -3.04985], + "rotation": [-8.40313, 27.23421, -14.21093], + "uv": { + "east": {"uv": [28, 13], "uv_size": [0.25, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 5.04465, -2.83982], + "size": [0, 1.5, 0.27606], + "pivot": [-0.1125, 5.75715, -2.56376], + "rotation": [-28.95918, 27.23421, -14.21093], + "uv": { + "east": {"uv": [11, 2], "uv_size": [0.25, 1.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.29812, 4.53706, -3.05135], + "size": [0, 0.80625, 0.13124], + "pivot": [-0.29812, 5.15581, -3.05135], + "rotation": [-5.5817, 43.54971, -12.67771], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "east": {"uv": [16, 1], "uv_size": [0.25, 0.75]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "west": {"uv": [2, 16], "uv_size": [0.25, 0.75]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 4.52175, -3.06923], + "size": [0, 0.675, 0.13125], + "pivot": [-0.1125, 4.82175, -2.93798], + "rotation": [-18.0817, 43.54971, -12.67771], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [12, 20], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [20, 12], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.21394, 4.51256, -3.24598], + "size": [0, 0.84376, 0.16876], + "pivot": [-0.21394, 4.51256, -3.07722], + "rotation": [-2.56205, -32.4761, -4.47305], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "east": {"uv": [16, 2], "uv_size": [0.25, 0.75]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "west": {"uv": [3, 16], "uv_size": [0.25, 0.75]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 4.48999, -3.28859], + "size": [0, 0.8625, 0.1875], + "pivot": [-0.1125, 4.93999, -3.28859], + "rotation": [8.30602, -32.47572, -4.48219], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "east": {"uv": [16, 3], "uv_size": [0.25, 0.75]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "west": {"uv": [4, 16], "uv_size": [0.25, 0.75]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.21394, 5.29364, -3.36983], + "size": [0, 0.075, 0.1875], + "pivot": [-0.21394, 5.36864, -3.18233], + "rotation": [-2.44398, -32.47572, -4.48219], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [14, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 14], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.15362, 4.0194, -2.99937], + "size": [0.075, 0.50625, 0], + "pivot": [-0.15362, 4.0194, -2.99937], + "rotation": [16.68037, 57.36158, 7.18933], + "uv": { + "north": {"uv": [13, 20], "uv_size": [0.25, 0.5]}, + "east": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "south": {"uv": [20, 13], "uv_size": [0.25, 0.5]}, + "west": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "down": {"uv": [0, 0], "uv_size": [0.25, 0]} + } + }, + { + "origin": [-0.1875, 3.98341, -3.14612], + "size": [0.075, 0.525, 0], + "pivot": [-0.1125, 4.24591, -3.14612], + "rotation": [32.85665, 52.02861, 26.98247], + "uv": { + "north": {"uv": [14, 20], "uv_size": [0.25, 0.5]}, + "east": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "south": {"uv": [20, 14], "uv_size": [0.25, 0.5]}, + "west": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "down": {"uv": [0, 0], "uv_size": [0.25, 0]} + } + }, + { + "origin": [-0.07862, 4.3194, -2.99937], + "size": [0.0375, 0.20625, 0], + "pivot": [-0.15362, 4.0194, -2.99937], + "rotation": [16.68037, 57.36158, 7.18933], + "uv": { + "north": {"uv": [15, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "south": {"uv": [28, 15], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "down": {"uv": [0, 0], "uv_size": [0.25, 0]} + } + }, + { + "origin": [-0.22034, 4.18933, -3.04274], + "size": [0, 0.35624, 0.0375], + "pivot": [-0.22034, 4.52683, -3.08024], + "rotation": [13.75584, 55.19972, 2.87997], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [16, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 16], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 4.02334, -3.03413], + "size": [0, 0.50625, 0.0375], + "pivot": [-0.1125, 4.27646, -2.99663], + "rotation": [3.50584, 55.19972, 2.87997], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [15, 20], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [20, 15], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.22034, 4.41433, -3.00524], + "size": [0, 0.1125, 0.0375], + "pivot": [-0.22034, 4.52683, -3.08024], + "rotation": [13.75584, 55.19972, 2.87997], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [17, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 17], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.22034, 4.00183, -3.08024], + "size": [0, 0.54374, 0.0375], + "pivot": [-0.22034, 4.52683, -3.08024], + "rotation": [13.75584, 55.19972, 2.87997], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [16, 20], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [20, 16], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 6.35544, -2.52473], + "size": [0, 1.66875, 0.3], + "pivot": [-0.1125, 6.46794, -2.22473], + "rotation": [-45.5, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1.5]}, + "east": {"uv": [8, 5], "uv_size": [0.25, 1.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 1.5]}, + "west": {"uv": [7, 8], "uv_size": [0.25, 1.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 6.13953, -2.06362], + "size": [0, 1.66875, 0.35377], + "pivot": [-0.1125, 6.9739, -1.70985], + "rotation": [-50.19469, -21.80699, 24.02643], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1.5]}, + "east": {"uv": [8, 7], "uv_size": [0.25, 1.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 1.5]}, + "west": {"uv": [0, 9], "uv_size": [0.25, 1.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 7.46305, -1.45485], + "size": [0, 1.10625, 0.3], + "pivot": [-0.1125, 7.5193, -1.15485], + "rotation": [-65, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [13, 11], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [12, 13], "uv_size": [0.25, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 7.02616, -1.05831], + "size": [0, 1.25625, 0.35377], + "pivot": [-0.1125, 7.72929, -0.70454], + "rotation": [-68.42477, -12.94333, 29.52905], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [13, 12], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [13, 13], "uv_size": [0.25, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.3, 6.4955, -3.26406], + "size": [0, 0.03083, 0.35242], + "pivot": [-0.3, 6.52633, -2.91164], + "rotation": [-12.65234, -31.77548, 4.04705], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [18, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 18], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.3, 6.52, -3.25842], + "size": [0, 0.04924, 0.35032], + "pivot": [-0.3, 6.52, -2.9081], + "rotation": [-17.19568, -29.48977, 13.03971], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [19, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 19], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 6.59246, -2.98524], + "size": [0, 1.10624, 0.35377], + "pivot": [-0.1125, 7.1362, -2.98524], + "rotation": [-25.19568, -29.48977, 13.03971], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [0, 14], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [14, 0], "uv_size": [0.25, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.3, 7.50132, -2.84891], + "size": [0, 0.04617, 0.35075], + "pivot": [-0.3, 7.54749, -2.49816], + "rotation": [-32.69568, -29.48977, 13.03971], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [20, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 20], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.3, 7.54405, -2.85266], + "size": [0, 0.02929, 0.35256], + "pivot": [-0.3, 7.54405, -2.5001], + "rotation": [-36.61669, -25.12938, 20.50343], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [21, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 7.61175, -2.40392], + "size": [0, 1.14375, 0.35378], + "pivot": [-0.1125, 8.17425, -2.40392], + "rotation": [-41.36669, -25.12938, 20.50343], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [1, 14], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [14, 1], "uv_size": [0.25, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 8.59614, -1.82463], + "size": [0, 0.5625, 0.35377], + "pivot": [-0.1125, 8.85864, -1.82463], + "rotation": [-51.90776, -21.08568, 24.65283], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [17, 20], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [20, 17], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.3, 8.46016, -2.16449], + "size": [0, 0.04618, 0.35075], + "pivot": [-0.3, 8.46016, -1.81374], + "rotation": [-44.40776, -21.08568, 24.65283], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [22, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 22], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.3, 8.44504, -2.16921], + "size": [0, 0.01544, 0.35344], + "pivot": [-0.3, 8.46048, -1.81577], + "rotation": [-43.86669, -25.12938, 20.50343], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [23, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 7.02616, -1.05831], + "size": [0, 1.25625, 0.35377], + "pivot": [-0.1125, 7.72929, -0.70454], + "rotation": [-68.42477, 12.94333, -29.52905], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [2, 14], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [14, 2], "uv_size": [0.25, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 6.13953, -2.06362], + "size": [0, 1.66875, 0.35377], + "pivot": [-0.1125, 6.9739, -1.70985], + "rotation": [-50.19469, 21.80699, -24.02643], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1.5]}, + "east": {"uv": [9, 0], "uv_size": [0.25, 1.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 1.5]}, + "west": {"uv": [1, 9], "uv_size": [0.25, 1.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.1125, 5.34465, -2.93356], + "size": [0, 1.2, 0.3698], + "pivot": [-0.1125, 5.75715, -2.56376], + "rotation": [-28.95918, 27.23421, -14.21093], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [3, 14], "uv_size": [0.25, 1]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.3, 5.6578, -3.26424], + "size": [0.375, 0.95626, 0.075], + "pivot": [-0.225, 5.11406, -2.8705], + "rotation": [-25.5, 0, 0], + "uv": { + "north": {"uv": [16, 4], "uv_size": [0.25, 0.75]}, + "east": {"uv": [5, 16], "uv_size": [0.25, 0.75]}, + "south": {"uv": [16, 5], "uv_size": [0.25, 0.75]}, + "west": {"uv": [6, 16], "uv_size": [0.25, 0.75]}, + "up": {"uv": [24, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 24.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.2998, 6.35564, -2.88078], + "size": [0.3746, 1.66835, 0.35585], + "inflate": -0.001, + "pivot": [-0.225, 6.46794, -2.22473], + "rotation": [-45.5, 0, 0], + "uv": { + "north": {"uv": [2, 9], "uv_size": [0.25, 1.5]}, + "east": {"uv": [9, 2], "uv_size": [0.25, 1.5]}, + "south": {"uv": [3, 9], "uv_size": [0.25, 1.5]}, + "west": {"uv": [4, 9], "uv_size": [0.25, 1.5]}, + "up": {"uv": [25, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.2998, 7.08689, -3.14421], + "size": [0.3746, 0.99336, 0.2246], + "inflate": -0.001, + "pivot": [-0.225, 6.4268, -2.26317], + "rotation": [-45.5, 0, 0], + "uv": { + "north": {"uv": [7, 5], "uv_size": [0.25, 0.75]}, + "east": {"uv": [7, 7], "uv_size": [0.25, 0.75]}, + "south": {"uv": [14, 6], "uv_size": [0.25, 0.75]}, + "west": {"uv": [7, 14], "uv_size": [0.25, 0.75]}, + "up": {"uv": [18, 20], "uv_size": [0.25, 0.25]}, + "down": {"uv": [20, 18.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3, 7.31305, -2.20485], + "size": [0.375, 1.25625, 0.75], + "pivot": [-0.225, 7.5193, -1.15485], + "rotation": [-65, 0, 0], + "uv": { + "north": {"uv": [14, 3], "uv_size": [0.25, 1]}, + "east": {"uv": [3, 1], "uv_size": [0.75, 1]}, + "south": {"uv": [4, 14], "uv_size": [0.25, 1]}, + "west": {"uv": [4, 1], "uv_size": [0.75, 1]}, + "up": {"uv": [16, 6], "uv_size": [0.25, 0.75]}, + "down": {"uv": [7, 16.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.1125, 4.2485, -3.1378], + "size": [0, 0.28124, 0.075], + "pivot": [-0.1125, 4.0235, -2.9878], + "rotation": [2, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [26, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [28, 26], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.2998, 5.54787, -2.90738], + "size": [0.3746, 0.7871, 0.0746], + "inflate": -0.001, + "pivot": [-0.075, 6.57892, -3.20758], + "rotation": [-6.5, 0, 0], + "uv": { + "north": {"uv": [16, 7], "uv_size": [0.25, 0.75]}, + "east": {"uv": [8, 16], "uv_size": [0.25, 0.75]}, + "west": {"uv": [16, 8], "uv_size": [0.25, 0.75]}, + "up": {"uv": [27, 28], "uv_size": [0.25, 0.25]} + } + }, + { + "origin": [-0.2998, 6.31662, -2.90738], + "size": [0.3746, 0.24335, 0.0746], + "inflate": -0.001, + "pivot": [-0.075, 6.57892, -3.20758], + "rotation": [-6.5, 0, 0], + "uv": { + "north": {"uv": [32, 5], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 6], "uv_size": [0.25, 0.25]}, + "up": {"uv": [7, 32], "uv_size": [0.25, 0.25]} + } + }, + { + "origin": [-0.3, 6.27892, -2.83258], + "size": [0.375, 0.28125, 0.16874], + "pivot": [-0.075, 6.57892, -3.20758], + "rotation": [-6.5, 0, 0], + "uv": { + "north": {"uv": [28, 27], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [29, 0], "uv_size": [0.25, 0.25]}, + "up": {"uv": [1, 29], "uv_size": [0.25, 0.25]}, + "down": {"uv": [29, 1.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3, 6.01642, -2.83258], + "size": [0.375, 0.2625, 0.09374], + "pivot": [-0.075, 6.57892, -3.20758], + "rotation": [-6.5, 0, 0], + "uv": { + "north": {"uv": [2, 29], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 2], "uv_size": [0.25, 0.25]}, + "south": {"uv": [3, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [29, 3], "uv_size": [0.25, 0.25]}, + "up": {"uv": [4, 29], "uv_size": [0.25, 0.25]}, + "down": {"uv": [29, 4.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3002, 6.54954, -2.46312], + "size": [0.3754, 1.10666, 0.31916], + "inflate": 0.001, + "pivot": [-0.075, 7.6935, -2.76292], + "rotation": [-21.75, 0, 0], + "uv": { + "north": {"uv": [14, 4], "uv_size": [0.25, 1]}, + "east": {"uv": [5, 14], "uv_size": [0.25, 1]}, + "south": {"uv": [14, 5], "uv_size": [0.25, 1]}, + "west": {"uv": [6, 14], "uv_size": [0.25, 1]}, + "up": {"uv": [5, 29], "uv_size": [0.25, 0.25]}, + "down": {"uv": [29, 5.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3002, 7.4923, -1.74512], + "size": [0.3754, 1.14415, 0.31914], + "inflate": 0.001, + "pivot": [-0.075, 8.655, -2.04492], + "rotation": [-36.75, 0, 0], + "uv": { + "north": {"uv": [32, 7], "uv_size": [0.25, 1]}, + "east": {"uv": [8, 32], "uv_size": [0.25, 1]}, + "south": {"uv": [32, 8], "uv_size": [0.25, 1]}, + "west": {"uv": [9, 32], "uv_size": [0.25, 1]}, + "up": {"uv": [32, 12], "uv_size": [0.25, 0.25]}, + "down": {"uv": [13, 32.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3, 8.49978, -1.30433], + "size": [0.375, 0.5625, 0.225], + "pivot": [-0.075, 9.06228, -1.60433], + "rotation": [-47.25, 0, 0], + "uv": { + "north": {"uv": [19, 20], "uv_size": [0.25, 0.5]}, + "east": {"uv": [20, 19], "uv_size": [0.25, 0.5]}, + "south": {"uv": [20, 20], "uv_size": [0.25, 0.5]}, + "west": {"uv": [0, 21], "uv_size": [0.25, 0.5]}, + "up": {"uv": [6, 29], "uv_size": [0.25, 0.25]}, + "down": {"uv": [29, 6.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3002, 8.49958, -1.30453], + "size": [0.3754, 0.5629, 0.31915], + "inflate": 0.001, + "pivot": [-0.075, 9.06228, -1.60433], + "rotation": [-47.25, 0, 0], + "uv": { + "north": {"uv": [32, 9], "uv_size": [0.25, 0.5]}, + "east": {"uv": [10, 32], "uv_size": [0.25, 0.5]}, + "south": {"uv": [32, 10], "uv_size": [0.25, 0.5]}, + "west": {"uv": [11, 32], "uv_size": [0.25, 0.5]}, + "up": {"uv": [32, 11], "uv_size": [0.25, 0.25]}, + "down": {"uv": [12, 32.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3002, 8.38525, -1.10124], + "size": [0.3754, 0.3004, 0.2254], + "inflate": 0.001, + "pivot": [-0.1125, 8.38545, -1.10104], + "rotation": [9, 0, 0], + "uv": { + "north": {"uv": [7, 29], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 7], "uv_size": [0.25, 0.25]}, + "south": {"uv": [8, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [29, 8], "uv_size": [0.25, 0.25]}, + "up": {"uv": [9, 29], "uv_size": [0.25, 0.25]}, + "down": {"uv": [29, 9.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3002, 8.42045, -0.95401], + "size": [0.3754, 0.3004, 0.3004], + "inflate": 0.001, + "pivot": [-0.1125, 8.42065, -0.87881], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [10, 29], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 10], "uv_size": [0.25, 0.25]}, + "south": {"uv": [11, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [29, 11], "uv_size": [0.25, 0.25]}, + "up": {"uv": [12, 29], "uv_size": [0.25, 0.25]}, + "down": {"uv": [29, 12.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3002, 8.33435, -0.72738], + "size": [0.3754, 0.2254, 0.50664], + "inflate": 0.001, + "pivot": [-0.1125, 8.33455, -0.67094], + "rotation": [-36.25, 0, 0], + "uv": { + "north": {"uv": [13, 29], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 0], "uv_size": [0.5, 0.25]}, + "south": {"uv": [29, 13], "uv_size": [0.25, 0.25]}, + "west": {"uv": [1, 21], "uv_size": [0.5, 0.25]}, + "up": {"uv": [21, 1], "uv_size": [0.25, 0.5]}, + "down": {"uv": [2, 21.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.3002, 8.06826, -0.34573], + "size": [0.3754, 0.2254, 0.1879], + "inflate": 0.001, + "pivot": [-0.1125, 8.06846, -0.30803], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [14, 29], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 14], "uv_size": [0.25, 0.25]}, + "south": {"uv": [15, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [29, 15], "uv_size": [0.25, 0.25]}, + "up": {"uv": [16, 29], "uv_size": [0.25, 0.25]}, + "down": {"uv": [29, 16.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3002, 7.89412, -0.3949], + "size": [0.3754, 0.2629, 0.1504], + "inflate": 0.001, + "pivot": [-0.1125, 7.89432, -0.1697], + "rotation": [-65, 0, 0], + "uv": { + "north": {"uv": [17, 29], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 17], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [29, 18], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 29], "uv_size": [0.25, 0.25]}, + "down": {"uv": [29, 19.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.4127, 8.79488, -1.202], + "size": [0.6004, 0.4129, 0.19525], + "inflate": 0.001, + "pivot": [-0.1125, 9.09508, -1.2018], + "rotation": [-12, 0, 0], + "uv": { + "north": {"uv": [21, 2], "uv_size": [0.5, 0.25]}, + "east": {"uv": [20, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [3, 21], "uv_size": [0.5, 0.25]}, + "west": {"uv": [29, 20], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 3], "uv_size": [0.5, 0.25]}, + "down": {"uv": [4, 21.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4127, 8.59519, -1.26437], + "size": [0.6004, 0.289, 0.17699], + "inflate": 0.001, + "pivot": [-0.1125, 8.80164, -1.26417], + "rotation": [-37, 0, 0], + "uv": { + "north": {"uv": [21, 4], "uv_size": [0.5, 0.25]}, + "east": {"uv": [21, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [5, 21], "uv_size": [0.5, 0.25]}, + "west": {"uv": [29, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 5], "uv_size": [0.5, 0.25]}, + "down": {"uv": [6, 21.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4127, 8.63672, -1.3885], + "size": [0.6004, 0.1504, 0.16915], + "inflate": 0.001, + "pivot": [-0.1125, 8.63692, -1.3883], + "rotation": [-62, 0, 0], + "uv": { + "north": {"uv": [21, 6], "uv_size": [0.5, 0.25]}, + "east": {"uv": [22, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [7, 21], "uv_size": [0.5, 0.25]}, + "west": {"uv": [29, 22], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 7], "uv_size": [0.5, 0.25]}, + "down": {"uv": [8, 21.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4127, 8.48772, -1.45927], + "size": [0.6004, 0.4504, 0.1504], + "inflate": 0.001, + "pivot": [-0.1125, 8.48792, -1.30907], + "rotation": [-79.5, 0, 0], + "uv": { + "north": {"uv": [14, 7], "uv_size": [0.5, 0.5]}, + "east": {"uv": [21, 8], "uv_size": [0.25, 0.5]}, + "south": {"uv": [8, 14], "uv_size": [0.5, 0.5]}, + "west": {"uv": [9, 21], "uv_size": [0.25, 0.5]}, + "up": {"uv": [21, 9], "uv_size": [0.5, 0.25]}, + "down": {"uv": [10, 21.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4125, 8.71742, -0.89394], + "size": [0.6, 0.39374, 0.15], + "pivot": [-0.1125, 8.71742, -0.89394], + "rotation": [-99.5, 0, 0], + "uv": { + "north": {"uv": [21, 10], "uv_size": [0.5, 0.25]}, + "east": {"uv": [23, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [11, 21], "uv_size": [0.5, 0.25]}, + "west": {"uv": [29, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 11], "uv_size": [0.5, 0.25]}, + "down": {"uv": [12, 21.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4125, 8.65243, -0.8056], + "size": [0.6, 0.76875, 0.45], + "pivot": [-0.1125, 8.65243, -0.5056], + "rotation": [-124.75, 0, 0], + "uv": { + "north": {"uv": [9, 4], "uv_size": [0.5, 0.75]}, + "east": {"uv": [5, 9], "uv_size": [0.5, 0.75]}, + "south": {"uv": [9, 5], "uv_size": [0.5, 0.75]}, + "west": {"uv": [6, 9], "uv_size": [0.5, 0.75]}, + "up": {"uv": [14, 8], "uv_size": [0.5, 0.5]}, + "down": {"uv": [9, 14.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.4125, 8.29975, 0.0028], + "size": [0.6, 0.28124, 0.15], + "pivot": [-0.1125, 8.29975, 0.0028], + "rotation": [-147, 0, 0], + "uv": { + "north": {"uv": [21, 12], "uv_size": [0.5, 0.25]}, + "east": {"uv": [24, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [13, 21], "uv_size": [0.5, 0.25]}, + "west": {"uv": [29, 24], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 13], "uv_size": [0.5, 0.25]}, + "down": {"uv": [14, 21.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4125, 7.75717, -0.34482], + "size": [0.6, 0.225, 0.375], + "pivot": [-0.1125, 7.98217, 0.03018], + "rotation": [-167, 0, 0], + "uv": { + "north": {"uv": [21, 14], "uv_size": [0.5, 0.25]}, + "east": {"uv": [25, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [15, 21], "uv_size": [0.5, 0.25]}, + "west": {"uv": [29, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 15], "uv_size": [0.5, 0.25]}, + "down": {"uv": [16, 21.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4125, 7.89096, 0.36182], + "size": [0.6, 0.24673, 0.21893], + "pivot": [-0.1125, 8.21269, 0.36182], + "rotation": [-167, 0, 0], + "uv": { + "north": {"uv": [21, 16], "uv_size": [0.5, 0.25]}, + "east": {"uv": [26, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [17, 21], "uv_size": [0.5, 0.25]}, + "west": {"uv": [29, 26], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 17], "uv_size": [0.5, 0.25]}, + "down": {"uv": [18, 21.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4125, 7.85121, -0.00182], + "size": [0.6, 0.62004, 0.22228], + "pivot": [-0.1125, 8.47125, 0.14818], + "rotation": [175.5, 0, 0], + "uv": { + "north": {"uv": [14, 9], "uv_size": [0.5, 0.5]}, + "east": {"uv": [21, 18], "uv_size": [0.25, 0.5]}, + "south": {"uv": [10, 14], "uv_size": [0.5, 0.5]}, + "west": {"uv": [19, 21], "uv_size": [0.25, 0.5]}, + "up": {"uv": [21, 19], "uv_size": [0.5, 0.25]}, + "down": {"uv": [20, 21.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4125, 8.4319, 0.04526], + "size": [0.6, 0.6375, 0.375], + "pivot": [-0.1125, 9.0694, 0.19526], + "rotation": [160, 0, 0], + "uv": { + "north": {"uv": [14, 10], "uv_size": [0.5, 0.5]}, + "east": {"uv": [21, 20], "uv_size": [0.25, 0.5]}, + "south": {"uv": [11, 14], "uv_size": [0.5, 0.5]}, + "west": {"uv": [21, 21], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 22], "uv_size": [0.5, 0.25]}, + "down": {"uv": [22, 0.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4125, 8.58735, -1.16049], + "size": [0.6, 0.8625, 1.425], + "uv": { + "north": {"uv": [9, 6], "uv_size": [0.5, 0.75]}, + "east": {"uv": [2, 2], "uv_size": [1.25, 0.75]}, + "south": {"uv": [9, 7], "uv_size": [0.5, 0.75]}, + "west": {"uv": [3, 0], "uv_size": [1.25, 0.75]}, + "up": {"uv": [0, 5], "uv_size": [0.5, 1.25]}, + "down": {"uv": [1, 6.25], "uv_size": [0.5, -1.25]} + } + }, + { + "origin": [-0.4125, 8.99798, 0.23764], + "size": [0.6, 0.6, 0.225], + "pivot": [-0.1125, 9.59798, 0.38764], + "rotation": [137.5, 0, 0], + "uv": { + "north": {"uv": [14, 11], "uv_size": [0.5, 0.5]}, + "east": {"uv": [1, 22], "uv_size": [0.25, 0.5]}, + "south": {"uv": [12, 14], "uv_size": [0.5, 0.5]}, + "west": {"uv": [22, 1], "uv_size": [0.25, 0.5]}, + "up": {"uv": [2, 22], "uv_size": [0.5, 0.25]}, + "down": {"uv": [22, 2.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4127, 10.54579, 1.77011], + "size": [0.6004, 0.2254, 1.3504], + "inflate": 0.001, + "pivot": [0.7875, 10.77099, 1.77031], + "rotation": [10.25, 0, 0], + "uv": { + "north": {"uv": [3, 22], "uv_size": [0.5, 0.25]}, + "east": {"uv": [10, 9], "uv_size": [1.25, 0.25]}, + "south": {"uv": [22, 3], "uv_size": [0.5, 0.25]}, + "west": {"uv": [3, 11], "uv_size": [1.25, 0.25]}, + "up": {"uv": [5, 2], "uv_size": [0.5, 1.25]}, + "down": {"uv": [5, 5.25], "uv_size": [0.5, -1.25]} + } + }, + { + "origin": [-0.4127, 10.78602, 3.09856], + "size": [0.6004, 0.2254, 1.6504], + "inflate": 0.001, + "pivot": [0.7875, 11.01122, 3.09876], + "rotation": [0.25, 0, 0], + "uv": { + "north": {"uv": [4, 22], "uv_size": [0.5, 0.25]}, + "east": {"uv": [8, 9], "uv_size": [1.5, 0.25]}, + "south": {"uv": [22, 4], "uv_size": [0.5, 0.25]}, + "west": {"uv": [9, 8], "uv_size": [1.5, 0.25]}, + "up": {"uv": [4, 2], "uv_size": [0.5, 1.5]}, + "down": {"uv": [4, 5.5], "uv_size": [0.5, -1.5]} + } + }, + { + "origin": [-0.2627, 9.53246, -1.33621], + "size": [0.3004, 0.1504, 0.35664], + "inflate": 0.001, + "pivot": [-0.1125, 9.53266, -1.03601], + "rotation": [30.5, 0, 0], + "uv": { + "north": {"uv": [27, 29], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [28, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [29, 28], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 29], "uv_size": [0.25, 0.25]}, + "down": {"uv": [0, 30.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.2627, 9.49716, -1.0751], + "size": [0.3004, 0.1504, 0.55412], + "inflate": 0.001, + "pivot": [0.7875, 9.49736, -0.5874], + "rotation": [-4.5, 0, 0], + "uv": { + "north": {"uv": [30, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [1, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 5], "uv_size": [0.5, 0.25]}, + "up": {"uv": [6, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 6.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.2627, 9.63745, -0.62142], + "size": [0.3004, 0.1504, 0.64272], + "inflate": 0.001, + "pivot": [0.7875, 9.63765, -0.0815], + "rotation": [15.5, 0, 0], + "uv": { + "north": {"uv": [30, 1], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [2, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 7], "uv_size": [0.5, 0.25]}, + "up": {"uv": [8, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 8.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.2627, 9.94232, -0.16292], + "size": [0.3004, 0.1504, 0.50904], + "inflate": 0.001, + "pivot": [0.7875, 9.94252, 0.34592], + "rotation": [35.5, 0, 0], + "uv": { + "north": {"uv": [30, 2], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [3, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 9], "uv_size": [0.5, 0.25]}, + "up": {"uv": [10, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 10.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.2627, 10.38011, 0.01908], + "size": [0.3004, 0.1504, 0.67305], + "inflate": 0.001, + "pivot": [0.7875, 10.38031, 0.63568], + "rotation": [56.5, 0, 0], + "uv": { + "north": {"uv": [30, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [4, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 11], "uv_size": [0.5, 0.25]}, + "up": {"uv": [12, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 12.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.2627, 10.38011, 0.59798], + "size": [0.3004, 0.1504, 1.25665], + "inflate": 0.001, + "pivot": [0.7875, 10.38031, 0.63568], + "rotation": [19, 0, 0], + "uv": { + "north": {"uv": [30, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 12], "uv_size": [1, 0.25]}, + "south": {"uv": [5, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [13, 14], "uv_size": [1, 0.25]}, + "up": {"uv": [14, 13], "uv_size": [0.25, 1]}, + "down": {"uv": [14, 15], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.2627, 10.77079, 1.77011], + "size": [0.3004, 0.1504, 1.36914], + "inflate": 0.001, + "pivot": [0.7875, 10.77099, 1.77031], + "rotation": [10.25, 0, 0], + "uv": { + "north": {"uv": [30, 5], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 4], "uv_size": [1.25, 0.25]}, + "south": {"uv": [6, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 11], "uv_size": [1.25, 0.25]}, + "up": {"uv": [9, 11], "uv_size": [0.25, 1.25]}, + "down": {"uv": [10, 12.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.0373, 10.88851, 1.73264], + "size": [0.21134, 0.15091, 1.36915], + "inflate": 0.001, + "pivot": [0.0375, 11.03871, 2.40784], + "rotation": [7.28663, -7.22841, 44.53913], + "uv": { + "north": {"uv": [30, 6], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 5], "uv_size": [1.25, 0.25]}, + "south": {"uv": [7, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [11, 8], "uv_size": [1.25, 0.25]}, + "up": {"uv": [11, 10], "uv_size": [0.25, 1.25]}, + "down": {"uv": [12, 1.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.0373, 10.56728, 0.55396], + "size": [0.21134, 0.1509, 1.21915], + "inflate": 0.001, + "pivot": [0.0375, 10.71748, 1.15416], + "rotation": [13.68392, -13.30952, 43.39593], + "uv": { + "north": {"uv": [30, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [0, 15], "uv_size": [1, 0.25]}, + "south": {"uv": [8, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 0], "uv_size": [1, 0.25]}, + "up": {"uv": [1, 15], "uv_size": [0.25, 1]}, + "down": {"uv": [15, 2], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.02096, 10.30625, 0.63509], + "size": [0.20817, 0.0754, 0.03576], + "inflate": 0.001, + "pivot": [0.18701, 10.38145, 0.63529], + "rotation": [14.51089, -23.25265, 40.7699], + "uv": { + "north": {"uv": [30, 8], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 9], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [30, 10], "uv_size": [0.25, 0.25]}, + "down": {"uv": [11, 30.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0373, 10.0559, 0.03209], + "size": [0.21134, 0.1509, 0.6168], + "inflate": 0.001, + "pivot": [0.0375, 10.2061, 0.3405], + "rotation": [46.89193, -36.13191, 28.89593], + "uv": { + "north": {"uv": [30, 11], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [12, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 13], "uv_size": [0.5, 0.25]}, + "up": {"uv": [14, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 14.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.01698, 10.30578, 0.58104], + "size": [0.20419, 0.0754, 0.05384], + "inflate": 0.001, + "pivot": [0.18701, 10.38098, 0.63468], + "rotation": [40.61461, -25.06883, 41.13556], + "uv": { + "north": {"uv": [30, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 13], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [30, 14], "uv_size": [0.25, 0.25]}, + "down": {"uv": [15, 30.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.04645, 9.73776, -0.12876], + "size": [0.21134, 0.1509, 0.50904], + "inflate": 0.001, + "pivot": [0.05922, 9.81321, 0.12577], + "rotation": [26.76521, -24.24373, 39.14957], + "uv": { + "north": {"uv": [30, 15], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [16, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 15], "uv_size": [0.5, 0.25]}, + "up": {"uv": [16, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 16.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.0373, 9.57359, -0.65356], + "size": [0.21134, 0.1509, 0.64273], + "inflate": 0.001, + "pivot": [0.0375, 9.72379, -0.33219], + "rotation": [11.09481, -10.89245, 43.93891], + "uv": { + "north": {"uv": [30, 16], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [17, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 17], "uv_size": [0.5, 0.25]}, + "up": {"uv": [18, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 18.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.0373, 9.51175, -1.02524], + "size": [0.21134, 0.15089, 0.51662], + "inflate": 0.001, + "pivot": [0.0375, 9.66195, -0.76692], + "rotation": [-3.18525, 3.18034, 44.91155], + "uv": { + "north": {"uv": [30, 17], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [18, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 19], "uv_size": [0.5, 0.25]}, + "up": {"uv": [20, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 20.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.02112, 9.45865, -1.03612], + "size": [0.20833, 0.0754, 0.03486], + "inflate": 0.001, + "pivot": [0.18701, 9.53385, -1.03592], + "rotation": [-3.20293, -6.8042, 45.46831], + "uv": { + "north": {"uv": [30, 18], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 19], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [30, 20], "uv_size": [0.25, 0.25]}, + "down": {"uv": [21, 30.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0373, 9.43558, -1.3913], + "size": [0.21117, 0.15106, 0.30011], + "inflate": 0.001, + "pivot": [0.0375, 9.58578, -1.24139], + "rotation": [22.61259, -21.03166, 40.74915], + "uv": { + "north": {"uv": [30, 21], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [23, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [30, 23], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 30.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.01705, 9.4587, -1.08944], + "size": [0.20426, 0.0754, 0.0529], + "inflate": 0.001, + "pivot": [0.18701, 9.5339, -1.03674], + "rotation": [21.20213, -7.10275, 46.50473], + "uv": { + "north": {"uv": [30, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [30, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [27, 30.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.2627, 11.01102, 3.09856], + "size": [0.3004, 0.1504, 1.6504], + "inflate": 0.001, + "pivot": [0.7875, 11.01122, 3.09876], + "rotation": [0.25, 0, 0], + "uv": { + "north": {"uv": [30, 27], "uv_size": [0.25, 0.25]}, + "east": {"uv": [10, 0], "uv_size": [1.5, 0.25]}, + "south": {"uv": [28, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 1], "uv_size": [1.5, 0.25]}, + "up": {"uv": [10, 2], "uv_size": [0.25, 1.5]}, + "down": {"uv": [10, 5.5], "uv_size": [0.25, -1.5]} + } + }, + { + "origin": [0.0373, 11.01462, 3.0979], + "size": [0.21134, 0.15089, 1.6504], + "inflate": 0.001, + "pivot": [0.0375, 11.16482, 3.9231], + "rotation": [0.17678, -0.17678, 44.99973], + "uv": { + "north": {"uv": [30, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 10], "uv_size": [1.5, 0.25]}, + "south": {"uv": [29, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 6], "uv_size": [1.5, 0.25]}, + "up": {"uv": [7, 10], "uv_size": [0.25, 1.5]}, + "down": {"uv": [8, 11.5], "uv_size": [0.25, -1.5]} + } + }, + { + "origin": [-0.47347, 9.43558, -1.3913], + "size": [0.21117, 0.15106, 0.30011], + "inflate": 0.001, + "pivot": [-0.2625, 9.58578, -1.24139], + "rotation": [22.61259, 21.03166, -40.74915], + "uv": { + "north": {"uv": [30, 29], "uv_size": [0.25, 0.25]}, + "east": {"uv": [30, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 0], "uv_size": [0.25, 0.25]}, + "up": {"uv": [1, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 1.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.41221, 9.4587, -1.08944], + "size": [0.20426, 0.0754, 0.0529], + "inflate": 0.001, + "pivot": [-0.41201, 9.5339, -1.03674], + "rotation": [21.20213, 7.10275, -46.50473], + "uv": { + "north": {"uv": [2, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 2], "uv_size": [0.25, 0.25]}, + "south": {"uv": [3, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 3], "uv_size": [0.25, 0.25]}, + "up": {"uv": [4, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 4.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.41221, 9.45865, -1.03612], + "size": [0.20833, 0.0754, 0.03486], + "inflate": 0.001, + "pivot": [-0.41201, 9.53385, -1.03592], + "rotation": [-3.20293, 6.8042, -45.46831], + "uv": { + "north": {"uv": [5, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 5], "uv_size": [0.25, 0.25]}, + "south": {"uv": [6, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 6], "uv_size": [0.25, 0.25]}, + "up": {"uv": [7, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 7.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.47364, 9.51175, -1.02524], + "size": [0.21134, 0.15089, 0.51662], + "inflate": 0.001, + "pivot": [-0.2625, 9.66195, -0.76692], + "rotation": [-3.18525, -3.18034, -44.91155], + "uv": { + "north": {"uv": [8, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [31, 8], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 21], "uv_size": [0.5, 0.25]}, + "up": {"uv": [22, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [0, 23.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.47364, 9.57359, -0.65356], + "size": [0.21134, 0.1509, 0.64273], + "inflate": 0.001, + "pivot": [-0.2625, 9.72379, -0.33219], + "rotation": [11.09481, 10.89245, -43.93891], + "uv": { + "north": {"uv": [9, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 0], "uv_size": [0.5, 0.25]}, + "south": {"uv": [31, 9], "uv_size": [0.25, 0.25]}, + "west": {"uv": [1, 23], "uv_size": [0.5, 0.25]}, + "up": {"uv": [23, 1], "uv_size": [0.25, 0.5]}, + "down": {"uv": [2, 23.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.38989, 9.73776, -0.12876], + "size": [0.21134, 0.1509, 0.50904], + "inflate": 0.001, + "pivot": [-0.28422, 9.81321, 0.12577], + "rotation": [26.76521, 24.24373, -39.14957], + "uv": { + "north": {"uv": [10, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 2], "uv_size": [0.5, 0.25]}, + "south": {"uv": [31, 10], "uv_size": [0.25, 0.25]}, + "west": {"uv": [3, 23], "uv_size": [0.5, 0.25]}, + "up": {"uv": [23, 3], "uv_size": [0.25, 0.5]}, + "down": {"uv": [4, 23.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.47364, 10.0559, 0.03209], + "size": [0.21134, 0.1509, 0.6168], + "inflate": 0.001, + "pivot": [-0.2625, 10.2061, 0.3405], + "rotation": [46.89193, 36.13191, -28.89593], + "uv": { + "north": {"uv": [11, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 4], "uv_size": [0.5, 0.25]}, + "south": {"uv": [31, 11], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 23], "uv_size": [0.5, 0.25]}, + "up": {"uv": [23, 5], "uv_size": [0.25, 0.5]}, + "down": {"uv": [6, 23.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.41221, 10.30578, 0.58104], + "size": [0.20419, 0.0754, 0.05384], + "inflate": 0.001, + "pivot": [-0.41201, 10.38098, 0.63468], + "rotation": [40.61461, 25.06883, -41.13556], + "uv": { + "north": {"uv": [12, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 12], "uv_size": [0.25, 0.25]}, + "south": {"uv": [13, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 13], "uv_size": [0.25, 0.25]}, + "up": {"uv": [14, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 14.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.41221, 10.30625, 0.63509], + "size": [0.20817, 0.0754, 0.03576], + "inflate": 0.001, + "pivot": [-0.41201, 10.38145, 0.63529], + "rotation": [14.51089, 23.25265, -40.7699], + "uv": { + "north": {"uv": [15, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 15], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 16], "uv_size": [0.25, 0.25]}, + "up": {"uv": [17, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 17.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.47364, 10.56728, 0.55396], + "size": [0.21134, 0.1509, 1.21915], + "inflate": 0.001, + "pivot": [-0.2625, 10.71748, 1.15416], + "rotation": [13.68392, 13.30952, -43.39593], + "uv": { + "north": {"uv": [18, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [2, 15], "uv_size": [1, 0.25]}, + "south": {"uv": [31, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 2], "uv_size": [1, 0.25]}, + "up": {"uv": [3, 15], "uv_size": [0.25, 1]}, + "down": {"uv": [15, 4], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.47364, 10.88851, 1.73264], + "size": [0.21134, 0.15091, 1.36915], + "inflate": 0.001, + "pivot": [-0.2625, 11.03871, 2.40784], + "rotation": [7.28663, 7.22841, -44.53913], + "uv": { + "north": {"uv": [19, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 2], "uv_size": [1.25, 0.25]}, + "south": {"uv": [31, 19], "uv_size": [0.25, 0.25]}, + "west": {"uv": [3, 12], "uv_size": [1.25, 0.25]}, + "up": {"uv": [5, 12], "uv_size": [0.25, 1.25]}, + "down": {"uv": [6, 13.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.47364, 11.01462, 3.0979], + "size": [0.21134, 0.15089, 1.6504], + "inflate": 0.001, + "pivot": [-0.2625, 11.16482, 3.9231], + "rotation": [0.17678, 0.17678, -44.99973], + "uv": { + "north": {"uv": [20, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [10, 7], "uv_size": [1.5, 0.25]}, + "south": {"uv": [31, 20], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 10], "uv_size": [1.5, 0.25]}, + "up": {"uv": [0, 11], "uv_size": [0.25, 1.5]}, + "down": {"uv": [1, 12.5], "uv_size": [0.25, -1.5]} + } + }, + { + "origin": [-0.4127, 10.79322, 4.11924], + "size": [0.6004, 0.2254, 0.63069], + "inflate": 0.001, + "pivot": [-0.1125, 10.79342, 4.74973], + "rotation": [30.62913, 0, 0], + "uv": { + "north": {"uv": [23, 6], "uv_size": [0.5, 0.25]}, + "east": {"uv": [7, 23], "uv_size": [0.5, 0.25]}, + "south": {"uv": [23, 7], "uv_size": [0.5, 0.25]}, + "west": {"uv": [8, 23], "uv_size": [0.5, 0.25]}, + "up": {"uv": [4, 15], "uv_size": [0.5, 0.5]}, + "down": {"uv": [15, 4.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.4125, 11.01842, 4.23194], + "size": [0.6, 0.075, 0.14279], + "pivot": [-0.1125, 10.79342, 4.74973], + "rotation": [30.62913, 0, 0], + "uv": { + "north": {"uv": [23, 8], "uv_size": [0.5, 0.25]}, + "east": {"uv": [21, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [9, 23], "uv_size": [0.5, 0.25]}, + "west": {"uv": [31, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 9], "uv_size": [0.5, 0.25]}, + "down": {"uv": [10, 23.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.4127, 10.4721, 3.86968], + "size": [0.6004, 0.19017, 0.45878], + "inflate": 0.001, + "pivot": [-0.1125, 10.4723, 4.20738], + "rotation": [63.12913, 0, 0], + "uv": { + "north": {"uv": [23, 10], "uv_size": [0.5, 0.25]}, + "east": {"uv": [11, 23], "uv_size": [0.5, 0.25]}, + "south": {"uv": [23, 11], "uv_size": [0.5, 0.25]}, + "west": {"uv": [12, 23], "uv_size": [0.5, 0.25]}, + "up": {"uv": [5, 15], "uv_size": [0.5, 0.5]}, + "down": {"uv": [15, 5.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.4125, 10.46746, 2.87376], + "size": [0.6, 0.31876, 1.33125], + "pivot": [0.7875, 11.01122, 3.09876], + "rotation": [0.25, 0, 0], + "uv": { + "north": {"uv": [23, 12], "uv_size": [0.5, 0.25]}, + "east": {"uv": [6, 15], "uv_size": [1, 0.25]}, + "south": {"uv": [13, 23], "uv_size": [0.5, 0.25]}, + "west": {"uv": [15, 6], "uv_size": [1, 0.25]}, + "up": {"uv": [0, 8], "uv_size": [0.5, 1]}, + "down": {"uv": [8, 1], "uv_size": [0.5, -1]} + } + } + ] + }, + { + "name": "bone2", + "parent": "weapon", + "pivot": [-1.1625, 9.95, 4.75626], + "rotation": [0, 0, 90], + "cubes": [ + { + "origin": [-1.39543, 10.85, 5.40058], + "size": [0.46586, 0.3, 0.225], + "uv": { + "north": {"uv": [9, 16], "uv_size": [0.5, 0.25]}, + "east": {"uv": [12, 24], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 9], "uv_size": [0.5, 0.25]}, + "west": {"uv": [24, 12], "uv_size": [0.25, 0.25]}, + "up": {"uv": [10, 16], "uv_size": [0.5, 0.25]}, + "down": {"uv": [16, 10.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-1.47023, 10.8502, 5.40078], + "size": [0.54046, 0.2996, 0.2246], + "inflate": -0.001, + "pivot": [-1.1625, 9.95, 4.75626], + "rotation": [0, -30, 0], + "uv": { + "north": {"uv": [23, 13], "uv_size": [0.5, 0.25]}, + "east": {"uv": [22, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [14, 23], "uv_size": [0.5, 0.25]}, + "west": {"uv": [31, 22], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 14], "uv_size": [0.5, 0.25]}, + "down": {"uv": [15, 23.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-1.39513, 10.8503, 5.40088], + "size": [0.46526, 0.2994, 0.2244], + "inflate": -0.0015, + "pivot": [-1.1625, 9.95, 4.75626], + "rotation": [0, -60, 0], + "uv": { + "north": {"uv": [23, 15], "uv_size": [0.5, 0.25]}, + "east": {"uv": [23, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 23], "uv_size": [0.5, 0.25]}, + "west": {"uv": [31, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 16], "uv_size": [0.5, 0.25]}, + "down": {"uv": [17, 23.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-1.39563, 10.8498, 5.40038], + "size": [0.46626, 0.3004, 0.3754], + "inflate": 0.001, + "pivot": [-1.1625, 9.95, 4.75626], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [23, 17], "uv_size": [0.5, 0.25]}, + "east": {"uv": [24, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 23], "uv_size": [0.5, 0.25]}, + "west": {"uv": [31, 24], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 18], "uv_size": [0.5, 0.25]}, + "down": {"uv": [19, 23.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-2.18203, 10.8498, 4.68899], + "size": [1.2004, 0.3004, 0.3004], + "inflate": 0.001, + "pivot": [-2.18183, 11, 4.98919], + "rotation": [0, -60, 0], + "uv": { + "north": {"uv": [7, 15], "uv_size": [1, 0.25]}, + "east": {"uv": [25, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [15, 7], "uv_size": [1, 0.25]}, + "west": {"uv": [31, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [8, 15], "uv_size": [1, 0.25]}, + "down": {"uv": [15, 8.25], "uv_size": [1, -0.25]} + } + }, + { + "origin": [-1.65953, 10.85, 5.55967], + "size": [0.3375, 0.3, 0.31874], + "pivot": [-1.32203, 11, 5.87841], + "rotation": [0, -35, 0], + "uv": { + "north": {"uv": [26, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [28, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 28.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-1.39543, 10.85, 5.40058], + "size": [0.46586, 0.3, 0.225], + "pivot": [-1.1625, 9.95, 4.75626], + "rotation": [0, -120, 0], + "uv": { + "north": {"uv": [23, 19], "uv_size": [0.5, 0.25]}, + "east": {"uv": [29, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 23], "uv_size": [0.5, 0.25]}, + "west": {"uv": [31, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 20], "uv_size": [0.5, 0.25]}, + "down": {"uv": [21, 23.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-1.39543, 10.85, 5.40058], + "size": [0.46586, 0.3, 0.225], + "pivot": [-1.1625, 9.95, 4.75626], + "rotation": [0, -150, 0], + "uv": { + "north": {"uv": [23, 21], "uv_size": [0.5, 0.25]}, + "east": {"uv": [30, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [22, 23], "uv_size": [0.5, 0.25]}, + "west": {"uv": [31, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 22], "uv_size": [0.5, 0.25]}, + "down": {"uv": [23, 23.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-1.39543, 10.85, 5.40058], + "size": [0.46586, 0.3, 0.225], + "pivot": [-1.1625, 9.95, 4.75626], + "rotation": [0, -180, 0], + "uv": { + "north": {"uv": [0, 24], "uv_size": [0.5, 0.25]}, + "east": {"uv": [31, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [24, 0], "uv_size": [0.5, 0.25]}, + "west": {"uv": [0, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [1, 24], "uv_size": [0.5, 0.25]}, + "down": {"uv": [24, 1.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-1.39543, 10.85, 5.40058], + "size": [0.46586, 0.3, 0.225], + "pivot": [-1.1625, 9.95, 4.75626], + "rotation": [0, -210, 0], + "uv": { + "north": {"uv": [2, 24], "uv_size": [0.5, 0.25]}, + "east": {"uv": [32, 0], "uv_size": [0.25, 0.25]}, + "south": {"uv": [24, 2], "uv_size": [0.5, 0.25]}, + "west": {"uv": [1, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [3, 24], "uv_size": [0.5, 0.25]}, + "down": {"uv": [24, 3.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-1.39543, 10.85, 5.40058], + "size": [0.46586, 0.3, 0.225], + "pivot": [-1.1625, 9.95, 4.75626], + "rotation": [0, -240, 0], + "uv": { + "north": {"uv": [4, 24], "uv_size": [0.5, 0.25]}, + "east": {"uv": [32, 1], "uv_size": [0.25, 0.25]}, + "south": {"uv": [24, 4], "uv_size": [0.5, 0.25]}, + "west": {"uv": [2, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [5, 24], "uv_size": [0.5, 0.25]}, + "down": {"uv": [24, 5.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-1.39543, 10.85, 5.40058], + "size": [0.46586, 0.3, 0.225], + "pivot": [-1.1625, 9.95, 4.75626], + "rotation": [0, -270, 0], + "uv": { + "north": {"uv": [6, 24], "uv_size": [0.5, 0.25]}, + "east": {"uv": [32, 2], "uv_size": [0.25, 0.25]}, + "south": {"uv": [24, 6], "uv_size": [0.5, 0.25]}, + "west": {"uv": [3, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [7, 24], "uv_size": [0.5, 0.25]}, + "down": {"uv": [24, 7.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-1.39563, 10.8498, 5.40038], + "size": [0.46626, 0.3004, 0.2254], + "inflate": 0.001, + "pivot": [-1.1625, 9.95, 4.75626], + "rotation": [0, -300, 0], + "uv": { + "north": {"uv": [8, 24], "uv_size": [0.5, 0.25]}, + "east": {"uv": [32, 3], "uv_size": [0.25, 0.25]}, + "south": {"uv": [24, 8], "uv_size": [0.5, 0.25]}, + "west": {"uv": [4, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [9, 24], "uv_size": [0.5, 0.25]}, + "down": {"uv": [24, 9.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-1.39543, 10.85, 5.40058], + "size": [0.46586, 0.3, 0.225], + "pivot": [-1.1625, 9.95, 4.75626], + "rotation": [0, -330, 0], + "uv": { + "north": {"uv": [10, 24], "uv_size": [0.5, 0.25]}, + "east": {"uv": [32, 4], "uv_size": [0.25, 0.25]}, + "south": {"uv": [24, 10], "uv_size": [0.5, 0.25]}, + "west": {"uv": [5, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [11, 24], "uv_size": [0.5, 0.25]}, + "down": {"uv": [24, 11.25], "uv_size": [0.5, -0.25]} + } + } + ] + }, + { + "name": "righthand", + "parent": "knife_and_right", + "pivot": [6, 19, 0] + }, + { + "name": "righthand_pos", + "parent": "righthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [4, 8, -2], + "size": [4, 12, 4], + "uv": { + "north": {"uv": [0, 0], "uv_size": [8, 24]}, + "east": {"uv": [8, 0], "uv_size": [8, 24]}, + "south": {"uv": [16, 0], "uv_size": [8, 24]}, + "west": {"uv": [0, 24], "uv_size": [8, 24]}, + "up": {"uv": [32, 0], "uv_size": [8, 8]}, + "down": {"uv": [32, 16], "uv_size": [8, -8]} + } + } + ] + }, + { + "name": "constraint", + "parent": "bone", + "pivot": [-0.01558, 8.125, 1.9375] + }, + { + "name": "lefthand", + "parent": "bone", + "pivot": [-6, 19, 0] + }, + { + "name": "lefthand_pos", + "parent": "lefthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [-8, 8, -2], + "size": [4, 12, 4], + "uv": { + "north": {"uv": [24, 0], "uv_size": [8, 24]}, + "east": {"uv": [8, 24], "uv_size": [8, 24]}, + "south": {"uv": [16, 24], "uv_size": [8, 24]}, + "west": {"uv": [24, 24], "uv_size": [8, 24]}, + "up": {"uv": [32, 16], "uv_size": [8, 8]}, + "down": {"uv": [32, 32], "uv_size": [8, -8]} + } + } + ] + }, + { + "name": "camera", + "pivot": [3.0813, 14.0031, 11.5313] + }, + { + "name": "view", + "pivot": [0, 0, 0] + }, + { + "name": "refit_view", + "parent": "view", + "pivot": [22.475, 5.55, 0.2], + "rotation": [0, 90, 0] + }, + { + "name": "iron_view", + "parent": "view", + "pivot": [-0.15326, 9.42188, 6.93493], + "rotation": [0, -1, 0] + }, + { + "name": "idle_view", + "parent": "view", + "pivot": [3.4563, 3.16563, -3.56875] + }, + { + "name": "positioning", + "pivot": [-0.01558, 4.125, 4.9375] + }, + { + "name": "ground", + "parent": "positioning", + "pivot": [0, 0, 0] + }, + { + "name": "thirdperson_hand", + "parent": "positioning", + "pivot": [-0.01558, 6.125, -2.0625] + }, + { + "name": "fixed", + "parent": "positioning", + "pivot": [0.79692, 5.125, -1.0625], + "rotation": [0, 90, 0] + }, + { + "name": "bone38", + "pivot": [62, -11.35, -167.5] + }, + { + "name": "bone39", + "parent": "bone38", + "pivot": [-65, -11.35, -167.5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/m9.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/m9.anim.json new file mode 100644 index 0000000..d263a7b --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/m9.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"draw":{"loop":true,"animation_length":0.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[20.925,18.177,-147.265],"0.04":[39.523,-2.416,-156.444],"0.08":[58.45,-12.451,-173.071],"0.12":[67.881,-11.987,-186.593],"0.17":[72.75,-8.146,-197.394],"0.21":[75.574,-3.347,-205.914],"0.25":[78.066,1.085,-210.197],"0.29":[82.366,4.196,-209.57],"0.33":[105.914,11.313,-204.025],"0.38":[129.378,16.115,-199.332],"0.42":[142.14,20.095,-198.744],"0.46":[149.044,22.635,-197.477],"0.5":[148.415,22.742,-197.93],"0.54":[144.531,19.264,-197.696],"0.58":[140.888,7.785,-190.654],"0.62":[136.413,-9.763,-175.548],"0.67":[127.314,-28.574,-153.397],"0.71":[109.781,-42.225,-124.709],"0.75":[89.101,-46.951,-96.093],"0.79":[78.004,-47.292,-81.461],"0.83":[77.728,-48.132,-81.245],"0.88":[79.844,-48.7,-84.094],"0.92":[83.055,-49.026,-88.316],"0.96":[85.914,-49.293,-92.046]},"position":{"0.0":[-9.842,-36.524,-11.394],"0.04":[-9.79,-35.512,-11.956],"0.08":[-9.716,-34.045,-12.746],"0.12":[-9.627,-32.262,-13.671],"0.17":[-9.531,-30.327,-14.677],"0.21":[-9.437,-28.421,-15.616],"0.25":[-9.358,-26.702,-16.404],"0.29":[-9.299,-25.317,-16.957],"0.33":[-9.271,-24.472,-17.17],"0.38":[-9.292,-23.97,-17.266],"0.42":[-9.375,-23.664,-17.373],"0.46":[-9.519,-23.518,-17.488],"0.5":[-9.743,-23.523,-17.604],"0.54":[-10.041,-23.624,-17.71],"0.58":[-10.502,-23.787,-17.799],"0.62":[-10.908,-24.019,-17.809],"0.67":[-11.095,-24.372,-17.667],"0.71":[-11.162,-24.761,-17.443],"0.75":[-11.157,-25.105,-17.199],"0.79":[-11.132,-25.342,-16.99],"0.83":[-11.125,-25.385,-16.834],"0.88":[-11.12,-25.315,-16.684],"0.92":[-11.12,-25.198,-16.528],"0.96":[-11.117,-25.095,-16.376]}},"m9":{"rotation":{"0.0":[35.981,171.936,-12.687],"0.04":[35.066,173.38,-11.521],"0.08":[34.048,174.842,-10.322],"0.12":[32.993,176.217,-9.084],"0.17":[31.935,177.559,-7.915],"0.21":[30.787,178.811,-6.639],"0.25":[29.575,179.976,-5.257],"0.29":[28.367,181.101,-3.832],"0.33":[24.484,181.966,-2.355],"0.38":[4.34,182.931,-0.603],"0.42":[-35.86,182.895,3.701],"0.46":[-82.351,179.553,5.033],"0.5":[-110.39,174.491,-3.092],"0.54":[-137.834,172.056,-9.3],"0.58":[-157.589,170.692,-13.465],"0.62":[-163.961,170.182,-14.547],"0.67":[-166.271,169.93,-15.051],"0.71":[-167.092,169.849,-15.194],"0.75":[-166.732,169.873,-15.098],"0.79":[-165.581,169.991,-14.876],"0.83":[-163.96,170.132,-14.543],"0.88":[-162.374,170.272,-14.211],"0.92":[-161.118,170.391,-13.938],"0.96":[-160.551,170.444,-13.823]},"position":[5,12.6,-1.55]},"lefthand":{"rotation":{"0.0":[77.718,-48.213,117.805],"0.04":[79.691,-49.842,116.872],"0.08":[82.514,-50.41,115.974],"0.12":[85.451,-49.374,115.828],"0.17":[88.08,-47.778,116.538],"0.21":[90.801,-46.008,117.554],"0.25":[93.908,-44.17,118.463],"0.29":[97.59,-42.28,118.922],"0.33":[102.143,-40.265,118.461],"0.38":[107.795,-37.597,116.715],"0.42":[114.897,-32.741,113.464],"0.46":[122.141,-25.384,109.907],"0.5":[128.084,-15.995,106.886],"0.54":[132.06,-5.897,104.478],"0.58":[133.831,3.809,101.939],"0.62":[133.897,12.236,99.071],"0.67":[133.539,19.017,96.714],"0.71":[132.834,24.73,94.506],"0.75":[131.594,29.595,91.948],"0.79":[129.424,33.79,88.476],"0.83":[126.026,37.193,84.214],"0.88":[122.571,40.135,80.658],"0.92":[120.455,43.497,79.083],"0.96":[119.832,45.506,78.939]},"position":{"0.0":[20.497,-36.766,-10.206],"0.04":[20.442,-36.991,-11.032],"0.08":[20.4,-36.982,-11.859],"0.12":[20.445,-36.65,-12.508],"0.17":[20.594,-36.196,-13.151],"0.21":[20.765,-35.697,-13.809],"0.25":[20.912,-35.165,-14.47],"0.29":[20.955,-34.627,-15.126],"0.33":[20.804,-34.114,-15.773],"0.38":[20.455,-33.618,-16.408],"0.42":[19.942,-33.062,-17.09],"0.46":[19.344,-32.438,-17.807],"0.5":[18.659,-31.739,-18.539],"0.54":[17.944,-31.014,-19.22],"0.58":[17.237,-30.261,-19.821],"0.62":[16.552,-29.532,-20.331],"0.67":[15.967,-28.895,-20.737],"0.71":[15.481,-28.366,-21.05],"0.75":[15.068,-27.94,-21.287],"0.79":[14.726,-27.605,-21.478],"0.83":[14.457,-27.374,-21.62],"0.88":[14.263,-27.226,-21.725],"0.92":[14.142,-27.142,-21.791],"0.96":[14.098,-27.11,-21.809]}},"righthand":{"position":[-1,3.5,0.65],"scale":[1,1.4,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_deploy1"}}},"melee_3":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[60.356,-40.863,-108.693],"0.04":[121.156,-50.248,-122.084],"0.08":[172.122,-42.698,-128.475],"0.12":[180.83,-41.254,-129.169],"0.17":[182.389,-40.919,-129.521],"0.21":[184.184,-40.56,-129.809],"0.25":[185.77,-40.475,-129.766],"0.29":[186.562,-40.542,-130.195],"0.33":[189.268,-41.303,-111.353],"0.38":[185.361,-33.054,-90.095],"0.42":[182.719,-13.205,-76.737],"0.46":[175.431,-0.846,-82.313],"0.5":[155.916,2.882,-97.564],"0.54":[111.853,4.718,-88.113],"0.58":[82.206,14.47,-75.788],"0.62":[76.851,7.089,-74.955],"0.67":[74.902,-3.967,-73.588],"0.71":[73.837,-15.5,-71.855],"0.75":[72.378,-24.904,-70.172],"0.79":[71.065,-31.435,-69.847],"0.83":[72.34,-36.739,-72.901],"0.88":[75.565,-41.141,-78.117],"0.92":[79.719,-44.544,-84.153],"0.96":[83.298,-47.183,-88.956],"1.0":[85.021,-48.679,-91.035],"1.04":[85.589,-49.115,-91.701],"1.08":[85.645,-49.114,-91.751],"1.12":[85.916,-49.291,-92.057]},"position":{"0.0":[-12.732,-25.393,-22.299],"0.04":[-3.674,-22.235,-24.284],"0.08":[0.525,-22.193,-24.171],"0.12":[0.904,-22.217,-23.978],"0.17":[1.117,-22.121,-23.877],"0.21":[1.317,-22.018,-23.759],"0.25":[1.484,-21.976,-23.641],"0.29":[1.686,-22.031,-23.503],"0.33":[3.449,-26.135,-21.889],"0.38":[4.316,-30.309,-18.487],"0.42":[5.882,-31.803,-13.236],"0.46":[6.713,-32.16,-10.689],"0.5":[6.796,-32.754,-10.663],"0.54":[1.289,-36.191,-14.54],"0.58":[-5.97,-37.914,-16.996],"0.62":[-7.698,-35.906,-18.437],"0.67":[-8.627,-33.123,-19.433],"0.71":[-9.204,-30.28,-19.706],"0.75":[-9.773,-28.018,-19.326],"0.79":[-10.403,-26.629,-18.617],"0.83":[-10.747,-25.914,-17.871],"0.88":[-10.891,-25.529,-17.198],"0.92":[-10.921,-25.297,-16.611],"0.96":[-11.023,-25.171,-16.433],"1.0":[-11.11,-25.058,-16.38],"1.04":[-11.127,-25.05,-16.367],"1.08":[-11.118,-25.084,-16.375],"1.12":[-11.116,-25.094,-16.376]}},"m9":{"rotation":{"0.0":[172.509,-2.044,-12.509],"0.04":[172.549,-2.777,-13.084],"0.08":[172.609,-1.891,-12.732],"0.12":[172.615,-1.89,-12.728],"0.17":[172.616,-1.913,-12.694],"0.21":[172.611,-1.912,-12.67],"0.25":[172.608,-1.926,-12.625],"0.29":[172.596,-1.947,-12.604],"0.33":[172.568,-1.713,-12.663],"0.38":[173.087,-1.591,-12.747],"0.42":[172.927,-1.81,-12.726],"0.46":[172.589,-2.041,-12.44],"0.5":[199.686,175.385,-15.227],"0.54":[199.197,190.118,-19.821],"0.58":[199.737,186.029,-17.155],"0.62":[199.477,175.317,-14.629],"0.67":[199.51,170.866,-13.55],"0.71":[199.485,170.777,-13.618],"0.75":[199.461,170.667,-13.682],"0.79":[199.457,170.517,-13.764],"0.83":[199.434,170.451,-13.813],"0.88":[199.436,170.432,-13.816],"0.92":[199.448,170.44,-13.815],"0.96":[199.449,170.442,-13.836],"1.0":[199.446,170.453,-13.815],"1.04":[199.445,170.442,-13.822],"1.08":[199.439,170.442,-13.825],"1.12":[199.444,170.45,-13.828]},"position":{"0.0":[5,12.6,-2.65],"0.48":{"pre":[5,12.6,-2.65],"post":[5,12.6,-1.55]}}},"lefthand":{"rotation":{"0.0":[69.309,8.552,53.519],"0.04":[49.985,-3.807,50.976],"0.08":[31.798,-15.783,51.818],"0.12":[16.156,-25.188,54.983],"0.17":[7.623,-30.174,57.275],"0.21":[6.117,-32.955,56.29],"0.25":[9.829,-34.238,52.381],"0.29":[16.702,-33.241,47.383],"0.33":[24.229,-29.204,44.291],"0.38":[30.101,-22.939,45.48],"0.42":[34.117,-13.128,54.811],"0.46":[39.912,1.226,75.414],"0.5":[51.669,13.305,102.586],"0.54":[66.307,16.446,124.872],"0.58":[79.617,13.32,130.714],"0.62":[93.448,10.936,120.584],"0.67":[105.882,14.835,102.912],"0.71":[113.857,22.56,88.459],"0.75":[118.012,29.088,81.744],"0.79":[119.85,33.814,79.4],"0.83":[120.132,37.168,79.064],"0.88":[119.903,39.857,79.34],"0.92":[119.806,42.433,79.334],"0.96":[119.938,44.45,78.967],"1.0":[119.907,45.045,78.989],"1.04":[119.857,45.382,78.986],"1.08":[119.85,45.501,78.94],"1.12":[119.832,45.506,78.939]},"position":{"0.0":[28.946,-24.695,-10.875],"0.04":[30.644,-23.806,-4.667],"0.08":[30.716,-23.432,0.161],"0.12":[29.685,-23.139,3.936],"0.17":[28.789,-22.946,5.699],"0.21":[28.623,-22.57,6.11],"0.25":[29.034,-22.046,5.628],"0.29":[29.759,-21.659,4.437],"0.33":[30.48,-21.812,2.689],"0.38":[30.889,-22.717,0.799],"0.42":[30.61,-25.059,-1.291],"0.46":[28.647,-28.987,-3.997],"0.5":[24.515,-32.268,-7.021],"0.54":[20.341,-33.464,-9.516],"0.58":[18.028,-33.211,-11.568],"0.62":[17.336,-32.298,-13.798],"0.67":[17.261,-30.882,-16.156],"0.71":[16.938,-29.487,-18.099],"0.75":[16.25,-28.615,-19.368],"0.79":[15.615,-28.13,-20.208],"0.83":[15.163,-27.861,-20.802],"0.88":[14.771,-27.684,-21.282],"0.92":[14.349,-27.503,-21.72],"0.96":[14.15,-27.245,-21.814],"1.0":[14.118,-27.159,-21.822],"1.04":[14.108,-27.111,-21.825],"1.08":[14.1,-27.1,-21.82],"1.12":[14.098,-27.11,-21.809]}},"root":{"position":{"0.0":[0,0,10.2],"0.58":{"pre":[0,0,10.2],"post":[0,0,0]}}},"righthand":{"position":{"0.0":[0,4,-0.75],"0.47":{"pre":[0,4,-0.75],"post":[-1,3.5,0.65]}},"scale":{"0.0":[1,1.4,1],"0.47":{"pre":[1,1.4,1],"post":[1,1.4,1]}}}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"inspect":{"loop":true,"animation_length":6.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[86.9,-49.457,-93.636],"0.04":[89.377,-49.77,-97.606],"0.08":[93.043,-49.96,-103.464],"0.12":[97.513,-49.766,-110.632],"0.17":[102.226,-48.968,-118.383],"0.21":[106.626,-47.659,-125.926],"0.25":[110.888,-45.583,-134.024],"0.29":[115.473,-42.017,-144.214],"0.33":[119.605,-37.661,-154.776],"0.38":[122.795,-32.278,-164.214],"0.42":[124.534,-25.525,-172.089],"0.46":[124.799,-18.13,-178.424],"0.5":[123.803,-10.915,-183.474],"0.54":[122.074,-4.435,-187.965],"0.58":[120.02,0.916,-192.405],"0.62":[117.978,5.324,-197.191],"0.67":[116.063,9.44,-202.215],"0.71":[114.091,13.542,-207.236],"0.75":[111.996,17.588,-211.983],"0.79":[109.77,21.476,-216.225],"0.83":[107.546,24.868,-219.555],"0.88":[105.766,27.517,-221.975],"0.92":[104.574,29.471,-223.666],"0.96":[103.807,30.898,-224.831],"1.0":[103.219,31.995,-225.707],"1.04":[102.536,32.976,-226.547],"1.08":[101.877,33.789,-227.291],"1.12":[101.305,34.408,-227.899],"1.17":[100.913,34.819,-228.275],"1.21":[100.557,35.199,-228.646],"1.25":[100.261,35.492,-228.949],"1.29":[100.139,35.618,-229.084],"1.33":[100.175,35.57,-229.032],"1.38":[100.256,35.468,-228.902],"1.42":[100.372,35.322,-228.745],"1.46":[100.495,35.156,-228.608],"1.5":[100.603,34.931,-228.517],"1.54":[100.694,34.607,-228.423],"1.58":[100.985,34.185,-228.093],"1.62":[101.752,33.538,-227.325],"1.67":[103.273,32.572,-225.859],"1.71":[105.066,31.274,-224.036],"1.75":[106.849,29.674,-222.071],"1.79":[108.644,27.774,-219.944],"1.83":[110.506,25.524,-217.619],"1.88":[112.418,22.968,-215.159],"1.92":[114.4,20.09,-212.528],"1.96":[116.466,16.881,-209.728],"2.0":[118.712,12.699,-206.308],"2.04":[120.917,7.619,-202.161],"2.08":[122.884,2.229,-197.44],"2.12":[124.628,-2.987,-192.314],"2.17":[126.434,-7.708,-187.291],"2.21":[128.606,-13.191,-182.668],"2.25":[130.711,-19.654,-178.229],"2.29":[132.237,-25.867,-173.591],"2.33":[132.807,-31.183,-169.512],"2.38":[133.027,-35.517,-166.419],"2.42":[133.148,-38.948,-164.135],"2.46":[133.07,-41.364,-162.532],"2.5":[132.808,-42.804,-161.428],"2.54":[132.577,-43.781,-160.638],"2.58":[132.404,-44.412,-160.114],"2.62":[132.28,-44.814,-159.765],"2.67":[132.21,-45.085,-159.532],"2.71":[132.142,-45.335,-159.301],"2.75":[132.106,-45.522,-159.135],"2.79":[132.1,-45.633,-159.066],"2.83":[132.118,-45.661,-159.073],"2.88":[132.162,-45.64,-159.134],"2.92":[132.22,-45.574,-159.226],"2.96":[132.285,-45.482,-159.353],"3.0":[132.332,-45.371,-159.467],"3.04":[132.363,-45.251,-159.546],"3.08":[132.425,-45.131,-159.634],"3.12":[132.494,-44.987,-159.721],"3.17":[132.556,-44.779,-159.85],"3.21":[132.615,-44.489,-160.055],"3.25":[132.654,-44.068,-160.331],"3.29":[132.701,-43.498,-160.769],"3.33":[132.672,-42.817,-161.206],"3.38":[132.624,-42.036,-161.666],"3.42":[132.55,-41.087,-162.255],"3.46":[132.415,-39.907,-163.064],"3.5":[132.185,-38.344,-164.247],"3.54":[131.871,-36.391,-165.832],"3.58":[131.716,-34.079,-167.901],"3.62":[131.726,-31.43,-170.358],"3.67":[131.806,-28.492,-173.074],"3.71":[131.857,-25.353,-175.907],"3.75":[131.818,-22.086,-178.777],"3.79":[131.706,-18.6,-181.682],"3.83":[131.459,-14.782,-184.466],"3.88":[131.05,-10.574,-187.049],"3.92":[130.437,-6.003,-189.462],"3.96":[129.644,-1.436,-192.014],"4.0":[128.687,3.202,-194.834],"4.04":[127.635,8.24,-198.299],"4.08":[126.436,13.533,-202.255],"4.12":[125.029,18.714,-206.262],"4.17":[123.465,23.204,-209.691],"4.21":[121.675,26.858,-212.364],"4.25":[119.692,29.832,-214.541],"4.29":[117.548,32.28,-216.479],"4.33":[115.34,34.202,-218.234],"4.38":[113.229,35.7,-219.83],"4.42":[111.249,36.771,-221.29],"4.46":[109.428,37.35,-222.605],"4.5":[107.828,37.44,-223.713],"4.54":[106.432,37.306,-224.678],"4.58":[105.238,37.041,-225.538],"4.62":[104.247,36.802,-226.335],"4.67":[103.455,36.582,-227.009],"4.71":[102.773,36.315,-227.536],"4.75":[102.173,36.079,-227.945],"4.79":[101.647,35.907,-228.222],"4.83":[101.318,35.786,-228.419],"4.88":[101.109,35.764,-228.531],"4.92":[100.834,35.766,-228.706],"4.96":[100.469,35.733,-228.919],"5.0":[100.059,35.563,-229.117],"5.04":[99.796,35.086,-228.93],"5.08":[100.108,33.737,-227.624],"5.12":[101.693,29.775,-224.765],"5.17":[109.485,18.93,-214.348],"5.21":[115.002,7.697,-203.461],"5.25":[117.216,-1.551,-195.069],"5.29":[117.882,-9.16,-188.201],"5.33":[119.776,-16.623,-181.045],"5.38":[121.383,-25.2,-170.977],"5.42":[119.699,-33.221,-155.051],"5.46":[116.041,-36.278,-136.061],"5.5":[116.598,-37.843,-121.299],"5.54":[115.658,-41.096,-113.082],"5.58":[107.746,-44.145,-105.457],"5.62":[95.026,-46.156,-96.655],"5.67":[86.488,-47.058,-90.956],"5.71":[84.038,-47.726,-89.63],"5.75":[82.62,-48.436,-89.023],"5.79":[82.284,-49.023,-89.113],"5.83":[82.578,-49.444,-89.539],"5.88":[83.088,-49.554,-89.959],"5.92":[83.683,-49.541,-90.405],"5.96":[84.155,-49.516,-90.75],"6.0":[84.631,-49.472,-91.112],"6.04":[85.11,-49.403,-91.457],"6.08":[85.537,-49.339,-91.768],"6.12":[85.823,-49.287,-91.974]},"position":{"0.0":[-11.112,-25.133,-16.322],"0.04":[-11.103,-25.223,-16.185],"0.08":[-11.093,-25.344,-15.995],"0.12":[-11.076,-25.482,-15.773],"0.17":[-11.063,-25.616,-15.556],"0.21":[-11.049,-25.734,-15.367],"0.25":[-11.032,-25.815,-15.23],"0.29":[-11.012,-25.856,-15.148],"0.33":[-10.992,-25.858,-15.114],"0.38":[-10.976,-25.812,-15.099],"0.42":[-10.962,-25.72,-15.092],"0.46":[-10.943,-25.585,-15.088],"0.5":[-10.929,-25.429,-15.091],"0.54":[-10.913,-25.27,-15.097],"0.58":[-10.902,-25.118,-15.102],"0.62":[-10.889,-24.967,-15.11],"0.67":[-10.879,-24.798,-15.127],"0.71":[-10.868,-24.624,-15.147],"0.75":[-10.861,-24.456,-15.166],"0.79":[-10.855,-24.303,-15.184],"0.83":[-10.855,-24.185,-15.197],"0.88":[-10.856,-24.098,-15.206],"0.92":[-10.857,-24.033,-15.212],"0.96":[-10.86,-23.994,-15.218],"1.0":[-10.862,-23.959,-15.218],"1.04":[-10.863,-23.935,-15.221],"1.08":[-10.866,-23.921,-15.224],"1.12":[-10.868,-23.908,-15.226],"1.17":[-10.873,-23.905,-15.228],"1.21":[-10.874,-23.905,-15.228],"1.25":[-10.877,-23.905,-15.228],"1.29":[-10.879,-23.905,-15.228],"1.33":[-10.879,-23.905,-15.228],"1.38":[-10.879,-23.905,-15.225],"1.42":[-10.879,-23.907,-15.223],"1.46":[-10.879,-23.918,-15.221],"1.5":[-10.875,-23.925,-15.219],"1.54":[-10.871,-23.936,-15.215],"1.58":[-10.865,-23.947,-15.212],"1.62":[-10.852,-23.965,-15.208],"1.67":[-10.835,-23.984,-15.204],"1.71":[-10.814,-24.009,-15.2],"1.75":[-10.792,-24.035,-15.195],"1.79":[-10.764,-24.064,-15.189],"1.83":[-10.739,-24.089,-15.183],"1.88":[-10.714,-24.117,-15.178],"1.92":[-10.691,-24.144,-15.171],"1.96":[-10.667,-24.165,-15.162],"2.0":[-10.651,-24.184,-15.152],"2.04":[-10.635,-24.206,-15.139],"2.08":[-10.619,-24.219,-15.127],"2.12":[-10.607,-24.23,-15.113],"2.17":[-10.6,-24.232,-15.1],"2.21":[-10.595,-24.214,-15.091],"2.25":[-10.591,-24.181,-15.08],"2.29":[-10.592,-24.134,-15.074],"2.33":[-10.59,-24.107,-15.072],"2.38":[-10.592,-24.089,-15.071],"2.42":[-10.59,-24.07,-15.072],"2.46":[-10.593,-24.06,-15.072],"2.5":[-10.592,-24.051,-15.071],"2.54":[-10.592,-24.041,-15.072],"2.58":[-10.592,-24.037,-15.071],"2.62":[-10.59,-24.033,-15.072],"2.67":[-10.59,-24.023,-15.07],"2.71":[-10.59,-24.021,-15.071],"2.75":[-10.592,-24.02,-15.072],"2.79":[-10.594,-24.019,-15.071],"2.83":[-10.59,-24.019,-15.071],"2.88":[-10.59,-24.019,-15.071],"2.92":[-10.589,-24.019,-15.071],"2.96":[-10.59,-24.02,-15.071],"3.0":[-10.59,-24.021,-15.071],"3.04":[-10.59,-24.022,-15.07],"3.08":[-10.593,-24.023,-15.07],"3.12":[-10.595,-24.033,-15.072],"3.17":[-10.596,-24.035,-15.07],"3.21":[-10.597,-24.038,-15.071],"3.25":[-10.598,-24.043,-15.07],"3.29":[-10.601,-24.056,-15.069],"3.33":[-10.607,-24.063,-15.07],"3.38":[-10.61,-24.074,-15.071],"3.42":[-10.616,-24.086,-15.07],"3.46":[-10.626,-24.097,-15.07],"3.5":[-10.639,-24.121,-15.071],"3.54":[-10.655,-24.154,-15.071],"3.58":[-10.679,-24.195,-15.075],"3.62":[-10.71,-24.251,-15.079],"3.67":[-10.741,-24.303,-15.088],"3.71":[-10.773,-24.351,-15.097],"3.75":[-10.798,-24.391,-15.108],"3.79":[-10.825,-24.415,-15.115],"3.83":[-10.848,-24.431,-15.13],"3.88":[-10.87,-24.439,-15.143],"3.92":[-10.885,-24.444,-15.156],"3.96":[-10.898,-24.441,-15.169],"4.0":[-10.903,-24.443,-15.178],"4.04":[-10.9,-24.435,-15.186],"4.08":[-10.901,-24.422,-15.19],"4.12":[-10.9,-24.4,-15.194],"4.17":[-10.898,-24.374,-15.197],"4.21":[-10.897,-24.348,-15.201],"4.25":[-10.895,-24.317,-15.204],"4.29":[-10.89,-24.276,-15.205],"4.33":[-10.89,-24.234,-15.209],"4.38":[-10.887,-24.201,-15.21],"4.42":[-10.885,-24.163,-15.213],"4.46":[-10.886,-24.129,-15.215],"4.5":[-10.882,-24.095,-15.216],"4.54":[-10.882,-24.059,-15.216],"4.58":[-10.879,-24.031,-15.218],"4.62":[-10.88,-24.005,-15.219],"4.67":[-10.878,-23.981,-15.218],"4.71":[-10.878,-23.965,-15.219],"4.75":[-10.878,-23.95,-15.221],"4.79":[-10.877,-23.94,-15.221],"4.83":[-10.878,-23.926,-15.224],"4.88":[-10.879,-23.916,-15.224],"4.92":[-10.878,-23.908,-15.225],"4.96":[-10.879,-23.905,-15.225],"5.0":[-10.879,-23.905,-15.228],"5.04":[-10.88,-23.912,-15.223],"5.08":[-10.888,-23.955,-15.205],"5.12":[-10.915,-24.109,-15.166],"5.17":[-10.986,-24.466,-15.088],"5.21":[-11.06,-24.828,-15.002],"5.25":[-11.117,-25.073,-14.919],"5.29":[-11.153,-25.211,-14.845],"5.33":[-11.176,-25.296,-14.794],"5.38":[-11.181,-25.31,-14.814],"5.42":[-11.174,-25.263,-14.989],"5.46":[-11.165,-25.207,-15.244],"5.5":[-11.15,-25.134,-15.56],"5.54":[-11.133,-25.051,-15.985],"5.58":[-11.118,-24.987,-16.385],"5.62":[-11.117,-24.979,-16.575],"5.67":[-11.117,-24.996,-16.603],"5.71":[-11.117,-25.01,-16.604],"5.75":[-11.118,-25.022,-16.59],"5.79":[-11.117,-25.038,-16.564],"5.83":[-11.117,-25.055,-16.52],"5.88":[-11.118,-25.071,-16.476],"5.92":[-11.117,-25.086,-16.434],"5.96":[-11.116,-25.089,-16.4],"6.0":[-11.118,-25.094,-16.389],"6.04":[-11.117,-25.097,-16.383],"6.08":[-11.117,-25.096,-16.378],"6.12":[-11.117,-25.096,-16.377]}},"m9":{"rotation":{"0.0":[21.298,9.276,166.648],"0.04":[25.583,8.634,167.745],"0.08":[31.241,7.767,169.184],"0.12":[37.264,6.858,170.728],"0.17":[42.267,6.124,171.967],"0.21":[45.282,5.699,172.673],"0.25":[46.08,5.889,172.358],"0.29":[46.186,6.877,170.829],"0.33":[46.221,8.427,169.037],"0.38":[46.253,10.178,167.112],"0.42":[45.624,11.72,165.153],"0.46":[43.333,12.187,163.759],"0.5":[40.776,12.226,163.041],"0.54":[39.375,12.629,162.331],"0.58":[39.361,13.711,161.719],"0.62":[40.507,15.453,161.099],"0.67":[41.882,17.321,160],"0.71":[43.175,19.069,158.753],"0.75":[44.249,20.53,157.587],"0.79":[44.985,21.527,156.747],"0.83":[45.173,21.79,156.49],"0.88":[45.18,21.787,156.498],"0.92":[45.188,21.786,156.498],"0.96":[45.178,21.789,156.491],"1.0":[45.171,21.786,156.491],"1.04":[45.173,21.78,156.49],"1.08":[45.173,21.792,156.494],"1.12":[45.171,21.788,156.482],"1.17":[45.185,21.782,156.483],"1.21":[45.182,21.79,156.485],"1.25":[45.18,21.784,156.484],"1.29":[45.177,21.785,156.478],"1.33":[45.191,21.781,156.476],"1.38":[45.184,21.784,156.478],"1.42":[45.186,21.782,156.48],"1.46":[45.174,21.788,156.475],"1.5":[45.179,21.78,156.488],"1.54":[45.184,21.786,156.487],"1.58":[45.184,21.788,156.5],"1.62":[45.19,21.797,156.497],"1.67":[45.175,21.791,156.497],"1.71":[45.178,21.791,156.49],"1.75":[45.186,21.787,156.493],"1.79":[45.177,21.787,156.494],"1.83":[45.175,21.787,156.502],"1.88":[45.175,21.788,156.495],"1.92":[45.162,21.786,156.503],"1.96":[45.161,21.784,156.509],"2.0":[45.164,21.79,156.492],"2.04":[45.168,21.794,156.503],"2.08":[45.162,21.788,156.508],"2.12":[45.014,20.887,157.117],"2.17":[44.624,17.679,159.294],"2.21":[44.844,13.655,162.658],"2.25":[45.805,9.726,166.679],"2.29":[47.19,6.233,170.701],"2.33":[48.602,3.721,174.127],"2.38":[49.54,1.208,177.087],"2.42":[49.51,-2.086,179.78],"2.46":[48.678,-5.975,182.164],"2.5":[47.763,-9.878,184.492],"2.54":[46.867,-13.623,186.74],"2.58":[46.009,-17.102,188.864],"2.62":[45.208,-20.255,190.841],"2.67":[44.501,-22.906,192.571],"2.71":[43.874,-25.051,194.075],"2.75":[43.315,-26.706,195.379],"2.79":[42.792,-27.945,196.484],"2.83":[42.355,-28.785,197.403],"2.88":[42.002,-29.328,198.113],"2.92":[41.727,-29.649,198.659],"2.96":[41.5,-29.768,199.048],"3.0":[41.319,-29.597,199.28],"3.04":[41.207,-29.215,199.338],"3.08":[41.247,-28.47,199.031],"3.12":[41.443,-27.345,198.387],"3.17":[41.715,-25.975,197.552],"3.21":[41.998,-24.517,196.661],"3.25":[42.263,-23.115,195.876],"3.29":[42.429,-21.91,195.276],"3.33":[42.414,-21.054,195.043],"3.38":[42.332,-20.474,195.013],"3.42":[42.264,-20.013,194.989],"3.46":[42.283,-19.517,194.797],"3.5":[42.531,-18.812,194.174],"3.54":[42.854,-17.869,192.962],"3.58":[43.129,-16.622,191.206],"3.62":[43.324,-15.061,189.045],"3.67":[43.418,-13.172,186.529],"3.71":[43.449,-11.045,183.775],"3.75":[43.392,-8.727,180.893],"3.79":[43.263,-6.318,177.943],"3.83":[43.075,-3.702,174.992],"3.88":[42.911,-1.056,172.16],"3.92":[42.796,1.63,169.512],"3.96":[42.779,4.275,167.109],"4.0":[42.961,6.882,165.077],"4.04":[43.352,9.739,163.262],"4.08":[43.792,12.71,161.54],"4.12":[44.197,15.541,159.928],"4.17":[44.522,18.002,158.519],"4.21":[44.776,19.98,157.409],"4.25":[44.96,21.299,156.693],"4.29":[45.035,21.828,156.414],"4.33":[45.061,21.807,156.416],"4.38":[45.089,21.81,156.431],"4.42":[45.113,21.808,156.447],"4.46":[45.15,21.795,156.461],"4.5":[45.144,21.795,156.46],"4.54":[45.159,21.788,156.477],"4.58":[45.164,21.781,156.47],"4.62":[45.175,21.777,156.478],"4.67":[45.18,21.777,156.479],"4.71":[45.171,21.787,156.475],"4.75":[45.17,21.782,156.483],"4.79":[45.172,21.78,156.466],"4.83":[45.171,21.777,156.474],"4.88":[45.174,21.778,156.486],"4.92":[45.176,21.769,156.479],"4.96":[45.176,21.766,156.484],"5.0":[45.179,21.784,156.48],"5.04":[45.158,21.778,156.466],"5.08":[45.119,21.784,156.459],"5.12":[45.064,21.815,156.43],"5.17":[45.015,21.84,156.384],"5.21":[44.915,21.866,156.338],"5.25":[44.14,20.709,156.847],"5.29":[42.272,17.12,158.966],"5.33":[40.544,13.499,161.904],"5.38":[37.563,11.652,164.117],"5.42":[31.862,11.193,165.381],"5.46":[26.327,10.816,165.934],"5.5":[20.288,10.097,166.04],"5.54":[16.692,9.716,166.139],"5.58":[16.624,9.587,166.185],"5.62":[18.532,9.579,166.183],"5.67":[19.441,9.568,166.181],"5.71":[19.444,9.561,166.186],"5.75":[19.454,9.559,166.178],"5.79":[19.446,9.559,166.179],"5.83":[19.442,9.551,166.177],"5.88":[19.449,9.568,166.178],"5.92":[19.451,9.564,166.18],"5.96":[19.437,9.558,166.185],"6.0":[19.434,9.55,166.173],"6.04":[19.445,9.558,166.186],"6.08":[19.451,9.561,166.195],"6.12":[19.453,9.562,166.191]},"position":[5,12.6,-1.55]},"lefthand":{"rotation":{"0.0":[122.886,39.884,78.757],"0.04":[126.307,28.054,77.137],"0.08":[126.858,15.553,75.341],"0.12":[124.971,5.114,75.512],"0.17":[120.941,-3.996,78.106],"0.21":[115.697,-10.755,82.413],"0.25":[111.188,-14.633,87.375],"0.29":[109.399,-15.945,90.312],"0.33":[109.399,-15.945,90.308],"0.38":[109.4,-15.939,90.31],"0.42":[109.405,-15.94,90.302],"0.46":[109.404,-15.942,90.303],"0.5":[109.411,-15.945,90.286],"0.54":[109.415,-15.938,90.288],"0.58":[109.42,-15.935,90.276],"0.62":[109.423,-15.941,90.264],"0.67":[109.434,-15.928,90.271],"0.71":[109.441,-15.919,90.265],"0.75":[109.44,-15.917,90.246],"0.79":[109.453,-15.918,90.239],"0.83":[109.456,-15.912,90.232],"0.88":[109.466,-15.907,90.213],"0.92":[109.467,-15.911,90.208],"0.96":[109.472,-15.898,90.201],"1.0":[109.491,-15.888,90.181],"1.04":[109.499,-15.887,90.17],"1.08":[109.51,-15.871,90.15],"1.12":[109.527,-15.863,90.129],"1.17":[109.53,-15.871,90.129],"1.21":[109.544,-15.857,90.106],"1.25":[109.549,-15.845,90.096],"1.29":[109.563,-15.856,90.083],"1.33":[109.574,-15.829,90.056],"1.38":[109.591,-15.829,90.033],"1.42":[109.606,-15.819,90.016],"1.46":[109.618,-15.801,89.988],"1.5":[109.64,-15.793,89.958],"1.54":[109.695,-15.765,89.89],"1.58":[109.75,-15.727,89.804],"1.62":[109.802,-15.691,89.733],"1.67":[109.855,-15.669,89.666],"1.71":[109.887,-15.645,89.618],"1.75":[109.897,-15.633,89.584],"1.79":[109.917,-15.621,89.563],"1.83":[109.925,-15.615,89.552],"1.88":[109.935,-15.601,89.535],"1.92":[109.954,-15.593,89.516],"1.96":[109.964,-15.59,89.493],"2.0":[109.984,-15.579,89.473],"2.04":[109.993,-15.568,89.457],"2.08":[109.996,-15.554,89.45],"2.12":[110.021,-15.557,89.418],"2.17":[110.032,-15.542,89.399],"2.21":[110.046,-15.533,89.376],"2.25":[110.06,-15.524,89.364],"2.29":[110.072,-15.524,89.329],"2.33":[110.094,-15.505,89.313],"2.38":[110.102,-15.496,89.299],"2.42":[110.12,-15.49,89.275],"2.46":[110.132,-15.488,89.247],"2.5":[110.14,-15.475,89.24],"2.54":[110.162,-15.462,89.215],"2.58":[110.175,-15.448,89.206],"2.62":[110.18,-15.445,89.185],"2.67":[110.201,-15.439,89.159],"2.71":[110.211,-15.425,89.134],"2.75":[110.22,-15.416,89.124],"2.79":[110.239,-15.408,89.106],"2.83":[110.253,-15.398,89.09],"2.88":[110.271,-15.386,89.066],"2.92":[110.287,-15.379,89.048],"2.96":[110.293,-15.366,89.028],"3.0":[110.303,-15.362,89.011],"3.04":[110.318,-15.352,88.994],"3.08":[110.333,-15.347,88.97],"3.12":[110.34,-15.336,88.954],"3.17":[110.358,-15.327,88.939],"3.21":[110.365,-15.318,88.924],"3.25":[110.375,-15.311,88.91],"3.29":[110.4,-15.308,88.886],"3.33":[110.409,-15.294,88.87],"3.38":[110.413,-15.29,88.855],"3.42":[110.424,-15.289,88.847],"3.46":[110.445,-15.282,88.816],"3.5":[110.455,-15.275,88.807],"3.54":[110.462,-15.258,88.792],"3.58":[110.471,-15.255,88.784],"3.62":[110.475,-15.234,88.766],"3.67":[110.486,-15.242,88.751],"3.71":[110.495,-15.237,88.736],"3.75":[110.509,-15.233,88.727],"3.79":[110.509,-15.225,88.712],"3.83":[110.521,-15.214,88.703],"3.88":[110.521,-15.208,88.695],"3.92":[110.537,-15.205,88.68],"3.96":[110.533,-15.205,88.671],"4.0":[110.551,-15.196,88.663],"4.04":[110.564,-15.202,88.646],"4.08":[110.563,-15.182,88.637],"4.12":[110.569,-15.175,88.639],"4.17":[110.576,-15.181,88.632],"4.21":[110.58,-15.179,88.621],"4.25":[110.579,-15.175,88.622],"4.29":[110.584,-15.168,88.606],"4.33":[110.585,-15.167,88.6],"4.38":[110.597,-15.171,88.596],"4.42":[110.595,-15.173,88.593],"4.46":[110.591,-15.157,88.589],"4.5":[110.596,-15.168,88.597],"4.54":[110.595,-15.168,88.586],"4.58":[110.59,-15.169,88.585],"4.62":[110.589,-15.169,88.589],"4.67":[110.596,-15.166,88.583],"4.71":[110.591,-15.169,88.582],"4.75":[110.589,-15.169,88.589],"4.79":[110.589,-15.169,88.589],"4.83":[110.588,-15.171,88.587],"4.88":[110.591,-15.169,88.582],"4.92":[110.589,-15.172,88.583],"4.96":[110.589,-15.169,88.589],"5.0":[110.59,-15.169,88.585],"5.04":[110.593,-15.169,88.575],"5.08":[110.593,-15.169,88.575],"5.12":[110.593,-15.159,88.583],"5.17":[110.593,-15.169,88.575],"5.21":[111.187,-14.33,87.874],"5.25":[113.72,-10.087,84.664],"5.29":[116.866,-2.252,79.839],"5.33":[118.773,7.212,75.225],"5.38":[119.033,16.64,72.104],"5.42":[118.53,25.508,70.98],"5.46":[118.402,32.569,70.826],"5.5":[118.425,37.885,71.049],"5.54":[118.017,41.404,71.39],"5.58":[117.529,43.617,71.796],"5.62":[117.304,44.94,72.388],"5.67":[117.392,45.578,73.227],"5.71":[117.675,45.927,74.257],"5.75":[118.099,46.091,75.37],"5.79":[118.586,46.065,76.395],"5.83":[119.016,45.927,77.161],"5.88":[119.369,45.76,77.787],"5.92":[119.647,45.619,78.288],"5.96":[119.746,45.541,78.604],"6.0":[119.814,45.501,78.857],"6.04":[119.831,45.504,78.917],"6.08":[119.82,45.5,78.915],"6.12":[119.821,45.51,78.909]},"position":{"0.0":[14.82,-28.016,-20.998],"0.04":[16.337,-29.754,-19.336],"0.08":[17.913,-31.343,-17.654],"0.12":[19.101,-32.527,-16.229],"0.17":[20.067,-33.536,-14.981],"0.21":[20.582,-34.071,-14.241],"0.25":[20.479,-34.194,-14.185],"0.29":[20.263,-34.388,-14.437],"0.33":[20.214,-34.802,-14.732],"0.38":[20.165,-35.259,-15.052],"0.42":[20.114,-35.699,-15.364],"0.46":[20.076,-36.064,-15.619],"0.5":[20.055,-36.203,-15.711],"0.54":[20.052,-36.297,-15.78],"0.58":[20.04,-36.333,-15.803],"0.62":[20.036,-36.333,-15.802],"0.67":[20.036,-36.333,-15.803],"0.71":[20.037,-36.333,-15.803],"0.75":[20.038,-36.333,-15.803],"0.79":[20.038,-36.334,-15.803],"0.83":[20.039,-36.334,-15.802],"0.88":[20.039,-36.334,-15.802],"0.92":[20.04,-36.336,-15.802],"0.96":[20.041,-36.336,-15.801],"1.0":[20.041,-36.336,-15.801],"1.04":[20.042,-36.336,-15.801],"1.08":[20.043,-36.337,-15.801],"1.12":[20.044,-36.337,-15.801],"1.17":[20.044,-36.338,-15.8],"1.21":[20.046,-36.339,-15.8],"1.25":[20.047,-36.339,-15.8],"1.29":[20.048,-36.34,-15.799],"1.33":[20.05,-36.341,-15.8],"1.38":[20.051,-36.342,-15.799],"1.42":[20.051,-36.342,-15.799],"1.46":[20.053,-36.343,-15.798],"1.5":[20.055,-36.345,-15.799],"1.54":[20.06,-36.352,-15.803],"1.58":[20.065,-36.359,-15.802],"1.62":[20.07,-36.363,-15.799],"1.67":[20.074,-36.366,-15.797],"1.71":[20.077,-36.368,-15.796],"1.75":[20.068,-36.369,-15.796],"1.79":[20.066,-36.369,-15.796],"1.83":[20.068,-36.371,-15.795],"1.88":[20.069,-36.371,-15.795],"1.92":[20.069,-36.372,-15.795],"1.96":[20.071,-36.373,-15.794],"2.0":[20.071,-36.376,-15.801],"2.04":[20.072,-36.382,-15.801],"2.08":[20.074,-36.382,-15.801],"2.12":[20.076,-36.384,-15.799],"2.17":[20.077,-36.385,-15.799],"2.21":[20.078,-36.385,-15.799],"2.25":[20.079,-36.386,-15.798],"2.29":[20.082,-36.388,-15.798],"2.33":[20.082,-36.388,-15.798],"2.38":[20.084,-36.389,-15.797],"2.42":[20.085,-36.389,-15.797],"2.46":[20.087,-36.392,-15.795],"2.5":[20.088,-36.392,-15.796],"2.54":[20.089,-36.393,-15.795],"2.58":[20.09,-36.393,-15.795],"2.62":[20.091,-36.394,-15.794],"2.67":[20.092,-36.395,-15.794],"2.71":[20.094,-36.396,-15.794],"2.75":[20.095,-36.396,-15.793],"2.79":[20.096,-36.398,-15.792],"2.83":[20.097,-36.399,-15.792],"2.88":[20.098,-36.399,-15.791],"2.92":[20.1,-36.399,-15.792],"2.96":[20.102,-36.408,-15.791],"3.0":[20.103,-36.409,-15.798],"3.04":[20.104,-36.41,-15.798],"3.08":[20.094,-36.41,-15.798],"3.12":[20.091,-36.411,-15.797],"3.17":[20.092,-36.412,-15.797],"3.21":[20.093,-36.413,-15.796],"3.25":[20.094,-36.413,-15.796],"3.29":[20.095,-36.415,-15.794],"3.33":[20.096,-36.415,-15.795],"3.38":[20.098,-36.416,-15.795],"3.42":[20.098,-36.417,-15.794],"3.46":[20.099,-36.418,-15.793],"3.5":[20.1,-36.418,-15.793],"3.54":[20.101,-36.418,-15.793],"3.58":[20.102,-36.419,-15.793],"3.62":[20.104,-36.419,-15.793],"3.67":[20.105,-36.42,-15.792],"3.71":[20.106,-36.421,-15.792],"3.75":[20.106,-36.421,-15.791],"3.79":[20.107,-36.422,-15.792],"3.83":[20.108,-36.422,-15.791],"3.88":[20.109,-36.423,-15.791],"3.92":[20.109,-36.423,-15.791],"3.96":[20.11,-36.424,-15.79],"4.0":[20.11,-36.424,-15.79],"4.04":[20.11,-36.425,-15.789],"4.08":[20.111,-36.424,-15.79],"4.12":[20.112,-36.424,-15.79],"4.17":[20.113,-36.425,-15.79],"4.21":[20.113,-36.426,-15.789],"4.25":[20.114,-36.426,-15.789],"4.29":[20.115,-36.426,-15.79],"4.33":[20.115,-36.426,-15.789],"4.38":[20.114,-36.427,-15.788],"4.42":[20.115,-36.428,-15.788],"4.46":[20.116,-36.427,-15.789],"4.5":[20.115,-36.428,-15.788],"4.54":[20.116,-36.428,-15.788],"4.92":[20.116,-36.428,-15.788],"4.96":[20.116,-36.436,-15.788],"5.08":[20.116,-36.436,-15.788],"5.12":[20.116,-36.434,-15.789],"5.17":[20.116,-36.436,-15.788],"5.21":[19.967,-36.322,-15.958],"5.25":[19.244,-35.776,-16.782],"5.29":[18.035,-34.803,-18.19],"5.33":[16.722,-33.66,-19.776],"5.38":[15.738,-32.562,-20.958],"5.42":[15.136,-31.429,-21.551],"5.46":[14.674,-30.339,-21.862],"5.5":[14.34,-29.328,-22.046],"5.54":[14.122,-28.475,-22.175],"5.58":[14.018,-27.76,-22.234],"5.62":[14.01,-27.201,-22.218],"5.67":[14.03,-26.952,-22.156],"5.71":[14.058,-26.879,-22.083],"5.75":[14.08,-26.889,-22.011],"5.79":[14.1,-26.944,-21.927],"5.83":[14.105,-27.017,-21.874],"5.88":[14.105,-27.068,-21.839],"5.92":[14.106,-27.107,-21.814],"5.96":[14.104,-27.137,-21.794],"6.0":[14.102,-27.142,-21.792],"6.04":[14.098,-27.134,-21.796],"6.08":[14.097,-27.125,-21.806],"6.12":[14.098,-27.113,-21.809]}},"righthand":{"position":[-1,3.5,0.65],"scale":[1,1.4,1]}}},"melee_1":{"loop":true,"animation_length":3.29,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[88.113,0.806,133.207],"0.04":[66.623,12.372,134.331],"0.08":[51.444,23.607,130.511],"0.12":[40.277,31.413,122.384],"0.17":[30.288,17.227,126.368],"0.21":[27.005,13.887,154.39],"0.25":[34.286,22.135,171.734],"0.29":[52.211,33.066,185.229],"0.33":[76.409,40.037,202.459],"0.38":[98.113,39.144,219.788],"0.42":[107.436,32.309,230.426],"0.46":[105.321,23.315,235.283],"0.5":[99.074,13.796,238.938],"0.54":[94.915,5.013,244.554],"0.58":[95.062,-3.484,253.772],"0.62":[95.198,-13.633,267.054],"0.67":[90.033,-23.365,282.41],"0.71":[80.805,-28.945,295.65],"0.75":[74.138,-32.211,300.611],"0.79":[73.104,-37.148,296.326],"0.83":[77.242,-42.787,285.826],"0.88":[82.407,-46.679,275.836],"0.92":[85.027,-48.686,270.844],"0.96":[86.021,-49.569,268.786],"1.0":[86.21,-49.704,268.183],"1.04":[86.05,-49.51,268.218],"1.08":[85.852,-49.271,268.314],"1.12":[85.916,-49.291,267.943]},"position":{"0.0":[-14.263,-22.257,-22.093],"0.04":[-7.905,-23.329,-24.918],"0.08":[-0.937,-25.374,-25.035],"0.12":[4.849,-27.82,-22.317],"0.17":[12.333,-29.91,-14.812],"0.21":[10.109,-36.788,-10.632],"0.25":[7.01,-39.905,-9.426],"0.29":[5.095,-40.838,-10.223],"0.33":[3.693,-40.817,-11.71],"0.38":[2.393,-40.401,-13.234],"0.42":[0.619,-40.01,-14.736],"0.46":[-1.883,-39.559,-16.256],"0.5":[-4.595,-38.735,-17.482],"0.54":[-6.694,-37.507,-18.375],"0.58":[-7.549,-35.776,-19.227],"0.62":[-7.429,-33.371,-20.161],"0.67":[-7.215,-30.583,-20.793],"0.71":[-7.511,-28.21,-20.87],"0.75":[-8.277,-26.795,-20.518],"0.79":[-9.176,-26.168,-19.938],"0.83":[-9.989,-25.951,-19.177],"0.88":[-10.582,-25.76,-18.366],"0.92":[-10.903,-25.478,-17.617],"0.96":[-11.021,-25.227,-16.991],"1.0":[-11.037,-25.109,-16.639],"1.04":[-11.031,-25.071,-16.442],"1.08":[-11.052,-25.079,-16.382],"1.12":[-11.116,-25.094,-16.376]}},"m9":{"rotation":{"0.0":[19.385,9.529,166.096],"0.04":[19.427,9.513,166.166],"0.08":[19.389,9.476,166.128],"0.12":[19.433,9.481,166.156],"0.17":[19.624,8.908,166.059],"0.21":[19.549,9.154,165.941],"0.25":[19.414,9.436,166.141],"0.29":[19.395,9.492,166.161],"0.33":[19.427,9.495,166.222],"0.38":[19.461,9.532,166.225],"0.42":[19.456,9.565,166.163],"0.46":[19.394,9.544,166.16],"0.5":[19.466,9.584,166.146],"0.54":[19.517,9.591,166.149],"0.58":[19.567,9.571,166.198],"0.62":[19.415,9.555,166.174],"0.67":[19.599,9.554,166.08],"0.71":[19.512,9.521,166.091],"0.75":[19.431,9.5,166.169],"0.79":[19.436,9.504,166.161],"0.83":[19.435,9.528,166.174],"0.88":[19.439,9.544,166.177],"0.92":[19.447,9.557,166.17],"0.96":[19.447,9.547,166.176],"1.0":[19.43,9.547,166.168],"1.04":[19.44,9.555,166.176],"1.08":[19.451,9.554,166.183],"1.12":[19.444,9.55,166.172]},"position":[5,12.6,-1.55]},"lefthand":{"rotation":{"0.0":[62.487,-1.701,70.422],"0.04":[48.012,-7.828,65.39],"0.08":[34.055,-14.748,61.706],"0.12":[21.522,-21.56,59.391],"0.17":[12.311,-26.989,57.958],"0.21":[8.068,-30.388,56.209],"0.25":[11.176,-31.054,52.568],"0.29":[19.245,-28.717,48.289],"0.33":[27.828,-23.777,46.624],"0.38":[34.085,-18.003,49.015],"0.42":[39.745,-11.739,54.699],"0.46":[46.234,-5.393,62.461],"0.5":[53.971,0.4,71.51],"0.54":[62.853,5.035,80.744],"0.58":[72.428,8.276,89.119],"0.62":[82.157,10.332,95.509],"0.67":[92.181,11.902,98.623],"0.71":[102.52,13.508,99.337],"0.75":[112.18,15.518,98.353],"0.79":[120.341,18.221,96.533],"0.83":[125.633,21.856,94.661],"0.88":[127.222,27.116,91.819],"0.92":[125.527,33.449,87.535],"0.96":[122.194,39.318,82.651],"1.0":[120.007,43.24,79.323],"1.04":[119.484,44.898,78.337],"1.08":[119.664,45.207,78.637],"1.12":[119.832,45.506,78.939]},"position":{"0.0":[28.111,-29.441,-8.368],"0.04":[29.495,-27.492,-3.486],"0.08":[29.511,-25.46,1.456],"0.12":[28.435,-23.611,5.681],"0.17":[27.329,-22.326,8.182],"0.21":[26.876,-21.499,9.185],"0.25":[27.341,-21.034,8.627],"0.29":[28.368,-21.007,6.824],"0.33":[29.277,-21.631,4.386],"0.38":[29.691,-22.825,2.083],"0.42":[29.549,-24.49,-0.2],"0.46":[28.829,-26.345,-2.607],"0.5":[27.472,-28.07,-5.086],"0.54":[25.688,-29.376,-7.46],"0.58":[23.753,-30.139,-9.624],"0.62":[21.933,-30.361,-11.536],"0.67":[20.521,-29.965,-13.298],"0.71":[19.363,-29.177,-14.966],"0.75":[18.319,-28.254,-16.444],"0.79":[17.297,-27.432,-17.722],"0.83":[16.316,-26.985,-18.817],"0.88":[15.591,-26.875,-19.732],"0.92":[15.123,-26.945,-20.511],"0.96":[14.772,-27.08,-21.14],"1.0":[14.456,-27.117,-21.524],"1.04":[14.227,-27.124,-21.737],"1.08":[14.144,-27.132,-21.809],"1.12":[14.098,-27.11,-21.809]}},"root":{"position":{"0.0":[0,0,10.2],"0.58":{"pre":[0,0,10.2],"post":[0,0,0]}}},"righthand":{"position":[-1,3.5,0.65],"scale":[1,1.4,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"melee_2":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[-59.09,-133.534,55.388],"0.04":[-80.215,-129.599,78.815],"0.08":[-121.441,-133.889,105.199],"0.12":[-143.439,-150.705,111.723],"0.17":[-155.376,-166.475,103.92],"0.21":[-171.171,-177.731,90.553],"0.25":[-189.974,-181.555,74.097],"0.29":[-199.446,-180.648,67.244],"0.33":[-184.621,-189.204,70.317],"0.38":[-166.022,-195.777,76.536],"0.42":[-145.879,-198.05,84.806],"0.46":[-128.69,-194.68,93.167],"0.5":[-118.751,-184.823,103.945],"0.54":[-116.387,-172.533,116.711],"0.58":[-118.184,-162.568,126.371],"0.62":[-118.57,-154.579,127.625],"0.67":[-116.277,-147.318,122.358],"0.71":[-111.586,-141.202,113.507],"0.75":[-105.438,-136.809,103.351],"0.79":[-99.87,-133.881,95.145],"0.83":[-96.713,-132.118,91.059],"0.88":[-95.107,-131.315,89.079],"0.92":[-94.56,-131.009,88.445],"0.96":[-94.442,-130.9,88.358],"1.0":[-93.997,-130.667,87.838],"1.04":[-93.753,-130.553,87.543],"1.08":[-93.919,-130.624,87.752],"1.12":[-94.084,-130.709,87.943]},"position":{"0.0":[0.619,-25.499,-20.583],"0.04":[-5.783,-23.658,-22.691],"0.08":[-12.834,-24.581,-21.419],"0.12":[-17.575,-26.23,-19.022],"0.17":[-21.135,-27.041,-16.896],"0.21":[-23.842,-27.954,-14.309],"0.25":[-25.693,-29.048,-11.341],"0.29":[-27.056,-30.729,-6.375],"0.33":[-25.336,-31.194,-9.669],"0.38":[-22.147,-31.444,-13.373],"0.42":[-17.966,-31.454,-16.072],"0.46":[-14.331,-31.027,-17.216],"0.5":[-13.016,-29.861,-17.202],"0.54":[-13.069,-28.398,-16.678],"0.58":[-13.241,-27.222,-16.102],"0.62":[-12.937,-26.545,-15.881],"0.67":[-12.504,-26.14,-15.921],"0.71":[-12.069,-25.849,-16.072],"0.75":[-11.673,-25.626,-16.242],"0.79":[-11.373,-25.426,-16.338],"0.83":[-11.222,-25.274,-16.35],"0.88":[-11.152,-25.186,-16.362],"0.92":[-11.131,-25.143,-16.368],"0.96":[-11.131,-25.119,-16.374],"1.0":[-11.113,-25.091,-16.377],"1.04":[-11.102,-25.082,-16.38],"1.08":[-11.109,-25.088,-16.378],"1.12":[-11.116,-25.094,-16.376]}},"m9":{"rotation":{"0.0":[19.567,9.602,166.099],"0.04":[19.593,9.686,166.137],"0.08":[19.08,8.791,166.638],"0.12":[19.439,9.547,166.18],"0.17":[19.548,9.744,166.281],"0.21":[19.619,9.844,166.347],"0.25":[19.446,9.69,166.118],"0.29":[19.455,9.534,166.133],"0.33":[19.485,9.548,166.241],"0.38":[19.505,9.535,166.254],"0.42":[19.486,9.514,166.217],"0.46":[19.413,9.546,166.122],"0.5":[19.583,9.468,166.183],"0.54":[19.584,9.414,166.15],"0.58":[19.469,9.477,166.179],"0.62":[19.422,9.485,166.176],"0.67":[19.426,9.503,166.165],"0.71":[19.43,9.53,166.164],"0.75":[19.447,9.553,166.174],"0.79":[19.445,9.552,166.179],"0.83":[19.437,9.552,166.17],"0.88":[19.445,9.563,166.176],"0.92":[19.446,9.548,166.175],"0.96":[19.444,9.56,166.181],"1.0":[19.444,9.549,166.177],"1.04":[19.44,9.553,166.172],"1.08":[19.448,9.556,166.166],"1.12":[19.444,9.548,166.179]},"position":[5,12.6,-1.55]},"lefthand":{"rotation":{"0.0":[100.256,-17.72,91.865],"0.04":[84.539,-23.191,96.419],"0.08":[71.675,-26.146,100.351],"0.12":[63.078,-26.676,102.288],"0.17":[56.382,-26.176,103.156],"0.21":[51.153,-25.252,103.13],"0.25":[47.609,-24.206,102.112],"0.29":[45.969,-23.211,100.033],"0.33":[47.065,-22.254,96.48],"0.38":[51.992,-20.847,90.419],"0.42":[59.98,-18.177,82.729],"0.46":[68.695,-14.041,75.624],"0.5":[75.964,-9.23,71.09],"0.54":[80.835,-4.98,69.684],"0.58":[84.443,-1.489,70.587],"0.62":[87.827,1.407,72.868],"0.67":[91.276,3.808,75.876],"0.71":[95.012,5.989,78.878],"0.75":[99.004,8.331,81.368],"0.79":[103.17,11.379,82.96],"0.83":[107.463,17.55,82.563],"0.88":[111.248,25.856,81.205],"0.92":[114.074,33.049,80.191],"0.96":[116.303,37.986,79.86],"1.0":[117.654,40.917,79.528],"1.04":[118.639,43.041,79.17],"1.08":[119.44,44.711,78.974],"1.12":[119.832,45.506,78.939]},"position":{"0.0":[22.511,-32.943,-14.78],"0.04":[21.832,-32.931,-14.848],"0.08":[21.508,-32.893,-14.769],"0.12":[21.69,-32.835,-14.514],"0.17":[22.155,-32.757,-14.116],"0.21":[22.736,-32.661,-13.642],"0.25":[23.31,-32.569,-13.137],"0.29":[23.777,-32.489,-12.682],"0.33":[24.044,-32.441,-12.376],"0.38":[24.195,-32.451,-12.11],"0.42":[24.268,-32.501,-11.894],"0.46":[24.241,-32.548,-11.873],"0.5":[24.059,-32.56,-12.256],"0.54":[23.673,-32.475,-13.099],"0.58":[23.046,-32.265,-14.319],"0.62":[22.169,-31.901,-15.748],"0.67":[21.035,-31.352,-17.215],"0.71":[19.735,-30.659,-18.555],"0.75":[18.39,-29.884,-19.665],"0.79":[17.126,-29.113,-20.499],"0.83":[16.064,-28.442,-21.048],"0.88":[15.231,-27.886,-21.409],"0.92":[14.642,-27.481,-21.623],"0.96":[14.262,-27.22,-21.744],"1.0":[14.147,-27.144,-21.785],"1.04":[14.138,-27.14,-21.794],"1.08":[14.119,-27.123,-21.804],"1.12":[14.098,-27.11,-21.809]}},"root":{"position":{"0.0":[0,0,10.2],"0.58":{"pre":[0,0,10.2],"post":[0,0,0]}}},"righthand":{"position":[-1,3.5,0.65],"scale":[1,1.4,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash2"}}},"static_idle":{"loop":true,"animation_length":1.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[85.9,-49.343,-92.063],"0.04":[85.898,-49.394,-92.095],"0.08":[85.903,-49.442,-92.136],"0.12":[85.9,-49.492,-92.148],"0.17":[85.888,-49.527,-92.155],"0.21":[85.888,-49.567,-92.182],"0.25":[85.881,-49.598,-92.186],"0.29":[85.885,-49.616,-92.208],"0.33":[85.883,-49.629,-92.21],"0.38":[85.887,-49.63,-92.226],"0.42":[85.883,-49.631,-92.224],"0.46":[85.885,-49.623,-92.24],"0.5":[85.871,-49.597,-92.208],"0.54":[85.864,-49.556,-92.201],"0.58":[85.878,-49.513,-92.198],"0.62":[85.877,-49.474,-92.186],"0.67":[85.881,-49.41,-92.177],"0.71":[85.884,-49.339,-92.161],"0.75":[85.882,-49.273,-92.144],"0.79":[85.879,-49.195,-92.103],"0.83":[85.88,-49.107,-92.089],"0.88":[85.874,-49.034,-92.068],"0.92":[85.888,-48.958,-92.053],"0.96":[85.89,-48.865,-92.024],"1.0":[85.888,-48.789,-92.002],"1.04":[85.884,-48.711,-91.976],"1.08":[85.877,-48.634,-91.945],"1.12":[85.892,-48.561,-91.94],"1.17":[85.891,-48.499,-91.919],"1.21":[85.89,-48.435,-91.895],"1.25":[85.893,-48.385,-91.877],"1.29":[85.882,-48.334,-91.857],"1.33":[85.885,-48.31,-91.85],"1.38":[85.893,-48.293,-91.847],"1.42":[85.894,-48.285,-91.832],"1.46":[85.9,-48.275,-91.836],"1.5":[85.894,-48.305,-91.838],"1.54":[85.894,-48.327,-91.849],"1.58":[85.9,-48.371,-91.852],"1.62":[85.901,-48.413,-91.869],"1.67":[85.912,-48.484,-91.892],"1.71":[85.906,-48.55,-91.887],"1.75":[85.906,-48.649,-91.924],"1.79":[85.889,-48.734,-91.911],"1.83":[85.906,-48.855,-91.953],"1.88":[85.904,-48.985,-91.983],"1.92":[85.906,-49.13,-92.022],"1.96":[85.916,-49.291,-92.057]},"position":{"0.0":[-11.115,-25.118,-16.38],"0.04":[-11.116,-25.136,-16.383],"0.08":[-11.113,-25.152,-16.384],"0.12":[-11.114,-25.172,-16.386],"0.17":[-11.111,-25.185,-16.387],"0.21":[-11.111,-25.198,-16.386],"0.25":[-11.11,-25.205,-16.388],"0.29":[-11.11,-25.213,-16.388],"0.33":[-11.108,-25.224,-16.389],"0.38":[-11.109,-25.227,-16.388],"0.42":[-11.109,-25.23,-16.389],"0.46":[-11.109,-25.23,-16.39],"0.5":[-11.108,-25.229,-16.389],"0.54":[-11.109,-25.227,-16.39],"0.58":[-11.108,-25.217,-16.389],"0.62":[-11.11,-25.209,-16.386],"0.67":[-11.11,-25.203,-16.388],"0.71":[-11.11,-25.192,-16.387],"0.75":[-11.111,-25.18,-16.385],"0.79":[-11.113,-25.171,-16.385],"0.83":[-11.114,-25.155,-16.385],"0.88":[-11.115,-25.144,-16.381],"0.92":[-11.115,-25.127,-16.38],"0.96":[-11.115,-25.115,-16.379],"1.0":[-11.117,-25.097,-16.378],"1.04":[-11.117,-25.087,-16.377],"1.08":[-11.118,-25.071,-16.377],"1.12":[-11.12,-25.059,-16.372],"1.17":[-11.119,-25.043,-16.372],"1.21":[-11.12,-25.034,-16.372],"1.25":[-11.122,-25.021,-16.37],"1.29":[-11.123,-25.014,-16.371],"1.33":[-11.124,-25.007,-16.368],"1.38":[-11.125,-25.003,-16.369],"1.42":[-11.125,-25,-16.367],"1.46":[-11.123,-24.999,-16.367],"1.5":[-11.124,-24.999,-16.367],"1.54":[-11.124,-25,-16.367],"1.58":[-11.125,-25.002,-16.368],"1.62":[-11.121,-25.006,-16.371],"1.67":[-11.122,-25.01,-16.369],"1.71":[-11.123,-25.021,-16.371],"1.75":[-11.122,-25.03,-16.369],"1.79":[-11.121,-25.038,-16.373],"1.83":[-11.119,-25.05,-16.373],"1.88":[-11.119,-25.065,-16.373],"1.92":[-11.119,-25.081,-16.375],"1.96":[-11.116,-25.094,-16.376]}},"m9":{"rotation":{"0.0":[19.447,9.569,166.177],"0.04":[19.443,9.56,166.175],"0.08":[19.441,9.552,166.173],"0.12":[19.453,9.56,166.174],"0.17":[19.448,9.562,166.176],"0.21":[19.442,9.549,166.17],"0.25":[19.447,9.56,166.167],"0.29":[19.447,9.549,166.176],"0.33":[19.45,9.561,166.175],"0.38":[19.449,9.549,166.181],"0.42":[19.445,9.551,166.179],"0.46":[19.44,9.534,166.179],"0.5":[19.434,9.56,166.177],"0.54":[19.435,9.553,166.181],"0.58":[19.447,9.553,166.188],"0.62":[19.444,9.545,166.182],"0.67":[19.45,9.553,166.177],"0.71":[19.444,9.55,166.186],"0.75":[19.436,9.544,166.175],"0.79":[19.448,9.561,166.176],"0.83":[19.445,9.557,166.188],"0.88":[19.44,9.55,166.182],"0.92":[19.448,9.547,166.173],"0.96":[19.451,9.549,166.194],"1.0":[19.445,9.548,166.176],"1.04":[19.446,9.553,166.175],"1.08":[19.442,9.56,166.183],"1.12":[19.451,9.551,166.184],"1.17":[19.444,9.548,166.176],"1.21":[19.442,9.556,166.178],"1.25":[19.447,9.557,166.179],"1.29":[19.431,9.555,166.181],"1.33":[19.44,9.559,166.18],"1.38":[19.439,9.554,166.175],"1.42":[19.454,9.564,166.175],"1.46":[19.453,9.563,166.192],"1.5":[19.454,9.555,166.18],"1.54":[19.449,9.551,166.181],"1.58":[19.453,9.558,166.179],"1.62":[19.44,9.551,166.187],"1.67":[19.448,9.546,166.178],"1.71":[19.454,9.564,166.186],"1.75":[19.442,9.55,166.172],"1.79":[19.445,9.578,166.182],"1.83":[19.446,9.555,166.183],"1.88":[19.446,9.559,166.179],"1.92":[19.444,9.554,166.181],"1.96":[19.444,9.548,166.179]},"position":[5,12.6,-1.55]},"lefthand":{"rotation":{"0.0":[119.862,45.607,78.984],"0.04":[119.901,45.692,79.046],"0.08":[119.97,45.771,79.138],"0.12":[120.001,45.86,79.195],"0.17":[120.06,45.931,79.276],"0.21":[120.139,45.998,79.382],"0.25":[120.219,46.063,79.482],"0.29":[120.293,46.121,79.579],"0.33":[120.346,46.198,79.651],"0.38":[120.445,46.246,79.774],"0.42":[120.513,46.298,79.862],"0.46":[120.622,46.351,79.986],"0.5":[120.683,46.412,80.077],"0.54":[120.75,46.472,80.162],"0.58":[120.834,46.533,80.263],"0.62":[120.908,46.588,80.368],"0.67":[120.987,46.644,80.472],"0.71":[121.051,46.707,80.56],"0.75":[121.125,46.771,80.663],"0.79":[121.176,46.848,80.729],"0.83":[121.261,46.926,80.843],"0.88":[121.314,47.004,80.922],"0.92":[121.353,47.095,81],"0.96":[121.381,47.204,81.056],"1.0":[121.353,47.095,81],"1.04":[121.314,47.004,80.922],"1.08":[121.252,46.926,80.835],"1.12":[121.191,46.845,80.745],"1.17":[121.122,46.768,80.66],"1.21":[121.051,46.707,80.56],"1.25":[120.987,46.644,80.472],"1.29":[120.908,46.588,80.368],"1.33":[120.834,46.533,80.263],"1.38":[120.75,46.472,80.162],"1.42":[120.683,46.412,80.077],"1.46":[120.622,46.351,79.986],"1.5":[120.512,46.299,79.861],"1.54":[120.442,46.246,79.769],"1.58":[120.345,46.197,79.65],"1.62":[120.293,46.121,79.579],"1.67":[120.219,46.067,79.486],"1.71":[120.132,46.002,79.375],"1.75":[120.06,45.931,79.276],"1.79":[120.005,45.864,79.2],"1.83":[119.966,45.772,79.138],"1.88":[119.902,45.69,79.051],"1.92":[119.862,45.606,78.987],"1.96":[119.816,45.514,78.921]},"position":{"0.0":[14.102,-27.115,-21.813],"0.04":[14.106,-27.121,-21.816],"0.08":[14.109,-27.127,-21.818],"0.12":[14.105,-27.141,-21.822],"0.17":[14.108,-27.151,-21.825],"0.21":[14.109,-27.165,-21.822],"0.25":[14.104,-27.179,-21.82],"0.29":[14.105,-27.198,-21.822],"0.33":[14.106,-27.209,-21.818],"0.38":[14.1,-27.228,-21.818],"0.42":[14.102,-27.248,-21.815],"0.46":[14.095,-27.26,-21.813],"0.5":[14.095,-27.279,-21.813],"0.54":[14.092,-27.298,-21.81],"0.58":[14.093,-27.317,-21.811],"0.62":[14.086,-27.329,-21.806],"0.67":[14.089,-27.347,-21.808],"0.71":[14.091,-27.362,-21.806],"0.75":[14.087,-27.376,-21.804],"0.79":[14.087,-27.386,-21.806],"0.83":[14.089,-27.4,-21.808],"0.88":[14.093,-27.406,-21.807],"0.92":[14.098,-27.41,-21.807],"0.96":[14.102,-27.415,-21.811],"1.0":[14.098,-27.41,-21.807],"1.04":[14.093,-27.406,-21.807],"1.08":[14.089,-27.4,-21.808],"1.12":[14.087,-27.386,-21.806],"1.17":[14.087,-27.376,-21.804],"1.21":[14.091,-27.362,-21.806],"1.25":[14.089,-27.347,-21.808],"1.29":[14.086,-27.329,-21.806],"1.33":[14.093,-27.317,-21.811],"1.38":[14.092,-27.298,-21.81],"1.42":[14.095,-27.279,-21.813],"1.46":[14.095,-27.26,-21.813],"1.5":[14.102,-27.248,-21.815],"1.54":[14.1,-27.228,-21.818],"1.58":[14.106,-27.209,-21.818],"1.62":[14.105,-27.198,-21.822],"1.67":[14.105,-27.179,-21.82],"1.71":[14.11,-27.165,-21.823],"1.75":[14.108,-27.151,-21.825],"1.79":[14.105,-27.141,-21.822],"1.83":[14.109,-27.127,-21.818],"1.88":[14.106,-27.121,-21.816],"1.92":[14.102,-27.115,-21.813],"1.96":[14.099,-27.11,-21.81]}},"righthand":{"position":[-1,3.5,0.65],"scale":[1,1.4,1]}}},"idle":{"loop":true,"bones":{"root":{"rotation":[0,0,0],"position":[0,0,0],"scale":1}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/m9.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/m9.geo.json new file mode 100644 index 0000000..6f9344b --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/m9.geo.json @@ -0,0 +1,741 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 4, + "visible_bounds_height": 4, + "visible_bounds_offset": [0, 0, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "bone", + "parent": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "knife_and_right", + "parent": "bone", + "pivot": [6, 19, 0] + }, + { + "name": "m9", + "parent": "knife_and_right", + "pivot": [0, 9.5, 2.5] + }, + { + "name": "weapon", + "parent": "m9", + "pivot": [0, 9.5, -0.375] + }, + { + "name": "blade", + "parent": "weapon", + "pivot": [0, 10.0329, -2.71994], + "cubes": [ + { + "origin": [-0.149, 10.235, -5.6925], + "size": [0.297, 0.056, 3.74], + "uv": { + "north": {"uv": [0, 0], "uv_size": [2, 2]}, + "east": {"uv": [7.5, 34.5], "uv_size": [2, 2]}, + "south": {"uv": [0, 0], "uv_size": [2, 2]}, + "west": {"uv": [10.25, 34.5], "uv_size": [2, 2]}, + "up": {"uv": [17.5, 36.5], "uv_size": [-2, -2]}, + "down": {"uv": [2, 2], "uv_size": [-2, -2]} + } + }, + { + "origin": [-2.20119, 8.6375, -2.86369], + "size": [1.4375, 1.86875, 0.2875], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [0, 10], "uv_size": [1.25, 1.75]}, + "east": {"uv": [2, 22], "uv_size": [0.25, 1.75]}, + "south": {"uv": [3, 10], "uv_size": [1.25, 1.75]}, + "west": {"uv": [8, 22], "uv_size": [0.25, 1.75]}, + "up": {"uv": [22, 23], "uv_size": [1.25, 0.25]}, + "down": {"uv": [24, 6.25], "uv_size": [1.25, -0.25]} + } + }, + { + "origin": [-1.58658, 8.6375, -3.68125], + "size": [3.7375, 1.6, 0.29817], + "pivot": [-0.00533, 9.46406, -3.5375], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [6, 2], "uv_size": [3.25, 1.5]}, + "east": {"uv": [23, 11], "uv_size": [0.25, 1.5]}, + "south": {"uv": [7, 5], "uv_size": [3.25, 1.5]}, + "west": {"uv": [14, 23], "uv_size": [0.25, 1.5]}, + "up": {"uv": [19, 6], "uv_size": [3.25, 0.25]}, + "down": {"uv": [14, 19.25], "uv_size": [3.25, -0.25]} + } + }, + { + "origin": [5.81387, 7.6926, -2.86369], + "size": [0.8625, 0.2875, 0.2875], + "pivot": [0, 10.0329, -2.71994], + "rotation": [-90, 80, -90], + "uv": { + "north": {"uv": [12, 25], "uv_size": [0.75, 0.25]}, + "east": {"uv": [6, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 12], "uv_size": [0.75, 0.25]}, + "west": {"uv": [30, 8], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 14], "uv_size": [0.75, 0.25]}, + "down": {"uv": [16, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [6.16855, 6.56882, -2.86369], + "size": [0.73671, 0.2875, 0.2875], + "pivot": [0, 10.0329, -2.71994], + "rotation": [-90, 70, -90], + "uv": { + "north": {"uv": [25, 16], "uv_size": [0.75, 0.25]}, + "east": {"uv": [14, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 25], "uv_size": [0.75, 0.25]}, + "west": {"uv": [30, 20], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 18], "uv_size": [0.75, 0.25]}, + "down": {"uv": [20, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [5.77341, 4.89964, -2.86369], + "size": [0.83554, 0.2875, 0.2875], + "pivot": [0, 10.0329, -2.71994], + "rotation": [-90, 55, -90], + "uv": { + "north": {"uv": [22, 25], "uv_size": [0.75, 0.25]}, + "east": {"uv": [30, 24], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 22], "uv_size": [0.75, 0.25]}, + "west": {"uv": [26, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [24, 25], "uv_size": [0.75, 0.25]}, + "down": {"uv": [4, 26.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-1.33869, 8.94455, -3.80829], + "size": [6.325, 0.2033, 0.2033], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [13, 0], "uv_size": [5.5, 0.25]}, + "east": {"uv": [30, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [3, 13], "uv_size": [5.5, 0.25]}, + "west": {"uv": [28, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [10, 13], "uv_size": [5.5, 0.25]}, + "down": {"uv": [14, 2.25], "uv_size": [5.5, -0.25]} + } + }, + { + "origin": [5.81387, 8.27641, -4.47643], + "size": [0.8625, 0.2033, 0.2033], + "pivot": [0, 10.0329, -2.71994], + "rotation": [-45, 80, -90], + "uv": { + "north": {"uv": [6, 26], "uv_size": [0.75, 0.25]}, + "east": {"uv": [30, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [26, 8], "uv_size": [0.75, 0.25]}, + "west": {"uv": [30, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [14, 26], "uv_size": [0.75, 0.25]}, + "down": {"uv": [26, 20.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [6.16855, 7.48178, -5.27107], + "size": [0.73671, 0.20329, 0.2033], + "pivot": [0, 10.0329, -2.71994], + "rotation": [-45, 70, -90], + "uv": { + "north": {"uv": [26, 24], "uv_size": [0.75, 0.25]}, + "east": {"uv": [0, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [26, 26], "uv_size": [0.75, 0.25]}, + "west": {"uv": [31, 0], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 27], "uv_size": [0.75, 0.25]}, + "down": {"uv": [27, 0.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [5.71387, 6.33693, 0.77401], + "size": [0.83554, 0.2033, 0.2033], + "pivot": [-0.05955, 9.98413, -2.7541], + "rotation": [-135, 55, -90], + "uv": { + "north": {"uv": [2, 27], "uv_size": [0.75, 0.25]}, + "east": {"uv": [2, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 2], "uv_size": [0.75, 0.25]}, + "west": {"uv": [31, 2], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 4], "uv_size": [0.75, 0.25]}, + "down": {"uv": [27, 6.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [5.80726, 10.7815, -8.72829], + "size": [0.20329, 0.21562, 0.2033], + "pivot": [0, 10.1649, -2.71773], + "rotation": [11.2413, 44.4451, 7.9231], + "uv": { + "north": {"uv": [31, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 14], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 16], "uv_size": [0.25, 0.25]}, + "up": {"uv": [18, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 18.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [7.99708, 10.78151, -2.86148], + "size": [0.35938, 0.21562, 0.2875], + "pivot": [0, 10.1649, -2.71773], + "rotation": [90, 82, 90], + "uv": { + "north": {"uv": [31, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 6], "uv_size": [0.25, 0.25]}, + "south": {"uv": [8, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [31, 10], "uv_size": [0.25, 0.25]}, + "down": {"uv": [12, 31.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.14375, 10.14688, -6.55625], + "size": [4.52813, 0.35938, 0.2875], + "pivot": [0.14375, 10.50625, -6.26875], + "rotation": [90, 82, 90], + "uv": { + "north": {"uv": [15, 10], "uv_size": [4, 0.25]}, + "east": {"uv": [24, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [11, 15], "uv_size": [4, 0.25]}, + "west": {"uv": [4, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [16, 15], "uv_size": [4, 0.25]}, + "down": {"uv": [17, 4.25], "uv_size": [4, -0.25]} + } + }, + { + "origin": [2.97366, 8.63735, -2.86384], + "size": [5.4628, 1.86905, 0.2878], + "inflate": 0.001, + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [4.75, 0], "uv_size": [-4.75, 1.75]}, + "east": {"uv": [0, 22], "uv_size": [0.25, 1.75]}, + "south": {"uv": [4.75, 3], "uv_size": [-4.75, 1.75]}, + "up": {"uv": [18.75, 8], "uv_size": [-4.75, 0.25]} + } + }, + { + "origin": [-0.67144, 9.72594, -2.93557], + "size": [0.2875, 0.2875, 0.2875], + "pivot": [0, 10.0329, -2.79182], + "rotation": [90, 45, 90], + "uv": { + "north": {"uv": [20, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [4, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [6, 32.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.31567, 10.0817, -2.93557], + "size": [0.2875, 0.2875, 0.2875], + "pivot": [0, 10.0329, -2.79182], + "rotation": [90, 45, 90], + "uv": { + "north": {"uv": [32, 8], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 32], "uv_size": [0.25, 0.25]}, + "south": {"uv": [32, 20], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 24], "uv_size": [0.25, 0.25]}, + "up": {"uv": [26, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 26.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.04009, 10.43747, -2.93557], + "size": [0.2875, 0.2875, 0.2875], + "pivot": [0, 10.0329, -2.79182], + "rotation": [90, 45, 90], + "uv": { + "north": {"uv": [28, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [32, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [0, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.39585, 10.79323, -2.93557], + "size": [0.2875, 0.2875, 0.2875], + "pivot": [0, 10.0329, -2.79182], + "rotation": [90, 45, 90], + "uv": { + "north": {"uv": [33, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [2, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [33, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [33, 4], "uv_size": [0.25, 0.25]}, + "up": {"uv": [33, 6], "uv_size": [0.25, 0.25]}, + "down": {"uv": [8, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.75162, 11.149, -2.93557], + "size": [0.2875, 0.2875, 0.2875], + "pivot": [0, 10.0329, -2.79182], + "rotation": [90, 45, 90], + "uv": { + "north": {"uv": [10, 33], "uv_size": [0.25, 0.25]}, + "east": {"uv": [33, 10], "uv_size": [0.25, 0.25]}, + "south": {"uv": [12, 33], "uv_size": [0.25, 0.25]}, + "west": {"uv": [33, 12], "uv_size": [0.25, 0.25]}, + "up": {"uv": [33, 14], "uv_size": [0.25, 0.25]}, + "down": {"uv": [16, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [1.10738, 11.50476, -2.93557], + "size": [0.2875, 0.2875, 0.2875], + "pivot": [0, 10.0329, -2.79182], + "rotation": [90, 45, 90], + "uv": { + "north": {"uv": [33, 16], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [33, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 33], "uv_size": [0.25, 0.25]}, + "up": {"uv": [22, 33], "uv_size": [0.25, 0.25]}, + "down": {"uv": [33, 22.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.75162, 11.149, -3.94182], + "size": [0.2875, 0.2875, 0.2875], + "pivot": [0, 10.0329, -3.79807], + "rotation": [90, 45, 90], + "uv": { + "north": {"uv": [0, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [35, 0], "uv_size": [0.25, 0.25]}, + "south": {"uv": [2, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [35, 2], "uv_size": [0.25, 0.25]}, + "up": {"uv": [35, 4], "uv_size": [0.25, 0.25]}, + "down": {"uv": [35, 6.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [4.84571, 8.64101, -4.11183], + "size": [1.15, 0.2033, 0.2033], + "pivot": [0, 10.0329, -2.71994], + "rotation": [-45, 85, -90], + "uv": { + "north": {"uv": [24, 8], "uv_size": [1, 0.25]}, + "east": {"uv": [24, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [24, 20], "uv_size": [1, 0.25]}, + "west": {"uv": [4, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 25], "uv_size": [1, 0.25]}, + "down": {"uv": [25, 0.25], "uv_size": [1, -0.25]} + } + }, + { + "origin": [4.84571, 8.20823, -2.86369], + "size": [1.15, 0.2875, 0.2875], + "pivot": [0, 10.0329, -2.71994], + "rotation": [-90, 85, -90], + "uv": { + "north": {"uv": [2, 25], "uv_size": [1, 0.25]}, + "east": {"uv": [6, 34], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 2], "uv_size": [1, 0.25]}, + "west": {"uv": [34, 8], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 4], "uv_size": [1, 0.25]}, + "down": {"uv": [8, 25.25], "uv_size": [1, -0.25]} + } + } + ] + }, + { + "name": "grip", + "parent": "weapon", + "pivot": [0, 9.49999, 3.22902], + "cubes": [ + { + "origin": [-9.24494, 9.15295, -3.59989], + "size": [6.75625, 1.00625, 1.00625], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [0, 6], "uv_size": [6, 1]}, + "east": {"uv": [19, 17], "uv_size": [1, 1]}, + "south": {"uv": [6, 0], "uv_size": [6, 1]}, + "west": {"uv": [19, 19], "uv_size": [0.75, 1]}, + "up": {"uv": [0, 8], "uv_size": [6, 0.75]}, + "down": {"uv": [7, 8.75], "uv_size": [6, -0.75]} + } + }, + { + "origin": [-3.63869, 9.08108, -3.67176], + "size": [1.15, 1.15, 1.15], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [0, 16], "uv_size": [1, 1]}, + "east": {"uv": [5, 17], "uv_size": [1, 1]}, + "south": {"uv": [17, 6], "uv_size": [1, 1]}, + "west": {"uv": [7, 17], "uv_size": [1, 1]}, + "up": {"uv": [9, 17], "uv_size": [1, 1]}, + "down": {"uv": [11, 18], "uv_size": [1, -1]} + } + }, + { + "origin": [-4.78869, 9.08108, -3.67176], + "size": [0.8625, 1.15, 1.15], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [0, 20], "uv_size": [0.75, 1]}, + "east": {"uv": [17, 12], "uv_size": [1, 1]}, + "south": {"uv": [20, 0], "uv_size": [0.75, 1]}, + "west": {"uv": [13, 17], "uv_size": [1, 1]}, + "up": {"uv": [2, 20], "uv_size": [0.75, 1]}, + "down": {"uv": [20, 9], "uv_size": [0.75, -1]} + } + }, + { + "origin": [-5.93869, 9.08108, -3.67176], + "size": [0.8625, 1.15, 1.15], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [20, 10], "uv_size": [0.75, 1]}, + "east": {"uv": [15, 17], "uv_size": [1, 1]}, + "south": {"uv": [21, 2], "uv_size": [0.75, 1]}, + "west": {"uv": [17, 17], "uv_size": [1, 1]}, + "up": {"uv": [4, 21], "uv_size": [0.75, 1]}, + "down": {"uv": [6, 22], "uv_size": [0.75, -1]} + } + }, + { + "origin": [-7.08869, 9.08108, -3.67176], + "size": [0.8625, 1.15, 1.15], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [21, 12], "uv_size": [0.75, 1]}, + "east": {"uv": [0, 18], "uv_size": [1, 1]}, + "south": {"uv": [14, 21], "uv_size": [0.75, 1]}, + "west": {"uv": [2, 18], "uv_size": [1, 1]}, + "up": {"uv": [21, 14], "uv_size": [0.75, 1]}, + "down": {"uv": [16, 22], "uv_size": [0.75, -1]} + } + }, + { + "origin": [-9.10119, 8.93733, -3.81551], + "size": [1.4375, 1.4375, 1.4375], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [6, 10], "uv_size": [1.25, 1.25]}, + "east": {"uv": [9, 10], "uv_size": [1.25, 1.25]}, + "south": {"uv": [11, 2], "uv_size": [1.25, 1.25]}, + "west": {"uv": [12, 5], "uv_size": [1.25, 1.25]}, + "up": {"uv": [12, 10], "uv_size": [1.25, 1.25]}, + "down": {"uv": [0, 14.25], "uv_size": [1.25, -1.25]} + } + }, + { + "origin": [-8.23869, 9.08108, -3.67176], + "size": [0.8625, 1.15, 1.15], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, -45], + "uv": { + "north": {"uv": [21, 16], "uv_size": [0.75, 1]}, + "east": {"uv": [4, 19], "uv_size": [1, 1]}, + "south": {"uv": [18, 21], "uv_size": [0.75, 1]}, + "west": {"uv": [6, 19], "uv_size": [1, 1]}, + "up": {"uv": [21, 18], "uv_size": [0.75, 1]}, + "down": {"uv": [20, 22], "uv_size": [0.75, -1]} + } + } + ] + }, + { + "name": "bone3", + "parent": "weapon", + "pivot": [0, 0.875, -1.09375], + "cubes": [ + { + "origin": [0.8625, 7.27188, -0.80625], + "size": [0.2875, 1.94063, 0.575], + "pivot": [0.8625, 9.2125, -0.23125], + "rotation": [0, 90, 15], + "uv": { + "north": {"uv": [12, 22], "uv_size": [0.25, 1.75]}, + "east": {"uv": [8, 19], "uv_size": [0.5, 1.75]}, + "south": {"uv": [22, 20], "uv_size": [0.25, 1.75]}, + "west": {"uv": [10, 19], "uv_size": [0.5, 1.75]}, + "up": {"uv": [29, 18], "uv_size": [0.25, 0.5]}, + "down": {"uv": [20, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.8625, 7.27188, -1.09375], + "size": [0.2875, 1.94063, 0.575], + "pivot": [-0.8625, 9.2125, -0.51875], + "rotation": [0, -90, -15], + "uv": { + "north": {"uv": [23, 0], "uv_size": [0.25, 1.75]}, + "east": {"uv": [12, 19], "uv_size": [0.5, 1.75]}, + "south": {"uv": [23, 3], "uv_size": [0.25, 1.75]}, + "west": {"uv": [19, 12], "uv_size": [0.5, 1.75]}, + "up": {"uv": [22, 29], "uv_size": [0.25, 0.5]}, + "down": {"uv": [29, 22.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-2.48884, 7.3436, -3.07947], + "size": [0.2878, 2.0128, 0.71905], + "inflate": 0.001, + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [22, 8], "uv_size": [0.25, 1.75]}, + "east": {"uv": [3, 15], "uv_size": [0.75, 1.75]}, + "south": {"uv": [10, 22], "uv_size": [0.25, 1.75]}, + "west": {"uv": [15, 4], "uv_size": [0.75, 1.75]}, + "up": {"uv": [10, 29], "uv_size": [0.25, 0.75]}, + "down": {"uv": [29, 10.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-2.48869, 9.2125, -3.58244], + "size": [0.2875, 0.71875, 1.725], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [10, 25], "uv_size": [0.25, 0.75]}, + "east": {"uv": [5, 15], "uv_size": [1.5, 0.75]}, + "south": {"uv": [25, 10], "uv_size": [0.25, 0.75]}, + "west": {"uv": [8, 15], "uv_size": [1.5, 0.75]}, + "up": {"uv": [4, 23], "uv_size": [0.25, 1.5]}, + "down": {"uv": [6, 24.5], "uv_size": [0.25, -1.5]} + } + }, + { + "origin": [0.8625, 9.93125, -0.51875], + "size": [0.2875, 0.8625, 0.43125], + "pivot": [0.8625, 9.93125, -0.51875], + "rotation": [0, -90, -25], + "uv": { + "north": {"uv": [29, 6], "uv_size": [0.25, 0.75]}, + "east": {"uv": [23, 18], "uv_size": [0.5, 0.75]}, + "south": {"uv": [8, 29], "uv_size": [0.25, 0.75]}, + "west": {"uv": [20, 23], "uv_size": [0.5, 0.75]}, + "up": {"uv": [29, 16], "uv_size": [0.25, 0.5]}, + "down": {"uv": [18, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.43125, 11.8, -0.56243], + "size": [0.8625, 0.2875, 0.21563], + "pivot": [0, 11.225, -1.09375], + "rotation": [-90, 0, 0], + "uv": { + "north": {"uv": [8, 27], "uv_size": [0.75, 0.25]}, + "east": {"uv": [14, 34], "uv_size": [0.25, 0.25]}, + "south": {"uv": [10, 27], "uv_size": [0.75, 0.25]}, + "west": {"uv": [34, 20], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 10], "uv_size": [0.75, 0.25]}, + "down": {"uv": [12, 27.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-2.48869, 9.93125, -3.15119], + "size": [0.2875, 0.575, 0.8625], + "pivot": [0, 10.0329, -2.71994], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [12, 29], "uv_size": [0.25, 0.5]}, + "east": {"uv": [23, 14], "uv_size": [0.75, 0.5]}, + "south": {"uv": [29, 12], "uv_size": [0.25, 0.5]}, + "west": {"uv": [16, 23], "uv_size": [0.75, 0.5]}, + "up": {"uv": [29, 0], "uv_size": [0.25, 0.75]}, + "down": {"uv": [2, 29.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-1.15, 9.93125, -0.51875], + "size": [0.2875, 0.8625, 0.43125], + "pivot": [-0.8625, 9.93125, -0.51875], + "rotation": [0, 90, 25], + "uv": { + "north": {"uv": [29, 2], "uv_size": [0.25, 0.75]}, + "east": {"uv": [23, 16], "uv_size": [0.5, 0.75]}, + "south": {"uv": [29, 4], "uv_size": [0.25, 0.75]}, + "west": {"uv": [18, 23], "uv_size": [0.5, 0.75]}, + "up": {"uv": [29, 14], "uv_size": [0.25, 0.5]}, + "down": {"uv": [16, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-9.39461, 1.45, -5.73743], + "size": [0.8625, 0.2875, 0.21563], + "pivot": [0, 0.875, -1.09375], + "rotation": [-90, 0, 60], + "uv": { + "north": {"uv": [27, 12], "uv_size": [0.75, 0.25]}, + "east": {"uv": [34, 24], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 14], "uv_size": [0.75, 0.25]}, + "west": {"uv": [26, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [16, 27], "uv_size": [0.75, 0.25]}, + "down": {"uv": [27, 16.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [8.53211, 1.45, -5.73743], + "size": [0.8625, 0.2875, 0.21563], + "pivot": [0, 0.875, -1.09375], + "rotation": [-90, 0, -60], + "uv": { + "north": {"uv": [26, 28], "uv_size": [0.75, 0.25]}, + "east": {"uv": [34, 32], "uv_size": [0.25, 0.25]}, + "south": {"uv": [28, 26], "uv_size": [0.75, 0.25]}, + "west": {"uv": [34, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [28, 28], "uv_size": [0.75, 0.25]}, + "down": {"uv": [0, 29.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [8.53211, 1.45, 4.61257], + "size": [0.8625, 0.2875, 0.21563], + "pivot": [0, 0.875, -1.09375], + "rotation": [-90, 0, -120], + "uv": { + "north": {"uv": [28, 8], "uv_size": [0.75, 0.25]}, + "east": {"uv": [34, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [14, 28], "uv_size": [0.75, 0.25]}, + "west": {"uv": [32, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [28, 20], "uv_size": [0.75, 0.25]}, + "down": {"uv": [28, 24.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.43125, 1.45, 9.78757], + "size": [0.8625, 0.2875, 0.21563], + "pivot": [0, 0.875, -1.09375], + "rotation": [-90, 0, 180], + "uv": { + "north": {"uv": [27, 22], "uv_size": [0.75, 0.25]}, + "east": {"uv": [34, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [24, 27], "uv_size": [0.75, 0.25]}, + "west": {"uv": [30, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [4, 28], "uv_size": [0.75, 0.25]}, + "down": {"uv": [6, 28.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-9.39461, 1.45, 4.61257], + "size": [0.8625, 0.2875, 0.21563], + "pivot": [0, 0.875, -1.09375], + "rotation": [-90, 0, 120], + "uv": { + "north": {"uv": [18, 27], "uv_size": [0.75, 0.25]}, + "east": {"uv": [34, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 18], "uv_size": [0.75, 0.25]}, + "west": {"uv": [28, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [20, 27], "uv_size": [0.75, 0.25]}, + "down": {"uv": [22, 27.25], "uv_size": [0.75, -0.25]} + } + } + ] + }, + { + "name": "righthand", + "parent": "knife_and_right", + "pivot": [6, 19, 0] + }, + { + "name": "righthand_pos", + "parent": "righthand", + "pivot": [0, 8, 0] + }, + { + "name": "constraint", + "parent": "bone", + "pivot": [-0.01558, 8.125, 1.9375] + }, + { + "name": "lefthand", + "parent": "bone", + "pivot": [-6, 19, 0] + }, + { + "name": "lefthand_pos", + "parent": "lefthand", + "pivot": [0, 8, 0] + }, + { + "name": "camera", + "pivot": [3.0813, 14.0031, 11.5313] + }, + { + "name": "view", + "pivot": [0, 0, 0] + }, + { + "name": "refit_view", + "parent": "view", + "pivot": [22.475, 5.55, 0.2], + "rotation": [0, 90, 0] + }, + { + "name": "iron_view", + "parent": "view", + "pivot": [-0.15326, 9.42188, 6.93493], + "rotation": [0, -1, 0] + }, + { + "name": "idle_view", + "parent": "view", + "pivot": [3.4563, 2.36563, 0.53125] + }, + { + "name": "positioning", + "pivot": [-0.01558, 4.125, 4.9375] + }, + { + "name": "ground", + "parent": "positioning", + "pivot": [0, 0, 0] + }, + { + "name": "thirdperson_hand", + "parent": "positioning", + "pivot": [-0.01558, 6.125, -2.0625] + }, + { + "name": "fixed", + "parent": "positioning", + "pivot": [0.79692, 5.125, -1.0625], + "rotation": [0, 90, 0] + }, + { + "name": "bone38", + "pivot": [62, -11.35, -167.5] + }, + { + "name": "bone39", + "parent": "bone38", + "pivot": [-65, -11.35, -167.5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/mercy.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/mercy.anim.json new file mode 100644 index 0000000..1beceb2 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/mercy.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"draw":{"loop":true,"animation_length":1.1833,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[92.958,43.067,-59.941],"0.0417":[93.15,43.684,-59.858],"0.0833":[93.338,44.299,-59.781],"0.125":[94.656,45.272,-58.287],"0.1667":[95.721,45.823,-57.029],"0.2083":[97.282,46.395,-55.14],"0.25":[98.089,46.553,-54.124],"0.2917":[98.54,46.499,-53.513],"0.3333":[98.264,45.947,-53.7],"0.375":[97.267,45.21,-54.776],"0.4167":[94.412,43.369,-58.041],"0.4583":[87.01,35.149,-66.205],"0.5":[77.139,20.714,-74.523],"0.5417":[66.581,-1.776,-84.88],"0.5833":[63.066,-11.411,-84.012],"0.625":[58.619,-16.782,-73.533],"0.6667":[57.272,-17.676,-68.992],"0.7083":[57.297,-16.526,-65.374],"0.75":[57.453,-15.508,-61.491],"0.7917":[56.662,-16.829,-59.813],"0.8333":[54.928,-20.098,-58.407],"0.875":[53.987,-21.875,-57.915],"0.9167":[53.58,-22.581,-57.638],"0.9583":[53.365,-22.939,-57.519],"1.0":[53.361,-22.945,-57.594],"1.0417":[53.496,-22.735,-57.849],"1.0833":[53.624,-22.527,-58.06],"1.125":[53.747,-22.329,-58.267],"1.1667":[53.851,-22.165,-58.489]},"position":{"0.0":[17.941,-31.922,-6.72],"0.0417":[17.985,-32.007,-6.713],"0.0833":[18.03,-32.092,-6.705],"0.125":[18.134,-32.325,-6.664],"0.1667":[18.206,-32.487,-6.633],"0.2083":[18.297,-32.701,-6.589],"0.25":[18.336,-32.797,-6.566],"0.2917":[18.35,-32.837,-6.553],"0.3333":[18.308,-32.755,-6.559],"0.375":[18.227,-32.58,-6.586],"0.4167":[18.011,-32.1,-6.673],"0.4583":[17.857,-30.985,-7.34],"0.5":[17.43,-29.164,-8.756],"0.5417":[15.756,-25.13,-10.078],"0.5833":[15.161,-23.868,-10.611],"0.625":[15.259,-24.084,-11.583],"0.6667":[15.005,-24.071,-11.845],"0.7083":[14.656,-24.136,-11.821],"0.75":[14.261,-24.311,-11.742],"0.7917":[14.181,-24.494,-11.824],"0.8333":[14.211,-24.844,-11.999],"0.875":[14.256,-25.023,-12.085],"0.9167":[14.273,-25.096,-12.103],"0.9583":[14.29,-25.131,-12.08],"1.0":[14.304,-25.128,-12.046],"1.0417":[14.329,-25.098,-11.979],"1.0833":[14.344,-25.072,-11.928],"1.125":[14.359,-25.046,-11.879],"1.1667":[14.381,-25.024,-11.814]}},"righthand":{"rotation":{"0.0":[23.339,-47.448,78.73],"0.0417":[36.435,-45.497,58.4],"0.0833":[45.259,-39.905,43.084],"0.125":[55.995,-24.654,-17.859],"0.1667":[55.835,-21.849,-18.126],"0.2083":[56.588,-14.542,-1.51],"0.25":[55.911,-11.162,8.417],"0.2917":[53.737,-9.304,14.345],"0.3333":[50.157,-6.401,20.924],"0.375":[48.17,-3.851,22.333],"0.4167":[46.515,2.201,21.754],"0.4583":[49.417,9.597,26.97],"0.5":[56.432,16.585,32.466],"0.5417":[69.4,24.444,43.867],"0.5833":[72.574,29.471,48.861],"0.625":[61.287,38.181,45.672],"0.6667":[58.136,38.78,44.999],"0.7083":[59.885,33.103,46.445],"0.75":[65.797,34.751,50.828],"0.7917":[70.863,39.142,54.508],"0.8333":[74.653,43.434,56.494],"0.875":[73.625,43.921,55.321],"0.9167":[69.65,42.138,52.237],"0.9583":[65.546,40.817,49.176],"1.0":[63.473,40.495,47.675],"1.0417":[62.296,40.822,46.821],"1.0833":[62.795,41.591,47.175],"1.125":[63.81,42.585,47.915],"1.1667":[64.021,43.498,48]},"position":{"0.0":[-7.179,-24.091,-10.764],"0.0417":[-8.041,-22.76,-10.945],"0.0833":[-8.71,-21.153,-10.724],"0.125":[-9.611,-21.949,-11.883],"0.1667":[-9.14,-22.504,-12.119],"0.2083":[-9.827,-23.048,-12],"0.25":[-10.349,-23.152,-11.861],"0.2917":[-10.576,-23.168,-11.822],"0.3333":[-10.843,-23.186,-11.724],"0.375":[-10.98,-23.33,-11.437],"0.4167":[-11.377,-23.719,-10.72],"0.4583":[-12.048,-23.847,-10.501],"0.5":[-12.504,-24.056,-10.223],"0.5417":[-13.016,-24.455,-9.798],"0.5833":[-13.293,-24.763,-9.732],"0.625":[-13.591,-25.347,-10.1],"0.6667":[-13.796,-25.509,-10.122],"0.7083":[-13.981,-25.414,-9.905],"0.75":[-14.046,-25.241,-9.802],"0.7917":[-13.98,-25.142,-9.851],"0.8333":[-13.795,-25.097,-10.019],"0.875":[-13.719,-25.089,-10.118],"0.9167":[-13.708,-25.091,-10.191],"0.9583":[-13.665,-25.121,-10.256],"1.0":[-13.626,-25.151,-10.282],"1.0417":[-13.59,-25.199,-10.291],"1.0833":[-13.578,-25.234,-10.281],"1.125":[-13.572,-25.269,-10.262],"1.1667":[-13.578,-25.326,-10.224]}},"weapon":{"rotation":{"0.0":[19.505,-101.076,-33.318],"0.0417":[-79.603,-95.363,56.119],"0.0833":[-120.53,-103.428,87.425],"0.125":[-129.195,-123.786,35.076],"0.1667":[-127.961,-125.653,31.714],"0.2083":[-134.885,-124.572,52.542],"0.25":[-137.406,-123.06,63.636],"0.2917":[-135.311,-121.663,66.467],"0.3333":[-132.347,-119.17,69.126],"0.375":[-147.901,-110.858,87.219],"0.4167":[-247.399,-124.556,191.024],"0.4583":[-259.788,-141.873,209.338],"0.5":[-262.965,-157.581,217.579],"0.5417":[-262.902,-178.079,232.648],"0.5833":[-261.833,-188.859,240.058],"0.625":[-268.763,-199.797,241.374],"0.6667":[-271.929,-201.331,241.217],"0.7083":[-272.679,-195.908,241.09],"0.75":[-267.397,-196.416,243.589],"0.7917":[-262.312,-199.907,245.79],"0.8333":[-258.495,-203.638,246.67],"0.875":[-259.224,-204.274,245.914],"0.9167":[-262.718,-203.099,244.131],"0.9583":[-266.289,-202.474,242.409],"1.0":[-268.006,-202.518,241.608],"1.0417":[-268.807,-203.015,241.229],"1.0833":[-268.154,-203.636,241.531],"1.125":[-267.034,-204.367,242.068],"1.1667":[-266.514,-205.136,242.258]},"position":{"0.0":[1.222,-15.466,-11.072],"0.0417":[0.578,-13.694,-11.682],"0.0833":[-0.034,-11.697,-11.91],"0.125":[-2.003,-10.019,-14.094],"0.1667":[-1.603,-10.575,-14.457],"0.2083":[-1.944,-11.713,-14.629],"0.25":[-2.341,-12.153,-14.579],"0.2917":[-2.506,-12.303,-14.55],"0.3333":[-2.728,-12.413,-14.475],"0.375":[-2.863,-12.491,-14.091],"0.4167":[-3.272,-12.628,-12.988],"0.4583":[-4.094,-12.744,-12.953],"0.5":[-4.775,-12.988,-13.007],"0.5417":[-5.66,-13.491,-13.025],"0.5833":[-6.069,-13.731,-13.032],"0.625":[-6.247,-13.875,-13.053],"0.6667":[-6.319,-13.972,-12.963],"0.7083":[-6.341,-14.06,-12.797],"0.75":[-6.553,-13.991,-12.875],"0.7917":[-6.706,-13.863,-13.038],"0.8333":[-6.731,-13.725,-13.25],"0.875":[-6.653,-13.675,-13.322],"0.9167":[-6.513,-13.656,-13.319],"0.9583":[-6.35,-13.644,-13.288],"1.0":[-6.266,-13.638,-13.257],"1.0417":[-6.219,-13.653,-13.232],"1.0833":[-6.241,-13.678,-13.232],"1.125":[-6.281,-13.71,-13.235],"1.1667":[-6.325,-13.744,-13.197]}},"blade":{"rotation":{"0.0":[174.304,0.025,-0.001],"0.0417":[169.387,0.016,-0.001],"0.0833":[160.996,0.019,-0.003],"0.125":[57.91,0.013,-0.024],"0.1667":[0,0,0],"1.1667":[0,0,0]}},"lefthand":{"position":[-2.3135,2.1245,2.6711],"scale":[1,1.5,1]},"righthand_1":{"position":[2,2,0],"scale":[1,1.5,1]},"righthand_2":{"rotation":[0,180,0],"position":[-2,0,0]},"lefthand_1":{"rotation":[0,180,0],"position":[0,0,0]},"camera":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0.5,-0.37,-0.5],"lerp_mode":"catmullrom"},"0.1667":{"post":[1,-0.5,1],"lerp_mode":"catmullrom"},"0.25":{"post":[1.5,-0.75,-0.5],"lerp_mode":"catmullrom"},"0.2708":{"post":[1.75,-0.75,0.25],"lerp_mode":"catmullrom"},"0.2917":{"post":[1.5,-0.6,0.14],"lerp_mode":"catmullrom"},"0.4167":{"post":[0.5,-0.5,0.25],"lerp_mode":"catmullrom"},"0.5208":{"post":[-0.25,0.1,1],"lerp_mode":"catmullrom"},"0.625":{"post":[-0.5,0.19,0.58],"lerp_mode":"catmullrom"},"0.75":{"post":[-0.34,-0.1,0.33],"lerp_mode":"catmullrom"},"0.9375":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"righthand_pos":{"position":[-1,0,0]}},"sound_effects":{"0.0":{"effect":"melee.mercy.draw"}}},"draw_1":{"loop":true,"animation_length":1.0938,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[92.883,42.772,-59.954],"0.0417":[93.164,43.646,-59.826],"0.0833":[93.716,44.45,-59.313],"0.125":[95.319,45.471,-57.458],"0.1667":[96.506,46.003,-56.039],"0.2083":[97.991,46.43,-54.212],"0.25":[98.341,46.318,-53.716],"0.2917":[98.398,46.062,-53.558],"0.3333":[96.76,44.862,-55.342],"0.375":[87.061,32.271,-63.174],"0.4167":[74.12,11.493,-71.923],"0.4583":[66.717,-2.249,-75.562],"0.5":[60.382,-14.771,-77.583],"0.5417":[58.301,-17.076,-72.559],"0.5833":[57.079,-17.894,-68.526],"0.625":[57.416,-15.92,-63.715],"0.6667":[57.508,-15.45,-61.481],"0.7083":[56.66,-16.843,-59.816],"0.75":[54.928,-20.096,-58.401],"0.7917":[54.012,-21.824,-57.913],"0.8333":[53.475,-22.758,-57.563],"0.875":[53.362,-22.94,-57.519],"0.9167":[53.361,-22.945,-57.594],"0.9583":[53.494,-22.737,-57.848],"1.0":[53.621,-22.529,-58.06],"1.0417":[53.797,-22.249,-58.357],"1.0833":[53.847,-22.167,-58.486]},"position":{"0.0":[17.92,-31.882,-6.723],"0.0417":[17.984,-32.005,-6.712],"0.0833":[18.052,-32.145,-6.693],"0.125":[18.17,-32.411,-6.645],"0.1667":[18.245,-32.584,-6.61],"0.2083":[18.325,-32.775,-6.569],"0.25":[18.332,-32.799,-6.559],"0.2917":[18.32,-32.78,-6.556],"0.3333":[18.187,-32.493,-6.601],"0.375":[18.225,-31.506,-7.957],"0.4167":[17.523,-28.681,-9.983],"0.4583":[16.519,-26.306,-10.847],"0.5":[15.273,-24.039,-11.21],"0.5417":[15.181,-24.053,-11.645],"0.5833":[14.998,-24.069,-11.885],"0.625":[14.484,-24.184,-11.788],"0.6667":[14.259,-24.31,-11.736],"0.7083":[14.182,-24.493,-11.825],"0.75":[14.21,-24.844,-12],"0.7917":[14.254,-25.019,-12.082],"0.8333":[14.278,-25.114,-12.099],"0.875":[14.29,-25.131,-12.08],"0.9167":[14.304,-25.128,-12.046],"0.9583":[14.326,-25.1,-11.977],"1.0":[14.342,-25.074,-11.927],"1.0417":[14.367,-25.036,-11.855],"1.0833":[14.381,-25.023,-11.814]}},"righthand":{"rotation":{"0.0":[158.762,11.118,-14.081],"0.0417":[111.932,3.302,-28.52],"0.0833":[89.246,-5.613,-30.663],"0.125":[87.818,-7.809,-26.068],"0.1667":[89.134,-8.174,-23.027],"0.2083":[89.93,-8.363,-18.885],"0.25":[84.822,-10.029,-16.874],"0.2917":[76.459,-12.898,-16.321],"0.3333":[39.222,-13.359,-12.277],"0.375":[38.987,-2.535,-3.924],"0.4167":[41.926,14.256,12.045],"0.4583":[47.015,24.358,25.757],"0.5":[55.035,32.191,42.287],"0.5417":[56.925,37.251,43.512],"0.5833":[58.477,38.152,44.637],"0.625":[60.188,31.132,45.604],"0.6667":[63.054,33.171,48.438],"0.7083":[66.084,36.583,51.357],"0.75":[67.598,39.843,51.628],"0.7917":[67.687,40.928,51.102],"0.8333":[66.7,40.937,49.941],"0.875":[64.725,40.585,48.435],"0.9167":[62.409,40.07,46.796],"0.9583":[60.997,40.215,45.805],"1.0":[61.497,41.002,46.154],"1.0417":[63.039,42.531,47.274],"1.0833":[64.018,43.498,47.999]},"position":{"0.0":[-7.787,-27.454,-9.999],"0.0417":[-9.041,-24.959,-11.065],"0.0833":[-9.917,-23.344,-11.487],"0.125":[-10.686,-22.074,-11.703],"0.1667":[-11.161,-21.177,-11.825],"0.2083":[-11.666,-20.125,-11.647],"0.25":[-11.912,-19.949,-11.581],"0.2917":[-12.122,-20.11,-11.694],"0.3333":[-10.886,-22.494,-11.272],"0.375":[-11.294,-23.321,-11.286],"0.4167":[-12.123,-24.398,-11.036],"0.4583":[-12.787,-24.938,-10.701],"0.5":[-13.497,-25.294,-10.255],"0.5417":[-13.651,-25.423,-10.18],"0.5833":[-13.81,-25.48,-10.07],"0.625":[-14.043,-25.358,-9.829],"0.6667":[-14.062,-25.245,-9.801],"0.7083":[-14.01,-25.14,-9.843],"0.75":[-13.836,-25.098,-10.005],"0.7917":[-13.751,-25.092,-10.111],"0.8333":[-13.704,-25.1,-10.215],"0.875":[-13.666,-25.124,-10.256],"0.9167":[-13.629,-25.152,-10.282],"0.9583":[-13.594,-25.201,-10.291],"1.0":[-13.584,-25.235,-10.279],"1.0417":[-13.577,-25.289,-10.249],"1.0833":[-13.578,-25.326,-10.224]}},"weapon":{"rotation":{"0.0":[17.992,3.363,-30.807],"0.0417":[-27.365,-4.986,-35.058],"0.0833":[-88.852,-10.2,-36.093],"0.125":[-222.474,-11.417,-25.784],"0.1667":[-284.167,-11.062,-19.918],"0.2083":[-341.709,-8.271,-20.702],"0.25":[-378.292,-9.591,-19.993],"0.2917":[-415.694,-13.054,-17.984],"0.3333":[-464.094,-12.959,0.464],"0.375":[-466.209,-4.923,9.523],"0.4167":[-465.567,6.807,26.982],"0.4583":[-462.218,12.692,41.302],"0.5":[-457.062,15.743,57.116],"0.5417":[-454.066,20.367,58.873],"0.5833":[-452.466,21.012,60.068],"0.625":[-452.894,13.902,60.054],"0.6667":[-449.956,15.292,62.104],"0.7083":[-446.613,18.039,64.248],"0.75":[-444.616,20.957,64.254],"0.7917":[-444.29,22.007,63.785],"0.8333":[-445.069,22.176,62.978],"0.875":[-446.732,22.184,62.14],"0.9167":[-448.71,22.112,61.245],"0.9583":[-449.798,22.528,60.756],"1.0":[-449.179,23.192,61.02],"1.0417":[-447.542,24.377,61.773],"1.0833":[-446.513,25.137,62.263]},"position":{"0.0":[-0.369,-19.425,-12.844],"0.0417":[-1.272,-15.038,-14.938],"0.0833":[-1.828,-12.219,-15.894],"0.125":[-3.481,-8.772,-16.95],"0.1667":[-4.175,-7.528,-15.391],"0.2083":[-4.147,-7.344,-14.591],"0.25":[-4.391,-7.7,-14.66],"0.2917":[-4.55,-8.422,-14.65],"0.3333":[-3.794,-11.116,-13.46],"0.375":[-4.269,-11.819,-13.516],"0.4167":[-4.95,-12.772,-13.375],"0.4583":[-5.363,-13.335,-13.191],"0.5":[-5.76,-13.85,-12.988],"0.5417":[-6.085,-13.885,-12.978],"0.5833":[-6.297,-13.941,-12.913],"0.625":[-6.391,-14.035,-12.732],"0.6667":[-6.494,-13.963,-12.797],"0.7083":[-6.572,-13.85,-12.919],"0.75":[-6.531,-13.719,-13.104],"0.7917":[-6.494,-13.669,-13.204],"0.8333":[-6.441,-13.647,-13.282],"0.875":[-6.356,-13.635,-13.269],"0.9167":[-6.26,-13.631,-13.232],"0.9583":[-6.203,-13.647,-13.2],"1.0":[-6.222,-13.669,-13.2],"1.0417":[-6.281,-13.713,-13.204],"1.0833":[-6.325,-13.744,-13.197]}},"lefthand":{"position":[-2.3135,2.1245,2.6711],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":{"post":[-57.5,0,0],"lerp_mode":"catmullrom"},"0.4167":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":[2,2,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0.75,-0.4,-0.5],"lerp_mode":"catmullrom"},"0.2083":{"post":[1,-0.65,1],"lerp_mode":"catmullrom"},"0.2917":{"post":[1.5,-0.75,-0.5],"lerp_mode":"catmullrom"},"0.3125":{"post":[1.75,-0.75,0.25],"lerp_mode":"catmullrom"},"0.3333":{"post":[1.5,-0.6,0.14],"lerp_mode":"catmullrom"},"0.4167":{"post":[0.5,-0.5,0.25],"lerp_mode":"catmullrom"},"0.5":{"post":[-0.25,0.1,1],"lerp_mode":"catmullrom"},"0.6042":{"post":[-0.5,0.19,0.58],"lerp_mode":"catmullrom"},"0.7292":{"post":[-0.34,-0.1,0.33],"lerp_mode":"catmullrom"},"0.9167":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"righthand_2":{"rotation":[0,180,0],"position":[-2,0,0]},"lefthand_1":{"rotation":[0,180,0],"position":[0,0,0]},"righthand_pos":{"position":[-1,0,0]}},"sound_effects":{"0.0":{"effect":"melee.mercy.draw_1"}}},"static_idle":{"loop":true,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":[53.834,-22.127,-58.487],"position":[14.379,-25.017,-11.813]},"righthand":{"rotation":[63.974,43.383,47.963],"position":[-13.582,-25.322,-10.222]},"weapon":{"rotation":[-86.583,25.034,62.225],"position":[-6.325,-13.744,-13.194]},"lefthand":{"position":[-2.3135,2.1245,2.6711],"scale":[1,1.5,1]},"righthand_1":{"position":[2,2,0],"scale":[1,1.5,1]},"lefthand_1":{"rotation":[0,180,0],"position":[0,0,0]},"righthand_2":{"rotation":[0,180,0],"position":[-2,0,0]},"righthand_pos":{"position":[-1,0,0]}}},"inspect":{"loop":true,"animation_length":8.6833,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[53.834,-22.127,-58.487],"0.0417":[85.39,0.789,-40.647],"0.0833":[122.429,6.095,-15.076],"0.125":[139.024,2.001,-5.171],"0.1667":[140.482,2.581,-11.029],"0.2083":[140.491,2.594,-11.086],"0.25":[140.508,2.605,-11.143],"0.2917":[140.518,2.619,-11.195],"0.3333":[140.54,2.645,-11.296],"0.375":[140.552,2.657,-11.346],"0.4167":[140.562,2.669,-11.388],"0.4583":[140.568,2.682,-11.433],"0.5":[140.589,2.709,-11.519],"0.5417":[140.597,2.724,-11.557],"0.5833":[140.605,2.736,-11.596],"0.625":[140.61,2.748,-11.633],"0.6667":[140.616,2.76,-11.671],"0.7083":[140.622,2.773,-11.701],"0.75":[140.629,2.799,-11.764],"0.7917":[140.631,2.809,-11.792],"0.8333":[140.634,2.821,-11.818],"0.875":[140.639,2.833,-11.845],"0.9167":[140.641,2.855,-11.891],"0.9583":[140.645,2.867,-11.912],"1.0":[140.644,2.878,-11.932],"1.0417":[140.642,2.89,-11.952],"1.0833":[140.642,2.898,-11.966],"1.125":[140.644,2.908,-11.984],"1.1667":[140.641,2.932,-12.014],"1.2083":[140.64,2.94,-12.024],"1.25":[140.637,2.95,-12.035],"1.2917":[140.636,2.958,-12.046],"1.3333":[140.629,2.977,-12.06],"1.375":[140.624,2.985,-12.065],"1.4167":[140.623,2.992,-12.073],"1.4583":[140.619,3.001,-12.077],"1.5":[140.617,3.004,-12.079],"1.5417":[140.617,3.012,-12.08],"1.5833":[140.604,3.026,-12.08],"1.625":[140.601,3.029,-12.081],"1.6667":[140.594,3.037,-12.078],"1.7083":[140.591,3.042,-12.075],"1.75":[140.587,3.047,-12.066],"1.7917":[140.579,3.051,-12.06],"1.8333":[140.571,3.057,-12.053],"1.875":[140.566,3.062,-12.046],"1.9167":[140.561,3.061,-12.039],"1.9583":[140.556,3.064,-12.027],"2.0":[140.543,3.066,-12.01],"2.0417":[140.538,3.07,-11.999],"2.0833":[140.534,3.071,-11.985],"2.125":[140.53,3.072,-11.975],"2.1667":[140.514,3.074,-11.946],"2.2083":[140.511,3.069,-11.929],"2.25":[140.505,3.071,-11.917],"2.2917":[140.497,3.067,-11.903],"2.3333":[140.491,3.063,-11.885],"2.375":[140.49,3.064,-11.865],"2.4167":[140.473,3.055,-11.83],"2.4583":[140.474,3.052,-11.812],"2.5":[140.468,3.047,-11.793],"2.5417":[140.466,3.042,-11.773],"2.5833":[140.451,3.031,-11.732],"2.625":[140.448,3.024,-11.712],"2.6667":[140.446,3.016,-11.69],"2.7083":[140.439,3.012,-11.668],"2.75":[140.439,3.003,-11.648],"2.7917":[140.433,2.996,-11.628],"2.8333":[140.428,2.979,-11.583],"2.875":[140.424,2.969,-11.561],"2.9167":[140.426,2.959,-11.535],"2.9583":[140.424,2.949,-11.511],"3.0":[140.414,2.924,-11.465],"3.0417":[140.417,2.911,-11.443],"3.0833":[140.417,2.899,-11.42],"3.125":[140.418,2.881,-11.397],"3.1667":[140.415,2.867,-11.37],"3.2083":[140.419,2.855,-11.348],"3.25":[140.421,2.822,-11.3],"3.2917":[140.425,2.805,-11.277],"3.3333":[140.426,2.79,-11.253],"3.375":[140.425,2.773,-11.231],"3.4167":[140.44,2.733,-11.185],"3.4583":[140.438,2.713,-11.163],"3.5":[140.444,2.693,-11.138],"3.5417":[140.451,2.672,-11.118],"3.5833":[140.456,2.65,-11.094],"3.625":[140.464,2.627,-11.071],"3.6667":[140.48,2.58,-11.03],"3.7083":[141.398,0.121,-8.955],"3.75":[65.708,21.931,12.026],"3.7917":[44.477,28.473,5.525],"3.8333":[25.238,28.488,-8.059],"3.875":[16.403,28.092,-14.311],"3.9167":[12.182,26.492,-19.079],"3.9583":[13.56,24.186,-21.027],"4.0":[17.343,21.35,-21.449],"4.0417":[17.472,21.602,-6.581],"4.0833":[23.483,18.378,4.275],"4.125":[25.533,18.662,-1.097],"4.1667":[26.96,19.401,-3.365],"4.2083":[26.628,20.298,0.902],"4.25":[28.785,20.301,-5.671],"4.2917":[29.291,20.457,-7.362],"4.3333":[29.625,20.552,-8.443],"4.375":[29.952,20.495,-9.254],"4.4167":[30.44,20.212,-10.137],"4.4583":[27.042,15.635,-12.408],"4.5":[20.72,5.782,-17.077],"4.5417":[18.502,1.521,-18.734],"4.5833":[17.183,-1.555,-19.578],"4.625":[15.781,-3.037,-18.882],"4.6667":[15.464,-2.51,-14.487],"4.7083":[20.546,-1.67,-12.941],"4.75":[30.261,-0.762,-11.962],"4.7917":[42.983,0.027,-10.43],"4.8333":[57.411,0.177,-8.276],"4.875":[72.21,-0.672,-5.824],"4.9167":[97.682,-4.782,-2.059],"4.9583":[105.939,-6.805,-1.238],"5.0":[109.648,-7.827,-0.969],"5.0417":[110.666,-8.148,-0.904],"5.0833":[112.594,-8.778,-0.738],"5.125":[113.504,-9.085,-0.639],"5.1667":[114.383,-9.39,-0.53],"5.2083":[115.225,-9.689,-0.41],"5.25":[116.034,-9.985,-0.28],"5.2917":[116.807,-10.278,-0.141],"5.3333":[118.261,-10.852,0.16],"5.375":[118.941,-11.131,0.323],"5.4167":[119.583,-11.406,0.499],"5.4583":[120.196,-11.678,0.679],"5.5":[121.332,-12.204,1.062],"5.5417":[121.852,-12.46,1.264],"5.5833":[122.34,-12.708,1.474],"5.625":[122.807,-12.952,1.681],"5.6667":[123.235,-13.191,1.904],"5.7083":[123.642,-13.422,2.126],"5.75":[124.366,-13.865,2.584],"5.7917":[124.688,-14.077,2.82],"5.8333":[124.982,-14.279,3.056],"5.875":[125.25,-14.475,3.3],"5.9167":[125.712,-14.843,3.784],"5.9583":[125.904,-15.014,4.026],"6.0":[126.073,-15.175,4.272],"6.0417":[126.215,-15.326,4.517],"6.0833":[126.339,-15.469,4.758],"6.125":[126.441,-15.602,4.999],"6.1667":[126.57,-15.837,5.477],"6.2083":[126.606,-15.94,5.707],"6.25":[126.621,-16.03,5.937],"6.2917":[126.613,-16.112,6.16],"6.3333":[126.543,-16.24,6.592],"6.375":[126.48,-16.286,6.795],"6.4167":[126.404,-16.319,6.991],"6.4583":[126.302,-16.344,7.18],"6.5":[126.185,-16.353,7.362],"6.5417":[126.059,-16.352,7.529],"6.5833":[125.753,-16.312,7.83],"6.625":[125.575,-16.275,7.961],"6.6667":[125.386,-16.224,8.079],"6.7083":[125.185,-16.165,8.184],"6.75":[124.742,-16,8.345],"6.7917":[124.501,-15.902,8.401],"6.8333":[124.25,-15.793,8.436],"6.875":[123.987,-15.669,8.454],"6.9167":[123.717,-15.536,8.451],"6.9583":[123.43,-15.386,8.429],"7.0":[122.837,-15.06,8.317],"7.0417":[122.529,-14.882,8.225],"7.0833":[122.209,-14.691,8.109],"7.125":[121.879,-14.49,7.967],"7.1667":[121.201,-14.061,7.602],"7.2083":[120.85,-13.83,7.382],"7.25":[120.494,-13.593,7.129],"7.2917":[120.128,-13.347,6.845],"7.3333":[119.756,-13.092,6.534],"7.375":[119.38,-12.831,6.187],"7.4167":[118.601,-12.288,5.398],"7.4583":[118.207,-12.006,4.948],"7.5":[117.804,-11.722,4.469],"7.5417":[117.396,-11.431,3.949],"7.5833":[116.561,-10.841,2.799],"7.625":[116.136,-10.543,2.17],"7.6667":[115.709,-10.243,1.499],"7.7083":[115.271,-9.945,0.781],"7.75":[114.83,-9.643,0.031],"7.7917":[114.383,-9.344,-0.766],"7.8333":[109.055,-7.092,-8.587],"7.875":[103.647,-5.885,-16.438],"7.9167":[97.062,-5.78,-26.118],"7.9583":[90,-7.398,-36.762],"8.0":[77.455,-15.888,-57.183],"8.0417":[72.986,-21.625,-65.495],"8.0833":[69.98,-27.161,-71.98],"8.125":[71.769,-30.18,-73.643],"8.1667":[74.676,-30.931,-73.509],"8.2083":[74.063,-26.191,-77.173],"8.25":[67.779,-13.114,-82.947],"8.2917":[65.09,-11.865,-80.341],"8.3333":[62.705,-12.715,-75.35],"8.375":[60.385,-14.032,-70.26],"8.4167":[55.699,-17.343,-59.611],"8.4583":[54.025,-18.806,-55.981],"8.5":[53.589,-20.08,-55.823],"8.5417":[54.011,-21.427,-57.644],"8.5833":[54.401,-22.411,-59.056],"8.625":[54.311,-22.646,-59.127],"8.6667":[53.848,-22.169,-58.484]},"position":{"0.0":[14.379,-25.017,-11.813],"0.0417":[15.968,-32.417,-9.253],"0.0833":[14.737,-36.417,-3.01],"0.125":[13.659,-36.42,0.187],"0.1667":[15.127,-34.55,0.469],"0.2083":[15.14,-34.532,0.469],"0.25":[15.153,-34.514,0.469],"0.2917":[15.165,-34.498,0.469],"0.3333":[15.19,-34.467,0.466],"0.375":[15.202,-34.453,0.464],"0.4167":[15.214,-34.44,0.462],"0.4583":[15.226,-34.428,0.459],"0.5":[15.249,-34.406,0.453],"0.5417":[15.26,-34.396,0.449],"0.5833":[15.272,-34.386,0.445],"0.625":[15.283,-34.378,0.441],"0.6667":[15.295,-34.37,0.436],"0.7083":[15.306,-34.363,0.431],"0.75":[15.327,-34.351,0.419],"0.7917":[15.338,-34.345,0.413],"0.8333":[15.348,-34.341,0.406],"0.875":[15.359,-34.338,0.4],"0.9167":[15.379,-34.332,0.385],"0.9583":[15.389,-34.331,0.378],"1.0":[15.399,-34.329,0.37],"1.0417":[15.408,-34.329,0.362],"1.0833":[15.417,-34.329,0.354],"1.125":[15.427,-34.329,0.345],"1.1667":[15.446,-34.332,0.327],"1.2083":[15.455,-34.334,0.318],"1.25":[15.463,-34.337,0.309],"1.2917":[15.472,-34.34,0.3],"1.3333":[15.489,-34.349,0.28],"1.375":[15.497,-34.353,0.27],"1.4167":[15.505,-34.358,0.261],"1.4583":[15.513,-34.364,0.25],"1.5":[15.52,-34.37,0.24],"1.5417":[15.528,-34.377,0.23],"1.5833":[15.542,-34.39,0.209],"1.625":[15.549,-34.398,0.199],"1.6667":[15.556,-34.406,0.188],"1.7083":[15.563,-34.415,0.178],"1.75":[15.575,-34.432,0.157],"1.7917":[15.581,-34.441,0.146],"1.8333":[15.587,-34.451,0.135],"1.875":[15.592,-34.46,0.124],"1.9167":[15.598,-34.471,0.114],"1.9583":[15.603,-34.481,0.103],"2.0":[15.613,-34.502,0.082],"2.0417":[15.619,-34.511,0.069],"2.0833":[15.624,-34.522,0.059],"2.125":[15.628,-34.533,0.049],"2.1667":[15.636,-34.557,0.027],"2.2083":[15.639,-34.569,0.018],"2.25":[15.642,-34.58,0.008],"2.2917":[15.645,-34.593,-0.002],"2.3333":[15.648,-34.605,-0.012],"2.375":[15.65,-34.618,-0.022],"2.4167":[15.654,-34.642,-0.041],"2.4583":[15.656,-34.655,-0.049],"2.5":[15.657,-34.667,-0.059],"2.5417":[15.659,-34.68,-0.067],"2.5833":[15.66,-34.705,-0.084],"2.625":[15.66,-34.717,-0.092],"2.6667":[15.66,-34.73,-0.1],"2.7083":[15.66,-34.742,-0.108],"2.75":[15.66,-34.755,-0.115],"2.7917":[15.659,-34.767,-0.122],"2.8333":[15.656,-34.792,-0.136],"2.875":[15.655,-34.804,-0.142],"2.9167":[15.653,-34.816,-0.148],"2.9583":[15.65,-34.828,-0.153],"3.0":[15.645,-34.851,-0.164],"3.0417":[15.642,-34.862,-0.168],"3.0833":[15.637,-34.876,-0.17],"3.125":[15.633,-34.886,-0.174],"3.1667":[15.629,-34.897,-0.177],"3.2083":[15.624,-34.908,-0.18],"3.25":[15.615,-34.928,-0.185],"3.2917":[15.61,-34.938,-0.186],"3.3333":[15.604,-34.947,-0.188],"3.375":[15.598,-34.956,-0.189],"3.4167":[15.585,-34.973,-0.189],"3.4583":[15.578,-34.981,-0.188],"3.5":[15.571,-34.989,-0.188],"3.5417":[15.564,-34.996,-0.186],"3.5833":[15.555,-35.003,-0.184],"3.625":[15.547,-35.009,-0.181],"3.6667":[15.53,-35.021,-0.174],"3.7083":[14.428,-35.295,0.484],"3.75":[9.056,-27.981,-7.842],"3.7917":[9.253,-27.791,-9.321],"3.8333":[9.5,-26.125,-11.123],"3.875":[9.631,-25.581,-11.603],"3.9167":[9.885,-25.175,-11.722],"3.9583":[10.181,-25.024,-11.59],"4.0":[10.479,-25.093,-11.337],"4.0417":[9.962,-25.137,-11.24],"4.0833":[9.84,-23.542,-10.628],"4.125":[9.719,-22.694,-10.59],"4.1667":[9.233,-22.362,-10.69],"4.2083":[8.561,-22.689,-10.856],"4.25":[8.672,-22.413,-10.835],"4.2917":[8.699,-22.343,-10.847],"4.3333":[8.708,-22.299,-10.851],"4.375":[8.693,-22.266,-10.835],"4.4167":[8.646,-22.227,-10.785],"4.4583":[9.1,-22.266,-11.04],"4.5":[10.064,-22.238,-11.474],"4.5417":[10.538,-22.356,-11.654],"4.5833":[10.982,-22.69,-11.809],"4.625":[11.358,-23.32,-11.868],"4.6667":[11.966,-25.243,-11.681],"4.7083":[12.333,-26.466,-11.552],"4.75":[12.823,-28.025,-11.313],"4.7917":[13.394,-29.942,-10.706],"4.8333":[13.971,-32.009,-9.606],"4.875":[14.475,-33.97,-8.03],"4.9167":[15.077,-36.751,-4.324],"4.9583":[15.184,-37.43,-2.884],"5.0":[15.215,-37.692,-2.195],"5.0417":[15.219,-37.76,-1.987],"5.0833":[15.217,-37.883,-1.585],"5.125":[15.212,-37.939,-1.393],"5.1667":[15.203,-37.992,-1.205],"5.2083":[15.191,-38.042,-1.024],"5.25":[15.177,-38.088,-0.848],"5.2917":[15.16,-38.131,-0.678],"5.3333":[15.12,-38.21,-0.354],"5.375":[15.096,-38.246,-0.2],"5.4167":[15.069,-38.28,-0.053],"5.4583":[15.042,-38.311,0.089],"5.5":[14.981,-38.368,0.356],"5.5417":[14.948,-38.393,0.48],"5.5833":[14.914,-38.417,0.599],"5.625":[14.88,-38.44,0.713],"5.6667":[14.843,-38.46,0.82],"5.7083":[14.806,-38.48,0.923],"5.75":[14.729,-38.515,1.11],"5.7917":[14.69,-38.53,1.196],"5.8333":[14.651,-38.545,1.276],"5.875":[14.61,-38.558,1.351],"5.9167":[14.53,-38.582,1.485],"5.9583":[14.49,-38.593,1.544],"6.0":[14.45,-38.603,1.598],"6.0417":[14.41,-38.612,1.647],"6.0833":[14.371,-38.62,1.691],"6.125":[14.332,-38.627,1.73],"6.1667":[14.256,-38.64,1.793],"6.2083":[14.22,-38.645,1.818],"6.25":[14.184,-38.65,1.838],"6.2917":[14.15,-38.653,1.853],"6.3333":[14.084,-38.659,1.87],"6.375":[14.054,-38.661,1.872],"6.4167":[14.024,-38.663,1.87],"6.4583":[13.997,-38.663,1.863],"6.5":[13.97,-38.663,1.852],"6.5417":[13.946,-38.663,1.838],"6.5833":[13.903,-38.659,1.797],"6.625":[13.885,-38.656,1.77],"6.6667":[13.869,-38.652,1.74],"6.7083":[13.854,-38.648,1.707],"6.75":[13.833,-38.637,1.629],"6.7917":[13.825,-38.63,1.584],"6.8333":[13.821,-38.623,1.537],"6.875":[13.819,-38.614,1.486],"6.9167":[13.82,-38.604,1.433],"6.9583":[13.824,-38.594,1.375],"7.0":[13.839,-38.569,1.253],"7.0417":[13.851,-38.555,1.189],"7.0833":[13.866,-38.54,1.12],"7.125":[13.885,-38.523,1.049],"7.1667":[13.931,-38.486,0.901],"7.2083":[13.958,-38.465,0.823],"7.25":[13.99,-38.443,0.743],"7.2917":[14.025,-38.419,0.66],"7.3333":[14.062,-38.393,0.576],"7.375":[14.104,-38.366,0.49],"7.4167":[14.197,-38.305,0.311],"7.4583":[14.249,-38.272,0.22],"7.5":[14.304,-38.236,0.126],"7.5417":[14.363,-38.198,0.032],"7.5833":[14.491,-38.115,-0.162],"7.625":[14.561,-38.07,-0.261],"7.6667":[14.634,-38.022,-0.361],"7.7083":[14.711,-37.971,-0.462],"7.75":[14.791,-37.917,-0.563],"7.7917":[14.874,-37.86,-0.666],"7.8333":[15.604,-37.171,-1.63],"7.875":[16.216,-36.395,-2.517],"7.9167":[16.823,-35.344,-3.512],"7.9583":[17.311,-34.073,-4.508],"8.0":[17.699,-31.282,-6.212],"8.0417":[17.613,-29.985,-6.892],"8.0833":[17.412,-28.864,-7.506],"8.125":[17.025,-27.684,-9.594],"8.1667":[16.037,-26.302,-11.59],"8.2083":[15.352,-25.648,-11.64],"8.25":[14.177,-25.144,-11.042],"8.2917":[14.329,-24.931,-11.015],"8.3333":[14.911,-24.823,-11.011],"8.375":[15.296,-24.77,-11.073],"8.4167":[14.993,-24.811,-11.468],"8.4583":[14.764,-24.848,-11.651],"8.5":[14.63,-24.866,-11.757],"8.5417":[14.524,-24.871,-11.819],"8.5833":[14.444,-24.879,-11.852],"8.625":[14.403,-24.914,-11.855],"8.6667":[14.38,-25.026,-11.812]}},"righthand":{"rotation":{"0.0":[63.974,43.383,47.963],"0.0417":[52.932,11.618,3.768],"0.0833":[65.629,-17.56,-34.542],"0.125":[73.936,-23.24,-50.674],"0.1667":[74.585,-21.795,-56.84],"0.2083":[69.954,-16.87,-56.202],"0.25":[66.027,-11.549,-53.948],"0.2917":[65.288,-6.768,-51.033],"0.3333":[64.665,3.32,-40.127],"0.375":[60.916,7.862,-33.481],"0.4167":[56.199,12.909,-26.074],"0.4583":[54.118,19.361,-17.792],"0.5":[65.579,34.532,4.074],"0.5417":[74.746,39.803,21.678],"0.5833":[82.436,42.695,48.111],"0.625":[87.991,41.433,77.09],"0.6667":[89.248,34.807,100.929],"0.7083":[83.397,30.155,118.67],"0.75":[55.61,42.297,130.786],"0.7917":[31.394,31.79,107.322],"0.8333":[24.088,-7.416,74.906],"0.875":[39.407,-38.149,40.876],"0.9167":[54.743,-44.74,7.831],"0.9583":[60.411,-43.764,-4.946],"1.0":[73.919,-40.37,-23.895],"1.0417":[84.742,-33.131,-41.163],"1.0833":[84.821,-25.916,-57.065],"1.125":[78.691,-21.506,-61.812],"1.1667":[60.271,-12.768,-46.155],"1.2083":[51.408,-4.712,-29.982],"1.25":[46.619,4.212,-16.153],"1.2917":[47.022,10.303,-6.481],"1.3333":[54.245,20.01,11.713],"1.375":[58.754,24.576,21.92],"1.4167":[62.139,28.508,34.03],"1.4583":[64.139,32.206,45.722],"1.5":[66.033,36.475,57.583],"1.5417":[60.74,41.502,61.193],"1.5833":[4.164,34.949,15.504],"1.625":[-1.004,4.176,7.546],"1.6667":[7.159,-25.699,-2.602],"1.7083":[31.607,-31.895,-29.649],"1.75":[71.992,-19.403,-58.082],"1.7917":[85.432,-18.034,-58.07],"1.8333":[93.529,-16.806,-55.708],"1.875":[96.132,-17.369,-48.444],"1.9167":[88.627,-19.058,-29.172],"1.9583":[80.828,-18.287,-13.467],"2.0":[90.569,-18.802,-33.152],"2.0417":[98.175,-18.375,-39.711],"2.0833":[103.915,-19.3,-43.959],"2.125":[96.518,-29.128,-41.764],"2.1667":[53.083,-51.454,-5.964],"2.2083":[41.951,-41.425,1.823],"2.25":[38.514,-27.695,1.763],"2.2917":[36.846,-21.448,0.698],"2.3333":[35.97,-29.416,0.302],"2.375":[36.913,-44.83,-0.58],"2.4167":[42.944,-65.423,-1.316],"2.4583":[47.922,-70.639,-1.169],"2.5":[55.505,-74.772,-5.304],"2.5417":[77.503,-78.036,-27.444],"2.5833":[101.961,-77.498,-54.134],"2.625":[35.712,-69.508,16.223],"2.6667":[21.179,-52.438,34.771],"2.7083":[25.375,-53.426,30.746],"2.75":[35.759,-59.968,18.814],"2.7917":[50.46,-65.307,0.651],"2.8333":[82.201,-67.609,-47.347],"2.875":[87.01,-68.319,-55.66],"2.9167":[87.405,-69.711,-57.426],"2.9583":[85.133,-70.797,-55.176],"3.0":[82.187,-71.285,-50.309],"3.0417":[83.51,-70.769,-50.69],"3.0833":[85.319,-70.285,-52.458],"3.125":[86.684,-69.846,-54.173],"3.1667":[86.307,-69.616,-54.348],"3.2083":[85.387,-69.557,-53.951],"3.25":[84.045,-69.906,-52.67],"3.2917":[83.765,-70.058,-52.297],"3.3333":[83.722,-70.182,-52.124],"3.375":[83.803,-70.294,-52.065],"3.4167":[84.136,-70.475,-52.099],"3.4583":[84.343,-70.549,-52.218],"3.5":[84.587,-70.595,-52.48],"3.5417":[84.882,-70.614,-52.862],"3.5833":[85.117,-70.619,-53.198],"3.625":[85.105,-70.585,-53.281],"3.6667":[85.707,-70.483,-54.344],"3.7083":[92.328,-71.098,-60.619],"3.75":[83.691,-68.929,-53.92],"3.7917":[74.911,-65.952,-47.761],"3.8333":[63.168,-60.922,-43.029],"3.875":[57.433,-59.105,-41.603],"3.9167":[50.854,-57.237,-40.47],"3.9583":[45.066,-55.658,-39.077],"4.0":[41.678,-54.652,-36.82],"4.0417":[41.497,-53.925,-33.292],"4.0833":[43.861,-52.78,-23.581],"4.125":[43.262,-52.595,-18.392],"4.1667":[41.919,-52.397,-13.829],"4.2083":[40.767,-52.348,-10.448],"4.25":[39.745,-52.637,-7.194],"4.2917":[39.551,-52.905,-6.721],"4.3333":[39.529,-53.252,-6.752],"4.375":[39.632,-53.666,-7.063],"4.4167":[40,-53.979,-7.424],"4.4583":[40.141,-53.719,-9.755],"4.5":[43.037,-54.499,-17.844],"4.5417":[50.579,-57.39,-25.322],"4.5833":[56.193,-58.505,-30.863],"4.625":[47.437,-54.011,-24.721],"4.6667":[33.789,-34.941,-16.189],"4.7083":[31.705,-26.302,-15.648],"4.75":[30.5,-24.979,-15.223],"4.7917":[29.823,-26.569,-15.037],"4.8333":[30.152,-29.309,-16.82],"4.875":[34.1,-33.606,-25.331],"4.9167":[41.99,-46.115,-36.942],"4.9583":[43.593,-53.929,-37.124],"5.0":[41.39,-56.518,-35.246],"5.0417":[30.712,-43.813,-30.702],"5.0833":[26.095,-24.679,-32.565],"5.125":[30.432,-25.193,-35.134],"5.1667":[31.709,-25.664,-38.278],"5.2083":[32.415,-26.771,-41.712],"5.25":[33.393,-27.941,-44.544],"5.2917":[34.795,-28.828,-46.627],"5.3333":[38.029,-30.679,-49.802],"5.375":[40.022,-32.144,-50.753],"5.4167":[42.655,-34.497,-51.111],"5.4583":[45.802,-37.516,-51.062],"5.5":[51.002,-42.43,-51.067],"5.5417":[51.903,-43.117,-51.311],"5.5833":[51.92,-42.983,-51.503],"5.625":[51.473,-42.574,-51.473],"5.6667":[51.002,-42.426,-51.07],"5.7083":[50.504,-42.662,-50.147],"5.75":[49.001,-43.32,-47.401],"5.7917":[48.269,-43.608,-46.061],"5.8333":[47.754,-43.801,-45.089],"5.875":[47.492,-43.889,-44.541],"5.9167":[47.404,-43.897,-44.164],"5.9583":[47.477,-43.856,-44.127],"6.0":[47.557,-43.808,-44.054],"6.0417":[47.665,-43.741,-43.966],"6.0833":[47.845,-43.643,-43.945],"6.125":[48.05,-43.533,-43.936],"6.1667":[48.414,-43.331,-43.849],"6.2083":[48.42,-43.095,-43.643],"6.25":[48.28,-42.716,-43.326],"6.2917":[48.189,-42.414,-43.024],"6.3333":[48.865,-43.021,-43.025],"6.375":[50.08,-44.465,-43.643],"6.4167":[51.936,-46.594,-44.735],"6.4583":[54.138,-48.934,-46.146],"6.5":[56.325,-51.034,-47.634],"6.5417":[57.956,-52.453,-48.786],"6.5833":[59.395,-53.585,-49.818],"6.625":[59.627,-53.739,-49.995],"6.6667":[59.687,-53.755,-50.045],"6.7083":[59.71,-53.738,-50.07],"6.75":[59.969,-53.887,-50.291],"6.7917":[60.089,-53.947,-50.408],"6.8333":[60.168,-53.982,-50.506],"6.875":[60.227,-53.986,-50.579],"6.9167":[60.248,-53.994,-50.605],"6.9583":[60.265,-53.987,-50.594],"7.0":[60.045,-53.933,-50.029],"7.0417":[59.825,-53.862,-49.314],"7.0833":[59.7,-53.819,-48.809],"7.125":[60.272,-53.992,-48.421],"7.1667":[64.738,-55.478,-50.806],"7.2083":[66.907,-55.99,-47.973],"7.25":[68.592,-55.652,-35.389],"7.2917":[68.465,-55.513,-16.692],"7.3333":[62.17,-55.056,7.553],"7.375":[57.405,-54.925,27.566],"7.4167":[66.297,-67.355,28.891],"7.4583":[67.106,-42.497,9.52],"7.5":[51.18,-17.926,-10.451],"7.5417":[46.591,-17.514,-39.016],"7.5833":[57.837,-29.724,-23.476],"7.625":[54.562,-24.225,-14.378],"7.6667":[52.04,-19.271,-8.66],"7.7083":[51.291,-16.496,-5.976],"7.75":[50.938,-14.31,-4.46],"7.7917":[50.551,-10.751,-2.196],"7.8333":[45.433,14.156,17.657],"7.875":[45.976,30.822,30.9],"7.9167":[53.13,22.428,36.545],"7.9583":[61.122,5.526,36.482],"8.0":[72.195,-0.797,36.181],"8.0417":[75.334,9.329,39.001],"8.0833":[77.062,19.473,42.62],"8.125":[74.391,29.174,46.676],"8.1667":[69.793,36.885,49.327],"8.2083":[66.111,36.607,48.765],"8.25":[65.811,36.246,50.717],"8.2917":[68.934,38.703,53.609],"8.3333":[71.404,41.563,54.983],"8.375":[72.459,43.596,55.093],"8.4167":[65.946,40.878,49.991],"8.4583":[63.519,40.227,48.21],"8.5":[61.444,39.858,46.719],"8.5417":[60.343,39.93,45.935],"8.5833":[60.423,40.516,45.986],"8.625":[61.207,41.428,46.547],"8.6667":[64.012,43.497,47.994]},"position":{"0.0":[-13.582,-25.322,-10.222],"0.0417":[-10.409,-25.022,-12.072],"0.0833":[-9.328,-24.248,-12.219],"0.125":[-9.042,-23.855,-12.141],"0.1667":[-8.876,-23.489,-12.099],"0.2083":[-8.861,-23.13,-12.022],"0.25":[-8.908,-22.827,-11.902],"0.2917":[-9.037,-22.614,-11.719],"0.3333":[-9.337,-22.286,-11.256],"0.375":[-9.388,-22.079,-11.019],"0.4167":[-9.363,-21.868,-10.77],"0.4583":[-9.069,-21.686,-10.503],"0.5":[-7.255,-21.38,-9.914],"0.5417":[-6.352,-21.36,-9.606],"0.5833":[-5.868,-21.617,-9.218],"0.625":[-5.655,-22.024,-8.909],"0.6667":[-5.604,-22.427,-8.881],"0.7083":[-5.684,-22.757,-8.99],"0.75":[-6.05,-22.843,-9.461],"0.7917":[-6.259,-22.651,-9.848],"0.8333":[-6.586,-22.437,-10.078],"0.875":[-6.96,-22.405,-10.344],"0.9167":[-7.715,-22.562,-11.049],"0.9583":[-8.053,-22.792,-11.364],"1.0":[-8.302,-23.397,-11.545],"1.0417":[-8.483,-24.066,-11.679],"1.0833":[-8.528,-24.186,-11.895],"1.125":[-8.478,-24.039,-12.064],"1.1667":[-8.908,-23.59,-12.308],"1.2083":[-9.367,-23.347,-12.394],"1.25":[-9.727,-23.11,-12.439],"1.2917":[-9.846,-22.867,-12.412],"1.3333":[-9.772,-22.463,-11.961],"1.375":[-9.665,-22.37,-11.626],"1.4167":[-9.499,-22.445,-11.4],"1.4583":[-9.398,-22.624,-11.264],"1.5":[-9.448,-22.876,-11.255],"1.5417":[-9.733,-23.168,-11.34],"1.5833":[-11.297,-23.742,-11.827],"1.625":[-11.821,-23.749,-12.222],"1.6667":[-12.07,-23.668,-12.619],"1.7083":[-11.927,-23.514,-12.798],"1.75":[-11.503,-23.394,-13.252],"1.7917":[-11.353,-23.535,-13.612],"1.8333":[-11.22,-23.746,-13.984],"1.875":[-11.136,-23.998,-14.311],"1.9167":[-11.195,-24.254,-14.507],"1.9583":[-11.202,-24.528,-14.62],"2.0":[-10.671,-25.061,-14.714],"2.0417":[-10.405,-25.168,-14.682],"2.0833":[-10.093,-25.188,-14.699],"2.125":[-9.534,-24.935,-14.27],"2.1667":[-10.045,-22.883,-13.78],"2.2083":[-10.197,-22.277,-13.762],"2.25":[-10.299,-21.836,-13.831],"2.2917":[-10.395,-21.589,-13.955],"2.3333":[-10.519,-21.599,-14.149],"2.375":[-10.631,-21.802,-14.398],"2.4167":[-10.749,-22.282,-14.742],"2.4583":[-10.776,-22.556,-14.831],"2.5":[-10.784,-22.89,-14.827],"2.5417":[-10.822,-23.352,-14.755],"2.5833":[-10.718,-24.261,-14.207],"2.625":[-10.145,-24.44,-13.2],"2.6667":[-9.522,-24.227,-12.163],"2.7083":[-9.331,-23.44,-11.732],"2.75":[-9.277,-22.441,-11.534],"2.7917":[-9.242,-21.542,-11.47],"2.8333":[-9.185,-20.241,-11.866],"2.875":[-9.204,-19.819,-11.997],"2.9167":[-9.227,-19.532,-12.095],"2.9583":[-9.199,-19.372,-12.148],"3.0":[-9.132,-19.281,-12.211],"3.0417":[-9.115,-19.298,-12.231],"3.0833":[-9.113,-19.331,-12.235],"3.125":[-9.121,-19.37,-12.228],"3.1667":[-9.132,-19.389,-12.219],"3.2083":[-9.145,-19.397,-12.209],"3.25":[-9.162,-19.379,-12.21],"3.2917":[-9.162,-19.37,-12.214],"3.3333":[-9.16,-19.365,-12.218],"3.375":[-9.158,-19.362,-12.22],"3.4167":[-9.153,-19.36,-12.226],"3.4583":[-9.151,-19.361,-12.227],"3.5":[-9.15,-19.363,-12.227],"3.5417":[-9.149,-19.367,-12.226],"3.5833":[-9.149,-19.373,-12.223],"3.625":[-9.15,-19.379,-12.221],"3.6667":[-9.163,-19.433,-12.194],"3.7083":[-9.229,-19.475,-12.197],"3.75":[-9.359,-19.592,-12.132],"3.7917":[-9.491,-19.74,-12.044],"3.8333":[-9.623,-20.038,-11.886],"3.875":[-9.591,-20.185,-11.839],"3.9167":[-9.502,-20.331,-11.811],"3.9583":[-9.407,-20.471,-11.804],"4.0":[-9.36,-20.616,-11.804],"4.0417":[-9.398,-20.756,-11.779],"4.0833":[-9.509,-21.012,-11.715],"4.125":[-9.478,-21.19,-11.738],"4.1667":[-9.419,-21.403,-11.78],"4.2083":[-9.378,-21.623,-11.826],"4.25":[-9.36,-21.671,-11.855],"4.2917":[-9.357,-21.701,-11.875],"4.3333":[-9.364,-21.734,-11.893],"4.375":[-9.386,-21.769,-11.903],"4.4167":[-9.432,-21.799,-11.893],"4.4583":[-9.477,-21.884,-11.841],"4.5":[-9.671,-22.025,-11.681],"4.5417":[-9.771,-22.007,-11.609],"4.5833":[-9.837,-21.921,-11.545],"4.625":[-9.823,-21.744,-11.489],"4.6667":[-9.482,-21.466,-11.41],"4.7083":[-9.202,-21.328,-11.42],"4.75":[-8.983,-21.021,-11.497],"4.7917":[-8.782,-20.653,-11.606],"4.8333":[-8.614,-20.309,-11.759],"4.875":[-8.489,-20.008,-12.02],"4.9167":[-8.547,-19.697,-12.613],"4.9583":[-8.687,-19.65,-12.902],"5.0":[-8.792,-19.768,-13.061],"5.0417":[-8.805,-20.324,-12.885],"5.0833":[-8.626,-21.397,-12.389],"5.125":[-8.507,-21.608,-12.233],"5.1667":[-8.408,-21.569,-12.141],"5.2083":[-8.312,-21.415,-12.08],"5.25":[-8.238,-21.278,-12.031],"5.2917":[-8.18,-21.189,-11.99],"5.3333":[-8.097,-21.04,-11.926],"5.375":[-8.088,-21.014,-11.878],"5.4167":[-8.117,-21.038,-11.81],"5.4583":[-8.178,-21.099,-11.729],"5.5":[-8.267,-21.257,-11.577],"5.5417":[-8.253,-21.342,-11.517],"5.5833":[-8.215,-21.441,-11.463],"5.625":[-8.17,-21.532,-11.414],"5.6667":[-8.138,-21.594,-11.37],"5.7083":[-8.122,-21.623,-11.328],"5.75":[-8.102,-21.632,-11.25],"5.7917":[-8.096,-21.627,-11.219],"5.8333":[-8.088,-21.621,-11.195],"5.875":[-8.079,-21.616,-11.179],"5.9167":[-8.064,-21.596,-11.17],"5.9583":[-8.057,-21.584,-11.17],"6.0":[-8.052,-21.573,-11.169],"6.0417":[-8.049,-21.563,-11.168],"6.0833":[-8.048,-21.551,-11.17],"6.125":[-8.047,-21.539,-11.172],"6.1667":[-8.05,-21.523,-11.176],"6.2083":[-8.053,-21.517,-11.181],"6.25":[-8.059,-21.515,-11.183],"6.2917":[-8.066,-21.516,-11.185],"6.3333":[-8.083,-21.518,-11.192],"6.375":[-8.093,-21.518,-11.196],"6.4167":[-8.106,-21.518,-11.203],"6.4583":[-8.118,-21.518,-11.209],"6.5":[-8.127,-21.518,-11.216],"6.5417":[-8.134,-21.519,-11.22],"6.5833":[-8.138,-21.522,-11.219],"6.625":[-8.137,-21.524,-11.217],"6.6667":[-8.136,-21.527,-11.215],"6.7083":[-8.134,-21.529,-11.214],"6.75":[-8.132,-21.529,-11.216],"6.7917":[-8.13,-21.529,-11.219],"6.8333":[-8.129,-21.528,-11.223],"6.875":[-8.127,-21.527,-11.228],"6.9167":[-8.126,-21.525,-11.231],"6.9583":[-8.126,-21.525,-11.236],"7.0":[-8.125,-21.524,-11.237],"7.0417":[-8.126,-21.523,-11.235],"7.0833":[-8.127,-21.527,-11.234],"7.125":[-8.135,-21.535,-11.238],"7.1667":[-8.157,-21.56,-11.297],"7.2083":[-8.207,-21.601,-11.296],"7.25":[-8.341,-21.693,-11.24],"7.2917":[-8.46,-21.799,-11.098],"7.3333":[-8.48,-22.003,-10.758],"7.375":[-8.437,-22.012,-10.462],"7.4167":[-8.303,-20.592,-10.659],"7.4583":[-8.679,-20.537,-10.734],"7.5":[-9.104,-20.448,-11.242],"7.5417":[-9.769,-20.232,-11.424],"7.5833":[-9.979,-20.811,-11.111],"7.625":[-10.103,-20.953,-10.943],"7.6667":[-10.252,-21.038,-10.823],"7.7083":[-10.398,-21.086,-10.769],"7.75":[-10.55,-21.122,-10.746],"7.7917":[-10.683,-21.18,-10.721],"7.8333":[-10.462,-21.624,-11.597],"7.875":[-10.191,-22.109,-12.406],"7.9167":[-10.351,-22.606,-13.099],"7.9583":[-10.648,-23.119,-13.738],"8.0":[-11.265,-24.159,-14.129],"8.0417":[-11.601,-24.644,-13.866],"8.0833":[-12.051,-25.075,-13.316],"8.125":[-12.856,-25.408,-11.996],"8.1667":[-13.666,-25.598,-10.585],"8.2083":[-14.037,-25.603,-10.004],"8.25":[-14.251,-25.29,-9.679],"8.2917":[-14.179,-25.089,-9.744],"8.3333":[-13.967,-25.019,-9.89],"8.375":[-13.752,-25.002,-10.073],"8.4167":[-13.708,-25.019,-10.344],"8.4583":[-13.672,-25.068,-10.381],"8.5":[-13.635,-25.131,-10.384],"8.5417":[-13.607,-25.185,-10.37],"8.5833":[-13.591,-25.225,-10.346],"8.625":[-13.583,-25.262,-10.312],"8.6667":[-13.577,-25.322,-10.226]}},"weapon":{"rotation":{"0.0":[-86.583,25.034,62.225],"0.0417":[-88.838,-25.467,-19.215],"0.0833":[-31.721,-41.431,-106.82],"0.125":[-19.706,-30.185,-139.709],"0.1667":[-28.903,-26.076,-160.285],"0.2083":[-47.63,-33.4,-172.92],"0.25":[-74.253,-47.167,-164.804],"0.2917":[-124.152,-48.896,-118.114],"0.3333":[-161.52,13.641,-54.288],"0.375":[-152.378,35.871,-31.059],"0.4167":[-128.405,45.995,3.898],"0.4583":[-99.794,44.351,46.204],"0.5":[-74.353,14.216,119.957],"0.5417":[-75.758,-4.096,150.325],"0.5833":[-78.27,-25.449,178.236],"0.625":[-88.285,-38.85,214.427],"0.6667":[-96.364,-25.345,260.153],"0.7083":[-86.038,-13.106,293.087],"0.75":[-65.116,-35.911,303.133],"0.7917":[-40.581,-32.663,282.213],"0.8333":[-31.823,-3.377,259.528],"0.875":[-41.749,31.471,233.483],"0.9167":[-138.193,23.717,114.249],"0.9583":[-142.943,8.86,88.087],"1.0":[-136.967,5.45,64.499],"1.0417":[-121.966,11.608,37.08],"1.0833":[-105.338,28.924,24.361],"1.125":[-74.318,40.174,52.031],"1.1667":[-26.232,9.084,129.909],"1.2083":[-28.251,-15.148,162.521],"1.25":[-41.649,-33.621,198.866],"1.2917":[-63.357,-42.8,240.786],"1.3333":[-99.654,-27.675,318.658],"1.375":[-102.713,-11.877,345.585],"1.4167":[-96.568,2.767,367.298],"1.4583":[-89.827,12.974,387.189],"1.5":[-88.715,21.355,407.186],"1.5417":[-95.068,32.077,421.308],"1.5833":[-168.147,56.292,387.4],"1.625":[-188.829,25.475,370.569],"1.6667":[-188.52,-16.723,363.035],"1.7083":[-161.605,-56.779,332.354],"1.75":[-45.255,-28.167,218.785],"1.7917":[-31.751,1.096,206.009],"1.8333":[-30.877,32.27,180.776],"1.875":[-67.299,59.576,127.068],"1.9167":[-149.024,42.321,45.156],"1.9583":[-172.714,-7.99,26.083],"2.0":[-196.877,-112.888,28.735],"2.0417":[-184.169,-145.658,17.677],"2.0833":[-177.884,-170.796,16.353],"2.125":[-168.825,-185.014,16.798],"2.1667":[-126.771,-168.03,11.999],"2.2083":[-94.458,-164.341,2.241],"2.25":[-56.495,-167.103,-7.653],"2.2917":[-27.45,-173.036,-13.472],"2.3333":[-1.412,-180.245,-15.602],"2.375":[19.064,-186.416,-14.649],"2.4167":[45.14,-190.516,-7.428],"2.4583":[54.381,-192.136,-4.465],"2.5":[63.185,-197.542,-3.113],"2.5417":[71.404,-212.488,-3.845],"2.5833":[85.968,-250.271,-3.717],"2.625":[118.704,-237.637,28.029],"2.6667":[125.956,-219.428,34.314],"2.7083":[119.977,-221.996,27.456],"2.75":[106.64,-229.489,11.712],"2.7917":[90.229,-234.091,-8.416],"2.8333":[68.168,-235.56,-45.303],"2.875":[65.018,-236.36,-51.773],"2.9167":[64.935,-237.765,-53.235],"2.9583":[66.523,-238.798,-51.769],"3.0":[68.434,-239.235,-48.052],"3.0417":[67.548,-238.737,-47.94],"3.0833":[66.36,-238.292,-49.021],"3.125":[65.427,-237.878,-50.247],"3.1667":[65.641,-237.646,-50.595],"3.2083":[66.229,-237.564,-50.561],"3.25":[67.142,-237.887,-49.767],"3.2917":[67.327,-238.035,-49.501],"3.3333":[67.375,-238.161,-49.328],"3.375":[67.326,-238.269,-49.229],"3.4167":[67.137,-238.458,-49.109],"3.4583":[67.014,-238.533,-49.142],"3.5":[66.851,-238.58,-49.311],"3.5417":[66.661,-238.611,-49.581],"3.5833":[66.519,-238.615,-49.818],"3.625":[66.524,-238.584,-49.904],"3.6667":[66.119,-238.493,-50.745],"3.7083":[65.319,-238.699,-52.36],"3.75":[61.759,-244.409,-60.762],"3.7917":[54.7,-251.49,-72.938],"3.8333":[1.249,-261.283,-134.53],"3.875":[-28.418,-260.885,-166.423],"3.9167":[-44.461,-259.74,-184.416],"3.9583":[-53.593,-258.784,-194.394],"4.0":[-59.748,-257.927,-199.42],"4.0417":[-64.134,-257.194,-200.494],"4.0833":[-69.329,-256.718,-195.692],"4.125":[-71.287,-256.771,-192.306],"4.1667":[-73.059,-256.867,-189.396],"4.2083":[-74.511,-256.879,-187.488],"4.25":[-76.081,-257.038,-186.081],"4.2917":[-76.237,-257.191,-185.86],"4.3333":[-76.009,-257.273,-185.664],"4.375":[-75.415,-257.199,-185.253],"4.4167":[-74.509,-256.878,-184.437],"4.4583":[-63.412,-258.663,-181.52],"4.5":[-28.606,-263.375,-167.16],"4.5417":[26.466,-267.312,-125.617],"4.5833":[-28.911,-276.327,-193.729],"4.625":[3.993,-288.511,-167.382],"4.6667":[16.438,-321.649,-168.236],"4.7083":[19.705,-338.676,-173.178],"4.75":[22.671,-353.912,-175.981],"4.7917":[25.678,-368.654,-178.514],"4.8333":[30.333,-384.123,-182.082],"4.875":[42.018,-403.02,-191.397],"4.9167":[63.821,-427.342,-207.913],"4.9583":[58.247,-435.119,-199.871],"5.0":[53.595,-436.99,-192.795],"5.0417":[103.732,-443.819,-243.396],"5.0833":[123.801,-439.344,-259.734],"5.125":[91.572,-433.943,-226.124],"5.1667":[86.41,-431.481,-222.963],"5.2083":[84.444,-431.508,-224.623],"5.25":[81.767,-431.459,-224.838],"5.2917":[77.811,-430.533,-222.696],"5.3333":[70.144,-428.312,-217.433],"5.375":[67.529,-426.469,-214.419],"5.4167":[66.559,-422.787,-211.417],"5.4583":[67.056,-417.538,-208.733],"5.5":[69.475,-410.597,-204.316],"5.5417":[69.87,-412.609,-202.124],"5.5833":[66.969,-420.875,-196.461],"5.625":[53.077,-433.093,-179.408],"5.6667":[2.09,-440.323,-125.279],"5.7083":[-40.341,-437.608,-80.284],"5.75":[-53.398,-436.061,-64.735],"5.7917":[-52.398,-437.44,-65.226],"5.8333":[-49.213,-438.973,-68.179],"5.875":[-47.31,-439.716,-69.908],"5.9167":[-47.595,-439.753,-69.31],"5.9583":[-47.437,-439.692,-69.377],"6.0":[-47.259,-439.623,-69.426],"6.0417":[-47.025,-439.53,-69.495],"6.0833":[-46.636,-439.385,-69.73],"6.125":[-46.176,-439.219,-70.032],"6.1667":[-45.377,-438.924,-70.481],"6.2083":[-45.941,-438.715,-69.722],"6.25":[-47.212,-438.412,-68.247],"6.2917":[-48.134,-438.169,-67.107],"6.3333":[-44.609,-438.498,-70.102],"6.375":[-36.882,-439.299,-77.465],"6.4167":[-23.683,-440.116,-90.22],"6.4583":[-7.346,-440.353,-106.106],"6.5":[7.169,-439.907,-120.219],"6.5417":[16.138,-439.262,-128.912],"6.5833":[22.557,-438.541,-135.097],"6.625":[23.368,-438.419,-135.873],"6.6667":[23.47,-438.38,-135.983],"6.7083":[23.393,-438.367,-135.915],"6.75":[24.188,-438.225,-136.697],"6.7917":[24.482,-438.159,-137.012],"6.8333":[24.649,-438.115,-137.207],"6.875":[24.719,-438.081,-137.302],"6.9167":[24.734,-438.063,-137.326],"6.9583":[24.718,-438.056,-137.287],"7.0":[24.401,-438.182,-136.587],"7.0417":[24.029,-438.307,-135.683],"7.0833":[23.798,-438.381,-135.053],"7.125":[24.748,-438.055,-135.134],"7.1667":[31.578,-435.518,-140.533],"7.2083":[33.531,-434.3,-137.812],"7.25":[32.384,-433.34,-122.753],"7.2917":[31.895,-433.408,-103.688],"7.3333":[29.764,-436.983,-82.548],"7.375":[29.645,-439.715,-66.274],"7.4167":[71.176,-430.916,-96.968],"7.4583":[28.998,-425.93,-75.692],"7.5":[-2.08,-427.286,-77.641],"7.5417":[6.47,-426.926,-118.257],"7.5833":[25.458,-424.973,-116.89],"7.625":[11.472,-427.687,-96.449],"7.6667":[-3.045,-428.755,-78.177],"7.7083":[-10.759,-428.278,-68.544],"7.75":[-16.24,-427.478,-62.04],"7.7917":[-24.065,-425.691,-52.682],"7.8333":[-37.188,-423.876,-27.909],"7.875":[-46.275,-421.664,-11.241],"7.9167":[-51.856,-416.82,-1.008],"7.9583":[-56.431,-411.662,7.924],"8.0":[-72.723,-391.863,31.509],"8.0417":[-78.251,-375.37,42.249],"8.0833":[-80.192,-360.548,51.277],"8.125":[-81.516,-349.446,57.533],"8.1667":[-83.484,-342.287,60.965],"8.2083":[-86.581,-341.934,61.653],"8.25":[-86.91,-342.235,63.683],"8.2917":[-83.795,-340.367,65.668],"8.3333":[-81.197,-337.958,66.379],"8.375":[-79.933,-336.112,66.265],"8.4167":[-85.676,-337.748,63.293],"8.4583":[-87.776,-337.943,62.296],"8.5":[-89.543,-337.901,61.479],"8.5417":[-90.406,-337.618,61.072],"8.5833":[-90.171,-337.069,61.163],"8.625":[-89.292,-336.337,61.557],"8.6667":[-86.513,-334.863,62.263]},"position":{"0.0":[-6.325,-13.744,-13.194],"0.0417":[-2.838,-13.55,-14.55],"0.0833":[-2.147,-12.106,-13.725],"0.125":[-2.444,-11.253,-13.413],"0.1667":[-2.919,-10.413,-13.254],"0.2083":[-3.513,-9.572,-13.404],"0.25":[-3.894,-9.012,-13.947],"0.2917":[-3.878,-9.009,-14.957],"0.3333":[-4.681,-10.9,-15.935],"0.375":[-5.125,-11.241,-15.485],"0.4167":[-5.344,-11.103,-14.875],"0.4583":[-5.497,-10.566,-14.207],"0.5":[-4.547,-8.453,-13.3],"0.5417":[-3.05,-7.747,-13.275],"0.5833":[-1.206,-7.978,-13.36],"0.625":[0.616,-9.028,-13.632],"0.6667":[2.056,-10.838,-13.766],"0.7083":[2.559,-12.681,-13.272],"0.75":[3.194,-14.881,-12.272],"0.7917":[3.456,-14.46,-11.41],"0.8333":[3.397,-12.681,-10.803],"0.875":[2.706,-10.584,-11.147],"0.9167":[-0.203,-9.084,-14.216],"0.9583":[-1.094,-9.931,-14.722],"1.0":[-1.875,-10.928,-14.994],"1.0417":[-2.709,-12.266,-15.25],"1.0833":[-3.466,-13.147,-15.388],"1.125":[-4.506,-12.903,-14.941],"1.1667":[-4.953,-10.738,-14.135],"1.2083":[-4.169,-9.844,-14.385],"1.25":[-3.228,-9.694,-14.925],"1.2917":[-2.609,-10.144,-15.513],"1.3333":[-2.872,-11.472,-16.319],"1.375":[-3.478,-11.853,-16.297],"1.4167":[-3.719,-12.084,-15.766],"1.4583":[-3.684,-12.213,-15.094],"1.5":[-3.809,-12.231,-14.65],"1.5417":[-3.991,-12.138,-14.369],"1.5833":[-4.55,-11.056,-14.138],"1.625":[-4.978,-10.675,-14.375],"1.6667":[-4.947,-10.588,-14.491],"1.7083":[-4.75,-10.697,-14.916],"1.75":[-5.219,-10.541,-15.26],"1.7917":[-5.453,-10.509,-15.432],"1.8333":[-5.985,-10.488,-15.238],"1.875":[-6.25,-10.978,-15.632],"1.9167":[-5.685,-11.584,-17.176],"1.9583":[-3.894,-12.359,-18.197],"2.0":[-2.163,-14.003,-17.579],"2.0417":[-2.375,-14.353,-17.419],"2.0833":[-2.578,-14.669,-17.66],"2.125":[-1.988,-13.975,-17],"2.1667":[-2.113,-11.056,-15.166],"2.2083":[-2.128,-9.675,-15.8],"2.25":[-2.144,-7.55,-16.529],"2.2917":[-2.163,-5.897,-16.832],"2.3333":[-2.197,-4.459,-16.71],"2.375":[-2.222,-3.64,-16.31],"2.4167":[-2.238,-3.544,-15.475],"2.4583":[-2.225,-4.05,-15.129],"2.5":[-2.238,-4.95,-14.794],"2.5417":[-2.353,-7.025,-14.525],"2.5833":[-2.903,-12.906,-14.541],"2.625":[-2.306,-13.666,-13.622],"2.6667":[-1.584,-13.503,-12.647],"2.7083":[-1.388,-12.666,-12.26],"2.75":[-1.397,-11.497,-12.069],"2.7917":[-1.478,-10.378,-12.028],"2.8333":[-1.981,-8.556,-12.547],"2.875":[-2.134,-8.056,-12.663],"2.9167":[-2.206,-7.747,-12.703],"2.9583":[-2.175,-7.594,-12.713],"3.0":[-2.038,-7.547,-12.75],"3.0417":[-1.988,-7.578,-12.794],"3.0833":[-1.991,-7.609,-12.816],"3.125":[-2.016,-7.637,-12.832],"3.1667":[-2.044,-7.647,-12.828],"3.2083":[-2.072,-7.647,-12.819],"3.25":[-2.088,-7.628,-12.807],"3.2917":[-2.084,-7.625,-12.8],"3.3333":[-2.078,-7.622,-12.8],"3.375":[-2.069,-7.622,-12.8],"3.4167":[-2.056,-7.625,-12.797],"3.4583":[-2.053,-7.628,-12.797],"3.5":[-2.053,-7.628,-12.797],"3.5417":[-2.056,-7.631,-12.797],"3.5833":[-2.059,-7.634,-12.794],"3.625":[-2.066,-7.637,-12.791],"3.6667":[-2.094,-7.681,-12.772],"3.7083":[-2.141,-7.737,-12.744],"3.75":[-2.297,-7.828,-12.713],"3.7917":[-2.438,-7.922,-12.675],"3.8333":[-2.619,-8.041,-12.582],"3.875":[-2.678,-8.103,-12.503],"3.9167":[-2.734,-8.175,-12.4],"3.9583":[-2.753,-8.278,-12.303],"4.0":[-2.7,-8.425,-12.25],"4.0417":[-2.575,-8.622,-12.235],"4.0833":[-2.228,-9.134,-12.263],"4.125":[-2.056,-9.428,-12.288],"4.1667":[-1.913,-9.734,-12.316],"4.2083":[-1.809,-10.019,-12.344],"4.25":[-1.713,-10.131,-12.347],"4.2917":[-1.694,-10.172,-12.353],"4.3333":[-1.694,-10.2,-12.36],"4.375":[-1.719,-10.228,-12.36],"4.4167":[-1.772,-10.253,-12.344],"4.4583":[-1.744,-9.994,-12.413],"4.5":[-1.663,-9.456,-12.528],"4.5417":[-1.747,-9.131,-12.607],"4.5833":[-1.834,-8.784,-12.644],"4.625":[-1.922,-8.491,-12.66],"4.6667":[-1.959,-7.834,-12.582],"4.7083":[-1.894,-7.444,-12.522],"4.75":[-1.922,-7.112,-12.444],"4.7917":[-2,-6.812,-12.41],"4.8333":[-2.009,-6.669,-12.491],"4.875":[-1.816,-6.931,-12.769],"4.9167":[-1.809,-7.472,-13.188],"4.9583":[-1.894,-7.65,-13.191],"5.0":[-1.959,-7.747,-13.179],"5.0417":[-2.038,-8.228,-13.266],"5.0833":[-2.134,-9.084,-13.338],"5.125":[-2.1,-9.241,-13.341],"5.1667":[-2.131,-9.178,-13.288],"5.2083":[-2.159,-9.016,-13.204],"5.25":[-2.172,-8.878,-13.135],"5.2917":[-2.169,-8.794,-13.1],"5.3333":[-2.131,-8.656,-13.053],"5.375":[-2.113,-8.619,-13.016],"5.4167":[-2.097,-8.616,-12.953],"5.4583":[-2.072,-8.637,-12.869],"5.5":[-2.016,-8.709,-12.719],"5.5417":[-2.003,-8.766,-12.682],"5.5833":[-2,-8.856,-12.644],"5.625":[-2,-8.947,-12.575],"5.6667":[-1.981,-9.003,-12.478],"5.7083":[-1.941,-9.022,-12.375],"5.75":[-1.841,-9.025,-12.222],"5.7917":[-1.794,-9.025,-12.169],"5.8333":[-1.756,-9.025,-12.135],"5.875":[-1.728,-9.025,-12.113],"5.9167":[-1.697,-9.006,-12.1],"5.9583":[-1.688,-8.994,-12.103],"6.0":[-1.675,-8.984,-12.107],"6.0417":[-1.666,-8.975,-12.113],"6.0833":[-1.656,-8.962,-12.119],"6.125":[-1.647,-8.953,-12.132],"6.1667":[-1.634,-8.941,-12.153],"6.2083":[-1.628,-8.937,-12.163],"6.25":[-1.625,-8.941,-12.178],"6.2917":[-1.622,-8.944,-12.188],"6.3333":[-1.613,-8.95,-12.188],"6.375":[-1.609,-8.95,-12.16],"6.4167":[-1.603,-8.95,-12.119],"6.4583":[-1.6,-8.95,-12.072],"6.5":[-1.6,-8.953,-12.028],"6.5417":[-1.6,-8.953,-11.997],"6.5833":[-1.597,-8.959,-11.969],"6.625":[-1.597,-8.962,-11.966],"6.6667":[-1.597,-8.962,-11.963],"6.7083":[-1.594,-8.966,-11.963],"6.75":[-1.594,-8.966,-11.963],"6.7917":[-1.594,-8.966,-11.963],"6.8333":[-1.594,-8.962,-11.969],"6.875":[-1.594,-8.962,-11.972],"6.9167":[-1.591,-8.962,-11.975],"6.9583":[-1.591,-8.959,-11.982],"7.0":[-1.569,-8.966,-11.982],"7.0417":[-1.547,-8.969,-11.982],"7.0833":[-1.528,-8.975,-11.978],"7.125":[-1.494,-8.991,-11.985],"7.1667":[-1.466,-9.025,-12.035],"7.2083":[-1.303,-9.112,-12.041],"7.25":[-0.822,-9.478,-12.028],"7.2917":[-0.25,-10.184,-11.891],"7.3333":[0.194,-11.225,-11.494],"7.375":[0.375,-12.053,-11.128],"7.4167":[0.066,-11.363,-10.788],"7.4583":[-0.194,-10.103,-12.163],"7.5":[-1.775,-8.275,-13.3],"7.5417":[-3.463,-7.437,-13.322],"7.5833":[-2.431,-8.5,-13],"7.625":[-2.359,-8.841,-12.969],"7.6667":[-2.441,-9.047,-12.96],"7.7083":[-2.563,-9.162,-12.985],"7.75":[-2.719,-9.238,-13.028],"7.7917":[-2.869,-9.363,-13.11],"7.8333":[-2.981,-10.206,-14.507],"7.875":[-2.956,-10.869,-15.541],"7.9167":[-2.772,-11.891,-16.225],"7.9583":[-2.616,-12.925,-16.632],"8.0":[-3.219,-14.069,-17.069],"8.0417":[-3.941,-14.228,-17.11],"8.0833":[-4.722,-14.272,-16.704],"8.125":[-5.65,-14.291,-15.313],"8.1667":[-6.441,-14.275,-13.763],"8.2083":[-6.669,-14.247,-13.082],"8.25":[-6.81,-13.994,-12.75],"8.2917":[-6.853,-13.8,-12.885],"8.3333":[-6.778,-13.678,-13.069],"8.375":[-6.656,-13.597,-13.254],"8.4167":[-6.41,-13.569,-13.388],"8.4583":[-6.31,-13.585,-13.363],"8.5":[-6.225,-13.613,-13.307],"8.5417":[-6.178,-13.641,-13.26],"8.5833":[-6.178,-13.669,-13.238],"8.625":[-6.206,-13.697,-13.219],"8.6667":[-6.325,-13.744,-13.197]}},"blade":{"rotation":{"0.0":[0,0,0],"3.8333":[0,0,0],"3.875":[0.081,0,-0.027],"3.9167":[0.671,0,-0.027],"3.9583":[2.276,0,0],"4.0":[5.401,0,0],"4.0417":[15.934,-0.006,0.039],"4.0833":[62.022,0.014,-0.023],"4.125":[88.333,0.027,-0.028],"4.1667":[110.671,-0.016,0.011],"4.2083":[124.415,0.021,-0.011],"4.25":[134.942,0.018,-0.007],"4.2917":[137.24,0,0],"4.3333":[138.443,0.013,-0.005],"4.375":[139.216,-0.024,0.009],"4.4167":[140.23,-0.013,0.004],"4.4583":[141.556,-0.009,0.003],"4.5":[144.058,0.026,-0.008],"4.5417":[145.212,0.023,-0.007],"4.5833":[146.291,0.032,-0.01],"4.625":[147.295,-0.028,0.008],"4.6667":[149.019,0.013,-0.004],"4.7083":[149.727,0.013,-0.003],"4.75":[150.328,0.021,-0.006],"4.7917":[150.806,0.023,-0.006],"4.8333":[151.155,-0.022,0.005],"4.875":[151.375,0.016,-0.004],"4.9167":[151.45,-0.032,0.008],"4.9583":[151.45,0.031,-0.008],"5.0":[151.45,-0.032,0.008],"5.0417":[157.528,0.015,-0.003],"5.0833":[172.812,-0.022,0.001],"5.125":[175.904,0.014,0],"5.1667":[175.904,0.021,-0.001],"5.2083":[175.904,-0.021,0.001],"5.25":[175.904,0.029,-0.001],"5.2917":[175.904,0.11,-0.003],"5.7917":[175.904,0.11,-0.003],"5.8333":[175.909,0.11,-0.003],"5.875":[175.904,0.11,-0.003],"6.4167":[175.904,0.11,-0.003],"6.4583":[175.904,-0.11,0.003],"7.0":[175.904,-0.11,0.003],"7.0417":[175.904,0.01,0],"7.0833":[175.904,-0.012,0],"7.125":[175.904,0.01,0],"7.1667":[175.904,-0.012,0],"7.2083":[175.904,0.01,0],"7.25":[175.904,-0.012,0],"7.5":[175.904,-0.012,0],"7.5417":[64.406,0.081,-0.129],"7.5833":[0,0,0],"8.6667":[0,0,0]}},"lefthand":{"position":[-2.3135,2.1245,2.6711],"scale":[1,1.5,1]},"righthand_1":{"position":{"0.0":[2,2,0],"0.2917":{"pre":[1.74,2.24,0.83],"post":[1.74,2.24,0.83],"lerp_mode":"catmullrom"},"0.5417":{"post":[1.1939,2.4818,-0.3436],"lerp_mode":"catmullrom"},"2.9167":{"post":[-0.11,2.48,-0.34],"lerp_mode":"catmullrom"},"4.375":{"post":[-0.11,2.48,-0.34],"lerp_mode":"catmullrom"},"5.0":{"post":[2.09,2.48,-0.34],"lerp_mode":"catmullrom"},"5.7917":{"post":[0.29,2.48,-0.34],"lerp_mode":"catmullrom"},"7.375":{"post":[0.29,2.48,-0.34],"lerp_mode":"catmullrom"},"8.125":{"post":[2,2,0],"lerp_mode":"catmullrom"}},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0.09,0.1,0],"lerp_mode":"catmullrom"},"0.2083":{"post":[0.25,-0.25,0],"lerp_mode":"catmullrom"},"0.4583":{"post":[-0.05,-0.5,0.25],"lerp_mode":"catmullrom"},"0.6667":{"post":[0,-0.09,0],"lerp_mode":"catmullrom"},"0.9583":{"post":[-0.25,0.5,-0.25],"lerp_mode":"catmullrom"},"1.25":{"post":[-0.25,0.25,0],"lerp_mode":"catmullrom"},"1.5833":{"post":[-0.5,0.5,0.25],"lerp_mode":"catmullrom"},"1.9167":{"post":[-0.25,0,0],"lerp_mode":"catmullrom"},"2.125":{"post":[0.5,-0.25,-0.25],"lerp_mode":"catmullrom"},"2.2083":{"post":[-0.65,-0.5,0],"lerp_mode":"catmullrom"},"2.375":{"post":[-2.5,0.125,0],"lerp_mode":"catmullrom"},"2.5":{"post":[-1.75,0.125,0],"lerp_mode":"catmullrom"},"2.5833":{"post":[-0.5,0,0],"lerp_mode":"catmullrom"},"2.6667":{"post":[1,-0.125,0],"lerp_mode":"catmullrom"},"2.9167":{"post":[-1,-0.25,-1],"lerp_mode":"catmullrom"},"3.0417":{"post":[-0.97,-0.36,-0.5],"lerp_mode":"catmullrom"},"3.1667":{"post":[-0.6,-0.5,-0.9],"lerp_mode":"catmullrom"},"3.2917":{"post":[-0.37,-0.6,-0.8],"lerp_mode":"catmullrom"},"3.5":{"post":[-0.25,-0.65,-0.7],"lerp_mode":"catmullrom"},"3.7083":{"post":[0,-0.65,-0.5],"lerp_mode":"catmullrom"},"3.9583":{"post":[0.25,-0.65,1],"lerp_mode":"catmullrom"},"4.125":{"post":[-0.25,-0.65,0.75],"lerp_mode":"catmullrom"},"4.4167":{"post":[-0.16,-0.65,0.76],"lerp_mode":"catmullrom"},"4.625":{"post":[0,-0.5,0.75],"lerp_mode":"catmullrom"},"4.75":{"post":[0.5,-0.65,0.5],"lerp_mode":"catmullrom"},"5.0":{"post":[0.25,-0.85,0.75],"lerp_mode":"catmullrom"},"5.0833":{"post":[-0.25,-1,0.75],"lerp_mode":"catmullrom"},"5.3333":{"post":[0.25,-1,0.75],"lerp_mode":"catmullrom"},"5.625":{"post":[0.5,-1.5,0.75],"lerp_mode":"catmullrom"},"5.8333":{"post":[0.75,-1.23,0.73],"lerp_mode":"catmullrom"},"6.0417":{"post":[0.57,-1.32,0.69],"lerp_mode":"catmullrom"},"6.3333":{"post":[0.5,-1.5,0.75],"lerp_mode":"catmullrom"},"6.4583":{"post":[0.25,-1.35,1.5],"lerp_mode":"catmullrom"},"6.7083":{"post":[0,-1.33,1],"lerp_mode":"catmullrom"},"7.0":{"post":[0.25,-1.35,1],"lerp_mode":"catmullrom"},"7.2083":{"post":[1.05,-1.58,0.99],"lerp_mode":"catmullrom"},"7.3333":{"post":[2.51,-2,1.07],"lerp_mode":"catmullrom"},"7.4167":{"post":[2,-1.5,2],"lerp_mode":"catmullrom"},"7.5":{"post":[-1,-0.5,0],"lerp_mode":"catmullrom"},"7.5417":{"post":[-1,-0.5,0],"lerp_mode":"catmullrom"},"7.5833":{"post":[-2,-0.43,1],"lerp_mode":"catmullrom"},"7.6667":{"post":[-1,-0.5,-1],"lerp_mode":"catmullrom"},"7.9167":{"post":[-1,0,0],"lerp_mode":"catmullrom"},"8.125":{"post":[1,-0.5,0.25],"lerp_mode":"catmullrom"},"8.2083":{"post":[0.25,0.1,1],"lerp_mode":"catmullrom"},"8.3333":{"post":[-0.5,0.19,0.58],"lerp_mode":"catmullrom"},"8.4583":{"post":[-0.34,-0.1,0.33],"lerp_mode":"catmullrom"},"8.625":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"righthand_2":{"rotation":[0,180,0],"position":[-2,0,0]},"lefthand_1":{"rotation":[0,180,0],"position":[0,0,0]},"righthand_pos":{"position":[-1,0,0]}},"sound_effects":{"0.0":{"effect":"melee.mercy.inspect"}}},"melee_1":{"loop":true,"animation_length":1.8333,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[85.028,-29.956,-93.112],"0.0417":[47.563,-30.832,-97.442],"0.0833":[50.775,-30.465,-98.011],"0.125":[50.616,-30.438,-98.213],"0.1667":[50.524,-30.429,-98.307],"0.2083":[50.412,-30.42,-98.413],"0.25":[50.346,-30.422,-98.456],"0.2917":[50.291,-30.422,-98.491],"0.3333":[50.218,-30.427,-98.526],"0.375":[50.17,-30.43,-98.541],"0.4167":[50.107,-30.433,-98.573],"0.4583":[50.061,-30.433,-98.598],"0.5":[50.019,-30.432,-98.63],"0.5417":[50.013,-30.435,-98.635],"0.5833":[50.026,-30.436,-98.623],"0.625":[50.039,-30.433,-98.616],"0.9167":[50.037,-30.433,-98.616],"1.2083":[50.037,-30.433,-98.616],"1.25":[50.038,-30.435,-98.618],"1.2917":[50.038,-30.435,-98.618],"1.3333":[59.101,-22.161,-88.199],"1.375":[71.863,-13.543,-73.133],"1.4167":[71.589,-11.849,-70.898],"1.4583":[65.146,-11.281,-73.024],"1.5":[61.993,-12.133,-75.339],"1.5417":[60.316,-14.987,-78.045],"1.5833":[56.99,-16.027,-70.462],"1.625":[55.206,-16.565,-65.688],"1.6667":[53.944,-18.033,-60.548],"1.7083":[53.54,-19.148,-58.067],"1.75":[53.346,-20.176,-56.922],"1.7917":[53.825,-21.687,-58.191],"1.8333":[53.849,-22.166,-58.488]},"position":{"0.0":[19.999,-27.386,-9.08],"0.0417":[15.342,-28.129,-9.318],"0.0833":[14.868,-29.565,-8.051],"0.125":[14.644,-29.944,-7.875],"0.1667":[14.528,-30.146,-7.805],"0.2083":[14.398,-30.39,-7.757],"0.25":[14.333,-30.519,-7.754],"0.2917":[14.283,-30.628,-7.768],"0.3333":[14.223,-30.766,-7.805],"0.375":[14.189,-30.848,-7.834],"0.4167":[14.136,-30.97,-7.867],"0.4583":[14.094,-31.058,-7.874],"0.5":[14.049,-31.145,-7.866],"0.5417":[14.043,-31.156,-7.865],"0.5833":[14.059,-31.125,-7.869],"0.625":[14.069,-31.107,-7.871],"0.9167":[14.069,-31.106,-7.871],"1.2917":[14.069,-31.106,-7.871],"1.3333":[14.329,-28.623,-9.391],"1.375":[14.525,-24.898,-11.499],"1.4167":[14.467,-24.245,-11.608],"1.4583":[14.264,-24.495,-10.932],"1.5":[14.273,-24.425,-10.705],"1.5417":[14.516,-24.345,-10.742],"1.5833":[14.711,-24.54,-10.942],"1.625":[14.762,-24.654,-11.094],"1.6667":[14.673,-24.722,-11.378],"1.7083":[14.572,-24.75,-11.564],"1.75":[14.497,-24.81,-11.697],"1.7917":[14.416,-24.955,-11.793],"1.8333":[14.379,-25.026,-11.812]}},"righthand":{"rotation":{"0.0":[110.683,3.326,5.704],"0.0417":[111.39,-13.023,-35.477],"0.0833":[114.969,-17.545,-43.391],"0.125":[117.099,-16.796,-45.988],"0.1667":[117.312,-17.021,-46.022],"0.2083":[116.335,-16.075,-45.774],"0.25":[114.064,-13.917,-45.19],"0.2917":[112.799,-12.684,-44.893],"0.3333":[114.469,-14.304,-45.283],"0.375":[116.341,-16.08,-45.776],"0.4167":[108.709,-12.883,-11.305],"0.4583":[99.792,-2.916,32.99],"0.5":[103.282,1.441,34.859],"0.5417":[137.956,29.096,79.989],"0.5833":[141.516,30.765,87.46],"0.625":[141.164,24.609,74.4],"0.6667":[139.99,14.904,50.813],"0.7083":[137.022,8.965,30.931],"0.75":[133.177,-0.934,3.401],"0.7917":[131.873,-11.718,-4.881],"0.8333":[117.147,-24.545,-6.261],"0.875":[94.344,-25.909,4.489],"0.9167":[84.242,-30.002,4.065],"0.9583":[88.106,-28.054,-9.763],"1.0":[84.036,-7.885,-10.957],"1.0417":[77.968,-0.087,-5.578],"1.0833":[80.695,-5.771,-12.32],"1.125":[93.548,-18.281,-32.174],"1.1667":[104.031,-27.808,-27.922],"1.2083":[97.701,-22.128,-6.841],"1.25":[89.704,4.337,21.66],"1.2917":[86.827,17.495,34.033],"1.3333":[84.216,28.829,43.782],"1.375":[79.412,39.887,53.715],"1.4167":[74.186,43.839,56.448],"1.4583":[67.422,45.484,54.614],"1.5":[64.163,43.975,51.094],"1.5417":[63.656,42.886,49.557],"1.5833":[65.699,42.648,49.442],"1.625":[67.346,42.953,50.006],"1.6667":[68.534,43.064,50.959],"1.7083":[68.439,43.141,51.09],"1.75":[67.351,43.273,50.354],"1.7917":[64.863,43.45,48.6],"1.8333":[64.019,43.499,47.996]},"position":{"0.0":[-15.362,-25.922,0],"0.0417":[-10.909,-27.007,-6.993],"0.0833":[-9.872,-24.13,-15.596],"0.125":[-8.453,-22.01,-20.445],"0.1667":[-8.531,-21.997,-20.564],"0.2083":[-8.411,-21.995,-20.594],"0.25":[-8.042,-22.014,-20.509],"0.2917":[-7.845,-22.037,-20.376],"0.3333":[-8.229,-22.123,-19.728],"0.375":[-8.622,-22.188,-19.232],"0.4167":[-11.153,-23.074,-16.406],"0.4583":[-16.154,-25.54,-9.371],"0.5":[-18.636,-26.624,-3.523],"0.5417":[-18.076,-25.649,3.332],"0.5833":[-18.078,-26.555,5.19],"0.625":[-17.524,-28.396,6.749],"0.6667":[-16.745,-30.081,6.863],"0.7083":[-16.034,-31.339,5.173],"0.75":[-14.794,-32.154,0.88],"0.7917":[-13.5,-30.039,-4.603],"0.8333":[-12.097,-26.239,-10.958],"0.875":[-11.886,-24.388,-11.58],"0.9167":[-11.737,-22.715,-12.047],"0.9583":[-11.446,-21.209,-11.724],"1.0":[-11.137,-21.299,-10.739],"1.0417":[-11.343,-22.255,-10.697],"1.0833":[-11.607,-22.947,-11.06],"1.125":[-11.919,-23.633,-11.728],"1.1667":[-12.07,-24.375,-11.649],"1.2083":[-12.103,-25.122,-11.698],"1.25":[-12.022,-26.487,-11.846],"1.2917":[-11.94,-26.459,-11.744],"1.3333":[-11.877,-26.074,-11.316],"1.375":[-12.467,-25.716,-10.511],"1.4167":[-13.168,-25.537,-10.024],"1.4583":[-13.648,-25.282,-9.826],"1.5":[-13.704,-25.154,-9.956],"1.5417":[-13.69,-25.128,-10.113],"1.5833":[-13.608,-25.219,-10.248],"1.625":[-13.553,-25.3,-10.275],"1.6667":[-13.49,-25.371,-10.259],"1.7083":[-13.475,-25.39,-10.241],"1.75":[-13.495,-25.381,-10.233],"1.7917":[-13.554,-25.343,-10.226],"1.8333":[-13.578,-25.326,-10.224]}},"weapon":{"rotation":{"0.0":[-23.662,-9.208,3.808],"0.0417":[-12.922,-22.17,-35.636],"0.0833":[-9.094,-26.661,-44.19],"0.125":[-6.826,-25.872,-47.165],"0.1667":[-6.597,-26.095,-47.232],"0.2083":[-7.662,-25.172,-46.807],"0.25":[-10.091,-23.049,-45.812],"0.2917":[-11.439,-21.827,-45.298],"0.3333":[-9.662,-23.431,-45.981],"0.375":[-7.648,-25.18,-46.81],"0.4167":[-18.121,-23.811,-13.639],"0.4583":[-32.988,-18.326,28.781],"0.5":[-31.39,-15.016,28.656],"0.5417":[-25.323,11.115,66.875],"0.5833":[-22.657,13.47,73.145],"0.625":[-21.44,7.422,60.46],"0.6667":[-20.217,-2.268,37.327],"0.7083":[-22.379,-9.607,20.826],"0.75":[-23.372,-19.197,-8.651],"0.7917":[-9.994,-17.383,-49.508],"0.8333":[5.235,-15.351,-88.7],"0.875":[4.267,-53.092,-94.011],"0.9167":[45.753,-85.421,-135.126],"0.9583":[-0.581,-154.924,-82.913],"1.0":[-0.549,-221.547,-85.67],"1.0417":[1.968,-284.116,-83.451],"1.0833":[0.57,-318.413,-84.925],"1.125":[0.436,-347.962,-85.212],"1.1667":[2.237,-382.318,-88.054],"1.2083":[-16.725,-401.64,-59.845],"1.25":[-69.693,-376.173,26.401],"1.2917":[-72.193,-361.126,43.242],"1.3333":[-72.543,-351.508,50.9],"1.375":[-75.071,-340.665,62.051],"1.4167":[-78.444,-336.148,67.036],"1.4583":[-83.191,-333.572,67.938],"1.5":[-86.027,-334.501,65.473],"1.5417":[-86.661,-335.481,64.017],"1.5833":[-85.049,-336.105,63.177],"1.625":[-83.633,-336.106,63.195],"1.6667":[-82.614,-336.216,63.756],"1.7083":[-82.631,-336.135,63.944],"1.75":[-83.414,-335.841,63.636],"1.7917":[-85.275,-335.247,62.818],"1.8333":[-86.514,-334.864,62.258]},"position":{"0.0":[-8.232,-16.535,-3.491],"0.0417":[-3.113,-16.378,-9.897],"0.0833":[-1.991,-13.269,-18.313],"0.125":[-0.544,-11.094,-23.591],"0.1667":[-0.625,-11.103,-23.541],"0.2083":[-0.566,-11.128,-23.407],"0.25":[-0.3,-11.147,-23.423],"0.2917":[-0.172,-11.178,-23.282],"0.3333":[-0.475,-11.266,-22.566],"0.375":[-0.778,-11.331,-21.991],"0.4167":[-3.209,-12.85,-19.588],"0.4583":[-8.278,-15.603,-13.138],"0.5":[-10.957,-16.572,-7.544],"0.5417":[-13.35,-15.822,-0.269],"0.5833":[-13.497,-16.528,1.672],"0.625":[-12.866,-18.972,3.206],"0.6667":[-11.497,-21.485,3.331],"0.7083":[-10.022,-22.9,1.625],"0.75":[-7.669,-23.457,-2.559],"0.7917":[-5.497,-21.422,-7.763],"0.8333":[-3.294,-16.916,-13.957],"0.875":[-2.803,-14.688,-14.835],"0.9167":[-2.744,-13.228,-15.763],"0.9583":[-3.009,-10.953,-17.551],"1.0":[-3.041,-8.641,-16.985],"1.0417":[-3.256,-8.447,-14.766],"1.0833":[-3.466,-9.584,-13.638],"1.125":[-3.694,-11.197,-13.091],"1.1667":[-4.059,-13.606,-13.129],"1.2083":[-4.147,-14.913,-13.854],"1.25":[-4.919,-16.028,-15.819],"1.2917":[-5.078,-15.688,-15.569],"1.3333":[-5.113,-15.119,-14.879],"1.375":[-5.619,-14.469,-13.891],"1.4167":[-6.113,-14.16,-13.247],"1.4583":[-6.385,-13.8,-12.875],"1.5":[-6.372,-13.641,-12.938],"1.5417":[-6.353,-13.613,-13.094],"1.5833":[-6.353,-13.722,-13.288],"1.625":[-6.36,-13.816,-13.357],"1.6667":[-6.319,-13.91,-13.372],"1.7083":[-6.3,-13.931,-13.35],"1.75":[-6.297,-13.9,-13.316],"1.7917":[-6.306,-13.813,-13.244],"1.8333":[-6.325,-13.744,-13.197]}},"lefthand":{"position":[-2.3135,2.1245,2.6711],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[-27.5,0,0],"0.5833":[-27.5,0,0],"0.6667":[0,0,0]},"position":[2,2,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0417":{"post":[0.5,0.25,1],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,0.27,0.5],"lerp_mode":"catmullrom"},"0.1042":{"post":[-0.25,0.125,2],"lerp_mode":"catmullrom"},"0.125":{"post":[0.5,-0.125,-1],"lerp_mode":"catmullrom"},"0.1458":{"post":[0.5,-0.02,1],"lerp_mode":"catmullrom"},"0.1667":{"post":[0.25,0.125,1],"lerp_mode":"catmullrom"},"0.2083":{"post":[-0.25,0,-0.5],"lerp_mode":"catmullrom"},"0.2708":{"post":[-0.325,0.25,1],"lerp_mode":"catmullrom"},"0.3542":{"post":[-0.25,0,-0.5],"lerp_mode":"catmullrom"},"0.4167":{"post":[-0.1,0.11,0.19],"lerp_mode":"catmullrom"},"0.4792":{"post":[0.5,0.25,1],"lerp_mode":"catmullrom"},"0.5833":{"post":[0.5,0,0],"lerp_mode":"catmullrom"},"0.7083":{"post":[-0.26,0.15,0.05],"lerp_mode":"catmullrom"},"0.8958":{"post":[0,0,0.25],"lerp_mode":"catmullrom"},"1.1042":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"righthand_2":{"rotation":[0,180,0],"position":[-2,0,0]},"lefthand_1":{"rotation":[0,180,0],"position":[0,0,0]},"righthand_pos":{"position":[-1,0,0]}},"sound_effects":{"0.0":{"effect":"melee.mercy.melee_1"}}},"melee_2":{"loop":true,"animation_length":1.2917,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[39.058,-18.849,-58.819],"0.0417":[32.678,-18.985,-62.071],"0.0833":[53.291,-28.316,-78.051],"0.125":[94.557,-28.615,-77.599],"0.1667":[105.638,-25.641,-58.361],"0.2083":[120.166,-18.067,-53.79],"0.25":[129.345,-12.699,-51.499],"0.2917":[138.049,-7.448,-49.313],"0.3333":[150.243,-0.865,-45.625],"0.375":[157.782,1.816,-42.694],"0.4167":[162.285,0.858,-43.283],"0.4583":[162.889,-0.864,-45.56],"0.5":[154.48,-0.613,-49.293],"0.5417":[129.594,0.356,-57.396],"0.5833":[112.468,-0.945,-62.836],"0.625":[87.938,-5.815,-69.89],"0.6667":[73.335,-10.549,-73.361],"0.7083":[77.619,-14.046,-76.144],"0.75":[71.863,-13.543,-73.133],"0.7917":[67.634,-12.324,-72.939],"0.8333":[61.993,-12.134,-75.338],"0.875":[60.316,-14.987,-78.045],"0.9167":[58.126,-15.788,-73.196],"0.9583":[55.206,-16.564,-65.689],"1.0":[54.232,-17.521,-62.081],"1.0417":[53.508,-19.195,-58.016],"1.0833":[53.397,-20.092,-56.94],"1.125":[53.792,-20.897,-57.518],"1.1667":[54.424,-21.807,-58.862],"1.2083":[54.349,-22.053,-58.88],"1.25":[53.964,-22.128,-58.57],"1.2917":[53.848,-22.168,-58.486]},"position":{"0.0":[13.492,-25.341,-11.466],"0.0417":[13.464,-25.657,-11.275],"0.0833":[16.322,-25.705,-11.979],"0.125":[20.884,-31.077,-7.859],"0.1667":[21.754,-34.798,-2.941],"0.2083":[21.834,-35.749,-0.649],"0.25":[21.812,-36.052,0.369],"0.2917":[21.762,-36.246,1.096],"0.3333":[21.729,-36.575,1.883],"0.375":[21.815,-36.955,2.375],"0.4167":[21.751,-37.302,2.622],"0.4583":[21.609,-37.397,2.597],"0.5":[20.896,-36.316,1.719],"0.5417":[19.232,-32.974,-1.182],"0.5833":[18.379,-30.746,-3.487],"0.625":[17.347,-27.415,-7.536],"0.6667":[16.704,-25.222,-10.509],"0.7083":[15.635,-25.049,-11.5],"0.75":[14.525,-24.898,-11.499],"0.7917":[14.279,-24.714,-11.169],"0.8333":[14.273,-24.425,-10.705],"0.875":[14.516,-24.345,-10.742],"0.9167":[14.655,-24.47,-10.872],"0.9583":[14.762,-24.654,-11.094],"1.0":[14.714,-24.714,-11.279],"1.0417":[14.567,-24.759,-11.567],"1.0833":[14.507,-24.792,-11.697],"1.125":[14.48,-24.826,-11.776],"1.1667":[14.453,-24.883,-11.842],"1.2083":[14.429,-24.928,-11.848],"1.25":[14.392,-25.001,-11.82],"1.2917":[14.379,-25.026,-11.812]}},"righthand":{"rotation":{"0.0":[51.89,23.805,60.101],"0.0417":[37.709,9.479,72.374],"0.0833":[20.745,3.464,80.773],"0.125":[16.947,6.643,77.865],"0.1667":[40.288,20.636,65.618],"0.2083":[86.869,34.64,80.483],"0.25":[115.288,28.714,85.795],"0.2917":[130.857,27.545,83.23],"0.3333":[138.094,33.147,79.649],"0.375":[139.658,32.052,81.664],"0.4167":[129.01,31.978,72.235],"0.4583":[124.802,33.527,72.704],"0.5":[120.934,35.494,74.004],"0.5417":[115.506,38.893,76.569],"0.5833":[111.891,41.14,78.046],"0.625":[105.916,43.886,78.729],"0.6667":[101.533,44.458,77.008],"0.7083":[96.429,43.141,73.719],"0.75":[85.628,38.243,62.631],"0.7917":[78.812,35.099,55.299],"0.8333":[70.38,41.154,51.875],"0.875":[64.974,45.388,49.961],"0.9167":[61.093,45.525,48.513],"0.9583":[58.443,43.823,46.314],"1.0":[59.094,42.905,44.196],"1.0417":[61.761,43.327,44.953],"1.0833":[62.915,43.57,45.575],"1.125":[63.422,43.687,46.017],"1.1667":[63.817,43.701,46.785],"1.2083":[63.95,43.615,47.383],"1.25":[64.048,43.44,48.299],"1.2917":[64.021,43.499,48.004]},"position":{"0.0":[-10.22,-23.823,-9.999],"0.0417":[-6.401,-23.009,-8.872],"0.0833":[-1.24,-23.808,-5.252],"0.125":[4.154,-23.905,-3.55],"0.1667":[2.969,-21.821,-8.6],"0.2083":[-9.093,-20.612,-17.358],"0.25":[-17.815,-20.674,-13.375],"0.2917":[-22.517,-21.706,-6.163],"0.3333":[-23.33,-23.496,4.001],"0.375":[-23.483,-23.43,6.545],"0.4167":[-22.616,-23.457,7.431],"0.4583":[-21.401,-24.29,6.946],"0.5":[-20.088,-25.313,6.457],"0.5417":[-18.047,-26.914,5.523],"0.5833":[-16.712,-27.828,4.637],"0.625":[-14.874,-28.633,2.693],"0.6667":[-13.92,-27.812,-0.266],"0.7083":[-13.26,-26.023,-4.382],"0.75":[-12.81,-24.806,-9.027],"0.7917":[-12.835,-24.652,-10.832],"0.8333":[-12.876,-24.89,-10.467],"0.875":[-13.003,-25.061,-9.857],"0.9167":[-13.337,-24.937,-9.841],"0.9583":[-13.7,-24.806,-10.015],"1.0":[-13.626,-24.942,-10.129],"1.0417":[-13.6,-25.07,-10.18],"1.0833":[-13.587,-25.168,-10.199],"1.125":[-13.576,-25.285,-10.214],"1.1667":[-13.57,-25.366,-10.225],"1.2083":[-13.573,-25.357,-10.227],"1.25":[-13.58,-25.301,-10.225],"1.2917":[-13.578,-25.323,-10.225]}},"weapon":{"rotation":{"0.0":[-102.126,8.811,76.573],"0.0417":[-119.471,-0.637,91.712],"0.0833":[-137.361,-0.359,102.192],"0.125":[-139.711,3.988,99.542],"0.1667":[-113.454,9.089,84.718],"0.2083":[-69.616,13.44,85.826],"0.25":[-45.084,7.545,80.513],"0.2917":[-31.203,8.307,72.498],"0.3333":[-26.158,15.09,66.277],"0.375":[-24.573,14.338,67.852],"0.4167":[-33.585,12.479,61.937],"0.4583":[-37.408,13.492,63.783],"0.5":[-40.93,15.06,66.35],"0.5417":[-45.8,18.026,70.732],"0.5833":[-48.924,20.072,73.466],"0.625":[-53.81,22.574,76.386],"0.6667":[-57.292,22.717,76.798],"0.7083":[-61.28,21.464,75.539],"0.75":[-70.278,17.144,68.508],"0.7917":[-76.315,14.71,63.563],"0.8333":[-82.095,21.833,63.488],"0.875":[-85.279,26.849,63.924],"0.9167":[-88.205,27.675,63.86],"0.9583":[-90.774,26.554,62.287],"1.0":[-90.546,25.547,59.773],"1.0417":[-88.344,25.464,59.583],"1.0833":[-87.382,25.499,59.789],"1.125":[-86.955,25.53,60.022],"1.1667":[-86.652,25.483,60.611],"1.2083":[-86.57,25.378,61.134],"1.25":[-86.538,25.194,61.986],"1.2917":[-86.513,25.137,62.263]},"position":{"0.0":[-1.834,-13.197,-12.56],"0.0417":[2.519,-13.331,-10.622],"0.0833":[7.763,-14.678,-6.06],"0.125":[13.179,-14.644,-4.234],"0.1667":[11.75,-11.584,-10.641],"0.2083":[-1.984,-10.088,-20.935],"0.25":[-12.003,-10.522,-17.222],"0.2917":[-17.46,-11.781,-9.885],"0.3333":[-18.644,-13.485,0.428],"0.375":[-18.847,-13.45,2.994],"0.4167":[-17.554,-13.466,3.713],"0.4583":[-16.175,-14.128,3.2],"0.5":[-14.707,-14.969,2.706],"0.5417":[-12.425,-16.303,1.797],"0.5833":[-10.922,-17.056,0.947],"0.625":[-8.81,-17.678,-0.934],"0.6667":[-7.669,-16.772,-3.869],"0.7083":[-6.816,-15,-7.969],"0.75":[-5.997,-13.816,-12.544],"0.7917":[-5.797,-13.606,-14.244],"0.8333":[-5.722,-13.497,-13.625],"0.875":[-5.781,-13.478,-12.838],"0.9167":[-6,-13.316,-12.719],"0.9583":[-6.285,-13.181,-12.832],"1.0":[-6.281,-13.291,-12.969],"1.0417":[-6.353,-13.441,-13.091],"1.0833":[-6.375,-13.553,-13.141],"1.125":[-6.375,-13.678,-13.169],"1.1667":[-6.363,-13.781,-13.191],"1.2083":[-6.35,-13.788,-13.194],"1.25":[-6.331,-13.76,-13.197],"1.2917":[-6.325,-13.744,-13.197]}},"lefthand":{"position":[-2.3135,2.1245,2.6711],"scale":[1,1.5,1]},"righthand_1":{"position":[2,2,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0625":{"post":[0.5,0.5,-1],"lerp_mode":"catmullrom"},"0.1042":{"post":[0.6,0.72,-1.56],"lerp_mode":"catmullrom"},"0.1667":{"post":[1,0.76,-1.16],"lerp_mode":"catmullrom"},"0.2083":{"post":[-0.25,-0.25,0.5],"lerp_mode":"catmullrom"},"0.2292":{"post":[0.25,0,0.5],"lerp_mode":"catmullrom"},"0.25":{"post":[0.25,0,-1],"lerp_mode":"catmullrom"},"0.2917":{"post":[0.5,-0.25,1],"lerp_mode":"catmullrom"},"0.3542":{"post":[0.31,0.22,-0.5],"lerp_mode":"catmullrom"},"0.4167":{"post":[0.5,0,0.25],"lerp_mode":"catmullrom"},"0.5":{"post":[0.75,0.25,0.125],"lerp_mode":"catmullrom"},"0.625":{"post":[0.5,0,0],"lerp_mode":"catmullrom"},"0.75":{"post":[-0.26,0.15,0.05],"lerp_mode":"catmullrom"},"0.9375":{"post":[0,0,0.25],"lerp_mode":"catmullrom"},"1.1458":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"righthand_2":{"rotation":[0,180,0],"position":[-2,0,0]},"lefthand_1":{"rotation":[0,180,0],"position":[0,0,0]},"righthand_pos":{"position":[-1,0,0]}},"sound_effects":{"0.0":{"effect":"melee.mercy.melee_2"}}},"melee_3":{"loop":true,"animation_length":1.7917,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[144.397,4.657,-51.044],"0.0417":[130.589,5.469,-59.927],"0.0833":[116.779,4.135,-68.773],"0.125":[96.892,-1.606,-80.79],"0.1667":[84.484,-7.468,-87.409],"0.2083":[66.998,-18.318,-94.745],"0.25":[55.713,-26.335,-97.74],"0.2917":[50.038,-30.435,-98.618],"0.5":[50.036,-30.434,-98.615],"0.5417":[50.036,-30.434,-98.615],"1.0":[50.036,-30.434,-98.615],"1.0417":[50.038,-30.435,-98.618],"1.1667":[59.046,-22.247,-88.309],"1.2083":[69.007,-15.484,-76.964],"1.25":[70.818,-11.77,-71.145],"1.2917":[65.532,-11.312,-72.897],"1.3333":[61.993,-12.133,-75.341],"1.375":[59.274,-15.461,-75.814],"1.4167":[56.99,-16.029,-70.46],"1.4583":[55.524,-17.541,-65.178],"1.5":[54.519,-18.42,-61.607],"1.5417":[53.507,-19.196,-58.014],"1.5833":[53.581,-20.498,-57.225],"1.625":[54.059,-21.249,-58.07],"1.6667":[54.426,-21.975,-58.919],"1.7083":[54.221,-22.08,-58.778],"1.75":[53.963,-22.128,-58.57],"1.7917":[53.849,-22.166,-58.488]},"position":{"0.0":[20.392,-36.352,1.775],"0.0417":[19.173,-35.809,1.068],"0.0833":[18.146,-35.285,0.207],"0.125":[16.896,-34.441,-1.444],"0.1667":[16.187,-33.783,-2.8],"0.2083":[15.174,-32.586,-5.182],"0.25":[14.456,-31.63,-6.951],"0.2917":[14.069,-31.106,-7.871],"0.5":[14.071,-31.104,-7.872],"1.0":[14.071,-31.104,-7.872],"1.0417":[14.069,-31.106,-7.871],"1.1667":[14.329,-28.652,-9.379],"1.2083":[14.496,-25.878,-10.998],"1.25":[14.443,-24.281,-11.523],"1.2917":[14.276,-24.486,-10.97],"1.3333":[14.273,-24.425,-10.705],"1.375":[14.587,-24.402,-10.806],"1.4167":[14.711,-24.54,-10.942],"1.4583":[14.663,-24.628,-11.205],"1.5":[14.619,-24.692,-11.384],"1.5417":[14.567,-24.759,-11.567],"1.5833":[14.494,-24.807,-11.736],"1.625":[14.472,-24.844,-11.803],"1.6667":[14.441,-24.904,-11.851],"1.7083":[14.416,-24.952,-11.839],"1.75":[14.392,-25.001,-11.82],"1.7917":[14.379,-25.026,-11.812]}},"righthand":{"rotation":{"0.0":[67.752,-1.655,3.077],"0.0417":[65.785,-1.928,19.546],"0.0833":[67.262,0.83,14.73],"0.125":[63.786,-8.55,-26.159],"0.1667":[46.208,-13.76,-19.285],"0.2083":[1.3,-23.083,-15.265],"0.25":[-18.422,-26.001,-8.678],"0.2917":[1.833,-28.291,-10.37],"0.3333":[36.644,-23.208,-13.367],"0.375":[45.03,-20.374,-14.172],"0.4167":[40.529,-22.103,-15.633],"0.4583":[39.803,-23.937,-19.813],"0.5":[39.824,-25.716,-24.36],"0.5417":[17.648,-24.91,-16.273],"0.5833":[6.243,-18.969,-6.884],"0.625":[17.158,-11.897,0.055],"0.6667":[30.505,-11.01,-1.786],"0.7083":[44.964,-9.926,-4.352],"0.75":[66.962,-7.309,-8.523],"0.7917":[80.7,-4.941,-10.763],"0.8333":[98.155,-1.28,-12.36],"0.875":[103.731,-0.076,-11.846],"0.9167":[98.158,-1.28,-12.361],"0.9583":[55.148,-12.504,-15.492],"1.0":[38.277,-13.393,-7.984],"1.0417":[38.42,-11.291,-4.289],"1.0833":[52.802,-9.733,-8.7],"1.125":[70.201,-6.864,-13.754],"1.1667":[91.397,-3.617,-18.181],"1.2083":[94.635,-10.606,-18.479],"1.25":[89.98,-16.399,-13.555],"1.2917":[85.033,-6.184,-4.939],"1.3333":[85.427,5.779,11.949],"1.375":[83.766,26.888,38.228],"1.4167":[74.513,46.177,49.888],"1.4583":[67.821,45.74,47.588],"1.5":[63.913,45.182,47.018],"1.5417":[60.46,44.335,47.156],"1.5833":[59.016,42.994,44.787],"1.625":[60.143,42.589,44.703],"1.6667":[62.846,43.199,46.358],"1.7083":[63.605,43.372,47.212],"1.75":[64.009,43.499,47.992],"1.7917":[64.021,43.5,48]},"position":{"0.0":[-15.898,-22.061,-11.56],"0.0417":[-14.761,-22.694,-11.648],"0.0833":[-15.238,-22.674,-11.273],"0.125":[-13.757,-22.611,-12.232],"0.1667":[-14.076,-19.971,-11.149],"0.2083":[-16.343,-14.991,-5.213],"0.25":[-17.07,-14.538,-3.674],"0.2917":[-13.041,-15.585,-9.847],"0.3333":[-8.558,-16.11,-16.47],"0.375":[-8.265,-15.548,-16.734],"0.4167":[-8.47,-16.261,-16.637],"0.4583":[-8.869,-16.471,-16.617],"0.5":[-9.286,-16.599,-16.61],"0.5417":[-12.957,-14.933,-11.047],"0.5833":[-15.57,-16.988,-5.274],"0.625":[-16.08,-22.974,-1.014],"0.6667":[-15.487,-24.789,-1.064],"0.7083":[-14.736,-26.406,-1.495],"0.75":[-13.484,-28.465,-2.676],"0.7917":[-12.666,-29.596,-3.691],"0.8333":[-11.656,-30.931,-5.319],"0.875":[-11.527,-30.367,-7.339],"0.9167":[-11.656,-28.249,-9.817],"0.9583":[-11.518,-22.654,-12.428],"1.0":[-11.869,-21.547,-11.634],"1.0417":[-12.338,-21.482,-10.465],"1.0833":[-12.499,-21.735,-10.409],"1.125":[-12.623,-22.126,-10.524],"1.1667":[-12.753,-22.781,-10.867],"1.2083":[-12.753,-23.192,-11.447],"1.25":[-12.396,-24.52,-11.597],"1.2917":[-11.978,-26.034,-10.745],"1.3333":[-12.237,-26.898,-11.039],"1.375":[-12.75,-27.212,-11.893],"1.4167":[-12.997,-26.575,-12.523],"1.4583":[-13.432,-25.964,-11.311],"1.5":[-13.601,-25.579,-10.543],"1.5417":[-13.666,-25.213,-9.846],"1.5833":[-13.697,-25.152,-10.098],"1.625":[-13.644,-25.194,-10.212],"1.6667":[-13.561,-25.318,-10.26],"1.7083":[-13.56,-25.333,-10.253],"1.75":[-13.577,-25.322,-10.226],"1.7917":[-13.577,-25.323,-10.226]}},"weapon":{"rotation":{"0.0":[-55.547,-23.76,-40.309],"0.0417":[-9.641,-32.843,-50.409],"0.0833":[40.411,-31.487,-32.898],"0.125":[74.887,-6.166,-26.896],"0.1667":[57.269,-5.134,-17.679],"0.2083":[13.726,-15.913,-20.204],"0.25":[-4.727,-20.75,-16.023],"0.2917":[14.7,-21.061,-15.388],"0.3333":[47.348,-14.668,-13.136],"0.375":[55.393,-11.956,-12.682],"0.4167":[51.054,-13.597,-14.812],"0.4583":[50.334,-15.416,-19.099],"0.5":[50.331,-17.197,-23.628],"0.5417":[29.372,-16.739,-18.949],"0.5833":[18.115,-11.447,-11.083],"0.625":[28.286,-3.759,-2.575],"0.6667":[41.355,-2.487,-2.473],"0.7083":[55.59,-1.5,-2.899],"0.75":[77.449,-0.037,-4.034],"0.7917":[91.264,1.057,-4.678],"0.8333":[109.01,2.594,-4.743],"0.875":[114.704,3.029,-3.88],"0.9167":[109.01,2.594,-4.743],"0.9583":[82.444,-3.503,-12.043],"1.0":[43.917,-3.23,-14.417],"1.0417":[1.647,-5.714,-8.47],"1.0833":[-15.688,-5.062,-0.924],"1.125":[-27.649,-1.746,5.602],"1.1667":[-34.981,5.474,14.293],"1.2083":[-39.414,6.084,16.875],"1.25":[-51.809,-2.402,13.741],"1.2917":[-65.26,-9.249,9.925],"1.3333":[-67.791,-2.44,23.196],"1.375":[-72.889,12.087,45.131],"1.4167":[-77.823,26.144,60.501],"1.4583":[-83.002,26.673,60.711],"1.5":[-86.13,26.787,61.519],"1.5417":[-89.027,26.606,62.786],"1.5833":[-90.555,25.595,60.744],"1.625":[-89.797,24.983,60.218],"1.6667":[-87.514,25.057,61],"1.7083":[-86.875,25.087,61.6],"1.75":[-86.519,25.136,62.258],"1.7917":[-86.514,25.136,62.258]},"position":{"0.0":[-9.403,-8.775,-15.963],"0.0417":[-6.66,-9.981,-16.625],"0.0833":[-5.969,-11.55,-16.366],"0.125":[-6.744,-11.559,-14.647],"0.1667":[-7.166,-8.537,-13.547],"0.2083":[-9.853,-2.728,-6.181],"0.25":[-10.647,-2.347,-3.863],"0.2917":[-6.319,-3.309,-10.791],"0.3333":[-1.322,-4.447,-18.71],"0.375":[-0.984,-4.162,-19.241],"0.4167":[-1.266,-4.681,-19.001],"0.4583":[-1.766,-4.769,-18.91],"0.5":[-2.294,-4.797,-18.851],"0.5417":[-6.185,-2.747,-12.669],"0.5833":[-8.672,-4.79,-6.597],"0.625":[-8.888,-11.125,-2.85],"0.6667":[-8.285,-13.247,-3.347],"0.7083":[-7.544,-15.288,-4.166],"0.75":[-6.306,-18.125,-5.713],"0.7917":[-5.497,-19.791,-6.797],"0.8333":[-4.481,-21.822,-8.319],"0.875":[-4.363,-21.494,-10.26],"0.9167":[-4.481,-19.141,-12.816],"0.9583":[-4.35,-11.522,-14.71],"1.0":[-4.478,-8.666,-13.366],"1.0417":[-4.275,-7.566,-12.682],"1.0833":[-4.163,-7.894,-12.747],"1.125":[-4.075,-8.369,-12.907],"1.1667":[-3.944,-9.441,-13.113],"1.2083":[-3.984,-10.734,-13.185],"1.25":[-4.378,-13.856,-13.235],"1.2917":[-4.697,-15.572,-13.438],"1.3333":[-5.353,-16.866,-14.097],"1.375":[-6.291,-16.656,-15.266],"1.4167":[-6.213,-15.01,-15.716],"1.4583":[-6.413,-14.325,-14.36],"1.5":[-6.419,-13.928,-13.497],"1.5417":[-6.313,-13.581,-12.713],"1.5833":[-6.328,-13.5,-12.935],"1.625":[-6.313,-13.553,-13.082],"1.6667":[-6.303,-13.706,-13.204],"1.7083":[-6.31,-13.738,-13.216],"1.75":[-6.325,-13.744,-13.197],"1.7917":[-6.325,-13.744,-13.197]}},"lefthand":{"position":[-2.3135,2.1245,2.6711],"scale":[1,1.5,1]},"righthand_1":{"position":[2,2,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0.5,-0.25,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[-0.78,-0.5,0],"lerp_mode":"catmullrom"},"0.25":{"post":[-1.5,-0.25,-1],"lerp_mode":"catmullrom"},"0.3125":{"post":[-1,0,-1.5],"lerp_mode":"catmullrom"},"0.3333":{"post":[-1.5,0,0.5],"lerp_mode":"catmullrom"},"0.3542":{"post":[-1.5,0.125,-1],"lerp_mode":"catmullrom"},"0.375":{"post":[-1,-0.25,0.5],"lerp_mode":"catmullrom"},"0.4167":{"post":[-1.25,0.25,-1],"lerp_mode":"catmullrom"},"0.5":{"post":[-1,0.25,-0.5],"lerp_mode":"catmullrom"},"0.5625":{"post":[-0.5,-0.25,-0.5],"lerp_mode":"catmullrom"},"0.6667":{"post":[-1,-0.5,-0.62],"lerp_mode":"catmullrom"},"0.8125":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.9375":{"post":[-0.5,0.15,0.05],"lerp_mode":"catmullrom"},"1.0625":{"post":[-0.5,0,0.25],"lerp_mode":"catmullrom"},"1.2083":{"post":[0.25,0,-0.17],"lerp_mode":"catmullrom"},"1.4167":{"post":[0,0,0.25],"lerp_mode":"catmullrom"},"1.625":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"righthand_2":{"rotation":[0,180,0],"position":[-2,0,0]},"lefthand_1":{"rotation":[0,180,0],"position":[0,0,0]},"righthand_pos":{"position":[-1,0,0]}},"sound_effects":{"0.0":{"effect":"melee.mercy.melee_3"}}},"run":{"loop":true,"animation_length":0.7167,"bones":{"lefthand_1":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.15":{"post":[0,0,-9],"lerp_mode":"catmullrom"},"0.2333":{"post":[0,0,-1.39],"lerp_mode":"catmullrom"},"0.7167":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,0.5625,0],"lerp_mode":"catmullrom"},"0.15":{"post":[0,0.3125,-1.4375],"lerp_mode":"catmullrom"},"0.3833":{"post":[1.75,-9.625,-1.4375],"lerp_mode":"catmullrom"},"0.5":{"post":[3.9125,-12.205,-1.4375],"lerp_mode":"catmullrom"},"0.5667":{"post":[0,-6.0675,-1.4375],"lerp_mode":"catmullrom"},"0.7167":{"post":[0,0.5625,0],"lerp_mode":"catmullrom"}}},"knife_and_right":{"rotation":{"0.4":{"pre":[4.686,5.1486,15.1695],"post":[4.686,5.1486,15.1695],"lerp_mode":"catmullrom"},"0.6":{"post":[-2,0,0],"lerp_mode":"catmullrom"},"0.7167":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.1667":{"pre":[2.4388,-4.1617,9.1686],"post":[2.4388,-4.1617,9.1686],"lerp_mode":"catmullrom"},"0.4":{"post":[5.555,-4.0527,-7.7123],"lerp_mode":"catmullrom"},"0.5167":{"post":[-0.1195,-4.3737,-4.7219],"lerp_mode":"catmullrom"},"0.6":{"post":[-5.9375,-7.9993,2.7107],"lerp_mode":"catmullrom"},"0.7167":{"post":[-6.6875,-14.1875,8.4375],"lerp_mode":"catmullrom"}}}}},"run_end":{"animation_length":0.6167,"bones":{"lefthand":{"rotation":{"0.0833":{"pre":[9,0,0],"post":[9,0,0],"lerp_mode":"catmullrom"},"0.2167":{"post":[2.125,4.3125,-1.4375],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,-1.3125,0.6875],"lerp_mode":"catmullrom"},"0.4333":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,-0.125,0.125],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,-0.0625,0],"lerp_mode":"catmullrom"},"0.2333":{"post":[0,0,-0.0625],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,0,0.0625],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"lefthand_1":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.25":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,0.5625,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.25":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"knife_and_right":{"rotation":{"0.0833":{"pre":[9,0,0],"post":[9,0,0],"lerp_mode":"catmullrom"},"0.2167":{"post":[0,4.3125,-1.4375],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,-1.3125,0.6875],"lerp_mode":"catmullrom"},"0.4333":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[2.4388,-4.1617,9.1686],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,-0.5625,1.8125],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,-1],"lerp_mode":"catmullrom"},"0.2333":{"post":[0,0,-1.3125],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,0,0.0625],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"}}}}},"run_start":{"loop":"hold_on_last_frame","animation_length":0.25,"bones":{"lefthand":{"rotation":{"0.0":[0,0,0],"0.1667":{"pre":[0,0,0],"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":[0,0,0],"0.1667":{"pre":[0,0.125,0],"post":[0,0.125,0],"lerp_mode":"catmullrom"}}},"lefthand_1":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,0.125,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0.5625,0],"lerp_mode":"catmullrom"}}},"knife_and_right":{"rotation":[0,0,0],"position":{"0.0":[0,0,0],"0.1667":{"pre":[-10.7487,-12.9742,10.7936],"post":[-10.7487,-12.9742,10.7936],"lerp_mode":"catmullrom"}}}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/mercy.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/mercy.geo.json new file mode 100644 index 0000000..da2958f --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/mercy.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.mercy","texture_width":64,"texture_height":64,"visible_bounds_width":24,"visible_bounds_height":8,"visible_bounds_offset":[0,0,0]},"bones":[{"name":"root","pivot":[0,9.6875,4.3375]},{"name":"bone5","parent":"root","pivot":[0,9.6875,4.3375]},{"name":"fn_lefthand","parent":"bone5","pivot":[-6,19,0]},{"name":"lefthand","parent":"fn_lefthand","pivot":[-6,19,0]},{"name":"lefthand_1","parent":"lefthand","pivot":[-6,19,0]},{"name":"lefthand_pos","parent":"lefthand_1","pivot":[0,8,0],"cubes":[{"origin":[-9,8,-2],"size":[4,12,4],"uv":{"north":{"uv":[3.057,0],"uv_size":[0.9035,3]},"east":{"uv":[1.25,3],"uv_size":[0.9035,3]},"south":{"uv":[2.1535,3],"uv_size":[0.9035,3]},"west":{"uv":[3.057,3],"uv_size":[0.9035,3]},"up":{"uv":[3.9605,2],"uv_size":[0.9035,1]},"down":{"uv":[3.9605,4],"uv_size":[0.9035,-1]}}}]},{"name":"knife_and_right","parent":"bone5","pivot":[6,19,0]},{"name":"righthand","parent":"knife_and_right","pivot":[6,19,0]},{"name":"righthand_1","parent":"righthand","pivot":[6,19,0]},{"name":"righthand_2","parent":"righthand_1","pivot":[6,19,0]},{"name":"righthand_pos","parent":"righthand_2","pivot":[0,8,0],"cubes":[{"origin":[5,8,-2],"size":[4,12,4],"uv":{"north":{"uv":[0,0],"uv_size":[1,3]},"east":{"uv":[1,0],"uv_size":[1,3]},"south":{"uv":[2,0],"uv_size":[1,3]},"west":{"uv":[0,3],"uv_size":[1,3]},"up":{"uv":[4,0],"uv_size":[1,1]},"down":{"uv":[4,2],"uv_size":[1,-1]}}}]},{"name":"weapon","parent":"knife_and_right","pivot":[0,9.2,0.8]},{"name":"blade","parent":"weapon","pivot":[0.0027,8.7762,-1.3185],"cubes":[{"origin":[-0.0469,8.875,-6],"size":[0.0938,0.0625,2.7969],"inflate":0.001,"pivot":[-0.0312,8.9375,-6.2969],"rotation":[9.25,0,0],"uv":{"north":{"uv":[35,20],"uv_size":[0.25,0.25]},"east":{"uv":[3,8],"uv_size":[2.75,0.25]},"south":{"uv":[21,35],"uv_size":[0.25,0.25]},"west":{"uv":[8,3],"uv_size":[2.75,0.25]},"up":{"uv":[6,8],"uv_size":[0.25,2.75]},"down":{"uv":[8,8.75],"uv_size":[0.25,-2.75]}}},{"origin":[-0.0469,8.7656,-5.0781],"size":[0.0938,0.1094,1.875],"pivot":[-0.0312,8.9375,-6.2969],"rotation":[9.25,0,0],"uv":{"north":{"uv":[35,21],"uv_size":[0.25,0.25]},"east":{"uv":[11,10],"uv_size":[2,0.25]},"south":{"uv":[22,35],"uv_size":[0.25,0.25]},"west":{"uv":[11,11],"uv_size":[2,0.25]},"up":{"uv":[0,12],"uv_size":[0.25,2]},"down":{"uv":[1,14],"uv_size":[0.25,-2]}}},{"origin":[-0.1094,8.7656,-3.3281],"size":[0.2188,0.1094,0.125],"pivot":[-0.0312,8.9375,-6.2969],"rotation":[9.25,0,0],"uv":{"north":{"uv":[35,22],"uv_size":[0.25,0.25]},"east":{"uv":[23,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,23],"uv_size":[0.25,0.25]},"west":{"uv":[24,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,8.875,-3.3281],"size":[0.2188,0.0625,0.125],"inflate":0.001,"pivot":[-0.0312,8.9375,-6.2969],"rotation":[9.25,0,0],"uv":{"north":{"uv":[35,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0469,8.8125,-5.5156],"size":[0.0938,0.0625,0.4375],"pivot":[-0.0312,8.9375,-6.2969],"rotation":[9.25,0,0],"uv":{"north":{"uv":[35,28],"uv_size":[0.25,0.25]},"east":{"uv":[27,11],"uv_size":[0.5,0.25]},"south":{"uv":[29,35],"uv_size":[0.25,0.25]},"west":{"uv":[12,27],"uv_size":[0.5,0.25]},"up":{"uv":[27,12],"uv_size":[0.25,0.5]},"down":{"uv":[13,27.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1094,8.7656,-3.2031],"size":[0.2188,0.0781,0.0781],"pivot":[-0.0312,8.9375,-6.2969],"rotation":[9.25,0,0],"uv":{"north":{"uv":[35,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0469,8.9062,-6.125],"size":[0.0938,0.0312,0.125],"inflate":0.001,"pivot":[-0.0312,8.9375,-6.2969],"rotation":[9.25,0,0],"uv":{"north":{"uv":[35,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0156,8.9341,-6.1247],"size":[0.0625,0.0312,2.8125],"inflate":0.001,"pivot":[0.0469,8.9497,-6.1247],"rotation":[9.2514,1.237,0.1608],"uv":{"north":{"uv":[0,36],"uv_size":[0.25,0.25]},"east":{"uv":[1,9],"uv_size":[2.75,0.25]},"south":{"uv":[36,0],"uv_size":[0.25,0.25]},"west":{"uv":[9,4],"uv_size":[2.75,0.25]},"up":{"uv":[4,9],"uv_size":[0.25,2.75]},"down":{"uv":[5,11.75],"uv_size":[0.25,-2.75]}}},{"origin":[0.0925,9.2466,-5.0856],"size":[0.0156,0.1562,1.75],"inflate":0.001,"pivot":[0.1081,9.3169,-3.3356],"rotation":[9.0135,2.8613,-11.4856],"uv":{"north":{"uv":[1,36],"uv_size":[0.25,0.25]},"east":{"uv":[13,8],"uv_size":[1.75,0.25]},"south":{"uv":[36,1],"uv_size":[0.25,0.25]},"west":{"uv":[9,13],"uv_size":[1.75,0.25]},"up":{"uv":[13,9],"uv_size":[0.25,1.75]},"down":{"uv":[11,14.75],"uv_size":[0.25,-1.75]}}},{"origin":[0.0925,9.2934,-5.445],"size":[0.0156,0.1094,0.3594],"inflate":0.001,"pivot":[0.1081,9.3169,-3.3356],"rotation":[9.0135,2.8613,-11.4856],"uv":{"north":{"uv":[2,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,2],"uv_size":[0.25,0.25]},"south":{"uv":[3,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,3],"uv_size":[0.25,0.25]},"up":{"uv":[4,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0925,9.3403,-5.8356],"size":[0.0156,0.0625,0.3906],"inflate":0.001,"pivot":[0.1081,9.3169,-3.3356],"rotation":[9.0135,2.8613,-11.4856],"uv":{"north":{"uv":[5,36],"uv_size":[0.25,0.25]},"east":{"uv":[27,13],"uv_size":[0.5,0.25]},"south":{"uv":[36,5],"uv_size":[0.25,0.25]},"west":{"uv":[14,27],"uv_size":[0.5,0.25]},"up":{"uv":[27,14],"uv_size":[0.25,0.5]},"down":{"uv":[15,27.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0925,9.3559,-5.8981],"size":[0.0156,0.0469,0.0625],"inflate":0.001,"pivot":[0.1081,9.3169,-3.3356],"rotation":[9.0135,2.8613,-11.4856],"uv":{"north":{"uv":[6,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0925,9.3559,-5.9294],"size":[0.0156,0.0469,0.0938],"inflate":0.001,"pivot":[0.1081,9.3169,-3.3356],"rotation":[9.0135,2.8613,-11.4856],"uv":{"north":{"uv":[9,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,9.3098,-3.3058],"size":[0.2188,0.125,0.0625],"inflate":0.001,"pivot":[-0.0312,9.4348,-3.2433],"rotation":[49.25,0,0],"uv":{"north":{"uv":[12,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0987,9.1183,-3.1895],"size":[0.1974,0.1875,0.0625],"inflate":0.001,"pivot":[-0.0312,9.3058,-3.1895],"rotation":[74.25,0,0],"uv":{"north":{"uv":[15,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1147,7.255,-3.009],"size":[0.2294,3.625,0.0625],"inflate":0.001,"pivot":[-0.0259,9.255,-3.009],"rotation":[99.75,0,0],"uv":{"north":{"uv":[0,4],"uv_size":[0.25,3.75]},"east":{"uv":[4,0],"uv_size":[0.25,3.75]},"south":{"uv":[1,4],"uv_size":[0.25,3.75]},"west":{"uv":[2,4],"uv_size":[0.25,3.75]},"up":{"uv":[18,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,7.1612,-3.2902],"size":[0.2188,2.0938,0.2812],"inflate":-0.001,"pivot":[-0.0312,9.255,-3.009],"rotation":[99.75,0,0],"uv":{"north":{"uv":[12,1],"uv_size":[0.25,2]},"east":{"uv":[2,12],"uv_size":[0.25,2]},"south":{"uv":[3,12],"uv_size":[0.25,2]},"west":{"uv":[12,3],"uv_size":[0.25,2]},"up":{"uv":[19,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,9.255,-3.1027],"size":[0.2188,1,0.0938],"inflate":-0.001,"pivot":[-0.0312,9.255,-3.009],"rotation":[99.75,0,0],"uv":{"north":{"uv":[22,2],"uv_size":[0.25,1]},"east":{"uv":[22,3],"uv_size":[0.25,1]},"south":{"uv":[22,4],"uv_size":[0.25,1]},"west":{"uv":[5,22],"uv_size":[0.25,1]},"up":{"uv":[20,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1147,9.1163,-3.0881],"size":[0.2294,0.6173,0.0791],"inflate":-0.001,"pivot":[-0.0259,9.2336,-3.009],"rotation":[99.75,0,0],"uv":{"north":{"uv":[22,2],"uv_size":[0.25,1]},"east":{"uv":[61,62.25],"uv_size":[-7.25,-62.25]},"south":{"uv":[22,4],"uv_size":[0.25,1]},"west":{"uv":[53.75,0],"uv_size":[7.25,62.25]},"up":{"uv":[20,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,7.8487,-4.0403],"size":[0.2188,0.6094,0.75],"inflate":-0.001,"pivot":[-0.0312,9.255,-3.009],"rotation":[99.75,0,0],"uv":{"north":{"uv":[27,15],"uv_size":[0.25,0.5]},"east":{"uv":[14,7],"uv_size":[0.75,0.5]},"south":{"uv":[16,27],"uv_size":[0.25,0.5]},"west":{"uv":[15,5],"uv_size":[0.75,0.5]},"up":{"uv":[5,24],"uv_size":[0.25,0.75]},"down":{"uv":[24,5.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1094,9.4678,-1.111],"size":[0.2188,0.1875,0.0625],"pivot":[-0.0312,9.6553,-1.0485],"rotation":[79.75,0,0],"uv":{"north":{"uv":[21,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,21],"uv_size":[0.25,0.25]},"south":{"uv":[22,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,22],"uv_size":[0.25,0.25]},"up":{"uv":[23,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,9.3729,-0.8751],"size":[0.2188,0.1875,0.0625],"pivot":[-0.0312,9.5604,-0.8751],"rotation":[97.25,0,0],"uv":{"north":{"uv":[24,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,9.334,-0.6891],"size":[0.2188,0.25,0.0625],"pivot":[-0.0312,9.584,-0.6891],"rotation":[117.25,0,0],"uv":{"north":{"uv":[27,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,27],"uv_size":[0.25,0.25]},"south":{"uv":[28,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,28],"uv_size":[0.25,0.25]},"up":{"uv":[29,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,9.6135,-0.5579],"size":[0.2188,0.1406,0.0625],"pivot":[-0.0312,9.7541,-0.4954],"rotation":[99.75,0,0],"uv":{"north":{"uv":[30,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,30],"uv_size":[0.25,0.25]},"south":{"uv":[31,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,31],"uv_size":[0.25,0.25]},"up":{"uv":[32,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,32.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,9.7004,-0.5637],"size":[0.2188,0.0625,0.125],"pivot":[0,9.7004,-0.4387],"rotation":[36,0,0],"uv":{"north":{"uv":[33,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,33],"uv_size":[0.25,0.25]},"south":{"uv":[34,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,34],"uv_size":[0.25,0.25]},"up":{"uv":[35,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,9.627,-0.6648],"size":[0.2188,0.0625,0.125],"pivot":[0,9.627,-0.5398],"rotation":[23.5,0,0],"uv":{"north":{"uv":[36,36],"uv_size":[0.25,0.25]},"east":{"uv":[0,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,0],"uv_size":[0.25,0.25]},"west":{"uv":[1,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,9.5771,-0.7794],"size":[0.2188,0.0625,0.125],"pivot":[0,9.5771,-0.6544],"rotation":[13.5,0,0],"uv":{"north":{"uv":[37,2],"uv_size":[0.25,0.25]},"east":{"uv":[3,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,3],"uv_size":[0.25,0.25]},"west":{"uv":[4,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,4],"uv_size":[0.25,0.25]},"down":{"uv":[5,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,9.5479,-0.901],"size":[0.2188,0.0625,0.125],"pivot":[0,9.5479,-0.776],"rotation":[6,0,0],"uv":{"north":{"uv":[37,5],"uv_size":[0.25,0.25]},"east":{"uv":[6,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,6],"uv_size":[0.25,0.25]},"west":{"uv":[7,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0469,8.9798,-4.6105],"size":[0.0938,1.3906,0.0625],"inflate":0.001,"pivot":[-0.0312,8.9798,-4.6105],"rotation":[92.5,0,0],"uv":{"north":{"uv":[15,6],"uv_size":[0.25,1.5]},"east":{"uv":[15,8],"uv_size":[0.25,1.5]},"south":{"uv":[15,10],"uv_size":[0.25,1.5]},"west":{"uv":[11,15],"uv_size":[0.25,1.5]},"up":{"uv":[37,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,7.2297,-4.6757],"size":[0.2188,1.8125,0.0625],"inflate":0.001,"pivot":[-0.0312,9.0422,-4.6132],"rotation":[90,0,0],"uv":{"north":{"uv":[13,11],"uv_size":[0.25,1.75]},"east":{"uv":[12,13],"uv_size":[0.25,1.75]},"south":{"uv":[13,13],"uv_size":[0.25,1.75]},"west":{"uv":[0,14],"uv_size":[0.25,1.75]},"up":{"uv":[37,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.104,7.3547,-4.6132],"size":[0.2081,0.875,0.125],"inflate":-0.001,"pivot":[-0.0366,9.0422,-4.6132],"rotation":[90,0,0],"uv":{"north":{"uv":[22,5],"uv_size":[0.25,1]},"east":{"uv":[6,22],"uv_size":[0.25,1]},"south":{"uv":[22,6],"uv_size":[0.25,1]},"west":{"uv":[7,22],"uv_size":[0.25,1]},"up":{"uv":[37,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,8.4172,-4.6132],"size":[0.2188,0.25,0.0625],"inflate":-0.001,"pivot":[-0.0312,9.0422,-4.6132],"rotation":[90,0,0],"uv":{"north":{"uv":[37,11],"uv_size":[0.25,0.25]},"east":{"uv":[12,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,8.7922,-2.8632],"size":[0.2188,0.25,0.0625],"inflate":0.001,"pivot":[-0.0312,9.0422,-2.8007],"rotation":[71.5,0,0],"uv":{"north":{"uv":[37,14],"uv_size":[0.25,0.25]},"east":{"uv":[15,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,15],"uv_size":[0.25,0.25]},"west":{"uv":[16,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.104,8.7922,-2.8007],"size":[0.2081,0.25,0.125],"inflate":-0.001,"pivot":[-0.0366,9.0422,-2.8007],"rotation":[71.5,0,0],"uv":{"north":{"uv":[37,17],"uv_size":[0.25,0.25]},"east":{"uv":[18,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,18],"uv_size":[0.25,0.25]},"west":{"uv":[19,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,7.9004,-2.6262],"size":[0.2188,1.0625,0.0625],"inflate":0.001,"pivot":[-0.0312,8.9629,-2.5637],"rotation":[45.5,0,0],"uv":{"north":{"uv":[22,7],"uv_size":[0.25,1]},"east":{"uv":[8,22],"uv_size":[0.25,1]},"south":{"uv":[22,8],"uv_size":[0.25,1]},"west":{"uv":[9,22],"uv_size":[0.25,1]},"up":{"uv":[37,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,7.9899,-1.8665],"size":[0.2188,0.2265,0.0625],"inflate":0.001,"pivot":[-0.0312,8.2164,-1.804],"rotation":[45,0,0],"uv":{"north":{"uv":[37,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,7.7677,-1.7253],"size":[0.2188,0.3012,0.0625],"inflate":0.001,"pivot":[-0.0312,8.0689,-1.6628],"rotation":[67.5,0,0],"uv":{"north":{"uv":[37,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,7.6463,-1.4695],"size":[0.2188,0.3118,0.0625],"inflate":0.001,"pivot":[-0.0312,7.9581,-1.407],"rotation":[90,0,0],"uv":{"north":{"uv":[37,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,7.6418,-1.18],"size":[0.2188,0.3118,0.0625],"inflate":0.001,"pivot":[-0.0312,7.9536,-1.1175],"rotation":[112.5,0,0],"uv":{"north":{"uv":[37,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,7.7485,-0.9109],"size":[0.2188,0.3118,0.0625],"inflate":0.001,"pivot":[-0.0312,8.0603,-0.8484],"rotation":[135,0,0],"uv":{"north":{"uv":[37,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1094,7.95,-0.7031],"size":[0.2188,0.3118,0.0625],"inflate":0.001,"pivot":[-0.0312,8.2618,-0.6406],"rotation":[157.5,0,0],"uv":{"north":{"uv":[37,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,37],"uv_size":[0.25,0.25]},"south":{"uv":[0,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0469,7.743,-4.9269],"size":[0.0938,0.5625,3.2031],"inflate":-0.001,"pivot":[0,8.368,-3.4894],"rotation":[180,0,0],"uv":{"north":{"uv":[27,16],"uv_size":[0.25,0.5]},"east":{"uv":[0,0],"uv_size":[3.25,0.5]},"south":{"uv":[17,27],"uv_size":[0.25,0.5]},"west":{"uv":[0,1],"uv_size":[3.25,0.5]},"up":{"uv":[7,6],"uv_size":[0.25,3.25]},"down":{"uv":[0,11.25],"uv_size":[0.25,-3.25]}}},{"origin":[-0.0469,8.3055,-4.4269],"size":[0.0938,0.125,2.4531],"inflate":-0.001,"pivot":[0,8.368,-3.4894],"rotation":[180,0,0],"uv":{"north":{"uv":[2,38],"uv_size":[0.25,0.25]},"east":{"uv":[10,0],"uv_size":[2.5,0.25]},"south":{"uv":[38,2],"uv_size":[0.25,0.25]},"west":{"uv":[1,10],"uv_size":[2.5,0.25]},"up":{"uv":[7,10],"uv_size":[0.25,2.5]},"down":{"uv":[10,9.5],"uv_size":[0.25,-2.5]}}},{"origin":[-0.0469,8.4305,-4.4269],"size":[0.0938,0.125,0.3281],"inflate":-0.001,"pivot":[0,8.368,-3.4894],"rotation":[180,0,0],"uv":{"north":{"uv":[3,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0469,7.743,-1.7238],"size":[0.0938,0.1875,0.6875],"inflate":-0.001,"pivot":[0,8.368,-3.4894],"rotation":[180,0,0],"uv":{"north":{"uv":[6,38],"uv_size":[0.25,0.25]},"east":{"uv":[6,24],"uv_size":[0.75,0.25]},"south":{"uv":[38,6],"uv_size":[0.25,0.25]},"west":{"uv":[24,6],"uv_size":[0.75,0.25]},"up":{"uv":[7,24],"uv_size":[0.25,0.75]},"down":{"uv":[24,7.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0415,8.0394,-5.2969],"size":[0.0831,0.25,0.5938],"inflate":-0.001,"pivot":[-0.0053,8.4144,-5.2969],"rotation":[149,0,0],"uv":{"north":{"uv":[7,38],"uv_size":[0.25,0.25]},"east":{"uv":[27,17],"uv_size":[0.5,0.25]},"south":{"uv":[38,7],"uv_size":[0.25,0.25]},"west":{"uv":[18,27],"uv_size":[0.5,0.25]},"up":{"uv":[27,18],"uv_size":[0.25,0.5]},"down":{"uv":[19,27.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0469,8.1736,-1.8497],"size":[0.0938,0.5,0.125],"pivot":[0,8.1736,-1.8497],"rotation":[66.5,0,0],"uv":{"north":{"uv":[27,19],"uv_size":[0.25,0.5]},"east":{"uv":[20,27],"uv_size":[0.25,0.5]},"south":{"uv":[27,20],"uv_size":[0.25,0.5]},"west":{"uv":[21,27],"uv_size":[0.25,0.5]},"up":{"uv":[8,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0469,8.4876,-2.3833],"size":[0.0938,0.125,0.125],"pivot":[0,8.4876,-2.2583],"rotation":[81.5,0,0],"uv":{"north":{"uv":[9,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0469,8.5061,-2.507],"size":[0.0938,0.125,0.125],"pivot":[0,8.5061,-2.382],"rotation":[99,0,0],"uv":{"north":{"uv":[12,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0469,8.4865,-2.6304],"size":[0.0938,0.125,0.125],"pivot":[0,8.4865,-2.5054],"rotation":[126.5,0,0],"uv":{"north":{"uv":[15,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0522,8.4122,-2.7309],"size":[0.1044,0.125,0.125],"pivot":[0.0053,8.4122,-2.6059],"rotation":[154,0,0],"uv":{"north":{"uv":[18,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,18],"uv_size":[0.25,0.25]},"south":{"uv":[19,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,19],"uv_size":[0.25,0.25]},"up":{"uv":[20,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0522,8.2998,-2.7857],"size":[0.1044,0.125,0.125],"pivot":[0.0053,8.2998,-2.6607],"rotation":[176.5,0,0],"uv":{"north":{"uv":[21,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,21],"uv_size":[0.25,0.25]},"south":{"uv":[22,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,22],"uv_size":[0.25,0.25]},"up":{"uv":[23,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0522,8.1751,-2.7933],"size":[0.1044,0.0938,0.125],"pivot":[0.0053,8.1751,-2.6683],"rotation":[-171,0,0],"uv":{"north":{"uv":[24,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0469,7.9574,-2.6526],"size":[0.0938,0.125,0.3906],"pivot":[0,8.0824,-2.6537],"rotation":[159,0,0],"uv":{"north":{"uv":[27,38],"uv_size":[0.25,0.25]},"east":{"uv":[27,21],"uv_size":[0.5,0.25]},"south":{"uv":[38,27],"uv_size":[0.25,0.25]},"west":{"uv":[22,27],"uv_size":[0.5,0.25]},"up":{"uv":[27,22],"uv_size":[0.25,0.5]},"down":{"uv":[23,27.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0469,8.2187,-3.0126],"size":[0.0938,0.125,0.5312],"pivot":[0,8.2812,-2.997],"rotation":[170,0,0],"uv":{"north":{"uv":[28,38],"uv_size":[0.25,0.25]},"east":{"uv":[27,23],"uv_size":[0.5,0.25]},"south":{"uv":[38,28],"uv_size":[0.25,0.25]},"west":{"uv":[24,27],"uv_size":[0.5,0.25]},"up":{"uv":[27,24],"uv_size":[0.25,0.5]},"down":{"uv":[25,27.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0469,8.3055,-3.4894],"size":[0.0938,0.125,0.5156],"pivot":[0,8.368,-3.4894],"rotation":[180,0,0],"uv":{"north":{"uv":[29,38],"uv_size":[0.25,0.25]},"east":{"uv":[27,25],"uv_size":[0.5,0.25]},"south":{"uv":[38,29],"uv_size":[0.25,0.25]},"west":{"uv":[26,27],"uv_size":[0.5,0.25]},"up":{"uv":[27,26],"uv_size":[0.25,0.5]},"down":{"uv":[27,27.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0469,8.3055,-3.9894],"size":[0.0938,0.125,0.5156],"pivot":[0,8.368,-3.9894],"rotation":[-172,0,0],"uv":{"north":{"uv":[30,38],"uv_size":[0.25,0.25]},"east":{"uv":[0,28],"uv_size":[0.5,0.25]},"south":{"uv":[38,30],"uv_size":[0.25,0.25]},"west":{"uv":[28,0],"uv_size":[0.5,0.25]},"up":{"uv":[1,28],"uv_size":[0.25,0.5]},"down":{"uv":[28,1.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0469,8.2359,-4.4845],"size":[0.0938,0.125,0.2344],"pivot":[0,8.2984,-4.4845],"rotation":[-167,0,0],"uv":{"north":{"uv":[31,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0522,8.0598,-4.6988],"size":[0.1044,0.125,0.6406],"pivot":[0.0053,8.1848,-4.6988],"rotation":[159,0,0],"uv":{"north":{"uv":[34,38],"uv_size":[0.25,0.25]},"east":{"uv":[8,24],"uv_size":[0.75,0.25]},"south":{"uv":[38,34],"uv_size":[0.25,0.25]},"west":{"uv":[24,8],"uv_size":[0.75,0.25]},"up":{"uv":[9,24],"uv_size":[0.25,0.75]},"down":{"uv":[24,9.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0469,8.2894,-5.2969],"size":[0.0938,0.125,0.8906],"pivot":[0,8.4144,-5.2969],"rotation":[149,0,0],"uv":{"north":{"uv":[35,38],"uv_size":[0.25,0.25]},"east":{"uv":[22,9],"uv_size":[1,0.25]},"south":{"uv":[38,35],"uv_size":[0.25,0.25]},"west":{"uv":[10,22],"uv_size":[1,0.25]},"up":{"uv":[22,10],"uv_size":[0.25,1]},"down":{"uv":[11,23],"uv_size":[0.25,-1]}}},{"origin":[-0.0469,8.3519,-4.4063],"size":[0.0938,0.0625,0.0781],"pivot":[0,8.4144,-5.2969],"rotation":[149,0,0],"uv":{"north":{"uv":[36,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,36],"uv_size":[0.25,0.25]},"south":{"uv":[37,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,37],"uv_size":[0.25,0.25]},"up":{"uv":[38,38],"uv_size":[0.25,0.25]},"down":{"uv":[0,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0194,8.0922,-2.6544],"size":[0.0663,0.0663,0.1406],"pivot":[0.0469,8.0922,-2.5919],"rotation":[-173.6098,-6.3508,44.6451],"uv":{"north":{"uv":[39,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0194,8.0233,-2.1452],"size":[0.0663,0.5,0.0663],"pivot":[0.0469,8.2733,-2.0789],"rotation":[72.9095,16.3771,42.5227],"uv":{"north":{"uv":[2,28],"uv_size":[0.25,0.5]},"east":{"uv":[28,2],"uv_size":[0.25,0.5]},"south":{"uv":[3,28],"uv_size":[0.25,0.5]},"west":{"uv":[28,3],"uv_size":[0.25,0.5]},"up":{"uv":[39,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0194,8.3107,-2.4049],"size":[0.0663,0.125,0.0663],"pivot":[0.0469,8.3732,-2.3386],"rotation":[83.9675,5.9993,44.6836],"uv":{"north":{"uv":[39,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0194,8.3103,-2.4904],"size":[0.0663,0.125,0.0663],"pivot":[0.0469,8.3728,-2.4241],"rotation":[96.3902,-6.3508,44.6451],"uv":{"north":{"uv":[39,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0194,8.2864,-2.5476],"size":[0.0663,0.125,0.0663],"pivot":[0.0469,8.3489,-2.4813],"rotation":[117.62,-24.8727,38.7943],"uv":{"north":{"uv":[39,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0194,8.2387,-2.5873],"size":[0.0663,0.125,0.0663],"pivot":[0.0469,8.3012,-2.521],"rotation":[145.4037,-39.4603,23.6713],"uv":{"north":{"uv":[39,13],"uv_size":[0.25,0.25]},"east":{"uv":[14,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0194,8.1673,-2.606],"size":[0.0663,0.1875,0.0663],"pivot":[0.0469,8.2298,-2.5398],"rotation":[175.0564,-44.8932,3.4935],"uv":{"north":{"uv":[39,16],"uv_size":[0.25,0.25]},"east":{"uv":[17,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,17],"uv_size":[0.25,0.25]},"west":{"uv":[18,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0194,8.1529,-3.048],"size":[0.0663,0.0663,0.4062],"pivot":[0.0469,8.1529,-2.8371],"rotation":[164.8139,14.6791,43.0326],"uv":{"north":{"uv":[39,19],"uv_size":[0.25,0.25]},"east":{"uv":[4,28],"uv_size":[0.5,0.25]},"south":{"uv":[20,39],"uv_size":[0.25,0.25]},"west":{"uv":[28,4],"uv_size":[0.5,0.25]},"up":{"uv":[5,28],"uv_size":[0.25,0.5]},"down":{"uv":[28,5.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0194,8.263,-3.5197],"size":[0.0663,0.0663,0.5312],"pivot":[0.0469,8.263,-3.254],"rotation":[172.8929,7.053,44.5615],"uv":{"north":{"uv":[39,20],"uv_size":[0.25,0.25]},"east":{"uv":[6,28],"uv_size":[0.5,0.25]},"south":{"uv":[21,39],"uv_size":[0.25,0.25]},"west":{"uv":[28,6],"uv_size":[0.5,0.25]},"up":{"uv":[7,28],"uv_size":[0.25,0.5]},"down":{"uv":[28,7.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0194,8.3055,-4.005],"size":[0.0663,0.0663,0.5156],"pivot":[0.0469,8.3055,-3.7472],"rotation":[180,0,45],"uv":{"north":{"uv":[39,21],"uv_size":[0.25,0.25]},"east":{"uv":[8,28],"uv_size":[0.5,0.25]},"south":{"uv":[22,39],"uv_size":[0.25,0.25]},"west":{"uv":[28,8],"uv_size":[0.5,0.25]},"up":{"uv":[9,28],"uv_size":[0.25,0.5]},"down":{"uv":[28,9.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0194,8.2702,-4.4938],"size":[0.0663,0.0663,0.5156],"pivot":[0.0469,8.2702,-4.236],"rotation":[-174.3247,-5.6476,44.7198],"uv":{"north":{"uv":[39,22],"uv_size":[0.25,0.25]},"east":{"uv":[10,28],"uv_size":[0.5,0.25]},"south":{"uv":[23,39],"uv_size":[0.25,0.25]},"west":{"uv":[28,10],"uv_size":[0.5,0.25]},"up":{"uv":[11,28],"uv_size":[0.25,0.5]},"down":{"uv":[28,11.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0194,8.2112,-4.7019],"size":[0.0663,0.0663,0.25],"pivot":[0.0469,8.2112,-4.5847],"rotation":[-170.7283,-9.1526,44.2563],"uv":{"north":{"uv":[39,23],"uv_size":[0.25,0.25]},"east":{"uv":[24,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,24],"uv_size":[0.25,0.25]},"west":{"uv":[25,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0194,8.2996,-5.3338],"size":[0.0663,0.0663,0.6719],"pivot":[0.0469,8.2996,-4.9979],"rotation":[164.8139,14.6791,43.0326],"uv":{"north":{"uv":[39,26],"uv_size":[0.25,0.25]},"east":{"uv":[10,24],"uv_size":[0.75,0.25]},"south":{"uv":[27,39],"uv_size":[0.25,0.25]},"west":{"uv":[24,10],"uv_size":[0.75,0.25]},"up":{"uv":[11,24],"uv_size":[0.25,0.75]},"down":{"uv":[24,11.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0194,8.6437,-6.1239],"size":[0.0663,0.0663,0.9688],"pivot":[0.0469,8.6437,-5.6786],"rotation":[156.9807,21.3575,40.6021],"uv":{"north":{"uv":[39,27],"uv_size":[0.25,0.25]},"east":{"uv":[22,11],"uv_size":[1,0.25]},"south":{"uv":[28,39],"uv_size":[0.25,0.25]},"west":{"uv":[12,22],"uv_size":[1,0.25]},"up":{"uv":[22,12],"uv_size":[0.25,1]},"down":{"uv":[13,23],"uv_size":[0.25,-1]}}},{"origin":[-0.0987,8.2129,-2.5637],"size":[0.1974,0.875,0.3906],"inflate":-0.001,"pivot":[-0.0419,8.9629,-2.5637],"rotation":[45.5,0,0],"uv":{"north":{"uv":[14,22],"uv_size":[0.25,1]},"east":{"uv":[4,12],"uv_size":[0.5,1]},"south":{"uv":[22,14],"uv_size":[0.25,1]},"west":{"uv":[5,12],"uv_size":[0.5,1]},"up":{"uv":[12,28],"uv_size":[0.25,0.5]},"down":{"uv":[28,12.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0469,10.3704,-4.6105],"size":[0.0938,0.125,0.0469],"inflate":0.001,"pivot":[-0.0312,8.9798,-4.6105],"rotation":[92.5,0,0],"uv":{"north":{"uv":[39,28],"uv_size":[0.25,0.25]},"east":{"uv":[29,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,29],"uv_size":[0.25,0.25]},"west":{"uv":[30,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0156,7.4215,-6.1492],"size":[0.0625,1.5156,0.0469],"inflate":0.001,"pivot":[0.0469,8.9371,-6.1257],"rotation":[92.1305,2.8215,-7.893],"uv":{"north":{"uv":[12,15],"uv_size":[0.25,1.5]},"east":{"uv":[15,12],"uv_size":[0.25,1.5]},"south":{"uv":[13,15],"uv_size":[0.25,1.5]},"west":{"uv":[14,15],"uv_size":[0.25,1.5]},"up":{"uv":[39,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1081,9.3559,-5.8981],"size":[0.0156,0.0469,0.0625],"inflate":0.001,"pivot":[-0.1081,9.3169,-3.3356],"rotation":[9.0135,-2.8613,11.4856],"uv":{"north":{"uv":[39,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0469,7.4215,-6.1492],"size":[0.0625,1.5156,0.0469],"inflate":0.001,"pivot":[-0.0469,8.9371,-6.1257],"rotation":[92.1305,-2.8215,7.893],"uv":{"north":{"uv":[15,14],"uv_size":[0.25,1.5]},"east":{"uv":[0,16],"uv_size":[0.25,1.5]},"south":{"uv":[16,0],"uv_size":[0.25,1.5]},"west":{"uv":[16,2],"uv_size":[0.25,1.5]},"up":{"uv":[39,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1081,9.3403,-5.8356],"size":[0.0156,0.0625,0.3906],"inflate":0.001,"pivot":[-0.1081,9.3169,-3.3356],"rotation":[9.0135,-2.8613,11.4856],"uv":{"north":{"uv":[39,36],"uv_size":[0.25,0.25]},"east":{"uv":[13,28],"uv_size":[0.5,0.25]},"south":{"uv":[37,39],"uv_size":[0.25,0.25]},"west":{"uv":[28,13],"uv_size":[0.5,0.25]},"up":{"uv":[14,28],"uv_size":[0.25,0.5]},"down":{"uv":[28,14.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0469,8.9341,-6.1247],"size":[0.0625,0.0312,2.8125],"inflate":0.001,"pivot":[-0.0469,8.9497,-6.1247],"rotation":[9.2514,-1.237,-0.1608],"uv":{"north":{"uv":[39,37],"uv_size":[0.25,0.25]},"east":{"uv":[9,5],"uv_size":[2.75,0.25]},"south":{"uv":[38,39],"uv_size":[0.25,0.25]},"west":{"uv":[9,6],"uv_size":[2.75,0.25]},"up":{"uv":[9,7],"uv_size":[0.25,2.75]},"down":{"uv":[8,11.75],"uv_size":[0.25,-2.75]}}},{"origin":[-0.1081,9.2934,-5.445],"size":[0.0156,0.1094,0.3594],"inflate":0.001,"pivot":[-0.1081,9.3169,-3.3356],"rotation":[9.0135,-2.8613,11.4856],"uv":{"north":{"uv":[39,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,39],"uv_size":[0.25,0.25]},"south":{"uv":[0,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1081,9.2466,-5.0856],"size":[0.0156,0.1562,1.75],"inflate":0.001,"pivot":[-0.1081,9.3169,-3.3356],"rotation":[9.0135,-2.8613,11.4856],"uv":{"north":{"uv":[2,40],"uv_size":[0.25,0.25]},"east":{"uv":[14,0],"uv_size":[1.75,0.25]},"south":{"uv":[40,2],"uv_size":[0.25,0.25]},"west":{"uv":[1,14],"uv_size":[1.75,0.25]},"up":{"uv":[14,1],"uv_size":[0.25,1.75]},"down":{"uv":[3,15.75],"uv_size":[0.25,-1.75]}}},{"origin":[-0.2372,9.3906,-2.8281],"size":[0.4744,0.0625,0.7969],"pivot":[0.0341,9.4531,-2.0312],"rotation":[11.25,0,0],"uv":{"north":{"uv":[35,19],"uv_size":[0.5,0.25]},"east":{"uv":[27,8],"uv_size":[0.75,0.25]},"south":{"uv":[20,35],"uv_size":[0.5,0.25]},"west":{"uv":[9,27],"uv_size":[0.75,0.25]},"up":{"uv":[10,19],"uv_size":[0.5,0.75]},"down":{"uv":[19,10.75],"uv_size":[0.5,-0.75]}}},{"origin":[-0.2212,9.2551,-2.5133],"size":[0.4425,0.0608,0.107],"pivot":[0.0181,9.4531,-2.0312],"rotation":[11.25,0,0],"uv":{"north":{"uv":[15,28],"uv_size":[0.5,0.25]},"east":{"uv":[3,40],"uv_size":[0.25,0.25]},"south":{"uv":[28,15],"uv_size":[0.5,0.25]},"west":{"uv":[40,3],"uv_size":[0.25,0.25]},"up":{"uv":[16,28],"uv_size":[0.5,0.25]},"down":{"uv":[28,16.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2159,9.3176,-2.732],"size":[0.4318,0.073,0.3468],"pivot":[0.0128,9.4531,-2.0312],"rotation":[11.25,0,0],"uv":{"north":{"uv":[17,28],"uv_size":[0.5,0.25]},"east":{"uv":[4,40],"uv_size":[0.25,0.25]},"south":{"uv":[28,17],"uv_size":[0.5,0.25]},"west":{"uv":[40,4],"uv_size":[0.25,0.25]},"up":{"uv":[18,28],"uv_size":[0.5,0.25]},"down":{"uv":[28,18.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2212,9.1858,-2.4214],"size":[0.4425,0.125,0.061],"pivot":[0.0181,9.1858,-2.3604],"rotation":[-36.25,0,0],"uv":{"north":{"uv":[19,28],"uv_size":[0.5,0.25]},"east":{"uv":[5,40],"uv_size":[0.25,0.25]},"south":{"uv":[28,19],"uv_size":[0.5,0.25]},"west":{"uv":[40,5],"uv_size":[0.25,0.25]},"up":{"uv":[20,28],"uv_size":[0.5,0.25]},"down":{"uv":[28,20.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2212,9.2241,-2.3646],"size":[0.4425,0.125,0.0781],"pivot":[0.0181,9.2866,-2.2865],"rotation":[-56.25,0,0],"uv":{"north":{"uv":[21,28],"uv_size":[0.5,0.25]},"east":{"uv":[6,40],"uv_size":[0.25,0.25]},"south":{"uv":[28,21],"uv_size":[0.5,0.25]},"west":{"uv":[40,6],"uv_size":[0.25,0.25]},"up":{"uv":[22,28],"uv_size":[0.5,0.25]},"down":{"uv":[28,22.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2212,9.2588,-2.2617],"size":[0.4425,0.2876,0.0271],"pivot":[0.0181,9.3213,-2.2345],"rotation":[-78.75,0,0],"uv":{"north":{"uv":[23,28],"uv_size":[0.5,0.25]},"east":{"uv":[7,40],"uv_size":[0.25,0.25]},"south":{"uv":[28,23],"uv_size":[0.5,0.25]},"west":{"uv":[40,7],"uv_size":[0.25,0.25]},"up":{"uv":[24,28],"uv_size":[0.5,0.25]},"down":{"uv":[28,24.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2319,9.2364,-2.8006],"size":[0.4638,0.0625,0.1875],"pivot":[0.0288,9.2364,-2.8006],"rotation":[-28.75,0,0],"uv":{"north":{"uv":[25,28],"uv_size":[0.5,0.25]},"east":{"uv":[8,40],"uv_size":[0.25,0.25]},"south":{"uv":[28,25],"uv_size":[0.5,0.25]},"west":{"uv":[40,8],"uv_size":[0.25,0.25]},"up":{"uv":[26,28],"uv_size":[0.5,0.25]},"down":{"uv":[28,26.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2266,9.1462,-2.6362],"size":[0.4531,0.0625,0.1719],"pivot":[0.0234,9.1462,-2.6362],"rotation":[6.25,0,0],"uv":{"north":{"uv":[27,28],"uv_size":[0.5,0.25]},"east":{"uv":[9,40],"uv_size":[0.25,0.25]},"south":{"uv":[28,27],"uv_size":[0.5,0.25]},"west":{"uv":[40,9],"uv_size":[0.25,0.25]},"up":{"uv":[28,28],"uv_size":[0.5,0.25]},"down":{"uv":[0,29.25],"uv_size":[0.5,-0.25]}}}]},{"name":"hexadecagon","parent":"blade","pivot":[-0.0156,8.6719,-1.25],"cubes":[{"origin":[-0.0938,8.5165,-2.0312],"size":[0.2031,0.3108,1.5625],"pivot":[-0.0156,8.6719,-1.25],"rotation":[45,0,0],"uv":{"north":{"uv":[10,40],"uv_size":[0.25,0.25]},"east":{"uv":[3,16],"uv_size":[1.5,0.25]},"south":{"uv":[40,10],"uv_size":[0.25,0.25]},"west":{"uv":[16,4],"uv_size":[1.5,0.25]},"up":{"uv":[5,16],"uv_size":[0.25,1.5]},"down":{"uv":[16,6.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.1044,8.5165,-2.0312],"size":[0.2138,0.3108,1.5625],"pivot":[-0.0156,8.6719,-1.25],"rotation":[22.5,0,0],"uv":{"north":{"uv":[11,40],"uv_size":[0.25,0.25]},"east":{"uv":[6,16],"uv_size":[1.5,0.25]},"south":{"uv":[40,11],"uv_size":[0.25,0.25]},"west":{"uv":[16,7],"uv_size":[1.5,0.25]},"up":{"uv":[8,16],"uv_size":[0.25,1.5]},"down":{"uv":[16,9.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.0938,9.1144,-0.7127],"size":[0.2031,0.2656,0.125],"pivot":[0.0078,9.1144,-0.5877],"rotation":[22.5,0,0],"uv":{"north":{"uv":[12,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0938,9.3598,-0.8143],"size":[0.2031,0.2656,0.125],"pivot":[0.0078,9.3598,-0.6893],"rotation":[57.5,0,0],"uv":{"north":{"uv":[15,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0938,9.6255,-0.8143],"size":[0.2031,0.0625,0.1875],"pivot":[0.0078,9.3598,-0.6893],"rotation":[57.5,0,0],"uv":{"north":{"uv":[18,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,18],"uv_size":[0.25,0.25]},"south":{"uv":[19,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,19],"uv_size":[0.25,0.25]},"up":{"uv":[20,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0938,9.2299,-0.6355],"size":[0.2031,0.1094,0.0625],"pivot":[0.0078,9.2299,-0.6355],"rotation":[67.5,0,0],"uv":{"north":{"uv":[21,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,21],"uv_size":[0.25,0.25]},"south":{"uv":[22,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,22],"uv_size":[0.25,0.25]},"up":{"uv":[23,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0938,9.2732,-0.6801],"size":[0.2031,0.1094,0.4375],"pivot":[0.0078,9.2732,-0.6176],"rotation":[36.75,0,0],"uv":{"north":{"uv":[24,40],"uv_size":[0.25,0.25]},"east":{"uv":[29,0],"uv_size":[0.5,0.25]},"south":{"uv":[40,24],"uv_size":[0.25,0.25]},"west":{"uv":[1,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,1],"uv_size":[0.25,0.5]},"down":{"uv":[2,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0938,9.4976,-0.3171],"size":[0.2031,0.0625,0.0312],"pivot":[0.0078,9.4976,-0.3171],"rotation":[69.25,0,0],"uv":{"north":{"uv":[25,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0938,9.5268,-0.306],"size":[0.2031,0.0625,0.25],"pivot":[0.0078,9.5268,-0.306],"rotation":[101.5,0,0],"uv":{"north":{"uv":[28,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0938,8.5165,-2.0312],"size":[0.2031,0.3108,1.5625],"uv":{"north":{"uv":[31,40],"uv_size":[0.25,0.25]},"east":{"uv":[9,16],"uv_size":[1.5,0.25]},"south":{"uv":[40,31],"uv_size":[0.25,0.25]},"west":{"uv":[16,10],"uv_size":[1.5,0.25]},"up":{"uv":[16,11],"uv_size":[0.25,1.5]},"down":{"uv":[16,14.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.0938,8.5165,-2.0312],"size":[0.2031,0.3108,1.5625],"pivot":[-0.0156,8.6719,-1.25],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[32,40],"uv_size":[0.25,0.25]},"east":{"uv":[15,16],"uv_size":[1.5,0.25]},"south":{"uv":[40,32],"uv_size":[0.25,0.25]},"west":{"uv":[16,15],"uv_size":[1.5,0.25]},"up":{"uv":[17,0],"uv_size":[0.25,1.5]},"down":{"uv":[1,18.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.0938,8.5165,-2.0312],"size":[0.2031,0.3215,1.5625],"pivot":[-0.0156,8.6719,-1.25],"rotation":[-45,0,0],"uv":{"north":{"uv":[33,40],"uv_size":[0.25,0.25]},"east":{"uv":[2,17],"uv_size":[1.5,0.25]},"south":{"uv":[40,33],"uv_size":[0.25,0.25]},"west":{"uv":[17,2],"uv_size":[1.5,0.25]},"up":{"uv":[4,17],"uv_size":[0.25,1.5]},"down":{"uv":[17,6.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.0938,7.8906,-1.4054],"size":[0.2031,1.5625,0.3108],"pivot":[-0.0156,8.6719,-1.25],"rotation":[22.5,0,0],"uv":{"north":{"uv":[6,17],"uv_size":[0.25,1.5]},"east":{"uv":[7,17],"uv_size":[0.25,1.5]},"south":{"uv":[17,8],"uv_size":[0.25,1.5]},"west":{"uv":[9,17],"uv_size":[0.25,1.5]},"up":{"uv":[34,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0938,7.8906,-1.4054],"size":[0.2031,1.5625,0.3108],"uv":{"north":{"uv":[10,17],"uv_size":[0.25,1.5]},"east":{"uv":[11,17],"uv_size":[0.25,1.5]},"south":{"uv":[17,11],"uv_size":[0.25,1.5]},"west":{"uv":[12,17],"uv_size":[0.25,1.5]},"up":{"uv":[35,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1016,7.8906,-1.4054],"size":[0.2031,1.5625,0.3108],"pivot":[-0.0234,8.6719,-1.25],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[13,17],"uv_size":[0.25,1.5]},"east":{"uv":[17,13],"uv_size":[0.25,1.5]},"south":{"uv":[14,17],"uv_size":[0.25,1.5]},"west":{"uv":[15,17],"uv_size":[0.25,1.5]},"up":{"uv":[36,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,36.25],"uv_size":[0.25,-0.25]}}}]},{"name":"body","parent":"weapon","pivot":[-0.3594,8.5947,2.0498],"cubes":[{"origin":[-0.4062,7.8759,1.5029],"size":[0.0938,0.0625,0.3125],"pivot":[-0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[37,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,7.9384,1.2529],"size":[0.0938,0.125,0.9375],"pivot":[-0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[40,40],"uv_size":[0.25,0.25]},"east":{"uv":[15,22],"uv_size":[1,0.25]},"south":{"uv":[0,41],"uv_size":[0.25,0.25]},"west":{"uv":[22,15],"uv_size":[1,0.25]},"up":{"uv":[16,22],"uv_size":[0.25,1]},"down":{"uv":[22,17],"uv_size":[0.25,-1]}}},{"origin":[-0.4062,8.0634,1.0029],"size":[0.0938,0.1875,1.4375],"pivot":[-0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[41,0],"uv_size":[0.25,0.25]},"east":{"uv":[17,3],"uv_size":[1.5,0.25]},"south":{"uv":[1,41],"uv_size":[0.25,0.25]},"west":{"uv":[16,17],"uv_size":[1.5,0.25]},"up":{"uv":[0,18],"uv_size":[0.25,1.5]},"down":{"uv":[18,1.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.4062,8.2509,2.4404],"size":[0.0938,0.375,0.5625],"pivot":[-0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[29,2],"uv_size":[0.25,0.5]},"east":{"uv":[17,22],"uv_size":[0.5,0.5]},"south":{"uv":[3,29],"uv_size":[0.25,0.5]},"west":{"uv":[22,17],"uv_size":[0.5,0.5]},"up":{"uv":[29,3],"uv_size":[0.25,0.5]},"down":{"uv":[4,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4062,8.6259,1.2373],"size":[0.0938,0.0625,0.25],"pivot":[-0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[41,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.6259,1.0029],"size":[0.0938,0.1875,0.2344],"pivot":[-0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[41,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.4853,0.3154],"size":[0.0938,0.2188,0.125],"pivot":[-0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[41,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.3603,0.4404],"size":[0.0938,0.4062,0.1875],"pivot":[-0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[29,4],"uv_size":[0.25,0.5]},"east":{"uv":[5,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,5],"uv_size":[0.25,0.5]},"west":{"uv":[6,29],"uv_size":[0.25,0.5]},"up":{"uv":[41,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.2665,0.6279],"size":[0.0938,0.5781,0.1875],"pivot":[-0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[29,6],"uv_size":[0.25,0.5]},"east":{"uv":[7,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,7],"uv_size":[0.25,0.5]},"west":{"uv":[8,29],"uv_size":[0.25,0.5]},"up":{"uv":[41,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.1572,0.8154],"size":[0.0938,0.7188,0.1875],"pivot":[-0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[12,24],"uv_size":[0.25,0.75]},"east":{"uv":[24,12],"uv_size":[0.25,0.75]},"south":{"uv":[13,24],"uv_size":[0.25,0.75]},"west":{"uv":[24,13],"uv_size":[0.25,0.75]},"up":{"uv":[41,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.2509,1.0029],"size":[0.0938,0.375,1.4375],"pivot":[-0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[29,8],"uv_size":[0.25,0.5]},"east":{"uv":[8,0],"uv_size":[1.5,0.5]},"south":{"uv":[9,29],"uv_size":[0.25,0.5]},"west":{"uv":[1,8],"uv_size":[1.5,0.5]},"up":{"uv":[2,18],"uv_size":[0.25,1.5]},"down":{"uv":[3,19.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.4062,8.3134,3.0029],"size":[0.0938,0.3438,0.25],"inflate":-0.001,"pivot":[-0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[41,13],"uv_size":[0.25,0.25]},"east":{"uv":[14,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.2095,1.6389],"size":[0.0938,0.1172,0.0664],"pivot":[0.0312,9.2017,1.6429],"rotation":[33.75,0,0],"uv":{"north":{"uv":[41,16],"uv_size":[0.25,0.25]},"east":{"uv":[17,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,17],"uv_size":[0.25,0.25]},"west":{"uv":[18,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.2797,1.5908],"size":[0.0938,0.0938,0.0625],"pivot":[0.0312,9.2797,1.5908],"rotation":[61.25,0,0],"uv":{"north":{"uv":[41,19],"uv_size":[0.25,0.25]},"east":{"uv":[20,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,20],"uv_size":[0.25,0.25]},"west":{"uv":[21,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.2793,1.2701],"size":[0.0938,0.0938,0.0625],"pivot":[0.0312,9.2793,1.3326],"rotation":[-61.25,0,0],"uv":{"north":{"uv":[41,22],"uv_size":[0.25,0.25]},"east":{"uv":[23,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,23],"uv_size":[0.25,0.25]},"west":{"uv":[24,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.1076,1.2024],"size":[0.0938,0.125,0.0781],"pivot":[-0.3594,9.2013,1.2806],"rotation":[-3.75,0,0],"uv":{"north":{"uv":[41,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.1857,1.2024],"size":[0.0938,0.1406,0.0781],"pivot":[0.0312,9.2013,1.2806],"rotation":[-33.75,0,0],"uv":{"north":{"uv":[41,28],"uv_size":[0.25,0.25]},"east":{"uv":[29,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,29],"uv_size":[0.25,0.25]},"west":{"uv":[30,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.5489,2.2375],"size":[0.0938,0.0686,0.0312],"pivot":[0.0312,9.4864,2.3156],"rotation":[74.75,0,0],"uv":{"north":{"uv":[41,31],"uv_size":[0.25,0.25]},"east":{"uv":[32,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,32],"uv_size":[0.25,0.25]},"west":{"uv":[33,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.4864,2.2687],"size":[0.0938,0.1311,0.0476],"pivot":[0.0312,9.4864,2.3156],"rotation":[74.75,0,0],"uv":{"north":{"uv":[41,34],"uv_size":[0.25,0.25]},"east":{"uv":[35,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,35],"uv_size":[0.25,0.25]},"west":{"uv":[36,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.3968,2.1975],"size":[0.0938,0.0469,0.1406],"pivot":[0.0312,9.3968,2.1975],"rotation":[18.75,0,0],"uv":{"north":{"uv":[41,37],"uv_size":[0.25,0.25]},"east":{"uv":[38,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,38],"uv_size":[0.25,0.25]},"west":{"uv":[39,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,39],"uv_size":[0.25,0.25]},"down":{"uv":[40,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.3968,1.6038],"size":[0.0938,0.125,0.5938],"pivot":[0.0312,9.3968,2.1975],"rotation":[18.75,0,0],"uv":{"north":{"uv":[41,40],"uv_size":[0.25,0.25]},"east":{"uv":[29,9],"uv_size":[0.5,0.25]},"south":{"uv":[41,41],"uv_size":[0.25,0.25]},"west":{"uv":[10,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,10],"uv_size":[0.25,0.5]},"down":{"uv":[11,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4062,9.3731,1.8307],"size":[0.0938,0.125,0.3594],"pivot":[0.0312,9.4981,1.8307],"rotation":[3.75,0,0],"uv":{"north":{"uv":[0,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,0],"uv_size":[0.25,0.25]},"south":{"uv":[1,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,1],"uv_size":[0.25,0.25]},"up":{"uv":[2,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.3272,1.551],"size":[0.0938,0.1304,0.2828],"pivot":[0.0312,9.4577,1.5682],"rotation":[8.75,0,0],"uv":{"north":{"uv":[3,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.3078,1.2752],"size":[0.0938,0.1316,0.2932],"pivot":[0.0312,9.4393,0.7284],"rotation":[1.25,0,0],"uv":{"north":{"uv":[6,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.1893,0.7284],"size":[0.0938,0.125,0.5469],"inflate":-0.001,"pivot":[0.0312,9.4393,0.7284],"rotation":[1.25,0,0],"uv":{"north":{"uv":[9,42],"uv_size":[0.25,0.25]},"east":{"uv":[29,11],"uv_size":[0.5,0.25]},"south":{"uv":[42,9],"uv_size":[0.25,0.25]},"west":{"uv":[12,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,12],"uv_size":[0.25,0.5]},"down":{"uv":[13,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4062,9.3143,0.7284],"size":[0.0938,0.125,0.5469],"pivot":[0.0312,9.4393,0.7284],"rotation":[1.25,0,0],"uv":{"north":{"uv":[10,42],"uv_size":[0.25,0.25]},"east":{"uv":[29,13],"uv_size":[0.5,0.25]},"south":{"uv":[42,10],"uv_size":[0.25,0.25]},"west":{"uv":[14,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,14],"uv_size":[0.25,0.5]},"down":{"uv":[15,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4147,9.4571,1.8307],"size":[0.0084,0.0409,0.3594],"pivot":[-0.0625,9.4981,1.8307],"rotation":[3.75,0,0],"uv":{"north":{"uv":[53,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,53],"uv_size":[0.25,0.25]},"south":{"uv":[53,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,53],"uv_size":[0.25,0.25]},"up":{"uv":[53,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4147,9.3968,2.3042],"size":[0.0084,0.0469,0.034],"pivot":[-0.0625,9.3968,2.1975],"rotation":[18.75,0,0],"uv":{"north":{"uv":[53,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,53],"uv_size":[0.25,0.25]},"south":{"uv":[53,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,53],"uv_size":[0.25,0.25]},"up":{"uv":[53,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4147,9.4864,2.2776],"size":[0.0084,0.1311,0.0387],"pivot":[-0.0625,9.4864,2.3156],"rotation":[74.75,0,0],"uv":{"north":{"uv":[53,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,53],"uv_size":[0.25,0.25]},"south":{"uv":[53,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,53],"uv_size":[0.25,0.25]},"up":{"uv":[53,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4147,9.4166,1.551],"size":[0.0084,0.0411,0.2828],"pivot":[-0.0625,9.4577,1.5682],"rotation":[8.75,0,0],"uv":{"north":{"uv":[53,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,53],"uv_size":[0.25,0.25]},"south":{"uv":[53,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,53],"uv_size":[0.25,0.25]},"up":{"uv":[53,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4147,9.3971,1.2752],"size":[0.0084,0.0422,0.2932],"pivot":[-0.0625,9.4393,0.7284],"rotation":[1.25,0,0],"uv":{"north":{"uv":[53,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,53],"uv_size":[0.25,0.25]},"south":{"uv":[53,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,53],"uv_size":[0.25,0.25]},"up":{"uv":[53,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4147,9.3971,0.7284],"size":[0.0084,0.0422,0.5469],"pivot":[-0.0625,9.4393,0.7284],"rotation":[1.25,0,0],"uv":{"north":{"uv":[53,14],"uv_size":[0.25,0.25]},"east":{"uv":[35,17],"uv_size":[0.5,0.25]},"south":{"uv":[15,53],"uv_size":[0.25,0.25]},"west":{"uv":[18,35],"uv_size":[0.5,0.25]},"up":{"uv":[35,18],"uv_size":[0.25,0.5]},"down":{"uv":[19,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4062,8.5511,-0.7216],"size":[0.0938,0.0625,0.0781],"pivot":[-0.3594,8.5511,-0.7216],"rotation":[-84,0,0],"uv":{"north":{"uv":[11,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,11],"uv_size":[0.25,0.25]},"south":{"uv":[12,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,12],"uv_size":[0.25,0.25]},"up":{"uv":[13,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.8937,-0.569],"size":[0.0938,0.125,0.375],"pivot":[-0.3594,8.8937,-0.569],"rotation":[-114,0,0],"uv":{"north":{"uv":[14,42],"uv_size":[0.25,0.25]},"east":{"uv":[29,15],"uv_size":[0.5,0.25]},"south":{"uv":[42,14],"uv_size":[0.25,0.25]},"west":{"uv":[16,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,16],"uv_size":[0.25,0.5]},"down":{"uv":[17,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4062,8.8339,0.3775],"size":[0.0938,0.8281,0.125],"pivot":[-0.3594,8.8339,0.5025],"rotation":[-71.5,0,0],"uv":{"north":{"uv":[14,24],"uv_size":[0.25,0.75]},"east":{"uv":[24,14],"uv_size":[0.25,0.75]},"south":{"uv":[15,24],"uv_size":[0.25,0.75]},"west":{"uv":[24,15],"uv_size":[0.25,0.75]},"up":{"uv":[15,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.9448,0.3359],"size":[0.0938,0.1562,0.125],"pivot":[-0.3594,8.9448,0.3359],"rotation":[-85,0,0],"uv":{"north":{"uv":[16,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.3805,-0.6969],"size":[0.0938,0.0781,0.0625],"pivot":[-0.3594,8.4586,-0.6344],"rotation":[-100,0,0],"uv":{"north":{"uv":[19,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.4727,-0.5229],"size":[0.0938,0.0469,0.1094],"inflate":-0.001,"pivot":[-0.3594,8.6055,-0.4135],"rotation":[-70,0,0],"uv":{"north":{"uv":[22,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.5196,-0.6635],"size":[0.0938,1.7969,0.25],"inflate":-0.001,"pivot":[-0.3594,8.6055,-0.4135],"rotation":[-70,0,0],"uv":{"north":{"uv":[14,3],"uv_size":[0.25,1.75]},"east":{"uv":[4,14],"uv_size":[0.25,1.75]},"south":{"uv":[5,14],"uv_size":[0.25,1.75]},"west":{"uv":[14,5],"uv_size":[0.25,1.75]},"up":{"uv":[25,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.3477,-0.476],"size":[0.0938,1.0781,0.125],"pivot":[-0.3594,8.6055,-0.4135],"rotation":[-70,0,0],"uv":{"north":{"uv":[18,22],"uv_size":[0.25,1]},"east":{"uv":[19,22],"uv_size":[0.25,1]},"south":{"uv":[22,19],"uv_size":[0.25,1]},"west":{"uv":[22,20],"uv_size":[0.25,1]},"up":{"uv":[26,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.7199,-0.3427],"size":[0.0938,0.2969,0.125],"pivot":[-0.3594,8.9543,-0.3427],"rotation":[-75,0,0],"uv":{"north":{"uv":[27,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,27],"uv_size":[0.25,0.25]},"south":{"uv":[28,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,28],"uv_size":[0.25,0.25]},"up":{"uv":[29,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.8949,-0.2958],"size":[0.0938,0.2031,0.125],"pivot":[-0.3594,9.0355,-0.2958],"rotation":[-30,0,0],"uv":{"north":{"uv":[30,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,30],"uv_size":[0.25,0.25]},"south":{"uv":[31,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,31],"uv_size":[0.25,0.25]},"up":{"uv":[32,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,32.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.111,-0.316],"size":[0.0938,0.0416,0.0216],"pivot":[-0.3594,9.111,-0.316],"rotation":[42.5,0,0],"uv":{"north":{"uv":[33,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,33],"uv_size":[0.25,0.25]},"south":{"uv":[34,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,34],"uv_size":[0.25,0.25]},"up":{"uv":[35,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.9844,-0.3281],"size":[0.0938,0.1719,0.125],"pivot":[0.0312,9.1562,-0.3281],"rotation":[15,0,0],"uv":{"north":{"uv":[36,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,36],"uv_size":[0.25,0.25]},"south":{"uv":[37,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,37],"uv_size":[0.25,0.25]},"up":{"uv":[38,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,38.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.9062,-0.3281],"size":[0.0938,0.125,1.0938],"inflate":-0.001,"pivot":[0.0312,9.1562,-0.3281],"rotation":[15,0,0],"uv":{"north":{"uv":[39,42],"uv_size":[0.25,0.25]},"east":{"uv":[21,22],"uv_size":[1,0.25]},"south":{"uv":[42,39],"uv_size":[0.25,0.25]},"west":{"uv":[22,22],"uv_size":[1,0.25]},"up":{"uv":[0,23],"uv_size":[0.25,1]},"down":{"uv":[23,1],"uv_size":[0.25,-1]}}},{"origin":[-0.4062,9.0312,-0.2031],"size":[0.0938,0.125,0.9688],"pivot":[0.0312,9.1562,-0.3281],"rotation":[15,0,0],"uv":{"north":{"uv":[40,42],"uv_size":[0.25,0.25]},"east":{"uv":[1,23],"uv_size":[1,0.25]},"south":{"uv":[42,40],"uv_size":[0.25,0.25]},"west":{"uv":[23,1],"uv_size":[1,0.25]},"up":{"uv":[23,2],"uv_size":[0.25,1]},"down":{"uv":[3,24],"uv_size":[0.25,-1]}}},{"origin":[-0.4062,8.8164,1.208],"size":[0.0938,0.125,0.125],"inflate":0.001,"pivot":[-0.3594,8.9994,1.4818],"rotation":[173.75,0,0],"uv":{"north":{"uv":[41,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,42],"uv_size":[0.25,0.25]},"west":{"uv":[0,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.8164,1.2726],"size":[0.0938,0.1562,0.125],"inflate":0.001,"pivot":[-0.3594,8.9994,1.4818],"rotation":[143.75,0,0],"uv":{"north":{"uv":[43,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.8778,1.3089],"size":[0.0938,0.1562,0.125],"inflate":0.001,"pivot":[-0.3594,8.9994,1.4818],"rotation":[116.25,0,0],"uv":{"north":{"uv":[43,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.0419,1.4351],"size":[0.0938,0.125,0.1525],"inflate":0.001,"pivot":[-0.3594,8.9994,1.4818],"rotation":[178.75,0,0],"uv":{"north":{"uv":[43,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.7845,1.0612],"size":[0.0938,0.125,0.6682],"inflate":0.001,"pivot":[-0.3594,8.8972,1.2077],"rotation":[-161.25,0,0],"uv":{"north":{"uv":[43,10],"uv_size":[0.25,0.25]},"east":{"uv":[16,24],"uv_size":[0.75,0.25]},"south":{"uv":[11,43],"uv_size":[0.25,0.25]},"west":{"uv":[24,16],"uv_size":[0.75,0.25]},"up":{"uv":[17,24],"uv_size":[0.25,0.75]},"down":{"uv":[24,17.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.4062,8.6426,0.5949],"size":[0.0938,0.3659,0.125],"inflate":0.001,"pivot":[-0.3594,8.7116,0.7199],"rotation":[180,0,0],"uv":{"north":{"uv":[43,11],"uv_size":[0.25,0.25]},"east":{"uv":[12,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.2897,0.3449],"size":[0.0938,0.125,0.5],"inflate":0.001,"pivot":[-0.3594,8.4147,0.8449],"rotation":[-167.5,0,0],"uv":{"north":{"uv":[43,14],"uv_size":[0.25,0.25]},"east":{"uv":[29,17],"uv_size":[0.5,0.25]},"south":{"uv":[15,43],"uv_size":[0.25,0.25]},"west":{"uv":[18,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,18],"uv_size":[0.25,0.5]},"down":{"uv":[19,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4062,8.645,0.806],"size":[0.0938,0.125,0.5],"inflate":0.001,"pivot":[-0.3594,8.645,1.306],"rotation":[-176.5,0,0],"uv":{"north":{"uv":[43,15],"uv_size":[0.25,0.25]},"east":{"uv":[29,19],"uv_size":[0.5,0.25]},"south":{"uv":[16,43],"uv_size":[0.25,0.25]},"west":{"uv":[20,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,20],"uv_size":[0.25,0.5]},"down":{"uv":[21,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4062,8.6755,1.3051],"size":[0.0938,0.125,0.5],"inflate":0.001,"pivot":[-0.3594,8.6755,1.8051],"rotation":[175.75,0,0],"uv":{"north":{"uv":[43,16],"uv_size":[0.25,0.25]},"east":{"uv":[29,21],"uv_size":[0.5,0.25]},"south":{"uv":[17,43],"uv_size":[0.25,0.25]},"west":{"uv":[22,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,22],"uv_size":[0.25,0.5]},"down":{"uv":[23,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4062,8.6385,1.8037],"size":[0.0938,0.125,0.5],"inflate":0.001,"pivot":[-0.3594,8.6385,2.3037],"rotation":[167.5,0,0],"uv":{"north":{"uv":[43,17],"uv_size":[0.25,0.25]},"east":{"uv":[29,23],"uv_size":[0.5,0.25]},"south":{"uv":[18,43],"uv_size":[0.25,0.25]},"west":{"uv":[24,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,24],"uv_size":[0.25,0.5]},"down":{"uv":[25,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4062,8.5302,2.2606],"size":[0.0938,0.125,0.5312],"inflate":0.001,"pivot":[-0.3594,8.5302,2.7919],"rotation":[161,0,0],"uv":{"north":{"uv":[43,18],"uv_size":[0.25,0.25]},"east":{"uv":[29,25],"uv_size":[0.5,0.25]},"south":{"uv":[19,43],"uv_size":[0.25,0.25]},"west":{"uv":[26,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,26],"uv_size":[0.25,0.5]},"down":{"uv":[27,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4169,8.7025,1.8037],"size":[0.0084,0.061,0.5],"inflate":0.001,"pivot":[-0.3594,8.6385,2.3037],"rotation":[167.5,0,0],"uv":{"north":{"uv":[23,52],"uv_size":[0.25,0.25]},"east":{"uv":[34,34],"uv_size":[0.5,0.25]},"south":{"uv":[52,23],"uv_size":[0.25,0.25]},"west":{"uv":[0,35],"uv_size":[0.5,0.25]},"up":{"uv":[35,0],"uv_size":[0.25,0.5]},"down":{"uv":[1,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4169,8.5942,2.2606],"size":[0.0084,0.061,0.5312],"inflate":0.001,"pivot":[-0.3594,8.5302,2.7919],"rotation":[161,0,0],"uv":{"north":{"uv":[22,52],"uv_size":[0.25,0.25]},"east":{"uv":[32,34],"uv_size":[0.5,0.25]},"south":{"uv":[52,22],"uv_size":[0.25,0.25]},"west":{"uv":[34,32],"uv_size":[0.5,0.25]},"up":{"uv":[33,34],"uv_size":[0.25,0.5]},"down":{"uv":[34,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4169,8.7395,1.3051],"size":[0.0084,0.061,0.5],"inflate":0.001,"pivot":[-0.3594,8.6755,1.8051],"rotation":[175.75,0,0],"uv":{"north":{"uv":[21,52],"uv_size":[0.25,0.25]},"east":{"uv":[30,34],"uv_size":[0.5,0.25]},"south":{"uv":[52,21],"uv_size":[0.25,0.25]},"west":{"uv":[34,30],"uv_size":[0.5,0.25]},"up":{"uv":[31,34],"uv_size":[0.25,0.5]},"down":{"uv":[34,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4169,8.709,0.806],"size":[0.0084,0.061,0.5],"inflate":0.001,"pivot":[-0.3594,8.645,1.306],"rotation":[-176.5,0,0],"uv":{"north":{"uv":[20,52],"uv_size":[0.25,0.25]},"east":{"uv":[28,34],"uv_size":[0.5,0.25]},"south":{"uv":[52,20],"uv_size":[0.25,0.25]},"west":{"uv":[34,28],"uv_size":[0.5,0.25]},"up":{"uv":[29,34],"uv_size":[0.25,0.5]},"down":{"uv":[34,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4169,8.3536,-0.1568],"size":[0.0084,0.061,0.1267],"inflate":0.001,"pivot":[-0.3594,8.4146,0.3432],"rotation":[180,0,0],"uv":{"north":{"uv":[24,52],"uv_size":[0.25,0.25]},"east":{"uv":[52,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4169,8.1778,2.4351],"size":[0.0084,0.061,0.0733],"inflate":0.001,"pivot":[-0.3594,8.2388,2.8817],"rotation":[180,0,0],"uv":{"north":{"uv":[27,52],"uv_size":[0.25,0.25]},"east":{"uv":[52,27],"uv_size":[0.25,0.25]},"south":{"uv":[28,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,28],"uv_size":[0.25,0.25]},"up":{"uv":[29,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4169,8,1.9887],"size":[0.0084,0.061,0.6397],"inflate":0.001,"pivot":[-0.3594,8.061,3.0017],"rotation":[-151.5,0,0],"uv":{"north":{"uv":[30,52],"uv_size":[0.25,0.25]},"east":{"uv":[27,4],"uv_size":[0.75,0.25]},"south":{"uv":[52,30],"uv_size":[0.25,0.25]},"west":{"uv":[5,27],"uv_size":[0.75,0.25]},"up":{"uv":[27,5],"uv_size":[0.25,0.75]},"down":{"uv":[6,27.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.4169,8.0554,1.8957],"size":[0.0084,0.124,0.061],"inflate":0.001,"pivot":[-0.3594,8.1164,2.9717],"rotation":[-151.5,0,0],"uv":{"north":{"uv":[42,52],"uv_size":[0.25,0.25]},"east":{"uv":[52,42],"uv_size":[0.25,0.25]},"south":{"uv":[43,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,43],"uv_size":[0.25,0.25]},"up":{"uv":[44,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4169,7.2838,2.2252],"size":[0.0084,0.4983,0.061],"inflate":0.001,"pivot":[-0.3594,7.7821,3.3011],"rotation":[-123,0,0],"uv":{"north":{"uv":[35,11],"uv_size":[0.25,0.5]},"east":{"uv":[12,35],"uv_size":[0.25,0.5]},"south":{"uv":[35,12],"uv_size":[0.25,0.5]},"west":{"uv":[13,35],"uv_size":[0.25,0.5]},"up":{"uv":[45,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4169,7.5019,1.8989],"size":[0.0084,0.4983,0.061],"inflate":0.001,"pivot":[-0.3594,8.0003,2.9749],"rotation":[-117.25,0,0],"uv":{"north":{"uv":[35,13],"uv_size":[0.25,0.5]},"east":{"uv":[14,35],"uv_size":[0.25,0.5]},"south":{"uv":[35,14],"uv_size":[0.25,0.5]},"west":{"uv":[15,35],"uv_size":[0.25,0.5]},"up":{"uv":[46,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4169,7.6916,1.5394],"size":[0.0084,0.4983,0.061],"inflate":0.001,"pivot":[-0.3594,8.1899,2.6154],"rotation":[-112.25,0,0],"uv":{"north":{"uv":[35,15],"uv_size":[0.25,0.5]},"east":{"uv":[16,35],"uv_size":[0.25,0.5]},"south":{"uv":[35,16],"uv_size":[0.25,0.5]},"west":{"uv":[17,35],"uv_size":[0.25,0.5]},"up":{"uv":[47,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4169,8.1469,1.3017],"size":[0.0084,0.1677,0.061],"inflate":0.001,"pivot":[-0.3594,8.3146,2.3777],"rotation":[-99.75,0,0],"uv":{"north":{"uv":[48,52],"uv_size":[0.25,0.25]},"east":{"uv":[52,48],"uv_size":[0.25,0.25]},"south":{"uv":[49,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,49],"uv_size":[0.25,0.25]},"up":{"uv":[50,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4085,8,1.9887],"size":[0.0084,0.061,0.6397],"inflate":0.001,"pivot":[0.3594,8.061,3.0017],"rotation":[-151.5,0,0],"uv":{"north":{"uv":[30.25,52],"uv_size":[-0.25,0.25]},"east":{"uv":[5.75,27],"uv_size":[-0.75,0.25]},"south":{"uv":[52.25,30],"uv_size":[-0.25,0.25]},"west":{"uv":[27.75,4],"uv_size":[-0.75,0.25]},"up":{"uv":[27.25,5],"uv_size":[-0.25,0.75]},"down":{"uv":[6.25,27.75],"uv_size":[-0.25,-0.75]}}},{"origin":[0.4085,8.5942,2.2606],"size":[0.0084,0.061,0.5312],"inflate":0.001,"pivot":[0.3594,8.5302,2.7919],"rotation":[161,0,0],"uv":{"north":{"uv":[22.25,52],"uv_size":[-0.25,0.25]},"east":{"uv":[34.5,32],"uv_size":[-0.5,0.25]},"south":{"uv":[52.25,22],"uv_size":[-0.25,0.25]},"west":{"uv":[32.5,34],"uv_size":[-0.5,0.25]},"up":{"uv":[33.25,34],"uv_size":[-0.25,0.5]},"down":{"uv":[34.25,33.5],"uv_size":[-0.25,-0.5]}}},{"origin":[0.4085,8.1778,2.4351],"size":[0.0084,0.061,0.0733],"inflate":0.001,"pivot":[0.3594,8.2388,2.8817],"rotation":[180,0,0],"uv":{"north":{"uv":[27.25,52],"uv_size":[-0.25,0.25]},"east":{"uv":[52.25,28],"uv_size":[-0.25,0.25]},"south":{"uv":[28.25,52],"uv_size":[-0.25,0.25]},"west":{"uv":[52.25,27],"uv_size":[-0.25,0.25]},"up":{"uv":[29.25,52],"uv_size":[-0.25,0.25]},"down":{"uv":[52.25,29.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4085,8.7025,1.8037],"size":[0.0084,0.061,0.5],"inflate":0.001,"pivot":[0.3594,8.6385,2.3037],"rotation":[167.5,0,0],"uv":{"north":{"uv":[23.25,52],"uv_size":[-0.25,0.25]},"east":{"uv":[0.5,35],"uv_size":[-0.5,0.25]},"south":{"uv":[52.25,23],"uv_size":[-0.25,0.25]},"west":{"uv":[34.5,34],"uv_size":[-0.5,0.25]},"up":{"uv":[35.25,0],"uv_size":[-0.25,0.5]},"down":{"uv":[1.25,35.5],"uv_size":[-0.25,-0.5]}}},{"origin":[0.4085,8.7395,1.3051],"size":[0.0084,0.061,0.5],"inflate":0.001,"pivot":[0.3594,8.6755,1.8051],"rotation":[175.75,0,0],"uv":{"north":{"uv":[21.25,52],"uv_size":[-0.25,0.25]},"east":{"uv":[34.5,30],"uv_size":[-0.5,0.25]},"south":{"uv":[52.25,21],"uv_size":[-0.25,0.25]},"west":{"uv":[30.5,34],"uv_size":[-0.5,0.25]},"up":{"uv":[31.25,34],"uv_size":[-0.25,0.5]},"down":{"uv":[34.25,31.5],"uv_size":[-0.25,-0.5]}}},{"origin":[0.4085,8.709,0.806],"size":[0.0084,0.061,0.5],"inflate":0.001,"pivot":[0.3594,8.645,1.306],"rotation":[-176.5,0,0],"uv":{"north":{"uv":[20.25,52],"uv_size":[-0.25,0.25]},"east":{"uv":[34.5,28],"uv_size":[-0.5,0.25]},"south":{"uv":[52.25,20],"uv_size":[-0.25,0.25]},"west":{"uv":[28.5,34],"uv_size":[-0.5,0.25]},"up":{"uv":[29.25,34],"uv_size":[-0.25,0.5]},"down":{"uv":[34.25,29.5],"uv_size":[-0.25,-0.5]}}},{"origin":[0.4085,8.3536,-0.1568],"size":[0.0084,0.061,0.1267],"inflate":0.001,"pivot":[0.3594,8.4146,0.3432],"rotation":[180,0,0],"uv":{"north":{"uv":[24.25,52],"uv_size":[-0.25,0.25]},"east":{"uv":[52.25,25],"uv_size":[-0.25,0.25]},"south":{"uv":[25.25,52],"uv_size":[-0.25,0.25]},"west":{"uv":[52.25,24],"uv_size":[-0.25,0.25]},"up":{"uv":[26.25,52],"uv_size":[-0.25,0.25]},"down":{"uv":[52.25,26.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4085,8.1469,1.3017],"size":[0.0084,0.1677,0.061],"inflate":0.001,"pivot":[0.3594,8.3146,2.3777],"rotation":[-99.75,0,0],"uv":{"north":{"uv":[48.25,52],"uv_size":[-0.25,0.25]},"east":{"uv":[52.25,49],"uv_size":[-0.25,0.25]},"south":{"uv":[49.25,52],"uv_size":[-0.25,0.25]},"west":{"uv":[52.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,52],"uv_size":[-0.25,0.25]},"down":{"uv":[52.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4085,7.6916,1.5394],"size":[0.0084,0.4983,0.061],"inflate":0.001,"pivot":[0.3594,8.1899,2.6154],"rotation":[-112.25,0,0],"uv":{"north":{"uv":[35.25,15],"uv_size":[-0.25,0.5]},"east":{"uv":[17.25,35],"uv_size":[-0.25,0.5]},"south":{"uv":[35.25,16],"uv_size":[-0.25,0.5]},"west":{"uv":[16.25,35],"uv_size":[-0.25,0.5]},"up":{"uv":[47.25,52],"uv_size":[-0.25,0.25]},"down":{"uv":[52.25,47.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4085,7.2838,2.2252],"size":[0.0084,0.4983,0.061],"inflate":0.001,"pivot":[0.3594,7.7821,3.3011],"rotation":[-123,0,0],"uv":{"north":{"uv":[35.25,11],"uv_size":[-0.25,0.5]},"east":{"uv":[13.25,35],"uv_size":[-0.25,0.5]},"south":{"uv":[35.25,12],"uv_size":[-0.25,0.5]},"west":{"uv":[12.25,35],"uv_size":[-0.25,0.5]},"up":{"uv":[45.25,52],"uv_size":[-0.25,0.25]},"down":{"uv":[52.25,45.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4085,8.0554,1.8957],"size":[0.0084,0.124,0.061],"inflate":0.001,"pivot":[0.3594,8.1164,2.9717],"rotation":[-151.5,0,0],"uv":{"north":{"uv":[42.25,52],"uv_size":[-0.25,0.25]},"east":{"uv":[52.25,43],"uv_size":[-0.25,0.25]},"south":{"uv":[43.25,52],"uv_size":[-0.25,0.25]},"west":{"uv":[52.25,42],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,52],"uv_size":[-0.25,0.25]},"down":{"uv":[52.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4085,7.5019,1.8989],"size":[0.0084,0.4983,0.061],"inflate":0.001,"pivot":[0.3594,8.0003,2.9749],"rotation":[-117.25,0,0],"uv":{"north":{"uv":[35.25,13],"uv_size":[-0.25,0.5]},"east":{"uv":[15.25,35],"uv_size":[-0.25,0.5]},"south":{"uv":[35.25,14],"uv_size":[-0.25,0.5]},"west":{"uv":[14.25,35],"uv_size":[-0.25,0.5]},"up":{"uv":[46.25,52],"uv_size":[-0.25,0.25]},"down":{"uv":[52.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4062,9.3971,0.7284],"size":[0.0084,0.0422,0.5469],"pivot":[0.0625,9.4393,0.7284],"rotation":[1.25,0,0],"uv":{"north":{"uv":[53.25,14],"uv_size":[-0.25,0.25]},"east":{"uv":[18.5,35],"uv_size":[-0.5,0.25]},"south":{"uv":[15.25,53],"uv_size":[-0.25,0.25]},"west":{"uv":[35.5,17],"uv_size":[-0.5,0.25]},"up":{"uv":[35.25,18],"uv_size":[-0.25,0.5]},"down":{"uv":[19.25,35.5],"uv_size":[-0.25,-0.5]}}},{"origin":[0.4062,9.3971,1.2752],"size":[0.0084,0.0422,0.2932],"pivot":[0.0625,9.4393,0.7284],"rotation":[1.25,0,0],"uv":{"north":{"uv":[53.25,15],"uv_size":[-0.25,0.25]},"east":{"uv":[17.25,53],"uv_size":[-0.25,0.25]},"south":{"uv":[53.25,16],"uv_size":[-0.25,0.25]},"west":{"uv":[16.25,53],"uv_size":[-0.25,0.25]},"up":{"uv":[53.25,17],"uv_size":[-0.25,0.25]},"down":{"uv":[18.25,53.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4062,9.4166,1.551],"size":[0.0084,0.0411,0.2828],"pivot":[0.0625,9.4577,1.5682],"rotation":[8.75,0,0],"uv":{"north":{"uv":[53.25,18],"uv_size":[-0.25,0.25]},"east":{"uv":[20.25,53],"uv_size":[-0.25,0.25]},"south":{"uv":[53.25,19],"uv_size":[-0.25,0.25]},"west":{"uv":[19.25,53],"uv_size":[-0.25,0.25]},"up":{"uv":[53.25,20],"uv_size":[-0.25,0.25]},"down":{"uv":[21.25,53.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4062,9.4571,1.8307],"size":[0.0084,0.0409,0.3594],"pivot":[0.0625,9.4981,1.8307],"rotation":[3.75,0,0],"uv":{"north":{"uv":[53.25,27],"uv_size":[-0.25,0.25]},"east":{"uv":[29.25,53],"uv_size":[-0.25,0.25]},"south":{"uv":[53.25,28],"uv_size":[-0.25,0.25]},"west":{"uv":[28.25,53],"uv_size":[-0.25,0.25]},"up":{"uv":[53.25,29],"uv_size":[-0.25,0.25]},"down":{"uv":[30.25,53.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4062,9.4864,2.2776],"size":[0.0084,0.1311,0.0387],"pivot":[0.0625,9.4864,2.3156],"rotation":[74.75,0,0],"uv":{"north":{"uv":[53.25,21],"uv_size":[-0.25,0.25]},"east":{"uv":[23.25,53],"uv_size":[-0.25,0.25]},"south":{"uv":[53.25,22],"uv_size":[-0.25,0.25]},"west":{"uv":[22.25,53],"uv_size":[-0.25,0.25]},"up":{"uv":[53.25,23],"uv_size":[-0.25,0.25]},"down":{"uv":[24.25,53.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4062,9.3968,2.3042],"size":[0.0084,0.0469,0.034],"pivot":[0.0625,9.3968,2.1975],"rotation":[18.75,0,0],"uv":{"north":{"uv":[53.25,24],"uv_size":[-0.25,0.25]},"east":{"uv":[26.25,53],"uv_size":[-0.25,0.25]},"south":{"uv":[53.25,25],"uv_size":[-0.25,0.25]},"west":{"uv":[25.25,53],"uv_size":[-0.25,0.25]},"up":{"uv":[53.25,26],"uv_size":[-0.25,0.25]},"down":{"uv":[27.25,53.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.4062,8.1141,3.1753],"size":[0.0938,0.125,0.0781],"inflate":0.001,"pivot":[-0.3594,8.2391,3.2535],"rotation":[-179,0,0],"uv":{"north":{"uv":[43,19],"uv_size":[0.25,0.25]},"east":{"uv":[20,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,20],"uv_size":[0.25,0.25]},"west":{"uv":[21,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.1155,2.6284],"size":[0.0938,0.125,0.7031],"inflate":0.001,"pivot":[-0.3594,8.2405,3.3316],"rotation":[-151.5,0,0],"uv":{"north":{"uv":[43,22],"uv_size":[0.25,0.25]},"east":{"uv":[18,24],"uv_size":[0.75,0.25]},"south":{"uv":[23,43],"uv_size":[0.25,0.25]},"west":{"uv":[24,18],"uv_size":[0.75,0.25]},"up":{"uv":[19,24],"uv_size":[0.25,0.75]},"down":{"uv":[24,19.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.4062,8.1858,3.8899],"size":[0.0938,0.5,0.125],"inflate":0.001,"pivot":[-0.3594,8.6858,3.8899],"rotation":[-123,0,0],"uv":{"north":{"uv":[29,27],"uv_size":[0.25,0.5]},"east":{"uv":[28,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,28],"uv_size":[0.25,0.5]},"west":{"uv":[29,29],"uv_size":[0.25,0.5]},"up":{"uv":[43,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.6871,3.026],"size":[0.0938,0.5,0.125],"inflate":0.001,"pivot":[-0.3594,9.1871,3.026],"rotation":[-112.25,0,0],"uv":{"north":{"uv":[0,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,0],"uv_size":[0.25,0.5]},"south":{"uv":[1,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,1],"uv_size":[0.25,0.5]},"up":{"uv":[43,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,9.2045,2.5632],"size":[0.0938,0.1719,0.125],"inflate":0.001,"pivot":[-0.3594,9.3764,2.5632],"rotation":[-99.75,0,0],"uv":{"north":{"uv":[43,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.6242,2.3938],"size":[0.0938,0.7812,0.125],"inflate":0.001,"pivot":[-0.3594,9.4055,2.3938],"rotation":[-72.25,0,0],"uv":{"north":{"uv":[20,24],"uv_size":[0.25,0.75]},"east":{"uv":[24,20],"uv_size":[0.25,0.75]},"south":{"uv":[21,24],"uv_size":[0.25,0.75]},"west":{"uv":[24,21],"uv_size":[0.25,0.75]},"up":{"uv":[43,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.8623,1.5559],"size":[0.0938,0.125,0.125],"inflate":0.001,"pivot":[-0.3594,8.9994,1.4818],"rotation":[-121.25,0,0],"uv":{"north":{"uv":[43,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4062,8.4581,3.4705],"size":[0.0938,0.5,0.125],"inflate":0.001,"pivot":[-0.3594,8.9581,3.4705],"rotation":[-117.25,0,0],"uv":{"north":{"uv":[2,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,2],"uv_size":[0.25,0.5]},"south":{"uv":[3,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,3],"uv_size":[0.25,0.5]},"up":{"uv":[43,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,9.2311,-0.17],"size":[0.1562,0.0781,0.0625],"pivot":[-0.2344,9.3093,-0.1075],"rotation":[82.5,0,0],"uv":{"north":{"uv":[43,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,9.3636,-0.4263],"size":[0.1562,0.3594,0.3281],"inflate":-0.001,"pivot":[-0.2344,9.3167,0.2221],"rotation":[15,0,0],"uv":{"north":{"uv":[43,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,9.3636,0.558],"size":[0.1562,0.1094,0.1406],"pivot":[-0.2344,9.3167,0.2221],"rotation":[15,0,0],"uv":{"north":{"uv":[43,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,9.1448,-0.4263],"size":[0.1562,0.2188,1.2969],"inflate":-0.001,"pivot":[-0.2344,9.3167,0.2221],"rotation":[15,0,0],"uv":{"north":{"uv":[43,42],"uv_size":[0.25,0.25]},"east":{"uv":[11,19],"uv_size":[1.25,0.25]},"south":{"uv":[43,43],"uv_size":[0.25,0.25]},"west":{"uv":[19,11],"uv_size":[1.25,0.25]},"up":{"uv":[19,12],"uv_size":[0.25,1.25]},"down":{"uv":[13,20.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.3125,9.5684,0.0043],"size":[0.1562,0.0938,0.5156],"pivot":[-0.2344,9.6153,0.3481],"rotation":[-7.5,0,0],"uv":{"north":{"uv":[0,44],"uv_size":[0.25,0.25]},"east":{"uv":[4,30],"uv_size":[0.5,0.25]},"south":{"uv":[44,0],"uv_size":[0.25,0.25]},"west":{"uv":[30,4],"uv_size":[0.5,0.25]},"up":{"uv":[5,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,5.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3178,9.5199,0.0041],"size":[0.1562,0.0938,0.6875],"pivot":[-0.2397,9.6137,0.6291],"rotation":[-19.25,0,0],"uv":{"north":{"uv":[1,44],"uv_size":[0.25,0.25]},"east":{"uv":[22,24],"uv_size":[0.75,0.25]},"south":{"uv":[44,1],"uv_size":[0.25,0.25]},"west":{"uv":[24,22],"uv_size":[0.75,0.25]},"up":{"uv":[23,24],"uv_size":[0.25,0.75]},"down":{"uv":[24,23.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.3178,9.3028,0.6253],"size":[0.1562,0.25,0.5625],"pivot":[-0.2397,9.5528,1.1253],"rotation":[-7,0,0],"uv":{"north":{"uv":[2,44],"uv_size":[0.25,0.25]},"east":{"uv":[6,30],"uv_size":[0.5,0.25]},"south":{"uv":[44,2],"uv_size":[0.25,0.25]},"west":{"uv":[30,6],"uv_size":[0.5,0.25]},"up":{"uv":[7,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,7.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,9.3115,1.1253],"size":[0.1562,0.25,0.5625],"pivot":[-0.2344,9.5615,1.6253],"rotation":[1,0,0],"uv":{"north":{"uv":[3,44],"uv_size":[0.25,0.25]},"east":{"uv":[8,30],"uv_size":[0.5,0.25]},"south":{"uv":[44,3],"uv_size":[0.25,0.25]},"west":{"uv":[30,8],"uv_size":[0.5,0.25]},"up":{"uv":[9,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,9.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,9.3616,1.6227],"size":[0.1562,0.25,0.5],"pivot":[-0.2344,9.6116,2.1227],"rotation":[5.75,0,0],"uv":{"north":{"uv":[4,44],"uv_size":[0.25,0.25]},"east":{"uv":[10,30],"uv_size":[0.5,0.25]},"south":{"uv":[44,4],"uv_size":[0.25,0.25]},"west":{"uv":[30,10],"uv_size":[0.5,0.25]},"up":{"uv":[11,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,11.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,9.2277,2.1],"size":[0.1562,0.25,0.4062],"pivot":[-0.2344,9.4777,2.5063],"rotation":[-19.25,0,0],"uv":{"north":{"uv":[5,44],"uv_size":[0.25,0.25]},"east":{"uv":[12,30],"uv_size":[0.5,0.25]},"south":{"uv":[44,5],"uv_size":[0.25,0.25]},"west":{"uv":[30,12],"uv_size":[0.5,0.25]},"up":{"uv":[13,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,13.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,9.0343,2.4674],"size":[0.1562,0.25,0.5],"pivot":[-0.2344,9.2843,2.9674],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[6,44],"uv_size":[0.25,0.25]},"east":{"uv":[14,30],"uv_size":[0.5,0.25]},"south":{"uv":[44,6],"uv_size":[0.25,0.25]},"west":{"uv":[30,14],"uv_size":[0.5,0.25]},"up":{"uv":[15,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,15.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,8.8132,2.9158],"size":[0.1562,0.25,0.5],"pivot":[-0.2344,9.0632,3.4158],"rotation":[-26.25,0,0],"uv":{"north":{"uv":[7,44],"uv_size":[0.25,0.25]},"east":{"uv":[16,30],"uv_size":[0.5,0.25]},"south":{"uv":[44,7],"uv_size":[0.25,0.25]},"west":{"uv":[30,16],"uv_size":[0.5,0.25]},"up":{"uv":[17,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,17.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,8.5556,3.3444],"size":[0.1562,0.25,0.5],"pivot":[-0.2344,8.8056,3.8444],"rotation":[-31,0,0],"uv":{"north":{"uv":[8,44],"uv_size":[0.25,0.25]},"east":{"uv":[18,30],"uv_size":[0.5,0.25]},"south":{"uv":[44,8],"uv_size":[0.25,0.25]},"west":{"uv":[30,18],"uv_size":[0.5,0.25]},"up":{"uv":[19,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,19.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,8.4913,3.7998],"size":[0.1562,0.1719,0.25],"pivot":[-0.2344,8.6631,4.0498],"rotation":[-34.75,0,0],"uv":{"north":{"uv":[9,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.5006,4.031],"size":[0.1562,0.125,0.0469],"pivot":[-0.2344,8.6256,4.0779],"rotation":[-53.25,0,0],"uv":{"north":{"uv":[12,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.5174,3.9068],"size":[0.1562,0.125,0.1562],"pivot":[-0.2344,8.5174,3.9381],"rotation":[-7.25,0,0],"uv":{"north":{"uv":[15,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.4737,3.7926],"size":[0.1562,0.25,0.1562],"pivot":[-0.2344,8.4737,3.8551],"rotation":[27.75,0,0],"uv":{"north":{"uv":[18,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,18],"uv_size":[0.25,0.25]},"south":{"uv":[19,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,19],"uv_size":[0.25,0.25]},"up":{"uv":[20,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.368,3.7884],"size":[0.1562,0.25,0.1875],"pivot":[-0.2344,8.368,3.7884],"rotation":[57.75,0,0],"uv":{"north":{"uv":[21,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,21],"uv_size":[0.25,0.25]},"south":{"uv":[22,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,22],"uv_size":[0.25,0.25]},"up":{"uv":[23,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.1934,3.4566],"size":[0.1562,0.25,0.375],"pivot":[-0.2344,8.1934,3.4566],"rotation":[27.75,0,0],"uv":{"north":{"uv":[24,44],"uv_size":[0.25,0.25]},"east":{"uv":[20,30],"uv_size":[0.5,0.25]},"south":{"uv":[44,24],"uv_size":[0.25,0.25]},"west":{"uv":[30,20],"uv_size":[0.5,0.25]},"up":{"uv":[21,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,21.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,8.1926,3.2691],"size":[0.1562,0.25,0.1875],"pivot":[-0.2344,8.1926,3.2691],"rotation":[0.25,0,0],"uv":{"north":{"uv":[25,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.3087,2.9299],"size":[0.1562,0.25,0.3594],"pivot":[-0.2344,8.3087,2.9455],"rotation":[-19.75,0,0],"uv":{"north":{"uv":[28,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.436,2.4464],"size":[0.1562,0.25,0.5312],"pivot":[-0.2344,8.436,2.462],"rotation":[-14.75,0,0],"uv":{"north":{"uv":[31,44],"uv_size":[0.25,0.25]},"east":{"uv":[22,30],"uv_size":[0.5,0.25]},"south":{"uv":[44,31],"uv_size":[0.25,0.25]},"west":{"uv":[30,22],"uv_size":[0.5,0.25]},"up":{"uv":[23,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,23.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,8.5013,1.9506],"size":[0.1562,0.25,0.5312],"pivot":[-0.2344,8.5013,1.9663],"rotation":[-7.5,0,0],"uv":{"north":{"uv":[32,44],"uv_size":[0.25,0.25]},"east":{"uv":[24,30],"uv_size":[0.5,0.25]},"south":{"uv":[44,32],"uv_size":[0.25,0.25]},"west":{"uv":[30,24],"uv_size":[0.5,0.25]},"up":{"uv":[25,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,25.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,8.4882,1.4508],"size":[0.1562,0.25,0.5469],"pivot":[-0.2344,8.4882,1.4664],"rotation":[1.5,0,0],"uv":{"north":{"uv":[33,44],"uv_size":[0.25,0.25]},"east":{"uv":[26,30],"uv_size":[0.5,0.25]},"south":{"uv":[44,33],"uv_size":[0.25,0.25]},"west":{"uv":[30,26],"uv_size":[0.5,0.25]},"up":{"uv":[27,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,27.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,8.4491,1.1883],"size":[0.1562,0.25,0.2969],"pivot":[-0.2344,8.4491,1.2195],"rotation":[9,0,0],"uv":{"north":{"uv":[34,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.3823,-0.7391],"size":[0.1562,0.25,0.1875],"pivot":[-0.2344,8.3823,-0.6766],"rotation":[43.25,0,0],"uv":{"north":{"uv":[37,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.4709,-0.6929],"size":[0.1562,0.25,0.2812],"pivot":[-0.2344,8.4709,-0.4429],"rotation":[20.75,0,0],"uv":{"north":{"uv":[40,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,40],"uv_size":[0.25,0.25]},"south":{"uv":[41,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,41],"uv_size":[0.25,0.25]},"up":{"uv":[42,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.5641,-0.4673],"size":[0.1562,0.25,0.5625],"pivot":[-0.2344,8.5641,0.0484],"rotation":[10.75,0,0],"uv":{"north":{"uv":[43,44],"uv_size":[0.25,0.25]},"east":{"uv":[28,30],"uv_size":[0.5,0.25]},"south":{"uv":[44,43],"uv_size":[0.25,0.25]},"west":{"uv":[30,28],"uv_size":[0.5,0.25]},"up":{"uv":[29,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,8.5576,0.0326],"size":[0.1562,0.25,0.3125],"pivot":[-0.2344,8.5576,0.2983],"rotation":[-1.5,0,0],"uv":{"north":{"uv":[44,44],"uv_size":[0.25,0.25]},"east":{"uv":[0,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,0],"uv_size":[0.25,0.25]},"west":{"uv":[1,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.4803,0.2548],"size":[0.1562,0.25,0.3281],"pivot":[-0.2344,8.4803,0.536],"rotation":[-18,0,0],"uv":{"north":{"uv":[45,2],"uv_size":[0.25,0.25]},"east":{"uv":[3,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,3],"uv_size":[0.25,0.25]},"west":{"uv":[4,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,4],"uv_size":[0.25,0.25]},"down":{"uv":[5,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.3281,0.4375],"size":[0.1562,0.25,0.2969],"pivot":[-0.2344,8.3281,0.7344],"rotation":[-37.5,0,0],"uv":{"north":{"uv":[45,5],"uv_size":[0.25,0.25]},"east":{"uv":[6,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,6],"uv_size":[0.25,0.25]},"west":{"uv":[7,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.3281,0.7344],"size":[0.1562,0.25,0.5156],"pivot":[0.0312,8.3281,0.7344],"rotation":[14,0,0],"uv":{"north":{"uv":[45,8],"uv_size":[0.25,0.25]},"east":{"uv":[30,30],"uv_size":[0.5,0.25]},"south":{"uv":[9,45],"uv_size":[0.25,0.25]},"west":{"uv":[0,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,0],"uv_size":[0.25,0.5]},"down":{"uv":[1,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,8.9041,-0.8892],"size":[0.1562,0.5625,0.25],"pivot":[-0.2344,9.4041,-0.8892],"rotation":[-79.25,0,0],"uv":{"north":{"uv":[31,1],"uv_size":[0.25,0.5]},"east":{"uv":[2,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,2],"uv_size":[0.25,0.5]},"west":{"uv":[3,31],"uv_size":[0.25,0.5]},"up":{"uv":[45,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,9.2426,-0.6555],"size":[0.1562,0.3125,0.25],"pivot":[-0.2344,9.4926,-0.6555],"rotation":[-69.25,0,0],"uv":{"north":{"uv":[45,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,9.3842,-0.4494],"size":[0.1562,0.3125,0.25],"pivot":[-0.2344,9.6342,-0.4494],"rotation":[-55.5,0,0],"uv":{"north":{"uv":[45,13],"uv_size":[0.25,0.25]},"east":{"uv":[14,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,9.6017,-0.3595],"size":[0.1562,0.1406,0.125],"pivot":[-0.2344,9.7424,-0.3595],"rotation":[-39.75,0,0],"uv":{"north":{"uv":[45,16],"uv_size":[0.25,0.25]},"east":{"uv":[17,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,17],"uv_size":[0.25,0.25]},"west":{"uv":[18,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,10.3738,-1.0738],"size":[0.1562,1.8125,0.125],"inflate":-0.001,"pivot":[-0.2344,9.0925,-0.7613],"rotation":[-90,0,0],"uv":{"north":{"uv":[6,14],"uv_size":[0.25,1.75]},"east":{"uv":[7,14],"uv_size":[0.25,1.75]},"south":{"uv":[8,14],"uv_size":[0.25,1.75]},"west":{"uv":[9,14],"uv_size":[0.25,1.75]},"up":{"uv":[45,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,12.6863,-0.7613],"size":[0.1562,0.4375,0.1875],"inflate":-0.001,"pivot":[-0.2344,9.0925,-0.7613],"rotation":[-90,0,0],"uv":{"north":{"uv":[31,3],"uv_size":[0.25,0.5]},"east":{"uv":[4,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,4],"uv_size":[0.25,0.5]},"west":{"uv":[5,31],"uv_size":[0.25,0.5]},"up":{"uv":[45,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,12.6863,-0.5738],"size":[0.1562,0.8438,0.5],"inflate":-0.001,"pivot":[-0.2344,9.0925,-0.7613],"rotation":[-90,0,0],"uv":{"north":{"uv":[24,24],"uv_size":[0.25,0.75]},"east":{"uv":[17,16],"uv_size":[0.5,0.75]},"south":{"uv":[0,25],"uv_size":[0.25,0.75]},"west":{"uv":[18,4],"uv_size":[0.5,0.75]},"up":{"uv":[31,5],"uv_size":[0.25,0.5]},"down":{"uv":[6,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,11.1863,-0.6832],"size":[0.1562,0.25,0.4219],"inflate":-0.001,"pivot":[-0.2344,9.0925,-0.7613],"rotation":[-90,0,0],"uv":{"north":{"uv":[45,21],"uv_size":[0.25,0.25]},"east":{"uv":[31,6],"uv_size":[0.5,0.25]},"south":{"uv":[22,45],"uv_size":[0.25,0.25]},"west":{"uv":[7,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,7],"uv_size":[0.25,0.5]},"down":{"uv":[8,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3125,11.4363,-0.9488],"size":[0.1562,1.25,0.6875],"inflate":-0.001,"pivot":[-0.2344,9.0925,-0.7613],"rotation":[-90,0,0],"uv":{"north":{"uv":[14,19],"uv_size":[0.25,1.25]},"east":{"uv":[3,4],"uv_size":[0.75,1.25]},"south":{"uv":[19,14],"uv_size":[0.25,1.25]},"west":{"uv":[4,4],"uv_size":[0.75,1.25]},"up":{"uv":[25,0],"uv_size":[0.25,0.75]},"down":{"uv":[1,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.3125,9.6863,-0.9488],"size":[0.1562,1.5156,0.6875],"inflate":-0.001,"pivot":[-0.2344,9.0925,-0.7613],"rotation":[-90,0,0],"uv":{"north":{"uv":[5,18],"uv_size":[0.25,1.5]},"east":{"uv":[0,2],"uv_size":[0.75,1.5]},"south":{"uv":[18,5],"uv_size":[0.25,1.5]},"west":{"uv":[1,2],"uv_size":[0.75,1.5]},"up":{"uv":[25,1],"uv_size":[0.25,0.75]},"down":{"uv":[2,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.3125,8.9363,-1.0113],"size":[0.1562,0.75,0.75],"inflate":-0.001,"pivot":[-0.2344,9.0925,-0.7613],"rotation":[-90,0,0],"uv":{"north":{"uv":[25,2],"uv_size":[0.25,0.75]},"east":{"uv":[10,1],"uv_size":[0.75,0.75]},"south":{"uv":[3,25],"uv_size":[0.25,0.75]},"west":{"uv":[10,2],"uv_size":[0.75,0.75]},"up":{"uv":[25,3],"uv_size":[0.25,0.75]},"down":{"uv":[4,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.3125,9.2578,1.3879],"size":[0.1562,0.0781,0.1618],"inflate":0.001,"uv":{"north":{"uv":[45,22],"uv_size":[0.25,0.25]},"east":{"uv":[23,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,23],"uv_size":[0.25,0.25]},"west":{"uv":[24,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,9.2578,1.3879],"size":[0.1562,0.0781,0.1618],"inflate":0.001,"pivot":[0.0312,9.1406,1.4688],"rotation":[-45,0,0],"uv":{"north":{"uv":[45,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.9453,1.3879],"size":[0.1562,0.0781,0.1618],"inflate":0.001,"pivot":[0.0312,9.1406,1.4688],"rotation":[-45,0,0],"uv":{"north":{"uv":[45,28],"uv_size":[0.25,0.25]},"east":{"uv":[29,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,29],"uv_size":[0.25,0.25]},"west":{"uv":[30,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,9.0597,1.5859],"size":[0.1562,0.1618,0.0781],"inflate":0.001,"pivot":[0.0312,9.1406,1.4688],"rotation":[-45,0,0],"uv":{"north":{"uv":[45,31],"uv_size":[0.25,0.25]},"east":{"uv":[32,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,32],"uv_size":[0.25,0.25]},"west":{"uv":[33,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,9.0597,1.2734],"size":[0.1562,0.1618,0.0781],"inflate":0.001,"pivot":[0.0312,9.1406,1.4688],"rotation":[-45,0,0],"uv":{"north":{"uv":[45,34],"uv_size":[0.25,0.25]},"east":{"uv":[35,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,35],"uv_size":[0.25,0.25]},"west":{"uv":[36,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,7.8759,1.5029],"size":[0.0938,0.0625,0.3125],"pivot":[0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[45,37],"uv_size":[0.25,0.25]},"east":{"uv":[38,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,38],"uv_size":[0.25,0.25]},"west":{"uv":[39,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,39],"uv_size":[0.25,0.25]},"down":{"uv":[40,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,7.9384,1.2529],"size":[0.0938,0.125,0.9375],"pivot":[0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[45,40],"uv_size":[0.25,0.25]},"east":{"uv":[23,3],"uv_size":[1,0.25]},"south":{"uv":[41,45],"uv_size":[0.25,0.25]},"west":{"uv":[4,23],"uv_size":[1,0.25]},"up":{"uv":[23,4],"uv_size":[0.25,1]},"down":{"uv":[5,24],"uv_size":[0.25,-1]}}},{"origin":[0.3125,8.0634,1.0029],"size":[0.0938,0.1875,1.4375],"pivot":[0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[45,41],"uv_size":[0.25,0.25]},"east":{"uv":[18,7],"uv_size":[1.5,0.25]},"south":{"uv":[42,45],"uv_size":[0.25,0.25]},"west":{"uv":[18,8],"uv_size":[1.5,0.25]},"up":{"uv":[8,18],"uv_size":[0.25,1.5]},"down":{"uv":[18,10.5],"uv_size":[0.25,-1.5]}}},{"origin":[0.3125,8.2509,2.4404],"size":[0.0938,0.375,0.5625],"pivot":[0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[31,8],"uv_size":[0.25,0.5]},"east":{"uv":[23,5],"uv_size":[0.5,0.5]},"south":{"uv":[9,31],"uv_size":[0.25,0.5]},"west":{"uv":[6,23],"uv_size":[0.5,0.5]},"up":{"uv":[31,9],"uv_size":[0.25,0.5]},"down":{"uv":[10,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3125,8.6259,1.2373],"size":[0.0938,0.0625,0.25],"pivot":[0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[45,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.6259,1.0029],"size":[0.0938,0.1875,0.2344],"pivot":[0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[0,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,0],"uv_size":[0.25,0.25]},"south":{"uv":[1,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,1],"uv_size":[0.25,0.25]},"up":{"uv":[2,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.4853,0.3154],"size":[0.0938,0.2188,0.125],"pivot":[0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[3,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.3603,0.4404],"size":[0.0938,0.4062,0.1875],"pivot":[0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[31,10],"uv_size":[0.25,0.5]},"east":{"uv":[11,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,11],"uv_size":[0.25,0.5]},"west":{"uv":[12,31],"uv_size":[0.25,0.5]},"up":{"uv":[6,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.2665,0.6279],"size":[0.0938,0.5781,0.1875],"pivot":[0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[31,12],"uv_size":[0.25,0.5]},"east":{"uv":[13,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,13],"uv_size":[0.25,0.5]},"west":{"uv":[14,31],"uv_size":[0.25,0.5]},"up":{"uv":[7,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.1572,0.8154],"size":[0.0938,0.7188,0.1875],"pivot":[0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[25,4],"uv_size":[0.25,0.75]},"east":{"uv":[5,25],"uv_size":[0.25,0.75]},"south":{"uv":[25,5],"uv_size":[0.25,0.75]},"west":{"uv":[6,25],"uv_size":[0.25,0.75]},"up":{"uv":[8,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.2509,1.0029],"size":[0.0938,0.375,1.4375],"pivot":[0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[31,14],"uv_size":[0.25,0.5]},"east":{"uv":[8,1],"uv_size":[1.5,0.5]},"south":{"uv":[15,31],"uv_size":[0.25,0.5]},"west":{"uv":[8,2],"uv_size":[1.5,0.5]},"up":{"uv":[18,11],"uv_size":[0.25,1.5]},"down":{"uv":[18,14.5],"uv_size":[0.25,-1.5]}}},{"origin":[0.3125,8.3134,3.0029],"size":[0.0938,0.3438,0.25],"inflate":-0.001,"pivot":[0.3594,8.5947,2.0498],"rotation":[180,0,0],"uv":{"north":{"uv":[9,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.2095,1.6389],"size":[0.0938,0.1172,0.0664],"pivot":[-0.0312,9.2017,1.6429],"rotation":[33.75,0,0],"uv":{"north":{"uv":[12,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.2797,1.5908],"size":[0.0938,0.0938,0.0625],"pivot":[-0.0312,9.2797,1.5908],"rotation":[61.25,0,0],"uv":{"north":{"uv":[15,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.2793,1.2701],"size":[0.0938,0.0938,0.0625],"pivot":[-0.0312,9.2793,1.3326],"rotation":[-61.25,0,0],"uv":{"north":{"uv":[18,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,18],"uv_size":[0.25,0.25]},"south":{"uv":[19,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,19],"uv_size":[0.25,0.25]},"up":{"uv":[20,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.1076,1.2024],"size":[0.0938,0.125,0.0781],"pivot":[0.3594,9.2013,1.2806],"rotation":[-3.75,0,0],"uv":{"north":{"uv":[21,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,21],"uv_size":[0.25,0.25]},"south":{"uv":[22,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,22],"uv_size":[0.25,0.25]},"up":{"uv":[23,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.1857,1.2024],"size":[0.0938,0.1406,0.0781],"pivot":[-0.0312,9.2013,1.2806],"rotation":[-33.75,0,0],"uv":{"north":{"uv":[24,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.5489,2.2375],"size":[0.0938,0.0686,0.0312],"pivot":[-0.0312,9.4864,2.3156],"rotation":[74.75,0,0],"uv":{"north":{"uv":[27,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,27],"uv_size":[0.25,0.25]},"south":{"uv":[28,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,28],"uv_size":[0.25,0.25]},"up":{"uv":[29,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.4864,2.2687],"size":[0.0938,0.1311,0.0476],"pivot":[-0.0312,9.4864,2.3156],"rotation":[74.75,0,0],"uv":{"north":{"uv":[30,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,30],"uv_size":[0.25,0.25]},"south":{"uv":[31,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,31],"uv_size":[0.25,0.25]},"up":{"uv":[32,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,32.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.3968,2.1975],"size":[0.0938,0.0469,0.1406],"pivot":[-0.0312,9.3968,2.1975],"rotation":[18.75,0,0],"uv":{"north":{"uv":[33,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,33],"uv_size":[0.25,0.25]},"south":{"uv":[34,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,34],"uv_size":[0.25,0.25]},"up":{"uv":[35,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.3968,1.6038],"size":[0.0938,0.125,0.5938],"pivot":[-0.0312,9.3968,2.1975],"rotation":[18.75,0,0],"uv":{"north":{"uv":[36,46],"uv_size":[0.25,0.25]},"east":{"uv":[31,15],"uv_size":[0.5,0.25]},"south":{"uv":[46,36],"uv_size":[0.25,0.25]},"west":{"uv":[16,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,16],"uv_size":[0.25,0.5]},"down":{"uv":[17,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3125,9.3731,1.8307],"size":[0.0938,0.125,0.3594],"pivot":[-0.0312,9.4981,1.8307],"rotation":[3.75,0,0],"uv":{"north":{"uv":[37,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.3272,1.551],"size":[0.0938,0.1304,0.2828],"pivot":[-0.0312,9.4577,1.5682],"rotation":[8.75,0,0],"uv":{"north":{"uv":[40,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,40],"uv_size":[0.25,0.25]},"south":{"uv":[41,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,41],"uv_size":[0.25,0.25]},"up":{"uv":[42,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.3078,1.2752],"size":[0.0938,0.1316,0.2932],"pivot":[-0.0312,9.4393,0.7284],"rotation":[1.25,0,0],"uv":{"north":{"uv":[43,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,43],"uv_size":[0.25,0.25]},"south":{"uv":[44,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,44],"uv_size":[0.25,0.25]},"up":{"uv":[45,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.1893,0.7284],"size":[0.0938,0.125,0.5469],"inflate":-0.001,"pivot":[-0.0312,9.4393,0.7284],"rotation":[1.25,0,0],"uv":{"north":{"uv":[46,46],"uv_size":[0.25,0.25]},"east":{"uv":[31,17],"uv_size":[0.5,0.25]},"south":{"uv":[0,47],"uv_size":[0.25,0.25]},"west":{"uv":[18,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,18],"uv_size":[0.25,0.5]},"down":{"uv":[19,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3125,9.3143,0.7284],"size":[0.0938,0.125,0.5469],"pivot":[-0.0312,9.4393,0.7284],"rotation":[1.25,0,0],"uv":{"north":{"uv":[52,37],"uv_size":[0.25,0.25]},"east":{"uv":[5,35],"uv_size":[0.5,0.25]},"south":{"uv":[38,52],"uv_size":[0.25,0.25]},"west":{"uv":[35,5],"uv_size":[0.5,0.25]},"up":{"uv":[6,35],"uv_size":[0.25,0.5]},"down":{"uv":[35,6.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3125,8.5511,-0.7216],"size":[0.0938,0.0625,0.0781],"pivot":[0.3594,8.5511,-0.7216],"rotation":[-84,0,0],"uv":{"north":{"uv":[47,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.8937,-0.569],"size":[0.0938,0.125,0.375],"pivot":[0.3594,8.8937,-0.569],"rotation":[-114,0,0],"uv":{"north":{"uv":[52,38],"uv_size":[0.25,0.25]},"east":{"uv":[7,35],"uv_size":[0.5,0.25]},"south":{"uv":[39,52],"uv_size":[0.25,0.25]},"west":{"uv":[35,7],"uv_size":[0.5,0.25]},"up":{"uv":[8,35],"uv_size":[0.25,0.5]},"down":{"uv":[35,8.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3125,8.8339,0.3775],"size":[0.0938,0.8281,0.125],"pivot":[0.3594,8.8339,0.5025],"rotation":[-71.5,0,0],"uv":{"north":{"uv":[25,6],"uv_size":[0.25,0.75]},"east":{"uv":[7,25],"uv_size":[0.25,0.75]},"south":{"uv":[25,7],"uv_size":[0.25,0.75]},"west":{"uv":[8,25],"uv_size":[0.25,0.75]},"up":{"uv":[47,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.9448,0.3359],"size":[0.0938,0.1562,0.125],"pivot":[0.3594,8.9448,0.3359],"rotation":[-85,0,0],"uv":{"north":{"uv":[47,6],"uv_size":[0.25,0.25]},"east":{"uv":[7,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,7],"uv_size":[0.25,0.25]},"west":{"uv":[8,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.3805,-0.6969],"size":[0.0938,0.0781,0.0625],"pivot":[0.3594,8.4586,-0.6344],"rotation":[-100,0,0],"uv":{"north":{"uv":[47,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.4727,-0.5229],"size":[0.0938,0.0469,0.1094],"inflate":-0.001,"pivot":[0.3594,8.6055,-0.4135],"rotation":[-70,0,0],"uv":{"north":{"uv":[47,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.5196,-0.6635],"size":[0.0938,1.7969,0.25],"inflate":-0.001,"pivot":[0.3594,8.6055,-0.4135],"rotation":[-70,0,0],"uv":{"north":{"uv":[14,9],"uv_size":[0.25,1.75]},"east":{"uv":[10,14],"uv_size":[0.25,1.75]},"south":{"uv":[14,11],"uv_size":[0.25,1.75]},"west":{"uv":[14,13],"uv_size":[0.25,1.75]},"up":{"uv":[47,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.3477,-0.476],"size":[0.0938,1.0781,0.125],"pivot":[0.3594,8.6055,-0.4135],"rotation":[-70,0,0],"uv":{"north":{"uv":[23,6],"uv_size":[0.25,1]},"east":{"uv":[7,23],"uv_size":[0.25,1]},"south":{"uv":[23,7],"uv_size":[0.25,1]},"west":{"uv":[8,23],"uv_size":[0.25,1]},"up":{"uv":[47,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.7199,-0.3427],"size":[0.0938,0.2969,0.125],"pivot":[0.3594,8.9543,-0.3427],"rotation":[-75,0,0],"uv":{"north":{"uv":[47,17],"uv_size":[0.25,0.25]},"east":{"uv":[18,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,18],"uv_size":[0.25,0.25]},"west":{"uv":[19,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.8949,-0.2958],"size":[0.0938,0.2031,0.125],"pivot":[0.3594,9.0355,-0.2958],"rotation":[-30,0,0],"uv":{"north":{"uv":[47,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.111,-0.316],"size":[0.0938,0.0416,0.0216],"pivot":[0.3594,9.111,-0.316],"rotation":[42.5,0,0],"uv":{"north":{"uv":[47,23],"uv_size":[0.25,0.25]},"east":{"uv":[24,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,24],"uv_size":[0.25,0.25]},"west":{"uv":[25,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.9844,-0.3281],"size":[0.0938,0.1719,0.125],"pivot":[-0.0312,9.1562,-0.3281],"rotation":[15,0,0],"uv":{"north":{"uv":[47,26],"uv_size":[0.25,0.25]},"east":{"uv":[27,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,27],"uv_size":[0.25,0.25]},"west":{"uv":[28,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.9062,-0.3281],"size":[0.0938,0.125,1.0938],"inflate":-0.001,"pivot":[-0.0312,9.1562,-0.3281],"rotation":[15,0,0],"uv":{"north":{"uv":[47,29],"uv_size":[0.25,0.25]},"east":{"uv":[23,8],"uv_size":[1,0.25]},"south":{"uv":[30,47],"uv_size":[0.25,0.25]},"west":{"uv":[9,23],"uv_size":[1,0.25]},"up":{"uv":[23,9],"uv_size":[0.25,1]},"down":{"uv":[10,24],"uv_size":[0.25,-1]}}},{"origin":[0.3125,9.0312,-0.2031],"size":[0.0938,0.125,0.9688],"pivot":[-0.0312,9.1562,-0.3281],"rotation":[15,0,0],"uv":{"north":{"uv":[47,30],"uv_size":[0.25,0.25]},"east":{"uv":[23,10],"uv_size":[1,0.25]},"south":{"uv":[31,47],"uv_size":[0.25,0.25]},"west":{"uv":[11,23],"uv_size":[1,0.25]},"up":{"uv":[23,11],"uv_size":[0.25,1]},"down":{"uv":[12,24],"uv_size":[0.25,-1]}}},{"origin":[0.3125,8.8164,1.208],"size":[0.0938,0.125,0.125],"inflate":0.001,"pivot":[0.3594,8.9994,1.4818],"rotation":[173.75,0,0],"uv":{"north":{"uv":[47,31],"uv_size":[0.25,0.25]},"east":{"uv":[32,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,32],"uv_size":[0.25,0.25]},"west":{"uv":[33,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.8164,1.2726],"size":[0.0938,0.1562,0.125],"inflate":0.001,"pivot":[0.3594,8.9994,1.4818],"rotation":[143.75,0,0],"uv":{"north":{"uv":[47,34],"uv_size":[0.25,0.25]},"east":{"uv":[35,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,35],"uv_size":[0.25,0.25]},"west":{"uv":[36,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.8778,1.3089],"size":[0.0938,0.1562,0.125],"inflate":0.001,"pivot":[0.3594,8.9994,1.4818],"rotation":[116.25,0,0],"uv":{"north":{"uv":[47,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,47],"uv_size":[0.25,0.25]},"up":{"uv":[52,39],"uv_size":[0.25,0.25]},"down":{"uv":[40,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.0419,1.4351],"size":[0.0938,0.125,0.1525],"inflate":0.001,"pivot":[0.3594,8.9994,1.4818],"rotation":[178.75,0,0],"uv":{"north":{"uv":[52,40],"uv_size":[0.25,0.25]},"east":{"uv":[41,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,41],"uv_size":[0.25,0.25]},"west":{"uv":[32,53],"uv_size":[0.25,0.25]},"up":{"uv":[33,53],"uv_size":[0.25,0.25]},"down":{"uv":[34,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.7845,1.0612],"size":[0.0938,0.125,0.6682],"inflate":0.001,"pivot":[0.3594,8.8972,1.2077],"rotation":[-161.25,0,0],"uv":{"north":{"uv":[47,43],"uv_size":[0.25,0.25]},"east":{"uv":[25,8],"uv_size":[0.75,0.25]},"south":{"uv":[44,47],"uv_size":[0.25,0.25]},"west":{"uv":[9,25],"uv_size":[0.75,0.25]},"up":{"uv":[25,9],"uv_size":[0.25,0.75]},"down":{"uv":[10,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.3125,8.6426,0.5949],"size":[0.0938,0.3659,0.125],"inflate":0.001,"pivot":[0.3594,8.7116,0.7199],"rotation":[180,0,0],"uv":{"north":{"uv":[9,35],"uv_size":[0.25,0.25]},"east":{"uv":[35,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,35],"uv_size":[0.25,0.25]},"west":{"uv":[35,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,35],"uv_size":[0.25,0.25]},"down":{"uv":[31,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.2897,0.3449],"size":[0.0938,0.125,0.5],"inflate":0.001,"pivot":[0.3594,8.4147,0.8449],"rotation":[-167.5,0,0],"uv":{"north":{"uv":[52,31],"uv_size":[0.25,0.25]},"east":{"uv":[10,26],"uv_size":[0.5,0.25]},"south":{"uv":[32,52],"uv_size":[0.25,0.25]},"west":{"uv":[14,26],"uv_size":[0.5,0.25]},"up":{"uv":[16,26],"uv_size":[0.25,0.5]},"down":{"uv":[18,26.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3125,8.645,0.806],"size":[0.0938,0.125,0.5],"inflate":0.001,"pivot":[0.3594,8.645,1.306],"rotation":[-176.5,0,0],"uv":{"north":{"uv":[52,33],"uv_size":[0.25,0.25]},"east":{"uv":[3,35],"uv_size":[0.5,0.25]},"south":{"uv":[34,52],"uv_size":[0.25,0.25]},"west":{"uv":[35,3],"uv_size":[0.5,0.25]},"up":{"uv":[4,35],"uv_size":[0.25,0.5]},"down":{"uv":[35,4.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3125,8.6755,1.3051],"size":[0.0938,0.125,0.5],"inflate":0.001,"pivot":[0.3594,8.6755,1.8051],"rotation":[175.75,0,0],"uv":{"north":{"uv":[52,32],"uv_size":[0.25,0.25]},"east":{"uv":[20,26],"uv_size":[0.5,0.25]},"south":{"uv":[33,52],"uv_size":[0.25,0.25]},"west":{"uv":[35,1],"uv_size":[0.5,0.25]},"up":{"uv":[2,35],"uv_size":[0.25,0.5]},"down":{"uv":[35,2.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3125,8.6385,1.8037],"size":[0.0938,0.125,0.5],"inflate":0.001,"pivot":[0.3594,8.6385,2.3037],"rotation":[167.5,0,0],"uv":{"north":{"uv":[3,48],"uv_size":[0.25,0.25]},"east":{"uv":[31,29],"uv_size":[0.5,0.25]},"south":{"uv":[48,3],"uv_size":[0.25,0.25]},"west":{"uv":[30,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,30],"uv_size":[0.25,0.5]},"down":{"uv":[31,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3125,8.5302,2.2606],"size":[0.0938,0.125,0.5312],"inflate":0.001,"pivot":[0.3594,8.5302,2.7919],"rotation":[161,0,0],"uv":{"north":{"uv":[4,48],"uv_size":[0.25,0.25]},"east":{"uv":[0,32],"uv_size":[0.5,0.25]},"south":{"uv":[48,4],"uv_size":[0.25,0.25]},"west":{"uv":[32,0],"uv_size":[0.5,0.25]},"up":{"uv":[1,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,1.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3125,8.1141,3.1753],"size":[0.0938,0.125,0.0781],"inflate":0.001,"pivot":[0.3594,8.2391,3.2535],"rotation":[-179,0,0],"uv":{"north":{"uv":[35,53],"uv_size":[0.25,0.25]},"east":{"uv":[36,53],"uv_size":[0.25,0.25]},"south":{"uv":[37,53],"uv_size":[0.25,0.25]},"west":{"uv":[38,53],"uv_size":[0.25,0.25]},"up":{"uv":[39,53],"uv_size":[0.25,0.25]},"down":{"uv":[40,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.1155,2.6284],"size":[0.0938,0.125,0.7031],"inflate":0.001,"pivot":[0.3594,8.2405,3.3316],"rotation":[-151.5,0,0],"uv":{"north":{"uv":[8,48],"uv_size":[0.25,0.25]},"east":{"uv":[25,10],"uv_size":[0.75,0.25]},"south":{"uv":[48,8],"uv_size":[0.25,0.25]},"west":{"uv":[11,25],"uv_size":[0.75,0.25]},"up":{"uv":[25,11],"uv_size":[0.25,0.75]},"down":{"uv":[12,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.3125,8.1858,3.8899],"size":[0.0938,0.5,0.125],"inflate":0.001,"pivot":[0.3594,8.6858,3.8899],"rotation":[-123,0,0],"uv":{"north":{"uv":[2,32],"uv_size":[0.25,0.5]},"east":{"uv":[32,2],"uv_size":[0.25,0.5]},"south":{"uv":[3,32],"uv_size":[0.25,0.5]},"west":{"uv":[32,3],"uv_size":[0.25,0.5]},"up":{"uv":[9,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.6871,3.026],"size":[0.0938,0.5,0.125],"inflate":0.001,"pivot":[0.3594,9.1871,3.026],"rotation":[-112.25,0,0],"uv":{"north":{"uv":[4,32],"uv_size":[0.25,0.5]},"east":{"uv":[32,4],"uv_size":[0.25,0.5]},"south":{"uv":[5,32],"uv_size":[0.25,0.5]},"west":{"uv":[32,5],"uv_size":[0.25,0.5]},"up":{"uv":[10,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,9.2045,2.5632],"size":[0.0938,0.1719,0.125],"inflate":0.001,"pivot":[0.3594,9.3764,2.5632],"rotation":[-99.75,0,0],"uv":{"north":{"uv":[52,34],"uv_size":[0.25,0.25]},"east":{"uv":[35,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,35],"uv_size":[0.25,0.25]},"west":{"uv":[36,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.6242,2.3938],"size":[0.0938,0.7812,0.125],"inflate":0.001,"pivot":[0.3594,9.4055,2.3938],"rotation":[-72.25,0,0],"uv":{"north":{"uv":[25,12],"uv_size":[0.25,0.75]},"east":{"uv":[13,25],"uv_size":[0.25,0.75]},"south":{"uv":[25,13],"uv_size":[0.25,0.75]},"west":{"uv":[14,25],"uv_size":[0.25,0.75]},"up":{"uv":[14,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.8623,1.5559],"size":[0.0938,0.125,0.125],"inflate":0.001,"pivot":[0.3594,8.9994,1.4818],"rotation":[-121.25,0,0],"uv":{"north":{"uv":[15,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3125,8.4581,3.4705],"size":[0.0938,0.5,0.125],"inflate":0.001,"pivot":[0.3594,8.9581,3.4705],"rotation":[-117.25,0,0],"uv":{"north":{"uv":[6,32],"uv_size":[0.25,0.5]},"east":{"uv":[32,6],"uv_size":[0.25,0.5]},"south":{"uv":[7,32],"uv_size":[0.25,0.5]},"west":{"uv":[32,7],"uv_size":[0.25,0.5]},"up":{"uv":[18,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,9.2311,-0.17],"size":[0.1562,0.0781,0.0625],"pivot":[0.2344,9.3093,-0.1075],"rotation":[82.5,0,0],"uv":{"north":{"uv":[19,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,9.3636,-0.4263],"size":[0.1562,0.3594,0.3281],"inflate":-0.001,"pivot":[0.2344,9.3167,0.2221],"rotation":[15,0,0],"uv":{"north":{"uv":[22,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,9.3636,0.558],"size":[0.1562,0.1094,0.1406],"pivot":[0.2344,9.3167,0.2221],"rotation":[15,0,0],"uv":{"north":{"uv":[25,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,9.1448,-0.4263],"size":[0.1562,0.2188,1.2969],"inflate":-0.001,"pivot":[0.2344,9.3167,0.2221],"rotation":[15,0,0],"uv":{"north":{"uv":[28,48],"uv_size":[0.25,0.25]},"east":{"uv":[15,19],"uv_size":[1.25,0.25]},"south":{"uv":[48,28],"uv_size":[0.25,0.25]},"west":{"uv":[19,16],"uv_size":[1.25,0.25]},"up":{"uv":[19,17],"uv_size":[0.25,1.25]},"down":{"uv":[18,20.25],"uv_size":[0.25,-1.25]}}},{"origin":[0.1562,9.5684,0.0043],"size":[0.1562,0.0938,0.5156],"pivot":[0.2344,9.6153,0.3481],"rotation":[-7.5,0,0],"uv":{"north":{"uv":[29,48],"uv_size":[0.25,0.25]},"east":{"uv":[8,32],"uv_size":[0.5,0.25]},"south":{"uv":[48,29],"uv_size":[0.25,0.25]},"west":{"uv":[32,8],"uv_size":[0.5,0.25]},"up":{"uv":[9,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,9.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1616,9.5199,0.0041],"size":[0.1562,0.0938,0.6875],"pivot":[0.2397,9.6137,0.6291],"rotation":[-19.25,0,0],"uv":{"north":{"uv":[30,48],"uv_size":[0.25,0.25]},"east":{"uv":[25,14],"uv_size":[0.75,0.25]},"south":{"uv":[48,30],"uv_size":[0.25,0.25]},"west":{"uv":[15,25],"uv_size":[0.75,0.25]},"up":{"uv":[25,15],"uv_size":[0.25,0.75]},"down":{"uv":[16,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.1616,9.3028,0.6253],"size":[0.1562,0.25,0.5625],"pivot":[0.2397,9.5528,1.1253],"rotation":[-7,0,0],"uv":{"north":{"uv":[31,48],"uv_size":[0.25,0.25]},"east":{"uv":[10,32],"uv_size":[0.5,0.25]},"south":{"uv":[48,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,10],"uv_size":[0.5,0.25]},"up":{"uv":[11,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,11.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,9.3115,1.1253],"size":[0.1562,0.25,0.5625],"pivot":[0.2344,9.5615,1.6253],"rotation":[1,0,0],"uv":{"north":{"uv":[32,48],"uv_size":[0.25,0.25]},"east":{"uv":[12,32],"uv_size":[0.5,0.25]},"south":{"uv":[48,32],"uv_size":[0.25,0.25]},"west":{"uv":[32,12],"uv_size":[0.5,0.25]},"up":{"uv":[13,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,13.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,9.3616,1.6227],"size":[0.1562,0.25,0.5],"pivot":[0.2344,9.6116,2.1227],"rotation":[5.75,0,0],"uv":{"north":{"uv":[33,48],"uv_size":[0.25,0.25]},"east":{"uv":[14,32],"uv_size":[0.5,0.25]},"south":{"uv":[48,33],"uv_size":[0.25,0.25]},"west":{"uv":[32,14],"uv_size":[0.5,0.25]},"up":{"uv":[15,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,15.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,9.2277,2.1],"size":[0.1562,0.25,0.4062],"pivot":[0.2344,9.4777,2.5063],"rotation":[-19.25,0,0],"uv":{"north":{"uv":[34,48],"uv_size":[0.25,0.25]},"east":{"uv":[16,32],"uv_size":[0.5,0.25]},"south":{"uv":[48,34],"uv_size":[0.25,0.25]},"west":{"uv":[32,16],"uv_size":[0.5,0.25]},"up":{"uv":[17,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,17.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,9.0343,2.4674],"size":[0.1562,0.25,0.5],"pivot":[0.2344,9.2843,2.9674],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[35,48],"uv_size":[0.25,0.25]},"east":{"uv":[18,32],"uv_size":[0.5,0.25]},"south":{"uv":[48,35],"uv_size":[0.25,0.25]},"west":{"uv":[32,18],"uv_size":[0.5,0.25]},"up":{"uv":[19,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,19.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,8.8132,2.9158],"size":[0.1562,0.25,0.5],"pivot":[0.2344,9.0632,3.4158],"rotation":[-26.25,0,0],"uv":{"north":{"uv":[36,48],"uv_size":[0.25,0.25]},"east":{"uv":[20,32],"uv_size":[0.5,0.25]},"south":{"uv":[48,36],"uv_size":[0.25,0.25]},"west":{"uv":[32,20],"uv_size":[0.5,0.25]},"up":{"uv":[21,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,21.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,8.5556,3.3444],"size":[0.1562,0.25,0.5],"pivot":[0.2344,8.8056,3.8444],"rotation":[-31,0,0],"uv":{"north":{"uv":[37,48],"uv_size":[0.25,0.25]},"east":{"uv":[22,32],"uv_size":[0.5,0.25]},"south":{"uv":[48,37],"uv_size":[0.25,0.25]},"west":{"uv":[32,22],"uv_size":[0.5,0.25]},"up":{"uv":[23,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,23.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,8.4913,3.7998],"size":[0.1562,0.1719,0.25],"pivot":[0.2344,8.6631,4.0498],"rotation":[-34.75,0,0],"uv":{"north":{"uv":[38,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.5006,4.031],"size":[0.1562,0.125,0.0469],"pivot":[0.2344,8.6256,4.0779],"rotation":[-53.25,0,0],"uv":{"north":{"uv":[41,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.5174,3.9068],"size":[0.1562,0.125,0.1562],"pivot":[0.2344,8.5174,3.9381],"rotation":[-7.25,0,0],"uv":{"north":{"uv":[44,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,44],"uv_size":[0.25,0.25]},"south":{"uv":[45,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,45],"uv_size":[0.25,0.25]},"up":{"uv":[46,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.4737,3.7926],"size":[0.1562,0.25,0.1562],"pivot":[0.2344,8.4737,3.8551],"rotation":[27.75,0,0],"uv":{"north":{"uv":[47,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,47],"uv_size":[0.25,0.25]},"south":{"uv":[48,48],"uv_size":[0.25,0.25]},"west":{"uv":[0,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.368,3.7884],"size":[0.1562,0.25,0.1875],"pivot":[0.2344,8.368,3.7884],"rotation":[57.75,0,0],"uv":{"north":{"uv":[49,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.1934,3.4566],"size":[0.1562,0.25,0.375],"pivot":[0.2344,8.1934,3.4566],"rotation":[27.75,0,0],"uv":{"north":{"uv":[49,4],"uv_size":[0.25,0.25]},"east":{"uv":[24,32],"uv_size":[0.5,0.25]},"south":{"uv":[5,49],"uv_size":[0.25,0.25]},"west":{"uv":[32,24],"uv_size":[0.5,0.25]},"up":{"uv":[25,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,25.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,8.1926,3.2691],"size":[0.1562,0.25,0.1875],"pivot":[0.2344,8.1926,3.2691],"rotation":[0.25,0,0],"uv":{"north":{"uv":[49,5],"uv_size":[0.25,0.25]},"east":{"uv":[6,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,6],"uv_size":[0.25,0.25]},"west":{"uv":[7,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.3087,2.9299],"size":[0.1562,0.25,0.3594],"pivot":[0.2344,8.3087,2.9455],"rotation":[-19.75,0,0],"uv":{"north":{"uv":[49,8],"uv_size":[0.25,0.25]},"east":{"uv":[9,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,9],"uv_size":[0.25,0.25]},"west":{"uv":[10,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.436,2.4464],"size":[0.1562,0.25,0.5312],"pivot":[0.2344,8.436,2.462],"rotation":[-14.75,0,0],"uv":{"north":{"uv":[49,11],"uv_size":[0.25,0.25]},"east":{"uv":[26,32],"uv_size":[0.5,0.25]},"south":{"uv":[12,49],"uv_size":[0.25,0.25]},"west":{"uv":[32,26],"uv_size":[0.5,0.25]},"up":{"uv":[27,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,27.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,8.5013,1.9506],"size":[0.1562,0.25,0.5312],"pivot":[0.2344,8.5013,1.9663],"rotation":[-7.5,0,0],"uv":{"north":{"uv":[49,12],"uv_size":[0.25,0.25]},"east":{"uv":[28,32],"uv_size":[0.5,0.25]},"south":{"uv":[13,49],"uv_size":[0.25,0.25]},"west":{"uv":[32,28],"uv_size":[0.5,0.25]},"up":{"uv":[29,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,8.4882,1.4508],"size":[0.1562,0.25,0.5469],"pivot":[0.2344,8.4882,1.4664],"rotation":[1.5,0,0],"uv":{"north":{"uv":[49,13],"uv_size":[0.25,0.25]},"east":{"uv":[30,32],"uv_size":[0.5,0.25]},"south":{"uv":[14,49],"uv_size":[0.25,0.25]},"west":{"uv":[32,30],"uv_size":[0.5,0.25]},"up":{"uv":[31,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,8.4491,1.1883],"size":[0.1562,0.25,0.2969],"pivot":[0.2344,8.4491,1.2195],"rotation":[9,0,0],"uv":{"north":{"uv":[49,14],"uv_size":[0.25,0.25]},"east":{"uv":[15,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,15],"uv_size":[0.25,0.25]},"west":{"uv":[16,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.3823,-0.7391],"size":[0.1562,0.25,0.1875],"pivot":[0.2344,8.3823,-0.6766],"rotation":[43.25,0,0],"uv":{"north":{"uv":[49,17],"uv_size":[0.25,0.25]},"east":{"uv":[18,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,18],"uv_size":[0.25,0.25]},"west":{"uv":[19,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.4709,-0.6929],"size":[0.1562,0.25,0.2812],"pivot":[0.2344,8.4709,-0.4429],"rotation":[20.75,0,0],"uv":{"north":{"uv":[49,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.5641,-0.4673],"size":[0.1562,0.25,0.5625],"pivot":[0.2344,8.5641,0.0484],"rotation":[10.75,0,0],"uv":{"north":{"uv":[49,23],"uv_size":[0.25,0.25]},"east":{"uv":[32,32],"uv_size":[0.5,0.25]},"south":{"uv":[24,49],"uv_size":[0.25,0.25]},"west":{"uv":[0,33],"uv_size":[0.5,0.25]},"up":{"uv":[33,0],"uv_size":[0.25,0.5]},"down":{"uv":[1,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,8.5576,0.0326],"size":[0.1562,0.25,0.3125],"pivot":[0.2344,8.5576,0.2983],"rotation":[-1.5,0,0],"uv":{"north":{"uv":[49,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.4803,0.2548],"size":[0.1562,0.25,0.3281],"pivot":[0.2344,8.4803,0.536],"rotation":[-18,0,0],"uv":{"north":{"uv":[49,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.3281,0.4375],"size":[0.1562,0.25,0.2969],"pivot":[0.2344,8.3281,0.7344],"rotation":[-37.5,0,0],"uv":{"north":{"uv":[49,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.3281,0.7344],"size":[0.1562,0.25,0.5156],"pivot":[-0.0312,8.3281,0.7344],"rotation":[14,0,0],"uv":{"north":{"uv":[49,33],"uv_size":[0.25,0.25]},"east":{"uv":[33,1],"uv_size":[0.5,0.25]},"south":{"uv":[34,49],"uv_size":[0.25,0.25]},"west":{"uv":[2,33],"uv_size":[0.5,0.25]},"up":{"uv":[33,2],"uv_size":[0.25,0.5]},"down":{"uv":[3,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,8.9041,-0.8892],"size":[0.1562,0.5625,0.25],"pivot":[0.2344,9.4041,-0.8892],"rotation":[-79.25,0,0],"uv":{"north":{"uv":[33,3],"uv_size":[0.25,0.5]},"east":{"uv":[4,33],"uv_size":[0.25,0.5]},"south":{"uv":[33,4],"uv_size":[0.25,0.5]},"west":{"uv":[5,33],"uv_size":[0.25,0.5]},"up":{"uv":[49,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,9.2426,-0.6555],"size":[0.1562,0.3125,0.25],"pivot":[0.2344,9.4926,-0.6555],"rotation":[-69.25,0,0],"uv":{"north":{"uv":[49,35],"uv_size":[0.25,0.25]},"east":{"uv":[36,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,36],"uv_size":[0.25,0.25]},"west":{"uv":[37,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,9.3842,-0.4494],"size":[0.1562,0.3125,0.25],"pivot":[0.2344,9.6342,-0.4494],"rotation":[-55.5,0,0],"uv":{"north":{"uv":[49,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,39],"uv_size":[0.25,0.25]},"west":{"uv":[40,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,9.6017,-0.3595],"size":[0.1562,0.1406,0.125],"pivot":[0.2344,9.7424,-0.3595],"rotation":[-39.75,0,0],"uv":{"north":{"uv":[49,41],"uv_size":[0.25,0.25]},"east":{"uv":[42,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,42],"uv_size":[0.25,0.25]},"west":{"uv":[43,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,43],"uv_size":[0.25,0.25]},"down":{"uv":[44,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,10.3738,-1.0738],"size":[0.1562,1.8125,0.125],"inflate":-0.001,"pivot":[0.2344,9.0925,-0.7613],"rotation":[-90,0,0],"uv":{"north":{"uv":[1,15],"uv_size":[0.25,1.75]},"east":{"uv":[15,1],"uv_size":[0.25,1.75]},"south":{"uv":[2,15],"uv_size":[0.25,1.75]},"west":{"uv":[15,3],"uv_size":[0.25,1.75]},"up":{"uv":[49,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,12.6863,-0.7613],"size":[0.1562,0.4375,0.1875],"inflate":-0.001,"pivot":[0.2344,9.0925,-0.7613],"rotation":[-90,0,0],"uv":{"north":{"uv":[33,5],"uv_size":[0.25,0.5]},"east":{"uv":[6,33],"uv_size":[0.25,0.5]},"south":{"uv":[33,6],"uv_size":[0.25,0.5]},"west":{"uv":[7,33],"uv_size":[0.25,0.5]},"up":{"uv":[49,45],"uv_size":[0.25,0.25]},"down":{"uv":[46,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,12.6863,-0.5738],"size":[0.1562,0.8438,0.5],"inflate":-0.001,"pivot":[0.2344,9.0925,-0.7613],"rotation":[-90,0,0],"uv":{"north":{"uv":[25,16],"uv_size":[0.25,0.75]},"east":{"uv":[18,15],"uv_size":[0.5,0.75]},"south":{"uv":[17,25],"uv_size":[0.25,0.75]},"west":{"uv":[16,18],"uv_size":[0.5,0.75]},"up":{"uv":[33,7],"uv_size":[0.25,0.5]},"down":{"uv":[8,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,11.1863,-0.6832],"size":[0.1562,0.25,0.4219],"inflate":-0.001,"pivot":[0.2344,9.0925,-0.7613],"rotation":[-90,0,0],"uv":{"north":{"uv":[49,46],"uv_size":[0.25,0.25]},"east":{"uv":[33,8],"uv_size":[0.5,0.25]},"south":{"uv":[47,49],"uv_size":[0.25,0.25]},"west":{"uv":[9,33],"uv_size":[0.5,0.25]},"up":{"uv":[33,9],"uv_size":[0.25,0.5]},"down":{"uv":[10,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1562,11.4363,-0.9488],"size":[0.1562,1.25,0.6875],"inflate":-0.001,"pivot":[0.2344,9.0925,-0.7613],"rotation":[-90,0,0],"uv":{"north":{"uv":[19,19],"uv_size":[0.25,1.25]},"east":{"uv":[5,0],"uv_size":[0.75,1.25]},"south":{"uv":[0,20],"uv_size":[0.25,1.25]},"west":{"uv":[5,2],"uv_size":[0.75,1.25]},"up":{"uv":[25,17],"uv_size":[0.25,0.75]},"down":{"uv":[18,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.1562,9.6863,-0.9488],"size":[0.1562,1.5156,0.6875],"inflate":-0.001,"pivot":[0.2344,9.0925,-0.7613],"rotation":[-90,0,0],"uv":{"north":{"uv":[18,16],"uv_size":[0.25,1.5]},"east":{"uv":[2,2],"uv_size":[0.75,1.5]},"south":{"uv":[17,18],"uv_size":[0.25,1.5]},"west":{"uv":[3,2],"uv_size":[0.75,1.5]},"up":{"uv":[25,18],"uv_size":[0.25,0.75]},"down":{"uv":[19,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.1562,8.9363,-1.0113],"size":[0.1562,0.75,0.75],"inflate":-0.001,"pivot":[0.2344,9.0925,-0.7613],"rotation":[-90,0,0],"uv":{"north":{"uv":[25,19],"uv_size":[0.25,0.75]},"east":{"uv":[9,10],"uv_size":[0.75,0.75]},"south":{"uv":[20,25],"uv_size":[0.25,0.75]},"west":{"uv":[10,10],"uv_size":[0.75,0.75]},"up":{"uv":[25,20],"uv_size":[0.25,0.75]},"down":{"uv":[21,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.1562,9.2578,1.3879],"size":[0.1562,0.0781,0.1618],"inflate":0.001,"uv":{"north":{"uv":[49,47],"uv_size":[0.25,0.25]},"east":{"uv":[48,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,48],"uv_size":[0.25,0.25]},"west":{"uv":[49,49],"uv_size":[0.25,0.25]},"up":{"uv":[0,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,9.2578,1.3879],"size":[0.1562,0.0781,0.1618],"inflate":0.001,"pivot":[-0.0312,9.1406,1.4688],"rotation":[-45,0,0],"uv":{"north":{"uv":[1,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.9453,1.3879],"size":[0.1562,0.0781,0.1618],"inflate":0.001,"pivot":[-0.0312,9.1406,1.4688],"rotation":[-45,0,0],"uv":{"north":{"uv":[4,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.9453,1.3879],"size":[0.1562,0.0781,0.1618],"inflate":0.001,"uv":{"north":{"uv":[7,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,7],"uv_size":[0.25,0.25]},"south":{"uv":[8,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,8],"uv_size":[0.25,0.25]},"up":{"uv":[9,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.9453,1.3879],"size":[0.1562,0.0781,0.1618],"inflate":0.001,"pivot":[-0.0312,9.1406,1.4688],"rotation":[90,0,0],"uv":{"north":{"uv":[10,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,10],"uv_size":[0.25,0.25]},"south":{"uv":[11,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,11],"uv_size":[0.25,0.25]},"up":{"uv":[12,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,8.9453,1.3879],"size":[0.1562,0.0781,0.1618],"inflate":0.001,"pivot":[-0.0312,9.1406,1.4688],"rotation":[-90,0,0],"uv":{"north":{"uv":[13,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,13],"uv_size":[0.25,0.25]},"south":{"uv":[14,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,14],"uv_size":[0.25,0.25]},"up":{"uv":[15,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.9453,1.3879],"size":[0.1562,0.0781,0.1618],"inflate":0.001,"pivot":[0.0312,9.1406,1.4688],"rotation":[-90,0,0],"uv":{"north":{"uv":[16,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.9453,1.3879],"size":[0.1562,0.0781,0.1618],"inflate":0.001,"uv":{"north":{"uv":[19,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3125,8.9453,1.3879],"size":[0.1562,0.0781,0.1618],"inflate":0.001,"pivot":[0.0312,9.1406,1.4688],"rotation":[90,0,0],"uv":{"north":{"uv":[22,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,9.0597,1.5859],"size":[0.1562,0.1618,0.0781],"inflate":0.001,"pivot":[-0.0312,9.1406,1.4688],"rotation":[-45,0,0],"uv":{"north":{"uv":[25,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1562,9.0597,1.2734],"size":[0.1562,0.1618,0.0781],"inflate":0.001,"pivot":[-0.0312,9.1406,1.4688],"rotation":[-45,0,0],"uv":{"north":{"uv":[28,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5312,8.6661,2.0623],"size":[0.0625,0.0423,0.6471],"pivot":[-0.5,8.6661,2.7094],"rotation":[-21,0,0],"uv":{"north":{"uv":[47,36],"uv_size":[0.25,0.25]},"east":{"uv":[0,24],"uv_size":[0.75,0.25]},"south":{"uv":[37,47],"uv_size":[0.25,0.25]},"west":{"uv":[24,0],"uv_size":[0.75,0.25]},"up":{"uv":[1,24],"uv_size":[0.25,0.75]},"down":{"uv":[24,1.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.5206,8.6575,2.7092],"size":[0.0518,0.0625,0.1406],"pivot":[-0.5,8.6575,2.8498],"rotation":[-3.5,0,0],"uv":{"north":{"uv":[47,37],"uv_size":[0.25,0.25]},"east":{"uv":[38,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,38],"uv_size":[0.25,0.25]},"west":{"uv":[39,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,39],"uv_size":[0.25,0.25]},"down":{"uv":[40,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5312,9.0365,2.0485],"size":[0.0625,0.0627,0.1398],"pivot":[-0.5,9.099,2.0485],"rotation":[5.5,0,0],"uv":{"north":{"uv":[47,40],"uv_size":[0.25,0.25]},"east":{"uv":[41,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,41],"uv_size":[0.25,0.25]},"west":{"uv":[42,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,42],"uv_size":[0.25,0.25]},"down":{"uv":[43,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5206,9.0004,2.011],"size":[0.0518,0.0633,0.1398],"pivot":[-0.5,9.0012,2.011],"rotation":[-47.25,0,0],"uv":{"north":{"uv":[47,43],"uv_size":[0.25,0.25]},"east":{"uv":[44,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,44],"uv_size":[0.25,0.25]},"west":{"uv":[45,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,45],"uv_size":[0.25,0.25]},"down":{"uv":[46,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5312,8.6043,1.9647],"size":[0.0625,0.1048,0.125],"pivot":[-0.5,8.6778,3.0584],"rotation":[-21,0,0],"uv":{"north":{"uv":[47,46],"uv_size":[0.25,0.25]},"east":{"uv":[47,47],"uv_size":[0.25,0.25]},"south":{"uv":[0,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5312,8.771,2.1243],"size":[0.0625,0.0312,0.6875],"pivot":[-0.5312,8.771,3.0774],"rotation":[-16.9376,12.601,35.6164],"uv":{"north":{"uv":[2,48],"uv_size":[0.25,0.25]},"east":{"uv":[2,24],"uv_size":[0.75,0.25]},"south":{"uv":[48,2],"uv_size":[0.25,0.25]},"west":{"uv":[24,2],"uv_size":[0.75,0.25]},"up":{"uv":[3,24],"uv_size":[0.25,0.75]},"down":{"uv":[24,3.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.4964,8.8947,2.7855],"size":[0.0625,0.0324,0.0699],"pivot":[-0.4808,8.926,2.7855],"rotation":[-44.4376,12.601,35.6164],"uv":{"north":{"uv":[3,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4964,9.0907,2.1908],"size":[0.0625,0.0304,0.0841],"pivot":[-0.4808,9.1219,2.2749],"rotation":[4.3124,12.601,35.6164],"uv":{"north":{"uv":[6,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5312,8.8022,2.2024],"size":[0.0625,0.0312,0.5469],"pivot":[-0.5312,8.771,3.0774],"rotation":[-16.9376,12.601,35.6164],"uv":{"north":{"uv":[9,48],"uv_size":[0.25,0.25]},"east":{"uv":[31,19],"uv_size":[0.5,0.25]},"south":{"uv":[48,9],"uv_size":[0.25,0.25]},"west":{"uv":[20,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,20],"uv_size":[0.25,0.5]},"down":{"uv":[21,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.5312,8.5841,2.0897],"size":[0.0625,0.1875,1.9062],"pivot":[-0.5,8.6778,3.0584],"rotation":[-21,0,0],"uv":{"north":{"uv":[10,48],"uv_size":[0.25,0.25]},"east":{"uv":[11,6],"uv_size":[2,0.25]},"south":{"uv":[48,10],"uv_size":[0.25,0.25]},"west":{"uv":[7,11],"uv_size":[2,0.25]},"up":{"uv":[9,11],"uv_size":[0.25,2]},"down":{"uv":[11,11],"uv_size":[0.25,-2]}}},{"origin":[-0.5312,8.2031,3.9326],"size":[0.375,0.25,0.1036],"pivot":[-0.0938,8.3281,3.9844],"rotation":[22.5,0,0],"uv":{"north":{"uv":[31,21],"uv_size":[0.5,0.25]},"east":{"uv":[11,48],"uv_size":[0.25,0.25]},"south":{"uv":[22,31],"uv_size":[0.5,0.25]},"west":{"uv":[48,11],"uv_size":[0.25,0.25]},"up":{"uv":[31,22],"uv_size":[0.5,0.25]},"down":{"uv":[23,31.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.5312,8.2031,3.9326],"size":[0.375,0.25,0.1036],"pivot":[-0.0938,8.3281,3.9844],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[31,23],"uv_size":[0.5,0.25]},"east":{"uv":[12,48],"uv_size":[0.25,0.25]},"south":{"uv":[24,31],"uv_size":[0.5,0.25]},"west":{"uv":[48,12],"uv_size":[0.25,0.25]},"up":{"uv":[31,24],"uv_size":[0.5,0.25]},"down":{"uv":[25,31.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.5312,8.2764,3.8594],"size":[0.375,0.1036,0.25],"pivot":[-0.0938,8.3281,3.9844],"rotation":[22.5,0,0],"uv":{"north":{"uv":[31,25],"uv_size":[0.5,0.25]},"east":{"uv":[13,48],"uv_size":[0.25,0.25]},"south":{"uv":[26,31],"uv_size":[0.5,0.25]},"west":{"uv":[48,13],"uv_size":[0.25,0.25]},"up":{"uv":[31,26],"uv_size":[0.5,0.25]},"down":{"uv":[27,31.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.5312,8.2764,3.8594],"size":[0.375,0.1036,0.25],"pivot":[-0.0938,8.3281,3.9844],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[31,27],"uv_size":[0.5,0.25]},"east":{"uv":[14,48],"uv_size":[0.25,0.25]},"south":{"uv":[28,31],"uv_size":[0.5,0.25]},"west":{"uv":[48,14],"uv_size":[0.25,0.25]},"up":{"uv":[31,28],"uv_size":[0.5,0.25]},"down":{"uv":[29,31.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.5259,9.4062,-0.2286],"size":[1.0518,0.5,0.2071],"pivot":[-0.0366,9.6562,-0.125],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[12,5],"uv_size":[1,0.5]},"east":{"uv":[33,10],"uv_size":[0.25,0.5]},"south":{"uv":[6,12],"uv_size":[1,0.5]},"west":{"uv":[11,33],"uv_size":[0.25,0.5]},"up":{"uv":[23,12],"uv_size":[1,0.25]},"down":{"uv":[13,23.25],"uv_size":[1,-0.25]}}},{"origin":[-0.5206,9.4062,-0.2286],"size":[1.0412,0.5,0.2071],"pivot":[-0.0419,9.6562,-0.125],"rotation":[-67.5,0,0],"uv":{"north":{"uv":[12,6],"uv_size":[1,0.5]},"east":{"uv":[33,11],"uv_size":[0.25,0.5]},"south":{"uv":[12,7],"uv_size":[1,0.5]},"west":{"uv":[12,33],"uv_size":[0.25,0.5]},"up":{"uv":[23,13],"uv_size":[1,0.25]},"down":{"uv":[14,23.25],"uv_size":[1,-0.25]}}},{"origin":[-0.5312,9.5527,-0.375],"size":[1.0625,0.2071,0.5],"pivot":[-0.0312,9.6562,-0.125],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[23,14],"uv_size":[1,0.25]},"east":{"uv":[33,12],"uv_size":[0.5,0.25]},"south":{"uv":[15,23],"uv_size":[1,0.25]},"west":{"uv":[13,33],"uv_size":[0.5,0.25]},"up":{"uv":[8,12],"uv_size":[1,0.5]},"down":{"uv":[12,8.5],"uv_size":[1,-0.5]}}},{"origin":[-0.4261,9.2709,1.0163],"size":[0.8522,0.0765,0.8458],"pivot":[-0.0427,9.5301,-0.0466],"rotation":[-141,0,0],"uv":{"north":{"uv":[20,15],"uv_size":[1,0.25]},"east":{"uv":[12,21],"uv_size":[0.75,0.25]},"south":{"uv":[16,20],"uv_size":[1,0.25]},"west":{"uv":[16,21],"uv_size":[0.75,0.25]},"up":{"uv":[12,20],"uv_size":[1,0.75]},"down":{"uv":[20,14.75],"uv_size":[1,-0.75]}}},{"origin":[-0.3621,8.7453,0.3779],"size":[0.7242,0.0765,0.1245],"pivot":[-0.1067,9.0045,-0.6957],"rotation":[-141,0,0],"uv":{"north":{"uv":[20,15],"uv_size":[1,0.25]},"east":{"uv":[12,21],"uv_size":[0.75,0.25]},"south":{"uv":[16,20],"uv_size":[1,0.25]},"west":{"uv":[16,21],"uv_size":[0.75,0.25]},"up":{"uv":[12,20],"uv_size":[1,0.75]},"down":{"uv":[20,14.75],"uv_size":[1,-0.75]}}},{"origin":[-0.3621,9.3559,1.068],"size":[0.7242,0.0765,0.1885],"pivot":[-0.1067,9.6152,0.0584],"rotation":[-141,0,0],"uv":{"north":{"uv":[20,15],"uv_size":[1,0.25]},"east":{"uv":[12,21],"uv_size":[0.75,0.25]},"south":{"uv":[16,20],"uv_size":[1,0.25]},"west":{"uv":[16,21],"uv_size":[0.75,0.25]},"up":{"uv":[12,20],"uv_size":[1,0.75]},"down":{"uv":[20,14.75],"uv_size":[1,-0.75]}}},{"origin":[-0.4688,9.3309,1.2529],"size":[0.9375,0.2125,0.2125],"pivot":[0,9.6581,-0.1213],"rotation":[-135,0,0],"uv":{"north":{"uv":[23,15],"uv_size":[1,0.25]},"east":{"uv":[31,50],"uv_size":[0.25,0.25]},"south":{"uv":[16,23],"uv_size":[1,0.25]},"west":{"uv":[50,31],"uv_size":[0.25,0.25]},"up":{"uv":[23,16],"uv_size":[1,0.25]},"down":{"uv":[17,23.25],"uv_size":[1,-0.25]}}},{"origin":[-0.5938,9.9698,1.3615],"size":[1.1875,0.15,0.15],"pivot":[0,9.6581,-0.1213],"rotation":[-135,0,0],"uv":{"north":{"uv":[20,0],"uv_size":[1.25,0.25]},"east":{"uv":[32,50],"uv_size":[0.25,0.25]},"south":{"uv":[1,20],"uv_size":[1.25,0.25]},"west":{"uv":[50,32],"uv_size":[0.25,0.25]},"up":{"uv":[20,1],"uv_size":[1.25,0.25]},"down":{"uv":[20,2.25],"uv_size":[1.25,-0.25]}}},{"origin":[-0.5938,8.7987,1.2068],"size":[1.1875,0.15,0.15],"pivot":[0,9.6581,-0.1213],"rotation":[-135,0,0],"uv":{"north":{"uv":[3,20],"uv_size":[1.25,0.25]},"east":{"uv":[33,50],"uv_size":[0.25,0.25]},"south":{"uv":[20,3],"uv_size":[1.25,0.25]},"west":{"uv":[50,33],"uv_size":[0.25,0.25]},"up":{"uv":[20,4],"uv_size":[1.25,0.25]},"down":{"uv":[5,20.25],"uv_size":[1.25,-0.25]}}},{"origin":[-0.3275,8.7453,1.6685],"size":[0.655,0.108,0.108],"pivot":[-0.1,9.3641,0.7122],"rotation":[-135,0,0],"uv":{"north":{"uv":[27,9],"uv_size":[0.75,0.25]},"east":{"uv":[53,30],"uv_size":[0.25,0.25]},"south":{"uv":[10,27],"uv_size":[0.75,0.25]},"west":{"uv":[31,53],"uv_size":[0.25,0.25]},"up":{"uv":[27,10],"uv_size":[0.75,0.25]},"down":{"uv":[11,27.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.5938,9.5831,-0.1963],"size":[1.1875,0.15,0.15],"pivot":[0,9.6581,-0.1213],"rotation":[-135,0,0],"uv":{"north":{"uv":[20,5],"uv_size":[1.25,0.25]},"east":{"uv":[34,50],"uv_size":[0.25,0.25]},"south":{"uv":[20,6],"uv_size":[1.25,0.25]},"west":{"uv":[50,34],"uv_size":[0.25,0.25]},"up":{"uv":[7,20],"uv_size":[1.25,0.25]},"down":{"uv":[20,7.25],"uv_size":[1.25,-0.25]}}},{"origin":[-0.5206,9.5527,-0.375],"size":[1.0412,0.2071,0.5],"pivot":[-0.0419,9.6562,-0.125],"rotation":[-67.5,0,0],"uv":{"north":{"uv":[23,17],"uv_size":[1,0.25]},"east":{"uv":[33,13],"uv_size":[0.5,0.25]},"south":{"uv":[18,23],"uv_size":[1,0.25]},"west":{"uv":[14,33],"uv_size":[0.5,0.25]},"up":{"uv":[9,12],"uv_size":[1,0.5]},"down":{"uv":[12,9.5],"uv_size":[1,-0.5]}}},{"origin":[-0.5419,8.0312,-1.0567],"size":[1.0838,0.5,0.2071],"pivot":[-0.0206,8.2812,-0.9531],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[10,12],"uv_size":[1,0.5]},"east":{"uv":[33,14],"uv_size":[0.25,0.5]},"south":{"uv":[11,12],"uv_size":[1,0.5]},"west":{"uv":[15,33],"uv_size":[0.25,0.5]},"up":{"uv":[23,18],"uv_size":[1,0.25]},"down":{"uv":[19,23.25],"uv_size":[1,-0.25]}}},{"origin":[-0.5312,8.0312,-1.0567],"size":[1.0625,0.5,0.2071],"pivot":[-0.0312,8.2812,-0.9531],"rotation":[-67.5,0,0],"uv":{"north":{"uv":[12,12],"uv_size":[1,0.5]},"east":{"uv":[33,15],"uv_size":[0.25,0.5]},"south":{"uv":[13,0],"uv_size":[1,0.5]},"west":{"uv":[16,33],"uv_size":[0.25,0.5]},"up":{"uv":[23,19],"uv_size":[1,0.25]},"down":{"uv":[20,23.25],"uv_size":[1,-0.25]}}},{"origin":[-0.5366,8.1777,-1.2031],"size":[1.0732,0.2071,0.5],"pivot":[-0.0259,8.2812,-0.9531],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[23,20],"uv_size":[1,0.25]},"east":{"uv":[33,16],"uv_size":[0.5,0.25]},"south":{"uv":[21,23],"uv_size":[1,0.25]},"west":{"uv":[17,33],"uv_size":[0.5,0.25]},"up":{"uv":[13,1],"uv_size":[1,0.5]},"down":{"uv":[13,2.5],"uv_size":[1,-0.5]}}},{"origin":[-0.5312,8.1777,-1.2031],"size":[1.0625,0.2071,0.5],"pivot":[-0.0312,8.2812,-0.9531],"rotation":[-67.5,0,0],"uv":{"north":{"uv":[23,21],"uv_size":[1,0.25]},"east":{"uv":[33,17],"uv_size":[0.5,0.25]},"south":{"uv":[22,23],"uv_size":[1,0.25]},"west":{"uv":[18,33],"uv_size":[0.5,0.25]},"up":{"uv":[13,3],"uv_size":[1,0.5]},"down":{"uv":[4,13.5],"uv_size":[1,-0.5]}}},{"origin":[-0.5366,8.9688,-1.7754],"size":[1.0732,0.5,0.2071],"pivot":[-0.0259,9.2188,-1.6719],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[13,4],"uv_size":[1,0.5]},"east":{"uv":[33,18],"uv_size":[0.25,0.5]},"south":{"uv":[5,13],"uv_size":[1,0.5]},"west":{"uv":[19,33],"uv_size":[0.25,0.5]},"up":{"uv":[23,22],"uv_size":[1,0.25]},"down":{"uv":[23,23.25],"uv_size":[1,-0.25]}}},{"origin":[-0.5312,8.9688,-1.7754],"size":[1.0625,0.5,0.2071],"pivot":[-0.0312,9.2188,-1.6719],"rotation":[-67.5,0,0],"uv":{"north":{"uv":[13,5],"uv_size":[1,0.5]},"east":{"uv":[33,19],"uv_size":[0.25,0.5]},"south":{"uv":[6,13],"uv_size":[1,0.5]},"west":{"uv":[20,33],"uv_size":[0.25,0.5]},"up":{"uv":[0,24],"uv_size":[1,0.25]},"down":{"uv":[24,0.25],"uv_size":[1,-0.25]}}},{"origin":[-0.5419,9.1152,-1.9219],"size":[1.0838,0.2071,0.5],"pivot":[-0.0206,9.2188,-1.6719],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[1,24],"uv_size":[1,0.25]},"east":{"uv":[33,20],"uv_size":[0.5,0.25]},"south":{"uv":[24,1],"uv_size":[1,0.25]},"west":{"uv":[21,33],"uv_size":[0.5,0.25]},"up":{"uv":[13,6],"uv_size":[1,0.5]},"down":{"uv":[7,13.5],"uv_size":[1,-0.5]}}},{"origin":[-0.5312,9.1152,-1.9219],"size":[1.0625,0.2071,0.5],"pivot":[-0.0312,9.2188,-1.6719],"rotation":[-67.5,0,0],"uv":{"north":{"uv":[2,24],"uv_size":[1,0.25]},"east":{"uv":[33,21],"uv_size":[0.5,0.25]},"south":{"uv":[24,2],"uv_size":[1,0.25]},"west":{"uv":[22,33],"uv_size":[0.5,0.25]},"up":{"uv":[13,7],"uv_size":[1,0.5]},"down":{"uv":[8,13.5],"uv_size":[1,-0.5]}}},{"origin":[-0.7059,8.9482,-1.8861],"size":[0.3074,0.7081,1.1471],"pivot":[-0.5522,8.75,-1.3125],"rotation":[-180,-30,-90],"uv":{"north":{"uv":[25,21],"uv_size":[0.25,0.75]},"east":{"uv":[5,4],"uv_size":[1.25,0.75]},"south":{"uv":[22,25],"uv_size":[0.25,0.75]},"west":{"uv":[5,5],"uv_size":[1.25,0.75]},"up":{"uv":[20,8],"uv_size":[0.25,1.25]},"down":{"uv":[9,21.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.7006,8.9375,-1.8861],"size":[0.3074,0.7188,1.1471],"pivot":[-0.5469,8.75,-1.3125],"rotation":[-180,-60,-90],"uv":{"north":{"uv":[25,22],"uv_size":[0.25,0.75]},"east":{"uv":[6,0],"uv_size":[1.25,0.75]},"south":{"uv":[23,25],"uv_size":[0.25,0.75]},"west":{"uv":[6,1],"uv_size":[1.25,0.75]},"up":{"uv":[10,20],"uv_size":[0.25,1.25]},"down":{"uv":[11,21.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.021,8.9542,-0.926],"size":[0.5,0.7081,0.25],"pivot":[-0.021,9.2873,-0.801],"rotation":[-180,-66.25,-90],"uv":{"north":{"uv":[18,18],"uv_size":[0.5,0.75]},"east":{"uv":[25,23],"uv_size":[0.25,0.75]},"south":{"uv":[19,0],"uv_size":[0.5,0.75]},"west":{"uv":[24,25],"uv_size":[0.25,0.75]},"up":{"uv":[33,22],"uv_size":[0.5,0.25]},"down":{"uv":[23,33.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.0263,8.9905,-1.5651],"size":[0.5526,0.7188,0.25],"pivot":[-0.0263,9.3236,-1.3151],"rotation":[180,-80,-90],"uv":{"north":{"uv":[1,19],"uv_size":[0.5,0.75]},"east":{"uv":[25,24],"uv_size":[0.25,0.75]},"south":{"uv":[19,1],"uv_size":[0.5,0.75]},"west":{"uv":[25,25],"uv_size":[0.25,0.75]},"up":{"uv":[33,23],"uv_size":[0.5,0.25]},"down":{"uv":[24,33.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.7006,8.9375,-1.8861],"size":[0.3074,0.7188,1.1471],"pivot":[-0.5469,8.75,-1.3125],"rotation":[0,-90,90],"uv":{"north":{"uv":[0,26],"uv_size":[0.25,0.75]},"east":{"uv":[6,2],"uv_size":[1.25,0.75]},"south":{"uv":[26,0],"uv_size":[0.25,0.75]},"west":{"uv":[3,6],"uv_size":[1.25,0.75]},"up":{"uv":[20,12],"uv_size":[0.25,1.25]},"down":{"uv":[20,13.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.7059,8.9482,-1.8861],"size":[0.3074,0.7081,1.1471],"pivot":[-0.5522,8.75,-1.3125],"rotation":[0,-60,90],"uv":{"north":{"uv":[1,26],"uv_size":[0.25,0.75]},"east":{"uv":[6,3],"uv_size":[1.25,0.75]},"south":{"uv":[26,1],"uv_size":[0.25,0.75]},"west":{"uv":[5,6],"uv_size":[1.25,0.75]},"up":{"uv":[15,20],"uv_size":[0.25,1.25]},"down":{"uv":[15,21.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.6952,8.9375,-1.8861],"size":[0.3074,0.7081,1.3026],"pivot":[-0.5415,8.75,-1.3125],"rotation":[0,-30,90],"uv":{"north":{"uv":[2,26],"uv_size":[0.25,0.75]},"east":{"uv":[3,7],"uv_size":[1.25,0.75]},"south":{"uv":[26,2],"uv_size":[0.25,0.75]},"west":{"uv":[7,4],"uv_size":[1.25,0.75]},"up":{"uv":[17,20],"uv_size":[0.25,1.25]},"down":{"uv":[17,21.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.5156,8.7111,-0.7896],"size":[0.5625,0.7188,0.25],"pivot":[-0.0156,9.0548,-0.5396],"rotation":[0,41,90],"uv":{"north":{"uv":[19,2],"uv_size":[0.5,0.75]},"east":{"uv":[3,26],"uv_size":[0.25,0.75]},"south":{"uv":[19,3],"uv_size":[0.5,0.75]},"west":{"uv":[26,3],"uv_size":[0.25,0.75]},"up":{"uv":[33,24],"uv_size":[0.5,0.25]},"down":{"uv":[25,33.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.4943,7.7832,-1.1063],"size":[0.084,0.7401,0.125],"pivot":[0.0057,8.159,-0.9813],"rotation":[0,29,90],"uv":{"north":{"uv":[4,26],"uv_size":[0.25,0.75]},"east":{"uv":[26,4],"uv_size":[0.25,0.75]},"south":{"uv":[5,26],"uv_size":[0.25,0.75]},"west":{"uv":[26,5],"uv_size":[0.25,0.75]},"up":{"uv":[35,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4943,8.2206,-0.8639],"size":[0.5,0.7401,0.125],"pivot":[0.0057,8.5963,-0.7389],"rotation":[0,23.5,90],"uv":{"north":{"uv":[4,19],"uv_size":[0.5,0.75]},"east":{"uv":[6,26],"uv_size":[0.25,0.75]},"south":{"uv":[19,4],"uv_size":[0.5,0.75]},"west":{"uv":[26,6],"uv_size":[0.25,0.75]},"up":{"uv":[33,25],"uv_size":[0.5,0.25]},"down":{"uv":[26,33.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.5263,8.6469,-0.6848],"size":[0.532,0.7401,0.125],"pivot":[0.0057,9.0227,-0.5598],"rotation":[0,41,90],"uv":{"north":{"uv":[19,5],"uv_size":[0.5,0.75]},"east":{"uv":[7,26],"uv_size":[0.25,0.75]},"south":{"uv":[6,19],"uv_size":[0.5,0.75]},"west":{"uv":[26,7],"uv_size":[0.25,0.75]},"up":{"uv":[33,26],"uv_size":[0.5,0.25]},"down":{"uv":[27,33.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.6952,8.9268,-1.8861],"size":[0.3074,0.7294,1.1471],"pivot":[-0.5415,8.75,-1.3125],"rotation":[0,0,90],"uv":{"north":{"uv":[8,26],"uv_size":[0.25,0.75]},"east":{"uv":[5,7],"uv_size":[1.25,0.75]},"south":{"uv":[26,8],"uv_size":[0.25,0.75]},"west":{"uv":[7,5],"uv_size":[1.25,0.75]},"up":{"uv":[20,17],"uv_size":[0.25,1.25]},"down":{"uv":[20,20.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.9912,9.4422,-1.9377],"size":[0.3227,0.2435,1.2045],"pivot":[-0.8298,8.7342,-1.3355],"rotation":[-180,-30,-90],"uv":{"north":{"uv":[53,2],"uv_size":[0.25,0.25]},"east":{"uv":[21,21],"uv_size":[1.25,0.25]},"south":{"uv":[3,53],"uv_size":[0.25,0.25]},"west":{"uv":[0,22],"uv_size":[1.25,0.25]},"up":{"uv":[22,0],"uv_size":[0.25,1.25]},"down":{"uv":[2,23.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.9856,9.431,-1.9377],"size":[0.3227,0.2547,1.2045],"pivot":[-0.8242,8.7342,-1.3355],"rotation":[0,0,90],"uv":{"north":{"uv":[53,1],"uv_size":[0.25,0.25]},"east":{"uv":[18,21],"uv_size":[1.25,0.25]},"south":{"uv":[2,53],"uv_size":[0.25,0.25]},"west":{"uv":[21,18],"uv_size":[1.25,0.25]},"up":{"uv":[21,19],"uv_size":[0.25,1.25]},"down":{"uv":[20,22.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.9856,9.431,-1.9377],"size":[0.3227,0.2547,1.3678],"pivot":[-0.8242,8.7342,-1.3355],"rotation":[0,-30,90],"uv":{"north":{"uv":[53,0],"uv_size":[0.25,0.25]},"east":{"uv":[13,21],"uv_size":[1.25,0.25]},"south":{"uv":[1,53],"uv_size":[0.25,0.25]},"west":{"uv":[21,13],"uv_size":[1.25,0.25]},"up":{"uv":[21,14],"uv_size":[0.25,1.25]},"down":{"uv":[21,17.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.9856,9.431,-1.9377],"size":[0.3227,0.2547,1.2045],"pivot":[-0.8242,8.7342,-1.3355],"rotation":[0,-60,90],"uv":{"north":{"uv":[52,52],"uv_size":[0.25,0.25]},"east":{"uv":[5,21],"uv_size":[1.25,0.25]},"south":{"uv":[0,53],"uv_size":[0.25,0.25]},"west":{"uv":[7,21],"uv_size":[1.25,0.25]},"up":{"uv":[21,8],"uv_size":[0.25,1.25]},"down":{"uv":[21,12.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.9856,9.431,-1.9377],"size":[0.3227,0.2547,1.2045],"pivot":[-0.8242,8.7342,-1.3355],"rotation":[0,-90,90],"uv":{"north":{"uv":[51,52],"uv_size":[0.25,0.25]},"east":{"uv":[20,10],"uv_size":[1.25,0.25]},"south":{"uv":[52,51],"uv_size":[0.25,0.25]},"west":{"uv":[1,21],"uv_size":[1.25,0.25]},"up":{"uv":[3,21],"uv_size":[0.25,1.25]},"down":{"uv":[4,22.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.6602,8.9013,-1.7312],"size":[0.216,0.8331,0.8062],"pivot":[-0.5522,8.7656,-1.3281],"rotation":[-180,-30,-90],"uv":{"north":{"uv":[9,26],"uv_size":[0.25,0.75]},"east":{"uv":[1,11],"uv_size":[0.75,0.75]},"south":{"uv":[26,9],"uv_size":[0.25,0.75]},"west":{"uv":[11,1],"uv_size":[0.75,0.75]},"up":{"uv":[26,10],"uv_size":[0.25,0.75]},"down":{"uv":[26,10.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.6602,8.9013,-1.7312],"size":[0.216,0.8331,0.8062],"pivot":[-0.5522,8.7656,-1.3281],"rotation":[-180,-60,-90],"uv":{"north":{"uv":[11,26],"uv_size":[0.25,0.75]},"east":{"uv":[2,11],"uv_size":[0.75,0.75]},"south":{"uv":[26,11],"uv_size":[0.25,0.75]},"west":{"uv":[11,2],"uv_size":[0.75,0.75]},"up":{"uv":[12,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,12.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.6549,8.8906,-1.7312],"size":[0.216,0.8438,0.8062],"pivot":[-0.5469,8.7656,-1.3281],"rotation":[0,-90,90],"uv":{"north":{"uv":[13,26],"uv_size":[0.25,0.75]},"east":{"uv":[3,11],"uv_size":[0.75,0.75]},"south":{"uv":[26,13],"uv_size":[0.25,0.75]},"west":{"uv":[11,3],"uv_size":[0.75,0.75]},"up":{"uv":[26,14],"uv_size":[0.25,0.75]},"down":{"uv":[26,14.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.6602,8.9013,-1.7312],"size":[0.216,0.8331,0.8062],"pivot":[-0.5522,8.7656,-1.3281],"rotation":[0,-60,90],"uv":{"north":{"uv":[15,26],"uv_size":[0.25,0.75]},"east":{"uv":[6,11],"uv_size":[0.75,0.75]},"south":{"uv":[26,15],"uv_size":[0.25,0.75]},"west":{"uv":[11,7],"uv_size":[0.75,0.75]},"up":{"uv":[26,16],"uv_size":[0.25,0.75]},"down":{"uv":[26,16.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.6655,8.912,-1.7312],"size":[0.216,0.8224,0.8062],"pivot":[-0.5575,8.7656,-1.3281],"rotation":[0,-30,90],"uv":{"north":{"uv":[17,26],"uv_size":[0.25,0.75]},"east":{"uv":[11,8],"uv_size":[0.75,0.75]},"south":{"uv":[26,17],"uv_size":[0.25,0.75]},"west":{"uv":[9,11],"uv_size":[0.75,0.75]},"up":{"uv":[26.25,18],"uv_size":[-0.25,0.75]},"down":{"uv":[26,18.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.6549,8.8906,-1.7312],"size":[0.216,0.8438,0.8062],"pivot":[-0.5469,8.7656,-1.3281],"rotation":[0,0,90],"uv":{"north":{"uv":[19,26],"uv_size":[0.25,0.75]},"east":{"uv":[11,9],"uv_size":[0.75,0.75]},"south":{"uv":[26,19],"uv_size":[0.25,0.75]},"west":{"uv":[10,11],"uv_size":[0.75,0.75]},"up":{"uv":[26.25,20],"uv_size":[-0.25,0.75]},"down":{"uv":[26,20.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1641,9.4013,-0.4711],"size":[0.3281,0.3125,0.125],"pivot":[0.2031,9.6513,-0.4711],"rotation":[-58.25,0,0],"uv":{"north":{"uv":[36,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,36],"uv_size":[0.25,0.25]},"south":{"uv":[37,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,37],"uv_size":[0.25,0.25]},"up":{"uv":[38,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,38.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,9.2385,-0.6837],"size":[0.3281,0.3438,0.125],"pivot":[0.2031,9.5197,-0.6837],"rotation":[-72.75,0,0],"uv":{"north":{"uv":[39,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,39],"uv_size":[0.25,0.25]},"south":{"uv":[40,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,40],"uv_size":[0.25,0.25]},"up":{"uv":[41,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,9.3113,-0.9523],"size":[0.3281,0.125,0.0625],"pivot":[0.1328,9.4363,-0.9523],"rotation":[-27.75,0,0],"uv":{"north":{"uv":[42,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,42],"uv_size":[0.25,0.25]},"south":{"uv":[43,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,43],"uv_size":[0.25,0.25]},"up":{"uv":[44,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,9.5976,-0.3163],"size":[0.3281,0.25,0.125],"pivot":[0.0078,9.8476,-0.3163],"rotation":[-38.25,0,0],"uv":{"north":{"uv":[45,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,45],"uv_size":[0.25,0.25]},"south":{"uv":[46,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,46],"uv_size":[0.25,0.25]},"up":{"uv":[47,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,7.8882,-0.6011],"size":[0.0625,0.5938,0.25],"pivot":[-0.2031,8.4195,-0.3511],"rotation":[-73,0,0],"uv":{"north":{"uv":[33,27],"uv_size":[0.25,0.5]},"east":{"uv":[28,33],"uv_size":[0.25,0.5]},"south":{"uv":[33,28],"uv_size":[0.25,0.5]},"west":{"uv":[29,33],"uv_size":[0.25,0.5]},"up":{"uv":[48,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,8.2214,-0.3566],"size":[0.0625,0.3125,0.25],"pivot":[-0.2031,8.4714,-0.1066],"rotation":[-78,0,0],"uv":{"north":{"uv":[49,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,49],"uv_size":[0.25,0.25]},"south":{"uv":[50,50],"uv_size":[0.25,0.25]},"west":{"uv":[0,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,8.2476,-0.1079],"size":[0.0625,0.3125,0.25],"pivot":[-0.2031,8.4976,0.1421],"rotation":[-84,0,0],"uv":{"north":{"uv":[51,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,8.2301,0.1414],"size":[0.0625,0.3125,0.25],"pivot":[-0.2031,8.4801,0.3915],"rotation":[-94,0,0],"uv":{"north":{"uv":[51,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,8.157,0.3805],"size":[0.0625,0.3125,0.25],"pivot":[-0.2031,8.407,0.6305],"rotation":[-107,0,0],"uv":{"north":{"uv":[51,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,8.0191,0.589],"size":[0.0625,0.25,0.25],"pivot":[-0.2031,8.2691,0.839],"rotation":[-123.5,0,0],"uv":{"north":{"uv":[51,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,7.906,1.0579],"size":[0.0625,0.5156,0.25],"pivot":[-0.2031,8.3903,1.3079],"rotation":[-75.5,0,0],"uv":{"north":{"uv":[33,29],"uv_size":[0.25,0.5]},"east":{"uv":[30,33],"uv_size":[0.25,0.5]},"south":{"uv":[33,30],"uv_size":[0.25,0.5]},"west":{"uv":[31,33],"uv_size":[0.25,0.5]},"up":{"uv":[51,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,7.9469,1.5547],"size":[0.0625,0.5625,0.25],"pivot":[-0.2031,8.4469,1.8047],"rotation":[-83.5,0,0],"uv":{"north":{"uv":[33,31],"uv_size":[0.25,0.5]},"east":{"uv":[32,33],"uv_size":[0.25,0.5]},"south":{"uv":[33,32],"uv_size":[0.25,0.5]},"west":{"uv":[33,33],"uv_size":[0.25,0.5]},"up":{"uv":[51,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,7.9251,2.0543],"size":[0.0625,0.5625,0.25],"pivot":[-0.2031,8.4251,2.3043],"rotation":[-92.5,0,0],"uv":{"north":{"uv":[0,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,0],"uv_size":[0.25,0.5]},"south":{"uv":[1,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,1],"uv_size":[0.25,0.5]},"up":{"uv":[51,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,7.8276,2.5446],"size":[0.0625,0.5625,0.25],"pivot":[-0.2031,8.3276,2.7946],"rotation":[-101.25,0,0],"uv":{"north":{"uv":[2,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,2],"uv_size":[0.25,0.5]},"south":{"uv":[3,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,3],"uv_size":[0.25,0.5]},"up":{"uv":[51,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,7.6731,3.0202],"size":[0.0625,0.5,0.25],"pivot":[-0.2031,8.1731,3.2702],"rotation":[-108,0,0],"uv":{"north":{"uv":[4,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,4],"uv_size":[0.25,0.5]},"south":{"uv":[5,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,5],"uv_size":[0.25,0.5]},"up":{"uv":[51,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,7.7356,3.7546],"size":[0.0625,0.7344,0.5469],"pivot":[-0.2031,8.47,4.0046],"rotation":[-90,0,0],"uv":{"north":{"uv":[21,26],"uv_size":[0.25,0.75]},"east":{"uv":[19,6],"uv_size":[0.5,0.75]},"south":{"uv":[26,21],"uv_size":[0.25,0.75]},"west":{"uv":[7,19],"uv_size":[0.5,0.75]},"up":{"uv":[6,34],"uv_size":[0.25,0.5]},"down":{"uv":[34,6.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1641,8.1731,4.1296],"size":[0.0625,0.125,0.0938],"pivot":[-0.2031,8.2981,4.1296],"rotation":[-112.5,0,0],"uv":{"north":{"uv":[51,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,8.1731,3.8171],"size":[0.0625,0.097,0.1862],"pivot":[-0.2031,8.1731,4.0046],"rotation":[-67.5,0,0],"uv":{"north":{"uv":[51,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,8.345,4.1296],"size":[0.0625,0.25,0.2969],"pivot":[-0.2031,8.595,4.1296],"rotation":[-90,0,0],"uv":{"north":{"uv":[51,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,8.4238,4.0788],"size":[0.0625,0.25,0.0938],"pivot":[-0.2031,8.6738,4.0788],"rotation":[-57.25,0,0],"uv":{"north":{"uv":[51,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,8.1731,4.1296],"size":[0.0625,0.125,0.0938],"pivot":[0.2031,8.2981,4.1296],"rotation":[-112.5,0,0],"uv":{"north":{"uv":[51,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,8.1731,3.8171],"size":[0.0625,0.097,0.1862],"pivot":[0.2031,8.1731,4.0046],"rotation":[-67.5,0,0],"uv":{"north":{"uv":[51,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,7.8882,-0.6011],"size":[0.0625,0.5938,0.25],"pivot":[0.2031,8.4195,-0.3511],"rotation":[-73,0,0],"uv":{"north":{"uv":[7,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,7],"uv_size":[0.25,0.5]},"south":{"uv":[8,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,8],"uv_size":[0.25,0.5]},"up":{"uv":[51,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,8.2214,-0.3566],"size":[0.0625,0.3125,0.25],"pivot":[0.2031,8.4714,-0.1066],"rotation":[-78,0,0],"uv":{"north":{"uv":[51,37],"uv_size":[0.25,0.25]},"east":{"uv":[38,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,38],"uv_size":[0.25,0.25]},"west":{"uv":[39,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,39],"uv_size":[0.25,0.25]},"down":{"uv":[40,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,8.2476,-0.1079],"size":[0.0625,0.3125,0.25],"pivot":[0.2031,8.4976,0.1421],"rotation":[-84,0,0],"uv":{"north":{"uv":[51,40],"uv_size":[0.25,0.25]},"east":{"uv":[41,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,41],"uv_size":[0.25,0.25]},"west":{"uv":[42,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,42],"uv_size":[0.25,0.25]},"down":{"uv":[43,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,8.2301,0.1414],"size":[0.0625,0.3125,0.25],"pivot":[0.2031,8.4801,0.3915],"rotation":[-94,0,0],"uv":{"north":{"uv":[51,43],"uv_size":[0.25,0.25]},"east":{"uv":[44,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,44],"uv_size":[0.25,0.25]},"west":{"uv":[45,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,45],"uv_size":[0.25,0.25]},"down":{"uv":[46,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,8.157,0.3805],"size":[0.0625,0.3125,0.25],"pivot":[0.2031,8.407,0.6305],"rotation":[-107,0,0],"uv":{"north":{"uv":[51,46],"uv_size":[0.25,0.25]},"east":{"uv":[47,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,47],"uv_size":[0.25,0.25]},"west":{"uv":[48,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,48],"uv_size":[0.25,0.25]},"down":{"uv":[49,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,8.0191,0.589],"size":[0.0625,0.25,0.25],"pivot":[0.2031,8.2691,0.839],"rotation":[-123.5,0,0],"uv":{"north":{"uv":[51,49],"uv_size":[0.25,0.25]},"east":{"uv":[50,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,50],"uv_size":[0.25,0.25]},"west":{"uv":[51,51],"uv_size":[0.25,0.25]},"up":{"uv":[0,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,7.906,1.0579],"size":[0.0625,0.5156,0.25],"pivot":[0.2031,8.3903,1.3079],"rotation":[-75.5,0,0],"uv":{"north":{"uv":[9,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,9],"uv_size":[0.25,0.5]},"south":{"uv":[10,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,10],"uv_size":[0.25,0.5]},"up":{"uv":[1,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,7.9469,1.5547],"size":[0.0625,0.5625,0.25],"pivot":[0.2031,8.4469,1.8047],"rotation":[-83.5,0,0],"uv":{"north":{"uv":[11,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,11],"uv_size":[0.25,0.5]},"south":{"uv":[12,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,12],"uv_size":[0.25,0.5]},"up":{"uv":[2,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,7.9251,2.0543],"size":[0.0625,0.5625,0.25],"pivot":[0.2031,8.4251,2.3043],"rotation":[-92.5,0,0],"uv":{"north":{"uv":[13,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,13],"uv_size":[0.25,0.5]},"south":{"uv":[14,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,14],"uv_size":[0.25,0.5]},"up":{"uv":[3,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,7.8276,2.5446],"size":[0.0625,0.5625,0.25],"pivot":[0.2031,8.3276,2.7946],"rotation":[-101.25,0,0],"uv":{"north":{"uv":[15,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,15],"uv_size":[0.25,0.5]},"south":{"uv":[16,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,16],"uv_size":[0.25,0.5]},"up":{"uv":[4,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,7.6731,3.0202],"size":[0.0625,0.5,0.25],"pivot":[0.2031,8.1731,3.2702],"rotation":[-108,0,0],"uv":{"north":{"uv":[17,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,17],"uv_size":[0.25,0.5]},"south":{"uv":[18,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,18],"uv_size":[0.25,0.5]},"up":{"uv":[5,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,7.7356,3.7546],"size":[0.0625,0.7344,0.5469],"pivot":[0.2031,8.47,4.0046],"rotation":[-90,0,0],"uv":{"north":{"uv":[22,26],"uv_size":[0.25,0.75]},"east":{"uv":[9,19],"uv_size":[0.5,0.75]},"south":{"uv":[26,22],"uv_size":[0.25,0.75]},"west":{"uv":[19,9],"uv_size":[0.5,0.75]},"up":{"uv":[19,34],"uv_size":[0.25,0.5]},"down":{"uv":[34,19.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1016,8.345,4.1296],"size":[0.0625,0.25,0.2969],"pivot":[0.2031,8.595,4.1296],"rotation":[-90,0,0],"uv":{"north":{"uv":[6,52],"uv_size":[0.25,0.25]},"east":{"uv":[52,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1016,8.4238,4.0788],"size":[0.0625,0.25,0.0938],"pivot":[0.2031,8.6738,4.0788],"rotation":[-57.25,0,0],"uv":{"north":{"uv":[9,52],"uv_size":[0.25,0.25]},"east":{"uv":[52,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,8.7932,3.499],"size":[0.3281,0.25,0.6875],"pivot":[0.2031,9.0432,3.499],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[12,52],"uv_size":[0.25,0.25]},"east":{"uv":[23,26],"uv_size":[0.75,0.25]},"south":{"uv":[52,12],"uv_size":[0.25,0.25]},"west":{"uv":[26,23],"uv_size":[0.75,0.25]},"up":{"uv":[24,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,24.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1641,9.1249,2.8264],"size":[0.3281,0.25,0.75],"pivot":[0.2031,9.3749,2.8264],"rotation":[-26.25,0,0],"uv":{"north":{"uv":[13,52],"uv_size":[0.25,0.25]},"east":{"uv":[25,26],"uv_size":[0.75,0.25]},"south":{"uv":[52,13],"uv_size":[0.25,0.25]},"west":{"uv":[26,25],"uv_size":[0.75,0.25]},"up":{"uv":[26,26],"uv_size":[0.25,0.75]},"down":{"uv":[0,27.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1641,9.4856,-0.1161],"size":[0.3281,0.1875,0.8125],"pivot":[0.2031,9.6731,0.6339],"rotation":[-17,0,0],"uv":{"north":{"uv":[14,52],"uv_size":[0.25,0.25]},"east":{"uv":[27,0],"uv_size":[0.75,0.25]},"south":{"uv":[52,14],"uv_size":[0.25,0.25]},"west":{"uv":[1,27],"uv_size":[0.75,0.25]},"up":{"uv":[27,1],"uv_size":[0.25,0.75]},"down":{"uv":[2,27.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1587,9.4074,0.6278],"size":[0.3175,0.1875,0.5625],"pivot":[0.1978,9.5949,1.1278],"rotation":[-9,0,0],"uv":{"north":{"uv":[15,52],"uv_size":[0.25,0.25]},"east":{"uv":[20,34],"uv_size":[0.5,0.25]},"south":{"uv":[52,15],"uv_size":[0.25,0.25]},"west":{"uv":[34,20],"uv_size":[0.5,0.25]},"up":{"uv":[21,34],"uv_size":[0.25,0.5]},"down":{"uv":[34,21.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1641,9.4009,1.1277],"size":[0.3281,0.1875,0.5625],"pivot":[0.2031,9.5884,1.6277],"rotation":[-0.75,0,0],"uv":{"north":{"uv":[16,52],"uv_size":[0.25,0.25]},"east":{"uv":[22,34],"uv_size":[0.5,0.25]},"south":{"uv":[52,16],"uv_size":[0.25,0.25]},"west":{"uv":[34,22],"uv_size":[0.5,0.25]},"up":{"uv":[23,34],"uv_size":[0.25,0.5]},"down":{"uv":[34,23.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1641,9.4531,1.625],"size":[0.3281,0.1875,0.5],"pivot":[0.2031,9.6406,2.125],"rotation":[6,0,0],"uv":{"north":{"uv":[17,52],"uv_size":[0.25,0.25]},"east":{"uv":[24,34],"uv_size":[0.5,0.25]},"south":{"uv":[52,17],"uv_size":[0.25,0.25]},"west":{"uv":[34,24],"uv_size":[0.5,0.25]},"up":{"uv":[25,34],"uv_size":[0.25,0.5]},"down":{"uv":[34,25.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1641,9.3906,2.125],"size":[0.3281,0.25,0.75],"pivot":[0.2031,9.6406,2.125],"rotation":[-20.75,0,0],"uv":{"north":{"uv":[18,52],"uv_size":[0.25,0.25]},"east":{"uv":[27,2],"uv_size":[0.75,0.25]},"south":{"uv":[52,18],"uv_size":[0.25,0.25]},"west":{"uv":[3,27],"uv_size":[0.75,0.25]},"up":{"uv":[27,3],"uv_size":[0.25,0.75]},"down":{"uv":[4,27.75],"uv_size":[0.25,-0.75]}}}]},{"name":"body2","parent":"body","pivot":[-0.3594,8.4147,0.8449],"cubes":[{"origin":[-0.4169,8.3537,0.3449],"size":[0.0084,0.061,0.5],"inflate":0.001,"pivot":[-0.3594,8.4147,0.8449],"rotation":[-167.5,0,0],"uv":{"north":{"uv":[19,52],"uv_size":[0.25,0.25]},"east":{"uv":[26,34],"uv_size":[0.5,0.25]},"south":{"uv":[52,19],"uv_size":[0.25,0.25]},"west":{"uv":[34,26],"uv_size":[0.5,0.25]},"up":{"uv":[27,34],"uv_size":[0.25,0.5]},"down":{"uv":[34,27.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4157,8.0073,-0.9157],"size":[0.0084,1.061,0.0503],"inflate":0.001,"pivot":[-0.3581,8.0683,-0.4263],"rotation":[-70,0,0],"uv":{"north":{"uv":[3,24],"uv_size":[0.25,1]},"east":{"uv":[24,3],"uv_size":[0.25,1]},"south":{"uv":[4,24],"uv_size":[0.25,1]},"west":{"uv":[24,4],"uv_size":[0.25,1]},"up":{"uv":[53,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4157,8.3273,-0.0382],"size":[0.0084,0.1437,0.0503],"inflate":0.001,"pivot":[-0.3581,8.3883,0.4511],"rotation":[-85,0,0],"uv":{"north":{"uv":[53,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,53],"uv_size":[0.25,0.25]},"south":{"uv":[53,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,53],"uv_size":[0.25,0.25]},"up":{"uv":[53,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4157,8.3753,0.2047],"size":[0.0084,0.837,0.0503],"inflate":0.001,"pivot":[-0.3581,8.4363,0.694],"rotation":[-71.5,0,0],"uv":{"north":{"uv":[27,6],"uv_size":[0.25,0.75]},"east":{"uv":[7,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,7],"uv_size":[0.25,0.75]},"west":{"uv":[8,27],"uv_size":[0.25,0.75]},"up":{"uv":[53,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4157,8.8672,-2.0799],"size":[0.0084,0.026,0.0468],"inflate":0.001,"pivot":[-0.3581,7.9389,-1.5941],"rotation":[-84,0,0],"uv":{"north":{"uv":[53,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,53],"uv_size":[0.25,0.25]},"south":{"uv":[53,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,53],"uv_size":[0.25,0.25]},"up":{"uv":[53,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4157,9.1295,-2.1856],"size":[0.0084,0.0717,0.0503],"inflate":0.001,"pivot":[-0.3581,8.2011,-1.6963],"rotation":[-100,0,0],"uv":{"north":{"uv":[53,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,53],"uv_size":[0.25,0.25]},"south":{"uv":[53,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,53],"uv_size":[0.25,0.25]},"up":{"uv":[53,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4085,8.3537,0.3449],"size":[0.0084,0.061,0.5],"inflate":0.001,"pivot":[0.3594,8.4147,0.8449],"rotation":[-167.5,0,0],"uv":{"north":{"uv":[19.25,52],"uv_size":[-0.25,0.25]},"east":{"uv":[34.5,26],"uv_size":[-0.5,0.25]},"south":{"uv":[52.25,19],"uv_size":[-0.25,0.25]},"west":{"uv":[26.5,34],"uv_size":[-0.5,0.25]},"up":{"uv":[27.25,34],"uv_size":[-0.25,0.5]},"down":{"uv":[34.25,27.5],"uv_size":[-0.25,-0.5]}}},{"origin":[0.4073,8.3753,0.2047],"size":[0.0084,0.837,0.0503],"inflate":0.001,"pivot":[0.3581,8.4363,0.694],"rotation":[-71.5,0,0],"uv":{"north":{"uv":[27.25,6],"uv_size":[-0.25,0.75]},"east":{"uv":[8.25,27],"uv_size":[-0.25,0.75]},"south":{"uv":[27.25,7],"uv_size":[-0.25,0.75]},"west":{"uv":[7.25,27],"uv_size":[-0.25,0.75]},"up":{"uv":[53.25,13],"uv_size":[-0.25,0.25]},"down":{"uv":[14.25,53.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4073,8.3273,-0.0382],"size":[0.0084,0.1437,0.0503],"inflate":0.001,"pivot":[0.3581,8.3883,0.4511],"rotation":[-85,0,0],"uv":{"north":{"uv":[53.25,10],"uv_size":[-0.25,0.25]},"east":{"uv":[12.25,53],"uv_size":[-0.25,0.25]},"south":{"uv":[53.25,11],"uv_size":[-0.25,0.25]},"west":{"uv":[11.25,53],"uv_size":[-0.25,0.25]},"up":{"uv":[53.25,12],"uv_size":[-0.25,0.25]},"down":{"uv":[13.25,53.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4073,8.0073,-0.9157],"size":[0.0084,1.061,0.0503],"inflate":0.001,"pivot":[0.3581,8.0683,-0.4263],"rotation":[-70,0,0],"uv":{"north":{"uv":[3.25,24],"uv_size":[-0.25,1]},"east":{"uv":[24.25,4],"uv_size":[-0.25,1]},"south":{"uv":[4.25,24],"uv_size":[-0.25,1]},"west":{"uv":[24.25,3],"uv_size":[-0.25,1]},"up":{"uv":[53.25,3],"uv_size":[-0.25,0.25]},"down":{"uv":[4.25,53.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4073,9.1295,-2.1856],"size":[0.0084,0.0717,0.0503],"inflate":0.001,"pivot":[0.3581,8.2011,-1.6963],"rotation":[-100,0,0],"uv":{"north":{"uv":[53.25,7],"uv_size":[-0.25,0.25]},"east":{"uv":[9.25,53],"uv_size":[-0.25,0.25]},"south":{"uv":[53.25,8],"uv_size":[-0.25,0.25]},"west":{"uv":[8.25,53],"uv_size":[-0.25,0.25]},"up":{"uv":[53.25,9],"uv_size":[-0.25,0.25]},"down":{"uv":[10.25,53.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.4073,8.8672,-2.0799],"size":[0.0084,0.026,0.0468],"inflate":0.001,"pivot":[0.3581,7.9389,-1.5941],"rotation":[-84,0,0],"uv":{"north":{"uv":[53.25,4],"uv_size":[-0.25,0.25]},"east":{"uv":[6.25,53],"uv_size":[-0.25,0.25]},"south":{"uv":[53.25,5],"uv_size":[-0.25,0.25]},"west":{"uv":[5.25,53],"uv_size":[-0.25,0.25]},"up":{"uv":[53.25,6],"uv_size":[-0.25,0.25]},"down":{"uv":[7.25,53.25],"uv_size":[-0.25,-0.25]}}}]},{"name":"constraint","pivot":[-0.0156,8.125,1.9375]},{"name":"camera","pivot":[0,0.4219,-1.0651]},{"name":"view","pivot":[0,0,0]},{"name":"refit_view","parent":"view","pivot":[22.475,5.55,0.2],"rotation":[0,90,0]},{"name":"idle_view","parent":"view","pivot":[0,0.4219,-1.0651]},{"name":"positioning","pivot":[-0.0156,4.125,4.9375]},{"name":"ground","parent":"positioning","pivot":[0,0,0]},{"name":"thirdperson_hand","parent":"positioning","pivot":[-0.0156,6.125,-2.0625]},{"name":"fixed","parent":"positioning","pivot":[0.7969,5.125,-1.0625],"rotation":[0,90,0]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/null_annihil.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/null_annihil.anim.json new file mode 100644 index 0000000..c51d2a3 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/null_annihil.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"inspect":{"loop":true,"animation_length":13.4094,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-13.198,170.251,-58.765],"0.0417":[-11.668,166.596,-54.377],"0.0833":[-18.795,163.012,-51.695],"0.125":[-34.618,163.175,-54.575],"0.1667":[-50.873,157.486,-59.261],"0.2083":[-57.243,152.83,-62.523],"0.25":[-57.878,152.176,-63.045],"0.2917":[-57.243,152.83,-62.523],"0.3333":[-58.457,153.635,-62.186],"0.375":[-59.291,154.198,-61.935],"0.4167":[-60.576,155.071,-61.525],"0.4583":[-61.454,155.667,-61.231],"0.5":[-62.798,156.573,-60.764],"0.5417":[-63.711,157.178,-60.438],"0.5833":[-65.102,158.081,-59.932],"0.625":[-66.516,158.967,-59.413],"0.6667":[-67.469,159.541,-59.063],"0.7083":[-68.909,160.372,-58.541],"0.75":[-69.874,160.9,-58.196],"0.7917":[-71.327,161.646,-57.695],"0.8333":[-72.332,162.09,-57.391],"0.875":[-74.177,162.514,-57.143],"0.9167":[-75.458,162.689,-57.063],"0.9583":[-77.088,162.918,-56.949],"1.0":[-77.419,162.849,-56.969],"1.0417":[-76.028,163.314,-56.813],"1.0833":[-74.939,163.721,-56.683],"1.125":[-73.2,164.378,-56.491],"1.1667":[-71.936,164.865,-56.363],"1.2083":[-69.822,165.703,-56.167],"1.25":[-68.233,166.352,-56.038],"1.2917":[-65.013,167.656,-55.84],"1.3333":[-62.442,168.713,-55.735],"1.375":[-58.83,170.303,-55.646],"1.4167":[-56.656,171.553,-55.574],"1.4583":[-56.767,172.053,-55.447],"1.5":[-57.541,172.642,-55.2],"1.5417":[-57.67,173.007,-55.047],"1.5833":[-57.928,173.677,-54.623],"1.625":[-58.078,174.052,-54.353],"1.6667":[-58.322,174.649,-53.973],"1.7083":[-58.541,175.205,-53.674],"1.75":[-58.873,176.055,-53.245],"1.7917":[-59.098,176.63,-52.963],"1.8333":[-59.444,177.498,-52.531],"1.875":[-59.684,178.077,-52.227],"1.9167":[-60.06,178.939,-51.733],"1.9583":[-60.326,179.507,-51.369],"2.0":[-60.751,180.34,-50.754],"2.0417":[-61.056,180.878,-50.29],"2.0833":[-61.18,181.42,-49.304],"2.125":[-60.62,181.345,-48.233],"2.1667":[-59.434,181.009,-46.327],"2.2083":[-58.85,180.904,-45.085],"2.25":[-59.053,181.335,-43.669],"2.2917":[-60.363,182.245,-43.238],"2.3333":[-64.837,184.995,-43.622],"2.375":[-92.628,202.773,-49.417],"2.4167":[-104.086,210.173,-49.238],"2.4583":[-104.796,210.601,-48.948],"2.5":[-104.681,210.504,-48.432],"2.5417":[-103.914,210.02,-48.102],"2.5833":[-101.916,208.789,-47.713],"2.625":[-100.133,207.699,-47.565],"2.6667":[-96.988,205.763,-47.578],"2.7083":[-94.698,204.325,-47.788],"2.75":[-91.176,202.025,-48.497],"2.7917":[-87.798,199.637,-49.818],"2.8333":[-78.447,191.722,-61.848],"2.875":[-70.703,170.706,-40.043],"2.9167":[-56.754,166.176,-16.02],"2.9583":[-74.991,198.413,-8.971],"3.0":[-28.566,180.189,-58.558],"3.0417":[17.73,178.581,-70.771],"3.0833":[27.078,198.751,-88.714],"3.125":[48.912,246.768,-131.025],"3.1667":[167.718,254.726,-234.916],"3.2083":[205.613,210.391,-231.637],"3.25":[230.458,191.932,-220.297],"3.2917":[249.347,209.687,-210.144],"3.3333":[268.412,235.937,-231.497],"3.375":[349.588,182.567,-305.934],"3.4167":[339.312,134.111,-335.95],"3.4583":[409.453,82.282,-296.61],"3.5":[393.536,48.244,-341.501],"3.5417":[425.819,32.338,-341.15],"3.5833":[467.082,42.565,-298.35],"3.625":[491.538,27.942,-251.871],"3.6667":[502.688,5.875,-208.564],"3.7083":[503.895,-11.438,-180.315],"3.75":[485.016,-41.648,-126.685],"3.7917":[457.075,-62.754,-94.955],"3.8333":[421.222,-78.465,-65.567],"3.875":[414.316,-79.801,-58.528],"3.9167":[417.418,-77.216,-58.715],"3.9583":[420.727,-76.737,-61.114],"4.0":[424.381,-76.404,-64.133],"4.0417":[425.442,-76.43,-65.158],"4.0833":[426.187,-76.448,-66.044],"4.125":[425.555,-76.379,-65.542],"4.1667":[423.978,-76.205,-64.114],"4.2083":[423.651,-76.163,-63.9],"4.25":[423.92,-76.186,-64.319],"4.2917":[424.349,-76.232,-64.844],"4.3333":[424.859,-76.272,-65.462],"4.375":[424.953,-76.265,-65.592],"4.4167":[424.9,-76.261,-65.606],"4.4583":[424.785,-76.291,-65.554],"4.5":[424.563,-76.388,-65.462],"4.5417":[424.285,-76.447,-65.317],"4.5833":[423.905,-76.732,-65.239],"4.625":[423.784,-77.129,-65.402],"4.6667":[423.41,-77.886,-65.512],"4.7083":[423.156,-78.466,-65.608],"4.75":[422.92,-79.323,-65.864],"4.7917":[423.593,-80.475,-67.239],"4.8333":[425.061,-81.157,-69.2],"4.875":[429.138,-81.565,-73.831],"4.9167":[432.29,-81.547,-77.282],"4.9583":[436.333,-80.647,-81.537],"5.0":[438.169,-79.608,-83.385],"5.0417":[439.263,-79.029,-84.708],"5.0833":[438.976,-79.056,-84.62],"5.125":[436.634,-79.151,-82.408],"5.1667":[435.822,-78.714,-81.625],"5.2083":[435.94,-77.377,-81.719],"5.25":[436.643,-76.339,-82.296],"5.2917":[455.795,-76.056,-96.312],"5.3333":[484.68,-75.617,-115.536],"5.375":[549.454,-59.568,-163.522],"5.4167":[556.577,-12.433,-165.82],"5.4583":[492.147,47.04,-198.595],"5.5":[457.416,33.601,-223.977],"5.5417":[433.475,21.274,-234.154],"5.5833":[425.576,6.923,-233.615],"5.625":[424.534,-2.024,-229.253],"5.6667":[425.222,-13.797,-219.717],"5.7083":[429.462,-19.601,-211.25],"5.75":[438.39,-29.271,-196.577],"5.7917":[440.794,-38.311,-184.945],"5.8333":[409.71,-59.474,-137.323],"5.875":[413.49,-59.315,-118.772],"5.9167":[474.219,-63.901,-161.058],"5.9583":[484.22,-62.481,-171.755],"6.0":[488.783,-61.501,-180.393],"6.0417":[496.769,-58.633,-192.058],"6.0833":[504.182,-54.104,-204.231],"6.125":[507.065,-51.461,-209.64],"6.1667":[510.183,-47.539,-216.361],"6.2083":[511.444,-45.427,-219.529],"6.25":[512.244,-43.835,-221.761],"6.2917":[512.351,-43.603,-222.077],"6.3333":[512.505,-43.262,-222.537],"6.375":[512.603,-43.04,-222.835],"6.4167":[512.742,-42.714,-223.268],"6.4583":[512.832,-42.501,-223.549],"6.5":[512.959,-42.188,-223.957],"6.5417":[513.04,-41.984,-224.222],"6.5833":[513.156,-41.684,-224.608],"6.625":[513.23,-41.489,-224.858],"6.6667":[513.335,-41.202,-225.222],"6.7083":[513.402,-41.015,-225.458],"6.75":[513.499,-40.741,-225.801],"6.7917":[513.56,-40.562,-226.024],"6.8333":[513.648,-40.3,-226.349],"6.875":[513.704,-40.129,-226.56],"6.9167":[513.785,-39.879,-226.867],"6.9583":[513.86,-39.635,-227.164],"7.0":[513.909,-39.476,-227.357],"7.0417":[513.979,-39.242,-227.638],"7.0833":[514.023,-39.09,-227.821],"7.125":[514.088,-38.867,-228.088],"7.1667":[514.128,-38.721,-228.262],"7.2083":[514.187,-38.508,-228.515],"7.25":[514.225,-38.369,-228.68],"7.2917":[514.279,-38.164,-228.92],"7.3333":[514.314,-38.03,-229.077],"7.375":[514.363,-37.834,-229.306],"7.4167":[514.395,-37.707,-229.454],"7.4583":[514.441,-37.518,-229.674],"7.5":[514.47,-37.397,-229.815],"7.5417":[514.514,-37.216,-230.024],"7.5833":[514.541,-37.097,-230.16],"7.625":[514.581,-36.923,-230.359],"7.6667":[514.606,-36.81,-230.489],"7.7083":[514.643,-36.642,-230.68],"7.75":[514.678,-36.478,-230.867],"7.7917":[514.7,-36.37,-230.989],"7.8333":[514.734,-36.211,-231.169],"7.875":[514.755,-36.107,-231.287],"7.9167":[514.786,-35.952,-231.461],"7.9583":[514.806,-35.851,-231.575],"8.0":[514.835,-35.7,-231.743],"8.0417":[514.854,-35.601,-231.854],"8.0833":[514.881,-35.455,-232.018],"8.125":[514.899,-35.358,-232.126],"8.1667":[514.925,-35.214,-232.286],"8.2083":[514.942,-35.119,-232.391],"8.25":[514.966,-34.976,-232.548],"8.2917":[514.982,-34.883,-232.652],"8.3333":[515.006,-34.742,-232.807],"8.375":[515.021,-34.65,-232.909],"8.4167":[515.044,-34.511,-233.062],"8.4583":[515.059,-34.418,-233.163],"8.5":[515.081,-34.279,-233.315],"8.5417":[515.095,-34.187,-233.416],"8.5833":[515.116,-34.047,-233.568],"8.625":[515.129,-33.955,-233.668],"8.6667":[515.149,-33.815,-233.82],"8.7083":[515.163,-33.721,-233.921],"8.75":[515.182,-33.58,-234.074],"8.7917":[515.195,-33.485,-234.176],"8.8333":[515.214,-33.342,-234.33],"8.875":[515.227,-33.245,-234.434],"8.9167":[515.245,-33.099,-234.59],"8.9583":[515.263,-32.951,-234.749],"9.0":[515.275,-32.851,-234.855],"9.0417":[515.293,-32.7,-235.017],"9.0833":[515.305,-32.597,-235.126],"9.125":[515.322,-32.441,-235.291],"9.1667":[515.333,-32.336,-235.403],"9.2083":[515.35,-32.175,-235.573],"9.25":[515.362,-32.066,-235.688],"9.2917":[515.378,-31.899,-235.863],"9.3333":[515.389,-31.786,-235.981],"9.375":[515.404,-31.613,-236.161],"9.4167":[515.414,-31.496,-236.284],"9.4583":[515.429,-31.316,-236.471],"9.5":[515.439,-31.194,-236.598],"9.5417":[515.454,-31.008,-236.792],"9.5833":[515.464,-30.881,-236.924],"9.625":[515.478,-30.687,-237.125],"9.6667":[515.478,-30.692,-237.123],"9.7083":[515.538,-29.622,-238.217],"9.75":[515.585,-27.772,-240.073],"9.7917":[515.555,-25.567,-242.245],"9.8333":[515.308,-21.918,-245.772],"9.875":[515.002,-19.412,-248.166],"9.9167":[514.329,-15.582,-251.816],"9.9583":[513.735,-13.005,-254.287],"10.0":[512.629,-9.147,-258.051],"10.0417":[511.751,-6.603,-260.596],"10.0833":[510.232,-2.869,-264.466],"10.125":[509.09,-0.456,-267.077],"10.1667":[507.199,3.009,-271.031],"10.2083":[505.831,5.201,-273.686],"10.25":[503.613,8.316,-277.723],"10.2917":[502.024,10.277,-280.46],"10.3333":[499.477,13.041,-284.641],"10.375":[497.664,14.768,-287.496],"10.4167":[494.759,17.181,-291.915],"10.4583":[492.7,18.661,-294.955],"10.5":[489.432,20.677,-299.659],"10.5417":[487.139,21.875,-302.89],"10.5833":[483.538,23.436,-307.871],"10.625":[481.04,24.311,-311.277],"10.6667":[477.166,25.363,-316.494],"10.7083":[474.515,25.884,-320.035],"10.75":[470.462,26.383,-325.413],"10.7917":[467.73,26.525,-329.027],"10.8333":[463.631,26.448,-334.444],"10.875":[460.917,26.205,-338.035],"10.9167":[456.726,25.52,-343.608],"10.9583":[454.252,24.931,-346.922],"11.0":[451.239,24.016,-350.992],"11.0417":[448.663,23.04,-354.534],"11.0833":[446.53,22.082,-357.524],"11.125":[443.004,20.039,-362.92],"11.1667":[440.955,18.68,-366.042],"11.2083":[438.593,16.913,-369.689],"11.25":[437.111,15.575,-372.214],"11.2917":[435.046,13.361,-376.078],"11.3333":[433.781,11.766,-378.67],"11.375":[432.055,9.237,-382.531],"11.4167":[431.015,7.485,-385.059],"11.4583":[429.608,4.8,-388.738],"11.5":[428.759,2.999,-391.09],"11.5417":[427.593,0.323,-394.426],"11.5833":[426.866,-1.418,-396.498],"11.625":[425.814,-3.925,-399.327],"11.6667":[425.114,-5.504,-401.002],"11.7083":[424.014,-7.696,-403.142],"11.75":[423.221,-9.013,-404.292],"11.7917":[421.891,-10.737,-405.545],"11.8333":[420.885,-11.69,-406.034],"11.875":[419.159,-12.771,-406.195],"11.9167":[410.572,2.535,-385.659],"11.9583":[408.452,15.257,-371.521],"12.0":[407.676,14.761,-371.933],"12.0417":[408.451,15.258,-371.521],"12.0833":[412.387,23.495,-361.693],"12.125":[416.484,28.854,-353.496],"12.1667":[425.33,35.943,-338.455],"12.2083":[433.129,39.527,-326.586],"12.25":[447.052,42.381,-306.754],"12.2917":[456.885,42.368,-293.167],"12.3333":[470.596,39.752,-274.203],"12.375":[478.382,36.762,-263.246],"12.4167":[487.882,31.412,-249.664],"12.4583":[493.593,30.709,-244.272],"12.5":[508.386,45.621,-243.028],"12.5417":[522.813,44.101,-230.449],"12.5833":[533.982,31.613,-226.034],"12.625":[532.957,22.312,-235.611],"12.6667":[530.471,13.721,-246.193],"12.7083":[529.584,10.058,-247.292],"12.75":[528.877,7.914,-243.257],"12.7917":[528.557,6.941,-240.809],"12.8333":[528.051,6.063,-238.119],"12.875":[527.593,6.086,-237.729],"12.9167":[527.028,6.543,-238.142],"12.9583":[527.043,6.88,-238.419],"13.0":[527.153,7.275,-239.298],"13.0417":[527.097,7.341,-240.226],"13.0833":[526.939,7.689,-241.02],"13.125":[526.76,8.149,-241.333],"13.1667":[526.728,8.323,-241.319],"13.2083":[526.674,8.335,-241.155],"13.25":[526.583,8.158,-241.015],"13.2917":[526.538,8.014,-240.879],"13.3333":[526.542,7.976,-240.824],"13.375":[526.509,7.969,-240.787],"13.4167":[526.497,7.971,-240.779]},"position":{"0.0":[5.392,40.054,-9.384],"0.0417":[7.139,40.702,-9.036],"0.0833":[10.461,38.902,-7.957],"0.125":[13.428,34.87,-6.627],"0.1667":[15.001,28.819,-8.216],"0.2083":[14.878,25.774,-10.141],"0.25":[14.868,25.366,-10.27],"0.2917":[14.878,25.774,-10.141],"0.3333":[15.009,25.913,-10.425],"0.375":[15.092,26.016,-10.626],"0.4167":[15.214,26.183,-10.941],"0.4583":[15.296,26.301,-11.159],"0.5":[15.421,26.48,-11.492],"0.5417":[15.508,26.599,-11.716],"0.5833":[15.648,26.773,-12.054],"0.625":[15.801,26.936,-12.388],"0.6667":[15.913,27.035,-12.606],"0.7083":[16.098,27.164,-12.923],"0.75":[16.235,27.235,-13.125],"0.7917":[16.464,27.314,-13.413],"0.8333":[16.662,27.321,-13.581],"0.875":[17.258,27.048,-13.711],"0.9167":[17.744,26.772,-13.746],"0.9583":[18.358,26.425,-13.795],"1.0":[18.375,26.406,-13.802],"1.0417":[18.434,26.436,-13.789],"1.0833":[18.51,26.448,-13.783],"1.125":[18.632,26.466,-13.774],"1.1667":[18.723,26.479,-13.767],"1.2083":[18.881,26.502,-13.756],"1.25":[19.006,26.52,-13.747],"1.2917":[19.249,26.555,-13.728],"1.3333":[19.445,26.584,-13.714],"1.375":[19.758,26.626,-13.692],"1.4167":[20.063,26.658,-13.675],"1.4583":[20.272,26.67,-13.668],"1.5":[20.582,26.684,-13.66],"1.5417":[20.754,26.698,-13.655],"1.5833":[21.112,26.74,-13.65],"1.625":[21.323,26.767,-13.647],"1.6667":[21.653,26.807,-13.643],"1.7083":[22.005,26.849,-13.637],"1.75":[22.458,26.895,-13.63],"1.7917":[22.705,26.915,-13.625],"1.8333":[23.05,26.939,-13.617],"1.875":[23.273,26.954,-13.612],"1.9167":[23.614,26.977,-13.604],"1.9583":[23.855,26.997,-13.599],"2.0":[24.253,27.037,-13.592],"2.0417":[24.554,27.074,-13.588],"2.0833":[25.084,27.141,-13.583],"2.125":[25.502,27.189,-13.581],"2.1667":[26.191,27.268,-13.579],"2.2083":[26.668,27.331,-13.578],"2.25":[27.37,27.445,-13.575],"2.2917":[27.807,27.538,-13.571],"2.3333":[28.377,27.708,-13.562],"2.375":[28.266,28.112,-13.526],"2.4167":[27.694,28.835,-13.482],"2.4583":[27.309,29.27,-13.444],"2.5":[26.716,29.895,-13.373],"2.5417":[26.314,30.304,-13.322],"2.5833":[25.707,30.926,-13.25],"2.625":[25.305,31.357,-13.21],"2.6667":[24.71,32.048,-13.172],"2.7083":[24.324,32.549,-13.167],"2.75":[23.767,33.381,-13.198],"2.7917":[23.245,34.333,-13.287],"2.8333":[23.402,36.445,-14.103],"2.875":[22.228,41.088,-15.599],"2.9167":[18.322,42.238,-16.469],"2.9583":[9.208,42.362,-16.778],"3.0":[3.031,40.198,-13.908],"3.0417":[1.692,39.273,-10.799],"3.0833":[1.272,39.506,-10.315],"3.125":[1.021,40.623,-10.468],"3.1667":[1.32,41.578,-11.391],"3.2083":[2.395,42.786,-13.288],"3.25":[3.626,42.608,-13.959],"3.2917":[5.898,41.094,-13.773],"3.3333":[7.377,39.673,-12.719],"3.375":[8.345,40.326,-10.607],"3.4167":[8.788,41.235,-10.276],"3.4583":[9.126,41.65,-12.029],"3.5":[8.601,41.788,-13.269],"3.5417":[8.242,42.145,-14.321],"3.5833":[8.641,43.092,-14.089],"3.625":[9.18,43.381,-14.164],"3.6667":[9.986,43.234,-14.547],"3.7083":[10.363,42.735,-14.552],"3.75":[10.709,40.732,-14.01],"3.7917":[10.911,39.094,-13.371],"3.8333":[11.439,39.5,-12.402],"3.875":[11.654,40.323,-12.114],"3.9167":[11.749,41.375,-12.186],"3.9583":[11.702,41.624,-12.249],"4.0":[11.617,41.831,-12.323],"4.0417":[11.564,41.891,-12.352],"4.0833":[11.495,41.929,-12.375],"4.125":[11.461,41.924,-12.382],"4.1667":[11.431,41.894,-12.386],"4.2083":[11.42,41.866,-12.382],"4.25":[11.413,41.833,-12.379],"4.2917":[11.412,41.815,-12.378],"4.3333":[11.412,41.79,-12.376],"4.375":[11.415,41.777,-12.374],"4.4167":[11.421,41.759,-12.371],"4.4583":[11.425,41.75,-12.37],"4.5":[11.432,41.739,-12.369],"4.5417":[11.437,41.732,-12.368],"4.5833":[11.449,41.716,-12.365],"4.625":[11.464,41.7,-12.36],"4.6667":[11.479,41.664,-12.348],"4.7083":[11.482,41.63,-12.338],"4.75":[11.468,41.563,-12.325],"4.7917":[11.435,41.438,-12.298],"4.8333":[11.415,41.332,-12.277],"4.875":[11.403,41.175,-12.256],"4.9167":[11.405,41.075,-12.244],"4.9583":[11.443,40.956,-12.225],"5.0":[11.496,40.896,-12.211],"5.0417":[11.623,40.838,-12.178],"5.0833":[11.736,40.824,-12.156],"5.125":[11.914,40.828,-12.149],"5.1667":[12.051,40.856,-12.143],"5.2083":[12.279,40.924,-12.129],"5.25":[12.495,40.995,-12.113],"5.2917":[14.927,41.755,-11.16],"5.3333":[18.973,42.453,-10.822],"5.375":[28.008,41.322,-10.421],"5.4167":[31.927,39.965,-8.732],"5.4583":[33.373,36.164,-11.484],"5.5":[32.141,32.157,-12.159],"5.5417":[29.005,31.246,-14.253],"5.5833":[24.548,31.552,-15.346],"5.625":[21.867,31.969,-15.863],"5.6667":[18.866,32.463,-16.364],"5.7083":[17.772,32.76,-16.43],"5.75":[16.686,33.324,-16.391],"5.7917":[15.706,33.913,-16.45],"5.8333":[13.204,36.937,-16.502],"5.875":[14.071,37.212,-15.875],"5.9167":[15.265,32.797,-13.677],"5.9583":[14.955,30.478,-13.132],"6.0":[14.318,27.904,-12.735],"6.0417":[14.165,27.2,-12.601],"6.0833":[14.105,27.037,-12.572],"6.125":[14.08,27.003,-12.568],"6.1667":[14.06,27.035,-12.576],"6.2083":[14.054,27.078,-12.586],"6.25":[14.05,27.118,-12.594],"6.2917":[14.049,27.119,-12.595],"6.3333":[14.048,27.121,-12.595],"6.375":[14.047,27.123,-12.595],"6.4167":[14.045,27.125,-12.596],"6.4583":[14.044,27.126,-12.596],"6.5":[14.042,27.128,-12.596],"6.5417":[14.041,27.129,-12.597],"6.5833":[14.04,27.131,-12.597],"6.625":[14.039,27.133,-12.597],"6.6667":[14.038,27.135,-12.598],"6.7083":[14.037,27.136,-12.598],"6.75":[14.035,27.138,-12.598],"6.7917":[14.035,27.139,-12.598],"6.8333":[14.033,27.141,-12.599],"6.875":[14.033,27.142,-12.599],"6.9167":[14.031,27.143,-12.599],"6.9583":[14.03,27.145,-12.6],"7.0":[14.03,27.146,-12.6],"7.0417":[14.029,27.148,-12.6],"7.0833":[14.028,27.149,-12.6],"7.125":[14.027,27.151,-12.6],"7.1667":[14.026,27.152,-12.601],"7.2083":[14.026,27.153,-12.601],"7.25":[14.025,27.154,-12.601],"7.2917":[14.024,27.156,-12.601],"7.3333":[14.024,27.157,-12.601],"7.375":[14.023,27.158,-12.602],"7.4167":[14.022,27.159,-12.602],"7.4583":[14.022,27.161,-12.602],"7.5":[14.021,27.162,-12.602],"7.5417":[14.02,27.163,-12.602],"7.5833":[14.02,27.164,-12.603],"7.625":[14.019,27.166,-12.603],"7.6667":[14.019,27.167,-12.603],"7.7083":[14.018,27.168,-12.603],"7.75":[14.018,27.169,-12.603],"7.7917":[14.017,27.17,-12.603],"7.8333":[14.017,27.172,-12.604],"7.875":[14.016,27.173,-12.604],"7.9167":[14.016,27.174,-12.604],"7.9583":[14.015,27.175,-12.604],"8.0":[14.015,27.177,-12.604],"8.0417":[14.015,27.178,-12.604],"8.0833":[14.014,27.179,-12.605],"8.125":[14.014,27.18,-12.605],"8.1667":[14.013,27.181,-12.605],"8.2083":[14.013,27.182,-12.605],"8.25":[14.012,27.184,-12.605],"8.2917":[14.012,27.185,-12.605],"8.3333":[14.012,27.186,-12.606],"8.375":[14.011,27.187,-12.606],"8.4167":[14.011,27.189,-12.606],"8.4583":[14.011,27.19,-12.606],"8.5":[14.01,27.191,-12.606],"8.5417":[14.01,27.192,-12.607],"8.5833":[14.009,27.194,-12.607],"8.625":[14.009,27.195,-12.607],"8.6667":[14.009,27.197,-12.607],"8.7083":[14.008,27.198,-12.607],"8.75":[14.008,27.199,-12.608],"8.7917":[14.007,27.2,-12.608],"8.8333":[14.007,27.202,-12.608],"8.875":[14.007,27.203,-12.608],"8.9167":[14.006,27.205,-12.609],"8.9583":[14.005,27.207,-12.609],"9.0":[14.005,27.208,-12.609],"9.0417":[14.004,27.21,-12.609],"9.0833":[14.004,27.211,-12.61],"9.125":[14.003,27.213,-12.61],"9.1667":[14.003,27.214,-12.61],"9.2083":[14.002,27.216,-12.611],"9.25":[14.002,27.217,-12.611],"9.2917":[14.001,27.219,-12.611],"9.3333":[14.001,27.221,-12.611],"9.375":[14,27.223,-12.612],"9.4167":[14,27.224,-12.612],"9.4583":[13.999,27.227,-12.613],"9.5":[13.999,27.232,-12.614],"9.5417":[13.998,27.244,-12.616],"9.5833":[13.998,27.254,-12.618],"9.625":[13.997,27.268,-12.621],"9.6667":[13.997,27.276,-12.622],"9.7083":[13.993,27.29,-12.625],"9.75":[13.986,27.303,-12.629],"9.7917":[13.976,27.306,-12.631],"9.8333":[13.959,27.31,-12.635],"9.875":[13.948,27.311,-12.637],"9.9167":[13.931,27.314,-12.64],"9.9583":[13.919,27.315,-12.643],"10.0":[13.901,27.317,-12.647],"10.0417":[13.89,27.318,-12.649],"10.0833":[13.872,27.321,-12.653],"10.125":[13.861,27.322,-12.656],"10.1667":[13.845,27.325,-12.66],"10.2083":[13.834,27.327,-12.663],"10.25":[13.819,27.331,-12.668],"10.2917":[13.808,27.333,-12.671],"10.3333":[13.794,27.338,-12.676],"10.375":[13.784,27.342,-12.68],"10.4167":[13.769,27.348,-12.687],"10.4583":[13.76,27.352,-12.691],"10.5":[13.746,27.359,-12.697],"10.5417":[13.736,27.364,-12.701],"10.5833":[13.722,27.371,-12.707],"10.625":[13.713,27.376,-12.712],"10.6667":[13.699,27.385,-12.718],"10.7083":[13.69,27.39,-12.722],"10.75":[13.676,27.399,-12.727],"10.7917":[13.666,27.405,-12.731],"10.8333":[13.652,27.414,-12.737],"10.875":[13.643,27.421,-12.74],"10.9167":[13.629,27.431,-12.746],"10.9583":[13.62,27.438,-12.75],"11.0":[13.609,27.446,-12.754],"11.0417":[13.598,27.457,-12.756],"11.0833":[13.586,27.469,-12.755],"11.125":[13.568,27.481,-12.762],"11.1667":[13.556,27.488,-12.767],"11.2083":[13.541,27.496,-12.775],"11.25":[13.532,27.502,-12.78],"11.2917":[13.517,27.51,-12.789],"11.3333":[13.507,27.516,-12.794],"11.375":[13.492,27.525,-12.803],"11.4167":[13.482,27.53,-12.808],"11.4583":[13.467,27.539,-12.815],"11.5":[13.456,27.544,-12.819],"11.5417":[13.441,27.552,-12.823],"11.5833":[13.43,27.557,-12.826],"11.625":[13.414,27.564,-12.828],"11.6667":[13.404,27.568,-12.833],"11.7083":[13.388,27.574,-12.842],"11.75":[13.378,27.578,-12.846],"11.7917":[13.363,27.583,-12.842],"11.8333":[13.355,27.587,-12.831],"11.875":[13.343,27.59,-12.792],"11.9167":[13.351,27.576,-12.6],"11.9583":[13.352,27.563,-12.474],"12.0":[13.353,27.563,-12.457],"12.0417":[13.352,27.563,-12.474],"12.0833":[13.284,27.364,-12.613],"12.125":[13.205,27.137,-12.77],"12.1667":[13.131,26.936,-12.907],"12.2083":[13.168,27.061,-12.816],"12.25":[13.47,27.917,-12.2],"12.2917":[13.934,28.983,-11.37],"12.3333":[14.85,31.079,-9.747],"12.375":[15.45,32.64,-8.614],"12.4167":[16.061,34.939,-7.186],"12.4583":[15.97,36.323,-6.805],"12.5":[13.761,38.267,-7.854],"12.5417":[11.176,39.206,-8.213],"12.5833":[5.766,40.092,-9.055],"12.625":[4.203,39.895,-9.351],"12.6667":[3.962,39.468,-9.221],"12.7083":[4.224,39.264,-9.193],"12.75":[4.823,39.285,-9.303],"12.7917":[4.95,39.376,-9.381],"12.8333":[4.989,39.551,-9.481],"12.875":[4.946,39.627,-9.519],"12.9167":[4.821,39.693,-9.556],"12.9583":[4.747,39.69,-9.57],"13.0":[4.644,39.641,-9.573],"13.0417":[4.588,39.593,-9.564],"13.0833":[4.553,39.546,-9.547],"13.125":[4.549,39.52,-9.528],"13.1667":[4.552,39.51,-9.52],"13.2083":[4.559,39.507,-9.515],"13.25":[4.563,39.512,-9.517],"13.2917":[4.566,39.517,-9.52],"13.3333":[4.566,39.521,-9.523],"13.375":[4.564,39.524,-9.526],"13.4167":[4.562,39.525,-9.527]}},"lefthand_1":{"rotation":{"3.0":[0,0,0],"3.125":[0,0,-27.5],"3.4583":[0,0,0]},"position":{"0.0":[0,2.5,0],"3.0":[0,2.5,0]},"scale":{"0.0":[1,1.5,1],"3.0":[1,1.5,1]}},"righthand":{"rotation":{"0.0":[-37.13,-182.626,74.147],"0.0417":[-41.203,-211.924,51.251],"0.0833":[-61.558,-239.916,12.207],"0.125":[-38.718,-247.003,9.908],"0.1667":[-90.396,-234.482,-47.54],"0.2083":[-91.383,-221.935,-48.751],"0.25":[-108.97,-209.836,-67.825],"0.2917":[-112.285,-205.597,-75.047],"0.3333":[-95.247,-195.472,-83.441],"0.375":[-80.011,-191.849,-92.641],"0.4167":[-62.908,-196.808,-101.567],"0.4583":[-49.882,-200.59,-91.368],"0.5":[-16.502,-166.56,-50.983],"0.5417":[-29.025,-150.104,-36.416],"0.5833":[-83.983,-134.123,42.427],"0.625":[-108.716,-171.211,84.149],"0.6667":[-95.318,-187.077,109.019],"0.7083":[-62.78,-186.527,167.526],"0.75":[-56.022,-177.407,205.249],"0.7917":[-62.994,-175.733,243.159],"0.8333":[-84.545,-167.705,245.293],"0.875":[-98.457,-126.194,208.09],"0.9167":[-58.512,-126.93,146.26],"0.9583":[-90.804,-130.377,109.806],"1.0":[-93.386,-128.435,62.954],"1.0417":[-116.03,-182.246,-21.913],"1.0833":[-120.923,-205.144,-17.816],"1.125":[-71.772,-204.778,65.273],"1.1667":[-57.551,-176.183,106.28],"1.2083":[-40.789,-144.975,128.344],"1.25":[-16.702,-140.824,105.631],"1.2917":[0.027,-171.891,69.131],"1.3333":[-7.301,-207.61,52.077],"1.375":[-64.966,-245.421,-11.975],"1.4167":[-145.509,-234.68,-94.26],"1.4583":[-150.719,-217.055,-105.925],"1.5":[-126.331,-192.629,-117.385],"1.5417":[-108.447,-190.454,-122.534],"1.5833":[-80.016,-194.789,-109.007],"1.625":[-58.925,-195.891,-92.115],"1.6667":[-22.687,-179.055,-57.027],"1.7083":[-27.968,-151.023,-29.974],"1.75":[-77.79,-144.402,19.752],"1.7917":[-92.006,-152.272,44.14],"1.8333":[-90.512,-159.918,73.491],"1.875":[-82.126,-159.433,84.62],"1.9167":[-53.958,-148.112,73.725],"1.9583":[-29.048,-149.755,46.414],"2.0":[-17.782,-181.317,11.842],"2.0417":[-30.446,-211.55,-6.352],"2.0833":[-87.47,-229.551,-58.156],"2.125":[-104.851,-215.772,-70.718],"2.1667":[-127.398,-210.793,-55.884],"2.2083":[-133.126,-233.449,-22.783],"2.25":[-68.827,-232.1,59.181],"2.2917":[-56.061,-213.168,84.595],"2.3333":[-71.459,-175.059,114.23],"2.375":[-80.906,-173.629,166.889],"2.4167":[-87.463,-171.949,134.493],"2.4583":[-81.508,-163.428,87.714],"2.5":[-73.371,-170.085,26.039],"2.5417":[-92.707,-179.757,-1.758],"2.5833":[-95.593,-179.813,-8.793],"2.625":[-96.887,-179.607,-12.521],"2.6667":[-98.024,-179.13,-16.904],"2.7083":[-98.343,-178.766,-19.166],"2.75":[-98.328,-178.211,-21.818],"2.7917":[-97.924,-177.676,-23.877],"2.8333":[-97.548,-177.334,-25.084],"2.875":[-96.981,-176.841,-26.889],"2.9167":[-96.693,-176.521,-28.227],"2.9583":[-96.551,-176.04,-30.677],"3.0":[-96.657,-175.786,-32.213],"3.0417":[-96.202,-175.315,-34.09],"3.0833":[-95.551,-174.657,-36.811],"3.125":[-95.175,-174.348,-38.204],"3.1667":[-94.948,-174.128,-39.128],"3.2083":[-94.632,-173.782,-40.506],"3.25":[-94.434,-173.547,-41.417],"3.2917":[-94.145,-173.196,-42.767],"3.3333":[-93.955,-172.965,-43.655],"3.375":[-93.664,-172.634,-44.964],"3.4167":[-93.462,-172.428,-45.819],"3.4583":[-93.142,-172.148,-47.074],"3.5":[-92.912,-171.987,-47.888],"3.5417":[-92.538,-171.792,-49.074],"3.5833":[-92.121,-171.662,-50.211],"3.625":[-91.814,-171.62,-50.94],"3.6667":[-91.308,-171.628,-51.983],"3.7083":[-90.936,-171.689,-52.643],"3.75":[-90.322,-171.869,-53.575],"3.7917":[-89.203,-172.712,-53.679],"3.8333":[-85.36,-177.957,-49.734],"3.875":[-85.837,-180.658,-46.805],"3.9167":[-86.76,-184.881,-42.275],"3.9583":[-87.417,-187.794,-39.203],"4.0":[-88.306,-192.258,-34.566],"4.0417":[-88.748,-195.255,-31.469],"4.0833":[-89.046,-199.691,-26.825],"4.125":[-88.922,-202.545,-23.725],"4.1667":[-88.127,-206.549,-19.055],"4.2083":[-87.124,-208.954,-15.924],"4.25":[-84.82,-212.021,-11.207],"4.2917":[-82.565,-213.429,-8.131],"4.3333":[-76.971,-212.795,-4.422],"4.375":[-72.526,-211.206,-2.718],"4.4167":[-65.982,-208.705,-1.078],"4.4583":[-62.22,-207.902,-0.179],"4.5":[-56.986,-208.856,0.692],"4.5417":[-53.716,-210.312,0.988],"4.5833":[-50.161,-212.29,1.67],"4.625":[-49.733,-213.031,2.386],"4.6667":[-51.279,-213.898,3.512],"4.7083":[-52.054,-214.469,4.22],"4.75":[-53.216,-215.262,5.223],"4.7917":[-54.477,-216.033,6.154],"4.8333":[-55.501,-216.491,6.626],"4.875":[-57.638,-217.043,6.881],"4.9167":[-59.049,-217.322,6.956],"4.9583":[-61.062,-217.773,7.074],"5.0":[-62.099,-217.878,7.143],"5.0417":[-62.374,-217.223,7.319],"5.0833":[-62.009,-216.453,7.473],"5.125":[-61.277,-215.075,7.611],"5.1667":[-61.123,-214.402,7.829],"5.2083":[-61.242,-213.529,8.238],"5.25":[-56.731,-204.885,2.175],"5.2917":[-51.381,-204.763,-25.274],"5.3333":[-44.64,-188.107,-44.123],"5.375":[-44.421,-180.544,-37.319],"5.4167":[-46.109,-177.103,-29.603],"5.4583":[-48.805,-173.991,-21.721],"5.5":[-49.49,-172.376,-20.874],"5.5417":[-49.612,-170.261,-21.765],"5.5833":[-49.598,-168.949,-24.197],"5.625":[-50.114,-168.741,-26.051],"5.6667":[-52.634,-169.696,-28.252],"5.7083":[-55.756,-171.321,-29.345],"5.75":[-61.996,-174.941,-31.357],"5.7917":[-66.873,-177.788,-33.031],"5.8333":[-74.721,-182.107,-36.059],"5.875":[-79.971,-184.703,-38.335],"5.9167":[-87.209,-187.737,-41.792],"5.9583":[-90.687,-188.92,-43.642],"6.0":[-94.186,-190.196,-45.288],"6.0417":[-89.372,-190.149,-37.249],"6.0833":[-74.662,-183.057,-16.089],"6.125":[-67.712,-183.437,-10.478],"6.1667":[-61.437,-197.003,-14.18],"6.2083":[-68.791,-207.992,-22.088],"6.25":[-90.997,-221,-40.709],"6.2917":[-89.069,-221.898,-24.583],"6.3333":[-78.911,-230.957,-9.855],"6.375":[-70.699,-250.156,-3.216],"6.4167":[-69.869,-252.028,-2.524],"6.4583":[-73.372,-250.94,-6.606],"6.5":[-76.591,-249.69,-10.195],"6.5417":[-77.973,-248.93,-11.875],"6.5833":[-78.444,-248.852,-12.762],"6.625":[-78.361,-249.2,-12.745],"6.6667":[-79.336,-250.709,-13.613],"6.7083":[-79.032,-251.341,-12.952],"6.75":[-78.701,-251.777,-12.208],"6.7917":[-78.634,-251.915,-11.94],"6.8333":[-78.555,-252.032,-11.616],"6.875":[-78.551,-252.058,-11.492],"6.9167":[-78.871,-252.194,-11.772],"6.9583":[-79.415,-252.309,-12.376],"7.0":[-79.775,-252.313,-12.775],"7.0417":[-80.128,-252.251,-13.216],"7.0833":[-80.096,-252.13,-13.273],"7.125":[-79.89,-251.896,-13.156],"7.1667":[-79.732,-251.75,-13.051],"7.2083":[-79.521,-251.613,-12.912],"7.25":[-79.428,-251.546,-12.841],"7.2917":[-79.343,-251.504,-12.756],"7.3333":[-79.285,-251.535,-12.696],"7.375":[-79.357,-251.703,-12.733],"7.4167":[-79.388,-251.771,-12.744],"7.4583":[-79.395,-251.8,-12.729],"7.5":[-79.383,-251.797,-12.704],"7.5417":[-79.359,-251.783,-12.663],"7.5833":[-79.276,-251.684,-12.572],"7.625":[-78.868,-251.199,-12.176],"7.6667":[-78.691,-250.909,-11.987],"7.7083":[-78.989,-250.773,-12.189],"7.75":[-79.337,-250.73,-12.424],"7.7917":[-79.162,-250.681,-12.214],"7.8333":[-77.782,-250.42,-10.898],"7.875":[-76.534,-250.256,-9.729],"7.9167":[-75.137,-250.487,-8.392],"7.9583":[-74.532,-251.133,-7.776],"8.0":[-73.779,-252.14,-7.003],"8.0417":[-73.313,-252.553,-6.548],"8.0833":[-72.691,-253.055,-5.955],"8.125":[-72.342,-253.372,-5.623],"8.1667":[-72.026,-253.911,-5.306],"8.2083":[-72.018,-254.268,-5.283],"8.25":[-72.058,-254.653,-5.3],"8.2917":[-72.118,-254.859,-5.343],"8.3333":[-72.243,-255.139,-5.445],"8.375":[-72.34,-255.33,-5.532],"8.4167":[-72.538,-255.62,-5.72],"8.4583":[-72.677,-255.728,-5.866],"8.5":[-72.883,-255.682,-6.124],"8.5417":[-73.016,-255.522,-6.301],"8.5833":[-73.125,-255.07,-6.478],"8.625":[-73.26,-254.663,-6.66],"8.6667":[-73.424,-253.945,-6.912],"8.7083":[-73.632,-253.422,-7.177],"8.75":[-74.663,-252.615,-8.26],"8.7917":[-75.898,-252.045,-9.506],"8.8333":[-77.849,-251.164,-11.459],"8.875":[-78.799,-250.599,-12.408],"8.9167":[-79.659,-249.768,-13.27],"8.9583":[-80.25,-248.947,-13.861],"9.0":[-80.581,-248.437,-14.19],"9.0417":[-81.103,-247.775,-14.701],"9.0833":[-81.511,-247.493,-15.092],"9.125":[-82.143,-247.334,-15.683],"9.1667":[-82.522,-247.294,-16.034],"9.2083":[-83.077,-247.323,-16.548],"9.25":[-83.42,-247.378,-16.86],"9.2917":[-83.834,-247.456,-17.222],"9.3333":[-84.035,-247.49,-17.396],"9.375":[-84.27,-247.579,-17.57],"9.4167":[-84.417,-247.713,-17.629],"9.4583":[-84.542,-248.412,-17.306],"9.5":[-81.441,-250.401,-13.87],"9.5417":[-89.257,-252.685,-18.497],"9.5833":[-104.592,-253.145,-30.453],"9.625":[-140.193,-249.217,-60.966],"9.6667":[-170.632,-235.265,-88.196],"9.7083":[-179.207,-200.722,-112.497],"9.75":[-147.591,-191.388,-130.891],"9.7917":[-137.088,-201.114,-130.287],"9.8333":[-108.209,-209.785,-108.531],"9.875":[-85.726,-207.151,-84.262],"9.9167":[-84.344,-196.965,-70.957],"9.9583":[-86.676,-191.51,-72.545],"10.0":[-78.97,-181.699,-69.493],"10.0417":[-67.646,-169.227,-51.665],"10.0833":[-79.37,-145.917,13.785],"10.125":[-102.818,-148.171,59.987],"10.1667":[-114.579,-149.086,139.533],"10.2083":[-113.577,-162.823,168.167],"10.25":[-101.303,-156.544,194.308],"10.2917":[-86.372,-137.79,192.608],"10.3333":[-100.013,-99.82,199.825],"10.375":[-1.174,-120.036,79.461],"10.4167":[-33.327,-177.777,53.445],"10.4583":[-46.267,-223.594,21.468],"10.5":[-136.536,-235.062,-93.361],"10.5417":[-137.245,-222.218,-113.375],"10.5833":[-94.031,-214.778,-108.49],"10.625":[-49.896,-192.894,-87.445],"10.6667":[-25.502,-154.429,-61.32],"10.7083":[-36.231,-135.125,-42.531],"10.75":[-67.013,-115.234,17.214],"10.7917":[-109.643,-111.773,81.604],"10.8333":[-100.854,-127.639,93.964],"10.875":[-93.754,-142.559,110.641],"10.9167":[-82.81,-144.289,118.045],"10.9583":[-73.037,-134.611,125.47],"11.0":[-43.495,-128.605,96.851],"11.0417":[-19.752,-146.514,55.563],"11.0833":[-12.866,-164.756,12.842],"11.125":[-24.681,-191.646,-18.189],"11.1667":[-45.071,-206.914,-40.212],"11.2083":[-73.384,-217.592,-64.892],"11.25":[-87.244,-222.625,-74.396],"11.2917":[-102.961,-226.805,-90.274],"11.3333":[-107.91,-225.999,-101.617],"11.375":[-90.628,-219.475,-101.791],"11.4167":[-74.124,-214.534,-96.321],"11.4583":[-50.391,-204.041,-79.416],"11.5":[-36.853,-188.704,-62.546],"11.5417":[-27.382,-161.48,-38.992],"11.5833":[-40.418,-135.639,-15.254],"11.625":[-91.363,-127.702,48.274],"11.6667":[-92.798,-131.455,59.734],"11.7083":[-99.396,-143.761,90.341],"11.75":[-95.76,-149.074,99.085],"11.7917":[-72.299,-142.5,81.854],"11.8333":[-45.672,-143.416,54.689],"11.875":[-22.189,-154.46,23.972],"11.9167":[-21.77,-171.731,4.639],"11.9583":[-29.899,-178.583,-8.776],"12.0":[-44.283,-185.245,-32.357],"12.0417":[-56.304,-197.053,-52.216],"12.0833":[-99.539,-201.59,-90.147],"12.125":[-146.127,-199.484,-117.886],"12.1667":[-156.951,-215.89,-134.555],"12.2083":[-146.747,-221.301,-126.424],"12.25":[-128.666,-211.218,-109.093],"12.2917":[-110.424,-204.52,-86.431],"12.3333":[-84.66,-178.424,-45.326],"12.375":[-77.905,-158.016,-23.52],"12.4167":[-71.444,-151.689,-9.61],"12.4583":[-65.543,-162.084,-9.305],"12.5":[-62.466,-180.399,-11.831],"12.5417":[-59.526,-198.873,-7.439],"12.5833":[-48.887,-183.269,49.418],"12.625":[-41.322,-175.47,64.476],"12.6667":[-39.807,-165.584,77.106],"12.7083":[-42.864,-157.559,80.142],"12.75":[-45.047,-147.434,82.783],"12.7917":[-43.631,-142.953,83.448],"12.8333":[-40.817,-140.909,83.26],"12.875":[-39.901,-141.564,83.583],"12.9167":[-39.382,-142.634,84.127],"12.9583":[-39.558,-143.15,84.699],"13.0":[-39.92,-143.806,85.37],"13.0417":[-40.144,-144.064,85.608],"13.0833":[-40.331,-144.053,85.593],"13.125":[-40.491,-143.984,85.629],"13.1667":[-40.607,-143.94,85.697],"13.2083":[-40.692,-143.868,85.772],"13.25":[-40.705,-143.816,85.8],"13.2917":[-40.702,-143.732,85.801],"13.3333":[-40.695,-143.675,85.794],"13.375":[-40.677,-143.589,85.779],"13.4167":[-40.671,-143.561,85.775]},"position":{"0.0":[-2.249,39.94,-15.197],"0.0417":[-1.578,40.988,-15.883],"0.0833":[-1.986,42.286,-16.182],"0.125":[-2.605,42.903,-16.279],"0.1667":[-3.911,43.408,-16.608],"0.2083":[-4.887,43.17,-16.514],"0.25":[-6.921,42.162,-15.865],"0.2917":[-7.771,41.687,-15.327],"0.3333":[-8.633,41.331,-14.066],"0.375":[-9.133,41.245,-13.301],"0.4167":[-9.944,41.074,-12.647],"0.4583":[-10.487,40.769,-12.452],"0.5":[-10.95,40.211,-12.17],"0.5417":[-11.464,38.989,-12.249],"0.5833":[-13.027,37.633,-12.615],"0.625":[-14.435,37.677,-13.049],"0.6667":[-14.765,38.521,-13.125],"0.7083":[-14.616,39.694,-13.949],"0.75":[-14.01,40.016,-14.694],"0.7917":[-11.747,39.623,-16.952],"0.8333":[-10.444,39.764,-17.948],"0.875":[-9.393,41.258,-18.41],"0.9167":[-9.434,42.301,-18.146],"0.9583":[-9.917,41.445,-17.142],"1.0":[-9.395,39.546,-16.695],"1.0417":[-8.471,38.57,-16.889],"1.0833":[-7.789,38.262,-17.076],"1.125":[-7.172,37.999,-17.19],"1.1667":[-6.873,37.524,-17.217],"1.2083":[-7.247,37.028,-16.979],"1.25":[-7.996,37.004,-16.714],"1.2917":[-9.231,37.496,-16.496],"1.3333":[-9.7,38.249,-16.668],"1.375":[-10.172,39.434,-17.054],"1.4167":[-10.485,40.322,-17.245],"1.4583":[-10.826,40.769,-17.077],"1.5":[-11.482,41.042,-16.358],"1.5417":[-11.645,41.012,-15.383],"1.5833":[-12.104,40.75,-14.01],"1.625":[-12.532,40.655,-13.502],"1.6667":[-13.339,40.818,-13.544],"1.7083":[-13.718,41.047,-14.066],"1.75":[-13.594,41.163,-14.972],"1.7917":[-13.265,40.915,-15.555],"1.8333":[-13.15,40.371,-16.19],"1.875":[-13.111,39.984,-16.531],"1.9167":[-12.989,39.324,-16.815],"1.9583":[-12.86,39.003,-16.831],"2.0":[-12.324,38.96,-16.651],"2.0417":[-12.162,39.195,-16.45],"2.0833":[-12.317,39.536,-16.151],"2.125":[-12.355,39.399,-15.936],"2.1667":[-12.288,38.945,-15.311],"2.2083":[-12.061,38.23,-14.878],"2.25":[-11.818,36.385,-14.638],"2.2917":[-12.373,34.64,-14.74],"2.3333":[-13.652,34.067,-15.764],"2.375":[-14.636,38.077,-16.461],"2.4167":[-15.264,39.727,-16.323],"2.4583":[-15.831,39.209,-15.841],"2.5":[-17.917,34.788,-15.436],"2.5417":[-19.982,30.311,-15.466],"2.5833":[-19.962,29.669,-15.287],"2.625":[-19.877,29.383,-15.165],"2.6667":[-19.66,29.129,-14.977],"2.7083":[-19.466,29.056,-14.849],"2.75":[-19.118,29.055,-14.654],"2.7917":[-18.724,29.139,-14.455],"2.8333":[-18.447,29.219,-14.321],"2.875":[-18.029,29.338,-14.118],"2.9167":[-17.759,29.395,-13.982],"2.9583":[-17.383,29.413,-13.776],"3.0":[-17.11,29.398,-13.618],"3.0417":[-16.479,29.524,-13.298],"3.0833":[-16.142,29.594,-13.127],"3.125":[-15.833,29.656,-12.97],"3.1667":[-15.63,29.697,-12.867],"3.2083":[-15.327,29.758,-12.713],"3.25":[-15.127,29.799,-12.612],"3.2917":[-14.83,29.859,-12.46],"3.3333":[-14.633,29.899,-12.36],"3.375":[-14.339,29.959,-12.211],"3.4167":[-14.144,29.998,-12.112],"3.4583":[-13.853,30.057,-11.965],"3.5":[-13.66,30.096,-11.867],"3.5417":[-13.371,30.154,-11.72],"3.5833":[-13.083,30.212,-11.573],"3.625":[-12.891,30.25,-11.476],"3.6667":[-12.603,30.306,-11.329],"3.7083":[-12.411,30.344,-11.231],"3.75":[-12.123,30.399,-11.084],"3.7917":[-11.922,30.425,-10.988],"3.8333":[-11.71,30.437,-10.862],"3.875":[-11.725,30.481,-10.771],"3.9167":[-11.771,30.491,-10.615],"3.9583":[-11.813,30.475,-10.502],"4.0":[-11.888,30.44,-10.33],"4.0417":[-11.941,30.425,-10.217],"4.0833":[-12.018,30.438,-10.059],"4.125":[-12.065,30.485,-9.965],"4.1667":[-12.12,30.639,-9.852],"4.2083":[-12.143,30.811,-9.799],"4.25":[-12.149,31.199,-9.762],"4.2917":[-12.124,31.614,-9.785],"4.3333":[-11.963,32.984,-10.036],"4.375":[-11.801,34.206,-10.303],"4.4167":[-11.534,36.069,-10.745],"4.4583":[-11.374,37.077,-11.004],"4.5":[-11.142,38.146,-11.371],"4.5417":[-10.984,38.69,-11.617],"4.5833":[-10.79,39.377,-11.921],"4.625":[-10.714,39.737,-12.038],"4.6667":[-10.667,40.061,-12.108],"4.7083":[-10.656,40.179,-12.13],"4.75":[-10.688,40.147,-12.097],"4.7917":[-10.764,40.074,-12.059],"4.8333":[-10.853,39.993,-12.043],"4.875":[-11.032,39.829,-12.077],"4.9167":[-11.193,39.719,-12.112],"4.9583":[-11.492,39.582,-12.177],"5.0":[-11.735,39.5,-12.22],"5.0417":[-12.208,39.38,-12.255],"5.0833":[-12.611,39.289,-12.271],"5.125":[-13.383,39.145,-12.299],"5.1667":[-14.039,39.072,-12.328],"5.2083":[-15.452,38.988,-12.395],"5.25":[-16.983,38.361,-12.44],"5.2917":[-22.964,37.353,-13.027],"5.3333":[-26.162,34.866,-10.716],"5.375":[-26.448,32.754,-9.616],"5.4167":[-26.219,31.517,-9.113],"5.4583":[-25.634,30.301,-8.814],"5.5":[-25.201,29.974,-8.908],"5.5417":[-24.424,29.86,-9.298],"5.5833":[-23.553,29.982,-9.865],"5.625":[-22.951,30.075,-10.271],"5.6667":[-22.065,30.052,-10.817],"5.7083":[-21.482,29.902,-11.135],"5.75":[-20.575,29.609,-11.625],"5.7917":[-19.962,29.386,-11.953],"5.8333":[-19.052,29.041,-12.439],"5.875":[-18.465,28.821,-12.753],"5.9167":[-17.637,28.537,-13.198],"5.9583":[-17.213,28.433,-13.42],"6.0":[-16.805,28.422,-13.656],"6.0417":[-17.829,29.762,-13.806],"6.0833":[-20.93,33.692,-14.09],"6.125":[-21.575,35.781,-14.849],"6.1667":[-19.844,37.936,-16.85],"6.2083":[-16.436,38.701,-17.444],"6.25":[-9.965,37.811,-17.988],"6.2917":[-5.116,35.849,-17.247],"6.3333":[-5.225,34.58,-12.872],"6.375":[-6.578,33.865,-12.338],"6.4167":[-8.14,33.922,-12.827],"6.4583":[-8.645,34.18,-13.361],"6.5":[-8.968,34.852,-13.738],"6.5417":[-9.007,35.285,-13.784],"6.5833":[-8.836,35.781,-13.731],"6.625":[-8.703,35.947,-13.667],"6.6667":[-8.487,36.096,-13.513],"6.7083":[-8.368,36.082,-13.409],"6.75":[-8.296,35.988,-13.355],"6.7917":[-8.284,35.91,-13.356],"6.8333":[-8.293,35.817,-13.371],"6.875":[-8.315,35.766,-13.39],"6.9167":[-8.347,35.708,-13.416],"6.9583":[-8.377,35.684,-13.439],"7.0":[-8.393,35.684,-13.45],"7.0417":[-8.414,35.697,-13.464],"7.0833":[-8.424,35.714,-13.471],"7.125":[-8.427,35.732,-13.472],"7.1667":[-8.427,35.742,-13.471],"7.2083":[-8.418,35.757,-13.464],"7.25":[-8.41,35.765,-13.455],"7.2917":[-8.394,35.767,-13.436],"7.3333":[-8.383,35.759,-13.426],"7.375":[-8.37,35.741,-13.418],"7.4167":[-8.363,35.727,-13.414],"7.4583":[-8.354,35.704,-13.406],"7.5":[-8.349,35.685,-13.399],"7.5417":[-8.343,35.657,-13.388],"7.5833":[-8.338,35.618,-13.37],"7.625":[-8.327,35.525,-13.318],"7.6667":[-8.328,35.405,-13.258],"7.7083":[-8.351,35.131,-13.125],"7.75":[-8.381,34.806,-12.974],"7.7917":[-8.4,34.569,-12.879],"7.8333":[-8.422,34.157,-12.748],"7.875":[-8.435,33.861,-12.666],"7.9167":[-8.454,33.446,-12.559],"7.9583":[-8.467,33.176,-12.498],"8.0":[-8.483,32.86,-12.433],"8.0417":[-8.489,32.728,-12.412],"8.0833":[-8.498,32.572,-12.394],"8.125":[-8.504,32.485,-12.385],"8.1667":[-8.514,32.382,-12.37],"8.2083":[-8.523,32.348,-12.362],"8.25":[-8.536,32.321,-12.35],"8.2917":[-8.546,32.312,-12.343],"8.3333":[-8.559,32.31,-12.33],"8.375":[-8.567,32.311,-12.32],"8.4167":[-8.575,32.324,-12.303],"8.4583":[-8.58,32.345,-12.286],"8.5":[-8.586,32.403,-12.245],"8.5417":[-8.588,32.459,-12.211],"8.5833":[-8.59,32.571,-12.157],"8.625":[-8.588,32.664,-12.12],"8.6667":[-8.58,32.818,-12.065],"8.7083":[-8.574,32.932,-12.028],"8.75":[-8.561,33.142,-11.965],"8.7917":[-8.55,33.31,-11.912],"8.8333":[-8.533,33.582,-11.837],"8.875":[-8.52,33.764,-11.804],"8.9167":[-8.502,34.041,-11.785],"8.9583":[-8.482,34.325,-11.784],"9.0":[-8.469,34.509,-11.788],"9.0417":[-8.448,34.765,-11.79],"9.0833":[-8.433,34.911,-11.789],"9.125":[-8.41,35.08,-11.791],"9.1667":[-8.399,35.169,-11.792],"9.2083":[-8.387,35.275,-11.795],"9.25":[-8.38,35.333,-11.798],"9.2917":[-8.371,35.405,-11.807],"9.3333":[-8.366,35.44,-11.811],"9.375":[-8.359,35.481,-11.827],"9.4167":[-8.352,35.51,-11.858],"9.4583":[-8.326,35.562,-12.041],"9.5":[-8.271,35.615,-12.51],"9.5417":[-8.176,35.704,-13.336],"9.5833":[-8.114,35.782,-13.883],"9.625":[-8.056,36.013,-14.539],"9.6667":[-8.079,36.175,-14.726],"9.7083":[-8.147,36.445,-14.55],"9.75":[-8.418,36.432,-13.751],"9.7917":[-8.674,36.74,-13.606],"9.8333":[-9.261,36.947,-13.694],"9.875":[-9.732,36.924,-13.645],"9.9167":[-10.316,36.567,-13.31],"9.9583":[-10.7,36.158,-13.075],"10.0":[-11.373,35.261,-12.434],"10.0417":[-12.147,34.649,-11.656],"10.0833":[-14.917,35.217,-10.495],"10.125":[-15.924,37.245,-10.974],"10.1667":[-15.46,41.241,-12.485],"10.2083":[-14.673,43.009,-13.626],"10.25":[-12.052,43.34,-15.981],"10.2917":[-9.746,39.802,-16.921],"10.3333":[-6.448,38.998,-15.752],"10.375":[-5.267,39.949,-14.938],"10.4167":[-4.878,41.016,-14.904],"10.4583":[-5.031,41.58,-15.609],"10.5":[-5.649,41.629,-16.787],"10.5417":[-6.122,41.164,-17.156],"10.5833":[-6.906,39.97,-16.566],"10.625":[-7.727,39.173,-15.276],"10.6667":[-8.954,38.902,-14.114],"10.7083":[-9.615,39.301,-13.807],"10.75":[-10.45,40.261,-14.223],"10.7917":[-10.629,40.589,-14.856],"10.8333":[-10.674,40.765,-16.017],"10.875":[-10.442,40.672,-16.308],"10.9167":[-10.419,40.304,-16.887],"10.9583":[-10.442,39.951,-17.228],"11.0":[-10.467,39.186,-17.638],"11.0417":[-10.336,38.763,-17.781],"11.0833":[-9.757,38.675,-17.563],"11.125":[-9.15,39.106,-17.198],"11.1667":[-9.057,39.576,-17.052],"11.2083":[-9.282,40.139,-17.031],"11.25":[-9.483,40.291,-17.1],"11.2917":[-9.968,40.348,-17.28],"11.3333":[-10.266,40.232,-17.394],"11.375":[-10.784,39.911,-17.476],"11.4167":[-11.071,39.667,-17.416],"11.4583":[-11.489,39.373,-17.008],"11.5":[-11.928,39.304,-16.5],"11.5417":[-12.597,39.637,-15.855],"11.5833":[-13.08,40.051,-15.718],"11.625":[-13.686,41.12,-15.912],"11.6667":[-13.768,41.571,-16.58],"11.7083":[-13.638,41.48,-17.3],"11.75":[-13.598,41.216,-17.603],"11.7917":[-13.712,40.323,-17.927],"11.8333":[-13.824,39.67,-17.965],"11.875":[-14.141,38.907,-17.922],"11.9167":[-14.493,38.103,-17.727],"11.9583":[-14.614,37.271,-17.56],"12.0":[-14.457,35.741,-17.504],"12.0417":[-13.926,34.872,-17.696],"12.0833":[-11.681,34.702,-17.586],"12.125":[-11.101,35.859,-17.323],"12.1667":[-11.813,36.167,-17.083],"12.2083":[-13.238,35.01,-15.529],"12.25":[-15.753,32.514,-11.303],"12.2917":[-18.302,32.535,-10.935],"12.3333":[-23.335,34.347,-13.26],"12.375":[-25.799,36.004,-15.388],"12.4167":[-24.495,39.683,-17.211],"12.4583":[-20.682,42.984,-17.858],"12.5":[-14.804,45.94,-18.59],"12.5417":[-7.428,45.709,-18.483],"12.5833":[-0.373,40.174,-16.064],"12.625":[-0.562,38.603,-14.44],"12.6667":[-2.415,38.123,-13.548],"12.7083":[-2.952,38.244,-14.138],"12.75":[-3.11,38.888,-14.733],"12.7917":[-3.058,39.292,-14.799],"12.8333":[-2.928,39.571,-14.77],"12.875":[-2.881,39.584,-14.73],"12.9167":[-2.85,39.525,-14.692],"12.9583":[-2.856,39.487,-14.688],"13.0":[-2.881,39.451,-14.692],"13.0417":[-2.899,39.44,-14.698],"13.0833":[-2.911,39.442,-14.707],"13.125":[-2.914,39.449,-14.711],"13.1667":[-2.914,39.453,-14.712],"13.2083":[-2.911,39.457,-14.712],"13.25":[-2.909,39.459,-14.711],"13.2917":[-2.905,39.459,-14.709],"13.3333":[-2.904,39.459,-14.709],"13.375":[-2.903,39.457,-14.708],"13.4167":[-2.903,39.457,-14.708]}},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.0833":[4.9574,-0.6518,7.4718],"0.2917":[4.9953,0.2178,-2.4905],"0.4167":[-20.0047,0.2178,-2.4905],"0.5833":[-17.9936,-8.893,-28.5413],"0.6667":[0,0,0],"0.75":[-25,0,0],"0.875":[-10.0691,-2.6822,-14.7637],"0.9167":[-31.0415,-1.6093,-8.8582],"0.9583":[0,0,0],"1.0":[40,0,-11.25],"1.0417":[10,0,-22.5],"1.125":[17.7632,0,-11.8421],"1.2083":[0,0,0],"1.2917":[-12.5,0,0],"1.625":[-12.5,0,0],"1.7083":[-9.6385,-7.9972,-39.3247],"1.8333":[14.7822,2.5759,-9.6658],"2.0833":[0,0,0],"4.5417":[0,0,0],"10.1667":[0,0,0],"10.375":[-15,0,-20],"10.5":[0,0,0],"10.6667":[-53.6609,-24.9417,-17.2344],"10.7083":[-24.7422,-25.8209,-31.4258],"10.75":[-4.3955,-15.236,-41.9872],"10.7917":[0,0,0],"11.1667":[0,0,0],"11.5":[-27.5,0,0],"11.6667":[0,0,0]},"position":{"0.0":[0,2.5,0],"4.5417":[0,2.5,0],"4.8333":[-0.5917,1.84,-0.463],"5.7083":[-0.5917,1.84,-0.463],"6.1667":[0,2.5,0],"9.7917":[0,2.5,0],"10.0417":[0,4.5,0],"12.25":[0,4.5,0],"12.5417":[0,2.5,0]},"scale":[1,1.5,1]},"annihil":{"rotation":{"0.0":[-13.254,-19.959,81.045],"0.0417":[-21.42,-69.04,64.361],"0.0833":[71.276,-79.702,-80.947],"0.125":[93.057,-72.3,-138.743],"0.1667":[24.143,-22.7,-130.369],"0.2083":[-2.795,-16.237,-137.929],"0.25":[-41.705,24.75,-200.313],"0.2917":[-57.097,24.756,-240.661],"0.3333":[-54.207,18.583,-300.953],"0.375":[-36.633,31.313,-325.976],"0.4167":[16.528,43.08,-316.944],"0.4583":[49.765,35.149,-299.316],"0.5":[91.476,13.57,-243.045],"0.5417":[53.475,-8.903,-204.888],"0.5833":[-13.07,-36.346,-149.917],"0.625":[-42.011,6.29,-93.812],"0.6667":[-21.598,17.856,-62.887],"0.7083":[21.411,7.041,0.362],"0.75":[33.703,2.824,43.341],"0.7917":[26.355,-5.063,74.835],"0.8333":[15.579,-10.965,83.562],"0.875":[2.498,-8.61,103.414],"0.9167":[-7.505,-8.905,115.414],"0.9583":[-27.048,-8.198,133.813],"1.0":[-35.336,12.315,134.297],"1.0417":[-62.751,25.356,145.706],"1.0833":[-76.659,38.237,147.712],"1.125":[-30.041,44.187,237.97],"1.1667":[-8.767,2.096,292.227],"1.2083":[19.848,-13.408,322.484],"1.25":[53.017,-25.574,320.629],"1.2917":[109.402,-12.589,277.561],"1.3333":[118.99,31.663,272.672],"1.375":[181.959,58.614,346.284],"1.4167":[233.79,33.984,395.376],"1.4583":[252.181,20.369,400.857],"1.5":[289.218,24.084,387.076],"1.5417":[317.579,30.329,384.397],"1.5833":[361.216,45.018,396.402],"1.625":[399.267,42.889,434.554],"1.6667":[421.279,5.606,489.69],"1.7083":[396.581,-9.951,522.844],"1.75":[352.659,-18.468,562.859],"1.7917":[335.012,-23.935,593.164],"1.8333":[338.729,-11.021,616.663],"1.875":[350.791,-11.239,631.467],"1.9167":[386.676,-31.615,635.995],"1.9583":[419.609,-36.037,618.969],"2.0":[464.331,-12.821,626.458],"2.0417":[480.994,25.467,577.242],"2.0833":[347.154,54.915,444.444],"2.125":[317.159,27.949,451.692],"2.1667":[277.193,24.781,488.908],"2.2083":[282.203,46.823,532.154],"2.25":[341.73,41.869,602.048],"2.2917":[361.272,28.063,628.441],"2.3333":[371.207,8.095,668.402],"2.375":[368.977,-4.751,724.813],"2.4167":[355.894,21.63,794.48],"2.4583":[339.136,34.976,828.035],"2.5":[357.807,50.256,912.923],"2.5417":[360.438,49.802,964.66],"2.5833":[345.602,68.738,1024.208],"2.625":[346.528,77.731,1062.68],"2.6667":[318.293,86.727,1085.197],"2.7083":[227.994,78.584,1029.899],"2.75":[199.649,57.571,1055.218],"2.7917":[178.118,54.593,1085.546],"2.8333":[167.785,60.06,1107.271],"2.875":[179.742,64.58,1162.558],"2.9167":[193.648,52.518,1203.69],"2.9583":[185.83,13.781,1239.464],"3.0":[214.098,-2.881,1189.413],"3.0417":[260.274,9.203,1183.108],"3.0833":[270.501,-10.002,1166.525],"3.125":[306.731,-56.931,1126.786],"3.1667":[402.85,-75.199,1063.963],"3.2083":[474.367,-38.623,1034.43],"3.25":[497.284,-23.402,1042.392],"3.2917":[524.162,-46.671,1050.048],"3.3333":[564.54,-69.714,1010.474],"3.375":[631.748,3.671,949.121],"3.4167":[591.086,42.272,899.613],"3.4583":[491.895,72.399,787.196],"3.5":[473.937,40.631,743.537],"3.5417":[503.465,11.316,724.707],"3.5833":[491.261,-34.231,714.165],"3.625":[481.961,-48.231,696.2],"3.6667":[498.483,-70.209,673.934],"3.7083":[520.973,-76.066,651.241],"3.75":[553.35,-78.776,617.895],"3.7917":[552.641,-77.25,616.731],"3.8333":[559.133,-85.334,607.249],"3.875":[563.298,-87.178,603.346],"3.9167":[542.372,-84.902,627.084],"3.9583":[545.942,-84.082,624.356],"4.0":[550.566,-83.324,620.293],"4.0417":[552.398,-83.198,618.482],"4.0833":[553.666,-83.11,617.059],"4.125":[552.311,-83.139,618.294],"4.1667":[548.921,-83.212,621.554],"4.2083":[548.191,-83.222,622.176],"4.25":[548.718,-83.207,621.496],"4.2917":[549.666,-83.187,620.449],"4.3333":[550.676,-83.15,619.323],"4.375":[550.853,-83.13,619.107],"4.4167":[550.724,-83.134,619.171],"4.4583":[550.672,-83.176,619.164],"4.5":[550.797,-83.281,618.915],"4.5417":[550.648,-83.372,618.937],"4.5833":[551.507,-83.654,617.791],"4.625":[553.551,-83.982,615.481],"4.6667":[558.005,-84.603,610.571],"4.7083":[562.226,-85.047,606.023],"4.75":[570.208,-85.602,597.579],"4.7917":[585.076,-86.012,582.041],"4.8333":[595.409,-85.959,571.219],"4.875":[602.021,-85.419,564.025],"4.9167":[602.709,-84.96,563.007],"4.9583":[595.411,-84.104,570.012],"5.0":[588.14,-83.368,577.198],"5.0417":[584.982,-82.884,580.088],"5.0833":[584.925,-82.942,579.952],"5.125":[583.499,-83.366,581.278],"5.1667":[579.67,-83.24,585.068],"5.2083":[571.69,-82.344,593.006],"5.25":[567.513,-81.473,597.25],"5.2917":[583.495,-77.707,584.315],"5.3333":[603.149,-72.875,572.947],"5.375":[646.398,-51.472,549.386],"5.4167":[656.539,-4.217,548.13],"5.4583":[597.373,38.878,504.304],"5.5":[582.115,16.674,487.85],"5.5417":[569.63,0.242,485.361],"5.5833":[558.045,-12.811,488.678],"5.625":[551.177,-19.975,493.144],"5.6667":[542.78,-29.382,502.187],"5.7083":[537.506,-33.581,509.674],"5.75":[534.791,-40.076,522.022],"5.7917":[537.972,-46.9,532.341],"5.8333":[561.564,-66.319,579.669],"5.875":[558.945,-35.176,612.257],"5.9167":[554.523,-20.979,676.732],"5.9583":[541.589,0.159,718.649],"6.0":[548.065,33.195,780.087],"6.0417":[548.586,49.112,820.803],"6.0833":[523.669,79.385,861.075],"6.125":[482.24,88.55,861.287],"6.1667":[495.063,100.495,931.678],"6.2083":[516.845,107.608,988.299],"6.25":[529.526,127.76,1051.066],"6.2917":[534.574,123.929,1065.676],"6.3333":[531.435,115.174,1074.429],"6.375":[562.291,97.023,1104.405],"6.4167":[577.765,95.989,1119.037],"6.4583":[563.26,96.216,1103.852],"6.5":[549.946,96.884,1090.067],"6.5417":[544.331,97.455,1084.109],"6.5833":[542.902,97.485,1082.244],"6.625":[543.856,97.161,1083.13],"6.6667":[544.914,95.617,1084.229],"6.7083":[548.175,95.055,1087.847],"6.75":[551.256,94.69,1091.349],"6.7917":[552.201,94.572,1092.495],"6.8333":[553.079,94.474,1093.62],"6.875":[553.25,94.453,1093.913],"6.9167":[552.86,94.286,1093.547],"6.9583":[551.473,94.113,1092.076],"7.0":[550.061,94.066,1090.61],"7.0417":[548.369,94.081,1088.819],"7.0833":[547.871,94.193,1088.237],"7.125":[547.515,94.439,1087.802],"7.1667":[547.438,94.59,1087.682],"7.2083":[547.629,94.744,1087.809],"7.25":[547.678,94.814,1087.839],"7.2917":[547.791,94.861,1087.958],"7.3333":[548.112,94.843,1088.284],"7.375":[548.615,94.677,1088.818],"7.4167":[548.794,94.612,1089.012],"7.4583":[548.913,94.581,1089.153],"7.5":[548.947,94.586,1089.202],"7.5417":[548.956,94.603,1089.228],"7.5833":[548.808,94.704,1089.094],"7.625":[548.165,95.204,1088.459],"7.6667":[547.674,95.495,1087.993],"7.7083":[546.272,95.591,1086.678],"7.75":[545.019,95.596,1085.523],"7.7917":[545.388,95.659,1085.936],"7.8333":[548.796,96.057,1089.34],"7.875":[551.883,96.364,1092.403],"7.9167":[556.587,96.341,1097.101],"7.9583":[561.087,95.859,1101.618],"8.0":[568.854,95.14,1109.409],"8.0417":[573.052,94.903,1113.6],"8.0833":[578.768,94.659,1119.297],"8.125":[582.504,94.518,1123.018],"8.1667":[588.774,94.254,1129.282],"8.2083":[592.909,94.058,1133.424],"8.25":[597.719,93.858,1138.243],"8.2917":[600.412,93.756,1140.947],"8.3333":[604.288,93.628,1144.829],"8.375":[607.056,93.544,1147.601],"8.4167":[611.456,93.422,1151.996],"8.4583":[613.181,93.367,1153.707],"8.5":[612.227,93.324,1152.698],"8.5417":[609.416,93.327,1149.843],"8.5833":[601.958,93.437,1142.326],"8.625":[595.625,93.572,1135.95],"8.6667":[585.978,93.918,1126.232],"8.7083":[579.778,94.21,1119.982],"8.75":[569.747,94.6,1109.885],"8.7917":[562.081,94.853,1102.174],"8.8333":[551.349,95.357,1091.383],"8.875":[546.302,95.774,1086.308],"8.9167":[541.449,96.488,1081.432],"8.9583":[538.157,97.241,1078.125],"9.0":[536.491,97.714,1076.453],"9.0417":[534.31,98.332,1074.265],"9.0833":[532.982,98.591,1072.939],"9.125":[531.244,98.717,1071.212],"9.1667":[530.26,98.74,1070.239],"9.2083":[528.867,98.689,1068.858],"9.25":[528.032,98.623,1068.037],"9.2917":[527.002,98.531,1067.039],"9.3333":[526.509,98.492,1066.563],"9.375":[525.937,98.396,1066.04],"9.4167":[525.612,98.259,1065.796],"9.4583":[525.566,97.557,1066.188],"9.5":[521.769,95.937,1063.745],"9.5417":[472.373,96.395,1018.854],"9.5833":[446.738,101.096,997.178],"9.625":[428.103,114.041,983.808],"9.6667":[416.536,133.813,973.192],"9.7083":[419.129,168.703,961.17],"9.75":[455.461,186.129,939.335],"9.7917":[486.654,182.689,932.821],"9.8333":[538.321,161.43,930.978],"9.875":[584.141,133.697,970.242],"9.9167":[607.48,149.146,1039.733],"9.9583":[588.48,160.267,1057.877],"10.0":[550.412,178.594,1080.372],"10.0417":[516.011,195.883,1112.604],"10.0833":[492.964,182.288,1193.376],"10.125":[514.724,166.219,1231.342],"10.1667":[554.39,159.105,1293.012],"10.2083":[572.109,164.527,1336.829],"10.25":[573.645,162.345,1389.42],"10.2917":[548.728,151.89,1423.205],"10.3333":[468.368,144.261,1375.819],"10.375":[447.73,198.119,1351.754],"10.4167":[547.49,247.204,1238.05],"10.4583":[607.812,223.806,1157.316],"10.5":[611.135,201.98,1109.795],"10.5417":[592.357,206.942,1098.091],"10.5833":[540.84,218.477,1105.811],"10.625":[469.224,215.639,1151.075],"10.6667":[467.337,153.324,1216.743],"10.7083":[537.787,142.858,1273.63],"10.75":[603.63,156.985,1359.673],"10.7917":[589.792,181.655,1411.137],"10.8333":[554.258,178.002,1444.571],"10.875":[535.079,171.691,1464.407],"10.9167":[532.5,160.992,1487.061],"10.9583":[545.367,173.632,1508.84],"11.0":[593.624,178.207,1513.671],"11.0417":[629.085,176.64,1514.053],"11.0833":[650.709,135.36,1467.819],"11.125":[515.56,129.652,1321.036],"11.1667":[472.996,166.8,1281.869],"11.2083":[468.504,230.015,1241.263],"11.25":[529.121,249.247,1170.985],"11.2917":[588.911,237.2,1108.789],"11.3333":[593.204,229.094,1097.749],"11.375":[598.991,247.314,1064.001],"11.4167":[548.631,280.935,1096.106],"11.4583":[581.288,331.721,1049.548],"11.5":[598.193,363.521,1045.601],"11.5417":[677.177,401.252,1086.778],"11.5833":[734.03,409.493,1124.681],"11.625":[782.787,376.613,1190.4],"11.6667":[757.707,362.11,1230.071],"11.7083":[708.203,353.281,1279.561],"11.75":[698.822,350.288,1313.103],"11.7917":[716.954,338.063,1335.919],"11.8333":[749.845,343.363,1333.486],"11.875":[785.096,347.343,1328.512],"11.9167":[813.178,359.453,1292.297],"11.9583":[808.459,385.199,1257.666],"12.0":[743.58,405.711,1175.056],"12.0417":[698.7,392.185,1134.185],"12.0833":[678.809,356.583,1091.721],"12.125":[684.046,310.87,1052.825],"12.1667":[651.729,297.237,1047.603],"12.2083":[650.951,283.925,1015.971],"12.25":[737.676,285.106,884.215],"12.2917":[739.684,293.006,853.16],"12.3333":[731.154,295.255,817.582],"12.375":[727.285,288.664,791.238],"12.4167":[722.716,296.612,754.949],"12.4583":[715.236,308.593,738.924],"12.5":[716.335,328.37,717.51],"12.5417":[716.896,336.375,715.299],"12.5833":[710.667,362.133,773.268],"12.625":[703.541,370.387,787.654],"12.6667":[702.552,380.365,800.331],"12.7083":[706.268,388.207,803.967],"12.75":[709.464,398.168,807.365],"12.7917":[708.417,402.73,808.159],"12.8333":[705.583,404.946,807.742],"12.875":[704.509,404.347,807.885],"12.9167":[703.831,403.308,808.274],"12.9583":[703.974,402.781,808.84],"13.0":[704.3,402.11,809.508],"13.0417":[704.516,401.838,809.758],"13.0833":[704.724,401.831,809.772],"13.125":[704.901,401.893,809.828],"13.1667":[705.031,401.931,809.915],"13.2083":[705.129,401.999,810.008],"13.25":[705.153,402.047,810.042],"13.2917":[705.153,402.133,810.046],"13.3333":[705.153,402.191,810.042],"13.375":[705.141,402.276,810.031],"13.4167":[705.141,402.304,810.031]},"position":{"0.0":[6.649,52.114,-16.888],"0.0417":[7.936,53.553,-17.189],"0.0833":[7.435,55.81,-16.384],"0.125":[6.578,58.185,-15.464],"0.1667":[6.247,60.031,-16.809],"0.2083":[4.81,60.332,-18.803],"0.25":[0.97,58.257,-18.254],"0.2917":[-0.613,56.501,-17.646],"0.3333":[-2.631,56.153,-16.333],"0.375":[-4.374,56.062,-15.417],"0.4167":[-6.552,55.692,-14.855],"0.4583":[-7.242,55.524,-14.559],"0.5":[-6.481,56.088,-13.701],"0.5417":[-6.639,53.752,-14.273],"0.5833":[-7.626,50.702,-15.524],"0.625":[-8.996,49.505,-15.631],"0.6667":[-9.338,49.895,-15.663],"0.7083":[-9.464,50.971,-16.837],"0.75":[-9.454,51.387,-18.036],"0.7917":[-7.44,52.23,-20.242],"0.8333":[-5.045,52.241,-21.469],"0.875":[-1.758,51.716,-21.966],"0.9167":[-1.086,51.472,-21.294],"0.9583":[-1.564,51.783,-20.56],"1.0":[-1.419,51.258,-20.893],"1.0417":[0.017,50.795,-19.511],"1.0833":[0.872,50.157,-19.5],"1.125":[1.031,48.822,-20.285],"1.1667":[1.05,48.498,-20.603],"1.2083":[1.609,48.091,-19.957],"1.25":[1.654,48.331,-18.685],"1.2917":[1.308,49.947,-17.003],"1.3333":[0.962,51.125,-17.456],"1.375":[-0.934,53.475,-17.083],"1.4167":[-2.315,55.483,-17.311],"1.4583":[-3.067,56.171,-18.193],"1.5":[-5.022,56.031,-19.094],"1.5417":[-6.482,55.444,-18.283],"1.5833":[-8.094,55.555,-16.499],"1.625":[-8.617,55.679,-16.122],"1.6667":[-9.251,55.623,-15.472],"1.7083":[-8.795,55.418,-16.301],"1.75":[-8.575,53.854,-18.049],"1.7917":[-8.085,53.427,-18.805],"1.8333":[-7.375,53.02,-19.639],"1.875":[-6.897,52.698,-19.857],"1.9167":[-5.779,53.01,-19.713],"1.9583":[-4.845,54.053,-19.276],"2.0":[-3.87,55.189,-17.688],"2.0417":[-4.251,56.002,-17.906],"2.0833":[-4.506,55.396,-17.795],"2.125":[-4.481,53.879,-18.058],"2.1667":[-3.946,52.206,-17.528],"2.2083":[-2.986,49.941,-15.811],"2.25":[-3.438,46.998,-15.68],"2.2917":[-4.76,45.106,-16.438],"2.3333":[-7.3,45.497,-18.726],"2.375":[-9.395,49.374,-20.423],"2.4167":[-6.755,56.719,-19.828],"2.4583":[-6.788,57.418,-18.575],"2.5":[-11.808,59.357,-19.995],"2.5417":[-14.877,65.267,-20.223],"2.5833":[-12.056,74.994,-19.859],"2.625":[-7.511,77.352,-19.879],"2.6667":[-0.574,75.064,-19.639],"2.7083":[1.846,71.054,-19.032],"2.75":[1.298,64.499,-18.901],"2.7917":[-1.974,60.868,-19.994],"2.8333":[-4.066,60.468,-20.451],"2.875":[-5.221,61.052,-19.925],"2.9167":[-3.973,60.568,-19.296],"2.9583":[0.245,55.575,-19.583],"3.0":[-5.436,52.983,-15.174],"3.0417":[-6.652,51.547,-10.577],"3.0833":[-7.083,51.538,-8.906],"3.125":[-7.395,53.233,-8.906],"3.1667":[-6.947,55.424,-10.704],"3.2083":[-4.487,57.716,-14.558],"3.25":[-2.276,56.737,-16.475],"3.2917":[1.529,54.913,-16.185],"3.3333":[3.627,54.216,-13.935],"3.375":[4.199,54.941,-10.772],"3.4167":[3.921,56.55,-11.908],"3.4583":[3.652,57.344,-13.742],"3.5":[2.464,57.028,-15.642],"3.5417":[2.509,55.556,-16.61],"3.5833":[4.685,57.251,-17.518],"3.625":[5.515,59.429,-17.61],"3.6667":[5.186,59.722,-15.825],"3.7083":[4.76,59.181,-15.372],"3.75":[4.816,56.253,-14.579],"3.7917":[5.282,54.115,-14.134],"3.8333":[5.723,54.642,-12.442],"3.875":[5.954,55.452,-12.067],"3.9167":[6.199,56.498,-12.273],"3.9583":[6.193,56.744,-12.374],"4.0":[6.134,56.947,-12.478],"4.0417":[6.081,57.007,-12.509],"4.0833":[6.003,57.047,-12.533],"4.125":[5.963,57.044,-12.542],"4.1667":[5.931,57.014,-12.549],"4.2083":[5.915,56.988,-12.546],"4.25":[5.899,56.956,-12.542],"4.2917":[5.891,56.94,-12.54],"4.3333":[5.887,56.914,-12.538],"4.375":[5.887,56.901,-12.538],"4.4167":[5.89,56.883,-12.534],"4.4583":[5.89,56.877,-12.532],"4.5":[5.89,56.867,-12.525],"4.5417":[5.89,56.861,-12.52],"4.5833":[5.887,56.844,-12.5],"4.625":[5.887,56.831,-12.475],"4.6667":[5.876,56.796,-12.425],"4.7083":[5.858,56.76,-12.385],"4.75":[5.819,56.696,-12.33],"4.7917":[5.747,56.567,-12.247],"4.8333":[5.697,56.461,-12.196],"4.875":[5.649,56.307,-12.162],"4.9167":[5.631,56.208,-12.156],"4.9583":[5.653,56.095,-12.185],"5.0":[5.705,56.041,-12.226],"5.0417":[5.817,55.986,-12.224],"5.0833":[5.92,55.973,-12.2],"5.125":[6.095,55.978,-12.187],"5.1667":[6.235,56.007,-12.203],"5.2083":[6.463,56.079,-12.258],"5.25":[6.685,56.153,-12.296],"5.2917":[9.35,56.911,-11.335],"5.3333":[13.826,57.521,-10.841],"5.375":[23.142,56.007,-9.555],"5.4167":[26.055,54.702,-7.7],"5.4583":[27.964,50.4,-13.697],"5.5":[27.515,44.935,-15.543],"5.5417":[23.654,43.366,-16.972],"5.5833":[19.054,42.976,-18.005],"5.625":[16.061,43.052,-18.479],"5.6667":[12.42,43.194,-18.879],"5.7083":[10.798,43.364,-18.908],"5.75":[8.707,44.305,-18.717],"5.7917":[7.021,45.828,-18.524],"5.8333":[2.721,50.949,-18.391],"5.875":[0.837,54.078,-18.802],"5.9167":[-3.75,56.532,-19.335],"5.9583":[-8.005,59.134,-20.702],"6.0":[-13.282,65.7,-20.435],"6.0417":[-13.916,71.141,-20.609],"6.0833":[-8.837,77.622,-21.124],"6.125":[-3.215,77.324,-20.603],"6.1667":[1.422,70.934,-19.848],"6.2083":[1.42,63.82,-19.982],"6.25":[-1.945,52.209,-20.059],"6.2917":[3.018,49.118,-18.599],"6.3333":[3.011,47.783,-13.835],"6.375":[1.717,47.133,-12.45],"6.4167":[0.156,47.178,-12.851],"6.4583":[-0.358,47.472,-13.449],"6.5":[-0.687,48.169,-13.894],"6.5417":[-0.73,48.617,-13.978],"6.5833":[-0.568,49.135,-13.93],"6.625":[-0.438,49.303,-13.85],"6.6667":[-0.219,49.45,-13.634],"6.7083":[-0.094,49.42,-13.504],"6.75":[-0.015,49.308,-13.429],"6.7917":[0.004,49.221,-13.424],"6.8333":[-0.002,49.117,-13.433],"6.875":[-0.018,49.061,-13.452],"6.9167":[-0.05,49.005,-13.473],"6.9583":[-0.078,48.983,-13.493],"7.0":[-0.094,48.987,-13.505],"7.0417":[-0.118,49.005,-13.523],"7.0833":[-0.126,49.025,-13.535],"7.125":[-0.129,49.045,-13.546],"7.1667":[-0.126,49.058,-13.55],"7.2083":[-0.118,49.074,-13.549],"7.25":[-0.107,49.084,-13.543],"7.2917":[-0.091,49.084,-13.526],"7.3333":[-0.077,49.077,-13.514],"7.375":[-0.062,49.057,-13.5],"7.4167":[-0.054,49.043,-13.492],"7.4583":[-0.044,49.018,-13.484],"7.5":[-0.037,48.999,-13.477],"7.5417":[-0.028,48.97,-13.466],"7.5833":[-0.023,48.931,-13.452],"7.625":[-0.007,48.838,-13.42],"7.6667":[-0.005,48.716,-13.372],"7.7083":[-0.024,48.439,-13.246],"7.75":[-0.052,48.11,-13.099],"7.7917":[-0.068,47.872,-13.006],"7.8333":[-0.087,47.459,-12.881],"7.875":[-0.098,47.163,-12.802],"7.9167":[-0.115,46.743,-12.678],"7.9583":[-0.128,46.47,-12.586],"8.0":[-0.145,46.151,-12.477],"8.0417":[-0.152,46.018,-12.435],"8.0833":[-0.161,45.861,-12.393],"8.125":[-0.167,45.772,-12.369],"8.1667":[-0.179,45.668,-12.329],"8.2083":[-0.187,45.633,-12.307],"8.25":[-0.203,45.607,-12.28],"8.2917":[-0.211,45.597,-12.262],"8.3333":[-0.223,45.594,-12.24],"8.375":[-0.231,45.594,-12.222],"8.4167":[-0.24,45.607,-12.193],"8.4583":[-0.245,45.628,-12.172],"8.5":[-0.25,45.687,-12.133],"8.5417":[-0.25,45.747,-12.108],"8.5833":[-0.249,45.863,-12.073],"8.625":[-0.244,45.96,-12.053],"8.6667":[-0.232,46.117,-12.03],"8.7083":[-0.223,46.234,-12.017],"8.75":[-0.206,46.45,-11.993],"8.7917":[-0.193,46.623,-11.97],"8.8333":[-0.173,46.902,-11.941],"8.875":[-0.159,47.087,-11.937],"8.9167":[-0.138,47.369,-11.958],"8.9583":[-0.116,47.653,-11.996],"9.0":[-0.101,47.839,-12.024],"9.0417":[-0.079,48.097,-12.058],"9.0833":[-0.063,48.242,-12.072],"9.125":[-0.037,48.414,-12.082],"9.1667":[-0.026,48.5,-12.087],"9.2083":[-0.013,48.609,-12.09],"9.25":[-0.005,48.665,-12.092],"9.2917":[0.007,48.736,-12.099],"9.3333":[0.013,48.771,-12.102],"9.375":[0.023,48.81,-12.115],"9.4167":[0.033,48.835,-12.14],"9.4583":[0.068,48.87,-12.292],"9.5":[0.145,48.895,-12.624],"9.5417":[0.297,48.889,-13.299],"9.5833":[0.402,48.888,-13.771],"9.625":[0.484,49.064,-14.286],"9.6667":[0.33,49.323,-14.189],"9.7083":[-0.28,50.715,-14.509],"9.75":[-2.163,51.834,-15.745],"9.7917":[-2.786,52.64,-15.22],"9.8333":[-3.895,53.048,-16.181],"9.875":[-4.699,53.186,-17.016],"9.9167":[-4.406,51.851,-18.667],"9.9583":[-4.991,49.691,-19.087],"10.0":[-7.357,47.122,-17.716],"10.0417":[-9.414,47.209,-15.547],"10.0833":[-11.272,50.243,-14.199],"10.125":[-11.438,52.246,-15.596],"10.1667":[-8.354,56.243,-17.17],"10.2083":[-7.634,56.432,-18.687],"10.25":[-4.604,55.262,-20.666],"10.2917":[-1.539,50.83,-20.546],"10.3333":[3.125,49.301,-16.939],"10.375":[5.28,51.888,-15.158],"10.4167":[5.03,55.973,-16.928],"10.4583":[4.295,57.071,-17.856],"10.5":[3.648,57.709,-19.179],"10.5417":[2.24,57.677,-19.822],"10.5833":[-1.978,55.399,-20.85],"10.625":[-5.198,52.769,-19.238],"10.6667":[-7.877,53.32,-15.48],"10.7083":[-8.261,54.23,-16.489],"10.75":[-6.835,56.246,-17.824],"10.7917":[-6.139,55.852,-18.015],"10.8333":[-5.376,55.146,-19.217],"10.875":[-4.377,53.892,-19.811],"10.9167":[-3.937,53.3,-20.281],"10.9583":[-3.33,53.242,-20.413],"11.0":[-2.22,52.923,-21.595],"11.0417":[-1.234,53.787,-21.443],"11.0833":[-1.317,55.027,-20.374],"11.125":[-2.539,55.701,-18.764],"11.1667":[-3.388,56.056,-18.84],"11.2083":[-3.981,56.388,-19.824],"11.25":[-4.031,56.402,-19.7],"11.2917":[-5.439,56.535,-19.69],"11.3333":[-6.221,56.182,-19.837],"11.375":[-7.488,55.271,-20.344],"11.4167":[-8.521,54.464,-20.031],"11.4583":[-8.918,54.06,-18.773],"11.5":[-9.248,54.348,-17.785],"11.5417":[-9.252,56.096,-17.368],"11.5833":[-9.271,57.017,-18.073],"11.625":[-8.398,56.896,-20.885],"11.6667":[-8.145,55.76,-21.126],"11.7083":[-7.863,55.111,-21.366],"11.75":[-7.918,54.775,-21.777],"11.7917":[-7.314,54.888,-21.627],"11.8333":[-7.289,55.13,-21.669],"11.875":[-7.284,55.674,-21.634],"11.9167":[-7.658,55.465,-21.456],"11.9583":[-8.061,54.452,-21.552],"12.0":[-8.795,52.413,-20.994],"12.0417":[-8.685,50.465,-20.91],"12.0833":[-5.464,50.114,-21.729],"12.125":[-3.1,52.488,-20.356],"12.1667":[-2.131,55.385,-20.071],"12.2083":[-1.205,57.539,-20.604],"12.25":[2.007,59.776,-21.561],"12.2917":[4.216,61.58,-21.794],"12.3333":[5.935,65.675,-21.839],"12.375":[5.176,68.564,-21.534],"12.4167":[2.11,71.007,-21.17],"12.4583":[-0.352,70.372,-20.615],"12.5":[-3.331,64.271,-20.509],"12.5417":[-0.163,59.872,-20.261],"12.5833":[7.842,52.955,-17.936],"12.625":[7.81,51.075,-16.149],"12.6667":[5.92,50.33,-15.331],"12.7083":[5.25,50.582,-16.096],"12.75":[4.992,51.46,-16.777],"12.7917":[5.074,51.948,-16.785],"12.8333":[5.272,52.232,-16.663],"12.875":[5.348,52.196,-16.598],"12.9167":[5.401,52.075,-16.546],"12.9583":[5.396,52.001,-16.548],"13.0":[5.368,51.928,-16.564],"13.0417":[5.348,51.904,-16.578],"13.0833":[5.331,51.911,-16.592],"13.125":[5.324,51.919,-16.602],"13.1667":[5.323,51.925,-16.606],"13.2083":[5.323,51.932,-16.608],"13.25":[5.323,51.934,-16.608],"13.2917":[5.328,51.936,-16.605],"13.3333":[5.328,51.936,-16.604],"13.375":[5.331,51.938,-16.603],"13.4167":[5.331,51.938,-16.603]}},"camera":{"rotation":{"0.0":[-0.019,0.004,0.003],"0.0417":[-0.076,0.019,0.013],"0.0833":[-0.198,0.051,0.034],"0.125":[-0.288,0.076,0.051],"0.1667":[-0.378,0.117,0.076],"0.2083":[-0.402,0.142,0.092],"0.25":[-0.337,0.179,0.115],"0.2917":[-0.239,0.21,0.129],"0.3333":[-0.06,0.248,0.143],"0.375":[0.095,0.268,0.147],"0.4167":[0.343,0.295,0.142],"0.4583":[0.467,0.303,0.131],"0.5":[0.537,0.313,0.097],"0.5417":[0.591,0.322,0.061],"0.5833":[0.658,0.335,-0.004],"0.625":[0.699,0.34,-0.072],"0.6667":[0.69,0.34,-0.113],"0.7083":[0.609,0.313,-0.162],"0.75":[0.527,0.253,-0.182],"0.7917":[0.332,0.11,-0.203],"0.8333":[0.213,0.03,-0.212],"0.875":[0.079,-0.052,-0.136],"0.9167":[-0.001,-0.098,-0.03],"0.9583":[-0.068,-0.151,0.145],"1.0":[-0.074,-0.18,0.228],"1.0417":[-0.068,-0.213,0.251],"1.0833":[-0.013,-0.217,0.183],"1.125":[0.129,-0.214,0.006],"1.1667":[0.242,-0.21,-0.115],"1.2083":[0.369,-0.203,-0.235],"1.25":[0.421,-0.195,-0.263],"1.2917":[0.376,-0.177,-0.241],"1.3333":[0.249,-0.159,-0.202],"1.375":[0.032,-0.132,-0.12],"1.4167":[-0.071,-0.082,-0.014],"1.4583":[-0.044,-0.02,0.063],"1.5":[0.089,0.097,0.177],"1.5417":[0.177,0.166,0.243],"1.5833":[0.319,0.256,0.279],"1.625":[0.398,0.291,0.202],"1.6667":[0.342,0.289,0.038],"1.7083":[0.213,0.276,-0.063],"1.75":[0.103,0.233,-0.164],"1.7917":[0.072,0.195,-0.212],"1.8333":[0.042,0.135,-0.265],"1.875":[0.036,0.096,-0.281],"1.9167":[0.03,0.049,-0.281],"1.9583":[0.041,0.033,-0.208],"2.0":[0.085,0.017,-0.03],"2.0417":[0.129,0.011,0.099],"2.0833":[0.183,0.008,0.227],"2.125":[0.237,0.01,0.227],"2.1667":[0.411,0.019,0.163],"2.2083":[0.564,0.028,0.099],"2.25":[0.75,0.048,-0.015],"2.2917":[0.788,0.065,-0.08],"2.3333":[0.1,0.164,-0.18],"2.375":[-0.69,0.267,-0.214],"2.4167":[-2.359,0.312,-0.182],"2.4583":[-3.646,0.301,-0.138],"2.5":[-5.634,0.266,-0.066],"2.5417":[-6.758,0.229,-0.027],"2.5833":[-7.735,0.16,0],"2.625":[-7.986,0.109,-0.015],"2.6667":[-8.22,0.03,-0.082],"2.7083":[-8.204,-0.017,-0.14],"2.75":[-7.832,-0.077,-0.224],"2.7917":[-6.894,-0.117,-0.287],"2.8333":[-5.748,-0.144,-0.323],"2.875":[-3.584,-0.169,-0.373],"2.9167":[-2.229,-0.165,-0.403],"2.9583":[-0.268,-0.118,-0.427],"3.0":[0.783,0.01,-0.358],"3.0417":[1.701,0.423,0.111],"3.0833":[1.467,0.455,0.232],"3.125":[0.708,0.456,0.316],"3.1667":[0.278,0.44,0.296],"3.2083":[-0.18,0.272,0.098],"3.25":[-0.086,0.106,-0.063],"3.2917":[0.224,-0.163,-0.287],"3.3333":[0.392,-0.312,-0.241],"3.375":[0.568,-0.446,0.202],"3.4167":[0.48,-0.455,0.313],"3.4583":[0.138,-0.401,0.425],"3.5":[-0.09,-0.336,0.456],"3.5417":[-0.282,-0.241,0.424],"3.5833":[-0.439,-0.147,0.28],"3.625":[-0.51,-0.086,0.155],"3.6667":[-0.555,-0.001,-0.032],"3.7083":[-0.249,0.051,-0.118],"3.75":[0.677,0.115,-0.128],"3.7917":[0.983,0.131,-0.037],"3.8333":[0.67,0.022,0.354],"3.875":[0.249,-0.087,0.276],"3.9167":[0.031,-0.06,0.036],"3.9583":[-0.096,-0.024,-0.066],"4.0":[-0.245,0.036,-0.091],"4.0417":[-0.238,0.039,-0.032],"4.0833":[-0.223,0.041,0.002],"4.125":[-0.208,0.041,0.012],"4.1667":[-0.179,0.038,0.018],"4.2083":[-0.162,0.037,0.02],"4.25":[-0.129,0.035,0.022],"4.2917":[-0.104,0.033,0.023],"4.3333":[-0.071,0.03,0.024],"4.375":[-0.046,0.028,0.024],"4.4167":[-0.014,0.025,0.024],"4.4583":[0.011,0.022,0.024],"4.5":[0.052,0.018,0.024],"4.5417":[0.077,0.015,0.025],"4.5833":[0.118,0.013,0.026],"4.625":[0.143,0.01,0.028],"4.6667":[0.176,0.007,0.031],"4.7083":[0.198,0.003,0.036],"4.75":[0.243,0.003,0.048],"4.7917":[0.31,0,0.09],"4.8333":[0.37,0.016,0.137],"4.875":[0.475,0.082,0.215],"4.9167":[0.542,0.147,0.258],"4.9583":[0.634,0.264,0.298],"5.0":[0.676,0.395,0.323],"5.0417":[0.712,0.639,0.357],"5.0833":[0.733,0.827,0.376],"5.125":[0.764,1.109,0.393],"5.1667":[0.779,1.268,0.396],"5.2083":[0.794,1.439,0.383],"5.25":[0.794,1.494,0.362],"5.2917":[0.663,1.521,0.278],"5.3333":[0.468,1.495,0.182],"5.375":[0.043,1.185,0.005],"5.4167":[-0.281,0.651,-0.105],"5.4583":[-0.627,-0.181,-0.233],"5.5":[-0.703,-0.609,-0.272],"5.5417":[-0.624,-0.836,-0.235],"5.5833":[-0.484,-0.991,-0.152],"5.625":[-0.318,-1.056,-0.091],"5.6667":[0.023,-1.109,-0.017],"5.7083":[0.225,-1.12,-0.001],"5.75":[0.414,-1.108,0],"5.7917":[0.439,-1.062,0],"5.8333":[0.27,-0.877,0.01],"5.875":[-0.559,-0.645,0.075],"5.9167":[-2.701,-0.187,0.232],"5.9583":[-4.365,0.144,0.335],"6.0":[-6.584,0.594,0.409],"6.0417":[-7.822,0.835,0.4],"6.0833":[-8.945,1.047,0.342],"6.125":[-9.204,1.071,0.285],"6.1667":[-9.105,0.952,0.191],"6.2083":[-8.431,0.78,0.13],"6.25":[-5.049,0.318,0.035],"6.2917":[-2.909,0.044,-0.038],"6.3333":[0.188,-0.313,-0.16],"6.375":[1.385,-0.329,-0.221],"6.4167":[1.593,-0.165,-0.081],"6.4583":[1.592,-0.038,0.036],"6.5":[1.318,0.096,0.075],"6.5417":[1.011,0.119,0.092],"6.5833":[0.539,0.113,0.105],"6.625":[0.232,0.091,0.075],"6.6667":[-0.205,0.05,0],"6.7083":[-0.335,0.016,-0.022],"6.75":[-0.37,-0.031,-0.042],"6.7917":[-0.347,-0.05,-0.049],"6.8333":[-0.209,-0.049,-0.048],"6.875":[-0.094,-0.039,-0.043],"6.9167":[0.052,-0.009,-0.025],"6.9583":[0.126,0.009,0],"7.0":[0.118,0.019,0.009],"7.0417":[0.085,0.029,0.016],"7.0833":[0.058,0.032,0.017],"7.125":[0.008,0.029,0.017],"7.1667":[-0.017,0.024,0.017],"7.2083":[-0.05,0.016,0.008],"7.25":[-0.067,0.011,0.001],"7.2917":[-0.067,0.006,0],"7.3333":[-0.065,0.003,0],"7.375":[-0.045,0,0],"7.4167":[-0.01,-0.002,0],"7.4583":[0.038,-0.004,0],"7.5":[0.052,-0.004,0],"7.5417":[0.059,-0.005,0],"7.5833":[0.038,-0.005,0],"7.625":[-0.042,-0.004,0],"7.6667":[-0.127,-0.003,0],"7.7083":[-0.317,-0.001,0],"7.75":[-0.651,0.001,0],"7.7917":[-0.979,0.004,0],"7.8333":[-1.594,0.008,0],"7.875":[-2.065,0.012,0],"7.9167":[-2.772,0.02,0],"7.9583":[-3.095,0.029,0],"8.0":[-3.462,0.048,0],"8.0417":[-3.663,0.062,0],"8.0833":[-3.899,0.089,0],"8.125":[-4.04,0.109,0],"8.1667":[-4.208,0.136,0],"8.2083":[-4.314,0.147,0],"8.25":[-4.42,0.162,0],"8.2917":[-4.465,0.172,0],"8.3333":[-4.482,0.184,0],"8.375":[-4.474,0.192,0],"8.4167":[-4.431,0.202,0],"8.4583":[-4.389,0.208,0],"8.5":[-4.31,0.217,0],"8.5417":[-4.225,0.221,0],"8.5833":[-4.03,0.228,0],"8.625":[-3.854,0.232,0],"8.6667":[-3.545,0.235,0],"8.7083":[-3.312,0.235,0],"8.75":[-2.941,0.234,0],"8.7917":[-2.675,0.223,0],"8.8333":[-2.263,0.192,0],"8.875":[-1.981,0.162,0],"8.9167":[-1.557,0.111,0],"8.9583":[-1.161,0.058,0],"9.0":[-0.913,0.025,0],"9.0417":[-0.574,-0.019,0],"9.0833":[-0.383,-0.039,0],"9.125":[-0.16,-0.064,0],"9.1667":[-0.038,-0.078,0],"9.2083":[0.118,-0.097,0],"9.25":[0.222,-0.109,0],"9.2917":[0.349,-0.123,0],"9.3333":[0.43,-0.13,0],"9.375":[0.545,-0.139,0],"9.4167":[0.615,-0.142,0],"9.4583":[0.718,-0.147,0],"9.5":[0.773,-0.147,0],"9.5417":[0.851,-0.145,0],"9.5833":[0.895,-0.143,0],"9.625":[0.939,-0.137,0],"9.6667":[0.95,-0.13,0],"9.7083":[0.973,-0.114,0],"9.75":[0.98,-0.084,0],"9.7917":[0.973,-0.065,0],"9.8333":[0.96,-0.007,0.002],"9.875":[0.946,0.042,0.005],"9.9167":[0.911,0.119,0.011],"9.9583":[0.884,0.178,0.014],"10.0":[0.842,0.245,0.021],"10.0417":[0.816,0.283,0.026],"10.0833":[0.771,0.313,0.031],"10.125":[0.726,0.316,0.035],"10.1667":[0.432,0.3,0.038],"10.2083":[0.22,0.288,0.041],"10.25":[-0.001,0.241,0.044],"10.2917":[0.061,0.098,-0.01],"10.3333":[0.257,-0.137,-0.189],"10.375":[0.318,-0.212,-0.266],"10.4167":[0.214,-0.229,-0.282],"10.4583":[0.116,-0.196,-0.287],"10.5":[0.026,-0.055,-0.292],"10.5417":[0.058,0.077,-0.275],"10.5833":[0.156,0.235,-0.18],"10.625":[0.222,0.294,0.009],"10.6667":[0.288,0.333,0.241],"10.7083":[0.255,0.34,0.224],"10.75":[0.146,0.34,0.155],"10.7917":[0.067,0.33,0.092],"10.8333":[0.001,0.302,-0.002],"10.875":[-0.003,0.227,-0.056],"10.9167":[0.026,0.048,-0.14],"10.9583":[0.067,0.019,-0.174],"11.0":[0.144,-0.004,-0.13],"11.0417":[0.186,-0.011,-0.042],"11.0833":[0.211,-0.022,0.13],"11.125":[0.186,-0.027,0.231],"11.1667":[0.161,-0.028,0.17],"11.2083":[0.103,-0.025,-0.022],"11.25":[0.07,-0.022,-0.083],"11.2917":[0.042,-0.013,-0.044],"11.3333":[0.053,0.001,0.005],"11.375":[0.109,0.043,0.079],"11.4167":[0.164,0.071,0.145],"11.4583":[0.253,0.113,0.202],"11.5":[0.286,0.141,0.194],"11.5417":[0.286,0.184,0.071],"11.5833":[0.265,0.205,-0.001],"11.625":[0.143,0.229,-0.047],"11.6667":[0.033,0.238,-0.064],"11.7083":[-0.012,0.226,-0.085],"11.75":[-0.001,0.198,-0.093],"11.7917":[0.033,0.165,-0.081],"11.8333":[0.129,0.159,-0.055],"11.875":[0.349,0.163,0.005],"11.9167":[0.59,0.177,0.075],"11.9583":[0.739,0.188,0.118],"12.0":[0.902,0.203,0.162],"12.0417":[0.937,0.206,0.171],"12.0833":[0.891,0.193,0.076],"12.125":[0.739,0.172,-0.019],"12.1667":[0.098,0.138,-0.162],"12.2083":[-0.474,0.124,-0.211],"12.25":[-1.382,0.117,-0.171],"12.2917":[-2.015,0.12,-0.115],"12.3333":[-2.907,0.132,-0.025],"12.375":[-3.4,0.142,0.022],"12.4167":[-3.7,0.156,0.085],"12.4583":[-3.399,0.161,0.123],"12.5":[-2.294,0.156,0.161],"12.5417":[-1.245,0.065,0.158],"12.5833":[0.21,-0.141,0.114],"12.625":[0.411,-0.124,0.077],"12.6667":[0.556,-0.061,0.017],"12.7083":[0.532,-0.031,-0.019],"12.75":[0.198,0.007,-0.076],"12.7917":[-0.002,0.016,-0.109],"12.8333":[-0.105,0.005,-0.15],"12.875":[-0.111,-0.004,-0.161],"12.9167":[-0.085,-0.009,-0.144],"12.9583":[-0.052,-0.008,-0.124],"13.0":[-0.002,-0.006,-0.094],"13.0417":[0.023,-0.004,-0.068],"13.0833":[0.023,-0.001,-0.038],"13.125":[0.015,0.001,-0.008],"13.1667":[0.001,0.001,0.007],"13.2083":[-0.01,0.001,0.014],"13.25":[-0.01,0.001,0.014],"13.2917":[-0.004,0.001,0.009],"13.3333":[-0.004,0.001,0.004],"13.375":[0.001,0.001,0],"13.4167":[0.001,0.001,0]}},"angel":{"scale":0}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_inspect_1"}}},"inspect_1":{"loop":true,"animation_length":9.6621,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-13.881,171.838,-60.671],"0.0417":[-16.604,170.499,-60.045],"0.0833":[-24.034,167.116,-59.307],"0.125":[-31.733,163.981,-59.476],"0.1667":[-46.189,157.786,-60.697],"0.2083":[-56.373,153.22,-62.346],"0.25":[-57.24,152.83,-62.522],"0.2917":[-57.239,152.83,-62.522],"0.3333":[-57.238,152.83,-62.522],"0.375":[-57.238,152.83,-62.522],"0.4167":[-57.237,152.831,-62.522],"0.4583":[-57.237,152.83,-62.522],"0.5":[-57.236,152.831,-62.522],"0.5417":[-57.235,152.831,-62.522],"0.5833":[-57.237,152.83,-62.522],"0.625":[-57.237,152.831,-62.522],"0.6667":[-57.236,152.831,-62.522],"0.8333":[-57.236,152.83,-62.522],"0.875":[-57.236,152.83,-62.522],"0.9167":[-57.236,152.83,-62.522],"0.9583":[-57.236,152.83,-62.523],"1.0":[-57.236,152.83,-62.522],"1.0417":[-57.236,152.83,-62.522],"1.0833":[-57.236,152.83,-62.523],"1.125":[-57.237,152.831,-62.521],"1.375":[-57.236,152.831,-62.521],"2.2083":[-57.236,152.831,-62.521],"2.25":[-57.236,152.83,-62.523],"3.3333":[-57.235,152.83,-62.522],"3.625":[-57.237,152.83,-62.523],"3.6667":[-57.237,152.83,-62.523],"3.7083":[-57.236,152.83,-62.523],"3.875":[-57.236,152.831,-62.522],"3.9167":[-57.236,152.831,-62.522],"3.9583":[-57.236,152.83,-62.521],"4.0":[-57.236,152.831,-62.522],"4.0417":[-57.236,152.83,-62.521],"4.0833":[-57.236,152.831,-62.522],"4.125":[-57.237,152.831,-62.522],"4.1667":[-57.236,152.831,-62.522],"4.2083":[-57.237,152.831,-62.522],"4.25":[-57.236,152.831,-62.522],"4.2917":[-57.235,152.831,-62.522],"4.3333":[-57.237,152.831,-62.522],"4.375":[-57.236,152.831,-62.522],"4.4167":[-57.236,152.831,-62.522],"4.5":[-57.236,152.831,-62.522],"4.5417":[-57.236,152.831,-62.522],"4.625":[-57.21,152.854,-62.491],"4.6667":[-57.109,152.94,-62.376],"4.7083":[-56.887,153.132,-62.122],"4.75":[-56.693,153.3,-61.901],"4.7917":[-56.342,153.612,-61.499],"4.8333":[-56.067,153.859,-61.185],"4.875":[-55.602,154.288,-60.653],"4.9167":[-55.078,154.785,-60.051],"4.9583":[-54.699,155.155,-59.614],"5.0":[-54.09,155.765,-58.914],"5.0417":[-53.66,156.209,-58.417],"5.0833":[-52.986,156.929,-57.637],"5.125":[-52.518,157.445,-57.094],"5.1667":[-51.797,158.272,-56.254],"5.2083":[-51.304,158.858,-55.677],"5.25":[-50.552,159.787,-54.795],"5.2917":[-50.045,160.44,-54.197],"5.3333":[-49.279,161.465,-53.29],"5.375":[-48.768,162.18,-52.68],"5.4167":[-48.002,163.296,-51.764],"5.4583":[-47.495,164.068,-51.153],"5.5":[-46.742,165.266,-50.239],"5.5417":[-46.001,166.508,-49.334],"5.5833":[-45.517,167.359,-48.737],"5.625":[-44.804,168.667,-47.851],"5.6667":[-44.34,169.558,-47.269],"5.7083":[-43.661,170.921,-46.412],"5.75":[-43.222,171.845,-45.852],"5.7917":[-42.584,173.251,-45.03],"5.8333":[-42.173,174.199,-44.494],"5.875":[-41.578,175.634,-43.712],"5.9167":[-41.011,177.08,-42.955],"5.9583":[-40.648,178.048,-42.465],"6.0":[-40.127,179.502,-41.753],"6.0417":[-39.795,180.47,-41.294],"6.0833":[-39.32,181.918,-40.629],"6.125":[-39.019,182.877,-40.202],"6.1667":[-38.59,184.304,-39.586],"6.2083":[-38.318,185.244,-39.193],"6.25":[-37.933,186.634,-38.629],"6.2917":[-37.69,187.547,-38.269],"6.3333":[-37.345,188.915,-37.735],"6.375":[-37.127,189.841,-37.375],"6.4167":[-36.817,191.249,-36.828],"6.4583":[-36.621,192.203,-36.46],"6.5":[-36.343,193.653,-35.903],"6.5417":[-36.168,194.635,-35.53],"6.5833":[-35.921,196.129,-34.967],"6.625":[-35.69,197.652,-34.404],"6.6667":[-35.546,198.682,-34.028],"6.7083":[-35.342,200.252,-33.467],"6.75":[-35.214,201.315,-33.094],"6.7917":[-35.033,202.934,-32.539],"6.8333":[-34.92,204.031,-32.172],"6.875":[-34.761,205.702,-31.63],"6.9167":[-34.612,207.406,-31.098],"6.9583":[-34.519,208.56,-30.75],"7.0":[-34.385,210.319,-30.241],"7.0417":[-34.299,211.51,-29.912],"7.0833":[-34.176,213.328,-29.432],"7.125":[-34.097,214.559,-29.127],"7.1667":[-33.979,216.437,-28.687],"7.2083":[-33.899,217.711,-28.411],"7.25":[-33.776,219.649,-28.025],"7.2917":[-33.691,220.964,-27.786],"7.3333":[-33.554,222.969,-27.465],"7.375":[-33.454,224.328,-27.277],"7.4167":[-33.286,226.399,-27.041],"7.4583":[-32.967,228.018,-27.126],"7.5":[-30.194,232.634,-29.746],"7.5417":[-27.068,236.307,-32.835],"7.5833":[-22.254,240.998,-37.558],"7.625":[-22.236,243.304,-36.574],"7.6667":[-27.387,243.837,-26.767],"7.7083":[-39.474,243.921,-8.034],"7.75":[-55.333,243.286,8.97],"7.7917":[-72.478,234.049,28.986],"7.8333":[-75.562,228.133,34.426],"7.875":[-79.23,230.319,38.516],"7.9167":[-77.754,242.431,34.042],"7.9583":[-73.651,255.483,27.987],"8.0":[-79.381,253.703,34.477],"8.0417":[-88.596,241.368,47.458],"8.0833":[-88.572,228.848,53.422],"8.125":[-92.274,224.535,61.577],"8.1667":[-92.409,230.952,59.896],"8.2083":[-92.847,233.338,57.642],"8.25":[-74.791,245.399,33.737],"8.2917":[-55.631,243.219,12.91],"8.3333":[-48.231,231.228,3.665],"8.375":[-47.98,229.889,3.27],"8.4167":[-47.98,229.891,3.27],"8.4583":[-47.981,229.89,3.27],"8.5":[-47.981,229.892,3.27],"8.5417":[-47.98,229.891,3.269],"8.5833":[-47.98,229.888,3.269],"8.625":[-39.858,168.472,-47.619],"8.6667":[-53.316,142.495,-75.087],"8.7083":[-31.619,134.391,-63.034],"8.75":[-17.448,135.813,-50.954],"8.7917":[-5.754,142.826,-40.412],"8.8333":[-6.023,148.39,-46.038],"8.875":[-7.967,161.056,-60.396],"8.9167":[-9.531,166.328,-66.158],"8.9583":[-10.714,170.877,-66.461],"9.0":[-11.113,172.028,-63.363],"9.0417":[-11.574,173.569,-59.58],"9.0833":[-12.222,173.813,-58.195],"9.125":[-12.731,173.591,-58.142],"9.1667":[-12.953,173.375,-58.199],"9.2083":[-12.861,172.97,-58.595],"9.25":[-12.87,172.702,-59.74],"9.2917":[-12.94,172.588,-60.554],"9.3333":[-13.079,172.136,-61.201],"9.375":[-13.242,171.84,-61.342],"9.4167":[-13.249,171.586,-61.293],"9.4583":[-13.377,171.689,-61.161],"9.5":[-13.453,171.91,-60.962],"9.5417":[-13.454,171.991,-60.878],"9.5833":[-13.469,172.034,-60.806],"9.625":[-13.502,172.029,-60.779]},"position":{"0.0":[4.806,39.553,-9.527],"0.0417":[6.339,39.714,-9.529],"0.0833":[9.148,39.903,-9.547],"0.125":[10.703,38.12,-9.635],"0.1667":[13.168,31.666,-9.903],"0.2083":[14.749,26.259,-10.121],"0.25":[14.878,25.774,-10.14],"3.3333":[14.878,25.775,-10.14],"3.625":[14.878,25.774,-10.14],"4.0833":[14.878,25.774,-10.14],"4.125":[14.878,25.774,-10.14],"4.9167":[14.878,25.774,-10.14],"4.9583":[14.876,25.779,-10.136],"5.0":[14.866,25.804,-10.118],"5.0417":[14.856,25.833,-10.097],"5.0833":[14.833,25.891,-10.055],"5.125":[14.815,25.94,-10.019],"5.1667":[14.781,26.029,-9.955],"5.2083":[14.755,26.098,-9.905],"5.25":[14.711,26.214,-9.822],"5.2917":[14.679,26.299,-9.761],"5.3333":[14.626,26.439,-9.661],"5.375":[14.589,26.54,-9.59],"5.4167":[14.528,26.701,-9.476],"5.4583":[14.486,26.815,-9.397],"5.5":[14.419,26.994,-9.272],"5.5417":[14.349,27.182,-9.142],"5.5833":[14.301,27.312,-9.053],"5.625":[14.226,27.513,-8.916],"5.6667":[14.176,27.651,-8.823],"5.7083":[14.098,27.862,-8.682],"5.75":[14.046,28.005,-8.587],"5.7917":[13.966,28.223,-8.444],"5.8333":[13.913,28.37,-8.349],"5.875":[13.833,28.592,-8.207],"5.9167":[13.753,28.814,-8.067],"5.9583":[13.7,28.962,-7.975],"6.0":[13.621,29.183,-7.84],"6.0417":[13.569,29.329,-7.752],"6.0833":[13.493,29.546,-7.625],"6.125":[13.444,29.688,-7.543],"6.1667":[13.372,29.898,-7.426],"6.2083":[13.325,30.034,-7.352],"6.25":[13.258,30.233,-7.248],"6.2917":[13.215,30.361,-7.184],"6.3333":[13.153,30.55,-7.089],"6.375":[13.114,30.675,-7.023],"6.4167":[13.056,30.861,-6.923],"6.4583":[13.018,30.985,-6.855],"6.5":[12.963,31.171,-6.751],"6.5417":[12.926,31.296,-6.682],"6.5833":[12.872,31.483,-6.577],"6.625":[12.819,31.671,-6.473],"6.6667":[12.783,31.798,-6.403],"6.7083":[12.73,31.99,-6.301],"6.75":[12.693,32.12,-6.233],"6.7917":[12.639,32.317,-6.134],"6.8333":[12.601,32.451,-6.07],"6.875":[12.544,32.655,-5.976],"6.9167":[12.485,32.864,-5.887],"6.9583":[12.444,33.007,-5.83],"7.0":[12.381,33.225,-5.749],"7.0417":[12.337,33.374,-5.698],"7.0833":[12.269,33.603,-5.628],"7.125":[12.222,33.76,-5.585],"7.1667":[12.147,34.002,-5.527],"7.2083":[12.095,34.168,-5.493],"7.25":[12.014,34.424,-5.449],"7.2917":[11.957,34.6,-5.425],"7.3333":[11.867,34.871,-5.397],"7.375":[11.804,35.058,-5.385],"7.4167":[11.705,35.347,-5.375],"7.4583":[11.612,35.579,-5.398],"7.5":[11.233,36.295,-5.698],"7.5417":[10.907,36.927,-6.032],"7.5833":[10.502,37.889,-6.615],"7.625":[10.402,38.623,-7.175],"7.6667":[10.407,38.966,-7.603],"7.7083":[10.445,39.189,-8.345],"7.75":[10.561,39.137,-8.966],"7.7917":[10.655,38.973,-9.852],"7.8333":[10.63,38.869,-9.918],"7.875":[10.44,38.971,-9.201],"7.9167":[10.312,39.11,-8.42],"7.9583":[10.261,39.462,-7.904],"8.0":[10.442,39.59,-8.082],"8.0417":[10.922,39.64,-8.862],"8.0833":[11.164,39.599,-9.76],"8.125":[11.102,39.516,-9.481],"8.1667":[10.816,39.602,-8.678],"8.2083":[10.627,39.695,-7.986],"8.25":[10.338,39.346,-6.933],"8.2917":[10.337,38.494,-6.569],"8.3333":[10.772,36.841,-6.426],"8.375":[11.075,35.742,-6.432],"8.4167":[11.504,33.925,-6.519],"8.4583":[11.938,33.394,-6.553],"8.5":[12.89,33.457,-6.55],"8.5417":[13.621,33.595,-6.548],"8.5833":[14.721,34.008,-6.546],"8.625":[15.978,35.118,-6.711],"8.6667":[15.932,36.257,-7.064],"8.7083":[13.759,38.267,-7.856],"8.75":[11.632,39.124,-8.172],"8.7917":[8.007,39.971,-8.593],"8.8333":[5.766,40.094,-9.055],"8.875":[3.949,39.745,-9.31],"8.9167":[3.96,39.443,-9.225],"8.9583":[4.425,39.242,-9.218],"9.0":[4.822,39.274,-9.304],"9.0417":[4.976,39.442,-9.42],"9.0833":[4.978,39.597,-9.502],"9.125":[4.905,39.665,-9.533],"9.1667":[4.784,39.691,-9.564],"9.2083":[4.709,39.674,-9.573],"9.25":[4.612,39.617,-9.569],"9.2917":[4.568,39.573,-9.559],"9.3333":[4.55,39.536,-9.54],"9.375":[4.548,39.52,-9.528],"9.4167":[4.554,39.508,-9.517],"9.4583":[4.559,39.508,-9.516],"9.5":[4.565,39.514,-9.518],"9.5417":[4.566,39.518,-9.52],"9.5833":[4.566,39.522,-9.524],"9.625":[4.562,39.525,-9.526]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand":{"rotation":{"0.0":[138.47,-35.671,-98.738],"0.0417":[135.733,-35.231,-106.957],"0.0833":[135.016,-30.305,-122.56],"0.125":[138.673,-15.444,-138.499],"0.1667":[137.433,14.46,-159.23],"0.2083":[128.267,32.544,-174.152],"0.25":[121.818,31.47,-180.609],"0.2917":[134.638,38.251,-178.354],"0.3333":[133.475,42.156,-172.734],"0.375":[137.824,28.354,-184.435],"0.4167":[95.474,23.416,-172.06],"0.4583":[115.875,8.544,-162.827],"0.5":[97.69,24.191,-183.83],"0.5417":[65.793,35.582,-219.581],"0.5833":[64.18,41.555,-225.659],"0.625":[60.689,50.837,-234.56],"0.6667":[29.946,40.777,-263.789],"0.7083":[19.47,23.662,-267.967],"0.75":[17.107,14.819,-261.229],"0.7917":[15.382,8.677,-248.223],"0.8333":[12.928,8.742,-241.342],"0.875":[11.754,19.863,-216.606],"0.9167":[30.949,40.311,-165.982],"0.9583":[49.765,45.364,-139.195],"1.0":[87.953,26.649,-87.994],"1.0417":[96.113,8.523,-73.155],"1.0833":[99.822,-19.461,-58.174],"1.125":[98.537,-36.532,-50.222],"1.1667":[92.587,-56.598,-40.67],"1.2083":[74.385,-71.883,-22.307],"1.25":[44.395,-78.015,6.804],"1.2917":[3.162,-79.079,46.377],"1.3333":[-7.4,-79.061,55.6],"1.375":[-15.964,-79.65,62.69],"1.4167":[-17.43,-80.682,63.382],"1.4583":[-20.053,-81.927,65.034],"1.5":[-22.387,-82.417,66.894],"1.5417":[-25.449,-83.081,69.389],"1.5833":[-27.363,-83.503,70.995],"1.625":[-29.734,-84.17,72.955],"1.6667":[-30.59,-84.697,73.559],"1.7083":[-30.559,-85.581,73.185],"1.75":[-29.561,-86.258,71.951],"1.7917":[-25.99,-87.266,68.052],"1.8333":[-23.076,-87.754,64.981],"1.875":[-17.304,-88.345,59.016],"1.9167":[-7.209,-88.847,48.746],"1.9583":[5.76,-89.137,35.666],"2.0":[49.224,-89.378,-7.974],"2.0417":[84.872,-89.225,-43.755],"2.0833":[124.593,-86.112,-84.309],"2.125":[129.77,-81.537,-90.695],"2.1667":[130.412,-70.366,-95.047],"2.2083":[129.223,-57.291,-98.112],"2.25":[125.061,-21.849,-106.081],"2.2917":[121.359,0.618,-112.671],"2.3333":[113.913,25.782,-123.337],"2.375":[105.777,41.935,-133.511],"2.4167":[101.873,46.594,-138.476],"2.4583":[98.921,50.025,-142.068],"2.5":[99.269,50.25,-141.815],"2.5417":[100.536,49.839,-140.798],"2.5833":[101.428,49.23,-140.085],"2.625":[101.675,49.081,-140.087],"2.6667":[101.247,49.47,-140.643],"2.7083":[100.481,50.152,-141.523],"2.75":[100.003,50.569,-142.069],"2.7917":[99.362,51.109,-142.809],"2.8333":[99.067,51.344,-143.169],"2.875":[98.831,51.512,-143.503],"2.9167":[98.731,51.561,-143.701],"2.9583":[98.703,51.561,-143.792],"3.0":[98.664,51.566,-143.923],"3.0417":[98.607,51.601,-144.038],"3.0833":[98.484,51.692,-144.243],"3.125":[98.398,51.76,-144.38],"3.1667":[98.265,51.872,-144.587],"3.2083":[98.171,51.951,-144.726],"3.25":[98.024,52.079,-144.935],"3.2917":[97.915,52.174,-145.078],"3.3333":[97.736,52.342,-145.3],"3.375":[97.556,52.508,-145.513],"3.4167":[97.45,52.604,-145.64],"3.4583":[97.362,52.676,-145.746],"3.5":[97.335,52.692,-145.777],"3.5417":[97.265,52.746,-145.858],"3.5833":[97.152,52.847,-145.99],"3.625":[95.705,54.176,-147.679],"3.6667":[90.505,60.58,-153.428],"3.7083":[71.141,70.5,-173.828],"3.75":[40.108,74.57,-205.732],"3.7917":[0.724,67.72,-246.385],"3.8333":[-4.676,58.515,-252.533],"3.875":[-1.135,43.205,-255.297],"3.9167":[13.363,32.166,-256.434],"3.9583":[33.736,25.344,-253.899],"4.0":[71.329,9.706,-253.222],"4.0417":[83.826,8.919,-266.076],"4.0833":[97.317,7.404,-270.939],"4.125":[103.795,7.366,-265.446],"4.1667":[109.251,4.917,-248.908],"4.2083":[107.799,1.326,-232.63],"4.25":[98.025,-2.315,-225.731],"4.2917":[93.838,-1.474,-240.345],"4.3333":[97.754,0.28,-253.26],"4.375":[103.811,3.985,-249.498],"4.4167":[111.637,0.732,-236.157],"4.4583":[116.245,-1.567,-216.529],"4.5":[122.771,-19.938,-183.518],"4.5417":[106.812,-23.127,-165.837],"4.5833":[104.532,-25.064,-160.573],"4.625":[92.335,-29.667,-150.47],"4.6667":[84.999,-41.942,-134.024],"4.7083":[71.931,-55.939,-107.355],"4.75":[75.626,-60.954,-105.578],"4.7917":[99.465,-56.538,-132.031],"4.8333":[114.129,-44.228,-140.746],"4.875":[134.436,-31.618,-138.087],"4.9167":[146.232,-42.943,-117.474],"4.9583":[152.077,-47.633,-113.878],"5.0":[157.898,-52.072,-112.656],"5.0417":[160.237,-53.883,-112.293],"5.0833":[161.211,-54.84,-111.439],"5.125":[161.441,-55.116,-111.046],"5.1667":[162.447,-55.647,-111.352],"5.2083":[163.054,-55.938,-111.664],"5.25":[163.943,-56.372,-112.162],"5.2917":[164.477,-56.625,-112.469],"5.3333":[165.024,-56.893,-112.716],"5.375":[165.214,-56.994,-112.725],"5.4167":[165.353,-57.083,-112.628],"5.4583":[165.407,-57.126,-112.553],"5.5":[165.474,-57.194,-112.476],"5.5417":[165.468,-57.234,-112.389],"5.5833":[165.458,-57.26,-112.342],"5.625":[165.493,-57.314,-112.329],"5.6667":[165.583,-57.374,-112.401],"5.7083":[165.731,-57.467,-112.536],"5.75":[165.78,-57.508,-112.568],"5.7917":[164.885,-57.175,-111.484],"5.8333":[160.606,-55.17,-106.484],"5.875":[157.725,-52.683,-102.723],"5.9167":[154.977,-47.107,-99.76],"5.9583":[152.979,-41.729,-97.864],"6.0":[150.411,-25.287,-97.178],"6.0417":[150.434,-14.672,-99.922],"6.0833":[153.956,5.176,-115.255],"6.125":[157.953,23.489,-126.671],"6.1667":[164.255,55.122,-140.26],"6.2083":[172.01,69.392,-145.51],"6.25":[147.358,81.802,-186.784],"6.2917":[99.831,81.15,-243.701],"6.3333":[84.069,80.328,-269.591],"6.375":[85.976,79.677,-270.427],"6.4167":[91.292,79.1,-266.915],"6.4583":[94.027,78.848,-265.028],"6.5":[95.958,78.677,-264.316],"6.5417":[96.855,78.717,-263.997],"6.5833":[98.017,78.765,-263.523],"6.625":[98.882,79.03,-263.063],"6.6667":[99.55,79.204,-262.601],"6.7083":[100.345,79.351,-262.043],"6.75":[100.595,79.328,-261.901],"6.7917":[100.853,79.275,-261.786],"6.8333":[100.977,79.23,-261.747],"6.875":[101.084,79.165,-261.756],"6.9167":[101.037,79.085,-261.884],"6.9583":[100.975,79.023,-262],"7.0":[100.877,78.938,-262.171],"7.0417":[100.846,78.894,-262.242],"7.0833":[100.865,78.866,-262.265],"7.125":[100.925,78.866,-262.229],"7.1667":[101.035,78.88,-262.146],"7.2083":[101.09,78.89,-262.103],"7.25":[101.093,78.893,-262.107],"7.2917":[100.273,78.783,-262.801],"7.3333":[98.434,78.163,-264.47],"7.375":[104.83,77.567,-257.946],"7.4167":[126.991,75.122,-234.508],"7.4583":[134.237,72.931,-226.426],"7.5":[128.815,71.099,-230.672],"7.5417":[123.777,69.976,-234.805],"7.5833":[116.816,69.333,-240.708],"7.625":[116.074,71.774,-241.238],"7.6667":[120.804,74.379,-236.248],"7.7083":[128.799,76.294,-228.336],"7.75":[133.863,76.874,-223.511],"7.7917":[140.118,76.464,-217.743],"7.8333":[145.272,74.726,-212.16],"7.875":[152.268,70.611,-203.953],"7.9167":[152.992,69.592,-203.222],"7.9583":[149.323,71.4,-207.775],"8.0":[145.531,73.333,-212.054],"8.0417":[133.4,76.109,-225.996],"8.0833":[141.914,72.775,-218.665],"8.125":[149.684,70.236,-210.967],"8.1667":[146.703,70.85,-213.724],"8.2083":[140.56,71.717,-220.377],"8.25":[113.482,66.911,-248.597],"8.2917":[96.855,53.977,-264.979],"8.3333":[87.089,26.304,-271.952],"8.375":[85.921,11.883,-270.049],"8.4167":[86.63,18.32,-263.64],"8.4583":[88.239,40.539,-259.369],"8.5":[132.564,54.523,-201.795],"8.5417":[144.249,44.493,-180.626],"8.5833":[142.214,33.957,-176.371],"8.625":[139.604,19.181,-179.936],"8.6667":[140.452,11.504,-181.625],"8.7083":[132.337,1.549,-187.508],"8.75":[124.021,5.193,-185.351],"8.7917":[121.792,11.804,-164.295],"8.8333":[134.377,-0.931,-123.586],"8.875":[140.698,-7.184,-109.618],"8.9167":[139.815,-14.221,-103.036],"8.9583":[135.47,-26.237,-98.749],"9.0":[134.834,-32.483,-97.184],"9.0417":[137.415,-38.426,-96.496],"9.0833":[139.751,-38.806,-96.384],"9.125":[140.455,-38.126,-96.042],"9.1667":[140.664,-37.119,-95.384],"9.2083":[140.396,-36.651,-94.819],"9.25":[140.051,-36.043,-94.28],"9.2917":[139.836,-35.924,-94.174],"9.3333":[139.686,-35.982,-94.254],"9.375":[139.569,-36.026,-94.215],"9.4167":[139.398,-36.09,-94.142],"9.4583":[139.348,-36.139,-94.113],"9.5":[139.326,-36.216,-94.114],"9.5417":[139.322,-36.273,-94.137],"9.5833":[139.318,-36.355,-94.18],"9.625":[139.327,-36.438,-94.222]},"position":{"0.0":[-3.816,39.639,-14.668],"0.0417":[-5.665,39.943,-14.591],"0.0833":[-8.544,40.021,-14.499],"0.125":[-10.731,39.613,-14.48],"0.1667":[-13.65,37.629,-14.433],"0.2083":[-14.457,34.763,-14.7],"0.25":[-13.46,34.055,-15.37],"0.2917":[-11.934,36.069,-16.597],"0.3333":[-12.528,38.834,-16.2],"0.375":[-14.071,36.205,-13.702],"0.4167":[-16.011,30.453,-11.715],"0.4583":[-12.506,24.704,-11.448],"0.5":[-11.034,27.474,-11.955],"0.5417":[-9.229,33.159,-12.941],"0.5833":[-8.079,36.054,-13.544],"0.625":[-6.355,40.295,-14.518],"0.6667":[-5.089,41.744,-15.862],"0.7083":[-4.724,40.215,-16.692],"0.75":[-5.347,38.382,-16.533],"0.7917":[-6.862,35.947,-15.861],"0.8333":[-7.739,35.539,-15.329],"0.875":[-8.893,35.83,-14.486],"0.9167":[-9.642,37.479,-13.767],"0.9583":[-9.941,38.63,-13.468],"1.0":[-10.214,40.841,-12.402],"1.0417":[-10.397,41.95,-11.794],"1.0833":[-10.875,43.375,-10.749],"1.125":[-11.352,44.16,-10.1],"1.1667":[-12.42,45.086,-9.61],"1.2083":[-13.548,45.612,-9.271],"1.25":[-14.281,45.81,-9.07],"1.2917":[-15.166,46.021,-8.627],"1.3333":[-15.634,46.098,-8.286],"1.375":[-16.182,46.162,-7.944],"1.4167":[-16.469,46.175,-7.786],"1.4583":[-16.855,46.184,-7.61],"1.5":[-17.077,46.181,-7.548],"1.5417":[-17.362,46.164,-7.503],"1.5833":[-17.53,46.146,-7.496],"1.625":[-17.755,46.113,-7.502],"1.6667":[-17.888,46.086,-7.507],"1.7083":[-18.054,46.042,-7.525],"1.75":[-18.149,46.012,-7.543],"1.7917":[-18.267,45.969,-7.575],"1.8333":[-18.324,45.944,-7.595],"1.875":[-18.396,45.91,-7.626],"1.9167":[-18.46,45.877,-7.657],"1.9583":[-18.501,45.856,-7.677],"2.0":[-18.564,45.823,-7.708],"2.0417":[-18.609,45.799,-7.729],"2.0833":[-18.793,45.695,-7.792],"2.125":[-19.008,45.555,-7.855],"2.1667":[-19.326,45.185,-7.924],"2.2083":[-19.535,44.856,-7.931],"2.25":[-19.788,44.198,-7.823],"2.2917":[-19.855,43.722,-7.714],"2.3333":[-19.853,43.176,-7.594],"2.375":[-19.777,42.802,-7.611],"2.4167":[-19.639,42.534,-7.568],"2.4583":[-19.409,42.272,-7.541],"2.5":[-19.266,42.185,-7.554],"2.5417":[-19.058,42.084,-7.577],"2.5833":[-18.931,42.048,-7.587],"2.625":[-18.755,42.026,-7.605],"2.6667":[-18.645,42.029,-7.624],"2.7083":[-18.494,42.054,-7.659],"2.75":[-18.393,42.071,-7.684],"2.7917":[-18.246,42.097,-7.717],"2.8333":[-18.154,42.116,-7.736],"2.875":[-18.023,42.145,-7.758],"2.9167":[-17.896,42.176,-7.777],"2.9583":[-17.814,42.197,-7.788],"3.0":[-17.699,42.225,-7.804],"3.0417":[-17.629,42.242,-7.813],"3.0833":[-17.533,42.263,-7.826],"3.125":[-17.475,42.276,-7.833],"3.1667":[-17.395,42.292,-7.843],"3.2083":[-17.346,42.302,-7.849],"3.25":[-17.277,42.316,-7.859],"3.2917":[-17.238,42.324,-7.865],"3.3333":[-17.192,42.334,-7.873],"3.375":[-17.153,42.341,-7.881],"3.4167":[-17.127,42.345,-7.887],"3.4583":[-17.09,42.351,-7.893],"3.5":[-17.069,42.354,-7.896],"3.5417":[-17.036,42.358,-7.902],"3.5833":[-17.011,42.361,-7.909],"3.625":[-16.92,42.366,-7.965],"3.6667":[-16.63,42.354,-8.168],"3.7083":[-15.969,42.143,-8.759],"3.75":[-15.33,41.828,-9.421],"3.7917":[-14.427,41.233,-10.353],"3.8333":[-13.924,40.735,-10.86],"3.875":[-13.239,39.965,-11.499],"3.9167":[-12.667,39.352,-11.85],"3.9583":[-12.326,39.082,-12.014],"4.0":[-12.044,39.345,-12.359],"4.0417":[-12.055,39.655,-12.584],"4.0833":[-11.807,40.499,-12.675],"4.125":[-11.554,40.695,-12.812],"4.1667":[-11.026,40.502,-13.119],"4.2083":[-10.579,39.902,-13.383],"4.25":[-10.532,38.437,-13.24],"4.2917":[-10.894,37.754,-12.426],"4.3333":[-12.117,38.029,-11.442],"4.375":[-13.01,38.661,-11.217],"4.4167":[-13.889,40.635,-11.673],"4.4583":[-13.893,42.1,-12.366],"4.5":[-12.043,43.052,-13.511],"4.5417":[-9.828,41.682,-13.684],"4.5833":[-9.604,40.179,-13.395],"4.625":[-10.769,38.863,-12.231],"4.6667":[-12.287,39.084,-11.896],"4.7083":[-13.501,40.861,-11.855],"4.75":[-13.771,42.533,-12.123],"4.7917":[-13.126,44.034,-12.683],"4.8333":[-11.697,44.227,-12.532],"4.875":[-8.533,43.113,-10.885],"4.9167":[-4.48,40.779,-8.012],"4.9583":[-3.698,40.333,-7.265],"5.0":[-3.139,40.05,-6.962],"5.0417":[-2.909,39.957,-6.889],"5.0833":[-2.635,39.914,-6.824],"5.125":[-2.497,39.907,-6.797],"5.1667":[-2.383,39.904,-6.76],"5.2083":[-2.338,39.898,-6.751],"5.25":[-2.277,39.884,-6.749],"5.2917":[-2.245,39.874,-6.751],"5.3333":[-2.207,39.861,-6.756],"5.375":[-2.191,39.853,-6.761],"5.4167":[-2.175,39.842,-6.77],"5.4583":[-2.167,39.835,-6.776],"5.5":[-2.156,39.824,-6.785],"5.5417":[-2.148,39.814,-6.795],"5.5833":[-2.145,39.808,-6.801],"5.625":[-2.14,39.797,-6.811],"5.6667":[-2.138,39.79,-6.817],"5.7083":[-2.135,39.779,-6.828],"5.75":[-2.133,39.771,-6.834],"5.7917":[-2.13,39.756,-6.827],"5.8333":[-2.13,39.728,-6.761],"5.875":[-2.153,39.669,-6.68],"5.9167":[-2.231,39.621,-6.6],"5.9583":[-2.311,39.598,-6.553],"6.0":[-2.689,39.657,-6.657],"6.0417":[-3.062,39.869,-6.749],"6.0833":[-4.033,40.54,-6.958],"6.125":[-4.788,41.194,-7.131],"6.1667":[-5.94,42.233,-7.415],"6.2083":[-7.014,42.48,-7.655],"6.25":[-8.359,42.57,-7.918],"6.2917":[-9.079,42.574,-8.037],"6.3333":[-9.866,42.569,-8.124],"6.375":[-10.276,42.553,-8.109],"6.4167":[-10.733,42.524,-8.058],"6.4583":[-10.982,42.506,-8.031],"6.5":[-11.271,42.477,-8.016],"6.5417":[-11.419,42.46,-7.999],"6.5833":[-11.618,42.439,-7.978],"6.625":[-11.766,42.415,-7.961],"6.6667":[-11.86,42.401,-7.949],"6.7083":[-12,42.377,-7.933],"6.75":[-12.068,42.365,-7.925],"6.7917":[-12.16,42.349,-7.911],"6.8333":[-12.216,42.339,-7.901],"6.875":[-12.296,42.328,-7.885],"6.9167":[-12.373,42.315,-7.876],"6.9583":[-12.429,42.305,-7.87],"7.0":[-12.507,42.291,-7.863],"7.0417":[-12.548,42.283,-7.861],"7.0833":[-12.587,42.277,-7.86],"7.125":[-12.611,42.273,-7.859],"7.1667":[-12.644,42.267,-7.86],"7.2083":[-12.666,42.264,-7.863],"7.25":[-12.698,42.26,-7.872],"7.2917":[-12.714,42.265,-7.93],"7.3333":[-12.707,42.312,-8.234],"7.375":[-12.692,42.353,-8.347],"7.4167":[-12.635,42.335,-8.64],"7.4583":[-12.624,42.196,-8.818],"7.5":[-12.697,41.349,-9.42],"7.5417":[-12.583,41.017,-9.8],"7.5833":[-12.164,41.066,-10.214],"7.625":[-11.83,41.383,-10.343],"7.6667":[-11.666,41.641,-10.289],"7.7083":[-11.557,41.829,-10.211],"7.75":[-11.521,41.904,-10.167],"7.7917":[-11.511,41.951,-10.117],"7.8333":[-11.517,41.966,-10.085],"7.875":[-11.55,41.952,-10.144],"7.9167":[-11.569,41.932,-10.216],"7.9583":[-11.59,41.899,-10.278],"8.0":[-11.619,41.888,-10.255],"8.0417":[-11.728,41.906,-10.143],"8.0833":[-11.767,41.946,-10.08],"8.125":[-11.809,41.94,-10.091],"8.1667":[-11.851,41.877,-10.146],"8.2083":[-11.863,41.815,-10.197],"8.25":[-11.928,41.45,-10.487],"8.2917":[-12.154,40.778,-11.279],"8.3333":[-12.478,39.526,-13.019],"8.375":[-12.356,39.146,-13.892],"8.4167":[-12.427,39.967,-15.082],"8.4583":[-12.699,40.941,-15.102],"8.5":[-13.742,42.574,-14.475],"8.5417":[-14.536,43.389,-13.891],"8.5833":[-15.427,44.477,-13.174],"8.625":[-16.081,45.66,-13.217],"8.6667":[-15.976,46.469,-13.497],"8.7083":[-14.951,47.214,-14.48],"8.75":[-12.411,46.997,-15.126],"8.7917":[-5.282,44.751,-16.041],"8.8333":[-0.886,41.365,-14.752],"8.875":[-0.587,38.436,-13.556],"8.9167":[-1.944,37.952,-13.657],"8.9583":[-3.099,38.444,-14.448],"9.0":[-3.106,38.918,-14.772],"9.0417":[-2.996,39.506,-14.811],"9.0833":[-2.905,39.596,-14.75],"9.125":[-2.87,39.577,-14.716],"9.1667":[-2.853,39.511,-14.689],"9.2083":[-2.865,39.475,-14.69],"9.25":[-2.892,39.446,-14.695],"9.2917":[-2.905,39.44,-14.702],"9.3333":[-2.913,39.444,-14.709],"9.375":[-2.914,39.448,-14.711],"9.4167":[-2.913,39.454,-14.712],"9.4583":[-2.911,39.457,-14.712],"9.5":[-2.907,39.459,-14.71],"9.5417":[-2.905,39.46,-14.709],"9.5833":[-2.904,39.458,-14.709],"9.625":[-2.903,39.457,-14.708]}},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.75":[15,0,0],"0.9167":[40,0,0],"1.25":[-17.5,0,0],"2.7917":[0,0,0],"3.5833":[0,0,0],"3.875":[27.5,0,0],"4.2083":[-9.7294,0,-7.4342],"4.8333":[0,0,0]},"position":{"0.0":[0,2.5,0],"3.8333":[0,2.5,0],"4.2083":[-0.1275,3.4773,0.169],"4.4583":[-0.2575,4.4573,0.339],"4.8333":[-0.2575,4.4573,0.339],"5.0833":[0,2.5,0]},"scale":[1,1.5,1]},"annihil":{"rotation":{"0.0":[-14.04,41.493,85.506],"0.0417":[-11.17,40.95,77.506],"0.0833":[-10.921,36.098,61.532],"0.125":[-15.823,21.567,44.497],"0.1667":[-16.077,-8.305,23.642],"0.2083":[-8.331,-26.756,9.953],"0.25":[-2.354,-26.344,4.397],"0.2917":[-19.397,-34.984,10.522],"0.3333":[-72.24,-27.345,22.625],"0.375":[-120.761,17.718,58.556],"0.4167":[-143.943,56.092,47.91],"0.4583":[-241.706,50.106,-62.115],"0.5":[-248.871,20.578,-93.423],"0.5417":[-227.155,3.194,-145.066],"0.5833":[-203.221,26.899,-174.106],"0.625":[-139.059,47.73,-154.878],"0.6667":[-73.4,23.61,-93.585],"0.7083":[-74.417,-19.59,-75.199],"0.75":[-73.137,-16.716,-70.336],"0.7917":[-71.355,-9.92,-56.804],"0.8333":[-69.45,-9.997,-49.588],"0.875":[-69.977,-19.611,-27.474],"0.9167":[-88.613,-38.399,18.026],"0.9583":[-109.904,-43.321,48.575],"1.0":[-145.592,-22.316,98.69],"1.0417":[-152.749,-7.436,112.166],"1.0833":[-154.447,20.138,128.943],"1.125":[-150.188,38.109,139.389],"1.1667":[-139.668,57.328,152.036],"1.2083":[-116.427,70.713,174.39],"1.25":[-87.757,75.161,201.774],"1.2917":[-56.264,75.166,231.379],"1.3333":[-48.517,75.025,237.722],"1.375":[-42.276,75.588,242.433],"1.4167":[-41.291,76.624,242.637],"1.4583":[-39.62,77.878,243.329],"1.5":[-38.171,78.379,244.293],"1.5417":[-36.39,79.064,245.498],"1.5833":[-35.362,79.501,246.212],"1.625":[-34.272,80.189,246.892],"1.6667":[-34.132,80.72,246.779],"1.7083":[-34.861,81.597,245.713],"1.75":[-35.988,82.256,244.358],"1.7917":[-38.54,83.233,241.496],"1.8333":[-40.084,83.704,239.801],"1.875":[-42.278,84.281,237.419],"1.9167":[-44.647,84.791,234.887],"1.9583":[-46.516,85.12,232.913],"2.0":[-50.274,85.63,228.985],"2.0417":[-53.892,85.996,225.241],"2.0833":[-112.387,87.027,165.875],"2.125":[-160.783,83.525,116.17],"2.1667":[-176.826,72.048,96.452],"2.2083":[-179.81,58.524,89.529],"2.25":[-179.892,22.176,78.927],"2.2917":[-177.913,-1.018,72.303],"2.3333":[-172.725,-27.449,62.545],"2.375":[-166.653,-44.87,53.693],"2.4167":[-163.452,-50.076,49.206],"2.4583":[-161.056,-53.7,45.913],"2.5":[-161.481,-53.769,46.186],"2.5417":[-162.736,-53.183,47.211],"2.5833":[-163.542,-52.498,47.888],"2.625":[-163.772,-52.33,47.882],"2.6667":[-163.406,-52.754,47.36],"2.7083":[-162.749,-53.498,46.54],"2.75":[-162.339,-53.954,46.031],"2.7917":[-161.782,-54.545,45.337],"2.8333":[-161.525,-54.806,44.996],"2.875":[-161.31,-54.992,44.671],"2.9167":[-161.215,-55.049,44.475],"2.9583":[-161.184,-55.051,44.379],"3.0":[-161.142,-55.059,44.245],"3.0417":[-161.09,-55.099,44.132],"3.0833":[-160.981,-55.202,43.935],"3.125":[-160.904,-55.276,43.802],"3.1667":[-160.791,-55.398,43.607],"3.2083":[-160.713,-55.487,43.477],"3.25":[-160.586,-55.626,43.279],"3.2917":[-160.494,-55.731,43.146],"3.3333":[-160.339,-55.91,42.939],"3.375":[-160.187,-56.091,42.742],"3.4167":[-160.094,-56.195,42.623],"3.4583":[-160.018,-56.274,42.523],"3.5":[-159.994,-56.293,42.493],"3.5417":[-159.934,-56.352,42.418],"3.5833":[-159.838,-56.463,42.296],"3.625":[-158.623,-57.904,40.75],"3.6667":[-149.736,-64.788,31.004],"3.7083":[-115.76,-73.525,-3.979],"3.75":[-75.175,-72.972,-45],"3.7917":[-47.068,-59.69,-73.335],"3.8333":[-44.652,-47.54,-75.826],"3.875":[-45.762,-25.553,-78.007],"3.9167":[-54.31,10.861,-85.294],"3.9583":[-73.339,34.115,-104.161],"4.0":[-133.184,17.187,-154.414],"4.0417":[-145.761,-3.286,-157.368],"4.0833":[-159.427,-28.244,-150.299],"4.125":[-179.325,-34.105,-134.776],"4.1667":[-209.079,-34.264,-96.467],"4.2083":[-218.81,-29.053,-58.555],"4.25":[-198.863,-7.568,-13.973],"4.2917":[-178.58,3.735,21.476],"4.3333":[-161.241,18.964,66.735],"4.375":[-156.991,28.292,101.921],"4.4167":[-164.793,34.699,137.956],"4.4583":[-174.233,24.005,168.913],"4.5":[-188.453,-11.604,216.785],"4.5417":[-201.03,-12.923,274.92],"4.5833":[-195.085,-4.109,303.625],"4.625":[-184.327,4.874,356.072],"4.6667":[-173.863,24.236,396.487],"4.7083":[-157.752,26.278,465.897],"4.75":[-162.941,15.407,502.344],"4.7917":[-170.651,-11.295,540.78],"4.8333":[-170.141,-30.327,563.46],"4.875":[-162.735,-17.767,598.718],"4.9167":[-157.212,-35.842,619.142],"4.9583":[-154.019,-41.559,624.898],"5.0":[-151.216,-47.01,628.615],"5.0417":[-150.266,-49.214,630.139],"5.0833":[-150.031,-50.316,631.604],"5.125":[-150.01,-50.622,632.17],"5.1667":[-149.512,-51.336,632.304],"5.2083":[-149.201,-51.739,632.253],"5.25":[-148.755,-52.336,632.141],"5.2917":[-148.489,-52.688,632.069],"5.3333":[-148.222,-53.057,632.067],"5.375":[-148.132,-53.194,632.145],"5.4167":[-148.08,-53.305,632.317],"5.4583":[-148.067,-53.357,632.428],"5.5":[-148.058,-53.434,632.552],"5.5417":[-148.093,-53.471,632.663],"5.5833":[-148.12,-53.49,632.723],"5.625":[-148.129,-53.546,632.773],"5.6667":[-148.096,-53.622,632.75],"5.7083":[-148.038,-53.742,632.694],"5.75":[-148.027,-53.79,632.693],"5.7917":[-148.525,-53.284,633.425],"5.8333":[-150.779,-50.514,636.586],"5.875":[-152.071,-47.61,638.737],"5.9167":[-152.13,-41.805,639.333],"5.9583":[-151.942,-36.279,639.561],"6.0":[-149.243,-19.928,637.461],"6.0417":[-146.324,-9.675,633.992],"6.0833":[-137.314,8.71,618.795],"6.125":[-127.512,25.428,608.885],"6.1667":[-105.332,53.828,603.968],"6.2083":[-83.587,64.737,608.66],"6.25":[-60.399,77.058,609.93],"6.2917":[-52.477,84.068,605.402],"6.3333":[-28.665,86.45,615.271],"6.375":[-35.963,87.106,603.259],"6.4167":[-56.624,87.077,578.879],"6.4583":[-65.337,86.787,568.839],"6.5":[-70.251,86.507,562.571],"6.5417":[-70.429,86.33,561.776],"6.5833":[-70.157,86.096,561.305],"6.625":[-66.309,85.845,564.708],"6.6667":[-63.883,85.651,566.919],"6.7083":[-61.547,85.424,569.025],"6.75":[-61.185,85.356,569.288],"6.7917":[-60.756,85.281,569.607],"6.8333":[-60.577,85.243,569.726],"6.875":[-60.325,85.203,569.902],"6.9167":[-60.32,85.207,569.872],"6.9583":[-60.566,85.223,569.609],"7.0":[-61.241,85.256,568.902],"7.0417":[-61.79,85.28,568.344],"7.0833":[-62.774,85.305,567.348],"7.125":[-63.628,85.321,566.486],"7.1667":[-65.409,85.356,564.691],"7.2083":[-67.087,85.392,562.993],"7.25":[-70.584,85.478,559.462],"7.2917":[-78.714,85.767,551.35],"7.3333":[-129.248,84.741,500.38],"7.375":[-136.747,81.665,492.898],"7.4167":[-127.513,75.053,503.786],"7.4583":[-126.856,71.197,505.623],"7.5":[-132.067,70.128,503.163],"7.5417":[-127.114,73.418,511.661],"7.5833":[-115.712,78.13,526.602],"7.625":[-98.255,80.141,543.852],"7.6667":[-83.107,79.718,558.36],"7.7083":[-74.093,78.422,566.116],"7.75":[-70.355,77.499,569.441],"7.7917":[-70.063,76.027,569.265],"7.8333":[-73.824,74.1,566.16],"7.875":[-80.181,69.921,561.58],"7.9167":[-81.714,69.028,560.194],"7.9583":[-80.411,71.162,560.34],"8.0":[-77.818,73.269,562.166],"8.0417":[-74.098,77.374,563.591],"8.0833":[-81.481,73.788,555.624],"8.125":[-82.626,70.27,554.904],"8.1667":[-83.281,71.412,554.4],"8.2083":[-85.244,73.479,551.727],"8.25":[-125.43,77.163,509.947],"8.2917":[-169.314,68.389,465.885],"8.3333":[-187.16,41.97,450.081],"8.375":[-189.487,27.028,451.22],"8.4167":[-191.055,23.349,458.894],"8.4583":[-188.626,29.297,463.566],"8.5":[-189.257,53.245,475.155],"8.5417":[-195.291,76.274,482.027],"8.5833":[-353.571,85.186,339.229],"8.625":[-368.574,76.147,335.654],"8.6667":[-371.596,69.67,340.309],"8.7083":[-374.113,54.055,351.198],"8.75":[-372.892,39.781,363.664],"8.7917":[-369.227,16.317,381.538],"8.8333":[-373.054,6.847,420.271],"8.875":[-378.889,13.408,433.564],"8.9167":[-377.452,20.335,440.323],"8.9583":[-371.891,31.998,445.432],"9.0":[-370.547,38.142,447.351],"9.0417":[-372.591,44.176,448.028],"9.0833":[-375.027,44.646,447.785],"9.125":[-375.844,44.002,447.967],"9.1667":[-376.158,43.003,448.521],"9.2083":[-375.911,42.523,449.095],"9.25":[-375.603,41.903,449.652],"9.2917":[-375.392,41.778,449.784],"9.3333":[-375.236,41.829,449.747],"9.375":[-375.107,41.863,449.819],"9.4167":[-374.928,41.922,449.941],"9.4583":[-374.876,41.969,449.999],"9.5":[-374.857,42.048,450.035],"9.5417":[-374.857,42.105,450.035],"9.5833":[-374.857,42.19,450.028],"9.625":[-374.87,42.279,450.016]},"position":{"0.0":[4.344,52.257,-16.524],"0.0417":[2.306,52.825,-16.411],"0.0833":[-0.797,53.245,-16.254],"0.125":[-2.972,53.072,-16.17],"0.1667":[-5.755,51.372,-15.899],"0.2083":[-6.553,48.62,-16.009],"0.25":[-5.651,47.939,-16.869],"0.2917":[-4.098,50.788,-17.366],"0.3333":[-3.379,53.691,-17.847],"0.375":[-1.046,58.176,-19.767],"0.4167":[-0.053,60.778,-22.796],"0.4583":[2.783,64.321,-27.571],"0.5":[4.758,67.566,-28.842],"0.5417":[5.791,71.897,-27.189],"0.5833":[5.537,73.043,-24.648],"0.625":[4.172,70.596,-20.045],"0.6667":[3.566,64.647,-17.586],"0.7083":[3.781,54.435,-17.609],"0.75":[3.154,51.157,-17.528],"0.7917":[1.839,48.288,-16.952],"0.8333":[0.933,47.412,-16.228],"0.875":[-0.58,46.635,-15.107],"0.9167":[-2.439,47.23,-14.63],"0.9583":[-3.208,48.256,-14.67],"1.0":[-4.078,51.077,-14.656],"1.0417":[-4.325,52.849,-14.394],"1.0833":[-4.329,55.33,-13.533],"1.125":[-4.367,56.672,-12.699],"1.1667":[-5.137,58.159,-11.761],"1.2083":[-6.197,59.099,-10.942],"1.25":[-6.966,59.505,-10.434],"1.2917":[-7.861,59.86,-9.711],"1.3333":[-8.344,59.978,-9.299],"1.375":[-8.909,60.075,-8.909],"1.4167":[-9.212,60.095,-8.761],"1.4583":[-9.616,60.113,-8.593],"1.5":[-9.846,60.116,-8.53],"1.5417":[-10.141,60.105,-8.486],"1.5833":[-10.313,60.09,-8.482],"1.625":[-10.546,60.058,-8.495],"1.6667":[-10.683,60.03,-8.51],"1.7083":[-10.854,59.983,-8.548],"1.75":[-10.955,59.951,-8.583],"1.7917":[-11.083,59.9,-8.643],"1.8333":[-11.143,59.871,-8.679],"1.875":[-11.22,59.834,-8.725],"1.9167":[-11.289,59.796,-8.77],"1.9583":[-11.331,59.771,-8.801],"2.0":[-11.398,59.733,-8.849],"2.0417":[-11.446,59.706,-8.881],"2.0833":[-11.626,59.564,-9.057],"2.125":[-11.808,59.358,-9.281],"2.1667":[-12.105,58.796,-9.683],"2.2083":[-12.307,58.172,-9.995],"2.25":[-12.419,56.497,-10.219],"2.2917":[-12.246,55.401,-9.935],"2.3333":[-11.866,54.368,-9.302],"2.375":[-11.506,53.865,-8.823],"2.4167":[-11.274,53.615,-8.618],"2.4583":[-11.007,53.366,-8.463],"2.5":[-10.876,53.277,-8.465],"2.5417":[-10.674,53.181,-8.498],"2.5833":[-10.548,53.153,-8.528],"2.625":[-10.369,53.14,-8.55],"2.6667":[-10.253,53.149,-8.556],"2.7083":[-10.095,53.177,-8.567],"2.75":[-9.988,53.196,-8.576],"2.7917":[-9.834,53.226,-8.59],"2.8333":[-9.742,53.247,-8.6],"2.875":[-9.606,53.28,-8.616],"2.9167":[-9.475,53.316,-8.634],"2.9583":[-9.393,53.338,-8.645],"3.0":[-9.278,53.371,-8.661],"3.0417":[-9.205,53.39,-8.669],"3.0833":[-9.108,53.416,-8.679],"3.125":[-9.05,53.43,-8.684],"3.1667":[-8.965,53.45,-8.689],"3.2083":[-8.916,53.462,-8.692],"3.25":[-8.845,53.479,-8.697],"3.2917":[-8.805,53.487,-8.699],"3.3333":[-8.756,53.5,-8.7],"3.375":[-8.715,53.507,-8.703],"3.4167":[-8.69,53.513,-8.706],"3.4583":[-8.648,53.52,-8.708],"3.5":[-8.628,53.523,-8.711],"3.5417":[-8.597,53.526,-8.714],"3.5833":[-8.571,53.53,-8.717],"3.625":[-8.463,53.546,-8.72],"3.6667":[-8.184,53.544,-8.607],"3.7083":[-7.582,53.458,-8.674],"3.75":[-7.023,53.321,-8.969],"3.7917":[-6.252,53.085,-9.566],"3.8333":[-5.783,52.847,-10.04],"3.875":[-5.016,52.74,-10.913],"3.9167":[-4.571,53.866,-11.521],"3.9583":[-5.002,54.615,-12.775],"4.0":[-6.408,55.26,-14.758],"4.0417":[-6.922,55.627,-15.229],"4.0833":[-7.451,55.791,-15.712],"4.125":[-7.082,55.886,-15.722],"4.1667":[-6.009,55.629,-16.374],"4.2083":[-4.917,55.05,-17.755],"4.25":[-4.618,51.81,-18.85],"4.2917":[-5.845,50.491,-17.554],"4.3333":[-7.818,50.807,-16.65],"4.375":[-8.853,52.116,-16.473],"4.4167":[-9.421,54.552,-17.035],"4.4583":[-9.137,56.467,-17.758],"4.5":[-7.57,59.113,-18.294],"4.5417":[-4.308,55.913,-19.578],"4.5833":[-3.994,53.522,-18.834],"4.625":[-7.054,51.441,-17.076],"4.6667":[-9.724,53.169,-16.184],"4.7083":[-9.785,57.245,-15.727],"4.75":[-8.077,59.027,-16.177],"4.7917":[-6.219,59.319,-16.14],"4.8333":[-5.01,58.33,-15.231],"4.875":[-1.403,56.941,-12.923],"4.9167":[3.463,54.065,-9.589],"4.9583":[4.417,53.469,-8.672],"5.0":[5.096,53.072,-8.217],"5.0417":[5.37,52.927,-8.091],"5.0833":[5.664,52.836,-8.004],"5.125":[5.812,52.811,-7.972],"5.1667":[5.938,52.796,-7.913],"5.2083":[5.99,52.789,-7.89],"5.25":[6.056,52.774,-7.87],"5.2917":[6.092,52.762,-7.86],"5.3333":[6.135,52.745,-7.854],"5.375":[6.155,52.732,-7.854],"5.4167":[6.173,52.715,-7.86],"5.4583":[6.184,52.704,-7.867],"5.5":[6.196,52.688,-7.875],"5.5417":[6.203,52.675,-7.883],"5.5833":[6.207,52.668,-7.891],"5.625":[6.211,52.655,-7.899],"5.6667":[6.215,52.652,-7.903],"5.7083":[6.219,52.641,-7.911],"5.75":[6.222,52.635,-7.916],"5.7917":[6.223,52.599,-7.928],"5.8333":[6.212,52.472,-7.957],"5.875":[6.173,52.316,-7.947],"5.9167":[6.074,52.138,-7.94],"5.9583":[5.977,51.995,-7.946],"6.0":[5.595,51.763,-8.071],"6.0417":[5.267,51.889,-8.075],"6.0833":[4.459,52.946,-7.878],"6.125":[3.721,54.072,-7.58],"6.1667":[2.163,55.976,-7.166],"6.2083":[0.545,56.751,-7.135],"6.25":[-1.665,57.399,-7.554],"6.2917":[-2.902,57.591,-7.937],"6.3333":[-4.242,57.647,-8.111],"6.375":[-4.792,57.649,-8.136],"6.4167":[-5.327,57.651,-8.112],"6.4583":[-5.612,57.648,-8.092],"6.5":[-5.959,57.627,-8.081],"6.5417":[-6.137,57.607,-8.059],"6.5833":[-6.368,57.58,-8.033],"6.625":[-6.537,57.554,-8],"6.6667":[-6.641,57.539,-7.979],"6.7083":[-6.789,57.515,-7.954],"6.75":[-6.863,57.502,-7.948],"6.7917":[-6.96,57.486,-7.938],"6.8333":[-7.022,57.478,-7.93],"6.875":[-7.107,57.465,-7.919],"6.9167":[-7.187,57.452,-7.915],"6.9583":[-7.245,57.44,-7.914],"7.0":[-7.33,57.426,-7.911],"7.0417":[-7.371,57.417,-7.911],"7.0833":[-7.412,57.408,-7.91],"7.125":[-7.437,57.4,-7.907],"7.1667":[-7.473,57.391,-7.904],"7.2083":[-7.496,57.386,-7.904],"7.25":[-7.529,57.376,-7.907],"7.2917":[-7.544,57.373,-7.964],"7.3333":[-7.555,57.373,-8.233],"7.375":[-7.513,57.37,-8.306],"7.4167":[-7.249,57.27,-8.536],"7.4583":[-7.102,57.062,-8.735],"7.5":[-7.062,56.177,-9.502],"7.5417":[-6.904,55.921,-10.021],"7.5833":[-6.435,56.071,-10.574],"7.625":[-6.086,56.412,-10.614],"7.6667":[-5.904,56.658,-10.414],"7.7083":[-5.789,56.816,-10.199],"7.75":[-5.756,56.879,-10.092],"7.7917":[-5.751,56.918,-9.997],"7.8333":[-5.711,56.934,-9.953],"7.875":[-5.64,56.924,-10.007],"7.9167":[-5.645,56.904,-10.084],"7.9583":[-5.737,56.873,-10.167],"8.0":[-5.813,56.86,-10.151],"8.0417":[-6.058,56.873,-10.095],"8.0833":[-6.116,56.912,-10.035],"8.125":[-6.12,56.905,-9.998],"8.1667":[-6.166,56.846,-10.084],"8.2083":[-6.229,56.786,-10.198],"8.25":[-6.435,56.409,-10.979],"8.2917":[-6.698,55.574,-12.49],"8.3333":[-6.873,53.558,-15.364],"8.375":[-6.617,52.632,-16.682],"8.4167":[-6.503,54.141,-17.714],"8.4583":[-6.595,56.255,-17.092],"8.5":[-6.138,62.723,-16.776],"8.5417":[-5.082,67.29,-16.863],"8.5833":[-3.515,70.58,-16.853],"8.625":[-2.288,71.646,-16.854],"8.6667":[-1.441,71.698,-16.801],"8.7083":[0.03,70.17,-16.446],"8.75":[0.933,64.575,-16.681],"8.7917":[3.161,58.493,-17.644],"8.8333":[7.342,54.061,-16.589],"8.875":[7.794,50.762,-15.237],"8.9167":[6.373,50.178,-15.447],"8.9583":[5.045,50.873,-16.464],"9.0":[4.999,51.486,-16.811],"9.0417":[5.165,52.179,-16.757],"9.0833":[5.318,52.225,-16.628],"9.125":[5.373,52.16,-16.574],"9.1667":[5.402,52.038,-16.544],"9.2083":[5.389,51.972,-16.554],"9.25":[5.358,51.911,-16.57],"9.2917":[5.339,51.903,-16.584],"9.3333":[5.328,51.915,-16.596],"9.375":[5.324,51.919,-16.602],"9.4167":[5.321,51.927,-16.607],"9.4583":[5.321,51.93,-16.607],"9.5":[5.326,51.933,-16.607],"9.5417":[5.326,51.937,-16.604],"9.5833":[5.329,51.937,-16.604],"9.625":[5.332,51.937,-16.604]}},"camera":{"rotation":{"0.0":[0.039,0.013,0.007],"0.0417":[0.346,0.112,0.053],"0.0833":[1.112,0.367,0.181],"0.125":[1.685,0.562,0.285],"0.1667":[2.361,0.799,0.436],"0.2083":[2.526,0.881,0.542],"0.25":[2.434,0.888,0.592],"0.2917":[1.778,0.854,0.645],"0.3333":[0.19,0.814,0.666],"0.375":[-3.142,0.621,0.682],"0.4167":[-5.328,0.45,0.682],"0.4583":[-6.607,0.201,0.67],"0.5":[-6.976,0.034,0.655],"0.5417":[-6.914,-0.215,0.623],"0.5833":[-6.436,-0.377,0.597],"0.625":[-5.002,-0.597,0.552],"0.6667":[-3.839,-0.679,0.52],"0.7083":[-1.828,-0.739,0.47],"0.75":[-0.394,-0.771,0.436],"0.7917":[1.625,-0.81,0.386],"0.8333":[2.709,-0.835,0.355],"0.875":[3.423,-0.856,0.313],"0.9167":[3.45,-0.871,0.274],"0.9583":[3.173,-0.881,0.228],"1.0":[2.434,-0.896,0.133],"1.0417":[1.944,-0.904,0.055],"1.0833":[1.275,-0.913,-0.068],"1.125":[0.883,-0.919,-0.15],"1.1667":[0.366,-0.931,-0.262],"1.2083":[-0.042,-0.949,-0.35],"1.25":[-0.246,-0.966,-0.39],"1.2917":[-0.45,-1.005,-0.42],"1.3333":[-0.567,-1.043,-0.438],"1.375":[-0.727,-1.126,-0.463],"1.4167":[-0.827,-1.195,-0.478],"1.4583":[-0.964,-1.332,-0.497],"1.5":[-1.047,-1.446,-0.509],"1.5417":[-1.156,-1.628,-0.524],"1.5833":[-1.228,-1.757,-0.533],"1.625":[-1.321,-1.97,-0.543],"1.6667":[-1.376,-2.097,-0.547],"1.7083":[-1.454,-2.267,-0.552],"1.75":[-1.506,-2.364,-0.553],"1.7917":[-1.564,-2.469,-0.553],"1.8333":[-1.604,-2.517,-0.551],"1.875":[-1.656,-2.558,-0.545],"1.9167":[-1.702,-2.566,-0.537],"1.9583":[-1.726,-2.542,-0.53],"2.0":[-1.759,-2.473,-0.516],"2.0417":[-1.778,-2.403,-0.507],"2.0833":[-1.798,-2.264,-0.488],"2.125":[-1.807,-2.157,-0.466],"2.1667":[-1.819,-1.96,-0.414],"2.2083":[-1.826,-1.808,-0.368],"2.25":[-1.833,-1.566,-0.289],"2.2917":[-1.837,-1.4,-0.232],"2.3333":[-1.84,-1.128,-0.156],"2.375":[-1.842,-0.844,-0.097],"2.4167":[-1.843,-0.655,-0.068],"2.4583":[-1.844,-0.372,-0.03],"2.5":[-1.843,-0.176,-0.004],"2.5417":[-1.842,0.122,0.03],"2.5833":[-1.842,0.308,0.05],"2.625":[-1.84,0.607,0.081],"2.6667":[-1.838,0.793,0.098],"2.7083":[-1.835,1.066,0.123],"2.75":[-1.832,1.253,0.139],"2.7917":[-1.828,1.52,0.162],"2.8333":[-1.826,1.691,0.176],"2.875":[-1.821,1.956,0.197],"2.9167":[-1.815,2.193,0.214],"2.9583":[-1.808,2.335,0.225],"3.0":[-1.795,2.497,0.238],"3.0417":[-1.784,2.572,0.247],"3.0833":[-1.77,2.691,0.258],"3.125":[-1.762,2.778,0.264],"3.1667":[-1.753,2.896,0.272],"3.2083":[-1.748,2.974,0.277],"3.25":[-1.74,3.081,0.281],"3.2917":[-1.734,3.13,0.284],"3.3333":[-1.724,3.194,0.288],"3.375":[-1.708,3.237,0.29],"3.4167":[-1.692,3.259,0.291],"3.4583":[-1.66,3.276,0.292],"3.5":[-1.644,3.284,0.292],"3.5417":[-1.596,3.289,0.293],"3.5833":[-1.564,3.289,0.293],"3.625":[-1.493,3.279,0.292],"3.6667":[-1.428,3.263,0.291],"3.7083":[-1.292,3.22,0.287],"3.75":[-1.181,3.182,0.283],"3.7917":[-1.006,3.111,0.276],"3.8333":[-0.875,3.057,0.27],"3.875":[-0.697,2.973,0.261],"3.9167":[-0.528,2.864,0.25],"3.9583":[-0.41,2.728,0.235],"4.0":[-0.225,2.492,0.21],"4.0417":[-0.098,2.311,0.192],"4.0833":[0.128,2.048,0.118],"4.125":[0.296,1.886,0.042],"4.1667":[0.55,1.72,-0.085],"4.2083":[0.764,1.656,-0.147],"4.25":[1.025,1.702,-0.088],"4.2917":[1.131,1.812,0.036],"4.3333":[0.978,1.996,0.204],"4.375":[0.647,2.121,0.267],"4.4167":[0.024,2.232,0.115],"4.4583":[-0.351,2.096,-0.031],"4.5":[-0.513,1.716,-0.104],"4.5417":[-0.105,1.274,0.041],"4.5833":[0.184,1.138,0.144],"4.625":[0.448,1.372,0.237],"4.6667":[0.345,1.617,0.212],"4.7083":[0.011,1.879,0.119],"4.75":[-0.259,1.818,0.018],"4.7917":[-0.641,1.626,-0.148],"4.8333":[-0.794,1.497,-0.249],"4.875":[-0.977,1.289,-0.414],"4.9167":[-1.111,1.091,-0.551],"4.9583":[-1.183,0.989,-0.606],"5.0":[-1.269,0.895,-0.626],"5.0417":[-1.319,0.844,-0.633],"5.0833":[-1.384,0.771,-0.647],"5.125":[-1.42,0.735,-0.655],"5.1667":[-1.47,0.691,-0.664],"5.2083":[-1.499,0.662,-0.67],"5.25":[-1.536,0.626,-0.678],"5.2917":[-1.564,0.607,-0.682],"5.3333":[-1.602,0.577,-0.687],"5.375":[-1.62,0.565,-0.689],"5.4167":[-1.657,0.547,-0.69],"5.4583":[-1.679,0.537,-0.689],"5.5":[-1.705,0.529,-0.685],"5.5417":[-1.732,0.524,-0.678],"5.5833":[-1.752,0.521,-0.674],"5.625":[-1.772,0.516,-0.664],"5.6667":[-1.785,0.511,-0.656],"5.7083":[-1.792,0.504,-0.643],"5.75":[-1.802,0.494,-0.633],"5.7917":[-1.802,0.475,-0.616],"5.8333":[-1.729,0.459,-0.604],"5.875":[-1.395,0.431,-0.58],"5.9167":[-0.905,0.392,-0.549],"5.9583":[-0.561,0.358,-0.525],"6.0":[-0.114,0.292,-0.484],"6.0417":[0.096,0.238,-0.454],"6.0833":[0.246,0.086,-0.407],"6.125":[0.219,-0.03,-0.37],"6.1667":[0.103,-0.213,-0.315],"6.2083":[0.015,-0.335,-0.274],"6.25":[-0.12,-0.533,-0.213],"6.2917":[-0.202,-0.661,-0.172],"6.3333":[-0.296,-0.853,-0.108],"6.375":[-0.339,-0.981,-0.066],"6.4167":[-0.402,-1.172,-0.002],"6.4583":[-0.438,-1.308,0.039],"6.5":[-0.485,-1.505,0.098],"6.5417":[-0.512,-1.637,0.136],"6.5833":[-0.546,-1.817,0.19],"6.625":[-0.569,-1.983,0.24],"6.6667":[-0.58,-2.08,0.269],"6.7083":[-0.591,-2.226,0.304],"6.75":[-0.598,-2.323,0.323],"6.7917":[-0.607,-2.475,0.346],"6.8333":[-0.612,-2.582,0.359],"6.875":[-0.619,-2.733,0.376],"6.9167":[-0.624,-2.885,0.39],"6.9583":[-0.627,-2.979,0.398],"7.0":[-0.631,-3.112,0.409],"7.0417":[-0.633,-3.193,0.414],"7.0833":[-0.636,-3.305,0.422],"7.125":[-0.636,-3.365,0.425],"7.1667":[-0.639,-3.442,0.429],"7.2083":[-0.639,-3.484,0.431],"7.25":[-0.639,-3.519,0.43],"7.2917":[-0.639,-3.525,0.429],"7.3333":[-0.523,-3.334,0.429],"7.375":[-0.358,-3.048,0.428],"7.4167":[-0.068,-2.492,0.428],"7.4583":[0.097,-2.093,0.428],"7.5":[0.215,-1.589,0.428],"7.5417":[0.213,-1.337,0.364],"7.5833":[0.174,-1.035,0.164],"7.625":[-0.033,-0.875,-0.075],"7.6667":[-0.201,-0.807,-0.268],"7.7083":[-0.434,-0.761,-0.453],"7.75":[-0.48,-0.76,-0.356],"7.7917":[-0.501,-0.759,-0.157],"7.8333":[-0.465,-0.713,-0.262],"7.875":[-0.318,-0.394,-0.612],"7.9167":[-0.304,-0.259,-0.48],"7.9583":[-0.32,-0.254,-0.214],"8.0":[-0.387,-0.319,-0.108],"8.0417":[-0.542,-0.605,-0.07],"8.0833":[-0.623,-0.533,-0.607],"8.125":[-0.632,-0.346,-0.683],"8.1667":[-0.593,-0.325,-0.528],"8.2083":[-0.539,-0.539,-0.26],"8.25":[-0.266,-0.662,-0.056],"8.2917":[0.007,-0.702,0.036],"8.3333":[0.375,-0.735,0.12],"8.375":[0.464,-0.752,0.139],"8.4167":[-0.33,-0.76,-0.171],"8.4583":[-1.235,-0.76,-0.356],"8.5":[-2.897,-0.759,-0.379],"8.5417":[-3.823,-0.758,-0.37],"8.5833":[-4.541,-0.758,-0.327],"8.625":[-4.38,-0.759,-0.257],"8.6667":[-3.824,-0.758,-0.2],"8.7083":[-2.752,-0.695,-0.11],"8.75":[-1.973,-0.599,-0.053],"8.7917":[-0.679,-0.413,0.021],"8.8333":[0.161,-0.284,0.056],"8.875":[0.783,-0.125,0.077],"8.9167":[0.915,-0.07,0.048],"8.9583":[0.879,-0.032,-0.019],"9.0":[0.519,-0.003,-0.058],"9.0417":[0,0.016,-0.109],"9.0833":[-0.105,0.006,-0.151],"9.125":[-0.112,-0.002,-0.162],"9.1667":[-0.084,-0.007,-0.142],"9.2083":[-0.043,-0.007,-0.122],"9.25":[-0.001,-0.007,-0.091],"9.2917":[0.026,-0.002,-0.071],"9.3333":[0.026,-0.002,-0.041],"9.375":[0.012,-0.002,-0.02],"9.4167":[0.007,0.002,0.007],"9.4583":[-0.001,0.002,0.014],"9.5":[-0.01,0.002,0.014],"9.5417":[-0.01,0.002,0.012],"9.5833":[-0.001,0.002,0.003],"9.625":[-0.001,0.002,0.001]}},"angel":{"scale":0}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_inspect_2"}}},"static_idle":{"loop":true,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":[-13.502,172.029,-60.78],"position":[4.562,39.525,-9.527]},"righthand":{"rotation":[139.329,-36.439,-94.225],"position":[-2.903,39.457,-14.708]},"annihil":{"rotation":[-14.87,42.277,90.016],"position":[5.33,51.939,-16.603]},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"devil":{"scale":1},"angel":{"scale":0}}},"melee_1":{"loop":true,"animation_length":1.9333,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-9.191,166.694,-63.93],"0.0417":[-25.793,165.47,-70.8],"0.0833":[-41.886,151.064,-48.368],"0.125":[-25.533,157.131,-25.229],"0.1667":[-28.142,175.893,-19.286],"0.2083":[-27.24,173.995,-21.349],"0.25":[-25.358,172.379,-22.943],"0.2917":[-24.024,171.152,-23.844],"0.3333":[-21.579,169.748,-24.448],"0.375":[-26.725,166.937,-27.304],"0.4167":[-45.939,160.744,-34.792],"0.4583":[-45.934,160.743,-34.791],"0.5":[-45.93,160.743,-34.789],"0.5417":[-45.929,160.743,-34.788],"0.5833":[-45.93,160.744,-34.788],"0.625":[-45.936,160.745,-34.79],"0.6667":[-46.084,160.655,-35.115],"0.7083":[-46.802,160.175,-36.906],"0.75":[-48.652,158.787,-42.487],"0.7917":[-49.868,157.564,-47.534],"0.8333":[-50.853,155.203,-55.97],"0.875":[-50.689,153.166,-61.345],"0.9167":[-47.187,147.445,-67.76],"0.9583":[-37.281,137.288,-66.698],"1.0":[-19.359,135.148,-52.688],"1.0417":[-9.491,139.649,-43.727],"1.0833":[-5.814,144.69,-42.267],"1.125":[-6.411,152.974,-50.644],"1.1667":[-8.795,163.936,-63.903],"1.2083":[-10.002,168.318,-67.208],"1.25":[-10.923,171.576,-64.839],"1.2917":[-11.294,172.548,-62.131],"1.3333":[-11.754,173.754,-58.781],"1.375":[-12.224,173.827,-58.131],"1.4167":[-12.904,173.496,-58.141],"1.4583":[-12.954,173.374,-58.201],"1.5":[-12.845,172.827,-58.901],"1.5417":[-12.865,172.693,-59.735],"1.5833":[-12.994,172.463,-60.809],"1.625":[-13.131,172.144,-61.182],"1.6667":[-13.262,171.744,-61.346],"1.7083":[-13.28,171.629,-61.284],"1.75":[-13.381,171.722,-61.105],"1.7917":[-13.452,171.91,-60.961],"1.8333":[-13.459,172.01,-60.846],"1.875":[-13.47,172.032,-60.805],"1.9167":[-13.502,172.03,-60.779]},"position":{"0.0":[4.777,40.635,-12.069],"0.0417":[7.38,40.656,-16.348],"0.0833":[13.636,38.567,-14.993],"0.125":[16.394,35.888,-7.681],"0.1667":[16.485,32.783,-2.359],"0.2083":[16.565,32.454,-1.919],"0.25":[16.532,32.301,-1.649],"0.2917":[16.508,32.23,-1.516],"0.3333":[16.41,32.196,-1.41],"0.375":[16.932,32.253,-1.709],"0.4167":[18.609,32.506,-2.657],"0.4583":[18.61,32.508,-2.658],"0.5":[18.61,32.509,-2.66],"0.5417":[18.61,32.51,-2.66],"0.5833":[18.61,32.509,-2.66],"0.625":[18.61,32.508,-2.658],"0.6667":[18.589,32.529,-2.701],"0.7083":[18.473,32.669,-2.958],"0.75":[18.103,33.115,-3.735],"0.7917":[17.753,33.532,-4.414],"0.8333":[17.115,34.278,-5.524],"0.875":[16.642,34.813,-6.232],"0.9167":[15.771,35.823,-7.129],"0.9583":[14.541,37.188,-7.651],"1.0":[11.991,38.673,-8.136],"1.0417":[10.039,39.444,-8.343],"1.0833":[6.875,40.078,-8.814],"1.125":[4.856,40.025,-9.25],"1.1667":[3.886,39.596,-9.272],"1.2083":[4.064,39.325,-9.199],"1.25":[4.658,39.25,-9.261],"1.2917":[4.9,39.318,-9.342],"1.3333":[4.989,39.502,-9.453],"1.375":[4.974,39.6,-9.503],"1.4167":[4.861,39.686,-9.545],"1.4583":[4.784,39.691,-9.565],"1.5":[4.675,39.659,-9.574],"1.5417":[4.612,39.617,-9.569],"1.5833":[4.559,39.558,-9.554],"1.625":[4.55,39.536,-9.54],"1.6667":[4.549,39.514,-9.523],"1.7083":[4.554,39.508,-9.517],"1.75":[4.561,39.51,-9.516],"1.7917":[4.565,39.514,-9.518],"1.8333":[4.567,39.519,-9.522],"1.875":[4.566,39.522,-9.524],"1.9167":[4.562,39.525,-9.526]}},"righthand":{"rotation":{"0.0":[139.568,-11.863,-114.908],"0.0417":[125.62,1.502,-139.807],"0.0833":[128.394,-6.046,-127.892],"0.125":[125.911,-11.045,-118.079],"0.1667":[126.373,-19.04,-102.484],"0.2083":[178.031,-13.702,-108.377],"0.25":[254.825,-8.508,-87.996],"0.2917":[271.232,-9.207,-84.768],"0.3333":[258.848,-0.879,-81.54],"0.375":[235.551,-0.342,-73.482],"0.4167":[186.969,16.548,-60.67],"0.4583":[175.894,25.865,-60.02],"0.5":[161.696,38.742,-63.462],"0.5417":[151.671,45.738,-67.155],"0.5833":[129.441,49.05,-77.493],"0.625":[109.441,35.019,-79.626],"0.6667":[100.476,14.138,-59.762],"0.7083":[110.597,8.171,-40.474],"0.75":[109.731,-4.032,-9.681],"0.7917":[107.098,-10.412,-4.781],"0.8333":[126.311,-9.659,-44.484],"0.875":[122.679,-4.011,-68.354],"0.9167":[111.231,13.712,-118.733],"0.9583":[103.506,14.245,-153.185],"1.0":[112.307,19.162,-173.986],"1.0417":[117.244,17.203,-172.137],"1.0833":[124.006,11.974,-144.814],"1.125":[130.799,3.515,-127.382],"1.1667":[140.397,-7.843,-109.731],"1.2083":[140.358,-14.165,-102.91],"1.25":[135.629,-26.042,-98.598],"1.2917":[134.892,-32.251,-97.094],"1.3333":[137.361,-38.049,-96.502],"1.375":[139.104,-38.791,-96.578],"1.4167":[140.283,-37.796,-96.092],"1.4583":[140.522,-37.06,-95.709],"1.5":[140.227,-36.31,-94.884],"1.5417":[139.991,-35.885,-94.472],"1.5833":[139.677,-35.605,-94.217],"1.625":[139.583,-35.634,-94.263],"1.6667":[139.427,-35.705,-94.233],"1.7083":[139.309,-35.748,-94.16],"1.75":[139.225,-35.821,-94.087],"1.7917":[139.209,-35.873,-94.058],"1.8333":[139.214,-35.956,-94.056],"1.875":[139.221,-36.018,-94.064],"1.9167":[139.242,-36.128,-94.081]},"position":{"0.0":[-5.552,36.198,-11.534],"0.0417":[-13.992,35.723,-7.561],"0.0833":[-21.888,38.539,-8.068],"0.125":[-21.491,39.992,-10.379],"0.1667":[-15.082,41.77,-13.833],"0.2083":[-1.569,41.974,-14.326],"0.25":[8.486,40.846,-3.204],"0.2917":[8.875,40.03,-2.706],"0.3333":[9.117,36.794,-1.172],"0.375":[6.357,32.587,-2.716],"0.4167":[-5.017,29.199,-7.358],"0.4583":[-8.372,28.316,-8.263],"0.5":[-12.522,27.411,-9.156],"0.5417":[-14.884,26.99,-9.514],"0.5833":[-17.863,27.317,-10.553],"0.625":[-18.111,30.104,-11.91],"0.6667":[-16.154,34.865,-14.241],"0.7083":[-14.476,36.354,-15.628],"0.75":[-11.992,38.332,-16.655],"0.7917":[-10.858,39.653,-16.989],"0.8333":[-10.865,41.107,-17.364],"0.875":[-11.361,41.638,-17.358],"0.9167":[-12.26,42.348,-17.283],"0.9583":[-12.83,43.004,-17.221],"1.0":[-11.475,44.194,-17.029],"1.0417":[-8.809,43.902,-16.637],"1.0833":[-3.311,41.959,-15.337],"1.125":[-0.834,40.418,-14.398],"1.1667":[-1.315,38.467,-13.412],"1.2083":[-2.387,38.105,-13.553],"1.25":[-3.07,38.444,-14.425],"1.2917":[-3.115,38.894,-14.735],"1.3333":[-3.014,39.44,-14.801],"1.375":[-2.933,39.58,-14.772],"1.4167":[-2.87,39.579,-14.717],"1.4583":[-2.853,39.53,-14.694],"1.5":[-2.865,39.475,-14.69],"1.5417":[-2.882,39.452,-14.693],"1.5833":[-2.905,39.44,-14.702],"1.625":[-2.911,39.442,-14.707],"1.6667":[-2.914,39.448,-14.711],"1.7083":[-2.914,39.452,-14.712],"1.75":[-2.911,39.457,-14.711],"1.7917":[-2.909,39.459,-14.711],"1.8333":[-2.905,39.459,-14.709],"1.875":[-2.904,39.458,-14.709],"1.9167":[-2.903,39.457,-14.708]}},"annihil":{"rotation":{"0.0":[-25.503,27.671,60.044],"0.0417":[-20.783,-1.64,45.045],"0.0833":[-20.733,11.233,56.392],"0.125":[-17.922,16.821,66.553],"0.1667":[-17.319,21.732,84.3],"0.2083":[-65.666,15.569,84.03],"0.25":[-148.392,10.379,84.676],"0.2917":[-165.186,14.077,88.585],"0.3333":[-151.715,-16.676,78.54],"0.375":[-120.742,-21.993,64.78],"0.4167":[-77.405,5.948,53.074],"0.4583":[-68.238,17.889,43.586],"0.5":[-63.802,38.325,29.354],"0.5417":[-71.156,53.173,15.319],"0.5833":[-127.086,64.954,-40.615],"0.625":[-171.734,39.803,-70.705],"0.6667":[-184.15,0.612,-53.538],"0.7083":[-173.055,-5.296,-35.264],"0.75":[-161.978,-13.912,-2.511],"0.7917":[-157.576,-22.969,15.981],"0.8333":[-160.629,-51.794,52.04],"0.875":[-123.004,-81.86,38.577],"0.9167":[-178.109,-124.989,126.043],"0.9583":[-175.289,-140.301,144.699],"1.0":[-176.55,-156.27,172.781],"1.0417":[-180.791,-158.115,187.311],"1.0833":[-185.867,-167.017,218.699],"1.125":[-189.761,-180.92,236.217],"1.1667":[-197.454,-195.55,253.211],"1.2083":[-197.302,-201.241,259.832],"1.25":[-191.959,-212.272,265.175],"1.2917":[-190.646,-218.421,267.082],"1.3333":[-192.764,-224.351,267.703],"1.375":[-194.607,-225.192,267.403],"1.4167":[-196.004,-224.259,267.64],"1.4583":[-196.332,-223.54,267.938],"1.5":[-196.076,-222.776,268.762],"1.5417":[-195.852,-222.334,269.187],"1.5833":[-195.533,-222.041,269.471],"1.625":[-195.429,-222.067,269.443],"1.6667":[-195.248,-222.129,269.504],"1.7083":[-195.12,-222.165,269.594],"1.75":[-195.021,-222.23,269.684],"1.7917":[-194.997,-222.287,269.72],"1.8333":[-194.998,-222.366,269.723],"1.875":[-194.998,-222.43,269.719],"1.9167":[-195.013,-222.537,269.705]},"position":{"0.0":[1.401,50.137,-13.634],"0.0417":[-5.97,48.313,-9.678],"0.0833":[-14.025,51.199,-10.358],"0.125":[-13.761,52.437,-12.817],"0.1667":[-7.139,54.066,-16.437],"0.2083":[6.694,53.793,-13.572],"0.25":[14.8,51.504,-0.584],"0.2917":[14.184,50.436,-0.112],"0.3333":[15.745,47.148,1.17],"0.375":[13.311,43.558,-0.976],"0.4167":[2.049,38.82,-8.245],"0.4583":[-2.089,37.826,-9.639],"0.5":[-7.463,36.762,-10.574],"0.5417":[-10.502,36.511,-10.853],"0.5833":[-14.372,37.18,-11.407],"0.625":[-15.162,40.774,-12.693],"0.6667":[-8.951,44.776,-16.791],"0.7083":[-7.813,46.034,-17.822],"0.75":[-6.631,48.504,-19.345],"0.7917":[-6.137,50.475,-20.002],"0.8333":[-5.807,53.671,-20.573],"0.875":[-5.34,55.528,-20.401],"0.9167":[-4.365,57.27,-20.212],"0.9583":[-3.671,57.943,-20.007],"1.0":[-2.873,58.236,-19.534],"1.0417":[-1.069,57.661,-18.879],"1.0833":[4.827,54.964,-17.268],"1.125":[7.45,52.964,-16.322],"1.1667":[7.039,50.696,-15.194],"1.2083":[5.936,50.234,-15.357],"1.25":[5.072,50.892,-16.436],"1.2917":[4.989,51.481,-16.765],"1.3333":[5.146,52.131,-16.735],"1.375":[5.272,52.255,-16.649],"1.4167":[5.373,52.185,-16.562],"1.4583":[5.399,52.096,-16.534],"1.5":[5.388,51.995,-16.541],"1.5417":[5.367,51.947,-16.553],"1.5833":[5.338,51.927,-16.571],"1.625":[5.331,51.931,-16.581],"1.6667":[5.323,51.941,-16.589],"1.7083":[5.321,51.947,-16.594],"1.75":[5.321,51.953,-16.596],"1.7917":[5.323,51.955,-16.596],"1.8333":[5.327,51.957,-16.593],"1.875":[5.329,51.959,-16.593],"1.9167":[5.329,51.961,-16.592]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.2083":[-32.5,0,0],"0.2917":[-86.25,0,0],"0.4583":[-86.25,0,0],"0.5833":[0,0,0],"0.75":[-10,0,0],"0.8333":[-22.5,0,0],"1.0":[-5,0,0],"1.2083":[0,0,0]},"position":[0,2.5,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.098,0.062,-0.117],"0.0417":[0.436,0.312,-0.516],"0.0833":[0.681,0.525,-0.304],"0.125":[0.703,0.555,0.307],"0.1667":[0.11,0.505,0.584],"0.2083":[-0.356,0.326,-0.208],"0.25":[-0.496,-0.519,-0.295],"0.2917":[-0.464,-0.641,-0.109],"0.3333":[-0.199,-0.607,-0.393],"0.375":[-0.09,-0.543,0.046],"0.4167":[0.007,-0.44,0.19],"0.4583":[0.039,-0.379,0.209],"0.5":[0.071,-0.332,0.202],"0.5417":[0.09,-0.29,0.184],"0.5833":[0.145,-0.199,0.137],"0.625":[0.173,-0.126,0.1],"0.6667":[0.145,-0.013,0.035],"0.7083":[0.075,0.06,-0.013],"0.75":[-0.101,0.148,-0.078],"0.7917":[-0.199,0.205,-0.121],"0.8333":[-0.265,0.255,-0.182],"0.875":[-0.273,0.275,-0.221],"0.9167":[-0.284,0.288,-0.279],"0.9583":[-0.284,0.294,-0.314],"1.0":[-0.285,0.288,-0.361],"1.0417":[-0.255,0.222,-0.388],"1.0833":[-0.116,-0.021,-0.41],"1.125":[-0.006,-0.18,-0.418],"1.1667":[0.122,-0.228,-0.401],"1.2083":[0.138,-0.138,-0.281],"1.25":[0.074,0.064,-0.025],"1.2917":[-0.002,0.175,0.095],"1.3333":[-0.074,0.168,0.103],"1.375":[-0.109,0.119,0.078],"1.4167":[-0.121,0.026,0.019],"1.4583":[-0.098,-0.012,-0.019],"1.5":[-0.057,-0.018,-0.052],"1.5417":[-0.03,-0.012,-0.052],"1.5833":[0.006,-0.004,-0.035],"1.625":[0.011,-0.001,-0.019],"1.6667":[0.008,0.004,0.009],"1.7083":[0.005,0.006,0.017],"1.75":[0,0.004,0.017],"1.7917":[-0.003,0.004,0.017],"1.8333":[0,0.001,0.009],"1.875":[0,0.001,0.004],"1.9167":[0,0.001,0]}},"angel":{"scale":0}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_melee_1"},"0.75":{"effect":"melee.annihil.annihil_rotate_1"}}},"melee_2":{"loop":true,"animation_length":2.1333,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[80.837,36.222,150.299],"0.0167":[80.837,36.221,150.3],"0.0333":[80.826,36.219,150.29],"0.05":[80.828,36.222,150.281],"0.0667":[80.804,36.214,150.271],"0.0833":[80.708,36.179,150.258],"0.1":[77.489,35.432,150.065],"0.1167":[69.545,33.489,149.973],"0.1333":[59.075,30.707,150.781],"0.15":[48.032,27.633,152.962],"0.1667":[37.817,24.81,156.361],"0.1833":[29.423,22.565,160.23],"0.2":[23.722,20.944,163.364],"0.2167":[21.473,19.786,164.396],"0.2333":[21.274,18.792,163.915],"0.25":[21.195,17.74,163.379],"0.2667":[21.234,16.634,162.783],"0.2833":[21.389,15.477,162.126],"0.3":[21.659,14.275,161.404],"0.3167":[22.043,13.033,160.615],"0.3333":[22.542,11.756,159.757],"0.35":[23.156,10.451,158.829],"0.3667":[23.886,9.124,157.828],"0.3833":[24.734,7.782,156.753],"0.4":[25.702,6.433,155.604],"0.4167":[26.792,5.086,154.379],"0.4333":[28.004,3.749,153.078],"0.45":[29.342,2.432,151.7],"0.4667":[30.805,1.145,150.246],"0.4833":[32.396,-0.102,148.716],"0.5":[34.115,-1.298,147.112],"0.5167":[35.962,-2.432,145.435],"0.5333":[37.934,-3.491,143.69],"0.55":[40.03,-4.466,141.88],"0.5667":[42.246,-5.344,140.011],"0.5833":[44.578,-6.115,138.089],"0.6":[47.018,-6.767,136.125],"0.6167":[49.559,-7.292,134.126],"0.6333":[52.192,-7.681,132.105],"0.65":[54.906,-7.925,130.075],"0.6667":[57.69,-8.02,128.049],"0.6833":[60.531,-7.961,126.042],"0.7":[63.416,-7.745,124.069],"0.7167":[66.333,-7.372,122.146],"0.7333":[69.269,-6.843,120.288],"0.75":[72.21,-6.161,118.509],"0.7667":[75.148,-5.331,116.824],"0.7833":[78.071,-4.36,115.245],"0.8":[80.971,-3.255,113.783],"0.8167":[83.84,-2.027,112.449],"0.8333":[86.674,-0.685,111.251],"0.85":[89.468,0.758,110.194],"0.8667":[92.219,2.292,109.285],"0.8833":[94.925,3.903,108.527],"0.9":[97.587,5.579,107.922],"0.9167":[100.205,7.308,107.472],"0.9333":[102.778,9.076,107.176],"0.95":[105.31,10.872,107.033],"0.9667":[107.8,12.683,107.041],"0.9833":[110.252,14.499,107.195],"1.0":[112.665,16.309,107.493],"1.0167":[115.04,18.103,107.928],"1.0333":[117.379,19.871,108.495],"1.05":[119.68,21.607,109.184],"1.0667":[121.942,23.302,109.988],"1.0833":[124.164,24.951,110.898],"1.1":[126.341,26.55,111.901],"1.1167":[128.471,28.095,112.985],"1.1333":[130.548,29.584,114.139],"1.15":[133.443,32.393,114.02],"1.1667":[137.645,37.176,113.152],"1.1833":[142.772,42.36,113.834],"1.2":[148.423,45.613,116.982],"1.2167":[155.162,45.916,122.488],"1.2333":[162.604,44.182,129.043],"1.25":[168.82,41.24,134.657],"1.2667":[172.838,38.418,138.303],"1.2833":[174.263,37.174,139.594],"1.3":[174.2,35.309,137.738],"1.3167":[173.982,31.609,133.964],"1.3333":[173.591,27.026,129.357],"1.35":[172.958,22.313,124.389],"1.3667":[171.992,18.865,119.451],"1.3833":[171.057,16.074,115.652],"1.4":[170.466,13.709,113.833],"1.4167":[170.006,11.681,112.912],"1.4333":[169.616,10.066,112.735],"1.45":[169.3,9.012,113.564],"1.4667":[169.077,8.424,115.161],"1.4833":[168.885,7.971,116.637],"1.5":[168.705,7.452,117.869],"1.5167":[168.557,6.941,119.191],"1.5333":[168.418,6.507,120.405],"1.55":[168.256,6.214,121.318],"1.5667":[168.042,6.125,121.73],"1.5833":[167.776,6.188,121.804],"1.6":[167.505,6.293,121.844],"1.6167":[167.267,6.411,121.858],"1.6333":[167.095,6.504,121.858],"1.65":[167.029,6.543,121.858],"1.6667":[167.046,6.626,121.799],"1.6833":[167.09,6.816,121.637],"1.7":[167.137,7.033,121.399],"1.7167":[167.161,7.196,121.112],"1.7333":[167.156,7.27,120.733],"1.75":[167.134,7.305,120.265],"1.7667":[167.101,7.339,119.804],"1.7833":[167.06,7.412,119.446],"1.8":[167.006,7.537,119.191],"1.8167":[166.94,7.69,118.98],"1.8333":[166.869,7.856,118.818],"1.85":[166.805,8.019,118.71],"1.8667":[166.759,8.16,118.658],"1.8833":[166.736,8.261,118.655],"1.9":[166.729,8.323,118.681],"1.9167":[166.724,8.359,118.722],"1.9333":[166.705,8.386,118.764],"1.95":[166.666,8.365,118.819],"1.9667":[166.619,8.278,118.894],"1.9833":[166.576,8.171,118.974],"2.0":[166.548,8.089,119.039],"2.0167":[166.538,8.045,119.086],"2.0333":[166.539,8.013,119.124],"2.05":[166.543,7.992,119.154],"2.0667":[166.541,7.975,119.178],"2.0833":[166.531,7.966,119.195],"2.1":[166.516,7.965,119.206],"2.1167":[166.503,7.968,119.214],"2.1333":[166.498,7.97,119.221]},"position":{"0.0":[23.26,33.141,-6.362],"0.0167":[23.26,32.667,-5.447],"0.0333":[23.257,31.488,-3.263],"0.05":[23.259,29.976,-0.66],"0.0667":[23.251,28.497,1.528],"0.0833":[23.217,27.42,2.469],"0.1":[22.986,26.671,2.535],"0.1167":[22.478,25.977,2.619],"0.1333":[21.825,25.382,2.667],"0.15":[21.164,24.875,2.64],"0.1667":[20.555,24.435,2.561],"0.1833":[20.012,24.091,2.472],"0.2":[19.597,23.865,2.381],"0.2167":[19.367,23.783,2.294],"0.2333":[19.252,23.779,2.21],"0.25":[19.142,23.775,2.126],"0.2667":[19.036,23.77,2.04],"0.2833":[18.934,23.765,1.953],"0.3":[18.837,23.761,1.865],"0.3167":[18.743,23.756,1.776],"0.3333":[18.654,23.752,1.685],"0.35":[18.569,23.748,1.594],"0.3667":[18.488,23.745,1.5],"0.3833":[18.411,23.744,1.406],"0.4":[18.337,23.743,1.31],"0.4167":[18.267,23.745,1.212],"0.4333":[18.201,23.748,1.113],"0.45":[18.138,23.753,1.012],"0.4667":[18.079,23.761,0.909],"0.4833":[18.023,23.771,0.805],"0.5":[17.97,23.784,0.698],"0.5167":[17.921,23.8,0.59],"0.5333":[17.874,23.82,0.479],"0.55":[17.83,23.843,0.366],"0.5667":[17.788,23.871,0.251],"0.5833":[17.749,23.902,0.133],"0.6":[17.712,23.938,0.013],"0.6167":[17.677,23.979,-0.11],"0.6333":[17.643,24.025,-0.236],"0.65":[17.611,24.076,-0.364],"0.6667":[17.581,24.133,-0.495],"0.6833":[17.551,24.196,-0.629],"0.7":[17.521,24.265,-0.766],"0.7167":[17.493,24.341,-0.906],"0.7333":[17.464,24.423,-1.048],"0.75":[17.435,24.512,-1.193],"0.7667":[17.405,24.609,-1.341],"0.7833":[17.374,24.713,-1.492],"0.8":[17.343,24.825,-1.645],"0.8167":[17.31,24.944,-1.8],"0.8333":[17.276,25.072,-1.958],"0.85":[17.24,25.209,-2.118],"0.8667":[17.202,25.353,-2.28],"0.8833":[17.161,25.507,-2.444],"0.9":[17.118,25.67,-2.61],"0.9167":[17.073,25.842,-2.777],"0.9333":[17.025,26.023,-2.947],"0.95":[16.974,26.214,-3.117],"0.9667":[16.92,26.414,-3.289],"0.9833":[16.863,26.624,-3.462],"1.0":[16.803,26.844,-3.636],"1.0167":[16.754,27.29,-3.869],"1.0333":[16.723,28.113,-4.203],"1.05":[16.695,29.219,-4.611],"1.0667":[16.658,30.511,-5.067],"1.0833":[16.596,31.894,-5.545],"1.1":[16.497,33.273,-6.019],"1.1167":[16.348,34.552,-6.463],"1.1333":[16.133,35.636,-6.851],"1.15":[15.789,36.495,-7.17],"1.1667":[15.27,37.194,-7.434],"1.1833":[14.587,37.774,-7.659],"1.2":[13.755,38.279,-7.859],"1.2167":[12.761,38.735,-8.031],"1.2333":[11.628,39.135,-8.174],"1.25":[10.417,39.478,-8.304],"1.2667":[9.188,39.759,-8.438],"1.2833":[8.005,39.976,-8.593],"1.3":[6.837,40.082,-8.819],"1.3167":[5.766,40.095,-9.055],"1.3333":[4.856,40.026,-9.25],"1.35":[4.203,39.895,-9.351],"1.3667":[3.949,39.745,-9.31],"1.3833":[3.913,39.592,-9.254],"1.4":[3.96,39.443,-9.225],"1.4167":[4.076,39.303,-9.203],"1.4333":[4.224,39.24,-9.196],"1.45":[4.425,39.242,-9.218],"1.4667":[4.658,39.25,-9.261],"1.4833":[4.822,39.274,-9.305],"1.5":[4.901,39.317,-9.342],"1.5167":[4.95,39.376,-9.381],"1.5333":[4.976,39.442,-9.419],"1.55":[4.987,39.505,-9.453],"1.5667":[4.989,39.556,-9.481],"1.5833":[4.978,39.597,-9.502],"1.6":[4.947,39.635,-9.519],"1.6167":[4.906,39.665,-9.533],"1.6333":[4.861,39.686,-9.545],"1.65":[4.821,39.693,-9.556],"1.6667":[4.784,39.691,-9.565],"1.6833":[4.746,39.685,-9.57],"1.7":[4.709,39.674,-9.573],"1.7167":[4.675,39.66,-9.574],"1.7333":[4.643,39.641,-9.573],"1.75":[4.612,39.617,-9.569],"1.7667":[4.586,39.592,-9.564],"1.7833":[4.568,39.573,-9.559],"1.8":[4.559,39.558,-9.554],"1.8167":[4.553,39.546,-9.547],"1.8333":[4.55,39.536,-9.541],"1.85":[4.549,39.528,-9.534],"1.8667":[4.548,39.52,-9.528],"1.8833":[4.549,39.514,-9.523],"1.9":[4.551,39.51,-9.52],"1.9167":[4.554,39.508,-9.517],"1.9333":[4.557,39.508,-9.516],"1.95":[4.559,39.508,-9.516],"1.9667":[4.561,39.51,-9.516],"1.9833":[4.563,39.512,-9.517],"2.0":[4.565,39.514,-9.518],"2.0167":[4.566,39.515,-9.519],"2.0333":[4.566,39.517,-9.52],"2.05":[4.566,39.519,-9.522],"2.0667":[4.567,39.521,-9.523],"2.0833":[4.566,39.522,-9.524],"2.1":[4.564,39.524,-9.525],"2.1167":[4.563,39.525,-9.526],"2.1333":[4.562,39.525,-9.526]}},"righthand":{"rotation":{"0.0":[0.393,-137.018,78.276],"0.1167":[0.393,-137.018,78.276],"0.1333":[-9.576,-128.878,75.852],"0.15":[-20.984,-120.675,75.011],"0.1667":[-36.828,-111.116,76.857],"0.1833":[-55.006,-105.244,82.593],"0.2":[-43.373,-116.49,67.639],"0.2167":[-45.315,-150.63,52.774],"0.2333":[-50.23,-169.853,43.418],"0.25":[-54.949,-171.176,41.045],"0.2667":[-67.1,-168.302,38.656],"0.2833":[-105.014,-160.517,47.62],"0.3":[-150.703,-163.471,58.728],"0.3167":[-187.087,-153.81,47.414],"0.3333":[-197.839,-175.893,58.269],"0.35":[-184.649,-186.017,68.145],"0.3667":[-172.086,-188.987,75.897],"0.3833":[-169.807,-190.046,77.858],"0.4":[-169.454,-190.968,78.729],"0.4167":[-170.286,-191.568,78.712],"0.4333":[-171.536,-191.596,78.052],"0.45":[-172.405,-190.806,77.027],"0.4667":[-172.086,-188.987,75.897],"0.4833":[-170.787,-186.421,74.668],"0.5":[-169.257,-183.553,73.214],"0.5167":[-167.496,-180.449,71.532],"0.5333":[-165.504,-177.179,69.619],"0.55":[-163.28,-173.812,67.473],"0.5667":[-160.824,-170.419,65.095],"0.5833":[-158.141,-167.066,62.488],"0.6":[-155.243,-163.821,59.663],"0.6167":[-152.152,-160.746,56.641],"0.6333":[-148.899,-157.895,53.453],"0.65":[-145.537,-155.316,50.151],"0.6667":[-142.132,-153.043,46.803],"0.6833":[-138.769,-151.097,43.491],"0.7":[-135.549,-149.483,40.317],"0.7167":[-132.582,-148.193,37.389],"0.7333":[-129.983,-147.207,34.823],"0.75":[-128.2,-146.594,33.05],"0.7667":[-127.484,-146.345,32.308],"0.7833":[-127.615,-146.355,32.392],"0.8":[-128.351,-146.555,33.066],"0.8167":[-129.439,-146.884,34.092],"0.8333":[-130.63,-147.279,35.229],"0.85":[-131.686,-147.659,36.25],"0.8667":[-132.377,-147.933,36.938],"0.8833":[-132.481,-148.002,37.08],"0.9":[-131.768,-147.779,36.456],"0.9167":[-129.983,-147.207,34.823],"0.9333":[-126.987,-146.289,31.913],"0.95":[-122.889,-145.21,27.754],"0.9667":[-117.799,-144.232,22.542],"0.9833":[-111.905,-143.604,16.542],"1.0":[-105.483,-143.518,10.11],"1.0167":[-98.884,-144.072,3.673],"1.0333":[-92.467,-145.25,-2.334],"1.05":[-86.534,-146.93,-7.529],"1.0667":[-81.293,-148.908,-11.627],"1.0833":[-76.862,-150.938,-14.433],"1.1":[-73.15,-152.493,-14.971],"1.1167":[-69.9,-153.423,-13.141],"1.1333":[-67.019,-154.158,-10.029],"1.15":[-64.446,-155.242,-6.651],"1.1667":[-62.106,-157.304,-3.985],"1.1833":[-61.194,-163.595,-2.078],"1.2":[-61.062,-171.592,-1.056],"1.2167":[-60.588,-177.381,-1.733],"1.2333":[-60.293,-182.748,-2.888],"1.25":[-59.902,-188.142,-2.163],"1.2667":[-57.799,-193.601,8.869],"1.2833":[-55.685,-192.665,23.565],"1.3":[-53.331,-189.607,37.577],"1.3167":[-49.065,-184.43,48.194],"1.3333":[-44.926,-178.796,56.699],"1.35":[-41.35,-175.494,64.398],"1.3667":[-38.799,-172.585,70.546],"1.3833":[-38.75,-169.149,74.46],"1.4":[-39.811,-165.597,77.072],"1.4167":[-41.259,-161.599,78.867],"1.4333":[-42.864,-157.56,80.14],"1.45":[-44.323,-153.641,81.292],"1.4667":[-45.201,-150.189,82.176],"1.4833":[-45.048,-147.432,82.795],"1.5":[-44.412,-145.005,83.207],"1.5167":[-43.633,-142.95,83.46],"1.5333":[-42.57,-141.543,83.38],"1.55":[-41.49,-140.927,83.2],"1.5667":[-40.82,-140.906,83.273],"1.5833":[-40.301,-141.209,83.425],"1.6":[-39.902,-141.56,83.595],"1.6167":[-39.621,-141.898,83.754],"1.6333":[-39.455,-142.283,83.928],"1.65":[-39.382,-142.631,84.134],"1.6667":[-39.427,-142.909,84.406],"1.6833":[-39.558,-143.148,84.704],"1.7":[-39.696,-143.375,84.974],"1.7167":[-39.807,-143.599,85.19],"1.7333":[-39.916,-143.805,85.369],"1.75":[-40.031,-143.976,85.522],"1.7667":[-40.143,-144.066,85.609],"1.7833":[-40.237,-144.089,85.636],"1.8":[-40.291,-144.082,85.623],"1.8167":[-40.33,-144.055,85.591],"1.8333":[-40.375,-144.028,85.576],"1.85":[-40.432,-144.009,85.594],"1.8667":[-40.488,-143.985,85.626],"1.8833":[-40.547,-143.965,85.663],"1.9":[-40.605,-143.942,85.695],"1.9167":[-40.651,-143.918,85.725],"1.9333":[-40.677,-143.893,85.751],"1.95":[-40.691,-143.869,85.773],"1.9667":[-40.7,-143.842,85.787],"1.9833":[-40.705,-143.816,85.801],"2.0":[-40.706,-143.789,85.805],"2.0167":[-40.699,-143.76,85.8],"2.0333":[-40.702,-143.732,85.801],"2.05":[-40.701,-143.704,85.798],"2.0667":[-40.693,-143.676,85.792],"2.0833":[-40.687,-143.646,85.787],"2.1":[-40.682,-143.618,85.783],"2.1167":[-40.681,-143.59,85.783],"2.1333":[-40.675,-143.561,85.776]},"position":{"0.0":[-3.672,34.343,-9.374],"0.1167":[-3.672,34.343,-9.374],"0.1333":[-2.093,37.383,-10.177],"0.15":[-0.987,39.571,-11.312],"0.1667":[0.374,42.446,-12.559],"0.1833":[1.216,44.873,-13.751],"0.2":[0.507,45.792,-14.726],"0.2167":[-0.727,45.978,-15.636],"0.2333":[-1.744,45.283,-16.613],"0.25":[-3.718,43.781,-16.872],"0.2667":[-8.255,40.084,-16.45],"0.2833":[-13.089,36.595,-14.804],"0.3":[-19.253,32.388,-10.751],"0.3167":[-23.714,28.608,-5.879],"0.3333":[-23.308,31.256,-0.296],"0.35":[-24.464,31.923,3.917],"0.3667":[-25.463,32.341,6.228],"0.3833":[-25.64,33.195,6.134],"0.4":[-25.671,34.188,5.518],"0.4167":[-25.611,35.204,4.564],"0.4333":[-25.519,36.125,3.46],"0.45":[-25.451,36.834,2.392],"0.4667":[-25.463,37.212,1.545],"0.4833":[-25.54,37.357,0.862],"0.5":[-25.628,37.444,0.161],"0.5167":[-25.724,37.481,-0.552],"0.5333":[-25.827,37.474,-1.272],"0.55":[-25.936,37.428,-1.993],"0.5667":[-26.048,37.35,-2.711],"0.5833":[-26.163,37.247,-3.421],"0.6":[-26.279,37.124,-4.117],"0.6167":[-26.393,36.988,-4.794],"0.6333":[-26.506,36.845,-5.448],"0.65":[-26.614,36.701,-6.073],"0.6667":[-26.717,36.563,-6.664],"0.6833":[-26.813,36.435,-7.216],"0.7":[-26.9,36.326,-7.723],"0.7167":[-26.977,36.241,-8.182],"0.7333":[-27.041,36.186,-8.586],"0.75":[-27.09,36.149,-8.869],"0.7667":[-27.12,36.116,-8.99],"0.7833":[-27.135,36.088,-8.984],"0.8":[-27.138,36.066,-8.887],"0.8167":[-27.13,36.051,-8.733],"0.8333":[-27.116,36.045,-8.558],"0.85":[-27.098,36.048,-8.397],"0.8667":[-27.079,36.063,-8.284],"0.8833":[-27.061,36.09,-8.254],"0.9":[-27.048,36.13,-8.343],"0.9167":[-27.041,36.186,-8.586],"0.9333":[-27.061,36.237,-8.989],"0.95":[-27.112,36.272,-9.52],"0.9667":[-27.182,36.305,-10.156],"0.9833":[-27.256,36.347,-10.872],"1.0":[-27.321,36.411,-11.646],"1.0167":[-27.362,36.511,-12.452],"1.0333":[-27.365,36.658,-13.269],"1.05":[-27.317,36.865,-14.072],"1.0667":[-27.203,37.145,-14.837],"1.0833":[-27.01,37.51,-15.541],"1.1":[-26.344,38.47,-16.17],"1.1167":[-25.157,40.051,-16.732],"1.1333":[-23.953,41.545,-17.236],"1.15":[-22.919,42.638,-17.63],"1.1667":[-21.783,43.582,-17.93],"1.1833":[-20.487,44.486,-18.2],"1.2":[-18.945,45.217,-18.404],"1.2167":[-17.132,45.746,-18.574],"1.2333":[-15.174,46.166,-18.708],"1.25":[-13.063,46.441,-18.716],"1.2667":[-10.182,45.982,-18.057],"1.2833":[-6.731,44.872,-17.487],"1.3":[-2.94,42.49,-16.871],"1.3167":[-1.081,40.852,-16.062],"1.3333":[-0.24,39.589,-15.237],"1.35":[-0.619,38.909,-14.403],"1.3667":[-1.241,38.445,-13.743],"1.3833":[-1.85,38.198,-13.508],"1.4":[-2.402,38.111,-13.536],"1.4167":[-2.739,38.13,-13.793],"1.4333":[-2.952,38.244,-14.138],"1.45":[-3.071,38.444,-14.426],"1.4667":[-3.112,38.678,-14.641],"1.4833":[-3.115,38.894,-14.735],"1.5":[-3.094,39.108,-14.776],"1.5167":[-3.063,39.298,-14.801],"1.5333":[-3.016,39.446,-14.806],"1.55":[-2.966,39.538,-14.79],"1.5667":[-2.933,39.577,-14.772],"1.5833":[-2.907,39.59,-14.751],"1.6":[-2.886,39.59,-14.732],"1.6167":[-2.87,39.578,-14.717],"1.6333":[-2.859,39.554,-14.703],"1.65":[-2.853,39.53,-14.693],"1.6667":[-2.854,39.51,-14.69],"1.6833":[-2.858,39.491,-14.689],"1.7":[-2.865,39.474,-14.691],"1.7167":[-2.873,39.462,-14.692],"1.7333":[-2.882,39.453,-14.693],"1.75":[-2.892,39.445,-14.695],"1.7667":[-2.899,39.441,-14.698],"1.7833":[-2.905,39.44,-14.702],"1.8":[-2.908,39.44,-14.704],"1.8167":[-2.911,39.442,-14.707],"1.8333":[-2.913,39.444,-14.709],"1.85":[-2.914,39.446,-14.711],"1.8667":[-2.914,39.448,-14.711],"1.8833":[-2.914,39.45,-14.712],"1.9":[-2.913,39.452,-14.712],"1.9167":[-2.913,39.454,-14.712],"1.9333":[-2.913,39.456,-14.712],"1.95":[-2.911,39.457,-14.712],"1.9667":[-2.91,39.458,-14.711],"1.9833":[-2.909,39.459,-14.711],"2.0":[-2.908,39.459,-14.711],"2.0167":[-2.906,39.46,-14.709],"2.0333":[-2.905,39.459,-14.709],"2.05":[-2.905,39.459,-14.709],"2.0667":[-2.904,39.459,-14.709],"2.0833":[-2.903,39.459,-14.708],"2.1":[-2.903,39.458,-14.708],"2.1167":[-2.904,39.457,-14.709],"2.1333":[-2.904,39.457,-14.709]}},"annihil":{"rotation":{"0.0":[-5.465,-176.444,-81.146],"0.0167":[-5.273,-167.929,-80.743],"0.0333":[-5.098,-159.496,-80.374],"0.05":[-5.056,-150.896,-79.957],"0.0667":[-5.324,-141.881,-79.349],"0.0833":[-6.342,-132.008,-78.131],"0.1":[-8.568,-121.581,-75.822],"0.1167":[-12.612,-111.484,-71.778],"0.1333":[-23.815,-101.592,-60.663],"0.15":[-90.064,-94.696,5.433],"0.1667":[-155.585,-100.627,70.807],"0.1833":[-168.591,-107.566,83.748],"0.2":[-162.151,-109.64,74.497],"0.2167":[-168.793,-142.118,63.344],"0.2333":[-170.795,-161.708,53.575],"0.25":[-174.736,-163.942,51.15],"0.2667":[-187.072,-163.807,49.404],"0.2833":[-225.572,-163.092,58.552],"0.3":[-269.179,-172.423,65.662],"0.3167":[-304.627,-165.98,49.108],"0.3333":[-314.759,-188.892,58.324],"0.35":[-300.605,-199.134,72.163],"0.3667":[-286.413,-201.423,84.716],"0.3833":[-282.976,-202.62,89.397],"0.4":[-281.6,-203.853,92.316],"0.4167":[-281.856,-204.847,93.194],"0.4333":[-283.345,-205.082,91.8],"0.45":[-285.518,-203.881,88.033],"0.4667":[-287.454,-200.603,81.944],"0.4833":[-279.617,-202.167,98.766],"0.5":[-272.577,-200.989,114.568],"0.5167":[-267.292,-197.896,128.939],"0.5333":[-264.094,-193.821,141.953],"0.55":[-262.899,-189.597,153.982],"0.5667":[-263.407,-185.898,165.439],"0.5833":[-265.217,-183.248,176.649],"0.6":[-267.841,-182.007,187.779],"0.6167":[-270.727,-182.364,198.877],"0.6333":[-273.278,-184.326,209.948],"0.65":[-274.933,-187.706,221.069],"0.6667":[-275.173,-192.141,232.462],"0.6833":[-273.54,-197.091,244.517],"0.7":[-269.652,-201.827,257.753],"0.7167":[-263.348,-205.42,272.623],"0.7333":[-263.983,-217.636,268.709],"0.75":[-261.255,-236.793,271.191],"0.7667":[-263.193,-256.872,270.767],"0.7833":[-264.172,-280.809,272.363],"0.8":[-268.971,-307.974,268.755],"0.8167":[-271.223,-336.831,268.343],"0.8333":[-275.895,-364.812,273.972],"0.85":[-290.525,-389.499,296.359],"0.8667":[-325.941,-392.839,335.947],"0.8833":[-358.126,-360.39,359.895],"0.9":[-383.963,-323.794,351.854],"0.9167":[-421.548,-313.633,314.524],"0.9333":[-450.428,-327.413,279.105],"0.95":[-459.985,-348.246,261.746],"0.9667":[-457.518,-364.994,257.424],"0.9833":[-450.013,-379.969,257.217],"1.0":[-442.74,-396.098,255.538],"1.0167":[-435.039,-412.742,252.574],"1.0333":[-424.398,-429.906,244.621],"1.05":[-361.284,-443.854,183.847],"1.0667":[-278.006,-432.315,101.966],"1.0833":[-267.567,-415.449,91.397],"1.1":[-264.195,-398.731,85.265],"1.1167":[-264.126,-382.62,79.203],"1.1333":[-267.495,-368.116,73.612],"1.15":[-273.416,-355.523,67.891],"1.1667":[-281.587,-344.672,60.628],"1.1833":[-292.806,-336.087,51.154],"1.2":[-307.552,-330.616,39.11],"1.2167":[-327.398,-332.045,25.744],"1.2333":[-346.899,-339.808,15.215],"1.25":[-361.553,-350.158,8.499],"1.2667":[-364.005,-364.671,14.13],"1.2833":[-364.701,-366.279,27.98],"1.3":[-365.435,-364.519,41.921],"1.3167":[-369.285,-359.049,52.136],"1.3333":[-373.055,-353.154,60.273],"1.35":[-376.463,-349.641,67.646],"1.3667":[-378.889,-346.592,73.564],"1.3833":[-378.75,-343.158,77.527],"1.4":[-377.453,-339.666,80.323],"1.4167":[-375.699,-335.756,82.377],"1.4333":[-373.738,-331.819,83.956],"1.45":[-371.891,-328.002,85.432],"1.4667":[-370.653,-324.616,86.589],"1.4833":[-370.547,-321.857,87.351],"1.5":[-370.978,-319.397,87.842],"1.5167":[-371.596,-317.295,88.142],"1.5333":[-372.59,-315.825,88.03],"1.55":[-373.698,-315.146,87.751],"1.5667":[-374.428,-315.083,87.73],"1.5833":[-375.027,-315.352,87.785],"1.6":[-375.5,-315.679,87.873],"1.6167":[-375.843,-315.999,87.965],"1.6333":[-376.064,-316.377,88.089],"1.65":[-376.175,-316.719,88.266],"1.6667":[-376.158,-316.996,88.519],"1.6833":[-376.039,-317.244,88.823],"1.7":[-375.909,-317.479,89.096],"1.7167":[-375.814,-317.707,89.311],"1.7333":[-375.708,-317.922,89.495],"1.75":[-375.603,-318.095,89.649],"1.7667":[-375.493,-318.192,89.745],"1.7833":[-375.39,-318.22,89.787],"1.8":[-375.332,-318.22,89.781],"1.8167":[-375.287,-318.192,89.756],"1.8333":[-375.236,-318.171,89.746],"1.85":[-375.178,-318.15,89.773],"1.8667":[-375.107,-318.136,89.815],"1.8833":[-375.043,-318.117,89.861],"1.9":[-374.979,-318.096,89.904],"1.9167":[-374.927,-318.075,89.941],"1.9333":[-374.897,-318.055,89.972],"1.95":[-374.88,-318.029,89.995],"1.9667":[-374.863,-318.004,90.018],"1.9833":[-374.859,-317.979,90.029],"2.0":[-374.859,-317.95,90.034],"2.0167":[-374.854,-317.925,90.037],"2.0333":[-374.854,-317.895,90.035],"2.05":[-374.854,-317.866,90.032],"2.0667":[-374.854,-317.837,90.032],"2.0833":[-374.859,-317.808,90.029],"2.1":[-374.863,-317.782,90.023],"2.1167":[-374.867,-317.753,90.02],"2.1333":[-374.872,-317.724,90.015]},"position":{"0.0":[16.25,46.474,-15.494],"0.0167":[15.693,48.747,-15.546],"0.0333":[15.122,50.945,-15.585],"0.05":[14.534,52.986,-15.617],"0.0667":[13.914,54.789,-15.646],"0.0833":[13.232,56.207,-15.659],"0.1":[12.501,57.236,-15.666],"0.1167":[11.774,58.03,-15.709],"0.1333":[11.048,58.681,-15.815],"0.15":[10.308,59.196,-15.952],"0.1667":[9.603,59.594,-16.069],"0.1833":[9.006,59.905,-16.126],"0.2":[8.507,60.058,-16.934],"0.2167":[6.607,58.916,-17.86],"0.2333":[5.404,57.935,-18.692],"0.25":[3.104,56.483,-19.058],"0.2667":[-1.769,52.588,-18.981],"0.2833":[-7.761,48.181,-17.399],"0.3":[-14.723,43.116,-12.112],"0.3167":[-18.583,38.88,-6.204],"0.3333":[-18.364,41.876,-0.07],"0.35":[-19.86,42.878,3.768],"0.3667":[-20.933,43.687,5.546],"0.3833":[-21.063,44.86,5.175],"0.4":[-21.053,46.115,4.351],"0.4167":[-20.992,47.265,3.303],"0.4333":[-20.941,48.129,2.268],"0.45":[-20.94,48.519,1.48],"0.4667":[-21.025,48.219,1.138],"0.4833":[-21.247,47.375,1.085],"0.5":[-21.488,46.249,1.001],"0.5167":[-21.707,44.852,0.824],"0.5333":[-21.86,43.209,0.491],"0.55":[-21.905,41.359,-0.045],"0.5667":[-21.807,39.348,-0.827],"0.5833":[-21.539,37.246,-1.876],"0.6":[-21.085,35.116,-3.189],"0.6167":[-20.439,33.031,-4.756],"0.6333":[-19.608,31.064,-6.546],"0.65":[-18.616,29.272,-8.504],"0.6667":[-17.497,27.709,-10.57],"0.6833":[-16.295,26.403,-12.674],"0.7":[-15.064,25.38,-14.738],"0.7167":[-13.862,24.642,-16.677],"0.7333":[-12.351,26.885,-17.924],"0.75":[-11.119,31.316,-18.951],"0.7667":[-10.826,35.744,-20.537],"0.7833":[-10.794,40.633,-22.867],"0.8":[-10.727,45.403,-25.219],"0.8167":[-10.809,50.795,-26.908],"0.8333":[-11.092,56.412,-27.353],"0.85":[-10.895,61.6,-26.449],"0.8667":[-10.337,65.357,-24.678],"0.8833":[-9.742,67.643,-22.538],"0.9":[-8.887,68.515,-20.836],"0.9167":[-8.664,68.577,-19.495],"0.9333":[-8.522,67.883,-18.356],"0.95":[-8.03,66.832,-17.795],"0.9667":[-7.776,65.781,-17.701],"0.9833":[-7.901,64.61,-17.921],"1.0":[-7.878,63.517,-18.56],"1.0167":[-7.794,62.576,-19.584],"1.0333":[-7.604,61.896,-20.924],"1.05":[-7.459,61.666,-22.439],"1.0667":[-7.306,61.894,-23.924],"1.0833":[-7.098,62.487,-25.198],"1.1":[-6.804,63.289,-26.139],"1.1167":[-6.484,64.175,-26.702],"1.1333":[-6.142,65.017,-26.903],"1.15":[-5.799,65.815,-26.797],"1.1667":[-5.498,66.518,-26.409],"1.1833":[-5.216,66.964,-25.741],"1.2":[-4.967,67.004,-24.785],"1.2167":[-4.527,66.005,-23.399],"1.2333":[-4.196,64.215,-21.809],"1.25":[-4.32,62.213,-20.811],"1.2667":[-2.028,60.416,-19.838],"1.2833":[1.122,58.501,-19.366],"1.3":[5.116,55.485,-18.826],"1.3167":[7.077,53.662,-17.966],"1.3333":[7.995,52.271,-17.078],"1.35":[7.712,51.398,-16.151],"1.3667":[7.144,50.76,-15.427],"1.3833":[6.518,50.432,-15.227],"1.4":[5.918,50.329,-15.33],"1.4167":[5.523,50.39,-15.671],"1.4333":[5.251,50.581,-16.096],"1.45":[5.076,50.868,-16.444],"1.4667":[5,51.185,-16.691],"1.4833":[4.991,51.459,-16.776],"1.5":[5.026,51.719,-16.792],"1.5167":[5.073,51.947,-16.786],"1.5333":[5.146,52.118,-16.753],"1.55":[5.222,52.21,-16.702],"1.5667":[5.272,52.234,-16.665],"1.5833":[5.316,52.221,-16.627],"1.6":[5.348,52.195,-16.597],"1.6167":[5.374,52.162,-16.574],"1.6333":[5.392,52.118,-16.557],"1.65":[5.401,52.073,-16.546],"1.6667":[5.403,52.037,-16.544],"1.6833":[5.396,52.002,-16.548],"1.7":[5.389,51.972,-16.554],"1.7167":[5.38,51.948,-16.559],"1.7333":[5.367,51.927,-16.564],"1.75":[5.357,51.911,-16.57],"1.7667":[5.348,51.903,-16.577],"1.7833":[5.339,51.903,-16.584],"1.8":[5.334,51.905,-16.589],"1.8167":[5.33,51.911,-16.593],"1.8333":[5.329,51.915,-16.596],"1.85":[5.325,51.917,-16.599],"1.8667":[5.323,51.919,-16.602],"1.8833":[5.324,51.921,-16.603],"1.9":[5.32,51.924,-16.605],"1.9167":[5.32,51.927,-16.607],"1.9333":[5.32,51.93,-16.607],"1.95":[5.324,51.93,-16.607],"1.9667":[5.324,51.932,-16.607],"1.9833":[5.324,51.932,-16.607],"2.0":[5.324,51.935,-16.607],"2.0167":[5.328,51.935,-16.605],"2.05":[5.328,51.935,-16.605],"2.0667":[5.328,51.938,-16.605],"2.0833":[5.328,51.938,-16.603],"2.1":[5.331,51.938,-16.603],"2.1333":[5.331,51.938,-16.603]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.013,-0.469,0.19],"0.0167":[-0.031,-0.469,0.157],"0.0333":[-0.053,-0.468,0.092],"0.05":[-0.082,-0.468,0.008],"0.0667":[-0.116,-0.467,-0.089],"0.0833":[-0.154,-0.465,-0.206],"0.1":[-0.19,-0.462,-0.336],"0.1167":[-0.223,-0.458,-0.473],"0.1333":[-0.257,-0.453,-0.616],"0.15":[-0.294,-0.445,-0.752],"0.1667":[-0.328,-0.435,-0.889],"0.1833":[-0.354,-0.424,-1.025],"0.2":[-0.378,-0.411,-1.142],"0.2167":[-0.388,-0.396,-1.246],"0.2333":[-0.353,-0.38,-1.337],"0.25":[-0.198,-0.367,-1.409],"0.2667":[0.079,-0.344,-1.449],"0.2833":[0.419,-0.267,-1.465],"0.3":[0.674,-0.127,-0.904],"0.3167":[0.758,0.019,0.084],"0.3333":[0.824,0.159,0.706],"0.35":[0.873,0.262,-0.084],"0.3667":[0.913,0.344,-0.866],"0.3833":[0.954,0.407,-0.262],"0.4":[0.992,0.456,0.402],"0.4167":[1.017,0.498,0.462],"0.4333":[1.032,0.528,0.403],"0.45":[1.039,0.554,0.284],"0.4667":[1.031,0.577,0.174],"0.4833":[1.016,0.599,0.072],"0.5":[0.993,0.618,-0.004],"0.5167":[0.968,0.629,-0.039],"0.5333":[0.94,0.64,-0.047],"0.55":[0.907,0.647,-0.058],"0.5667":[0.88,0.655,-0.062],"0.5833":[0.847,0.663,-0.06],"0.6":[0.814,0.67,-0.054],"0.6167":[0.781,0.676,-0.045],"0.6333":[0.742,0.682,-0.032],"0.65":[0.709,0.687,-0.019],"0.6667":[0.676,0.691,-0.005],"0.6833":[0.643,0.694,0.007],"0.7":[0.603,0.696,0.016],"0.7167":[0.57,0.697,0.022],"0.7333":[0.55,0.697,0.024],"0.75":[0.531,0.697,0.024],"0.7667":[0.458,0.697,0.026],"0.7833":[0.313,0.696,0.028],"0.8":[0.095,0.695,0.032],"0.8167":[-0.169,0.694,0.035],"0.8333":[-0.474,0.693,0.039],"0.85":[-0.812,0.691,0.042],"0.8667":[-1.15,0.69,0.046],"0.8833":[-1.488,0.688,0.049],"0.9":[-1.815,0.686,0.052],"0.9167":[-2.12,0.684,0.055],"0.9333":[-2.316,0.682,0.056],"0.95":[-2.469,0.68,0.056],"0.9667":[-2.6,0.677,0.056],"0.9833":[-2.698,0.674,0.056],"1.0":[-2.774,0.67,0.056],"1.0167":[-2.839,0.665,0.056],"1.0333":[-2.883,0.659,0.056],"1.05":[-2.916,0.652,0.056],"1.0667":[-2.927,0.643,0.056],"1.0833":[-2.915,0.632,0.057],"1.1":[-2.892,0.619,0.055],"1.1167":[-2.858,0.606,0.056],"1.1333":[-2.801,0.589,0.057],"1.15":[-2.721,0.572,0.056],"1.1667":[-2.619,0.552,0.056],"1.1833":[-2.493,0.529,0.056],"1.2":[-2.323,0.502,0.055],"1.2167":[-2.083,0.485,0.057],"1.2333":[-1.799,0.462,0.056],"1.25":[-1.514,0.408,0.056],"1.2667":[-1.218,0.301,0.022],"1.2833":[-0.899,0.163,-0.066],"1.3":[-0.569,0.016,-0.18],"1.3167":[-0.273,-0.117,-0.294],"1.3333":[-0.044,-0.213,-0.382],"1.35":[0.083,-0.249,-0.418],"1.3667":[0.13,-0.228,-0.392],"1.3833":[0.148,-0.186,-0.34],"1.4":[0.148,-0.137,-0.28],"1.4167":[0.139,-0.087,-0.219],"1.4333":[0.12,-0.024,-0.15],"1.45":[0.092,0.032,-0.072],"1.4667":[0.059,0.095,-0.003],"1.4833":[0.026,0.145,0.057],"1.5":[-0.007,0.18,0.1],"1.5167":[-0.035,0.187,0.118],"1.5333":[-0.053,0.18,0.109],"1.55":[-0.077,0.166,0.1],"1.5667":[-0.091,0.138,0.083],"1.5833":[-0.11,0.11,0.074],"1.6":[-0.119,0.081,0.057],"1.6167":[-0.122,0.053,0.039],"1.6333":[-0.117,0.032,0.021],"1.65":[-0.107,0.008,0.003],"1.6667":[-0.097,-0.01,-0.018],"1.6833":[-0.087,-0.018,-0.032],"1.7":[-0.072,-0.018,-0.043],"1.7167":[-0.057,-0.018,-0.054],"1.7333":[-0.047,-0.016,-0.054],"1.75":[-0.032,-0.013,-0.054],"1.7667":[-0.017,-0.01,-0.05],"1.7833":[-0.002,-0.008,-0.043],"1.8":[0.008,-0.005,-0.036],"1.8167":[0.013,-0.002,-0.029],"1.8333":[0.013,0,-0.018],"1.85":[0.008,0.003,-0.011],"1.8667":[0.008,0.003,0],"1.8833":[0.008,0.005,0.008],"1.9":[0.004,0.005,0.013],"1.9167":[0.004,0.005,0.018],"1.9333":[-0.001,0.005,0.018],"1.9667":[-0.001,0.005,0.018],"1.9833":[-0.001,0.003,0.018],"2.0":[-0.001,0.003,0.013],"2.0167":[-0.001,0.003,0.013],"2.0333":[-0.001,0.003,0.008],"2.05":[-0.001,0.001,0.008],"2.0667":[-0.001,0.001,0.004],"2.1":[-0.001,0.001,0.004],"2.1167":[-0.001,-0.001,-0.001],"2.1333":[-0.001,-0.001,-0.001]}},"angel":{"scale":0}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_melee_2"},"0.75":{"effect":"melee.annihil.annihil_rotate_2"}}},"melee_3":{"loop":true,"animation_length":3.2917,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-5.285,16.501,-98.429],"0.0417":[7.221,17.884,-94.718],"0.0833":[13.674,12.401,-93.35],"0.125":[16.978,8.442,-93.027],"0.1667":[21.133,2.38,-93.136],"0.2083":[23.749,-1.57,-93.474],"0.25":[26.389,-5.619,-94.39],"0.2917":[27.682,-8.881,-91.387],"0.3333":[22.418,-6.71,-74.171],"0.375":[19.014,-4.286,-65.829],"0.4167":[19.016,-6.603,-67.972],"0.4583":[19.441,-7.5,-68.584],"0.5":[21.658,-9.484,-78.49],"0.5417":[26.856,-11.569,-99.301],"0.5833":[50.806,-4.626,-164.543],"0.625":[59.259,8.316,-209.585],"0.6667":[87.288,-7.166,-236.165],"0.7083":[78.273,-1.689,-241.813],"0.75":[84.182,-0.242,-245.395],"0.7917":[83.87,0.666,-244.757],"0.8333":[83.6,-1.02,-245.322],"0.875":[84.164,-4.925,-247.468],"0.9167":[85.626,-12.485,-251.809],"0.9583":[87.201,-18.071,-255.325],"1.0":[90.657,-26.243,-261.339],"1.0417":[93.659,-30.968,-265.649],"1.0833":[100.863,-34.917,-272.636],"1.125":[110.691,-25.665,-273.364],"1.1667":[124.3,-12.969,-273.135],"1.2083":[131.648,-8.715,-275.038],"1.25":[141.153,-2.882,-278.456],"1.2917":[146.654,1.638,-280.47],"1.3333":[154.144,8.696,-283.333],"1.375":[158.542,13.52,-284.892],"1.4167":[163.81,20.684,-286.386],"1.4583":[164.85,25.072,-287.128],"1.5":[165.524,31.171,-287.86],"1.5417":[165.8,34.787,-287.767],"1.5833":[166.099,37.925,-287.173],"1.625":[166.155,39.955,-286.651],"1.6667":[166.098,42.847,-285.75],"1.7083":[166.012,44.637,-285.104],"1.75":[165.886,47.055,-284.118],"1.7917":[165.854,48.455,-283.47],"1.8333":[165.969,50.179,-282.54],"1.875":[166.21,51.044,-281.954],"1.9167":[166.918,51.859,-281.129],"1.9583":[168.777,50.608,-280.858],"2.0":[176.465,37.761,-281.642],"2.0417":[174.136,26.271,-281.05],"2.0833":[171.027,16.034,-284.259],"2.125":[173.883,16.356,-287.429],"2.1667":[170.571,11.124,-285.99],"2.2083":[155.311,13.273,-270.826],"2.25":[134.016,25.649,-249.942],"2.2917":[130.759,33.92,-244.209],"2.3333":[147.133,46.848,-240.355],"2.375":[159.561,45.704,-230.129],"2.4167":[173.581,37.306,-219.177],"2.4583":[173.732,31.651,-225.684],"2.5":[171.977,18.856,-240.551],"2.5417":[170.472,13.721,-246.192],"2.5833":[169.3,9.012,-246.435],"2.625":[168.877,7.914,-243.257],"2.6667":[168.402,6.551,-239.704],"2.7083":[168.051,6.063,-238.119],"2.75":[167.362,6.228,-237.834],"2.7917":[167.028,6.544,-238.141],"2.8333":[167.118,7.061,-238.638],"2.875":[167.152,7.275,-239.297],"2.9167":[167.056,7.412,-240.581],"2.9583":[166.94,7.689,-241.019],"3.0":[166.76,8.148,-241.331],"3.0417":[166.729,8.323,-241.318],"3.0833":[166.674,8.335,-241.155],"3.125":[166.582,8.159,-241.014],"3.1667":[166.539,8.014,-240.879],"3.2083":[166.542,7.976,-240.823],"3.25":[166.51,7.97,-240.787],"3.2917":[166.498,7.971,-240.779]},"position":{"0.0":[-0.801,26.597,-5.958],"0.0417":[0.69,29.019,-7.366],"0.0833":[1.583,30.445,-3.46],"0.125":[2.071,31.214,-0.555],"0.1667":[2.724,32.249,3.887],"0.2083":[3.158,32.947,6.688],"0.25":[3.953,34.427,7.605],"0.2917":[4.376,35.764,0.496],"0.3333":[6.812,40.329,-17.81],"0.375":[7.097,40.499,-16.557],"0.4167":[7.155,40.167,-16.102],"0.4583":[7.087,40.006,-16.115],"0.5":[7.152,39.686,-16.141],"0.5417":[7.54,39.455,-15.963],"0.5833":[8.92,40.464,-14.959],"0.625":[9.426,41.526,-14.611],"0.6667":[11.103,42.959,-15.011],"0.7083":[14.08,39.82,-4.317],"0.75":[15.516,42.869,13.947],"0.7917":[15.339,43.065,14.113],"0.8333":[15.45,42.341,11.412],"0.875":[16.057,41.147,8.388],"0.9167":[17.311,38.81,2.514],"0.9583":[18.213,37.056,-1.916],"1.0":[19.39,34.42,-8.682],"1.0417":[19.894,32.825,-12.896],"1.0833":[18.058,31.233,-18.484],"1.125":[15.314,33.252,-19.538],"1.1667":[11.616,36.343,-19.433],"1.2083":[9.862,37.545,-18.84],"1.25":[7.936,38.773,-17.837],"1.2917":[7.139,39.256,-17.358],"1.3333":[6.341,39.682,-16.686],"1.375":[5.94,39.868,-16.271],"1.4167":[5.361,40.136,-15.724],"1.4583":[5.176,40.174,-15.511],"1.5":[4.995,40.177,-15.247],"1.5417":[4.934,40.152,-15.108],"1.5833":[4.924,40.064,-14.958],"1.625":[4.922,40.022,-14.87],"1.6667":[4.931,39.968,-14.749],"1.7083":[4.944,39.928,-14.675],"1.75":[4.98,39.845,-14.568],"1.7917":[5.015,39.765,-14.497],"1.8333":[5.086,39.593,-14.385],"1.875":[5.146,39.435,-14.302],"1.9167":[5.258,39.121,-14.156],"1.9583":[5.413,38.734,-13.93],"2.0":[6.202,36.463,-13.276],"2.0417":[7.148,32.508,-13.246],"2.0833":[9.619,28.466,-11.558],"2.125":[10.761,29.353,-10.931],"2.1667":[12.224,30.133,-10.045],"2.2083":[13.763,32.001,-8.891],"2.25":[15.737,34.871,-7.215],"2.2917":[16.117,36.361,-6.789],"2.3333":[13.839,38.393,-7.718],"2.375":[11.725,39.19,-8.051],"2.4167":[8.067,40.014,-8.545],"2.4583":[5.784,40.108,-9.043],"2.5":[3.942,39.748,-9.321],"2.5417":[3.962,39.468,-9.221],"2.5833":[4.425,39.242,-9.218],"2.625":[4.823,39.285,-9.303],"2.6667":[4.976,39.439,-9.419],"2.7083":[4.989,39.551,-9.481],"2.75":[4.905,39.656,-9.533],"2.7917":[4.821,39.693,-9.556],"2.8333":[4.71,39.676,-9.573],"2.875":[4.644,39.641,-9.573],"2.9167":[4.569,39.573,-9.559],"2.9583":[4.553,39.546,-9.547],"3.0":[4.549,39.52,-9.528],"3.0417":[4.551,39.51,-9.52],"3.0833":[4.559,39.507,-9.515],"3.125":[4.563,39.511,-9.517],"3.1667":[4.566,39.517,-9.52],"3.2083":[4.566,39.521,-9.523],"3.25":[4.564,39.524,-9.526],"3.2917":[4.562,39.525,-9.527]}},"righthand":{"rotation":{"0.0":[20.956,35.653,-76.775],"0.0417":[20.956,35.653,-76.775],"0.0833":[50.222,-19.173,-61.388],"0.125":[108.798,-58.362,-108.715],"0.1667":[77.778,-56.883,-81.142],"0.2083":[64.383,-57.393,-75.948],"0.25":[94.296,-67.044,-119.464],"0.2917":[119.45,-56.987,-156.058],"0.3333":[100.164,-51.178,-136.989],"0.375":[93.141,-48.998,-123.671],"0.4167":[101.723,-54.088,-128.061],"0.4583":[102.366,-54.158,-130.202],"0.5":[108.321,-49.199,-148.312],"0.5417":[104.576,-33.455,-169.9],"0.5833":[82.754,-0.591,-217.604],"0.625":[68.062,8.505,-256.608],"0.6667":[74.056,9.983,-259.068],"0.7083":[60.612,10.843,-269.15],"0.75":[43.027,7.189,-259.67],"0.7917":[42.296,7.41,-259.063],"0.8333":[41.579,7.709,-258.556],"0.875":[41.359,11.392,-256.168],"0.9167":[44.344,26.35,-245.258],"0.9583":[52.217,38.205,-232.21],"1.0":[79.048,47.664,-203.153],"1.0417":[99.219,45.758,-187.604],"1.0833":[107.066,48.174,-171.139],"1.125":[108.178,47.561,-170.506],"1.1667":[108.987,47.059,-172.638],"1.2083":[108.58,48.064,-175.056],"1.25":[104.598,51.617,-183.438],"1.2917":[99.729,54.529,-191.742],"1.3333":[90.248,58.435,-206.123],"1.375":[84.213,60.42,-214.812],"1.4167":[81.138,61.218,-220.385],"1.4583":[82.738,60.024,-219.766],"1.5":[89.579,58.953,-216.205],"1.5417":[89.021,57.829,-219.722],"1.5833":[88.297,55.873,-224.109],"1.625":[87.791,55.251,-225.469],"1.6667":[86.564,54.564,-227.243],"1.7083":[84.556,54.679,-229.803],"1.75":[81.507,55.1,-233.639],"1.7917":[79.712,55.416,-235.93],"1.8333":[77.486,55.855,-238.976],"1.875":[73.882,57.14,-243.744],"1.9167":[63.93,59.754,-257.022],"1.9583":[54.921,61.008,-269.696],"2.0":[48.879,57.325,-284.242],"2.0417":[52.641,54.52,-285.559],"2.0833":[83.342,43.568,-270.449],"2.125":[108.549,41.081,-267.554],"2.1667":[130.018,34.226,-268.902],"2.2083":[167.625,12.179,-247.614],"2.25":[171.85,-54.77,-199.491],"2.2917":[130.833,-65.202,-144.355],"2.3333":[114.611,-47.222,-124.863],"2.375":[110.438,-35.866,-121.656],"2.4167":[125.725,-21.808,-109.83],"2.4583":[135.272,-11.32,-96.428],"2.5":[141.289,-18.295,-96.44],"2.5417":[139.604,-15.818,-95.215],"2.5833":[134.343,-28.409,-96.032],"2.625":[134.009,-33.945,-95.449],"2.6667":[137.574,-38.452,-97.61],"2.7083":[139.058,-38.904,-97.48],"2.75":[140.358,-38.135,-96.131],"2.7917":[140.616,-37.369,-95.862],"2.8333":[140.304,-36.626,-95.023],"2.875":[140.092,-36.191,-94.621],"2.9167":[139.764,-35.913,-94.364],"2.9583":[139.673,-35.947,-94.411],"3.0":[139.512,-36.016,-94.373],"3.0417":[139.387,-36.056,-94.298],"3.0833":[139.307,-36.13,-94.226],"3.125":[139.293,-36.182,-94.198],"3.1667":[139.296,-36.269,-94.196],"3.2083":[139.305,-36.329,-94.205],"3.25":[139.322,-36.429,-94.22],"3.2917":[139.326,-36.44,-94.223]},"position":{"0.0":[-25.014,36.733,2.476],"0.0417":[-25.014,36.733,2.476],"0.0833":[-17.875,36.717,0.002],"0.125":[-15.749,36.738,-1.929],"0.1667":[-12.098,37.603,3.137],"0.2083":[-11.322,37.129,5.342],"0.25":[-10.396,36.52,3.846],"0.2917":[-9.716,34.634,4.609],"0.3333":[-7.205,39.537,-13.651],"0.375":[-6.856,40.035,-12.291],"0.4167":[-6.903,39.48,-11.878],"0.4583":[-6.94,39.154,-11.924],"0.5":[-7.195,38.844,-12.096],"0.5417":[-7.698,38.386,-12.146],"0.5833":[-5.846,36.977,-11.507],"0.625":[-3.961,38.573,-11.584],"0.6667":[-2.489,39.783,-10.619],"0.7083":[-0.347,36.844,-0.394],"0.75":[-2.183,33.805,17.891],"0.7917":[-1.343,34.415,19.55],"0.8333":[-0.917,33.916,17.62],"0.875":[-2.455,31.166,11.485],"0.9167":[-5.929,25.35,-1.559],"0.9583":[-8.391,22.377,-9.093],"1.0":[-11.613,22.696,-12.709],"1.0417":[-13.675,25.817,-10.699],"1.0833":[-15.726,31.326,-7.032],"1.125":[-13.864,32.368,-7.2],"1.1667":[-10.949,33.434,-7.957],"1.2083":[-9.95,34.39,-8.414],"1.25":[-9.094,36.019,-9.089],"1.2917":[-8.729,37.143,-9.55],"1.3333":[-8.319,38.809,-10.232],"1.375":[-8.038,39.862,-10.667],"1.4167":[-7.599,41.131,-11.219],"1.4583":[-7.442,41.645,-11.466],"1.5":[-7.342,42.071,-11.672],"1.5417":[-7.311,42.292,-11.785],"1.5833":[-7.29,42.563,-11.94],"1.625":[-7.298,42.724,-12.032],"1.6667":[-7.324,42.967,-12.174],"1.7083":[-7.358,43.148,-12.294],"1.75":[-7.418,43.417,-12.475],"1.7917":[-7.466,43.61,-12.612],"1.8333":[-7.556,43.96,-12.884],"1.875":[-7.627,44.268,-13.12],"1.9167":[-7.817,44.917,-13.754],"1.9583":[-8.087,45.66,-14.727],"2.0":[-8.998,46.597,-16.892],"2.0417":[-9.938,46.789,-18.284],"2.0833":[-11.542,46.026,-19.096],"2.125":[-12.444,44.805,-18.326],"2.1667":[-13.358,43.32,-16.918],"2.2083":[-14.46,42.821,-15.624],"2.25":[-15.675,43.799,-14.509],"2.2917":[-15.177,44.795,-14.954],"2.3333":[-13.189,45.621,-15.645],"2.375":[-10.841,45.098,-16.332],"2.4167":[-5.303,41.969,-16.802],"2.4583":[-1.953,39.378,-16.119],"2.5":[-2.061,37.877,-13.743],"2.5417":[-2.776,37.97,-13.511],"2.5833":[-3.148,38.452,-14.427],"2.625":[-3.146,38.893,-14.735],"2.6667":[-3.012,39.445,-14.806],"2.7083":[-2.932,39.576,-14.772],"2.75":[-2.868,39.577,-14.717],"2.7917":[-2.851,39.529,-14.694],"2.8333":[-2.863,39.473,-14.691],"2.875":[-2.881,39.452,-14.693],"2.9167":[-2.903,39.439,-14.702],"2.9583":[-2.91,39.441,-14.707],"3.0":[-2.913,39.448,-14.711],"3.0417":[-2.914,39.452,-14.713],"3.0833":[-2.911,39.456,-14.712],"3.125":[-2.909,39.458,-14.711],"3.1667":[-2.906,39.459,-14.709],"3.2083":[-2.904,39.459,-14.709],"3.25":[-2.904,39.457,-14.709],"3.2917":[-2.903,39.457,-14.709]}},"annihil":{"rotation":{"0.0":[-118.74,15.225,-100.367],"0.0417":[-105.16,10.633,-100.268],"0.0833":[-98.324,5.835,-99.608],"0.125":[-94.641,2.288,-99.622],"0.1667":[-89.811,-3.2,-100.155],"0.2083":[-86.709,-6.778,-100.783],"0.25":[-83.53,-10.475,-102.001],"0.2917":[-81.779,-13.586,-99.197],"0.3333":[-87.368,-12.711,-81.468],"0.375":[-91.108,-10.624,-72.696],"0.4167":[-90.822,-12.713,-74.907],"0.4583":[-90.281,-13.411,-75.594],"0.5":[-87.429,-14.978,-85.784],"0.5417":[-82.239,-16.388,-107.142],"0.5833":[-70.682,-6.518,-175.224],"0.625":[-72.392,5.904,-228.913],"0.6667":[-76.787,9.864,-257.294],"0.7083":[-89.74,11.628,-266.153],"0.75":[-104.736,9.458,-252.224],"0.7917":[-102.214,11.251,-246.113],"0.8333":[-100.533,0.528,-242.274],"0.875":[-100.27,-15.152,-242.697],"0.9167":[-93.083,-36.255,-245.058],"0.9583":[-79.065,-47.825,-255.838],"1.0":[-39.725,-51.141,-298.568],"1.0417":[-22.587,-42.017,-328.268],"1.0833":[-5.722,-38.755,-350.891],"1.125":[1.982,-34.563,-360.597],"1.1667":[6.958,-32.926,-358.353],"1.2083":[9.582,-34.297,-354.918],"1.25":[14.239,-37.454,-360.717],"1.2917":[17.738,-41.493,-367.734],"1.3333":[25.665,-48.173,-380.228],"1.375":[31.335,-52.098,-388.401],"1.4167":[36.575,-55.219,-395.888],"1.4583":[38.082,-55.312,-397.643],"1.5":[37.767,-55.826,-397.467],"1.5417":[39.64,-56.256,-400.148],"1.5833":[44.843,-56.939,-406.742],"1.625":[46.659,-57.013,-409.462],"1.6667":[48.188,-56.661,-411.888],"1.7083":[49.467,-56.21,-413.587],"1.75":[50.574,-55.384,-415.089],"1.7917":[51.3,-55.078,-416.086],"1.8333":[53.992,-55.767,-419.698],"1.875":[59.405,-57.745,-426.599],"1.9167":[70,-60.131,-440.536],"1.9583":[67.819,-59.084,-440.27],"2.0":[69.852,-54.938,-449.069],"2.0417":[67.556,-51.305,-453.993],"2.0833":[39.026,-37.732,-448.385],"2.125":[10.728,-36.379,-448.326],"2.1667":[-40.713,-28.782,-439.049],"2.2083":[-73.56,-0.487,-427.038],"2.25":[-74.526,61.111,-407.808],"2.2917":[-50.428,81.475,-371.588],"2.3333":[24.964,71.021,-282.282],"2.375":[14.911,50.052,-279.046],"2.4167":[-1.966,15.753,-273.089],"2.4583":[-12.967,13.61,-266.993],"2.5":[-18.357,24.282,-273.227],"2.5417":[-16.763,21.716,-271.873],"2.5833":[-10.306,33.957,-271.648],"2.625":[-9.4,39.453,-270.697],"2.6667":[-12.755,44.177,-272.989],"2.7083":[-14.322,44.723,-273.028],"2.75":[-15.82,44.028,-271.918],"2.7917":[-16.176,43.281,-271.734],"2.8333":[-15.913,42.522,-270.907],"2.875":[-15.723,42.075,-270.503],"2.9167":[-15.392,41.776,-270.214],"2.9583":[-15.293,41.806,-270.251],"3.0":[-15.111,41.867,-270.185],"3.0417":[-14.979,41.901,-270.099],"3.0833":[-14.879,41.971,-270.004],"3.125":[-14.861,42.021,-269.971],"3.1667":[-14.855,42.107,-269.967],"3.2083":[-14.855,42.167,-269.967],"3.25":[-14.867,42.267,-269.98],"3.2917":[-14.873,42.277,-269.984]},"position":{"0.0":[-11.31,43.82,-4.771],"0.0417":[-7.493,41.872,-8.055],"0.0833":[-6.553,43.335,-4.3],"0.125":[-6.032,44.141,-1.451],"0.1667":[-5.335,45.233,2.939],"0.2083":[-4.875,45.967,5.716],"0.25":[-4.071,47.468,6.61],"0.2917":[-3.604,48.945,-0.497],"0.3333":[-1.026,54.006,-18.729],"0.375":[-0.573,54.424,-17.38],"0.4167":[-0.589,54.071,-16.87],"0.4583":[-0.683,53.911,-16.861],"0.5":[-0.885,53.276,-16.85],"0.5417":[-0.812,52.249,-16.699],"0.5833":[1.321,51.534,-16.801],"0.625":[2.903,52.429,-16.698],"0.6667":[3.749,53.535,-15.104],"0.7083":[6.653,50.591,-4.753],"0.75":[6.2,46.067,13.28],"0.7917":[7.025,45.714,14.157],"0.8333":[7.929,45.28,12.454],"0.875":[7.201,44.065,7.424],"0.9167":[5.264,40.381,-3.794],"0.9583":[3.593,37.804,-10.282],"1.0":[0.034,37.638,-13.52],"1.0417":[-3.428,40.404,-11.758],"1.0833":[-7.484,44.185,-8.319],"1.125":[-6.401,44.867,-8.612],"1.1667":[-3.075,46.506,-9.175],"1.2083":[-1.601,47.938,-9.422],"1.25":[-0.745,49.926,-9.969],"1.2917":[-0.466,51.216,-10.413],"1.3333":[-0.157,53.061,-11.077],"1.375":[0.072,54.203,-11.485],"1.4167":[0.434,55.525,-12.031],"1.4583":[0.543,56.055,-12.328],"1.5":[0.57,56.689,-12.511],"1.5417":[0.532,57.035,-12.637],"1.5833":[0.462,57.392,-12.911],"1.625":[0.406,57.571,-13.037],"1.6667":[0.334,57.831,-13.218],"1.7083":[0.267,58.038,-13.349],"1.75":[0.164,58.354,-13.531],"1.7917":[0.091,58.57,-13.661],"1.8333":[-0.034,58.925,-13.901],"1.875":[-0.155,59.245,-14.048],"1.9167":[-0.519,59.975,-14.484],"1.9583":[-1.015,60.852,-15.344],"2.0":[-2.39,61.927,-17.637],"2.0417":[-3.676,62.075,-19.27],"2.0833":[-6.407,60.968,-20.862],"2.125":[-8.345,59.574,-19.63],"2.1667":[-9.708,57.949,-17.783],"2.2083":[-10.443,57.714,-15.719],"2.25":[-10.044,59.437,-15.7],"2.2917":[-8.674,60.655,-17.407],"2.3333":[-4.692,60.485,-19.938],"2.375":[-1.645,58.689,-20.386],"2.4167":[3.039,54.575,-19.061],"2.4583":[6.143,51.436,-17.976],"2.5":[6.265,49.925,-15.525],"2.5417":[5.512,49.92,-15.34],"2.5833":[4.963,50.86,-16.493],"2.625":[4.939,51.453,-16.801],"2.6667":[5.143,52.152,-16.748],"2.7083":[5.263,52.257,-16.668],"2.75":[5.375,52.159,-16.576],"2.7917":[5.402,52.073,-16.546],"2.8333":[5.388,51.972,-16.554],"2.875":[5.369,51.925,-16.563],"2.9167":[5.34,51.902,-16.585],"2.9583":[5.33,51.91,-16.591],"3.0":[5.325,51.921,-16.602],"3.0417":[5.321,51.925,-16.607],"3.0833":[5.323,51.93,-16.607],"3.125":[5.324,51.933,-16.607],"3.1667":[5.328,51.936,-16.604],"3.2083":[5.329,51.936,-16.604],"3.25":[5.33,51.939,-16.604],"3.2917":[5.33,51.939,-16.604]}},"lefthand_1":{"rotation":{"0.0":[0,0,0],"0.625":[20.5764,-9.3073,23.307],"0.9583":[20.5764,-9.3073,23.307],"1.1667":[0,0,0],"1.4583":[-12.5,0,0],"2.125":[-12.5,0,0],"2.4583":[0,0,0]},"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"2.0":[0,0,0],"2.2083":[-30,0,0],"2.7083":[0,0,0]},"position":{"0.0":[0,2.5,0],"2.0":[0,2.5,0]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.843,0.672,-0.057],"0.0417":[0.843,0.667,-0.03],"0.0833":[0.847,0.639,0.044],"0.125":[0.851,0.611,0.111],"0.1667":[0.855,0.557,0.211],"0.2083":[0.856,0.513,0.271],"0.25":[0.657,0.334,0.33],"0.2917":[0.317,0.136,0.345],"0.3333":[-0.335,-0.104,-1.728],"0.375":[-0.58,-0.14,1.756],"0.4167":[-0.097,-0.063,-1.163],"0.4583":[0.031,0.076,-0.467],"0.5":[0.225,0.145,0.27],"0.5417":[0.395,0.04,0.474],"0.5833":[0.451,-0.227,0.733],"0.625":[0.121,-0.412,0.855],"0.6667":[-0.488,-0.605,0.944],"0.7083":[-0.184,-0.652,0.806],"0.75":[0.57,-0.664,-0.44],"0.7917":[0.656,-0.639,-0.771],"0.8333":[0.724,-0.571,-0.013],"0.875":[0.757,-0.5,0.215],"0.9167":[0.779,-0.363,0.291],"0.9583":[0.788,-0.262,0.26],"1.0":[0.81,-0.114,0.136],"1.0417":[0.836,-0.05,0.05],"1.0833":[0.914,-0.003,-0.021],"1.125":[1.02,-0.002,-0.019],"1.1667":[1.293,-0.002,-0.019],"1.2083":[1.486,-0.002,-0.019],"1.25":[1.727,-0.002,-0.019],"1.2917":[1.831,-0.002,-0.019],"1.3333":[1.952,0,-0.019],"1.375":[2,0.002,-0.019],"1.4167":[2.043,0.005,-0.019],"1.4583":[2.032,0.008,-0.019],"1.5":[1.964,0.013,-0.019],"1.5417":[1.885,0.017,-0.019],"1.5833":[1.726,0.023,-0.019],"1.625":[1.59,0.027,-0.019],"1.6667":[1.341,0.033,-0.019],"1.7083":[1.155,0.038,-0.019],"1.75":[0.814,0.044,-0.016],"1.7917":[0.544,0.048,-0.01],"1.8333":[0.131,0.054,0.007],"1.875":[-0.132,0.058,0.026],"1.9167":[-0.48,0.062,0.068],"1.9583":[-0.58,0.061,0.108],"2.0":[-0.484,-0.01,0.251],"2.0417":[-0.382,-0.122,0.376],"2.0833":[-0.242,-0.29,0.518],"2.125":[-0.258,-0.378,0.51],"2.1667":[-0.493,-0.434,0.244],"2.2083":[-0.676,-0.411,0.004],"2.25":[-0.848,-0.335,-0.264],"2.2917":[-0.769,-0.276,-0.337],"2.3333":[-0.459,-0.183,-0.397],"2.375":[-0.221,-0.115,-0.414],"2.4167":[0.08,-0.017,-0.417],"2.4583":[0.143,0.042,-0.336],"2.5":[0.123,0.119,-0.168],"2.5417":[0.075,0.157,-0.037],"2.5833":[-0.01,0.189,0.106],"2.625":[-0.048,0.184,0.106],"2.6667":[-0.096,0.124,0.082],"2.7083":[-0.115,0.075,0.058],"2.75":[-0.108,0.008,0.002],"2.7917":[-0.084,-0.019,-0.032],"2.8333":[-0.046,-0.016,-0.056],"2.875":[-0.023,-0.011,-0.051],"2.9167":[0.011,-0.004,-0.032],"2.9583":[0.011,0,-0.022],"3.0":[0.006,0.004,0.002],"3.0417":[0.006,0.006,0.016],"3.0833":[0.001,0.004,0.022],"3.125":[-0.004,0.004,0.016],"3.1667":[0.001,0.002,0.011],"3.2083":[0.001,0,0.005],"3.25":[0.001,0,-0.001],"3.2917":[0.001,0,-0.001]}},"angel":{"scale":0}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_melee_3"},"1.0417":{"effect":"melee.annihil.annihil_rotate_3"}}},"draw":{"loop":true,"animation_length":0.9167,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[67.403,6.754,167.736],"0.0417":[67.579,6.671,167.653],"0.0833":[68.131,6.414,167.398],"0.125":[69.305,5.886,166.858],"0.1667":[72.16,4.803,165.599],"0.2083":[77.911,1.158,162.218],"0.25":[125.602,-12.14,134.432],"0.2917":[152.74,-0.82,127.797],"0.3333":[160.724,17.771,125.845],"0.375":[167.809,15.82,127.755],"0.4167":[170.341,6.518,127.349],"0.4583":[171.451,8.132,121.091],"0.5":[171.615,7.758,117.555],"0.5417":[171.46,7.478,115.395],"0.5833":[170.946,7.178,115.085],"0.625":[169.931,7.173,116.278],"0.6667":[168.276,7.441,118.187],"0.7083":[167.249,7.677,118.943],"0.75":[166.789,7.773,119.052],"0.7917":[166.668,7.844,119.088],"0.8333":[166.578,7.907,119.132],"0.875":[166.506,7.962,119.201],"0.9167":[166.497,7.97,119.22]},"position":{"0.0":[17.261,24.819,-1.241],"0.0417":[17.281,24.841,-1.279],"0.0833":[17.306,24.907,-1.398],"0.125":[17.332,25.049,-1.649],"0.1667":[17.358,25.384,-2.265],"0.2083":[17.341,26.125,-3.2],"0.25":[16.714,31.519,-6.974],"0.2917":[15.386,35.235,-9.125],"0.3333":[13.046,37.799,-10.014],"0.375":[9.095,39.157,-10.077],"0.4167":[5.926,39.244,-9.776],"0.4583":[4.143,39.094,-9.411],"0.5":[4.08,39.005,-9.331],"0.5417":[4.156,38.984,-9.307],"0.5833":[4.294,39.093,-9.346],"0.625":[4.391,39.206,-9.381],"0.6667":[4.504,39.356,-9.428],"0.7083":[4.551,39.453,-9.462],"0.75":[4.566,39.511,-9.498],"0.7917":[4.566,39.52,-9.511],"0.8333":[4.565,39.523,-9.519],"0.875":[4.563,39.525,-9.525],"0.9167":[4.562,39.525,-9.527]}},"righthand":{"rotation":{"0.0":[109.477,10.999,91.504],"0.0417":[52.54,22.057,84.124],"0.0833":[65.235,-22.68,82.298],"0.125":[69.462,-6.293,112.634],"0.1667":[81.112,-5.251,132.189],"0.2083":[106.239,-19.601,193.008],"0.25":[125.642,-27.147,202.836],"0.2917":[129.61,-19.702,187.751],"0.3333":[115.459,-7.833,190.936],"0.375":[130.544,-40.445,272.631],"0.4167":[147.517,-38.468,263.58],"0.4583":[151.393,-31.565,260.231],"0.5":[149.057,-28.619,260.216],"0.5417":[145.982,-27.891,261.156],"0.5833":[142.149,-29.184,262.91],"0.625":[139.634,-31.176,264.322],"0.6667":[138.948,-33.562,264.832],"0.7083":[138.886,-34.712,264.96],"0.75":[138.887,-35.993,265.236],"0.7917":[138.993,-36.267,265.505],"0.8333":[139.126,-36.327,265.694],"0.875":[139.287,-36.419,265.762],"0.9167":[139.327,-36.44,265.776]},"position":{"0.0":[-11.952,27.736,-10.063],"0.0417":[-15.147,29.025,-11.131],"0.0833":[-19.803,29.212,-13.114],"0.125":[-20.363,28.257,-11.008],"0.1667":[-20.468,28.883,-6.499],"0.2083":[-21.099,33.342,-6.094],"0.25":[-22.209,40.397,-7.885],"0.2917":[-20.145,44.834,-13.45],"0.3333":[-12.934,47.301,-18.493],"0.375":[-1.751,40.663,-15.465],"0.4167":[-1.108,38.047,-14.354],"0.4583":[-2.418,37.484,-14.246],"0.5":[-2.953,37.94,-14.425],"0.5417":[-3.123,38.438,-14.562],"0.5833":[-3.061,38.888,-14.678],"0.625":[-2.906,39.148,-14.73],"0.6667":[-2.85,39.269,-14.732],"0.7083":[-2.846,39.336,-14.73],"0.75":[-2.853,39.409,-14.725],"0.7917":[-2.868,39.437,-14.718],"0.8333":[-2.884,39.45,-14.712],"0.875":[-2.899,39.456,-14.709],"0.9167":[-2.903,39.457,-14.708]}},"annihil":{"rotation":{"0.0":[88.77,-144.683,1.399],"0.0417":[28.585,-129.419,9.197],"0.0833":[-38.461,-114.488,3.162],"0.125":[-82.696,-103.541,-17.163],"0.1667":[22.003,-94.51,-200.569],"0.2083":[10.282,-100.374,-237.228],"0.25":[-122.793,-99.106,-162.605],"0.2917":[-164.258,-127.105,-155.117],"0.3333":[-172.87,-147.445,-176.462],"0.375":[-184.86,-225.67,-81.637],"0.4167":[-203.564,-224.794,-93.181],"0.4583":[-208.313,-217.979,-97.456],"0.5":[-205.942,-214.951,-97.228],"0.5417":[-202.701,-214.093,-95.906],"0.5833":[-198.53,-215.196,-93.612],"0.625":[-195.686,-217.046,-91.787],"0.6667":[-194.738,-219.384,-91.058],"0.7083":[-194.562,-220.528,-90.854],"0.75":[-194.439,-221.803,-90.496],"0.7917":[-194.524,-222.086,-90.22],"0.8333":[-194.663,-222.152,-90.044],"0.875":[-194.828,-222.254,-89.994],"0.9167":[-194.87,-222.275,-89.985]},"position":{"0.0":[17.753,46.024,-6.623],"0.0417":[14.475,56.696,-13.933],"0.0833":[4.899,60.838,-19.837],"0.125":[-1.047,56.962,-20.991],"0.1667":[1.692,53.364,-19.999],"0.2083":[4.304,55.724,-20.31],"0.25":[2.514,61.004,-21.613],"0.2917":[-1.494,63.127,-21.676],"0.3333":[-5.423,63.059,-21.241],"0.375":[6.281,53.211,-17.596],"0.4167":[7.29,50.498,-15.994],"0.4583":[6.079,49.826,-15.718],"0.5":[5.506,50.266,-15.972],"0.5417":[5.276,50.76,-16.22],"0.5833":[5.249,51.233,-16.478],"0.625":[5.34,51.534,-16.62],"0.6667":[5.375,51.715,-16.644],"0.7083":[5.376,51.807,-16.641],"0.75":[5.368,51.909,-16.635],"0.7917":[5.356,51.933,-16.623],"0.8333":[5.344,51.933,-16.613],"0.875":[5.333,51.939,-16.604],"0.9167":[5.33,51.939,-16.604]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.001,-0.002,0.001],"0.0417":[0.015,-0.028,0.009],"0.0833":[0.026,-0.032,0.019],"0.125":[0.032,-0.013,0.033],"0.1667":[-0.028,0.017,0.054],"0.2083":[-0.137,0.035,0.075],"0.25":[-0.115,0.046,0.115],"0.2917":[0.056,0.05,0.159],"0.3333":[0.161,0.035,0.291],"0.375":[0.167,-0.02,0.521],"0.4167":[0.111,-0.064,0.423],"0.4583":[0.017,-0.077,-0.229],"0.5":[-0.013,-0.069,0.067],"0.5417":[-0.03,-0.055,0.374],"0.5833":[-0.038,-0.03,0.257],"0.625":[-0.035,-0.011,0.067],"0.6667":[-0.025,0.005,-0.049],"0.7083":[-0.017,0.009,-0.058],"0.75":[-0.007,0.011,-0.026],"0.7917":[-0.003,0.009,-0.004],"0.8333":[-0.003,0.005,0.018],"0.875":[0,0,0.007],"0.9167":[0,0,-0.004]}},"angel":{"scale":0}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_draw"}}},"draw_1":{"loop":true,"animation_length":1.1,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[69.849,5.65,166.608],"0.0417":[71.702,6.056,166.037],"0.0833":[116.419,-12.166,136.484],"0.125":[144.793,-6.698,128.609],"0.1667":[112.354,-12.472,138.191],"0.2083":[78.496,-2.065,161.25],"0.25":[88.936,-5.789,153.155],"0.2917":[144.623,0.953,128.816],"0.3333":[156.019,16.049,126.1],"0.375":[162.059,22.051,125.72],"0.4167":[167.424,15.285,127.705],"0.4583":[169.612,7.374,126.561],"0.5":[169.192,8.183,121.879],"0.5417":[168.795,7.889,118.658],"0.5833":[168.372,7.49,118.148],"0.625":[168.006,7.428,118.388],"0.6667":[167.687,7.449,118.794],"0.7083":[167.439,7.49,119.042],"0.75":[167.242,7.564,119.201],"0.7917":[167.07,7.652,119.254],"0.8333":[166.913,7.739,119.252],"0.875":[166.782,7.811,119.24],"0.9167":[166.689,7.863,119.233],"0.9583":[166.616,7.903,119.229],"1.0":[166.561,7.935,119.225],"1.0417":[166.527,7.954,119.222],"1.0833":[166.517,7.96,119.22]},"position":{"0.0":[17.34,25.298,-1.765],"0.0417":[17.347,25.854,-2.33],"0.0833":[17.249,28.258,-6.275],"0.125":[17.159,29.226,-8.393],"0.1667":[17.257,25.719,-5.879],"0.2083":[17.076,21.879,-3.076],"0.25":[17.351,22.071,-4.047],"0.2917":[17.114,27.205,-8.954],"0.3333":[15.983,33.287,-10.031],"0.375":[13.966,37.046,-10.161],"0.4167":[9.669,39.38,-10.061],"0.4583":[5.931,39.852,-9.731],"0.5":[4.531,39.685,-9.558],"0.5417":[4.275,39.493,-9.483],"0.5833":[4.358,39.401,-9.473],"0.625":[4.447,39.415,-9.479],"0.6667":[4.525,39.444,-9.489],"0.7083":[4.571,39.471,-9.496],"0.75":[4.593,39.5,-9.505],"0.7917":[4.595,39.517,-9.511],"0.8333":[4.584,39.523,-9.517],"0.875":[4.57,39.525,-9.522],"0.9167":[4.564,39.525,-9.524],"0.9583":[4.561,39.525,-9.525],"1.0":[4.56,39.525,-9.526],"1.0417":[4.559,39.524,-9.526],"1.0833":[4.558,39.524,-9.526]}},"righthand":{"rotation":{"0.0":[93.851,8.177,101.221],"0.0417":[88.424,11.117,122.732],"0.0833":[92.582,13.491,128.861],"0.125":[84.518,36.479,81.862],"0.1667":[90.943,5.459,102.419],"0.2083":[97.697,-3.456,125.202],"0.25":[89.464,11.747,134.056],"0.2917":[88.478,22.451,122.177],"0.3333":[105.185,-3.376,140.749],"0.375":[110.201,-24.61,216.14],"0.4167":[117.495,-47.856,276.604],"0.4583":[155.818,-33.055,263.791],"0.5":[152.829,-25.659,258.743],"0.5417":[145.525,-26.126,259.079],"0.5833":[141.076,-28.13,260.478],"0.625":[139.92,-29.781,261.177],"0.6667":[139.396,-31.304,261.98],"0.7083":[139.268,-32.579,262.771],"0.75":[139.141,-33.59,263.453],"0.7917":[138.99,-34.607,264.162],"0.8333":[138.878,-35.518,264.79],"0.875":[138.868,-36.207,265.224],"0.9167":[139.009,-36.561,265.391],"0.9583":[139.146,-36.58,265.591],"1.0":[139.24,-36.478,265.765],"1.0417":[139.298,-36.449,265.778],"1.0833":[139.303,-36.441,265.788]},"position":{"0.0":[-12.76,25.305,-11.144],"0.0417":[-12.008,23.383,-12.216],"0.0833":[-12.951,27.395,-12.188],"0.125":[-11.974,33.727,-12.671],"0.1667":[-9.88,38.22,-13.726],"0.2083":[-7.564,39.865,-13.911],"0.25":[-8.606,38.642,-14.016],"0.2917":[-12.976,39.042,-14.366],"0.3333":[-14.269,42.458,-15.508],"0.375":[-11.192,45.469,-16.494],"0.4167":[-6.713,42.888,-16.227],"0.4583":[-4.495,39.26,-15.551],"0.5":[-3.186,38.622,-15.032],"0.5417":[-2.575,38.98,-14.797],"0.5833":[-2.524,39.319,-14.714],"0.625":[-2.624,39.467,-14.689],"0.6667":[-2.729,39.521,-14.681],"0.7083":[-2.831,39.527,-14.681],"0.75":[-2.911,39.502,-14.696],"0.7917":[-2.941,39.471,-14.706],"0.8333":[-2.946,39.445,-14.714],"0.875":[-2.939,39.438,-14.716],"0.9167":[-2.927,39.439,-14.716],"0.9583":[-2.916,39.445,-14.716],"1.0":[-2.91,39.451,-14.715],"1.0417":[-2.908,39.455,-14.713],"1.0833":[-2.909,39.457,-14.71]}},"annihil":{"rotation":{"0.0":[20.206,-4.116,283.047],"0.0417":[-11.707,-11.377,199.857],"0.0833":[-33.609,-27.698,268.369],"0.125":[-39.393,-9.682,320.972],"0.1667":[-34.084,3.191,381.381],"0.2083":[-13.008,-3.06,458.293],"0.25":[-3.561,-5.309,542.741],"0.2917":[-18.815,1.81,626.974],"0.3333":[-15.026,-21.843,684.612],"0.375":[10.388,30.397,763.538],"0.4167":[10.627,51.895,824.909],"0.4583":[-33.723,40.072,804.894],"0.5":[-30.11,32.13,800.72],"0.5417":[-22.32,32.293,802.018],"0.5833":[-17.464,34.09,804.051],"0.625":[-16.107,35.675,804.967],"0.6667":[-15.418,37.161,805.912],"0.7083":[-15.171,38.428,806.788],"0.75":[-14.942,39.43,807.544],"0.7917":[-14.687,40.433,808.332],"0.8333":[-14.48,41.334,809.029],"0.875":[-14.403,42.022,809.511],"0.9167":[-14.523,42.384,809.681],"0.9583":[-14.672,42.41,809.862],"1.0":[-14.789,42.313,810.014],"1.0417":[-14.859,42.29,810.011],"1.0833":[-14.87,42.282,810.017]},"position":{"0.0":[-2.947,31.124,-16.832],"0.0417":[-7.677,35.874,-15.375],"0.0833":[-7.832,42.575,-15.452],"0.125":[-8.198,48.854,-16.066],"0.1667":[-5.305,52.84,-17.695],"0.2083":[-0.585,54.314,-19.15],"0.25":[-2.089,50.936,-19.58],"0.2917":[-7.24,52.5,-18.773],"0.3333":[-10.36,56.809,-20.299],"0.375":[-4.818,59.114,-19.692],"0.4167":[0.972,55.875,-18.562],"0.4583":[4.242,51.434,-16.797],"0.5":[5.352,50.886,-16.417],"0.5417":[5.813,51.35,-16.465],"0.5833":[5.755,51.748,-16.55],"0.625":[5.624,51.931,-16.569],"0.6667":[5.502,52.004,-16.58],"0.7083":[5.395,52.014,-16.584],"0.75":[5.313,51.993,-16.602],"0.7917":[5.28,51.966,-16.616],"0.8333":[5.273,51.944,-16.625],"0.875":[5.282,51.94,-16.627],"0.9167":[5.297,51.94,-16.621],"0.9583":[5.316,51.937,-16.616],"1.0":[5.325,51.933,-16.613],"1.0417":[5.331,51.933,-16.61],"1.0833":[5.331,51.933,-16.604]}},"lefthand_1":{"position":[0,2.5,0],"scale":[1,1.5,1]},"righthand_1":{"position":{"0.0":[0,2.5,0],"0.1667":[0,4.5,0],"0.4167":[0,4.5,0],"0.5417":[0,2.5,0]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.036,-0.026,-0.102],"0.0417":[-0.03,-0.094,-0.223],"0.0833":[0.075,-0.116,-0.223],"0.125":[0.112,-0.067,-0.125],"0.1667":[-0.018,-0.003,-0.034],"0.2083":[-0.048,-0.045,-0.148],"0.25":[0.02,-0.112,-0.231],"0.2917":[0.127,-0.101,-0.141],"0.3333":[0.153,-0.002,0.173],"0.375":[0.104,0.054,0.219],"0.4167":[0.09,0.057,0.192],"0.4583":[0.079,-0.068,-0.113],"0.5":[-0.004,-0.073,-0.048],"0.5417":[-0.034,-0.047,0.33],"0.5833":[-0.038,-0.017,0.14],"0.625":[-0.033,-0.006,0.032],"0.6667":[-0.028,0.002,-0.044],"0.7083":[-0.022,0.008,-0.069],"0.75":[-0.015,0.011,-0.063],"0.7917":[-0.009,0.012,-0.044],"0.8333":[-0.005,0.01,-0.023],"0.875":[-0.002,0.01,0.004],"0.9167":[0,0.007,0.011],"0.9583":[0,0.005,0.011],"1.0":[0,0.003,0.004],"1.0417":[0,0.002,0.004],"1.0833":[0,0,-0.003]}},"angel":{"scale":0}},"sound_effects":{"0.0":{"effect":"melee.annihil.annihil_draw_1"}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/null_annihil.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/null_annihil.geo.json new file mode 100644 index 0000000..611fcd2 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/null_annihil.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.unknown","texture_width":128,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":7,"visible_bounds_offset":[0,2.5,0]},"bones":[{"name":"root","pivot":[0,4.4442,0.1281]},{"name":"bone5","parent":"root","pivot":[0,9.6875,4.3375]},{"name":"fn_lefthand","parent":"bone5","pivot":[-6,19,0]},{"name":"lefthand","parent":"fn_lefthand","pivot":[-6,19,0]},{"name":"lefthand_1","parent":"lefthand","pivot":[-6,19,0]},{"name":"lefthand_pos","parent":"lefthand_1","pivot":[0,8,0],"cubes":[{"origin":[-7,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[7,12],"uv_size":[3,12]},"east":{"uv":[8,0],"uv_size":[4,12]},"south":{"uv":[10,12],"uv_size":[3,12]},"west":{"uv":[0,12],"uv_size":[4,12]},"up":{"uv":[17,14],"uv_size":[3,4]},"down":{"uv":[18,6],"uv_size":[3,-4]}}}]},{"name":"knife_and_right","parent":"bone5","pivot":[6,19,0]},{"name":"righthand","parent":"knife_and_right","pivot":[6,19,0]},{"name":"righthand_1","parent":"righthand","pivot":[6,19,0]},{"name":"righthand_pos","parent":"righthand_1","pivot":[0,8,0],"cubes":[{"origin":[4,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[12,0],"uv_size":[3,12]},"east":{"uv":[0,0],"uv_size":[4,12]},"south":{"uv":[4,12],"uv_size":[3,12]},"west":{"uv":[4,0],"uv_size":[4,12]},"up":{"uv":[15,2],"uv_size":[3,4]},"down":{"uv":[15,10],"uv_size":[3,-4]}}}]},{"name":"annihil","parent":"knife_and_right","pivot":[0,6.8142,0.2954]},{"name":"devil","parent":"annihil","pivot":[0,7.8142,0.2954]},{"name":"group","parent":"devil","pivot":[0,7.8142,0.2954],"cubes":[{"origin":[-0.1591,-8.6354,-0.5356],"size":[0.0195,8.7247,1.1193],"pivot":[-0.1591,-1.5264,0.5836],"rotation":[0.6932,-7.3,-0.0939],"uv":{"north":{"uv":[12,0],"uv_size":[0.25,8]},"east":{"uv":[0,0],"uv_size":[1,8]},"south":{"uv":[8,12],"uv_size":[0.25,8]},"west":{"uv":[1,0],"uv_size":[1,8]},"up":{"uv":[41,20],"uv_size":[0.25,1]},"down":{"uv":[41,22],"uv_size":[0.25,-1]}}},{"origin":[0.1396,-8.6354,-0.5356],"size":[0.0195,8.7247,1.1193],"pivot":[0.1591,-1.5264,0.5836],"rotation":[0.6932,7.3,0.0939],"uv":{"north":{"uv":[12,8],"uv_size":[0.25,8]},"east":{"uv":[2,0],"uv_size":[1,8]},"south":{"uv":[9,12],"uv_size":[0.25,8]},"west":{"uv":[3,0],"uv_size":[1,8]},"up":{"uv":[22,41],"uv_size":[0.25,1]},"down":{"uv":[41,23],"uv_size":[0.25,-1]}}},{"origin":[-0.0053,-8.8904,-0.5253],"size":[0.0127,0.2424,1.1193],"pivot":[-0.0053,-8.648,-0.5253],"rotation":[3.19,0,-0.0635],"uv":{"north":{"uv":[59,21],"uv_size":[0.25,0.25]},"east":{"uv":[41,23],"uv_size":[1,0.25]},"south":{"uv":[22,59],"uv_size":[0.25,0.25]},"west":{"uv":[41,24],"uv_size":[1,0.25]},"up":{"uv":[41,25],"uv_size":[0.25,1]},"down":{"uv":[41,27],"uv_size":[0.25,-1]}}},{"origin":[-0.0051,-9.2794,-0.5119],"size":[0.0127,0.3894,1.1193],"pivot":[-0.0051,-8.89,-0.5119],"rotation":[21.19,0,-0.0635],"uv":{"north":{"uv":[59,22],"uv_size":[0.25,0.25]},"east":{"uv":[41,27],"uv_size":[1,0.25]},"south":{"uv":[23,59],"uv_size":[0.25,0.25]},"west":{"uv":[41,28],"uv_size":[1,0.25]},"up":{"uv":[41,29],"uv_size":[0.25,1]},"down":{"uv":[41,31],"uv_size":[0.25,-1]}}},{"origin":[-0.0076,-9.2794,-0.5119],"size":[0.0127,0.3894,1.1193],"pivot":[0.0051,-8.89,-0.5119],"rotation":[21.19,0,0.0635],"uv":{"north":{"uv":[59,23],"uv_size":[0.25,0.25]},"east":{"uv":[41,31],"uv_size":[1,0.25]},"south":{"uv":[24,59],"uv_size":[0.25,0.25]},"west":{"uv":[41,32],"uv_size":[1,0.25]},"up":{"uv":[41,33],"uv_size":[0.25,1]},"down":{"uv":[41,35],"uv_size":[0.25,-1]}}},{"origin":[-0.0074,-8.8904,-0.5253],"size":[0.0127,0.2424,1.1193],"pivot":[0.0053,-8.648,-0.5253],"rotation":[3.19,0,0.0635],"uv":{"north":{"uv":[59,24],"uv_size":[0.25,0.25]},"east":{"uv":[41,35],"uv_size":[1,0.25]},"south":{"uv":[25,59],"uv_size":[0.25,0.25]},"west":{"uv":[41,36],"uv_size":[1,0.25]},"up":{"uv":[41,37],"uv_size":[0.25,1]},"down":{"uv":[41,39],"uv_size":[0.25,-1]}}},{"origin":[-0.0047,-9.6473,-0.3711],"size":[0.0127,0.3942,1.1193],"pivot":[-0.0047,-9.2531,-0.3711],"rotation":[29.19,0,-0.0635],"uv":{"north":{"uv":[59,25],"uv_size":[0.25,0.25]},"east":{"uv":[41,39],"uv_size":[1,0.25]},"south":{"uv":[26,59],"uv_size":[0.25,0.25]},"west":{"uv":[40,41],"uv_size":[1,0.25]},"up":{"uv":[41,40],"uv_size":[0.25,1]},"down":{"uv":[41,42],"uv_size":[0.25,-1]}}},{"origin":[-0.008,-9.6473,-0.3711],"size":[0.0127,0.3942,1.1193],"pivot":[0.0047,-9.2531,-0.3711],"rotation":[29.19,0,0.0635],"uv":{"north":{"uv":[59,26],"uv_size":[0.25,0.25]},"east":{"uv":[42,0],"uv_size":[1,0.25]},"south":{"uv":[27,59],"uv_size":[0.25,0.25]},"west":{"uv":[42,1],"uv_size":[1,0.25]},"up":{"uv":[42,2],"uv_size":[0.25,1]},"down":{"uv":[42,4],"uv_size":[0.25,-1]}}},{"origin":[-0.0043,-10.2067,-0.1788],"size":[0.0127,0.6094,0.7086],"pivot":[-0.0043,-9.5972,-0.1788],"rotation":[36.94,0,-0.0635],"uv":{"north":{"uv":[50,50],"uv_size":[0.25,0.5]},"east":{"uv":[39,13],"uv_size":[0.75,0.5]},"south":{"uv":[0,51],"uv_size":[0.25,0.5]},"west":{"uv":[39,22],"uv_size":[0.75,0.5]},"up":{"uv":[17,46],"uv_size":[0.25,0.75]},"down":{"uv":[46,17.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0084,-10.2067,-0.1788],"size":[0.0127,0.6094,0.7086],"pivot":[0.0043,-9.5972,-0.1788],"rotation":[36.94,0,0.0635],"uv":{"north":{"uv":[51,0],"uv_size":[0.25,0.5]},"east":{"uv":[23,39],"uv_size":[0.75,0.5]},"south":{"uv":[1,51],"uv_size":[0.25,0.5]},"west":{"uv":[39,23],"uv_size":[0.75,0.5]},"up":{"uv":[18,46],"uv_size":[0.25,0.75]},"down":{"uv":[46,18.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0037,-10.6691,0.1874],"size":[0.0127,0.5847,0.2376],"pivot":[-0.0037,-10.0844,0.1874],"rotation":[42.19,0,-0.0635],"uv":{"north":{"uv":[51,1],"uv_size":[0.25,0.5]},"east":{"uv":[2,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,2],"uv_size":[0.25,0.5]},"west":{"uv":[3,51],"uv_size":[0.25,0.5]},"up":{"uv":[59,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.009,-10.6691,0.1874],"size":[0.0127,0.5847,0.2376],"pivot":[0.0037,-10.0844,0.1874],"rotation":[42.19,0,0.0635],"uv":{"north":{"uv":[51,3],"uv_size":[0.25,0.5]},"east":{"uv":[4,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,4],"uv_size":[0.25,0.5]},"west":{"uv":[5,51],"uv_size":[0.25,0.5]},"up":{"uv":[59,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1567,-8.9674,0.4709],"size":[0.0126,0.3122,0.1862],"pivot":[-0.1567,-8.6552,0.6571],"rotation":[14.9454,-9.269,-6.7401],"uv":{"north":{"uv":[59,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3117,-8.5943,0.6233],"size":[0.0744,0.1827,0.0114],"pivot":[-0.2374,-8.9109,0.6233],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[59,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3167,-8.4651,0.6148],"size":[0.0744,0.0591,0.0288],"pivot":[-0.2424,-8.9052,0.6148],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[59,35],"uv_size":[0.25,0.25]},"east":{"uv":[36,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,36],"uv_size":[0.25,0.25]},"west":{"uv":[37,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3314,-8.5164,0.5894],"size":[0.0744,0.0491,0.0245],"pivot":[-0.257,-8.9566,0.5894],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[59,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,39],"uv_size":[0.25,0.25]},"west":{"uv":[40,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1858,-8.6576,0.8377],"size":[0.0721,0.2792,0.0335],"pivot":[-0.1137,-8.4772,0.8377],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[59,41],"uv_size":[0.25,0.25]},"east":{"uv":[42,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,42],"uv_size":[0.25,0.25]},"west":{"uv":[43,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,43],"uv_size":[0.25,0.25]},"down":{"uv":[44,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.067,-8.4151,0.9575],"size":[0.0224,0.1042,0.0335],"pivot":[-0.0446,-8.2347,0.9575],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[59,44],"uv_size":[0.25,0.25]},"east":{"uv":[45,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,45],"uv_size":[0.25,0.25]},"west":{"uv":[46,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,46],"uv_size":[0.25,0.25]},"down":{"uv":[47,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0468,-8.4261,0.9728],"size":[0.0143,0.06,0.0335],"pivot":[-0.0325,-8.2457,0.9728],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[59,47],"uv_size":[0.25,0.25]},"east":{"uv":[48,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,48],"uv_size":[0.25,0.25]},"west":{"uv":[49,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,49],"uv_size":[0.25,0.25]},"down":{"uv":[50,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0404,-8.4331,0.9826],"size":[0.0157,0.0309,0.0335],"pivot":[-0.0247,-8.2527,0.9826],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[59,50],"uv_size":[0.25,0.25]},"east":{"uv":[51,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,51],"uv_size":[0.25,0.25]},"west":{"uv":[52,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,52],"uv_size":[0.25,0.25]},"down":{"uv":[53,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1549,-8.65,0.8868],"size":[0.0801,0.0773,0.0335],"pivot":[-0.0748,-8.5126,0.8868],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[59,53],"uv_size":[0.25,0.25]},"east":{"uv":[54,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,54],"uv_size":[0.25,0.25]},"west":{"uv":[55,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,55],"uv_size":[0.25,0.25]},"down":{"uv":[56,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0707,-8.5828,0.92],"size":[0.0151,0.1311,0.0335],"pivot":[-0.0556,-8.4455,0.92],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[59,56],"uv_size":[0.25,0.25]},"east":{"uv":[57,59],"uv_size":[0.25,0.25]},"south":{"uv":[59,57],"uv_size":[0.25,0.25]},"west":{"uv":[58,59],"uv_size":[0.25,0.25]},"up":{"uv":[59,58],"uv_size":[0.25,0.25]},"down":{"uv":[59,59.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-8.5902,0.9303],"size":[0.0432,0.0455,0.0335],"pivot":[-0.0475,-8.4529,0.9303],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[0,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,0],"uv_size":[0.25,0.25]},"south":{"uv":[1,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,1],"uv_size":[0.25,0.25]},"up":{"uv":[2,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0593,-8.5497,0.9464],"size":[0.0211,0.0457,0.0335],"pivot":[-0.0382,-8.4204,0.9464],"rotation":[-144.0278,43.0531,-137.7319],"uv":{"north":{"uv":[3,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1881,-8.4772,0.8377],"size":[0.0744,0.2496,0.1032],"pivot":[-0.1137,-8.4772,0.8377],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[6,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1716,-8.3579,0.8675],"size":[0.0744,0.1486,0.056],"pivot":[-0.0972,-8.2093,0.8675],"rotation":[-150.2064,-30.2497,179.8208],"uv":{"north":{"uv":[9,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1584,-8.2597,0.7603],"size":[0.0205,6.0549,0.2117],"pivot":[-0.1584,-8.6339,0.7603],"rotation":[-0.2894,30.2497,-0.1792],"uv":{"north":{"uv":[20,21],"uv_size":[0.25,5.5]},"east":{"uv":[21,20],"uv_size":[0.25,5.5]},"south":{"uv":[0,22],"uv_size":[0.25,5.5]},"west":{"uv":[22,0],"uv_size":[0.25,5.5]},"up":{"uv":[12,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1379,-8.2597,0.7603],"size":[0.0205,6.0549,0.2117],"pivot":[0.1584,-8.6339,0.7603],"rotation":[-0.2894,-30.2497,0.1792],"uv":{"north":{"uv":[1,22],"uv_size":[0.25,5.5]},"east":{"uv":[2,22],"uv_size":[0.25,5.5]},"south":{"uv":[3,22],"uv_size":[0.25,5.5]},"west":{"uv":[4,22],"uv_size":[0.25,5.5]},"up":{"uv":[13,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1422,-2.2197,0.9166],"size":[0.0205,3.8421,0.178],"pivot":[0.1627,-0.6819,0.9166],"rotation":[-0.3475,-43.9995,0.2748],"uv":{"north":{"uv":[28,7],"uv_size":[0.25,3.5]},"east":{"uv":[10,28],"uv_size":[0.25,3.5]},"south":{"uv":[11,28],"uv_size":[0.25,3.5]},"west":{"uv":[28,11],"uv_size":[0.25,3.5]},"up":{"uv":[14,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1627,-2.2197,0.9166],"size":[0.0205,3.8421,0.178],"pivot":[-0.1627,-0.6819,0.9166],"rotation":[-0.3475,43.9995,-0.2748],"uv":{"north":{"uv":[12,28],"uv_size":[0.25,3.5]},"east":{"uv":[13,28],"uv_size":[0.25,3.5]},"south":{"uv":[14,28],"uv_size":[0.25,3.5]},"west":{"uv":[28,15],"uv_size":[0.25,3.5]},"up":{"uv":[15,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1439,1.565,0.8844],"size":[0.1838,0.057,0.1702],"pivot":[0.0382,1.6219,1.0546],"rotation":[-18.8475,-43.9995,0.2748],"uv":{"north":{"uv":[16,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1439,1.565,0.8844],"size":[0.1838,0.057,0.1702],"pivot":[0.0382,1.6219,1.0546],"rotation":[-31.8378,-36.7415,20.1736],"uv":{"north":{"uv":[19,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0399,1.565,0.8844],"size":[0.1838,0.057,0.1702],"pivot":[-0.0382,1.6219,1.0546],"rotation":[-31.8378,36.7415,-20.1736],"uv":{"north":{"uv":[22,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0399,1.565,0.8844],"size":[0.1838,0.057,0.1702],"pivot":[-0.0382,1.6219,1.0546],"rotation":[-18.8475,43.9995,-0.2748],"uv":{"north":{"uv":[25,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0176,-2.2202,1.038],"size":[0.0205,3.8421,0.0763],"pivot":[0.0382,-2.2202,1.038],"rotation":[-90,-89.7526,90],"uv":{"north":{"uv":[28,19],"uv_size":[0.25,3.5]},"east":{"uv":[28,23],"uv_size":[0.25,3.5]},"south":{"uv":[26,28],"uv_size":[0.25,3.5]},"west":{"uv":[28,27],"uv_size":[0.25,3.5]},"up":{"uv":[28,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0964,1.4824,0.9783],"size":[0.0582,0.1395,0.0763],"pivot":[-0.0382,1.6219,1.0546],"rotation":[-90,-65.2526,90],"uv":{"north":{"uv":[29,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.435,-2.3973,0.7158],"size":[0.0205,0.3125,0.0763],"pivot":[0.0382,-1.8924,0.7158],"rotation":[-90,-69.2526,90],"uv":{"north":{"uv":[32,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0587,-2.5327,1.038],"size":[0.0205,0.3125,0.1724],"pivot":[-0.0382,-2.2202,1.038],"rotation":[-151.4366,-42.1916,159.9167],"uv":{"north":{"uv":[35,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0382,-2.5327,1.038],"size":[0.0205,0.3125,0.1724],"pivot":[0.0382,-2.2202,1.038],"rotation":[-151.4366,42.1916,-159.9167],"uv":{"north":{"uv":[38,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.8809,-8.5279,0.9321],"size":[0.0205,0.2733,0.0569],"pivot":[-0.8809,-14.2193,-0.5086],"rotation":[-0.2894,30.2497,-0.1792],"uv":{"north":{"uv":[41,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.8807,-8.6059,0.9309],"size":[0.0205,0.078,0.0086],"pivot":[-0.8807,-14.4926,-0.5098],"rotation":[-0.2894,30.2497,-0.1792],"uv":{"north":{"uv":[44,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,44],"uv_size":[0.25,0.25]},"south":{"uv":[45,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,45],"uv_size":[0.25,0.25]},"up":{"uv":[46,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.8764,-8.5903,0.9383],"size":[0.0205,0.0624,0.0121],"pivot":[-0.8764,-14.4927,-0.5024],"rotation":[-0.2894,30.2497,-0.1792],"uv":{"north":{"uv":[47,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,47],"uv_size":[0.25,0.25]},"south":{"uv":[48,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,48],"uv_size":[0.25,0.25]},"up":{"uv":[49,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1137,-8.4772,0.8377],"size":[0.0744,0.2496,0.1032],"pivot":[0.1137,-8.4772,0.8377],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[50,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,50],"uv_size":[0.25,0.25]},"south":{"uv":[51,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,51],"uv_size":[0.25,0.25]},"up":{"uv":[52,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2424,-8.4651,0.6148],"size":[0.0744,0.0591,0.0288],"pivot":[0.2424,-8.9052,0.6148],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[53,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,53],"uv_size":[0.25,0.25]},"south":{"uv":[54,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,54],"uv_size":[0.25,0.25]},"up":{"uv":[55,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,55.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2374,-8.5943,0.6233],"size":[0.0744,0.1827,0.0114],"pivot":[0.2374,-8.9109,0.6233],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[56,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,56],"uv_size":[0.25,0.25]},"south":{"uv":[57,60],"uv_size":[0.25,0.25]},"west":{"uv":[60,57],"uv_size":[0.25,0.25]},"up":{"uv":[58,60],"uv_size":[0.25,0.25]},"down":{"uv":[60,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.8603,-8.5279,0.9321],"size":[0.0205,0.2733,0.0569],"pivot":[0.8809,-14.2193,-0.5086],"rotation":[-0.2894,-30.2497,0.1792],"uv":{"north":{"uv":[59,60],"uv_size":[0.25,0.25]},"east":{"uv":[60,59],"uv_size":[0.25,0.25]},"south":{"uv":[60,60],"uv_size":[0.25,0.25]},"west":{"uv":[0,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.257,-8.5164,0.5894],"size":[0.0744,0.0491,0.0245],"pivot":[0.257,-8.9566,0.5894],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[61,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.8602,-8.6059,0.9309],"size":[0.0205,0.078,0.0086],"pivot":[0.8807,-14.4926,-0.5098],"rotation":[-0.2894,-30.2497,0.1792],"uv":{"north":{"uv":[61,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.8559,-8.5903,0.9383],"size":[0.0205,0.0624,0.0121],"pivot":[0.8764,-14.4927,-0.5024],"rotation":[-0.2894,-30.2497,0.1792],"uv":{"north":{"uv":[61,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0972,-8.3579,0.8675],"size":[0.0744,0.1486,0.056],"pivot":[0.0972,-8.2093,0.8675],"rotation":[-150.2064,30.2497,-179.8208],"uv":{"north":{"uv":[61,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0185,-9.0415,0.9919],"size":[0.0205,0.7812,0.028],"pivot":[0.0389,-8.2604,0.9448],"rotation":[-89.9999,-85.2501,89.9999],"uv":{"north":{"uv":[19,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,19],"uv_size":[0.25,0.75]},"south":{"uv":[20,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,20],"uv_size":[0.25,0.75]},"up":{"uv":[61,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0185,-9.82,0.9272],"size":[0.0205,0.7812,0.0137],"pivot":[0.0389,-9.0389,0.8801],"rotation":[-89.9999,-85.2501,89.9999],"uv":{"north":{"uv":[21,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,21],"uv_size":[0.25,0.75]},"south":{"uv":[22,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,22],"uv_size":[0.25,0.75]},"up":{"uv":[61,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0348,-10.6396,0.9919],"size":[0.0205,2.3793,0.0163],"pivot":[0.0553,-8.2604,0.9448],"rotation":[-89.9999,-85.2501,89.9999],"uv":{"north":{"uv":[35,0],"uv_size":[0.25,2.25]},"east":{"uv":[35,3],"uv_size":[0.25,2.25]},"south":{"uv":[6,35],"uv_size":[0.25,2.25]},"west":{"uv":[35,6],"uv_size":[0.25,2.25]},"up":{"uv":[61,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0287,-10.6315,0.7314],"size":[0.0205,2.3793,0.0163],"pivot":[-0.0082,-10.6315,0.7478],"rotation":[-91.0535,-85.2501,89.9999],"uv":{"north":{"uv":[7,35],"uv_size":[0.25,2.25]},"east":{"uv":[8,35],"uv_size":[0.25,2.25]},"south":{"uv":[9,35],"uv_size":[0.25,2.25]},"west":{"uv":[35,9],"uv_size":[0.25,2.25]},"up":{"uv":[61,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0724,-10.4219,0.9284],"size":[0.0205,2.1612,0.0163],"pivot":[-0.0519,-8.2608,0.9447],"rotation":[-7.8148,-52.49,5.1561],"uv":{"north":{"uv":[36,2],"uv_size":[0.25,2]},"east":{"uv":[4,36],"uv_size":[0.25,2]},"south":{"uv":[36,4],"uv_size":[0.25,2]},"west":{"uv":[5,36],"uv_size":[0.25,2]},"up":{"uv":[61,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1507,-10.4419,0.3936],"size":[0.0166,0.0525,0.0163],"pivot":[-0.277,-10.3895,0.4099],"rotation":[-7.9506,-53.2329,5.3264],"uv":{"north":{"uv":[61,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1566,-10.4942,0.3892],"size":[0.0117,0.0525,0.0163],"pivot":[-0.276,-10.4417,0.4056],"rotation":[-7.9506,-53.2329,5.3264],"uv":{"north":{"uv":[61,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1624,-10.5589,0.3849],"size":[0.0068,0.0649,0.0163],"pivot":[-0.2751,-10.494,0.4012],"rotation":[-7.9506,-53.2329,5.3264],"uv":{"north":{"uv":[61,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1897,-9.0946,0.912],"size":[0.1256,0.458,0.0163],"pivot":[-0.0641,-8.2597,0.9283],"rotation":[-7.8148,-52.49,5.1561],"uv":{"north":{"uv":[51,5],"uv_size":[0.25,0.5]},"east":{"uv":[6,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,6],"uv_size":[0.25,0.5]},"west":{"uv":[7,51],"uv_size":[0.25,0.5]},"up":{"uv":[61,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1087,-9.6781,0.8741],"size":[0.053,0.5851,0.0163],"pivot":[-0.0557,-8.716,0.8904],"rotation":[-7.8148,-52.49,5.1561],"uv":{"north":{"uv":[51,7],"uv_size":[0.25,0.5]},"east":{"uv":[8,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,8],"uv_size":[0.25,0.5]},"west":{"uv":[9,51],"uv_size":[0.25,0.5]},"up":{"uv":[61,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0557,-9.6781,0.8741],"size":[0.053,0.5851,0.0163],"pivot":[0.0557,-8.716,0.8904],"rotation":[-7.8148,52.49,-5.1561],"uv":{"north":{"uv":[51,9],"uv_size":[0.25,0.5]},"east":{"uv":[10,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,10],"uv_size":[0.25,0.5]},"west":{"uv":[11,51],"uv_size":[0.25,0.5]},"up":{"uv":[61,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0641,-9.0946,0.912],"size":[0.1256,0.458,0.0163],"pivot":[0.0641,-8.2597,0.9283],"rotation":[-7.8148,52.49,-5.1561],"uv":{"north":{"uv":[51,11],"uv_size":[0.25,0.5]},"east":{"uv":[12,51],"uv_size":[0.25,0.5]},"south":{"uv":[51,12],"uv_size":[0.25,0.5]},"west":{"uv":[13,51],"uv_size":[0.25,0.5]},"up":{"uv":[61,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0519,-10.4219,0.9284],"size":[0.0205,2.1612,0.0163],"pivot":[0.0519,-8.2608,0.9447],"rotation":[-7.8148,52.49,-5.1561],"uv":{"north":{"uv":[36,6],"uv_size":[0.25,2]},"east":{"uv":[36,8],"uv_size":[0.25,2]},"south":{"uv":[36,10],"uv_size":[0.25,2]},"west":{"uv":[36,12],"uv_size":[0.25,2]},"up":{"uv":[61,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1137,-8.6576,0.8377],"size":[0.0721,0.2792,0.0335],"pivot":[0.1137,-8.4772,0.8377],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0475,-8.5902,0.9303],"size":[0.0432,0.0455,0.0335],"pivot":[0.0475,-8.4529,0.9303],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,35],"uv_size":[0.25,0.25]},"east":{"uv":[36,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,36],"uv_size":[0.25,0.25]},"west":{"uv":[37,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0556,-8.5828,0.92],"size":[0.0151,0.1311,0.0335],"pivot":[0.0556,-8.4455,0.92],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,39],"uv_size":[0.25,0.25]},"west":{"uv":[40,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0382,-8.5497,0.9464],"size":[0.0211,0.0457,0.0335],"pivot":[0.0382,-8.4204,0.9464],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,41],"uv_size":[0.25,0.25]},"east":{"uv":[42,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,42],"uv_size":[0.25,0.25]},"west":{"uv":[43,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,43],"uv_size":[0.25,0.25]},"down":{"uv":[44,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0748,-8.65,0.8868],"size":[0.0801,0.0773,0.0335],"pivot":[0.0748,-8.5126,0.8868],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,44],"uv_size":[0.25,0.25]},"east":{"uv":[45,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,45],"uv_size":[0.25,0.25]},"west":{"uv":[46,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,46],"uv_size":[0.25,0.25]},"down":{"uv":[47,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0446,-8.4151,0.9575],"size":[0.0224,0.1042,0.0335],"pivot":[0.0446,-8.2347,0.9575],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,47],"uv_size":[0.25,0.25]},"east":{"uv":[48,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,48],"uv_size":[0.25,0.25]},"west":{"uv":[49,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,49],"uv_size":[0.25,0.25]},"down":{"uv":[50,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0325,-8.4261,0.9728],"size":[0.0143,0.06,0.0335],"pivot":[0.0325,-8.2457,0.9728],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,50],"uv_size":[0.25,0.25]},"east":{"uv":[51,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,51],"uv_size":[0.25,0.25]},"west":{"uv":[52,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,52],"uv_size":[0.25,0.25]},"down":{"uv":[53,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0247,-8.4331,0.9826],"size":[0.0157,0.0309,0.0335],"pivot":[0.0247,-8.2527,0.9826],"rotation":[-144.0278,-43.0531,137.7319],"uv":{"north":{"uv":[61,53],"uv_size":[0.25,0.25]},"east":{"uv":[54,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,54],"uv_size":[0.25,0.25]},"west":{"uv":[55,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,55],"uv_size":[0.25,0.25]},"down":{"uv":[56,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1673,-10.4419,0.3936],"size":[0.0166,0.0525,0.0163],"pivot":[0.277,-10.3895,0.4099],"rotation":[-7.9506,53.2329,-5.3264],"uv":{"north":{"uv":[61,56],"uv_size":[0.25,0.25]},"east":{"uv":[57,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,57],"uv_size":[0.25,0.25]},"west":{"uv":[58,61],"uv_size":[0.25,0.25]},"up":{"uv":[61,58],"uv_size":[0.25,0.25]},"down":{"uv":[59,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1683,-10.4942,0.3892],"size":[0.0117,0.0525,0.0163],"pivot":[0.276,-10.4417,0.4056],"rotation":[-7.9506,53.2329,-5.3264],"uv":{"north":{"uv":[61,59],"uv_size":[0.25,0.25]},"east":{"uv":[60,61],"uv_size":[0.25,0.25]},"south":{"uv":[61,60],"uv_size":[0.25,0.25]},"west":{"uv":[61,61],"uv_size":[0.25,0.25]},"up":{"uv":[0,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1693,-10.5589,0.3849],"size":[0.0068,0.0649,0.0163],"pivot":[0.2751,-10.494,0.4012],"rotation":[-7.9506,53.2329,-5.3264],"uv":{"north":{"uv":[1,62],"uv_size":[0.25,0.25]},"east":{"uv":[62,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,62],"uv_size":[0.25,0.25]},"west":{"uv":[62,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0389,-9.0415,0.9919],"size":[0.0205,0.7812,0.028],"pivot":[-0.0389,-8.2604,0.9448],"rotation":[-89.9999,85.2501,-89.9999],"uv":{"north":{"uv":[23,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,23],"uv_size":[0.25,0.75]},"south":{"uv":[24,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,24],"uv_size":[0.25,0.75]},"up":{"uv":[4,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0082,-10.6315,0.7314],"size":[0.0205,2.3793,0.0163],"pivot":[0.0082,-10.6315,0.7478],"rotation":[-91.0535,85.2501,-89.9999],"uv":{"north":{"uv":[10,35],"uv_size":[0.25,2.25]},"east":{"uv":[11,35],"uv_size":[0.25,2.25]},"south":{"uv":[12,35],"uv_size":[0.25,2.25]},"west":{"uv":[35,12],"uv_size":[0.25,2.25]},"up":{"uv":[5,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0389,-9.82,0.9272],"size":[0.0205,0.7812,0.0137],"pivot":[-0.0389,-9.0389,0.8801],"rotation":[-89.9999,85.2501,-89.9999],"uv":{"north":{"uv":[25,46],"uv_size":[0.25,0.75]},"east":{"uv":[46,25],"uv_size":[0.25,0.75]},"south":{"uv":[26,46],"uv_size":[0.25,0.75]},"west":{"uv":[46,26],"uv_size":[0.25,0.75]},"up":{"uv":[6,62],"uv_size":[0.25,0.25]},"down":{"uv":[62,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.016,-8.6481,-0.5259],"size":[0.0125,6.4787,0.0846],"inflate":-0.001,"pivot":[-0.0161,-8.6482,-0.4412],"rotation":[-0.0568,-7.3,-0.0939],"uv":{"north":{"uv":[12,16],"uv_size":[0.25,6]},"east":{"uv":[13,16],"uv_size":[0.25,6]},"south":{"uv":[16,14],"uv_size":[0.25,6]},"west":{"uv":[17,0],"uv_size":[0.25,6]},"up":{"uv":[65,52],"uv_size":[0.25,0.25]},"down":{"uv":[53,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0035,-8.6481,-0.5259],"size":[0.0125,6.4787,0.0846],"inflate":-0.001,"pivot":[0.0161,-8.6482,-0.4412],"rotation":[-0.0568,7.3,0.0939],"uv":{"north":{"uv":[17,6],"uv_size":[0.25,6]},"east":{"uv":[17,12],"uv_size":[0.25,6]},"south":{"uv":[18,0],"uv_size":[0.25,6]},"west":{"uv":[18,6],"uv_size":[0.25,6]},"up":{"uv":[65,53],"uv_size":[0.25,0.25]},"down":{"uv":[54,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1584,-8.6337,0.6571],"size":[0.0282,5.9646,0.1032],"pivot":[-0.1584,-8.6336,0.7603],"rotation":[-0.25,0,-0.0334],"uv":{"north":{"uv":[5,22],"uv_size":[0.25,5.5]},"east":{"uv":[6,22],"uv_size":[0.25,5.5]},"south":{"uv":[22,6],"uv_size":[0.25,5.5]},"west":{"uv":[12,22],"uv_size":[0.25,5.5]},"up":{"uv":[65,54],"uv_size":[0.25,0.25]},"down":{"uv":[55,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1301,-8.6337,0.6571],"size":[0.0282,5.9646,0.1032],"pivot":[0.1584,-8.6336,0.7603],"rotation":[-0.25,0,0.0334],"uv":{"north":{"uv":[22,12],"uv_size":[0.25,5.5]},"east":{"uv":[13,22],"uv_size":[0.25,5.5]},"south":{"uv":[14,22],"uv_size":[0.25,5.5]},"west":{"uv":[22,18],"uv_size":[0.25,5.5]},"up":{"uv":[65,55],"uv_size":[0.25,0.25]},"down":{"uv":[56,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,-2.2197,0.6615],"size":[0.3281,3.8421,0.2484],"pivot":[-0.1618,-2.2197,0.9099],"rotation":[-0.25,-0.0001,0],"uv":{"north":{"uv":[29,0],"uv_size":[0.25,3.5]},"east":{"uv":[4,29],"uv_size":[0.25,3.5]},"south":{"uv":[29,4],"uv_size":[0.25,3.5]},"west":{"uv":[5,29],"uv_size":[0.25,3.5]},"up":{"uv":[65,56],"uv_size":[0.25,0.25]},"down":{"uv":[57,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1641,-0.1047,0.413],"size":[0.3281,1.8764,0.2484],"pivot":[-0.1618,-2.2186,0.6615],"rotation":[-0.25,-0.0001,0],"uv":{"north":{"uv":[38,3],"uv_size":[0.25,1.75]},"east":{"uv":[4,38],"uv_size":[0.25,1.75]},"south":{"uv":[5,38],"uv_size":[0.25,1.75]},"west":{"uv":[38,5],"uv_size":[0.25,1.75]},"up":{"uv":[65,57],"uv_size":[0.25,0.25]},"down":{"uv":[58,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1617,-2.6989,0.6278],"size":[0.3237,0.3189,0.1585],"pivot":[-0.1547,-2.6691,0.7863],"rotation":[-10.5,0,-0.0334],"uv":{"north":{"uv":[11,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,11],"uv_size":[0.25,0.25]},"south":{"uv":[12,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,12],"uv_size":[0.25,0.25]},"up":{"uv":[13,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1617,-2.6984,0.7809],"size":[0.0207,0.3922,0.1585],"pivot":[-0.1617,-2.6984,0.7809],"rotation":[-13.7975,40.1712,-9.0351],"uv":{"north":{"uv":[14,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,15],"uv_size":[0.25,0.25]},"up":{"uv":[16,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1409,-2.6984,0.7809],"size":[0.0207,0.3922,0.1585],"pivot":[0.1617,-2.6984,0.7809],"rotation":[-13.7975,-40.1712,9.0351],"uv":{"north":{"uv":[17,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0314,-8.2604,0.9415],"size":[0.0205,5.9876,0.1104],"pivot":[0.0519,-8.2604,0.9448],"rotation":[-90,-89.7501,90],"uv":{"north":{"uv":[23,0],"uv_size":[0.25,5.5]},"east":{"uv":[23,6],"uv_size":[0.25,5.5]},"south":{"uv":[8,23],"uv_size":[0.25,5.5]},"west":{"uv":[9,23],"uv_size":[0.25,5.5]},"up":{"uv":[20,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1618,-2.4334,0.5851],"size":[0.3236,0.2282,0.2449],"pivot":[-0.1549,-2.4334,0.83],"rotation":[-20.5,0,-0.0334],"uv":{"north":{"uv":[21,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,21],"uv_size":[0.25,0.25]},"south":{"uv":[22,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,22],"uv_size":[0.25,0.25]},"up":{"uv":[23,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1618,-8.6221,0.5835],"size":[0.3237,7.9938,0.0914],"pivot":[-0.1549,-1.5129,1.7027],"rotation":[0.6882,0,0],"uv":{"north":{"uv":[0,14],"uv_size":[0.25,7.25]},"east":{"uv":[14,0],"uv_size":[0.25,7.25]},"south":{"uv":[1,14],"uv_size":[0.25,7.25]},"west":{"uv":[2,14],"uv_size":[0.25,7.25]},"up":{"uv":[24,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,24.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group4","parent":"group","pivot":[-0.0087,-10.6319,0.7292],"rotation":[0,1,0],"cubes":[{"origin":[-0.0866,-10.5191,0.5828],"size":[0.0127,1.8958,0.1509],"pivot":[-0.0866,-9.592,0.7337],"rotation":[-0.2502,-4.9785,-4.2618],"uv":{"north":{"uv":[6,38],"uv_size":[0.25,1.75]},"east":{"uv":[7,38],"uv_size":[0.25,1.75]},"south":{"uv":[38,7],"uv_size":[0.25,1.75]},"west":{"uv":[8,38],"uv_size":[0.25,1.75]},"up":{"uv":[25,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0735,-9.7028,0.096],"size":[0.0125,1.0811,0.4873],"inflate":-0.001,"pivot":[-0.0736,-9.5904,0.5834],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[43,3],"uv_size":[0.25,1]},"east":{"uv":[13,36],"uv_size":[0.5,1]},"south":{"uv":[4,43],"uv_size":[0.25,1]},"west":{"uv":[14,36],"uv_size":[0.5,1]},"up":{"uv":[53,33],"uv_size":[0.25,0.5]},"down":{"uv":[34,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0072,-10.3345,0.4211],"size":[0.0127,0.6346,0.1576],"pivot":[0.0072,-10.6686,0.5787],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[53,34],"uv_size":[0.25,0.5]},"east":{"uv":[35,53],"uv_size":[0.25,0.5]},"south":{"uv":[53,35],"uv_size":[0.25,0.5]},"west":{"uv":[36,53],"uv_size":[0.25,0.5]},"up":{"uv":[26,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0546,-10.4374,0.5108],"size":[0.0127,0.1046,0.0652],"pivot":[0.0546,-11.3015,0.5759],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[27,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,27],"uv_size":[0.25,0.25]},"south":{"uv":[28,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,28],"uv_size":[0.25,0.25]},"up":{"uv":[29,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0624,-10.4938,0.5574],"size":[0.0127,0.0567,0.0181],"pivot":[0.0624,-11.4058,0.5755],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[30,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,30],"uv_size":[0.25,0.25]},"south":{"uv":[31,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,31],"uv_size":[0.25,0.25]},"up":{"uv":[32,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,32.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0022,-9.2176,-0.1844],"size":[0.0129,0.6035,0.2858],"inflate":0.001,"pivot":[-0.0021,-9.5829,0.1012],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[53,36],"uv_size":[0.25,0.5]},"east":{"uv":[37,53],"uv_size":[0.25,0.5]},"south":{"uv":[53,37],"uv_size":[0.25,0.5]},"west":{"uv":[38,53],"uv_size":[0.25,0.5]},"up":{"uv":[33,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0713,-8.7251,-0.501],"size":[0.006,0.1186,0.1078],"pivot":[0.0713,-9.5753,-0.3931],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[34,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0099,-10.5045,0.5881],"size":[0.006,0.0147,0.0236],"pivot":[-0.0099,-10.4574,0.5881],"rotation":[-48.502,-8.4785,-4.2463],"uv":{"north":{"uv":[37,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0016,-10.4155,0.4901],"size":[0.006,0.0357,0.0963],"pivot":[0.0016,-10.4155,0.4901],"rotation":[-48.502,-8.4785,-4.2463],"uv":{"north":{"uv":[40,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,40],"uv_size":[0.25,0.25]},"south":{"uv":[41,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,41],"uv_size":[0.25,0.25]},"up":{"uv":[42,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0047,-8.7868,0.7491],"size":[0.006,0.1137,0.4822],"pivot":[-0.0047,-8.7648,-0.2875],"rotation":[-60.752,-8.4785,-4.2463],"uv":{"north":{"uv":[43,66],"uv_size":[0.25,0.25]},"east":{"uv":[53,38],"uv_size":[0.5,0.25]},"south":{"uv":[66,43],"uv_size":[0.25,0.25]},"west":{"uv":[39,53],"uv_size":[0.5,0.25]},"up":{"uv":[53,39],"uv_size":[0.25,0.5]},"down":{"uv":[40,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0148,-8.8215,-0.4977],"size":[0.006,0.0962,1.9286],"pivot":[0.0148,-8.8215,-0.3898],"rotation":[-60.752,-8.4785,-4.2463],"uv":{"north":{"uv":[44,66],"uv_size":[0.25,0.25]},"east":{"uv":[9,38],"uv_size":[1.75,0.25]},"south":{"uv":[66,44],"uv_size":[0.25,0.25]},"west":{"uv":[38,9],"uv_size":[1.75,0.25]},"up":{"uv":[38,10],"uv_size":[0.25,1.75]},"down":{"uv":[11,39.75],"uv_size":[0.25,-1.75]}}},{"origin":[-0.0198,-8.7211,0.8282],"size":[0.006,0.0917,0.4408],"pivot":[-0.0198,-8.7211,-0.2084],"rotation":[-60.752,-8.4785,-4.2463],"uv":{"north":{"uv":[45,66],"uv_size":[0.25,0.25]},"east":{"uv":[53,40],"uv_size":[0.5,0.25]},"south":{"uv":[66,45],"uv_size":[0.25,0.25]},"west":{"uv":[41,53],"uv_size":[0.5,0.25]},"up":{"uv":[53,41],"uv_size":[0.25,0.5]},"down":{"uv":[42,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0047,-8.7882,-0.0794],"size":[0.006,0.1621,0.6597],"pivot":[-0.0047,-8.7648,-0.2875],"rotation":[-60.752,-8.4785,-4.2463],"uv":{"north":{"uv":[46,66],"uv_size":[0.25,0.25]},"east":{"uv":[53,42],"uv_size":[0.5,0.25]},"south":{"uv":[66,46],"uv_size":[0.25,0.25]},"west":{"uv":[43,53],"uv_size":[0.5,0.25]},"up":{"uv":[53,43],"uv_size":[0.25,0.5]},"down":{"uv":[44,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.059,-8.8207,-0.3941],"size":[0.0127,0.2128,0.0836],"pivot":[0.059,-9.5765,-0.3105],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[47,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,47],"uv_size":[0.25,0.25]},"south":{"uv":[48,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,48],"uv_size":[0.25,0.25]},"up":{"uv":[49,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0398,-8.9775,-0.3119],"size":[0.0127,0.3677,0.1307],"pivot":[0.0398,-9.5785,-0.1812],"rotation":[-0.252,-8.4785,-4.2463],"uv":{"north":{"uv":[50,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,50],"uv_size":[0.25,0.25]},"south":{"uv":[51,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,51],"uv_size":[0.25,0.25]},"up":{"uv":[52,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.055,-10.6261,0.6823],"size":[0.0127,0.1123,0.0432],"pivot":[0.055,-11.4825,0.7255],"rotation":[-0.2502,-4.9785,-4.2618],"uv":{"north":{"uv":[53,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,53],"uv_size":[0.25,0.25]},"south":{"uv":[54,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,54],"uv_size":[0.25,0.25]},"up":{"uv":[55,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,55.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0052,-10.628,0.6851],"size":[0.0127,0.1556,0.0552],"pivot":[-0.0052,-10.628,0.6862],"rotation":[43.1645,-4.9785,-4.2618],"uv":{"north":{"uv":[56,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,56],"uv_size":[0.25,0.25]},"south":{"uv":[57,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,57],"uv_size":[0.25,0.25]},"up":{"uv":[58,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0084,-10.495,0.7328],"size":[0.0127,0.0964,0.0903],"pivot":[-0.0084,-10.6094,0.7061],"rotation":[43.1645,-4.9785,-4.2618],"uv":{"north":{"uv":[59,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,59],"uv_size":[0.25,0.25]},"south":{"uv":[60,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,60],"uv_size":[0.25,0.25]},"up":{"uv":[61,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,61.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0117,-10.3752,1.1822],"size":[0.0127,0.0571,0.0553],"pivot":[-0.0117,-11.092,1.1555],"rotation":[43.1645,-4.9785,-4.2618],"uv":{"north":{"uv":[62,66],"uv_size":[0.25,0.25]},"east":{"uv":[66,62],"uv_size":[0.25,0.25]},"south":{"uv":[63,66],"uv_size":[0.25,0.25]},"west":{"uv":[66,63],"uv_size":[0.25,0.25]},"up":{"uv":[64,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,64.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group5","parent":"group","pivot":[0.0087,-10.6319,0.7292],"rotation":[0,-1,0],"cubes":[{"origin":[0.0739,-10.5191,0.5828],"size":[0.0127,1.8958,0.1509],"pivot":[0.0866,-9.592,0.7337],"rotation":[-0.2502,4.9785,4.2618],"uv":{"north":{"uv":[12,38],"uv_size":[0.25,1.75]},"east":{"uv":[38,12],"uv_size":[0.25,1.75]},"south":{"uv":[13,38],"uv_size":[0.25,1.75]},"west":{"uv":[14,38],"uv_size":[0.25,1.75]},"up":{"uv":[65,66],"uv_size":[0.25,0.25]},"down":{"uv":[66,65.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0609,-9.7028,0.096],"size":[0.0125,1.0811,0.4873],"inflate":-0.001,"pivot":[0.0736,-9.5904,0.5834],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[43,4],"uv_size":[0.25,1]},"east":{"uv":[36,14],"uv_size":[0.5,1]},"south":{"uv":[5,43],"uv_size":[0.25,1]},"west":{"uv":[15,36],"uv_size":[0.5,1]},"up":{"uv":[53,44],"uv_size":[0.25,0.5]},"down":{"uv":[45,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0199,-10.3345,0.4211],"size":[0.0127,0.6346,0.1576],"pivot":[-0.0072,-10.6686,0.5787],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[53,45],"uv_size":[0.25,0.5]},"east":{"uv":[46,53],"uv_size":[0.25,0.5]},"south":{"uv":[53,46],"uv_size":[0.25,0.5]},"west":{"uv":[47,53],"uv_size":[0.25,0.5]},"up":{"uv":[66,66],"uv_size":[0.25,0.25]},"down":{"uv":[0,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0673,-10.4374,0.5108],"size":[0.0127,0.1046,0.0652],"pivot":[-0.0546,-11.3015,0.5759],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[67,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0751,-10.4938,0.5574],"size":[0.0127,0.0567,0.0181],"pivot":[-0.0624,-11.4058,0.5755],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[67,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0108,-9.2176,-0.1844],"size":[0.0129,0.6035,0.2858],"inflate":0.001,"pivot":[0.0021,-9.5829,0.1012],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[53,47],"uv_size":[0.25,0.5]},"east":{"uv":[48,53],"uv_size":[0.25,0.5]},"south":{"uv":[53,48],"uv_size":[0.25,0.5]},"west":{"uv":[49,53],"uv_size":[0.25,0.5]},"up":{"uv":[67,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0773,-8.7251,-0.501],"size":[0.006,0.1186,0.1078],"pivot":[-0.0713,-9.5753,-0.3931],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[67,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0208,-8.8215,-0.4977],"size":[0.006,0.0962,1.9286],"pivot":[-0.0148,-8.8215,-0.3898],"rotation":[-60.752,8.4785,4.2463],"uv":{"north":{"uv":[67,10],"uv_size":[0.25,0.25]},"east":{"uv":[38,14],"uv_size":[1.75,0.25]},"south":{"uv":[11,67],"uv_size":[0.25,0.25]},"west":{"uv":[38,15],"uv_size":[1.75,0.25]},"up":{"uv":[38,16],"uv_size":[0.25,1.75]},"down":{"uv":[38,19.75],"uv_size":[0.25,-1.75]}}},{"origin":[0.0039,-10.5045,0.5881],"size":[0.006,0.0147,0.0236],"pivot":[0.0099,-10.4574,0.5881],"rotation":[-48.502,8.4785,4.2463],"uv":{"north":{"uv":[67,11],"uv_size":[0.25,0.25]},"east":{"uv":[12,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0076,-10.4155,0.4901],"size":[0.006,0.0357,0.0963],"pivot":[-0.0016,-10.4155,0.4901],"rotation":[-48.502,8.4785,4.2463],"uv":{"north":{"uv":[67,14],"uv_size":[0.25,0.25]},"east":{"uv":[15,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,15],"uv_size":[0.25,0.25]},"west":{"uv":[16,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0013,-8.7868,0.7491],"size":[0.006,0.1137,0.4822],"pivot":[0.0047,-8.7648,-0.2875],"rotation":[-60.752,8.4785,4.2463],"uv":{"north":{"uv":[67,17],"uv_size":[0.25,0.25]},"east":{"uv":[53,49],"uv_size":[0.5,0.25]},"south":{"uv":[18,67],"uv_size":[0.25,0.25]},"west":{"uv":[50,53],"uv_size":[0.5,0.25]},"up":{"uv":[53,50],"uv_size":[0.25,0.5]},"down":{"uv":[51,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0138,-8.7211,0.8282],"size":[0.006,0.0917,0.4408],"pivot":[0.0198,-8.7211,-0.2084],"rotation":[-60.752,8.4785,4.2463],"uv":{"north":{"uv":[67,18],"uv_size":[0.25,0.25]},"east":{"uv":[53,51],"uv_size":[0.5,0.25]},"south":{"uv":[19,67],"uv_size":[0.25,0.25]},"west":{"uv":[52,53],"uv_size":[0.5,0.25]},"up":{"uv":[53,52],"uv_size":[0.25,0.5]},"down":{"uv":[53,53.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0013,-8.7882,-0.0794],"size":[0.006,0.1621,0.6597],"pivot":[0.0047,-8.7648,-0.2875],"rotation":[-60.752,8.4785,4.2463],"uv":{"north":{"uv":[67,19],"uv_size":[0.25,0.25]},"east":{"uv":[0,54],"uv_size":[0.5,0.25]},"south":{"uv":[20,67],"uv_size":[0.25,0.25]},"west":{"uv":[54,0],"uv_size":[0.5,0.25]},"up":{"uv":[1,54],"uv_size":[0.25,0.5]},"down":{"uv":[54,1.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0717,-8.8207,-0.3941],"size":[0.0127,0.2128,0.0836],"pivot":[-0.059,-9.5765,-0.3105],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[67,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0526,-8.9775,-0.3119],"size":[0.0127,0.3677,0.1307],"pivot":[-0.0398,-9.5785,-0.1812],"rotation":[-0.252,8.4785,4.2463],"uv":{"north":{"uv":[67,23],"uv_size":[0.25,0.25]},"east":{"uv":[24,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,24],"uv_size":[0.25,0.25]},"west":{"uv":[25,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0677,-10.6261,0.6823],"size":[0.0127,0.1123,0.0432],"pivot":[-0.055,-11.4825,0.7255],"rotation":[-0.2502,4.9785,4.2618],"uv":{"north":{"uv":[67,26],"uv_size":[0.25,0.25]},"east":{"uv":[27,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,27],"uv_size":[0.25,0.25]},"west":{"uv":[28,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0075,-10.628,0.6851],"size":[0.0127,0.1556,0.0552],"pivot":[0.0052,-10.628,0.6862],"rotation":[43.1645,4.9785,4.2618],"uv":{"north":{"uv":[67,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0044,-10.495,0.7328],"size":[0.0127,0.0964,0.0903],"pivot":[0.0084,-10.6094,0.7061],"rotation":[43.1645,4.9785,4.2618],"uv":{"north":{"uv":[67,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0011,-10.3752,1.1822],"size":[0.0127,0.0571,0.0553],"pivot":[0.0117,-11.092,1.1555],"rotation":[43.1645,4.9785,4.2618],"uv":{"north":{"uv":[67,35],"uv_size":[0.25,0.25]},"east":{"uv":[36,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,36],"uv_size":[0.25,0.25]},"west":{"uv":[37,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,67.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group2","parent":"group","pivot":[-0.1584,-8.6339,0.7603],"rotation":[0,0,0.25],"cubes":[{"origin":[-0.0913,-9.8298,0.7342],"size":[0.0717,1.1985,0.0224],"pivot":[-0.0913,-9.4797,0.7566],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[43,5],"uv_size":[0.25,1]},"east":{"uv":[6,43],"uv_size":[0.25,1]},"south":{"uv":[43,6],"uv_size":[0.25,1]},"west":{"uv":[7,43],"uv_size":[0.25,1]},"up":{"uv":[67,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0034,-10.0618,0.729],"size":[0.0423,0.2358,0.0224],"pivot":[0.0034,-10.6744,0.7514],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[67,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0221,-10.2969,0.728],"size":[0.0221,0.2358,0.0224],"pivot":[0.0221,-10.9095,0.7503],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[67,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0264,-10.375,0.7307],"size":[0.0217,0.0762,0.0224],"pivot":[-0.0264,-10.2988,0.753],"rotation":[-0.3589,-46.0168,-4.2752],"uv":{"north":{"uv":[67,45],"uv_size":[0.25,0.25]},"east":{"uv":[46,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,46],"uv_size":[0.25,0.25]},"west":{"uv":[47,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,47],"uv_size":[0.25,0.25]},"down":{"uv":[48,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0351,-10.168,0.7458],"size":[0.0154,0.1079,0.0224],"pivot":[0.0351,-10.9085,0.7682],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[67,48],"uv_size":[0.25,0.25]},"east":{"uv":[49,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,49],"uv_size":[0.25,0.25]},"west":{"uv":[50,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,50],"uv_size":[0.25,0.25]},"down":{"uv":[51,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0284,-9.9523,0.7631],"size":[0.0154,0.1281,0.0224],"pivot":[0.0284,-10.6726,0.7855],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[67,51],"uv_size":[0.25,0.25]},"east":{"uv":[52,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,52],"uv_size":[0.25,0.25]},"west":{"uv":[53,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,53],"uv_size":[0.25,0.25]},"down":{"uv":[54,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0437,-9.9523,0.7631],"size":[0.0154,0.1281,0.0224],"pivot":[-0.0284,-10.6726,0.7855],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[67,54],"uv_size":[0.25,0.25]},"east":{"uv":[55,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,55],"uv_size":[0.25,0.25]},"west":{"uv":[56,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,56],"uv_size":[0.25,0.25]},"down":{"uv":[57,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0505,-10.168,0.7458],"size":[0.0154,0.1079,0.0224],"pivot":[-0.0351,-10.9085,0.7682],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[67,57],"uv_size":[0.25,0.25]},"east":{"uv":[58,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,58],"uv_size":[0.25,0.25]},"west":{"uv":[59,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,59],"uv_size":[0.25,0.25]},"down":{"uv":[60,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0047,-10.375,0.7307],"size":[0.0217,0.0762,0.0224],"pivot":[0.0264,-10.2988,0.753],"rotation":[-0.3589,46.0168,4.2752],"uv":{"north":{"uv":[67,60],"uv_size":[0.25,0.25]},"east":{"uv":[61,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,61],"uv_size":[0.25,0.25]},"west":{"uv":[62,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,62],"uv_size":[0.25,0.25]},"down":{"uv":[63,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1584,-10.6376,0.7379],"size":[0.0205,2.0036,0.0224],"pivot":[-0.1584,-8.6339,0.7603],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[20,38],"uv_size":[0.25,1.75]},"east":{"uv":[38,20],"uv_size":[0.25,1.75]},"south":{"uv":[21,38],"uv_size":[0.25,1.75]},"west":{"uv":[38,22],"uv_size":[0.25,1.75]},"up":{"uv":[67,63],"uv_size":[0.25,0.25]},"down":{"uv":[64,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1584,-8.7891,0.6932],"size":[0.0205,0.1335,0.0224],"pivot":[-0.1584,-8.6341,0.791],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[67,64],"uv_size":[0.25,0.25]},"east":{"uv":[65,67],"uv_size":[0.25,0.25]},"south":{"uv":[67,65],"uv_size":[0.25,0.25]},"west":{"uv":[66,67],"uv_size":[0.25,0.25]},"up":{"uv":[67,66],"uv_size":[0.25,0.25]},"down":{"uv":[67,67.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1584,-8.6556,0.6571],"size":[0.0205,0.0217,0.0808],"pivot":[-0.1584,-8.6338,0.7379],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[0,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,0],"uv_size":[0.25,0.25]},"south":{"uv":[1,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,1],"uv_size":[0.25,0.25]},"up":{"uv":[2,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1584,-8.87,0.7156],"size":[0.0205,0.2143,0.0224],"pivot":[-0.1584,-8.6342,0.8133],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[3,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1584,-8.7055,0.6708],"size":[0.0205,0.05,0.0224],"pivot":[-0.1584,-8.634,0.7686],"rotation":[-0.2492,-0.0196,-4.5334],"uv":{"north":{"uv":[6,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1328,-8.9561,0.7365],"size":[0.0205,0.3122,0.0224],"pivot":[-0.1328,-8.9561,0.7365],"rotation":[14.7459,-0.0196,-4.5334],"uv":{"north":{"uv":[9,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,11.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group3","parent":"group","pivot":[0.1584,-8.6339,0.7603],"rotation":[0,0,-0.25],"cubes":[{"origin":[0.0196,-9.8298,0.7342],"size":[0.0717,1.1985,0.0224],"pivot":[0.0913,-9.4797,0.7566],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[43,7],"uv_size":[0.25,1]},"east":{"uv":[8,43],"uv_size":[0.25,1]},"south":{"uv":[43,8],"uv_size":[0.25,1]},"west":{"uv":[9,43],"uv_size":[0.25,1]},"up":{"uv":[12,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0457,-10.0618,0.729],"size":[0.0423,0.2358,0.0224],"pivot":[-0.0034,-10.6744,0.7514],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[13,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,13],"uv_size":[0.25,0.25]},"south":{"uv":[14,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,14],"uv_size":[0.25,0.25]},"up":{"uv":[15,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0442,-10.2969,0.728],"size":[0.0221,0.2358,0.0224],"pivot":[-0.0221,-10.9095,0.7503],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[16,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0047,-10.375,0.7307],"size":[0.0217,0.0762,0.0224],"pivot":[0.0264,-10.2988,0.753],"rotation":[-0.3589,46.0168,4.2752],"uv":{"north":{"uv":[19,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0505,-10.168,0.7458],"size":[0.0154,0.1079,0.0224],"pivot":[-0.0351,-10.9085,0.7682],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[22,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0437,-9.9523,0.7631],"size":[0.0154,0.1281,0.0224],"pivot":[-0.0284,-10.6726,0.7855],"rotation":[-0.4217,53.7666,4.1933],"uv":{"north":{"uv":[25,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0284,-9.9523,0.7631],"size":[0.0154,0.1281,0.0224],"pivot":[0.0284,-10.6726,0.7855],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[28,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0351,-10.168,0.7458],"size":[0.0154,0.1079,0.0224],"pivot":[0.0351,-10.9085,0.7682],"rotation":[-0.4217,-53.7666,-4.1933],"uv":{"north":{"uv":[31,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0264,-10.375,0.7307],"size":[0.0217,0.0762,0.0224],"pivot":[-0.0264,-10.2988,0.753],"rotation":[-0.3589,-46.0168,-4.2752],"uv":{"north":{"uv":[34,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1379,-10.6376,0.7379],"size":[0.0205,2.0036,0.0224],"pivot":[0.1584,-8.6339,0.7603],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[38,24],"uv_size":[0.25,1.75]},"east":{"uv":[26,38],"uv_size":[0.25,1.75]},"south":{"uv":[38,26],"uv_size":[0.25,1.75]},"west":{"uv":[27,38],"uv_size":[0.25,1.75]},"up":{"uv":[37,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1379,-8.7891,0.6932],"size":[0.0205,0.1335,0.0224],"pivot":[0.1584,-8.6341,0.791],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[38,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1379,-8.6556,0.6571],"size":[0.0205,0.0217,0.0808],"pivot":[0.1584,-8.6338,0.7379],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[41,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1379,-8.87,0.7156],"size":[0.0205,0.2143,0.0224],"pivot":[0.1584,-8.6342,0.8133],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[44,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,44],"uv_size":[0.25,0.25]},"south":{"uv":[45,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,45],"uv_size":[0.25,0.25]},"up":{"uv":[46,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1379,-8.7055,0.6708],"size":[0.0205,0.05,0.0224],"pivot":[0.1584,-8.634,0.7686],"rotation":[-0.2492,0.0196,4.5334],"uv":{"north":{"uv":[47,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,47],"uv_size":[0.25,0.25]},"south":{"uv":[48,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,48],"uv_size":[0.25,0.25]},"up":{"uv":[49,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1123,-8.9561,0.7365],"size":[0.0205,0.3122,0.0224],"pivot":[0.1328,-8.9561,0.7365],"rotation":[14.7459,0.0196,4.5334],"uv":{"north":{"uv":[50,68],"uv_size":[0.25,0.25]},"east":{"uv":[68,50],"uv_size":[0.25,0.25]},"south":{"uv":[51,68],"uv_size":[0.25,0.25]},"west":{"uv":[68,51],"uv_size":[0.25,0.25]},"up":{"uv":[52,68],"uv_size":[0.25,0.25]},"down":{"uv":[68,52.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group7","parent":"group","pivot":[-0.7521,1.4527,0.874],"rotation":[60,0,0]},{"name":"group8","parent":"group7","pivot":[0.5895,2.7039,3.082],"rotation":[160.4087,34.9817,54.2134]},{"name":"group9","parent":"group7","pivot":[-0.5895,2.7039,3.082],"rotation":[160.4087,-34.9817,-54.2134]},{"name":"group6","parent":"devil","pivot":[0,0.4844,-0.4896],"cubes":[{"origin":[-2.9969,-1.6332,-3.1903],"size":[0.75,2.375,0.75],"pivot":[0,0.4844,-0.4896],"rotation":[83.9752,-4.5852,45.3069],"uv":{"north":{"uv":[21,2],"uv_size":[0.75,2.5]},"east":{"uv":[23,34],"uv_size":[0.75,2.5]},"south":{"uv":[22,38],"uv_size":[0.75,2.5]},"west":{"uv":[11,44],"uv_size":[0.75,2.5]},"up":{"uv":[49,52],"uv_size":[0.75,0.75]},"down":{"uv":[22,53.75],"uv_size":[0.75,-0.75]}}},{"origin":[1.3691,1.5679,-0.2421],"size":[1.7604,0.25,0.5],"pivot":[-0.0764,0.4006,0.2504],"rotation":[130.3895,6.0054,134.8236],"uv":{"north":{"uv":[21,62],"uv_size":[1.75,0.25]},"east":{"uv":[35,63],"uv_size":[0.5,0.25]},"south":{"uv":[62,21],"uv_size":[1.75,0.25]},"west":{"uv":[44,63],"uv_size":[0.5,0.25]},"up":{"uv":[8,54],"uv_size":[1.75,0.5]},"down":{"uv":[54,8.5],"uv_size":[1.75,-0.5]}}},{"origin":[1.3133,-2.0041,-3.4699],"size":[1.7604,0.25,0.5],"pivot":[-0.1321,0.5365,0.2455],"rotation":[40.3895,6.0054,134.8236],"uv":{"north":{"uv":[62,22],"uv_size":[1.75,0.25]},"east":{"uv":[45,63],"uv_size":[0.5,0.25]},"south":{"uv":[62,23],"uv_size":[1.75,0.25]},"west":{"uv":[46,63],"uv_size":[0.5,0.25]},"up":{"uv":[54,9],"uv_size":[1.75,0.5]},"down":{"uv":[10,54.5],"uv_size":[1.75,-0.5]}}},{"origin":[-1.1224,2.2936,-0.8543],"size":[1.7604,0.25,0.5],"pivot":[-0.0328,0.5065,0.258],"rotation":[127.5,1,90],"uv":{"north":{"uv":[62,24],"uv_size":[1.75,0.25]},"east":{"uv":[47,63],"uv_size":[0.5,0.25]},"south":{"uv":[62,25],"uv_size":[1.75,0.25]},"west":{"uv":[48,63],"uv_size":[0.5,0.25]},"up":{"uv":[54,12],"uv_size":[1.75,0.5]},"down":{"uv":[54,13.5],"uv_size":[1.75,-0.5]}}},{"origin":[-1.2218,-2.6239,-4.0898],"size":[1.7604,0.25,0.5],"pivot":[-0.1321,0.5365,0.2455],"rotation":[37.5,1,90],"uv":{"north":{"uv":[62,26],"uv_size":[1.75,0.25]},"east":{"uv":[49,63],"uv_size":[0.5,0.25]},"south":{"uv":[62,27],"uv_size":[1.75,0.25]},"west":{"uv":[50,63],"uv_size":[0.5,0.25]},"up":{"uv":[54,16],"uv_size":[1.75,0.5]},"down":{"uv":[20,54.5],"uv_size":[1.75,-0.5]}}},{"origin":[-3.5784,1.5001,-0.0302],"size":[1.7604,0.25,0.5],"pivot":[-0.0764,0.5423,0.2529],"rotation":[128.9752,-4.5852,45.3069],"uv":{"north":{"uv":[62,28],"uv_size":[1.75,0.25]},"east":{"uv":[51,63],"uv_size":[0.5,0.25]},"south":{"uv":[62,29],"uv_size":[1.75,0.25]},"west":{"uv":[52,63],"uv_size":[0.5,0.25]},"up":{"uv":[22,54],"uv_size":[1.75,0.5]},"down":{"uv":[54,27.5],"uv_size":[1.75,-0.5]}}},{"origin":[-3.6202,-1.9305,-3.261],"size":[1.7604,0.25,0.5],"pivot":[-0.1181,0.4007,0.2449],"rotation":[38.9752,-4.5852,45.3069],"uv":{"north":{"uv":[62,30],"uv_size":[1.75,0.25]},"east":{"uv":[53,63],"uv_size":[0.5,0.25]},"south":{"uv":[62,31],"uv_size":[1.75,0.25]},"west":{"uv":[54,63],"uv_size":[0.5,0.25]},"up":{"uv":[54,28],"uv_size":[1.75,0.5]},"down":{"uv":[54,29.5],"uv_size":[1.75,-0.5]}}},{"origin":[-4.5108,-0.2982,1.755],"size":[1.7604,0.25,0.5],"pivot":[-0.1321,0.5365,0.2455],"rotation":[133.9914,-7.4988,0.1317],"uv":{"north":{"uv":[32,62],"uv_size":[1.75,0.25]},"east":{"uv":[55,63],"uv_size":[0.5,0.25]},"south":{"uv":[62,32],"uv_size":[1.75,0.25]},"west":{"uv":[56,63],"uv_size":[0.5,0.25]},"up":{"uv":[32,54],"uv_size":[1.75,0.5]},"down":{"uv":[54,33.5],"uv_size":[1.75,-0.5]}}},{"origin":[-4.441,-0.1322,-1.461],"size":[1.7604,0.25,0.5],"pivot":[-0.0623,0.4064,0.2524],"rotation":[43.9914,-7.4988,0.1317],"uv":{"north":{"uv":[62,33],"uv_size":[1.75,0.25]},"east":{"uv":[57,63],"uv_size":[0.5,0.25]},"south":{"uv":[34,62],"uv_size":[1.75,0.25]},"west":{"uv":[58,63],"uv_size":[0.5,0.25]},"up":{"uv":[34,54],"uv_size":[1.75,0.5]},"down":{"uv":[54,34.5],"uv_size":[1.75,-0.5]}}},{"origin":[-4.9985,-0.7582,-1.7802],"size":[3,1.25,3],"pivot":[0,0.4844,-0.4896],"rotation":[88.9914,-7.4988,0.1317],"uv":{"north":{"uv":[20,44],"uv_size":[3,1.25]},"east":{"uv":[32,44],"uv_size":[3,1.25]},"south":{"uv":[8,46],"uv_size":[3,1.25]},"west":{"uv":[32,46],"uv_size":[3,1.25]},"up":{"uv":[33,30],"uv_size":[3,3]},"down":{"uv":[33,36],"uv_size":[3,-3]}}},{"origin":[-1.7612,0.574,-1.9893],"size":[0.52,0.26,1.8308],"pivot":[-3.4512,0.704,-1.0738],"rotation":[88.9914,-7.4988,0.1317],"uv":{"north":{"uv":[59,63],"uv_size":[0.5,0.25]},"east":{"uv":[62,34],"uv_size":[1.75,0.25]},"south":{"uv":[60,63],"uv_size":[0.5,0.25]},"west":{"uv":[62,35],"uv_size":[1.75,0.25]},"up":{"uv":[54,35],"uv_size":[0.5,1.75]},"down":{"uv":[54,38.75],"uv_size":[0.5,-1.75]}}},{"origin":[-1.7612,0.574,-1.9892],"size":[0.52,0.26,1.8308],"pivot":[-3.4512,0.704,-1.0738],"rotation":[83.9752,-4.5852,45.3069],"uv":{"north":{"uv":[61,63],"uv_size":[0.5,0.25]},"east":{"uv":[62,36],"uv_size":[1.75,0.25]},"south":{"uv":[62,63],"uv_size":[0.5,0.25]},"west":{"uv":[62,37],"uv_size":[1.75,0.25]},"up":{"uv":[54,39],"uv_size":[0.5,1.75]},"down":{"uv":[54,42.75],"uv_size":[0.5,-1.75]}}},{"origin":[-5.6612,0.574,-1.9893],"size":[0.52,0.26,1.8308],"pivot":[-3.4512,0.704,-1.0738],"rotation":[88.9914,-7.4988,0.1317],"uv":{"north":{"uv":[63,63],"uv_size":[0.5,0.25]},"east":{"uv":[62,38],"uv_size":[1.75,0.25]},"south":{"uv":[8,64],"uv_size":[0.5,0.25]},"west":{"uv":[62,39],"uv_size":[1.75,0.25]},"up":{"uv":[54,43],"uv_size":[0.5,1.75]},"down":{"uv":[44,55.75],"uv_size":[0.5,-1.75]}}},{"origin":[-5.6612,0.574,-1.9892],"size":[0.52,0.26,1.8308],"pivot":[-3.4512,0.704,-1.0738],"rotation":[83.9752,-4.5852,45.3069],"uv":{"north":{"uv":[9,64],"uv_size":[0.5,0.25]},"east":{"uv":[62,40],"uv_size":[1.75,0.25]},"south":{"uv":[10,64],"uv_size":[0.5,0.25]},"west":{"uv":[62,41],"uv_size":[1.75,0.25]},"up":{"uv":[45,54],"uv_size":[0.5,1.75]},"down":{"uv":[46,55.75],"uv_size":[0.5,-1.75]}}},{"origin":[-4.3666,0.574,0.6161],"size":[1.8308,0.26,0.52],"pivot":[-3.4512,0.704,-1.0738],"rotation":[88.9914,-7.4988,0.1317],"uv":{"north":{"uv":[62,42],"uv_size":[1.75,0.25]},"east":{"uv":[11,64],"uv_size":[0.5,0.25]},"south":{"uv":[62,43],"uv_size":[1.75,0.25]},"west":{"uv":[64,14],"uv_size":[0.5,0.25]},"up":{"uv":[47,54],"uv_size":[1.75,0.5]},"down":{"uv":[54,48.5],"uv_size":[1.75,-0.5]}}},{"origin":[-4.3666,0.574,0.6162],"size":[1.8308,0.26,0.52],"pivot":[-3.4512,0.704,-1.0738],"rotation":[83.9752,-4.5852,45.3069],"uv":{"north":{"uv":[44,62],"uv_size":[1.75,0.25]},"east":{"uv":[64,15],"uv_size":[0.5,0.25]},"south":{"uv":[62,44],"uv_size":[1.75,0.25]},"west":{"uv":[64,18],"uv_size":[0.5,0.25]},"up":{"uv":[49,54],"uv_size":[1.75,0.5]},"down":{"uv":[51,54.5],"uv_size":[1.75,-0.5]}}},{"origin":[-4.3666,0.574,-3.2839],"size":[1.8308,0.26,0.52],"pivot":[-3.4512,0.704,-1.0738],"rotation":[88.9914,-7.4988,0.1317],"uv":{"north":{"uv":[62,45],"uv_size":[1.75,0.25]},"east":{"uv":[64,19],"uv_size":[0.5,0.25]},"south":{"uv":[46,62],"uv_size":[1.75,0.25]},"west":{"uv":[64,20],"uv_size":[0.5,0.25]},"up":{"uv":[54,52],"uv_size":[1.75,0.5]},"down":{"uv":[53,54.5],"uv_size":[1.75,-0.5]}}},{"origin":[-4.3666,0.574,-3.2838],"size":[1.8308,0.26,0.52],"pivot":[-3.4512,0.704,-1.0738],"rotation":[83.9752,-4.5852,45.3069],"uv":{"north":{"uv":[62,46],"uv_size":[1.75,0.25]},"east":{"uv":[21,64],"uv_size":[0.5,0.25]},"south":{"uv":[62,47],"uv_size":[1.75,0.25]},"west":{"uv":[64,21],"uv_size":[0.5,0.25]},"up":{"uv":[54,53],"uv_size":[1.75,0.5]},"down":{"uv":[55,0.5],"uv_size":[1.75,-0.5]}}},{"origin":[-4.4004,-1.2944,-2.5657],"size":[3.402,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[81.4914,-7.4988,0.1317],"uv":{"north":{"uv":[8,40],"uv_size":[3.5,1.75]},"east":{"uv":[8,55],"uv_size":[0.5,1.75]},"south":{"uv":[32,40],"uv_size":[3.5,1.75]},"west":{"uv":[9,55],"uv_size":[0.5,1.75]},"up":{"uv":[47,5],"uv_size":[3.5,0.5]},"down":{"uv":[47,8.5],"uv_size":[3.5,-0.5]}}},{"origin":[-2.4629,-1.5082,-2.7802],"size":[1.4645,0.5,1.5355],"pivot":[0,0.4844,-0.4896],"rotation":[88.9914,-7.4988,0.1317],"uv":{"north":{"uv":[58,3],"uv_size":[1.5,0.5]},"east":{"uv":[58,4],"uv_size":[1.5,0.5]},"south":{"uv":[58,5],"uv_size":[1.5,0.5]},"west":{"uv":[58,6],"uv_size":[1.5,0.5]},"up":{"uv":[20,40],"uv_size":[1.5,1.5]},"down":{"uv":[10,43.5],"uv_size":[1.5,-1.5]}}},{"origin":[-5.9985,-1.5082,-1.3157],"size":[5,0.5,2.0711],"inflate":-0.001,"pivot":[0,0.4844,-0.4896],"rotation":[88.9914,-7.4988,0.1317],"uv":{"north":{"uv":[44,29],"uv_size":[5,0.5]},"east":{"uv":[44,41],"uv_size":[2,0.5]},"south":{"uv":[44,48],"uv_size":[5,0.5]},"west":{"uv":[44,47],"uv_size":[2,0.5]},"up":{"uv":[44,11],"uv_size":[5,2]},"down":{"uv":[44,29],"uv_size":[5,-2]}}},{"origin":[-5.1219,-1.5082,-3.8508],"size":[5,0.5,2.0711],"inflate":0.001,"pivot":[0,0.4844,-0.4896],"rotation":[83.9752,-4.5852,45.3069],"uv":{"north":{"uv":[49,13],"uv_size":[5,0.5]},"east":{"uv":[52,12],"uv_size":[2,0.5]},"south":{"uv":[49,16],"uv_size":[5,0.5]},"west":{"uv":[51,52],"uv_size":[2,0.5]},"up":{"uv":[46,32],"uv_size":[5,2]},"down":{"uv":[46,36],"uv_size":[5,-2]}}},{"origin":[-4.534,-1.5082,-2.7802],"size":[2.0711,0.5,5],"inflate":-0.001,"pivot":[0,0.4844,-0.4896],"rotation":[88.9914,-7.4988,0.1317],"uv":{"north":{"uv":[53,10],"uv_size":[2,0.5]},"east":{"uv":[49,27],"uv_size":[5,0.5]},"south":{"uv":[53,11],"uv_size":[2,0.5]},"west":{"uv":[49,28],"uv_size":[5,0.5]},"up":{"uv":[20,6],"uv_size":[2,5]},"down":{"uv":[20,16],"uv_size":[2,-5]}}},{"origin":[-3.6574,-1.5082,-5.3153],"size":[2.0711,0.5,5],"pivot":[0,0.4844,-0.4896],"rotation":[83.9752,-4.5852,45.3069],"uv":{"north":{"uv":[20,53],"uv_size":[2,0.5]},"east":{"uv":[49,29],"uv_size":[5,0.5]},"south":{"uv":[53,30],"uv_size":[2,0.5]},"west":{"uv":[44,49],"uv_size":[5,0.5]},"up":{"uv":[22,24],"uv_size":[2,5]},"down":{"uv":[20,32],"uv_size":[2,-5]}}},{"origin":[-3.2474,-1.1363,-0.0998],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[87.6445,-8.8725,-45.0579],"uv":{"north":{"uv":[23,22],"uv_size":[1,1.75]},"east":{"uv":[10,55],"uv_size":[0.5,1.75]},"south":{"uv":[35,28],"uv_size":[1,1.75]},"west":{"uv":[55,10],"uv_size":[0.5,1.75]},"up":{"uv":[58,18],"uv_size":[1,0.5]},"down":{"uv":[58,19.5],"uv_size":[1,-0.5]}}},{"origin":[-2.3982,-0.9034,-0.0998],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[87.6693,-3.1382,-45.2937],"uv":{"north":{"uv":[23,37],"uv_size":[1,1.75]},"east":{"uv":[11,55],"uv_size":[0.5,1.75]},"south":{"uv":[23,40],"uv_size":[1,1.75]},"west":{"uv":[55,17],"uv_size":[0.5,1.75]},"up":{"uv":[58,20],"uv_size":[1,0.5]},"down":{"uv":[58,21.5],"uv_size":[1,-0.5]}}},{"origin":[-0.7207,-0.9034,0.7703],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[90.5505,-3.8695,-90.0275],"uv":{"north":{"uv":[23,44],"uv_size":[1,1.75]},"east":{"uv":[55,19],"uv_size":[0.5,1.75]},"south":{"uv":[46,30],"uv_size":[1,1.75]},"west":{"uv":[20,55],"uv_size":[0.5,1.75]},"up":{"uv":[58,22],"uv_size":[1,0.5]},"down":{"uv":[58,23.5],"uv_size":[1,-0.5]}}},{"origin":[0.1391,-0.9244,0.7703],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[90.5495,1.8695,-89.9725],"uv":{"north":{"uv":[8,48],"uv_size":[1,1.75]},"east":{"uv":[21,55],"uv_size":[0.5,1.75]},"south":{"uv":[9,48],"uv_size":[1,1.75]},"west":{"uv":[55,21],"uv_size":[0.5,1.75]},"up":{"uv":[58,24],"uv_size":[1,0.5]},"down":{"uv":[58,25.5],"uv_size":[1,-0.5]}}},{"origin":[1.6958,-0.9244,-0.3938],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[89.0767,1.716,-134.6466],"uv":{"north":{"uv":[10,48],"uv_size":[1,1.75]},"east":{"uv":[22,55],"uv_size":[0.5,1.75]},"south":{"uv":[32,48],"uv_size":[1,1.75]},"west":{"uv":[23,55],"uv_size":[0.5,1.75]},"up":{"uv":[58,26],"uv_size":[1,0.5]},"down":{"uv":[58,27.5],"uv_size":[1,-0.5]}}},{"origin":[2.5414,-1.1869,-0.3938],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[89.0691,7.4543,-134.7397],"uv":{"north":{"uv":[33,48],"uv_size":[1,1.75]},"east":{"uv":[55,23],"uv_size":[0.5,1.75]},"south":{"uv":[34,48],"uv_size":[1,1.75]},"west":{"uv":[55,25],"uv_size":[0.5,1.75]},"up":{"uv":[58,28],"uv_size":[1,0.5]},"down":{"uv":[58,29.5],"uv_size":[1,-0.5]}}},{"origin":[2.5866,-1.1869,-2.9104],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[84.0895,4.6446,-179.5704],"uv":{"north":{"uv":[49,11],"uv_size":[1,1.75]},"east":{"uv":[55,30],"uv_size":[0.5,1.75]},"south":{"uv":[20,49],"uv_size":[1,1.75]},"west":{"uv":[32,55],"uv_size":[0.5,1.75]},"up":{"uv":[58,33],"uv_size":[1,0.5]},"down":{"uv":[58,35.5],"uv_size":[1,-0.5]}}},{"origin":[3.4015,-1.5372,-2.9104],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[84.0111,10.3528,179.8298],"uv":{"north":{"uv":[21,49],"uv_size":[1,1.75]},"east":{"uv":[33,55],"uv_size":[0.5,1.75]},"south":{"uv":[22,49],"uv_size":[1,1.75]},"west":{"uv":[34,55],"uv_size":[0.5,1.75]},"up":{"uv":[58,36],"uv_size":[1,0.5]},"down":{"uv":[58,37.5],"uv_size":[1,-0.5]}}},{"origin":[1.4299,-1.5372,-5.3051],"size":[1,1.75,0.5],"inflate":0.001,"pivot":[0,0.4844,-0.4896],"rotation":[78.485,3.1938,135.3993],"uv":{"north":{"uv":[49,48],"uv_size":[1,1.75]},"east":{"uv":[35,55],"uv_size":[0.5,1.75]},"south":{"uv":[50,0],"uv_size":[1,1.75]},"west":{"uv":[55,35],"uv_size":[0.5,1.75]},"up":{"uv":[58,38],"uv_size":[1,0.5]},"down":{"uv":[58,39.5],"uv_size":[1,-0.5]}}},{"origin":[2.2156,-1.7701,-5.3051],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[78.3638,8.8164,134.2419],"uv":{"north":{"uv":[50,2],"uv_size":[1,1.75]},"east":{"uv":[55,37],"uv_size":[0.5,1.75]},"south":{"uv":[50,11],"uv_size":[1,1.75]},"west":{"uv":[55,39],"uv_size":[0.5,1.75]},"up":{"uv":[58,40],"uv_size":[1,0.5]},"down":{"uv":[58,41.5],"uv_size":[1,-0.5]}}},{"origin":[-1.0967,-1.7701,-6.1752],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[75.5446,-1.7788,90.7162],"uv":{"north":{"uv":[23,50],"uv_size":[1,1.75]},"east":{"uv":[55,41],"uv_size":[0.5,1.75]},"south":{"uv":[35,50],"uv_size":[1,1.75]},"west":{"uv":[55,43],"uv_size":[0.5,1.75]},"up":{"uv":[58,42],"uv_size":[1,0.5]},"down":{"uv":[58,43.5],"uv_size":[1,-0.5]}}},{"origin":[-0.3217,-1.7491,-6.1752],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[75.5195,3.7787,89.2826],"uv":{"north":{"uv":[50,48],"uv_size":[1,1.75]},"east":{"uv":[47,55],"uv_size":[0.5,1.75]},"south":{"uv":[49,50],"uv_size":[1,1.75]},"west":{"uv":[48,55],"uv_size":[0.5,1.75]},"up":{"uv":[58,44],"uv_size":[1,0.5]},"down":{"uv":[58,45.5],"uv_size":[1,-0.5]}}},{"origin":[-3.5132,-1.7491,-5.0111],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[76.957,-7.3811,45.9564],"uv":{"north":{"uv":[20,51],"uv_size":[1,1.75]},"east":{"uv":[49,55],"uv_size":[0.5,1.75]},"south":{"uv":[21,51],"uv_size":[1,1.75]},"west":{"uv":[50,55],"uv_size":[0.5,1.75]},"up":{"uv":[58,46],"uv_size":[1,0.5]},"down":{"uv":[58,47.5],"uv_size":[1,-0.5]}}},{"origin":[-2.724,-1.4866,-5.0111],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[77.0604,-1.7886,44.6627],"uv":{"north":{"uv":[22,51],"uv_size":[1,1.75]},"east":{"uv":[51,55],"uv_size":[0.5,1.75]},"south":{"uv":[51,32],"uv_size":[1,1.75]},"west":{"uv":[52,55],"uv_size":[0.5,1.75]},"up":{"uv":[58,48],"uv_size":[1,0.5]},"down":{"uv":[58,49.5],"uv_size":[1,-0.5]}}},{"origin":[-4.4041,-1.4866,-2.4945],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[81.9781,-10.3404,0.5354],"uv":{"north":{"uv":[51,34],"uv_size":[1,1.75]},"east":{"uv":[53,55],"uv_size":[0.5,1.75]},"south":{"uv":[51,36],"uv_size":[1,1.75]},"west":{"uv":[54,55],"uv_size":[0.5,1.75]},"up":{"uv":[58,50],"uv_size":[1,0.5]},"down":{"uv":[58,51.5],"uv_size":[1,-0.5]}}},{"origin":[-3.5841,-1.1363,-2.4945],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[82.083,-4.6567,-0.2669],"uv":{"north":{"uv":[51,38],"uv_size":[1,1.75]},"east":{"uv":[55,54],"uv_size":[0.5,1.75]},"south":{"uv":[51,40],"uv_size":[1,1.75]},"west":{"uv":[56,1],"uv_size":[0.5,1.75]},"up":{"uv":[58,52],"uv_size":[1,0.5]},"down":{"uv":[58,53.5],"uv_size":[1,-0.5]}}},{"origin":[2.2469,-1.6332,-3.1903],"size":[0.75,2.375,0.75],"pivot":[0,0.4844,-0.4896],"rotation":[83.9752,4.5852,-45.3069],"uv":{"north":{"uv":[35,44],"uv_size":[0.75,2.5]},"east":{"uv":[11,47],"uv_size":[0.75,2.5]},"south":{"uv":[23,47],"uv_size":[0.75,2.5]},"west":{"uv":[35,47],"uv_size":[0.75,2.5]},"up":{"uv":[55,1],"uv_size":[0.75,0.75]},"down":{"uv":[56,48.75],"uv_size":[0.75,-0.75]}}},{"origin":[-3.1295,1.5679,-0.2421],"size":[1.7604,0.25,0.5],"pivot":[0.0764,0.4006,0.2504],"rotation":[130.3895,-6.0054,-134.8236],"uv":{"north":{"uv":[48,62],"uv_size":[1.75,0.25]},"east":{"uv":[22,64],"uv_size":[0.5,0.25]},"south":{"uv":[62,48],"uv_size":[1.75,0.25]},"west":{"uv":[64,22],"uv_size":[0.5,0.25]},"up":{"uv":[55,15],"uv_size":[1.75,0.5]},"down":{"uv":[55,32.5],"uv_size":[1.75,-0.5]}}},{"origin":[-3.0737,-2.0041,-3.4699],"size":[1.7604,0.25,0.5],"pivot":[0.1321,0.5365,0.2455],"rotation":[40.3895,-6.0054,-134.8236],"uv":{"north":{"uv":[62,49],"uv_size":[1.75,0.25]},"east":{"uv":[23,64],"uv_size":[0.5,0.25]},"south":{"uv":[50,62],"uv_size":[1.75,0.25]},"west":{"uv":[64,23],"uv_size":[0.5,0.25]},"up":{"uv":[56,3],"uv_size":[1.75,0.5]},"down":{"uv":[56,4.5],"uv_size":[1.75,-0.5]}}},{"origin":[-0.638,2.2936,-0.8543],"size":[1.7604,0.25,0.5],"pivot":[0.0328,0.5065,0.258],"rotation":[127.5,-1,-90],"uv":{"north":{"uv":[62,50],"uv_size":[1.75,0.25]},"east":{"uv":[64,24],"uv_size":[0.5,0.25]},"south":{"uv":[62,51],"uv_size":[1.75,0.25]},"west":{"uv":[64,25],"uv_size":[0.5,0.25]},"up":{"uv":[56,5],"uv_size":[1.75,0.5]},"down":{"uv":[56,6.5],"uv_size":[1.75,-0.5]}}},{"origin":[-0.5386,-2.6239,-4.0898],"size":[1.7604,0.25,0.5],"pivot":[0.1321,0.5365,0.2455],"rotation":[37.5,-1,-90],"uv":{"north":{"uv":[52,62],"uv_size":[1.75,0.25]},"east":{"uv":[64,26],"uv_size":[0.5,0.25]},"south":{"uv":[62,52],"uv_size":[1.75,0.25]},"west":{"uv":[64,27],"uv_size":[0.5,0.25]},"up":{"uv":[56,7],"uv_size":[1.75,0.5]},"down":{"uv":[56,8.5],"uv_size":[1.75,-0.5]}}},{"origin":[1.818,1.5001,-0.0302],"size":[1.7604,0.25,0.5],"pivot":[0.0764,0.5423,0.2529],"rotation":[128.9752,4.5852,-45.3069],"uv":{"north":{"uv":[62,53],"uv_size":[1.75,0.25]},"east":{"uv":[64,28],"uv_size":[0.5,0.25]},"south":{"uv":[54,62],"uv_size":[1.75,0.25]},"west":{"uv":[64,29],"uv_size":[0.5,0.25]},"up":{"uv":[56,9],"uv_size":[1.75,0.5]},"down":{"uv":[56,10.5],"uv_size":[1.75,-0.5]}}},{"origin":[1.8598,-1.9305,-3.261],"size":[1.7604,0.25,0.5],"pivot":[0.1181,0.4007,0.2449],"rotation":[38.9752,4.5852,-45.3069],"uv":{"north":{"uv":[62,54],"uv_size":[1.75,0.25]},"east":{"uv":[64,30],"uv_size":[0.5,0.25]},"south":{"uv":[62,55],"uv_size":[1.75,0.25]},"west":{"uv":[64,31],"uv_size":[0.5,0.25]},"up":{"uv":[56,11],"uv_size":[1.75,0.5]},"down":{"uv":[56,12.5],"uv_size":[1.75,-0.5]}}},{"origin":[2.7504,-0.2982,1.755],"size":[1.7604,0.25,0.5],"pivot":[0.1321,0.5365,0.2455],"rotation":[133.9914,7.4988,-0.1317],"uv":{"north":{"uv":[56,62],"uv_size":[1.75,0.25]},"east":{"uv":[32,64],"uv_size":[0.5,0.25]},"south":{"uv":[62,56],"uv_size":[1.75,0.25]},"west":{"uv":[64,32],"uv_size":[0.5,0.25]},"up":{"uv":[56,13],"uv_size":[1.75,0.5]},"down":{"uv":[56,14.5],"uv_size":[1.75,-0.5]}}},{"origin":[2.6806,-0.1322,-1.461],"size":[1.7604,0.25,0.5],"pivot":[0.0623,0.4064,0.2524],"rotation":[43.9914,7.4988,-0.1317],"uv":{"north":{"uv":[62,57],"uv_size":[1.75,0.25]},"east":{"uv":[33,64],"uv_size":[0.5,0.25]},"south":{"uv":[58,62],"uv_size":[1.75,0.25]},"west":{"uv":[64,33],"uv_size":[0.5,0.25]},"up":{"uv":[56,16],"uv_size":[1.75,0.5]},"down":{"uv":[56,17.5],"uv_size":[1.75,-0.5]}}},{"origin":[1.9985,-0.7582,-1.7802],"size":[3,1.25,3],"pivot":[0,0.4844,-0.4896],"rotation":[88.9914,7.4988,-0.1317],"uv":{"north":{"uv":[47,17],"uv_size":[3,1.25]},"east":{"uv":[47,19],"uv_size":[3,1.25]},"south":{"uv":[20,47],"uv_size":[3,1.25]},"west":{"uv":[47,21],"uv_size":[3,1.25]},"up":{"uv":[20,34],"uv_size":[3,3]},"down":{"uv":[33,39],"uv_size":[3,-3]}}},{"origin":[1.2412,0.574,-1.9893],"size":[0.52,0.26,1.8308],"pivot":[3.4512,0.704,-1.0738],"rotation":[88.9914,7.4988,-0.1317],"uv":{"north":{"uv":[34,64],"uv_size":[0.5,0.25]},"east":{"uv":[62,58],"uv_size":[1.75,0.25]},"south":{"uv":[64,34],"uv_size":[0.5,0.25]},"west":{"uv":[62,59],"uv_size":[1.75,0.25]},"up":{"uv":[56,18],"uv_size":[0.5,1.75]},"down":{"uv":[56,21.75],"uv_size":[0.5,-1.75]}}},{"origin":[1.2412,0.574,-1.9892],"size":[0.52,0.26,1.8308],"pivot":[3.4512,0.704,-1.0738],"rotation":[83.9752,4.5852,-45.3069],"uv":{"north":{"uv":[35,64],"uv_size":[0.5,0.25]},"east":{"uv":[60,62],"uv_size":[1.75,0.25]},"south":{"uv":[64,35],"uv_size":[0.5,0.25]},"west":{"uv":[62,60],"uv_size":[1.75,0.25]},"up":{"uv":[56,22],"uv_size":[0.5,1.75]},"down":{"uv":[56,25.75],"uv_size":[0.5,-1.75]}}},{"origin":[5.1413,0.574,-1.9893],"size":[0.52,0.26,1.8308],"pivot":[3.4512,0.704,-1.0738],"rotation":[88.9914,7.4988,-0.1317],"uv":{"north":{"uv":[64,36],"uv_size":[0.5,0.25]},"east":{"uv":[62,61],"uv_size":[1.75,0.25]},"south":{"uv":[64,37],"uv_size":[0.5,0.25]},"west":{"uv":[62,62],"uv_size":[1.75,0.25]},"up":{"uv":[56,26],"uv_size":[0.5,1.75]},"down":{"uv":[56,29.75],"uv_size":[0.5,-1.75]}}},{"origin":[5.1412,0.574,-1.9892],"size":[0.52,0.26,1.8308],"pivot":[3.4512,0.704,-1.0738],"rotation":[83.9752,4.5852,-45.3069],"uv":{"north":{"uv":[64,38],"uv_size":[0.5,0.25]},"east":{"uv":[63,0],"uv_size":[1.75,0.25]},"south":{"uv":[64,39],"uv_size":[0.5,0.25]},"west":{"uv":[63,1],"uv_size":[1.75,0.25]},"up":{"uv":[56,30],"uv_size":[0.5,1.75]},"down":{"uv":[56,34.75],"uv_size":[0.5,-1.75]}}},{"origin":[2.5358,0.574,0.6161],"size":[1.8308,0.26,0.52],"pivot":[3.4512,0.704,-1.0738],"rotation":[88.9914,7.4988,-0.1317],"uv":{"north":{"uv":[63,2],"uv_size":[1.75,0.25]},"east":{"uv":[64,40],"uv_size":[0.5,0.25]},"south":{"uv":[63,3],"uv_size":[1.75,0.25]},"west":{"uv":[64,41],"uv_size":[0.5,0.25]},"up":{"uv":[56,35],"uv_size":[1.75,0.5]},"down":{"uv":[56,36.5],"uv_size":[1.75,-0.5]}}},{"origin":[2.5358,0.574,0.6162],"size":[1.8308,0.26,0.52],"pivot":[3.4512,0.704,-1.0738],"rotation":[83.9752,4.5852,-45.3069],"uv":{"north":{"uv":[63,4],"uv_size":[1.75,0.25]},"east":{"uv":[64,42],"uv_size":[0.5,0.25]},"south":{"uv":[63,5],"uv_size":[1.75,0.25]},"west":{"uv":[64,43],"uv_size":[0.5,0.25]},"up":{"uv":[56,37],"uv_size":[1.75,0.5]},"down":{"uv":[56,38.5],"uv_size":[1.75,-0.5]}}},{"origin":[2.5358,0.574,-3.2839],"size":[1.8308,0.26,0.52],"pivot":[3.4512,0.704,-1.0738],"rotation":[88.9914,7.4988,-0.1317],"uv":{"north":{"uv":[63,6],"uv_size":[1.75,0.25]},"east":{"uv":[44,64],"uv_size":[0.5,0.25]},"south":{"uv":[63,7],"uv_size":[1.75,0.25]},"west":{"uv":[64,44],"uv_size":[0.5,0.25]},"up":{"uv":[56,39],"uv_size":[1.75,0.5]},"down":{"uv":[56,40.5],"uv_size":[1.75,-0.5]}}},{"origin":[2.5358,0.574,-3.2838],"size":[1.8308,0.26,0.52],"pivot":[3.4512,0.704,-1.0738],"rotation":[83.9752,4.5852,-45.3069],"uv":{"north":{"uv":[8,63],"uv_size":[1.75,0.25]},"east":{"uv":[45,64],"uv_size":[0.5,0.25]},"south":{"uv":[63,8],"uv_size":[1.75,0.25]},"west":{"uv":[64,45],"uv_size":[0.5,0.25]},"up":{"uv":[56,41],"uv_size":[1.75,0.5]},"down":{"uv":[56,42.5],"uv_size":[1.75,-0.5]}}},{"origin":[0.9985,-1.2944,-2.5657],"size":[3.402,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[81.4914,7.4988,-0.1317],"uv":{"north":{"uv":[20,42],"uv_size":[3.5,1.75]},"east":{"uv":[56,43],"uv_size":[0.5,1.75]},"south":{"uv":[32,42],"uv_size":[3.5,1.75]},"west":{"uv":[44,56],"uv_size":[0.5,1.75]},"up":{"uv":[8,50],"uv_size":[3.5,0.5]},"down":{"uv":[51,15.5],"uv_size":[3.5,-0.5]}}},{"origin":[0.9985,-1.5082,-2.7802],"size":[1.4645,0.5,1.5355],"pivot":[0,0.4844,-0.4896],"rotation":[88.9914,7.4988,-0.1317],"uv":{"north":{"uv":[58,7],"uv_size":[1.5,0.5]},"east":{"uv":[58,8],"uv_size":[1.5,0.5]},"south":{"uv":[58,9],"uv_size":[1.5,0.5]},"west":{"uv":[58,10],"uv_size":[1.5,0.5]},"up":{"uv":[44,3],"uv_size":[1.5,1.5]},"down":{"uv":[44,15.5],"uv_size":[1.5,-1.5]}}},{"origin":[0.9985,-1.5082,-1.3157],"size":[5,0.5,2.0711],"inflate":-0.001,"pivot":[0,0.4844,-0.4896],"rotation":[88.9914,7.4988,-0.1317],"uv":{"north":{"uv":[50,17],"uv_size":[5,0.5]},"east":{"uv":[53,31],"uv_size":[2,0.5]},"south":{"uv":[50,18],"uv_size":[5,0.5]},"west":{"uv":[53,32],"uv_size":[2,0.5]},"up":{"uv":[46,36],"uv_size":[5,2]},"down":{"uv":[46,40],"uv_size":[5,-2]}}},{"origin":[0.1219,-1.5082,-3.8508],"size":[5,0.5,2.0711],"inflate":0.001,"pivot":[0,0.4844,-0.4896],"rotation":[83.9752,4.5852,-45.3069],"uv":{"north":{"uv":[50,19],"uv_size":[5,0.5]},"east":{"uv":[54,2],"uv_size":[2,0.5]},"south":{"uv":[50,20],"uv_size":[5,0.5]},"west":{"uv":[54,3],"uv_size":[2,0.5]},"up":{"uv":[46,40],"uv_size":[5,2]},"down":{"uv":[46,44],"uv_size":[5,-2]}}},{"origin":[2.4629,-1.5082,-2.7802],"size":[2.0711,0.5,5],"inflate":-0.001,"pivot":[0,0.4844,-0.4896],"rotation":[88.9914,7.4988,-0.1317],"uv":{"north":{"uv":[54,4],"uv_size":[2,0.5]},"east":{"uv":[50,21],"uv_size":[5,0.5]},"south":{"uv":[54,5],"uv_size":[2,0.5]},"west":{"uv":[50,22],"uv_size":[5,0.5]},"up":{"uv":[8,29],"uv_size":[2,5]},"down":{"uv":[22,34],"uv_size":[2,-5]}}},{"origin":[1.5863,-1.5082,-5.3153],"size":[2.0711,0.5,5],"pivot":[0,0.4844,-0.4896],"rotation":[83.9752,4.5852,-45.3069],"uv":{"north":{"uv":[54,6],"uv_size":[2,0.5]},"east":{"uv":[50,23],"uv_size":[5,0.5]},"south":{"uv":[54,7],"uv_size":[2,0.5]},"west":{"uv":[50,24],"uv_size":[5,0.5]},"up":{"uv":[32,0],"uv_size":[2,5]},"down":{"uv":[32,10],"uv_size":[2,-5]}}},{"origin":[2.2474,-1.1363,-0.0998],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[87.6445,8.8725,45.0579],"uv":{"north":{"uv":[51,42],"uv_size":[1,1.75]},"east":{"uv":[45,56],"uv_size":[0.5,1.75]},"south":{"uv":[44,51],"uv_size":[1,1.75]},"west":{"uv":[46,56],"uv_size":[0.5,1.75]},"up":{"uv":[58,54],"uv_size":[1,0.5]},"down":{"uv":[58,55.5],"uv_size":[1,-0.5]}}},{"origin":[1.3982,-0.9034,-0.0998],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[87.6693,3.1382,45.2937],"uv":{"north":{"uv":[51,44],"uv_size":[1,1.75]},"east":{"uv":[56,52],"uv_size":[0.5,1.75]},"south":{"uv":[45,51],"uv_size":[1,1.75]},"west":{"uv":[56,54],"uv_size":[0.5,1.75]},"up":{"uv":[58,56],"uv_size":[1,0.5]},"down":{"uv":[58,57.5],"uv_size":[1,-0.5]}}},{"origin":[-0.2793,-0.9034,0.7703],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[90.5505,3.8695,90.0275],"uv":{"north":{"uv":[46,51],"uv_size":[1,1.75]},"east":{"uv":[57,0],"uv_size":[0.5,1.75]},"south":{"uv":[51,46],"uv_size":[1,1.75]},"west":{"uv":[8,57],"uv_size":[0.5,1.75]},"up":{"uv":[58,58],"uv_size":[1,0.5]},"down":{"uv":[59,2.5],"uv_size":[1,-0.5]}}},{"origin":[-1.1391,-0.9244,0.7703],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[90.5495,-1.8695,89.9725],"uv":{"north":{"uv":[47,51],"uv_size":[1,1.75]},"east":{"uv":[9,57],"uv_size":[0.5,1.75]},"south":{"uv":[48,51],"uv_size":[1,1.75]},"west":{"uv":[10,57],"uv_size":[0.5,1.75]},"up":{"uv":[11,59],"uv_size":[1,0.5]},"down":{"uv":[59,13.5],"uv_size":[1,-0.5]}}},{"origin":[-2.6958,-0.9244,-0.3938],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[89.0767,-1.716,134.6466],"uv":{"north":{"uv":[51,48],"uv_size":[1,1.75]},"east":{"uv":[11,57],"uv_size":[0.5,1.75]},"south":{"uv":[50,51],"uv_size":[1,1.75]},"west":{"uv":[57,18],"uv_size":[0.5,1.75]},"up":{"uv":[59,14],"uv_size":[1,0.5]},"down":{"uv":[59,15.5],"uv_size":[1,-0.5]}}},{"origin":[-3.5414,-1.1869,-0.3938],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[89.0691,-7.4543,134.7397],"uv":{"north":{"uv":[51,50],"uv_size":[1,1.75]},"east":{"uv":[20,57],"uv_size":[0.5,1.75]},"south":{"uv":[52,0],"uv_size":[1,1.75]},"west":{"uv":[57,20],"uv_size":[0.5,1.75]},"up":{"uv":[59,16],"uv_size":[1,0.5]},"down":{"uv":[59,17.5],"uv_size":[1,-0.5]}}},{"origin":[-3.5866,-1.1869,-2.9104],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[84.0895,-4.6446,179.5704],"uv":{"north":{"uv":[52,2],"uv_size":[1,1.75]},"east":{"uv":[21,57],"uv_size":[0.5,1.75]},"south":{"uv":[52,4],"uv_size":[1,1.75]},"west":{"uv":[22,57],"uv_size":[0.5,1.75]},"up":{"uv":[59,18],"uv_size":[1,0.5]},"down":{"uv":[59,19.5],"uv_size":[1,-0.5]}}},{"origin":[-4.4015,-1.5372,-2.9104],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[84.0111,-10.3528,-179.8298],"uv":{"north":{"uv":[52,6],"uv_size":[1,1.75]},"east":{"uv":[57,22],"uv_size":[0.5,1.75]},"south":{"uv":[8,52],"uv_size":[1,1.75]},"west":{"uv":[23,57],"uv_size":[0.5,1.75]},"up":{"uv":[20,59],"uv_size":[1,0.5]},"down":{"uv":[59,20.5],"uv_size":[1,-0.5]}}},{"origin":[-2.4299,-1.5372,-5.3051],"size":[1,1.75,0.5],"inflate":0.001,"pivot":[0,0.4844,-0.4896],"rotation":[78.485,-3.1938,-135.3993],"uv":{"north":{"uv":[52,8],"uv_size":[1,1.75]},"east":{"uv":[57,24],"uv_size":[0.5,1.75]},"south":{"uv":[9,52],"uv_size":[1,1.75]},"west":{"uv":[57,26],"uv_size":[0.5,1.75]},"up":{"uv":[21,59],"uv_size":[1,0.5]},"down":{"uv":[62,7.5],"uv_size":[1,-0.5]}}},{"origin":[-3.2156,-1.7701,-5.3051],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[78.3638,-8.8164,-134.2419],"uv":{"north":{"uv":[10,52],"uv_size":[1,1.75]},"east":{"uv":[57,28],"uv_size":[0.5,1.75]},"south":{"uv":[52,10],"uv_size":[1,1.75]},"west":{"uv":[57,30],"uv_size":[0.5,1.75]},"up":{"uv":[8,62],"uv_size":[1,0.5]},"down":{"uv":[62,8.5],"uv_size":[1,-0.5]}}},{"origin":[0.0967,-1.7701,-6.1752],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[75.5446,1.7788,-90.7162],"uv":{"north":{"uv":[11,52],"uv_size":[1,1.75]},"east":{"uv":[32,57],"uv_size":[0.5,1.75]},"south":{"uv":[23,52],"uv_size":[1,1.75]},"west":{"uv":[57,32],"uv_size":[0.5,1.75]},"up":{"uv":[9,62],"uv_size":[1,0.5]},"down":{"uv":[62,9.5],"uv_size":[1,-0.5]}}},{"origin":[-0.6783,-1.7491,-6.1752],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[75.5195,-3.7787,-89.2826],"uv":{"north":{"uv":[52,30],"uv_size":[1,1.75]},"east":{"uv":[33,57],"uv_size":[0.5,1.75]},"south":{"uv":[52,32],"uv_size":[1,1.75]},"west":{"uv":[34,57],"uv_size":[0.5,1.75]},"up":{"uv":[10,62],"uv_size":[1,0.5]},"down":{"uv":[62,10.5],"uv_size":[1,-0.5]}}},{"origin":[2.5132,-1.7491,-5.0111],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[76.957,7.3811,-45.9564],"uv":{"north":{"uv":[52,34],"uv_size":[1,1.75]},"east":{"uv":[35,57],"uv_size":[0.5,1.75]},"south":{"uv":[52,36],"uv_size":[1,1.75]},"west":{"uv":[57,43],"uv_size":[0.5,1.75]},"up":{"uv":[11,62],"uv_size":[1,0.5]},"down":{"uv":[62,11.5],"uv_size":[1,-0.5]}}},{"origin":[1.724,-1.4866,-5.0111],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[77.0604,1.7886,-44.6627],"uv":{"north":{"uv":[52,38],"uv_size":[1,1.75]},"east":{"uv":[57,45],"uv_size":[0.5,1.75]},"south":{"uv":[52,40],"uv_size":[1,1.75]},"west":{"uv":[47,57],"uv_size":[0.5,1.75]},"up":{"uv":[62,12],"uv_size":[1,0.5]},"down":{"uv":[62,13.5],"uv_size":[1,-0.5]}}},{"origin":[3.4041,-1.4866,-2.4945],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[81.9781,10.3404,-0.5354],"uv":{"north":{"uv":[52,42],"uv_size":[1,1.75]},"east":{"uv":[57,47],"uv_size":[0.5,1.75]},"south":{"uv":[52,44],"uv_size":[1,1.75]},"west":{"uv":[48,57],"uv_size":[0.5,1.75]},"up":{"uv":[62,14],"uv_size":[1,0.5]},"down":{"uv":[62,15.5],"uv_size":[1,-0.5]}}},{"origin":[2.5841,-1.1363,-2.4945],"size":[1,1.75,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[82.083,4.6567,0.2669],"uv":{"north":{"uv":[52,46],"uv_size":[1,1.75]},"east":{"uv":[49,57],"uv_size":[0.5,1.75]},"south":{"uv":[52,48],"uv_size":[1,1.75]},"west":{"uv":[57,49],"uv_size":[0.5,1.75]},"up":{"uv":[62,16],"uv_size":[1,0.5]},"down":{"uv":[62,17.5],"uv_size":[1,-0.5]}}},{"origin":[-1.25,-1.8062,0.8556],"size":[2.5,0.375,0.5],"pivot":[0,0.4844,-0.4896],"rotation":[-1,0,0],"uv":{"north":{"uv":[44,58],"uv_size":[2.5,0.25]},"east":{"uv":[46,64],"uv_size":[0.5,0.25]},"south":{"uv":[8,59],"uv_size":[2.5,0.25]},"west":{"uv":[64,46],"uv_size":[0.5,0.25]},"up":{"uv":[48,4],"uv_size":[2.5,0.5]},"down":{"uv":[32,50.5],"uv_size":[2.5,-0.5]}}},{"origin":[-1.75,0.1938,-0.8944],"size":[0.5,0.3125,1.75],"pivot":[0,0.4844,-0.4896],"rotation":[-1,0,0],"uv":{"north":{"uv":[47,64],"uv_size":[0.5,0.25]},"east":{"uv":[63,9],"uv_size":[1.75,0.25]},"south":{"uv":[64,47],"uv_size":[0.5,0.25]},"west":{"uv":[10,63],"uv_size":[1.75,0.25]},"up":{"uv":[50,57],"uv_size":[0.5,1.75]},"down":{"uv":[51,58.75],"uv_size":[0.5,-1.75]}}},{"origin":[-1.3059,0.9418,-0.8944],"size":[0.4375,0.4419,1.75],"inflate":-0.001,"pivot":[0,0.4844,-0.4896],"rotation":[-0.7071,-0.7071,-44.9957],"uv":{"north":{"uv":[63,20],"uv_size":[0.5,0.5]},"east":{"uv":[55,56],"uv_size":[1.75,0.5]},"south":{"uv":[21,63],"uv_size":[0.5,0.5]},"west":{"uv":[57,2],"uv_size":[1.75,0.5]},"up":{"uv":[57,51],"uv_size":[0.5,1.75]},"down":{"uv":[52,58.75],"uv_size":[0.5,-1.75]}}},{"origin":[-1.75,-0.5562,-0.8944],"size":[0.8125,0.75,1.75],"pivot":[0,0.4844,-0.4896],"rotation":[-1,0,0],"uv":{"north":{"uv":[58,13],"uv_size":[0.75,0.75]},"east":{"uv":[8,34],"uv_size":[1.75,0.75]},"south":{"uv":[58,14],"uv_size":[0.75,0.75]},"west":{"uv":[9,39],"uv_size":[1.75,0.75]},"up":{"uv":[53,2],"uv_size":[0.75,1.75]},"down":{"uv":[53,5.75],"uv_size":[0.75,-1.75]}}},{"origin":[0.8684,0.9418,-0.8944],"size":[0.4375,0.4419,1.75],"inflate":-0.001,"pivot":[0,0.4844,-0.4896],"rotation":[-0.7071,0.7071,44.9957],"uv":{"north":{"uv":[22,63],"uv_size":[0.5,0.5]},"east":{"uv":[57,15],"uv_size":[1.75,0.5]},"south":{"uv":[32,63],"uv_size":[0.5,0.5]},"west":{"uv":[57,34],"uv_size":[1.75,0.5]},"up":{"uv":[53,57],"uv_size":[0.5,1.75]},"down":{"uv":[57,54.75],"uv_size":[0.5,-1.75]}}},{"origin":[1.25,0.1938,-0.8944],"size":[0.5,0.3125,1.75],"pivot":[0,0.4844,-0.4896],"rotation":[-1,0,0],"uv":{"north":{"uv":[48,64],"uv_size":[0.5,0.25]},"east":{"uv":[63,10],"uv_size":[1.75,0.25]},"south":{"uv":[64,48],"uv_size":[0.5,0.25]},"west":{"uv":[63,11],"uv_size":[1.75,0.25]},"up":{"uv":[57,55],"uv_size":[0.5,1.75]},"down":{"uv":[57,58.75],"uv_size":[0.5,-1.75]}}},{"origin":[0.9375,-0.5562,-0.8944],"size":[0.8125,0.75,1.75],"pivot":[0,0.4844,-0.4896],"rotation":[-1,0,0],"uv":{"north":{"uv":[58,16],"uv_size":[0.75,0.75]},"east":{"uv":[8,42],"uv_size":[1.75,0.75]},"south":{"uv":[58,17],"uv_size":[0.75,0.75]},"west":{"uv":[44,35],"uv_size":[1.75,0.75]},"up":{"uv":[53,6],"uv_size":[0.75,1.75]},"down":{"uv":[53,9.75],"uv_size":[0.75,-1.75]}}},{"origin":[-2.25,-1.5068,-1.1446],"size":[4.5,0.9375,0.5],"inflate":0.001,"pivot":[0,0.4713,0.2603],"rotation":[-1,0,0],"uv":{"north":{"uv":[44,13],"uv_size":[4.5,1]},"east":{"uv":[62,18],"uv_size":[0.5,1]},"south":{"uv":[44,16],"uv_size":[4.5,1]},"west":{"uv":[62,19],"uv_size":[0.5,1]},"up":{"uv":[50,25],"uv_size":[4.5,0.5]},"down":{"uv":[50,26.5],"uv_size":[4.5,-0.5]}}},{"origin":[-0.75,-0.5562,-0.8944],"size":[1.5,2.125,2.25],"pivot":[0,0.4844,-0.4896],"rotation":[-1,0,0],"uv":{"north":{"uv":[20,0],"uv_size":[1.5,2]},"east":{"uv":[8,44],"uv_size":[2.25,2]},"south":{"uv":[20,32],"uv_size":[1.5,2]},"west":{"uv":[44,9],"uv_size":[2.25,2]},"up":{"uv":[20,16],"uv_size":[1.5,2.25]},"down":{"uv":[10,26.25],"uv_size":[1.5,-2.25]}}},{"origin":[-0.75,-1.6812,-1.3944],"size":[1.5,1.125,2.25],"pivot":[0,0.4844,-0.4896],"rotation":[-1,0,0],"uv":{"north":{"uv":[48,0],"uv_size":[1.5,1.25]},"east":{"uv":[47,23],"uv_size":[2.25,1.25]},"south":{"uv":[48,2],"uv_size":[1.5,1.25]},"west":{"uv":[47,25],"uv_size":[2.25,1.25]},"up":{"uv":[10,32],"uv_size":[1.5,2.25]},"down":{"uv":[44,2.25],"uv_size":[1.5,-2.25]}}},{"origin":[-1.25,-1.4312,-0.6444],"size":[2.5,0.875,2],"pivot":[0,0.4844,-0.4896],"rotation":[-1,0,0],"uv":{"north":{"uv":[20,37],"uv_size":[2.5,1]},"east":{"uv":[20,19],"uv_size":[2,1]},"south":{"uv":[33,39],"uv_size":[2.5,1]},"west":{"uv":[10,27],"uv_size":[2,1]},"up":{"uv":[44,5],"uv_size":[2.5,2]},"down":{"uv":[44,9],"uv_size":[2.5,-2]}}},{"origin":[-2.25,-1.611,-0.6695],"size":[4.5,0.5,1.8125],"pivot":[0,0.4844,-0.4896],"rotation":[-8.5,0,0],"uv":{"north":{"uv":[44,50],"uv_size":[4.5,0.5]},"east":{"uv":[58,0],"uv_size":[1.75,0.5]},"south":{"uv":[51,14],"uv_size":[4.5,0.5]},"west":{"uv":[58,1],"uv_size":[1.75,0.5]},"up":{"uv":[46,44],"uv_size":[4.5,1.75]},"down":{"uv":[46,47.75],"uv_size":[4.5,-1.75]}}},{"origin":[2.1926,9.8679,-1.9825],"size":[0.125,0.25,1.375],"pivot":[0.1246,5.5549,-2.9805],"rotation":[-20.941,-8.4211,-20.941],"uv":{"north":{"uv":[49,64],"uv_size":[0.25,0.25]},"east":{"uv":[63,12],"uv_size":[1.5,0.25]},"south":{"uv":[64,49],"uv_size":[0.25,0.25]},"west":{"uv":[63,13],"uv_size":[1.5,0.25]},"up":{"uv":[23,62],"uv_size":[0.25,1.5]},"down":{"uv":[63,15.5],"uv_size":[0.25,-1.5]}}},{"origin":[-2.3084,9.8209,-1.9825],"size":[0.125,0.25,1.375],"pivot":[-0.0004,5.5549,-2.9805],"rotation":[-20.941,8.4211,20.941],"uv":{"north":{"uv":[50,64],"uv_size":[0.25,0.25]},"east":{"uv":[63,16],"uv_size":[1.5,0.25]},"south":{"uv":[64,50],"uv_size":[0.25,0.25]},"west":{"uv":[63,17],"uv_size":[1.5,0.25]},"up":{"uv":[63,18],"uv_size":[0.25,1.5]},"down":{"uv":[20,64.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.4994,9.8547,-1.9422],"size":[1,0.438,1.375],"pivot":[-0.0066,5.6127,-2.7412],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[20,62],"uv_size":[1,0.5]},"east":{"uv":[58,11],"uv_size":[1.5,0.5]},"south":{"uv":[62,20],"uv_size":[1,0.5]},"west":{"uv":[58,12],"uv_size":[1.5,0.5]},"up":{"uv":[52,50],"uv_size":[1,1.5]},"down":{"uv":[53,1.5],"uv_size":[1,-1.5]}}},{"origin":[-0.3744,0.0099,-0.5665],"size":[0.75,9.437,0.125],"uv":{"north":{"uv":[34,0],"uv_size":[0.75,9.5]},"east":{"uv":[44,17],"uv_size":[0.25,9.5]},"south":{"uv":[34,10],"uv_size":[0.75,9.5]},"west":{"uv":[45,17],"uv_size":[0.25,9.5]},"up":{"uv":[33,63],"uv_size":[0.75,0.25]},"down":{"uv":[34,63.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.5004,0.0099,-0.4425],"size":[1.001,9.439,0.626],"uv":{"north":{"uv":[23,12],"uv_size":[1,9.5]},"east":{"uv":[34,20],"uv_size":[0.75,9.5]},"south":{"uv":[32,10],"uv_size":[1,9.5]},"west":{"uv":[35,15],"uv_size":[0.75,9.5]},"up":{"uv":[21,26],"uv_size":[1,0.75]},"down":{"uv":[35,52.75],"uv_size":[1,-0.75]}}},{"origin":[-0.5004,-0.3341,0.1825],"size":[1.001,9.439,0.876],"uv":{"north":{"uv":[32,20],"uv_size":[1,9.5]},"east":{"uv":[32,30],"uv_size":[1,9.5]},"south":{"uv":[33,10],"uv_size":[1,9.5]},"west":{"uv":[33,20],"uv_size":[1,9.5]},"up":{"uv":[20,20],"uv_size":[1,1]},"down":{"uv":[21,6],"uv_size":[1,-1]}}}]},{"name":"positioning","pivot":[0,4.4442,0.1281]},{"name":"ground","parent":"positioning","pivot":[0,0,0]},{"name":"thirdperson_hand","parent":"positioning","pivot":[-0.0156,6.125,-2.0625]},{"name":"fixed","parent":"positioning","pivot":[0.7969,5.125,-1.0625],"rotation":[0,90,0]},{"name":"view","pivot":[0,4.4442,0.1281]},{"name":"idle_view","parent":"view","pivot":[0,65.25,2.25]},{"name":"camera","pivot":[0,63.25,-1.75]},{"name":"constraint","pivot":[0,4.4442,0.1281]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/polaris.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/polaris.anim.json new file mode 100644 index 0000000..cf4a3f4 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/polaris.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"melee_2":{"loop":true,"animation_length":2.2083,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[50.46,-0.684,134.423],"0.0417":[100.888,-3.096,114.296],"0.0833":[139.794,7.674,105.549],"0.125":[132.154,5.841,117.537],"0.1667":[126.41,10.762,122.342],"0.2083":[132.031,45.256,104.325],"0.25":[90.828,37.372,67.288],"0.2917":[78.256,26.014,73.269],"0.3333":[57.575,11.785,89.379],"0.375":[43.963,6.49,102.923],"0.4167":[28.455,4.584,122.239],"0.4583":[23.852,4.685,131.439],"0.5":[30.328,1.339,136.067],"0.5417":[46.039,-3.67,132.759],"0.5833":[67.31,-7.064,124.585],"0.625":[99.988,-3.906,109.902],"0.6667":[115.541,1.499,103.654],"0.7083":[122.93,5.465,101.713],"0.75":[124.295,7.054,102.198],"0.7917":[124.758,8.038,102.711],"0.8333":[124.89,8.963,103.349],"0.875":[124.249,10.656,104.927],"0.9167":[123.915,11.051,105.373],"0.9583":[122.54,12.183,106.799],"1.0":[120.658,13.256,108.327],"1.0417":[119.157,13.951,109.381],"1.0833":[116.587,14.981,110.987],"1.125":[114.691,15.666,112.059],"1.1667":[111.629,16.703,113.642],"1.2083":[109.471,17.404,114.667],"1.25":[106.113,18.472,116.138],"1.2917":[103.825,19.194,117.062],"1.3333":[100.368,20.284,118.341],"1.375":[98.081,21.013,119.116],"1.4167":[94.724,22.093,120.143],"1.4583":[92.569,22.798,120.732],"1.5":[89.515,23.818,121.464],"1.5417":[87.632,24.462,121.847],"1.5833":[85.897,25.072,122.144],"1.625":[83.624,25.907,122.427],"1.6667":[82.363,26.404,122.507],"1.7083":[80.916,27.047,122.464],"1.75":[85.902,22.635,116.838],"1.7917":[101.554,13.643,103.372],"1.8333":[104.059,13.115,102.721],"1.875":[108.138,13.543,106.865],"1.9167":[112.338,11.404,107.377],"1.9583":[116.349,11.729,103.547],"2.0":[119.232,13.936,103.87],"2.0417":[122.64,15.331,114.247],"2.0833":[124.112,17.767,117.629],"2.125":[126.155,22.167,121.513],"2.1667":[126.155,22.168,121.513],"2.2083":[126.155,22.168,121.514]},"position":{"0.0":[22.46,-40.551,0.016],"0.0417":[16.381,-31.078,-9.255],"0.0833":[11.87,-21.971,-19.67],"0.125":[13.036,-21.139,-21.371],"0.1667":[14.587,-21.512,-19.961],"0.2083":[18.218,-23.365,-9.873],"0.25":[23.479,-31.172,-6.922],"0.2917":[24.01,-34.248,-4.295],"0.3333":[24.79,-38.261,-0.609],"0.375":[25.497,-40.403,1.358],"0.4167":[26.609,-42.825,3.395],"0.4583":[26.906,-43.832,4.011],"0.5":[25.468,-43.769,3.189],"0.5417":[23.046,-42.436,1.242],"0.5833":[20.276,-40.589,-1.591],"0.625":[16.582,-37.585,-6.761],"0.6667":[14.874,-35.92,-9.758],"0.7083":[14.246,-35.055,-11.329],"0.75":[14.425,-34.938,-11.608],"0.7917":[14.621,-34.935,-11.684],"0.8333":[14.873,-34.987,-11.678],"0.875":[15.528,-35.235,-11.445],"0.9167":[15.719,-35.323,-11.345],"0.9583":[16.351,-35.639,-10.96],"1.0":[17.057,-36.018,-10.461],"1.0417":[17.56,-36.297,-10.078],"1.0833":[18.354,-36.741,-9.443],"1.125":[18.902,-37.047,-8.99],"1.1667":[19.744,-37.506,-8.282],"1.2083":[20.311,-37.805,-7.801],"1.25":[21.163,-38.233,-7.081],"1.2917":[21.725,-38.497,-6.612],"1.3333":[22.552,-38.851,-5.937],"1.375":[23.087,-39.053,-5.515],"1.4167":[23.855,-39.296,-4.937],"1.4583":[24.338,-39.414,-4.595],"1.5":[25.011,-39.514,-4.159],"1.5417":[25.418,-39.525,-3.925],"1.5833":[25.788,-39.489,-3.743],"1.625":[26.261,-39.338,-3.573],"1.6667":[26.516,-39.168,-3.535],"1.7083":[26.797,-38.802,-3.602],"1.75":[24.385,-34.5,-6.916],"1.7917":[18.026,-24.776,-14.686],"1.8333":[17.019,-23.818,-15.448],"1.875":[15.568,-24.41,-14.841],"1.9167":[14.962,-24.178,-14.421],"1.9583":[14.864,-23.839,-13.956],"2.0":[15.166,-23.732,-14.031],"2.0417":[15.481,-24.003,-14.709],"2.0833":[15.409,-24.071,-14.854],"2.125":[15.167,-24.121,-14.963],"2.2083":[15.167,-24.121,-14.963]}},"lefthand":{"rotation":{"0.0":[0,0,0],"0.0417":[-0.001,0,0],"0.0833":[0,0,0],"0.2083":[0,0,-0.001],"0.25":[0.001,0,0],"0.2917":[0,0,0],"0.3333":[0,0,-0.001],"0.375":[0,0,0.001],"0.4167":[0,0,0],"0.5417":[0,0,0],"0.5833":[0.001,0,0],"0.625":[0.001,0,0],"0.6667":[0,0,0],"0.7083":[0,0,-0.001],"0.75":[0,0,-0.001],"0.7917":[0,0,0],"0.8333":[0,0,-0.001],"0.875":[0,0,0],"0.9167":[0,0,-0.001],"0.9583":[0,0,0],"1.1667":[-0.001,0,0],"1.625":[-0.002,0,0],"1.75":[-0.001,0,0],"1.7917":[0,0,0],"1.9583":[0,0,-0.001],"2.0417":[0,0,0],"2.2083":[0,0,0]}},"lefthand_1":{"position":[2.4203,1.7186,-4.0235],"scale":[1,1.5,1]},"righthand":{"rotation":{"0.0":[88.05,-50.029,-192.28],"0.0417":[92.816,-51.094,-194.782],"0.0833":[93.519,-48.355,-193.096],"0.125":[89.753,-42.361,-187.057],"0.1667":[86.762,-37.377,-182.265],"0.2083":[84.316,-32.227,-177.66],"0.25":[82.608,-25.487,-172.102],"0.2917":[83.24,-11.855,-170.386],"0.3333":[67.859,-5.766,-91.672],"0.375":[76.959,-20.862,-31.536],"0.4167":[67.796,-23.908,-17.629],"0.4583":[61.166,-27.439,-11.519],"0.5":[63.82,-35.92,-24.839],"0.5417":[81.291,-25.822,-62.656],"0.5833":[78.256,-26.979,-59.732],"0.625":[26.378,-26.201,-76.469],"0.6667":[38.277,-14.956,-95.356],"0.7083":[58.293,-20.174,-123.416],"0.75":[81.21,-18.125,-153.668],"0.7917":[93.061,-11.673,-170.698],"0.8333":[99.709,-3.191,-183.314],"0.875":[93.39,12.71,-198.327],"0.9167":[90.736,14.918,-200.395],"0.9583":[94.756,12.615,-197.84],"1.0":[117.204,-13.512,-179.57],"1.0417":[126.327,-22.631,-168.059],"1.0833":[135.344,-35.512,-150.532],"1.125":[135.987,-47.534,-142.194],"1.1667":[127.066,-62.185,-123.816],"1.2083":[118.15,-64.247,-109.455],"1.25":[143.5,-49.102,-143.585],"1.2917":[153.848,-26.517,-162.115],"1.3333":[159.123,9.394,-173.981],"1.375":[159.885,27.189,-176.404],"1.4167":[152.333,34.392,-181.028],"1.4583":[144.826,35.42,-186.282],"1.5":[132.39,32.011,-197.067],"1.5417":[130.898,13.883,-196.913],"1.5833":[136.134,-4.46,-191.408],"1.625":[146.823,-20.09,-184.415],"1.6667":[145.499,-24.105,-179.281],"1.7083":[165.686,-34.499,-173.645],"1.75":[168.998,-50.649,-160.785],"1.7917":[121.692,-42.604,-124.939],"1.8333":[116.247,-38.338,-121.514],"1.875":[114.883,-37.356,-122.795],"1.9167":[115.979,-38.424,-124.706],"1.9583":[118.118,-40.212,-127.3],"2.0":[117.982,-37.277,-128.198],"2.0417":[117.458,-36.49,-127.775],"2.0833":[117.08,-36.994,-127.093],"2.125":[116.811,-37.118,-126.761],"2.1667":[116.785,-37.063,-126.785],"2.2083":[116.734,-36.954,-126.833]},"position":{"0.0":[-20.105,-35.536,4.417],"0.0417":[-22.276,-34.186,1.957],"0.0833":[-25.265,-31.334,-1.945],"0.125":[-27.506,-27.532,-5.805],"0.1667":[-28.372,-24.594,-8.178],"0.2083":[-28.629,-21.477,-10.284],"0.25":[-27.775,-16.798,-12.798],"0.2917":[-22.883,-15.973,-14.029],"0.3333":[-15.239,-14.977,-18.676],"0.375":[-12.071,-15.052,-24.226],"0.4167":[-11.524,-15.667,-24.342],"0.4583":[-11.746,-16.877,-24.353],"0.5":[-13.245,-17.977,-24.546],"0.5417":[-17.77,-17.808,-11.511],"0.5833":[-25.718,-18.216,4.506],"0.625":[-35.667,-20.378,-12.302],"0.6667":[-34.96,-25.142,-10.127],"0.7083":[-30.534,-30.263,-10.993],"0.75":[-25.868,-35.836,-12.573],"0.7917":[-22.974,-38.977,-13.792],"0.8333":[-20.59,-40.966,-14.867],"0.875":[-18.606,-37.681,-15.908],"0.9167":[-18.465,-36.003,-16.016],"0.9583":[-17.934,-32.161,-16.048],"1.0":[-17.771,-29.882,-15.745],"1.0417":[-17.455,-28.787,-15.333],"1.0833":[-16.958,-27.226,-14.59],"1.125":[-16.343,-26.288,-14.453],"1.1667":[-15.545,-25.28,-14.43],"1.2083":[-15.611,-25.024,-14.407],"1.25":[-15.933,-24.622,-14.532],"1.2917":[-16.153,-24.324,-14.511],"1.3333":[-16.302,-24.033,-14.517],"1.375":[-16.133,-23.907,-14.63],"1.4167":[-16.317,-23.93,-14.729],"1.4583":[-16.389,-23.982,-14.837],"1.5":[-16.379,-24.007,-15.011],"1.5417":[-16.246,-24.097,-15.075],"1.5833":[-16.112,-24.35,-15.316],"1.625":[-15.949,-24.956,-15.588],"1.6667":[-15.851,-25.938,-15.704],"1.7083":[-15.916,-26.597,-15.6],"1.75":[-16.669,-26.604,-14.534],"1.7917":[-17.695,-26.66,-12.829],"1.8333":[-18.057,-26.46,-12.491],"1.875":[-19.052,-25.834,-11.241],"1.9167":[-19.52,-25.588,-10.867],"1.9583":[-19.88,-25.463,-11.031],"2.0":[-19.895,-25.24,-11.207],"2.0417":[-19.764,-25.114,-11.281],"2.0833":[-19.646,-25.079,-11.281],"2.125":[-19.59,-25.097,-11.283],"2.1667":[-19.596,-25.121,-11.283],"2.2083":[-19.608,-25.169,-11.281]}},"righthand_1":{"rotation":{"0.3333":[40,0,0],"0.4167":[39.7578,-4.8128,5.7589],"0.7083":[0,0,0]},"position":{"0.0":[-0.7,3.5,0.25],"0.5":[-0.7,-0.3302,3.4639],"0.7083":[-0.7,4.8307,0.25],"1.375":[-0.7,4.8307,0.25],"1.75":[-0.7,3.5,0.25]},"scale":[1,1.5,1]},"weapon":{"rotation":{"0.0":[96.532,8.73,98.325],"0.0417":[97.973,6.574,160.457],"0.0833":[84.024,-13.579,342.73],"0.125":[105.627,9.369,566.415],"0.1667":[76.535,-15.858,731.098],"0.2083":[97.014,23.451,891.247],"0.25":[105.482,-25.705,1027.554],"0.2917":[81.542,-30.31,1077.955],"0.3333":[63.971,8.558,1183.284],"0.375":[80.007,22.703,1253.911],"0.4167":[85.125,21.104,1265.441],"0.4583":[91.829,20.956,1271.093],"0.5":[92.08,27.404,1258.493],"0.5417":[74.616,27.706,1221.914],"0.5833":[79.502,29.827,1225.815],"0.625":[124.55,10.889,1200.947],"0.6667":[110.317,3.821,1184.467],"0.7083":[93.048,19.757,1155.54],"0.75":[61.321,30.372,1104.413],"0.7917":[43.634,22.906,1070.748],"0.8333":[37.472,10.593,1044.511],"0.875":[51.185,1.363,1004.904],"0.9167":[54.25,2.809,997.155],"0.9583":[48.872,-17.479,993.712],"1.0":[-22.301,-36.903,1084.926],"1.0417":[-36.262,-19.071,1120.301],"1.0833":[-28.217,10.186,1162.334],"1.125":[11.96,34.683,1210.4],"1.1667":[66.063,4.826,1277.661],"1.2083":[63.951,-13.24,1295.818],"1.25":[27.43,-44.349,1334.452],"1.2917":[-7.714,-50.872,1372.693],"1.3333":[-60.378,-49.34,1433.652],"1.375":[-77.877,-27.743,1467.836],"1.4167":[-69.954,-6.292,1490.373],"1.4583":[-66.198,21.129,1500.879],"1.5":[-53.188,78.192,1528.957],"1.5417":[-112.678,139.844,1483.267],"1.5833":[-115.622,186.193,1520.602],"1.625":[-135.201,217.465,1548.267],"1.6667":[-150.463,224.226,1566.56],"1.7083":[-199.699,210.984,1625.484],"1.75":[-206.17,167.489,1651.658],"1.7917":[-174.923,155.854,1672.829],"1.8333":[-170.512,154.038,1678.535],"1.875":[-167.909,138.944,1688.952],"1.9167":[-168.751,137.721,1687.155],"1.9583":[-170.464,135.629,1684.74],"2.0":[-171.146,138.525,1683.29],"2.0417":[-170.807,139.376,1683.625],"2.0833":[-170.278,138.942,1684.425],"2.125":[-169.966,138.861,1684.802],"2.1667":[-169.955,138.927,1684.767],"2.2083":[-169.935,139.039,1684.702]},"position":{"0.0":[-16.414,3.07,-12.604],"0.0417":[-16.244,4.237,-14.362],"0.0833":[-15.692,6.216,-14.768],"0.125":[-15.055,6.913,-14.881],"0.1667":[-14.705,6.896,-14.881],"0.2083":[-14.422,6.69,-14.785],"0.25":[-13.916,5.701,-14.375],"0.2917":[-13.507,5.051,-14.153],"0.3333":[-9.488,5.339,-23.233],"0.375":[-5.432,6.437,-29.134],"0.4167":[-4.828,6.348,-29.075],"0.4583":[-4.859,5.62,-28.91],"0.5":[-6.059,4.757,-28.933],"0.5417":[-11.528,3.917,-15.763],"0.5833":[-19.892,3.549,0.898],"0.625":[-32.056,1.093,-14.083],"0.6667":[-30.988,-4.663,-12.305],"0.7083":[-25.562,-10.178,-13.821],"0.75":[-19.129,-15.671,-15.927],"0.7917":[-14.983,-18.098,-17.152],"0.8333":[-11.608,-19.11,-17.861],"0.875":[-8.545,-14.313,-17.776],"0.9167":[-8.303,-12.358,-17.695],"0.9583":[-7.686,-9.027,-18.026],"1.0":[-10.345,-7.409,-20.847],"1.0417":[-11.479,-5.836,-21.011],"1.0833":[-11.761,-1.595,-20.002],"1.125":[-10.929,1.434,-17.916],"1.1667":[-7.432,2.059,-15.407],"1.2083":[-6.206,1.907,-15.39],"1.25":[-5.77,2.089,-17.126],"1.2917":[-6.162,1.834,-18.524],"1.3333":[-6.339,1.917,-18.654],"1.375":[-6.99,1.978,-18.953],"1.4167":[-7.924,0.995,-20.879],"1.4583":[-9.1,1.356,-21.598],"1.5":[-9.651,2.891,-19.816],"1.5417":[-9.768,3.287,-18.079],"1.5833":[-8.237,1.123,-17.195],"1.625":[-8.228,-0.083,-17.213],"1.6667":[-8.549,-0.954,-17.768],"1.7083":[-8.003,-1.701,-16.871],"1.75":[-8.44,-2.518,-15.896],"1.7917":[-10.191,-3.804,-15.69],"1.8333":[-10.701,-3.916,-15.487],"1.875":[-11.976,-3.332,-14.04],"1.9167":[-12.472,-2.996,-13.627],"1.9583":[-12.854,-2.733,-13.718],"2.0":[-12.815,-2.605,-13.93],"2.0417":[-12.675,-2.523,-14.025],"2.0833":[-12.57,-2.486,-14.03],"2.125":[-12.521,-2.509,-14.037],"2.1667":[-12.528,-2.535,-14.039],"2.2083":[-12.54,-2.587,-14.039]}},"camera":{"rotation":{"0.0":[0.26,0.465,-0.331],"0.0417":[0.247,0.461,-0.316],"0.0833":[0.19,0.451,-0.249],"0.125":[0.062,0.426,-0.099],"0.1667":[-0.264,0.348,0.274],"0.2083":[-0.462,0.283,0.491],"0.25":[-0.539,0.16,0.568],"0.2917":[-0.449,0.062,0.198],"0.3333":[0.004,0.517,-3.184],"0.375":[0.201,-0.465,1.67],"0.4167":[-0.035,-0.354,-0.514],"0.4583":[-0.163,-0.405,-0.152],"0.5":[-0.173,-0.21,-0.742],"0.5417":[0.059,-0.076,-0.28],"0.5833":[0.189,-0.024,-0.033],"0.625":[0.111,-0.008,-0.002],"0.6667":[0.027,-0.007,-0.002],"0.7083":[-0.051,-0.007,-0.002],"0.75":[-0.103,-0.007,-0.002],"0.7917":[-0.155,-0.007,-0.002],"0.8333":[-0.228,-0.006,0.003],"0.875":[-0.28,-0.006,0.003],"0.9167":[-0.299,-0.006,0.003],"0.9583":[-0.289,-0.035,0.065],"1.0":[-0.254,-0.109,0.197],"1.0417":[-0.187,-0.247,0.385],"1.0833":[-0.139,-0.316,0.378],"1.125":[-0.048,-0.445,0.145],"1.1667":[0.02,-0.496,-0.049],"1.2083":[0.101,-0.465,-0.203],"1.25":[0.137,-0.347,-0.123],"1.2917":[0.191,-0.156,0.122],"1.3333":[0.217,-0.033,0.27],"1.375":[0.241,0.147,0.476],"1.4167":[0.264,0.219,0.475],"1.4583":[0.283,0.263,0.34],"1.5":[0.327,0.287,0.098],"1.5417":[0.372,0.266,-0.003],"1.5833":[0.453,0.173,-0.138],"1.625":[0.535,0.039,-0.274],"1.6667":[0.58,-0.056,-0.353],"1.7083":[0.599,-0.138,-0.432],"1.75":[0.516,-0.234,-0.53],"1.7917":[0.328,-0.274,-0.57],"1.8333":[0.016,-0.259,-0.601],"1.875":[-0.153,-0.167,-0.531],"1.9167":[-0.212,-0.027,-0.239],"1.9583":[-0.172,0.05,0],"2.0":[-0.093,0.054,0.172],"2.0417":[0.027,-0.006,0.155],"2.0833":[0.088,-0.053,0.04],"2.125":[0.069,-0.041,-0.04],"2.1667":[0.018,-0.01,-0.12],"2.2083":[0.004,-0.004,-0.063]}}},"sound_effects":{"0.0":{"effect":"melee.polaris.melee_2"},"1.0":{"effect":"melee.polaris.polaris_rotate_2"}}},"static_idle":{"loop":true,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":[126.155,22.167,121.513],"position":[15.167,-24.121,-14.963]},"righthand":{"rotation":[-63.265,-143.049,53.167],"position":[-19.608,-25.169,-11.281]},"weapon":{"rotation":[9.191,40.149,63.904],"position":[-12.54,-2.595,-14.074]},"lefthand_1":{"position":[2.4203,1.7186,-4.0235],"scale":[1,1.5,1]},"righthand_1":{"position":[-0.7,3.5,0.25],"scale":[1,1.5,1]}}},"draw":{"loop":true,"animation_length":1.0833,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[89.408,-35.599,116.211],"0.0417":[87.916,-30.396,117.556],"0.0833":[85.666,-22.239,119.553],"0.125":[83.609,-13.831,121.318],"0.1667":[82.42,-8.195,122.294],"0.2083":[81.408,-2.617,123.079],"0.25":[80.271,5.484,123.856],"0.2917":[79.792,10.599,124.085],"0.3333":[79.541,17.663,123.963],"0.375":[79.719,21.864,123.552],"0.4167":[80.565,27.232,122.408],"0.4583":[86.407,23.71,116.544],"0.5":[101.554,13.643,103.373],"0.5417":[105.663,13.273,103.902],"0.5833":[108.139,13.544,106.865],"0.625":[112.78,11.146,107.382],"0.6667":[115.276,11.023,105.59],"0.7083":[118.108,13.425,101.821],"0.75":[121.69,14.704,111.382],"0.7917":[123.396,16.371,116.067],"0.8333":[124.771,19.091,118.979],"0.875":[126.354,22.488,121.887],"0.9167":[126.479,22.686,122.119],"0.9583":[126.515,22.744,122.187],"1.0":[126.298,22.399,121.782],"1.0417":[126.175,22.2,121.551],"1.0833":[126.155,22.168,121.513]},"position":{"0.0":[20.751,-36.418,-7.22],"0.0417":[21.372,-36.692,-6.67],"0.0833":[22.401,-37.287,-5.752],"0.125":[23.472,-38,-4.819],"0.1667":[24.172,-38.482,-4.241],"0.2083":[24.837,-38.928,-3.729],"0.25":[25.722,-39.455,-3.144],"0.2917":[26.208,-39.663,-2.908],"0.3333":[26.729,-39.678,-2.841],"0.375":[26.906,-39.444,-3.017],"0.4167":[26.861,-38.649,-3.66],"0.4583":[24.289,-34.356,-7.082],"0.5":[18.026,-24.776,-14.687],"0.5417":[16.367,-23.819,-15.439],"0.5833":[15.568,-24.41,-14.841],"0.625":[14.917,-24.153,-14.368],"0.6667":[14.82,-23.963,-14.088],"0.7083":[15.049,-23.698,-13.89],"0.75":[15.427,-23.93,-14.534],"0.7917":[15.467,-24.042,-14.798],"0.8333":[15.346,-24.092,-14.899],"0.875":[15.15,-24.125,-14.977],"0.9167":[15.14,-24.128,-14.986],"0.9583":[15.137,-24.129,-14.989],"1.0":[15.155,-24.124,-14.973],"1.0417":[15.165,-24.121,-14.964],"1.0833":[15.167,-24.121,-14.963]}},"lefthand":{"rotation":{"0.0":[0.001,0,0],"0.25":[0.001,0,0],"0.2917":[-0.001,0,0],"0.5":[0,0,0],"1.0833":[0,0,0]}},"lefthand_1":{"position":[2.4203,1.7186,-4.0235],"scale":[1,1.5,1]},"righthand":{"rotation":{"0.0":[-11.144,177.825,-78.904],"0.0417":[-27.663,178.909,-61.403],"0.0833":[-52.641,168.597,-39.458],"0.125":[-73.911,156.165,-51.653],"0.1667":[-84.688,150.69,-56.513],"0.2083":[-89.685,145.27,-52.942],"0.25":[-94.153,142.776,-48.99],"0.2917":[-95.898,143.494,-46.719],"0.3333":[-98.943,144.824,-43.448],"0.375":[-101.451,146.041,-48.878],"0.4167":[-99.408,149.596,-41.537],"0.4583":[-88.72,163.114,19.783],"0.5":[-74.337,199.837,71.58],"0.5417":[-73.33,212.186,70.204],"0.5833":[-68.946,222.295,64.216],"0.625":[-62.931,221.814,54.796],"0.6667":[-61.937,220.828,52.986],"0.7083":[-61.879,218.58,52.094],"0.75":[-62.2,216.547,51.789],"0.7917":[-62.472,216.429,52.103],"0.8333":[-62.792,216.814,52.666],"0.875":[-63.162,217.136,53.25],"0.9167":[-63.171,217.099,53.239],"0.9583":[-63.213,217.036,53.223],"1.0":[-63.245,216.986,53.189],"1.0417":[-63.267,216.954,53.166],"1.0833":[-63.267,216.954,53.166]},"position":{"0.0":[-14.857,-32.004,-15.01],"0.0417":[-15.381,-29.679,-14.559],"0.0833":[-16.701,-25.29,-14.238],"0.125":[-16.657,-22.814,-14.585],"0.1667":[-16.21,-22.08,-14.692],"0.2083":[-15.46,-21.95,-14.553],"0.25":[-14.813,-21.918,-14.388],"0.2917":[-14.572,-22.001,-14.263],"0.3333":[-14.083,-22.196,-14.016],"0.375":[-13.495,-22.593,-13.701],"0.4167":[-13.169,-23.372,-13.052],"0.4583":[-13.723,-23.186,-12.267],"0.5":[-16.242,-24.668,-11.19],"0.5417":[-18.42,-25.31,-11.024],"0.5833":[-19.515,-25.697,-10.864],"0.625":[-19.953,-25.679,-10.946],"0.6667":[-19.922,-25.538,-10.999],"0.7083":[-19.845,-25.338,-11.125],"0.75":[-19.79,-25.184,-11.252],"0.7917":[-19.731,-25.127,-11.279],"0.8333":[-19.664,-25.092,-11.281],"0.875":[-19.581,-25.087,-11.284],"0.9167":[-19.577,-25.103,-11.284],"0.9583":[-19.58,-25.132,-11.284],"1.0":[-19.597,-25.154,-11.282],"1.0417":[-19.608,-25.169,-11.281],"1.0833":[-19.608,-25.169,-11.281]}},"weapon":{"rotation":{"0.0":[-63.679,-13.047,-98.43],"0.0417":[-51.788,-16.685,-83.304],"0.0833":[-17.24,-21.12,-72.362],"0.125":[43.573,-1.199,-66.843],"0.1667":[92.648,-15.048,-48.403],"0.2083":[132.915,-44.174,-47.616],"0.25":[217.763,-34.487,-93.779],"0.2917":[251.991,-11.579,-90.472],"0.3333":[331.02,-13.441,-83.138],"0.375":[388.741,-12.403,-75.521],"0.4167":[426.019,-20.839,-44.892],"0.4583":[410.325,-9.985,19.702],"0.5":[387.548,23.656,75.588],"0.5417":[379.113,31.407,77.166],"0.5833":[373.682,40.761,74.138],"0.625":[368.517,42.809,65.841],"0.6667":[368.447,43.55,64.086],"0.7083":[368.17,41.951,63.009],"0.75":[367.998,39.905,62.394],"0.7917":[368.246,39.753,62.709],"0.8333":[368.669,40.082,63.348],"0.875":[369.132,40.342,64.014],"0.9167":[369.13,40.303,63.993],"0.9583":[369.163,40.238,63.975],"1.0":[369.18,40.183,63.934],"1.0417":[369.193,40.149,63.902],"1.0833":[369.191,40.149,63.904]},"position":{"0.0":[-12.714,-6.88,-16.817],"0.0417":[-11.137,-3.619,-17.733],"0.0833":[-8.594,0.339,-17.85],"0.125":[-8.533,2.05,-16.651],"0.1667":[-9.018,2.878,-15.625],"0.2083":[-9.174,3.637,-15.099],"0.25":[-8.086,3.909,-16.791],"0.2917":[-6.868,3.697,-18.025],"0.3333":[-3.829,3.063,-17.924],"0.375":[-3.893,1.694,-16.845],"0.4167":[-4.964,-0.532,-15.533],"0.4583":[-5.535,-2.365,-15.11],"0.5":[-8.909,-3.388,-14.395],"0.5417":[-11.18,-3.36,-14.238],"0.5833":[-12.376,-3.102,-13.865],"0.625":[-12.854,-2.91,-13.744],"0.6667":[-12.877,-2.787,-13.735],"0.7083":[-12.786,-2.666,-13.867],"0.75":[-12.695,-2.587,-14.024],"0.7917":[-12.638,-2.543,-14.058],"0.8333":[-12.584,-2.51,-14.065],"0.875":[-12.511,-2.506,-14.074],"0.9167":[-12.507,-2.525,-14.075],"0.9583":[-12.511,-2.555,-14.076],"1.0":[-12.529,-2.58,-14.076],"1.0417":[-12.54,-2.595,-14.076],"1.0833":[-12.54,-2.595,-14.076]}},"righthand_1":{"position":[-0.7,3.5,0.25],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.063,0.036,-0.015],"0.0417":[-0.292,0.164,-0.086],"0.0833":[-0.522,0.307,-0.195],"0.125":[-0.657,0.415,-0.423],"0.1667":[-0.791,0.556,-0.552],"0.2083":[-0.811,0.608,-0.263],"0.25":[-0.709,0.547,0.078],"0.2917":[-0.494,0.419,0.16],"0.3333":[-0.434,0.297,0.18],"0.375":[-0.555,0.231,0.367],"0.4167":[-0.681,0.216,0.46],"0.4583":[-0.795,0.221,0.17],"0.5":[-0.853,0.371,-0.657],"0.5417":[-0.766,0.542,-0.059],"0.5833":[-0.657,0.482,0.224],"0.625":[-0.601,0.431,0.177],"0.6667":[-0.459,0.317,0.029],"0.7083":[-0.156,0.181,-0.075],"0.75":[-0.005,0.046,-0.007],"0.7917":[0.08,-0.034,-0.001],"0.8333":[0.09,-0.04,-0.001],"0.875":[0.076,-0.032,0],"0.9167":[0.053,-0.024,0],"0.9583":[0.035,-0.016,0],"1.0":[0.017,-0.008,0],"1.0417":[0.005,-0.003,0],"1.0833":[-0.001,0,0]}}},"sound_effects":{"0.0":{"effect":"melee.polaris.draw"}}},"draw_1":{"loop":true,"animation_length":1.5,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[91.181,-35.585,130.563],"0.0417":[89.013,-27.964,132.273],"0.0833":[86.726,-15.624,133.076],"0.125":[85.133,-3.127,132.05],"0.1667":[84.22,4.791,130.552],"0.2083":[83.313,12.049,128.574],"0.25":[81.893,21.166,125.141],"0.2917":[80.969,25.758,122.925],"0.3333":[79.725,30.247,120.429],"0.375":[78.853,32.047,119.412],"0.4167":[77.707,33.327,118.786],"0.4583":[77.182,33.41,118.898],"0.5":[76.928,32.649,119.663],"0.5417":[77.193,31.686,120.403],"0.5833":[77.86,30.455,121.154],"0.625":[79.701,28.293,121.909],"0.6667":[81.934,26.379,121.831],"0.7083":[89.471,19.766,118.359],"0.75":[97.672,14.411,109.126],"0.7917":[101.554,13.644,103.372],"0.8333":[104.184,14.093,102.931],"0.875":[109.664,12.904,107.151],"0.9167":[111.258,12.063,107.274],"0.9583":[115.619,10.443,106.436],"1.0":[117.991,13.235,102.043],"1.0417":[119.702,14.634,104.089],"1.0833":[122.64,15.331,114.246],"1.125":[124.047,16.7,118.013],"1.1667":[125.762,18.953,121.993],"1.2083":[126.281,19.842,123.024],"1.25":[126.454,20.726,123.044],"1.2917":[126.358,21.2,122.527],"1.3333":[126.172,21.902,121.673],"1.375":[126.155,22.167,121.513],"1.5":[126.155,22.167,121.513]},"position":{"0.0":[16.095,-37.445,-9.743],"0.0417":[17.516,-37.75,-9.383],"0.0833":[19.752,-38.128,-8.594],"0.125":[21.946,-38.373,-7.535],"0.1667":[23.298,-38.456,-6.725],"0.2083":[24.51,-38.482,-5.882],"0.25":[25.99,-38.442,-4.679],"0.2917":[26.717,-38.389,-4.006],"0.3333":[27.411,-38.388,-3.204],"0.375":[27.673,-38.535,-2.655],"0.4167":[27.825,-38.878,-1.91],"0.4583":[27.801,-39.119,-1.541],"0.5":[27.644,-39.385,-1.311],"0.5417":[27.497,-39.433,-1.449],"0.5833":[27.338,-39.318,-1.874],"0.625":[27.089,-38.715,-3.134],"0.6667":[26.832,-37.702,-4.727],"0.7083":[24.922,-33.206,-9.93],"0.75":[20.687,-27.476,-13.85],"0.7917":[18.026,-24.776,-14.687],"0.8333":[16.745,-23.932,-14.833],"0.875":[15.218,-24.328,-14.742],"0.9167":[15.004,-24.24,-14.575],"0.9583":[14.794,-23.969,-14.047],"1.0":[15.03,-23.711,-13.894],"1.0417":[15.244,-23.727,-14.091],"1.0833":[15.481,-24.003,-14.71],"1.125":[15.478,-24.046,-14.812],"1.1667":[15.397,-24.035,-14.816],"1.2083":[15.355,-24.043,-14.838],"1.25":[15.296,-24.067,-14.882],"1.2917":[15.255,-24.086,-14.909],"1.3333":[15.19,-24.113,-14.949],"1.375":[15.167,-24.121,-14.963],"1.5":[15.167,-24.121,-14.963]}},"lefthand":{"rotation":{"0.0":[0.001,0,0],"0.1667":[0.001,0,0],"0.2083":[-0.001,0,0],"0.75":[0,0,0],"1.5":[0,0,0]}},"lefthand_1":{"position":[2.4203,1.7186,-4.0235],"scale":[1,1.5,1]},"righthand":{"rotation":{"0.0":[-81.287,178.421,0.655],"0.0417":[-75.036,183.253,13.391],"0.0833":[-67.633,194.192,30.198],"0.125":[-66.789,207.19,39.296],"0.1667":[-71.168,215.81,39.932],"0.2083":[-62.742,227.473,55.779],"0.25":[-71.189,238.357,72.481],"0.2917":[-77.404,235.163,80.78],"0.3333":[-68.813,224.894,85.865],"0.375":[-66.616,225.185,92.476],"0.4167":[-72.366,235.41,110.998],"0.4583":[-79.537,241.037,123.091],"0.5":[-83.886,242.247,125.955],"0.5417":[-75.918,237.774,115.014],"0.5833":[-75.158,239.376,113.402],"0.625":[-73.843,241.276,115.993],"0.6667":[-75.956,241.22,119.212],"0.7083":[-79.016,240.907,124.779],"0.75":[-76.351,239.436,121.271],"0.7917":[-74.957,238.738,119.758],"0.8333":[-75.613,238.914,120.092],"0.875":[-69.788,234.102,103.877],"0.9167":[-68.262,230.628,96.198],"0.9583":[-68.049,222.179,76.936],"1.0":[-68.347,217.99,60.035],"1.0417":[-67.379,216.132,56.493],"1.0833":[-65.379,214.817,54.623],"1.125":[-64.843,214.521,53.881],"1.1667":[-64.475,214.74,53.502],"1.2083":[-64.467,214.922,53.44],"1.25":[-64.231,215.485,53.377],"1.2917":[-64.002,215.946,53.338],"1.3333":[-63.637,216.664,53.286],"1.375":[-63.52,216.893,53.267],"1.4583":[-63.52,216.893,53.267],"1.5":[-63.52,216.893,53.267]},"position":{"0.0":[-26.847,-20.521,-10.266],"0.0417":[-26.471,-18.792,-9.757],"0.0833":[-25.749,-16.464,-8.775],"0.125":[-25.229,-15.055,-8.269],"0.1667":[-25.181,-15.383,-8.88],"0.2083":[-22.967,-16.711,-9.691],"0.25":[-19.909,-18.525,-11.118],"0.2917":[-19.535,-20.047,-10.991],"0.3333":[-19.2,-22.436,-10.113],"0.375":[-19.062,-23.288,-10.115],"0.4167":[-19.137,-22.919,-10.921],"0.4583":[-19.066,-22.597,-11.222],"0.5":[-18.732,-22.459,-11.182],"0.5417":[-18.562,-22.253,-11.21],"0.5833":[-18.409,-22.44,-11.487],"0.625":[-17.848,-22.143,-11.817],"0.6667":[-17.958,-22.327,-11.645],"0.7083":[-18.681,-22.13,-11.369],"0.75":[-18.941,-21.996,-11.447],"0.7917":[-18.906,-21.954,-11.497],"0.8333":[-18.829,-21.939,-11.558],"0.875":[-19.092,-22.552,-11.61],"0.9167":[-19.12,-22.966,-11.393],"0.9583":[-19.17,-24.167,-10.829],"1.0":[-19.3,-25.044,-10.805],"1.0417":[-19.456,-25.159,-10.819],"1.0833":[-19.643,-25.133,-10.898],"1.125":[-19.669,-25.107,-10.948],"1.1667":[-19.637,-25.051,-11.028],"1.2083":[-19.603,-25.017,-11.075],"1.25":[-19.59,-25.041,-11.144],"1.2917":[-19.593,-25.078,-11.19],"1.3333":[-19.603,-25.145,-11.258],"1.375":[-19.607,-25.168,-11.281],"1.5":[-19.607,-25.168,-11.281]}},"righthand_1":{"position":{"0.0":[-0.7,3.5,0.25],"0.5":[-0.7,3.5,0.25],"0.5833":[-0.5981,3.7893,-0.1449],"0.7083":[-0.5981,3.7893,-0.1449],"0.7917":[-0.7,3.5,0.25]},"scale":[1,1.5,1]},"weapon":{"rotation":{"0.0":[-23.404,189.683,25.654],"0.0417":[-47.802,236.813,71.962],"0.0833":[-131.01,232.273,175.998],"0.125":[-147.76,207.314,209.505],"0.1667":[-155.712,183.748,226.878],"0.2083":[-159.549,157.848,241.813],"0.25":[-153.489,128.56,263.761],"0.2917":[-146.455,124.26,272.58],"0.3333":[-144.526,129.067,271.89],"0.375":[-141.418,127.13,277.228],"0.4167":[-129.883,117.393,298.7],"0.4583":[-124.655,114.235,307.514],"0.5":[-131.634,117.332,298.263],"0.5417":[-135.865,120.557,291.343],"0.5833":[-136.61,118.828,289.804],"0.625":[-135.383,115.464,295.283],"0.6667":[-128.247,113.634,304.039],"0.7083":[-121.245,113.107,313.817],"0.75":[-124.487,114.232,308.87],"0.7917":[-125.98,114.728,306.53],"0.8333":[-125.25,114.633,307.01],"0.875":[-138.559,120.327,290.267],"0.9167":[-144.012,124.309,282.883],"0.9583":[-155.562,134.311,265.674],"1.0":[-165.353,139.6,251.204],"1.0417":[-167.595,141.35,247.584],"1.0833":[-169.15,142.259,245.157],"1.125":[-169.774,142.454,244.327],"1.1667":[-170.061,142.294,244.065],"1.2083":[-169.994,142.217,244.123],"1.25":[-170.041,141.798,244.289],"1.2917":[-170.124,141.425,244.416],"1.3333":[-170.249,140.837,244.628],"1.375":[-170.286,140.652,244.695],"1.5":[-170.807,139.848,243.905]},"position":{"0.0":[-18.089,1.686,-12.535],"0.0417":[-17.049,4.052,-12.964],"0.0833":[-15.814,5.8,-13.162],"0.125":[-14.809,6.176,-13.206],"0.1667":[-14.189,6.124,-13.485],"0.2083":[-13.609,5.916,-13.845],"0.25":[-12.776,4.969,-14.125],"0.2917":[-12.208,3.392,-13.905],"0.3333":[-11.414,0.298,-13.324],"0.375":[-11.034,-0.859,-13.267],"0.4167":[-10.807,-0.687,-13.81],"0.4583":[-10.659,-0.362,-14.022],"0.5":[-10.456,-0.084,-14.017],"0.5417":[-10.371,-0.027,-14.099],"0.5833":[-10.232,-0.13,-14.293],"0.625":[-9.564,0.079,-14.524],"0.6667":[-9.697,-0.142,-14.38],"0.7083":[-10.428,-0.034,-14.152],"0.75":[-10.686,0.052,-14.26],"0.7917":[-10.639,0.059,-14.323],"0.8333":[-10.576,0.1,-14.386],"0.875":[-11.06,-0.372,-14.439],"0.9167":[-11.243,-0.741,-14.251],"0.9583":[-11.784,-1.848,-13.753],"1.0":[-12.329,-2.608,-13.703],"1.0417":[-12.483,-2.733,-13.711],"1.0833":[-12.577,-2.699,-13.764],"1.125":[-12.585,-2.665,-13.805],"1.1667":[-12.552,-2.586,-13.872],"1.2083":[-12.524,-2.541,-13.915],"1.25":[-12.517,-2.534,-13.97],"1.2917":[-12.523,-2.548,-14.005],"1.3333":[-12.537,-2.579,-14.053],"1.375":[-12.543,-2.59,-14.07],"1.5":[-12.54,-2.596,-14.076]}},"blade2":{"position":{"0.0":[0,-6.733,0],"0.5417":[0,-6.733,0],"0.5833":[0,0,0],"1.5":[0,0,0]}},"open":{"position":{"0.0":[0,-1.1497,0],"0.4583":[0,-1.1227,0],"0.5":[0,-0.7797,0],"0.5417":[0,-0.4827,0],"0.5833":[0,0,0],"1.5":[0,0,0]}},"camera":{"rotation":{"0.0":[-0.063,0.036,-0.015],"0.0417":[-0.203,0.117,-0.057],"0.0833":[-0.375,0.216,-0.119],"0.125":[-0.522,0.307,-0.195],"0.1667":[-0.657,0.415,-0.423],"0.2083":[-0.727,0.485,-0.565],"0.25":[-0.791,0.556,-0.552],"0.2917":[-0.811,0.611,-0.376],"0.3333":[-0.806,0.581,-0.023],"0.375":[-0.588,0.505,0.139],"0.4167":[-0.494,0.419,0.16],"0.4583":[-0.44,0.336,0.167],"0.5":[-0.503,0.247,0.307],"0.5417":[-0.597,0.222,0.414],"0.5833":[-0.681,0.216,0.46],"0.625":[-0.768,0.508,-0.665],"0.6667":[-0.847,0.055,0.13],"0.7083":[-0.853,0.371,-0.657],"0.75":[-0.801,0.545,-0.259],"0.7917":[-0.727,0.528,0.141],"0.8333":[-0.629,0.458,0.204],"0.875":[-0.601,0.431,0.177],"0.9167":[-0.506,0.341,0.066],"0.9583":[-0.355,0.273,-0.045],"1.0":[-0.09,0.138,-0.038],"1.0417":[-0.005,0.046,-0.007],"1.0833":[0.052,-0.009,-0.001],"1.125":[0.08,-0.034,-0.001],"1.1667":[0.09,-0.04,-0.001],"1.2083":[0.076,-0.035,0],"1.25":[0.071,-0.029,0],"1.2917":[0.053,-0.024,0],"1.3333":[0.035,-0.016,0],"1.375":[0.023,-0.011,0],"1.4167":[0.011,-0.005,0],"1.4583":[0.005,-0.003,0],"1.5":[-0.001,0,0]}}},"sound_effects":{"0.0":{"effect":"melee.polaris.draw_1"}}},"melee_1":{"loop":true,"animation_length":2,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-43.497,153.261,-52.6],"0.0417":[-35.489,147.583,-43.565],"0.0833":[-23.351,160.671,-29.006],"0.125":[-5.551,179.134,-46.663],"0.1667":[-14.324,182.822,-53.261],"0.2083":[-36.448,186.675,-52.178],"0.25":[-76.956,189.242,-45.545],"0.2917":[-104.053,186.656,-40.572],"0.3333":[-136.743,179.093,-37.429],"0.375":[-149.624,175.097,-38.014],"0.4167":[-154.948,173.145,-39.556],"0.4583":[-156.752,172.146,-40.651],"0.5":[-158.246,170.662,-42.373],"0.5417":[-158.48,169.677,-43.535],"0.5833":[-158.159,168.69,-44.686],"0.625":[-156.717,167.201,-46.353],"0.6667":[-155.171,166.198,-47.407],"0.7083":[-152.078,164.683,-48.871],"0.75":[-148.169,163.16,-50.178],"0.7917":[-145.18,162.148,-50.956],"0.8333":[-141.929,161.148,-51.657],"0.875":[-134.821,159.216,-52.849],"0.9167":[-132.949,158.753,-53.108],"0.9583":[-127.194,157.429,-53.811],"1.0":[-121.361,156.218,-54.445],"1.0417":[-117.511,155.482,-54.86],"1.0833":[-111.926,154.488,-55.519],"1.125":[-108.408,153.899,-56.017],"1.1667":[-103.575,153.121,-56.908],"1.2083":[-100.732,152.667,-57.633],"1.25":[-96.078,153.875,-60.419],"1.2917":[-91.344,157.66,-64.994],"1.3333":[-83.152,163.88,-72.954],"1.375":[-78.446,166.357,-76.628],"1.4167":[-74.771,166.637,-75.996],"1.4583":[-73.064,166.299,-73.784],"1.5":[-68.176,168.214,-72.793],"1.5417":[-64.382,169.557,-73.565],"1.5833":[-62.094,167.086,-77.444],"1.625":[-59.602,165.147,-73.87],"1.6667":[-58.061,164.987,-68.06],"1.7083":[-55.869,163.233,-62.089],"1.75":[-53.843,160.763,-57.921],"1.7917":[-53.213,159.669,-56.751],"1.8333":[-53.156,159.428,-56.674],"1.875":[-53.237,158.869,-56.968],"1.9167":[-53.422,158.581,-57.429],"1.9583":[-53.725,158.165,-58.168],"2.0":[-53.844,157.833,-58.486]},"position":{"0.0":[14.144,-24.128,-13.103],"0.0417":[12.057,-24.083,-9.44],"0.0833":[7.66,-25.61,-7.214],"0.125":[5.492,-29.169,-7.875],"0.1667":[7.587,-31.85,-6.307],"0.2083":[10.942,-34.71,-3.435],"0.25":[16.067,-38.605,0.688],"0.2917":[19.24,-40.831,2.486],"0.3333":[23.423,-43.631,3.595],"0.375":[25.363,-44.838,3.695],"0.4167":[26.526,-45.334,3.513],"0.4583":[27.087,-45.512,3.379],"0.5":[27.786,-45.678,3.185],"0.5417":[28.158,-45.722,3.056],"0.5833":[28.462,-45.715,2.929],"0.625":[28.795,-45.613,2.732],"0.6667":[28.945,-45.489,2.592],"0.7083":[29.069,-45.227,2.365],"0.75":[29.094,-44.88,2.103],"0.7917":[29.064,-44.606,1.905],"0.8333":[29.002,-44.302,1.682],"0.875":[28.802,-43.603,1.151],"0.9167":[28.739,-43.41,0.998],"0.9583":[28.526,-42.789,0.485],"1.0":[28.284,-42.104,-0.114],"1.0417":[28.109,-41.61,-0.564],"1.0833":[27.829,-40.814,-1.314],"1.125":[27.633,-40.245,-1.864],"1.1667":[27.323,-39.337,-2.759],"1.2083":[27.107,-38.694,-3.399],"1.25":[25.99,-36.601,-5.237],"1.2917":[23.873,-33.288,-7.914],"1.3333":[20.048,-27.563,-12.47],"1.375":[18.026,-24.776,-14.687],"1.4167":[16.466,-23.931,-15.391],"1.4583":[15.868,-24.359,-14.982],"1.5":[15.052,-24.202,-14.471],"1.5417":[14.794,-23.969,-14.047],"1.5833":[14.997,-23.734,-13.904],"1.625":[15.322,-23.787,-14.239],"1.6667":[15.449,-23.955,-14.599],"1.7083":[15.48,-24.012,-14.768],"1.75":[15.397,-23.958,-14.724],"1.7917":[15.338,-23.969,-14.757],"1.8333":[15.321,-23.979,-14.774],"1.875":[15.274,-24.017,-14.829],"1.9167":[15.243,-24.047,-14.867],"1.9583":[15.198,-24.093,-14.925],"2.0":[15.167,-24.121,-14.963]}},"lefthand":{"rotation":{"0.0":[0,0,0],"0.2083":[0,0,0],"0.25":[-0.001,0,-0.001],"0.2917":[0.001,0,0],"0.3333":[0,0,0],"0.7917":[0.001,0,0],"0.8333":[0,0,0],"0.875":[0.001,0,0],"0.9167":[0.001,0,0.001],"1.0":[0.001,0,0.001],"1.0417":[-0.001,0,0],"1.0833":[-0.002,0,0],"1.125":[-0.001,0,0],"1.3333":[-0.001,0,0],"1.375":[0,0,0],"2.0":[0,0,0]}},"lefthand_1":{"position":[2.4203,1.7186,-4.0235],"scale":[1,1.5,1]},"righthand":{"rotation":{"0.0":[73.469,5.005,-161.055],"0.0417":[41.636,3.109,-194.66],"0.0833":[48.99,-9.861,-171.183],"0.125":[53.747,-1.902,-164.494],"0.1667":[56.332,8.148,-164.645],"0.2083":[60.65,0.305,-162.528],"0.25":[49.694,18.03,-193.755],"0.2917":[50.801,11.179,-176.148],"0.3333":[60.566,3.894,-143.481],"0.375":[50.331,6.88,-179.802],"0.4167":[59.015,1.876,-191.15],"0.4583":[65.25,-0.992,-198.934],"0.5":[75.201,-3.483,-211.126],"0.5417":[81.957,-3.312,-219.486],"0.5833":[88.421,-1.268,-227.795],"0.625":[96.655,5.742,-239.657],"0.6667":[94.171,32.862,-243.126],"0.7083":[118.851,19.319,-227.648],"0.75":[137.846,1.874,-210.227],"0.7917":[134.907,-8.946,-211.543],"0.8333":[125.647,-14.868,-220.305],"0.875":[109.736,2.561,-231.785],"0.9167":[109.896,5.688,-229.516],"0.9583":[119.7,8.711,-215.104],"1.0":[133.582,6.132,-201.524],"1.0417":[141.62,2.512,-192.144],"1.0833":[147.262,-1.319,-174.276],"1.125":[144.791,-5.081,-158.232],"1.1667":[119.375,-18.08,-122.16],"1.2083":[111.197,-21.778,-110.168],"1.25":[105.062,-27.067,-101.249],"1.2917":[104.378,-30.707,-101.492],"1.3333":[107.902,-36.194,-108.268],"1.375":[111.047,-37.816,-113.082],"1.4167":[116.753,-36.311,-120.848],"1.4583":[118.231,-35.983,-123.236],"1.5":[118.498,-35.691,-125.384],"1.5417":[118.276,-35.634,-126.398],"1.5833":[118.313,-35.779,-127.234],"1.625":[118.449,-36.117,-128.352],"1.6667":[118.469,-36.316,-128.793],"1.7083":[118.274,-36.473,-128.838],"1.75":[117.995,-36.582,-128.621],"1.7917":[117.669,-36.667,-128.249],"1.8333":[117.556,-36.69,-128.103],"1.875":[117.198,-36.756,-127.627],"1.9167":[116.957,-36.798,-127.306],"1.9583":[116.609,-36.867,-126.865],"2.0":[116.498,-36.892,-126.739]},"position":{"0.0":[-18.055,-32.236,-3.629],"0.0417":[-17.409,-30.268,-2.885],"0.0833":[-20.434,-30.449,-3.007],"0.125":[-21.065,-27.013,-6.777],"0.1667":[-19.297,-22.952,-12.047],"0.2083":[-11.325,-18.959,-26.477],"0.25":[-13.399,-19.725,-26.62],"0.2917":[-15.978,-20.19,-21.506],"0.3333":[-24.942,-25.678,-6.558],"0.375":[-20.497,-36.879,4.086],"0.4167":[-19.698,-36.273,0.325],"0.4583":[-19.035,-35.922,-2.252],"0.5":[-17.913,-35.428,-6.185],"0.5417":[-17.122,-35.103,-8.827],"0.5833":[-16.327,-34.773,-11.465],"0.625":[-15.17,-34.259,-15.384],"0.6667":[-16.284,-33.535,-15.594],"0.7083":[-15.438,-31.272,-15.366],"0.75":[-15.013,-29.081,-15.626],"0.7917":[-14.971,-27.18,-15.799],"0.8333":[-14.91,-26.128,-16.027],"0.875":[-15.359,-24.787,-15.92],"0.9167":[-15.541,-24.509,-15.853],"0.9583":[-15.961,-23.868,-15.592],"1.0":[-16.24,-23.483,-15.481],"1.0417":[-16.453,-23.21,-15.416],"1.0833":[-16.477,-22.496,-14.88],"1.125":[-16.347,-22.056,-14.378],"1.1667":[-16.319,-22.938,-14.57],"1.2083":[-16.813,-24.205,-14.32],"1.25":[-17.835,-25.921,-13.595],"1.2917":[-18.297,-26.157,-12.8],"1.3333":[-18.872,-25.876,-11.473],"1.375":[-19.244,-25.682,-10.987],"1.4167":[-19.754,-25.3,-10.986],"1.4583":[-20.026,-25.21,-11.126],"1.5":[-20.145,-25.108,-11.252],"1.5417":[-20.103,-25.056,-11.278],"1.5833":[-20.02,-25.043,-11.305],"1.625":[-19.859,-25.045,-11.342],"1.6667":[-19.772,-25.053,-11.357],"1.7083":[-19.712,-25.066,-11.357],"1.75":[-19.677,-25.083,-11.349],"1.7917":[-19.656,-25.102,-11.335],"1.8333":[-19.651,-25.108,-11.33],"1.875":[-19.638,-25.129,-11.313],"1.9167":[-19.631,-25.143,-11.302],"1.9583":[-19.615,-25.162,-11.286],"2.0":[-19.608,-25.169,-11.281]}},"righthand_1":{"rotation":{"0.3333":[52.5,0,0],"0.625":[0,0,0]},"position":{"0.0":[-0.7,3.5,0.25],"0.3333":[-0.9458,2.0042,1.5547],"0.625":[-0.7,3.5,0.25]},"scale":[1,1.5,1]},"weapon":{"rotation":{"0.0":[45.827,-3.786,34.085],"0.0417":[76.937,-10.059,-8.933],"0.0833":[68.282,3.67,17.852],"0.125":[65.759,-3.806,21.571],"0.1667":[61.525,-13.397,22.784],"0.2083":[58.238,-5.054,25.11],"0.25":[66.967,-24.016,-6.57],"0.2917":[66.701,-16.993,10.895],"0.3333":[57.867,-8.945,44.092],"0.375":[68.17,-14.709,5.93],"0.4167":[61.104,8.012,7.568],"0.4583":[59.6,24.828,6.781],"0.5":[61.511,50.207,5.086],"0.5417":[67.332,66.019,6.295],"0.5833":[88.074,79.51,21.073],"0.625":[201.38,79.16,123.589],"0.6667":[194.933,100.511,126.979],"0.7083":[85.383,118.673,23.174],"0.75":[75.292,184.329,21.666],"0.7917":[77.518,229.153,17.529],"0.8333":[22.519,254.231,74.789],"0.875":[-70.155,188.932,110.778],"0.9167":[-85.028,182.272,94.907],"0.9583":[-119.395,211.972,62.042],"1.0":[-168.974,253.789,99.621],"1.0417":[-252.385,235.954,192.115],"1.0833":[-250.584,200.334,221.881],"1.125":[-235.704,187.37,239.012],"1.1667":[-188.567,177.734,254.561],"1.2083":[-174.286,167.447,261.465],"1.25":[-161.354,151.242,268.685],"1.2917":[-159.93,147.766,268.834],"1.3333":[-162.229,141.83,262.676],"1.375":[-165.009,139.758,257.998],"1.4167":[-171.21,140.382,249.69],"1.4583":[-172.81,140.489,247.154],"1.5":[-173.151,140.737,244.947],"1.5417":[-172.937,140.825,243.937],"1.5833":[-172.942,140.676,243.123],"1.625":[-173.002,140.325,242.044],"1.6667":[-172.977,140.126,241.632],"1.7083":[-172.742,140,241.623],"1.75":[-172.423,139.934,241.877],"1.7917":[-172.069,139.898,242.285],"1.8333":[-171.946,139.893,242.44],"1.875":[-171.56,139.881,242.951],"1.9167":[-171.3,139.871,243.295],"1.9583":[-170.925,139.859,243.77],"2.0":[-170.807,139.848,243.905]},"position":{"0.0":[-10.954,-11.405,-6.59],"0.0417":[-9.594,-10.845,-5.153],"0.0833":[-14.238,-10.901,-5.926],"0.125":[-14.367,-7.923,-9.876],"0.1667":[-12.292,-3.805,-15.3],"0.2083":[-4.7,0.554,-29.883],"0.25":[-5.086,0.133,-28.763],"0.2917":[-8.389,-0.912,-23.902],"0.3333":[-18.496,-6.393,-9.389],"0.375":[-12.995,-17.388,1.559],"0.4167":[-11.757,-16.267,-2.55],"0.4583":[-10.795,-15.573,-5.419],"0.5":[-9.301,-14.456,-9.969],"0.5417":[-8.383,-13.6,-13.096],"0.5833":[-7.595,-12.634,-16.212],"0.625":[-6.696,-10.988,-20.648],"0.6667":[-6.915,-9.168,-19.252],"0.7083":[-7.47,-6.753,-20.068],"0.75":[-8.493,-3.544,-20.164],"0.7917":[-10.075,-1.026,-18.745],"0.8333":[-10.916,0.076,-17.385],"0.875":[-9.768,1.2,-14.294],"0.9167":[-8.971,1.341,-14.328],"0.9583":[-6.865,1.477,-15.498],"1.0":[-5.994,1.567,-17.126],"1.0417":[-6.556,1.342,-18.954],"1.0833":[-8.019,1.679,-19.219],"1.125":[-8.543,1.783,-18.455],"1.1667":[-9.377,-1.155,-17.959],"1.2083":[-9.898,-2.657,-17.471],"1.25":[-10.679,-4.406,-16.717],"1.2917":[-11.218,-4.442,-15.913],"1.3333":[-11.792,-3.748,-14.466],"1.375":[-12.131,-3.373,-13.895],"1.4167":[-12.506,-2.867,-13.779],"1.4583":[-12.76,-2.727,-13.885],"1.5":[-12.912,-2.588,-14.007],"1.5417":[-12.906,-2.519,-14.038],"1.5833":[-12.849,-2.481,-14.063],"1.625":[-12.721,-2.446,-14.094],"1.6667":[-12.65,-2.439,-14.106],"1.7083":[-12.605,-2.446,-14.111],"1.75":[-12.58,-2.468,-14.109],"1.7917":[-12.567,-2.494,-14.101],"1.8333":[-12.563,-2.503,-14.099],"1.875":[-12.557,-2.536,-14.092],"1.9167":[-12.553,-2.558,-14.086],"1.9583":[-12.544,-2.586,-14.078],"2.0":[-12.54,-2.596,-14.076]}},"camera":{"rotation":{"0.0":[0.04,-0.036,-0.024],"0.0417":[0.137,-0.119,-0.098],"0.0833":[0.306,-0.266,-0.307],"0.125":[0.38,-0.33,-0.516],"0.1667":[-0.056,-0.256,-1.287],"0.2083":[-0.507,-0.091,-1.81],"0.25":[0.171,0.027,-1.314],"0.2917":[0.09,-0.142,-0.101],"0.3333":[0.081,0.221,0.761],"0.375":[0.263,0.466,-0.336],"0.4167":[0.298,0.414,0.296],"0.4583":[0.281,0.305,0.244],"0.5":[0.199,0.144,0.155],"0.5417":[0.108,0.065,0.129],"0.5833":[0.049,0.022,0.094],"0.625":[0.005,0,0.024],"0.6667":[0.002,0.011,-0.036],"0.7083":[0.014,0.109,-0.156],"0.75":[0.03,0.186,-0.196],"0.7917":[0.049,0.262,-0.146],"0.8333":[0.081,0.327,-0.006],"0.875":[0.113,0.242,0.114],"0.9167":[0.135,0.169,0.13],"0.9583":[0.172,0.075,0.073],"1.0":[0.201,0.122,0],"1.0417":[0.238,0.303,-0.129],"1.0833":[0.262,0.416,-0.218],"1.125":[0.29,0.49,-0.348],"1.1667":[0.3,0.493,-0.434],"1.2083":[0.232,0.422,-0.529],"1.25":[0.087,0.335,-0.562],"1.2917":[-0.105,0.192,-0.557],"1.3333":[-0.115,0.109,-0.488],"1.375":[-0.043,0.008,-0.075],"1.4167":[0,0,0.079],"1.4583":[0.047,0,0.106],"1.5":[0.052,0,0.095],"1.5417":[0.047,0,0.062],"1.5833":[0.035,0,-0.002],"1.625":[0.027,0,-0.024],"1.6667":[0.024,0,-0.024],"1.7083":[0.018,0,-0.024],"1.75":[0.013,0,-0.019],"1.7917":[0.013,0,-0.019],"1.8333":[0.006,0,-0.011],"1.875":[0.006,0,-0.004],"1.9167":[0.002,0,-0.004],"1.9583":[-0.001,0,-0.004],"2.0":[-0.001,0,-0.004]}}},"sound_effects":{"0.0":{"effect":"melee.polaris.melee_1"},"0.4583":{"effect":"melee.polaris.polaris_rotate_1"}}},"melee_3":{"loop":"hold_on_last_frame","animation_length":2.75,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[126.754,6.706,103.375],"0.0417":[120.509,-2.091,124.543],"0.0833":[115.52,-3.85,162.106],"0.125":[131.432,-14.315,126.033],"0.1667":[120.837,-3.669,125.201],"0.2083":[109.826,11.672,130.296],"0.25":[101.492,43.375,134.324],"0.2917":[114.655,43.326,148.225],"0.3333":[121.84,30.307,154.524],"0.375":[120.311,29.388,153.584],"0.4167":[119.091,29.048,153.098],"0.4583":[118.671,28.946,152.957],"0.5":[107.238,-5.764,179.201],"0.5417":[103.295,-10.832,185.228],"0.5833":[108.151,-6.924,181.89],"0.625":[108.867,-4.705,180.366],"0.6667":[106.15,-5.585,181.29],"0.7083":[116.774,8.908,174.381],"0.75":[112.359,30.222,152.44],"0.7917":[101.352,35.114,131.376],"0.8333":[98.193,35.013,121.528],"0.875":[105.529,21.961,107.767],"0.9167":[109.17,19.952,104.259],"0.9583":[120.63,19.921,93.468],"1.0":[127.994,26.388,84.972],"1.0417":[129.731,29.957,81.902],"1.0833":[130.081,30.164,81.214],"1.125":[130.113,29.728,81.237],"1.1667":[129.994,28.779,81.61],"1.2083":[129.791,27.961,82.07],"1.25":[129.271,26.488,83.052],"1.2917":[128.761,25.369,83.886],"1.3333":[127.718,23.536,85.388],"1.375":[126.821,22.249,86.544],"1.4167":[125.152,20.292,88.492],"1.4583":[123.815,19.014,89.924],"1.5":[121.473,17.215,92.252],"1.5417":[119.695,16.14,93.909],"1.5833":[117.754,15.2,95.638],"1.625":[114.572,14.099,98.333],"1.6667":[112.299,13.603,100.173],"1.7083":[108.725,13.254,102.95],"1.75":[105.035,13.399,105.688],"1.7917":[101.329,14.031,108.321],"1.8333":[100.107,14.345,109.165],"1.875":[96.528,15.558,111.572],"1.9167":[94.245,16.566,113.061],"1.9583":[91.034,18.306,115.106],"2.0":[88.132,20.221,116.929],"2.0417":[85.594,22.193,118.539],"2.0833":[84.125,23.479,119.513],"2.125":[82.287,25.274,120.839],"2.1667":[81.776,25.818,121.251],"2.2083":[80.564,27.233,122.407],"2.25":[87.771,20.979,120.071],"2.2917":[95.811,15.15,111.894],"2.3333":[101.554,13.644,103.372],"2.375":[106.511,14.002,105.543],"2.4167":[109.81,12.807,107.261],"2.4583":[114.125,10.761,106.928],"2.5":[116.336,11.73,103.491],"2.5417":[118.108,13.425,101.821],"2.5833":[118.959,13.797,103.263],"2.625":[122.641,15.331,114.247],"2.6667":[123.91,17.289,117.038],"2.7083":[125.005,19.742,119.168],"2.75":[126.155,22.168,121.513]},"position":{"0.0":[13.858,-34.116,-11.435],"0.0417":[18.733,-32.568,-11.889],"0.0833":[25.634,-28.515,-9.801],"0.125":[16.514,-19.687,-6.957],"0.1667":[16.698,-19.522,-3.498],"0.2083":[16.479,-19.913,-0.956],"0.25":[17.481,-20.705,-2.743],"0.2917":[14.56,-20.411,-12.992],"0.3333":[9.263,-20.632,-17.899],"0.375":[9.274,-20.192,-18.415],"0.4167":[9.207,-19.85,-18.816],"0.4583":[9.151,-19.725,-18.953],"0.5":[12.624,-18.274,-21.446],"0.5417":[13.469,-18.6,-22.327],"0.5833":[12.769,-19.017,-21.772],"0.625":[12.355,-18.928,-21.364],"0.6667":[12.466,-18.495,-21.332],"0.7083":[15.546,-20.465,-13.958],"0.75":[15.604,-23.209,1.823],"0.7917":[15.615,-22.798,9.602],"0.8333":[15.87,-23.234,11.299],"0.875":[19.232,-27.413,8.271],"0.9167":[19.929,-28.757,6.529],"0.9583":[19.722,-32.164,-0.231],"1.0":[16.501,-33.506,-6.297],"1.0417":[14.524,-33.62,-8.519],"1.0833":[13.791,-33.918,-9.405],"1.125":[13.555,-34.159,-9.769],"1.1667":[13.336,-34.552,-10.206],"1.2083":[13.283,-34.834,-10.43],"1.25":[13.34,-35.289,-10.672],"1.2917":[13.467,-35.611,-10.772],"1.3333":[13.787,-36.115,-10.833],"1.375":[14.081,-36.461,-10.814],"1.4167":[14.633,-36.988,-10.698],"1.4583":[15.068,-37.337,-10.561],"1.5":[15.808,-37.848,-10.269],"1.5417":[16.351,-38.175,-10.018],"1.5833":[16.927,-38.484,-9.724],"1.625":[17.837,-38.908,-9.208],"1.6667":[18.465,-39.159,-8.819],"1.7083":[19.425,-39.479,-8.181],"1.75":[20.387,-39.727,-7.494],"1.7917":[21.332,-39.897,-6.78],"1.8333":[21.64,-39.935,-6.541],"1.875":[22.539,-39.997,-5.833],"1.9167":[23.11,-39.995,-5.381],"1.9583":[23.92,-39.928,-4.757],"2.0":[24.664,-39.79,-4.224],"2.0417":[25.336,-39.587,-3.816],"2.0833":[25.742,-39.419,-3.629],"2.125":[26.282,-39.122,-3.501],"2.1667":[26.443,-39.012,-3.503],"2.2083":[26.861,-38.649,-3.66],"2.25":[25.444,-34.097,-9.144],"2.2917":[21.775,-28.721,-13.268],"2.3333":[18.026,-24.776,-14.687],"2.375":[16.086,-24.235,-14.851],"2.4167":[15.161,-24.323,-14.738],"2.4583":[14.841,-24.067,-14.216],"2.5":[14.859,-23.832,-13.952],"2.5417":[15.049,-23.699,-13.89],"2.5833":[15.131,-23.717,-13.988],"2.625":[15.481,-24.003,-14.71],"2.6667":[15.44,-24.079,-14.848],"2.7083":[15.312,-24.112,-14.909],"2.75":[15.167,-24.121,-14.963]}},"lefthand":{"rotation":{"0.0":[0,0,-0.001],"0.0417":[-0.001,0,-0.001],"0.0833":[0,0,-0.001],"0.125":[-0.001,0,-0.001],"0.2083":[-0.001,0,0],"0.5":[0,0,0],"0.75":[-0.001,0,0],"0.875":[0,0,0],"0.9167":[0,0.001,0],"0.9583":[0,0,-0.001],"1.0":[0,0,-0.002],"1.25":[0,0,-0.002],"1.3333":[0.001,0,-0.002],"1.4167":[0.001,0,-0.001],"1.4583":[0,0,-0.001],"1.625":[0,0,-0.001],"1.6667":[0,0.001,0],"1.7083":[0,0,0],"1.75":[-0.001,0.001,0],"1.7917":[-0.001,0,0],"2.0":[-0.002,0,0],"2.25":[-0.002,0,0],"2.2917":[-0.001,0,0],"2.3333":[0,0.001,0],"2.375":[0,0.001,0],"2.4167":[-0.001,0,0],"2.4583":[0,0,0],"2.5":[0,0,-0.001],"2.6667":[0,0,0],"2.7083":[0,0,0],"2.75":[0,0,0]}},"lefthand_1":{"rotation":{"0.0":[0,0,0],"0.5":[7.5,0,0],"0.7083":[7.5,0,0],"0.8333":[0,0,0]},"position":[2.4203,1.7186,-4.0235],"scale":[1,1.5,1]},"righthand":{"rotation":{"0.0":[80.31,23.596,178.675],"0.0417":[136.731,12.682,205.006],"0.0833":[169.597,6.917,223.33],"0.125":[183.497,7.765,219.464],"0.1667":[192.167,8.837,215.002],"0.2083":[200.135,9.97,210.156],"0.25":[206.289,5.656,199.926],"0.2917":[188.143,-21.15,209.828],"0.3333":[191.614,-18.415,208.599],"0.375":[190.136,-17.757,208.971],"0.4167":[189.682,-17.384,209.203],"0.4583":[182.774,-21.128,219.391],"0.5":[145.86,-20.462,257.677],"0.5417":[146.886,-21.803,257.002],"0.5833":[152.334,-23.852,253.021],"0.625":[151.794,-22.354,253.073],"0.6667":[150.003,-21.083,253.256],"0.7083":[197.691,-8.152,236.776],"0.75":[203.236,3.325,238.72],"0.7917":[202.912,7.226,241.123],"0.8333":[193.99,14.143,231.949],"0.875":[172.128,22.325,208.643],"0.9167":[166.107,22.953,202.281],"0.9583":[148.123,21.507,183.836],"1.0":[131.62,16.283,168.383],"1.0417":[121.641,11.742,160.376],"1.0833":[102.033,28.076,158.89],"1.125":[88.255,34.471,139.202],"1.1667":[47.865,51.983,119.927],"1.2083":[85.743,59.614,156.956],"1.25":[124.136,48.139,185.017],"1.2917":[132.999,41.276,184.368],"1.3333":[143.809,30.001,181.427],"1.375":[148.014,15.321,181.948],"1.4167":[149.875,7.832,179.202],"1.4583":[149.926,9.273,174.949],"1.5":[148.17,15.721,158.245],"1.5417":[143.597,12.495,164.27],"1.5833":[135.966,4.312,186.27],"1.625":[122.732,-1.97,221.038],"1.6667":[123.248,-5.577,238.413],"1.7083":[116.648,-9.08,270.525],"1.75":[106.384,2.746,335.635],"1.7917":[93.166,-6.978,325.566],"1.8333":[94.177,-11.934,303.128],"1.875":[119.492,-22.68,243.513],"1.9167":[135.265,-19.603,216.5],"1.9583":[132.582,-20.909,201.168],"2.0":[123.067,-21.559,192.997],"2.0417":[107.858,-4.016,178.474],"2.0833":[104.228,10.759,171.26],"2.125":[114.615,27.601,174.457],"2.1667":[117.904,23.221,178.115],"2.2083":[118.038,17.639,198.394],"2.25":[117.998,-5.054,222.017],"2.2917":[116.528,-14.463,224.936],"2.3333":[117.146,-24.904,227.53],"2.375":[117.924,-40.87,233.973],"2.4167":[117.885,-42.046,234.071],"2.4583":[118.117,-39.678,232.464],"2.5":[118,-37.547,231.875],"2.5417":[117.654,-36.424,231.936],"2.5833":[117.465,-36.536,232.231],"2.625":[116.864,-37.151,233.219],"2.6667":[116.791,-37.093,233.238],"2.7083":[116.76,-36.992,233.177],"2.75":[116.735,-36.952,233.167]},"position":{"0.0":[-15.483,-27.681,-3.82],"0.0417":[-12.161,-25.77,-10.707],"0.0833":[-6.671,-22.365,-12.059],"0.125":[-3.633,-21.821,-9.24],"0.1667":[-1.762,-21.62,-7.402],"0.2083":[0.336,-21.347,-6.242],"0.25":[5.736,-20.578,-12.505],"0.2917":[-5.64,-19.726,-22.924],"0.3333":[-6.458,-20.122,-22.304],"0.375":[-6.466,-19.801,-22.824],"0.4167":[-6.541,-19.648,-23.039],"0.4583":[-6.419,-18.906,-23.194],"0.5":[-3.802,-16.916,-23.716],"0.5417":[-3.87,-17.213,-23.734],"0.5833":[-4.601,-17.571,-23.364],"0.625":[-4.626,-17.268,-23.275],"0.6667":[-4.422,-16.865,-23.317],"0.7083":[0.094,-20.922,-12.81],"0.75":[0.336,-21.515,-0.676],"0.7917":[1.135,-21.198,3.601],"0.8333":[-1.156,-23.665,0.882],"0.875":[-5.516,-28.449,-4.485],"0.9167":[-6.555,-29.532,-5.811],"0.9583":[-9.575,-32.336,-9.757],"1.0":[-12.493,-34.327,-13.645],"1.0417":[-14.395,-35.144,-16.179],"1.0833":[-15.251,-29.204,-16.1],"1.125":[-15.358,-27.163,-15.658],"1.1667":[-16.132,-25.023,-15.692],"1.2083":[-16.513,-24.336,-16.266],"1.25":[-16.698,-24.138,-16.856],"1.2917":[-16.573,-24.147,-17.032],"1.3333":[-16.226,-24.047,-17.178],"1.375":[-15.867,-23.875,-17.276],"1.4167":[-15.253,-23.669,-17.106],"1.4583":[-14.748,-23.577,-16.842],"1.5":[-13.312,-23.648,-16.559],"1.5417":[-12.808,-23.908,-16.108],"1.5833":[-12.567,-24.117,-15.46],"1.625":[-12.38,-24.906,-14.454],"1.6667":[-13.148,-25.94,-13.547],"1.7083":[-14.686,-26.201,-12.25],"1.75":[-17.513,-23.235,-13.343],"1.7917":[-17.143,-21.362,-13.08],"1.8333":[-17.487,-21.437,-12.813],"1.875":[-19.145,-22.596,-12.411],"1.9167":[-19.876,-23.547,-12.79],"1.9583":[-20.893,-24.552,-14.298],"2.0":[-21.475,-24.911,-15.916],"2.0417":[-20.364,-23.737,-16.67],"2.0833":[-18.927,-22.804,-17.205],"2.125":[-16.414,-21.744,-17.757],"2.1667":[-15.742,-21.679,-18.365],"2.2083":[-12.846,-24.886,-14.744],"2.25":[-14.856,-26.657,-13.175],"2.2917":[-16.433,-27.586,-12.221],"2.3333":[-17.787,-27.426,-11.56],"2.375":[-19.374,-25.96,-10.946],"2.4167":[-19.775,-25.618,-10.905],"2.4583":[-19.906,-25.393,-11.065],"2.5":[-19.854,-25.253,-11.188],"2.5417":[-19.757,-25.15,-11.27],"2.5833":[-19.715,-25.12,-11.278],"2.625":[-19.596,-25.077,-11.283],"2.6667":[-19.595,-25.108,-11.284],"2.7083":[-19.606,-25.151,-11.282],"2.75":[-19.608,-25.169,-11.282]}},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.375":[-25,0,0],"0.5417":[-21.2292,12.9203,29.9006],"0.5833":[-23.307,9.3073,20.5764],"0.7083":[-23.307,9.3073,20.5764],"0.8333":[0,0,0]},"position":[-0.7,3.5,0.25],"scale":[1,1.5,1]},"weapon":{"rotation":{"0.0":[-130.729,-32.375,6.113],"0.0417":[-198.761,-11.739,36.642],"0.0833":[-236.02,0.197,52.56],"0.125":[-246.082,1.727,47.789],"0.1667":[-252.002,2.293,42.452],"0.2083":[-257.853,3.486,35.525],"0.25":[-265.484,8.046,23.736],"0.2917":[-261.638,21.304,42.656],"0.3333":[-265.678,19.356,41.2],"0.375":[-264.378,18.408,41.533],"0.4167":[-264.017,17.949,41.741],"0.4583":[-256.422,20.174,52.131],"0.5":[-221.304,12.665,87.147],"0.5417":[-222.048,14.15,86.669],"0.5833":[-226.806,17.044,83.523],"0.625":[-226.582,15.482,83.425],"0.6667":[-225.123,13.937,83.316],"0.7083":[-264.593,18.597,47.054],"0.75":[-273.327,2.068,40.201],"0.7917":[-269.52,0.701,44.231],"0.8333":[-255.804,-3.779,37.294],"0.875":[-226.515,-8.957,19.685],"0.9167":[-218.986,-9.277,14.877],"0.9583":[-196.637,-7.874,0.733],"1.0":[-175.371,-3.67,-11.51],"1.0417":[-162.093,-0.018,-17.969],"1.0833":[-148.554,-20.655,-13.76],"1.125":[-125.702,-27.998,-29.331],"1.1667":[-69.777,-31.183,0.11],"1.2083":[-36.704,-80.788,-26.182],"1.25":[-98.629,-135.458,67.592],"1.2917":[-84.34,-147.438,77.371],"1.3333":[-9.942,-232.351,77.979],"1.375":[63.11,-233.411,163.939],"1.4167":[85.44,-186.892,182.186],"1.4583":[110.816,-171.777,167.712],"1.5":[158.442,-163.873,155.491],"1.5417":[173.853,-163.056,161.735],"1.5833":[181.74,-168.38,180.664],"1.625":[185.655,-180.604,215.877],"1.6667":[185.483,-193.832,241.566],"1.7083":[186.388,-205.94,278.48],"1.75":[177.537,-183.262,345.483],"1.7917":[165.709,-185.104,433.413],"1.8333":[169.024,-176.517,457.033],"1.875":[189.216,-140.031,517.564],"1.9167":[227.064,-112.559,545.797],"1.9583":[366.51,-93.344,483.233],"2.0":[382.071,-100.511,534.405],"2.0417":[499.817,-108.192,481.277],"2.0833":[541.038,-128.307,483.834],"2.125":[534.653,-160.581,538.676],"2.1667":[540.219,-157.081,543.388],"2.2083":[548.188,-157.081,560.494],"2.25":[547.549,-182.103,585.754],"2.2917":[548.56,-193.295,590.155],"2.3333":[548.189,-205.706,594.701],"2.375":[549.948,-224.185,605.336],"2.4167":[550.375,-226.37,606.824],"2.4583":[549.142,-223.942,604.287],"2.5":[548.682,-221.84,603.311],"2.5417":[548.748,-220.683,603.206],"2.5833":[548.975,-220.764,603.536],"2.625":[549.757,-221.274,604.678],"2.6667":[549.819,-221.206,604.694],"2.7083":[549.824,-221.1,604.619],"2.75":[549.841,-221.059,604.603]},"position":{"0.0":[-7.384,-9.663,-6.318],"0.0417":[-4.036,-4.123,-13.591],"0.0833":[2.151,-0.085,-13.241],"0.125":[4.713,0.533,-9.209],"0.1667":[6.077,0.61,-6.785],"0.2083":[7.882,0.793,-5.841],"0.25":[13.045,2.146,-12.602],"0.2917":[2.638,3.662,-24.489],"0.3333":[1.918,3.307,-23.643],"0.375":[1.904,3.595,-24.231],"0.4167":[1.838,3.729,-24.464],"0.4583":[2.06,4.042,-25.03],"0.5":[3.765,4.272,-26.99],"0.5417":[3.733,4.07,-26.984],"0.5833":[3.23,3.95,-26.462],"0.625":[3.202,4.173,-26.388],"0.6667":[3.336,4.498,-26.477],"0.7083":[8.576,1.134,-13.926],"0.75":[9.013,0.4,0.516],"0.7917":[9.964,0.33,3.526],"0.8333":[7.65,-1.767,0.671],"0.875":[3.009,-5.581,-5.024],"0.9167":[1.836,-6.404,-6.484],"0.9583":[-1.734,-8.536,-11.005],"1.0":[-5.319,-10.211,-15.688],"1.0417":[-7.626,-11.098,-18.806],"1.0833":[-7.105,-5.968,-18.616],"1.125":[-6.856,-3.353,-17.98],"1.1667":[-6.222,-1.036,-17.593],"1.2083":[-6.087,-0.101,-15.32],"1.25":[-9.214,-0.012,-14.805],"1.2917":[-10.371,0.009,-15.542],"1.3333":[-12.125,1.401,-16.662],"1.375":[-9.791,2.344,-17.941],"1.4167":[-7.557,2.024,-17.672],"1.4583":[-6.787,1.113,-17.265],"1.5":[-6.927,0.917,-17.491],"1.5417":[-6.213,0.059,-17.947],"1.5833":[-5.195,-1.055,-17.727],"1.625":[-4.817,-3.676,-17.208],"1.6667":[-5.603,-4.832,-16.405],"1.7083":[-7.396,-5.808,-15.282],"1.75":[-12.673,-2.285,-16.839],"1.7917":[-10.577,3.516,-19.122],"1.8333":[-10.556,4.275,-19.313],"1.875":[-12.631,5.682,-18.932],"1.9167":[-16.049,9.065,-18.58],"1.9583":[-14.945,16.828,-19.982],"2.0":[-9.196,17.942,-20.282],"2.0417":[-5.55,12.394,-21.072],"2.0833":[-5.762,7.79,-20.54],"2.125":[-7.825,1.443,-20.758],"2.1667":[-7.295,0.89,-21.198],"2.2083":[-4.795,-3.512,-17.165],"2.25":[-7.471,-5.32,-15.99],"2.2917":[-9.274,-5.956,-15.114],"2.3333":[-10.771,-5.37,-14.438],"2.375":[-12.442,-3.306,-13.647],"2.4167":[-12.764,-2.888,-13.565],"2.4583":[-12.864,-2.673,-13.751],"2.5":[-12.773,-2.604,-13.9],"2.5417":[-12.659,-2.544,-14.002],"2.5833":[-12.621,-2.519,-14.014],"2.625":[-12.522,-2.48,-14.029],"2.6667":[-12.522,-2.514,-14.033],"2.7083":[-12.529,-2.561,-14.033],"2.75":[-12.533,-2.578,-14.033]}},"camera":{"rotation":{"0.0":[0.26,0.465,-0.331],"0.0417":[0.247,0.461,-0.316],"0.0833":[0.234,0.459,-0.301],"0.125":[0.139,0.443,-0.189],"0.1667":[0.062,0.426,-0.099],"0.2083":[-0.155,0.378,0.14],"0.25":[-0.373,0.316,0.394],"0.2917":[-0.54,0.215,0.581],"0.3333":[-0.539,0.16,0.568],"0.375":[-0.449,0.062,0.198],"0.4167":[0.004,0.517,-3.184],"0.4583":[0.195,-0.21,0.407],"0.5":[0.201,-0.465,1.67],"0.5417":[-0.035,-0.354,-0.514],"0.5833":[-0.163,-0.405,-0.152],"0.625":[-0.227,-0.281,-0.855],"0.6667":[-0.055,-0.138,-0.504],"0.7083":[0.144,-0.039,-0.12],"0.75":[0.183,-0.016,-0.018],"0.7917":[0.111,-0.008,-0.002],"0.8333":[0.027,-0.007,-0.002],"0.875":[-0.025,-0.007,-0.002],"0.9167":[-0.077,-0.007,-0.002],"0.9583":[-0.129,-0.007,-0.002],"1.0":[-0.155,-0.007,-0.002],"1.0417":[-0.228,-0.006,0.003],"1.0833":[-0.267,-0.006,0.003],"1.125":[-0.292,-0.006,0.003],"1.1667":[-0.302,-0.006,0.003],"1.2083":[-0.289,-0.035,0.065],"1.25":[-0.254,-0.109,0.197],"1.2917":[-0.213,-0.201,0.337],"1.3333":[-0.165,-0.281,0.399],"1.375":[-0.139,-0.316,0.378],"1.4167":[-0.048,-0.445,0.145],"1.4583":[0.02,-0.496,-0.049],"1.5":[0.049,-0.506,-0.123],"1.5417":[0.119,-0.408,-0.18],"1.5833":[0.155,-0.285,-0.049],"1.625":[0.191,-0.156,0.122],"1.6667":[0.217,-0.033,0.27],"1.7083":[0.233,0.09,0.424],"1.75":[0.251,0.188,0.502],"1.7917":[0.273,0.243,0.421],"1.8333":[0.295,0.275,0.246],"1.875":[0.327,0.287,0.098],"1.9167":[0.372,0.266,-0.003],"1.9583":[0.424,0.208,-0.098],"2.0":[0.453,0.173,-0.138],"2.0417":[0.535,0.039,-0.274],"2.0833":[0.58,-0.056,-0.353],"2.125":[0.599,-0.138,-0.432],"2.1667":[0.58,-0.205,-0.504],"2.2083":[0.432,-0.257,-0.552],"2.25":[0.237,-0.28,-0.589],"2.2917":[0.016,-0.259,-0.601],"2.3333":[-0.153,-0.167,-0.531],"2.375":[-0.218,-0.075,-0.355],"2.4167":[-0.2,0.018,-0.12],"2.4583":[-0.135,0.062,0.103],"2.5":[-0.093,0.054,0.172],"2.5417":[0.027,-0.006,0.155],"2.5833":[0.078,-0.045,0.075],"2.625":[0.083,-0.049,0],"2.6667":[0.051,-0.031,-0.08],"2.7083":[0.018,-0.01,-0.12],"2.75":[0.004,-0.004,-0.063]}}},"sound_effects":{"0.0":{"effect":"melee.polaris.melee_1"},"1.0417":{"effect":"melee.polaris.polaris_rotate_3"}}},"inspect":{"loop":"hold_on_last_frame","animation_length":13.2083,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-54.355,161.869,-58.298],"0.0417":[-59.025,170.598,-59.929],"0.0833":[-61.509,175.385,-60.216],"0.125":[-63.026,178.26,-60.194],"0.1667":[-65.018,181.913,-59.95],"0.2083":[-66.095,183.811,-59.726],"0.25":[-67.205,185.698,-59.434],"0.2917":[-67.524,186.226,-59.339],"0.3333":[-67.713,186.533,-59.281],"0.375":[-67.83,186.723,-59.244],"0.4167":[-67.996,186.99,-59.191],"0.4583":[-68.099,187.154,-59.157],"0.5":[-68.243,187.383,-59.11],"0.5417":[-68.331,187.523,-59.08],"0.5833":[-68.454,187.717,-59.038],"0.625":[-68.529,187.834,-59.012],"0.6667":[-68.632,187.994,-58.976],"0.7083":[-68.695,188.091,-58.954],"0.75":[-68.778,188.22,-58.924],"0.7917":[-68.829,188.297,-58.906],"0.8333":[-68.895,188.397,-58.882],"0.875":[-68.933,188.456,-58.868],"0.9167":[-68.983,188.53,-58.85],"0.9583":[-69.01,188.572,-58.84],"1.0":[-69.045,188.622,-58.828],"1.0417":[-69.063,188.648,-58.821],"1.0833":[-69.083,188.676,-58.814],"1.125":[-69.092,188.688,-58.81],"1.1667":[-69.099,188.697,-58.808],"1.2083":[-69.1,188.696,-58.808],"1.25":[-69.096,188.686,-58.809],"1.2917":[-69.09,188.674,-58.811],"1.3333":[-69.076,188.648,-58.818],"1.375":[-69.063,188.627,-58.821],"1.4167":[-69.04,188.588,-58.83],"1.4583":[-69.022,188.558,-58.836],"1.5":[-68.992,188.507,-58.847],"1.5417":[-68.969,188.47,-58.856],"1.5833":[-68.933,188.41,-58.869],"1.625":[-68.907,188.367,-58.878],"1.6667":[-68.866,188.3,-58.893],"1.7083":[-68.838,188.252,-58.904],"1.75":[-68.792,188.181,-58.92],"1.7917":[-68.762,188.13,-58.931],"1.8333":[-68.715,188.054,-58.949],"1.875":[-68.684,188.004,-58.959],"1.9167":[-68.636,187.926,-58.977],"1.9583":[-68.606,187.876,-58.988],"2.0":[-68.561,187.797,-59.001],"2.0417":[-68.531,187.747,-59.012],"2.0833":[-68.487,187.674,-59.028],"2.125":[-68.458,187.626,-59.038],"2.1667":[-68.417,187.558,-59.052],"2.2083":[-68.392,187.515,-59.061],"2.25":[-68.357,187.452,-59.071],"2.2917":[-68.335,187.415,-59.078],"2.3333":[-68.305,187.363,-59.089],"2.375":[-68.287,187.332,-59.095],"2.4167":[-68.265,187.292,-59.102],"2.4583":[-68.252,187.269,-59.106],"2.5":[-68.238,187.243,-59.111],"2.5417":[-68.232,187.231,-59.113],"2.5833":[-68.227,187.221,-59.114],"2.625":[-68.226,187.217,-59.115],"2.6667":[-68.221,187.206,-59.116],"2.7083":[-68.215,187.195,-59.118],"2.75":[-68.204,187.174,-59.12],"2.7917":[-68.195,187.152,-59.125],"2.8333":[-68.178,187.123,-59.131],"2.875":[-68.165,187.101,-59.135],"2.9167":[-68.144,187.065,-59.142],"2.9583":[-68.129,187.039,-59.147],"3.0":[-68.104,186.995,-59.155],"3.0417":[-68.086,186.965,-59.161],"3.0833":[-68.057,186.916,-59.17],"3.125":[-68.037,186.882,-59.177],"3.1667":[-68.006,186.829,-59.187],"3.2083":[-67.984,186.792,-59.194],"3.25":[-67.951,186.734,-59.205],"3.2917":[-67.928,186.695,-59.212],"3.3333":[-67.892,186.634,-59.223],"3.375":[-67.868,186.592,-59.231],"3.4167":[-67.832,186.529,-59.242],"3.4583":[-67.808,186.486,-59.25],"3.5":[-67.771,186.422,-59.261],"3.5417":[-67.747,186.378,-59.269],"3.5833":[-67.71,186.312,-59.28],"3.625":[-67.686,186.268,-59.288],"3.6667":[-67.65,186.203,-59.298],"3.7083":[-67.626,186.159,-59.306],"3.75":[-67.593,186.093,-59.316],"3.7917":[-67.57,186.05,-59.323],"3.8333":[-67.537,185.987,-59.333],"3.875":[-67.516,185.945,-59.339],"3.9167":[-67.485,185.884,-59.348],"3.9583":[-67.466,185.844,-59.354],"4.0":[-67.439,185.78,-59.361],"4.0417":[-67.423,185.702,-59.365],"4.0833":[-67.403,185.551,-59.37],"4.125":[-67.39,185.457,-59.373],"4.1667":[-67.371,185.333,-59.376],"4.2083":[-67.36,185.253,-59.378],"4.25":[-67.345,185.138,-59.381],"4.2917":[-67.336,185.066,-59.383],"4.3333":[-67.323,184.961,-59.385],"4.375":[-67.315,184.893,-59.386],"4.4167":[-67.308,184.791,-59.386],"4.4583":[-67.309,184.707,-59.392],"4.5":[-67.34,184.418,-59.467],"4.5417":[-67.371,184.179,-59.535],"4.5833":[-67.409,183.889,-59.606],"4.625":[-67.413,183.825,-59.601],"4.6667":[-67.365,184.059,-59.462],"4.7083":[-67.007,188.18,-57.088],"4.75":[-68.726,196.363,-41.674],"4.7917":[-71.917,202.605,-30.372],"4.8333":[-78.648,210.904,-13.97],"4.875":[-82.412,215.14,-5.425],"4.9167":[-80.865,219.61,-1.642],"4.9583":[-73.185,220.995,-6.148],"5.0":[-58.128,220.34,-16.337],"5.0417":[-50.007,219.754,-21.39],"5.0833":[-44.711,223.919,-23.912],"5.125":[-44.88,229.805,-23.524],"5.1667":[-47.302,237.971,-21.852],"5.2083":[-49.746,241.165,-20.096],"5.25":[-55.199,244.115,-15.837],"5.2917":[-56.767,245.389,-14.487],"5.3333":[-55.6,246.146,-15.088],"5.375":[-54.124,246.469,-15.954],"5.4167":[-51.443,247.01,-17.435],"5.4583":[-49.284,247.3,-18.664],"5.5":[-46.022,247.753,-20.57],"5.5417":[-43.72,248.019,-21.942],"5.5833":[-40.063,248.297,-24.153],"5.625":[-37.596,248.487,-25.675],"5.6667":[-33.662,248.576,-28.096],"5.7083":[-30.76,248.303,-29.809],"5.75":[-25.663,247.581,-32.81],"5.7917":[-22.216,246.763,-34.696],"5.8333":[-18.599,244.366,-35.742],"5.875":[-18.221,241.172,-33.942],"5.9167":[-19.366,234.791,-29.406],"5.9583":[-19.664,231.329,-27.792],"6.0":[-19.561,227.231,-27.057],"6.0417":[-19.71,224.303,-27.666],"6.0833":[-21.09,218.379,-31.548],"6.125":[-22.333,215.715,-34.347],"6.1667":[-23.77,214.32,-37.23],"6.2083":[-24.703,214.136,-38.801],"6.25":[-26.509,215.104,-39.776],"6.2917":[-28.316,217.468,-38.567],"6.3333":[-32.247,222.32,-33.998],"6.375":[-35.375,223.845,-30.676],"6.4167":[-40.609,224.174,-25.43],"6.4583":[-44.067,223.821,-22.124],"6.5":[-49.045,223.181,-17.566],"6.5417":[-52.291,222.509,-14.73],"6.5833":[-55.32,221.047,-12.591],"6.625":[-55.138,219.821,-13.603],"6.6667":[-53.057,217.612,-16.992],"6.7083":[-52.212,215.927,-18.328],"6.75":[-54.837,213.271,-12.63],"6.7917":[-48.802,224.72,-12.685],"6.8333":[-16.309,247.851,-35.21],"6.875":[-5.649,249.835,-43.986],"6.9167":[1.372,250.173,-49.465],"6.9583":[1.636,249.453,-49.322],"7.0":[0.543,247.455,-48.172],"7.0417":[1.182,245.679,-49.014],"7.0833":[2.257,242.018,-51.101],"7.125":[2.288,239.071,-52.14],"7.1667":[0.925,234.282,-52.453],"7.2083":[-0.966,231.053,-51.589],"7.25":[-5.337,226.275,-48.261],"7.2917":[-9.354,222.368,-44.341],"7.3333":[-16.033,215.611,-37.591],"7.375":[-20.768,211.118,-33.441],"7.4167":[-29.002,205.615,-28.704],"7.4583":[-35.928,202.435,-26.247],"7.5":[-47.664,198.35,-23.865],"7.5417":[-55.652,196.412,-23.189],"7.5833":[-66.577,194.849,-23.105],"7.625":[-72.363,194.438,-23.365],"7.6667":[-77.607,194.127,-23.852],"7.7083":[-79.016,194.126,-24.021],"7.75":[-79.269,194.217,-24.078],"7.7917":[-78.945,194.291,-24.062],"7.8333":[-79.005,194.373,-24.092],"7.875":[-79.504,194.398,-24.17],"7.9167":[-79.843,194.425,-24.215],"7.9583":[-79.727,194.449,-24.14],"8.0":[-79.456,194.477,-24.015],"8.0417":[-79.254,194.492,-23.937],"8.0833":[-78.922,194.508,-23.827],"8.125":[-78.686,194.515,-23.757],"8.1667":[-78.314,194.524,-23.653],"8.2083":[-78.057,194.529,-23.582],"8.25":[-77.664,194.538,-23.475],"8.2917":[-77.399,194.545,-23.399],"8.3333":[-77.004,194.56,-23.279],"8.375":[-76.744,194.574,-23.193],"8.4167":[-76.366,194.603,-23.052],"8.4583":[-76.125,194.628,-22.95],"8.5":[-75.784,194.678,-22.782],"8.5417":[-75.574,194.72,-22.658],"8.5833":[-75.288,194.798,-22.455],"8.625":[-75.124,194.861,-22.305],"8.6667":[-74.917,194.974,-22.056],"8.7083":[-74.806,195.064,-21.877],"8.75":[-74.695,195.215,-21.581],"8.7917":[-74.647,195.344,-21.36],"8.8333":[-74.584,195.593,-20.982],"8.875":[-74.543,195.796,-20.705],"8.9167":[-74.5,196.147,-20.255],"8.9583":[-74.479,196.41,-19.932],"9.0":[-74.459,196.841,-19.42],"9.0417":[-74.455,197.151,-19.061],"9.0833":[-74.464,197.643,-18.501],"9.125":[-74.479,197.987,-18.115],"9.1667":[-74.518,198.52,-17.522],"9.2083":[-74.554,198.883,-17.119],"9.25":[-74.623,199.434,-16.507],"9.2917":[-74.68,199.802,-16.095],"9.3333":[-74.78,200.349,-15.476],"9.375":[-74.856,200.707,-15.065],"9.4167":[-74.985,201.229,-14.454],"9.4583":[-75.079,201.562,-14.053],"9.5":[-75.233,202.035,-13.464],"9.5417":[-75.342,202.328,-13.083],"9.5833":[-75.515,202.729,-12.531],"9.625":[-75.636,202.968,-12.18],"9.6667":[-75.822,203.275,-11.683],"9.7083":[-75.948,203.444,-11.373],"9.75":[-76.139,203.636,-10.946],"9.7917":[-76.266,203.719,-10.69],"9.8333":[-76.452,203.773,-10.352],"9.875":[-76.574,203.758,-10.161],"9.9167":[-76.749,203.653,-9.933],"9.9583":[-76.859,203.524,-9.821],"10.0":[-77.014,203.239,-9.72],"10.0417":[-77.108,202.984,-9.7],"10.0833":[-77.237,202.498,-9.747],"10.125":[-77.313,202.103,-9.832],"10.1667":[-77.415,201.4,-10.042],"10.2083":[-77.489,200.875,-10.194],"10.25":[-77.614,200.016,-10.42],"10.2917":[-77.708,199.396,-10.572],"10.3333":[-77.862,198.401,-10.801],"10.375":[-77.974,197.694,-10.96],"10.4167":[-78.152,196.58,-11.21],"10.4583":[-78.278,195.797,-11.385],"10.5":[-78.473,194.575,-11.666],"10.5417":[-78.612,193.727,-11.868],"10.5833":[-78.828,192.41,-12.194],"10.625":[-78.978,191.504,-12.429],"10.6667":[-79.212,190.108,-12.81],"10.7083":[-79.374,189.155,-13.086],"10.75":[-79.627,187.695,-13.534],"10.7917":[-79.803,186.705,-13.857],"10.8333":[-80.077,185.197,-14.38],"10.875":[-80.268,184.18,-14.756],"10.9167":[-80.566,182.641,-15.362],"10.9583":[-80.774,181.608,-15.795],"11.0":[-81.1,180.052,-16.491],"11.0417":[-81.328,179.014,-16.986],"11.0833":[-81.686,177.459,-17.776],"11.125":[-81.936,176.427,-18.335],"11.1667":[-82.33,174.889,-19.224],"11.2083":[-82.605,173.873,-19.85],"11.25":[-83.037,172.367,-20.839],"11.2917":[-83.339,171.377,-21.533],"11.3333":[-83.812,169.918,-22.624],"11.375":[-84.142,168.965,-23.384],"11.4167":[-84.657,167.569,-24.575],"11.4583":[-85.015,166.661,-25.401],"11.5":[-85.572,165.339,-26.688],"11.5417":[-85.956,164.485,-27.577],"11.5833":[-86.552,163.25,-28.954],"11.625":[-86.961,162.457,-29.9],"11.6667":[-87.591,161.317,-31.359],"11.7083":[-88.02,160.591,-32.357],"11.75":[-88.675,159.555,-33.887],"11.7917":[-89.118,158.9,-34.927],"11.8333":[-89.79,157.972,-36.515],"11.875":[-90.241,157.391,-37.589],"11.9167":[-90.918,156.575,-39.22],"11.9583":[-91.367,156.068,-40.317],"12.0":[-92.036,155.363,-41.974],"12.0417":[-92.474,154.93,-43.082],"12.0833":[-93.119,154.334,-44.747],"12.125":[-93.537,153.972,-45.855],"12.1667":[-94.143,153.481,-47.511],"12.2083":[-94.53,153.186,-48.607],"12.25":[-95.082,152.792,-50.235],"12.2917":[-95.429,152.56,-51.308],"12.3333":[-95.913,152.255,-52.893],"12.375":[-96.21,152.079,-53.932],"12.4167":[-96.611,151.854,-55.46],"12.4583":[-96.849,151.728,-56.456],"12.5":[-91.98,155.81,-58.595],"12.5417":[-85.87,160.547,-62.968],"12.5833":[-77.933,164.044,-73.078],"12.625":[-75.001,163.672,-76.591],"12.6667":[-71.572,162.969,-73.636],"12.7083":[-69.324,163.227,-71.352],"12.75":[-66.035,164.329,-70.361],"12.7917":[-64.002,164.905,-70.316],"12.8333":[-61.197,163.746,-72.67],"12.875":[-59.575,161.955,-74.931],"12.9167":[-56.854,160.526,-71.134],"12.9583":[-54.941,160.152,-65.613],"13.0":[-53.149,159.505,-60.556],"13.0417":[-52.521,158.926,-59.169],"13.2083":[-53.845,157.833,-58.487]},"position":{"0.0":[15.303,-26.848,-15.162],"0.0417":[15.639,-30.794,-13.826],"0.0833":[15.824,-32.736,-12.762],"0.125":[15.931,-33.82,-12.02],"0.1667":[16.06,-35.103,-10.97],"0.2083":[16.124,-35.727,-10.38],"0.25":[16.184,-36.316,-9.762],"0.2917":[16.201,-36.476,-9.584],"0.3333":[16.21,-36.567,-9.478],"0.375":[16.216,-36.624,-9.412],"0.4167":[16.225,-36.703,-9.319],"0.4583":[16.23,-36.751,-9.261],"0.5":[16.237,-36.818,-9.181],"0.5417":[16.242,-36.859,-9.131],"0.5833":[16.248,-36.914,-9.062],"0.625":[16.251,-36.948,-9.02],"0.6667":[16.256,-36.994,-8.962],"0.7083":[16.26,-37.022,-8.927],"0.75":[16.264,-37.059,-8.88],"0.7917":[16.266,-37.081,-8.852],"0.8333":[16.27,-37.109,-8.815],"0.875":[16.271,-37.126,-8.793],"0.9167":[16.274,-37.147,-8.765],"0.9583":[16.275,-37.159,-8.75],"1.0":[16.277,-37.173,-8.731],"1.0417":[16.278,-37.181,-8.721],"1.0833":[16.28,-37.189,-8.709],"1.125":[16.28,-37.193,-8.704],"1.1667":[16.281,-37.195,-8.7],"1.2083":[16.281,-37.195,-8.699],"1.25":[16.281,-37.193,-8.702],"1.2917":[16.281,-37.19,-8.705],"1.3333":[16.281,-37.184,-8.713],"1.375":[16.281,-37.178,-8.72],"1.4167":[16.28,-37.168,-8.733],"1.4583":[16.28,-37.16,-8.743],"1.5":[16.279,-37.146,-8.76],"1.5417":[16.278,-37.136,-8.772],"1.5833":[16.277,-37.12,-8.792],"1.625":[16.276,-37.108,-8.807],"1.6667":[16.275,-37.09,-8.83],"1.7083":[16.274,-37.077,-8.846],"1.75":[16.272,-37.057,-8.87],"1.7917":[16.271,-37.043,-8.887],"1.8333":[16.269,-37.022,-8.913],"1.875":[16.268,-37.008,-8.931],"1.9167":[16.267,-36.987,-8.957],"1.9583":[16.265,-36.973,-8.974],"2.0":[16.264,-36.951,-9],"2.0417":[16.263,-36.938,-9.016],"2.0833":[16.261,-36.917,-9.041],"2.125":[16.26,-36.904,-9.057],"2.1667":[16.259,-36.885,-9.079],"2.2083":[16.258,-36.873,-9.094],"2.25":[16.256,-36.856,-9.114],"2.2917":[16.256,-36.846,-9.126],"2.3333":[16.255,-36.831,-9.143],"2.375":[16.254,-36.823,-9.152],"2.4167":[16.254,-36.812,-9.165],"2.4583":[16.254,-36.806,-9.172],"2.5":[16.253,-36.799,-9.18],"2.5417":[16.253,-36.796,-9.183],"2.5833":[16.254,-36.793,-9.185],"2.625":[16.254,-36.792,-9.186],"2.6667":[16.254,-36.789,-9.189],"2.7083":[16.254,-36.786,-9.192],"2.75":[16.254,-36.781,-9.198],"2.7917":[16.254,-36.776,-9.203],"2.8333":[16.253,-36.768,-9.213],"2.875":[16.253,-36.762,-9.22],"2.9167":[16.252,-36.752,-9.231],"2.9583":[16.252,-36.744,-9.24],"3.0":[16.251,-36.732,-9.254],"3.0417":[16.25,-36.724,-9.264],"3.0833":[16.249,-36.71,-9.28],"3.125":[16.248,-36.7,-9.291],"3.1667":[16.247,-36.685,-9.309],"3.2083":[16.246,-36.674,-9.321],"3.25":[16.245,-36.658,-9.339],"3.2917":[16.244,-36.647,-9.352],"3.3333":[16.243,-36.63,-9.372],"3.375":[16.242,-36.618,-9.385],"3.4167":[16.241,-36.6,-9.405],"3.4583":[16.24,-36.588,-9.419],"3.5":[16.239,-36.57,-9.439],"3.5417":[16.238,-36.557,-9.452],"3.5833":[16.237,-36.539,-9.473],"3.625":[16.237,-36.526,-9.486],"3.6667":[16.235,-36.508,-9.506],"3.7083":[16.235,-36.496,-9.519],"3.75":[16.235,-36.478,-9.538],"3.7917":[16.234,-36.466,-9.55],"3.8333":[16.234,-36.449,-9.568],"3.875":[16.233,-36.438,-9.58],"3.9167":[16.233,-36.421,-9.596],"3.9583":[16.233,-36.411,-9.607],"4.0":[16.234,-36.395,-9.621],"4.0417":[16.24,-36.38,-9.628],"4.0833":[16.254,-36.356,-9.634],"4.125":[16.262,-36.34,-9.638],"4.1667":[16.273,-36.319,-9.644],"4.2083":[16.28,-36.306,-9.648],"4.25":[16.291,-36.288,-9.651],"4.2917":[16.298,-36.276,-9.653],"4.3333":[16.308,-36.259,-9.656],"4.375":[16.314,-36.249,-9.657],"4.4167":[16.325,-36.234,-9.655],"4.4583":[16.333,-36.224,-9.664],"4.5":[16.338,-36.19,-9.811],"4.5417":[16.34,-36.161,-9.946],"4.5833":[16.346,-36.126,-10.089],"4.625":[16.356,-36.12,-10.078],"4.6667":[16.387,-36.156,-9.786],"4.7083":[16.404,-36.192,-6.097],"4.75":[16.531,-34.282,-5.886],"4.7917":[16.572,-32.997,-6.006],"4.8333":[16.465,-31.148,-6.452],"4.875":[16.259,-30.012,-6.833],"4.9167":[15.768,-28.455,-7.504],"4.9583":[15.342,-27.394,-8.099],"5.0":[14.598,-25.687,-8.888],"5.0417":[14.073,-24.555,-9.191],"5.0833":[13.262,-23.201,-9.249],"5.125":[12.677,-22.589,-9.133],"5.1667":[11.952,-21.855,-8.908],"5.2083":[11.667,-21.422,-8.78],"5.25":[11.44,-20.93,-8.646],"5.2917":[11.331,-20.668,-8.629],"5.3333":[11.249,-20.386,-8.741],"5.375":[11.21,-20.219,-8.818],"5.4167":[11.153,-19.976,-8.876],"5.4583":[11.12,-19.823,-8.906],"5.5":[11.064,-19.596,-8.946],"5.5417":[11.029,-19.445,-8.969],"5.5833":[10.994,-19.205,-9.006],"5.625":[10.965,-19.047,-9.025],"5.6667":[10.952,-18.792,-9.059],"5.7083":[11.001,-18.587,-9.095],"5.75":[11.193,-18.151,-9.192],"5.7917":[11.381,-17.828,-9.259],"5.8333":[11.711,-17.492,-9.306],"5.875":[11.955,-17.458,-9.273],"5.9167":[12.369,-17.685,-9.166],"5.9583":[12.655,-17.996,-9.107],"6.0":[13.097,-18.684,-8.993],"6.0417":[13.428,-19.263,-8.874],"6.0833":[14.093,-20.508,-8.489],"6.125":[14.433,-21.169,-8.261],"6.1667":[14.674,-21.632,-8.193],"6.2083":[14.774,-21.825,-8.237],"6.25":[14.881,-22.075,-8.456],"6.2917":[14.934,-22.27,-8.75],"6.3333":[14.887,-22.51,-9.459],"6.375":[14.69,-22.545,-10.073],"6.4167":[14.106,-22.408,-11.184],"6.4583":[13.603,-22.257,-11.913],"6.5":[12.791,-22.03,-12.889],"6.5417":[12.171,-21.849,-13.496],"6.5833":[11.409,-21.585,-14.088],"6.625":[11.179,-21.444,-14.197],"6.6667":[11.119,-21.268,-14.093],"6.7083":[11.115,-21.16,-13.948],"6.75":[11.258,-21.044,-13.102],"6.7917":[11.325,-21.148,-12.76],"6.8333":[11.608,-21.486,-12.614],"6.875":[11.77,-21.575,-12.278],"6.9167":[11.994,-21.688,-11.673],"6.9583":[12.141,-21.737,-11.254],"7.0":[12.372,-21.751,-10.697],"7.0417":[12.538,-21.704,-10.424],"7.0833":[12.771,-21.504,-10.112],"7.125":[12.926,-21.333,-9.945],"7.1667":[13.181,-21.112,-9.723],"7.2083":[13.38,-21.039,-9.578],"7.25":[13.742,-21.104,-9.327],"7.2917":[14.04,-21.168,-9.103],"7.3333":[14.547,-21.43,-8.759],"7.375":[14.912,-21.853,-8.582],"7.4167":[15.485,-23.096,-8.422],"7.4583":[15.893,-24.361,-8.249],"7.5":[16.437,-26.595,-7.657],"7.5417":[16.692,-28.085,-7.012],"7.5833":[16.886,-29.982,-5.828],"7.625":[16.922,-30.889,-5.078],"7.6667":[16.933,-31.639,-4.367],"7.7083":[16.935,-31.851,-4.212],"7.75":[16.944,-31.937,-4.291],"7.7917":[16.952,-31.932,-4.428],"7.8333":[16.961,-31.993,-4.543],"7.875":[16.964,-32.097,-4.546],"7.9167":[16.966,-32.201,-4.623],"7.9583":[16.966,-32.216,-4.72],"8.0":[16.964,-32.224,-4.885],"8.0417":[16.963,-32.226,-5.002],"8.0833":[16.96,-32.226,-5.188],"8.125":[16.957,-32.223,-5.316],"8.1667":[16.952,-32.214,-5.515],"8.2083":[16.947,-32.205,-5.65],"8.25":[16.94,-32.187,-5.855],"8.2917":[16.934,-32.172,-5.991],"8.3333":[16.924,-32.145,-6.194],"8.375":[16.917,-32.125,-6.326],"8.4167":[16.905,-32.09,-6.519],"8.4583":[16.896,-32.066,-6.642],"8.5":[16.883,-32.028,-6.817],"8.5417":[16.874,-32.001,-6.925],"8.5833":[16.86,-31.961,-7.074],"8.625":[16.852,-31.935,-7.162],"8.6667":[16.838,-31.897,-7.277],"8.7083":[16.829,-31.873,-7.34],"8.75":[16.819,-31.841,-7.413],"8.7917":[16.81,-31.819,-7.449],"8.8333":[16.79,-31.78,-7.495],"8.875":[16.772,-31.748,-7.52],"8.9167":[16.743,-31.696,-7.549],"8.9583":[16.72,-31.657,-7.562],"9.0":[16.682,-31.596,-7.575],"9.0417":[16.654,-31.552,-7.579],"9.0833":[16.611,-31.484,-7.579],"9.125":[16.581,-31.438,-7.574],"9.1667":[16.535,-31.367,-7.563],"9.2083":[16.504,-31.319,-7.551],"9.25":[16.458,-31.248,-7.53],"9.2917":[16.428,-31.202,-7.514],"9.3333":[16.384,-31.134,-7.486],"9.375":[16.356,-31.09,-7.466],"9.4167":[16.317,-31.028,-7.433],"9.4583":[16.293,-30.989,-7.411],"9.5":[16.26,-30.936,-7.376],"9.5417":[16.241,-30.905,-7.353],"9.5833":[16.217,-30.864,-7.319],"9.625":[16.205,-30.841,-7.297],"9.6667":[16.193,-30.815,-7.266],"9.7083":[16.189,-30.803,-7.247],"9.75":[16.19,-30.796,-7.221],"9.7917":[16.195,-30.797,-7.207],"9.8333":[16.212,-30.811,-7.188],"9.875":[16.229,-30.828,-7.179],"9.9167":[16.264,-30.866,-7.171],"9.9583":[16.293,-30.901,-7.169],"10.0":[16.349,-30.967,-7.172],"10.0417":[16.394,-31.02,-7.178],"10.0833":[16.473,-31.116,-7.195],"10.125":[16.535,-31.191,-7.21],"10.1667":[16.642,-31.32,-7.24],"10.2083":[16.721,-31.416,-7.258],"10.25":[16.849,-31.573,-7.282],"10.2917":[16.94,-31.687,-7.294],"10.3333":[17.087,-31.869,-7.306],"10.375":[17.192,-31.999,-7.311],"10.4167":[17.357,-32.204,-7.312],"10.4583":[17.474,-32.347,-7.308],"10.5":[17.657,-32.572,-7.296],"10.5417":[17.785,-32.728,-7.283],"10.5833":[17.985,-32.971,-7.257],"10.625":[18.123,-33.137,-7.234],"10.6667":[18.338,-33.394,-7.193],"10.7083":[18.486,-33.57,-7.161],"10.75":[18.714,-33.838,-7.104],"10.7917":[18.871,-34.02,-7.061],"10.8333":[19.112,-34.296,-6.989],"10.875":[19.276,-34.482,-6.936],"10.9167":[19.528,-34.764,-6.848],"10.9583":[19.698,-34.953,-6.785],"11.0":[19.958,-35.236,-6.682],"11.0417":[20.134,-35.425,-6.609],"11.0833":[20.401,-35.707,-6.493],"11.125":[20.581,-35.894,-6.412],"11.1667":[20.853,-36.171,-6.285],"11.2083":[21.035,-36.354,-6.196],"11.25":[21.31,-36.623,-6.059],"11.2917":[21.494,-36.8,-5.966],"11.3333":[21.771,-37.058,-5.822],"11.375":[21.955,-37.227,-5.726],"11.4167":[22.231,-37.471,-5.579],"11.4583":[22.415,-37.629,-5.482],"11.5":[22.689,-37.857,-5.337],"11.5417":[22.871,-38.003,-5.241],"11.5833":[23.142,-38.212,-5.102],"11.625":[23.321,-38.344,-5.011],"11.6667":[23.588,-38.53,-4.882],"11.7083":[23.763,-38.647,-4.8],"11.75":[24.024,-38.809,-4.686],"11.7917":[24.196,-38.908,-4.616],"11.8333":[24.45,-39.043,-4.522],"11.875":[24.616,-39.124,-4.467],"11.9167":[24.862,-39.23,-4.399],"11.9583":[25.024,-39.29,-4.364],"12.0":[25.261,-39.365,-4.327],"12.0417":[25.415,-39.403,-4.314],"12.0833":[25.642,-39.444,-4.314],"12.125":[25.79,-39.459,-4.327],"12.1667":[26.005,-39.462,-4.368],"12.2083":[26.144,-39.452,-4.41],"12.25":[26.345,-39.416,-4.498],"12.2917":[26.474,-39.378,-4.573],"12.3333":[26.66,-39.3,-4.711],"12.375":[26.777,-39.232,-4.821],"12.4167":[26.943,-39.108,-5.014],"12.4583":[27.047,-39.008,-5.161],"12.5":[26.154,-35.978,-8.855],"12.5417":[23.87,-31.817,-12.487],"12.5833":[19.102,-25.958,-15.183],"12.625":[17.161,-24.107,-15.404],"12.6667":[16.149,-24.108,-15.448],"12.7083":[15.529,-24.467,-15.437],"12.75":[14.948,-24.332,-15.144],"12.7917":[14.869,-24.234,-14.878],"12.8333":[14.853,-24.014,-14.569],"12.875":[14.989,-23.858,-14.429],"12.9167":[15.209,-23.882,-14.671],"12.9583":[15.37,-24.013,-15.031],"13.0":[15.449,-24.153,-15.356],"13.0417":[15.411,-24.197,-15.44],"13.2083":[15.167,-24.121,-14.963]}},"lefthand":{"rotation":{"0.0":[0,0,0],"0.0833":[0,0,0],"0.125":[-0.001,0,0],"4.75":[-0.001,0,-0.001],"4.7917":[0,0,-0.001],"4.8333":[0,0,0],"7.0417":[0,0,-0.001],"7.0833":[0,0,-0.001],"7.25":[0,0,0],"7.625":[0,0,-0.001],"8.8333":[0,0,0],"11.125":[0,0,0],"11.1667":[0,0,0],"11.2083":[0,0,-0.001],"11.4167":[-0.001,0,-0.001],"11.4583":[-0.001,0,-0.001],"11.5417":[-0.001,0,-0.001],"11.5833":[-0.001,0,0],"12.5833":[0,0,0],"13.1667":[0,0,0]}},"lefthand_1":{"rotation":{"0.0":[0,0,0],"7.0417":[0,0,-0.001],"7.0833":[0,0,-0.001],"7.25":[0,0,0],"7.625":[0,0,-0.001],"8.8333":[0,0,0],"11.125":[0,0,0],"11.1667":[0,0,0],"11.2083":[0,0,-0.001],"11.4167":[-0.001,0,-0.001],"11.4583":[-0.001,0,-0.001],"11.5417":[-0.001,0,-0.001],"11.5833":[-0.001,0,0],"12.5833":[0,0,0],"13.1667":[0,0,0]},"position":{"0.0":[2.4203,1.7186,-4.0235],"5.2083":[0.7912,4.4498,-1.4966],"6.4167":[0.7912,4.4498,-1.4966],"6.625":[1.3872,4.9661,-1.3698],"7.8333":[1.3872,4.9661,-1.3698],"8.0833":[2.4203,1.7186,-4.0235]},"scale":[1,1.5,1]},"lefthand_pos":{"rotation":{"4.75":[-0.001,0,-0.001],"4.7917":[0,0,-0.001],"4.8333":[0,0,0],"7.0417":[0,0,-0.001],"7.0833":[0,0,-0.001],"7.25":[0,0,0],"7.625":[0,0,-0.001],"8.8333":[0,0,0],"11.125":[0,0,0],"11.1667":[0,0,0],"11.2083":[0,0,-0.001],"11.4167":[-0.001,0,-0.001],"11.4583":[-0.001,0,-0.001],"11.5417":[-0.001,0,-0.001],"11.5833":[-0.001,0,0],"12.5833":[0,0,0],"13.1667":[0,0,0]}},"righthand":{"rotation":{"0.0":[-34.863,-139.676,38.269],"0.0417":[-11.836,-145.477,22.729],"0.0833":[4.429,-155.742,5.048],"0.125":[7.611,-166.145,-5.074],"0.1667":[-11.561,-204.06,-26.345],"0.2083":[-41.484,-215.535,-53.823],"0.25":[-70.841,-201.518,-72.478],"0.2917":[-68.817,-189.464,-52.044],"0.3333":[-62.883,-175.965,-12.254],"0.375":[-57.63,-169.118,18.034],"0.4167":[-57.484,-153.107,55.446],"0.4583":[-63.189,-139.739,73.218],"0.5":[-49.816,-125.889,66.812],"0.5417":[-31.135,-123.776,45.786],"0.5833":[-13.993,-129.498,18.794],"0.625":[-9.424,-133.391,6.659],"0.6667":[-23.948,-129.305,7.757],"0.7083":[-39.037,-127.676,14.062],"0.75":[-53.397,-140.278,17.825],"0.7917":[-59.245,-153.935,15.811],"0.8333":[-67.525,-175.725,4.73],"0.875":[-74.825,-190.063,-10.084],"0.9167":[-88.96,-204.527,-36.956],"0.9583":[-100.506,-210.183,-57.469],"1.0":[-106.656,-220.109,-88.098],"1.0417":[-105.618,-219.959,-93.894],"1.0833":[-101.247,-212.121,-90.929],"1.125":[-98.83,-206.486,-88.318],"1.1667":[-97.029,-201.672,-85.623],"1.2083":[-96.875,-201.815,-84.178],"1.25":[-94.642,-204.429,-82.254],"1.2917":[-85.902,-208.117,-78.657],"1.3333":[-77.07,-212.746,-78.952],"1.375":[-84.314,-213.468,-94.728],"1.4167":[-90.209,-207.212,-101.888],"1.4583":[-91.436,-202.349,-99.974],"1.5":[-94.093,-196.985,-101.449],"1.5417":[-95.701,-193.857,-102.605],"1.5833":[-97.561,-190.545,-102.913],"1.625":[-98.447,-189.962,-101.719],"1.6667":[-98.423,-189.905,-100.172],"1.7083":[-97.555,-190.004,-99.544],"1.75":[-95.802,-190.431,-98.751],"1.7917":[-94.71,-190.877,-98.247],"1.8333":[-92.956,-191.925,-97.518],"1.875":[-91.854,-192.585,-97.109],"1.9167":[-90.589,-193.014,-96.772],"1.9583":[-90.098,-192.977,-96.793],"2.0":[-90.152,-192.797,-97.094],"2.0417":[-90.515,-192.6,-97.414],"2.0833":[-91.225,-192.29,-97.99],"2.125":[-91.786,-192.094,-98.505],"2.1667":[-92.753,-191.793,-99.361],"2.2083":[-93.268,-191.639,-99.673],"2.25":[-93.74,-191.521,-99.469],"2.2917":[-93.934,-191.494,-99.12],"2.3333":[-94.097,-191.49,-98.759],"2.375":[-94.106,-191.518,-98.623],"2.4167":[-94.011,-191.585,-98.476],"2.4583":[-93.905,-191.626,-98.4],"2.5":[-93.63,-191.696,-98.33],"2.5417":[-93.458,-191.735,-98.305],"2.5833":[-93.344,-191.774,-98.283],"2.625":[-93.329,-191.793,-98.288],"2.6667":[-93.322,-191.782,-98.287],"2.7083":[-93.237,-191.514,-98.185],"2.75":[-92.899,-190.186,-97.713],"2.7917":[-92.686,-189.37,-97.454],"2.8333":[-92.464,-188.672,-97.416],"2.875":[-92.347,-188.379,-97.551],"2.9167":[-92.487,-188.103,-97.435],"2.9583":[-92.353,-187.983,-97.396],"3.0":[-91.952,-187.944,-97.103],"3.0417":[-91.602,-188.014,-96.817],"3.0833":[-91.074,-188.183,-96.392],"3.125":[-90.7,-188.294,-96.071],"3.1667":[-90.178,-188.611,-95.659],"3.2083":[-90.038,-189.099,-95.723],"3.25":[-90.051,-190.207,-96.229],"3.2917":[-90.144,-190.98,-96.639],"3.3333":[-90.332,-191.827,-97.045],"3.375":[-90.533,-192.197,-97.181],"3.4167":[-90.855,-192.496,-97.259],"3.4583":[-91.007,-192.502,-97.234],"3.5":[-91.191,-192.244,-97.09],"3.5417":[-91.29,-191.994,-96.957],"3.5833":[-91.415,-191.687,-96.794],"3.625":[-91.465,-191.585,-96.738],"3.6667":[-91.492,-191.502,-96.696],"3.7083":[-91.51,-191.454,-96.659],"3.75":[-91.398,-191.611,-96.427],"3.7917":[-91.257,-191.788,-96.248],"3.8333":[-91.154,-191.88,-96.047],"3.875":[-91.182,-191.767,-95.977],"3.9167":[-91.264,-191.479,-95.912],"3.9583":[-91.341,-191.252,-95.897],"4.0":[-91.484,-190.934,-95.917],"4.0417":[-91.597,-190.784,-95.954],"4.0833":[-91.848,-190.638,-96.086],"4.125":[-92.062,-190.589,-96.215],"4.1667":[-92.388,-190.647,-96.405],"4.2083":[-92.572,-190.822,-96.496],"4.25":[-92.834,-191.377,-96.593],"4.2917":[-92.994,-191.802,-96.645],"4.3333":[-93.187,-192.269,-96.714],"4.375":[-93.277,-192.483,-96.752],"4.4167":[-93.386,-192.716,-96.798],"4.4583":[-93.462,-192.815,-96.828],"4.5":[-93.608,-192.875,-96.873],"4.5417":[-93.71,-192.868,-96.902],"4.5833":[-93.821,-192.816,-96.946],"4.625":[-93.841,-192.767,-96.977],"4.6667":[-93.797,-192.647,-97.025],"4.7083":[-93.743,-192.553,-97.058],"4.75":[-93.669,-192.426,-97.108],"4.7917":[-93.649,-192.372,-97.14],"4.8333":[-93.658,-192.328,-97.192],"4.875":[-93.673,-192.307,-97.23],"4.9167":[-93.707,-192.283,-97.29],"4.9583":[-93.73,-192.272,-97.33],"5.0":[-93.768,-192.26,-97.385],"5.0417":[-93.79,-192.252,-97.417],"5.0833":[-93.817,-192.24,-97.454],"5.125":[-93.824,-192.229,-97.469],"5.1667":[-93.819,-192.208,-97.476],"5.2083":[-93.81,-192.192,-97.473],"5.25":[-93.79,-192.168,-97.461],"5.2917":[-93.774,-192.152,-97.449],"5.3333":[-93.745,-192.127,-97.426],"5.375":[-93.724,-192.111,-97.408],"5.4167":[-93.69,-192.086,-97.378],"5.4583":[-93.667,-192.07,-97.357],"5.5":[-93.631,-192.044,-97.323],"5.5417":[-93.608,-192.027,-97.302],"5.5833":[-93.574,-192.002,-97.27],"5.625":[-93.553,-191.985,-97.25],"5.6667":[-93.525,-191.96,-97.224],"5.7083":[-93.509,-191.943,-97.209],"5.75":[-93.49,-191.917,-97.193],"5.7917":[-93.481,-191.9,-97.186],"5.8333":[-93.53,-191.884,-97.24],"5.875":[-93.636,-191.879,-97.351],"5.9167":[-93.696,-191.823,-97.418],"5.9583":[-93.564,-191.723,-97.275],"6.0":[-93.219,-191.501,-96.931],"6.0417":[-93.014,-191.316,-96.813],"6.0833":[-92.716,-190.967,-96.797],"6.125":[-92.37,-190.94,-96.76],"6.1667":[-91.713,-191.066,-96.7],"6.2083":[-91.246,-191.19,-96.654],"6.25":[-90.586,-191.362,-96.55],"6.2917":[-90.224,-191.423,-96.442],"6.3333":[-89.76,-191.444,-96.22],"6.375":[-89.465,-191.442,-96.044],"6.4167":[-89.045,-191.419,-95.759],"6.4583":[-88.783,-191.396,-95.566],"6.5":[-88.42,-191.356,-95.292],"6.5417":[-87.872,-191.335,-95.4],"6.5833":[-87.647,-191.306,-95.169],"6.625":[-87.527,-191.299,-95.084],"6.6667":[-87.554,-191.308,-95.221],"6.7083":[-87.64,-191.33,-95.397],"6.75":[-87.749,-191.381,-95.616],"6.7917":[-87.879,-191.423,-95.768],"6.8333":[-87.573,-191.791,-95.861],"6.875":[-87.309,-192.324,-95.564],"6.9167":[-86.35,-192.941,-95.225],"6.9583":[-85.77,-192.995,-94.666],"7.0":[-84.877,-192.855,-93.574],"7.0417":[-84.372,-192.694,-92.883],"7.0833":[-83.599,-192.501,-92.514],"7.125":[-83.511,-192.357,-92.298],"7.1667":[-83.595,-192.13,-92.192],"7.2083":[-83.768,-191.988,-92.213],"7.25":[-84.235,-191.813,-92.369],"7.2917":[-84.737,-191.715,-92.604],"7.3333":[-85.556,-191.576,-93.03],"7.375":[-86.031,-191.482,-93.292],"7.4167":[-86.754,-191.332,-93.716],"7.4583":[-87.181,-191.243,-93.996],"7.5":[-87.602,-191.153,-94.36],"7.5417":[-87.735,-191.124,-94.577],"7.5833":[-87.81,-191.109,-94.87],"7.625":[-87.824,-191.109,-95.037],"7.6667":[-87.828,-191.109,-95.197],"7.7083":[-87.775,-191.125,-95.232],"7.75":[-87.693,-191.196,-95.28],"7.7917":[-87.635,-191.289,-95.311],"7.8333":[-87.573,-191.472,-95.352],"7.875":[-87.546,-191.652,-95.381],"7.9167":[-87.532,-191.818,-95.398],"7.9583":[-87.722,-191.826,-95.242],"8.0":[-88.45,-192.816,-93.648],"8.0417":[-88.973,-195.203,-90.808],"8.0833":[-89.159,-202.909,-81.623],"8.125":[-86.498,-211.838,-67.02],"8.1667":[-61.836,-227.627,-11.355],"8.2083":[-59.732,-227.072,-9.02],"8.25":[-60.27,-225.501,-15.515],"8.2917":[-56.296,-225.539,-13.316],"8.3333":[-53.341,-227.431,-9.703],"8.375":[-50.721,-226.524,-5.404],"8.4167":[-49.127,-223.906,-1.514],"8.4583":[-51.913,-226.173,-3.195],"8.5":[-51.817,-228.094,-2.955],"8.5417":[-50.766,-228.772,-2.092],"8.5833":[-56.507,-229.404,-5.647],"8.625":[-63.093,-228.031,-12.431],"8.6667":[-57.005,-229.963,-7.248],"8.7083":[-55.628,-228.596,-6.347],"8.75":[-52.694,-226.873,-4.435],"8.7917":[-53.557,-226.615,-5.269],"8.8333":[-53.032,-226.063,-4.98],"8.875":[-52.557,-225.876,-4.74],"8.9167":[-51.686,-225.786,-4.316],"8.9583":[-51.599,-225.798,-4.459],"9.0":[-54.226,-226.053,-7.019],"9.0417":[-59.535,-225.747,-14.565],"9.0833":[-69.088,-224.04,-28.407],"9.125":[-75.292,-221.548,-39.344],"9.1667":[-83.461,-216.093,-55.486],"9.2083":[-87.6,-214.816,-64.328],"9.25":[-92.534,-217.316,-74.041],"9.2917":[-87.834,-217.276,-68.357],"9.3333":[-64.72,-215.313,-45.112],"9.375":[-51.631,-210.771,-32.96],"9.4167":[-41.275,-205.352,-24.589],"9.4583":[-35.378,-202.579,-20.484],"9.5":[-27.051,-193.187,-11.821],"9.5417":[-23.115,-184.68,-5.865],"9.5833":[-22.748,-173.295,1.915],"9.625":[-25.288,-165.46,8.795],"9.6667":[-37.714,-153.665,29.204],"9.7083":[-45.556,-150.358,38.747],"9.75":[-51.355,-149.984,41.522],"9.7917":[-49.811,-153.512,36.391],"9.8333":[-55.533,-166.154,15.683],"9.875":[-58.573,-174.495,-3.17],"9.9167":[-60.129,-188.459,-32.453],"9.9583":[-66.097,-198.361,-51.359],"10.0":[-72.837,-207.618,-70.182],"10.0417":[-70.128,-210.34,-69.567],"10.0833":[-65.459,-213.863,-66.404],"10.125":[-61.45,-216.15,-61.911],"10.1667":[-52.929,-215.696,-47.638],"10.2083":[-46.661,-212.473,-35.959],"10.25":[-36.168,-200.653,-15.073],"10.2917":[-27.218,-180.368,6.162],"10.3333":[-29.517,-156.708,30.621],"10.375":[-36.795,-144.868,48.194],"10.4167":[-61.747,-124.491,92.815],"10.4583":[-78.369,-128.956,120.295],"10.5":[-78.838,-153.292,134.488],"10.5417":[-79.809,-172.111,148.272],"10.5833":[-75.142,-198.298,160.349],"10.625":[-75.541,-210.071,153.98],"10.6667":[-80.358,-225.317,120.718],"10.7083":[-89.227,-235.998,80.343],"10.75":[-96.986,-228.187,17.81],"10.7917":[-84.194,-220.138,-6.558],"10.8333":[-57.395,-215.389,-9.293],"10.875":[-50.921,-212.005,-12.82],"10.9167":[-58.012,-206.796,-23.34],"10.9583":[-64.675,-205.101,-30.363],"11.0":[-77.651,-209.016,-41.94],"11.0417":[-89.564,-215.589,-53.025],"11.0833":[-110.962,-221.804,-72.853],"11.125":[-119.607,-221.258,-79.76],"11.1667":[-119.429,-217.662,-75.004],"11.2083":[-128.207,-217.565,-80.032],"11.25":[-142.233,-216.883,-88.85],"11.2917":[-142.251,-216.744,-88.326],"11.3333":[-137.134,-217.284,-83.842],"11.375":[-132.371,-218.441,-79.116],"11.4167":[-124.273,-220.488,-70.346],"11.4583":[-115.14,-223.67,-58.734],"11.5":[-86.005,-226.464,-21.362],"11.5417":[-68.228,-221.037,1.957],"11.5833":[-51.425,-205.702,27.688],"11.625":[-45.821,-194.319,38.854],"11.6667":[-41.647,-178.012,50.84],"11.7083":[-41.546,-167.881,58.065],"11.75":[-45.042,-154.836,69.761],"11.7917":[-48.799,-148.876,75.701],"11.8333":[-50.241,-145.131,75.971],"11.875":[-45.876,-145.039,71.194],"11.9167":[-47.508,-144.722,70.108],"11.9583":[-47.956,-143.468,73.602],"12.0":[-49.528,-140.922,74.696],"12.0417":[-47.065,-141.503,74.978],"12.0833":[-46.761,-143.205,74.544],"12.125":[-46.816,-144.04,74.084],"12.1667":[-46.996,-144.826,73.529],"12.2083":[-47.085,-144.86,73.469],"12.25":[-47.218,-144.623,73.53],"12.2917":[-47.289,-144.402,73.634],"12.3333":[-47.323,-144.17,73.843],"12.375":[-47.234,-144.037,74.106],"12.4167":[-47.116,-143.875,74.501],"12.4583":[-47.194,-143.845,74.585],"12.5":[-51.941,-145.73,69.395],"12.5417":[-56.097,-146.944,64.747],"12.5833":[-61.242,-146.713,58.378],"12.625":[-61.723,-142.234,55.402],"12.6667":[-61.076,-135.926,52.001],"12.7083":[-61.652,-135.811,51.407],"12.75":[-62.972,-138.136,51.788],"12.7917":[-63.373,-139.343,51.846],"12.8333":[-63.254,-140.777,52.001],"12.875":[-63.376,-140.835,52.392],"12.9167":[-63.616,-140.487,53.117],"12.9583":[-63.715,-140.313,53.498],"13.0":[-63.62,-140.378,53.671],"13.0417":[-63.499,-140.47,53.682],"13.2083":[-63.265,-143.049,53.167]},"position":{"0.0":[-17.945,-24.378,-12.623],"0.0417":[-16.399,-23.911,-13.588],"0.0833":[-15.048,-23.836,-14.039],"0.125":[-14.619,-23.54,-14.153],"0.1667":[-14.388,-23.831,-14.517],"0.2083":[-14.186,-24.295,-14.457],"0.25":[-13.803,-24.93,-14.256],"0.2917":[-13.603,-24.955,-13.991],"0.3333":[-13.384,-24.83,-13.558],"0.375":[-13.221,-24.695,-13.331],"0.4167":[-13.07,-24.352,-12.994],"0.4583":[-13.033,-23.953,-12.776],"0.5":[-13.442,-23.936,-12.879],"0.5417":[-13.867,-24.136,-13.145],"0.5833":[-14.402,-24.459,-13.609],"0.625":[-14.668,-24.79,-13.857],"0.6667":[-15.069,-25.524,-13.948],"0.7083":[-15.244,-26.022,-13.9],"0.75":[-15.074,-26.918,-13.485],"0.7917":[-14.719,-27.579,-13.084],"0.8333":[-13.464,-28.49,-12.637],"0.875":[-11.944,-28.644,-12.511],"0.9167":[-9.798,-27.094,-13.045],"0.9583":[-8.563,-25.537,-13.572],"1.0":[-9.099,-26.792,-12.984],"1.0417":[-9.275,-28.033,-11.981],"1.0833":[-9.542,-29.738,-9.686],"1.125":[-9.691,-30.448,-8.092],"1.1667":[-9.506,-30.335,-6.742],"1.2083":[-9.33,-29.671,-6.628],"1.25":[-8.951,-28.841,-6.505],"1.2917":[-8.768,-27.121,-9.65],"1.3333":[-8.693,-22.612,-13.7],"1.375":[-8.455,-21.524,-13.927],"1.4167":[-7.545,-23.564,-13.456],"1.4583":[-7.065,-25.021,-13.096],"1.5":[-6.81,-26.153,-12.647],"1.5417":[-6.762,-26.653,-12.377],"1.5833":[-6.761,-27.242,-12.031],"1.625":[-6.857,-27.425,-11.839],"1.6667":[-7.018,-27.517,-11.648],"1.7083":[-7.116,-27.523,-11.563],"1.75":[-7.26,-27.458,-11.503],"1.7917":[-7.353,-27.379,-11.526],"1.8333":[-7.499,-27.192,-11.669],"1.875":[-7.572,-27.041,-11.791],"1.9167":[-7.574,-26.777,-11.956],"1.9583":[-7.501,-26.576,-12.07],"2.0":[-7.357,-26.353,-12.261],"2.0417":[-7.238,-26.228,-12.4],"2.0833":[-7.094,-26.104,-12.566],"2.125":[-7.045,-26.085,-12.627],"2.1667":[-7.016,-26.126,-12.67],"2.2083":[-7.01,-26.162,-12.682],"2.25":[-7.02,-26.225,-12.678],"2.2917":[-7.038,-26.274,-12.66],"2.3333":[-7.069,-26.337,-12.633],"2.375":[-7.094,-26.374,-12.611],"2.4167":[-7.131,-26.419,-12.578],"2.4583":[-7.148,-26.44,-12.565],"2.5":[-7.165,-26.457,-12.556],"2.5417":[-7.173,-26.462,-12.553],"2.5833":[-7.189,-26.466,-12.555],"2.625":[-7.2,-26.465,-12.563],"2.6667":[-7.213,-26.464,-12.559],"2.7083":[-7.192,-26.469,-12.407],"2.75":[-7.06,-26.495,-11.7],"2.7917":[-6.974,-26.517,-11.114],"2.8333":[-6.878,-26.58,-9.674],"2.875":[-6.829,-26.635,-8.466],"2.9167":[-6.652,-26.732,-6.616],"2.9583":[-6.593,-26.772,-5.602],"3.0":[-6.531,-26.796,-4.518],"3.0417":[-6.502,-26.795,-3.98],"3.0833":[-6.466,-26.781,-3.311],"3.125":[-6.442,-26.754,-2.954],"3.1667":[-6.419,-26.701,-2.658],"3.2083":[-6.426,-26.699,-2.601],"3.25":[-6.465,-26.732,-2.69],"3.2917":[-6.496,-26.76,-2.801],"3.3333":[-6.529,-26.782,-2.939],"3.375":[-6.546,-26.781,-3.027],"3.4167":[-6.558,-26.771,-3.146],"3.4583":[-6.55,-26.762,-3.193],"3.5":[-6.515,-26.742,-3.231],"3.5417":[-6.486,-26.729,-3.244],"3.5833":[-6.45,-26.714,-3.256],"3.625":[-6.437,-26.71,-3.26],"3.6667":[-6.427,-26.713,-3.25],"3.7083":[-6.422,-26.72,-3.239],"3.75":[-6.431,-26.99,-3.125],"3.7917":[-6.437,-27.243,-3.036],"3.8333":[-6.463,-27.695,-2.832],"3.875":[-6.5,-28.064,-2.62],"3.9167":[-6.579,-28.666,-2.228],"3.9583":[-6.638,-29.056,-1.943],"4.0":[-6.722,-29.568,-1.536],"4.0417":[-6.764,-29.832,-1.314],"4.0833":[-6.787,-30.078,-1.11],"4.125":[-6.781,-30.166,-1.043],"4.1667":[-6.762,-30.248,-0.992],"4.2083":[-6.753,-30.295,-0.967],"4.25":[-6.735,-30.316,-0.983],"4.2917":[-6.72,-30.307,-1.014],"4.3333":[-6.702,-30.284,-1.057],"4.375":[-6.691,-30.256,-1.09],"4.4167":[-6.677,-30.201,-1.141],"4.4583":[-6.669,-30.17,-1.167],"4.5":[-6.66,-30.136,-1.193],"4.5417":[-6.655,-30.116,-1.205],"4.5833":[-6.652,-30.089,-1.214],"4.625":[-6.654,-30.072,-1.213],"4.6667":[-6.663,-30.046,-1.202],"4.7083":[-6.671,-30.03,-1.191],"4.75":[-6.683,-30.009,-1.172],"4.7917":[-6.689,-29.999,-1.159],"4.8333":[-6.699,-29.986,-1.14],"4.875":[-6.705,-29.979,-1.127],"4.9167":[-6.715,-29.968,-1.105],"4.9583":[-6.721,-29.962,-1.09],"5.0":[-6.73,-29.953,-1.069],"5.0417":[-6.735,-29.948,-1.056],"5.0833":[-6.742,-29.942,-1.039],"5.125":[-6.745,-29.938,-1.03],"5.1667":[-6.748,-29.934,-1.021],"5.2083":[-6.749,-29.931,-1.018],"5.25":[-6.75,-29.927,-1.018],"5.2917":[-6.749,-29.925,-1.02],"5.3333":[-6.748,-29.921,-1.025],"5.375":[-6.747,-29.919,-1.03],"5.4167":[-6.744,-29.916,-1.037],"5.4583":[-6.743,-29.914,-1.042],"5.5":[-6.74,-29.912,-1.048],"5.5417":[-6.739,-29.911,-1.051],"5.5833":[-6.737,-29.91,-1.052],"5.625":[-6.736,-29.91,-1.051],"5.6667":[-6.736,-29.91,-1.044],"5.7083":[-6.736,-29.91,-1.035],"5.75":[-6.738,-29.911,-1.017],"5.7917":[-6.74,-29.912,-0.999],"5.8333":[-6.759,-29.926,-0.845],"5.875":[-6.778,-29.938,-0.697],"5.9167":[-6.82,-29.963,-0.529],"5.9583":[-6.877,-29.995,-0.481],"6.0":[-6.972,-30.046,-0.495],"6.0417":[-6.987,-30.05,-0.559],"6.0833":[-6.93,-30.006,-0.767],"6.125":[-6.887,-29.923,-1.046],"6.1667":[-6.819,-29.783,-1.52],"6.2083":[-6.772,-29.678,-1.867],"6.25":[-6.705,-29.483,-2.453],"6.2917":[-6.667,-29.316,-2.899],"6.3333":[-6.617,-29.018,-3.659],"6.375":[-6.585,-28.799,-4.212],"6.4167":[-6.54,-28.451,-5.078],"6.4583":[-6.511,-28.213,-5.661],"6.5":[-6.469,-27.858,-6.51],"6.5417":[-6.544,-27.602,-7.075],"6.5833":[-6.485,-27.285,-7.777],"6.625":[-6.448,-27.094,-8.15],"6.6667":[-6.389,-26.852,-8.369],"6.7083":[-6.372,-26.74,-8.354],"6.75":[-6.432,-26.705,-8.202],"6.7917":[-6.573,-26.871,-7.861],"6.8333":[-6.915,-27.08,-7.314],"6.875":[-7.128,-27.191,-6.893],"6.9167":[-7.538,-27.238,-6.552],"6.9583":[-7.709,-27.201,-6.609],"7.0":[-7.917,-27.096,-6.884],"7.0417":[-8.003,-27.011,-7.128],"7.0833":[-8.122,-26.861,-7.514],"7.125":[-8.031,-26.772,-7.8],"7.1667":[-7.807,-26.637,-8.249],"7.2083":[-7.637,-26.562,-8.496],"7.25":[-7.38,-26.49,-8.694],"7.2917":[-7.18,-26.464,-8.729],"7.3333":[-6.891,-26.458,-8.704],"7.375":[-6.737,-26.479,-8.665],"7.4167":[-6.534,-26.557,-8.533],"7.4583":[-6.429,-26.622,-8.424],"7.5":[-6.342,-26.71,-8.284],"7.5417":[-6.336,-26.767,-8.199],"7.5833":[-6.372,-26.85,-8.078],"7.625":[-6.403,-26.9,-8.007],"7.6667":[-6.438,-26.959,-7.931],"7.7083":[-6.47,-26.984,-7.905],"7.75":[-6.517,-27.008,-7.878],"7.7917":[-6.55,-27.011,-7.867],"7.8333":[-6.592,-27.006,-7.904],"7.875":[-6.618,-26.999,-7.982],"7.9167":[-6.638,-26.988,-8.062],"7.9583":[-6.653,-26.677,-8.137],"8.0":[-6.792,-25.555,-8.404],"8.0417":[-7.042,-24.721,-8.532],"8.0833":[-7.849,-23.216,-8.98],"8.125":[-8.977,-22.797,-11.342],"8.1667":[-11.017,-21.641,-13.062],"8.2083":[-11.127,-21.198,-13.805],"8.25":[-10.84,-20.997,-14.376],"8.2917":[-10.602,-21.216,-14.256],"8.3333":[-10.82,-21.58,-14.255],"8.375":[-10.944,-21.792,-14.256],"8.4167":[-11.336,-21.728,-14.29],"8.4583":[-11.611,-21.565,-14.27],"8.5":[-11.844,-21.427,-14.299],"8.5417":[-11.923,-21.454,-14.316],"8.5833":[-12.066,-21.774,-13.969],"8.625":[-11.935,-21.997,-13.725],"8.6667":[-12.139,-22.859,-13.695],"8.7083":[-12.143,-22.838,-13.681],"8.75":[-12.058,-22.627,-13.688],"8.7917":[-12.018,-22.57,-13.661],"8.8333":[-11.976,-22.538,-13.643],"8.875":[-11.965,-22.534,-13.643],"8.9167":[-11.968,-22.554,-13.663],"8.9583":[-11.961,-22.524,-13.653],"9.0":[-11.895,-22.23,-13.507],"9.0417":[-11.913,-22.115,-13.427],"9.0833":[-11.939,-22.193,-13.318],"9.125":[-12.003,-22.219,-13.2],"9.1667":[-11.874,-22.242,-12.904],"9.2083":[-11.908,-22.24,-12.811],"9.25":[-12.086,-22.298,-12.832],"9.2917":[-12.185,-22.324,-12.831],"9.3333":[-12.298,-22.308,-12.8],"9.375":[-12.384,-22.278,-12.807],"9.4167":[-12.39,-22.232,-12.775],"9.4583":[-12.29,-22.227,-12.779],"9.5":[-12.183,-22.177,-12.767],"9.5417":[-12.134,-22.143,-12.763],"9.5833":[-11.929,-22.249,-12.884],"9.625":[-11.81,-22.398,-13],"9.6667":[-11.75,-22.889,-13.273],"9.7083":[-11.65,-23.064,-13.329],"9.75":[-11.603,-23.155,-13.242],"9.7917":[-11.899,-23.305,-13.304],"9.8333":[-12.261,-23.533,-13.301],"9.875":[-12.536,-23.592,-13.288],"9.9167":[-12.68,-23.731,-13.242],"9.9583":[-12.641,-23.895,-13.218],"10.0":[-12.459,-24.029,-13.063],"10.0417":[-12.232,-23.927,-12.82],"10.0833":[-11.982,-23.718,-12.432],"10.125":[-11.835,-23.54,-12.106],"10.1667":[-11.836,-23.226,-11.491],"10.2083":[-11.936,-22.997,-11.06],"10.25":[-12.155,-22.637,-10.399],"10.2917":[-12.272,-22.266,-9.751],"10.3333":[-12.203,-21.856,-9.381],"10.375":[-11.982,-21.787,-9.442],"10.4167":[-11.608,-22.239,-9.841],"10.4583":[-11.659,-22.622,-10.02],"10.5":[-12.216,-23.018,-9.986],"10.5417":[-12.491,-23.148,-9.864],"10.5833":[-12.842,-23.762,-10.22],"10.625":[-13.804,-24.432,-10.421],"10.6667":[-14.521,-24.885,-10.614],"10.7083":[-14.097,-25.33,-10.825],"10.75":[-14.103,-23.94,-11.112],"10.7917":[-13.33,-22.81,-11.379],"10.8333":[-13.511,-23.709,-11.417],"10.875":[-13.516,-24.376,-11.779],"10.9167":[-13.048,-25.269,-12.52],"10.9583":[-11.975,-25.866,-12.926],"11.0":[-10.737,-25.905,-13.544],"11.0417":[-10.392,-25.334,-14.097],"11.0833":[-9.947,-24.362,-15.008],"11.125":[-9.699,-23.852,-15.327],"11.1667":[-9.706,-23.381,-15.029],"11.2083":[-9.788,-24.517,-14.894],"11.25":[-9.888,-26.737,-14.752],"11.2917":[-9.993,-27.347,-14.703],"11.3333":[-10.204,-27.733,-14.627],"11.375":[-10.381,-27.646,-14.521],"11.4167":[-10.668,-27.228,-14.299],"11.4583":[-10.991,-26.637,-13.997],"11.5":[-11.885,-24.598,-12.972],"11.5417":[-12.589,-23.327,-12.282],"11.5833":[-13.808,-21.584,-11.3],"11.625":[-14.375,-20.873,-10.755],"11.6667":[-14.885,-20.426,-10.099],"11.7083":[-15.169,-20.332,-9.717],"11.75":[-15.42,-20.598,-9.223],"11.7917":[-15.462,-20.754,-9.033],"11.8333":[-15.239,-21.031,-9.158],"11.875":[-15.138,-21.135,-9.418],"11.9167":[-14.755,-21.06,-9.538],"11.9583":[-14.47,-20.665,-9.861],"12.0":[-14.237,-21.26,-9.923],"12.0417":[-14.577,-21.266,-9.85],"12.0833":[-14.75,-21.273,-9.815],"12.125":[-14.804,-21.306,-9.81],"12.1667":[-14.833,-21.34,-9.811],"12.2083":[-14.816,-21.323,-9.812],"12.25":[-14.763,-21.275,-9.813],"12.2917":[-14.729,-21.239,-9.814],"12.3333":[-14.705,-21.192,-9.817],"12.375":[-14.704,-21.157,-9.817],"12.4167":[-14.726,-21.113,-9.82],"12.4583":[-14.761,-21.111,-9.827],"12.5":[-15.499,-22.085,-10.009],"12.5417":[-16.141,-23.027,-10.193],"12.5833":[-17.156,-24.235,-10.488],"12.625":[-18.026,-24.819,-10.682],"12.6667":[-19.2,-25.409,-10.96],"12.7083":[-19.61,-25.506,-11.047],"12.75":[-19.944,-25.431,-11.102],"12.7917":[-20.06,-25.37,-11.148],"12.8333":[-19.958,-25.222,-11.217],"12.875":[-19.889,-25.168,-11.267],"12.9167":[-19.769,-25.108,-11.341],"12.9583":[-19.695,-25.084,-11.371],"13.0":[-19.601,-25.096,-11.342],"13.0417":[-19.558,-25.122,-11.315],"13.2083":[-19.608,-25.169,-11.281]}},"righthand_1":{"rotation":{"0.0":[0,0,0],"10.25":[0,0,20],"10.7083":[0,0,20],"11.0":[0,0,0],"13.1667":[0,0,0]},"position":{"0.0":[-0.7,3.5,0.25],"0.4167":[-1.45,5.8,-0.04],"0.5833":[-1.76,5.62,-0.16],"0.75":[-2.02,3.15,-0.26],"1.4583":[3.0867,6.75,-0.75],"8.125":[3.0867,6.75,-0.75],"8.4167":[-0.3388,4.4909,-0.5698],"8.7083":[-0.7,3.5,0.25],"9.5833":[-0.7,4.5,0.25],"9.6667":[0.42,5.5,0.25],"9.7083":[1.3,4.5,0.25],"9.8333":[0.3,4.5,1.85],"9.875":[1.3,4.5,2.25],"10.0":[0.3,4,0.25],"10.25":[0.3,5.5,0.25],"10.7083":[0.3,5.5,0.25],"11.0":[-0.7,3.5,0.25],"11.875":[-0.7,3.5,0.25],"11.9583":[-0.7632,3.626,0.0435],"12.0417":[-0.7,3.5,0.25]},"scale":[1,1.5,1]},"righthand_pos":{"rotation":{"10.5":[-0.001,0,0],"10.5417":[0,0,0],"13.1667":[0,0,0]}},"weapon":{"rotation":{"0.0":[-19.293,47.642,46.748],"0.0417":[-47.013,43.176,25.796],"0.0833":[-73.52,26.587,8.482],"0.125":[-80.544,13.601,-2.074],"0.1667":[-53.162,-19.742,-31.82],"0.2083":[-14.826,-20.284,-58.476],"0.25":[42.726,8.242,-63.7],"0.2917":[82.472,9.354,-25.515],"0.3333":[91.814,-18.649,3.647],"0.375":[105.667,-38.708,-15.351],"0.4167":[167.666,-54.941,-74.924],"0.4583":[215.477,-49.465,-121.021],"0.5":[242.13,-29.734,-142.458],"0.5417":[249.676,-19.206,-148.374],"0.5833":[254.435,-0.372,-162.411],"0.625":[251.4,18.901,-180.65],"0.6667":[195.639,40.679,-249.235],"0.7083":[167.102,24.112,-284.057],"0.75":[153.749,-3.55,-305.637],"0.7917":[150.952,-22.074,-314.073],"0.8333":[150.071,-49.559,-336.609],"0.875":[164.647,-64.144,-375.742],"0.9167":[186.965,-57.541,-430.274],"0.9583":[179.943,-55.239,-445.778],"1.0":[36.502,-43.1,-334.834],"1.0417":[33.605,-6.646,-331.568],"1.0833":[43.355,-8.083,-364.754],"1.125":[61.432,-4.927,-386.561],"1.1667":[108.055,15.502,-405.481],"1.2083":[139.522,19.32,-416.35],"1.25":[183.155,48.209,-431.121],"1.2917":[213.559,65.561,-431.399],"1.3333":[262.994,76.63,-422.473],"1.375":[260.263,82.789,-437.739],"1.4167":[250.559,84.821,-458.039],"1.4583":[260.136,84.214,-453.938],"1.5":[250.233,86.179,-467.899],"1.5417":[234.293,85.452,-485.408],"1.5833":[231.943,85.584,-489.411],"1.625":[256.236,86.628,-465.722],"1.6667":[291.37,87.009,-430.537],"1.7083":[302.768,87.309,-418.583],"1.75":[312.887,87.833,-407.318],"1.7917":[309.763,88.088,-409.663],"1.8333":[279.825,88.191,-438.2],"1.875":[256.909,87.919,-460.306],"1.9167":[230.478,87.321,-486.287],"1.9583":[217.69,86.722,-499.289],"2.0":[210.526,85.779,-507.124],"2.0417":[208.567,85.155,-509.724],"2.0833":[209.107,84.623,-510.011],"2.125":[213.134,84.769,-506.303],"2.1667":[224.009,85.322,-495.721],"2.2083":[229.525,85.529,-490.319],"2.25":[229.248,85.591,-490.645],"2.2917":[226.47,85.576,-493.378],"2.3333":[223.056,85.512,-496.656],"2.375":[221.21,85.446,-498.339],"2.4167":[218.314,85.302,-500.966],"2.4583":[216.163,85.173,-502.979],"2.5":[212.459,84.896,-506.52],"2.5417":[210.494,84.724,-508.401],"2.5833":[208.985,84.589,-509.823],"2.625":[208.52,84.56,-510.255],"2.6667":[208.378,84.547,-510.36],"2.7083":[210.699,84.579,-508.043],"2.75":[223.467,84.681,-495.399],"2.7917":[230.157,84.636,-488.834],"2.8333":[228.777,84.673,-490.557],"2.875":[223.556,84.709,-496.096],"2.9167":[215.681,84.9,-504.058],"2.9583":[209.16,84.869,-510.711],"3.0":[199.009,84.724,-520.898],"3.0417":[192.128,84.521,-527.732],"3.0833":[184.025,84.082,-535.716],"3.125":[180.227,83.707,-539.378],"3.1667":[177.357,83.167,-541.964],"3.2083":[178.524,83.005,-540.648],"3.25":[183.62,82.916,-535.329],"3.2917":[187.803,82.879,-531.017],"3.3333":[192.907,82.849,-525.778],"3.375":[196.065,82.894,-522.568],"3.4167":[200.254,83.01,-518.383],"3.4583":[202.025,83.078,-516.685],"3.5":[203.642,83.223,-515.289],"3.5417":[204.287,83.329,-514.814],"3.5833":[205.133,83.461,-514.201],"3.625":[205.517,83.505,-513.925],"3.6667":[205.743,83.543,-513.831],"3.7083":[205.753,83.573,-513.891],"3.75":[206.7,83.387,-512.96],"3.7917":[207.408,83.178,-512.25],"3.8333":[207.568,83.047,-511.99],"3.875":[206.786,83.134,-512.62],"3.9167":[204.667,83.368,-514.432],"3.9583":[203.025,83.555,-515.867],"4.0":[201.009,83.831,-517.647],"4.0417":[200.495,83.985,-518.095],"4.0833":[201.948,84.21,-516.774],"4.125":[204.153,84.35,-514.763],"4.1667":[208.634,84.49,-510.607],"4.2083":[212.012,84.494,-507.401],"4.25":[218.268,84.307,-501.386],"4.2917":[222.205,84.112,-497.59],"4.3333":[226.389,83.863,-493.574],"4.375":[228.191,83.704,-491.852],"4.4167":[229.94,83.528,-490.173],"4.4583":[230.666,83.509,-489.455],"4.5":[231.048,83.69,-489.006],"4.5417":[230.938,83.897,-489.04],"4.5833":[230.419,84.189,-489.424],"4.625":[229.907,84.297,-489.852],"4.6667":[228.539,84.398,-491.057],"4.7083":[227.547,84.441,-491.942],"4.75":[226.082,84.476,-493.267],"4.7917":[225.459,84.492,-493.832],"4.8333":[224.72,84.507,-494.529],"4.875":[224.121,84.509,-495.102],"4.9167":[223.154,84.507,-496.041],"4.9583":[222.589,84.501,-496.596],"5.0":[221.976,84.491,-497.199],"5.0417":[221.8,84.488,-497.376],"5.0833":[221.966,84.488,-497.213],"5.125":[222.445,84.494,-496.74],"5.1667":[223.845,84.509,-495.356],"5.2083":[225.224,84.517,-493.995],"5.25":[227.765,84.51,-491.497],"5.2917":[229.785,84.498,-489.514],"5.3333":[233.114,84.467,-486.245],"5.375":[235.503,84.439,-483.9],"5.4167":[239.335,84.389,-480.135],"5.4583":[241.919,84.354,-477.593],"5.5":[245.995,84.301,-473.579],"5.5417":[248.696,84.271,-470.916],"5.5833":[253.578,84.232,-466.088],"5.625":[258.172,84.195,-461.547],"5.6667":[265.789,84.091,-454.018],"5.7083":[270.555,83.998,-449.298],"5.75":[276.044,83.901,-443.842],"5.7917":[278.003,83.924,-441.864],"5.8333":[276.096,84.375,-443.662],"5.875":[271.949,84.871,-447.71],"5.9167":[262.647,85.589,-456.7],"5.9583":[253.549,86.028,-465.321],"6.0":[234.234,86.37,-483.718],"6.0417":[224.861,86.127,-492.743],"6.0833":[219.624,85.246,-497.853],"6.125":[218.123,84.765,-499.402],"6.1667":[216.671,84.089,-501.012],"6.2083":[216.116,83.669,-501.707],"6.25":[215.689,83.159,-502.364],"6.2917":[215.535,82.93,-502.663],"6.3333":[214.871,82.603,-503.514],"6.375":[214.244,82.364,-504.256],"6.4167":[213.318,82.028,-505.347],"6.4583":[212.894,81.851,-505.88],"6.5":[212.684,81.7,-506.251],"6.5417":[211.668,81.461,-507.7],"6.5833":[213.342,81.756,-506.158],"6.625":[215.377,82.126,-504.243],"6.6667":[216.421,83.088,-503.313],"6.7083":[348.214,66.691,-369.889],"6.75":[353.402,13.429,-361.113],"6.7917":[352.29,-12.687,-358.714],"6.8333":[350.034,-40.39,-354.605],"6.875":[349.233,-50.837,-351.697],"6.9167":[348.398,-60.021,-348.539],"6.9583":[347.39,-63.958,-346.626],"7.0":[346.443,-67.295,-344.674],"7.0417":[345.837,-68.89,-343.584],"7.0833":[343.865,-71.735,-341.445],"7.125":[340.906,-74.187,-338.307],"7.1667":[333.816,-77.654,-331.177],"7.2083":[327.31,-79.615,-324.754],"7.25":[315.627,-81.786,-313.374],"7.2917":[306.813,-82.764,-304.938],"7.3333":[292.724,-83.727,-291.469],"7.375":[282.937,-84.139,-282.018],"7.4167":[269.368,-84.505,-268.954],"7.4583":[261.957,-84.637,-261.815],"7.5":[254.487,-84.752,-254.5],"7.5417":[252.42,-84.874,-252.353],"7.5833":[251.909,-85.12,-251.586],"7.625":[252.061,-85.285,-251.58],"7.6667":[251.682,-85.484,-251.057],"7.7083":[252.006,-85.615,-251.277],"7.75":[252.808,-85.756,-251.965],"7.7917":[253.698,-85.799,-252.79],"7.8333":[255.113,-85.766,-254.107],"7.875":[256.353,-85.588,-255.349],"7.9167":[257.356,-85.438,-256.232],"7.9583":[269.355,-86.292,-267.79],"8.0":[294.87,-86.464,-294.276],"8.0417":[339.294,-86.56,-341.167],"8.0833":[383.967,-82.24,-390.137],"8.125":[382.534,-71.477,-391.477],"8.1667":[390.452,-54.265,-404.197],"8.2083":[385.457,-45.153,-399.876],"8.25":[371.325,-39.247,-381.884],"8.2917":[366.475,-42.809,-371.651],"8.3333":[365.36,-43.992,-366.119],"8.375":[364.91,-44.37,-363.075],"8.4167":[365.329,-44.306,-361.558],"8.4583":[368.018,-45.849,-363.252],"8.5":[368.395,-45.631,-364.081],"8.5417":[365.92,-45.688,-361.487],"8.5833":[371.118,-45.853,-364.432],"8.625":[377.4,-44.741,-370.734],"8.6667":[371.617,-46.571,-366.01],"8.7083":[370.368,-45.185,-365.255],"8.75":[367.631,-43.429,-363.619],"8.7917":[368.416,-43.177,-364.386],"8.8333":[367.897,-42.624,-364.146],"8.875":[367.44,-42.431,-363.948],"8.9167":[366.652,-42.335,-363.594],"8.9583":[366.637,-42.343,-363.746],"9.0":[369.921,-42.632,-366.104],"9.0417":[376.672,-41.759,-374.189],"9.0833":[387.608,-37.356,-387.542],"9.125":[391.592,-28.709,-393.361],"9.1667":[395.275,-7.707,-394.261],"9.2083":[398.873,7.83,-392.748],"9.25":[407.36,34.897,-385.726],"9.2917":[418.989,59.633,-375.528],"9.3333":[477.035,115.415,-332.187],"9.375":[472.705,155.18,-336.131],"9.4167":[448.891,208.941,-328.543],"9.4583":[428.108,240.549,-328.215],"9.5":[437.933,312.13,-340.187],"9.5417":[452.453,360.818,-328.4],"9.5833":[493.318,413.988,-312.303],"9.625":[574.474,427.486,-241.57],"9.6667":[628.222,391.285,-192.478],"9.7083":[636.187,363.987,-172.909],"9.75":[581.138,342.953,-116.222],"9.7917":[569.722,349.889,-119.538],"9.8333":[565.813,383.883,-166.265],"9.875":[549.726,393.239,-221.029],"9.9167":[522.47,369.272,-289.839],"9.9583":[496.303,342.332,-322.33],"10.0":[470.887,312.49,-361.669],"10.0417":[446.611,344.138,-346.372],"10.0833":[456.649,401.487,-335.396],"10.125":[528.977,433.22,-269.75],"10.1667":[618.413,385.577,-186.229],"10.2083":[623.358,351.35,-157.032],"10.25":[586.328,307.28,-119.689],"10.2917":[496.872,309.124,-32.015],"10.3333":[481.827,356.657,39.594],"10.375":[494.141,397.934,51.429],"10.4167":[608.233,386.501,155.416],"10.4583":[616.149,359.158,199.071],"10.5":[569.725,354.817,245.814],"10.5417":[534.68,360.967,260.364],"10.5833":[482.748,369.533,268.339],"10.625":[439.88,358.932,265.509],"10.6667":[375.62,364.46,244.69],"10.7083":[333.799,373.537,192.924],"10.75":[350.091,364.238,139.096],"10.7917":[389.244,362.291,110.389],"10.8333":[405.478,392.628,72.042],"10.875":[370.421,395.468,20.606],"10.9167":[322.184,341.64,-6.169],"10.9583":[263.816,328.332,21.732],"11.0":[208.507,330.079,-0.24],"11.0417":[160.764,323.37,6.334],"11.0833":[122.396,338.581,-30.162],"11.125":[110.56,339.918,-64.526],"11.1667":[110.536,330.633,-93.337],"11.2083":[104.686,323.437,-79.798],"11.25":[108.452,321.666,-82.591],"11.2917":[110.996,323.217,-85.871],"11.3333":[108.787,323.051,-84.511],"11.375":[105.516,322.023,-81.018],"11.4167":[99.718,319.863,-74.106],"11.4583":[91.671,316.207,-63.363],"11.5":[53.387,314.679,-20.267],"11.5417":[30.086,321.987,5.926],"11.5833":[10.563,341.636,31.206],"11.625":[5.784,354.208,41.496],"11.6667":[6.657,369.354,52.154],"11.7083":[10.658,378.029,58.657],"11.75":[18.028,390.997,70.269],"11.7917":[21.595,395.785,76.226],"11.8333":[21.148,393.415,73.754],"11.875":[16.662,392.645,68.881],"11.9167":[18.734,395.131,68.521],"11.9583":[20.071,399.679,73.409],"12.0":[22.764,404.929,76.078],"12.0417":[20.133,404.617,76.107],"12.0833":[19.715,402.807,75.541],"12.125":[19.67,401.706,74.957],"12.1667":[19.706,400.448,74.206],"12.2083":[19.723,400.178,74.043],"12.25":[19.847,400.343,74.089],"12.2917":[19.926,400.564,74.204],"12.3333":[19.966,400.795,74.418],"12.375":[19.874,400.929,74.673],"12.4167":[19.799,401.091,75.055],"12.4583":[19.914,401.121,75.148],"12.5":[15.028,398.709,69.558],"12.5417":[7.372,397.237,62.669],"12.5833":[1.058,396.869,57.488],"12.625":[1.804,400.674,58.985],"12.6667":[8.076,406.736,63.214],"12.7083":[9.882,406.647,64.038],"12.75":[10.901,404.095,64.654],"12.7917":[11.066,402.824,64.711],"12.8333":[10.562,401.433,64.677],"12.875":[10.629,401.363,65],"12.9167":[10.833,401.69,65.567],"12.9583":[10.863,401.869,65.776],"13.0":[10.557,401.857,65.597],"13.0417":[10.291,401.81,65.384],"13.0833":[9.98,401.749,65.167],"13.125":[9.824,401.698,65.104],"13.1667":[9.191,400.149,63.904],"13.2083":[9.191,400.149,63.904]},"position":{"0.0":[-10.218,-1.146,-14.495],"0.0417":[-8.389,-0.323,-14.456],"0.0833":[-7.427,1.355,-14.084],"0.125":[-7.546,2.506,-13.869],"0.1667":[-9.49,2.541,-14.45],"0.2083":[-10.257,1.606,-15.876],"0.25":[-8.544,1.172,-16.746],"0.2917":[-8.502,0.826,-16.908],"0.3333":[-7.952,0.407,-19.646],"0.375":[-6.736,0.751,-19.915],"0.4167":[-5.176,0.962,-18.698],"0.4583":[-4.735,1.244,-17.989],"0.5":[-4.975,1.706,-18.991],"0.5417":[-6.111,2.349,-18.672],"0.5833":[-7.038,3.051,-18.046],"0.625":[-7.792,2.503,-17.439],"0.6667":[-8.644,0.558,-17.371],"0.7083":[-9.253,-0.876,-18.114],"0.75":[-9.199,-2.985,-18.186],"0.7917":[-8.245,-4.303,-18.14],"0.8333":[-5.185,-6.179,-17.574],"0.875":[-1.839,-6.015,-16.641],"0.9167":[0.571,-3.129,-16.568],"0.9583":[1.387,-0.545,-16.966],"1.0":[-1.143,3.252,-17.114],"1.0417":[-1.825,5.942,-17.905],"1.0833":[-1.909,9.377,-18.935],"1.125":[-1.773,10.61,-19.65],"1.1667":[-1.99,12.914,-20.794],"1.2083":[-1.706,13.22,-21.249],"1.25":[-1.799,12.532,-22.556],"1.2917":[-1.76,11.211,-22.823],"1.3333":[-1.833,9.432,-22.381],"1.375":[-1.966,8.143,-21.857],"1.4167":[-1.963,5.141,-20.472],"1.4583":[-1.649,3.272,-20.289],"1.5":[-1.24,1.52,-20.137],"1.5417":[-1.006,0.618,-20.034],"1.5833":[-0.858,-0.346,-19.862],"1.625":[-0.891,-0.56,-19.755],"1.6667":[-0.978,-0.608,-19.289],"1.7083":[-1.148,-0.6,-19.18],"1.75":[-1.484,-0.493,-19.066],"1.7917":[-1.697,-0.36,-19.031],"1.8333":[-2.048,-0.043,-19.038],"1.875":[-2.251,0.188,-19.071],"1.9167":[-2.411,0.502,-19.164],"1.9583":[-2.412,0.695,-19.273],"2.0":[-2.29,0.894,-19.478],"2.0417":[-2.15,0.996,-19.64],"2.0833":[-1.959,1.084,-19.844],"2.125":[-1.88,1.08,-19.929],"2.1667":[-1.728,1.006,-20.013],"2.2083":[-1.654,0.955,-20.046],"2.25":[-1.604,0.889,-20.054],"2.2917":[-1.59,0.844,-20.038],"2.3333":[-1.579,0.787,-20.009],"2.375":[-1.589,0.756,-19.984],"2.4167":[-1.625,0.718,-19.945],"2.4583":[-1.651,0.701,-19.928],"2.5":[-1.702,0.686,-19.915],"2.5417":[-1.733,0.683,-19.909],"2.5833":[-1.764,0.682,-19.907],"2.625":[-1.778,0.684,-19.914],"2.6667":[-1.792,0.685,-19.91],"2.7083":[-1.767,0.645,-19.787],"2.75":[-1.622,0.445,-19.222],"2.7917":[-1.533,0.315,-18.72],"2.8333":[-1.456,0.156,-17.351],"2.875":[-1.442,0.058,-16.172],"2.9167":[-1.273,-0.067,-14.39],"2.9583":[-1.196,-0.13,-13.347],"3.0":[-1.205,-0.164,-12.266],"3.0417":[-1.223,-0.157,-11.722],"3.0833":[-1.225,-0.125,-11.036],"3.125":[-1.231,-0.086,-10.668],"3.1667":[-1.298,0.006,-10.338],"3.2083":[-1.343,0.071,-10.231],"3.25":[-1.397,0.177,-10.208],"3.2917":[-1.414,0.246,-10.241],"3.3333":[-1.44,0.33,-10.289],"3.375":[-1.442,0.379,-10.338],"3.4167":[-1.406,0.433,-10.425],"3.4583":[-1.367,0.445,-10.472],"3.5":[-1.296,0.438,-10.538],"3.5417":[-1.249,0.423,-10.578],"3.5833":[-1.194,0.403,-10.622],"3.625":[-1.174,0.395,-10.636],"3.6667":[-1.163,0.382,-10.635],"3.7083":[-1.153,0.37,-10.629],"3.75":[-1.134,0.122,-10.498],"3.7917":[-1.131,-0.109,-10.39],"3.8333":[-1.121,-0.548,-10.175],"3.875":[-1.146,-0.931,-9.976],"3.9167":[-1.201,-1.567,-9.614],"3.9583":[-1.245,-1.986,-9.353],"4.0":[-1.306,-2.536,-8.98],"4.0417":[-1.333,-2.819,-8.775],"4.0833":[-1.331,-3.081,-8.587],"4.125":[-1.306,-3.174,-8.527],"4.1667":[-1.26,-3.245,-8.473],"4.2083":[-1.236,-3.267,-8.43],"4.25":[-1.198,-3.214,-8.389],"4.2917":[-1.171,-3.148,-8.376],"4.3333":[-1.139,-3.064,-8.37],"4.375":[-1.122,-3.007,-8.381],"4.4167":[-1.101,-2.922,-8.408],"4.4583":[-1.087,-2.877,-8.424],"4.5":[-1.062,-2.833,-8.443],"4.5417":[-1.045,-2.813,-8.456],"4.5833":[-1.03,-2.791,-8.472],"4.625":[-1.031,-2.78,-8.478],"4.6667":[-1.05,-2.771,-8.484],"4.7083":[-1.067,-2.768,-8.485],"4.75":[-1.094,-2.765,-8.483],"4.7917":[-1.106,-2.762,-8.479],"4.8333":[-1.118,-2.756,-8.468],"4.875":[-1.126,-2.751,-8.458],"4.9167":[-1.137,-2.744,-8.442],"4.9583":[-1.144,-2.739,-8.432],"5.0":[-1.153,-2.732,-8.415],"5.0417":[-1.158,-2.728,-8.404],"5.0833":[-1.165,-2.723,-8.39],"5.125":[-1.168,-2.721,-8.384],"5.1667":[-1.173,-2.719,-8.379],"5.2083":[-1.174,-2.719,-8.378],"5.25":[-1.176,-2.718,-8.381],"5.2917":[-1.177,-2.718,-8.386],"5.3333":[-1.176,-2.718,-8.394],"5.375":[-1.176,-2.718,-8.401],"5.4167":[-1.175,-2.719,-8.411],"5.4583":[-1.174,-2.719,-8.418],"5.5":[-1.173,-2.721,-8.427],"5.5417":[-1.172,-2.722,-8.431],"5.5833":[-1.171,-2.725,-8.436],"5.625":[-1.171,-2.727,-8.436],"5.6667":[-1.172,-2.73,-8.432],"5.7083":[-1.173,-2.733,-8.425],"5.75":[-1.175,-2.737,-8.409],"5.7917":[-1.178,-2.741,-8.393],"5.8333":[-1.195,-2.756,-8.24],"5.875":[-1.21,-2.768,-8.092],"5.9167":[-1.25,-2.799,-7.93],"5.9583":[-1.309,-2.845,-7.893],"6.0":[-1.415,-2.928,-7.933],"6.0417":[-1.445,-2.959,-8.018],"6.0833":[-1.424,-2.965,-8.266],"6.125":[-1.428,-2.891,-8.55],"6.1667":[-1.453,-2.746,-9.015],"6.2083":[-1.472,-2.632,-9.351],"6.25":[-1.494,-2.425,-9.921],"6.2917":[-1.499,-2.255,-10.361],"6.3333":[-1.495,-1.959,-11.119],"6.375":[-1.488,-1.743,-11.673],"6.4167":[-1.474,-1.401,-12.541],"6.4583":[-1.463,-1.167,-13.126],"6.5":[-1.559,-0.819,-13.976],"6.5417":[-1.727,-0.576,-14.539],"6.5833":[-1.78,-0.264,-15.242],"6.625":[-1.735,-0.073,-15.617],"6.6667":[-1.67,0.168,-15.835],"6.7083":[-1.638,0.281,-15.82],"6.75":[-1.768,0.319,-15.663],"6.7917":[-1.974,0.157,-15.318],"6.8333":[-2.382,-0.012,-14.73],"6.875":[-2.597,-0.052,-14.25],"6.9167":[-3.001,-0.028,-13.834],"6.9583":[-3.186,0.019,-13.878],"7.0":[-3.417,0.119,-14.153],"7.0417":[-3.583,0.193,-14.404],"7.0833":[-3.693,0.32,-14.799],"7.125":[-3.6,0.394,-15.098],"7.1667":[-3.374,0.504,-15.572],"7.2083":[-3.231,0.562,-15.836],"7.25":[-2.901,0.612,-16.062],"7.2917":[-2.714,0.625,-16.114],"7.3333":[-2.336,0.612,-16.117],"7.375":[-2.156,0.579,-16.093],"7.4167":[-1.899,0.482,-15.986],"7.4583":[-1.788,0.405,-15.89],"7.5":[-1.67,0.304,-15.764],"7.5417":[-1.62,0.243,-15.685],"7.5833":[-1.618,0.154,-15.566],"7.625":[-1.648,0.101,-15.496],"7.6667":[-1.686,0.04,-15.42],"7.7083":[-1.704,0.016,-15.391],"7.75":[-1.768,-0.001,-15.356],"7.7917":[-1.79,0.007,-15.335],"7.8333":[-1.819,0.034,-15.353],"7.875":[-1.841,0.063,-15.413],"7.9167":[-1.86,0.094,-15.477],"7.9583":{"pre":[-1.812,0.415,-15.603],"post":[-1.812,0.415,-15.603],"lerp_mode":"catmullrom"},"8.0":{"post":[-1.906,1.704,-15.9],"lerp_mode":"catmullrom"},"8.0417":{"post":[-2.238,2.894,-16.28],"lerp_mode":"catmullrom"},"8.0833":{"post":[-2.868,5.727,-16.067],"lerp_mode":"catmullrom"},"8.125":{"post":[-3.337,7.483,-15.411],"lerp_mode":"catmullrom"},"8.1667":{"post":[-3.194,6.525,-14.572],"lerp_mode":"catmullrom"},"8.2083":{"post":[-2.971,5.317,-14.521],"lerp_mode":"catmullrom"},"8.25":{"post":[-2.823,3.713,-14.843],"lerp_mode":"catmullrom"},"8.2917":{"post":[-2.626,2.861,-14.966],"lerp_mode":"catmullrom"},"8.3333":[-2.757,2.035,-14.885],"8.375":[-2.787,1.753,-14.854],"8.4167":[-3.09,1.722,-14.949],"8.4583":[-3.326,1.852,-14.916],"8.5":[-3.532,1.985,-14.861],"8.5417":[-3.602,1.962,-14.822],"8.5833":[-3.704,1.573,-14.59],"8.625":[-3.656,1.367,-14.556],"8.6667":[-3.82,0.535,-14.302],"8.7083":[-3.846,0.57,-14.317],"8.75":[-3.793,0.811,-14.325],"8.7917":[-3.764,0.869,-14.332],"8.8333":[-3.733,0.909,-14.323],"8.875":[-3.729,0.92,-14.319],"8.9167":[-3.742,0.915,-14.318],"8.9583":[-3.744,0.954,-14.306],"9.0":[-3.701,1.253,-14.219],"9.0417":[-3.876,1.455,-14.286],"9.0833":[-4.208,1.489,-14.461],"9.125":[-4.577,1.535,-14.573],"9.1667":[-4.95,1.961,-14.71],"9.2083":[-5.225,2.496,-14.785],"9.25":[-5.602,3.595,-14.845],"9.2917":[-5.671,3.955,-14.756],"9.3333":[-5.772,4.718,-14.283],"9.375":[-4.843,4.733,-14.451],"9.4167":[-4.755,4.964,-14.232],"9.4583":[-4.731,4.911,-14.052],"9.5":[-5.359,5.128,-14.98],"9.5417":[-5.513,5.143,-14.963],"9.5833":[-5.664,5.084,-15.202],"9.625":[-6.311,4.902,-15.487],"9.6667":[-6.957,4.414,-16.113],"9.7083":[-6.319,3.985,-16.743],"9.75":[-6.234,2.786,-17.521],"9.7917":[-6.39,1.965,-17.919],"9.8333":[-6.509,0.667,-18.776],"9.875":[-6.341,-0.595,-18.807],"9.9167":[-6.548,-0.771,-18.231],"9.9583":[-6.325,-0.789,-18.204],"10.0":[-5.677,0.348,-18.02],"10.0417":[-5.652,0.618,-17.752],"10.0833":[-5.987,1.17,-17.258],"10.125":[-6.386,2.279,-16.458],"10.1667":[-6.696,3.626,-14.291],"10.2083":[-6.119,4.284,-13.345],"10.25":[-4.745,4.674,-12.787],"10.2917":[-4.368,4.698,-12.882],"10.3333":[-4.44,4.986,-13.286],"10.375":[-4.693,4.936,-13.391],"10.4167":[-3.877,4.402,-12.893],"10.4583":[-3.172,3.154,-13.609],"10.5":[-5.395,-0.133,-15.705],"10.5417":[-6.731,-1.399,-15.438],"10.5833":[-8.444,-3.425,-15.009],"10.625":[-10.379,-4.795,-15.548],"10.6667":[-14.078,-8.797,-14.9],"10.7083":[-9.568,-11.998,-14.664],"10.75":[-2.823,-8.706,-14.792],"10.7917":[-1.214,-2.903,-16.281],"10.8333":[-1.584,5.049,-18.493],"10.875":[-1.599,9.88,-19.381],"10.9167":[-1.585,13.333,-19.597],"10.9583":[-1.695,13.652,-19.283],"11.0":[-2.051,13.63,-18.556],"11.0417":[-2.174,12.734,-18.271],"11.0833":[-2.154,9.928,-17.742],"11.125":[-2.063,5.451,-17.031],"11.1667":[-1.877,-0.004,-16.602],"11.2083":[-1.769,-1.192,-16.305],"11.25":[-1.641,-3.439,-15.82],"11.2917":[-1.725,-4.073,-15.777],"11.3333":[-1.961,-4.498,-15.828],"11.375":[-2.146,-4.444,-15.796],"11.4167":[-2.425,-4.084,-15.654],"11.4583":[-2.662,-3.577,-15.332],"11.5":[-3.268,-1.855,-14.216],"11.5417":[-3.833,-0.84,-13.552],"11.5833":[-4.957,0.519,-12.732],"11.625":[-5.54,1.052,-12.333],"11.6667":[-6.14,1.366,-11.891],"11.7083":[-6.523,1.391,-11.679],"11.75":[-6.977,1.034,-11.459],"11.7917":[-7.175,0.896,-11.422],"11.8333":[-7.046,0.78,-11.589],"11.875":[-6.838,0.81,-11.698],"11.9167":[-6.544,0.96,-11.875],"12.0":[-6.078,0.761,-12.308],"12.0417":[-6.306,0.681,-12.158],"12.0833":[-6.456,0.621,-12.121],"12.125":[-6.51,0.575,-12.121],"12.1667":[-6.546,0.534,-12.13],"12.2083":[-6.532,0.554,-12.134],"12.25":[-6.487,0.611,-12.139],"12.2917":[-6.456,0.652,-12.142],"12.3333":[-6.434,0.7,-12.145],"12.375":[-6.426,0.729,-12.142],"12.4167":[-6.44,0.761,-12.141],"12.4583":[-6.476,0.762,-12.15],"12.5":[-7.474,-0.039,-12.498],"12.5417":[-8.368,-0.86,-12.818],"12.5833":[-9.763,-1.901,-13.26],"12.625":[-10.848,-2.241,-13.429],"12.6667":[-12.267,-2.523,-13.609],"12.7083":[-12.728,-2.612,-13.708],"12.75":[-13.046,-2.643,-13.828],"12.7917":[-13.144,-2.633,-13.901],"12.8333":[-12.989,-2.541,-13.985],"12.875":[-12.913,-2.497,-14.039],"12.9167":[-12.794,-2.438,-14.115],"12.9583":[-12.719,-2.415,-14.144],"13.0":[-12.613,-2.432,-14.114],"13.0417":[-12.561,-2.461,-14.085],"13.0833":[-12.527,-2.506,-14.082],"13.125":[-12.516,-2.54,-14.086],"13.1667":[-12.54,-2.595,-14.074],"13.2083":[-12.533,-2.578,-14.033]}},"blade2":{"rotation":{"0.0":[0,0,0],"3.0833":[0,0,0],"3.125":[0,0.001,0],"3.1667":[0,0,0],"3.2083":[0,0,0],"3.25":[0,0,0],"13.1667":[0,0,0]},"position":{"0.0":[0,0,0],"8.5833":[0,0,0],"8.625":[0,-6.4827,0],"11.875":[0,-6.4827,0],"11.9167":[0,0,0],"13.1667":[0,0,0]}},"open":{"rotation":{"0.0":[0,0,0],"3.0833":[0,0,0],"3.125":[0,0.001,0],"3.1667":[0,0,0],"13.1667":[0,0,0]},"position":{"0.0":[0,0,0],"6.75":[0,0.004,0],"6.7917":[0,0.002,0],"6.8333":[0,0.002,0],"6.9167":[0,-0.005,0],"6.9583":[0,-0.007,0],"7.0":[0,-0.009,0],"7.0417":[0,-0.011,0],"7.0833":[0,-0.014,0],"7.125":[0,-0.014,0],"7.1667":[0,-0.016,0],"7.2083":[0,-0.019,0],"7.25":[0,-0.022,0],"8.5":[0,-0.131,0],"8.5417":[0,-0.292,0],"8.5833":[0,-0.585,0],"8.625":[0,-0.928,0],"11.5417":[0,-0.928,0],"11.5833":[0,-0.928,0],"11.7917":[0,-0.906,0],"11.8333":[0,-0.722,0],"11.875":[0,-0.507,0],"11.9167":[0,0.006,0],"13.1667":[0,0,0]}},"root":{"position":{"1.0417":[0,0,0],"1.5417":[-3.3733,0,0],"8.0833":[-3.3733,0,0],"8.2917":[0,0,0]}},"camera":{"rotation":{"0.0":[0.095,-0.003,-0.016],"0.0417":[0.325,-0.01,-0.06],"0.0833":[0.663,-0.024,-0.149],"0.125":[0.759,-0.033,-0.206],"0.1667":[0.727,-0.042,-0.263],"0.2083":[0.657,-0.042,-0.261],"0.25":[0.558,-0.032,-0.191],"0.2917":[0.517,-0.021,-0.122],"0.3333":[0.53,0.002,-0.003],"0.375":[0.592,0.015,0.061],"0.4167":[0.721,0.034,0.106],"0.4583":[0.802,0.041,0.106],"0.5":[0.891,0.044,0.076],"0.5417":[0.898,0.04,0.025],"0.5833":[0.893,0.03,-0.089],"0.625":[0.885,0.019,-0.171],"0.6667":[0.855,0.003,-0.279],"0.7083":[0.82,-0.01,-0.323],"0.75":[0.777,-0.019,-0.348],"0.7917":[0.722,-0.03,-0.361],"0.8333":[0.576,-0.042,-0.37],"0.875":[0.46,-0.043,-0.368],"0.9167":[-0.108,-0.045,-0.353],"0.9583":[-0.669,-0.045,-0.335],"1.0":[-1.63,-0.046,-0.296],"1.0417":[-2.27,-0.046,-0.265],"1.0833":[-2.838,-0.046,-0.231],"1.125":[-3.385,-0.046,-0.177],"1.1667":[-3.562,-0.046,-0.14],"1.2083":[-3.66,-0.044,-0.086],"1.25":[-3.594,-0.042,-0.052],"1.2917":[-3.261,-0.038,-0.007],"1.3333":[-2.855,-0.034,0.023],"1.375":[-2.024,-0.025,0.07],"1.4167":[-1.461,-0.019,0.095],"1.4583":[-0.581,-0.002,0.128],"1.5":[0.022,0.014,0.146],"1.5417":[0.751,0.039,0.163],"1.5833":[0.96,0.055,0.162],"1.625":[1.122,0.075,0.135],"1.6667":[1.168,0.081,0.11],"1.7083":[1.168,0.077,0.068],"1.75":[1.146,0.065,0.032],"1.7917":[1.078,0.038,-0.018],"1.8333":[1.018,0.019,-0.05],"1.875":[0.913,-0.011,-0.077],"1.9167":[0.837,-0.028,-0.077],"1.9583":[0.706,-0.043,-0.069],"2.0":[0.671,-0.046,-0.065],"2.0417":[0.519,-0.036,-0.039],"2.0833":[0.45,-0.028,-0.024],"2.125":[0.415,-0.013,0.002],"2.1667":[0.403,-0.001,0.017],"2.2083":[0.403,0.014,0.036],"2.25":[0.399,0.022,0.042],"2.2917":[0.409,0.024,0.048],"2.3333":[0.409,0.024,0.045],"2.375":[0.441,0.022,0.037],"2.4167":[0.451,0.017,0.032],"2.4583":[0.483,0.011,0.024],"2.5":[0.506,0.007,0.018],"2.5417":[0.535,0.002,0.01],"2.5833":[0.556,0.001,0.006],"2.625":[0.571,0.001,0.005],"2.6667":[0.578,0.001,0.005],"2.7083":[0.629,0.001,0.003],"2.75":[0.673,-0.001,0.001],"2.7917":[0.726,0,-0.001],"2.8333":[0.815,0,-0.004],"2.875":[0.914,0,-0.006],"2.9167":[0.976,0,-0.008],"2.9583":[1.057,0,-0.009],"3.0":[1.173,0,-0.013],"3.0417":[1.307,0,-0.016],"3.0833":[1.389,0,-0.019],"3.125":[1.531,0,-0.023],"3.1667":[1.625,0,-0.028],"3.2083":[1.779,0,-0.035],"3.25":[1.873,0,-0.045],"3.2917":[1.956,0,-0.059],"3.3333":[2.055,0,-0.078],"3.375":[2.085,0,-0.088],"3.4167":[2.092,0,-0.085],"3.4583":[2.085,0,-0.081],"3.5":[2.07,0,-0.069],"3.5417":[2.047,0,-0.06],"3.5833":[1.997,0,-0.042],"3.625":[1.951,0,-0.031],"3.6667":[1.859,0,-0.017],"3.7083":[1.776,0,-0.01],"3.75":[1.545,0,-0.003],"3.7917":[1.24,0,0.001],"3.8333":[0.672,0,0.005],"3.875":[0.255,0,0.007],"3.9167":[-0.382,0,0.01],"3.9583":[-0.811,0,0.011],"4.0":[-1.413,0,0.014],"4.0417":[-1.772,0,0.015],"4.0833":[-2.236,0,0.019],"4.125":[-2.463,0,0.021],"4.1667":[-2.65,0,0.027],"4.2083":[-2.712,0,0.032],"4.25":[-2.806,0,0.043],"4.2917":[-2.858,0,0.05],"4.3333":[-2.93,0,0.061],"4.375":[-2.98,0,0.068],"4.4167":[-3.052,0,0.075],"4.4583":[-3.092,0,0.078],"4.5":[-3.153,0,0.075],"4.5417":[-3.194,0,0.07],"4.5833":[-3.245,0,0.058],"4.625":[-3.276,0,0.049],"4.6667":[-3.305,-0.001,0.034],"4.7083":[-3.326,0.001,0.023],"4.75":[-3.337,0.001,0.013],"4.7917":[-3.358,0,0.006],"4.8333":[-3.379,0,0.002],"4.875":[-3.389,0,0.002],"4.9167":[-3.399,-0.001,0.002],"4.9583":[-3.412,-0.001,0.002],"5.0":[-3.425,-0.001,0.004],"5.0833":[-3.425,-0.001,0.004],"5.125":[-3.438,-0.001,0.004],"5.1667":[-3.438,-0.001,0.002],"5.2083":[-3.438,0.001,0],"5.25":[-3.438,0.001,-0.003],"5.2917":[-3.438,0.001,-0.003],"5.3333":[-3.438,0.027,-0.007],"5.375":[-3.438,0.04,-0.007],"5.4167":[-3.438,0.053,-0.008],"5.4583":[-3.434,0.072,-0.008],"5.5":[-3.428,0.081,-0.01],"5.5417":[-3.422,0.11,-0.012],"5.5833":[-3.416,0.119,-0.014],"5.625":[-3.41,0.148,-0.018],"5.6667":[-3.404,0.157,-0.022],"5.7083":[-3.395,0.179,-0.031],"5.75":[-3.386,0.185,-0.031],"5.7917":[-3.368,0.197,-0.041],"5.8333":[-3.35,0.202,-0.051],"5.875":[-3.332,0.19,-0.07],"5.9167":[-3.323,0.171,-0.098],"5.9583":[-3.305,0.127,-0.154],"6.0":[-3.28,0.094,-0.194],"6.0417":[-3.216,0.043,-0.246],"6.0833":[-3.146,0.017,-0.27],"6.125":[-2.999,-0.005,-0.278],"6.1667":[-2.865,-0.015,-0.272],"6.2083":[-2.615,-0.027,-0.256],"6.25":[-2.426,-0.033,-0.24],"6.2917":[-2.125,-0.04,-0.21],"6.3333":[-1.914,-0.042,-0.187],"6.375":[-1.602,-0.044,-0.151],"6.4167":[-1.494,-0.044,-0.14],"6.4583":[-1.103,-0.04,-0.093],"6.5":[-0.935,-0.037,-0.071],"6.5417":[-0.722,-0.028,-0.044],"6.5833":[-0.606,-0.022,-0.029],"6.625":[-0.503,-0.009,-0.016],"6.6667":[-0.478,-0.001,-0.013],"6.7083":[-0.529,0.028,-0.026],"6.75":[-0.581,0.057,-0.045],"6.7917":[-0.676,0.097,-0.082],"6.8333":[-0.712,0.111,-0.109],"6.875":[-0.705,0.108,-0.142],"6.9167":[-0.683,0.096,-0.169],"6.9583":[-0.654,0.077,-0.202],"7.0":[-0.588,0.047,-0.242],"7.0417":[-0.511,0.008,-0.278],"7.0833":[-0.45,-0.015,-0.287],"7.125":[-0.368,-0.043,-0.285],"7.1667":[-0.314,-0.055,-0.273],"7.2083":[-0.266,-0.059,-0.25],"7.25":[-0.192,-0.051,-0.205],"7.2917":[-0.151,-0.04,-0.173],"7.3333":[-0.103,-0.016,-0.124],"7.375":[-0.081,0.001,-0.083],"7.4167":[-0.052,0.025,-0.034],"7.4583":[-0.034,0.04,0.015],"7.5":[-0.03,0.043,0.048],"7.5417":[-0.034,0.043,0.089],"7.5833":[-0.036,0.038,0.116],"7.625":[-0.036,0.038,0.122],"7.6667":[-0.036,0.029,0.145],"7.75":[-0.036,0.02,0.14],"7.7917":[-0.046,0.02,0.14],"7.8333":[-0.056,0.01,0.134],"7.875":[-0.067,0.01,0.124],"7.9167":[-0.086,0.005,0.102],"7.9583":[-0.098,0.003,0.083],"8.0":[-0.128,0.001,0.046],"8.0417":[-0.152,-0.001,0.016],"8.0833":[-0.575,0.127,-0.219],"8.125":[-0.989,0.274,-0.458],"8.1667":[-1.385,0.4,-0.66],"8.2083":[-1.365,0.4,-0.658],"8.25":[-1.088,0.4,-0.651],"8.2917":[-0.852,0.399,-0.639],"8.3333":[-0.644,0.395,-0.608],"8.375":[-0.554,0.38,-0.58],"8.4167":[-0.501,0.353,-0.55],"8.4583":[-0.479,0.296,-0.503],"8.5":[-0.516,0.203,-0.461],"8.5417":[-0.562,0.124,-0.439],"8.5833":[-0.607,0.002,-0.419],"8.625":[-0.662,-0.278,-0.452],"8.6667":[-0.967,-0.888,-0.597],"8.7083":[-1.588,1.204,-0.527],"8.75":[-1.675,-0.446,-0.225],"8.7917":[-1.447,-0.129,-0.187],"8.8333":[-1.03,0.276,-0.468],"8.875":[-0.875,0.161,-0.427],"8.9167":[-0.715,-0.139,-0.326],"8.9583":[-0.624,-0.175,-0.321],"9.0":[-0.517,-0.167,-0.423],"9.0417":[-0.451,-0.163,-0.508],"9.0833":[-0.402,-0.162,-0.559],"9.125":[-0.319,-0.163,-0.616],"9.1667":[-0.262,-0.164,-0.644],"9.2083":[-0.193,-0.164,-0.675],"9.25":[-0.112,-0.166,-0.697],"9.2917":[-0.065,-0.167,-0.705],"9.3333":[-0.007,-0.168,-0.708],"9.375":[0.028,-0.169,-0.7],"9.4167":[0.063,-0.17,-0.675],"9.4583":[0.116,-0.172,-0.611],"9.5":[0.136,-0.174,-0.56],"9.5417":[0.157,-0.175,-0.478],"9.5833":[0.156,-0.176,-0.427],"9.625":[0.116,-0.177,-0.376],"9.6667":[-0.027,-0.178,-0.315],"9.7083":[-0.108,-0.178,-0.304],"9.75":[-0.203,-0.173,-0.312],"9.7917":[-0.315,-0.138,-0.334],"9.8333":[-0.362,-0.104,-0.364],"9.875":[-0.384,-0.044,-0.454],"9.9167":[-0.38,-0.001,-0.544],"9.9583":[-0.359,0.055,-0.71],"10.0":[-0.337,0.09,-0.821],"10.0417":[-0.279,0.125,-0.957],"10.0833":[-0.24,0.13,-1.008],"10.125":[-0.124,0.116,-1.037],"10.1667":[-0.018,0.095,-1.033],"10.2083":[0.137,0.047,-1],"10.25":[0.224,0.013,-0.956],"10.2917":[0.296,-0.045,-0.863],"10.3333":[0.308,-0.078,-0.757],"10.375":[0.285,-0.122,-0.507],"10.4167":[0.234,-0.138,-0.337],"10.4583":[0.089,-0.144,-0.174],"10.5":[-0.059,-0.14,-0.143],"10.5417":[-0.341,-0.126,-0.207],"10.5833":[-0.563,-0.109,-0.32],"10.625":[-0.916,-0.072,-0.6],"10.6667":[-1.158,-0.041,-0.818],"10.7083":[-1.493,0.011,-1.082],"10.75":[-1.696,0.046,-1.179],"10.7917":[-1.918,0.108,-1.235],"10.8333":[-1.983,0.132,-1.236],"10.875":[-2.298,0.266,-1.162],"10.9167":[-2.501,0.335,-1.082],"10.9583":[-2.778,0.403,-0.926],"11.0":[-2.917,0.407,-0.811],"11.0417":[-3.027,0.401,-0.638],"11.0833":[-2.996,0.388,-0.535],"11.125":[-2.727,0.354,-0.416],"11.1667":[-2.381,0.316,-0.372],"11.2083":[-1.521,0.139,-0.354],"11.25":[-0.691,0,-0.347],"11.2917":[0.153,0,-0.343],"11.3333":[1.084,0,-0.338],"11.375":[1.418,0,-0.336],"11.4167":[1.574,0,-0.334],"11.4583":[1.411,0,-0.333],"11.5":[1.219,0,-0.332],"11.5417":[0.885,0,-0.329],"11.5833":[0.693,0,-0.326],"11.625":[0.529,0,-0.325],"11.6667":[0.309,0,-0.323],"11.7083":[0.17,-0.001,-0.322],"11.75":[-0.018,0,-0.318],"11.7917":[-0.141,0,-0.313],"11.8333":[-0.32,0.052,-0.296],"11.875":[-0.496,0.51,-0.247],"11.9167":[-0.619,0.795,-0.22],"11.9583":[-0.732,-0.225,-0.403],"12.0":[-0.823,1.861,0.224],"12.0417":[-0.854,-1.456,-0.162],"12.0833":[-0.801,-0.55,-0.546],"12.125":[-0.637,0.222,-0.526],"12.1667":[-0.289,0.297,-0.447],"12.2083":[-0.065,0.175,-0.375],"12.25":[0.169,0.01,-0.28],"12.2917":[0.187,-0.005,-0.243],"12.3333":[0.146,-0.002,-0.204],"12.375":[0.111,-0.003,-0.188],"12.4167":[0.046,-0.002,-0.171],"12.4583":[0.014,-0.001,-0.166],"12.5":[-0.026,0,-0.166],"12.5417":[-0.05,0,-0.168],"12.5833":[-0.09,0,-0.171],"12.625":[-0.114,0,-0.172],"12.6667":[-0.145,0,-0.147],"12.7083":[-0.164,0,-0.089],"12.75":[-0.184,0,0.012],"12.7917":[-0.19,0,0.063],"12.8333":[-0.184,-0.021,0.063],"12.875":[-0.112,-0.178,0.049],"12.9167":[-0.033,-0.15,0.027],"12.9583":[0.018,-0.048,0.007],"13.0":[0.041,-0.002,-0.001],"13.0417":[0.033,-0.002,-0.001],"13.0833":[0.018,-0.002,-0.001],"13.125":[0.011,-0.002,-0.001],"13.1667":[0.003,-0.002,-0.001],"13.2083":[-0.004,-0.002,-0.001]}}},"sound_effects":{"0.0":{"effect":"melee.polaris.inspect"}}},"run":{"loop":true,"animation_length":0.7333,"bones":{"melee_and_right":{"rotation":{"0.0":[0,-30,-77.5],"0.0667":[0,-30,-77.5],"0.1333":{"pre":[0,-30,-48.75],"post":[0,-30,-48.75],"lerp_mode":"catmullrom"},"0.2":{"post":[0,-30,-33.5],"lerp_mode":"catmullrom"},"0.3":{"post":[-9.75,-30,-26.5312],"lerp_mode":"catmullrom"},"0.4":{"post":[-21.25,-30,-28.25],"lerp_mode":"catmullrom"},"0.4667":[0,-30,-52.98],"0.5333":[0,-30,-77.5]},"position":{"0.0":[0,-28.0806,0],"0.0667":[1.0781,-28.3769,0],"0.1333":{"pre":[-0.42,-16.9894,0],"post":[-0.42,-16.9894,0],"lerp_mode":"catmullrom"},"0.2":{"post":[-1.97,-9.5669,0],"lerp_mode":"catmullrom"},"0.3":{"post":[-2.8919,-4.8594,0],"lerp_mode":"catmullrom"},"0.4":{"post":[-1.97,-6.0475,0],"lerp_mode":"catmullrom"},"0.4667":[-0.98,-11.3919,0],"0.5333":[0,-28.0806,0]}},"root":{"rotation":{"0.0":[0,0,0],"0.0667":[0,0,0],"0.1333":{"pre":[0,0,0],"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.3333":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.4667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.5333":[0,0,0],"0.6":[0,0,0]},"position":{"0.0":[0,0,0],"0.0667":[0,-0.3125,-0.8594],"0.1333":{"pre":[0,-1.0781,-0.7344],"post":[0,-1.0781,-0.7344],"lerp_mode":"catmullrom"},"0.2":{"post":[0,-0.7656,-0.3594],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0.1094,0],"lerp_mode":"catmullrom"},"0.3333":{"post":[0,0.25,0.3594],"lerp_mode":"catmullrom"},"0.4":{"post":[0,-0.625,0.7656],"lerp_mode":"catmullrom"},"0.4667":{"post":[0,-0.4531,0.9062],"lerp_mode":"catmullrom"},"0.5333":[0,0,0.7031],"0.6":[0,0,0]}},"lefthand":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,-9],"lerp_mode":"catmullrom"},"0.2333":{"post":[0,0,-1.39],"lerp_mode":"catmullrom"},"0.7333":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,2.25,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,2,0],"lerp_mode":"catmullrom"},"0.3667":{"post":[1.75,-10,0],"lerp_mode":"catmullrom"},"0.5":{"post":[3.9125,-12.58,0],"lerp_mode":"catmullrom"},"0.5667":{"post":[0,-6.4425,0],"lerp_mode":"catmullrom"},"0.7333":{"post":[0,2.25,0],"lerp_mode":"catmullrom"}}},"knife_and_right":{"rotation":{"0.1667":{"pre":[8,-15,4.5],"post":[8,-15,4.5],"lerp_mode":"catmullrom"},"0.4333":{"post":[5.0792,-10.4008,-15.435],"lerp_mode":"catmullrom"},"0.5667":{"post":[6.75,-13.0625,7.75],"lerp_mode":"catmullrom"},"0.6333":[8,-15,-16.98],"0.7":[8,-15,-22.5]},"position":{"0.1667":{"pre":[-2.6825,-12.6294,2],"post":[-2.6825,-12.6294,2],"lerp_mode":"catmullrom"},"0.4333":{"post":[-9.4466,4.3906,1],"lerp_mode":"catmullrom"},"0.5667":{"post":[-0.72,-3.0475,2],"lerp_mode":"catmullrom"},"0.6333":[-11.5425,-7.3919,2],"0.7":[-13.375,-9.0806,2]}}}},"run_start":{"loop":"hold_on_last_frame","animation_length":0.1667,"bones":{"lefthand_1":{"rotation":{"0.0":[0,0,0],"0.0833":{"pre":[0,0,0],"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":[0,0,0],"0.0833":{"pre":[0,2.25,0],"post":[0,2.25,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,2.25,0],"lerp_mode":"catmullrom"}}},"knife_and_right":{"rotation":[0,0,0],"position":{"0.0":[0,0,0],"0.0833":{"pre":[2.4388,-4.1617,9.1686],"post":[2.4388,-4.1617,9.1686],"lerp_mode":"catmullrom"}}}}},"run_end":{"animation_length":0.6167,"bones":{"lefthand":{"rotation":{"0.0833":{"pre":[9,0,0],"post":[9,0,0],"lerp_mode":"catmullrom"},"0.2167":{"post":[2.125,4.3125,-1.4375],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,-1.3125,0.6875],"lerp_mode":"catmullrom"},"0.4333":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,-0.125,0.125],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,-0.0625,0],"lerp_mode":"catmullrom"},"0.2333":{"post":[0,0,-0.0625],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,0,0.0625],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"lefthand_1":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.25":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,2.25,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.25":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"knife_and_right":{"rotation":{"0.0833":{"pre":[9,0,0],"post":[9,0,0],"lerp_mode":"catmullrom"},"0.2167":{"post":[0,4.3125,-1.4375],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,-1.3125,0.6875],"lerp_mode":"catmullrom"},"0.4333":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[2.4388,-4.1617,9.1686],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,-0.5625,1.8125],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,-1],"lerp_mode":"catmullrom"},"0.2333":{"post":[0,0,-1.3125],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,0,0.0625],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"}}}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/polaris.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/polaris.geo.json new file mode 100644 index 0000000..4cbef50 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/polaris.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.polaris","texture_width":64,"texture_height":64,"visible_bounds_width":24,"visible_bounds_height":9,"visible_bounds_offset":[0,0.5,0]},"bones":[{"name":"root","pivot":[0,9.6875,4.3375]},{"name":"bone5","parent":"root","pivot":[0,9.6875,4.3375]},{"name":"fn_lefthand","parent":"bone5","pivot":[-6,19,0]},{"name":"lefthand","parent":"fn_lefthand","pivot":[-6,19,0]},{"name":"lefthand_1","parent":"lefthand","pivot":[-6,19,0]},{"name":"lefthand_pos","parent":"lefthand_1","pivot":[0,8,0],"cubes":[{"origin":[-7,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[7,12],"uv_size":[3,12]},"east":{"uv":[8,0],"uv_size":[4,12]},"south":{"uv":[10,12],"uv_size":[3,12]},"west":{"uv":[0,12],"uv_size":[4,12]},"up":{"uv":[17,14],"uv_size":[3,4]},"down":{"uv":[18,6],"uv_size":[3,-4]}}}]},{"name":"knife_and_right","parent":"bone5","pivot":[6,19,0]},{"name":"righthand","parent":"knife_and_right","pivot":[6,19,0]},{"name":"righthand_1","parent":"righthand","pivot":[6,19,0]},{"name":"righthand_pos","parent":"righthand_1","pivot":[0,8,0],"cubes":[{"origin":[4,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[12,0],"uv_size":[3,12]},"east":{"uv":[0,0],"uv_size":[4,12]},"south":{"uv":[4,12],"uv_size":[3,12]},"west":{"uv":[4,0],"uv_size":[4,12]},"up":{"uv":[15,2],"uv_size":[3,4]},"down":{"uv":[15,10],"uv_size":[3,-4]}}}]},{"name":"weapon","parent":"knife_and_right","pivot":[0,-2.0327,0]},{"name":"blade2","parent":"weapon","pivot":[0,0.8173,0],"cubes":[{"origin":[-0.0886,5.1587,-0.1509],"size":[0.1772,0.3642,0.0295],"pivot":[0,6.3892,0.2724],"rotation":[8.75,0,0],"uv":{"north":{"uv":[29,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0886,5.1784,-0.1804],"size":[0.1772,0.1477,0.0295],"pivot":[0,6.3892,0.2724],"rotation":[8.75,0,0],"uv":{"north":{"uv":[32,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,34],"uv_size":[0.25,0.25]},"down":{"uv":[0,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0886,5.1784,0.1509],"size":[0.1772,0.1477,0.0295],"pivot":[0,6.3892,-0.2724],"rotation":[-8.75,0,0],"uv":{"north":{"uv":[35,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0886,5.1587,0.1214],"size":[0.1772,0.3642,0.0295],"pivot":[0,6.3892,-0.2724],"rotation":[-8.75,0,0],"uv":{"north":{"uv":[35,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0886,5.1335,-0.0149],"size":[0.1772,0.3377,0.0295],"uv":{"north":{"uv":[35,6],"uv_size":[0.25,0.25]},"east":{"uv":[7,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,7],"uv_size":[0.25,0.25]},"west":{"uv":[8,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0886,5.4712,-0.0149],"size":[0.0689,0.8807,0.0295],"pivot":[-0.0886,5.4712,-0.0001],"rotation":[0,0,2.0296],"uv":{"north":{"uv":[12,21],"uv_size":[0.25,1]},"east":{"uv":[21,12],"uv_size":[0.25,1]},"south":{"uv":[13,21],"uv_size":[0.25,1]},"west":{"uv":[21,13],"uv_size":[0.25,1]},"up":{"uv":[35,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0197,5.4712,-0.0149],"size":[0.0689,0.8807,0.0295],"pivot":[0.0886,5.4712,-0.0001],"rotation":[0,0,-2.0296],"uv":{"north":{"uv":[15,21],"uv_size":[0.25,1]},"east":{"uv":[21,15],"uv_size":[0.25,1]},"south":{"uv":[16,21],"uv_size":[0.25,1]},"west":{"uv":[21,16],"uv_size":[0.25,1]},"up":{"uv":[35,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0574,6.3514,-0.0149],"size":[0,1.1124,0.0295],"pivot":[0.0574,6.3514,-0.0001],"rotation":[0,0,-2.9541],"uv":{"north":{"uv":[0,0],"uv_size":[0,1]},"east":{"uv":[21.25,17],"uv_size":[-0.25,1]},"south":{"uv":[0,0],"uv_size":[0,1]},"west":{"uv":[21,17],"uv_size":[0.25,1]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0882,1.6689,-0.0637],"size":[0.1764,3.4643,0.1272],"inflate":0.001,"uv":{"north":{"uv":[7,16],"uv_size":[0.25,3.5]},"east":{"uv":[8,16],"uv_size":[0.25,3.5]},"south":{"uv":[9,16],"uv_size":[0.25,3.5]},"west":{"uv":[10,16],"uv_size":[0.25,3.5]},"up":{"uv":[35,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0887,1.8757,-0.0084],"size":[0.1774,3.2484,0.0788],"pivot":[0.0001,5.1438,0.4641],"rotation":[1.25,0,0],"uv":{"north":{"uv":[2,17],"uv_size":[0.25,3.25]},"east":{"uv":[3,17],"uv_size":[0.25,3.25]},"south":{"uv":[4,17],"uv_size":[0.25,3.25]},"west":{"uv":[5,17],"uv_size":[0.25,3.25]},"up":{"uv":[35,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0887,1.8757,-0.0703],"size":[0.1774,3.2484,0.0788],"pivot":[0.0001,5.1438,-0.4641],"rotation":[-1.25,0,0],"uv":{"north":{"uv":[17,5],"uv_size":[0.25,3.25]},"east":{"uv":[17,9],"uv_size":[0.25,3.25]},"south":{"uv":[11,17],"uv_size":[0.25,3.25]},"west":{"uv":[13,17],"uv_size":[0.25,3.25]},"up":{"uv":[35,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0886,0.8053,-0.6449],"size":[0.1772,0.63,1.2895],"uv":{"north":{"uv":[27,22],"uv_size":[0.25,0.75]},"east":{"uv":[15,8],"uv_size":[1.25,0.75]},"south":{"uv":[23,27],"uv_size":[0.25,0.75]},"west":{"uv":[9,15],"uv_size":[1.25,0.75]},"up":{"uv":[20,18],"uv_size":[0.25,1.25]},"down":{"uv":[19,21.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.0886,1.4353,-0.2511],"size":[0.1772,0.2362,0.502],"uv":{"north":{"uv":[35,14],"uv_size":[0.25,0.25]},"east":{"uv":[1,32],"uv_size":[0.5,0.25]},"south":{"uv":[15,35],"uv_size":[0.25,0.25]},"west":{"uv":[32,1],"uv_size":[0.5,0.25]},"up":{"uv":[2,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,2.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0886,1.1597,-0.6446],"size":[0.1771,0.2756,0.5513],"pivot":[0,1.4353,-0.6446],"rotation":[47.5,0,0],"uv":{"north":{"uv":[35,15],"uv_size":[0.25,0.25]},"east":{"uv":[3,32],"uv_size":[0.5,0.25]},"south":{"uv":[16,35],"uv_size":[0.25,0.25]},"west":{"uv":[32,3],"uv_size":[0.5,0.25]},"up":{"uv":[4,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,4.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0886,1.6821,-0.0318],"size":[0.1772,0.2756,0.63],"pivot":[0,1.6427,-0.0318],"rotation":[71,0,0],"uv":{"north":{"uv":[35,16],"uv_size":[0.25,0.25]},"east":{"uv":[27,23],"uv_size":[0.75,0.25]},"south":{"uv":[17,35],"uv_size":[0.25,0.25]},"west":{"uv":[24,27],"uv_size":[0.75,0.25]},"up":{"uv":[27,24],"uv_size":[0.25,0.75]},"down":{"uv":[25,27.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0886,1.1597,0.0934],"size":[0.1772,0.2756,0.5513],"pivot":[0,1.4353,0.6446],"rotation":[-47.5,0,0],"uv":{"north":{"uv":[35,17],"uv_size":[0.25,0.25]},"east":{"uv":[5,32],"uv_size":[0.5,0.25]},"south":{"uv":[18,35],"uv_size":[0.25,0.25]},"west":{"uv":[32,5],"uv_size":[0.5,0.25]},"up":{"uv":[6,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,6.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0939,1.405,0.1574],"size":[0.1879,0.0303,0.4873],"pivot":[-0.0053,1.4353,0.6446],"rotation":[-47.5,0,0],"uv":{"north":{"uv":[11,42],"uv_size":[0.25,0.25]},"east":{"uv":[9,42],"uv_size":[0.5,0.25]},"south":{"uv":[42,11],"uv_size":[0.25,0.25]},"west":{"uv":[42,9],"uv_size":[0.5,0.25]},"up":{"uv":[10,42],"uv_size":[0.25,0.5]},"down":{"uv":[42,10.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0939,1.6677,-0.5926],"size":[0.1879,0.0303,0.3872],"pivot":[-0.0053,0.948,-0.1053],"rotation":[-90,0,0],"uv":{"north":{"uv":[24,42],"uv_size":[0.25,0.25]},"east":{"uv":[22,42],"uv_size":[0.5,0.25]},"south":{"uv":[42,24],"uv_size":[0.25,0.25]},"west":{"uv":[42,22],"uv_size":[0.5,0.25]},"up":{"uv":[23,42],"uv_size":[0.25,0.5]},"down":{"uv":[42,23.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0887,1.6821,-0.5982],"size":[0.1773,0.2756,0.63],"pivot":[0.0001,1.6427,0.0318],"rotation":[-71,0,0],"uv":{"north":{"uv":[35,18],"uv_size":[0.25,0.25]},"east":{"uv":[27,25],"uv_size":[0.75,0.25]},"south":{"uv":[19,35],"uv_size":[0.25,0.25]},"west":{"uv":[26,27],"uv_size":[0.75,0.25]},"up":{"uv":[27,26],"uv_size":[0.25,0.75]},"down":{"uv":[27,27.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0939,1.9274,-0.5769],"size":[0.1879,0.0303,0.5767],"pivot":[-0.0053,1.6427,0.0318],"rotation":[-71,0,0],"uv":{"north":{"uv":[12,42],"uv_size":[0.25,0.25]},"east":{"uv":[7,42],"uv_size":[0.75,0.25]},"south":{"uv":[42,12],"uv_size":[0.25,0.25]},"west":{"uv":[42,7],"uv_size":[0.75,0.25]},"up":{"uv":[8,42],"uv_size":[0.25,0.75]},"down":{"uv":[42,8.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0939,1.9274,0.0002],"size":[0.1879,0.0303,0.5767],"pivot":[0.0053,1.6427,-0.0318],"rotation":[71,0,0],"uv":{"north":{"uv":[19,42],"uv_size":[0.25,0.25]},"east":{"uv":[13,42],"uv_size":[0.5,0.25]},"south":{"uv":[42,19],"uv_size":[0.25,0.25]},"west":{"uv":[42,13],"uv_size":[0.5,0.25]},"up":{"uv":[14,42],"uv_size":[0.25,0.5]},"down":{"uv":[42,14.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0939,1.405,-0.6446],"size":[0.1879,0.0303,0.4873],"pivot":[0.0053,1.4353,-0.6446],"rotation":[47.5,0,0],"uv":{"north":{"uv":[20,42],"uv_size":[0.25,0.25]},"east":{"uv":[15,42],"uv_size":[0.5,0.25]},"south":{"uv":[42,20],"uv_size":[0.25,0.25]},"west":{"uv":[42,15],"uv_size":[0.5,0.25]},"up":{"uv":[16,42],"uv_size":[0.25,0.5]},"down":{"uv":[42,16.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0939,1.6677,0.2054],"size":[0.1879,0.0303,0.3872],"pivot":[0.0053,0.948,0.1053],"rotation":[90,0,0],"uv":{"north":{"uv":[21,42],"uv_size":[0.25,0.25]},"east":{"uv":[17,42],"uv_size":[0.5,0.25]},"south":{"uv":[42,21],"uv_size":[0.25,0.25]},"west":{"uv":[42,17],"uv_size":[0.5,0.25]},"up":{"uv":[18,42],"uv_size":[0.25,0.5]},"down":{"uv":[42,18.5],"uv_size":[0.25,-0.5]}}},{"origin":[0,7.2261,-0.0197],"size":[0,0.2362,0.0394],"pivot":[0,7.4623,0.0197],"rotation":[13.25,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[35,20],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[21,35],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0001,1.7185,0.0892],"size":[0,0.7875,0.246],"pivot":[0,3.8251,0.4928],"rotation":[1.2808,12.5959,0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[28,1],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[28,1],"uv_size":[0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0001,1.7185,0.0892],"size":[0,0.7875,0.246],"pivot":[0,3.8251,0.4928],"rotation":[1.2808,-12.5959,-0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[28.25,1],"uv_size":[-0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[28.25,1],"uv_size":[-0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.3818,0.0616],"size":[0,0.5119,0.1477],"pivot":[0,6.6574,0.2092],"rotation":[13.5233,-11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[32.25,16],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[32,16],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.006,6.3335,-0.0084],"size":[0,0.5119,0.1378],"pivot":[0.006,7.4557,-0.0084],"rotation":[1.2733,-11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[32.25,17],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[32,17],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.006,6.8454,-0.0084],"size":[0,0.6103,0.0295],"pivot":[0.006,7.4557,-0.0084],"rotation":[1.2733,-11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[18,32],"uv_size":[0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[32,18],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,0.0714],"size":[0,0.0689,0.0197],"pivot":[0,6.6574,0.2092],"rotation":[13.5233,-11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[35,25],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[26,35],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,0.0911],"size":[0,0.1772,0.0295],"pivot":[0,6.6574,0.2092],"rotation":[13.5233,-11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[35,26],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[27,35],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,0.1206],"size":[0,0.315,0.0295],"pivot":[0,6.6574,0.2092],"rotation":[13.5233,-11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[35,27],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[28,35],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,0.1502],"size":[0,0.4528,0.0295],"pivot":[0,6.6574,0.2092],"rotation":[13.5233,-11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[32.25,19],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[32,19],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,0.1797],"size":[0,0.5906,0.0295],"pivot":[0,6.6574,0.2092],"rotation":[13.5233,-11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[32.25,20],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[32,20],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0002,5.5302,0.1024],"size":[0,0.8662,0.2658],"pivot":[0,5.7665,0.3682],"rotation":[8.9633,-12.4738,-1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[2,28],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[2.25,28],"uv_size":[-0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0581,5.4736,0.016],"size":[0,0.8761,0.1575],"pivot":[0.058,6.3497,0.016],"rotation":[-0.0367,-12.4738,-1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,1]},"east":{"uv":[21,19],"uv_size":[0.25,1]},"south":{"uv":[0,0],"uv_size":[0,1]},"west":{"uv":[21.25,19],"uv_size":[-0.25,1]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0882,5.1131,0.0703],"size":[0,0.0211,0.4031],"pivot":[0.0881,5.1131,0.0703],"rotation":[5.9633,-12.4738,-1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[21,32],"uv_size":[0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[21.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0.0006,2.506,0.0892],"size":[0,2.6184,0.4034],"pivot":[0,3.8251,0.4928],"rotation":[1.2808,-12.5959,-0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,2.5]},"east":{"uv":[12,10],"uv_size":[0.5,2.5]},"south":{"uv":[0,0],"uv_size":[0,2.5]},"west":{"uv":[12.5,10],"uv_size":[-0.5,2.5]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0.0886,5.0892,0.0708],"size":[0,0.0264,0.4026],"pivot":[0.0883,5.1155,0.0708],"rotation":[5.0308,-12.5959,-0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[22,32],"uv_size":[0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[22.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0,5.166,-0.0354],"size":[0,0.3642,0.4036],"pivot":[0,5.7665,0.3682],"rotation":[8.9633,-12.4738,-1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[23,32],"uv_size":[0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[23,32],"uv_size":[0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[-0.0002,5.166,-0.3682],"size":[0,0.3642,0.4036],"pivot":[0,5.7665,-0.3682],"rotation":[-8.9633,12.4738,-1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[24,32],"uv_size":[0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[24.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0,5.5302,-0.3682],"size":[0,0.8662,0.2658],"pivot":[0,5.7665,-0.3682],"rotation":[-8.9633,12.4738,-1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[4,28],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[4.25,28],"uv_size":[-0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0579,5.4736,-0.1735],"size":[0,0.8761,0.1575],"pivot":[0.058,6.3497,-0.016],"rotation":[0.0367,12.4738,-1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,1]},"east":{"uv":[21,21],"uv_size":[0.25,1]},"south":{"uv":[0,0],"uv_size":[0,1]},"west":{"uv":[21.25,21],"uv_size":[-0.25,1]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.088,5.1131,-0.4733],"size":[0,0.0211,0.4031],"pivot":[0.0881,5.1131,-0.0703],"rotation":[-5.9633,12.4738,-1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[25,32],"uv_size":[0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[25.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0.088,5.0892,-0.4733],"size":[0,0.0264,0.4026],"pivot":[0.0883,5.1155,-0.0708],"rotation":[-5.0308,12.5959,-0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[26,32],"uv_size":[0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[26.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0,6.3818,-0.2092],"size":[0,0.5119,0.1477],"pivot":[0,6.6574,-0.2092],"rotation":[-13.5233,11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[0.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[0,33],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.006,6.3335,-0.1294],"size":[0,0.5119,0.1378],"pivot":[0.006,7.4557,0.0084],"rotation":[-1.2733,11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[1.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[1,33],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.006,6.8454,-0.0211],"size":[0,0.6103,0.0295],"pivot":[0.006,7.4557,0.0084],"rotation":[-1.2733,11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[33,1],"uv_size":[0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[2,33],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,-0.0911],"size":[0,0.0689,0.0197],"pivot":[0,6.6574,-0.2092],"rotation":[-13.5233,11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[35,31],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[32,35],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,-0.1206],"size":[0,0.1772,0.0295],"pivot":[0,6.6574,-0.2092],"rotation":[-13.5233,11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[35,32],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[33,35],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,-0.1502],"size":[0,0.315,0.0295],"pivot":[0,6.6574,-0.2092],"rotation":[-13.5233,11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[35,33],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[34,35],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,-0.1797],"size":[0,0.4528,0.0295],"pivot":[0,6.6574,-0.2092],"rotation":[-13.5233,11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[33,2],"uv_size":[0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[3,33],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,-0.2092],"size":[0,0.5906,0.0295],"pivot":[0,6.6574,-0.2092],"rotation":[-13.5233,11.4329,-2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[4.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[4,33],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0001,1.7185,-0.3352],"size":[0,0.7875,0.246],"pivot":[0,3.8251,-0.4928],"rotation":[-1.2808,-12.5959,0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[5.25,28],"uv_size":[-0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[5.25,28],"uv_size":[-0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0001,1.7185,-0.3352],"size":[0,0.7875,0.246],"pivot":[0,3.8251,-0.4928],"rotation":[-1.2808,12.5959,-0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[5,28],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[5,28],"uv_size":[0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0492,1.9945,0.0983],"size":[0.0984,0.5119,0.4233],"pivot":[0,2.5063,0.5216],"rotation":[-18.75,0,0],"uv":{"north":{"uv":[33,7],"uv_size":[0.25,0.5]},"east":{"uv":[22,3],"uv_size":[0.5,0.5]},"south":{"uv":[8,33],"uv_size":[0.25,0.5]},"west":{"uv":[22,4],"uv_size":[0.5,0.5]},"up":{"uv":[33,8],"uv_size":[0.25,0.5]},"down":{"uv":[9,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0492,1.4848,0.0737],"size":[0.0984,0.63,0.315],"uv":{"north":{"uv":[8,28],"uv_size":[0.25,0.75]},"east":{"uv":[28,8],"uv_size":[0.25,0.75]},"south":{"uv":[9,28],"uv_size":[0.25,0.75]},"west":{"uv":[28,9],"uv_size":[0.25,0.75]},"up":{"uv":[35,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0492,1.9945,-0.5216],"size":[0.0984,0.5119,0.4233],"pivot":[0,2.5063,-0.5216],"rotation":[18.75,0,0],"uv":{"north":{"uv":[33,9],"uv_size":[0.25,0.5]},"east":{"uv":[22,5],"uv_size":[0.5,0.5]},"south":{"uv":[10,33],"uv_size":[0.25,0.5]},"west":{"uv":[22,6],"uv_size":[0.5,0.5]},"up":{"uv":[33,10],"uv_size":[0.25,0.5]},"down":{"uv":[11,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0492,1.4848,-0.3887],"size":[0.0984,0.63,0.315],"uv":{"north":{"uv":[10,28],"uv_size":[0.25,0.75]},"east":{"uv":[28,10],"uv_size":[0.25,0.75]},"south":{"uv":[11,28],"uv_size":[0.25,0.75]},"west":{"uv":[28,11],"uv_size":[0.25,0.75]},"up":{"uv":[0,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[0,7.2261,-0.0197],"size":[0,0.2362,0.0394],"pivot":[0,7.4623,-0.0197],"rotation":[-13.25,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[2,36],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[36,2],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0574,6.3514,-0.0149],"size":[0,1.1124,0.0295],"pivot":[-0.0574,6.3514,-0.0001],"rotation":[0,0,2.9541],"uv":{"north":{"uv":[0,0],"uv_size":[0,1]},"east":{"uv":[21.25,17],"uv_size":[-0.25,1]},"south":{"uv":[0,0],"uv_size":[0,1]},"west":{"uv":[21,17],"uv_size":[0.25,1]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,7.2261,-0.0197],"size":[0,0.2362,0.0394],"pivot":[0,7.4623,0.0197],"rotation":[13.25,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[21.25,35],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[35.25,20],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.006,6.8454,-0.0084],"size":[0,0.6103,0.0295],"pivot":[-0.006,7.4557,-0.0084],"rotation":[1.2733,11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[32.25,18],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[18.25,32],"uv_size":[-0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,0.0714],"size":[0,0.0689,0.0197],"pivot":[0,6.6574,0.2092],"rotation":[13.5233,11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[26.25,35],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[35.25,25],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,0.0911],"size":[0,0.1772,0.0295],"pivot":[0,6.6574,0.2092],"rotation":[13.5233,11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[27.25,35],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[35.25,26],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,0.1206],"size":[0,0.315,0.0295],"pivot":[0,6.6574,0.2092],"rotation":[13.5233,11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[28.25,35],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[35.25,27],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,0.1502],"size":[0,0.4528,0.0295],"pivot":[0,6.6574,0.2092],"rotation":[13.5233,11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[32.25,19],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[32,19],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,0.1797],"size":[0,0.5906,0.0295],"pivot":[0,6.6574,0.2092],"rotation":[13.5233,11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[32.25,20],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[32,20],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0002,5.5302,0.1024],"size":[0,0.8662,0.2658],"pivot":[0,5.7665,0.3682],"rotation":[8.9633,12.4738,1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[2,28],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[2.25,28],"uv_size":[-0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0581,5.4736,0.016],"size":[0,0.8761,0.1575],"pivot":[-0.058,6.3497,0.016],"rotation":[-0.0367,12.4738,1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,1]},"east":{"uv":[21,19],"uv_size":[0.25,1]},"south":{"uv":[0,0],"uv_size":[0,1]},"west":{"uv":[21.25,19],"uv_size":[-0.25,1]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0882,5.1131,0.0703],"size":[0,0.0211,0.4031],"pivot":[-0.0881,5.1131,0.0703],"rotation":[5.9633,12.4738,1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[21,32],"uv_size":[0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[21.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[-0.0006,2.506,0.0892],"size":[0,2.6184,0.4034],"pivot":[0,3.8251,0.4928],"rotation":[1.2808,12.5959,0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,2.5]},"east":{"uv":[12,10],"uv_size":[0.5,2.5]},"south":{"uv":[0,0],"uv_size":[0,2.5]},"west":{"uv":[12.5,10],"uv_size":[-0.5,2.5]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0.001,5.1561,0.3806],"size":[0,1.2431,0.0834],"pivot":[0.0017,5.1561,0.464],"rotation":[9.0407,-12.4435,-2.0072],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.25]},"east":{"uv":[7.25,32],"uv_size":[-0.25,1.25]},"south":{"uv":[0,0],"uv_size":[0,1.25]},"west":{"uv":[28.25,6],"uv_size":[-0.25,1.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0001,6.3845,0.1898],"size":[0,0.7811,0.0834],"pivot":[0.0008,6.3845,0.2733],"rotation":[13.5442,-12.2659,-2.9178],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.25]},"east":{"uv":[7.25,32],"uv_size":[-0.25,1.25]},"south":{"uv":[0,0],"uv_size":[0,1.25]},"west":{"uv":[28.25,6],"uv_size":[-0.25,1.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0007,2.506,0.4092],"size":[0,2.6504,0.0834],"pivot":[0,3.8251,0.4928],"rotation":[1.2808,-12.5959,-0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,2.5]},"east":{"uv":[33.25,3],"uv_size":[-0.25,2.5]},"south":{"uv":[0,0],"uv_size":[0,2.5]},"west":{"uv":[32.25,13],"uv_size":[-0.25,2.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.001,5.1561,-0.464],"size":[0,1.2431,0.0834],"pivot":[0.0017,5.1561,-0.464],"rotation":[-9.0407,12.4435,-2.0072],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.25]},"east":{"uv":[12,32],"uv_size":[0.25,1.25]},"south":{"uv":[0,0],"uv_size":[0,1.25]},"west":{"uv":[13,32],"uv_size":[0.25,1.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0001,6.3845,-0.2733],"size":[0,0.7811,0.0834],"pivot":[0.0008,6.3845,-0.2733],"rotation":[-13.5442,12.2659,-2.9178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[28,4],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[6,28],"uv_size":[0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0007,2.506,-0.4927],"size":[0,2.6504,0.0834],"pivot":[0,3.8251,-0.4928],"rotation":[-1.2808,12.5959,-0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,2.75]},"east":{"uv":[35,21],"uv_size":[0.25,2.75]},"south":{"uv":[0,0],"uv_size":[0,2.75]},"west":{"uv":[35,28],"uv_size":[0.25,2.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0001,6.3845,-0.2733],"size":[0,0.7811,0.0834],"pivot":[-0.0008,6.3845,-0.2733],"rotation":[-13.5442,-12.2659,2.9178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[6.25,28],"uv_size":[-0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[28.25,4],"uv_size":[-0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0001,6.3845,0.1898],"size":[0,0.7811,0.0834],"pivot":[-0.0008,6.3845,0.2733],"rotation":[13.5442,12.2659,2.9178],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.25]},"east":{"uv":[28,6],"uv_size":[0.25,1.25]},"south":{"uv":[0,0],"uv_size":[0,1.25]},"west":{"uv":[7,32],"uv_size":[0.25,1.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.001,5.1561,0.3806],"size":[0,1.2431,0.0834],"pivot":[-0.0017,5.1561,0.464],"rotation":[9.0407,12.4435,2.0072],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.25]},"east":{"uv":[28,6],"uv_size":[0.25,1.25]},"south":{"uv":[0,0],"uv_size":[0,1.25]},"west":{"uv":[7,32],"uv_size":[0.25,1.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.001,5.1561,-0.464],"size":[0,1.2431,0.0834],"pivot":[-0.0017,5.1561,-0.464],"rotation":[-9.0407,-12.4435,2.0072],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.25]},"east":{"uv":[13.25,32],"uv_size":[-0.25,1.25]},"south":{"uv":[0,0],"uv_size":[0,1.25]},"west":{"uv":[12.25,32],"uv_size":[-0.25,1.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0007,2.506,-0.4927],"size":[0,2.6504,0.0834],"pivot":[0,3.8251,-0.4928],"rotation":[-1.2808,-12.5959,0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,2.75]},"east":{"uv":[35.25,28],"uv_size":[-0.25,2.75]},"south":{"uv":[0,0],"uv_size":[0,2.75]},"west":{"uv":[35.25,21],"uv_size":[-0.25,2.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0007,2.506,0.4092],"size":[0,2.6504,0.0834],"pivot":[0,3.8251,0.4928],"rotation":[1.2808,12.5959,0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,2.5]},"east":{"uv":[32,13],"uv_size":[0.25,2.5]},"south":{"uv":[0,0],"uv_size":[0,2.5]},"west":{"uv":[33,3],"uv_size":[0.25,2.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0886,5.0892,0.0708],"size":[0,0.0264,0.4026],"pivot":[-0.0883,5.1155,0.0708],"rotation":[5.0308,12.5959,0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[22,32],"uv_size":[0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[22.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0,5.166,-0.0354],"size":[0,0.3642,0.4036],"pivot":[0,5.7665,0.3682],"rotation":[8.9633,12.4738,1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[23.5,32],"uv_size":[-0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[23.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0.0002,5.166,-0.3682],"size":[0,0.3642,0.4036],"pivot":[0,5.7665,-0.3682],"rotation":[-8.9633,-12.4738,1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[24,32],"uv_size":[0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[24.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0,5.5302,-0.3682],"size":[0,0.8662,0.2658],"pivot":[0,5.7665,-0.3682],"rotation":[-8.9633,-12.4738,1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[4,28],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[4.25,28],"uv_size":[-0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0579,5.4736,-0.1735],"size":[0,0.8761,0.1575],"pivot":[-0.058,6.3497,-0.016],"rotation":[0.0367,-12.4738,1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,1]},"east":{"uv":[21,21],"uv_size":[0.25,1]},"south":{"uv":[0,0],"uv_size":[0,1]},"west":{"uv":[21.25,21],"uv_size":[-0.25,1]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.088,5.1131,-0.4733],"size":[0,0.0211,0.4031],"pivot":[-0.0881,5.1131,-0.0703],"rotation":[-5.9633,-12.4738,1.9512],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[25,32],"uv_size":[0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[25.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[-0.0006,2.506,-0.4927],"size":[0,2.6184,0.4034],"pivot":[0,3.8251,-0.4928],"rotation":[-1.2808,-12.5959,0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,2.5]},"east":{"uv":[13,0],"uv_size":[0.5,2.5]},"south":{"uv":[0,0],"uv_size":[0,2.5]},"west":{"uv":[13.5,0],"uv_size":[-0.5,2.5]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0.0006,2.506,-0.4927],"size":[0,2.6184,0.4034],"pivot":[0,3.8251,-0.4928],"rotation":[-1.2808,12.5959,-0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,2.5]},"east":{"uv":[13,0],"uv_size":[0.5,2.5]},"south":{"uv":[0,0],"uv_size":[0,2.5]},"west":{"uv":[13.5,0],"uv_size":[-0.5,2.5]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[-0.088,5.0892,-0.4733],"size":[0,0.0264,0.4026],"pivot":[-0.0883,5.1155,-0.0708],"rotation":[-5.0308,-12.5959,0.2794],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[26,32],"uv_size":[0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[26.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0,6.3818,-0.2092],"size":[0,0.5119,0.1477],"pivot":[0,6.6574,-0.2092],"rotation":[-13.5233,-11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[0.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[0,33],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.006,6.8454,-0.0211],"size":[0,0.6103,0.0295],"pivot":[-0.006,7.4557,0.0084],"rotation":[-1.2733,-11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[2.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[33.25,1],"uv_size":[-0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,-0.0911],"size":[0,0.0689,0.0197],"pivot":[0,6.6574,-0.2092],"rotation":[-13.5233,-11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[32.25,35],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[35.25,31],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,-0.1206],"size":[0,0.1772,0.0295],"pivot":[0,6.6574,-0.2092],"rotation":[-13.5233,-11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[33.25,35],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[35.25,32],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,-0.1502],"size":[0,0.315,0.0295],"pivot":[0,6.6574,-0.2092],"rotation":[-13.5233,-11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[34.25,35],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[35.25,33],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,-0.1797],"size":[0,0.4528,0.0295],"pivot":[0,6.6574,-0.2092],"rotation":[-13.5233,-11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[3.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[33.25,2],"uv_size":[-0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.8937,-0.2092],"size":[0,0.5906,0.0295],"pivot":[0,6.6574,-0.2092],"rotation":[-13.5233,-11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[4.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[4,33],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,7.2261,-0.0197],"size":[0,0.2362,0.0394],"pivot":[0,7.4623,-0.0197],"rotation":[-13.25,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[36.25,2],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[2.25,36],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,6.3818,0.0616],"size":[0,0.5119,0.1477],"pivot":[0,6.6574,0.2092],"rotation":[13.5233,11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[32.25,16],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[32,16],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.006,6.3335,-0.1294],"size":[0,0.5119,0.1378],"pivot":[-0.006,7.4557,0.0084],"rotation":[-1.2733,-11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[1.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[1,33],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.006,6.3335,-0.0084],"size":[0,0.5119,0.1378],"pivot":[-0.006,7.4557,-0.0084],"rotation":[1.2733,11.4329,2.7294],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[32.25,17],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[32,17],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}}]},{"name":"hand","parent":"weapon","pivot":[0,-2.9327,0],"cubes":[{"origin":[-0.315,-2.8933,-0.7087],"size":[0.63,3.1106,1.4175],"uv":{"north":{"uv":[2,10],"uv_size":[0.75,3]},"east":{"uv":[0,4],"uv_size":[1.5,3]},"south":{"uv":[3,10],"uv_size":[0.75,3]},"west":{"uv":[4,0],"uv_size":[1.5,3]},"up":{"uv":[7,14],"uv_size":[0.75,1.5]},"down":{"uv":[8,15.5],"uv_size":[0.75,-1.5]}}},{"origin":[-0.3449,-6.1618,-0.7091],"size":[0.6898,3.2689,1.4182],"inflate":-0.001,"uv":{"north":{"uv":[5,9],"uv_size":[0.75,3.25]},"east":{"uv":[0,0],"uv_size":[1.5,3.25]},"south":{"uv":[10,0],"uv_size":[0.75,3.25]},"west":{"uv":[2,0],"uv_size":[1.5,3.25]},"up":{"uv":[14,10],"uv_size":[0.75,1.5]},"down":{"uv":[14,13.5],"uv_size":[0.75,-1.5]}}},{"origin":[-0.345,-6.1618,-0.7091],"size":[0.69,3.2689,0.0529],"inflate":-0.001,"uv":{"north":{"uv":[24,43],"uv_size":[0.75,3.25]},"east":{"uv":[26,43],"uv_size":[0.25,3.25]},"south":{"uv":[43,24],"uv_size":[0.75,3.25]},"west":{"uv":[27,43],"uv_size":[0.25,3.25]},"up":{"uv":[28,43],"uv_size":[0.75,0.25]},"down":{"uv":[43,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-2.6826,0.0802],"size":[0.69,1.5862,0.0529],"inflate":-0.001,"pivot":[-0.0106,0.5466,-1.2107],"rotation":[-13.5,0,0],"uv":{"north":{"uv":[24,43],"uv_size":[0.75,3.25]},"east":{"uv":[26,43],"uv_size":[0.25,3.25]},"south":{"uv":[43,24],"uv_size":[0.75,3.25]},"west":{"uv":[27,43],"uv_size":[0.25,3.25]},"up":{"uv":[28,43],"uv_size":[0.75,0.25]},"down":{"uv":[43,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-2.6826,-0.1331],"size":[0.69,1.5862,0.0529],"inflate":-0.001,"pivot":[-0.0106,0.5466,1.2107],"rotation":[13.5,0,0],"uv":{"north":{"uv":[31,43],"uv_size":[0.75,1.5]},"east":{"uv":[34,43],"uv_size":[0.25,1.5]},"south":{"uv":[32,43],"uv_size":[0.75,1.5]},"west":{"uv":[43,37],"uv_size":[0.25,1.5]},"up":{"uv":[38,43],"uv_size":[0.75,0.25]},"down":{"uv":[39,43.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-6.1618,0.6562],"size":[0.69,3.2689,0.0529],"inflate":-0.001,"uv":{"north":{"uv":[43,29],"uv_size":[0.75,3.25]},"east":{"uv":[33,43],"uv_size":[0.25,3.25]},"south":{"uv":[30,43],"uv_size":[0.75,3.25]},"west":{"uv":[43,33],"uv_size":[0.25,3.25]},"up":{"uv":[43,39],"uv_size":[0.75,0.25]},"down":{"uv":[43,40.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3449,-2.8937,-0.3941],"size":[0.6898,0.3157,0.7882],"inflate":-0.001,"uv":{"north":{"uv":[12,28],"uv_size":[0.75,0.25]},"east":{"uv":[28,12],"uv_size":[0.75,0.25]},"south":{"uv":[13,28],"uv_size":[0.75,0.25]},"west":{"uv":[28,13],"uv_size":[0.75,0.25]},"up":{"uv":[12,18],"uv_size":[0.75,0.75]},"down":{"uv":[18,13.75],"uv_size":[0.75,-0.75]}}},{"origin":[-0.3445,-6.5158,-0.4725],"size":[0.689,0.3544,0.945],"uv":{"north":{"uv":[14,28],"uv_size":[0.75,0.25]},"east":{"uv":[10,22],"uv_size":[1,0.25]},"south":{"uv":[28,14],"uv_size":[0.75,0.25]},"west":{"uv":[11,22],"uv_size":[1,0.25]},"up":{"uv":[17,13],"uv_size":[0.75,1]},"down":{"uv":[14,18],"uv_size":[0.75,-1]}}},{"origin":[0.1378,-6.5552,-0.2559],"size":[0.2658,0.128,0.5119],"uv":{"north":{"uv":[23,36],"uv_size":[0.25,0.25]},"east":{"uv":[33,20],"uv_size":[0.5,0.25]},"south":{"uv":[36,23],"uv_size":[0.25,0.25]},"west":{"uv":[21,33],"uv_size":[0.5,0.25]},"up":{"uv":[33,21],"uv_size":[0.25,0.5]},"down":{"uv":[22,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.4725,-6.6143,-0.2559],"size":[0.6103,0.0984,0.5119],"uv":{"north":{"uv":[33,22],"uv_size":[0.5,0.25]},"east":{"uv":[23,33],"uv_size":[0.5,0.25]},"south":{"uv":[33,23],"uv_size":[0.5,0.25]},"west":{"uv":[24,33],"uv_size":[0.5,0.25]},"up":{"uv":[12,22],"uv_size":[0.5,0.5]},"down":{"uv":[22,12.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.63,-6.6143,-0.2559],"size":[0.1575,0.0984,0.5119],"pivot":[-0.4725,-6.6143,0],"rotation":[0,0,45],"uv":{"north":{"uv":[24,36],"uv_size":[0.25,0.25]},"east":{"uv":[33,24],"uv_size":[0.5,0.25]},"south":{"uv":[36,24],"uv_size":[0.25,0.25]},"west":{"uv":[25,33],"uv_size":[0.5,0.25]},"up":{"uv":[33,25],"uv_size":[0.25,0.5]},"down":{"uv":[26,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[-2.5133,-6.5029,-0.2559],"size":[1.9294,0.0984,0.5119],"pivot":[-0.5839,-6.5029,0],"rotation":[0,0,90],"uv":{"north":{"uv":[19,3],"uv_size":[2,0.25]},"east":{"uv":[33,26],"uv_size":[0.5,0.25]},"south":{"uv":[19,4],"uv_size":[2,0.25]},"west":{"uv":[27,33],"uv_size":[0.5,0.25]},"up":{"uv":[4,15],"uv_size":[2,0.5]},"down":{"uv":[15,5.5],"uv_size":[2,-0.5]}}},{"origin":[-1.1646,-4.6227,0.0984],"size":[0.63,0.0984,0.1575],"pivot":[-0.5346,-4.5735,0.2559],"rotation":[0,-12.5,90],"uv":{"north":{"uv":[15,28],"uv_size":[0.75,0.25]},"east":{"uv":[25,36],"uv_size":[0.25,0.25]},"south":{"uv":[28,15],"uv_size":[0.75,0.25]},"west":{"uv":[36,25],"uv_size":[0.25,0.25]},"up":{"uv":[16,28],"uv_size":[0.75,0.25]},"down":{"uv":[28,16.25],"uv_size":[0.75,-0.25]}}},{"origin":[-1.1646,-4.6227,-0.2559],"size":[0.63,0.0984,0.1575],"pivot":[-0.5346,-4.5735,-0.2559],"rotation":[0,12.5,90],"uv":{"north":{"uv":[17,28],"uv_size":[0.75,0.25]},"east":{"uv":[26,36],"uv_size":[0.25,0.25]},"south":{"uv":[28,17],"uv_size":[0.75,0.25]},"west":{"uv":[36,26],"uv_size":[0.25,0.25]},"up":{"uv":[18,28],"uv_size":[0.75,0.25]},"down":{"uv":[28,18.25],"uv_size":[0.75,-0.25]}}},{"origin":[-3.8914,-6.503,-0.1378],"size":[1.3781,0.0984,0.2756],"pivot":[-0.5839,-6.5029,0],"rotation":[0,0,90],"uv":{"north":{"uv":[19,13],"uv_size":[1.5,0.25]},"east":{"uv":[27,36],"uv_size":[0.25,0.25]},"south":{"uv":[19,16],"uv_size":[1.5,0.25]},"west":{"uv":[36,27],"uv_size":[0.25,0.25]},"up":{"uv":[17,19],"uv_size":[1.5,0.25]},"down":{"uv":[19,17.25],"uv_size":[1.5,-0.25]}}},{"origin":[-3.9701,-6.5029,-0.0591],"size":[0.0788,0.0984,0.1181],"pivot":[-0.5839,-6.5029,0],"rotation":[0,0,90],"uv":{"north":{"uv":[28,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5346,-3.1659,0.0591],"size":[0.0788,0.0984,0.1114],"pivot":[-0.5346,-3.1166,0.0591],"rotation":[0,45,90],"uv":{"north":{"uv":[31,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5346,-3.1659,-0.1704],"size":[0.0788,0.0984,0.1114],"pivot":[-0.5346,-3.1166,-0.0591],"rotation":[0,-45,90],"uv":{"north":{"uv":[34,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,36],"uv_size":[0.25,0.25]},"down":{"uv":[0,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3445,-6.5158,-0.4725],"size":[0.6891,0.4259,0.315],"pivot":[0,-6.5158,-0.4725],"rotation":[33.6901,0,0],"uv":{"north":{"uv":[19,18],"uv_size":[0.75,0.5]},"east":{"uv":[33,27],"uv_size":[0.25,0.5]},"south":{"uv":[19,19],"uv_size":[0.75,0.5]},"west":{"uv":[28,33],"uv_size":[0.25,0.5]},"up":{"uv":[19,28],"uv_size":[0.75,0.25]},"down":{"uv":[28,19.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3445,-6.5158,0.1575],"size":[0.6891,0.4259,0.315],"pivot":[0,-6.5158,0.4725],"rotation":[-33.6901,0,0],"uv":{"north":{"uv":[0,20],"uv_size":[0.75,0.5]},"east":{"uv":[33,28],"uv_size":[0.25,0.5]},"south":{"uv":[1,20],"uv_size":[0.75,0.5]},"west":{"uv":[29,33],"uv_size":[0.25,0.5]},"up":{"uv":[20,28],"uv_size":[0.75,0.25]},"down":{"uv":[28,20.25],"uv_size":[0.75,-0.25]}}},{"origin":[0.2162,0.2169,0.7084],"size":[0.0992,0.7095,0.1582],"inflate":-0.001,"uv":{"north":{"uv":[21,28],"uv_size":[0.25,0.75]},"east":{"uv":[28,21],"uv_size":[0.25,0.75]},"south":{"uv":[22,28],"uv_size":[0.25,0.75]},"west":{"uv":[28,22],"uv_size":[0.25,0.75]},"up":{"uv":[37,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3154,0.2169,0.7084],"size":[0.0992,0.7095,0.1582],"inflate":-0.001,"uv":{"north":{"uv":[23,28],"uv_size":[0.25,0.75]},"east":{"uv":[28,23],"uv_size":[0.25,0.75]},"south":{"uv":[24,28],"uv_size":[0.25,0.75]},"west":{"uv":[28,24],"uv_size":[0.25,0.75]},"up":{"uv":[37,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.314,-0.1764,-0.8662],"size":[0.628,0.3937,0.1575],"pivot":[-0.001,0.2173,-0.8662],"rotation":[25,0,0],"uv":{"north":{"uv":[20,1],"uv_size":[0.75,0.5]},"east":{"uv":[33,29],"uv_size":[0.25,0.5]},"south":{"uv":[20,2],"uv_size":[0.75,0.5]},"west":{"uv":[30,33],"uv_size":[0.25,0.5]},"up":{"uv":[25,28],"uv_size":[0.75,0.25]},"down":{"uv":[28,25.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.315,-0.1764,0.7087],"size":[0.0984,0.3937,0.1575],"pivot":[0,0.2173,0.8662],"rotation":[-25,0,0],"uv":{"north":{"uv":[33,30],"uv_size":[0.25,0.5]},"east":{"uv":[31,33],"uv_size":[0.25,0.5]},"south":{"uv":[33,31],"uv_size":[0.25,0.5]},"west":{"uv":[32,33],"uv_size":[0.25,0.5]},"up":{"uv":[37,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.314,-0.1764,0.7087],"size":[0.628,0.3937,0.1575],"pivot":[-0.001,0.2173,0.8662],"rotation":[-25,0,0],"uv":{"north":{"uv":[33,32],"uv_size":[0.25,0.5]},"east":{"uv":[33,33],"uv_size":[0.25,0.5]},"south":{"uv":[0,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,0],"uv_size":[0.25,0.5]},"up":{"uv":[37,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4036,0.1681,-0.1083],"size":[0.8072,0.1575,0.2166],"uv":{"north":{"uv":[29,3],"uv_size":[0.75,0.25]},"east":{"uv":[1,38],"uv_size":[0.25,0.25]},"south":{"uv":[4,29],"uv_size":[0.75,0.25]},"west":{"uv":[38,1],"uv_size":[0.25,0.25]},"up":{"uv":[29,4],"uv_size":[0.75,0.25]},"down":{"uv":[5,29.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4036,1.2017,-0.1083],"size":[0.8072,0.1575,0.2166],"uv":{"north":{"uv":[29,5],"uv_size":[0.75,0.25]},"east":{"uv":[2,38],"uv_size":[0.25,0.25]},"south":{"uv":[6,29],"uv_size":[0.75,0.25]},"west":{"uv":[38,2],"uv_size":[0.25,0.25]},"up":{"uv":[29,6],"uv_size":[0.75,0.25]},"down":{"uv":[7,29.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.404,0.3154,-0.2661],"size":[0.8079,0.8867,0.5323],"inflate":-0.001,"uv":{"north":{"uv":[15,17],"uv_size":[0.75,1]},"east":{"uv":[19,5],"uv_size":[0.5,1]},"south":{"uv":[16,17],"uv_size":[0.75,1]},"west":{"uv":[19,6],"uv_size":[0.5,1]},"up":{"uv":[20,5],"uv_size":[0.75,0.5]},"down":{"uv":[6,20.5],"uv_size":[0.75,-0.5]}}},{"origin":[-0.4036,1.2017,0.1083],"size":[0.8072,0.1575,0.1181],"pivot":[0,1.3592,0.1083],"rotation":[-17.5,0,0],"uv":{"north":{"uv":[29,7],"uv_size":[0.75,0.25]},"east":{"uv":[3,38],"uv_size":[0.25,0.25]},"south":{"uv":[8,29],"uv_size":[0.75,0.25]},"west":{"uv":[38,3],"uv_size":[0.25,0.25]},"up":{"uv":[29,8],"uv_size":[0.75,0.25]},"down":{"uv":[9,29.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4036,1.1662,0.2209],"size":[0.8072,0.1575,0.1575],"pivot":[0,1.3237,0.2209],"rotation":[-62.5,0,0],"uv":{"north":{"uv":[29,9],"uv_size":[0.75,0.25]},"east":{"uv":[4,38],"uv_size":[0.25,0.25]},"south":{"uv":[10,29],"uv_size":[0.75,0.25]},"west":{"uv":[38,4],"uv_size":[0.25,0.25]},"up":{"uv":[29,10],"uv_size":[0.75,0.25]},"down":{"uv":[11,29.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4036,1.1112,0.154],"size":[0.8072,0.1575,0.2166],"pivot":[0,1.1112,0.154],"rotation":[-47.5,0,0],"uv":{"north":{"uv":[29,11],"uv_size":[0.75,0.25]},"east":{"uv":[5,38],"uv_size":[0.25,0.25]},"south":{"uv":[12,29],"uv_size":[0.75,0.25]},"west":{"uv":[38,5],"uv_size":[0.25,0.25]},"up":{"uv":[29,12],"uv_size":[0.75,0.25]},"down":{"uv":[13,29.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4036,0.9005,0.4164],"size":[0.8072,0.1575,0.7087],"pivot":[0,1.058,0.4164],"rotation":[-90,0,0],"uv":{"north":{"uv":[29,13],"uv_size":[0.75,0.25]},"east":{"uv":[14,29],"uv_size":[0.75,0.25]},"south":{"uv":[29,14],"uv_size":[0.75,0.25]},"west":{"uv":[15,29],"uv_size":[0.75,0.25]},"up":{"uv":[14,18],"uv_size":[0.75,0.75]},"down":{"uv":[15,18.75],"uv_size":[0.75,-0.75]}}},{"origin":[-0.4036,0.1917,0.4164],"size":[0.8072,0.1575,0.3642],"pivot":[0,0.3492,0.4164],"rotation":[-149.5,0,0],"uv":{"north":{"uv":[29,15],"uv_size":[0.75,0.25]},"east":{"uv":[6,38],"uv_size":[0.25,0.25]},"south":{"uv":[16,29],"uv_size":[0.75,0.25]},"west":{"uv":[38,6],"uv_size":[0.25,0.25]},"up":{"uv":[29,16],"uv_size":[0.75,0.25]},"down":{"uv":[17,29.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4036,1.2017,-0.2264],"size":[0.8072,0.1575,0.1181],"pivot":[0,1.3592,-0.1083],"rotation":[17.5,0,0],"uv":{"north":{"uv":[29,17],"uv_size":[0.75,0.25]},"east":{"uv":[7,38],"uv_size":[0.25,0.25]},"south":{"uv":[18,29],"uv_size":[0.75,0.25]},"west":{"uv":[38,7],"uv_size":[0.25,0.25]},"up":{"uv":[29,18],"uv_size":[0.75,0.25]},"down":{"uv":[19,29.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4036,1.1112,-0.3705],"size":[0.8072,0.1575,0.2166],"pivot":[0,1.1112,-0.154],"rotation":[47.5,0,0],"uv":{"north":{"uv":[29,19],"uv_size":[0.75,0.25]},"east":{"uv":[8,38],"uv_size":[0.25,0.25]},"south":{"uv":[20,29],"uv_size":[0.75,0.25]},"west":{"uv":[38,8],"uv_size":[0.25,0.25]},"up":{"uv":[29,20],"uv_size":[0.75,0.25]},"down":{"uv":[21,29.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4036,1.1662,-0.3784],"size":[0.8072,0.1575,0.1575],"pivot":[0,1.3237,-0.2209],"rotation":[62.5,0,0],"uv":{"north":{"uv":[29,21],"uv_size":[0.75,0.25]},"east":{"uv":[9,38],"uv_size":[0.25,0.25]},"south":{"uv":[22,29],"uv_size":[0.75,0.25]},"west":{"uv":[38,9],"uv_size":[0.25,0.25]},"up":{"uv":[29,22],"uv_size":[0.75,0.25]},"down":{"uv":[23,29.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4036,0.9005,-1.1251],"size":[0.8072,0.1575,0.7087],"pivot":[0,1.058,-0.4164],"rotation":[90,0,0],"uv":{"north":{"uv":[29,23],"uv_size":[0.75,0.25]},"east":{"uv":[24,29],"uv_size":[0.75,0.25]},"south":{"uv":[29,24],"uv_size":[0.75,0.25]},"west":{"uv":[25,29],"uv_size":[0.75,0.25]},"up":{"uv":[16,18],"uv_size":[0.75,0.75]},"down":{"uv":[18,16.75],"uv_size":[0.75,-0.75]}}},{"origin":[-0.4036,0.1917,-0.7806],"size":[0.8072,0.1575,0.3642],"pivot":[0,0.3492,-0.4164],"rotation":[149.5,0,0],"uv":{"north":{"uv":[29,25],"uv_size":[0.75,0.25]},"east":{"uv":[10,38],"uv_size":[0.25,0.25]},"south":{"uv":[26,29],"uv_size":[0.75,0.25]},"west":{"uv":[38,10],"uv_size":[0.25,0.25]},"up":{"uv":[29,26],"uv_size":[0.75,0.25]},"down":{"uv":[27,29.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3937,-0.078,0.2855],"size":[0.7875,0.1673,0.1673],"pivot":[0,0.0057,0.3691],"rotation":[45,0,0],"uv":{"north":{"uv":[29,28],"uv_size":[0.75,0.25]},"east":{"uv":[39,16],"uv_size":[0.25,0.25]},"south":{"uv":[29,29],"uv_size":[0.75,0.25]},"west":{"uv":[17,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,30],"uv_size":[0.75,0.25]},"down":{"uv":[30,0.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3937,-6.2599,0.4233],"size":[0.7875,0.1673,0.1673],"pivot":[0,-6.1762,0.507],"rotation":[45,0,0],"uv":{"north":{"uv":[1,30],"uv_size":[0.75,0.25]},"east":{"uv":[39,17],"uv_size":[0.25,0.25]},"south":{"uv":[30,1],"uv_size":[0.75,0.25]},"west":{"uv":[18,39],"uv_size":[0.25,0.25]},"up":{"uv":[2,30],"uv_size":[0.75,0.25]},"down":{"uv":[30,2.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3937,-6.2599,-0.5906],"size":[0.7875,0.1673,0.1673],"pivot":[0,-6.1762,-0.507],"rotation":[-45,0,0],"uv":{"north":{"uv":[3,30],"uv_size":[0.75,0.25]},"east":{"uv":[39,18],"uv_size":[0.25,0.25]},"south":{"uv":[30,3],"uv_size":[0.75,0.25]},"west":{"uv":[19,39],"uv_size":[0.25,0.25]},"up":{"uv":[4,30],"uv_size":[0.75,0.25]},"down":{"uv":[30,4.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3937,0.2764,0.6202],"size":[0.7875,0.1673,0.1673],"pivot":[0,0.36,0.7038],"rotation":[45,0,0],"uv":{"north":{"uv":[5,30],"uv_size":[0.75,0.25]},"east":{"uv":[39,19],"uv_size":[0.25,0.25]},"south":{"uv":[30,5],"uv_size":[0.75,0.25]},"west":{"uv":[20,39],"uv_size":[0.25,0.25]},"up":{"uv":[6,30],"uv_size":[0.75,0.25]},"down":{"uv":[30,6.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3937,0.2764,-0.7875],"size":[0.7875,0.1673,0.1673],"pivot":[0,0.36,-0.7038],"rotation":[-45,0,0],"uv":{"north":{"uv":[7,30],"uv_size":[0.75,0.25]},"east":{"uv":[39,20],"uv_size":[0.25,0.25]},"south":{"uv":[30,7],"uv_size":[0.75,0.25]},"west":{"uv":[21,39],"uv_size":[0.25,0.25]},"up":{"uv":[8,30],"uv_size":[0.75,0.25]},"down":{"uv":[30,8.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3937,-0.078,-0.4528],"size":[0.7875,0.1673,0.1673],"pivot":[0,0.0057,-0.3691],"rotation":[-45,0,0],"uv":{"north":{"uv":[9,30],"uv_size":[0.75,0.25]},"east":{"uv":[39,21],"uv_size":[0.25,0.25]},"south":{"uv":[30,9],"uv_size":[0.75,0.25]},"west":{"uv":[22,39],"uv_size":[0.25,0.25]},"up":{"uv":[10,30],"uv_size":[0.75,0.25]},"down":{"uv":[30,10.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3446,0.2173,-0.8662],"size":[0.6892,0.7087,1.575],"uv":{"north":{"uv":[17,18],"uv_size":[0.75,0.75]},"east":{"uv":[14,14],"uv_size":[1.5,0.75]},"south":{"uv":[18,17],"uv_size":[0.75,0.75]},"west":{"uv":[15,0],"uv_size":[1.5,0.75]},"up":{"uv":[15,1],"uv_size":[0.75,1.5]},"down":{"uv":[15,4.5],"uv_size":[0.75,-1.5]}}},{"origin":[-0.3445,0.2173,0.3937],"size":[0.0788,0.7087,0.4725],"uv":{"north":{"uv":[11,30],"uv_size":[0.25,0.75]},"east":{"uv":[9,20],"uv_size":[0.5,0.75]},"south":{"uv":[30,11],"uv_size":[0.25,0.75]},"west":{"uv":[20,9],"uv_size":[0.5,0.75]},"up":{"uv":[19,34],"uv_size":[0.25,0.5]},"down":{"uv":[34,19.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2658,0.2173,0.3937],"size":[0.0788,0.7087,0.4725],"uv":{"north":{"uv":[12,30],"uv_size":[0.25,0.75]},"east":{"uv":[10,20],"uv_size":[0.5,0.75]},"south":{"uv":[30,12],"uv_size":[0.25,0.75]},"west":{"uv":[20,10],"uv_size":[0.5,0.75]},"up":{"uv":[20,34],"uv_size":[0.25,0.5]},"down":{"uv":[34,20.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.3445,-0.5522,0.3937],"size":[0.6891,0.7695,0.315],"pivot":[0,0.2173,0.7087],"rotation":[-33.75,0,0],"uv":{"north":{"uv":[18,18],"uv_size":[0.75,0.75]},"east":{"uv":[13,30],"uv_size":[0.25,0.75]},"south":{"uv":[0,19],"uv_size":[0.75,0.75]},"west":{"uv":[30,13],"uv_size":[0.25,0.75]},"up":{"uv":[14,30],"uv_size":[0.75,0.25]},"down":{"uv":[30,14.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3445,-1.1354,-0.2855],"size":[0.6891,1.26,0.5709],"uv":{"north":{"uv":[11,15],"uv_size":[0.75,1.25]},"east":{"uv":[18,9],"uv_size":[0.5,1.25]},"south":{"uv":[16,6],"uv_size":[0.75,1.25]},"west":{"uv":[18,11],"uv_size":[0.5,1.25]},"up":{"uv":[20,14],"uv_size":[0.75,0.5]},"down":{"uv":[20,15.5],"uv_size":[0.75,-0.5]}}},{"origin":[-0.3446,-6.51,-0.2067],"size":[0.6892,5.3747,0.4134],"uv":{"north":{"uv":[2,4],"uv_size":[0.75,5.25]},"east":{"uv":[4,9],"uv_size":[0.5,5.25]},"south":{"uv":[3,4],"uv_size":[0.75,5.25]},"west":{"uv":[9,4],"uv_size":[0.5,5.25]},"up":{"uv":[17,20],"uv_size":[0.75,0.5]},"down":{"uv":[18,20.5],"uv_size":[0.75,-0.5]}}},{"origin":[-0.3447,-4.51,2.3953],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,1.7703,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-4.3601,2.3953],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,1.9203,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-4.21,2.3953],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,2.0703,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-4.0601,2.3953],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,2.2203,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-3.9101,2.4913],"size":[0.6893,0.0547,0.1681],"pivot":[0.0001,2.3703,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-3.6101,2.3953],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,2.6703,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-3.385,-0.1593],"size":[0.6893,0.0547,0.2854],"pivot":[0.3447,-3.385,0.1048],"rotation":[-90,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-3.4434,2.3953],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,2.8369,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-3.2934,2.3953],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,2.9869,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-3.1434,2.3953],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,3.1369,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-2.9934,2.3953],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,3.2869,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-2.8434,2.3913],"size":[0.6893,0.0547,0.2681],"pivot":[0.0001,3.4369,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-2.5434,2.3953],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,3.7369,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-2.036,2.3953],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,4.2443,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-2.186,2.3953],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,4.0943,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-2.3361,2.3953],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,3.9443,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-1.8861,2.4913],"size":[0.6893,0.0547,0.1681],"pivot":[0.0001,4.3943,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-1.586,2.3953],"size":[0.6893,0.0547,0.2961],"pivot":[0.0001,4.6943,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-1.4401,2.4379],"size":[0.6893,0.0547,0.2321],"pivot":[0.0001,4.8403,2.5462],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-1.29,2.4379],"size":[0.6893,0.0547,0.2321],"pivot":[0.0001,4.9903,2.5462],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-1.1401,2.4379],"size":[0.6893,0.0547,0.2321],"pivot":[0.0001,5.1403,2.5462],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-0.99,2.5339],"size":[0.6893,0.0547,0.1361],"pivot":[0.0001,5.2903,2.5462],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-0.6901,2.4379],"size":[0.6893,0.0547,0.3281],"pivot":[0.0001,5.5903,2.5462],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-0.5361,2.4379],"size":[0.6893,0.0547,0.4134],"pivot":[0.0001,5.7443,2.5462],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-0.376,2.5659],"size":[0.6893,0.0547,0.3814],"pivot":[0.0001,5.9043,2.5462],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,0.7075,0.2552],"size":[0.6893,0.0547,0.5201],"pivot":[0.3447,0.4621,0.3939],"rotation":[-123.75,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-0.465,-0.1166],"size":[0.6893,0.0547,0.2854],"pivot":[0.3447,-0.465,0.1475],"rotation":[-90,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-5.4907,2.3953],"size":[0.6893,0.0547,0.2321],"pivot":[0.0001,0.7896,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-5.8407,2.142],"size":[0.6893,0.0547,0.4641],"pivot":[0.0001,0.4396,2.4502],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-6.0334,2.1526],"size":[0.6893,0.0547,0.4534],"pivot":[0.0001,0.2469,2.4502],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-6.2407,2.1526],"size":[0.6893,0.0547,0.4534],"pivot":[0.0001,0.0396,2.4502],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-12.2941,5.9554],"size":[0.6893,0.0547,0.4854],"pivot":[0.0001,-6.0137,6.253],"rotation":[-90,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-6.7407,2.174],"size":[0.6893,0.0547,0.4321],"pivot":[0.0001,-0.4604,2.4502],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-5.3407,2.3953],"size":[0.6893,0.0547,0.2321],"pivot":[0.0001,0.9396,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-5.1907,2.3953],"size":[0.6893,0.0547,0.2428],"pivot":[0.0001,1.0896,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-5.0407,2.4913],"size":[0.6893,0.0547,0.1468],"pivot":[0.0001,1.2396,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-4.5156,-0.1593],"size":[0.6893,0.0547,0.2854],"pivot":[0.3447,-4.5156,0.1048],"rotation":[-90,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-4.7407,2.3953],"size":[0.6893,0.0547,0.2428],"pivot":[0.0001,1.5396,2.5035],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[22,0],"uv_size":[0.75,0.25]},"east":{"uv":[28,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,1],"uv_size":[0.75,0.25]},"west":{"uv":[28,2],"uv_size":[0.25,0.25]},"up":{"uv":[22,2],"uv_size":[0.75,0.25]},"down":{"uv":[0,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3447,-5.2407,-2.6274],"size":[0.6893,0.0547,0.2321],"pivot":[0.0001,1.0396,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-5.0907,-2.6274],"size":[0.6893,0.0547,0.2321],"pivot":[0.0001,1.1896,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-4.9407,-2.638],"size":[0.6893,0.0547,0.2428],"pivot":[0.0001,1.3396,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-4.7907,-2.638],"size":[0.6893,0.0547,0.1468],"pivot":[0.0001,1.4896,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-4.2656,-0.1262],"size":[0.6893,0.0547,0.2854],"pivot":[0.3447,-4.2656,-0.1048],"rotation":[90,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-5.0156,-0.1262],"size":[0.6893,0.0547,0.2854],"pivot":[0.3447,-5.0156,-0.1048],"rotation":[90,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-5.2443,-0.4222],"size":[0.6893,0.0547,0.3601],"pivot":[0.3447,-5.0156,-0.1048],"rotation":[90,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-5.5407,-2.638],"size":[0.6893,0.0547,0.1468],"pivot":[0.0001,0.7396,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-4.4907,-2.638],"size":[0.6893,0.0547,0.2428],"pivot":[0.0001,1.7896,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-4.26,-2.6594],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,2.0203,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-4.1101,-2.6594],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,2.1703,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-3.96,-2.6594],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,2.3203,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-3.81,-2.6594],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,2.4703,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-3.6601,-2.6594],"size":[0.6893,0.0547,0.1681],"pivot":[0.0001,2.6203,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-3.135,-0.1262],"size":[0.6893,0.0547,0.2854],"pivot":[0.3447,-3.135,-0.1048],"rotation":[90,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-3.3601,-2.6594],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,2.9203,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-3.1934,-2.6594],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,3.0869,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-3.0434,-2.6594],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,3.2369,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-2.8934,-2.6594],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,3.3869,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-2.7434,-2.6594],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,3.5369,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-2.5934,-2.6594],"size":[0.6893,0.0547,0.2681],"pivot":[0.0001,3.6869,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-2.2934,-2.6594],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,3.9869,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-2.0861,-2.6594],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,4.1943,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-1.9361,-2.6594],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,4.3443,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-1.786,-2.6594],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,4.4943,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-1.6361,-2.6594],"size":[0.6893,0.0547,0.1681],"pivot":[0.0001,4.6443,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-1.336,-2.6594],"size":[0.6893,0.0547,0.2641],"pivot":[0.0001,4.9443,-2.5035],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-1.1901,-2.67],"size":[0.6893,0.0547,0.2321],"pivot":[0.0001,5.0903,-2.5462],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-1.04,-2.67],"size":[0.6893,0.0547,0.2321],"pivot":[0.0001,5.2403,-2.5462],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-0.8901,-2.67],"size":[0.6893,0.0547,0.2321],"pivot":[0.0001,5.3903,-2.5462],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-0.74,-2.7234],"size":[0.6893,0.0547,0.2108],"pivot":[0.0001,5.5403,-2.5462],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-0.247,-0.2435],"size":[0.6893,0.0547,0.2854],"pivot":[0.3447,-0.247,-0.2221],"rotation":[90,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-0.44,-2.9047],"size":[0.6893,0.0547,0.4668],"pivot":[0.0001,5.8403,-2.5462],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-0.2861,-2.9901],"size":[0.6893,0.0547,0.5521],"pivot":[0.0001,5.9943,-2.5462],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3447,-0.126,-3.0754],"size":[0.6893,0.0547,0.5094],"pivot":[0.0001,6.1543,-2.5462],"rotation":[22.5,0,0],"uv":{"north":{"uv":[22.75,1],"uv_size":[-0.75,0.25]},"east":{"uv":[28.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[22.75,0],"uv_size":[-0.75,0.25]},"west":{"uv":[28.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[22,2.25],"uv_size":[0.75,-0.25]},"down":{"uv":[0,28],"uv_size":[0.75,0.25]}}},{"origin":[-0.3445,-6.51,0.0098],"size":[0.6891,5.1483,0.1969],"pivot":[0,-6.3525,0.2067],"rotation":[-1.5,0,0],"uv":{"north":{"uv":[4,3],"uv_size":[0.75,5.25]},"east":{"uv":[0,12],"uv_size":[0.25,5.25]},"south":{"uv":[5,3],"uv_size":[0.75,5.25]},"west":{"uv":[12,0],"uv_size":[0.25,5.25]},"up":{"uv":[15,30],"uv_size":[0.75,0.25]},"down":{"uv":[30,15.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-6.51,0.1699],"size":[0.69,5.1483,0.0369],"pivot":[0.0005,-6.3525,0.2067],"rotation":[-1.5,0,0],"uv":{"north":{"uv":[32,7],"uv_size":[0.75,5.25]},"east":{"uv":[32,27],"uv_size":[0.25,5.25]},"south":{"uv":[32,21],"uv_size":[0.75,5.25]},"west":{"uv":[43,41],"uv_size":[0.25,5.25]},"up":{"uv":[18,1],"uv_size":[0.75,0.25]},"down":{"uv":[18,6.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-6.51,-0.2067],"size":[0.69,5.1483,0.0369],"pivot":[0.0005,-6.3525,-0.2067],"rotation":[1.5,0,0],"uv":{"north":{"uv":[32.75,21],"uv_size":[-0.75,5.25]},"east":{"uv":[32.25,27],"uv_size":[-0.25,5.25]},"south":{"uv":[32.75,7],"uv_size":[-0.75,5.25]},"west":{"uv":[43.25,41],"uv_size":[-0.25,5.25]},"up":{"uv":[18,1.25],"uv_size":[0.75,-0.25]},"down":{"uv":[18,6],"uv_size":[0.75,0.25]}}},{"origin":[-0.3442,-6.5097,0.2858],"size":[0.6883,4.7144,0.0386],"inflate":0.001,"pivot":[0,-6.3525,0.2067],"rotation":[-1.5,0,0],"uv":{"north":{"uv":[0,7],"uv_size":[0.75,4.75]},"east":{"uv":[12,13],"uv_size":[0.25,4.75]},"south":{"uv":[7,0],"uv_size":[0.75,4.75]},"west":{"uv":[13,12],"uv_size":[0.25,4.75]},"up":{"uv":[16,30],"uv_size":[0.75,0.25]},"down":{"uv":[30,16.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3442,-6.5097,-0.3245],"size":[0.6883,4.7144,0.0386],"inflate":0.001,"pivot":[0,-6.3525,-0.2067],"rotation":[1.5,0,0],"uv":{"north":{"uv":[1,7],"uv_size":[0.75,4.75]},"east":{"uv":[14,0],"uv_size":[0.25,4.75]},"south":{"uv":[7,5],"uv_size":[0.75,4.75]},"west":{"uv":[14,5],"uv_size":[0.25,4.75]},"up":{"uv":[17,30],"uv_size":[0.75,0.25]},"down":{"uv":[30,17.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.344,-6.5097,-0.3565],"size":[0.688,4.5864,0.0386],"inflate":0.001,"pivot":[-0.0002,-6.3525,-0.2387],"rotation":[1.5,0,0],"uv":{"north":{"uv":[41,34],"uv_size":[0.75,4.75]},"east":{"uv":[36,41],"uv_size":[0.25,4.75]},"south":{"uv":[35,41],"uv_size":[0.75,4.75]},"west":{"uv":[37,41],"uv_size":[0.25,4.75]},"up":{"uv":[38,41],"uv_size":[0.75,0.25]},"down":{"uv":[39,41.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.344,-1.9259,-0.4724],"size":[0.688,0.1291,0.0386],"inflate":0.001,"pivot":[0.345,-1.9269,-0.4734],"rotation":[-12.6204,0,0],"uv":{"north":{"uv":[41,34],"uv_size":[0.75,4.75]},"east":{"uv":[36,41],"uv_size":[0.25,4.75]},"south":{"uv":[35,41],"uv_size":[0.75,4.75]},"west":{"uv":[37,41],"uv_size":[0.25,4.75]},"up":{"uv":[38,41],"uv_size":[0.75,0.25]},"down":{"uv":[39,41.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.344,-6.5097,0.3178],"size":[0.688,4.5864,0.0386],"inflate":0.001,"pivot":[0.0002,-6.3525,0.2387],"rotation":[-1.5,0,0],"uv":{"north":{"uv":[41,39],"uv_size":[0.75,4.5]},"east":{"uv":[0,42],"uv_size":[0.25,4.5]},"south":{"uv":[40,41],"uv_size":[0.75,4.5]},"west":{"uv":[42,0],"uv_size":[0.25,4.5]},"up":{"uv":[1,42],"uv_size":[0.75,0.25]},"down":{"uv":[2,42.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.344,-1.9259,0.4338],"size":[0.688,0.1291,0.0386],"inflate":0.001,"pivot":[-0.345,-1.9269,0.4734],"rotation":[12.6204,0,0],"uv":{"north":{"uv":[3,42],"uv_size":[0.75,0.25]},"east":{"uv":[6,42],"uv_size":[0.25,0.25]},"south":{"uv":[4,42],"uv_size":[0.75,0.25]},"west":{"uv":[42,6],"uv_size":[0.25,0.25]},"up":{"uv":[5,42],"uv_size":[0.75,0.25]},"down":{"uv":[42,5.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3445,-6.51,-0.2067],"size":[0.6891,5.1483,0.1969],"pivot":[0,-6.3525,-0.2067],"rotation":[1.5,0,0],"uv":{"north":{"uv":[6,0],"uv_size":[0.75,5.25]},"east":{"uv":[1,12],"uv_size":[0.25,5.25]},"south":{"uv":[6,6],"uv_size":[0.75,5.25]},"west":{"uv":[6,12],"uv_size":[0.25,5.25]},"up":{"uv":[18,30],"uv_size":[0.75,0.25]},"down":{"uv":[30,18.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3395,-2.9466,-0.0295],"size":[0.679,1.8506,0.315],"pivot":[0.0056,-1.1354,0.2855],"rotation":[13.5,0,0],"uv":{"north":{"uv":[12,6],"uv_size":[0.75,1.75]},"east":{"uv":[12,19],"uv_size":[0.25,1.75]},"south":{"uv":[7,12],"uv_size":[0.75,1.75]},"west":{"uv":[14,19],"uv_size":[0.25,1.75]},"up":{"uv":[19,30],"uv_size":[0.75,0.25]},"down":{"uv":[30,19.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3204,-0.6016,0.7519],"size":[0.6357,0.8288,0.0283],"pivot":[0.0242,0.1466,0.8169],"rotation":[-33.75,0,0],"uv":{"north":{"uv":[42,27],"uv_size":[0.75,0.75]},"east":{"uv":[33,42],"uv_size":[0.25,0.75]},"south":{"uv":[28,42],"uv_size":[0.75,0.75]},"west":{"uv":[42,33],"uv_size":[0.25,0.75]},"up":{"uv":[34,42],"uv_size":[0.75,0.25]},"down":{"uv":[42,34.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3204,-1.1354,0.3472],"size":[0.6357,0.696,0.0283],"uv":{"north":{"uv":[26,42],"uv_size":[0.75,0.75]},"east":{"uv":[31,42],"uv_size":[0.25,0.75]},"south":{"uv":[27,42],"uv_size":[0.75,0.75]},"west":{"uv":[42,31],"uv_size":[0.25,0.75]},"up":{"uv":[32,42],"uv_size":[0.75,0.25]},"down":{"uv":[42,32.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3179,-2.6014,0.3615],"size":[0.6357,1.424,0.0283],"pivot":[0.0373,-1.2168,0.1765],"rotation":[13.5,0,0],"uv":{"north":{"uv":[25,42],"uv_size":[0.75,1.25]},"east":{"uv":[42,28],"uv_size":[0.25,1.25]},"south":{"uv":[42,25],"uv_size":[0.75,1.25]},"west":{"uv":[29,42],"uv_size":[0.25,1.25]},"up":{"uv":[30,42],"uv_size":[0.75,0.25]},"down":{"uv":[42,30.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3204,-0.6016,0.8692],"size":[0.6357,0.3915,0.0283],"pivot":[0.0242,0.1466,0.9342],"rotation":[-33.75,0,0],"uv":{"north":{"uv":[42,27],"uv_size":[0.75,0.75]},"east":{"uv":[33,42],"uv_size":[0.25,0.75]},"south":{"uv":[28,42],"uv_size":[0.75,0.75]},"west":{"uv":[42,33],"uv_size":[0.25,0.75]},"up":{"uv":[34,42],"uv_size":[0.75,0.25]},"down":{"uv":[42,34.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3204,-1.1354,0.4645],"size":[0.6357,0.696,0.0283],"uv":{"north":{"uv":[26,42],"uv_size":[0.75,0.75]},"east":{"uv":[31,42],"uv_size":[0.25,0.75]},"south":{"uv":[27,42],"uv_size":[0.75,0.75]},"west":{"uv":[42,31],"uv_size":[0.25,0.75]},"up":{"uv":[32,42],"uv_size":[0.75,0.25]},"down":{"uv":[42,32.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3179,-2.1108,0.4788],"size":[0.6357,0.9333,0.0283],"pivot":[0.0373,-1.2168,0.2938],"rotation":[13.5,0,0],"uv":{"north":{"uv":[25,42],"uv_size":[0.75,1.25]},"east":{"uv":[42,28],"uv_size":[0.25,1.25]},"south":{"uv":[42,25],"uv_size":[0.75,1.25]},"west":{"uv":[29,42],"uv_size":[0.25,1.25]},"up":{"uv":[30,42],"uv_size":[0.75,0.25]},"down":{"uv":[42,30.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3204,-0.6016,0.9866],"size":[0.6357,0.1888,0.0283],"pivot":[0.0242,0.1466,1.0515],"rotation":[-33.75,0,0],"uv":{"north":{"uv":[42,27],"uv_size":[0.75,0.75]},"east":{"uv":[33,42],"uv_size":[0.25,0.75]},"south":{"uv":[28,42],"uv_size":[0.75,0.75]},"west":{"uv":[42,33],"uv_size":[0.25,0.75]},"up":{"uv":[34,42],"uv_size":[0.75,0.25]},"down":{"uv":[42,34.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3204,-1.1354,0.5819],"size":[0.6357,0.696,0.0283],"uv":{"north":{"uv":[26,42],"uv_size":[0.75,0.75]},"east":{"uv":[31,42],"uv_size":[0.25,0.75]},"south":{"uv":[27,42],"uv_size":[0.75,0.75]},"west":{"uv":[42,31],"uv_size":[0.25,0.75]},"up":{"uv":[32,42],"uv_size":[0.75,0.25]},"down":{"uv":[42,32.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3179,-1.5988,0.5962],"size":[0.6357,0.4213,0.0283],"pivot":[0.0373,-1.2168,0.4112],"rotation":[13.5,0,0],"uv":{"north":{"uv":[25,42],"uv_size":[0.75,1.25]},"east":{"uv":[42,28],"uv_size":[0.25,1.25]},"south":{"uv":[42,25],"uv_size":[0.75,1.25]},"west":{"uv":[29,42],"uv_size":[0.25,1.25]},"up":{"uv":[30,42],"uv_size":[0.75,0.25]},"down":{"uv":[42,30.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3204,-1.1354,-0.3755],"size":[0.6357,0.696,0.0283],"uv":{"north":{"uv":[42,39],"uv_size":[0.75,0.75]},"east":{"uv":[7,43],"uv_size":[0.25,0.75]},"south":{"uv":[42,40],"uv_size":[0.75,0.75]},"west":{"uv":[43,7],"uv_size":[0.25,0.75]},"up":{"uv":[8,43],"uv_size":[0.75,0.25]},"down":{"uv":[43,8.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3204,-0.6016,-0.7802],"size":[0.6357,0.8288,0.0283],"pivot":[0.0242,0.1466,-0.8169],"rotation":[33.75,0,0],"uv":{"north":{"uv":[42,41],"uv_size":[0.75,0.75]},"east":{"uv":[9,43],"uv_size":[0.25,0.75]},"south":{"uv":[42,42],"uv_size":[0.75,0.75]},"west":{"uv":[43,9],"uv_size":[0.25,0.75]},"up":{"uv":[10,43],"uv_size":[0.75,0.25]},"down":{"uv":[43,10.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3204,-1.1354,-0.4928],"size":[0.6357,0.696,0.0283],"uv":{"north":{"uv":[43,0],"uv_size":[0.75,0.75]},"east":{"uv":[11,43],"uv_size":[0.25,0.75]},"south":{"uv":[1,43],"uv_size":[0.75,0.75]},"west":{"uv":[43,11],"uv_size":[0.25,0.75]},"up":{"uv":[12,43],"uv_size":[0.75,0.25]},"down":{"uv":[43,12.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3179,-2.1108,-0.5071],"size":[0.6357,0.9333,0.0283],"pivot":[0.0373,-1.2168,-0.2938],"rotation":[-13.5,0,0],"uv":{"north":{"uv":[38,42],"uv_size":[0.75,1]},"east":{"uv":[6,43],"uv_size":[0.25,1]},"south":{"uv":[39,42],"uv_size":[0.75,1]},"west":{"uv":[43,6],"uv_size":[0.25,1]},"up":{"uv":[13,43],"uv_size":[0.75,0.25]},"down":{"uv":[43,13.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3179,-2.6014,-0.3898],"size":[0.6357,1.424,0.0283],"pivot":[0.0373,-1.2168,-0.1765],"rotation":[-13.5,0,0],"uv":{"north":{"uv":[42,35],"uv_size":[0.75,1.5]},"east":{"uv":[43,2],"uv_size":[0.25,1.5]},"south":{"uv":[42,37],"uv_size":[0.75,1.5]},"west":{"uv":[3,43],"uv_size":[0.25,1.5]},"up":{"uv":[14,43],"uv_size":[0.75,0.25]},"down":{"uv":[43,14.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3179,-1.5988,-0.6244],"size":[0.6357,0.4213,0.0283],"pivot":[0.0373,-1.2168,-0.4112],"rotation":[-13.5,0,0],"uv":{"north":{"uv":[4,43],"uv_size":[0.75,0.5]},"east":{"uv":[21,43],"uv_size":[0.25,0.5]},"south":{"uv":[43,4],"uv_size":[0.75,0.5]},"west":{"uv":[43,21],"uv_size":[0.25,0.5]},"up":{"uv":[15,43],"uv_size":[0.75,0.25]},"down":{"uv":[43,15.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3204,-1.1354,-0.6101],"size":[0.6357,0.696,0.0283],"uv":{"north":{"uv":[43,1],"uv_size":[0.75,0.75]},"east":{"uv":[16,43],"uv_size":[0.25,0.75]},"south":{"uv":[2,43],"uv_size":[0.75,0.75]},"west":{"uv":[43,16],"uv_size":[0.25,0.75]},"up":{"uv":[17,43],"uv_size":[0.75,0.25]},"down":{"uv":[43,17.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3204,-0.6016,-1.0148],"size":[0.6357,0.1888,0.0283],"pivot":[0.0242,0.1466,-1.0515],"rotation":[33.75,0,0],"uv":{"north":{"uv":[18,43],"uv_size":[0.75,0.25]},"east":{"uv":[23,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,18],"uv_size":[0.75,0.25]},"west":{"uv":[43,23],"uv_size":[0.25,0.25]},"up":{"uv":[19,43],"uv_size":[0.75,0.25]},"down":{"uv":[43,19.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3204,-0.6016,-0.8975],"size":[0.6357,0.3915,0.0283],"pivot":[0.0242,0.1466,-0.9342],"rotation":[33.75,0,0],"uv":{"north":{"uv":[5,43],"uv_size":[0.75,0.5]},"east":{"uv":[22,43],"uv_size":[0.25,0.5]},"south":{"uv":[43,5],"uv_size":[0.75,0.5]},"west":{"uv":[43,22],"uv_size":[0.25,0.5]},"up":{"uv":[20,43],"uv_size":[0.75,0.25]},"down":{"uv":[43,20.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3445,-0.5522,-0.7087],"size":[0.6891,0.7695,0.315],"pivot":[0,0.2173,-0.7087],"rotation":[33.75,0,0],"uv":{"north":{"uv":[19,1],"uv_size":[0.75,0.75]},"east":{"uv":[20,30],"uv_size":[0.25,0.75]},"south":{"uv":[19,2],"uv_size":[0.75,0.75]},"west":{"uv":[30,20],"uv_size":[0.25,0.75]},"up":{"uv":[21,30],"uv_size":[0.75,0.25]},"down":{"uv":[30,21.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3495,-0.5522,-0.7087],"size":[0.699,0.7695,0.0483],"pivot":[-0.0057,0.2173,-0.7087],"rotation":[33.75,0,0],"uv":{"north":{"uv":[14,21],"uv_size":[0.75,0.75]},"east":{"uv":[17,21],"uv_size":[0.25,0.75]},"south":{"uv":[21,14],"uv_size":[0.75,0.75]},"west":{"uv":[18,21],"uv_size":[0.25,0.75]},"up":{"uv":[21,18],"uv_size":[0.75,0.25]},"down":{"uv":[21,20.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3495,-0.5522,0.6604],"size":[0.699,0.7695,0.0483],"pivot":[-0.0057,0.2173,0.7087],"rotation":[-33.75,0,0],"uv":{"north":{"uv":[21.75,14],"uv_size":[-0.75,0.75]},"east":{"uv":[17.25,21],"uv_size":[-0.25,0.75]},"south":{"uv":[14.75,21],"uv_size":[-0.75,0.75]},"west":{"uv":[18.25,21],"uv_size":[-0.25,0.75]},"up":{"uv":[21,18.25],"uv_size":[0.75,-0.25]},"down":{"uv":[21,20],"uv_size":[0.75,0.25]}}},{"origin":[-0.3395,-2.9466,-0.2855],"size":[0.679,1.8506,0.315],"pivot":[0.0056,-1.1354,-0.2855],"rotation":[-13.5,0,0],"uv":{"north":{"uv":[8,12],"uv_size":[0.75,1.75]},"east":{"uv":[15,19],"uv_size":[0.25,1.75]},"south":{"uv":[12,8],"uv_size":[0.75,1.75]},"west":{"uv":[16,19],"uv_size":[0.25,1.75]},"up":{"uv":[22,30],"uv_size":[0.75,0.25]},"down":{"uv":[30,22.25],"uv_size":[0.75,-0.25]}}}]},{"name":"open","parent":"hand","pivot":[0,0.0443,0.6044],"cubes":[{"origin":[-0.2067,0.0007,0.8466],"size":[0.4134,0.4036,0.1378],"uv":{"north":{"uv":[22,7],"uv_size":[0.5,0.5]},"east":{"uv":[33,13],"uv_size":[0.25,0.5]},"south":{"uv":[22,8],"uv_size":[0.5,0.5]},"west":{"uv":[14,33],"uv_size":[0.25,0.5]},"up":{"uv":[33,14],"uv_size":[0.5,0.25]},"down":{"uv":[15,33.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2067,0.4043,0.8269],"size":[0.4134,0.1969,0.1575],"pivot":[0,0.4043,0.9844],"rotation":[45,0,0],"uv":{"north":{"uv":[33,15],"uv_size":[0.5,0.25]},"east":{"uv":[3,36],"uv_size":[0.25,0.25]},"south":{"uv":[16,33],"uv_size":[0.5,0.25]},"west":{"uv":[36,3],"uv_size":[0.25,0.25]},"up":{"uv":[33,16],"uv_size":[0.5,0.25]},"down":{"uv":[17,33.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2067,-0.1666,0.8269],"size":[0.4134,0.1969,0.1575],"pivot":[0,0.0303,0.9844],"rotation":[-45,0,0],"uv":{"north":{"uv":[33,17],"uv_size":[0.5,0.25]},"east":{"uv":[4,36],"uv_size":[0.25,0.25]},"south":{"uv":[18,33],"uv_size":[0.5,0.25]},"west":{"uv":[36,4],"uv_size":[0.25,0.25]},"up":{"uv":[33,18],"uv_size":[0.5,0.25]},"down":{"uv":[19,33.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2067,-0.3536,0.6694],"size":[0.4134,1.1419,0.1878],"uv":{"north":{"uv":[6,18],"uv_size":[0.5,1.25]},"east":{"uv":[20,20],"uv_size":[0.25,1.25]},"south":{"uv":[18,7],"uv_size":[0.5,1.25]},"west":{"uv":[0,21],"uv_size":[0.25,1.25]},"up":{"uv":[33,19],"uv_size":[0.5,0.25]},"down":{"uv":[20,33.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.0886,-0.4718,0.6694],"size":[0.1772,0.1181,0.1878],"uv":{"north":{"uv":[5,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,5],"uv_size":[0.25,0.25]},"south":{"uv":[6,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,6],"uv_size":[0.25,0.25]},"up":{"uv":[7,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2556,-0.4718,0.6694],"size":[0.1671,0.1181,0.1772],"pivot":[-0.0886,-0.4718,0.758],"rotation":[0,0,45],"uv":{"north":{"uv":[8,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,8],"uv_size":[0.25,0.25]},"south":{"uv":[9,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,9],"uv_size":[0.25,0.25]},"up":{"uv":[10,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0886,-0.4718,0.6694],"size":[0.1671,0.1181,0.1772],"pivot":[0.0886,-0.4718,0.758],"rotation":[0,0,-45],"uv":{"north":{"uv":[11,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,11],"uv_size":[0.25,0.25]},"south":{"uv":[12,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,12],"uv_size":[0.25,0.25]},"up":{"uv":[13,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2556,0.7882,0.6694],"size":[0.1671,0.1181,0.1772],"pivot":[-0.0886,0.9064,0.758],"rotation":[0,0,-45],"uv":{"north":{"uv":[14,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,15],"uv_size":[0.25,0.25]},"up":{"uv":[16,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0886,0.7882,0.6694],"size":[0.1671,0.1181,0.1772],"pivot":[0.0886,0.9064,0.758],"rotation":[0,0,45],"uv":{"north":{"uv":[17,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0886,0.7882,0.6694],"size":[0.1772,0.1181,0.1878],"uv":{"north":{"uv":[20,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,20],"uv_size":[0.25,0.25]},"south":{"uv":[21,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,21],"uv_size":[0.25,0.25]},"up":{"uv":[22,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,22.25],"uv_size":[0.25,-0.25]}}}]},{"name":"bone","parent":"hand","pivot":[0.0788,0.8079,0],"rotation":[0,0,90],"cubes":[{"origin":[-0.1051,0.3353,-0.6846],"size":[0.367,0.788,1.3692],"uv":{"north":{"uv":[26,28],"uv_size":[0.25,0.75]},"east":{"uv":[15,9],"uv_size":[1.25,0.75]},"south":{"uv":[28,26],"uv_size":[0.25,0.75]},"west":{"uv":[15,10],"uv_size":[1.25,0.75]},"up":{"uv":[21,0],"uv_size":[0.25,1.25]},"down":{"uv":[1,22.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.1047,0.3354,-0.6846],"size":[0.3669,0.7875,1.3692],"pivot":[0.0788,0.4929,0],"rotation":[0,-30,0],"uv":{"north":{"uv":[27,28],"uv_size":[0.25,0.75]},"east":{"uv":[15,11],"uv_size":[1.25,0.75]},"south":{"uv":[28,27],"uv_size":[0.25,0.75]},"west":{"uv":[15,12],"uv_size":[1.25,0.75]},"up":{"uv":[2,21],"uv_size":[0.25,1.25]},"down":{"uv":[21,3.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.1047,0.3354,-0.6846],"size":[0.3669,0.7875,1.3692],"pivot":[0.0788,0.4929,0],"rotation":[0,-60,0],"uv":{"north":{"uv":[28,28],"uv_size":[0.25,0.75]},"east":{"uv":[15,13],"uv_size":[1.25,0.75]},"south":{"uv":[0,29],"uv_size":[0.25,0.75]},"west":{"uv":[14,15],"uv_size":[1.25,0.75]},"up":{"uv":[3,21],"uv_size":[0.25,1.25]},"down":{"uv":[4,22.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.1047,0.3355,-0.6846],"size":[0.3669,0.7876,1.3692],"pivot":[0.0788,0.4929,0],"rotation":[0,-90,0],"uv":{"north":{"uv":[29,0],"uv_size":[0.25,0.75]},"east":{"uv":[16,1],"uv_size":[1.25,0.75]},"south":{"uv":[1,29],"uv_size":[0.25,0.75]},"west":{"uv":[2,16],"uv_size":[1.25,0.75]},"up":{"uv":[21,4],"uv_size":[0.25,1.25]},"down":{"uv":[5,22.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.1047,0.3354,-0.6846],"size":[0.3669,0.7875,1.3692],"pivot":[0.0788,0.4929,0],"rotation":[0,-120,0],"uv":{"north":{"uv":[29,1],"uv_size":[0.25,0.75]},"east":{"uv":[16,2],"uv_size":[1.25,0.75]},"south":{"uv":[2,29],"uv_size":[0.25,0.75]},"west":{"uv":[16,3],"uv_size":[1.25,0.75]},"up":{"uv":[6,21],"uv_size":[0.25,1.25]},"down":{"uv":[7,22.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.1047,0.3354,-0.6846],"size":[0.3669,0.7875,1.3692],"pivot":[0.0788,0.4929,0],"rotation":[0,-150,0],"uv":{"north":{"uv":[29,2],"uv_size":[0.25,0.75]},"east":{"uv":[4,16],"uv_size":[1.25,0.75]},"south":{"uv":[3,29],"uv_size":[0.25,0.75]},"west":{"uv":[16,4],"uv_size":[1.25,0.75]},"up":{"uv":[8,21],"uv_size":[0.25,1.25]},"down":{"uv":[9,22.25],"uv_size":[0.25,-1.25]}}}]},{"name":"bone2","parent":"hand","pivot":[0.0788,0.8079,0],"rotation":[0,0,90],"cubes":[{"origin":[0.2103,0.2567,0.6058],"size":[0.0519,0.945,0.0788],"uv":{"north":{"uv":[13,22],"uv_size":[0.25,1]},"east":{"uv":[22,13],"uv_size":[0.25,1]},"south":{"uv":[14,22],"uv_size":[0.25,1]},"west":{"uv":[22,14],"uv_size":[0.25,1]},"up":{"uv":[37,4],"uv_size":[0.25,0.25]},"down":{"uv":[5,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2103,0.2567,-0.6846],"size":[0.0519,0.945,0.0788],"uv":{"north":{"uv":[15,22],"uv_size":[0.25,1]},"east":{"uv":[22,15],"uv_size":[0.25,1]},"south":{"uv":[16,22],"uv_size":[0.25,1]},"west":{"uv":[22,16],"uv_size":[0.25,1]},"up":{"uv":[37,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1047,0.2567,-0.6846],"size":[0.1306,0.945,0.0788],"uv":{"north":{"uv":[17,22],"uv_size":[0.25,1]},"east":{"uv":[22,17],"uv_size":[0.25,1]},"south":{"uv":[18,22],"uv_size":[0.25,1]},"west":{"uv":[22,18],"uv_size":[0.25,1]},"up":{"uv":[37,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1047,0.2567,0.6058],"size":[0.1306,0.945,0.0788],"uv":{"north":{"uv":[19,22],"uv_size":[0.25,1]},"east":{"uv":[22,19],"uv_size":[0.25,1]},"south":{"uv":[20,22],"uv_size":[0.25,1]},"west":{"uv":[22,20],"uv_size":[0.25,1]},"up":{"uv":[37,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1047,0.2567,0.6058],"size":[0.3669,0.945,0.0788],"pivot":[0.0788,0.4929,0],"rotation":[0,-30,0],"uv":{"north":{"uv":[21,22],"uv_size":[0.25,1]},"east":{"uv":[22,21],"uv_size":[0.25,1]},"south":{"uv":[22,22],"uv_size":[0.25,1]},"west":{"uv":[0,23],"uv_size":[0.25,1]},"up":{"uv":[37,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1047,0.2567,-0.6846],"size":[0.3669,0.945,0.0788],"pivot":[0.0788,0.4929,0],"rotation":[0,-30,0],"uv":{"north":{"uv":[23,0],"uv_size":[0.25,1]},"east":{"uv":[1,23],"uv_size":[0.25,1]},"south":{"uv":[23,1],"uv_size":[0.25,1]},"west":{"uv":[2,23],"uv_size":[0.25,1]},"up":{"uv":[37,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1047,0.2567,0.6058],"size":[0.3669,0.945,0.0788],"pivot":[0.0788,0.4929,0],"rotation":[0,-60,0],"uv":{"north":{"uv":[23,2],"uv_size":[0.25,1]},"east":{"uv":[3,23],"uv_size":[0.25,1]},"south":{"uv":[23,3],"uv_size":[0.25,1]},"west":{"uv":[4,23],"uv_size":[0.25,1]},"up":{"uv":[37,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1047,0.2567,-0.6846],"size":[0.3275,0.945,0.0788],"pivot":[0.0788,0.4929,0],"rotation":[0,-60,0],"uv":{"north":{"uv":[23,4],"uv_size":[0.25,1]},"east":{"uv":[5,23],"uv_size":[0.25,1]},"south":{"uv":[23,5],"uv_size":[0.25,1]},"west":{"uv":[6,23],"uv_size":[0.25,1]},"up":{"uv":[37,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1834,0.2567,0.6058],"size":[0.0788,0.945,0.0788],"pivot":[0.0788,0.4929,0],"rotation":[0,-90,0],"uv":{"north":{"uv":[23,6],"uv_size":[0.25,1]},"east":{"uv":[7,23],"uv_size":[0.25,1]},"south":{"uv":[23,7],"uv_size":[0.25,1]},"west":{"uv":[8,23],"uv_size":[0.25,1]},"up":{"uv":[37,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1047,0.2567,0.6058],"size":[0.0788,0.945,0.0788],"pivot":[0.0788,0.4929,0],"rotation":[0,-90,0],"uv":{"north":{"uv":[23,8],"uv_size":[0.25,1]},"east":{"uv":[9,23],"uv_size":[0.25,1]},"south":{"uv":[23,9],"uv_size":[0.25,1]},"west":{"uv":[10,23],"uv_size":[0.25,1]},"up":{"uv":[37,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0653,0.2567,-0.6846],"size":[0.3275,0.945,0.0788],"pivot":[0.0788,0.4929,0],"rotation":[0,-120,0],"uv":{"north":{"uv":[23,10],"uv_size":[0.25,1]},"east":{"uv":[11,23],"uv_size":[0.25,1]},"south":{"uv":[23,11],"uv_size":[0.25,1]},"west":{"uv":[12,23],"uv_size":[0.25,1]},"up":{"uv":[37,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1047,0.2567,0.6058],"size":[0.3669,0.945,0.0788],"pivot":[0.0788,0.4929,0],"rotation":[0,-120,0],"uv":{"north":{"uv":[23,12],"uv_size":[0.25,1]},"east":{"uv":[13,23],"uv_size":[0.25,1]},"south":{"uv":[23,13],"uv_size":[0.25,1]},"west":{"uv":[14,23],"uv_size":[0.25,1]},"up":{"uv":[37,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1047,0.2567,-0.6846],"size":[0.3669,0.945,0.0788],"pivot":[0.0788,0.4929,0],"rotation":[0,-150,0],"uv":{"north":{"uv":[23,14],"uv_size":[0.25,1]},"east":{"uv":[15,23],"uv_size":[0.25,1]},"south":{"uv":[23,15],"uv_size":[0.25,1]},"west":{"uv":[16,23],"uv_size":[0.25,1]},"up":{"uv":[37,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1047,0.2567,0.6058],"size":[0.3669,0.945,0.0788],"pivot":[0.0788,0.4929,0],"rotation":[0,-150,0],"uv":{"north":{"uv":[23,16],"uv_size":[0.25,1]},"east":{"uv":[17,23],"uv_size":[0.25,1]},"south":{"uv":[23,17],"uv_size":[0.25,1]},"west":{"uv":[18,23],"uv_size":[0.25,1]},"up":{"uv":[37,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,37.25],"uv_size":[0.25,-0.25]}}}]},{"name":"bone3","parent":"hand","pivot":[0,0.8079,0],"rotation":[0,0,90],"cubes":[{"origin":[-0.1987,0.4142,0.6629],"size":[0.3975,0.1181,0.0788],"pivot":[0,0.4929,0],"rotation":[0,-30,0],"uv":{"north":{"uv":[1,34],"uv_size":[0.5,0.25]},"east":{"uv":[37,18],"uv_size":[0.25,0.25]},"south":{"uv":[34,1],"uv_size":[0.5,0.25]},"west":{"uv":[19,37],"uv_size":[0.25,0.25]},"up":{"uv":[2,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,2.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1987,0.4142,0.6629],"size":[0.3975,0.1181,0.0788],"pivot":[0,0.4929,0],"rotation":[0,-60,0],"uv":{"north":{"uv":[3,34],"uv_size":[0.5,0.25]},"east":{"uv":[37,19],"uv_size":[0.25,0.25]},"south":{"uv":[34,3],"uv_size":[0.5,0.25]},"west":{"uv":[20,37],"uv_size":[0.25,0.25]},"up":{"uv":[4,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,4.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1987,0.4142,0.6629],"size":[0.1378,0.1181,0.0788],"pivot":[0,0.4929,0],"rotation":[0,-90,0],"uv":{"north":{"uv":[37,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0609,0.4142,0.6629],"size":[0.1378,0.1181,0.0788],"pivot":[0,0.4929,0],"rotation":[0,-90,0],"uv":{"north":{"uv":[37,23],"uv_size":[0.25,0.25]},"east":{"uv":[24,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,24],"uv_size":[0.25,0.25]},"west":{"uv":[25,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1987,0.4142,0.6629],"size":[0.3975,0.1181,0.0788],"pivot":[0,0.4929,0],"rotation":[0,-120,0],"uv":{"north":{"uv":[5,34],"uv_size":[0.5,0.25]},"east":{"uv":[37,26],"uv_size":[0.25,0.25]},"south":{"uv":[34,5],"uv_size":[0.5,0.25]},"west":{"uv":[27,37],"uv_size":[0.25,0.25]},"up":{"uv":[6,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,6.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1987,0.4142,0.6629],"size":[0.3975,0.1181,0.0788],"pivot":[0,0.4929,0],"rotation":[0,-150,0],"uv":{"north":{"uv":[7,34],"uv_size":[0.5,0.25]},"east":{"uv":[37,27],"uv_size":[0.25,0.25]},"south":{"uv":[34,7],"uv_size":[0.5,0.25]},"west":{"uv":[28,37],"uv_size":[0.25,0.25]},"up":{"uv":[8,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,8.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1987,1.0836,0.6629],"size":[0.3975,0.1181,0.0788],"pivot":[0,1.1623,0],"rotation":[0,-30,0],"uv":{"north":{"uv":[9,34],"uv_size":[0.5,0.25]},"east":{"uv":[37,28],"uv_size":[0.25,0.25]},"south":{"uv":[34,9],"uv_size":[0.5,0.25]},"west":{"uv":[29,37],"uv_size":[0.25,0.25]},"up":{"uv":[10,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,10.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1987,1.0836,0.6629],"size":[0.3975,0.1181,0.0788],"pivot":[0,1.1623,0],"rotation":[0,-60,0],"uv":{"north":{"uv":[11,34],"uv_size":[0.5,0.25]},"east":{"uv":[37,29],"uv_size":[0.25,0.25]},"south":{"uv":[34,11],"uv_size":[0.5,0.25]},"west":{"uv":[30,37],"uv_size":[0.25,0.25]},"up":{"uv":[12,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,12.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1987,1.0836,0.6629],"size":[0.1378,0.1181,0.0788],"pivot":[0,1.1623,0],"rotation":[0,-90,0],"uv":{"north":{"uv":[37,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0609,1.0836,0.6629],"size":[0.1378,0.1181,0.0788],"pivot":[0,1.1623,0],"rotation":[0,-90,0],"uv":{"north":{"uv":[37,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1987,1.0836,0.6629],"size":[0.3975,0.1181,0.0788],"pivot":[0,1.1623,0],"rotation":[0,-120,0],"uv":{"north":{"uv":[13,34],"uv_size":[0.5,0.25]},"east":{"uv":[37,36],"uv_size":[0.25,0.25]},"south":{"uv":[34,13],"uv_size":[0.5,0.25]},"west":{"uv":[37,37],"uv_size":[0.25,0.25]},"up":{"uv":[14,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,14.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1987,1.0836,0.6629],"size":[0.3975,0.1181,0.0788],"pivot":[0,1.1623,0],"rotation":[0,-150,0],"uv":{"north":{"uv":[15,34],"uv_size":[0.5,0.25]},"east":{"uv":[0,38],"uv_size":[0.25,0.25]},"south":{"uv":[34,15],"uv_size":[0.5,0.25]},"west":{"uv":[38,0],"uv_size":[0.25,0.25]},"up":{"uv":[16,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,16.25],"uv_size":[0.5,-0.25]}}}]},{"name":"bone4","parent":"hand","pivot":[0,-0.4225,0],"cubes":[{"origin":[-0.4626,0.7292,-0.63],"size":[0.9252,0.0591,1.26],"uv":{"north":{"uv":[23,18],"uv_size":[1,0.25]},"east":{"uv":[21,9],"uv_size":[1.25,0.25]},"south":{"uv":[19,23],"uv_size":[1,0.25]},"west":{"uv":[10,21],"uv_size":[1.25,0.25]},"up":{"uv":[5,13],"uv_size":[1,1.25]},"down":{"uv":[13,7.25],"uv_size":[1,-1.25]}}},{"origin":[-0.463,0.7485,-0.719],"size":[0.9261,0.0204,1.4379],"inflate":-0.001,"uv":{"north":{"uv":[23,19],"uv_size":[1,0.25]},"east":{"uv":[20,6],"uv_size":[1.5,0.25]},"south":{"uv":[20,23],"uv_size":[1,0.25]},"west":{"uv":[7,20],"uv_size":[1.5,0.25]},"up":{"uv":[7,10],"uv_size":[1,1.5]},"down":{"uv":[10,9.5],"uv_size":[1,-1.5]}}},{"origin":[-0.4627,0.6898,-0.5119],"size":[0.9253,0.1378,0.1181],"pivot":[0,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[23,20],"uv_size":[1,0.25]},"east":{"uv":[11,38],"uv_size":[0.25,0.25]},"south":{"uv":[21,23],"uv_size":[1,0.25]},"west":{"uv":[38,11],"uv_size":[0.25,0.25]},"up":{"uv":[23,21],"uv_size":[1,0.25]},"down":{"uv":[22,23.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4623,0.6311,-0.3934],"size":[0.9246,0.2552,1.7022],"inflate":0.001,"pivot":[0,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[23,22],"uv_size":[1,0.25]},"east":{"uv":[19,11],"uv_size":[1.75,0.25]},"south":{"uv":[23,23],"uv_size":[1,0.25]},"west":{"uv":[19,12],"uv_size":[1.75,0.25]},"up":{"uv":[10,4],"uv_size":[1,1.75]},"down":{"uv":[10,7.75],"uv_size":[1,-1.75]}}},{"origin":[-0.4623,0.6803,1.3096],"size":[0.9246,0.1568,1.5053],"inflate":0.001,"pivot":[0,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[0,24],"uv_size":[1,0.25]},"east":{"uv":[20,7],"uv_size":[1.5,0.25]},"south":{"uv":[24,0],"uv_size":[1,0.25]},"west":{"uv":[20,8],"uv_size":[1.5,0.25]},"up":{"uv":[9,10],"uv_size":[1,1.5]},"down":{"uv":[10,11.5],"uv_size":[1,-1.5]}}},{"origin":[-0.4623,0.7197,2.8157],"size":[0.9246,0.078,0.9836],"inflate":0.001,"pivot":[0,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[1,24],"uv_size":[1,0.25]},"east":{"uv":[24,1],"uv_size":[1,0.25]},"south":{"uv":[2,24],"uv_size":[1,0.25]},"west":{"uv":[24,2],"uv_size":[1,0.25]},"up":{"uv":[15,6],"uv_size":[1,1]},"down":{"uv":[15,8],"uv_size":[1,-1]}}},{"origin":[-0.4619,0.7299,4.4304],"size":[0.9238,0.0576,1.2979],"inflate":0.002,"pivot":[0,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[3,24],"uv_size":[1,0.25]},"east":{"uv":[21,10],"uv_size":[1.25,0.25]},"south":{"uv":[24,3],"uv_size":[1,0.25]},"west":{"uv":[21,11],"uv_size":[1.25,0.25]},"up":{"uv":[13,8],"uv_size":[1,1.25]},"down":{"uv":[13,11.25],"uv_size":[1,-1.25]}}},{"origin":[-0.4627,0.2862,-0.0886],"size":[0.9253,0.3445,0.1772],"pivot":[0,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[4,24],"uv_size":[1,0.25]},"east":{"uv":[12,38],"uv_size":[0.25,0.25]},"south":{"uv":[24,4],"uv_size":[1,0.25]},"west":{"uv":[38,12],"uv_size":[0.25,0.25]},"up":{"uv":[5,24],"uv_size":[1,0.25]},"down":{"uv":[24,5.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4627,0.3846,0.0886],"size":[0.9253,0.7481,0.0689],"pivot":[0,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[17,17],"uv_size":[1,0.75]},"east":{"uv":[29,27],"uv_size":[0.25,0.75]},"south":{"uv":[0,18],"uv_size":[1,0.75]},"west":{"uv":[28,29],"uv_size":[0.25,0.75]},"up":{"uv":[6,24],"uv_size":[1,0.25]},"down":{"uv":[24,6.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4627,0.4536,0.1575],"size":[0.9253,0.6103,0.0788],"pivot":[0,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[19,7],"uv_size":[1,0.5]},"east":{"uv":[17,34],"uv_size":[0.25,0.5]},"south":{"uv":[19,8],"uv_size":[1,0.5]},"west":{"uv":[34,17],"uv_size":[0.25,0.5]},"up":{"uv":[7,24],"uv_size":[1,0.25]},"down":{"uv":[24,7.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4627,0.5225,0.2362],"size":[0.9253,0.4725,0.1181],"pivot":[0,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[19,9],"uv_size":[1,0.5]},"east":{"uv":[18,34],"uv_size":[0.25,0.5]},"south":{"uv":[19,10],"uv_size":[1,0.5]},"west":{"uv":[34,18],"uv_size":[0.25,0.5]},"up":{"uv":[8,24],"uv_size":[1,0.25]},"down":{"uv":[24,8.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4627,0.5717,0.3544],"size":[0.9253,0.3741,0.1477],"pivot":[0,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[9,24],"uv_size":[1,0.25]},"east":{"uv":[13,38],"uv_size":[0.25,0.25]},"south":{"uv":[24,9],"uv_size":[1,0.25]},"west":{"uv":[38,13],"uv_size":[0.25,0.25]},"up":{"uv":[10,24],"uv_size":[1,0.25]},"down":{"uv":[24,10.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4627,0.4043,-0.1575],"size":[0.9253,0.2264,0.0689],"pivot":[0,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[11,24],"uv_size":[1,0.25]},"east":{"uv":[14,38],"uv_size":[0.25,0.25]},"south":{"uv":[24,11],"uv_size":[1,0.25]},"west":{"uv":[38,14],"uv_size":[0.25,0.25]},"up":{"uv":[12,24],"uv_size":[1,0.25]},"down":{"uv":[24,12.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4627,0.4929,-0.2264],"size":[0.9253,0.1378,0.0689],"pivot":[0,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[13,24],"uv_size":[1,0.25]},"east":{"uv":[15,38],"uv_size":[0.25,0.25]},"south":{"uv":[24,13],"uv_size":[1,0.25]},"west":{"uv":[38,15],"uv_size":[0.25,0.25]},"up":{"uv":[14,24],"uv_size":[1,0.25]},"down":{"uv":[24,14.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4627,0.552,-0.2953],"size":[0.9253,0.0788,0.0689],"pivot":[0,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[15,24],"uv_size":[1,0.25]},"east":{"uv":[16,38],"uv_size":[0.25,0.25]},"south":{"uv":[24,15],"uv_size":[1,0.25]},"west":{"uv":[38,16],"uv_size":[0.25,0.25]},"up":{"uv":[16,24],"uv_size":[1,0.25]},"down":{"uv":[24,16.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4627,0.552,0.2264],"size":[0.9253,0.0788,0.0689],"pivot":[0,0.7587,0],"rotation":[90,0,0],"uv":{"north":{"uv":[17,24],"uv_size":[1,0.25]},"east":{"uv":[17,38],"uv_size":[0.25,0.25]},"south":{"uv":[24,17],"uv_size":[1,0.25]},"west":{"uv":[38,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,24],"uv_size":[1,0.25]},"down":{"uv":[24,18.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4627,0.4929,0.1575],"size":[0.9253,0.1378,0.0689],"pivot":[0,0.7587,0],"rotation":[90,0,0],"uv":{"north":{"uv":[19,24],"uv_size":[1,0.25]},"east":{"uv":[18,38],"uv_size":[0.25,0.25]},"south":{"uv":[24,19],"uv_size":[1,0.25]},"west":{"uv":[38,18],"uv_size":[0.25,0.25]},"up":{"uv":[20,24],"uv_size":[1,0.25]},"down":{"uv":[24,20.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4627,0.4043,0.0886],"size":[0.9253,0.2264,0.0689],"pivot":[0,0.7587,0],"rotation":[90,0,0],"uv":{"north":{"uv":[21,24],"uv_size":[1,0.25]},"east":{"uv":[19,38],"uv_size":[0.25,0.25]},"south":{"uv":[24,21],"uv_size":[1,0.25]},"west":{"uv":[38,19],"uv_size":[0.25,0.25]},"up":{"uv":[22,24],"uv_size":[1,0.25]},"down":{"uv":[24,22.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4627,0.2862,-0.0886],"size":[0.9253,0.3445,0.1772],"pivot":[0,0.7587,0],"rotation":[90,0,0],"uv":{"north":{"uv":[23,24],"uv_size":[1,0.25]},"east":{"uv":[20,38],"uv_size":[0.25,0.25]},"south":{"uv":[24,23],"uv_size":[1,0.25]},"west":{"uv":[38,20],"uv_size":[0.25,0.25]},"up":{"uv":[24,24],"uv_size":[1,0.25]},"down":{"uv":[0,25.25],"uv_size":[1,-0.25]}}},{"origin":[-0.462,0.7299,-0.6293],"size":[0.924,0.0576,0.1166],"inflate":0.002,"pivot":[0.0001,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[25,0],"uv_size":[1,0.25]},"east":{"uv":[21,38],"uv_size":[0.25,0.25]},"south":{"uv":[1,25],"uv_size":[1,0.25]},"west":{"uv":[38,21],"uv_size":[0.25,0.25]},"up":{"uv":[25,1],"uv_size":[1,0.25]},"down":{"uv":[2,25.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.7496,-0.7375],"size":[0.9238,0.0182,0.1068],"inflate":0.002,"pivot":[0,0.7587,0],"rotation":[-90,0,0],"uv":{"north":{"uv":[25,2],"uv_size":[1,0.25]},"east":{"uv":[22,38],"uv_size":[0.25,0.25]},"south":{"uv":[3,25],"uv_size":[1,0.25]},"west":{"uv":[38,22],"uv_size":[0.25,0.25]},"up":{"uv":[25,3],"uv_size":[1,0.25]},"down":{"uv":[4,25.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,1.4781,0.0106],"size":[0.9238,0.0182,0.1283],"inflate":0.002,"pivot":[0,1.497,0.0098],"rotation":[-79.6951,0,0],"uv":{"north":{"uv":[25,4],"uv_size":[1,0.25]},"east":{"uv":[23,38],"uv_size":[0.25,0.25]},"south":{"uv":[5,25],"uv_size":[1,0.25]},"west":{"uv":[38,23],"uv_size":[0.25,0.25]},"up":{"uv":[25,5],"uv_size":[1,0.25]},"down":{"uv":[6,25.25],"uv_size":[1,-0.25]}}},{"origin":[-0.462,1.311,0.0338],"size":[0.924,0.0576,0.156],"inflate":0.002,"pivot":[0.0001,1.3693,0.0331],"rotation":[-67.9451,0,0],"uv":{"north":{"uv":[25,6],"uv_size":[1,0.25]},"east":{"uv":[24,38],"uv_size":[0.25,0.25]},"south":{"uv":[7,25],"uv_size":[1,0.25]},"west":{"uv":[38,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,7],"uv_size":[1,0.25]},"down":{"uv":[8,25.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,1.2019,0.0382],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,1.2012,0.0374],"rotation":[-58.4451,0,0],"uv":{"north":{"uv":[25,8],"uv_size":[1,0.25]},"east":{"uv":[25,38],"uv_size":[0.25,0.25]},"south":{"uv":[9,25],"uv_size":[1,0.25]},"west":{"uv":[38,25],"uv_size":[0.25,0.25]},"up":{"uv":[25,9],"uv_size":[1,0.25]},"down":{"uv":[10,25.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,1.0677,0.1206],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,1.067,0.1199],"rotation":[-48.4451,0,0],"uv":{"north":{"uv":[25,10],"uv_size":[1,0.25]},"east":{"uv":[26,38],"uv_size":[0.25,0.25]},"south":{"uv":[11,25],"uv_size":[1,0.25]},"west":{"uv":[38,26],"uv_size":[0.25,0.25]},"up":{"uv":[25,11],"uv_size":[1,0.25]},"down":{"uv":[12,25.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.9499,0.2251],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,0.9491,0.2243],"rotation":[-38.4451,0,0],"uv":{"north":{"uv":[25,12],"uv_size":[1,0.25]},"east":{"uv":[27,38],"uv_size":[0.25,0.25]},"south":{"uv":[13,25],"uv_size":[1,0.25]},"west":{"uv":[38,27],"uv_size":[0.25,0.25]},"up":{"uv":[25,13],"uv_size":[1,0.25]},"down":{"uv":[14,25.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.8519,0.3484],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,0.8512,0.3477],"rotation":[-28.4452,0,0],"uv":{"north":{"uv":[25,14],"uv_size":[1,0.25]},"east":{"uv":[28,38],"uv_size":[0.25,0.25]},"south":{"uv":[15,25],"uv_size":[1,0.25]},"west":{"uv":[38,28],"uv_size":[0.25,0.25]},"up":{"uv":[25,15],"uv_size":[1,0.25]},"down":{"uv":[16,25.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.7769,0.4869],"size":[0.9238,0.0576,0.1265],"inflate":0.002,"pivot":[0,0.7762,0.4862],"rotation":[-19.6952,0,0],"uv":{"north":{"uv":[25,16],"uv_size":[1,0.25]},"east":{"uv":[29,38],"uv_size":[0.25,0.25]},"south":{"uv":[17,25],"uv_size":[1,0.25]},"west":{"uv":[38,29],"uv_size":[0.25,0.25]},"up":{"uv":[25,17],"uv_size":[1,0.25]},"down":{"uv":[18,25.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.7697,0.6273],"size":[0.9238,0.0182,0.0871],"inflate":0.002,"pivot":[0,0.7886,0.6266],"rotation":[-12.1951,0,0],"uv":{"north":{"uv":[25,18],"uv_size":[1,0.25]},"east":{"uv":[30,38],"uv_size":[0.25,0.25]},"south":{"uv":[19,25],"uv_size":[1,0.25]},"west":{"uv":[38,30],"uv_size":[0.25,0.25]},"up":{"uv":[25,19],"uv_size":[1,0.25]},"down":{"uv":[20,25.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,1.4781,-0.1389],"size":[0.9238,0.0182,0.1283],"inflate":0.002,"pivot":[0,1.497,-0.0098],"rotation":[79.6951,0,0],"uv":{"north":{"uv":[25,20],"uv_size":[1,0.25]},"east":{"uv":[31,38],"uv_size":[0.25,0.25]},"south":{"uv":[21,25],"uv_size":[1,0.25]},"west":{"uv":[38,31],"uv_size":[0.25,0.25]},"up":{"uv":[25,21],"uv_size":[1,0.25]},"down":{"uv":[22,25.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,1.2019,-0.1942],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,1.2012,-0.0374],"rotation":[58.4451,0,0],"uv":{"north":{"uv":[25,22],"uv_size":[1,0.25]},"east":{"uv":[32,38],"uv_size":[0.25,0.25]},"south":{"uv":[23,25],"uv_size":[1,0.25]},"west":{"uv":[38,32],"uv_size":[0.25,0.25]},"up":{"uv":[25,23],"uv_size":[1,0.25]},"down":{"uv":[24,25.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,1.311,-0.1898],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,1.3693,-0.0331],"rotation":[67.9451,0,0],"uv":{"north":{"uv":[25,24],"uv_size":[1,0.25]},"east":{"uv":[33,38],"uv_size":[0.25,0.25]},"south":{"uv":[25,25],"uv_size":[1,0.25]},"west":{"uv":[38,33],"uv_size":[0.25,0.25]},"up":{"uv":[0,26],"uv_size":[1,0.25]},"down":{"uv":[26,0.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,1.0677,-0.2766],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,1.067,-0.1199],"rotation":[48.4451,0,0],"uv":{"north":{"uv":[1,26],"uv_size":[1,0.25]},"east":{"uv":[34,38],"uv_size":[0.25,0.25]},"south":{"uv":[26,1],"uv_size":[1,0.25]},"west":{"uv":[38,34],"uv_size":[0.25,0.25]},"up":{"uv":[2,26],"uv_size":[1,0.25]},"down":{"uv":[26,2.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.9499,-0.3811],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,0.9491,-0.2243],"rotation":[38.4451,0,0],"uv":{"north":{"uv":[3,26],"uv_size":[1,0.25]},"east":{"uv":[35,38],"uv_size":[0.25,0.25]},"south":{"uv":[26,3],"uv_size":[1,0.25]},"west":{"uv":[38,35],"uv_size":[0.25,0.25]},"up":{"uv":[4,26],"uv_size":[1,0.25]},"down":{"uv":[26,4.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.8519,-0.5045],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,0.8512,-0.3477],"rotation":[28.4452,0,0],"uv":{"north":{"uv":[5,26],"uv_size":[1,0.25]},"east":{"uv":[36,38],"uv_size":[0.25,0.25]},"south":{"uv":[26,5],"uv_size":[1,0.25]},"west":{"uv":[38,36],"uv_size":[0.25,0.25]},"up":{"uv":[6,26],"uv_size":[1,0.25]},"down":{"uv":[26,6.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.7769,-0.6134],"size":[0.9238,0.0576,0.1265],"inflate":0.002,"pivot":[0,0.7762,-0.4862],"rotation":[19.6952,0,0],"uv":{"north":{"uv":[7,26],"uv_size":[1,0.25]},"east":{"uv":[37,38],"uv_size":[0.25,0.25]},"south":{"uv":[26,7],"uv_size":[1,0.25]},"west":{"uv":[38,37],"uv_size":[0.25,0.25]},"up":{"uv":[8,26],"uv_size":[1,0.25]},"down":{"uv":[26,8.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.7697,-0.7144],"size":[0.9238,0.0182,0.0871],"inflate":0.002,"pivot":[0,0.7886,-0.6266],"rotation":[12.1951,0,0],"uv":{"north":{"uv":[9,26],"uv_size":[1,0.25]},"east":{"uv":[38,38],"uv_size":[0.25,0.25]},"south":{"uv":[26,9],"uv_size":[1,0.25]},"west":{"uv":[0,39],"uv_size":[0.25,0.25]},"up":{"uv":[10,26],"uv_size":[1,0.25]},"down":{"uv":[26,10.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.7295,-0.7144],"size":[0.9238,0.0182,0.0871],"inflate":0.002,"pivot":[0,0.7288,-0.6266],"rotation":[-12.1951,0,0],"uv":{"north":{"uv":[11,26],"uv_size":[1,0.25]},"east":{"uv":[39,0],"uv_size":[0.25,0.25]},"south":{"uv":[26,11],"uv_size":[1,0.25]},"west":{"uv":[1,39],"uv_size":[0.25,0.25]},"up":{"uv":[12,26],"uv_size":[1,0.25]},"down":{"uv":[26,12.25],"uv_size":[1,-0.25]}}},{"origin":[-0.462,0.6829,-0.6134],"size":[0.9239,0.0576,0.1265],"inflate":0.002,"pivot":[0,0.7413,-0.4862],"rotation":[-19.6952,0,0],"uv":{"north":{"uv":[13,26],"uv_size":[1,0.25]},"east":{"uv":[39,1],"uv_size":[0.25,0.25]},"south":{"uv":[26,13],"uv_size":[1,0.25]},"west":{"uv":[2,39],"uv_size":[0.25,0.25]},"up":{"uv":[14,26],"uv_size":[1,0.25]},"down":{"uv":[26,14.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.6829,-0.4854],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,0.7413,-0.4862],"rotation":[-31.1952,0,0],"uv":{"north":{"uv":[15,26],"uv_size":[1,0.25]},"east":{"uv":[39,2],"uv_size":[0.25,0.25]},"south":{"uv":[26,15],"uv_size":[1,0.25]},"west":{"uv":[3,39],"uv_size":[0.25,0.25]},"up":{"uv":[16,26],"uv_size":[1,0.25]},"down":{"uv":[26,16.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.6014,-0.3507],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,0.6597,-0.3515],"rotation":[-48.1951,0,0],"uv":{"north":{"uv":[17,26],"uv_size":[1,0.25]},"east":{"uv":[39,3],"uv_size":[0.25,0.25]},"south":{"uv":[26,17],"uv_size":[1,0.25]},"west":{"uv":[4,39],"uv_size":[0.25,0.25]},"up":{"uv":[18,26],"uv_size":[1,0.25]},"down":{"uv":[26,18.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.4839,-0.2457],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,0.5423,-0.2465],"rotation":[-62.1951,0,0],"uv":{"north":{"uv":[19,26],"uv_size":[1,0.25]},"east":{"uv":[39,4],"uv_size":[0.25,0.25]},"south":{"uv":[26,19],"uv_size":[1,0.25]},"west":{"uv":[5,39],"uv_size":[0.25,0.25]},"up":{"uv":[20,26],"uv_size":[1,0.25]},"down":{"uv":[26,20.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.3446,-0.1723],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,0.403,-0.173],"rotation":[-73.6951,0,0],"uv":{"north":{"uv":[21,26],"uv_size":[1,0.25]},"east":{"uv":[39,5],"uv_size":[0.25,0.25]},"south":{"uv":[26,21],"uv_size":[1,0.25]},"west":{"uv":[6,39],"uv_size":[0.25,0.25]},"up":{"uv":[22,26],"uv_size":[1,0.25]},"down":{"uv":[26,22.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.1935,-0.128],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,0.2518,-0.1288],"rotation":[-81.1951,0,0],"uv":{"north":{"uv":[23,26],"uv_size":[1,0.25]},"east":{"uv":[39,6],"uv_size":[0.25,0.25]},"south":{"uv":[26,23],"uv_size":[1,0.25]},"west":{"uv":[7,39],"uv_size":[0.25,0.25]},"up":{"uv":[24,26],"uv_size":[1,0.25]},"down":{"uv":[26,24.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.0378,-0.1039],"size":[0.9238,0.0576,0.3135],"inflate":0.002,"pivot":[0,0.0961,-0.1047],"rotation":[-85.4451,0,0],"uv":{"north":{"uv":[25,26],"uv_size":[1,0.25]},"east":{"uv":[39,7],"uv_size":[0.25,0.25]},"south":{"uv":[26,25],"uv_size":[1,0.25]},"west":{"uv":[8,39],"uv_size":[0.25,0.25]},"up":{"uv":[26,26],"uv_size":[1,0.25]},"down":{"uv":[0,27.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,-0.2762,-0.0789],"size":[0.9238,0.0576,3.4635],"inflate":0.002,"pivot":[0,-0.2178,-0.0797],"rotation":[-88.1951,0,0],"uv":{"north":{"uv":[27,0],"uv_size":[1,0.25]},"east":{"uv":[14,16],"uv_size":[3.5,0.25]},"south":{"uv":[1,27],"uv_size":[1,0.25]},"west":{"uv":[16,14],"uv_size":[3.5,0.25]},"up":{"uv":[8,0],"uv_size":[1,3.5]},"down":{"uv":[8,7.5],"uv_size":[1,-3.5]}}},{"origin":[-0.462,-0.2762,-3.3846],"size":[0.9239,0.0576,3.4635],"inflate":0.002,"pivot":[0,-0.2178,0.0797],"rotation":[88.1951,0,0],"uv":{"north":{"uv":[27,1],"uv_size":[1,0.25]},"east":{"uv":[16,15],"uv_size":[3.5,0.25]},"south":{"uv":[2,27],"uv_size":[1,0.25]},"west":{"uv":[17,0],"uv_size":[3.5,0.25]},"up":{"uv":[8,8],"uv_size":[1,3.5]},"down":{"uv":[9,3.5],"uv_size":[1,-3.5]}}},{"origin":[-0.4619,0.0378,-0.2096],"size":[0.9238,0.0576,0.3135],"inflate":0.002,"pivot":[0,0.0961,0.1047],"rotation":[85.4451,0,0],"uv":{"north":{"uv":[27,2],"uv_size":[1,0.25]},"east":{"uv":[39,8],"uv_size":[0.25,0.25]},"south":{"uv":[3,27],"uv_size":[1,0.25]},"west":{"uv":[9,39],"uv_size":[0.25,0.25]},"up":{"uv":[27,3],"uv_size":[1,0.25]},"down":{"uv":[4,27.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.1935,-0.028],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,0.2518,0.1288],"rotation":[81.1951,0,0],"uv":{"north":{"uv":[27,4],"uv_size":[1,0.25]},"east":{"uv":[39,9],"uv_size":[0.25,0.25]},"south":{"uv":[5,27],"uv_size":[1,0.25]},"west":{"uv":[10,39],"uv_size":[0.25,0.25]},"up":{"uv":[27,5],"uv_size":[1,0.25]},"down":{"uv":[6,27.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.3446,0.0162],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,0.403,0.173],"rotation":[73.6951,0,0],"uv":{"north":{"uv":[27,6],"uv_size":[1,0.25]},"east":{"uv":[39,10],"uv_size":[0.25,0.25]},"south":{"uv":[7,27],"uv_size":[1,0.25]},"west":{"uv":[11,39],"uv_size":[0.25,0.25]},"up":{"uv":[27,7],"uv_size":[1,0.25]},"down":{"uv":[8,27.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.4839,0.0897],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,0.5423,0.2465],"rotation":[62.1951,0,0],"uv":{"north":{"uv":[27,8],"uv_size":[1,0.25]},"east":{"uv":[39,11],"uv_size":[0.25,0.25]},"south":{"uv":[9,27],"uv_size":[1,0.25]},"west":{"uv":[12,39],"uv_size":[0.25,0.25]},"up":{"uv":[27,9],"uv_size":[1,0.25]},"down":{"uv":[10,27.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.6014,0.1947],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,0.6597,0.3515],"rotation":[48.1951,0,0],"uv":{"north":{"uv":[27,10],"uv_size":[1,0.25]},"east":{"uv":[39,12],"uv_size":[0.25,0.25]},"south":{"uv":[11,27],"uv_size":[1,0.25]},"west":{"uv":[13,39],"uv_size":[0.25,0.25]},"up":{"uv":[27,11],"uv_size":[1,0.25]},"down":{"uv":[12,27.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.6829,0.3294],"size":[0.9238,0.0576,0.156],"inflate":0.002,"pivot":[0,0.7413,0.4862],"rotation":[31.1952,0,0],"uv":{"north":{"uv":[27,12],"uv_size":[1,0.25]},"east":{"uv":[39,13],"uv_size":[0.25,0.25]},"south":{"uv":[13,27],"uv_size":[1,0.25]},"west":{"uv":[14,39],"uv_size":[0.25,0.25]},"up":{"uv":[27,13],"uv_size":[1,0.25]},"down":{"uv":[14,27.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4618,0.6829,0.4869],"size":[0.9237,0.0576,0.1265],"inflate":0.002,"pivot":[-0.0001,0.7413,0.4862],"rotation":[19.6952,0,0],"uv":{"north":{"uv":[27,14],"uv_size":[1,0.25]},"east":{"uv":[39,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,27],"uv_size":[1,0.25]},"west":{"uv":[15,39],"uv_size":[0.25,0.25]},"up":{"uv":[27,15],"uv_size":[1,0.25]},"down":{"uv":[16,27.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4619,0.7295,0.6273],"size":[0.9238,0.0182,0.0871],"inflate":0.002,"pivot":[0,0.7288,0.6266],"rotation":[12.1951,0,0],"uv":{"north":{"uv":[27,16],"uv_size":[1,0.25]},"east":{"uv":[39,15],"uv_size":[0.25,0.25]},"south":{"uv":[17,27],"uv_size":[1,0.25]},"west":{"uv":[16,39],"uv_size":[0.25,0.25]},"up":{"uv":[27,17],"uv_size":[1,0.25]},"down":{"uv":[18,27.25],"uv_size":[1,-0.25]}}}]},{"name":"octagon","parent":"hand","pivot":[0,-6.8308,0],"cubes":[{"origin":[-0.0979,-6.9096,-0.2362],"size":[0.1957,0.3937,0.4725],"pivot":[0,-6.8308,0],"rotation":[0,-45,0],"uv":{"north":{"uv":[21,34],"uv_size":[0.25,0.5]},"east":{"uv":[27,18],"uv_size":[0.5,0.5]},"south":{"uv":[34,21],"uv_size":[0.25,0.5]},"west":{"uv":[19,27],"uv_size":[0.5,0.5]},"up":{"uv":[22,34],"uv_size":[0.25,0.5]},"down":{"uv":[34,22.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0979,-6.9096,-0.2362],"size":[0.1957,0.3937,0.4725],"uv":{"north":{"uv":[23,34],"uv_size":[0.25,0.5]},"east":{"uv":[27,19],"uv_size":[0.5,0.5]},"south":{"uv":[34,23],"uv_size":[0.25,0.5]},"west":{"uv":[20,27],"uv_size":[0.5,0.5]},"up":{"uv":[24,34],"uv_size":[0.25,0.5]},"down":{"uv":[34,24.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.2362,-6.9096,-0.0979],"size":[0.4725,0.3937,0.1957],"pivot":[0,-6.8308,0],"rotation":[0,-45,0],"uv":{"north":{"uv":[27,20],"uv_size":[0.5,0.5]},"east":{"uv":[25,34],"uv_size":[0.25,0.5]},"south":{"uv":[21,27],"uv_size":[0.5,0.5]},"west":{"uv":[34,25],"uv_size":[0.25,0.5]},"up":{"uv":[26,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,26.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2362,-6.9096,-0.0979],"size":[0.4725,0.3937,0.1957],"uv":{"north":{"uv":[27,21],"uv_size":[0.5,0.5]},"east":{"uv":[27,34],"uv_size":[0.25,0.5]},"south":{"uv":[22,27],"uv_size":[0.5,0.5]},"west":{"uv":[34,27],"uv_size":[0.25,0.5]},"up":{"uv":[28,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,28.25],"uv_size":[0.5,-0.25]}}}]},{"name":"octagon2","parent":"hand","pivot":[0,-7.2246,0],"cubes":[{"origin":[-0.0202,-7.5396,-0.0486],"size":[0.0403,0.63,0.0973],"pivot":[0,-7.2246,0],"rotation":[0,-45,0],"uv":{"north":{"uv":[23,30],"uv_size":[0.25,0.75]},"east":{"uv":[30,23],"uv_size":[0.25,0.75]},"south":{"uv":[24,30],"uv_size":[0.25,0.75]},"west":{"uv":[30,24],"uv_size":[0.25,0.75]},"up":{"uv":[39,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0202,-7.5396,-0.0486],"size":[0.0403,0.63,0.0973],"uv":{"north":{"uv":[25,30],"uv_size":[0.25,0.75]},"east":{"uv":[30,25],"uv_size":[0.25,0.75]},"south":{"uv":[26,30],"uv_size":[0.25,0.75]},"west":{"uv":[30,26],"uv_size":[0.25,0.75]},"up":{"uv":[39,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0486,-7.5396,-0.0202],"size":[0.0973,0.63,0.0403],"pivot":[0,-7.2246,0],"rotation":[0,-45,0],"uv":{"north":{"uv":[27,30],"uv_size":[0.25,0.75]},"east":{"uv":[30,27],"uv_size":[0.25,0.75]},"south":{"uv":[28,30],"uv_size":[0.25,0.75]},"west":{"uv":[30,28],"uv_size":[0.25,0.75]},"up":{"uv":[39,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0486,-7.5396,-0.0202],"size":[0.0973,0.63,0.0403],"uv":{"north":{"uv":[29,30],"uv_size":[0.25,0.75]},"east":{"uv":[30,29],"uv_size":[0.25,0.75]},"south":{"uv":[30,30],"uv_size":[0.25,0.75]},"west":{"uv":[0,31],"uv_size":[0.25,0.75]},"up":{"uv":[39,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0486,-7.5396,-0.0202],"size":[0.0788,0.3227,0.0403],"pivot":[-0.0486,-7.5396,0],"rotation":[0,0,-16.5835],"uv":{"north":{"uv":[39,26],"uv_size":[0.25,0.25]},"east":{"uv":[27,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,27],"uv_size":[0.25,0.25]},"west":{"uv":[28,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0486,-7.2246,-0.0497],"size":[0.0788,0.2734,0.0994],"pivot":[-0.0486,-7.5396,0],"rotation":[0,0,-16.5835],"uv":{"north":{"uv":[39,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0486,-6.9511,-0.0595],"size":[0.0788,0.0689,0.119],"pivot":[-0.0486,-7.5396,0],"rotation":[0,0,-16.5835],"uv":{"north":{"uv":[39,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0486,-7.5396,-0.0192],"size":[0.0788,0.6595,0.0394],"pivot":[-0.0486,-7.5396,0.0202],"rotation":[-6.75,0,-16.5835],"uv":{"north":{"uv":[31,0],"uv_size":[0.25,0.75]},"east":{"uv":[1,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,1],"uv_size":[0.25,0.75]},"west":{"uv":[2,31],"uv_size":[0.25,0.75]},"up":{"uv":[39,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0486,-7.5396,-0.0202],"size":[0.0788,0.6595,0.0394],"pivot":[-0.0486,-7.5396,-0.0202],"rotation":[6.75,0,-16.5835],"uv":{"north":{"uv":[31,2],"uv_size":[0.25,0.75]},"east":{"uv":[3,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,3],"uv_size":[0.25,0.75]},"west":{"uv":[4,31],"uv_size":[0.25,0.75]},"up":{"uv":[39,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0301,-7.5396,-0.0202],"size":[0.0788,0.3227,0.0403],"pivot":[0.0486,-7.5396,0],"rotation":[0,0,16.5835],"uv":{"north":{"uv":[39,37],"uv_size":[0.25,0.25]},"east":{"uv":[38,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,38],"uv_size":[0.25,0.25]},"west":{"uv":[39,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0301,-7.2246,-0.0497],"size":[0.0788,0.2734,0.0994],"pivot":[0.0486,-7.5396,0],"rotation":[0,0,16.5835],"uv":{"north":{"uv":[1,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0301,-6.9511,-0.0595],"size":[0.0788,0.0689,0.119],"pivot":[0.0486,-7.5396,0],"rotation":[0,0,16.5835],"uv":{"north":{"uv":[4,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0301,-7.5396,-0.0192],"size":[0.0788,0.6595,0.0394],"pivot":[0.0486,-7.5396,0.0202],"rotation":[-6.75,0,16.5835],"uv":{"north":{"uv":[31,4],"uv_size":[0.25,0.75]},"east":{"uv":[5,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,5],"uv_size":[0.25,0.75]},"west":{"uv":[6,31],"uv_size":[0.25,0.75]},"up":{"uv":[7,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0301,-7.5396,-0.0202],"size":[0.0788,0.6595,0.0394],"pivot":[0.0486,-7.5396,-0.0202],"rotation":[6.75,0,16.5835],"uv":{"north":{"uv":[31,6],"uv_size":[0.25,0.75]},"east":{"uv":[7,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,7],"uv_size":[0.25,0.75]},"west":{"uv":[8,31],"uv_size":[0.25,0.75]},"up":{"uv":[8,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-7.5096,-0.0202],"size":[0.0788,0.3227,0.0403],"pivot":[0,-7.1525,0],"rotation":[-15.9294,-42.6637,22.8385],"uv":{"north":{"uv":[9,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-7.1946,-0.0497],"size":[0.0788,0.2734,0.0994],"pivot":[0,-7.1525,0],"rotation":[-15.9294,-42.6637,22.8385],"uv":{"north":{"uv":[12,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-6.9211,-0.0595],"size":[0.0788,0.0689,0.119],"pivot":[0,-7.1525,0],"rotation":[-15.9294,-42.6637,22.8385],"uv":{"north":{"uv":[15,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-7.5047,0.0226],"size":[0.0788,0.6595,0.0394],"pivot":[0,-7.1525,0],"rotation":[-22.6794,-42.6637,22.8385],"uv":{"north":{"uv":[31,8],"uv_size":[0.25,0.75]},"east":{"uv":[9,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,9],"uv_size":[0.25,0.75]},"west":{"uv":[10,31],"uv_size":[0.25,0.75]},"up":{"uv":[18,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-7.5047,-0.062],"size":[0.0788,0.6595,0.0394],"pivot":[0,-7.1525,0],"rotation":[-9.1794,-42.6637,22.8385],"uv":{"north":{"uv":[31,10],"uv_size":[0.25,0.75]},"east":{"uv":[11,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,11],"uv_size":[0.25,0.75]},"west":{"uv":[12,31],"uv_size":[0.25,0.75]},"up":{"uv":[19,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-7.5047,0.0226],"size":[0.0788,0.6595,0.0394],"pivot":[0,-7.1525,0],"rotation":[9.1794,-42.6637,-22.8385],"uv":{"north":{"uv":[31,12],"uv_size":[0.25,0.75]},"east":{"uv":[13,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,13],"uv_size":[0.25,0.75]},"west":{"uv":[14,31],"uv_size":[0.25,0.75]},"up":{"uv":[20,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-6.9211,-0.0595],"size":[0.0788,0.0689,0.119],"pivot":[0,-7.1525,0],"rotation":[15.9294,-42.6637,-22.8385],"uv":{"north":{"uv":[21,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,21],"uv_size":[0.25,0.25]},"south":{"uv":[22,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,22],"uv_size":[0.25,0.25]},"up":{"uv":[23,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-7.1946,-0.0497],"size":[0.0788,0.2734,0.0994],"pivot":[0,-7.1525,0],"rotation":[15.9294,-42.6637,-22.8385],"uv":{"north":{"uv":[24,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-7.5047,-0.062],"size":[0.0788,0.6595,0.0394],"pivot":[0,-7.1525,0],"rotation":[22.6794,-42.6637,-22.8385],"uv":{"north":{"uv":[31,14],"uv_size":[0.25,0.75]},"east":{"uv":[15,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,15],"uv_size":[0.25,0.75]},"west":{"uv":[16,31],"uv_size":[0.25,0.75]},"up":{"uv":[27,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-7.5096,-0.0202],"size":[0.0788,0.3227,0.0403],"pivot":[0,-7.1525,0],"rotation":[15.9294,-42.6637,-22.8385],"uv":{"north":{"uv":[28,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-7.5096,-0.0202],"size":[0.0788,0.3227,0.0403],"pivot":[0,-7.1525,0],"rotation":[-90,-73.4165,90],"uv":{"north":{"uv":[31,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-7.1946,-0.0497],"size":[0.0788,0.2734,0.0994],"pivot":[0,-7.1525,0],"rotation":[-90,-73.4165,90],"uv":{"north":{"uv":[34,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-6.9211,-0.0595],"size":[0.0788,0.0689,0.119],"pivot":[0,-7.1525,0],"rotation":[-90,-73.4165,90],"uv":{"north":{"uv":[37,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-7.5047,0.0226],"size":[0.0788,0.6595,0.0394],"pivot":[0,-7.1525,0],"rotation":[-96.75,-73.4165,90],"uv":{"north":{"uv":[31,16],"uv_size":[0.25,0.75]},"east":{"uv":[17,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,17],"uv_size":[0.25,0.75]},"west":{"uv":[18,31],"uv_size":[0.25,0.75]},"up":{"uv":[40,40],"uv_size":[0.25,0.25]},"down":{"uv":[0,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-7.5047,-0.062],"size":[0.0788,0.6595,0.0394],"pivot":[0,-7.1525,0],"rotation":[-83.25,-73.4165,90],"uv":{"north":{"uv":[31,18],"uv_size":[0.25,0.75]},"east":{"uv":[19,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,19],"uv_size":[0.25,0.75]},"west":{"uv":[20,31],"uv_size":[0.25,0.75]},"up":{"uv":[41,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-7.5047,0.0226],"size":[0.0788,0.6595,0.0394],"pivot":[0,-7.1525,0],"rotation":[83.25,-73.4165,-90],"uv":{"north":{"uv":[31,20],"uv_size":[0.25,0.75]},"east":{"uv":[21,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,21],"uv_size":[0.25,0.75]},"west":{"uv":[22,31],"uv_size":[0.25,0.75]},"up":{"uv":[41,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-6.9211,-0.0595],"size":[0.0788,0.0689,0.119],"pivot":[0,-7.1525,0],"rotation":[90,-73.4165,-90],"uv":{"north":{"uv":[41,2],"uv_size":[0.25,0.25]},"east":{"uv":[3,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,3],"uv_size":[0.25,0.25]},"west":{"uv":[4,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,4],"uv_size":[0.25,0.25]},"down":{"uv":[5,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-7.1946,-0.0497],"size":[0.0788,0.2734,0.0994],"pivot":[0,-7.1525,0],"rotation":[90,-73.4165,-90],"uv":{"north":{"uv":[41,5],"uv_size":[0.25,0.25]},"east":{"uv":[6,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,6],"uv_size":[0.25,0.25]},"west":{"uv":[7,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-7.5047,-0.062],"size":[0.0788,0.6595,0.0394],"pivot":[0,-7.1525,0],"rotation":[96.75,-73.4165,-90],"uv":{"north":{"uv":[31,22],"uv_size":[0.25,0.75]},"east":{"uv":[23,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,23],"uv_size":[0.25,0.75]},"west":{"uv":[24,31],"uv_size":[0.25,0.75]},"up":{"uv":[41,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-7.5096,-0.0202],"size":[0.0788,0.3227,0.0403],"pivot":[0,-7.1525,0],"rotation":[90,-73.4165,-90],"uv":{"north":{"uv":[41,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-7.5096,-0.0202],"size":[0.0788,0.3227,0.0403],"pivot":[0,-7.1525,0],"rotation":[-164.0706,-42.6637,157.1615],"uv":{"north":{"uv":[41,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-7.1946,-0.0497],"size":[0.0788,0.2734,0.0994],"pivot":[0,-7.1525,0],"rotation":[-164.0706,-42.6637,157.1615],"uv":{"north":{"uv":[41,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-6.9211,-0.0595],"size":[0.0788,0.0689,0.119],"pivot":[0,-7.1525,0],"rotation":[-164.0706,-42.6637,157.1615],"uv":{"north":{"uv":[41,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-7.5047,0.0226],"size":[0.0788,0.6595,0.0394],"pivot":[0,-7.1525,0],"rotation":[-170.8206,-42.6637,157.1615],"uv":{"north":{"uv":[31,24],"uv_size":[0.25,0.75]},"east":{"uv":[25,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,25],"uv_size":[0.25,0.75]},"west":{"uv":[26,31],"uv_size":[0.25,0.75]},"up":{"uv":[41,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-7.5047,-0.062],"size":[0.0788,0.6595,0.0394],"pivot":[0,-7.1525,0],"rotation":[-157.3206,-42.6637,157.1615],"uv":{"north":{"uv":[31,26],"uv_size":[0.25,0.75]},"east":{"uv":[27,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,27],"uv_size":[0.25,0.75]},"west":{"uv":[28,31],"uv_size":[0.25,0.75]},"up":{"uv":[41,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-7.5047,0.0226],"size":[0.0788,0.6595,0.0394],"pivot":[0,-7.1525,0],"rotation":[157.3206,-42.6637,-157.1615],"uv":{"north":{"uv":[31,28],"uv_size":[0.25,0.75]},"east":{"uv":[29,31],"uv_size":[0.25,0.75]},"south":{"uv":[31,29],"uv_size":[0.25,0.75]},"west":{"uv":[30,31],"uv_size":[0.25,0.75]},"up":{"uv":[41,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-6.9211,-0.0595],"size":[0.0788,0.0689,0.119],"pivot":[0,-7.1525,0],"rotation":[164.0706,-42.6637,-157.1615],"uv":{"north":{"uv":[41,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-7.1946,-0.0497],"size":[0.0788,0.2734,0.0994],"pivot":[0,-7.1525,0],"rotation":[164.0706,-42.6637,-157.1615],"uv":{"north":{"uv":[41,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-7.5047,-0.062],"size":[0.0788,0.6595,0.0394],"pivot":[0,-7.1525,0],"rotation":[170.8206,-42.6637,-157.1615],"uv":{"north":{"uv":[31,30],"uv_size":[0.25,0.75]},"east":{"uv":[31,31],"uv_size":[0.25,0.75]},"south":{"uv":[0,32],"uv_size":[0.25,0.75]},"west":{"uv":[32,0],"uv_size":[0.25,0.75]},"up":{"uv":[41,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1571,-7.5096,-0.0202],"size":[0.0788,0.3227,0.0403],"pivot":[0,-7.1525,0],"rotation":[164.0706,-42.6637,-157.1615],"uv":{"north":{"uv":[41,31],"uv_size":[0.25,0.25]},"east":{"uv":[32,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,32],"uv_size":[0.25,0.25]},"west":{"uv":[33,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,41.25],"uv_size":[0.25,-0.25]}}}]},{"name":"constraint","pivot":[-0.0156,8.125,1.9375]},{"name":"camera","pivot":[3.4563,3.4656,-0.7687]},{"name":"view","pivot":[0,0,0]},{"name":"refit_view","parent":"view","pivot":[22.475,5.55,0.2],"rotation":[0,90,0]},{"name":"idle_view","parent":"view","pivot":[-4.7,2,-1],"rotation":[0,-1,0]},{"name":"positioning","pivot":[-0.0156,4.125,4.9375]},{"name":"ground","parent":"positioning","pivot":[0,0,0]},{"name":"thirdperson_hand","parent":"positioning","pivot":[-0.0156,6.125,-2.0625]},{"name":"fixed","parent":"positioning","pivot":[0.7969,5.125,-1.0625],"rotation":[0,90,0]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/push.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/push.anim.json new file mode 100644 index 0000000..97ddee9 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/push.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"draw":{"loop":true,"animation_length":0.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[137.367,4.122,-55.115],"0.04":[137.366,4.121,-55.119],"0.08":[137.369,4.122,-55.116],"0.12":[137.371,4.121,-55.117],"0.17":[136.519,3.082,-55.599],"0.21":[129.674,-4.621,-59.013],"0.25":[116.92,-16.165,-63.624],"0.29":[103.665,-24.834,-68.684],"0.33":[98.129,-28.732,-76.417],"0.38":[99.059,-31.479,-87.901],"0.42":[103.617,-33.271,-102.831],"0.46":[110.551,-33.134,-119.229],"0.5":[117.793,-30.564,-134.373],"0.54":[123.295,-26.296,-146.078],"0.58":[127.566,-19.507,-155.652],"0.62":[130.296,-9.419,-164.013],"0.67":[127.988,-5.471,-163.136],"0.71":[120.675,-7.338,-155.568],"0.75":[112.917,-9.438,-148.003],"0.79":[108.72,-11.062,-142.007],"0.83":[106.746,-12.67,-136.566],"0.88":[106.599,-13.079,-136.166],"0.92":[108.143,-12.481,-141.034],"0.96":[109.371,-11.907,-144.762]},"position":{"0.0":[-6,-37.575,-9.358],"0.12":[-6,-37.575,-9.358],"0.17":[-6.114,-37.363,-9.518],"0.21":[-7.017,-35.657,-10.763],"0.25":[-8.632,-32.528,-12.813],"0.29":[-10.215,-29.277,-14.646],"0.33":[-10.922,-27.408,-15.356],"0.38":[-11.134,-26.414,-15.438],"0.42":[-11.255,-25.686,-15.476],"0.46":[-11.315,-25.19,-15.483],"0.5":[-11.319,-24.917,-15.475],"0.54":[-11.314,-24.798,-15.466],"0.58":[-11.327,-24.95,-15.203],"0.62":[-11.369,-25.523,-14.407],"0.67":[-11.395,-26.15,-13.852],"0.71":[-11.368,-26.754,-13.82],"0.75":[-11.368,-27.239,-13.828],"0.79":[-11.442,-27.427,-13.512],"0.83":[-11.509,-27.445,-13.1],"0.88":[-11.5,-27.433,-13.075],"0.92":[-11.394,-27.402,-13.481],"0.96":[-11.314,-27.377,-13.795]}},"push_r":{"rotation":{"0.0":[95.353,-64.251,26.906],"0.04":[102.409,-64.253,26.892],"0.08":[107.136,-64.253,26.886],"0.12":[104.134,-64.253,26.924],"0.17":[80.305,-63.872,30.987],"0.21":[12.514,-55.446,56.785],"0.25":[-63.923,-28.467,76.898],"0.29":[-128.749,8.234,86.058],"0.33":[-166.544,39.875,104.057],"0.38":[-163.659,51.109,136.467],"0.42":[-141.978,34.02,163.278],"0.46":[-116.377,-2.262,181],"0.5":[-94.927,-39.372,202.055],"0.54":[-88.88,-63.702,231.403],"0.58":[-109.708,-77.788,285.02],"0.62":[-151.556,-75.665,357.932],"0.67":[-128.794,-74.312,364.958],"0.71":[-51.807,-77.034,315.298],"0.75":[-20.381,-75.5,290.977],"0.79":[-12.656,-76.103,282.875],"0.83":[-6.4,-76.372,276.237],"0.88":[-1.682,-76.458,271.18],"0.92":[1.239,-76.459,268.016],"0.96":[2.311,-76.462,266.827]},"position":{"0.0":[6.908,14.141,-4.274],"0.04":[6.906,12.516,-4.286],"0.08":[6.904,10.702,-4.285],"0.12":[6.912,9.385,-4.285],"0.17":[6.829,9.448,-4.183],"0.21":[6.192,10.251,-3.517],"0.25":[4.876,10.155,-3.05],"0.29":[3.986,10.31,-4.52],"0.33":[4.594,12.388,-5.676],"0.38":[5.41,14.024,-5.705],"0.42":[5.719,15.251,-5.324],"0.46":[6.209,16.619,-4.384],"0.5":[7.357,16.994,-3.85],"0.54":[7.859,16.099,-3.975],"0.58":[7.548,14.496,-4.293],"0.62":[6.768,13.106,-4.507],"0.67":[5.917,12.736,-4.154],"0.71":[5.309,13.046,-3.433],"0.75":[5.196,13.153,-3.283],"0.79":[5.223,13.062,-3.341],"0.83":[5.24,12.98,-3.396],"0.88":[5.25,12.904,-3.442],"0.92":[5.26,12.835,-3.478],"0.96":[5.258,12.815,-3.488]}},"knife_and_left":{"rotation":{"0.0":[-110.058,-115.389,17.928],"0.04":[-110.272,-118.2,21.795],"0.08":[-110.44,-122.06,27.709],"0.12":[-110.531,-126.353,35.524],"0.17":[-110.432,-130.619,44.895],"0.21":[-110.685,-134.209,55.662],"0.25":[-111.653,-136.943,67.352],"0.29":[-113.62,-138.849,79.398],"0.33":[-117.074,-139.952,91.111],"0.38":[-122.918,-140.587,103.299],"0.42":[-132.454,-141.746,118.516],"0.46":[-142.187,-144.059,131.94],"0.5":[-145.671,-142.875,133.91],"0.54":[-134.216,-128.17,112.663],"0.58":[-89.273,-117.56,53.803],"0.62":[-58.012,-125.121,12.114],"0.67":[-53.823,-128.857,5.076],"0.71":[-53.049,-131.19,3.12],"0.75":[-53.032,-132.758,2.719],"0.79":[-51.849,-134.322,1.017],"0.83":[-48.291,-136.478,-3.786],"0.88":[-44.172,-138.893,-9.303],"0.92":[-40.821,-141.06,-13.717],"0.96":[-39.341,-142.106,-15.654]},"position":{"0.0":[16.634,-39.283,-13.13],"0.04":[16.471,-38.002,-13.409],"0.08":[16.246,-36.142,-13.807],"0.12":[15.982,-33.887,-14.284],"0.17":[15.701,-31.44,-14.867],"0.21":[15.445,-29.037,-15.434],"0.25":[15.243,-26.885,-15.974],"0.29":[15.112,-25.165,-16.47],"0.33":[15.1,-24.184,-16.876],"0.38":[15.181,-23.903,-17.135],"0.42":[15.241,-23.886,-17.24],"0.46":[15.286,-23.925,-17.263],"0.5":[15.534,-24.041,-17.337],"0.54":[16.551,-24.629,-17.318],"0.58":[18.019,-25.537,-17.179],"0.62":[19.015,-26.188,-17.05],"0.67":[19.18,-26.493,-17.076],"0.71":[19.172,-26.812,-17.184],"0.75":[19.071,-27.066,-17.306],"0.79":[19.013,-27.182,-17.366],"0.83":[18.881,-26.908,-17.283],"0.88":[18.637,-26.376,-17.116],"0.92":[18.398,-25.843,-16.943],"0.96":[18.269,-25.58,-16.857]}},"push_l":{"rotation":{"0.0":[0.217,130.01,-51.913],"0.04":[-18.348,132.976,-43.014],"0.08":[-38.163,136.597,-35.038],"0.12":[-57.046,140.306,-28.555],"0.17":[-71.394,143.372,-24.289],"0.21":[-78.788,144.922,-21.894],"0.25":[-68.93,143.699,-22.268],"0.29":[-31.892,138.758,-26.173],"0.33":[11.275,132.545,-33.244],"0.38":[37.511,119.427,-40.374],"0.42":[39.209,94.886,-52.611],"0.46":[59.914,80.696,-33.421],"0.5":[59.935,80.68,-33.398],"0.54":[59.96,80.688,-33.377],"0.58":[59.944,80.671,-33.389],"0.62":[59.841,80.695,-33.484],"0.67":[59.96,80.705,-33.374],"0.71":[59.992,80.703,-33.343],"0.75":[60.03,80.699,-33.295],"0.79":[60.018,80.706,-33.317],"0.83":[59.923,80.691,-33.398],"0.88":[60.02,80.701,-33.313],"0.92":[59.98,80.701,-33.349],"0.96":[60.047,80.698,-33.283]},"position":{"0.0":[-2.228,7.708,16.247],"0.04":[-3.95,9.675,15.151],"0.08":[-5.058,11.681,13.786],"0.12":[-5.603,13.278,12.229],"0.17":[-5.83,14.234,10.758],"0.21":[-6.004,14.826,9.642],"0.25":[-6.562,15.07,9.535],"0.29":[-7.736,13.932,10.722],"0.33":[-7.554,11.374,11.05],"0.38":[-6.682,9.577,10.287],"0.42":[-6.353,8.28,9.27],"0.46":[-6.314,7.878,8.74],"0.5":[-6.313,7.873,8.743],"0.54":[-6.317,7.876,8.742],"0.58":[-6.316,7.882,8.742],"0.62":[-6.309,7.881,8.747],"0.67":[-6.318,7.879,8.742],"0.71":[-6.311,7.881,8.739],"0.75":[-6.313,7.875,8.732],"0.79":[-6.311,7.872,8.727],"0.83":[-6.315,7.867,8.732],"0.88":[-6.313,7.87,8.726],"0.92":[-6.311,7.875,8.729],"0.96":[-6.319,7.876,8.732]}},"righthand":{"rotation":[68.61834,-72.8672,-65.18833],"position":[0.83819,4.3663,-0.97781],"scale":[1,1.5,1]},"lefthand":{"rotation":[-90,-85,90],"position":[1,3.5,2.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_push_draw"}}},"inspect":{"loop":"hold_on_last_frame","animation_length":3.67,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[108.595,-9.133,-148.453],"0.04":[107.618,-7.41,-149.887],"0.08":[107.533,-6.508,-146.806],"0.12":[108.989,-5.687,-139.713],"0.17":[112.862,-9.067,-124.776],"0.21":[118.909,-19.202,-108.017],"0.25":[128.219,-29.879,-102.777],"0.29":[137.205,-36.499,-106.787],"0.33":[135.332,-37.129,-112.504],"0.38":[131.586,-35.339,-118.575],"0.42":[132.062,-30.139,-123.559],"0.46":[132.442,-19.634,-123.418],"0.5":[129.969,-7.99,-120.456],"0.54":[128.196,-2.07,-119.103],"0.58":[129.333,-3.656,-121.728],"0.62":[132.38,-8.337,-127.547],"0.67":[134.832,-11.775,-130.712],"0.71":[137.706,-14.251,-131.32],"0.75":[141.085,-16.545,-131.134],"0.79":[143.808,-18.589,-130.882],"0.83":[144.675,-20.017,-131.083],"0.88":[144.867,-20.98,-131.379],"0.92":[145.011,-21.646,-131.584],"0.96":[145.117,-22.103,-131.731],"1.0":[145.16,-22.404,-131.806],"1.04":[145.172,-22.666,-131.819],"1.08":[145.18,-22.968,-131.809],"1.12":[145.19,-23.375,-131.755],"1.17":[145.34,-23.889,-131.592],"1.21":[145.568,-24.407,-131.32],"1.25":[145.839,-24.901,-131.015],"1.29":[146.103,-25.306,-130.728],"1.33":[146.268,-25.548,-130.55],"1.38":[146.328,-25.623,-130.489],"1.42":[146.331,-25.615,-130.497],"1.46":[146.328,-25.571,-130.513],"1.5":[146.328,-25.456,-130.544],"1.54":[146.325,-25.261,-130.607],"1.58":[146.3,-24.893,-130.67],"1.62":[146.2,-24.023,-130.629],"1.67":[145.905,-22.506,-130.587],"1.71":[145.408,-20.662,-130.897],"1.75":[144.611,-18.518,-131.606],"1.79":[143.507,-16.142,-132.624],"1.83":[142.163,-13.806,-133.847],"1.88":[140.71,-11.741,-135.088],"1.92":[139.25,-10.118,-136.161],"1.96":[137.911,-9.059,-136.853],"2.0":[136.775,-8.667,-136.979],"2.04":[135.747,-8.518,-136.855],"2.08":[134.879,-8.488,-136.637],"2.12":[134.233,-8.499,-136.43],"2.17":[133.944,-8.454,-136.387],"2.21":[133.92,-8.31,-136.515],"2.25":[133.999,-8.113,-136.699],"2.29":[134.159,-7.894,-136.888],"2.33":[134.431,-7.678,-137.041],"2.38":[134.848,-7.468,-137.165],"2.42":[135.428,-7.314,-137.198],"2.46":[136.159,-7.527,-136.883],"2.5":[137.018,-8.395,-136.016],"2.54":[137.925,-9.698,-134.838],"2.58":[138.826,-11.324,-133.497],"2.62":[139.702,-13.109,-132.163],"2.67":[140.504,-14.88,-130.966],"2.71":[141.243,-16.426,-130.052],"2.75":[141.904,-17.561,-129.502],"2.79":[142.498,-18.189,-129.383],"2.83":[143.014,-18.584,-129.51],"2.88":[143.454,-18.917,-129.721],"2.92":[143.816,-19.172,-129.99],"2.96":[144.113,-19.367,-130.289],"3.0":[144.33,-19.49,-130.577],"3.04":[144.491,-19.582,-130.804],"3.08":[144.909,-19.671,-131.135],"3.12":[138.139,-17.867,-127.016],"3.17":[123.755,-14.518,-118.368],"3.21":[123.766,-22.78,-113.582],"3.25":[122.903,-36.815,-106.979],"3.29":[118.135,-42.873,-100.216],"3.33":[115.649,-44.29,-97.049],"3.38":[116.35,-42.708,-98.411],"3.42":[120.603,-34.506,-106.842],"3.46":[121.748,-23.216,-117.274],"3.5":[116.694,-14.642,-130.632],"3.54":[110.909,-11.716,-141.038],"3.58":[109.038,-11.941,-141.92],"3.62":[108.416,-12.418,-140.523],"3.67":[108.336,-12.658,-140.141]},"position":{"0.0":[-11.658,-25.517,-12.297],"0.04":[-11.639,-25.45,-11.795],"0.08":[-11.712,-25.52,-11.851],"0.12":[-11.809,-25.684,-12.236],"0.17":[-11.803,-25.863,-12.814],"0.21":[-11.817,-25.894,-13.476],"0.25":[-12.104,-25.43,-13.884],"0.29":[-12.504,-24.887,-14.162],"0.33":[-12.937,-24.809,-14.58],"0.38":[-13.335,-24.888,-14.92],"0.42":[-13.422,-24.962,-15.051],"0.46":[-13.218,-25.104,-15.138],"0.5":[-12.924,-25.29,-15.253],"0.54":[-12.74,-25.379,-15.316],"0.58":[-12.733,-25.333,-15.296],"0.62":[-12.81,-25.21,-15.234],"0.67":[-12.904,-25.092,-15.186],"0.71":[-13.011,-24.977,-15.15],"0.75":[-13.126,-24.867,-15.121],"0.79":[-13.219,-24.783,-15.102],"0.83":[-13.275,-24.742,-15.1],"0.88":[-13.305,-24.729,-15.104],"0.92":[-13.325,-24.723,-15.108],"0.96":[-13.339,-24.717,-15.113],"1.0":[-13.352,-24.719,-15.118],"1.04":[-13.362,-24.718,-15.122],"1.08":[-13.375,-24.71,-15.127],"1.12":[-13.391,-24.696,-15.13],"1.17":[-13.405,-24.664,-15.131],"1.21":[-13.429,-24.63,-15.135],"1.25":[-13.458,-24.593,-15.135],"1.29":[-13.483,-24.556,-15.135],"1.33":[-13.506,-24.529,-15.135],"1.38":[-13.524,-24.505,-15.135],"1.42":[-13.539,-24.489,-15.134],"1.46":[-13.552,-24.478,-15.135],"1.5":[-13.558,-24.472,-15.136],"1.54":[-13.564,-24.47,-15.137],"1.58":[-13.575,-24.472,-15.136],"1.62":[-13.605,-24.499,-15.13],"1.67":[-13.64,-24.552,-15.13],"1.71":[-13.645,-24.605,-15.131],"1.75":[-13.612,-24.676,-15.121],"1.79":[-13.538,-24.775,-15.095],"1.83":[-13.437,-24.886,-15.056],"1.88":[-13.33,-25.006,-15.012],"1.92":[-13.229,-25.12,-14.969],"1.96":[-13.145,-25.22,-14.934],"2.0":[-13.098,-25.293,-14.912],"2.04":[-13.071,-25.353,-14.897],"2.08":[-13.059,-25.4,-14.887],"2.12":[-13.054,-25.434,-14.881],"2.17":[-13.059,-25.449,-14.875],"2.21":[-13.053,-25.451,-14.87],"2.25":[-13.048,-25.444,-14.869],"2.29":[-13.043,-25.433,-14.87],"2.33":[-13.035,-25.423,-14.867],"2.38":[-13.029,-25.408,-14.865],"2.42":[-13.033,-25.388,-14.864],"2.46":[-13.051,-25.353,-14.866],"2.5":[-13.093,-25.291,-14.874],"2.54":[-13.151,-25.216,-14.888],"2.58":[-13.221,-25.133,-14.909],"2.62":[-13.29,-25.047,-14.93],"2.67":[-13.353,-24.97,-14.956],"2.71":[-13.399,-24.904,-14.978],"2.75":[-13.423,-24.864,-14.998],"2.79":[-13.422,-24.843,-15.015],"2.83":[-13.407,-24.824,-15.029],"2.88":[-13.385,-24.804,-15.042],"2.92":[-13.361,-24.783,-15.055],"2.96":[-13.336,-24.764,-15.066],"3.0":[-13.314,-24.751,-15.077],"3.04":[-13.293,-24.74,-15.084],"3.08":[-13.303,-24.694,-15.008],"3.12":[-13.679,-25.333,-15.02],"3.17":[-14.573,-26.731,-14.976],"3.21":[-14.757,-26.119,-14.608],"3.25":[-14.661,-25.059,-14.265],"3.29":[-14.529,-24.814,-14.504],"3.33":[-14.383,-25.019,-15.052],"3.38":[-14.04,-25.486,-15.371],"3.42":[-13.401,-26.287,-15.287],"3.46":[-12.773,-27.034,-14.645],"3.5":[-12.383,-27.576,-13.123],"3.54":[-12.14,-27.94,-11.799],"3.58":[-11.952,-27.724,-12.098],"3.62":[-11.729,-27.2,-13.12],"3.67":[-11.634,-27.048,-13.545]}},"push_r":{"rotation":{"0.0":[-19.388,-77.445,-70.477],"0.04":[-8.269,-81.15,-79.427],"0.08":[-11.173,-84.369,-75.494],"0.12":[-49.657,-87.754,-36.273],"0.17":[-31.836,-100.482,-71.847],"0.21":[-78.737,-124.537,-61.177],"0.25":[-115.399,-139.222,-66.648],"0.29":[-178.666,-129.558,-59.661],"0.33":[-252.417,-125.467,-46.988],"0.38":[-303.565,-118.8,-61.649],"0.42":[-366.63,-109.586,-62.622],"0.46":[-414.29,-107.953,-66.756],"0.5":[-432.4,-107.8,-65.45],"0.54":[-433.134,-106.912,-65.827],"0.58":[-433.33,-105.765,-66.027],"0.62":[-433.49,-106.096,-66.17],"0.67":[-434.311,-107.149,-65.892],"0.71":[-435.676,-108.713,-65.181],"0.75":[-437.486,-111.32,-63.948],"0.79":[-439.037,-114.29,-62.755],"0.83":[-439.407,-115.085,-62.457],"0.88":[-439.235,-114.701,-62.63],"0.92":[-438.982,-114.118,-62.891],"0.96":[-438.708,-113.546,-63.197],"1.0":[-438.584,-113.244,-63.33],"1.04":[-438.583,-113.207,-63.331],"1.08":[-438.576,-113.208,-63.337],"1.12":[-438.57,-113.2,-63.339],"1.17":[-438.561,-113.215,-63.358],"1.21":[-438.567,-113.218,-63.345],"1.25":[-438.575,-113.221,-63.335],"1.29":[-438.584,-113.232,-63.322],"1.33":[-438.597,-113.222,-63.318],"1.38":[-438.592,-113.231,-63.313],"1.42":[-438.59,-113.239,-63.325],"1.46":[-438.599,-113.249,-63.312],"1.5":[-438.587,-113.268,-63.327],"1.54":[-438.755,-113.62,-63.146],"1.58":[-439.232,-114.675,-62.623],"1.62":[-439.825,-116.223,-61.967],"1.67":[-440.403,-117.894,-61.314],"1.71":[-440.828,-119.286,-60.844],"1.75":[-441.045,-120.064,-60.603],"1.79":[-441.066,-120.187,-60.579],"1.83":[-441.058,-120.182,-60.586],"1.88":[-441.065,-120.18,-60.579],"1.92":[-441.072,-120.183,-60.573],"1.96":[-441.066,-120.187,-60.579],"2.0":[-441.066,-120.181,-60.584],"2.04":[-441.09,-120.177,-60.557],"2.08":[-441.083,-120.18,-60.561],"2.12":[-441.075,-120.172,-60.564],"2.17":[-441.075,-120.182,-60.572],"2.21":[-441.079,-120.178,-60.573],"2.25":[-441.083,-120.181,-60.563],"2.29":[-441.076,-120.179,-60.563],"2.33":[-441.066,-120.118,-60.583],"2.38":[-440.858,-119.392,-60.822],"2.42":[-440.408,-117.931,-61.33],"2.46":[-439.855,-116.302,-61.945],"2.5":[-439.475,-115.275,-62.377],"2.54":[-439.371,-115.048,-62.489],"2.58":[-439.393,-115.044,-62.464],"2.62":[-439.362,-115.049,-62.496],"2.67":[-439.382,-115.048,-62.477],"2.71":[-439.38,-115.052,-62.481],"2.75":[-439.405,-115.052,-62.453],"2.79":[-439.413,-115.062,-62.446],"2.83":[-439.397,-115.063,-62.459],"2.88":[-439.405,-115.071,-62.459],"2.92":[-439.391,-115.074,-62.465],"2.96":[-439.413,-115.076,-62.441],"3.0":[-439.395,-115.089,-62.46],"3.04":[-439.41,-115.112,-62.443],"3.08":[-439.396,-115.265,-62.477],"3.12":[-448.688,-124.397,-49.519],"3.17":[-452.809,-122.947,-37.31],"3.21":[-446.609,-130.307,-36.088],"3.25":[-415.127,-127.777,-22.688],"3.29":[-332.585,-128.602,-15.986],"3.33":[-221.037,-127.407,-48.912],"3.38":[-151.944,-123.064,-50.288],"3.42":[-101.731,-113.938,-44.525],"3.46":[-72.292,-109.876,-43.522],"3.5":[-133.914,-93.129,32.284],"3.54":[-209.819,-104.739,116.817],"3.58":[-204.472,-105.049,114.304],"3.62":[-199.465,-104.442,110.092],"3.67":[-198.243,-104.254,108.778]},"position":{"0.0":[5.137,12.537,-3.464],"0.04":[5.059,12.532,-3.695],"0.08":[5.03,12.561,-3.705],"0.12":[5.03,12.641,-3.643],"0.17":[5.723,12.292,-4.36],"0.21":[7.554,11.637,-5.555],"0.25":[9.335,11.321,-5.839],"0.29":[10.655,11.435,-4.974],"0.33":[10.549,12.47,-4.122],"0.38":[9.558,13.313,-4.277],"0.42":[8.606,12.884,-4.848],"0.46":[8.361,12.017,-5.067],"0.5":[8.439,11.837,-5.073],"0.54":[8.464,11.829,-5.062],"0.58":[8.46,11.834,-5.022],"0.62":[8.413,11.865,-5.015],"0.67":[8.44,11.869,-5.044],"0.71":[8.484,11.867,-5.06],"0.75":[8.52,11.882,-5.09],"0.79":[8.55,11.903,-5.13],"0.83":[8.551,11.905,-5.157],"0.88":[8.549,11.901,-5.157],"0.92":[8.547,11.898,-5.146],"0.96":[8.541,11.892,-5.134],"1.0":[8.542,11.889,-5.132],"1.04":[8.544,11.889,-5.132],"1.08":[8.543,11.889,-5.134],"1.12":[8.546,11.89,-5.135],"1.17":[8.546,11.884,-5.128],"1.21":[8.547,11.881,-5.129],"1.25":[8.544,11.882,-5.129],"1.29":[8.543,11.881,-5.126],"1.33":[8.545,11.882,-5.128],"1.38":[8.543,11.881,-5.127],"1.42":[8.542,11.882,-5.129],"1.46":[8.543,11.882,-5.132],"1.5":[8.545,11.881,-5.132],"1.54":[8.548,11.884,-5.139],"1.58":[8.547,11.892,-5.157],"1.62":[8.553,11.905,-5.183],"1.67":[8.568,11.921,-5.218],"1.71":[8.575,11.933,-5.245],"1.75":[8.574,11.945,-5.262],"1.79":[8.575,11.949,-5.264],"1.83":[8.573,11.946,-5.267],"1.88":[8.571,11.948,-5.269],"1.92":[8.57,11.949,-5.273],"1.96":[8.572,11.95,-5.275],"2.0":[8.573,11.95,-5.275],"2.04":[8.575,11.948,-5.276],"2.08":[8.577,11.948,-5.276],"2.12":[8.582,11.946,-5.274],"2.17":[8.577,11.95,-5.274],"2.21":[8.579,11.951,-5.269],"2.25":[8.577,11.95,-5.268],"2.29":[8.573,11.948,-5.269],"2.33":[8.576,11.95,-5.267],"2.38":[8.572,11.944,-5.253],"2.42":[8.561,11.928,-5.233],"2.46":[8.553,11.914,-5.202],"2.5":[8.55,11.905,-5.176],"2.54":[8.549,11.904,-5.166],"2.58":[8.549,11.903,-5.168],"2.62":[8.549,11.905,-5.163],"2.67":[8.548,11.906,-5.164],"2.71":[8.547,11.905,-5.163],"2.75":[8.552,11.904,-5.165],"2.79":[8.552,11.905,-5.165],"2.83":[8.55,11.906,-5.166],"2.88":[8.55,11.907,-5.163],"2.92":[8.552,11.904,-5.164],"2.96":[8.551,11.903,-5.167],"3.0":[8.55,11.904,-5.168],"3.04":[8.546,11.905,-5.165],"3.08":[8.544,11.902,-5.167],"3.12":[8.546,12.027,-5.215],"3.17":[8.2,12.368,-5.366],"3.21":[7.657,13.329,-5.309],"3.25":[6.499,15.212,-4.818],"3.29":[7.736,17.517,-3.371],"3.33":[9.786,16.014,-2.433],"3.38":[9.529,13.966,-3.519],"3.42":[7.94,13.636,-3.691],"3.46":[6.714,13.69,-3.559],"3.5":[5.743,12.93,-3.699],"3.54":[5.201,12.781,-3.155],"3.58":[5.215,12.986,-3.178],"3.62":[5.214,13.037,-3.235],"3.67":[5.231,13.021,-3.249]}},"knife_and_left":{"rotation":{"0.0":[-40.773,-140.894,-12.628],"0.04":[-42.835,-141.553,-8.562],"0.08":[-43.99,-144.654,-6.796],"0.12":[-45.038,-142.231,-5.399],"0.17":[-55.441,-126.371,5.006],"0.21":[-89.634,-116.512,38.886],"0.25":[-123.216,-123.614,73.267],"0.29":[-138.373,-138.465,90.667],"0.33":[-144.692,-154.237,102.914],"0.38":[-148.553,-169.388,118.878],"0.42":[-150.722,-182.098,134.521],"0.46":[-151.323,-187.385,140.564],"0.5":[-151.77,-187.729,140.251],"0.54":[-151.973,-187.763,140.072],"0.58":[-151.898,-187.392,139.749],"0.62":[-151.709,-186.711,139.18],"0.67":[-151.424,-185.847,138.509],"0.71":[-150.933,-184.803,137.803],"0.75":[-150.074,-183.321,136.901],"0.79":[-149.241,-181.941,136.019],"0.83":[-149.144,-181.663,135.741],"0.88":[-149.279,-181.989,135.853],"0.92":[-149.406,-182.551,136.101],"0.96":[-149.532,-183.269,136.443],"1.0":[-149.685,-184.064,136.829],"1.04":[-149.842,-184.834,137.193],"1.08":[-150.054,-185.479,137.481],"1.12":[-150.323,-185.942,137.656],"1.17":[-150.701,-185.938,137.6],"1.21":[-151.339,-184.859,137.096],"1.25":[-152.215,-182.751,136.269],"1.29":[-153.16,-180.142,135.393],"1.33":[-154.054,-177.654,134.705],"1.38":[-154.805,-175.923,134.389],"1.42":[-155.385,-175.307,134.5],"1.46":[-155.854,-175.276,134.818],"1.5":[-156.275,-175.288,135.137],"1.54":[-156.634,-175.366,135.439],"1.58":[-156.914,-175.528,135.724],"1.62":[-157.145,-175.796,136.015],"1.67":[-157.271,-176.221,136.302],"1.71":[-157.296,-176.862,136.595],"1.75":[-157.149,-177.973,136.995],"1.79":[-156.791,-179.549,137.535],"1.83":[-156.258,-181.368,138.153],"1.88":[-155.628,-183.087,138.777],"1.92":[-154.944,-184.508,139.333],"1.96":[-154.2,-185.631,139.788],"2.0":[-153.363,-186.587,140.2],"2.04":[-152.483,-187.477,140.616],"2.08":[-151.586,-188.343,141.07],"2.12":[-150.696,-189.259,141.6],"2.17":[-149.836,-190.279,142.276],"2.21":[-148.99,-191.604,143.196],"2.25":[-148.065,-193.354,144.522],"2.29":[-147.119,-195.211,146.046],"2.33":[-146.403,-196.668,147.248],"2.38":[-146.058,-197.41,147.807],"2.42":[-146.021,-197.662,147.893],"2.46":[-146.112,-197.827,147.865],"2.5":[-146.278,-197.977,147.738],"2.54":[-146.505,-198.114,147.554],"2.58":[-146.826,-198.051,147.216],"2.62":[-147.306,-197.311,146.458],"2.67":[-147.938,-195.817,145.274],"2.71":[-148.572,-193.922,143.934],"2.75":[-149.12,-191.866,142.582],"2.79":[-149.54,-189.898,141.353],"2.83":[-149.727,-188.324,140.407],"2.88":[-149.779,-187.293,139.733],"2.92":[-149.725,-186.637,139.206],"2.96":[-149.621,-186.136,138.729],"3.0":[-149.475,-185.53,138.182],"3.04":[-149.324,-184.516,137.453],"3.08":[-149.124,-182.931,136.297],"3.12":[-150.007,-180.056,137.451],"3.17":[-153.63,-171.617,143.764],"3.21":[-153.177,-153.01,138.51],"3.25":[-140.216,-126.543,114.988],"3.29":[-86.284,-111.584,50.117],"3.33":[-46.635,-120.056,2.851],"3.38":[-41.488,-125.945,-5.002],"3.42":[-42.753,-129.169,-4.47],"3.46":[-43.807,-131.611,-4.08],"3.5":[-42.621,-134.308,-6.999],"3.54":[-41.165,-137.29,-10.588],"3.58":[-39.963,-140.015,-13.806],"3.62":[-39.205,-141.891,-15.988],"3.67":[-39.043,-142.308,-16.484]},"position":{"0.0":[18.134,-26.104,-16.94],"0.04":[17.845,-26.413,-16.977],"0.08":[17.215,-26.48,-16.915],"0.12":[16.599,-26.688,-16.8],"0.17":[16.048,-27.116,-16.567],"0.21":[15.606,-27.416,-16.32],"0.25":[15.275,-27.51,-16.087],"0.29":[15.005,-27.5,-15.896],"0.33":[14.832,-27.394,-15.829],"0.38":[14.8,-27.063,-15.766],"0.42":[14.902,-26.583,-15.639],"0.46":[15.079,-26.298,-15.629],"0.5":[15.265,-26.247,-15.778],"0.54":[15.326,-26.248,-15.839],"0.58":[15.309,-26.27,-15.847],"0.62":[15.273,-26.299,-15.857],"0.67":[15.23,-26.32,-15.853],"0.71":[15.183,-26.317,-15.82],"0.75":[15.121,-26.291,-15.754],"0.79":[15.06,-26.254,-15.68],"0.83":[15.028,-26.222,-15.635],"0.88":[15.019,-26.188,-15.604],"0.92":[15.014,-26.152,-15.574],"0.96":[15.018,-26.114,-15.547],"1.0":[15.02,-26.079,-15.518],"1.04":[15.018,-26.046,-15.498],"1.08":[15.015,-26.016,-15.482],"1.12":[15.009,-25.994,-15.463],"1.17":[14.986,-25.979,-15.458],"1.21":[14.957,-25.964,-15.45],"1.25":[14.92,-25.956,-15.446],"1.29":[14.883,-25.947,-15.443],"1.33":[14.845,-25.932,-15.442],"1.38":[14.807,-25.926,-15.441],"1.42":[14.78,-25.921,-15.442],"1.46":[14.757,-25.915,-15.441],"1.5":[14.735,-25.902,-15.442],"1.54":[14.715,-25.895,-15.443],"1.58":[14.696,-25.892,-15.444],"1.62":[14.675,-25.891,-15.442],"1.67":[14.658,-25.901,-15.442],"1.71":[14.636,-25.922,-15.444],"1.75":[14.608,-25.958,-15.444],"1.79":[14.566,-26.005,-15.443],"1.83":[14.528,-26.061,-15.442],"1.88":[14.502,-26.114,-15.448],"1.92":[14.492,-26.162,-15.458],"1.96":[14.498,-26.21,-15.464],"2.0":[14.518,-26.259,-15.463],"2.04":[14.548,-26.31,-15.463],"2.08":[14.577,-26.361,-15.46],"2.12":[14.602,-26.413,-15.461],"2.17":[14.615,-26.46,-15.464],"2.21":[14.613,-26.507,-15.476],"2.25":[14.584,-26.569,-15.484],"2.29":[14.548,-26.628,-15.493],"2.33":[14.518,-26.67,-15.503],"2.38":[14.507,-26.683,-15.504],"2.42":[14.503,-26.676,-15.505],"2.46":[14.502,-26.652,-15.504],"2.5":[14.508,-26.621,-15.509],"2.54":[14.523,-26.588,-15.509],"2.58":[14.547,-26.556,-15.506],"2.62":[14.577,-26.524,-15.505],"2.67":[14.605,-26.489,-15.505],"2.71":[14.64,-26.455,-15.506],"2.75":[14.676,-26.422,-15.511],"2.79":[14.711,-26.392,-15.513],"2.83":[14.741,-26.368,-15.519],"2.88":[14.774,-26.353,-15.528],"2.92":[14.81,-26.349,-15.546],"2.96":[14.843,-26.346,-15.567],"3.0":[14.883,-26.337,-15.592],"3.04":[14.935,-26.312,-15.614],"3.08":[14.99,-26.272,-15.683],"3.12":[14.85,-25.918,-15.789],"3.17":[14.288,-24.91,-15.841],"3.21":[14.272,-24.557,-16.092],"3.25":[14.979,-24.941,-16.393],"3.29":[15.993,-25.584,-16.666],"3.33":[16.849,-26.119,-16.835],"3.38":[17.379,-26.394,-16.895],"3.42":[17.709,-26.498,-16.902],"3.46":[17.893,-26.474,-16.89],"3.5":[17.982,-26.331,-16.894],"3.54":[18.048,-26.13,-16.899],"3.58":[18.096,-25.931,-16.896],"3.62":[18.122,-25.786,-16.886],"3.67":[18.13,-25.749,-16.887]}},"push_l":{"rotation":{"0.0":[59.983,80.71,-33.348],"0.04":[59.988,80.691,-33.352],"0.08":[59.094,80.81,-34.068],"0.12":[66.816,79.625,-28.062],"0.17":[92.172,73.935,-9.968],"0.21":[108.578,68.754,1.856],"0.25":[115.207,66.543,9.889],"0.29":[115.864,65.087,15.35],"0.33":[115.943,63.211,20.54],"0.38":[124.758,62.203,33.422],"0.42":[139.438,60.798,51.043],"0.46":[152.457,61.305,66.761],"0.5":[165.839,63.834,82.273],"0.54":[167.974,64.032,85.059],"0.58":[167.674,63.985,85.05],"0.62":[167.844,64.015,85.29],"0.67":[169.105,64.135,86.688],"0.71":[170.064,64.213,87.756],"0.75":[169.978,64.202,87.658],"0.79":[169.574,64.177,87.206],"0.83":[169.439,64.15,87.075],"0.88":[169.456,64.142,87.085],"0.92":[169.45,64.148,87.077],"0.96":[169.459,64.145,87.091],"1.0":[169.454,64.133,87.08],"1.04":[169.449,64.147,87.079],"1.08":[169.482,64.147,87.112],"1.12":[169.268,64.123,86.871],"1.41":[172.762,64.391,90.741],"2.46":[169.268,64.123,86.871],"2.5":[172.778,64.395,90.752],"2.54":[172.784,64.396,90.763],"2.58":[172.794,64.394,90.77],"2.62":[172.795,64.396,90.774],"2.67":[172.784,64.396,90.768],"2.71":[172.809,64.397,90.793],"2.75":[172.809,64.397,90.793],"2.79":[172.8,64.402,90.789],"2.83":[172.633,64.403,90.598],"2.88":[172.201,64.374,90.133],"2.92":[171.638,64.338,89.501],"2.96":[170.999,64.283,88.787],"3.0":[170.359,64.24,88.08],"3.04":[169.924,64.198,87.591],"3.08":[169.785,64.251,87.565],"3.12":[148.587,62.131,65.123],"3.17":[114.619,43.629,25.128],"3.21":[103.869,37.204,13.151],"3.25":[97.715,48.367,7.661],"3.29":[88.861,66.059,-2.009],"3.33":[67.088,79.286,-25.853],"3.38":[59.855,80.725,-33.477],"3.42":[60.016,80.703,-33.312],"3.46":[59.945,80.705,-33.38],"3.5":[59.935,80.701,-33.393],"3.54":[59.983,80.7,-33.344],"3.58":[59.988,80.703,-33.339],"3.62":[60.003,80.699,-33.322],"3.67":[59.97,80.69,-33.36]},"position":{"0.0":[-6.31,7.875,8.723],"0.04":[-6.282,7.874,8.709],"0.08":[-6.296,7.869,8.733],"0.12":[-6.233,7.835,8.723],"0.17":[-5.992,7.685,8.786],"0.21":[-5.832,7.556,9.037],"0.25":[-5.837,7.446,9.438],"0.29":[-5.9,7.343,9.893],"0.33":[-5.939,7.233,10.161],"0.38":[-6.093,7.114,10.457],"0.42":[-6.374,7.055,10.897],"0.46":[-6.553,7.098,11.229],"0.5":[-6.602,7.164,11.391],"0.54":[-6.642,7.185,11.407],"0.58":[-6.662,7.194,11.404],"0.62":[-6.666,7.194,11.409],"0.67":[-6.665,7.199,11.424],"0.71":[-6.667,7.206,11.43],"0.75":[-6.666,7.204,11.426],"0.79":[-6.664,7.2,11.421],"0.83":[-6.662,7.201,11.42],"0.88":[-6.664,7.202,11.422],"0.92":[-6.663,7.202,11.421],"0.96":[-6.667,7.205,11.421],"1.0":[-6.665,7.206,11.421],"1.04":[-6.664,7.201,11.421],"1.08":[-6.664,7.2,11.423],"1.12":[-6.665,7.206,11.417],"1.17":[-6.666,7.218,11.456],"1.21":[-6.663,7.26,11.55],"1.25":[-6.638,7.313,11.663],"1.29":[-6.611,7.357,11.757],"1.33":[-6.604,7.365,11.776],"1.38":[-6.599,7.363,11.776],"1.42":[-6.6,7.366,11.781],"1.46":[-6.603,7.368,11.78],"1.5":[-6.605,7.364,11.781],"1.54":[-6.605,7.365,11.782],"1.58":[-6.603,7.365,11.784],"1.62":[-6.601,7.365,11.779],"1.67":[-6.604,7.365,11.78],"1.71":[-6.602,7.364,11.783],"1.75":[-6.603,7.367,11.781],"1.79":[-6.603,7.365,11.779],"1.83":[-6.603,7.367,11.777],"1.88":[-6.604,7.366,11.776],"1.92":[-6.606,7.363,11.78],"1.96":[-6.603,7.364,11.78],"2.0":[-6.6,7.364,11.779],"2.04":[-6.602,7.364,11.782],"2.08":[-6.602,7.365,11.778],"2.12":[-6.612,7.353,11.756],"2.17":[-6.63,7.324,11.689],"2.21":[-6.652,7.288,11.61],"2.25":[-6.658,7.253,11.532],"2.29":[-6.662,7.225,11.475],"2.33":[-6.666,7.216,11.455],"2.38":[-6.668,7.217,11.45],"2.42":[-6.664,7.216,11.453],"2.46":[-6.665,7.216,11.45],"2.5":[-6.667,7.215,11.452],"2.54":[-6.667,7.215,11.451],"2.58":[-6.669,7.216,11.451],"2.62":[-6.67,7.219,11.45],"2.67":[-6.667,7.216,11.449],"2.71":[-6.665,7.216,11.451],"2.75":[-6.667,7.215,11.452],"2.79":[-6.667,7.219,11.448],"2.83":[-6.663,7.214,11.445],"2.88":[-6.665,7.213,11.441],"2.92":[-6.667,7.212,11.441],"2.96":[-6.665,7.207,11.435],"3.0":[-6.664,7.203,11.431],"3.04":[-6.667,7.203,11.427],"3.08":[-6.633,7.194,11.485],"3.12":[-6.584,7.101,11.295],"3.17":[-6.22,7.028,10.41],"3.21":[-5.991,7.418,9.685],"3.25":[-6.224,7.925,9.021],"3.29":[-6.327,7.996,8.749],"3.33":[-6.286,7.904,8.703],"3.38":[-6.306,7.879,8.723],"3.42":[-6.292,7.879,8.723],"3.46":[-6.298,7.877,8.726],"3.5":[-6.319,7.875,8.725],"3.54":[-6.326,7.874,8.729],"3.58":[-6.321,7.874,8.727],"3.62":[-6.322,7.872,8.729],"3.67":[-6.324,7.876,8.731]}},"righthand":{"rotation":[68.61834,-72.8672,-65.18833],"position":{"0.0":[0.83819,4.3663,-0.97781],"0.61":[0.9,4.5,-0.5],"3.0":[0.9,4.5,-0.5],"3.41":[0.9,5.25,-0.5],"3.63":[0.83819,4.3663,-0.97781]},"scale":[1,1.5,1]},"lefthand":{"rotation":[-90,-85,90],"position":{"0.0":[1,3.5,2.25],"0.63":[1,3.67431,0.25761],"3.2":[1,3.67431,0.25761],"3.41":[1,3.5,2.25]},"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_push_lookat_start"},"2.84":{"effect":"melee.cs2.knife_push_lookat_end"}}},"melee_1":{"loop":true,"animation_length":1.08,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[84.219,-33.706,-60.168],"0.04":[63.424,-27.003,-17.464],"0.08":[65.318,-27.544,-18.973],"0.12":[69.895,-29.214,-24.501],"0.17":[79.279,-31.908,-39.279],"0.21":[94.74,-31.262,-65.686],"0.25":[109.072,-22.729,-95.506],"0.29":[115.31,-10.353,-120.145],"0.33":[115.555,-2.395,-134.928],"0.38":[114.961,-0.753,-138.923],"0.42":[114.711,-1.513,-138.849],"0.46":[114.626,-2.601,-138.548],"0.5":[114.64,-3.947,-138.026],"0.54":[114.664,-5.465,-137.362],"0.58":[114.641,-7.031,-136.617],"0.62":[114.554,-8.606,-135.818],"0.67":[114.364,-10.047,-135.015],"0.71":[114.11,-11.374,-134.094],"0.75":[113.874,-12.771,-132.76],"0.79":[113.603,-14.24,-131.138],"0.83":[113.169,-15.479,-129.714],"0.88":[112.565,-16.278,-128.926],"0.92":[111.818,-16.252,-129.704],"0.96":[111.047,-15.202,-132.94],"1.0":[110.329,-13.743,-137.731],"1.04":[109.738,-12.561,-142.08],"1.08":[109.426,-11.984,-144.432]},"position":{"0.0":[-9.24,-26.078,-17.359],"0.04":[-7.569,-24.464,-22.332],"0.08":[-7.895,-24.291,-22.591],"0.12":[-8.338,-24.169,-22.505],"0.17":[-9.073,-24.216,-22.046],"0.21":[-10.01,-24.565,-20.756],"0.25":[-10.958,-25.172,-18.7],"0.29":[-11.79,-25.907,-16.403],"0.33":[-12.314,-26.623,-14.561],"0.38":[-12.488,-27.188,-13.496],"0.42":[-12.505,-27.641,-12.773],"0.46":[-12.466,-28.006,-12.134],"0.5":[-12.377,-28.28,-11.6],"0.54":[-12.27,-28.492,-11.16],"0.58":[-12.155,-28.649,-10.82],"0.62":[-12.056,-28.757,-10.585],"0.67":[-11.983,-28.817,-10.477],"0.71":[-11.968,-28.843,-10.507],"0.75":[-12.022,-28.828,-10.728],"0.79":[-12.102,-28.765,-11.108],"0.83":[-12.182,-28.66,-11.567],"0.88":[-12.201,-28.531,-11.998],"0.92":[-12.118,-28.348,-12.393],"0.96":[-11.918,-28.08,-12.83],"1.0":[-11.662,-27.777,-13.266],"1.04":[-11.442,-27.523,-13.608],"1.08":[-11.325,-27.392,-13.78]}},"push_r":{"rotation":{"0.0":[-18.227,-75.796,-71.245],"0.04":[-18.222,-75.814,-71.245],"0.08":[-18.178,-75.803,-71.291],"0.12":[-18.153,-75.823,-71.309],"0.17":[-18.189,-75.808,-71.277],"0.21":[-18.201,-75.787,-71.267],"0.25":[-18.248,-75.779,-71.22],"0.29":[-18.188,-75.782,-71.298],"0.33":[-18.213,-75.775,-71.259],"0.38":[-18.19,-75.772,-71.288],"0.42":[-18.18,-75.773,-71.298],"0.46":[-18.224,-75.772,-71.262],"0.5":[-18.241,-75.772,-71.229],"0.54":[-18.207,-75.782,-71.257],"0.58":[-18.21,-75.779,-71.243],"0.62":[-18.153,-75.783,-71.303],"0.67":[-18.208,-75.78,-71.249],"0.71":[-18.182,-75.775,-71.278],"0.75":[-18.232,-75.775,-71.228],"0.79":[-18.196,-75.772,-71.274],"0.83":[-18.176,-75.771,-71.285],"0.88":[-18.188,-75.782,-71.278],"0.92":[-18.239,-75.788,-71.223],"0.96":[-18.213,-75.777,-71.248],"1.0":[-18.205,-75.779,-71.257],"1.04":[-18.219,-75.781,-71.249],"1.08":[-18.198,-75.781,-71.269]},"position":{"0.0":[5.276,13.021,-3.262],"0.04":[5.271,13.016,-3.262],"0.08":[5.273,13.014,-3.265],"0.12":[5.274,13.02,-3.266],"0.17":[5.274,13.017,-3.264],"0.21":[5.279,13.013,-3.265],"0.25":[5.278,13.014,-3.266],"0.29":[5.274,13.011,-3.264],"0.33":[5.275,13.021,-3.265],"0.38":[5.274,13.014,-3.263],"0.42":[5.272,13.016,-3.265],"0.46":[5.268,13.016,-3.268],"0.5":[5.269,13.019,-3.261],"0.54":[5.271,13.016,-3.262],"0.58":[5.277,13.02,-3.263],"0.62":[5.276,13.024,-3.265],"0.67":[5.277,13.018,-3.262],"0.71":[5.275,13.017,-3.264],"0.75":[5.275,13.022,-3.268],"0.79":[5.276,13.014,-3.26],"0.83":[5.272,13.017,-3.262],"0.88":[5.275,13.018,-3.264],"0.92":[5.274,13.021,-3.264],"0.96":[5.271,13.019,-3.265],"1.0":[5.273,13.013,-3.265],"1.04":[5.27,13.017,-3.262],"1.08":[5.272,13.01,-3.265]}},"knife_and_left":{"rotation":{"0.0":[-61.66,-128.913,11.279],"0.04":[-103.652,-129.459,61.305],"0.08":[-112.561,-133.128,73],"0.12":[-113.225,-132.952,73.829],"0.17":[-113.784,-132.618,74.503],"0.21":[-114.122,-132.374,74.88],"0.25":[-113.785,-132.333,74.452],"0.29":[-112.174,-132.351,72.375],"0.33":[-109.253,-132.376,68.579],"0.38":[-105.623,-132.424,63.775],"0.42":[-101.558,-132.517,58.295],"0.46":[-97.368,-132.579,52.558],"0.5":[-93.068,-132.32,46.793],"0.54":[-87.679,-131.539,40.317],"0.58":[-80.773,-130.618,32.81],"0.62":[-72.864,-130.194,24.649],"0.67":[-65.384,-130.568,16.998],"0.71":[-59.429,-131.575,10.608],"0.75":[-55.283,-132.857,5.599],"0.79":[-51.828,-134.3,1.117],"0.83":[-48.706,-135.811,-3.023],"0.88":[-45.976,-137.353,-6.721],"0.92":[-43.643,-138.833,-9.932],"0.96":[-41.756,-140.164,-12.58],"1.0":[-40.385,-141.219,-14.541],"1.04":[-39.483,-141.948,-15.838],"1.08":[-39.08,-142.279,-16.419]},"position":{"0.0":[18.472,-25.749,-14.861],"0.04":[18.926,-25.761,-12.109],"0.08":[19.081,-25.775,-11.14],"0.12":[19.12,-25.784,-10.935],"0.17":[19.136,-25.785,-10.855],"0.21":[19.134,-25.788,-10.833],"0.25":[19.159,-25.819,-11.038],"0.29":[19.246,-25.922,-11.835],"0.33":[19.382,-26.114,-13.174],"0.38":[19.498,-26.34,-14.673],"0.42":[19.549,-26.568,-16.097],"0.46":[19.501,-26.775,-17.176],"0.5":[19.297,-26.909,-17.601],"0.54":[18.996,-26.939,-17.732],"0.58":[18.689,-26.869,-17.822],"0.62":[18.396,-26.749,-17.876],"0.67":[18.16,-26.618,-17.886],"0.71":[17.993,-26.534,-17.866],"0.75":[17.92,-26.48,-17.818],"0.79":[17.894,-26.418,-17.73],"0.83":[17.905,-26.317,-17.595],"0.88":[17.933,-26.2,-17.453],"0.92":[17.982,-26.079,-17.301],"0.96":[18.037,-25.954,-17.151],"1.0":[18.076,-25.854,-17.029],"1.04":[18.108,-25.782,-16.937],"1.08":[18.13,-25.749,-16.893]}},"push_l":{"rotation":{"0.0":[59.864,80.688,-33.458],"0.04":[59.875,80.665,-33.47],"0.08":[59.882,80.668,-33.467],"0.12":[59.882,80.668,-33.468],"0.17":[59.8,80.663,-33.556],"0.21":[59.928,80.67,-33.42],"0.25":[59.885,80.66,-33.461],"0.29":[59.789,80.671,-33.542],"0.33":[59.849,80.662,-33.496],"0.38":[59.873,80.665,-33.469],"0.42":[59.89,80.676,-33.443],"0.46":[59.88,80.675,-33.445],"0.5":[59.969,80.682,-33.351],"0.54":[59.969,80.684,-33.354],"0.58":[59.953,80.685,-33.38],"0.62":[59.887,80.682,-33.433],"0.67":[59.934,80.693,-33.382],"0.71":[59.977,80.697,-33.348],"0.75":[59.909,80.694,-33.421],"0.79":[59.933,80.698,-33.387],"0.83":[60.014,80.694,-33.314],"0.88":[60.02,80.698,-33.297],"0.92":[59.993,80.699,-33.325],"0.96":[59.98,80.697,-33.35],"1.0":[60.027,80.697,-33.296],"1.04":[59.988,80.694,-33.342],"1.08":[59.969,80.685,-33.361]},"position":{"0.0":[-6.314,7.87,8.731],"0.04":[-6.319,7.874,8.738],"0.08":[-6.319,7.875,8.735],"0.12":[-6.318,7.881,8.738],"0.17":[-6.322,7.88,8.738],"0.21":[-6.318,7.876,8.735],"0.25":[-6.315,7.88,8.735],"0.29":[-6.323,7.877,8.736],"0.33":[-6.319,7.874,8.735],"0.38":[-6.32,7.88,8.733],"0.42":[-6.322,7.872,8.729],"0.46":[-6.311,7.868,8.734],"0.5":[-6.312,7.873,8.739],"0.54":[-6.315,7.876,8.734],"0.58":[-6.32,7.876,8.735],"0.62":[-6.316,7.877,8.734],"0.67":[-6.318,7.876,8.735],"0.71":[-6.316,7.873,8.726],"0.75":[-6.315,7.871,8.731],"0.79":[-6.318,7.87,8.726],"0.83":[-6.315,7.872,8.728],"0.88":[-6.316,7.869,8.726],"0.92":[-6.312,7.872,8.724],"0.96":[-6.315,7.878,8.74],"1.0":[-6.317,7.872,8.733],"1.04":[-6.322,7.871,8.731],"1.08":[-6.324,7.876,8.733]}},"righthand":{"rotation":[68.61834,-72.8672,-65.18833],"position":[0.83819,4.3663,-0.97781],"scale":[1,1.5,1]},"lefthand":{"rotation":[-90,-85,90],"position":[1,3.5,2.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"melee_2":{"loop":true,"animation_length":1.08,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[105.311,-7.128,-133.989],"0.04":[102.182,-3.098,-125.866],"0.08":[101.089,-2.503,-123.079],"0.12":[100.401,-2.197,-120.853],"0.17":[100.029,-2.118,-119.28],"0.21":[99.877,-2.113,-118.264],"0.25":[99.911,-2.089,-117.817],"0.29":[100.249,-1.917,-118.369],"0.33":[101.136,-1.526,-120.617],"0.38":[102.377,-0.993,-123.905],"0.42":[103.84,-0.301,-127.834],"0.46":[105.413,0.441,-131.841],"0.5":[106.842,1.008,-135.458],"0.54":[108.081,1.254,-138.262],"0.58":[109.042,0.71,-139.854],"0.62":[109.717,-0.995,-140.158],"0.67":[109.933,-3.586,-139.652],"0.71":[109.779,-6.292,-139.013],"0.75":[109.452,-8.536,-138.77],"0.79":[109.313,-9.858,-139.523],"0.83":[109.4,-10.401,-140.923],"0.88":[109.445,-10.871,-142.106],"0.92":[109.449,-11.227,-143.062],"0.96":[109.442,-11.51,-143.816],"1.0":[109.406,-11.719,-144.308],"1.04":[109.391,-11.841,-144.631],"1.08":[109.375,-11.899,-144.751]},"position":{"0.0":[-12.757,-27.391,-11.182],"0.04":[-13.876,-27.343,-9.054],"0.08":[-14.14,-27.249,-8.422],"0.12":[-14.317,-27.171,-7.989],"0.17":[-14.407,-27.117,-7.746],"0.21":[-14.447,-27.084,-7.62],"0.25":[-14.463,-27.069,-7.579],"0.29":[-14.369,-27.081,-7.747],"0.33":[-14.028,-27.12,-8.396],"0.38":[-13.544,-27.171,-9.332],"0.42":[-12.976,-27.233,-10.431],"0.46":[-12.398,-27.29,-11.559],"0.5":[-11.9,-27.337,-12.557],"0.54":[-11.549,-27.367,-13.299],"0.58":[-11.365,-27.367,-13.736],"0.62":[-11.256,-27.37,-14.005],"0.67":[-11.195,-27.364,-14.16],"0.71":[-11.164,-27.364,-14.241],"0.75":[-11.151,-27.366,-14.274],"0.79":[-11.148,-27.365,-14.279],"0.83":[-11.16,-27.364,-14.251],"0.88":[-11.18,-27.369,-14.187],"0.92":[-11.212,-27.372,-14.096],"0.96":[-11.243,-27.374,-13.997],"1.0":[-11.275,-27.375,-13.904],"1.04":[-11.299,-27.38,-13.833],"1.08":[-11.312,-27.377,-13.799]}},"push_r":{"rotation":{"0.0":[-18.261,-75.77,-71.2],"0.04":[-18.23,-75.769,-71.231],"0.08":[-18.183,-75.76,-71.281],"0.12":[-18.241,-75.776,-71.235],"0.17":[-18.211,-75.773,-71.268],"0.21":[-18.189,-75.762,-71.276],"0.25":[-18.214,-75.765,-71.258],"0.29":[-18.256,-75.766,-71.22],"0.33":[-18.213,-75.769,-71.254],"0.38":[-18.167,-75.765,-71.311],"0.42":[-18.235,-75.755,-71.247],"0.46":[-18.285,-75.78,-71.196],"0.5":[-18.256,-75.774,-71.222],"0.54":[-18.235,-75.764,-71.24],"0.58":[-18.27,-75.759,-71.219],"0.62":[-18.219,-75.767,-71.262],"0.67":[-18.278,-75.759,-71.197],"0.71":[-18.236,-75.761,-71.243],"0.75":[-18.177,-75.752,-71.282],"0.79":[-18.246,-75.761,-71.214],"0.83":[-18.201,-75.752,-71.246],"0.88":[-18.227,-75.766,-71.23],"0.92":[-18.248,-75.754,-71.201],"0.96":[-18.282,-75.75,-71.178],"1.0":[-18.178,-75.751,-71.274],"1.04":[-18.267,-75.755,-71.199],"1.08":[-18.217,-75.766,-71.25]},"position":{"0.0":[5.271,13.012,-3.263],"0.04":[5.277,13.014,-3.261],"0.08":[5.276,13.019,-3.261],"0.12":[5.269,13.017,-3.264],"0.17":[5.27,13.021,-3.265],"0.21":[5.274,13.018,-3.263],"0.25":[5.268,13.017,-3.267],"0.29":[5.271,13.022,-3.262],"0.33":[5.275,13.015,-3.262],"0.38":[5.272,13.019,-3.268],"0.42":[5.273,13.015,-3.271],"0.46":[5.274,13.013,-3.265],"0.5":[5.27,13.022,-3.264],"0.54":[5.276,13.019,-3.269],"0.58":[5.271,13.022,-3.266],"0.62":[5.274,13.024,-3.264],"0.67":[5.274,13.015,-3.265],"0.71":[5.272,13.017,-3.266],"0.75":[5.274,13.019,-3.267],"0.79":[5.276,13.018,-3.266],"0.83":[5.274,13.016,-3.266],"0.88":[5.275,13.02,-3.266],"0.92":[5.274,13.02,-3.268],"0.96":[5.273,13.015,-3.267],"1.0":[5.272,13.024,-3.266],"1.04":[5.272,13.019,-3.267],"1.08":[5.271,13.013,-3.269]}},"knife_and_left":{"rotation":{"0.0":[73.101,-34.402,-108.657],"0.04":[65.418,-14.162,-83.081],"0.08":[65.586,-15.162,-84.422],"0.12":[66.485,-18.721,-89.233],"0.17":[67.946,-27.222,-98.318],"0.21":[72.542,-38.941,-110.14],"0.25":[84.341,-49.151,-126.761],"0.29":[99.874,-52.414,-145.614],"0.33":[107.785,-50.639,-156.492],"0.38":[110.864,-49.071,-162.076],"0.42":[112.025,-47.996,-165.197],"0.46":[113.635,-47.113,-168.177],"0.5":[116.668,-46.566,-171.691],"0.54":[120.09,-46.427,-174.829],"0.58":[123.705,-46.454,-177.689],"0.62":[127.215,-46.397,-180.33],"0.67":[130.071,-46.086,-182.666],"0.71":[132.106,-45.409,-184.767],"0.75":[133.787,-44.499,-186.762],"0.79":[135.348,-43.462,-188.679],"0.83":[136.733,-42.351,-190.476],"0.88":[137.957,-41.248,-192.109],"0.92":[138.974,-40.181,-193.535],"0.96":[139.806,-39.233,-194.713],"1.0":[140.403,-38.47,-195.614],"1.04":[140.777,-37.938,-196.192],"1.08":[140.946,-37.707,-196.456]},"position":{"0.0":[15.757,-25.543,-23.826],"0.04":[12.822,-24.803,-27.928],"0.08":[12.89,-24.823,-28.069],"0.12":[12.988,-24.883,-28.146],"0.17":[13.697,-25.459,-27.135],"0.21":[15.082,-26.521,-25],"0.25":[16.576,-27.584,-22.52],"0.29":[17.671,-28.178,-20.461],"0.33":[18.241,-28.005,-18.941],"0.38":[18.668,-27.515,-17.537],"0.42":[18.981,-27.013,-16.452],"0.46":[19.191,-26.784,-15.935],"0.5":[19.301,-26.823,-15.856],"0.54":[19.394,-26.85,-15.802],"0.58":[19.446,-26.87,-15.77],"0.62":[19.467,-26.889,-15.756],"0.67":[19.481,-26.891,-15.749],"0.71":[19.473,-26.884,-15.757],"0.75":[19.398,-26.826,-15.814],"0.79":[19.276,-26.709,-15.921],"0.83":[19.099,-26.563,-16.077],"0.88":[18.891,-26.39,-16.249],"0.92":[18.68,-26.21,-16.426],"0.96":[18.489,-26.037,-16.595],"1.0":[18.319,-25.901,-16.737],"1.04":[18.196,-25.8,-16.837],"1.08":[18.141,-25.752,-16.883]}},"push_l":{"rotation":{"0.0":[59.878,80.676,-33.465],"0.04":[59.899,80.679,-33.455],"0.08":[59.918,80.682,-33.444],"0.12":[59.934,80.674,-33.416],"0.17":[59.863,80.668,-33.483],"0.21":[59.928,80.67,-33.42],"0.25":[60.012,80.687,-33.332],"0.29":[59.925,80.713,-33.425],"0.33":[60.025,80.692,-33.321],"0.38":[60.02,80.703,-33.329],"0.42":[59.952,80.703,-33.405],"0.46":[59.854,80.695,-33.496],"0.5":[59.932,80.687,-33.408],"0.54":[59.972,80.693,-33.353],"0.58":[59.935,80.687,-33.39],"0.62":[59.929,80.68,-33.391],"0.67":[59.92,80.688,-33.404],"0.71":[59.97,80.695,-33.367],"0.75":[59.929,80.703,-33.403],"0.79":[59.925,80.691,-33.4],"0.83":[59.96,80.695,-33.357],"0.88":[59.959,80.692,-33.366],"0.92":[59.971,80.699,-33.358],"0.96":[59.993,80.692,-33.332],"1.0":[59.979,80.697,-33.35],"1.04":[60.001,80.699,-33.32],"1.08":[59.976,80.688,-33.351]},"position":{"0.0":[-6.323,7.875,8.735],"0.04":[-6.326,7.882,8.733],"0.08":[-6.323,7.882,8.732],"0.12":[-6.319,7.878,8.739],"0.17":[-6.321,7.879,8.73],"0.21":[-6.317,7.877,8.737],"0.25":[-6.323,7.872,8.731],"0.29":[-6.33,7.878,8.729],"0.33":[-6.322,7.878,8.731],"0.38":[-6.323,7.872,8.73],"0.42":[-6.326,7.878,8.733],"0.46":[-6.316,7.881,8.736],"0.5":[-6.315,7.874,8.728],"0.54":[-6.317,7.884,8.735],"0.58":[-6.311,7.874,8.734],"0.62":[-6.323,7.872,8.725],"0.67":[-6.321,7.877,8.73],"0.71":[-6.314,7.876,8.727],"0.75":[-6.318,7.876,8.727],"0.79":[-6.321,7.875,8.737],"0.83":[-6.314,7.877,8.729],"0.88":[-6.324,7.876,8.732],"0.92":[-6.327,7.874,8.733],"0.96":[-6.313,7.874,8.735],"1.0":[-6.322,7.882,8.735],"1.04":[-6.321,7.876,8.729],"1.08":[-6.322,7.877,8.731]}},"righthand":{"rotation":[68.61834,-72.8672,-65.18833],"position":[0.83819,4.3663,-0.97781],"scale":[1,1.5,1]},"lefthand":{"rotation":[-90,-85,90],"position":[1,3.5,2.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash2"}}},"melee_3":{"loop":true,"animation_length":0.71,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[78.572,-27.578,-41.74],"0.04":[79.41,-25.858,-36.612],"0.08":[79.15,-25.666,-37.201],"0.12":[79.164,-25.717,-37.33],"0.17":[81.746,-25.8,-41.553],"0.21":[95.497,-22.909,-67.24],"0.25":[104.879,-17.299,-95.03],"0.29":[105.713,-17.147,-113.255],"0.33":[106.024,-18.864,-124.461],"0.38":[106.914,-18.634,-127.676],"0.42":[107.532,-18.368,-128.283],"0.46":[108.095,-18.114,-128.837],"0.5":[108.892,-17.262,-132.333],"0.54":[109.597,-15.854,-138.858],"0.58":[110.189,-14.315,-143.646],"0.62":[109.953,-12.761,-144.98],"0.67":[109.446,-11.98,-144.824],"0.71":[109.368,-11.897,-144.77]},"position":{"0.0":[-13.204,-23.185,-18.119],"0.04":[-12.816,-22.472,-20.784],"0.08":[-12.742,-22.407,-20.794],"0.12":[-12.741,-22.399,-20.812],"0.17":[-12.743,-22.416,-20.821],"0.21":[-12.754,-22.52,-20.788],"0.25":[-12.622,-23.069,-19.871],"0.29":[-12.882,-24.734,-16.976],"0.33":[-13.089,-26.504,-14.498],"0.38":[-12.954,-27.19,-13.417],"0.42":[-12.883,-27.432,-13.026],"0.46":[-12.828,-27.555,-12.913],"0.5":[-12.713,-27.672,-13.019],"0.54":[-12.473,-27.788,-13.26],"0.58":[-12.101,-27.767,-13.489],"0.62":[-11.645,-27.554,-13.668],"0.67":[-11.371,-27.395,-13.769],"0.71":[-11.317,-27.376,-13.794]}},"push_r":{"rotation":{"0.0":[-26.209,-74.347,-63.296],"0.04":[-27.524,-74.83,-62.139],"0.08":[-25.668,-74.999,-63.515],"0.12":[-25.727,-75.007,-63.482],"0.17":[-25.285,-75.102,-63.844],"0.21":[-24.513,-75.035,-64.361],"0.25":[-25.973,-74.817,-63.359],"0.29":[-24.578,-74.985,-64.471],"0.33":[-25.421,-75.013,-63.749],"0.38":[-25.655,-74.988,-63.56],"0.42":[-25.68,-74.975,-63.523],"0.46":[-25.671,-74.974,-63.526],"0.5":[-25.667,-74.974,-63.54],"0.54":[-25.696,-74.973,-63.514],"0.58":[-25.691,-74.965,-63.521],"0.62":[-25.69,-74.968,-63.517],"0.67":[-25.689,-74.973,-63.525],"0.71":[-25.72,-74.971,-63.5]},"position":{"0.0":[5.1,12.996,-3.077],"0.04":[5.211,13.184,-3.203],"0.08":[5.153,13.181,-3.243],"0.12":[5.161,13.178,-3.241],"0.17":[5.198,13.178,-3.231],"0.21":[5.281,13.174,-3.225],"0.25":[5.177,13.113,-3.108],"0.29":[5.049,13.162,-3.124],"0.33":[5.083,13.138,-3.344],"0.38":[5.17,13.175,-3.282],"0.42":[5.178,13.185,-3.261],"0.46":[5.18,13.188,-3.249],"0.5":[5.176,13.189,-3.243],"0.54":[5.159,13.185,-3.258],"0.58":[5.153,13.185,-3.262],"0.62":[5.151,13.181,-3.244],"0.67":[5.147,13.175,-3.24],"0.71":[5.15,13.174,-3.247]}},"knife_and_left":{"rotation":{"0.0":[63.937,-29.141,-94.885],"0.04":[64.642,-24.116,-87.515],"0.08":[64.053,-24.686,-87.36],"0.12":[64.327,-24.658,-87.391],"0.17":[65.839,-24.521,-88.719],"0.21":[69.515,-29.356,-97.774],"0.25":[81.125,-40.847,-120.125],"0.29":[101.261,-48.498,-148.293],"0.33":[120.679,-48.572,-172.536],"0.38":[127.662,-47.911,-180.962],"0.42":[127.409,-48.247,-180.731],"0.46":[126.673,-48.622,-180.019],"0.5":[125.981,-48.979,-179.345],"0.54":[125.983,-49.051,-179.411],"0.58":[129.979,-46.982,-183.926],"0.62":[137.059,-41.751,-191.953],"0.67":[140.575,-38.134,-196.036],"0.71":[140.986,-37.662,-196.513]},"position":{"0.0":[15.338,-24.408,-19.041],"0.04":[14.227,-24.888,-21.727],"0.08":[14.101,-24.912,-21.753],"0.12":[14.071,-24.92,-21.786],"0.17":[14.123,-24.954,-21.726],"0.21":[14.775,-25.085,-20.75],"0.25":[16.268,-25.356,-18.374],"0.29":[18.191,-26.252,-16.25],"0.33":[19.83,-27.384,-15.155],"0.38":[20.382,-27.729,-14.751],"0.42":[20.466,-27.638,-14.975],"0.46":[20.549,-27.499,-15.421],"0.5":[20.525,-27.315,-15.879],"0.54":[20.288,-27.092,-16.208],"0.58":[19.64,-26.68,-16.459],"0.62":[18.719,-26.11,-16.684],"0.67":[18.208,-25.794,-16.829],"0.71":[18.134,-25.746,-16.883]}},"push_l":{"rotation":{"0.0":[60.413,81.066,-33.367],"0.04":[58.35,80.721,-34.992],"0.08":[59.917,80.686,-33.419],"0.12":[59.926,80.674,-33.409],"0.17":[60.006,80.629,-33.263],"0.21":[60.452,80.792,-32.602],"0.25":[60.458,80.951,-33.42],"0.29":[59.436,80.35,-34.63],"0.33":[61.959,80.222,-30.931],"0.38":[60.445,80.668,-32.816],"0.42":[59.944,80.702,-33.389],"0.46":[59.987,80.703,-33.338],"0.5":[59.974,80.7,-33.356],"0.54":[60.001,80.699,-33.32],"0.58":[59.948,80.693,-33.384],"0.62":[59.93,80.691,-33.405],"0.67":[60.015,80.691,-33.304],"0.71":[59.965,80.686,-33.365]},"position":{"0.0":[-6.492,7.849,8.697],"0.04":[-6.307,7.854,8.847],"0.08":[-6.324,7.88,8.732],"0.12":[-6.326,7.885,8.732],"0.17":[-6.288,7.879,8.754],"0.21":[-6.216,7.862,8.765],"0.25":[-6.453,7.865,8.727],"0.29":[-6.532,7.854,8.804],"0.33":[-6.245,7.882,8.685],"0.38":[-6.281,7.902,8.691],"0.42":[-6.317,7.882,8.728],"0.46":[-6.309,7.876,8.734],"0.5":[-6.302,7.878,8.737],"0.54":[-6.293,7.887,8.732],"0.58":[-6.299,7.878,8.727],"0.62":[-6.349,7.856,8.751],"0.67":[-6.351,7.867,8.758],"0.71":[-6.327,7.878,8.737]}},"righthand":{"rotation":[68.61834,-72.8672,-65.18833],"position":[0.83819,4.3663,-0.97781],"scale":[1,1.5,1]},"lefthand":{"rotation":[-90,-85,90],"position":[1,3.5,2.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_push_attack1_heavy_01"}}},"static_idle":{"loop":true,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":[109.426,-11.984,-144.432],"position":[-11.325,-27.392,-13.78]},"push_r":{"rotation":[-18.198,-75.781,-71.269],"position":[5.272,13.01,-3.265]},"knife_and_left":{"rotation":[-39.08,-142.279,-16.419],"position":[18.13,-25.749,-16.893]},"push_l":{"rotation":[59.969,80.685,-33.361],"position":[-6.324,7.876,8.733]},"righthand":{"rotation":[68.61834,-72.8672,-65.18833],"position":[0.83819,4.3663,-0.97781],"scale":[1,1.5,1]},"lefthand":{"rotation":[-90,-85,90],"position":[1,3.5,2.25],"scale":[1,1.5,1]}}},"idle":{"loop":true,"bones":{"root":{"rotation":[0,0,0],"position":[0,0,0],"scale":1}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/push.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/push.geo.json new file mode 100644 index 0000000..4fb1b9c --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/push.geo.json @@ -0,0 +1,5377 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 32, + "texture_height": 32, + "visible_bounds_width": 4, + "visible_bounds_height": 4, + "visible_bounds_offset": [0, 0, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "bone", + "parent": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "knife_and_right", + "parent": "bone", + "pivot": [6, 19, 0] + }, + { + "name": "righthand", + "parent": "knife_and_right", + "pivot": [6, 19, 0] + }, + { + "name": "righthand_pos", + "parent": "righthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [4, 8, -2], + "size": [3, 12, 4], + "uv": { + "north": {"uv": [0, 0], "uv_size": [4, 12]}, + "east": {"uv": [4, 0], "uv_size": [4, 12]}, + "south": {"uv": [8, 0], "uv_size": [4, 12]}, + "west": {"uv": [0, 12], "uv_size": [4, 12]}, + "up": {"uv": [16, 0], "uv_size": [4, 4]}, + "down": {"uv": [16, 8], "uv_size": [4, -4]} + } + } + ] + }, + { + "name": "push_r", + "parent": "knife_and_right", + "pivot": [0, 10.5, 2.22723], + "cubes": [ + { + "origin": [-0.47958, 8.76058, -3.19965], + "size": [0.07561, 0.4032, 0.3024], + "pivot": [-0.20237, 8.76058, 0.02595], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [14, 21], "uv_size": [0.125, 0.25]}, + "east": {"uv": [18, 14], "uv_size": [0.25, 0.25]}, + "south": {"uv": [21, 14], "uv_size": [0.125, 0.25]}, + "west": {"uv": [15, 18], "uv_size": [0.25, 0.25]}, + "up": {"uv": [15, 21], "uv_size": [0.125, 0.25]}, + "down": {"uv": [21, 15.25], "uv_size": [0.125, -0.25]} + } + }, + { + "origin": [-0.52998, 8.76058, -2.89725], + "size": [0.17641, 0.4032, 0.52921], + "pivot": [-0.20237, 8.76058, 0.02595], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [16, 21], "uv_size": [0.125, 0.25]}, + "east": {"uv": [0, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [21, 16], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 0], "uv_size": [0.375, 0.25]}, + "up": {"uv": [20, 7], "uv_size": [0.125, 0.375]}, + "down": {"uv": [8, 20.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [-0.63078, 8.76058, -2.36804], + "size": [0.37801, 0.4032, 0.756], + "pivot": [-0.20237, 8.76058, 0.02595], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [18, 15], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 15], "uv_size": [0.5, 0.25]}, + "south": {"uv": [16, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 15], "uv_size": [0.5, 0.25]}, + "up": {"uv": [15, 9], "uv_size": [0.25, 0.5]}, + "down": {"uv": [10, 15.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.80717, 8.76058, -1.61204], + "size": [0.73079, 0.4032, 1.53719], + "pivot": [-0.20237, 8.76058, 0.02595], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [15, 10], "uv_size": [0.5, 0.25]}, + "east": {"uv": [13, 13], "uv_size": [1, 0.25]}, + "south": {"uv": [11, 15], "uv_size": [0.5, 0.25]}, + "west": {"uv": [14, 0], "uv_size": [1, 0.25]}, + "up": {"uv": [6, 12], "uv_size": [0.5, 1]}, + "down": {"uv": [7, 13], "uv_size": [0.5, -1]} + } + }, + { + "origin": [1.4092, 7.42375, -3.20087], + "size": [0.07804, 0.40565, 0.80885], + "inflate": 0.002, + "pivot": [1.41043, 9.03777, -3.19965], + "rotation": [0, -15, 90], + "uv": { + "north": {"uv": [17, 21], "uv_size": [0.125, 0.25]}, + "east": {"uv": [15, 11], "uv_size": [0.5, 0.25]}, + "south": {"uv": [21, 17], "uv_size": [0.125, 0.25]}, + "west": {"uv": [12, 15], "uv_size": [0.5, 0.25]}, + "up": {"uv": [18, 16], "uv_size": [0.125, 0.5]}, + "down": {"uv": [17, 18.5], "uv_size": [0.125, -0.5]} + } + }, + { + "origin": [1.40981, 7.63307, -2.42134], + "size": [0.20283, 0.40443, 0.80762], + "inflate": 0.001, + "pivot": [1.41043, 9.24648, -2.42073], + "rotation": [0, -10, 90], + "uv": { + "north": {"uv": [18, 21], "uv_size": [0.125, 0.25]}, + "east": {"uv": [15, 12], "uv_size": [0.5, 0.25]}, + "south": {"uv": [21, 18], "uv_size": [0.125, 0.25]}, + "west": {"uv": [13, 15], "uv_size": [0.5, 0.25]}, + "up": {"uv": [18, 17], "uv_size": [0.125, 0.5]}, + "down": {"uv": [18, 18.5], "uv_size": [0.125, -0.5]} + } + }, + { + "origin": [1.40981, 7.77311, -1.62718], + "size": [0.20283, 0.40443, 1.41242], + "inflate": 0.001, + "pivot": [1.41043, 9.38652, -1.62657], + "rotation": [0, -3.5, 90], + "uv": { + "north": {"uv": [19, 21], "uv_size": [0.125, 0.25]}, + "east": {"uv": [14, 5], "uv_size": [0.875, 0.25]}, + "south": {"uv": [21, 19], "uv_size": [0.125, 0.25]}, + "west": {"uv": [14, 6], "uv_size": [0.875, 0.25]}, + "up": {"uv": [16, 11], "uv_size": [0.125, 0.875]}, + "down": {"uv": [12, 16.875], "uv_size": [0.125, -0.875]} + } + }, + { + "origin": [1.20821, 7.65804, -0.20631], + "size": [0.20283, 0.40442, 0.40443], + "inflate": 0.001, + "pivot": [1.41043, 9.27145, -0.20569], + "rotation": [0, -36, 90], + "uv": { + "north": {"uv": [20, 21], "uv_size": [0.125, 0.25]}, + "east": {"uv": [0, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [21, 20], "uv_size": [0.125, 0.25]}, + "west": {"uv": [19, 0], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 21], "uv_size": [0.125, 0.25]}, + "down": {"uv": [0, 22.25], "uv_size": [0.125, -0.25]} + } + }, + { + "origin": [1.20821, 7.89502, 0.11988], + "size": [0.20283, 0.40443, 0.60603], + "inflate": 0.001, + "pivot": [1.41043, 9.50844, 0.1205], + "rotation": [0, -67.25, 90], + "uv": { + "north": {"uv": [22, 0], "uv_size": [0.125, 0.25]}, + "east": {"uv": [1, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [1, 22], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 1], "uv_size": [0.375, 0.25]}, + "up": {"uv": [20, 8], "uv_size": [0.125, 0.375]}, + "down": {"uv": [9, 20.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.20821, 8.45278, 0.35377], + "size": [0.20283, 0.40442, 0.30363], + "inflate": 0.001, + "pivot": [1.41043, 10.06619, 0.35438], + "rotation": [0, -74.75, 90], + "uv": { + "north": {"uv": [22, 1], "uv_size": [0.125, 0.25]}, + "east": {"uv": [1, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [2, 22], "uv_size": [0.125, 0.25]}, + "west": {"uv": [19, 1], "uv_size": [0.25, 0.25]}, + "up": {"uv": [22, 2], "uv_size": [0.125, 0.25]}, + "down": {"uv": [3, 22.25], "uv_size": [0.125, -0.25]} + } + }, + { + "origin": [1.26887, 8.74453, 0.43331], + "size": [0.14217, 0.40443, 0.14445], + "inflate": 0.001, + "pivot": [1.41043, 10.35795, 0.43393], + "rotation": [-180, -60.25, -90], + "uv": { + "north": {"uv": [22, 3], "uv_size": [0.125, 0.25]}, + "east": {"uv": [4, 22], "uv_size": [0.125, 0.25]}, + "south": {"uv": [22, 4], "uv_size": [0.125, 0.25]}, + "west": {"uv": [5, 22], "uv_size": [0.125, 0.25]}, + "up": {"uv": [23, 25], "uv_size": [0.125, 0.125]}, + "down": {"uv": [25, 23.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.20821, 8.74453, -0.07069], + "size": [0.20283, 0.40443, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 10.35795, 0.43393], + "rotation": [-180, -81, -90], + "uv": { + "north": {"uv": [22, 5], "uv_size": [0.125, 0.25]}, + "east": {"uv": [2, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [6, 22], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 2], "uv_size": [0.375, 0.25]}, + "up": {"uv": [20, 9], "uv_size": [0.125, 0.375]}, + "down": {"uv": [10, 20.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.40981, 8.2152, 0.11143], + "size": [0.20283, 0.40442, 0.20283], + "inflate": 0.001, + "pivot": [1.41043, 9.82861, 0.31364], + "rotation": [-180, -66, -90], + "uv": { + "north": {"uv": [22, 6], "uv_size": [0.125, 0.25]}, + "east": {"uv": [7, 22], "uv_size": [0.125, 0.25]}, + "south": {"uv": [22, 7], "uv_size": [0.125, 0.25]}, + "west": {"uv": [8, 22], "uv_size": [0.125, 0.25]}, + "up": {"uv": [24, 25], "uv_size": [0.125, 0.125]}, + "down": {"uv": [25, 24.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.40981, 8.03103, -0.10897], + "size": [0.20283, 0.40443, 0.50522], + "inflate": 0.001, + "pivot": [1.41043, 9.64444, 0.39564], + "rotation": [-180, -49.25, -90], + "uv": { + "north": {"uv": [22, 8], "uv_size": [0.125, 0.25]}, + "east": {"uv": [3, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [9, 22], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 3], "uv_size": [0.375, 0.25]}, + "up": {"uv": [20, 10], "uv_size": [0.125, 0.375]}, + "down": {"uv": [11, 20.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.40981, 7.64922, 0.22002], + "size": [0.20283, 0.40442, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 9.26263, 0.72463], + "rotation": [180, -21.75, -90], + "uv": { + "north": {"uv": [22, 9], "uv_size": [0.125, 0.25]}, + "east": {"uv": [4, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [10, 22], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 4], "uv_size": [0.375, 0.25]}, + "up": {"uv": [20, 11], "uv_size": [0.125, 0.375]}, + "down": {"uv": [12, 20.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.40981, 7.46245, 0.99054], + "size": [0.20283, 0.40443, 0.20282], + "inflate": 0.001, + "pivot": [1.41043, 9.07587, 1.19275], + "rotation": [-180, 0, -90], + "uv": { + "north": {"uv": [22, 10], "uv_size": [0.125, 0.25]}, + "east": {"uv": [11, 22], "uv_size": [0.125, 0.25]}, + "south": {"uv": [22, 11], "uv_size": [0.125, 0.25]}, + "west": {"uv": [12, 22], "uv_size": [0.125, 0.25]}, + "up": {"uv": [25, 25], "uv_size": [0.125, 0.125]}, + "down": {"uv": [0, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.40981, 7.46245, 0.88974], + "size": [0.20283, 0.40443, 0.50522], + "inflate": 0.001, + "pivot": [1.41043, 9.07587, 1.39435], + "rotation": [-180, 30, -90], + "uv": { + "north": {"uv": [22, 12], "uv_size": [0.125, 0.25]}, + "east": {"uv": [5, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [13, 22], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 5], "uv_size": [0.375, 0.25]}, + "up": {"uv": [20, 12], "uv_size": [0.125, 0.375]}, + "down": {"uv": [13, 20.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.40981, 7.71445, 1.55302], + "size": [0.20283, 0.40443, 0.27843], + "inflate": 0.001, + "pivot": [1.41043, 9.32787, 1.83084], + "rotation": [-180, 60, -90], + "uv": { + "north": {"uv": [22, 13], "uv_size": [0.125, 0.25]}, + "east": {"uv": [14, 22], "uv_size": [0.125, 0.25]}, + "south": {"uv": [22, 14], "uv_size": [0.125, 0.25]}, + "west": {"uv": [15, 22], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 0], "uv_size": [0.125, 0.125]}, + "down": {"uv": [1, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.40981, 7.95452, 1.46481], + "size": [0.20283, 0.40442, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 9.56793, 1.96943], + "rotation": [-180, 82.5, -89.9999], + "uv": { + "north": {"uv": [22, 15], "uv_size": [0.125, 0.25]}, + "east": {"uv": [6, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [16, 22], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 6], "uv_size": [0.375, 0.25]}, + "up": {"uv": [20, 13], "uv_size": [0.125, 0.375]}, + "down": {"uv": [14, 20.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.40981, 8.4542, 1.7322], + "size": [0.20283, 0.40442, 0.30362], + "inflate": 0.001, + "pivot": [1.41043, 10.06761, 2.03521], + "rotation": [0, 77.5, 90], + "uv": { + "north": {"uv": [22, 16], "uv_size": [0.125, 0.25]}, + "east": {"uv": [17, 22], "uv_size": [0.125, 0.25]}, + "south": {"uv": [22, 17], "uv_size": [0.125, 0.25]}, + "west": {"uv": [18, 22], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 1], "uv_size": [0.125, 0.125]}, + "down": {"uv": [2, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.40981, 8.74944, 1.46515], + "size": [0.20283, 0.40442, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 10.36285, 1.96976], + "rotation": [0, 67.5, 90], + "uv": { + "north": {"uv": [22, 18], "uv_size": [0.125, 0.25]}, + "east": {"uv": [7, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [19, 22], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 7], "uv_size": [0.375, 0.25]}, + "up": {"uv": [20, 14], "uv_size": [0.125, 0.375]}, + "down": {"uv": [15, 20.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.41043, 8.75005, 1.46576], + "size": [0.1008, 0.4032, 0.504], + "pivot": [1.41043, 10.36285, 1.96976], + "rotation": [0, 81.25, 90], + "uv": { + "north": {"uv": [22, 19], "uv_size": [0.125, 0.25]}, + "east": {"uv": [8, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [20, 22], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 8], "uv_size": [0.375, 0.25]}, + "up": {"uv": [20, 15], "uv_size": [0.125, 0.375]}, + "down": {"uv": [16, 20.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.41043, 9.14856, 1.70683], + "size": [0.1008, 0.4032, 0.2016], + "pivot": [1.41043, 10.76136, 1.90843], + "rotation": [-180, 68.75, -90], + "uv": { + "north": {"uv": [22, 20], "uv_size": [0.125, 0.25]}, + "east": {"uv": [21, 22], "uv_size": [0.125, 0.25]}, + "south": {"uv": [22, 21], "uv_size": [0.125, 0.25]}, + "west": {"uv": [22, 22], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 2], "uv_size": [0.125, 0.125]}, + "down": {"uv": [3, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.20821, 9.13793, 1.13643], + "size": [0.20283, 0.40442, 0.45483], + "inflate": 0.001, + "pivot": [1.41043, 10.75134, 1.59064], + "rotation": [-180, 60, -90], + "uv": { + "north": {"uv": [0, 23], "uv_size": [0.125, 0.25]}, + "east": {"uv": [2, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 0], "uv_size": [0.125, 0.25]}, + "west": {"uv": [19, 2], "uv_size": [0.25, 0.25]}, + "up": {"uv": [1, 23], "uv_size": [0.125, 0.25]}, + "down": {"uv": [23, 1.25], "uv_size": [0.125, -0.25]} + } + }, + { + "origin": [1.30901, 9.56945, 1.83347], + "size": [0.20283, 0.40442, 0.50522], + "inflate": 0.001, + "pivot": [1.41043, 11.18286, 2.08608], + "rotation": [-180, 30, -90], + "uv": { + "north": {"uv": [2, 23], "uv_size": [0.125, 0.25]}, + "east": {"uv": [9, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [23, 2], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 9], "uv_size": [0.375, 0.25]}, + "up": {"uv": [20, 16], "uv_size": [0.125, 0.375]}, + "down": {"uv": [17, 20.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [0.30101, 9.60815, 2.35409], + "size": [1.11003, 0.40443, 0.20283], + "inflate": 0.001, + "pivot": [1.41043, 11.22157, 2.35471], + "rotation": [-180, 26.25, -90], + "uv": { + "north": {"uv": [8, 14], "uv_size": [0.75, 0.25]}, + "east": {"uv": [3, 23], "uv_size": [0.125, 0.25]}, + "south": {"uv": [14, 8], "uv_size": [0.75, 0.25]}, + "west": {"uv": [23, 3], "uv_size": [0.125, 0.25]}, + "up": {"uv": [10, 17], "uv_size": [0.75, 0.125]}, + "down": {"uv": [17, 10.125], "uv_size": [0.75, -0.125]} + } + }, + { + "origin": [0.17562, 9.60877, 2.55631], + "size": [0.3528, 0.4032, 0.83161], + "pivot": [1.41043, 11.22157, 2.35471], + "rotation": [-180, 26.25, -90], + "uv": { + "north": {"uv": [3, 19], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 13], "uv_size": [0.5, 0.25]}, + "south": {"uv": [19, 3], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 15], "uv_size": [0.5, 0.25]}, + "up": {"uv": [15, 14], "uv_size": [0.25, 0.5]}, + "down": {"uv": [15, 15.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [1.41043, 8.25611, 2.40362], + "size": [0.2016, 0.4032, 1.08361], + "pivot": [1.41043, 9.86891, 2.40362], + "rotation": [-180, 45.25, -90], + "uv": { + "north": {"uv": [4, 23], "uv_size": [0.125, 0.25]}, + "east": {"uv": [14, 14], "uv_size": [0.625, 0.25]}, + "south": {"uv": [23, 4], "uv_size": [0.125, 0.25]}, + "west": {"uv": [15, 0], "uv_size": [0.625, 0.25]}, + "up": {"uv": [18, 9], "uv_size": [0.125, 0.625]}, + "down": {"uv": [10, 18.625], "uv_size": [0.125, -0.625]} + } + }, + { + "origin": [1.41043, 8.31183, 2.31503], + "size": [0.2016, 0.4032, 0.2016], + "pivot": [1.41043, 9.92463, 2.51663], + "rotation": [-180, -18.75, -90], + "uv": { + "north": {"uv": [5, 23], "uv_size": [0.125, 0.25]}, + "east": {"uv": [23, 5], "uv_size": [0.125, 0.25]}, + "south": {"uv": [6, 23], "uv_size": [0.125, 0.25]}, + "west": {"uv": [23, 6], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 3], "uv_size": [0.125, 0.125]}, + "down": {"uv": [4, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.30963, 8.68399, 2.272], + "size": [0.1008, 0.4032, 0.2016], + "pivot": [1.41043, 10.29679, 2.4736], + "rotation": [-180, 66.25, -90], + "uv": { + "north": {"uv": [7, 23], "uv_size": [0.125, 0.25]}, + "east": {"uv": [23, 7], "uv_size": [0.125, 0.25]}, + "south": {"uv": [8, 23], "uv_size": [0.125, 0.25]}, + "west": {"uv": [23, 8], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 4], "uv_size": [0.125, 0.125]}, + "down": {"uv": [5, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.30963, 8.51679, 2.13458], + "size": [0.1008, 0.4032, 0.2016], + "pivot": [1.41043, 10.12959, 2.13458], + "rotation": [-180, -23.75, -90], + "uv": { + "north": {"uv": [9, 23], "uv_size": [0.125, 0.25]}, + "east": {"uv": [23, 9], "uv_size": [0.125, 0.25]}, + "south": {"uv": [10, 23], "uv_size": [0.125, 0.25]}, + "west": {"uv": [23, 10], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 5], "uv_size": [0.125, 0.125]}, + "down": {"uv": [6, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.37262, 9.39654, 1.80821], + "size": [0.07561, 0.4032, 0.4032], + "pivot": [1.41043, 11.00934, 2.00981], + "rotation": [-180, 28.75, -90], + "uv": { + "north": {"uv": [11, 23], "uv_size": [0.125, 0.25]}, + "east": {"uv": [4, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 11], "uv_size": [0.125, 0.25]}, + "west": {"uv": [19, 4], "uv_size": [0.25, 0.25]}, + "up": {"uv": [12, 23], "uv_size": [0.125, 0.25]}, + "down": {"uv": [23, 12.25], "uv_size": [0.125, -0.25]} + } + }, + { + "origin": [1.41043, 9.41836, 2.03874], + "size": [0.1008, 0.4032, 0.1008], + "pivot": [1.41043, 11.03116, 2.13954], + "rotation": [-180, -3.75, -90], + "uv": { + "north": {"uv": [13, 23], "uv_size": [0.125, 0.25]}, + "east": {"uv": [23, 13], "uv_size": [0.125, 0.25]}, + "south": {"uv": [14, 23], "uv_size": [0.125, 0.25]}, + "west": {"uv": [23, 14], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 6], "uv_size": [0.125, 0.125]}, + "down": {"uv": [7, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [0.60341, 8.6137, 2.84452], + "size": [0.80763, 0.40443, 0.20282], + "inflate": 0.001, + "pivot": [1.41043, 10.22712, 2.84513], + "rotation": [-180, 10.25, -90], + "uv": { + "north": {"uv": [0, 16], "uv_size": [0.5, 0.25]}, + "east": {"uv": [15, 23], "uv_size": [0.125, 0.25]}, + "south": {"uv": [16, 0], "uv_size": [0.5, 0.25]}, + "west": {"uv": [23, 15], "uv_size": [0.125, 0.25]}, + "up": {"uv": [5, 19], "uv_size": [0.5, 0.125]}, + "down": {"uv": [19, 5.125], "uv_size": [0.5, -0.125]} + } + }, + { + "origin": [1.40981, 7.11509, -0.20631], + "size": [0.20283, 0.40442, 0.40443], + "inflate": 0.001, + "pivot": [1.41043, 8.7285, -0.20569], + "rotation": [0, 36, 90], + "uv": { + "north": {"uv": [16, 23], "uv_size": [0.125, 0.25]}, + "east": {"uv": [6, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 16], "uv_size": [0.125, 0.25]}, + "west": {"uv": [19, 6], "uv_size": [0.25, 0.25]}, + "up": {"uv": [17, 23], "uv_size": [0.125, 0.25]}, + "down": {"uv": [23, 17.25], "uv_size": [0.125, -0.25]} + } + }, + { + "origin": [1.40981, 6.8781, 0.11988], + "size": [0.20283, 0.40443, 0.60603], + "inflate": 0.001, + "pivot": [1.41043, 8.49152, 0.1205], + "rotation": [0, 67.25, 90], + "uv": { + "north": {"uv": [18, 23], "uv_size": [0.125, 0.25]}, + "east": {"uv": [11, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [23, 18], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 11], "uv_size": [0.375, 0.25]}, + "up": {"uv": [20, 17], "uv_size": [0.125, 0.375]}, + "down": {"uv": [18, 20.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.40981, 6.32035, 0.35377], + "size": [0.20283, 0.40442, 0.30363], + "inflate": 0.001, + "pivot": [1.41043, 7.93376, 0.35438], + "rotation": [0, 74.75, 90], + "uv": { + "north": {"uv": [19, 23], "uv_size": [0.125, 0.25]}, + "east": {"uv": [7, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 19], "uv_size": [0.125, 0.25]}, + "west": {"uv": [19, 7], "uv_size": [0.25, 0.25]}, + "up": {"uv": [20, 23], "uv_size": [0.125, 0.25]}, + "down": {"uv": [23, 20.25], "uv_size": [0.125, -0.25]} + } + }, + { + "origin": [1.40981, 6.02861, 0.43331], + "size": [0.14217, 0.40443, 0.14445], + "inflate": 0.001, + "pivot": [1.41043, 7.64202, 0.43393], + "rotation": [180, 60.25, -90], + "uv": { + "north": {"uv": [21, 23], "uv_size": [0.125, 0.25]}, + "east": {"uv": [23, 21], "uv_size": [0.125, 0.25]}, + "south": {"uv": [22, 23], "uv_size": [0.125, 0.25]}, + "west": {"uv": [23, 22], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 7], "uv_size": [0.125, 0.125]}, + "down": {"uv": [8, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.40981, 6.02861, -0.07069], + "size": [0.20283, 0.40443, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 7.64202, 0.43393], + "rotation": [180, 81, -90], + "uv": { + "north": {"uv": [23, 23], "uv_size": [0.125, 0.25]}, + "east": {"uv": [12, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [0, 24], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 12], "uv_size": [0.375, 0.25]}, + "up": {"uv": [20, 18], "uv_size": [0.125, 0.375]}, + "down": {"uv": [19, 20.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.20821, 6.55793, 0.11143], + "size": [0.20283, 0.40443, 0.20283], + "inflate": 0.001, + "pivot": [1.41043, 8.17134, 0.31364], + "rotation": [180, 66, -90], + "uv": { + "north": {"uv": [24, 0], "uv_size": [0.125, 0.25]}, + "east": {"uv": [1, 24], "uv_size": [0.125, 0.25]}, + "south": {"uv": [24, 1], "uv_size": [0.125, 0.25]}, + "west": {"uv": [2, 24], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 8], "uv_size": [0.125, 0.125]}, + "down": {"uv": [9, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.20821, 6.74211, -0.10897], + "size": [0.20283, 0.40443, 0.50522], + "inflate": 0.001, + "pivot": [1.41043, 8.35553, 0.39564], + "rotation": [180, 49.25, -90], + "uv": { + "north": {"uv": [24, 2], "uv_size": [0.125, 0.25]}, + "east": {"uv": [13, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [3, 24], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 13], "uv_size": [0.375, 0.25]}, + "up": {"uv": [20, 19], "uv_size": [0.125, 0.375]}, + "down": {"uv": [20, 20.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.20821, 7.12391, 0.22002], + "size": [0.20283, 0.40443, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 8.73732, 0.72463], + "rotation": [-180, 21.75, -90], + "uv": { + "north": {"uv": [24, 3], "uv_size": [0.125, 0.25]}, + "east": {"uv": [14, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [4, 24], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 14], "uv_size": [0.375, 0.25]}, + "up": {"uv": [0, 21], "uv_size": [0.125, 0.375]}, + "down": {"uv": [21, 0.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.20821, 7.31067, 0.99054], + "size": [0.20283, 0.40443, 0.20282], + "inflate": 0.001, + "pivot": [1.41043, 8.92409, 1.19275], + "rotation": [-180, 0, -90], + "uv": { + "north": {"uv": [24, 4], "uv_size": [0.125, 0.25]}, + "east": {"uv": [5, 24], "uv_size": [0.125, 0.25]}, + "south": {"uv": [24, 5], "uv_size": [0.125, 0.25]}, + "west": {"uv": [6, 24], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 9], "uv_size": [0.125, 0.125]}, + "down": {"uv": [10, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.20821, 7.31067, 0.88974], + "size": [0.20283, 0.40443, 0.50522], + "inflate": 0.001, + "pivot": [1.41043, 8.92409, 1.39435], + "rotation": [-180, -30, -90], + "uv": { + "north": {"uv": [24, 6], "uv_size": [0.125, 0.25]}, + "east": {"uv": [15, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [7, 24], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 15], "uv_size": [0.375, 0.25]}, + "up": {"uv": [1, 21], "uv_size": [0.125, 0.375]}, + "down": {"uv": [21, 1.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.20821, 7.05867, 1.55302], + "size": [0.20283, 0.40443, 0.27843], + "inflate": 0.001, + "pivot": [1.41043, 8.67209, 1.83084], + "rotation": [-180, -60, -90], + "uv": { + "north": {"uv": [24, 7], "uv_size": [0.125, 0.25]}, + "east": {"uv": [8, 24], "uv_size": [0.125, 0.25]}, + "south": {"uv": [24, 8], "uv_size": [0.125, 0.25]}, + "west": {"uv": [9, 24], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 10], "uv_size": [0.125, 0.125]}, + "down": {"uv": [11, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.20821, 6.81862, 1.46481], + "size": [0.20283, 0.40443, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 8.43204, 1.96943], + "rotation": [-180, -82.5, -90.0001], + "uv": { + "north": {"uv": [24, 9], "uv_size": [0.125, 0.25]}, + "east": {"uv": [16, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [10, 24], "uv_size": [0.125, 0.25]}, + "west": {"uv": [17, 16], "uv_size": [0.375, 0.25]}, + "up": {"uv": [2, 21], "uv_size": [0.125, 0.375]}, + "down": {"uv": [21, 2.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.20821, 6.31893, 1.7322], + "size": [0.20283, 0.40443, 0.30362], + "inflate": 0.001, + "pivot": [1.41043, 7.93234, 2.03521], + "rotation": [0, -77.5, 90], + "uv": { + "north": {"uv": [24, 10], "uv_size": [0.125, 0.25]}, + "east": {"uv": [11, 24], "uv_size": [0.125, 0.25]}, + "south": {"uv": [24, 11], "uv_size": [0.125, 0.25]}, + "west": {"uv": [12, 24], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 11], "uv_size": [0.125, 0.125]}, + "down": {"uv": [12, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.20821, 6.02369, 1.46515], + "size": [0.20283, 0.40443, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 7.6371, 1.96976], + "rotation": [0, -67.5, 90], + "uv": { + "north": {"uv": [24, 12], "uv_size": [0.125, 0.25]}, + "east": {"uv": [17, 17], "uv_size": [0.375, 0.25]}, + "south": {"uv": [13, 24], "uv_size": [0.125, 0.25]}, + "west": {"uv": [0, 18], "uv_size": [0.375, 0.25]}, + "up": {"uv": [3, 21], "uv_size": [0.125, 0.375]}, + "down": {"uv": [21, 3.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.40981, 5.63522, 1.13643], + "size": [0.20283, 0.40442, 0.45483], + "inflate": 0.001, + "pivot": [1.41043, 7.24863, 1.59064], + "rotation": [-180, -60, -90], + "uv": { + "north": {"uv": [24, 13], "uv_size": [0.125, 0.25]}, + "east": {"uv": [8, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [14, 24], "uv_size": [0.125, 0.25]}, + "west": {"uv": [19, 8], "uv_size": [0.25, 0.25]}, + "up": {"uv": [24, 14], "uv_size": [0.125, 0.25]}, + "down": {"uv": [15, 24.25], "uv_size": [0.125, -0.25]} + } + }, + { + "origin": [1.30901, 5.20368, 1.83347], + "size": [0.20283, 0.40442, 0.50522], + "inflate": 0.001, + "pivot": [1.41043, 6.81709, 2.08608], + "rotation": [-180, -30, -90], + "uv": { + "north": {"uv": [24, 15], "uv_size": [0.125, 0.25]}, + "east": {"uv": [18, 0], "uv_size": [0.375, 0.25]}, + "south": {"uv": [16, 24], "uv_size": [0.125, 0.25]}, + "west": {"uv": [1, 18], "uv_size": [0.375, 0.25]}, + "up": {"uv": [4, 21], "uv_size": [0.125, 0.375]}, + "down": {"uv": [21, 4.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [0.5455, 7.82017, 2.98775], + "size": [0.86554, 0.40443, 0.20308], + "inflate": 0.001, + "pivot": [1.41043, 9.43359, 2.98862], + "rotation": [-180, 0, -90], + "uv": { + "north": {"uv": [1, 16], "uv_size": [0.5, 0.25]}, + "east": {"uv": [24, 16], "uv_size": [0.125, 0.25]}, + "south": {"uv": [16, 1], "uv_size": [0.5, 0.25]}, + "west": {"uv": [17, 24], "uv_size": [0.125, 0.25]}, + "up": {"uv": [9, 19], "uv_size": [0.5, 0.125]}, + "down": {"uv": [19, 9.125], "uv_size": [0.5, -0.125]} + } + }, + { + "origin": [1.3342, 7.34877, -3.20026], + "size": [0.07684, 0.40442, 0.80763], + "inflate": 0.001, + "pivot": [1.41043, 8.96218, -3.19965], + "rotation": [0, 15, 90], + "uv": { + "north": {"uv": [24, 17], "uv_size": [0.125, 0.25]}, + "east": {"uv": [2, 16], "uv_size": [0.5, 0.25]}, + "south": {"uv": [18, 24], "uv_size": [0.125, 0.25]}, + "west": {"uv": [16, 2], "uv_size": [0.5, 0.25]}, + "up": {"uv": [10, 19], "uv_size": [0.125, 0.5]}, + "down": {"uv": [19, 10.5], "uv_size": [0.125, -0.5]} + } + }, + { + "origin": [1.20821, 7.34877, -2.92305], + "size": [0.12722, 0.40442, 0.53042], + "inflate": 0.001, + "pivot": [1.41043, 8.96218, -3.19965], + "rotation": [0, 15, 90], + "uv": { + "north": {"uv": [24, 18], "uv_size": [0.125, 0.25]}, + "east": {"uv": [18, 1], "uv_size": [0.375, 0.25]}, + "south": {"uv": [19, 24], "uv_size": [0.125, 0.25]}, + "west": {"uv": [2, 18], "uv_size": [0.375, 0.25]}, + "up": {"uv": [5, 21], "uv_size": [0.125, 0.375]}, + "down": {"uv": [21, 5.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.48479, 7.42375, -2.94887], + "size": [0.12846, 0.40565, 0.55685], + "inflate": 0.002, + "pivot": [1.41043, 9.03777, -3.19965], + "rotation": [0, -15, 90], + "uv": { + "north": {"uv": [24, 19], "uv_size": [0.125, 0.25]}, + "east": {"uv": [18, 2], "uv_size": [0.375, 0.25]}, + "south": {"uv": [20, 24], "uv_size": [0.125, 0.25]}, + "west": {"uv": [3, 18], "uv_size": [0.375, 0.25]}, + "up": {"uv": [6, 21], "uv_size": [0.125, 0.375]}, + "down": {"uv": [21, 6.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.20821, 7.14005, -2.42134], + "size": [0.20283, 0.40443, 0.80762], + "inflate": 0.001, + "pivot": [1.41043, 8.75347, -2.42073], + "rotation": [0, 10, 90], + "uv": { + "north": {"uv": [24, 20], "uv_size": [0.125, 0.25]}, + "east": {"uv": [3, 16], "uv_size": [0.5, 0.25]}, + "south": {"uv": [21, 24], "uv_size": [0.125, 0.25]}, + "west": {"uv": [16, 3], "uv_size": [0.5, 0.25]}, + "up": {"uv": [11, 19], "uv_size": [0.125, 0.5]}, + "down": {"uv": [19, 11.5], "uv_size": [0.125, -0.5]} + } + }, + { + "origin": [1.20821, 7.00003, -1.62718], + "size": [0.20283, 0.40443, 1.41242], + "inflate": 0.001, + "pivot": [1.41043, 8.61344, -1.62657], + "rotation": [0, 3.5, 90], + "uv": { + "north": {"uv": [24, 21], "uv_size": [0.125, 0.25]}, + "east": {"uv": [7, 14], "uv_size": [0.875, 0.25]}, + "south": {"uv": [22, 24], "uv_size": [0.125, 0.25]}, + "west": {"uv": [14, 7], "uv_size": [0.875, 0.25]}, + "up": {"uv": [16, 12], "uv_size": [0.125, 0.875]}, + "down": {"uv": [13, 16.875], "uv_size": [0.125, -0.875]} + } + }, + { + "origin": [1.40981, 5.16497, 2.35409], + "size": [1.11003, 0.40443, 0.20283], + "inflate": 0.001, + "pivot": [1.41043, 6.77838, 2.35471], + "rotation": [-180, -26.25, -90], + "uv": { + "north": {"uv": [9, 14], "uv_size": [0.75, 0.25]}, + "east": {"uv": [24, 22], "uv_size": [0.125, 0.25]}, + "south": {"uv": [14, 9], "uv_size": [0.75, 0.25]}, + "west": {"uv": [23, 24], "uv_size": [0.125, 0.25]}, + "up": {"uv": [18, 3], "uv_size": [0.75, 0.125]}, + "down": {"uv": [4, 18.125], "uv_size": [0.75, -0.125]} + } + }, + { + "origin": [1.40981, 6.15942, 2.84452], + "size": [0.80763, 0.40443, 0.20282], + "inflate": 0.001, + "pivot": [1.41043, 7.77284, 2.84513], + "rotation": [-180, -10.25, -90], + "uv": { + "north": {"uv": [4, 16], "uv_size": [0.5, 0.25]}, + "east": {"uv": [24, 23], "uv_size": [0.125, 0.25]}, + "south": {"uv": [16, 4], "uv_size": [0.5, 0.25]}, + "west": {"uv": [24, 24], "uv_size": [0.125, 0.25]}, + "up": {"uv": [12, 19], "uv_size": [0.5, 0.125]}, + "down": {"uv": [19, 12.125], "uv_size": [0.5, -0.125]} + } + }, + { + "origin": [2.29242, 5.16558, 2.55631], + "size": [0.3528, 0.4032, 0.83161], + "pivot": [1.41043, 6.77838, 2.35471], + "rotation": [-180, -26.25, -90], + "uv": { + "north": {"uv": [13, 19], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 16], "uv_size": [0.5, 0.25]}, + "south": {"uv": [19, 13], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 5], "uv_size": [0.5, 0.25]}, + "up": {"uv": [16, 6], "uv_size": [0.25, 0.5]}, + "down": {"uv": [16, 7.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [1.41043, 6.09038, 2.272], + "size": [0.1008, 0.4032, 0.2016], + "pivot": [1.41043, 7.70318, 2.4736], + "rotation": [-180, -66.25, -90], + "uv": { + "north": {"uv": [0, 25], "uv_size": [0.125, 0.25]}, + "east": {"uv": [25, 0], "uv_size": [0.125, 0.25]}, + "south": {"uv": [1, 25], "uv_size": [0.125, 0.25]}, + "west": {"uv": [25, 1], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 12], "uv_size": [0.125, 0.125]}, + "down": {"uv": [13, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.20883, 6.46252, 2.31503], + "size": [0.2016, 0.4032, 0.2016], + "pivot": [1.41043, 8.07532, 2.51663], + "rotation": [-180, 18.75, -90], + "uv": { + "north": {"uv": [2, 25], "uv_size": [0.125, 0.25]}, + "east": {"uv": [25, 2], "uv_size": [0.125, 0.25]}, + "south": {"uv": [3, 25], "uv_size": [0.125, 0.25]}, + "west": {"uv": [25, 3], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 13], "uv_size": [0.125, 0.125]}, + "down": {"uv": [14, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.20883, 6.51824, 2.40362], + "size": [0.2016, 0.4032, 1.08361], + "pivot": [1.41043, 8.13104, 2.40362], + "rotation": [-180, -45.25, -90], + "uv": { + "north": {"uv": [4, 25], "uv_size": [0.125, 0.25]}, + "east": {"uv": [15, 1], "uv_size": [0.625, 0.25]}, + "south": {"uv": [25, 4], "uv_size": [0.125, 0.25]}, + "west": {"uv": [15, 2], "uv_size": [0.625, 0.25]}, + "up": {"uv": [18, 10], "uv_size": [0.125, 0.625]}, + "down": {"uv": [11, 18.625], "uv_size": [0.125, -0.625]} + } + }, + { + "origin": [0.56227, 7.2878, 1.4982], + "size": [0.84728, 0.4032, 0.48261], + "pivot": [1.41043, 8.9006, 1.64075], + "rotation": [-0.002, -89.75, 90.002], + "uv": { + "north": {"uv": [8, 16], "uv_size": [0.5, 0.25]}, + "east": {"uv": [14, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 8], "uv_size": [0.5, 0.25]}, + "west": {"uv": [19, 14], "uv_size": [0.25, 0.25]}, + "up": {"uv": [9, 16], "uv_size": [0.5, 0.25]}, + "down": {"uv": [16, 9.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.31972, 7.2878, 1.2462], + "size": [0.88199, 0.4032, 0.98661], + "pivot": [1.41043, 8.9006, 1.64075], + "rotation": [-0.002, -89.75, 90.002], + "uv": { + "north": {"uv": [10, 16], "uv_size": [0.5, 0.25]}, + "east": {"uv": [15, 3], "uv_size": [0.625, 0.25]}, + "south": {"uv": [16, 10], "uv_size": [0.5, 0.25]}, + "west": {"uv": [15, 4], "uv_size": [0.625, 0.25]}, + "up": {"uv": [7, 13], "uv_size": [0.5, 0.625]}, + "down": {"uv": [13, 12.625], "uv_size": [0.5, -0.625]} + } + }, + { + "origin": [-0.14333, 7.2878, 0.7926], + "size": [0.4032, 0.4032, 0.4536], + "pivot": [1.41043, 8.9006, 1.64075], + "rotation": [-0.002, -89.75, 90.002], + "uv": { + "north": {"uv": [15, 19], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 15], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 19], "uv_size": [0.25, 0.25]}, + "west": {"uv": [19, 16], "uv_size": [0.25, 0.25]}, + "up": {"uv": [17, 19], "uv_size": [0.25, 0.25]}, + "down": {"uv": [19, 17.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.25987, 7.2878, 1.1958], + "size": [0.1008, 0.4032, 0.0504], + "pivot": [1.41043, 8.9006, 1.64075], + "rotation": [-0.002, -89.75, 90.002], + "uv": { + "north": {"uv": [5, 25], "uv_size": [0.125, 0.25]}, + "east": {"uv": [25, 5], "uv_size": [0.125, 0.25]}, + "south": {"uv": [6, 25], "uv_size": [0.125, 0.25]}, + "west": {"uv": [25, 6], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 14], "uv_size": [0.125, 0.125]}, + "down": {"uv": [15, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [2.46018, 7.48655, 1.1958], + "size": [0.1008, 0.4032, 0.0504], + "pivot": [1.41043, 9.09935, 1.64075], + "rotation": [-0.002, 89.75, 89.998], + "uv": { + "north": {"uv": [7, 25], "uv_size": [0.125, 0.25]}, + "east": {"uv": [25, 7], "uv_size": [0.125, 0.25]}, + "south": {"uv": [8, 25], "uv_size": [0.125, 0.25]}, + "west": {"uv": [25, 8], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 15], "uv_size": [0.125, 0.125]}, + "down": {"uv": [16, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [2.56098, 7.48655, 0.7926], + "size": [0.4032, 0.4032, 0.4536], + "pivot": [1.41043, 9.09935, 1.64075], + "rotation": [-0.002, 89.75, 89.998], + "uv": { + "north": {"uv": [18, 19], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 18], "uv_size": [0.25, 0.25]}, + "south": {"uv": [19, 19], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 20], "uv_size": [0.25, 0.25]}, + "up": {"uv": [20, 0], "uv_size": [0.25, 0.25]}, + "down": {"uv": [1, 20.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [1.41043, 6.25756, 2.13458], + "size": [0.1008, 0.4032, 0.2016], + "pivot": [1.41043, 7.87036, 2.13458], + "rotation": [-180, 23.75, -90], + "uv": { + "north": {"uv": [9, 25], "uv_size": [0.125, 0.25]}, + "east": {"uv": [25, 9], "uv_size": [0.125, 0.25]}, + "south": {"uv": [10, 25], "uv_size": [0.125, 0.25]}, + "west": {"uv": [25, 10], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 16], "uv_size": [0.125, 0.125]}, + "down": {"uv": [17, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.30963, 6.0243, 1.46576], + "size": [0.1008, 0.4032, 0.504], + "pivot": [1.41043, 7.6371, 1.96976], + "rotation": [0, -81.25, 90], + "uv": { + "north": {"uv": [11, 25], "uv_size": [0.125, 0.25]}, + "east": {"uv": [18, 4], "uv_size": [0.375, 0.25]}, + "south": {"uv": [25, 11], "uv_size": [0.125, 0.25]}, + "west": {"uv": [5, 18], "uv_size": [0.375, 0.25]}, + "up": {"uv": [7, 21], "uv_size": [0.125, 0.375]}, + "down": {"uv": [21, 7.375], "uv_size": [0.125, -0.375]} + } + }, + { + "origin": [1.30963, 5.6258, 1.70683], + "size": [0.1008, 0.4032, 0.2016], + "pivot": [1.41043, 7.2386, 1.90843], + "rotation": [-180, -68.75, -90], + "uv": { + "north": {"uv": [12, 25], "uv_size": [0.125, 0.25]}, + "east": {"uv": [25, 12], "uv_size": [0.125, 0.25]}, + "south": {"uv": [13, 25], "uv_size": [0.125, 0.25]}, + "west": {"uv": [25, 13], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 17], "uv_size": [0.125, 0.125]}, + "down": {"uv": [18, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.37262, 5.37781, 1.80821], + "size": [0.07561, 0.4032, 0.4032], + "pivot": [1.41043, 6.99061, 2.00981], + "rotation": [-180, -28.75, -90], + "uv": { + "north": {"uv": [14, 25], "uv_size": [0.125, 0.25]}, + "east": {"uv": [20, 1], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 14], "uv_size": [0.125, 0.25]}, + "west": {"uv": [2, 20], "uv_size": [0.25, 0.25]}, + "up": {"uv": [15, 25], "uv_size": [0.125, 0.25]}, + "down": {"uv": [25, 15.25], "uv_size": [0.125, -0.25]} + } + }, + { + "origin": [1.30963, 5.35599, 2.03874], + "size": [0.1008, 0.4032, 0.1008], + "pivot": [1.41043, 6.96879, 2.13954], + "rotation": [-180, 3.75, -90], + "uv": { + "north": {"uv": [16, 25], "uv_size": [0.125, 0.25]}, + "east": {"uv": [25, 16], "uv_size": [0.125, 0.25]}, + "south": {"uv": [17, 25], "uv_size": [0.125, 0.25]}, + "west": {"uv": [25, 17], "uv_size": [0.125, 0.25]}, + "up": {"uv": [26, 18], "uv_size": [0.125, 0.125]}, + "down": {"uv": [19, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [1.61357, 7.14067, -2.47113], + "size": [0.6552, 0, 0.9072], + "pivot": [1.61357, 8.75347, -2.42073], + "rotation": [0, 10, 90], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [14, 3], "uv_size": [0.375, 0.625]}, + "down": {"uv": [14, 4.625], "uv_size": [0.375, -0.625]} + } + }, + { + "origin": [1.61357, 7.00064, -1.65178], + "size": [0.6552, 0, 1.94041], + "pivot": [1.61357, 8.61344, -1.62657], + "rotation": [0, 3.5, 90], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "east": {"uv": [0, 0], "uv_size": [1.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "west": {"uv": [0, 0], "uv_size": [1.25, 0]}, + "up": {"uv": [12, 12], "uv_size": [0.375, 1.25]}, + "down": {"uv": [6, 14.25], "uv_size": [0.375, -1.25]} + } + }, + { + "origin": [1.61357, 7.34938, -3.19965], + "size": [0.65724, 0, 0.81023], + "pivot": [1.61357, 8.96218, -3.19965], + "rotation": [0, 15, 90], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [10, 14], "uv_size": [0.375, 0.5]}, + "down": {"uv": [14, 10.5], "uv_size": [0.375, -0.5]} + } + }, + { + "origin": [-0.10003, 8.32733, -4.76379], + "size": [0.1008, -0.00001, 1.39404], + "pivot": [0.00077, 8.32733, -3.36975], + "rotation": [-0.005, 27.0904, 89.9908], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.875, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.875, 0]}, + "up": {"uv": [16, 13], "uv_size": [0.125, 0.875]}, + "down": {"uv": [14, 16.875], "uv_size": [0.125, -0.875]} + } + }, + { + "origin": [0.95915, 7.63368, -2.47113], + "size": [0.6552, 0, 0.9072], + "pivot": [1.61435, 9.24648, -2.42073], + "rotation": [0, -10, 90], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [14, 1], "uv_size": [0.375, 0.625]}, + "down": {"uv": [14, 2.625], "uv_size": [0.375, -0.625]} + } + }, + { + "origin": [0.95915, 7.77372, -1.65178], + "size": [0.6552, 0, 1.94041], + "pivot": [1.61435, 9.38652, -1.62657], + "rotation": [0, -3.5, 90], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "east": {"uv": [0, 0], "uv_size": [1.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "west": {"uv": [0, 0], "uv_size": [1.25, 0]}, + "up": {"uv": [10, 12], "uv_size": [0.375, 1.25]}, + "down": {"uv": [11, 13.25], "uv_size": [0.375, -1.25]} + } + }, + { + "origin": [0.95712, 7.42497, -3.19965], + "size": [0.65723, 0, 0.81023], + "pivot": [1.61435, 9.03777, -3.19965], + "rotation": [0, -15, 90], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [13, 14], "uv_size": [0.375, 0.5]}, + "down": {"uv": [14, 13.5], "uv_size": [0.375, -0.5]} + } + }, + { + "origin": [0.00155, 9.67262, -4.76379], + "size": [0.1008, -0.00002, 1.39404], + "pivot": [0.00155, 9.67262, -3.36975], + "rotation": [-0.005, -27.0904, 90.0092], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.875, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.875, 0]}, + "up": {"uv": [16, 14], "uv_size": [0.125, 0.875]}, + "down": {"uv": [15, 16.875], "uv_size": [0.125, -0.875]} + } + }, + { + "origin": [0.20005, 9.23937, -4.61085], + "size": [0.07559, 0, 1.4112], + "pivot": [-0.00155, 9.23937, 0.02595], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.875, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.875, 0]}, + "up": {"uv": [16, 15], "uv_size": [0.125, 0.875]}, + "down": {"uv": [16, 16.875], "uv_size": [0.125, -0.875]} + } + } + ] + }, + { + "name": "bone3", + "parent": "push_r", + "pivot": [1.71429, 9.77245, -0.6916], + "cubes": [ + { + "origin": [0.00153, 8.42813, -3.47055], + "size": [0, 0.5544, 0.1008], + "pivot": [0.00153, 8.32733, -3.36975], + "rotation": [-14.8174, 7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [8, 21], "uv_size": [0.125, 0.375]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [21, 8], "uv_size": [0.125, 0.375]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [0.00092, 8.32672, -3.39557], + "size": [0.00122, 0.10203, 0.02643], + "inflate": 0.001, + "pivot": [0.00153, 8.32733, -3.36975], + "rotation": [-14.8174, 7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [26, 19], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [20, 26], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [0.10186, 8.86461, -4.41521], + "size": [0, 0.1008, 1.23479], + "pivot": [0.10186, 8.91501, -3.79782], + "rotation": [-2.1826, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [18, 5], "uv_size": [0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [6, 18], "uv_size": [0.75, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "down": {"uv": [0, 0.75], "uv_size": [0, -0.75]} + } + }, + { + "origin": [0.00156, 8.93697, -4.56045], + "size": [0, 0.02519, 0.1512], + "pivot": [0.00156, 8.96216, -4.61085], + "rotation": [2.1826, 7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [26, 20], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [21, 26], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [0.00156, 8.88657, -4.45965], + "size": [0, 0.0504, 0.0504], + "pivot": [0.00156, 8.96216, -4.61085], + "rotation": [2.1826, 7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [26, 21], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [22, 26], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [0.00032, 8.64352, -4.51214], + "size": [0.00245, 0.10325, 1.19489], + "inflate": 0.002, + "pivot": [0.00155, 8.64476, -3.99031], + "rotation": [-26.0674, 7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [18, 6], "uv_size": [0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [7, 18], "uv_size": [0.75, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "down": {"uv": [0, 0.75], "uv_size": [0, -0.75]} + } + }, + { + "origin": [0.00032, 9.35396, -4.51214], + "size": [0.00245, 0.10325, 1.19489], + "inflate": 0.002, + "pivot": [0.00155, 9.3552, -3.99031], + "rotation": [-26.0674, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [18, 7], "uv_size": [0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [8, 18], "uv_size": [0.75, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "down": {"uv": [0, 0.75], "uv_size": [0, -0.75]} + } + }, + { + "origin": [0.00156, 8.93699, -4.40925], + "size": [0, 0.1008, 1.2348], + "pivot": [0.00156, 9.03779, -4.61085], + "rotation": [2.1826, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [18, 8], "uv_size": [0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [9, 18], "uv_size": [0.75, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "down": {"uv": [0, 0.75], "uv_size": [0, -0.75]} + } + }, + { + "origin": [0.04511, 8.64214, -4.26343], + "size": [0.00123, 0.10202, 0.99206], + "inflate": 0.001, + "pivot": [0.04572, 8.69315, -3.7674], + "rotation": [26.0674, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [18, 11], "uv_size": [0.625, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [12, 18], "uv_size": [0.625, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.625]}, + "down": {"uv": [0, 0.625], "uv_size": [0, -0.625]} + } + }, + { + "origin": [0.07458, 8.68779, -4.02761], + "size": [0.00122, 0.10203, 0.76526], + "inflate": 0.001, + "pivot": [0.07519, 8.73881, -3.64499], + "rotation": [26.0674, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [20, 2], "uv_size": [0.5, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [3, 20], "uv_size": [0.5, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.625]}, + "down": {"uv": [0, 0.625], "uv_size": [0, -0.625]} + } + }, + { + "origin": [0.00032, 9.96189, -2.54185], + "size": [0.10325, 0.00084, 0.81046], + "inflate": 0.002, + "pivot": [0.00155, 9.96174, -2.13742], + "rotation": [2.9567, -9.5572, 72.7198], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [18, 13], "uv_size": [0.125, 0.5]}, + "down": {"uv": [14, 18.5], "uv_size": [0.125, -0.5]} + } + }, + { + "origin": [0.10464, 8.74555, -3.78842], + "size": [0, 0.1008, 0.48684], + "pivot": [0.10464, 8.79595, -3.545], + "rotation": [26.0674, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [18, 25], "uv_size": [0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [25, 18], "uv_size": [0.25, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [0.13778, 8.78932, -3.5723], + "size": [0, 0.12599, 0.31043], + "pivot": [0.13778, 8.85232, -3.41708], + "rotation": [26.0674, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [19, 25], "uv_size": [0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [25, 19], "uv_size": [0.25, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [0.00155, 8.64475, -4.66212], + "size": [0, 0.02519, 0.1512], + "pivot": [0.00155, 8.64476, -3.99031], + "rotation": [-26.0674, 7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [26, 22], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [23, 26], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [0.00155, 8.66994, -4.61172], + "size": [0, 0.02521, 0.1008], + "pivot": [0.00155, 8.64476, -3.99031], + "rotation": [-26.0674, 7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [26, 23], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [24, 26], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.2409, 8.53864, -3.29885], + "size": [0.68431, 0, 0.81022], + "pivot": [0.10125, 8.53864, -2.89373], + "rotation": [-4.4751, -14.3315, -72.4542], + "uv": { + "down": {"uv": [11, 14.5], "uv_size": [0.375, -0.5]} + } + }, + { + "origin": [-0.24068, 8.43342, -2.51276], + "size": [0.68386, 0, 0.02371], + "pivot": [0.10125, 8.43342, -2.5009], + "rotation": [-4.4341, -12.0883, -72.6337], + "uv": { + "down": {"uv": [9, 21.125], "uv_size": [0.375, -0.125]} + } + }, + { + "origin": [-0.2405, 8.36015, -2.48384], + "size": [0.68399, 0, 0.80802], + "pivot": [0.10149, 8.36015, -2.07983], + "rotation": [-2.9567, -9.5572, -72.7198], + "uv": { + "down": {"uv": [14, 11.5], "uv_size": [0.375, -0.5]} + } + }, + { + "origin": [-0.23977, 8.29001, -1.70432], + "size": [0.68252, 0, 0.04472], + "pivot": [0.10149, 8.29001, -1.68197], + "rotation": [-2.9307, -5.8121, -72.9141], + "uv": { + "down": {"uv": [21, 9.125], "uv_size": [0.375, -0.125]} + } + }, + { + "origin": [-0.23971, 8.42986, -2.49121], + "size": [0.68192, 0, 0.02363], + "pivot": [0.10125, 8.42986, -2.47939], + "rotation": [-2.9787, -11.8041, -72.6012], + "uv": { + "down": {"uv": [10, 21.125], "uv_size": [0.375, -0.125]} + } + }, + { + "origin": [-0.2405, 8.2275, -1.65], + "size": [0.68399, 0, 1.91681], + "pivot": [0.10149, 8.2275, -0.6916], + "rotation": [-1.0264, -3.3463, -72.937], + "uv": { + "down": {"uv": [8, 13.25], "uv_size": [0.375, -1.25]} + } + }, + { + "origin": [-0.03748, 8.99876, -4.61207], + "size": [0.07806, 0.00226, 0.20405], + "inflate": 0.002, + "pivot": [0.00155, 8.99998, -4.61085], + "rotation": [8.0111, 0, 90], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [22, 25], "uv_size": [0.125, 0.125]}, + "down": {"uv": [25, 22.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [0.06287, 8.99998, -4.61778], + "size": [0.07561, 0, 1.42531], + "pivot": [0.10067, 8.99998, -3.90512], + "rotation": [-8.0111, 0, -90], + "uv": { + "down": {"uv": [11, 16.875], "uv_size": [0.125, -0.875]} + } + }, + { + "origin": [-0.24024, 8.286, -1.66163], + "size": [0.68347, 0, 0.02685], + "pivot": [0.10149, 8.286, -1.64821], + "rotation": [-1.0296, -5.5959, -72.8965], + "uv": { + "down": {"uv": [21, 10.125], "uv_size": [0.375, -0.125]} + } + }, + { + "origin": [-0.10048, 8.2604, -3.37963], + "size": [0.10325, 0.00221, 0.81267], + "inflate": 0.002, + "pivot": [0.00155, 8.26163, -3.12449], + "rotation": [4.4751, 14.3315, 107.5458], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [20, 3], "uv_size": [0.125, 0.5]}, + "down": {"uv": [4, 20.5], "uv_size": [0.125, -0.5]} + } + }, + { + "origin": [0.78314, 8.74874, -2.44268], + "size": [0.10325, 0.00221, 0.02616], + "inflate": 0.002, + "pivot": [0.20131, 8.74985, -2.41774], + "rotation": [4.4341, 12.0883, 107.3663], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [26, 24], "uv_size": [0.125, 0.125]}, + "down": {"uv": [25, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [0.78121, 8.74969, -2.42242], + "size": [0.10325, 0.0022, 0.02608], + "inflate": 0.002, + "pivot": [0.20131, 8.75079, -2.4212], + "rotation": [2.9787, 11.8041, 107.3988], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [26, 25], "uv_size": [0.125, 0.125]}, + "down": {"uv": [26, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [-0.10048, 8.03835, -2.54185], + "size": [0.10325, 0.00084, 0.81046], + "inflate": 0.002, + "pivot": [0.00155, 8.03821, -2.13742], + "rotation": [2.9567, 9.5572, 107.2802], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [20, 4], "uv_size": [0.125, 0.5]}, + "down": {"uv": [5, 20.5], "uv_size": [0.125, -0.5]} + } + }, + { + "origin": [0.78293, 8.61138, -1.67118], + "size": [0.10326, 0.00084, 0.04717], + "inflate": 0.002, + "pivot": [0.20244, 8.6118, -1.62523], + "rotation": [2.9307, 5.8121, 107.0859], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [0, 27], "uv_size": [0.125, 0.125]}, + "down": {"uv": [27, 0.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [0.78389, 8.61173, -1.62949], + "size": [0.10325, 0.00084, 0.02931], + "inflate": 0.002, + "pivot": [0.20244, 8.61215, -1.62826], + "rotation": [1.0296, 5.5959, 107.1035], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [1, 27], "uv_size": [0.125, 0.125]}, + "down": {"uv": [27, 1.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [-0.10048, 7.90191, -1.67118], + "size": [0.10325, 0.00084, 1.91926], + "inflate": 0.002, + "pivot": [0.00155, 7.90176, -0.72334], + "rotation": [1.0264, 3.3463, 107.063], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [1.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [1.25, 0]}, + "up": {"uv": [15, 5], "uv_size": [0.125, 1.25]}, + "down": {"uv": [6, 16.25], "uv_size": [0.125, -1.25]} + } + }, + { + "origin": [0.00032, 9.73711, -3.37963], + "size": [0.10325, 0.0022, 0.81267], + "inflate": 0.002, + "pivot": [0.00155, 9.73834, -3.12449], + "rotation": [4.4751, -14.3315, 72.4542], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [20, 5], "uv_size": [0.125, 0.5]}, + "down": {"uv": [6, 20.5], "uv_size": [0.125, -0.5]} + } + }, + { + "origin": [-0.48376, 9.249, -2.44268], + "size": [0.10325, 0.00221, 0.02616], + "inflate": 0.002, + "pivot": [0.20131, 9.2501, -2.41774], + "rotation": [4.4341, -12.0883, 72.6337], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [2, 27], "uv_size": [0.125, 0.125]}, + "down": {"uv": [27, 2.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [-0.48182, 9.24806, -2.42242], + "size": [0.10325, 0.00221, 0.02608], + "inflate": 0.002, + "pivot": [0.20131, 9.24916, -2.4212], + "rotation": [2.9787, -11.8041, 72.6012], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [3, 27], "uv_size": [0.125, 0.125]}, + "down": {"uv": [27, 3.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [-0.48131, 9.38773, -1.67118], + "size": [0.10325, 0.00084, 0.04717], + "inflate": 0.002, + "pivot": [0.20244, 9.38815, -1.62523], + "rotation": [2.9307, -5.8121, 72.9141], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [4, 27], "uv_size": [0.125, 0.125]}, + "down": {"uv": [27, 4.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [-0.48224, 9.38738, -1.62949], + "size": [0.10325, 0.00084, 0.02931], + "inflate": 0.002, + "pivot": [0.20244, 9.3878, -1.62826], + "rotation": [1.0296, -5.5959, 72.8965], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [5, 27], "uv_size": [0.125, 0.125]}, + "down": {"uv": [27, 5.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [0.00032, 10.09833, -1.67118], + "size": [0.10325, 0.00084, 1.91926], + "inflate": 0.002, + "pivot": [0.00155, 10.09819, -0.72334], + "rotation": [1.0264, -3.3463, 72.937], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [1.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [1.25, 0]}, + "up": {"uv": [7, 15], "uv_size": [0.125, 1.25]}, + "down": {"uv": [15, 8.25], "uv_size": [0.125, -1.25]} + } + }, + { + "origin": [-0.24024, 9.71394, -1.66163], + "size": [0.68345, 0, 0.02685], + "pivot": [0.10149, 9.71394, -1.64821], + "rotation": [-1.0296, 5.5959, -107.1035], + "uv": { + "down": {"uv": [11, 21.125], "uv_size": [0.375, -0.125]} + } + }, + { + "origin": [0.00214, 9.77403, -3.46994], + "size": [-0.00122, 0.55318, 0.09958], + "inflate": -0.001, + "pivot": [0.00153, 9.67262, -3.36975], + "rotation": [-14.8174, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [21, 11], "uv_size": [0.125, 0.375]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [12, 21], "uv_size": [0.125, 0.375]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [0.00092, 9.67201, -3.39557], + "size": [0.00122, 0.10202, 0.02643], + "inflate": 0.001, + "pivot": [0.00153, 9.67262, -3.36975], + "rotation": [-14.8174, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [6, 27], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [27, 6], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [0.00156, 9.01258, -4.56045], + "size": [0, 0.02521, 0.1512], + "pivot": [0.00156, 9.03779, -4.61085], + "rotation": [2.1826, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [7, 27], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [27, 7], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [0.00156, 8.96218, -4.45965], + "size": [0, 0.0504, 0.0504], + "pivot": [0.00156, 9.03779, -4.61085], + "rotation": [2.1826, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [8, 27], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [27, 8], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [0.04511, 9.25581, -4.26343], + "size": [0.00123, 0.10202, 0.99206], + "inflate": 0.001, + "pivot": [0.04572, 9.30682, -3.7674], + "rotation": [26.0674, 7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [18, 12], "uv_size": [0.625, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [13, 18], "uv_size": [0.625, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.625]}, + "down": {"uv": [0, 0.625], "uv_size": [0, -0.625]} + } + }, + { + "origin": [0.00094, 9.55617, -4.10833], + "size": [0.00122, 0.10203, 0.79047], + "inflate": 0.001, + "pivot": [0.00155, 9.3552, -3.99031], + "rotation": [-26.0674, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [20, 6], "uv_size": [0.5, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [7, 20], "uv_size": [0.5, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.625]}, + "down": {"uv": [0, 0.625], "uv_size": [0, -0.625]} + } + }, + { + "origin": [0.00155, 9.65759, -3.90612], + "size": [0, 0.1008, 0.48684], + "pivot": [0.00155, 9.3552, -3.99031], + "rotation": [-26.0674, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [20, 25], "uv_size": [0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [25, 20], "uv_size": [0.25, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [0.00155, 9.75839, -3.72971], + "size": [0, 0.12601, 0.31043], + "pivot": [0.00155, 9.3552, -3.99031], + "rotation": [-26.0674, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [21, 25], "uv_size": [0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [25, 21], "uv_size": [0.25, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [0.00155, 9.35519, -4.66212], + "size": [0, 0.02521, 0.1512], + "pivot": [0.00155, 9.3552, -3.99031], + "rotation": [-26.0674, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [9, 27], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [27, 9], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [0.00155, 9.3804, -4.61172], + "size": [0, 0.02519, 0.1008], + "pivot": [0.00155, 9.3552, -3.99031], + "rotation": [-26.0674, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [10, 27], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [27, 10], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.24092, 9.46131, -3.29885], + "size": [0.68433, 0, 0.81022], + "pivot": [0.10124, 9.46131, -2.89373], + "rotation": [-4.4751, 14.3315, -107.5458], + "uv": { + "down": {"uv": [12, 14.5], "uv_size": [0.375, -0.5]} + } + }, + { + "origin": [-0.24065, 9.56653, -2.51276], + "size": [0.68385, 0, 0.02371], + "pivot": [0.10127, 9.56653, -2.5009], + "rotation": [-4.4341, 12.0883, -107.3663], + "uv": { + "down": {"uv": [21, 12.125], "uv_size": [0.375, -0.125]} + } + }, + { + "origin": [-0.2405, 9.6398, -2.48384], + "size": [0.68399, 0, 0.80802], + "pivot": [0.10149, 9.6398, -2.07983], + "rotation": [-2.9567, 9.5572, -107.2802], + "uv": { + "down": {"uv": [14, 12.5], "uv_size": [0.375, -0.5]} + } + }, + { + "origin": [-0.23977, 9.70994, -1.70432], + "size": [0.68252, 0, 0.04472], + "pivot": [0.10149, 9.70994, -1.68197], + "rotation": [-2.9307, 5.8121, -107.0859], + "uv": { + "down": {"uv": [13, 21.125], "uv_size": [0.375, -0.125]} + } + }, + { + "origin": [-0.23968, 9.57009, -2.49121], + "size": [0.68191, 0, 0.02363], + "pivot": [0.10127, 9.57009, -2.47939], + "rotation": [-2.9787, 11.8041, -107.3988], + "uv": { + "down": {"uv": [21, 13.125], "uv_size": [0.375, -0.125]} + } + }, + { + "origin": [-0.2405, 9.77245, -1.65], + "size": [0.68399, 0, 1.91681], + "pivot": [0.10149, 9.77245, -0.6916], + "rotation": [-1.0264, 3.3463, -107.063], + "uv": { + "down": {"uv": [9, 13.25], "uv_size": [0.375, -1.25]} + } + }, + { + "origin": [-0.44349, 9.77245, -1.65], + "size": [0.68399, 0, 1.91681], + "pivot": [-0.10149, 9.77245, -0.6916], + "rotation": [-1.0264, -3.3463, 107.063], + "uv": { + "down": {"uv": [9, 13.25], "uv_size": [0.375, -1.25]} + } + }, + { + "origin": [-0.00153, 8.42813, -3.47055], + "size": [0, 0.5544, 0.1008], + "pivot": [-0.00153, 8.32733, -3.36975], + "rotation": [-14.8174, -7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [21.125, 8], "uv_size": [-0.125, 0.375]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [8.125, 21], "uv_size": [-0.125, 0.375]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.00214, 8.32672, -3.39557], + "size": [0.00122, 0.10203, 0.02643], + "inflate": 0.001, + "pivot": [-0.00153, 8.32733, -3.36975], + "rotation": [-14.8174, -7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [20.125, 26], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [26.125, 19], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.10186, 8.86461, -4.41521], + "size": [0, 0.1008, 1.23479], + "pivot": [-0.10186, 8.91501, -3.79782], + "rotation": [-2.1826, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [6.75, 18], "uv_size": [-0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [18.75, 5], "uv_size": [-0.75, 0.125]}, + "up": {"uv": [0, 0.75], "uv_size": [0, -0.75]}, + "down": {"uv": [0, 0.75], "uv_size": [0, -0.75]} + } + }, + { + "origin": [-0.00156, 8.93697, -4.56045], + "size": [0, 0.02519, 0.1512], + "pivot": [-0.00156, 8.96216, -4.61085], + "rotation": [2.1826, -7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [21.125, 26], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [26.125, 20], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.00156, 8.88657, -4.45965], + "size": [0, 0.0504, 0.0504], + "pivot": [-0.00156, 8.96216, -4.61085], + "rotation": [2.1826, -7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [22.125, 26], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [26.125, 21], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.00277, 8.64352, -4.51214], + "size": [0.00245, 0.10325, 1.19489], + "inflate": 0.002, + "pivot": [-0.00155, 8.64476, -3.99031], + "rotation": [-26.0674, -7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [7.75, 18], "uv_size": [-0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [18.75, 6], "uv_size": [-0.75, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "down": {"uv": [0, 0.75], "uv_size": [0, -0.75]} + } + }, + { + "origin": [-0.00277, 9.35396, -4.51214], + "size": [0.00245, 0.10325, 1.19489], + "inflate": 0.002, + "pivot": [-0.00155, 9.3552, -3.99031], + "rotation": [-26.0674, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [8.75, 18], "uv_size": [-0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [18.75, 7], "uv_size": [-0.75, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "down": {"uv": [0, 0.75], "uv_size": [0, -0.75]} + } + }, + { + "origin": [-0.00156, 8.93699, -4.40925], + "size": [0, 0.1008, 1.2348], + "pivot": [-0.00156, 9.03779, -4.61085], + "rotation": [2.1826, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [9.75, 18], "uv_size": [-0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [18.75, 8], "uv_size": [-0.75, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "down": {"uv": [0, 0.75], "uv_size": [0, -0.75]} + } + }, + { + "origin": [-0.04634, 8.64214, -4.26343], + "size": [0.00123, 0.10202, 0.99206], + "inflate": 0.001, + "pivot": [-0.04572, 8.69315, -3.7674], + "rotation": [26.0674, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [12.625, 18], "uv_size": [-0.625, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [18.625, 11], "uv_size": [-0.625, 0.125]}, + "up": {"uv": [0, 0.625], "uv_size": [0, -0.625]}, + "down": {"uv": [0, 0.625], "uv_size": [0, -0.625]} + } + }, + { + "origin": [-0.0758, 8.68779, -4.02761], + "size": [0.00122, 0.10203, 0.76526], + "inflate": 0.001, + "pivot": [-0.07519, 8.73881, -3.64499], + "rotation": [26.0674, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [3.5, 20], "uv_size": [-0.5, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [20.5, 2], "uv_size": [-0.5, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.625]}, + "down": {"uv": [0, 0.625], "uv_size": [0, -0.625]} + } + }, + { + "origin": [-0.10357, 9.96189, -2.54185], + "size": [0.10325, 0.00084, 0.81046], + "inflate": 0.002, + "pivot": [-0.00155, 9.96174, -2.13742], + "rotation": [2.9567, 9.5572, -72.7198], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "up": {"uv": [18, 13.5], "uv_size": [0.125, -0.5]}, + "down": {"uv": [14, 18.5], "uv_size": [0.125, -0.5]} + } + }, + { + "origin": [-0.10464, 8.74555, -3.78842], + "size": [0, 0.1008, 0.48684], + "pivot": [-0.10464, 8.79595, -3.545], + "rotation": [26.0674, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [25.25, 18], "uv_size": [-0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [18.25, 25], "uv_size": [-0.25, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.13778, 8.78932, -3.5723], + "size": [0, 0.12599, 0.31043], + "pivot": [-0.13778, 8.85232, -3.41708], + "rotation": [26.0674, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [25.25, 19], "uv_size": [-0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [19.25, 25], "uv_size": [-0.25, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.00155, 8.64475, -4.66212], + "size": [0, 0.02519, 0.1512], + "pivot": [-0.00155, 8.64476, -3.99031], + "rotation": [-26.0674, -7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [23.125, 26], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [26.125, 22], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.00155, 8.66994, -4.61172], + "size": [0, 0.02521, 0.1008], + "pivot": [-0.00155, 8.64476, -3.99031], + "rotation": [-26.0674, -7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [24.125, 26], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [26.125, 23], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.44341, 8.53864, -3.29885], + "size": [0.68431, 0, 0.81022], + "pivot": [-0.10125, 8.53864, -2.89373], + "rotation": [-4.4751, 14.3315, 72.4542], + "uv": { + "down": {"uv": [11, 14.5], "uv_size": [0.375, -0.5]} + } + }, + { + "origin": [-0.44318, 8.43342, -2.51276], + "size": [0.68386, 0, 0.02371], + "pivot": [-0.10125, 8.43342, -2.5009], + "rotation": [-4.4341, 12.0883, 72.6337], + "uv": { + "down": {"uv": [9, 21.125], "uv_size": [0.375, -0.125]} + } + }, + { + "origin": [-0.44349, 8.36015, -2.48384], + "size": [0.68399, 0, 0.80802], + "pivot": [-0.10149, 8.36015, -2.07983], + "rotation": [-2.9567, 9.5572, 72.7198], + "uv": { + "down": {"uv": [14, 11.5], "uv_size": [0.375, -0.5]} + } + }, + { + "origin": [-0.44275, 8.29001, -1.70432], + "size": [0.68252, 0, 0.04472], + "pivot": [-0.10149, 8.29001, -1.68197], + "rotation": [-2.9307, 5.8121, 72.9141], + "uv": { + "down": {"uv": [21, 9.125], "uv_size": [0.375, -0.125]} + } + }, + { + "origin": [-0.44221, 8.42986, -2.49121], + "size": [0.68192, 0, 0.02363], + "pivot": [-0.10125, 8.42986, -2.47939], + "rotation": [-2.9787, 11.8041, 72.6012], + "uv": { + "down": {"uv": [10, 21.125], "uv_size": [0.375, -0.125]} + } + }, + { + "origin": [-0.44349, 8.2275, -1.65], + "size": [0.68399, 0, 1.91681], + "pivot": [-0.10149, 8.2275, -0.6916], + "rotation": [-1.0264, 3.3463, 72.937], + "uv": { + "down": {"uv": [8, 13.25], "uv_size": [0.375, -1.25]} + } + }, + { + "origin": [-0.04058, 8.99876, -4.61207], + "size": [0.07806, 0.00226, 0.20405], + "inflate": 0.002, + "pivot": [-0.00155, 8.99998, -4.61085], + "rotation": [8.0111, 0, -90], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [22, 25.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [25, 22.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [-0.13848, 8.99998, -4.61778], + "size": [0.07561, 0, 1.42531], + "pivot": [-0.10067, 8.99998, -3.90512], + "rotation": [-8.0111, 0, 90], + "uv": { + "down": {"uv": [11, 16.875], "uv_size": [0.125, -0.875]} + } + }, + { + "origin": [-0.44323, 8.286, -1.66163], + "size": [0.68347, 0, 0.02685], + "pivot": [-0.10149, 8.286, -1.64821], + "rotation": [-1.0296, 5.5959, 72.8965], + "uv": { + "down": {"uv": [21, 10.125], "uv_size": [0.375, -0.125]} + } + }, + { + "origin": [-0.00277, 8.2604, -3.37963], + "size": [0.10325, 0.00221, 0.81267], + "inflate": 0.002, + "pivot": [-0.00155, 8.26163, -3.12449], + "rotation": [4.4751, -14.3315, -107.5458], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "up": {"uv": [20, 3.5], "uv_size": [0.125, -0.5]}, + "down": {"uv": [4, 20.5], "uv_size": [0.125, -0.5]} + } + }, + { + "origin": [-0.88639, 8.74874, -2.44268], + "size": [0.10325, 0.00221, 0.02616], + "inflate": 0.002, + "pivot": [-0.20131, 8.74985, -2.41774], + "rotation": [4.4341, -12.0883, -107.3663], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [26, 24.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [25, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [-0.88446, 8.74969, -2.42242], + "size": [0.10325, 0.0022, 0.02608], + "inflate": 0.002, + "pivot": [-0.20131, 8.75079, -2.4212], + "rotation": [2.9787, -11.8041, -107.3988], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [26, 25.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [26, 26.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [-0.00277, 8.03835, -2.54185], + "size": [0.10325, 0.00084, 0.81046], + "inflate": 0.002, + "pivot": [-0.00155, 8.03821, -2.13742], + "rotation": [2.9567, -9.5572, -107.2802], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "up": {"uv": [20, 4.5], "uv_size": [0.125, -0.5]}, + "down": {"uv": [5, 20.5], "uv_size": [0.125, -0.5]} + } + }, + { + "origin": [-0.88619, 8.61138, -1.67118], + "size": [0.10326, 0.00084, 0.04717], + "inflate": 0.002, + "pivot": [-0.20244, 8.6118, -1.62523], + "rotation": [2.9307, -5.8121, -107.0859], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [0, 27.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [27, 0.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [-0.88714, 8.61173, -1.62949], + "size": [0.10325, 0.00084, 0.02931], + "inflate": 0.002, + "pivot": [-0.20244, 8.61215, -1.62826], + "rotation": [1.0296, -5.5959, -107.1035], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [1, 27.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [27, 1.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [-0.00277, 7.90191, -1.67118], + "size": [0.10325, 0.00084, 1.91926], + "inflate": 0.002, + "pivot": [-0.00155, 7.90176, -0.72334], + "rotation": [1.0264, -3.3463, -107.063], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [1.25, 0], "uv_size": [-1.25, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [1.25, 0], "uv_size": [-1.25, 0]}, + "up": {"uv": [15, 6.25], "uv_size": [0.125, -1.25]}, + "down": {"uv": [6, 16.25], "uv_size": [0.125, -1.25]} + } + }, + { + "origin": [-0.10357, 9.73711, -3.37963], + "size": [0.10325, 0.0022, 0.81267], + "inflate": 0.002, + "pivot": [-0.00155, 9.73834, -3.12449], + "rotation": [4.4751, 14.3315, -72.4542], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "up": {"uv": [20, 5.5], "uv_size": [0.125, -0.5]}, + "down": {"uv": [6, 20.5], "uv_size": [0.125, -0.5]} + } + }, + { + "origin": [0.38051, 9.249, -2.44268], + "size": [0.10325, 0.00221, 0.02616], + "inflate": 0.002, + "pivot": [-0.20131, 9.2501, -2.41774], + "rotation": [4.4341, 12.0883, -72.6337], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [2, 27.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [27, 2.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [0.37857, 9.24806, -2.42242], + "size": [0.10325, 0.00221, 0.02608], + "inflate": 0.002, + "pivot": [-0.20131, 9.24916, -2.4212], + "rotation": [2.9787, 11.8041, -72.6012], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [3, 27.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [27, 3.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [0.37806, 9.38773, -1.67118], + "size": [0.10325, 0.00084, 0.04717], + "inflate": 0.002, + "pivot": [-0.20244, 9.38815, -1.62523], + "rotation": [2.9307, 5.8121, -72.9141], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [4, 27.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [27, 4.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [0.37899, 9.38738, -1.62949], + "size": [0.10325, 0.00084, 0.02931], + "inflate": 0.002, + "pivot": [-0.20244, 9.3878, -1.62826], + "rotation": [1.0296, 5.5959, -72.8965], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [5, 27.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [27, 5.125], "uv_size": [0.125, -0.125]} + } + }, + { + "origin": [-0.10357, 10.09833, -1.67118], + "size": [0.10325, 0.00084, 1.91926], + "inflate": 0.002, + "pivot": [-0.00155, 10.09819, -0.72334], + "rotation": [1.0264, 3.3463, -72.937], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [1.25, 0], "uv_size": [-1.25, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [1.25, 0], "uv_size": [-1.25, 0]}, + "up": {"uv": [7, 16.25], "uv_size": [0.125, -1.25]}, + "down": {"uv": [15, 8.25], "uv_size": [0.125, -1.25]} + } + }, + { + "origin": [-0.44321, 9.71394, -1.66163], + "size": [0.68345, 0, 0.02685], + "pivot": [-0.10149, 9.71394, -1.64821], + "rotation": [-1.0296, -5.5959, 107.1035], + "uv": { + "down": {"uv": [11, 21.125], "uv_size": [0.375, -0.125]} + } + }, + { + "origin": [-0.00092, 9.77403, -3.46994], + "size": [-0.00122, 0.55318, 0.09958], + "inflate": -0.001, + "pivot": [-0.00153, 9.67262, -3.36975], + "rotation": [-14.8174, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [12.125, 21], "uv_size": [-0.125, 0.375]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [21.125, 11], "uv_size": [-0.125, 0.375]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.00214, 9.67201, -3.39557], + "size": [0.00122, 0.10202, 0.02643], + "inflate": 0.001, + "pivot": [-0.00153, 9.67262, -3.36975], + "rotation": [-14.8174, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [27.125, 6], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [6.125, 27], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.00156, 9.01258, -4.56045], + "size": [0, 0.02521, 0.1512], + "pivot": [-0.00156, 9.03779, -4.61085], + "rotation": [2.1826, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [27.125, 7], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [7.125, 27], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.00156, 8.96218, -4.45965], + "size": [0, 0.0504, 0.0504], + "pivot": [-0.00156, 9.03779, -4.61085], + "rotation": [2.1826, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [27.125, 8], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [8.125, 27], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.04634, 9.25581, -4.26343], + "size": [0.00123, 0.10202, 0.99206], + "inflate": 0.001, + "pivot": [-0.04572, 9.30682, -3.7674], + "rotation": [26.0674, -7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [13.625, 18], "uv_size": [-0.625, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [18.625, 12], "uv_size": [-0.625, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.625]}, + "down": {"uv": [0, 0.625], "uv_size": [0, -0.625]} + } + }, + { + "origin": [-0.00216, 9.55617, -4.10833], + "size": [0.00122, 0.10203, 0.79047], + "inflate": 0.001, + "pivot": [-0.00155, 9.3552, -3.99031], + "rotation": [-26.0674, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [7.5, 20], "uv_size": [-0.5, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [20.5, 6], "uv_size": [-0.5, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.625]}, + "down": {"uv": [0, 0.625], "uv_size": [0, -0.625]} + } + }, + { + "origin": [-0.00155, 9.65759, -3.90612], + "size": [0, 0.1008, 0.48684], + "pivot": [-0.00155, 9.3552, -3.99031], + "rotation": [-26.0674, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [25.25, 20], "uv_size": [-0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [20.25, 25], "uv_size": [-0.25, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.00155, 9.75839, -3.72971], + "size": [0, 0.12601, 0.31043], + "pivot": [-0.00155, 9.3552, -3.99031], + "rotation": [-26.0674, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [25.25, 21], "uv_size": [-0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [21.25, 25], "uv_size": [-0.25, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.00155, 9.35519, -4.66212], + "size": [0, 0.02521, 0.1512], + "pivot": [-0.00155, 9.3552, -3.99031], + "rotation": [-26.0674, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [27.125, 9], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [9.125, 27], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.00155, 9.3804, -4.61172], + "size": [0, 0.02519, 0.1008], + "pivot": [-0.00155, 9.3552, -3.99031], + "rotation": [-26.0674, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [27.125, 10], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [10.125, 27], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "down": {"uv": [0, 0.375], "uv_size": [0, -0.375]} + } + }, + { + "origin": [-0.44341, 9.46131, -3.29885], + "size": [0.68433, 0, 0.81022], + "pivot": [-0.10124, 9.46131, -2.89373], + "rotation": [-4.4751, -14.3315, 107.5458], + "uv": { + "down": {"uv": [12, 14.5], "uv_size": [0.375, -0.5]} + } + }, + { + "origin": [-0.4432, 9.56653, -2.51276], + "size": [0.68385, 0, 0.02371], + "pivot": [-0.10127, 9.56653, -2.5009], + "rotation": [-4.4341, -12.0883, 107.3663], + "uv": { + "down": {"uv": [21, 12.125], "uv_size": [0.375, -0.125]} + } + }, + { + "origin": [-0.44349, 9.6398, -2.48384], + "size": [0.68399, 0, 0.80802], + "pivot": [-0.10149, 9.6398, -2.07983], + "rotation": [-2.9567, -9.5572, 107.2802], + "uv": { + "down": {"uv": [14, 12.5], "uv_size": [0.375, -0.5]} + } + }, + { + "origin": [-0.44275, 9.70994, -1.70432], + "size": [0.68252, 0, 0.04472], + "pivot": [-0.10149, 9.70994, -1.68197], + "rotation": [-2.9307, -5.8121, 107.0859], + "uv": { + "down": {"uv": [13.375, 21.125], "uv_size": [-0.375, -0.125]} + } + }, + { + "origin": [-0.44223, 9.57009, -2.49121], + "size": [0.68191, 0, 0.02363], + "pivot": [-0.10127, 9.57009, -2.47939], + "rotation": [-2.9787, -11.8041, 107.3988], + "uv": { + "down": {"uv": [21, 13.125], "uv_size": [0.375, -0.125]} + } + } + ] + }, + { + "name": "constraint", + "parent": "bone", + "pivot": [-0.01558, 8.125, 1.9375] + }, + { + "name": "knife_and_left", + "parent": "bone", + "pivot": [-6, 19, 0] + }, + { + "name": "lefthand", + "parent": "knife_and_left", + "pivot": [-6, 19, 0] + }, + { + "name": "lefthand_pos", + "parent": "lefthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [-7, 8, -2], + "size": [3, 12, 4], + "uv": { + "north": {"uv": [11.614, 0], "uv_size": [4.557, 12]}, + "east": {"uv": [2.5, 12], "uv_size": [4.557, 12]}, + "south": {"uv": [7.057, 12], "uv_size": [4.557, 12]}, + "west": {"uv": [11.614, 12], "uv_size": [4.557, 12]}, + "up": {"uv": [16.171, 8], "uv_size": [4.557, 4]}, + "down": {"uv": [16.171, 16], "uv_size": [4.557, -4]} + } + } + ] + }, + { + "name": "push_l", + "parent": "knife_and_left", + "pivot": [0, 13, -7.97723], + "cubes": [ + { + "origin": [-0.47958, 11.26058, -1.10275], + "size": [0.07561, 0.4032, 0.3024], + "pivot": [-0.20237, 11.26058, -4.02595], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [21.125, 14], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [18.25, 14], "uv_size": [-0.25, 0.25]}, + "south": {"uv": [14.125, 21], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [15.25, 18], "uv_size": [-0.25, 0.25]}, + "up": {"uv": [15, 21.25], "uv_size": [0.125, -0.25]}, + "down": {"uv": [21, 15], "uv_size": [0.125, 0.25]} + } + }, + { + "origin": [-0.52998, 11.26058, -1.63196], + "size": [0.17641, 0.4032, 0.52921], + "pivot": [-0.20237, 11.26058, -4.02595], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [21.125, 16], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [0.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [16.125, 21], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 0], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [20, 7.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [8, 20], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [-0.63078, 11.26058, -2.38796], + "size": [0.37801, 0.4032, 0.756], + "pivot": [-0.20237, 11.26058, -4.02595], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [16.25, 18], "uv_size": [-0.25, 0.25]}, + "east": {"uv": [8.5, 15], "uv_size": [-0.5, 0.25]}, + "south": {"uv": [18.25, 15], "uv_size": [-0.25, 0.25]}, + "west": {"uv": [9.5, 15], "uv_size": [-0.5, 0.25]}, + "up": {"uv": [15, 9.5], "uv_size": [0.25, -0.5]}, + "down": {"uv": [10, 15], "uv_size": [0.25, 0.5]} + } + }, + { + "origin": [-0.80717, 11.26058, -3.92515], + "size": [0.73079, 0.4032, 1.53719], + "pivot": [-0.20237, 11.26058, -4.02595], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [11.5, 15], "uv_size": [-0.5, 0.25]}, + "east": {"uv": [14, 13], "uv_size": [-1, 0.25]}, + "south": {"uv": [15.5, 10], "uv_size": [-0.5, 0.25]}, + "west": {"uv": [15, 0], "uv_size": [-1, 0.25]}, + "up": {"uv": [6, 13], "uv_size": [0.5, -1]}, + "down": {"uv": [7, 12], "uv_size": [0.5, 1]} + } + }, + { + "origin": [1.4092, 9.92375, -1.60798], + "size": [0.07804, 0.40565, 0.80885], + "inflate": 0.002, + "pivot": [1.41043, 11.53777, -0.80035], + "rotation": [0, 15, 90], + "uv": { + "north": {"uv": [21.125, 17], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [15.5, 11], "uv_size": [-0.5, 0.25]}, + "south": {"uv": [17.125, 21], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [12.5, 15], "uv_size": [-0.5, 0.25]}, + "up": {"uv": [18, 16.5], "uv_size": [0.125, -0.5]}, + "down": {"uv": [17, 18], "uv_size": [0.125, 0.5]} + } + }, + { + "origin": [1.40981, 10.13307, -2.38628], + "size": [0.20283, 0.40443, 0.80762], + "inflate": 0.001, + "pivot": [1.41043, 11.74648, -1.57927], + "rotation": [0, 10, 90], + "uv": { + "north": {"uv": [21.125, 18], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [15.5, 12], "uv_size": [-0.5, 0.25]}, + "south": {"uv": [18.125, 21], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [13.5, 15], "uv_size": [-0.5, 0.25]}, + "up": {"uv": [18, 17.5], "uv_size": [0.125, -0.5]}, + "down": {"uv": [18, 18], "uv_size": [0.125, 0.5]} + } + }, + { + "origin": [1.40981, 10.27311, -3.78524], + "size": [0.20283, 0.40443, 1.41242], + "inflate": 0.001, + "pivot": [1.41043, 11.88652, -2.37343], + "rotation": [0, 3.5, 90], + "uv": { + "north": {"uv": [21.125, 19], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [14.875, 5], "uv_size": [-0.875, 0.25]}, + "south": {"uv": [19.125, 21], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [14.875, 6], "uv_size": [-0.875, 0.25]}, + "up": {"uv": [16, 11.875], "uv_size": [0.125, -0.875]}, + "down": {"uv": [12, 16], "uv_size": [0.125, 0.875]} + } + }, + { + "origin": [1.20821, 10.15804, -4.19812], + "size": [0.20283, 0.40442, 0.40443], + "inflate": 0.001, + "pivot": [1.41043, 11.77145, -3.79431], + "rotation": [0, 36, 90], + "uv": { + "north": {"uv": [21.125, 20], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [0.25, 19], "uv_size": [-0.25, 0.25]}, + "south": {"uv": [20.125, 21], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [19.25, 0], "uv_size": [-0.25, 0.25]}, + "up": {"uv": [21, 21.25], "uv_size": [0.125, -0.25]}, + "down": {"uv": [0, 22], "uv_size": [0.125, 0.25]} + } + }, + { + "origin": [1.20821, 10.39502, -4.72591], + "size": [0.20283, 0.40443, 0.60603], + "inflate": 0.001, + "pivot": [1.41043, 12.00844, -4.1205], + "rotation": [0, 67.25, 90], + "uv": { + "north": {"uv": [1.125, 22], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [1.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [22.125, 0], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 1], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [20, 8.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [9, 20], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.20821, 10.95278, -4.6574], + "size": [0.20283, 0.40442, 0.30363], + "inflate": 0.001, + "pivot": [1.41043, 12.56619, -4.35438], + "rotation": [0, 74.75, 90], + "uv": { + "north": {"uv": [2.125, 22], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [1.25, 19], "uv_size": [-0.25, 0.25]}, + "south": {"uv": [22.125, 1], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [19.25, 1], "uv_size": [-0.25, 0.25]}, + "up": {"uv": [22, 2.25], "uv_size": [0.125, -0.25]}, + "down": {"uv": [3, 22], "uv_size": [0.125, 0.25]} + } + }, + { + "origin": [1.26887, 11.24453, -4.57776], + "size": [0.14217, 0.40443, 0.14445], + "inflate": 0.001, + "pivot": [1.41043, 12.85795, -4.43393], + "rotation": [180, 60.25, -90], + "uv": { + "north": {"uv": [22.125, 4], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [4.125, 22], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [22.125, 3], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [5.125, 22], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [23, 25.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [25, 23], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.20821, 11.24453, -4.43454], + "size": [0.20283, 0.40443, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 12.85795, -4.43393], + "rotation": [180, 81, -90], + "uv": { + "north": {"uv": [6.125, 22], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [2.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [22.125, 5], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 2], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [20, 9.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [10, 20], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.40981, 10.7152, -4.31426], + "size": [0.20283, 0.40442, 0.20283], + "inflate": 0.001, + "pivot": [1.41043, 12.32861, -4.31364], + "rotation": [180, 66, -90], + "uv": { + "north": {"uv": [22.125, 7], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [7.125, 22], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [22.125, 6], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [8.125, 22], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [24, 25.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [25, 24], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.40981, 10.53103, -4.39625], + "size": [0.20283, 0.40443, 0.50522], + "inflate": 0.001, + "pivot": [1.41043, 12.14444, -4.39564], + "rotation": [180, 49.25, -90], + "uv": { + "north": {"uv": [9.125, 22], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [3.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [22.125, 8], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 3], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [20, 10.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [11, 20], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.40981, 10.14922, -4.72525], + "size": [0.20283, 0.40442, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 11.76263, -4.72463], + "rotation": [-180, 21.75, -90], + "uv": { + "north": {"uv": [10.125, 22], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [4.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [22.125, 9], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 4], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [20, 11.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [12, 20], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.40981, 9.96245, -5.19336], + "size": [0.20283, 0.40443, 0.20282], + "inflate": 0.001, + "pivot": [1.41043, 11.57587, -5.19275], + "rotation": [180, 0, -90], + "uv": { + "north": {"uv": [22.125, 11], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [11.125, 22], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [22.125, 10], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [12.125, 22], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [25, 25.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [0, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.40981, 9.96245, -5.39496], + "size": [0.20283, 0.40443, 0.50522], + "inflate": 0.001, + "pivot": [1.41043, 11.57587, -5.39435], + "rotation": [180, -30, -90], + "uv": { + "north": {"uv": [13.125, 22], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [5.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [22.125, 12], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 5], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [20, 12.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [13, 20], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.40981, 10.21445, -5.83145], + "size": [0.20283, 0.40443, 0.27843], + "inflate": 0.001, + "pivot": [1.41043, 11.82787, -5.83084], + "rotation": [180, -60, -90], + "uv": { + "north": {"uv": [22.125, 14], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [14.125, 22], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [22.125, 13], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [15.125, 22], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 0.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [1, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.40981, 10.45452, -5.97004], + "size": [0.20283, 0.40442, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 12.06793, -5.96943], + "rotation": [180, -82.5, -89.9999], + "uv": { + "north": {"uv": [16.125, 22], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [6.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [22.125, 15], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 6], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [20, 13.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [14, 20], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.40981, 10.9542, -6.03582], + "size": [0.20283, 0.40442, 0.30362], + "inflate": 0.001, + "pivot": [1.41043, 12.56761, -6.03521], + "rotation": [0, -77.5, 90], + "uv": { + "north": {"uv": [22.125, 17], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [17.125, 22], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [22.125, 16], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [18.125, 22], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 1.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [2, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.40981, 11.24944, -5.97038], + "size": [0.20283, 0.40442, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 12.86285, -5.96976], + "rotation": [0, -67.5, 90], + "uv": { + "north": {"uv": [19.125, 22], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [7.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [22.125, 18], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 7], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [20, 14.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [15, 20], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.41043, 11.25005, -5.96976], + "size": [0.1008, 0.4032, 0.504], + "pivot": [1.41043, 12.86285, -5.96976], + "rotation": [0, -81.25, 90], + "uv": { + "north": {"uv": [20.125, 22], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [8.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [22.125, 19], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 8], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [20, 15.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [16, 20], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.41043, 11.64856, -5.90843], + "size": [0.1008, 0.4032, 0.2016], + "pivot": [1.41043, 13.26136, -5.90843], + "rotation": [180, -68.75, -90], + "uv": { + "north": {"uv": [22.125, 21], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [21.125, 22], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [22.125, 20], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [22.125, 22], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 2.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [3, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.20821, 11.63793, -5.59126], + "size": [0.20283, 0.40442, 0.45483], + "inflate": 0.001, + "pivot": [1.41043, 13.25134, -5.59064], + "rotation": [180, -60, -90], + "uv": { + "north": {"uv": [23.125, 0], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [2.25, 19], "uv_size": [-0.25, 0.25]}, + "south": {"uv": [0.125, 23], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [19.25, 2], "uv_size": [-0.25, 0.25]}, + "up": {"uv": [1, 23.25], "uv_size": [0.125, -0.25]}, + "down": {"uv": [23, 1], "uv_size": [0.125, 0.25]} + } + }, + { + "origin": [1.30901, 12.06945, -6.33869], + "size": [0.20283, 0.40442, 0.50522], + "inflate": 0.001, + "pivot": [1.41043, 13.68286, -6.08608], + "rotation": [180, -30, -90], + "uv": { + "north": {"uv": [23.125, 2], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [9.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [2.125, 23], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 9], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [20, 16.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [17, 20], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [0.30101, 12.10815, -6.55692], + "size": [1.11003, 0.40443, 0.20283], + "inflate": 0.001, + "pivot": [1.41043, 13.72157, -6.35471], + "rotation": [180, -26.25, -90], + "uv": { + "north": {"uv": [14.75, 8], "uv_size": [-0.75, 0.25]}, + "east": {"uv": [3.125, 23], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [8.75, 14], "uv_size": [-0.75, 0.25]}, + "west": {"uv": [23.125, 3], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [10, 17.125], "uv_size": [0.75, -0.125]}, + "down": {"uv": [17, 10], "uv_size": [0.75, 0.125]} + } + }, + { + "origin": [0.17562, 12.10877, -7.38792], + "size": [0.3528, 0.4032, 0.83161], + "pivot": [1.41043, 13.72157, -6.35471], + "rotation": [180, -26.25, -90], + "uv": { + "north": {"uv": [19.25, 3], "uv_size": [-0.25, 0.25]}, + "east": {"uv": [15.5, 13], "uv_size": [-0.5, 0.25]}, + "south": {"uv": [3.25, 19], "uv_size": [-0.25, 0.25]}, + "west": {"uv": [14.5, 15], "uv_size": [-0.5, 0.25]}, + "up": {"uv": [15, 14.5], "uv_size": [0.25, -0.5]}, + "down": {"uv": [15, 15], "uv_size": [0.25, 0.5]} + } + }, + { + "origin": [1.41043, 10.75611, -7.48723], + "size": [0.2016, 0.4032, 1.08361], + "pivot": [1.41043, 12.36891, -6.40362], + "rotation": [180, -45.25, -90], + "uv": { + "north": {"uv": [23.125, 4], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [14.625, 14], "uv_size": [-0.625, 0.25]}, + "south": {"uv": [4.125, 23], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [15.625, 0], "uv_size": [-0.625, 0.25]}, + "up": {"uv": [18, 9.625], "uv_size": [0.125, -0.625]}, + "down": {"uv": [10, 18], "uv_size": [0.125, 0.625]} + } + }, + { + "origin": [1.41043, 10.81183, -6.51663], + "size": [0.2016, 0.4032, 0.2016], + "pivot": [1.41043, 12.42463, -6.51663], + "rotation": [180, 18.75, -90], + "uv": { + "north": {"uv": [6.125, 23], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [23.125, 5], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [5.125, 23], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [23.125, 6], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 3.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [4, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.30963, 11.18399, -6.4736], + "size": [0.1008, 0.4032, 0.2016], + "pivot": [1.41043, 12.79679, -6.4736], + "rotation": [180, -66.25, -90], + "uv": { + "north": {"uv": [8.125, 23], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [23.125, 7], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [7.125, 23], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [23.125, 8], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 4.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [5, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.30963, 11.01679, -6.33618], + "size": [0.1008, 0.4032, 0.2016], + "pivot": [1.41043, 12.62959, -6.13458], + "rotation": [180, 23.75, -90], + "uv": { + "north": {"uv": [10.125, 23], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [23.125, 9], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [9.125, 23], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [23.125, 10], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 5.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [6, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.37262, 11.89654, -6.21141], + "size": [0.07561, 0.4032, 0.4032], + "pivot": [1.41043, 13.50934, -6.00981], + "rotation": [180, -28.75, -90], + "uv": { + "north": {"uv": [23.125, 11], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [4.25, 19], "uv_size": [-0.25, 0.25]}, + "south": {"uv": [11.125, 23], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [19.25, 4], "uv_size": [-0.25, 0.25]}, + "up": {"uv": [12, 23.25], "uv_size": [0.125, -0.25]}, + "down": {"uv": [23, 12], "uv_size": [0.125, 0.25]} + } + }, + { + "origin": [1.41043, 11.91836, -6.13954], + "size": [0.1008, 0.4032, 0.1008], + "pivot": [1.41043, 13.53116, -6.13954], + "rotation": [180, 3.75, -90], + "uv": { + "north": {"uv": [14.125, 23], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [23.125, 13], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [13.125, 23], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [23.125, 14], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 6.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [7, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [0.60341, 11.1137, -7.04734], + "size": [0.80763, 0.40443, 0.20282], + "inflate": 0.001, + "pivot": [1.41043, 12.72712, -6.84513], + "rotation": [180, -10.25, -90], + "uv": { + "north": {"uv": [16.5, 0], "uv_size": [-0.5, 0.25]}, + "east": {"uv": [15.125, 23], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [0.5, 16], "uv_size": [-0.5, 0.25]}, + "west": {"uv": [23.125, 15], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [5, 19.125], "uv_size": [0.5, -0.125]}, + "down": {"uv": [19, 5], "uv_size": [0.5, 0.125]} + } + }, + { + "origin": [1.40981, 9.61509, -4.19812], + "size": [0.20283, 0.40442, 0.40443], + "inflate": 0.001, + "pivot": [1.41043, 11.2285, -3.79431], + "rotation": [0, -36, 90], + "uv": { + "north": {"uv": [23.125, 16], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [6.25, 19], "uv_size": [-0.25, 0.25]}, + "south": {"uv": [16.125, 23], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [19.25, 6], "uv_size": [-0.25, 0.25]}, + "up": {"uv": [17, 23.25], "uv_size": [0.125, -0.25]}, + "down": {"uv": [23, 17], "uv_size": [0.125, 0.25]} + } + }, + { + "origin": [1.40981, 9.3781, -4.72591], + "size": [0.20283, 0.40443, 0.60603], + "inflate": 0.001, + "pivot": [1.41043, 10.99152, -4.1205], + "rotation": [0, -67.25, 90], + "uv": { + "north": {"uv": [23.125, 18], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [11.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [18.125, 23], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 11], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [20, 17.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [18, 20], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.40981, 8.82035, -4.6574], + "size": [0.20283, 0.40442, 0.30363], + "inflate": 0.001, + "pivot": [1.41043, 10.43376, -4.35438], + "rotation": [0, -74.75, 90], + "uv": { + "north": {"uv": [23.125, 19], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [7.25, 19], "uv_size": [-0.25, 0.25]}, + "south": {"uv": [19.125, 23], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [19.25, 7], "uv_size": [-0.25, 0.25]}, + "up": {"uv": [20, 23.25], "uv_size": [0.125, -0.25]}, + "down": {"uv": [23, 20], "uv_size": [0.125, 0.25]} + } + }, + { + "origin": [1.40981, 8.52861, -4.57776], + "size": [0.14217, 0.40443, 0.14445], + "inflate": 0.001, + "pivot": [1.41043, 10.14202, -4.43393], + "rotation": [-180, -60.25, -90], + "uv": { + "north": {"uv": [22.125, 23], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [23.125, 21], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [21.125, 23], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [23.125, 22], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 7.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [8, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.40981, 8.52861, -4.43454], + "size": [0.20283, 0.40443, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 10.14202, -4.43393], + "rotation": [-180, -81, -90], + "uv": { + "north": {"uv": [0.125, 24], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [12.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [23.125, 23], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 12], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [20, 18.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [19, 20], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.20821, 9.05793, -4.31426], + "size": [0.20283, 0.40443, 0.20283], + "inflate": 0.001, + "pivot": [1.41043, 10.67134, -4.31364], + "rotation": [-180, -66, -90], + "uv": { + "north": {"uv": [24.125, 1], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [1.125, 24], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [24.125, 0], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [2.125, 24], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 8.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [9, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.20821, 9.24211, -4.39625], + "size": [0.20283, 0.40443, 0.50522], + "inflate": 0.001, + "pivot": [1.41043, 10.85553, -4.39564], + "rotation": [-180, -49.25, -90], + "uv": { + "north": {"uv": [3.125, 24], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [13.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [24.125, 2], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 13], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [20, 19.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [20, 20], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.20821, 9.62391, -4.72525], + "size": [0.20283, 0.40443, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 11.23732, -4.72463], + "rotation": [180, -21.75, -90], + "uv": { + "north": {"uv": [4.125, 24], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [14.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [24.125, 3], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 14], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [0, 21.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [21, 0], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.20821, 9.81067, -5.19336], + "size": [0.20283, 0.40443, 0.20282], + "inflate": 0.001, + "pivot": [1.41043, 11.42409, -5.19275], + "rotation": [180, 0, -90], + "uv": { + "north": {"uv": [24.125, 5], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [5.125, 24], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [24.125, 4], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [6.125, 24], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 9.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [10, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.20821, 9.81067, -5.39496], + "size": [0.20283, 0.40443, 0.50522], + "inflate": 0.001, + "pivot": [1.41043, 11.42409, -5.39435], + "rotation": [180, 30, -90], + "uv": { + "north": {"uv": [7.125, 24], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [15.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [24.125, 6], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 15], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [1, 21.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [21, 1], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.20821, 9.55867, -5.83145], + "size": [0.20283, 0.40443, 0.27843], + "inflate": 0.001, + "pivot": [1.41043, 11.17209, -5.83084], + "rotation": [180, 60, -90], + "uv": { + "north": {"uv": [24.125, 8], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [8.125, 24], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [24.125, 7], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [9.125, 24], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 10.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [11, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.20821, 9.31862, -5.97004], + "size": [0.20283, 0.40443, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 10.93204, -5.96943], + "rotation": [180, 82.5, -90.0001], + "uv": { + "north": {"uv": [10.125, 24], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [16.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [24.125, 9], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [17.375, 16], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [2, 21.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [21, 2], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.20821, 8.81893, -6.03582], + "size": [0.20283, 0.40443, 0.30362], + "inflate": 0.001, + "pivot": [1.41043, 10.43234, -6.03521], + "rotation": [0, 77.5, 90], + "uv": { + "north": {"uv": [24.125, 11], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [11.125, 24], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [24.125, 10], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [12.125, 24], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 11.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [12, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.20821, 8.52369, -5.97038], + "size": [0.20283, 0.40443, 0.50523], + "inflate": 0.001, + "pivot": [1.41043, 10.1371, -5.96976], + "rotation": [0, 67.5, 90], + "uv": { + "north": {"uv": [13.125, 24], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [17.375, 17], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [24.125, 12], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [0.375, 18], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [3, 21.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [21, 3], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.40981, 8.13522, -5.59126], + "size": [0.20283, 0.40442, 0.45483], + "inflate": 0.001, + "pivot": [1.41043, 9.74863, -5.59064], + "rotation": [180, 60, -90], + "uv": { + "north": {"uv": [14.125, 24], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [8.25, 19], "uv_size": [-0.25, 0.25]}, + "south": {"uv": [24.125, 13], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [19.25, 8], "uv_size": [-0.25, 0.25]}, + "up": {"uv": [24, 14.25], "uv_size": [0.125, -0.25]}, + "down": {"uv": [15, 24], "uv_size": [0.125, 0.25]} + } + }, + { + "origin": [1.30901, 7.70368, -6.33869], + "size": [0.20283, 0.40442, 0.50522], + "inflate": 0.001, + "pivot": [1.41043, 9.31709, -6.08608], + "rotation": [180, 30, -90], + "uv": { + "north": {"uv": [16.125, 24], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [18.375, 0], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [24.125, 15], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [1.375, 18], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [4, 21.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [21, 4], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [0.5455, 10.32017, -7.19083], + "size": [0.86554, 0.40443, 0.20308], + "inflate": 0.001, + "pivot": [1.41043, 11.93359, -6.98862], + "rotation": [180, 0, -90], + "uv": { + "north": {"uv": [16.5, 1], "uv_size": [-0.5, 0.25]}, + "east": {"uv": [24.125, 16], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [1.5, 16], "uv_size": [-0.5, 0.25]}, + "west": {"uv": [17.125, 24], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [9, 19.125], "uv_size": [0.5, -0.125]}, + "down": {"uv": [19, 9], "uv_size": [0.5, 0.125]} + } + }, + { + "origin": [1.3342, 9.84877, -1.60737], + "size": [0.07684, 0.40442, 0.80763], + "inflate": 0.001, + "pivot": [1.41043, 11.46218, -0.80035], + "rotation": [0, -15, 90], + "uv": { + "north": {"uv": [18.125, 24], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [2.5, 16], "uv_size": [-0.5, 0.25]}, + "south": {"uv": [24.125, 17], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [16.5, 2], "uv_size": [-0.5, 0.25]}, + "up": {"uv": [10, 19.5], "uv_size": [0.125, -0.5]}, + "down": {"uv": [19, 10], "uv_size": [0.125, 0.5]} + } + }, + { + "origin": [1.20821, 9.84877, -1.60737], + "size": [0.12722, 0.40442, 0.53042], + "inflate": 0.001, + "pivot": [1.41043, 11.46218, -0.80035], + "rotation": [0, -15, 90], + "uv": { + "north": {"uv": [19.125, 24], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [18.375, 1], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [24.125, 18], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [2.375, 18], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [5, 21.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [21, 5], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.48479, 9.92375, -1.60798], + "size": [0.12846, 0.40565, 0.55685], + "inflate": 0.002, + "pivot": [1.41043, 11.53777, -0.80035], + "rotation": [0, 15, 90], + "uv": { + "north": {"uv": [20.125, 24], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [18.375, 2], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [24.125, 19], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [3.375, 18], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [6, 21.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [21, 6], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.20821, 9.64005, -2.38628], + "size": [0.20283, 0.40443, 0.80762], + "inflate": 0.001, + "pivot": [1.41043, 11.25347, -1.57927], + "rotation": [0, -10, 90], + "uv": { + "north": {"uv": [21.125, 24], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [3.5, 16], "uv_size": [-0.5, 0.25]}, + "south": {"uv": [24.125, 20], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [16.5, 3], "uv_size": [-0.5, 0.25]}, + "up": {"uv": [11, 19.5], "uv_size": [0.125, -0.5]}, + "down": {"uv": [19, 11], "uv_size": [0.125, 0.5]} + } + }, + { + "origin": [1.20821, 9.50003, -3.78524], + "size": [0.20283, 0.40443, 1.41242], + "inflate": 0.001, + "pivot": [1.41043, 11.11344, -2.37343], + "rotation": [0, -3.5, 90], + "uv": { + "north": {"uv": [22.125, 24], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [7.875, 14], "uv_size": [-0.875, 0.25]}, + "south": {"uv": [24.125, 21], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [14.875, 7], "uv_size": [-0.875, 0.25]}, + "up": {"uv": [16, 12.875], "uv_size": [0.125, -0.875]}, + "down": {"uv": [13, 16], "uv_size": [0.125, 0.875]} + } + }, + { + "origin": [1.40981, 7.66497, -6.55692], + "size": [1.11003, 0.40443, 0.20283], + "inflate": 0.001, + "pivot": [1.41043, 9.27838, -6.35471], + "rotation": [180, 26.25, -90], + "uv": { + "north": {"uv": [14.75, 9], "uv_size": [-0.75, 0.25]}, + "east": {"uv": [24.125, 22], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [9.75, 14], "uv_size": [-0.75, 0.25]}, + "west": {"uv": [23.125, 24], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [18, 3.125], "uv_size": [0.75, -0.125]}, + "down": {"uv": [4, 18], "uv_size": [0.75, 0.125]} + } + }, + { + "origin": [1.40981, 8.65942, -7.04734], + "size": [0.80763, 0.40443, 0.20282], + "inflate": 0.001, + "pivot": [1.41043, 10.27284, -6.84513], + "rotation": [180, 10.25, -90], + "uv": { + "north": {"uv": [16.5, 4], "uv_size": [-0.5, 0.25]}, + "east": {"uv": [24.125, 23], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [4.5, 16], "uv_size": [-0.5, 0.25]}, + "west": {"uv": [24.125, 24], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [12, 19.125], "uv_size": [0.5, -0.125]}, + "down": {"uv": [19, 12], "uv_size": [0.5, 0.125]} + } + }, + { + "origin": [2.29242, 7.66558, -7.38792], + "size": [0.3528, 0.4032, 0.83161], + "pivot": [1.41043, 9.27838, -6.35471], + "rotation": [180, 26.25, -90], + "uv": { + "north": {"uv": [19.25, 13], "uv_size": [-0.25, 0.25]}, + "east": {"uv": [5.5, 16], "uv_size": [-0.5, 0.25]}, + "south": {"uv": [13.25, 19], "uv_size": [-0.25, 0.25]}, + "west": {"uv": [16.5, 5], "uv_size": [-0.5, 0.25]}, + "up": {"uv": [16, 6.5], "uv_size": [0.25, -0.5]}, + "down": {"uv": [16, 7], "uv_size": [0.25, 0.5]} + } + }, + { + "origin": [1.41043, 8.59038, -6.4736], + "size": [0.1008, 0.4032, 0.2016], + "pivot": [1.41043, 10.20318, -6.4736], + "rotation": [180, 66.25, -90], + "uv": { + "north": {"uv": [1.125, 25], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [25.125, 0], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [0.125, 25], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [25.125, 1], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 12.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [13, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.20883, 8.96252, -6.51663], + "size": [0.2016, 0.4032, 0.2016], + "pivot": [1.41043, 10.57532, -6.51663], + "rotation": [180, -18.75, -90], + "uv": { + "north": {"uv": [3.125, 25], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [25.125, 2], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [2.125, 25], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [25.125, 3], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 13.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [14, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.20883, 9.01824, -7.48723], + "size": [0.2016, 0.4032, 1.08361], + "pivot": [1.41043, 10.63104, -6.40362], + "rotation": [180, 45.25, -90], + "uv": { + "north": {"uv": [25.125, 4], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [15.625, 1], "uv_size": [-0.625, 0.25]}, + "south": {"uv": [4.125, 25], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [15.625, 2], "uv_size": [-0.625, 0.25]}, + "up": {"uv": [18, 10.625], "uv_size": [0.125, -0.625]}, + "down": {"uv": [11, 18], "uv_size": [0.125, 0.625]} + } + }, + { + "origin": [0.56227, 9.7878, -5.98081], + "size": [0.84728, 0.4032, 0.48261], + "pivot": [1.41043, 11.4006, -5.64075], + "rotation": [0.002, 89.75, 90.002], + "uv": { + "north": {"uv": [16.5, 8], "uv_size": [-0.5, 0.25]}, + "east": {"uv": [14.25, 19], "uv_size": [-0.25, 0.25]}, + "south": {"uv": [8.5, 16], "uv_size": [-0.5, 0.25]}, + "west": {"uv": [19.25, 14], "uv_size": [-0.25, 0.25]}, + "up": {"uv": [9, 16.25], "uv_size": [0.5, -0.25]}, + "down": {"uv": [16, 9], "uv_size": [0.5, 0.25]} + } + }, + { + "origin": [-0.31972, 9.7878, -6.23281], + "size": [0.88199, 0.4032, 0.98661], + "pivot": [1.41043, 11.4006, -5.64075], + "rotation": [0.002, 89.75, 90.002], + "uv": { + "north": {"uv": [16.5, 10], "uv_size": [-0.5, 0.25]}, + "east": {"uv": [15.625, 3], "uv_size": [-0.625, 0.25]}, + "south": {"uv": [10.5, 16], "uv_size": [-0.5, 0.25]}, + "west": {"uv": [15.625, 4], "uv_size": [-0.625, 0.25]}, + "up": {"uv": [7, 13.625], "uv_size": [0.5, -0.625]}, + "down": {"uv": [13, 12], "uv_size": [0.5, 0.625]} + } + }, + { + "origin": [-0.14333, 9.7878, -5.2462], + "size": [0.4032, 0.4032, 0.4536], + "pivot": [1.41043, 11.4006, -5.64075], + "rotation": [0.002, 89.75, 90.002], + "uv": { + "north": {"uv": [16.25, 19], "uv_size": [-0.25, 0.25]}, + "east": {"uv": [19.25, 15], "uv_size": [-0.25, 0.25]}, + "south": {"uv": [15.25, 19], "uv_size": [-0.25, 0.25]}, + "west": {"uv": [19.25, 16], "uv_size": [-0.25, 0.25]}, + "up": {"uv": [17, 19.25], "uv_size": [0.25, -0.25]}, + "down": {"uv": [19, 17], "uv_size": [0.25, 0.25]} + } + }, + { + "origin": [0.25987, 9.7878, -5.2462], + "size": [0.1008, 0.4032, 0.0504], + "pivot": [1.41043, 11.4006, -5.64075], + "rotation": [0.002, 89.75, 90.002], + "uv": { + "north": {"uv": [6.125, 25], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [25.125, 5], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [5.125, 25], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [25.125, 6], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 14.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [15, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [2.46018, 9.98655, -5.2462], + "size": [0.1008, 0.4032, 0.0504], + "pivot": [1.41043, 11.59935, -5.64075], + "rotation": [0.002, -89.75, 89.998], + "uv": { + "north": {"uv": [8.125, 25], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [25.125, 7], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [7.125, 25], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [25.125, 8], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 15.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [16, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [2.56098, 9.98655, -5.2462], + "size": [0.4032, 0.4032, 0.4536], + "pivot": [1.41043, 11.59935, -5.64075], + "rotation": [0.002, -89.75, 89.998], + "uv": { + "north": {"uv": [19.25, 19], "uv_size": [-0.25, 0.25]}, + "east": {"uv": [19.25, 18], "uv_size": [-0.25, 0.25]}, + "south": {"uv": [18.25, 19], "uv_size": [-0.25, 0.25]}, + "west": {"uv": [0.25, 20], "uv_size": [-0.25, 0.25]}, + "up": {"uv": [20, 0.25], "uv_size": [0.25, -0.25]}, + "down": {"uv": [1, 20], "uv_size": [0.25, 0.25]} + } + }, + { + "origin": [1.41043, 8.75756, -6.33618], + "size": [0.1008, 0.4032, 0.2016], + "pivot": [1.41043, 10.37036, -6.13458], + "rotation": [180, -23.75, -90], + "uv": { + "north": {"uv": [10.125, 25], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [25.125, 9], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [9.125, 25], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [25.125, 10], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 16.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [17, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.30963, 8.5243, -5.96976], + "size": [0.1008, 0.4032, 0.504], + "pivot": [1.41043, 10.1371, -5.96976], + "rotation": [0, 81.25, 90], + "uv": { + "north": {"uv": [25.125, 11], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [18.375, 4], "uv_size": [-0.375, 0.25]}, + "south": {"uv": [11.125, 25], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [5.375, 18], "uv_size": [-0.375, 0.25]}, + "up": {"uv": [7, 21.375], "uv_size": [0.125, -0.375]}, + "down": {"uv": [21, 7], "uv_size": [0.125, 0.375]} + } + }, + { + "origin": [1.30963, 8.1258, -5.90843], + "size": [0.1008, 0.4032, 0.2016], + "pivot": [1.41043, 9.7386, -5.90843], + "rotation": [180, 68.75, -90], + "uv": { + "north": {"uv": [13.125, 25], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [25.125, 12], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [12.125, 25], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [25.125, 13], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 17.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [18, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.37262, 7.87781, -6.21141], + "size": [0.07561, 0.4032, 0.4032], + "pivot": [1.41043, 9.49061, -6.00981], + "rotation": [180, 28.75, -90], + "uv": { + "north": {"uv": [25.125, 14], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [20.25, 1], "uv_size": [-0.25, 0.25]}, + "south": {"uv": [14.125, 25], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [2.25, 20], "uv_size": [-0.25, 0.25]}, + "up": {"uv": [15, 25.25], "uv_size": [0.125, -0.25]}, + "down": {"uv": [25, 15], "uv_size": [0.125, 0.25]} + } + }, + { + "origin": [1.30963, 7.85599, -6.13954], + "size": [0.1008, 0.4032, 0.1008], + "pivot": [1.41043, 9.46879, -6.13954], + "rotation": [180, -3.75, -90], + "uv": { + "north": {"uv": [17.125, 25], "uv_size": [-0.125, 0.25]}, + "east": {"uv": [25.125, 16], "uv_size": [-0.125, 0.25]}, + "south": {"uv": [16.125, 25], "uv_size": [-0.125, 0.25]}, + "west": {"uv": [25.125, 17], "uv_size": [-0.125, 0.25]}, + "up": {"uv": [26, 18.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [19, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [1.61357, 9.64067, -2.43607], + "size": [0.6552, 0, 0.9072], + "pivot": [1.61357, 11.25347, -1.57927], + "rotation": [0, -10, 90], + "uv": { + "north": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "east": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "south": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "west": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "up": {"uv": [14, 3.625], "uv_size": [0.375, -0.625]}, + "down": {"uv": [14, 4], "uv_size": [0.375, 0.625]} + } + }, + { + "origin": [1.61357, 9.50064, -4.28863], + "size": [0.6552, 0, 1.94041], + "pivot": [1.61357, 11.11344, -2.37343], + "rotation": [0, -3.5, 90], + "uv": { + "north": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "east": {"uv": [1.25, 0], "uv_size": [-1.25, 0]}, + "south": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "west": {"uv": [1.25, 0], "uv_size": [-1.25, 0]}, + "up": {"uv": [12, 13.25], "uv_size": [0.375, -1.25]}, + "down": {"uv": [6, 13], "uv_size": [0.375, 1.25]} + } + }, + { + "origin": [1.61357, 9.84938, -1.61058], + "size": [0.65724, 0, 0.81023], + "pivot": [1.61357, 11.46218, -0.80035], + "rotation": [0, -15, 90], + "uv": { + "north": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "east": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "south": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "west": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "up": {"uv": [10, 14.5], "uv_size": [0.375, -0.5]}, + "down": {"uv": [14, 10], "uv_size": [0.375, 0.5]} + } + }, + { + "origin": [-0.10003, 10.82733, -0.63025], + "size": [0.1008, -0.00001, 1.39404], + "pivot": [0.00077, 10.82733, -0.63025], + "rotation": [0.005, -27.0904, 89.9908], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.875, 0], "uv_size": [-0.875, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.875, 0], "uv_size": [-0.875, 0]}, + "up": {"uv": [16, 13.875], "uv_size": [0.125, -0.875]}, + "down": {"uv": [14, 16], "uv_size": [0.125, 0.875]} + } + }, + { + "origin": [0.95915, 10.13368, -2.43607], + "size": [0.6552, 0, 0.9072], + "pivot": [1.61435, 11.74648, -1.57927], + "rotation": [0, 10, 90], + "uv": { + "north": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "east": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "south": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "west": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "up": {"uv": [14, 1.625], "uv_size": [0.375, -0.625]}, + "down": {"uv": [14, 2], "uv_size": [0.375, 0.625]} + } + }, + { + "origin": [0.95915, 10.27372, -4.28863], + "size": [0.6552, 0, 1.94041], + "pivot": [1.61435, 11.88652, -2.37343], + "rotation": [0, 3.5, 90], + "uv": { + "north": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "east": {"uv": [1.25, 0], "uv_size": [-1.25, 0]}, + "south": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "west": {"uv": [1.25, 0], "uv_size": [-1.25, 0]}, + "up": {"uv": [10, 13.25], "uv_size": [0.375, -1.25]}, + "down": {"uv": [11, 12], "uv_size": [0.375, 1.25]} + } + }, + { + "origin": [0.95712, 9.92497, -1.61058], + "size": [0.65723, 0, 0.81023], + "pivot": [1.61435, 11.53777, -0.80035], + "rotation": [0, 15, 90], + "uv": { + "north": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "east": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "south": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "west": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "up": {"uv": [13, 14.5], "uv_size": [0.375, -0.5]}, + "down": {"uv": [14, 13], "uv_size": [0.375, 0.5]} + } + }, + { + "origin": [0.00155, 12.17262, -0.63025], + "size": [0.1008, -0.00002, 1.39404], + "pivot": [0.00155, 12.17262, -0.63025], + "rotation": [0.005, 27.0904, 90.0092], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.875, 0], "uv_size": [-0.875, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.875, 0], "uv_size": [-0.875, 0]}, + "up": {"uv": [16, 14.875], "uv_size": [0.125, -0.875]}, + "down": {"uv": [15, 16], "uv_size": [0.125, 0.875]} + } + }, + { + "origin": [0.20005, 11.73937, -0.80035], + "size": [0.07559, 0, 1.4112], + "pivot": [-0.00155, 11.73937, -4.02595], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.875, 0], "uv_size": [-0.875, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.875, 0], "uv_size": [-0.875, 0]}, + "up": {"uv": [16, 15.875], "uv_size": [0.125, -0.875]}, + "down": {"uv": [16, 16], "uv_size": [0.125, 0.875]} + } + } + ] + }, + { + "name": "bone2", + "parent": "push_l", + "pivot": [1.71429, 12.27245, -3.3084], + "cubes": [ + { + "origin": [0.00153, 10.92813, -0.63025], + "size": [0, 0.5544, 0.1008], + "pivot": [0.00153, 10.82733, -0.63025], + "rotation": [14.8174, -7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [8.125, 21], "uv_size": [-0.125, 0.375]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [21.125, 8], "uv_size": [-0.125, 0.375]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [0.00092, 10.82672, -0.63086], + "size": [0.00122, 0.10203, 0.02643], + "inflate": 0.001, + "pivot": [0.00153, 10.82733, -0.63025], + "rotation": [14.8174, -7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [26.125, 19], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [20.125, 26], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [0.10186, 11.36461, -0.81958], + "size": [0, 0.1008, 1.23479], + "pivot": [0.10186, 11.41501, -0.20218], + "rotation": [2.1826, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [18.75, 5], "uv_size": [-0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [6.75, 18], "uv_size": [-0.75, 0.125]}, + "up": {"uv": [0, 0.75], "uv_size": [0, -0.75]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.75]} + } + }, + { + "origin": [0.00156, 11.43697, 0.40925], + "size": [0, 0.02519, 0.1512], + "pivot": [0.00156, 11.46216, 0.61085], + "rotation": [-2.1826, -7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [26.125, 20], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [21.125, 26], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [0.00156, 11.38657, 0.40925], + "size": [0, 0.0504, 0.0504], + "pivot": [0.00156, 11.46216, 0.61085], + "rotation": [-2.1826, -7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [26.125, 21], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [22.125, 26], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [0.00032, 11.14352, -0.68275], + "size": [0.00245, 0.10325, 1.19489], + "inflate": 0.002, + "pivot": [0.00155, 11.14476, -0.00969], + "rotation": [26.0674, -7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [18.75, 6], "uv_size": [-0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [7.75, 18], "uv_size": [-0.75, 0.125]}, + "up": {"uv": [0, 0.75], "uv_size": [0, -0.75]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.75]} + } + }, + { + "origin": [0.00032, 11.85396, -0.68275], + "size": [0.00245, 0.10325, 1.19489], + "inflate": 0.002, + "pivot": [0.00155, 11.8552, -0.00969], + "rotation": [26.0674, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [18.75, 7], "uv_size": [-0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [8.75, 18], "uv_size": [-0.75, 0.125]}, + "up": {"uv": [0, 0.75], "uv_size": [0, -0.75]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.75]} + } + }, + { + "origin": [0.00156, 11.43699, -0.82555], + "size": [0, 0.1008, 1.2348], + "pivot": [0.00156, 11.53779, 0.61085], + "rotation": [-2.1826, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [18.75, 8], "uv_size": [-0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [9.75, 18], "uv_size": [-0.75, 0.125]}, + "up": {"uv": [0, 0.75], "uv_size": [0, -0.75]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.75]} + } + }, + { + "origin": [0.04511, 11.14214, -0.72863], + "size": [0.00123, 0.10202, 0.99206], + "inflate": 0.001, + "pivot": [0.04572, 11.19315, -0.2326], + "rotation": [-26.0674, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [18.625, 11], "uv_size": [-0.625, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [12.625, 18], "uv_size": [-0.625, 0.125]}, + "up": {"uv": [0, 0.625], "uv_size": [0, -0.625]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.625]} + } + }, + { + "origin": [0.07458, 11.18779, -0.73765], + "size": [0.00122, 0.10203, 0.76526], + "inflate": 0.001, + "pivot": [0.07519, 11.23881, -0.35501], + "rotation": [-26.0674, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [20.5, 2], "uv_size": [-0.5, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [3.5, 20], "uv_size": [-0.5, 0.125]}, + "up": {"uv": [0, 0.625], "uv_size": [0, -0.625]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.625]} + } + }, + { + "origin": [0.00032, 12.46189, -2.26861], + "size": [0.10325, 0.00084, 0.81046], + "inflate": 0.002, + "pivot": [0.00155, 12.46174, -1.86258], + "rotation": [-2.9567, 9.5572, 72.7198], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "up": {"uv": [18, 13.5], "uv_size": [0.125, -0.5]}, + "down": {"uv": [14, 18], "uv_size": [0.125, 0.5]} + } + }, + { + "origin": [0.10464, 11.24555, -0.69842], + "size": [0, 0.1008, 0.48684], + "pivot": [0.10464, 11.29595, -0.455], + "rotation": [-26.0674, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [18.25, 25], "uv_size": [-0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [25.25, 18], "uv_size": [-0.25, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [0.13778, 11.28932, -0.73813], + "size": [0, 0.12599, 0.31043], + "pivot": [0.13778, 11.35232, -0.58292], + "rotation": [-26.0674, 7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [19.25, 25], "uv_size": [-0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [25.25, 19], "uv_size": [-0.25, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [0.00155, 11.14475, 0.51092], + "size": [0, 0.02519, 0.1512], + "pivot": [0.00155, 11.14476, -0.00969], + "rotation": [26.0674, -7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [26.125, 22], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [23.125, 26], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [0.00155, 11.16994, 0.51092], + "size": [0, 0.02521, 0.1008], + "pivot": [0.00155, 11.14476, -0.00969], + "rotation": [26.0674, -7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [26.125, 23], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [24.125, 26], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.2409, 11.03864, -1.51137], + "size": [0.68431, 0, 0.81022], + "pivot": [0.10125, 11.03864, -1.10627], + "rotation": [4.4751, 14.3315, -72.4542], + "uv": { + "down": {"uv": [11, 14], "uv_size": [0.375, 0.5]} + } + }, + { + "origin": [-0.24068, 10.93342, -1.51095], + "size": [0.68386, 0, 0.02371], + "pivot": [0.10125, 10.93342, -1.4991], + "rotation": [4.4341, 12.0883, -72.6337], + "uv": { + "down": {"uv": [9, 21], "uv_size": [0.375, 0.125]} + } + }, + { + "origin": [-0.2405, 10.86015, -2.32418], + "size": [0.68399, 0, 0.80802], + "pivot": [0.10149, 10.86015, -1.92017], + "rotation": [2.9567, 9.5572, -72.7198], + "uv": { + "down": {"uv": [14, 11], "uv_size": [0.375, 0.5]} + } + }, + { + "origin": [-0.23977, 10.79001, -2.3404], + "size": [0.68252, 0, 0.04472], + "pivot": [0.10149, 10.79001, -2.31803], + "rotation": [2.9307, 5.8121, -72.9141], + "uv": { + "down": {"uv": [21, 9], "uv_size": [0.375, 0.125]} + } + }, + { + "origin": [-0.23971, 10.92986, -1.53242], + "size": [0.68192, 0, 0.02363], + "pivot": [0.10125, 10.92986, -1.52061], + "rotation": [2.9787, 11.8041, -72.6012], + "uv": { + "down": {"uv": [10, 21], "uv_size": [0.375, 0.125]} + } + }, + { + "origin": [-0.2405, 10.7275, -4.26681], + "size": [0.68399, 0, 1.91681], + "pivot": [0.10149, 10.7275, -3.3084], + "rotation": [1.0264, 3.3463, -72.937], + "uv": { + "down": {"uv": [8, 12], "uv_size": [0.375, 1.25]} + } + }, + { + "origin": [-0.03748, 11.49876, 0.40802], + "size": [0.07806, 0.00226, 0.20405], + "inflate": 0.002, + "pivot": [0.00155, 11.49998, 0.61085], + "rotation": [-8.0111, 0, 90], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [22, 25.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [25, 22], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [0.06287, 11.49998, -0.80753], + "size": [0.07561, 0, 1.42531], + "pivot": [0.10067, 11.49998, -0.09488], + "rotation": [8.0111, 0, -90], + "uv": { + "down": {"uv": [11, 16], "uv_size": [0.125, 0.875]} + } + }, + { + "origin": [-0.24024, 10.786, -2.36522], + "size": [0.68347, 0, 0.02685], + "pivot": [0.10149, 10.786, -2.35179], + "rotation": [1.0296, 5.5959, -72.8965], + "uv": { + "down": {"uv": [21, 10], "uv_size": [0.375, 0.125]} + } + }, + { + "origin": [-0.10048, 10.7604, -1.43304], + "size": [0.10325, 0.00221, 0.81267], + "inflate": 0.002, + "pivot": [0.00155, 10.76163, -0.87551], + "rotation": [-4.4751, -14.3315, 107.5458], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "up": {"uv": [20, 3.5], "uv_size": [0.125, -0.5]}, + "down": {"uv": [4, 20], "uv_size": [0.125, 0.5]} + } + }, + { + "origin": [0.78314, 11.24874, -1.58348], + "size": [0.10325, 0.00221, 0.02616], + "inflate": 0.002, + "pivot": [0.20131, 11.24985, -1.58226], + "rotation": [-4.4341, -12.0883, 107.3663], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [26, 24.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [25, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [0.78121, 11.24969, -1.60366], + "size": [0.10325, 0.0022, 0.02608], + "inflate": 0.002, + "pivot": [0.20131, 11.25079, -1.5788], + "rotation": [-2.9787, -11.8041, 107.3988], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [26, 25.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [26, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [-0.10048, 10.53835, -2.26861], + "size": [0.10325, 0.00084, 0.81046], + "inflate": 0.002, + "pivot": [0.00155, 10.53821, -1.86258], + "rotation": [-2.9567, -9.5572, 107.2802], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "up": {"uv": [20, 4.5], "uv_size": [0.125, -0.5]}, + "down": {"uv": [5, 20], "uv_size": [0.125, 0.5]} + } + }, + { + "origin": [0.78293, 11.11138, -2.37599], + "size": [0.10326, 0.00084, 0.04717], + "inflate": 0.002, + "pivot": [0.20244, 11.1118, -2.37477], + "rotation": [-2.9307, -5.8121, 107.0859], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [0, 27.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [27, 0], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [0.78389, 11.11173, -2.39982], + "size": [0.10325, 0.00084, 0.02931], + "inflate": 0.002, + "pivot": [0.20244, 11.11215, -2.37174], + "rotation": [-1.0296, -5.5959, 107.1035], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [1, 27.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [27, 1], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [-0.10048, 10.40191, -4.24808], + "size": [0.10325, 0.00084, 1.91926], + "inflate": 0.002, + "pivot": [0.00155, 10.40176, -3.27666], + "rotation": [-1.0264, -3.3463, 107.063], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [1.25, 0], "uv_size": [-1.25, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [1.25, 0], "uv_size": [-1.25, 0]}, + "up": {"uv": [15, 6.25], "uv_size": [0.125, -1.25]}, + "down": {"uv": [6, 15], "uv_size": [0.125, 1.25]} + } + }, + { + "origin": [0.00032, 12.23711, -1.43304], + "size": [0.10325, 0.0022, 0.81267], + "inflate": 0.002, + "pivot": [0.00155, 12.23834, -0.87551], + "rotation": [-4.4751, 14.3315, 72.4542], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.5, 0], "uv_size": [-0.5, 0]}, + "up": {"uv": [20, 5.5], "uv_size": [0.125, -0.5]}, + "down": {"uv": [6, 20], "uv_size": [0.125, 0.5]} + } + }, + { + "origin": [-0.48376, 11.749, -1.58348], + "size": [0.10325, 0.00221, 0.02616], + "inflate": 0.002, + "pivot": [0.20131, 11.7501, -1.58226], + "rotation": [-4.4341, 12.0883, 72.6337], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [2, 27.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [27, 2], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [-0.48182, 11.74806, -1.60366], + "size": [0.10325, 0.00221, 0.02608], + "inflate": 0.002, + "pivot": [0.20131, 11.74916, -1.5788], + "rotation": [-2.9787, 11.8041, 72.6012], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [3, 27.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [27, 3], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [-0.48131, 11.88773, -2.37599], + "size": [0.10325, 0.00084, 0.04717], + "inflate": 0.002, + "pivot": [0.20244, 11.88815, -2.37477], + "rotation": [-2.9307, 5.8121, 72.9141], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [4, 27.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [27, 4], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [-0.48224, 11.88738, -2.39982], + "size": [0.10325, 0.00084, 0.02931], + "inflate": 0.002, + "pivot": [0.20244, 11.8878, -2.37174], + "rotation": [-1.0296, 5.5959, 72.8965], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "up": {"uv": [5, 27.125], "uv_size": [0.125, -0.125]}, + "down": {"uv": [27, 5], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [0.00032, 12.59833, -4.24808], + "size": [0.10325, 0.00084, 1.91926], + "inflate": 0.002, + "pivot": [0.00155, 12.59819, -3.27666], + "rotation": [-1.0264, 3.3463, 72.937], + "uv": { + "north": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "east": {"uv": [1.25, 0], "uv_size": [-1.25, 0]}, + "south": {"uv": [0.125, 0], "uv_size": [-0.125, 0]}, + "west": {"uv": [1.25, 0], "uv_size": [-1.25, 0]}, + "up": {"uv": [7, 16.25], "uv_size": [0.125, -1.25]}, + "down": {"uv": [15, 7], "uv_size": [0.125, 1.25]} + } + }, + { + "origin": [-0.24024, 12.21394, -2.36522], + "size": [0.68345, 0, 0.02685], + "pivot": [0.10149, 12.21394, -2.35179], + "rotation": [1.0296, -5.5959, -107.1035], + "uv": { + "down": {"uv": [11, 21], "uv_size": [0.375, 0.125]} + } + }, + { + "origin": [0.00214, 12.27403, -0.62964], + "size": [-0.00122, 0.55318, 0.09958], + "inflate": -0.001, + "pivot": [0.00153, 12.17262, -0.63025], + "rotation": [14.8174, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [21.125, 11], "uv_size": [-0.125, 0.375]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [12.125, 21], "uv_size": [-0.125, 0.375]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [0.00092, 12.17201, -0.63086], + "size": [0.00122, 0.10202, 0.02643], + "inflate": 0.001, + "pivot": [0.00153, 12.17262, -0.63025], + "rotation": [14.8174, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [6.125, 27], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [27.125, 6], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [0.00156, 11.51258, 0.40925], + "size": [0, 0.02521, 0.1512], + "pivot": [0.00156, 11.53779, 0.61085], + "rotation": [-2.1826, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [7.125, 27], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [27.125, 7], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [0.00156, 11.46218, 0.40925], + "size": [0, 0.0504, 0.0504], + "pivot": [0.00156, 11.53779, 0.61085], + "rotation": [-2.1826, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [8.125, 27], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [27.125, 8], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [0.04511, 11.75581, -0.72863], + "size": [0.00123, 0.10202, 0.99206], + "inflate": 0.001, + "pivot": [0.04572, 11.80682, -0.2326], + "rotation": [-26.0674, -7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [18.625, 12], "uv_size": [-0.625, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [13.625, 18], "uv_size": [-0.625, 0.125]}, + "up": {"uv": [0, 0.625], "uv_size": [0, -0.625]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.625]} + } + }, + { + "origin": [0.00094, 12.05617, -0.68214], + "size": [0.00122, 0.10203, 0.79047], + "inflate": 0.001, + "pivot": [0.00155, 11.8552, -0.00969], + "rotation": [26.0674, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [20.5, 6], "uv_size": [-0.5, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [7.5, 20], "uv_size": [-0.5, 0.125]}, + "up": {"uv": [0, 0.625], "uv_size": [0, -0.625]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.625]} + } + }, + { + "origin": [0.00155, 12.15759, -0.58072], + "size": [0, 0.1008, 0.48684], + "pivot": [0.00155, 11.8552, -0.00969], + "rotation": [26.0674, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [20.25, 25], "uv_size": [-0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [25.25, 20], "uv_size": [-0.25, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [0.00155, 12.25839, -0.58072], + "size": [0, 0.12601, 0.31043], + "pivot": [0.00155, 11.8552, -0.00969], + "rotation": [26.0674, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [21.25, 25], "uv_size": [-0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [25.25, 21], "uv_size": [-0.25, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [0.00155, 11.85519, 0.51092], + "size": [0, 0.02521, 0.1512], + "pivot": [0.00155, 11.8552, -0.00969], + "rotation": [26.0674, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [9.125, 27], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [27.125, 9], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [0.00155, 11.8804, 0.51092], + "size": [0, 0.02519, 0.1008], + "pivot": [0.00155, 11.8552, -0.00969], + "rotation": [26.0674, 7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [10.125, 27], "uv_size": [-0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [27.125, 10], "uv_size": [-0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.24092, 11.96131, -1.51137], + "size": [0.68433, 0, 0.81022], + "pivot": [0.10124, 11.96131, -1.10627], + "rotation": [4.4751, -14.3315, -107.5458], + "uv": { + "down": {"uv": [12, 14], "uv_size": [0.375, 0.5]} + } + }, + { + "origin": [-0.24065, 12.06653, -1.51095], + "size": [0.68385, 0, 0.02371], + "pivot": [0.10127, 12.06653, -1.4991], + "rotation": [4.4341, -12.0883, -107.3663], + "uv": { + "down": {"uv": [21, 12], "uv_size": [0.375, 0.125]} + } + }, + { + "origin": [-0.2405, 12.1398, -2.32418], + "size": [0.68399, 0, 0.80802], + "pivot": [0.10149, 12.1398, -1.92017], + "rotation": [2.9567, -9.5572, -107.2802], + "uv": { + "down": {"uv": [14, 12], "uv_size": [0.375, 0.5]} + } + }, + { + "origin": [-0.23977, 12.20994, -2.3404], + "size": [0.68252, 0, 0.04472], + "pivot": [0.10149, 12.20994, -2.31803], + "rotation": [2.9307, -5.8121, -107.0859], + "uv": { + "down": {"uv": [13, 21], "uv_size": [0.375, 0.125]} + } + }, + { + "origin": [-0.23968, 12.07009, -1.53242], + "size": [0.68191, 0, 0.02363], + "pivot": [0.10127, 12.07009, -1.52061], + "rotation": [2.9787, -11.8041, -107.3988], + "uv": { + "down": {"uv": [21, 13], "uv_size": [0.375, 0.125]} + } + }, + { + "origin": [-0.2405, 12.27245, -4.26681], + "size": [0.68399, 0, 1.91681], + "pivot": [0.10149, 12.27245, -3.3084], + "rotation": [1.0264, -3.3463, -107.063], + "uv": { + "down": {"uv": [9, 12], "uv_size": [0.375, 1.25]} + } + }, + { + "origin": [-0.44349, 12.27245, -4.26681], + "size": [0.68399, 0, 1.91681], + "pivot": [-0.10149, 12.27245, -3.3084], + "rotation": [1.0264, 3.3463, 107.063], + "uv": { + "down": {"uv": [9, 12], "uv_size": [0.375, 1.25]} + } + }, + { + "origin": [-0.00153, 10.92813, -0.63025], + "size": [0, 0.5544, 0.1008], + "pivot": [-0.00153, 10.82733, -0.63025], + "rotation": [14.8174, 7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [21, 8], "uv_size": [0.125, 0.375]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [8, 21], "uv_size": [0.125, 0.375]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.00214, 10.82672, -0.63086], + "size": [0.00122, 0.10203, 0.02643], + "inflate": 0.001, + "pivot": [-0.00153, 10.82733, -0.63025], + "rotation": [14.8174, 7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [20, 26], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [26, 19], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.10186, 11.36461, -0.81958], + "size": [0, 0.1008, 1.23479], + "pivot": [-0.10186, 11.41501, -0.20218], + "rotation": [2.1826, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [6, 18], "uv_size": [0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [18, 5], "uv_size": [0.75, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.75]} + } + }, + { + "origin": [-0.00156, 11.43697, 0.40925], + "size": [0, 0.02519, 0.1512], + "pivot": [-0.00156, 11.46216, 0.61085], + "rotation": [-2.1826, 7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [21, 26], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [26, 20], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.00156, 11.38657, 0.40925], + "size": [0, 0.0504, 0.0504], + "pivot": [-0.00156, 11.46216, 0.61085], + "rotation": [-2.1826, 7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [22, 26], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [26, 21], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.00277, 11.14352, -0.68275], + "size": [0.00245, 0.10325, 1.19489], + "inflate": 0.002, + "pivot": [-0.00155, 11.14476, -0.00969], + "rotation": [26.0674, 7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [7, 18], "uv_size": [0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [18, 6], "uv_size": [0.75, 0.125]}, + "up": {"uv": [0, 0.75], "uv_size": [0, -0.75]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.75]} + } + }, + { + "origin": [-0.00277, 11.85396, -0.68275], + "size": [0.00245, 0.10325, 1.19489], + "inflate": 0.002, + "pivot": [-0.00155, 11.8552, -0.00969], + "rotation": [26.0674, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [8, 18], "uv_size": [0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [18, 7], "uv_size": [0.75, 0.125]}, + "up": {"uv": [0, 0.75], "uv_size": [0, -0.75]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.75]} + } + }, + { + "origin": [-0.00156, 11.43699, -0.82555], + "size": [0, 0.1008, 1.2348], + "pivot": [-0.00156, 11.53779, 0.61085], + "rotation": [-2.1826, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [9, 18], "uv_size": [0.75, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [18, 8], "uv_size": [0.75, 0.125]}, + "up": {"uv": [0, 0.75], "uv_size": [0, -0.75]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.75]} + } + }, + { + "origin": [-0.04634, 11.14214, -0.72863], + "size": [0.00123, 0.10202, 0.99206], + "inflate": 0.001, + "pivot": [-0.04572, 11.19315, -0.2326], + "rotation": [-26.0674, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [12, 18], "uv_size": [0.625, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [18, 11], "uv_size": [0.625, 0.125]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.625]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.625]} + } + }, + { + "origin": [-0.0758, 11.18779, -0.73765], + "size": [0.00122, 0.10203, 0.76526], + "inflate": 0.001, + "pivot": [-0.07519, 11.23881, -0.35501], + "rotation": [-26.0674, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [3, 20], "uv_size": [0.5, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [20, 2], "uv_size": [0.5, 0.125]}, + "up": {"uv": [0, 0.625], "uv_size": [0, -0.625]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.625]} + } + }, + { + "origin": [-0.10357, 12.46189, -2.26861], + "size": [0.10325, 0.00084, 0.81046], + "inflate": 0.002, + "pivot": [-0.00155, 12.46174, -1.86258], + "rotation": [-2.9567, -9.5572, -72.7198], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [18, 13], "uv_size": [0.125, 0.5]}, + "down": {"uv": [14, 18], "uv_size": [0.125, 0.5]} + } + }, + { + "origin": [-0.10464, 11.24555, -0.69842], + "size": [0, 0.1008, 0.48684], + "pivot": [-0.10464, 11.29595, -0.455], + "rotation": [-26.0674, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [25, 18], "uv_size": [0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [18, 25], "uv_size": [0.25, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.13778, 11.28932, -0.73813], + "size": [0, 0.12599, 0.31043], + "pivot": [-0.13778, 11.35232, -0.58292], + "rotation": [-26.0674, -7.6471, 164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [25, 19], "uv_size": [0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [19, 25], "uv_size": [0.25, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.00155, 11.14475, 0.51092], + "size": [0, 0.02519, 0.1512], + "pivot": [-0.00155, 11.14476, -0.00969], + "rotation": [26.0674, 7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [23, 26], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [26, 22], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.00155, 11.16994, 0.51092], + "size": [0, 0.02521, 0.1008], + "pivot": [-0.00155, 11.14476, -0.00969], + "rotation": [26.0674, 7.6471, -15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [24, 26], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [26, 23], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.44341, 11.03864, -1.51137], + "size": [0.68431, 0, 0.81022], + "pivot": [-0.10125, 11.03864, -1.10627], + "rotation": [4.4751, -14.3315, 72.4542], + "uv": { + "down": {"uv": [11, 14], "uv_size": [0.375, 0.5]} + } + }, + { + "origin": [-0.44318, 10.93342, -1.51095], + "size": [0.68386, 0, 0.02371], + "pivot": [-0.10125, 10.93342, -1.4991], + "rotation": [4.4341, -12.0883, 72.6337], + "uv": { + "down": {"uv": [9, 21], "uv_size": [0.375, 0.125]} + } + }, + { + "origin": [-0.44349, 10.86015, -2.32418], + "size": [0.68399, 0, 0.80802], + "pivot": [-0.10149, 10.86015, -1.92017], + "rotation": [2.9567, -9.5572, 72.7198], + "uv": { + "down": {"uv": [14, 11], "uv_size": [0.375, 0.5]} + } + }, + { + "origin": [-0.44275, 10.79001, -2.3404], + "size": [0.68252, 0, 0.04472], + "pivot": [-0.10149, 10.79001, -2.31803], + "rotation": [2.9307, -5.8121, 72.9141], + "uv": { + "down": {"uv": [21, 9], "uv_size": [0.375, 0.125]} + } + }, + { + "origin": [-0.44221, 10.92986, -1.53242], + "size": [0.68192, 0, 0.02363], + "pivot": [-0.10125, 10.92986, -1.52061], + "rotation": [2.9787, -11.8041, 72.6012], + "uv": { + "down": {"uv": [10, 21], "uv_size": [0.375, 0.125]} + } + }, + { + "origin": [-0.44349, 10.7275, -4.26681], + "size": [0.68399, 0, 1.91681], + "pivot": [-0.10149, 10.7275, -3.3084], + "rotation": [1.0264, -3.3463, 72.937], + "uv": { + "down": {"uv": [8, 12], "uv_size": [0.375, 1.25]} + } + }, + { + "origin": [-0.04058, 11.49876, 0.40802], + "size": [0.07806, 0.00226, 0.20405], + "inflate": 0.002, + "pivot": [-0.00155, 11.49998, 0.61085], + "rotation": [-8.0111, 0, -90], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [22, 25], "uv_size": [0.125, 0.125]}, + "down": {"uv": [25, 22], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [-0.13848, 11.49998, -0.80753], + "size": [0.07561, 0, 1.42531], + "pivot": [-0.10067, 11.49998, -0.09488], + "rotation": [8.0111, 0, 90], + "uv": { + "down": {"uv": [11, 16], "uv_size": [0.125, 0.875]} + } + }, + { + "origin": [-0.44323, 10.786, -2.36522], + "size": [0.68347, 0, 0.02685], + "pivot": [-0.10149, 10.786, -2.35179], + "rotation": [1.0296, -5.5959, 72.8965], + "uv": { + "down": {"uv": [21, 10], "uv_size": [0.375, 0.125]} + } + }, + { + "origin": [-0.00277, 10.7604, -1.43304], + "size": [0.10325, 0.00221, 0.81267], + "inflate": 0.002, + "pivot": [-0.00155, 10.76163, -0.87551], + "rotation": [-4.4751, 14.3315, -107.5458], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [20, 3], "uv_size": [0.125, 0.5]}, + "down": {"uv": [4, 20], "uv_size": [0.125, 0.5]} + } + }, + { + "origin": [-0.88639, 11.24874, -1.58348], + "size": [0.10325, 0.00221, 0.02616], + "inflate": 0.002, + "pivot": [-0.20131, 11.24985, -1.58226], + "rotation": [-4.4341, 12.0883, -107.3663], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [26, 24], "uv_size": [0.125, 0.125]}, + "down": {"uv": [25, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [-0.88446, 11.24969, -1.60366], + "size": [0.10325, 0.0022, 0.02608], + "inflate": 0.002, + "pivot": [-0.20131, 11.25079, -1.5788], + "rotation": [-2.9787, 11.8041, -107.3988], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [26, 25], "uv_size": [0.125, 0.125]}, + "down": {"uv": [26, 26], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [-0.00277, 10.53835, -2.26861], + "size": [0.10325, 0.00084, 0.81046], + "inflate": 0.002, + "pivot": [-0.00155, 10.53821, -1.86258], + "rotation": [-2.9567, 9.5572, -107.2802], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [20, 4], "uv_size": [0.125, 0.5]}, + "down": {"uv": [5, 20], "uv_size": [0.125, 0.5]} + } + }, + { + "origin": [-0.88619, 11.11138, -2.37599], + "size": [0.10326, 0.00084, 0.04717], + "inflate": 0.002, + "pivot": [-0.20244, 11.1118, -2.37477], + "rotation": [-2.9307, 5.8121, -107.0859], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [0, 27], "uv_size": [0.125, 0.125]}, + "down": {"uv": [27, 0], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [-0.88714, 11.11173, -2.39982], + "size": [0.10325, 0.00084, 0.02931], + "inflate": 0.002, + "pivot": [-0.20244, 11.11215, -2.37174], + "rotation": [-1.0296, 5.5959, -107.1035], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [1, 27], "uv_size": [0.125, 0.125]}, + "down": {"uv": [27, 1], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [-0.00277, 10.40191, -4.24808], + "size": [0.10325, 0.00084, 1.91926], + "inflate": 0.002, + "pivot": [-0.00155, 10.40176, -3.27666], + "rotation": [-1.0264, 3.3463, -107.063], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [1.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [1.25, 0]}, + "up": {"uv": [15, 5], "uv_size": [0.125, 1.25]}, + "down": {"uv": [6, 15], "uv_size": [0.125, 1.25]} + } + }, + { + "origin": [-0.10357, 12.23711, -1.43304], + "size": [0.10325, 0.0022, 0.81267], + "inflate": 0.002, + "pivot": [-0.00155, 12.23834, -0.87551], + "rotation": [-4.4751, -14.3315, -72.4542], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [20, 5], "uv_size": [0.125, 0.5]}, + "down": {"uv": [6, 20], "uv_size": [0.125, 0.5]} + } + }, + { + "origin": [0.38051, 11.749, -1.58348], + "size": [0.10325, 0.00221, 0.02616], + "inflate": 0.002, + "pivot": [-0.20131, 11.7501, -1.58226], + "rotation": [-4.4341, -12.0883, -72.6337], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [2, 27], "uv_size": [0.125, 0.125]}, + "down": {"uv": [27, 2], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [0.37857, 11.74806, -1.60366], + "size": [0.10325, 0.00221, 0.02608], + "inflate": 0.002, + "pivot": [-0.20131, 11.74916, -1.5788], + "rotation": [-2.9787, -11.8041, -72.6012], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [3, 27], "uv_size": [0.125, 0.125]}, + "down": {"uv": [27, 3], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [0.37806, 11.88773, -2.37599], + "size": [0.10325, 0.00084, 0.04717], + "inflate": 0.002, + "pivot": [-0.20244, 11.88815, -2.37477], + "rotation": [-2.9307, -5.8121, -72.9141], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [4, 27], "uv_size": [0.125, 0.125]}, + "down": {"uv": [27, 4], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [0.37899, 11.88738, -2.39982], + "size": [0.10325, 0.00084, 0.02931], + "inflate": 0.002, + "pivot": [-0.20244, 11.8878, -2.37174], + "rotation": [-1.0296, -5.5959, -72.8965], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "up": {"uv": [5, 27], "uv_size": [0.125, 0.125]}, + "down": {"uv": [27, 5], "uv_size": [0.125, 0.125]} + } + }, + { + "origin": [-0.10357, 12.59833, -4.24808], + "size": [0.10325, 0.00084, 1.91926], + "inflate": 0.002, + "pivot": [-0.00155, 12.59819, -3.27666], + "rotation": [-1.0264, -3.3463, -72.937], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "east": {"uv": [0, 0], "uv_size": [1.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.125, 0]}, + "west": {"uv": [0, 0], "uv_size": [1.25, 0]}, + "up": {"uv": [7, 15], "uv_size": [0.125, 1.25]}, + "down": {"uv": [15, 7], "uv_size": [0.125, 1.25]} + } + }, + { + "origin": [-0.44321, 12.21394, -2.36522], + "size": [0.68345, 0, 0.02685], + "pivot": [-0.10149, 12.21394, -2.35179], + "rotation": [1.0296, 5.5959, 107.1035], + "uv": { + "down": {"uv": [11, 21], "uv_size": [0.375, 0.125]} + } + }, + { + "origin": [-0.00092, 12.27403, -0.62964], + "size": [-0.00122, 0.55318, 0.09958], + "inflate": -0.001, + "pivot": [-0.00153, 12.17262, -0.63025], + "rotation": [14.8174, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [12, 21], "uv_size": [0.125, 0.375]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [21, 11], "uv_size": [0.125, 0.375]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.00214, 12.17201, -0.63086], + "size": [0.00122, 0.10202, 0.02643], + "inflate": 0.001, + "pivot": [-0.00153, 12.17262, -0.63025], + "rotation": [14.8174, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [27, 6], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [6, 27], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.00156, 11.51258, 0.40925], + "size": [0, 0.02521, 0.1512], + "pivot": [-0.00156, 11.53779, 0.61085], + "rotation": [-2.1826, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [27, 7], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [7, 27], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.00156, 11.46218, 0.40925], + "size": [0, 0.0504, 0.0504], + "pivot": [-0.00156, 11.53779, 0.61085], + "rotation": [-2.1826, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [27, 8], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [8, 27], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.04634, 11.75581, -0.72863], + "size": [0.00123, 0.10202, 0.99206], + "inflate": 0.001, + "pivot": [-0.04572, 11.80682, -0.2326], + "rotation": [-26.0674, 7.6471, 15.2193], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [13, 18], "uv_size": [0.625, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [18, 12], "uv_size": [0.625, 0.125]}, + "up": {"uv": [0, 0.625], "uv_size": [0, -0.625]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.625]} + } + }, + { + "origin": [-0.00216, 12.05617, -0.68214], + "size": [0.00122, 0.10203, 0.79047], + "inflate": 0.001, + "pivot": [-0.00155, 11.8552, -0.00969], + "rotation": [26.0674, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [7, 20], "uv_size": [0.5, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [20, 6], "uv_size": [0.5, 0.125]}, + "up": {"uv": [0, 0.625], "uv_size": [0, -0.625]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.625]} + } + }, + { + "origin": [-0.00155, 12.15759, -0.58072], + "size": [0, 0.1008, 0.48684], + "pivot": [-0.00155, 11.8552, -0.00969], + "rotation": [26.0674, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [25, 20], "uv_size": [0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [20, 25], "uv_size": [0.25, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.00155, 12.25839, -0.58072], + "size": [0, 0.12601, 0.31043], + "pivot": [-0.00155, 11.8552, -0.00969], + "rotation": [26.0674, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [25, 21], "uv_size": [0.25, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [21, 25], "uv_size": [0.25, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.00155, 11.85519, 0.51092], + "size": [0, 0.02521, 0.1512], + "pivot": [-0.00155, 11.8552, -0.00969], + "rotation": [26.0674, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [27, 9], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [9, 27], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.00155, 11.8804, 0.51092], + "size": [0, 0.02519, 0.1008], + "pivot": [-0.00155, 11.8552, -0.00969], + "rotation": [26.0674, -7.6471, -164.7807], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "east": {"uv": [27, 10], "uv_size": [0.125, 0.125]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.375]}, + "west": {"uv": [10, 27], "uv_size": [0.125, 0.125]}, + "up": {"uv": [0, 0.375], "uv_size": [0, -0.375]}, + "down": {"uv": [0, 0], "uv_size": [0, 0.375]} + } + }, + { + "origin": [-0.44341, 11.96131, -1.51137], + "size": [0.68433, 0, 0.81022], + "pivot": [-0.10124, 11.96131, -1.10627], + "rotation": [4.4751, 14.3315, 107.5458], + "uv": { + "down": {"uv": [12, 14], "uv_size": [0.375, 0.5]} + } + }, + { + "origin": [-0.4432, 12.06653, -1.51095], + "size": [0.68385, 0, 0.02371], + "pivot": [-0.10127, 12.06653, -1.4991], + "rotation": [4.4341, 12.0883, 107.3663], + "uv": { + "down": {"uv": [21, 12], "uv_size": [0.375, 0.125]} + } + }, + { + "origin": [-0.44349, 12.1398, -2.32418], + "size": [0.68399, 0, 0.80802], + "pivot": [-0.10149, 12.1398, -1.92017], + "rotation": [2.9567, 9.5572, 107.2802], + "uv": { + "down": {"uv": [14, 12], "uv_size": [0.375, 0.5]} + } + }, + { + "origin": [-0.44275, 12.20994, -2.3404], + "size": [0.68252, 0, 0.04472], + "pivot": [-0.10149, 12.20994, -2.31803], + "rotation": [2.9307, 5.8121, 107.0859], + "uv": { + "down": {"uv": [13.375, 21], "uv_size": [-0.375, 0.125]} + } + }, + { + "origin": [-0.44223, 12.07009, -1.53242], + "size": [0.68191, 0, 0.02363], + "pivot": [-0.10127, 12.07009, -1.52061], + "rotation": [2.9787, 11.8041, 107.3988], + "uv": { + "down": {"uv": [21, 13], "uv_size": [0.375, 0.125]} + } + } + ] + }, + { + "name": "camera", + "pivot": [3.4563, 3.4656, -0.7687] + }, + { + "name": "view", + "pivot": [0, 0, 0] + }, + { + "name": "refit_view", + "parent": "view", + "pivot": [22.475, 5.55, 0.2], + "rotation": [0, 90, 0] + }, + { + "name": "iron_view", + "parent": "view", + "pivot": [-0.15326, 9.42188, 6.93493], + "rotation": [0, -1, 0] + }, + { + "name": "idle_view", + "parent": "view", + "pivot": [3.4563, 3.4656, -0.7687] + }, + { + "name": "positioning", + "pivot": [-0.01558, 4.125, 4.9375] + }, + { + "name": "ground", + "parent": "positioning", + "pivot": [0, 0, 0] + }, + { + "name": "thirdperson_hand", + "parent": "positioning", + "pivot": [-0.01558, 6.125, -2.0625] + }, + { + "name": "fixed", + "parent": "positioning", + "pivot": [0.79692, 5.125, -1.0625], + "rotation": [0, 90, 0] + }, + { + "name": "bone38", + "pivot": [62, -11.35, -167.5] + }, + { + "name": "bone39", + "parent": "bone38", + "pivot": [-65, -11.35, -167.5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/quenching.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/quenching.anim.json new file mode 100644 index 0000000..3c9f21c --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/quenching.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"inspect":{"loop":true,"animation_length":12,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[118.659,25.48,114.087],"0.0417":[114.669,16.105,112.382],"0.0833":[109.156,0.454,111.42],"0.125":[105.976,-9.473,111.881],"0.1667":[102.09,-21.075,113.494],"0.2083":[100.298,-25.86,114.569],"0.25":[100.206,-26.096,114.629],"0.2917":[100.074,-26.442,114.708],"0.3333":[99.985,-26.671,114.757],"0.375":[99.858,-27.011,114.825],"0.4167":[99.774,-27.235,114.866],"0.4583":[99.653,-27.567,114.922],"0.5":[99.575,-27.784,114.955],"0.5417":[99.46,-28.109,114.999],"0.5833":[99.386,-28.323,115.024],"0.625":[99.278,-28.64,115.055],"0.6667":[99.209,-28.849,115.072],"0.7083":[99.108,-29.158,115.092],"0.75":[99.043,-29.362,115.101],"0.7917":[98.95,-29.665,115.109],"0.8333":[98.89,-29.864,115.11],"0.875":[98.804,-30.16,115.106],"0.9167":[98.722,-30.451,115.096],"0.9583":[98.671,-30.643,115.085],"1.0":[98.596,-30.927,115.063],"1.0417":[98.55,-31.114,115.045],"1.0833":[98.483,-31.392,115.013],"1.125":[98.442,-31.575,114.987],"1.1667":[98.383,-31.845,114.944],"1.2083":[98.329,-32.112,114.894],"1.25":[98.295,-32.287,114.858],"1.2917":[98.249,-32.547,114.798],"1.3333":[98.221,-32.718,114.754],"1.375":[98.183,-32.971,114.684],"1.4167":[98.16,-33.137,114.634],"1.4583":[98.128,-33.384,114.554],"1.5":[98.109,-33.548,114.499],"1.5417":[98.087,-33.788,114.409],"1.5833":[98.072,-33.944,114.346],"1.625":[98.058,-34.177,114.248],"1.6667":[98.05,-34.331,114.178],"1.7083":[98.042,-34.555,114.071],"1.75":[98.04,-34.704,113.996],"1.7917":[98.038,-34.923,113.881],"1.8333":[98.041,-35.069,113.8],"1.875":[98.046,-35.282,113.676],"1.9167":[98.06,-35.488,113.548],"1.9583":[98.067,-35.627,113.458],"2.0":[98.086,-35.827,113.322],"2.0417":[98.101,-35.958,113.229],"2.0833":[98.126,-36.153,113.085],"2.125":[98.144,-36.281,112.987],"2.1667":[98.175,-36.468,112.836],"2.2083":[98.197,-36.591,112.734],"2.25":[98.234,-36.771,112.577],"2.2917":[98.262,-36.889,112.469],"2.3333":[98.306,-37.062,112.308],"2.375":[98.354,-37.23,112.14],"2.4167":[98.387,-37.341,112.026],"2.4583":[98.441,-37.502,111.855],"2.5":[98.478,-37.607,111.738],"2.5417":[98.537,-37.761,111.562],"2.5833":[98.577,-37.861,111.442],"2.625":[98.641,-38.007,111.261],"2.6667":[98.685,-38.103,111.139],"2.7083":[98.754,-38.241,110.953],"2.75":[98.801,-38.331,110.829],"2.7917":[98.874,-38.462,110.641],"2.8333":[98.923,-38.547,110.515],"2.875":[99,-38.67,110.323],"2.9167":[99.079,-38.789,110.131],"2.9583":[99.134,-38.866,110.001],"3.0":[99.216,-38.977,109.807],"3.0417":[99.272,-39.047,109.677],"3.0833":[99.358,-39.15,109.48],"3.125":[99.416,-39.216,109.349],"3.1667":[99.504,-39.31,109.152],"3.2083":[99.564,-39.371,109.02],"3.25":[99.655,-39.457,108.823],"3.2917":[99.716,-39.512,108.691],"3.3333":[99.808,-39.59,108.494],"3.375":[99.902,-39.664,108.297],"3.4167":[99.964,-39.71,108.166],"3.4583":[100.059,-39.775,107.97],"3.5":[100.122,-39.815,107.84],"3.5417":[100.217,-39.871,107.646],"3.5833":[100.281,-39.906,107.518],"3.625":[100.376,-39.954,107.326],"3.6667":[100.44,-39.983,107.199],"3.7083":[100.535,-40.023,107.01],"3.75":[100.599,-40.046,106.886],"3.7917":[100.694,-40.077,106.701],"3.8333":[100.756,-40.095,106.578],"3.875":[100.851,-40.117,106.397],"3.9167":[100.944,-40.134,106.218],"3.9583":[101.006,-40.142,106.101],"4.0":[101.096,-40.151,105.928],"4.0417":[101.156,-40.153,105.815],"4.0833":[101.246,-40.153,105.647],"4.125":[101.305,-40.149,105.536],"4.1667":[101.392,-40.139,105.374],"4.2083":[101.449,-40.131,105.27],"4.25":[101.532,-40.113,105.115],"4.2917":[101.587,-40.098,105.015],"4.3333":[101.668,-40.071,104.867],"4.375":[101.721,-40.05,104.772],"4.4167":[101.798,-40.014,104.633],"4.4583":[101.848,-39.988,104.543],"4.5":[101.921,-39.943,104.412],"4.5417":[101.992,-39.893,104.287],"4.5833":[102.036,-39.857,104.206],"4.625":[102.103,-39.798,104.09],"4.6667":[102.145,-39.756,104.015],"4.7083":[102.207,-39.688,103.91],"4.75":[102.246,-39.64,103.842],"4.7917":[102.302,-39.563,103.746],"4.8333":[102.338,-39.509,103.686],"4.875":[102.389,-39.424,103.601],"4.9167":[102.437,-39.333,103.523],"4.9583":[102.467,-39.269,103.475],"5.0":[102.509,-39.169,103.409],"5.0417":[102.535,-39.1,103.368],"5.0833":[102.572,-38.991,103.314],"5.125":[102.594,-38.916,103.282],"5.1667":[102.625,-38.799,103.24],"5.2083":[102.643,-38.717,103.217],"5.25":[102.667,-38.591,103.188],"5.2917":[102.682,-38.504,103.174],"5.3333":[102.7,-38.368,103.158],"5.375":[102.71,-38.275,103.152],"5.4167":[102.722,-38.131,103.151],"5.4583":[102.729,-38.032,103.155],"5.5":[102.734,-37.879,103.168],"5.5417":[102.732,-37.722,103.193],"5.5833":[102.733,-37.613,103.211],"5.625":[102.732,-37.445,103.244],"5.6667":[102.728,-37.333,103.273],"5.7083":[102.717,-37.156,103.326],"5.75":[102.707,-37.036,103.364],"5.7917":[102.692,-36.854,103.432],"5.8333":[102.678,-36.728,103.482],"5.875":[102.659,-36.534,103.563],"5.9167":[102.632,-36.334,103.656],"5.9583":[102.613,-36.201,103.723],"6.0":[102.582,-35.994,103.832],"6.0417":[102.558,-35.853,103.909],"6.0833":[102.521,-35.637,104.035],"6.125":[102.494,-35.491,104.124],"6.1667":[102.452,-35.267,104.266],"6.2083":[102.423,-35.115,104.365],"6.25":[102.375,-34.883,104.525],"6.2917":[102.343,-34.726,104.636],"6.3333":[102.29,-34.486,104.813],"6.375":[102.255,-34.322,104.937],"6.4167":[102.199,-34.073,105.131],"6.4583":[102.159,-33.906,105.266],"6.5":[102.099,-33.649,105.478],"6.5417":[102.057,-33.474,105.626],"6.5833":[101.993,-33.21,105.856],"6.625":[101.927,-32.94,106.098],"6.6667":[101.882,-32.758,106.265],"6.7083":[101.813,-32.481,106.525],"6.75":[101.766,-32.293,106.704],"6.7917":[101.694,-32.008,106.983],"6.8333":[101.645,-31.814,107.177],"6.875":[101.571,-31.523,107.473],"6.9167":[101.497,-31.227,107.782],"6.9583":[101.446,-31.027,107.995],"7.0":[101.371,-30.722,108.325],"7.0417":[101.32,-30.517,108.55],"7.0833":[101.241,-30.208,108.9],"7.125":[101.19,-29.999,109.139],"7.1667":[101.113,-29.681,109.508],"7.2083":[101.061,-29.468,109.761],"7.25":[100.984,-29.145,110.15],"7.2917":[100.933,-28.927,110.417],"7.3333":[100.857,-28.598,110.827],"7.375":[100.807,-28.377,111.107],"7.4167":[100.732,-28.043,111.538],"7.4583":[100.683,-27.818,111.832],"7.5":[100.611,-27.479,112.285],"7.5417":[100.564,-27.251,112.594],"7.5833":[100.494,-26.907,113.068],"7.625":[100.426,-26.56,113.555],"7.6667":[100.383,-26.328,113.887],"7.7083":[100.335,-26.038,114.297],"7.75":[100.198,-25.422,115.271],"7.7917":[99.696,-21.892,121.232],"7.8333":[99.913,-18.255,128.078],"7.875":[102.303,-13.2,141.159],"7.9167":[105.365,-12.429,150.758],"7.9583":[110.864,-13.052,165.266],"8.0":[114.305,-16.68,173.41],"8.0417":[118.317,-24.281,182.039],"8.0833":[121.487,-31.519,185.594],"8.125":[122.233,-31.33,182.419],"8.1667":[128.228,-28.742,172.816],"8.2083":[133.731,-25.886,165.781],"8.25":[140.846,-21.209,157.139],"8.2917":[141.789,-18.528,158.461],"8.3333":[143.511,-14.99,160.384],"8.375":[145.257,-13.803,160.818],"8.4167":[148.412,-13.196,160.514],"8.4583":[150.621,-13.083,160.023],"8.5":[153.948,-12.877,159.182],"8.5417":[155.453,-13.049,158.885],"8.5833":[156.77,-13.932,158.659],"8.625":[158.207,-14.793,158.335],"8.6667":[159.173,-15.374,158.081],"8.7083":[160.613,-16.252,157.65],"8.75":[161.552,-16.838,157.335],"8.7917":[162.904,-17.715,156.832],"8.8333":[163.754,-18.295,156.483],"8.875":[164.925,-19.155,155.955],"8.9167":[165.621,-19.72,155.609],"8.9583":[166.512,-20.555,155.117],"9.0":[166.956,-21.174,154.85],"9.0417":[168.012,-20.783,153.942],"9.0833":[169.072,-19.867,152.916],"9.125":[169.673,-19.242,152.28],"9.1667":[170.433,-18.293,151.388],"9.2083":[170.857,-17.655,150.83],"9.25":[171.392,-16.698,150.038],"9.2917":[171.689,-16.06,149.537],"9.3333":[172.066,-15.111,148.816],"9.375":[172.282,-14.485,148.354],"9.4167":[172.572,-13.555,147.681],"9.4583":[172.753,-12.944,147.243],"9.5":[173.022,-12.041,146.602],"9.5417":[173.211,-11.449,146.181],"9.5833":[173.41,-10.678,145.393],"9.625":[172.773,-10.73,143.714],"9.6667":[172.132,-11.005,142.588],"9.7083":[171.095,-11.555,140.97],"9.75":[170.417,-11.94,139.891],"9.7917":[169.362,-12.637,138.328],"9.8333":[168.644,-13.16,137.312],"9.875":[167.732,-13.764,135.767],"9.9167":[167.234,-13.991,134.847],"9.9583":[166.589,-14.149,133.584],"10.0":[166.181,-14.201,132.783],"10.0417":[165.558,-14.32,131.564],"10.0833":[165.106,-14.496,130.696],"10.125":[164.342,-15.033,129.233],"10.1667":[163.764,-15.645,128.106],"10.2083":[162.788,-17.082,126.106],"10.25":[161.709,-19.305,123.635],"10.2917":[154.141,-16.98,127.698],"10.3333":[133.525,-2.105,138.365],"10.375":[125.932,1.743,139.023],"10.4167":[121.88,-3.557,136.349],"10.4583":[120.941,-9.3,133.863],"10.5":[122.907,-19.563,128.91],"10.5417":[126.764,-26.491,124.468],"10.5833":[136.245,-35.24,115.717],"10.625":[148.233,-40.448,105.296],"10.6667":[155.342,-41.749,98.828],"10.7083":[163.075,-41.718,90.823],"10.75":[167.752,-41.021,85.658],"10.7917":[173.875,-39.138,78.335],"10.8333":[177.074,-37.463,73.935],"10.875":[180.298,-34.629,68.262],"10.9167":[181.357,-32.722,65.145],"10.9583":[180.636,-30.415,62.021],"11.0":[180.927,-28.383,59.519],"11.0417":[177.704,-26.89,58.526],"11.0833":[175.105,-25.956,58.526],"11.125":[170.192,-24.63,59.911],"11.1667":[166.198,-23.519,61.873],"11.2083":[155.36,-19.778,69.825],"11.25":[139.988,-9.896,81.719],"11.2917":[130.391,0.353,88.224],"11.3333":[118.868,18,93.688],"11.375":[113.142,28.559,94.944],"11.4167":[108.646,37.715,96.426],"11.4583":[110.077,36.953,100.358],"11.5":[115.035,28.732,108.197],"11.5417":[117.622,22.579,112.162],"11.5833":[119.323,19.14,115.135],"11.625":[119.958,20.215,116.043],"11.6667":[120.232,21.749,116.099],"11.7083":[120.495,24.766,115.749],"11.75":[120.636,26.888,115.464],"11.7917":[120.958,29.593,115.372]},"position":{"0.0":[15.859,34.376,-17.799],"0.0417":[15.999,30.908,-17.014],"0.0833":[16.129,25.671,-14.44],"0.125":[16.106,22.837,-12.09],"0.1667":[15.977,20.123,-8.743],"0.2083":[15.893,19.216,-7.196],"0.25":[15.889,19.175,-7.117],"0.2917":[15.883,19.115,-7.002],"0.3333":[15.879,19.075,-6.926],"0.375":[15.875,19.017,-6.812],"0.4167":[15.873,18.979,-6.738],"0.4583":[15.87,18.923,-6.627],"0.5":[15.869,18.886,-6.554],"0.5417":[15.868,18.832,-6.445],"0.5833":[15.867,18.797,-6.374],"0.625":[15.867,18.745,-6.268],"0.6667":[15.868,18.711,-6.198],"0.7083":[15.87,18.661,-6.095],"0.75":[15.871,18.628,-6.027],"0.7917":[15.874,18.579,-5.926],"0.8333":[15.877,18.548,-5.859],"0.875":[15.881,18.501,-5.761],"0.9167":[15.886,18.456,-5.664],"0.9583":[15.89,18.426,-5.6],"1.0":[15.896,18.382,-5.506],"1.0417":[15.901,18.353,-5.444],"1.0833":[15.908,18.311,-5.352],"1.125":[15.913,18.283,-5.292],"1.1667":[15.922,18.243,-5.203],"1.2083":[15.932,18.203,-5.115],"1.25":[15.938,18.177,-5.057],"1.2917":[15.949,18.139,-4.972],"1.3333":[15.956,18.114,-4.917],"1.375":[15.967,18.077,-4.834],"1.4167":[15.976,18.053,-4.78],"1.4583":[15.988,18.018,-4.7],"1.5":[15.997,17.994,-4.647],"1.5417":[16.01,17.96,-4.57],"1.5833":[16.02,17.938,-4.52],"1.625":[16.034,17.905,-4.445],"1.6667":[16.044,17.884,-4.396],"1.7083":[16.06,17.853,-4.325],"1.75":[16.07,17.832,-4.277],"1.7917":[16.087,17.802,-4.208],"1.8333":[16.097,17.782,-4.163],"1.875":[16.115,17.753,-4.096],"1.9167":[16.132,17.726,-4.031],"1.9583":[16.144,17.707,-3.988],"2.0":[16.162,17.68,-3.926],"2.0417":[16.174,17.663,-3.886],"2.0833":[16.193,17.637,-3.826],"2.125":[16.206,17.62,-3.787],"2.1667":[16.225,17.595,-3.73],"2.2083":[16.238,17.579,-3.693],"2.25":[16.259,17.556,-3.639],"2.2917":[16.272,17.54,-3.603],"2.3333":[16.293,17.518,-3.552],"2.375":[16.313,17.496,-3.502],"2.4167":[16.328,17.482,-3.47],"2.4583":[16.349,17.461,-3.422],"2.5":[16.363,17.448,-3.392],"2.5417":[16.385,17.428,-3.347],"2.5833":[16.399,17.415,-3.319],"2.625":[16.421,17.396,-3.277],"2.6667":[16.436,17.384,-3.25],"2.7083":[16.458,17.367,-3.211],"2.75":[16.473,17.355,-3.186],"2.7917":[16.496,17.338,-3.15],"2.8333":[16.511,17.328,-3.126],"2.875":[16.534,17.312,-3.093],"2.9167":[16.556,17.297,-3.061],"2.9583":[16.571,17.287,-3.041],"3.0":[16.594,17.273,-3.011],"3.0417":[16.61,17.264,-2.993],"3.0833":[16.632,17.25,-2.967],"3.125":[16.648,17.242,-2.95],"3.1667":[16.671,17.229,-2.926],"3.2083":[16.686,17.222,-2.911],"3.25":[16.709,17.21,-2.89],"3.2917":[16.724,17.203,-2.877],"3.3333":[16.746,17.192,-2.859],"3.375":[16.769,17.183,-2.843],"3.4167":[16.784,17.176,-2.832],"3.4583":[16.806,17.167,-2.819],"3.5":[16.821,17.162,-2.81],"3.5417":[16.843,17.153,-2.799],"3.5833":[16.858,17.148,-2.793],"3.625":[16.879,17.141,-2.785],"3.6667":[16.894,17.137,-2.78],"3.7083":[16.915,17.13,-2.774],"3.75":[16.929,17.127,-2.771],"3.7917":[16.95,17.121,-2.768],"3.8333":[16.964,17.118,-2.767],"3.875":[16.984,17.114,-2.767],"3.9167":[17.004,17.11,-2.769],"3.9583":[17.017,17.108,-2.771],"4.0":[17.036,17.104,-2.775],"4.0417":[17.049,17.103,-2.779],"4.0833":[17.067,17.101,-2.786],"4.125":[17.08,17.1,-2.791],"4.1667":[17.098,17.099,-2.801],"4.2083":[17.109,17.098,-2.808],"4.25":[17.127,17.098,-2.82],"4.2917":[17.138,17.098,-2.829],"4.3333":[17.154,17.099,-2.844],"4.375":[17.165,17.1,-2.855],"4.4167":[17.18,17.102,-2.873],"4.4583":[17.19,17.103,-2.885],"4.5":[17.205,17.106,-2.906],"4.5417":[17.218,17.109,-2.928],"4.5833":[17.228,17.112,-2.943],"4.625":[17.24,17.116,-2.967],"4.6667":[17.249,17.119,-2.985],"4.7083":[17.26,17.125,-3.012],"4.75":[17.268,17.129,-3.031],"4.7917":[17.278,17.135,-3.06],"4.8333":[17.285,17.14,-3.081],"4.875":[17.294,17.147,-3.113],"4.9167":[17.303,17.155,-3.147],"4.9583":[17.308,17.161,-3.171],"5.0":[17.315,17.17,-3.207],"5.0417":[17.319,17.176,-3.232],"5.0833":[17.325,17.187,-3.271],"5.125":[17.329,17.194,-3.298],"5.1667":[17.333,17.205,-3.339],"5.2083":[17.335,17.213,-3.368],"5.25":[17.338,17.226,-3.411],"5.2917":[17.34,17.235,-3.441],"5.3333":[17.341,17.249,-3.488],"5.375":[17.341,17.258,-3.52],"5.4167":[17.341,17.274,-3.568],"5.4583":[17.34,17.284,-3.602],"5.5":[17.338,17.3,-3.653],"5.5417":[17.335,17.318,-3.705],"5.5833":[17.333,17.33,-3.741],"5.625":[17.328,17.348,-3.796],"5.6667":[17.324,17.361,-3.834],"5.7083":[17.318,17.381,-3.891],"5.75":[17.313,17.395,-3.93],"5.7917":[17.304,17.416,-3.989],"5.8333":[17.298,17.431,-4.029],"5.875":[17.287,17.454,-4.092],"5.9167":[17.276,17.478,-4.155],"5.9583":[17.267,17.494,-4.198],"6.0":[17.254,17.519,-4.263],"6.0417":[17.245,17.537,-4.307],"6.0833":[17.229,17.564,-4.375],"6.125":[17.218,17.582,-4.42],"6.1667":[17.2,17.611,-4.49],"6.2083":[17.188,17.631,-4.537],"6.25":[17.168,17.661,-4.609],"6.2917":[17.154,17.682,-4.657],"6.3333":[17.132,17.715,-4.731],"6.375":[17.116,17.737,-4.78],"6.4167":[17.092,17.771,-4.856],"6.4583":[17.075,17.794,-4.907],"6.5":[17.048,17.831,-4.984],"6.5417":[17.03,17.856,-5.036],"6.5833":[17.001,17.894,-5.115],"6.625":[16.97,17.933,-5.196],"6.6667":[16.949,17.96,-5.25],"6.7083":[16.916,18.002,-5.332],"6.75":[16.894,18.031,-5.387],"6.7917":[16.858,18.075,-5.47],"6.8333":[16.834,18.105,-5.527],"6.875":[16.797,18.151,-5.612],"6.9167":[16.757,18.199,-5.698],"6.9583":[16.73,18.232,-5.755],"7.0":[16.688,18.282,-5.843],"7.0417":[16.659,18.317,-5.902],"7.0833":[16.615,18.369,-5.99],"7.125":[16.585,18.405,-6.05],"7.1667":[16.537,18.461,-6.14],"7.2083":[16.505,18.499,-6.2],"7.25":[16.456,18.557,-6.291],"7.2917":[16.422,18.597,-6.352],"7.3333":[16.369,18.658,-6.444],"7.375":[16.334,18.7,-6.505],"7.4167":[16.279,18.764,-6.598],"7.4583":[16.241,18.808,-6.66],"7.5":[16.183,18.876,-6.754],"7.5417":[16.144,18.922,-6.817],"7.5833":[16.084,18.992,-6.911],"7.625":[16.022,19.065,-7.006],"7.6667":[15.979,19.115,-7.069],"7.7083":[15.926,19.178,-7.149],"7.75":[15.815,19.31,-7.304],"7.7917":[15.167,20.15,-8.175],"7.8333":[14.438,21.242,-9.089],"7.875":[13.133,23.645,-10.506],"7.9167":[12.111,25.577,-11.127],"7.9583":[11.076,29.008,-11.674],"8.0":[10.468,31.198,-11.504],"8.0417":[9.84,34.045,-10.716],"8.0833":[9.474,36.095,-9.709],"8.125":[9.286,37,-9.324],"8.1667":[8.869,38.09,-8.99],"8.2083":[8.494,38.64,-8.956],"8.25":[7.848,39.352,-9.02],"8.2917":[7.752,39.398,-9.073],"8.3333":[7.579,39.42,-9.224],"8.375":[7.491,39.415,-9.343],"8.4167":[7.403,39.399,-9.52],"8.4583":[7.366,39.398,-9.625],"8.5":[7.335,39.434,-9.746],"8.5417":[7.371,39.465,-9.776],"8.5833":[7.504,39.501,-9.762],"8.625":[7.633,39.541,-9.759],"8.6667":[7.719,39.568,-9.759],"8.7083":[7.85,39.611,-9.762],"8.75":[7.937,39.64,-9.766],"8.7917":[8.07,39.686,-9.773],"8.8333":[8.159,39.716,-9.778],"8.875":[8.296,39.761,-9.785],"8.9167":[8.389,39.789,-9.789],"8.9583":[8.532,39.829,-9.793],"9.0":[8.627,39.848,-9.791],"9.0417":[8.815,39.928,-9.826],"9.0833":[9.024,40.023,-9.872],"9.125":[9.168,40.083,-9.899],"9.1667":[9.387,40.168,-9.935],"9.2083":[9.536,40.223,-9.956],"9.25":[9.761,40.3,-9.984],"9.2917":[9.912,40.35,-10],"9.3333":[10.137,40.422,-10.02],"9.375":[10.287,40.469,-10.032],"9.4167":[10.509,40.538,-10.047],"9.4583":[10.654,40.584,-10.057],"9.5":[10.867,40.653,-10.069],"9.5417":[11.005,40.701,-10.077],"9.5833":[11.215,40.778,-10.08],"9.625":[11.45,40.863,-10.033],"9.6667":[11.586,40.905,-9.996],"9.7083":[11.77,40.958,-9.944],"9.75":[11.892,40.994,-9.91],"9.7917":[12.057,41.042,-9.862],"9.8333":[12.165,41.07,-9.832],"9.875":[12.379,41.13,-9.783],"9.9167":[12.57,41.173,-9.743],"9.9583":[12.901,41.24,-9.674],"10.0":[13.137,41.284,-9.625],"10.0417":[13.481,41.346,-9.552],"10.0833":[13.688,41.387,-9.507],"10.125":[13.938,41.449,-9.454],"10.1667":[14.046,41.492,-9.433],"10.2083":[14.092,41.567,-9.432],"10.25":[13.961,41.66,-9.488],"10.2917":[15.303,40.992,-9.547],"10.3333":[19.632,38.715,-8.173],"10.375":[20.535,37.395,-7.676],"10.4167":[19.622,35.398,-8.425],"10.4583":[18.48,33.858,-8.889],"10.5":[16.17,31.467,-9.105],"10.5417":[14.416,29.984,-8.806],"10.5833":[11.859,28.162,-7.764],"10.625":[9.799,26.954,-6.445],"10.6667":[8.858,26.476,-5.765],"10.7083":[7.955,26.126,-5.319],"10.75":[7.419,26.061,-5.244],"10.7917":[6.651,26.176,-5.405],"10.8333":[6.168,26.381,-5.679],"10.875":[5.502,26.866,-6.3],"10.9167":[5.113,27.297,-6.829],"10.9583":[4.698,28.106,-7.88],"11.0":[4.356,28.653,-8.32],"11.0417":[4.191,29.608,-9.456],"11.0833":[4.148,30.236,-10.153],"11.125":[4.223,31.108,-11.171],"11.1667":[4.368,31.599,-11.828],"11.2083":[5.228,32.198,-13.181],"11.25":[7.175,32.811,-14.945],"11.2917":[8.924,33.299,-16.051],"11.3333":[11.809,34.148,-17.27],"11.375":[13.584,34.734,-17.729],"11.4167":[15.432,35.472,-18.009],"11.4583":[15.994,35.724,-18.04],"11.5":[16.169,35.797,-18.007],"11.5417":[16.095,35.771,-17.975],"11.5833":[16.089,35.808,-17.956],"11.625":[16.086,35.873,-17.955],"11.6667":[16.03,35.9,-17.956],"11.7083":[15.906,35.931,-17.957],"11.75":[15.817,35.949,-17.958],"11.7917":[15.711,35.984,-17.958]}},"righthand":{"rotation":{"0.0":[-42.817,140.308,-6.204],"0.0417":[-63.323,132.479,-34.432],"0.0833":[-86.063,135.019,-59.022],"0.125":[-72.968,140.326,-31.748],"0.1667":[-58.836,165.614,22.065],"0.2083":[-77.824,186.415,70.037],"0.25":[-94.95,189.111,100.242],"0.2917":[-100.374,200.445,113.739],"0.3333":[-88.413,214.706,99.578],"0.375":[-55.177,197.624,41.793],"0.4167":[-54.342,171.585,13.002],"0.4583":[-53.587,162.761,3.998],"0.5":[-51.785,161.789,4.035],"0.5417":[-55.532,163.01,1.166],"0.5833":[-74.163,174.373,-6.92],"0.625":[-95.423,177.012,-24.601],"0.6667":[-107.425,156.729,-51.72],"0.7083":[-125.904,153.96,-83.445],"0.75":[-125.643,172.634,-86.325],"0.7917":[-119.777,196.61,-77.055],"0.8333":[-113.143,197.943,-57.467],"0.875":[-101.944,196.399,-20.981],"0.9167":[-103.743,195.501,-4.904],"0.9583":[-104.498,194.404,-2.769],"1.0":[-98.161,195.532,-18.319],"1.0417":[-92.079,194.791,-18.187],"1.0833":[-81.357,193.562,-3.282],"1.125":[-77.413,199.017,13.316],"1.1667":[-96.851,217.795,64.211],"1.2083":[-109.948,211.463,97.84],"1.25":[-110.526,203.731,113.281],"1.2917":[-105.067,192.659,127.644],"1.3333":[-99.603,186.658,127.874],"1.375":[-93.094,176.755,104.571],"1.4167":[-93.778,168.787,71.602],"1.4583":[-102.253,163.425,12.614],"1.5":[-105.401,164.408,-18.238],"1.5417":[-91.519,164.773,-24.995],"1.5833":[-85.928,165.036,-27.825],"1.625":[-88.617,164.14,-42.156],"1.6667":[-91.102,164.167,-50.059],"1.7083":[-91.194,164.28,-49.288],"1.75":[-89.75,164.31,-41.166],"1.7917":[-87.232,164.231,-27.124],"1.8333":[-83.301,166.886,-0.85],"1.875":[-83.564,176.736,32.425],"1.9167":[-88.939,184.812,49.641],"1.9583":[-92.886,185.928,62.017],"2.0":[-92.461,172.38,86.573],"2.0417":[-89.9,163.444,83.059],"2.0833":[-94.678,156.737,45.631],"2.125":[-97.562,157.96,24.569],"2.1667":[-98.911,163.289,-4.832],"2.2083":[-97.808,167.029,-22.084],"2.25":[-93.921,171.774,-45.451],"2.2917":[-90.086,174.124,-50.525],"2.3333":[-85.05,179.14,-36.482],"2.375":[-82.035,185.146,-11.265],"2.4167":[-79.742,187.958,8.802],"2.4583":[-75.278,191.768,49.541],"2.5":[-74.15,194.704,69.647],"2.5417":[-75.978,198.557,85.44],"2.5833":[-77.693,200.355,90.603],"2.625":[-77.349,199.456,87.363],"2.6667":[-72.009,191.727,66.461],"2.7083":[-85.087,171.478,19.316],"2.75":[-113.769,172.924,-15.9],"2.7917":[-116.383,182.602,-37.304],"2.8333":[-107.07,185.164,-45.089],"2.875":[-91.145,184.764,-52.186],"2.9167":[-82.002,180.625,-53.808],"2.9583":[-79.406,175.023,-49.573],"3.0":[-78.082,166.754,-39.53],"3.0417":[-80.82,165.244,-36.385],"3.0833":[-97.765,173.982,-40.424],"3.125":[-111.32,184.741,-43.124],"3.1667":[-121.327,199.129,-44.752],"3.2083":[-122.121,208.593,-45.288],"3.25":[-117.555,221.386,-49.122],"3.2917":[-110.44,225.505,-56.114],"3.3333":[-96.876,217.136,-76.372],"3.375":[-91.441,191.106,-96.397],"3.4167":[-90.939,174.938,-100.917],"3.4583":[-83.083,164.125,-88.216],"3.5":[-73.636,165.077,-70.133],"3.5417":[-61.968,177.411,-37.744],"3.5833":[-59.21,189.511,-13.557],"3.625":[-76.564,210.347,50.024],"3.6667":[-94.158,210.043,88.333],"3.7083":[-103.9,208.16,110.846],"3.75":[-108.63,207.684,121.896],"3.7917":[-113.24,207.066,130.733],"3.8333":[-114.185,205.905,129.991],"3.875":[-112.605,199.631,114.978],"3.9167":[-109.317,183.476,72.57],"3.9583":[-114.756,172.985,36.767],"4.0":[-125.363,170.438,-9.62],"4.0417":[-123.267,174.733,-24.842],"4.0833":[-109.396,182.374,-35.791],"4.125":[-101.886,182.621,-47.63],"4.1667":[-94.87,175.68,-71.555],"4.2083":[-87.88,171.811,-74.546],"4.25":[-67.004,184.111,-36.62],"4.2917":[-63.279,198.256,-5.128],"4.3333":[-75.203,210.296,41.798],"4.375":[-87.507,212.529,72.783],"4.4167":[-94.322,208.788,87.551],"4.4583":[-91.729,206.721,76.437],"4.5":[-85.86,201.216,48.701],"4.5417":[-85.28,191.774,25.321],"4.5833":[-88.992,183.779,10.834],"4.625":[-98.743,173.313,-12.142],"4.6667":[-105.794,169.299,-26.749],"4.7083":[-110.75,167.241,-43.129],"4.75":[-108.919,167.25,-50.581],"4.7917":[-101.193,166.586,-56.025],"4.8333":[-94.996,165.303,-55.286],"4.875":[-82.06,161.546,-34.185],"4.9167":[-67.567,166.798,3.897],"4.9583":[-65.271,174.118,20.376],"5.0":[-67.883,185.977,42.382],"5.0417":[-72.387,192.02,56.012],"5.0833":[-79.451,195.774,72.848],"5.125":[-83.177,195.469,82.169],"5.1667":[-88.086,192.705,95.85],"5.2083":[-90.351,189.748,103.532],"5.25":[-91.823,184.669,111.01],"5.2917":[-91.625,181.431,112.353],"5.3333":[-90.046,177.539,107.267],"5.375":[-88.262,174.939,97.589],"5.4167":[-85.6,169.492,74.061],"5.4583":[-84.883,165.27,54.345],"5.5":[-86.035,159.55,22.039],"5.5417":[-88.852,156.065,-8.904],"5.5833":[-90.628,154.944,-25.711],"5.625":[-91.307,154.172,-41.81],"5.6667":[-89.58,153.714,-47.045],"5.7083":[-84.817,153.129,-49.347],"5.75":[-81.031,153.112,-48.784],"5.7917":[-76.012,153.941,-47.696],"5.8333":[-73.986,155.561,-47.665],"5.875":[-71.402,160.095,-44.825],"5.9167":[-66.434,166.498,-33.382],"5.9583":[-60.318,174.592,-15.558],"6.0":[-57.015,192.046,19.858],"6.0417":[-61.031,198.053,41.052],"6.0833":[-68.629,196.141,68.08],"6.125":[-73.299,192.724,82.881],"6.1667":[-83.04,187.768,101.63],"6.2083":[-87.802,183.316,109.187],"6.25":[-85.527,177.321,108.682],"6.2917":[-79.601,173.803,99.019],"6.3333":[-70.984,167.654,57.667],"6.375":[-68.987,161.231,20.546],"6.4167":[-73.242,159.438,-11.561],"6.4583":[-76.417,162.015,-23.347],"6.5":[-80.87,167.147,-34.845],"6.5417":[-84.98,169.322,-38.966],"6.5833":[-94.383,170.187,-36.406],"6.625":[-101.568,174.416,-31.812],"6.6667":[-105.732,177.758,-28.687],"6.7083":[-114.22,177.474,-30.341],"6.75":[-121.629,176.107,-34.372],"6.7917":[-131.732,174.187,-41.044],"6.8333":[-135.945,173.004,-44.125],"6.875":[-122.801,167.929,-36.313],"6.9167":[-89.318,167.166,-17.5],"6.9583":[-71.542,172.396,-2.778],"7.0":[-67.665,194.421,42.279],"7.0417":[-72.832,200.377,60.592],"7.0833":[-70.548,197.107,54.716],"7.125":[-68.625,193.508,48.151],"7.1667":[-66.328,186.274,35.724],"7.2083":[-65.742,180.586,26.32],"7.25":[-66.957,171.547,11.313],"7.2917":[-68.844,166.573,0.414],"7.3333":[-73.926,159.34,-14.886],"7.375":[-77.791,156.171,-24.468],"7.4167":[-83.337,153.494,-36.414],"7.4583":[-86.719,152.857,-43.058],"7.5":[-91.238,153.025,-51.584],"7.5417":[-93.96,153.61,-56.68],"7.5833":[-98.324,154.857,-65.345],"7.625":[-95.467,156.696,-54.341],"7.6667":[-87.263,162.348,-22.861],"7.7083":[-81.273,174.413,15.632],"7.75":[-78.022,181.444,31.649],"7.7917":[-71.978,191.957,48.203],"7.8333":[-67.914,199.35,56.634],"7.875":[-62.161,209.877,65.689],"7.9167":[-59.252,216.22,69.702],"7.9583":[-57.288,222.988,74.276],"8.0":[-56.576,225.671,75.402],"8.0417":[-55.118,227.652,74.102],"8.0833":[-53.376,228.117,70.711],"8.125":[-52.249,228.138,68.174],"8.1667":[-50.764,228.652,65.196],"8.2083":[-49.907,229.646,64.126],"8.25":[-48.717,231.491,63.009],"8.2917":[-47.957,232.752,62.323],"8.3333":[-46.846,234.684,61.358],"8.375":[-46.116,235.976,60.729],"8.4167":[-45.01,237.884,59.753],"8.4583":[-44.249,239.115,59.047],"8.5":[-43.039,240.874,57.848],"8.5417":[-42.169,242.052,56.961],"8.5833":[-40.741,243.868,55.497],"8.625":[-39.133,245.707,53.84],"8.6667":[-37.941,246.927,52.608],"8.7083":[-35.938,248.721,50.538],"8.75":[-34.442,249.879,48.993],"8.7917":[-31.929,251.528,46.399],"8.8333":[-30.062,252.554,44.475],"8.875":[-26.974,253.955,41.299],"8.9167":[-24.739,254.783,39.005],"8.9583":[-21.194,255.841,35.368],"9.0":[-18.776,256.412,32.889],"9.0417":[-15.191,257.067,29.21],"9.0833":[-11.73,257.519,25.645],"9.125":[-9.543,257.724,23.382],"9.1667":[-6.504,257.911,20.224],"9.2083":[-4.657,257.969,18.294],"9.25":[-2.175,257.977,15.685],"9.2917":[-0.702,257.941,14.128],"9.3333":[1.262,257.845,12.037],"9.375":[2.433,257.761,10.784],"9.4167":[4.034,257.623,9.065],"9.4583":[5.031,257.529,7.994],"9.5":[6.476,257.402,6.445],"9.5417":[7.443,257.332,5.416],"9.5833":[8.963,257.257,3.816],"9.625":[9.412,257.24,3.36],"9.6667":[8.759,257.258,4.063],"9.7083":[7.145,257.298,5.786],"9.75":[6.074,257.32,6.929],"9.7917":[3.974,257.347,9.166],"9.8333":[2.356,257.356,10.885],"9.875":[1.063,257.343,12.369],"9.9167":[1.203,257.306,12.512],"9.9583":[2.379,257.221,11.925],"10.0":[3.446,257.153,11.301],"10.0417":[4.927,257.054,10.459],"10.0833":[5.503,257.005,10.229],"10.125":[5.184,256.97,10.852],"10.1667":[3.861,256.99,12.176],"10.2083":[-0.4,257.054,16.028],"10.25":[-8.092,257.055,22.702],"10.2917":[-25.76,256.727,37.119],"10.3333":[-73.276,245.644,70.641],"10.375":[-76.221,237.868,70.826],"10.4167":[-75.933,227.479,69.115],"10.4583":[-75.2,220.617,67.976],"10.5":[-74.327,210.647,66.641],"10.5417":[-73.903,201.681,65.421],"10.5833":[-74.997,187.959,63.644],"10.625":[-77.181,166.837,60.316],"10.6667":[-82.438,154.609,55.761],"10.7083":[-100.602,146.855,44.42],"10.75":[-117.085,147.681,36.25],"10.7917":[-140.002,155.084,25.147],"10.8333":[-150.684,162.056,17.885],"10.875":[-153.317,175.108,-3.88],"10.9167":[-142.873,181.534,-27.57],"10.9583":[-124.099,178.559,-46.609],"11.0":[-110.911,173.051,-42.266],"11.0417":[-93.984,166.274,-30.803],"11.0833":[-93.13,160.569,-29.426],"11.125":[-97.699,152.351,-34.429],"11.1667":[-96.921,150.652,-45.273],"11.2083":[-90.507,147.995,-57.04],"11.25":[-70.917,143.163,-31.715],"11.2917":[-55.056,145.045,-10.557],"11.3333":[-41.237,145.876,1.959],"11.375":[-35.058,143.266,2.675],"11.4167":[-31.073,141.766,2.953],"11.4583":[-30.881,142.352,3.457],"11.5":[-31.826,143.687,3.649],"11.5417":[-32.969,144.702,3.623],"11.5833":[-34.713,146.072,3.563],"11.625":[-35.669,146.845,3.648],"11.6667":[-35.752,146.949,3.797],"11.7083":[-35.676,146.803,4.019],"11.75":[-35.558,146.621,4.168],"11.7917":[-35.409,146.388,4.398]},"position":{"0.0":[-13.385,39.747,-13.326],"0.0417":[-13.12,39.916,-13.084],"0.0833":[-12.919,40.07,-12.767],"0.125":[-13.267,40.081,-12.656],"0.1667":[-13.613,40.455,-12.269],"0.2083":[-12.803,41.552,-11.738],"0.25":[-11.993,41.839,-11.686],"0.2917":[-12.053,41.265,-11.848],"0.3333":[-12.565,40.687,-12.102],"0.375":[-12.995,40.544,-12.289],"0.4167":[-13.214,40.574,-12.328],"0.4583":[-13.307,40.262,-12.473],"0.5":[-13.332,40.037,-12.545],"0.5417":[-13.228,39.786,-12.411],"0.5833":[-12.8,39.956,-11.845],"0.625":[-12.426,40.525,-11.734],"0.6667":[-12.381,40.285,-12.202],"0.7083":[-11.786,39.696,-12.629],"0.75":[-11.555,39.56,-12.309],"0.7917":[-11.381,39.897,-12.121],"0.8333":[-11.321,40.353,-12.001],"0.875":[-11.39,40.598,-11.799],"0.9167":[-11.407,40.629,-11.81],"0.9583":[-11.392,40.626,-11.808],"1.0":[-11.347,40.386,-11.755],"1.0417":[-11.238,40.026,-11.719],"1.0833":[-11.232,39.199,-11.741],"1.125":[-11.163,38.949,-11.836],"1.1667":[-10.673,39.406,-12.206],"1.2083":[-10.883,39.544,-12.172],"1.25":[-11.133,39.595,-12.026],"1.2917":[-11.381,39.817,-11.802],"1.3333":[-11.425,40.036,-11.71],"1.375":[-11.501,40.429,-11.698],"1.4167":[-11.871,40.596,-11.792],"1.4583":[-12.743,40.158,-11.938],"1.5":[-13.01,39.67,-11.959],"1.5417":[-12.293,40.077,-11.851],"1.5833":[-12.024,40.427,-11.845],"1.625":[-12.188,40.692,-11.858],"1.6667":[-12.39,40.792,-11.857],"1.7083":[-12.814,40.578,-11.856],"1.75":[-13.155,40.171,-11.854],"1.7917":[-13.43,39.439,-11.859],"1.8333":[-13.587,39.064,-11.83],"1.875":[-13.609,38.995,-11.712],"1.9167":[-13.607,38.948,-11.664],"1.9583":[-13.557,38.899,-11.669],"2.0":[-13.083,39.076,-11.738],"2.0417":[-12.712,39.352,-11.873],"2.0833":[-12.597,39.569,-12.031],"2.125":[-12.703,39.58,-12.014],"2.1667":[-12.743,39.551,-11.904],"2.2083":[-12.622,39.568,-11.827],"2.25":[-12.277,39.73,-11.739],"2.2917":[-12.113,39.974,-11.713],"2.3333":[-12.184,40.526,-11.725],"2.375":[-12.351,40.875,-11.766],"2.4167":[-12.421,40.683,-11.79],"2.4583":[-12.636,39.885,-11.819],"2.5":[-12.727,39.602,-11.834],"2.5417":[-12.634,39.581,-11.899],"2.5833":[-12.514,39.622,-11.942],"2.625":[-12.424,39.554,-11.831],"2.6667":[-12.637,39.173,-11.449],"2.7083":[-12.916,38.929,-10.594],"2.75":[-13.213,39.431,-10.386],"2.7917":[-13.571,39.973,-10.607],"2.8333":[-13.573,40.443,-10.839],"2.875":[-13.343,41.062,-11.361],"2.9167":[-13.026,41.138,-11.768],"2.9583":[-12.766,40.732,-11.87],"3.0":[-12.419,39.857,-11.912],"3.0417":[-12.279,39.386,-11.876],"3.0833":[-12.345,38.898,-11.75],"3.125":[-12.479,38.615,-11.881],"3.1667":[-12.44,38.192,-12.2],"3.2083":[-12.192,37.891,-12.364],"3.25":[-11.763,37.537,-12.568],"3.2917":[-11.592,37.506,-12.584],"3.3333":[-11.72,38.063,-12.186],"3.375":[-11.865,38.972,-11.697],"3.4167":[-11.711,39.435,-11.704],"3.4583":[-11.408,39.726,-11.88],"3.5":[-11.262,39.676,-11.964],"3.5417":[-11.136,39.409,-12.058],"3.5833":[-11.175,39.214,-12.116],"3.625":[-11.46,39.03,-12.06],"3.6667":[-11.496,39.038,-11.984],"3.7083":[-11.496,38.962,-12.014],"3.75":[-11.531,38.874,-12.068],"3.7917":[-11.543,38.789,-12.136],"3.8333":[-11.445,38.81,-12.132],"3.875":[-11.008,39.173,-11.984],"3.9167":[-10.786,40.463,-11.839],"3.9583":[-11.44,41.314,-12.01],"4.0":[-12.705,41.456,-12.311],"4.0417":[-12.928,41.228,-12.219],"4.0833":[-12.459,41.026,-11.842],"4.125":[-12.298,40.937,-11.731],"4.1667":[-12.158,40.857,-11.71],"4.2083":[-11.831,40.889,-11.739],"4.25":[-11.044,40.761,-11.915],"4.2917":[-10.978,40.449,-12.078],"4.3333":[-11.305,40.246,-12.075],"4.375":[-11.452,40.206,-12.042],"4.4167":[-11.471,39.89,-11.955],"4.4583":[-11.389,39.352,-11.904],"4.5":[-11.329,38.589,-11.808],"4.5417":[-11.502,38.53,-11.701],"4.5833":[-11.798,38.891,-11.664],"4.625":[-12.444,39.533,-11.76],"4.6667":[-12.853,39.831,-11.887],"4.7083":[-13.161,39.989,-12],"4.75":[-13.107,40.056,-11.967],"4.7917":[-12.79,40.173,-11.871],"4.8333":[-12.564,40.203,-11.847],"4.875":[-12.513,39.855,-11.939],"4.9167":[-12.734,39.367,-12.043],"4.9583":[-12.714,39.222,-12.003],"5.0":[-12.51,38.992,-11.897],"5.0417":[-12.333,38.819,-11.838],"5.0833":[-12.133,38.608,-11.779],"5.125":[-12.052,38.517,-11.746],"5.1667":[-11.916,38.405,-11.7],"5.2083":[-11.815,38.352,-11.678],"5.25":[-11.678,38.332,-11.665],"5.2917":[-11.621,38.374,-11.669],"5.3333":[-11.651,38.539,-11.686],"5.375":[-11.791,38.741,-11.707],"5.4167":[-12.218,39.085,-11.779],"5.4583":[-12.59,39.202,-11.85],"5.5":[-13.064,39.107,-11.961],"5.5417":[-13.222,38.82,-12.04],"5.5833":[-13.166,38.661,-12.069],"5.625":[-12.984,38.552,-12.091],"5.6667":[-12.832,38.535,-12.103],"5.7083":[-12.599,38.574,-12.131],"5.75":[-12.451,38.643,-12.155],"5.7917":[-12.238,38.822,-12.181],"5.8333":[-12.101,39.063,-12.165],"5.875":[-11.925,39.576,-12.098],"5.9167":[-11.817,39.931,-12.072],"5.9583":[-11.794,39.938,-12.123],"6.0":[-12.011,39.789,-12.191],"6.0417":[-12.362,39.691,-12.132],"6.0833":[-13.004,39.573,-11.941],"6.125":[-13.143,39.567,-11.829],"6.1667":[-12.622,39.611,-11.696],"6.2083":[-12.182,39.603,-11.666],"6.25":[-12.15,39.575,-11.697],"6.2917":[-12.507,39.549,-11.769],"6.3333":[-12.896,39.048,-11.977],"6.375":[-12.652,38.413,-12.117],"6.4167":[-12.197,38.5,-12.083],"6.4583":[-12.112,39.065,-11.984],"6.5":[-12.148,39.926,-11.844],"6.5417":[-12.255,40.065,-11.782],"6.5833":[-12.568,39.476,-11.768],"6.625":[-12.576,38.98,-11.774],"6.6667":[-12.486,38.701,-11.799],"6.7083":[-12.718,38.304,-11.961],"6.75":[-13.029,37.986,-12.16],"6.7917":[-13.485,37.5,-12.504],"6.8333":[-13.698,37.287,-12.669],"6.875":[-13.399,37.803,-12.28],"6.9167":[-12.632,39.46,-11.831],"6.9583":[-12.34,40.53,-11.879],"7.0":[-12.2,39.978,-11.908],"7.0417":[-12.167,39.411,-11.92],"7.0833":[-12.242,39.068,-12.066],"7.125":[-12.308,38.826,-12.17],"7.1667":[-12.424,38.455,-12.347],"7.2083":[-12.506,38.207,-12.48],"7.25":[-12.591,37.822,-12.704],"7.2917":[-12.784,37.709,-12.898],"7.3333":[-12.756,37.428,-13.126],"7.375":[-12.785,37.355,-13.305],"7.4167":[-12.81,37.453,-13.588],"7.4583":[-12.813,37.725,-13.794],"7.5":[-12.811,38.351,-14.124],"7.5417":[-12.809,38.847,-14.351],"7.5833":[-12.771,39.652,-14.702],"7.625":[-13.425,39.23,-14.877],"7.6667":[-14.704,37.386,-14.85],"7.7083":[-15.844,35.144,-14.662],"7.75":[-15.813,34.795,-14.278],"7.7917":[-15.17,35.472,-13.467],"7.8333":[-14.616,36.321,-12.898],"7.875":[-13.739,37.855,-12.09],"7.9167":[-13.293,38.878,-11.609],"7.9583":[-12.852,39.904,-10.98],"8.0":[-12.655,40.385,-10.569],"8.0417":[-12.404,40.952,-9.951],"8.0833":[-12.202,41.366,-9.368],"8.125":[-12.093,41.578,-9.019],"8.1667":[-11.97,41.832,-8.593],"8.2083":[-11.919,41.967,-8.39],"8.25":[-11.896,42.09,-8.188],"8.2917":[-11.91,42.122,-8.105],"8.3333":[-11.959,42.118,-8.033],"8.375":[-12.001,42.093,-8.007],"8.4167":[-12.065,42.042,-7.976],"8.4583":[-12.097,42.012,-7.947],"8.5":[-12.119,41.989,-7.871],"8.5417":[-12.125,41.979,-7.808],"8.5833":[-12.133,41.959,-7.711],"8.625":[-12.14,41.937,-7.612],"8.6667":[-12.143,41.921,-7.547],"8.7083":[-12.147,41.896,-7.449],"8.75":[-12.149,41.88,-7.387],"8.7917":[-12.151,41.856,-7.298],"8.8333":[-12.153,41.841,-7.244],"8.875":[-12.154,41.819,-7.17],"8.9167":[-12.155,41.806,-7.127],"8.9583":[-12.155,41.789,-7.075],"9.0":[-12.155,41.779,-7.048],"9.0417":[-12.154,41.765,-7.022],"9.0833":[-12.149,41.751,-7.011],"9.125":[-12.143,41.74,-7.01],"9.1667":[-12.133,41.723,-7.017],"9.2083":[-12.125,41.712,-7.027],"9.25":[-12.112,41.694,-7.048],"9.2917":[-12.104,41.681,-7.065],"9.3333":[-12.091,41.663,-7.093],"9.375":[-12.084,41.651,-7.113],"9.4167":[-12.075,41.634,-7.143],"9.4583":[-12.071,41.623,-7.161],"9.5":[-12.069,41.608,-7.187],"9.5417":[-12.07,41.599,-7.201],"9.5833":[-12.077,41.589,-7.216],"9.625":[-12.115,41.587,-7.221],"9.6667":[-12.164,41.593,-7.218],"9.7083":[-12.252,41.607,-7.211],"9.75":[-12.31,41.615,-7.206],"9.7917":[-12.411,41.633,-7.196],"9.8333":[-12.48,41.646,-7.187],"9.875":[-12.53,41.672,-7.181],"9.9167":[-12.516,41.714,-7.183],"9.9583":[-12.448,41.803,-7.191],"10.0":[-12.389,41.87,-7.199],"10.0417":[-12.305,41.967,-7.209],"10.0833":[-12.268,42.02,-7.213],"10.125":[-12.271,42.065,-7.212],"10.1667":[-12.328,42.064,-7.205],"10.2083":[-12.521,41.998,-7.18],"10.25":[-12.879,41.839,-7.135],"10.2917":[-13.716,41.406,-7.021],"10.3333":[-17.547,39.527,-6.61],"10.375":[-19.359,38.766,-6.595],"10.4167":[-22.1,37.861,-6.657],"10.4583":[-23.89,37.304,-6.746],"10.5":[-26.24,36.614,-6.892],"10.5417":[-27.185,35.857,-7.222],"10.5833":[-27.433,34.884,-7.725],"10.625":[-23.649,33.264,-8.896],"10.6667":[-20.727,32.364,-9.764],"10.7083":[-18.133,31.808,-10.839],"10.75":[-16.915,31.707,-11.539],"10.7917":[-15.51,31.827,-12.698],"10.8333":[-14.816,32.116,-13.439],"10.875":[-14.305,33.432,-13.87],"10.9167":[-14.158,34.731,-13.499],"10.9583":[-13.438,36.36,-13.351],"11.0":[-13.031,37.435,-13.797],"11.0417":[-12.455,38.956,-14.417],"11.0833":[-11.78,39.918,-14.068],"11.125":[-10.754,41.135,-13.178],"11.1667":[-10.304,41.694,-12.96],"11.2083":[-10.088,42.008,-12.822],"11.25":[-11.258,40.884,-12.618],"11.2917":[-12.468,40.165,-12.498],"11.3333":[-13.405,39.225,-12.72],"11.375":[-13.657,38.728,-13.06],"11.4167":[-13.804,38.524,-13.347],"11.4583":[-13.818,38.602,-13.41],"11.5":[-13.803,38.853,-13.467],"11.5417":[-13.768,39.062,-13.483],"11.5833":[-13.703,39.365,-13.488],"11.625":[-13.66,39.565,-13.489],"11.6667":[-13.649,39.629,-13.488],"11.7083":[-13.632,39.686,-13.472],"11.75":[-13.622,39.714,-13.457],"11.7917":[-13.606,39.76,-13.436]}},"weapon":{"rotation":{"0.0":[-41.802,-36.459,-1.878],"0.0417":[-2.359,-45.052,-47.979],"0.0833":[42.564,-28.176,-86.495],"0.125":[48.392,-28.801,-62.659],"0.1667":[45.71,-17.612,-3.387],"0.2083":[36.26,-4.556,50.576],"0.25":[22.875,-8.802,78.282],"0.2917":[-24.149,-16.166,73.386],"0.3333":[-69.057,-14.566,45.154],"0.375":[-53.026,-51.194,-29.911],"0.4167":[14.842,-41.875,-99.006],"0.4583":[49.699,-29.985,-121.351],"0.5":[68.122,-21.58,-132.278],"0.5417":[89.916,4.457,-146.595],"0.5833":[36.84,53.127,-230.959],"0.625":[-28.084,14.221,-283.101],"0.6667":[-60.792,4.645,-310.174],"0.7083":[-69.445,-9.674,-332.4],"0.75":[-41.743,-13.533,-338.268],"0.7917":[-3.556,-12.62,-328.043],"0.8333":[-0.862,10.485,-295.621],"0.875":[15.971,7.675,-228.668],"0.9167":[3.523,0.431,-143.399],"0.9583":[4.002,-0.033,-90.082],"1.0":[13.158,-26.969,-70.265],"1.0417":[3.499,-25.712,-27.142],"1.0833":[-22.574,-10.601,47.703],"1.125":[-9.538,-3.496,86.578],"1.1667":[15.256,15.914,128.775],"1.2083":[17.58,-1.257,162.833],"1.25":[10.229,-18.107,196.706],"1.2917":[-5.767,-14.634,258.838],"1.3333":[2.599,6.8,293.86],"1.375":[3.632,-2.041,262.299],"1.4167":[-12.661,16.968,190.078],"1.4583":[3.939,-15.883,86.275],"1.5":[25.108,-18.286,35.597],"1.5417":[-38.791,-9.315,39.242],"1.5833":[-72.671,10.75,54.353],"1.625":[-60.131,49.417,79.093],"1.6667":[28.204,63.511,165.798],"1.7083":[57.767,13.152,218.464],"1.75":[55.553,-13.989,234.795],"1.7917":[23.002,-46.869,288.934],"1.8333":[-14.6,-33.838,335.032],"1.875":[-29.029,-22.332,380.841],"1.9167":[-19.391,-23.423,407.204],"1.9583":[-8.109,-23.725,418.95],"2.0":[59.697,-18.327,395.61],"2.0417":[77.394,-4.67,361.432],"2.0833":[63.495,20.878,295.949],"2.125":[49.549,22.705,259.769],"2.1667":[69.524,-3.994,273.651],"2.2083":[54.941,-29.429,281.933],"2.25":[-12.145,-42.916,323.32],"2.2917":[-58.491,-30.969,351.731],"2.3333":[-87.749,26.032,382.538],"2.375":[-54.591,48.585,454.363],"2.4167":[-23.199,43.642,495.821],"2.4583":[29.665,42.6,563.716],"2.5":[53.549,35.914,596.305],"2.5417":[64.906,21.433,617.478],"2.5833":[67.667,12.613,623.587],"2.625":[69.577,9.375,621.591],"2.6667":[68.898,30.423,601.315],"2.7083":[-44.331,57.937,463.529],"2.75":[-65.961,7.524,421.406],"2.7917":[-62.75,-30.809,395.434],"2.8333":[-29.722,-50.664,355.54],"2.875":[57.314,-59.456,262.786],"2.9167":[79.831,-22.896,224.123],"2.9583":[79.25,2.042,219.716],"3.0":[50.725,36.808,186.144],"3.0417":[19.936,39.903,160.532],"3.0833":[-28.875,20.468,143.415],"3.125":[-59.911,3.704,138.568],"3.1667":[-77.96,-12.979,136.554],"3.2083":[-78.948,-22.424,135.995],"3.25":[-75.062,-35.287,132.908],"3.2917":[-69.338,-40.017,127.15],"3.3333":[-50.502,-27.113,107.506],"3.375":[-23.039,13.659,97.769],"3.4167":[-7.732,47.412,83.901],"3.4583":[61.427,66.176,152.087],"3.5":[91.225,49.052,197.949],"3.5417":[80.835,18.509,241.386],"3.5833":[54.723,0.026,270.074],"3.625":[-18.719,34.052,272.062],"3.6667":[-56.175,25.733,265.644],"3.7083":[-98.689,23.472,267.97],"3.75":[-130.696,21.252,270.714],"3.7917":[-174.911,19.03,271.148],"3.8333":[-196.148,18.687,266.152],"3.875":[-209.643,21.164,244.325],"3.9167":[-223.022,23.713,190.451],"3.9583":[-230.738,16.337,147.418],"4.0":[-216.694,4.72,95.095],"4.0417":[-173.581,-8.612,81.848],"4.0833":[-86.662,2.928,63.948],"4.125":[-71.004,12.939,50.058],"4.1667":[-90.43,48.719,5.957],"4.2083":[-141.929,69.955,-54.751],"4.25":[-261.307,15.294,-138.721],"4.2917":[-281.655,0.597,-108.956],"4.3333":[-328.605,14.241,-88.238],"4.375":[-372.969,23.224,-84.821],"4.4167":[-440.602,24.741,-103.598],"4.4583":[-492.516,-0.183,-115.67],"4.5":[-565.474,-44.443,-111.484],"4.5417":[-625.169,-53.745,-93.701],"4.5833":[-644.245,-74.987,-92.066],"4.625":[-786.211,-64.263,41.337],"4.6667":[-799.747,-36.085,58.677],"4.7083":[-792.454,5.92,77.633],"4.75":[-771.662,20.314,90.233],"4.7917":[-723.075,27.525,125.314],"4.8333":[-686.022,18.963,150.348],"4.875":[-651.271,-7.111,189.741],"4.9167":[-650.36,-42.056,233.643],"4.9583":[-689.592,-68.703,270.937],"5.0":[-811.565,-45.325,398.226],"5.0417":[-789.397,-17.932,418.609],"5.0833":[-729.886,1.028,453.142],"5.125":[-703.961,18.892,473.657],"5.1667":[-683.201,11.263,516.665],"5.2083":[-682.45,9.374,548.62],"5.25":[-701.657,5.287,588.292],"5.2917":[-719.132,3.595,610.251],"5.3333":[-741.474,12.587,649.993],"5.375":[-732.188,19.008,627.937],"5.4167":[-720.024,19.578,562.572],"5.4583":[-726.768,15.323,519.267],"5.5":[-738.908,-7.832,461.016],"5.5417":[-740.03,-32.675,418.54],"5.5833":[-737.977,-17.526,390.655],"5.625":[-759.373,-10.173,395.78],"5.6667":[-781.04,1.581,408.992],"5.7083":[-797.396,30.84,410.557],"5.75":[-769.075,56.257,439.422],"5.7917":[-667.035,37.995,539.375],"5.8333":[-651.72,15.465,563.327],"5.875":[-651.354,-22.915,586.578],"5.9167":[-674.751,-48.044,621.336],"5.9583":[-715.335,-49.251,649.586],"6.0":[-785.509,-39.758,699.094],"6.0417":[-791.598,-31.561,725.972],"6.0833":[-753.848,-5.177,777.686],"6.125":[-726.377,14.107,811.018],"6.1667":[-705.036,16.751,863.97],"6.2083":[-696.992,10.32,893.047],"6.25":[-709.032,4.336,906.331],"6.2917":[-715.015,5.379,903.56],"6.3333":[-727.545,0.508,896.54],"6.375":[-724.241,12.912,867.382],"6.4167":[-726.217,17.556,812.876],"6.4583":[-729.968,14.706,772.314],"6.5":[-723.917,0.227,723.617],"6.5417":[-717.89,-5.007,695.148],"6.5833":[-705.385,-1.229,639.976],"6.625":[-713.934,10.259,590.502],"6.6667":[-722.736,10.044,572.492],"6.7083":[-724.802,16.481,566.307],"6.75":[-720.578,23.395,561.613],"6.7917":[-712.414,32.763,553.573],"6.8333":[-708.468,36.257,550.154],"6.875":[-696.869,39.704,562.814],"6.9167":[-675.38,1.674,628.363],"6.9583":[-716.214,-34.789,693.168],"7.0":[-740.897,0.391,739.49],"7.0417":[-737.661,12.872,761.016],"7.0833":[-727.49,31.783,807.66],"7.125":[-710.636,25.508,854.011],"7.1667":[-703.488,4.628,898.062],"7.2083":[-703.736,-2.268,917.302],"7.25":[-701.435,-7.224,942.514],"7.2917":[-701.149,-12.267,957.754],"7.3333":[-706.49,-19.393,980.693],"7.375":[-711.768,-21.844,997.193],"7.4167":[-719.014,-23.155,1021.784],"7.4583":[-723.567,-22.742,1036.625],"7.5":[-732.136,-18.577,1064.97],"7.5417":[-739.315,-8.297,1099.186],"7.5833":[-732.916,0.641,1174.396],"7.625":[-720.464,20.15,1212.443],"7.6667":[-716.952,13.349,1248.195],"7.7083":[-721.301,0.029,1287.934],"7.75":[-720.818,-7.442,1303.742],"7.7917":[-716.81,-18.96,1320.125],"7.8333":[-714.302,-27.004,1328.68],"7.875":[-710.967,-38.505,1338.235],"7.9167":[-709.549,-45.108,1343.063],"7.9583":[-709.768,-52.058,1349.068],"8.0":[-710.083,-54.782,1350.976],"8.0417":[-709.269,-56.962,1350.116],"8.0833":[-707.357,-57.727,1346.457],"8.125":[-705.964,-57.95,1343.618],"8.1667":[-704.351,-58.706,1340.432],"8.2083":[-703.767,-59.815,1339.54],"8.25":[-703.242,-61.794,1338.935],"8.2917":[-702.989,-63.136,1338.654],"8.3333":[-702.779,-65.174,1338.437],"8.375":[-702.725,-66.532,1338.383],"8.4167":[-702.749,-68.531,1338.383],"8.4583":[-702.812,-69.825,1338.394],"8.5":[-702.898,-71.685,1338.327],"8.5417":[-703.009,-72.936,1338.307],"8.5833":[-703.309,-74.859,1338.405],"8.625":[-703.786,-76.817,1338.659],"8.6667":[-704.225,-78.127,1338.946],"8.7083":[-705.105,-80.063,1339.589],"8.75":[-705.868,-81.328,1340.191],"8.7917":[-707.412,-83.165,1341.49],"8.8333":[-708.806,-84.335,1342.721],"8.875":[-711.812,-85.975,1345.486],"8.9167":[-714.95,-86.983,1348.466],"8.9583":[-723.892,-88.323,1357.184],"9.0":[-739.124,-89.065,1372.273],"9.0417":[-827.141,-89.477,1460.078],"9.0833":[-870.154,-88.811,1502.888],"9.125":[-878.526,-88.342,1511.12],"9.1667":[-885.478,-87.715,1517.861],"9.2083":[-888.866,-87.355,1521.114],"9.25":[-892.863,-86.879,1524.905],"9.2917":[-895.2,-86.601,1527.111],"9.3333":[-898.406,-86.223,1530.122],"9.375":[-900.217,-85.993,1531.805],"9.4167":[-902.699,-85.673,1534.106],"9.4583":[-904.115,-85.467,1535.408],"9.5":[-905.776,-85.154,1536.905],"9.5417":[-906.551,-84.941,1537.579],"9.5833":[-907.201,-84.602,1538.089],"9.625":[-907.29,-84.503,1538.14],"9.6667":[-907.247,-84.648,1538.149],"9.7083":[-907.029,-85.004,1538.06],"9.75":[-906.88,-85.241,1537.995],"9.7917":[-906.533,-85.701,1537.816],"9.8333":[-906.211,-86.055,1537.624],"9.875":[-906.168,-86.338,1537.783],"9.9167":[-906.788,-86.31,1538.668],"9.9583":[-908.237,-86.054,1540.654],"10.0":[-909.221,-85.816,1542.038],"10.0417":[-910.384,-85.482,1543.779],"10.0833":[-910.927,-85.352,1544.644],"10.125":[-911.436,-85.422,1545.446],"10.1667":[-911.468,-85.719,1545.5],"10.2083":[-910.709,-86.676,1544.427],"10.25":[-905.022,-88.383,1537.907],"10.2917":[-935.634,-92.531,1565.729],"10.3333":[-926.709,-110.66,1544.871],"10.375":[-920.196,-118.052,1536.585],"10.4167":[-912.544,-127.557,1528.629],"10.4583":[-908.495,-133.911,1524.921],"10.5":[-903.564,-144.083,1520.76],"10.5417":[-901.221,-151.652,1518.65],"10.5833":[-898.972,-165.569,1515.667],"10.625":[-896.681,-186.055,1511.925],"10.6667":[-898.953,-199.744,1509.247],"10.7083":[-913.84,-211.158,1500.146],"10.75":[-929.953,-214.174,1492.192],"10.7917":[-955.315,-212.016,1478.247],"10.8333":[-967.294,-207.064,1469.95],"10.875":[-977.636,-189.464,1426.155],"10.9167":[-978.082,-178.707,1365.526],"10.9583":[-1004.551,-192.03,1304.351],"11.0":[-1040.484,-198.184,1272.541],"11.0417":[-1067.467,-178.284,1244.705],"11.0833":[-1092.762,-176.489,1236.783],"11.125":[-1148.267,-176.943,1217.941],"11.1667":[-1165.409,-160.225,1185.949],"11.2083":[-1167.13,-155.848,1146.542],"11.25":[-1214.93,-130.528,1190.782],"11.2917":[-1276.741,-148.244,1250.498],"11.3333":[-1303.828,-155.082,1267.774],"11.375":[-1312.287,-149.81,1269.777],"11.4167":[-1317.149,-146.924,1271.168],"11.4583":[-1317.223,-147.707,1271.488],"11.5":[-1316.127,-148.925,1271.672],"11.5417":[-1314.894,-149.801,1271.686],"11.5833":[-1313.032,-150.956,1271.698],"11.625":[-1312.012,-151.605,1271.821],"11.6667":[-1311.916,-151.697,1271.969],"11.7083":[-1312.012,-151.567,1272.195],"11.75":[-1312.154,-151.398,1272.349],"11.7917":[-1312.331,-151.186,1272.579]},"position":{"0.0":[-6.271,56.764,-13.742],"0.0417":[-6.854,57.484,-14.057],"0.0833":[-7.49,58.201,-15.086],"0.125":[-6.491,58.453,-14.978],"0.1667":[-4.622,57.357,-15.359],"0.2083":[-4.535,56.71,-16.304],"0.25":[-4.706,56.71,-16.733],"0.2917":[-4.547,57.313,-16.443],"0.3333":[-4.484,57.951,-15.611],"0.375":[-5.707,58.857,-15.191],"0.4167":[-6.494,58.756,-15.723],"0.4583":[-6.251,58.591,-15.639],"0.5":[-5.774,58.566,-15.363],"0.5417":[-5.052,58.376,-15.162],"0.5833":[-4.524,57.479,-15.315],"0.625":[-4.393,57.252,-15.145],"0.6667":[-4.513,57.814,-14.031],"0.7083":[-4.812,57.623,-13.999],"0.75":[-4.804,56.982,-14.876],"0.7917":[-4.476,56.121,-16.099],"0.8333":[-3.22,55.975,-16.523],"0.875":[-2.689,53.726,-17.223],"0.9167":[-6.616,52.524,-17.505],"0.9583":[-8.168,54.485,-17.291],"1.0":[-8.622,56.473,-18.099],"1.0417":[-6.554,58.021,-18.222],"1.0833":[-3.02,57.474,-16.225],"1.125":[-2.032,55.446,-16.708],"1.1667":[-2.868,53.644,-18.207],"1.2083":[-5.132,52.448,-18.122],"1.25":[-7.403,52.548,-17.453],"1.2917":[-9.383,54.322,-16.843],"1.3333":[-8.787,56.422,-17.083],"1.375":[-8.521,53.579,-17.092],"1.4167":[-5.742,50.612,-16.15],"1.4583":[-1.681,53.938,-17.235],"1.5":[-2.816,56.67,-18.906],"1.5417":[-3.63,58.157,-14.132],"1.5833":[-3.468,56.744,-13.079],"1.625":[-3.912,55.508,-16.244],"1.6667":[-4.351,55.347,-18.513],"1.7083":[-6.461,55.461,-19.664],"1.75":[-8.376,56.579,-19.662],"1.7917":[-9.194,58.37,-18.41],"1.8333":[-7.923,58.528,-16.361],"1.875":[-5.711,58.016,-15.29],"1.9167":[-4.079,57.135,-15.827],"1.9583":[-3.516,56.158,-16.333],"2.0":[-4.099,53.37,-20.167],"2.0417":[-4.787,52.551,-21.052],"2.0833":[-6.159,52.51,-20.095],"2.125":[-6.653,52.223,-19.693],"2.1667":[-5.521,55.102,-20.479],"2.2083":[-6.125,57.048,-19.6],"2.25":[-7.932,58.712,-16.463],"2.2917":[-8.134,59.485,-13.924],"2.3333":[-5.447,58.445,-13.193],"2.375":[-3.653,55.951,-13.286],"2.4167":[-3.091,54.217,-13.809],"2.4583":[-3.942,51.421,-16.869],"2.5":[-4.913,50.836,-18.606],"2.5417":[-5.667,51.81,-19.979],"2.5833":[-5.7,52.712,-20.508],"2.625":[-5.201,52.962,-20.553],"2.6667":[-3.823,51.667,-18.416],"2.7083":[-1.424,51.957,-12.113],"2.75":[-2.515,55.804,-9.701],"2.7917":[-5.601,59.44,-9.9],"2.8333":[-7.226,61.338,-11.093],"2.875":[-8.33,61.978,-13.9],"2.9167":[-7.948,60.037,-16.547],"2.9583":[-6.768,58.634,-17.101],"3.0":[-5.075,56.597,-15.936],"3.0417":[-4.658,55.356,-15.042],"3.0833":[-4.915,54.154,-14.531],"3.125":[-5.268,53.456,-14.635],"3.1667":[-5.507,52.477,-15.028],"3.2083":[-5.547,51.849,-15.223],"3.25":[-5.648,51.175,-15.412],"3.2917":[-5.75,51.133,-15.416],"3.3333":[-6.036,52.134,-15.28],"3.375":[-6.373,54.286,-15.289],"3.4167":[-6.467,55.724,-15.307],"3.4583":[-6.249,56.918,-15.228],"3.5":[-5.841,57.185,-15.224],"3.5417":[-5.005,56.948,-15.473],"3.5833":[-4.497,56.447,-15.81],"3.625":[-4.622,54.699,-16.619],"3.6667":[-5.429,53.962,-16.802],"3.7083":[-6.026,53.923,-16.799],"3.75":[-6.303,54.05,-16.795],"3.7917":[-6.52,54.222,-16.781],"3.8333":[-6.548,54.196,-16.757],"3.875":[-6.306,53.711,-16.631],"3.9167":[-4.922,53.055,-16.131],"3.9583":[-3.882,53.649,-15.776],"4.0":[-3.812,55.13,-15.742],"4.0417":[-4.233,55.655,-15.849],"4.0833":[-4.798,56.164,-15.867],"4.125":[-5.166,56.584,-15.76],"4.1667":[-5.744,57.264,-15.486],"4.2083":[-5.871,57.645,-15.329],"4.25":[-5.089,58.077,-15.46],"4.2917":[-4.478,57.588,-15.863],"4.3333":[-4.486,56.278,-16.446],"4.375":[-4.984,55.526,-16.727],"4.4167":[-5.444,54.73,-16.802],"4.4583":[-5.246,54.098,-16.796],"4.5":[-4.75,53.328,-16.722],"4.5417":[-4.543,53.341,-16.702],"4.5833":[-4.708,53.75,-16.856],"4.625":[-5.086,54.161,-17.119],"4.6667":[-5.178,54.098,-17.121],"4.7083":[-4.708,53.66,-16.55],"4.75":[-4.445,53.897,-16.354],"4.7917":[-4.617,54.62,-17.736],"4.8333":[-5.129,55.136,-18.684],"4.875":[-6.591,56.601,-19.022],"4.9167":[-6.781,58.615,-18.114],"4.9583":[-6.603,58.468,-16.617],"5.0":[-6.004,57.597,-14.127],"5.0417":[-3.899,57.049,-14.551],"5.0833":[-1.108,54.764,-16.529],"5.125":[-1.654,53.385,-17.575],"5.1667":[-4.156,52.239,-18.458],"5.2083":[-5.509,52.036,-18.371],"5.25":[-6.902,52.131,-17.732],"5.2917":[-7.601,52.413,-17.338],"5.3333":[-7.569,54.137,-16.18],"5.375":[-7.66,53.051,-16.452],"5.4167":[-6.253,50.739,-16.818],"5.4583":[-4.675,50.855,-16.786],"5.5":[-3.295,53.236,-16.687],"5.5417":[-3.963,55.583,-16.78],"5.5833":[-4.713,56.142,-16.77],"5.625":[-5.211,55.885,-16.213],"5.6667":[-5.125,55.466,-15.709],"5.7083":[-4.713,54.816,-15.512],"5.75":[-4.329,54.437,-16.568],"5.7917":[-4.228,54.418,-19.007],"5.8333":[-5.587,55.621,-19.338],"5.875":[-8.045,57.831,-18.762],"5.9167":[-9.014,59.509,-17.918],"5.9583":[-8.836,59.606,-16.515],"6.0":[-7.98,59.182,-13.551],"6.0417":[-6.556,59.393,-13.141],"6.0833":[-2.696,58.429,-14.837],"6.125":[-1.177,56.122,-16.382],"6.1667":[-2.581,52.508,-18.537],"6.2083":[-4.521,50.877,-19.255],"6.25":[-5.87,49.395,-18.75],"6.2917":[-5.55,48.947,-17.796],"6.3333":[-4.789,49.243,-16.924],"6.375":[-2.776,50.302,-16.516],"6.4167":[-0.522,54.314,-16.025],"6.4583":[-1.818,57.883,-16.26],"6.5":[-5.954,62.031,-16.936],"6.5417":[-8.413,61.45,-17.734],"6.5833":[-10.162,56.55,-19.003],"6.625":[-9.83,50.52,-18.328],"6.6667":[-9.766,47.891,-17.465],"6.7083":[-9.294,46.237,-17.181],"6.75":[-8.521,45.197,-17.475],"6.7917":[-6.991,43.838,-17.962],"6.8333":[-6.152,43.403,-18.211],"6.875":[-6.935,45.43,-19.852],"6.9167":[-8.542,54.555,-20.332],"6.9583":[-7.939,63.385,-17.105],"7.0":[-5.091,71.613,-12.703],"7.0417":[-3.597,75.329,-11.738],"7.0833":[-3.816,76.324,-12.174],"7.125":[-3.928,77.641,-12.04],"7.1667":[-5.239,80.352,-11.955],"7.2083":[-4.563,82.357,-11.974],"7.25":[-4.367,85.156,-12.287],"7.2917":[-5.528,85.156,-13.186],"7.3333":[-5.829,84.477,-13.818],"7.375":[-6.52,84.211,-14.016],"7.4167":[-9.559,81.887,-15.825],"7.4583":[-10.57,79.834,-17.285],"7.5":[-10.301,76.297,-18.945],"7.5417":[-9.159,72.309,-19.365],"7.5833":[-6.355,61.08,-18.669],"7.625":[-5.591,55.513,-17.42],"7.6667":[-7.046,52.474,-17.086],"7.7083":[-8.78,49.388,-16.752],"7.75":[-9.03,48.981,-16.434],"7.7917":[-8.621,49.879,-15.729],"7.8333":[-8.127,50.949,-15.179],"7.875":[-7.254,52.853,-14.326],"7.9167":[-6.726,54.039,-13.783],"7.9583":[-6.239,55.248,-13.079],"8.0":[-6.025,55.807,-12.631],"8.0417":[-5.764,56.447,-11.974],"8.0833":[-5.565,56.912,-11.368],"8.125":[-5.464,57.151,-11.006],"8.1667":[-5.351,57.453,-10.555],"8.2083":[-5.306,57.627,-10.33],"8.25":[-5.291,57.817,-10.091],"8.2917":[-5.311,57.891,-9.981],"8.3333":[-5.373,57.949,-9.871],"8.375":[-5.424,57.96,-9.813],"8.4167":[-5.5,57.968,-9.744],"8.4583":[-5.543,57.974,-9.685],"8.5":[-5.58,58.003,-9.567],"8.5417":[-5.596,58.026,-9.477],"8.5833":[-5.622,58.059,-9.334],"8.625":[-5.647,58.086,-9.188],"8.6667":[-5.662,58.103,-9.09],"8.7083":[-5.685,58.126,-8.943],"8.75":[-5.7,58.139,-8.847],"8.7917":[-5.721,58.159,-8.708],"8.8333":[-5.733,58.169,-8.621],"8.875":[-5.751,58.183,-8.501],"8.9167":[-5.76,58.192,-8.428],"8.9583":[-5.774,58.205,-8.335],"9.0":[-5.781,58.21,-8.283],"9.0417":[-5.789,58.218,-8.222],"9.0833":[-5.79,58.22,-8.182],"9.125":[-5.789,58.22,-8.164],"9.1667":[-5.784,58.215,-8.15],"9.2083":[-5.779,58.212,-8.146],"9.25":[-5.77,58.205,-8.149],"9.2917":[-5.763,58.197,-8.155],"9.3333":[-5.754,58.186,-8.169],"9.375":[-5.748,58.179,-8.18],"9.4167":[-5.742,58.166,-8.198],"9.4583":[-5.738,58.16,-8.21],"9.5":[-5.738,58.15,-8.223],"9.5417":[-5.74,58.145,-8.23],"9.5833":[-5.75,58.14,-8.234],"9.625":[-5.788,58.14,-8.235],"9.6667":[-5.837,58.145,-8.237],"9.7083":[-5.92,58.151,-8.242],"9.75":[-5.976,58.156,-8.245],"9.7917":[-6.071,58.165,-8.251],"9.8333":[-6.137,58.171,-8.256],"9.875":[-6.18,58.192,-8.259],"9.9167":[-6.156,58.232,-8.26],"9.9583":[-6.066,58.321,-8.259],"10.0":[-5.99,58.389,-8.258],"10.0417":[-5.883,58.488,-8.257],"10.0833":[-5.835,58.539,-8.257],"10.125":[-5.827,58.581,-8.258],"10.1667":[-5.883,58.573,-8.262],"10.2083":[-6.092,58.495,-8.27],"10.25":[-6.487,58.314,-8.284],"10.2917":[-7.45,57.83,-8.299],"10.3333":[-11.783,55.522,-8.412],"10.375":[-13.608,54.522,-8.567],"10.4167":[-16.249,53.285,-8.811],"10.4583":[-17.938,52.503,-8.987],"10.5":[-20.029,51.315,-9.286],"10.5417":[-20.963,50.471,-9.517],"10.5833":[-20.974,48.972,-9.962],"10.625":[-16.882,46.741,-10.74],"10.6667":[-13.826,45.498,-11.323],"10.7083":[-11.324,44.618,-12.056],"10.75":[-10.298,44.336,-12.553],"10.7917":[-9.107,44.282,-13.381],"10.8333":[-8.382,44.527,-13.948],"10.875":[-7.079,46.315,-14.579],"10.9167":[-6.395,48.766,-14.711],"10.9583":[-5.56,51.384,-14.74],"11.0":[-4.465,51.543,-15.341],"11.0417":[-3.21,51.802,-17.55],"11.0833":[-2.623,53.94,-18.679],"11.125":[-1.582,57.577,-19.283],"11.1667":[-1.682,59.29,-18.702],"11.2083":[-2.758,60.565,-17.146],"11.25":[-4.052,58.847,-14.477],"11.2917":[-5.025,57.127,-13.236],"11.3333":[-5.934,55.884,-13.061],"11.375":[-6.257,55.455,-13.257],"11.4167":[-6.443,55.289,-13.439],"11.4583":[-6.462,55.375,-13.505],"11.5":[-6.418,55.607,-13.621],"11.5417":[-6.359,55.8,-13.695],"11.5833":[-6.262,56.074,-13.788],"11.625":[-6.199,56.26,-13.838],"11.6667":[-6.18,56.319,-13.841],"11.7083":[-6.158,56.369,-13.82],"11.75":[-6.144,56.396,-13.796],"11.7917":[-6.121,56.439,-13.766]}},"lefthand_1":{"position":[0,1,-1],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.2917":[0,0,0],"0.8333":[0,0,-22.5],"1.0":[12.5,0,-11.1364],"1.375":[0,0,15],"2.3333":[0,0,0],"3.0417":[0,0,0],"3.2083":[0,0,-20],"3.9167":[20,0,-2.5],"4.0833":[24.9254,0,-1.8657],"4.5":[0,0,0],"10.7083":[0,0,0],"10.875":[32.5,0,0],"11.125":[0,0,0]},"position":{"0.0":[0,1.75,-0.25],"0.2917":[0,2.75,-0.25],"0.9583":[0,3.75,-0.25],"7.0833":[0,3.75,-0.25],"7.625":[0,1.75,-0.25]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0,0.004,-0.009],"0.0417":[0.003,0.031,-0.067],"0.0833":[0.013,0.106,-0.226],"0.125":[0.021,0.17,-0.367],"0.1667":[0.036,0.266,-0.572],"0.2083":[0.049,0.323,-0.687],"0.25":[0.069,0.372,-0.796],"0.2917":[0.083,0.371,-0.8],"0.3333":[0.109,0.335,-0.756],"0.375":[0.123,0.306,-0.693],"0.4167":[0.146,0.283,-0.578],"0.4583":[0.158,0.291,-0.48],"0.5":[0.174,0.327,-0.32],"0.5417":[0.182,0.358,-0.213],"0.5833":[0.191,0.402,-0.044],"0.625":[0.195,0.42,0.056],"0.6667":[0.172,0.434,0.195],"0.7083":[0.138,0.438,0.274],"0.75":[0.062,0.443,0.353],"0.7917":[0.004,0.443,0.373],"0.8333":[-0.087,0.428,0.377],"0.875":[-0.137,0.389,0.36],"0.9167":[-0.199,0.313,0.322],"0.9583":[-0.222,0.266,0.284],"1.0":[-0.199,0.223,0.225],"1.0417":[-0.13,0.198,0.17],"1.0833":[0.031,0.155,0.084],"1.125":[0.17,0.126,0.023],"1.1667":[0.391,0.088,-0.068],"1.2083":[0.546,0.064,-0.127],"1.25":[0.759,0.033,-0.201],"1.2917":[0.874,0.018,-0.241],"1.3333":[0.992,0.003,-0.279],"1.375":[1.006,0.001,-0.284],"1.4167":[0.936,0.013,-0.257],"1.4583":[0.83,0.032,-0.213],"1.5":[0.598,0.073,-0.126],"1.5417":[0.429,0.103,-0.058],"1.5833":[0.168,0.148,0.04],"1.625":[0.024,0.175,0.097],"1.6667":[-0.126,0.201,0.157],"1.7083":[-0.153,0.205,0.167],"1.75":[-0.082,0.189,0.153],"1.7917":[0.041,0.163,0.133],"1.8333":[0.279,0.113,0.091],"1.875":[0.441,0.077,0.063],"1.9167":[0.662,0.029,0.022],"1.9583":[0.76,0.008,0.005],"2.0":[0.79,0.002,0.001],"2.0417":[0.735,0.012,0.015],"2.0833":[0.582,0.041,0.057],"2.125":[0.447,0.067,0.093],"2.1667":[0.232,0.11,0.151],"2.2083":[0.083,0.137,0.19],"2.25":[-0.087,0.171,0.236],"2.2917":[-0.167,0.185,0.255],"2.3333":[-0.186,0.189,0.258],"2.375":[-0.157,0.171,0.228],"2.4167":[-0.059,0.119,0.145],"2.4583":[0.012,0.085,0.087],"2.5":[0.103,0.031,0.016],"2.5417":[0.134,0.003,0.003],"2.5833":[0.164,-0.031,0.022],"2.625":[0.164,-0.044,0.054],"2.6667":[0.175,-0.066,0.123],"2.7083":[0.175,-0.074,0.178],"2.75":[0.152,-0.072,0.266],"2.7917":[-0.022,-0.046,0.328],"2.8333":[-0.487,0.028,0.409],"2.875":[-0.835,0.089,0.454],"2.9167":[-1.229,0.172,0.495],"2.9583":[-1.332,0.214,0.505],"3.0":[-1.19,0.258,0.468],"3.0417":[-0.982,0.286,0.408],"3.0833":[-0.558,0.321,0.289],"3.125":[-0.242,0.338,0.199],"3.1667":[0.196,0.356,0.071],"3.2083":[0.434,0.356,0],"3.25":[0.727,0.282,-0.103],"3.2917":[0.898,0.174,-0.167],"3.3333":[1.053,0.03,-0.23],"3.375":[1.053,-0.022,-0.231],"3.4167":[0.882,-0.075,-0.159],"3.4583":[0.69,-0.106,-0.082],"3.5":[0.352,-0.146,0.056],"3.5417":[0.132,-0.165,0.15],"3.5833":[-0.135,-0.184,0.258],"3.625":[-0.228,-0.19,0.298],"3.6667":[-0.208,-0.18,0.286],"3.7083":[-0.101,-0.149,0.235],"3.75":[0.124,-0.082,0.123],"3.7917":[0.302,-0.029,0.034],"3.8333":[0.54,0.045,-0.084],"3.875":[0.671,0.081,-0.149],"3.9167":[0.754,0.106,-0.184],"3.9583":[0.671,0.099,-0.172],"4.0":[0.359,0.068,-0.107],"4.0417":[0.116,0.048,-0.054],"4.0833":[-0.135,0.039,0.019],"4.125":[-0.269,0.04,0.072],"4.1667":[-0.461,0.043,0.16],"4.2083":[-0.562,0.045,0.21],"4.25":[-0.654,0.051,0.258],"4.2917":[-0.648,0.057,0.261],"4.3333":[-0.559,0.073,0.246],"4.375":[-0.449,0.084,0.228],"4.4167":[-0.25,0.098,0.19],"4.4583":[-0.107,0.108,0.16],"4.5":[0.099,0.123,0.108],"4.5417":[0.201,0.13,0.071],"4.5833":[0.298,0.137,0.018],"4.625":[0.298,0.137,-0.021],"4.6667":[0.19,0.137,-0.093],"4.7083":[0.061,0.137,-0.152],"4.75":[-0.165,0.136,-0.244],"4.7917":[-0.326,0.135,-0.304],"4.8333":[-0.548,0.133,-0.379],"4.875":[-0.654,0.131,-0.416],"4.9167":[-0.725,0.127,-0.437],"4.9583":[-0.681,0.12,-0.428],"5.0":[-0.495,0.1,-0.383],"5.0417":[-0.319,0.082,-0.339],"5.0833":[-0.023,0.051,-0.26],"5.125":[0.167,0.03,-0.205],"5.1667":[0.378,0,-0.13],"5.2083":[0.477,-0.018,-0.082],"5.25":[0.603,-0.047,-0.001],"5.2917":[0.667,-0.066,0.054],"5.3333":[0.748,-0.095,0.13],"5.375":[0.779,-0.113,0.184],"5.4167":[0.802,-0.135,0.238],"5.4583":[0.795,-0.149,0.269],"5.5":[0.74,-0.166,0.3],"5.5417":[0.693,-0.18,0.323],"5.5833":[0.599,-0.194,0.339],"5.625":[0.521,-0.201,0.349],"5.6667":[0.401,-0.206,0.356],"5.7083":[0.317,-0.205,0.354],"5.75":[0.148,-0.177,0.327],"5.7917":[0.014,-0.145,0.296],"5.8333":[-0.197,-0.087,0.233],"5.875":[-0.334,-0.043,0.185],"5.9167":[-0.511,0.015,0.114],"5.9583":[-0.604,0.047,0.07],"6.0":[-0.683,0.073,0.016],"6.0417":[-0.683,0.075,-0.015],"6.0833":[-0.597,0.071,-0.05],"6.125":[-0.505,0.065,-0.077],"6.1667":[-0.328,0.053,-0.113],"6.2083":[-0.199,0.043,-0.135],"6.25":[-0.017,0.025,-0.168],"6.2917":[0.069,0.013,-0.187],"6.3333":[0.155,-0.009,-0.212],"6.375":[0.188,-0.032,-0.226],"6.4167":[0.212,-0.076,-0.243],"6.4583":[0.212,-0.097,-0.25],"6.5":[0.178,-0.097,-0.243],"6.5417":[0,-0.052,-0.21],"6.5833":[-0.334,0.056,-0.093],"6.625":[-0.445,0.106,0.012],"6.6667":[-0.366,0.158,0.203],"6.7083":[-0.257,0.194,0.35],"6.75":[-0.019,0.248,0.568],"6.7917":[0.16,0.283,0.716],"6.8333":[0.448,0.328,0.918],"6.875":[0.617,0.354,1.035],"6.9167":[0.835,0.381,1.168],"6.9583":[0.924,0.393,1.219],"7.0":[0.851,0.381,0.953],"7.0417":[0.272,0.296,-0.452],"7.0833":[-0.807,0.145,-2.142],"7.125":[-1.392,0.078,-1.493],"7.1667":[-2.155,0.006,0.163],"7.2083":[-2.425,0.003,0.364],"7.25":[-2.734,0.029,0.299],"7.2917":[-2.945,0.061,0.225],"7.3333":[-3.266,0.126,0.094],"7.375":[-3.465,0.172,0.006],"7.4167":[-3.762,0.243,-0.113],"7.4583":[-3.948,0.288,-0.162],"7.5":[-4.203,0.341,-0.16],"7.5417":[-4.354,0.377,-0.037],"7.5833":[-4.541,0.433,0.323],"7.625":[-4.64,0.467,0.605],"7.6667":[-4.751,0.509,0.999],"7.7083":[-4.795,0.529,1.191],"7.75":[-4.466,0.495,1.134],"7.7917":[-2.386,0.252,0.411],"7.8333":[0.981,-0.14,-0.753],"7.875":[1.342,-0.181,-0.874],"7.9167":[1.09,-0.15,-0.764],"7.9583":[0.819,-0.116,-0.643],"8.0":[0.386,-0.059,-0.442],"8.0417":[0.148,-0.025,-0.33],"8.0833":[-0.041,0.01,-0.222],"8.125":[-0.12,0.029,-0.171],"8.1667":[-0.217,0.059,-0.091],"8.2083":[-0.278,0.079,-0.039],"8.25":[-0.351,0.109,0.036],"8.2917":[-0.397,0.13,0.083],"8.3333":[-0.451,0.157,0.146],"8.375":[-0.482,0.173,0.191],"8.4167":[-0.521,0.196,0.245],"8.4583":[-0.536,0.212,0.272],"8.5":[-0.552,0.227,0.308],"8.5417":[-0.568,0.236,0.324],"8.5833":[-0.568,0.243,0.346],"8.625":[-0.578,0.243,0.346],"8.6667":[-0.568,0.243,0.346],"8.7083":[-0.568,0.243,0.339],"8.75":[-0.547,0.241,0.324],"8.7917":[-0.537,0.238,0.316],"8.8333":[-0.518,0.236,0.299],"8.875":[-0.497,0.233,0.284],"8.9167":[-0.469,0.228,0.258],"8.9583":[-0.448,0.224,0.237],"9.0":[-0.413,0.217,0.212],"9.0417":[-0.392,0.212,0.191],"9.0833":[-0.359,0.202,0.157],"9.125":[-0.328,0.197,0.138],"9.1667":[-0.297,0.186,0.099],"9.2083":[-0.265,0.18,0.08],"9.25":[-0.227,0.168,0.048],"9.2917":[-0.203,0.16,0.022],"9.3333":[-0.169,0.146,-0.009],"9.375":[-0.144,0.137,-0.03],"9.4167":[-0.113,0.12,-0.056],"9.4583":[-0.094,0.111,-0.076],"9.5":[-0.063,0.093,-0.097],"9.5417":[-0.05,0.081,-0.112],"9.5833":[-0.026,0.064,-0.128],"9.625":[-0.019,0.047,-0.141],"9.6667":[-0.005,0.027,-0.149],"9.7083":[0,0.017,-0.154],"9.75":[0,-0.013,-0.154],"9.7917":[-0.005,-0.032,-0.151],"9.8333":[-0.009,-0.062,-0.146],"9.875":[-0.018,-0.096,-0.14],"9.9167":[-0.032,-0.142,-0.128],"9.9583":[-0.046,-0.178,-0.119],"10.0":[-0.065,-0.232,-0.104],"10.0417":[-0.079,-0.268,-0.095],"10.0833":[-0.102,-0.322,-0.077],"10.125":[-0.116,-0.367,-0.068],"10.1667":[-0.135,-0.416,-0.05],"10.2083":[-0.151,-0.448,-0.04],"10.25":[-0.166,-0.491,-0.027],"10.2917":[-0.178,-0.516,-0.019],"10.3333":[-0.19,-0.548,-0.008],"10.375":[-0.198,-0.56,-0.003],"10.4167":[-0.201,-0.572,0.001],"10.4583":[-0.157,-0.464,-0.078],"10.5":[0.261,0.524,-0.811],"10.5417":[0.5,0.875,-0.992],"10.5833":[0.668,0.759,-0.527],"10.625":[0.727,0.562,0.09],"10.6667":[0.788,0.298,0.611],"10.7083":[0.822,0.158,0.589],"10.75":[0.867,-0.046,0.432],"10.7917":[0.888,-0.157,0.307],"10.8333":[0.904,-0.267,0.14],"10.875":[0.905,-0.267,0.057],"10.9167":[0.905,-0.21,-0.015],"10.9583":[0.904,-0.148,-0.047],"11.0":[0.904,-0.038,-0.073],"11.0417":[0.899,0.04,-0.072],"11.0833":[0.79,0.17,-0.04],"11.125":[0.661,0.269,-0.003],"11.1667":[0.419,0.419,0.069],"11.2083":[0.236,0.523,0.12],"11.25":[-0.03,0.66,0.2],"11.2917":[-0.186,0.733,0.247],"11.3333":[-0.352,0.814,0.294],"11.375":[-0.419,0.846,0.317],"11.4167":[-0.264,0.684,0.15],"11.4583":[0.024,0.346,-0.17],"11.5":[0.169,0,-0.297],"11.5417":[0.076,-0.08,-0.115],"11.5833":[-0.038,-0.116,0.114],"11.625":[-0.034,-0.101,0.098],"11.6667":[-0.013,-0.043,0.03],"11.7083":[0,0.004,-0.016],"11.75":[0.008,0.037,-0.05],"11.7917":[0.008,0.037,-0.04],"11.8333":[0.008,0.024,-0.031],"11.875":[0.008,0.018,-0.021],"11.9167":[-0.002,0.005,-0.012],"11.9583":[-0.002,0.005,-0.002],"12.0":[-0.002,-0.002,-0.002]}}},"sound_effects":{"0.0":{"effect":"melee.quenching.quenching_inpsect_a"}}},"draw":{"loop":true,"animation_length":0.9091,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[91.176,-32.396,128.799],"0.0417":[86.197,-9.891,125.696],"0.0833":[82.287,4.916,122.744],"0.125":[76.54,22.716,116.518],"0.1667":[74.003,31.099,110.198],"0.2083":[76.629,31.066,105.399],"0.25":[80.519,28.37,102.929],"0.2917":[87.762,22.845,99.602],"0.3333":[94.512,18.506,96.532],"0.375":[98.811,17.757,96.012],"0.4167":[100.782,18.391,98.055],"0.4583":[104.599,18.206,100.272],"0.5":[109.617,16.411,100.592],"0.5417":[112.421,17.852,97.352],"0.5833":[113.454,19.967,96.11],"0.625":[116.127,21.378,103.111],"0.6667":[118.544,22.824,110.13],"0.7083":[120.449,25.241,114.319],"0.75":[121.425,26.709,116.265],"0.7917":[121.948,27.997,117.306],"0.8333":[121.628,28.739,116.673],"0.875":[121.094,29.361,115.638],"0.9167":[120.958,29.594,115.372]},"position":{"0.0":[16.158,26.617,-9.197],"0.0417":[19.721,25.44,-8.164],"0.0833":[22.082,24.515,-7.734],"0.125":[24.863,23.704,-7.839],"0.1667":[25.743,24.37,-8.946],"0.2083":[24.717,26.586,-10.917],"0.25":[23.374,28.593,-12.5],"0.2917":[20.944,31.851,-14.973],"0.3333":[18.716,34.722,-17.179],"0.375":[17.248,36.053,-18.235],"0.4167":[16.584,35.89,-18.093],"0.4583":[15.838,35.791,-17.742],"0.5":[15.46,36.04,-17.297],"0.5417":[15.432,36.271,-17.065],"0.5833":[15.567,36.346,-17.102],"0.625":[15.727,36.191,-17.506],"0.6667":[15.798,36.07,-17.785],"0.7083":[15.789,36.098,-17.776],"0.75":[15.769,36.124,-17.752],"0.7917":[15.748,36.107,-17.792],"0.8333":[15.732,36.057,-17.861],"0.875":[15.716,36.002,-17.934],"0.9167":[15.711,35.984,-17.958]}},"righthand":{"rotation":{"0.0":[45.107,4.911,156.494],"0.0417":[50.8,5.039,178.647],"0.0833":[48.337,1.546,158.122],"0.125":[54.324,1.037,133.344],"0.1667":[74.885,9.676,142.426],"0.2083":[87.749,15.854,150.554],"0.25":[86.417,20.551,150.299],"0.2917":[85.374,25.883,142.67],"0.3333":[89.964,29.224,125.309],"0.375":[97.735,33.238,136.366],"0.4167":[105.321,33.898,156.642],"0.4583":[115.528,32.369,177.642],"0.5":[123.833,31.601,182.174],"0.5417":[130.428,29.487,185.634],"0.5833":[132.771,29.695,185.649],"0.625":[136.089,30.1,184.326],"0.6667":[138.875,30.81,183.353],"0.7083":[141.175,31.643,183.404],"0.75":[142.373,32.244,183.709],"0.7917":[143.617,32.892,184.042],"0.8333":[144.161,33.24,184.202],"0.875":[144.465,33.512,184.348],"0.9167":[144.59,33.611,184.397]},"position":{"0.0":[-18.767,30.273,-10.018],"0.0417":[-17.719,37.183,-12.007],"0.0833":[-16.787,38.774,-12.842],"0.125":[-15.285,38.967,-13.46],"0.1667":[-14.208,38.872,-14.126],"0.2083":[-13.488,39.282,-14.292],"0.25":[-13.195,40.291,-13.677],"0.2917":[-12.831,41.399,-12.926],"0.3333":[-12.398,41.928,-12.795],"0.375":[-12.731,42.051,-12.704],"0.4167":[-13.337,41.989,-12.61],"0.4583":[-13.998,40.856,-12.449],"0.5":[-14.238,38.195,-12.42],"0.5417":[-14.222,38.007,-12.998],"0.5833":[-14.026,38.196,-13.193],"0.625":[-13.849,38.671,-13.36],"0.6667":[-13.687,39.097,-13.476],"0.7083":[-13.623,39.392,-13.538],"0.75":[-13.616,39.539,-13.545],"0.7917":[-13.607,39.684,-13.536],"0.8333":[-13.604,39.735,-13.499],"0.875":[-13.606,39.752,-13.451],"0.9167":[-13.606,39.761,-13.436]}},"weapon":{"rotation":{"0.0":[91.426,-31.077,-95.273],"0.0417":[108.155,-47.466,-103.478],"0.0833":[230.955,-65.755,-221.867],"0.125":[285.273,-8.013,-326.214],"0.1667":[232.382,18.898,-344.377],"0.2083":[168.285,24.1,-371.391],"0.25":[128.575,18.531,-397.771],"0.2917":[94.708,0.305,-431.884],"0.3333":[94.367,-26.74,-458.091],"0.375":[61.316,-45.932,-428.169],"0.4167":[10.272,-41.671,-378.524],"0.4583":[-25.515,-30.939,-352.289],"0.5":[-32.198,-29.555,-348.265],"0.5417":[-37.992,-26.827,-345.21],"0.5833":[-40.482,-26.341,-345.534],"0.625":[-43.689,-26.4,-347.007],"0.6667":[-46.468,-26.744,-348.15],"0.7083":[-48.785,-27.28,-348.242],"0.75":[-50.017,-27.728,-347.999],"0.7917":[-51.295,-28.219,-347.738],"0.8333":[-51.866,-28.498,-347.601],"0.875":[-52.199,-28.732,-347.465],"0.9167":[-52.33,-28.814,-347.42]},"position":{"0.0":[-9.417,44.676,-14.696],"0.0417":[-9.376,52.284,-17.439],"0.0833":[-7.819,56.067,-15.401],"0.125":[-6.567,56.308,-12.661],"0.1667":[-5.098,52.594,-14.677],"0.2083":[-4.928,52.72,-18.819],"0.25":[-4.43,55.143,-19.622],"0.2917":[-4.038,58.2,-18.823],"0.3333":[-4.664,60.076,-17.024],"0.375":[-5.171,59.606,-14.893],"0.4167":[-5.676,58.651,-14.121],"0.4583":[-6.24,56.986,-13.61],"0.5":[-6.479,54.452,-13.419],"0.5417":[-6.419,54.281,-13.873],"0.5833":[-6.345,54.612,-13.996],"0.625":[-6.234,55.185,-14.047],"0.6667":[-6.147,55.697,-14.057],"0.7083":[-6.118,56.034,-14.025],"0.75":[-6.119,56.196,-13.979],"0.7917":[-6.119,56.356,-13.913],"0.8333":[-6.119,56.411,-13.852],"0.875":[-6.121,56.429,-13.787],"0.9167":[-6.121,56.439,-13.766]}},"lefthand_1":{"position":[0,1,-1],"scale":[1,1.5,1]},"righthand_1":{"position":[0,1.75,-0.25],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.013,0.003,-0.004],"0.0417":[-0.145,0.063,-0.053],"0.0833":[-0.295,0.126,-0.111],"0.125":[-0.549,0.227,-0.21],"0.1667":[-0.775,0.307,-0.296],"0.2083":[-0.945,0.366,-0.379],"0.25":[-1.048,0.4,-0.437],"0.2917":[-1.18,0.437,-0.515],"0.3333":[-1.247,0.459,-0.563],"0.375":[-0.995,0.354,-0.451],"0.4167":[-0.455,0.145,-0.211],"0.4583":[0.164,-0.029,0.077],"0.5":[0.501,-0.057,0.248],"0.5417":[0.544,-0.053,0.254],"0.5833":[0.358,-0.019,0.06],"0.625":[0.091,0.024,-0.17],"0.6667":[0.041,0.01,-0.096],"0.7083":[0.03,-0.013,0.023],"0.75":[0.019,-0.019,0.053],"0.7917":[0.008,-0.015,0.046],"0.8333":[0.002,-0.007,0.016],"0.875":[0.002,-0.001,0.001],"0.9167":[0.002,0.001,0.001]}}},"sound_effects":{"0.0":{"effect":"melee.quenching.quenching_rotate_a"}}},"draw_1":{"loop":true,"animation_length":1.25,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[91.176,-32.396,128.799],"0.0417":[87.949,-17.205,126.877],"0.0833":[86.197,-9.891,125.696],"0.125":[80.229,11.707,120.871],"0.1667":[78.338,17.642,118.784],"0.2083":[75.115,26.742,114.256],"0.25":[74.362,31.799,108.4],"0.2917":[76.629,31.066,105.399],"0.3333":[78.435,29.884,104.092],"0.375":[85.293,24.716,100.704],"0.4167":[87.762,22.844,99.602],"0.4583":[92.469,19.614,97.571],"0.5":[97.664,17.625,95.708],"0.5417":[99.792,18.073,96.908],"0.5833":[100.782,18.391,98.055],"0.625":[104.598,18.207,100.272],"0.6667":[106.263,17.621,100.515],"0.7083":[109.618,16.412,100.592],"0.75":[112.421,17.851,97.351],"0.7917":[113.454,19.967,96.11],"0.8333":[114.192,20.642,97.408],"0.875":[117.013,21.729,105.887],"0.9167":[117.836,22.168,108.346],"0.9583":[119.189,23.59,111.607],"1.0":[120.986,26.019,115.402],"1.0417":[121.721,27.234,116.855],"1.0833":[121.897,27.654,117.203],"1.125":[121.791,28.522,116.995],"1.1667":[121.628,28.739,116.673],"1.2083":[121.249,29.139,115.931],"1.25":[120.958,29.594,115.372]},"position":{"0.0":[16.158,26.617,-9.197],"0.0417":[18.551,25.955,-8.52],"0.0833":[19.721,25.44,-8.164],"0.125":[23.162,24.136,-7.669],"0.1667":[24.09,23.851,-7.697],"0.2083":[25.417,23.726,-8.096],"0.25":[25.571,24.968,-9.526],"0.2917":[24.717,26.586,-10.917],"0.3333":[24.09,27.553,-11.685],"0.375":[21.775,30.77,-14.158],"0.4167":[20.944,31.851,-14.973],"0.4583":[19.38,33.854,-16.496],"0.5":[17.644,35.849,-18.059],"0.5417":[16.893,36.024,-18.21],"0.5833":[16.584,35.89,-18.093],"0.625":[15.838,35.791,-17.742],"0.6667":[15.668,35.882,-17.619],"0.7083":[15.46,36.04,-17.297],"0.75":[15.432,36.271,-17.065],"0.7917":[15.567,36.346,-17.102],"0.8333":[15.624,36.327,-17.193],"0.875":[15.763,36.129,-17.641],"0.9167":[15.787,36.083,-17.743],"0.9583":[15.8,36.073,-17.795],"1.0":[15.779,36.113,-17.762],"1.0417":[15.761,36.124,-17.759],"1.0833":[15.754,36.118,-17.773],"1.125":[15.737,36.076,-17.837],"1.1667":[15.732,36.057,-17.861],"1.2083":[15.722,36.019,-17.91],"1.25":[15.711,35.984,-17.958]}},"righthand":{"rotation":{"0.0":[33.902,-21.914,144.195],"0.0417":[39.633,-18.464,144.566],"0.0833":[48.292,-11.966,141.591],"0.125":[89.324,19.366,144.562],"0.1667":[101.338,25.259,149.352],"0.2083":[112.748,26.562,153.386],"0.25":[117.466,21.712,152.967],"0.2917":[117.859,20.802,151.63],"0.3333":[117.236,21.385,150.692],"0.375":[113.42,24.246,152.617],"0.4167":[113.141,25.486,158.051],"0.4583":[114.618,28.554,177.5],"0.5":[119.921,32.364,187.653],"0.5417":[123.792,32.743,176.114],"0.5833":[124.024,33.31,174.47],"0.625":[124.241,31.544,182.027],"0.6667":[125.626,30.907,183.852],"0.7083":[130.261,29.648,185.827],"0.75":[134.378,29.477,185.11],"0.7917":[135.994,30.25,184.409],"0.8333":[137.063,30.336,183.895],"0.875":[139.717,31.07,183.272],"0.9167":[140.5,31.35,183.306],"0.9583":[141.87,31.981,183.559],"1.0":[143.285,32.718,183.958],"1.0417":[143.797,32.984,184.077],"1.0833":[143.965,33.081,184.121],"1.125":[144.249,33.298,184.23],"1.1667":[144.304,33.356,184.262],"1.2083":[144.413,33.471,184.325],"1.25":[144.591,33.61,184.398]},"position":{"0.0":[-20.082,32.214,-13.427],"0.0417":[-18.434,37.482,-14.815],"0.0833":[-18.028,38.472,-14.803],"0.125":[-17.559,37.448,-13.408],"0.1667":[-17.442,37.122,-13.384],"0.2083":[-17.158,37.486,-13.715],"0.25":[-16.74,38.373,-14.172],"0.2917":[-16.414,39.091,-14.455],"0.3333":[-16.232,39.495,-14.585],"0.375":[-15.404,40.351,-14.721],"0.4167":[-14.917,40.334,-14.622],"0.4583":[-13.514,40.003,-14.205],"0.5":[-12.307,38.616,-13.334],"0.5417":[-13.127,37.601,-12.812],"0.5833":[-13.349,37.351,-12.612],"0.625":[-14.231,37.942,-12.435],"0.6667":[-14.396,38.071,-12.485],"0.7083":[-14.49,38.238,-12.76],"0.75":[-14.433,38.648,-13.043],"0.7917":[-14.199,38.757,-13.25],"0.8333":[-14.164,38.893,-13.34],"0.875":[-13.983,39.196,-13.518],"0.9167":[-13.929,39.29,-13.544],"0.9583":[-13.825,39.465,-13.557],"1.0":[-13.712,39.646,-13.542],"1.0417":[-13.673,39.704,-13.532],"1.0833":[-13.66,39.721,-13.525],"1.125":[-13.636,39.743,-13.493],"1.1667":[-13.631,39.744,-13.481],"1.2083":[-13.621,39.748,-13.457],"1.25":[-13.606,39.761,-13.436]}},"weapon":{"rotation":{"0.0":[-87.227,-13.824,83.423],"0.0417":[-88.311,-19.101,85.191],"0.0833":[-90.099,-23.67,86.527],"0.125":[-104.752,-38.046,100.672],"0.1667":[-115.263,-40.363,112.578],"0.2083":[-141.09,-30.442,144.757],"0.25":[-156.237,18.733,179.591],"0.2917":[-138.708,59.273,210.939],"0.3333":[-91.832,70.477,262.481],"0.375":[-20.776,23.317,347.14],"0.4167":[-19.266,5.873,355.08],"0.4583":[-23.152,-20.458,371.632],"0.5":[-29.564,-31.033,376.65],"0.5417":[-32.242,-31.171,366.001],"0.5833":[-32.712,-31.212,364.189],"0.625":[-32.565,-29.458,371.556],"0.6667":[-33.797,-28.617,373.262],"0.7083":[-38.032,-26.733,374.867],"0.75":[-41.596,-26.312,374.016],"0.7917":[-43.69,-26.402,372.994],"0.8333":[-44.66,-26.508,372.503],"0.875":[-47.306,-26.896,371.714],"0.9167":[-48.098,-27.074,371.702],"0.9583":[-49.498,-27.529,371.877],"1.0":[-50.956,-28.086,372.199],"1.0417":[-51.482,-28.288,372.29],"1.0833":[-51.656,-28.364,372.325],"1.125":[-51.96,-28.545,372.422],"1.1667":[-52.021,-28.595,372.453],"1.2083":[-52.14,-28.697,372.514],"1.25":[-52.332,-28.813,372.58]},"position":{"0.0":[-12.997,45.293,-13.994],"0.0417":[-11.255,51.374,-16.242],"0.0833":[-10.54,53.815,-16.745],"0.125":[-9.358,57.553,-16.927],"0.1667":[-8.976,58.589,-16.948],"0.2083":[-8.07,60.786,-16.996],"0.25":[-7.02,61.889,-16.995],"0.2917":[-6.591,61.442,-16.929],"0.3333":[-6.4,61.117,-16.862],"0.375":[-5.753,59.605,-16.461],"0.4167":[-5.459,58.783,-16.201],"0.4583":[-4.701,56.238,-15.353],"0.5":[-4.555,54.387,-14.456],"0.5417":[-5.398,53.913,-13.754],"0.5833":[-5.812,53.838,-13.555],"0.625":[-6.479,54.212,-13.426],"0.6667":[-6.625,54.328,-13.456],"0.7083":[-6.742,54.563,-13.635],"0.75":[-6.693,54.997,-13.823],"0.7917":[-6.62,55.296,-13.94],"0.8333":[-6.579,55.438,-13.989],"0.875":[-6.459,55.813,-14.065],"0.9167":[-6.416,55.924,-14.06],"0.9583":[-6.324,56.115,-14.013],"1.0":[-6.222,56.314,-13.935],"1.0417":[-6.185,56.378,-13.901],"1.0833":[-6.174,56.394,-13.887],"1.125":[-6.151,56.418,-13.841],"1.1667":[-6.147,56.422,-13.826],"1.2083":[-6.135,56.426,-13.797],"1.25":[-6.122,56.438,-13.766]}},"lefthand_1":{"position":[0,1,-1],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.125":[25,0,0],"0.375":[0,0,0]},"position":[0,1.75,-0.25],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.046,0.007,-0.005],"0.0417":[-0.309,0.048,-0.045],"0.0833":[-0.497,0.079,-0.077],"0.125":[-1.064,0.171,-0.193],"0.1667":[-1.201,0.194,-0.244],"0.2083":[-1.356,0.227,-0.383],"0.25":[-1.442,0.257,-0.605],"0.2917":[-1.436,0.254,-0.585],"0.3333":[-1.402,0.241,-0.47],"0.375":[-1.206,0.161,0.139],"0.4167":[-1.114,0.127,0.365],"0.4583":[-0.896,0.059,0.747],"0.5":[-0.445,-0.03,0.768],"0.5417":[0.091,-0.092,0.054],"0.5833":[0.356,-0.119,-0.354],"0.625":[0.602,-0.14,-0.761],"0.6667":[0.517,-0.125,-0.674],"0.7083":[0.272,-0.078,-0.413],"0.75":[-0.057,-0.012,-0.06],"0.7917":[-0.09,0.005,0.02],"0.8333":[-0.077,0.007,0.027],"0.875":[-0.027,0.013,0.052],"0.9167":[-0.011,0.014,0.058],"0.9583":[0.03,0.016,0.063],"1.0":[0.038,0.016,0.058],"1.0417":[0.03,0.013,0.052],"1.0833":[0.03,0.012,0.047],"1.125":[0.014,0.005,0.02],"1.1667":[0.014,0.004,0.015],"1.2083":[0.006,0.001,0.004],"1.25":[-0.002,0,-0.001]}}},"sound_effects":{"0.0":{"effect":"melee.quenching.quenching_raise_a"}}},"melee_1":{"loop":true,"animation_length":1.8403,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[123.184,27.918,122.022],"0.0347":[126.98,23.95,135.817],"0.0694":[128.457,21.613,142.376],"0.1042":[130.798,16.742,146.689],"0.1389":[130.334,15.17,136.428],"0.1736":[131.971,15.263,95.771],"0.2083":[163.564,7.381,96.09],"0.2431":[166.228,10.368,96.486],"0.2778":[164.291,13.904,95.449],"0.3125":[156.336,23.021,92.203],"0.3472":[153.91,24.238,91.189],"0.3819":[150.629,21.464,90.539],"0.4167":[146.669,13.216,91.249],"0.4514":[146.01,12.007,91.373],"0.4861":[146.106,12.184,91.35],"0.625":[146.105,12.184,91.35],"0.7986":[146.105,12.184,91.35],"0.8333":[137.212,11.707,96.055],"0.8681":[114.858,15.563,103.75],"0.9028":[103.833,19.614,107.069],"0.9375":[78.971,27.665,112.258],"0.9722":[74.231,29.506,112.128],"1.0069":[71.533,29.625,110.807],"1.0417":[74.691,26.765,107.278],"1.0764":[79.87,23.95,104.262],"1.1111":[82.911,22.54,102.614],"1.1458":[91.932,19.083,97.951],"1.1806":[94.385,18.332,96.765],"1.2153":[97.672,17.624,95.564],"1.25":[100.772,18.406,98.005],"1.2847":[103.11,18.556,99.772],"1.3194":[104.537,18.253,100.213],"1.3542":[109.523,16.38,100.766],"1.3889":[110.961,16.285,100.265],"1.4236":[112.708,18.741,96.421],"1.4583":[115.219,21.166,100.149],"1.4931":[117.064,21.778,105.983],"1.5278":[117.836,22.168,108.345],"1.5625":[119.634,24.109,112.603],"1.5972":[120.175,24.825,113.761],"1.6319":[121.105,26.181,115.64],"1.6667":[121.88,27.638,117.168],"1.7014":[121.887,28.244,117.184],"1.7361":[121.774,28.49,116.961],"1.7708":[121.249,29.133,115.933],"1.8056":[121.079,29.35,115.602],"1.8403":[120.958,29.593,115.372]},"position":{"0.0":[16.332,36.129,-18.242],"0.0347":[17.719,36.431,-18.894],"0.0694":[18.356,36.566,-19.169],"0.1042":[18.714,36.866,-18.871],"0.1389":[17.203,36.873,-18.036],"0.1736":[11.08,36.888,-14.043],"0.2083":[5.851,34.938,-8.115],"0.2431":[5.853,33.755,-7.222],"0.2778":[6.434,33.213,-7.207],"0.3125":[8.441,31.689,-7.444],"0.3472":[8.956,31.258,-7.498],"0.3819":[9.511,30.655,-7.496],"0.4167":[10.005,30.159,-7.592],"0.4514":[10.094,30.07,-7.608],"0.4861":[10.082,30.082,-7.606],"0.7986":[10.082,30.082,-7.606],"0.8333":[12.103,29.006,-7.493],"0.8681":[17.122,26.555,-7.023],"0.9028":[19.659,25.595,-7.023],"0.9375":[24.846,23.791,-7.876],"0.9722":[25.71,23.945,-8.464],"1.0069":[25.888,24.948,-9.759],"1.0417":[24.494,27.512,-11.99],"1.0764":[22.899,29.63,-13.554],"1.1111":[22.011,30.726,-14.329],"1.1458":[19.441,33.842,-16.541],"1.1806":[18.714,34.707,-17.168],"1.2153":[17.655,35.889,-18.096],"1.25":[16.583,35.9,-18.102],"1.2847":[16.05,35.758,-17.861],"1.3194":[15.833,35.805,-17.767],"1.3542":[15.451,36.029,-17.31],"1.3889":[15.396,36.112,-17.183],"1.4236":[15.488,36.308,-17.066],"1.4583":[15.684,36.264,-17.351],"1.4931":[15.764,36.128,-17.645],"1.5278":[15.787,36.084,-17.743],"1.5625":[15.799,36.078,-17.796],"1.5972":[15.794,36.09,-17.786],"1.6319":[15.777,36.117,-17.758],"1.6667":[15.754,36.118,-17.771],"1.7014":[15.743,36.093,-17.813],"1.7361":[15.738,36.076,-17.836],"1.7708":[15.722,36.02,-17.91],"1.8056":[15.716,36.001,-17.935],"1.8403":[15.711,35.984,-17.958]}},"righthand":{"rotation":{"0.0":[-49.1,156.533,0.622],"0.0347":[-77.458,171.319,4.794],"0.0694":[-93.35,182.603,15.061],"0.1042":[-109.097,198.547,49.901],"0.1389":[-98.175,198.649,54.158],"0.1736":[-58.775,207.81,62.656],"0.2083":[17.478,197.579,64.057],"0.2431":[39.105,185.905,71.061],"0.2778":[50.474,166.549,74.581],"0.3125":[47,166.709,72.549],"0.3472":[45.449,168.761,71.53],"0.3819":[42.122,174.257,69.452],"0.4167":[38.246,181.335,67.371],"0.4514":[37.544,182.16,66.955],"0.4861":[37.632,182.015,67.007],"0.625":[37.632,182.016,67.008],"0.7986":[37.632,182.016,67.008],"0.8333":[-11.179,158.314,74.589],"0.8681":[-123.411,144.836,17.903],"0.9028":[-139.708,154.425,8.46],"0.9375":[-141.851,166.765,-19.266],"0.9722":[-136.035,165.963,-27.436],"1.0069":[-124.545,161.825,-40.126],"1.0417":[-110.061,156.927,-45.085],"1.0764":[-96.642,152.548,-38.894],"1.1111":[-89.229,151.058,-34.215],"1.1458":[-71.038,150.473,-23.299],"1.1806":[-67.765,151.161,-22.456],"1.2153":[-65.676,153.779,-24.427],"1.25":[-67.008,156.771,-28.863],"1.2847":[-70.975,155.407,-30.124],"1.3194":[-73.946,154.603,-30.515],"1.3542":[-78.961,158.662,-30.542],"1.3889":[-78.815,158.938,-28.531],"1.4236":[-71.398,155.006,-17.135],"1.4583":[-56.786,150.715,0.854],"1.4931":[-51.724,149.808,4.216],"1.5278":[-50.109,148.889,5.156],"1.5625":[-45.47,146.804,6.087],"1.5972":[-44.21,146.089,6.014],"1.6319":[-41.929,144.816,5.647],"1.6667":[-38.72,143.626,5.591],"1.7014":[-37.118,143.718,5.725],"1.7361":[-36.661,144.037,5.609],"1.7708":[-35.961,145.489,4.859],"1.8056":[-35.747,145.988,4.594],"1.8403":[-35.409,146.389,4.398]},"position":{"0.0":[-12.838,37.481,-9.808],"0.0347":[-13.868,34.357,-4.3],"0.0694":[-17.247,32.965,-2.688],"0.1042":[-24.859,34.489,-5.327],"0.1389":[-23.497,37.26,-7.74],"0.1736":[-11.815,39.793,-19.07],"0.2083":[4.273,48.252,-11.703],"0.2431":[5.456,42.709,-6.108],"0.2778":[2.784,40.861,0.038],"0.3125":[2.027,38.455,-0.556],"0.3472":[2.073,37.845,-0.908],"0.3819":[2.367,36.773,-1.722],"0.4167":[2.707,35.283,-2.722],"0.4514":[2.727,35.035,-2.879],"0.4861":[2.725,35.071,-2.855],"0.7986":[2.725,35.071,-2.855],"0.8333":[0.183,34.159,-4.108],"0.8681":[-6.207,33.877,-9.653],"0.9028":[-7.357,34.721,-11.612],"0.9375":[-11.512,37.719,-13.186],"0.9722":[-12.584,38.68,-13.181],"1.0069":[-14.148,40.185,-13.127],"1.0417":[-15.172,41.416,-13.47],"1.0764":[-15.099,41.679,-13.618],"1.1111":[-14.968,41.729,-13.682],"1.1458":[-14.729,41.916,-13.903],"1.1806":[-14.759,42.026,-13.942],"1.2153":[-14.877,42.198,-13.823],"1.25":[-14.947,42.452,-13.51],"1.2847":[-14.728,42.642,-13.329],"1.3194":[-14.552,42.713,-13.23],"1.3542":[-14.11,42.687,-12.915],"1.3889":[-14.031,42.37,-12.84],"1.4236":[-14.073,40.706,-12.729],"1.4583":[-14.215,38.503,-12.746],"1.4931":[-14.312,38.366,-12.836],"1.5278":[-14.23,38.34,-12.883],"1.5625":[-14.137,38.63,-13.061],"1.5972":[-14.092,38.775,-13.121],"1.6319":[-14.003,39.084,-13.238],"1.6667":[-13.875,39.429,-13.378],"1.7014":[-13.804,39.544,-13.427],"1.7361":[-13.771,39.586,-13.436],"1.7708":[-13.673,39.688,-13.433],"1.8056":[-13.64,39.722,-13.432],"1.8403":[-13.606,39.761,-13.436]}},"weapon":{"rotation":{"0.0":[-38.383,-23.258,9.475],"0.0347":[-6.801,-9.262,13.951],"0.0694":[9.959,-1.085,22.699],"0.1042":[20.671,11.841,57.678],"0.1389":[6.817,14.201,61.687],"0.1736":[-30.173,28.789,72.224],"0.2083":[-108.63,25.486,63.888],"0.2431":[-138.709,7.619,62.749],"0.2778":[-143.289,-5.947,70.572],"0.3125":[-136.353,-5.549,69.022],"0.3472":[-132.035,-3.427,68.208],"0.3819":[-125.524,2.24,66.592],"0.4167":[-121.846,9.462,64.954],"0.4514":[-121.283,10.335,64.716],"0.4861":[-121.366,10.19,64.743],"0.625":[-121.366,10.192,64.743],"0.7986":[-121.366,10.192,64.743],"0.8333":[-72.55,-11.035,93.622],"0.8681":[34.002,-36.928,24.076],"0.9028":[54.063,-33.921,11.933],"0.9375":[48.015,-25.765,-12.995],"0.9722":[37.431,-26.564,-18.732],"1.0069":[10.072,-30.033,-25.842],"1.0417":[-57.068,-31.451,-28.653],"1.0764":[-119.074,-32.424,-23.683],"1.1111":[-146.088,-32.304,-20.266],"1.1458":[-224.101,-29.713,-13.468],"1.1806":[-247.026,-28.554,-13.366],"1.2153":[-287.585,-25.692,-15.618],"1.25":[-327.095,-25.317,-18.688],"1.2847":[-357.519,-47.751,-11.53],"1.3194":[-376.205,-63.663,-2.78],"1.3542":[-383.726,-73.268,-1.843],"1.3889":[-383.579,-71.19,-0.159],"1.4236":[-387.935,-55.278,8.741],"1.4583":[-391.435,-27.97,10.848],"1.4931":[-395.944,-27.568,13.382],"1.5278":[-397.938,-28.228,14.339],"1.5625":[-402.739,-29.683,15.136],"1.5972":[-404.071,-30.205,15.017],"1.6319":[-406.459,-31.17,14.577],"1.6667":[-409.693,-31.94,14.339],"1.7014":[-411.178,-31.66,14.306],"1.7361":[-411.55,-31.29,14.113],"1.7708":[-411.959,-29.772,13.168],"1.8056":[-412.082,-29.252,12.843],"1.8403":[-412.333,-28.811,12.579]},"position":{"0.0":[-4.723,54.386,-10.706],"0.0347":[-6.666,49.844,-6.13],"0.0694":[-10.29,47.702,-5.225],"0.1042":[-19.279,48.483,-8.515],"0.1389":[-17.332,51.722,-10.788],"0.1736":[-4.226,55.153,-21.519],"0.2083":[12.625,61.347,-13.331],"0.2431":[12.596,57.997,-2.301],"0.2778":[10.218,55.274,2.455],"0.3125":[9.495,52.917,1.715],"0.3472":[9.539,52.267,1.241],"0.3819":[9.913,51.073,0.223],"0.4167":[10.491,49.494,-1.001],"0.4514":[10.532,49.208,-1.174],"0.4861":[10.525,49.248,-1.147],"0.625":[10.526,49.249,-1.148],"0.7986":[10.526,49.249,-1.148],"0.8333":[7.42,48.116,-4.543],"0.8681":[1.776,47.045,-11.142],"0.9028":[0.249,47.671,-13.069],"0.9375":[-2.933,52.552,-15.164],"0.9722":[-3.953,54.563,-15.239],"1.0069":[-6.152,57.95,-14.643],"1.0417":[-8.232,57.657,-12.653],"1.0764":[-7.269,55.562,-12.245],"1.1111":[-6.261,55.192,-13.051],"1.1458":[-3.934,56.343,-17.17],"1.1806":[-3.831,57.714,-18.261],"1.2153":[-5.038,60.988,-18.765],"1.25":[-7.148,63.231,-16.614],"1.2847":[-7.555,63.117,-15.167],"1.3194":[-7.478,62.435,-14.72],"1.3542":[-7.165,59.501,-14.665],"1.3889":[-7.013,58.622,-14.652],"1.4236":[-6.773,57,-14.288],"1.4583":[-6.573,54.832,-13.831],"1.4931":[-6.506,54.63,-13.748],"1.5278":[-6.478,54.674,-13.73],"1.5625":[-6.403,55.05,-13.714],"1.5972":[-6.38,55.228,-13.719],"1.6319":[-6.336,55.599,-13.734],"1.6667":[-6.269,56.014,-13.747],"1.7014":[-6.227,56.155,-13.749],"1.7361":[-6.208,56.21,-13.751],"1.7708":[-6.156,56.345,-13.76],"1.8056":[-6.14,56.388,-13.763],"1.8403":[-6.122,56.439,-13.766]}},"lefthand_1":{"position":[0,1,-1],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.2431":[-47.5,0,0],"0.3819":[-47.5,0,0],"0.8333":[0,0,0],"0.9028":[42.5,0,0],"1.0069":[0,0,0]},"position":[0,1.75,-0.25],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.011,0.079,0.026],"0.0347":[0.068,0.503,0.147],"0.0694":[0.106,0.774,0.231],"0.1042":[0.165,1.147,0.362],"0.1389":[0.143,0.92,0.362],"0.1736":[0,-0.1,0.165],"0.2083":[-0.051,-0.036,-0.43],"0.2431":[0.025,-0.382,0.853],"0.2778":[0.062,-0.446,-0.663],"0.3125":[0.145,-0.622,-0.869],"0.3472":[0.15,-0.648,-0.248],"0.3819":[0.144,-0.636,-0.002],"0.4167":[0.06,-0.426,-0.001],"0.4514":[0.009,-0.28,-0.001],"0.4861":[0,-0.234,-0.001],"0.5208":[0.023,-0.171,-0.001],"0.5556":[0.04,-0.159,-0.001],"0.5903":[0.082,-0.129,-0.001],"0.625":[0.166,-0.1,0],"0.6597":[0.221,-0.083,0],"0.6944":[0.249,-0.076,0],"0.7292":[0.322,-0.053,0],"0.7639":[0.341,-0.046,0],"0.7986":[0.368,-0.026,0],"0.8333":[0.35,0.014,0],"0.8681":[0.148,0.051,0],"0.9028":[0.001,0.071,0],"0.9375":[-0.549,0.135,0],"0.9722":[-0.728,0.154,0],"1.0069":[-1.031,0.191,0],"1.0417":[-1.255,0.239,0],"1.0764":[-1.353,0.274,0],"1.1111":[-1.388,0.289,0],"1.1458":[-1.451,0.335,0],"1.1806":[-1.469,0.346,0.001],"1.2153":[-1.487,0.366,0.001],"1.25":[-1.48,0.376,0.001],"1.2847":[-1.264,0.321,0],"1.3194":[-1.025,0.258,0],"1.3542":[-0.215,0.051,0],"1.3889":[0.001,0.001,0],"1.4236":[0.294,-0.052,0],"1.4583":[0.479,-0.07,0],"1.4931":[0.433,-0.061,0],"1.5278":[0.356,-0.05,0],"1.5625":[0.064,-0.007,0],"1.5972":[-0.028,0.007,0],"1.6319":[-0.156,0.026,0],"1.6667":[-0.156,0.026,0],"1.7014":[-0.113,0.019,0],"1.7361":[-0.085,0.014,0],"1.7708":[-0.021,0.004,0],"1.8056":[-0.007,0.001,0],"1.8403":[0,0,0]}}},"sound_effects":{"0.0":{"effect":"melee.quenching.quenching_swing_a"},"1.0069":{"effect":"melee.quenching.quenching_rotate_a"}}},"melee_1_1":{"loop":true,"animation_length":4.38,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[120.958,29.593,115.372],"0.04":[123.184,27.918,122.022],"0.08":[125.222,26.02,128.67],"0.12":[126.98,23.95,135.817],"0.17":[128.457,21.613,142.376],"0.21":[129.627,19.217,147.773],"0.25":[130.281,17.13,149.912],"0.29":[130.798,16.742,146.689],"0.33":[130.334,15.17,136.428],"0.38":[129.76,13.164,113.829],"0.42":[131.971,15.263,95.771],"0.46":[142.749,12.385,94.598],"0.5":[156.826,8.21,95.803],"0.54":[163.564,7.381,96.09],"0.58":[166.176,7.728,96.867],"0.62":[166.228,10.368,96.486],"0.67":[164.291,13.904,95.449],"0.71":[161.868,17.361,94.543],"0.75":[158.982,20.641,93.338],"0.79":[156.336,23.021,92.203],"0.83":[153.91,24.238,91.189],"0.88":[152.11,23.499,90.656],"0.92":[150.629,21.464,90.539],"0.96":[149.02,18.257,90.698],"1.0":[147.614,15.044,91.061],"1.04":[146.669,13.216,91.249],"1.08":[146.106,12.184,91.35],"1.12":[146.01,12.007,91.373],"1.17":[146.106,12.184,91.35],"1.46":[146.106,12.184,91.35],"1.5":[146.105,12.184,91.35],"1.92":[146.105,12.184,91.35],"1.96":[147.374,12.719,90.537],"2.0":[146.105,12.184,91.35],"2.04":[137.212,11.707,96.055],"2.08":[125.71,14.333,99.474],"2.12":[114.858,15.563,103.75],"2.17":[103.833,19.614,107.069],"2.21":[93.355,23.949,108.686],"2.25":[85.091,25.876,111.402],"2.29":[78.971,27.665,112.258],"2.33":[74.231,29.506,112.128],"2.38":[72.099,30,111.677],"2.42":[71.533,29.625,110.807],"2.46":[71.762,29.001,109.807],"2.5":[72.876,27.991,108.604],"2.54":[74.691,26.765,107.278],"2.58":[77.083,25.383,105.8],"2.62":[79.87,23.95,104.262],"2.67":[82.911,22.54,102.614],"2.71":[86.05,21.224,101.007],"2.75":[89.104,20.062,99.417],"2.79":[91.932,19.083,97.951],"2.83":[94.385,18.332,96.765],"2.88":[96.233,17.837,95.892],"2.92":[97.672,17.624,95.564],"2.96":[98.811,17.769,96.04],"3.0":[99.81,18.059,96.933],"3.04":[100.772,18.406,98.005],"3.08":[101.833,18.619,99.105],"3.12":[103.11,18.556,99.772],"3.17":[104.537,18.253,100.213],"3.21":[106.195,17.598,100.566],"3.25":[107.897,16.92,100.704],"3.29":[109.523,16.38,100.766],"3.33":[110.961,16.285,100.265],"3.38":[111.938,17.287,98.224],"3.42":[112.708,18.741,96.421],"3.46":[113.477,19.853,96.356],"3.5":[114.258,20.706,97.5],"3.54":[115.219,21.166,100.149],"3.58":[116.209,21.453,103.261],"3.62":[117.064,21.778,105.983],"3.67":[117.836,22.168,108.345],"3.71":[118.482,22.744,109.989],"3.75":[119.056,23.409,111.311],"3.79":[119.634,24.109,112.603],"3.83":[120.175,24.825,113.761],"3.88":[120.672,25.525,114.776],"3.92":[121.105,26.181,115.64],"3.96":[121.464,26.754,116.347],"4.0":[121.731,27.247,116.869],"4.04":[121.88,27.638,117.168],"4.08":[121.931,27.962,117.273],"4.12":[121.887,28.244,117.184],"4.17":[121.774,28.49,116.961],"4.21":[121.614,28.712,116.645],"4.25":[121.43,28.922,116.284],"4.29":[121.249,29.133,115.933],"4.33":[121.079,29.35,115.602],"4.38":[120.958,29.593,115.372]},"position":{"0.0":[15.711,35.984,-17.958],"0.04":[16.332,36.129,-18.242],"0.08":[16.978,36.252,-18.525],"0.12":[17.719,36.431,-18.894],"0.17":[18.356,36.566,-19.169],"0.21":[18.878,36.698,-19.339],"0.25":[19.021,36.818,-19.341],"0.29":[18.714,36.866,-18.871],"0.33":[17.203,36.873,-18.036],"0.38":[13.778,36.919,-16.46],"0.42":[11.08,36.888,-14.043],"0.46":[8.825,36.335,-11.774],"0.5":[6.708,35.604,-9.411],"0.54":[5.851,34.938,-8.115],"0.58":[5.59,34.3,-7.524],"0.62":[5.853,33.755,-7.222],"0.67":[6.434,33.213,-7.207],"0.71":[7.108,32.674,-7.262],"0.75":[7.828,32.175,-7.367],"0.79":[8.441,31.689,-7.444],"0.83":[8.956,31.258,-7.498],"0.88":[9.284,30.926,-7.5],"0.92":[9.511,30.655,-7.496],"0.96":[9.719,30.445,-7.531],"1.0":[9.882,30.282,-7.569],"1.04":[10.005,30.159,-7.592],"1.08":[10.082,30.082,-7.606],"1.12":[10.094,30.07,-7.608],"1.17":[10.082,30.082,-7.606],"1.92":[10.082,30.082,-7.606],"1.96":[9.831,30.259,-7.582],"2.0":[10.082,30.082,-7.606],"2.04":[12.103,29.006,-7.493],"2.08":[14.827,27.854,-7.181],"2.12":[17.122,26.555,-7.023],"2.17":[19.659,25.595,-7.023],"2.21":[22.062,24.954,-7.279],"2.25":[23.624,24.118,-7.479],"2.29":[24.846,23.791,-7.876],"2.33":[25.71,23.945,-8.464],"2.38":[25.958,24.34,-9.063],"2.42":[25.888,24.948,-9.759],"2.46":[25.606,25.685,-10.475],"2.5":[25.128,26.55,-11.217],"2.54":[24.494,27.512,-11.99],"2.58":[23.735,28.545,-12.762],"2.62":[22.899,29.63,-13.554],"2.67":[22.011,30.726,-14.329],"2.71":[21.12,31.818,-15.1],"2.75":[20.243,32.865,-15.836],"2.79":[19.441,33.842,-16.541],"2.83":[18.714,34.707,-17.168],"2.88":[18.136,35.398,-17.71],"2.92":[17.655,35.889,-18.096],"2.96":[17.24,36.048,-18.221],"3.0":[16.894,36.02,-18.211],"3.04":[16.583,35.9,-18.102],"3.08":[16.306,35.763,-17.951],"3.12":[16.05,35.758,-17.861],"3.17":[15.833,35.805,-17.767],"3.21":[15.672,35.872,-17.62],"3.25":[15.552,35.956,-17.46],"3.29":[15.451,36.029,-17.31],"3.33":[15.396,36.112,-17.183],"3.38":[15.421,36.223,-17.099],"3.42":[15.488,36.308,-17.066],"3.46":[15.558,36.339,-17.105],"3.5":[15.628,36.326,-17.199],"3.54":[15.684,36.264,-17.351],"3.58":[15.731,36.19,-17.513],"3.62":[15.764,36.128,-17.645],"3.67":[15.787,36.084,-17.743],"3.71":[15.798,36.069,-17.784],"3.75":[15.801,36.071,-17.796],"3.79":[15.799,36.078,-17.796],"3.83":[15.794,36.09,-17.786],"3.88":[15.786,36.104,-17.771],"3.92":[15.777,36.117,-17.758],"3.96":[15.768,36.124,-17.754],"4.0":[15.76,36.125,-17.757],"4.04":[15.754,36.118,-17.771],"4.08":[15.749,36.107,-17.791],"4.12":[15.743,36.093,-17.813],"4.17":[15.738,36.076,-17.836],"4.21":[15.732,36.058,-17.86],"4.25":[15.727,36.039,-17.885],"4.29":[15.722,36.02,-17.91],"4.33":[15.716,36.001,-17.935],"4.38":[15.711,35.984,-17.958]}},"righthand":{"rotation":{"0.0":[-35.41,146.39,4.397],"0.04":[-49.1,156.533,0.622],"0.08":[-61.533,161.886,0.06],"0.12":[-77.458,171.319,4.794],"0.17":[-93.35,182.603,15.061],"0.21":[-104.382,191.378,30.054],"0.25":[-111.397,196.671,44.392],"0.29":[-109.097,198.547,49.901],"0.33":[-98.175,198.649,54.158],"0.38":[-77.381,201.341,59.802],"0.42":[-58.775,207.81,62.656],"0.46":[-38.264,199.122,58.218],"0.5":[-9.036,193.809,58.294],"0.54":[17.478,197.579,64.057],"0.58":[35.156,197.938,66.464],"0.62":[39.105,185.905,71.061],"0.67":[50.474,166.549,74.581],"0.71":[52.065,163.094,75.121],"0.75":[48.493,165.511,73.497],"0.79":[47,166.709,72.549],"0.83":[45.449,168.761,71.53],"0.88":[43.888,171.437,70.603],"0.92":[42.122,174.257,69.452],"0.96":[40.177,177.109,68.223],"1.0":[39.013,179.86,67.707],"1.04":[38.246,181.335,67.371],"1.08":[37.632,182.015,67.007],"1.12":[37.544,182.16,66.955],"1.17":[37.632,182.015,67.007],"1.46":[37.632,182.015,67.007],"1.5":[37.632,182.016,67.008],"1.92":[37.632,182.016,67.008],"1.96":[43.284,184.063,64.166],"2.0":[37.632,182.016,67.008],"2.04":[-11.179,158.314,74.589],"2.08":[-85.695,140.213,41.964],"2.12":[-123.411,144.836,17.903],"2.17":[-139.708,154.425,8.46],"2.21":[-143.189,161.68,0.006],"2.25":[-144.517,164.389,-10.256],"2.29":[-141.851,166.765,-19.266],"2.33":[-136.035,165.963,-27.436],"2.38":[-130.317,164.388,-34.666],"2.42":[-124.545,161.825,-40.126],"2.46":[-120.098,160.401,-43.707],"2.5":[-115.673,159.125,-45.663],"2.54":[-110.061,156.927,-45.085],"2.58":[-103.739,154.761,-42.753],"2.62":[-96.642,152.548,-38.894],"2.67":[-89.229,151.058,-34.215],"2.71":[-82.11,150.176,-29.505],"2.75":[-75.762,150.102,-25.486],"2.79":[-71.038,150.473,-23.299],"2.83":[-67.765,151.161,-22.456],"2.88":[-66.181,152.416,-23.041],"2.92":[-65.676,153.779,-24.427],"2.96":[-65.759,155.228,-26.099],"3.0":[-66.311,156.373,-27.749],"3.04":[-67.008,156.771,-28.863],"3.08":[-68.332,156.584,-29.659],"3.12":[-70.975,155.407,-30.124],"3.17":[-73.946,154.603,-30.515],"3.21":[-76.354,155.77,-31.116],"3.25":[-78.047,157.408,-31.164],"3.29":[-78.961,158.662,-30.542],"3.33":[-78.815,158.938,-28.531],"3.38":[-76.081,157.192,-23.643],"3.42":[-71.398,155.006,-17.135],"3.46":[-65.953,152.967,-9.737],"3.5":[-60.221,151.574,-2.9],"3.54":[-56.786,150.715,0.854],"3.58":[-54.1,150.176,2.912],"3.62":[-51.724,149.808,4.216],"3.67":[-50.109,148.889,5.156],"3.71":[-48.451,148.07,5.803],"3.75":[-46.871,147.499,6.021],"3.79":[-45.47,146.804,6.087],"3.83":[-44.21,146.089,6.014],"3.88":[-43.035,145.427,5.841],"3.92":[-41.929,144.816,5.647],"3.96":[-40.85,144.293,5.507],"4.0":[-39.799,143.882,5.451],"4.04":[-38.72,143.626,5.591],"4.08":[-37.769,143.556,5.74],"4.12":[-37.118,143.718,5.725],"4.17":[-36.661,144.037,5.609],"4.21":[-36.37,144.477,5.393],"4.25":[-36.164,144.981,5.127],"4.29":[-35.961,145.489,4.859],"4.33":[-35.747,145.988,4.594],"4.38":[-35.409,146.389,4.398]},"position":{"0.0":[-13.606,39.761,-13.436],"0.04":[-12.838,37.481,-9.808],"0.08":[-11.796,36.118,-6.495],"0.12":[-13.868,34.357,-4.3],"0.17":[-17.247,32.965,-2.688],"0.21":[-21.162,31.571,-3.39],"0.25":[-24.475,31.807,-4.552],"0.29":[-24.859,34.489,-5.327],"0.33":[-23.497,37.26,-7.74],"0.38":[-18.841,38.726,-14.586],"0.42":[-11.815,39.793,-19.07],"0.46":[-6.474,40.35,-20.39],"0.5":[0.009,45.719,-17.2],"0.54":[4.273,48.252,-11.703],"0.58":[5.817,46.719,-9.622],"0.62":[5.456,42.709,-6.108],"0.67":[2.784,40.861,0.038],"0.71":[1.917,40.023,0.704],"0.75":[2.106,39.13,-0.256],"0.79":[2.027,38.455,-0.556],"0.83":[2.073,37.845,-0.908],"0.88":[2.196,37.266,-1.283],"0.92":[2.367,36.773,-1.722],"0.96":[2.552,36.264,-2.18],"1.0":[2.67,35.687,-2.516],"1.04":[2.707,35.283,-2.722],"1.08":[2.725,35.071,-2.855],"1.12":[2.727,35.035,-2.879],"1.17":[2.725,35.071,-2.855],"1.92":[2.725,35.071,-2.855],"1.96":[2.965,35.167,-2.84],"2.0":[2.725,35.071,-2.855],"2.04":[0.183,34.159,-4.108],"2.08":[-4.28,33.443,-7.255],"2.12":[-6.207,33.877,-9.653],"2.17":[-7.357,34.721,-11.612],"2.21":[-8.936,35.655,-12.56],"2.25":[-10.232,36.72,-13.005],"2.29":[-11.512,37.719,-13.186],"2.33":[-12.584,38.68,-13.181],"2.38":[-13.458,39.492,-13.145],"2.42":[-14.148,40.185,-13.127],"2.46":[-14.666,40.733,-13.236],"2.5":[-15.027,41.14,-13.38],"2.54":[-15.172,41.416,-13.47],"2.58":[-15.184,41.585,-13.551],"2.62":[-15.099,41.679,-13.618],"2.67":[-14.968,41.729,-13.682],"2.71":[-14.841,41.768,-13.758],"2.75":[-14.743,41.816,-13.83],"2.79":[-14.729,41.916,-13.903],"2.83":[-14.759,42.026,-13.942],"2.88":[-14.814,42.116,-13.903],"2.92":[-14.877,42.198,-13.823],"2.96":[-14.933,42.272,-13.715],"3.0":[-14.964,42.352,-13.601],"3.04":[-14.947,42.452,-13.51],"3.08":[-14.878,42.553,-13.423],"3.12":[-14.728,42.642,-13.329],"3.17":[-14.552,42.713,-13.23],"3.21":[-14.393,42.784,-13.122],"3.25":[-14.249,42.781,-13.017],"3.29":[-14.11,42.687,-12.915],"3.33":[-14.031,42.37,-12.84],"3.38":[-14.045,41.618,-12.783],"3.42":[-14.073,40.706,-12.729],"3.46":[-14.17,39.742,-12.725],"3.5":[-14.233,38.921,-12.72],"3.54":[-14.215,38.503,-12.746],"3.58":[-14.262,38.381,-12.786],"3.62":[-14.312,38.366,-12.836],"3.67":[-14.23,38.34,-12.883],"3.71":[-14.173,38.383,-12.934],"3.75":[-14.171,38.499,-12.999],"3.79":[-14.137,38.63,-13.061],"3.83":[-14.092,38.775,-13.121],"3.88":[-14.048,38.931,-13.181],"3.92":[-14.003,39.084,-13.238],"3.96":[-13.958,39.225,-13.291],"4.0":[-13.915,39.345,-13.338],"4.04":[-13.875,39.429,-13.378],"4.08":[-13.839,39.493,-13.41],"4.12":[-13.804,39.544,-13.427],"4.17":[-13.771,39.586,-13.436],"4.21":[-13.738,39.622,-13.437],"4.25":[-13.705,39.655,-13.435],"4.29":[-13.673,39.688,-13.433],"4.33":[-13.64,39.722,-13.432],"4.38":[-13.606,39.761,-13.436]}},"weapon":{"rotation":{"0.0":[-52.33,-28.812,12.579],"0.04":[-38.383,-23.258,9.475],"0.08":[-24.623,-17.01,8.879],"0.12":[-6.801,-9.262,13.951],"0.17":[9.959,-1.085,22.699],"0.21":[20.99,6.441,36.638],"0.25":[26.793,10.725,50.618],"0.29":[20.671,11.841,57.678],"0.33":[6.817,14.201,61.687],"0.38":[-10.229,22.503,66.875],"0.42":[-30.173,28.789,72.224],"0.46":[-56.32,25.856,67.839],"0.5":[-83.04,20.998,63.01],"0.54":[-108.63,25.486,63.888],"0.58":[-129.432,26.191,64.374],"0.62":[-138.709,7.619,62.749],"0.67":[-143.289,-5.947,70.572],"0.71":[-143.519,-7.605,71.681],"0.75":[-140.245,-6.853,69.741],"0.79":[-136.353,-5.549,69.022],"0.83":[-132.035,-3.427,68.208],"0.88":[-128.435,-0.752,67.338],"0.92":[-125.524,2.24,66.592],"0.96":[-123.761,5.287,65.805],"1.0":[-122.672,7.98,65.26],"1.04":[-121.846,9.462,64.954],"1.08":[-121.366,10.19,64.743],"1.12":[-121.283,10.335,64.716],"1.17":[-121.366,10.19,64.743],"1.46":[-121.366,10.19,64.743],"1.5":[-121.366,10.192,64.743],"1.92":[-121.366,10.192,64.743],"1.96":[-127.718,8.709,58.923],"2.0":[-121.366,10.192,64.743],"2.04":[-72.55,-11.035,93.622],"2.08":[-4.913,-41.914,52.824],"2.12":[34.002,-36.928,24.076],"2.17":[54.063,-33.921,11.933],"2.21":[59.076,-29.054,1.445],"2.25":[55.443,-26.355,-6.081],"2.29":[48.015,-25.765,-12.995],"2.33":[37.431,-26.564,-18.732],"2.38":[24.795,-28.27,-22.808],"2.42":[10.072,-30.033,-25.842],"2.46":[-5.568,-30.501,-28.22],"2.5":[-25.929,-30.737,-29.351],"2.54":[-57.068,-31.451,-28.653],"2.58":[-90.667,-32.131,-26.701],"2.62":[-119.074,-32.424,-23.683],"2.67":[-146.088,-32.304,-20.266],"2.71":[-173.353,-31.681,-17.072],"2.75":[-199.567,-30.733,-14.564],"2.79":[-224.101,-29.713,-13.468],"2.83":[-247.026,-28.554,-13.366],"2.88":[-268.687,-27.148,-14.23],"2.92":[-287.585,-25.692,-15.618],"2.96":[-300.881,-23.673,-17.427],"3.0":[-312.726,-23.093,-18.721],"3.04":[-327.095,-25.317,-18.688],"3.08":[-341.433,-31.796,-17.086],"3.12":[-357.519,-47.751,-11.53],"3.17":[-376.205,-63.663,-2.78],"3.21":[-384.074,-70.004,-0.162],"3.25":[-384.473,-72.327,-1.571],"3.29":[-383.726,-73.268,-1.843],"3.33":[-383.579,-71.19,-0.159],"3.38":[-386.706,-64.708,5.352],"3.42":[-387.935,-55.278,8.741],"3.46":[-388.33,-42.613,9.128],"3.5":[-389.387,-31.476,9.568],"3.54":[-391.435,-27.97,10.848],"3.58":[-393.863,-27.51,12.213],"3.62":[-395.944,-27.568,13.382],"3.67":[-397.938,-28.228,14.339],"3.71":[-399.693,-28.674,14.861],"3.75":[-401.288,-29.163,15.105],"3.79":[-402.739,-29.683,15.136],"3.83":[-404.071,-30.205,15.017],"3.88":[-405.302,-30.713,14.811],"3.92":[-406.459,-31.17,14.577],"3.96":[-407.57,-31.552,14.39],"4.0":[-408.635,-31.825,14.279],"4.04":[-409.693,-31.94,14.339],"4.08":[-410.597,-31.898,14.401],"4.12":[-411.178,-31.66,14.306],"4.17":[-411.55,-31.29,14.113],"4.21":[-411.744,-30.821,13.83],"4.25":[-411.854,-30.298,13.501],"4.29":[-411.959,-29.772,13.168],"4.33":[-412.082,-29.252,12.843],"4.38":[-412.333,-28.811,12.579]},"position":{"0.0":[-6.122,56.44,-13.766],"0.04":[-4.723,54.386,-10.706],"0.08":[-4.302,52.28,-8.015],"0.12":[-6.666,49.844,-6.13],"0.17":[-10.29,47.702,-5.225],"0.21":[-14.874,46.151,-5.882],"0.25":[-18.553,45.899,-7.32],"0.29":[-19.279,48.483,-8.515],"0.33":[-17.332,51.722,-10.788],"0.38":[-11.521,53.45,-16.618],"0.42":[-4.226,55.153,-21.519],"0.46":[2.812,58.199,-20.787],"0.5":[8.88,60.787,-17.554],"0.54":[12.625,61.347,-13.331],"0.58":[14.229,60.543,-8.265],"0.62":[12.596,57.997,-2.301],"0.67":[10.218,55.274,2.455],"0.71":[9.649,54.204,3.003],"0.75":[9.579,53.623,2.102],"0.79":[9.495,52.917,1.715],"0.83":[9.539,52.267,1.241],"0.88":[9.693,51.659,0.737],"0.92":[9.913,51.073,0.223],"0.96":[10.17,50.447,-0.294],"1.0":[10.396,49.89,-0.734],"1.04":[10.491,49.494,-1.001],"1.08":[10.525,49.248,-1.147],"1.12":[10.532,49.208,-1.174],"1.17":[10.525,49.248,-1.147],"1.46":[10.525,49.248,-1.147],"1.5":[10.526,49.249,-1.148],"1.92":[10.526,49.249,-1.148],"1.96":[10.942,49.386,-0.688],"2.0":[10.526,49.249,-1.148],"2.04":[7.42,48.116,-4.543],"2.08":[3.863,47.059,-8.511],"2.12":[1.776,47.045,-11.142],"2.17":[0.249,47.671,-13.069],"2.21":[-0.931,48.925,-14.193],"2.25":[-1.915,50.597,-14.8],"2.29":[-2.933,52.552,-15.164],"2.33":[-3.953,54.563,-15.239],"2.38":[-5.067,56.45,-15.037],"2.42":[-6.152,57.95,-14.643],"2.46":[-7.195,58.747,-14.18],"2.5":[-7.972,58.803,-13.586],"2.54":[-8.232,57.657,-12.653],"2.58":[-8.042,56.27,-11.985],"2.62":[-7.269,55.562,-12.245],"2.67":[-6.261,55.192,-13.051],"2.71":[-5.263,55.063,-14.337],"2.75":[-4.415,55.36,-15.802],"2.79":[-3.934,56.343,-17.17],"2.83":[-3.831,57.714,-18.261],"2.88":[-4.3,59.399,-18.748],"2.92":[-5.038,60.988,-18.765],"2.96":[-5.837,61.982,-18.24],"3.0":[-6.601,62.667,-17.447],"3.04":[-7.148,63.231,-16.614],"3.08":[-7.498,63.454,-15.81],"3.12":[-7.555,63.117,-15.167],"3.17":[-7.478,62.435,-14.72],"3.21":[-7.411,61.482,-14.611],"3.25":[-7.309,60.432,-14.641],"3.29":[-7.165,59.501,-14.665],"3.33":[-7.013,58.622,-14.652],"3.38":[-6.885,57.809,-14.494],"3.42":[-6.773,57,-14.288],"3.46":[-6.686,56.034,-14.088],"3.5":[-6.618,55.208,-13.919],"3.54":[-6.573,54.832,-13.831],"3.58":[-6.539,54.679,-13.782],"3.62":[-6.506,54.63,-13.748],"3.67":[-6.478,54.674,-13.73],"3.71":[-6.451,54.762,-13.718],"3.75":[-6.426,54.89,-13.714],"3.79":[-6.403,55.05,-13.714],"3.83":[-6.38,55.228,-13.719],"3.88":[-6.358,55.417,-13.726],"3.92":[-6.336,55.599,-13.734],"3.96":[-6.314,55.766,-13.741],"4.0":[-6.293,55.912,-13.746],"4.04":[-6.269,56.014,-13.747],"4.08":[-6.246,56.09,-13.747],"4.12":[-6.227,56.155,-13.749],"4.17":[-6.208,56.21,-13.751],"4.21":[-6.19,56.257,-13.754],"4.25":[-6.173,56.301,-13.756],"4.29":[-6.156,56.345,-13.76],"4.33":[-6.14,56.388,-13.763],"4.38":[-6.122,56.439,-13.766]}},"lefthand_1":{"position":[0,1,-1],"scale":[1,1.5,1]},"righthand_1":{"position":[0,1.75,-0.25],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0,0.001,-0.002],"0.04":[0.011,0.079,0.026],"0.08":[0.034,0.252,0.072],"0.12":[0.068,0.503,0.147],"0.17":[0.106,0.774,0.231],"0.21":[0.145,1.052,0.306],"0.25":[0.168,1.208,0.353],"0.29":[0.165,1.147,0.362],"0.33":[0.143,0.92,0.362],"0.38":[0.076,0.33,0.342],"0.42":[0,-0.1,0.165],"0.46":[-0.057,0.018,-1.388],"0.5":[-0.092,0.135,-2.801],"0.54":[-0.051,-0.036,-0.43],"0.58":[-0.009,-0.28,1.951],"0.62":[0.025,-0.382,0.853],"0.67":[0.062,-0.446,-0.663],"0.71":[0.097,-0.516,-1.202],"0.75":[0.126,-0.576,-1.33],"0.79":[0.145,-0.622,-0.869],"0.83":[0.15,-0.648,-0.248],"0.88":[0.147,-0.648,-0.044],"0.92":[0.144,-0.636,-0.002],"0.96":[0.124,-0.59,-0.001],"1.0":[0.092,-0.51,-0.001],"1.04":[0.06,-0.426,-0.001],"1.08":[0.031,-0.343,-0.001],"1.12":[0.009,-0.28,-0.001],"1.17":[0,-0.234,-0.001],"1.21":[0.003,-0.209,-0.001],"1.25":[0.011,-0.192,-0.001],"1.29":[0.023,-0.171,-0.001],"1.33":[0.04,-0.159,-0.001],"1.38":[0.059,-0.142,-0.001],"1.42":[0.082,-0.129,-0.001],"1.46":[0.107,-0.121,-0.001],"1.5":[0.129,-0.11,0],"1.54":[0.166,-0.1,0],"1.58":[0.194,-0.093,0],"1.62":[0.221,-0.083,0],"1.67":[0.249,-0.076,0],"1.71":[0.276,-0.069,0],"1.75":[0.295,-0.063,0],"1.79":[0.322,-0.053,0],"1.83":[0.341,-0.046,0],"1.88":[0.359,-0.036,0],"1.92":[0.368,-0.026,0],"1.96":[0.377,-0.012,0],"2.0":[0.377,0.001,0],"2.04":[0.35,0.014,0],"2.08":[0.267,0.034,0],"2.12":[0.148,0.051,0],"2.17":[0.001,0.071,0],"2.21":[-0.174,0.091,0],"2.25":[-0.362,0.113,0],"2.29":[-0.549,0.135,0],"2.33":[-0.728,0.154,0],"2.38":[-0.888,0.174,0],"2.42":[-1.031,0.191,0],"2.46":[-1.121,0.209,0],"2.5":[-1.192,0.224,0],"2.54":[-1.255,0.239,0],"2.58":[-1.308,0.257,0],"2.62":[-1.353,0.274,0],"2.67":[-1.388,0.289,0],"2.71":[-1.415,0.305,0],"2.75":[-1.433,0.32,0],"2.79":[-1.451,0.335,0],"2.83":[-1.469,0.346,0.001],"2.88":[-1.478,0.357,0],"2.92":[-1.487,0.366,0.001],"2.96":[-1.487,0.374,0],"3.0":[-1.488,0.378,0],"3.04":[-1.48,0.376,0.001],"3.08":[-1.426,0.364,0],"3.12":[-1.264,0.321,0],"3.17":[-1.025,0.258,0],"3.21":[-0.747,0.186,0],"3.25":[-0.462,0.114,0],"3.29":[-0.215,0.051,0],"3.33":[0.001,0.001,0],"3.38":[0.163,-0.032,0],"3.42":[0.294,-0.052,0],"3.46":[0.41,-0.066,0],"3.5":[0.471,-0.07,0],"3.54":[0.479,-0.07,0],"3.58":[0.479,-0.068,0],"3.62":[0.433,-0.061,0],"3.67":[0.356,-0.05,0],"3.71":[0.263,-0.036,0],"3.75":[0.164,-0.022,0],"3.79":[0.064,-0.007,0],"3.83":[-0.028,0.007,0],"3.88":[-0.106,0.019,0],"3.92":[-0.156,0.026,0],"3.96":[-0.17,0.028,0],"4.0":[-0.17,0.028,0],"4.04":[-0.156,0.026,0],"4.08":[-0.135,0.022,0],"4.12":[-0.113,0.019,0],"4.17":[-0.085,0.014,0],"4.21":[-0.064,0.011,0],"4.25":[-0.035,0.006,0],"4.29":[-0.021,0.004,0],"4.33":[-0.007,0.001,0],"4.38":[0,0,0]}}}},"melee_2":{"loop":true,"animation_length":1.684,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-26.942,151.432,-88.052],"0.0347":[-26.573,151.688,-87.611],"0.0694":[-26.242,153.742,-88.137],"0.1042":[-23.001,179.023,-97.518],"0.1389":[-21.341,186.455,-100.748],"0.1736":[-20.409,186.753,-101.684],"0.2083":[-22.17,184.089,-99.514],"0.2431":[-25.704,182.681,-95.815],"0.2778":[-27.921,181.522,-93.487],"0.3125":[-35.004,177.411,-86.046],"0.3472":[-37.311,176.385,-83.811],"0.3819":[-41.505,175.786,-80.238],"0.4167":[-46.556,180.103,-77.263],"0.4514":[-49.471,185.195,-75.698],"0.4861":[-50.888,188.179,-74.923],"0.5208":[-55.305,198.126,-72.381],"0.5556":[-56.954,201.558,-71.371],"0.5903":[-60.701,208.179,-68.944],"0.625":[-67.979,216.396,-63.906],"0.6597":[-74.099,219.824,-59.551],"0.6944":[-77.442,220.691,-57.194],"0.7292":[-87.074,218.269,-51.779],"0.7639":[-90.913,211.199,-50.219],"0.7986":[-98.404,175.376,-57.182],"0.8333":[-106.528,147.544,-71.139],"0.8681":[-105.155,147.024,-74.437],"0.9028":[-103.796,147.598,-75.965],"0.9375":[-97.449,152.304,-79.173],"0.9722":[-94.925,154.405,-80.08],"1.0069":[-89.898,158.483,-81.752],"1.0417":[-83.757,162.144,-84.125],"1.0764":[-81.199,162.244,-83.952],"1.1111":[-80.19,161.941,-83.067],"1.1458":[-76.883,161.442,-80.231],"1.1806":[-75.44,161.745,-79.796],"1.2153":[-71.999,163.069,-79.337],"1.25":[-68.182,163.114,-81.113],"1.2847":[-67.105,161.013,-83.852],"1.3194":[-66.622,159.958,-84.181],"1.3542":[-63.892,158.624,-76.917],"1.3889":[-62.944,158.296,-73.927],"1.4236":[-61.485,157.176,-69.966],"1.4583":[-59.55,154.759,-65.681],"1.4931":[-58.583,153.311,-63.744],"1.5278":[-58.269,152.753,-63.131],"1.5625":[-58.094,151.721,-62.779],"1.5972":[-58.208,151.477,-63.005],"1.6319":[-58.561,151.061,-63.697],"1.6667":[-59.042,150.407,-64.628]},"position":{"0.0":[8.983,31.211,-7.492],"0.0347":[8.853,31.362,-7.501],"0.0694":[8.886,31.328,-7.505],"0.1042":[9.921,30.16,-7.644],"0.1389":[10.223,29.787,-7.792],"0.1736":[10.278,29.732,-8.042],"0.2083":[10.117,29.925,-7.671],"0.2431":[9.806,30.168,-6.498],"0.2778":[9.568,30.351,-5.708],"0.3125":[8.758,30.898,-3.174],"0.3472":[8.535,31.037,-2.459],"0.3819":[8.331,31.143,-1.534],"0.4167":[8.698,30.846,-1.64],"0.4514":[9.015,30.56,-2.151],"0.4861":[9.186,30.402,-2.493],"0.5208":[9.795,29.86,-3.813],"0.5556":[10.041,29.656,-4.326],"0.5903":[10.613,29.215,-5.418],"0.625":[11.721,28.481,-7.08],"0.6597":[12.658,27.964,-8.093],"0.6944":[13.193,27.703,-8.542],"0.7292":[15.231,26.899,-9.33],"0.7639":[16.638,26.468,-9.323],"0.7986":[22.116,24.678,-8.103],"0.8333":[25.933,24.41,-8.996],"0.8681":[25.312,25.91,-10.445],"0.9028":[24.817,26.796,-11.187],"0.9375":[22.672,29.838,-13.537],"0.9722":[21.835,30.898,-14.319],"1.0069":[20.166,32.949,-15.834],"1.0417":[18.136,35.4,-17.711],"1.0764":[17.241,36.048,-18.222],"1.1111":[16.894,36.02,-18.211],"1.1458":[16.05,35.759,-17.86],"1.1806":[15.832,35.807,-17.765],"1.2153":[15.547,35.962,-17.452],"1.25":[15.395,36.194,-17.106],"1.2847":[15.497,36.327,-17.058],"1.3194":[15.572,36.354,-17.094],"1.3542":[15.725,36.191,-17.505],"1.3889":[15.765,36.123,-17.651],"1.4236":[15.798,36.072,-17.782],"1.4583":[15.789,36.098,-17.776],"1.4931":[15.769,36.122,-17.755],"1.5278":[15.76,36.125,-17.757],"1.5625":[15.742,36.092,-17.814],"1.5972":[15.737,36.076,-17.837],"1.6319":[15.727,36.038,-17.886],"1.6667":[15.711,35.984,-17.958]}},"righthand":{"rotation":{"0.0":[-157.472,-2.849,-111.306],"0.0347":[-174.885,-6.653,-100.016],"0.0694":[-183.496,-5.05,-93.109],"0.1042":[-195.487,-19.605,-91.61],"0.1389":[-195.522,-16.782,-92.783],"0.1736":[-200.507,-16.287,-91.015],"0.2083":[-195.987,-7.059,-91.635],"0.2431":[-186.998,-2.525,-98.026],"0.2778":[-181.806,-5.698,-99.101],"0.3125":[-173.624,-6.66,-108.73],"0.3472":[-172.356,-5.822,-108.731],"0.3819":[-169.299,-4.569,-109.59],"0.4167":[-164.34,-2.841,-110.333],"0.4514":[-161.079,-1.647,-110.494],"0.4861":[-159.537,-1.002,-110.481],"0.5208":[-155.576,1.275,-110.103],"0.5556":[-154.559,2.193,-109.869],"0.5903":[-153.127,4.351,-109.274],"0.625":[-152.848,8.622,-108.174],"0.6597":[-154.205,12.352,-107.464],"0.6944":[-155.437,14.522,-107.182],"0.7292":[-182.307,32.419,-111.011],"0.7639":[-215.946,43.891,-126.666],"0.7986":[-286.17,31.229,-150.674],"0.8333":[-247.325,19.994,-122.663],"0.8681":[-245.316,16.623,-127.875],"0.9028":[-244.229,15.623,-130.985],"0.9375":[-241.862,14.956,-143.228],"0.9722":[-241.12,15.419,-148.262],"1.0069":[-240.317,17.602,-161.124],"1.0417":[-242.947,22.161,-181.94],"1.0764":[-250.123,25.253,-191.717],"1.1111":[-255.805,26.48,-194.957],"1.1458":[-269.673,25.701,-207.323],"1.1806":[-268.244,23.859,-212.317],"1.2153":[-255.503,22.258,-211.687],"1.25":[-241.475,26.86,-203.852],"1.2847":[-238.467,36.258,-194.34],"1.3194":[-237.408,40.074,-189.678],"1.3542":[-234.043,39.544,-181.825],"1.3889":[-233.327,38.345,-180.095],"1.4236":[-231.132,36.367,-177.262],"1.4583":[-224.774,34.573,-173.609],"1.4931":[-220.037,33.361,-171.92],"1.5278":[-217.926,32.829,-171.356],"1.5625":[-214.189,32.035,-171.126],"1.5972":[-213.939,32.166,-171.718],"1.6319":[-214.433,32.863,-173.667],"1.6667":[-215.41,33.611,-175.603]},"position":{"0.0":[2.889,35.712,-0.308],"0.0347":[0.777,35.919,0.858],"0.0694":[-0.217,36.124,0.442],"0.1042":[-3.264,40.931,-15.291],"0.1389":[-6.316,41.996,-19.938],"0.1736":[-5.436,42.206,-18.57],"0.2083":[-4.378,40.131,-11.524],"0.2431":[-4.498,37.945,-4.152],"0.2778":[-4.882,37.395,-1.159],"0.3125":[-5.748,36.206,0.582],"0.3472":[-5.835,36.12,0.495],"0.3819":[-6.047,35.961,0.49],"0.4167":[-6.305,35.831,0.398],"0.4514":[-6.448,35.783,0.277],"0.4861":[-6.514,35.762,0.197],"0.5208":[-6.708,35.674,-0.124],"0.5556":[-6.776,35.626,-0.259],"0.5903":[-6.928,35.485,-0.577],"0.625":[-7.221,35.115,-1.18],"0.6597":[-7.476,34.736,-1.667],"0.6944":[-7.624,34.502,-1.937],"0.7292":[-8.153,32.423,-3.732],"0.7639":[-8.727,30.84,-5.578],"0.7986":[-9.372,32.522,-11.948],"0.8333":[-13.064,39.949,-12.391],"0.8681":[-13.874,40.416,-12.763],"0.9028":[-14.053,40.459,-12.813],"0.9375":[-14.389,40.435,-12.919],"0.9722":[-14.488,40.496,-12.983],"1.0069":[-14.516,40.461,-13.086],"1.0417":[-14.363,40.468,-13.15],"1.0764":[-14.523,40.971,-13.146],"1.1111":[-14.719,41.41,-13.136],"1.1458":[-14.935,42.503,-13.127],"1.1806":[-14.666,42.519,-13.078],"1.2153":[-13.985,42.215,-13.033],"1.25":[-13.522,40.691,-13.236],"1.2847":[-13.887,39.089,-13.412],"1.3194":[-13.969,38.445,-13.471],"1.3542":[-13.99,38.31,-13.296],"1.3889":[-13.971,38.437,-13.201],"1.4236":[-13.921,38.676,-13.09],"1.4583":[-13.826,38.958,-13.161],"1.4931":[-13.75,39.187,-13.276],"1.5278":[-13.714,39.299,-13.335],"1.5625":[-13.639,39.559,-13.446],"1.5972":[-13.626,39.618,-13.456],"1.6319":[-13.611,39.708,-13.453],"1.6667":[-13.606,39.761,-13.436]}},"weapon":{"rotation":{"0.0":[-113.815,11.424,69.089],"0.0347":[-96.36,14.011,84.219],"0.0694":[-86.986,12.666,90.667],"0.1042":[-73.285,20.792,92.812],"0.1389":[-73.594,23.393,92.877],"0.1736":[-68.491,22.405,95.211],"0.2083":[-74.512,14.829,91.365],"0.2431":[-82.859,9.411,86.305],"0.2778":[-84.882,13.419,84.454],"0.3125":[-89.681,14.691,73.678],"0.3472":[-90.754,14.016,73.48],"0.3819":[-93.926,12.872,72.157],"0.4167":[-99.027,11.262,70.672],"0.4514":[-102.358,10.113,70.018],"0.4861":[-103.928,9.475,69.799],"0.5208":[-107.932,7.199,69.589],"0.5556":[-108.947,6.273,69.67],"0.5903":[-110.363,4.103,70.057],"0.625":[-110.586,-0.183,71.126],"0.6597":[-109.21,-3.903,72.034],"0.6944":[-107.994,-6.05,72.487],"0.7292":[-84.995,-22.804,68.314],"0.7639":[-53.71,-39.039,62.626],"0.7986":[55.89,-52.348,13.557],"0.8333":[125.148,-57.184,-48.825],"0.8681":[64.326,-136.997,-11.765],"0.9028":[73.548,-155.569,-25.259],"0.9375":[72.512,-218.149,-54.254],"0.9722":[62.342,-237.883,-73.503],"1.0069":[-35.462,-249.809,-189.554],"1.0417":[-67.222,-199.632,-254.539],"1.0764":[-64.181,-170.868,-277.261],"1.1111":[-60.446,-158.748,-287.111],"1.1458":[-38.123,-123.094,-331.21],"1.1806":[-20.188,-106.695,-355.266],"1.2153":[-24.596,-66.508,-363.648],"1.25":[-55.953,-60.502,-334.777],"1.2847":[-47.802,-54.095,-341.174],"1.3194":[-40.942,-48.217,-347.964],"1.3542":[-35.444,-36.45,-352.093],"1.3889":[-36.293,-35.802,-349.949],"1.4236":[-37.965,-33.551,-347.498],"1.4583":[-43.653,-30.929,-344.501],"1.4931":[-47.926,-29.126,-343.32],"1.5278":[-49.829,-28.343,-342.991],"1.5625":[-53.232,-27.112,-343.182],"1.5972":[-53.49,-27.209,-343.789],"1.6319":[-53.127,-27.958,-345.642],"1.6667":[-52.334,-28.813,-347.418]},"position":{"0.0":[11.433,49.918,1.029],"0.0347":[9.753,49.563,1.558],"0.0694":[8.611,49.701,0.581],"0.1042":[3.927,54.04,-15.404],"0.1389":[2.514,55.696,-20.597],"0.1736":[3.337,55.882,-19.452],"0.2083":[4.302,53.801,-11.976],"0.2431":[4.268,52.105,-3.938],"0.2778":[3.814,51.284,-0.927],"0.3125":[2.748,50.446,1.154],"0.3472":[2.632,50.384,1.13],"0.3819":[2.375,50.253,1.265],"0.4167":[2.024,50.138,1.391],"0.4514":[1.811,50.091,1.408],"0.4861":[1.709,50.07,1.395],"0.5208":[1.403,49.987,1.247],"0.5556":[1.296,49.945,1.161],"0.5903":[1.087,49.829,0.921],"0.625":[0.743,49.536,0.388],"0.6597":[0.491,49.242,-0.099],"0.6944":[0.356,49.061,-0.383],"0.7292":[-0.168,47.026,-2.774],"0.7639":[-0.141,45.642,-5.684],"0.7986":[1.693,46.898,-15.852],"0.8333":[-0.103,54.541,-15.396],"0.8681":[-2.081,56.405,-12.138],"0.9028":[-3.669,56.005,-11.579],"0.9375":[-6.542,53.927,-12.94],"0.9722":[-6.958,53.338,-13.806],"1.0069":[-6.043,53.826,-16.208],"1.0417":[-4.391,56.666,-18.337],"1.0764":[-4.019,60.014,-18.146],"1.1111":[-4.388,61.335,-17.787],"1.1458":[-6.463,61.776,-16.372],"1.1806":[-7.084,61.388,-15.659],"1.2153":[-7.14,59.925,-14.489],"1.25":[-6.65,57.367,-14.5],"1.2847":[-6.509,55.69,-14.316],"1.3194":[-6.459,55.015,-14.241],"1.3542":[-6.294,54.745,-14.001],"1.3889":[-6.245,54.841,-13.926],"1.4236":[-6.168,55.054,-13.816],"1.4583":[-6.087,55.387,-13.758],"1.4931":[-6.047,55.674,-13.759],"1.5278":[-6.033,55.812,-13.765],"1.5625":[-6.021,56.139,-13.772],"1.5972":[-6.033,56.22,-13.77],"1.6319":[-6.076,56.354,-13.768],"1.6667":[-6.121,56.438,-13.766]}},"lefthand_1":{"position":[0,1,-1],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.1736":[-30,0,0],"0.3819":[-30,0,0],"0.5556":[0,0,0]},"position":[0,1.75,-0.25],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.035,-0.044,-0.027],"0.0347":[0.197,-0.253,-0.161],"0.0694":[0.26,-0.333,-0.211],"0.1042":[0.047,0.059,0.489],"0.1389":[-0.068,0.163,1.463],"0.1736":[-0.199,0.142,2.027],"0.2083":[-0.29,-0.013,-1.523],"0.2431":[-0.26,-0.373,-1.07],"0.2778":[-0.222,-0.611,-0.294],"0.3125":[-0.121,-0.841,0.446],"0.3472":[-0.086,-0.752,0.255],"0.3819":[-0.017,-0.506,-0.199],"0.4167":[0.022,-0.295,-0.252],"0.4514":[0.03,-0.179,-0.166],"0.4861":[0.032,-0.124,-0.12],"0.5208":[0.04,-0.028,-0.009],"0.5556":[0.044,-0.015,-0.002],"0.5903":[0.064,-0.017,0],"0.625":[0.093,-0.017,0],"0.6597":[0.114,-0.017,0],"0.6944":[0.129,-0.017,0],"0.7292":[0.136,-0.016,0],"0.7639":[0.122,-0.015,-0.009],"0.7986":[0.006,-0.002,-0.085],"0.8333":[-0.306,0.034,-0.273],"0.8681":[-0.541,0.064,-0.406],"0.9028":[-0.656,0.081,-0.462],"0.9375":[-0.915,0.127,-0.536],"0.9722":[-0.966,0.143,-0.514],"1.0069":[-1.046,0.184,-0.283],"1.0417":[-1.114,0.249,0.277],"1.0764":[-1.133,0.285,0.638],"1.1111":[-1.139,0.298,0.78],"1.1458":[-1.06,0.297,0.8],"1.1806":[-0.898,0.271,0.577],"1.2153":[-0.399,0.191,-0.029],"1.25":[0.101,0.093,-0.312],"1.2847":[0.199,0.046,-0.089],"1.3194":[0.221,0.028,0.032],"1.3542":[0.221,-0.009,0.164],"1.3889":[0.199,-0.016,0.144],"1.4236":[0.127,-0.025,0.083],"1.4583":[0.01,-0.03,-0.021],"1.4931":[-0.022,-0.03,-0.052],"1.5278":[-0.022,-0.028,-0.052],"1.5625":[-0.011,-0.019,-0.031],"1.5972":[-0.011,-0.014,-0.021],"1.6319":[-0.001,-0.005,-0.01],"1.6667":[-0.001,0,0]}}},"sound_effects":{"0.0":{"effect":"melee.quenching.quenching_swing_b"},"0.9375":{"effect":"melee.quenching.quenching_rotate_b"}}},"melee_2_1":{"loop":true,"animation_length":4.0417,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-27.172,151.497,-88.367],"0.04":[-26.942,151.432,-88.052],"0.08":[-26.702,151.611,-87.832],"0.12":[-26.573,151.688,-87.611],"0.17":[-26.242,153.742,-88.137],"0.21":[-25.65,160.81,-90.649],"0.25":[-24.783,169.685,-93.926],"0.29":[-23.001,179.023,-97.518],"0.33":[-21.341,186.455,-100.748],"0.38":[-20.639,187.791,-101.755],"0.42":[-20.409,186.753,-101.684],"0.46":[-20.503,185.771,-101.42],"0.5":[-21.042,184.642,-100.68],"0.54":[-22.17,184.089,-99.514],"0.58":[-23.744,183.56,-97.901],"0.62":[-25.704,182.681,-95.815],"0.67":[-27.921,181.522,-93.487],"0.71":[-30.265,180.182,-90.979],"0.75":[-32.653,178.748,-88.47],"0.79":[-35.004,177.411,-86.046],"0.83":[-37.311,176.385,-83.811],"0.88":[-39.471,175.766,-81.861],"0.92":[-41.505,175.786,-80.238],"0.96":[-43.333,176.67,-79.065],"1.0":[-44.993,178.134,-78.117],"1.04":[-46.556,180.103,-77.263],"1.08":[-48.036,182.489,-76.47],"1.12":[-49.471,185.195,-75.698],"1.17":[-50.888,188.179,-74.923],"1.21":[-52.308,191.368,-74.13],"1.25":[-53.777,194.708,-73.29],"1.29":[-55.305,198.126,-72.381],"1.33":[-56.954,201.558,-71.371],"1.38":[-58.731,204.932,-70.237],"1.42":[-60.701,208.179,-68.944],"1.46":[-62.874,211.223,-67.473],"1.5":[-65.299,213.99,-65.794],"1.54":[-67.979,216.396,-63.906],"1.58":[-70.922,218.371,-61.811],"1.62":[-74.099,219.824,-59.551],"1.67":[-77.442,220.691,-57.194],"1.71":[-80.76,221.201,-54.915],"1.75":[-84.262,220.381,-52.618],"1.79":[-87.074,218.269,-51.779],"1.83":[-90.913,211.199,-50.219],"1.88":[-94.916,193.339,-50.743],"1.92":[-98.404,175.376,-57.182],"1.96":[-102.618,161.019,-62.47],"2.0":[-105.77,150.494,-67.872],"2.04":[-106.528,147.544,-71.139],"2.08":[-105.961,147.211,-72.588],"2.12":[-105.155,147.024,-74.437],"2.17":[-103.796,147.598,-75.965],"2.21":[-102.008,148.753,-77.195],"2.25":[-99.832,150.389,-78.279],"2.29":[-97.449,152.304,-79.173],"2.33":[-94.925,154.405,-80.08],"2.38":[-92.364,156.51,-80.894],"2.42":[-89.898,158.483,-81.752],"2.46":[-87.56,160.178,-82.623],"2.5":[-85.481,161.465,-83.385],"2.54":[-83.757,162.144,-84.125],"2.58":[-82.328,162.376,-84.436],"2.62":[-81.199,162.244,-83.952],"2.67":[-80.19,161.941,-83.067],"2.71":[-79.23,161.594,-81.994],"2.75":[-78.167,161.381,-80.895],"2.79":[-76.883,161.442,-80.231],"2.83":[-75.44,161.745,-79.796],"2.88":[-73.735,162.399,-79.463],"2.92":[-71.999,163.069,-79.337],"2.96":[-70.402,163.572,-79.324],"3.0":[-69.039,163.715,-79.735],"3.04":[-68.182,163.114,-81.113],"3.08":[-67.577,162.127,-82.621],"3.12":[-67.105,161.013,-83.852],"3.17":[-66.622,159.958,-84.181],"3.21":[-65.806,159.339,-82.546],"3.25":[-64.86,158.94,-79.969],"3.29":[-63.892,158.624,-76.917],"3.33":[-62.944,158.296,-73.927],"3.38":[-62.176,157.796,-71.76],"3.42":[-61.485,157.176,-69.966],"3.46":[-60.801,156.413,-68.363],"3.5":[-60.159,155.587,-66.956],"3.54":[-59.55,154.759,-65.681],"3.58":[-59.013,153.977,-64.597],"3.62":[-58.583,153.311,-63.744],"3.67":[-58.269,152.753,-63.131],"3.71":[-58.104,152.337,-62.801],"3.75":[-58.052,152.006,-62.694],"3.79":[-58.094,151.721,-62.779],"3.83":[-58.208,151.477,-63.005],"3.88":[-58.372,151.262,-63.327],"3.92":[-58.561,151.061,-63.697],"3.96":[-58.746,150.858,-64.056],"4.0":[-58.92,150.648,-64.395],"4.04":[-59.042,150.407,-64.628]},"position":{"0.0":[9.061,31.125,-7.481],"0.04":[8.983,31.211,-7.492],"0.08":[8.918,31.284,-7.5],"0.12":[8.853,31.362,-7.501],"0.17":[8.886,31.328,-7.505],"0.21":[9.176,31.022,-7.496],"0.25":[9.557,30.616,-7.516],"0.29":[9.921,30.16,-7.644],"0.33":[10.223,29.787,-7.792],"0.38":[10.301,29.701,-7.936],"0.42":[10.278,29.732,-8.042],"0.46":[10.251,29.778,-8.078],"0.5":[10.196,29.846,-7.979],"0.54":[10.117,29.925,-7.671],"0.58":[9.999,30.024,-7.184],"0.62":[9.806,30.168,-6.498],"0.67":[9.568,30.351,-5.708],"0.71":[9.302,30.535,-4.846],"0.75":[9.019,30.732,-3.987],"0.79":[8.758,30.898,-3.174],"0.83":[8.535,31.037,-2.459],"0.88":[8.389,31.122,-1.907],"0.92":[8.331,31.143,-1.534],"0.96":[8.41,31.082,-1.435],"1.0":[8.555,30.968,-1.498],"1.04":[8.698,30.846,-1.64],"1.08":[8.855,30.707,-1.867],"1.12":[9.015,30.56,-2.151],"1.17":[9.186,30.402,-2.493],"1.21":[9.371,30.233,-2.889],"1.25":[9.573,30.052,-3.331],"1.29":[9.795,29.86,-3.813],"1.33":[10.041,29.656,-4.326],"1.38":[10.313,29.441,-4.865],"1.42":[10.613,29.215,-5.418],"1.46":[10.947,28.978,-5.978],"1.5":[11.314,28.733,-6.536],"1.54":[11.721,28.481,-7.08],"1.58":[12.167,28.224,-7.603],"1.62":[12.658,27.964,-8.093],"1.67":[13.193,27.703,-8.542],"1.71":[13.737,27.468,-8.963],"1.75":[14.412,27.189,-9.279],"1.79":[15.231,26.899,-9.33],"1.83":[16.638,26.468,-9.323],"1.88":[19.369,25.605,-8.901],"1.92":[22.116,24.678,-8.103],"1.96":[24.26,24.034,-8.129],"2.0":[25.71,23.945,-8.464],"2.04":[25.933,24.41,-8.996],"2.08":[25.644,25.126,-9.732],"2.12":[25.312,25.91,-10.445],"2.17":[24.817,26.796,-11.187],"2.21":[24.194,27.762,-11.962],"2.25":[23.466,28.781,-12.741],"2.29":[22.672,29.838,-13.537],"2.33":[21.835,30.898,-14.319],"2.38":[20.994,31.946,-15.094],"2.42":[20.166,32.949,-15.834],"2.46":[19.402,33.885,-16.54],"2.5":[18.704,34.719,-17.168],"2.54":[18.136,35.4,-17.711],"2.58":[17.655,35.889,-18.096],"2.62":[17.241,36.048,-18.222],"2.67":[16.894,36.02,-18.211],"2.71":[16.583,35.9,-18.102],"2.75":[16.306,35.763,-17.951],"2.79":[16.05,35.759,-17.86],"2.83":[15.832,35.807,-17.765],"2.88":[15.669,35.876,-17.615],"2.92":[15.547,35.962,-17.452],"2.96":[15.452,36.036,-17.306],"3.0":[15.396,36.112,-17.183],"3.04":[15.395,36.194,-17.106],"3.08":[15.432,36.267,-17.067],"3.12":[15.497,36.327,-17.058],"3.17":[15.572,36.354,-17.094],"3.21":[15.629,36.323,-17.2],"3.25":[15.678,36.266,-17.342],"3.29":[15.725,36.191,-17.505],"3.33":[15.765,36.123,-17.651],"3.38":[15.787,36.088,-17.735],"3.42":[15.798,36.072,-17.782],"3.46":[15.8,36.072,-17.796],"3.5":[15.797,36.083,-17.79],"3.54":[15.789,36.098,-17.776],"3.58":[15.779,36.113,-17.761],"3.62":[15.769,36.122,-17.755],"3.67":[15.76,36.125,-17.757],"3.71":[15.754,36.118,-17.772],"3.75":[15.748,36.107,-17.792],"3.79":[15.742,36.092,-17.814],"3.83":[15.737,36.076,-17.837],"3.88":[15.732,36.057,-17.861],"3.92":[15.727,36.038,-17.886],"3.96":[15.721,36.02,-17.91],"4.0":[15.716,36.001,-17.935],"4.04":[15.711,35.984,-17.958]}},"righthand":{"rotation":{"0.0":[-150.198,-1.745,-115.518],"0.04":[-157.472,-2.849,-111.306],"0.08":[-164.84,-4.209,-105.855],"0.12":[-174.885,-6.653,-100.016],"0.17":[-183.496,-5.05,-93.109],"0.21":[-191.117,0.824,-91.025],"0.25":[-195.711,-10.881,-92.871],"0.29":[-195.487,-19.605,-91.61],"0.33":[-195.522,-16.782,-92.783],"0.38":[-197.755,-15.793,-92.752],"0.42":[-200.507,-16.287,-91.015],"0.46":[-201.596,-15.456,-87.746],"0.5":[-201.099,-13.939,-86.083],"0.54":[-195.987,-7.059,-91.635],"0.58":[-190.06,-0.766,-97.113],"0.62":[-186.998,-2.525,-98.026],"0.67":[-181.806,-5.698,-99.101],"0.71":[-177.079,-6.782,-103.406],"0.75":[-174.983,-7.277,-107.552],"0.79":[-173.624,-6.66,-108.73],"0.83":[-172.356,-5.822,-108.731],"0.88":[-170.871,-5.179,-109.199],"0.92":[-169.299,-4.569,-109.59],"0.96":[-167.671,-3.985,-109.908],"1.0":[-166.01,-3.413,-110.154],"1.04":[-164.34,-2.841,-110.333],"1.08":[-162.688,-2.256,-110.445],"1.12":[-161.079,-1.647,-110.494],"1.17":[-159.537,-1.002,-110.481],"1.21":[-158.09,-0.309,-110.412],"1.25":[-156.763,0.446,-110.283],"1.29":[-155.576,1.275,-110.103],"1.33":[-154.559,2.193,-109.869],"1.38":[-153.735,3.211,-109.594],"1.42":[-153.127,4.351,-109.274],"1.46":[-152.76,5.618,-108.926],"1.5":[-152.659,7.04,-108.551],"1.54":[-152.848,8.622,-108.174],"1.58":[-153.354,10.388,-107.8],"1.62":[-154.205,12.352,-107.464],"1.67":[-155.437,14.522,-107.182],"1.71":[-154.889,15.718,-108.269],"1.75":[-159.202,19.54,-106.971],"1.79":[-182.307,32.419,-111.011],"1.83":[-215.946,43.891,-126.666],"1.88":[-259.881,48.642,-143.403],"1.92":[-286.17,31.229,-150.674],"1.96":[-274.611,25.406,-141.49],"2.0":[-252.37,23.068,-124.678],"2.04":[-247.325,19.994,-122.663],"2.08":[-246.93,18.167,-125.663],"2.12":[-245.316,16.623,-127.875],"2.17":[-244.229,15.623,-130.985],"2.21":[-243.377,15.049,-134.639],"2.25":[-242.675,14.866,-138.814],"2.29":[-241.862,14.956,-143.228],"2.33":[-241.12,15.419,-148.262],"2.38":[-240.543,16.336,-154.408],"2.42":[-240.317,17.602,-161.124],"2.46":[-240.635,19.123,-168.205],"2.5":[-241.562,20.754,-175.243],"2.54":[-242.947,22.161,-181.94],"2.58":[-245.441,23.66,-187.738],"2.62":[-250.123,25.253,-191.717],"2.67":[-255.805,26.48,-194.957],"2.71":[-262.262,27.753,-197.865],"2.75":[-267.704,27.72,-201.366],"2.79":[-269.673,25.701,-207.323],"2.83":[-268.244,23.859,-212.317],"2.88":[-262.391,22.932,-212.72],"2.92":[-255.503,22.258,-211.687],"2.96":[-248.995,22.312,-210.281],"3.0":[-243.605,23.11,-207.76],"3.04":[-241.475,26.86,-203.852],"3.08":[-240.03,31.923,-199.371],"3.12":[-238.467,36.258,-194.34],"3.17":[-237.408,40.074,-189.678],"3.21":[-236.02,41.006,-186.406],"3.25":[-234.837,40.45,-183.915],"3.29":[-234.043,39.544,-181.825],"3.33":[-233.327,38.345,-180.095],"3.38":[-232.394,37.308,-178.589],"3.42":[-231.132,36.367,-177.262],"3.46":[-229.292,35.733,-175.938],"3.5":[-227.135,35.193,-174.704],"3.54":[-224.774,34.573,-173.609],"3.58":[-222.362,33.95,-172.675],"3.62":[-220.037,33.361,-171.92],"3.67":[-217.926,32.829,-171.356],"3.71":[-216.182,32.384,-170.96],"3.75":[-214.876,32.091,-170.836],"3.79":[-214.189,32.035,-171.126],"3.83":[-213.939,32.166,-171.718],"3.88":[-214.076,32.48,-172.642],"3.92":[-214.433,32.863,-173.667],"3.96":[-214.841,33.206,-174.56],"4.0":[-215.25,33.503,-175.327],"4.04":[-215.41,33.611,-175.603]},"position":{"0.0":[3.653,35.678,-1.045],"0.04":[2.889,35.712,-0.308],"0.08":[1.972,35.672,0.252],"0.12":[0.777,35.919,0.858],"0.17":[-0.217,36.124,0.442],"0.21":[-1.602,36.296,-3.189],"0.25":[-3.039,38.448,-8.322],"0.29":[-3.264,40.931,-15.291],"0.33":[-6.316,41.996,-19.938],"0.38":[-6.532,42.273,-19.915],"0.42":[-5.436,42.206,-18.57],"0.46":[-5.031,41.86,-17.12],"0.5":[-4.771,41.109,-14.96],"0.54":[-4.378,40.131,-11.524],"0.58":[-4.345,39.214,-7.632],"0.62":[-4.498,37.945,-4.152],"0.67":[-4.882,37.395,-1.159],"0.71":[-5.32,36.916,0.057],"0.75":[-5.587,36.361,0.457],"0.79":[-5.748,36.206,0.582],"0.83":[-5.835,36.12,0.495],"0.88":[-5.945,36.032,0.498],"0.92":[-6.047,35.961,0.49],"0.96":[-6.14,35.906,0.471],"1.0":[-6.226,35.864,0.44],"1.04":[-6.305,35.831,0.398],"1.08":[-6.379,35.805,0.344],"1.12":[-6.448,35.783,0.277],"1.17":[-6.514,35.762,0.197],"1.21":[-6.578,35.739,0.104],"1.25":[-6.642,35.711,-0.003],"1.29":[-6.708,35.674,-0.124],"1.33":[-6.776,35.626,-0.259],"1.38":[-6.849,35.564,-0.41],"1.42":[-6.928,35.485,-0.577],"1.46":[-7.016,35.385,-0.761],"1.5":[-7.112,35.262,-0.962],"1.54":[-7.221,35.115,-1.18],"1.58":[-7.341,34.94,-1.415],"1.62":[-7.476,34.736,-1.667],"1.67":[-7.624,34.502,-1.937],"1.71":[-7.836,34.394,-2.086],"1.75":[-7.969,33.941,-2.527],"1.79":[-8.153,32.423,-3.732],"1.83":[-8.727,30.84,-5.578],"1.88":[-8.854,30.729,-8.8],"1.92":[-9.372,32.522,-11.948],"1.96":[-11.597,35.519,-12.831],"2.0":[-12.637,38.841,-12.321],"2.04":[-13.064,39.949,-12.391],"2.08":[-13.601,40.182,-12.686],"2.12":[-13.874,40.416,-12.763],"2.17":[-14.053,40.459,-12.813],"2.21":[-14.185,40.428,-12.837],"2.25":[-14.274,40.378,-12.862],"2.29":[-14.389,40.435,-12.919],"2.33":[-14.488,40.496,-12.983],"2.38":[-14.523,40.488,-13.039],"2.42":[-14.516,40.461,-13.086],"2.46":[-14.472,40.425,-13.119],"2.5":[-14.415,40.422,-13.14],"2.54":[-14.363,40.468,-13.15],"2.58":[-14.375,40.619,-13.154],"2.62":[-14.523,40.971,-13.146],"2.67":[-14.719,41.41,-13.136],"2.71":[-14.957,41.903,-13.162],"2.75":[-15.082,42.33,-13.17],"2.79":[-14.935,42.503,-13.127],"2.83":[-14.666,42.519,-13.078],"2.88":[-14.329,42.421,-13.044],"2.92":[-13.985,42.215,-13.033],"2.96":[-13.68,41.971,-13.064],"3.0":[-13.489,41.536,-13.137],"3.04":[-13.522,40.691,-13.236],"3.08":[-13.681,39.84,-13.308],"3.12":[-13.887,39.089,-13.412],"3.17":[-13.969,38.445,-13.471],"3.21":[-13.988,38.237,-13.445],"3.25":[-14,38.238,-13.386],"3.29":[-13.99,38.31,-13.296],"3.33":[-13.971,38.437,-13.201],"3.38":[-13.945,38.555,-13.132],"3.42":[-13.921,38.676,-13.09],"3.46":[-13.895,38.766,-13.091],"3.5":[-13.863,38.852,-13.119],"3.54":[-13.826,38.958,-13.161],"3.58":[-13.788,39.071,-13.215],"3.62":[-13.75,39.187,-13.276],"3.67":[-13.714,39.299,-13.335],"3.71":[-13.683,39.399,-13.386],"3.75":[-13.657,39.487,-13.425],"3.79":[-13.639,39.559,-13.446],"3.83":[-13.626,39.618,-13.456],"3.88":[-13.616,39.669,-13.457],"3.92":[-13.611,39.708,-13.453],"3.96":[-13.608,39.736,-13.446],"4.0":[-13.606,39.755,-13.439],"4.04":[-13.606,39.761,-13.436]}},"weapon":{"rotation":{"0.0":[-120.983,10.15,63.367],"0.04":[-113.815,11.424,69.089],"0.08":[-106.067,12.62,75.228],"0.12":[-96.36,14.011,84.219],"0.17":[-86.986,12.666,90.667],"0.21":[-79.379,14.226,92.275],"0.25":[-74.011,17.502,92.596],"0.29":[-73.285,20.792,92.812],"0.33":[-73.594,23.393,92.877],"0.38":[-71.04,23.392,93.749],"0.42":[-68.491,22.405,95.211],"0.46":[-67.034,21.662,99.308],"0.5":[-68.156,20.009,100.109],"0.54":[-74.512,14.829,91.365],"0.58":[-80.096,7.915,87.461],"0.62":[-82.859,9.411,86.305],"0.67":[-84.882,13.419,84.454],"0.71":[-86.87,15.328,79.926],"0.75":[-88.557,15.363,75.058],"0.79":[-89.681,14.691,73.678],"0.83":[-90.754,14.016,73.48],"0.88":[-92.264,13.428,72.787],"0.92":[-93.926,12.872,72.157],"0.96":[-95.605,12.335,71.598],"1.0":[-97.315,11.8,71.097],"1.04":[-99.027,11.262,70.672],"1.08":[-100.716,10.703,70.311],"1.12":[-102.358,10.113,70.018],"1.17":[-103.928,9.475,69.799],"1.21":[-105.396,8.789,69.652],"1.25":[-106.738,8.032,69.584],"1.29":[-107.932,7.199,69.589],"1.33":[-108.947,6.273,69.67],"1.38":[-109.765,5.247,69.831],"1.42":[-110.363,4.103,70.057],"1.46":[-110.712,2.826,70.358],"1.5":[-110.795,1.408,70.712],"1.54":[-110.586,-0.183,71.126],"1.58":[-110.069,-1.932,71.565],"1.62":[-109.21,-3.903,72.034],"1.67":[-107.994,-6.05,72.487],"1.71":[-108.952,-7.602,74.098],"1.75":[-104.349,-11.065,73.26],"1.79":[-84.995,-22.804,68.314],"1.83":[-53.71,-39.039,62.626],"1.88":[-4.089,-50.639,45.381],"1.92":[55.89,-52.348,13.557],"1.96":[101.002,-32.707,-19.255],"2.0":[115.583,-22.599,-35.882],"2.04":[125.148,-57.184,-48.825],"2.08":[44.922,-115.657,15.357],"2.12":[64.326,-136.997,-11.765],"2.17":[73.548,-155.569,-25.259],"2.21":[76.283,-178.118,-35.023],"2.25":[75.32,-197.742,-44.673],"2.29":[72.512,-218.149,-54.254],"2.33":[62.342,-237.883,-73.503],"2.38":[28.947,-252.758,-115.354],"2.42":[-35.462,-249.809,-189.554],"2.46":[-57.922,-234.103,-222.621],"2.5":[-65.198,-216.816,-240.809],"2.54":[-67.222,-199.632,-254.539],"2.58":[-66.881,-183.947,-266.839],"2.62":[-64.181,-170.868,-277.261],"2.67":[-60.446,-158.748,-287.111],"2.71":[-53.99,-148.428,-299.435],"2.75":[-47.541,-138.4,-313.411],"2.79":[-38.123,-123.094,-331.21],"2.83":[-20.188,-106.695,-355.266],"2.88":[-20.335,-85.473,-361.308],"2.92":[-24.596,-66.508,-363.648],"2.96":[-38.631,-62.373,-352.095],"3.0":[-51.438,-61.937,-340.024],"3.04":[-55.953,-60.502,-334.777],"3.08":[-55.152,-58.675,-334.337],"3.12":[-47.802,-54.095,-341.174],"3.17":[-40.942,-48.217,-347.964],"3.21":[-37.207,-42.611,-351.706],"3.25":[-35.329,-38.083,-353.39],"3.29":[-35.444,-36.45,-352.093],"3.33":[-36.293,-35.802,-349.949],"3.38":[-36.965,-34.638,-348.643],"3.42":[-37.965,-33.551,-347.498],"3.46":[-39.583,-32.68,-346.367],"3.5":[-41.534,-31.855,-345.349],"3.54":[-43.653,-30.929,-344.501],"3.58":[-45.826,-30.006,-343.82],"3.62":[-47.926,-29.126,-343.32],"3.67":[-49.829,-28.343,-342.991],"3.71":[-51.406,-27.692,-342.794],"3.75":[-52.588,-27.246,-342.821],"3.79":[-53.232,-27.112,-343.182],"3.83":[-53.49,-27.209,-343.789],"3.88":[-53.413,-27.536,-344.679],"3.92":[-53.127,-27.958,-345.642],"3.96":[-52.806,-28.344,-346.464],"4.0":[-52.467,-28.688,-347.166],"4.04":[-52.334,-28.813,-347.418]},"position":{"0.0":[12.062,50.1,0.616],"0.04":[11.433,49.918,1.029],"0.08":[10.711,49.768,1.271],"0.12":[9.753,49.563,1.558],"0.17":[8.611,49.701,0.581],"0.21":[7.277,50.675,-3.464],"0.25":[5.795,52.106,-8.885],"0.29":[3.927,54.04,-15.404],"0.33":[2.514,55.696,-20.597],"0.38":[2.684,56.098,-20.982],"0.42":[3.337,55.882,-19.452],"0.46":[3.636,55.31,-18.076],"0.5":[3.909,54.527,-15.831],"0.54":[4.302,53.801,-11.976],"0.58":[4.534,53.026,-7.724],"0.62":[4.268,52.105,-3.938],"0.67":[3.814,51.284,-0.927],"0.71":[3.352,50.836,0.43],"0.75":[2.943,50.582,0.961],"0.79":[2.748,50.446,1.154],"0.83":[2.632,50.384,1.13],"0.88":[2.499,50.312,1.202],"0.92":[2.375,50.253,1.265],"0.96":[2.255,50.206,1.319],"1.0":[2.14,50.168,1.361],"1.04":[2.024,50.138,1.391],"1.08":[1.918,50.113,1.406],"1.12":[1.811,50.091,1.408],"1.17":[1.709,50.07,1.395],"1.21":[1.607,50.047,1.364],"1.25":[1.505,50.021,1.314],"1.29":[1.403,49.987,1.247],"1.33":[1.296,49.945,1.161],"1.38":[1.194,49.894,1.051],"1.42":[1.087,49.829,0.921],"1.46":[0.976,49.748,0.767],"1.5":[0.862,49.652,0.591],"1.54":[0.743,49.536,0.388],"1.58":[0.62,49.401,0.158],"1.62":[0.491,49.242,-0.099],"1.67":[0.356,49.061,-0.383],"1.71":[0.21,49.007,-0.46],"1.75":[0.07,48.623,-1.051],"1.79":[-0.168,47.026,-2.774],"1.83":[-0.141,45.642,-5.684],"1.88":[0.854,45.749,-10.975],"1.92":[1.693,46.898,-15.852],"1.96":[1.136,49.403,-17.377],"2.0":[0.24,52.243,-17.147],"2.04":[-0.103,54.541,-15.396],"2.08":[-0.641,56.157,-13.271],"2.12":[-2.081,56.405,-12.138],"2.17":[-3.669,56.005,-11.579],"2.21":[-4.823,55.446,-11.729],"2.25":[-5.747,54.735,-12.285],"2.29":[-6.542,53.927,-12.94],"2.33":[-6.958,53.338,-13.806],"2.38":[-6.64,53.41,-14.99],"2.42":[-6.043,53.826,-16.208],"2.46":[-5.541,54.331,-17.235],"2.5":[-5.02,55.172,-18.009],"2.54":[-4.391,56.666,-18.337],"2.58":[-3.949,58.365,-18.367],"2.62":[-4.019,60.014,-18.146],"2.67":[-4.388,61.335,-17.787],"2.71":[-4.979,61.84,-17.46],"2.75":[-5.687,61.907,-17.035],"2.79":[-6.463,61.776,-16.372],"2.83":[-7.084,61.388,-15.659],"2.88":[-7.223,60.731,-14.983],"2.92":[-7.14,59.925,-14.489],"2.96":[-6.968,59.083,-14.471],"3.0":[-6.764,58.216,-14.576],"3.04":[-6.65,57.367,-14.5],"3.08":[-6.57,56.539,-14.395],"3.12":[-6.509,55.69,-14.316],"3.17":[-6.459,55.015,-14.241],"3.21":[-6.402,54.763,-14.162],"3.25":[-6.347,54.717,-14.083],"3.29":[-6.294,54.745,-14.001],"3.33":[-6.245,54.841,-13.926],"3.38":[-6.204,54.944,-13.863],"3.42":[-6.168,55.054,-13.816],"3.46":[-6.138,55.15,-13.785],"3.5":[-6.111,55.255,-13.767],"3.54":[-6.087,55.387,-13.758],"3.58":[-6.066,55.528,-13.756],"3.62":[-6.047,55.674,-13.759],"3.67":[-6.033,55.812,-13.765],"3.71":[-6.021,55.935,-13.769],"3.75":[-6.016,56.046,-13.772],"3.79":[-6.021,56.139,-13.772],"3.83":[-6.033,56.22,-13.77],"3.88":[-6.053,56.291,-13.769],"3.92":[-6.076,56.354,-13.768],"3.96":[-6.097,56.396,-13.767],"4.0":[-6.115,56.429,-13.766],"4.04":[-6.121,56.438,-13.766]}},"lefthand_1":{"position":[0,1,-1],"scale":[1,1.5,1]},"righthand_1":{"position":[0,1.75,-0.25],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0,0,0.002],"0.04":[0.035,-0.044,-0.027],"0.08":[0.102,-0.131,-0.083],"0.12":[0.197,-0.253,-0.161],"0.17":[0.26,-0.333,-0.211],"0.21":[0.233,-0.25,-0.211],"0.25":[0.163,-0.105,-0.21],"0.29":[0.047,0.059,0.489],"0.33":[-0.068,0.163,1.463],"0.38":[-0.143,0.158,1.886],"0.42":[-0.199,0.142,2.027],"0.46":[-0.258,0.117,0.63],"0.5":[-0.29,0.069,-1.114],"0.54":[-0.29,-0.013,-1.523],"0.58":[-0.286,-0.144,-1.579],"0.62":[-0.26,-0.373,-1.07],"0.67":[-0.222,-0.611,-0.294],"0.71":[-0.191,-0.793,0.255],"0.75":[-0.158,-0.881,0.544],"0.79":[-0.121,-0.841,0.446],"0.83":[-0.086,-0.752,0.255],"0.88":[-0.048,-0.629,0.011],"0.92":[-0.017,-0.506,-0.199],"0.96":[0.001,-0.424,-0.265],"1.0":[0.014,-0.363,-0.272],"1.04":[0.022,-0.295,-0.252],"1.08":[0.026,-0.233,-0.212],"1.12":[0.03,-0.179,-0.166],"1.17":[0.032,-0.124,-0.12],"1.21":[0.034,-0.083,-0.074],"1.25":[0.036,-0.049,-0.035],"1.29":[0.04,-0.028,-0.009],"1.33":[0.044,-0.015,-0.002],"1.38":[0.051,-0.015,-0.002],"1.42":[0.064,-0.017,0],"1.46":[0.071,-0.017,0],"1.5":[0.085,-0.017,0],"1.54":[0.093,-0.017,0],"1.58":[0.107,-0.017,0],"1.62":[0.114,-0.017,0],"1.67":[0.129,-0.017,0],"1.71":[0.136,-0.017,0],"1.75":[0.136,-0.017,0],"1.79":[0.136,-0.016,0],"1.83":[0.122,-0.015,-0.009],"1.88":[0.078,-0.011,-0.042],"1.92":[0.006,-0.002,-0.085],"1.96":[-0.081,0.007,-0.141],"2.0":[-0.19,0.02,-0.207],"2.04":[-0.306,0.034,-0.273],"2.08":[-0.421,0.049,-0.343],"2.12":[-0.541,0.064,-0.406],"2.17":[-0.656,0.081,-0.462],"2.21":[-0.757,0.096,-0.513],"2.25":[-0.846,0.113,-0.536],"2.29":[-0.915,0.127,-0.536],"2.33":[-0.966,0.143,-0.514],"2.38":[-1.009,0.162,-0.424],"2.42":[-1.046,0.184,-0.283],"2.46":[-1.075,0.206,-0.113],"2.5":[-1.097,0.228,0.079],"2.54":[-1.114,0.249,0.277],"2.58":[-1.125,0.268,0.469],"2.62":[-1.133,0.285,0.638],"2.67":[-1.139,0.298,0.78],"2.71":[-1.141,0.307,0.87],"2.75":[-1.136,0.309,0.901],"2.79":[-1.06,0.297,0.8],"2.83":[-0.898,0.271,0.577],"2.88":[-0.659,0.234,0.274],"2.92":[-0.399,0.191,-0.029],"2.96":[-0.182,0.152,-0.252],"3.0":[0.003,0.119,-0.363],"3.04":[0.101,0.093,-0.312],"3.08":[0.166,0.07,-0.221],"3.12":[0.199,0.046,-0.089],"3.17":[0.221,0.028,0.032],"3.21":[0.232,0.012,0.134],"3.25":[0.231,-0.001,0.174],"3.29":[0.221,-0.009,0.164],"3.33":[0.199,-0.016,0.144],"3.38":[0.166,-0.021,0.113],"3.42":[0.127,-0.025,0.083],"3.46":[0.084,-0.028,0.042],"3.5":[0.042,-0.028,0.01],"3.54":[0.01,-0.03,-0.021],"3.58":[-0.022,-0.03,-0.041],"3.62":[-0.022,-0.03,-0.052],"3.67":[-0.022,-0.028,-0.052],"3.71":[-0.022,-0.028,-0.041],"3.75":[-0.022,-0.022,-0.041],"3.79":[-0.011,-0.019,-0.031],"3.83":[-0.011,-0.014,-0.021],"3.88":[-0.011,-0.011,-0.021],"3.92":[-0.001,-0.005,-0.01],"3.96":[-0.001,-0.003,-0.01],"4.0":[-0.001,0,0],"4.04":[-0.001,0,0]}}}},"melee_3":{"loop":"hold_on_last_frame","animation_length":2.1667,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[136.665,3.395,100.96],"0.0167":[129.172,1.784,102.778],"0.0333":[126.899,3.687,102.577],"0.05":[143.763,18.985,99.733],"0.0667":[167.486,29.899,105.904],"0.0833":[174.346,32.064,109.057],"0.1":[173.797,32.67,108.979],"0.1167":[171.823,31.846,108.171],"0.1333":[167.482,29.902,105.911],"0.15":[162.005,27.493,102.387],"0.1667":[155.673,24.544,98.258],"0.1833":[148.846,20.609,94.292],"0.2":[142.26,15.874,90.739],"0.2167":[136.578,10.485,87.49],"0.2333":[131.281,5.326,85.061],"0.25":[127.371,0.368,82.95],"0.2667":[124.855,-5.39,80.531],"0.2833":[122.767,-11.799,77.869],"0.3":[121.091,-18.42,75.084],"0.3167":[120.084,-25.402,72.106],"0.3333":[119.643,-32.299,68.954],"0.35":[119.696,-38.848,65.769],"0.3667":[120.108,-44.76,62.675],"0.3833":[120.585,-49.784,59.92],"0.4":[120.718,-53.732,58.056],"0.4167":[119.681,-56.124,57.891],"0.4333":[117.563,-57.351,59.203],"0.45":[114.377,-57.609,62.321],"0.4667":[110.701,-57.21,66.276],"0.4833":[107.053,-56.627,70.142],"0.5":[103.418,-55.692,74.057],"0.5167":[99.902,-54.41,77.899],"0.5333":[96.59,-52.797,81.577],"0.55":[93.543,-50.871,85.016],"0.5667":[90.789,-48.661,88.183],"0.5833":[88.338,-46.194,91.059],"0.6":[86.181,-43.501,93.644],"0.6167":[84.299,-40.611,95.953],"0.6333":[82.668,-37.553,98.003],"0.65":[81.261,-34.352,99.818],"0.6667":[80.052,-31.035,101.42],"0.6833":[79.013,-27.625,102.833],"0.7":[78.124,-24.146,104.075],"0.7167":[77.36,-20.617,105.168],"0.7333":[76.708,-17.06,106.127],"0.75":[76.147,-13.493,106.968],"0.7667":[75.668,-9.937,107.702],"0.7833":[75.257,-6.408,108.344],"0.8":[74.907,-2.924,108.903],"0.8167":[74.609,0.498,109.39],"0.8333":[74.36,3.842,109.812],"0.85":[74.153,7.091,110.178],"0.8667":[73.988,10.23,110.497],"0.8833":[73.862,13.242,110.775],"0.9":[73.777,16.114,111.019],"0.9167":[73.733,18.827,111.237],"0.9333":[73.732,21.369,111.435],"0.95":[73.778,23.722,111.618],"0.9667":[73.873,25.874,111.792],"0.9833":[73.974,27.865,111.97],"1.0":[74.23,29.506,112.128],"1.0167":[74.765,30.614,112.25],"1.0333":[75.601,31.178,112.329],"1.05":[76.86,31.036,112.291],"1.0667":[78.391,30.374,112.086],"1.0833":[80.111,29.296,111.647],"1.1":[81.956,27.908,110.912],"1.1167":[83.843,26.339,109.863],"1.1333":[85.741,24.682,108.482],"1.15":[87.586,23.066,106.822],"1.1667":[89.365,21.562,104.926],"1.1833":[91.028,20.263,102.901],"1.2":[92.569,19.207,100.844],"1.2167":[93.957,18.445,98.882],"1.2333":[95.198,17.973,97.18],"1.25":[96.268,17.833,95.902],"1.2667":[97.234,17.906,95.196],"1.2833":[98.152,18.127,95.324],"1.3":[99.055,18.398,95.984],"1.3167":[99.978,18.626,97.003],"1.3333":[100.948,18.765,98.137],"1.35":[101.971,18.777,99.056],"1.3667":[103.058,18.618,99.8],"1.3833":[104.252,18.215,100.248],"1.4":[105.514,17.688,100.522],"1.4167":[106.844,17.082,100.75],"1.4333":[108.21,16.556,100.808],"1.45":[109.598,16.16,100.858],"1.4667":[110.961,16.285,100.265],"1.4833":[112.227,17.905,97.568],"1.5":[113.379,20.042,95.82],"1.5167":[114.549,20.876,98.036],"1.5333":[115.712,21.231,101.587],"1.55":[116.79,21.634,105.068],"1.5667":[117.837,22.169,108.347],"1.5833":[118.818,23.174,110.776],"1.6":[119.731,24.343,112.781],"1.6167":[120.612,25.536,114.628],"1.6333":[121.331,26.585,116.066],"1.65":[121.708,27.208,116.833],"1.6667":[121.89,27.623,117.215],"1.6833":[121.982,27.946,117.416],"1.7":[121.987,28.186,117.444],"1.7167":[121.946,28.394,117.372],"1.7333":[121.859,28.566,117.206],"1.75":[121.738,28.714,116.969],"1.7667":[121.594,28.845,116.683],"1.7833":[121.439,28.97,116.374],"1.8":[121.286,29.1,116.065],"1.8167":[121.144,29.254,115.773],"1.8333":[121.033,29.402,115.54],"1.85":[120.98,29.517,115.423],"1.8667":[120.958,29.593,115.372],"1.8833":[120.954,29.605,115.362],"1.9":[120.958,29.593,115.372],"1.9167":[120.958,29.594,115.372],"2.1667":[120.958,29.594,115.372]},"position":{"0.0":[8.406,31.082,-1.424],"0.0167":[7.977,31.127,-0.794],"0.0333":[7.999,31.071,-1.066],"0.05":[9.001,31.573,-4.676],"0.0667":[8.534,33.672,-8.148],"0.0833":[8.123,34.278,-8.758],"0.1":[8.173,34.17,-8.626],"0.1167":[8.233,34.026,-8.342],"0.1333":[8.534,33.672,-8.148],"0.15":[9.298,33.139,-8.562],"0.1667":[10.324,32.524,-9.216],"0.1833":[11.375,31.845,-9.986],"0.2":[12.498,31.125,-10.725],"0.2167":[13.534,30.393,-11.364],"0.2333":[14.587,29.87,-11.862],"0.25":[15.525,29.471,-11.995],"0.2667":[16.302,29.033,-11.874],"0.2833":[17.064,28.714,-11.638],"0.3":[17.808,28.483,-11.34],"0.3167":[18.516,28.235,-10.989],"0.3333":[19.205,27.971,-10.602],"0.35":[19.892,27.666,-10.188],"0.3667":[20.59,27.317,-9.753],"0.3833":[21.31,26.907,-9.289],"0.4":[22.069,26.444,-8.808],"0.4167":[22.97,25.843,-8.273],"0.4333":[23.733,25.351,-7.778],"0.45":[24.035,25.229,-7.593],"0.4667":[24.183,25.214,-7.529],"0.4833":[24.39,25.141,-7.405],"0.5":[24.584,25.065,-7.281],"0.5167":[24.765,24.985,-7.158],"0.5333":[24.934,24.903,-7.038],"0.55":[25.089,24.818,-6.922],"0.5667":[25.231,24.73,-6.81],"0.5833":[25.361,24.64,-6.704],"0.6":[25.477,24.548,-6.605],"0.6167":[25.581,24.455,-6.513],"0.6333":[25.672,24.361,-6.43],"0.65":[25.752,24.266,-6.357],"0.6667":[25.82,24.173,-6.295],"0.6833":[25.876,24.081,-6.244],"0.7":[25.923,23.991,-6.207],"0.7167":[25.959,23.904,-6.183],"0.7333":[25.986,23.821,-6.173],"0.75":[26.004,23.743,-6.18],"0.7667":[26.015,23.671,-6.202],"0.7833":[26.018,23.606,-6.241],"0.8":[26.015,23.549,-6.298],"0.8167":[26.006,23.502,-6.373],"0.8333":[25.992,23.465,-6.466],"0.85":[25.974,23.44,-6.578],"0.8667":[25.953,23.427,-6.709],"0.8833":[25.928,23.429,-6.86],"0.9":[25.902,23.446,-7.031],"0.9167":[25.873,23.48,-7.221],"0.9333":[25.843,23.532,-7.431],"0.95":[25.811,23.603,-7.66],"0.9667":[25.779,23.695,-7.909],"0.9833":[25.749,23.794,-8.155],"1.0":[25.71,23.945,-8.464],"1.0167":[25.646,24.188,-8.883],"1.0333":[25.545,24.542,-9.427],"1.05":[25.38,25.052,-10.133],"1.0667":[25.144,25.692,-10.941],"1.0833":[24.826,26.448,-11.811],"1.1":[24.417,27.304,-12.704],"1.1167":[23.915,28.239,-13.586],"1.1333":[23.322,29.229,-14.423],"1.15":[22.648,30.248,-15.19],"1.1667":[21.908,31.267,-15.867],"1.1833":[21.125,32.259,-16.441],"1.2":[20.324,33.193,-16.908],"1.2167":[19.537,34.053,-17.271],"1.2333":[18.793,34.8,-17.538],"1.25":[18.138,35.416,-17.722],"1.2667":[17.582,35.857,-17.839],"1.2833":[17.165,36.044,-17.903],"1.3":[16.85,36.076,-17.933],"1.3167":[16.613,35.995,-17.939],"1.3333":[16.422,35.871,-17.925],"1.35":[16.23,35.787,-17.9],"1.3667":[16.05,35.74,-17.855],"1.3833":[15.871,35.767,-17.782],"1.4":[15.715,35.825,-17.686],"1.4167":[15.604,35.881,-17.562],"1.4333":[15.52,35.948,-17.428],"1.45":[15.435,36.018,-17.295],"1.4667":[15.396,36.112,-17.183],"1.4833":[15.464,36.262,-17.102],"1.5":[15.572,36.354,-17.094],"1.5167":[15.646,36.314,-17.243],"1.5333":[15.707,36.233,-17.438],"1.55":[15.755,36.15,-17.61],"1.5667":[15.787,36.084,-17.743],"1.5833":[15.796,36.069,-17.788],"1.6":[15.792,36.079,-17.792],"1.6167":[15.781,36.099,-17.778],"1.6333":[15.77,36.12,-17.758],"1.65":[15.761,36.123,-17.761],"1.6667":[15.755,36.117,-17.771],"1.6833":[15.749,36.109,-17.785],"1.7":[15.743,36.098,-17.801],"1.7167":[15.738,36.086,-17.818],"1.7333":[15.733,36.073,-17.835],"1.75":[15.729,36.06,-17.852],"1.7667":[15.725,36.047,-17.87],"1.7833":[15.722,36.033,-17.888],"1.8":[15.719,36.02,-17.906],"1.8167":[15.716,36.007,-17.925],"1.8333":[15.713,35.995,-17.941],"1.85":[15.712,35.988,-17.952],"1.8667":[15.711,35.984,-17.958],"1.8833":[15.711,35.984,-17.959],"1.9":[15.711,35.984,-17.958],"2.1667":[15.711,35.984,-17.958]}},"righthand":{"rotation":{"0.0":[18.158,157.609,72.851],"0.0167":[32.696,124.887,76.875],"0.0333":[-42.917,140.223,13.987],"0.05":[-43.355,154.406,48.398],"0.0667":[-8.066,164.587,23.527],"0.0833":[-4.854,160.241,3.816],"0.1":[-10.752,155.56,-6.608],"0.1167":[-27.669,151.078,-14.865],"0.1333":[-34.509,143.732,-18.518],"0.15":[-34.355,142.032,-18.174],"0.1667":[-33.993,142.191,-16.812],"0.1833":[-33.601,142.523,-16.482],"0.2":[-33.192,143.183,-16.299],"0.2167":[-32.795,143.675,-16.05],"0.2333":[-32.404,144.177,-15.804],"0.25":[-32.023,144.675,-15.569],"0.2667":[-31.643,145.175,-15.337],"0.2833":[-31.351,145.906,-16.834],"0.3":[-30.903,146.181,-14.891],"0.3167":[-26.362,146.245,0.829],"0.3333":[-16.008,150.107,20.139],"0.35":[-13.199,151.417,25.778],"0.3667":[-13.464,150.864,26.827],"0.3833":[-12.894,150.72,28.2],"0.4":[-12.585,150.373,28.93],"0.4167":[-12.569,149.975,29.593],"0.4333":[-11.88,149.686,30.478],"0.45":[-9.163,149.858,32.293],"0.4667":[-5.069,150.361,34.741],"0.4833":[1.133,151.038,38.692],"0.5":[7.146,153.185,40.586],"0.5167":[8.468,155.738,36.694],"0.5333":[6.489,157.253,31.051],"0.55":[6.113,158.291,25.667],"0.5667":[-3.376,159.905,22.085],"0.5833":[-35.197,158.321,20.875],"0.6":[-58.922,154.016,20.089],"0.6167":[-64.658,152.867,18.655],"0.6333":[-66.393,152.82,17.43],"0.65":[-70.234,152.315,16.025],"0.6667":[-74.138,151.925,14.537],"0.6833":[-78.082,151.602,13.033],"0.7":[-82.055,151.383,11.486],"0.7167":[-86.042,151.252,9.931],"0.7333":[-90.034,151.22,8.364],"0.75":[-94.009,151.281,6.81],"0.7667":[-97.952,151.434,5.268],"0.7833":[-101.851,151.676,3.761],"0.8":[-105.692,152.007,2.292],"0.8167":[-109.46,152.416,0.875],"0.8333":[-113.144,152.901,-0.487],"0.85":[-116.731,153.449,-1.78],"0.8667":[-120.215,154.055,-3.005],"0.8833":[-123.576,154.762,-4.132],"0.9":[-126.837,155.409,-5.227],"0.9167":[-130.473,156.193,-6.859],"0.9333":[-132.9,156.669,-7.334],"0.95":[-133.357,156.427,-6.694],"0.9667":[-129.94,156.203,-6.437],"0.9833":[-120.003,155.586,-2.586],"1.0":[-107.019,155.668,3.029],"1.0167":[-93.066,157.21,8.589],"1.0333":[-79.89,159.473,13.891],"1.05":[-68.721,161.486,19.143],"1.0667":[-58.199,166.055,21.977],"1.0833":[-48.937,170.037,24.309],"1.1":[-41.547,173.18,25.884],"1.1167":[-35.669,176.253,25.479],"1.1333":[-32.972,176.601,24.761],"1.15":[-34.963,174.656,21.418],"1.1667":[-39.362,171.929,16.321],"1.1833":[-44.736,169.256,10.889],"1.2":[-51,166.968,4.815],"1.2167":[-57.583,165.247,-1.446],"1.2333":[-64.046,164.329,-7.657],"1.25":[-69.445,164.051,-13.193],"1.2667":[-74.496,164.343,-18.608],"1.2833":[-79.526,165.608,-24.364],"1.3":[-84.232,167.446,-29.968],"1.3167":[-88.668,169.661,-35.319],"1.3333":[-92.551,171.94,-40.054],"1.35":[-96.102,173.817,-44.174],"1.3667":[-99.146,175.039,-47.399],"1.3833":[-101.512,177.215,-51.582],"1.4":[-104.369,173.802,-51.13],"1.4167":[-104.746,151.746,-38.053],"1.4333":[-85.685,132.627,-17.319],"1.45":[-69.048,135.876,-5.452],"1.4667":[-60.092,143.005,-3.788],"1.4833":[-48.991,145.013,-0.375],"1.5":[-39.966,146.096,3.402],"1.5167":[-37.122,146.984,3.953],"1.5333":[-38.609,147.056,2.004],"1.55":[-45.642,147.095,-2.467],"1.5667":[-53.195,147.575,-6.148],"1.5833":[-56.342,147.677,-7.436],"1.6":[-57.015,147.349,-7.231],"1.6167":[-54.841,146.498,-5.004],"1.6333":[-51.393,145.598,-2.034],"1.65":[-48.193,145.024,0.626],"1.6667":[-45.338,144.749,2.778],"1.6833":[-43.612,144.911,3.694],"1.7":[-42.4,145.28,3.978],"1.7167":[-41.273,145.769,4.008],"1.7333":[-40.352,146.254,3.866],"1.75":[-39.631,146.577,3.761],"1.7667":[-39.054,146.771,3.704],"1.7833":[-38.573,146.784,3.803],"1.8":[-38.159,146.713,3.955],"1.8167":[-37.763,146.646,4.084],"1.8333":[-37.399,146.561,4.214],"1.85":[-37.066,146.463,4.341],"1.8667":[-36.762,146.36,4.464],"1.8833":[-36.486,146.257,4.58],"1.9":[-36.236,146.159,4.686],"1.9167":[-36.011,146.075,4.779],"1.9333":[-35.811,146.006,4.856],"1.95":[-35.63,145.962,4.916],"1.9667":[-35.477,145.946,4.954],"1.9833":[-35.36,145.958,4.969],"2.0":[-35.279,145.99,4.96],"2.0167":[-35.241,146.04,4.932],"2.0333":[-35.235,146.102,4.888],"2.05":[-35.255,146.176,4.829],"2.0667":[-35.292,146.257,4.765],"2.0833":[-35.343,146.348,4.69],"2.1":[-35.401,146.438,4.612],"2.1167":[-35.46,146.527,4.533],"2.1333":[-35.511,146.619,4.459],"2.15":[-35.545,146.7,4.395],"2.1667":[-35.41,146.389,4.397]},"position":{"0.0":[-7.805,35.332,-2.846],"0.0167":[-15.474,34.749,-0.648],"0.0333":[-18.477,38.682,0.775],"0.05":[-18.738,46.603,-4.568],"0.0667":[-20.766,53.854,-2.29],"0.0833":[-19.904,52.655,-5.623],"0.1":[-15.624,50.408,-9.427],"0.1167":[-13.405,48.011,-14.144],"0.1333":[-11.621,47.088,-16.859],"0.15":[-11.421,47.139,-17.279],"0.1667":[-11.667,47.047,-17.306],"0.1833":[-11.593,47.016,-17.341],"0.2":[-11.492,46.982,-17.323],"0.2167":[-11.404,46.95,-17.332],"0.2333":[-11.317,46.916,-17.341],"0.25":[-11.229,46.884,-17.35],"0.2667":[-11.142,46.851,-17.359],"0.2833":[-11.23,46.972,-17.342],"0.3":[-10.966,46.786,-17.378],"0.3167":[-10.011,46.158,-17.282],"0.3333":[-9.557,46.791,-16.589],"0.35":[-9.394,47.004,-16.406],"0.3667":[-9.379,46.855,-16.547],"0.3833":[-9.39,46.87,-16.585],"0.4":[-9.434,46.859,-16.652],"0.4167":[-9.461,46.915,-16.72],"0.4333":[-9.519,46.842,-16.781],"0.45":[-9.542,46.568,-16.72],"0.4667":[-9.647,46.029,-16.68],"0.4833":[-9.858,45.169,-16.787],"0.5":[-10.48,44.247,-16.854],"0.5167":[-11.843,42.334,-16.804],"0.5333":[-13.248,39.712,-16.592],"0.55":[-14.732,37.368,-16.251],"0.5667":[-16.284,34.241,-15.953],"0.5833":[-17.977,29.169,-15.368],"0.6":[-19.485,26.498,-14.193],"0.6167":[-19.579,26.382,-13.784],"0.6333":[-19.237,26.825,-13.648],"0.65":[-19.111,26.964,-13.353],"0.6667":[-18.984,27.09,-13.05],"0.6833":[-18.856,27.209,-12.745],"0.7":[-18.726,27.324,-12.443],"0.7167":[-18.595,27.439,-12.15],"0.7333":[-18.464,27.557,-11.871],"0.75":[-18.33,27.682,-11.611],"0.7667":[-18.196,27.818,-11.376],"0.7833":[-18.06,27.969,-11.168],"0.8":[-17.924,28.138,-10.995],"0.8167":[-17.787,28.329,-10.859],"0.8333":[-17.649,28.546,-10.766],"0.85":[-17.51,28.794,-10.72],"0.8667":[-17.37,29.075,-10.726],"0.8833":[-17.225,29.344,-10.695],"0.9":[-17.089,29.758,-10.908],"0.9167":[-16.959,30.551,-11.471],"0.9333":[-16.84,31.673,-12.702],"0.95":[-16.734,33.745,-15.416],"0.9667":[-16.469,36.516,-17.363],"0.9833":[-15.946,38.083,-17.482],"1.0":[-15.373,39.015,-16.984],"1.0167":[-14.87,39.904,-16.381],"1.0333":[-14.462,40.216,-15.542],"1.05":[-14.36,39.701,-14.343],"1.0667":[-14.891,39.276,-13.171],"1.0833":[-15.389,38.617,-12.61],"1.1":[-15.784,37.793,-12.507],"1.1167":[-16.302,37.202,-12.991],"1.1333":[-16.516,36.506,-13.577],"1.15":[-16.441,36.097,-13.774],"1.1667":[-16.268,35.851,-13.878],"1.1833":[-16.07,35.598,-13.988],"1.2":[-15.838,35.429,-14.082],"1.2167":[-15.595,35.374,-14.171],"1.2333":[-15.332,35.44,-14.245],"1.25":[-15.057,35.64,-14.295],"1.2667":[-14.747,35.975,-14.319],"1.2833":[-14.372,36.465,-14.292],"1.3":[-13.972,37.051,-14.241],"1.3167":[-13.564,37.704,-14.194],"1.3333":[-13.172,38.37,-14.15],"1.35":[-12.814,39.005,-14.14],"1.3667":[-12.505,39.563,-14.162],"1.3833":[-12.192,40.111,-14.113],"1.4":[-12.091,40.263,-14.372],"1.4167":[-12.669,39.36,-15.602],"1.4333":[-13.389,38.122,-16.457],"1.45":[-13.26,37.35,-15.914],"1.4667":[-13.036,36.781,-15.198],"1.4833":[-13.249,36.126,-15.534],"1.5":[-13.564,35.583,-15.973],"1.5167":[-13.735,35.329,-16.005],"1.5333":[-13.809,35.267,-15.806],"1.55":[-13.755,35.374,-15.212],"1.5667":[-13.705,35.679,-14.522],"1.5833":[-13.699,36.118,-14.104],"1.6":[-13.722,36.69,-13.823],"1.6167":[-13.789,37.452,-13.664],"1.6333":[-13.854,38.237,-13.567],"1.65":[-13.914,38.915,-13.499],"1.6667":[-13.949,39.454,-13.451],"1.6833":[-13.952,39.743,-13.403],"1.7":[-13.941,39.89,-13.374],"1.7167":[-13.918,39.955,-13.362],"1.7333":[-13.892,39.963,-13.361],"1.75":[-13.87,39.955,-13.361],"1.7667":[-13.852,39.937,-13.362],"1.7833":[-13.843,39.937,-13.357],"2.1667":[-13.606,39.761,-13.436]}},"weapon":{"rotation":{"0.0":[-101.847,-13.935,73.488],"0.0167":[-72.517,-30.352,48.203],"0.0333":[-46.415,-35.829,23.494],"0.05":[-59,-21.217,23.616],"0.0667":[-76.308,-8.061,27.849],"0.0833":[-79.569,-10.152,14.139],"0.1":[-74.465,-17.265,-1.771],"0.1167":[-63.859,-24.73,-7.856],"0.1333":[-53.618,-31.337,-10.207],"0.15":[-52.48,-32.99,-9.953],"0.1667":[-54.361,-32.8,-8.416],"0.1833":[-54.662,-32.423,-8.157],"0.2":[-54.939,-31.73,-8.081],"0.2167":[-55.222,-31.194,-7.918],"0.2333":[-55.505,-30.656,-7.761],"0.25":[-55.781,-30.118,-7.607],"0.2667":[-56.057,-29.58,-7.455],"0.2833":[-55.339,-29.045,-9.442],"0.3":[-56.598,-28.501,-7.167],"0.3167":[-63.886,-26.643,9.313],"0.3333":[-70.036,-23.123,25.846],"0.35":[-71.747,-22.061,30.833],"0.3667":[-72.348,-22.154,32.17],"0.3833":[-72.877,-22.255,33.474],"0.4":[-73.217,-22.573,34.172],"0.4167":[-73.236,-22.984,34.829],"0.4333":[-73.947,-23.201,35.656],"0.45":[-76.433,-22.887,37.146],"0.4667":[-80.255,-22.048,38.94],"0.4833":[-86.441,-20.439,41.758],"0.5":[-91.542,-18.615,42.921],"0.5167":[-92.29,-16.683,38.854],"0.5333":[-90.748,-14.572,33.437],"0.55":[-89.205,-12.499,28.876],"0.5667":[-81.167,-12.418,25.84],"0.5833":[-54.436,-18.217,27.006],"0.6":[-28.498,-24.401,29.299],"0.6167":[-22.186,-26.145,28.57],"0.6333":[-21.406,-26.675,26.926],"0.65":[-17.718,-27.721,25.588],"0.6667":[-13.931,-28.696,24.152],"0.6833":[-10.069,-29.588,22.625],"0.7":[-6.136,-30.39,21.015],"0.7167":[-2.146,-31.094,19.332],"0.7333":[1.893,-31.694,17.584],"0.75":[5.955,-32.185,15.789],"0.7667":[10.035,-32.566,13.958],"0.7833":[14.103,-32.833,12.107],"0.8":[18.153,-32.987,10.251],"0.8167":[22.158,-33.03,8.407],"0.8333":[26.096,-32.968,6.594],"0.85":[29.963,-32.804,4.82],"0.8667":[33.734,-32.547,3.101],"0.8833":[37.4,-32.189,1.459],"0.9":[40.933,-31.784,-0.128],"0.9167":[44.88,-31.32,-1.955],"0.9333":[47.519,-30.974,-3.203],"0.95":[47.908,-31.696,-2.667],"0.9667":[44.319,-31.233,-1.836],"0.9833":[35.216,-26.258,-3.188],"1.0":[19.047,-20.964,-2.584],"1.0167":[-5.688,-20.981,3.144],"1.0333":[-37.509,-17.908,13.288],"1.05":[-72.828,-5.578,33.101],"1.0667":[-97.785,9.054,47.365],"1.0833":[-119.64,37.551,42.707],"1.1":[-134.125,77.666,44.968],"1.1167":[-129.104,112.761,48.788],"1.1333":[-118.868,139.961,49.483],"1.15":[-113.603,161.337,33.756],"1.1667":[-91.535,179.775,18.029],"1.1833":[-63.365,176.193,-2.092],"1.2":[-43.949,160.711,-18.015],"1.2167":[-21.101,137.36,-12.623],"1.2333":[22.659,110.571,21.269],"1.25":[100.686,118.806,103.739],"1.2667":[109.894,143.136,121.254],"1.2833":[109.007,161.29,139.293],"1.3":[90.812,179.431,155.273],"1.3167":[64.013,180.286,173.842],"1.3333":[38.202,171.006,186.894],"1.35":[6.213,154.397,178.032],"1.3667":[-38.443,145.962,156.162],"1.3833":[-74.159,162.995,133.688],"1.4":[-90.146,180.454,118.292],"1.4167":[-97.293,200.708,118.562],"1.4333":[-100.771,228.217,111.587],"1.45":[-106.878,251.454,114.904],"1.4667":[-191.06,257.481,196.478],"1.4833":[-216.151,235.254,204.129],"1.5":[-228.396,213.91,200.856],"1.5167":[-231.6,208.608,196.444],"1.5333":[-229.206,208.533,190.374],"1.55":[-222.63,208.831,186.293],"1.5667":[-215.216,209.926,183.271],"1.5833":[-212.164,210.313,182.078],"1.6":[-211.583,210.683,182.408],"1.6167":[-213.835,211.218,184.597],"1.6333":[-217.323,211.631,187.471],"1.65":[-220.48,211.768,189.963],"1.6667":[-223.246,211.662,191.933],"1.6833":[-224.849,211.283,192.688],"1.7":[-225.926,210.761,192.837],"1.7167":[-226.906,210.135,192.724],"1.7333":[-227.693,209.54,192.459],"1.75":[-228.318,209.132,192.264],"1.7667":[-228.829,208.87,192.135],"1.7833":[-229.285,208.798,192.191],"1.8":[-229.685,208.816,192.309],"1.8167":[-230.072,208.836,192.407],"1.8333":[-230.43,208.877,192.509],"1.85":[-230.757,208.933,192.61],"1.8667":[-231.059,208.999,192.712],"1.8833":[-231.341,209.067,192.81],"1.9":[-231.588,209.135,192.898],"1.9167":[-231.818,209.19,192.979],"1.9333":[-232.01,209.237,193.039],"1.95":[-232.194,209.253,193.088],"1.9667":[-232.339,209.256,193.112],"1.9833":[-232.454,209.233,193.114],"2.0":[-232.514,209.189,193.089],"2.0167":[-232.549,209.14,193.059],"2.0333":[-232.545,209.078,193.01],"2.05":[-232.512,209,192.948],"2.0667":[-232.457,208.926,192.874],"2.0833":[-232.4,208.843,192.799],"2.1":[-232.331,208.761,192.719],"2.1167":[-232.262,208.68,192.639],"2.1333":[-232.194,208.598,192.566],"2.15":[-232.151,208.522,192.499],"2.1667":[-232.331,208.813,192.579]},"position":{"0.0":[0.278,50.079,-1.431],"0.0167":[-5.63,51.833,-0.275],"0.0333":[-10.503,54.905,0.37],"0.05":[-12.669,63.054,-0.226],"0.0667":[-12.995,70.25,-1.936],"0.0833":[-11.428,70.012,-5.131],"0.1":[-9.056,67.448,-9.041],"0.1167":[-6.831,65.644,-13.49],"0.1333":[-5.097,64.188,-17.098],"0.15":[-4.851,63.959,-17.799],"0.1667":[-5.078,64.133,-17.496],"0.1833":[-5,64.101,-17.525],"0.2":[-4.903,64.069,-17.51],"0.2167":[-4.815,64.034,-17.516],"0.2333":[-4.728,64.002,-17.525],"0.25":[-4.64,63.969,-17.532],"0.2667":[-4.553,63.937,-17.539],"0.2833":[-4.612,63.939,-17.626],"0.3":[-4.377,63.872,-17.555],"0.3167":[-3.138,63.583,-16.945],"0.3333":[-1.876,63.289,-16.318],"0.35":[-1.544,63.196,-16.174],"0.3667":[-1.527,63.165,-16.193],"0.3833":[-1.507,63.135,-16.213],"0.4":[-1.538,63.114,-16.26],"0.4167":[-1.558,63.135,-16.331],"0.4333":[-1.597,63.057,-16.353],"0.45":[-1.611,62.722,-16.204],"0.4667":[-1.731,62.15,-16.015],"0.4833":[-2.008,61.381,-15.89],"0.5":[-2.637,60.19,-15.782],"0.5167":[-3.971,58.246,-15.682],"0.5333":[-5.577,55.9,-15.581],"0.55":[-7.138,53.569,-15.446],"0.5667":[-8.672,50.697,-15.346],"0.5833":[-10.229,46.053,-15.397],"0.6":[-11.369,42.077,-15.428],"0.6167":[-11.434,41.614,-15.265],"0.6333":[-11.13,42.241,-15.033],"0.65":[-11.011,42.29,-14.803],"0.6667":[-10.892,42.321,-14.564],"0.6833":[-10.772,42.343,-14.315],"0.7":[-10.653,42.356,-14.065],"0.7167":[-10.533,42.365,-13.816],"0.7333":[-10.414,42.379,-13.575],"0.75":[-10.294,42.392,-13.346],"0.7667":[-10.174,42.419,-13.134],"0.7833":[-10.052,42.463,-12.944],"0.8":[-9.932,42.521,-12.782],"0.8167":[-9.81,42.605,-12.65],"0.8333":[-9.688,42.716,-12.556],"0.85":[-9.566,42.857,-12.501],"0.8667":[-9.443,43.041,-12.494],"0.8833":[-9.318,43.195,-12.451],"0.9":[-9.195,43.529,-12.632],"0.9167":[-9.09,44.128,-13.213],"0.9333":[-8.969,45.278,-14.363],"0.95":[-8.844,47.814,-16.829],"0.9667":[-8.59,50.206,-19.064],"0.9833":[-8.023,50.728,-19.306],"1.0":[-7.331,50.827,-18.961],"1.0167":[-6.512,51.485,-18.941],"1.0333":[-5.959,52.389,-18.971],"1.05":[-6.259,53.612,-19.079],"1.0667":[-6.82,54.987,-19.266],"1.0833":[-7.237,56.287,-19.461],"1.1":[-7.523,57.728,-19.894],"1.1167":[-7.48,59.515,-20.906],"1.1333":[-7.335,61.433,-22.088],"1.15":[-7.293,63.433,-23.265],"1.1667":[-7.23,65.28,-24.07],"1.1833":[-7.074,66.662,-23.899],"1.2":[-6.873,67.764,-23.265],"1.2167":[-6.644,68.739,-22.523],"1.2333":[-6.407,69.351,-21.544],"1.25":[-6.189,69.341,-20.242],"1.2667":[-5.988,68.897,-18.835],"1.2833":[-5.833,68.111,-17.288],"1.3":[-5.669,66.984,-16.27],"1.3167":[-5.426,65.535,-16.697],"1.3333":[-5.186,63.744,-17.817],"1.35":[-5.028,61.341,-19.41],"1.3667":[-4.892,59.061,-20.836],"1.3833":[-4.731,57.733,-21.299],"1.4":[-4.57,56.758,-21.05],"1.4167":[-4.396,55.775,-19.873],"1.4333":[-4.271,54.87,-18.373],"1.45":[-4.192,53.979,-17.002],"1.4667":[-4.339,53.189,-16.001],"1.4833":[-5.064,52.557,-15.992],"1.5":[-5.844,52.114,-16.278],"1.5167":[-6.196,51.944,-16.338],"1.5333":[-6.349,51.946,-16.259],"1.55":[-6.335,52.026,-15.876],"1.5667":[-6.254,52.246,-15.422],"1.5833":[-6.234,52.637,-15.095],"1.6":[-6.23,53.187,-14.816],"1.6167":[-6.247,53.946,-14.569],"1.6333":[-6.273,54.741,-14.36],"1.65":[-6.294,55.423,-14.184],"1.6667":[-6.312,55.973,-14.05],"1.6833":[-6.321,56.27,-13.958],"1.7":[-6.325,56.436,-13.9],"1.7167":[-6.326,56.528,-13.866],"1.7333":[-6.325,56.556,-13.85],"1.75":[-6.323,56.568,-13.834],"1.7667":[-6.32,56.562,-13.821],"1.7833":[-6.317,56.568,-13.803],"2.1667":[-6.121,56.439,-13.766]}},"lefthand_1":{"position":[0,1,-1],"scale":[1,1.5,1]},"righthand_1":{"position":[0,1.75,-0.25],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0,0,0.005],"0.0167":[0,0.079,-0.026],"0.0333":[0,0.232,-0.077],"0.05":[-0.001,0.448,-0.138],"0.0667":[-0.002,0.59,-0.189],"0.0833":[-0.018,0.497,-0.138],"0.1":[-0.045,0.331,-0.097],"0.1167":[-0.076,0.13,-1.633],"0.1333":[-0.089,0.002,-3.169],"0.15":[-0.088,0.001,-0.558],"0.1667":[-0.088,0.002,2.063],"0.1833":[-0.088,0.002,1.766],"0.2":[-0.088,0.003,1.234],"0.2167":[-0.088,0.004,0.691],"0.2333":[-0.088,0.003,0.2],"0.25":[-0.088,0.004,-0.036],"0.2667":[-0.088,0.004,-0.2],"0.2833":[-0.089,0.004,-0.384],"0.3":[-0.089,0.006,-0.555],"0.3167":[-0.089,0.006,-0.726],"0.3333":[-0.089,0.005,-0.871],"0.35":[-0.089,0.007,-1.007],"0.3667":[-0.089,0.007,-1.126],"0.3833":[-0.089,0.007,-1.229],"0.4":[-0.089,0.008,-1.314],"0.4167":[-0.089,0.008,-1.374],"0.4333":[-0.089,0.008,-1.408],"0.45":[-0.082,0.005,-1.357],"0.4667":[-0.041,-0.008,-1.05],"0.4833":[0.061,-0.048,-0.163],"0.5":[0.299,-0.077,0.588],"0.5167":[0.776,-0.056,0.707],"0.5333":[1.281,0.029,0.725],"0.55":[1.637,0.258,0.498],"0.5667":[1.801,0.429,0.189],"0.5833":[1.403,0.333,0.072],"0.6":[0.778,0.16,0.035],"0.6167":[0.28,-0.071,0.027],"0.6333":[-0.004,-0.22,0.026],"0.65":[-0.004,-0.22,0.023],"0.6667":[-0.004,-0.215,0.021],"0.6833":[-0.004,-0.209,0.019],"0.7":[-0.004,-0.199,0.018],"0.7167":[-0.004,-0.189,0.018],"0.7333":[-0.004,-0.179,0.018],"0.75":[-0.004,-0.168,0.018],"0.7667":[-0.004,-0.158,0.016],"0.7833":[-0.004,-0.143,0.016],"0.8":[-0.004,-0.127,0.016],"0.8167":[-0.004,-0.112,0.015],"0.8333":[-0.004,-0.097,0.015],"0.85":[0.001,-0.077,0.014],"0.8667":[0.001,-0.059,0.008],"0.8833":[0.001,-0.041,0.008],"0.9":[0.001,-0.02,0.003],"0.9167":[-0.006,0.001,-0.003],"0.9333":[-0.046,0.031,-0.041],"0.95":[-0.166,0.079,-0.135],"0.9667":[-0.326,0.136,-0.256],"0.9833":[-0.5,0.192,-0.393],"1.0":[-0.667,0.244,-0.52],"1.0167":[-0.781,0.276,-0.603],"1.0333":[-0.828,0.294,-0.642],"1.05":[-0.734,0.253,-0.581],"1.0667":[-0.54,0.17,-0.454],"1.0833":[-0.273,0.058,-0.277],"1.1":[-0.006,-0.056,-0.101],"1.1167":[0.18,-0.139,0.026],"1.1333":[0.272,-0.179,0.088],"1.15":[0.221,-0.167,0.088],"1.1667":[0.109,-0.142,0.081],"1.1833":[-0.065,-0.107,0.072],"1.2":[-0.27,-0.069,0.059],"1.2167":[-0.464,-0.036,0.043],"1.2333":[-0.637,-0.01,0.023],"1.25":[-0.75,-0.001,0.001],"1.2667":[-0.821,0,-0.031],"1.2833":[-0.883,0,-0.074],"1.3":[-0.924,0.001,-0.119],"1.3167":[-0.954,0,-0.167],"1.3333":[-0.975,0,-0.216],"1.35":[-0.995,-0.001,-0.261],"1.3667":[-1.005,0,-0.293],"1.3833":[-1.004,0,-0.319],"1.4":[-1.004,0,-0.325],"1.4167":[-0.914,0,-0.281],"1.4333":[-0.712,0,-0.167],"1.45":[-0.43,0,-0.016],"1.4667":[-0.126,0,0.154],"1.4833":[0.178,0,0.324],"1.5":[0.369,0,0.419],"1.5167":[0.403,0,0.425],"1.5333":[0.414,0,0.425],"1.55":[0.336,0,0.337],"1.5667":[0.2,0,0.179],"1.5833":[0.065,0,0.022],"1.6":[-0.059,0,-0.117],"1.6167":[-0.149,0,-0.218],"1.6333":[-0.194,0,-0.262],"1.65":[-0.176,0,-0.242],"1.6667":[-0.143,0,-0.201],"1.6833":[-0.096,0,-0.132],"1.7":[-0.044,0,-0.057],"1.7167":[0.007,0,0.011],"1.7333":[0.055,0,0.08],"1.75":[0.083,0,0.128],"1.7667":[0.097,0,0.141],"1.7833":[0.097,0,0.141],"1.8":[0.088,0,0.128],"1.8167":[0.078,0,0.114],"1.8333":[0.064,0,0.087],"1.85":[0.045,0,0.066],"1.8667":[0.031,0,0.039],"1.8833":[0.012,0,0.011],"1.9":[-0.007,0,-0.009],"1.9167":[-0.019,0,-0.03],"1.9333":[-0.028,0,-0.05],"1.95":[-0.037,0,-0.057],"1.9667":[-0.041,0,-0.064],"1.9833":[-0.041,0,-0.064],"2.0":[-0.037,0,-0.057],"2.0167":[-0.032,0,-0.05],"2.0333":[-0.028,0,-0.043],"2.05":[-0.023,0,-0.037],"2.0667":[-0.019,0,-0.03],"2.0833":[-0.015,0,-0.023],"2.1":[-0.01,0,-0.016],"2.1167":[-0.006,0,-0.009],"2.1333":[-0.001,0,-0.002],"2.1667":[-0.001,0,-0.002]}}},"sound_effects":{"0.0":{"effect":"melee.quenching.quenching_swing_c"},"0.9833":{"effect":"melee.quenching.quenching_rotate_c"}}},"melee_3_1":{"loop":true,"animation_length":4.3333,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[136.665,3.395,100.96],"0.03":[129.172,1.784,102.778],"0.07":[126.899,3.687,102.577],"0.1":[143.763,18.985,99.733],"0.13":[167.486,29.899,105.904],"0.17":[174.346,32.064,109.057],"0.2":[173.797,32.67,108.979],"0.23":[171.823,31.846,108.171],"0.27":[167.482,29.902,105.911],"0.3":[162.005,27.493,102.387],"0.33":[155.673,24.544,98.258],"0.37":[148.846,20.609,94.292],"0.4":[142.26,15.874,90.739],"0.43":[136.578,10.485,87.49],"0.47":[131.281,5.326,85.061],"0.5":[127.371,0.368,82.95],"0.53":[124.855,-5.39,80.531],"0.57":[122.767,-11.799,77.869],"0.6":[121.091,-18.42,75.084],"0.63":[120.084,-25.402,72.106],"0.67":[119.643,-32.299,68.954],"0.7":[119.696,-38.848,65.769],"0.73":[120.108,-44.76,62.675],"0.77":[120.585,-49.784,59.92],"0.8":[120.718,-53.732,58.056],"0.83":[119.681,-56.124,57.891],"0.87":[117.563,-57.351,59.203],"0.9":[114.377,-57.609,62.321],"0.93":[110.701,-57.21,66.276],"0.97":[107.053,-56.627,70.142],"1.0":[103.418,-55.692,74.057],"1.03":[99.902,-54.41,77.899],"1.07":[96.59,-52.797,81.577],"1.1":[93.543,-50.871,85.016],"1.13":[90.789,-48.661,88.183],"1.17":[88.338,-46.194,91.059],"1.2":[86.181,-43.501,93.644],"1.23":[84.299,-40.611,95.953],"1.27":[82.668,-37.553,98.003],"1.3":[81.261,-34.352,99.818],"1.33":[80.052,-31.035,101.42],"1.37":[79.013,-27.625,102.833],"1.4":[78.124,-24.146,104.075],"1.43":[77.36,-20.617,105.168],"1.47":[76.708,-17.06,106.127],"1.5":[76.147,-13.493,106.968],"1.53":[75.668,-9.937,107.702],"1.57":[75.257,-6.408,108.344],"1.6":[74.907,-2.924,108.903],"1.63":[74.609,0.498,109.39],"1.67":[74.36,3.842,109.812],"1.7":[74.153,7.091,110.178],"1.73":[73.988,10.23,110.497],"1.77":[73.862,13.242,110.775],"1.8":[73.777,16.114,111.019],"1.83":[73.733,18.827,111.237],"1.87":[73.732,21.369,111.435],"1.9":[73.778,23.722,111.618],"1.93":[73.873,25.874,111.792],"1.97":[73.974,27.865,111.97],"2.0":[74.23,29.506,112.128],"2.03":[74.765,30.614,112.25],"2.07":[75.601,31.178,112.329],"2.1":[76.86,31.036,112.291],"2.13":[78.391,30.374,112.086],"2.17":[80.111,29.296,111.647],"2.2":[81.956,27.908,110.912],"2.23":[83.843,26.339,109.863],"2.27":[85.741,24.682,108.482],"2.3":[87.586,23.066,106.822],"2.33":[89.365,21.562,104.926],"2.37":[91.028,20.263,102.901],"2.4":[92.569,19.207,100.844],"2.43":[93.957,18.445,98.882],"2.47":[95.198,17.973,97.18],"2.5":[96.268,17.833,95.902],"2.53":[97.234,17.906,95.196],"2.57":[98.152,18.127,95.324],"2.6":[99.055,18.398,95.984],"2.63":[99.978,18.626,97.003],"2.67":[100.948,18.765,98.137],"2.7":[101.971,18.777,99.056],"2.73":[103.058,18.618,99.8],"2.77":[104.252,18.215,100.248],"2.8":[105.514,17.688,100.522],"2.83":[106.844,17.082,100.75],"2.87":[108.21,16.556,100.808],"2.9":[109.598,16.16,100.858],"2.93":[110.961,16.285,100.265],"2.97":[112.227,17.905,97.568],"3.0":[113.379,20.042,95.82],"3.03":[114.549,20.876,98.036],"3.07":[115.712,21.231,101.587],"3.1":[116.79,21.634,105.068],"3.13":[117.837,22.169,108.347],"3.17":[118.818,23.174,110.776],"3.2":[119.731,24.343,112.781],"3.23":[120.612,25.536,114.628],"3.27":[121.331,26.585,116.066],"3.3":[121.708,27.208,116.833],"3.33":[121.89,27.623,117.215],"3.37":[121.982,27.946,117.416],"3.4":[121.987,28.186,117.444],"3.43":[121.946,28.394,117.372],"3.47":[121.859,28.566,117.206],"3.5":[121.738,28.714,116.969],"3.53":[121.594,28.845,116.683],"3.57":[121.439,28.97,116.374],"3.6":[121.286,29.1,116.065],"3.63":[121.144,29.254,115.773],"3.67":[121.033,29.402,115.54],"3.7":[120.98,29.517,115.423],"3.73":[120.958,29.593,115.372],"3.77":[120.954,29.605,115.362],"3.8":[120.958,29.593,115.372],"3.83":[120.958,29.594,115.372],"4.33":[120.958,29.594,115.372]},"position":{"0.0":[8.406,31.082,-1.424],"0.03":[7.977,31.127,-0.794],"0.07":[7.999,31.071,-1.066],"0.1":[9.001,31.573,-4.676],"0.13":[8.534,33.672,-8.148],"0.17":[8.123,34.278,-8.758],"0.2":[8.173,34.17,-8.626],"0.23":[8.233,34.026,-8.342],"0.27":[8.534,33.672,-8.148],"0.3":[9.298,33.139,-8.562],"0.33":[10.324,32.524,-9.216],"0.37":[11.375,31.845,-9.986],"0.4":[12.498,31.125,-10.725],"0.43":[13.534,30.393,-11.364],"0.47":[14.587,29.87,-11.862],"0.5":[15.525,29.471,-11.995],"0.53":[16.302,29.033,-11.874],"0.57":[17.064,28.714,-11.638],"0.6":[17.808,28.483,-11.34],"0.63":[18.516,28.235,-10.989],"0.67":[19.205,27.971,-10.602],"0.7":[19.892,27.666,-10.188],"0.73":[20.59,27.317,-9.753],"0.77":[21.31,26.907,-9.289],"0.8":[22.069,26.444,-8.808],"0.83":[22.97,25.843,-8.273],"0.87":[23.733,25.351,-7.778],"0.9":[24.035,25.229,-7.593],"0.93":[24.183,25.214,-7.529],"0.97":[24.39,25.141,-7.405],"1.0":[24.584,25.065,-7.281],"1.03":[24.765,24.985,-7.158],"1.07":[24.934,24.903,-7.038],"1.1":[25.089,24.818,-6.922],"1.13":[25.231,24.73,-6.81],"1.17":[25.361,24.64,-6.704],"1.2":[25.477,24.548,-6.605],"1.23":[25.581,24.455,-6.513],"1.27":[25.672,24.361,-6.43],"1.3":[25.752,24.266,-6.357],"1.33":[25.82,24.173,-6.295],"1.37":[25.876,24.081,-6.244],"1.4":[25.923,23.991,-6.207],"1.43":[25.959,23.904,-6.183],"1.47":[25.986,23.821,-6.173],"1.5":[26.004,23.743,-6.18],"1.53":[26.015,23.671,-6.202],"1.57":[26.018,23.606,-6.241],"1.6":[26.015,23.549,-6.298],"1.63":[26.006,23.502,-6.373],"1.67":[25.992,23.465,-6.466],"1.7":[25.974,23.44,-6.578],"1.73":[25.953,23.427,-6.709],"1.77":[25.928,23.429,-6.86],"1.8":[25.902,23.446,-7.031],"1.83":[25.873,23.48,-7.221],"1.87":[25.843,23.532,-7.431],"1.9":[25.811,23.603,-7.66],"1.93":[25.779,23.695,-7.909],"1.97":[25.749,23.794,-8.155],"2.0":[25.71,23.945,-8.464],"2.03":[25.646,24.188,-8.883],"2.07":[25.545,24.542,-9.427],"2.1":[25.38,25.052,-10.133],"2.13":[25.144,25.692,-10.941],"2.17":[24.826,26.448,-11.811],"2.2":[24.417,27.304,-12.704],"2.23":[23.915,28.239,-13.586],"2.27":[23.322,29.229,-14.423],"2.3":[22.648,30.248,-15.19],"2.33":[21.908,31.267,-15.867],"2.37":[21.125,32.259,-16.441],"2.4":[20.324,33.193,-16.908],"2.43":[19.537,34.053,-17.271],"2.47":[18.793,34.8,-17.538],"2.5":[18.138,35.416,-17.722],"2.53":[17.582,35.857,-17.839],"2.57":[17.165,36.044,-17.903],"2.6":[16.85,36.076,-17.933],"2.63":[16.613,35.995,-17.939],"2.67":[16.422,35.871,-17.925],"2.7":[16.23,35.787,-17.9],"2.73":[16.05,35.74,-17.855],"2.77":[15.871,35.767,-17.782],"2.8":[15.715,35.825,-17.686],"2.83":[15.604,35.881,-17.562],"2.87":[15.52,35.948,-17.428],"2.9":[15.435,36.018,-17.295],"2.93":[15.396,36.112,-17.183],"2.97":[15.464,36.262,-17.102],"3.0":[15.572,36.354,-17.094],"3.03":[15.646,36.314,-17.243],"3.07":[15.707,36.233,-17.438],"3.1":[15.755,36.15,-17.61],"3.13":[15.787,36.084,-17.743],"3.17":[15.796,36.069,-17.788],"3.2":[15.792,36.079,-17.792],"3.23":[15.781,36.099,-17.778],"3.27":[15.77,36.12,-17.758],"3.3":[15.761,36.123,-17.761],"3.33":[15.755,36.117,-17.771],"3.37":[15.749,36.109,-17.785],"3.4":[15.743,36.098,-17.801],"3.43":[15.738,36.086,-17.818],"3.47":[15.733,36.073,-17.835],"3.5":[15.729,36.06,-17.852],"3.53":[15.725,36.047,-17.87],"3.57":[15.722,36.033,-17.888],"3.6":[15.719,36.02,-17.906],"3.63":[15.716,36.007,-17.925],"3.67":[15.713,35.995,-17.941],"3.7":[15.712,35.988,-17.952],"3.73":[15.711,35.984,-17.958],"3.77":[15.711,35.984,-17.959],"3.8":[15.711,35.984,-17.958],"4.33":[15.711,35.984,-17.958]}},"righthand":{"rotation":{"0.0":[18.158,157.609,72.851],"0.03":[32.696,124.887,76.875],"0.07":[-42.917,140.223,13.987],"0.1":[-43.355,154.406,48.398],"0.13":[-8.066,164.587,23.527],"0.17":[-4.854,160.241,3.816],"0.2":[-10.752,155.56,-6.608],"0.23":[-27.669,151.078,-14.865],"0.27":[-34.509,143.732,-18.518],"0.3":[-34.355,142.032,-18.174],"0.33":[-33.993,142.191,-16.812],"0.37":[-33.601,142.523,-16.482],"0.4":[-33.192,143.183,-16.299],"0.43":[-32.795,143.675,-16.05],"0.47":[-32.404,144.177,-15.804],"0.5":[-32.023,144.675,-15.569],"0.53":[-31.643,145.175,-15.337],"0.57":[-31.351,145.906,-16.834],"0.6":[-30.903,146.181,-14.891],"0.63":[-26.362,146.245,0.829],"0.67":[-16.008,150.107,20.139],"0.7":[-13.199,151.417,25.778],"0.73":[-13.464,150.864,26.827],"0.77":[-12.894,150.72,28.2],"0.8":[-12.585,150.373,28.93],"0.83":[-12.569,149.975,29.593],"0.87":[-11.88,149.686,30.478],"0.9":[-9.163,149.858,32.293],"0.93":[-5.069,150.361,34.741],"0.97":[1.133,151.038,38.692],"1.0":[7.146,153.185,40.586],"1.03":[8.468,155.738,36.694],"1.07":[6.489,157.253,31.051],"1.1":[6.113,158.291,25.667],"1.13":[-3.376,159.905,22.085],"1.17":[-35.197,158.321,20.875],"1.2":[-58.922,154.016,20.089],"1.23":[-64.658,152.867,18.655],"1.27":[-66.393,152.82,17.43],"1.3":[-70.234,152.315,16.025],"1.33":[-74.138,151.925,14.537],"1.37":[-78.082,151.602,13.033],"1.4":[-82.055,151.383,11.486],"1.43":[-86.042,151.252,9.931],"1.47":[-90.034,151.22,8.364],"1.5":[-94.009,151.281,6.81],"1.53":[-97.952,151.434,5.268],"1.57":[-101.851,151.676,3.761],"1.6":[-105.692,152.007,2.292],"1.63":[-109.46,152.416,0.875],"1.67":[-113.144,152.901,-0.487],"1.7":[-116.731,153.449,-1.78],"1.73":[-120.215,154.055,-3.005],"1.77":[-123.576,154.762,-4.132],"1.8":[-126.837,155.409,-5.227],"1.83":[-130.473,156.193,-6.859],"1.87":[-132.9,156.669,-7.334],"1.9":[-133.357,156.427,-6.694],"1.93":[-129.94,156.203,-6.437],"1.97":[-120.003,155.586,-2.586],"2.0":[-107.019,155.668,3.029],"2.03":[-93.066,157.21,8.589],"2.07":[-79.89,159.473,13.891],"2.1":[-68.721,161.486,19.143],"2.13":[-58.199,166.055,21.977],"2.17":[-48.937,170.037,24.309],"2.2":[-41.547,173.18,25.884],"2.23":[-35.669,176.253,25.479],"2.27":[-32.972,176.601,24.761],"2.3":[-34.963,174.656,21.418],"2.33":[-39.362,171.929,16.321],"2.37":[-44.736,169.256,10.889],"2.4":[-51,166.968,4.815],"2.43":[-57.583,165.247,-1.446],"2.47":[-64.046,164.329,-7.657],"2.5":[-69.445,164.051,-13.193],"2.53":[-74.496,164.343,-18.608],"2.57":[-79.526,165.608,-24.364],"2.6":[-84.232,167.446,-29.968],"2.63":[-88.668,169.661,-35.319],"2.67":[-92.551,171.94,-40.054],"2.7":[-96.102,173.817,-44.174],"2.73":[-99.146,175.039,-47.399],"2.77":[-101.512,177.215,-51.582],"2.8":[-104.369,173.802,-51.13],"2.83":[-104.746,151.746,-38.053],"2.87":[-85.685,132.627,-17.319],"2.9":[-69.048,135.876,-5.452],"2.93":[-60.092,143.005,-3.788],"2.97":[-48.991,145.013,-0.375],"3.0":[-39.966,146.096,3.402],"3.03":[-37.122,146.984,3.953],"3.07":[-38.609,147.056,2.004],"3.1":[-45.642,147.095,-2.467],"3.13":[-53.195,147.575,-6.148],"3.17":[-56.342,147.677,-7.436],"3.2":[-57.015,147.349,-7.231],"3.23":[-54.841,146.498,-5.004],"3.27":[-51.393,145.598,-2.034],"3.3":[-48.193,145.024,0.626],"3.33":[-45.338,144.749,2.778],"3.37":[-43.612,144.911,3.694],"3.4":[-42.4,145.28,3.978],"3.43":[-41.273,145.769,4.008],"3.47":[-40.352,146.254,3.866],"3.5":[-39.631,146.577,3.761],"3.53":[-39.054,146.771,3.704],"3.57":[-38.573,146.784,3.803],"3.6":[-38.159,146.713,3.955],"3.63":[-37.763,146.646,4.084],"3.67":[-37.399,146.561,4.214],"3.7":[-37.066,146.463,4.341],"3.73":[-36.762,146.36,4.464],"3.77":[-36.486,146.257,4.58],"3.8":[-36.236,146.159,4.686],"3.83":[-36.011,146.075,4.779],"3.87":[-35.811,146.006,4.856],"3.9":[-35.63,145.962,4.916],"3.93":[-35.477,145.946,4.954],"3.97":[-35.36,145.958,4.969],"4.0":[-35.279,145.99,4.96],"4.03":[-35.241,146.04,4.932],"4.07":[-35.235,146.102,4.888],"4.1":[-35.255,146.176,4.829],"4.13":[-35.292,146.257,4.765],"4.17":[-35.343,146.348,4.69],"4.2":[-35.401,146.438,4.612],"4.23":[-35.46,146.527,4.533],"4.27":[-35.511,146.619,4.459],"4.3":[-35.545,146.7,4.395],"4.33":[-35.571,146.774,4.333]},"position":{"0.0":[-7.805,35.332,-2.846],"0.03":[-15.474,34.749,-0.648],"0.07":[-18.477,38.682,0.775],"0.1":[-18.738,46.603,-4.568],"0.13":[-20.766,53.854,-2.29],"0.17":[-19.904,52.655,-5.623],"0.2":[-15.624,50.408,-9.427],"0.23":[-13.405,48.011,-14.144],"0.27":[-11.621,47.088,-16.859],"0.3":[-11.421,47.139,-17.279],"0.33":[-11.667,47.047,-17.306],"0.37":[-11.593,47.016,-17.341],"0.4":[-11.492,46.982,-17.323],"0.43":[-11.404,46.95,-17.332],"0.47":[-11.317,46.916,-17.341],"0.5":[-11.229,46.884,-17.35],"0.53":[-11.142,46.851,-17.359],"0.57":[-11.23,46.972,-17.342],"0.6":[-10.966,46.786,-17.378],"0.63":[-10.011,46.158,-17.282],"0.67":[-9.557,46.791,-16.589],"0.7":[-9.394,47.004,-16.406],"0.73":[-9.379,46.855,-16.547],"0.77":[-9.39,46.87,-16.585],"0.8":[-9.434,46.859,-16.652],"0.83":[-9.461,46.915,-16.72],"0.87":[-9.519,46.842,-16.781],"0.9":[-9.542,46.568,-16.72],"0.93":[-9.647,46.029,-16.68],"0.97":[-9.858,45.169,-16.787],"1.0":[-10.48,44.247,-16.854],"1.03":[-11.843,42.334,-16.804],"1.07":[-13.248,39.712,-16.592],"1.1":[-14.732,37.368,-16.251],"1.13":[-16.284,34.241,-15.953],"1.17":[-17.977,29.169,-15.368],"1.2":[-19.485,26.498,-14.193],"1.23":[-19.579,26.382,-13.784],"1.27":[-19.237,26.825,-13.648],"1.3":[-19.111,26.964,-13.353],"1.33":[-18.984,27.09,-13.05],"1.37":[-18.856,27.209,-12.745],"1.4":[-18.726,27.324,-12.443],"1.43":[-18.595,27.439,-12.15],"1.47":[-18.464,27.557,-11.871],"1.5":[-18.33,27.682,-11.611],"1.53":[-18.196,27.818,-11.376],"1.57":[-18.06,27.969,-11.168],"1.6":[-17.924,28.138,-10.995],"1.63":[-17.787,28.329,-10.859],"1.67":[-17.649,28.546,-10.766],"1.7":[-17.51,28.794,-10.72],"1.73":[-17.37,29.075,-10.726],"1.77":[-17.225,29.344,-10.695],"1.8":[-17.089,29.758,-10.908],"1.83":[-16.959,30.551,-11.471],"1.87":[-16.84,31.673,-12.702],"1.9":[-16.734,33.745,-15.416],"1.93":[-16.469,36.516,-17.363],"1.97":[-15.946,38.083,-17.482],"2.0":[-15.373,39.015,-16.984],"2.03":[-14.87,39.904,-16.381],"2.07":[-14.462,40.216,-15.542],"2.1":[-14.36,39.701,-14.343],"2.13":[-14.891,39.276,-13.171],"2.17":[-15.389,38.617,-12.61],"2.2":[-15.784,37.793,-12.507],"2.23":[-16.302,37.202,-12.991],"2.27":[-16.516,36.506,-13.577],"2.3":[-16.441,36.097,-13.774],"2.33":[-16.268,35.851,-13.878],"2.37":[-16.07,35.598,-13.988],"2.4":[-15.838,35.429,-14.082],"2.43":[-15.595,35.374,-14.171],"2.47":[-15.332,35.44,-14.245],"2.5":[-15.057,35.64,-14.295],"2.53":[-14.747,35.975,-14.319],"2.57":[-14.372,36.465,-14.292],"2.6":[-13.972,37.051,-14.241],"2.63":[-13.564,37.704,-14.194],"2.67":[-13.172,38.37,-14.15],"2.7":[-12.814,39.005,-14.14],"2.73":[-12.505,39.563,-14.162],"2.77":[-12.192,40.111,-14.113],"2.8":[-12.091,40.263,-14.372],"2.83":[-12.669,39.36,-15.602],"2.87":[-13.389,38.122,-16.457],"2.9":[-13.26,37.35,-15.914],"2.93":[-13.036,36.781,-15.198],"2.97":[-13.249,36.126,-15.534],"3.0":[-13.564,35.583,-15.973],"3.03":[-13.735,35.329,-16.005],"3.07":[-13.809,35.267,-15.806],"3.1":[-13.755,35.374,-15.212],"3.13":[-13.705,35.679,-14.522],"3.17":[-13.699,36.118,-14.104],"3.2":[-13.722,36.69,-13.823],"3.23":[-13.789,37.452,-13.664],"3.27":[-13.854,38.237,-13.567],"3.3":[-13.914,38.915,-13.499],"3.33":[-13.949,39.454,-13.451],"3.37":[-13.952,39.743,-13.403],"3.4":[-13.941,39.89,-13.374],"3.43":[-13.918,39.955,-13.362],"3.47":[-13.892,39.963,-13.361],"3.5":[-13.87,39.955,-13.361],"3.53":[-13.852,39.937,-13.362],"3.57":[-13.843,39.937,-13.357],"3.6":[-13.838,39.937,-13.351],"3.63":[-13.832,39.93,-13.346],"3.67":[-13.826,39.919,-13.341],"3.7":[-13.821,39.905,-13.337],"3.73":[-13.816,39.889,-13.334],"3.77":[-13.812,39.872,-13.33],"3.8":[-13.808,39.854,-13.328],"3.83":[-13.804,39.837,-13.326],"3.87":[-13.8,39.82,-13.325],"3.9":[-13.795,39.806,-13.325],"3.93":[-13.791,39.794,-13.326],"3.97":[-13.787,39.785,-13.328],"4.0":[-13.782,39.776,-13.331],"4.03":[-13.779,39.768,-13.335],"4.07":[-13.775,39.76,-13.34],"4.1":[-13.771,39.752,-13.346],"4.13":[-13.767,39.745,-13.352],"4.17":[-13.764,39.738,-13.359],"4.2":[-13.761,39.73,-13.365],"4.23":[-13.757,39.723,-13.372],"4.27":[-13.754,39.716,-13.379],"4.3":[-13.751,39.707,-13.385],"4.33":[-13.747,39.7,-13.391]}},"weapon":{"rotation":{"0.0":[-101.847,-13.935,73.488],"0.03":[-72.517,-30.352,48.203],"0.07":[-46.415,-35.829,23.494],"0.1":[-59,-21.217,23.616],"0.13":[-76.308,-8.061,27.849],"0.17":[-79.569,-10.152,14.139],"0.2":[-74.465,-17.265,-1.771],"0.23":[-63.859,-24.73,-7.856],"0.27":[-53.618,-31.337,-10.207],"0.3":[-52.48,-32.99,-9.953],"0.33":[-54.361,-32.8,-8.416],"0.37":[-54.662,-32.423,-8.157],"0.4":[-54.939,-31.73,-8.081],"0.43":[-55.222,-31.194,-7.918],"0.47":[-55.505,-30.656,-7.761],"0.5":[-55.781,-30.118,-7.607],"0.53":[-56.057,-29.58,-7.455],"0.57":[-55.339,-29.045,-9.442],"0.6":[-56.598,-28.501,-7.167],"0.63":[-63.886,-26.643,9.313],"0.67":[-70.036,-23.123,25.846],"0.7":[-71.747,-22.061,30.833],"0.73":[-72.348,-22.154,32.17],"0.77":[-72.877,-22.255,33.474],"0.8":[-73.217,-22.573,34.172],"0.83":[-73.236,-22.984,34.829],"0.87":[-73.947,-23.201,35.656],"0.9":[-76.433,-22.887,37.146],"0.93":[-80.255,-22.048,38.94],"0.97":[-86.441,-20.439,41.758],"1.0":[-91.542,-18.615,42.921],"1.03":[-92.29,-16.683,38.854],"1.07":[-90.748,-14.572,33.437],"1.1":[-89.205,-12.499,28.876],"1.13":[-81.167,-12.418,25.84],"1.17":[-54.436,-18.217,27.006],"1.2":[-28.498,-24.401,29.299],"1.23":[-22.186,-26.145,28.57],"1.27":[-21.406,-26.675,26.926],"1.3":[-17.718,-27.721,25.588],"1.33":[-13.931,-28.696,24.152],"1.37":[-10.069,-29.588,22.625],"1.4":[-6.136,-30.39,21.015],"1.43":[-2.146,-31.094,19.332],"1.47":[1.893,-31.694,17.584],"1.5":[5.955,-32.185,15.789],"1.53":[10.035,-32.566,13.958],"1.57":[14.103,-32.833,12.107],"1.6":[18.153,-32.987,10.251],"1.63":[22.158,-33.03,8.407],"1.67":[26.096,-32.968,6.594],"1.7":[29.963,-32.804,4.82],"1.73":[33.734,-32.547,3.101],"1.77":[37.4,-32.189,1.459],"1.8":[40.933,-31.784,-0.128],"1.83":[44.88,-31.32,-1.955],"1.87":[47.519,-30.974,-3.203],"1.9":[47.908,-31.696,-2.667],"1.93":[44.319,-31.233,-1.836],"1.97":[35.216,-26.258,-3.188],"2.0":[19.047,-20.964,-2.584],"2.03":[-5.688,-20.981,3.144],"2.07":[-37.509,-17.908,13.288],"2.1":[-72.828,-5.578,33.101],"2.13":[-97.785,9.054,47.365],"2.17":[-119.64,37.551,42.707],"2.2":[-134.125,77.666,44.968],"2.23":[-129.104,112.761,48.788],"2.27":[-118.868,139.961,49.483],"2.3":[-113.603,161.337,33.756],"2.33":[-91.535,179.775,18.029],"2.37":[-63.365,176.193,-2.092],"2.4":[-43.949,160.711,-18.015],"2.43":[-21.101,137.36,-12.623],"2.47":[22.659,110.571,21.269],"2.5":[100.686,118.806,103.739],"2.53":[109.894,143.136,121.254],"2.57":[109.007,161.29,139.293],"2.6":[90.812,179.431,155.273],"2.63":[64.013,180.286,173.842],"2.67":[38.202,171.006,186.894],"2.7":[6.213,154.397,178.032],"2.73":[-38.443,145.962,156.162],"2.77":[-74.159,162.995,133.688],"2.8":[-90.146,180.454,118.292],"2.83":[-97.293,200.708,118.562],"2.87":[-100.771,228.217,111.587],"2.9":[-106.878,251.454,114.904],"2.93":[-191.06,257.481,196.478],"2.97":[-216.151,235.254,204.129],"3.0":[-228.396,213.91,200.856],"3.03":[-231.6,208.608,196.444],"3.07":[-229.206,208.533,190.374],"3.1":[-222.63,208.831,186.293],"3.13":[-215.216,209.926,183.271],"3.17":[-212.164,210.313,182.078],"3.2":[-211.583,210.683,182.408],"3.23":[-213.835,211.218,184.597],"3.27":[-217.323,211.631,187.471],"3.3":[-220.48,211.768,189.963],"3.33":[-223.246,211.662,191.933],"3.37":[-224.849,211.283,192.688],"3.4":[-225.926,210.761,192.837],"3.43":[-226.906,210.135,192.724],"3.47":[-227.693,209.54,192.459],"3.5":[-228.318,209.132,192.264],"3.53":[-228.829,208.87,192.135],"3.57":[-229.285,208.798,192.191],"3.6":[-229.685,208.816,192.309],"3.63":[-230.072,208.836,192.407],"3.67":[-230.43,208.877,192.509],"3.7":[-230.757,208.933,192.61],"3.73":[-231.059,208.999,192.712],"3.77":[-231.341,209.067,192.81],"3.8":[-231.588,209.135,192.898],"3.83":[-231.818,209.19,192.979],"3.87":[-232.01,209.237,193.039],"3.9":[-232.194,209.253,193.088],"3.93":[-232.339,209.256,193.112],"3.97":[-232.454,209.233,193.114],"4.0":[-232.514,209.189,193.089],"4.03":[-232.549,209.14,193.059],"4.07":[-232.545,209.078,193.01],"4.1":[-232.512,209,192.948],"4.13":[-232.457,208.926,192.874],"4.17":[-232.4,208.843,192.799],"4.2":[-232.331,208.761,192.719],"4.23":[-232.262,208.68,192.639],"4.27":[-232.194,208.598,192.566],"4.3":[-232.151,208.522,192.499],"4.33":[-232.119,208.444,192.437]},"position":{"0.0":[0.278,50.079,-1.431],"0.03":[-5.63,51.833,-0.275],"0.07":[-10.503,54.905,0.37],"0.1":[-12.669,63.054,-0.226],"0.13":[-12.995,70.25,-1.936],"0.17":[-11.428,70.012,-5.131],"0.2":[-9.056,67.448,-9.041],"0.23":[-6.831,65.644,-13.49],"0.27":[-5.097,64.188,-17.098],"0.3":[-4.851,63.959,-17.799],"0.33":[-5.078,64.133,-17.496],"0.37":[-5,64.101,-17.525],"0.4":[-4.903,64.069,-17.51],"0.43":[-4.815,64.034,-17.516],"0.47":[-4.728,64.002,-17.525],"0.5":[-4.64,63.969,-17.532],"0.53":[-4.553,63.937,-17.539],"0.57":[-4.612,63.939,-17.626],"0.6":[-4.377,63.872,-17.555],"0.63":[-3.138,63.583,-16.945],"0.67":[-1.876,63.289,-16.318],"0.7":[-1.544,63.196,-16.174],"0.73":[-1.527,63.165,-16.193],"0.77":[-1.507,63.135,-16.213],"0.8":[-1.538,63.114,-16.26],"0.83":[-1.558,63.135,-16.331],"0.87":[-1.597,63.057,-16.353],"0.9":[-1.611,62.722,-16.204],"0.93":[-1.731,62.15,-16.015],"0.97":[-2.008,61.381,-15.89],"1.0":[-2.637,60.19,-15.782],"1.03":[-3.971,58.246,-15.682],"1.07":[-5.577,55.9,-15.581],"1.1":[-7.138,53.569,-15.446],"1.13":[-8.672,50.697,-15.346],"1.17":[-10.229,46.053,-15.397],"1.2":[-11.369,42.077,-15.428],"1.23":[-11.434,41.614,-15.265],"1.27":[-11.13,42.241,-15.033],"1.3":[-11.011,42.29,-14.803],"1.33":[-10.892,42.321,-14.564],"1.37":[-10.772,42.343,-14.315],"1.4":[-10.653,42.356,-14.065],"1.43":[-10.533,42.365,-13.816],"1.47":[-10.414,42.379,-13.575],"1.5":[-10.294,42.392,-13.346],"1.53":[-10.174,42.419,-13.134],"1.57":[-10.052,42.463,-12.944],"1.6":[-9.932,42.521,-12.782],"1.63":[-9.81,42.605,-12.65],"1.67":[-9.688,42.716,-12.556],"1.7":[-9.566,42.857,-12.501],"1.73":[-9.443,43.041,-12.494],"1.77":[-9.318,43.195,-12.451],"1.8":[-9.195,43.529,-12.632],"1.83":[-9.09,44.128,-13.213],"1.87":[-8.969,45.278,-14.363],"1.9":[-8.844,47.814,-16.829],"1.93":[-8.59,50.206,-19.064],"1.97":[-8.023,50.728,-19.306],"2.0":[-7.331,50.827,-18.961],"2.03":[-6.512,51.485,-18.941],"2.07":[-5.959,52.389,-18.971],"2.1":[-6.259,53.612,-19.079],"2.13":[-6.82,54.987,-19.266],"2.17":[-7.237,56.287,-19.461],"2.2":[-7.523,57.728,-19.894],"2.23":[-7.48,59.515,-20.906],"2.27":[-7.335,61.433,-22.088],"2.3":[-7.293,63.433,-23.265],"2.33":[-7.23,65.28,-24.07],"2.37":[-7.074,66.662,-23.899],"2.4":[-6.873,67.764,-23.265],"2.43":[-6.644,68.739,-22.523],"2.47":[-6.407,69.351,-21.544],"2.5":[-6.189,69.341,-20.242],"2.53":[-5.988,68.897,-18.835],"2.57":[-5.833,68.111,-17.288],"2.6":[-5.669,66.984,-16.27],"2.63":[-5.426,65.535,-16.697],"2.67":[-5.186,63.744,-17.817],"2.7":[-5.028,61.341,-19.41],"2.73":[-4.892,59.061,-20.836],"2.77":[-4.731,57.733,-21.299],"2.8":[-4.57,56.758,-21.05],"2.83":[-4.396,55.775,-19.873],"2.87":[-4.271,54.87,-18.373],"2.9":[-4.192,53.979,-17.002],"2.93":[-4.339,53.189,-16.001],"2.97":[-5.064,52.557,-15.992],"3.0":[-5.844,52.114,-16.278],"3.03":[-6.196,51.944,-16.338],"3.07":[-6.349,51.946,-16.259],"3.1":[-6.335,52.026,-15.876],"3.13":[-6.254,52.246,-15.422],"3.17":[-6.234,52.637,-15.095],"3.2":[-6.23,53.187,-14.816],"3.23":[-6.247,53.946,-14.569],"3.27":[-6.273,54.741,-14.36],"3.3":[-6.294,55.423,-14.184],"3.33":[-6.312,55.973,-14.05],"3.37":[-6.321,56.27,-13.958],"3.4":[-6.325,56.436,-13.9],"3.43":[-6.326,56.528,-13.866],"3.47":[-6.325,56.556,-13.85],"3.5":[-6.323,56.568,-13.834],"3.53":[-6.32,56.562,-13.821],"3.57":[-6.317,56.568,-13.803],"3.6":[-6.314,56.574,-13.782],"3.63":[-6.31,56.568,-13.761],"3.67":[-6.307,56.562,-13.745],"3.7":[-6.303,56.551,-13.726],"3.73":[-6.299,56.539,-13.711],"3.77":[-6.296,56.522,-13.697],"3.8":[-6.292,56.505,-13.684],"3.83":[-6.288,56.489,-13.671],"3.87":[-6.286,56.476,-13.662],"3.9":[-6.282,56.463,-13.655],"3.93":[-6.28,56.452,-13.651],"3.97":[-6.277,56.444,-13.651],"4.0":[-6.276,56.439,-13.651],"4.03":[-6.274,56.431,-13.655],"4.07":[-6.272,56.426,-13.662],"4.1":[-6.27,56.418,-13.669],"4.13":[-6.269,56.412,-13.68],"4.17":[-6.268,56.404,-13.689],"4.2":[-6.266,56.399,-13.701],"4.23":[-6.265,56.394,-13.712],"4.27":[-6.264,56.386,-13.721],"4.3":[-6.261,56.381,-13.73],"4.33":[-6.26,56.373,-13.739]}},"lefthand_1":{"position":[0,1,-1],"scale":[1,1.5,1]},"righthand_1":{"position":[0,1.75,-0.25],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0,0,0.005],"0.03":[0,0.079,-0.026],"0.07":[0,0.232,-0.077],"0.1":[-0.001,0.448,-0.138],"0.13":[-0.002,0.59,-0.189],"0.17":[-0.018,0.497,-0.138],"0.2":[-0.045,0.331,-0.097],"0.23":[-0.076,0.13,-1.633],"0.27":[-0.089,0.002,-3.169],"0.3":[-0.088,0.001,-0.558],"0.33":[-0.088,0.002,2.063],"0.37":[-0.088,0.002,1.766],"0.4":[-0.088,0.003,1.234],"0.43":[-0.088,0.004,0.691],"0.47":[-0.088,0.003,0.2],"0.5":[-0.088,0.004,-0.036],"0.53":[-0.088,0.004,-0.2],"0.57":[-0.089,0.004,-0.384],"0.6":[-0.089,0.006,-0.555],"0.63":[-0.089,0.006,-0.726],"0.67":[-0.089,0.005,-0.871],"0.7":[-0.089,0.007,-1.007],"0.73":[-0.089,0.007,-1.126],"0.77":[-0.089,0.007,-1.229],"0.8":[-0.089,0.008,-1.314],"0.83":[-0.089,0.008,-1.374],"0.87":[-0.089,0.008,-1.408],"0.9":[-0.082,0.005,-1.357],"0.93":[-0.041,-0.008,-1.05],"0.97":[0.061,-0.048,-0.163],"1.0":[0.299,-0.077,0.588],"1.03":[0.776,-0.056,0.707],"1.07":[1.281,0.029,0.725],"1.1":[1.637,0.258,0.498],"1.13":[1.801,0.429,0.189],"1.17":[1.403,0.333,0.072],"1.2":[0.778,0.16,0.035],"1.23":[0.28,-0.071,0.027],"1.27":[-0.004,-0.22,0.026],"1.3":[-0.004,-0.22,0.023],"1.33":[-0.004,-0.215,0.021],"1.37":[-0.004,-0.209,0.019],"1.4":[-0.004,-0.199,0.018],"1.43":[-0.004,-0.189,0.018],"1.47":[-0.004,-0.179,0.018],"1.5":[-0.004,-0.168,0.018],"1.53":[-0.004,-0.158,0.016],"1.57":[-0.004,-0.143,0.016],"1.6":[-0.004,-0.127,0.016],"1.63":[-0.004,-0.112,0.015],"1.67":[-0.004,-0.097,0.015],"1.7":[0.001,-0.077,0.014],"1.73":[0.001,-0.059,0.008],"1.77":[0.001,-0.041,0.008],"1.8":[0.001,-0.02,0.003],"1.83":[-0.006,0.001,-0.003],"1.87":[-0.046,0.031,-0.041],"1.9":[-0.166,0.079,-0.135],"1.93":[-0.326,0.136,-0.256],"1.97":[-0.5,0.192,-0.393],"2.0":[-0.667,0.244,-0.52],"2.03":[-0.781,0.276,-0.603],"2.07":[-0.828,0.294,-0.642],"2.1":[-0.734,0.253,-0.581],"2.13":[-0.54,0.17,-0.454],"2.17":[-0.273,0.058,-0.277],"2.2":[-0.006,-0.056,-0.101],"2.23":[0.18,-0.139,0.026],"2.27":[0.272,-0.179,0.088],"2.3":[0.221,-0.167,0.088],"2.33":[0.109,-0.142,0.081],"2.37":[-0.065,-0.107,0.072],"2.4":[-0.27,-0.069,0.059],"2.43":[-0.464,-0.036,0.043],"2.47":[-0.637,-0.01,0.023],"2.5":[-0.75,-0.001,0.001],"2.53":[-0.821,0,-0.031],"2.57":[-0.883,0,-0.074],"2.6":[-0.924,0.001,-0.119],"2.63":[-0.954,0,-0.167],"2.67":[-0.975,0,-0.216],"2.7":[-0.995,-0.001,-0.261],"2.73":[-1.005,0,-0.293],"2.77":[-1.004,0,-0.319],"2.8":[-1.004,0,-0.325],"2.83":[-0.914,0,-0.281],"2.87":[-0.712,0,-0.167],"2.9":[-0.43,0,-0.016],"2.93":[-0.126,0,0.154],"2.97":[0.178,0,0.324],"3.0":[0.369,0,0.419],"3.03":[0.403,0,0.425],"3.07":[0.414,0,0.425],"3.1":[0.336,0,0.337],"3.13":[0.2,0,0.179],"3.17":[0.065,0,0.022],"3.2":[-0.059,0,-0.117],"3.23":[-0.149,0,-0.218],"3.27":[-0.194,0,-0.262],"3.3":[-0.176,0,-0.242],"3.33":[-0.143,0,-0.201],"3.37":[-0.096,0,-0.132],"3.4":[-0.044,0,-0.057],"3.43":[0.007,0,0.011],"3.47":[0.055,0,0.08],"3.5":[0.083,0,0.128],"3.53":[0.097,0,0.141],"3.57":[0.097,0,0.141],"3.6":[0.088,0,0.128],"3.63":[0.078,0,0.114],"3.67":[0.064,0,0.087],"3.7":[0.045,0,0.066],"3.73":[0.031,0,0.039],"3.77":[0.012,0,0.011],"3.8":[-0.007,0,-0.009],"3.83":[-0.019,0,-0.03],"3.87":[-0.028,0,-0.05],"3.9":[-0.037,0,-0.057],"3.93":[-0.041,0,-0.064],"3.97":[-0.041,0,-0.064],"4.0":[-0.037,0,-0.057],"4.03":[-0.032,0,-0.05],"4.07":[-0.028,0,-0.043],"4.1":[-0.023,0,-0.037],"4.13":[-0.019,0,-0.03],"4.17":[-0.015,0,-0.023],"4.2":[-0.01,0,-0.016],"4.23":[-0.006,0,-0.009],"4.27":[-0.001,0,-0.002],"4.33":[-0.001,0,-0.002]}}}},"static_idle":{"loop":true,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":[120.958,29.593,115.372],"position":[15.711,35.984,-17.958]},"righthand":{"rotation":[-35.41,146.389,4.397],"position":[-13.606,39.761,-13.436]},"weapon":{"rotation":[-52.331,-28.813,12.579],"position":[-6.121,56.439,-13.766]},"lefthand_1":{"position":[0,1,-1],"scale":[1,1.5,1]},"righthand_1":{"position":[0,1.75,-0.25],"scale":[1,1.5,1]}}},"run_start":{"animation_length":0.2333,"bones":{"melee_and_right":{"rotation":{"0.0":[0,0,0],"0.1":[10.6406,-14.4375,-20],"0.1667":[0,-30,-77.5]},"position":{"0.0":[0,0,0],"0.1":[-4.625,-7.1875,0],"0.2333":[0,-28.0806,0]}},"lefthand":{"rotation":{"0.0":[0,0,0],"0.0667":[-0.9525,-10.7269,13.8908],"0.1333":[-1.5163,-13.5284,8.465]},"position":{"0.0":[0,0,0],"0.1333":[-0.2656,-4.2969,0.1875],"0.2":[-0.5944,0.4213,0.44]}},"knife_and_right":{"rotation":{"0.0":[0,0,0],"0.1":[10.6406,-14.4375,-20],"0.1667":[8,26,-22.5]},"position":{"0.0":[0,0,0],"0.1":[-4.625,-7.1875,0],"0.2333":[-0.9,-10.0806,-6]}}}},"run":{"loop":true,"animation_length":0.6,"bones":{"melee_and_right":{"rotation":{"0.0":[0,-30,-77.5],"0.0667":[0,-30,-77.5],"0.1333":{"pre":[0,-30,-48.75],"post":[0,-30,-48.75],"lerp_mode":"catmullrom"},"0.2":{"post":[0,-30,-33.5],"lerp_mode":"catmullrom"},"0.3":{"post":[-9.75,-30,-26.5312],"lerp_mode":"catmullrom"},"0.4":{"post":[-21.25,-30,-28.25],"lerp_mode":"catmullrom"},"0.4667":[0,-30,-52.98],"0.5333":[0,-30,-77.5]},"position":{"0.0":[0,-28.0806,0],"0.0667":[1.0781,-28.3769,0],"0.1333":{"pre":[-0.42,-16.9894,0],"post":[-0.42,-16.9894,0],"lerp_mode":"catmullrom"},"0.2":{"post":[-1.97,-9.5669,0],"lerp_mode":"catmullrom"},"0.3":{"post":[-2.8919,-4.8594,0],"lerp_mode":"catmullrom"},"0.4":{"post":[-1.97,-6.0475,0],"lerp_mode":"catmullrom"},"0.4667":[-0.98,-11.3919,0],"0.5333":[0,-28.0806,0]}},"root":{"rotation":{"0.0":[0,0,0],"0.0667":[0,0,0],"0.1333":{"pre":[0,0,0],"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.3333":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.4667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.5333":[0,0,0],"0.6":[0,0,0]},"position":{"0.0":[0,0,0],"0.0667":[0,-0.3125,-0.8594],"0.1333":{"pre":[0,-1.0781,-0.7344],"post":[0,-1.0781,-0.7344],"lerp_mode":"catmullrom"},"0.2":{"post":[0,-0.7656,-0.3594],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0.1094,0],"lerp_mode":"catmullrom"},"0.3333":{"post":[0,0.25,0.3594],"lerp_mode":"catmullrom"},"0.4":{"post":[0,-0.625,0.7656],"lerp_mode":"catmullrom"},"0.4667":{"post":[0,-0.4531,0.9062],"lerp_mode":"catmullrom"},"0.5333":[0,0,0.7031],"0.6":[0,0,0]}},"lefthand":{"rotation":{"0.0":[-1.5163,-13.5284,8.465],"0.0667":[0.3666,-16.9644,19.7489],"0.1333":{"pre":[-4.3575,-10.3212,6.2426],"post":[-4.3575,-10.3212,6.2426],"lerp_mode":"catmullrom"},"0.2":{"post":[-4.3575,11.8507,3.3832],"lerp_mode":"catmullrom"},"0.2667":{"post":[-4.4725,15.7063,2.5444],"lerp_mode":"catmullrom"},"0.3667":{"post":[-4.3575,11.8507,3.3832],"lerp_mode":"catmullrom"},"0.4333":{"post":[-3.3525,-6.3238,8.9144],"lerp_mode":"catmullrom"},"0.5333":[0.3666,-16.9644,19.7489],"0.6":[-1.5163,-13.5284,8.465]},"position":{"0.0":[-0.5944,0.4213,0.44],"0.0667":[-1.1256,1.0462,-0.185],"0.1333":{"pre":[1.2512,-2.5775,-0.3256],"post":[1.2512,-2.5775,-0.3256],"lerp_mode":"catmullrom"},"0.2":{"post":[4.6225,-12.5444,-0.26],"lerp_mode":"catmullrom"},"0.3":{"post":[5.5362,-13.0344,-0.26],"lerp_mode":"catmullrom"},"0.4":{"post":[4.6225,-9.5288,-0.26],"lerp_mode":"catmullrom"},"0.4667":{"post":[2.6888,-5.4525,-0.0287],"lerp_mode":"catmullrom"},"0.5333":[0.41,-0.7987,0.44],"0.6":[-0.5944,0.4213,0.44]}},"knife_and_right":{"rotation":{"0.0":[8,26,-22.5],"0.0667":[8,26,-22.5],"0.1333":{"pre":[8,26,-10.75],"post":[8,26,-10.75],"lerp_mode":"catmullrom"},"0.2":{"post":[8,26,4.5],"lerp_mode":"catmullrom"},"0.3":{"post":[3.5735,25.6893,11.8827],"lerp_mode":"catmullrom"},"0.4":{"post":[6.75,26,7.75],"lerp_mode":"catmullrom"},"0.4667":[8,26,-16.98],"0.5333":[8,26,-22.5]},"position":{"0.0":[-0.9,-10.0806,-6],"0.0667":[0.1781,-10.3769,-6],"0.1333":{"pre":[-0.32,-8.9894,-6],"post":[-0.32,-8.9894,-6],"lerp_mode":"catmullrom"},"0.2":{"post":[-0.87,-6.5669,-6],"lerp_mode":"catmullrom"},"0.3":{"post":[-1.2591,-1.6094,-6],"lerp_mode":"catmullrom"},"0.4":{"post":[0.03,-4.0475,-6],"lerp_mode":"catmullrom"},"0.4667":[0.02,-8.3919,-6],"0.5333":[0,-10.0806,-6]}}}},"run_end":{"animation_length":0.7,"bones":{"melee_and_right":{"rotation":{"0.0333":[0,-30,-77.5],"0.1":[10.6406,-14.4375,-20],"0.2":[0,0,2.75],"0.3":[0,0,0]},"position":{"0.0":[0,-28.0806,0],"0.1":[-4.625,-7.1875,0],"0.1667":[0,0,0]}},"root":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.3333":[0,0,0],"0.4333":[0,0,0]},"position":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2":{"post":[0,-0.5781,0],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.3333":[0,0,0],"0.4333":[0,0,0]}},"lefthand":{"rotation":{"0.0667":[-1.5163,-17.5284,31.465],"0.1333":[-0.9525,-10.7269,13.8908],"0.2":[0,0,-10],"0.2667":[0,0,0]},"position":{"0.0":[-0.5944,-1.4538,1.565],"0.1333":[0,0,0]}},"knife_and_right":{"rotation":{"0.0333":[0,-30,-77.5],"0.1":[10.6406,-14.4375,-20],"0.2":[0,0,1.4492],"0.3":[0,0,0]},"position":{"0.0":[0,-28.0806,0],"0.1":[-4.625,-7.1875,0],"0.1667":[0,0,0]}}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/quenching.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/quenching.geo.json new file mode 100644 index 0000000..05713b5 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/quenching.geo.json @@ -0,0 +1 @@ +{"format_version":"1.21.0","minecraft:geometry":[{"description":{"identifier":"geometry.quenching","texture_width":256,"texture_height":256,"visible_bounds_width":24,"visible_bounds_height":10,"visible_bounds_offset":[0,1,0]},"bones":[{"name":"root","pivot":[0,4.4442,0.1281]},{"name":"bone5","parent":"root","pivot":[0,9.6875,4.3375]},{"name":"fn_lefthand","parent":"bone5","pivot":[-6,19,0]},{"name":"lefthand","parent":"fn_lefthand","pivot":[-6,19,0]},{"name":"lefthand_1","parent":"lefthand","pivot":[-6,19,0]},{"name":"lefthand_pos","parent":"lefthand_1","pivot":[0,8,0],"cubes":[{"origin":[-7,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[7,12],"uv_size":[3,12]},"east":{"uv":[8,0],"uv_size":[4,12]},"south":{"uv":[10,12],"uv_size":[3,12]},"west":{"uv":[0,12],"uv_size":[4,12]},"up":{"uv":[17,14],"uv_size":[3,4]},"down":{"uv":[18,6],"uv_size":[3,-4]}}}]},{"name":"knife_and_right","parent":"bone5","pivot":[6,19,0]},{"name":"righthand","parent":"knife_and_right","pivot":[6,19,0]},{"name":"righthand_1","parent":"righthand","pivot":[6,19,0]},{"name":"righthand_pos","parent":"righthand_1","pivot":[0,8,0],"cubes":[{"origin":[4,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[12,0],"uv_size":[3,12]},"east":{"uv":[0,0],"uv_size":[4,12]},"south":{"uv":[4,12],"uv_size":[3,12]},"west":{"uv":[4,0],"uv_size":[4,12]},"up":{"uv":[15,2],"uv_size":[3,4]},"down":{"uv":[15,10],"uv_size":[3,-4]}}}]},{"name":"weapon","parent":"knife_and_right","pivot":[0,4.4442,0.1281]},{"name":"weapon_1","parent":"weapon","pivot":[0,4.4442,0.1281],"cubes":[{"origin":[-0.4265,3.6942,-0.1305],"size":[0.853,1.26,0.8531],"uv":{"north":{"uv":[6,4],"uv_size":[0.75,1.25]},"east":{"uv":[6,6],"uv_size":[0.75,1.25]},"south":{"uv":[7,0],"uv_size":[0.75,1.25]},"west":{"uv":[7,2],"uv_size":[0.75,1.25]},"up":{"uv":[11,10],"uv_size":[0.75,0.75]},"down":{"uv":[11,11.75],"uv_size":[0.75,-0.75]}}},{"origin":[-0.4265,4.9542,0.0998],"size":[0.853,1.4271,0.623],"pivot":[-0.4265,4.9542,0.7228],"rotation":[5.9356,0,0],"uv":{"north":{"uv":[5,3],"uv_size":[0.75,1.5]},"east":{"uv":[2,8],"uv_size":[0.5,1.5]},"south":{"uv":[5,5],"uv_size":[0.75,1.5]},"west":{"uv":[8,2],"uv_size":[0.5,1.5]},"up":{"uv":[15,10],"uv_size":[0.75,0.5]},"down":{"uv":[15,11.5],"uv_size":[0.75,-0.5]}}},{"origin":[0.1906,3.6943,-0.4851],"size":[0.1732,1.26,0.1861],"pivot":[0.3638,3.6943,-0.299],"rotation":[-0.0264,50.4092,-0.0047],"uv":{"north":{"uv":[21,15],"uv_size":[0.25,1.25]},"east":{"uv":[17,21],"uv_size":[0.25,1.25]},"south":{"uv":[21,17],"uv_size":[0.25,1.25]},"west":{"uv":[19,21],"uv_size":[0.25,1.25]},"up":{"uv":[31,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2533,3.6942,-0.3103],"size":[0.1732,1.26,0.1797],"pivot":[0.4265,3.6942,-0.1305],"rotation":[-0.0264,20.4092,-0.0047],"uv":{"north":{"uv":[21,19],"uv_size":[0.25,1.25]},"east":{"uv":[21,21],"uv_size":[0.25,1.25]},"south":{"uv":[22,0],"uv_size":[0.25,1.25]},"west":{"uv":[22,2],"uv_size":[0.25,1.25]},"up":{"uv":[31,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4265,3.6942,-0.3103],"size":[0.1732,1.26,0.1797],"pivot":[-0.4265,3.6942,-0.1305],"rotation":[-0.0264,-20.4092,0.0047],"uv":{"north":{"uv":[4,22],"uv_size":[0.25,1.25]},"east":{"uv":[22,4],"uv_size":[0.25,1.25]},"south":{"uv":[5,22],"uv_size":[0.25,1.25]},"west":{"uv":[6,22],"uv_size":[0.25,1.25]},"up":{"uv":[31,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3638,3.6943,-0.4851],"size":[0.1732,1.26,0.1861],"pivot":[-0.3638,3.6943,-0.299],"rotation":[-0.0264,-50.4092,0.0047],"uv":{"north":{"uv":[22,6],"uv_size":[0.25,1.25]},"east":{"uv":[8,22],"uv_size":[0.25,1.25]},"south":{"uv":[22,8],"uv_size":[0.25,1.25]},"west":{"uv":[9,22],"uv_size":[0.25,1.25]},"up":{"uv":[31,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2203,3.6944,-0.6292],"size":[0.1732,1.26,0.2118],"pivot":[-0.2203,3.6944,-0.4174],"rotation":[-0.0264,-82.9092,0.0047],"uv":{"north":{"uv":[10,22],"uv_size":[0.25,1.25]},"east":{"uv":[22,10],"uv_size":[0.25,1.25]},"south":{"uv":[11,22],"uv_size":[0.25,1.25]},"west":{"uv":[12,22],"uv_size":[0.25,1.25]},"up":{"uv":[31,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0101,3.6944,-0.4641],"size":[0.1732,1.26,0.0211],"pivot":[-0.0101,3.6944,-0.4435],"rotation":[0,-90,0],"uv":{"north":{"uv":[22,12],"uv_size":[0.25,1.25]},"east":{"uv":[13,22],"uv_size":[0.25,1.25]},"south":{"uv":[14,22],"uv_size":[0.25,1.25]},"west":{"uv":[22,14],"uv_size":[0.25,1.25]},"up":{"uv":[31,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4266,4.9503,-0.13],"size":[0.8532,1.4204,0.2316],"pivot":[-0.4265,4.9542,-0.1305],"rotation":[-1.2522,0,0],"uv":{"north":{"uv":[0,6],"uv_size":[0.75,1.5]},"east":{"uv":[12,15],"uv_size":[0.25,1.5]},"south":{"uv":[6,0],"uv_size":[0.75,1.5]},"west":{"uv":[15,12],"uv_size":[0.25,1.5]},"up":{"uv":[26,5],"uv_size":[0.75,0.25]},"down":{"uv":[6,26.25],"uv_size":[0.75,-0.25]}}},{"origin":[0.2445,4.9489,-0.0039],"size":[0.1528,1.4241,0.1797],"pivot":[-0.4545,4.9525,-0.0564],"rotation":[-1.3325,19.995,-0.4557],"uv":{"north":{"uv":[15,14],"uv_size":[0.25,1.5]},"east":{"uv":[16,0],"uv_size":[0.25,1.5]},"south":{"uv":[16,2],"uv_size":[0.25,1.5]},"west":{"uv":[3,16],"uv_size":[0.25,1.5]},"up":{"uv":[31,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3973,4.9489,-0.0039],"size":[0.1528,1.4241,0.1797],"pivot":[0.4545,4.9525,-0.0564],"rotation":[-1.3325,-19.995,0.4557],"uv":{"north":{"uv":[4,16],"uv_size":[0.25,1.5]},"east":{"uv":[16,4],"uv_size":[0.25,1.5]},"south":{"uv":[5,16],"uv_size":[0.25,1.5]},"west":{"uv":[6,16],"uv_size":[0.25,1.5]},"up":{"uv":[31,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.5785,4.936,0.4163],"size":[0.1503,1.4232,0.2118],"pivot":[-0.1205,4.9427,0.3959],"rotation":[-9.5064,82.3968,-9.4244],"uv":{"north":{"uv":[16,6],"uv_size":[0.25,1.5]},"east":{"uv":[8,16],"uv_size":[0.25,1.5]},"south":{"uv":[16,8],"uv_size":[0.25,1.5]},"west":{"uv":[10,16],"uv_size":[0.25,1.5]},"up":{"uv":[31,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4893,4.9407,0.251],"size":[0.1517,1.4227,0.186],"pivot":[0.3615,4.9468,0.2048],"rotation":[-1.9476,-49.9837,1.4918],"uv":{"north":{"uv":[16,10],"uv_size":[0.25,1.5]},"east":{"uv":[11,16],"uv_size":[0.25,1.5]},"south":{"uv":[16,12],"uv_size":[0.25,1.5]},"west":{"uv":[13,16],"uv_size":[0.25,1.5]},"up":{"uv":[0,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0471,3.6944,-0.6292],"size":[0.1732,1.26,0.2118],"pivot":[0.2203,3.6944,-0.4174],"rotation":[-0.0264,82.9092,-0.0047],"uv":{"north":{"uv":[15,22],"uv_size":[0.25,1.25]},"east":{"uv":[16,22],"uv_size":[0.25,1.25]},"south":{"uv":[22,16],"uv_size":[0.25,1.25]},"west":{"uv":[18,22],"uv_size":[0.25,1.25]},"up":{"uv":[1,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3376,4.9407,0.251],"size":[0.1517,1.4227,0.186],"pivot":[-0.3615,4.9468,0.2048],"rotation":[-1.9476,49.9837,-1.4918],"uv":{"north":{"uv":[14,16],"uv_size":[0.25,1.5]},"east":{"uv":[16,14],"uv_size":[0.25,1.5]},"south":{"uv":[15,16],"uv_size":[0.25,1.5]},"west":{"uv":[16,16],"uv_size":[0.25,1.5]},"up":{"uv":[2,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.7289,4.936,0.4163],"size":[0.1503,1.4232,0.2118],"pivot":[0.1205,4.9427,0.3959],"rotation":[-9.5064,-82.3968,9.4244],"uv":{"north":{"uv":[0,17],"uv_size":[0.25,1.5]},"east":{"uv":[17,0],"uv_size":[0.25,1.5]},"south":{"uv":[1,17],"uv_size":[0.25,1.5]},"west":{"uv":[2,17],"uv_size":[0.25,1.5]},"up":{"uv":[3,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.668,4.9359,0.4241],"size":[0.1504,1.4232,0.0228],"pivot":[-0.031,4.9424,0.4058],"rotation":[-88.3564,88.7473,-88.2938],"uv":{"north":{"uv":[17,2],"uv_size":[0.25,1.5]},"east":{"uv":[17,4],"uv_size":[0.25,1.5]},"south":{"uv":[17,6],"uv_size":[0.25,1.5]},"west":{"uv":[7,17],"uv_size":[0.25,1.5]},"up":{"uv":[4,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4265,6.324,0.1268],"size":[0.8531,0.0414,0.4485],"pivot":[0.4266,6.3653,0.1325],"rotation":[1.079,-0.0089,0],"uv":{"north":{"uv":[26,6],"uv_size":[0.75,0.25]},"east":{"uv":[16,28],"uv_size":[0.5,0.25]},"south":{"uv":[26,7],"uv_size":[0.75,0.25]},"west":{"uv":[28,16],"uv_size":[0.5,0.25]},"up":{"uv":[17,8],"uv_size":[0.75,0.5]},"down":{"uv":[9,17.5],"uv_size":[0.75,-0.5]}}},{"origin":[-0.359,1.719,0.0529],"size":[0.7181,2.076,0.753],"uv":{"north":{"uv":[0,4],"uv_size":[0.75,2]},"east":{"uv":[4,0],"uv_size":[0.75,2]},"south":{"uv":[1,4],"uv_size":[0.75,2]},"west":{"uv":[2,4],"uv_size":[0.75,2]},"up":{"uv":[0,12],"uv_size":[0.75,0.75]},"down":{"uv":[12,0.75],"uv_size":[0.75,-0.75]}}},{"origin":[-0.2982,4.4642,0.049],"size":[0.0835,0.2018,0.6735],"pivot":[-1.0672,3.4061,0.7774],"rotation":[0,0,45],"uv":{"north":{"uv":[5,32],"uv_size":[0.25,0.25]},"east":{"uv":[8,26],"uv_size":[0.75,0.25]},"south":{"uv":[32,5],"uv_size":[0.25,0.25]},"west":{"uv":[26,8],"uv_size":[0.75,0.25]},"up":{"uv":[9,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,9.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.4518,1.4186,-0.573],"size":[0.9029,0.2038,0.7229],"uv":{"north":{"uv":[25,8],"uv_size":[1,0.25]},"east":{"uv":[10,26],"uv_size":[0.75,0.25]},"south":{"uv":[25,9],"uv_size":[1,0.25]},"west":{"uv":[26,10],"uv_size":[0.75,0.25]},"up":{"uv":[3,8],"uv_size":[1,0.75]},"down":{"uv":[8,4.75],"uv_size":[1,-0.75]}}},{"origin":[-0.0222,1.4186,0.1499],"size":[0.4732,0.2038,0.5878],"pivot":[0.4511,1.6224,0.1499],"rotation":[0,-1.1088,0],"uv":{"north":{"uv":[17,28],"uv_size":[0.5,0.25]},"east":{"uv":[28,17],"uv_size":[0.5,0.25]},"south":{"uv":[18,28],"uv_size":[0.5,0.25]},"west":{"uv":[28,18],"uv_size":[0.5,0.25]},"up":{"uv":[25,10],"uv_size":[0.5,0.5]},"down":{"uv":[25,11.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.0207,1.4186,0.7376],"size":[0.4604,0.2038,0.3979],"pivot":[0.4397,1.6224,0.7376],"rotation":[0,-9.9585,0],"uv":{"north":{"uv":[19,28],"uv_size":[0.5,0.25]},"east":{"uv":[28,19],"uv_size":[0.5,0.25]},"south":{"uv":[20,28],"uv_size":[0.5,0.25]},"west":{"uv":[28,20],"uv_size":[0.5,0.25]},"up":{"uv":[25,12],"uv_size":[0.5,0.5]},"down":{"uv":[25,13.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.3709,1.4186,1.1295],"size":[0.3578,0.2038,0.3611],"pivot":[-0.3709,1.6224,1.1295],"rotation":[0,28.3041,0],"uv":{"north":{"uv":[6,32],"uv_size":[0.25,0.25]},"east":{"uv":[32,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,32],"uv_size":[0.25,0.25]},"west":{"uv":[32,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0131,1.4186,1.1295],"size":[0.3578,0.2038,0.3611],"pivot":[0.3709,1.6224,1.1295],"rotation":[0,-28.3041,0],"uv":{"north":{"uv":[9,32],"uv_size":[0.25,0.25]},"east":{"uv":[32,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,32],"uv_size":[0.25,0.25]},"west":{"uv":[32,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0287,1.4186,1.4474],"size":[0.2283,0.2038,0.1126],"pivot":[0.1997,1.6224,1.4474],"rotation":[0,-46.0003,0],"uv":{"north":{"uv":[12,32],"uv_size":[0.25,0.25]},"east":{"uv":[32,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,32],"uv_size":[0.25,0.25]},"west":{"uv":[32,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1997,1.4186,1.4474],"size":[0.2283,0.2038,0.1126],"pivot":[-0.1997,1.6224,1.4474],"rotation":[0,46.0003,0],"uv":{"north":{"uv":[15,32],"uv_size":[0.25,0.25]},"east":{"uv":[32,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,32],"uv_size":[0.25,0.25]},"west":{"uv":[32,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1187,1.4186,1.4038],"size":[0.2374,0.2038,0.1219],"uv":{"north":{"uv":[18,32],"uv_size":[0.25,0.25]},"east":{"uv":[32,18],"uv_size":[0.25,0.25]},"south":{"uv":[19,32],"uv_size":[0.25,0.25]},"west":{"uv":[32,19],"uv_size":[0.25,0.25]},"up":{"uv":[20,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4511,1.4186,0.1499],"size":[0.4732,0.2038,0.5878],"pivot":[-0.4511,1.6224,0.1499],"rotation":[0,1.1088,0],"uv":{"north":{"uv":[21,28],"uv_size":[0.5,0.25]},"east":{"uv":[28,21],"uv_size":[0.5,0.25]},"south":{"uv":[22,28],"uv_size":[0.5,0.25]},"west":{"uv":[28,22],"uv_size":[0.5,0.25]},"up":{"uv":[25,14],"uv_size":[0.5,0.5]},"down":{"uv":[25,15.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.4397,1.4186,0.7376],"size":[0.4604,0.2038,0.3979],"pivot":[-0.4397,1.6224,0.7376],"rotation":[0,9.9585,0],"uv":{"north":{"uv":[23,28],"uv_size":[0.5,0.25]},"east":{"uv":[28,23],"uv_size":[0.5,0.25]},"south":{"uv":[24,28],"uv_size":[0.5,0.25]},"west":{"uv":[28,24],"uv_size":[0.5,0.25]},"up":{"uv":[25,16],"uv_size":[0.5,0.5]},"down":{"uv":[17,25.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.1013,0.4554,0.2816],"size":[0.2027,0.967,0.7375],"uv":{"north":{"uv":[25,17],"uv_size":[0.25,1]},"east":{"uv":[8,5],"uv_size":[0.75,1]},"south":{"uv":[25,18],"uv_size":[0.25,1]},"west":{"uv":[6,8],"uv_size":[0.75,1]},"up":{"uv":[11,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,11.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1013,-2.4872,0.2816],"size":[0.2027,2.9427,0.3203],"uv":{"north":{"uv":[8,6],"uv_size":[0.25,3]},"east":{"uv":[7,8],"uv_size":[0.25,3]},"south":{"uv":[9,0],"uv_size":[0.25,3]},"west":{"uv":[3,9],"uv_size":[0.25,3]},"up":{"uv":[21,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-3.4466,0.8534],"size":[0.2026,1.2412,0.1658],"uv":{"north":{"uv":[22,18],"uv_size":[0.25,1.25]},"east":{"uv":[20,22],"uv_size":[0.25,1.25]},"south":{"uv":[22,20],"uv_size":[0.25,1.25]},"west":{"uv":[22,22],"uv_size":[0.25,1.25]},"up":{"uv":[22,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-4.9361,0.2816],"size":[0.2027,2.4489,0.2072],"uv":{"north":{"uv":[11,0],"uv_size":[0.25,2.5]},"east":{"uv":[11,3],"uv_size":[0.25,2.5]},"south":{"uv":[4,11],"uv_size":[0.25,2.5]},"west":{"uv":[5,11],"uv_size":[0.25,2.5]},"up":{"uv":[23,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0974,-2.0517,-3.2184],"size":[0.2027,0.3213,3.5035],"pivot":[0.1053,-2.0517,0.2816],"rotation":[-90,0,0],"uv":{"west":{"uv":[0.25,227.5],"uv_size":[105,9.25]}}},{"origin":[-0.0974,-5.4553,-3.1184],"size":[0.2027,0.7213,3.4035],"pivot":[0.1053,-5.4553,0.2816],"rotation":[-90,0,0],"uv":{"west":{"uv":[104,107],"uv_size":[102.75,24.25]}}},{"origin":[-0.0974,0.2553,-0.6002],"size":[0.2027,0.3643,1.1965],"pivot":[0.1053,0.2553,0.6029],"rotation":[-90,0,0],"uv":{"west":{"uv":[0.25,213.75],"uv_size":[37,8.25]}}},{"origin":[-0.1066,-5.4588,0.2816],"size":[0.2133,6.3942,0.0366],"uv":{"north":{"uv":[37,27],"uv_size":[0.25,6]},"east":{"uv":[38,0],"uv_size":[0.25,6]},"south":{"uv":[38,13],"uv_size":[0.25,6]},"west":{"uv":[40,1],"uv_size":[0.25,6]},"up":{"uv":[19,0],"uv_size":[0.25,0.25]},"down":{"uv":[19,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-2.4872,0.6019],"size":[0.2026,0.2818,0.2515],"uv":{"north":{"uv":[24,32],"uv_size":[0.25,0.25]},"east":{"uv":[32,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,32],"uv_size":[0.25,0.25]},"west":{"uv":[32,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0415,-2.2054,0.5199],"size":[0.083,2.6608,0.4993],"uv":{"north":{"uv":[10,6],"uv_size":[0.25,2.75]},"east":{"uv":[4,4],"uv_size":[0.5,2.75]},"south":{"uv":[10,9],"uv_size":[0.25,2.75]},"west":{"uv":[5,0],"uv_size":[0.5,2.75]},"up":{"uv":[25,28],"uv_size":[0.25,0.5]},"down":{"uv":[28,25.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0327,0.6141,-0.4489],"size":[0.0127,0.3993,2.5608],"pivot":[0,0,0],"rotation":[-90,0,0],"uv":{"west":{"uv":[35.75,212.75],"uv_size":[65.5,10.25]}}},{"origin":[-0.0468,-2.2054,0.9892],"size":[0.0937,2.4902,0.0299],"uv":{"north":{"uv":[18,8],"uv_size":[0.25,2.75]},"east":{"uv":[18,11],"uv_size":[0.25,2.75]},"south":{"uv":[26,1],"uv_size":[0.25,2.75]},"west":{"uv":[37,24],"uv_size":[0.25,2.75]},"up":{"uv":[13,18],"uv_size":[0.25,0.25]},"down":{"uv":[18,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.0277,0.8402],"size":[0.2026,1.5811,0.1789],"pivot":[-0.1013,-3.4466,1.0192],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[17,9],"uv_size":[0.25,1.5]},"east":{"uv":[17,11],"uv_size":[0.25,1.5]},"south":{"uv":[12,17],"uv_size":[0.25,1.5]},"west":{"uv":[17,13],"uv_size":[0.25,1.5]},"up":{"uv":[27,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.4686,0.2816],"size":[0.2026,0.5325,0.0177],"uv":{"north":{"uv":[26,28],"uv_size":[0.25,0.5]},"east":{"uv":[28,26],"uv_size":[0.25,0.5]},"south":{"uv":[27,28],"uv_size":[0.25,0.5]},"west":{"uv":[28,27],"uv_size":[0.25,0.5]},"up":{"uv":[28,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.3034,0.4116],"size":[0.2026,0.3882,0.0186],"pivot":[-0.1013,-4.9152,0.4302],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[28,28],"uv_size":[0.25,0.5]},"east":{"uv":[0,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,0],"uv_size":[0.25,0.5]},"west":{"uv":[1,29],"uv_size":[0.25,0.5]},"up":{"uv":[29,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.3717,0.4276],"size":[0.2026,0.4419,0.0437],"pivot":[-0.1013,-4.9299,0.4714],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[29,1],"uv_size":[0.25,0.5]},"east":{"uv":[2,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,2],"uv_size":[0.25,0.5]},"west":{"uv":[3,29],"uv_size":[0.25,0.5]},"up":{"uv":[30,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.2474,0.3941],"size":[0.2026,0.3124,0.0186],"pivot":[-0.1013,-4.909,0.4127],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[31,32],"uv_size":[0.25,0.25]},"east":{"uv":[32,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,32],"uv_size":[0.25,0.25]},"west":{"uv":[0,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.1859,0.3766],"size":[0.2026,0.2571,0.0186],"pivot":[-0.1013,-4.9028,0.3952],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[33,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,33],"uv_size":[0.25,0.25]},"south":{"uv":[33,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.1304,0.3591],"size":[0.2026,0.2079,0.0186],"pivot":[-0.1013,-4.8965,0.3777],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[33,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,33],"uv_size":[0.25,0.25]},"south":{"uv":[33,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.0736,0.3416],"size":[0.2026,0.1573,0.0186],"pivot":[-0.1013,-4.8903,0.3602],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[33,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,33],"uv_size":[0.25,0.25]},"south":{"uv":[33,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-4.9821,0.3178],"size":[0.2026,0.0763,0.0128],"pivot":[-0.1013,-4.8798,0.3306],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[33,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,33],"uv_size":[0.25,0.25]},"south":{"uv":[33,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.0143,0.3298],"size":[0.2026,0.1042,0.0128],"pivot":[-0.1013,-4.8841,0.3427],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[33,13],"uv_size":[0.25,0.25]},"east":{"uv":[14,33],"uv_size":[0.25,0.25]},"south":{"uv":[33,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.5014,0.4703],"size":[0.2026,0.5653,0.0186],"pivot":[-0.1013,-4.9361,0.4889],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[29,3],"uv_size":[0.25,0.5]},"east":{"uv":[4,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,4],"uv_size":[0.25,0.5]},"west":{"uv":[5,29],"uv_size":[0.25,0.5]},"up":{"uv":[33,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.4219,0.3057],"size":[0.2026,0.0757,0.0175],"pivot":[-0.1013,-5.3461,0.3232],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[33,17],"uv_size":[0.25,0.25]},"east":{"uv":[18,33],"uv_size":[0.25,0.25]},"south":{"uv":[33,18],"uv_size":[0.25,0.25]},"west":{"uv":[19,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.3695,0.2892],"size":[0.2026,0.0292,0.0175],"pivot":[-0.1013,-5.3403,0.3067],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[33,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,33],"uv_size":[0.25,0.25]},"south":{"uv":[33,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-3.4466,0.4889],"size":[0.2026,0.4258,0.3645],"uv":{"north":{"uv":[29,5],"uv_size":[0.25,0.5]},"east":{"uv":[6,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,6],"uv_size":[0.25,0.5]},"west":{"uv":[7,29],"uv_size":[0.25,0.5]},"up":{"uv":[33,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-4.4396,0.4889],"size":[0.2026,0.993,0.173],"uv":{"north":{"uv":[19,25],"uv_size":[0.25,1]},"east":{"uv":[25,19],"uv_size":[0.25,1]},"south":{"uv":[25,20],"uv_size":[0.25,1]},"west":{"uv":[21,25],"uv_size":[0.25,1]},"up":{"uv":[33,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-3.9482,0.6618],"size":[0.2026,0.5016,0.173],"uv":{"north":{"uv":[29,7],"uv_size":[0.25,0.5]},"east":{"uv":[8,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,8],"uv_size":[0.25,0.5]},"west":{"uv":[9,29],"uv_size":[0.25,0.5]},"up":{"uv":[33,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,1.3285,-0.4692],"size":[0.2026,0.0939,0.7508],"uv":{"north":{"uv":[33,26],"uv_size":[0.25,0.25]},"east":{"uv":[12,26],"uv_size":[0.75,0.25]},"south":{"uv":[27,33],"uv_size":[0.25,0.25]},"west":{"uv":[26,12],"uv_size":[0.75,0.25]},"up":{"uv":[13,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,13.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.359,1.719,-0.1151],"size":[0.1088,2.076,0.1679],"pivot":[-0.359,1.719,0.0529],"rotation":[0,-9,0],"uv":{"north":{"uv":[12,1],"uv_size":[0.25,2]},"east":{"uv":[3,12],"uv_size":[0.25,2]},"south":{"uv":[12,3],"uv_size":[0.25,2]},"west":{"uv":[12,5],"uv_size":[0.25,2]},"up":{"uv":[33,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3328,1.719,-0.3201],"size":[0.1088,2.076,0.2071],"pivot":[-0.3328,1.719,-0.113],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[6,12],"uv_size":[0.25,2]},"east":{"uv":[12,7],"uv_size":[0.25,2]},"south":{"uv":[8,12],"uv_size":[0.25,2]},"west":{"uv":[12,9],"uv_size":[0.25,2]},"up":{"uv":[33,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2502,1.719,-0.1151],"size":[0.1088,2.076,0.1679],"pivot":[0.359,1.719,0.0529],"rotation":[0,9,0],"uv":{"north":{"uv":[10,12],"uv_size":[0.25,2]},"east":{"uv":[11,12],"uv_size":[0.25,2]},"south":{"uv":[12,11],"uv_size":[0.25,2]},"west":{"uv":[0,13],"uv_size":[0.25,2]},"up":{"uv":[33,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2239,1.719,-0.3201],"size":[0.1088,2.076,0.2071],"pivot":[0.3328,1.719,-0.113],"rotation":[0,41.5,0],"uv":{"north":{"uv":[13,0],"uv_size":[0.25,2]},"east":{"uv":[1,13],"uv_size":[0.25,2]},"south":{"uv":[2,13],"uv_size":[0.25,2]},"west":{"uv":[13,2],"uv_size":[0.25,2]},"up":{"uv":[33,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1956,1.719,-0.4175],"size":[0.1088,2.076,0.1494],"pivot":[-0.1956,1.719,-0.2681],"rotation":[0,-64,0],"uv":{"north":{"uv":[13,4],"uv_size":[0.25,2]},"east":{"uv":[13,6],"uv_size":[0.25,2]},"south":{"uv":[7,13],"uv_size":[0.25,2]},"west":{"uv":[13,8],"uv_size":[0.25,2]},"up":{"uv":[33,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0867,1.719,-0.4175],"size":[0.1088,2.076,0.1494],"pivot":[0.1956,1.719,-0.2681],"rotation":[0,64,0],"uv":{"north":{"uv":[9,13],"uv_size":[0.25,2]},"east":{"uv":[13,10],"uv_size":[0.25,2]},"south":{"uv":[12,13],"uv_size":[0.25,2]},"west":{"uv":[13,12],"uv_size":[0.25,2]},"up":{"uv":[33,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0613,1.719,-0.4562],"size":[0.1088,2.076,0.1226],"pivot":[-0.0613,1.719,-0.3336],"rotation":[0,-90,0],"uv":{"north":{"uv":[14,0],"uv_size":[0.25,2]},"east":{"uv":[14,2],"uv_size":[0.25,2]},"south":{"uv":[3,14],"uv_size":[0.25,2]},"west":{"uv":[4,14],"uv_size":[0.25,2]},"up":{"uv":[0,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4437,1.6224,-0.0192],"size":[0.8874,0.1733,0.7592],"uv":{"north":{"uv":[25,21],"uv_size":[1,0.25]},"east":{"uv":[14,26],"uv_size":[0.75,0.25]},"south":{"uv":[25,22],"uv_size":[1,0.25]},"west":{"uv":[26,14],"uv_size":[0.75,0.25]},"up":{"uv":[9,3],"uv_size":[1,0.75]},"down":{"uv":[9,4.75],"uv_size":[1,-0.75]}}},{"origin":[0.281,1.6224,-0.2732],"size":[0.1627,0.1733,0.254],"pivot":[0.4437,1.7957,-0.0192],"rotation":[0,14.25,0],"uv":{"north":{"uv":[1,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2185,1.6224,-0.431],"size":[0.1627,0.1733,0.1656],"pivot":[0.3812,1.7957,-0.2654],"rotation":[0,42.75,0],"uv":{"north":{"uv":[4,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.106,1.6224,-0.5526],"size":[0.1627,0.1733,0.1656],"pivot":[0.2687,1.7957,-0.387],"rotation":[0,65.25,0],"uv":{"north":{"uv":[7,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,7],"uv_size":[0.25,0.25]},"south":{"uv":[8,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,8],"uv_size":[0.25,0.25]},"up":{"uv":[9,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4437,1.6224,-0.2732],"size":[0.1627,0.1733,0.254],"pivot":[-0.4437,1.7957,-0.0192],"rotation":[0,-14.25,0],"uv":{"north":{"uv":[10,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,10],"uv_size":[0.25,0.25]},"south":{"uv":[11,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,11],"uv_size":[0.25,0.25]},"up":{"uv":[12,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3812,1.6224,-0.431],"size":[0.1627,0.1733,0.1656],"pivot":[-0.3812,1.7957,-0.2654],"rotation":[0,-42.75,0],"uv":{"north":{"uv":[13,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,13],"uv_size":[0.25,0.25]},"south":{"uv":[14,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,14],"uv_size":[0.25,0.25]},"up":{"uv":[15,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2687,1.6224,-0.5526],"size":[0.1627,0.1733,0.1656],"pivot":[-0.2687,1.7957,-0.387],"rotation":[0,-65.25,0],"uv":{"north":{"uv":[16,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1183,1.6224,-0.693],"size":[0.1627,0.1733,0.2366],"pivot":[-0.1183,1.7957,-0.4564],"rotation":[0,-90,0],"uv":{"north":{"uv":[19,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0717,1.6224,0.7399],"size":[0.5154,0.1733,0.2714],"pivot":[0.4437,1.7957,0.7399],"rotation":[0,-27,0],"uv":{"north":{"uv":[29,9],"uv_size":[0.5,0.25]},"east":{"uv":[22,34],"uv_size":[0.25,0.25]},"south":{"uv":[10,29],"uv_size":[0.5,0.25]},"west":{"uv":[34,22],"uv_size":[0.25,0.25]},"up":{"uv":[29,10],"uv_size":[0.5,0.25]},"down":{"uv":[11,29.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.4437,1.6224,0.7399],"size":[0.5154,0.1733,0.2714],"pivot":[-0.4437,1.7957,0.7399],"rotation":[0,27,0],"uv":{"north":{"uv":[29,11],"uv_size":[0.5,0.25]},"east":{"uv":[23,34],"uv_size":[0.25,0.25]},"south":{"uv":[12,29],"uv_size":[0.5,0.25]},"west":{"uv":[34,23],"uv_size":[0.25,0.25]},"up":{"uv":[29,12],"uv_size":[0.5,0.25]},"down":{"uv":[13,29.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.3205,1.6224,0.8059],"size":[0.6409,2.091,0.1759],"uv":{"north":{"uv":[4,2],"uv_size":[0.75,2]},"east":{"uv":[14,4],"uv_size":[0.25,2]},"south":{"uv":[3,4],"uv_size":[0.75,2]},"west":{"uv":[5,14],"uv_size":[0.25,2]},"up":{"uv":[15,26],"uv_size":[0.75,0.25]},"down":{"uv":[26,15.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.1013,-4.9361,-0.4391],"size":[0.0143,3.7524,0.7207],"pivot":[-0.1013,-4.9361,0.2816],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[4,7],"uv_size":[0.25,3.75]},"east":{"uv":[0,0],"uv_size":[0.75,3.75]},"south":{"uv":[7,4],"uv_size":[0.25,3.75]},"west":{"uv":[1,0],"uv_size":[0.75,3.75]},"up":{"uv":[16,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,16.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0869,-4.9361,-0.4391],"size":[0.0143,3.7524,0.7207],"pivot":[0.1013,-4.9361,0.2816],"rotation":[0,7.5,0],"uv":{"north":{"uv":[5,7],"uv_size":[0.25,3.75]},"east":{"uv":[2,0],"uv_size":[0.75,3.75]},"south":{"uv":[0,8],"uv_size":[0.25,3.75]},"west":{"uv":[3,0],"uv_size":[0.75,3.75]},"up":{"uv":[17,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,17.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0284,-5.2127,-0.9117],"size":[0.0143,0.7207,6.5875],"pivot":[0.1091,-4.7361,-0.191],"rotation":[90,7.5,0],"uv":{"west":{"uv":[208.75,256],"uv_size":[-196.75,-18.75]}}},{"origin":[-0.0024,-6.1353,-1.1601],"size":[0.0143,0.7207,0.7875],"pivot":[0.012,-6.1588,-0.4561],"rotation":[-90,7.5,0],"uv":{"west":{"uv":[206.5,233.75],"uv_size":[25.75,21.5]}}},{"origin":[-0.012,-6.1353,-1.1601],"size":[0.0143,0.7207,0.7875],"pivot":[-0.012,-6.1588,-0.4561],"rotation":[-90,-7.5,0],"uv":{"east":{"uv":[232.25,233.75],"uv_size":[-25.75,21.5]}}},{"origin":[-0.1013,0.8073,-0.4105],"size":[0.2026,0.5212,0.1588],"pivot":[-0.1013,1.3285,-0.4105],"rotation":[73.25,0,0],"uv":{"north":{"uv":[29,13],"uv_size":[0.25,0.5]},"east":{"uv":[14,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,14],"uv_size":[0.25,0.5]},"west":{"uv":[15,29],"uv_size":[0.25,0.5]},"up":{"uv":[24,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,0.6571,0.0886],"size":[0.2026,0.6173,0.2546],"pivot":[-0.1013,1.1783,0.0886],"rotation":[36.5,0,0],"uv":{"north":{"uv":[29,15],"uv_size":[0.25,0.5]},"east":{"uv":[16,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,16],"uv_size":[0.25,0.5]},"west":{"uv":[17,29],"uv_size":[0.25,0.5]},"up":{"uv":[25,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,0.6382,-0.0999],"size":[0.0461,0.6173,0.1315],"pivot":[-0.1013,1.2555,0.0315],"rotation":[38.6922,-17.916,-13.8411],"uv":{"north":{"uv":[29,17],"uv_size":[0.25,0.5]},"east":{"uv":[18,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,18],"uv_size":[0.25,0.5]},"west":{"uv":[19,29],"uv_size":[0.25,0.5]},"up":{"uv":[26,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0552,0.6382,-0.0999],"size":[0.0461,0.6173,0.1315],"pivot":[0.1013,1.2555,0.0315],"rotation":[38.6922,17.916,13.8411],"uv":{"north":{"uv":[29,19],"uv_size":[0.25,0.5]},"east":{"uv":[20,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,20],"uv_size":[0.25,0.5]},"west":{"uv":[21,29],"uv_size":[0.25,0.5]},"up":{"uv":[27,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0405,0.6668,-0.5169],"size":[0.0235,0.5212,0.223],"pivot":[-0.0405,1.188,-0.4528],"rotation":[74.4611,-6.3319,-21.6352],"uv":{"north":{"uv":[29,21],"uv_size":[0.25,0.5]},"east":{"uv":[22,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,22],"uv_size":[0.25,0.5]},"west":{"uv":[23,29],"uv_size":[0.25,0.5]},"up":{"uv":[28,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0405,0.817,-0.816],"size":[0.0235,0.0551,0.0229],"pivot":[-0.0405,1.3382,-0.9519],"rotation":[74.4611,-6.3319,-21.6352],"uv":{"north":{"uv":[29,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0124,0.6783,-0.9844],"size":[0.0363,0.0551,0.2091],"pivot":[0.0124,1.1996,-0.9341],"rotation":[89.4611,-6.3319,-21.6352],"uv":{"north":{"uv":[32,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,34],"uv_size":[0.25,0.25]},"down":{"uv":[0,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.017,0.817,-0.816],"size":[0.0235,0.0551,0.0229],"pivot":[0.0405,1.3382,-0.9519],"rotation":[74.4611,6.3319,21.6352],"uv":{"north":{"uv":[35,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0649,0.9217,-0.9824],"size":[0.0363,0.0059,0.0221],"pivot":[-0.0649,1.3938,-0.9322],"rotation":[89.4611,-6.3319,-21.6352],"uv":{"north":{"uv":[35,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0459,0.6916,-0.9328],"size":[0.0517,0.0551,0.1743],"pivot":[0.0459,1.2129,-0.9301],"rotation":[89.4611,-6.3319,-21.6352],"uv":{"north":{"uv":[35,6],"uv_size":[0.25,0.25]},"east":{"uv":[7,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,7],"uv_size":[0.25,0.25]},"west":{"uv":[8,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0286,0.9217,-0.9824],"size":[0.0363,0.0059,0.0221],"pivot":[0.0649,1.3938,-0.9322],"rotation":[89.4611,6.3319,21.6352],"uv":{"north":{"uv":[35,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0487,0.6783,-0.9844],"size":[0.0363,0.0551,0.2091],"pivot":[-0.0124,1.1996,-0.9341],"rotation":[89.4611,6.3319,21.6352],"uv":{"north":{"uv":[35,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0889,0.6902,-0.7798],"size":[0.0466,0.0551,0.0878],"pivot":[0.0889,1.2115,-0.8636],"rotation":[89.4611,-6.3319,-21.6352],"uv":{"north":{"uv":[35,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1355,0.6902,-0.7798],"size":[0.0466,0.0551,0.0878],"pivot":[-0.0889,1.2115,-0.8636],"rotation":[89.4611,6.3319,21.6352],"uv":{"north":{"uv":[35,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.016,0.61,-0.4928],"size":[0.0223,0.5234,0.0229],"pivot":[-0.016,1.1313,-0.4699],"rotation":[78.1524,-11.9262,-44.5699],"uv":{"north":{"uv":[29,23],"uv_size":[0.25,0.5]},"east":{"uv":[24,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,24],"uv_size":[0.25,0.5]},"west":{"uv":[25,29],"uv_size":[0.25,0.5]},"up":{"uv":[35,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-6.1209,-0.4391],"size":[0.0143,1.1848,0.5776],"pivot":[-0.1013,-11.2152,0.2816],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[0,23],"uv_size":[0.25,1.25]},"east":{"uv":[11,6],"uv_size":[0.5,1.25]},"south":{"uv":[23,0],"uv_size":[0.25,1.25]},"west":{"uv":[7,11],"uv_size":[0.5,1.25]},"up":{"uv":[29,25],"uv_size":[0.25,0.5]},"down":{"uv":[26,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0869,-6.1209,-0.4391],"size":[0.0143,1.1848,0.5776],"pivot":[0.1013,-11.2152,0.2816],"rotation":[0,7.5,0],"uv":{"north":{"uv":[1,23],"uv_size":[0.25,1.25]},"east":{"uv":[11,8],"uv_size":[0.5,1.25]},"south":{"uv":[2,23],"uv_size":[0.25,1.25]},"west":{"uv":[9,11],"uv_size":[0.5,1.25]},"up":{"uv":[29,26],"uv_size":[0.25,0.5]},"down":{"uv":[27,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.076,-6.1307,-0.4427],"size":[0.0143,0.1422,0.5598],"pivot":[-0.076,-6.0334,0.0897],"rotation":[14.2482,-7.5,0],"uv":{"north":{"uv":[35,22],"uv_size":[0.25,0.25]},"east":{"uv":[29,27],"uv_size":[0.5,0.25]},"south":{"uv":[23,35],"uv_size":[0.25,0.25]},"west":{"uv":[28,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,28],"uv_size":[0.25,0.5]},"down":{"uv":[29,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0826,-6.1402,0.2807],"size":[0.1652,0.6715,0.0186],"pivot":[0.1185,-5.4686,0.2993],"rotation":[-13.7457,0,0],"uv":{"north":{"uv":[18,26],"uv_size":[0.25,0.75]},"east":{"uv":[26,18],"uv_size":[0.25,0.75]},"south":{"uv":[19,26],"uv_size":[0.25,0.75]},"west":{"uv":[26,19],"uv_size":[0.25,0.75]},"up":{"uv":[35,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-6.1402,0.2807],"size":[0.0284,0.6715,0.0186],"pivot":[-0.1013,-5.4686,0.2993],"rotation":[-13.7406,-0.3786,-1.5478],"uv":{"north":{"uv":[20,26],"uv_size":[0.25,0.75]},"east":{"uv":[26,20],"uv_size":[0.25,0.75]},"south":{"uv":[21,26],"uv_size":[0.25,0.75]},"west":{"uv":[26,21],"uv_size":[0.25,0.75]},"up":{"uv":[35,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0729,-6.1402,0.2807],"size":[0.0284,0.6715,0.0186],"pivot":[0.1013,-5.4686,0.2993],"rotation":[-13.7406,0.3786,1.5478],"uv":{"north":{"uv":[22,26],"uv_size":[0.25,0.75]},"east":{"uv":[26,22],"uv_size":[0.25,0.75]},"south":{"uv":[23,26],"uv_size":[0.25,0.75]},"west":{"uv":[26,23],"uv_size":[0.25,0.75]},"up":{"uv":[35,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.12,-5.4686,0.1373],"size":[0.0143,0.5325,0.1431],"pivot":[-0.12,-11.2152,0.4235],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[0,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,0],"uv_size":[0.25,0.5]},"south":{"uv":[1,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,1],"uv_size":[0.25,0.5]},"up":{"uv":[35,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1056,-5.4686,0.1373],"size":[0.0143,0.5325,0.1431],"pivot":[0.12,-11.2152,0.4235],"rotation":[0,7.5,0],"uv":{"north":{"uv":[2,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,2],"uv_size":[0.25,0.5]},"south":{"uv":[3,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,3],"uv_size":[0.25,0.5]},"up":{"uv":[35,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-6.1357,0.1293],"size":[0.0284,0.6715,0.152],"pivot":[-0.1013,-5.4642,0.2812],"rotation":[-13.8666,-7.6626,0.2449],"uv":{"north":{"uv":[24,26],"uv_size":[0.25,0.75]},"east":{"uv":[26,24],"uv_size":[0.25,0.75]},"south":{"uv":[25,26],"uv_size":[0.25,0.75]},"west":{"uv":[26,25],"uv_size":[0.25,0.75]},"up":{"uv":[35,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0729,-6.1357,0.1293],"size":[0.0284,0.6715,0.152],"pivot":[0.1013,-5.4642,0.2812],"rotation":[-13.8666,7.6626,-0.2449],"uv":{"north":{"uv":[26,26],"uv_size":[0.25,0.75]},"east":{"uv":[0,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,0],"uv_size":[0.25,0.75]},"west":{"uv":[1,27],"uv_size":[0.25,0.75]},"up":{"uv":[35,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1005,-4.7838,0.9432],"size":[0.013,1.3372,0.076],"pivot":[-0.1005,-3.4466,1.0192],"rotation":[0,0,-3.9766],"uv":{"north":{"uv":[23,2],"uv_size":[0.25,1.25]},"east":{"uv":[3,23],"uv_size":[0.25,1.25]},"south":{"uv":[23,4],"uv_size":[0.25,1.25]},"west":{"uv":[23,6],"uv_size":[0.25,1.25]},"up":{"uv":[35,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0876,-4.7838,0.9432],"size":[0.013,1.3372,0.076],"pivot":[0.1005,-3.4466,1.0192],"rotation":[0,0,3.9766],"uv":{"north":{"uv":[7,23],"uv_size":[0.25,1.25]},"east":{"uv":[23,8],"uv_size":[0.25,1.25]},"south":{"uv":[23,10],"uv_size":[0.25,1.25]},"west":{"uv":[23,12],"uv_size":[0.25,1.25]},"up":{"uv":[35,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0146,-4.2247,0.9432],"size":[0.0724,0.7985,0.076],"pivot":[-0.1946,-3.4457,1.0192],"rotation":[0,0,3.9766],"uv":{"north":{"uv":[27,1],"uv_size":[0.25,0.75]},"east":{"uv":[2,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,2],"uv_size":[0.25,0.75]},"west":{"uv":[3,27],"uv_size":[0.25,0.75]},"up":{"uv":[35,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0869,-4.2247,0.9432],"size":[0.0724,0.7985,0.076],"pivot":[0.1946,-3.4457,1.0192],"rotation":[0,0,-3.9766],"uv":{"north":{"uv":[27,3],"uv_size":[0.25,0.75]},"east":{"uv":[4,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,4],"uv_size":[0.25,0.75]},"west":{"uv":[5,27],"uv_size":[0.25,0.75]},"up":{"uv":[35,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0152,-3.6723,0.9432],"size":[0.0305,0.2316,0.076],"uv":{"north":{"uv":[35,34],"uv_size":[0.25,0.25]},"east":{"uv":[35,35],"uv_size":[0.25,0.25]},"south":{"uv":[0,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0373,-5.0224,0.9432],"size":[0.0248,0.1731,0.076],"pivot":[-0.0124,-4.7797,1.0192],"rotation":[0,0,180],"uv":{"north":{"uv":[2,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,2],"uv_size":[0.25,0.25]},"south":{"uv":[3,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,3],"uv_size":[0.25,0.25]},"up":{"uv":[4,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0485,-4.5216,0.9432],"size":[0.0335,0.3111,0.076],"pivot":[0.233,-3.9992,1.0192],"rotation":[0,0,-3.9766],"uv":{"north":{"uv":[5,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,5],"uv_size":[0.25,0.25]},"south":{"uv":[6,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,6],"uv_size":[0.25,0.25]},"up":{"uv":[7,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.015,-4.5216,0.9432],"size":[0.0335,0.3111,0.076],"pivot":[-0.233,-3.9992,1.0192],"rotation":[0,0,3.9766],"uv":{"north":{"uv":[8,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,8],"uv_size":[0.25,0.25]},"south":{"uv":[9,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,9],"uv_size":[0.25,0.25]},"up":{"uv":[10,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.5929,1.0192],"size":[0.0321,1.6205,0.1789],"pivot":[-0.1013,-3.4466,1.0192],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[17,15],"uv_size":[0.25,1.5]},"east":{"uv":[17,17],"uv_size":[0.25,1.5]},"south":{"uv":[18,0],"uv_size":[0.25,1.5]},"west":{"uv":[18,2],"uv_size":[0.25,1.5]},"up":{"uv":[11,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1005,-4.7864,0.9419],"size":[0.013,1.1345,0.0773],"pivot":[-0.1005,-3.4466,1.0192],"rotation":[0,11.5,-3.9766],"uv":{"north":{"uv":[23,14],"uv_size":[0.25,1.25]},"east":{"uv":[23,16],"uv_size":[0.25,1.25]},"south":{"uv":[17,23],"uv_size":[0.25,1.25]},"west":{"uv":[23,18],"uv_size":[0.25,1.25]},"up":{"uv":[12,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-4.0336,1.3731],"size":[0.0321,0.1473,0.1148],"pivot":[-0.1013,-2.4525,1.3731],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[13,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,13],"uv_size":[0.25,0.25]},"south":{"uv":[14,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,14],"uv_size":[0.25,0.25]},"up":{"uv":[15,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-3.8948,1.4225],"size":[0.0321,0.2116,0.0609],"pivot":[-0.1013,-2.3138,1.4225],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[16,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.179,-3.6546,1.0151],"size":[0.013,0.2047,0.004],"pivot":[-0.179,-2.3174,1.0192],"rotation":[0,11.5,-3.9766],"uv":{"north":{"uv":[19,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1798,-3.6546,1.009],"size":[0.013,0.1932,0.0062],"pivot":[-0.1798,-2.3174,1.0152],"rotation":[0,11.5,-3.9766],"uv":{"north":{"uv":[22,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-3.6955,1.4934],"size":[0.0321,0.1435,0.0089],"pivot":[-0.1013,-2.1144,1.4934],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[25,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0994,-3.6984,1.5016],"size":[0.0321,0.0515,0.0319],"pivot":[-0.0994,-2.1173,1.5016],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[28,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0928,-3.7089,1.531],"size":[0.0321,0.0283,0.0092],"pivot":[-0.0928,-2.1278,1.531],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[31,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0994,-3.6499,1.5189],"size":[0.0321,0.0614,0.0089],"pivot":[-0.0994,-2.0688,1.5189],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[34,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,36],"uv_size":[0.25,0.25]},"down":{"uv":[0,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0976,-3.6528,1.5271],"size":[0.0321,0.0395,0.0089],"pivot":[-0.0976,-2.0717,1.5271],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[37,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0958,-3.6557,1.5353],"size":[0.0321,0.0162,0.0089],"pivot":[-0.0958,-2.0746,1.5353],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[37,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-6.1402,0.2993],"size":[0.0038,0.6715,0.3936],"pivot":[-0.1013,-5.4686,0.2993],"rotation":[-14.0113,11.1768,-4.4096],"uv":{"north":{"uv":[27,5],"uv_size":[0.25,0.75]},"east":{"uv":[3,18],"uv_size":[0.5,0.75]},"south":{"uv":[6,27],"uv_size":[0.25,0.75]},"west":{"uv":[4,18],"uv_size":[0.5,0.75]},"up":{"uv":[4,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,4.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0641,-5.6516,1.184],"size":[0.0321,1.088,0.2109],"pivot":[-0.0641,-3.5053,1.184],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[25,23],"uv_size":[0.25,1]},"east":{"uv":[25,24],"uv_size":[0.25,1]},"south":{"uv":[25,25],"uv_size":[0.25,1]},"west":{"uv":[26,0],"uv_size":[0.25,1]},"up":{"uv":[37,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.032,-5.6516,1.184],"size":[0.0321,1.088,0.2109],"pivot":[0.0641,-3.5053,1.184],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[25.25,23],"uv_size":[-0.25,1]},"east":{"uv":[26.25,0],"uv_size":[-0.25,1]},"south":{"uv":[25.25,25],"uv_size":[-0.25,1]},"west":{"uv":[25.25,24],"uv_size":[-0.25,1]},"up":{"uv":[37.25,6],"uv_size":[-0.25,0.25]},"down":{"uv":[7.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.0234,-4.7795,0.9944],"size":[0.0156,0.8677,0.0247],"pivot":[-0.0078,-4.7795,1.0192],"rotation":[19.3846,0,-180],"uv":{"north":{"uv":[27,6],"uv_size":[0.25,0.75]},"east":{"uv":[7,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,7],"uv_size":[0.25,0.75]},"west":{"uv":[8,27],"uv_size":[0.25,0.75]},"up":{"uv":[37,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1159,-4.7874,0.824],"size":[0.013,0.613,0.1194],"pivot":[-0.1159,-3.4477,0.9434],"rotation":[0,11.5,-3.9766],"uv":{"north":{"uv":[5,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,5],"uv_size":[0.25,0.5]},"south":{"uv":[6,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,6],"uv_size":[0.25,0.5]},"up":{"uv":[37,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0826,-6.9362,0.1226],"size":[0.0043,0.8155,0.0172],"pivot":[-0.0826,-6.1207,0.1398],"rotation":[7.2377,-6.6803,-6.684],"uv":{"north":{"uv":[27,8],"uv_size":[0.25,0.75]},"east":{"uv":[9,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,9],"uv_size":[0.25,0.75]},"west":{"uv":[10,27],"uv_size":[0.25,0.75]},"up":{"uv":[37,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1002,-6.3894,0.1523],"size":[0.0038,0.2582,0.2878],"pivot":[-0.0766,-6.1159,0.0504],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[37,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.072,-6.6866,0.1873],"size":[0.0043,0.3009,0.1234],"pivot":[-0.0483,-6.3918,0.0854],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[37,13],"uv_size":[0.25,0.25]},"east":{"uv":[14,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0438,-6.9004,0.2222],"size":[0,0.2175,0.0273],"pivot":[-0.0202,-6.6677,0.1203],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[37,16],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[17,37],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0234,-4.7795,0.9431],"size":[0.0156,0.8677,0.0761],"pivot":[-0.0078,-4.7795,1.0192],"rotation":[19.7341,-10.5865,176.2294],"uv":{"north":{"uv":[27,10],"uv_size":[0.25,0.75]},"east":{"uv":[11,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,11],"uv_size":[0.25,0.75]},"west":{"uv":[12,27],"uv_size":[0.25,0.75]},"up":{"uv":[37,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0078,-4.7795,0.9431],"size":[0.0156,0.8677,0.0761],"pivot":[0.0078,-4.7795,1.0192],"rotation":[19.7341,10.5865,-176.2294],"uv":{"north":{"uv":[27.25,10],"uv_size":[-0.25,0.75]},"east":{"uv":[12.25,27],"uv_size":[-0.25,0.75]},"south":{"uv":[27.25,11],"uv_size":[-0.25,0.75]},"west":{"uv":[11.25,27],"uv_size":[-0.25,0.75]},"up":{"uv":[37.25,17],"uv_size":[-0.25,0.25]},"down":{"uv":[18.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.0078,-5.598,0.6551],"size":[0,1.3097,0.0761],"pivot":[-0.0078,-5.598,0.7311],"rotation":[19.7818,-10.502,175.9901],"uv":{"north":{"uv":[27,10],"uv_size":[0.25,0.75]},"east":{"uv":[11,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,11],"uv_size":[0.25,0.75]},"west":{"uv":[12,27],"uv_size":[0.25,0.75]},"up":{"uv":[37,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.017,-6.8083,0.2249],"size":[0,0.1044,0.0227],"pivot":[-0.017,-6.8083,0.2249],"rotation":[-9.7181,-10.502,175.9901],"uv":{"north":{"uv":[27,10],"uv_size":[0.25,0.75]},"east":{"uv":[11,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,11],"uv_size":[0.25,0.75]},"west":{"uv":[12,27],"uv_size":[0.25,0.75]},"up":{"uv":[37,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0132,-6.8042,0.247],"size":[0,0.0617,0.0227],"pivot":[-0.0132,-6.8042,0.247],"rotation":[-9.7181,-10.502,175.9901],"uv":{"north":{"uv":[27,10],"uv_size":[0.25,0.75]},"east":{"uv":[11,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,11],"uv_size":[0.25,0.75]},"west":{"uv":[12,27],"uv_size":[0.25,0.75]},"up":{"uv":[37,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.017,-6.8083,0.2249],"size":[0,0.1044,0.0227],"pivot":[0.017,-6.8083,0.2249],"rotation":[-9.7181,10.502,-175.9901],"uv":{"north":{"uv":[27.25,10],"uv_size":[-0.25,0.75]},"east":{"uv":[12.25,27],"uv_size":[-0.25,0.75]},"south":{"uv":[27.25,11],"uv_size":[-0.25,0.75]},"west":{"uv":[11.25,27],"uv_size":[-0.25,0.75]},"up":{"uv":[37.25,17],"uv_size":[-0.25,0.25]},"down":{"uv":[18.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.0132,-6.8042,0.247],"size":[0,0.0617,0.0227],"pivot":[0.0132,-6.8042,0.247],"rotation":[-9.7181,10.502,-175.9901],"uv":{"north":{"uv":[27.25,10],"uv_size":[-0.25,0.75]},"east":{"uv":[12.25,27],"uv_size":[-0.25,0.75]},"south":{"uv":[27.25,11],"uv_size":[-0.25,0.75]},"west":{"uv":[11.25,27],"uv_size":[-0.25,0.75]},"up":{"uv":[37.25,17],"uv_size":[-0.25,0.25]},"down":{"uv":[18.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.0078,-5.598,0.6551],"size":[0,1.3097,0.0761],"pivot":[0.0078,-5.598,0.7311],"rotation":[19.7818,10.502,-175.9901],"uv":{"north":{"uv":[27.25,10],"uv_size":[-0.25,0.75]},"east":{"uv":[12.25,27],"uv_size":[-0.25,0.75]},"south":{"uv":[27.25,11],"uv_size":[-0.25,0.75]},"west":{"uv":[11.25,27],"uv_size":[-0.25,0.75]},"up":{"uv":[37.25,17],"uv_size":[-0.25,0.25]},"down":{"uv":[18.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.072,-6.5755,0.3106],"size":[0.0043,0.1898,0.0602],"pivot":[-0.0483,-6.3918,0.0854],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[37,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.061,-6.4446,0.3692],"size":[0.0043,0.0674,0.0728],"pivot":[-0.0374,-6.3833,0.1439],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[37,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0964,-6.3894,0.1523],"size":[0.0038,0.2582,0.2878],"pivot":[0.0766,-6.1159,0.0504],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[37.25,10],"uv_size":[-0.25,0.25]},"east":{"uv":[12.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,11],"uv_size":[-0.25,0.25]},"west":{"uv":[11.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,12],"uv_size":[-0.25,0.25]},"down":{"uv":[13.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.0676,-6.6866,0.1873],"size":[0.0043,0.3009,0.1234],"pivot":[0.0483,-6.3918,0.0854],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[37.25,13],"uv_size":[-0.25,0.25]},"east":{"uv":[15.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,14],"uv_size":[-0.25,0.25]},"west":{"uv":[14.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,15],"uv_size":[-0.25,0.25]},"down":{"uv":[16.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.0676,-6.5755,0.3106],"size":[0.0043,0.1898,0.0602],"pivot":[0.0483,-6.3918,0.0854],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[37.25,18],"uv_size":[-0.25,0.25]},"east":{"uv":[20.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,19],"uv_size":[-0.25,0.25]},"west":{"uv":[19.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,20],"uv_size":[-0.25,0.25]},"down":{"uv":[21.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.0567,-6.4446,0.3692],"size":[0.0043,0.0674,0.0728],"pivot":[0.0374,-6.3833,0.1439],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[37.25,21],"uv_size":[-0.25,0.25]},"east":{"uv":[23.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,22],"uv_size":[-0.25,0.25]},"west":{"uv":[22.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,23],"uv_size":[-0.25,0.25]},"down":{"uv":[24.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.0388,-6.842,0.2488],"size":[0,0.163,0.0161],"pivot":[-0.0152,-6.6638,0.147],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[8,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,8],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0359,-6.724,0.2645],"size":[0,0.0472,0.0662],"pivot":[-0.0122,-6.6615,0.1626],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[9,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,9],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0311,-6.7706,0.2704],"size":[0,0.0472,0.0421],"pivot":[-0.0075,-6.7081,0.1686],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[10,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,10],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0263,-6.8172,0.2763],"size":[0,0.0472,0.0189],"pivot":[-0.0027,-6.7547,0.1745],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[11,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,11],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0282,-5.598,0.7064],"size":[0.006,1.4128,0.0247],"pivot":[-0.0126,-5.598,0.7311],"rotation":[19.3846,0,-180],"uv":{"north":{"uv":[18,4],"uv_size":[0.25,1.5]},"east":{"uv":[5,18],"uv_size":[0.25,1.5]},"south":{"uv":[6,18],"uv_size":[0.25,1.5]},"west":{"uv":[18,6],"uv_size":[0.25,1.5]},"up":{"uv":[12,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0617,-6.1307,-0.4427],"size":[0.0143,0.1422,0.5598],"pivot":[0.076,-6.0334,0.0897],"rotation":[14.2482,7.5,0],"uv":{"north":{"uv":[24,38],"uv_size":[0.25,0.25]},"east":{"uv":[7,30],"uv_size":[0.5,0.25]},"south":{"uv":[38,24],"uv_size":[0.25,0.25]},"west":{"uv":[30,7],"uv_size":[0.5,0.25]},"up":{"uv":[8,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,8.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.017,0.6668,-0.5169],"size":[0.0235,0.5212,0.223],"pivot":[0.0405,1.188,-0.4528],"rotation":[74.4611,6.3319,21.6352],"uv":{"north":{"uv":[9,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,9],"uv_size":[0.25,0.5]},"south":{"uv":[10,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,10],"uv_size":[0.25,0.5]},"up":{"uv":[25,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0976,0.6916,-0.9328],"size":[0.0517,0.0551,0.1743],"pivot":[-0.0459,1.2129,-0.9301],"rotation":[89.4611,6.3319,21.6352],"uv":{"north":{"uv":[26,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0826,-6.2631,-0.3531],"size":[0.0029,0.1422,0.4747],"pivot":[-0.0826,-6.1209,0.1397],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[29,38],"uv_size":[0.25,0.25]},"east":{"uv":[11,30],"uv_size":[0.5,0.25]},"south":{"uv":[38,29],"uv_size":[0.25,0.25]},"west":{"uv":[30,11],"uv_size":[0.5,0.25]},"up":{"uv":[12,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,12.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0826,-6.9362,0.1398],"size":[0,0.8155,0.0167],"pivot":[-0.0826,-6.1207,0.1398],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[27,12],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[13,27],"uv_size":[0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0018,-6.9275,0.2254],"size":[0.0029,0.7576,0.0183],"pivot":[0.0018,-6.9275,0.2254],"rotation":[43.8958,-5.8832,-6.6204],"uv":{"north":{"uv":[27,13],"uv_size":[0.25,0.75]},"east":{"uv":[14,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,14],"uv_size":[0.25,0.75]},"west":{"uv":[15,27],"uv_size":[0.25,0.75]},"up":{"uv":[30,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0677,-6.5023,-0.1734],"size":[0.0004,0.2402,0.2235],"pivot":[-0.0677,-6.2622,0.1588],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[31,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,31],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0394,-6.4098,-0.2484],"size":[0.0004,0.0926,0.0838],"pivot":[-0.0394,-6.3172,-0.056],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[32,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,32],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0311,-6.534,-0.1572],"size":[0.0004,0.1277,0.0165],"pivot":[-0.0311,-6.4063,-0.0321],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[33,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,33],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.029,-6.4439,-0.2103],"size":[0.0004,0.0336,0.0537],"pivot":[-0.029,-6.4104,-0.0479],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[34,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,34],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0261,-6.5099,-0.1638],"size":[0.0004,0.0672,0.0159],"pivot":[-0.0261,-6.4427,-0.0393],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[35,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,35],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.024,-6.4823,-0.183],"size":[0.0004,0.0357,0.0198],"pivot":[-0.024,-6.4466,-0.0546],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[36,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,36],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0288,-6.4056,-0.2649],"size":[0.0004,0.0678,0.0198],"pivot":[-0.0288,-6.3378,-0.1365],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[37,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,37],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0263,-6.3784,-0.2826],"size":[0.0004,0.0357,0.0184],"pivot":[-0.0263,-6.3427,-0.1555],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[38,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[0,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0463,-6.7333,0.0161],"size":[0.0004,0.2401,0.096],"pivot":[-0.0463,-6.4932,0.2208],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,0],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0167,-6.7724,0.0957],"size":[0.0004,0.0322,0.0161],"pivot":[-0.0167,-6.7402,0.2205],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,1],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[2,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0341,-6.7283,-0.0006],"size":[0.0004,0.2114,0.0205],"pivot":[-0.0341,-6.5168,0.1285],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,2],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[3,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0316,-6.5505,-0.0983],"size":[0.0004,0.0286,0.0985],"pivot":[-0.0316,-6.5219,0.1088],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,3],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[4,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.029,-6.6459,-0.0294],"size":[0.0004,0.0965,0.0369],"pivot":[-0.029,-6.5494,0.1162],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,4],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[5,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0243,-6.5926,-0.0703],"size":[0.0004,0.0341,0.0424],"pivot":[-0.0243,-6.5585,0.0807],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,5],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[6,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0213,-6.6383,-0.0364],"size":[0.0004,0.047,0.0172],"pivot":[-0.0213,-6.5914,0.0895],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,6],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[7,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0191,-6.622,-0.0458],"size":[0.0004,0.0265,0.0101],"pivot":[-0.0191,-6.5956,0.073],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,7],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[8,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0204,-6.6805,0.0051],"size":[0.0004,0.0382,0.0273],"pivot":[-0.0204,-6.6423,0.1411],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,8],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[9,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.017,-6.6948,0.0284],"size":[0.0004,0.0158,0.014],"pivot":[-0.017,-6.679,0.151],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,9],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[10,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0805,-6.7947,0.0336],"size":[0.0043,0.5395,0.0897],"pivot":[-0.0805,-6.1225,0.1234],"rotation":[7.2377,-6.6803,-6.684],"uv":{"north":{"uv":[13,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,13],"uv_size":[0.25,0.5]},"south":{"uv":[14,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,14],"uv_size":[0.25,0.5]},"up":{"uv":[39,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0118,-6.4159,-0.3982],"size":[0.0029,0.1572,0.0183],"pivot":[-0.0118,-6.2587,-0.3982],"rotation":[40.2806,-5.7156,-6.8069],"uv":{"north":{"uv":[39,11],"uv_size":[0.25,0.25]},"east":{"uv":[12,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0188,-6.793,0.1112],"size":[0.0004,0.0568,0.0161],"pivot":[-0.0188,-6.7362,0.236],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,14],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[15,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.026,-6.9046,0.1761],"size":[0.0043,0.1169,0.0148],"pivot":[-0.026,-6.655,0.1909],"rotation":[7.2377,-6.6803,-6.684],"uv":{"north":{"uv":[39,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0241,-6.881,0.1616],"size":[0.0043,0.0917,0.0148],"pivot":[-0.0241,-6.6566,0.1763],"rotation":[7.2377,-6.6803,-6.684],"uv":{"north":{"uv":[39,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0222,-6.866,0.147],"size":[0.0043,0.075,0.0148],"pivot":[-0.0222,-6.6583,0.1618],"rotation":[7.2377,-6.6803,-6.684],"uv":{"north":{"uv":[39,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0203,-6.8457,0.1325],"size":[0.0043,0.0531,0.0148],"pivot":[-0.0203,-6.6599,0.1472],"rotation":[7.2377,-6.6803,-6.684],"uv":{"north":{"uv":[39,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0184,-6.8321,0.1179],"size":[0.0043,0.0378,0.0148],"pivot":[-0.0184,-6.6616,0.1327],"rotation":[7.2377,-6.6803,-6.684],"uv":{"north":{"uv":[39,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0226,-6.2798,-0.3815],"size":[0.0029,0.042,0.047],"pivot":[-0.0226,-6.2378,-0.3165],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[39,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0188,-6.3369,-0.3416],"size":[0.0029,0.0587,0.018],"pivot":[-0.0188,-6.2782,-0.3056],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[39,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0165,-6.3014,-0.3594],"size":[0.0029,0.0188,0.0185],"pivot":[-0.0165,-6.2826,-0.3229],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[39,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-6.9362,0.1226],"size":[0.0043,0.8155,0.0172],"pivot":[0.0826,-6.1207,0.1398],"rotation":[7.2377,6.6803,6.684],"uv":{"north":{"uv":[27,15],"uv_size":[0.25,0.75]},"east":{"uv":[16,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,16],"uv_size":[0.25,0.75]},"west":{"uv":[17,27],"uv_size":[0.25,0.75]},"up":{"uv":[0,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0438,-6.9004,0.2222],"size":[0,0.2175,0.0273],"pivot":[0.0202,-6.6677,0.1203],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[7,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,7],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0388,-6.842,0.2488],"size":[0,0.163,0.0161],"pivot":[0.0152,-6.6638,0.147],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[29,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,29],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0359,-6.724,0.2645],"size":[0,0.0472,0.0662],"pivot":[0.0122,-6.6615,0.1626],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[30,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,30],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0311,-6.7706,0.2704],"size":[0,0.0472,0.0421],"pivot":[0.0075,-6.7081,0.1686],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[31,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,31],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0263,-6.8172,0.2763],"size":[0,0.0472,0.0189],"pivot":[0.0027,-6.7547,0.1745],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[32,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,32],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0222,-5.598,0.7064],"size":[0.006,1.4128,0.0247],"pivot":[0.0126,-5.598,0.7311],"rotation":[19.3846,0,180],"uv":{"north":{"uv":[14,18],"uv_size":[0.25,1.5]},"east":{"uv":[18,14],"uv_size":[0.25,1.5]},"south":{"uv":[15,18],"uv_size":[0.25,1.5]},"west":{"uv":[16,18],"uv_size":[0.25,1.5]},"up":{"uv":[33,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0138,-5.598,0.7029],"size":[0.006,1.4128,0.0283],"pivot":[-0.0078,-5.598,0.7311],"rotation":[19.3845,0.0644,179.8168],"uv":{"north":{"uv":[1,19],"uv_size":[0.25,1.5]},"east":{"uv":[2,19],"uv_size":[0.25,1.5]},"south":{"uv":[19,2],"uv_size":[0.25,1.5]},"west":{"uv":[3,19],"uv_size":[0.25,1.5]},"up":{"uv":[35,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0798,-6.2631,-0.3531],"size":[0.0029,0.1422,0.4747],"pivot":[0.0826,-6.1209,0.1397],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[36,40],"uv_size":[0.25,0.25]},"east":{"uv":[15,30],"uv_size":[0.5,0.25]},"south":{"uv":[40,36],"uv_size":[0.25,0.25]},"west":{"uv":[30,15],"uv_size":[0.5,0.25]},"up":{"uv":[16,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,16.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0826,-6.9362,0.1398],"size":[0,0.8155,0.0167],"pivot":[0.0826,-6.1207,0.1398],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[27,17],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[18,27],"uv_size":[0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0047,-6.9275,0.2254],"size":[0.0029,0.7576,0.0183],"pivot":[-0.0018,-6.9275,0.2254],"rotation":[43.8958,5.8832,6.6204],"uv":{"north":{"uv":[27,18],"uv_size":[0.25,0.75]},"east":{"uv":[19,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,19],"uv_size":[0.25,0.75]},"west":{"uv":[20,27],"uv_size":[0.25,0.75]},"up":{"uv":[37,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0673,-6.5023,-0.1734],"size":[0.0004,0.2402,0.2235],"pivot":[0.0677,-6.2622,0.1588],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[38,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,38],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0011,-7.5748,-0.5244],"size":[0.0043,0.6415,0.7878],"pivot":[0.0032,-6.9162,0.2554],"rotation":[-89.9655,5.7285,6.8178],"uv":{"west":{"uv":[228.75,190.4],"uv_size":[18.1,14.75]}}},{"origin":[0.039,-6.4098,-0.2484],"size":[0.0004,0.0926,0.0838],"pivot":[0.0394,-6.3172,-0.056],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0307,-6.534,-0.1572],"size":[0.0004,0.1277,0.0165],"pivot":[0.0311,-6.4063,-0.0321],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[40,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[0,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0287,-6.4439,-0.2103],"size":[0.0004,0.0336,0.0537],"pivot":[0.029,-6.4104,-0.0479],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,0],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0257,-6.5099,-0.1638],"size":[0.0004,0.0672,0.0159],"pivot":[0.0261,-6.4427,-0.0393],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,1],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[2,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0237,-6.4823,-0.183],"size":[0.0004,0.0357,0.0198],"pivot":[0.024,-6.4466,-0.0546],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,2],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[3,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0284,-6.4056,-0.2649],"size":[0.0004,0.0678,0.0198],"pivot":[0.0288,-6.3378,-0.1365],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,3],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[4,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0259,-6.3784,-0.2826],"size":[0.0004,0.0357,0.0184],"pivot":[0.0263,-6.3427,-0.1555],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,4],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[5,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0459,-6.7333,0.0161],"size":[0.0004,0.2401,0.096],"pivot":[0.0463,-6.4932,0.2208],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,5],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[6,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0163,-6.7724,0.0957],"size":[0.0004,0.0322,0.0161],"pivot":[0.0167,-6.7402,0.2205],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,6],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[7,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0338,-6.7283,-0.0006],"size":[0.0004,0.2114,0.0205],"pivot":[0.0341,-6.5168,0.1285],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,7],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[8,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0312,-6.5505,-0.0983],"size":[0.0004,0.0286,0.0985],"pivot":[0.0316,-6.5219,0.1088],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,8],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[9,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0286,-6.6459,-0.0294],"size":[0.0004,0.0965,0.0369],"pivot":[0.029,-6.5494,0.1162],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,9],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[10,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0239,-6.5926,-0.0703],"size":[0.0004,0.0341,0.0424],"pivot":[0.0243,-6.5585,0.0807],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,10],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[11,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0209,-6.6383,-0.0364],"size":[0.0004,0.047,0.0172],"pivot":[0.0213,-6.5914,0.0895],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,11],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[12,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0187,-6.622,-0.0458],"size":[0.0004,0.0265,0.0101],"pivot":[0.0191,-6.5956,0.073],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,12],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[13,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.02,-6.6805,0.0051],"size":[0.0004,0.0382,0.0273],"pivot":[0.0204,-6.6423,0.1411],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,13],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[14,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0166,-6.6948,0.0284],"size":[0.0004,0.0158,0.014],"pivot":[0.017,-6.679,0.151],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,14],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[15,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0761,-6.7947,0.0336],"size":[0.0043,0.5395,0.0897],"pivot":[0.0805,-6.1225,0.1234],"rotation":[7.2377,6.6803,6.684],"uv":{"north":{"uv":[17,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,17],"uv_size":[0.25,0.5]},"south":{"uv":[18,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,18],"uv_size":[0.25,0.5]},"up":{"uv":[41,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0089,-6.4159,-0.3982],"size":[0.0029,0.1572,0.0183],"pivot":[0.0118,-6.2587,-0.3982],"rotation":[40.2806,5.7156,6.8069],"uv":{"north":{"uv":[41,16],"uv_size":[0.25,0.25]},"east":{"uv":[17,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,17],"uv_size":[0.25,0.25]},"west":{"uv":[18,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0184,-6.793,0.1112],"size":[0.0004,0.0568,0.0161],"pivot":[0.0188,-6.7362,0.236],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,19],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[20,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0217,-6.9046,0.1761],"size":[0.0043,0.1169,0.0148],"pivot":[0.026,-6.655,0.1909],"rotation":[7.2377,6.6803,6.684],"uv":{"north":{"uv":[41,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0198,-6.881,0.1616],"size":[0.0043,0.0917,0.0148],"pivot":[0.0241,-6.6566,0.1763],"rotation":[7.2377,6.6803,6.684],"uv":{"north":{"uv":[41,23],"uv_size":[0.25,0.25]},"east":{"uv":[24,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,24],"uv_size":[0.25,0.25]},"west":{"uv":[25,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0179,-6.866,0.147],"size":[0.0043,0.075,0.0148],"pivot":[0.0222,-6.6583,0.1618],"rotation":[7.2377,6.6803,6.684],"uv":{"north":{"uv":[41,26],"uv_size":[0.25,0.25]},"east":{"uv":[27,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,27],"uv_size":[0.25,0.25]},"west":{"uv":[28,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.016,-6.8457,0.1325],"size":[0.0043,0.0531,0.0148],"pivot":[0.0203,-6.6599,0.1472],"rotation":[7.2377,6.6803,6.684],"uv":{"north":{"uv":[41,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.014,-6.8321,0.1179],"size":[0.0043,0.0378,0.0148],"pivot":[0.0184,-6.6616,0.1327],"rotation":[7.2377,6.6803,6.684],"uv":{"north":{"uv":[41,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0197,-6.2798,-0.3815],"size":[0.0029,0.042,0.047],"pivot":[0.0226,-6.2378,-0.3165],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[41,35],"uv_size":[0.25,0.25]},"east":{"uv":[36,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,36],"uv_size":[0.25,0.25]},"west":{"uv":[37,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.016,-6.3369,-0.3416],"size":[0.0029,0.0587,0.018],"pivot":[0.0188,-6.2782,-0.3056],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[41,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,39],"uv_size":[0.25,0.25]},"west":{"uv":[40,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0137,-6.3014,-0.3594],"size":[0.0029,0.0188,0.0185],"pivot":[0.0165,-6.2826,-0.3229],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,0],"uv_size":[0.25,0.25]},"south":{"uv":[1,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,1],"uv_size":[0.25,0.25]},"up":{"uv":[2,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0975,-6.1402,0.2993],"size":[0.0038,0.6715,0.3936],"pivot":[0.1013,-5.4686,0.2993],"rotation":[-14.0113,-11.1768,4.4096],"uv":{"north":{"uv":[27,20],"uv_size":[0.25,0.75]},"east":{"uv":[4,19],"uv_size":[0.5,0.75]},"south":{"uv":[21,27],"uv_size":[0.25,0.75]},"west":{"uv":[19,4],"uv_size":[0.5,0.75]},"up":{"uv":[19,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,19.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0164,-5.8639,0.6739],"size":[0.0038,0.306,0.0374],"pivot":[0.0202,-5.5579,0.6739],"rotation":[-14.0113,-11.1768,4.4096],"uv":{"north":{"uv":[9,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0078,-5.598,0.6987],"size":[0.006,0.2026,0.0324],"pivot":[0.0078,-5.598,0.7311],"rotation":[19.766,10.5252,-176.0555],"uv":{"north":{"uv":[12,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0079,-5.9558,0.6013],"size":[0.0038,0.1008,0.0181],"pivot":[0.0117,-5.8551,0.6013],"rotation":[-14.0113,-11.1768,4.4096],"uv":{"north":{"uv":[15,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0692,-5.5929,1.0192],"size":[0.0321,1.6205,0.1789],"pivot":[0.1013,-3.4466,1.0192],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[19,5],"uv_size":[0.25,1.5]},"east":{"uv":[7,19],"uv_size":[0.25,1.5]},"south":{"uv":[19,7],"uv_size":[0.25,1.5]},"west":{"uv":[19,9],"uv_size":[0.25,1.5]},"up":{"uv":[19,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0043,-7.8118,0.1347],"size":[0.0321,0.8844,3.5361],"pivot":[0.0364,-6.9407,0.1151],"rotation":[88.0003,-11.2955,4.0777],"uv":{"west":{"uv":[250,191],"uv_size":[-101.4,-27.15]}}},{"origin":[-0.0427,-5.2127,-0.9117],"size":[0.0143,0.7207,6.5875],"pivot":[-0.1091,-4.7361,-0.191],"rotation":[90,-7.5,0],"uv":{"east":{"uv":[12,256],"uv_size":[196.75,-18.75]}}},{"origin":[-0.1053,0.2553,-0.6002],"size":[0.2027,0.3643,1.1965],"pivot":[-0.1053,0.2553,0.6029],"rotation":[-90,0,0],"uv":{"east":{"uv":[37.25,213.75],"uv_size":[-37,8.25]}}},{"origin":[-0.1053,-2.0517,-3.2184],"size":[0.2027,0.3213,3.5035],"pivot":[-0.1053,-2.0517,0.2816],"rotation":[-90,0,0],"uv":{"east":{"uv":[105.25,227.5],"uv_size":[-105,9.25]}}},{"origin":[-0.0454,0.6141,-0.4489],"size":[0.0127,0.3993,2.5608],"pivot":[0,0,0],"rotation":[-90,0,0],"uv":{"east":{"uv":[101.25,212.75],"uv_size":[-65.5,10.25]}}},{"origin":[-0.1053,-5.4553,-3.1184],"size":[0.2027,0.7213,3.4035],"pivot":[-0.1053,-5.4553,0.2816],"rotation":[-90,0,0],"uv":{"east":{"uv":[206.75,107],"uv_size":[-102.75,24.25]}}},{"origin":[-0.0364,-7.8118,0.1347],"size":[0.0321,0.8844,3.5361],"pivot":[-0.0364,-6.9407,0.1151],"rotation":[88.0003,11.2955,-4.0777],"uv":{"east":{"uv":[148.6,191],"uv_size":[101.4,-27.15]}}},{"origin":[-0.0032,-7.5748,-0.5244],"size":[0.0043,0.6415,0.7878],"pivot":[-0.0032,-6.9162,0.2554],"rotation":[-89.9655,-5.7285,-6.8178],"uv":{"east":{"uv":[246.85,190.4],"uv_size":[-18.1,14.75]}}},{"origin":[0.0876,-4.7864,0.9419],"size":[0.013,1.1345,0.0773],"pivot":[0.1005,-3.4466,1.0192],"rotation":[0,-11.5,3.9766],"uv":{"north":{"uv":[19,23],"uv_size":[0.25,1.25]},"east":{"uv":[23,20],"uv_size":[0.25,1.25]},"south":{"uv":[21,23],"uv_size":[0.25,1.25]},"west":{"uv":[23,22],"uv_size":[0.25,1.25]},"up":{"uv":[21,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1029,-4.7874,0.824],"size":[0.013,0.613,0.1194],"pivot":[0.1159,-3.4477,0.9434],"rotation":[0,-11.5,3.9766],"uv":{"north":{"uv":[20,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,20],"uv_size":[0.25,0.5]},"south":{"uv":[21,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,21],"uv_size":[0.25,0.5]},"up":{"uv":[22,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0692,-4.0336,1.3731],"size":[0.0321,0.1473,0.1148],"pivot":[0.1013,-2.4525,1.3731],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[23,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,23],"uv_size":[0.25,0.25]},"south":{"uv":[24,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0692,-3.6955,1.4934],"size":[0.0321,0.1435,0.0089],"pivot":[0.1013,-2.1144,1.4934],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[26,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0673,-3.6984,1.5016],"size":[0.0321,0.0515,0.0319],"pivot":[0.0994,-2.1173,1.5016],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[29,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0673,-3.6499,1.5189],"size":[0.0321,0.0614,0.0089],"pivot":[0.0994,-2.0688,1.5189],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[32,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0655,-3.6528,1.5271],"size":[0.0321,0.0395,0.0089],"pivot":[0.0976,-2.0717,1.5271],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[35,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0636,-3.6557,1.5353],"size":[0.0321,0.0162,0.0089],"pivot":[0.0958,-2.0746,1.5353],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[38,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1669,-3.6546,1.009],"size":[0.013,0.1932,0.0062],"pivot":[0.1798,-2.3174,1.0152],"rotation":[0,-11.5,3.9766],"uv":{"north":{"uv":[41,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,42],"uv_size":[0.25,0.25]},"west":{"uv":[0,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1661,-3.6546,1.0151],"size":[0.013,0.2047,0.004],"pivot":[0.179,-2.3174,1.0192],"rotation":[0,-11.5,3.9766],"uv":{"north":{"uv":[43,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0692,-3.8948,1.4225],"size":[0.0321,0.2116,0.0609],"pivot":[0.1013,-2.3138,1.4225],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[43,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0607,-3.7089,1.531],"size":[0.0321,0.0283,0.0092],"pivot":[0.0928,-2.1278,1.531],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[43,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-3.5822,0.6955],"size":[0.2026,0.0868,0.1259],"pivot":[-0.127,-2.9618,1.2688],"rotation":[-45,0,0],"uv":{"north":{"uv":[43,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-3.5798,0.5181],"size":[0.2026,0.0868,0.1259],"pivot":[-0.127,-2.9595,0.0707],"rotation":[45,0,0],"uv":{"north":{"uv":[43,13],"uv_size":[0.25,0.25]},"east":{"uv":[14,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-2.0083,0.6955],"size":[0.2026,0.0868,0.1259],"pivot":[-0.127,-2.5418,1.2688],"rotation":[45,0,0],"uv":{"north":{"uv":[43,16],"uv_size":[0.25,0.25]},"east":{"uv":[17,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,17],"uv_size":[0.25,0.25]},"west":{"uv":[18,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-2.0106,0.5181],"size":[0.2026,0.0868,0.1259],"pivot":[-0.127,-2.5442,0.0707],"rotation":[-45,0,0],"uv":{"north":{"uv":[43,19],"uv_size":[0.25,0.25]},"east":{"uv":[20,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,20],"uv_size":[0.25,0.25]},"west":{"uv":[21,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,0.0926,-0.1486],"size":[0.2025,0.1338,0.2765],"pivot":[-0.1271,1.0596,0.0153],"rotation":[45,0,0],"uv":{"north":{"uv":[43,22],"uv_size":[0.25,0.25]},"east":{"uv":[23,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,23],"uv_size":[0.25,0.25]},"west":{"uv":[24,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-1.9827,-0.1486],"size":[0.2026,0.1338,0.2765],"pivot":[-0.127,-2.8158,0.0153],"rotation":[-45,0,0],"uv":{"north":{"uv":[43,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0993,0.2546,0.2816],"size":[0.0679,0.191,0.7375],"pivot":[-0.1251,0.4456,0.9066],"rotation":[0,0,-22.5],"uv":{"north":{"uv":[43,28],"uv_size":[0.25,0.25]},"east":{"uv":[27,23],"uv_size":[0.75,0.25]},"south":{"uv":[29,43],"uv_size":[0.25,0.25]},"west":{"uv":[24,27],"uv_size":[0.75,0.25]},"up":{"uv":[27,24],"uv_size":[0.25,0.75]},"down":{"uv":[25,27.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.6829,-0.1875,0.1314],"size":[0.0383,0.1338,0.2765],"pivot":[-0.7086,0.7795,0.2953],"rotation":[35.2644,30,-35.2644],"uv":{"north":{"uv":[43,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3482,-2.4872,0.437],"size":[0.0123,2.9427,0.0958],"pivot":[0.3224,0.4554,1.062],"rotation":[0,45,0],"uv":{"north":{"uv":[9,5],"uv_size":[0.25,3]},"east":{"uv":[6,9],"uv_size":[0.25,3]},"south":{"uv":[8,9],"uv_size":[0.25,3]},"west":{"uv":[9,8],"uv_size":[0.25,3]},"up":{"uv":[43,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.6829,-1.7026,0.1314],"size":[0.0383,0.1338,0.2765],"pivot":[-0.7086,-2.5358,0.2953],"rotation":[-35.2644,30,35.2644],"uv":{"north":{"uv":[43,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0993,-2.1956,0.2816],"size":[0.0679,0.191,0.7375],"pivot":[-0.1251,-2.1956,0.9066],"rotation":[0,0,22.5],"uv":{"north":{"uv":[43,36],"uv_size":[0.25,0.25]},"east":{"uv":[27,25],"uv_size":[0.75,0.25]},"south":{"uv":[37,43],"uv_size":[0.25,0.25]},"west":{"uv":[26,27],"uv_size":[0.75,0.25]},"up":{"uv":[27,26],"uv_size":[0.25,0.75]},"down":{"uv":[27,27.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0314,0.2546,0.2816],"size":[0.0679,0.191,0.7375],"pivot":[0.1251,0.4456,0.9066],"rotation":[0,0,22.5],"uv":{"north":{"uv":[43,37],"uv_size":[0.25,0.25]},"east":{"uv":[0,28],"uv_size":[0.75,0.25]},"south":{"uv":[38,43],"uv_size":[0.25,0.25]},"west":{"uv":[28,0],"uv_size":[0.75,0.25]},"up":{"uv":[1,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,1.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.6446,-0.1875,0.1314],"size":[0.0383,0.1338,0.2765],"pivot":[0.7086,0.7795,0.2953],"rotation":[35.2644,-30,35.2644],"uv":{"north":{"uv":[43,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,39],"uv_size":[0.25,0.25]},"west":{"uv":[40,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.6446,-1.7026,0.1314],"size":[0.0383,0.1338,0.2765],"pivot":[0.7086,-2.5358,0.2953],"rotation":[-35.2644,-30,-35.2644],"uv":{"north":{"uv":[43,41],"uv_size":[0.25,0.25]},"east":{"uv":[42,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,42],"uv_size":[0.25,0.25]},"west":{"uv":[43,43],"uv_size":[0.25,0.25]},"up":{"uv":[0,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0314,-2.1956,0.2816],"size":[0.0679,0.191,0.7375],"pivot":[0.1251,-2.1956,0.9066],"rotation":[0,0,-22.5],"uv":{"north":{"uv":[1,44],"uv_size":[0.25,0.25]},"east":{"uv":[2,28],"uv_size":[0.75,0.25]},"south":{"uv":[44,1],"uv_size":[0.25,0.25]},"west":{"uv":[28,2],"uv_size":[0.75,0.25]},"up":{"uv":[3,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,3.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.6411,1.4186,-1.0685],"size":[0.198,0.2036,0.1913],"pivot":[-0.0387,5.7801,-1.0498],"rotation":[0,22.5,0],"uv":{"north":{"uv":[2,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,2],"uv_size":[0.25,0.25]},"south":{"uv":[3,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,3],"uv_size":[0.25,0.25]},"up":{"uv":[4,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.6024,1.4186,-1.1466],"size":[0.198,0.2036,0.31],"uv":{"north":{"uv":[5,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,5],"uv_size":[0.25,0.25]},"south":{"uv":[6,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,6],"uv_size":[0.25,0.25]},"up":{"uv":[7,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5947,1.4186,-0.9386],"size":[0.1973,0.2036,0.255],"pivot":[0.0077,5.7801,-0.9332],"rotation":[0,27.5,0],"uv":{"north":{"uv":[8,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,8],"uv_size":[0.25,0.25]},"south":{"uv":[9,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,9],"uv_size":[0.25,0.25]},"up":{"uv":[10,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.8607,1.4186,-0.8692],"size":[0.3277,0.2036,0.1953],"pivot":[-0.7119,5.7801,-0.2668],"rotation":[0,-45,0],"uv":{"north":{"uv":[11,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,11],"uv_size":[0.25,0.25]},"south":{"uv":[12,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,12],"uv_size":[0.25,0.25]},"up":{"uv":[13,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.533,1.4186,-0.8692],"size":[0.3277,0.2036,0.1953],"pivot":[0.7119,5.7801,-0.2668],"rotation":[0,45,0],"uv":{"north":{"uv":[14,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,15],"uv_size":[0.25,0.25]},"up":{"uv":[16,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3975,1.4186,-0.9386],"size":[0.1973,0.2036,0.255],"pivot":[-0.0077,5.7801,-0.9332],"rotation":[0,-27.5,0],"uv":{"north":{"uv":[17,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4431,1.4186,-1.0685],"size":[0.198,0.2036,0.1913],"pivot":[0.0387,5.7801,-1.0498],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[20,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,20],"uv_size":[0.25,0.25]},"south":{"uv":[21,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,21],"uv_size":[0.25,0.25]},"up":{"uv":[22,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.6411,1.4186,-1.1059],"size":[0.198,0.2036,0.1913],"pivot":[-0.0387,5.7801,-0.9333],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[23,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,23],"uv_size":[0.25,0.25]},"south":{"uv":[24,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4431,1.4186,-1.1059],"size":[0.198,0.2036,0.1913],"pivot":[0.0387,5.7801,-0.9333],"rotation":[0,22.5,0],"uv":{"north":{"uv":[26,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.6548,1.4186,-1.3092],"size":[0.2058,0.2036,0.1953],"pivot":[0.7119,5.7801,-1.7163],"rotation":[0,-45,0],"uv":{"north":{"uv":[29,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4044,1.4186,-1.1466],"size":[0.198,0.2036,0.31],"uv":{"north":{"uv":[32,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3065,1.4186,-1.4948],"size":[0.2443,0.2036,0.1953],"pivot":[0.4021,5.7801,-1.9019],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[35,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5508,1.4186,-1.4948],"size":[0.2443,0.2036,0.1953],"pivot":[-0.4021,5.7801,-1.9019],"rotation":[0,22.5,0],"uv":{"north":{"uv":[38,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.8607,1.4186,-1.3092],"size":[0.2058,0.2036,0.1953],"pivot":[-0.7119,5.7801,-1.7163],"rotation":[0,45,0],"uv":{"north":{"uv":[41,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1579,1.4186,-1.5624],"size":[0.3159,0.2036,0.1953],"uv":{"north":{"uv":[44,44],"uv_size":[0.25,0.25]},"east":{"uv":[0,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,0],"uv_size":[0.25,0.25]},"west":{"uv":[1,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3605,-2.4872,0.437],"size":[0.0123,2.9427,0.0958],"pivot":[-0.3224,0.4554,1.062],"rotation":[0,-45,0],"uv":{"north":{"uv":[10,0],"uv_size":[0.25,3]},"east":{"uv":[1,10],"uv_size":[0.25,3]},"south":{"uv":[2,10],"uv_size":[0.25,3]},"west":{"uv":[10,3],"uv_size":[0.25,3]},"up":{"uv":[45,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4086,3.81,0],"size":[0.1797,0.2531,0.1797],"pivot":[0.4086,2.8032,0.1797],"rotation":[14.723,-14.2935,-46.8561],"uv":{"north":{"uv":[45,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4642,3.8169,-0.1305],"size":[0.1155,0.2467,0.8531],"pivot":[0.4648,2.8037,0.7774],"rotation":[0,0,-45],"uv":{"north":{"uv":[45,6],"uv_size":[0.25,0.25]},"east":{"uv":[4,28],"uv_size":[0.75,0.25]},"south":{"uv":[7,45],"uv_size":[0.25,0.25]},"west":{"uv":[28,4],"uv_size":[0.75,0.25]},"up":{"uv":[5,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,5.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.2204,3.3579,-0.4176],"size":[0.1797,0.3365,0.1861],"pivot":[-0.2204,3.6944,-0.4176],"rotation":[42.6944,-29.8768,-61.6635],"uv":{"north":{"uv":[45,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5882,3.81,0],"size":[0.1797,0.2531,0.1797],"pivot":[-0.4086,2.8032,0.1797],"rotation":[14.723,14.2935,46.8561],"uv":{"north":{"uv":[45,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5798,3.8169,-0.1305],"size":[0.1155,0.2467,0.8531],"pivot":[-0.4648,2.8037,0.7774],"rotation":[0,0,45],"uv":{"north":{"uv":[45,13],"uv_size":[0.25,0.25]},"east":{"uv":[6,28],"uv_size":[0.75,0.25]},"south":{"uv":[14,45],"uv_size":[0.25,0.25]},"west":{"uv":[28,6],"uv_size":[0.75,0.25]},"up":{"uv":[7,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,7.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0408,3.3579,-0.4176],"size":[0.1797,0.3365,0.1861],"pivot":[0.2204,3.6944,-0.4176],"rotation":[42.6944,29.8768,61.6635],"uv":{"north":{"uv":[45,14],"uv_size":[0.25,0.25]},"east":{"uv":[15,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,15],"uv_size":[0.25,0.25]},"west":{"uv":[16,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4437,1.7957,0.8863],"size":[0.0607,1.9178,0.125],"pivot":[-0.4437,1.969,0.7399],"rotation":[0,27,0],"uv":{"north":{"uv":[6,14],"uv_size":[0.25,2]},"east":{"uv":[14,6],"uv_size":[0.25,2]},"south":{"uv":[8,14],"uv_size":[0.25,2]},"west":{"uv":[14,8],"uv_size":[0.25,2]},"up":{"uv":[45,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3772,1.7957,0.6766],"size":[0.0544,1.9993,0.1937],"pivot":[-0.3772,1.7957,0.8704],"rotation":[0,-5.5,0],"uv":{"north":{"uv":[10,14],"uv_size":[0.25,2]},"east":{"uv":[14,10],"uv_size":[0.25,2]},"south":{"uv":[11,14],"uv_size":[0.25,2]},"west":{"uv":[14,12],"uv_size":[0.25,2]},"up":{"uv":[45,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.383,1.7957,0.8863],"size":[0.0607,1.9178,0.125],"pivot":[0.4437,1.969,0.7399],"rotation":[0,-27,0],"uv":{"north":{"uv":[13,14],"uv_size":[0.25,2]},"east":{"uv":[14,14],"uv_size":[0.25,2]},"south":{"uv":[0,15],"uv_size":[0.25,2]},"west":{"uv":[15,0],"uv_size":[0.25,2]},"up":{"uv":[45,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3229,1.7957,0.6766],"size":[0.0544,1.9993,0.1937],"pivot":[0.3772,1.7957,0.8704],"rotation":[0,5.5,0],"uv":{"north":{"uv":[1,15],"uv_size":[0.25,2]},"east":{"uv":[2,15],"uv_size":[0.25,2]},"south":{"uv":[15,2],"uv_size":[0.25,2]},"west":{"uv":[15,4],"uv_size":[0.25,2]},"up":{"uv":[45,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4437,1.6866,0.7399],"size":[0.5154,0.1091,0.2556],"pivot":[-0.4437,1.7957,0.7399],"rotation":[47.5,27,0],"uv":{"north":{"uv":[22,30],"uv_size":[0.5,0.25]},"east":{"uv":[45,21],"uv_size":[0.25,0.25]},"south":{"uv":[30,22],"uv_size":[0.5,0.25]},"west":{"uv":[22,45],"uv_size":[0.25,0.25]},"up":{"uv":[23,30],"uv_size":[0.5,0.25]},"down":{"uv":[30,23.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.0717,1.6866,0.7399],"size":[0.5154,0.1091,0.2556],"pivot":[0.4437,1.7957,0.7399],"rotation":[47.5,-27,0],"uv":{"north":{"uv":[24,30],"uv_size":[0.5,0.25]},"east":{"uv":[45,22],"uv_size":[0.25,0.25]},"south":{"uv":[30,24],"uv_size":[0.5,0.25]},"west":{"uv":[23,45],"uv_size":[0.25,0.25]},"up":{"uv":[25,30],"uv_size":[0.5,0.25]},"down":{"uv":[30,25.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.4265,3.6234,0.6511],"size":[0.853,1.3307,0.0714],"pivot":[-0.4265,4.9542,0.7225],"rotation":[3.25,0,0],"uv":{"north":{"uv":[8,0],"uv_size":[0.75,1.25]},"east":{"uv":[24,0],"uv_size":[0.25,1.25]},"south":{"uv":[1,8],"uv_size":[0.75,1.25]},"west":{"uv":[24,2],"uv_size":[0.25,1.25]},"up":{"uv":[8,28],"uv_size":[0.75,0.25]},"down":{"uv":[28,8.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4265,3.6234,0.7225],"size":[0.2053,1.3307,0.0778],"pivot":[-0.4265,4.9542,0.7225],"rotation":[3.5851,24.957,1.5143],"uv":{"north":{"uv":[4,24],"uv_size":[0.25,1.25]},"east":{"uv":[24,4],"uv_size":[0.25,1.25]},"south":{"uv":[5,24],"uv_size":[0.25,1.25]},"west":{"uv":[6,24],"uv_size":[0.25,1.25]},"up":{"uv":[45,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3631,3.6304,0.8457],"size":[0.2053,1.3307,0.0963],"pivot":[-0.3631,4.9612,0.8457],"rotation":[3.7514,29.9468,1.8747],"uv":{"north":{"uv":[24,6],"uv_size":[0.25,1.25]},"east":{"uv":[8,24],"uv_size":[0.25,1.25]},"south":{"uv":[24,8],"uv_size":[0.25,1.25]},"west":{"uv":[9,24],"uv_size":[0.25,1.25]},"up":{"uv":[45,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3936,3.6274,0.793],"size":[0.2053,1.3307,0.061],"pivot":[-0.3936,4.9582,0.793],"rotation":[3.7514,29.9468,1.8747],"uv":{"north":{"uv":[10,24],"uv_size":[0.25,1.25]},"east":{"uv":[24,10],"uv_size":[0.25,1.25]},"south":{"uv":[11,24],"uv_size":[0.25,1.25]},"west":{"uv":[12,24],"uv_size":[0.25,1.25]},"up":{"uv":[45,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.024,3.6359,0.9535],"size":[0.2887,1.3307,0.2],"pivot":[0.3307,4.9667,0.9428],"rotation":[10.4124,-71.7185,-9.8975],"uv":{"north":{"uv":[24,12],"uv_size":[0.25,1.25]},"east":{"uv":[13,24],"uv_size":[0.25,1.25]},"south":{"uv":[14,24],"uv_size":[0.25,1.25]},"west":{"uv":[24,14],"uv_size":[0.25,1.25]},"up":{"uv":[45,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1578,3.6304,0.8457],"size":[0.2053,1.3307,0.0963],"pivot":[0.3631,4.9612,0.8457],"rotation":[3.7514,-29.9468,-1.8747],"uv":{"north":{"uv":[15,24],"uv_size":[0.25,1.25]},"east":{"uv":[16,24],"uv_size":[0.25,1.25]},"south":{"uv":[24,16],"uv_size":[0.25,1.25]},"west":{"uv":[18,24],"uv_size":[0.25,1.25]},"up":{"uv":[45,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1883,3.6274,0.793],"size":[0.2053,1.3307,0.061],"pivot":[0.3936,4.9582,0.793],"rotation":[3.7514,-29.9468,-1.8747],"uv":{"north":{"uv":[24,18],"uv_size":[0.25,1.25]},"east":{"uv":[20,24],"uv_size":[0.25,1.25]},"south":{"uv":[24,20],"uv_size":[0.25,1.25]},"west":{"uv":[22,24],"uv_size":[0.25,1.25]},"up":{"uv":[45,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2212,3.6234,0.7225],"size":[0.2053,1.3307,0.0778],"pivot":[0.4265,4.9542,0.7225],"rotation":[3.5851,-24.957,-1.5143],"uv":{"north":{"uv":[24,22],"uv_size":[0.25,1.25]},"east":{"uv":[23,24],"uv_size":[0.25,1.25]},"south":{"uv":[24,24],"uv_size":[0.25,1.25]},"west":{"uv":[0,25],"uv_size":[0.25,1.25]},"up":{"uv":[45,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3127,3.6359,0.9535],"size":[0.2887,1.3307,0.2],"pivot":[-0.3307,4.9667,0.9428],"rotation":[10.4124,71.7185,9.8975],"uv":{"north":{"uv":[25,0],"uv_size":[0.25,1.25]},"east":{"uv":[1,25],"uv_size":[0.25,1.25]},"south":{"uv":[2,25],"uv_size":[0.25,1.25]},"west":{"uv":[25,2],"uv_size":[0.25,1.25]},"up":{"uv":[45,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0028,3.1747,1.0661],"size":[0.1219,0.4661,0.2494],"pivot":[0.1247,3.6408,1.0661],"rotation":[-90,-70.75,90],"uv":{"north":{"uv":[26,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,26],"uv_size":[0.25,0.5]},"south":{"uv":[27,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,27],"uv_size":[0.25,0.5]},"up":{"uv":[45,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3431,4.9432,0.5753],"size":[0.0835,1.4304,0.0775],"pivot":[0.4265,6.3737,0.5753],"rotation":[6.5504,-24.9754,-2.7757],"uv":{"north":{"uv":[19,11],"uv_size":[0.25,1.5]},"east":{"uv":[12,19],"uv_size":[0.25,1.5]},"south":{"uv":[19,13],"uv_size":[0.25,1.5]},"west":{"uv":[19,15],"uv_size":[0.25,1.5]},"up":{"uv":[45,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3101,4.948,0.645],"size":[0.0835,1.4329,0.061],"pivot":[0.3936,6.3809,0.645],"rotation":[6.8475,-29.8499,-3.4205],"uv":{"north":{"uv":[17,19],"uv_size":[0.25,1.5]},"east":{"uv":[19,17],"uv_size":[0.25,1.5]},"south":{"uv":[19,19],"uv_size":[0.25,1.5]},"west":{"uv":[20,0],"uv_size":[0.25,1.5]},"up":{"uv":[45,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2796,4.9496,0.6976],"size":[0.0835,1.4368,0.0962],"pivot":[0.3631,6.3864,0.6976],"rotation":[6.8475,-29.8499,-3.4205],"uv":{"north":{"uv":[20,2],"uv_size":[0.25,1.5]},"east":{"uv":[4,20],"uv_size":[0.25,1.5]},"south":{"uv":[20,4],"uv_size":[0.25,1.5]},"west":{"uv":[5,20],"uv_size":[0.25,1.5]},"up":{"uv":[45,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3631,4.9496,0.6976],"size":[0.0835,1.4368,0.0962],"pivot":[-0.3631,6.3864,0.6976],"rotation":[6.8475,29.8499,3.4205],"uv":{"north":{"uv":[6,20],"uv_size":[0.25,1.5]},"east":{"uv":[20,6],"uv_size":[0.25,1.5]},"south":{"uv":[8,20],"uv_size":[0.25,1.5]},"west":{"uv":[20,8],"uv_size":[0.25,1.5]},"up":{"uv":[45,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3936,4.948,0.645],"size":[0.0835,1.4329,0.061],"pivot":[-0.3936,6.3809,0.645],"rotation":[6.8475,29.8499,3.4205],"uv":{"north":{"uv":[9,20],"uv_size":[0.25,1.5]},"east":{"uv":[10,20],"uv_size":[0.25,1.5]},"south":{"uv":[20,10],"uv_size":[0.25,1.5]},"west":{"uv":[11,20],"uv_size":[0.25,1.5]},"up":{"uv":[45,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4265,4.9432,0.5753],"size":[0.0835,1.4304,0.0775],"pivot":[-0.4265,6.3737,0.5753],"rotation":[6.5504,24.9754,2.7757],"uv":{"north":{"uv":[20,12],"uv_size":[0.25,1.5]},"east":{"uv":[13,20],"uv_size":[0.25,1.5]},"south":{"uv":[14,20],"uv_size":[0.25,1.5]},"west":{"uv":[20,14],"uv_size":[0.25,1.5]},"up":{"uv":[45,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.315,4.9553,0.7804],"size":[0.0835,1.4397,0.2],"pivot":[-0.315,6.395,0.7804],"rotation":[18.6125,71.095,17.6726],"uv":{"north":{"uv":[20,18],"uv_size":[0.25,1.5]},"east":{"uv":[20,20],"uv_size":[0.25,1.5]},"south":{"uv":[0,21],"uv_size":[0.25,1.5]},"west":{"uv":[21,0],"uv_size":[0.25,1.5]},"up":{"uv":[45,39],"uv_size":[0.25,0.25]},"down":{"uv":[40,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2315,4.9553,0.7804],"size":[0.0835,1.4397,0.2],"pivot":[0.315,6.395,0.7804],"rotation":[18.6125,-71.095,-17.6726],"uv":{"north":{"uv":[1,21],"uv_size":[0.25,1.5]},"east":{"uv":[2,21],"uv_size":[0.25,1.5]},"south":{"uv":[21,2],"uv_size":[0.25,1.5]},"west":{"uv":[3,21],"uv_size":[0.25,1.5]},"up":{"uv":[45,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0413,4.9617,0.8418],"size":[0.0835,1.4397,0.2494],"pivot":[0.1247,6.4014,0.8418],"rotation":[90,-84.0644,-90],"uv":{"north":{"uv":[21,4],"uv_size":[0.25,1.5]},"east":{"uv":[21,6],"uv_size":[0.25,1.5]},"south":{"uv":[7,21],"uv_size":[0.25,1.5]},"west":{"uv":[21,8],"uv_size":[0.25,1.5]},"up":{"uv":[45,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4073,6.3165,0.0041],"size":[0.8145,0.3442,0.3529],"uv":{"north":{"uv":[9,28],"uv_size":[0.75,0.25]},"east":{"uv":[45,42],"uv_size":[0.25,0.25]},"south":{"uv":[28,9],"uv_size":[0.75,0.25]},"west":{"uv":[43,45],"uv_size":[0.25,0.25]},"up":{"uv":[10,28],"uv_size":[0.75,0.25]},"down":{"uv":[28,10.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.1564,6.3165,-0.0134],"size":[0.3297,0.3442,0.3094],"pivot":[-0.6407,5.6822,0.7599],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[45,43],"uv_size":[0.25,0.25]},"east":{"uv":[44,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,44],"uv_size":[0.25,0.25]},"west":{"uv":[45,45],"uv_size":[0.25,0.25]},"up":{"uv":[0,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3493,6.3165,-0.1592],"size":[0.3297,0.3442,0.1455],"pivot":[-0.8335,5.6822,0.6141],"rotation":[0,-45,0],"uv":{"north":{"uv":[1,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3557,6.3165,-0.4836],"size":[0.3297,0.3442,0.107],"pivot":[-0.84,5.6822,0.2897],"rotation":[0,-67.5,0],"uv":{"north":{"uv":[4,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3692,6.3165,-0.868],"size":[0.4297,0.3442,0.1743],"pivot":[-0.7535,5.6822,-0.0273],"rotation":[0,-90,0],"uv":{"north":{"uv":[28,30],"uv_size":[0.5,0.25]},"east":{"uv":[7,46],"uv_size":[0.25,0.25]},"south":{"uv":[30,28],"uv_size":[0.5,0.25]},"west":{"uv":[46,7],"uv_size":[0.25,0.25]},"up":{"uv":[29,30],"uv_size":[0.5,0.25]},"down":{"uv":[30,29.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1733,6.3165,-0.0134],"size":[0.3297,0.3442,0.3094],"pivot":[0.6407,5.6822,0.7599],"rotation":[0,22.5,0],"uv":{"north":{"uv":[8,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,8],"uv_size":[0.25,0.25]},"south":{"uv":[9,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,9],"uv_size":[0.25,0.25]},"up":{"uv":[10,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0196,6.3165,-0.1592],"size":[0.3297,0.3442,0.1455],"pivot":[0.8335,5.6822,0.6141],"rotation":[0,45,0],"uv":{"north":{"uv":[11,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,11],"uv_size":[0.25,0.25]},"south":{"uv":[12,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,12],"uv_size":[0.25,0.25]},"up":{"uv":[13,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.026,6.3165,-0.4836],"size":[0.3297,0.3442,0.107],"pivot":[0.84,5.6822,0.2897],"rotation":[0,67.5,0],"uv":{"north":{"uv":[14,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,15],"uv_size":[0.25,0.25]},"up":{"uv":[16,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0869,0.8228,-0.4391],"size":[0.0143,0.4176,0.7207],"pivot":[0.1013,0.8228,0.2816],"rotation":[0,7.5,0],"uv":{"north":{"uv":[30,30],"uv_size":[0.25,0.5]},"east":{"uv":[21,10],"uv_size":[0.75,0.5]},"south":{"uv":[0,31],"uv_size":[0.25,0.5]},"west":{"uv":[21,11],"uv_size":[0.75,0.5]},"up":{"uv":[11,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,11.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1013,0.8228,-0.4391],"size":[0.0143,0.4176,0.7207],"pivot":[-0.1013,0.8228,0.2816],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[31,0],"uv_size":[0.25,0.5]},"east":{"uv":[12,21],"uv_size":[0.75,0.5]},"south":{"uv":[1,31],"uv_size":[0.25,0.5]},"west":{"uv":[21,12],"uv_size":[0.75,0.5]},"up":{"uv":[12,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,12.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0869,-1.1838,-0.3301],"size":[0.0143,2.0065,0.6117],"pivot":[0.1013,0.4052,0.2816],"rotation":[0,7.5,0],"uv":{"north":{"uv":[15,6],"uv_size":[0.25,2]},"east":{"uv":[1,6],"uv_size":[0.5,2]},"south":{"uv":[7,15],"uv_size":[0.25,2]},"west":{"uv":[2,6],"uv_size":[0.5,2]},"up":{"uv":[31,1],"uv_size":[0.25,0.5]},"down":{"uv":[2,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1013,-1.1838,-0.3301],"size":[0.0143,2.0065,0.6117],"pivot":[-0.1013,0.4052,0.2816],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[15,8],"uv_size":[0.25,2]},"east":{"uv":[6,2],"uv_size":[0.5,2]},"south":{"uv":[9,15],"uv_size":[0.25,2]},"west":{"uv":[3,6],"uv_size":[0.5,2]},"up":{"uv":[31,2],"uv_size":[0.25,0.5]},"down":{"uv":[3,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0215,0.6055,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,0.4052,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[17,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,0.6055,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,0.4052,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[20,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,20],"uv_size":[0.25,0.25]},"south":{"uv":[21,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,21],"uv_size":[0.25,0.25]},"up":{"uv":[22,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.6017,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.4013,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[23,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,23],"uv_size":[0.25,0.25]},"south":{"uv":[24,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.6017,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.4013,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[26,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.6049,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.8666,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[29,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.6049,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.8666,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[32,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.4638,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.7255,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[35,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.4638,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.7255,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[38,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.4606,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.2602,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[41,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.4606,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.2602,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[44,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,44],"uv_size":[0.25,0.25]},"south":{"uv":[45,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,45],"uv_size":[0.25,0.25]},"up":{"uv":[46,46],"uv_size":[0.25,0.25]},"down":{"uv":[0,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,0.4644,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,0.2641,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[47,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,0.4644,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,0.2641,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[47,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.3356,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.5972,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[47,6],"uv_size":[0.25,0.25]},"east":{"uv":[7,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,7],"uv_size":[0.25,0.25]},"west":{"uv":[8,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.3356,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.5972,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[47,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.3323,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.132,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[47,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.3323,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.132,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[47,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,0.3361,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,0.1358,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[47,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,0.3361,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,0.1358,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[47,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.1457,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.4074,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[47,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.1457,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.4074,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[47,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.1425,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.0578,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[47,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.1425,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.0578,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[47,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,0.1463,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-0.054,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[47,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,0.1463,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-0.054,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[47,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.0072,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.2689,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[47,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.0072,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.2689,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[47,45],"uv_size":[0.25,0.25]},"east":{"uv":[46,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,46],"uv_size":[0.25,0.25]},"west":{"uv":[47,47],"uv_size":[0.25,0.25]},"up":{"uv":[0,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.004,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.1963,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[1,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.004,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.1963,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[4,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,0.0078,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-0.1925,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[7,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,7],"uv_size":[0.25,0.25]},"south":{"uv":[8,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,8],"uv_size":[0.25,0.25]},"up":{"uv":[9,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,0.0078,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-0.1925,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[10,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,10],"uv_size":[0.25,0.25]},"south":{"uv":[11,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,11],"uv_size":[0.25,0.25]},"up":{"uv":[12,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.1185,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.1432,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[13,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,13],"uv_size":[0.25,0.25]},"south":{"uv":[14,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,14],"uv_size":[0.25,0.25]},"up":{"uv":[15,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.1185,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.1432,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[16,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.1217,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.3221,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[19,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.1217,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.3221,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[22,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,-0.1179,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-0.3182,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[25,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,-0.1179,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-0.3182,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[28,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.3083,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.0466,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[31,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.3083,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.0466,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[34,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.3115,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.5118,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[37,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.3115,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.5118,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[40,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,40],"uv_size":[0.25,0.25]},"south":{"uv":[41,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,41],"uv_size":[0.25,0.25]},"up":{"uv":[42,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,-0.3077,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-0.508,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[43,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,43],"uv_size":[0.25,0.25]},"south":{"uv":[44,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,44],"uv_size":[0.25,0.25]},"up":{"uv":[45,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,-0.3077,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-0.508,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[46,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,46],"uv_size":[0.25,0.25]},"south":{"uv":[47,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,47],"uv_size":[0.25,0.25]},"up":{"uv":[48,48],"uv_size":[0.25,0.25]},"down":{"uv":[0,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.4452,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.1836,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[49,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.4452,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.1836,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[49,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.4485,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.6488,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[49,6],"uv_size":[0.25,0.25]},"east":{"uv":[7,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,7],"uv_size":[0.25,0.25]},"west":{"uv":[8,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.4485,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.6488,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[49,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,-0.4447,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-0.645,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[49,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,-0.4447,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-0.645,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[49,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.5765,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.3148,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[49,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.5765,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.3148,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[49,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.5797,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.7801,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[49,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.5797,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.7801,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[49,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,-0.5759,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-0.7762,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[49,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,-0.5759,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-0.7762,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[49,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.7625,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.5009,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[49,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.7625,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.5009,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[49,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.7658,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.9661,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[49,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.7658,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.9661,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[49,45],"uv_size":[0.25,0.25]},"east":{"uv":[46,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,46],"uv_size":[0.25,0.25]},"west":{"uv":[47,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,47],"uv_size":[0.25,0.25]},"down":{"uv":[48,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,-0.762,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-0.9623,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[49,48],"uv_size":[0.25,0.25]},"east":{"uv":[49,49],"uv_size":[0.25,0.25]},"south":{"uv":[0,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,-0.762,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-0.9623,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[2,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,2],"uv_size":[0.25,0.25]},"south":{"uv":[3,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,3],"uv_size":[0.25,0.25]},"up":{"uv":[4,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.8906,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.6289,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[5,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,5],"uv_size":[0.25,0.25]},"south":{"uv":[6,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,6],"uv_size":[0.25,0.25]},"up":{"uv":[7,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.8906,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.6289,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[8,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,8],"uv_size":[0.25,0.25]},"south":{"uv":[9,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,9],"uv_size":[0.25,0.25]},"up":{"uv":[10,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.8939,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-1.0942,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[11,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,11],"uv_size":[0.25,0.25]},"south":{"uv":[12,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,12],"uv_size":[0.25,0.25]},"up":{"uv":[13,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.8939,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-1.0942,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[14,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,15],"uv_size":[0.25,0.25]},"up":{"uv":[16,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,-0.89,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-1.0903,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[17,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,-0.89,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-1.0903,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[20,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,20],"uv_size":[0.25,0.25]},"south":{"uv":[21,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,21],"uv_size":[0.25,0.25]},"up":{"uv":[22,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-1.0187,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.757,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[23,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,23],"uv_size":[0.25,0.25]},"south":{"uv":[24,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-1.0187,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.757,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[26,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-1.0219,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-1.2222,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[29,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-1.0219,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-1.2222,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[32,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,-1.0181,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-1.2184,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[35,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,-1.0181,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-1.2184,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[38,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-1.2427,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.9811,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[41,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-1.2427,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.9811,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[44,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,44],"uv_size":[0.25,0.25]},"south":{"uv":[45,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,45],"uv_size":[0.25,0.25]},"up":{"uv":[46,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.8178,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.6175,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[47,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,47],"uv_size":[0.25,0.25]},"south":{"uv":[48,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,48],"uv_size":[0.25,0.25]},"up":{"uv":[49,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.8178,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.6175,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[50,50],"uv_size":[0.25,0.25]},"east":{"uv":[0,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,0],"uv_size":[0.25,0.25]},"west":{"uv":[1,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1055,6.3165,0.1879],"size":[0.3297,0.5841,0.1764],"pivot":[-0.5898,6.0264,-0.276],"rotation":[0,22.5,0],"uv":{"north":{"uv":[31,3],"uv_size":[0.25,0.5]},"east":{"uv":[4,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,4],"uv_size":[0.25,0.5]},"west":{"uv":[5,31],"uv_size":[0.25,0.5]},"up":{"uv":[51,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2984,6.3165,0.4977],"size":[0.3297,0.5841,0.1455],"pivot":[-0.7826,6.0264,-0.1301],"rotation":[0,45,0],"uv":{"north":{"uv":[31,5],"uv_size":[0.25,0.5]},"east":{"uv":[6,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,6],"uv_size":[0.25,0.5]},"west":{"uv":[7,31],"uv_size":[0.25,0.5]},"up":{"uv":[51,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3048,6.3165,0.8607],"size":[0.3297,0.5841,0.107],"pivot":[-0.7891,6.0264,0.1943],"rotation":[0,67.5,0],"uv":{"north":{"uv":[31,7],"uv_size":[0.25,0.5]},"east":{"uv":[8,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,8],"uv_size":[0.25,0.5]},"west":{"uv":[9,31],"uv_size":[0.25,0.5]},"up":{"uv":[51,4],"uv_size":[0.25,0.25]},"down":{"uv":[5,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2973,6.3165,1.1776],"size":[0.3069,0.5841,0.2761],"pivot":[-0.8044,6.0264,0.5113],"rotation":[0,90,0],"uv":{"north":{"uv":[31,9],"uv_size":[0.25,0.5]},"east":{"uv":[10,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,10],"uv_size":[0.25,0.5]},"west":{"uv":[11,31],"uv_size":[0.25,0.5]},"up":{"uv":[51,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2242,6.3165,0.1879],"size":[0.3297,0.5841,0.1764],"pivot":[0.5898,6.0264,-0.276],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[31,11],"uv_size":[0.25,0.5]},"east":{"uv":[12,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,12],"uv_size":[0.25,0.5]},"west":{"uv":[13,31],"uv_size":[0.25,0.5]},"up":{"uv":[51,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0313,6.3165,0.4977],"size":[0.3297,0.5841,0.1455],"pivot":[0.7826,6.0264,-0.1301],"rotation":[0,-45,0],"uv":{"north":{"uv":[31,13],"uv_size":[0.25,0.5]},"east":{"uv":[14,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,14],"uv_size":[0.25,0.5]},"west":{"uv":[15,31],"uv_size":[0.25,0.5]},"up":{"uv":[51,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0249,6.3165,0.8607],"size":[0.3297,0.5841,0.107],"pivot":[0.7891,6.0264,0.1943],"rotation":[0,-67.5,0],"uv":{"north":{"uv":[31,15],"uv_size":[0.25,0.5]},"east":{"uv":[16,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,16],"uv_size":[0.25,0.5]},"west":{"uv":[17,31],"uv_size":[0.25,0.5]},"up":{"uv":[51,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.026,6.7879,-0.4836],"size":[0.3297,0.1127,0.107],"pivot":[0.84,6.0264,0.2897],"rotation":[0,67.5,0],"uv":{"north":{"uv":[51,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0196,6.7879,-0.1592],"size":[0.3297,0.1127,0.1455],"pivot":[0.8335,6.0264,0.6141],"rotation":[0,45,0],"uv":{"north":{"uv":[51,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1733,6.7879,-0.0134],"size":[0.3297,0.1127,0.3094],"pivot":[0.6407,6.0264,0.7599],"rotation":[0,22.5,0],"uv":{"north":{"uv":[51,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3692,6.7879,-0.868],"size":[0.4297,0.1127,0.1743],"pivot":[-0.7535,6.0264,-0.0273],"rotation":[0,-90,0],"uv":{"north":{"uv":[31,17],"uv_size":[0.5,0.25]},"east":{"uv":[51,18],"uv_size":[0.25,0.25]},"south":{"uv":[18,31],"uv_size":[0.5,0.25]},"west":{"uv":[19,51],"uv_size":[0.25,0.25]},"up":{"uv":[31,18],"uv_size":[0.5,0.25]},"down":{"uv":[19,31.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.3557,6.7879,-0.4836],"size":[0.3297,0.1127,0.107],"pivot":[-0.84,6.0264,0.2897],"rotation":[0,-67.5,0],"uv":{"north":{"uv":[51,19],"uv_size":[0.25,0.25]},"east":{"uv":[20,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,20],"uv_size":[0.25,0.25]},"west":{"uv":[21,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3493,6.7879,-0.1592],"size":[0.3297,0.1127,0.1455],"pivot":[-0.8335,6.0264,0.6141],"rotation":[0,-45,0],"uv":{"north":{"uv":[51,22],"uv_size":[0.25,0.25]},"east":{"uv":[23,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,23],"uv_size":[0.25,0.25]},"west":{"uv":[24,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1564,6.7879,-0.0134],"size":[0.3297,0.1127,0.3094],"pivot":[-0.6407,6.0264,0.7599],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[51,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4073,6.7879,0.0041],"size":[0.8145,0.1127,0.3529],"uv":{"north":{"uv":[13,28],"uv_size":[0.75,0.25]},"east":{"uv":[51,28],"uv_size":[0.25,0.25]},"south":{"uv":[28,13],"uv_size":[0.75,0.25]},"west":{"uv":[29,51],"uv_size":[0.25,0.25]},"up":{"uv":[14,28],"uv_size":[0.75,0.25]},"down":{"uv":[28,14.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3496,6.6303,0.0041],"size":[0.6991,0.1576,0.4106],"uv":{"north":{"uv":[15,28],"uv_size":[0.75,0.25]},"east":{"uv":[31,19],"uv_size":[0.5,0.25]},"south":{"uv":[28,15],"uv_size":[0.75,0.25]},"west":{"uv":[20,31],"uv_size":[0.5,0.25]},"up":{"uv":[21,13],"uv_size":[0.75,0.5]},"down":{"uv":[21,14.5],"uv_size":[0.75,-0.5]}}},{"origin":[-0.4532,6.6303,-0.3874],"size":[0.4944,0.1576,0.4944],"pivot":[-0.7728,5.9137,0.386],"rotation":[0,-45,0],"uv":{"north":{"uv":[31,20],"uv_size":[0.5,0.25]},"east":{"uv":[21,31],"uv_size":[0.5,0.25]},"south":{"uv":[31,21],"uv_size":[0.5,0.25]},"west":{"uv":[22,31],"uv_size":[0.5,0.25]},"up":{"uv":[26,4],"uv_size":[0.5,0.5]},"down":{"uv":[5,26.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.6764,3.6536,0.996],"size":[0.2181,0.1379,0.2574],"pivot":[0.1767,4.9843,1.2534],"rotation":[4.5913,-44.9079,-3.2448],"uv":{"north":{"uv":[51,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4582,3.6536,0.996],"size":[0.2181,0.1379,0.2574],"pivot":[-0.1767,4.9843,1.2534],"rotation":[4.5913,44.9079,3.2448],"uv":{"north":{"uv":[51,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.164,3.6387,0.9907],"size":[0.2887,1.3307,0.2494],"pivot":[0.1247,4.9694,0.9907],"rotation":[90,-86.75,-90],"uv":{"north":{"uv":[3,25],"uv_size":[0.25,1.25]},"east":{"uv":[25,4],"uv_size":[0.25,1.25]},"south":{"uv":[25,6],"uv_size":[0.25,1.25]},"west":{"uv":[7,25],"uv_size":[0.25,1.25]},"up":{"uv":[51,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0236,3.3008,1.0281],"size":[0.2887,0.3303,0.2],"pivot":[0.3303,3.6311,1.0173],"rotation":[-45.2285,-64.0196,49.3287],"uv":{"north":{"uv":[51,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3123,3.3008,1.0281],"size":[0.2887,0.3303,0.2],"pivot":[-0.3303,3.6311,1.0173],"rotation":[-45.2285,64.0196,-49.3287],"uv":{"north":{"uv":[51,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1578,3.5649,0.9212],"size":[0.2053,0.0677,0.0963],"pivot":[0.3631,3.6326,0.9212],"rotation":[-9.1107,-28.8745,23.9791],"uv":{"north":{"uv":[51,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3631,3.5649,0.9212],"size":[0.2053,0.0677,0.0963],"pivot":[-0.3631,3.6326,0.9212],"rotation":[-9.1107,28.8745,-23.9791],"uv":{"north":{"uv":[51,45],"uv_size":[0.25,0.25]},"east":{"uv":[46,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,46],"uv_size":[0.25,0.25]},"west":{"uv":[47,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,47],"uv_size":[0.25,0.25]},"down":{"uv":[48,51.25],"uv_size":[0.25,-0.25]}}}]},{"name":"constraint","pivot":[0,4.4442,0.1281]},{"name":"camera","pivot":[-1.5,63.25,-1.75]},{"name":"view","pivot":[0,4.4442,0.1281]},{"name":"idle_view","parent":"view","pivot":[0,64,-3]},{"name":"positioning","pivot":[0,4.4442,0.1281]},{"name":"ground","parent":"positioning","pivot":[0,0,0]},{"name":"thirdperson_hand","parent":"positioning","pivot":[-0.0156,6.125,-2.0625]},{"name":"fixed","parent":"positioning","pivot":[0.7969,5.125,-1.0625],"rotation":[0,90,0]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/shadowkiller.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/shadowkiller.anim.json new file mode 100644 index 0000000..5b49d66 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/shadowkiller.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"inspect":{"loop":true,"animation_length":11.3,"override_previous_animation":true,"bones":{"karambit":{"rotation":{"0.0":[-123.319,-22.26,-105.013],"0.0417":[-104.888,-25.129,-109.04],"0.0833":[-90.668,-35.031,-156.397],"0.125":[-99.222,-41.498,-194.194],"0.1667":[-149.57,-39.842,-225.78],"0.2083":[-183.391,-39.814,-240.336],"0.25":[-243.325,-57.723,-231.106],"0.2917":[-285.477,-60.181,-203.462],"0.3333":[-318.259,-46.858,-177.381],"0.375":[-325.153,-29.285,-172.129],"0.4167":[-321.794,-29.367,-164.112],"0.4583":[-319.261,-38.577,-152.158],"0.5":[-319.74,-41.517,-139.008],"0.5417":[-322.792,-42.542,-130.81],"0.5833":[-323.709,-48.393,-122.67],"0.625":[-324.505,-52.217,-118.553],"0.6667":[-327.307,-55.161,-114.306],"0.7083":[-329.272,-55.829,-113.122],"0.75":[-331.492,-56.249,-113.075],"0.7917":[-332.481,-56.638,-113.272],"0.8333":[-333.557,-57.992,-112.402],"0.875":[-334.152,-59.178,-111.353],"0.9167":[-334.905,-60.991,-109.623],"0.9583":[-335.351,-62.04,-108.549],"1.0":[-335.858,-63.088,-107.444],"1.0417":[-335.827,-63.46,-107.058],"1.0833":[-335.411,-63.796,-106.745],"1.125":[-335.156,-64.018,-106.548],"1.1667":[-334.79,-64.244,-106.488],"1.2083":[-334.619,-64.426,-106.482],"1.25":[-334.361,-64.708,-106.496],"1.2917":[-334.219,-64.876,-106.499],"1.3333":[-334.112,-65.054,-106.456],"1.375":[-334.15,-65.097,-106.369],"1.4167":[-334.416,-65.035,-106.105],"1.4583":[-334.678,-64.935,-105.894],"1.5":[-335.069,-64.742,-105.64],"1.5417":[-335.285,-64.61,-105.546],"1.5833":[-335.651,-64.378,-105.391],"1.625":[-335.833,-64.18,-105.447],"1.6667":[-335.879,-63.785,-106.052],"1.7083":[-335.82,-63.483,-106.664],"1.75":[-335.689,-62.997,-107.712],"1.7917":[-335.585,-62.66,-108.466],"1.8333":[-335.429,-62.144,-109.621],"1.875":[-335.34,-61.801,-110.377],"1.9167":[-335.244,-61.299,-111.439],"1.9583":[-323.599,-53.09,-128.438],"2.0":[-316.339,-39.055,-144.675],"2.0417":[-315.078,-29.089,-152.562],"2.0833":[-315.612,-13.023,-162.677],"2.125":[-316.481,-1.197,-169.284],"2.1667":[-318.336,22.278,-181.774],"2.2083":[-321.987,39.869,-193.111],"2.25":[-336.426,60.367,-217.294],"2.2917":[-348.573,66.208,-232.988],"2.3333":[-359.826,68.43,-247.178],"2.375":[-364.94,68.962,-253.706],"2.4167":[-368.586,69.143,-258.785],"2.4583":[-368.718,69.085,-259.492],"2.5":[-366.468,68.84,-257.678],"2.5417":[-363.972,68.58,-255.277],"2.5833":[-359.808,68.048,-251.102],"2.625":[-357.324,67.66,-248.592],"2.6667":[-354.846,67.211,-246.193],"2.7083":[-354.456,67.116,-246.013],"2.75":[-354.737,67.147,-246.662],"2.7917":[-354.853,67.157,-246.944],"2.8333":[-354.93,67.167,-247.174],"2.875":[-354.928,67.168,-247.22],"2.9167":[-354.873,67.159,-247.173],"2.9583":[-354.808,67.156,-247.088],"3.0":[-354.692,67.145,-246.917],"3.0417":[-354.612,67.137,-246.797],"3.0833":[-354.516,67.123,-246.653],"3.125":[-354.471,67.121,-246.599],"3.1667":[-354.455,67.118,-246.613],"3.2083":[-354.453,67.12,-246.619],"3.25":[-354.456,67.117,-246.606],"3.2917":[-354.455,67.119,-246.591],"3.3333":[-354.24,67.127,-246.443],"3.375":[-354.157,67.129,-246.372],"3.4167":[-354.897,67.105,-246.77],"3.4583":[-356.373,67.052,-247.629],"3.5":[-358.073,66.976,-248.268],"3.5417":[-362.079,66.392,-250.091],"3.5833":[-375.819,71.392,-255.559],"3.625":[-404.145,70.225,-271.892],"3.6667":[-451.485,45.548,-286.847],"3.7083":[-458.221,22.108,-263.937],"3.75":[-443.367,-45.743,-254.552],"3.7917":[-355.93,-74.656,-314.017],"3.8333":[-262.817,-48.327,-363.866],"3.875":[-242.796,-42.478,-346.62],"3.9167":[-173.286,-35.129,-304.092],"3.9583":[-107.745,-47.528,-295.783],"4.0":[-43.292,-60.675,-300.632],"4.0417":[-61.696,-72.805,-231.231],"4.0833":[-94.747,-53.839,-91.665],"4.125":[-78.415,-61.57,-74.433],"4.1667":[-59.239,-71.055,-68.714],"4.2083":[-47.667,-72.545,-74.409],"4.25":[-35.64,-73.156,-79.888],"4.2917":[-34.438,-72.94,-80.337],"4.3333":[-28.103,-73.139,-91.619],"4.375":[-25.92,-72.973,-96.994],"4.4167":[-42.886,-73.709,-82.946],"4.4583":[-56.523,-73.153,-69.552],"4.5":[-68.988,-71.029,-55.819],"4.5417":[-70.586,-70.211,-53.545],"4.5833":[-68.121,-70.419,-56.315],"4.625":[-65.142,-70.868,-59.839],"4.6667":[-59.265,-71.565,-66.709],"4.7083":[-55.185,-71.858,-71.41],"4.75":[-50.701,-71.958,-76.573],"4.7917":[-50.142,-71.891,-77.425],"4.8333":[-51.663,-71.718,-76.222],"4.875":[-53.009,-71.572,-75.097],"4.9167":[-55.275,-71.303,-73.142],"4.9583":[-56.895,-71.083,-71.704],"5.0":[-59.255,-70.728,-69.62],"5.0417":[-60.674,-70.498,-68.405],"5.0833":[-62.436,-70.2,-67.042],"5.125":[-63.272,-70.066,-66.55],"5.1667":[-63.925,-70.004,-66.558],"5.2083":[-64.264,-70.003,-66.694],"5.25":[-64.819,-70.024,-66.866],"5.2917":[-65.217,-70.05,-66.959],"5.3333":[-65.838,-70.103,-67.1],"5.375":[-66.254,-70.15,-67.199],"5.4167":[-66.885,-70.225,-67.374],"5.4583":[-67.299,-70.277,-67.513],"5.5":[-67.893,-70.358,-67.782],"5.5417":[-68.258,-70.411,-68.015],"5.5833":[-68.762,-70.486,-68.449],"5.625":[-69.053,-70.529,-68.812],"5.6667":[-69.409,-70.582,-69.483],"5.7083":[-69.657,-70.608,-69.955],"5.75":[-70.711,-70.62,-70.07],"5.7917":[-71.715,-70.613,-69.908],"5.8333":[-73.276,-70.591,-69.684],"5.875":[-74.124,-70.575,-69.78],"5.9167":[-74.712,-70.573,-70.67],"5.9583":[-74.422,-70.593,-71.981],"6.0":[-72.558,-70.637,-75.432],"6.0417":[-70.128,-70.644,-78.943],"6.0833":[-34.049,-65.217,-118.443],"6.125":[-10.744,-64.984,-151.449],"6.1667":[-26.803,-62.959,-138.561],"6.2083":[-40.597,-58.949,-125.749],"6.25":[-53.193,-52.283,-113.449],"6.2917":[-55.308,-51.093,-110.506],"6.3333":[-56.398,-51.02,-107.549],"6.375":[-56.447,-51.492,-106.179],"6.4167":[-56.459,-51.836,-104.634],"6.4583":[-56.57,-51.583,-103.857],"6.5":[-56.459,-51.1,-103.119],"6.5417":[-56.273,-50.757,-102.842],"6.5833":[-55.951,-50.286,-102.626],"6.625":[-55.777,-50.052,-102.55],"6.6667":[-55.661,-49.885,-102.445],"6.7083":[-55.561,-49.864,-102.434],"6.75":[-55.312,-49.929,-102.537],"6.7917":[-55.101,-50.019,-102.663],"6.8333":[-54.747,-50.194,-102.91],"6.875":[-54.501,-50.331,-103.103],"6.9167":[-54.152,-50.539,-103.396],"6.9583":[-53.949,-50.666,-103.58],"7.0":[-53.732,-50.824,-103.797],"7.0417":[-53.666,-50.888,-103.886],"7.0833":[-53.715,-50.906,-103.901],"7.125":[-53.866,-50.854,-103.819],"7.1667":[-54.306,-50.654,-103.516],"7.2083":[-54.753,-50.427,-103.19],"7.25":[-55.689,-49.913,-102.476],"7.2917":[-57.006,-49.145,-101.472],"7.3333":[-60.511,-46.911,-98.875],"7.375":[-63.242,-44.949,-96.911],"7.4167":[-67.104,-41.779,-94.23],"7.4583":[-69.16,-39.865,-92.839],"7.5":[-71.111,-37.851,-91.471],"7.5417":[-71.918,-37.032,-90.742],"7.5833":[-72.718,-36.244,-89.782],"7.625":[-73.034,-35.868,-89.291],"7.6667":[-73.263,-35.274,-88.908],"7.7083":[-73.295,-34.706,-88.964],"7.75":[-73.2,-33.578,-89.457],"7.7917":[-72.973,-32.873,-89.907],"7.8333":[-72.395,-31.587,-91.134],"7.875":[-71.886,-30.365,-92.559],"7.9167":[-71.067,-27.606,-95.961],"7.9583":[-70.85,-24.638,-100.441],"8.0":[-70.569,-14.675,-112.745],"8.0417":[-71.656,-2.146,-124.848],"8.0833":[-79.605,18.983,-147.306],"8.125":[-87.066,29.183,-161.386],"8.1667":[-97.192,40.227,-178.576],"8.2083":[-104.81,46.46,-190.52],"8.25":[-118.589,52.561,-210.197],"8.2917":[-128.928,53.39,-223.62],"8.3333":[-142.602,49.691,-238.082],"8.375":[-149.477,45.59,-240.242],"8.4167":[-158.501,37.744,-238.473],"8.4583":[-163.857,32.415,-236.538],"8.5":[-172.192,29.633,-239.164],"8.5417":[-178.06,31.482,-245.324],"8.5833":[-184.474,35.341,-253.99],"8.625":[-185.949,37.423,-256.662],"8.6667":[-186.404,38.856,-258.199],"8.7083":[-185.788,39.225,-257.99],"8.75":[-183.705,39.506,-256.021],"8.7917":[-181.294,39.318,-253.327],"8.8333":[-177.774,38.695,-249.394],"8.875":[-176.36,38.369,-248.008],"8.9167":[-175.484,37.979,-247.47],"8.9583":[-175.47,37.734,-247.666],"9.0":[-175.557,37.346,-247.853],"9.0417":[-175.486,37.105,-247.805],"9.0833":[-174.973,36.958,-247.519],"9.125":[-174.551,36.929,-247.262],"9.1667":[-174.045,36.809,-246.871],"9.2083":[-173.913,36.573,-246.641],"9.25":[-166.958,30.549,-238.986],"9.2917":[-161.243,22.72,-232.247],"9.3333":[-153.725,11.963,-225.4],"9.375":[-149.015,7.457,-221.999],"9.4167":[-140.112,0.619,-217.858],"9.4583":[-134.822,-2.401,-215.982],"9.5":[-129.445,-8.108,-213.705],"9.5417":[-126.89,-12.259,-212.294],"9.5833":[-124.18,-11.388,-210.27],"9.625":[-122.741,-7.24,-208.803],"9.6667":[-121.974,0.99,-205.656],"9.7083":[-122.005,6.652,-203.771],"9.75":[-121.989,10.519,-203.444],"9.7917":[-122.088,12.002,-203.694],"9.8333":[-120.39,9.474,-203.426],"9.875":[-118.597,6.135,-203.249],"9.9167":[-114.787,3.424,-197.827],"9.9583":[-115.026,4.879,-190.121],"10.0":[-102.521,-12.812,-164.775],"10.0417":[-98.878,-21.841,-138.521],"10.0833":[-103.638,-34.302,-97.998],"10.125":[-109.641,-42.248,-83.177],"10.1667":[-92.707,-43.763,-133.52],"10.2083":[-101.336,-45.582,-173.792],"10.25":[-162.286,-42.76,-191.737],"10.2917":[-221.872,-44.776,-204.471],"10.3333":[-392.984,-62.341,-222.881],"10.375":[-444.344,-61.731,-210.542],"10.4167":[-441.003,-64.991,-204.619],"10.4583":[-417.41,-65.216,-199.995],"10.5":[-287.085,-69.293,-190.334],"10.5417":[-204.856,-76.439,-173.922],"10.5833":[-108.906,-77.502,-161.028],"10.625":[-95.969,-61.592,-138.317],"10.6667":[-124.291,-9.88,-107.147],"10.7083":[-123.384,-20.774,-112.176],"10.75":[-125.955,-12.698,-106.658],"10.7917":[-129.94,-15.607,-103.201],"10.8333":[-134.546,-21.015,-99.689],"10.875":[-135.844,-22.891,-98.57],"10.9167":[-131.727,-21.216,-100.929],"10.9583":[-129.653,-20.541,-102.588],"11.0":[-127.619,-20.484,-105.08],"11.0417":[-126.809,-20.664,-106.25],"11.0833":[-126.622,-21.115,-106.509],"11.125":[-126.821,-21.497,-106.264],"11.1667":[-127.396,-22.15,-105.558],"11.2083":[-127.883,-22.611,-104.956],"11.25":[-128.629,-23.287,-104.047],"11.2917":[-129.046,-23.712,-103.542]},"position":{"0.0":[-5.289,49.983,-19.097],"0.0417":[-3.814,47.343,-21.618],"0.0833":[0.857,46.289,-21.037],"0.125":[3.439,48.577,-19.518],"0.1667":[-1.39,55.699,-21.782],"0.2083":[-4.916,57.781,-23.017],"0.25":[-6.85,56.481,-24.507],"0.2917":[-7.289,55.637,-25.092],"0.3333":[-6.788,54.548,-25.24],"0.375":[-5.842,53.578,-24.65],"0.4167":[-5.24,52.794,-23.318],"0.4583":[-4.886,52.455,-22.454],"0.5":[-4.342,51.749,-21.239],"0.5417":[-4.21,51.401,-20.888],"0.5833":[-4.159,51.131,-20.546],"0.625":[-4.17,51.017,-20.404],"0.6667":[-4.25,50.903,-20.288],"0.7083":[-4.331,50.878,-20.253],"0.75":[-4.46,50.894,-20.231],"0.7917":[-4.53,50.919,-20.214],"0.8333":[-4.587,50.946,-20.154],"0.875":[-4.605,50.967,-20.105],"0.9167":[-4.616,51.001,-20.033],"0.9583":[-4.62,51.02,-19.989],"1.0":[-4.641,51.033,-19.933],"1.0417":[-4.653,51.028,-19.899],"1.0833":[-4.666,51.012,-19.853],"1.125":[-4.675,51.002,-19.822],"1.1667":[-4.666,50.996,-19.791],"1.2083":[-4.651,50.997,-19.777],"1.25":[-4.621,51.002,-19.755],"1.2917":[-4.606,51.004,-19.741],"1.3333":[-4.594,51.002,-19.727],"1.375":[-4.597,50.996,-19.721],"1.4167":[-4.631,50.976,-19.727],"1.4583":[-4.661,50.964,-19.736],"1.5":[-4.702,50.935,-19.75],"1.5417":[-4.721,50.914,-19.757],"1.5833":[-4.755,50.885,-19.771],"1.625":[-4.762,50.861,-19.78],"1.6667":[-4.71,50.811,-19.786],"1.7083":[-4.65,50.776,-19.786],"1.75":[-4.547,50.718,-19.788],"1.7917":[-4.464,50.679,-19.788],"1.8333":[-4.345,50.615,-19.786],"1.875":[-4.263,50.575,-19.786],"1.9167":[-4.144,50.512,-19.786],"1.9583":[-3.467,50.213,-19.49],"2.0":[-2.549,49.739,-19.118],"2.0417":[-1.952,49.405,-18.908],"2.0833":[-0.966,48.92,-18.593],"2.125":[-0.229,48.667,-18.297],"2.1667":[1.079,48.498,-17.454],"2.2083":[1.848,48.508,-16.708],"2.25":[2.514,48.543,-15.812],"2.2917":[2.69,48.549,-15.539],"2.3333":[2.774,48.587,-15.401],"2.375":[2.805,48.63,-15.341],"2.4167":[2.82,48.722,-15.281],"2.4583":[2.814,48.799,-15.255],"2.5":[2.788,48.931,-15.229],"2.5417":[2.764,49.024,-15.219],"2.5833":[2.725,49.161,-15.21],"2.625":[2.699,49.244,-15.206],"2.6667":[2.673,49.352,-15.196],"2.7083":[2.666,49.406,-15.183],"2.75":[2.662,49.47,-15.162],"2.7917":[2.66,49.502,-15.151],"2.8333":[2.657,49.547,-15.137],"2.875":[2.656,49.576,-15.13],"2.9167":[2.653,49.609,-15.123],"2.9583":[2.651,49.63,-15.119],"3.0":[2.648,49.663,-15.116],"3.0417":[2.646,49.683,-15.114],"3.0833":[2.644,49.714,-15.114],"3.125":[2.642,49.74,-15.113],"3.1667":[2.64,49.786,-15.114],"3.2083":[2.64,49.823,-15.124],"3.25":[2.642,49.886,-15.152],"3.2917":[2.642,49.929,-15.172],"3.3333":[2.638,49.996,-15.201],"3.375":[2.638,50.044,-15.225],"3.4167":[2.658,50.115,-15.271],"3.4583":[2.693,50.163,-15.316],"3.5":[2.754,50.221,-15.376],"3.5417":[2.887,50.387,-15.452],"3.5833":[3.377,50.648,-15.735],"3.625":[3.87,50.643,-16.34],"3.6667":[4.532,49.044,-18.187],"3.7083":[3.811,47.619,-20.232],"3.75":[-1.123,45.605,-23.039],"3.7917":[-3.93,45.232,-23.151],"3.8333":[-6.347,46.743,-22.027],"3.875":[-6.469,48.694,-21.1],"3.9167":[-5.179,53.269,-19.703],"3.9583":[-2.877,54.186,-21],"4.0":[-2.809,53.3,-21.916],"4.0417":[-2.141,51.679,-21.174],"4.0833":[-2.374,50.687,-20.048],"4.125":[-1.583,50.578,-19.364],"4.1667":[-0.424,49.729,-17.664],"4.2083":[-0.054,48.882,-16.086],"4.25":[0.235,47.758,-15.399],"4.2917":[0.256,47.155,-15.565],"4.3333":[0.39,46.846,-15.386],"4.375":[0.407,46.791,-15.305],"4.4167":[0.343,46.792,-15.361],"4.4583":[0.263,46.817,-15.418],"4.5":[0.091,46.902,-15.47],"4.5417":[-0.007,46.97,-15.475],"4.5833":[-0.074,47.051,-15.47],"4.625":[-0.095,47.102,-15.466],"4.6667":[-0.105,47.168,-15.459],"4.7083":[-0.107,47.204,-15.453],"4.75":[-0.105,47.234,-15.447],"4.7917":[-0.096,47.244,-15.445],"4.8333":[-0.074,47.231,-15.447],"4.875":[-0.056,47.204,-15.447],"4.9167":[-0.026,47.137,-15.45],"4.9583":[-0.006,47.084,-15.452],"5.0":[0.024,46.998,-15.455],"5.0417":[0.046,46.937,-15.458],"5.0833":[0.081,46.851,-15.461],"5.125":[0.107,46.798,-15.462],"5.1667":[0.15,46.733,-15.463],"5.2083":[0.179,46.699,-15.464],"5.25":[0.219,46.647,-15.465],"5.2917":[0.246,46.619,-15.467],"5.3333":[0.283,46.573,-15.47],"5.375":[0.31,46.547,-15.472],"5.4167":[0.355,46.505,-15.476],"5.4583":[0.385,46.477,-15.477],"5.5":[0.435,46.434,-15.478],"5.5417":[0.475,46.402,-15.478],"5.5833":[0.538,46.354,-15.476],"5.625":[0.585,46.32,-15.473],"5.6667":[0.668,46.262,-15.466],"5.7083":[0.731,46.219,-15.46],"5.75":[0.851,46.147,-15.445],"5.7917":[0.944,46.094,-15.431],"5.8333":[1.103,46.006,-15.407],"5.875":[1.213,45.946,-15.389],"5.9167":[1.385,45.852,-15.361],"5.9583":[1.498,45.789,-15.343],"6.0":[1.658,45.699,-15.316],"6.0417":[1.758,45.638,-15.3],"6.0833":[1.81,45.554,-15.264],"6.125":[1.681,45.463,-15.278],"6.1667":[0.998,45.258,-15.201],"6.2083":[0.508,44.879,-15.711],"6.25":[-0.162,44.554,-16.501],"6.2917":[-0.53,44.818,-16.714],"6.3333":[-1.06,45.453,-16.916],"6.375":[-1.369,45.91,-17.001],"6.4167":[-1.733,46.408,-17.109],"6.4583":[-1.902,46.587,-17.183],"6.5":[-2.11,46.781,-17.276],"6.5417":[-2.214,46.864,-17.327],"6.5833":[-2.33,46.944,-17.385],"6.625":[-2.38,46.973,-17.414],"6.6667":[-2.424,46.998,-17.437],"6.7083":[-2.437,47.007,-17.45],"6.75":[-2.44,47.007,-17.464],"6.7917":[-2.436,47.002,-17.473],"6.8333":[-2.419,46.985,-17.483],"6.875":[-2.402,46.971,-17.488],"6.9167":[-2.373,46.942,-17.494],"6.9583":[-2.352,46.922,-17.495],"7.0":[-2.321,46.891,-17.494],"7.0417":[-2.304,46.871,-17.49],"7.0833":[-2.28,46.838,-17.484],"7.125":[-2.274,46.821,-17.476],"7.1667":[-2.274,46.798,-17.464],"7.2083":[-2.28,46.785,-17.453],"7.25":[-2.313,46.775,-17.431],"7.2917":[-2.367,46.782,-17.403],"7.3333":[-2.529,46.815,-17.325],"7.375":[-2.665,46.849,-17.257],"7.4167":[-2.871,46.908,-17.153],"7.4583":[-2.987,46.944,-17.09],"7.5":[-3.1,46.981,-17.028],"7.5417":[-3.143,46.995,-16.996],"7.5833":[-3.182,47.01,-16.955],"7.625":[-3.196,47.016,-16.936],"7.6667":[-3.206,47.016,-16.926],"7.7083":[-3.213,47.014,-16.933],"7.75":[-3.231,46.987,-16.967],"7.7917":[-3.246,46.938,-17.005],"7.8333":[-3.259,46.864,-17.089],"7.875":[-3.253,46.845,-17.162],"7.9167":[-3.208,46.92,-17.295],"7.9583":[-3.088,47.213,-17.451],"8.0":[-2.764,47.968,-17.741],"8.0417":[-2.474,48.526,-17.86],"8.0833":[-2.034,49.591,-17.953],"8.125":[-1.94,50.262,-18.024],"8.1667":[-2.111,51.049,-18.2],"8.2083":[-2.321,51.504,-18.348],"8.25":[-2.667,52.104,-18.57],"8.2917":[-2.875,52.483,-18.688],"8.3333":[-3.158,53.06,-18.814],"8.375":[-3.375,53.415,-18.883],"8.4167":[-3.643,53.928,-18.932],"8.4583":[-3.778,54.24,-18.941],"8.5":[-4.017,54.544,-18.99],"8.5417":[-4.221,54.605,-19.033],"8.5833":[-4.484,54.572,-19.078],"8.625":[-4.595,54.534,-19.087],"8.6667":[-4.686,54.516,-19.095],"8.7083":[-4.719,54.515,-19.089],"8.75":[-4.743,54.515,-19.075],"8.7917":[-4.746,54.518,-19.059],"8.8333":[-4.743,54.525,-19.028],"8.875":[-4.743,54.528,-19.014],"8.9167":[-4.758,54.538,-19.001],"8.9583":[-4.769,54.548,-18.997],"9.0":[-4.787,54.56,-18.995],"9.0417":[-4.798,54.565,-18.992],"9.0833":[-4.802,54.56,-18.99],"9.125":[-4.805,54.548,-18.989],"9.1667":[-4.807,54.532,-18.984],"9.2083":[-4.814,54.53,-18.976],"9.25":[-4.692,54.754,-18.912],"9.2917":[-4.522,55.001,-18.844],"9.3333":[-4.199,55.277,-18.811],"9.375":[-4.022,55.358,-18.837],"9.4167":[-3.711,55.427,-18.968],"9.4583":[-3.575,55.468,-19.082],"9.5":[-3.42,55.49,-19.238],"9.5417":[-3.343,55.465,-19.343],"9.5833":[-3.383,55.333,-19.451],"9.625":[-3.48,55.215,-19.502],"9.6667":[-3.69,55.054,-19.534],"9.7083":[-3.831,54.976,-19.544],"9.75":[-3.865,54.932,-19.558],"9.7917":[-3.856,54.916,-19.562],"9.8333":[-3.75,54.897,-19.553],"9.875":[-3.646,54.883,-19.547],"9.9167":[-3.304,54.598,-19.448],"9.9583":[-2.811,54.06,-19.249],"10.0":[-1.865,51.781,-19.458],"10.0417":[-1.708,49.478,-19.399],"10.0833":[-1.063,46.834,-19.164],"10.125":[-0.062,46.636,-19.094],"10.1667":[3.325,47.624,-19.533],"10.2083":[4.586,50.012,-20.127],"10.25":[3.883,53.719,-20.745],"10.2917":[0.416,54.994,-22.665],"10.3333":[-3.584,47.902,-26.307],"10.375":[-2.433,47.456,-25.759],"10.4167":[-2.947,48.517,-25.653],"10.4583":[-3.279,50.009,-25.4],"10.5":[-1.094,55.351,-23.805],"10.5417":[3.223,52.642,-23.615],"10.5833":[0.534,49.023,-24.748],"10.625":[-1.255,49.337,-24.746],"10.6667":[-2.725,49.671,-22.737],"10.7083":[-3.925,49.395,-21.751],"10.75":[-5.179,49.596,-20.061],"10.7917":[-5.497,49.943,-18.873],"10.8333":[-5.628,50.252,-18.566],"10.875":[-5.587,50.344,-18.875],"10.9167":[-5.386,50.307,-19.19],"10.9583":[-5.28,50.258,-19.285],"11.0":[-5.152,50.179,-19.312],"11.0417":[-5.095,50.133,-19.297],"11.0833":[-5.071,50.097,-19.268],"11.125":[-5.074,50.08,-19.242],"11.1667":[-5.095,50.062,-19.196],"11.2083":[-5.114,50.051,-19.16],"11.25":[-5.142,50.036,-19.109],"11.2917":[-5.157,50.025,-19.077]}},"righthand":{"rotation":{"0.0":[106.572,-29.801,-109.77],"0.0417":[120.36,-12.72,-118.104],"0.0833":[128.823,9.754,-132.213],"0.125":[128.658,19.916,-145.566],"0.1667":[128.762,20.856,-173.491],"0.2083":[123.975,18.509,-185.373],"0.25":[111.652,11.882,-189.659],"0.2917":[111.985,7.63,-186.739],"0.3333":[115.719,1.23,-180.412],"0.375":[118.546,-3.545,-175.713],"0.4167":[126.859,-18.991,-159.224],"0.4583":[130.689,-31.286,-147.113],"0.5":[133.06,-39.154,-139.095],"0.5417":[134.087,-43.141,-136.209],"0.5833":[135.244,-49.594,-132.609],"0.625":[135.744,-53.451,-130.706],"0.6667":[135.928,-57.656,-128.525],"0.7083":[135.805,-59.489,-127.58],"0.75":[135.499,-61.407,-126.738],"0.7917":[135.272,-62.428,-126.345],"0.8333":[134.909,-64.037,-125.616],"0.875":[134.612,-65.076,-125.13],"0.9167":[134.159,-66.439,-124.511],"0.9583":[133.943,-67.209,-124.162],"1.0":[133.894,-68.12,-123.741],"1.0417":[134.174,-68.445,-123.627],"1.0833":[134.873,-68.679,-123.639],"1.125":[135.321,-68.839,-123.652],"1.1667":[135.888,-68.984,-123.819],"1.2083":[136.221,-69.125,-123.979],"1.25":[136.733,-69.346,-124.243],"1.2917":[137.025,-69.483,-124.394],"1.3333":[137.291,-69.633,-124.492],"1.375":[137.276,-69.679,-124.416],"1.4167":[136.909,-69.658,-124.027],"1.4583":[136.513,-69.599,-123.665],"1.5":[135.888,-69.473,-123.151],"1.5417":[135.523,-69.379,-122.888],"1.5833":[134.906,-69.215,-122.451],"1.625":[134.536,-69.055,-122.3],"1.6667":[134.172,-68.694,-122.568],"1.7083":[134.007,-68.405,-122.95],"1.75":[133.804,-67.932,-123.653],"1.7917":[133.683,-67.601,-124.18],"1.8333":[133.507,-67.093,-125.001],"1.875":[133.381,-66.755,-125.542],"1.9167":[133.162,-66.262,-126.294],"1.9583":[141.931,-56.678,-141.144],"2.0":[145.355,-41.537,-154.525],"2.0417":[145.081,-31.245,-161.516],"2.0833":[142.893,-15.347,-171.443],"2.125":[140.551,-4.264,-178.369],"2.1667":[134.389,16.155,-192.299],"2.2083":[126.59,30.338,-205.172],"2.25":[109.183,45.031,-228.555],"2.2917":[99.861,48.592,-240.128],"2.3333":[93.175,49.944,-248.569],"2.375":[90.375,50.287,-252.311],"2.4167":[88.408,50.418,-255.397],"2.4583":[88.315,50.385,-256.073],"2.5":[89.486,50.225,-255.58],"2.5417":[90.82,50.068,-254.601],"2.5833":[93.108,49.763,-252.737],"2.625":[94.518,49.548,-251.569],"2.6667":[95.964,49.309,-250.486],"2.7083":[96.194,49.259,-250.517],"2.75":[96.023,49.282,-251.036],"2.7917":[95.953,49.287,-251.264],"2.8333":[95.906,49.295,-251.458],"2.875":[95.907,49.296,-251.505],"2.9167":[95.941,49.289,-251.484],"2.9583":[95.98,49.288,-251.43],"3.0":[96.05,49.28,-251.312],"3.0417":[96.098,49.275,-251.228],"3.0833":[96.157,49.264,-251.128],"3.125":[96.183,49.263,-251.095],"3.1667":[96.194,49.261,-251.117],"3.2083":[96.195,49.263,-251.124],"3.25":[96.193,49.26,-251.108],"3.2917":[96.194,49.261,-251.095],"3.3333":[96.322,49.276,-251.05],"3.375":[96.372,49.28,-251.019],"3.4167":[95.935,49.234,-251.066],"3.4583":[95.062,49.142,-251.225],"3.5":[94.057,49.029,-251.059],"3.5417":[91.679,48.473,-250.988],"3.5833":[82.333,52.334,-248.238],"3.625":[68.606,55.163,-251.256],"3.6667":[28.632,51.853,-282.264],"3.7083":[40.509,40.466,-270.878],"3.75":[79.421,3.835,-244.368],"3.7917":[95.377,-8.408,-239.545],"3.8333":[113.316,-10.133,-225.582],"3.875":[121.165,-0.934,-205.041],"3.9167":[128.907,-6.401,-187.674],"3.9583":[128.497,-15.244,-182.012],"4.0":[117.255,-24.011,-172.508],"4.0417":[120.265,-25.229,-151.644],"4.0833":[143.26,-33.118,-101.68],"4.125":[153.109,-39.663,-83.172],"4.1667":[163.97,-48.664,-64.405],"4.2083":[170.364,-51.384,-60.675],"4.25":[175.791,-53.192,-58.346],"4.2917":[176.467,-53.122,-58.187],"4.3333":[179.172,-54.057,-65.585],"4.375":[180.271,-54.194,-69.762],"4.4167":[172.242,-53.023,-65.512],"4.4583":[166.271,-51.594,-60.466],"4.5":[160.605,-49.132,-54.235],"4.5417":[159.826,-48.304,-52.883],"4.5833":[161.069,-48.532,-54.261],"4.625":[162.531,-49.031,-56.074],"4.6667":[165.326,-49.905,-59.505],"4.7083":[167.235,-50.382,-61.797],"4.75":[169.357,-50.744,-64.337],"4.7917":[169.648,-50.715,-64.883],"4.8333":[168.973,-50.446,-64.604],"4.875":[168.367,-50.221,-64.289],"4.9167":[167.335,-49.83,-63.69],"4.9583":[166.59,-49.53,-63.219],"5.0":[165.491,-49.075,-62.532],"5.0417":[164.82,-48.792,-62.149],"5.0833":[163.973,-48.436,-61.811],"5.125":[163.565,-48.278,-61.799],"5.1667":[163.238,-48.198,-62.178],"5.2083":[163.065,-48.188,-62.503],"5.25":[162.779,-48.195,-62.983],"5.2917":[162.573,-48.213,-63.297],"5.3333":[162.251,-48.253,-63.782],"5.375":[162.035,-48.292,-64.111],"5.4167":[161.708,-48.355,-64.635],"5.4583":[161.494,-48.402,-65.003],"5.5":[161.188,-48.474,-65.603],"5.5417":[161,-48.523,-66.039],"5.5833":[160.742,-48.592,-66.754],"5.625":[160.593,-48.633,-67.28],"5.6667":[160.412,-48.682,-68.15],"5.7083":[160.286,-48.707,-68.762],"5.75":[159.756,-48.714,-69.473],"5.7917":[159.251,-48.704,-69.879],"5.8333":[158.465,-48.686,-70.537],"5.875":[158.038,-48.676,-71.111],"5.9167":[157.742,-48.679,-72.334],"5.9583":[157.889,-48.696,-73.482],"6.0":[158.827,-48.729,-75.879],"6.0417":[160.048,-48.739,-78.016],"6.0833":[180.864,-45.94,-99.28],"6.125":[194.231,-49.845,-121.039],"6.1667":[186.216,-44.937,-116.692],"6.2083":[179.335,-39.062,-111.347],"6.25":[172.388,-31.167,-105.465],"6.2917":[171.06,-29.816,-103.507],"6.3333":[170.286,-29.664,-101.014],"6.375":[170.189,-30.129,-99.634],"6.4167":[170.135,-30.47,-98.071],"6.4583":[170.089,-30.21,-97.358],"6.5":[170.232,-29.738,-96.605],"6.5417":[170.411,-29.411,-96.271],"6.5833":[170.706,-28.967,-95.951],"6.625":[170.864,-28.748,-95.818],"6.6667":[170.97,-28.59,-95.675],"6.7083":[171.046,-28.577,-95.624],"6.75":[171.219,-28.661,-95.618],"6.7917":[171.36,-28.766,-95.651],"6.8333":[171.592,-28.969,-95.739],"6.875":[171.751,-29.124,-95.819],"6.9167":[171.973,-29.359,-95.952],"6.9583":[172.101,-29.501,-96.042],"7.0":[172.234,-29.676,-96.156],"7.0417":[172.271,-29.745,-96.213],"7.0833":[172.233,-29.759,-96.248],"7.125":[172.132,-29.695,-96.232],"7.1667":[171.845,-29.46,-96.128],"7.2083":[171.555,-29.199,-96.005],"7.25":[170.946,-28.616,-95.715],"7.2917":[170.08,-27.757,-95.305],"7.3333":[167.707,-25.313,-94.253],"7.375":[165.78,-23.222,-93.46],"7.4167":[162.922,-19.926,-92.381],"7.4583":[161.328,-17.974,-91.817],"7.5":[159.763,-15.943,-91.216],"7.5417":[159.1,-15.124,-90.8],"7.5833":[158.433,-14.338,-90.148],"7.625":[158.167,-13.964,-89.779],"7.6667":[157.969,-13.372,-89.482],"7.7083":[157.937,-12.803,-89.548],"7.75":[158.005,-11.675,-90.003],"7.7917":[158.193,-10.968,-90.365],"7.8333":[158.682,-9.68,-91.371],"7.875":[159.121,-8.456,-92.604],"7.9167":[159.848,-5.699,-95.698],"7.9583":[160.059,-2.732,-100.099],"8.0":[160.393,7.229,-112.294],"8.0417":[159.342,19.762,-124.804],"8.0833":[149.44,40.643,-151.152],"8.125":[138.203,50.05,-170.205],"8.1667":[118.886,57.742,-197.896],"8.2083":[103.51,59.79,-218.198],"8.25":[82.295,58.894,-245.812],"8.2917":[71.481,56.798,-260.173],"8.3333":[60.001,53.523,-275.603],"8.375":[53.87,53.266,-282.754],"8.4167":[45.182,55.105,-291.23],"8.4583":[40.118,56.553,-295.817],"8.5":[36.04,57.25,-299.917],"8.5417":[36.339,57.396,-299.874],"8.5833":[39.455,57.763,-297.145],"8.625":[42.097,58.021,-294.761],"8.6667":[44.942,58.458,-292.293],"8.7083":[46.569,58.836,-290.924],"8.75":[49.138,59.453,-288.744],"8.7917":[50.876,59.854,-287.255],"8.8333":[53.347,60.342,-285.134],"8.875":[54.817,60.555,-283.864],"8.9167":[56.455,60.601,-282.453],"8.9583":[57.058,60.435,-281.944],"9.0":[57.583,60.083,-281.497],"9.0417":[57.929,59.897,-281.19],"9.0833":[58.677,59.816,-280.489],"9.125":[59.205,59.836,-279.971],"9.1667":[59.991,59.914,-279.186],"9.2083":[60.527,59.96,-278.649],"9.25":[77.168,63.388,-260.266],"9.2917":[97.235,63.997,-238.373],"9.3333":[122.329,59.316,-210.666],"9.375":[132.137,54.575,-199.402],"9.4167":[137.708,49.574,-192.822],"9.4583":[136.966,48.997,-193.883],"9.5":[136.047,49.056,-195.074],"9.5417":[135.904,49.344,-195.178],"9.5833":[135.559,50.19,-195.44],"9.625":[135.325,50.801,-195.619],"9.6667":[135.096,51.443,-195.801],"9.7083":[135.039,51.732,-195.846],"9.75":[135.01,52.098,-195.874],"9.7917":[134.998,52.334,-195.882],"9.8333":[137.807,49.406,-192.41],"9.875":[140.194,46.259,-189.35],"9.9167":[141.153,36.175,-184.958],"9.9583":[138.821,23.227,-181.681],"10.0":[131.947,1.507,-161.187],"10.0417":[129.628,-8.848,-138.318],"10.0833":[131.256,-19.978,-102.722],"10.125":[130.932,-23.489,-87.121],"10.1667":[142.199,-9.522,-102.116],"10.2083":[138.2,1.082,-126.508],"10.25":[118.241,30.839,-169.625],"10.2917":[92.321,33.12,-219.169],"10.3333":[86.948,12.572,-257.394],"10.375":[88.717,10.883,-241.393],"10.4167":[95.509,4.687,-209.827],"10.4583":[104.146,-0.323,-187.04],"10.5":[117.507,-7.751,-157.046],"10.5417":[109.815,-2.269,-143.348],"10.5833":[108.418,1.417,-137.226],"10.625":[109.808,-4.589,-129.485],"10.6667":[105.148,-19.444,-107.887],"10.7083":[105.757,-25.85,-112.779],"10.75":[103.289,-21.5,-109.589],"10.7917":[99.302,-24.969,-105.598],"10.8333":[94.526,-30.139,-101.29],"10.875":[93.179,-32.046,-99.961],"10.9167":[97.575,-30.254,-103.048],"10.9583":[99.777,-29.502,-105.065],"11.0":[101.959,-29.357,-107.917],"11.0417":[102.839,-29.499,-109.235],"11.0833":[103.066,-29.94,-109.539],"11.125":[102.876,-30.331,-109.271],"11.1667":[102.295,-31.011,-108.482],"11.2083":[101.796,-31.494,-107.807],"11.25":[101.027,-32.203,-106.784],"11.2917":[100.598,-32.645,-106.215]},"position":{"0.0":[-11.309,40.259,-12.467],"0.0417":[-10.281,38.254,-14.798],"0.0833":[-7.687,37.9,-13.739],"0.125":[-6.646,38.963,-12.185],"0.1667":[-10.308,42.282,-15.596],"0.2083":[-11.785,43.146,-16.791],"0.25":[-11.967,41.914,-16.32],"0.2917":[-11.948,41.151,-16.098],"0.3333":[-11.775,40.132,-15.686],"0.375":[-11.667,39.452,-14.875],"0.4167":[-11.819,38.212,-14.186],"0.4583":[-12.136,37.515,-13.903],"0.5":[-12.444,37.176,-12.898],"0.5417":[-12.587,37.022,-12.585],"0.5833":[-12.792,36.772,-12.485],"0.625":[-12.913,36.632,-12.5],"0.6667":[-13.039,36.504,-12.494],"0.7083":[-13.082,36.46,-12.481],"0.75":[-13.112,36.429,-12.474],"0.7917":[-13.121,36.417,-12.471],"0.8333":[-13.144,36.397,-12.468],"0.875":[-13.158,36.387,-12.465],"0.9167":[-13.172,36.377,-12.466],"0.9583":[-13.184,36.373,-12.467],"1.0":[-13.224,36.366,-12.462],"1.0417":[-13.27,36.363,-12.457],"1.0833":[-13.347,36.361,-12.447],"1.125":[-13.395,36.358,-12.439],"1.1667":[-13.426,36.358,-12.435],"1.2083":[-13.426,36.358,-12.441],"1.25":[-13.418,36.361,-12.446],"1.2917":[-13.416,36.361,-12.448],"1.3333":[-13.416,36.358,-12.451],"1.375":[-13.423,36.353,-12.448],"1.4167":[-13.456,36.339,-12.44],"1.4583":[-13.482,36.333,-12.434],"1.5":[-13.511,36.311,-12.422],"1.5417":[-13.517,36.293,-12.411],"1.5833":[-13.534,36.267,-12.397],"1.625":[-13.522,36.243,-12.386],"1.6667":[-13.414,36.182,-12.359],"1.7083":[-13.309,36.135,-12.34],"1.75":[-13.13,36.057,-12.31],"1.7917":[-12.994,36.004,-12.287],"1.8333":[-12.794,35.918,-12.252],"1.875":[-12.657,35.866,-12.231],"1.9167":[-12.457,35.785,-12.197],"1.9583":[-11.577,35.409,-11.894],"2.0":[-10.312,34.874,-11.403],"2.0417":[-9.514,34.554,-11.059],"2.0833":[-8.39,34.144,-10.534],"2.125":[-7.684,33.919,-10.186],"2.1667":[-6.525,33.612,-9.611],"2.2083":[-5.707,33.407,-9.252],"2.25":[-4.635,33.141,-8.867],"2.2917":[-4.208,33.065,-8.728],"2.3333":[-3.894,33.069,-8.616],"2.375":[-3.744,33.102,-8.558],"2.4167":[-3.596,33.187,-8.492],"2.4583":[-3.539,33.261,-8.459],"2.5":[-3.502,33.392,-8.423],"2.5417":[-3.497,33.485,-8.408],"2.5833":[-3.507,33.622,-8.391],"2.625":[-3.516,33.705,-8.382],"2.6667":[-3.514,33.812,-8.367],"2.7083":[-3.495,33.866,-8.352],"2.75":[-3.461,33.929,-8.329],"2.7917":[-3.445,33.962,-8.317],"2.8333":[-3.432,34.007,-8.303],"2.875":[-3.428,34.035,-8.297],"2.9167":[-3.43,34.068,-8.289],"2.9583":[-3.433,34.089,-8.286],"3.0":[-3.442,34.122,-8.283],"3.0417":[-3.448,34.142,-8.283],"3.0833":[-3.455,34.173,-8.282],"3.125":[-3.457,34.199,-8.282],"3.1667":[-3.456,34.244,-8.283],"3.2083":[-3.455,34.282,-8.293],"3.25":[-3.455,34.345,-8.321],"3.2917":[-3.456,34.387,-8.341],"3.3333":[-3.452,34.455,-8.373],"3.375":[-3.451,34.502,-8.398],"3.4167":[-3.471,34.579,-8.43],"3.4583":[-3.509,34.638,-8.447],"3.5":[-3.57,34.712,-8.475],"3.5417":[-3.687,34.934,-8.447],"3.5833":[-4.395,35.295,-9.125],"3.625":[-5.086,35.672,-9.965],"3.6667":[-5.971,35.052,-12.368],"3.7083":[-7.075,35.308,-12.878],"3.75":[-8.319,37.332,-12.861],"3.7917":[-8.493,38.12,-13.394],"3.8333":[-8.686,38.436,-14.092],"3.875":[-9.077,38.268,-14.37],"3.9167":[-9.491,38.622,-14.352],"3.9583":[-9.593,39.082,-14.024],"4.0":[-9.859,40.663,-13.132],"4.0417":[-9.843,40.833,-13.029],"4.0833":[-9.678,41.223,-13.771],"4.125":[-9.157,41.296,-13.211],"4.1667":[-8.01,41.126,-11.748],"4.2083":[-7.481,40.573,-10.305],"4.25":[-7.11,39.624,-9.714],"4.2917":[-7.079,39.042,-9.893],"4.3333":[-7.078,38.604,-9.757],"4.375":[-7.129,38.464,-9.695],"4.4167":[-7.149,38.394,-9.61],"4.4583":[-7.152,38.421,-9.562],"4.5":[-7.205,38.552,-9.513],"4.5417":[-7.27,38.645,-9.504],"4.5833":[-7.362,38.722,-9.522],"4.625":[-7.417,38.759,-9.545],"4.6667":[-7.49,38.8,-9.589],"4.7083":[-7.531,38.819,-9.618],"4.75":[-7.569,38.832,-9.65],"4.7917":[-7.568,38.835,-9.654],"4.8333":[-7.54,38.817,-9.644],"4.875":[-7.516,38.787,-9.633],"4.9167":[-7.475,38.716,-9.618],"4.9583":[-7.445,38.662,-9.607],"5.0":[-7.401,38.574,-9.59],"5.0417":[-7.371,38.51,-9.581],"5.0833":[-7.327,38.418,-9.568],"5.125":[-7.299,38.358,-9.562],"5.1667":[-7.261,38.278,-9.556],"5.2083":[-7.236,38.231,-9.554],"5.25":[-7.203,38.161,-9.55],"5.2917":[-7.181,38.119,-9.548],"5.3333":[-7.15,38.052,-9.545],"5.375":[-7.127,38.012,-9.543],"5.4167":[-7.09,37.947,-9.54],"5.4583":[-7.064,37.904,-9.536],"5.5":[-7.021,37.837,-9.532],"5.5417":[-6.986,37.788,-9.528],"5.5833":[-6.931,37.714,-9.522],"5.625":[-6.89,37.662,-9.516],"5.6667":[-6.816,37.576,-9.506],"5.7083":[-6.759,37.514,-9.497],"5.75":[-6.644,37.41,-9.472],"5.7917":[-6.552,37.334,-9.449],"5.8333":[-6.394,37.21,-9.41],"5.875":[-6.286,37.125,-9.385],"5.9167":[-6.121,36.992,-9.352],"5.9583":[-6.018,36.902,-9.336],"6.0":[-5.884,36.769,-9.326],"6.0417":[-5.809,36.679,-9.333],"6.0833":[-6.036,36.475,-9.732],"6.125":[-6.248,35.913,-9.981],"6.1667":[-6.9,35.729,-9.796],"6.2083":[-7.363,35.468,-10.211],"6.25":[-7.992,35.335,-10.907],"6.2917":[-8.346,35.664,-11.099],"6.3333":[-8.858,36.37,-11.282],"6.375":[-9.159,36.861,-11.36],"6.4167":[-9.514,37.402,-11.463],"6.4583":[-9.679,37.607,-11.538],"6.5":[-9.885,37.833,-11.639],"6.5417":[-9.989,37.934,-11.699],"6.5833":[-10.107,38.035,-11.769],"6.625":[-10.158,38.073,-11.805],"6.6667":[-10.202,38.107,-11.832],"6.7083":[-10.215,38.119,-11.847],"6.75":[-10.22,38.12,-11.865],"6.7917":[-10.218,38.114,-11.876],"6.8333":[-10.202,38.095,-11.891],"6.875":[-10.188,38.078,-11.898],"6.9167":[-10.161,38.045,-11.907],"6.9583":[-10.142,38.021,-11.91],"7.0":[-10.112,37.987,-11.91],"7.0417":[-10.096,37.964,-11.907],"7.0833":[-10.072,37.929,-11.9],"7.125":[-10.066,37.913,-11.89],"7.1667":[-10.062,37.892,-11.873],"7.2083":[-10.065,37.883,-11.857],"7.25":[-10.091,37.882,-11.825],"7.2917":[-10.134,37.903,-11.783],"7.3333":[-10.267,37.977,-11.667],"7.375":[-10.376,38.047,-11.569],"7.4167":[-10.54,38.164,-11.424],"7.4583":[-10.63,38.238,-11.341],"7.5":[-10.716,38.315,-11.26],"7.5417":[-10.745,38.351,-11.22],"7.5833":[-10.767,38.394,-11.171],"7.625":[-10.772,38.415,-11.149],"7.6667":[-10.775,38.433,-11.141],"7.7083":[-10.783,38.439,-11.154],"7.75":[-10.808,38.421,-11.205],"7.7917":[-10.83,38.375,-11.257],"7.8333":[-10.864,38.298,-11.372],"7.875":[-10.881,38.266,-11.474],"7.9167":[-10.888,38.298,-11.667],"7.9583":[-10.827,38.503,-11.874],"8.0":[-10.645,38.997,-12.341],"8.0417":[-10.446,39.254,-12.672],"8.0833":[-9.963,39.707,-13.009],"8.125":[-9.746,40.049,-13.148],"8.1667":[-9.675,40.525,-13.363],"8.2083":[-9.696,40.839,-13.506],"8.25":[-9.798,41.283,-13.707],"8.2917":[-9.89,41.547,-13.824],"8.3333":[-10.032,41.877,-13.954],"8.375":[-10.157,41.992,-14.039],"8.4167":[-10.371,42.056,-14.172],"8.4583":[-10.499,42.078,-14.247],"8.5":[-10.639,42.148,-14.303],"8.5417":[-10.714,42.204,-14.292],"8.5833":[-10.807,42.271,-14.239],"8.625":[-10.852,42.309,-14.195],"8.6667":[-10.895,42.347,-14.156],"8.7083":[-10.91,42.36,-14.134],"8.75":[-10.912,42.371,-14.11],"8.7917":[-10.91,42.373,-14.096],"8.8333":[-10.904,42.375,-14.072],"8.875":[-10.9,42.378,-14.058],"8.9167":[-10.91,42.39,-14.035],"8.9583":[-10.919,42.401,-14.018],"9.0":[-10.936,42.416,-13.994],"9.0417":[-10.947,42.422,-13.98],"9.0833":[-10.958,42.425,-13.966],"9.125":[-10.964,42.417,-13.96],"9.1667":[-10.97,42.404,-13.954],"9.2083":[-10.975,42.395,-13.951],"9.25":[-10.982,42.42,-14.093],"9.2917":[-10.99,42.446,-14.246],"9.3333":[-10.997,42.495,-14.456],"9.375":[-10.994,42.541,-14.572],"9.4167":[-10.947,42.679,-14.659],"9.4583":[-10.888,42.815,-14.65],"9.5":[-10.839,42.921,-14.645],"9.5417":[-10.831,42.933,-14.655],"9.5833":[-10.83,42.918,-14.669],"9.625":[-10.832,42.903,-14.679],"9.6667":[-10.815,42.887,-14.691],"9.7083":[-10.796,42.881,-14.701],"9.75":[-10.757,42.869,-14.711],"9.7917":[-10.734,42.859,-14.72],"9.8333":[-10.694,42.832,-14.698],"9.875":[-10.666,42.805,-14.673],"9.9167":[-10.517,42.701,-14.445],"9.9583":[-10.219,42.564,-14.091],"10.0":[-9.637,41.795,-13.248],"10.0417":[-9.103,40.259,-12.883],"10.0833":[-8.093,38.013,-12.744],"10.125":[-7.061,38.107,-12.687],"10.1667":[-5.173,39.561,-13.163],"10.2083":[-5.082,40.739,-13.672],"10.25":[-6.038,41.803,-14.694],"10.2917":[-6.966,40.981,-15.348],"10.3333":[-8,39.592,-15.953],"10.375":[-8.456,39.049,-16.209],"10.4167":[-8.679,39.743,-16.212],"10.4583":[-8.312,40.394,-15.937],"10.5":[-7.28,40.601,-15.498],"10.5417":[-6.833,40.419,-15.585],"10.5833":[-7.343,40.015,-16.387],"10.625":[-7.981,40.027,-16.564],"10.6667":[-8.908,40.3,-16.08],"10.7083":[-10.06,39.804,-14.997],"10.75":[-11.246,40.106,-13.39],"10.7917":[-11.419,40.375,-12.221],"10.8333":[-11.386,40.548,-11.943],"10.875":[-11.302,40.583,-12.271],"10.9167":[-11.227,40.582,-12.564],"10.9583":[-11.181,40.544,-12.652],"11.0":[-11.102,40.454,-12.679],"11.0417":[-11.061,40.397,-12.666],"11.0833":[-11.037,40.345,-12.64],"11.125":[-11.032,40.318,-12.616],"11.1667":[-11.034,40.284,-12.575],"11.2083":[-11.039,40.261,-12.542],"11.25":[-11.045,40.23,-12.496],"11.2917":[-11.047,40.207,-12.468]}},"lefthand":{"rotation":{"0.0":[126.183,22.017,120.626],"0.0417":[126.977,21.074,118.722],"0.0833":[126.155,22.167,121.513],"0.125":[126.104,22.224,121.581],"0.1667":[126.036,22.311,121.685],"0.2083":[125.997,22.371,121.758],"0.25":[125.946,22.458,121.861],"0.2917":[125.917,22.516,121.933],"0.3333":[125.881,22.604,122.043],"0.375":[125.864,22.668,122.119],"0.4167":[125.841,22.758,122.229],"0.4583":[125.833,22.815,122.305],"0.5":[125.826,22.908,122.422],"0.5417":[125.83,22.96,122.495],"0.5833":[125.838,23.05,122.614],"0.625":[125.849,23.104,122.691],"0.6667":[125.87,23.189,122.808],"0.7083":[125.89,23.242,122.888],"0.75":[125.926,23.328,123.009],"0.7917":[125.952,23.378,123.085],"0.8333":[126.002,23.455,123.203],"0.875":[126.037,23.507,123.283],"0.9167":[126.095,23.583,123.404],"0.9583":[126.139,23.63,123.482],"1.0":[126.207,23.699,123.598],"1.0417":[126.256,23.746,123.678],"1.0833":[126.336,23.81,123.794],"1.125":[126.391,23.849,123.87],"1.1667":[126.478,23.912,123.986],"1.2083":[126.541,23.946,124.058],"1.25":[126.637,24,124.17],"1.2917":[126.701,24.039,124.246],"1.3333":[126.804,24.085,124.353],"1.375":[126.875,24.113,124.422],"1.4167":[126.982,24.158,124.527],"1.4583":[127.056,24.184,124.595],"1.5":[127.169,24.221,124.694],"1.5417":[127.246,24.243,124.758],"1.5833":[127.362,24.272,124.851],"1.625":[127.44,24.293,124.913],"1.6667":[127.559,24.316,124.998],"1.7083":[127.639,24.329,125.054],"1.75":[127.76,24.347,125.134],"1.7917":[127.839,24.355,125.182],"1.8333":[127.958,24.369,125.256],"1.875":[128.038,24.375,125.301],"1.9167":[128.155,24.38,125.363],"1.9583":[128.232,24.382,125.401],"2.0":[128.347,24.382,125.455],"2.0417":[128.423,24.376,125.486],"2.0833":[128.533,24.373,125.53],"2.125":[128.606,24.365,125.554],"2.1667":[128.711,24.353,125.588],"2.2083":[128.778,24.348,125.603],"2.25":[128.875,24.329,125.622],"2.2917":[128.937,24.312,125.633],"2.3333":[129.025,24.288,125.64],"2.375":[129.082,24.272,125.64],"2.4167":[129.159,24.241,125.636],"2.4583":[129.208,24.221,125.627],"2.5":[129.273,24.182,125.609],"2.5417":[129.315,24.161,125.591],"2.5833":[129.367,24.12,125.557],"2.625":[129.395,24.091,125.53],"2.6667":[129.433,24.048,125.481],"2.7083":[129.451,24.013,125.444],"2.75":[129.474,23.965,125.38],"2.7917":[129.48,23.93,125.332],"2.8333":[129.482,23.875,125.253],"2.875":[129.48,23.837,125.195],"2.9167":[129.461,23.777,125.1],"2.9583":[129.443,23.741,125.029],"3.0":[129.403,23.675,124.918],"3.0417":[129.37,23.629,124.838],"3.0833":[129.304,23.559,124.711],"3.125":[129.255,23.515,124.62],"3.1667":[129.167,23.442,124.474],"3.2083":[129.102,23.394,124.372],"3.25":[128.986,23.312,124.212],"3.2917":[128.901,23.262,124.097],"3.3333":[128.759,23.179,123.921],"3.375":[128.654,23.12,123.796],"3.4167":[128.483,23.037,123.602],"3.4583":[128.358,22.977,123.466],"3.5":[128.153,22.884,123.255],"3.5417":[128.008,22.824,123.109],"3.5833":[127.773,22.731,122.881],"3.625":[127.601,22.664,122.723],"3.6667":[127.332,22.562,122.479],"3.7083":[127.139,22.49,122.315],"3.75":[126.833,22.386,122.059],"3.7917":[126.616,22.313,121.879],"3.8333":[126.275,22.205,121.606],"3.875":[123.864,21.206,120.12],"3.9167":[101.73,18.965,111.635],"3.9583":[89.569,21.194,103.74],"4.0":[75.922,17.644,84.9],"4.0417":[74.448,16.405,79.525],"4.0833":[86.705,22.469,91.235],"4.125":[110.658,4.448,141.91],"4.1667":[102.254,-31.287,192.396],"4.2083":[105.628,-26.236,190.871],"4.25":[110.132,-21.834,194.311],"4.2917":[112.893,-20.911,197.864],"4.3333":[117.982,-18.362,196.549],"4.375":[119.835,-17.535,193.874],"4.4167":[121.252,-22.209,190.463],"4.4583":[121.832,-25.97,189.451],"4.5":[121.892,-30.123,190.127],"4.5417":[121.556,-30.96,191.377],"4.5833":[120.728,-30.268,193.268],"4.625":[120.141,-29.347,194.387],"4.6667":[119.781,-27.686,194.733],"4.7083":[119.835,-26.659,194.181],"4.75":[119.763,-25.697,193.644],"4.7917":[119.628,-25.817,193.535],"4.8333":[119.353,-26.747,193.562],"4.875":[119.153,-27.485,193.556],"4.9167":[118.834,-28.693,193.545],"4.9583":[118.595,-29.555,193.562],"5.0":[118.244,-30.854,193.58],"5.0417":[118.025,-31.685,193.561],"5.0833":[117.746,-32.824,193.423],"5.125":[117.612,-33.468,193.233],"5.1667":[117.522,-34.208,192.758],"5.2083":[117.501,-34.671,192.389],"5.25":[117.508,-35.381,191.802],"5.2917":[117.534,-35.867,191.39],"5.3333":[117.597,-36.609,190.735],"5.375":[117.656,-37.106,190.281],"5.4167":[117.754,-37.858,189.555],"5.4583":[117.821,-38.359,189.053],"5.5":[117.925,-39.105,188.258],"5.5417":[117.991,-39.595,187.706],"5.5833":[118.071,-40.317,186.843],"5.625":[118.108,-40.792,186.244],"5.6667":[118.13,-41.491,185.307],"5.7083":[118.133,-41.979,184.654],"5.75":[118.177,-42.947,183.592],"5.7917":[118.226,-43.701,182.823],"5.8333":[118.306,-44.849,181.599],"5.875":[118.333,-45.551,180.741],"5.9167":[118.353,-46.35,179.296],"5.9583":[118.288,-46.663,178.307],"6.0":[117.856,-46.211,177.164],"6.0417":[117.319,-44.872,176.699],"6.0833":[105.434,-51.999,194.339],"6.125":[96.231,-53.918,206.683],"6.1667":[88.471,-53.667,215.455],"6.2083":[84.545,-52.896,219.977],"6.25":[80.52,-51.207,224.672],"6.2917":[81.628,-51.1,223.229],"6.3333":[87.738,-51.699,215.603],"6.375":[92.352,-51.857,209.985],"6.4167":[97.394,-51.638,204.221],"6.4583":[100.48,-51.224,200.907],"6.5":[103.388,-51.71,198.219],"6.5417":[103.032,-53.941,199.261],"6.5833":[95.612,-61.141,208.786],"6.625":[87.118,-65.819,218.616],"6.6667":[68.198,-71.084,239.186],"6.7083":[50.831,-72.868,257.48],"6.75":[30.876,-73.15,278.196],"6.7917":[27.698,-73.562,281.32],"6.8333":[23.576,-74.029,285.272],"6.875":[18.766,-73.916,289.99],"6.9167":[13.828,-73.759,294.83],"6.9583":[13.819,-74.022,294.861],"7.0":[16.517,-74.682,292.266],"7.0417":[17.879,-75.014,290.954],"7.0833":[19.7,-75.426,289.197],"7.125":[20.635,-75.632,288.295],"7.1667":[20.598,-75.684,288.341],"7.2083":[21.266,-75.837,287.698],"7.25":[23.035,-76.221,286.005],"7.2917":[30.294,-77.138,278.938],"7.3333":[66.307,-78.02,243.67],"7.375":[90.771,-75.629,219.81],"7.4167":[112.135,-69.182,199.395],"7.4583":[119.498,-64.616,192.629],"7.5":[123.973,-60.58,188.688],"7.5417":[125.279,-59.098,187.588],"7.5833":[126.332,-57.793,186.729],"7.625":[126.915,-57.129,186.247],"7.6667":[127.393,-56.68,185.841],"7.7083":[127.558,-56.615,185.691],"7.75":[127.844,-56.557,185.429],"7.7917":[128.234,-56.367,185.096],"7.8333":[129.16,-55.985,184.322],"7.875":[129.478,-55.764,184.045],"7.9167":[129.083,-55.526,184.357],"7.9583":[125.867,-55.607,187.083],"8.0":[120.47,-54.738,191.289],"8.0417":[117.191,-53.286,193.575],"8.0833":[117.777,-48.041,190.22],"8.125":[124.46,-39.371,178.982],"8.1667":[131.437,-21.435,160.032],"8.2083":[131.842,-9.16,147.094],"8.25":[126.176,7.422,122.249],"8.2917":[120.38,11.262,111.273],"8.3333":[112.777,11.247,103.741],"8.375":[107.864,8.439,102.05],"8.4167":[98.489,0.336,105.277],"8.4583":[91.43,-5.263,110.228],"8.5":[82.656,-13.994,118.033],"8.5417":[76.184,-20.482,124.958],"8.5833":[69.021,-26.784,133.722],"8.625":[69.434,-27.413,134.927],"8.6667":[74.177,-26.443,133.288],"8.7083":[78.896,-24.99,130.715],"8.75":[86.941,-21.72,125.392],"8.7917":[92.168,-18.997,121.444],"8.8333":[98.729,-14.724,115.912],"8.875":[101.843,-12.288,113.033],"8.9167":[104.181,-10.283,110.764],"8.9583":[104.67,-9.886,110.292],"9.0":[105.325,-9.372,109.653],"9.0417":[105.713,-9.081,109.27],"9.0833":[106.213,-8.723,108.754],"9.125":[106.5,-8.535,108.449],"9.1667":[106.862,-8.322,108.052],"9.2083":[107.065,-8.224,107.823],"9.25":[107.314,-8.135,107.533],"9.2917":[107.442,-8.114,107.373],"9.3333":[107.591,-8.135,107.183],"9.375":[107.657,-8.182,107.086],"9.4167":[107.714,-8.295,106.986],"9.4583":[107.722,-8.397,106.944],"9.5":[107.704,-8.585,106.922],"9.5417":[107.667,-8.731,106.936],"9.5833":[107.586,-8.977,106.982],"9.625":[107.514,-9.153,107.037],"9.6667":[107.381,-9.436,107.145],"9.7083":[107.279,-9.63,107.237],"9.75":[107.1,-9.931,107.39],"9.7917":[106.968,-10.131,107.514],"9.8333":[106.761,-10.428,107.711],"9.875":[106.613,-10.618,107.852],"9.9167":[106.381,-10.891,108.083],"9.9583":[106.222,-11.057,108.245],"10.0":[105.976,-11.286,108.489],"10.0417":[105.813,-11.415,108.66],"10.0833":[105.568,-11.573,108.921],"10.125":[105.408,-11.649,109.095],"10.1667":[105.172,-11.717,109.354],"10.2083":[105.02,-11.725,109.523],"10.25":[104.809,-11.679,109.774],"10.2917":[104.679,-11.604,109.935],"10.3333":[104.502,-11.421,110.169],"10.375":[104.401,-11.247,110.315],"10.4167":[104.278,-10.905,110.521],"10.4583":[104.218,-10.618,110.647],"10.5":[104.085,-8.861,111.201],"10.5417":[104.459,-0.382,113.87],"10.5833":[111.707,8.161,119.347],"10.625":[120.897,1.891,121.509],"10.6667":[121.434,0.613,116.406],"10.7083":[106.668,10.549,106.635],"10.75":[102.691,14.731,104.082],"10.7917":[108.138,13.547,106.865],"10.8333":[114.744,11.212,106.976],"10.875":[118.007,12.136,104.66],"10.9167":[120.743,15.582,103.567],"10.9583":[123.026,16.112,109.077],"11.0":[125.351,17.023,116.164],"11.0417":[126.099,18.124,119.515],"11.0833":[126.609,19.67,122.756],"11.125":[126.451,20.466,122.894],"11.1667":[125.704,21.547,121.405],"11.2083":[125.573,21.983,121.085],"11.25":[125.896,22.12,121.313],"11.2917":[126.153,22.167,121.51]},"position":{"0.0":[15.003,36.908,-13.435],"0.0417":[15.371,31.602,-9.503],"0.0833":[14.878,29.276,-3.256],"0.125":[14.861,29.278,-3.153],"0.1667":[14.833,29.279,-3.004],"0.2083":[14.811,29.28,-2.91],"0.25":[14.778,29.285,-2.773],"0.2917":[14.755,29.288,-2.685],"0.3333":[14.718,29.293,-2.558],"0.375":[14.692,29.298,-2.478],"0.4167":[14.65,29.305,-2.36],"0.4583":[14.623,29.309,-2.288],"0.5":[14.577,29.314,-2.181],"0.5417":[14.548,29.318,-2.113],"0.5833":[14.501,29.324,-2.014],"0.625":[14.47,29.327,-1.954],"0.6667":[14.422,29.333,-1.865],"0.7083":[14.389,29.337,-1.808],"0.75":[14.339,29.341,-1.728],"0.7917":[14.305,29.344,-1.677],"0.8333":[14.255,29.347,-1.605],"0.875":[14.221,29.348,-1.56],"0.9167":[14.168,29.351,-1.495],"0.9583":[14.133,29.349,-1.457],"1.0":[14.077,29.351,-1.398],"1.0417":[14.045,29.352,-1.364],"1.0833":[13.992,29.35,-1.316],"1.125":[13.956,29.35,-1.285],"1.1667":[13.906,29.346,-1.243],"1.2083":[13.867,29.343,-1.218],"1.25":[13.816,29.34,-1.181],"1.2917":[13.782,29.335,-1.161],"1.3333":[13.731,29.33,-1.132],"1.375":[13.698,29.327,-1.113],"1.4167":[13.645,29.318,-1.09],"1.4583":[13.612,29.318,-1.077],"1.5":[13.564,29.308,-1.062],"1.5417":[13.532,29.3,-1.051],"1.5833":[13.484,29.294,-1.042],"1.625":[13.451,29.287,-1.036],"1.6667":[13.406,29.275,-1.031],"1.7083":[13.377,29.269,-1.029],"1.75":[13.332,29.259,-1.03],"1.7917":[13.308,29.253,-1.033],"1.8333":[13.263,29.24,-1.037],"1.875":[13.238,29.235,-1.043],"1.9167":[13.203,29.222,-1.054],"1.9583":[13.179,29.214,-1.065],"2.0":[13.142,29.204,-1.081],"2.0417":[13.12,29.194,-1.095],"2.0833":[13.092,29.183,-1.113],"2.125":[13.075,29.176,-1.13],"2.1667":[13.048,29.164,-1.158],"2.2083":[13.031,29.156,-1.176],"2.25":[13.011,29.145,-1.206],"2.2917":[12.997,29.137,-1.226],"2.3333":[12.981,29.126,-1.262],"2.375":[12.971,29.12,-1.288],"2.4167":[12.964,29.109,-1.327],"2.4583":[12.958,29.102,-1.358],"2.5":[12.952,29.094,-1.398],"2.5417":[12.951,29.089,-1.43],"2.5833":[12.955,29.081,-1.476],"2.625":[12.957,29.074,-1.509],"2.6667":[12.968,29.066,-1.561],"2.7083":[12.977,29.062,-1.596],"2.75":[12.993,29.057,-1.652],"2.7917":[13.006,29.051,-1.689],"2.8333":[13.031,29.047,-1.748],"2.875":[13.052,29.048,-1.788],"2.9167":[13.086,29.044,-1.848],"2.9583":[13.111,29.043,-1.891],"3.0":[13.154,29.044,-1.955],"3.0417":[13.186,29.043,-2],"3.0833":[13.238,29.043,-2.066],"3.125":[13.276,29.045,-2.113],"3.1667":[13.338,29.051,-2.182],"3.2083":[13.384,29.054,-2.23],"3.25":[13.458,29.059,-2.302],"3.2917":[13.509,29.063,-2.352],"3.3333":[13.594,29.072,-2.426],"3.375":[13.654,29.08,-2.478],"3.4167":[13.749,29.092,-2.554],"3.4583":[13.818,29.099,-2.606],"3.5":[13.923,29.113,-2.684],"3.5417":[13.999,29.125,-2.739],"3.5833":[14.118,29.142,-2.819],"3.625":[14.201,29.155,-2.868],"3.6667":[14.334,29.178,-2.952],"3.7083":[14.426,29.194,-3.008],"3.75":[14.567,29.218,-3.09],"3.7917":[14.667,29.237,-3.144],"3.8333":[14.824,29.268,-3.228],"3.875":[16.002,29.547,-3.806],"3.9167":[22.972,33.779,-7.542],"3.9583":[24.375,35.463,-8.221],"4.0":[25.07,34.066,-9.239],"4.0417":[23.285,34.648,-10.452],"4.0833":[17.39,37.795,-10.348],"4.125":[14.762,38.482,-10.586],"4.1667":[12.011,38.971,-10.718],"4.2083":[11.271,39.074,-10.742],"4.25":[10.826,38.242,-10.251],"4.2917":[10.427,37.802,-10.274],"4.3333":[9.925,38.069,-9.861],"4.375":[9.703,38.27,-9.727],"4.4167":[9.611,38.371,-10.07],"4.4583":[9.605,38.33,-10.384],"4.5":[9.526,38.242,-10.763],"4.5417":[9.42,38.252,-10.857],"4.5833":[9.29,38.365,-10.854],"4.625":[9.221,38.47,-10.822],"4.6667":[9.15,38.636,-10.752],"4.7083":[9.12,38.736,-10.706],"4.75":[9.083,38.84,-10.672],"4.7917":[9.071,38.885,-10.694],"4.8333":[9.067,38.91,-10.77],"4.875":[9.067,38.907,-10.824],"4.9167":[9.07,38.877,-10.914],"4.9583":[9.074,38.846,-10.978],"5.0":[9.079,38.797,-11.073],"5.0417":[9.086,38.762,-11.136],"5.0833":[9.1,38.722,-11.223],"5.125":[9.112,38.708,-11.275],"5.1667":[9.136,38.713,-11.34],"5.2083":[9.156,38.727,-11.382],"5.25":[9.189,38.75,-11.448],"5.2917":[9.21,38.774,-11.495],"5.3333":[9.244,38.81,-11.567],"5.375":[9.269,38.841,-11.616],"5.4167":[9.309,38.887,-11.686],"5.4583":[9.333,38.921,-11.732],"5.5":[9.372,38.977,-11.799],"5.5417":[9.402,39.016,-11.841],"5.5833":[9.444,39.076,-11.895],"5.625":[9.47,39.115,-11.929],"5.6667":[9.51,39.183,-11.965],"5.7083":[9.536,39.229,-11.983],"5.75":[9.585,39.305,-12.008],"5.7917":[9.625,39.354,-12.021],"5.8333":[9.699,39.428,-12.041],"5.875":[9.752,39.473,-12.051],"5.9167":[9.845,39.553,-12.072],"5.9583":[9.921,39.621,-12.089],"6.0":[10.076,39.72,-12.074],"6.0417":[10.232,39.784,-12.016],"6.0833":[10.307,39.119,-13.205],"6.125":[10.292,38.468,-13.933],"6.1667":[10.363,37.826,-14.32],"6.2083":[10.407,37.521,-14.466],"6.25":[10.459,37.278,-14.542],"6.2917":[10.494,37.277,-14.569],"6.3333":[10.569,37.437,-14.583],"6.375":[10.618,37.592,-14.584],"6.4167":[10.643,37.817,-14.583],"6.4583":[10.64,37.974,-14.572],"6.5":[10.636,38.251,-14.573],"6.5417":[10.669,38.476,-14.612],"6.5833":[10.774,38.922,-14.737],"6.625":[10.855,39.215,-14.818],"6.6667":[10.975,39.628,-14.921],"6.7083":[11.055,39.887,-14.98],"6.75":[11.153,40.182,-15.006],"6.7917":[11.182,40.273,-14.966],"6.8333":[11.218,40.359,-14.897],"6.875":[11.245,40.405,-14.856],"6.9167":[11.274,40.446,-14.804],"6.9583":[11.278,40.46,-14.779],"7.0":[11.272,40.461,-14.754],"7.0417":[11.268,40.46,-14.738],"7.0833":[11.263,40.453,-14.714],"7.125":[11.26,40.447,-14.698],"7.1667":[11.264,40.443,-14.684],"7.2083":[11.27,40.441,-14.674],"7.25":[11.275,40.43,-14.656],"7.2917":[11.275,40.426,-14.63],"7.3333":[11.259,40.419,-14.567],"7.375":[11.246,40.41,-14.515],"7.4167":[11.227,40.384,-14.45],"7.4583":[11.216,40.368,-14.401],"7.5":[11.2,40.361,-14.311],"7.5417":[11.19,40.362,-14.242],"7.5833":[11.177,40.366,-14.146],"7.625":[11.172,40.367,-14.105],"7.6667":[11.169,40.36,-14.071],"7.7083":[11.169,40.358,-14.055],"7.75":[11.168,40.351,-14.038],"7.7917":[11.163,40.347,-14.027],"7.8333":[11.153,40.339,-14.027],"7.875":[11.148,40.338,-14.022],"7.9167":[11.14,40.348,-14.006],"7.9583":[11.153,40.381,-14.003],"8.0":[11.244,40.381,-14.032],"8.0417":[11.409,40.261,-14.064],"8.0833":[11.747,39.909,-14.29],"8.125":[12.07,39.478,-14.737],"8.1667":[12.746,38.593,-15.559],"8.2083":[13.349,37.86,-16.066],"8.25":[14.555,36.462,-16.706],"8.2917":[15.343,35.396,-16.698],"8.3333":[16.392,33.755,-16.08],"8.375":[17.152,32.462,-15.483],"8.4167":[18.699,29.949,-14.141],"8.4583":[19.599,28.23,-12.829],"8.5":[19.876,25.854,-10.586],"8.5417":[19.506,24.319,-8.78],"8.5833":[18.924,23.002,-6.469],"8.625":[19.025,22.932,-5.843],"8.6667":[19.406,23.302,-5.346],"8.7083":[19.625,23.776,-5.08],"8.75":[19.734,24.774,-4.655],"8.7917":[19.606,25.55,-4.33],"8.8333":[19.185,26.697,-3.815],"8.875":[18.859,27.312,-3.521],"8.9167":[18.539,27.805,-3.256],"8.9583":[18.453,27.907,-3.176],"9.0":[18.327,28.036,-3.066],"9.0417":[18.245,28.11,-2.996],"9.0833":[18.126,28.206,-2.898],"9.125":[18.053,28.256,-2.837],"9.1667":[17.946,28.318,-2.752],"9.2083":[17.882,28.35,-2.701],"9.25":[17.791,28.384,-2.63],"9.2917":[17.736,28.397,-2.589],"9.3333":[17.663,28.406,-2.531],"9.375":[17.619,28.405,-2.497],"9.4167":[17.562,28.393,-2.452],"9.4583":[17.528,28.38,-2.427],"9.5":[17.487,28.353,-2.395],"9.5417":[17.465,28.329,-2.376],"9.5833":[17.441,28.287,-2.357],"9.625":[17.426,28.258,-2.348],"9.6667":[17.416,28.206,-2.339],"9.7083":[17.415,28.171,-2.339],"9.75":[17.419,28.117,-2.342],"9.7917":[17.426,28.078,-2.35],"9.8333":[17.445,28.019,-2.366],"9.875":[17.463,27.981,-2.381],"9.9167":[17.496,27.923,-2.408],"9.9583":[17.521,27.885,-2.43],"10.0":[17.571,27.838,-2.471],"10.0417":[17.606,27.802,-2.502],"10.0833":[17.666,27.759,-2.554],"10.125":[17.714,27.735,-2.593],"10.1667":[17.794,27.702,-2.659],"10.2083":[17.853,27.688,-2.706],"10.25":[17.949,27.671,-2.785],"10.2917":[18.017,27.671,-2.842],"10.3333":[18.131,27.68,-2.935],"10.375":[18.213,27.691,-3.001],"10.4167":[18.345,27.729,-3.104],"10.4583":[18.441,27.759,-3.178],"10.5":[18.939,28.01,-3.559],"10.5417":[21.071,29.595,-5.119],"10.5833":[22.442,33.536,-6.958],"10.625":[20.312,35.994,-7.376],"10.6667":[18.47,37.49,-9.141],"10.7083":[17.951,37.337,-12.539],"10.75":[16.18,37.745,-14.023],"10.7917":[15.216,37.82,-13.748],"10.8333":[14.641,38.169,-12.976],"10.875":[14.644,38.396,-12.647],"10.9167":[14.986,38.515,-12.7],"10.9583":[15.146,38.423,-12.836],"11.0":[15.235,38.333,-13.111],"11.0417":[15.172,38.346,-13.34],"11.0833":[15.052,38.355,-13.646],"11.125":[15.02,38.319,-13.77],"11.1667":[14.987,38.251,-13.88],"11.2083":[14.957,38.208,-13.908],"11.25":[14.911,38.123,-13.877],"11.2917":[14.877,38.064,-13.848]}},"righthand_1":{"rotation":{"0.0":[0,0,0],"4.0417":[0,0,0],"6.5833":[-32.5,0,0],"8.1667":[-32.5,0,0],"8.375":[-35.1045,20.8813,-14.0657],"8.4583":[-23.7495,33.3746,10.392],"8.5417":[-35.1045,20.8813,-14.0657],"8.75":[-32.8987,8.4215,-5.4121],"9.2917":[-32.8987,8.4215,-5.4121],"9.875":[-32.8987,8.4215,-5.4121],"10.1667":[0,0,0]},"position":{"0.0":[0,-0.25,1.75],"0.0833":[-0.5,1.25,2.5],"0.125":[-0.4,3.4373,1.21],"0.1667":[-0.6,3.42,0.94],"0.2083":[0.85,3.95,-1.12],"0.25":[1.92,4.18,-2.13],"0.2917":[3.5527,4.78,-1.23],"0.3333":[3.25,5,-0.5],"0.4167":[0.25,5.2027,1.3],"2.0417":[0.25,5.2027,1.3],"2.4583":[-1.0087,4.4107,0.7],"3.7083":[-1.0087,4.4107,0.7],"3.75":[0.99,4.3287,2.144],"3.875":[3.994,2.03,1.0453],"3.9167":[3.0727,3.0007,-1.7047],"3.9583":[0.964,3.56,-1.83],"4.0":[-0.0487,4.12,0.154],"4.0417":[-0.4,2.904,1.4253],"4.125":[-0.4,-0.587,1.161],"8.1667":[-0.4,-0.587,1.161],"8.375":[0.9864,0.1142,0.5165],"8.5417":[-0.4,0.5656,0.2394],"8.75":[0.4262,0.8578,-0.2117],"9.2917":[0.4262,0.8578,-0.2117],"9.4167":[0.2874,1.7444,-0.6056],"9.875":[0.4262,0.8578,-0.2117],"10.0":[-0.7956,-0.8527,0.8938],"10.0833":[-1.3483,-0.5262,1.7071],"10.1667":[-2.3169,0.3749,0.9135],"10.25":[-0.8427,3.42,-0.0667],"10.3333":[4.322,4.19,0.7987],"10.375":[3.52,4.19,2.592],"10.4583":[2.2613,4.19,3.07],"10.5":[3.604,5.0753,-0.6633],"10.5417":[0.5533,4.7707,-1.8973],"10.5833":[-0.1647,3.0313,1.94],"10.75":[0,-0.25,1.75]},"scale":[1,1.5,1]},"lefthand_1":{"rotation":{"0.0":[0,0,0],"5.2917":[0,0,30],"6.0":[0,0,20],"6.9167":[0,0,10],"8.7083":[0,0,10],"10.0833":[0,0,0]},"position":{"0.0":[0,0,0],"5.2917":[2.2933,6,0],"8.7083":[2.2933,6,0],"10.0833":[0,0,0]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.032,-0.009,-0.002],"0.0417":[0.257,-0.078,-0.002],"0.0833":[0.672,-0.228,0.001],"0.125":[0.802,-0.313,0],"0.1667":[0.525,-0.375,-0.003],"0.2083":[0.231,-0.365,-0.077],"0.25":[-0.271,-0.236,-0.462],"0.2917":[-0.463,-0.17,-0.251],"0.3333":[-0.64,-0.067,0.288],"0.375":[-0.633,0.068,0.306],"0.4167":[-0.427,0.353,-0.104],"0.4583":[-0.25,0.53,-0.266],"0.5":[0.053,0.724,-0.016],"0.5417":[0.254,0.817,0.202],"0.5833":[0.444,0.868,0.177],"0.625":[0.531,0.882,0.048],"0.6667":[0.625,0.889,-0.121],"0.7083":[0.659,0.889,-0.134],"0.75":[0.686,0.887,-0.101],"0.7917":[0.693,0.887,-0.081],"0.8333":[0.704,0.875,-0.016],"0.875":[0.705,0.869,0.004],"0.9167":[0.701,0.845,0.004],"0.9583":[0.685,0.81,-0.001],"1.0":[0.646,0.744,-0.014],"1.0417":[0.614,0.69,-0.025],"1.0833":[0.559,0.595,-0.042],"1.125":[0.517,0.531,-0.053],"1.1667":[0.454,0.437,-0.067],"1.2083":[0.415,0.375,-0.074],"1.25":[0.362,0.289,-0.078],"1.2917":[0.333,0.242,-0.078],"1.3333":[0.284,0.164,-0.074],"1.375":[0.25,0.109,-0.071],"1.4167":[0.2,0.038,-0.063],"1.4583":[0.169,-0.01,-0.058],"1.5":[0.119,-0.086,-0.05],"1.5417":[0.087,-0.134,-0.045],"1.5833":[0.056,-0.176,-0.038],"1.625":[0.015,-0.245,-0.031],"1.6667":[-0.026,-0.307,-0.025],"1.7083":[-0.048,-0.345,-0.022],"1.75":[-0.08,-0.401,-0.022],"1.7917":[-0.101,-0.438,-0.019],"1.8333":[-0.122,-0.485,-0.015],"1.875":[-0.138,-0.513,-0.012],"1.9167":[-0.159,-0.55,-0.002],"1.9583":[-0.17,-0.569,0.045],"2.0":[-0.183,-0.601,0.216],"2.0417":[-0.19,-0.615,0.362],"2.0833":[-0.197,-0.631,0.595],"2.125":[-0.199,-0.639,0.711],"2.1667":[-0.2,-0.643,0.857],"2.2083":[-0.199,-0.643,0.937],"2.25":[-0.193,-0.648,1.021],"2.2917":[-0.179,-0.652,1.056],"2.3333":[-0.157,-0.667,1.082],"2.375":[-0.136,-0.681,1.096],"2.4167":[-0.093,-0.705,1.1],"2.4583":[-0.05,-0.724,1.099],"2.5":[0.013,-0.755,1.1],"2.5417":[0.058,-0.778,1.1],"2.5833":[0.129,-0.811,1.1],"2.625":[0.18,-0.834,1.1],"2.6667":[0.251,-0.871,1.1],"2.7083":[0.309,-0.898,1.1],"2.75":[0.386,-0.939,1.1],"2.7917":[0.416,-0.952,1.101],"2.8333":[0.519,-1.008,1.101],"2.875":[0.571,-1.036,1.101],"2.9167":[0.66,-1.087,1.102],"2.9583":[0.719,-1.12,1.103],"3.0":[0.807,-1.176,1.105],"3.0417":[0.865,-1.212,1.106],"3.0833":[0.953,-1.263,1.107],"3.125":[1.007,-1.292,1.107],"3.1667":[1.081,-1.334,1.108],"3.2083":[1.129,-1.36,1.108],"3.25":[1.196,-1.393,1.108],"3.2917":[1.243,-1.41,1.107],"3.3333":[1.301,-1.44,1.11],"3.375":[1.335,-1.453,1.1],"3.4167":[1.373,-1.466,1.099],"3.4583":[1.389,-1.473,1.099],"3.5":[1.392,-1.446,1.04],"3.5417":[1.382,-1.269,0.739],"3.5833":[1.35,-1.006,0.325],"3.625":[1.263,-0.63,-0.023],"3.6667":[1.129,-0.375,-0.02],"3.7083":[1.02,-0.218,-0.015],"3.75":[0.84,-0.013,-0.007],"3.7917":[0.718,0.095,0],"3.8333":[0.52,0.226,0.001],"3.875":[0.393,0.282,0.01],"3.9167":[0.231,0.226,-0.05],"3.9583":[0.116,0.086,-0.187],"4.0":[-0.039,-0.25,-0.501],"4.0417":[-0.112,-0.494,-0.73],"4.0833":[-0.153,-0.84,-1.043],"4.125":[-0.058,-1.074,-1.229],"4.1667":[0.251,-1.425,-1.488],"4.2083":[0.513,-1.604,-1.601],"4.25":[0.936,-1.837,-1.739],"4.2917":[1.06,-1.97,-1.884],"4.3333":[0.745,-2.15,-2.32],"4.375":[0.411,-2.244,-2.634],"4.4167":[0.26,-2.357,-2.733],"4.4583":[0.317,-2.418,-2.521],"4.5":[0.447,-2.492,-2.012],"4.5417":[0.52,-2.533,-1.726],"4.5833":[0.546,-2.591,-1.615],"4.625":[0.52,-2.622,-1.679],"4.6667":[0.453,-2.662,-1.85],"4.7083":[0.412,-2.684,-1.963],"4.75":[0.383,-2.721,-2.044],"4.7917":[0.383,-2.736,-2.039],"4.8333":[0.388,-2.78,-1.98],"4.875":[0.399,-2.802,-1.936],"4.9167":[0.431,-2.841,-1.889],"4.9583":[0.459,-2.87,-1.877],"5.0":[0.539,-2.928,-1.883],"5.0417":[0.597,-2.975,-1.891],"5.0833":[0.698,-3.045,-1.906],"5.125":[0.77,-3.092,-1.916],"5.1667":[0.866,-3.166,-1.924],"5.2083":[0.929,-3.21,-1.926],"5.25":[1.016,-3.279,-1.926],"5.2917":[1.079,-3.323,-1.925],"5.3333":[1.165,-3.386,-1.924],"5.375":[1.228,-3.437,-1.924],"5.4167":[1.315,-3.5,-1.924],"5.4583":[1.38,-3.549,-1.924],"5.5":[1.467,-3.613,-1.923],"5.5417":[1.53,-3.66,-1.922],"5.5833":[1.585,-3.701,-1.922],"5.625":[1.671,-3.771,-1.921],"5.6667":[1.758,-3.835,-1.921],"5.7083":[1.818,-3.881,-1.92],"5.75":[1.901,-3.944,-1.92],"5.7917":[1.957,-3.988,-1.92],"5.8333":[2.041,-4.051,-1.919],"5.875":[2.086,-4.095,-1.92],"5.9167":[2.12,-4.159,-1.926],"5.9583":[2.137,-4.204,-1.932],"6.0":[2.171,-4.252,-1.942],"6.0417":[2.225,-4.269,-1.945],"6.0833":[2.61,-4.155,-1.921],"6.125":[2.843,-3.992,-1.897],"6.1667":[2.956,-3.734,-1.871],"6.2083":[2.935,-3.632,-1.87],"6.25":[2.663,-3.574,-1.87],"6.2917":[2.464,-3.58,-1.752],"6.3333":[2.091,-3.673,-0.535],"6.375":[1.831,-3.764,0.283],"6.4167":[1.504,-3.903,0.606],"6.4583":[1.312,-3.988,0.683],"6.5":[0.988,-4.147,0.724],"6.5417":[0.721,-4.305,0.744],"6.5833":[0.123,-4.679,0.788],"6.625":[-0.424,-5.035,0.806],"6.6667":[-1.283,-5.604,0.824],"6.7083":[-1.762,-5.928,0.84],"6.75":[-2.138,-6.194,0.884],"6.7917":[-2.172,-6.218,0.905],"6.8333":[-2.266,-6.286,1.015],"6.875":[-2.299,-6.308,1.076],"6.9167":[-2.333,-6.325,1.166],"6.9583":[-2.349,-6.33,1.226],"7.0":[-2.364,-6.341,1.315],"7.0417":[-2.372,-6.352,1.37],"7.0833":[-2.377,-6.373,1.444],"7.125":[-2.374,-6.387,1.492],"7.1667":[-2.358,-6.413,1.565],"7.2083":[-2.34,-6.427,1.613],"7.25":[-2.296,-6.445,1.672],"7.2917":[-2.255,-6.454,1.694],"7.3333":[-2.172,-6.464,1.723],"7.375":[-2.092,-6.458,1.718],"7.4167":[-1.87,-6.364,1.642],"7.4583":[-1.683,-6.269,1.566],"7.5":[-1.444,-6.127,1.459],"7.5417":[-1.354,-6.063,1.414],"7.5833":[-1.31,-6.009,1.387],"7.625":[-1.284,-5.948,1.363],"7.6667":[-1.247,-5.873,1.336],"7.7083":[-1.211,-5.818,1.316],"7.75":[-1.15,-5.736,1.288],"7.7917":[-1.117,-5.681,1.269],"7.8333":[-1.077,-5.592,1.238],"7.875":[-1.065,-5.535,1.214],"7.9167":[-1.054,-5.461,1.179],"7.9583":[-1.048,-5.405,1.153],"8.0":[-1.04,-5.274,1.095],"8.0417":[-1.037,-5.143,1.039],"8.0833":[-1.08,-4.921,0.934],"8.125":[-1.136,-4.757,0.854],"8.1667":[-1.244,-4.455,0.731],"8.2083":[-1.322,-4.221,0.654],"8.25":[-1.458,-3.733,0.547],"8.2917":[-1.581,-3.284,0.476],"8.3333":[-1.755,-2.601,0.395],"8.375":[-1.829,-2.232,0.367],"8.4167":[-1.923,-1.644,0.343],"8.4583":[-1.978,-1.254,0.333],"8.5":[-2.045,-0.724,0.325],"8.5417":[-2.075,-0.45,0.323],"8.5833":[-2.094,-0.21,0.319],"8.625":[-2.091,-0.152,0.317],"8.6667":[-2.083,-0.076,0.313],"8.7083":[-2.075,-0.043,0.311],"8.75":[-2.055,-0.004,0.31],"8.7917":[-2.051,0.002,0.31],"8.8333":[-2.023,0.015,0.309],"8.875":[-2.011,0.022,0.309],"8.9167":[-1.996,0.02,0.308],"8.9583":[-1.988,0.02,0.308],"9.0":[-1.971,0.019,0.308],"9.0417":[-1.955,0.019,0.308],"9.0833":[-1.939,0.008,0.309],"9.125":[-1.931,0.002,0.309],"9.1667":[-1.918,-0.024,0.31],"9.2083":[-1.915,-0.043,0.31],"9.25":[-1.916,-0.132,0.314],"9.2917":[-1.922,-0.298,0.319],"9.3333":[-1.932,-0.641,0.331],"9.375":[-1.94,-0.886,0.339],"9.4167":[-1.949,-1.199,0.349],"9.4583":[-1.951,-1.322,0.352],"9.5":[-1.952,-1.432,0.355],"9.5417":[-1.952,-1.487,0.356],"9.5833":[-1.951,-1.529,0.357],"9.625":[-1.947,-1.584,0.358],"9.6667":[-1.942,-1.618,0.359],"9.7083":[-1.933,-1.637,0.359],"9.75":[-1.92,-1.654,0.36],"9.7917":[-1.907,-1.659,0.36],"9.8333":[-1.887,-1.662,0.36],"9.875":[-1.868,-1.662,0.359],"9.9167":[-1.828,-1.662,0.36],"9.9583":[-1.789,-1.663,0.359],"10.0":[-1.708,-1.66,0.359],"10.0417":[-1.648,-1.653,0.359],"10.0833":[-1.551,-1.631,0.358],"10.125":[-1.492,-1.61,0.358],"10.1667":[-1.417,-1.485,0.355],"10.2083":[-1.364,-1.338,0.351],"10.25":[-1.238,-1.106,0.344],"10.2917":[-1.096,-0.984,0.341],"10.3333":[-0.752,-0.812,0.336],"10.375":[-0.5,-0.764,0.335],"10.4167":[-0.047,-1.249,0.338],"10.4583":[-0.179,-1.634,0.341],"10.5":[-0.626,-1.766,0.347],"10.5417":[-0.923,-1.723,0.349],"10.5833":[-1.07,-1.403,0.349],"10.625":[-0.907,-1.165,0.343],"10.6667":[-0.582,-0.823,0.336],"10.7083":[-0.317,-0.621,0.335],"10.75":[0.058,-0.255,0.77],"10.7917":[0.162,-0.121,1.066],"10.8333":[0.037,0.264,0.348],"10.875":[-0.104,0.156,-0.351],"10.9167":[-0.099,-0.04,-0.282],"10.9583":[-0.027,-0.163,0.135],"11.0":[0.043,-0.206,0.354],"11.0417":[0.066,-0.133,0.307],"11.0833":[0.087,0.012,0.198],"11.125":[0.09,0.053,0.138],"11.1667":[0.071,0.041,0.078],"11.2083":[0.044,0.028,0.046],"11.25":[0.01,0.003,0.008],"11.2917":[-0.001,-0.001,0.002]}}},"sound_effects":{"0.0":{"effect":"melee.shadowkiller.shadowkiller_inspect"}}},"draw":{"loop":true,"animation_length":1,"override_previous_animation":true,"bones":{"karambit":{"rotation":{"0.0":[51.717,26.738,150.709],"0.0417":[132.511,21.033,145.523],"0.0833":[229.142,25.316,150.075],"0.125":[283.419,26.202,157.237],"0.1667":[370.188,23.863,167.452],"0.2083":[423.511,22.389,167.228],"0.25":[488.241,25.139,160.324],"0.2917":[526.272,25.503,159.255],"0.3333":[597.644,23.999,169.495],"0.375":[623.71,14.468,185.236],"0.4167":[621.665,-5.64,205.693],"0.4583":[622.38,-17.145,219.278],"0.5":[626.057,-19.329,242.241],"0.5417":[614.048,-15.445,250.839],"0.5833":[591.544,-13.818,254.629],"0.625":[588.407,-16.998,256.779],"0.6667":[584.081,-21.482,259.844],"0.7083":[582.572,-23.457,261.048],"0.75":[586.698,-21.768,258.763],"0.7917":[589.304,-21.026,256.779],"0.8333":[592.215,-21.078,253.615],"0.875":[592.853,-21.512,253.203],"0.9167":[592.466,-22.572,254.249],"0.9583":[591.782,-23.381,255.341],"1.0":[591.069,-24.147,256.306]},"position":{"0.0":[4.182,41.068,-14.787],"0.0417":[0.755,45.077,-16.575],"0.0833":[-1.352,47.941,-22.31],"0.125":[-2.65,50.231,-26.379],"0.1667":[-3.277,53.117,-27.644],"0.2083":[-3.833,53.996,-25.57],"0.25":[-4.752,53.16,-22.869],"0.2917":[-4.582,51.914,-22.163],"0.3333":[-3.514,49.939,-22.981],"0.375":[-3.633,49.88,-23.658],"0.4167":[-4.248,50.295,-23.375],"0.4583":[-4.735,50.381,-23.284],"0.5":[-5.736,50.007,-22.522],"0.5417":[-5.888,49.709,-21.022],"0.5833":[-5.492,49.672,-18.827],"0.625":[-5.519,49.94,-18.536],"0.6667":[-5.558,50.206,-18.596],"0.7083":[-5.531,50.305,-18.836],"0.75":[-5.344,50.274,-19.146],"0.7917":[-5.224,50.218,-19.253],"0.8333":[-5.075,50.117,-19.279],"0.875":[-5.053,50.077,-19.26],"0.9167":[-5.086,50.046,-19.195],"0.9583":[-5.125,50.03,-19.14],"1.0":[-5.154,50.012,-19.085]}},"righthand":{"rotation":{"0.0":[64.206,57.695,127.076],"0.0417":[78.333,55.353,138.049],"0.0833":[91.192,50.794,152.082],"0.125":[96.287,48.528,160.101],"0.1667":[105.287,47.847,172.889],"0.2083":[110.856,48.01,180.434],"0.25":[114.131,53.038,182.211],"0.2917":[115.433,57.115,181.208],"0.3333":[125.698,53.301,191.567],"0.375":[131.814,42.223,202.378],"0.4167":[133.061,16.285,217.858],"0.4583":[129.663,0.548,226.405],"0.5":[121.767,-13.238,235.613],"0.5417":[113.109,-18.875,243.024],"0.5833":[100.867,-22.791,252.506],"0.625":[98.449,-25.627,254.981],"0.6667":[94.58,-29.979,258.621],"0.7083":[93.113,-31.971,260.062],"0.75":[97.393,-30.205,257.091],"0.7917":[99.939,-29.401,254.681],"0.8333":[102.608,-29.378,251.029],"0.875":[102.993,-29.812,250.498],"0.9167":[102.215,-30.921,251.574],"0.9583":[101.328,-31.775,252.759],"1.0":[100.531,-32.574,253.823]},"position":{"0.0":[-4.155,26.782,-7.865],"0.0417":[-6.418,31.704,-12.284],"0.0833":[-10.344,37.601,-17.615],"0.125":[-12.469,40.022,-19.782],"0.1667":[-12.898,40.276,-19.827],"0.2083":[-12.659,39.753,-19.206],"0.25":[-12.619,39.448,-18.867],"0.2917":[-12.582,39.351,-18.711],"0.3333":[-12.507,39.437,-18.198],"0.375":[-12.549,39.793,-17.77],"0.4167":[-12.519,40.545,-17.16],"0.4583":[-12.452,40.737,-16.65],"0.5":[-12.312,40.208,-15.218],"0.5417":[-12.004,40.02,-13.891],"0.5833":[-11.496,40.183,-12.174],"0.625":[-11.448,40.385,-11.908],"0.6667":[-11.371,40.54,-12.01],"0.7083":[-11.299,40.583,-12.269],"0.75":[-11.231,40.584,-12.557],"0.7917":[-11.174,40.536,-12.653],"0.8333":[-11.069,40.409,-12.669],"0.875":[-11.04,40.349,-12.644],"0.9167":[-11.036,40.285,-12.573],"0.9583":[-11.041,40.247,-12.518],"1.0":[-11.046,40.208,-12.468]}},"lefthand":{"rotation":{"0.0":[75.259,20.912,122.867],"0.0417":[75.26,20.915,122.867],"0.0833":[75.26,20.915,122.867],"0.125":[75.26,20.915,122.867],"0.1667":[75.26,20.916,122.868],"0.2083":[75.26,20.917,122.868],"0.25":[75.26,20.915,122.867],"0.2917":[75.26,20.915,122.867],"0.3333":[79.525,20.435,124.373],"0.375":[89.471,18.911,127.728],"0.4167":[97.974,16.602,130.961],"0.4583":[96.364,15.923,131.706],"0.5":[101.291,24.218,118.298],"0.5417":[105.327,30.934,106.487],"0.5833":[110.188,18.406,107.962],"0.625":[111.504,14.114,100.172],"0.6667":[113.937,13.6,97.107],"0.7083":[116.488,14.061,101.941],"0.75":[120.974,14.827,112.997],"0.7917":[123.829,16.937,119.59],"0.8333":[126.357,19.559,124.519],"0.875":[125.983,21.056,122.888],"0.9167":[125.523,22.317,120.957],"0.9583":[125.816,22.296,121.179],"1.0":[126.154,22.166,121.513]},"position":{"0.0":[22.977,28.843,-8.94],"0.0417":[22.976,28.842,-8.94],"0.0833":[22.976,28.844,-8.938],"0.125":[22.976,28.843,-8.938],"0.1667":[22.976,28.845,-8.939],"0.2083":[22.976,28.843,-8.941],"0.25":[22.976,28.842,-8.941],"0.2917":[22.977,28.843,-8.941],"0.3333":[23.473,30.741,-8.843],"0.375":[24.716,35.209,-8.632],"0.4167":[24.953,39.349,-9.202],"0.4583":[23.255,39.073,-10.437],"0.5":[19.71,38.705,-12.491],"0.5417":[17.294,38.573,-13.705],"0.5833":[15.124,38.427,-13.582],"0.625":[14.624,37.719,-13.284],"0.6667":[15.247,37.103,-12.784],"0.7083":[15.782,37.387,-12.768],"0.75":[15.892,38.163,-13.194],"0.7917":[15.636,38.229,-13.452],"0.8333":[15.278,38.278,-13.751],"0.875":[15.14,38.311,-13.848],"0.9167":[14.994,38.273,-13.906],"0.9583":[14.934,38.173,-13.881],"1.0":[14.879,38.066,-13.85]}},"righthand_1":{"position":{"0.0":[-0.75,4.25,0],"0.0833":[-0.75,2,0],"0.125":[0,2,2.7773],"0.1667":[0,3.5,2],"0.2083":[0,4.528,0.33],"0.25":[0,2,-1.75],"0.2917":[-0.2773,2,-0.79],"0.3333":[0,2,1.25],"0.375":[0,1.2913,1.9833],"0.625":[0,-0.25,1.75]},"scale":[1,1.5,1]},"lefthand_1":{"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.084,0.061,0.014],"0.0417":[-0.15,0.315,0.094],"0.0833":[-0.354,0.261,0.24],"0.125":[-0.497,0.036,0.339],"0.1667":[-0.518,-0.245,0.417],"0.2083":[-0.478,-0.395,0.432],"0.25":[-0.249,-0.485,0.45],"0.2917":[-0.07,-0.452,0.453],"0.3333":[0.154,-0.173,0.458],"0.375":[0.123,-0.121,0.449],"0.4167":[0.014,-0.088,0.414],"0.4583":[-0.056,-0.08,0.344],"0.5":[-0.056,-0.051,0.091],"0.5417":[0.101,-0.033,-0.354],"0.5833":[0.195,0.031,-0.52],"0.625":[0.164,0.117,-0.013],"0.6667":[0.082,0.201,0.584],"0.7083":[-0.016,0.179,0.363],"0.75":[-0.168,0.104,-0.216],"0.7917":[-0.183,0.077,-0.278],"0.8333":[-0.147,-0.048,-0.098],"0.875":[-0.115,-0.094,0.005],"0.9167":[-0.062,-0.074,0.019],"0.9583":[-0.02,-0.026,0.005],"1.0":[0.001,0.001,-0.002]}}},"sound_effects":{"0.0":{"effect":"melee.shadowkiller.shadowkiller_deploy_1"}}},"draw_1":{"loop":true,"animation_length":1.0833,"override_previous_animation":true,"bones":{"karambit":{"rotation":{"0.0":[45.837,-133.731,-12.434],"0.0417":[-11.58,-138.957,-14.625],"0.0833":[-150.64,-120.936,-44.965],"0.125":[-245.138,-117.514,-36.809],"0.1667":[-272.577,-116.454,-25.294],"0.2083":[-247.999,-114.539,-22.763],"0.25":[-165.434,-112.914,-12.055],"0.2917":[-65.812,-106.07,-1.039],"0.3333":[44.447,-105.605,15.366],"0.375":[85.231,-104.629,26.625],"0.4167":[64.614,-157.998,67.585],"0.4583":[54.183,-168.822,72.151],"0.5":[56.277,-159.564,68.714],"0.5417":[52.123,-167.037,75.307],"0.5833":[46.832,-160.466,79.245],"0.625":[44.46,-157.786,81.105],"0.6667":[46.526,-157.925,80.142],"0.7083":[49.536,-159.311,78.179],"0.75":[51.791,-159.548,75.719],"0.7917":[52.86,-159.443,74.24],"0.8333":[53.394,-159.054,73.466],"0.875":[53.302,-158.701,73.586],"0.9167":[52.825,-158.073,74.173],"0.9583":[52.367,-157.621,74.737],"1.0":[51.613,-156.933,75.661],"1.0417":[51.15,-156.495,76.221],"1.0833":[50.953,-156.288,76.459]},"position":{"0.0":[6.186,43.263,-16.913],"0.0417":[2.769,51.765,-21.385],"0.0833":[-4.743,50.273,-26.138],"0.125":[-2.803,47.653,-26.014],"0.1667":[-2.519,47.961,-25.592],"0.2083":[-3.32,49.199,-25.646],"0.25":[-3.212,53.472,-24.731],"0.2917":[1.5,54.809,-23.488],"0.3333":[2.114,49.243,-24.265],"0.375":[-0.648,49.219,-24.902],"0.4167":[-2.231,49.478,-23.466],"0.4583":[-3.3,49.615,-22.221],"0.5":[-4.9,49.378,-20.655],"0.5417":[-5.365,49.772,-19.458],"0.5833":[-5.62,50.174,-18.462],"0.625":[-5.615,50.308,-18.736],"0.6667":[-5.463,50.336,-19.091],"0.7083":[-5.325,50.281,-19.254],"0.75":[-5.191,50.205,-19.31],"0.7917":[-5.119,50.154,-19.306],"0.8333":[-5.075,50.106,-19.28],"0.875":[-5.072,50.088,-19.255],"0.9167":[-5.087,50.068,-19.212],"0.9583":[-5.104,50.057,-19.178],"1.0":[-5.133,50.043,-19.127],"1.0417":[-5.15,50.032,-19.093],"1.0833":[-5.156,50.025,-19.077]}},"righthand":{"rotation":{"0.0":[-51.984,160.952,26.412],"0.0417":[-75.089,143.24,-11.284],"0.0833":[-93.812,164.16,-77.215],"0.125":[-92.379,168.654,-71.036],"0.1667":[-87.344,172.396,-41.683],"0.2083":[-81.215,178.15,-18.135],"0.25":[-64.589,185.8,13.969],"0.2917":[-65.444,185.967,30.194],"0.3333":[-73.032,178.346,42.78],"0.375":[-70.439,180.533,44.546],"0.4167":[-73.104,195.144,66.786],"0.4583":[-75.17,202.987,71.62],"0.5":[-74.965,204.486,66.758],"0.5417":[-78.578,202.615,72.503],"0.5833":[-84.041,208.62,77.42],"0.625":[-86.51,211.361,79.67],"0.6667":[-84.278,211.169,78.326],"0.7083":[-81.087,209.682,75.845],"0.75":[-78.675,209.351,72.988],"0.7917":[-77.522,209.407,71.319],"0.8333":[-76.927,209.769,70.439],"0.875":[-77.004,210.126,70.565],"0.9167":[-77.48,210.777,71.217],"0.9583":[-77.947,211.25,71.85],"1.0":[-78.723,211.971,72.889],"1.0417":[-79.2,212.429,73.521],"1.0833":[-79.403,212.645,73.788]},"position":{"0.0":[-3.856,32.262,-10.651],"0.0417":[-6.455,38.698,-15.079],"0.0833":[-7.686,39.883,-15.771],"0.125":[-8.265,39.489,-16.099],"0.1667":[-8.684,39.256,-16.278],"0.2083":[-8.581,40.156,-16.113],"0.25":[-7.595,40.606,-15.588],"0.2917":[-7.05,40.521,-15.499],"0.3333":[-6.957,40.176,-16.048],"0.375":[-7.712,39.948,-16.567],"0.4167":[-8.533,40.286,-16.329],"0.4583":[-9.441,40.106,-15.625],"0.5":[-11.005,39.814,-13.879],"0.5417":[-11.364,40.259,-12.809],"0.5833":[-11.424,40.516,-11.824],"0.625":[-11.338,40.571,-12.124],"0.6667":[-11.248,40.595,-12.473],"0.7083":[-11.204,40.569,-12.62],"0.75":[-11.127,40.488,-12.675],"0.7917":[-11.079,40.426,-12.673],"0.8333":[-11.043,40.36,-12.651],"0.875":[-11.034,40.331,-12.628],"0.9167":[-11.033,40.295,-12.589],"0.9583":[-11.036,40.273,-12.558],"1.0":[-11.043,40.242,-12.513],"1.0417":[-11.046,40.22,-12.482],"1.0833":[-11.046,40.207,-12.468]}},"lefthand":{"rotation":{"0.0":[104.878,-11.703,109.692],"0.0417":[104.743,-11.646,109.856],"0.0833":[104.558,-11.492,110.093],"0.125":[104.45,-11.339,110.242],"0.1667":[104.315,-11.03,110.454],"0.2083":[104.246,-10.768,110.585],"0.25":[104.178,-10.283,110.763],"0.2917":[104.046,-5.352,112.285],"0.3333":[107.34,10.339,117.868],"0.375":[116.562,5.157,120.791],"0.4167":[124.706,-1.711,119.668],"0.4583":[114.47,5.553,111.611],"0.5":[100.859,14.702,102.901],"0.5417":[105.599,14.184,105.774],"0.5833":[112.496,11.851,107.267],"0.625":[116.672,11.172,106.355],"0.6667":[119.687,14.99,101.954],"0.7083":[121.896,15.919,106.11],"0.75":[124.794,16.569,114.308],"0.7917":[125.774,17.556,117.916],"0.8333":[126.5,19.217,121.991],"0.875":[126.601,20.074,123.05],"0.9167":[125.939,21.223,121.906],"0.9583":[125.577,21.811,121.138],"1.0":[125.755,22.111,121.202],"1.0417":[126.037,22.132,121.427],"1.0833":[126.156,22.166,121.514]},"position":{"0.0":[17.914,27.675,-2.757],"0.0417":[17.981,27.669,-2.814],"0.0833":[18.09,27.67,-2.903],"0.125":[18.172,27.685,-2.965],"0.1667":[18.3,27.714,-3.07],"0.2083":[18.392,27.742,-3.14],"0.25":[18.54,27.808,-3.255],"0.2917":[19.866,28.595,-4.255],"0.3333":[23.272,32.309,-6.508],"0.375":[21.414,34.821,-7.216],"0.4167":[18.66,37.441,-8.019],"0.4583":[18.374,37.341,-10.86],"0.5":[16.702,37.675,-13.997],"0.5417":[15.682,37.768,-13.886],"0.5833":[14.705,38.041,-13.282],"0.625":[14.605,38.287,-12.748],"0.6667":[14.902,38.527,-12.658],"0.7083":[15.071,38.475,-12.761],"0.75":[15.234,38.344,-13.012],"0.7917":[15.211,38.337,-13.222],"0.8333":[15.082,38.36,-13.56],"0.875":[15.032,38.339,-13.712],"0.9167":[14.998,38.273,-13.852],"0.9583":[14.974,38.231,-13.899],"1.0":[14.927,38.154,-13.894],"1.0417":[14.894,38.094,-13.862],"1.0833":[14.878,38.064,-13.85]}},"righthand_1":{"position":{"0.0":[-0.75,3,0.5],"0.0417":[-0.416,3.75,-0.6847],"0.0833":[3,4.75,-1.21],"0.125":[4.73,4.5,1.202],"0.1667":[2.25,4.5,2.53],"0.2083":[2.72,4.73,2.88],"0.25":[2.99,4.87,2.71],"0.2917":[2.7527,5,-1.8327],"0.3333":[-1.5927,3.5,-0.5733],"0.5417":[0,-0.25,1.75]},"scale":[1,1.5,1]},"lefthand_1":{"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.017,-0.018,0.011],"0.0417":[-0.127,-0.129,0.085],"0.0833":[-0.364,-0.427,0.244],"0.125":[-0.478,-0.655,0.322],"0.1667":[-0.16,-1.073,0.337],"0.2083":[-0.082,-1.441,0.339],"0.25":[-0.45,-1.759,0.345],"0.2917":[-0.783,-1.766,0.348],"0.3333":[-1.096,-1.514,0.351],"0.375":[-1,-1.288,0.347],"0.4167":[-0.694,-0.93,0.338],"0.4583":[-0.448,-0.722,0.335],"0.5":[-0.071,-0.388,0.471],"0.5417":[0.162,-0.12,1.069],"0.5833":[0.107,0.22,0.693],"0.625":[-0.033,0.23,-0.001],"0.6667":[-0.124,0.026,-0.444],"0.7083":[-0.064,-0.107,-0.074],"0.75":[0.029,-0.218,0.363],"0.7917":[0.044,-0.206,0.356],"0.8333":[0.083,-0.031,0.234],"0.875":[0.089,0.04,0.163],"0.9167":[0.083,0.046,0.102],"0.9583":[0.06,0.033,0.061],"1.0":[0.02,0.014,0.02],"1.0417":[0.004,0.001,0],"1.0833":[0.001,0.001,0]}}},"sound_effects":{"0.0":{"effect":"melee.shadowkiller.shadowkiller_deploy"}}},"melee_1":{"loop":true,"animation_length":1.3021,"override_previous_animation":true,"bones":{"karambit":{"rotation":{"0.0":[-129.427,-20.872,-107.267],"0.0417":[-131.204,-14.181,-114.146],"0.0833":[-145.494,-13.139,-112.858],"0.125":[-160.357,-6.784,-94.535],"0.1667":[-145.957,-9.326,-86.191],"0.2083":[-96.037,-21.761,-82.351],"0.25":[-72.02,-26.11,-101.436],"0.2917":[-42.556,-17.879,-93.015],"0.3333":[-17.526,19.761,-86.034],"0.375":[-15.594,30.76,-78.686],"0.4167":[-16.138,45.558,-76.961],"0.4583":[-61.451,57.789,-109.428],"0.5":[-105.951,49.967,-142.703],"0.5417":[-116.517,40.533,-150.836],"0.5833":[-116.598,36.354,-152.009],"0.625":[-116.446,28.742,-153.105],"0.6667":[-118.572,19.392,-154.933],"0.7083":[-119.08,9.005,-153.096],"0.75":[-117.598,-4.362,-138.23],"0.7917":[-118.49,-12.751,-125.708],"0.8333":[-126.624,-22.474,-101.981],"0.875":[-129.93,-25.156,-95.694],"0.9167":[-126.807,-26.705,-100.63],"0.9583":[-125.904,-26.861,-103.21],"1.0":[-126.777,-26.188,-103.148],"1.0417":[-127.774,-25.301,-103.674],"1.0833":[-127.913,-24.9,-104.762],"1.125":[-127.562,-24.652,-106.635],"1.1667":[-127.485,-24.443,-107.505],"1.2083":[-127.803,-24.382,-106.731],"1.25":[-128.434,-24.329,-104.921],"1.2917":[-128.837,-24.279,-103.792]},"position":{"0.0":[-6.087,49.841,-18.522],"0.0417":[-7.963,49.52,-17.4],"0.0833":[-13.803,48.498,-15.796],"0.125":[-20.88,47.442,-15.518],"0.1667":[-13.128,50.394,-19.688],"0.2083":[2.082,51.899,-23.098],"0.25":[10.901,51.999,-19.835],"0.2917":[11.784,50.998,-12.908],"0.3333":[9.259,49.331,-8.718],"0.375":[8.467,46.251,-9.334],"0.4167":[7.566,43.182,-10.781],"0.4583":[5.934,44.253,-12.518],"0.5":[4.776,45.629,-14.101],"0.5417":[4.399,45.458,-14.892],"0.5833":[4.332,45.017,-15.149],"0.625":[3.9,44.653,-16.171],"0.6667":[2.918,45.115,-18.73],"0.7083":[1.371,46.003,-21.288],"0.75":[-1.887,47.771,-21.85],"0.7917":[-3.902,48.875,-21.452],"0.8333":[-5.418,49.701,-19.642],"0.875":[-5.728,50.063,-18.79],"0.9167":[-5.537,50.295,-18.503],"0.9583":[-5.393,50.454,-18.599],"1.0":[-5.351,50.466,-18.867],"1.0417":[-5.31,50.431,-19.167],"1.0833":[-5.266,50.368,-19.265],"1.125":[-5.195,50.274,-19.286],"1.1667":[-5.138,50.164,-19.257],"1.2083":[-5.136,50.117,-19.217],"1.25":[-5.149,50.054,-19.138],"1.2917":[-5.155,50.013,-19.087]}},"righthand":{"rotation":{"0.0":[99.74,-29.234,-109.469],"0.0417":[97.604,-22.603,-115.96],"0.0833":[82.595,-21.724,-112.379],"0.125":[67.361,-14.954,-91.813],"0.1667":[82.143,-17.904,-85.631],"0.2083":[135.119,-27.547,-89.347],"0.25":[160.465,-28.736,-110.659],"0.2917":[188.266,-16.207,-101.833],"0.3333":[207.786,24.515,-93.767],"0.375":[208,35.657,-87.139],"0.4167":[204.051,50.189,-87.785],"0.4583":[153.725,56.027,-124.958],"0.5":[116.49,44.08,-150.458],"0.5417":[108.351,37.22,-155.133],"0.5833":[108.756,35.673,-155.086],"0.625":[110.357,32.08,-154.136],"0.6667":[111.259,25.941,-153.985],"0.7083":[113.348,17.692,-150.548],"0.75":[114.947,3.525,-135.682],"0.7917":[113.384,-7.399,-124.339],"0.8333":[103.285,-27.957,-104.029],"0.875":[99.197,-34.514,-98.044],"0.9167":[102.807,-35.286,-103.491],"0.9583":[103.845,-35.07,-106.157],"1.0":[102.858,-34.44,-105.924],"1.0417":[101.726,-33.595,-106.253],"1.0833":[101.556,-33.2,-107.308],"1.125":[101.925,-32.939,-109.239],"1.1667":[101.998,-32.727,-110.117],"1.2083":[101.651,-32.678,-109.285],"1.25":[100.965,-32.651,-107.365],"1.2917":[100.525,-32.616,-106.162]},"position":{"0.0":[-11.965,40.16,-11.884],"0.0417":[-13.835,40.085,-10.731],"0.0833":[-19.265,39.291,-9.197],"0.125":[-25.903,38.326,-9.116],"0.1667":[-18.577,41.058,-13.091],"0.2083":[-4.996,42.426,-16.756],"0.25":[3.359,42.197,-14.028],"0.2917":[3.862,41.849,-7.968],"0.3333":[1.488,40.199,-4.753],"0.375":[0.723,37.164,-5.416],"0.4167":[-0.221,33.96,-6.794],"0.4583":[-1.995,35.086,-7.646],"0.5":[-2.929,36.673,-8.474],"0.5417":[-3.234,36.595,-9.006],"0.5833":[-3.349,36.152,-9.201],"0.625":[-3.826,35.748,-10.11],"0.6667":[-4.766,36.108,-12.542],"0.7083":[-6.192,36.907,-14.948],"0.75":[-9.06,38.717,-15.256],"0.7917":[-10.705,39.745,-14.726],"0.8333":[-11.482,40.062,-12.958],"0.875":[-11.632,40.184,-12.212],"0.9167":[-11.502,40.386,-11.925],"0.9583":[-11.366,40.548,-12.016],"1.0":[-11.302,40.587,-12.275],"1.0417":[-11.231,40.589,-12.565],"1.0833":[-11.175,40.541,-12.659],"1.125":[-11.101,40.455,-12.679],"1.1667":[-11.041,40.352,-12.648],"1.2083":[-11.037,40.309,-12.607],"1.25":[-11.044,40.249,-12.527],"1.2917":[-11.047,40.211,-12.476]}},"lefthand":{"rotation":{"0.0":[118.959,25.057,111.676],"0.0417":[104.627,27.414,93.127],"0.0833":[91.94,28.066,80.107],"0.125":[111.208,30.009,100.803],"0.1667":[127.94,1.414,116.649],"0.2083":[148.559,-41.1,122.065],"0.25":[175.165,-27.077,132.062],"0.2917":[180.692,2.086,138.278],"0.3333":[156.688,46.277,122.591],"0.375":[162.605,42.068,127.76],"0.4167":[164.937,42.96,129.328],"0.4583":[167.468,44.134,131.012],"0.5":[170.014,45.281,132.584],"0.5417":[171.972,46.023,133.786],"0.5833":[170.953,45.093,133.191],"0.625":[164.589,40.167,129.746],"0.6667":[143.701,13.136,117.324],"0.7083":[119.931,-11.757,126.284],"0.75":[108.664,2.666,115.408],"0.7917":[104.146,14.369,106.11],"0.8333":[114.804,11.583,105.952],"0.875":[118.352,13.911,102.128],"0.9167":[120.697,15.678,103.299],"0.9583":[123.865,16.401,111.708],"1.0":[125.153,17.154,115.889],"1.0417":[126.139,18.799,120.622],"1.0833":[126.417,19.766,122.493],"1.125":[126.254,20.557,122.636],"1.1667":[125.502,21.631,121.138],"1.2083":[125.364,22.064,120.806],"1.25":[125.69,22.203,121.032],"1.2917":[125.948,22.251,121.225]},"position":{"0.0":[14.558,37.724,-13.558],"0.0417":[14.082,36.859,-12.817],"0.0833":[15.113,35.37,-11.334],"0.125":[15.526,29.871,-7.459],"0.1667":[13.902,28.835,-6.168],"0.2083":[10.163,30.742,-6.712],"0.25":[8.073,30.393,-5.291],"0.2917":[5.725,33.138,-3.945],"0.3333":[4.011,37.958,-2.136],"0.375":[5.788,37.043,-2.024],"0.4167":[6.948,36.427,-2.277],"0.4583":[7.68,36.006,-2.525],"0.5":[8.376,35.593,-2.798],"0.5417":[9.374,34.983,-3.154],"0.5833":[10.025,34.586,-3.296],"0.625":[11.005,34.031,-3.284],"0.6667":[14.239,34.402,-6.146],"0.7083":[18.196,34.971,-9.183],"0.75":[18.715,35.937,-12.462],"0.7917":[16.254,37.8,-13.767],"0.8333":[15.078,38.283,-12.766],"0.875":[14.887,38.491,-12.64],"0.9167":[14.949,38.509,-12.716],"0.9583":[15.197,38.364,-12.94],"1.0":[15.237,38.326,-13.13],"1.0417":[15.128,38.347,-13.475],"1.0833":[15.051,38.346,-13.665],"1.125":[15.021,38.306,-13.789],"1.1667":[14.991,38.238,-13.897],"1.2083":[14.96,38.198,-13.928],"1.25":[14.913,38.112,-13.897],"1.2917":[14.88,38.056,-13.869]}},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.2917":[-27.5,0,0],"0.3333":[-27.4106,2.3064,4.4375],"0.75":[0,0,0]},"position":[0,-0.25,1.75],"scale":[1,1.5,1]},"lefthand_1":{"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.119,0.051,-0.065],"0.0417":[0.459,0.278,-0.376],"0.0833":[0.451,0.532,-0.732],"0.125":[0.303,0.71,-0.883],"0.1667":[-0.031,0.712,-0.469],"0.2083":[-0.395,0.301,0.522],"0.25":[0.591,-0.337,1.652],"0.2917":[-0.781,-0.445,-1.285],"0.3333":[-0.003,-0.003,0.001],"0.375":[0.373,0.137,0.358],"0.4167":[0.438,0.457,0.715],"0.4583":[-0.06,0.742,0.78],"0.5":[-0.256,0.703,0.722],"0.5417":[-0.196,0.273,0.482],"0.5833":[-0.093,0.064,0.309],"0.625":[-0.003,-0.037,0.049],"0.6667":[-0.059,0.111,0.031],"0.7083":[-0.254,0.447,0.208],"0.75":[0.017,0.597,0.225],"0.7917":[0.206,0.58,0.032],"0.8333":[0.418,0.459,-0.283],"0.875":[0.454,0.285,0.072],"0.9167":[0.466,0.074,0.613],"0.9583":[0.355,-0.121,0.427],"1.0":[0.151,-0.189,-0.031],"1.0417":[-0.053,-0.149,-0.036],"1.0833":[-0.141,-0.063,0.087],"1.125":[-0.155,0.013,0.103],"1.1667":[-0.094,0.104,0.046],"1.2083":[-0.06,0.104,0.021],"1.25":[-0.012,0.028,0.005],"1.2917":[0.001,-0.002,0]}}},"sound_effects":{"0.0":{"effect":"melee.shadowkiller.shadowkiller_miss1"}}},"melee_2":{"loop":true,"animation_length":1.5417,"override_previous_animation":true,"bones":{"karambit":{"rotation":{"0.0":[0.711,141.342,-98.497],"0.0417":[13.605,151.623,-80.846],"0.0833":[11.277,164.784,-73.611],"0.125":[18.407,166.655,-77.678],"0.1667":[96.955,160.373,-55.818],"0.2083":[133.366,170.466,-49.786],"0.25":[157.067,176.414,-51.689],"0.2917":[165.355,198.941,-41.076],"0.3333":[137.324,218.279,-6.092],"0.375":[131.191,206.116,-13.199],"0.4167":[108.731,183.218,-33.243],"0.4583":[80.991,170.191,-46.875],"0.5":[47.008,162.352,-55.807],"0.5417":[-34.784,151.824,-50.736],"0.5833":[-92.872,150.96,-42.927],"0.625":[-194.367,149.4,-32.323],"0.6667":[-268.498,160.44,-43.358],"0.7083":[-302.309,179.435,-31.955],"0.75":[-334.677,227.038,71.206],"0.7917":[-355.773,232.99,121.669],"0.8333":[-260.729,238.968,109.97],"0.875":[-216.744,239.076,108.471],"0.9167":[-160.515,239.726,101.242],"0.9583":[-0.691,221.758,55.213],"1.0":[51.329,196.762,57.655],"1.0417":[57.912,190.098,69.084],"1.0833":[54.481,193.212,72.798],"1.125":[51.431,195.764,75.932],"1.1667":[47.139,200.164,78.992],"1.2083":[44.987,203.061,80.854],"1.25":[46.769,202.855,80.08],"1.2917":[49.611,201.308,78.066],"1.3333":[51.511,200.998,75.883],"1.375":[53.232,201.276,73.42],"1.4167":[53.102,201.845,73.575],"1.4583":[52.096,203.001,74.875],"1.5":[51.297,203.813,75.919],"1.5417":[50.973,204.191,76.349]},"position":{"0.0":[6.127,41.952,-10.434],"0.0417":[6.805,45.316,-11.493],"0.0833":[6.986,48.879,-15.977],"0.125":[3.282,50.356,-24.219],"0.1667":[-4.585,54.288,-24.768],"0.2083":[-16.819,59.985,-15.389],"0.25":[-20.141,60.205,-9.347],"0.2917":[-19.632,57.358,-6.274],"0.3333":[-15.155,52.67,-6.913],"0.375":[-14.49,53.202,-7.599],"0.4167":[-13.808,55.07,-8.209],"0.4583":[-13.615,56.486,-8.474],"0.5":[-13.571,57.387,-9.435],"0.5417":[-9.605,57.247,-18.769],"0.5833":[-4.937,56.689,-24.534],"0.625":[2.766,50.042,-26.673],"0.6667":[2.439,46.521,-25.042],"0.7083":[0.056,45.734,-23.859],"0.75":[-4.938,45.829,-24.012],"0.7917":[-6.371,47.145,-23.956],"0.8333":[-5.815,49.95,-25.612],"0.875":[-4.417,50.684,-25.91],"0.9167":[-2.346,50.384,-25.615],"0.9583":[-1.937,48.13,-22.797],"1.0":[-3.947,48.485,-23.179],"1.0417":[-5.07,49.179,-21.32],"1.0833":[-5.684,49.487,-19.154],"1.125":[-5.625,49.97,-18.344],"1.1667":[-5.355,50.455,-18.121],"1.2083":[-5.34,50.498,-18.421],"1.25":[-5.334,50.497,-18.851],"1.2917":[-5.32,50.451,-19.083],"1.3333":[-5.268,50.37,-19.186],"1.375":[-5.189,50.235,-19.229],"1.4167":[-5.171,50.171,-19.214],"1.4583":[-5.161,50.092,-19.151],"1.5":[-5.158,50.039,-19.106],"1.5417":[-5.156,50.014,-19.086]}},"righthand":{"rotation":{"0.0":[52.57,31.459,87.641],"0.0417":[63.478,20.293,102.907],"0.0833":[60.361,7.299,110.253],"0.125":[67.184,5.03,105.163],"0.1667":[142.944,15.002,116.37],"0.2083":[180.155,10.298,121.342],"0.25":[204.616,7.864,120.612],"0.2917":[215.672,-13.463,131.789],"0.3333":[192.545,-36.579,164.136],"0.375":[188.606,-24.86,164.32],"0.4167":[184.483,-1.057,157.531],"0.4583":[177.676,16.621,151.427],"0.5":[164.186,33.386,143.908],"0.5417":[91.601,56.83,109.209],"0.5833":[42.337,36.751,83.545],"0.625":[16.425,-7.306,95.516],"0.6667":[25.821,-3.13,115.791],"0.7083":[45.975,3.727,139.793],"0.75":[63.416,0.48,172.872],"0.7917":[69.929,2.986,195.426],"0.8333":[79.25,13.838,226.855],"0.875":[78.228,13.931,220.786],"0.9167":[78.607,10.454,212.373],"0.9583":[95.503,-2.14,225.626],"1.0":[105.627,-13.638,235.406],"1.0417":[107.241,-20.905,245.089],"1.0833":[103.657,-21.568,249.98],"1.125":[103.697,-28.64,252.863],"1.1667":[103.855,-36.109,254.613],"1.2083":[103.182,-35.047,254.281],"1.25":[102.05,-33.934,253.914],"1.2917":[101.497,-33.43,253.383],"1.3333":[101.681,-33.122,251.724],"1.375":[102.077,-32.839,249.721],"1.4167":[101.81,-32.769,250.214],"1.4583":[101.177,-32.73,251.955],"1.5":[100.714,-32.707,253.262],"1.5417":[100.505,-32.687,253.824]},"position":{"0.0":[-1.179,31.42,-4.926],"0.0417":[-0.499,35.199,-5.556],"0.0833":[-0.379,39.25,-9.89],"0.125":[-3.865,40.601,-17.974],"0.1667":[-9.853,43.585,-18.883],"0.2083":[-21.588,49.178,-10.461],"0.25":[-24.866,49.533,-5.169],"0.2917":[-24.903,46.366,-2.193],"0.3333":[-21.205,41.459,-1.905],"0.375":[-20.829,42.15,-2.691],"0.4167":[-20.634,44.111,-4.173],"0.4583":[-20.23,45.355,-5.407],"0.5":[-19.278,45.959,-7.021],"0.5417":[-14.045,43.944,-14.856],"0.5833":[-11.027,42.397,-17.792],"0.625":[-8.144,40.071,-17.518],"0.6667":[-8.475,39.37,-17.258],"0.7083":[-9.343,38.883,-16.584],"0.75":[-10.286,39.283,-15.824],"0.7917":[-10.675,39.478,-15.676],"0.8333":[-10.798,39.888,-15.774],"0.875":[-10.664,39.73,-15.292],"0.9167":[-10.465,39.494,-14.889],"0.9583":[-10.297,39.318,-15.749],"1.0":[-10.439,39.283,-16.493],"1.0417":[-11.227,39.641,-14.709],"1.0833":[-11.764,40.009,-12.48],"1.125":[-11.673,40.259,-11.881],"1.1667":[-11.387,40.52,-11.906],"1.2083":[-11.324,40.571,-12.151],"1.25":[-11.249,40.593,-12.469],"1.2917":[-11.201,40.569,-12.621],"1.3333":[-11.133,40.497,-12.671],"1.375":[-11.047,40.378,-12.658],"1.4167":[-11.034,40.327,-12.626],"1.4583":[-11.038,40.266,-12.548],"1.5":[-11.043,40.229,-12.494],"1.5417":[-11.044,40.21,-12.468]}},"lefthand":{"rotation":{"0.0":[145.579,-1.82,127.264],"0.0417":[100.813,31.059,98.966],"0.0833":[88.689,30.136,124.24],"0.125":[75.691,25.061,137.175],"0.1667":[64.097,21.272,138.831],"0.2083":[47.149,14.652,140.435],"0.25":[37.154,10.866,141.595],"0.2917":[29.116,7.744,142.553],"0.3333":[21.917,5.79,143.859],"0.375":[19.502,6.278,143.451],"0.4167":[18.541,8.529,141.212],"0.4583":[19.772,10.656,138.937],"0.5":[22.349,11.951,136.965],"0.5417":[29.671,11.396,134.111],"0.5833":[38.849,7.558,133.272],"0.625":[72.082,-8.828,125.499],"0.6667":[96.117,-11.927,114.541],"0.7083":[107.446,-7.438,109.738],"0.75":[105.836,7.106,115.443],"0.7917":[111.173,10.077,119.427],"0.8333":[123.871,-0.199,121.364],"0.875":[121.416,0.765,116.398],"0.9167":[106.701,10.791,106.645],"0.9583":[102.693,14.803,103.838],"1.0":[108.115,13.502,106.656],"1.0417":[114.793,11.125,106.786],"1.0833":[118.085,12.047,104.463],"1.125":[119.775,14.898,101.766],"1.1667":[123.084,16.037,108.879],"1.2083":[124.829,16.512,114.104],"1.25":[126.107,18.073,119.31],"1.2917":[126.493,19.162,121.791],"1.3333":[126.584,20.022,122.856],"1.375":[125.902,21.181,121.699],"1.4167":[125.54,21.769,120.928],"1.4583":[125.716,22.074,120.994],"1.5":[126.004,22.092,121.219],"1.5417":[126.117,22.131,121.303]},"position":{"0.0":[11.342,36.008,-10.719],"0.0417":[20.814,35.586,-14.281],"0.0833":[23.161,29.655,-8.017],"0.125":[23.928,26.607,-3.462],"0.1667":[24.379,25.645,-1.715],"0.2083":[24.807,24.548,0.139],"0.25":[25.008,23.959,1.001],"0.2917":[25.189,23.381,1.678],"0.3333":[25.492,22.585,2.47],"0.375":[25.572,22.315,2.724],"0.4167":[25.43,22.233,2.814],"0.4583":[25.198,22.28,2.741],"0.5":[24.982,22.335,2.622],"0.5417":[25.021,22.295,2.667],"0.5833":[24.769,22.466,2.166],"0.625":[21.817,24.736,-1.488],"0.6667":[19.254,26.888,-2.868],"0.7083":[18.759,28.469,-3.777],"0.75":[22.65,31.034,-5.982],"0.7917":[22.903,33.594,-6.903],"0.8333":[19.458,36.96,-7.613],"0.875":[18.477,37.51,-9.116],"0.9167":[17.909,37.335,-12.492],"0.9583":[16.184,37.74,-14.033],"1.0":[15.209,37.784,-13.78],"1.0417":[14.622,38.136,-13.022],"1.0833":[14.618,38.366,-12.698],"1.125":[14.869,38.499,-12.71],"1.1667":[15.112,38.399,-12.886],"1.2083":[15.201,38.323,-13.055],"1.25":[15.137,38.323,-13.383],"1.2917":[15.049,38.336,-13.606],"1.3333":[15.002,38.313,-13.76],"1.375":[14.971,38.245,-13.896],"1.4167":[14.944,38.202,-13.946],"1.4583":[14.897,38.129,-13.936],"1.5":[14.864,38.067,-13.906],"1.5417":[14.846,38.04,-13.892]}},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.2083":[-31.8803,-6.6782,-10.5906],"0.2917":[-38.663,-2.8621,-4.5388],"0.3333":[0,0,0],"0.6667":[36.8383,7.5713,-9.9753],"0.9583":[17.5,0,0],"1.2083":[0,0,0]},"position":{"0.0":[0,-0.25,1.75],"0.4583":[-0.42,0.4482,1.071],"0.5":[-0.5623,1.4023,0.129],"0.5417":[-0.9796,2.2333,-0.8723],"0.625":[0.2831,5.2393,-1.8568],"0.7083":[0.7959,4.3932,3.1976],"0.8333":[3.0648,4.5197,2.4244],"0.875":[4.1422,4.0719,0.1522],"0.9167":[3.5192,4.5824,-0.9823],"0.9583":[-0.08,3.58,0.12],"1.0":[-0.08,0.68,1.92],"1.125":[0,-0.25,1.75]},"scale":[1,1.5,1]},"lefthand_1":{"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.198,-0.188,0.004],"0.0417":[1.223,-1.249,-0.009],"0.0833":[1.888,-1.94,-0.017],"0.125":[1.04,-1.134,-0.006],"0.1667":[0.179,-0.409,-0.23],"0.2083":[-0.324,-0.073,-0.197],"0.25":[-0.083,0.03,-0.569],"0.2917":[-0.156,0.15,-2.667],"0.3333":[0.05,0.368,-3.699],"0.375":[0.162,0.403,-1.755],"0.4167":[0.22,0.291,-0.089],"0.4583":[0.173,0.193,0.232],"0.5":[0.06,0.074,0.122],"0.5417":[-0.122,-0.188,-0.217],"0.5833":[-0.205,-0.378,-0.207],"0.625":[0.025,-0.559,0.047],"0.6667":[0.269,-0.627,0.167],"0.7083":[0.465,-0.487,0.189],"0.75":[0.547,-0.245,0.194],"0.7917":[0.367,-0.182,0.197],"0.8333":[0.074,-0.123,0.202],"0.875":[0.074,-0.08,0.204],"0.9167":[0.259,-0.032,0.209],"0.9583":[0.561,0.018,0.211],"1.0":[0.573,0.018,0.218],"1.0417":[0.397,-0.029,0.224],"1.0833":[0.263,-0.057,0.224],"1.125":[0.183,-0.059,0.164],"1.1667":[0.133,-0.032,-0.394],"1.2083":[0.099,0,-0.609],"1.25":[0.016,0.086,-0.233],"1.2917":[-0.044,0.149,0.211],"1.3333":[-0.097,0.194,0.531],"1.375":[-0.154,0.168,0.358],"1.4167":[-0.176,0.11,-0.052],"1.4583":[-0.184,0.079,-0.282],"1.5417":[-0.184,0.079,-0.282]}}},"sound_effects":{"0.0":{"effect":"melee.shadowkiller.shadowkiller_miss2"},"0.5417":{"effect":"melee.shadowkiller.shadowkiller_deploy"}}},"melee_3":{"loop":true,"animation_length":1.9167,"override_previous_animation":true,"bones":{"karambit":{"rotation":{"0.0":[-9.633,162.978,-2.271],"0.0417":[-10.154,162.644,-1.824],"0.0833":[-10.881,162.164,-1.182],"0.125":[-11.656,161.613,-0.461],"0.1667":[-11.5,161.67,-0.521],"0.2083":[-9.449,162.899,-2.102],"0.25":[-6.886,166.49,-7.772],"0.2917":[2.546,171.269,-16.762],"0.3333":[73.221,167.445,-20.667],"0.375":[148.605,160.266,1.92],"0.4167":[134.11,157.322,-17.49],"0.4583":[134.822,158.036,-17.946],"0.5":[144.858,160.851,-7.28],"0.5417":[153.26,163.753,1.222],"0.5833":[153.344,162.393,0.381],"0.625":[151.371,159.024,-3.3],"0.6667":[170.674,164.176,-2.055],"0.7083":[203.225,178.317,-2.03],"0.75":[211.018,198.571,-14.582],"0.7917":[177.491,214.832,-22.405],"0.8333":[106.44,239.252,1.285],"0.875":[43.827,234.758,46.374],"0.9167":[25.575,221.255,58.512],"0.9583":[25.075,207.569,62.806],"1.0":[29.899,202.272,61.934],"1.0417":[53.898,201.754,47.711],"1.0833":[79.369,200.417,43.656],"1.125":[116.115,197.142,45.536],"1.1667":[199.668,202.857,62.459],"1.2083":[237.062,208.655,63.067],"1.25":[285.24,216.795,56.655],"1.2917":[317.188,219.846,53.496],"1.3333":[357.617,219.147,55.628],"1.375":[431.438,204.228,43.837],"1.4167":[432.805,203.293,53.547],"1.4583":[418.896,205.728,67.767],"1.5":[415.614,205.122,74.023],"1.5417":[413.968,204.379,77.93],"1.5833":[413.001,204.143,77.741],"1.625":[412.647,204.357,76.985],"1.6667":[412.004,204.965,76.022],"1.7083":[412.176,204.792,74.386],"1.75":[412.474,204.461,72.733],"1.7917":[412.217,204.267,73.091],"1.8333":[411.854,204.225,74.088],"1.875":[411.254,204.174,75.796],"1.9167":[411.069,204.15,76.306]},"position":{"0.0":[-7.367,31.603,-3.05],"0.0417":[-7.448,31.506,-1.657],"0.0833":[-7.563,31.382,-0.053],"0.125":[-7.687,31.236,2.054],"0.1667":[-7.669,31.227,2.809],"0.2083":[-7.364,31.453,2.18],"0.25":[-6.362,31.283,-2.933],"0.2917":[-4.801,32.231,-11.636],"0.3333":[-3.503,48.829,-21.786],"0.375":[-2.709,53.062,-20.738],"0.4167":[-2.777,54.422,-20.58],"0.4583":[-2.691,54.447,-20.654],"0.5":[-2.466,53.667,-20.888],"0.5417":[-2.406,52.94,-21.106],"0.5833":[-2.558,52.853,-21.134],"0.625":[-2.866,52.86,-21.128],"0.6667":[-3.84,54.913,-19.363],"0.7083":[-5.975,59.884,-10.392],"0.75":[-10.85,64.868,1.406],"0.7917":[-15.376,64.732,-0.898],"0.8333":[-20.297,59.824,-5.258],"0.875":[-21.981,51.534,-8.595],"0.9167":[-21.189,46.311,-11.87],"0.9583":[-17.243,41.584,-16.475],"1.0":[-14.277,40.183,-19.43],"1.0417":[-9.843,43.948,-24.229],"1.0833":[-7.104,47.038,-26.52],"1.125":[-4.659,49.925,-27.398],"1.1667":[-0.815,53.694,-24.107],"1.2083":[0.687,54.653,-23.613],"1.25":[0.944,54.21,-23.648],"1.2917":[0.158,52.844,-23.325],"1.3333":[-1.539,51.002,-22.878],"1.375":[-5.027,49.283,-23.304],"1.4167":[-5.419,49.161,-21.733],"1.4583":[-5.33,49.469,-19.267],"1.5":[-5.366,50.002,-18.596],"1.5417":[-5.386,50.445,-18.264],"1.5833":[-5.33,50.526,-18.585],"1.625":[-5.304,50.496,-18.872],"1.6667":[-5.28,50.415,-19.213],"1.7083":[-5.229,50.321,-19.286],"1.75":[-5.171,50.224,-19.297],"1.7917":[-5.147,50.134,-19.241],"1.8333":[-5.148,50.093,-19.191],"1.875":[-5.154,50.034,-19.113],"1.9167":[-5.156,50.012,-19.085]}},"righthand":{"rotation":{"0.0":[41.824,8.973,172.369],"0.0417":[41.287,9.253,172.875],"0.0833":[40.54,9.653,173.593],"0.125":[39.726,10.101,174.369],"0.1667":[39.868,10.028,174.243],"0.2083":[41.927,8.931,172.298],"0.25":[44.751,5.565,166.241],"0.2917":[54.493,1.848,155.977],"0.3333":[123.414,17.098,149.975],"0.375":[202.327,29.653,184.609],"0.4167":[186.593,33.011,162.2],"0.4583":[187.389,32.377,161.829],"0.5":[198.316,29.514,174.515],"0.5417":[207.265,26.401,184.567],"0.5833":[207.477,27.864,183.771],"0.625":[205.604,31.508,179.844],"0.6667":[225.853,24.878,184.707],"0.7083":[256.693,6.013,188.345],"0.75":[260.4,-15.516,176.919],"0.7917":[226.163,-26.438,166.264],"0.8333":[163.271,-46.001,173.421],"0.875":[112.635,-47.567,196.754],"0.9167":[87.133,-38.728,211.468],"0.9583":[78.149,-22.524,224.622],"1.0":[79.056,-15.515,227.374],"1.0417":[88.969,-21.346,210.84],"1.0833":[102.736,-16.584,204.301],"1.125":[120.165,-4.766,209.456],"1.1667":[138.739,-4.591,215.005],"1.2083":[129.992,-1.421,215.49],"1.25":[118.086,0.805,220.2],"1.2917":[119.504,-1.792,230.816],"1.3333":[119.679,-3.36,233.675],"1.375":[118.697,-5.679,227.846],"1.4167":[117.455,-17.131,234.381],"1.4583":[112.736,-31.237,245.664],"1.5":[110.292,-34.158,249.114],"1.5417":[108.172,-35.531,251.429],"1.5833":[105.753,-35.062,252.429],"1.625":[104.291,-34.381,252.685],"1.6667":[102.203,-33.471,252.908],"1.7083":[101.796,-33.09,251.681],"1.75":[101.798,-32.824,250.211],"1.7917":[101.512,-32.702,250.621],"1.8333":[101.215,-32.68,251.606],"1.875":[100.744,-32.664,253.286],"1.9167":[100.6,-32.647,253.786]},"position":{"0.0":[-14.459,23.815,2.344],"0.0417":[-14.526,23.733,3.716],"0.0833":[-14.623,23.633,5.293],"0.125":[-14.726,23.508,7.372],"0.1667":[-14.709,23.493,8.133],"0.2083":[-14.447,23.651,7.581],"0.25":[-13.553,23.324,2.599],"0.2917":[-12.1,23.898,-5.793],"0.3333":[-10.288,38.432,-15.614],"0.375":[-9.394,42.001,-16.548],"0.4167":[-8.963,43.18,-16.007],"0.4583":[-8.846,43.21,-16.097],"0.5":[-8.87,42.519,-16.593],"0.5417":[-9.008,41.931,-17.029],"0.5833":[-9.106,41.841,-17.076],"0.625":[-9.269,41.813,-17.049],"0.6667":[-10.192,44.126,-15.757],"0.7083":[-12.6,49.852,-7.282],"0.75":[-17.896,54.811,4.776],"0.7917":[-22.041,53.77,3.299],"0.8333":[-25.87,49.005,0.598],"0.875":[-26.946,41.776,-2.068],"0.9167":[-26.206,37.358,-5.152],"0.9583":[-22.817,33.25,-9.621],"1.0":[-20.105,32.04,-12.538],"1.0417":[-15.22,35.296,-16.785],"1.0833":[-12.673,37.834,-18.529],"1.125":[-11.299,39.895,-18.901],"1.1667":[-10.126,41.024,-15.638],"1.2083":[-9.705,41.713,-15.427],"1.25":[-9.699,41.939,-15.994],"1.2917":[-10.239,41.143,-16.358],"1.3333":[-11.038,40.476,-16.549],"1.375":[-12.395,39.743,-16.296],"1.4167":[-12.168,39.54,-14.738],"1.4583":[-11.647,39.679,-12.74],"1.5":[-11.529,40.096,-12.171],"1.5417":[-11.437,40.459,-11.871],"1.5833":[-11.329,40.577,-12.135],"1.625":[-11.275,40.591,-12.365],"1.6667":[-11.204,40.568,-12.621],"1.7083":[-11.135,40.496,-12.67],"1.75":[-11.068,40.411,-12.671],"1.7917":[-11.04,40.327,-12.616],"1.8333":[-11.042,40.287,-12.568],"1.875":[-11.047,40.229,-12.494],"1.9167":[-11.048,40.207,-12.468]}},"lefthand":{"rotation":{"0.0":[-8.66,145.887,-47.451],"0.0417":[-8.661,145.888,-47.452],"0.0833":[-8.661,145.888,-47.45],"0.125":[-5.512,145.808,-45.974],"0.1667":[-8.661,145.887,-47.451],"0.2083":[-31.994,146.874,-59.165],"0.25":[-48.64,151.392,-65.757],"0.2917":[-55.575,158.801,-63.548],"0.3333":[-53.039,173.414,-47.087],"0.375":[-49.117,174.588,-36.457],"0.4167":[-66.292,173.099,-26.428],"0.4583":[-80.22,171.363,-23.974],"0.5":[-82.264,171.468,-23.264],"0.5417":[-81.853,172.36,-22.96],"0.5833":[-80.223,173.243,-23.084],"0.625":[-77.398,174.613,-23.426],"0.6667":[-76.226,175.359,-23.51],"0.7083":[-74.987,174.219,-27.804],"0.75":[-71.44,169.892,-41.755],"0.7917":[-69.615,166.441,-51.4],"0.8333":[-68.205,161.12,-65.41],"0.875":[-68.218,157.97,-73.859],"0.9167":[-69.273,155.961,-78.862],"0.9583":[-72.684,162.999,-75.099],"1.0":[-74.832,173.429,-73.089],"1.0417":[-75.742,188.001,-70.047],"1.0833":[-76.298,189.46,-68.302],"1.125":[-76.71,179.208,-65.696],"1.1667":[-68.822,169.881,-60.309],"1.2083":[-59.487,176.771,-58.093],"1.25":[-58.565,179.388,-63.593],"1.2917":[-73.333,169.453,-73.363],"1.3333":[-79.14,165.3,-77.1],"1.375":[-71.86,166.456,-73.134],"1.4167":[-67.5,168.147,-72.735],"1.4583":[-61.992,167.866,-75.344],"1.5":[-60.308,165.012,-78.043],"1.5417":[-58.104,164.081,-73.89],"1.5833":[-55.203,163.434,-65.692],"1.625":[-54.223,162.441,-62.079],"1.6667":[-53.5,160.782,-58.01],"1.7083":[-53.397,159.928,-56.953],"1.75":[-53.793,159.143,-57.544],"1.7917":[-54.423,158.192,-58.866],"1.8333":[-54.362,157.924,-58.881],"1.875":[-53.963,157.872,-58.573],"1.9167":[-53.845,157.833,-58.488]},"position":{"0.0":[12.074,32.936,-11.047],"0.0417":[12.039,32.844,-11.046],"0.0833":[12.086,32.963,-11.044],"0.125":[12.431,33.758,-11.186],"0.1667":[12.726,34.608,-11.044],"0.2083":[12.768,36.931,-10.035],"0.25":[12.825,38.477,-9.366],"0.2917":[13.727,38.775,-9.059],"0.3333":[17.209,35.914,-9.005],"0.375":[20.824,30.858,-8.844],"0.4167":[20.476,27,-5.688],"0.4583":[18.538,26.688,-3.715],"0.5":[17.784,26.735,-3.356],"0.5417":[16.875,27.062,-3.278],"0.5833":[16.364,27.372,-3.41],"0.625":[15.644,27.861,-3.668],"0.6667":[15.147,28.133,-3.751],"0.7083":[15.83,28.138,-4.24],"0.75":[18.097,27.897,-5.949],"0.7917":[19.701,27.732,-7.151],"0.8333":[22.026,27.898,-8.765],"0.875":[23.397,28.509,-9.55],"0.9167":[24.127,30.666,-9.382],"0.9583":[22.972,35.928,-6.467],"1.0":[21.665,33.024,-5.648],"1.0417":[18.982,28.516,-3.686],"1.0833":[18.901,27.666,-3.414],"1.125":[21.518,29.262,-5.066],"1.1667":[22.944,33.579,-6.943],"1.2083":[20.706,35.997,-7.435],"1.25":[18.47,37.49,-9.143],"1.2917":[17.951,37.337,-12.54],"1.3333":[16.704,37.676,-13.996],"1.375":[15.217,37.82,-13.748],"1.4167":[14.705,38.042,-13.283],"1.4583":[14.643,38.399,-12.647],"1.5":[14.901,38.525,-12.659],"1.5417":[15.069,38.475,-12.762],"1.5833":[15.237,38.344,-13.012],"1.625":[15.21,38.336,-13.222],"1.6667":[15.083,38.361,-13.561],"1.7083":[15.033,38.338,-13.713],"1.75":[15.009,38.296,-13.816],"1.7917":[14.973,38.23,-13.898],"1.8333":[14.941,38.184,-13.903],"1.875":[14.895,38.094,-13.863],"1.9167":[14.877,38.064,-13.848]}},"root":{"position":{"0.625":[0,0,0],"0.7083":[0,-22,0],"0.8333":[0,0,0]}},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.7083":[-77.5,0,0],"0.9167":[0,0,0]},"position":{"0.0":[0,-0.25,1.75],"0.9583":[0,-0.25,1.75],"1.125":[0,1.6273,3.1007],"1.1667":[0,4.15,2.45],"1.2083":[-1.3513,5.0247,-0.4967],"1.2917":[-0.25,3.5113,-1.4447],"1.3333":[-0.25,2.45,-1.6187],"1.375":[-0.25,1.0373,-0.0347],"1.4167":[-0.25,0.72,1.7413],"1.4583":[-0.25,0.15,2.2],"1.5417":[0,-0.25,1.75]},"scale":[1,1.5,1]},"lefthand_1":{"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.056,-0.013,0.02],"0.0417":[0.447,-0.095,0.156],"0.0833":[1.048,-0.231,0.37],"0.125":[1.991,-0.467,0.706],"0.1667":[2.371,-0.602,0.841],"0.2083":[2.408,-0.719,0.846],"0.25":[2.303,-0.764,0.778],"0.2917":[2.008,-0.785,0.628],"0.3333":[0.31,-0.472,-0.038],"0.375":[-2.27,0.708,-0.927],"0.4167":[-0.322,1.069,6.302],"0.4583":[-1.863,1.19,0.307],"0.5":[-2.318,1.333,-1.699],"0.5417":[-1.561,1.616,-0.396],"0.5833":[-1.792,1.726,-1.083],"0.625":[-2.23,1.847,-2.298],"0.6667":[-2.426,1.866,-2.864],"0.7083":[-1.367,1.075,-1.52],"0.75":[0.26,-0.254,-0.213],"0.7917":[0.574,-0.535,-1.399],"0.8333":[0.76,-0.535,-2.639],"0.875":[0.717,-0.39,-2.151],"0.9167":[0.515,-0.209,-1.342],"0.9583":[0.111,-0.012,-0.202],"1.0":[-0.102,-0.04,0.1],"1.0417":[-0.41,-0.441,0.189],"1.0833":[-0.543,-0.766,0.169],"1.125":[-0.61,-1.002,-0.06],"1.1667":[-0.704,-0.99,-0.817],"1.2083":[-0.741,-0.833,-1.114],"1.25":[-0.357,-0.66,-0.382],"1.2917":[0.04,-0.562,0.386],"1.3333":[0.233,-0.473,0.759],"1.375":[0.041,-0.34,0.328],"1.4167":[-0.123,-0.268,-0.038],"1.4583":[-0.113,-0.208,0.035],"1.5":[-0.018,-0.193,0.306],"1.5417":[0.077,-0.178,0.525],"1.5833":[0.16,-0.11,0.262],"1.625":[0.19,-0.049,-0.304],"1.6667":[0.195,0.016,-0.576],"1.7083":[0.172,0.045,-0.369],"1.75":[0.134,0.067,-0.097],"1.7917":[0.079,0.081,0.143],"1.8333":[0.046,0.059,0.104],"1.875":[0.003,0.007,0.013],"1.9167":[0,0.001,0.001]}}},"sound_effects":{"0.0":{"effect":"melee.shadowkiller.shadowkiller_miss1"},"1.0417":{"effect":"melee.shadowkiller.shadowkiller_deploy_1"}}},"static_idle":{"loop":true,"bones":{"karambit":{"rotation":[411.069,204.15,76.306],"position":[-5.156,50.012,-19.085]},"righthand":{"rotation":[100.6,-32.647,253.786],"position":[-11.048,40.207,-12.468]},"righthand_1":{"position":[0,-0.25,1.75],"scale":[1,1.5,1]},"lefthand":{"rotation":[-53.845,157.833,-58.488],"position":[14.877,38.064,-13.848]},"lefthand_1":{"scale":[1,1.5,1]}}},"run":{"loop":true,"animation_length":0.7167,"bones":{"lefthand_1":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.15":{"post":[0,0,-9],"lerp_mode":"catmullrom"},"0.2333":{"post":[0,0,-1.39],"lerp_mode":"catmullrom"},"0.7167":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,2.25,0],"lerp_mode":"catmullrom"},"0.15":{"post":[0,2,0],"lerp_mode":"catmullrom"},"0.3833":{"post":[1.75,-10,0],"lerp_mode":"catmullrom"},"0.5":{"post":[3.9125,-12.58,0],"lerp_mode":"catmullrom"},"0.5667":{"post":[0,-6.4425,0],"lerp_mode":"catmullrom"},"0.7167":{"post":[0,2.25,0],"lerp_mode":"catmullrom"}}},"knife_and_right":{"rotation":{"0.4":{"pre":[4.686,5.1486,15.1695],"post":[4.686,5.1486,15.1695],"lerp_mode":"catmullrom"},"0.6":{"post":[-2,0,0],"lerp_mode":"catmullrom"},"0.7167":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.1667":{"pre":[2.4388,-4.1617,9.1686],"post":[2.4388,-4.1617,9.1686],"lerp_mode":"catmullrom"},"0.4":{"post":[-0.5074,0.1348,0.1627],"lerp_mode":"catmullrom"},"0.5167":{"post":[-0.6195,-1.2487,-1.5344],"lerp_mode":"catmullrom"},"0.6":{"post":[0,-3.8118,4.3982],"lerp_mode":"catmullrom"},"0.7167":{"post":[0,-10,0],"lerp_mode":"catmullrom"}}}}},"run_end":{"animation_length":0.6167,"bones":{"knife_and_right":{"rotation":{"0.0833":{"pre":[9,0,0],"post":[9,0,0],"lerp_mode":"catmullrom"},"0.2167":{"post":[0,4.3125,-1.4375],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,-1.3125,0.6875],"lerp_mode":"catmullrom"},"0.4333":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[2.4388,-4.1617,9.1686],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,-0.5625,1.8125],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,-1],"lerp_mode":"catmullrom"},"0.2333":{"post":[0,0,-1.3125],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,0,0.0625],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0833":{"pre":[9,0,0],"post":[9,0,0],"lerp_mode":"catmullrom"},"0.2167":{"post":[2.125,4.3125,-1.4375],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,-1.3125,0.6875],"lerp_mode":"catmullrom"},"0.4333":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,-0.125,0.125],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,-0.0625,0],"lerp_mode":"catmullrom"},"0.2333":{"post":[0,0,-0.0625],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,0,0.0625],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"lefthand_1":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.25":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,2.25,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.25":{"post":[0,0,0],"lerp_mode":"catmullrom"}}}}},"run_start":{"loop":"hold_on_last_frame","animation_length":0.1667,"bones":{"knife_and_right":{"rotation":[0,0,0],"position":{"0.0":[0,0,0],"0.0833":{"pre":[2.4388,-4.1617,9.1686],"post":[2.4388,-4.1617,9.1686],"lerp_mode":"catmullrom"}}},"lefthand_1":{"rotation":{"0.0":[0,0,0],"0.0833":{"pre":[0,0,0],"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":[0,0,0],"0.0833":{"pre":[0,2.25,0],"post":[0,2.25,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,2.25,0],"lerp_mode":"catmullrom"}}}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/shadowkiller.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/shadowkiller.geo.json new file mode 100644 index 0000000..db88666 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/shadowkiller.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.unknown","texture_width":64,"texture_height":64,"visible_bounds_width":4,"visible_bounds_height":7,"visible_bounds_offset":[0,2.5,0]},"bones":[{"name":"root","pivot":[0,9.6875,4.3375]},{"name":"bone","parent":"root","pivot":[0,9.6875,4.3375]},{"name":"knife_and_right","parent":"bone","pivot":[6,19,0]},{"name":"karambit","parent":"knife_and_right","pivot":[0,9.6875,4.7375]},{"name":"root2","parent":"karambit","pivot":[0,8.6947,-0.4007],"rotation":[-122.5,0,180]},{"name":"group4","parent":"root2","pivot":[0,10.405,-2.061],"cubes":[{"origin":[-0.34,9.725,-1.0353],"size":[0.68,0.68,0.34],"pivot":[0,10.405,-1.0353],"rotation":[4.5,0,0],"uv":{"north":{"uv":[0,9],"uv_size":[0.5,0.5]},"east":{"uv":[15,11],"uv_size":[0.25,0.5]},"south":{"uv":[9,0],"uv_size":[0.5,0.5]},"west":{"uv":[12,15],"uv_size":[0.25,0.5]},"up":{"uv":[15,12],"uv_size":[0.5,0.25]},"down":{"uv":[13,15.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.34,10.0375,-1.0353],"size":[0.68,0.1331,0.0275],"inflate":0.01,"pivot":[0,10.405,-1.0353],"rotation":[4.5,0,0],"uv":{"north":{"uv":[39,32],"uv_size":[0.625,0.125]},"east":{"uv":[40,4],"uv_size":[0.125,0.125]},"south":{"uv":[33,39],"uv_size":[0.625,0.125]},"west":{"uv":[40,5],"uv_size":[0.125,0.125]},"up":{"uv":[39,33],"uv_size":[0.625,0.125]},"down":{"uv":[34,39.125],"uv_size":[0.625,-0.125]}}},{"origin":[-0.3407,12.1584,-1.5057],"size":[0.6814,0.68,0.5525],"pivot":[0.0007,12.8384,-1.5057],"rotation":[33.75,0,0],"uv":{"north":{"uv":[1,9],"uv_size":[0.5,0.5]},"east":{"uv":[11,4],"uv_size":[0.375,0.5]},"south":{"uv":[9,1],"uv_size":[0.5,0.5]},"west":{"uv":[5,11],"uv_size":[0.375,0.5]},"up":{"uv":[11,5],"uv_size":[0.5,0.375]},"down":{"uv":[6,11.375],"uv_size":[0.5,-0.375]}}},{"origin":[-0.34,12.1584,-0.9532],"size":[0.68,0.425,0.17],"pivot":[0,12.8384,-1.5057],"rotation":[33.75,0,0],"uv":{"north":{"uv":[11,6],"uv_size":[0.5,0.375]},"east":{"uv":[21,19],"uv_size":[0.125,0.375]},"south":{"uv":[7,11],"uv_size":[0.5,0.375]},"west":{"uv":[20,21],"uv_size":[0.125,0.375]},"up":{"uv":[4,20],"uv_size":[0.5,0.125]},"down":{"uv":[20,4.125],"uv_size":[0.5,-0.125]}}},{"origin":[-0.3393,13.0278,-0.9333],"size":[0.6786,0.3065,0.17],"pivot":[-0.0007,13.0278,-0.7633],"rotation":[67.4401,0,0],"uv":{"north":{"uv":[15,13],"uv_size":[0.5,0.25]},"east":{"uv":[23,19],"uv_size":[0.125,0.25]},"south":{"uv":[14,15],"uv_size":[0.5,0.25]},"west":{"uv":[20,23],"uv_size":[0.125,0.25]},"up":{"uv":[5,20],"uv_size":[0.5,0.125]},"down":{"uv":[20,5.125],"uv_size":[0.5,-0.125]}}},{"origin":[-0.342,11.6544,-0.9522],"size":[0.6841,1.02,0.425],"pivot":[0.002,12.6744,-0.5272],"rotation":[28,0,0],"uv":{"north":{"uv":[6,0],"uv_size":[0.5,0.75]},"east":{"uv":[8,5],"uv_size":[0.375,0.75]},"south":{"uv":[6,1],"uv_size":[0.5,0.75]},"west":{"uv":[6,8],"uv_size":[0.375,0.75]},"up":{"uv":[11,7],"uv_size":[0.5,0.375]},"down":{"uv":[8,11.375],"uv_size":[0.5,-0.375]}}},{"origin":[-0.34,10.7538,-0.4733],"size":[0.68,1.02,0.425],"pivot":[0,11.7738,-0.0483],"rotation":[12,0,0],"uv":{"north":{"uv":[2,6],"uv_size":[0.5,0.75]},"east":{"uv":[8,6],"uv_size":[0.375,0.75]},"south":{"uv":[6,2],"uv_size":[0.5,0.75]},"west":{"uv":[7,8],"uv_size":[0.375,0.75]},"up":{"uv":[11,8],"uv_size":[0.5,0.375]},"down":{"uv":[9,11.375],"uv_size":[0.5,-0.375]}}},{"origin":[-0.3414,10.0961,-0.2612],"size":[0.6827,0.68,0.425],"pivot":[0.0014,10.7761,0.1638],"rotation":[-11.25,0,0],"uv":{"north":{"uv":[9,2],"uv_size":[0.5,0.5]},"east":{"uv":[11,9],"uv_size":[0.375,0.5]},"south":{"uv":[3,9],"uv_size":[0.5,0.5]},"west":{"uv":[10,11],"uv_size":[0.375,0.5]},"up":{"uv":[11,10],"uv_size":[0.5,0.375]},"down":{"uv":[11,11.375],"uv_size":[0.5,-0.375]}}},{"origin":[-0.3407,9.4292,-0.3939],"size":[0.6814,0.68,0.425],"pivot":[0.0007,10.1092,0.0311],"rotation":[-31.25,0,0],"uv":{"north":{"uv":[9,3],"uv_size":[0.5,0.5]},"east":{"uv":[0,12],"uv_size":[0.375,0.5]},"south":{"uv":[4,9],"uv_size":[0.5,0.5]},"west":{"uv":[12,0],"uv_size":[0.375,0.5]},"up":{"uv":[1,12],"uv_size":[0.5,0.375]},"down":{"uv":[12,1.375],"uv_size":[0.5,-0.375]}}},{"origin":[-0.3407,9.9448,-0.0345],"size":[0.6814,0.1019,0.0656],"inflate":0.01,"pivot":[0.0007,10.1092,0.0311],"rotation":[-31.25,0,0],"uv":{"north":{"uv":[36,38],"uv_size":[0.625,0.125]},"east":{"uv":[40,2],"uv_size":[0.125,0.125]},"south":{"uv":[38,36],"uv_size":[0.625,0.125]},"west":{"uv":[40,3],"uv_size":[0.125,0.125]},"up":{"uv":[37,38],"uv_size":[0.625,0.125]},"down":{"uv":[38,37.125],"uv_size":[0.625,-0.125]}}},{"origin":[-0.34,9.3233,-0.685],"size":[0.68,0.425,0.425],"pivot":[0,9.7483,-0.685],"rotation":[-13.75,0,0],"uv":{"north":{"uv":[2,12],"uv_size":[0.5,0.375]},"east":{"uv":[2,14],"uv_size":[0.375,0.375]},"south":{"uv":[12,2],"uv_size":[0.5,0.375]},"west":{"uv":[14,2],"uv_size":[0.375,0.375]},"up":{"uv":[3,12],"uv_size":[0.5,0.375]},"down":{"uv":[12,3.375],"uv_size":[0.5,-0.375]}}},{"origin":[-0.34,8.6342,-0.786],"size":[0.68,0.7013,0.425],"pivot":[0,9.3355,-0.786],"rotation":[6,0,0],"uv":{"north":{"uv":[9,4],"uv_size":[0.5,0.5]},"east":{"uv":[4,12],"uv_size":[0.375,0.5]},"south":{"uv":[5,9],"uv_size":[0.5,0.5]},"west":{"uv":[12,4],"uv_size":[0.375,0.5]},"up":{"uv":[5,12],"uv_size":[0.5,0.375]},"down":{"uv":[12,5.375],"uv_size":[0.5,-0.375]}}},{"origin":[-0.34,8.5492,-0.786],"size":[0.68,0.085,0.34],"pivot":[0,9.3355,-0.786],"rotation":[6,0,0],"uv":{"north":{"uv":[6,20],"uv_size":[0.5,0.125]},"east":{"uv":[23,20],"uv_size":[0.25,0.125]},"south":{"uv":[20,6],"uv_size":[0.5,0.125]},"west":{"uv":[21,23],"uv_size":[0.25,0.125]},"up":{"uv":[15,14],"uv_size":[0.5,0.25]},"down":{"uv":[15,15.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.34,8.5891,-0.3657],"size":[0.68,0.085,0.1202],"pivot":[0,8.5891,-0.3657],"rotation":[51,0,0],"uv":{"north":{"uv":[7,20],"uv_size":[0.5,0.125]},"east":{"uv":[27,5],"uv_size":[0.125,0.125]},"south":{"uv":[20,7],"uv_size":[0.5,0.125]},"west":{"uv":[6,27],"uv_size":[0.125,0.125]},"up":{"uv":[8,20],"uv_size":[0.5,0.125]},"down":{"uv":[20,8.125],"uv_size":[0.5,-0.125]}}},{"origin":[-0.34,11.8032,-1.2496],"size":[0.68,0.8713,0.7225],"pivot":[0,12.6744,-0.5272],"rotation":[21.75,0,0],"uv":{"north":{"uv":[6,6],"uv_size":[0.5,0.625]},"east":{"uv":[0,7],"uv_size":[0.5,0.625]},"south":{"uv":[7,0],"uv_size":[0.5,0.625]},"west":{"uv":[1,7],"uv_size":[0.5,0.625]},"up":{"uv":[9,5],"uv_size":[0.5,0.5]},"down":{"uv":[6,9.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.3434,10.9302,-0.9268],"size":[0.6868,0.935,0.7225],"pivot":[0.0034,11.8652,-0.2043],"rotation":[2.75,0,0],"uv":{"north":{"uv":[3,6],"uv_size":[0.5,0.75]},"east":{"uv":[6,3],"uv_size":[0.5,0.75]},"south":{"uv":[4,6],"uv_size":[0.5,0.75]},"west":{"uv":[6,4],"uv_size":[0.5,0.75]},"up":{"uv":[9,6],"uv_size":[0.5,0.5]},"down":{"uv":[7,9.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.3468,10.2088,-0.8819],"size":[0.6936,0.7225,0.7225],"pivot":[0.0068,10.9313,-0.1594],"rotation":[-14,0,0],"uv":{"north":{"uv":[9,7],"uv_size":[0.5,0.5]},"east":{"uv":[8,9],"uv_size":[0.5,0.5]},"south":{"uv":[9,8],"uv_size":[0.5,0.5]},"west":{"uv":[9,9],"uv_size":[0.5,0.5]},"up":{"uv":[0,10],"uv_size":[0.5,0.5]},"down":{"uv":[10,0.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.3434,8.615,-0.6694],"size":[0.6868,1.5938,0.51],"pivot":[0.0034,10.9313,-0.1594],"rotation":[-14,0,0],"uv":{"north":{"uv":[4,2],"uv_size":[0.5,1.125]},"east":{"uv":[1,5],"uv_size":[0.375,1.125]},"south":{"uv":[3,4],"uv_size":[0.5,1.125]},"west":{"uv":[5,1],"uv_size":[0.375,1.125]},"up":{"uv":[6,12],"uv_size":[0.5,0.375]},"down":{"uv":[12,6.375],"uv_size":[0.5,-0.375]}}},{"origin":[-0.3746,8.8156,-0.7276],"size":[0.7493,0.1562,0.1562],"pivot":[0,8.8937,-0.6494],"rotation":[-29,0,0],"uv":{"north":{"uv":[37,35],"uv_size":[0.75,0.125]},"east":{"uv":[40,8],"uv_size":[0.125,0.125]},"south":{"uv":[36,37],"uv_size":[0.75,0.125]},"west":{"uv":[40,9],"uv_size":[0.125,0.125]},"up":{"uv":[37,36],"uv_size":[0.75,0.125]},"down":{"uv":[37,37.125],"uv_size":[0.75,-0.125]}}},{"origin":[-0.3434,9.969,-0.9817],"size":[0.6868,0.125,0.9219],"inflate":0.01,"pivot":[0,10.094,0.0183],"rotation":[-4,0,0],"uv":{"north":{"uv":[38,38],"uv_size":[0.625,0.125]},"east":{"uv":[37,32],"uv_size":[0.875,0.125]},"south":{"uv":[32,39],"uv_size":[0.625,0.125]},"west":{"uv":[33,37],"uv_size":[0.875,0.125]},"up":{"uv":[33,36],"uv_size":[0.625,0.875]},"down":{"uv":[36,33.875],"uv_size":[0.625,-0.875]}}},{"origin":[-0.255,9.951,-0.6671],"size":[0.51,0.125,0.9375],"inflate":0.01,"pivot":[0,10.076,0.3329],"rotation":[-3.5,0,0],"uv":{"north":{"uv":[39,36],"uv_size":[0.5,0.125]},"east":{"uv":[35,36],"uv_size":[1,0.125]},"south":{"uv":[37,39],"uv_size":[0.5,0.125]},"west":{"uv":[36,35],"uv_size":[1,0.125]},"up":{"uv":[34,36],"uv_size":[0.5,1]},"down":{"uv":[36,35],"uv_size":[0.5,-1]}}},{"origin":[-0.255,9.9412,0.2902],"size":[0.51,0.1163,0.0452],"inflate":0.01,"pivot":[0,10.076,0.3329],"rotation":[-23.5,0,0],"uv":{"north":{"uv":[39,34],"uv_size":[0.5,0.125]},"east":{"uv":[40,0],"uv_size":[0.125,0.125]},"south":{"uv":[35,39],"uv_size":[0.5,0.125]},"west":{"uv":[40,1],"uv_size":[0.125,0.125]},"up":{"uv":[39,35],"uv_size":[0.5,0.125]},"down":{"uv":[36,39.125],"uv_size":[0.5,-0.125]}}},{"origin":[-0.2479,10.0735,-1.3302],"size":[0.4959,0.1212,0.2975],"inflate":0.02,"pivot":[-0.0071,9.7885,-1.3302],"rotation":[-6,0,0],"uv":{"north":{"uv":[39,37],"uv_size":[0.5,0.125]},"east":{"uv":[39,38],"uv_size":[0.25,0.125]},"south":{"uv":[38,39],"uv_size":[0.5,0.125]},"west":{"uv":[39,39],"uv_size":[0.25,0.125]},"up":{"uv":[36,36],"uv_size":[0.5,0.25]},"down":{"uv":[32,37.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.3746,11.7531,-0.8526],"size":[0.7493,0.1562,0.1562],"pivot":[0,11.8312,-0.7744],"rotation":[-24,0,0],"uv":{"north":{"uv":[32,38],"uv_size":[0.75,0.125]},"east":{"uv":[40,10],"uv_size":[0.125,0.125]},"south":{"uv":[38,32],"uv_size":[0.75,0.125]},"west":{"uv":[40,11],"uv_size":[0.125,0.125]},"up":{"uv":[33,38],"uv_size":[0.75,0.125]},"down":{"uv":[38,33.125],"uv_size":[0.75,-0.125]}}},{"origin":[-0.3746,12.6906,-0.8526],"size":[0.7493,0.1562,0.1562],"pivot":[0,12.7687,-0.7744],"rotation":[-14,0,0],"uv":{"north":{"uv":[34,38],"uv_size":[0.75,0.125]},"east":{"uv":[40,12],"uv_size":[0.125,0.125]},"south":{"uv":[38,34],"uv_size":[0.75,0.125]},"west":{"uv":[40,13],"uv_size":[0.125,0.125]},"up":{"uv":[35,38],"uv_size":[0.75,0.125]},"down":{"uv":[38,35.125],"uv_size":[0.75,-0.125]}}},{"origin":[-0.3746,10.1906,-0.29],"size":[0.7493,0.1562,0.1562],"pivot":[0,10.2687,-0.2119],"rotation":[-16.5,0,0],"uv":{"north":{"uv":[37,33],"uv_size":[0.75,0.125]},"east":{"uv":[40,6],"uv_size":[0.125,0.125]},"south":{"uv":[34,37],"uv_size":[0.75,0.125]},"west":{"uv":[40,7],"uv_size":[0.125,0.125]},"up":{"uv":[37,34],"uv_size":[0.75,0.125]},"down":{"uv":[35,37.125],"uv_size":[0.75,-0.125]}}},{"origin":[-0.34,8.8072,-1.2146],"size":[0.68,0.255,0.3567],"pivot":[0,8.8072,-1.2146],"rotation":[-44,0,0],"uv":{"north":{"uv":[0,16],"uv_size":[0.5,0.25]},"east":{"uv":[9,20],"uv_size":[0.25,0.25]},"south":{"uv":[16,0],"uv_size":[0.5,0.25]},"west":{"uv":[20,9],"uv_size":[0.25,0.25]},"up":{"uv":[1,16],"uv_size":[0.5,0.25]},"down":{"uv":[16,1.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.3407,8.5594,-0.9581],"size":[0.6814,0.255,0.255],"pivot":[0.0007,8.5594,-0.9581],"rotation":[-1.5,0,0],"uv":{"north":{"uv":[2,16],"uv_size":[0.5,0.25]},"east":{"uv":[10,20],"uv_size":[0.25,0.25]},"south":{"uv":[16,2],"uv_size":[0.5,0.25]},"west":{"uv":[20,10],"uv_size":[0.25,0.25]},"up":{"uv":[3,16],"uv_size":[0.5,0.25]},"down":{"uv":[16,3.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.34,8.785,-0.7757],"size":[0.68,0.3188,0.1063],"pivot":[0,10.9313,-0.1594],"rotation":[-14,0,0],"uv":{"north":{"uv":[4,16],"uv_size":[0.5,0.25]},"east":{"uv":[23,21],"uv_size":[0.125,0.25]},"south":{"uv":[16,4],"uv_size":[0.5,0.25]},"west":{"uv":[22,23],"uv_size":[0.125,0.25]},"up":{"uv":[11,20],"uv_size":[0.5,0.125]},"down":{"uv":[20,11.125],"uv_size":[0.5,-0.125]}}},{"origin":[-0.34,8.7974,-1.2766],"size":[0.68,0.2005,0.1062],"pivot":[0,8.9978,-1.2766],"rotation":[18.0054,0,0],"uv":{"north":{"uv":[12,20],"uv_size":[0.5,0.125]},"east":{"uv":[27,6],"uv_size":[0.125,0.125]},"south":{"uv":[20,12],"uv_size":[0.5,0.125]},"west":{"uv":[7,27],"uv_size":[0.125,0.125]},"up":{"uv":[13,20],"uv_size":[0.5,0.125]},"down":{"uv":[20,13.125],"uv_size":[0.5,-0.125]}}},{"origin":[-0.34,9.3071,-1.1995],"size":[0.68,0.2762,0.1062],"pivot":[0,9.3071,-1.1995],"rotation":[-36.5,0,0],"uv":{"north":{"uv":[5,16],"uv_size":[0.5,0.25]},"east":{"uv":[23,22],"uv_size":[0.125,0.25]},"south":{"uv":[16,5],"uv_size":[0.5,0.25]},"west":{"uv":[23,23],"uv_size":[0.125,0.25]},"up":{"uv":[14,20],"uv_size":[0.5,0.125]},"down":{"uv":[20,14.125],"uv_size":[0.5,-0.125]}}}]},{"name":"group2","parent":"root2","pivot":[0.0106,8.6947,-1.4265],"cubes":[{"origin":[-0.117,8.6734,-1.7607],"size":[0.2339,0.595,0.425],"uv":{"north":{"uv":[19,16],"uv_size":[0.125,0.5]},"east":{"uv":[11,3],"uv_size":[0.375,0.5]},"south":{"uv":[17,19],"uv_size":[0.125,0.5]},"west":{"uv":[4,11],"uv_size":[0.375,0.5]},"up":{"uv":[21,1],"uv_size":[0.125,0.375]},"down":{"uv":[2,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1169,8.6734,-1.5907],"size":[0.2338,0.34,0.51],"pivot":[0,8.6734,-1.5907],"rotation":[-24,0,0],"uv":{"north":{"uv":[7,22],"uv_size":[0.125,0.25]},"east":{"uv":[3,18],"uv_size":[0.375,0.25]},"south":{"uv":[22,7],"uv_size":[0.125,0.25]},"west":{"uv":[18,3],"uv_size":[0.375,0.25]},"up":{"uv":[21,2],"uv_size":[0.125,0.375]},"down":{"uv":[3,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1169,8.4366,-0.9865],"size":[0.2338,0.34,0.51],"pivot":[0,8.7766,-0.9865],"rotation":[-51.5,0,0],"uv":{"north":{"uv":[8,22],"uv_size":[0.125,0.25]},"east":{"uv":[4,18],"uv_size":[0.375,0.25]},"south":{"uv":[22,8],"uv_size":[0.125,0.25]},"west":{"uv":[18,4],"uv_size":[0.375,0.25]},"up":{"uv":[21,3],"uv_size":[0.125,0.375]},"down":{"uv":[4,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1168,8.6325,-0.924],"size":[0.2336,0.34,0.8925],"pivot":[-0.0001,8.3775,-0.669],"rotation":[-90,0,0],"uv":{"north":{"uv":[9,22],"uv_size":[0.125,0.25]},"east":{"uv":[13,1],"uv_size":[0.625,0.25]},"south":{"uv":[22,9],"uv_size":[0.125,0.25]},"west":{"uv":[2,13],"uv_size":[0.625,0.25]},"up":{"uv":[16,18],"uv_size":[0.125,0.625]},"down":{"uv":[18,16.625],"uv_size":[0.125,-0.625]}}},{"origin":[-0.117,8.0375,-1.1365],"size":[0.2339,0.595,3.1662],"pivot":[0.0001,8.3775,-0.669],"rotation":[-90,0,0],"uv":{"north":{"uv":[19,17],"uv_size":[0.125,0.5]},"east":{"uv":[1,2],"uv_size":[2.375,0.5]},"south":{"uv":[18,19],"uv_size":[0.125,0.5]},"west":{"uv":[3,0],"uv_size":[2.375,0.5]},"up":{"uv":[7,1],"uv_size":[0.125,2.375]},"down":{"uv":[2,9.375],"uv_size":[0.125,-2.375]}}},{"origin":[-0.1169,6.04,-0.4352],"size":[0.2338,0.1062,0.1275],"pivot":[0,6.125,-0.414],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[9,24],"uv_size":[0.125,0.125]},"east":{"uv":[24,9],"uv_size":[0.125,0.125]},"south":{"uv":[10,24],"uv_size":[0.125,0.125]},"west":{"uv":[24,10],"uv_size":[0.125,0.125]},"up":{"uv":[11,24],"uv_size":[0.125,0.125]},"down":{"uv":[24,11.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,6.094,-0.45],"size":[0.2338,0.0425,0.0638],"pivot":[0,6.1364,-0.3862],"rotation":[-52.5,0,0],"uv":{"north":{"uv":[12,24],"uv_size":[0.125,0.125]},"east":{"uv":[24,12],"uv_size":[0.125,0.125]},"south":{"uv":[13,24],"uv_size":[0.125,0.125]},"west":{"uv":[24,13],"uv_size":[0.125,0.125]},"up":{"uv":[14,24],"uv_size":[0.125,0.125]},"down":{"uv":[24,14.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,6.5712,-0.3927],"size":[0.2338,0.0638,0.0425],"pivot":[0,6.5712,-0.3502],"rotation":[-31.5,0,0],"uv":{"north":{"uv":[15,24],"uv_size":[0.125,0.125]},"east":{"uv":[24,15],"uv_size":[0.125,0.125]},"south":{"uv":[16,24],"uv_size":[0.125,0.125]},"west":{"uv":[24,16],"uv_size":[0.125,0.125]},"up":{"uv":[17,24],"uv_size":[0.125,0.125]},"down":{"uv":[24,17.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,8.6325,1.0735],"size":[0.2338,0.0637,0.1912],"pivot":[0,8.3775,-0.669],"rotation":[-90,0,0],"uv":{"north":{"uv":[18,24],"uv_size":[0.125,0.125]},"east":{"uv":[24,18],"uv_size":[0.125,0.125]},"south":{"uv":[19,24],"uv_size":[0.125,0.125]},"west":{"uv":[24,19],"uv_size":[0.125,0.125]},"up":{"uv":[20,24],"uv_size":[0.125,0.125]},"down":{"uv":[24,20.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,6.465,-0.3502],"size":[0.2338,0.0425,0.1063],"pivot":[0,6.5075,-0.3502],"rotation":[-57.5,0,0],"uv":{"north":{"uv":[21,24],"uv_size":[0.125,0.125]},"east":{"uv":[24,21],"uv_size":[0.125,0.125]},"south":{"uv":[22,24],"uv_size":[0.125,0.125]},"west":{"uv":[24,22],"uv_size":[0.125,0.125]},"up":{"uv":[23,24],"uv_size":[0.125,0.125]},"down":{"uv":[24,23.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,6.6101,-0.3939],"size":[0.2338,0.2762,0.1275],"pivot":[0,6.7482,-0.3089],"rotation":[-107.5,0,0],"uv":{"north":{"uv":[10,22],"uv_size":[0.125,0.25]},"east":{"uv":[22,10],"uv_size":[0.125,0.25]},"south":{"uv":[11,22],"uv_size":[0.125,0.25]},"west":{"uv":[22,11],"uv_size":[0.125,0.25]},"up":{"uv":[24,24],"uv_size":[0.125,0.125]},"down":{"uv":[0,25.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,6.7164,-0.0114],"size":[0.2338,0.1913,0.085],"pivot":[0,6.7482,-0.3089],"rotation":[-107.5,0,0],"uv":{"north":{"uv":[25,0],"uv_size":[0.125,0.125]},"east":{"uv":[1,25],"uv_size":[0.125,0.125]},"south":{"uv":[25,1],"uv_size":[0.125,0.125]},"west":{"uv":[2,25],"uv_size":[0.125,0.125]},"up":{"uv":[25,2],"uv_size":[0.125,0.125]},"down":{"uv":[3,25.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,6.1655,-0.3569],"size":[0.2338,0.17,0.085],"pivot":[0,6.3355,-0.2719],"rotation":[-75,0,0],"uv":{"north":{"uv":[25,3],"uv_size":[0.125,0.125]},"east":{"uv":[4,25],"uv_size":[0.125,0.125]},"south":{"uv":[25,4],"uv_size":[0.125,0.125]},"west":{"uv":[5,25],"uv_size":[0.125,0.125]},"up":{"uv":[25,5],"uv_size":[0.125,0.125]},"down":{"uv":[6,25.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,6.26,-0.4588],"size":[0.2338,0.1063,0.085],"pivot":[0,6.3025,-0.3951],"rotation":[-52.5,0,0],"uv":{"north":{"uv":[25,6],"uv_size":[0.125,0.125]},"east":{"uv":[7,25],"uv_size":[0.125,0.125]},"south":{"uv":[25,7],"uv_size":[0.125,0.125]},"west":{"uv":[8,25],"uv_size":[0.125,0.125]},"up":{"uv":[25,8],"uv_size":[0.125,0.125]},"down":{"uv":[9,25.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,6.6101,-0.2664],"size":[0.2338,0.1487,0.0638],"pivot":[0,6.7482,-0.3089],"rotation":[-107.5,0,0],"uv":{"north":{"uv":[25,9],"uv_size":[0.125,0.125]},"east":{"uv":[10,25],"uv_size":[0.125,0.125]},"south":{"uv":[25,10],"uv_size":[0.125,0.125]},"west":{"uv":[11,25],"uv_size":[0.125,0.125]},"up":{"uv":[25,11],"uv_size":[0.125,0.125]},"down":{"uv":[12,25.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,6.4112,-0.275],"size":[0.2338,0.255,0.085],"pivot":[0,6.6662,-0.19],"rotation":[-72.5,0,0],"uv":{"north":{"uv":[12,22],"uv_size":[0.125,0.25]},"east":{"uv":[22,12],"uv_size":[0.125,0.25]},"south":{"uv":[13,22],"uv_size":[0.125,0.25]},"west":{"uv":[22,13],"uv_size":[0.125,0.25]},"up":{"uv":[25,12],"uv_size":[0.125,0.125]},"down":{"uv":[13,25.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,7.485,-0.414],"size":[0.2338,0.595,0.68],"pivot":[0,7.74,-0.414],"rotation":[-72.5,0,0],"uv":{"north":{"uv":[19,18],"uv_size":[0.125,0.5]},"east":{"uv":[8,7],"uv_size":[0.5,0.5]},"south":{"uv":[19,19],"uv_size":[0.125,0.5]},"west":{"uv":[8,8],"uv_size":[0.5,0.5]},"up":{"uv":[0,20],"uv_size":[0.125,0.5]},"down":{"uv":[20,0.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.1169,7.4299,0.0125],"size":[0.2338,0.088,0.3284],"pivot":[0,7.5179,0.0125],"rotation":[-57.5,0,0],"uv":{"north":{"uv":[25,13],"uv_size":[0.125,0.125]},"east":{"uv":[14,22],"uv_size":[0.25,0.125]},"south":{"uv":[14,25],"uv_size":[0.125,0.125]},"west":{"uv":[22,14],"uv_size":[0.25,0.125]},"up":{"uv":[15,22],"uv_size":[0.125,0.25]},"down":{"uv":[22,15.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.1169,6.8971,-0.0181],"size":[0.2339,0.3643,0.17],"pivot":[0.0001,7.2173,0.1519],"rotation":[-44.5,0,0],"uv":{"north":{"uv":[16,22],"uv_size":[0.125,0.25]},"east":{"uv":[22,16],"uv_size":[0.125,0.25]},"south":{"uv":[17,22],"uv_size":[0.125,0.25]},"west":{"uv":[22,17],"uv_size":[0.125,0.25]},"up":{"uv":[25,14],"uv_size":[0.125,0.125]},"down":{"uv":[15,25.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,6.6064,-0.2426],"size":[0.2338,0.3825,0.17],"pivot":[0,6.9889,-0.0726],"rotation":[-67,0,0],"uv":{"north":{"uv":[18,22],"uv_size":[0.125,0.25]},"east":{"uv":[22,18],"uv_size":[0.125,0.25]},"south":{"uv":[19,22],"uv_size":[0.125,0.25]},"west":{"uv":[22,19],"uv_size":[0.125,0.25]},"up":{"uv":[25,15],"uv_size":[0.125,0.125]},"down":{"uv":[16,25.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1168,6.7742,-0.3219],"size":[0.2335,0.085,0.085],"pivot":[-0.0001,6.8592,-0.2369],"rotation":[30.5,0,0],"uv":{"north":{"uv":[25,16],"uv_size":[0.125,0.125]},"east":{"uv":[17,25],"uv_size":[0.125,0.125]},"south":{"uv":[25,17],"uv_size":[0.125,0.125]},"west":{"uv":[18,25],"uv_size":[0.125,0.125]},"up":{"uv":[25,18],"uv_size":[0.125,0.125]},"down":{"uv":[19,25.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,6.8162,-0.3991],"size":[0.2338,0.1062,0.17],"pivot":[0,6.9225,-0.2291],"rotation":[-7,0,0],"uv":{"north":{"uv":[25,19],"uv_size":[0.125,0.125]},"east":{"uv":[20,25],"uv_size":[0.125,0.125]},"south":{"uv":[25,20],"uv_size":[0.125,0.125]},"west":{"uv":[21,25],"uv_size":[0.125,0.125]},"up":{"uv":[25,21],"uv_size":[0.125,0.125]},"down":{"uv":[22,25.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,7.74,-0.5985],"size":[0.2339,0.34,0.539],"pivot":[-0.0145,8.08,-0.074],"rotation":[-103,0,0],"uv":{"north":{"uv":[20,22],"uv_size":[0.125,0.25]},"east":{"uv":[5,18],"uv_size":[0.375,0.25]},"south":{"uv":[22,20],"uv_size":[0.125,0.25]},"west":{"uv":[18,5],"uv_size":[0.375,0.25]},"up":{"uv":[21,4],"uv_size":[0.125,0.375]},"down":{"uv":[5,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1169,7.57,-0.669],"size":[0.2338,0.34,0.51],"pivot":[0,7.91,-0.669],"rotation":[-130.75,0,0],"uv":{"north":{"uv":[21,22],"uv_size":[0.125,0.25]},"east":{"uv":[6,18],"uv_size":[0.375,0.25]},"south":{"uv":[22,21],"uv_size":[0.125,0.25]},"west":{"uv":[18,6],"uv_size":[0.375,0.25]},"up":{"uv":[21,5],"uv_size":[0.125,0.375]},"down":{"uv":[6,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.117,7.1836,-1.0019],"size":[0.2339,0.0638,0.51],"pivot":[0.0001,7.5236,-1.0019],"rotation":[-162.25,0,0],"uv":{"north":{"uv":[25,22],"uv_size":[0.125,0.125]},"east":{"uv":[21,6],"uv_size":[0.375,0.125]},"south":{"uv":[23,25],"uv_size":[0.125,0.125]},"west":{"uv":[7,21],"uv_size":[0.375,0.125]},"up":{"uv":[21,7],"uv_size":[0.125,0.375]},"down":{"uv":[8,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1169,7.525,-1.8268],"size":[0.2338,0.1062,0.255],"pivot":[0,7.6312,-1.5718],"rotation":[142.75,0,0],"uv":{"north":{"uv":[25,23],"uv_size":[0.125,0.125]},"east":{"uv":[22,22],"uv_size":[0.25,0.125]},"south":{"uv":[24,25],"uv_size":[0.125,0.125]},"west":{"uv":[0,23],"uv_size":[0.25,0.125]},"up":{"uv":[23,0],"uv_size":[0.125,0.25]},"down":{"uv":[1,23.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.1168,7.7475,-1.6731],"size":[0.2336,0.34,0.51],"pivot":[-0.0001,7.7475,-1.1631],"rotation":[126,0,0],"uv":{"north":{"uv":[23,1],"uv_size":[0.125,0.25]},"east":{"uv":[7,18],"uv_size":[0.375,0.25]},"south":{"uv":[2,23],"uv_size":[0.125,0.25]},"west":{"uv":[18,7],"uv_size":[0.375,0.25]},"up":{"uv":[21,8],"uv_size":[0.125,0.375]},"down":{"uv":[9,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1169,7.3349,-1.3733],"size":[0.2338,0.34,0.51],"pivot":[0,7.3349,-0.8633],"rotation":[106,0,0],"uv":{"north":{"uv":[23,2],"uv_size":[0.125,0.25]},"east":{"uv":[8,18],"uv_size":[0.375,0.25]},"south":{"uv":[3,23],"uv_size":[0.125,0.25]},"west":{"uv":[18,8],"uv_size":[0.375,0.25]},"up":{"uv":[21,9],"uv_size":[0.125,0.375]},"down":{"uv":[10,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1169,6.8447,-1.2327],"size":[0.2338,0.34,0.51],"pivot":[0,6.8447,-0.7227],"rotation":[89,0,0],"uv":{"north":{"uv":[23,3],"uv_size":[0.125,0.25]},"east":{"uv":[9,18],"uv_size":[0.375,0.25]},"south":{"uv":[4,23],"uv_size":[0.125,0.25]},"west":{"uv":[18,9],"uv_size":[0.375,0.25]},"up":{"uv":[21,10],"uv_size":[0.125,0.375]},"down":{"uv":[11,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1169,6.3347,-1.4116],"size":[0.2338,0.34,0.68],"pivot":[0,6.3347,-0.7316],"rotation":[79,0,0],"uv":{"north":{"uv":[23,4],"uv_size":[0.125,0.25]},"east":{"uv":[15,9],"uv_size":[0.5,0.25]},"south":{"uv":[5,23],"uv_size":[0.125,0.25]},"west":{"uv":[10,15],"uv_size":[0.5,0.25]},"up":{"uv":[1,20],"uv_size":[0.125,0.5]},"down":{"uv":[20,1.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.1169,5.6672,-1.5413],"size":[0.2338,0.34,0.68],"pivot":[0,5.6672,-0.8613],"rotation":[69,0,0],"uv":{"north":{"uv":[23,5],"uv_size":[0.125,0.25]},"east":{"uv":[15,10],"uv_size":[0.5,0.25]},"south":{"uv":[6,23],"uv_size":[0.125,0.25]},"west":{"uv":[11,15],"uv_size":[0.5,0.25]},"up":{"uv":[2,20],"uv_size":[0.125,0.5]},"down":{"uv":[20,2.5],"uv_size":[0.125,-0.5]}}},{"origin":[-0.1169,5.2874,-1.9338],"size":[0.2338,0.085,0.8287],"pivot":[0,5.0324,-1.1051],"rotation":[62,0,0],"uv":{"north":{"uv":[25,24],"uv_size":[0.125,0.125]},"east":{"uv":[17,18],"uv_size":[0.625,0.125]},"south":{"uv":[25,25],"uv_size":[0.125,0.125]},"west":{"uv":[18,17],"uv_size":[0.625,0.125]},"up":{"uv":[18,18],"uv_size":[0.125,0.625]},"down":{"uv":[0,19.625],"uv_size":[0.125,-0.625]}}},{"origin":[-0.1169,5.3299,-2.0188],"size":[0.2338,0.0425,0.085],"pivot":[0,5.0324,-1.1051],"rotation":[62,0,0],"uv":{"north":{"uv":[0,26],"uv_size":[0.125,0.125]},"east":{"uv":[26,0],"uv_size":[0.125,0.125]},"south":{"uv":[1,26],"uv_size":[0.125,0.125]},"west":{"uv":[26,1],"uv_size":[0.125,0.125]},"up":{"uv":[2,26],"uv_size":[0.125,0.125]},"down":{"uv":[26,2.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,5.3511,-2.0825],"size":[0.2338,0.0213,0.0638],"pivot":[0,5.0324,-1.1051],"rotation":[62,0,0],"uv":{"north":{"uv":[3,26],"uv_size":[0.125,0.125]},"east":{"uv":[26,3],"uv_size":[0.125,0.125]},"south":{"uv":[4,26],"uv_size":[0.125,0.125]},"west":{"uv":[26,4],"uv_size":[0.125,0.125]},"up":{"uv":[5,26],"uv_size":[0.125,0.125]},"down":{"uv":[26,5.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1168,4.4204,-1.7193],"size":[0.2336,0.085,0.51],"pivot":[-0.0001,4.4204,-1.7193],"rotation":[36.5,0,0],"uv":{"north":{"uv":[6,26],"uv_size":[0.125,0.125]},"east":{"uv":[21,11],"uv_size":[0.375,0.125]},"south":{"uv":[26,6],"uv_size":[0.125,0.125]},"west":{"uv":[12,21],"uv_size":[0.375,0.125]},"up":{"uv":[21,12],"uv_size":[0.125,0.375]},"down":{"uv":[13,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1169,4.4204,-1.8255],"size":[0.2338,0.0425,0.1063],"pivot":[0,4.4204,-1.7193],"rotation":[36.5,0,0],"uv":{"north":{"uv":[7,26],"uv_size":[0.125,0.125]},"east":{"uv":[26,7],"uv_size":[0.125,0.125]},"south":{"uv":[8,26],"uv_size":[0.125,0.125]},"west":{"uv":[26,8],"uv_size":[0.125,0.125]},"up":{"uv":[9,26],"uv_size":[0.125,0.125]},"down":{"uv":[26,9.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,4.4204,-1.868],"size":[0.2338,0.0212,0.0425],"pivot":[0,4.4204,-1.7193],"rotation":[36.5,0,0],"uv":{"north":{"uv":[10,26],"uv_size":[0.125,0.125]},"east":{"uv":[26,10],"uv_size":[0.125,0.125]},"south":{"uv":[11,26],"uv_size":[0.125,0.125]},"west":{"uv":[26,11],"uv_size":[0.125,0.125]},"up":{"uv":[12,26],"uv_size":[0.125,0.125]},"down":{"uv":[26,12.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1168,4.7237,-1.3093],"size":[0.2336,0.255,0.765],"pivot":[-0.0001,4.7237,-1.3093],"rotation":[45.25,0,0],"uv":{"north":{"uv":[23,6],"uv_size":[0.125,0.25]},"east":{"uv":[13,2],"uv_size":[0.625,0.25]},"south":{"uv":[7,23],"uv_size":[0.125,0.25]},"west":{"uv":[3,13],"uv_size":[0.625,0.25]},"up":{"uv":[19,0],"uv_size":[0.125,0.625]},"down":{"uv":[1,19.625],"uv_size":[0.125,-0.625]}}},{"origin":[-0.1169,5.2702,-0.7707],"size":[0.2338,0.3368,0.5447],"pivot":[0,5.267,-0.7707],"rotation":[48.75,0,0],"uv":{"north":{"uv":[23,7],"uv_size":[0.125,0.25]},"east":{"uv":[10,18],"uv_size":[0.375,0.25]},"south":{"uv":[8,23],"uv_size":[0.125,0.25]},"west":{"uv":[18,10],"uv_size":[0.375,0.25]},"up":{"uv":[21,13],"uv_size":[0.125,0.375]},"down":{"uv":[14,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1169,5.2702,-0.226],"size":[0.2338,0.3368,0.2975],"pivot":[0,5.267,-0.7707],"rotation":[48.75,0,0],"uv":{"north":{"uv":[23,8],"uv_size":[0.125,0.25]},"east":{"uv":[3,20],"uv_size":[0.25,0.25]},"south":{"uv":[9,23],"uv_size":[0.125,0.25]},"west":{"uv":[20,3],"uv_size":[0.25,0.25]},"up":{"uv":[23,9],"uv_size":[0.125,0.25]},"down":{"uv":[10,23.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.1169,5.9061,-0.3378],"size":[0.2338,0.2337,0.1275],"pivot":[0,5.9061,-0.2103],"rotation":[11.75,0,0],"uv":{"north":{"uv":[13,26],"uv_size":[0.125,0.125]},"east":{"uv":[26,13],"uv_size":[0.125,0.125]},"south":{"uv":[14,26],"uv_size":[0.125,0.125]},"west":{"uv":[26,14],"uv_size":[0.125,0.125]},"up":{"uv":[15,26],"uv_size":[0.125,0.125]},"down":{"uv":[26,15.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,5.2024,-1.6788],"size":[0.2339,0.085,0.5737],"pivot":[0.0001,5.0324,-1.1051],"rotation":[62,0,0],"uv":{"north":{"uv":[16,26],"uv_size":[0.125,0.125]},"east":{"uv":[21,14],"uv_size":[0.375,0.125]},"south":{"uv":[26,16],"uv_size":[0.125,0.125]},"west":{"uv":[15,21],"uv_size":[0.375,0.125]},"up":{"uv":[21,15],"uv_size":[0.125,0.375]},"down":{"uv":[16,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1169,5.1174,-1.3813],"size":[0.2338,0.085,0.2762],"pivot":[0,5.0324,-1.1051],"rotation":[62,0,0],"uv":{"north":{"uv":[17,26],"uv_size":[0.125,0.125]},"east":{"uv":[23,10],"uv_size":[0.25,0.125]},"south":{"uv":[26,17],"uv_size":[0.125,0.125]},"west":{"uv":[11,23],"uv_size":[0.25,0.125]},"up":{"uv":[23,11],"uv_size":[0.125,0.25]},"down":{"uv":[12,23.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.1169,4.4204,-1.7193],"size":[0.2338,0.085,0.8671],"pivot":[0,4.4204,-1.7193],"rotation":[44.8973,0,0],"uv":{"north":{"uv":[18,26],"uv_size":[0.125,0.125]},"east":{"uv":[19,1],"uv_size":[0.625,0.125]},"south":{"uv":[26,18],"uv_size":[0.125,0.125]},"west":{"uv":[2,19],"uv_size":[0.625,0.125]},"up":{"uv":[19,2],"uv_size":[0.125,0.625]},"down":{"uv":[3,19.625],"uv_size":[0.125,-0.625]}}},{"origin":[-0.1169,7.3337,-1.8268],"size":[0.2338,0.1063,0.1275],"pivot":[0,7.6312,-1.5718],"rotation":[142.75,0,0],"uv":{"north":{"uv":[19,26],"uv_size":[0.125,0.125]},"east":{"uv":[26,19],"uv_size":[0.125,0.125]},"south":{"uv":[20,26],"uv_size":[0.125,0.125]},"west":{"uv":[26,20],"uv_size":[0.125,0.125]},"up":{"uv":[21,26],"uv_size":[0.125,0.125]},"down":{"uv":[26,21.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1169,7.44,-1.8268],"size":[0.2338,0.085,0.1912],"pivot":[0,7.6312,-1.5718],"rotation":[142.75,0,0],"uv":{"north":{"uv":[22,26],"uv_size":[0.125,0.125]},"east":{"uv":[26,22],"uv_size":[0.125,0.125]},"south":{"uv":[23,26],"uv_size":[0.125,0.125]},"west":{"uv":[26,23],"uv_size":[0.125,0.125]},"up":{"uv":[24,26],"uv_size":[0.125,0.125]},"down":{"uv":[26,24.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1168,8.9284,-2.2707],"size":[0.2336,0.34,0.51],"pivot":[-0.0001,9.2684,-1.7607],"rotation":[36,0,0],"uv":{"north":{"uv":[23,12],"uv_size":[0.125,0.25]},"east":{"uv":[11,18],"uv_size":[0.375,0.25]},"south":{"uv":[13,23],"uv_size":[0.125,0.25]},"west":{"uv":[18,11],"uv_size":[0.375,0.25]},"up":{"uv":[21,16],"uv_size":[0.125,0.375]},"down":{"uv":[17,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1168,8.8836,-2.6408],"size":[0.2336,0.085,0.4675],"pivot":[-0.0001,8.9687,-2.1733],"rotation":[55.5,0,0],"uv":{"north":{"uv":[25,26],"uv_size":[0.125,0.125]},"east":{"uv":[21,17],"uv_size":[0.375,0.125]},"south":{"uv":[26,25],"uv_size":[0.125,0.125]},"west":{"uv":[18,21],"uv_size":[0.375,0.125]},"up":{"uv":[21,18],"uv_size":[0.125,0.375]},"down":{"uv":[19,21.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1169,8.7774,-2.3858],"size":[0.2338,0.1062,0.2125],"pivot":[0,8.9687,-2.1733],"rotation":[55.5,0,0],"uv":{"north":{"uv":[26,26],"uv_size":[0.125,0.125]},"east":{"uv":[0,27],"uv_size":[0.125,0.125]},"south":{"uv":[27,0],"uv_size":[0.125,0.125]},"west":{"uv":[1,27],"uv_size":[0.125,0.125]},"up":{"uv":[27,1],"uv_size":[0.125,0.125]},"down":{"uv":[2,27.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,8.5352,-2.368],"size":[0.2339,0.1063,0.4038],"pivot":[0.0001,8.5352,-2.368],"rotation":[17.75,0,0],"uv":{"north":{"uv":[27,2],"uv_size":[0.125,0.125]},"east":{"uv":[23,13],"uv_size":[0.25,0.125]},"south":{"uv":[3,27],"uv_size":[0.125,0.125]},"west":{"uv":[14,23],"uv_size":[0.25,0.125]},"up":{"uv":[23,14],"uv_size":[0.125,0.25]},"down":{"uv":[15,23.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.1169,8.6415,-2.283],"size":[0.2338,0.0637,0.34],"pivot":[0,8.5352,-2.368],"rotation":[17.75,0,0],"uv":{"north":{"uv":[27,3],"uv_size":[0.125,0.125]},"east":{"uv":[23,15],"uv_size":[0.25,0.125]},"south":{"uv":[4,27],"uv_size":[0.125,0.125]},"west":{"uv":[16,23],"uv_size":[0.25,0.125]},"up":{"uv":[23,16],"uv_size":[0.125,0.25]},"down":{"uv":[17,23.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.117,8.6583,-2.0047],"size":[0.2339,0.17,0.2658],"pivot":[0.0001,8.6583,-1.9835],"rotation":[3.8783,0,0],"uv":{"north":{"uv":[27,4],"uv_size":[0.125,0.125]},"east":{"uv":[23,17],"uv_size":[0.25,0.125]},"south":{"uv":[5,27],"uv_size":[0.125,0.125]},"west":{"uv":[18,23],"uv_size":[0.25,0.125]},"up":{"uv":[23,18],"uv_size":[0.125,0.25]},"down":{"uv":[19,23.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.117,7.6043,-1.5097],"size":[0.1654,0.1654,0.4163],"inflate":-0.001,"pivot":[-0.117,7.7697,-1.3484],"rotation":[-167.2462,-12.4491,43.6033],"uv":{"east":{"uv":[32,32],"uv_size":[0.375,0.125]},"south":{"uv":[35,34],"uv_size":[0.125,0.125]},"down":{"uv":[32,33.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1169,7.7734,-1.223],"size":[0.1653,0.1653,0.2913],"pivot":[-0.1169,7.9387,-1.093],"rotation":[-140.6264,-32.39,33.1349],"uv":{"east":{"uv":[34,34],"uv_size":[0.25,0.125]},"down":{"uv":[32,35.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.117,7.9714,-1.139],"size":[0.1654,0.1654,0.2444],"pivot":[-0.117,8.1368,-1.009],"rotation":[-90,-45,0],"uv":{"east":{"uv":[35,32],"uv_size":[0.25,0.125]},"down":{"uv":[33,35.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.1169,8.2001,-1.2707],"size":[0.1653,0.1653,0.3225],"pivot":[-0.1169,8.3654,-1.0938],"rotation":[-41.6357,-33.5997,-31.9029],"uv":{"east":{"uv":[33,32],"uv_size":[0.375,0.125]},"down":{"uv":[33,33.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.1169,8.4044,-1.6127],"size":[0.1653,0.1653,0.4319],"pivot":[-0.1169,8.5697,-1.3577],"rotation":[-17.4753,-16.7147,-42.4131],"uv":{"east":{"uv":[32,34],"uv_size":[0.375,0.125]},"down":{"uv":[34,32.375],"uv_size":[0.125,-0.375]}}},{"origin":[-0.117,8.508,-1.7607],"size":[0.1654,0.1654,0.175],"pivot":[-0.117,8.6734,-1.6654],"rotation":[0,0,-45],"uv":{"east":{"uv":[35,35],"uv_size":[0.125,0.125]},"down":{"uv":[32,36.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,8.5005,-1.9894],"size":[0.1654,0.1654,0.2346],"pivot":[-0.117,8.6659,-1.8721],"rotation":[2.7445,2.7413,-44.9343],"uv":{"east":{"uv":[35,33],"uv_size":[0.25,0.125]},"down":{"uv":[34,35.25],"uv_size":[0.125,-0.25]}}},{"origin":[-0.117,8.4314,-2.3776],"size":[0.1654,0.1654,0.4038],"pivot":[-0.117,8.5968,-2.1757],"rotation":[12.7538,12.4491,-43.6033],"uv":{"north":{"uv":[36,32],"uv_size":[0.125,0.125]},"east":{"uv":[33,34],"uv_size":[0.375,0.125]},"down":{"uv":[34,33.375],"uv_size":[0.125,-0.375]}}}]},{"name":"group6","parent":"group2","pivot":[-0.0246,7.8376,-1.6658],"cubes":[{"origin":[-0.1217,7.722,-0.8712],"size":[0.2435,0.3323,0.0464],"pivot":[-0.0202,7.8376,-0.64],"rotation":[-50,0,0],"uv":{"north":{"uv":[27,7],"uv_size":[0.125,0.5]},"east":{"uv":[8,27],"uv_size":[0.125,0.5]},"south":{"uv":[27,8],"uv_size":[0.125,0.5]},"west":{"uv":[9,27],"uv_size":[0.125,0.5]},"up":{"uv":[27,9],"uv_size":[0.125,0.125]},"down":{"uv":[10,27.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1217,7.6166,-0.4952],"size":[0.2435,0.3323,0.0464],"pivot":[-0.0202,7.4432,-0.6108],"rotation":[40,0,0],"uv":{"north":{"uv":[27,7],"uv_size":[0.125,0.5]},"east":{"uv":[8,27],"uv_size":[0.125,0.5]},"south":{"uv":[27,8],"uv_size":[0.125,0.5]},"west":{"uv":[9,27],"uv_size":[0.125,0.5]},"up":{"uv":[27,9],"uv_size":[0.125,0.125]},"down":{"uv":[10,27.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1217,7.7629,-0.4981],"size":[0.2435,0.3323,0.0464],"pivot":[-0.0202,7.8785,-0.6138],"rotation":[-50,0,0],"uv":{"north":{"uv":[27,7],"uv_size":[0.125,0.5]},"east":{"uv":[8,27],"uv_size":[0.125,0.5]},"south":{"uv":[27,8],"uv_size":[0.125,0.5]},"west":{"uv":[9,27],"uv_size":[0.125,0.5]},"up":{"uv":[27,9],"uv_size":[0.125,0.125]},"down":{"uv":[10,27.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1217,7.8657,-0.2704],"size":[0.2435,0.3323,0.0464],"pivot":[-0.0202,7.6923,-0.386],"rotation":[40,0,0],"uv":{"north":{"uv":[27,7],"uv_size":[0.125,0.5]},"east":{"uv":[8,27],"uv_size":[0.125,0.5]},"south":{"uv":[27,8],"uv_size":[0.125,0.5]},"west":{"uv":[9,27],"uv_size":[0.125,0.5]},"up":{"uv":[27,9],"uv_size":[0.125,0.125]},"down":{"uv":[10,27.125],"uv_size":[0.125,-0.125]}}}]},{"name":"group5","parent":"group2","pivot":[0,5.6672,-1.8872],"cubes":[{"origin":[-0.117,4.8973,-1.1898],"size":[0.2341,0.398,0.0417],"pivot":[-0.1169,4.9553,-1.1481],"rotation":[69,0,0],"uv":{"north":{"uv":[27,10],"uv_size":[0.125,0.25]},"east":{"uv":[11,27],"uv_size":[0.125,0.25]},"south":{"uv":[27,11],"uv_size":[0.125,0.25]},"west":{"uv":[12,27],"uv_size":[0.125,0.25]},"up":{"uv":[23,28],"uv_size":[0.125,0.125]},"down":{"uv":[28,23.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,4.9616,-1.2479],"size":[0.2339,0.253,0.0417],"pivot":[-0.117,5.2808,-1.2062],"rotation":[58.75,0,0],"uv":{"north":{"uv":[24,28],"uv_size":[0.125,0.125]},"east":{"uv":[28,24],"uv_size":[0.125,0.125]},"south":{"uv":[25,28],"uv_size":[0.125,0.125]},"west":{"uv":[28,25],"uv_size":[0.125,0.125]},"up":{"uv":[26,28],"uv_size":[0.125,0.125]},"down":{"uv":[28,26.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,5.1559,-0.9906],"size":[0.2339,0.1369,0.0417],"pivot":[-0.117,5.3589,-0.9489],"rotation":[54.5,0,0],"uv":{"north":{"uv":[27,28],"uv_size":[0.125,0.125]},"east":{"uv":[28,27],"uv_size":[0.125,0.125]},"south":{"uv":[28,28],"uv_size":[0.125,0.125]},"west":{"uv":[0,29],"uv_size":[0.125,0.125]},"up":{"uv":[29,0],"uv_size":[0.125,0.125]},"down":{"uv":[1,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,5.3441,-0.8466],"size":[0.2339,0.1369,0.0417],"pivot":[-0.117,5.5472,-0.8049],"rotation":[64,0,0],"uv":{"north":{"uv":[29,1],"uv_size":[0.125,0.125]},"east":{"uv":[2,29],"uv_size":[0.125,0.125]},"south":{"uv":[29,2],"uv_size":[0.125,0.125]},"west":{"uv":[3,29],"uv_size":[0.125,0.125]},"up":{"uv":[29,3],"uv_size":[0.125,0.125]},"down":{"uv":[4,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1176,4.9565,-1.5091],"size":[0.2353,0.2384,0.0417],"pivot":[-0.1163,5.2756,-1.4674],"rotation":[84.75,0,0],"uv":{"north":{"uv":[29,4],"uv_size":[0.125,0.125]},"east":{"uv":[5,29],"uv_size":[0.125,0.125]},"south":{"uv":[29,5],"uv_size":[0.125,0.125]},"west":{"uv":[6,29],"uv_size":[0.125,0.125]},"up":{"uv":[29,6],"uv_size":[0.125,0.125]},"down":{"uv":[7,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,4.8985,-1.277],"size":[0.2339,0.3255,0.0417],"pivot":[-0.117,5.2466,-1.2353],"rotation":[102.25,0,0],"uv":{"north":{"uv":[27,12],"uv_size":[0.125,0.25]},"east":{"uv":[13,27],"uv_size":[0.125,0.25]},"south":{"uv":[27,13],"uv_size":[0.125,0.25]},"west":{"uv":[14,27],"uv_size":[0.125,0.25]},"up":{"uv":[29,7],"uv_size":[0.125,0.125]},"down":{"uv":[8,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,5.24,-1.1594],"size":[0.2339,0.1804,0.0417],"pivot":[-0.117,5.5882,-1.1177],"rotation":[39.75,0,0],"uv":{"north":{"uv":[29,8],"uv_size":[0.125,0.125]},"east":{"uv":[9,29],"uv_size":[0.125,0.125]},"south":{"uv":[29,9],"uv_size":[0.125,0.125]},"west":{"uv":[10,29],"uv_size":[0.125,0.125]},"up":{"uv":[29,10],"uv_size":[0.125,0.125]},"down":{"uv":[11,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,4.9707,-1.2609],"size":[0.2339,0.311,0.0417],"pivot":[-0.117,5.4495,-1.2192],"rotation":[98.25,0,0],"uv":{"north":{"uv":[27,14],"uv_size":[0.125,0.25]},"east":{"uv":[15,27],"uv_size":[0.125,0.25]},"south":{"uv":[27,15],"uv_size":[0.125,0.25]},"west":{"uv":[16,27],"uv_size":[0.125,0.25]},"up":{"uv":[29,11],"uv_size":[0.125,0.125]},"down":{"uv":[12,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,5.5008,-0.9151],"size":[0.2341,0.282,0.0417],"pivot":[-0.1169,5.9795,-0.8734],"rotation":[15.5,0,0],"uv":{"north":{"uv":[27,16],"uv_size":[0.125,0.25]},"east":{"uv":[17,27],"uv_size":[0.125,0.25]},"south":{"uv":[27,17],"uv_size":[0.125,0.25]},"west":{"uv":[18,27],"uv_size":[0.125,0.25]},"up":{"uv":[29,12],"uv_size":[0.125,0.125]},"down":{"uv":[13,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,5.6752,-1.1734],"size":[0.2341,0.311,0.0417],"pivot":[-0.1169,6.1539,-1.1317],"rotation":[40.5,0,0],"uv":{"north":{"uv":[27,18],"uv_size":[0.125,0.25]},"east":{"uv":[19,27],"uv_size":[0.125,0.25]},"south":{"uv":[27,19],"uv_size":[0.125,0.25]},"west":{"uv":[20,27],"uv_size":[0.125,0.25]},"up":{"uv":[29,13],"uv_size":[0.125,0.125]},"down":{"uv":[14,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,5.8974,-1.2104],"size":[0.2341,0.1514,0.0417],"pivot":[-0.1169,6.3761,-1.1687],"rotation":[58,0,0],"uv":{"north":{"uv":[29,14],"uv_size":[0.125,0.125]},"east":{"uv":[15,29],"uv_size":[0.125,0.125]},"south":{"uv":[29,15],"uv_size":[0.125,0.125]},"west":{"uv":[16,29],"uv_size":[0.125,0.125]},"up":{"uv":[29,16],"uv_size":[0.125,0.125]},"down":{"uv":[17,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,5.8479,-1.3953],"size":[0.2341,0.2094,0.0417],"pivot":[-0.1169,6.3266,-1.3536],"rotation":[75,0,0],"uv":{"north":{"uv":[29,17],"uv_size":[0.125,0.125]},"east":{"uv":[18,29],"uv_size":[0.125,0.125]},"south":{"uv":[29,18],"uv_size":[0.125,0.125]},"west":{"uv":[19,29],"uv_size":[0.125,0.125]},"up":{"uv":[29,19],"uv_size":[0.125,0.125]},"down":{"uv":[20,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,5.4383,-0.9343],"size":[0.2341,0.2675,0.0417],"pivot":[-0.1169,5.7575,-0.8926],"rotation":[122.5,0,0],"uv":{"north":{"uv":[27,20],"uv_size":[0.125,0.25]},"east":{"uv":[21,27],"uv_size":[0.125,0.25]},"south":{"uv":[27,21],"uv_size":[0.125,0.25]},"west":{"uv":[22,27],"uv_size":[0.125,0.25]},"up":{"uv":[29,20],"uv_size":[0.125,0.125]},"down":{"uv":[21,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,5.8688,-0.8516],"size":[0.2341,0.2385,0.0417],"pivot":[-0.1169,6.188,-0.8099],"rotation":[35.75,0,0],"uv":{"north":{"uv":[29,21],"uv_size":[0.125,0.125]},"east":{"uv":[22,29],"uv_size":[0.125,0.125]},"south":{"uv":[29,22],"uv_size":[0.125,0.125]},"west":{"uv":[23,29],"uv_size":[0.125,0.125]},"up":{"uv":[29,23],"uv_size":[0.125,0.125]},"down":{"uv":[24,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,5.7636,-0.8747],"size":[0.2341,0.2384,0.0417],"pivot":[-0.1169,6.0827,-0.833],"rotation":[119.5,0,0],"uv":{"north":{"uv":[29,24],"uv_size":[0.125,0.125]},"east":{"uv":[25,29],"uv_size":[0.125,0.125]},"south":{"uv":[29,25],"uv_size":[0.125,0.125]},"west":{"uv":[26,29],"uv_size":[0.125,0.125]},"up":{"uv":[29,26],"uv_size":[0.125,0.125]},"down":{"uv":[27,29.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,6.0055,-0.6758],"size":[0.2341,0.1369,0.0417],"pivot":[-0.1169,6.2231,-0.6341],"rotation":[102,0,0],"uv":{"north":{"uv":[29,27],"uv_size":[0.125,0.125]},"east":{"uv":[28,29],"uv_size":[0.125,0.125]},"south":{"uv":[29,28],"uv_size":[0.125,0.125]},"west":{"uv":[29,29],"uv_size":[0.125,0.125]},"up":{"uv":[0,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,0.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,6.273,-0.5888],"size":[0.2341,0.3019,0.0417],"pivot":[-0.1169,6.5196,-0.5471],"rotation":[77,0,0],"uv":{"north":{"uv":[27,22],"uv_size":[0.125,0.25]},"east":{"uv":[23,27],"uv_size":[0.125,0.25]},"south":{"uv":[27,23],"uv_size":[0.125,0.25]},"west":{"uv":[24,27],"uv_size":[0.125,0.25]},"up":{"uv":[1,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,1.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,6.4223,-0.8165],"size":[0.2341,0.2149,0.0417],"pivot":[-0.1169,6.6399,-0.7748],"rotation":[58.75,0,0],"uv":{"north":{"uv":[2,30],"uv_size":[0.125,0.125]},"east":{"uv":[30,2],"uv_size":[0.125,0.125]},"south":{"uv":[3,30],"uv_size":[0.125,0.125]},"west":{"uv":[30,3],"uv_size":[0.125,0.125]},"up":{"uv":[4,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,4.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,6.3852,-0.8165],"size":[0.2341,0.2729,0.0417],"pivot":[-0.1169,6.6463,-0.7748],"rotation":[124.25,0,0],"uv":{"north":{"uv":[27,24],"uv_size":[0.125,0.25]},"east":{"uv":[25,27],"uv_size":[0.125,0.25]},"south":{"uv":[27,25],"uv_size":[0.125,0.25]},"west":{"uv":[26,27],"uv_size":[0.125,0.25]},"up":{"uv":[5,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,5.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,6.7107,-0.7729],"size":[0.2341,0.3745,0.0417],"pivot":[-0.1169,6.9863,-0.7312],"rotation":[44.25,0,0],"uv":{"north":{"uv":[27,26],"uv_size":[0.125,0.25]},"east":{"uv":[27,27],"uv_size":[0.125,0.25]},"south":{"uv":[0,28],"uv_size":[0.125,0.25]},"west":{"uv":[28,0],"uv_size":[0.125,0.25]},"up":{"uv":[6,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,6.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,7.0507,-0.7729],"size":[0.2341,0.1568,0.0417],"pivot":[-0.1169,7.1087,-0.7312],"rotation":[114,0,0],"uv":{"north":{"uv":[7,30],"uv_size":[0.125,0.125]},"east":{"uv":[30,7],"uv_size":[0.125,0.125]},"south":{"uv":[8,30],"uv_size":[0.125,0.125]},"west":{"uv":[30,8],"uv_size":[0.125,0.125]},"up":{"uv":[9,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,9.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,6.8818,-0.6228],"size":[0.2341,0.3309,0.0417],"pivot":[-0.1169,7.1139,-0.5811],"rotation":[79.25,0,0],"uv":{"north":{"uv":[1,28],"uv_size":[0.125,0.25]},"east":{"uv":[28,1],"uv_size":[0.125,0.25]},"south":{"uv":[2,28],"uv_size":[0.125,0.25]},"west":{"uv":[28,2],"uv_size":[0.125,0.25]},"up":{"uv":[10,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,10.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,6.919,-0.3199],"size":[0.2341,0.1859,0.0417],"pivot":[-0.1169,7.0061,-0.2782],"rotation":[49.25,0,0],"uv":{"north":{"uv":[11,30],"uv_size":[0.125,0.125]},"east":{"uv":[30,11],"uv_size":[0.125,0.125]},"south":{"uv":[12,30],"uv_size":[0.125,0.125]},"west":{"uv":[30,12],"uv_size":[0.125,0.125]},"up":{"uv":[13,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,13.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,6.8606,-0.303],"size":[0.2341,0.3454,0.0417],"pivot":[-0.1169,7.1072,-0.2613],"rotation":[111.75,0,0],"uv":{"north":{"uv":[3,28],"uv_size":[0.125,0.25]},"east":{"uv":[28,3],"uv_size":[0.125,0.25]},"south":{"uv":[4,28],"uv_size":[0.125,0.25]},"west":{"uv":[28,4],"uv_size":[0.125,0.25]},"up":{"uv":[14,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,14.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,7.051,-0.4439],"size":[0.2341,0.2584,0.0417],"pivot":[-0.1169,7.2395,-0.4022],"rotation":[19.25,0,0],"uv":{"north":{"uv":[5,28],"uv_size":[0.125,0.25]},"east":{"uv":[28,5],"uv_size":[0.125,0.25]},"south":{"uv":[6,28],"uv_size":[0.125,0.25]},"west":{"uv":[28,6],"uv_size":[0.125,0.25]},"up":{"uv":[15,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,15.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,7.1988,-0.6367],"size":[0.2341,0.3019,0.0417],"pivot":[-0.1169,7.3874,-0.595],"rotation":[64.25,0,0],"uv":{"north":{"uv":[7,28],"uv_size":[0.125,0.25]},"east":{"uv":[28,7],"uv_size":[0.125,0.25]},"south":{"uv":[8,28],"uv_size":[0.125,0.25]},"west":{"uv":[28,8],"uv_size":[0.125,0.25]},"up":{"uv":[16,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,16.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,7.2072,-0.9229],"size":[0.2341,0.2439,0.0417],"pivot":[-0.1169,7.3958,-0.8812],"rotation":[102.5,0,0],"uv":{"north":{"uv":[17,30],"uv_size":[0.125,0.125]},"east":{"uv":[30,17],"uv_size":[0.125,0.125]},"south":{"uv":[18,30],"uv_size":[0.125,0.125]},"west":{"uv":[30,18],"uv_size":[0.125,0.125]},"up":{"uv":[19,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,19.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1171,7.0508,-1.0981],"size":[0.2342,0.2874,0.0417],"pivot":[-0.1168,7.2394,-1.0564],"rotation":[140,0,0],"uv":{"north":{"uv":[9,28],"uv_size":[0.125,0.25]},"east":{"uv":[28,9],"uv_size":[0.125,0.25]},"south":{"uv":[10,28],"uv_size":[0.125,0.25]},"west":{"uv":[28,10],"uv_size":[0.125,0.25]},"up":{"uv":[20,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,20.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,7.2892,-1.0981],"size":[0.2341,0.2004,0.0417],"pivot":[-0.1169,7.3908,-1.0564],"rotation":[-128,0,0],"uv":{"north":{"uv":[21,30],"uv_size":[0.125,0.125]},"east":{"uv":[30,21],"uv_size":[0.125,0.125]},"south":{"uv":[22,30],"uv_size":[0.125,0.125]},"west":{"uv":[30,22],"uv_size":[0.125,0.125]},"up":{"uv":[23,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,23.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,7.2602,-1.253],"size":[0.2341,0.2874,0.0417],"pivot":[-0.1169,7.4488,-1.2113],"rotation":[-92.5,0,0],"uv":{"north":{"uv":[11,28],"uv_size":[0.125,0.25]},"east":{"uv":[28,11],"uv_size":[0.125,0.25]},"south":{"uv":[12,28],"uv_size":[0.125,0.25]},"west":{"uv":[28,12],"uv_size":[0.125,0.25]},"up":{"uv":[24,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,24.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1171,6.9196,-1.0719],"size":[0.2342,0.2004,0.0417],"pivot":[-0.1168,7.1807,-1.0302],"rotation":[61.75,0,0],"uv":{"north":{"uv":[25,30],"uv_size":[0.125,0.125]},"east":{"uv":[30,25],"uv_size":[0.125,0.125]},"south":{"uv":[26,30],"uv_size":[0.125,0.125]},"west":{"uv":[30,26],"uv_size":[0.125,0.125]},"up":{"uv":[27,30],"uv_size":[0.125,0.125]},"down":{"uv":[30,27.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,6.9056,-1.2791],"size":[0.2341,0.2149,0.0417],"pivot":[-0.1169,7.1667,-1.2374],"rotation":[86.75,0,0],"uv":{"north":{"uv":[28,30],"uv_size":[0.125,0.125]},"east":{"uv":[30,28],"uv_size":[0.125,0.125]},"south":{"uv":[29,30],"uv_size":[0.125,0.125]},"west":{"uv":[30,29],"uv_size":[0.125,0.125]},"up":{"uv":[30,30],"uv_size":[0.125,0.125]},"down":{"uv":[0,31.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,6.4018,-0.6033],"size":[0.2341,0.389,0.0417],"pivot":[-0.1169,6.7935,-0.5616],"rotation":[84.75,0,0],"uv":{"north":{"uv":[13,28],"uv_size":[0.125,0.25]},"east":{"uv":[28,13],"uv_size":[0.125,0.25]},"south":{"uv":[14,28],"uv_size":[0.125,0.25]},"west":{"uv":[28,14],"uv_size":[0.125,0.25]},"up":{"uv":[31,0],"uv_size":[0.125,0.125]},"down":{"uv":[1,31.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1171,6.4054,-1.0236],"size":[0.2342,0.3019,0.0417],"pivot":[-0.1168,6.623,-0.9819],"rotation":[96.25,0,0],"uv":{"north":{"uv":[15,28],"uv_size":[0.125,0.25]},"east":{"uv":[28,15],"uv_size":[0.125,0.25]},"south":{"uv":[16,28],"uv_size":[0.125,0.25]},"west":{"uv":[28,16],"uv_size":[0.125,0.25]},"up":{"uv":[31,1],"uv_size":[0.125,0.125]},"down":{"uv":[2,31.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,5.5357,-0.7152],"size":[0.2341,0.3545,0.0417],"pivot":[-0.1169,5.9419,-0.6734],"rotation":[75.5,0,0],"uv":{"north":{"uv":[17,28],"uv_size":[0.125,0.25]},"east":{"uv":[28,17],"uv_size":[0.125,0.25]},"south":{"uv":[18,28],"uv_size":[0.125,0.25]},"west":{"uv":[28,18],"uv_size":[0.125,0.25]},"up":{"uv":[31,2],"uv_size":[0.125,0.125]},"down":{"uv":[3,31.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,5.6816,-1.5241],"size":[0.2339,0.1224,0.0417],"pivot":[-0.117,6.1603,-1.4824],"rotation":[73.75,0,0],"uv":{"north":{"uv":[31,3],"uv_size":[0.125,0.125]},"east":{"uv":[4,31],"uv_size":[0.125,0.125]},"south":{"uv":[31,4],"uv_size":[0.125,0.125]},"west":{"uv":[5,31],"uv_size":[0.125,0.125]},"up":{"uv":[31,5],"uv_size":[0.125,0.125]},"down":{"uv":[6,31.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.1176,5.2732,-1.3602],"size":[0.2353,0.282,0.0417],"pivot":[-0.1163,5.6213,-1.3185],"rotation":[62.25,0,0],"uv":{"north":{"uv":[19,28],"uv_size":[0.125,0.25]},"east":{"uv":[28,19],"uv_size":[0.125,0.25]},"south":{"uv":[20,28],"uv_size":[0.125,0.25]},"west":{"uv":[28,20],"uv_size":[0.125,0.25]},"up":{"uv":[31,6],"uv_size":[0.125,0.125]},"down":{"uv":[7,31.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,4.5201,-1.5525],"size":[0.2339,0.0934,0.0417],"pivot":[-0.117,4.259,-1.5108],"rotation":[59,0,0],"uv":{"north":{"uv":[31,7],"uv_size":[0.125,0.125]},"east":{"uv":[8,31],"uv_size":[0.125,0.125]},"south":{"uv":[31,8],"uv_size":[0.125,0.125]},"west":{"uv":[9,31],"uv_size":[0.125,0.125]},"up":{"uv":[31,9],"uv_size":[0.125,0.125]},"down":{"uv":[10,31.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,4.5491,-1.5525],"size":[0.2339,0.1369,0.0417],"pivot":[-0.117,4.404,-1.5108],"rotation":[51.5,0,0],"uv":{"north":{"uv":[31,10],"uv_size":[0.125,0.125]},"east":{"uv":[11,31],"uv_size":[0.125,0.125]},"south":{"uv":[31,11],"uv_size":[0.125,0.125]},"west":{"uv":[12,31],"uv_size":[0.125,0.125]},"up":{"uv":[31,12],"uv_size":[0.125,0.125]},"down":{"uv":[13,31.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,4.6506,-1.4219],"size":[0.2341,0.2239,0.0417],"pivot":[-0.1169,4.5346,-1.3802],"rotation":[59,0,0],"uv":{"north":{"uv":[31,13],"uv_size":[0.125,0.125]},"east":{"uv":[14,31],"uv_size":[0.125,0.125]},"south":{"uv":[31,14],"uv_size":[0.125,0.125]},"west":{"uv":[15,31],"uv_size":[0.125,0.125]},"up":{"uv":[31,15],"uv_size":[0.125,0.125]},"down":{"uv":[16,31.125],"uv_size":[0.125,-0.125]}}},{"origin":[-0.117,4.7087,-1.3494],"size":[0.2341,0.3255,0.0417],"pivot":[-0.1169,4.6942,-1.3077],"rotation":[46.5,0,0],"uv":{"north":{"uv":[21,28],"uv_size":[0.125,0.25]},"east":{"uv":[28,21],"uv_size":[0.125,0.25]},"south":{"uv":[22,28],"uv_size":[0.125,0.25]},"west":{"uv":[28,22],"uv_size":[0.125,0.25]},"up":{"uv":[31,16],"uv_size":[0.125,0.125]},"down":{"uv":[17,31.125],"uv_size":[0.125,-0.125]}}}]},{"name":"group3","parent":"root2","pivot":[0,5.0324,-2.1309],"cubes":[{"origin":[0,5.3724,-2.1038],"size":[0,0.425,0.9987],"pivot":[0,5.0324,-1.1051],"rotation":[62,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[8,2],"uv_size":[0.75,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[3,8],"uv_size":[0.75,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0,4.3102,-2.8941],"size":[0,0.2125,1.02],"pivot":[0,4.3102,-1.8741],"rotation":[37,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[17,3],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[4,17],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0,3.6748,-2.8166],"size":[0,0.1913,0.935],"pivot":[0,3.866,-2.8166],"rotation":[48.6114,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[17,4],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[5,17],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0,3.6963,-3.56],"size":[0,0.0425,0.8712],"pivot":[0,3.6963,-2.6887],"rotation":[31,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[12,18],"uv_size":[0.625,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[18,12],"uv_size":[0.625,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.625]},"down":{"uv":[0,0.625],"uv_size":[0,-0.625]}}},{"origin":[0,3.2415,-3.4574],"size":[0,0.0425,0.935],"pivot":[0,3.284,-3.4574],"rotation":[42.2469,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[17,5],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[6,17],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0,6.0072,-1.5413],"size":[0,0.425,0.68],"pivot":[0,5.6672,-0.8613],"rotation":[69,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[8,10],"uv_size":[0.5,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[10,8],"uv_size":[0.5,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0,6.6747,-1.4116],"size":[0,0.425,0.68],"pivot":[0,6.3347,-0.7316],"rotation":[79,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[9,10],"uv_size":[0.5,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[10,9],"uv_size":[0.5,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0,7.1847,-1.2327],"size":[0,0.425,0.51],"pivot":[0,6.8447,-0.7227],"rotation":[89,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[13,6],"uv_size":[0.375,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[7,13],"uv_size":[0.375,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.375]},"down":{"uv":[0,0.375],"uv_size":[0,-0.375]}}},{"origin":[0,7.6749,-1.3733],"size":[0,0.425,0.51],"pivot":[0,7.3349,-0.8633],"rotation":[106,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[13,7],"uv_size":[0.375,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[8,13],"uv_size":[0.375,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.375]},"down":{"uv":[0,0.375],"uv_size":[0,-0.375]}}},{"origin":[0,8.0875,-1.6731],"size":[0,0.425,0.51],"pivot":[0,7.7475,-1.1631],"rotation":[126,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[13,8],"uv_size":[0.375,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[9,13],"uv_size":[0.375,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.375]},"down":{"uv":[0,0.375],"uv_size":[0,-0.375]}}},{"origin":[0,7.6312,-1.8268],"size":[0,0.425,0.255],"pivot":[0,7.6312,-1.5718],"rotation":[142.75,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[17,6],"uv_size":[0.25,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[7,17],"uv_size":[0.25,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,4.0811,-2.0593],"size":[0,0.3393,0.8807],"pivot":[0,4.4204,-1.7193],"rotation":[36.5,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[8,12],"uv_size":[0.625,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[12,8],"uv_size":[0.625,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.625]},"down":{"uv":[0,0.625],"uv_size":[0,-0.625]}}},{"origin":[0,3.9448,-2.8103],"size":[0,0.17,1.02],"pivot":[0,3.9448,-1.7903],"rotation":[26,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[17,7],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[8,17],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0,3.4977,-3.4934],"size":[0,0.0425,0.7862],"pivot":[0,3.4977,-2.7071],"rotation":[19,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[13,18],"uv_size":[0.625,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[18,13],"uv_size":[0.625,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.625]},"down":{"uv":[0,0.625],"uv_size":[0,-0.625]}}},{"origin":[0,4.3837,-1.3305],"size":[0,0.3401,0.7432],"pivot":[0,4.7237,-1.3093],"rotation":[45.25,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[15,6],"uv_size":[0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[7,15],"uv_size":[0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0,4.9302,-0.8345],"size":[0,0.34,0.8422],"pivot":[0,5.267,-0.7707],"rotation":[48.75,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[9,12],"uv_size":[0.625,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[12,9],"uv_size":[0.625,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.625]},"down":{"uv":[0,0.625],"uv_size":[0,-0.625]}}},{"origin":[0,6.775,-1.8551],"size":[0,0.4408,0.255],"pivot":[0,7.2157,-1.7276],"rotation":[143.7512,9.2358,12.3473],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[17,8],"uv_size":[0.25,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[9,17],"uv_size":[0.25,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0192,3.3665,-2.8641],"size":[0,0.0425,0.2762],"pivot":[0.0192,3.239,-3.4166],"rotation":[29.6491,11.664,-13.1377],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[21,20],"uv_size":[0.25,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[21,21],"uv_size":[0.25,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0192,3.3028,-3.0978],"size":[0,0.0638,0.51],"pivot":[0.0192,3.239,-3.4166],"rotation":[29.6491,11.664,-13.1377],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[20,20],"uv_size":[0.375,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[0,21],"uv_size":[0.375,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.375]},"down":{"uv":[0,0.375],"uv_size":[0,-0.375]}}},{"origin":[0.0192,3.239,-3.4166],"size":[0,0.0637,0.8287],"pivot":[0.0192,3.239,-3.4166],"rotation":[29.6491,11.664,-13.1377],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[14,18],"uv_size":[0.625,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[18,14],"uv_size":[0.625,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.625]},"down":{"uv":[0,0.625],"uv_size":[0,-0.625]}}},{"origin":[0,3.5346,-3.5789],"size":[0,0.0637,0.935],"pivot":[0,3.5983,-3.1114],"rotation":[40.8991,11.664,-13.1377],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[17,9],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[10,17],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0.0577,3.6671,-2.7194],"size":[0,0.2125,1.0625],"pivot":[0.0577,3.6671,-2.7194],"rotation":[35.5214,11.7503,-10.5625],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[17,10],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[11,17],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0,4.0043,-3.06],"size":[0,0.2125,1.0413],"pivot":[0,4.2168,-2.5075],"rotation":[47.5214,11.7503,-10.5625],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[17,11],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[12,17],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0,4.5099,-2.5143],"size":[0,0.4408,0.9988],"pivot":[0,4.9506,-2.0149],"rotation":[61.1255,13.5397,-7.3565],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[8,3],"uv_size":[0.75,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[4,8],"uv_size":[0.75,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0,5.1832,-2.0374],"size":[0,0.4408,0.68],"pivot":[0,5.624,-1.6974],"rotation":[68.2918,14.3323,-5.6284],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[10,10],"uv_size":[0.5,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[0,11],"uv_size":[0.5,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0,5.7062,-1.8874],"size":[0,0.4408,0.68],"pivot":[0,6.147,-1.5474],"rotation":[78.6021,15.087,-3.0037],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[11,0],"uv_size":[0.5,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[1,11],"uv_size":[0.5,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0,6.1623,-1.747],"size":[0,0.4408,0.51],"pivot":[0,6.603,-1.492],"rotation":[88.9629,15.3738,-0.275],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[13,9],"uv_size":[0.375,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[10,13],"uv_size":[0.375,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.375]},"down":{"uv":[0,0.375],"uv_size":[0,-0.375]}}},{"origin":[0,6.4381,-1.7834],"size":[0,0.4408,0.51],"pivot":[0,6.8789,-1.5284],"rotation":[106.562,14.7668,4.3347],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[13,10],"uv_size":[0.375,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[11,13],"uv_size":[0.375,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.375]},"down":{"uv":[0,0.375],"uv_size":[0,-0.375]}}},{"origin":[0,6.6508,-1.8871],"size":[0,0.4408,0.51],"pivot":[0,7.0915,-1.6321],"rotation":[126.9985,12.3871,9.1819],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[13,11],"uv_size":[0.375,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[12,13],"uv_size":[0.375,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.375]},"down":{"uv":[0,0.375],"uv_size":[0,-0.375]}}},{"origin":[0,5.3136,-0.703],"size":[0,0.3565,0.8422],"pivot":[0,5.3136,-0.2819],"rotation":[47.1299,-14.2702,12.8884],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[10,12],"uv_size":[0.625,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[12,10],"uv_size":[0.625,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.625]},"down":{"uv":[0,0.625],"uv_size":[0,-0.625]}}},{"origin":[-0.3978,5.722,-0.5285],"size":[0,0.3565,0.0282],"pivot":[-0.3978,5.722,-0.1074],"rotation":[109.1387,-41.25,-90],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[40,16],"uv_size":[0.125,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[40,17],"uv_size":[0.125,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.4245,5.8135,-0.5355],"size":[0,0.2712,0.0282],"pivot":[-0.4245,5.7282,-0.1143],"rotation":[109.1387,-41.25,-90],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[40,22],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,23],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.4245,5.8135,-0.5355],"size":[0,0.2712,0.0282],"pivot":[0.4245,5.7282,-0.1143],"rotation":[109.1387,41.25,90],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[40,18],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,19],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.4512,5.8836,-0.5424],"size":[0,0.2072,0.0602],"pivot":[0.4512,5.7343,-0.1213],"rotation":[109.1387,41.25,90],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[40,20],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,21],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.4512,5.8836,-0.5424],"size":[0,0.2072,0.0602],"pivot":[-0.4512,5.7343,-0.1213],"rotation":[109.1387,-41.25,-90],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[40,24],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,25],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.3978,5.722,-0.5285],"size":[0,0.3565,0.0282],"pivot":[0.3978,5.722,-0.1074],"rotation":[109.1387,41.25,90],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[40,14],"uv_size":[0.125,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[40,15],"uv_size":[0.125,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0,4.7332,-1.1715],"size":[0,0.3596,0.7219],"pivot":[0,4.7332,-0.8212],"rotation":[43.6511,-13.3466,13.6026],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[15,7],"uv_size":[0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[8,15],"uv_size":[0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0.0584,4.4246,-1.1995],"size":[0,0.3589,0.022],"pivot":[0.0584,4.604,-1.1886],"rotation":[40.1511,-13.3466,13.6026],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[0,22],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[22,0],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0,4.2073,-1.8772],"size":[0,0.3588,0.85],"pivot":[0,4.2073,-1.4368],"rotation":[34.9772,-11.1708,15.4782],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[11,12],"uv_size":[0.625,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[12,11],"uv_size":[0.625,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.625]},"down":{"uv":[0,0.625],"uv_size":[0,-0.625]}}},{"origin":[0.1169,4.366,-1.3375],"size":[0,0.3577,0.0282],"pivot":[0.1169,4.7237,-1.3093],"rotation":[39.4772,-11.1708,15.4782],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,22],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[22,1],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0,3.7213,-2.7587],"size":[0,0.17,0.9775],"pivot":[0,3.7213,-2.2487],"rotation":[24.6571,-8.5187,17.8849],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[17,12],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[13,17],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0,3.7213,-1.7812],"size":[0,0.0425,0.0425],"pivot":[0,3.7213,-2.2487],"rotation":[24.6571,-8.5187,17.8849],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[1,24],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[24,1],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.0575,3.4715,-2.7772],"size":[0,0.17,0.9775],"pivot":[0.0575,3.6415,-2.7772],"rotation":[35.4071,-8.5187,17.8849],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[17,13],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[14,17],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0.0575,3.3015,-1.8847],"size":[0,0.17,0.085],"pivot":[0.0575,3.6415,-2.7772],"rotation":[35.4071,-8.5187,17.8849],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[2,24],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[24,2],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0,3.3697,-2.8982],"size":[0,0.1275,0.2125],"pivot":[0,3.3697,-3.0788],"rotation":[17.9028,-6.4701,19.2298],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[3,24],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[24,3],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0,3.3697,-3.1319],"size":[0,0.085,0.2338],"pivot":[0,3.3697,-3.0788],"rotation":[17.9028,-6.4701,19.2298],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[4,24],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[24,4],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0,3.3697,-3.4082],"size":[0,0.0213,0.2762],"pivot":[0,3.3697,-3.0788],"rotation":[17.9028,-6.4701,19.2298],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[2,22],"uv_size":[0.25,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[22,2],"uv_size":[0.25,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0588,3.606,-3.3965],"size":[0,0.0425,0.6375],"pivot":[0.0588,3.6485,-2.759],"rotation":[30.6559,-6.5694,19.1985],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[19,14],"uv_size":[0.5,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[15,19],"uv_size":[0.5,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0,6.775,-1.8551],"size":[0,0.4408,0.255],"pivot":[0,7.2157,-1.7276],"rotation":[143.7512,-9.2358,-12.3473],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[17,14],"uv_size":[0.25,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[15,17],"uv_size":[0.25,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.122,6.8782,-1.9355],"size":[0,0.4408,0.0097],"pivot":[0.122,7.319,-1.808],"rotation":[74.6238,-52.75,90],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[40,26],"uv_size":[0.125,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[40,27],"uv_size":[0.125,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.1313,6.8803,-1.9339],"size":[0,0.2061,0.1163],"pivot":[0.1313,7.321,-1.8064],"rotation":[74.6238,-52.75,90],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[32,40],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,32],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.1859,6.7221,-2.0542],"size":[0,0.1954,0.0203],"pivot":[0.1859,7.1628,-1.9267],"rotation":[74.6238,-52.75,90],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[34,40],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,34],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0.2056,6.7264,-2.0509],"size":[0,0.1101,0.0417],"pivot":[0.2056,7.1672,-1.9235],"rotation":[74.6238,-52.75,90],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[36,40],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[40,36],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.2056,6.7264,-2.0509],"size":[0,0.1101,0.0417],"pivot":[-0.2056,7.1672,-1.9235],"rotation":[74.6238,52.75,-90],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[35,40],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[40,35],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.1859,6.7221,-2.0542],"size":[0,0.1954,0.0203],"pivot":[-0.1859,7.1628,-1.9267],"rotation":[74.6238,52.75,-90],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[33,40],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,33],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.1313,6.8803,-1.9339],"size":[0,0.2061,0.1163],"pivot":[-0.1313,7.321,-1.8064],"rotation":[74.6238,52.75,-90],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[40,30],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,31],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.122,6.8782,-1.9355],"size":[0,0.4408,0.0097],"pivot":[-0.122,7.319,-1.808],"rotation":[74.6238,52.75,-90],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[40,28],"uv_size":[0.125,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[40,29],"uv_size":[0.125,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.0192,3.3665,-2.8641],"size":[0,0.0425,0.2762],"pivot":[-0.0192,3.239,-3.4166],"rotation":[29.6491,-11.664,13.1377],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[3,22],"uv_size":[0.25,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[22,3],"uv_size":[0.25,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0192,3.3028,-3.0978],"size":[0,0.0638,0.51],"pivot":[-0.0192,3.239,-3.4166],"rotation":[29.6491,-11.664,13.1377],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[21,0],"uv_size":[0.375,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[1,21],"uv_size":[0.375,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.375]},"down":{"uv":[0,0.375],"uv_size":[0,-0.375]}}},{"origin":[-0.0192,3.239,-3.4166],"size":[0,0.0637,0.8287],"pivot":[-0.0192,3.239,-3.4166],"rotation":[29.6491,-11.664,13.1377],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[15,18],"uv_size":[0.625,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[18,15],"uv_size":[0.625,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.625]},"down":{"uv":[0,0.625],"uv_size":[0,-0.625]}}},{"origin":[0,3.5346,-3.5789],"size":[0,0.0637,0.935],"pivot":[0,3.5983,-3.1114],"rotation":[40.8991,-11.664,13.1377],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[17,15],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[16,17],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[-0.0577,3.6671,-2.7194],"size":[0,0.2125,1.0625],"pivot":[-0.0577,3.6671,-2.7194],"rotation":[35.5214,-11.7503,10.5625],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[17,16],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[17,17],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0,4.0043,-3.06],"size":[0,0.2125,1.0413],"pivot":[0,4.2168,-2.5075],"rotation":[47.5214,-11.7503,10.5625],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[0,18],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[18,0],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0,4.5099,-2.5143],"size":[0,0.4408,0.9988],"pivot":[0,4.9506,-2.0149],"rotation":[61.1255,-13.5397,7.3565],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[8,4],"uv_size":[0.75,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[5,8],"uv_size":[0.75,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0,5.1832,-2.0374],"size":[0,0.4408,0.68],"pivot":[0,5.624,-1.6974],"rotation":[68.2918,-14.3323,5.6284],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[11,1],"uv_size":[0.5,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[2,11],"uv_size":[0.5,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0,5.7062,-1.8874],"size":[0,0.4408,0.68],"pivot":[0,6.147,-1.5474],"rotation":[78.6021,-15.087,3.0037],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[11,2],"uv_size":[0.5,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[3,11],"uv_size":[0.5,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[0,6.1623,-1.747],"size":[0,0.4408,0.51],"pivot":[0,6.603,-1.492],"rotation":[88.9629,-15.3738,0.275],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[13,12],"uv_size":[0.375,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[13,13],"uv_size":[0.375,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.375]},"down":{"uv":[0,0.375],"uv_size":[0,-0.375]}}},{"origin":[0,6.4381,-1.7834],"size":[0,0.4408,0.51],"pivot":[0,6.8789,-1.5284],"rotation":[106.562,-14.7668,-4.3347],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[0,14],"uv_size":[0.375,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[14,0],"uv_size":[0.375,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.375]},"down":{"uv":[0,0.375],"uv_size":[0,-0.375]}}},{"origin":[0,6.6508,-1.8871],"size":[0,0.4408,0.51],"pivot":[0,7.0915,-1.6321],"rotation":[126.9985,-12.3871,-9.1819],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.375]},"east":{"uv":[1,14],"uv_size":[0.375,0.375]},"south":{"uv":[0,0],"uv_size":[0,0.375]},"west":{"uv":[14,1],"uv_size":[0.375,0.375]},"up":{"uv":[0,0],"uv_size":[0,0.375]},"down":{"uv":[0,0.375],"uv_size":[0,-0.375]}}},{"origin":[0,5.3136,-0.703],"size":[0,0.3565,0.8422],"pivot":[0,5.3136,-0.2819],"rotation":[47.1299,14.2702,-12.8884],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[12,12],"uv_size":[0.625,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[0,13],"uv_size":[0.625,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.625]},"down":{"uv":[0,0.625],"uv_size":[0,-0.625]}}},{"origin":[0,4.7332,-1.1715],"size":[0,0.3596,0.7219],"pivot":[0,4.7332,-0.8212],"rotation":[43.6511,13.3466,-13.6026],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[15,8],"uv_size":[0.5,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[9,15],"uv_size":[0.5,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[-0.0584,4.4246,-1.1995],"size":[0,0.3589,0.022],"pivot":[-0.0584,4.604,-1.1886],"rotation":[40.1511,13.3466,-13.6026],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[4,22],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[22,4],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0,4.2073,-1.8772],"size":[0,0.3588,0.85],"pivot":[0,4.2073,-1.4368],"rotation":[34.9772,11.1708,-15.4782],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[13,0],"uv_size":[0.625,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1,13],"uv_size":[0.625,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.625]},"down":{"uv":[0,0.625],"uv_size":[0,-0.625]}}},{"origin":[-0.1169,4.366,-1.3375],"size":[0,0.3577,0.0282],"pivot":[-0.1169,4.7237,-1.3093],"rotation":[39.4772,11.1708,-15.4782],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[5,22],"uv_size":[0.125,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[22,5],"uv_size":[0.125,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0,3.7213,-2.7587],"size":[0,0.17,0.9775],"pivot":[0,3.7213,-2.2487],"rotation":[24.6571,8.5187,-17.8849],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[1,18],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[18,1],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[0,3.7213,-1.7812],"size":[0,0.0425,0.0425],"pivot":[0,3.7213,-2.2487],"rotation":[24.6571,8.5187,-17.8849],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[5,24],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[24,5],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[-0.0575,3.4715,-2.7772],"size":[0,0.17,0.9775],"pivot":[-0.0574,3.6415,-2.7772],"rotation":[35.4071,8.5187,-17.8849],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[2,18],"uv_size":[0.75,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[18,2],"uv_size":[0.75,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.75]},"down":{"uv":[0,0.75],"uv_size":[0,-0.75]}}},{"origin":[-0.0575,3.3015,-1.8847],"size":[0,0.17,0.085],"pivot":[-0.0575,3.6415,-2.7772],"rotation":[35.4071,8.5187,-17.8849],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[6,24],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[24,6],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0,3.3697,-2.8982],"size":[0,0.1275,0.2125],"pivot":[0,3.3697,-3.0788],"rotation":[17.9028,6.4701,-19.2298],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[7,24],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[24,7],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0,3.3697,-3.1319],"size":[0,0.085,0.2338],"pivot":[0,3.3697,-3.0788],"rotation":[17.9028,6.4701,-19.2298],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[8,24],"uv_size":[0.125,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[24,8],"uv_size":[0.125,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.125]},"down":{"uv":[0,0.125],"uv_size":[0,-0.125]}}},{"origin":[0,3.3697,-3.4082],"size":[0,0.0213,0.2762],"pivot":[0,3.3697,-3.0788],"rotation":[17.9028,6.4701,-19.2298],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[6,22],"uv_size":[0.25,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[22,6],"uv_size":[0.25,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0588,3.606,-3.3965],"size":[0,0.0425,0.6375],"pivot":[-0.0588,3.6485,-2.759],"rotation":[30.6559,6.5694,-19.1985],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.125]},"east":{"uv":[19,15],"uv_size":[0.5,0.125]},"south":{"uv":[0,0],"uv_size":[0,0.125]},"west":{"uv":[16,19],"uv_size":[0.5,0.125]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}}]},{"name":"octagon","parent":"root2","pivot":[0,13.679,-2.7876],"cubes":[{"origin":[-0.17,13.3093,-2.6543],"size":[0.34,0.7394,0.255],"pivot":[0,13.679,-1.7618],"rotation":[-45,0,0],"uv":{"north":{"uv":[5,14],"uv_size":[0.25,0.5]},"east":{"uv":[14,5],"uv_size":[0.25,0.5]},"south":{"uv":[6,14],"uv_size":[0.25,0.5]},"west":{"uv":[14,6],"uv_size":[0.25,0.5]},"up":{"uv":[19,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1772,13.3093,-2.6543],"size":[0.3545,0.7394,0.255],"uv":{"north":{"uv":[7,14],"uv_size":[0.25,0.5]},"east":{"uv":[14,7],"uv_size":[0.25,0.5]},"south":{"uv":[8,14],"uv_size":[0.25,0.5]},"west":{"uv":[14,8],"uv_size":[0.25,0.5]},"up":{"uv":[19,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.17,13.3093,-1.1243],"size":[0.34,0.7394,0.255],"pivot":[0,13.679,-1.7618],"rotation":[-45,0,0],"uv":{"north":{"uv":[9,14],"uv_size":[0.25,0.5]},"east":{"uv":[14,9],"uv_size":[0.25,0.5]},"south":{"uv":[10,14],"uv_size":[0.25,0.5]},"west":{"uv":[14,10],"uv_size":[0.25,0.5]},"up":{"uv":[19,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.17,13.3093,-1.1243],"size":[0.34,0.7394,0.255],"uv":{"north":{"uv":[11,14],"uv_size":[0.25,0.5]},"east":{"uv":[14,11],"uv_size":[0.25,0.5]},"south":{"uv":[12,14],"uv_size":[0.25,0.5]},"west":{"uv":[14,12],"uv_size":[0.25,0.5]},"up":{"uv":[19,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1707,12.7865,-2.1315],"size":[0.3414,0.255,0.7394],"pivot":[0.0007,13.679,-1.7618],"rotation":[-45,0,0],"uv":{"north":{"uv":[19,10],"uv_size":[0.25,0.25]},"east":{"uv":[13,14],"uv_size":[0.5,0.25]},"south":{"uv":[11,19],"uv_size":[0.25,0.25]},"west":{"uv":[14,13],"uv_size":[0.5,0.25]},"up":{"uv":[14,14],"uv_size":[0.25,0.5]},"down":{"uv":[0,15.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.17,12.7865,-2.1315],"size":[0.34,0.255,0.7394],"uv":{"north":{"uv":[19,11],"uv_size":[0.25,0.25]},"east":{"uv":[15,0],"uv_size":[0.5,0.25]},"south":{"uv":[12,19],"uv_size":[0.25,0.25]},"west":{"uv":[1,15],"uv_size":[0.5,0.25]},"up":{"uv":[15,1],"uv_size":[0.25,0.5]},"down":{"uv":[2,15.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.17,14.3165,-2.1315],"size":[0.34,0.255,0.7394],"pivot":[0,13.679,-1.7618],"rotation":[-45,0,0],"uv":{"north":{"uv":[19,12],"uv_size":[0.25,0.25]},"east":{"uv":[15,2],"uv_size":[0.5,0.25]},"south":{"uv":[13,19],"uv_size":[0.25,0.25]},"west":{"uv":[3,15],"uv_size":[0.5,0.25]},"up":{"uv":[15,3],"uv_size":[0.25,0.5]},"down":{"uv":[4,15.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1772,14.3165,-2.1315],"size":[0.3545,0.255,0.7394],"uv":{"north":{"uv":[19,13],"uv_size":[0.25,0.25]},"east":{"uv":[15,4],"uv_size":[0.5,0.25]},"south":{"uv":[14,19],"uv_size":[0.25,0.25]},"west":{"uv":[5,15],"uv_size":[0.5,0.25]},"up":{"uv":[15,5],"uv_size":[0.25,0.5]},"down":{"uv":[6,15.5],"uv_size":[0.25,-0.5]}}}]},{"name":"group","parent":"root2","pivot":[0,10.0547,-1.4265],"cubes":[{"origin":[-0.2557,8.5247,-1.0807],"size":[0.5114,1.02,1.02],"pivot":[0.0007,10.0547,-0.4007],"rotation":[7.5,0,0],"uv":{"north":{"uv":[3,7],"uv_size":[0.375,0.75]},"east":{"uv":[0,4],"uv_size":[0.75,0.75]},"south":{"uv":[4,7],"uv_size":[0.375,0.75]},"west":{"uv":[4,1],"uv_size":[0.75,0.75]},"up":{"uv":[7,4],"uv_size":[0.375,0.75]},"down":{"uv":[5,7.75],"uv_size":[0.375,-0.75]}}},{"origin":[-0.255,8.449,-2.0651],"size":[0.51,1.02,1.19],"pivot":[0,8.449,-0.8751],"rotation":[-38.5,0,0],"uv":{"north":{"uv":[7,5],"uv_size":[0.375,0.75]},"east":{"uv":[3,1],"uv_size":[0.875,0.75]},"south":{"uv":[6,7],"uv_size":[0.375,0.75]},"west":{"uv":[3,3],"uv_size":[0.875,0.75]},"up":{"uv":[5,6],"uv_size":[0.375,0.875]},"down":{"uv":[6,5.875],"uv_size":[0.375,-0.875]}}},{"origin":[-0.2479,9.4485,-1.3302],"size":[0.4959,2.465,1.36],"pivot":[-0.0071,9.7885,-1.3302],"rotation":[-6,0,0],"uv":{"north":{"uv":[1,3],"uv_size":[0.375,1.875]},"east":{"uv":[0,0],"uv_size":[1,1.875]},"south":{"uv":[2,3],"uv_size":[0.375,1.875]},"west":{"uv":[1,0],"uv_size":[1,1.875]},"up":{"uv":[2,5],"uv_size":[0.375,1]},"down":{"uv":[5,4],"uv_size":[0.375,-1]}}},{"origin":[-0.2622,10.1266,-1.2947],"size":[0.5245,0.34,0.255],"pivot":[0.0073,10.1266,-1.2947],"rotation":[11.5,0,0],"uv":{"north":{"uv":[6,16],"uv_size":[0.375,0.25]},"east":{"uv":[19,3],"uv_size":[0.25,0.25]},"south":{"uv":[16,6],"uv_size":[0.375,0.25]},"west":{"uv":[4,19],"uv_size":[0.25,0.25]},"up":{"uv":[7,16],"uv_size":[0.375,0.25]},"down":{"uv":[16,7.25],"uv_size":[0.375,-0.25]}}},{"origin":[-0.255,10.4598,-1.3625],"size":[0.51,0.425,0.255],"pivot":[0,10.4598,-1.3625],"rotation":[-21,0,0],"uv":{"north":{"uv":[13,3],"uv_size":[0.375,0.375]},"east":{"uv":[8,16],"uv_size":[0.25,0.375]},"south":{"uv":[4,13],"uv_size":[0.375,0.375]},"west":{"uv":[16,8],"uv_size":[0.25,0.375]},"up":{"uv":[9,16],"uv_size":[0.375,0.25]},"down":{"uv":[16,9.25],"uv_size":[0.375,-0.25]}}},{"origin":[-0.2622,10.7397,-0.0955],"size":[0.5245,1.02,0.34],"pivot":[0.0073,11.7597,0.2445],"rotation":[9,0,0],"uv":{"north":{"uv":[7,6],"uv_size":[0.375,0.75]},"east":{"uv":[2,10],"uv_size":[0.25,0.75]},"south":{"uv":[7,7],"uv_size":[0.375,0.75]},"west":{"uv":[10,2],"uv_size":[0.25,0.75]},"up":{"uv":[10,16],"uv_size":[0.375,0.25]},"down":{"uv":[16,10.25],"uv_size":[0.375,-0.25]}}},{"origin":[-0.2551,10.0722,0.064],"size":[0.5101,0.68,0.34],"pivot":[0.0001,10.7522,0.404],"rotation":[-6,0,0],"uv":{"north":{"uv":[3,10],"uv_size":[0.375,0.5]},"east":{"uv":[3,14],"uv_size":[0.25,0.5]},"south":{"uv":[10,3],"uv_size":[0.375,0.5]},"west":{"uv":[14,3],"uv_size":[0.25,0.5]},"up":{"uv":[11,16],"uv_size":[0.375,0.25]},"down":{"uv":[16,11.25],"uv_size":[0.375,-0.25]}}},{"origin":[-0.255,9.311,-0.0071],"size":[0.51,0.765,0.34],"pivot":[0,10.076,0.3329],"rotation":[-23.5,0,0],"uv":{"north":{"uv":[1,10],"uv_size":[0.375,0.625]},"east":{"uv":[7,12],"uv_size":[0.25,0.625]},"south":{"uv":[10,1],"uv_size":[0.375,0.625]},"west":{"uv":[12,7],"uv_size":[0.25,0.625]},"up":{"uv":[12,16],"uv_size":[0.375,0.25]},"down":{"uv":[16,12.25],"uv_size":[0.375,-0.25]}}},{"origin":[-0.2477,11.2237,-1.1436],"size":[0.4955,1.7,1.36],"pivot":[-0.0073,11.5637,-1.1436],"rotation":[21.5,0,0],"uv":{"north":{"uv":[4,4],"uv_size":[0.375,1.25]},"east":{"uv":[0,2],"uv_size":[1,1.25]},"south":{"uv":[0,5],"uv_size":[0.375,1.25]},"west":{"uv":[2,0],"uv_size":[1,1.25]},"up":{"uv":[5,4],"uv_size":[0.375,1]},"down":{"uv":[5,6],"uv_size":[0.375,-1]}}},{"origin":[-0.2551,12.1173,-1.3617],"size":[0.5101,1.02,0.255],"pivot":[0.0001,12.1173,-1.3617],"rotation":[49,0,0],"uv":{"north":{"uv":[0,8],"uv_size":[0.375,0.75]},"east":{"uv":[4,10],"uv_size":[0.25,0.75]},"south":{"uv":[8,0],"uv_size":[0.375,0.75]},"west":{"uv":[10,4],"uv_size":[0.25,0.75]},"up":{"uv":[13,16],"uv_size":[0.375,0.25]},"down":{"uv":[16,13.25],"uv_size":[0.375,-0.25]}}},{"origin":[-0.2477,12.6602,-2.2192],"size":[0.4955,0.3188,0.255],"pivot":[-0.0073,12.9789,-1.9642],"rotation":[81.5,0,0],"uv":{"north":{"uv":[14,16],"uv_size":[0.375,0.25]},"east":{"uv":[19,4],"uv_size":[0.25,0.25]},"south":{"uv":[16,14],"uv_size":[0.375,0.25]},"west":{"uv":[5,19],"uv_size":[0.25,0.25]},"up":{"uv":[15,16],"uv_size":[0.375,0.25]},"down":{"uv":[16,15.25],"uv_size":[0.375,-0.25]}}},{"origin":[-0.255,12.4312,-1.967],"size":[0.51,0.5738,0.255],"pivot":[0,12.9412,-1.712],"rotation":[109,0,0],"uv":{"north":{"uv":[13,4],"uv_size":[0.375,0.375]},"east":{"uv":[15,20],"uv_size":[0.125,0.375]},"south":{"uv":[5,13],"uv_size":[0.375,0.375]},"west":{"uv":[20,15],"uv_size":[0.125,0.375]},"up":{"uv":[16,20],"uv_size":[0.375,0.125]},"down":{"uv":[20,16.125],"uv_size":[0.375,-0.125]}}},{"origin":[-0.255,12.8987,-2.052],"size":[0.51,0.1063,0.085],"pivot":[0,12.9412,-1.712],"rotation":[109,0,0],"uv":{"north":{"uv":[17,20],"uv_size":[0.375,0.125]},"east":{"uv":[0,24],"uv_size":[0.125,0.125]},"south":{"uv":[20,17],"uv_size":[0.375,0.125]},"west":{"uv":[24,0],"uv_size":[0.125,0.125]},"up":{"uv":[18,20],"uv_size":[0.375,0.125]},"down":{"uv":[20,18.125],"uv_size":[0.375,-0.125]}}},{"origin":[-0.255,12.5696,-1.5652],"size":[0.51,0.595,0.255],"pivot":[0,13.0796,-1.3102],"rotation":[146.5,0,0],"uv":{"north":{"uv":[5,10],"uv_size":[0.375,0.5]},"east":{"uv":[4,14],"uv_size":[0.25,0.5]},"south":{"uv":[10,5],"uv_size":[0.375,0.5]},"west":{"uv":[14,4],"uv_size":[0.25,0.5]},"up":{"uv":[16,16],"uv_size":[0.375,0.25]},"down":{"uv":[0,17.25],"uv_size":[0.375,-0.25]}}},{"origin":[-0.255,13.3275,-0.6317],"size":[0.51,0.935,0.255],"pivot":[0,13.3275,-0.3767],"rotation":[34,0,0],"uv":{"north":{"uv":[1,8],"uv_size":[0.375,0.75]},"east":{"uv":[6,10],"uv_size":[0.25,0.75]},"south":{"uv":[8,1],"uv_size":[0.375,0.75]},"west":{"uv":[10,6],"uv_size":[0.25,0.75]},"up":{"uv":[17,0],"uv_size":[0.375,0.25]},"down":{"uv":[1,17.25],"uv_size":[0.375,-0.25]}}},{"origin":[-0.2553,13.3275,-1.0355],"size":[0.5107,0.425,0.4037],"pivot":[0.0003,13.3275,-0.3767],"rotation":[34,0,0],"uv":{"north":{"uv":[13,5],"uv_size":[0.375,0.375]},"east":{"uv":[17,1],"uv_size":[0.25,0.375]},"south":{"uv":[6,13],"uv_size":[0.375,0.375]},"west":{"uv":[2,17],"uv_size":[0.25,0.375]},"up":{"uv":[17,2],"uv_size":[0.375,0.25]},"down":{"uv":[3,17.25],"uv_size":[0.375,-0.25]}}},{"origin":[-0.2547,13.3438,-1.111],"size":[0.5093,0.6162,0.255],"pivot":[-0.0003,13.9601,-1.111],"rotation":[4,0,0],"uv":{"north":{"uv":[7,10],"uv_size":[0.375,0.5]},"east":{"uv":[19,5],"uv_size":[0.125,0.5]},"south":{"uv":[10,7],"uv_size":[0.375,0.5]},"west":{"uv":[6,19],"uv_size":[0.125,0.5]},"up":{"uv":[19,20],"uv_size":[0.375,0.125]},"down":{"uv":[20,19.125],"uv_size":[0.375,-0.125]}}}]},{"name":"righthand","parent":"knife_and_right","pivot":[6,19,0]},{"name":"righthand_1","parent":"righthand","pivot":[6,19,0]},{"name":"righthand_pos","parent":"righthand_1","pivot":[0,8,0],"cubes":[{"origin":[4,8,-2],"size":[4,12,4],"uv":{"north":{"uv":[0,0],"uv_size":[8,24]},"east":{"uv":[8,0],"uv_size":[8,24]},"south":{"uv":[16,0],"uv_size":[8,24]},"west":{"uv":[0,24],"uv_size":[8,24]},"up":{"uv":[32,0],"uv_size":[8,8]},"down":{"uv":[32,16],"uv_size":[8,-8]}}}]},{"name":"constraint","parent":"bone","pivot":[-0.0156,8.125,1.9375]},{"name":"lefthand","parent":"bone","pivot":[-6,19,0]},{"name":"lefthand_1","parent":"lefthand","pivot":[-6,19,0]},{"name":"lefthand_pos","parent":"lefthand_1","pivot":[0,8,0],"cubes":[{"origin":[-8,8,-2],"size":[4,12,4],"uv":{"north":{"uv":[24,0],"uv_size":[8,24]},"east":{"uv":[8,24],"uv_size":[8,24]},"south":{"uv":[16,24],"uv_size":[8,24]},"west":{"uv":[24,24],"uv_size":[8,24]},"up":{"uv":[32,16],"uv_size":[8,8]},"down":{"uv":[32,32],"uv_size":[8,-8]}}}]},{"name":"camera","pivot":[3.0813,14.0031,11.5313]},{"name":"view","pivot":[0,0,0]},{"name":"refit_view","parent":"view","pivot":[22.475,5.55,0.2],"rotation":[0,90,0]},{"name":"iron_view","parent":"view","pivot":[-0.1533,9.4219,6.9349],"rotation":[0,-1,0]},{"name":"idle_view","parent":"view","pivot":[0.5,65.4219,1],"rotation":[0,-1,0]},{"name":"positioning","pivot":[-0.0156,4.125,4.9375]},{"name":"ground","parent":"positioning","pivot":[0,0,0]},{"name":"thirdperson_hand","parent":"positioning","pivot":[-0.0156,6.125,-2.0625]},{"name":"fixed","parent":"positioning","pivot":[0.7969,5.125,-1.0625],"rotation":[0,90,0]},{"name":"bone38","pivot":[62,-11.35,-167.5]},{"name":"bone39","parent":"bone38","pivot":[-65,-11.35,-167.5]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/silencefd.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/silencefd.anim.json new file mode 100644 index 0000000..362f187 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/silencefd.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"inspect":{"loop":true,"animation_length":3.5833,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[120.959,29.595,115.371],"0.0417":[121.066,29.868,115.65],"0.0833":[121.169,30.076,115.811],"0.125":[121.43,30.512,116.031],"0.1667":[122.985,32.821,117.399],"0.2083":[123.745,34.129,118.63],"0.25":[123.931,34.815,119.393],"0.2917":[122.788,33.496,118.264],"0.3333":[122.076,32.021,117.021],"0.375":[120.961,29.595,115.372],"0.4167":[120.514,29.05,115.245],"0.4583":[119.632,27.974,115.028],"0.5":[119.196,27.438,114.935],"0.5417":[118.768,26.915,114.86],"0.5833":[117.911,25.859,114.736],"0.625":[117.481,25.335,114.685],"0.6667":[116.641,24.298,114.617],"0.7083":[116.221,23.789,114.594],"0.75":[115.806,23.285,114.583],"0.7917":[114.982,22.267,114.589],"0.8333":[114.57,21.764,114.597],"0.875":[113.755,20.772,114.645],"0.9167":[113.352,20.286,114.678],"0.9583":[112.947,19.794,114.718],"1.0":[112.15,18.819,114.818],"1.0417":[111.753,18.337,114.876],"1.0833":[110.962,17.375,115.007],"1.125":[110.566,16.898,115.076],"1.1667":[110.178,16.426,115.158],"1.2083":[109.401,15.481,115.326],"1.25":[109.016,15.013,115.414],"1.2917":[108.249,14.08,115.608],"1.3333":[107.868,13.615,115.708],"1.375":[107.485,13.147,115.81],"1.4167":[106.734,12.227,116.027],"1.4583":[106.361,11.764,116.141],"1.5":[105.616,10.841,116.372],"1.5417":[105.247,10.383,116.492],"1.5833":[104.877,9.921,116.614],"1.625":[104.144,9.002,116.866],"1.6667":[103.779,8.542,116.99],"1.7083":[103.055,7.621,117.253],"1.75":[102.697,7.157,117.384],"1.7917":[102.34,6.696,117.519],"1.8333":[101.623,5.766,117.794],"1.875":[101.265,5.3,117.936],"1.9167":[100.555,4.365,118.226],"1.9583":[100.204,3.893,118.369],"2.0":[99.853,3.422,118.521],"2.0417":[99.126,2.457,118.83],"2.0833":[98.732,1.941,119.006],"2.125":[97.88,0.854,119.396],"2.1667":[97.428,0.283,119.607],"2.2083":[96.489,-0.885,120.055],"2.25":[96.011,-1.478,120.29],"2.2917":[95.529,-2.068,120.531],"2.3333":[94.578,-3.24,121.017],"2.375":[94.121,-3.81,121.259],"2.4167":[93.667,-4.373,121.494],"2.4583":[92.816,-5.436,121.935],"2.5":[92.42,-5.933,122.139],"2.5417":[91.715,-6.856,122.485],"2.5833":[91.402,-7.279,122.62],"2.625":[91.131,-7.666,122.731],"2.6667":[90.707,-8.35,122.842],"2.7083":[90.572,-8.641,122.847],"2.75":[90.485,-8.904,122.802],"2.7917":[90.483,-9.347,122.567],"2.8333":[92.831,-9.831,120.908],"2.875":[102.428,-8.15,113.918],"2.9167":[105.543,-4.897,111.006],"2.9583":[110.376,4.873,106.765],"3.0":[112.889,11.403,106.794],"3.0417":[115.538,18.471,108.031],"3.0833":[118.927,26.142,110.534],"3.125":[119.924,27.944,111.64],"3.1667":[121.144,29.755,113.444],"3.2083":[121.463,30.149,113.953],"3.25":[121.366,29.856,113.911],"3.2917":[120.113,27.404,112.674],"3.3333":[119.634,26.45,112.264],"3.375":[119.367,25.993,112.4],"3.4167":[119.441,26.237,112.716],"3.4583":[119.643,26.738,113.142],"3.5":[120.256,28.123,114.217],"3.5417":[120.614,28.885,114.802],"3.5833":[120.958,29.592,115.373]},"position":{"0.0":[15.671,39.319,-15.74],"0.0417":[15.54,38.941,-15.548],"0.0833":[15.522,38.642,-15.415],"0.125":[15.659,37.979,-15.149],"0.1667":[16.432,35.277,-13.267],"0.2083":[16.774,33.967,-12.123],"0.25":[17.053,32.947,-11.678],"0.2917":[17.758,30.786,-13.426],"0.3333":[18.034,29.73,-14.585],"0.375":[18.239,28.678,-15.74],"0.4167":[18.254,28.603,-15.757],"0.4583":[18.278,28.47,-15.782],"0.5":[18.288,28.409,-15.789],"0.5417":[18.299,28.349,-15.795],"0.5833":[18.315,28.245,-15.798],"0.625":[18.322,28.198,-15.794],"0.6667":[18.332,28.114,-15.783],"0.7083":[18.336,28.077,-15.773],"0.75":[18.342,28.043,-15.762],"0.7917":[18.346,27.985,-15.737],"0.8333":[18.347,27.96,-15.72],"0.875":[18.351,27.919,-15.684],"0.9167":[18.35,27.903,-15.663],"0.9583":[18.349,27.89,-15.64],"1.0":[18.351,27.871,-15.594],"1.0417":[18.349,27.865,-15.57],"1.0833":[18.347,27.859,-15.516],"1.125":[18.347,27.86,-15.487],"1.1667":[18.346,27.867,-15.457],"1.2083":[18.343,27.877,-15.395],"1.25":[18.343,27.886,-15.364],"1.2917":[18.341,27.91,-15.298],"1.3333":[18.339,27.926,-15.264],"1.375":[18.341,27.942,-15.227],"1.4167":[18.34,27.982,-15.157],"1.4583":[18.34,27.998,-15.12],"1.5":[18.341,28.045,-15.046],"1.5417":[18.343,28.068,-15.009],"1.5833":[18.343,28.095,-14.972],"1.625":[18.347,28.146,-14.894],"1.6667":[18.351,28.173,-14.858],"1.7083":[18.357,28.227,-14.779],"1.75":[18.361,28.255,-14.743],"1.7917":[18.364,28.283,-14.705],"1.8333":[18.373,28.337,-14.632],"1.875":[18.38,28.364,-14.597],"1.9167":[18.392,28.417,-14.527],"1.9583":[18.401,28.441,-14.495],"2.0":[18.409,28.465,-14.463],"2.0417":[18.428,28.509,-14.398],"2.0833":[18.428,28.523,-14.365],"2.125":[18.427,28.538,-14.289],"2.1667":[18.425,28.542,-14.248],"2.2083":[18.413,28.551,-14.162],"2.25":[18.408,28.559,-14.115],"2.2917":[18.403,28.569,-14.069],"2.3333":[18.4,28.607,-13.972],"2.375":[18.398,28.633,-13.924],"2.4167":[18.405,28.67,-13.871],"2.4583":[18.425,28.773,-13.764],"2.5":[18.438,28.84,-13.713],"2.5417":[18.481,29.013,-13.602],"2.5833":[18.511,29.121,-13.545],"2.625":[18.545,29.249,-13.485],"2.6667":[18.625,29.547,-13.36],"2.7083":[18.669,29.722,-13.295],"2.75":[18.716,29.919,-13.227],"2.7917":[18.809,30.37,-13.082],"2.8333":[18.613,31.924,-12.581],"2.875":[18.311,34.851,-11.857],"2.9167":[17.891,36.377,-11.978],"2.9583":[16.921,39.004,-12.857],"3.0":[16.558,39.659,-13.584],"3.0417":[16.239,39.983,-14.472],"3.0833":[15.884,39.989,-15.454],"3.125":[15.797,39.767,-15.661],"3.1667":[15.698,39.201,-15.843],"3.2083":[15.665,39.017,-15.897],"3.25":[15.645,38.95,-15.904],"3.2917":[15.677,39.003,-15.74],"3.3333":[15.696,39.052,-15.67],"3.375":[15.749,39.238,-15.62],"3.4167":[15.761,39.31,-15.616],"3.4583":[15.753,39.334,-15.631],"3.5":[15.715,39.333,-15.68],"3.5417":[15.693,39.32,-15.713],"3.5833":[15.671,39.319,-15.739]}},"righthand":{"rotation":{"0.0":[125.962,-21.476,-104.022],"0.0417":[129.625,-22.118,-106.67],"0.0833":[131.475,-22.383,-108.011],"0.125":[133.348,-22.952,-108.979],"0.1667":[137.434,-26.925,-108.129],"0.2083":[139.547,-31.047,-105.722],"0.25":[140.998,-34.621,-103.491],"0.2917":[141.301,-38.582,-100.152],"0.3333":[141.227,-39.806,-98.773],"0.375":[142.055,-40.812,-97.144],"0.4167":[142.429,-41.051,-96.601],"0.4583":[142.76,-41.653,-95.601],"0.5":[142.861,-41.928,-95.162],"0.5417":[142.953,-42.243,-94.752],"0.5833":[143.03,-43.138,-93.96],"0.625":[143.264,-43.99,-93.928],"0.6667":[144.786,-46.417,-95.031],"0.7083":[145.743,-47.716,-95.794],"0.75":[146.828,-49.001,-96.627],"0.7917":[149.552,-51.431,-98.357],"0.8333":[151.346,-52.559,-99.317],"0.875":[154.125,-53.845,-100.798],"0.9167":[155.393,-54.308,-101.461],"0.9583":[156.649,-54.714,-102.108],"1.0":[159.002,-55.362,-103.351],"1.0417":[160.018,-55.582,-103.915],"1.0833":[161.552,-55.802,-104.887],"1.125":[162,-55.819,-105.241],"1.1667":[162.246,-55.81,-105.469],"1.2083":[162.314,-55.684,-105.709],"1.25":[162.235,-55.559,-105.797],"1.2917":[162.075,-55.157,-106.055],"1.3333":[162.086,-54.868,-106.301],"1.375":[162.215,-54.507,-106.666],"1.4167":[165.486,-50.565,-111.203],"1.4583":[170.162,-47.393,-117.377],"1.5":[172.087,-23.961,-135.725],"1.5417":[167.001,-4.155,-146.409],"1.5833":[163.243,16.702,-153.81],"1.625":[142.018,53.368,-177.383],"1.6667":[121.123,61.95,-197.937],"1.7083":[103.21,64.832,-215.081],"1.75":[99.663,65.143,-218.207],"1.7917":[95.53,65.384,-222.025],"1.8333":[89.943,65.605,-227.801],"1.875":[87.575,65.578,-230.538],"1.9167":[83.144,65.444,-235.763],"1.9583":[80.961,65.263,-238.41],"2.0":[78.747,64.951,-241.178],"2.0417":[73.744,63.228,-248.029],"2.0833":[71.569,61.463,-251.928],"2.125":[69.849,58.1,-257.501],"2.1667":[69.922,56.416,-259.641],"2.2083":[73.057,53.275,-262.083],"2.25":[74.088,52.165,-263.086],"2.2917":[73.945,51.748,-263.894],"2.3333":[73.303,51.146,-265.387],"2.375":[73.253,50.982,-265.646],"2.4167":[73.55,50.938,-265.373],"2.4583":[74.667,51.113,-263.868],"2.5":[75.206,51.201,-263.131],"2.5417":[75.976,51.324,-262.066],"2.5833":[75.755,51.277,-262.159],"2.625":[75.273,51.188,-262.519],"2.6667":[73.943,50.953,-263.61],"2.7083":[72.615,50.5,-265.076],"2.75":[71.539,50.09,-266.389],"2.7917":[86.026,54.197,-253.438],"2.8333":[104.286,55.971,-236.448],"2.875":[129.571,54.84,-207.706],"2.9167":[136.351,54.315,-196.197],"2.9583":[154.316,22.651,-163.327],"3.0":[153.756,-8.992,-149.027],"3.0417":[145.934,-30.143,-134.265],"3.0833":[134.729,-24.396,-117.376],"3.125":[132.169,-17.281,-112.979],"3.1667":[126.136,-12.592,-105.357],"3.2083":[125.923,-13.926,-105.118],"3.25":[126.411,-16.298,-105.787],"3.2917":[127.707,-20.854,-107.411],"3.3333":[127.868,-22.1,-107.515],"3.375":[127.838,-23.614,-107.189],"3.4167":[127.674,-23.858,-106.844],"3.4583":[127.415,-23.736,-106.395],"3.5":[126.695,-22.697,-105.224],"3.5417":[126.315,-22.047,-104.604],"3.5833":[125.961,-21.472,-104.019]},"position":{"0.0":[-13.607,38.909,-12.645],"0.0417":[-12.883,39.459,-13.129],"0.0833":[-12.522,39.733,-13.372],"0.125":[-12.127,40.006,-13.579],"0.1667":[-11.04,40.552,-13.717],"0.2083":[-10.288,40.819,-13.586],"0.25":[-9.695,41.013,-13.461],"0.2917":[-9.234,41.111,-13.318],"0.3333":[-9.108,41.11,-13.254],"0.375":[-8.854,41.108,-13.136],"0.4167":[-8.763,41.087,-13.088],"0.4583":[-8.631,41.02,-13.035],"0.5":[-8.575,40.98,-13.013],"0.5417":[-8.516,40.935,-12.974],"0.5833":[-8.351,40.825,-12.753],"0.625":[-8.24,40.768,-12.493],"0.6667":[-8.046,40.74,-11.826],"0.7083":[-7.951,40.733,-11.471],"0.75":[-7.856,40.722,-11.14],"0.7917":[-7.674,40.653,-10.658],"0.8333":[-7.589,40.588,-10.543],"0.875":[-7.481,40.483,-10.458],"0.9167":[-7.441,40.429,-10.442],"0.9583":[-7.403,40.375,-10.437],"1.0":[-7.335,40.277,-10.447],"1.0417":[-7.307,40.241,-10.453],"1.0833":[-7.262,40.212,-10.448],"1.125":[-7.243,40.217,-10.437],"1.1667":[-7.223,40.232,-10.424],"1.2083":[-7.189,40.271,-10.396],"1.25":[-7.176,40.3,-10.38],"1.2917":[-7.161,40.39,-10.346],"1.3333":[-7.164,40.451,-10.327],"1.375":[-7.17,40.524,-10.306],"1.4167":[-7.488,41.217,-10.202],"1.4583":[-7.382,41.759,-10.093],"1.5":[-7.778,43.595,-10.323],"1.5417":[-8.294,44.643,-10.7],"1.5833":[-8.653,45.089,-11.106],"1.625":[-9.08,45.364,-11.871],"1.6667":[-9.182,45.385,-12.106],"1.7083":[-9.291,45.424,-12.204],"1.75":[-9.33,45.436,-12.21],"1.7917":[-9.368,45.449,-12.22],"1.8333":[-9.415,45.462,-12.233],"1.875":[-9.45,45.467,-12.252],"1.9167":[-9.504,45.472,-12.28],"1.9583":[-9.544,45.474,-12.301],"2.0":[-9.61,45.483,-12.335],"2.0417":[-10.015,45.552,-12.529],"2.0833":[-10.431,45.63,-12.727],"2.125":[-11.144,45.783,-13.081],"2.1667":[-11.483,45.871,-13.258],"2.2083":[-12.063,46.065,-13.592],"2.25":[-12.276,46.139,-13.707],"2.2917":[-12.376,46.172,-13.736],"2.3333":[-12.529,46.224,-13.763],"2.375":[-12.598,46.241,-13.769],"2.4167":[-12.656,46.251,-13.772],"2.4583":[-12.755,46.254,-13.765],"2.5":[-12.804,46.254,-13.762],"2.5417":[-12.895,46.249,-13.751],"2.5833":[-12.931,46.244,-13.747],"2.625":[-12.964,46.242,-13.741],"2.6667":[-13.023,46.23,-13.73],"2.7083":[-13.058,46.201,-13.719],"2.75":[-13.098,46.165,-13.706],"2.7917":[-13.263,46.043,-13.634],"2.8333":[-13.388,45.963,-13.559],"2.875":[-13.655,45.169,-13.498],"2.9167":[-13.793,44.462,-13.523],"2.9583":[-13.999,42.411,-13.491],"3.0":[-13.892,41.008,-13.392],"3.0417":[-13.716,39.746,-13.366],"3.0833":[-13.733,38.106,-13.539],"3.125":[-13.763,37.637,-13.56],"3.1667":[-13.661,38.053,-13.062],"3.2083":[-13.641,38.272,-12.886],"3.25":[-13.628,38.502,-12.724],"3.2917":[-13.614,38.863,-12.501],"3.3333":[-13.609,38.95,-12.471],"3.375":[-13.61,38.995,-12.529],"3.4167":[-13.61,38.995,-12.557],"3.4583":[-13.609,38.994,-12.575],"3.5":[-13.608,38.955,-12.609],"3.5417":[-13.607,38.929,-12.628],"3.5833":[-13.606,38.909,-12.645]}},"weapon":{"rotation":{"0.0":[-31.788,27.336,75.517],"0.0417":[-35.635,27.937,72.445],"0.0833":[-37.58,28.172,70.889],"0.125":[-39.559,28.706,69.701],"0.1667":[-43.991,32.575,70.014],"0.2083":[-46.413,36.628,72.07],"0.25":[-48.154,40.15,74.006],"0.2917":[-48.725,44.095,77.144],"0.3333":[-48.726,45.32,78.475],"0.375":[-49.703,46.294,79.939],"0.4167":[-50.129,46.518,80.418],"0.4583":[-50.538,47.106,81.338],"0.5":[-50.671,47.377,81.747],"0.5417":[-50.797,47.688,82.127],"0.5833":[-50.955,48.578,82.853],"0.625":[-51.286,49.419,82.796],"0.6667":[-53.205,51.777,81.29],"0.7083":[-54.413,53.03,80.271],"0.75":[-55.78,54.26,79.148],"0.7917":[-59.181,56.543,76.711],"0.8333":[-61.391,57.568,75.31],"0.875":[-64.769,58.682,73.186],"0.9167":[-66.296,59.063,72.243],"0.9583":[-67.801,59.385,71.325],"1.0":[-70.601,59.869,69.594],"1.0417":[-71.796,60.015,68.833],"1.0833":[-73.571,60.122,67.59],"1.125":[-74.077,60.106,67.168],"1.1667":[-74.349,60.078,66.907],"1.2083":[-74.392,59.949,66.687],"1.25":[-74.271,59.83,66.639],"1.2917":[-73.989,59.444,66.493],"1.3333":[-73.927,59.156,66.308],"1.375":[-73.982,58.789,66.002],"1.4167":[-76.683,54.63,61.804],"1.4583":[-81.09,51.108,55.643],"1.5":[-79.938,27.642,39.188],"1.5417":[-73.092,8.291,29.394],"1.5833":[-67.886,-12.253,22.228],"1.625":[-45.335,-47.809,-0.378],"1.6667":[-26.889,-56.076,-17.783],"1.7083":[-9.764,-59.216,-31.394],"1.75":[-4.556,-59.631,-33.801],"1.7917":[1.342,-60.017,-36.794],"1.8333":[9.956,-60.47,-41.48],"1.875":[13.085,-60.555,-43.786],"1.9167":[18.593,-60.65,-48.242],"1.9583":[21.149,-60.593,-50.55],"2.0":[23.691,-60.413,-53.018],"2.0417":[29.461,-59.026,-59.501],"2.0833":[32.285,-57.429,-63.505],"2.125":[35.373,-54.223,-69.559],"2.1667":[35.956,-52.549,-72.015],"2.2083":[34.097,-49.207,-75.303],"2.25":[33.443,-48.033,-76.568],"2.2917":[33.673,-47.629,-77.412],"2.3333":[34.36,-47.076,-78.909],"2.375":[34.432,-46.916,-79.182],"2.4167":[34.168,-46.851,-78.946],"2.4583":[33.118,-46.947,-77.543],"2.5":[32.612,-46.998,-76.855],"2.5417":[31.889,-47.067,-75.863],"2.5833":[32.098,-47.036,-75.936],"2.625":[32.552,-46.98,-76.253],"2.6667":[33.806,-46.838,-77.225],"2.7083":[35.097,-46.483,-78.601],"2.75":[36.153,-46.153,-79.851],"2.7917":[22.383,-49.314,-68.151],"2.8333":[3.198,-50.339,-53.657],"2.875":[-31.431,-49.011,-28.89],"2.9167":[-40.26,-48.602,-18.401],"2.9583":[-58.814,-17.656,13.378],"3.0":[-60.026,13.969,27.788],"3.0417":[-53.157,35.479,42.809],"3.0833":[-41.051,30.118,61.126],"3.125":[-38.194,23.059,65.892],"3.1667":[-31.892,18.45,74.193],"3.2083":[-31.683,19.786,74.451],"3.25":[-32.208,22.154,73.722],"3.2917":[-33.608,26.698,71.932],"3.3333":[-33.793,27.941,71.802],"3.375":[-33.781,29.456,72.122],"3.4167":[-33.612,29.701,72.484],"3.4583":[-33.338,29.582,72.965],"3.5":[-32.569,28.55,74.225],"3.5417":[-32.163,27.903,74.892],"3.5833":[-31.787,27.332,75.521]},"position":{"0.0":[-5.739,53.734,-14.653],"0.0417":[-4.924,54.375,-15.025],"0.0833":[-4.52,54.695,-15.209],"0.125":[-4.084,55.008,-15.357],"0.1667":[-2.914,55.598,-15.372],"0.2083":[-2.117,55.854,-15.182],"0.25":[-1.493,56.028,-15.016],"0.2917":[-1.019,56.088,-14.865],"0.3333":[-0.89,56.065,-14.802],"0.375":[-0.61,56.005,-14.658],"0.4167":[-0.508,55.96,-14.599],"0.4583":[-0.365,55.86,-14.535],"0.5":[-0.306,55.806,-14.509],"0.5417":[-0.244,55.75,-14.468],"0.5833":[-0.075,55.628,-14.243],"0.625":[0.039,55.584,-13.975],"0.6667":[0.254,55.614,-13.26],"0.7083":[0.361,55.641,-12.876],"0.75":[0.467,55.661,-12.513],"0.7917":[0.682,55.633,-11.955],"0.8333":[0.789,55.574,-11.793],"0.875":[0.929,55.467,-11.636],"0.9167":[0.984,55.409,-11.589],"0.9583":[1.036,55.349,-11.553],"1.0":[1.128,55.237,-11.506],"1.0417":[1.165,55.195,-11.489],"1.0833":[1.225,55.159,-11.447],"1.125":[1.248,55.165,-11.424],"1.1667":[1.269,55.182,-11.405],"1.2083":[1.303,55.227,-11.375],"1.25":[1.315,55.261,-11.361],"1.2917":[1.328,55.362,-11.328],"1.3333":[1.325,55.429,-11.308],"1.375":[1.318,55.508,-11.282],"1.4167":[1.029,56.243,-11.064],"1.4583":[1.158,56.884,-10.788],"1.5":[0.597,59.344,-10.63],"1.5417":[-0.183,60.821,-10.926],"1.5833":[-0.748,61.507,-11.177],"1.625":[-1.582,62.122,-11.958],"1.6667":[-1.788,62.209,-12.332],"1.7083":[-1.897,62.277,-12.536],"1.75":[-1.903,62.3,-12.572],"1.7917":[-1.911,62.325,-12.614],"1.8333":[-1.95,62.366,-12.662],"1.875":[-2.004,62.381,-12.688],"1.9167":[-2.099,62.409,-12.732],"1.9583":[-2.164,62.424,-12.765],"2.0":[-2.259,62.447,-12.814],"2.0417":[-2.753,62.551,-13.085],"2.0833":[-3.251,62.654,-13.361],"2.125":[-4.143,62.853,-13.868],"2.1667":[-4.583,62.955,-14.122],"2.2083":[-5.419,63.177,-14.613],"2.25":[-5.726,63.254,-14.781],"2.2917":[-5.855,63.287,-14.829],"2.3333":[-6.047,63.337,-14.881],"2.375":[-6.125,63.352,-14.895],"2.4167":[-6.185,63.361,-14.901],"2.4583":[-6.267,63.363,-14.889],"2.5":[-6.308,63.362,-14.883],"2.5417":[-6.386,63.357,-14.867],"2.5833":[-6.416,63.35,-14.865],"2.625":[-6.444,63.346,-14.863],"2.6667":[-6.491,63.328,-14.859],"2.7083":[-6.531,63.293,-14.864],"2.75":[-6.581,63.254,-14.866],"2.7917":[-6.811,63.211,-14.611],"2.8333":[-6.969,63.18,-14.311],"2.875":[-6.995,62.317,-13.83],"2.9167":[-6.883,61.52,-13.714],"2.9583":[-6.314,59.019,-13.827],"3.0":[-5.983,57.268,-14.258],"3.0417":[-5.848,55.734,-14.74],"3.0833":[-5.757,53.436,-15.276],"3.125":[-5.725,52.632,-15.347],"3.1667":[-5.719,52.644,-15.013],"3.2083":[-5.717,52.896,-14.854],"3.25":[-5.71,53.222,-14.694],"3.2917":[-5.705,53.774,-14.454],"3.3333":[-5.709,53.902,-14.423],"3.375":[-5.722,53.982,-14.486],"3.4167":[-5.727,53.979,-14.52],"3.4583":[-5.73,53.961,-14.545],"3.5":[-5.734,53.855,-14.599],"3.5417":[-5.736,53.79,-14.627],"3.5833":[-5.738,53.734,-14.654]}},"lefthand_1":{"position":[0,0,-3],"scale":[1,1.5,1]},"righthand_1":{"position":[0,2,0],"scale":[1,1.5,1]},"weapon_1":{"rotation":{"1.7083":[0,0,0],"2.2083":[-10,0,0],"3.0":[-10,0,0],"3.1667":[0,0,0]}},"camera":{"rotation":{"0.0":[-0.002,-0.003,0],"0.0417":[-0.752,0.01,-0.12],"0.0833":[-1.38,0.035,-0.225],"0.125":[-1.904,0.087,-0.308],"0.1667":[-2.149,0.325,-0.307],"0.2083":[-2.184,0.58,-0.197],"0.25":[-2.183,0.876,-0.039],"0.2917":[-1.873,1.401,0.36],"0.3333":[-1.556,1.56,0.564],"0.375":[-1.062,1.69,0.898],"0.4167":[-0.956,1.704,0.987],"0.4583":[-0.859,1.71,1.021],"0.5":[-0.807,1.709,1.005],"0.5417":[-0.718,1.712,0.955],"0.5833":[-0.214,1.692,0.72],"0.625":[0.223,1.641,0.563],"0.6667":[1.33,1.477,0.22],"0.7083":[1.905,1.384,0.053],"0.75":[2.455,1.295,-0.099],"0.7917":[3.281,1.173,-0.323],"0.8333":[3.513,1.143,-0.391],"0.875":[3.632,1.099,-0.512],"0.9167":[3.641,1.086,-0.559],"0.9583":[3.649,1.075,-0.599],"1.0":[3.657,1.06,-0.659],"1.0417":[3.648,1.054,-0.683],"1.0833":[3.626,1.039,-0.712],"1.125":[3.606,1.03,-0.719],"1.1667":[3.585,1.013,-0.727],"1.2083":[3.524,0.977,-0.721],"1.25":[3.493,0.959,-0.701],"1.2917":[3.392,0.916,-0.606],"1.3333":[3.331,0.888,-0.538],"1.375":[3.26,0.848,-0.442],"1.4167":[3.169,0.795,-0.319],"1.4583":[2.812,0.634,0.043],"1.5":[1.716,0.362,0.658],"1.5417":[1.06,0.211,0.996],"1.5833":[0.452,0.067,1.304],"1.625":[-0.273,-0.16,1.687],"1.6667":[-0.365,-0.239,1.763],"1.7083":[-0.494,-0.398,1.867],"1.75":[-0.541,-0.464,1.899],"1.7917":[-0.569,-0.531,1.927],"1.8333":[-0.616,-0.637,1.96],"1.875":[-0.626,-0.678,1.971],"1.9167":[-0.645,-0.731,1.977],"1.9583":[-0.654,-0.738,1.977],"2.0":[-0.607,-0.685,1.906],"2.0417":[-0.664,-0.37,1.5],"2.0833":[-0.857,-0.153,1.255],"2.125":[-1.107,0.083,0.991],"2.1667":[-1.627,0.579,0.468],"2.2083":[-1.908,1.054,0.007],"2.25":[-1.928,1.259,-0.204],"2.2917":[-1.945,1.437,-0.416],"2.3333":[-1.952,1.739,-0.8],"2.375":[-1.946,1.845,-0.947],"2.4167":[-1.926,1.926,-1.038],"2.4583":[-1.86,2.016,-1.075],"2.5":[-1.833,2.044,-1.066],"2.5417":[-1.783,2.09,-1.047],"2.5833":[-1.744,2.103,-1.016],"2.625":[-1.692,2.104,-0.979],"2.6667":[-1.522,2.052,-0.855],"2.7083":[-1.398,2,-0.763],"2.75":[-1.235,1.933,-0.65],"2.7917":[-0.663,1.349,-0.297],"2.8333":[-0.262,0.839,-0.056],"2.875":[0.572,-0.365,0.472],"2.9167":[0.939,-0.934,0.744],"2.9583":[1.434,-1.742,1.237],"3.0":[1.493,-1.862,1.448],"3.0417":[1.435,-1.747,1.587],"3.0833":[1.083,-1.191,1.661],"3.125":[0.725,-0.843,1.643],"3.1667":[-0.125,-0.073,1.457],"3.2083":[-0.305,0.092,1.265],"3.25":[-0.26,0.065,0.955],"3.2917":[0.04,-0.157,0.118],"3.3333":[0.176,-0.259,-0.201],"3.375":[0.211,-0.248,-0.321],"3.4167":[0.171,-0.203,-0.273],"3.4583":[0.131,-0.146,-0.201],"3.5":[0.04,-0.044,-0.066],"3.5417":[0.012,-0.014,-0.018],"3.5833":[0,0.002,-0.002]}}},"sound_effects":{"0.0":{"effect":"melee.silencefd.inspect"}}},"draw":{"loop":"hold_on_last_frame","animation_length":0.83,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[90.466,-9.382,122.589],"0.04":[93.159,-9.539,120.455],"0.08":[95.804,-9.845,118.339],"0.12":[98.559,-9.546,116.17],"0.17":[101.51,-7.864,113.947],"0.21":[104.728,-3.801,111.643],"0.25":[107.997,2.215,109.607],"0.29":[111.114,8.786,108.319],"0.33":[114.557,16.66,108.422],"0.38":[117.632,23.482,109.445],"0.42":[119.118,26.243,110.095],"0.46":[119.844,27.353,110.663],"0.5":[120.58,28.671,111.617],"0.54":[121.277,30.005,112.952],"0.58":[121.689,30.772,114],"0.62":[121.505,30.39,114.07],"0.67":[120.797,29.002,113.383],"0.71":[120.255,27.93,112.968],"0.75":[120.28,28.06,113.441],"0.79":[120.604,28.815,114.39],"0.83":[120.958,29.593,115.373]},"position":{"0.0":[18.806,30.361,-13.074],"0.04":[18.712,31.462,-13.102],"0.08":[18.638,32.559,-13.128],"0.12":[18.526,33.679,-13.174],"0.17":[18.312,34.846,-13.271],"0.21":[17.917,36.165,-13.46],"0.25":[17.394,37.55,-13.748],"0.29":[16.885,38.77,-14.128],"0.33":[16.403,39.646,-14.713],"0.38":[16.016,40.133,-15.301],"0.42":[15.837,40.174,-15.566],"0.46":[15.76,39.966,-15.685],"0.5":[15.704,39.722,-15.781],"0.54":[15.674,39.388,-15.832],"0.58":[15.663,39.107,-15.85],"0.62":[15.66,39.028,-15.828],"0.67":[15.671,39.093,-15.765],"0.71":[15.681,39.182,-15.716],"0.75":[15.682,39.227,-15.708],"0.79":[15.677,39.275,-15.722],"0.83":[15.671,39.322,-15.739]}},"righthand":{"rotation":{"0.0":[161.83,30.162,-49.819],"0.04":[155.875,30.764,-59.06],"0.08":[149.818,30.775,-68.642],"0.12":[143.867,29.925,-78.128],"0.17":[138.33,28.044,-87.013],"0.21":[133.512,25.083,-94.792],"0.25":[129.615,21.098,-101.054],"0.29":[126.988,15.471,-104.029],"0.33":[125.343,8.539,-104],"0.38":[124.139,1.572,-103.644],"0.42":[123.383,-5.767,-103.855],"0.46":[123.056,-13.142,-103.901],"0.5":[123.067,-18.423,-103.942],"0.54":[123.548,-20.235,-104.149],"0.58":[124.368,-19.947,-104.392],"0.62":[125.069,-19.556,-104.357],"0.67":[125.374,-19.507,-103.447],"0.71":[125.524,-19.545,-102.629],"0.75":[125.678,-20.075,-102.854],"0.79":[125.816,-20.775,-103.436],"0.83":[125.963,-21.474,-104.02]},"position":{"0.0":[-10.677,35.561,-8.092],"0.04":[-11.576,35.347,-8.333],"0.08":[-12.474,35.019,-8.572],"0.12":[-13.316,34.67,-8.811],"0.17":[-14.061,34.388,-9.061],"0.21":[-14.667,34.263,-9.34],"0.25":[-15.1,34.386,-9.649],"0.29":[-15.171,35.301,-10.043],"0.33":[-14.908,36.864,-10.513],"0.38":[-14.598,38.167,-11],"0.42":[-14.287,38.879,-11.511],"0.46":[-13.935,39.342,-12.043],"0.5":[-13.678,39.627,-12.465],"0.54":[-13.595,39.706,-12.656],"0.58":[-13.608,39.6,-12.692],"0.62":[-13.627,39.462,-12.701],"0.67":[-13.635,39.285,-12.698],"0.71":[-13.643,39.105,-12.669],"0.75":[-13.635,39.02,-12.659],"0.79":[-13.621,38.965,-12.65],"0.83":[-13.607,38.911,-12.646]}},"weapon":{"rotation":{"0.0":[-65.512,-25.588,126.01],"0.04":[-59.784,-25.838,117.303],"0.08":[-54.018,-25.546,108.32],"0.12":[-48.402,-24.453,99.468],"0.17":[-43.203,-22.397,91.2],"0.21":[-38.677,-19.323,83.964],"0.25":[-34.997,-15.275,78.136],"0.29":[-32.51,-9.619,75.45],"0.33":[-30.944,-2.675,75.654],"0.38":[-29.779,4.298,76.132],"0.42":[-29.041,11.639,75.996],"0.46":[-28.724,19.015,75.981],"0.5":[-28.747,24.297,75.934],"0.54":[-29.254,26.107,75.67],"0.58":[-30.11,25.816,75.334],"0.62":[-30.838,25.421,75.291],"0.67":[-31.157,25.371,76.167],"0.71":[-31.313,25.407,76.968],"0.75":[-31.479,25.936,76.724],"0.79":[-31.628,26.636,76.124],"0.83":[-31.788,27.334,75.519]},"position":{"0.0":[-3.33,47.828,-8.011],"0.04":[-3.982,47.769,-8.465],"0.08":[-4.658,47.639,-8.925],"0.12":[-5.322,47.519,-9.392],"0.17":[-5.941,47.485,-9.876],"0.21":[-6.477,47.612,-10.385],"0.25":[-6.894,47.979,-10.918],"0.29":[-7.013,49.083,-11.527],"0.33":[-6.836,50.794,-12.194],"0.38":[-6.611,52.265,-12.842],"0.42":[-6.376,53.201,-13.48],"0.46":[-6.092,53.9,-14.095],"0.5":[-5.878,54.36,-14.549],"0.54":[-5.795,54.504,-14.733],"0.58":[-5.78,54.394,-14.743],"0.62":[-5.773,54.24,-14.73],"0.67":[-5.768,54.031,-14.717],"0.71":[-5.77,53.825,-14.684],"0.75":[-5.761,53.763,-14.671],"0.79":[-5.75,53.75,-14.661],"0.83":[-5.739,53.736,-14.654]}},"lefthand_1":{"position":[0,0,-3],"scale":[1,1.5,1]},"righthand_1":{"position":[0,2,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.002,-0.019,-0.004],"0.04":[0.07,0.018,0.243],"0.08":[0.22,0.153,0.69],"0.12":[0.37,0.292,1.137],"0.17":[0.42,0.428,1.067],"0.21":[0.358,0.448,0.785],"0.25":[0.24,0.369,0.784],"0.29":[0.122,0.29,0.784],"0.33":[0.003,0.183,0.513],"0.38":[-0.121,0.075,0.243],"0.42":[-0.239,-0.029,-0.028],"0.46":[-0.337,-0.119,-0.239],"0.5":[-0.368,-0.148,-0.345],"0.54":[-0.368,-0.148,-0.357],"0.58":[-0.263,-0.114,-0.216],"0.62":[-0.164,-0.085,-0.086],"0.67":[-0.06,-0.057,0.043],"0.71":[0.046,-0.024,0.184],"0.75":[0.033,-0.024,0.137],"0.79":[0.015,-0.019,0.054],"0.83":[0.002,-0.019,-0.004]}}},"sound_effects":{"0.11":{"effect":"melee.silencefd.draw"}}},"melee_1":{"loop":true,"animation_length":1.875,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[118.529,27.607,108.603],"0.0417":[115.383,26.017,95.329],"0.0833":[114.793,36.265,84.727],"0.125":[122.378,46.003,91.426],"0.1667":[127.093,42.282,100.539],"0.2083":[133.237,28.104,108.371],"0.25":[157.193,-21.158,108.546],"0.2917":[210.457,-58.72,76.83],"0.3333":[199.798,-45.961,108.833],"0.375":[158.543,42.486,124.308],"0.4167":[158.113,45.947,123.932],"0.4583":[158.133,40.705,126.291],"0.5":[149.322,36.989,123.622],"0.5417":[143.825,34.202,122.475],"0.5833":[141.175,32.753,122.069],"0.625":[133.562,28.276,121.429],"0.6667":[131.108,26.764,121.375],"0.7083":[126.3,23.773,121.456],"0.75":[119.281,19.427,121.933],"0.7917":[114.684,16.683,122.383],"0.8333":[112.405,15.37,122.624],"0.875":[105.641,11.681,123.319],"0.9167":[103.411,10.544,123.513],"0.9583":[98.986,8.409,123.802],"1.0":[92.476,5.552,123.865],"1.0417":[88.086,6.344,115.721],"1.0833":[86.533,7.756,108.893],"1.125":[92.238,16.148,95.997],"1.1667":[95.725,19.39,94.485],"1.2083":[99.904,21.677,97.197],"1.25":[107.77,19.535,99.517],"1.2917":[111.478,19.575,97.362],"1.3333":[112.234,21.012,95.204],"1.375":[116.182,23.226,100.728],"1.4167":[117.749,23.452,104.665],"1.4583":[119.742,24.403,110.197],"1.5":[121.188,26.673,115.757],"1.5417":[121.462,27.717,117.082],"1.5833":[121.318,28.12,116.922],"1.625":[120.489,29.044,115.254],"1.6667":[120.344,29.267,114.939],"1.7083":[120.429,29.495,114.925],"1.75":[120.835,29.559,115.27],"1.7917":[120.956,29.594,115.368],"1.8333":[120.954,29.595,115.371],"1.875":[120.956,29.592,115.372]},"position":{"0.0":[16.148,39.738,-15.447],"0.0417":[16.896,40.544,-14.872],"0.0833":[16.941,40.886,-14.518],"0.125":[16.469,40.365,-14.527],"0.1667":[16.143,39.898,-14.6],"0.2083":[14.292,39.062,-13.821],"0.25":[9.113,38.234,-11.63],"0.2917":[5.805,37.746,-9.193],"0.3333":[4.938,37.489,-7.081],"0.375":[3.645,37.664,-2.441],"0.4167":[4.565,37.384,-2.094],"0.4583":[6.611,36.8,-2.406],"0.5":[8.034,36.203,-2.833],"0.5417":[8.953,35.812,-3.076],"0.5833":[9.41,35.621,-3.19],"0.625":[10.752,35.072,-3.527],"0.6667":[11.196,34.898,-3.643],"0.7083":[12.081,34.574,-3.896],"0.75":[13.406,34.147,-4.343],"0.7917":[14.296,33.906,-4.71],"0.8333":[14.741,33.799,-4.918],"0.875":[16.096,33.541,-5.663],"0.9167":[16.554,33.476,-5.955],"0.9583":[17.477,33.381,-6.619],"1.0":[18.891,33.326,-7.827],"1.0417":[20.46,34.086,-10.728],"1.0833":[21.154,34.785,-12.775],"1.125":[18.541,37.378,-16.185],"1.1667":[17.133,38.216,-16.542],"1.2083":[16.197,39.025,-15.83],"1.25":[15.759,39.556,-14.531],"1.2917":[15.796,39.744,-14.171],"1.3333":[15.905,39.816,-14.171],"1.375":[16.192,39.784,-14.414],"1.4167":[16.259,39.726,-14.545],"1.4583":[16.258,39.687,-14.821],"1.5":[16.053,39.734,-15.285],"1.5417":[15.933,39.707,-15.501],"1.5833":[15.879,39.671,-15.584],"1.625":[15.737,39.533,-15.759],"1.6667":[15.704,39.492,-15.795],"1.7083":[15.675,39.43,-15.808],"1.75":[15.674,39.349,-15.753],"1.7917":[15.673,39.321,-15.739],"1.8333":[15.672,39.32,-15.74],"1.875":[15.671,39.319,-15.739]}},"righthand":{"rotation":{"0.0":[132.577,-19.9,-109.279],"0.0417":[138.705,-16.99,-116.748],"0.0833":[120.597,-20.323,-112.225],"0.125":[74.643,-22.404,-102.299],"0.1667":[65.712,-22.473,-101.565],"0.2083":[43.306,-23.081,-98.383],"0.25":[109.256,-19.577,-92.688],"0.2917":[142.503,-23.949,-101.376],"0.3333":[155.706,-19.416,-104.213],"0.375":[205.377,16.216,-97.941],"0.4167":[207.908,28.635,-90.521],"0.4583":[208.721,35.724,-86.598],"0.5":[210.871,35.222,-85.031],"0.5417":[212.229,34.393,-84.271],"0.5833":[212.882,33.853,-83.973],"0.625":[214.711,31.853,-83.38],"0.6667":[215.277,31.089,-83.27],"0.7083":[216.353,29.452,-83.159],"0.75":[217.813,26.872,-83.206],"0.7917":[218.695,25.164,-83.324],"0.8333":[219.109,24.332,-83.394],"0.875":[220.238,22.044,-83.595],"0.9167":[220.578,21.372,-83.643],"0.9583":[221.197,20.213,-83.679],"1.0":[224.417,15.576,-83.834],"1.0417":[217.26,22.891,-84.1],"1.0833":[133.455,61.02,-132.897],"1.125":[138.82,14.534,-113.325],"1.1667":[139.871,2.153,-109.316],"1.2083":[134.775,-9.105,-108.791],"1.25":[126.957,-16.014,-110.279],"1.2917":[121.567,-18.943,-106.814],"1.3333":[119.271,-19.45,-104.697],"1.375":[118.864,-21.41,-101.509],"1.4167":[120.277,-22.02,-101.232],"1.4583":[122.717,-22.739,-101.329],"1.5":[126.111,-22.774,-102.977],"1.5417":[126.747,-22.545,-104.532],"1.5833":[126.787,-22.378,-105.355],"1.625":[127.173,-21.991,-107.095],"1.6667":[127.312,-21.875,-107.521],"1.7083":[127.373,-21.709,-107.778],"1.75":[126.967,-21.595,-106.742],"1.7917":[126.566,-21.553,-105.654],"1.8333":[126.357,-21.531,-105.079],"1.875":[125.963,-21.473,-104.022]},"position":{"0.0":[-14.703,39.067,-12.35],"0.0417":[-17.635,39.397,-11.06],"0.0833":[-21.961,39.835,-7.929],"0.125":[-28.048,39.421,-3.386],"0.1667":[-28.415,39.014,-3.205],"0.2083":[-29.784,38.233,-2.827],"0.25":[-17.32,41.466,-16.854],"0.2917":[-8.418,42.83,-22.007],"0.3333":[-3.972,43.419,-19.751],"0.375":[6.337,41.48,-8.915],"0.4167":[5.916,38.998,-6.221],"0.4583":[5.197,36.92,-4.351],"0.5":[5.003,36.316,-3.935],"0.5417":[4.911,36.005,-3.744],"0.5833":[4.875,35.874,-3.668],"0.625":[4.786,35.555,-3.522],"0.6667":[4.761,35.471,-3.495],"0.7083":[4.711,35.328,-3.468],"0.75":[4.626,35.154,-3.474],"0.7917":[4.548,35.049,-3.501],"0.8333":[4.499,34.995,-3.515],"0.875":[4.306,34.815,-3.563],"0.9167":[4.224,34.741,-3.572],"0.9583":[4.024,34.57,-3.588],"1.0":[4.175,34.236,-3.321],"1.0417":[1.428,33.815,-4.515],"1.0833":[-10.534,34.423,-10.256],"1.125":[-11.604,34.881,-13.696],"1.1667":[-11.471,35.018,-14.328],"1.2083":[-11.905,35.86,-15.133],"1.25":[-12.442,37.418,-15.157],"1.2917":[-12.633,38.101,-13.988],"1.3333":[-12.7,38.362,-13.175],"1.375":[-13.055,38.826,-11.874],"1.4167":[-13.193,38.892,-11.694],"1.4583":[-13.36,39.01,-11.719],"1.5":[-13.431,39.11,-12.478],"1.5417":[-13.503,39.148,-12.822],"1.5833":[-13.535,39.156,-12.957],"1.625":[-13.586,39.154,-13.019],"1.6667":[-13.592,39.146,-12.965],"1.7083":[-13.599,39.116,-12.863],"1.75":[-13.605,39.046,-12.776],"1.7917":[-13.605,38.991,-12.724],"1.8333":[-13.606,38.963,-12.699],"1.875":[-13.607,38.908,-12.644]}},"weapon":{"rotation":{"0.0":[-38.677,25.67,69.522],"0.0417":[-44.96,22.607,61.422],"0.0833":[-26.171,26.196,67.931],"0.125":[21.71,26.313,82.516],"0.1667":[30.864,25.645,83.852],"0.2083":[48.094,16.142,78.906],"0.25":[-17.221,3.408,96.096],"0.2917":[-46.987,15.694,94.122],"0.3333":[-60.772,15.347,91.579],"0.375":[-117.243,-8.194,91.249],"0.4167":[-121.377,-20.576,97.921],"0.4583":[-122.894,-27.965,101.352],"0.5":[-124.776,-27.231,102.544],"0.5417":[-125.894,-26.264,103.031],"0.5833":[-126.415,-25.661,103.191],"0.625":[-127.883,-23.386,103.522],"0.6667":[-128.454,-22.283,103.893],"0.7083":[-129.674,-19.547,105.037],"0.75":[-131.305,-14.791,107.043],"0.7917":[-132.109,-11.729,108.09],"0.8333":[-132.417,-10.374,108.417],"0.875":[-131.056,-11.534,103.789],"0.9167":[-126.815,-18.246,94.994],"0.9583":[-124.641,-21.046,90.107],"1.0":[-128.383,-16.76,90.176],"1.0417":[-120.394,-23.306,89.529],"1.0833":[-37.347,-55.245,45.053],"1.125":[-44.105,-8.907,64.953],"1.1667":[-45.527,3.437,68.877],"1.2083":[-40.69,14.83,69.863],"1.25":[-32.771,21.865,69.171],"1.2917":[-27.185,24.817,73.231],"1.3333":[-24.79,25.317,75.607],"1.375":[-24.352,27.275,78.847],"1.4167":[-25.83,27.892,78.963],"1.4583":[-28.39,28.613,78.583],"1.5":[-31.956,28.632,76.54],"1.5417":[-32.621,28.398,74.912],"1.5833":[-32.662,28.231,74.085],"1.625":[-33.062,27.84,72.303],"1.6667":[-33.206,27.723,71.861],"1.7083":[-33.269,27.556,71.599],"1.75":[-32.841,27.446,72.681],"1.7917":[-32.421,27.407,73.816],"1.8333":[-32.202,27.387,74.415],"1.875":[-31.789,27.332,75.518]},"position":{"0.0":[-6.654,54,-14.139],"0.0417":[-9.458,54.524,-12.612],"0.0833":[-14.312,54.881,-10.091],"0.125":[-22.217,54.102,-6.17],"0.1667":[-22.96,53.603,-5.941],"0.2083":[-25.231,52.605,-5.22],"0.25":[-9.995,56.023,-19.362],"0.2917":[-0.076,57.529,-23.517],"0.3333":[4.624,57.996,-20.702],"0.375":[14.44,55.936,-7.314],"0.4167":[13.913,53.608,-4.498],"0.4583":[13.184,51.638,-2.622],"0.5":[12.933,51.01,-2.145],"0.5417":[12.8,50.675,-1.912],"0.5833":[12.743,50.531,-1.816],"0.625":[12.593,50.162,-1.613],"0.6667":[12.547,50.057,-1.566],"0.7083":[12.457,49.873,-1.505],"0.75":[12.314,49.632,-1.466],"0.7917":[12.2,49.482,-1.466],"0.8333":[12.134,49.406,-1.469],"0.875":[11.876,49.157,-1.494],"0.9167":[11.747,49.058,-1.51],"0.9583":[11.504,48.848,-1.519],"1.0":[11.524,48.375,-1.19],"1.0417":[9.05,48.15,-2.542],"1.0833":[-1.878,49.177,-10.314],"1.125":[-3.127,49.259,-14.788],"1.1667":[-3.07,49.452,-15.602],"1.2083":[-3.699,50.493,-16.753],"1.25":[-4.523,52.279,-17.108],"1.2917":[-4.898,52.943,-16.118],"1.3333":[-5.038,53.159,-15.371],"1.375":[-5.41,53.601,-14.086],"1.4167":[-5.503,53.675,-13.869],"1.4583":[-5.594,53.808,-13.827],"1.5":[-5.563,53.942,-14.486],"1.5417":[-5.622,54.02,-14.81],"1.5833":[-5.657,54.05,-14.943],"1.625":[-5.702,54.092,-14.992],"1.6667":[-5.706,54.093,-14.934],"1.7083":[-5.712,54.067,-14.829],"1.75":[-5.723,53.96,-14.754],"1.7917":[-5.728,53.87,-14.714],"1.8333":[-5.732,53.823,-14.696],"1.875":[-5.739,53.733,-14.652]}},"lefthand_1":{"position":{"0.0":[0,0,-3],"0.25":[2,0,-3],"0.5":[2,0,-3],"0.6667":[0,0,-3]},"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.3333":[-25,0,0],"0.375":[-27.5,0,0],"0.6667":[-27.5,0,0],"0.75":[0,0,0]},"position":[0,2,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.072,-0.012,-0.048],"0.0417":[0.389,0.028,-0.259],"0.0833":[0.461,0.058,-0.375],"0.125":[0.447,0.211,-0.808],"0.1667":[0.43,0.256,-0.914],"0.2083":[0.339,0.288,-0.914],"0.25":[-0.024,0.36,-0.471],"0.2917":[-0.331,0.223,0.132],"0.3333":[-0.399,0.175,0.512],"0.375":[0.119,0.106,0.576],"0.4167":[-0.441,-0.02,-0.59],"0.4583":[0.235,-0.26,0.791],"0.5":[0.366,-0.371,1.197],"0.5417":[0.159,-0.359,0.898],"0.5833":[0.048,-0.35,0.753],"0.625":[-0.141,-0.319,0.615],"0.6667":[-0.17,-0.308,0.631],"0.7083":[-0.213,-0.283,0.669],"0.75":[-0.246,-0.243,0.739],"0.7917":[-0.252,-0.207,0.786],"0.8333":[-0.252,-0.198,0.794],"0.875":[-0.251,-0.153,0.786],"0.9167":[-0.251,-0.135,0.77],"0.9583":[-0.239,-0.109,0.722],"1.0":[-0.208,-0.037,0.62],"1.0417":[-0.152,0.052,0.533],"1.0833":[-0.072,0.141,0.462],"1.125":[0.228,0.347,0.27],"1.1667":[0.339,0.325,0.247],"1.2083":[0.588,0.207,0.24],"1.25":[0.81,-0.024,0.096],"1.2917":[0.882,-0.175,-0.036],"1.3333":[0.894,-0.201,-0.059],"1.375":[0.566,-0.101,-0.028],"1.4167":[0.416,-0.062,-0.012],"1.4583":[0.249,-0.058,-0.038],"1.5":[0.178,-0.156,-0.252],"1.5417":[0.146,-0.162,-0.237],"1.5833":[0.134,-0.143,-0.121],"1.625":[0.11,-0.069,0.172],"1.6667":[0.096,-0.053,0.157],"1.7083":[0.067,-0.02,0.057],"1.75":[0.029,-0.003,-0.013],"1.7917":[0.012,-0.012,-0.005],"1.8333":[0.006,-0.014,-0.005],"1.875":[0,-0.017,-0.005]}}},"sound_effects":{"0.1667":{"effect":"melee.silencefd.melee_1"}}},"melee_2":{"loop":true,"animation_length":1.875,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-21.05,141.659,-55.774],"0.0417":[-41.953,139.515,-70.736],"0.0833":[-36.11,143.128,-66.782],"0.125":[-19.289,156.091,-54.554],"0.1667":[-22.16,156.42,-54.491],"0.2083":[-30.416,155.892,-55.483],"0.25":[-44.739,155.665,-57.401],"0.2917":[-53.901,155.238,-62.801],"0.3333":[-58.661,155.115,-67.571],"0.375":[-68.477,156.636,-77.648],"0.4167":[-69.472,157.368,-77.551],"0.4583":[-71.289,158.825,-77.082],"0.5":[-73.643,160.962,-75.781],"0.5417":[-75.025,162.35,-74.584],"0.5833":[-75.669,163.026,-73.903],"0.625":[-77.472,165.003,-71.591],"0.6667":[-78.04,165.642,-70.745],"0.7083":[-79.145,166.889,-68.972],"0.75":[-80.778,168.683,-66.17],"0.7917":[-81.881,169.826,-64.255],"0.8333":[-82.442,170.383,-63.298],"0.875":[-84.205,171.989,-60.469],"0.9167":[-84.823,172.499,-59.551],"0.9583":[-86.127,173.498,-57.787],"1.0":[-87.523,174.449,-56.132],"1.0417":[-91.484,172.751,-66.315],"1.0833":[-93.331,171.91,-71.879],"1.125":[-87.764,163.851,-84.003],"1.1667":[-84.272,160.608,-85.512],"1.2083":[-80.097,158.323,-82.805],"1.25":[-72.23,160.464,-80.484],"1.2917":[-68.525,160.426,-82.637],"1.3333":[-67.766,158.984,-84.796],"1.375":[-63.817,156.775,-79.272],"1.4167":[-62.25,156.547,-75.333],"1.4583":[-60.258,155.592,-69.802],"1.5":[-58.807,153.327,-64.242],"1.5417":[-58.54,152.284,-62.918],"1.5833":[-58.686,151.883,-63.077],"1.625":[-59.509,150.958,-64.743],"1.6667":[-59.658,150.735,-65.062],"1.7083":[-59.573,150.506,-65.076],"1.75":[-59.165,150.44,-64.722],"1.7917":[-59.04,150.409,-64.629],"1.8333":[-59.043,150.407,-64.631],"1.875":[-59.044,150.409,-64.633]},"position":{"0.0":[11.643,32.087,-10.528],"0.0417":[11.395,30.577,-9.796],"0.0833":[11.755,29.559,-9.925],"0.125":[12.494,27.259,-10.537],"0.1667":[12.282,27.074,-10.423],"0.2083":[12.064,27.103,-10.096],"0.25":[12.621,28.088,-9.507],"0.2917":[15.466,28.589,-9.442],"0.3333":[18.052,28.719,-9.553],"0.375":[23.996,29.024,-9.814],"0.4167":[24.317,29.16,-9.761],"0.4583":[24.843,29.436,-9.646],"0.5":[25.381,29.864,-9.461],"0.5417":[25.597,30.151,-9.324],"0.5833":[25.668,30.297,-9.254],"0.625":[25.769,30.744,-9.037],"0.6667":[25.766,30.891,-8.961],"0.7083":[25.729,31.194,-8.811],"0.75":[25.616,31.649,-8.583],"0.7917":[25.525,31.955,-8.432],"0.8333":[25.481,32.106,-8.357],"0.875":[25.381,32.567,-8.143],"0.9167":[25.363,32.719,-8.077],"0.9583":[25.374,33.022,-7.945],"1.0":[25.448,33.325,-7.825],"1.0417":[23.462,34.312,-11.16],"1.0833":[22.358,34.875,-12.936],"1.125":[19.335,37.316,-16.147],"1.1667":[18.433,38.118,-16.543],"1.2083":[16.664,38.863,-16.237],"1.25":[15.727,39.502,-14.702],"1.2917":[15.795,39.754,-14.128],"1.3333":[15.906,39.824,-14.153],"1.375":[16.195,39.784,-14.414],"1.4167":[16.26,39.724,-14.543],"1.4583":[16.258,39.689,-14.819],"1.5":[16.054,39.737,-15.285],"1.5417":[15.933,39.706,-15.502],"1.5833":[15.878,39.669,-15.582],"1.625":[15.738,39.531,-15.759],"1.6667":[15.704,39.492,-15.794],"1.7083":[15.675,39.432,-15.808],"1.75":[15.673,39.349,-15.752],"1.7917":[15.671,39.321,-15.739],"1.8333":[15.671,39.322,-15.739],"1.875":[15.671,39.322,-15.741]}},"righthand":{"rotation":{"0.0":[32.311,16.397,94.9],"0.0417":[31.524,16.163,95.035],"0.0833":[23.311,12.82,95.94],"0.125":[22.584,22.103,101.596],"0.1667":[46.77,36.851,109.683],"0.2083":[95.15,35.903,129.163],"0.25":[135.178,11.654,115.313],"0.2917":[177.512,10.464,123.374],"0.3333":[178.834,11.975,119.93],"0.375":[199.471,18.615,125.583],"0.4167":[193.732,-9.2,141.184],"0.4583":[173.966,-27.888,164.283],"0.5":[162.066,-23.829,177.62],"0.5417":[155.623,-19.444,184.93],"0.5833":[152.869,-16.883,188.104],"0.625":[146.22,-8.151,195.971],"0.6667":[144.47,-4.984,198.123],"0.7083":[141.531,1.607,201.875],"0.75":[138.231,11.928,206.479],"0.7917":[136.588,18.974,209.111],"0.8333":[135.894,22.521,210.351],"0.875":[134.244,33.196,213.981],"0.9167":[133.826,36.745,215.228],"0.9583":[133.181,43.808,217.887],"1.0":[132.881,54.235,222.751],"1.0417":[133.453,61.023,227.1],"1.0833":[133.453,61.022,227.101],"1.125":[141.603,14.019,247.842],"1.1667":[139.869,2.15,250.684],"1.2083":[134.777,-9.104,251.207],"1.25":[126.958,-16.014,249.72],"1.2917":[121.569,-18.941,253.185],"1.3333":[119.272,-19.452,255.303],"1.375":[118.863,-21.409,258.49],"1.4167":[120.278,-22.021,258.768],"1.4583":[122.721,-22.741,258.669],"1.5":[126.108,-22.774,257.021],"1.5417":[126.748,-22.542,255.468],"1.5833":[126.789,-22.376,254.648],"1.625":[127.173,-21.99,252.906],"1.6667":[127.311,-21.874,252.477],"1.7083":[127.373,-21.707,252.221],"1.75":[126.969,-21.596,253.262],"1.7917":[126.564,-21.551,254.346],"1.8333":[126.352,-21.53,254.92],"1.875":[125.961,-21.475,255.976]},"position":{"0.0":[-2.43,27.698,-8.387],"0.0417":[-2.229,27.731,-8.408],"0.0833":[-0.635,27.7,-8.427],"0.125":[4.263,30.859,-10.275],"0.1667":[4.726,33.714,-12.063],"0.2083":[2.807,37.696,-16.897],"0.25":[-8.264,42.319,-18.609],"0.2917":[-18.242,47.428,-16.062],"0.3333":[-23.06,49.504,-13.527],"0.375":[-29.125,44.367,-6.714],"0.4167":[-26.594,40.223,-6.435],"0.4583":[-23.516,37.454,-6.228],"0.5":[-21.9,36.54,-6.153],"0.5417":[-20.92,36.089,-6.162],"0.5833":[-20.451,35.905,-6.185],"0.625":[-19.121,35.481,-6.341],"0.6667":[-18.7,35.375,-6.422],"0.7083":[-17.878,35.206,-6.627],"0.75":[-16.678,35.028,-7.038],"0.7917":[-15.883,34.94,-7.376],"0.8333":[-15.485,34.903,-7.564],"0.875":[-14.259,34.797,-8.194],"0.9167":[-13.838,34.761,-8.424],"0.9583":[-12.963,34.684,-8.91],"1.0":[-11.556,34.542,-9.697],"1.0417":[-10.536,34.423,-10.257],"1.0833":[-10.536,34.423,-10.257],"1.125":[-11.252,34.842,-13.487],"1.1667":[-11.473,35.017,-14.328],"1.2083":[-11.904,35.858,-15.135],"1.25":[-12.441,37.416,-15.155],"1.2917":[-12.631,38.101,-13.985],"1.3333":[-12.697,38.364,-13.175],"1.375":[-13.052,38.826,-11.874],"1.4167":[-13.192,38.89,-11.692],"1.4583":[-13.36,39.013,-11.718],"1.5":[-13.43,39.111,-12.477],"1.5417":[-13.502,39.147,-12.823],"1.5833":[-13.536,39.156,-12.955],"1.625":[-13.586,39.154,-13.018],"1.6667":[-13.592,39.146,-12.965],"1.7083":[-13.599,39.116,-12.864],"1.75":[-13.606,39.046,-12.777],"1.7917":[-13.605,38.991,-12.725],"1.8333":[-13.606,38.964,-12.697],"1.875":[-13.606,38.909,-12.646]}},"weapon":{"rotation":{"0.0":[63.914,-28.134,-100.651],"0.0417":[64.666,-27.706,-100.647],"0.0833":[72.06,-22.272,-100.815],"0.125":[75.921,-30.92,-96.673],"0.1667":[54.998,-51.311,-86.657],"0.2083":[-10.489,-53.607,-42.973],"0.25":[-49.628,-21.771,-48.438],"0.2917":[-90.191,-7.657,-38.067],"0.3333":[-91.918,-8.677,-41.523],"0.375":[-113.134,-8.976,-38.085],"0.4167":[-99.566,16.028,-21.14],"0.4583":[-73.878,27.463,5.236],"0.5":[-63.101,20.32,16.611],"0.5417":[-52.461,16.068,20.602],"0.5833":[-49.139,13.323,22.891],"0.625":[-44.971,3.257,29.915],"0.6667":[-44.041,-0.234,31.891],"0.7083":[-42.742,-7.332,35.471],"0.75":[-41.982,-18.134,40.298],"0.7917":[-42.171,-25.354,43.439],"0.8333":[-42.465,-28.951,45.059],"0.875":[-44.232,-39.625,50.464],"0.9167":[-45.171,-43.121,52.572],"0.9583":[-47.747,-49.976,57.522],"1.0":[-54.341,-59.702,68.026],"1.0417":[-61.952,-65.538,78.66],"1.0833":[-61.952,-65.538,78.66],"1.125":[-45.884,-19.363,82.158],"1.1667":[-42.965,-2.38,76.505],"1.2083":[-40.691,14.829,69.861],"1.25":[-32.772,21.865,69.169],"1.2917":[-27.187,24.815,73.23],"1.3333":[-24.791,25.32,75.607],"1.375":[-24.351,27.274,78.847],"1.4167":[-25.83,27.893,78.963],"1.4583":[-28.394,28.615,78.58],"1.5":[-31.953,28.632,76.538],"1.5417":[-32.623,28.395,74.912],"1.5833":[-32.663,28.229,74.088],"1.625":[-33.062,27.838,72.304],"1.6667":[-33.205,27.722,71.86],"1.7083":[-33.269,27.554,71.597],"1.75":[-32.844,27.447,72.686],"1.7917":[-32.419,27.406,73.816],"1.8333":[-32.197,27.386,74.415],"1.875":[-31.787,27.334,75.516]},"position":{"0.0":[5.542,43.416,-9.992],"0.0417":[5.769,43.429,-9.994],"0.0833":[7.596,43.192,-9.806],"0.125":[12.63,46.296,-11.425],"0.1667":[12.681,49.699,-13.438],"0.2083":[9.588,54.384,-18.53],"0.25":[-3.737,58.816,-19.956],"0.2917":[-13.953,64.03,-15.636],"0.3333":[-18.896,65.971,-13.023],"0.375":[-24.704,60.527,-5.307],"0.4167":[-21.265,57.242,-5.611],"0.4583":[-17.374,54.724,-6.538],"0.5":[-15.343,53.691,-6.892],"0.5417":[-14.09,53.104,-7.116],"0.5833":[-13.49,52.84,-7.227],"0.625":[-11.782,52.144,-7.56],"0.6667":[-11.243,51.94,-7.673],"0.7083":[-10.195,51.571,-7.903],"0.75":[-8.692,51.09,-8.264],"0.7917":[-7.719,50.805,-8.518],"0.8333":[-7.242,50.67,-8.651],"0.875":[-5.81,50.28,-9.071],"0.9167":[-5.332,50.151,-9.218],"0.9583":[-4.363,49.891,-9.525],"1.0":[-2.864,49.473,-10.011],"1.0417":[-1.818,49.166,-10.355],"1.0833":[-1.818,49.166,-10.355],"1.125":[-2.696,49.237,-14.542],"1.1667":[-3.052,49.462,-15.632],"1.2083":[-3.698,50.489,-16.756],"1.25":[-4.522,52.277,-17.106],"1.2917":[-4.897,52.941,-16.115],"1.3333":[-5.036,53.161,-15.371],"1.375":[-5.408,53.601,-14.086],"1.4167":[-5.502,53.672,-13.867],"1.4583":[-5.594,53.811,-13.826],"1.5":[-5.563,53.943,-14.485],"1.5417":[-5.621,54.019,-14.811],"1.5833":[-5.658,54.05,-14.941],"1.625":[-5.702,54.091,-14.991],"1.6667":[-5.706,54.093,-14.933],"1.7083":[-5.711,54.067,-14.83],"1.75":[-5.723,53.961,-14.755],"1.7917":[-5.728,53.869,-14.716],"1.8333":[-5.732,53.824,-14.694],"1.875":[-5.739,53.735,-14.654]}},"lefthand_1":{"position":[0,0,-3],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.3333":[-24.6657,-4.2085,-9.0795],"0.7083":[0,0,0]},"position":[0,2,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.077,-0.327,0.54],"0.0417":[0.09,-0.308,0.117],"0.0833":[0.196,-0.295,-0.148],"0.125":[0.39,-0.257,-0.642],"0.1667":[0.323,-0.251,-0.591],"0.2083":[-0.061,-0.245,-0.305],"0.25":[-0.51,-0.209,0.032],"0.2917":[0.185,-0.031,-1.073],"0.3333":[-0.151,0.055,0.219],"0.375":[0.089,0.049,-1.436],"0.4167":[0.066,0.089,-0.608],"0.4583":[0.067,0.177,0.136],"0.5":[0.188,0.239,-0.294],"0.5417":[0.132,0.164,-0.21],"0.5833":[0.082,0.095,-0.132],"0.625":[-0.02,-0.047,0.025],"0.6667":[-0.04,-0.077,0.045],"0.7083":[-0.074,-0.131,0.071],"0.75":[-0.112,-0.193,0.106],"0.7917":[-0.125,-0.22,0.154],"0.8333":[-0.126,-0.227,0.189],"0.875":[-0.114,-0.237,0.414],"0.9167":[-0.104,-0.238,0.508],"0.9583":[-0.082,-0.239,0.692],"1.0":[-0.042,-0.245,0.827],"1.0417":[-0.001,-0.26,0.739],"1.0833":[0.025,-0.27,0.65],"1.125":[0.09,-0.266,0.417],"1.1667":[0.106,-0.229,0.343],"1.2083":[0.134,-0.142,0.233],"1.25":[0.123,-0.072,0.215],"1.2917":[0.087,-0.051,0.215],"1.3333":[0.071,-0.051,0.215],"1.375":[0.015,-0.061,0.224],"1.4167":[-0.012,-0.051,0.188],"1.4583":[-0.076,0.025,-0.005],"1.5":[-0.082,0.07,-0.074],"1.5417":[0.035,0.064,0.184],"1.5833":[0.065,0.058,0.24],"1.625":[0.045,0.008,0.083],"1.6667":[0.04,-0.004,0.049],"1.7083":[0.021,-0.012,0.061],"1.75":[0.006,-0.015,0.083],"1.7917":[0.001,-0.018,0.049],"1.8333":[0.001,-0.018,0.027],"1.875":[0.001,-0.018,-0.006]}}},"sound_effects":{"0.125":{"effect":"melee.silencefd.melee_2"}}},"melee_3":{"loop":true,"animation_length":1.875,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[-21.05,141.659,-55.774],"0.0417":[-41.953,139.515,-70.736],"0.0833":[-36.11,143.128,-66.782],"0.125":[-19.289,156.091,-54.554],"0.1667":[-22.16,156.42,-54.491],"0.2083":[-30.416,155.892,-55.483],"0.25":[-44.739,155.665,-57.401],"0.2917":[-53.901,155.238,-62.801],"0.3333":[-58.661,155.115,-67.571],"0.375":[-68.477,156.636,-77.648],"0.4167":[-69.472,157.368,-77.551],"0.4583":[-71.289,158.825,-77.082],"0.5":[-73.643,160.962,-75.781],"0.5417":[-75.025,162.35,-74.584],"0.5833":[-75.669,163.026,-73.903],"0.625":[-77.472,165.003,-71.591],"0.6667":[-78.04,165.642,-70.745],"0.7083":[-79.145,166.889,-68.972],"0.75":[-80.778,168.683,-66.17],"0.7917":[-81.881,169.826,-64.255],"0.8333":[-82.442,170.383,-63.298],"0.875":[-84.205,171.989,-60.469],"0.9167":[-84.823,172.499,-59.551],"0.9583":[-86.127,173.498,-57.787],"1.0":[-87.523,174.449,-56.132],"1.0417":[-91.484,172.751,-66.315],"1.0833":[-93.331,171.91,-71.879],"1.125":[-87.764,163.851,-84.003],"1.1667":[-84.272,160.608,-85.512],"1.2083":[-80.097,158.323,-82.805],"1.25":[-72.23,160.464,-80.484],"1.2917":[-68.525,160.426,-82.637],"1.3333":[-67.766,158.984,-84.796],"1.375":[-63.817,156.775,-79.272],"1.4167":[-62.25,156.547,-75.333],"1.4583":[-60.258,155.592,-69.802],"1.5":[-58.807,153.327,-64.242],"1.5417":[-58.54,152.284,-62.918],"1.5833":[-58.686,151.883,-63.077],"1.625":[-59.509,150.958,-64.743],"1.6667":[-59.658,150.735,-65.062],"1.7083":[-59.573,150.506,-65.076],"1.75":[-59.165,150.44,-64.722],"1.7917":[-59.04,150.409,-64.629],"1.8333":[-59.043,150.407,-64.631],"1.875":[-59.044,150.409,-64.633]},"position":{"0.0":[11.643,32.087,-10.528],"0.0417":[11.395,30.577,-9.796],"0.0833":[11.755,29.559,-9.925],"0.125":[12.494,27.259,-10.537],"0.1667":[12.282,27.074,-10.423],"0.2083":[12.064,27.103,-10.096],"0.25":[12.621,28.088,-9.507],"0.2917":[15.466,28.589,-9.442],"0.3333":[18.052,28.719,-9.553],"0.375":[23.996,29.024,-9.814],"0.4167":[24.317,29.16,-9.761],"0.4583":[24.843,29.436,-9.646],"0.5":[25.381,29.864,-9.461],"0.5417":[25.597,30.151,-9.324],"0.5833":[25.668,30.297,-9.254],"0.625":[25.769,30.744,-9.037],"0.6667":[25.766,30.891,-8.961],"0.7083":[25.729,31.194,-8.811],"0.75":[25.616,31.649,-8.583],"0.7917":[25.525,31.955,-8.432],"0.8333":[25.481,32.106,-8.357],"0.875":[25.381,32.567,-8.143],"0.9167":[25.363,32.719,-8.077],"0.9583":[25.374,33.022,-7.945],"1.0":[25.448,33.325,-7.825],"1.0417":[23.462,34.312,-11.16],"1.0833":[22.358,34.875,-12.936],"1.125":[19.335,37.316,-16.147],"1.1667":[18.433,38.118,-16.543],"1.2083":[16.664,38.863,-16.237],"1.25":[15.727,39.502,-14.702],"1.2917":[15.795,39.754,-14.128],"1.3333":[15.906,39.824,-14.153],"1.375":[16.195,39.784,-14.414],"1.4167":[16.26,39.724,-14.543],"1.4583":[16.258,39.689,-14.819],"1.5":[16.054,39.737,-15.285],"1.5417":[15.933,39.706,-15.502],"1.5833":[15.878,39.669,-15.582],"1.625":[15.738,39.531,-15.759],"1.6667":[15.704,39.492,-15.794],"1.7083":[15.675,39.432,-15.808],"1.75":[15.673,39.349,-15.752],"1.7917":[15.671,39.321,-15.739],"1.8333":[15.671,39.322,-15.739],"1.875":[15.671,39.322,-15.741]}},"righthand":{"rotation":{"0.0":[32.311,16.397,94.9],"0.0417":[31.524,16.163,95.035],"0.0833":[23.311,12.82,95.94],"0.125":[22.584,22.103,101.596],"0.1667":[46.77,36.851,109.683],"0.2083":[95.15,35.903,129.163],"0.25":[135.178,11.654,115.313],"0.2917":[177.512,10.464,123.374],"0.3333":[178.834,11.975,119.93],"0.375":[199.471,18.615,125.583],"0.4167":[193.732,-9.2,141.184],"0.4583":[173.966,-27.888,164.283],"0.5":[162.066,-23.829,177.62],"0.5417":[155.623,-19.444,184.93],"0.5833":[152.869,-16.883,188.104],"0.625":[146.22,-8.151,195.971],"0.6667":[144.47,-4.984,198.123],"0.7083":[141.531,1.607,201.875],"0.75":[138.231,11.928,206.479],"0.7917":[136.588,18.974,209.111],"0.8333":[135.894,22.521,210.351],"0.875":[134.244,33.196,213.981],"0.9167":[133.826,36.745,215.228],"0.9583":[133.181,43.808,217.887],"1.0":[132.881,54.235,222.751],"1.0417":[133.453,61.023,227.1],"1.0833":[133.453,61.022,227.101],"1.125":[141.603,14.019,247.842],"1.1667":[139.869,2.15,250.684],"1.2083":[134.777,-9.104,251.207],"1.25":[126.958,-16.014,249.72],"1.2917":[121.569,-18.941,253.185],"1.3333":[119.272,-19.452,255.303],"1.375":[118.863,-21.409,258.49],"1.4167":[120.278,-22.021,258.768],"1.4583":[122.721,-22.741,258.669],"1.5":[126.108,-22.774,257.021],"1.5417":[126.748,-22.542,255.468],"1.5833":[126.789,-22.376,254.648],"1.625":[127.173,-21.99,252.906],"1.6667":[127.311,-21.874,252.477],"1.7083":[127.373,-21.707,252.221],"1.75":[126.969,-21.596,253.262],"1.7917":[126.564,-21.551,254.346],"1.8333":[126.352,-21.53,254.92],"1.875":[125.961,-21.475,255.976]},"position":{"0.0":[-2.43,27.698,-8.387],"0.0417":[-2.229,27.731,-8.408],"0.0833":[-0.635,27.7,-8.427],"0.125":[4.263,30.859,-10.275],"0.1667":[4.726,33.714,-12.063],"0.2083":[2.807,37.696,-16.897],"0.25":[-8.264,42.319,-18.609],"0.2917":[-18.242,47.428,-16.062],"0.3333":[-23.06,49.504,-13.527],"0.375":[-29.125,44.367,-6.714],"0.4167":[-26.594,40.223,-6.435],"0.4583":[-23.516,37.454,-6.228],"0.5":[-21.9,36.54,-6.153],"0.5417":[-20.92,36.089,-6.162],"0.5833":[-20.451,35.905,-6.185],"0.625":[-19.121,35.481,-6.341],"0.6667":[-18.7,35.375,-6.422],"0.7083":[-17.878,35.206,-6.627],"0.75":[-16.678,35.028,-7.038],"0.7917":[-15.883,34.94,-7.376],"0.8333":[-15.485,34.903,-7.564],"0.875":[-14.259,34.797,-8.194],"0.9167":[-13.838,34.761,-8.424],"0.9583":[-12.963,34.684,-8.91],"1.0":[-11.556,34.542,-9.697],"1.0417":[-10.536,34.423,-10.257],"1.0833":[-10.536,34.423,-10.257],"1.125":[-11.252,34.842,-13.487],"1.1667":[-11.473,35.017,-14.328],"1.2083":[-11.904,35.858,-15.135],"1.25":[-12.441,37.416,-15.155],"1.2917":[-12.631,38.101,-13.985],"1.3333":[-12.697,38.364,-13.175],"1.375":[-13.052,38.826,-11.874],"1.4167":[-13.192,38.89,-11.692],"1.4583":[-13.36,39.013,-11.718],"1.5":[-13.43,39.111,-12.477],"1.5417":[-13.502,39.147,-12.823],"1.5833":[-13.536,39.156,-12.955],"1.625":[-13.586,39.154,-13.018],"1.6667":[-13.592,39.146,-12.965],"1.7083":[-13.599,39.116,-12.864],"1.75":[-13.606,39.046,-12.777],"1.7917":[-13.605,38.991,-12.725],"1.8333":[-13.606,38.964,-12.697],"1.875":[-13.606,38.909,-12.646]}},"weapon":{"rotation":{"0.0":[63.914,-28.134,-100.651],"0.0417":[64.666,-27.706,-100.647],"0.0833":[72.06,-22.272,-100.815],"0.125":[75.921,-30.92,-96.673],"0.1667":[54.998,-51.311,-86.657],"0.2083":[-10.489,-53.607,-42.973],"0.25":[-49.628,-21.771,-48.438],"0.2917":[-90.191,-7.657,-38.067],"0.3333":[-91.918,-8.677,-41.523],"0.375":[-113.134,-8.976,-38.085],"0.4167":[-99.566,16.028,-21.14],"0.4583":[-73.878,27.463,5.236],"0.5":[-63.101,20.32,16.611],"0.5417":[-52.461,16.068,20.602],"0.5833":[-49.139,13.323,22.891],"0.625":[-44.971,3.257,29.915],"0.6667":[-44.041,-0.234,31.891],"0.7083":[-42.742,-7.332,35.471],"0.75":[-41.982,-18.134,40.298],"0.7917":[-42.171,-25.354,43.439],"0.8333":[-42.465,-28.951,45.059],"0.875":[-44.232,-39.625,50.464],"0.9167":[-45.171,-43.121,52.572],"0.9583":[-47.747,-49.976,57.522],"1.0":[-54.341,-59.702,68.026],"1.0417":[-61.952,-65.538,78.66],"1.0833":[-61.952,-65.538,78.66],"1.125":[-45.884,-19.363,82.158],"1.1667":[-42.965,-2.38,76.505],"1.2083":[-40.691,14.829,69.861],"1.25":[-32.772,21.865,69.169],"1.2917":[-27.187,24.815,73.23],"1.3333":[-24.791,25.32,75.607],"1.375":[-24.351,27.274,78.847],"1.4167":[-25.83,27.893,78.963],"1.4583":[-28.394,28.615,78.58],"1.5":[-31.953,28.632,76.538],"1.5417":[-32.623,28.395,74.912],"1.5833":[-32.663,28.229,74.088],"1.625":[-33.062,27.838,72.304],"1.6667":[-33.205,27.722,71.86],"1.7083":[-33.269,27.554,71.597],"1.75":[-32.844,27.447,72.686],"1.7917":[-32.419,27.406,73.816],"1.8333":[-32.197,27.386,74.415],"1.875":[-31.787,27.334,75.516]},"position":{"0.0":[5.542,43.416,-9.992],"0.0417":[5.769,43.429,-9.994],"0.0833":[7.596,43.192,-9.806],"0.125":[12.63,46.296,-11.425],"0.1667":[12.681,49.699,-13.438],"0.2083":[9.588,54.384,-18.53],"0.25":[-3.737,58.816,-19.956],"0.2917":[-13.953,64.03,-15.636],"0.3333":[-18.896,65.971,-13.023],"0.375":[-24.704,60.527,-5.307],"0.4167":[-21.265,57.242,-5.611],"0.4583":[-17.374,54.724,-6.538],"0.5":[-15.343,53.691,-6.892],"0.5417":[-14.09,53.104,-7.116],"0.5833":[-13.49,52.84,-7.227],"0.625":[-11.782,52.144,-7.56],"0.6667":[-11.243,51.94,-7.673],"0.7083":[-10.195,51.571,-7.903],"0.75":[-8.692,51.09,-8.264],"0.7917":[-7.719,50.805,-8.518],"0.8333":[-7.242,50.67,-8.651],"0.875":[-5.81,50.28,-9.071],"0.9167":[-5.332,50.151,-9.218],"0.9583":[-4.363,49.891,-9.525],"1.0":[-2.864,49.473,-10.011],"1.0417":[-1.818,49.166,-10.355],"1.0833":[-1.818,49.166,-10.355],"1.125":[-2.696,49.237,-14.542],"1.1667":[-3.052,49.462,-15.632],"1.2083":[-3.698,50.489,-16.756],"1.25":[-4.522,52.277,-17.106],"1.2917":[-4.897,52.941,-16.115],"1.3333":[-5.036,53.161,-15.371],"1.375":[-5.408,53.601,-14.086],"1.4167":[-5.502,53.672,-13.867],"1.4583":[-5.594,53.811,-13.826],"1.5":[-5.563,53.943,-14.485],"1.5417":[-5.621,54.019,-14.811],"1.5833":[-5.658,54.05,-14.941],"1.625":[-5.702,54.091,-14.991],"1.6667":[-5.706,54.093,-14.933],"1.7083":[-5.711,54.067,-14.83],"1.75":[-5.723,53.961,-14.755],"1.7917":[-5.728,53.869,-14.716],"1.8333":[-5.732,53.824,-14.694],"1.875":[-5.739,53.735,-14.654]}},"lefthand_1":{"position":[0,0,-3],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.3333":[-24.6657,-4.2085,-9.0795],"0.7083":[0,0,0]},"position":[0,2,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.077,-0.327,0.54],"0.0417":[0.09,-0.308,0.117],"0.0833":[0.196,-0.295,-0.148],"0.125":[0.39,-0.257,-0.642],"0.1667":[0.323,-0.251,-0.591],"0.2083":[-0.061,-0.245,-0.305],"0.25":[-0.51,-0.209,0.032],"0.2917":[0.185,-0.031,-1.073],"0.3333":[-0.151,0.055,0.219],"0.375":[0.089,0.049,-1.436],"0.4167":[0.066,0.089,-0.608],"0.4583":[0.067,0.177,0.136],"0.5":[0.188,0.239,-0.294],"0.5417":[0.132,0.164,-0.21],"0.5833":[0.082,0.095,-0.132],"0.625":[-0.02,-0.047,0.025],"0.6667":[-0.04,-0.077,0.045],"0.7083":[-0.074,-0.131,0.071],"0.75":[-0.112,-0.193,0.106],"0.7917":[-0.125,-0.22,0.154],"0.8333":[-0.126,-0.227,0.189],"0.875":[-0.114,-0.237,0.414],"0.9167":[-0.104,-0.238,0.508],"0.9583":[-0.082,-0.239,0.692],"1.0":[-0.042,-0.245,0.827],"1.0417":[-0.001,-0.26,0.739],"1.0833":[0.025,-0.27,0.65],"1.125":[0.09,-0.266,0.417],"1.1667":[0.106,-0.229,0.343],"1.2083":[0.134,-0.142,0.233],"1.25":[0.123,-0.072,0.215],"1.2917":[0.087,-0.051,0.215],"1.3333":[0.071,-0.051,0.215],"1.375":[0.015,-0.061,0.224],"1.4167":[-0.012,-0.051,0.188],"1.4583":[-0.076,0.025,-0.005],"1.5":[-0.082,0.07,-0.074],"1.5417":[0.035,0.064,0.184],"1.5833":[0.065,0.058,0.24],"1.625":[0.045,0.008,0.083],"1.6667":[0.04,-0.004,0.049],"1.7083":[0.021,-0.012,0.061],"1.75":[0.006,-0.015,0.083],"1.7917":[0.001,-0.018,0.049],"1.8333":[0.001,-0.018,0.027],"1.875":[0.001,-0.018,-0.006]}}},"sound_effects":{"0.125":{"effect":"melee.silencefd.melee_2"}}},"static_idle":{"loop":true,"animation_length":0.21,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[120.958,29.593,115.372],"0.2099":[120.958,29.593,115.372]},"position":{"0.0":[15.672,39.32,-15.74],"0.2099":[15.672,39.32,-15.74]}},"righthand":{"rotation":{"0.0":[125.962,-21.474,-104.021],"0.2099":[125.962,-21.474,-104.021]},"position":{"0.0":[-13.606,38.909,-12.645],"0.2099":[-13.606,38.909,-12.645]}},"weapon":{"rotation":{"0.0":[-31.788,27.334,75.518],"0.2099":[-31.788,27.334,75.518]},"position":{"0.0":[-5.738,53.734,-14.653],"0.2099":[-5.738,53.734,-14.653]}},"lefthand_1":{"position":[0,0,-3],"scale":[1,1.5,1]},"righthand_1":{"position":[0,2,0],"scale":[1,1.5,1]}}},"run_start":{"animation_length":0.2333,"bones":{"melee_and_right":{"rotation":{"0.0":[0,0,0],"0.1":[10.6406,-14.4375,-20],"0.1667":[0,-30,-77.5]},"position":{"0.0":[0,0,0],"0.1":[-4.625,-7.1875,0],"0.2333":[0,-28.0806,0]}},"lefthand":{"rotation":{"0.0":[0,0,0],"0.0667":[-0.9525,-10.7269,13.8908],"0.1333":[-1.5163,-13.5284,8.465]},"position":{"0.0":[0,0,0],"0.1333":[-0.2656,-4.2969,0.1875],"0.2":[-0.5944,0.4213,0.44]}},"knife_and_right":{"rotation":{"0.0":[0,0,0],"0.1":[10.6406,-14.4375,-20],"0.1667":[8,26,-22.5]},"position":{"0.0":[0,0,0],"0.1":[-4.625,-7.1875,0],"0.2333":[-0.9,-10.0806,-6]}}}},"run_end":{"animation_length":0.7,"bones":{"melee_and_right":{"rotation":{"0.0333":[0,-30,-77.5],"0.1":[10.6406,-14.4375,-20],"0.2":[0,0,2.75],"0.3":[0,0,0]},"position":{"0.0":[0,-28.0806,0],"0.1":[-4.625,-7.1875,0],"0.1667":[0,0,0]}},"root":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.3333":[0,0,0],"0.4333":[0,0,0]},"position":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2":{"post":[0,-0.5781,0],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.3333":[0,0,0],"0.4333":[0,0,0]}},"lefthand":{"rotation":{"0.0667":[-1.5163,-17.5284,31.465],"0.1333":[-0.9525,-10.7269,13.8908],"0.2":[0,0,-10],"0.2667":[0,0,0]},"position":{"0.0":[-0.5944,-1.4538,1.565],"0.1333":[0,0,0]}},"knife_and_right":{"rotation":{"0.0333":[0,-30,-77.5],"0.1":[10.6406,-14.4375,-20],"0.2":[0,0,1.4492],"0.3":[0,0,0]},"position":{"0.0":[0,-28.0806,0],"0.1":[-4.625,-7.1875,0],"0.1667":[0,0,0]}}}},"run":{"loop":true,"animation_length":0.6,"bones":{"melee_and_right":{"rotation":{"0.0":[0,-30,-77.5],"0.0667":[0,-30,-77.5],"0.1333":{"pre":[0,-30,-48.75],"post":[0,-30,-48.75],"lerp_mode":"catmullrom"},"0.2":{"post":[0,-30,-33.5],"lerp_mode":"catmullrom"},"0.3":{"post":[-9.75,-30,-26.5312],"lerp_mode":"catmullrom"},"0.4":{"post":[-21.25,-30,-28.25],"lerp_mode":"catmullrom"},"0.4667":[0,-30,-52.98],"0.5333":[0,-30,-77.5]},"position":{"0.0":[0,-28.0806,0],"0.0667":[1.0781,-28.3769,0],"0.1333":{"pre":[-0.42,-16.9894,0],"post":[-0.42,-16.9894,0],"lerp_mode":"catmullrom"},"0.2":{"post":[-1.97,-9.5669,0],"lerp_mode":"catmullrom"},"0.3":{"post":[-2.8919,-4.8594,0],"lerp_mode":"catmullrom"},"0.4":{"post":[-1.97,-6.0475,0],"lerp_mode":"catmullrom"},"0.4667":[-0.98,-11.3919,0],"0.5333":[0,-28.0806,0]}},"root":{"rotation":{"0.0":[0,0,0],"0.0667":[0,0,0],"0.1333":{"pre":[0,0,0],"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.3333":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.4667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.5333":[0,0,0],"0.6":[0,0,0]},"position":{"0.0":[0,0,0],"0.0667":[0,-0.3125,-0.8594],"0.1333":{"pre":[0,-1.0781,-0.7344],"post":[0,-1.0781,-0.7344],"lerp_mode":"catmullrom"},"0.2":{"post":[0,-0.7656,-0.3594],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0.1094,0],"lerp_mode":"catmullrom"},"0.3333":{"post":[0,0.25,0.3594],"lerp_mode":"catmullrom"},"0.4":{"post":[0,-0.625,0.7656],"lerp_mode":"catmullrom"},"0.4667":{"post":[0,-0.4531,0.9062],"lerp_mode":"catmullrom"},"0.5333":[0,0,0.7031],"0.6":[0,0,0]}},"lefthand":{"rotation":{"0.0":[-1.5163,-13.5284,8.465],"0.0667":[0.3666,-16.9644,19.7489],"0.1333":{"pre":[-4.3575,-10.3212,6.2426],"post":[-4.3575,-10.3212,6.2426],"lerp_mode":"catmullrom"},"0.2":{"post":[-4.3575,11.8507,3.3832],"lerp_mode":"catmullrom"},"0.2667":{"post":[-4.4725,15.7063,2.5444],"lerp_mode":"catmullrom"},"0.3667":{"post":[-4.3575,11.8507,3.3832],"lerp_mode":"catmullrom"},"0.4333":{"post":[-3.3525,-6.3238,8.9144],"lerp_mode":"catmullrom"},"0.5333":[0.3666,-16.9644,19.7489],"0.6":[-1.5163,-13.5284,8.465]},"position":{"0.0":[-0.5944,0.4213,0.44],"0.0667":[-1.1256,1.0462,-0.185],"0.1333":{"pre":[1.2512,-2.5775,-0.3256],"post":[1.2512,-2.5775,-0.3256],"lerp_mode":"catmullrom"},"0.2":{"post":[4.6225,-12.5444,-0.26],"lerp_mode":"catmullrom"},"0.3":{"post":[5.5362,-13.0344,-0.26],"lerp_mode":"catmullrom"},"0.4":{"post":[4.6225,-9.5288,-0.26],"lerp_mode":"catmullrom"},"0.4667":{"post":[2.6888,-5.4525,-0.0287],"lerp_mode":"catmullrom"},"0.5333":[0.41,-0.7987,0.44],"0.6":[-0.5944,0.4213,0.44]}},"knife_and_right":{"rotation":{"0.0":[8,26,-22.5],"0.0667":[8,26,-22.5],"0.1333":{"pre":[8,26,-10.75],"post":[8,26,-10.75],"lerp_mode":"catmullrom"},"0.2":{"post":[8,26,4.5],"lerp_mode":"catmullrom"},"0.3":{"post":[3.5735,25.6893,11.8827],"lerp_mode":"catmullrom"},"0.4":{"post":[6.75,26,7.75],"lerp_mode":"catmullrom"},"0.4667":[8,26,-16.98],"0.5333":[8,26,-22.5]},"position":{"0.0":[-0.9,-10.0806,-6],"0.0667":[0.1781,-10.3769,-6],"0.1333":{"pre":[-0.32,-8.9894,-6],"post":[-0.32,-8.9894,-6],"lerp_mode":"catmullrom"},"0.2":{"post":[-0.87,-6.5669,-6],"lerp_mode":"catmullrom"},"0.3":{"post":[-1.2591,-1.6094,-6],"lerp_mode":"catmullrom"},"0.4":{"post":[0.03,-4.0475,-6],"lerp_mode":"catmullrom"},"0.4667":[0.02,-8.3919,-6],"0.5333":[0,-10.0806,-6]}}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/silencefd.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/silencefd.geo.json new file mode 100644 index 0000000..8bb96f4 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/silencefd.geo.json @@ -0,0 +1 @@ +{"format_version":"1.21.0","minecraft:geometry":[{"description":{"identifier":"geometry.silencefd","texture_width":64,"texture_height":64,"visible_bounds_width":24,"visible_bounds_height":9,"visible_bounds_offset":[0,0.5,0]},"bones":[{"name":"root","pivot":[0,4.4442,0.1281]},{"name":"bone5","parent":"root","pivot":[0,9.6875,4.3375]},{"name":"fn_lefthand","parent":"bone5","pivot":[-6,19,0]},{"name":"lefthand","parent":"fn_lefthand","pivot":[-6,19,0]},{"name":"lefthand_1","parent":"lefthand","pivot":[-6,19,0]},{"name":"lefthand_pos","parent":"lefthand_1","pivot":[0,8,0],"cubes":[{"origin":[-7,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[7,12],"uv_size":[3,12]},"east":{"uv":[8,0],"uv_size":[4,12]},"south":{"uv":[10,12],"uv_size":[3,12]},"west":{"uv":[0,12],"uv_size":[4,12]},"up":{"uv":[17,14],"uv_size":[3,4]},"down":{"uv":[18,6],"uv_size":[3,-4]}}}]},{"name":"knife_and_right","parent":"bone5","pivot":[6,19,0]},{"name":"righthand","parent":"knife_and_right","pivot":[6,19,0]},{"name":"righthand_1","parent":"righthand","pivot":[6,19,0]},{"name":"righthand_pos","parent":"righthand_1","pivot":[0,8,0],"cubes":[{"origin":[4,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[12,0],"uv_size":[3,12]},"east":{"uv":[0,0],"uv_size":[4,12]},"south":{"uv":[4,12],"uv_size":[3,12]},"west":{"uv":[4,0],"uv_size":[4,12]},"up":{"uv":[15,2],"uv_size":[3,4]},"down":{"uv":[15,10],"uv_size":[3,-4]}}}]},{"name":"weapon","parent":"knife_and_right","pivot":[0,4.4442,0.1281]},{"name":"weapon_1","parent":"weapon","pivot":[0,4.4442,0.1281],"cubes":[{"origin":[-0.4265,3.6942,-0.1305],"size":[0.853,1.26,0.8531],"uv":{"north":{"uv":[6,4],"uv_size":[0.75,1.25]},"east":{"uv":[6,6],"uv_size":[0.75,1.25]},"south":{"uv":[7,0],"uv_size":[0.75,1.25]},"west":{"uv":[7,2],"uv_size":[0.75,1.25]},"up":{"uv":[11,10],"uv_size":[0.75,0.75]},"down":{"uv":[11,11.75],"uv_size":[0.75,-0.75]}}},{"origin":[-0.4265,4.9542,0.0998],"size":[0.853,1.4271,0.623],"pivot":[-0.4265,4.9542,0.7228],"rotation":[5.9356,0,0],"uv":{"north":{"uv":[5,3],"uv_size":[0.75,1.5]},"east":{"uv":[2,8],"uv_size":[0.5,1.5]},"south":{"uv":[5,5],"uv_size":[0.75,1.5]},"west":{"uv":[8,2],"uv_size":[0.5,1.5]},"up":{"uv":[15,10],"uv_size":[0.75,0.5]},"down":{"uv":[15,11.5],"uv_size":[0.75,-0.5]}}},{"origin":[0.1906,3.6943,-0.4851],"size":[0.1732,1.26,0.1861],"pivot":[0.3638,3.6943,-0.299],"rotation":[-0.0264,50.4092,-0.0047],"uv":{"north":{"uv":[21,15],"uv_size":[0.25,1.25]},"east":{"uv":[17,21],"uv_size":[0.25,1.25]},"south":{"uv":[21,17],"uv_size":[0.25,1.25]},"west":{"uv":[19,21],"uv_size":[0.25,1.25]},"up":{"uv":[31,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2533,3.6942,-0.3103],"size":[0.1732,1.26,0.1797],"pivot":[0.4265,3.6942,-0.1305],"rotation":[-0.0264,20.4092,-0.0047],"uv":{"north":{"uv":[21,19],"uv_size":[0.25,1.25]},"east":{"uv":[21,21],"uv_size":[0.25,1.25]},"south":{"uv":[22,0],"uv_size":[0.25,1.25]},"west":{"uv":[22,2],"uv_size":[0.25,1.25]},"up":{"uv":[31,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4265,3.6942,-0.3103],"size":[0.1732,1.26,0.1797],"pivot":[-0.4265,3.6942,-0.1305],"rotation":[-0.0264,-20.4092,0.0047],"uv":{"north":{"uv":[4,22],"uv_size":[0.25,1.25]},"east":{"uv":[22,4],"uv_size":[0.25,1.25]},"south":{"uv":[5,22],"uv_size":[0.25,1.25]},"west":{"uv":[6,22],"uv_size":[0.25,1.25]},"up":{"uv":[31,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3638,3.6943,-0.4851],"size":[0.1732,1.26,0.1861],"pivot":[-0.3638,3.6943,-0.299],"rotation":[-0.0264,-50.4092,0.0047],"uv":{"north":{"uv":[22,6],"uv_size":[0.25,1.25]},"east":{"uv":[8,22],"uv_size":[0.25,1.25]},"south":{"uv":[22,8],"uv_size":[0.25,1.25]},"west":{"uv":[9,22],"uv_size":[0.25,1.25]},"up":{"uv":[31,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2203,3.6944,-0.6292],"size":[0.1732,1.26,0.2118],"pivot":[-0.2203,3.6944,-0.4174],"rotation":[-0.0264,-82.9092,0.0047],"uv":{"north":{"uv":[10,22],"uv_size":[0.25,1.25]},"east":{"uv":[22,10],"uv_size":[0.25,1.25]},"south":{"uv":[11,22],"uv_size":[0.25,1.25]},"west":{"uv":[12,22],"uv_size":[0.25,1.25]},"up":{"uv":[31,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0101,3.6944,-0.4641],"size":[0.1732,1.26,0.0211],"pivot":[-0.0101,3.6944,-0.4435],"rotation":[0,-90,0],"uv":{"north":{"uv":[22,12],"uv_size":[0.25,1.25]},"east":{"uv":[13,22],"uv_size":[0.25,1.25]},"south":{"uv":[14,22],"uv_size":[0.25,1.25]},"west":{"uv":[22,14],"uv_size":[0.25,1.25]},"up":{"uv":[31,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4266,4.9503,-0.13],"size":[0.8532,1.4204,0.2316],"pivot":[-0.4265,4.9542,-0.1305],"rotation":[-1.2522,0,0],"uv":{"north":{"uv":[0,6],"uv_size":[0.75,1.5]},"east":{"uv":[12,15],"uv_size":[0.25,1.5]},"south":{"uv":[6,0],"uv_size":[0.75,1.5]},"west":{"uv":[15,12],"uv_size":[0.25,1.5]},"up":{"uv":[26,5],"uv_size":[0.75,0.25]},"down":{"uv":[6,26.25],"uv_size":[0.75,-0.25]}}},{"origin":[0.2445,4.9489,-0.0039],"size":[0.1528,1.4202,0.1797],"pivot":[-0.4545,4.9525,-0.0564],"rotation":[-1.3325,19.995,-0.4557],"uv":{"north":{"uv":[15,14],"uv_size":[0.25,1.5]},"east":{"uv":[16,0],"uv_size":[0.25,1.5]},"south":{"uv":[16,2],"uv_size":[0.25,1.5]},"west":{"uv":[3,16],"uv_size":[0.25,1.5]},"up":{"uv":[31,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3973,4.9489,-0.0039],"size":[0.1528,1.4202,0.1797],"pivot":[0.4545,4.9525,-0.0564],"rotation":[-1.3325,-19.995,0.4557],"uv":{"north":{"uv":[4,16],"uv_size":[0.25,1.5]},"east":{"uv":[16,4],"uv_size":[0.25,1.5]},"south":{"uv":[5,16],"uv_size":[0.25,1.5]},"west":{"uv":[6,16],"uv_size":[0.25,1.5]},"up":{"uv":[31,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.5785,4.936,0.4163],"size":[0.1503,1.4232,0.2118],"pivot":[-0.1205,4.9427,0.3959],"rotation":[-9.5064,82.3968,-9.4244],"uv":{"north":{"uv":[16,6],"uv_size":[0.25,1.5]},"east":{"uv":[8,16],"uv_size":[0.25,1.5]},"south":{"uv":[16,8],"uv_size":[0.25,1.5]},"west":{"uv":[10,16],"uv_size":[0.25,1.5]},"up":{"uv":[31,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4893,4.9407,0.251],"size":[0.1517,1.4227,0.186],"pivot":[0.3615,4.9468,0.2048],"rotation":[-1.9476,-49.9837,1.4918],"uv":{"north":{"uv":[16,10],"uv_size":[0.25,1.5]},"east":{"uv":[11,16],"uv_size":[0.25,1.5]},"south":{"uv":[16,12],"uv_size":[0.25,1.5]},"west":{"uv":[13,16],"uv_size":[0.25,1.5]},"up":{"uv":[0,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0471,3.6944,-0.6292],"size":[0.1732,1.26,0.2118],"pivot":[0.2203,3.6944,-0.4174],"rotation":[-0.0264,82.9092,-0.0047],"uv":{"north":{"uv":[15,22],"uv_size":[0.25,1.25]},"east":{"uv":[16,22],"uv_size":[0.25,1.25]},"south":{"uv":[22,16],"uv_size":[0.25,1.25]},"west":{"uv":[18,22],"uv_size":[0.25,1.25]},"up":{"uv":[1,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3376,4.9407,0.251],"size":[0.1517,1.4227,0.186],"pivot":[-0.3615,4.9468,0.2048],"rotation":[-1.9476,49.9837,-1.4918],"uv":{"north":{"uv":[14,16],"uv_size":[0.25,1.5]},"east":{"uv":[16,14],"uv_size":[0.25,1.5]},"south":{"uv":[15,16],"uv_size":[0.25,1.5]},"west":{"uv":[16,16],"uv_size":[0.25,1.5]},"up":{"uv":[2,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.7289,4.936,0.4163],"size":[0.1503,1.4232,0.2118],"pivot":[0.1205,4.9427,0.3959],"rotation":[-9.5064,-82.3968,9.4244],"uv":{"north":{"uv":[0,17],"uv_size":[0.25,1.5]},"east":{"uv":[17,0],"uv_size":[0.25,1.5]},"south":{"uv":[1,17],"uv_size":[0.25,1.5]},"west":{"uv":[2,17],"uv_size":[0.25,1.5]},"up":{"uv":[3,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.668,4.9359,0.4241],"size":[0.1504,1.4232,0.0228],"pivot":[-0.031,4.9424,0.4058],"rotation":[-88.3564,88.7473,-88.2938],"uv":{"north":{"uv":[17,2],"uv_size":[0.25,1.5]},"east":{"uv":[17,4],"uv_size":[0.25,1.5]},"south":{"uv":[17,6],"uv_size":[0.25,1.5]},"west":{"uv":[7,17],"uv_size":[0.25,1.5]},"up":{"uv":[4,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4265,6.324,0.1268],"size":[0.8531,0.0414,0.4485],"pivot":[0.4266,6.3653,0.1325],"rotation":[1.079,-0.0089,0],"uv":{"north":{"uv":[26,6],"uv_size":[0.75,0.25]},"east":{"uv":[16,28],"uv_size":[0.5,0.25]},"south":{"uv":[26,7],"uv_size":[0.75,0.25]},"west":{"uv":[28,16],"uv_size":[0.5,0.25]},"up":{"uv":[17,8],"uv_size":[0.75,0.5]},"down":{"uv":[9,17.5],"uv_size":[0.75,-0.5]}}},{"origin":[-0.359,1.719,0.0529],"size":[0.7181,2.076,0.753],"uv":{"north":{"uv":[0,4],"uv_size":[0.75,2]},"east":{"uv":[4,0],"uv_size":[0.75,2]},"south":{"uv":[1,4],"uv_size":[0.75,2]},"west":{"uv":[2,4],"uv_size":[0.75,2]},"up":{"uv":[0,12],"uv_size":[0.75,0.75]},"down":{"uv":[12,0.75],"uv_size":[0.75,-0.75]}}},{"origin":[-0.2982,4.4642,0.049],"size":[0.0835,0.2018,0.6735],"pivot":[-1.0672,3.4061,0.7774],"rotation":[0,0,45],"uv":{"north":{"uv":[5,32],"uv_size":[0.25,0.25]},"east":{"uv":[8,26],"uv_size":[0.75,0.25]},"south":{"uv":[32,5],"uv_size":[0.25,0.25]},"west":{"uv":[26,8],"uv_size":[0.75,0.25]},"up":{"uv":[9,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,9.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.4518,1.4186,-0.573],"size":[0.9029,0.2038,0.7229],"uv":{"north":{"uv":[25,8],"uv_size":[1,0.25]},"east":{"uv":[10,26],"uv_size":[0.75,0.25]},"south":{"uv":[25,9],"uv_size":[1,0.25]},"west":{"uv":[26,10],"uv_size":[0.75,0.25]},"up":{"uv":[3,8],"uv_size":[1,0.75]},"down":{"uv":[8,4.75],"uv_size":[1,-0.75]}}},{"origin":[-0.0222,1.4186,0.1499],"size":[0.4732,0.2038,0.5878],"pivot":[0.4511,1.6224,0.1499],"rotation":[0,-1.1088,0],"uv":{"north":{"uv":[17,28],"uv_size":[0.5,0.25]},"east":{"uv":[28,17],"uv_size":[0.5,0.25]},"south":{"uv":[18,28],"uv_size":[0.5,0.25]},"west":{"uv":[28,18],"uv_size":[0.5,0.25]},"up":{"uv":[25,10],"uv_size":[0.5,0.5]},"down":{"uv":[25,11.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.0207,1.4186,0.7376],"size":[0.4604,0.2038,0.3979],"pivot":[0.4397,1.6224,0.7376],"rotation":[0,-9.9585,0],"uv":{"north":{"uv":[19,28],"uv_size":[0.5,0.25]},"east":{"uv":[28,19],"uv_size":[0.5,0.25]},"south":{"uv":[20,28],"uv_size":[0.5,0.25]},"west":{"uv":[28,20],"uv_size":[0.5,0.25]},"up":{"uv":[25,12],"uv_size":[0.5,0.5]},"down":{"uv":[25,13.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.3709,1.4186,1.1295],"size":[0.3578,0.2038,0.3611],"pivot":[-0.3709,1.6224,1.1295],"rotation":[0,28.3041,0],"uv":{"north":{"uv":[6,32],"uv_size":[0.25,0.25]},"east":{"uv":[32,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,32],"uv_size":[0.25,0.25]},"west":{"uv":[32,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0131,1.4186,1.1295],"size":[0.3578,0.2038,0.3611],"pivot":[0.3709,1.6224,1.1295],"rotation":[0,-28.3041,0],"uv":{"north":{"uv":[9,32],"uv_size":[0.25,0.25]},"east":{"uv":[32,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,32],"uv_size":[0.25,0.25]},"west":{"uv":[32,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0287,1.4186,1.4474],"size":[0.2283,0.2038,0.1126],"pivot":[0.1997,1.6224,1.4474],"rotation":[0,-46.0003,0],"uv":{"north":{"uv":[12,32],"uv_size":[0.25,0.25]},"east":{"uv":[32,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,32],"uv_size":[0.25,0.25]},"west":{"uv":[32,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1997,1.4186,1.4474],"size":[0.2283,0.2038,0.1126],"pivot":[-0.1997,1.6224,1.4474],"rotation":[0,46.0003,0],"uv":{"north":{"uv":[15,32],"uv_size":[0.25,0.25]},"east":{"uv":[32,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,32],"uv_size":[0.25,0.25]},"west":{"uv":[32,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1187,1.4186,1.4038],"size":[0.2374,0.2038,0.1219],"uv":{"north":{"uv":[18,32],"uv_size":[0.25,0.25]},"east":{"uv":[32,18],"uv_size":[0.25,0.25]},"south":{"uv":[19,32],"uv_size":[0.25,0.25]},"west":{"uv":[32,19],"uv_size":[0.25,0.25]},"up":{"uv":[20,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4511,1.4186,0.1499],"size":[0.4732,0.2038,0.5878],"pivot":[-0.4511,1.6224,0.1499],"rotation":[0,1.1088,0],"uv":{"north":{"uv":[21,28],"uv_size":[0.5,0.25]},"east":{"uv":[28,21],"uv_size":[0.5,0.25]},"south":{"uv":[22,28],"uv_size":[0.5,0.25]},"west":{"uv":[28,22],"uv_size":[0.5,0.25]},"up":{"uv":[25,14],"uv_size":[0.5,0.5]},"down":{"uv":[25,15.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.4397,1.4186,0.7376],"size":[0.4604,0.2038,0.3979],"pivot":[-0.4397,1.6224,0.7376],"rotation":[0,9.9585,0],"uv":{"north":{"uv":[23,28],"uv_size":[0.5,0.25]},"east":{"uv":[28,23],"uv_size":[0.5,0.25]},"south":{"uv":[24,28],"uv_size":[0.5,0.25]},"west":{"uv":[28,24],"uv_size":[0.5,0.25]},"up":{"uv":[25,16],"uv_size":[0.5,0.5]},"down":{"uv":[17,25.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.1013,0.4554,0.2816],"size":[0.2027,0.967,0.7375],"uv":{"north":{"uv":[25,17],"uv_size":[0.25,1]},"east":{"uv":[8,5],"uv_size":[0.75,1]},"south":{"uv":[25,18],"uv_size":[0.25,1]},"west":{"uv":[6,8],"uv_size":[0.75,1]},"up":{"uv":[11,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,11.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1013,-2.4872,0.2816],"size":[0.2027,2.9427,0.3203],"uv":{"north":{"uv":[8,6],"uv_size":[0.25,3]},"east":{"uv":[7,8],"uv_size":[0.25,3]},"south":{"uv":[9,0],"uv_size":[0.25,3]},"west":{"uv":[3,9],"uv_size":[0.25,3]},"up":{"uv":[21,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-3.4466,0.8534],"size":[0.2026,1.2412,0.1658],"uv":{"north":{"uv":[22,18],"uv_size":[0.25,1.25]},"east":{"uv":[20,22],"uv_size":[0.25,1.25]},"south":{"uv":[22,20],"uv_size":[0.25,1.25]},"west":{"uv":[22,22],"uv_size":[0.25,1.25]},"up":{"uv":[22,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-4.9361,0.2816],"size":[0.2027,2.4489,0.2072],"uv":{"north":{"uv":[11,0],"uv_size":[0.25,2.5]},"east":{"uv":[11,3],"uv_size":[0.25,2.5]},"south":{"uv":[4,11],"uv_size":[0.25,2.5]},"west":{"uv":[5,11],"uv_size":[0.25,2.5]},"up":{"uv":[23,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1066,-5.4588,0.2816],"size":[0.2133,5.8942,0.0366],"uv":{"north":{"uv":[37,27],"uv_size":[0.25,6]},"east":{"uv":[38,0],"uv_size":[0.25,6]},"south":{"uv":[38,13],"uv_size":[0.25,6]},"west":{"uv":[40,1],"uv_size":[0.25,6]},"up":{"uv":[19,0],"uv_size":[0.25,0.25]},"down":{"uv":[19,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-2.4872,0.6019],"size":[0.2026,0.2818,0.2515],"uv":{"north":{"uv":[24,32],"uv_size":[0.25,0.25]},"east":{"uv":[32,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,32],"uv_size":[0.25,0.25]},"west":{"uv":[32,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0415,-2.2054,0.5199],"size":[0.083,2.6608,0.4993],"uv":{"north":{"uv":[10,6],"uv_size":[0.25,2.75]},"east":{"uv":[4,4],"uv_size":[0.5,2.75]},"south":{"uv":[10,9],"uv_size":[0.25,2.75]},"west":{"uv":[5,0],"uv_size":[0.5,2.75]},"up":{"uv":[25,28],"uv_size":[0.25,0.5]},"down":{"uv":[28,25.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0468,-2.2054,0.9892],"size":[0.0937,2.4902,0.0299],"uv":{"north":{"uv":[18,8],"uv_size":[0.25,2.75]},"east":{"uv":[18,11],"uv_size":[0.25,2.75]},"south":{"uv":[26,1],"uv_size":[0.25,2.75]},"west":{"uv":[37,24],"uv_size":[0.25,2.75]},"up":{"uv":[13,18],"uv_size":[0.25,0.25]},"down":{"uv":[18,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.0277,0.8402],"size":[0.2026,1.5811,0.1789],"pivot":[-0.1013,-3.4466,1.0192],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[17,9],"uv_size":[0.25,1.5]},"east":{"uv":[17,11],"uv_size":[0.25,1.5]},"south":{"uv":[12,17],"uv_size":[0.25,1.5]},"west":{"uv":[17,13],"uv_size":[0.25,1.5]},"up":{"uv":[27,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.4686,0.2816],"size":[0.2026,0.5325,0.0177],"uv":{"north":{"uv":[26,28],"uv_size":[0.25,0.5]},"east":{"uv":[28,26],"uv_size":[0.25,0.5]},"south":{"uv":[27,28],"uv_size":[0.25,0.5]},"west":{"uv":[28,27],"uv_size":[0.25,0.5]},"up":{"uv":[28,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.3034,0.4116],"size":[0.2026,0.3882,0.0186],"pivot":[-0.1013,-4.9152,0.4302],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[28,28],"uv_size":[0.25,0.5]},"east":{"uv":[0,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,0],"uv_size":[0.25,0.5]},"west":{"uv":[1,29],"uv_size":[0.25,0.5]},"up":{"uv":[29,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.3717,0.4276],"size":[0.2026,0.4419,0.0437],"pivot":[-0.1013,-4.9299,0.4714],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[29,1],"uv_size":[0.25,0.5]},"east":{"uv":[2,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,2],"uv_size":[0.25,0.5]},"west":{"uv":[3,29],"uv_size":[0.25,0.5]},"up":{"uv":[30,32],"uv_size":[0.25,0.25]},"down":{"uv":[32,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.2474,0.3941],"size":[0.2026,0.3124,0.0186],"pivot":[-0.1013,-4.909,0.4127],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[31,32],"uv_size":[0.25,0.25]},"east":{"uv":[32,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,32],"uv_size":[0.25,0.25]},"west":{"uv":[0,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.1859,0.3766],"size":[0.2026,0.2571,0.0186],"pivot":[-0.1013,-4.9028,0.3952],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[33,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,33],"uv_size":[0.25,0.25]},"south":{"uv":[33,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.1304,0.3591],"size":[0.2026,0.2079,0.0186],"pivot":[-0.1013,-4.8965,0.3777],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[33,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,33],"uv_size":[0.25,0.25]},"south":{"uv":[33,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.0736,0.3416],"size":[0.2026,0.1573,0.0186],"pivot":[-0.1013,-4.8903,0.3602],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[33,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,33],"uv_size":[0.25,0.25]},"south":{"uv":[33,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-4.9821,0.3178],"size":[0.2026,0.0763,0.0128],"pivot":[-0.1013,-4.8798,0.3306],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[33,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,33],"uv_size":[0.25,0.25]},"south":{"uv":[33,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.0143,0.3298],"size":[0.2026,0.1042,0.0128],"pivot":[-0.1013,-4.8841,0.3427],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[33,13],"uv_size":[0.25,0.25]},"east":{"uv":[14,33],"uv_size":[0.25,0.25]},"south":{"uv":[33,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.5014,0.4703],"size":[0.2026,0.5653,0.0186],"pivot":[-0.1013,-4.9361,0.4889],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[29,3],"uv_size":[0.25,0.5]},"east":{"uv":[4,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,4],"uv_size":[0.25,0.5]},"west":{"uv":[5,29],"uv_size":[0.25,0.5]},"up":{"uv":[33,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.4219,0.3057],"size":[0.2026,0.0757,0.0175],"pivot":[-0.1013,-5.3461,0.3232],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[33,17],"uv_size":[0.25,0.25]},"east":{"uv":[18,33],"uv_size":[0.25,0.25]},"south":{"uv":[33,18],"uv_size":[0.25,0.25]},"west":{"uv":[19,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.3695,0.2892],"size":[0.2026,0.0292,0.0175],"pivot":[-0.1013,-5.3403,0.3067],"rotation":[-19.5963,0,0],"uv":{"north":{"uv":[33,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,33],"uv_size":[0.25,0.25]},"south":{"uv":[33,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-3.4466,0.4889],"size":[0.2026,0.4258,0.3645],"uv":{"north":{"uv":[29,5],"uv_size":[0.25,0.5]},"east":{"uv":[6,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,6],"uv_size":[0.25,0.5]},"west":{"uv":[7,29],"uv_size":[0.25,0.5]},"up":{"uv":[33,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-4.4396,0.4889],"size":[0.2026,0.993,0.173],"uv":{"north":{"uv":[19,25],"uv_size":[0.25,1]},"east":{"uv":[25,19],"uv_size":[0.25,1]},"south":{"uv":[25,20],"uv_size":[0.25,1]},"west":{"uv":[21,25],"uv_size":[0.25,1]},"up":{"uv":[33,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-3.9482,0.6618],"size":[0.2026,0.5016,0.173],"uv":{"north":{"uv":[29,7],"uv_size":[0.25,0.5]},"east":{"uv":[8,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,8],"uv_size":[0.25,0.5]},"west":{"uv":[9,29],"uv_size":[0.25,0.5]},"up":{"uv":[33,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,1.3285,-0.4692],"size":[0.2026,0.0939,0.7508],"uv":{"north":{"uv":[33,26],"uv_size":[0.25,0.25]},"east":{"uv":[12,26],"uv_size":[0.75,0.25]},"south":{"uv":[27,33],"uv_size":[0.25,0.25]},"west":{"uv":[26,12],"uv_size":[0.75,0.25]},"up":{"uv":[13,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,13.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.359,1.719,-0.1151],"size":[0.1088,2.076,0.1679],"pivot":[-0.359,1.719,0.0529],"rotation":[0,-9,0],"uv":{"north":{"uv":[12,1],"uv_size":[0.25,2]},"east":{"uv":[3,12],"uv_size":[0.25,2]},"south":{"uv":[12,3],"uv_size":[0.25,2]},"west":{"uv":[12,5],"uv_size":[0.25,2]},"up":{"uv":[33,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3328,1.719,-0.3201],"size":[0.1088,2.076,0.2071],"pivot":[-0.3328,1.719,-0.113],"rotation":[0,-41.5,0],"uv":{"north":{"uv":[6,12],"uv_size":[0.25,2]},"east":{"uv":[12,7],"uv_size":[0.25,2]},"south":{"uv":[8,12],"uv_size":[0.25,2]},"west":{"uv":[12,9],"uv_size":[0.25,2]},"up":{"uv":[33,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2502,1.719,-0.1151],"size":[0.1088,2.076,0.1679],"pivot":[0.359,1.719,0.0529],"rotation":[0,9,0],"uv":{"north":{"uv":[10,12],"uv_size":[0.25,2]},"east":{"uv":[11,12],"uv_size":[0.25,2]},"south":{"uv":[12,11],"uv_size":[0.25,2]},"west":{"uv":[0,13],"uv_size":[0.25,2]},"up":{"uv":[33,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2239,1.719,-0.3201],"size":[0.1088,2.076,0.2071],"pivot":[0.3328,1.719,-0.113],"rotation":[0,41.5,0],"uv":{"north":{"uv":[13,0],"uv_size":[0.25,2]},"east":{"uv":[1,13],"uv_size":[0.25,2]},"south":{"uv":[2,13],"uv_size":[0.25,2]},"west":{"uv":[13,2],"uv_size":[0.25,2]},"up":{"uv":[33,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1956,1.719,-0.4175],"size":[0.1088,2.076,0.1494],"pivot":[-0.1956,1.719,-0.2681],"rotation":[0,-64,0],"uv":{"north":{"uv":[13,4],"uv_size":[0.25,2]},"east":{"uv":[13,6],"uv_size":[0.25,2]},"south":{"uv":[7,13],"uv_size":[0.25,2]},"west":{"uv":[13,8],"uv_size":[0.25,2]},"up":{"uv":[33,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0867,1.719,-0.4175],"size":[0.1088,2.076,0.1494],"pivot":[0.1956,1.719,-0.2681],"rotation":[0,64,0],"uv":{"north":{"uv":[9,13],"uv_size":[0.25,2]},"east":{"uv":[13,10],"uv_size":[0.25,2]},"south":{"uv":[12,13],"uv_size":[0.25,2]},"west":{"uv":[13,12],"uv_size":[0.25,2]},"up":{"uv":[33,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0613,1.719,-0.4562],"size":[0.1088,2.076,0.1226],"pivot":[-0.0613,1.719,-0.3336],"rotation":[0,-90,0],"uv":{"north":{"uv":[14,0],"uv_size":[0.25,2]},"east":{"uv":[14,2],"uv_size":[0.25,2]},"south":{"uv":[3,14],"uv_size":[0.25,2]},"west":{"uv":[4,14],"uv_size":[0.25,2]},"up":{"uv":[0,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4437,1.6224,-0.0192],"size":[0.8874,0.1733,0.7592],"uv":{"north":{"uv":[25,21],"uv_size":[1,0.25]},"east":{"uv":[14,26],"uv_size":[0.75,0.25]},"south":{"uv":[25,22],"uv_size":[1,0.25]},"west":{"uv":[26,14],"uv_size":[0.75,0.25]},"up":{"uv":[9,3],"uv_size":[1,0.75]},"down":{"uv":[9,4.75],"uv_size":[1,-0.75]}}},{"origin":[0.281,1.6224,-0.2732],"size":[0.1627,0.1733,0.254],"pivot":[0.4437,1.7957,-0.0192],"rotation":[0,14.25,0],"uv":{"north":{"uv":[1,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2185,1.6224,-0.431],"size":[0.1627,0.1733,0.1656],"pivot":[0.3812,1.7957,-0.2654],"rotation":[0,42.75,0],"uv":{"north":{"uv":[4,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.106,1.6224,-0.5526],"size":[0.1627,0.1733,0.1656],"pivot":[0.2687,1.7957,-0.387],"rotation":[0,65.25,0],"uv":{"north":{"uv":[7,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,7],"uv_size":[0.25,0.25]},"south":{"uv":[8,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,8],"uv_size":[0.25,0.25]},"up":{"uv":[9,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4437,1.6224,-0.2732],"size":[0.1627,0.1733,0.254],"pivot":[-0.4437,1.7957,-0.0192],"rotation":[0,-14.25,0],"uv":{"north":{"uv":[10,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,10],"uv_size":[0.25,0.25]},"south":{"uv":[11,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,11],"uv_size":[0.25,0.25]},"up":{"uv":[12,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3812,1.6224,-0.431],"size":[0.1627,0.1733,0.1656],"pivot":[-0.3812,1.7957,-0.2654],"rotation":[0,-42.75,0],"uv":{"north":{"uv":[13,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,13],"uv_size":[0.25,0.25]},"south":{"uv":[14,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,14],"uv_size":[0.25,0.25]},"up":{"uv":[15,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2687,1.6224,-0.5526],"size":[0.1627,0.1733,0.1656],"pivot":[-0.2687,1.7957,-0.387],"rotation":[0,-65.25,0],"uv":{"north":{"uv":[16,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1183,1.6224,-0.693],"size":[0.1627,0.1733,0.2366],"pivot":[-0.1183,1.7957,-0.4564],"rotation":[0,-90,0],"uv":{"north":{"uv":[19,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0717,1.6224,0.7399],"size":[0.5154,0.1733,0.2714],"pivot":[0.4437,1.7957,0.7399],"rotation":[0,-27,0],"uv":{"north":{"uv":[29,9],"uv_size":[0.5,0.25]},"east":{"uv":[22,34],"uv_size":[0.25,0.25]},"south":{"uv":[10,29],"uv_size":[0.5,0.25]},"west":{"uv":[34,22],"uv_size":[0.25,0.25]},"up":{"uv":[29,10],"uv_size":[0.5,0.25]},"down":{"uv":[11,29.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.4437,1.6224,0.7399],"size":[0.5154,0.1733,0.2714],"pivot":[-0.4437,1.7957,0.7399],"rotation":[0,27,0],"uv":{"north":{"uv":[29,11],"uv_size":[0.5,0.25]},"east":{"uv":[23,34],"uv_size":[0.25,0.25]},"south":{"uv":[12,29],"uv_size":[0.5,0.25]},"west":{"uv":[34,23],"uv_size":[0.25,0.25]},"up":{"uv":[29,12],"uv_size":[0.5,0.25]},"down":{"uv":[13,29.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.3205,1.6224,0.8059],"size":[0.6409,2.091,0.1759],"uv":{"north":{"uv":[4,2],"uv_size":[0.75,2]},"east":{"uv":[14,4],"uv_size":[0.25,2]},"south":{"uv":[3,4],"uv_size":[0.75,2]},"west":{"uv":[5,14],"uv_size":[0.25,2]},"up":{"uv":[15,26],"uv_size":[0.75,0.25]},"down":{"uv":[26,15.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.1013,-4.9361,-0.4391],"size":[0.0143,3.7524,0.7207],"pivot":[-0.1013,-4.9361,0.2816],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[4,7],"uv_size":[0.25,3.75]},"east":{"uv":[0,0],"uv_size":[0.75,3.75]},"south":{"uv":[7,4],"uv_size":[0.25,3.75]},"west":{"uv":[1,0],"uv_size":[0.75,3.75]},"up":{"uv":[16,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,16.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0869,-4.9361,-0.4391],"size":[0.0143,3.7524,0.7207],"pivot":[0.1013,-4.9361,0.2816],"rotation":[0,7.5,0],"uv":{"north":{"uv":[5,7],"uv_size":[0.25,3.75]},"east":{"uv":[2,0],"uv_size":[0.75,3.75]},"south":{"uv":[0,8],"uv_size":[0.25,3.75]},"west":{"uv":[3,0],"uv_size":[0.75,3.75]},"up":{"uv":[17,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,17.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1013,0.8073,-0.4105],"size":[0.2026,0.5212,0.1588],"pivot":[-0.1013,1.3285,-0.4105],"rotation":[73.25,0,0],"uv":{"north":{"uv":[29,13],"uv_size":[0.25,0.5]},"east":{"uv":[14,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,14],"uv_size":[0.25,0.5]},"west":{"uv":[15,29],"uv_size":[0.25,0.5]},"up":{"uv":[24,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,0.6571,0.0886],"size":[0.2026,0.6173,0.2546],"pivot":[-0.1013,1.1783,0.0886],"rotation":[36.5,0,0],"uv":{"north":{"uv":[29,15],"uv_size":[0.25,0.5]},"east":{"uv":[16,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,16],"uv_size":[0.25,0.5]},"west":{"uv":[17,29],"uv_size":[0.25,0.5]},"up":{"uv":[25,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,0.6382,-0.0999],"size":[0.0461,0.6173,0.1315],"pivot":[-0.1013,1.2555,0.0315],"rotation":[38.6922,-17.916,-13.8411],"uv":{"north":{"uv":[29,17],"uv_size":[0.25,0.5]},"east":{"uv":[18,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,18],"uv_size":[0.25,0.5]},"west":{"uv":[19,29],"uv_size":[0.25,0.5]},"up":{"uv":[26,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0552,0.6382,-0.0999],"size":[0.0461,0.6173,0.1315],"pivot":[0.1013,1.2555,0.0315],"rotation":[38.6922,17.916,13.8411],"uv":{"north":{"uv":[29,19],"uv_size":[0.25,0.5]},"east":{"uv":[20,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,20],"uv_size":[0.25,0.5]},"west":{"uv":[21,29],"uv_size":[0.25,0.5]},"up":{"uv":[27,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0405,0.6668,-0.5169],"size":[0.0235,0.5212,0.223],"pivot":[-0.0405,1.188,-0.4528],"rotation":[74.4611,-6.3319,-21.6352],"uv":{"north":{"uv":[29,21],"uv_size":[0.25,0.5]},"east":{"uv":[22,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,22],"uv_size":[0.25,0.5]},"west":{"uv":[23,29],"uv_size":[0.25,0.5]},"up":{"uv":[28,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0405,0.817,-0.816],"size":[0.0235,0.0551,0.0229],"pivot":[-0.0405,1.3382,-0.9519],"rotation":[74.4611,-6.3319,-21.6352],"uv":{"north":{"uv":[29,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,34],"uv_size":[0.25,0.25]},"down":{"uv":[34,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0124,0.6783,-0.9844],"size":[0.0363,0.0551,0.2091],"pivot":[0.0124,1.1996,-0.9341],"rotation":[89.4611,-6.3319,-21.6352],"uv":{"north":{"uv":[32,34],"uv_size":[0.25,0.25]},"east":{"uv":[34,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,34],"uv_size":[0.25,0.25]},"west":{"uv":[34,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,34],"uv_size":[0.25,0.25]},"down":{"uv":[0,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.017,0.817,-0.816],"size":[0.0235,0.0551,0.0229],"pivot":[0.0405,1.3382,-0.9519],"rotation":[74.4611,6.3319,21.6352],"uv":{"north":{"uv":[35,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0649,0.9217,-0.9824],"size":[0.0363,0.0059,0.0221],"pivot":[-0.0649,1.3938,-0.9322],"rotation":[89.4611,-6.3319,-21.6352],"uv":{"north":{"uv":[35,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0459,0.6916,-0.9328],"size":[0.0517,0.0551,0.1743],"pivot":[0.0459,1.2129,-0.9301],"rotation":[89.4611,-6.3319,-21.6352],"uv":{"north":{"uv":[35,6],"uv_size":[0.25,0.25]},"east":{"uv":[7,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,7],"uv_size":[0.25,0.25]},"west":{"uv":[8,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0286,0.9217,-0.9824],"size":[0.0363,0.0059,0.0221],"pivot":[0.0649,1.3938,-0.9322],"rotation":[89.4611,6.3319,21.6352],"uv":{"north":{"uv":[35,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0487,0.6783,-0.9844],"size":[0.0363,0.0551,0.2091],"pivot":[-0.0124,1.1996,-0.9341],"rotation":[89.4611,6.3319,21.6352],"uv":{"north":{"uv":[35,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0889,0.6902,-0.7798],"size":[0.0466,0.0551,0.0878],"pivot":[0.0889,1.2115,-0.8636],"rotation":[89.4611,-6.3319,-21.6352],"uv":{"north":{"uv":[35,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1355,0.6902,-0.7798],"size":[0.0466,0.0551,0.0878],"pivot":[-0.0889,1.2115,-0.8636],"rotation":[89.4611,6.3319,21.6352],"uv":{"north":{"uv":[35,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,35],"uv_size":[0.25,0.25]},"south":{"uv":[35,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.016,0.61,-0.4928],"size":[0.0223,0.5234,0.0229],"pivot":[-0.016,1.1313,-0.4699],"rotation":[78.1524,-11.9262,-44.5699],"uv":{"north":{"uv":[29,23],"uv_size":[0.25,0.5]},"east":{"uv":[24,29],"uv_size":[0.25,0.5]},"south":{"uv":[29,24],"uv_size":[0.25,0.5]},"west":{"uv":[25,29],"uv_size":[0.25,0.5]},"up":{"uv":[35,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-6.1209,-0.4391],"size":[0.0143,1.1848,0.5776],"pivot":[-0.1013,-11.2152,0.2816],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[0,23],"uv_size":[0.25,1.25]},"east":{"uv":[11,6],"uv_size":[0.5,1.25]},"south":{"uv":[23,0],"uv_size":[0.25,1.25]},"west":{"uv":[7,11],"uv_size":[0.5,1.25]},"up":{"uv":[29,25],"uv_size":[0.25,0.5]},"down":{"uv":[26,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0869,-6.1209,-0.4391],"size":[0.0143,1.1848,0.5776],"pivot":[0.1013,-11.2152,0.2816],"rotation":[0,7.5,0],"uv":{"north":{"uv":[1,23],"uv_size":[0.25,1.25]},"east":{"uv":[11,8],"uv_size":[0.5,1.25]},"south":{"uv":[2,23],"uv_size":[0.25,1.25]},"west":{"uv":[9,11],"uv_size":[0.5,1.25]},"up":{"uv":[29,26],"uv_size":[0.25,0.5]},"down":{"uv":[27,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.076,-6.1307,-0.4427],"size":[0.0143,0.1422,0.5598],"pivot":[-0.076,-6.0334,0.0897],"rotation":[14.2482,-7.5,0],"uv":{"north":{"uv":[35,22],"uv_size":[0.25,0.25]},"east":{"uv":[29,27],"uv_size":[0.5,0.25]},"south":{"uv":[23,35],"uv_size":[0.25,0.25]},"west":{"uv":[28,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,28],"uv_size":[0.25,0.5]},"down":{"uv":[29,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0826,-6.1402,0.2807],"size":[0.1652,0.6715,0.0186],"pivot":[0.1185,-5.4686,0.2993],"rotation":[-13.7457,0,0],"uv":{"north":{"uv":[18,26],"uv_size":[0.25,0.75]},"east":{"uv":[26,18],"uv_size":[0.25,0.75]},"south":{"uv":[19,26],"uv_size":[0.25,0.75]},"west":{"uv":[26,19],"uv_size":[0.25,0.75]},"up":{"uv":[35,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-6.1402,0.2807],"size":[0.0284,0.6715,0.0186],"pivot":[-0.1013,-5.4686,0.2993],"rotation":[-13.7406,-0.3786,-1.5478],"uv":{"north":{"uv":[20,26],"uv_size":[0.25,0.75]},"east":{"uv":[26,20],"uv_size":[0.25,0.75]},"south":{"uv":[21,26],"uv_size":[0.25,0.75]},"west":{"uv":[26,21],"uv_size":[0.25,0.75]},"up":{"uv":[35,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0729,-6.1402,0.2807],"size":[0.0284,0.6715,0.0186],"pivot":[0.1013,-5.4686,0.2993],"rotation":[-13.7406,0.3786,1.5478],"uv":{"north":{"uv":[22,26],"uv_size":[0.25,0.75]},"east":{"uv":[26,22],"uv_size":[0.25,0.75]},"south":{"uv":[23,26],"uv_size":[0.25,0.75]},"west":{"uv":[26,23],"uv_size":[0.25,0.75]},"up":{"uv":[35,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.12,-5.4686,0.1373],"size":[0.0143,0.5325,0.1431],"pivot":[-0.12,-11.2152,0.4235],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[0,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,0],"uv_size":[0.25,0.5]},"south":{"uv":[1,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,1],"uv_size":[0.25,0.5]},"up":{"uv":[35,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1056,-5.4686,0.1373],"size":[0.0143,0.5325,0.1431],"pivot":[0.12,-11.2152,0.4235],"rotation":[0,7.5,0],"uv":{"north":{"uv":[2,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,2],"uv_size":[0.25,0.5]},"south":{"uv":[3,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,3],"uv_size":[0.25,0.5]},"up":{"uv":[35,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-6.1357,0.1293],"size":[0.0284,0.6715,0.152],"pivot":[-0.1013,-5.4642,0.2812],"rotation":[-13.8666,-7.6626,0.2449],"uv":{"north":{"uv":[24,26],"uv_size":[0.25,0.75]},"east":{"uv":[26,24],"uv_size":[0.25,0.75]},"south":{"uv":[25,26],"uv_size":[0.25,0.75]},"west":{"uv":[26,25],"uv_size":[0.25,0.75]},"up":{"uv":[35,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0729,-6.1357,0.1293],"size":[0.0284,0.6715,0.152],"pivot":[0.1013,-5.4642,0.2812],"rotation":[-13.8666,7.6626,-0.2449],"uv":{"north":{"uv":[26,26],"uv_size":[0.25,0.75]},"east":{"uv":[0,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,0],"uv_size":[0.25,0.75]},"west":{"uv":[1,27],"uv_size":[0.25,0.75]},"up":{"uv":[35,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1005,-4.7838,0.9432],"size":[0.013,1.3372,0.076],"pivot":[-0.1005,-3.4466,1.0192],"rotation":[0,0,-3.9766],"uv":{"north":{"uv":[23,2],"uv_size":[0.25,1.25]},"east":{"uv":[3,23],"uv_size":[0.25,1.25]},"south":{"uv":[23,4],"uv_size":[0.25,1.25]},"west":{"uv":[23,6],"uv_size":[0.25,1.25]},"up":{"uv":[35,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0876,-4.7838,0.9432],"size":[0.013,1.3372,0.076],"pivot":[0.1005,-3.4466,1.0192],"rotation":[0,0,3.9766],"uv":{"north":{"uv":[7,23],"uv_size":[0.25,1.25]},"east":{"uv":[23,8],"uv_size":[0.25,1.25]},"south":{"uv":[23,10],"uv_size":[0.25,1.25]},"west":{"uv":[23,12],"uv_size":[0.25,1.25]},"up":{"uv":[35,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0146,-4.2247,0.9432],"size":[0.0724,0.7985,0.076],"pivot":[-0.1946,-3.4457,1.0192],"rotation":[0,0,3.9766],"uv":{"north":{"uv":[27,1],"uv_size":[0.25,0.75]},"east":{"uv":[2,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,2],"uv_size":[0.25,0.75]},"west":{"uv":[3,27],"uv_size":[0.25,0.75]},"up":{"uv":[35,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0869,-4.2247,0.9432],"size":[0.0724,0.7985,0.076],"pivot":[0.1946,-3.4457,1.0192],"rotation":[0,0,-3.9766],"uv":{"north":{"uv":[27,3],"uv_size":[0.25,0.75]},"east":{"uv":[4,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,4],"uv_size":[0.25,0.75]},"west":{"uv":[5,27],"uv_size":[0.25,0.75]},"up":{"uv":[35,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0152,-3.6723,0.9432],"size":[0.0305,0.2316,0.076],"uv":{"north":{"uv":[35,34],"uv_size":[0.25,0.25]},"east":{"uv":[35,35],"uv_size":[0.25,0.25]},"south":{"uv":[0,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0373,-5.0224,0.9432],"size":[0.0248,0.1731,0.076],"pivot":[-0.0124,-4.7797,1.0192],"rotation":[0,0,180],"uv":{"north":{"uv":[2,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,2],"uv_size":[0.25,0.25]},"south":{"uv":[3,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,3],"uv_size":[0.25,0.25]},"up":{"uv":[4,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0485,-4.5216,0.9432],"size":[0.0335,0.3111,0.076],"pivot":[0.233,-3.9992,1.0192],"rotation":[0,0,-3.9766],"uv":{"north":{"uv":[5,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,5],"uv_size":[0.25,0.25]},"south":{"uv":[6,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,6],"uv_size":[0.25,0.25]},"up":{"uv":[7,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.015,-4.5216,0.9432],"size":[0.0335,0.3111,0.076],"pivot":[-0.233,-3.9992,1.0192],"rotation":[0,0,3.9766],"uv":{"north":{"uv":[8,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,8],"uv_size":[0.25,0.25]},"south":{"uv":[9,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,9],"uv_size":[0.25,0.25]},"up":{"uv":[10,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-5.5929,1.0192],"size":[0.0321,1.6205,0.1789],"pivot":[-0.1013,-3.4466,1.0192],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[17,15],"uv_size":[0.25,1.5]},"east":{"uv":[17,17],"uv_size":[0.25,1.5]},"south":{"uv":[18,0],"uv_size":[0.25,1.5]},"west":{"uv":[18,2],"uv_size":[0.25,1.5]},"up":{"uv":[11,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1005,-4.7864,0.9419],"size":[0.013,1.1345,0.0773],"pivot":[-0.1005,-3.4466,1.0192],"rotation":[0,11.5,-3.9766],"uv":{"north":{"uv":[23,14],"uv_size":[0.25,1.25]},"east":{"uv":[23,16],"uv_size":[0.25,1.25]},"south":{"uv":[17,23],"uv_size":[0.25,1.25]},"west":{"uv":[23,18],"uv_size":[0.25,1.25]},"up":{"uv":[12,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-4.0336,1.3731],"size":[0.0321,0.1473,0.1148],"pivot":[-0.1013,-2.4525,1.3731],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[13,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,13],"uv_size":[0.25,0.25]},"south":{"uv":[14,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,14],"uv_size":[0.25,0.25]},"up":{"uv":[15,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-3.8948,1.4225],"size":[0.0321,0.2116,0.0609],"pivot":[-0.1013,-2.3138,1.4225],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[16,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.179,-3.6546,1.0151],"size":[0.013,0.2047,0.004],"pivot":[-0.179,-2.3174,1.0192],"rotation":[0,11.5,-3.9766],"uv":{"north":{"uv":[19,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1798,-3.6546,1.009],"size":[0.013,0.1932,0.0062],"pivot":[-0.1798,-2.3174,1.0152],"rotation":[0,11.5,-3.9766],"uv":{"north":{"uv":[22,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-3.6955,1.4934],"size":[0.0321,0.1435,0.0089],"pivot":[-0.1013,-2.1144,1.4934],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[25,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0994,-3.6984,1.5016],"size":[0.0321,0.0515,0.0319],"pivot":[-0.0994,-2.1173,1.5016],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[28,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0928,-3.7089,1.531],"size":[0.0321,0.0283,0.0092],"pivot":[-0.0928,-2.1278,1.531],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[31,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0994,-3.6499,1.5189],"size":[0.0321,0.0614,0.0089],"pivot":[-0.0994,-2.0688,1.5189],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[34,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,36],"uv_size":[0.25,0.25]},"down":{"uv":[0,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0976,-3.6528,1.5271],"size":[0.0321,0.0395,0.0089],"pivot":[-0.0976,-2.0717,1.5271],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[37,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0958,-3.6557,1.5353],"size":[0.0321,0.0162,0.0089],"pivot":[-0.0958,-2.0746,1.5353],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[37,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-6.1402,0.2993],"size":[0.0038,0.6715,0.3936],"pivot":[-0.1013,-5.4686,0.2993],"rotation":[-14.0113,11.1768,-4.4096],"uv":{"north":{"uv":[27,5],"uv_size":[0.25,0.75]},"east":{"uv":[3,18],"uv_size":[0.5,0.75]},"south":{"uv":[6,27],"uv_size":[0.25,0.75]},"west":{"uv":[4,18],"uv_size":[0.5,0.75]},"up":{"uv":[4,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,4.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0641,-5.6516,1.184],"size":[0.0321,1.088,0.2109],"pivot":[-0.0641,-3.5053,1.184],"rotation":[-19.9997,11.2955,-4.0777],"uv":{"north":{"uv":[25,23],"uv_size":[0.25,1]},"east":{"uv":[25,24],"uv_size":[0.25,1]},"south":{"uv":[25,25],"uv_size":[0.25,1]},"west":{"uv":[26,0],"uv_size":[0.25,1]},"up":{"uv":[37,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.032,-5.6516,1.184],"size":[0.0321,1.088,0.2109],"pivot":[0.0641,-3.5053,1.184],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[25.25,23],"uv_size":[-0.25,1]},"east":{"uv":[26.25,0],"uv_size":[-0.25,1]},"south":{"uv":[25.25,25],"uv_size":[-0.25,1]},"west":{"uv":[25.25,24],"uv_size":[-0.25,1]},"up":{"uv":[37.25,6],"uv_size":[-0.25,0.25]},"down":{"uv":[7.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.0234,-4.7795,0.9944],"size":[0.0156,0.8677,0.0247],"pivot":[-0.0078,-4.7795,1.0192],"rotation":[19.3846,0,-180],"uv":{"north":{"uv":[27,6],"uv_size":[0.25,0.75]},"east":{"uv":[7,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,7],"uv_size":[0.25,0.75]},"west":{"uv":[8,27],"uv_size":[0.25,0.75]},"up":{"uv":[37,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1159,-4.7874,0.824],"size":[0.013,0.613,0.1194],"pivot":[-0.1159,-3.4477,0.9434],"rotation":[0,11.5,-3.9766],"uv":{"north":{"uv":[5,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,5],"uv_size":[0.25,0.5]},"south":{"uv":[6,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,6],"uv_size":[0.25,0.5]},"up":{"uv":[37,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0826,-6.9362,0.1226],"size":[0.0043,0.8155,0.0172],"pivot":[-0.0826,-6.1207,0.1398],"rotation":[7.2377,-6.6803,-6.684],"uv":{"north":{"uv":[27,8],"uv_size":[0.25,0.75]},"east":{"uv":[9,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,9],"uv_size":[0.25,0.75]},"west":{"uv":[10,27],"uv_size":[0.25,0.75]},"up":{"uv":[37,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1002,-6.3894,0.1523],"size":[0.0038,0.2582,0.2878],"pivot":[-0.0766,-6.1159,0.0504],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[37,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.072,-6.6866,0.1873],"size":[0.0043,0.3009,0.1234],"pivot":[-0.0483,-6.3918,0.0854],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[37,13],"uv_size":[0.25,0.25]},"east":{"uv":[14,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0438,-6.9004,0.2222],"size":[0,0.2175,0.0273],"pivot":[-0.0202,-6.6677,0.1203],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[37,16],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[17,37],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0234,-4.7795,0.9431],"size":[0.0156,0.8677,0.0761],"pivot":[-0.0078,-4.7795,1.0192],"rotation":[19.7341,-10.5865,176.2294],"uv":{"north":{"uv":[27,10],"uv_size":[0.25,0.75]},"east":{"uv":[11,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,11],"uv_size":[0.25,0.75]},"west":{"uv":[12,27],"uv_size":[0.25,0.75]},"up":{"uv":[37,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0078,-4.7795,0.9431],"size":[0.0156,0.8677,0.0761],"pivot":[0.0078,-4.7795,1.0192],"rotation":[19.7341,10.5865,-176.2294],"uv":{"north":{"uv":[27.25,10],"uv_size":[-0.25,0.75]},"east":{"uv":[12.25,27],"uv_size":[-0.25,0.75]},"south":{"uv":[27.25,11],"uv_size":[-0.25,0.75]},"west":{"uv":[11.25,27],"uv_size":[-0.25,0.75]},"up":{"uv":[37.25,17],"uv_size":[-0.25,0.25]},"down":{"uv":[18.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.0078,-5.598,0.6551],"size":[0,1.3097,0.0761],"pivot":[-0.0078,-5.598,0.7311],"rotation":[19.7818,-10.502,175.9901],"uv":{"north":{"uv":[27,10],"uv_size":[0.25,0.75]},"east":{"uv":[11,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,11],"uv_size":[0.25,0.75]},"west":{"uv":[12,27],"uv_size":[0.25,0.75]},"up":{"uv":[37,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.017,-6.8083,0.2249],"size":[0,0.1044,0.0227],"pivot":[-0.017,-6.8083,0.2249],"rotation":[-9.7181,-10.502,175.9901],"uv":{"north":{"uv":[27,10],"uv_size":[0.25,0.75]},"east":{"uv":[11,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,11],"uv_size":[0.25,0.75]},"west":{"uv":[12,27],"uv_size":[0.25,0.75]},"up":{"uv":[37,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0132,-6.8042,0.247],"size":[0,0.0617,0.0227],"pivot":[-0.0132,-6.8042,0.247],"rotation":[-9.7181,-10.502,175.9901],"uv":{"north":{"uv":[27,10],"uv_size":[0.25,0.75]},"east":{"uv":[11,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,11],"uv_size":[0.25,0.75]},"west":{"uv":[12,27],"uv_size":[0.25,0.75]},"up":{"uv":[37,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.017,-6.8083,0.2249],"size":[0,0.1044,0.0227],"pivot":[0.017,-6.8083,0.2249],"rotation":[-9.7181,10.502,-175.9901],"uv":{"north":{"uv":[27.25,10],"uv_size":[-0.25,0.75]},"east":{"uv":[12.25,27],"uv_size":[-0.25,0.75]},"south":{"uv":[27.25,11],"uv_size":[-0.25,0.75]},"west":{"uv":[11.25,27],"uv_size":[-0.25,0.75]},"up":{"uv":[37.25,17],"uv_size":[-0.25,0.25]},"down":{"uv":[18.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.0132,-6.8042,0.247],"size":[0,0.0617,0.0227],"pivot":[0.0132,-6.8042,0.247],"rotation":[-9.7181,10.502,-175.9901],"uv":{"north":{"uv":[27.25,10],"uv_size":[-0.25,0.75]},"east":{"uv":[12.25,27],"uv_size":[-0.25,0.75]},"south":{"uv":[27.25,11],"uv_size":[-0.25,0.75]},"west":{"uv":[11.25,27],"uv_size":[-0.25,0.75]},"up":{"uv":[37.25,17],"uv_size":[-0.25,0.25]},"down":{"uv":[18.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.0078,-5.598,0.6551],"size":[0,1.3097,0.0761],"pivot":[0.0078,-5.598,0.7311],"rotation":[19.7818,10.502,-175.9901],"uv":{"north":{"uv":[27.25,10],"uv_size":[-0.25,0.75]},"east":{"uv":[12.25,27],"uv_size":[-0.25,0.75]},"south":{"uv":[27.25,11],"uv_size":[-0.25,0.75]},"west":{"uv":[11.25,27],"uv_size":[-0.25,0.75]},"up":{"uv":[37.25,17],"uv_size":[-0.25,0.25]},"down":{"uv":[18.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.072,-6.5755,0.3106],"size":[0.0043,0.1898,0.0602],"pivot":[-0.0483,-6.3918,0.0854],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[37,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.061,-6.4446,0.3692],"size":[0.0043,0.0674,0.0728],"pivot":[-0.0374,-6.3833,0.1439],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[37,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0964,-6.3894,0.1523],"size":[0.0038,0.2582,0.2878],"pivot":[0.0766,-6.1159,0.0504],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[37.25,10],"uv_size":[-0.25,0.25]},"east":{"uv":[12.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,11],"uv_size":[-0.25,0.25]},"west":{"uv":[11.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,12],"uv_size":[-0.25,0.25]},"down":{"uv":[13.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.0676,-6.6866,0.1873],"size":[0.0043,0.3009,0.1234],"pivot":[0.0483,-6.3918,0.0854],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[37.25,13],"uv_size":[-0.25,0.25]},"east":{"uv":[15.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,14],"uv_size":[-0.25,0.25]},"west":{"uv":[14.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,15],"uv_size":[-0.25,0.25]},"down":{"uv":[16.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.0676,-6.5755,0.3106],"size":[0.0043,0.1898,0.0602],"pivot":[0.0483,-6.3918,0.0854],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[37.25,18],"uv_size":[-0.25,0.25]},"east":{"uv":[20.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,19],"uv_size":[-0.25,0.25]},"west":{"uv":[19.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,20],"uv_size":[-0.25,0.25]},"down":{"uv":[21.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[0.0567,-6.4446,0.3692],"size":[0.0043,0.0674,0.0728],"pivot":[0.0374,-6.3833,0.1439],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[37.25,21],"uv_size":[-0.25,0.25]},"east":{"uv":[23.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,22],"uv_size":[-0.25,0.25]},"west":{"uv":[22.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,23],"uv_size":[-0.25,0.25]},"down":{"uv":[24.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.0388,-6.842,0.2488],"size":[0,0.163,0.0161],"pivot":[-0.0152,-6.6638,0.147],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[8,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,8],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0359,-6.724,0.2645],"size":[0,0.0472,0.0662],"pivot":[-0.0122,-6.6615,0.1626],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[9,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,9],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0311,-6.7706,0.2704],"size":[0,0.0472,0.0421],"pivot":[-0.0075,-6.7081,0.1686],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[10,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,10],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0263,-6.8172,0.2763],"size":[0,0.0472,0.0189],"pivot":[-0.0027,-6.7547,0.1745],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[11,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,11],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0282,-5.598,0.7064],"size":[0.006,1.4128,0.0247],"pivot":[-0.0126,-5.598,0.7311],"rotation":[19.3846,0,-180],"uv":{"north":{"uv":[18,4],"uv_size":[0.25,1.5]},"east":{"uv":[5,18],"uv_size":[0.25,1.5]},"south":{"uv":[6,18],"uv_size":[0.25,1.5]},"west":{"uv":[18,6],"uv_size":[0.25,1.5]},"up":{"uv":[12,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0617,-6.1307,-0.4427],"size":[0.0143,0.1422,0.5598],"pivot":[0.076,-6.0334,0.0897],"rotation":[14.2482,7.5,0],"uv":{"north":{"uv":[24,38],"uv_size":[0.25,0.25]},"east":{"uv":[7,30],"uv_size":[0.5,0.25]},"south":{"uv":[38,24],"uv_size":[0.25,0.25]},"west":{"uv":[30,7],"uv_size":[0.5,0.25]},"up":{"uv":[8,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,8.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.017,0.6668,-0.5169],"size":[0.0235,0.5212,0.223],"pivot":[0.0405,1.188,-0.4528],"rotation":[74.4611,6.3319,21.6352],"uv":{"north":{"uv":[9,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,9],"uv_size":[0.25,0.5]},"south":{"uv":[10,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,10],"uv_size":[0.25,0.5]},"up":{"uv":[25,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0976,0.6916,-0.9328],"size":[0.0517,0.0551,0.1743],"pivot":[-0.0459,1.2129,-0.9301],"rotation":[89.4611,6.3319,21.6352],"uv":{"north":{"uv":[26,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0826,-6.2631,-0.3531],"size":[0.0029,0.1422,0.4747],"pivot":[-0.0826,-6.1209,0.1397],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[29,38],"uv_size":[0.25,0.25]},"east":{"uv":[11,30],"uv_size":[0.5,0.25]},"south":{"uv":[38,29],"uv_size":[0.25,0.25]},"west":{"uv":[30,11],"uv_size":[0.5,0.25]},"up":{"uv":[12,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,12.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0826,-6.9362,0.1398],"size":[0,0.8155,0.0167],"pivot":[-0.0826,-6.1207,0.1398],"rotation":[7.3281,11.1768,-4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[27,12],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[13,27],"uv_size":[0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0018,-6.9275,0.2254],"size":[0.0029,0.7576,0.0183],"pivot":[0.0018,-6.9275,0.2254],"rotation":[43.8958,-5.8832,-6.6204],"uv":{"north":{"uv":[27,13],"uv_size":[0.25,0.75]},"east":{"uv":[14,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,14],"uv_size":[0.25,0.75]},"west":{"uv":[15,27],"uv_size":[0.25,0.75]},"up":{"uv":[30,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0677,-6.5023,-0.1734],"size":[0.0004,0.2402,0.2235],"pivot":[-0.0677,-6.2622,0.1588],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[31,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,31],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0394,-6.4098,-0.2484],"size":[0.0004,0.0926,0.0838],"pivot":[-0.0394,-6.3172,-0.056],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[32,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,32],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0311,-6.534,-0.1572],"size":[0.0004,0.1277,0.0165],"pivot":[-0.0311,-6.4063,-0.0321],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[33,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,33],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.029,-6.4439,-0.2103],"size":[0.0004,0.0336,0.0537],"pivot":[-0.029,-6.4104,-0.0479],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[34,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,34],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0261,-6.5099,-0.1638],"size":[0.0004,0.0672,0.0159],"pivot":[-0.0261,-6.4427,-0.0393],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[35,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,35],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.024,-6.4823,-0.183],"size":[0.0004,0.0357,0.0198],"pivot":[-0.024,-6.4466,-0.0546],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[36,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,36],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0288,-6.4056,-0.2649],"size":[0.0004,0.0678,0.0198],"pivot":[-0.0288,-6.3378,-0.1365],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[37,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,37],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0263,-6.3784,-0.2826],"size":[0.0004,0.0357,0.0184],"pivot":[-0.0263,-6.3427,-0.1555],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[38,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[0,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0463,-6.7333,0.0161],"size":[0.0004,0.2401,0.096],"pivot":[-0.0463,-6.4932,0.2208],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,0],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0167,-6.7724,0.0957],"size":[0.0004,0.0322,0.0161],"pivot":[-0.0167,-6.7402,0.2205],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,1],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[2,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0341,-6.7283,-0.0006],"size":[0.0004,0.2114,0.0205],"pivot":[-0.0341,-6.5168,0.1285],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,2],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[3,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0316,-6.5505,-0.0983],"size":[0.0004,0.0286,0.0985],"pivot":[-0.0316,-6.5219,0.1088],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,3],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[4,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.029,-6.6459,-0.0294],"size":[0.0004,0.0965,0.0369],"pivot":[-0.029,-6.5494,0.1162],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,4],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[5,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0243,-6.5926,-0.0703],"size":[0.0004,0.0341,0.0424],"pivot":[-0.0243,-6.5585,0.0807],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,5],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[6,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0213,-6.6383,-0.0364],"size":[0.0004,0.047,0.0172],"pivot":[-0.0213,-6.5914,0.0895],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,6],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[7,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0191,-6.622,-0.0458],"size":[0.0004,0.0265,0.0101],"pivot":[-0.0191,-6.5956,0.073],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,7],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[8,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0204,-6.6805,0.0051],"size":[0.0004,0.0382,0.0273],"pivot":[-0.0204,-6.6423,0.1411],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,8],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[9,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.017,-6.6948,0.0284],"size":[0.0004,0.0158,0.014],"pivot":[-0.017,-6.679,0.151],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,9],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[10,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0805,-6.7947,0.0336],"size":[0.0043,0.5395,0.0897],"pivot":[-0.0805,-6.1225,0.1234],"rotation":[7.2377,-6.6803,-6.684],"uv":{"north":{"uv":[13,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,13],"uv_size":[0.25,0.5]},"south":{"uv":[14,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,14],"uv_size":[0.25,0.5]},"up":{"uv":[39,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0118,-6.4159,-0.3982],"size":[0.0029,0.1572,0.0183],"pivot":[-0.0118,-6.2587,-0.3982],"rotation":[40.2806,-5.7156,-6.8069],"uv":{"north":{"uv":[39,11],"uv_size":[0.25,0.25]},"east":{"uv":[12,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0188,-6.793,0.1112],"size":[0.0004,0.0568,0.0161],"pivot":[-0.0188,-6.7362,0.236],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,14],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[15,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.026,-6.9046,0.1761],"size":[0.0043,0.1169,0.0148],"pivot":[-0.026,-6.655,0.1909],"rotation":[7.2377,-6.6803,-6.684],"uv":{"north":{"uv":[39,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0241,-6.881,0.1616],"size":[0.0043,0.0917,0.0148],"pivot":[-0.0241,-6.6566,0.1763],"rotation":[7.2377,-6.6803,-6.684],"uv":{"north":{"uv":[39,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0222,-6.866,0.147],"size":[0.0043,0.075,0.0148],"pivot":[-0.0222,-6.6583,0.1618],"rotation":[7.2377,-6.6803,-6.684],"uv":{"north":{"uv":[39,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0203,-6.8457,0.1325],"size":[0.0043,0.0531,0.0148],"pivot":[-0.0203,-6.6599,0.1472],"rotation":[7.2377,-6.6803,-6.684],"uv":{"north":{"uv":[39,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0184,-6.8321,0.1179],"size":[0.0043,0.0378,0.0148],"pivot":[-0.0184,-6.6616,0.1327],"rotation":[7.2377,-6.6803,-6.684],"uv":{"north":{"uv":[39,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0226,-6.2798,-0.3815],"size":[0.0029,0.042,0.047],"pivot":[-0.0226,-6.2378,-0.3165],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[39,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0188,-6.3369,-0.3416],"size":[0.0029,0.0587,0.018],"pivot":[-0.0188,-6.2782,-0.3056],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[39,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0165,-6.3014,-0.3594],"size":[0.0029,0.0188,0.0185],"pivot":[-0.0165,-6.2826,-0.3229],"rotation":[15.0345,-5.7285,-6.8178],"uv":{"north":{"uv":[39,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0783,-6.9362,0.1226],"size":[0.0043,0.8155,0.0172],"pivot":[0.0826,-6.1207,0.1398],"rotation":[7.2377,6.6803,6.684],"uv":{"north":{"uv":[27,15],"uv_size":[0.25,0.75]},"east":{"uv":[16,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,16],"uv_size":[0.25,0.75]},"west":{"uv":[17,27],"uv_size":[0.25,0.75]},"up":{"uv":[0,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0438,-6.9004,0.2222],"size":[0,0.2175,0.0273],"pivot":[0.0202,-6.6677,0.1203],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[7,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,7],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0388,-6.842,0.2488],"size":[0,0.163,0.0161],"pivot":[0.0152,-6.6638,0.147],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[29,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,29],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0359,-6.724,0.2645],"size":[0,0.0472,0.0662],"pivot":[0.0122,-6.6615,0.1626],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[30,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,30],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0311,-6.7706,0.2704],"size":[0,0.0472,0.0421],"pivot":[0.0075,-6.7081,0.1686],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[31,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,31],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0263,-6.8172,0.2763],"size":[0,0.0472,0.0189],"pivot":[0.0027,-6.7547,0.1745],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[32,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,32],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0222,-5.598,0.7064],"size":[0.006,1.4128,0.0247],"pivot":[0.0126,-5.598,0.7311],"rotation":[19.3846,0,180],"uv":{"north":{"uv":[14,18],"uv_size":[0.25,1.5]},"east":{"uv":[18,14],"uv_size":[0.25,1.5]},"south":{"uv":[15,18],"uv_size":[0.25,1.5]},"west":{"uv":[16,18],"uv_size":[0.25,1.5]},"up":{"uv":[33,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0138,-5.598,0.7029],"size":[0.006,1.4128,0.0283],"pivot":[-0.0078,-5.598,0.7311],"rotation":[19.3845,0.0644,179.8168],"uv":{"north":{"uv":[1,19],"uv_size":[0.25,1.5]},"east":{"uv":[2,19],"uv_size":[0.25,1.5]},"south":{"uv":[19,2],"uv_size":[0.25,1.5]},"west":{"uv":[3,19],"uv_size":[0.25,1.5]},"up":{"uv":[35,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0798,-6.2631,-0.3531],"size":[0.0029,0.1422,0.4747],"pivot":[0.0826,-6.1209,0.1397],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[36,40],"uv_size":[0.25,0.25]},"east":{"uv":[15,30],"uv_size":[0.5,0.25]},"south":{"uv":[40,36],"uv_size":[0.25,0.25]},"west":{"uv":[30,15],"uv_size":[0.5,0.25]},"up":{"uv":[16,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,16.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0826,-6.9362,0.1398],"size":[0,0.8155,0.0167],"pivot":[0.0826,-6.1207,0.1398],"rotation":[7.3281,-11.1768,4.4096],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[27,17],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[18,27],"uv_size":[0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0047,-6.9275,0.2254],"size":[0.0029,0.7576,0.0183],"pivot":[-0.0018,-6.9275,0.2254],"rotation":[43.8958,5.8832,6.6204],"uv":{"north":{"uv":[27,18],"uv_size":[0.25,0.75]},"east":{"uv":[19,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,19],"uv_size":[0.25,0.75]},"west":{"uv":[20,27],"uv_size":[0.25,0.75]},"up":{"uv":[37,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0673,-6.5023,-0.1734],"size":[0.0004,0.2402,0.2235],"pivot":[0.0677,-6.2622,0.1588],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[38,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,38],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.039,-6.4098,-0.2484],"size":[0.0004,0.0926,0.0838],"pivot":[0.0394,-6.3172,-0.056],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[39,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,39],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0307,-6.534,-0.1572],"size":[0.0004,0.1277,0.0165],"pivot":[0.0311,-6.4063,-0.0321],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[40,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[0,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0287,-6.4439,-0.2103],"size":[0.0004,0.0336,0.0537],"pivot":[0.029,-6.4104,-0.0479],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,0],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0257,-6.5099,-0.1638],"size":[0.0004,0.0672,0.0159],"pivot":[0.0261,-6.4427,-0.0393],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,1],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[2,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0237,-6.4823,-0.183],"size":[0.0004,0.0357,0.0198],"pivot":[0.024,-6.4466,-0.0546],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,2],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[3,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0284,-6.4056,-0.2649],"size":[0.0004,0.0678,0.0198],"pivot":[0.0288,-6.3378,-0.1365],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,3],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[4,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0259,-6.3784,-0.2826],"size":[0.0004,0.0357,0.0184],"pivot":[0.0263,-6.3427,-0.1555],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,4],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[5,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0459,-6.7333,0.0161],"size":[0.0004,0.2401,0.096],"pivot":[0.0463,-6.4932,0.2208],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,5],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[6,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0163,-6.7724,0.0957],"size":[0.0004,0.0322,0.0161],"pivot":[0.0167,-6.7402,0.2205],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,6],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[7,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0338,-6.7283,-0.0006],"size":[0.0004,0.2114,0.0205],"pivot":[0.0341,-6.5168,0.1285],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,7],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[8,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0312,-6.5505,-0.0983],"size":[0.0004,0.0286,0.0985],"pivot":[0.0316,-6.5219,0.1088],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,8],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[9,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0286,-6.6459,-0.0294],"size":[0.0004,0.0965,0.0369],"pivot":[0.029,-6.5494,0.1162],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,9],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[10,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0239,-6.5926,-0.0703],"size":[0.0004,0.0341,0.0424],"pivot":[0.0243,-6.5585,0.0807],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,10],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[11,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0209,-6.6383,-0.0364],"size":[0.0004,0.047,0.0172],"pivot":[0.0213,-6.5914,0.0895],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,11],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[12,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0187,-6.622,-0.0458],"size":[0.0004,0.0265,0.0101],"pivot":[0.0191,-6.5956,0.073],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,12],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[13,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.02,-6.6805,0.0051],"size":[0.0004,0.0382,0.0273],"pivot":[0.0204,-6.6423,0.1411],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,13],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[14,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0166,-6.6948,0.0284],"size":[0.0004,0.0158,0.014],"pivot":[0.017,-6.679,0.151],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,14],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[15,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0761,-6.7947,0.0336],"size":[0.0043,0.5395,0.0897],"pivot":[0.0805,-6.1225,0.1234],"rotation":[7.2377,6.6803,6.684],"uv":{"north":{"uv":[17,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,17],"uv_size":[0.25,0.5]},"south":{"uv":[18,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,18],"uv_size":[0.25,0.5]},"up":{"uv":[41,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0089,-6.4159,-0.3982],"size":[0.0029,0.1572,0.0183],"pivot":[0.0118,-6.2587,-0.3982],"rotation":[40.2806,5.7156,6.8069],"uv":{"north":{"uv":[41,16],"uv_size":[0.25,0.25]},"east":{"uv":[17,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,17],"uv_size":[0.25,0.25]},"west":{"uv":[18,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0184,-6.793,0.1112],"size":[0.0004,0.0568,0.0161],"pivot":[0.0188,-6.7362,0.236],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[41,19],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[20,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0217,-6.9046,0.1761],"size":[0.0043,0.1169,0.0148],"pivot":[0.026,-6.655,0.1909],"rotation":[7.2377,6.6803,6.684],"uv":{"north":{"uv":[41,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0198,-6.881,0.1616],"size":[0.0043,0.0917,0.0148],"pivot":[0.0241,-6.6566,0.1763],"rotation":[7.2377,6.6803,6.684],"uv":{"north":{"uv":[41,23],"uv_size":[0.25,0.25]},"east":{"uv":[24,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,24],"uv_size":[0.25,0.25]},"west":{"uv":[25,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0179,-6.866,0.147],"size":[0.0043,0.075,0.0148],"pivot":[0.0222,-6.6583,0.1618],"rotation":[7.2377,6.6803,6.684],"uv":{"north":{"uv":[41,26],"uv_size":[0.25,0.25]},"east":{"uv":[27,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,27],"uv_size":[0.25,0.25]},"west":{"uv":[28,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.016,-6.8457,0.1325],"size":[0.0043,0.0531,0.0148],"pivot":[0.0203,-6.6599,0.1472],"rotation":[7.2377,6.6803,6.684],"uv":{"north":{"uv":[41,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.014,-6.8321,0.1179],"size":[0.0043,0.0378,0.0148],"pivot":[0.0184,-6.6616,0.1327],"rotation":[7.2377,6.6803,6.684],"uv":{"north":{"uv":[41,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0197,-6.2798,-0.3815],"size":[0.0029,0.042,0.047],"pivot":[0.0226,-6.2378,-0.3165],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[41,35],"uv_size":[0.25,0.25]},"east":{"uv":[36,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,36],"uv_size":[0.25,0.25]},"west":{"uv":[37,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.016,-6.3369,-0.3416],"size":[0.0029,0.0587,0.018],"pivot":[0.0188,-6.2782,-0.3056],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[41,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,39],"uv_size":[0.25,0.25]},"west":{"uv":[40,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0137,-6.3014,-0.3594],"size":[0.0029,0.0188,0.0185],"pivot":[0.0165,-6.2826,-0.3229],"rotation":[15.0345,5.7285,6.8178],"uv":{"north":{"uv":[0,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,0],"uv_size":[0.25,0.25]},"south":{"uv":[1,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,1],"uv_size":[0.25,0.25]},"up":{"uv":[2,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0975,-6.1402,0.2993],"size":[0.0038,0.6715,0.3936],"pivot":[0.1013,-5.4686,0.2993],"rotation":[-14.0113,-11.1768,4.4096],"uv":{"north":{"uv":[27,20],"uv_size":[0.25,0.75]},"east":{"uv":[4,19],"uv_size":[0.5,0.75]},"south":{"uv":[21,27],"uv_size":[0.25,0.75]},"west":{"uv":[19,4],"uv_size":[0.5,0.75]},"up":{"uv":[19,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,19.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0164,-5.8639,0.6739],"size":[0.0038,0.306,0.0374],"pivot":[0.0202,-5.5579,0.6739],"rotation":[-14.0113,-11.1768,4.4096],"uv":{"north":{"uv":[9,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0078,-5.598,0.6987],"size":[0.006,0.2026,0.0324],"pivot":[0.0078,-5.598,0.7311],"rotation":[19.766,10.5252,-176.0555],"uv":{"north":{"uv":[12,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0079,-5.9558,0.6013],"size":[0.0038,0.1008,0.0181],"pivot":[0.0117,-5.8551,0.6013],"rotation":[-14.0113,-11.1768,4.4096],"uv":{"north":{"uv":[15,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0692,-5.5929,1.0192],"size":[0.0321,1.6205,0.1789],"pivot":[0.1013,-3.4466,1.0192],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[19,5],"uv_size":[0.25,1.5]},"east":{"uv":[7,19],"uv_size":[0.25,1.5]},"south":{"uv":[19,7],"uv_size":[0.25,1.5]},"west":{"uv":[19,9],"uv_size":[0.25,1.5]},"up":{"uv":[19,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0876,-4.7864,0.9419],"size":[0.013,1.1345,0.0773],"pivot":[0.1005,-3.4466,1.0192],"rotation":[0,-11.5,3.9766],"uv":{"north":{"uv":[19,23],"uv_size":[0.25,1.25]},"east":{"uv":[23,20],"uv_size":[0.25,1.25]},"south":{"uv":[21,23],"uv_size":[0.25,1.25]},"west":{"uv":[23,22],"uv_size":[0.25,1.25]},"up":{"uv":[21,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1029,-4.7874,0.824],"size":[0.013,0.613,0.1194],"pivot":[0.1159,-3.4477,0.9434],"rotation":[0,-11.5,3.9766],"uv":{"north":{"uv":[20,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,20],"uv_size":[0.25,0.5]},"south":{"uv":[21,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,21],"uv_size":[0.25,0.5]},"up":{"uv":[22,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0692,-4.0336,1.3731],"size":[0.0321,0.1473,0.1148],"pivot":[0.1013,-2.4525,1.3731],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[23,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,23],"uv_size":[0.25,0.25]},"south":{"uv":[24,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0692,-3.6955,1.4934],"size":[0.0321,0.1435,0.0089],"pivot":[0.1013,-2.1144,1.4934],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[26,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0673,-3.6984,1.5016],"size":[0.0321,0.0515,0.0319],"pivot":[0.0994,-2.1173,1.5016],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[29,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0673,-3.6499,1.5189],"size":[0.0321,0.0614,0.0089],"pivot":[0.0994,-2.0688,1.5189],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[32,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0655,-3.6528,1.5271],"size":[0.0321,0.0395,0.0089],"pivot":[0.0976,-2.0717,1.5271],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[35,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0636,-3.6557,1.5353],"size":[0.0321,0.0162,0.0089],"pivot":[0.0958,-2.0746,1.5353],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[38,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1669,-3.6546,1.009],"size":[0.013,0.1932,0.0062],"pivot":[0.1798,-2.3174,1.0152],"rotation":[0,-11.5,3.9766],"uv":{"north":{"uv":[41,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,42],"uv_size":[0.25,0.25]},"west":{"uv":[0,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1661,-3.6546,1.0151],"size":[0.013,0.2047,0.004],"pivot":[0.179,-2.3174,1.0192],"rotation":[0,-11.5,3.9766],"uv":{"north":{"uv":[43,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0692,-3.8948,1.4225],"size":[0.0321,0.2116,0.0609],"pivot":[0.1013,-2.3138,1.4225],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[43,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0607,-3.7089,1.531],"size":[0.0321,0.0283,0.0092],"pivot":[0.0928,-2.1278,1.531],"rotation":[-19.9997,-11.2955,4.0777],"uv":{"north":{"uv":[43,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-3.5822,0.6955],"size":[0.2026,0.0868,0.1259],"pivot":[-0.127,-2.9618,1.2688],"rotation":[-45,0,0],"uv":{"north":{"uv":[43,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-3.5798,0.5181],"size":[0.2026,0.0868,0.1259],"pivot":[-0.127,-2.9595,0.0707],"rotation":[45,0,0],"uv":{"north":{"uv":[43,13],"uv_size":[0.25,0.25]},"east":{"uv":[14,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-2.0083,0.6955],"size":[0.2026,0.0868,0.1259],"pivot":[-0.127,-2.5418,1.2688],"rotation":[45,0,0],"uv":{"north":{"uv":[43,16],"uv_size":[0.25,0.25]},"east":{"uv":[17,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,17],"uv_size":[0.25,0.25]},"west":{"uv":[18,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-2.0106,0.5181],"size":[0.2026,0.0868,0.1259],"pivot":[-0.127,-2.5442,0.0707],"rotation":[-45,0,0],"uv":{"north":{"uv":[43,19],"uv_size":[0.25,0.25]},"east":{"uv":[20,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,20],"uv_size":[0.25,0.25]},"west":{"uv":[21,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,0.0926,-0.1486],"size":[0.2025,0.1338,0.2765],"pivot":[-0.1271,1.0596,0.0153],"rotation":[45,0,0],"uv":{"north":{"uv":[43,22],"uv_size":[0.25,0.25]},"east":{"uv":[23,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,23],"uv_size":[0.25,0.25]},"west":{"uv":[24,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1013,-1.9827,-0.1486],"size":[0.2026,0.1338,0.2765],"pivot":[-0.127,-2.8158,0.0153],"rotation":[-45,0,0],"uv":{"north":{"uv":[43,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0993,0.2546,0.2816],"size":[0.0679,0.191,0.7375],"pivot":[-0.1251,0.4456,0.9066],"rotation":[0,0,-22.5],"uv":{"north":{"uv":[43,28],"uv_size":[0.25,0.25]},"east":{"uv":[27,23],"uv_size":[0.75,0.25]},"south":{"uv":[29,43],"uv_size":[0.25,0.25]},"west":{"uv":[24,27],"uv_size":[0.75,0.25]},"up":{"uv":[27,24],"uv_size":[0.25,0.75]},"down":{"uv":[25,27.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.6829,-0.1875,0.1314],"size":[0.0383,0.1338,0.2765],"pivot":[-0.7086,0.7795,0.2953],"rotation":[35.2644,30,-35.2644],"uv":{"north":{"uv":[43,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3482,-2.4872,0.437],"size":[0.0123,2.9427,0.0958],"pivot":[0.3224,0.4554,1.062],"rotation":[0,45,0],"uv":{"north":{"uv":[9,5],"uv_size":[0.25,3]},"east":{"uv":[6,9],"uv_size":[0.25,3]},"south":{"uv":[8,9],"uv_size":[0.25,3]},"west":{"uv":[9,8],"uv_size":[0.25,3]},"up":{"uv":[43,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.6829,-1.7026,0.1314],"size":[0.0383,0.1338,0.2765],"pivot":[-0.7086,-2.5358,0.2953],"rotation":[-35.2644,30,35.2644],"uv":{"north":{"uv":[43,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0993,-2.1956,0.2816],"size":[0.0679,0.191,0.7375],"pivot":[-0.1251,-2.1956,0.9066],"rotation":[0,0,22.5],"uv":{"north":{"uv":[43,36],"uv_size":[0.25,0.25]},"east":{"uv":[27,25],"uv_size":[0.75,0.25]},"south":{"uv":[37,43],"uv_size":[0.25,0.25]},"west":{"uv":[26,27],"uv_size":[0.75,0.25]},"up":{"uv":[27,26],"uv_size":[0.25,0.75]},"down":{"uv":[27,27.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0314,0.2546,0.2816],"size":[0.0679,0.191,0.7375],"pivot":[0.1251,0.4456,0.9066],"rotation":[0,0,22.5],"uv":{"north":{"uv":[43,37],"uv_size":[0.25,0.25]},"east":{"uv":[0,28],"uv_size":[0.75,0.25]},"south":{"uv":[38,43],"uv_size":[0.25,0.25]},"west":{"uv":[28,0],"uv_size":[0.75,0.25]},"up":{"uv":[1,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,1.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.6446,-0.1875,0.1314],"size":[0.0383,0.1338,0.2765],"pivot":[0.7086,0.7795,0.2953],"rotation":[35.2644,-30,35.2644],"uv":{"north":{"uv":[43,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,39],"uv_size":[0.25,0.25]},"west":{"uv":[40,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.6446,-1.7026,0.1314],"size":[0.0383,0.1338,0.2765],"pivot":[0.7086,-2.5358,0.2953],"rotation":[-35.2644,-30,-35.2644],"uv":{"north":{"uv":[43,41],"uv_size":[0.25,0.25]},"east":{"uv":[42,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,42],"uv_size":[0.25,0.25]},"west":{"uv":[43,43],"uv_size":[0.25,0.25]},"up":{"uv":[0,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0314,-2.1956,0.2816],"size":[0.0679,0.191,0.7375],"pivot":[0.1251,-2.1956,0.9066],"rotation":[0,0,-22.5],"uv":{"north":{"uv":[1,44],"uv_size":[0.25,0.25]},"east":{"uv":[2,28],"uv_size":[0.75,0.25]},"south":{"uv":[44,1],"uv_size":[0.25,0.25]},"west":{"uv":[28,2],"uv_size":[0.75,0.25]},"up":{"uv":[3,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,3.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.6411,1.4186,-1.0685],"size":[0.198,0.2036,0.1913],"pivot":[-0.0387,5.7801,-1.0498],"rotation":[0,22.5,0],"uv":{"north":{"uv":[2,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,2],"uv_size":[0.25,0.25]},"south":{"uv":[3,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,3],"uv_size":[0.25,0.25]},"up":{"uv":[4,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.6024,1.4186,-1.1466],"size":[0.198,0.2036,0.31],"uv":{"north":{"uv":[5,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,5],"uv_size":[0.25,0.25]},"south":{"uv":[6,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,6],"uv_size":[0.25,0.25]},"up":{"uv":[7,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5947,1.4186,-0.9386],"size":[0.1973,0.2036,0.255],"pivot":[0.0077,5.7801,-0.9332],"rotation":[0,27.5,0],"uv":{"north":{"uv":[8,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,8],"uv_size":[0.25,0.25]},"south":{"uv":[9,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,9],"uv_size":[0.25,0.25]},"up":{"uv":[10,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.8607,1.4186,-0.8692],"size":[0.3277,0.2036,0.1953],"pivot":[-0.7119,5.7801,-0.2668],"rotation":[0,-45,0],"uv":{"north":{"uv":[11,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,11],"uv_size":[0.25,0.25]},"south":{"uv":[12,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,12],"uv_size":[0.25,0.25]},"up":{"uv":[13,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.533,1.4186,-0.8692],"size":[0.3277,0.2036,0.1953],"pivot":[0.7119,5.7801,-0.2668],"rotation":[0,45,0],"uv":{"north":{"uv":[14,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,15],"uv_size":[0.25,0.25]},"up":{"uv":[16,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3975,1.4186,-0.9386],"size":[0.1973,0.2036,0.255],"pivot":[-0.0077,5.7801,-0.9332],"rotation":[0,-27.5,0],"uv":{"north":{"uv":[17,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4431,1.4186,-1.0685],"size":[0.198,0.2036,0.1913],"pivot":[0.0387,5.7801,-1.0498],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[20,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,20],"uv_size":[0.25,0.25]},"south":{"uv":[21,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,21],"uv_size":[0.25,0.25]},"up":{"uv":[22,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.6411,1.4186,-1.1059],"size":[0.198,0.2036,0.1913],"pivot":[-0.0387,5.7801,-0.9333],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[23,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,23],"uv_size":[0.25,0.25]},"south":{"uv":[24,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4431,1.4186,-1.1059],"size":[0.198,0.2036,0.1913],"pivot":[0.0387,5.7801,-0.9333],"rotation":[0,22.5,0],"uv":{"north":{"uv":[26,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.6548,1.4186,-1.3092],"size":[0.2058,0.2036,0.1953],"pivot":[0.7119,5.7801,-1.7163],"rotation":[0,-45,0],"uv":{"north":{"uv":[29,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4044,1.4186,-1.1466],"size":[0.198,0.2036,0.31],"uv":{"north":{"uv":[32,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3065,1.4186,-1.4948],"size":[0.2443,0.2036,0.1953],"pivot":[0.4021,5.7801,-1.9019],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[35,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5508,1.4186,-1.4948],"size":[0.2443,0.2036,0.1953],"pivot":[-0.4021,5.7801,-1.9019],"rotation":[0,22.5,0],"uv":{"north":{"uv":[38,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.8607,1.4186,-1.3092],"size":[0.2058,0.2036,0.1953],"pivot":[-0.7119,5.7801,-1.7163],"rotation":[0,45,0],"uv":{"north":{"uv":[41,44],"uv_size":[0.25,0.25]},"east":{"uv":[44,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,44],"uv_size":[0.25,0.25]},"west":{"uv":[44,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,44],"uv_size":[0.25,0.25]},"down":{"uv":[44,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1579,1.4186,-1.5624],"size":[0.3159,0.2036,0.1953],"uv":{"north":{"uv":[44,44],"uv_size":[0.25,0.25]},"east":{"uv":[0,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,0],"uv_size":[0.25,0.25]},"west":{"uv":[1,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3605,-2.4872,0.437],"size":[0.0123,2.9427,0.0958],"pivot":[-0.3224,0.4554,1.062],"rotation":[0,-45,0],"uv":{"north":{"uv":[10,0],"uv_size":[0.25,3]},"east":{"uv":[1,10],"uv_size":[0.25,3]},"south":{"uv":[2,10],"uv_size":[0.25,3]},"west":{"uv":[10,3],"uv_size":[0.25,3]},"up":{"uv":[45,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4086,3.81,0],"size":[0.1797,0.2531,0.1797],"pivot":[0.4086,2.8032,0.1797],"rotation":[14.723,-14.2935,-46.8561],"uv":{"north":{"uv":[45,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4642,3.8169,-0.1305],"size":[0.1155,0.2467,0.8531],"pivot":[0.4648,2.8037,0.7774],"rotation":[0,0,-45],"uv":{"north":{"uv":[45,6],"uv_size":[0.25,0.25]},"east":{"uv":[4,28],"uv_size":[0.75,0.25]},"south":{"uv":[7,45],"uv_size":[0.25,0.25]},"west":{"uv":[28,4],"uv_size":[0.75,0.25]},"up":{"uv":[5,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,5.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.2204,3.3579,-0.4176],"size":[0.1797,0.3365,0.1861],"pivot":[-0.2204,3.6944,-0.4176],"rotation":[42.6944,-29.8768,-61.6635],"uv":{"north":{"uv":[45,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5882,3.81,0],"size":[0.1797,0.2531,0.1797],"pivot":[-0.4086,2.8032,0.1797],"rotation":[14.723,14.2935,46.8561],"uv":{"north":{"uv":[45,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.5798,3.8169,-0.1305],"size":[0.1155,0.2467,0.8531],"pivot":[-0.4648,2.8037,0.7774],"rotation":[0,0,45],"uv":{"north":{"uv":[45,13],"uv_size":[0.25,0.25]},"east":{"uv":[6,28],"uv_size":[0.75,0.25]},"south":{"uv":[14,45],"uv_size":[0.25,0.25]},"west":{"uv":[28,6],"uv_size":[0.75,0.25]},"up":{"uv":[7,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,7.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0408,3.3579,-0.4176],"size":[0.1797,0.3365,0.1861],"pivot":[0.2204,3.6944,-0.4176],"rotation":[42.6944,29.8768,61.6635],"uv":{"north":{"uv":[45,14],"uv_size":[0.25,0.25]},"east":{"uv":[15,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,15],"uv_size":[0.25,0.25]},"west":{"uv":[16,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4437,1.7957,0.8863],"size":[0.0607,1.9178,0.125],"pivot":[-0.4437,1.969,0.7399],"rotation":[0,27,0],"uv":{"north":{"uv":[6,14],"uv_size":[0.25,2]},"east":{"uv":[14,6],"uv_size":[0.25,2]},"south":{"uv":[8,14],"uv_size":[0.25,2]},"west":{"uv":[14,8],"uv_size":[0.25,2]},"up":{"uv":[45,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3772,1.7957,0.6766],"size":[0.0544,1.9993,0.1937],"pivot":[-0.3772,1.7957,0.8704],"rotation":[0,-5.5,0],"uv":{"north":{"uv":[10,14],"uv_size":[0.25,2]},"east":{"uv":[14,10],"uv_size":[0.25,2]},"south":{"uv":[11,14],"uv_size":[0.25,2]},"west":{"uv":[14,12],"uv_size":[0.25,2]},"up":{"uv":[45,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.383,1.7957,0.8863],"size":[0.0607,1.9178,0.125],"pivot":[0.4437,1.969,0.7399],"rotation":[0,-27,0],"uv":{"north":{"uv":[13,14],"uv_size":[0.25,2]},"east":{"uv":[14,14],"uv_size":[0.25,2]},"south":{"uv":[0,15],"uv_size":[0.25,2]},"west":{"uv":[15,0],"uv_size":[0.25,2]},"up":{"uv":[45,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3229,1.7957,0.6766],"size":[0.0544,1.9993,0.1937],"pivot":[0.3772,1.7957,0.8704],"rotation":[0,5.5,0],"uv":{"north":{"uv":[1,15],"uv_size":[0.25,2]},"east":{"uv":[2,15],"uv_size":[0.25,2]},"south":{"uv":[15,2],"uv_size":[0.25,2]},"west":{"uv":[15,4],"uv_size":[0.25,2]},"up":{"uv":[45,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4437,1.6866,0.7399],"size":[0.5154,0.1091,0.2556],"pivot":[-0.4437,1.7957,0.7399],"rotation":[47.5,27,0],"uv":{"north":{"uv":[22,30],"uv_size":[0.5,0.25]},"east":{"uv":[45,21],"uv_size":[0.25,0.25]},"south":{"uv":[30,22],"uv_size":[0.5,0.25]},"west":{"uv":[22,45],"uv_size":[0.25,0.25]},"up":{"uv":[23,30],"uv_size":[0.5,0.25]},"down":{"uv":[30,23.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.0717,1.6866,0.7399],"size":[0.5154,0.1091,0.2556],"pivot":[0.4437,1.7957,0.7399],"rotation":[47.5,-27,0],"uv":{"north":{"uv":[24,30],"uv_size":[0.5,0.25]},"east":{"uv":[45,22],"uv_size":[0.25,0.25]},"south":{"uv":[30,24],"uv_size":[0.5,0.25]},"west":{"uv":[23,45],"uv_size":[0.25,0.25]},"up":{"uv":[25,30],"uv_size":[0.5,0.25]},"down":{"uv":[30,25.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.4265,3.6234,0.6511],"size":[0.853,1.3307,0.0714],"pivot":[-0.4265,4.9542,0.7225],"rotation":[3.25,0,0],"uv":{"north":{"uv":[8,0],"uv_size":[0.75,1.25]},"east":{"uv":[24,0],"uv_size":[0.25,1.25]},"south":{"uv":[1,8],"uv_size":[0.75,1.25]},"west":{"uv":[24,2],"uv_size":[0.25,1.25]},"up":{"uv":[8,28],"uv_size":[0.75,0.25]},"down":{"uv":[28,8.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4265,3.6234,0.7225],"size":[0.2053,1.3307,0.0778],"pivot":[-0.4265,4.9542,0.7225],"rotation":[3.5851,24.957,1.5143],"uv":{"north":{"uv":[4,24],"uv_size":[0.25,1.25]},"east":{"uv":[24,4],"uv_size":[0.25,1.25]},"south":{"uv":[5,24],"uv_size":[0.25,1.25]},"west":{"uv":[6,24],"uv_size":[0.25,1.25]},"up":{"uv":[45,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3631,3.6304,0.8457],"size":[0.2053,1.3307,0.0963],"pivot":[-0.3631,4.9612,0.8457],"rotation":[3.7514,29.9468,1.8747],"uv":{"north":{"uv":[24,6],"uv_size":[0.25,1.25]},"east":{"uv":[8,24],"uv_size":[0.25,1.25]},"south":{"uv":[24,8],"uv_size":[0.25,1.25]},"west":{"uv":[9,24],"uv_size":[0.25,1.25]},"up":{"uv":[45,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3936,3.6274,0.793],"size":[0.2053,1.3307,0.061],"pivot":[-0.3936,4.9582,0.793],"rotation":[3.7514,29.9468,1.8747],"uv":{"north":{"uv":[10,24],"uv_size":[0.25,1.25]},"east":{"uv":[24,10],"uv_size":[0.25,1.25]},"south":{"uv":[11,24],"uv_size":[0.25,1.25]},"west":{"uv":[12,24],"uv_size":[0.25,1.25]},"up":{"uv":[45,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.024,3.6359,0.9535],"size":[0.2887,1.3307,0.2],"pivot":[0.3307,4.9667,0.9428],"rotation":[10.4124,-71.7185,-9.8975],"uv":{"north":{"uv":[24,12],"uv_size":[0.25,1.25]},"east":{"uv":[13,24],"uv_size":[0.25,1.25]},"south":{"uv":[14,24],"uv_size":[0.25,1.25]},"west":{"uv":[24,14],"uv_size":[0.25,1.25]},"up":{"uv":[45,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1578,3.6304,0.8457],"size":[0.2053,1.3307,0.0963],"pivot":[0.3631,4.9612,0.8457],"rotation":[3.7514,-29.9468,-1.8747],"uv":{"north":{"uv":[15,24],"uv_size":[0.25,1.25]},"east":{"uv":[16,24],"uv_size":[0.25,1.25]},"south":{"uv":[24,16],"uv_size":[0.25,1.25]},"west":{"uv":[18,24],"uv_size":[0.25,1.25]},"up":{"uv":[45,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1883,3.6274,0.793],"size":[0.2053,1.3307,0.061],"pivot":[0.3936,4.9582,0.793],"rotation":[3.7514,-29.9468,-1.8747],"uv":{"north":{"uv":[24,18],"uv_size":[0.25,1.25]},"east":{"uv":[20,24],"uv_size":[0.25,1.25]},"south":{"uv":[24,20],"uv_size":[0.25,1.25]},"west":{"uv":[22,24],"uv_size":[0.25,1.25]},"up":{"uv":[45,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2212,3.6234,0.7225],"size":[0.2053,1.3307,0.0778],"pivot":[0.4265,4.9542,0.7225],"rotation":[3.5851,-24.957,-1.5143],"uv":{"north":{"uv":[24,22],"uv_size":[0.25,1.25]},"east":{"uv":[23,24],"uv_size":[0.25,1.25]},"south":{"uv":[24,24],"uv_size":[0.25,1.25]},"west":{"uv":[0,25],"uv_size":[0.25,1.25]},"up":{"uv":[45,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3127,3.6359,0.9535],"size":[0.2887,1.3307,0.2],"pivot":[-0.3307,4.9667,0.9428],"rotation":[10.4124,71.7185,9.8975],"uv":{"north":{"uv":[25,0],"uv_size":[0.25,1.25]},"east":{"uv":[1,25],"uv_size":[0.25,1.25]},"south":{"uv":[2,25],"uv_size":[0.25,1.25]},"west":{"uv":[25,2],"uv_size":[0.25,1.25]},"up":{"uv":[45,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0028,3.1747,1.0661],"size":[0.1219,0.4661,0.2494],"pivot":[0.1247,3.6408,1.0661],"rotation":[-90,-70.75,90],"uv":{"north":{"uv":[26,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,26],"uv_size":[0.25,0.5]},"south":{"uv":[27,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,27],"uv_size":[0.25,0.5]},"up":{"uv":[45,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3431,4.9432,0.5753],"size":[0.0835,1.4304,0.0775],"pivot":[0.4265,6.3737,0.5753],"rotation":[6.5504,-24.9754,-2.7757],"uv":{"north":{"uv":[19,11],"uv_size":[0.25,1.5]},"east":{"uv":[12,19],"uv_size":[0.25,1.5]},"south":{"uv":[19,13],"uv_size":[0.25,1.5]},"west":{"uv":[19,15],"uv_size":[0.25,1.5]},"up":{"uv":[45,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3101,4.948,0.645],"size":[0.0835,1.4329,0.061],"pivot":[0.3936,6.3809,0.645],"rotation":[6.8475,-29.8499,-3.4205],"uv":{"north":{"uv":[17,19],"uv_size":[0.25,1.5]},"east":{"uv":[19,17],"uv_size":[0.25,1.5]},"south":{"uv":[19,19],"uv_size":[0.25,1.5]},"west":{"uv":[20,0],"uv_size":[0.25,1.5]},"up":{"uv":[45,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2796,4.9496,0.6976],"size":[0.0835,1.4368,0.0962],"pivot":[0.3631,6.3864,0.6976],"rotation":[6.8475,-29.8499,-3.4205],"uv":{"north":{"uv":[20,2],"uv_size":[0.25,1.5]},"east":{"uv":[4,20],"uv_size":[0.25,1.5]},"south":{"uv":[20,4],"uv_size":[0.25,1.5]},"west":{"uv":[5,20],"uv_size":[0.25,1.5]},"up":{"uv":[45,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3631,4.9496,0.6976],"size":[0.0835,1.4368,0.0962],"pivot":[-0.3631,6.3864,0.6976],"rotation":[6.8475,29.8499,3.4205],"uv":{"north":{"uv":[6,20],"uv_size":[0.25,1.5]},"east":{"uv":[20,6],"uv_size":[0.25,1.5]},"south":{"uv":[8,20],"uv_size":[0.25,1.5]},"west":{"uv":[20,8],"uv_size":[0.25,1.5]},"up":{"uv":[45,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3936,4.948,0.645],"size":[0.0835,1.4329,0.061],"pivot":[-0.3936,6.3809,0.645],"rotation":[6.8475,29.8499,3.4205],"uv":{"north":{"uv":[9,20],"uv_size":[0.25,1.5]},"east":{"uv":[10,20],"uv_size":[0.25,1.5]},"south":{"uv":[20,10],"uv_size":[0.25,1.5]},"west":{"uv":[11,20],"uv_size":[0.25,1.5]},"up":{"uv":[45,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4265,4.9432,0.5753],"size":[0.0835,1.4304,0.0775],"pivot":[-0.4265,6.3737,0.5753],"rotation":[6.5504,24.9754,2.7757],"uv":{"north":{"uv":[20,12],"uv_size":[0.25,1.5]},"east":{"uv":[13,20],"uv_size":[0.25,1.5]},"south":{"uv":[14,20],"uv_size":[0.25,1.5]},"west":{"uv":[20,14],"uv_size":[0.25,1.5]},"up":{"uv":[45,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.315,4.9553,0.7804],"size":[0.0835,1.4397,0.2],"pivot":[-0.315,6.395,0.7804],"rotation":[18.6125,71.095,17.6726],"uv":{"north":{"uv":[20,18],"uv_size":[0.25,1.5]},"east":{"uv":[20,20],"uv_size":[0.25,1.5]},"south":{"uv":[0,21],"uv_size":[0.25,1.5]},"west":{"uv":[21,0],"uv_size":[0.25,1.5]},"up":{"uv":[45,39],"uv_size":[0.25,0.25]},"down":{"uv":[40,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2315,4.9553,0.7804],"size":[0.0835,1.4397,0.2],"pivot":[0.315,6.395,0.7804],"rotation":[18.6125,-71.095,-17.6726],"uv":{"north":{"uv":[1,21],"uv_size":[0.25,1.5]},"east":{"uv":[2,21],"uv_size":[0.25,1.5]},"south":{"uv":[21,2],"uv_size":[0.25,1.5]},"west":{"uv":[3,21],"uv_size":[0.25,1.5]},"up":{"uv":[45,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0413,4.9617,0.8418],"size":[0.0835,1.4397,0.2494],"pivot":[0.1247,6.4014,0.8418],"rotation":[90,-84.0644,-90],"uv":{"north":{"uv":[21,4],"uv_size":[0.25,1.5]},"east":{"uv":[21,6],"uv_size":[0.25,1.5]},"south":{"uv":[7,21],"uv_size":[0.25,1.5]},"west":{"uv":[21,8],"uv_size":[0.25,1.5]},"up":{"uv":[45,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4073,6.3165,0.0041],"size":[0.8145,0.3442,0.3529],"uv":{"north":{"uv":[9,28],"uv_size":[0.75,0.25]},"east":{"uv":[45,42],"uv_size":[0.25,0.25]},"south":{"uv":[28,9],"uv_size":[0.75,0.25]},"west":{"uv":[43,45],"uv_size":[0.25,0.25]},"up":{"uv":[10,28],"uv_size":[0.75,0.25]},"down":{"uv":[28,10.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.1564,6.3165,-0.0134],"size":[0.3297,0.3442,0.3094],"pivot":[-0.6407,5.6822,0.7599],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[45,43],"uv_size":[0.25,0.25]},"east":{"uv":[44,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,44],"uv_size":[0.25,0.25]},"west":{"uv":[45,45],"uv_size":[0.25,0.25]},"up":{"uv":[0,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3493,6.3165,-0.1592],"size":[0.3297,0.3442,0.1455],"pivot":[-0.8335,5.6822,0.6141],"rotation":[0,-45,0],"uv":{"north":{"uv":[1,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3557,6.3165,-0.4836],"size":[0.3297,0.3442,0.107],"pivot":[-0.84,5.6822,0.2897],"rotation":[0,-67.5,0],"uv":{"north":{"uv":[4,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3692,6.3165,-0.868],"size":[0.4297,0.3442,0.1743],"pivot":[-0.7535,5.6822,-0.0273],"rotation":[0,-90,0],"uv":{"north":{"uv":[28,30],"uv_size":[0.5,0.25]},"east":{"uv":[7,46],"uv_size":[0.25,0.25]},"south":{"uv":[30,28],"uv_size":[0.5,0.25]},"west":{"uv":[46,7],"uv_size":[0.25,0.25]},"up":{"uv":[29,30],"uv_size":[0.5,0.25]},"down":{"uv":[30,29.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1733,6.3165,-0.0134],"size":[0.3297,0.3442,0.3094],"pivot":[0.6407,5.6822,0.7599],"rotation":[0,22.5,0],"uv":{"north":{"uv":[8,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,8],"uv_size":[0.25,0.25]},"south":{"uv":[9,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,9],"uv_size":[0.25,0.25]},"up":{"uv":[10,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0196,6.3165,-0.1592],"size":[0.3297,0.3442,0.1455],"pivot":[0.8335,5.6822,0.6141],"rotation":[0,45,0],"uv":{"north":{"uv":[11,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,11],"uv_size":[0.25,0.25]},"south":{"uv":[12,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,12],"uv_size":[0.25,0.25]},"up":{"uv":[13,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.026,6.3165,-0.4836],"size":[0.3297,0.3442,0.107],"pivot":[0.84,5.6822,0.2897],"rotation":[0,67.5,0],"uv":{"north":{"uv":[14,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,15],"uv_size":[0.25,0.25]},"up":{"uv":[16,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0869,0.8228,-0.4391],"size":[0.0143,0.4176,0.7207],"pivot":[0.1013,0.8228,0.2816],"rotation":[0,7.5,0],"uv":{"north":{"uv":[30,30],"uv_size":[0.25,0.5]},"east":{"uv":[21,10],"uv_size":[0.75,0.5]},"south":{"uv":[0,31],"uv_size":[0.25,0.5]},"west":{"uv":[21,11],"uv_size":[0.75,0.5]},"up":{"uv":[11,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,11.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1013,0.8228,-0.4391],"size":[0.0143,0.4176,0.7207],"pivot":[-0.1013,0.8228,0.2816],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[31,0],"uv_size":[0.25,0.5]},"east":{"uv":[12,21],"uv_size":[0.75,0.5]},"south":{"uv":[1,31],"uv_size":[0.25,0.5]},"west":{"uv":[21,12],"uv_size":[0.75,0.5]},"up":{"uv":[12,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,12.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0869,-1.1838,-0.3301],"size":[0.0143,2.0065,0.6117],"pivot":[0.1013,0.4052,0.2816],"rotation":[0,7.5,0],"uv":{"north":{"uv":[15,6],"uv_size":[0.25,2]},"east":{"uv":[1,6],"uv_size":[0.5,2]},"south":{"uv":[7,15],"uv_size":[0.25,2]},"west":{"uv":[2,6],"uv_size":[0.5,2]},"up":{"uv":[31,1],"uv_size":[0.25,0.5]},"down":{"uv":[2,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1013,-1.1838,-0.3301],"size":[0.0143,2.0065,0.6117],"pivot":[-0.1013,0.4052,0.2816],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[15,8],"uv_size":[0.25,2]},"east":{"uv":[6,2],"uv_size":[0.5,2]},"south":{"uv":[9,15],"uv_size":[0.25,2]},"west":{"uv":[3,6],"uv_size":[0.5,2]},"up":{"uv":[31,2],"uv_size":[0.25,0.5]},"down":{"uv":[3,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0215,0.6055,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,0.4052,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[17,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,0.6055,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,0.4052,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[20,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,20],"uv_size":[0.25,0.25]},"south":{"uv":[21,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,21],"uv_size":[0.25,0.25]},"up":{"uv":[22,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.6017,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.4013,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[23,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,23],"uv_size":[0.25,0.25]},"south":{"uv":[24,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.6017,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.4013,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[26,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.6049,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.8666,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[29,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.6049,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.8666,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[32,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.4638,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.7255,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[35,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.4638,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.7255,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[38,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.4606,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.2602,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[41,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.4606,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.2602,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[44,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,44],"uv_size":[0.25,0.25]},"south":{"uv":[45,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,45],"uv_size":[0.25,0.25]},"up":{"uv":[46,46],"uv_size":[0.25,0.25]},"down":{"uv":[0,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,0.4644,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,0.2641,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[47,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,0.4644,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,0.2641,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[47,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.3356,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.5972,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[47,6],"uv_size":[0.25,0.25]},"east":{"uv":[7,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,7],"uv_size":[0.25,0.25]},"west":{"uv":[8,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.3356,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.5972,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[47,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.3323,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.132,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[47,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.3323,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.132,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[47,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,0.3361,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,0.1358,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[47,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,0.3361,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,0.1358,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[47,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.1457,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.4074,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[47,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.1457,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.4074,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[47,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.1425,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.0578,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[47,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.1425,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.0578,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[47,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,0.1463,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-0.054,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[47,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,0.1463,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-0.054,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[47,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.0072,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.2689,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[47,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.0072,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.2689,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[47,45],"uv_size":[0.25,0.25]},"east":{"uv":[46,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,46],"uv_size":[0.25,0.25]},"west":{"uv":[47,47],"uv_size":[0.25,0.25]},"up":{"uv":[0,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.004,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.1963,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[1,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.004,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.1963,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[4,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,0.0078,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-0.1925,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[7,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,7],"uv_size":[0.25,0.25]},"south":{"uv":[8,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,8],"uv_size":[0.25,0.25]},"up":{"uv":[9,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,0.0078,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-0.1925,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[10,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,10],"uv_size":[0.25,0.25]},"south":{"uv":[11,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,11],"uv_size":[0.25,0.25]},"up":{"uv":[12,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.1185,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.1432,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[13,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,13],"uv_size":[0.25,0.25]},"south":{"uv":[14,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,14],"uv_size":[0.25,0.25]},"up":{"uv":[15,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.1185,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.1432,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[16,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.1217,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.3221,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[19,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.1217,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.3221,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[22,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,-0.1179,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-0.3182,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[25,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,-0.1179,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-0.3182,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[28,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.3083,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.0466,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[31,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.3083,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.0466,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[34,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.3115,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.5118,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[37,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.3115,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.5118,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[40,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,40],"uv_size":[0.25,0.25]},"south":{"uv":[41,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,41],"uv_size":[0.25,0.25]},"up":{"uv":[42,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,-0.3077,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-0.508,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[43,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,43],"uv_size":[0.25,0.25]},"south":{"uv":[44,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,44],"uv_size":[0.25,0.25]},"up":{"uv":[45,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,-0.3077,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-0.508,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[46,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,46],"uv_size":[0.25,0.25]},"south":{"uv":[47,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,47],"uv_size":[0.25,0.25]},"up":{"uv":[48,48],"uv_size":[0.25,0.25]},"down":{"uv":[0,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.4452,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.1836,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[49,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.4452,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.1836,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[49,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.4485,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.6488,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[49,6],"uv_size":[0.25,0.25]},"east":{"uv":[7,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,7],"uv_size":[0.25,0.25]},"west":{"uv":[8,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.4485,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.6488,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[49,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,-0.4447,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-0.645,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[49,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,-0.4447,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-0.645,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[49,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.5765,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.3148,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[49,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.5765,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.3148,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[49,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.5797,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.7801,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[49,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.5797,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.7801,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[49,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,-0.5759,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-0.7762,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[49,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,-0.5759,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-0.7762,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[49,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.7625,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.5009,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[49,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.7625,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.5009,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[49,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.7658,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.9661,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[49,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.7658,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.9661,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[49,45],"uv_size":[0.25,0.25]},"east":{"uv":[46,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,46],"uv_size":[0.25,0.25]},"west":{"uv":[47,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,47],"uv_size":[0.25,0.25]},"down":{"uv":[48,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,-0.762,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-0.9623,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[49,48],"uv_size":[0.25,0.25]},"east":{"uv":[49,49],"uv_size":[0.25,0.25]},"south":{"uv":[0,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,-0.762,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-0.9623,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[2,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,2],"uv_size":[0.25,0.25]},"south":{"uv":[3,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,3],"uv_size":[0.25,0.25]},"up":{"uv":[4,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.8906,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.6289,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[5,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,5],"uv_size":[0.25,0.25]},"south":{"uv":[6,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,6],"uv_size":[0.25,0.25]},"up":{"uv":[7,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.8906,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.6289,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[8,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,8],"uv_size":[0.25,0.25]},"south":{"uv":[9,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,9],"uv_size":[0.25,0.25]},"up":{"uv":[10,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-0.8939,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-1.0942,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[11,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,11],"uv_size":[0.25,0.25]},"south":{"uv":[12,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,12],"uv_size":[0.25,0.25]},"up":{"uv":[13,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-0.8939,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-1.0942,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[14,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,15],"uv_size":[0.25,0.25]},"up":{"uv":[16,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,-0.89,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-1.0903,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[17,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,-0.89,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-1.0903,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[20,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,20],"uv_size":[0.25,0.25]},"south":{"uv":[21,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,21],"uv_size":[0.25,0.25]},"up":{"uv":[22,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-1.0187,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.757,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[23,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,23],"uv_size":[0.25,0.25]},"south":{"uv":[24,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-1.0187,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.757,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[26,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-1.0219,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-1.2222,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[29,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-1.0219,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-1.2222,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[32,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0071,-1.0181,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[0.0215,-1.2184,-0.3248],"rotation":[0,7.5,0],"uv":{"north":{"uv":[35,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0215,-1.0181,-0.4132],"size":[0.0143,0.057,0.0884],"pivot":[-0.0215,-1.2184,-0.3248],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[38,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,-1.2427,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,-0.9811,-0.4909],"rotation":[45,7.5,0],"uv":{"north":{"uv":[41,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,-1.2427,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,-0.9811,-0.4909],"rotation":[45,-7.5,0],"uv":{"north":{"uv":[44,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,44],"uv_size":[0.25,0.25]},"south":{"uv":[45,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,45],"uv_size":[0.25,0.25]},"up":{"uv":[46,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0147,0.8178,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[-0.0004,0.6175,-0.4909],"rotation":[-45,7.5,0],"uv":{"north":{"uv":[47,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,47],"uv_size":[0.25,0.25]},"south":{"uv":[48,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,48],"uv_size":[0.25,0.25]},"up":{"uv":[49,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0004,0.8178,-0.5793],"size":[0.0143,0.0613,0.1242],"pivot":[0.0004,0.6175,-0.4909],"rotation":[-45,-7.5,0],"uv":{"north":{"uv":[50,50],"uv_size":[0.25,0.25]},"east":{"uv":[0,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,0],"uv_size":[0.25,0.25]},"west":{"uv":[1,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1055,6.3165,0.1879],"size":[0.3297,0.5841,0.1764],"pivot":[-0.5898,6.0264,-0.276],"rotation":[0,22.5,0],"uv":{"north":{"uv":[31,3],"uv_size":[0.25,0.5]},"east":{"uv":[4,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,4],"uv_size":[0.25,0.5]},"west":{"uv":[5,31],"uv_size":[0.25,0.5]},"up":{"uv":[51,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2984,6.3165,0.4977],"size":[0.3297,0.5841,0.1455],"pivot":[-0.7826,6.0264,-0.1301],"rotation":[0,45,0],"uv":{"north":{"uv":[31,5],"uv_size":[0.25,0.5]},"east":{"uv":[6,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,6],"uv_size":[0.25,0.5]},"west":{"uv":[7,31],"uv_size":[0.25,0.5]},"up":{"uv":[51,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3048,6.3165,0.8607],"size":[0.3297,0.5841,0.107],"pivot":[-0.7891,6.0264,0.1943],"rotation":[0,67.5,0],"uv":{"north":{"uv":[31,7],"uv_size":[0.25,0.5]},"east":{"uv":[8,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,8],"uv_size":[0.25,0.5]},"west":{"uv":[9,31],"uv_size":[0.25,0.5]},"up":{"uv":[51,4],"uv_size":[0.25,0.25]},"down":{"uv":[5,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2973,6.3165,1.1776],"size":[0.3069,0.5841,0.2761],"pivot":[-0.8044,6.0264,0.5113],"rotation":[0,90,0],"uv":{"north":{"uv":[31,9],"uv_size":[0.25,0.5]},"east":{"uv":[10,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,10],"uv_size":[0.25,0.5]},"west":{"uv":[11,31],"uv_size":[0.25,0.5]},"up":{"uv":[51,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2242,6.3165,0.1879],"size":[0.3297,0.5841,0.1764],"pivot":[0.5898,6.0264,-0.276],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[31,11],"uv_size":[0.25,0.5]},"east":{"uv":[12,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,12],"uv_size":[0.25,0.5]},"west":{"uv":[13,31],"uv_size":[0.25,0.5]},"up":{"uv":[51,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0313,6.3165,0.4977],"size":[0.3297,0.5841,0.1455],"pivot":[0.7826,6.0264,-0.1301],"rotation":[0,-45,0],"uv":{"north":{"uv":[31,13],"uv_size":[0.25,0.5]},"east":{"uv":[14,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,14],"uv_size":[0.25,0.5]},"west":{"uv":[15,31],"uv_size":[0.25,0.5]},"up":{"uv":[51,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0249,6.3165,0.8607],"size":[0.3297,0.5841,0.107],"pivot":[0.7891,6.0264,0.1943],"rotation":[0,-67.5,0],"uv":{"north":{"uv":[31,15],"uv_size":[0.25,0.5]},"east":{"uv":[16,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,16],"uv_size":[0.25,0.5]},"west":{"uv":[17,31],"uv_size":[0.25,0.5]},"up":{"uv":[51,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.026,6.7879,-0.4836],"size":[0.3297,0.1127,0.107],"pivot":[0.84,6.0264,0.2897],"rotation":[0,67.5,0],"uv":{"north":{"uv":[51,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0196,6.7879,-0.1592],"size":[0.3297,0.1127,0.1455],"pivot":[0.8335,6.0264,0.6141],"rotation":[0,45,0],"uv":{"north":{"uv":[51,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1733,6.7879,-0.0134],"size":[0.3297,0.1127,0.3094],"pivot":[0.6407,6.0264,0.7599],"rotation":[0,22.5,0],"uv":{"north":{"uv":[51,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3692,6.7879,-0.868],"size":[0.4297,0.1127,0.1743],"pivot":[-0.7535,6.0264,-0.0273],"rotation":[0,-90,0],"uv":{"north":{"uv":[31,17],"uv_size":[0.5,0.25]},"east":{"uv":[51,18],"uv_size":[0.25,0.25]},"south":{"uv":[18,31],"uv_size":[0.5,0.25]},"west":{"uv":[19,51],"uv_size":[0.25,0.25]},"up":{"uv":[31,18],"uv_size":[0.5,0.25]},"down":{"uv":[19,31.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.3557,6.7879,-0.4836],"size":[0.3297,0.1127,0.107],"pivot":[-0.84,6.0264,0.2897],"rotation":[0,-67.5,0],"uv":{"north":{"uv":[51,19],"uv_size":[0.25,0.25]},"east":{"uv":[20,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,20],"uv_size":[0.25,0.25]},"west":{"uv":[21,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3493,6.7879,-0.1592],"size":[0.3297,0.1127,0.1455],"pivot":[-0.8335,6.0264,0.6141],"rotation":[0,-45,0],"uv":{"north":{"uv":[51,22],"uv_size":[0.25,0.25]},"east":{"uv":[23,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,23],"uv_size":[0.25,0.25]},"west":{"uv":[24,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1564,6.7879,-0.0134],"size":[0.3297,0.1127,0.3094],"pivot":[-0.6407,6.0264,0.7599],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[51,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4073,6.7879,0.0041],"size":[0.8145,0.1127,0.3529],"uv":{"north":{"uv":[13,28],"uv_size":[0.75,0.25]},"east":{"uv":[51,28],"uv_size":[0.25,0.25]},"south":{"uv":[28,13],"uv_size":[0.75,0.25]},"west":{"uv":[29,51],"uv_size":[0.25,0.25]},"up":{"uv":[14,28],"uv_size":[0.75,0.25]},"down":{"uv":[28,14.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3496,6.6303,0.0041],"size":[0.6991,0.1576,0.4106],"uv":{"north":{"uv":[15,28],"uv_size":[0.75,0.25]},"east":{"uv":[31,19],"uv_size":[0.5,0.25]},"south":{"uv":[28,15],"uv_size":[0.75,0.25]},"west":{"uv":[20,31],"uv_size":[0.5,0.25]},"up":{"uv":[21,13],"uv_size":[0.75,0.5]},"down":{"uv":[21,14.5],"uv_size":[0.75,-0.5]}}},{"origin":[-0.4532,6.6303,-0.3874],"size":[0.4944,0.1576,0.4944],"pivot":[-0.7728,5.9137,0.386],"rotation":[0,-45,0],"uv":{"north":{"uv":[31,20],"uv_size":[0.5,0.25]},"east":{"uv":[21,31],"uv_size":[0.5,0.25]},"south":{"uv":[31,21],"uv_size":[0.5,0.25]},"west":{"uv":[22,31],"uv_size":[0.5,0.25]},"up":{"uv":[26,4],"uv_size":[0.5,0.5]},"down":{"uv":[5,26.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.6764,3.6536,0.996],"size":[0.2181,0.1379,0.2574],"pivot":[0.1767,4.9843,1.2534],"rotation":[4.5913,-44.9079,-3.2448],"uv":{"north":{"uv":[51,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4582,3.6536,0.996],"size":[0.2181,0.1379,0.2574],"pivot":[-0.1767,4.9843,1.2534],"rotation":[4.5913,44.9079,3.2448],"uv":{"north":{"uv":[51,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.164,3.6387,0.9907],"size":[0.2887,1.3307,0.2494],"pivot":[0.1247,4.9694,0.9907],"rotation":[90,-86.75,-90],"uv":{"north":{"uv":[3,25],"uv_size":[0.25,1.25]},"east":{"uv":[25,4],"uv_size":[0.25,1.25]},"south":{"uv":[25,6],"uv_size":[0.25,1.25]},"west":{"uv":[7,25],"uv_size":[0.25,1.25]},"up":{"uv":[51,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0236,3.3008,1.0281],"size":[0.2887,0.3303,0.2],"pivot":[0.3303,3.6311,1.0173],"rotation":[-45.2285,-64.0196,49.3287],"uv":{"north":{"uv":[51,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3123,3.3008,1.0281],"size":[0.2887,0.3303,0.2],"pivot":[-0.3303,3.6311,1.0173],"rotation":[-45.2285,64.0196,-49.3287],"uv":{"north":{"uv":[51,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1578,3.5649,0.9212],"size":[0.2053,0.0677,0.0963],"pivot":[0.3631,3.6326,0.9212],"rotation":[-9.1107,-28.8745,23.9791],"uv":{"north":{"uv":[51,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.3631,3.5649,0.9212],"size":[0.2053,0.0677,0.0963],"pivot":[-0.3631,3.6326,0.9212],"rotation":[-9.1107,28.8745,-23.9791],"uv":{"north":{"uv":[51,45],"uv_size":[0.25,0.25]},"east":{"uv":[46,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,46],"uv_size":[0.25,0.25]},"west":{"uv":[47,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,47],"uv_size":[0.25,0.25]},"down":{"uv":[48,51.25],"uv_size":[0.25,-0.25]}}}]},{"name":"constraint","pivot":[0,4.4442,0.1281]},{"name":"camera","pivot":[0,4.4442,0.1281]},{"name":"view","pivot":[0,4.4442,0.1281]},{"name":"idle_view","parent":"view","pivot":[0,64,-3]},{"name":"positioning","pivot":[0,4.4442,0.1281]},{"name":"ground","parent":"positioning","pivot":[0,0,0]},{"name":"thirdperson_hand","parent":"positioning","pivot":[-0.0156,6.125,-2.0625]},{"name":"fixed","parent":"positioning","pivot":[0.7969,5.125,-1.0625],"rotation":[0,90,0]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/skeleton.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/skeleton.anim.json new file mode 100644 index 0000000..03b3406 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/skeleton.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"draw":{"loop":true,"animation_length":0.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[113.423,17.042,-71.194],"0.04":[100.329,23.291,-92.853],"0.08":[84.169,20.155,-119.577],"0.12":[76.985,8.681,-139.206],"0.17":[94.027,-15.248,-150.808],"0.21":[123.721,-32.246,-170.256],"0.25":[131.006,-37.005,-177.525],"0.29":[124.078,-43.068,-176.758],"0.33":[118.855,-48.305,-177.211],"0.38":[125.178,-47.565,-186.228],"0.42":[137.063,-36.139,-199.933],"0.46":[143.623,-16.477,-209.771],"0.5":[143.909,4.676,-216.761],"0.54":[141.396,19.456,-220.346],"0.58":[138.268,29.698,-219.666],"0.62":[135.405,38.348,-217.456],"0.67":[144.252,28.885,-201.117],"0.71":[152.645,2.793,-183.647],"0.75":[144.128,-44.368,-156.339],"0.79":[94.738,-47.467,-101.075],"0.83":[79.309,-35.897,-77.29],"0.88":[80.88,-36.314,-82.035],"0.92":[83.411,-44.033,-88.104],"0.96":[85.919,-49.287,-92.047]},"position":{"0.0":[-9.575,-35.516,-12.08],"0.04":[-9.5,-33.968,-12.497],"0.08":[-9.397,-31.857,-13.029],"0.12":[-8.761,-27.428,-14.234],"0.17":[-8.409,-27.6,-13.658],"0.21":[-7.669,-27.616,-14.35],"0.25":[-8.131,-26.841,-15.328],"0.29":[-8.63,-26.287,-15.749],"0.33":[-9.143,-25.706,-16.133],"0.38":[-9.655,-25.166,-16.469],"0.42":[-10.156,-24.689,-16.751],"0.46":[-10.638,-24.319,-16.956],"0.5":[-11.088,-24.128,-17.062],"0.54":[-11.407,-24.102,-17.097],"0.58":[-11.512,-24.24,-17.124],"0.62":[-11.55,-24.605,-17.219],"0.67":[-11.562,-25.172,-17.415],"0.71":[-11.504,-25.794,-17.623],"0.75":[-11.501,-26.391,-17.844],"0.79":[-11.548,-26.677,-18.121],"0.83":[-11.561,-26.599,-18.793],"0.88":[-11.627,-26.246,-18.894],"0.92":[-11.824,-26.123,-19.08],"0.96":[-11.97,-26.111,-19.105]}},"skeleton":{"rotation":{"0.0":[-172.374,-56.417,5.785],"0.04":[-193.18,-108.539,25.318],"0.08":[-184.43,-161.614,13.753],"0.12":[-185.33,-217.396,7.89],"0.17":[-127.844,-277.573,64.106],"0.21":[-173.945,-334.004,14.639],"0.25":[-174.767,-392.496,8.187],"0.29":[-251.623,-454.43,82.734],"0.33":[-185.122,-509.926,13.792],"0.38":[-184.776,-566.716,9.843],"0.42":[-202.585,-619.66,-10.129],"0.46":[-173.552,-671.246,16.015],"0.5":[-176,-722.638,12.017],"0.54":[-172.987,-777.761,5.702],"0.58":[-187.398,-839.65,17.98],"0.62":[-184.312,-909.52,10.421],"0.67":[-186.335,-909.871,9.128],"0.71":[-193.745,-906.044,8.497],"0.75":[-199.67,-891.34,8.989],"0.79":[-208.323,-884.614,18.765],"0.83":[-194.792,-882.795,29.714],"0.88":[-192.397,-881.209,35.715],"0.92":[-182.222,-878.492,16.316],"0.96":[-169.877,-880.828,-17.172]},"position":{"0.0":{"post":[4.2,15.8,-2.15],"lerp_mode":"catmullrom"},"0.66":{"post":[4.2,15.8,-2.15],"lerp_mode":"catmullrom"},"0.95":{"post":[5.2,15.8,-3.15],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[135.65,-51.071,83.072],"0.04":[135.637,-51.068,83.084],"0.17":[135.637,-51.068,83.084],"0.21":[135.646,-51.07,83.076],"0.25":[135.642,-51.069,83.08],"0.29":[135.637,-51.068,83.084],"0.33":[135.659,-51.066,83.065],"0.38":[135.646,-51.068,83.077],"0.42":[135.65,-51.071,83.072],"0.46":[135.637,-51.068,83.084],"0.5":[135.637,-51.068,83.084],"0.54":[135.646,-51.07,83.076],"0.58":[133.525,-51.089,84.964],"0.62":[125.861,-50.269,91.968],"0.67":[116.196,-46.228,101.345],"0.71":[110.499,-38.781,108.047],"0.75":[110.69,-28.77,110.393],"0.79":[116.108,-16.343,108.65],"0.83":[124.435,0.919,103.239],"0.88":[129.387,20.155,98.283],"0.92":[127.103,37.004,89.782],"0.96":[119.824,45.507,78.923]},"position":{"0.0":[19.683,-36.81,-20.638],"0.54":[19.683,-36.81,-20.638],"0.58":[19.608,-36.612,-20.829],"0.62":[19.292,-35.841,-21.57],"0.67":[18.748,-34.561,-22.756],"0.71":[18.083,-33.086,-24.012],"0.75":[17.376,-31.661,-25.061],"0.79":[16.704,-30.518,-25.636],"0.83":[16.15,-29.607,-25.598],"0.88":[15.739,-28.872,-25.427],"0.92":[15.517,-28.538,-25.417],"0.96":[15.448,-28.463,-25.444]}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_deploy1"}}},"draw_1":{"loop":true,"animation_length":0.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[117.721,9.09,-61.307],"0.04":[116.478,2.548,-58.577],"0.08":[113.524,-6.056,-54.475],"0.12":[108.376,-15.14,-49.303],"0.17":[101.17,-22.802,-43.947],"0.21":[92.644,-27.732,-43.144],"0.25":[83.031,-33.064,-53.784],"0.29":[81.419,-44.705,-73.594],"0.33":[89.797,-54.585,-89.406],"0.38":[97.159,-60.826,-99.62],"0.42":[104.726,-65.403,-109.547],"0.46":[110.876,-69.655,-117.574],"0.5":[117.373,-75.287,-126.503],"0.54":[127.698,-81.83,-138.949],"0.58":[119.427,-84.536,-130.45],"0.62":[91.218,-83.403,-99.199],"0.67":[90.748,-69.022,-90.141],"0.71":[90.95,-54.813,-86.507],"0.75":[84.268,-45.616,-81.968],"0.79":[79.644,-40.715,-79.742],"0.83":[79.667,-42.065,-81.608],"0.88":[81.523,-45.002,-85.467],"0.92":[84.268,-47.894,-89.751],"0.96":[85.919,-49.287,-92.047]},"position":{"0.0":[-6.501,-34.999,-11.898],"0.04":[-7.988,-31.251,-14.927],"0.08":[-8.866,-29.079,-16.6],"0.12":[-9.353,-27.91,-17.432],"0.17":[-9.705,-27.109,-17.954],"0.21":[-10.051,-26.305,-18.447],"0.25":[-10.417,-25.406,-18.88],"0.29":[-10.821,-24.449,-18.964],"0.33":[-11.251,-23.827,-18.928],"0.38":[-11.659,-23.615,-18.877],"0.42":[-12.029,-23.437,-18.847],"0.46":[-12.354,-23.193,-18.718],"0.5":[-12.614,-23.638,-18.76],"0.54":[-12.741,-24.538,-18.827],"0.58":[-12.615,-25.276,-18.802],"0.62":[-12.388,-25.65,-18.82],"0.67":[-12.293,-25.774,-18.851],"0.71":[-12.193,-25.902,-18.879],"0.75":[-12.091,-26.021,-18.91],"0.79":[-11.997,-26.13,-18.942],"0.83":[-11.929,-26.196,-18.973],"0.88":[-11.893,-26.222,-19.011],"0.92":[-11.904,-26.199,-19.055],"0.96":[-11.97,-26.111,-19.105]}},"skeleton":{"rotation":{"0.0":[10.011,-19.235,162.768],"0.04":[9.991,-19.215,162.742],"0.08":[10.028,-19.162,162.805],"0.12":[10.046,-19.123,162.837],"0.17":[10.05,-19.134,162.825],"0.21":[10.039,-19.131,162.88],"0.25":[10.078,-19.118,162.899],"0.29":[10.119,-19.179,162.835],"0.33":[10.125,-19.142,162.839],"0.38":[13.294,-18.14,165.112],"0.42":[16.796,-19.838,177.474],"0.46":[16.184,-24.492,193.477],"0.5":[17.985,-30.484,202.742],"0.54":[17.083,-39.709,208.695],"0.58":[31.814,-29.441,186.797],"0.62":[36.345,-11.699,169.529],"0.67":[24.119,1.752,161.56],"0.71":[18.374,-6.253,163.094],"0.75":[16.314,-11.743,162.861],"0.79":[14.605,-13.998,162.486],"0.83":[12.937,-15.965,162.572],"0.88":[11.547,-17.595,162.678],"0.92":[10.543,-18.726,162.784],"0.96":[10.123,-19.172,162.828]},"position":{"0.0":{"post":[5.2,15.8,-3.15],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[135.65,-51.071,83.072],"0.04":[135.637,-51.068,83.084],"0.17":[135.637,-51.068,83.084],"0.21":[135.646,-51.07,83.076],"0.25":[135.642,-51.069,83.08],"0.29":[135.637,-51.068,83.084],"0.33":[135.659,-51.066,83.065],"0.38":[135.646,-51.068,83.077],"0.42":[135.65,-51.071,83.072],"0.46":[135.637,-51.068,83.084],"0.5":[135.637,-51.068,83.084],"0.54":[135.646,-51.07,83.076],"0.58":[133.525,-51.089,84.964],"0.62":[125.861,-50.269,91.968],"0.67":[116.196,-46.228,101.345],"0.71":[110.499,-38.781,108.047],"0.75":[110.69,-28.77,110.393],"0.79":[116.108,-16.343,108.65],"0.83":[124.435,0.919,103.239],"0.88":[129.387,20.155,98.283],"0.92":[127.103,37.004,89.782],"0.96":[119.824,45.507,78.923]},"position":{"0.0":[19.683,-36.81,-20.638],"0.54":[19.683,-36.81,-20.638],"0.58":[19.608,-36.612,-20.829],"0.62":[19.292,-35.841,-21.57],"0.67":[18.748,-34.561,-22.756],"0.71":[18.083,-33.086,-24.012],"0.75":[17.376,-31.661,-25.061],"0.79":[16.704,-30.518,-25.636],"0.83":[16.15,-29.607,-25.598],"0.88":[15.739,-28.872,-25.427],"0.92":[15.517,-28.538,-25.417],"0.96":[15.448,-28.463,-25.444]}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_deploy1"}}},"inspect":{"loop":true,"animation_length":6.08,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[86.758,-48.305,-92.712],"0.04":[89.271,-46.338,-95.092],"0.08":[93.584,-44.179,-99.838],"0.12":[99.984,-42.353,-107.755],"0.17":[108.062,-40.201,-118.271],"0.21":[115.993,-36.632,-128.885],"0.25":[123.092,-31.611,-138.918],"0.29":[128.981,-25.238,-147.977],"0.33":[133.531,-17.734,-156.052],"0.38":[136.708,-9.488,-163.133],"0.42":[138.634,-0.778,-169.475],"0.46":[139.4,8.003,-175.291],"0.5":[139.049,16.542,-180.849],"0.54":[137.658,24.59,-186.412],"0.58":[135.242,31.897,-192.156],"0.62":[131.85,38.24,-198.192],"0.67":[127.874,43.245,-204.257],"0.71":[123.583,46.986,-210.169],"0.75":[119.635,49.443,-215.372],"0.79":[116.294,50.771,-219.84],"0.83":[113.443,51.265,-223.866],"0.88":[111.1,51.318,-227.284],"0.92":[109.351,51.146,-229.777],"0.96":[108.392,50.997,-231.003],"1.0":[108.527,50.983,-230.647],"1.04":[109.273,51.053,-229.404],"1.08":[110.391,51.146,-227.629],"1.12":[111.572,51.24,-225.765],"1.17":[112.472,51.295,-224.29],"1.21":[113.095,51.349,-223.253],"1.25":[113.584,51.401,-222.495],"1.29":[113.906,51.451,-222.04],"1.33":[114.066,51.503,-221.897],"1.38":[114.088,51.555,-221.98],"1.42":[114.011,51.604,-222.258],"1.46":[113.818,51.652,-222.728],"1.5":[113.57,51.719,-223.344],"1.54":[113.232,51.771,-224.113],"1.58":[112.842,51.819,-224.957],"1.62":[112.403,51.879,-225.894],"1.67":[111.95,51.915,-226.843],"1.71":[111.486,51.949,-227.807],"1.75":[111.028,51.987,-228.769],"1.79":[110.607,52.015,-229.671],"1.83":[110.199,52.043,-230.503],"1.88":[109.852,52.058,-231.213],"1.92":[109.555,52.066,-231.815],"1.96":[109.345,52.07,-232.259],"2.0":[109.266,52.074,-232.449],"2.04":[108.832,51.463,-232.618],"2.08":[106.847,48.421,-233.053],"2.12":[103.304,42.911,-233.417],"2.17":[98.642,36.064,-233.172],"2.21":[93.416,29.225,-232.278],"2.25":[88.085,23.302,-230.95],"2.29":[83.293,18.956,-229.556],"2.33":[80.215,16.914,-228.716],"2.38":[79.278,17.666,-228.534],"2.42":[79.867,22.416,-228.268],"2.46":[81.522,30.024,-227.143],"2.5":[84.52,38.118,-224.618],"2.54":[88.651,44.278,-221.282],"2.58":[92.761,47.863,-218.739],"2.62":[95.726,50.492,-217.581],"2.67":[97.451,52.293,-217.061],"2.71":[98.728,53.125,-216.21],"2.75":[100.016,53.512,-215.042],"2.79":[101.381,53.767,-213.765],"2.83":[102.731,53.918,-212.489],"2.88":[104.022,53.982,-211.291],"2.92":[105.207,53.978,-210.206],"2.96":[106.221,53.926,-209.302],"3.0":[106.945,53.843,-208.763],"3.04":[107.446,53.767,-208.449],"3.08":[107.783,53.678,-208.3],"3.12":[108.032,53.591,-208.231],"3.17":[108.185,53.486,-208.217],"3.21":[108.265,53.399,-208.253],"3.25":[108.286,53.301,-208.336],"3.29":[108.266,53.194,-208.425],"3.33":[108.187,53.113,-208.58],"3.38":[108.107,53.032,-208.702],"3.42":[108.004,52.943,-208.827],"3.46":[107.915,52.865,-208.95],"3.5":[107.815,52.821,-209.046],"3.54":[107.757,52.755,-209.111],"3.58":[107.708,52.722,-209.153],"3.62":[107.71,52.706,-209.158],"3.67":[107.706,52.687,-209.122],"3.71":[107.656,52.674,-209.13],"3.75":[107.544,52.638,-209.186],"3.79":[107.397,52.611,-209.25],"3.83":[107.19,52.548,-209.337],"3.88":[106.964,52.502,-209.455],"3.92":[106.694,52.443,-209.593],"3.96":[106.39,52.382,-209.766],"4.0":[106.104,52.308,-209.919],"4.04":[105.763,52.243,-210.114],"4.08":[105.432,52.163,-210.304],"4.12":[105.099,52.08,-210.506],"4.17":[104.76,52.006,-210.703],"4.21":[104.46,51.927,-210.876],"4.25":[104.149,51.849,-211.068],"4.29":[103.882,51.77,-211.25],"4.33":[103.647,51.694,-211.388],"4.38":[103.426,51.629,-211.537],"4.42":[103.248,51.549,-211.654],"4.46":[103.121,51.494,-211.766],"4.5":[103.049,51.432,-211.842],"4.54":[103.046,51.372,-211.861],"4.58":[103.061,50.609,-213.607],"4.62":[103.426,48.334,-219.167],"4.67":[104.559,46.514,-224.961],"4.71":[105.66,46.315,-227.583],"4.75":[106.943,46.909,-228.131],"4.79":[108.531,47.707,-227.952],"4.83":[109.989,48.568,-227.48],"4.88":[110.99,49.367,-227.205],"4.92":[111.346,50.054,-227.396],"4.96":[111.33,50.708,-227.888],"5.0":[111.1,51.322,-228.559],"5.04":[110.755,51.878,-229.283],"5.08":[110.355,52.328,-229.994],"5.12":[109.968,52.669,-230.616],"5.17":[109.749,52.846,-230.959],"5.21":[109.703,52.869,-231],"5.25":[109.766,52.736,-230.746],"5.29":[109.89,52.507,-230.281],"5.33":[110.141,52.186,-229.535],"5.38":[110.437,51.889,-228.657],"5.42":[110.827,51.61,-227.637],"5.46":[111.291,51.386,-226.531],"5.5":[111.916,51.293,-225.288],"5.54":[112.793,51.196,-223.9],"5.58":[114.339,50.669,-222.114],"5.62":[116.562,49.625,-220.002],"5.67":[123.214,45.633,-212.742],"5.71":[132.493,36.328,-201.161],"5.75":[139.402,21.931,-189.707],"5.79":[142.095,4.13,-179.031],"5.83":[139.925,-14.621,-167.413],"5.88":[132.57,-30.924,-152.847],"5.92":[120.098,-42.206,-134.128],"5.96":[105.394,-46.166,-114.037],"6.0":[96.088,-46.405,-101.482],"6.04":[89.915,-47.949,-95.064],"6.08":[86.369,-49.125,-92.351]},"position":{"0.0":[-12.007,-26.127,-19.093],"0.04":[-12.081,-26.141,-19.053],"0.08":[-12.16,-26.137,-18.989],"0.12":[-12.216,-26.084,-18.901],"0.17":[-12.237,-25.967,-18.775],"0.21":[-12.254,-25.804,-18.615],"0.25":[-12.272,-25.608,-18.433],"0.29":[-12.285,-25.384,-18.234],"0.33":[-12.302,-25.142,-18.023],"0.38":[-12.315,-24.904,-17.816],"0.42":[-12.326,-24.669,-17.613],"0.46":[-12.337,-24.449,-17.427],"0.5":[-12.35,-24.262,-17.272],"0.54":[-12.364,-24.114,-17.15],"0.58":[-12.383,-24.021,-17.067],"0.62":[-12.401,-23.981,-17.035],"0.67":[-12.441,-24.006,-17.049],"0.71":[-12.5,-24.067,-17.084],"0.75":[-12.571,-24.139,-17.132],"0.79":[-12.651,-24.23,-17.184],"0.83":[-12.718,-24.309,-17.224],"0.88":[-12.769,-24.38,-17.251],"0.92":[-12.792,-24.43,-17.257],"0.96":[-12.786,-24.444,-17.235],"1.0":[-12.764,-24.436,-17.199],"1.04":[-12.731,-24.424,-17.153],"1.08":[-12.698,-24.405,-17.111],"1.12":[-12.671,-24.393,-17.078],"1.17":[-12.659,-24.397,-17.068],"1.21":[-12.656,-24.406,-17.067],"1.25":[-12.664,-24.419,-17.069],"1.29":[-12.673,-24.434,-17.076],"1.33":[-12.689,-24.452,-17.091],"1.38":[-12.707,-24.471,-17.105],"1.42":[-12.726,-24.494,-17.12],"1.46":[-12.748,-24.517,-17.139],"1.5":[-12.764,-24.537,-17.158],"1.54":[-12.782,-24.553,-17.179],"1.58":[-12.799,-24.575,-17.199],"1.62":[-12.811,-24.585,-17.219],"1.67":[-12.824,-24.601,-17.234],"1.71":[-12.829,-24.614,-17.249],"1.75":[-12.832,-24.615,-17.261],"1.79":[-12.834,-24.615,-17.268],"1.83":[-12.824,-24.613,-17.272],"1.88":[-12.813,-24.609,-17.274],"1.92":[-12.802,-24.601,-17.278],"1.96":[-12.792,-24.597,-17.286],"2.0":[-12.781,-24.596,-17.29],"2.04":[-12.768,-24.603,-17.308],"2.08":[-12.75,-24.654,-17.377],"2.12":[-12.728,-24.74,-17.493],"2.17":[-12.704,-24.864,-17.646],"2.21":[-12.679,-24.994,-17.813],"2.25":[-12.649,-25.121,-17.974],"2.29":[-12.616,-25.226,-18.114],"2.33":[-12.582,-25.296,-18.208],"2.38":[-12.549,-25.27,-18.249],"2.42":[-12.52,-25.046,-18.25],"2.46":[-12.499,-24.664,-18.231],"2.5":[-12.475,-24.223,-18.204],"2.54":[-12.455,-23.853,-18.18],"2.58":[-12.431,-23.62,-18.17],"2.62":[-12.404,-23.5,-18.179],"2.67":[-12.377,-23.457,-18.186],"2.71":[-12.352,-23.449,-18.187],"2.75":[-12.328,-23.455,-18.181],"2.79":[-12.309,-23.469,-18.182],"2.83":[-12.29,-23.487,-18.175],"2.88":[-12.279,-23.503,-18.173],"2.92":[-12.271,-23.51,-18.175],"2.96":[-12.263,-23.511,-18.167],"3.0":[-12.262,-23.522,-18.169],"3.04":[-12.256,-23.525,-18.17],"3.08":[-12.251,-23.526,-18.171],"3.12":[-12.251,-23.536,-18.173],"3.17":[-12.249,-23.538,-18.172],"3.21":[-12.244,-23.539,-18.166],"3.25":[-12.244,-23.541,-18.168],"3.29":[-12.238,-23.543,-18.169],"3.33":[-12.239,-23.546,-18.17],"3.38":[-12.239,-23.554,-18.171],"3.42":[-12.234,-23.558,-18.168],"3.46":[-12.234,-23.56,-18.167],"3.5":[-12.233,-23.565,-18.169],"3.54":[-12.234,-23.575,-18.172],"3.58":[-12.231,-23.58,-18.17],"3.62":[-12.232,-23.584,-18.171],"3.67":[-12.232,-23.598,-18.174],"3.71":[-12.233,-23.61,-18.173],"3.75":[-12.237,-23.622,-18.174],"3.79":[-12.239,-23.641,-18.171],"3.83":[-12.242,-23.655,-18.172],"3.88":[-12.247,-23.675,-18.176],"3.92":[-12.25,-23.69,-18.174],"3.96":[-12.254,-23.71,-18.173],"4.0":[-12.258,-23.721,-18.178],"4.04":[-12.264,-23.737,-18.176],"4.08":[-12.268,-23.752,-18.178],"4.12":[-12.272,-23.761,-18.176],"4.17":[-12.273,-23.764,-18.178],"4.21":[-12.274,-23.767,-18.18],"4.25":[-12.274,-23.766,-18.18],"4.29":[-12.272,-23.764,-18.178],"4.33":[-12.266,-23.759,-18.173],"4.38":[-12.262,-23.753,-18.172],"4.42":[-12.253,-23.739,-18.17],"4.46":[-12.249,-23.727,-18.171],"4.5":[-12.244,-23.716,-18.172],"4.54":[-12.235,-23.697,-18.169],"4.58":[-12.227,-23.675,-18.177],"4.62":[-12.214,-23.641,-18.195],"4.67":[-12.203,-23.608,-18.212],"4.71":[-12.21,-23.613,-18.187],"4.75":[-12.27,-23.717,-18.071],"4.79":[-12.369,-23.904,-17.874],"4.83":[-12.475,-24.106,-17.661],"4.88":[-12.565,-24.265,-17.489],"4.92":[-12.616,-24.354,-17.379],"4.96":[-12.652,-24.41,-17.301],"5.0":[-12.68,-24.456,-17.233],"5.04":[-12.704,-24.49,-17.181],"5.08":[-12.721,-24.508,-17.14],"5.12":[-12.733,-24.513,-17.106],"5.17":[-12.737,-24.514,-17.086],"5.21":[-12.739,-24.503,-17.074],"5.25":[-12.733,-24.491,-17.067],"5.29":[-12.727,-24.477,-17.065],"5.33":[-12.714,-24.453,-17.068],"5.38":[-12.701,-24.431,-17.069],"5.42":[-12.69,-24.412,-17.071],"5.46":[-12.678,-24.401,-17.074],"5.5":[-12.667,-24.396,-17.07],"5.54":[-12.654,-24.398,-17.07],"5.58":[-12.627,-24.407,-17.083],"5.62":[-12.595,-24.431,-17.101],"5.67":[-12.549,-24.57,-17.21],"5.71":[-12.481,-24.864,-17.449],"5.75":[-12.4,-25.257,-17.768],"5.79":[-12.314,-25.704,-18.129],"5.83":[-12.223,-26.118,-18.48],"5.88":[-12.141,-26.451,-18.767],"5.92":[-12.076,-26.646,-18.944],"5.96":[-12.029,-26.64,-19.024],"6.0":[-11.995,-26.459,-19.066],"6.04":[-11.977,-26.253,-19.093],"6.08":[-11.97,-26.128,-19.104]}},"skeleton":{"rotation":{"0.0":[9.378,-19.738,162.957],"0.04":[7.503,-21.153,163.36],"0.08":[4.771,-23.243,164.178],"0.12":[1.38,-25.762,165.543],"0.17":[-2.427,-28.47,167.538],"0.21":[-6.299,-31.116,170.048],"0.25":[-9.902,-33.485,172.752],"0.29":[-12.809,-35.731,176.578],"0.33":[-14.736,-38.141,182.478],"0.38":[-16.419,-40.372,188.506],"0.42":[-18.919,-42.424,193.997],"0.46":[-22.113,-44.299,199.206],"0.5":[-22.937,-46.045,202.225],"0.54":[-21.65,-48.155,203.713],"0.58":[-19.603,-50.699,204.732],"0.62":[-17.139,-53.362,205.325],"0.67":[-14.825,-55.845,205.579],"0.71":[-12.968,-57.677,205.622],"0.75":[-12.041,-58.562,205.614],"0.79":[-11.961,-58.673,205.615],"0.83":[-11.906,-58.68,205.576],"0.88":[-11.922,-58.676,205.597],"0.92":[-11.934,-58.669,205.593],"0.96":[-11.949,-58.674,205.597],"1.0":[-11.931,-58.678,205.589],"1.04":[-11.943,-58.672,205.607],"1.08":[-11.929,-58.664,205.598],"1.12":[-11.923,-58.659,205.588],"1.17":[-11.91,-58.673,205.582],"1.21":[-11.919,-58.664,205.584],"1.25":[-11.909,-58.677,205.588],"1.29":[-11.903,-58.672,205.579],"1.33":[-11.927,-58.678,205.601],"1.38":[-11.927,-58.67,205.596],"1.42":[-11.922,-58.671,205.591],"1.46":[-11.926,-58.662,205.59],"1.5":[-11.911,-58.672,205.589],"1.54":[-11.92,-58.678,205.587],"1.58":[-11.921,-58.673,205.586],"1.62":[-11.947,-58.669,205.611],"1.67":[-11.919,-58.67,205.586],"1.71":[-11.929,-58.663,205.59],"1.75":[-11.933,-58.666,205.598],"1.79":[-11.937,-58.684,205.606],"1.83":[-11.963,-58.664,205.63],"1.88":[-11.938,-58.667,205.609],"1.92":[-11.934,-58.661,205.603],"1.96":[-11.959,-58.665,205.608],"2.0":[-11.923,-58.68,205.598],"2.04":[-11.924,-58.675,205.59],"2.08":[-11.924,-58.678,205.596],"2.12":[-11.946,-58.67,205.616],"2.17":[-10.171,-60.16,207.403],"2.21":[-5.497,-63.651,210.88],"2.25":[2.375,-68.292,213.506],"2.29":[13.734,-72.792,213.09],"2.33":[23.296,-74.361,213.314],"2.38":[21.984,-69.871,225.569],"2.42":[15.997,-59.917,244.138],"2.46":[11.048,-47.611,261.054],"2.5":[7.61,-36.446,273.15],"2.54":[5.883,-29.792,279.278],"2.58":[5.532,-28.411,280.443],"2.62":[5.536,-28.399,280.444],"2.67":[5.532,-28.399,280.434],"2.71":[5.53,-28.399,280.446],"2.75":[5.521,-28.397,280.461],"2.79":[5.528,-28.409,280.453],"2.83":[5.538,-28.408,280.448],"2.88":[5.53,-28.401,280.443],"2.92":[5.521,-28.396,280.453],"2.96":[5.526,-28.418,280.472],"3.0":[5.509,-28.379,280.454],"3.04":[5.524,-28.396,280.458],"3.08":[5.528,-28.399,280.444],"3.12":[5.522,-28.403,280.445],"3.17":[5.529,-28.397,280.442],"3.21":[5.528,-28.401,280.443],"3.25":[5.521,-28.39,280.444],"3.29":[5.525,-28.413,280.435],"3.33":[5.515,-28.388,280.45],"3.38":[5.524,-28.399,280.446],"3.42":[5.535,-28.403,280.45],"3.46":[5.515,-28.41,280.435],"3.5":[5.534,-28.412,280.458],"3.54":[5.527,-28.421,280.442],"3.58":[5.533,-28.409,280.439],"3.62":[5.52,-28.398,280.443],"3.67":[5.537,-28.402,280.434],"3.71":[5.533,-28.396,280.44],"3.75":[5.524,-28.385,280.444],"3.79":[5.528,-28.39,280.455],"3.83":[5.536,-28.407,280.435],"3.88":[5.528,-28.412,280.45],"3.92":[5.526,-28.413,280.454],"3.96":[5.536,-28.404,280.446],"4.0":[5.521,-28.413,280.464],"4.04":[5.53,-28.408,280.459],"4.08":[5.536,-28.404,280.448],"4.12":[5.52,-28.406,280.434],"4.17":[5.533,-28.399,280.442],"4.21":[5.539,-28.402,280.446],"4.25":[5.542,-28.399,280.439],"4.29":[5.514,-28.379,280.449],"4.33":[5.531,-28.405,280.448],"4.38":[5.531,-28.398,280.445],"4.42":[5.543,-28.408,280.435],"4.46":[5.536,-28.394,280.444],"4.5":[5.533,-28.396,280.439],"4.54":[5.666,-28.477,279.759],"4.58":[6.264,-28.795,276.301],"4.62":[7.169,-29.514,269.595],"4.67":[7.699,-30.751,260.243],"4.71":[7.357,-32.785,249.565],"4.75":[5.97,-35.782,238.497],"4.79":[3.567,-39.884,227.942],"4.83":[0.055,-44.851,219.108],"4.88":[-3.92,-50.028,212.448],"4.92":[-7.868,-54.633,208.127],"4.96":[-10.997,-57.808,206.015],"5.0":[-11.931,-58.663,205.597],"5.04":[-11.926,-58.668,205.604],"5.08":[-11.925,-58.672,205.602],"5.12":[-11.942,-58.666,205.601],"5.17":[-11.947,-58.681,205.608],"5.21":[-11.954,-58.678,205.618],"5.25":[-11.934,-58.672,205.603],"5.29":[-11.95,-58.662,205.61],"5.33":[-11.924,-58.678,205.577],"5.38":[-11.923,-58.671,205.593],"5.42":[-11.938,-58.669,205.602],"5.46":[-11.948,-58.674,205.607],"5.5":[-11.941,-58.666,205.604],"5.54":[-11.914,-58.67,205.587],"5.58":[-11.931,-58.673,205.606],"5.62":[-11.953,-58.677,205.632],"5.67":[-10.684,-57.858,203.449],"5.71":[-8.508,-55.538,198.972],"5.75":[-7.257,-51.631,194.141],"5.79":[-7.962,-46.745,188.669],"5.83":[-9.226,-41.955,180.778],"5.88":[-9.727,-36.266,174.577],"5.92":[-6.985,-29.937,170.634],"5.96":[0.546,-24.431,166.243],"6.0":[7.687,-20.766,163.615],"6.04":[10.022,-19.395,162.962],"6.08":[10.115,-19.182,162.843]},"position":{"0.0":{"post":[5.2,15.8,-3.15],"lerp_mode":"catmullrom"},"0.68":{"post":[4.4,16.3,-2.15],"lerp_mode":"catmullrom"},"5.6":{"post":[4.4,16.3,-2.15],"lerp_mode":"catmullrom"},"5.99":{"post":[5.2,15.8,-3.15],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[127.248,39.145,89.022],"0.04":[135.133,25.118,102.102],"0.08":[137.012,12.594,107.583],"0.12":[135.994,5.801,105.415],"0.17":[134.722,-0.852,101.844],"0.21":[133.795,-8.234,98.301],"0.25":[133.25,-15.98,94.971],"0.29":[133.125,-23.836,91.945],"0.33":[133.335,-31.325,89.366],"0.38":[133.826,-38.112,87.154],"0.42":[134.467,-43.865,85.355],"0.46":[135.136,-48.22,83.97],"0.5":[135.558,-50.511,83.233],"0.54":[135.666,-51.072,83.069],"0.58":[135.671,-51.067,83.063],"0.62":[135.661,-51.078,83.075],"0.67":[135.669,-51.069,83.066],"0.71":[135.663,-51.08,83.08],"0.75":[135.669,-51.071,83.068],"0.79":[135.661,-51.078,83.075],"0.83":[135.664,-51.075,83.072],"0.88":[135.666,-51.076,83.066],"0.92":[135.652,-51.073,83.08],"0.96":[135.661,-51.085,83.069],"1.0":[135.669,-51.069,83.066],"1.04":[135.661,-51.078,83.075],"1.08":[135.669,-51.069,83.066],"1.12":[135.662,-51.078,83.075],"1.17":[135.669,-51.069,83.066],"1.21":[135.661,-51.078,83.075],"1.25":[135.664,-51.081,83.082],"1.29":[135.661,-51.078,83.075],"1.38":[135.661,-51.078,83.075],"1.42":[135.669,-51.069,83.066],"1.46":[135.661,-51.078,83.075],"1.5":[135.664,-51.075,83.072],"1.54":[135.666,-51.072,83.069],"1.58":[135.661,-51.078,83.075],"1.75":[135.661,-51.078,83.075],"1.79":[135.661,-51.085,83.069],"1.83":[135.66,-51.084,83.073],"1.88":[135.659,-51.083,83.078],"1.92":[135.65,-51.083,83.081],"1.96":[135.661,-51.085,83.069],"2.0":[135.664,-51.075,83.072],"2.04":[135.666,-51.072,83.069],"2.08":[135.662,-51.078,83.075],"2.12":[135.655,-51.075,83.078],"2.17":[135.662,-51.075,83.077],"2.21":[135.661,-51.078,83.075],"2.25":[135.669,-51.069,83.066],"2.29":[135.671,-51.067,83.063],"2.33":[135.661,-51.078,83.075],"2.5":[135.661,-51.078,83.075],"2.54":[135.656,-51.078,83.083],"2.58":[135.659,-51.078,83.079],"2.62":[135.662,-51.078,83.075],"2.67":[135.661,-51.078,83.075],"2.75":[135.661,-51.078,83.075],"2.79":[135.634,-51.07,83.096],"2.83":[135.661,-51.078,83.075],"2.88":[135.666,-51.072,83.069],"2.92":[135.664,-51.075,83.072],"2.96":[135.634,-51.07,83.096],"3.0":[135.661,-51.078,83.075],"3.04":[135.661,-51.081,83.072],"3.08":[135.661,-51.08,83.073],"3.12":[135.661,-51.085,83.069],"3.17":[135.661,-51.08,83.073],"3.21":[135.661,-51.081,83.072],"3.25":[135.661,-51.078,83.075],"3.5":[135.661,-51.078,83.075],"3.54":[135.666,-51.072,83.069],"3.58":[135.664,-51.075,83.072],"3.62":[135.661,-51.085,83.069],"3.67":[135.669,-51.071,83.064],"3.71":[135.661,-51.081,83.072],"3.75":[135.661,-51.083,83.07],"3.79":[135.661,-51.078,83.075],"3.83":[135.661,-51.083,83.07],"3.88":[135.661,-51.078,83.075],"3.92":[135.661,-51.078,83.075],"3.96":[135.649,-51.069,83.084],"4.0":[135.661,-51.078,83.075],"4.08":[135.661,-51.078,83.075],"4.12":[135.671,-51.067,83.063],"4.17":[135.661,-51.078,83.075],"4.21":[135.666,-51.072,83.069],"4.25":[135.664,-51.075,83.072],"4.29":[135.662,-51.078,83.075],"4.33":[135.661,-51.078,83.075],"4.38":[135.661,-51.078,83.075],"4.42":[135.669,-51.069,83.066],"4.46":[135.662,-51.078,83.075],"4.5":[135.669,-51.069,83.066],"4.54":[135.661,-51.078,83.075],"4.62":[135.661,-51.078,83.075],"4.67":[135.671,-51.067,83.063],"4.71":[135.666,-51.072,83.069],"4.75":[135.661,-51.078,83.075],"5.21":[135.661,-51.078,83.075],"5.25":[135.669,-51.069,83.066],"5.29":[135.661,-51.078,83.075],"5.33":[135.66,-51.075,83.077],"5.38":[135.659,-51.073,83.079],"5.42":[135.662,-51.078,83.075],"5.46":[135.661,-51.078,83.075],"5.5":[135.659,-51.075,83.074],"5.54":[134.498,-50.97,84.146],"5.58":[129.112,-50.079,89.267],"5.62":[120.845,-47.209,97.511],"5.67":[113.928,-41.542,105.321],"5.71":[110.856,-34.026,110.223],"5.75":[111.832,-25.592,111.467],"5.79":[116.115,-16.364,108.628],"5.83":[122.287,-4.086,102.6],"5.88":[126.86,10.958,97.326],"5.92":[128.552,26.125,93.045],"5.96":[127.442,38.041,89.148],"6.0":[124.422,43.717,84.997],"6.04":[121.455,45.487,81.129],"6.08":[119.976,45.551,79.141]},"position":{"0.0":[15.52,-28.599,-25.367],"0.04":[15.703,-28.963,-25.16],"0.08":[15.981,-29.506,-24.846],"0.12":[16.329,-30.2,-24.44],"0.17":[16.745,-31.019,-23.973],"0.21":[17.194,-31.903,-23.466],"0.25":[17.656,-32.819,-22.937],"0.29":[18.121,-33.723,-22.415],"0.33":[18.554,-34.582,-21.921],"0.38":[18.944,-35.352,-21.48],"0.42":[19.27,-35.997,-21.105],"0.46":[19.524,-36.486,-20.818],"0.5":[19.652,-36.743,-20.673],"0.54":[19.682,-36.809,-20.637],"1.88":[19.682,-36.809,-20.637],"1.92":[19.683,-36.809,-20.638],"1.96":[19.682,-36.809,-20.637],"2.75":[19.682,-36.809,-20.637],"2.79":[19.683,-36.809,-20.638],"2.83":[19.682,-36.809,-20.637],"2.92":[19.682,-36.809,-20.637],"2.96":[19.683,-36.809,-20.638],"3.0":[19.682,-36.809,-20.637],"5.46":[19.682,-36.809,-20.637],"5.5":[19.682,-36.809,-20.638],"5.54":[19.644,-36.711,-20.737],"5.58":[19.452,-36.218,-21.228],"5.62":[19.087,-35.312,-22.113],"5.67":[18.574,-34.107,-23.211],"5.71":[17.978,-32.814,-24.281],"5.75":[17.343,-31.571,-25.146],"5.79":[16.704,-30.519,-25.636],"5.83":[16.253,-29.687,-25.682],"5.88":[16.014,-28.981,-25.564],"5.92":[15.905,-28.463,-25.424],"5.96":[15.832,-28.213,-25.39],"6.0":[15.705,-28.242,-25.437],"6.04":[15.551,-28.361,-25.455],"6.08":[15.461,-28.449,-25.447]}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}}},"inspect_1":{"loop":true,"animation_length":2.17,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[87.935,-43.908,-93.309],"0.04":[91.43,-34.258,-96.024],"0.08":[94.341,-27.568,-99.915],"0.12":[96.838,-27.393,-105.198],"0.17":[100.364,-30.715,-111.597],"0.21":[105.714,-34.972,-119.385],"0.25":[113.144,-38.604,-128.74],"0.29":[121.925,-40.205,-139.099],"0.33":[129.572,-38.571,-148.454],"0.38":[133.715,-32.813,-155.714],"0.42":[132.269,-21.728,-161.438],"0.46":[124.613,-10.48,-165.938],"0.5":[107.838,-2.247,-168.994],"0.54":[88.066,3.74,-173.231],"0.58":[76.069,6.932,-177.825],"0.62":[75.014,14.879,-183.202],"0.67":[80.356,23.736,-185.175],"0.71":[97.643,25.587,-178.486],"0.75":[108.272,25.647,-173.923],"0.79":[113.462,25.33,-171.646],"0.83":[113.478,25.487,-171.126],"0.88":[106.884,26.197,-170.985],"0.92":[100.339,27.262,-170.881],"0.96":[106.109,26.955,-171.259],"1.0":[120.578,27.41,-171.329],"1.04":[124.6,28.077,-170.602],"1.08":[119.199,27.876,-169.472],"1.12":[112.436,28.109,-167.926],"1.17":[110.705,28.128,-167.509],"1.21":[115.141,26.598,-169.164],"1.25":[119.739,25.521,-170.899],"1.29":[114.896,25.438,-171.205],"1.33":[103.366,26.647,-170.957],"1.38":[103.1,28.334,-170.028],"1.42":[118.406,31.676,-165.103],"1.46":[134.753,34.775,-157.506],"1.5":[138.724,37.425,-156.075],"1.54":[139.992,40.596,-156.718],"1.58":[146.209,44.56,-154.007],"1.62":[157.233,48.533,-146.427],"1.67":[161.262,48.588,-143.291],"1.71":[156.918,39.509,-147.623],"1.75":[148.719,21.237,-150.575],"1.79":[136.542,0.485,-144.826],"1.83":[122.452,-13.213,-130.792],"1.88":[112.986,-20.591,-119.329],"1.92":[106.536,-26.574,-111.319],"1.96":[100.613,-32.105,-104.675],"2.0":[95.573,-37.33,-99.77],"2.04":[91.344,-42.022,-96.104],"2.08":[88.211,-45.894,-93.652],"2.12":[86.342,-48.553,-92.315],"2.17":[85.916,-49.291,-92.057]},"position":{"0.0":[-11.922,-26.382,-19.449],"0.04":[-11.835,-26.834,-20.084],"0.08":[-11.793,-27.044,-20.586],"0.12":[-11.88,-26.796,-20.769],"0.17":[-12.162,-26.214,-20.792],"0.21":[-12.565,-25.465,-20.735],"0.25":[-13.033,-24.623,-20.637],"0.29":[-13.515,-23.759,-20.527],"0.33":[-13.953,-22.967,-20.425],"0.38":[-14.281,-22.378,-20.362],"0.42":[-14.434,-22.116,-20.312],"0.46":[-14.275,-22.305,-20.495],"0.5":[-13.692,-23.019,-21.139],"0.54":[-12.952,-23.927,-21.958],"0.58":[-12.272,-24.765,-22.7],"0.62":[-11.96,-25.145,-23.035],"0.67":[-12.103,-24.749,-22.788],"0.71":[-12.282,-24.216,-22.431],"0.75":[-12.475,-23.677,-22.06],"0.79":[-12.644,-23.273,-21.775],"0.83":[-12.765,-23.193,-21.723],"0.88":[-12.818,-23.416,-21.917],"0.92":[-12.824,-23.634,-22.11],"0.96":[-12.803,-23.432,-22.076],"1.0":[-12.759,-22.939,-21.931],"1.04":[-12.753,-22.827,-21.894],"1.08":[-12.773,-23.103,-21.951],"1.12":[-12.798,-23.456,-22.018],"1.17":[-12.807,-23.535,-22.024],"1.21":[-12.748,-23.177,-21.867],"1.25":[-12.697,-22.823,-21.703],"1.29":[-12.706,-22.986,-21.813],"1.33":[-12.778,-23.468,-22.075],"1.38":[-12.848,-23.63,-22.055],"1.42":[-12.901,-23.398,-21.709],"1.46":[-13.064,-23.08,-21.173],"1.5":[-13.645,-22.794,-20.243],"1.54":[-14.04,-22.827,-19.571],"1.58":[-14.201,-23.064,-19.239],"1.62":[-14.337,-23.138,-19.397],"1.67":[-14.42,-23.378,-19.894],"1.71":[-14.472,-23.705,-20.465],"1.75":[-14.482,-23.996,-20.944],"1.79":[-14.467,-24.125,-21.163],"1.83":[-14.3,-24.239,-21.048],"1.88":[-13.952,-24.506,-20.765],"1.92":[-13.491,-24.873,-20.388],"1.96":[-12.984,-25.281,-19.962],"2.0":[-12.518,-25.662,-19.569],"2.04":[-12.165,-25.955,-19.27],"2.08":[-11.989,-26.097,-19.124],"2.12":[-11.971,-26.111,-19.105],"2.17":[-11.969,-26.11,-19.105]}},"skeleton":{"rotation":{"0.0":[9.88,-20.79,163.663],"0.04":[8.525,-24.393,165.69],"0.08":[5.089,-28.659,168.797],"0.12":[-3.859,-31.486,175.41],"0.17":[-17.172,-31.353,186.917],"0.21":[-26.283,-32.697,197.115],"0.25":[-29.207,-42.62,201.708],"0.29":[-29.626,-54.275,202.474],"0.33":[-30.185,-57.058,206.749],"0.38":[-28.434,-58.879,210.962],"0.42":[-26.428,-59.701,212.975],"0.46":[-25.667,-59.76,212.87],"0.5":[-26.273,-61.552,213.677],"0.54":[-41.238,-73.345,229.611],"0.58":[-93.089,-81.512,281.616],"0.62":[-98.415,-84.304,285.596],"0.67":[-11.531,-76.981,196.878],"0.71":[0.874,-51.42,184.408],"0.75":[3.371,-19.526,184.197],"0.79":[4.659,15.058,186.74],"0.83":[2.556,49.388,187.99],"0.88":[-46.151,85.23,141.205],"0.92":[9.983,133.739,195.686],"0.96":[7.78,198.372,186.264],"1.0":[71.903,262.257,117.106],"1.04":[-7.904,337.3,191.704],"1.08":[-10.509,405.877,180.969],"1.12":[16.667,476.652,203.721],"1.17":[7.533,544.427,188.206],"1.21":[26.22,612.337,163.811],"1.25":[-9.272,683.849,194.36],"1.29":[-8.679,752.073,184.095],"1.33":[32.132,823.631,220.086],"1.38":[7.361,889.481,190.082],"1.42":[11.381,951.071,179.732],"1.46":[-28.138,1005.829,215.97],"1.5":[-9.228,1042.738,194.458],"1.54":[-7.88,1059.643,191.511],"1.58":[-7.905,1059.639,191.515],"1.62":[-7.281,1061.645,188.464],"1.67":[-5.56,1066.057,182.084],"1.71":[-5.27,1066.595,181.39],"1.75":[-6.842,1062.59,187.109],"1.79":[-7.818,1059.617,191.518],"1.83":[-5.372,1065.321,185.577],"1.88":[-0.372,1075.326,176.665],"1.92":[6.058,1082.644,169.95],"1.96":[9.805,1078.601,165.975],"2.0":[8.947,1063.701,163.616],"2.04":[10.284,1060.766,162.776],"2.08":[10.703,1060.5,162.612],"2.12":[10.012,1060.899,162.875],"2.17":[10.113,1060.836,162.828]},"position":{"0.0":{"post":[5.2,15.8,-3.15],"lerp_mode":"catmullrom"},"0.43":{"post":[3.85888,15.83699,-2.31129],"lerp_mode":"catmullrom"},"0.96":{"post":[3.79271,15.86569,-2.28807],"lerp_mode":"catmullrom"},"1.62":{"post":[3.79271,15.86569,-2.28807],"lerp_mode":"catmullrom"},"1.98":{"post":[5.2,15.8,-3.15],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[127.248,39.145,89.022],"0.04":[135.133,25.118,102.102],"0.08":[137.012,12.594,107.583],"0.12":[135.994,5.801,105.415],"0.17":[134.723,-0.852,101.845],"0.21":[133.796,-8.233,98.303],"0.25":[133.25,-15.98,94.971],"0.29":[133.125,-23.836,91.945],"0.33":[133.334,-31.325,89.367],"0.38":[133.824,-38.107,87.158],"0.42":[134.475,-43.859,85.352],"0.46":[135.136,-48.216,83.972],"0.5":[135.558,-50.511,83.233],"0.54":[135.661,-51.078,83.075],"0.58":[135.661,-51.078,83.075],"0.62":[135.658,-51.08,83.087],"0.67":[135.669,-51.069,83.066],"0.71":[135.666,-51.072,83.069],"0.75":[135.671,-51.067,83.063],"0.79":[135.664,-51.083,83.085],"0.83":[135.654,-51.078,83.086],"0.88":[135.661,-51.078,83.075],"0.92":[135.669,-51.069,83.066],"0.96":[135.671,-51.067,83.063],"1.0":[135.669,-51.069,83.066],"1.04":[135.666,-51.072,83.069],"1.08":[135.664,-51.075,83.072],"1.12":[135.661,-51.078,83.075],"1.17":[135.679,-50.986,83.051],"1.21":[135.851,-50.206,82.859],"1.25":[136.196,-48.481,82.482],"1.29":[136.634,-45.877,81.983],"1.33":[137.113,-42.342,81.423],"1.38":[137.468,-38.146,80.925],"1.42":[137.694,-33.368,80.508],"1.46":[137.734,-28.104,80.2],"1.5":[137.578,-22.414,79.979],"1.54":[137.233,-16.436,79.885],"1.58":[136.684,-10.307,79.866],"1.62":[135.947,-4.066,79.922],"1.67":[135.002,2.081,80.003],"1.71":[133.852,8.136,80.101],"1.75":[132.555,13.969,80.193],"1.79":[131.131,19.479,80.23],"1.83":[129.567,24.617,80.238],"1.88":[127.919,29.29,80.182],"1.92":[126.237,33.49,80.043],"1.96":[124.588,37.135,79.856],"2.0":[123.039,40.125,79.604],"2.04":[121.718,42.492,79.354],"2.08":[120.65,44.21,79.113],"2.12":[119.994,45.254,78.957],"2.17":[119.809,45.51,78.91]},"position":{"0.0":[15.52,-28.599,-25.367],"0.04":[15.703,-28.963,-25.16],"0.08":[15.981,-29.506,-24.846],"0.12":[16.329,-30.2,-24.44],"0.17":[16.745,-31.019,-23.973],"0.21":[17.194,-31.903,-23.466],"0.25":[17.656,-32.819,-22.937],"0.29":[18.121,-33.723,-22.415],"0.33":[18.554,-34.582,-21.921],"0.38":[18.944,-35.352,-21.48],"0.42":[19.27,-35.997,-21.105],"0.46":[19.524,-36.486,-20.818],"0.5":[19.652,-36.743,-20.673],"0.54":[19.682,-36.809,-20.637],"1.12":[19.682,-36.809,-20.637],"1.17":[19.679,-36.801,-20.642],"1.21":[19.649,-36.739,-20.676],"1.25":[19.582,-36.601,-20.755],"1.29":[19.482,-36.397,-20.872],"1.33":[19.33,-36.121,-21.029],"1.38":[19.171,-35.796,-21.218],"1.42":[18.97,-35.419,-21.438],"1.46":[18.772,-35.005,-21.676],"1.5":[18.528,-34.549,-21.942],"1.54":[18.284,-34.063,-22.217],"1.58":[18.033,-33.563,-22.504],"1.62":[17.764,-33.049,-22.8],"1.67":[17.504,-32.532,-23.099],"1.71":[17.25,-32.011,-23.401],"1.75":[16.989,-31.498,-23.698],"1.79":[16.743,-31.006,-23.981],"1.83":[16.498,-30.533,-24.253],"1.88":[16.278,-30.093,-24.509],"1.92":[16.069,-29.692,-24.738],"1.96":[15.887,-29.33,-24.946],"2.0":[15.734,-29.024,-25.125],"2.04":[15.608,-28.781,-25.261],"2.08":[15.518,-28.601,-25.367],"2.12":[15.459,-28.486,-25.429],"2.17":[15.449,-28.461,-25.445]}},"root":{"position":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.58":{"post":[0,0,3],"lerp_mode":"catmullrom"},"0.85":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"righthand":{"rotation":{"0.0":[0,0,0],"0.43":[0,8.75,0],"1.62":[0,8.75,0],"1.98":[0,0,0]},"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}}},"melee_1":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[88.114,0.802,133.206],"0.04":[66.622,12.371,134.328],"0.08":[51.448,23.609,130.508],"0.12":[40.283,31.412,122.389],"0.17":[30.288,17.219,126.363],"0.21":[27.006,13.883,154.389],"0.25":[34.288,22.139,171.736],"0.29":[52.204,33.061,185.222],"0.33":[76.407,40.036,202.462],"0.38":[98.125,39.149,219.806],"0.42":[107.436,32.311,230.435],"0.46":[105.327,23.318,235.299],"0.5":[99.072,13.8,238.94],"0.54":[94.912,5.008,244.557],"0.58":[95.068,-3.481,253.782],"0.62":[95.198,-13.629,267.062],"0.67":[90.038,-23.36,282.416],"0.71":[80.81,-28.944,295.647],"0.75":[74.139,-32.212,300.609],"0.79":[73.111,-37.15,296.314],"0.83":[77.241,-42.779,285.831],"0.88":[82.407,-46.676,275.843],"0.92":[85.031,-48.684,270.845],"0.96":[86.016,-49.569,268.794],"1.0":[86.211,-49.702,268.184],"1.04":[86.056,-49.507,268.217],"1.08":[85.849,-49.267,268.313],"1.12":[85.916,-49.291,267.943]},"position":{"0.0":[-15.641,-22.8,-25.776],"0.04":[-8.222,-24.051,-29.071],"0.08":[-0.093,-26.436,-29.207],"0.12":[6.657,-29.289,-26.037],"0.17":[15.389,-31.728,-17.282],"0.21":[12.794,-39.753,-12.404],"0.25":[9.179,-43.389,-10.997],"0.29":[6.943,-44.478,-11.927],"0.33":[5.308,-44.453,-13.662],"0.38":[3.791,-43.968,-15.44],"0.42":[1.721,-43.512,-17.193],"0.46":[-1.197,-42.986,-18.965],"0.5":[-4.361,-42.025,-20.396],"0.54":[-6.811,-40.591,-21.438],"0.58":[-7.808,-38.572,-22.431],"0.62":[-7.667,-35.766,-23.521],"0.67":[-7.417,-32.513,-24.259],"0.71":[-7.762,-29.746,-24.348],"0.75":[-8.656,-28.094,-23.937],"0.79":[-9.706,-27.363,-23.262],"0.83":[-10.653,-27.109,-22.373],"0.88":[-11.346,-26.886,-21.427],"0.92":[-11.72,-26.557,-20.553],"0.96":[-11.858,-26.265,-19.823],"1.0":[-11.877,-26.128,-19.412],"1.04":[-11.87,-26.083,-19.183],"1.08":[-11.894,-26.093,-19.112],"1.12":[-11.969,-26.11,-19.105]}},"skeleton":{"rotation":{"0.0":[10.09,-19.108,162.759],"0.04":[10.071,-19.151,162.832],"0.08":[10.032,-19.118,162.82],"0.12":[10.039,-19.159,162.834],"0.17":[9.435,-19.377,162.902],"0.21":[9.697,-19.286,162.71],"0.25":[9.995,-19.14,162.84],"0.29":[10.041,-19.114,162.843],"0.33":[10.059,-19.146,162.891],"0.38":[10.115,-19.175,162.886],"0.42":[10.138,-19.168,162.808],"0.46":[10.126,-19.109,162.822],"0.5":[10.16,-19.18,162.782],"0.54":[10.169,-19.232,162.767],"0.58":[10.158,-19.282,162.817],"0.62":[10.127,-19.134,162.828],"0.67":[10.136,-19.32,162.7],"0.71":[10.082,-19.234,162.738],"0.75":[10.06,-19.155,162.838],"0.79":[10.057,-19.157,162.828],"0.83":[10.105,-19.161,162.831],"0.88":[10.123,-19.163,162.823],"0.92":[10.128,-19.173,162.811],"0.96":[10.121,-19.163,162.818],"1.0":[10.114,-19.152,162.82],"1.04":[10.124,-19.164,162.824],"1.08":[10.12,-19.167,162.831],"1.12":[10.116,-19.164,162.82]},"position":{"0.0":{"post":[5.2,15.8,-3.15],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[62.489,-1.706,70.419],"0.04":[48.009,-7.833,65.384],"0.08":[34.051,-14.758,61.706],"0.12":[21.528,-21.565,59.39],"0.17":[12.316,-26.995,57.956],"0.21":[8.069,-30.393,56.214],"0.25":[11.172,-31.058,52.573],"0.29":[19.258,-28.723,48.289],"0.33":[27.835,-23.787,46.617],"0.38":[34.087,-18,49.01],"0.42":[39.745,-11.743,54.696],"0.46":[46.229,-5.401,62.46],"0.5":[53.972,0.4,71.501],"0.54":[62.857,5.029,80.738],"0.58":[72.429,8.273,89.117],"0.62":[82.157,10.332,95.509],"0.67":[92.181,11.902,98.623],"0.71":[102.52,13.504,99.327],"0.75":[112.178,15.514,98.346],"0.79":[120.341,18.221,96.533],"0.83":[125.631,21.854,94.657],"0.88":[127.223,27.118,91.817],"0.92":[125.526,33.453,87.535],"0.96":[122.196,39.321,82.651],"1.0":[120.006,43.243,79.314],"1.04":[119.482,44.899,78.332],"1.08":[119.661,45.212,78.635],"1.12":[119.824,45.507,78.923]},"position":{"0.0":[31.796,-31.18,-9.762],"0.04":[33.411,-28.906,-4.067],"0.08":[33.429,-26.536,1.698],"0.12":[32.174,-24.379,6.627],"0.17":[30.884,-22.881,9.546],"0.21":[30.355,-21.915,10.715],"0.25":[30.898,-21.374,10.064],"0.29":[32.096,-21.341,7.961],"0.33":[33.156,-22.07,5.117],"0.38":[33.639,-23.462,2.43],"0.42":[33.474,-25.405,-0.234],"0.46":[32.634,-27.569,-3.041],"0.5":[31.051,-29.581,-5.934],"0.54":[28.969,-31.105,-8.704],"0.58":[26.712,-31.995,-11.228],"0.62":[24.588,-32.255,-13.459],"0.67":[22.941,-31.793,-15.514],"0.71":[21.59,-30.874,-17.461],"0.75":[20.373,-29.796,-19.184],"0.79":[19.18,-28.837,-20.675],"0.83":[18.036,-28.316,-21.953],"0.88":[17.19,-28.187,-23.021],"0.92":[16.644,-28.269,-23.929],"0.96":[16.234,-28.426,-24.664],"1.0":[15.866,-28.47,-25.111],"1.04":[15.599,-28.477,-25.36],"1.08":[15.501,-28.487,-25.443],"1.12":[15.448,-28.463,-25.444]}},"root":{"position":{"0.0":[0,0.7,4.8],"0.58":{"pre":[0,0.7,4.8],"post":[0,0,0]}}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"melee_2":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[-59.094,-133.536,55.393],"0.04":[-80.216,-129.604,78.815],"0.08":[-121.437,-133.893,105.2],"0.12":[-143.436,-150.714,111.728],"0.17":[-155.369,-166.479,103.91],"0.21":[-171.167,-177.733,90.549],"0.25":[-189.967,-181.559,74.104],"0.29":[-199.446,-180.648,67.244],"0.33":[-184.617,-189.207,70.32],"0.38":[-166.02,-195.779,76.542],"0.42":[-145.874,-198.051,84.809],"0.46":[-128.684,-194.683,93.172],"0.5":[-118.747,-184.818,103.945],"0.54":[-116.386,-172.53,116.706],"0.58":[-118.182,-162.57,126.369],"0.62":[-118.569,-154.583,127.623],"0.67":[-116.275,-147.32,122.367],"0.71":[-111.583,-141.204,113.51],"0.75":[-105.446,-136.815,103.36],"0.79":[-99.872,-133.88,95.153],"0.83":[-96.715,-132.12,91.063],"0.88":[-95.111,-131.315,89.086],"0.92":[-94.569,-131.016,88.457],"0.96":[-94.443,-130.905,88.359],"1.0":[-93.994,-130.667,87.837],"1.04":[-93.739,-130.559,87.536],"1.08":[-93.915,-130.63,87.75],"1.12":[-94.084,-130.709,87.943]},"position":{"0.0":[1.722,-26.583,-24.013],"0.04":[-5.747,-24.434,-26.473],"0.08":[-13.973,-25.511,-24.989],"0.12":[-19.503,-27.436,-22.192],"0.17":[-23.657,-28.381,-19.712],"0.21":[-26.816,-29.446,-16.694],"0.25":[-28.975,-30.722,-13.231],"0.29":[-30.565,-32.684,-7.438],"0.33":[-28.559,-33.226,-11.281],"0.38":[-24.838,-33.517,-15.602],"0.42":[-19.96,-33.529,-18.751],"0.46":[-15.719,-33.032,-20.086],"0.5":[-14.185,-31.671,-20.07],"0.54":[-14.248,-29.965,-19.457],"0.58":[-14.447,-28.593,-18.786],"0.62":[-14.093,-27.802,-18.528],"0.67":[-13.588,-27.33,-18.575],"0.71":[-13.081,-26.991,-18.751],"0.75":[-12.619,-26.731,-18.949],"0.79":[-12.268,-26.497,-19.061],"0.83":[-12.092,-26.32,-19.075],"0.88":[-12.01,-26.217,-19.089],"0.92":[-11.986,-26.167,-19.096],"0.96":[-11.986,-26.139,-19.103],"1.0":[-11.965,-26.106,-19.106],"1.04":[-11.952,-26.096,-19.11],"1.08":[-11.96,-26.102,-19.107],"1.12":[-11.969,-26.11,-19.105]}},"skeleton":{"rotation":{"0.0":[10.18,-19.281,162.709],"0.04":[10.269,-19.3,162.714],"0.08":[9.299,-18.848,163.615],"0.12":[10.126,-19.162,162.828],"0.17":[10.338,-19.255,162.849],"0.21":[10.443,-19.321,162.861],"0.25":[10.271,-19.165,162.705],"0.29":[10.099,-19.175,162.785],"0.33":[10.114,-19.212,162.876],"0.38":[10.106,-19.226,162.889],"0.42":[10.08,-19.219,162.864],"0.46":[10.116,-19.133,162.772],"0.5":[10.035,-19.31,162.83],"0.54":[9.97,-19.308,162.823],"0.58":[10.035,-19.192,162.857],"0.62":[10.047,-19.147,162.856],"0.67":[10.073,-19.153,162.829],"0.71":[10.095,-19.154,162.822],"0.75":[10.127,-19.163,162.823],"0.79":[10.13,-19.174,162.814],"0.83":[10.12,-19.16,162.815],"0.88":[10.137,-19.164,162.813],"0.92":[10.123,-19.164,162.825],"0.96":[10.133,-19.164,162.83],"1.0":[10.116,-19.167,162.826],"1.04":[10.117,-19.172,162.825],"1.08":[10.122,-19.17,162.817],"1.12":[10.113,-19.164,162.828]},"position":{"0.0":{"post":[5.2,15.8,-3.15],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[100.255,-17.719,91.86],"0.04":[84.539,-23.194,96.422],"0.08":[71.678,-26.145,100.357],"0.12":[63.088,-26.675,102.28],"0.17":[56.384,-26.177,103.145],"0.21":[51.16,-25.251,103.122],"0.25":[47.619,-24.199,102.108],"0.29":[45.978,-23.21,100.025],"0.33":[47.066,-22.254,96.478],"0.38":[51.995,-20.843,90.415],"0.42":[59.986,-18.173,82.728],"0.46":[68.692,-14.041,75.618],"0.5":[75.963,-9.237,71.085],"0.54":[80.839,-4.98,69.677],"0.58":[84.447,-1.486,70.585],"0.62":[87.828,1.399,72.856],"0.67":[91.276,3.807,75.876],"0.71":[95.012,5.988,78.877],"0.75":[99.004,8.331,81.368],"0.79":[103.17,11.377,82.953],"0.83":[107.462,17.549,82.56],"0.88":[111.244,25.852,81.195],"0.92":[114.073,33.047,80.186],"0.96":[116.305,37.989,79.86],"1.0":[117.645,40.911,79.505],"1.04":[118.631,43.037,79.155],"1.08":[119.432,44.705,78.96],"1.12":[119.824,45.507,78.923]},"position":{"0.0":[25.263,-35.266,-17.244],"0.04":[24.471,-35.253,-17.323],"0.08":[24.093,-35.208,-17.23],"0.12":[24.306,-35.141,-16.933],"0.17":[24.848,-35.05,-16.469],"0.21":[25.525,-34.938,-15.915],"0.25":[26.195,-34.831,-15.327],"0.29":[26.74,-34.737,-14.796],"0.33":[27.051,-34.681,-14.439],"0.38":[27.228,-34.692,-14.128],"0.42":[27.312,-34.751,-13.877],"0.46":[27.282,-34.805,-13.852],"0.5":[27.069,-34.82,-14.299],"0.54":[26.618,-34.721,-15.283],"0.58":[25.887,-34.475,-16.705],"0.62":[24.865,-34.052,-18.373],"0.67":[23.541,-33.41,-20.084],"0.71":[22.024,-32.601,-21.648],"0.75":[20.455,-31.697,-22.943],"0.79":[18.982,-30.799,-23.915],"0.83":[17.741,-30.016,-24.556],"0.88":[16.77,-29.368,-24.977],"0.92":[16.082,-28.894,-25.226],"0.96":[15.64,-28.589,-25.368],"1.0":[15.505,-28.502,-25.416],"1.04":[15.495,-28.496,-25.426],"1.08":[15.473,-28.476,-25.439],"1.12":[15.448,-28.463,-25.444]}},"root":{"position":{"0.0":[0,-0.352,0],"0.46":{"pre":[0,-0.352,0],"post":[0,0,0]}}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"melee_3":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[60.354,-40.857,-108.688],"0.04":[121.149,-50.252,-122.073],"0.08":[172.12,-42.699,-128.47],"0.12":[180.83,-41.254,-129.169],"0.17":[182.389,-40.93,-129.515],"0.21":[184.179,-40.566,-129.807],"0.25":[185.764,-40.477,-129.766],"0.29":[186.557,-40.55,-130.191],"0.33":[189.267,-41.304,-111.348],"0.38":[185.356,-33.059,-90.093],"0.42":[182.721,-13.211,-76.743],"0.46":[175.431,-0.846,-82.313],"0.5":[155.919,2.874,-97.555],"0.54":[111.854,4.713,-88.112],"0.58":[82.209,14.47,-75.779],"0.62":[76.85,7.094,-74.96],"0.67":[74.905,-3.963,-73.59],"0.71":[73.843,-15.501,-71.861],"0.75":[72.383,-24.905,-70.178],"0.79":[71.07,-31.43,-69.842],"0.83":[72.343,-36.74,-72.906],"0.88":[75.565,-41.141,-78.113],"0.92":[79.718,-44.548,-84.151],"0.96":[83.288,-47.183,-88.934],"1.0":[85.021,-48.675,-91.034],"1.04":[85.588,-49.109,-91.693],"1.08":[85.644,-49.111,-91.744],"1.12":[85.916,-49.291,-92.057]},"position":{"0.0":[-13.853,-26.459,-26.016],"0.04":[-3.286,-22.775,-28.332],"0.08":[1.613,-22.726,-28.199],"0.12":[2.055,-22.753,-27.975],"0.17":[2.303,-22.64,-27.857],"0.21":[2.537,-22.521,-27.719],"0.25":[2.732,-22.472,-27.581],"0.29":[2.967,-22.536,-27.42],"0.33":[5.023,-27.324,-25.537],"0.38":[6.035,-32.194,-21.569],"0.42":[7.862,-33.937,-15.442],"0.46":[8.831,-34.353,-12.47],"0.5":[8.928,-35.047,-12.442],"0.54":[2.503,-39.056,-16.964],"0.58":[-5.966,-41.066,-19.829],"0.62":[-7.981,-38.724,-21.51],"0.67":[-9.065,-35.476,-22.671],"0.71":[-9.738,-32.16,-22.99],"0.75":[-10.402,-29.521,-22.547],"0.79":[-11.136,-27.901,-21.72],"0.83":[-11.538,-27.066,-20.85],"0.88":[-11.706,-26.617,-20.065],"0.92":[-11.741,-26.346,-19.38],"0.96":[-11.86,-26.199,-19.172],"1.0":[-11.962,-26.068,-19.11],"1.04":[-11.982,-26.058,-19.095],"1.08":[-11.97,-26.098,-19.105],"1.12":[-11.969,-26.11,-19.105]}},"skeleton":{"rotation":{"0.0":[2.073,-172.516,-12.775],"0.04":[2.817,-172.556,-13.446],"0.08":[1.91,-172.613,-12.974],"0.12":[1.906,-172.619,-12.973],"0.17":[1.937,-172.621,-12.931],"0.21":[1.929,-172.625,-12.914],"0.25":[1.939,-172.618,-12.872],"0.29":[1.969,-172.604,-12.845],"0.33":[1.723,-172.573,-12.886],"0.38":[1.604,-173.095,-12.939],"0.42":[1.83,-172.931,-12.957],"0.46":[2.056,-172.59,-12.714],"0.5":[-175.088,-160.379,-16.876],"0.54":[-190.698,-161.107,-16.324],"0.58":[-186.394,-160.379,-14.996],"0.62":[-175.038,-160.59,-16.276],"0.67":[-170.325,-160.744,-16.764],"0.71":[-170.231,-160.771,-16.862],"0.75":[-170.116,-160.802,-16.959],"0.79":[-169.945,-160.814,-17.095],"0.83":[-169.888,-160.845,-17.162],"0.88":[-169.861,-160.843,-17.179],"0.92":[-169.872,-160.832,-17.176],"0.96":[-169.856,-160.831,-17.206],"1.0":[-169.883,-160.832,-17.165],"1.04":[-169.862,-160.829,-17.177],"1.08":[-169.866,-160.84,-17.181],"1.12":[-169.884,-160.836,-17.18]},"position":{"0.0":[5.2,14.9,2.15],"0.44":{"pre":[5.2,14.9,2.15],"post":[5.2,15.8,-3.15]}}},"lefthand":{"rotation":{"0.0":[69.308,8.546,53.513],"0.04":[49.982,-3.814,50.977],"0.08":[31.802,-15.787,51.815],"0.12":[16.163,-25.198,54.977],"0.17":[7.631,-30.182,57.269],"0.21":[6.122,-32.956,56.286],"0.25":[9.834,-34.248,52.381],"0.29":[16.71,-33.254,47.383],"0.33":[24.235,-29.209,44.288],"0.38":[30.107,-22.944,45.478],"0.42":[34.12,-13.13,54.806],"0.46":[39.912,1.226,75.414],"0.5":[51.673,13.299,102.586],"0.54":[66.312,16.444,124.873],"0.58":[79.618,13.32,130.715],"0.62":[93.448,10.936,120.584],"0.67":[105.882,14.834,102.911],"0.71":[113.855,22.56,88.457],"0.75":[118.013,29.087,81.747],"0.79":[119.855,33.813,79.4],"0.83":[120.134,37.166,79.059],"0.88":[119.899,39.855,79.331],"0.92":[119.809,42.433,79.331],"0.96":[119.936,44.449,78.962],"1.0":[119.91,45.041,78.99],"1.04":[119.853,45.377,78.977],"1.08":[119.848,45.501,78.935],"1.12":[119.824,45.507,78.923]},"position":{"0.0":[32.77,-25.644,-12.687],"0.04":[34.752,-24.607,-5.445],"0.08":[34.835,-24.171,0.187],"0.12":[33.633,-23.829,4.591],"0.17":[32.587,-23.603,6.649],"0.21":[32.393,-23.165,7.128],"0.25":[32.873,-22.554,6.566],"0.29":[33.719,-22.102,5.177],"0.33":[34.56,-22.281,3.137],"0.38":[35.037,-23.336,0.932],"0.42":[34.711,-26.069,-1.506],"0.46":[32.421,-30.651,-4.663],"0.5":[27.601,-34.479,-8.191],"0.54":[22.731,-35.875,-11.102],"0.58":[20.033,-35.58,-13.496],"0.62":[19.226,-34.514,-16.098],"0.67":[19.138,-32.862,-18.848],"0.71":[18.762,-31.235,-21.116],"0.75":[17.958,-30.217,-22.597],"0.79":[17.217,-29.652,-23.576],"0.83":[16.69,-29.338,-24.269],"0.88":[16.233,-29.131,-24.829],"0.92":[15.741,-28.921,-25.34],"0.96":[15.508,-28.619,-25.45],"1.0":[15.471,-28.519,-25.459],"1.04":[15.46,-28.463,-25.463],"1.08":[15.45,-28.45,-25.456],"1.12":[15.448,-28.463,-25.444]}},"root":{"position":{"0.0":[0,0,11.18],"0.49":{"pre":[0,0,11.18],"post":[0,0,0]}}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"static_idle":{"loop":true,"animation_length":1.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[85.893,-49.338,-92.05],"0.04":[85.897,-49.389,-92.088],"0.08":[85.899,-49.438,-92.13],"0.12":[85.901,-49.492,-92.142],"0.17":[85.886,-49.516,-92.149],"0.21":[85.884,-49.563,-92.18],"0.25":[85.878,-49.597,-92.18],"0.29":[85.889,-49.615,-92.202],"0.33":[85.878,-49.63,-92.199],"0.38":[85.885,-49.63,-92.223],"0.42":[85.872,-49.628,-92.204],"0.46":[85.885,-49.623,-92.24],"0.5":[85.87,-49.596,-92.206],"0.54":[85.86,-49.554,-92.193],"0.58":[85.877,-49.513,-92.196],"0.62":[85.877,-49.474,-92.186],"0.67":[85.882,-49.41,-92.179],"0.71":[85.886,-49.339,-92.161],"0.75":[85.882,-49.273,-92.143],"0.79":[85.876,-49.192,-92.092],"0.83":[85.877,-49.106,-92.079],"0.88":[85.867,-49.032,-92.052],"0.92":[85.882,-48.959,-92.043],"0.96":[85.887,-48.862,-92.013],"1.0":[85.887,-48.785,-92.001],"1.04":[85.884,-48.709,-91.972],"1.08":[85.873,-48.633,-91.937],"1.12":[85.892,-48.561,-91.94],"1.17":[85.891,-48.498,-91.915],"1.21":[85.892,-48.433,-91.898],"1.25":[85.886,-48.378,-91.865],"1.29":[85.876,-48.329,-91.849],"1.33":[85.882,-48.306,-91.846],"1.38":[85.886,-48.291,-91.833],"1.42":[85.887,-48.284,-91.822],"1.46":[85.897,-48.27,-91.828],"1.5":[85.887,-48.302,-91.825],"1.54":[85.895,-48.324,-91.845],"1.58":[85.901,-48.361,-91.847],"1.62":[85.894,-48.413,-91.853],"1.67":[85.904,-48.479,-91.879],"1.71":[85.905,-48.547,-91.879],"1.75":[85.905,-48.649,-91.922],"1.79":[85.881,-48.731,-91.899],"1.83":[85.903,-48.855,-91.949],"1.88":[85.898,-48.986,-91.974],"1.92":[85.904,-49.126,-92.015],"1.96":[85.916,-49.291,-92.057]},"position":{"0.0":[-11.968,-26.138,-19.11],"0.04":[-11.969,-26.159,-19.113],"0.08":[-11.965,-26.178,-19.115],"0.12":[-11.966,-26.201,-19.117],"0.17":[-11.962,-26.216,-19.118],"0.21":[-11.963,-26.231,-19.117],"0.25":[-11.962,-26.239,-19.119],"0.29":[-11.962,-26.248,-19.12],"0.33":[-11.959,-26.261,-19.121],"0.38":[-11.96,-26.265,-19.12],"0.42":[-11.96,-26.268,-19.121],"0.46":[-11.96,-26.269,-19.121],"0.5":[-11.96,-26.267,-19.121],"0.54":[-11.96,-26.265,-19.121],"0.58":[-11.959,-26.253,-19.121],"0.62":[-11.962,-26.244,-19.118],"0.67":[-11.961,-26.237,-19.119],"0.71":[-11.962,-26.224,-19.118],"0.75":[-11.963,-26.21,-19.116],"0.79":[-11.966,-26.2,-19.117],"0.83":[-11.966,-26.18,-19.115],"0.88":[-11.967,-26.168,-19.111],"0.92":[-11.968,-26.149,-19.11],"0.96":[-11.967,-26.135,-19.109],"1.0":[-11.97,-26.113,-19.108],"1.04":[-11.97,-26.101,-19.107],"1.08":[-11.971,-26.083,-19.106],"1.12":[-11.973,-26.069,-19.101],"1.17":[-11.972,-26.05,-19.101],"1.21":[-11.974,-26.04,-19.101],"1.25":[-11.975,-26.025,-19.098],"1.29":[-11.977,-26.017,-19.1],"1.33":[-11.978,-26.008,-19.097],"1.38":[-11.979,-26.004,-19.097],"1.42":[-11.978,-26,-19.095],"1.46":[-11.977,-25.999,-19.094],"1.5":[-11.977,-25.999,-19.094],"1.54":[-11.978,-26,-19.095],"1.58":[-11.979,-26.002,-19.096],"1.62":[-11.974,-26.007,-19.099],"1.67":[-11.976,-26.012,-19.097],"1.71":[-11.976,-26.024,-19.099],"1.75":[-11.975,-26.035,-19.097],"1.79":[-11.975,-26.045,-19.102],"1.83":[-11.972,-26.058,-19.102],"1.88":[-11.973,-26.076,-19.102],"1.92":[-11.972,-26.095,-19.104],"1.96":[-11.969,-26.11,-19.105]}},"skeleton":{"rotation":{"0.0":[10.146,-19.168,162.816],"0.04":[10.136,-19.167,162.821],"0.08":[10.123,-19.161,162.822],"0.12":[10.139,-19.182,162.811],"0.17":[10.135,-19.172,162.825],"0.21":[10.12,-19.162,162.82],"0.25":[10.137,-19.17,162.806],"0.29":[10.122,-19.173,162.822],"0.33":[10.136,-19.171,162.814],"0.38":[10.118,-19.168,162.827],"0.42":[10.131,-19.165,162.824],"0.46":[10.098,-19.161,162.833],"0.5":[10.128,-19.154,162.824],"0.54":[10.125,-19.155,162.83],"0.58":[10.125,-19.173,162.827],"0.62":[10.111,-19.165,162.832],"0.67":[10.124,-19.172,162.819],"0.71":[10.117,-19.165,162.832],"0.75":[10.111,-19.158,162.826],"0.79":[10.137,-19.17,162.819],"0.83":[10.131,-19.167,162.832],"0.88":[10.128,-19.161,162.828],"0.92":[10.125,-19.171,162.815],"0.96":[10.124,-19.174,162.841],"1.0":[10.114,-19.164,162.829],"1.04":[10.123,-19.168,162.822],"1.08":[10.133,-19.162,162.827],"1.12":[10.117,-19.17,162.831],"1.17":[10.118,-19.165,162.824],"1.21":[10.12,-19.163,162.826],"1.25":[10.138,-19.17,162.823],"1.29":[10.127,-19.15,162.833],"1.33":[10.133,-19.162,162.824],"1.38":[10.132,-19.158,162.818],"1.42":[10.143,-19.174,162.809],"1.46":[10.143,-19.175,162.835],"1.5":[10.134,-19.173,162.82],"1.54":[10.124,-19.176,162.825],"1.58":[10.132,-19.176,162.829],"1.62":[10.129,-19.162,162.83],"1.67":[10.126,-19.171,162.824],"1.71":[10.137,-19.175,162.828],"1.75":[10.122,-19.166,162.816],"1.79":[10.154,-19.161,162.819],"1.83":[10.125,-19.165,162.827],"1.88":[10.133,-19.163,162.818],"1.92":[10.126,-19.164,162.828],"1.96":[10.113,-19.164,162.828]},"position":{"0.0":{"post":[5.2,15.8,-3.15],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[119.864,45.603,78.976],"0.04":[119.892,45.692,79.033],"0.08":[119.963,45.773,79.132],"0.12":[119.991,45.857,79.184],"0.17":[120.047,45.93,79.265],"0.21":[120.132,45.998,79.371],"0.25":[120.22,46.061,79.482],"0.29":[120.285,46.114,79.569],"0.33":[120.341,46.197,79.64],"0.38":[120.448,46.249,79.774],"0.42":[120.506,46.295,79.849],"0.46":[120.613,46.349,79.981],"0.5":[120.681,46.413,80.074],"0.54":[120.738,46.476,80.15],"0.58":[120.832,46.535,80.256],"0.62":[120.904,46.584,80.363],"0.67":[120.987,46.645,80.471],"0.71":[121.049,46.709,80.557],"0.75":[121.125,46.771,80.663],"0.79":[121.175,46.842,80.729],"0.83":[121.259,46.923,80.836],"0.88":[121.314,47,80.922],"0.92":[121.341,47.097,80.991],"0.96":[121.38,47.196,81.046],"1.0":[121.341,47.097,80.991],"1.04":[121.314,47,80.922],"1.08":[121.25,46.923,80.828],"1.12":[121.191,46.845,80.745],"1.17":[121.118,46.769,80.648],"1.21":[121.049,46.709,80.557],"1.25":[120.987,46.645,80.471],"1.29":[120.904,46.584,80.363],"1.33":[120.832,46.535,80.256],"1.38":[120.738,46.476,80.15],"1.42":[120.681,46.413,80.074],"1.46":[120.613,46.349,79.981],"1.5":[120.506,46.295,79.849],"1.54":[120.444,46.248,79.771],"1.58":[120.337,46.199,79.635],"1.62":[120.285,46.114,79.569],"1.67":[120.216,46.067,79.482],"1.71":[120.12,46.003,79.364],"1.75":[120.047,45.93,79.265],"1.79":[119.992,45.857,79.184],"1.83":[119.963,45.773,79.132],"1.88":[119.896,45.691,79.041],"1.92":[119.866,45.602,78.98],"1.96":[119.807,45.512,78.905]},"position":{"0.0":[15.453,-28.468,-25.448],"0.04":[15.457,-28.474,-25.452],"0.08":[15.46,-28.482,-25.455],"0.12":[15.457,-28.497,-25.46],"0.17":[15.46,-28.508,-25.463],"0.21":[15.462,-28.526,-25.46],"0.25":[15.455,-28.543,-25.457],"0.29":[15.456,-28.565,-25.459],"0.33":[15.458,-28.578,-25.454],"0.38":[15.45,-28.6,-25.454],"0.42":[15.453,-28.623,-25.451],"0.46":[15.444,-28.637,-25.449],"0.5":[15.444,-28.659,-25.449],"0.54":[15.441,-28.681,-25.446],"0.58":[15.441,-28.704,-25.447],"0.62":[15.434,-28.717,-25.44],"0.67":[15.437,-28.739,-25.442],"0.71":[15.439,-28.755,-25.44],"0.75":[15.435,-28.772,-25.439],"0.79":[15.435,-28.783,-25.441],"0.83":[15.438,-28.8,-25.443],"0.88":[15.442,-28.807,-25.442],"0.92":[15.448,-28.812,-25.442],"0.96":[15.453,-28.818,-25.447],"1.0":[15.448,-28.812,-25.442],"1.04":[15.442,-28.807,-25.442],"1.08":[15.438,-28.8,-25.443],"1.12":[15.435,-28.783,-25.441],"1.17":[15.435,-28.772,-25.439],"1.21":[15.439,-28.755,-25.44],"1.25":[15.437,-28.739,-25.442],"1.29":[15.434,-28.717,-25.44],"1.33":[15.441,-28.704,-25.447],"1.38":[15.441,-28.681,-25.446],"1.42":[15.444,-28.659,-25.449],"1.46":[15.444,-28.637,-25.449],"1.5":[15.453,-28.623,-25.451],"1.54":[15.45,-28.6,-25.454],"1.58":[15.458,-28.578,-25.454],"1.62":[15.456,-28.565,-25.459],"1.67":[15.456,-28.542,-25.457],"1.71":[15.462,-28.525,-25.461],"1.75":[15.46,-28.508,-25.463],"1.79":[15.457,-28.497,-25.46],"1.83":[15.46,-28.482,-25.455],"1.88":[15.457,-28.474,-25.452],"1.92":[15.453,-28.468,-25.448],"1.96":[15.449,-28.461,-25.445]}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}}},"idle":{"loop":true,"bones":{"root":{"rotation":[0,0,0],"position":[0,0,0],"scale":1}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/skeleton.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/skeleton.geo.json new file mode 100644 index 0000000..9bebbcc --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/skeleton.geo.json @@ -0,0 +1,2481 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 32, + "texture_height": 32, + "visible_bounds_width": 4, + "visible_bounds_height": 5, + "visible_bounds_offset": [0, 0.5, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "bone", + "parent": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "knife_and_right", + "parent": "bone", + "pivot": [6, 19, 0] + }, + { + "name": "righthand", + "parent": "knife_and_right", + "pivot": [6, 19, 0] + }, + { + "name": "righthand_pos", + "parent": "righthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [4, 8, -2], + "size": [3, 12, 4], + "uv": { + "north": {"uv": [0, 0], "uv_size": [8, 24]}, + "east": {"uv": [8, 0], "uv_size": [8, 24]}, + "south": {"uv": [16, 0], "uv_size": [8, 24]}, + "west": {"uv": [0, 24], "uv_size": [8, 24]}, + "up": {"uv": [32, 0], "uv_size": [8, 8]}, + "down": {"uv": [32, 16], "uv_size": [8, -8]} + } + } + ] + }, + { + "name": "skeleton", + "parent": "knife_and_right", + "pivot": [0, 7.37333, 0.82133], + "rotation": [0, 0, 90] + }, + { + "name": "weapon", + "parent": "skeleton", + "pivot": [0, 10.52533, -0.16427] + }, + { + "name": "bone2", + "parent": "weapon", + "pivot": [-0.3291, 12.4984, -2.45569], + "cubes": [ + { + "origin": [-0.04874, 7.1134, -5.36723], + "size": [0.0975, 0.42, 0.8775], + "pivot": [-0.04874, 8.8984, -5.36723], + "rotation": [0, -5.5, 0], + "uv": { + "north": {"uv": [19, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 14], "uv_size": [0.75, 0.25]}, + "south": {"uv": [22, 19], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 19], "uv_size": [0.75, 0.25]}, + "up": {"uv": [19, 15], "uv_size": [0.25, 0.75]}, + "down": {"uv": [16, 19.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.43582, 7.3384, -7.76249], + "size": [0.10592, 0, 2.3528], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [4.03347, -15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [2, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [2, 0]}, + "up": {"uv": [2, 14], "uv_size": [0.25, 2]}, + "down": {"uv": [14, 4], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.43582, 7.3384, -8.1281], + "size": [0.0328, 0, 0.36562], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [4.03347, -15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [20, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 20.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.32989, 7.3384, -7.49435], + "size": [0.0975, 0, 2.08466], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [4.03347, -15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [1.75, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [1.75, 0]}, + "up": {"uv": [15, 14], "uv_size": [0.25, 1.75]}, + "down": {"uv": [16, 1.75], "uv_size": [0.25, -1.75]} + } + }, + { + "origin": [-0.23239, 7.3384, -7.1531], + "size": [0.0975, 0, 1.6703], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [4.03347, -15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [1.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [1.5, 0]}, + "up": {"uv": [12, 16], "uv_size": [0.25, 1.5]}, + "down": {"uv": [16, 13.5], "uv_size": [0.25, -1.5]} + } + }, + { + "origin": [-0.13489, 7.3384, -6.83623], + "size": [0.0975, 0, 1.32905], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [4.03347, -15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [1, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [1, 0]}, + "up": {"uv": [17, 8], "uv_size": [0.25, 1]}, + "down": {"uv": [17, 11], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.03739, 7.3384, -6.49499], + "size": [0.0975, 0, 0.93906], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [4.03347, -15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "up": {"uv": [19, 16], "uv_size": [0.25, 0.75]}, + "down": {"uv": [17, 19.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.06011, 7.3384, -6.1781], + "size": [0.0975, 0, 0.62218], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [4.03347, -15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [21, 9], "uv_size": [0.25, 0.5]}, + "down": {"uv": [10, 21.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.15761, 7.3384, -5.86123], + "size": [0.0975, 0, 0.28093], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [4.03347, -15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [21, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.14524, 7.52914, -7.70694], + "size": [0.0975, 0, 2.34], + "pivot": [-0.04774, 7.52914, -5.36694], + "rotation": [3.882, 0.70665, -13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [2, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [2, 0]}, + "up": {"uv": [3, 14], "uv_size": [0.25, 2]}, + "down": {"uv": [14, 6], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.09648, 7.52914, -7.99944], + "size": [0.04874, 0, 0.2925], + "pivot": [-0.04774, 7.52914, -5.36694], + "rotation": [3.882, 0.70665, -13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [22, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [0, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.12085, 7.52914, -7.87755], + "size": [0.02437, 0, 0.17062], + "pivot": [-0.04774, 7.52914, -5.36694], + "rotation": [3.882, 0.70665, -13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 0], "uv_size": [0.25, 0.25]}, + "down": {"uv": [1, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.14524, 7.52914, -7.80444], + "size": [0.02438, 0, 0.0975], + "pivot": [-0.04774, 7.52914, -5.36694], + "rotation": [3.882, 0.70665, -13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 1], "uv_size": [0.25, 0.25]}, + "down": {"uv": [2, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.82774, 7.52914, -5.46444], + "size": [0.6825, 0, 0.0975], + "pivot": [-0.04774, 7.52914, -5.36694], + "rotation": [3.93685, -4.74655, -13.78715], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [21, 10], "uv_size": [0.5, 0.25]}, + "down": {"uv": [11, 21.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.96533, 7.3384, -5.44871], + "size": [0.80399, 0.00005, 2.925], + "pivot": [-0.96533, 7.3384, -3.98621], + "rotation": [1.32711, -5.33796, -13.98352], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "east": {"uv": [0, 0], "uv_size": [2.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "west": {"uv": [0, 0], "uv_size": [2.5, 0]}, + "up": {"uv": [7, 2], "uv_size": [0.75, 2.5]}, + "down": {"uv": [4, 8.5], "uv_size": [0.75, -2.5]} + } + }, + { + "origin": [-1.19137, 7.3384, -2.51304], + "size": [0.80401, 0.00005, 2.4375], + "pivot": [-1.19137, 7.3384, -1.30647], + "rotation": [0.96386, -3.88232, -13.95432], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "east": {"uv": [0, 0], "uv_size": [2, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "west": {"uv": [0, 0], "uv_size": [2, 0]}, + "up": {"uv": [9, 4], "uv_size": [0.75, 2]}, + "down": {"uv": [8, 8], "uv_size": [0.75, -2]} + } + }, + { + "origin": [0.38736, 7.3384, -2.51304], + "size": [0.80401, 0.00005, 2.4375], + "pivot": [1.19137, 7.3384, -1.30647], + "rotation": [0.96386, 3.88232, 13.95432], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "east": {"uv": [0, 0], "uv_size": [2, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "west": {"uv": [0, 0], "uv_size": [2, 0]}, + "up": {"uv": [9, 2], "uv_size": [0.75, 2]}, + "down": {"uv": [8, 10], "uv_size": [0.75, -2]} + } + }, + { + "origin": [0.32989, 7.3384, -7.76249], + "size": [0.10592, 0, 2.3528], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [4.03347, 15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [2, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [2, 0]}, + "up": {"uv": [14, 6], "uv_size": [0.25, 2]}, + "down": {"uv": [14, 10], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.40303, 7.3384, -8.1281], + "size": [0.03278, 0, 0.36562], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [4.03347, 15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 2], "uv_size": [0.25, 0.25]}, + "down": {"uv": [3, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.23239, 7.3384, -7.49435], + "size": [0.0975, 0, 2.08466], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [4.03347, 15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [1.75, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [1.75, 0]}, + "up": {"uv": [2, 16], "uv_size": [0.25, 1.75]}, + "down": {"uv": [16, 3.75], "uv_size": [0.25, -1.75]} + } + }, + { + "origin": [0.13489, 7.3384, -7.1531], + "size": [0.0975, 0, 1.6703], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [4.03347, 15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [1.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [1.5, 0]}, + "up": {"uv": [13, 16], "uv_size": [0.25, 1.5]}, + "down": {"uv": [14, 17.5], "uv_size": [0.25, -1.5]} + } + }, + { + "origin": [0.03739, 7.3384, -6.83623], + "size": [0.0975, 0, 1.32905], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [4.03347, 15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [1, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [1, 0]}, + "up": {"uv": [17, 11], "uv_size": [0.25, 1]}, + "down": {"uv": [17, 13], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.06011, 7.3384, -6.49499], + "size": [0.0975, 0, 0.93906], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [4.03347, 15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "up": {"uv": [19, 17], "uv_size": [0.25, 0.75]}, + "down": {"uv": [18, 19.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.15761, 7.3384, -6.1781], + "size": [0.0975, 0, 0.62218], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [4.03347, 15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [21, 11], "uv_size": [0.25, 0.5]}, + "down": {"uv": [12, 21.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.25511, 7.3384, -5.86123], + "size": [0.0975, 0, 0.28093], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [4.03347, 15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 3], "uv_size": [0.25, 0.25]}, + "down": {"uv": [4, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.04774, 7.52914, -7.70694], + "size": [0.0975, 0, 2.34], + "pivot": [0.04774, 7.52914, -5.36694], + "rotation": [3.882, -0.70665, 13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [2, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [2, 0]}, + "up": {"uv": [14, 10], "uv_size": [0.25, 2]}, + "down": {"uv": [14, 14], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.04774, 7.52914, -7.99944], + "size": [0.04876, 0, 0.2925], + "pivot": [0.04774, 7.52914, -5.36694], + "rotation": [3.882, -0.70665, 13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 4], "uv_size": [0.25, 0.25]}, + "down": {"uv": [5, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09649, 7.52914, -7.87755], + "size": [0.02436, 0, 0.17062], + "pivot": [0.04774, 7.52914, -5.36694], + "rotation": [3.882, -0.70665, 13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 5], "uv_size": [0.25, 0.25]}, + "down": {"uv": [6, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.12085, 7.52914, -7.80444], + "size": [0.02438, 0, 0.0975], + "pivot": [0.04774, 7.52914, -5.36694], + "rotation": [3.882, -0.70665, 13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 6], "uv_size": [0.25, 0.25]}, + "down": {"uv": [7, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.14524, 7.52914, -5.46444], + "size": [0.6825, 0, 0.0975], + "pivot": [0.04774, 7.52914, -5.36694], + "rotation": [3.93685, 4.74655, 13.78715], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [21, 12], "uv_size": [0.5, 0.25]}, + "down": {"uv": [13, 21.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [0.16134, 7.3384, -5.44871], + "size": [0.80399, 0.00005, 2.925], + "pivot": [0.96533, 7.3384, -3.98621], + "rotation": [1.32711, 5.33796, 13.98352], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "east": {"uv": [0, 0], "uv_size": [2.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "west": {"uv": [0, 0], "uv_size": [2.5, 0]}, + "up": {"uv": [1, 9.5], "uv_size": [0.75, -2.5]}, + "down": {"uv": [6, 7.5], "uv_size": [0.75, -2.5]} + } + }, + { + "origin": [-0.04874, 7.3384, -8.09723], + "size": [0.0975, 0, 2.73696], + "pivot": [0, 7.3384, -8.09723], + "rotation": [4.05296, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [2.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [2.25, 0]}, + "up": {"uv": [4, 13], "uv_size": [0.25, 2.25]}, + "down": {"uv": [5, 15.25], "uv_size": [0.25, -2.25]} + } + }, + { + "origin": [0.38736, 7.33835, -2.51304], + "size": [0.80401, 0.00005, 2.4375], + "pivot": [1.19137, 7.3384, -1.30647], + "rotation": [-0.96386, 3.88232, -13.95432], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "east": {"uv": [0, 0], "uv_size": [2, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "west": {"uv": [0, 0], "uv_size": [2, 0]}, + "up": {"uv": [9, 0], "uv_size": [0.75, 2]}, + "down": {"uv": [9, 4], "uv_size": [0.75, -2]} + } + }, + { + "origin": [0.32989, 7.3384, -7.76249], + "size": [0.10592, 0, 2.3528], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, 15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [2, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [2, 0]}, + "up": {"uv": [14, 14], "uv_size": [0.25, 2]}, + "down": {"uv": [15, 2], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.40303, 7.3384, -8.1281], + "size": [0.03278, 0, 0.36562], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, 15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 7], "uv_size": [0.25, 0.25]}, + "down": {"uv": [8, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.23239, 7.3384, -7.49435], + "size": [0.0975, 0, 2.08466], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, 15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [1.75, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [1.75, 0]}, + "up": {"uv": [3, 16], "uv_size": [0.25, 1.75]}, + "down": {"uv": [4, 17.75], "uv_size": [0.25, -1.75]} + } + }, + { + "origin": [0.13489, 7.3384, -7.1531], + "size": [0.0975, 0, 1.6703], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, 15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [1.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [1.5, 0]}, + "up": {"uv": [16, 14], "uv_size": [0.25, 1.5]}, + "down": {"uv": [15, 17.5], "uv_size": [0.25, -1.5]} + } + }, + { + "origin": [0.03739, 7.3384, -6.83623], + "size": [0.0975, 0, 1.32905], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, 15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [1, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [1, 0]}, + "up": {"uv": [17, 13], "uv_size": [0.25, 1]}, + "down": {"uv": [17, 15], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.06011, 7.3384, -6.49499], + "size": [0.0975, 0, 0.93906], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, 15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "up": {"uv": [19, 18], "uv_size": [0.25, 0.75]}, + "down": {"uv": [19, 19.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.15761, 7.3384, -6.1781], + "size": [0.0975, 0, 0.62218], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, 15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [21, 13], "uv_size": [0.25, 0.5]}, + "down": {"uv": [14, 21.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.25511, 7.3384, -5.86123], + "size": [0.0975, 0, 0.28093], + "pivot": [0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, 15.75455, -14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 8], "uv_size": [0.25, 0.25]}, + "down": {"uv": [9, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.04774, 7.14766, -7.70694], + "size": [0.0975, 0, 2.34], + "pivot": [0.04774, 7.14766, -5.36694], + "rotation": [-3.882, -0.70665, -13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [2, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [2, 0]}, + "up": {"uv": [15, 2], "uv_size": [0.25, 2]}, + "down": {"uv": [15, 6], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.04774, 7.14766, -7.99944], + "size": [0.04876, 0, 0.2925], + "pivot": [0.04774, 7.14766, -5.36694], + "rotation": [-3.882, -0.70665, -13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 9], "uv_size": [0.25, 0.25]}, + "down": {"uv": [10, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09649, 7.14766, -7.87755], + "size": [0.02436, 0, 0.17062], + "pivot": [0.04774, 7.14766, -5.36694], + "rotation": [-3.882, -0.70665, -13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 10], "uv_size": [0.25, 0.25]}, + "down": {"uv": [11, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.12085, 7.14766, -7.80444], + "size": [0.02438, 0, 0.0975], + "pivot": [0.04774, 7.14766, -5.36694], + "rotation": [-3.882, -0.70665, -13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 11], "uv_size": [0.25, 0.25]}, + "down": {"uv": [12, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.14524, 7.14766, -5.46444], + "size": [0.6825, 0, 0.0975], + "pivot": [0.04774, 7.14766, -5.36694], + "rotation": [-3.93685, 4.74655, -13.78715], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [21, 14], "uv_size": [0.5, 0.25]}, + "down": {"uv": [15, 21.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [0.16134, 7.33835, -5.44871], + "size": [0.80399, 0.00005, 2.925], + "pivot": [0.96533, 7.3384, -3.98621], + "rotation": [-1.32711, 5.33796, -13.98352], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "east": {"uv": [0, 0], "uv_size": [2.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "west": {"uv": [0, 0], "uv_size": [2.5, 0]}, + "up": {"uv": [0, 7], "uv_size": [0.75, 2.5]}, + "down": {"uv": [1, 9.5], "uv_size": [0.75, -2.5]} + } + }, + { + "origin": [-0.43582, 7.3384, -7.76249], + "size": [0.10592, 0, 2.3528], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, -15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [2, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [2, 0]}, + "up": {"uv": [15, 6], "uv_size": [0.25, 2]}, + "down": {"uv": [15, 10], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.43582, 7.3384, -8.1281], + "size": [0.0328, 0, 0.36562], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, -15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 12], "uv_size": [0.25, 0.25]}, + "down": {"uv": [13, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.32989, 7.3384, -7.49435], + "size": [0.0975, 0, 2.08466], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, -15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [1.75, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [1.75, 0]}, + "up": {"uv": [16, 4], "uv_size": [0.25, 1.75]}, + "down": {"uv": [5, 17.75], "uv_size": [0.25, -1.75]} + } + }, + { + "origin": [-0.23239, 7.3384, -7.1531], + "size": [0.0975, 0, 1.6703], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, -15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [1.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [1.5, 0]}, + "up": {"uv": [16, 16], "uv_size": [0.25, 1.5]}, + "down": {"uv": [0, 18.5], "uv_size": [0.25, -1.5]} + } + }, + { + "origin": [-0.13489, 7.3384, -6.83623], + "size": [0.0975, 0, 1.32905], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, -15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [1, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [1, 0]}, + "up": {"uv": [17, 15], "uv_size": [0.25, 1]}, + "down": {"uv": [17, 17], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.03739, 7.3384, -6.49499], + "size": [0.0975, 0, 0.93906], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, -15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "up": {"uv": [0, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 0.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.06011, 7.3384, -6.1781], + "size": [0.0975, 0, 0.62218], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, -15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "up": {"uv": [21, 15], "uv_size": [0.25, 0.5]}, + "down": {"uv": [16, 21.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.15761, 7.3384, -5.86123], + "size": [0.0975, 0, 0.28093], + "pivot": [-0.43582, 7.3384, -6.76926], + "rotation": [-4.03347, -15.75455, 14.55829], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 13], "uv_size": [0.25, 0.25]}, + "down": {"uv": [14, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.14524, 7.14766, -7.70694], + "size": [0.0975, 0, 2.34], + "pivot": [-0.04774, 7.14766, -5.36694], + "rotation": [-3.882, 0.70665, 13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [2, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [2, 0]}, + "up": {"uv": [15, 10], "uv_size": [0.25, 2]}, + "down": {"uv": [15, 14], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.09648, 7.14766, -7.99944], + "size": [0.04874, 0, 0.2925], + "pivot": [-0.04774, 7.14766, -5.36694], + "rotation": [-3.882, 0.70665, 13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 14], "uv_size": [0.25, 0.25]}, + "down": {"uv": [15, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.12085, 7.14766, -7.87755], + "size": [0.02437, 0, 0.17062], + "pivot": [-0.04774, 7.14766, -5.36694], + "rotation": [-3.882, 0.70665, 13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 15], "uv_size": [0.25, 0.25]}, + "down": {"uv": [16, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.14524, 7.14766, -7.80444], + "size": [0.02438, 0, 0.0975], + "pivot": [-0.04774, 7.14766, -5.36694], + "rotation": [-3.882, 0.70665, 13.4135], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [23, 16], "uv_size": [0.25, 0.25]}, + "down": {"uv": [17, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.82774, 7.14766, -5.46444], + "size": [0.6825, 0, 0.0975], + "pivot": [-0.04774, 7.14766, -5.36694], + "rotation": [-3.93685, -4.74655, 13.78715], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "east": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.5, 0]}, + "west": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "up": {"uv": [21, 16], "uv_size": [0.5, 0.25]}, + "down": {"uv": [17, 21.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.96533, 7.33835, -5.44871], + "size": [0.80399, 0.00005, 2.925], + "pivot": [-0.96533, 7.3384, -3.98621], + "rotation": [-1.32711, -5.33796, 13.98352], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "east": {"uv": [0, 0], "uv_size": [2.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "west": {"uv": [0, 0], "uv_size": [2.5, 0]}, + "up": {"uv": [2, 7], "uv_size": [0.75, 2.5]}, + "down": {"uv": [7, 4.5], "uv_size": [0.75, -2.5]} + } + }, + { + "origin": [-0.04874, 7.3384, -8.09723], + "size": [0.0975, 0, 2.73696], + "pivot": [0, 7.3384, -8.09723], + "rotation": [-4.05296, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [2.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [2.25, 0]}, + "up": {"uv": [6, 13], "uv_size": [0.25, 2.25]}, + "down": {"uv": [7, 15.25], "uv_size": [0.25, -2.25]} + } + }, + { + "origin": [-1.19137, 7.33835, -2.51304], + "size": [0.80401, 0.00005, 2.4375], + "pivot": [-1.19137, 7.3384, -1.30647], + "rotation": [-0.96386, -3.88232, 13.95432], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "east": {"uv": [0, 0], "uv_size": [2, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "west": {"uv": [0, 0], "uv_size": [2, 0]}, + "up": {"uv": [4, 9], "uv_size": [0.75, 2]}, + "down": {"uv": [9, 6], "uv_size": [0.75, -2]} + } + }, + { + "origin": [-0.96914, 7.3384, -5.36929], + "size": [0.8775, 0, 2.925], + "pivot": [-0.1404, 7.3384, -3.90679], + "rotation": [0, -5.5, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "east": {"uv": [0, 0], "uv_size": [2.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "west": {"uv": [0, 0], "uv_size": [2.5, 0]}, + "up": {"uv": [3, 7], "uv_size": [0.75, 2.5]}, + "down": {"uv": [7, 7.5], "uv_size": [0.75, -2.5]} + } + }, + { + "origin": [-0.82278, 7.3384, -8.20841], + "size": [0.09512, 0, 2.76642], + "pivot": [-0.82516, 7.3384, -5.44199], + "rotation": [0, -16.25, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [2.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [2.25, 0]}, + "up": {"uv": [8, 13], "uv_size": [0.25, 2.25]}, + "down": {"uv": [9, 15.25], "uv_size": [0.25, -2.25]} + } + }, + { + "origin": [-1.1091, 7.3384, -2.48006], + "size": [0.78, 0, 2.46187], + "pivot": [-0.3291, 9.0934, -2.45569], + "rotation": [0, -4, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "east": {"uv": [0, 0], "uv_size": [2, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "west": {"uv": [0, 0], "uv_size": [2, 0]}, + "up": {"uv": [5, 9], "uv_size": [0.75, 2]}, + "down": {"uv": [9, 8], "uv_size": [0.75, -2]} + } + }, + { + "origin": [-0.04874, 7.3384, -8.09723], + "size": [0.0975, 0, 2.73], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [2.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [2.25, 0]}, + "up": {"uv": [10, 13], "uv_size": [0.25, 2.25]}, + "down": {"uv": [11, 15.25], "uv_size": [0.25, -2.25]} + } + }, + { + "origin": [-0.04874, 7.3384, -8.09723], + "size": [0.0975, 0, 2.73], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [2.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [2.25, 0]}, + "up": {"uv": [12, 13], "uv_size": [0.25, 2.25]}, + "down": {"uv": [13, 15.25], "uv_size": [0.25, -2.25]} + } + }, + { + "origin": [0.09166, 7.3384, -5.36929], + "size": [0.8775, 0, 2.925], + "pivot": [0.1404, 7.3384, -3.90679], + "rotation": [0, 5.5, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "east": {"uv": [0, 0], "uv_size": [2.5, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "west": {"uv": [0, 0], "uv_size": [2.5, 0]}, + "up": {"uv": [8, 0], "uv_size": [0.75, 2.5]}, + "down": {"uv": [8, 5.5], "uv_size": [0.75, -2.5]} + } + }, + { + "origin": [0.72767, 7.3384, -8.20841], + "size": [0.09511, 0, 2.76642], + "pivot": [0.82517, 7.3384, -5.44199], + "rotation": [0, 16.25, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "east": {"uv": [0, 0], "uv_size": [2.25, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.25, 0]}, + "west": {"uv": [0, 0], "uv_size": [2.25, 0]}, + "up": {"uv": [0, 14], "uv_size": [0.25, 2.25]}, + "down": {"uv": [1, 16.25], "uv_size": [0.25, -2.25]} + } + }, + { + "origin": [0.3291, 7.3384, -2.48006], + "size": [0.78, 0, 2.46187], + "pivot": [0.3291, 9.0934, -2.45569], + "rotation": [0, 4, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "east": {"uv": [0, 0], "uv_size": [2, 0]}, + "south": {"uv": [0, 0], "uv_size": [0.75, 0]}, + "west": {"uv": [0, 0], "uv_size": [2, 0]}, + "up": {"uv": [9, 8], "uv_size": [0.75, 2]}, + "down": {"uv": [0, 12], "uv_size": [0.75, -2]} + } + }, + { + "origin": [-0.04874, 7.1134, -5.36723], + "size": [0.0975, 0.42, 0.975], + "uv": { + "north": {"uv": [23, 17], "uv_size": [0.25, 0.25]}, + "east": {"uv": [1, 20], "uv_size": [0.75, 0.25]}, + "south": {"uv": [18, 23], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 1], "uv_size": [0.75, 0.25]}, + "up": {"uv": [2, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 2.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.14624, 7.1434, -3.80723], + "size": [0.2925, 0.39, 1.29188], + "uv": { + "north": {"uv": [23, 18], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 17], "uv_size": [1, 0.25]}, + "south": {"uv": [19, 23], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 18], "uv_size": [1, 0.25]}, + "up": {"uv": [3, 18], "uv_size": [0.25, 1]}, + "down": {"uv": [4, 19], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.615, 7.10059, -0.43475], + "size": [0.4875, 0.47561, 0.4875], + "pivot": [-0.5175, 7.3384, -0.43475], + "rotation": [0, -46, 0], + "uv": { + "north": {"uv": [21, 17], "uv_size": [0.5, 0.25]}, + "east": {"uv": [18, 21], "uv_size": [0.5, 0.25]}, + "south": {"uv": [21, 18], "uv_size": [0.5, 0.25]}, + "west": {"uv": [19, 21], "uv_size": [0.5, 0.25]}, + "up": {"uv": [5, 18.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [5, 18.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.48773, 7.1134, -1.67489], + "size": [0.41437, 0.45, 1.17], + "pivot": [-0.58523, 7.3384, -0.50489], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [23, 19], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 5], "uv_size": [1, 0.25]}, + "south": {"uv": [20, 23], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 18], "uv_size": [1, 0.25]}, + "up": {"uv": [7.25, 19], "uv_size": [-0.25, -1]}, + "down": {"uv": [7.25, 19], "uv_size": [-0.25, -1]} + } + }, + { + "origin": [-1.81676, 7.1562, -0.04581], + "size": [0.975, 0.36439, 0.43874], + "pivot": [-1.23176, 7.3384, 0.39293], + "rotation": [0, -131, 0], + "uv": { + "north": {"uv": [3, 20], "uv_size": [0.75, 0.25]}, + "east": {"uv": [23, 20], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 3], "uv_size": [0.75, 0.25]}, + "west": {"uv": [21, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [20, 4.25], "uv_size": [0.75, -0.25]}, + "down": {"uv": [20, 4.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-1.87763, 7.1434, 0.00477], + "size": [0.39, 0.39, 0.6825], + "pivot": [-1.48763, 7.3384, 0.68727], + "rotation": [0, -144.75, 0], + "uv": { + "north": {"uv": [23, 21], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 19], "uv_size": [0.5, 0.25]}, + "south": {"uv": [22, 23], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 21], "uv_size": [0.5, 0.25]}, + "up": {"uv": [21.25, 21], "uv_size": [-0.25, 0.5]}, + "down": {"uv": [21, 21.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.93448, 7.1434, 0.74209], + "size": [0.195, 0.39, 0.39], + "pivot": [-0.93448, 7.3384, 1.13209], + "rotation": [0, -154.75, 0], + "uv": { + "north": {"uv": [23, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 23], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 0], "uv_size": [0.25, 0.25]}, + "up": {"uv": [1, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 1.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-1.23698, 7.1434, 1.08051], + "size": [0.2925, 0.39, 0.585], + "pivot": [-0.94448, 7.3384, 1.56801], + "rotation": [0, -164.75, 0], + "uv": { + "north": {"uv": [2, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [0, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [24, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 0], "uv_size": [0.5, 0.25]}, + "up": {"uv": [1, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 1.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.53405, 7.1434, 0.7914], + "size": [0.2925, 0.39, 1.17], + "pivot": [-0.53405, 7.3384, 1.9614], + "rotation": [0, -179.75, 0], + "uv": { + "north": {"uv": [3, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 18], "uv_size": [1, 0.25]}, + "south": {"uv": [24, 3], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 8], "uv_size": [1, 0.25]}, + "up": {"uv": [18, 9], "uv_size": [0.25, 1]}, + "down": {"uv": [18, 11], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-1.82537, 7.14396, -2.88867], + "size": [1.51012, 0.38888, 5.04451], + "inflate": -0.001, + "pivot": [-0.53405, 7.3384, 1.9614], + "rotation": [0, 180, 0], + "uv": { + "north": {"uv": [17, 0], "uv_size": [1.25, 0.25]}, + "east": {"uv": [10, 0], "uv_size": [4.25, 0.25]}, + "south": {"uv": [17, 1], "uv_size": [1.25, 0.25]}, + "west": {"uv": [10, 1], "uv_size": [4.25, 0.25]}, + "up": {"uv": [3.25, 4.25], "uv_size": [-1.25, -4.25]}, + "down": {"uv": [2, 4.25], "uv_size": [1.25, -4.25]} + } + }, + { + "origin": [-1.92343, 7.09465, 1.20577], + "size": [1.70624, 0.4875, 0.56063], + "pivot": [-0.53405, 7.28965, 1.9614], + "rotation": [0, 180, 0], + "uv": { + "north": {"uv": [12, 2], "uv_size": [1.5, 0.5]}, + "east": {"uv": [11, 18], "uv_size": [0.5, 0.5]}, + "south": {"uv": [12, 3], "uv_size": [1.5, 0.5]}, + "west": {"uv": [18, 11], "uv_size": [0.5, 0.5]}, + "up": {"uv": [13.5, 4.5], "uv_size": [-1.5, -0.5]}, + "down": {"uv": [12, 4.5], "uv_size": [1.5, -0.5]} + } + }, + { + "origin": [-2.02653, 7.08905, 2.46767], + "size": [1.91244, 0.4987, 0.57183], + "inflate": 0.01, + "pivot": [-0.53405, 7.28965, 3.2289], + "rotation": [0, 180, 0], + "uv": { + "north": {"uv": [12, 5], "uv_size": [1.5, 0.5]}, + "east": {"uv": [12, 18], "uv_size": [0.5, 0.5]}, + "south": {"uv": [6, 12], "uv_size": [1.5, 0.5]}, + "west": {"uv": [18, 12], "uv_size": [0.5, 0.5]}, + "up": {"uv": [11.75, 7.5], "uv_size": [-1.75, -0.5]}, + "down": {"uv": [12, 7.5], "uv_size": [1.5, -0.5]} + } + }, + { + "origin": [-2.09965, 7.08905, 4.41767], + "size": [2.0587, 0.4987, 0.57183], + "inflate": 0.01, + "pivot": [-0.53405, 7.28965, 5.1789], + "rotation": [0, 180, 0], + "uv": { + "north": {"uv": [1, 10], "uv_size": [1.75, 0.5]}, + "east": {"uv": [13, 18], "uv_size": [0.5, 0.5]}, + "south": {"uv": [10, 2], "uv_size": [1.75, 0.5]}, + "west": {"uv": [18, 13], "uv_size": [0.5, 0.5]}, + "up": {"uv": [11.75, 4.5], "uv_size": [-1.75, -0.5]}, + "down": {"uv": [10, 4.5], "uv_size": [1.75, -0.5]} + } + }, + { + "origin": [-1.97219, 7.09465, 1.98577], + "size": [1.755, 0.4875, 0.56063], + "pivot": [-0.53405, 7.28965, 2.7414], + "rotation": [0, 177.5, 0], + "uv": { + "north": {"uv": [8, 12], "uv_size": [1.5, 0.5]}, + "east": {"uv": [14, 18], "uv_size": [0.5, 0.5]}, + "south": {"uv": [12, 8], "uv_size": [1.5, 0.5]}, + "west": {"uv": [18, 14], "uv_size": [0.5, 0.5]}, + "up": {"uv": [11.5, 12.5], "uv_size": [-1.5, -0.5]}, + "down": {"uv": [10, 12.5], "uv_size": [1.5, -0.5]} + } + }, + { + "origin": [-1.07278, 7.08905, 4.41623], + "size": [2.10746, 0.4987, 0.57183], + "inflate": 0.01, + "pivot": [-0.01904, 7.3384, 4.70215], + "rotation": [0, -172.5, 0], + "uv": { + "north": {"uv": [10, 5], "uv_size": [1.75, 0.5]}, + "east": {"uv": [15, 18], "uv_size": [0.5, 0.5]}, + "south": {"uv": [6, 10], "uv_size": [1.75, 0.5]}, + "west": {"uv": [18, 15], "uv_size": [0.5, 0.5]}, + "up": {"uv": [11.75, 7.5], "uv_size": [-1.75, -0.5]}, + "down": {"uv": [10, 7.5], "uv_size": [1.75, -0.5]} + } + }, + { + "origin": [-0.9697, 7.09465, 3.93541], + "size": [1.99876, 0.4875, 0.56062], + "pivot": [0.0053, 7.3384, 4.21571], + "rotation": [0, -177.5, 0], + "uv": { + "north": {"uv": [8, 10], "uv_size": [1.75, 0.5]}, + "east": {"uv": [16, 18], "uv_size": [0.5, 0.5]}, + "south": {"uv": [10, 8], "uv_size": [1.75, 0.5]}, + "west": {"uv": [18, 16], "uv_size": [0.5, 0.5]}, + "up": {"uv": [11.75, 10.5], "uv_size": [-1.75, -0.5]}, + "down": {"uv": [10, 10.5], "uv_size": [1.75, -0.5]} + } + }, + { + "origin": [-1.01807, 7.09465, 5.78367], + "size": [1.99874, 0.4875, 0.56063], + "pivot": [-0.01871, 7.3384, 6.06399], + "rotation": [0, 170, 0], + "uv": { + "north": {"uv": [1, 11], "uv_size": [1.75, 0.5]}, + "east": {"uv": [17, 18], "uv_size": [0.5, 0.5]}, + "south": {"uv": [3, 11], "uv_size": [1.75, 0.5]}, + "west": {"uv": [18, 17], "uv_size": [0.5, 0.5]}, + "up": {"uv": [8.75, 11.5], "uv_size": [-1.75, -0.5]}, + "down": {"uv": [7, 11.5], "uv_size": [1.75, -0.5]} + } + }, + { + "origin": [-1.01846, 7.09465, 4.83675], + "size": [2.07188, 0.4875, 0.56062], + "pivot": [0.01747, 7.3384, 5.11707], + "rotation": [0, 177.5, 0], + "uv": { + "north": {"uv": [9, 11], "uv_size": [1.75, 0.5]}, + "east": {"uv": [18, 18], "uv_size": [0.5, 0.5]}, + "south": {"uv": [11, 11], "uv_size": [1.75, 0.5]}, + "west": {"uv": [0, 19], "uv_size": [0.5, 0.5]}, + "up": {"uv": [3.75, 12.5], "uv_size": [-1.75, -0.5]}, + "down": {"uv": [2, 12.5], "uv_size": [1.75, -0.5]} + } + }, + { + "origin": [-0.85653, 7.08905, 2.5408], + "size": [1.71744, 0.4987, 0.57182], + "inflate": 0.01, + "pivot": [0.0022, 7.3384, 2.82672], + "rotation": [0, -172.5, 0], + "uv": { + "north": {"uv": [12, 10], "uv_size": [1.5, 0.5]}, + "east": {"uv": [19, 0], "uv_size": [0.5, 0.5]}, + "south": {"uv": [12, 12], "uv_size": [1.5, 0.5]}, + "west": {"uv": [1, 19], "uv_size": [0.5, 0.5]}, + "up": {"uv": [3.5, 13.5], "uv_size": [-1.5, -0.5]}, + "down": {"uv": [2, 13.5], "uv_size": [1.5, -0.5]} + } + }, + { + "origin": [-0.46037, 7.14396, 5.86196], + "size": [0.92512, 0.38888, 0.60825], + "inflate": -0.001, + "pivot": [0.0022, 7.3384, 6.6414], + "rotation": [0, 180, 0], + "uv": { + "north": {"uv": [5, 20], "uv_size": [0.75, 0.25]}, + "east": {"uv": [2, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [20, 5], "uv_size": [0.75, 0.25]}, + "west": {"uv": [22, 2], "uv_size": [0.5, 0.25]}, + "up": {"uv": [13.75, 11.5], "uv_size": [-0.75, -0.5]}, + "down": {"uv": [13, 11.5], "uv_size": [0.75, -0.5]} + } + }, + { + "origin": [-0.52895, 7.1434, 1.57139], + "size": [0.2925, 0.39, 1.56], + "pivot": [-0.52895, 7.3384, 3.13139], + "rotation": [0, 173, 0], + "uv": { + "north": {"uv": [4, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 2], "uv_size": [1.25, 0.25]}, + "south": {"uv": [24, 4], "uv_size": [0.25, 0.25]}, + "west": {"uv": [17, 3], "uv_size": [1.25, 0.25]}, + "up": {"uv": [1, 17], "uv_size": [0.25, 1.25]}, + "down": {"uv": [17, 5.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-1.30188, 7.1434, 3.86412], + "size": [0.2925, 0.39, 0.78], + "pivot": [-1.00938, 7.3384, 4.64412], + "rotation": [0, 178.75, 0], + "uv": { + "north": {"uv": [5, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 20], "uv_size": [0.75, 0.25]}, + "south": {"uv": [24, 5], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 6], "uv_size": [0.75, 0.25]}, + "up": {"uv": [7, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 7.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-1.3189, 7.1434, 4.25393], + "size": [0.2925, 0.39, 1.17], + "pivot": [-1.0264, 7.3384, 5.42393], + "rotation": [0, -171.25, 0], + "uv": { + "north": {"uv": [6, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 1], "uv_size": [1, 0.25]}, + "south": {"uv": [24, 6], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 2], "uv_size": [0.25, 1]}, + "down": {"uv": [3, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-1.14092, 7.1434, 5.99531], + "size": [0.2925, 0.39, 0.585], + "pivot": [-0.84842, 7.3384, 6.58031], + "rotation": [0, -158.75, 0], + "uv": { + "north": {"uv": [7, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [3, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [24, 7], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 3], "uv_size": [0.5, 0.25]}, + "up": {"uv": [4, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 4.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.92888, 7.1434, 6.73553], + "size": [0.2925, 0.39, 0.39], + "pivot": [-0.63638, 7.3384, 7.12553], + "rotation": [0, -151.25, 0], + "uv": { + "north": {"uv": [8, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 8], "uv_size": [0.25, 0.25]}, + "south": {"uv": [9, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 9], "uv_size": [0.25, 0.25]}, + "up": {"uv": [10, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 10.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.96569, 7.1434, -0.29109], + "size": [0.46314, 0.39, 0.6825], + "pivot": [-0.86819, 7.3384, -0.09609], + "rotation": [0, -73.5, 0], + "uv": { + "north": {"uv": [5, 22], "uv_size": [0.5, 0.25]}, + "east": {"uv": [22, 5], "uv_size": [0.5, 0.25]}, + "south": {"uv": [6, 22], "uv_size": [0.5, 0.25]}, + "west": {"uv": [22, 6], "uv_size": [0.5, 0.25]}, + "up": {"uv": [4, 19], "uv_size": [0.5, 0.5]}, + "down": {"uv": [4, 19.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [0.63638, 7.1434, 6.73553], + "size": [0.2925, 0.39, 0.39], + "pivot": [0.63638, 7.3384, 7.12553], + "rotation": [0, 151.25, 0], + "uv": { + "north": {"uv": [11, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 11], "uv_size": [0.25, 0.25]}, + "south": {"uv": [12, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 12], "uv_size": [0.25, 0.25]}, + "up": {"uv": [13, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 13.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.44881, 7.1434, 7.07746], + "size": [0.2925, 0.39, 0.39], + "pivot": [0.44881, 7.3384, 7.46746], + "rotation": [0, 128.75, 0], + "uv": { + "north": {"uv": [14, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 14], "uv_size": [0.25, 0.25]}, + "south": {"uv": [15, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 15], "uv_size": [0.25, 0.25]}, + "up": {"uv": [16, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 16.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.14466, 7.1434, 7.42225], + "size": [0.2925, 0.39, 0.28932], + "pivot": [0.14466, 7.3384, 7.71157], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [17, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 17], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 18], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 19.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.74131, 7.1434, 7.07746], + "size": [0.2925, 0.39, 0.39], + "pivot": [-0.44881, 7.3384, 7.46746], + "rotation": [0, -128.75, 0], + "uv": { + "north": {"uv": [20, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 20], "uv_size": [0.25, 0.25]}, + "south": {"uv": [21, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [22, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 22.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.84842, 7.1434, 5.99531], + "size": [0.2925, 0.39, 0.585], + "pivot": [0.84842, 7.3384, 6.58031], + "rotation": [0, 158.75, 0], + "uv": { + "north": {"uv": [23, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [24, 23], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 7], "uv_size": [0.5, 0.25]}, + "up": {"uv": [8, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 8.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [1.02641, 7.1434, 4.25393], + "size": [0.2925, 0.39, 1.17], + "pivot": [1.02641, 7.3384, 5.42393], + "rotation": [0, 171.25, 0], + "uv": { + "north": {"uv": [24, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 4], "uv_size": [1, 0.25]}, + "south": {"uv": [0, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 5], "uv_size": [0.25, 1]}, + "down": {"uv": [6, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [1.00938, 7.1434, 3.86412], + "size": [0.2925, 0.39, 0.78], + "pivot": [1.00938, 7.3384, 4.64412], + "rotation": [0, -178.75, 0], + "uv": { + "north": {"uv": [25, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 20], "uv_size": [0.75, 0.25]}, + "south": {"uv": [1, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 8], "uv_size": [0.75, 0.25]}, + "up": {"uv": [9, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 9.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.23645, 7.1434, 1.57139], + "size": [0.2925, 0.39, 1.56], + "pivot": [0.52895, 7.3384, 3.13139], + "rotation": [0, -173, 0], + "uv": { + "north": {"uv": [25, 1], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 17], "uv_size": [1.25, 0.25]}, + "south": {"uv": [2, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [17, 7], "uv_size": [1.25, 0.25]}, + "up": {"uv": [9, 17], "uv_size": [0.25, 1.25]}, + "down": {"uv": [10, 18.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.24155, 7.1434, 0.7914], + "size": [0.2925, 0.39, 1.17], + "pivot": [0.53405, 7.3384, 1.9614], + "rotation": [0, 179.75, 0], + "uv": { + "north": {"uv": [25, 2], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 6], "uv_size": [1, 0.25]}, + "south": {"uv": [3, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [7, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 7], "uv_size": [0.25, 1]}, + "down": {"uv": [8, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.94448, 7.1434, 1.08051], + "size": [0.2925, 0.39, 0.585], + "pivot": [0.94448, 7.3384, 1.56801], + "rotation": [0, 164.75, 0], + "uv": { + "north": {"uv": [25, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [4, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 9], "uv_size": [0.5, 0.25]}, + "up": {"uv": [10, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22.25, 10.5], "uv_size": [-0.25, -0.5]} + } + }, + { + "origin": [0.73948, 7.1434, 0.74209], + "size": [0.195, 0.39, 0.39], + "pivot": [0.93448, 7.3384, 1.13209], + "rotation": [0, 154.75, 0], + "uv": { + "north": {"uv": [25, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 5], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 6], "uv_size": [0.25, 0.25]}, + "down": {"uv": [7, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [1.48763, 7.1434, 0.00477], + "size": [0.39, 0.39, 0.6825], + "pivot": [1.48763, 7.3384, 0.68727], + "rotation": [0, 144.75, 0], + "uv": { + "north": {"uv": [25, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [8, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 11], "uv_size": [0.5, 0.25]}, + "up": {"uv": [22, 12], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 12.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.84176, 7.1562, -0.04581], + "size": [0.975, 0.36439, 0.43874], + "pivot": [1.23176, 7.3384, 0.39293], + "rotation": [0, 131, 0], + "uv": { + "north": {"uv": [10, 20], "uv_size": [0.75, 0.25]}, + "east": {"uv": [25, 8], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 10], "uv_size": [0.75, 0.25]}, + "west": {"uv": [9, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [20, 11], "uv_size": [0.75, 0.25]}, + "down": {"uv": [20, 11.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [0.50256, 7.1434, -0.29109], + "size": [0.46313, 0.39, 0.6825], + "pivot": [0.86819, 7.3384, -0.09609], + "rotation": [0, 73.5, 0], + "uv": { + "north": {"uv": [13, 22], "uv_size": [0.5, 0.25]}, + "east": {"uv": [22, 13], "uv_size": [0.5, 0.25]}, + "south": {"uv": [14, 22], "uv_size": [0.5, 0.25]}, + "west": {"uv": [22, 14], "uv_size": [0.5, 0.25]}, + "up": {"uv": [9.5, 19.5], "uv_size": [-0.5, -0.5]}, + "down": {"uv": [9, 19.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [0.1275, 7.10059, -0.43475], + "size": [0.4875, 0.47561, 0.4875], + "pivot": [0.5175, 7.3384, -0.43475], + "rotation": [0, 46, 0], + "uv": { + "north": {"uv": [15, 22], "uv_size": [0.5, 0.25]}, + "east": {"uv": [22, 15], "uv_size": [0.5, 0.25]}, + "south": {"uv": [16, 22], "uv_size": [0.5, 0.25]}, + "west": {"uv": [22, 16], "uv_size": [0.5, 0.25]}, + "up": {"uv": [10, 19], "uv_size": [0.5, 0.5]}, + "down": {"uv": [10, 19.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.04874, 7.1434, -5.36723], + "size": [0.0975, 0.39, 0.8775], + "pivot": [0.04876, 8.8984, -5.36723], + "rotation": [0, 5.5, 0], + "uv": { + "north": {"uv": [25, 9], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 20], "uv_size": [0.75, 0.25]}, + "south": {"uv": [10, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 12], "uv_size": [0.75, 0.25]}, + "up": {"uv": [13, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 13.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.1468, 7.14284, -4.49029], + "size": [0.19612, 0.39112, 2.04862], + "inflate": 0.001, + "pivot": [0.04876, 8.8984, -5.36723], + "rotation": [0, 5.5, 0], + "uv": { + "north": {"uv": [25, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 16], "uv_size": [1.75, 0.25]}, + "south": {"uv": [11, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 6], "uv_size": [1.75, 0.25]}, + "up": {"uv": [16, 7], "uv_size": [0.25, 1.75]}, + "down": {"uv": [8, 17.75], "uv_size": [0.25, -1.75]} + } + }, + { + "origin": [0.13354, 7.14284, -2.45625], + "size": [0.19612, 0.39112, 1.293], + "inflate": 0.001, + "pivot": [0.3291, 8.8984, -2.45569], + "rotation": [0, 4, 0], + "uv": { + "north": {"uv": [25, 11], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 10], "uv_size": [1, 0.25]}, + "south": {"uv": [12, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [11, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 11], "uv_size": [0.25, 1]}, + "down": {"uv": [12, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.2222, 7.14284, -1.18504], + "size": [0.19612, 0.39112, 0.4155], + "inflate": 0.001, + "pivot": [0.32026, 8.8984, -1.18448], + "rotation": [0, 9.5, 0], + "uv": { + "north": {"uv": [25, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 13], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 14], "uv_size": [0.25, 0.25]}, + "down": {"uv": [15, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.28656, 7.14284, -0.80039], + "size": [0.19612, 0.39112, 0.2205], + "inflate": 0.001, + "pivot": [0.38462, 8.8984, -0.79983], + "rotation": [0, 15, 0], + "uv": { + "north": {"uv": [25, 15], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 16], "uv_size": [0.25, 0.25]}, + "west": {"uv": [17, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 17], "uv_size": [0.25, 0.25]}, + "down": {"uv": [18, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.33702, 7.14284, -0.61203], + "size": [0.19612, 0.39112, 0.22049], + "inflate": 0.001, + "pivot": [0.43508, 8.8984, -0.61147], + "rotation": [0, 25, 0], + "uv": { + "north": {"uv": [25, 18], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 19], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 20], "uv_size": [0.25, 0.25]}, + "down": {"uv": [21, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0493, 7.11284, -4.49029], + "size": [0.19612, 0.42112, 2.04862], + "inflate": 0.001, + "pivot": [-0.04874, 8.8984, -5.36723], + "rotation": [0, -5.5, 0], + "uv": { + "north": {"uv": [25, 21], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 16], "uv_size": [1.75, 0.25]}, + "south": {"uv": [22, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 9], "uv_size": [1.75, 0.25]}, + "up": {"uv": [16, 10], "uv_size": [0.25, 1.75]}, + "down": {"uv": [11, 17.75], "uv_size": [0.25, -1.75]} + } + }, + { + "origin": [-0.53314, 7.14284, -0.61203], + "size": [0.19612, 0.39112, 0.22049], + "inflate": 0.001, + "pivot": [-0.43508, 8.8984, -0.61147], + "rotation": [0, -25, 0], + "uv": { + "north": {"uv": [25, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 23], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [25, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.41832, 7.14284, -1.18504], + "size": [0.19612, 0.39112, 0.4155], + "inflate": 0.001, + "pivot": [-0.32026, 8.8984, -1.18448], + "rotation": [0, -9.5, 0], + "uv": { + "north": {"uv": [0, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 0], "uv_size": [0.25, 0.25]}, + "south": {"uv": [1, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 1], "uv_size": [0.25, 0.25]}, + "up": {"uv": [2, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 2.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.48267, 7.14284, -0.80039], + "size": [0.19612, 0.39112, 0.2205], + "inflate": 0.001, + "pivot": [-0.38461, 8.8984, -0.79983], + "rotation": [0, -15, 0], + "uv": { + "north": {"uv": [3, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 3], "uv_size": [0.25, 0.25]}, + "south": {"uv": [4, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 4], "uv_size": [0.25, 0.25]}, + "up": {"uv": [5, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 5.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.32966, 7.14284, -2.45625], + "size": [0.19612, 0.39112, 1.293], + "inflate": 0.001, + "pivot": [-0.3291, 8.8984, -2.45569], + "rotation": [0, -4, 0], + "uv": { + "north": {"uv": [6, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 12], "uv_size": [1, 0.25]}, + "south": {"uv": [26, 6], "uv_size": [0.25, 0.25]}, + "west": {"uv": [13, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 13], "uv_size": [0.25, 1]}, + "down": {"uv": [14, 20], "uv_size": [0.25, -1]} + } + } + ] + }, + { + "name": "octagon", + "parent": "weapon", + "pivot": [0, 10.9384, 0.97027], + "cubes": [ + { + "origin": [-0.40441, 7.14284, -0.00529], + "size": [0.80882, 0.39112, 0.19612], + "inflate": 0.001, + "pivot": [0, 7.3384, 0.97027], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [14, 20], "uv_size": [0.75, 0.25]}, + "east": {"uv": [7, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 14], "uv_size": [0.75, 0.25]}, + "west": {"uv": [26, 7], "uv_size": [0.25, 0.25]}, + "up": {"uv": [15, 20], "uv_size": [0.75, 0.25]}, + "down": {"uv": [20, 15.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.40441, 7.14284, -0.00529], + "size": [0.80882, 0.39112, 0.19612], + "inflate": 0.001, + "uv": { + "north": {"uv": [16, 20], "uv_size": [0.75, 0.25]}, + "east": {"uv": [8, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 16], "uv_size": [0.75, 0.25]}, + "west": {"uv": [26, 8], "uv_size": [0.25, 0.25]}, + "up": {"uv": [17, 20], "uv_size": [0.75, 0.25]}, + "down": {"uv": [20, 17.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.40441, 7.14284, 1.74971], + "size": [0.80882, 0.39112, 0.19612], + "inflate": 0.001, + "pivot": [0, 7.3384, 0.97027], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [18, 20], "uv_size": [0.75, 0.25]}, + "east": {"uv": [9, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 18], "uv_size": [0.75, 0.25]}, + "west": {"uv": [26, 9], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 20], "uv_size": [0.75, 0.25]}, + "down": {"uv": [20, 19.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.40441, 7.14284, 1.74971], + "size": [0.80882, 0.39112, 0.19612], + "inflate": 0.001, + "uv": { + "north": {"uv": [20, 20], "uv_size": [0.75, 0.25]}, + "east": {"uv": [10, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 21], "uv_size": [0.75, 0.25]}, + "west": {"uv": [26, 10], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 0], "uv_size": [0.75, 0.25]}, + "down": {"uv": [1, 21.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [0.77944, 7.14284, 0.56585], + "size": [0.19612, 0.39112, 0.80884], + "inflate": 0.001, + "pivot": [0, 7.3384, 0.97027], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [11, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 1], "uv_size": [0.75, 0.25]}, + "south": {"uv": [26, 11], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 21], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 2], "uv_size": [0.25, 0.75]}, + "down": {"uv": [3, 21.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.77944, 7.13003, 0.56585], + "size": [0.19612, 0.41673, 0.80884], + "inflate": 0.001, + "uv": { + "north": {"uv": [12, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 3], "uv_size": [0.75, 0.25]}, + "south": {"uv": [26, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [4, 21], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 4], "uv_size": [0.25, 0.75]}, + "down": {"uv": [5, 21.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.97556, 7.14284, 0.56585], + "size": [0.19612, 0.39112, 0.80884], + "inflate": 0.001, + "pivot": [0, 7.3384, 0.97027], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [13, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 5], "uv_size": [0.75, 0.25]}, + "south": {"uv": [26, 13], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 21], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 6], "uv_size": [0.25, 0.75]}, + "down": {"uv": [7, 21.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.97556, 7.14284, 0.56585], + "size": [0.19612, 0.39112, 0.80884], + "inflate": 0.001, + "uv": { + "north": {"uv": [14, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 7], "uv_size": [0.75, 0.25]}, + "south": {"uv": [26, 14], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 21], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 8], "uv_size": [0.25, 0.75]}, + "down": {"uv": [9, 21.75], "uv_size": [0.25, -0.75]} + } + } + ] + }, + { + "name": "octagon2", + "parent": "weapon", + "pivot": [0, 10.9384, -0.58973], + "cubes": [ + { + "origin": [-0.1206, 7.14396, -0.97917], + "size": [0.26558, 0.38888, 0.19388], + "inflate": -0.001, + "pivot": [0, 7.3384, -0.58973], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [15, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 15], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 16], "uv_size": [0.25, 0.25]}, + "up": {"uv": [17, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 17.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3156, 7.11396, -1.05228], + "size": [0.63121, 0.44888, 0.267], + "inflate": -0.001, + "uv": { + "north": {"uv": [17, 22], "uv_size": [0.5, 0.25]}, + "east": {"uv": [18, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [22, 17], "uv_size": [0.5, 0.25]}, + "west": {"uv": [26, 18], "uv_size": [0.25, 0.25]}, + "up": {"uv": [18, 22], "uv_size": [0.5, 0.25]}, + "down": {"uv": [22, 18.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.1206, 7.11396, -0.39417], + "size": [0.24121, 0.44888, 0.22388], + "inflate": -0.001, + "pivot": [0, 7.3384, -0.58973], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [19, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 20], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1206, 7.14396, -0.39417], + "size": [0.24121, 0.38888, 0.09638], + "inflate": -0.001, + "uv": { + "north": {"uv": [22, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 22], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [24, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 24.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.19556, 7.11396, -0.71032], + "size": [0.29138, 0.44888, 0.2712], + "inflate": -0.001, + "pivot": [0, 7.3384, -0.58973], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [25, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [26, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 0], "uv_size": [0.25, 0.25]}, + "down": {"uv": [1, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.19556, 7.14396, -0.71032], + "size": [0.29138, 0.38888, 0.3387], + "inflate": -0.001, + "uv": { + "north": {"uv": [27, 1], "uv_size": [0.25, 0.25]}, + "east": {"uv": [2, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [3, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 3], "uv_size": [0.25, 0.25]}, + "down": {"uv": [4, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.38944, 7.14396, -0.71032], + "size": [0.19388, 0.38888, 0.26556], + "inflate": -0.001, + "pivot": [0, 7.3384, -0.58973], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [27, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 5], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 6], "uv_size": [0.25, 0.25]}, + "down": {"uv": [7, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.48694, 7.14396, -0.71032], + "size": [0.29138, 0.38888, 0.3387], + "inflate": -0.001, + "uv": { + "north": {"uv": [27, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 8], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 9], "uv_size": [0.25, 0.25]}, + "down": {"uv": [10, 27.25], "uv_size": [0.25, -0.25]} + } + } + ] + }, + { + "name": "octagon3", + "parent": "weapon", + "pivot": [0, 11.21171, -1.27223], + "cubes": [ + { + "origin": [-0.09668, 7.14396, -1.55473], + "size": [0.19335, 0.38888, 0.12626], + "inflate": -0.001, + "pivot": [0, 7.61171, -1.27223], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [27, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 11], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 12], "uv_size": [0.25, 0.25]}, + "down": {"uv": [13, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.21856, 7.14396, -1.65223], + "size": [0.43712, 0.38888, 0.22376], + "inflate": -0.001, + "uv": { + "north": {"uv": [27, 13], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 14], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 15], "uv_size": [0.25, 0.25]}, + "down": {"uv": [16, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09668, 7.14396, -1.11598], + "size": [0.19335, 0.38888, 0.175], + "inflate": -0.001, + "pivot": [0, 7.61171, -1.27223], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [27, 16], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 17], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 18], "uv_size": [0.25, 0.25]}, + "down": {"uv": [19, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09668, 7.14396, -1.11598], + "size": [0.19335, 0.38888, 0.0775], + "inflate": -0.001, + "uv": { + "north": {"uv": [27, 19], "uv_size": [0.25, 0.25]}, + "east": {"uv": [20, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 20], "uv_size": [0.25, 0.25]}, + "west": {"uv": [21, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 21], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.15625, 7.14396, -1.3689], + "size": [0.175, 0.38888, 0.19336], + "inflate": -0.001, + "pivot": [0, 7.61171, -1.27223], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [27, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 23], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [25, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.15625, 7.14396, -1.3689], + "size": [0.0775, 0.38888, 0.19336], + "inflate": -0.001, + "uv": { + "north": {"uv": [27, 25], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [27, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 0.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.2825, 7.14396, -1.3689], + "size": [0.12625, 0.38888, 0.19336], + "inflate": -0.001, + "pivot": [0, 7.61171, -1.27223], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [1, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 1], "uv_size": [0.25, 0.25]}, + "south": {"uv": [2, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 2], "uv_size": [0.25, 0.25]}, + "up": {"uv": [3, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 3.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.23375, 7.14396, -1.3689], + "size": [0.0775, 0.38888, 0.19336], + "inflate": -0.001, + "uv": { + "north": {"uv": [4, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 4], "uv_size": [0.25, 0.25]}, + "south": {"uv": [5, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 5], "uv_size": [0.25, 0.25]}, + "up": {"uv": [6, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 6.25], "uv_size": [0.25, -0.25]} + } + } + ] + }, + { + "name": "octagon4", + "parent": "weapon", + "pivot": [0, 11.11836, -1.83284], + "cubes": [ + { + "origin": [-0.07755, 7.14396, -2.0688], + "size": [0.1551, 0.38888, 0.11115], + "inflate": -0.001, + "pivot": [0, 7.51836, -1.83284], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [7, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 7], "uv_size": [0.25, 0.25]}, + "south": {"uv": [8, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 8], "uv_size": [0.25, 0.25]}, + "up": {"uv": [9, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 9.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.17505, 7.14396, -2.23943], + "size": [0.3501, 0.38888, 0.28178], + "inflate": -0.001, + "uv": { + "north": {"uv": [10, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 10], "uv_size": [0.25, 0.25]}, + "south": {"uv": [11, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 11], "uv_size": [0.25, 0.25]}, + "up": {"uv": [12, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 12.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.07755, 7.14396, -1.70805], + "size": [0.1551, 0.38888, 0.1599], + "inflate": -0.001, + "pivot": [0, 7.51836, -1.83284], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [13, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 13], "uv_size": [0.25, 0.25]}, + "south": {"uv": [14, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 14], "uv_size": [0.25, 0.25]}, + "up": {"uv": [15, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 15.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.07755, 7.14396, -1.70805], + "size": [0.1551, 0.38888, 0.0624], + "inflate": -0.001, + "uv": { + "north": {"uv": [16, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 16], "uv_size": [0.25, 0.25]}, + "south": {"uv": [17, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 17], "uv_size": [0.25, 0.25]}, + "up": {"uv": [18, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 18.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1248, 7.14396, -1.91039], + "size": [0.15991, 0.38888, 0.15507], + "inflate": -0.001, + "pivot": [0, 7.51836, -1.83284], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [19, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 20], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1248, 7.14396, -1.91039], + "size": [0.06241, 0.38888, 0.15507], + "inflate": -0.001, + "uv": { + "north": {"uv": [22, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 22], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [24, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 24.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.23595, 7.14396, -1.91039], + "size": [0.11115, 0.38888, 0.15507], + "inflate": -0.001, + "pivot": [0, 7.51836, -1.83284], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [25, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [26, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 26], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1872, 7.14396, -1.91039], + "size": [0.06241, 0.38888, 0.15507], + "inflate": -0.001, + "uv": { + "north": {"uv": [28, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [0, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 0], "uv_size": [0.25, 0.25]}, + "west": {"uv": [1, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 1], "uv_size": [0.25, 0.25]}, + "down": {"uv": [2, 29.25], "uv_size": [0.25, -0.25]} + } + } + ] + }, + { + "name": "octagon5", + "parent": "weapon", + "pivot": [0, 11.04369, -2.3691], + "cubes": [ + { + "origin": [-0.06222, 7.14396, -2.56781], + "size": [0.12446, 0.38888, 0.09908], + "inflate": -0.001, + "pivot": [0, 7.44369, -2.3691], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [29, 2], "uv_size": [0.25, 0.25]}, + "east": {"uv": [3, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 3], "uv_size": [0.25, 0.25]}, + "west": {"uv": [4, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 4], "uv_size": [0.25, 0.25]}, + "down": {"uv": [5, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.06222, 7.14396, -2.51907], + "size": [0.12446, 0.38888, 0.05034], + "inflate": -0.001, + "uv": { + "north": {"uv": [29, 5], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 6], "uv_size": [0.25, 0.25]}, + "west": {"uv": [7, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 7], "uv_size": [0.25, 0.25]}, + "down": {"uv": [8, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.06222, 7.14396, -2.26947], + "size": [0.12446, 0.38888, 0.14784], + "inflate": -0.001, + "pivot": [0, 7.44369, -2.3691], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [29, 8], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 9], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 10], "uv_size": [0.25, 0.25]}, + "down": {"uv": [11, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.06222, 7.14396, -2.26947], + "size": [0.12446, 0.38888, 0.05034], + "inflate": -0.001, + "uv": { + "north": {"uv": [29, 11], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [13, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 13], "uv_size": [0.25, 0.25]}, + "down": {"uv": [14, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09963, 7.14396, -2.43132], + "size": [0.14784, 0.38888, 0.12446], + "inflate": -0.001, + "pivot": [0, 7.44369, -2.3691], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [29, 14], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 15], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 16], "uv_size": [0.25, 0.25]}, + "down": {"uv": [17, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09963, 7.14396, -2.43132], + "size": [0.05034, 0.38888, 0.12446], + "inflate": -0.001, + "uv": { + "north": {"uv": [29, 17], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [19, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 19], "uv_size": [0.25, 0.25]}, + "down": {"uv": [20, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.24747, 7.14396, -2.43132], + "size": [0.14784, 0.38888, 0.12446], + "inflate": -0.001, + "pivot": [0, 7.44369, -2.3691], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [29, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 21], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [23, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.14997, 7.14396, -2.43132], + "size": [0.05034, 0.38888, 0.12446], + "inflate": -0.001, + "uv": { + "north": {"uv": [29, 23], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [25, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 25], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 29.25], "uv_size": [0.25, -0.25]} + } + } + ] + }, + { + "name": "constraint", + "parent": "bone", + "pivot": [-0.01558, 8.125, 1.9375] + }, + { + "name": "lefthand", + "parent": "bone", + "pivot": [-6, 19, 0] + }, + { + "name": "lefthand_pos", + "parent": "lefthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [-7, 8, -2], + "size": [3, 12, 4], + "uv": { + "north": {"uv": [23.228, 0], "uv_size": [8.114, 24]}, + "east": {"uv": [7, 24], "uv_size": [8.114, 24]}, + "south": {"uv": [15.114, 24], "uv_size": [8.114, 24]}, + "west": {"uv": [23.228, 24], "uv_size": [8.114, 24]}, + "up": {"uv": [31.342, 16], "uv_size": [8.114, 8]}, + "down": {"uv": [31.342, 32], "uv_size": [8.114, -8]} + } + } + ] + }, + { + "name": "camera", + "pivot": [3.4563, 3.4656, -0.7687] + }, + { + "name": "view", + "pivot": [0, 0, 0] + }, + { + "name": "refit_view", + "parent": "view", + "pivot": [22.475, 5.55, 0.2], + "rotation": [0, 90, 0] + }, + { + "name": "iron_view", + "parent": "view", + "pivot": [-0.15326, 9.42188, 6.93493], + "rotation": [0, -1, 0] + }, + { + "name": "idle_view", + "parent": "view", + "pivot": [3.4563, 3.4656, -0.7687] + }, + { + "name": "positioning", + "pivot": [-0.01558, 4.125, 4.9375] + }, + { + "name": "ground", + "parent": "positioning", + "pivot": [0, 0, 0] + }, + { + "name": "thirdperson_hand", + "parent": "positioning", + "pivot": [-0.01558, 6.125, -2.0625] + }, + { + "name": "fixed", + "parent": "positioning", + "pivot": [0.79692, 5.125, -1.0625], + "rotation": [0, 90, 0] + }, + { + "name": "bone38", + "pivot": [62, -11.35, -167.5] + }, + { + "name": "bone39", + "parent": "bone38", + "pivot": [-65, -11.35, -167.5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/stiletto.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/stiletto.anim.json new file mode 100644 index 0000000..4613147 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/stiletto.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"draw":{"loop":true,"animation_length":0.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[135.618,-4.423,-91.395],"0.04":[150.84,-7.569,-104.543],"0.08":[163.831,-9.899,-121.506],"0.12":[173.252,-10.336,-141.57],"0.17":[176.374,-9.829,-163.18],"0.21":[173.234,-9.898,-184.15],"0.25":[164.007,-12.196,-202.041],"0.29":[150.124,-16.708,-212.51],"0.33":[138.573,-20.744,-215.837],"0.38":[137.229,-21.173,-217.047],"0.42":[135.572,-20.787,-219.152],"0.46":[129.826,-21.685,-218.295],"0.5":[127.006,-25.529,-207.286],"0.54":[124.873,-30.776,-193.359],"0.58":[121.9,-37.219,-177.055],"0.62":[116.519,-43.948,-158.391],"0.67":[107.863,-49.298,-137.821],"0.71":[96.911,-51.773,-116.572],"0.75":[88.052,-51.087,-99.601],"0.79":[85.568,-48.476,-91.93],"0.83":[86.26,-46.991,-90.516],"0.88":[85.923,-47.339,-89.938],"0.92":[85.815,-48.286,-91.055],"0.96":[85.873,-48.851,-92.016]},"position":{"0.0":[-13.193,-36.994,-11.137],"0.04":[-13.211,-35.318,-12.199],"0.08":[-13.235,-33.637,-13.246],"0.12":[-13.255,-31.956,-14.285],"0.17":[-13.27,-30.281,-15.349],"0.21":[-13.284,-28.603,-16.405],"0.25":[-13.303,-26.936,-17.453],"0.29":[-13.326,-25.278,-18.49],"0.33":[-13.4,-24.126,-19.217],"0.38":[-13.544,-24.062,-19.436],"0.42":[-13.726,-24.399,-19.651],"0.46":[-13.751,-24.733,-19.606],"0.5":[-13.628,-25.037,-19.467],"0.54":[-13.411,-25.33,-19.275],"0.58":[-13.169,-25.6,-19.106],"0.62":[-12.98,-25.82,-19.042],"0.67":[-12.832,-25.967,-19.075],"0.71":[-12.67,-26.064,-19.098],"0.75":[-12.502,-26.121,-19.11],"0.79":[-12.343,-26.149,-19.112],"0.83":[-12.198,-26.148,-19.115],"0.88":[-12.08,-26.137,-19.111],"0.92":[-12.001,-26.119,-19.11],"0.96":[-11.971,-26.111,-19.111]}},"stiletto":{"rotation":{"0.0":[19.251,53.908,104.699],"0.04":[19.228,53.923,104.57],"0.08":[18.877,53.681,104.176],"0.12":[18.689,53.425,104.087],"0.17":[18.476,53.368,103.918],"0.21":[18.576,53.576,103.922],"0.25":[18.747,53.756,104.04],"0.29":[18.895,53.725,104.201],"0.33":[18.87,53.729,104.178],"0.38":[18.866,53.73,104.178],"0.42":[18.858,53.728,104.198],"0.46":[11.141,53.403,105.763],"0.5":[-0.055,51.781,91.954],"0.54":[-11.254,47.379,79.396],"0.58":[-10.738,40.359,71.22],"0.62":[-16.836,32.01,60.499],"0.67":[-13.699,28.065,83.859],"0.71":[1.403,22.382,105.951],"0.75":[9.408,19.324,128.85],"0.79":[16.061,14.605,150.704],"0.83":[19.41,9.6,166.6],"0.88":[19.417,9.607,166.602],"0.92":[19.422,9.612,166.597],"0.96":[19.411,9.604,166.611]},"position":[6.1,11.9,-0.5]},"b":{"rotation":{"0.0":[177.693,0,0],"0.04":[177.695,0,0],"0.08":[177.69,0,0],"0.17":[177.69,0,0],"0.21":[177.695,0,0],"0.25":[177.693,0,0],"0.29":[177.69,0,0],"0.33":[172.604,0,0],"0.38":[117.348,0,0],"0.42":[18.739,0,0],"0.46":[0.005,0,0],"0.5":[0,0,0],"0.79":[0,0,0],"0.83":[0.004,0,0],"0.88":[0,0,0],"0.96":[0,0,0]}},"lefthand":{"rotation":{"0.0":{"post":[-219.77,42.39,76.869],"lerp_mode":"catmullrom"},"0.46":{"post":[-232.991,43.176,78.962],"lerp_mode":"catmullrom"},"0.5":[-241.919,43.702,79.508],"0.54":[-245.497,43.305,78.967],"0.58":[-245.846,42.345,78.088],"0.62":[-245.346,41.746,77.339],"0.67":[-244.334,42.153,76.082],"0.71":[-242.474,43.112,75.267],"0.75":[-241.294,43.887,75.734],"0.79":[-240.369,44.724,77.323],"0.83":[-239.74,45.457,78.605],"0.88":[-239.321,46.098,79.535],"0.92":[-238.921,46.702,80.415],"0.96":[-238.595,47.184,81.075]},"position":{"0.0":[7.763,-36.563,-13.161],"0.04":[7.743,-35.887,-14.849],"0.08":[8.105,-34.807,-16.665],"0.12":[8.895,-33.777,-18.349],"0.17":[9.958,-32.819,-19.751],"0.21":[11.102,-31.913,-20.822],"0.25":[12.42,-31.037,-21.639],"0.29":[13.847,-30.211,-22.285],"0.33":[15.105,-29.534,-22.831],"0.38":[15.975,-29.007,-23.322],"0.42":[16.397,-28.615,-23.807],"0.46":[16.594,-28.354,-24.277],"0.5":[16.637,-28.22,-24.78],"0.54":[16.599,-28.197,-25.274],"0.58":[16.523,-28.312,-25.725],"0.62":[16.406,-28.572,-26.083],"0.67":[16.135,-28.854,-26.265],"0.71":[15.776,-29.036,-26.263],"0.75":[15.55,-29.06,-26.181],"0.79":[15.386,-28.977,-26.023],"0.83":[15.343,-28.824,-25.834],"0.88":[15.385,-28.659,-25.655],"0.92":[15.428,-28.519,-25.508],"0.96":[15.446,-28.464,-25.449]}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.stilletto_draw_01"}}},"inspect":{"loop":true,"animation_length":3.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[87.989,-49.779,-94.812],"0.04":[92.833,-50.583,-101.077],"0.08":[99.348,-51.054,-109.344],"0.12":[107.233,-50.806,-119.19],"0.17":[115.525,-49.468,-129.498],"0.21":[123.096,-46.823,-139.16],"0.25":[129.355,-42.833,-147.786],"0.29":[132.847,-37.977,-154.072],"0.33":[134.161,-31.981,-159.564],"0.38":[135.076,-25.578,-165.703],"0.42":[135.261,-19.045,-172.252],"0.46":[134.157,-12.473,-179.139],"0.5":[130.818,-6.261,-186.743],"0.54":[124.404,-1.692,-194.94],"0.58":[116.546,0.083,-203.048],"0.62":[109.885,-0.401,-209.691],"0.67":[106.934,-1.099,-213.203],"0.71":[105.718,-1.411,-215.183],"0.75":[104.846,-1.689,-216.646],"0.79":[104.205,-1.919,-217.679],"0.83":[103.742,-2.128,-218.258],"0.88":[103.369,-2.33,-218.559],"0.92":[103.008,-2.57,-218.626],"0.96":[102.591,-2.865,-218.535],"1.0":[102.051,-3.293,-218.333],"1.04":[101.325,-3.868,-218.114],"1.08":[100.338,-4.629,-217.913],"1.12":[99.044,-5.623,-217.776],"1.17":[95.124,-8.495,-212.706],"1.21":[87.927,-11.502,-202.019],"1.25":[80.419,-12.126,-191.092],"1.29":[76.73,-11.598,-185.724],"1.33":[81.871,-8.483,-187.407],"1.38":[90.603,-2.557,-189.603],"1.42":[96.214,1.852,-191.763],"1.46":[95.542,2.008,-196.232],"1.5":[92.432,-0.145,-203.362],"1.54":[90.627,-1.959,-212.685],"1.58":[90.223,-2.976,-224.81],"1.62":[88.948,-4.831,-232.041],"1.67":[83.794,-10.128,-231.656],"1.71":[78.765,-14.973,-230.609],"1.75":[77.721,-15.637,-229.553],"1.79":[79.564,-13.868,-228.194],"1.83":[84.42,-10.915,-226.789],"1.88":[93.292,-5.772,-219.864],"1.92":[104.346,-2.632,-209.359],"1.96":[105.435,-1.204,-208.337],"2.0":[102.262,2.022,-211.315],"2.04":[98.329,3.937,-215.781],"2.08":[94.749,2.84,-221.834],"2.12":[91.388,-0.817,-229.258],"2.17":[88.047,-6.038,-231.934],"2.21":[83.142,-12.202,-230.626],"2.25":[78.988,-17.01,-227.582],"2.29":[77.669,-19.213,-221.506],"2.33":[78.128,-19.589,-215.022],"2.38":[84.839,-15.96,-212.955],"2.42":[94.187,-10.958,-212.158],"2.46":[101.93,-6.517,-211.74],"2.5":[103.183,-0.868,-211.666],"2.54":[101.837,6.329,-212.14],"2.58":[99.99,11.012,-214.332],"2.62":[96.759,8.871,-221.08],"2.67":[91.668,0.134,-229.553],"2.71":[86.623,-7.247,-231.929],"2.75":[80.842,-13.072,-231.183],"2.79":[77.463,-16.126,-230.149],"2.83":[78.546,-18.108,-220.786],"2.88":[79.163,-18.507,-213.696],"2.92":[81.908,-16.023,-212.905],"2.96":[92.537,-10.819,-205.392],"3.0":[104.103,-8,-200.063],"3.04":[108.724,-0.585,-202.197],"3.08":[109.453,9.483,-205.63],"3.12":[107.614,15.979,-211.106],"3.17":[99.428,11.15,-222.11],"3.21":[91.223,-0.352,-232.554],"3.25":[88.318,-8.623,-237.812],"3.29":[87.099,-13.77,-238.827],"3.33":[84.39,-17.289,-232.496],"3.38":[79.442,-19.532,-220.691],"3.42":[73.244,-21.362,-206.634],"3.46":[67.54,-20.947,-193.06],"3.5":[73.205,-16.159,-189.815],"3.54":[84.393,-10.825,-187.618],"3.58":[92.546,-7.488,-181.729],"3.62":[98.869,-6.052,-173.839],"3.67":[104.412,-7.63,-164.618],"3.71":[108.568,-13.473,-153.742],"3.75":[109.893,-23.597,-140],"3.79":[105.907,-35.503,-123.602],"3.83":[96.378,-44.661,-106.541],"3.88":[87.913,-48.639,-94.675],"3.92":[85.901,-49.29,-92.044],"3.96":[85.902,-49.29,-92.046]},"position":{"0.0":[-11.999,-26.071,-19.082],"0.04":[-12.057,-25.975,-19.035],"0.08":[-12.13,-25.853,-18.976],"0.12":[-12.217,-25.71,-18.907],"0.17":[-12.311,-25.559,-18.827],"0.21":[-12.403,-25.42,-18.744],"0.25":[-12.484,-25.308,-18.651],"0.29":[-12.555,-25.223,-18.561],"0.33":[-12.615,-25.168,-18.49],"0.38":[-12.673,-25.126,-18.426],"0.42":[-12.731,-25.102,-18.359],"0.46":[-12.786,-25.089,-18.289],"0.5":[-12.837,-25.08,-18.212],"0.54":[-12.899,-25.093,-18.135],"0.58":[-12.964,-25.118,-18.056],"0.62":[-13.018,-25.148,-17.972],"0.67":[-13.061,-25.181,-17.89],"0.71":[-13.097,-25.211,-17.806],"0.75":[-13.121,-25.248,-17.732],"0.79":[-13.136,-25.309,-17.67],"0.83":[-13.127,-25.379,-17.644],"0.88":[-13.091,-25.465,-17.65],"0.92":[-13.042,-25.562,-17.673],"0.96":[-12.993,-25.658,-17.709],"1.0":[-12.943,-25.756,-17.749],"1.04":[-12.89,-25.854,-17.785],"1.08":[-12.825,-25.95,-17.818],"1.12":[-12.772,-26.044,-17.844],"1.17":[-12.773,-26.143,-17.848],"1.21":[-12.773,-26.246,-17.849],"1.25":[-12.785,-26.331,-17.847],"1.29":[-12.8,-26.371,-17.844],"1.33":[-12.888,-25.906,-18.219],"1.38":[-13.022,-25.083,-18.886],"1.42":[-13.123,-24.491,-19.374],"1.46":[-13.158,-24.365,-19.485],"1.5":[-13.164,-24.372,-19.533],"1.54":[-13.146,-24.538,-19.507],"1.58":[-13.076,-25.045,-19.267],"1.62":[-13.021,-25.424,-19.071],"1.67":[-13.156,-25.407,-19.053],"1.71":[-13.382,-25.399,-19.022],"1.75":[-13.505,-25.519,-18.957],"1.79":[-13.54,-25.752,-18.903],"1.83":[-13.552,-25.887,-19.065],"1.88":[-13.496,-25.672,-19.102],"1.92":[-13.327,-24.97,-19.025],"1.96":[-13.254,-24.72,-19.105],"2.0":[-13.228,-24.645,-19.179],"2.04":[-13.215,-24.629,-19.223],"2.08":[-13.157,-24.773,-19.206],"2.12":[-13.066,-25.167,-19.112],"2.17":[-13.048,-25.443,-19.078],"2.21":[-13.24,-25.53,-19.105],"2.25":[-13.485,-25.605,-19.119],"2.29":[-13.582,-25.745,-19.089],"2.33":[-13.572,-25.848,-19.095],"2.38":[-13.541,-25.875,-19.193],"2.42":[-13.362,-25.459,-19.236],"2.46":[-13.161,-24.768,-19.244],"2.5":[-13.207,-24.661,-19.378],"2.54":[-13.271,-24.64,-19.472],"2.58":[-13.307,-24.673,-19.547],"2.62":[-13.209,-24.752,-19.557],"2.67":[-12.987,-24.932,-19.505],"2.71":[-12.905,-25.257,-19.508],"2.75":[-12.977,-25.727,-19.584],"2.79":[-13.083,-26.118,-19.587],"2.83":[-13.165,-26.232,-19.482],"2.88":[-13.291,-26.234,-19.395],"2.92":[-13.439,-26.134,-19.273],"2.96":[-13.456,-25.431,-19.31],"3.0":[-13.396,-24.839,-19.41],"3.04":[-13.342,-24.914,-19.497],"3.08":[-13.294,-25.033,-19.628],"3.12":[-13.233,-25.097,-19.704],"3.17":[-13.118,-25.053,-19.71],"3.21":[-13.008,-25.003,-19.712],"3.25":[-13.015,-25.055,-19.663],"3.29":[-13.136,-25.283,-19.495],"3.33":[-13.328,-25.586,-19.267],"3.38":[-13.51,-25.792,-19.112],"3.42":[-13.629,-25.831,-19.079],"3.46":[-13.663,-25.771,-19.1],"3.5":[-13.667,-25.655,-19.163],"3.54":[-13.645,-25.529,-19.233],"3.58":[-13.598,-25.418,-19.299],"3.62":[-13.54,-25.299,-19.358],"3.67":[-13.436,-25.218,-19.408],"3.71":[-13.234,-25.217,-19.411],"3.75":[-12.916,-25.373,-19.359],"3.79":[-12.537,-25.643,-19.269],"3.83":[-12.205,-25.91,-19.175],"3.88":[-12.012,-26.077,-19.118],"3.92":[-11.971,-26.11,-19.105],"3.96":[-11.971,-26.11,-19.105]}},"stiletto":{"rotation":{"0.0":[20.108,10.032,164.91],"0.04":[21.553,11.747,161.825],"0.08":[23.027,14.922,157.282],"0.12":[23.998,18.97,151.337],"0.17":[23.664,23.197,143.992],"0.21":[21.988,26.914,135.898],"0.25":[19.47,29.357,127.801],"0.29":[16.032,30.841,120.191],"0.33":[12.078,31.374,114.056],"0.38":[8.923,31.441,109.783],"0.42":[7.067,31.357,107.291],"0.46":[6.414,31.309,106.428],"0.5":[6.414,31.323,106.435],"0.54":[6.415,31.307,106.439],"0.58":[6.403,31.298,106.425],"0.62":[6.4,31.291,106.422],"0.67":[6.39,31.285,106.408],"0.71":[6.387,31.289,106.403],"0.75":[6.384,31.304,106.403],"0.79":[6.399,31.29,106.415],"0.83":[6.386,31.296,106.412],"0.88":[6.387,31.3,106.413],"0.92":[6.39,31.295,106.408],"0.96":[6.385,31.281,106.419],"1.0":[6.39,31.287,106.417],"1.04":[6.401,31.294,106.414],"1.08":[6.399,31.285,106.419],"1.12":[6.384,31.291,106.403],"1.17":[6.404,31.296,106.414],"1.21":[6.395,31.308,106.4],"1.25":[6.391,31.303,106.418],"1.29":[6.389,31.313,106.411],"1.33":[7.596,30.779,109.641],"1.38":[13.234,23.421,128.339],"1.42":[12.278,4.152,144.983],"1.46":[-1.704,-17.14,153.163],"1.5":[-20.381,-36.053,153.515],"1.54":[-18.942,-67.778,134.085],"1.58":[-85.146,-114.522,192.813],"1.62":[-65.137,-149.239,176.565],"1.67":[-50.073,-175.471,170.376],"1.71":[-41.279,-181.392,171.481],"1.75":[-41.282,-181.392,171.474],"1.79":[-41.281,-181.387,171.481],"1.83":[-41.281,-181.403,171.477],"1.88":[-41.223,-181.383,171.508],"1.92":[-25.774,-184.034,164.833],"1.96":[13.951,-189.342,164.15],"2.0":[53.299,-201.88,170.16],"2.04":[72.076,-235.682,171.204],"2.08":[-12.827,-280.47,81.462],"2.12":[41.369,-311.483,145.334],"2.17":[37.786,-353.208,165.315],"2.21":[28.66,-360.223,165.249],"2.25":[28.662,-360.267,165.25],"2.29":[28.655,-360.263,165.232],"2.33":[28.655,-360.273,165.248],"2.38":[28.648,-360.26,165.249],"2.42":[28.634,-360.261,165.257],"2.46":[28.635,-360.264,165.254],"2.5":[5.89,-370.374,170.483],"2.54":[-22.273,-377.482,181.287],"2.58":[-51.903,-382.589,190.055],"2.62":[-78.544,-376.604,192.552],"2.67":[-98.656,-363.79,181.796],"2.71":[-119.479,-355.32,170.658],"2.75":[-135.794,-356.205,168.65],"2.79":[-140.249,-358.263,170.337],"2.83":[-140.265,-358.28,170.342],"2.88":[-140.261,-358.277,170.344],"2.92":[-140.265,-358.281,170.348],"2.96":[-140.253,-361.434,174.15],"3.0":[-148.74,-359.141,169.355],"3.04":[-184.117,-369.274,163.74],"3.08":[-215.218,-372.406,168.684],"3.12":[-246.824,-373.367,177.467],"3.17":[-269.507,-373.198,178.806],"3.21":[-290.549,-372.824,179.351],"3.25":[-312.146,-372.414,179.358],"3.29":[-340.584,-368.508,173.702],"3.33":[-340.591,-368.508,173.706],"3.38":[-335.706,-364.451,169.528],"3.42":[-331.339,-360.257,165.256],"3.46":[-331.343,-360.272,165.258],"3.5":[-331.352,-360.267,165.268],"3.54":[-331.353,-360.283,165.294],"3.58":[-331.359,-360.259,165.272],"3.62":[-331.361,-360.254,165.247],"3.67":[-331.326,-360.269,165.276],"3.71":[-331.309,-360.236,165.275],"3.75":[-327.573,-361.525,161.28],"3.79":[-330.185,-357.284,161.537],"3.83":[-337.915,-352.604,165.174],"3.88":[-339.499,-351.193,167.055],"3.92":[-340.567,-350.437,166.179],"3.96":[-340.568,-350.438,166.179]},"position":{"0.0":{"post":[6.1,11.9,-0.5],"lerp_mode":"catmullrom"},"0.55":{"post":[4.5,11.2,-0.5],"lerp_mode":"catmullrom"},"0.95":{"post":[4.5,11.2,-0.5],"lerp_mode":"catmullrom"},"1.77":{"post":[4.4421,11.52489,-1.47296],"lerp_mode":"catmullrom"},"2.27":{"post":[4.56305,10.96863,-0.06126],"lerp_mode":"catmullrom"},"2.79":{"post":[4.5,11.2,-1.09733],"lerp_mode":"catmullrom"},"3.31":{"post":[4.5,11.2,-0.19733],"lerp_mode":"catmullrom"},"3.79":{"post":[6.1,11.9,-0.5],"lerp_mode":"catmullrom"}}},"b":{"rotation":{"0.0":[0,0,0],"0.46":[0,0,0],"0.5":[0.001,0,0],"0.54":[0.002,0,0],"0.58":[0.004,0,0],"0.62":[0,0,0],"1.12":[0,0,0],"1.17":[0.007,0,0],"1.21":[0.002,0,0],"1.25":[0.001,0,0],"1.29":[0,0,0],"1.71":[0,0,0],"1.75":[0.004,0,0],"1.79":[0,0,0],"1.96":[0,0,0],"2.0":[0.004,0,0],"2.04":[0,0,0],"2.08":[0,0,0],"2.12":[0.005,0,0],"2.17":[0,0,0],"2.21":[0,0,0],"2.25":[0.004,0,0],"2.29":[0,0,0],"2.33":[0,0,0],"2.38":[0.002,0,0],"2.42":[0.001,0,0],"2.46":[0,0,0],"2.5":[0.001,0,0],"2.54":[0.002,0,0],"2.58":[0,0,0],"3.42":[0,0,0],"3.46":[0.005,0,0],"3.5":[0,0,0],"3.96":[0,0,0]}},"lefthand":{"rotation":{"0.0":[119.856,45.44,78.922],"0.04":[120.355,45.271,79.448],"0.08":[122.074,44.639,81.668],"0.12":[124.954,43.251,85.541],"0.17":[128.47,40.827,90.362],"0.21":[131.976,37.262,95.57],"0.25":[135.247,32.205,101.501],"0.29":[137.746,26.222,107.54],"0.33":[139.21,20.456,112.588],"0.38":[139.979,15.6,116.245],"0.42":[140.517,10.667,119.239],"0.46":[140.889,5.288,121.96],"0.5":[141.006,-0.194,124.244],"0.54":[140.838,-5.369,126.251],"0.58":[140.459,-9.888,127.936],"0.62":[140.036,-13.405,129.202],"0.67":[139.764,-15.29,129.846],"0.71":[139.674,-15.74,130.022],"0.75":[139.678,-15.74,130.015],"0.79":[139.671,-15.739,130.024],"0.83":[139.689,-15.751,130.021],"0.88":[139.682,-15.751,130.017],"0.92":[139.675,-15.752,130.021],"0.96":[139.687,-15.747,130.017],"1.0":[139.679,-15.737,130.024],"1.04":[139.68,-15.746,130.026],"1.08":[139.685,-15.747,130.019],"1.12":[139.687,-15.747,130.017],"1.21":[139.687,-15.747,130.017],"1.25":[139.689,-15.741,130.015],"1.29":[139.68,-15.746,130.026],"1.46":[139.68,-15.746,130.026],"1.5":[139.682,-15.746,130.023],"1.54":[139.687,-15.747,130.017],"1.58":[139.682,-15.746,130.023],"1.62":[139.689,-15.738,130.014],"1.67":[139.687,-15.745,130.016],"1.71":[139.685,-15.742,130.02],"1.75":[139.68,-15.746,130.026],"1.79":[139.68,-15.746,130.026],"1.83":[139.685,-15.747,130.019],"1.88":[139.68,-15.746,130.026],"1.92":[139.687,-15.74,130.017],"1.96":[139.687,-15.747,130.017],"2.0":[139.682,-15.738,130.023],"2.04":[139.682,-15.748,130.024],"2.08":[139.678,-15.747,130.026],"2.12":[139.68,-15.746,130.026],"2.83":[139.68,-15.746,130.026],"2.88":[139.683,-15.747,130.021],"2.92":[139.687,-15.747,130.017],"2.96":[139.68,-15.746,130.026],"3.12":[139.68,-15.746,130.026],"3.17":[139.676,-15.745,130.027],"3.21":[139.68,-15.746,130.026],"3.29":[139.68,-15.746,130.026],"3.33":[139.682,-15.746,130.023],"3.38":[139.683,-15.747,130.021],"3.42":[139.68,-15.746,130.026],"3.46":[139.68,-15.746,130.026],"3.5":[139.682,-15.746,130.024],"3.54":[139.901,-15.14,129.723],"3.58":[140.927,-12.046,128.268],"3.62":[142.432,-6.049,125.712],"3.67":[143.558,2.072,122.421],"3.71":[143.649,11.156,118.737],"3.75":[142.405,20.164,114.403],"3.79":[139.64,28.024,109.063],"3.83":[132.24,37.524,96.951],"3.88":[122.626,44.197,82.852],"3.92":[119.821,45.506,78.92],"3.96":[119.818,45.506,78.917]},"position":{"0.0":[15.445,-28.45,-25.454],"0.04":[15.432,-28.426,-25.459],"0.08":[15.432,-28.385,-25.457],"0.12":[15.455,-28.331,-25.45],"0.17":[15.569,-28.269,-25.354],"0.21":[15.985,-28.224,-25.026],"0.25":[16.603,-28.183,-24.539],"0.29":[17.32,-28.162,-23.971],"0.33":[18.108,-28.238,-23.337],"0.38":[18.929,-28.409,-22.654],"0.42":[19.8,-28.645,-21.923],"0.46":[20.663,-28.934,-21.155],"0.5":[21.533,-29.26,-20.356],"0.54":[22.378,-29.613,-19.548],"0.58":[23.195,-29.992,-18.738],"0.62":[23.986,-30.382,-17.93],"0.67":[24.695,-30.767,-17.171],"0.71":[25.314,-31.124,-16.468],"0.75":[25.686,-31.39,-15.917],"0.79":[25.796,-31.547,-15.536],"0.83":[25.737,-31.611,-15.31],"0.88":[25.589,-31.629,-15.186],"0.92":[25.454,-31.619,-15.132],"0.96":[25.387,-31.604,-15.121],"1.21":[25.387,-31.604,-15.121],"1.25":[25.387,-31.604,-15.122],"1.29":[25.387,-31.604,-15.121],"1.58":[25.387,-31.604,-15.121],"1.62":[25.387,-31.604,-15.122],"1.67":[25.387,-31.604,-15.121],"1.71":[25.387,-31.604,-15.122],"1.75":[25.387,-31.604,-15.121],"1.88":[25.387,-31.604,-15.121],"1.92":[25.387,-31.604,-15.122],"1.96":[25.387,-31.604,-15.121],"3.12":[25.387,-31.604,-15.121],"3.17":[25.386,-31.605,-15.121],"3.21":[25.387,-31.604,-15.121],"3.46":[25.387,-31.604,-15.121],"3.5":[25.386,-31.604,-15.121],"3.54":[25.266,-31.57,-15.24],"3.58":[24.671,-31.387,-15.859],"3.62":[23.559,-31.03,-17.011],"3.67":[22.067,-30.559,-18.574],"3.71":[20.41,-30.031,-20.294],"3.75":[18.749,-29.51,-22.008],"3.79":[17.255,-29.033,-23.56],"3.83":[16.153,-28.685,-24.718],"3.88":[15.564,-28.5,-25.326],"3.92":[15.448,-28.463,-25.445],"3.96":[15.448,-28.463,-25.445]}},"root":{"position":{"1.23":[0,0,0],"1.71":[0,0,0.7],"2.02":[0,0,1.724],"3.4":[0,0,3.548],"3.8":[0,0,0]}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}},"sound_effects":{"1.3":{"effect":"melee.cs2.stilletto_flip_01"},"1.72":{"effect":"melee.cs2.stilletto_flip_02"},"2.42":{"effect":"melee.cs2.stilletto_flip_03"},"2.94":{"effect":"melee.cs2.stilletto_flip_04"}}},"static_idle":{"loop":true,"animation_length":1.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[85.903,-49.347,-92.082],"0.04":[85.898,-49.392,-92.094],"0.08":[85.886,-49.441,-92.13],"0.12":[85.901,-49.482,-92.149],"0.17":[85.878,-49.528,-92.169],"0.21":[85.878,-49.555,-92.18],"0.25":[85.864,-49.592,-92.18],"0.29":[85.889,-49.622,-92.216],"0.33":[85.868,-49.632,-92.214],"0.38":[85.862,-49.635,-92.202],"0.42":[85.862,-49.631,-92.2],"0.46":[85.866,-49.618,-92.21],"0.5":[85.861,-49.595,-92.208],"0.54":[85.869,-49.561,-92.209],"0.58":[85.864,-49.511,-92.182],"0.62":[85.854,-49.467,-92.156],"0.67":[85.866,-49.413,-92.155],"0.71":[85.863,-49.341,-92.143],"0.75":[85.857,-49.267,-92.129],"0.79":[85.887,-49.198,-92.126],"0.83":[85.872,-49.119,-92.089],"0.88":[85.866,-49.035,-92.055],"0.92":[85.865,-48.959,-92.03],"0.96":[85.87,-48.866,-92.011],"1.0":[85.883,-48.783,-91.999],"1.04":[85.862,-48.706,-91.951],"1.08":[85.875,-48.624,-91.934],"1.12":[85.885,-48.556,-91.941],"1.17":[85.881,-48.496,-91.895],"1.21":[85.873,-48.439,-91.881],"1.25":[85.882,-48.383,-91.862],"1.29":[85.882,-48.349,-91.859],"1.33":[85.883,-48.304,-91.84],"1.38":[85.892,-48.293,-91.848],"1.42":[85.888,-48.281,-91.837],"1.46":[85.889,-48.281,-91.833],"1.5":[85.874,-48.306,-91.819],"1.54":[85.895,-48.338,-91.843],"1.58":[85.887,-48.379,-91.849],"1.62":[85.888,-48.413,-91.849],"1.67":[85.896,-48.479,-91.882],"1.71":[85.888,-48.553,-91.88],"1.75":[85.889,-48.654,-91.906],"1.79":[85.893,-48.739,-91.922],"1.83":[85.897,-48.857,-91.958],"1.88":[85.895,-48.989,-91.986],"1.92":[85.904,-49.127,-92.014],"1.96":[85.902,-49.29,-92.046]},"position":{"0.0":[-11.97,-26.137,-19.11],"0.04":[-11.97,-26.159,-19.113],"0.08":[-11.967,-26.178,-19.115],"0.12":[-11.967,-26.2,-19.117],"0.17":[-11.966,-26.215,-19.118],"0.21":[-11.965,-26.231,-19.118],"0.25":[-11.965,-26.24,-19.12],"0.29":[-11.964,-26.246,-19.119],"0.33":[-11.962,-26.261,-19.121],"0.38":[-11.963,-26.265,-19.12],"0.42":[-11.962,-26.268,-19.121],"0.46":[-11.962,-26.268,-19.121],"0.5":[-11.962,-26.267,-19.121],"0.54":[-11.962,-26.263,-19.121],"0.58":[-11.96,-26.253,-19.121],"0.62":[-11.965,-26.244,-19.118],"0.67":[-11.963,-26.236,-19.119],"0.71":[-11.964,-26.223,-19.118],"0.75":[-11.966,-26.21,-19.117],"0.79":[-11.967,-26.198,-19.116],"0.83":[-11.967,-26.178,-19.114],"0.88":[-11.969,-26.167,-19.111],"0.92":[-11.97,-26.147,-19.109],"0.96":[-11.969,-26.134,-19.109],"1.0":[-11.972,-26.112,-19.107],"1.04":[-11.972,-26.101,-19.107],"1.08":[-11.971,-26.083,-19.106],"1.12":[-11.976,-26.068,-19.101],"1.17":[-11.974,-26.05,-19.101],"1.21":[-11.977,-26.039,-19.101],"1.25":[-11.978,-26.024,-19.099],"1.29":[-11.979,-26.014,-19.099],"1.33":[-11.978,-26.008,-19.096],"1.38":[-11.981,-26.003,-19.097],"1.42":[-11.98,-26,-19.095],"1.46":[-11.98,-25.998,-19.094],"1.5":[-11.98,-25.997,-19.094],"1.54":[-11.981,-25.999,-19.095],"1.58":[-11.981,-26.001,-19.096],"1.62":[-11.976,-26.007,-19.099],"1.67":[-11.977,-26.012,-19.098],"1.71":[-11.979,-26.023,-19.099],"1.75":[-11.977,-26.034,-19.097],"1.79":[-11.977,-26.044,-19.101],"1.83":[-11.975,-26.058,-19.102],"1.88":[-11.975,-26.076,-19.103],"1.92":[-11.974,-26.094,-19.103],"1.96":[-11.971,-26.11,-19.105]}},"stiletto":{"rotation":{"0.0":[19.435,9.556,166.177],"0.04":[19.446,9.561,166.183],"0.08":[19.426,9.543,166.184],"0.12":[19.447,9.564,166.185],"0.17":[19.426,9.549,166.176],"0.21":[19.429,9.55,166.186],"0.25":[19.429,9.561,166.174],"0.29":[19.451,9.546,166.175],"0.33":[19.426,9.55,166.174],"0.38":[19.436,9.565,166.176],"0.42":[19.431,9.571,166.174],"0.46":[19.436,9.554,166.185],"0.5":[19.424,9.559,166.178],"0.54":[19.432,9.548,166.18],"0.58":[19.442,9.563,166.189],"0.62":[19.439,9.565,166.187],"0.67":[19.439,9.567,166.174],"0.71":[19.43,9.561,166.183],"0.75":[19.421,9.559,166.179],"0.79":[19.434,9.539,166.179],"0.83":[19.435,9.548,166.179],"0.88":[19.434,9.556,166.184],"0.92":[19.435,9.564,166.174],"0.96":[19.435,9.563,166.191],"1.0":[19.439,9.551,166.184],"1.04":[19.432,9.57,166.18],"1.08":[19.444,9.573,166.196],"1.12":[19.434,9.544,166.193],"1.17":[19.445,9.572,166.18],"1.21":[19.431,9.562,166.177],"1.25":[19.437,9.566,166.186],"1.29":[19.43,9.559,166.171],"1.33":[19.434,9.556,166.195],"1.38":[19.429,9.549,166.176],"1.42":[19.44,9.558,166.18],"1.46":[19.438,9.556,166.186],"1.5":[19.438,9.566,166.184],"1.54":[19.445,9.553,166.178],"1.58":[19.437,9.556,166.172],"1.62":[19.44,9.57,166.186],"1.67":[19.435,9.555,166.186],"1.71":[19.439,9.564,166.18],"1.75":[19.44,9.564,166.163],"1.79":[19.433,9.565,166.181],"1.83":[19.431,9.549,166.184],"1.88":[19.433,9.554,166.181],"1.92":[19.44,9.562,166.184],"1.96":[19.43,9.556,166.178]},"position":[6.1,11.9,-0.5]},"b":{"rotation":{"0.0":[0,0,0],"0.46":[0,0,0],"0.5":[0.001,0,0],"0.54":[0.005,0,0],"0.58":[0.001,0,0],"0.62":[0,0,0],"0.79":[0,0,0],"0.83":[0.004,0,0],"0.88":[0,0,0],"1.0":[0,0,0],"1.04":[0.002,0,0],"1.08":[0.001,0,0],"1.12":[0,0,0],"1.17":[0,0,0],"1.21":[0.002,0,0],"1.25":[0.001,0,0],"1.29":[0.015,0,0],"1.33":[0,0,0],"1.38":[-0.003,0,0],"1.42":[0.002,0,0],"1.46":[0,0,0],"1.88":[0,0,0],"1.92":[0.011,0,0],"1.96":[0,0,0]}},"lefthand":{"rotation":{"0.0":[119.869,45.59,78.995],"0.04":[119.925,45.691,79.076],"0.08":[119.981,45.771,79.145],"0.12":[120.009,45.848,79.218],"0.17":[120.086,45.921,79.303],"0.21":[120.133,45.998,79.373],"0.25":[120.21,46.066,79.478],"0.29":[120.301,46.111,79.586],"0.33":[120.354,46.179,79.663],"0.38":[120.437,46.235,79.775],"0.42":[120.509,46.292,79.859],"0.46":[120.613,46.348,79.965],"0.5":[120.676,46.397,80.069],"0.54":[120.754,46.455,80.178],"0.58":[120.835,46.527,80.269],"0.62":[120.9,46.577,80.369],"0.67":[120.992,46.642,80.484],"0.71":[121.055,46.703,80.571],"0.75":[121.128,46.764,80.663],"0.79":[121.184,46.834,80.73],"0.83":[121.246,46.919,80.843],"0.88":[121.309,47.004,80.929],"0.92":[121.326,47.092,80.97],"0.96":[121.398,47.182,81.082],"1.0":[121.326,47.092,80.97],"1.04":[121.309,47.004,80.929],"1.08":[121.235,46.918,80.827],"1.12":[121.186,46.836,80.74],"1.17":[121.129,46.763,80.663],"1.21":[121.057,46.702,80.563],"1.25":[120.992,46.641,80.481],"1.29":[120.9,46.577,80.369],"1.33":[120.835,46.527,80.269],"1.38":[120.754,46.455,80.178],"1.42":[120.67,46.401,80.064],"1.46":[120.613,46.348,79.965],"1.5":[120.516,46.292,79.866],"1.54":[120.445,46.232,79.773],"1.58":[120.363,46.184,79.67],"1.62":[120.301,46.111,79.586],"1.67":[120.219,46.066,79.489],"1.71":[120.129,45.997,79.385],"1.75":[120.084,45.92,79.307],"1.79":[120.009,45.848,79.218],"1.83":[119.976,45.776,79.148],"1.88":[119.926,45.686,79.072],"1.92":[119.87,45.587,78.993],"1.96":[119.818,45.506,78.917]},"position":{"0.0":[15.453,-28.469,-25.448],"0.04":[15.456,-28.475,-25.451],"0.08":[15.459,-28.482,-25.454],"0.12":[15.455,-28.498,-25.459],"0.17":[15.458,-28.511,-25.461],"0.21":[15.462,-28.526,-25.46],"0.25":[15.456,-28.542,-25.458],"0.29":[15.455,-28.564,-25.459],"0.33":[15.456,-28.578,-25.453],"0.38":[15.45,-28.6,-25.455],"0.42":[15.452,-28.623,-25.451],"0.46":[15.444,-28.637,-25.449],"0.5":[15.444,-28.66,-25.449],"0.54":[15.439,-28.682,-25.445],"0.58":[15.441,-28.703,-25.447],"0.62":[15.434,-28.717,-25.44],"0.67":[15.436,-28.739,-25.442],"0.71":[15.439,-28.756,-25.44],"0.75":[15.434,-28.772,-25.437],"0.79":[15.436,-28.784,-25.441],"0.83":[15.439,-28.8,-25.444],"0.88":[15.442,-28.807,-25.442],"0.92":[15.448,-28.814,-25.443],"0.96":[15.451,-28.819,-25.445],"1.0":[15.448,-28.814,-25.443],"1.04":[15.442,-28.807,-25.442],"1.08":[15.439,-28.8,-25.444],"1.12":[15.436,-28.784,-25.441],"1.17":[15.434,-28.772,-25.437],"1.21":[15.439,-28.756,-25.44],"1.25":[15.436,-28.739,-25.442],"1.29":[15.434,-28.717,-25.44],"1.33":[15.441,-28.703,-25.447],"1.38":[15.439,-28.682,-25.445],"1.42":[15.444,-28.66,-25.449],"1.46":[15.444,-28.637,-25.449],"1.5":[15.452,-28.624,-25.45],"1.54":[15.45,-28.601,-25.455],"1.58":[15.456,-28.578,-25.453],"1.62":[15.455,-28.564,-25.459],"1.67":[15.456,-28.542,-25.458],"1.71":[15.462,-28.525,-25.461],"1.75":[15.458,-28.511,-25.461],"1.79":[15.455,-28.498,-25.459],"1.83":[15.459,-28.482,-25.454],"1.88":[15.456,-28.475,-25.451],"1.92":[15.453,-28.469,-25.448],"1.96":[15.448,-28.463,-25.445]}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}}},"melee_1":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[88.111,0.796,133.193],"0.04":[66.619,12.382,134.333],"0.08":[51.447,23.613,130.5],"0.12":[40.276,31.414,122.379],"0.17":[30.285,17.243,126.372],"0.21":[27.012,13.886,154.385],"0.25":[34.294,22.142,171.733],"0.29":[52.211,33.066,185.224],"0.33":[76.42,40.023,202.456],"0.38":[98.125,39.142,219.787],"0.42":[107.437,32.321,230.422],"0.46":[105.342,23.326,235.287],"0.5":[99.081,13.787,238.942],"0.54":[94.93,5.015,244.553],"0.58":[95.075,-3.492,253.756],"0.62":[95.192,-13.63,267.041],"0.67":[90.032,-23.362,282.409],"0.71":[80.804,-28.944,295.64],"0.75":[74.135,-32.202,300.605],"0.79":[73.112,-37.145,296.312],"0.83":[77.236,-42.784,285.846],"0.88":[82.396,-46.671,275.851],"0.92":[85.027,-48.683,270.848],"0.96":[85.999,-49.564,268.814],"1.0":[86.204,-49.704,268.195],"1.04":[86.046,-49.512,268.215],"1.08":[85.833,-49.282,268.331],"1.12":[85.902,-49.29,267.954]},"position":{"0.0":[-15.642,-22.8,-25.776],"0.04":[-8.222,-24.05,-29.071],"0.08":[-0.094,-26.435,-29.207],"0.12":[6.658,-29.29,-26.037],"0.17":[15.389,-31.729,-17.28],"0.21":[12.794,-39.752,-12.404],"0.25":[9.179,-43.389,-10.998],"0.29":[6.944,-44.477,-11.928],"0.33":[5.309,-44.451,-13.664],"0.38":[3.792,-43.966,-15.442],"0.42":[1.722,-43.511,-17.193],"0.46":[-1.194,-42.983,-18.965],"0.5":[-4.36,-42.023,-20.397],"0.54":[-6.809,-40.589,-21.438],"0.58":[-7.807,-38.57,-22.431],"0.62":[-7.67,-35.764,-23.522],"0.67":[-7.418,-32.513,-24.259],"0.71":[-7.765,-29.744,-24.348],"0.75":[-8.659,-28.094,-23.938],"0.79":[-9.706,-27.363,-23.262],"0.83":[-10.654,-27.109,-22.373],"0.88":[-11.349,-26.886,-21.427],"0.92":[-11.723,-26.557,-20.553],"0.96":[-11.862,-26.263,-19.823],"1.0":[-11.879,-26.127,-19.412],"1.04":[-11.872,-26.082,-19.183],"1.08":[-11.897,-26.092,-19.112],"1.12":[-11.971,-26.11,-19.105]}},"stiletto":{"rotation":{"0.0":[19.376,9.517,166.086],"0.04":[19.415,9.516,166.168],"0.08":[19.399,9.465,166.14],"0.12":[19.442,9.472,166.158],"0.17":[19.622,8.918,166.065],"0.21":[19.556,9.146,165.946],"0.25":[19.422,9.441,166.152],"0.29":[19.406,9.484,166.154],"0.33":[19.446,9.491,166.206],"0.38":[19.473,9.532,166.219],"0.42":[19.462,9.555,166.17],"0.46":[19.419,9.546,166.171],"0.5":[19.476,9.587,166.139],"0.54":[19.539,9.589,166.149],"0.58":[19.584,9.558,166.19],"0.62":[19.405,9.541,166.171],"0.67":[19.6,9.554,166.085],"0.71":[19.506,9.513,166.096],"0.75":[19.422,9.491,166.184],"0.79":[19.438,9.496,166.179],"0.83":[19.441,9.546,166.179],"0.88":[19.434,9.56,166.183],"0.92":[19.444,9.558,166.175],"0.96":[19.438,9.562,166.189],"1.0":[19.432,9.553,166.172],"1.04":[19.435,9.551,166.174],"1.08":[19.437,9.569,166.172],"1.12":[19.432,9.562,166.179]},"position":[6.1,11.9,-0.5]},"b":{"rotation":{"0.0":[0,0,0],"0.12":[0,0,0],"0.17":[0.004,0,0],"0.21":[0.002,0,0],"0.25":[0.001,0,0],"0.29":[0.005,0,0],"0.33":[0,0,0],"0.88":[0,0,0],"0.92":[0.004,0,0],"0.96":[0.005,0,0],"1.0":[0,0,0],"1.12":[0,0,0]}},"lefthand":{"rotation":{"0.0":[62.494,-1.711,70.42],"0.04":[48.013,-7.828,65.405],"0.08":[34.049,-14.749,61.721],"0.12":[21.516,-21.546,59.393],"0.17":[12.29,-26.988,57.978],"0.21":[8.062,-30.378,56.225],"0.25":[11.169,-31.056,52.578],"0.29":[19.257,-28.713,48.3],"0.33":[27.831,-23.769,46.63],"0.38":[34.089,-17.998,49.028],"0.42":[39.739,-11.744,54.711],"0.46":[46.25,-5.392,62.47],"0.5":[53.974,0.396,71.527],"0.54":[62.856,5.033,80.759],"0.58":[72.431,8.276,89.112],"0.62":[82.156,10.334,95.497],"0.67":[92.173,11.911,98.612],"0.71":[102.516,13.505,99.338],"0.75":[112.177,15.516,98.365],"0.79":[120.34,18.198,96.534],"0.83":[125.638,21.862,94.671],"0.88":[127.22,27.107,91.828],"0.92":[125.524,33.443,87.539],"0.96":[122.195,39.312,82.642],"1.0":[120.004,43.242,79.315],"1.04":[119.472,44.9,78.334],"1.08":[119.652,45.185,78.635],"1.12":[119.843,45.51,78.929]},"position":{"0.0":[31.794,-31.182,-9.763],"0.04":[33.41,-28.911,-4.067],"0.08":[33.428,-26.54,1.698],"0.12":[32.174,-24.379,6.626],"0.17":[30.884,-22.883,9.546],"0.21":[30.355,-21.916,10.716],"0.25":[30.898,-21.374,10.065],"0.29":[32.095,-21.343,7.959],"0.33":[33.156,-22.071,5.116],"0.38":[33.639,-23.464,2.43],"0.42":[33.474,-25.407,-0.233],"0.46":[32.633,-27.57,-3.042],"0.5":[31.048,-29.584,-5.934],"0.54":[28.968,-31.107,-8.704],"0.58":[26.711,-31.995,-11.228],"0.62":[24.589,-32.254,-13.459],"0.67":[22.942,-31.792,-15.514],"0.71":[21.59,-30.874,-17.461],"0.75":[20.374,-29.796,-19.185],"0.79":[19.18,-28.84,-20.676],"0.83":[18.035,-28.315,-21.953],"0.88":[17.188,-28.189,-23.02],"0.92":[16.643,-28.271,-23.929],"0.96":[16.234,-28.429,-24.663],"1.0":[15.866,-28.469,-25.111],"1.04":[15.599,-28.477,-25.36],"1.08":[15.501,-28.488,-25.443],"1.12":[15.447,-28.463,-25.443]}},"root":{"position":{"0.0":[0,0.7,4.8],"0.58":{"pre":[0,0.7,4.8],"post":[0,0,0]}}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"melee_2":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[-59.091,-133.534,55.383],"0.04":[-80.215,-129.6,78.807],"0.08":[-121.42,-133.891,105.187],"0.12":[-143.421,-150.705,111.714],"0.17":[-155.381,-166.467,103.931],"0.21":[-171.168,-177.735,90.549],"0.25":[-189.959,-181.571,74.098],"0.29":[-199.444,-180.649,67.244],"0.33":[-184.618,-189.203,70.327],"0.38":[-166.028,-195.779,76.543],"0.42":[-145.873,-198.049,84.815],"0.46":[-128.673,-194.675,93.158],"0.5":[-118.734,-184.827,103.956],"0.54":[-116.373,-172.53,116.713],"0.58":[-118.182,-162.567,126.363],"0.62":[-118.552,-154.588,127.619],"0.67":[-116.275,-147.326,122.354],"0.71":[-111.578,-141.208,113.501],"0.75":[-105.437,-136.809,103.341],"0.79":[-99.868,-133.876,95.127],"0.83":[-96.723,-132.126,91.073],"0.88":[-95.127,-131.313,89.094],"0.92":[-94.573,-131.015,88.456],"0.96":[-94.446,-130.895,88.363],"1.0":[-94.008,-130.676,87.848],"1.04":[-93.763,-130.556,87.55],"1.08":[-93.921,-130.64,87.744],"1.12":[-94.094,-130.721,87.954]},"position":{"0.0":[1.721,-26.582,-24.013],"0.04":[-5.748,-24.433,-26.474],"0.08":[-13.973,-25.511,-24.989],"0.12":[-19.504,-27.434,-22.192],"0.17":[-23.659,-28.378,-19.712],"0.21":[-26.815,-29.447,-16.695],"0.25":[-28.974,-30.724,-13.232],"0.29":[-30.565,-32.684,-7.438],"0.33":[-28.56,-33.224,-11.281],"0.38":[-24.84,-33.516,-15.602],"0.42":[-19.96,-33.528,-18.751],"0.46":[-15.717,-33.031,-20.086],"0.5":[-14.184,-31.671,-20.07],"0.54":[-14.246,-29.964,-19.457],"0.58":[-14.447,-28.592,-18.786],"0.62":[-14.093,-27.803,-18.528],"0.67":[-13.588,-27.331,-18.575],"0.71":[-13.081,-26.991,-18.751],"0.75":[-12.62,-26.73,-18.949],"0.79":[-12.271,-26.497,-19.061],"0.83":[-12.093,-26.321,-19.076],"0.88":[-12.014,-26.216,-19.089],"0.92":[-11.989,-26.166,-19.096],"0.96":[-11.988,-26.139,-19.103],"1.0":[-11.967,-26.106,-19.106],"1.04":[-11.955,-26.095,-19.11],"1.08":[-11.962,-26.103,-19.108],"1.12":[-11.971,-26.11,-19.105]}},"stiletto":{"rotation":{"0.0":[19.565,9.595,166.099],"0.04":[19.59,9.685,166.138],"0.08":[19.093,8.787,166.646],"0.12":[19.45,9.549,166.192],"0.17":[19.543,9.745,166.269],"0.21":[19.622,9.853,166.351],"0.25":[19.457,9.714,166.115],"0.29":[19.46,9.541,166.127],"0.33":[19.493,9.539,166.225],"0.38":[19.499,9.525,166.242],"0.42":[19.49,9.518,166.203],"0.46":[19.429,9.527,166.123],"0.5":[19.593,9.477,166.181],"0.54":[19.595,9.416,166.147],"0.58":[19.467,9.465,166.184],"0.62":[19.444,9.496,166.192],"0.67":[19.426,9.507,166.177],"0.71":[19.432,9.537,166.183],"0.75":[19.441,9.545,166.177],"0.79":[19.437,9.534,166.182],"0.83":[19.435,9.555,166.179],"0.88":[19.431,9.571,166.175],"0.92":[19.44,9.552,166.184],"0.96":[19.441,9.557,166.174],"1.0":[19.435,9.565,166.186],"1.04":[19.436,9.566,166.173],"1.08":[19.435,9.558,166.184],"1.12":[19.436,9.563,166.19]},"position":[6.1,11.9,-0.5]},"b":{"rotation":{"0.0":[0.001,0,0],"0.04":[0.002,0,0],"0.08":[0,0,0],"0.38":[0,0,0],"0.42":[0.007,0,0],"0.46":[0,0,0],"1.12":[0,0,0]}},"lefthand":{"rotation":{"0.0":[100.253,-17.721,91.852],"0.04":[84.534,-23.191,96.421],"0.08":[71.673,-26.131,100.365],"0.12":[63.09,-26.663,102.294],"0.17":[56.399,-26.175,103.153],"0.21":[51.147,-25.249,103.139],"0.25":[47.613,-24.206,102.115],"0.29":[45.96,-23.193,100.044],"0.33":[47.066,-22.26,96.473],"0.38":[51.99,-20.837,90.436],"0.42":[59.982,-18.165,82.744],"0.46":[68.694,-14.049,75.619],"0.5":[75.959,-9.233,71.087],"0.54":[80.83,-4.986,69.678],"0.58":[84.446,-1.493,70.595],"0.62":[87.823,1.409,72.862],"0.67":[91.278,3.806,75.871],"0.71":[95.019,5.988,78.871],"0.75":[99.009,8.317,81.374],"0.79":[103.173,11.356,82.962],"0.83":[107.448,17.543,82.563],"0.88":[111.249,25.849,81.211],"0.92":[114.083,33.045,80.205],"0.96":[116.294,37.975,79.848],"1.0":[117.652,40.912,79.524],"1.04":[118.645,43.037,79.189],"1.08":[119.439,44.701,78.982],"1.12":[119.843,45.51,78.929]},"position":{"0.0":[25.262,-35.267,-17.244],"0.04":[24.47,-35.253,-17.323],"0.08":[24.092,-35.208,-17.231],"0.12":[24.303,-35.139,-16.934],"0.17":[24.845,-35.049,-16.469],"0.21":[25.526,-34.938,-15.915],"0.25":[26.196,-34.832,-15.327],"0.29":[26.741,-34.737,-14.796],"0.33":[27.052,-34.683,-14.438],"0.38":[27.227,-34.693,-14.128],"0.42":[27.312,-34.75,-13.877],"0.46":[27.283,-34.807,-13.851],"0.5":[27.069,-34.82,-14.299],"0.54":[26.619,-34.722,-15.283],"0.58":[25.886,-34.476,-16.705],"0.62":[24.863,-34.049,-18.374],"0.67":[23.541,-33.41,-20.085],"0.71":[22.023,-32.601,-21.648],"0.75":[20.455,-31.699,-22.943],"0.79":[18.982,-30.801,-23.915],"0.83":[17.742,-30.016,-24.557],"0.88":[16.769,-29.368,-24.977],"0.92":[16.08,-28.894,-25.225],"0.96":[15.639,-28.592,-25.368],"1.0":[15.504,-28.502,-25.415],"1.04":[15.494,-28.495,-25.425],"1.08":[15.472,-28.476,-25.438],"1.12":[15.447,-28.464,-25.443]}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"melee_3":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[60.344,-40.86,-108.677],"0.04":[121.145,-50.255,-122.076],"0.08":[172.11,-42.709,-128.463],"0.12":[180.83,-41.259,-129.167],"0.17":[182.373,-40.909,-129.51],"0.21":[184.174,-40.571,-129.79],"0.25":[185.77,-40.474,-129.77],"0.29":[186.545,-40.533,-130.199],"0.33":[189.265,-41.307,-111.347],"0.38":[185.365,-33.052,-90.103],"0.42":[182.712,-13.197,-76.745],"0.46":[175.43,-0.847,-82.3],"0.5":[155.917,2.893,-97.555],"0.54":[111.846,4.727,-88.113],"0.58":[82.207,14.47,-75.784],"0.62":[76.829,7.087,-74.97],"0.67":[74.913,-3.98,-73.579],"0.71":[73.834,-15.504,-71.859],"0.75":[72.362,-24.904,-70.175],"0.79":[71.076,-31.416,-69.858],"0.83":[72.33,-36.746,-72.917],"0.88":[75.553,-41.15,-78.122],"0.92":[79.716,-44.552,-84.155],"0.96":[83.297,-47.178,-88.956],"1.0":[84.996,-48.672,-91.004],"1.04":[85.566,-49.105,-91.682],"1.08":[85.625,-49.111,-91.751],"1.12":[85.902,-49.29,-92.046]},"position":{"0.0":[-13.854,-26.459,-26.016],"0.04":[-3.287,-22.774,-28.331],"0.08":[1.611,-22.725,-28.2],"0.12":[2.055,-22.753,-27.975],"0.17":[2.302,-22.641,-27.857],"0.21":[2.535,-22.522,-27.72],"0.25":[2.731,-22.472,-27.581],"0.29":[2.966,-22.537,-27.421],"0.33":[5.023,-27.324,-25.537],"0.38":[6.035,-32.194,-21.569],"0.42":[7.861,-33.938,-15.444],"0.46":[8.831,-34.355,-12.471],"0.5":[8.928,-35.046,-12.441],"0.54":[2.503,-39.057,-16.963],"0.58":[-5.967,-41.066,-19.829],"0.62":[-7.984,-38.724,-21.511],"0.67":[-9.063,-35.476,-22.671],"0.71":[-9.739,-32.16,-22.99],"0.75":[-10.405,-29.519,-22.547],"0.79":[-11.139,-27.903,-21.721],"0.83":[-11.541,-27.065,-20.85],"0.88":[-11.708,-26.617,-20.065],"0.92":[-11.743,-26.345,-19.379],"0.96":[-11.862,-26.199,-19.172],"1.0":[-11.965,-26.068,-19.111],"1.04":[-11.985,-26.059,-19.096],"1.08":[-11.974,-26.097,-19.105],"1.12":[-11.971,-26.11,-19.105]}},"stiletto":{"rotation":{"0.0":[172.515,-2.051,-12.502],"0.04":[172.559,-2.779,-13.083],"0.08":[172.61,-1.901,-12.725],"0.12":[172.601,-1.89,-12.729],"0.17":[172.621,-1.898,-12.684],"0.21":[172.606,-1.916,-12.654],"0.25":[172.609,-1.922,-12.628],"0.29":[172.615,-1.937,-12.603],"0.33":[172.566,-1.711,-12.654],"0.38":[173.082,-1.585,-12.757],"0.42":[172.933,-1.793,-12.736],"0.46":[172.585,-2.045,-12.422],"0.5":[199.687,175.383,-15.218],"0.54":[199.187,190.112,-19.813],"0.58":[199.734,186.026,-17.152],"0.62":[199.451,175.341,-14.631],"0.67":[199.518,170.856,-13.565],"0.71":[199.478,170.787,-13.616],"0.75":[199.441,170.673,-13.682],"0.79":[199.449,170.511,-13.742],"0.83":[199.414,170.467,-13.818],"0.88":[199.426,170.444,-13.823],"0.92":[199.439,170.442,-13.822],"0.96":[199.441,170.443,-13.817],"1.0":[199.437,170.433,-13.811],"1.04":[199.425,170.432,-13.821],"1.08":[199.419,170.446,-13.828],"1.12":[199.437,170.447,-13.822]},"position":{"0.0":[6.1,11.9,-1.6],"0.57":{"pre":[6.1,11.9,-1.6],"post":[6.1,11.9,-0.5]}}},"b":{"rotation":{"0.0":[0.002,0,0],"0.04":[0.005,0,0],"0.08":[0,0,0],"0.38":[0,0,0],"0.42":[0.004,0,0],"0.46":[0,0,0],"0.67":[0,0,0],"0.71":[0.002,0,0],"0.75":[0.001,0,0],"0.79":[0.005,0,0],"0.83":[0,0,0],"0.96":[0,0,0],"1.0":[0.001,0,0],"1.04":[0.002,0,0],"1.08":[0,0,0],"1.12":[0,0,0]}},"lefthand":{"rotation":{"0.0":[69.324,8.548,53.526],"0.04":[49.993,-3.802,50.984],"0.08":[31.791,-15.797,51.823],"0.12":[16.174,-25.166,54.992],"0.17":[7.615,-30.161,57.294],"0.21":[6.103,-32.949,56.308],"0.25":[9.822,-34.223,52.4],"0.29":[16.709,-33.232,47.39],"0.33":[24.214,-29.199,44.305],"0.38":[30.083,-22.925,45.497],"0.42":[34.112,-13.124,54.821],"0.46":[39.922,1.218,75.433],"0.5":[51.681,13.293,102.603],"0.54":[66.305,16.447,124.879],"0.58":[79.616,13.318,130.718],"0.62":[93.446,10.924,120.601],"0.67":[105.883,14.831,102.915],"0.71":[113.85,22.55,88.467],"0.75":[118,29.088,81.744],"0.79":[119.831,33.796,79.381],"0.83":[120.117,37.161,79.063],"0.88":[119.902,39.852,79.348],"0.92":[119.813,42.43,79.341],"0.96":[119.931,44.441,78.983],"1.0":[119.89,45.033,78.996],"1.04":[119.855,45.377,79],"1.08":[119.849,45.497,78.952],"1.12":[119.843,45.51,78.929]},"position":{"0.0":[32.769,-25.647,-12.687],"0.04":[34.75,-24.609,-5.446],"0.08":[34.835,-24.172,0.188],"0.12":[33.631,-23.829,4.588],"0.17":[32.586,-23.605,6.648],"0.21":[32.393,-23.166,7.128],"0.25":[32.872,-22.556,6.563],"0.29":[33.719,-22.103,5.177],"0.33":[34.56,-22.28,3.138],"0.38":[35.037,-23.337,0.932],"0.42":[34.711,-26.071,-1.506],"0.46":[32.42,-30.653,-4.664],"0.5":[27.599,-34.481,-8.192],"0.54":[22.731,-35.875,-11.102],"0.58":[20.033,-35.579,-13.496],"0.62":[19.224,-34.516,-16.097],"0.67":[19.138,-32.861,-18.848],"0.71":[18.761,-31.234,-21.116],"0.75":[17.959,-30.218,-22.597],"0.79":[17.219,-29.654,-23.577],"0.83":[16.69,-29.337,-24.27],"0.88":[16.233,-29.131,-24.829],"0.92":[15.74,-28.922,-25.34],"0.96":[15.509,-28.62,-25.451],"1.0":[15.472,-28.519,-25.46],"1.04":[15.459,-28.462,-25.462],"1.08":[15.45,-28.45,-25.457],"1.12":[15.447,-28.463,-25.443]}},"root":{"position":{"0.0":[0,0,11.18],"0.49":{"pre":[0,0,11.18],"post":[0,0,0]}}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"idle":{"loop":true,"bones":{"root":{"rotation":[0,0,0],"position":[0,0,0],"scale":1}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/stiletto.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/stiletto.geo.json new file mode 100644 index 0000000..0671a3d --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/stiletto.geo.json @@ -0,0 +1,4765 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 4, + "visible_bounds_height": 4, + "visible_bounds_offset": [0, 0, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "bone", + "parent": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "knife_and_right", + "parent": "bone", + "pivot": [6, 19, 0] + }, + { + "name": "righthand", + "parent": "knife_and_right", + "pivot": [6, 19, 0] + }, + { + "name": "righthand_pos", + "parent": "righthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [4, 8, -2], + "size": [3, 12, 4], + "uv": { + "north": {"uv": [0, 0], "uv_size": [4, 12]}, + "east": {"uv": [4, 0], "uv_size": [4, 12]}, + "south": {"uv": [8, 0], "uv_size": [4, 12]}, + "west": {"uv": [0, 12], "uv_size": [4, 12]}, + "up": {"uv": [16, 0], "uv_size": [4, 4]}, + "down": {"uv": [16, 8], "uv_size": [4, -4]} + } + } + ] + }, + { + "name": "stiletto", + "parent": "knife_and_right", + "pivot": [-0.21875, 10.25, 1.06987] + }, + { + "name": "a", + "parent": "stiletto", + "pivot": [0.0404, 10.26872, -2.5301], + "cubes": [ + { + "origin": [-0.29717, 9.575, -1.21084], + "size": [0.23524, 1.2546, 2.97968], + "uv": { + "north": {"uv": [37, 37], "uv_size": [0.25, 1.25]}, + "east": {"uv": [0, 9], "uv_size": [3, 1.25]}, + "south": {"uv": [2, 38], "uv_size": [0.25, 1.25]}, + "west": {"uv": [9, 0], "uv_size": [3, 1.25]}, + "up": {"uv": [14, 22], "uv_size": [0.25, 3]}, + "down": {"uv": [23, 5], "uv_size": [0.25, -3]} + } + }, + { + "origin": [-0.29717, 9.575, 2.86661], + "size": [0.23524, 1.2546, 0.15683], + "uv": { + "north": {"uv": [9, 38], "uv_size": [0.25, 1.25]}, + "east": {"uv": [38, 11], "uv_size": [0.25, 1.25]}, + "south": {"uv": [13, 38], "uv_size": [0.25, 1.25]}, + "west": {"uv": [17, 38], "uv_size": [0.25, 1.25]}, + "up": {"uv": [62, 50], "uv_size": [0.25, 0.25]}, + "down": {"uv": [52, 62.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 9.575, 1.76884], + "size": [0.23524, 0.54888, 1.09778], + "uv": { + "north": {"uv": [46, 54], "uv_size": [0.25, 0.5]}, + "east": {"uv": [22, 25], "uv_size": [1, 0.5]}, + "south": {"uv": [48, 54], "uv_size": [0.25, 0.5]}, + "west": {"uv": [25, 22], "uv_size": [1, 0.5]}, + "up": {"uv": [47, 14], "uv_size": [0.25, 1]}, + "down": {"uv": [47, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.29717, 10.28072, 1.76884], + "size": [0.23524, 0.54888, 1.09778], + "uv": { + "north": {"uv": [50, 54], "uv_size": [0.25, 0.5]}, + "east": {"uv": [24, 25], "uv_size": [1, 0.5]}, + "south": {"uv": [52, 54], "uv_size": [0.25, 0.5]}, + "west": {"uv": [0, 26], "uv_size": [1, 0.5]}, + "up": {"uv": [22, 47], "uv_size": [0.25, 1]}, + "down": {"uv": [47, 26], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.29717, 9.575, 3.65074], + "size": [0.23524, 1.2546, 0.70571], + "uv": { + "north": {"uv": [19, 38], "uv_size": [0.25, 1.25]}, + "east": {"uv": [19, 4], "uv_size": [0.75, 1.25]}, + "south": {"uv": [38, 22], "uv_size": [0.25, 1.25]}, + "west": {"uv": [10, 20], "uv_size": [0.75, 1.25]}, + "up": {"uv": [24, 50], "uv_size": [0.25, 0.75]}, + "down": {"uv": [50, 29.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.37557, 9.73183, 4.6701], + "size": [0.07841, 0.94095, 0.23523], + "inflate": 0.001, + "uv": { + "north": {"uv": [27, 47], "uv_size": [0.25, 1]}, + "east": {"uv": [31, 47], "uv_size": [0.25, 1]}, + "south": {"uv": [47, 32], "uv_size": [0.25, 1]}, + "west": {"uv": [33, 47], "uv_size": [0.25, 1]}, + "up": {"uv": [62, 52], "uv_size": [0.25, 0.25]}, + "down": {"uv": [54, 62.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.73183, 4.35645], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [62, 54], "uv_size": [0.25, 0.25]}, + "east": {"uv": [62, 56], "uv_size": [0.25, 0.25]}, + "south": {"uv": [62, 58], "uv_size": [0.25, 0.25]}, + "west": {"uv": [60, 62], "uv_size": [0.25, 0.25]}, + "up": {"uv": [62, 60], "uv_size": [0.25, 0.25]}, + "down": {"uv": [62, 62.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 10.35913, 4.35645], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [63, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [4, 63], "uv_size": [0.25, 0.25]}, + "south": {"uv": [63, 8], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 63], "uv_size": [0.25, 0.25]}, + "up": {"uv": [63, 10], "uv_size": [0.25, 0.25]}, + "down": {"uv": [63, 12.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.73183, 3.65074], + "size": [0.07841, 0.94095, 0.70571], + "uv": { + "north": {"uv": [47, 34], "uv_size": [0.25, 1]}, + "east": {"uv": [19, 7], "uv_size": [0.75, 1]}, + "south": {"uv": [47, 36], "uv_size": [0.25, 1]}, + "west": {"uv": [23, 6], "uv_size": [0.75, 1]}, + "up": {"uv": [36, 50], "uv_size": [0.25, 0.75]}, + "down": {"uv": [38, 50.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.29717, 9.575, -2.07338], + "size": [0.23524, 1.2546, 0.23524], + "uv": { + "north": {"uv": [23, 38], "uv_size": [0.25, 1.25]}, + "east": {"uv": [28, 38], "uv_size": [0.25, 1.25]}, + "south": {"uv": [38, 28], "uv_size": [0.25, 1.25]}, + "west": {"uv": [38, 33], "uv_size": [0.25, 1.25]}, + "up": {"uv": [14, 63], "uv_size": [0.25, 0.25]}, + "down": {"uv": [63, 14.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 9.92475, -1.22011], + "size": [0.31315, 0.15631, 0.15631], + "inflate": -0.001, + "pivot": [-0.21875, 10.08132, -1.14195], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [63, 16], "uv_size": [0.25, 0.25]}, + "east": {"uv": [63, 18], "uv_size": [0.25, 0.25]}, + "south": {"uv": [22, 63], "uv_size": [0.25, 0.25]}, + "west": {"uv": [63, 24], "uv_size": [0.25, 0.25]}, + "up": {"uv": [26, 63], "uv_size": [0.25, 0.25]}, + "down": {"uv": [63, 26.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 9.92475, -1.55336], + "size": [0.31315, 0.15631, 0.15632], + "inflate": -0.001, + "pivot": [-0.21875, 10.08132, -1.47519], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [28, 63], "uv_size": [0.25, 0.25]}, + "east": {"uv": [30, 63], "uv_size": [0.25, 0.25]}, + "south": {"uv": [63, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 63], "uv_size": [0.25, 0.25]}, + "up": {"uv": [63, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 63.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 10.2776, -1.22011], + "size": [0.31315, 0.15632, 0.15631], + "inflate": -0.001, + "pivot": [-0.21875, 10.43418, -1.14195], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [63, 34], "uv_size": [0.25, 0.25]}, + "east": {"uv": [63, 40], "uv_size": [0.25, 0.25]}, + "south": {"uv": [42, 63], "uv_size": [0.25, 0.25]}, + "west": {"uv": [63, 46], "uv_size": [0.25, 0.25]}, + "up": {"uv": [63, 48], "uv_size": [0.25, 0.25]}, + "down": {"uv": [56, 63.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 10.2776, -1.55336], + "size": [0.31315, 0.15632, 0.15632], + "inflate": -0.001, + "pivot": [-0.21875, 10.43418, -1.47519], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [58, 63], "uv_size": [0.25, 0.25]}, + "east": {"uv": [0, 64], "uv_size": [0.25, 0.25]}, + "south": {"uv": [2, 64], "uv_size": [0.25, 0.25]}, + "west": {"uv": [64, 2], "uv_size": [0.25, 0.25]}, + "up": {"uv": [64, 4], "uv_size": [0.25, 0.25]}, + "down": {"uv": [6, 64.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 9.575, -1.52449], + "size": [0.23524, 0.47048, 0.31365], + "uv": { + "north": {"uv": [54, 52], "uv_size": [0.25, 0.5]}, + "east": {"uv": [54, 54], "uv_size": [0.25, 0.5]}, + "south": {"uv": [55, 0], "uv_size": [0.25, 0.5]}, + "west": {"uv": [4, 55], "uv_size": [0.25, 0.5]}, + "up": {"uv": [64, 6], "uv_size": [0.25, 0.25]}, + "down": {"uv": [8, 64.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 10.35913, -1.52449], + "size": [0.23524, 0.47047, 0.31365], + "uv": { + "north": {"uv": [55, 8], "uv_size": [0.25, 0.5]}, + "east": {"uv": [10, 55], "uv_size": [0.25, 0.5]}, + "south": {"uv": [55, 10], "uv_size": [0.25, 0.5]}, + "west": {"uv": [55, 12], "uv_size": [0.25, 0.5]}, + "up": {"uv": [12, 64], "uv_size": [0.25, 0.25]}, + "down": {"uv": [16, 64.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 9.575, -1.75973], + "size": [0.23524, 1.2546, 0.23524], + "uv": { + "north": {"uv": [0, 39], "uv_size": [0.25, 1.25]}, + "east": {"uv": [39, 0], "uv_size": [0.25, 1.25]}, + "south": {"uv": [39, 3], "uv_size": [0.25, 1.25]}, + "west": {"uv": [6, 39], "uv_size": [0.25, 1.25]}, + "up": {"uv": [18, 64], "uv_size": [0.25, 0.25]}, + "down": {"uv": [20, 64.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.73183, 3.02344], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [64, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [64, 22], "uv_size": [0.25, 0.25]}, + "south": {"uv": [24, 64], "uv_size": [0.25, 0.25]}, + "west": {"uv": [64, 28], "uv_size": [0.25, 0.25]}, + "up": {"uv": [36, 64], "uv_size": [0.25, 0.25]}, + "down": {"uv": [64, 36.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.73183, 2.86661], + "size": [0.07841, 0.94095, 0.15683], + "uv": { + "north": {"uv": [47, 42], "uv_size": [0.25, 1]}, + "east": {"uv": [43, 47], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 48], "uv_size": [0.25, 1]}, + "west": {"uv": [48, 2], "uv_size": [0.25, 1]}, + "up": {"uv": [38, 64], "uv_size": [0.25, 0.25]}, + "down": {"uv": [64, 38.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 10.35913, 3.02344], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [40, 64], "uv_size": [0.25, 0.25]}, + "east": {"uv": [64, 42], "uv_size": [0.25, 0.25]}, + "south": {"uv": [44, 64], "uv_size": [0.25, 0.25]}, + "west": {"uv": [64, 44], "uv_size": [0.25, 0.25]}, + "up": {"uv": [46, 64], "uv_size": [0.25, 0.25]}, + "down": {"uv": [48, 64.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.73183, 3.33709], + "size": [0.07841, 0.94095, 0.23523], + "uv": { + "north": {"uv": [6, 48], "uv_size": [0.25, 1]}, + "east": {"uv": [16, 48], "uv_size": [0.25, 1]}, + "south": {"uv": [18, 48], "uv_size": [0.25, 1]}, + "west": {"uv": [20, 48], "uv_size": [0.25, 1]}, + "up": {"uv": [50, 64], "uv_size": [0.25, 0.25]}, + "down": {"uv": [64, 50.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 10.28072, 1.76884], + "size": [0.07841, 0.39206, 1.09778], + "uv": { + "north": {"uv": [14, 55], "uv_size": [0.25, 0.5]}, + "east": {"uv": [26, 0], "uv_size": [1, 0.5]}, + "south": {"uv": [55, 14], "uv_size": [0.25, 0.5]}, + "west": {"uv": [2, 26], "uv_size": [1, 0.5]}, + "up": {"uv": [48, 21], "uv_size": [0.25, 1]}, + "down": {"uv": [48, 24], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.37557, 9.73183, 1.76884], + "size": [0.07841, 0.39206, 1.09778], + "uv": { + "north": {"uv": [55, 16], "uv_size": [0.25, 0.5]}, + "east": {"uv": [4, 26], "uv_size": [1, 0.5]}, + "south": {"uv": [55, 18], "uv_size": [0.25, 0.5]}, + "west": {"uv": [6, 26], "uv_size": [1, 0.5]}, + "up": {"uv": [24, 48], "uv_size": [0.25, 1]}, + "down": {"uv": [48, 31], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.37557, 9.73183, -1.52449], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [52, 64], "uv_size": [0.25, 0.25]}, + "east": {"uv": [64, 52], "uv_size": [0.25, 0.25]}, + "south": {"uv": [54, 64], "uv_size": [0.25, 0.25]}, + "west": {"uv": [64, 54], "uv_size": [0.25, 0.25]}, + "up": {"uv": [64, 56], "uv_size": [0.25, 0.25]}, + "down": {"uv": [64, 58.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.73183, -1.21084], + "size": [0.07841, 0.94095, 2.97968], + "uv": { + "north": {"uv": [37, 48], "uv_size": [0.25, 1]}, + "east": {"uv": [8, 9], "uv_size": [3, 1]}, + "south": {"uv": [48, 38], "uv_size": [0.25, 1]}, + "west": {"uv": [8, 11], "uv_size": [3, 1]}, + "up": {"uv": [23, 8], "uv_size": [0.25, 3]}, + "down": {"uv": [10, 26], "uv_size": [0.25, -3]} + } + }, + { + "origin": [-0.37557, 10.35913, -1.52449], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [60, 64], "uv_size": [0.25, 0.25]}, + "east": {"uv": [64, 60], "uv_size": [0.25, 0.25]}, + "south": {"uv": [62, 64], "uv_size": [0.25, 0.25]}, + "west": {"uv": [64, 62], "uv_size": [0.25, 0.25]}, + "up": {"uv": [64, 64], "uv_size": [0.25, 0.25]}, + "down": {"uv": [65, 0.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.73183, -1.75973], + "size": [0.07841, 0.94095, 0.23524], + "uv": { + "north": {"uv": [39, 48], "uv_size": [0.25, 1]}, + "east": {"uv": [48, 40], "uv_size": [0.25, 1]}, + "south": {"uv": [41, 48], "uv_size": [0.25, 1]}, + "west": {"uv": [48, 44], "uv_size": [0.25, 1]}, + "up": {"uv": [4, 65], "uv_size": [0.25, 0.25]}, + "down": {"uv": [65, 8.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 9.92475, 2.87638], + "size": [0.31315, 0.15631, 0.15631], + "inflate": -0.001, + "pivot": [-0.21875, 10.08132, 2.95453], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [10, 65], "uv_size": [0.25, 0.25]}, + "east": {"uv": [65, 10], "uv_size": [0.25, 0.25]}, + "south": {"uv": [65, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 65], "uv_size": [0.25, 0.25]}, + "up": {"uv": [65, 14], "uv_size": [0.25, 0.25]}, + "down": {"uv": [65, 16.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 10.2776, 2.87638], + "size": [0.31315, 0.15632, 0.15631], + "inflate": -0.001, + "pivot": [-0.21875, 10.43418, 2.95453], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [65, 18], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 65], "uv_size": [0.25, 0.25]}, + "south": {"uv": [65, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 65], "uv_size": [0.25, 0.25]}, + "up": {"uv": [65, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 65.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 9.575, 4.35645], + "size": [0.23524, 0.47048, 0.31365], + "uv": { + "north": {"uv": [22, 55], "uv_size": [0.25, 0.5]}, + "east": {"uv": [55, 24], "uv_size": [0.25, 0.5]}, + "south": {"uv": [26, 55], "uv_size": [0.25, 0.5]}, + "west": {"uv": [55, 26], "uv_size": [0.25, 0.5]}, + "up": {"uv": [30, 65], "uv_size": [0.25, 0.25]}, + "down": {"uv": [65, 30.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 9.92475, 4.54263], + "size": [0.31315, 0.15631, 0.15632], + "inflate": -0.001, + "pivot": [-0.21875, 10.08132, 4.62079], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [32, 65], "uv_size": [0.25, 0.25]}, + "east": {"uv": [65, 32], "uv_size": [0.25, 0.25]}, + "south": {"uv": [34, 65], "uv_size": [0.25, 0.25]}, + "west": {"uv": [65, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [65, 40], "uv_size": [0.25, 0.25]}, + "down": {"uv": [42, 65.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 10.2776, 4.54263], + "size": [0.31315, 0.15632, 0.15632], + "inflate": -0.001, + "pivot": [-0.21875, 10.43418, 4.62079], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [65, 46], "uv_size": [0.25, 0.25]}, + "east": {"uv": [65, 48], "uv_size": [0.25, 0.25]}, + "south": {"uv": [56, 65], "uv_size": [0.25, 0.25]}, + "west": {"uv": [58, 65], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 66], "uv_size": [0.25, 0.25]}, + "down": {"uv": [2, 66.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 9.575, 4.6701], + "size": [0.23524, 1.2546, 0.23523], + "uv": { + "north": {"uv": [39, 6], "uv_size": [0.25, 1.25]}, + "east": {"uv": [39, 14], "uv_size": [0.25, 1.25]}, + "south": {"uv": [39, 17], "uv_size": [0.25, 1.25]}, + "west": {"uv": [21, 39], "uv_size": [0.25, 1.25]}, + "up": {"uv": [66, 2], "uv_size": [0.25, 0.25]}, + "down": {"uv": [66, 4.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 10.14316, 4.80514], + "size": [0.23524, 0.74491, 0.23524], + "pivot": [-0.21875, 10.45681, 4.92276], + "rotation": [20, 0, 0], + "uv": { + "north": {"uv": [50, 38], "uv_size": [0.25, 0.75]}, + "east": {"uv": [40, 50], "uv_size": [0.25, 0.75]}, + "south": {"uv": [50, 40], "uv_size": [0.25, 0.75]}, + "west": {"uv": [50, 44], "uv_size": [0.25, 0.75]}, + "up": {"uv": [6, 66], "uv_size": [0.25, 0.25]}, + "down": {"uv": [66, 6.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 10.14316, 4.78555], + "size": [0.07841, 0.58809, 0.25484], + "pivot": [-0.21875, 10.45681, 4.92276], + "rotation": [20, 0, 0], + "uv": { + "north": {"uv": [28, 55], "uv_size": [0.25, 0.5]}, + "east": {"uv": [30, 55], "uv_size": [0.25, 0.5]}, + "south": {"uv": [55, 30], "uv_size": [0.25, 0.5]}, + "west": {"uv": [32, 55], "uv_size": [0.25, 0.5]}, + "up": {"uv": [8, 66], "uv_size": [0.25, 0.25]}, + "down": {"uv": [12, 66.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 10.75493, 4.68459], + "size": [0.07841, 0.17534, 0.25483], + "pivot": [-0.37557, 10.75493, 4.93942], + "rotation": [18.03239, -8.79827, 25.16631], + "uv": { + "north": {"uv": [16, 66], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 66], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 66], "uv_size": [0.25, 0.25]}, + "west": {"uv": [66, 20], "uv_size": [0.25, 0.25]}, + "up": {"uv": [66, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 66.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.47434, 4.68459], + "size": [0.07841, 0.17534, 0.25483], + "pivot": [-0.37557, 9.64967, 4.93942], + "rotation": [-18.03239, -8.79827, -25.16631], + "uv": { + "north": {"uv": [66, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [36, 66], "uv_size": [0.25, 0.25]}, + "south": {"uv": [66, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 66], "uv_size": [0.25, 0.25]}, + "up": {"uv": [66, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 66.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.67335, 4.78555], + "size": [0.07841, 0.58809, 0.25484], + "pivot": [-0.21875, 9.94779, 4.92276], + "rotation": [-20, 0, 0], + "uv": { + "north": {"uv": [55, 32], "uv_size": [0.25, 0.5]}, + "east": {"uv": [34, 55], "uv_size": [0.25, 0.5]}, + "south": {"uv": [55, 34], "uv_size": [0.25, 0.5]}, + "west": {"uv": [55, 41], "uv_size": [0.25, 0.5]}, + "up": {"uv": [66, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 66.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 9.51653, 4.80514], + "size": [0.23524, 0.74491, 0.23524], + "pivot": [-0.21875, 9.94779, 4.92276], + "rotation": [-20, 0, 0], + "uv": { + "north": {"uv": [45, 50], "uv_size": [0.25, 0.75]}, + "east": {"uv": [50, 46], "uv_size": [0.25, 0.75]}, + "south": {"uv": [47, 50], "uv_size": [0.25, 0.75]}, + "west": {"uv": [49, 50], "uv_size": [0.25, 0.75]}, + "up": {"uv": [66, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [46, 66.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 10.35913, 4.35645], + "size": [0.23524, 0.47047, 0.31365], + "uv": { + "north": {"uv": [42, 55], "uv_size": [0.25, 0.5]}, + "east": {"uv": [55, 47], "uv_size": [0.25, 0.5]}, + "south": {"uv": [55, 49], "uv_size": [0.25, 0.5]}, + "west": {"uv": [0, 56], "uv_size": [0.25, 0.5]}, + "up": {"uv": [48, 66], "uv_size": [0.25, 0.25]}, + "down": {"uv": [50, 66.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 9.92475, 4.20938], + "size": [0.31315, 0.15631, 0.15631], + "inflate": -0.001, + "pivot": [-0.21875, 10.08132, 4.28754], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [66, 50], "uv_size": [0.25, 0.25]}, + "east": {"uv": [52, 66], "uv_size": [0.25, 0.25]}, + "south": {"uv": [66, 52], "uv_size": [0.25, 0.25]}, + "west": {"uv": [54, 66], "uv_size": [0.25, 0.25]}, + "up": {"uv": [66, 54], "uv_size": [0.25, 0.25]}, + "down": {"uv": [66, 56.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 10.2776, 4.20938], + "size": [0.31315, 0.15632, 0.15631], + "inflate": -0.001, + "pivot": [-0.21875, 10.43418, 4.28754], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [66, 58], "uv_size": [0.25, 0.25]}, + "east": {"uv": [60, 66], "uv_size": [0.25, 0.25]}, + "south": {"uv": [66, 60], "uv_size": [0.25, 0.25]}, + "west": {"uv": [62, 66], "uv_size": [0.25, 0.25]}, + "up": {"uv": [66, 62], "uv_size": [0.25, 0.25]}, + "down": {"uv": [64, 66.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 9.92475, 3.20962], + "size": [0.31315, 0.15631, 0.15631], + "inflate": -0.001, + "pivot": [-0.21875, 10.08132, 3.28778], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [66, 64], "uv_size": [0.25, 0.25]}, + "east": {"uv": [66, 66], "uv_size": [0.25, 0.25]}, + "south": {"uv": [67, 0], "uv_size": [0.25, 0.25]}, + "west": {"uv": [4, 67], "uv_size": [0.25, 0.25]}, + "up": {"uv": [67, 8], "uv_size": [0.25, 0.25]}, + "down": {"uv": [10, 67.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 10.2776, 3.20962], + "size": [0.31315, 0.15632, 0.15631], + "inflate": -0.001, + "pivot": [-0.21875, 10.43418, 3.28778], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [67, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [67, 12], "uv_size": [0.25, 0.25]}, + "south": {"uv": [14, 67], "uv_size": [0.25, 0.25]}, + "west": {"uv": [67, 14], "uv_size": [0.25, 0.25]}, + "up": {"uv": [67, 16], "uv_size": [0.25, 0.25]}, + "down": {"uv": [67, 18.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 9.575, 3.02344], + "size": [0.23524, 0.47048, 0.31365], + "uv": { + "north": {"uv": [2, 56], "uv_size": [0.25, 0.5]}, + "east": {"uv": [56, 2], "uv_size": [0.25, 0.5]}, + "south": {"uv": [56, 4], "uv_size": [0.25, 0.5]}, + "west": {"uv": [6, 56], "uv_size": [0.25, 0.5]}, + "up": {"uv": [22, 67], "uv_size": [0.25, 0.25]}, + "down": {"uv": [67, 24.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 10.35913, 3.02344], + "size": [0.23524, 0.47047, 0.31365], + "uv": { + "north": {"uv": [56, 6], "uv_size": [0.25, 0.5]}, + "east": {"uv": [8, 56], "uv_size": [0.25, 0.5]}, + "south": {"uv": [12, 56], "uv_size": [0.25, 0.5]}, + "west": {"uv": [16, 56], "uv_size": [0.25, 0.5]}, + "up": {"uv": [26, 67], "uv_size": [0.25, 0.25]}, + "down": {"uv": [67, 26.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 9.575, 3.33709], + "size": [0.23524, 1.2546, 0.23523], + "uv": { + "north": {"uv": [25, 39], "uv_size": [0.25, 1.25]}, + "east": {"uv": [39, 25], "uv_size": [0.25, 1.25]}, + "south": {"uv": [30, 39], "uv_size": [0.25, 1.25]}, + "west": {"uv": [32, 39], "uv_size": [0.25, 1.25]}, + "up": {"uv": [28, 67], "uv_size": [0.25, 0.25]}, + "down": {"uv": [30, 67.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 10.35913, -2.38703], + "size": [0.23524, 0.47047, 0.31365], + "uv": { + "north": {"uv": [18, 56], "uv_size": [0.25, 0.5]}, + "east": {"uv": [20, 56], "uv_size": [0.25, 0.5]}, + "south": {"uv": [56, 20], "uv_size": [0.25, 0.5]}, + "west": {"uv": [56, 22], "uv_size": [0.25, 0.5]}, + "up": {"uv": [67, 30], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 67.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.73183, -2.07338], + "size": [0.07841, 0.94095, 0.23524], + "uv": { + "north": {"uv": [45, 48], "uv_size": [0.25, 1]}, + "east": {"uv": [48, 46], "uv_size": [0.25, 1]}, + "south": {"uv": [47, 48], "uv_size": [0.25, 1]}, + "west": {"uv": [49, 0], "uv_size": [0.25, 1]}, + "up": {"uv": [67, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 67.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.73183, -3.09274], + "size": [0.07841, 0.94095, 0.70571], + "uv": { + "north": {"uv": [4, 49], "uv_size": [0.25, 1]}, + "east": {"uv": [12, 23], "uv_size": [0.75, 1]}, + "south": {"uv": [49, 9], "uv_size": [0.25, 1]}, + "west": {"uv": [23, 15], "uv_size": [0.75, 1]}, + "up": {"uv": [51, 0], "uv_size": [0.25, 0.75]}, + "down": {"uv": [4, 51.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.37557, 9.96707, -3.32798], + "size": [0.07841, 0.47048, 0.23524], + "uv": { + "north": {"uv": [24, 56], "uv_size": [0.25, 0.5]}, + "east": {"uv": [56, 28], "uv_size": [0.25, 0.5]}, + "south": {"uv": [36, 56], "uv_size": [0.25, 0.5]}, + "west": {"uv": [56, 36], "uv_size": [0.25, 0.5]}, + "up": {"uv": [67, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [67, 40.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 10.2284, -3.52878], + "size": [0.07841, 0.33267, 0.31365], + "inflate": -0.001, + "pivot": [-0.33637, 10.09059, -3.17593], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [42, 67], "uv_size": [0.25, 0.25]}, + "east": {"uv": [67, 46], "uv_size": [0.25, 0.25]}, + "south": {"uv": [67, 48], "uv_size": [0.25, 0.25]}, + "west": {"uv": [56, 67], "uv_size": [0.25, 0.25]}, + "up": {"uv": [58, 67], "uv_size": [0.25, 0.25]}, + "down": {"uv": [0, 68.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.84353, -3.52878], + "size": [0.07841, 0.33267, 0.31365], + "inflate": -0.001, + "pivot": [-0.33637, 10.31401, -3.17593], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [2, 68], "uv_size": [0.25, 0.25]}, + "east": {"uv": [68, 2], "uv_size": [0.25, 0.25]}, + "south": {"uv": [68, 4], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 68], "uv_size": [0.25, 0.25]}, + "up": {"uv": [68, 6], "uv_size": [0.25, 0.25]}, + "down": {"uv": [8, 68.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.96707, -3.43888], + "size": [0.07841, 0.47048, 0.1109], + "pivot": [-0.37557, 10.43754, -3.32798], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [38, 56], "uv_size": [0.25, 0.5]}, + "east": {"uv": [56, 38], "uv_size": [0.25, 0.5]}, + "south": {"uv": [40, 56], "uv_size": [0.25, 0.5]}, + "west": {"uv": [56, 43], "uv_size": [0.25, 0.5]}, + "up": {"uv": [12, 68], "uv_size": [0.25, 0.25]}, + "down": {"uv": [16, 68.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 10.37352, -3.41852], + "size": [0.07841, 0.06403, 0.09054], + "pivot": [-0.37557, 10.43754, -3.32798], + "rotation": [-35.26439, -45, 0], + "uv": { + "north": {"uv": [18, 68], "uv_size": [0.25, 0.25]}, + "east": {"uv": [20, 68], "uv_size": [0.25, 0.25]}, + "south": {"uv": [68, 20], "uv_size": [0.25, 0.25]}, + "west": {"uv": [68, 22], "uv_size": [0.25, 0.25]}, + "up": {"uv": [24, 68], "uv_size": [0.25, 0.25]}, + "down": {"uv": [68, 28.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 10.43754, -3.45927], + "size": [0.07842, 0.03609, 0.05288], + "pivot": [-0.29717, 10.43754, -3.4064], + "rotation": [-90.94295, -45, 0], + "uv": { + "north": {"uv": [36, 68], "uv_size": [0.25, 0.25]}, + "east": {"uv": [68, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [38, 68], "uv_size": [0.25, 0.25]}, + "west": {"uv": [68, 38], "uv_size": [0.25, 0.25]}, + "up": {"uv": [40, 68], "uv_size": [0.25, 0.25]}, + "down": {"uv": [68, 42.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.32329, 10.46946, -3.41007], + "size": [0.07841, 0.02036, 0.02981], + "pivot": [-0.32329, 10.48981, -3.38026], + "rotation": [-35.26439, -45, 0], + "uv": { + "north": {"uv": [44, 68], "uv_size": [0.25, 0.25]}, + "east": {"uv": [68, 44], "uv_size": [0.25, 0.25]}, + "south": {"uv": [46, 68], "uv_size": [0.25, 0.25]}, + "west": {"uv": [48, 68], "uv_size": [0.25, 0.25]}, + "up": {"uv": [50, 68], "uv_size": [0.25, 0.25]}, + "down": {"uv": [68, 50.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29778, 9.90189, -3.42198], + "size": [0.07842, 0.0123, 0.01621], + "pivot": [-0.29778, 9.91419, -3.40578], + "rotation": [88.0489, -45, 0], + "uv": { + "north": {"uv": [52, 68], "uv_size": [0.25, 0.25]}, + "east": {"uv": [68, 52], "uv_size": [0.25, 0.25]}, + "south": {"uv": [54, 68], "uv_size": [0.25, 0.25]}, + "west": {"uv": [68, 54], "uv_size": [0.25, 0.25]}, + "up": {"uv": [68, 56], "uv_size": [0.25, 0.25]}, + "down": {"uv": [68, 58.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.96707, -3.41852], + "size": [0.07841, 0.06402, 0.09054], + "pivot": [-0.37557, 9.96707, -3.32798], + "rotation": [35.26439, -45, 0], + "uv": { + "north": {"uv": [60, 68], "uv_size": [0.25, 0.25]}, + "east": {"uv": [68, 60], "uv_size": [0.25, 0.25]}, + "south": {"uv": [62, 68], "uv_size": [0.25, 0.25]}, + "west": {"uv": [68, 62], "uv_size": [0.25, 0.25]}, + "up": {"uv": [64, 68], "uv_size": [0.25, 0.25]}, + "down": {"uv": [68, 64.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 9.93097, -3.45927], + "size": [0.07842, 0.0361, 0.05288], + "pivot": [-0.29717, 9.96707, -3.4064], + "rotation": [90.94295, -45, 0], + "uv": { + "north": {"uv": [66, 68], "uv_size": [0.25, 0.25]}, + "east": {"uv": [68, 66], "uv_size": [0.25, 0.25]}, + "south": {"uv": [68, 68], "uv_size": [0.25, 0.25]}, + "west": {"uv": [69, 0], "uv_size": [0.25, 0.25]}, + "up": {"uv": [4, 69], "uv_size": [0.25, 0.25]}, + "down": {"uv": [69, 8.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.32329, 9.91479, -3.41007], + "size": [0.07841, 0.02036, 0.02981], + "pivot": [-0.32329, 9.91479, -3.38026], + "rotation": [35.26439, -45, 0], + "uv": { + "north": {"uv": [10, 69], "uv_size": [0.25, 0.25]}, + "east": {"uv": [69, 10], "uv_size": [0.25, 0.25]}, + "south": {"uv": [69, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 69], "uv_size": [0.25, 0.25]}, + "up": {"uv": [69, 14], "uv_size": [0.25, 0.25]}, + "down": {"uv": [69, 16.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29778, 10.49041, -3.42198], + "size": [0.07842, 0.0123, 0.01621], + "pivot": [-0.29778, 10.49041, -3.40578], + "rotation": [-88.0489, -45, 0], + "uv": { + "north": {"uv": [69, 18], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 69], "uv_size": [0.25, 0.25]}, + "south": {"uv": [69, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 69], "uv_size": [0.25, 0.25]}, + "up": {"uv": [69, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 69.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.73183, -2.38703], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [30, 69], "uv_size": [0.25, 0.25]}, + "east": {"uv": [69, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [32, 69], "uv_size": [0.25, 0.25]}, + "west": {"uv": [69, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [34, 69], "uv_size": [0.25, 0.25]}, + "down": {"uv": [69, 34.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 10.35913, -2.38703], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [69, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [42, 69], "uv_size": [0.25, 0.25]}, + "south": {"uv": [69, 46], "uv_size": [0.25, 0.25]}, + "west": {"uv": [69, 48], "uv_size": [0.25, 0.25]}, + "up": {"uv": [56, 69], "uv_size": [0.25, 0.25]}, + "down": {"uv": [58, 69.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 10.2776, -2.20085], + "size": [0.31315, 0.15632, 0.15632], + "inflate": -0.001, + "pivot": [-0.21875, 10.43418, -2.12268], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [0, 70], "uv_size": [0.25, 0.25]}, + "east": {"uv": [2, 70], "uv_size": [0.25, 0.25]}, + "south": {"uv": [70, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [70, 4], "uv_size": [0.25, 0.25]}, + "up": {"uv": [6, 70], "uv_size": [0.25, 0.25]}, + "down": {"uv": [70, 6.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 9.92475, -2.53409], + "size": [0.31315, 0.15631, 0.15631], + "inflate": -0.001, + "pivot": [-0.21875, 10.08132, -2.45593], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [8, 70], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 70], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 70], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 70], "uv_size": [0.25, 0.25]}, + "up": {"uv": [20, 70], "uv_size": [0.25, 0.25]}, + "down": {"uv": [70, 20.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 9.92475, -2.20085], + "size": [0.31315, 0.15631, 0.15632], + "inflate": -0.001, + "pivot": [-0.21875, 10.08132, -2.12268], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [70, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 70], "uv_size": [0.25, 0.25]}, + "south": {"uv": [70, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [36, 70], "uv_size": [0.25, 0.25]}, + "up": {"uv": [70, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 70.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37532, 10.2776, -2.53409], + "size": [0.31315, 0.15632, 0.15631], + "inflate": -0.001, + "pivot": [-0.21875, 10.43418, -2.45593], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [70, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 70], "uv_size": [0.25, 0.25]}, + "south": {"uv": [70, 42], "uv_size": [0.25, 0.25]}, + "west": {"uv": [44, 70], "uv_size": [0.25, 0.25]}, + "up": {"uv": [70, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [46, 70.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 9.575, -2.38703], + "size": [0.23524, 0.47048, 0.31365], + "uv": { + "north": {"uv": [44, 56], "uv_size": [0.25, 0.5]}, + "east": {"uv": [56, 45], "uv_size": [0.25, 0.5]}, + "south": {"uv": [46, 56], "uv_size": [0.25, 0.5]}, + "west": {"uv": [48, 56], "uv_size": [0.25, 0.5]}, + "up": {"uv": [48, 70], "uv_size": [0.25, 0.25]}, + "down": {"uv": [50, 70.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 9.575, -3.09274], + "size": [0.23524, 1.2546, 0.70571], + "uv": { + "north": {"uv": [34, 39], "uv_size": [0.25, 1.25]}, + "east": {"uv": [20, 19], "uv_size": [0.75, 1.25]}, + "south": {"uv": [39, 36], "uv_size": [0.25, 1.25]}, + "west": {"uv": [0, 21], "uv_size": [0.75, 1.25]}, + "up": {"uv": [51, 8], "uv_size": [0.25, 0.75]}, + "down": {"uv": [10, 51.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.37557, 10.67278, -3.09274], + "size": [0.15683, 0.17533, 1.2546], + "pivot": [-0.37557, 10.67278, -3.09274], + "rotation": [0, 0, 26.56505], + "uv": { + "north": {"uv": [70, 50], "uv_size": [0.25, 0.25]}, + "east": {"uv": [39, 9], "uv_size": [1.25, 0.25]}, + "south": {"uv": [52, 70], "uv_size": [0.25, 0.25]}, + "west": {"uv": [39, 20], "uv_size": [1.25, 0.25]}, + "up": {"uv": [39, 39], "uv_size": [0.25, 1.25]}, + "down": {"uv": [4, 41.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.37557, 10.43754, -3.32798], + "size": [0.17736, 0.13425, 0.33267], + "pivot": [-0.37557, 10.43754, -3.32798], + "rotation": [39.23152, -24.09484, 26.56505], + "uv": { + "north": {"uv": [70, 52], "uv_size": [0.25, 0.25]}, + "east": {"uv": [54, 70], "uv_size": [0.25, 0.25]}, + "south": {"uv": [70, 54], "uv_size": [0.25, 0.25]}, + "west": {"uv": [70, 56], "uv_size": [0.25, 0.25]}, + "up": {"uv": [70, 58], "uv_size": [0.25, 0.25]}, + "down": {"uv": [60, 70.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.62783, -3.17765], + "size": [0.17736, 0.104, 0.08492], + "pivot": [-0.37557, 9.73183, -3.09274], + "rotation": [0, -24.09484, -26.56505], + "uv": { + "north": {"uv": [70, 60], "uv_size": [0.25, 0.25]}, + "east": {"uv": [62, 70], "uv_size": [0.25, 0.25]}, + "south": {"uv": [70, 62], "uv_size": [0.25, 0.25]}, + "west": {"uv": [64, 70], "uv_size": [0.25, 0.25]}, + "up": {"uv": [70, 64], "uv_size": [0.25, 0.25]}, + "down": {"uv": [66, 70.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.32906, 9.597, -3.12788], + "size": [0.17736, 0.04181, 0.03515], + "pivot": [-0.32906, 9.63881, -3.09274], + "rotation": [0, -24.09484, -26.56505], + "uv": { + "north": {"uv": [70, 66], "uv_size": [0.25, 0.25]}, + "east": {"uv": [68, 70], "uv_size": [0.25, 0.25]}, + "south": {"uv": [70, 68], "uv_size": [0.25, 0.25]}, + "west": {"uv": [70, 70], "uv_size": [0.25, 0.25]}, + "up": {"uv": [71, 0], "uv_size": [0.25, 0.25]}, + "down": {"uv": [4, 71.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29807, 9.5893, -3.17026], + "size": [0.17736, 0.06502, 0.05462], + "pivot": [-0.29807, 9.65432, -3.17026], + "rotation": [49.96124, -24.09484, -26.56505], + "uv": { + "north": {"uv": [71, 8], "uv_size": [0.25, 0.25]}, + "east": {"uv": [10, 71], "uv_size": [0.25, 0.25]}, + "south": {"uv": [71, 10], "uv_size": [0.25, 0.25]}, + "west": {"uv": [71, 12], "uv_size": [0.25, 0.25]}, + "up": {"uv": [14, 71], "uv_size": [0.25, 0.25]}, + "down": {"uv": [71, 14.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29754, 9.58092, -3.12482], + "size": [0.17737, 0.0269, 0.02261], + "pivot": [-0.29754, 9.60782, -3.12482], + "rotation": [49.96125, -24.09484, -26.56505], + "uv": { + "north": {"uv": [71, 16], "uv_size": [0.25, 0.25]}, + "east": {"uv": [71, 18], "uv_size": [0.25, 0.25]}, + "south": {"uv": [22, 71], "uv_size": [0.25, 0.25]}, + "west": {"uv": [71, 24], "uv_size": [0.25, 0.25]}, + "up": {"uv": [26, 71], "uv_size": [0.25, 0.25]}, + "down": {"uv": [71, 26.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.31036, 9.5841, -3.10728], + "size": [0.17736, 0.01731, 0.01454], + "pivot": [-0.31036, 9.60141, -3.09274], + "rotation": [0, -24.09484, -26.56505], + "uv": { + "north": {"uv": [28, 71], "uv_size": [0.25, 0.25]}, + "east": {"uv": [30, 71], "uv_size": [0.25, 0.25]}, + "south": {"uv": [71, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 71], "uv_size": [0.25, 0.25]}, + "up": {"uv": [71, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 71.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 9.83281, -3.32798], + "size": [0.17736, 0.13426, 0.33267], + "pivot": [-0.37557, 9.96707, -3.32798], + "rotation": [-39.23152, -24.09484, -26.56505], + "uv": { + "north": {"uv": [71, 34], "uv_size": [0.25, 0.25]}, + "east": {"uv": [71, 40], "uv_size": [0.25, 0.25]}, + "south": {"uv": [42, 71], "uv_size": [0.25, 0.25]}, + "west": {"uv": [71, 46], "uv_size": [0.25, 0.25]}, + "up": {"uv": [71, 48], "uv_size": [0.25, 0.25]}, + "down": {"uv": [56, 71.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 10.67278, -3.17765], + "size": [0.17736, 0.104, 0.08492], + "pivot": [-0.37557, 10.67278, -3.09274], + "rotation": [0, -24.09484, 26.56505], + "uv": { + "north": {"uv": [58, 71], "uv_size": [0.25, 0.25]}, + "east": {"uv": [0, 72], "uv_size": [0.25, 0.25]}, + "south": {"uv": [2, 72], "uv_size": [0.25, 0.25]}, + "west": {"uv": [72, 2], "uv_size": [0.25, 0.25]}, + "up": {"uv": [72, 4], "uv_size": [0.25, 0.25]}, + "down": {"uv": [6, 72.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29807, 10.75028, -3.17026], + "size": [0.17736, 0.06502, 0.05462], + "pivot": [-0.29807, 10.75028, -3.17026], + "rotation": [-49.96124, -24.09484, 26.56505], + "uv": { + "north": {"uv": [72, 6], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 72], "uv_size": [0.25, 0.25]}, + "south": {"uv": [12, 72], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 72], "uv_size": [0.25, 0.25]}, + "up": {"uv": [18, 72], "uv_size": [0.25, 0.25]}, + "down": {"uv": [20, 72.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.32906, 10.76579, -3.12788], + "size": [0.17736, 0.04181, 0.03515], + "pivot": [-0.32906, 10.76579, -3.09274], + "rotation": [0, -24.09484, 26.56505], + "uv": { + "north": {"uv": [72, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [72, 22], "uv_size": [0.25, 0.25]}, + "south": {"uv": [24, 72], "uv_size": [0.25, 0.25]}, + "west": {"uv": [72, 28], "uv_size": [0.25, 0.25]}, + "up": {"uv": [36, 72], "uv_size": [0.25, 0.25]}, + "down": {"uv": [72, 36.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29754, 10.79678, -3.12482], + "size": [0.17737, 0.0269, 0.02261], + "pivot": [-0.29754, 10.79678, -3.12482], + "rotation": [-49.96125, -24.09484, 26.56505], + "uv": { + "north": {"uv": [38, 72], "uv_size": [0.25, 0.25]}, + "east": {"uv": [72, 38], "uv_size": [0.25, 0.25]}, + "south": {"uv": [40, 72], "uv_size": [0.25, 0.25]}, + "west": {"uv": [72, 42], "uv_size": [0.25, 0.25]}, + "up": {"uv": [44, 72], "uv_size": [0.25, 0.25]}, + "down": {"uv": [72, 44.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.31036, 10.80319, -3.10728], + "size": [0.17736, 0.01731, 0.01454], + "pivot": [-0.31036, 10.80319, -3.09274], + "rotation": [0, -24.09484, 26.56505], + "uv": { + "north": {"uv": [46, 72], "uv_size": [0.25, 0.25]}, + "east": {"uv": [48, 72], "uv_size": [0.25, 0.25]}, + "south": {"uv": [50, 72], "uv_size": [0.25, 0.25]}, + "west": {"uv": [72, 50], "uv_size": [0.25, 0.25]}, + "up": {"uv": [52, 72], "uv_size": [0.25, 0.25]}, + "down": {"uv": [72, 52.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.37557, 10.67278, -1.75973], + "size": [0.15683, 0.17533, 5.33205], + "pivot": [-0.37557, 10.67278, 2.31772], + "rotation": [0, 0, 26.56505], + "uv": { + "north": {"uv": [54, 72], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 5], "uv_size": [5.25, 0.25]}, + "south": {"uv": [72, 54], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 7], "uv_size": [5.25, 0.25]}, + "up": {"uv": [12, 9], "uv_size": [0.25, 5.25]}, + "down": {"uv": [8, 18.25], "uv_size": [0.25, -5.25]} + } + }, + { + "origin": [-0.37557, 10.67278, 3.65074], + "size": [0.15683, 0.17533, 1.25459], + "pivot": [-0.37557, 10.67278, 3.65074], + "rotation": [0, 0, 26.56505], + "uv": { + "north": {"uv": [72, 56], "uv_size": [0.25, 0.25]}, + "east": {"uv": [39, 31], "uv_size": [1.25, 0.25]}, + "south": {"uv": [72, 58], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 11], "uv_size": [1.25, 0.25]}, + "up": {"uv": [11, 40], "uv_size": [0.25, 1.25]}, + "down": {"uv": [15, 41.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.37557, 9.5565, -3.09274], + "size": [0.15683, 0.17533, 1.2546], + "pivot": [-0.37557, 9.73183, -3.09274], + "rotation": [0, 0, -26.56505], + "uv": { + "north": {"uv": [60, 72], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 22], "uv_size": [1.25, 0.25]}, + "south": {"uv": [72, 60], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 28], "uv_size": [1.25, 0.25]}, + "up": {"uv": [40, 33], "uv_size": [0.25, 1.25]}, + "down": {"uv": [36, 41.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.37557, 9.5565, -1.75973], + "size": [0.15683, 0.17533, 5.33205], + "pivot": [-0.37557, 9.73183, 2.31772], + "rotation": [0, 0, -26.56505], + "uv": { + "north": {"uv": [62, 72], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 0], "uv_size": [5.25, 0.25]}, + "south": {"uv": [72, 62], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 9], "uv_size": [5.25, 0.25]}, + "up": {"uv": [10, 13], "uv_size": [0.25, 5.25]}, + "down": {"uv": [0, 19.25], "uv_size": [0.25, -5.25]} + } + }, + { + "origin": [-0.37557, 9.5565, 3.65074], + "size": [0.15683, 0.17533, 1.25459], + "pivot": [-0.37557, 9.73183, 3.65074], + "rotation": [0, 0, -26.56505], + "uv": { + "north": {"uv": [64, 72], "uv_size": [0.25, 0.25]}, + "east": {"uv": [41, 0], "uv_size": [1.25, 0.25]}, + "south": {"uv": [72, 64], "uv_size": [0.25, 0.25]}, + "west": {"uv": [41, 2], "uv_size": [1.25, 0.25]}, + "up": {"uv": [2, 41], "uv_size": [0.25, 1.25]}, + "down": {"uv": [41, 5.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.29678, 9.26173, -2.81289], + "size": [0.23447, 0.3913, 0.23448], + "inflate": -0.0015, + "pivot": [-0.29717, 9.575, -2.69565], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [50, 56], "uv_size": [0.25, 0.5]}, + "east": {"uv": [56, 51], "uv_size": [0.25, 0.5]}, + "south": {"uv": [52, 56], "uv_size": [0.25, 0.5]}, + "west": {"uv": [56, 53], "uv_size": [0.25, 0.5]}, + "up": {"uv": [66, 72], "uv_size": [0.25, 0.25]}, + "down": {"uv": [72, 66.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 9.24401, -3.10964], + "size": [0.23524, 0.27682, 0.1264], + "pivot": [-0.29717, 9.12876, -3.10086], + "rotation": [-57.5, 0, 0], + "uv": { + "north": {"uv": [68, 72], "uv_size": [0.25, 0.25]}, + "east": {"uv": [72, 68], "uv_size": [0.25, 0.25]}, + "south": {"uv": [70, 72], "uv_size": [0.25, 0.25]}, + "west": {"uv": [72, 70], "uv_size": [0.25, 0.25]}, + "up": {"uv": [72, 72], "uv_size": [0.25, 0.25]}, + "down": {"uv": [73, 0.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29691, 9.24047, -2.94199], + "size": [0.23473, 0.39155, 0.23473], + "inflate": -0.001, + "uv": { + "north": {"uv": [54, 56], "uv_size": [0.25, 0.5]}, + "east": {"uv": [56, 55], "uv_size": [0.25, 0.5]}, + "south": {"uv": [57, 0], "uv_size": [0.25, 0.5]}, + "west": {"uv": [4, 57], "uv_size": [0.25, 0.5]}, + "up": {"uv": [4, 73], "uv_size": [0.25, 0.25]}, + "down": {"uv": [73, 8.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17361, 9.24401, -3.10964], + "size": [0.23523, 0.27682, 0.1264], + "pivot": [0.33043, 9.12876, -3.10086], + "rotation": [-57.5, 0, 0], + "uv": { + "north": {"uv": [10, 73], "uv_size": [0.25, 0.25]}, + "east": {"uv": [73, 10], "uv_size": [0.25, 0.25]}, + "south": {"uv": [73, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 73], "uv_size": [0.25, 0.25]}, + "up": {"uv": [73, 14], "uv_size": [0.25, 0.25]}, + "down": {"uv": [73, 16.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17385, 9.24047, -2.94199], + "size": [0.23473, 0.39155, 0.23473], + "inflate": -0.001, + "uv": { + "north": {"uv": [57, 8], "uv_size": [0.25, 0.5]}, + "east": {"uv": [10, 57], "uv_size": [0.25, 0.5]}, + "south": {"uv": [57, 10], "uv_size": [0.25, 0.5]}, + "west": {"uv": [57, 12], "uv_size": [0.25, 0.5]}, + "up": {"uv": [73, 18], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 73.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17399, 9.26173, -2.81289], + "size": [0.23447, 0.3913, 0.23448], + "inflate": -0.0015, + "pivot": [0.33043, 9.575, -2.69565], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [14, 57], "uv_size": [0.25, 0.5]}, + "east": {"uv": [57, 14], "uv_size": [0.25, 0.5]}, + "south": {"uv": [57, 16], "uv_size": [0.25, 0.5]}, + "west": {"uv": [57, 18], "uv_size": [0.25, 0.5]}, + "up": {"uv": [73, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 73.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 9.88865, -3.4064], + "size": [0.23524, 0.6273, 0.31366], + "uv": { + "north": {"uv": [51, 10], "uv_size": [0.25, 0.75]}, + "east": {"uv": [51, 12], "uv_size": [0.25, 0.75]}, + "south": {"uv": [14, 51], "uv_size": [0.25, 0.75]}, + "west": {"uv": [51, 14], "uv_size": [0.25, 0.75]}, + "up": {"uv": [73, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 73.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 12.64192, -2.52579], + "size": [0.23524, 0.31365, 0.44357], + "pivot": [0.87903, 12.32827, -6.28959], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [30, 73], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 57], "uv_size": [0.5, 0.25]}, + "south": {"uv": [73, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [57, 24], "uv_size": [0.5, 0.25]}, + "up": {"uv": [26, 57], "uv_size": [0.25, 0.5]}, + "down": {"uv": [57, 26.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.29717, 7.44903, -2.52579], + "size": [0.23524, 0.31365, 0.44357], + "pivot": [0.87903, 8.07633, -6.28959], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [32, 73], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 57], "uv_size": [0.5, 0.25]}, + "south": {"uv": [73, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [30, 57], "uv_size": [0.5, 0.25]}, + "up": {"uv": [57, 30], "uv_size": [0.25, 0.5]}, + "down": {"uv": [32, 57.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.45399, 7.04351, -2.00381], + "size": [1.01937, 0.31365, 0.31365], + "pivot": [0.80061, 7.67081, -5.89753], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [10, 49], "uv_size": [1, 0.25]}, + "east": {"uv": [34, 73], "uv_size": [0.25, 0.25]}, + "south": {"uv": [49, 11], "uv_size": [1, 0.25]}, + "west": {"uv": [73, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [49, 13], "uv_size": [1, 0.25]}, + "down": {"uv": [14, 49.25], "uv_size": [1, -0.25]} + } + }, + { + "origin": [-0.35795, 10.12388, -2.30861], + "size": [0.8273, 0.15683, 0.15683], + "uv": { + "north": {"uv": [51, 16], "uv_size": [0.75, 0.25]}, + "east": {"uv": [73, 40], "uv_size": [0.25, 0.25]}, + "south": {"uv": [51, 18], "uv_size": [0.75, 0.25]}, + "west": {"uv": [42, 73], "uv_size": [0.25, 0.25]}, + "up": {"uv": [22, 51], "uv_size": [0.75, 0.25]}, + "down": {"uv": [51, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.25795, 10.12388, -2.30861], + "size": [0.6273, 0.15683, 0.15683], + "uv": { + "north": {"uv": [51, 16], "uv_size": [0.75, 0.25]}, + "east": {"uv": [73, 40], "uv_size": [0.25, 0.25]}, + "south": {"uv": [51, 18], "uv_size": [0.75, 0.25]}, + "west": {"uv": [42, 73], "uv_size": [0.25, 0.25]}, + "up": {"uv": [22, 51], "uv_size": [0.75, 0.25]}, + "down": {"uv": [51, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.35795, 10.12388, -1.44608], + "size": [0.8273, 0.15683, 0.15683], + "uv": { + "north": {"uv": [26, 51], "uv_size": [0.75, 0.25]}, + "east": {"uv": [73, 46], "uv_size": [0.25, 0.25]}, + "south": {"uv": [51, 27], "uv_size": [0.75, 0.25]}, + "west": {"uv": [73, 48], "uv_size": [0.25, 0.25]}, + "up": {"uv": [28, 51], "uv_size": [0.75, 0.25]}, + "down": {"uv": [30, 51.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.35795, 10.12388, 3.10185], + "size": [0.8273, 0.15683, 0.15682], + "uv": { + "north": {"uv": [51, 31], "uv_size": [0.75, 0.25]}, + "east": {"uv": [56, 73], "uv_size": [0.25, 0.25]}, + "south": {"uv": [32, 51], "uv_size": [0.75, 0.25]}, + "west": {"uv": [58, 73], "uv_size": [0.25, 0.25]}, + "up": {"uv": [51, 33], "uv_size": [0.75, 0.25]}, + "down": {"uv": [34, 51.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.35795, 10.12388, 4.43485], + "size": [0.8273, 0.15683, 0.15682], + "uv": { + "north": {"uv": [51, 35], "uv_size": [0.75, 0.25]}, + "east": {"uv": [0, 74], "uv_size": [0.25, 0.25]}, + "south": {"uv": [42, 51], "uv_size": [0.75, 0.25]}, + "west": {"uv": [2, 74], "uv_size": [0.25, 0.25]}, + "up": {"uv": [51, 42], "uv_size": [0.75, 0.25]}, + "down": {"uv": [51, 48.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.45399, 7.12192, 3.40665], + "size": [0.39207, 0.15683, 0.15682], + "pivot": [0.80061, 7.67081, -0.56547], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [57, 32], "uv_size": [0.5, 0.25]}, + "east": {"uv": [74, 2], "uv_size": [0.25, 0.25]}, + "south": {"uv": [34, 57], "uv_size": [0.5, 0.25]}, + "west": {"uv": [74, 4], "uv_size": [0.25, 0.25]}, + "up": {"uv": [57, 34], "uv_size": [0.5, 0.25]}, + "down": {"uv": [57, 40.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.5324, 6.96509, 0.74062], + "size": [0.54888, 0.47047, 0.47048], + "pivot": [0.80061, 7.67081, -3.07468], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [49, 15], "uv_size": [0.5, 0.5]}, + "east": {"uv": [49, 17], "uv_size": [0.5, 0.5]}, + "south": {"uv": [49, 19], "uv_size": [0.5, 0.5]}, + "west": {"uv": [22, 49], "uv_size": [0.5, 0.5]}, + "up": {"uv": [49, 25], "uv_size": [0.5, 0.5]}, + "down": {"uv": [26, 49.5], "uv_size": [0.5, -0.5]} + } + } + ] + }, + { + "name": "a2", + "parent": "a", + "pivot": [0.33013, 9.575, -0.50513], + "cubes": [ + { + "origin": [0.17331, 9.575, -1.21084], + "size": [0.23524, 1.2546, 4.23428], + "uv": { + "north": {"uv": [8, 41], "uv_size": [0.25, 1.25]}, + "east": {"uv": [0, 4], "uv_size": [4.25, 1.25]}, + "south": {"uv": [13, 41], "uv_size": [0.25, 1.25]}, + "west": {"uv": [6, 4], "uv_size": [4.25, 1.25]}, + "up": {"uv": [18, 19], "uv_size": [0.25, 4.25]}, + "down": {"uv": [4, 24.25], "uv_size": [0.25, -4.25]} + } + }, + { + "origin": [0.25173, 9.65342, 0.51424], + "size": [0.07841, 1.09777, 2.35238], + "uv": { + "north": {"uv": [49, 27], "uv_size": [0.25, 1]}, + "east": {"uv": [0, 12], "uv_size": [2.25, 1]}, + "south": {"uv": [28, 49], "uv_size": [0.25, 1]}, + "west": {"uv": [12, 3], "uv_size": [2.25, 1]}, + "up": {"uv": [12, 25], "uv_size": [0.25, 2.25]}, + "down": {"uv": [18, 27.25], "uv_size": [0.25, -2.25]} + } + }, + { + "origin": [0.17331, 9.575, 3.65074], + "size": [0.23524, 1.2546, 0.70571], + "uv": { + "north": {"uv": [41, 13], "uv_size": [0.25, 1.25]}, + "east": {"uv": [2, 21], "uv_size": [0.75, 1.25]}, + "south": {"uv": [41, 16], "uv_size": [0.25, 1.25]}, + "west": {"uv": [21, 4], "uv_size": [0.75, 1.25]}, + "up": {"uv": [51, 50], "uv_size": [0.25, 0.75]}, + "down": {"uv": [0, 52.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.17331, 9.575, -2.07338], + "size": [0.23524, 1.2546, 0.23524], + "uv": { + "north": {"uv": [17, 41], "uv_size": [0.25, 1.25]}, + "east": {"uv": [19, 41], "uv_size": [0.25, 1.25]}, + "south": {"uv": [23, 41], "uv_size": [0.25, 1.25]}, + "west": {"uv": [41, 24], "uv_size": [0.25, 1.25]}, + "up": {"uv": [6, 74], "uv_size": [0.25, 0.25]}, + "down": {"uv": [74, 6.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 9.92475, -1.22011], + "size": [0.31314, 0.15631, 0.15631], + "inflate": -0.001, + "pivot": [0.33013, 10.08132, -1.14195], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [8, 74], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 74], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 74], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 74], "uv_size": [0.25, 0.25]}, + "up": {"uv": [20, 74], "uv_size": [0.25, 0.25]}, + "down": {"uv": [74, 20.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 9.92475, -1.55336], + "size": [0.31314, 0.15631, 0.15632], + "inflate": -0.001, + "pivot": [0.33013, 10.08132, -1.47519], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [74, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 74], "uv_size": [0.25, 0.25]}, + "south": {"uv": [74, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [36, 74], "uv_size": [0.25, 0.25]}, + "up": {"uv": [74, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 74.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 10.2776, -1.22011], + "size": [0.31314, 0.15632, 0.15631], + "inflate": -0.001, + "pivot": [0.33013, 10.43418, -1.14195], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [74, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 74], "uv_size": [0.25, 0.25]}, + "south": {"uv": [74, 42], "uv_size": [0.25, 0.25]}, + "west": {"uv": [44, 74], "uv_size": [0.25, 0.25]}, + "up": {"uv": [74, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [46, 74.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 10.2776, -1.55336], + "size": [0.31314, 0.15632, 0.15632], + "inflate": -0.001, + "pivot": [0.33013, 10.43418, -1.47519], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [48, 74], "uv_size": [0.25, 0.25]}, + "east": {"uv": [50, 74], "uv_size": [0.25, 0.25]}, + "south": {"uv": [74, 50], "uv_size": [0.25, 0.25]}, + "west": {"uv": [52, 74], "uv_size": [0.25, 0.25]}, + "up": {"uv": [74, 52], "uv_size": [0.25, 0.25]}, + "down": {"uv": [54, 74.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 9.575, -1.52449], + "size": [0.23524, 0.47048, 0.31365], + "uv": { + "north": {"uv": [42, 57], "uv_size": [0.25, 0.5]}, + "east": {"uv": [57, 47], "uv_size": [0.25, 0.5]}, + "south": {"uv": [57, 49], "uv_size": [0.25, 0.5]}, + "west": {"uv": [56, 57], "uv_size": [0.25, 0.5]}, + "up": {"uv": [74, 54], "uv_size": [0.25, 0.25]}, + "down": {"uv": [74, 56.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 10.35913, -1.52449], + "size": [0.23524, 0.47047, 0.31365], + "uv": { + "north": {"uv": [0, 58], "uv_size": [0.25, 0.5]}, + "east": {"uv": [2, 58], "uv_size": [0.25, 0.5]}, + "south": {"uv": [58, 2], "uv_size": [0.25, 0.5]}, + "west": {"uv": [58, 4], "uv_size": [0.25, 0.5]}, + "up": {"uv": [74, 58], "uv_size": [0.25, 0.25]}, + "down": {"uv": [60, 74.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 9.575, -1.75973], + "size": [0.23524, 1.2546, 0.23524], + "uv": { + "north": {"uv": [27, 41], "uv_size": [0.25, 1.25]}, + "east": {"uv": [41, 36], "uv_size": [0.25, 1.25]}, + "south": {"uv": [41, 39], "uv_size": [0.25, 1.25]}, + "west": {"uv": [0, 42], "uv_size": [0.25, 1.25]}, + "up": {"uv": [74, 60], "uv_size": [0.25, 0.25]}, + "down": {"uv": [62, 74.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 9.92475, 2.87638], + "size": [0.31314, 0.15631, 0.15631], + "inflate": -0.001, + "pivot": [0.33013, 10.08132, 2.95453], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [74, 62], "uv_size": [0.25, 0.25]}, + "east": {"uv": [64, 74], "uv_size": [0.25, 0.25]}, + "south": {"uv": [74, 64], "uv_size": [0.25, 0.25]}, + "west": {"uv": [66, 74], "uv_size": [0.25, 0.25]}, + "up": {"uv": [74, 66], "uv_size": [0.25, 0.25]}, + "down": {"uv": [68, 74.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 10.2776, 2.87638], + "size": [0.31314, 0.15632, 0.15631], + "inflate": -0.001, + "pivot": [0.33013, 10.43418, 2.95453], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [74, 68], "uv_size": [0.25, 0.25]}, + "east": {"uv": [70, 74], "uv_size": [0.25, 0.25]}, + "south": {"uv": [74, 70], "uv_size": [0.25, 0.25]}, + "west": {"uv": [72, 74], "uv_size": [0.25, 0.25]}, + "up": {"uv": [74, 72], "uv_size": [0.25, 0.25]}, + "down": {"uv": [74, 74.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 9.575, 4.35645], + "size": [0.23524, 0.47048, 0.31365], + "uv": { + "north": {"uv": [6, 58], "uv_size": [0.25, 0.5]}, + "east": {"uv": [58, 6], "uv_size": [0.25, 0.5]}, + "south": {"uv": [8, 58], "uv_size": [0.25, 0.5]}, + "west": {"uv": [12, 58], "uv_size": [0.25, 0.5]}, + "up": {"uv": [75, 0], "uv_size": [0.25, 0.25]}, + "down": {"uv": [4, 75.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 9.92475, 4.54263], + "size": [0.31314, 0.15631, 0.15632], + "inflate": -0.001, + "pivot": [0.33013, 10.08132, 4.62079], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [75, 8], "uv_size": [0.25, 0.25]}, + "east": {"uv": [10, 75], "uv_size": [0.25, 0.25]}, + "south": {"uv": [75, 10], "uv_size": [0.25, 0.25]}, + "west": {"uv": [75, 12], "uv_size": [0.25, 0.25]}, + "up": {"uv": [14, 75], "uv_size": [0.25, 0.25]}, + "down": {"uv": [75, 14.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 10.2776, 4.54263], + "size": [0.31314, 0.15632, 0.15632], + "inflate": -0.001, + "pivot": [0.33013, 10.43418, 4.62079], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [75, 16], "uv_size": [0.25, 0.25]}, + "east": {"uv": [75, 18], "uv_size": [0.25, 0.25]}, + "south": {"uv": [22, 75], "uv_size": [0.25, 0.25]}, + "west": {"uv": [75, 24], "uv_size": [0.25, 0.25]}, + "up": {"uv": [26, 75], "uv_size": [0.25, 0.25]}, + "down": {"uv": [75, 26.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 9.575, 4.6701], + "size": [0.23524, 1.2546, 0.23523], + "uv": { + "north": {"uv": [6, 42], "uv_size": [0.25, 1.25]}, + "east": {"uv": [42, 7], "uv_size": [0.25, 1.25]}, + "south": {"uv": [42, 19], "uv_size": [0.25, 1.25]}, + "west": {"uv": [21, 42], "uv_size": [0.25, 1.25]}, + "up": {"uv": [28, 75], "uv_size": [0.25, 0.25]}, + "down": {"uv": [30, 75.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 10.14316, 4.80514], + "size": [0.23524, 0.74491, 0.23524], + "pivot": [0.33013, 10.45681, 4.92276], + "rotation": [20, 0, 0], + "uv": { + "north": {"uv": [2, 52], "uv_size": [0.25, 0.75]}, + "east": {"uv": [52, 2], "uv_size": [0.25, 0.75]}, + "south": {"uv": [52, 4], "uv_size": [0.25, 0.75]}, + "west": {"uv": [6, 52], "uv_size": [0.25, 0.75]}, + "up": {"uv": [75, 30], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 75.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 9.51653, 4.80514], + "size": [0.23524, 0.74491, 0.23524], + "pivot": [0.33013, 9.94779, 4.92276], + "rotation": [-20, 0, 0], + "uv": { + "north": {"uv": [52, 6], "uv_size": [0.25, 0.75]}, + "east": {"uv": [8, 52], "uv_size": [0.25, 0.75]}, + "south": {"uv": [12, 52], "uv_size": [0.25, 0.75]}, + "west": {"uv": [16, 52], "uv_size": [0.25, 0.75]}, + "up": {"uv": [75, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 75.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 10.35913, 4.35645], + "size": [0.23524, 0.47047, 0.31365], + "uv": { + "north": {"uv": [16, 58], "uv_size": [0.25, 0.5]}, + "east": {"uv": [18, 58], "uv_size": [0.25, 0.5]}, + "south": {"uv": [20, 58], "uv_size": [0.25, 0.5]}, + "west": {"uv": [58, 20], "uv_size": [0.25, 0.5]}, + "up": {"uv": [75, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [75, 40.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 9.92475, 4.20938], + "size": [0.31314, 0.15631, 0.15631], + "inflate": -0.001, + "pivot": [0.33013, 10.08132, 4.28754], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [42, 75], "uv_size": [0.25, 0.25]}, + "east": {"uv": [75, 46], "uv_size": [0.25, 0.25]}, + "south": {"uv": [75, 48], "uv_size": [0.25, 0.25]}, + "west": {"uv": [56, 75], "uv_size": [0.25, 0.25]}, + "up": {"uv": [58, 75], "uv_size": [0.25, 0.25]}, + "down": {"uv": [0, 76.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 10.2776, 4.20938], + "size": [0.31314, 0.15632, 0.15631], + "inflate": -0.001, + "pivot": [0.33013, 10.43418, 4.28754], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [2, 76], "uv_size": [0.25, 0.25]}, + "east": {"uv": [76, 2], "uv_size": [0.25, 0.25]}, + "south": {"uv": [76, 4], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 76], "uv_size": [0.25, 0.25]}, + "up": {"uv": [76, 6], "uv_size": [0.25, 0.25]}, + "down": {"uv": [8, 76.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 9.92475, 3.20962], + "size": [0.31314, 0.15631, 0.15631], + "inflate": -0.001, + "pivot": [0.33013, 10.08132, 3.28778], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [12, 76], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 76], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 76], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 76], "uv_size": [0.25, 0.25]}, + "up": {"uv": [76, 20], "uv_size": [0.25, 0.25]}, + "down": {"uv": [76, 22.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 10.2776, 3.20962], + "size": [0.31314, 0.15632, 0.15631], + "inflate": -0.001, + "pivot": [0.33013, 10.43418, 3.28778], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [24, 76], "uv_size": [0.25, 0.25]}, + "east": {"uv": [76, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [36, 76], "uv_size": [0.25, 0.25]}, + "west": {"uv": [76, 36], "uv_size": [0.25, 0.25]}, + "up": {"uv": [38, 76], "uv_size": [0.25, 0.25]}, + "down": {"uv": [76, 38.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 9.575, 3.02344], + "size": [0.23524, 0.47048, 0.31365], + "uv": { + "north": {"uv": [58, 22], "uv_size": [0.25, 0.5]}, + "east": {"uv": [24, 58], "uv_size": [0.25, 0.5]}, + "south": {"uv": [58, 28], "uv_size": [0.25, 0.5]}, + "west": {"uv": [36, 58], "uv_size": [0.25, 0.5]}, + "up": {"uv": [40, 76], "uv_size": [0.25, 0.25]}, + "down": {"uv": [76, 42.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 10.35913, 3.02344], + "size": [0.23524, 0.47047, 0.31365], + "uv": { + "north": {"uv": [58, 36], "uv_size": [0.25, 0.5]}, + "east": {"uv": [38, 58], "uv_size": [0.25, 0.5]}, + "south": {"uv": [58, 38], "uv_size": [0.25, 0.5]}, + "west": {"uv": [40, 58], "uv_size": [0.25, 0.5]}, + "up": {"uv": [44, 76], "uv_size": [0.25, 0.25]}, + "down": {"uv": [76, 44.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 9.47434, 4.68459], + "size": [0.07841, 0.17534, 0.25483], + "pivot": [0.48696, 9.64967, 4.93942], + "rotation": [-18.03239, 8.79827, 25.16631], + "uv": { + "north": {"uv": [46, 76], "uv_size": [0.25, 0.25]}, + "east": {"uv": [48, 76], "uv_size": [0.25, 0.25]}, + "south": {"uv": [50, 76], "uv_size": [0.25, 0.25]}, + "west": {"uv": [76, 50], "uv_size": [0.25, 0.25]}, + "up": {"uv": [52, 76], "uv_size": [0.25, 0.25]}, + "down": {"uv": [76, 52.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 9.73183, 4.35645], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [54, 76], "uv_size": [0.25, 0.25]}, + "east": {"uv": [76, 54], "uv_size": [0.25, 0.25]}, + "south": {"uv": [76, 56], "uv_size": [0.25, 0.25]}, + "west": {"uv": [76, 58], "uv_size": [0.25, 0.25]}, + "up": {"uv": [60, 76], "uv_size": [0.25, 0.25]}, + "down": {"uv": [76, 60.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.33013, 9.5565, 3.65074], + "size": [0.15683, 0.17533, 1.25459], + "pivot": [0.48696, 9.73183, 3.65074], + "rotation": [0, 0, 26.56505], + "uv": { + "north": {"uv": [62, 76], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 42], "uv_size": [1.25, 0.25]}, + "south": {"uv": [76, 62], "uv_size": [0.25, 0.25]}, + "west": {"uv": [42, 30], "uv_size": [1.25, 0.25]}, + "up": {"uv": [25, 42], "uv_size": [0.25, 1.25]}, + "down": {"uv": [32, 43.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.40855, 9.67335, 4.78555], + "size": [0.07841, 0.58809, 0.25484], + "pivot": [0.33013, 9.94779, 4.92276], + "rotation": [-20, 0, 0], + "uv": { + "north": {"uv": [58, 42], "uv_size": [0.25, 0.5]}, + "east": {"uv": [44, 58], "uv_size": [0.25, 0.5]}, + "south": {"uv": [58, 44], "uv_size": [0.25, 0.5]}, + "west": {"uv": [46, 58], "uv_size": [0.25, 0.5]}, + "up": {"uv": [64, 76], "uv_size": [0.25, 0.25]}, + "down": {"uv": [76, 64.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 10.14316, 4.78555], + "size": [0.07841, 0.58809, 0.25484], + "pivot": [0.33013, 10.45681, 4.92276], + "rotation": [20, 0, 0], + "uv": { + "north": {"uv": [48, 58], "uv_size": [0.25, 0.5]}, + "east": {"uv": [50, 58], "uv_size": [0.25, 0.5]}, + "south": {"uv": [58, 51], "uv_size": [0.25, 0.5]}, + "west": {"uv": [52, 58], "uv_size": [0.25, 0.5]}, + "up": {"uv": [66, 76], "uv_size": [0.25, 0.25]}, + "down": {"uv": [76, 66.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 9.73183, 4.6701], + "size": [0.07841, 0.94095, 0.23523], + "inflate": 0.001, + "uv": { + "north": {"uv": [30, 49], "uv_size": [0.25, 1]}, + "east": {"uv": [32, 49], "uv_size": [0.25, 1]}, + "south": {"uv": [49, 32], "uv_size": [0.25, 1]}, + "west": {"uv": [34, 49], "uv_size": [0.25, 1]}, + "up": {"uv": [68, 76], "uv_size": [0.25, 0.25]}, + "down": {"uv": [76, 68.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 10.75493, 4.68459], + "size": [0.07841, 0.17534, 0.25483], + "pivot": [0.48696, 10.75493, 4.93942], + "rotation": [18.03239, 8.79827, -25.16631], + "uv": { + "north": {"uv": [70, 76], "uv_size": [0.25, 0.25]}, + "east": {"uv": [76, 70], "uv_size": [0.25, 0.25]}, + "south": {"uv": [72, 76], "uv_size": [0.25, 0.25]}, + "west": {"uv": [76, 72], "uv_size": [0.25, 0.25]}, + "up": {"uv": [74, 76], "uv_size": [0.25, 0.25]}, + "down": {"uv": [76, 74.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.33013, 10.67278, 3.65074], + "size": [0.15683, 0.17533, 1.25459], + "pivot": [0.48696, 10.67278, 3.65074], + "rotation": [0, 0, -26.56505], + "uv": { + "north": {"uv": [76, 76], "uv_size": [0.25, 0.25]}, + "east": {"uv": [42, 32], "uv_size": [1.25, 0.25]}, + "south": {"uv": [77, 0], "uv_size": [0.25, 0.25]}, + "west": {"uv": [42, 34], "uv_size": [1.25, 0.25]}, + "up": {"uv": [34, 42], "uv_size": [0.25, 1.25]}, + "down": {"uv": [38, 43.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.40855, 10.35913, 4.35645], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [4, 77], "uv_size": [0.25, 0.25]}, + "east": {"uv": [77, 8], "uv_size": [0.25, 0.25]}, + "south": {"uv": [10, 77], "uv_size": [0.25, 0.25]}, + "west": {"uv": [77, 10], "uv_size": [0.25, 0.25]}, + "up": {"uv": [77, 12], "uv_size": [0.25, 0.25]}, + "down": {"uv": [14, 77.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 9.73183, 3.65074], + "size": [0.07841, 0.94095, 0.70571], + "uv": { + "north": {"uv": [49, 34], "uv_size": [0.25, 1]}, + "east": {"uv": [23, 21], "uv_size": [0.75, 1]}, + "south": {"uv": [49, 36], "uv_size": [0.25, 1]}, + "west": {"uv": [23, 23], "uv_size": [0.75, 1]}, + "up": {"uv": [18, 52], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 52.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.40855, 9.73183, 3.02344], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [77, 14], "uv_size": [0.25, 0.25]}, + "east": {"uv": [77, 16], "uv_size": [0.25, 0.25]}, + "south": {"uv": [77, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 77], "uv_size": [0.25, 0.25]}, + "up": {"uv": [77, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 77.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 9.73183, 3.33709], + "size": [0.07841, 0.94095, 0.23523], + "uv": { + "north": {"uv": [49, 42], "uv_size": [0.25, 1]}, + "east": {"uv": [43, 49], "uv_size": [0.25, 1]}, + "south": {"uv": [49, 48], "uv_size": [0.25, 1]}, + "west": {"uv": [0, 50], "uv_size": [0.25, 1]}, + "up": {"uv": [77, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 77.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 10.35913, 3.02344], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [30, 77], "uv_size": [0.25, 0.25]}, + "east": {"uv": [77, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [32, 77], "uv_size": [0.25, 0.25]}, + "west": {"uv": [77, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [34, 77], "uv_size": [0.25, 0.25]}, + "down": {"uv": [77, 34.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.33013, 10.67278, -1.75973], + "size": [0.15683, 0.17533, 5.33205], + "pivot": [0.48696, 10.67278, 2.31772], + "rotation": [0, 0, -26.56505], + "uv": { + "north": {"uv": [77, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 11], "uv_size": [5.25, 0.25]}, + "south": {"uv": [42, 77], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 13], "uv_size": [5.25, 0.25]}, + "up": {"uv": [2, 14], "uv_size": [0.25, 5.25]}, + "down": {"uv": [14, 20.25], "uv_size": [0.25, -5.25]} + } + }, + { + "origin": [0.33013, 9.5565, -1.75973], + "size": [0.15683, 0.17533, 5.33205], + "pivot": [0.48696, 9.73183, 2.31772], + "rotation": [0, 0, 26.56505], + "uv": { + "north": {"uv": [77, 46], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 2], "uv_size": [5.25, 0.25]}, + "south": {"uv": [77, 48], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 15], "uv_size": [5.25, 0.25]}, + "up": {"uv": [12, 16], "uv_size": [0.25, 5.25]}, + "down": {"uv": [16, 22.25], "uv_size": [0.25, -5.25]} + } + }, + { + "origin": [0.40855, 9.73183, -1.52449], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [56, 77], "uv_size": [0.25, 0.25]}, + "east": {"uv": [58, 77], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 78], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 78], "uv_size": [0.25, 0.25]}, + "up": {"uv": [78, 2], "uv_size": [0.25, 0.25]}, + "down": {"uv": [78, 4.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 9.73183, -1.21084], + "size": [0.07841, 0.94095, 4.23428], + "uv": { + "north": {"uv": [2, 50], "uv_size": [0.25, 1]}, + "east": {"uv": [0, 7], "uv_size": [4.25, 1]}, + "south": {"uv": [50, 2], "uv_size": [0.25, 1]}, + "west": {"uv": [6, 7], "uv_size": [4.25, 1]}, + "up": {"uv": [6, 20], "uv_size": [0.25, 4.25]}, + "down": {"uv": [8, 24.25], "uv_size": [0.25, -4.25]} + } + }, + { + "origin": [0.40855, 10.35913, -1.52449], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [6, 78], "uv_size": [0.25, 0.25]}, + "east": {"uv": [78, 6], "uv_size": [0.25, 0.25]}, + "south": {"uv": [8, 78], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 78], "uv_size": [0.25, 0.25]}, + "up": {"uv": [16, 78], "uv_size": [0.25, 0.25]}, + "down": {"uv": [18, 78.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 9.73183, -1.75973], + "size": [0.07841, 0.94095, 0.23524], + "uv": { + "north": {"uv": [50, 4], "uv_size": [0.25, 1]}, + "east": {"uv": [6, 50], "uv_size": [0.25, 1]}, + "south": {"uv": [50, 6], "uv_size": [0.25, 1]}, + "west": {"uv": [8, 50], "uv_size": [0.25, 1]}, + "up": {"uv": [20, 78], "uv_size": [0.25, 0.25]}, + "down": {"uv": [78, 20.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 9.73183, -2.07338], + "size": [0.07841, 0.94095, 0.23524], + "uv": { + "north": {"uv": [12, 50], "uv_size": [0.25, 1]}, + "east": {"uv": [16, 50], "uv_size": [0.25, 1]}, + "south": {"uv": [18, 50], "uv_size": [0.25, 1]}, + "west": {"uv": [20, 50], "uv_size": [0.25, 1]}, + "up": {"uv": [78, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 78.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 10.35913, -2.38703], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [78, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [36, 78], "uv_size": [0.25, 0.25]}, + "south": {"uv": [78, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 78], "uv_size": [0.25, 0.25]}, + "up": {"uv": [78, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 78.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.33013, 10.67278, -3.09274], + "size": [0.15683, 0.17533, 1.2546], + "pivot": [0.48696, 10.67278, -3.09274], + "rotation": [0, 0, -26.56505], + "uv": { + "north": {"uv": [78, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 42], "uv_size": [1.25, 0.25]}, + "south": {"uv": [44, 78], "uv_size": [0.25, 0.25]}, + "west": {"uv": [43, 4], "uv_size": [1.25, 0.25]}, + "up": {"uv": [4, 43], "uv_size": [0.25, 1.25]}, + "down": {"uv": [10, 44.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.40855, 9.73183, -2.38703], + "size": [0.07841, 0.31365, 0.31365], + "uv": { + "north": {"uv": [78, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [46, 78], "uv_size": [0.25, 0.25]}, + "south": {"uv": [48, 78], "uv_size": [0.25, 0.25]}, + "west": {"uv": [50, 78], "uv_size": [0.25, 0.25]}, + "up": {"uv": [78, 50], "uv_size": [0.25, 0.25]}, + "down": {"uv": [52, 78.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.33013, 9.5565, -3.09274], + "size": [0.15683, 0.17533, 1.2546], + "pivot": [0.48696, 9.73183, -3.09274], + "rotation": [0, 0, 26.56505], + "uv": { + "north": {"uv": [78, 52], "uv_size": [0.25, 0.25]}, + "east": {"uv": [43, 10], "uv_size": [1.25, 0.25]}, + "south": {"uv": [54, 78], "uv_size": [0.25, 0.25]}, + "west": {"uv": [43, 12], "uv_size": [1.25, 0.25]}, + "up": {"uv": [43, 14], "uv_size": [0.25, 1.25]}, + "down": {"uv": [15, 44.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.40855, 10.2284, -3.52878], + "size": [0.07841, 0.33267, 0.31365], + "inflate": -0.001, + "pivot": [0.44775, 10.09059, -3.17593], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [78, 54], "uv_size": [0.25, 0.25]}, + "east": {"uv": [78, 56], "uv_size": [0.25, 0.25]}, + "south": {"uv": [78, 58], "uv_size": [0.25, 0.25]}, + "west": {"uv": [60, 78], "uv_size": [0.25, 0.25]}, + "up": {"uv": [78, 60], "uv_size": [0.25, 0.25]}, + "down": {"uv": [62, 78.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 9.84353, -3.52878], + "size": [0.07841, 0.33267, 0.31365], + "inflate": -0.001, + "pivot": [0.44775, 10.31401, -3.17593], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [78, 62], "uv_size": [0.25, 0.25]}, + "east": {"uv": [64, 78], "uv_size": [0.25, 0.25]}, + "south": {"uv": [78, 64], "uv_size": [0.25, 0.25]}, + "west": {"uv": [66, 78], "uv_size": [0.25, 0.25]}, + "up": {"uv": [78, 66], "uv_size": [0.25, 0.25]}, + "down": {"uv": [68, 78.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 9.96707, -3.32798], + "size": [0.07841, 0.47048, 0.23524], + "uv": { + "north": {"uv": [58, 53], "uv_size": [0.25, 0.5]}, + "east": {"uv": [54, 58], "uv_size": [0.25, 0.5]}, + "south": {"uv": [58, 55], "uv_size": [0.25, 0.5]}, + "west": {"uv": [58, 57], "uv_size": [0.25, 0.5]}, + "up": {"uv": [78, 68], "uv_size": [0.25, 0.25]}, + "down": {"uv": [70, 78.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 9.73183, -3.09274], + "size": [0.07841, 0.94095, 0.70571], + "uv": { + "north": {"uv": [50, 21], "uv_size": [0.25, 1]}, + "east": {"uv": [0, 24], "uv_size": [0.75, 1]}, + "south": {"uv": [50, 23], "uv_size": [0.25, 1]}, + "west": {"uv": [2, 24], "uv_size": [0.75, 1]}, + "up": {"uv": [52, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [52, 22.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.3096, 9.62783, -3.17765], + "size": [0.17735, 0.104, 0.08492], + "pivot": [0.48696, 9.73183, -3.09274], + "rotation": [0, 24.09484, 26.56505], + "uv": { + "north": {"uv": [78, 70], "uv_size": [0.25, 0.25]}, + "east": {"uv": [72, 78], "uv_size": [0.25, 0.25]}, + "south": {"uv": [78, 72], "uv_size": [0.25, 0.25]}, + "west": {"uv": [74, 78], "uv_size": [0.25, 0.25]}, + "up": {"uv": [78, 74], "uv_size": [0.25, 0.25]}, + "down": {"uv": [76, 78.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.24439, 9.5841, -3.10728], + "size": [0.17735, 0.01731, 0.01454], + "pivot": [0.42174, 9.60141, -3.09274], + "rotation": [0, 24.09484, 26.56505], + "uv": { + "north": {"uv": [78, 76], "uv_size": [0.25, 0.25]}, + "east": {"uv": [78, 78], "uv_size": [0.25, 0.25]}, + "south": {"uv": [79, 0], "uv_size": [0.25, 0.25]}, + "west": {"uv": [4, 79], "uv_size": [0.25, 0.25]}, + "up": {"uv": [79, 8], "uv_size": [0.25, 0.25]}, + "down": {"uv": [10, 79.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.26309, 9.597, -3.12788], + "size": [0.17736, 0.04181, 0.03515], + "pivot": [0.44046, 9.63881, -3.09274], + "rotation": [0, 24.09484, 26.56505], + "uv": { + "north": {"uv": [79, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [79, 12], "uv_size": [0.25, 0.25]}, + "south": {"uv": [14, 79], "uv_size": [0.25, 0.25]}, + "west": {"uv": [79, 14], "uv_size": [0.25, 0.25]}, + "up": {"uv": [79, 16], "uv_size": [0.25, 0.25]}, + "down": {"uv": [79, 18.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.23155, 9.58092, -3.12482], + "size": [0.17738, 0.0269, 0.02261], + "pivot": [0.40893, 9.60782, -3.12482], + "rotation": [49.96125, 24.09484, 26.56505], + "uv": { + "north": {"uv": [22, 79], "uv_size": [0.25, 0.25]}, + "east": {"uv": [79, 24], "uv_size": [0.25, 0.25]}, + "south": {"uv": [26, 79], "uv_size": [0.25, 0.25]}, + "west": {"uv": [79, 26], "uv_size": [0.25, 0.25]}, + "up": {"uv": [28, 79], "uv_size": [0.25, 0.25]}, + "down": {"uv": [30, 79.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.23209, 9.5893, -3.17026], + "size": [0.17736, 0.06502, 0.05462], + "pivot": [0.40945, 9.65432, -3.17026], + "rotation": [49.96124, 24.09484, 26.56505], + "uv": { + "north": {"uv": [79, 30], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 79], "uv_size": [0.25, 0.25]}, + "south": {"uv": [79, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [34, 79], "uv_size": [0.25, 0.25]}, + "up": {"uv": [79, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [79, 40.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.3096, 9.83281, -3.32798], + "size": [0.17735, 0.13426, 0.33267], + "pivot": [0.48696, 9.96707, -3.32798], + "rotation": [-39.23152, 24.09484, 26.56505], + "uv": { + "north": {"uv": [42, 79], "uv_size": [0.25, 0.25]}, + "east": {"uv": [79, 46], "uv_size": [0.25, 0.25]}, + "south": {"uv": [79, 48], "uv_size": [0.25, 0.25]}, + "west": {"uv": [56, 79], "uv_size": [0.25, 0.25]}, + "up": {"uv": [58, 79], "uv_size": [0.25, 0.25]}, + "down": {"uv": [0, 80.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 9.96707, -3.43888], + "size": [0.07841, 0.47048, 0.1109], + "pivot": [0.48696, 10.43754, -3.32798], + "rotation": [0, 45, 0], + "uv": { + "north": {"uv": [59, 0], "uv_size": [0.25, 0.5]}, + "east": {"uv": [4, 59], "uv_size": [0.25, 0.5]}, + "south": {"uv": [59, 8], "uv_size": [0.25, 0.5]}, + "west": {"uv": [10, 59], "uv_size": [0.25, 0.5]}, + "up": {"uv": [2, 80], "uv_size": [0.25, 0.25]}, + "down": {"uv": [80, 2.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.3096, 10.67278, -3.17765], + "size": [0.17735, 0.104, 0.08492], + "pivot": [0.48696, 10.67278, -3.09274], + "rotation": [0, 24.09484, -26.56505], + "uv": { + "north": {"uv": [80, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 80], "uv_size": [0.25, 0.25]}, + "south": {"uv": [80, 6], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 80], "uv_size": [0.25, 0.25]}, + "up": {"uv": [12, 80], "uv_size": [0.25, 0.25]}, + "down": {"uv": [16, 80.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.26309, 10.76579, -3.12788], + "size": [0.17736, 0.04181, 0.03515], + "pivot": [0.44046, 10.76579, -3.09274], + "rotation": [0, 24.09484, -26.56505], + "uv": { + "north": {"uv": [18, 80], "uv_size": [0.25, 0.25]}, + "east": {"uv": [20, 80], "uv_size": [0.25, 0.25]}, + "south": {"uv": [80, 20], "uv_size": [0.25, 0.25]}, + "west": {"uv": [80, 22], "uv_size": [0.25, 0.25]}, + "up": {"uv": [24, 80], "uv_size": [0.25, 0.25]}, + "down": {"uv": [80, 28.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.24439, 10.80319, -3.10728], + "size": [0.17735, 0.01731, 0.01454], + "pivot": [0.42174, 10.80319, -3.09274], + "rotation": [0, 24.09484, -26.56505], + "uv": { + "north": {"uv": [36, 80], "uv_size": [0.25, 0.25]}, + "east": {"uv": [80, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [38, 80], "uv_size": [0.25, 0.25]}, + "west": {"uv": [80, 38], "uv_size": [0.25, 0.25]}, + "up": {"uv": [40, 80], "uv_size": [0.25, 0.25]}, + "down": {"uv": [80, 42.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.23155, 10.79678, -3.12482], + "size": [0.17738, 0.0269, 0.02261], + "pivot": [0.40893, 10.79678, -3.12482], + "rotation": [-49.96125, 24.09484, -26.56505], + "uv": { + "north": {"uv": [44, 80], "uv_size": [0.25, 0.25]}, + "east": {"uv": [80, 44], "uv_size": [0.25, 0.25]}, + "south": {"uv": [46, 80], "uv_size": [0.25, 0.25]}, + "west": {"uv": [48, 80], "uv_size": [0.25, 0.25]}, + "up": {"uv": [50, 80], "uv_size": [0.25, 0.25]}, + "down": {"uv": [80, 50.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.23209, 10.75028, -3.17026], + "size": [0.17736, 0.06502, 0.05462], + "pivot": [0.40945, 10.75028, -3.17026], + "rotation": [-49.96124, 24.09484, -26.56505], + "uv": { + "north": {"uv": [52, 80], "uv_size": [0.25, 0.25]}, + "east": {"uv": [80, 52], "uv_size": [0.25, 0.25]}, + "south": {"uv": [54, 80], "uv_size": [0.25, 0.25]}, + "west": {"uv": [80, 54], "uv_size": [0.25, 0.25]}, + "up": {"uv": [80, 56], "uv_size": [0.25, 0.25]}, + "down": {"uv": [80, 58.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.3096, 10.43754, -3.32798], + "size": [0.17735, 0.13425, 0.33267], + "pivot": [0.48696, 10.43754, -3.32798], + "rotation": [39.23152, 24.09484, -26.56505], + "uv": { + "north": {"uv": [60, 80], "uv_size": [0.25, 0.25]}, + "east": {"uv": [80, 60], "uv_size": [0.25, 0.25]}, + "south": {"uv": [62, 80], "uv_size": [0.25, 0.25]}, + "west": {"uv": [80, 62], "uv_size": [0.25, 0.25]}, + "up": {"uv": [64, 80], "uv_size": [0.25, 0.25]}, + "down": {"uv": [80, 64.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 10.37352, -3.41852], + "size": [0.07841, 0.06403, 0.09054], + "pivot": [0.48696, 10.43754, -3.32798], + "rotation": [-35.26439, 45, 0], + "uv": { + "north": {"uv": [66, 80], "uv_size": [0.25, 0.25]}, + "east": {"uv": [80, 66], "uv_size": [0.25, 0.25]}, + "south": {"uv": [68, 80], "uv_size": [0.25, 0.25]}, + "west": {"uv": [80, 68], "uv_size": [0.25, 0.25]}, + "up": {"uv": [70, 80], "uv_size": [0.25, 0.25]}, + "down": {"uv": [80, 70.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.35627, 10.46946, -3.41007], + "size": [0.07842, 0.02036, 0.02981], + "pivot": [0.43469, 10.48981, -3.38026], + "rotation": [-35.26439, 45, 0], + "uv": { + "north": {"uv": [72, 80], "uv_size": [0.25, 0.25]}, + "east": {"uv": [80, 72], "uv_size": [0.25, 0.25]}, + "south": {"uv": [74, 80], "uv_size": [0.25, 0.25]}, + "west": {"uv": [80, 74], "uv_size": [0.25, 0.25]}, + "up": {"uv": [76, 80], "uv_size": [0.25, 0.25]}, + "down": {"uv": [80, 76.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.33013, 10.43754, -3.45927], + "size": [0.07842, 0.03609, 0.05288], + "pivot": [0.40855, 10.43754, -3.4064], + "rotation": [-90.94295, 45, 0], + "uv": { + "north": {"uv": [78, 80], "uv_size": [0.25, 0.25]}, + "east": {"uv": [80, 78], "uv_size": [0.25, 0.25]}, + "south": {"uv": [80, 80], "uv_size": [0.25, 0.25]}, + "west": {"uv": [81, 0], "uv_size": [0.25, 0.25]}, + "up": {"uv": [4, 81], "uv_size": [0.25, 0.25]}, + "down": {"uv": [81, 8.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.33075, 10.49041, -3.42198], + "size": [0.07841, 0.0123, 0.01621], + "pivot": [0.40916, 10.49041, -3.40578], + "rotation": [-88.0489, 45, 0], + "uv": { + "north": {"uv": [10, 81], "uv_size": [0.25, 0.25]}, + "east": {"uv": [81, 10], "uv_size": [0.25, 0.25]}, + "south": {"uv": [81, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 81], "uv_size": [0.25, 0.25]}, + "up": {"uv": [81, 14], "uv_size": [0.25, 0.25]}, + "down": {"uv": [81, 16.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.33075, 9.90189, -3.42198], + "size": [0.07841, 0.0123, 0.01621], + "pivot": [0.40916, 9.91419, -3.40578], + "rotation": [88.0489, 45, 0], + "uv": { + "north": {"uv": [81, 18], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 81], "uv_size": [0.25, 0.25]}, + "south": {"uv": [81, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 81], "uv_size": [0.25, 0.25]}, + "up": {"uv": [81, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 81.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.40855, 9.96707, -3.41852], + "size": [0.07841, 0.06402, 0.09054], + "pivot": [0.48696, 9.96707, -3.32798], + "rotation": [35.26439, 45, 0], + "uv": { + "north": {"uv": [30, 81], "uv_size": [0.25, 0.25]}, + "east": {"uv": [81, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [32, 81], "uv_size": [0.25, 0.25]}, + "west": {"uv": [81, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [34, 81], "uv_size": [0.25, 0.25]}, + "down": {"uv": [81, 34.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.33013, 9.93097, -3.45927], + "size": [0.07842, 0.0361, 0.05288], + "pivot": [0.40855, 9.96707, -3.4064], + "rotation": [90.94295, 45, 0], + "uv": { + "north": {"uv": [81, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [42, 81], "uv_size": [0.25, 0.25]}, + "south": {"uv": [81, 46], "uv_size": [0.25, 0.25]}, + "west": {"uv": [81, 48], "uv_size": [0.25, 0.25]}, + "up": {"uv": [56, 81], "uv_size": [0.25, 0.25]}, + "down": {"uv": [58, 81.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.35627, 9.91479, -3.41007], + "size": [0.07842, 0.02036, 0.02981], + "pivot": [0.43469, 9.91479, -3.38026], + "rotation": [35.26439, 45, 0], + "uv": { + "north": {"uv": [0, 82], "uv_size": [0.25, 0.25]}, + "east": {"uv": [2, 82], "uv_size": [0.25, 0.25]}, + "south": {"uv": [82, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [82, 4], "uv_size": [0.25, 0.25]}, + "up": {"uv": [6, 82], "uv_size": [0.25, 0.25]}, + "down": {"uv": [82, 6.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 9.575, 3.33709], + "size": [0.23524, 1.2546, 0.23523], + "uv": { + "north": {"uv": [43, 22], "uv_size": [0.25, 1.25]}, + "east": {"uv": [43, 25], "uv_size": [0.25, 1.25]}, + "south": {"uv": [36, 43], "uv_size": [0.25, 1.25]}, + "west": {"uv": [43, 36], "uv_size": [0.25, 1.25]}, + "up": {"uv": [8, 82], "uv_size": [0.25, 0.25]}, + "down": {"uv": [12, 82.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 10.35913, -2.38703], + "size": [0.23524, 0.47047, 0.31365], + "uv": { + "north": {"uv": [59, 10], "uv_size": [0.25, 0.5]}, + "east": {"uv": [59, 12], "uv_size": [0.25, 0.5]}, + "south": {"uv": [14, 59], "uv_size": [0.25, 0.5]}, + "west": {"uv": [59, 14], "uv_size": [0.25, 0.5]}, + "up": {"uv": [16, 82], "uv_size": [0.25, 0.25]}, + "down": {"uv": [18, 82.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 10.2776, -2.20085], + "size": [0.31314, 0.15632, 0.15632], + "inflate": -0.001, + "pivot": [0.33013, 10.43418, -2.12268], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [20, 82], "uv_size": [0.25, 0.25]}, + "east": {"uv": [82, 20], "uv_size": [0.25, 0.25]}, + "south": {"uv": [82, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 82], "uv_size": [0.25, 0.25]}, + "up": {"uv": [82, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 82.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 9.92475, -2.53409], + "size": [0.31314, 0.15631, 0.15631], + "inflate": -0.001, + "pivot": [0.33013, 10.08132, -2.45593], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [82, 36], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 82], "uv_size": [0.25, 0.25]}, + "south": {"uv": [82, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 82], "uv_size": [0.25, 0.25]}, + "up": {"uv": [82, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 82.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 9.92475, -2.20085], + "size": [0.31314, 0.15631, 0.15632], + "inflate": -0.001, + "pivot": [0.33013, 10.08132, -2.12268], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [82, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [46, 82], "uv_size": [0.25, 0.25]}, + "south": {"uv": [48, 82], "uv_size": [0.25, 0.25]}, + "west": {"uv": [50, 82], "uv_size": [0.25, 0.25]}, + "up": {"uv": [82, 50], "uv_size": [0.25, 0.25]}, + "down": {"uv": [52, 82.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 10.2776, -2.53409], + "size": [0.31314, 0.15632, 0.15631], + "inflate": -0.001, + "pivot": [0.33013, 10.43418, -2.45593], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [82, 52], "uv_size": [0.25, 0.25]}, + "east": {"uv": [54, 82], "uv_size": [0.25, 0.25]}, + "south": {"uv": [82, 54], "uv_size": [0.25, 0.25]}, + "west": {"uv": [82, 56], "uv_size": [0.25, 0.25]}, + "up": {"uv": [82, 58], "uv_size": [0.25, 0.25]}, + "down": {"uv": [60, 82.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 9.575, -2.38703], + "size": [0.23524, 0.47048, 0.31365], + "uv": { + "north": {"uv": [59, 16], "uv_size": [0.25, 0.5]}, + "east": {"uv": [59, 18], "uv_size": [0.25, 0.5]}, + "south": {"uv": [22, 59], "uv_size": [0.25, 0.5]}, + "west": {"uv": [59, 24], "uv_size": [0.25, 0.5]}, + "up": {"uv": [82, 60], "uv_size": [0.25, 0.25]}, + "down": {"uv": [62, 82.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 9.575, -3.09274], + "size": [0.23524, 1.2546, 0.70571], + "uv": { + "north": {"uv": [43, 39], "uv_size": [0.25, 1.25]}, + "east": {"uv": [21, 7], "uv_size": [0.75, 1.25]}, + "south": {"uv": [43, 42], "uv_size": [0.25, 1.25]}, + "west": {"uv": [21, 10], "uv_size": [0.75, 1.25]}, + "up": {"uv": [24, 52], "uv_size": [0.25, 0.75]}, + "down": {"uv": [52, 29.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.1737, 10.75157, -2.93553], + "size": [0.23447, 0.3913, 0.23447], + "inflate": -0.0015, + "pivot": [0.33013, 10.8296, -2.8183], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [26, 59], "uv_size": [0.25, 0.5]}, + "east": {"uv": [59, 26], "uv_size": [0.25, 0.5]}, + "south": {"uv": [28, 59], "uv_size": [0.25, 0.5]}, + "west": {"uv": [30, 59], "uv_size": [0.25, 0.5]}, + "up": {"uv": [82, 62], "uv_size": [0.25, 0.25]}, + "down": {"uv": [64, 82.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29691, 10.77258, -2.80669], + "size": [0.23473, 0.39155, 0.23473], + "inflate": -0.001, + "uv": { + "north": {"uv": [59, 30], "uv_size": [0.25, 0.5]}, + "east": {"uv": [32, 59], "uv_size": [0.25, 0.5]}, + "south": {"uv": [59, 32], "uv_size": [0.25, 0.5]}, + "west": {"uv": [34, 59], "uv_size": [0.25, 0.5]}, + "up": {"uv": [82, 64], "uv_size": [0.25, 0.25]}, + "down": {"uv": [66, 82.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29678, 10.75157, -2.93553], + "size": [0.23447, 0.3913, 0.23447], + "inflate": -0.0015, + "pivot": [-0.21875, 10.8296, -2.8183], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [59, 34], "uv_size": [0.25, 0.5]}, + "east": {"uv": [59, 40], "uv_size": [0.25, 0.5]}, + "south": {"uv": [42, 59], "uv_size": [0.25, 0.5]}, + "west": {"uv": [59, 46], "uv_size": [0.25, 0.5]}, + "up": {"uv": [82, 66], "uv_size": [0.25, 0.25]}, + "down": {"uv": [68, 82.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 10.88377, -2.53071], + "size": [0.23524, 0.27682, 0.1264], + "pivot": [0.40855, 11.27584, -2.41309], + "rotation": [-57.5, 0, 0], + "uv": { + "north": {"uv": [82, 68], "uv_size": [0.25, 0.25]}, + "east": {"uv": [70, 82], "uv_size": [0.25, 0.25]}, + "south": {"uv": [82, 70], "uv_size": [0.25, 0.25]}, + "west": {"uv": [72, 82], "uv_size": [0.25, 0.25]}, + "up": {"uv": [82, 72], "uv_size": [0.25, 0.25]}, + "down": {"uv": [74, 82.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.29717, 10.88377, -2.53071], + "size": [0.23524, 0.27682, 0.1264], + "pivot": [-0.29717, 11.27584, -2.41309], + "rotation": [-57.5, 0, 0], + "uv": { + "north": {"uv": [82, 74], "uv_size": [0.25, 0.25]}, + "east": {"uv": [76, 82], "uv_size": [0.25, 0.25]}, + "south": {"uv": [82, 76], "uv_size": [0.25, 0.25]}, + "west": {"uv": [78, 82], "uv_size": [0.25, 0.25]}, + "up": {"uv": [82, 78], "uv_size": [0.25, 0.25]}, + "down": {"uv": [80, 82.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17357, 10.77258, -2.80669], + "size": [0.23473, 0.39155, 0.23473], + "inflate": -0.001, + "uv": { + "north": {"uv": [59, 48], "uv_size": [0.25, 0.5]}, + "east": {"uv": [56, 59], "uv_size": [0.25, 0.5]}, + "south": {"uv": [58, 59], "uv_size": [0.25, 0.5]}, + "west": {"uv": [0, 60], "uv_size": [0.25, 0.5]}, + "up": {"uv": [82, 80], "uv_size": [0.25, 0.25]}, + "down": {"uv": [82, 82.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.21875, 9.65342, -2.54385], + "size": [0.47048, 1.09777, 7.21395], + "uv": { + "north": {"uv": [8, 26], "uv_size": [0.5, 1]}, + "east": {"uv": [0, 0], "uv_size": [7.25, 1]}, + "south": {"uv": [14, 26], "uv_size": [0.5, 1]}, + "west": {"uv": [0, 2], "uv_size": [7.25, 1]}, + "up": {"uv": [4, 9], "uv_size": [0.5, 7.25]}, + "down": {"uv": [6, 16.25], "uv_size": [0.5, -7.25]} + } + }, + { + "origin": [-0.29717, 10.13775, 4.70086], + "size": [0.6273, 0.67418, 0.23524], + "pivot": [0.0557, 10.6943, 4.85768], + "rotation": [20, 0, 0], + "uv": { + "north": {"uv": [25, 18], "uv_size": [0.75, 0.75]}, + "east": {"uv": [36, 52], "uv_size": [0.25, 0.75]}, + "south": {"uv": [25, 20], "uv_size": [0.75, 0.75]}, + "west": {"uv": [52, 37], "uv_size": [0.25, 0.75]}, + "up": {"uv": [38, 52], "uv_size": [0.75, 0.25]}, + "down": {"uv": [52, 39.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.29717, 9.59433, 4.70086], + "size": [0.6273, 0.65855, 0.23524], + "pivot": [0.0557, 9.71195, 4.85768], + "rotation": [-20, 0, 0], + "uv": { + "north": {"uv": [25, 18.75], "uv_size": [0.75, -0.75]}, + "east": {"uv": [36, 52.75], "uv_size": [0.25, -0.75]}, + "south": {"uv": [25, 20.75], "uv_size": [0.75, -0.75]}, + "west": {"uv": [52, 37.75], "uv_size": [0.25, -0.75]}, + "up": {"uv": [52, 39], "uv_size": [0.75, 0.25]}, + "down": {"uv": [38, 52.75], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [0.17331, 9.88865, -3.4064], + "size": [0.23524, 0.6273, 0.31366], + "uv": { + "north": {"uv": [40, 52], "uv_size": [0.25, 0.75]}, + "east": {"uv": [44, 52], "uv_size": [0.25, 0.75]}, + "south": {"uv": [52, 44], "uv_size": [0.25, 0.75]}, + "west": {"uv": [46, 52], "uv_size": [0.25, 0.75]}, + "up": {"uv": [83, 0], "uv_size": [0.25, 0.25]}, + "down": {"uv": [4, 83.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.17331, 12.64192, -2.52579], + "size": [0.23524, 0.31365, 0.44357], + "pivot": [-0.76764, 12.32827, -6.28959], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [83, 8], "uv_size": [0.25, 0.25]}, + "east": {"uv": [2, 60], "uv_size": [0.5, 0.25]}, + "south": {"uv": [10, 83], "uv_size": [0.25, 0.25]}, + "west": {"uv": [60, 2], "uv_size": [0.5, 0.25]}, + "up": {"uv": [60, 4], "uv_size": [0.25, 0.5]}, + "down": {"uv": [6, 60.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.17331, 7.44903, -2.52579], + "size": [0.23524, 0.31365, 0.44357], + "pivot": [-0.76764, 8.07633, -6.28959], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [83, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [60, 6], "uv_size": [0.5, 0.25]}, + "south": {"uv": [83, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 60], "uv_size": [0.5, 0.25]}, + "up": {"uv": [12, 60], "uv_size": [0.25, 0.5]}, + "down": {"uv": [16, 60.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.294, 9.975, -1.60513], + "size": [0.7, 0.4, 0.4], + "uv": { + "north": {"uv": [0, 126], "uv_size": [2, 2]}, + "east": {"uv": [3.01875, 126], "uv_size": [2, 2]}, + "south": {"uv": [0, 126], "uv_size": [2, 2]}, + "west": {"uv": [2.875, 126], "uv_size": [2, 2]}, + "up": {"uv": [2, 128], "uv_size": [-2, -2]}, + "down": {"uv": [2, 128], "uv_size": [-2, -2]} + } + }, + { + "origin": [-0.294, 9.975, -2.40513], + "size": [0.7, 0.4, 0.4], + "uv": { + "north": {"uv": [0, 126], "uv_size": [2, 2]}, + "east": {"uv": [0, 126], "uv_size": [2, 2]}, + "south": {"uv": [0, 126], "uv_size": [2, 2]}, + "west": {"uv": [0, 126], "uv_size": [2, 2]}, + "up": {"uv": [2, 128], "uv_size": [-2, -2]}, + "down": {"uv": [2, 128], "uv_size": [-2, -2]} + } + }, + { + "origin": [-0.294, 9.975, 2.99487], + "size": [0.7, 0.4, 0.4], + "uv": { + "north": {"uv": [0, 126], "uv_size": [2, 2]}, + "east": {"uv": [2.7625, 126], "uv_size": [2, 2]}, + "south": {"uv": [0, 126], "uv_size": [2, 2]}, + "west": {"uv": [2.8125, 126], "uv_size": [2, 2]}, + "up": {"uv": [2, 128], "uv_size": [-2, -2]}, + "down": {"uv": [2, 128], "uv_size": [-2, -2]} + } + }, + { + "origin": [-0.294, 9.975, 4.29487], + "size": [0.7, 0.4, 0.4], + "uv": { + "north": {"uv": [0, 126], "uv_size": [2, 2]}, + "east": {"uv": [0, 126], "uv_size": [2, 2]}, + "south": {"uv": [0, 126], "uv_size": [2, 2]}, + "west": {"uv": [0, 126], "uv_size": [2, 2]}, + "up": {"uv": [2, 128], "uv_size": [-2, -2]}, + "down": {"uv": [2, 128], "uv_size": [-2, -2]} + } + } + ] + }, + { + "name": "b", + "parent": "stiletto", + "pivot": [0.04045, 10.26873, -2.53013], + "cubes": [ + { + "origin": [-0.06192, 10.2023, -5.05306], + "size": [0.23523, 0.43127, 2.57415], + "uv": { + "north": {"uv": [18, 60], "uv_size": [0.25, 0.5]}, + "east": {"uv": [4, 18], "uv_size": [2.5, 0.5]}, + "south": {"uv": [20, 60], "uv_size": [0.25, 0.5]}, + "west": {"uv": [18, 17], "uv_size": [2.5, 0.5]}, + "up": {"uv": [16, 24], "uv_size": [0.25, 2.5]}, + "down": {"uv": [20, 26.5], "uv_size": [0.25, -2.5]} + } + }, + { + "origin": [-0.06205, 10.59424, -5.05318], + "size": [0.23549, 0.03946, 2.5744], + "inflate": 0.0005, + "uv": { + "north": {"uv": [14, 83], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 12], "uv_size": [2.5, 0.25]}, + "south": {"uv": [83, 14], "uv_size": [0.25, 0.25]}, + "west": {"uv": [25, 2], "uv_size": [2.5, 0.25]}, + "up": {"uv": [25, 4], "uv_size": [0.25, 2.5]}, + "down": {"uv": [25, 10.5], "uv_size": [0.25, -2.5]} + } + }, + { + "origin": [0.00537, 10.16838, -10.85756], + "size": [0.10065, 0.05682, 0.05682], + "inflate": 0.0005, + "pivot": [0.0557, 10.20548, -10.83333], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [83, 16], "uv_size": [0.25, 0.25]}, + "east": {"uv": [83, 18], "uv_size": [0.25, 0.25]}, + "south": {"uv": [22, 83], "uv_size": [0.25, 0.25]}, + "west": {"uv": [83, 24], "uv_size": [0.25, 0.25]}, + "up": {"uv": [26, 83], "uv_size": [0.25, 0.25]}, + "down": {"uv": [83, 26.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.01636, 10.59424, -5.7467], + "size": [0.07867, 0.03946, 0.69251], + "inflate": 0.0005, + "pivot": [0.01586, 10.63419, -5.05368], + "rotation": [0.5, 0, 0], + "uv": { + "north": {"uv": [28, 83], "uv_size": [0.25, 0.25]}, + "east": {"uv": [52, 46], "uv_size": [0.75, 0.25]}, + "south": {"uv": [30, 83], "uv_size": [0.25, 0.25]}, + "west": {"uv": [48, 52], "uv_size": [0.75, 0.25]}, + "up": {"uv": [50, 52], "uv_size": [0.25, 0.75]}, + "down": {"uv": [52, 52.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.06133, 10.2023, -5.74761], + "size": [0.07781, 0.43057, 0.69456], + "pivot": [-0.06192, 10.63357, -5.05306], + "rotation": [0.24689, -4.60025, -0.00992], + "uv": { + "north": {"uv": [60, 20], "uv_size": [0.25, 0.5]}, + "east": {"uv": [37, 0], "uv_size": [0.75, 0.5]}, + "south": {"uv": [60, 22], "uv_size": [0.25, 0.5]}, + "west": {"uv": [37, 20], "uv_size": [0.75, 0.5]}, + "up": {"uv": [53, 0], "uv_size": [0.25, 0.75]}, + "down": {"uv": [4, 53.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.09477, 10.59424, -5.74774], + "size": [0.07808, 0.03875, 0.69482], + "inflate": 0.0005, + "pivot": [0.17331, 10.63357, -5.05306], + "rotation": [0.24689, 4.60025, 0.00992], + "uv": { + "north": {"uv": [83, 30], "uv_size": [0.25, 0.25]}, + "east": {"uv": [53, 8], "uv_size": [0.75, 0.25]}, + "south": {"uv": [32, 83], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 53], "uv_size": [0.75, 0.25]}, + "up": {"uv": [53, 10], "uv_size": [0.25, 0.75]}, + "down": {"uv": [53, 12.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.06146, 10.59424, -5.74774], + "size": [0.07807, 0.03875, 0.69482], + "inflate": 0.0005, + "pivot": [-0.06192, 10.63357, -5.05306], + "rotation": [0.24689, -4.60025, -0.00992], + "uv": { + "north": {"uv": [83, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 53], "uv_size": [0.75, 0.25]}, + "south": {"uv": [34, 83], "uv_size": [0.25, 0.25]}, + "west": {"uv": [53, 14], "uv_size": [0.75, 0.25]}, + "up": {"uv": [53, 16], "uv_size": [0.25, 0.75]}, + "down": {"uv": [53, 18.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.0949, 10.2023, -5.74761], + "size": [0.07782, 0.43057, 0.69456], + "pivot": [0.17331, 10.63357, -5.05306], + "rotation": [0.24689, 4.60025, 0.00992], + "uv": { + "north": {"uv": [24, 60], "uv_size": [0.25, 0.5]}, + "east": {"uv": [21, 37], "uv_size": [0.75, 0.5]}, + "south": {"uv": [60, 28], "uv_size": [0.25, 0.5]}, + "west": {"uv": [26, 37], "uv_size": [0.75, 0.5]}, + "up": {"uv": [22, 53], "uv_size": [0.25, 0.75]}, + "down": {"uv": [53, 24.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.03357, 10.59068, -7.69212], + "size": [0.08345, 0.0392, 1.9468], + "pivot": [0.11702, 10.62988, -5.74532], + "rotation": [2.45881, 0.35725, 0.00767], + "uv": { + "north": {"uv": [83, 34], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 24], "uv_size": [2, 0.25]}, + "south": {"uv": [83, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 26], "uv_size": [2, 0.25]}, + "up": {"uv": [27, 4], "uv_size": [0.25, 2]}, + "down": {"uv": [27, 9], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.02143, 10.50716, -9.63709], + "size": [0.08346, 0.0392, 1.9468], + "pivot": [0.10489, 10.54636, -7.69029], + "rotation": [4.95789, 0.04671, -0.01246], + "uv": { + "north": {"uv": [42, 83], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 10], "uv_size": [2, 0.25]}, + "south": {"uv": [83, 46], "uv_size": [0.25, 0.25]}, + "west": {"uv": [27, 18], "uv_size": [2, 0.25]}, + "up": {"uv": [10, 27], "uv_size": [0.25, 2]}, + "down": {"uv": [27, 22], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.01989, 10.3389, -10.83185], + "size": [0.08346, 0.0392, 1.20205], + "pivot": [0.10334, 10.37811, -9.6298], + "rotation": [6.4449, -0.14849, -0.03195], + "uv": { + "north": {"uv": [83, 48], "uv_size": [0.25, 0.25]}, + "east": {"uv": [43, 17], "uv_size": [1.25, 0.25]}, + "south": {"uv": [56, 83], "uv_size": [0.25, 0.25]}, + "west": {"uv": [43, 28], "uv_size": [1.25, 0.25]}, + "up": {"uv": [44, 0], "uv_size": [0.25, 1.25]}, + "down": {"uv": [2, 45.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.00804, 10.3389, -10.83185], + "size": [0.08346, 0.0392, 1.20205], + "pivot": [0.00804, 10.37811, -9.6298], + "rotation": [6.4449, 0.14849, 0.03195], + "uv": { + "north": {"uv": [58, 83], "uv_size": [0.25, 0.25]}, + "east": {"uv": [44, 6], "uv_size": [1.25, 0.25]}, + "south": {"uv": [0, 84], "uv_size": [0.25, 0.25]}, + "west": {"uv": [44, 8], "uv_size": [1.25, 0.25]}, + "up": {"uv": [8, 44], "uv_size": [0.25, 1.25]}, + "down": {"uv": [12, 45.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.0065, 9.85824, -9.63709], + "size": [0.08346, 0.0392, 1.9468], + "pivot": [0.0065, 9.85824, -7.69029], + "rotation": [-4.95789, -0.04671, -0.01246], + "uv": { + "north": {"uv": [2, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 27], "uv_size": [2, 0.25]}, + "south": {"uv": [84, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 28], "uv_size": [2, 0.25]}, + "up": {"uv": [3, 28], "uv_size": [0.25, 2]}, + "down": {"uv": [5, 30], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.01989, 10.02649, -10.83185], + "size": [0.08346, 0.0392, 1.20205], + "pivot": [0.10334, 10.02649, -9.6298], + "rotation": [-6.4449, -0.14849, 0.03195], + "uv": { + "north": {"uv": [84, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 44], "uv_size": [1.25, 0.25]}, + "south": {"uv": [6, 84], "uv_size": [0.25, 0.25]}, + "west": {"uv": [44, 19], "uv_size": [1.25, 0.25]}, + "up": {"uv": [23, 44], "uv_size": [0.25, 1.25]}, + "down": {"uv": [27, 45.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.02143, 9.85824, -9.63709], + "size": [0.08346, 0.0392, 1.9468], + "pivot": [0.10489, 9.85824, -7.69029], + "rotation": [-4.95789, 0.04671, 0.01246], + "uv": { + "north": {"uv": [84, 6], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 0], "uv_size": [2, 0.25]}, + "south": {"uv": [8, 84], "uv_size": [0.25, 0.25]}, + "west": {"uv": [7, 28], "uv_size": [2, 0.25]}, + "up": {"uv": [28, 12], "uv_size": [0.25, 2]}, + "down": {"uv": [14, 30], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.00804, 10.02649, -10.83185], + "size": [0.08346, 0.0392, 1.20205], + "pivot": [0.00804, 10.02649, -9.6298], + "rotation": [-6.4449, 0.14849, -0.03195], + "uv": { + "north": {"uv": [12, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 44], "uv_size": [1.25, 0.25]}, + "south": {"uv": [16, 84], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 44], "uv_size": [1.25, 0.25]}, + "up": {"uv": [0, 45], "uv_size": [0.25, 1.25]}, + "down": {"uv": [6, 46.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.0065, 10.50716, -9.63709], + "size": [0.08346, 0.0392, 1.9468], + "pivot": [0.0065, 10.54636, -7.69029], + "rotation": [4.95789, -0.04671, 0.01246], + "uv": { + "north": {"uv": [18, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 15], "uv_size": [2, 0.25]}, + "south": {"uv": [20, 84], "uv_size": [0.25, 0.25]}, + "west": {"uv": [25, 28], "uv_size": [2, 0.25]}, + "up": {"uv": [16, 28], "uv_size": [0.25, 2]}, + "down": {"uv": [20, 30], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.00563, 10.59068, -7.69212], + "size": [0.08344, 0.0392, 1.9468], + "pivot": [-0.00563, 10.62988, -5.74532], + "rotation": [2.45881, -0.35725, -0.00767], + "uv": { + "north": {"uv": [84, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 28], "uv_size": [2, 0.25]}, + "south": {"uv": [84, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [29, 2], "uv_size": [2, 0.25]}, + "up": {"uv": [29, 4], "uv_size": [0.25, 2]}, + "down": {"uv": [29, 9], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.03357, 9.77472, -7.69212], + "size": [0.08345, 0.0392, 1.9468], + "pivot": [0.11702, 9.77472, -5.74532], + "rotation": [-2.45881, 0.35725, -0.00767], + "uv": { + "north": {"uv": [24, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 20], "uv_size": [2, 0.25]}, + "south": {"uv": [84, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 29], "uv_size": [2, 0.25]}, + "up": {"uv": [12, 29], "uv_size": [0.25, 2]}, + "down": {"uv": [18, 31], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.00563, 9.77472, -7.69212], + "size": [0.08344, 0.0392, 1.9468], + "pivot": [-0.00563, 9.77472, -5.74532], + "rotation": [-2.45881, -0.35725, 0.00767], + "uv": { + "north": {"uv": [36, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 22], "uv_size": [2, 0.25]}, + "south": {"uv": [84, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [29, 24], "uv_size": [2, 0.25]}, + "up": {"uv": [0, 30], "uv_size": [0.25, 2]}, + "down": {"uv": [7, 32], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.00563, 9.77472, -5.74532], + "size": [0.12265, 0.43127, 1.63321], + "uv": { + "north": {"uv": [36, 60], "uv_size": [0.25, 0.5]}, + "east": {"uv": [20, 0], "uv_size": [1.75, 0.5]}, + "south": {"uv": [60, 36], "uv_size": [0.25, 0.5]}, + "west": {"uv": [21, 13], "uv_size": [1.75, 0.5]}, + "up": {"uv": [36, 34], "uv_size": [0.25, 1.75]}, + "down": {"uv": [4, 38.75], "uv_size": [0.25, -1.75]} + } + }, + { + "origin": [-0.03412, 10.19533, -5.74532], + "size": [0.07842, 0.43127, 0.69226], + "pivot": [0.0051, 10.41097, -6.34014], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [38, 60], "uv_size": [0.25, 0.5]}, + "east": {"uv": [37, 26], "uv_size": [0.75, 0.5]}, + "south": {"uv": [60, 38], "uv_size": [0.25, 0.5]}, + "west": {"uv": [37, 31], "uv_size": [0.75, 0.5]}, + "up": {"uv": [26, 53], "uv_size": [0.25, 0.75]}, + "down": {"uv": [53, 26.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.03424, 10.58727, -5.74545], + "size": [0.07867, 0.03946, 0.37887], + "inflate": 0.0005, + "pivot": [0.0051, 10.41097, -6.34014], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [38, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 60], "uv_size": [0.5, 0.25]}, + "south": {"uv": [84, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [60, 42], "uv_size": [0.5, 0.25]}, + "up": {"uv": [44, 60], "uv_size": [0.25, 0.5]}, + "down": {"uv": [60, 44.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.06696, 9.77787, -5.74545], + "size": [0.07867, 0.03946, 1.94712], + "inflate": 0.0005, + "pivot": [0.10629, 9.99363, -6.34014], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [40, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 26], "uv_size": [2, 0.25]}, + "south": {"uv": [84, 42], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 30], "uv_size": [2, 0.25]}, + "up": {"uv": [30, 10], "uv_size": [0.25, 2]}, + "down": {"uv": [30, 19], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.03424, 9.77787, -5.74545], + "size": [0.07867, 0.03946, 1.94712], + "inflate": 0.0005, + "pivot": [0.0051, 9.99363, -6.34014], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [44, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [30, 13], "uv_size": [2, 0.25]}, + "south": {"uv": [84, 44], "uv_size": [0.25, 0.25]}, + "west": {"uv": [25, 30], "uv_size": [2, 0.25]}, + "up": {"uv": [28, 30], "uv_size": [0.25, 2]}, + "down": {"uv": [30, 32], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.06696, 10.58727, -5.74545], + "size": [0.07867, 0.03946, 0.37887], + "inflate": 0.0005, + "pivot": [0.10629, 10.41097, -6.34014], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [46, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [46, 60], "uv_size": [0.5, 0.25]}, + "south": {"uv": [48, 84], "uv_size": [0.25, 0.25]}, + "west": {"uv": [48, 60], "uv_size": [0.5, 0.25]}, + "up": {"uv": [50, 60], "uv_size": [0.25, 0.5]}, + "down": {"uv": [60, 50.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.03412, 9.778, -5.74532], + "size": [0.07842, 0.43127, 1.63321], + "pivot": [0.0051, 9.99363, -6.34014], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [52, 60], "uv_size": [0.25, 0.5]}, + "east": {"uv": [22, 17], "uv_size": [1.75, 0.5]}, + "south": {"uv": [60, 52], "uv_size": [0.25, 0.5]}, + "west": {"uv": [22, 19], "uv_size": [1.75, 0.5]}, + "up": {"uv": [37, 8], "uv_size": [0.25, 1.75]}, + "down": {"uv": [11, 38.75], "uv_size": [0.25, -1.75]} + } + }, + { + "origin": [0.06709, 10.19533, -5.74532], + "size": [0.07841, 0.43127, 0.69226], + "pivot": [0.10629, 10.41097, -6.34014], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [54, 60], "uv_size": [0.25, 0.5]}, + "east": {"uv": [33, 37], "uv_size": [0.75, 0.5]}, + "south": {"uv": [60, 54], "uv_size": [0.25, 0.5]}, + "west": {"uv": [35, 37], "uv_size": [0.75, 0.5]}, + "up": {"uv": [28, 53], "uv_size": [0.25, 0.75]}, + "down": {"uv": [30, 53.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.06709, 9.778, -5.74532], + "size": [0.07841, 0.43127, 1.63321], + "pivot": [0.10629, 9.99363, -6.34014], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [60, 56], "uv_size": [0.25, 0.5]}, + "east": {"uv": [20, 22], "uv_size": [1.75, 0.5]}, + "south": {"uv": [60, 58], "uv_size": [0.25, 0.5]}, + "west": {"uv": [23, 0], "uv_size": [1.75, 0.5]}, + "up": {"uv": [15, 37], "uv_size": [0.25, 1.75]}, + "down": {"uv": [37, 18.75], "uv_size": [0.25, -1.75]} + } + }, + { + "origin": [-0.06192, 9.77103, -3.79846], + "size": [0.23523, 0.43127, 1.31955], + "uv": { + "north": {"uv": [60, 60], "uv_size": [0.25, 0.5]}, + "east": {"uv": [25, 14], "uv_size": [1.25, 0.5]}, + "south": {"uv": [61, 0], "uv_size": [0.25, 0.5]}, + "west": {"uv": [25, 16], "uv_size": [1.25, 0.5]}, + "up": {"uv": [45, 14], "uv_size": [0.25, 1.25]}, + "down": {"uv": [20, 46.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.06192, 9.77103, -4.1121], + "size": [0.23523, 0.43127, 0.14336], + "uv": { + "north": {"uv": [4, 61], "uv_size": [0.25, 0.5]}, + "east": {"uv": [61, 8], "uv_size": [0.25, 0.5]}, + "south": {"uv": [10, 61], "uv_size": [0.25, 0.5]}, + "west": {"uv": [61, 10], "uv_size": [0.25, 0.5]}, + "up": {"uv": [50, 84], "uv_size": [0.25, 0.25]}, + "down": {"uv": [84, 50.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.06192, 9.77103, -3.96874], + "size": [0.23523, 0.11762, 0.17029], + "uv": { + "north": {"uv": [52, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [84, 52], "uv_size": [0.25, 0.25]}, + "south": {"uv": [54, 84], "uv_size": [0.25, 0.25]}, + "west": {"uv": [84, 54], "uv_size": [0.25, 0.25]}, + "up": {"uv": [84, 56], "uv_size": [0.25, 0.25]}, + "down": {"uv": [84, 58.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.06192, 10.06509, -3.96874], + "size": [0.23523, 0.13721, 0.17029], + "uv": { + "north": {"uv": [60, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [84, 60], "uv_size": [0.25, 0.25]}, + "south": {"uv": [62, 84], "uv_size": [0.25, 0.25]}, + "west": {"uv": [84, 62], "uv_size": [0.25, 0.25]}, + "up": {"uv": [64, 84], "uv_size": [0.25, 0.25]}, + "down": {"uv": [84, 64.25], "uv_size": [0.25, -0.25]} + } + } + ] + }, + { + "name": "bone4", + "parent": "b", + "pivot": [1.44188, 10.2023, -5.75955], + "rotation": [0, 0.7, 0], + "cubes": [ + { + "origin": [0.0947, 10.59382, -7.689], + "size": [0.07867, 0.03946, 1.94712], + "inflate": 0.0005, + "pivot": [0.17324, 10.2023, -5.76081], + "rotation": [2.5, 0, -7.5], + "uv": { + "north": {"uv": [66, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 0], "uv_size": [2, 0.25]}, + "south": {"uv": [84, 66], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 31], "uv_size": [2, 0.25]}, + "up": {"uv": [31, 4], "uv_size": [0.25, 2]}, + "down": {"uv": [5, 33], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.0947, 10.67751, -9.61522], + "size": [0.07867, 0.03946, 1.94712], + "inflate": 0.0005, + "pivot": [0.17324, 10.2023, -5.76081], + "rotation": [5, 0, -7.5], + "uv": { + "north": {"uv": [68, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 7], "uv_size": [2, 0.25]}, + "south": {"uv": [84, 68], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 31], "uv_size": [2, 0.25]}, + "up": {"uv": [20, 31], "uv_size": [0.25, 2]}, + "down": {"uv": [22, 33], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.0947, 10.77823, -10.80238], + "size": [0.07867, 0.03946, 1.2022], + "inflate": 0.0005, + "pivot": [0.17324, 10.2023, -5.76081], + "rotation": [6.5, 0, -7.5], + "uv": { + "north": {"uv": [70, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [45, 21], "uv_size": [1.25, 0.25]}, + "south": {"uv": [84, 70], "uv_size": [0.25, 0.25]}, + "west": {"uv": [45, 23], "uv_size": [1.25, 0.25]}, + "up": {"uv": [25, 45], "uv_size": [0.25, 1.25]}, + "down": {"uv": [45, 26.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.09483, 10.2023, -7.70068], + "size": [0.07841, 0.22884, 1.93987], + "pivot": [0.17324, 10.2023, -5.76081], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [72, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 15], "uv_size": [2, 0.25]}, + "south": {"uv": [84, 72], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 28], "uv_size": [2, 0.25]}, + "up": {"uv": [9, 32], "uv_size": [0.25, 2]}, + "down": {"uv": [32, 11], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.09538, 10.43953, -6.28926], + "size": [0.07841, 0.17644, 0.52844], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [74, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [61, 12], "uv_size": [0.5, 0.25]}, + "south": {"uv": [84, 74], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 61], "uv_size": [0.5, 0.25]}, + "up": {"uv": [61, 14], "uv_size": [0.25, 0.5]}, + "down": {"uv": [61, 16.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.09538, 10.43953, -7.70068], + "size": [0.07841, 0.11762, 0.70571], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [76, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [53, 31], "uv_size": [0.75, 0.25]}, + "south": {"uv": [84, 76], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 53], "uv_size": [0.75, 0.25]}, + "up": {"uv": [53, 33], "uv_size": [0.25, 0.75]}, + "down": {"uv": [34, 53.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.09538, 10.21103, -9.63502], + "size": [0.07841, 0.05916, 1.93945], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [78, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 2], "uv_size": [2, 0.25]}, + "south": {"uv": [84, 78], "uv_size": [0.25, 0.25]}, + "west": {"uv": [11, 32], "uv_size": [2, 0.25]}, + "up": {"uv": [17, 32], "uv_size": [0.25, 2]}, + "down": {"uv": [32, 19], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.09538, 10.27019, -8.22359], + "size": [0.07841, 0.23523, 0.52802], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [80, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [61, 18], "uv_size": [0.5, 0.25]}, + "south": {"uv": [84, 80], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 61], "uv_size": [0.5, 0.25]}, + "up": {"uv": [61, 24], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 61.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.09538, 10.27019, -9.00772], + "size": [0.07841, 0.15683, 0.78413], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [82, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [53, 35], "uv_size": [0.75, 0.25]}, + "south": {"uv": [84, 82], "uv_size": [0.25, 0.25]}, + "west": {"uv": [53, 41], "uv_size": [0.75, 0.25]}, + "up": {"uv": [42, 53], "uv_size": [0.25, 0.75]}, + "down": {"uv": [53, 48.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.09538, 10.27019, -9.39978], + "size": [0.07841, 0.13723, 0.23523], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [84, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [85, 0], "uv_size": [0.25, 0.25]}, + "south": {"uv": [4, 85], "uv_size": [0.25, 0.25]}, + "west": {"uv": [85, 8], "uv_size": [0.25, 0.25]}, + "up": {"uv": [10, 85], "uv_size": [0.25, 0.25]}, + "down": {"uv": [85, 10.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.21103, -10.83948], + "size": [0.07841, 0.04027, 1.20446], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [85, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [45, 30], "uv_size": [1.25, 0.25]}, + "south": {"uv": [14, 85], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 45], "uv_size": [1.25, 0.25]}, + "up": {"uv": [45, 32], "uv_size": [0.25, 1.25]}, + "down": {"uv": [45, 36.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.09538, 10.2513, -9.89853], + "size": [0.07841, 0.09802, 0.26351], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [85, 14], "uv_size": [0.25, 0.25]}, + "east": {"uv": [85, 16], "uv_size": [0.25, 0.25]}, + "south": {"uv": [85, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 85], "uv_size": [0.25, 0.25]}, + "up": {"uv": [85, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 85.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.2513, -10.13377], + "size": [0.07841, 0.07841, 0.23524], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [85, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 85], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 85], "uv_size": [0.25, 0.25]}, + "west": {"uv": [85, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [32, 85], "uv_size": [0.25, 0.25]}, + "down": {"uv": [85, 32.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.2513, -10.2906], + "size": [0.07841, 0.05881, 0.15683], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [34, 85], "uv_size": [0.25, 0.25]}, + "east": {"uv": [85, 34], "uv_size": [0.25, 0.25]}, + "south": {"uv": [85, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [42, 85], "uv_size": [0.25, 0.25]}, + "up": {"uv": [85, 46], "uv_size": [0.25, 0.25]}, + "down": {"uv": [85, 48.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.2513, -10.44742], + "size": [0.07841, 0.0392, 0.15682], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [56, 85], "uv_size": [0.25, 0.25]}, + "east": {"uv": [58, 85], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 86], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 86], "uv_size": [0.25, 0.25]}, + "up": {"uv": [86, 2], "uv_size": [0.25, 0.25]}, + "down": {"uv": [86, 4.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.2513, -10.50624], + "size": [0.07841, 0.0196, 0.05881], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [6, 86], "uv_size": [0.25, 0.25]}, + "east": {"uv": [86, 6], "uv_size": [0.25, 0.25]}, + "south": {"uv": [8, 86], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 86], "uv_size": [0.25, 0.25]}, + "up": {"uv": [16, 86], "uv_size": [0.25, 0.25]}, + "down": {"uv": [18, 86.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.27019, -9.16454], + "size": [0.07841, 0.15683, 0.15682], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [20, 86], "uv_size": [0.25, 0.25]}, + "east": {"uv": [86, 20], "uv_size": [0.25, 0.25]}, + "south": {"uv": [86, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 86], "uv_size": [0.25, 0.25]}, + "up": {"uv": [86, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 86.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.27019, -9.63502], + "size": [0.07841, 0.09802, 0.23524], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [86, 36], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 86], "uv_size": [0.25, 0.25]}, + "south": {"uv": [86, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 86], "uv_size": [0.25, 0.25]}, + "up": {"uv": [86, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 86.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.42701, -8.38042], + "size": [0.07841, 0.05881, 0.15683], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [86, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [46, 86], "uv_size": [0.25, 0.25]}, + "south": {"uv": [48, 86], "uv_size": [0.25, 0.25]}, + "west": {"uv": [50, 86], "uv_size": [0.25, 0.25]}, + "up": {"uv": [86, 50], "uv_size": [0.25, 0.25]}, + "down": {"uv": [52, 86.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.42701, -8.51764], + "size": [0.07841, 0.05881, 0.13722], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [86, 52], "uv_size": [0.25, 0.25]}, + "east": {"uv": [54, 86], "uv_size": [0.25, 0.25]}, + "south": {"uv": [86, 54], "uv_size": [0.25, 0.25]}, + "west": {"uv": [86, 56], "uv_size": [0.25, 0.25]}, + "up": {"uv": [86, 58], "uv_size": [0.25, 0.25]}, + "down": {"uv": [60, 86.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.42701, -8.75288], + "size": [0.07841, 0.0392, 0.23524], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [86, 60], "uv_size": [0.25, 0.25]}, + "east": {"uv": [62, 86], "uv_size": [0.25, 0.25]}, + "south": {"uv": [86, 62], "uv_size": [0.25, 0.25]}, + "west": {"uv": [64, 86], "uv_size": [0.25, 0.25]}, + "up": {"uv": [86, 64], "uv_size": [0.25, 0.25]}, + "down": {"uv": [66, 86.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.50542, -7.98835], + "size": [0.07841, 0.01961, 0.29278], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [86, 66], "uv_size": [0.25, 0.25]}, + "east": {"uv": [68, 86], "uv_size": [0.25, 0.25]}, + "south": {"uv": [86, 68], "uv_size": [0.25, 0.25]}, + "west": {"uv": [70, 86], "uv_size": [0.25, 0.25]}, + "up": {"uv": [86, 70], "uv_size": [0.25, 0.25]}, + "down": {"uv": [72, 86.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.43953, -6.99498], + "size": [0.07841, 0.13723, 0.47048], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [86, 72], "uv_size": [0.25, 0.25]}, + "east": {"uv": [61, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [74, 86], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 61], "uv_size": [0.5, 0.25]}, + "up": {"uv": [30, 61], "uv_size": [0.25, 0.5]}, + "down": {"uv": [61, 30.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.09538, 10.43953, -6.5245], + "size": [0.07841, 0.15682, 0.23524], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [86, 74], "uv_size": [0.25, 0.25]}, + "east": {"uv": [76, 86], "uv_size": [0.25, 0.25]}, + "south": {"uv": [86, 76], "uv_size": [0.25, 0.25]}, + "west": {"uv": [78, 86], "uv_size": [0.25, 0.25]}, + "up": {"uv": [86, 78], "uv_size": [0.25, 0.25]}, + "down": {"uv": [80, 86.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09525, 9.65431, -7.68626], + "size": [0.07867, 0.03946, 1.94711], + "inflate": 0.0005, + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [-2.5, 0, 7.5], + "uv": { + "north": {"uv": [86, 80], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 20], "uv_size": [2, 0.25]}, + "south": {"uv": [82, 86], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 22], "uv_size": [2, 0.25]}, + "up": {"uv": [24, 32], "uv_size": [0.25, 2]}, + "down": {"uv": [32, 26], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.09525, 9.46224, -9.60503], + "size": [0.07867, 0.03946, 1.94712], + "inflate": 0.0005, + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [-5, 0, 7.5], + "uv": { + "north": {"uv": [86, 82], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 30], "uv_size": [2, 0.25]}, + "south": {"uv": [84, 86], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 32], "uv_size": [2, 0.25]}, + "up": {"uv": [26, 32], "uv_size": [0.25, 2]}, + "down": {"uv": [0, 35], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.09525, 9.29668, -10.78541], + "size": [0.07867, 0.03946, 1.20218], + "inflate": 0.0005, + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [-6.5, 0, 7.5], + "uv": { + "north": {"uv": [86, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [45, 38], "uv_size": [1.25, 0.25]}, + "south": {"uv": [86, 86], "uv_size": [0.25, 0.25]}, + "west": {"uv": [45, 40], "uv_size": [1.25, 0.25]}, + "up": {"uv": [38, 45], "uv_size": [0.25, 1.25]}, + "down": {"uv": [45, 43.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.09538, 9.96507, -7.70068], + "size": [0.07841, 0.22883, 1.93987], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [87, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [2, 33], "uv_size": [2, 0.25]}, + "south": {"uv": [4, 87], "uv_size": [0.25, 0.25]}, + "west": {"uv": [33, 4], "uv_size": [2, 0.25]}, + "up": {"uv": [7, 33], "uv_size": [0.25, 2]}, + "down": {"uv": [33, 14], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.09538, 9.78863, -6.28926], + "size": [0.07841, 0.17644, 0.52844], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [87, 8], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 61], "uv_size": [0.5, 0.25]}, + "south": {"uv": [10, 87], "uv_size": [0.25, 0.25]}, + "west": {"uv": [61, 32], "uv_size": [0.5, 0.25]}, + "up": {"uv": [34, 61], "uv_size": [0.25, 0.5]}, + "down": {"uv": [61, 34.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.09538, 9.84745, -7.70068], + "size": [0.07841, 0.11762, 0.70571], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [87, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [53, 50], "uv_size": [0.75, 0.25]}, + "south": {"uv": [87, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 54], "uv_size": [0.75, 0.25]}, + "up": {"uv": [2, 54], "uv_size": [0.25, 0.75]}, + "down": {"uv": [54, 2.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.09538, 10.13441, -9.63502], + "size": [0.07841, 0.05916, 1.93945], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [14, 87], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 33], "uv_size": [2, 0.25]}, + "south": {"uv": [87, 14], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 33], "uv_size": [2, 0.25]}, + "up": {"uv": [5, 34], "uv_size": [0.25, 2]}, + "down": {"uv": [34, 8], "uv_size": [0.25, -2]} + } + }, + { + "origin": [0.09538, 9.89918, -8.22359], + "size": [0.07841, 0.23523, 0.52802], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [87, 16], "uv_size": [0.25, 0.25]}, + "east": {"uv": [61, 40], "uv_size": [0.5, 0.25]}, + "south": {"uv": [87, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [42, 61], "uv_size": [0.5, 0.25]}, + "up": {"uv": [61, 46], "uv_size": [0.25, 0.5]}, + "down": {"uv": [61, 48.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.09538, 9.97759, -9.00772], + "size": [0.07841, 0.15683, 0.78413], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [22, 87], "uv_size": [0.25, 0.25]}, + "east": {"uv": [54, 4], "uv_size": [0.75, 0.25]}, + "south": {"uv": [87, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 54], "uv_size": [0.75, 0.25]}, + "up": {"uv": [54, 6], "uv_size": [0.25, 0.75]}, + "down": {"uv": [8, 54.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.09538, 9.99718, -9.39978], + "size": [0.07841, 0.13723, 0.23523], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [26, 87], "uv_size": [0.25, 0.25]}, + "east": {"uv": [87, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [28, 87], "uv_size": [0.25, 0.25]}, + "west": {"uv": [30, 87], "uv_size": [0.25, 0.25]}, + "up": {"uv": [87, 30], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 87.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.1533, -10.83948], + "size": [0.07841, 0.04027, 1.20446], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [87, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [43, 45], "uv_size": [1.25, 0.25]}, + "south": {"uv": [34, 87], "uv_size": [0.25, 0.25]}, + "west": {"uv": [46, 0], "uv_size": [1.25, 0.25]}, + "up": {"uv": [46, 2], "uv_size": [0.25, 1.25]}, + "down": {"uv": [4, 47.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.09538, 10.05529, -9.89853], + "size": [0.07841, 0.09802, 0.26351], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [87, 34], "uv_size": [0.25, 0.25]}, + "east": {"uv": [87, 40], "uv_size": [0.25, 0.25]}, + "south": {"uv": [42, 87], "uv_size": [0.25, 0.25]}, + "west": {"uv": [87, 46], "uv_size": [0.25, 0.25]}, + "up": {"uv": [87, 48], "uv_size": [0.25, 0.25]}, + "down": {"uv": [56, 87.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.0749, -10.13377], + "size": [0.07841, 0.07841, 0.23524], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [58, 87], "uv_size": [0.25, 0.25]}, + "east": {"uv": [0, 88], "uv_size": [0.25, 0.25]}, + "south": {"uv": [2, 88], "uv_size": [0.25, 0.25]}, + "west": {"uv": [88, 2], "uv_size": [0.25, 0.25]}, + "up": {"uv": [88, 4], "uv_size": [0.25, 0.25]}, + "down": {"uv": [6, 88.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.09449, -10.2906], + "size": [0.07841, 0.05882, 0.15683], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [88, 6], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 88], "uv_size": [0.25, 0.25]}, + "south": {"uv": [12, 88], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 88], "uv_size": [0.25, 0.25]}, + "up": {"uv": [18, 88], "uv_size": [0.25, 0.25]}, + "down": {"uv": [20, 88.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.1141, -10.44742], + "size": [0.07841, 0.0392, 0.15682], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [88, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [88, 22], "uv_size": [0.25, 0.25]}, + "south": {"uv": [24, 88], "uv_size": [0.25, 0.25]}, + "west": {"uv": [88, 28], "uv_size": [0.25, 0.25]}, + "up": {"uv": [36, 88], "uv_size": [0.25, 0.25]}, + "down": {"uv": [88, 36.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.1337, -10.50624], + "size": [0.07841, 0.0196, 0.05881], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [38, 88], "uv_size": [0.25, 0.25]}, + "east": {"uv": [88, 38], "uv_size": [0.25, 0.25]}, + "south": {"uv": [40, 88], "uv_size": [0.25, 0.25]}, + "west": {"uv": [88, 42], "uv_size": [0.25, 0.25]}, + "up": {"uv": [44, 88], "uv_size": [0.25, 0.25]}, + "down": {"uv": [88, 44.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 9.97759, -9.16454], + "size": [0.07841, 0.15683, 0.15682], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [46, 88], "uv_size": [0.25, 0.25]}, + "east": {"uv": [48, 88], "uv_size": [0.25, 0.25]}, + "south": {"uv": [50, 88], "uv_size": [0.25, 0.25]}, + "west": {"uv": [88, 50], "uv_size": [0.25, 0.25]}, + "up": {"uv": [52, 88], "uv_size": [0.25, 0.25]}, + "down": {"uv": [88, 52.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 10.03639, -9.63502], + "size": [0.07841, 0.09802, 0.23524], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [54, 88], "uv_size": [0.25, 0.25]}, + "east": {"uv": [88, 54], "uv_size": [0.25, 0.25]}, + "south": {"uv": [88, 56], "uv_size": [0.25, 0.25]}, + "west": {"uv": [88, 58], "uv_size": [0.25, 0.25]}, + "up": {"uv": [60, 88], "uv_size": [0.25, 0.25]}, + "down": {"uv": [88, 60.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 9.91877, -8.38042], + "size": [0.07841, 0.05881, 0.15683], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [62, 88], "uv_size": [0.25, 0.25]}, + "east": {"uv": [88, 62], "uv_size": [0.25, 0.25]}, + "south": {"uv": [64, 88], "uv_size": [0.25, 0.25]}, + "west": {"uv": [88, 64], "uv_size": [0.25, 0.25]}, + "up": {"uv": [66, 88], "uv_size": [0.25, 0.25]}, + "down": {"uv": [88, 66.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 9.91877, -8.51764], + "size": [0.07841, 0.05881, 0.13722], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [68, 88], "uv_size": [0.25, 0.25]}, + "east": {"uv": [88, 68], "uv_size": [0.25, 0.25]}, + "south": {"uv": [70, 88], "uv_size": [0.25, 0.25]}, + "west": {"uv": [88, 70], "uv_size": [0.25, 0.25]}, + "up": {"uv": [72, 88], "uv_size": [0.25, 0.25]}, + "down": {"uv": [88, 72.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 9.93838, -8.75288], + "size": [0.07841, 0.0392, 0.23524], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [74, 88], "uv_size": [0.25, 0.25]}, + "east": {"uv": [88, 74], "uv_size": [0.25, 0.25]}, + "south": {"uv": [76, 88], "uv_size": [0.25, 0.25]}, + "west": {"uv": [88, 76], "uv_size": [0.25, 0.25]}, + "up": {"uv": [78, 88], "uv_size": [0.25, 0.25]}, + "down": {"uv": [88, 78.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 9.87957, -7.98835], + "size": [0.07841, 0.01961, 0.29278], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [80, 88], "uv_size": [0.25, 0.25]}, + "east": {"uv": [88, 80], "uv_size": [0.25, 0.25]}, + "south": {"uv": [82, 88], "uv_size": [0.25, 0.25]}, + "west": {"uv": [88, 82], "uv_size": [0.25, 0.25]}, + "up": {"uv": [84, 88], "uv_size": [0.25, 0.25]}, + "down": {"uv": [88, 84.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09538, 9.82784, -6.99498], + "size": [0.07841, 0.13723, 0.47048], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [86, 88], "uv_size": [0.25, 0.25]}, + "east": {"uv": [56, 61], "uv_size": [0.5, 0.25]}, + "south": {"uv": [88, 86], "uv_size": [0.25, 0.25]}, + "west": {"uv": [58, 61], "uv_size": [0.5, 0.25]}, + "up": {"uv": [0, 62], "uv_size": [0.25, 0.5]}, + "down": {"uv": [2, 62.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.09538, 9.80824, -6.5245], + "size": [0.07841, 0.15682, 0.23524], + "pivot": [0.23753, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [88, 88], "uv_size": [0.25, 0.25]}, + "east": {"uv": [89, 0], "uv_size": [0.25, 0.25]}, + "south": {"uv": [4, 89], "uv_size": [0.25, 0.25]}, + "west": {"uv": [89, 8], "uv_size": [0.25, 0.25]}, + "up": {"uv": [10, 89], "uv_size": [0.25, 0.25]}, + "down": {"uv": [89, 10.25], "uv_size": [0.25, -0.25]} + } + } + ] + }, + { + "name": "bone5", + "parent": "b", + "pivot": [-1.33049, 10.2023, -5.75955], + "rotation": [0, -0.7, 0], + "cubes": [ + { + "origin": [-0.06197, 10.59382, -7.689], + "size": [0.07867, 0.03946, 1.94712], + "inflate": 0.0005, + "pivot": [-0.06185, 10.2023, -5.76081], + "rotation": [2.5, 0, 7.5], + "uv": { + "north": {"uv": [89, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [34, 0], "uv_size": [2, 0.25]}, + "south": {"uv": [14, 89], "uv_size": [0.25, 0.25]}, + "west": {"uv": [34, 9], "uv_size": [2, 0.25]}, + "up": {"uv": [11, 34], "uv_size": [0.25, 2]}, + "down": {"uv": [34, 17], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.06197, 10.67751, -9.61522], + "size": [0.07867, 0.03946, 1.94712], + "inflate": 0.0005, + "pivot": [-0.06185, 10.2023, -5.76081], + "rotation": [5, 0, 7.5], + "uv": { + "north": {"uv": [89, 14], "uv_size": [0.25, 0.25]}, + "east": {"uv": [34, 18], "uv_size": [2, 0.25]}, + "south": {"uv": [89, 16], "uv_size": [0.25, 0.25]}, + "west": {"uv": [19, 34], "uv_size": [2, 0.25]}, + "up": {"uv": [22, 34], "uv_size": [0.25, 2]}, + "down": {"uv": [34, 26], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.06197, 10.77823, -10.80238], + "size": [0.07867, 0.03946, 1.2022], + "inflate": 0.0005, + "pivot": [-0.06185, 10.2023, -5.76081], + "rotation": [6.5, 0, 7.5], + "uv": { + "north": {"uv": [89, 18], "uv_size": [0.25, 0.25]}, + "east": {"uv": [46, 10], "uv_size": [1.25, 0.25]}, + "south": {"uv": [22, 89], "uv_size": [0.25, 0.25]}, + "west": {"uv": [46, 12], "uv_size": [1.25, 0.25]}, + "up": {"uv": [10, 46], "uv_size": [0.25, 1.25]}, + "down": {"uv": [14, 47.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.06185, 10.2023, -7.70068], + "size": [0.07842, 0.22884, 1.93987], + "pivot": [-0.06185, 10.2023, -5.76081], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [89, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [34, 27], "uv_size": [2, 0.25]}, + "south": {"uv": [26, 89], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 34], "uv_size": [2, 0.25]}, + "up": {"uv": [34, 34], "uv_size": [0.25, 2]}, + "down": {"uv": [2, 37], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.0624, 10.43953, -6.28926], + "size": [0.07842, 0.17644, 0.52844], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [89, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [62, 2], "uv_size": [0.5, 0.25]}, + "south": {"uv": [28, 89], "uv_size": [0.25, 0.25]}, + "west": {"uv": [62, 4], "uv_size": [0.5, 0.25]}, + "up": {"uv": [6, 62], "uv_size": [0.25, 0.5]}, + "down": {"uv": [62, 6.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.0624, 10.43953, -7.70068], + "size": [0.07842, 0.11762, 0.70571], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [30, 89], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 54], "uv_size": [0.75, 0.25]}, + "south": {"uv": [89, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 54], "uv_size": [0.75, 0.25]}, + "up": {"uv": [18, 54], "uv_size": [0.25, 0.75]}, + "down": {"uv": [20, 54.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.0624, 10.21103, -9.63502], + "size": [0.07842, 0.05916, 1.93945], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [32, 89], "uv_size": [0.25, 0.25]}, + "east": {"uv": [35, 2], "uv_size": [2, 0.25]}, + "south": {"uv": [89, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [35, 11], "uv_size": [2, 0.25]}, + "up": {"uv": [9, 35], "uv_size": [0.25, 2]}, + "down": {"uv": [13, 37], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.0624, 10.27019, -8.22359], + "size": [0.07842, 0.23523, 0.52802], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [34, 89], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 62], "uv_size": [0.5, 0.25]}, + "south": {"uv": [89, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 62], "uv_size": [0.5, 0.25]}, + "up": {"uv": [16, 62], "uv_size": [0.25, 0.5]}, + "down": {"uv": [18, 62.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.0624, 10.27019, -9.00772], + "size": [0.07842, 0.15683, 0.78413], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [89, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [54, 20], "uv_size": [0.75, 0.25]}, + "south": {"uv": [42, 89], "uv_size": [0.25, 0.25]}, + "west": {"uv": [54, 22], "uv_size": [0.75, 0.25]}, + "up": {"uv": [24, 54], "uv_size": [0.25, 0.75]}, + "down": {"uv": [54, 28.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.0624, 10.27019, -9.39978], + "size": [0.07842, 0.13723, 0.23523], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [89, 46], "uv_size": [0.25, 0.25]}, + "east": {"uv": [89, 48], "uv_size": [0.25, 0.25]}, + "south": {"uv": [56, 89], "uv_size": [0.25, 0.25]}, + "west": {"uv": [58, 89], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 90], "uv_size": [0.25, 0.25]}, + "down": {"uv": [2, 90.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.21103, -10.83948], + "size": [0.07842, 0.04027, 1.20446], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [90, 2], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 46], "uv_size": [1.25, 0.25]}, + "south": {"uv": [90, 4], "uv_size": [0.25, 0.25]}, + "west": {"uv": [46, 17], "uv_size": [1.25, 0.25]}, + "up": {"uv": [29, 46], "uv_size": [0.25, 1.25]}, + "down": {"uv": [35, 47.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.0624, 10.21103, -10.83948], + "size": [0.07842, 0.04027, 0.03258], + "inflate": 0.001, + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "east": {"uv": [83.75, 86], "uv_size": [0.25, 0.25]} + } + }, + { + "origin": [-0.02803, 10.15557, -10.84143], + "size": [0.07842, 0.04027, 0.03258], + "inflate": 0.001, + "pivot": [0.11414, 10.20457, -3.27264], + "rotation": [0, 0, 7.5], + "uv": { + "west": {"uv": [84, 86.25], "uv_size": [-0.25, -0.25]} + } + }, + { + "origin": [-0.02803, 10.21165, -10.84143], + "size": [0.07842, 0.04027, 0.03258], + "inflate": 0.001, + "pivot": [0.11414, 10.20292, -3.27264], + "rotation": [0, 0, -7.5], + "uv": { + "west": {"uv": [84, 86], "uv_size": [-0.25, 0.25]} + } + }, + { + "origin": [-0.0624, 10.15495, -10.83948], + "size": [0.07842, 0.04027, 0.03258], + "inflate": 0.001, + "pivot": [-0.12615, 10.20395, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "east": {"uv": [83.75, 86.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.2513, -9.89853], + "size": [0.07842, 0.09802, 0.26351], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [6, 90], "uv_size": [0.25, 0.25]}, + "east": {"uv": [90, 6], "uv_size": [0.25, 0.25]}, + "south": {"uv": [8, 90], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 90], "uv_size": [0.25, 0.25]}, + "up": {"uv": [16, 90], "uv_size": [0.25, 0.25]}, + "down": {"uv": [18, 90.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.2513, -10.13377], + "size": [0.07842, 0.07841, 0.23524], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [20, 90], "uv_size": [0.25, 0.25]}, + "east": {"uv": [90, 20], "uv_size": [0.25, 0.25]}, + "south": {"uv": [90, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 90], "uv_size": [0.25, 0.25]}, + "up": {"uv": [90, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 90.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.2513, -10.2906], + "size": [0.07842, 0.05881, 0.15683], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [90, 36], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 90], "uv_size": [0.25, 0.25]}, + "south": {"uv": [90, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 90], "uv_size": [0.25, 0.25]}, + "up": {"uv": [90, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 90.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.2513, -10.44742], + "size": [0.07842, 0.0392, 0.15682], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [90, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [46, 90], "uv_size": [0.25, 0.25]}, + "south": {"uv": [48, 90], "uv_size": [0.25, 0.25]}, + "west": {"uv": [50, 90], "uv_size": [0.25, 0.25]}, + "up": {"uv": [90, 50], "uv_size": [0.25, 0.25]}, + "down": {"uv": [52, 90.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.2513, -10.50624], + "size": [0.07842, 0.0196, 0.05881], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [90, 52], "uv_size": [0.25, 0.25]}, + "east": {"uv": [54, 90], "uv_size": [0.25, 0.25]}, + "south": {"uv": [90, 54], "uv_size": [0.25, 0.25]}, + "west": {"uv": [90, 56], "uv_size": [0.25, 0.25]}, + "up": {"uv": [90, 58], "uv_size": [0.25, 0.25]}, + "down": {"uv": [60, 90.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.27019, -9.16454], + "size": [0.07842, 0.15683, 0.15682], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [90, 60], "uv_size": [0.25, 0.25]}, + "east": {"uv": [62, 90], "uv_size": [0.25, 0.25]}, + "south": {"uv": [90, 62], "uv_size": [0.25, 0.25]}, + "west": {"uv": [64, 90], "uv_size": [0.25, 0.25]}, + "up": {"uv": [90, 64], "uv_size": [0.25, 0.25]}, + "down": {"uv": [66, 90.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.27019, -9.63502], + "size": [0.07842, 0.09802, 0.23524], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [90, 66], "uv_size": [0.25, 0.25]}, + "east": {"uv": [68, 90], "uv_size": [0.25, 0.25]}, + "south": {"uv": [90, 68], "uv_size": [0.25, 0.25]}, + "west": {"uv": [70, 90], "uv_size": [0.25, 0.25]}, + "up": {"uv": [90, 70], "uv_size": [0.25, 0.25]}, + "down": {"uv": [72, 90.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.42701, -8.38042], + "size": [0.07842, 0.05881, 0.15683], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [90, 72], "uv_size": [0.25, 0.25]}, + "east": {"uv": [74, 90], "uv_size": [0.25, 0.25]}, + "south": {"uv": [90, 74], "uv_size": [0.25, 0.25]}, + "west": {"uv": [76, 90], "uv_size": [0.25, 0.25]}, + "up": {"uv": [90, 76], "uv_size": [0.25, 0.25]}, + "down": {"uv": [78, 90.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.42701, -8.51764], + "size": [0.07842, 0.05881, 0.13722], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [90, 78], "uv_size": [0.25, 0.25]}, + "east": {"uv": [80, 90], "uv_size": [0.25, 0.25]}, + "south": {"uv": [90, 80], "uv_size": [0.25, 0.25]}, + "west": {"uv": [82, 90], "uv_size": [0.25, 0.25]}, + "up": {"uv": [90, 82], "uv_size": [0.25, 0.25]}, + "down": {"uv": [84, 90.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.42701, -8.75288], + "size": [0.07842, 0.0392, 0.23524], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [90, 84], "uv_size": [0.25, 0.25]}, + "east": {"uv": [86, 90], "uv_size": [0.25, 0.25]}, + "south": {"uv": [90, 86], "uv_size": [0.25, 0.25]}, + "west": {"uv": [88, 90], "uv_size": [0.25, 0.25]}, + "up": {"uv": [90, 88], "uv_size": [0.25, 0.25]}, + "down": {"uv": [90, 90.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.50542, -7.98835], + "size": [0.07842, 0.01961, 0.29278], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [91, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [4, 91], "uv_size": [0.25, 0.25]}, + "south": {"uv": [91, 8], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 91], "uv_size": [0.25, 0.25]}, + "up": {"uv": [91, 10], "uv_size": [0.25, 0.25]}, + "down": {"uv": [91, 12.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.43953, -6.99498], + "size": [0.07842, 0.13723, 0.47048], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [14, 91], "uv_size": [0.25, 0.25]}, + "east": {"uv": [20, 62], "uv_size": [0.5, 0.25]}, + "south": {"uv": [91, 14], "uv_size": [0.25, 0.25]}, + "west": {"uv": [62, 20], "uv_size": [0.5, 0.25]}, + "up": {"uv": [62, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 62.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.0624, 10.43953, -6.5245], + "size": [0.07842, 0.15682, 0.23524], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, 7.5], + "uv": { + "north": {"uv": [91, 16], "uv_size": [0.25, 0.25]}, + "east": {"uv": [91, 18], "uv_size": [0.25, 0.25]}, + "south": {"uv": [22, 91], "uv_size": [0.25, 0.25]}, + "west": {"uv": [91, 24], "uv_size": [0.25, 0.25]}, + "up": {"uv": [26, 91], "uv_size": [0.25, 0.25]}, + "down": {"uv": [91, 26.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.06253, 9.65431, -7.68626], + "size": [0.07867, 0.03946, 1.94711], + "inflate": 0.0005, + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [-2.5, 0, -7.5], + "uv": { + "north": {"uv": [28, 91], "uv_size": [0.25, 0.25]}, + "east": {"uv": [35, 13], "uv_size": [2, 0.25]}, + "south": {"uv": [30, 91], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 35], "uv_size": [2, 0.25]}, + "up": {"uv": [35, 20], "uv_size": [0.25, 2]}, + "down": {"uv": [24, 37], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.06253, 9.46224, -9.60503], + "size": [0.07867, 0.03946, 1.94712], + "inflate": 0.0005, + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [-5, 0, -7.5], + "uv": { + "north": {"uv": [91, 30], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 35], "uv_size": [2, 0.25]}, + "south": {"uv": [32, 91], "uv_size": [0.25, 0.25]}, + "west": {"uv": [35, 29], "uv_size": [2, 0.25]}, + "up": {"uv": [29, 35], "uv_size": [0.25, 2]}, + "down": {"uv": [35, 33], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.06253, 9.29668, -10.78541], + "size": [0.07867, 0.03946, 1.20218], + "inflate": 0.0005, + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [-6.5, 0, -7.5], + "uv": { + "north": {"uv": [91, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [46, 28], "uv_size": [1.25, 0.25]}, + "south": {"uv": [34, 91], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 46], "uv_size": [1.25, 0.25]}, + "up": {"uv": [46, 45], "uv_size": [0.25, 1.25]}, + "down": {"uv": [2, 48.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.0624, 9.96507, -7.70068], + "size": [0.07842, 0.22883, 1.93987], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [91, 34], "uv_size": [0.25, 0.25]}, + "east": {"uv": [36, 4], "uv_size": [2, 0.25]}, + "south": {"uv": [91, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [36, 6], "uv_size": [2, 0.25]}, + "up": {"uv": [0, 36], "uv_size": [0.25, 2]}, + "down": {"uv": [7, 38], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.0624, 9.78863, -6.28926], + "size": [0.07842, 0.17644, 0.52844], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [42, 91], "uv_size": [0.25, 0.25]}, + "east": {"uv": [62, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [91, 46], "uv_size": [0.25, 0.25]}, + "west": {"uv": [36, 62], "uv_size": [0.5, 0.25]}, + "up": {"uv": [62, 36], "uv_size": [0.25, 0.5]}, + "down": {"uv": [38, 62.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.0624, 9.84745, -7.70068], + "size": [0.07842, 0.11762, 0.70571], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [91, 48], "uv_size": [0.25, 0.25]}, + "east": {"uv": [36, 54], "uv_size": [0.75, 0.25]}, + "south": {"uv": [56, 91], "uv_size": [0.25, 0.25]}, + "west": {"uv": [54, 37], "uv_size": [0.75, 0.25]}, + "up": {"uv": [38, 54], "uv_size": [0.25, 0.75]}, + "down": {"uv": [54, 39.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.0624, 10.13441, -9.63502], + "size": [0.07842, 0.05916, 1.93945], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [58, 91], "uv_size": [0.25, 0.25]}, + "east": {"uv": [36, 15], "uv_size": [2, 0.25]}, + "south": {"uv": [0, 92], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 36], "uv_size": [2, 0.25]}, + "up": {"uv": [36, 23], "uv_size": [0.25, 2]}, + "down": {"uv": [31, 38], "uv_size": [0.25, -2]} + } + }, + { + "origin": [-0.0624, 9.89918, -8.22359], + "size": [0.07842, 0.23523, 0.52802], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [2, 92], "uv_size": [0.25, 0.25]}, + "east": {"uv": [62, 38], "uv_size": [0.5, 0.25]}, + "south": {"uv": [92, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 62], "uv_size": [0.5, 0.25]}, + "up": {"uv": [62, 42], "uv_size": [0.25, 0.5]}, + "down": {"uv": [44, 62.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.0624, 9.97759, -9.00772], + "size": [0.07842, 0.15683, 0.78413], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [92, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 54], "uv_size": [0.75, 0.25]}, + "south": {"uv": [6, 92], "uv_size": [0.25, 0.25]}, + "west": {"uv": [54, 43], "uv_size": [0.75, 0.25]}, + "up": {"uv": [44, 54], "uv_size": [0.25, 0.75]}, + "down": {"uv": [54, 45.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.0624, 9.99718, -9.39978], + "size": [0.07842, 0.13723, 0.23523], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [92, 6], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 92], "uv_size": [0.25, 0.25]}, + "south": {"uv": [12, 92], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 92], "uv_size": [0.25, 0.25]}, + "up": {"uv": [18, 92], "uv_size": [0.25, 0.25]}, + "down": {"uv": [20, 92.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.1533, -10.83948], + "size": [0.07842, 0.04027, 1.20446], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [92, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [47, 5], "uv_size": [1.25, 0.25]}, + "south": {"uv": [92, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [47, 7], "uv_size": [1.25, 0.25]}, + "up": {"uv": [8, 47], "uv_size": [0.25, 1.25]}, + "down": {"uv": [12, 48.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.0624, 10.05529, -9.89853], + "size": [0.07842, 0.09802, 0.26351], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [24, 92], "uv_size": [0.25, 0.25]}, + "east": {"uv": [92, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [36, 92], "uv_size": [0.25, 0.25]}, + "west": {"uv": [92, 36], "uv_size": [0.25, 0.25]}, + "up": {"uv": [38, 92], "uv_size": [0.25, 0.25]}, + "down": {"uv": [92, 38.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.0749, -10.13377], + "size": [0.07842, 0.07841, 0.23524], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [40, 92], "uv_size": [0.25, 0.25]}, + "east": {"uv": [92, 42], "uv_size": [0.25, 0.25]}, + "south": {"uv": [44, 92], "uv_size": [0.25, 0.25]}, + "west": {"uv": [92, 44], "uv_size": [0.25, 0.25]}, + "up": {"uv": [46, 92], "uv_size": [0.25, 0.25]}, + "down": {"uv": [48, 92.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.09449, -10.2906], + "size": [0.07842, 0.05882, 0.15683], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [50, 92], "uv_size": [0.25, 0.25]}, + "east": {"uv": [92, 50], "uv_size": [0.25, 0.25]}, + "south": {"uv": [52, 92], "uv_size": [0.25, 0.25]}, + "west": {"uv": [92, 52], "uv_size": [0.25, 0.25]}, + "up": {"uv": [54, 92], "uv_size": [0.25, 0.25]}, + "down": {"uv": [92, 54.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.1141, -10.44742], + "size": [0.07842, 0.0392, 0.15682], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [92, 56], "uv_size": [0.25, 0.25]}, + "east": {"uv": [92, 58], "uv_size": [0.25, 0.25]}, + "south": {"uv": [60, 92], "uv_size": [0.25, 0.25]}, + "west": {"uv": [92, 60], "uv_size": [0.25, 0.25]}, + "up": {"uv": [62, 92], "uv_size": [0.25, 0.25]}, + "down": {"uv": [92, 62.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.1337, -10.50624], + "size": [0.07842, 0.0196, 0.05881], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [64, 92], "uv_size": [0.25, 0.25]}, + "east": {"uv": [92, 64], "uv_size": [0.25, 0.25]}, + "south": {"uv": [66, 92], "uv_size": [0.25, 0.25]}, + "west": {"uv": [92, 66], "uv_size": [0.25, 0.25]}, + "up": {"uv": [68, 92], "uv_size": [0.25, 0.25]}, + "down": {"uv": [92, 68.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 9.97759, -9.16454], + "size": [0.07842, 0.15683, 0.15682], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [70, 92], "uv_size": [0.25, 0.25]}, + "east": {"uv": [92, 70], "uv_size": [0.25, 0.25]}, + "south": {"uv": [72, 92], "uv_size": [0.25, 0.25]}, + "west": {"uv": [92, 72], "uv_size": [0.25, 0.25]}, + "up": {"uv": [74, 92], "uv_size": [0.25, 0.25]}, + "down": {"uv": [92, 74.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 10.03639, -9.63502], + "size": [0.07842, 0.09802, 0.23524], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [76, 92], "uv_size": [0.25, 0.25]}, + "east": {"uv": [92, 76], "uv_size": [0.25, 0.25]}, + "south": {"uv": [78, 92], "uv_size": [0.25, 0.25]}, + "west": {"uv": [92, 78], "uv_size": [0.25, 0.25]}, + "up": {"uv": [80, 92], "uv_size": [0.25, 0.25]}, + "down": {"uv": [92, 80.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 9.91877, -8.38042], + "size": [0.07842, 0.05881, 0.15683], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [82, 92], "uv_size": [0.25, 0.25]}, + "east": {"uv": [92, 82], "uv_size": [0.25, 0.25]}, + "south": {"uv": [84, 92], "uv_size": [0.25, 0.25]}, + "west": {"uv": [92, 84], "uv_size": [0.25, 0.25]}, + "up": {"uv": [86, 92], "uv_size": [0.25, 0.25]}, + "down": {"uv": [92, 86.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 9.91877, -8.51764], + "size": [0.07842, 0.05881, 0.13722], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [88, 92], "uv_size": [0.25, 0.25]}, + "east": {"uv": [92, 88], "uv_size": [0.25, 0.25]}, + "south": {"uv": [90, 92], "uv_size": [0.25, 0.25]}, + "west": {"uv": [92, 90], "uv_size": [0.25, 0.25]}, + "up": {"uv": [92, 92], "uv_size": [0.25, 0.25]}, + "down": {"uv": [93, 0.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 9.93838, -8.75288], + "size": [0.07842, 0.0392, 0.23524], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [4, 93], "uv_size": [0.25, 0.25]}, + "east": {"uv": [93, 8], "uv_size": [0.25, 0.25]}, + "south": {"uv": [10, 93], "uv_size": [0.25, 0.25]}, + "west": {"uv": [93, 10], "uv_size": [0.25, 0.25]}, + "up": {"uv": [93, 12], "uv_size": [0.25, 0.25]}, + "down": {"uv": [14, 93.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 9.87957, -7.98835], + "size": [0.07842, 0.01961, 0.29278], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [93, 14], "uv_size": [0.25, 0.25]}, + "east": {"uv": [93, 16], "uv_size": [0.25, 0.25]}, + "south": {"uv": [93, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 93], "uv_size": [0.25, 0.25]}, + "up": {"uv": [93, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 93.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0624, 9.82784, -6.99498], + "size": [0.07842, 0.13723, 0.47048], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [93, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [62, 44], "uv_size": [0.5, 0.25]}, + "south": {"uv": [28, 93], "uv_size": [0.25, 0.25]}, + "west": {"uv": [46, 62], "uv_size": [0.5, 0.25]}, + "up": {"uv": [48, 62], "uv_size": [0.25, 0.5]}, + "down": {"uv": [50, 62.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.0624, 9.80824, -6.5245], + "size": [0.07842, 0.15682, 0.23524], + "pivot": [-0.12615, 10.2023, -3.27069], + "rotation": [0, 0, -7.5], + "uv": { + "north": {"uv": [30, 93], "uv_size": [0.25, 0.25]}, + "east": {"uv": [93, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [32, 93], "uv_size": [0.25, 0.25]}, + "west": {"uv": [93, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [34, 93], "uv_size": [0.25, 0.25]}, + "down": {"uv": [93, 34.25], "uv_size": [0.25, -0.25]} + } + } + ] + }, + { + "name": "constraint", + "parent": "bone", + "pivot": [-0.01558, 8.125, 1.9375] + }, + { + "name": "lefthand", + "parent": "bone", + "pivot": [-6, 19, 0] + }, + { + "name": "lefthand_pos", + "parent": "lefthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [-7, 8, -2], + "size": [3, 12, 4], + "uv": { + "north": {"uv": [12.228, 0], "uv_size": [3.614, 12]}, + "east": {"uv": [5, 12], "uv_size": [3.614, 12]}, + "south": {"uv": [8.614, 12], "uv_size": [3.614, 12]}, + "west": {"uv": [12.228, 12], "uv_size": [3.614, 12]}, + "up": {"uv": [15.842, 8], "uv_size": [3.614, 4]}, + "down": {"uv": [15.842, 16], "uv_size": [3.614, -4]} + } + } + ] + }, + { + "name": "camera", + "pivot": [3.4563, 3.4656, -0.7687] + }, + { + "name": "view", + "pivot": [0, 0, 0] + }, + { + "name": "refit_view", + "parent": "view", + "pivot": [22.475, 5.55, 0.2], + "rotation": [0, 90, 0] + }, + { + "name": "iron_view", + "parent": "view", + "pivot": [-0.15326, 9.42188, 6.93493], + "rotation": [0, -1, 0] + }, + { + "name": "idle_view", + "parent": "view", + "pivot": [3.4563, 3.4656, -0.7687] + }, + { + "name": "positioning", + "pivot": [-0.01558, 4.125, 4.9375] + }, + { + "name": "ground", + "parent": "positioning", + "pivot": [0, 0, 0] + }, + { + "name": "thirdperson_hand", + "parent": "positioning", + "pivot": [-0.01558, 6.125, -2.0625] + }, + { + "name": "fixed", + "parent": "positioning", + "pivot": [0.79692, 5.125, -1.0625], + "rotation": [0, 90, 0] + }, + { + "name": "bone38", + "pivot": [62, -11.35, -167.5] + }, + { + "name": "bone39", + "parent": "bone38", + "pivot": [-65, -11.35, -167.5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/tactical.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/tactical.anim.json new file mode 100644 index 0000000..3f65a7c --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/tactical.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"melee_1":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[88.113,0.806,133.207],"0.04":[66.623,12.372,134.331],"0.08":[51.444,23.607,130.511],"0.12":[40.277,31.413,122.384],"0.17":[30.288,17.227,126.368],"0.21":[27.005,13.887,154.39],"0.25":[34.286,22.135,171.734],"0.29":[52.211,33.066,185.229],"0.33":[76.409,40.037,202.459],"0.38":[98.113,39.144,219.788],"0.42":[107.436,32.309,230.426],"0.46":[105.321,23.315,235.283],"0.5":[99.074,13.796,238.938],"0.54":[94.915,5.013,244.554],"0.58":[95.062,-3.484,253.772],"0.62":[95.198,-13.633,267.054],"0.67":[90.033,-23.365,282.41],"0.71":[80.805,-28.945,295.65],"0.75":[74.138,-32.211,300.611],"0.79":[73.104,-37.148,296.326],"0.83":[77.242,-42.787,285.826],"0.88":[82.407,-46.679,275.836],"0.92":[85.027,-48.686,270.844],"0.96":[86.021,-49.569,268.786],"1.0":[86.21,-49.704,268.183],"1.04":[86.05,-49.51,268.218],"1.08":[85.852,-49.271,268.314],"1.12":[85.916,-49.291,267.943]},"position":{"0.0":[-14.952,-22.528,-23.934],"0.04":[-8.063,-23.69,-26.994],"0.08":[-0.515,-25.905,-27.121],"0.12":[5.753,-28.554,-24.177],"0.17":[13.861,-30.819,-16.047],"0.21":[11.451,-38.27,-11.518],"0.25":[8.095,-41.647,-10.211],"0.29":[6.019,-42.658,-11.075],"0.33":[4.501,-42.635,-12.686],"0.38":[3.092,-42.184,-14.337],"0.42":[1.17,-41.761,-15.965],"0.46":[-1.539,-41.272,-17.61],"0.5":[-4.478,-40.38,-18.939],"0.54":[-6.752,-39.049,-19.907],"0.58":[-7.679,-37.174,-20.829],"0.62":[-7.548,-34.568,-21.841],"0.67":[-7.316,-31.548,-22.526],"0.71":[-7.637,-28.978,-22.609],"0.75":[-8.467,-27.444,-22.228],"0.79":[-9.441,-26.766,-21.6],"0.83":[-10.321,-26.53,-20.775],"0.88":[-10.964,-26.323,-19.896],"0.92":[-11.312,-26.017,-19.085],"0.96":[-11.44,-25.746,-18.407],"1.0":[-11.457,-25.619,-18.025],"1.04":[-11.45,-25.577,-17.813],"1.08":[-11.473,-25.586,-17.747],"1.12":[-11.543,-25.602,-17.74]}},"tactical":{"rotation":{"0.0":[19.385,9.529,166.096],"0.04":[19.427,9.513,166.166],"0.08":[19.389,9.476,166.128],"0.12":[19.433,9.481,166.156],"0.17":[19.624,8.908,166.06],"0.21":[19.549,9.154,165.941],"0.25":[19.414,9.436,166.141],"0.29":[19.395,9.492,166.161],"0.33":[19.427,9.495,166.222],"0.38":[19.461,9.532,166.225],"0.42":[19.456,9.565,166.163],"0.46":[19.394,9.544,166.16],"0.5":[19.466,9.584,166.146],"0.54":[19.517,9.591,166.149],"0.58":[19.567,9.571,166.198],"0.62":[19.415,9.555,166.174],"0.67":[19.599,9.554,166.08],"0.71":[19.512,9.521,166.091],"0.75":[19.431,9.5,166.169],"0.79":[19.436,9.504,166.161],"0.83":[19.435,9.528,166.174],"0.88":[19.439,9.544,166.177],"0.92":[19.447,9.557,166.17],"0.96":[19.447,9.547,166.176],"1.0":[19.43,9.547,166.168],"1.04":[19.44,9.555,166.176],"1.08":[19.451,9.554,166.183],"1.12":[19.444,9.55,166.172]},"position":{"0.0":[5.248,12.344,-0.593],"0.04":[5.215,12.283,-0.561],"0.08":[5.24,12.358,-0.592],"0.12":[5.247,12.432,-0.613],"0.17":[5.285,12.132,-0.584],"0.21":[5.314,12.235,-0.653],"0.25":[5.245,12.429,-0.626],"0.29":[5.244,12.427,-0.629],"0.33":[5.241,12.423,-0.618],"0.38":[5.247,12.428,-0.622],"0.42":[5.254,12.421,-0.626],"0.46":[5.246,12.425,-0.625],"0.5":[5.264,12.414,-0.612],"0.54":[5.269,12.41,-0.61],"0.58":[5.263,12.425,-0.601],"0.62":[5.251,12.439,-0.618],"0.67":[5.245,12.407,-0.593],"0.71":[5.254,12.411,-0.6],"0.75":[5.254,12.425,-0.613],"0.79":[5.248,12.438,-0.617],"0.83":[5.257,12.432,-0.611],"0.88":[5.25,12.435,-0.616],"0.92":[5.259,12.433,-0.616],"0.96":[5.252,12.437,-0.618],"1.0":[5.251,12.437,-0.618],"1.04":[5.254,12.439,-0.615],"1.08":[5.256,12.435,-0.616],"1.12":[5.257,12.429,-0.614]}},"lefthand":{"rotation":{"0.0":[62.487,-1.701,70.422],"0.04":[48.012,-7.828,65.39],"0.08":[34.055,-14.748,61.706],"0.12":[21.522,-21.56,59.391],"0.17":[12.311,-26.989,57.958],"0.21":[8.068,-30.388,56.209],"0.25":[11.176,-31.054,52.568],"0.29":[19.245,-28.717,48.289],"0.33":[27.828,-23.777,46.624],"0.38":[34.085,-18.003,49.015],"0.42":[39.745,-11.739,54.699],"0.46":[46.234,-5.393,62.461],"0.5":[53.971,0.4,71.51],"0.54":[62.853,5.035,80.744],"0.58":[72.428,8.276,89.119],"0.62":[82.157,10.332,95.509],"0.67":[92.181,11.902,98.623],"0.71":[102.52,13.508,99.337],"0.75":[112.18,15.518,98.353],"0.79":[120.341,18.221,96.533],"0.83":[125.633,21.856,94.661],"0.88":[127.222,27.116,91.819],"0.92":[125.527,33.449,87.535],"0.96":[122.194,39.318,82.651],"1.0":[120.007,43.24,79.323],"1.04":[119.484,44.898,78.337],"1.08":[119.664,45.207,78.637],"1.12":[119.832,45.506,78.939]},"position":{"0.0":[29.954,-30.311,-9.065],"0.04":[31.453,-28.199,-3.777],"0.08":[31.47,-25.999,1.577],"0.12":[30.305,-23.995,6.154],"0.17":[29.107,-22.604,8.864],"0.21":[28.616,-21.707,9.951],"0.25":[29.12,-21.203,9.346],"0.29":[30.232,-21.174,7.393],"0.33":[31.217,-21.85,4.751],"0.38":[31.665,-23.144,2.257],"0.42":[31.512,-24.948,-0.217],"0.46":[30.731,-26.958,-2.824],"0.5":[29.261,-28.826,-5.51],"0.54":[27.329,-30.241,-8.082],"0.58":[25.233,-31.067,-10.426],"0.62":[23.26,-31.308,-12.497],"0.67":[21.731,-30.879,-14.406],"0.71":[20.476,-30.026,-16.213],"0.75":[19.346,-29.025,-17.814],"0.79":[18.238,-28.134,-19.199],"0.83":[17.176,-27.65,-20.385],"0.88":[16.39,-27.531,-21.376],"0.92":[15.884,-27.608,-22.22],"0.96":[15.503,-27.754,-22.902],"1.0":[15.161,-27.794,-23.317],"1.04":[14.913,-27.801,-23.549],"1.08":[14.822,-27.81,-23.626],"1.12":[14.773,-27.786,-23.627]}},"root":{"position":{"0.0":[0,0.7,4.8],"0.58":{"pre":[0,0.7,4.8],"post":[0,0,0]}}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"melee_2":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[-59.09,-133.534,55.388],"0.04":[-80.215,-129.599,78.815],"0.08":[-121.441,-133.889,105.199],"0.12":[-143.439,-150.705,111.723],"0.17":[-155.376,-166.475,103.92],"0.21":[-171.171,-177.731,90.553],"0.25":[-189.974,-181.555,74.097],"0.29":[-199.446,-180.648,67.244],"0.33":[-184.621,-189.204,70.317],"0.38":[-166.022,-195.777,76.536],"0.42":[-145.879,-198.05,84.806],"0.46":[-128.69,-194.68,93.167],"0.5":[-118.751,-184.823,103.945],"0.54":[-116.387,-172.533,116.711],"0.58":[-118.184,-162.568,126.371],"0.62":[-118.57,-154.579,127.625],"0.67":[-116.277,-147.318,122.358],"0.71":[-111.586,-141.202,113.507],"0.75":[-105.438,-136.809,103.351],"0.79":[-99.87,-133.881,95.145],"0.83":[-96.713,-132.118,91.059],"0.88":[-95.107,-131.315,89.079],"0.92":[-94.56,-131.009,88.445],"0.96":[-94.442,-130.9,88.358],"1.0":[-93.997,-130.667,87.838],"1.04":[-93.753,-130.553,87.543],"1.08":[-93.919,-130.624,87.752],"1.12":[-94.084,-130.709,87.943]},"position":{"0.0":[1.17,-26.041,-22.298],"0.04":[-5.765,-24.046,-24.582],"0.08":[-13.403,-25.046,-23.204],"0.12":[-18.539,-26.833,-20.607],"0.17":[-22.396,-27.711,-18.304],"0.21":[-25.329,-28.7,-15.502],"0.25":[-27.334,-29.885,-12.286],"0.29":[-28.81,-31.707,-6.907],"0.33":[-26.947,-32.21,-10.475],"0.38":[-23.493,-32.481,-14.488],"0.42":[-18.963,-32.492,-17.411],"0.46":[-15.025,-32.029,-18.651],"0.5":[-13.6,-30.766,-18.636],"0.54":[-13.658,-29.181,-18.067],"0.58":[-13.844,-27.907,-17.444],"0.62":[-13.515,-27.173,-17.204],"0.67":[-13.046,-26.735,-17.248],"0.71":[-12.575,-26.42,-17.412],"0.75":[-12.146,-26.178,-17.595],"0.79":[-11.821,-25.962,-17.699],"0.83":[-11.657,-25.797,-17.713],"0.88":[-11.581,-25.701,-17.726],"0.92":[-11.558,-25.655,-17.732],"0.96":[-11.558,-25.629,-17.739],"1.0":[-11.539,-25.599,-17.741],"1.04":[-11.527,-25.589,-17.745],"1.08":[-11.534,-25.595,-17.742],"1.12":[-11.543,-25.602,-17.74]}},"tactical":{"rotation":{"0.0":[19.567,9.603,166.099],"0.04":[19.593,9.686,166.137],"0.08":[19.08,8.791,166.638],"0.12":[19.439,9.548,166.18],"0.17":[19.548,9.744,166.281],"0.21":[19.619,9.844,166.347],"0.25":[19.446,9.69,166.118],"0.29":[19.455,9.534,166.133],"0.33":[19.485,9.548,166.241],"0.38":[19.505,9.535,166.254],"0.42":[19.486,9.514,166.217],"0.46":[19.413,9.546,166.122],"0.5":[19.583,9.468,166.183],"0.54":[19.584,9.414,166.15],"0.58":[19.469,9.477,166.179],"0.62":[19.422,9.485,166.176],"0.67":[19.426,9.503,166.165],"0.71":[19.43,9.53,166.164],"0.75":[19.447,9.553,166.174],"0.79":[19.445,9.552,166.179],"0.83":[19.437,9.552,166.17],"0.88":[19.445,9.563,166.176],"0.92":[19.446,9.548,166.175],"0.96":[19.444,9.56,166.181],"1.0":[19.444,9.549,166.177],"1.04":[19.44,9.553,166.172],"1.08":[19.448,9.556,166.166],"1.12":[19.444,9.548,166.179]},"position":{"0.0":[5.325,12.422,-0.574],"0.04":[5.366,12.376,-0.544],"0.08":[5.493,12.185,-0.471],"0.12":[5.25,12.441,-0.617],"0.17":[5.292,12.385,-0.575],"0.21":[5.295,12.352,-0.555],"0.25":[5.241,12.363,-0.578],"0.29":[5.247,12.436,-0.609],"0.33":[5.226,12.376,-0.579],"0.38":[5.218,12.335,-0.556],"0.42":[5.234,12.36,-0.57],"0.46":[5.243,12.429,-0.62],"0.5":[5.243,12.4,-0.6],"0.54":[5.248,12.4,-0.605],"0.58":[5.253,12.418,-0.613],"0.62":[5.249,12.43,-0.618],"0.67":[5.252,12.436,-0.61],"0.71":[5.256,12.435,-0.613],"0.75":[5.259,12.43,-0.613],"0.79":[5.252,12.434,-0.614],"0.83":[5.259,12.432,-0.617],"0.88":[5.252,12.434,-0.617],"0.92":[5.249,12.439,-0.617],"0.96":[5.25,12.436,-0.616],"1.0":[5.257,12.431,-0.614],"1.04":[5.26,12.435,-0.615],"1.08":[5.259,12.434,-0.615],"1.12":[5.257,12.429,-0.614]}},"lefthand":{"rotation":{"0.0":[100.256,-17.72,91.865],"0.04":[84.539,-23.191,96.419],"0.08":[71.675,-26.146,100.351],"0.12":[63.078,-26.676,102.288],"0.17":[56.382,-26.176,103.156],"0.21":[51.153,-25.252,103.13],"0.25":[47.609,-24.206,102.112],"0.29":[45.969,-23.211,100.033],"0.33":[47.065,-22.254,96.48],"0.38":[51.992,-20.847,90.419],"0.42":[59.98,-18.177,82.729],"0.46":[68.695,-14.041,75.624],"0.5":[75.964,-9.23,71.09],"0.54":[80.835,-4.98,69.684],"0.58":[84.443,-1.489,70.587],"0.62":[87.827,1.407,72.868],"0.67":[91.276,3.808,75.876],"0.71":[95.012,5.989,78.878],"0.75":[99.004,8.331,81.368],"0.79":[103.17,11.379,82.96],"0.83":[107.463,17.55,82.563],"0.88":[111.248,25.856,81.205],"0.92":[114.074,33.049,80.191],"0.96":[116.303,37.986,79.86],"1.0":[117.654,40.917,79.528],"1.04":[118.639,43.041,79.17],"1.08":[119.44,44.711,78.974],"1.12":[119.832,45.506,78.939]},"position":{"0.0":[23.887,-34.104,-16.012],"0.04":[23.151,-34.092,-16.086],"0.08":[22.8,-34.051,-15.999],"0.12":[22.998,-33.988,-15.723],"0.17":[23.501,-33.903,-15.292],"0.21":[24.131,-33.8,-14.778],"0.25":[24.753,-33.7,-14.232],"0.29":[25.258,-33.613,-13.739],"0.33":[25.547,-33.561,-13.408],"0.38":[25.712,-33.571,-13.119],"0.42":[25.79,-33.626,-12.885],"0.46":[25.761,-33.677,-12.862],"0.5":[25.564,-33.69,-13.277],"0.54":[25.145,-33.598,-14.191],"0.58":[24.467,-33.37,-15.512],"0.62":[23.516,-32.976,-17.061],"0.67":[22.288,-32.381,-18.65],"0.71":[20.879,-31.63,-20.102],"0.75":[19.423,-30.791,-21.304],"0.79":[18.054,-29.955,-22.207],"0.83":[16.902,-29.229,-22.802],"0.88":[16,-28.627,-23.193],"0.92":[15.362,-28.188,-23.424],"0.96":[14.951,-27.905,-23.556],"1.0":[14.826,-27.823,-23.6],"1.04":[14.816,-27.818,-23.61],"1.08":[14.796,-27.799,-23.621],"1.12":[14.773,-27.786,-23.627]}},"root":{"position":{"0.0":[0,-1.1,0],"0.46":{"pre":[0,-1.1,0],"post":[0,0,0]}}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"melee_3":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[60.356,-40.863,-108.693],"0.04":[121.156,-50.248,-122.084],"0.08":[172.122,-42.698,-128.475],"0.12":[180.83,-41.254,-129.169],"0.17":[182.389,-40.919,-129.521],"0.21":[184.184,-40.56,-129.809],"0.25":[185.77,-40.475,-129.766],"0.29":[186.562,-40.542,-130.195],"0.33":[189.268,-41.303,-111.353],"0.38":[185.361,-33.054,-90.095],"0.42":[182.719,-13.205,-76.737],"0.46":[175.431,-0.846,-82.313],"0.5":[155.916,2.882,-97.564],"0.54":[111.853,4.718,-88.113],"0.58":[82.206,14.47,-75.788],"0.62":[76.851,7.089,-74.955],"0.67":[74.902,-3.967,-73.588],"0.71":[73.837,-15.5,-71.855],"0.75":[72.378,-24.904,-70.172],"0.79":[71.065,-31.435,-69.847],"0.83":[72.34,-36.739,-72.901],"0.88":[75.565,-41.141,-78.117],"0.92":[79.719,-44.544,-84.153],"0.96":[83.298,-47.183,-88.956],"1.0":[85.021,-48.679,-91.035],"1.04":[85.589,-49.115,-91.701],"1.08":[85.644,-49.114,-91.751],"1.12":[85.916,-49.291,-92.057]},"position":{"0.0":[-13.293,-25.926,-24.158],"0.04":[-3.48,-22.505,-26.308],"0.08":[1.069,-22.459,-26.185],"0.12":[1.48,-22.485,-25.976],"0.17":[1.71,-22.381,-25.867],"0.21":[1.927,-22.269,-25.739],"0.25":[2.108,-22.224,-25.611],"0.29":[2.327,-22.284,-25.461],"0.33":[4.236,-26.73,-23.713],"0.38":[5.176,-31.252,-20.028],"0.42":[6.872,-32.87,-14.339],"0.46":[7.772,-33.257,-11.58],"0.5":[7.862,-33.9,-11.552],"0.54":[1.896,-37.624,-15.751],"0.58":[-5.968,-39.49,-18.412],"0.62":[-7.839,-37.315,-19.974],"0.67":[-8.846,-34.3,-21.052],"0.71":[-9.471,-31.22,-21.348],"0.75":[-10.088,-28.769,-20.936],"0.79":[-10.77,-27.265,-20.169],"0.83":[-11.143,-26.49,-19.361],"0.88":[-11.298,-26.073,-18.631],"0.92":[-11.331,-25.821,-17.995],"0.96":[-11.442,-25.685,-17.803],"1.0":[-11.536,-25.563,-17.745],"1.04":[-11.555,-25.554,-17.731],"1.08":[-11.544,-25.591,-17.74],"1.12":[-11.543,-25.602,-17.74]}},"tactical":{"rotation":{"0.0":[172.509,-2.044,-12.509],"0.04":[172.549,-2.777,-13.084],"0.08":[172.609,-1.891,-12.732],"0.12":[172.615,-1.89,-12.728],"0.17":[172.616,-1.913,-12.694],"0.21":[172.611,-1.912,-12.67],"0.25":[172.608,-1.926,-12.625],"0.29":[172.596,-1.947,-12.604],"0.33":[172.568,-1.713,-12.663],"0.38":[173.087,-1.591,-12.747],"0.42":[172.927,-1.81,-12.726],"0.46":[172.589,-2.041,-12.44],"0.5":[199.686,175.385,-15.227],"0.54":[199.197,190.118,-19.821],"0.58":[199.737,186.029,-17.155],"0.62":[199.477,175.317,-14.629],"0.67":[199.51,170.866,-13.55],"0.71":[199.485,170.777,-13.618],"0.75":[199.461,170.667,-13.682],"0.79":[199.457,170.517,-13.764],"0.83":[199.434,170.451,-13.813],"0.88":[199.436,170.432,-13.816],"0.92":[199.448,170.44,-13.815],"0.96":[199.449,170.442,-13.836],"1.0":[199.446,170.453,-13.815],"1.04":[199.445,170.442,-13.822],"1.08":[199.439,170.442,-13.825],"1.12":[199.444,170.45,-13.828]},"position":{"0.0":[4.751,11.455,2.898],"0.04":[4.806,11.244,2.696],"0.08":[4.661,11.738,2.84],"0.12":[4.655,11.827,2.874],"0.17":[4.665,11.85,2.845],"0.21":[4.654,11.868,2.838],"0.25":[4.652,11.886,2.825],"0.29":[4.654,11.908,2.801],"0.33":[4.666,11.773,2.754],"0.38":[4.737,11.885,2.698],"0.42":[4.679,11.944,2.723],"0.46":[4.635,12.046,2.668],"0.5":[5.19,12.021,-0.367],"0.54":[4.96,10.536,-0.058],"0.58":[5.037,12.004,-0.439],"0.62":[5.2,12.126,-0.416],"0.67":[5.27,12.141,-0.391],"0.71":[5.273,12.196,-0.443],"0.75":[5.263,12.296,-0.51],"0.79":[5.253,12.38,-0.569],"0.83":[5.252,12.44,-0.615],"0.88":[5.255,12.433,-0.613],"0.92":[5.259,12.429,-0.612],"0.96":[5.252,12.436,-0.616],"1.0":[5.252,12.436,-0.616],"1.04":[5.256,12.431,-0.617],"1.08":[5.257,12.437,-0.618],"1.12":[5.257,12.429,-0.614]}},"lefthand":{"rotation":{"0.0":[69.309,8.552,53.519],"0.04":[49.985,-3.807,50.976],"0.08":[31.798,-15.783,51.818],"0.12":[16.156,-25.188,54.983],"0.17":[7.623,-30.174,57.275],"0.21":[6.117,-32.955,56.29],"0.25":[9.829,-34.238,52.381],"0.29":[16.702,-33.241,47.383],"0.33":[24.229,-29.204,44.291],"0.38":[30.101,-22.939,45.48],"0.42":[34.117,-13.128,54.811],"0.46":[39.912,1.226,75.414],"0.5":[51.669,13.305,102.586],"0.54":[66.307,16.446,124.872],"0.58":[79.617,13.32,130.714],"0.62":[93.448,10.936,120.584],"0.67":[105.883,14.835,102.912],"0.71":[113.857,22.56,88.459],"0.75":[118.012,29.088,81.744],"0.79":[119.85,33.814,79.4],"0.83":[120.132,37.168,79.064],"0.88":[119.903,39.857,79.34],"0.92":[119.806,42.433,79.334],"0.96":[119.938,44.45,78.967],"1.0":[119.907,45.045,78.989],"1.04":[119.857,45.382,78.986],"1.08":[119.85,45.501,78.94],"1.12":[119.832,45.506,78.939]},"position":{"0.0":[30.858,-25.17,-11.781],"0.04":[32.698,-24.206,-5.056],"0.08":[32.775,-23.801,0.174],"0.12":[31.659,-23.483,4.264],"0.17":[30.688,-23.274,6.174],"0.21":[30.508,-22.868,6.619],"0.25":[30.953,-22.3,6.097],"0.29":[31.739,-21.88,4.807],"0.33":[32.52,-22.046,2.913],"0.38":[32.963,-23.027,0.866],"0.42":[32.66,-25.564,-1.399],"0.46":[30.534,-29.819,-4.33],"0.5":[26.058,-33.374,-7.606],"0.54":[21.536,-34.67,-10.309],"0.58":[19.031,-34.396,-12.532],"0.62":[18.281,-33.406,-14.948],"0.67":[18.2,-31.872,-17.502],"0.71":[17.85,-30.361,-19.607],"0.75":[17.104,-29.416,-20.982],"0.79":[16.416,-28.891,-21.892],"0.83":[15.926,-28.6,-22.536],"0.88":[15.502,-28.407,-23.055],"0.92":[15.045,-28.212,-23.53],"0.96":[14.829,-27.933,-23.632],"1.0":[14.794,-27.839,-23.64],"1.04":[14.784,-27.787,-23.644],"1.08":[14.775,-27.775,-23.638],"1.12":[14.773,-27.786,-23.627]}},"root":{"position":{"0.0":[0,0,7.18267],"0.49":{"pre":[0,0,7.18267],"post":[0,0,0]}}},"righthand":{"position":{"0.0":[0,3.8,-1.25],"0.51":{"pre":[0,3.8,-1.25],"post":[-0.5,3.5,0.25]}},"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"inspect":{"loop":true,"animation_length":6.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[86.9,-49.457,-93.636],"0.04":[89.377,-49.77,-97.606],"0.08":[93.043,-49.96,-103.464],"0.12":[97.513,-49.766,-110.632],"0.17":[102.226,-48.968,-118.383],"0.21":[106.626,-47.659,-125.926],"0.25":[110.888,-45.583,-134.024],"0.29":[115.473,-42.017,-144.214],"0.33":[119.605,-37.661,-154.776],"0.38":[122.795,-32.278,-164.214],"0.42":[124.534,-25.525,-172.089],"0.46":[124.799,-18.13,-178.424],"0.5":[123.803,-10.915,-183.474],"0.54":[122.074,-4.435,-187.965],"0.58":[120.02,0.916,-192.405],"0.62":[117.978,5.324,-197.191],"0.67":[116.063,9.44,-202.215],"0.71":[114.091,13.542,-207.236],"0.75":[111.996,17.588,-211.983],"0.79":[109.77,21.476,-216.225],"0.83":[107.546,24.868,-219.555],"0.88":[105.766,27.517,-221.975],"0.92":[104.574,29.471,-223.666],"0.96":[103.807,30.898,-224.831],"1.0":[103.219,31.995,-225.707],"1.04":[102.536,32.976,-226.547],"1.08":[101.877,33.789,-227.291],"1.12":[101.31,34.396,-227.897],"1.17":[100.89,34.837,-228.332],"1.21":[100.582,35.123,-228.64],"1.25":[100.397,35.275,-228.827],"1.29":[100.337,35.32,-228.889],"1.33":[100.34,35.317,-228.885],"1.38":[100.366,35.29,-228.855],"1.42":[100.437,35.227,-228.773],"1.46":[100.581,35.086,-228.629],"1.5":[100.65,34.881,-228.531],"1.54":[100.695,34.6,-228.432],"1.58":[100.985,34.185,-228.093],"1.62":[101.749,33.543,-227.323],"1.67":[103.264,32.572,-225.866],"1.71":[105.245,31.128,-223.839],"1.75":[107.462,29.058,-221.347],"1.79":[109.683,26.538,-218.649],"1.83":[112.066,23.475,-215.633],"1.88":[114.527,19.934,-212.383],"1.92":[117.137,15.72,-208.761],"1.96":[119.878,10.144,-204.292],"2.0":[122.441,3.551,-198.61],"2.04":[124.681,-2.867,-192.32],"2.08":[126.964,-8.902,-186.164],"2.12":[129.647,-16.175,-180.518],"2.17":[131.801,-24.22,-175.121],"2.21":[132.748,-31.048,-169.982],"2.25":[133.028,-36.356,-166.064],"2.29":[133.092,-40.329,-163.579],"2.33":[132.852,-42.474,-161.917],"2.38":[132.581,-43.725,-160.773],"2.42":[132.389,-44.426,-160.123],"2.46":[132.297,-44.774,-159.806],"2.5":[132.223,-45.016,-159.596],"2.54":[132.167,-45.236,-159.394],"2.58":[132.123,-45.422,-159.219],"2.62":[132.094,-45.557,-159.105],"2.67":[132.109,-45.627,-159.074],"2.71":[132.118,-45.661,-159.068],"2.75":[132.157,-45.648,-159.115],"2.79":[132.216,-45.606,-159.199],"2.83":[132.255,-45.523,-159.29],"2.88":[132.3,-45.434,-159.389],"2.92":[132.34,-45.338,-159.489],"2.96":[132.377,-45.237,-159.578],"3.0":[132.421,-45.137,-159.63],"3.04":[132.46,-45.02,-159.693],"3.08":[132.528,-44.868,-159.797],"3.12":[132.581,-44.665,-159.933],"3.17":[132.628,-44.376,-160.129],"3.21":[132.665,-43.987,-160.4],"3.25":[132.687,-43.498,-160.758],"3.29":[132.691,-42.921,-161.156],"3.33":[132.652,-42.284,-161.529],"3.38":[132.6,-41.541,-161.978],"3.42":[132.509,-40.647,-162.554],"3.46":[132.367,-39.561,-163.31],"3.5":[132.143,-38.192,-164.355],"3.54":[131.859,-36.39,-165.828],"3.58":[131.713,-34.076,-167.906],"3.62":[131.719,-31.441,-170.359],"3.67":[131.804,-28.491,-173.077],"3.71":[131.847,-25.348,-175.906],"3.75":[131.822,-22.084,-178.786],"3.79":[131.698,-18.64,-181.627],"3.83":[131.467,-14.782,-184.473],"3.88":[131.068,-10.733,-187.181],"3.92":[130.496,-6.477,-189.866],"3.96":[129.753,-2.112,-192.569],"4.0":[128.848,2.44,-195.453],"4.04":[127.799,7.632,-198.778],"4.08":[126.451,13.458,-202.318],"4.12":[124.697,19.437,-205.724],"4.17":[122.622,24.75,-208.589],"4.21":[120.48,28.795,-211.041],"4.25":[118.42,31.648,-213.367],"4.29":[116.481,33.66,-215.636],"4.33":[114.667,35.029,-217.748],"4.38":[112.906,36.066,-219.636],"4.42":[111.171,36.853,-221.258],"4.46":[109.538,37.243,-222.654],"4.5":[108.064,37.23,-223.795],"4.54":[106.736,37.023,-224.79],"4.58":[105.571,36.76,-225.632],"4.62":[104.544,36.577,-226.389],"4.67":[103.651,36.427,-227.043],"4.71":[102.892,36.216,-227.572],"4.75":[102.275,35.991,-227.976],"4.79":[101.806,35.787,-228.266],"4.83":[101.482,35.649,-228.45],"4.88":[101.211,35.579,-228.611],"4.92":[100.888,35.539,-228.814],"4.96":[100.555,35.515,-228.997],"5.0":[100.32,35.439,-229.062],"5.04":[100.314,35.111,-228.672],"5.08":[100.376,33.647,-227.599],"5.12":[101.828,29.633,-224.8],"5.17":[109.517,18.873,-214.369],"5.21":[115.009,7.692,-203.461],"5.25":[117.213,-1.553,-195.069],"5.29":[117.882,-9.16,-188.201],"5.33":[119.776,-16.623,-181.045],"5.38":[121.383,-25.2,-170.977],"5.42":[119.699,-33.221,-155.051],"5.46":[116.041,-36.278,-136.061],"5.5":[116.598,-37.843,-121.299],"5.54":[115.658,-41.096,-113.082],"5.58":[107.746,-44.146,-105.457],"5.62":[95.026,-46.156,-96.655],"5.67":[86.488,-47.058,-90.956],"5.71":[84.038,-47.726,-89.63],"5.75":[82.62,-48.436,-89.023],"5.79":[82.284,-49.023,-89.113],"5.83":[82.578,-49.444,-89.539],"5.88":[83.088,-49.554,-89.959],"5.92":[83.683,-49.541,-90.405],"5.96":[84.155,-49.516,-90.75],"6.0":[84.631,-49.472,-91.112],"6.04":[85.11,-49.403,-91.457],"6.08":[85.537,-49.339,-91.768],"6.12":[85.823,-49.287,-91.974]},"position":{"0.0":[-11.538,-25.644,-17.682],"0.04":[-11.528,-25.741,-17.534],"0.08":[-11.518,-25.872,-17.328],"0.12":[-11.499,-26.022,-17.088],"0.17":[-11.485,-26.168,-16.853],"0.21":[-11.47,-26.295,-16.648],"0.25":[-11.451,-26.383,-16.499],"0.29":[-11.43,-26.427,-16.41],"0.33":[-11.408,-26.43,-16.373],"0.38":[-11.391,-26.38,-16.356],"0.42":[-11.375,-26.28,-16.348],"0.46":[-11.355,-26.134,-16.345],"0.5":[-11.34,-25.965,-16.349],"0.54":[-11.323,-25.792,-16.355],"0.58":[-11.31,-25.628,-16.36],"0.62":[-11.296,-25.464,-16.369],"0.67":[-11.285,-25.281,-16.388],"0.71":[-11.274,-25.092,-16.409],"0.75":[-11.266,-24.911,-16.43],"0.79":[-11.26,-24.745,-16.449],"0.83":[-11.26,-24.617,-16.464],"0.88":[-11.261,-24.523,-16.473],"0.92":[-11.261,-24.452,-16.48],"0.96":[-11.265,-24.41,-16.486],"1.0":[-11.267,-24.372,-16.486],"1.04":[-11.269,-24.347,-16.49],"1.08":[-11.272,-24.331,-16.493],"1.12":[-11.278,-24.315,-16.494],"1.17":[-11.279,-24.312,-16.496],"1.21":[-11.281,-24.312,-16.496],"1.25":[-11.285,-24.313,-16.497],"1.29":[-11.286,-24.314,-16.497],"1.33":[-11.286,-24.314,-16.497],"1.38":[-11.285,-24.314,-16.495],"1.42":[-11.285,-24.316,-16.491],"1.46":[-11.285,-24.327,-16.489],"1.5":[-11.281,-24.335,-16.487],"1.54":[-11.277,-24.347,-16.483],"1.58":[-11.27,-24.36,-16.48],"1.62":[-11.256,-24.379,-16.475],"1.67":[-11.238,-24.398,-16.471],"1.71":[-11.213,-24.427,-16.466],"1.75":[-11.183,-24.461,-16.459],"1.79":[-11.148,-24.501,-16.452],"1.83":[-11.111,-24.539,-16.444],"1.88":[-11.083,-24.571,-16.434],"1.92":[-11.053,-24.598,-16.422],"1.96":[-11.025,-24.627,-16.408],"2.0":[-11.009,-24.654,-16.391],"2.04":[-10.994,-24.667,-16.371],"2.08":[-10.982,-24.667,-16.356],"2.12":[-10.977,-24.628,-16.341],"2.17":[-10.975,-24.581,-16.33],"2.21":[-10.976,-24.533,-16.327],"2.25":[-10.976,-24.504,-16.326],"2.29":[-10.977,-24.483,-16.326],"2.33":[-10.973,-24.469,-16.326],"2.38":[-10.973,-24.458,-16.327],"2.42":[-10.973,-24.456,-16.327],"2.46":[-10.972,-24.452,-16.327],"2.5":[-10.974,-24.447,-16.328],"2.54":[-10.975,-24.444,-16.327],"2.58":[-10.974,-24.441,-16.328],"2.62":[-10.975,-24.44,-16.327],"2.67":[-10.975,-24.438,-16.326],"2.71":[-10.974,-24.438,-16.326],"2.75":[-10.972,-24.437,-16.325],"2.79":[-10.974,-24.436,-16.324],"2.83":[-10.975,-24.437,-16.325],"2.88":[-10.975,-24.438,-16.326],"2.92":[-10.976,-24.44,-16.327],"2.96":[-10.973,-24.44,-16.328],"3.0":[-10.976,-24.443,-16.326],"3.04":[-10.974,-24.445,-16.327],"3.08":[-10.975,-24.447,-16.327],"3.12":[-10.976,-24.451,-16.325],"3.17":[-10.979,-24.456,-16.328],"3.21":[-10.98,-24.462,-16.328],"3.25":[-10.985,-24.47,-16.327],"3.29":[-10.988,-24.486,-16.327],"3.33":[-10.993,-24.493,-16.325],"3.38":[-10.997,-24.497,-16.326],"3.42":[-11.004,-24.516,-16.326],"3.46":[-11.011,-24.534,-16.329],"3.5":[-11.024,-24.554,-16.328],"3.54":[-11.043,-24.583,-16.327],"3.58":[-11.069,-24.629,-16.329],"3.62":[-11.104,-24.69,-16.336],"3.67":[-11.136,-24.745,-16.344],"3.71":[-11.168,-24.803,-16.356],"3.75":[-11.199,-24.84,-16.366],"3.79":[-11.225,-24.863,-16.377],"3.83":[-11.251,-24.882,-16.392],"3.88":[-11.273,-24.893,-16.407],"3.92":[-11.293,-24.895,-16.419],"3.96":[-11.306,-24.902,-16.434],"4.0":[-11.309,-24.896,-16.441],"4.04":[-11.309,-24.888,-16.45],"4.08":[-11.307,-24.874,-16.455],"4.12":[-11.306,-24.848,-16.46],"4.17":[-11.304,-24.821,-16.463],"4.21":[-11.303,-24.793,-16.466],"4.25":[-11.3,-24.761,-16.47],"4.29":[-11.299,-24.713,-16.473],"4.33":[-11.298,-24.671,-16.475],"4.38":[-11.295,-24.63,-16.477],"4.42":[-11.293,-24.591,-16.481],"4.46":[-11.291,-24.559,-16.484],"4.5":[-11.29,-24.52,-16.484],"4.54":[-11.289,-24.481,-16.486],"4.58":[-11.286,-24.45,-16.486],"4.62":[-11.287,-24.417,-16.484],"4.67":[-11.286,-24.397,-16.489],"4.71":[-11.284,-24.378,-16.489],"4.75":[-11.284,-24.361,-16.49],"4.79":[-11.283,-24.345,-16.49],"4.83":[-11.284,-24.339,-16.495],"4.88":[-11.283,-24.323,-16.494],"4.92":[-11.285,-24.316,-16.493],"4.96":[-11.285,-24.316,-16.496],"5.0":[-11.285,-24.309,-16.496],"5.04":[-11.286,-24.317,-16.493],"5.08":[-11.297,-24.366,-16.476],"5.12":[-11.324,-24.542,-16.43],"5.17":[-11.401,-24.92,-16.345],"5.21":[-11.48,-25.313,-16.252],"5.25":[-11.541,-25.578,-16.162],"5.29":[-11.583,-25.729,-16.082],"5.33":[-11.607,-25.82,-16.027],"5.38":[-11.613,-25.836,-16.05],"5.42":[-11.605,-25.785,-16.239],"5.46":[-11.596,-25.724,-16.515],"5.5":[-11.58,-25.646,-16.857],"5.54":[-11.56,-25.555,-17.317],"5.58":[-11.544,-25.486,-17.75],"5.62":[-11.543,-25.477,-17.956],"5.67":[-11.544,-25.496,-17.986],"5.71":[-11.543,-25.511,-17.987],"5.75":[-11.544,-25.524,-17.972],"5.79":[-11.543,-25.542,-17.944],"5.83":[-11.543,-25.56,-17.897],"5.88":[-11.544,-25.577,-17.849],"5.92":[-11.544,-25.593,-17.803],"5.96":[-11.542,-25.596,-17.766],"6.0":[-11.544,-25.601,-17.754],"6.04":[-11.544,-25.605,-17.748],"6.08":[-11.543,-25.604,-17.743],"6.12":[-11.543,-25.604,-17.741]}},"tactical":{"rotation":{"0.0":[19.873,18.145,165.512],"0.04":[24.273,17.263,167.29],"0.08":[30.044,16.004,169.591],"0.12":[36.13,14.586,171.987],"0.17":[41.158,13.368,173.89],"0.21":[44.17,12.621,174.967],"0.25":[44.998,12.732,174.741],"0.29":[45.232,13.744,173.22],"0.33":[45.531,15.014,171.669],"0.38":[45.935,15.916,170.419],"0.42":[46.461,16.159,169.812],"0.46":[47.172,15.677,170.543],"0.5":[48.955,14.901,172.468],"0.54":[51.625,14.082,174.515],"0.58":[54.126,13.133,176.332],"0.62":[56.104,12.043,177.676],"0.67":[58.098,10.991,178.478],"0.71":[59.994,9.959,179.024],"0.75":[61.596,8.93,179.449],"0.79":[62.727,7.859,179.908],"0.83":[63.141,6.737,180.474],"0.88":[63.233,6.054,180.864],"0.92":[63.237,5.941,180.925],"0.96":[63.218,5.966,180.894],"1.0":[63.211,5.996,180.878],"1.04":[63.187,6.022,180.862],"1.08":[63.178,6.057,180.837],"1.12":[63.16,6.092,180.791],"1.17":[63.151,6.12,180.782],"1.21":[63.134,6.146,180.76],"1.25":[63.12,6.171,180.737],"1.29":[63.106,6.197,180.718],"1.33":[63.096,6.222,180.698],"1.38":[63.086,6.244,180.68],"1.42":[63.076,6.265,180.665],"1.46":[63.067,6.282,180.653],"1.5":[63.057,6.295,180.639],"1.54":[63.052,6.305,180.631],"1.58":[63.048,6.315,180.63],"1.62":[63.05,6.316,180.632],"1.67":[63.057,5.816,180.902],"1.71":[63.116,4.638,181.544],"1.75":[63.264,3.054,182.412],"1.79":[63.519,1.322,183.367],"1.83":[63.213,1.474,183.214],"1.88":[62.996,1.08,182.937],"1.92":[62.731,0.634,181.948],"1.96":[62.306,0.86,180.611],"2.0":[61.756,1.509,179.303],"2.04":[61.134,2.578,178.044],"2.08":[60.442,4.145,176.746],"2.12":[59.661,5.532,175.805],"2.17":[58.682,5.373,175.991],"2.21":[57.465,4.186,176.872],"2.25":[56.024,2.41,178.107],"2.29":[54.479,0.559,179.401],"2.33":[52.767,-2.179,181.289],"2.38":[51.149,-5.251,183.456],"2.42":[49.552,-8.98,186.173],"2.46":[48.087,-12.943,189.186],"2.5":[46.742,-16.578,192.068],"2.54":[45.517,-19.678,194.75],"2.58":[44.454,-22.17,197.044],"2.62":[43.542,-24.055,198.816],"2.67":[42.804,-25.291,200.042],"2.71":[42.297,-26.139,200.764],"2.75":[42.02,-26.712,201.072],"2.79":[41.8,-27.123,201.284],"2.83":[41.576,-27.451,201.462],"2.88":[41.384,-27.709,201.584],"2.92":[41.196,-27.913,201.667],"2.96":[41.025,-28.077,201.711],"3.0":[40.911,-28.192,201.722],"3.04":[40.815,-28.265,201.692],"3.08":[40.744,-28.333,201.628],"3.12":[40.707,-28.377,201.55],"3.17":[40.757,-28.321,201.323],"3.21":[40.919,-28.126,200.912],"3.25":[41.158,-27.803,200.332],"3.29":[41.454,-27.371,199.645],"3.33":[41.783,-26.811,198.892],"3.38":[42.174,-26.169,198.074],"3.42":[42.681,-25.404,197.149],"3.46":[43.321,-24.6,196.161],"3.5":[44.074,-23.833,195.203],"3.54":[44.939,-23.017,194.24],"3.58":[45.888,-22.147,193.243],"3.62":[46.85,-20.859,192.124],"3.67":[47.918,-19.127,190.861],"3.71":[49.063,-17.083,189.472],"3.75":[50.258,-14.856,188.019],"3.79":[51.494,-12.488,186.562],"3.83":[52.718,-10.154,185.097],"3.88":[53.923,-7.836,183.704],"3.92":[55.085,-5.66,182.422],"3.96":[56.166,-3.746,181.283],"4.0":[57.162,-2.165,180.336],"4.04":[58.129,-0.29,179.344],"4.08":[59.279,2.252,178.124],"4.12":[60.593,4.691,177.021],"4.17":[61.569,6.155,176.453],"4.21":[61.885,6.521,176.456],"4.25":[61.946,6.499,176.667],"4.29":[62.019,6.479,176.901],"4.33":[62.093,6.458,177.15],"4.38":[62.17,6.437,177.419],"4.42":[62.25,6.415,177.699],"4.46":[62.329,6.394,177.986],"4.5":[62.413,6.37,178.276],"4.54":[62.499,6.35,178.566],"4.58":[62.579,6.328,178.849],"4.62":[62.657,6.304,179.131],"4.67":[62.735,6.287,179.399],"4.71":[62.807,6.271,179.65],"4.75":[62.873,6.255,179.887],"4.79":[62.93,6.238,180.102],"4.83":[62.986,6.227,180.286],"4.88":[63.029,6.214,180.444],"4.92":[63.065,6.205,180.57],"4.96":[63.091,6.201,180.663],"5.0":[63.107,6.199,180.707],"5.04":[63.103,6.213,180.707],"5.08":[63.066,6.281,180.653],"5.12":[62.999,6.411,180.542],"5.17":[62.822,7.418,179.896],"5.21":[62.495,9.7,178.537],"5.25":[61.145,11.847,177.009],"5.29":[57.137,11.919,175.992],"5.33":[50.985,11.22,174.873],"5.38":[43.249,11.896,172.983],"5.42":[33.492,13.947,170.443],"5.46":[25.765,16.185,168.064],"5.5":[19.202,17.684,165.978],"5.54":[15.283,18.21,164.884],"5.58":[15.111,18.403,164.572],"5.66":{"pre":[19.444,9.547,166.179],"post":[19.444,9.547,166.179],"lerp_mode":"catmullrom"}},"position":{"0.0":[5.361,12.5,-0.612],"0.04":[5.272,12.623,-0.669],"0.08":[5.158,12.782,-0.74],"0.12":[5.04,12.953,-0.799],"0.17":[4.959,13.102,-0.843],"0.21":[4.909,13.22,-0.862],"0.25":[4.902,13.298,-0.863],"0.29":[4.92,13.354,-0.854],"0.33":[4.941,13.409,-0.828],"0.38":[4.966,13.432,-0.794],"0.42":[4.988,13.458,-0.756],"0.46":[5.005,13.504,-0.722],"0.5":[4.982,13.606,-0.682],"0.54":[4.937,13.747,-0.629],"0.58":[4.894,13.875,-0.578],"0.62":[4.861,13.996,-0.53],"0.67":[4.82,14.112,-0.495],"0.71":[4.782,14.228,-0.471],"0.75":[4.745,14.323,-0.455],"0.79":[4.724,14.391,-0.441],"0.83":[4.718,14.413,-0.427],"0.88":[4.714,14.407,-0.42],"0.92":[4.717,14.406,-0.416],"0.96":[4.716,14.414,-0.417],"1.0":[4.716,14.405,-0.416],"1.04":[4.72,14.41,-0.419],"1.08":[4.716,14.412,-0.419],"1.12":[4.716,14.412,-0.418],"1.17":[4.714,14.408,-0.421],"1.38":[4.714,14.408,-0.421],"1.42":[4.714,14.408,-0.422],"1.46":[4.714,14.408,-0.422],"1.5":[4.713,14.408,-0.422],"1.54":[4.713,14.407,-0.422],"1.58":[4.714,14.408,-0.422],"1.62":[4.714,14.408,-0.422],"1.67":[4.714,14.407,-0.422],"1.71":[4.715,14.407,-0.422],"1.75":[4.716,14.408,-0.421],"1.79":[4.717,14.41,-0.417],"1.83":[4.72,14.413,-0.42],"1.88":[4.71,14.405,-0.424],"1.92":[4.693,14.401,-0.428],"1.96":[4.678,14.405,-0.434],"2.0":[4.662,14.397,-0.449],"2.04":[4.652,14.396,-0.452],"2.08":[4.646,14.396,-0.46],"2.12":[4.638,14.384,-0.471],"2.17":[4.621,14.364,-0.51],"2.21":[4.584,14.341,-0.541],"2.25":[4.548,14.312,-0.589],"2.29":[4.507,14.283,-0.634],"2.33":[4.465,14.254,-0.68],"2.38":[4.42,14.223,-0.726],"2.42":[4.359,14.202,-0.771],"2.46":[4.312,14.176,-0.809],"2.5":[4.258,14.158,-0.838],"2.54":[4.221,14.145,-0.856],"2.58":[4.198,14.139,-0.864],"2.62":[4.188,14.136,-0.869],"2.67":[4.182,14.136,-0.87],"2.71":[4.175,14.135,-0.87],"2.75":[4.168,14.135,-0.868],"2.79":[4.162,14.135,-0.867],"2.83":[4.159,14.133,-0.869],"2.88":[4.159,14.13,-0.871],"2.92":[4.158,14.127,-0.874],"2.96":[4.157,14.125,-0.875],"3.0":[4.155,14.124,-0.875],"3.04":[4.152,14.124,-0.876],"3.08":[4.149,14.123,-0.875],"3.12":[4.147,14.123,-0.875],"3.17":[4.145,14.124,-0.875],"3.21":[4.143,14.124,-0.875],"3.25":[4.141,14.125,-0.874],"3.29":[4.139,14.126,-0.874],"3.33":[4.138,14.126,-0.875],"3.38":[4.138,14.127,-0.875],"3.42":[4.139,14.128,-0.875],"3.46":[4.14,14.131,-0.874],"3.5":[4.143,14.135,-0.871],"3.54":[4.146,14.14,-0.861],"3.58":[4.158,14.149,-0.848],"3.62":[4.181,14.162,-0.837],"3.67":[4.211,14.175,-0.813],"3.71":[4.251,14.193,-0.795],"3.75":[4.287,14.208,-0.768],"3.79":[4.335,14.22,-0.742],"3.83":[4.372,14.24,-0.714],"3.88":[4.412,14.267,-0.679],"3.92":[4.448,14.285,-0.644],"3.96":[4.481,14.298,-0.628],"4.0":[4.511,14.32,-0.589],"4.04":[4.538,14.33,-0.559],"4.08":[4.578,14.35,-0.521],"4.12":[4.617,14.375,-0.48],"4.17":[4.643,14.394,-0.451],"4.21":[4.652,14.4,-0.442],"4.25":[4.655,14.401,-0.441],"4.29":[4.658,14.402,-0.439],"4.33":[4.661,14.402,-0.438],"4.38":[4.665,14.403,-0.436],"4.42":[4.669,14.403,-0.435],"4.46":[4.673,14.404,-0.434],"4.5":[4.677,14.404,-0.432],"4.54":[4.682,14.405,-0.431],"4.58":[4.686,14.405,-0.43],"4.62":[4.69,14.406,-0.429],"4.67":[4.694,14.406,-0.427],"4.71":[4.698,14.406,-0.426],"4.75":[4.701,14.407,-0.425],"4.79":[4.705,14.407,-0.424],"4.83":[4.707,14.407,-0.423],"4.88":[4.71,14.408,-0.423],"4.92":[4.712,14.408,-0.422],"4.96":[4.713,14.408,-0.421],"5.0":[4.714,14.408,-0.421],"5.04":[4.714,14.408,-0.421],"5.08":[4.714,14.407,-0.422],"5.12":[4.711,14.405,-0.423],"5.17":[4.711,14.407,-0.435],"5.21":[4.713,14.398,-0.456],"5.25":[4.721,14.345,-0.482],"5.29":[4.746,14.119,-0.543],"5.33":[4.776,13.795,-0.623],"5.38":[4.821,13.485,-0.704],"5.42":[4.919,13.178,-0.778],"5.46":[5.071,12.912,-0.783],"5.5":[5.239,12.646,-0.717],"5.54":[5.359,12.472,-0.655],"5.58":[5.408,12.413,-0.615],"5.66":{"pre":[5.257,12.429,-0.614],"post":[5.257,12.429,-0.614],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[122.886,39.884,78.757],"0.04":[126.307,28.054,77.137],"0.08":[126.858,15.553,75.341],"0.12":[124.971,5.114,75.512],"0.17":[120.941,-3.996,78.106],"0.21":[115.697,-10.755,82.413],"0.25":[111.188,-14.633,87.375],"0.29":[109.399,-15.945,90.312],"0.33":[109.399,-15.945,90.308],"0.38":[109.4,-15.939,90.31],"0.42":[109.405,-15.94,90.302],"0.46":[109.404,-15.942,90.303],"0.5":[109.411,-15.945,90.286],"0.54":[109.415,-15.938,90.288],"0.58":[109.42,-15.935,90.276],"0.62":[109.423,-15.941,90.264],"0.67":[109.434,-15.928,90.271],"0.71":[109.441,-15.919,90.265],"0.75":[109.44,-15.917,90.246],"0.79":[109.453,-15.918,90.239],"0.83":[109.456,-15.912,90.232],"0.88":[109.466,-15.907,90.213],"0.92":[109.467,-15.911,90.208],"0.96":[109.472,-15.898,90.201],"1.0":[109.491,-15.888,90.181],"1.04":[109.499,-15.887,90.17],"1.08":[109.51,-15.871,90.15],"1.12":[109.527,-15.863,90.129],"1.17":[109.53,-15.871,90.129],"1.21":[109.544,-15.857,90.106],"1.25":[109.549,-15.845,90.096],"1.29":[109.563,-15.856,90.083],"1.33":[109.574,-15.829,90.056],"1.38":[109.591,-15.829,90.033],"1.42":[109.606,-15.819,90.016],"1.46":[109.618,-15.801,89.988],"1.5":[109.64,-15.793,89.958],"1.54":[109.695,-15.765,89.89],"1.58":[109.75,-15.727,89.804],"1.62":[109.802,-15.691,89.733],"1.67":[109.855,-15.669,89.666],"1.71":[109.887,-15.645,89.618],"1.75":[109.897,-15.633,89.584],"1.79":[109.917,-15.621,89.563],"1.83":[109.925,-15.615,89.552],"1.88":[109.935,-15.601,89.535],"1.92":[109.954,-15.593,89.515],"1.96":[109.963,-15.59,89.493],"2.0":[109.984,-15.579,89.473],"2.04":[109.993,-15.567,89.457],"2.08":[109.996,-15.554,89.45],"2.12":[110.021,-15.557,89.418],"2.17":[110.032,-15.542,89.399],"2.21":[110.046,-15.533,89.376],"2.25":[110.06,-15.523,89.364],"2.29":[110.072,-15.524,89.329],"2.33":[110.094,-15.505,89.313],"2.38":[110.102,-15.496,89.299],"2.42":[110.12,-15.49,89.275],"2.46":[110.132,-15.488,89.247],"2.5":[110.14,-15.475,89.24],"2.54":[110.162,-15.462,89.215],"2.58":[110.175,-15.448,89.206],"2.62":[110.18,-15.445,89.185],"2.67":[110.201,-15.439,89.159],"2.71":[110.211,-15.425,89.134],"2.75":[110.22,-15.416,89.124],"2.79":[110.239,-15.408,89.106],"2.83":[110.253,-15.398,89.09],"2.88":[110.271,-15.386,89.066],"2.92":[110.287,-15.379,89.048],"2.96":[110.293,-15.366,89.028],"3.0":[110.303,-15.362,89.011],"3.04":[110.318,-15.352,88.994],"3.08":[110.333,-15.347,88.97],"3.12":[110.34,-15.336,88.954],"3.17":[110.358,-15.327,88.939],"3.21":[110.365,-15.318,88.924],"3.25":[110.375,-15.311,88.91],"3.29":[110.4,-15.308,88.886],"3.33":[110.409,-15.294,88.87],"3.38":[110.413,-15.29,88.855],"3.42":[110.424,-15.289,88.847],"3.46":[110.445,-15.282,88.816],"3.5":[110.455,-15.275,88.807],"3.54":[110.462,-15.258,88.792],"3.58":[110.471,-15.255,88.784],"3.62":[110.475,-15.234,88.766],"3.67":[110.486,-15.242,88.751],"3.71":[110.495,-15.236,88.736],"3.75":[110.509,-15.233,88.727],"3.79":[110.509,-15.225,88.712],"3.83":[110.521,-15.214,88.703],"3.88":[110.521,-15.208,88.695],"3.92":[110.537,-15.205,88.68],"3.96":[110.533,-15.205,88.671],"4.0":[110.551,-15.196,88.663],"4.04":[110.564,-15.202,88.646],"4.08":[110.563,-15.182,88.637],"4.12":[110.569,-15.175,88.639],"4.17":[110.576,-15.181,88.632],"4.21":[110.58,-15.179,88.621],"4.25":[110.579,-15.175,88.622],"4.29":[110.584,-15.168,88.606],"4.33":[110.585,-15.167,88.6],"4.38":[110.597,-15.171,88.596],"4.42":[110.595,-15.173,88.593],"4.46":[110.591,-15.157,88.589],"4.5":[110.596,-15.168,88.597],"4.54":[110.595,-15.168,88.586],"4.58":[110.59,-15.169,88.585],"4.62":[110.589,-15.168,88.589],"4.67":[110.596,-15.166,88.583],"4.71":[110.591,-15.169,88.582],"4.75":[110.589,-15.168,88.589],"4.79":[110.589,-15.168,88.589],"4.83":[110.588,-15.171,88.587],"4.88":[110.591,-15.169,88.582],"4.92":[110.589,-15.172,88.583],"4.96":[110.589,-15.168,88.589],"5.0":[110.59,-15.169,88.585],"5.04":[110.593,-15.169,88.575],"5.08":[110.593,-15.169,88.575],"5.12":[110.593,-15.159,88.583],"5.17":[110.593,-15.169,88.575],"5.21":[111.187,-14.33,87.874],"5.25":[113.72,-10.087,84.664],"5.29":[116.867,-2.248,79.841],"5.33":[118.777,7.212,75.231],"5.38":[119.033,16.64,72.104],"5.42":[118.53,25.508,70.98],"5.46":[118.402,32.569,70.826],"5.5":[118.425,37.885,71.049],"5.54":[118.017,41.404,71.39],"5.58":[117.529,43.617,71.796],"5.62":[117.304,44.94,72.388],"5.67":[117.392,45.578,73.227],"5.71":[117.675,45.927,74.257],"5.75":[118.099,46.091,75.37],"5.79":[118.586,46.065,76.395],"5.83":[119.016,45.927,77.161],"5.88":[119.369,45.76,77.787],"5.92":[119.647,45.619,78.288],"5.96":[119.746,45.541,78.604],"6.0":[119.814,45.501,78.857],"6.04":[119.831,45.504,78.917],"6.08":[119.82,45.5,78.915],"6.12":[119.821,45.51,78.909]},"position":{"0.0":[15.555,-28.768,-22.748],"0.04":[17.199,-30.651,-20.948],"0.08":[18.906,-32.372,-19.125],"0.12":[20.193,-33.654,-17.582],"0.17":[21.239,-34.747,-16.23],"0.21":[21.797,-35.327,-15.428],"0.25":[21.686,-35.46,-15.367],"0.29":[21.451,-35.671,-15.64],"0.33":[21.398,-36.119,-15.96],"0.38":[21.345,-36.614,-16.307],"0.42":[21.29,-37.091,-16.644],"0.46":[21.249,-37.486,-16.92],"0.5":[21.226,-37.636,-17.02],"0.54":[21.223,-37.739,-17.095],"0.58":[21.21,-37.777,-17.12],"0.62":[21.206,-37.778,-17.119],"0.67":[21.206,-37.777,-17.12],"0.71":[21.206,-37.777,-17.12],"0.75":[21.208,-37.778,-17.12],"0.79":[21.208,-37.778,-17.119],"0.83":[21.209,-37.779,-17.119],"0.88":[21.209,-37.779,-17.119],"0.92":[21.21,-37.78,-17.118],"0.96":[21.211,-37.78,-17.118],"1.0":[21.211,-37.78,-17.118],"1.04":[21.212,-37.781,-17.118],"1.08":[21.214,-37.781,-17.118],"1.12":[21.214,-37.781,-17.118],"1.17":[21.215,-37.783,-17.117],"1.21":[21.217,-37.784,-17.117],"1.25":[21.218,-37.784,-17.117],"1.29":[21.218,-37.785,-17.116],"1.33":[21.221,-37.786,-17.116],"1.38":[21.221,-37.787,-17.115],"1.42":[21.222,-37.787,-17.115],"1.46":[21.224,-37.788,-17.114],"1.5":[21.227,-37.79,-17.116],"1.54":[21.231,-37.798,-17.12],"1.58":[21.237,-37.805,-17.118],"1.62":[21.243,-37.81,-17.116],"1.67":[21.247,-37.813,-17.113],"1.71":[21.25,-37.815,-17.112],"1.75":[21.241,-37.816,-17.112],"1.79":[21.238,-37.817,-17.113],"1.83":[21.24,-37.819,-17.111],"1.88":[21.241,-37.818,-17.112],"1.92":[21.242,-37.819,-17.111],"1.96":[21.243,-37.821,-17.11],"2.0":[21.244,-37.824,-17.118],"2.04":[21.245,-37.83,-17.117],"2.08":[21.247,-37.831,-17.118],"2.12":[21.248,-37.833,-17.116],"2.17":[21.25,-37.834,-17.115],"2.21":[21.251,-37.834,-17.115],"2.25":[21.252,-37.835,-17.115],"2.29":[21.255,-37.837,-17.114],"2.33":[21.255,-37.837,-17.114],"2.38":[21.257,-37.838,-17.114],"2.42":[21.259,-37.838,-17.114],"2.46":[21.261,-37.841,-17.112],"2.5":[21.261,-37.841,-17.112],"2.54":[21.263,-37.842,-17.111],"2.58":[21.264,-37.843,-17.111],"2.62":[21.266,-37.844,-17.11],"2.67":[21.267,-37.844,-17.11],"2.71":[21.269,-37.845,-17.11],"2.75":[21.27,-37.846,-17.109],"2.79":[21.27,-37.847,-17.108],"2.83":[21.272,-37.849,-17.108],"2.88":[21.273,-37.849,-17.107],"2.92":[21.275,-37.849,-17.108],"2.96":[21.277,-37.859,-17.107],"3.0":[21.278,-37.86,-17.114],"3.04":[21.279,-37.86,-17.114],"3.08":[21.269,-37.861,-17.114],"3.12":[21.265,-37.862,-17.113],"3.17":[21.266,-37.863,-17.113],"3.21":[21.268,-37.864,-17.112],"3.25":[21.269,-37.865,-17.112],"3.29":[21.27,-37.866,-17.111],"3.33":[21.271,-37.866,-17.111],"3.38":[21.272,-37.867,-17.111],"3.42":[21.273,-37.868,-17.11],"3.46":[21.274,-37.869,-17.109],"3.5":[21.275,-37.87,-17.109],"3.54":[21.276,-37.87,-17.109],"3.58":[21.277,-37.87,-17.109],"3.62":[21.279,-37.87,-17.109],"3.67":[21.28,-37.872,-17.108],"3.71":[21.281,-37.873,-17.108],"3.75":[21.282,-37.873,-17.107],"3.79":[21.283,-37.873,-17.107],"3.83":[21.283,-37.874,-17.107],"3.88":[21.284,-37.875,-17.107],"3.92":[21.285,-37.875,-17.107],"3.96":[21.286,-37.876,-17.106],"4.0":[21.286,-37.876,-17.106],"4.04":[21.286,-37.877,-17.105],"4.08":[21.287,-37.877,-17.106],"4.12":[21.288,-37.876,-17.106],"4.17":[21.289,-37.877,-17.106],"4.21":[21.289,-37.878,-17.105],"4.25":[21.29,-37.878,-17.105],"4.29":[21.291,-37.878,-17.106],"4.33":[21.291,-37.878,-17.105],"4.38":[21.29,-37.88,-17.103],"4.42":[21.291,-37.88,-17.103],"4.46":[21.292,-37.879,-17.105],"4.5":[21.291,-37.88,-17.103],"4.54":[21.292,-37.88,-17.104],"4.92":[21.292,-37.88,-17.104],"4.96":[21.292,-37.888,-17.104],"5.08":[21.292,-37.888,-17.104],"5.12":[21.293,-37.887,-17.105],"5.17":[21.292,-37.888,-17.104],"5.21":[21.13,-37.766,-17.288],"5.25":[20.347,-37.174,-18.18],"5.29":[19.038,-36.12,-19.706],"5.33":[17.615,-34.882,-21.424],"5.38":[16.549,-33.692,-22.704],"5.42":[15.898,-32.465,-23.347],"5.46":[15.397,-31.284,-23.684],"5.5":[15.035,-30.189,-23.883],"5.54":[14.798,-29.265,-24.023],"5.58":[14.686,-28.49,-24.087],"5.62":[14.677,-27.884,-24.069],"5.67":[14.7,-27.615,-24.002],"5.71":[14.73,-27.535,-23.923],"5.75":[14.753,-27.546,-23.845],"5.79":[14.775,-27.606,-23.754],"5.83":[14.78,-27.685,-23.697],"5.88":[14.78,-27.74,-23.659],"5.92":[14.781,-27.783,-23.632],"5.96":[14.78,-27.815,-23.61],"6.0":[14.777,-27.82,-23.608],"6.04":[14.773,-27.812,-23.612],"6.08":[14.771,-27.802,-23.624],"6.12":[14.773,-27.789,-23.627]}},"righthand":{"position":{"0.0":{"post":[-0.5,3.5,0.25],"lerp_mode":"catmullrom"},"0.45":{"post":[-1.3,3.5,-0.25],"lerp_mode":"catmullrom"},"5.32":{"post":[-1.3,3.5,-0.25],"lerp_mode":"catmullrom"},"5.81":{"post":[-0.5,3.5,0.25],"lerp_mode":"catmullrom"}},"scale":[1,1.5,1]}}},"static_idle":{"loop":true,"animation_length":1.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[85.9,-49.343,-92.063],"0.04":[85.898,-49.394,-92.095],"0.08":[85.903,-49.442,-92.136],"0.12":[85.9,-49.492,-92.148],"0.17":[85.888,-49.527,-92.155],"0.21":[85.888,-49.567,-92.182],"0.25":[85.881,-49.598,-92.186],"0.29":[85.885,-49.616,-92.208],"0.33":[85.883,-49.629,-92.21],"0.38":[85.887,-49.63,-92.226],"0.42":[85.883,-49.631,-92.224],"0.46":[85.885,-49.623,-92.24],"0.5":[85.871,-49.597,-92.208],"0.54":[85.864,-49.556,-92.201],"0.58":[85.878,-49.513,-92.198],"0.62":[85.877,-49.474,-92.186],"0.67":[85.881,-49.41,-92.177],"0.71":[85.883,-49.339,-92.161],"0.75":[85.882,-49.273,-92.144],"0.79":[85.879,-49.195,-92.103],"0.83":[85.879,-49.107,-92.089],"0.88":[85.874,-49.034,-92.068],"0.92":[85.888,-48.959,-92.053],"0.96":[85.89,-48.865,-92.024],"1.0":[85.888,-48.789,-92.001],"1.04":[85.884,-48.711,-91.976],"1.08":[85.877,-48.634,-91.945],"1.12":[85.892,-48.561,-91.94],"1.17":[85.892,-48.499,-91.919],"1.21":[85.89,-48.435,-91.895],"1.25":[85.893,-48.385,-91.877],"1.29":[85.882,-48.334,-91.857],"1.33":[85.885,-48.31,-91.85],"1.38":[85.893,-48.293,-91.847],"1.42":[85.894,-48.285,-91.832],"1.46":[85.9,-48.275,-91.836],"1.5":[85.894,-48.305,-91.838],"1.54":[85.894,-48.327,-91.849],"1.58":[85.9,-48.371,-91.852],"1.62":[85.901,-48.413,-91.869],"1.67":[85.912,-48.484,-91.892],"1.71":[85.906,-48.55,-91.887],"1.75":[85.906,-48.649,-91.924],"1.79":[85.889,-48.734,-91.911],"1.83":[85.906,-48.855,-91.953],"1.88":[85.904,-48.985,-91.983],"1.92":[85.906,-49.13,-92.022],"1.96":[85.916,-49.291,-92.057]},"position":{"0.0":[-11.541,-25.628,-17.745],"0.04":[-11.542,-25.648,-17.748],"0.08":[-11.539,-25.665,-17.75],"0.12":[-11.54,-25.686,-17.751],"0.17":[-11.537,-25.7,-17.752],"0.21":[-11.536,-25.714,-17.752],"0.25":[-11.536,-25.722,-17.754],"0.29":[-11.536,-25.73,-17.754],"0.33":[-11.534,-25.743,-17.755],"0.38":[-11.535,-25.746,-17.754],"0.42":[-11.535,-25.749,-17.755],"0.46":[-11.535,-25.75,-17.756],"0.5":[-11.534,-25.748,-17.755],"0.54":[-11.534,-25.746,-17.756],"0.58":[-11.533,-25.735,-17.755],"0.62":[-11.536,-25.727,-17.752],"0.67":[-11.535,-25.72,-17.754],"0.71":[-11.536,-25.708,-17.752],"0.75":[-11.537,-25.695,-17.751],"0.79":[-11.539,-25.685,-17.751],"0.83":[-11.54,-25.667,-17.75],"0.88":[-11.541,-25.656,-17.746],"0.92":[-11.542,-25.638,-17.745],"0.96":[-11.541,-25.625,-17.744],"1.0":[-11.543,-25.605,-17.743],"1.04":[-11.544,-25.594,-17.742],"1.08":[-11.544,-25.577,-17.741],"1.12":[-11.547,-25.564,-17.737],"1.17":[-11.545,-25.546,-17.736],"1.21":[-11.547,-25.537,-17.737],"1.25":[-11.549,-25.523,-17.734],"1.29":[-11.55,-25.516,-17.736],"1.33":[-11.551,-25.508,-17.732],"1.38":[-11.553,-25.503,-17.733],"1.42":[-11.552,-25.5,-17.731],"1.46":[-11.55,-25.499,-17.73],"1.5":[-11.55,-25.499,-17.731],"1.54":[-11.551,-25.5,-17.731],"1.58":[-11.552,-25.502,-17.732],"1.62":[-11.548,-25.507,-17.735],"1.67":[-11.549,-25.511,-17.733],"1.71":[-11.549,-25.522,-17.735],"1.75":[-11.548,-25.533,-17.733],"1.79":[-11.548,-25.541,-17.737],"1.83":[-11.546,-25.554,-17.738],"1.88":[-11.546,-25.57,-17.738],"1.92":[-11.545,-25.588,-17.739],"1.96":[-11.543,-25.602,-17.74]}},"tactical":{"rotation":{"0.0":[19.447,9.569,166.177],"0.04":[19.442,9.56,166.175],"0.08":[19.441,9.552,166.173],"0.12":[19.453,9.56,166.174],"0.17":[19.448,9.562,166.176],"0.21":[19.442,9.549,166.17],"0.25":[19.447,9.56,166.167],"0.29":[19.447,9.549,166.176],"0.33":[19.45,9.561,166.175],"0.38":[19.449,9.549,166.181],"0.42":[19.445,9.551,166.179],"0.46":[19.44,9.534,166.179],"0.5":[19.434,9.56,166.177],"0.54":[19.435,9.553,166.181],"0.58":[19.447,9.553,166.188],"0.62":[19.444,9.545,166.182],"0.67":[19.45,9.553,166.177],"0.71":[19.444,9.55,166.186],"0.75":[19.436,9.544,166.175],"0.79":[19.448,9.561,166.176],"0.83":[19.445,9.557,166.188],"0.88":[19.44,9.55,166.182],"0.92":[19.448,9.547,166.173],"0.96":[19.451,9.549,166.194],"1.0":[19.445,9.548,166.176],"1.04":[19.446,9.553,166.175],"1.08":[19.442,9.56,166.183],"1.12":[19.451,9.551,166.184],"1.17":[19.444,9.548,166.176],"1.21":[19.442,9.556,166.178],"1.25":[19.447,9.557,166.179],"1.29":[19.431,9.555,166.181],"1.33":[19.44,9.559,166.18],"1.38":[19.439,9.554,166.175],"1.42":[19.454,9.564,166.175],"1.46":[19.453,9.563,166.192],"1.5":[19.454,9.555,166.18],"1.54":[19.449,9.551,166.181],"1.58":[19.453,9.558,166.179],"1.62":[19.44,9.551,166.187],"1.67":[19.448,9.546,166.178],"1.71":[19.453,9.564,166.186],"1.75":[19.442,9.55,166.172],"1.79":[19.445,9.578,166.182],"1.83":[19.446,9.555,166.183],"1.88":[19.446,9.559,166.179],"1.92":[19.444,9.554,166.181],"1.96":[19.444,9.547,166.179]},"position":{"0.0":[5.261,12.43,-0.614],"0.04":[5.255,12.433,-0.617],"0.08":[5.249,12.438,-0.615],"0.12":[5.251,12.44,-0.621],"0.17":[5.25,12.439,-0.618],"0.21":[5.25,12.441,-0.619],"0.25":[5.249,12.438,-0.619],"0.29":[5.249,12.439,-0.62],"0.33":[5.251,12.441,-0.618],"0.38":[5.25,12.442,-0.619],"0.42":[5.251,12.44,-0.619],"0.46":[5.251,12.44,-0.619],"0.5":[5.252,12.44,-0.619],"0.54":[5.254,12.439,-0.619],"0.58":[5.252,12.436,-0.617],"0.62":[5.25,12.437,-0.619],"0.67":[5.254,12.436,-0.618],"0.71":[5.255,12.435,-0.618],"0.75":[5.254,12.433,-0.618],"0.79":[5.259,12.435,-0.619],"0.83":[5.258,12.431,-0.618],"0.88":[5.258,12.433,-0.619],"0.92":[5.258,12.432,-0.619],"0.96":[5.261,12.433,-0.617],"1.0":[5.255,12.43,-0.618],"1.04":[5.251,12.44,-0.619],"1.08":[5.251,12.438,-0.618],"1.12":[5.25,12.441,-0.62],"1.17":[5.248,12.436,-0.616],"1.21":[5.253,12.438,-0.614],"1.25":[5.251,12.437,-0.615],"1.29":[5.254,12.436,-0.617],"1.33":[5.251,12.437,-0.617],"1.38":[5.253,12.437,-0.618],"1.42":[5.253,12.44,-0.617],"1.46":[5.253,12.441,-0.615],"1.5":[5.254,12.443,-0.616],"1.54":[5.252,12.441,-0.617],"1.58":[5.252,12.44,-0.617],"1.62":[5.252,12.439,-0.614],"1.67":[5.26,12.43,-0.615],"1.71":[5.263,12.433,-0.616],"1.75":[5.257,12.434,-0.616],"1.79":[5.257,12.432,-0.616],"1.83":[5.253,12.433,-0.614],"1.88":[5.252,12.437,-0.616],"1.92":[5.25,12.44,-0.617],"1.96":[5.257,12.429,-0.614]}},"lefthand":{"rotation":{"0.0":[119.862,45.607,78.984],"0.04":[119.901,45.692,79.046],"0.08":[119.97,45.771,79.138],"0.12":[120.001,45.86,79.195],"0.17":[120.06,45.931,79.276],"0.21":[120.139,45.998,79.382],"0.25":[120.219,46.063,79.482],"0.29":[120.293,46.121,79.579],"0.33":[120.346,46.198,79.651],"0.38":[120.445,46.246,79.774],"0.42":[120.513,46.298,79.862],"0.46":[120.622,46.351,79.986],"0.5":[120.683,46.412,80.077],"0.54":[120.75,46.472,80.162],"0.58":[120.834,46.533,80.263],"0.62":[120.908,46.588,80.368],"0.67":[120.987,46.644,80.472],"0.71":[121.051,46.707,80.56],"0.75":[121.125,46.771,80.663],"0.79":[121.176,46.848,80.729],"0.83":[121.261,46.926,80.843],"0.88":[121.315,47.004,80.922],"0.92":[121.353,47.095,81],"0.96":[121.381,47.204,81.056],"1.0":[121.353,47.095,81],"1.04":[121.315,47.004,80.922],"1.08":[121.252,46.926,80.835],"1.12":[121.191,46.845,80.745],"1.17":[121.122,46.768,80.66],"1.21":[121.051,46.707,80.56],"1.25":[120.987,46.644,80.472],"1.29":[120.908,46.588,80.368],"1.33":[120.834,46.533,80.263],"1.38":[120.75,46.472,80.162],"1.42":[120.683,46.412,80.078],"1.46":[120.622,46.351,79.986],"1.5":[120.512,46.299,79.861],"1.54":[120.442,46.246,79.769],"1.58":[120.345,46.197,79.65],"1.62":[120.293,46.121,79.579],"1.67":[120.219,46.067,79.486],"1.71":[120.132,46.002,79.375],"1.75":[120.061,45.931,79.276],"1.79":[120.005,45.864,79.2],"1.83":[119.966,45.772,79.138],"1.88":[119.902,45.69,79.051],"1.92":[119.862,45.606,78.987],"1.96":[119.816,45.514,78.921]},"position":{"0.0":[14.778,-27.791,-23.63],"0.04":[14.782,-27.797,-23.634],"0.08":[14.784,-27.804,-23.637],"0.12":[14.78,-27.82,-23.64],"0.17":[14.783,-27.83,-23.643],"0.21":[14.785,-27.846,-23.641],"0.25":[14.78,-27.861,-23.638],"0.29":[14.78,-27.882,-23.641],"0.33":[14.781,-27.894,-23.636],"0.38":[14.775,-27.914,-23.636],"0.42":[14.778,-27.935,-23.633],"0.46":[14.769,-27.949,-23.631],"0.5":[14.769,-27.969,-23.631],"0.54":[14.766,-27.99,-23.628],"0.58":[14.767,-28.011,-23.629],"0.62":[14.76,-28.023,-23.623],"0.67":[14.763,-28.043,-23.625],"0.71":[14.765,-28.058,-23.623],"0.75":[14.761,-28.074,-23.621],"0.79":[14.761,-28.085,-23.623],"0.83":[14.763,-28.1,-23.625],"0.88":[14.767,-28.107,-23.625],"0.92":[14.772,-28.111,-23.625],"0.96":[14.777,-28.116,-23.629],"1.0":[14.772,-28.111,-23.625],"1.04":[14.767,-28.107,-23.625],"1.08":[14.763,-28.1,-23.625],"1.12":[14.761,-28.085,-23.623],"1.17":[14.761,-28.074,-23.621],"1.21":[14.765,-28.058,-23.623],"1.25":[14.763,-28.043,-23.625],"1.29":[14.76,-28.023,-23.623],"1.33":[14.767,-28.011,-23.629],"1.38":[14.766,-27.99,-23.628],"1.42":[14.769,-27.969,-23.631],"1.46":[14.769,-27.949,-23.631],"1.5":[14.778,-27.935,-23.633],"1.54":[14.775,-27.914,-23.636],"1.58":[14.781,-27.894,-23.636],"1.62":[14.78,-27.882,-23.641],"1.67":[14.78,-27.861,-23.639],"1.71":[14.785,-27.845,-23.641],"1.75":[14.783,-27.83,-23.643],"1.79":[14.78,-27.82,-23.64],"1.83":[14.784,-27.804,-23.637],"1.88":[14.782,-27.797,-23.634],"1.92":[14.778,-27.791,-23.63],"1.96":[14.774,-27.786,-23.627]}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}}},"idle":{"loop":true,"bones":{"root":{"rotation":[0,0,0],"position":[0,0,0],"scale":1}}},"draw":{"loop":true,"animation_length":0.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[80.515,11.758,-90.414],"0.04":[81.828,4.33,-77.82],"0.08":[81.624,-1.409,-71.152],"0.12":[88.489,-7.053,-98.483],"0.17":[98.929,1.527,-157.297],"0.21":[100.923,6.41,-177.574],"0.25":[106.551,3.578,-177.13],"0.29":[113.712,-0.993,-177.22],"0.33":[120.925,-6.268,-177.886],"0.38":[126.467,-11.235,-178.156],"0.42":[128.71,-15.495,-176.432],"0.46":[116.785,-22.439,-153.619],"0.5":[101.414,-18.298,-125.117],"0.54":[95.909,-9.287,-119.495],"0.58":[93.14,-3.179,-117.323],"0.62":[93.457,-5.841,-112.671],"0.67":[94.4,-16.386,-106.893],"0.71":[93.535,-27.626,-101.673],"0.75":[91.335,-36.155,-97.576],"0.79":[88.583,-43.398,-94.405],"0.83":[86.51,-48.043,-92.536],"0.88":[85.912,-49.278,-92.043],"0.96":[85.912,-49.278,-92.043]},"position":{"0.0":[-12.565,-31.054,-12.325],"0.04":[-12.639,-29.252,-13.789],"0.08":[-12.677,-27.42,-15.219],"0.12":[-12.652,-25.711,-16.48],"0.17":[-12.539,-24.352,-17.351],"0.21":[-12.339,-23.385,-17.801],"0.25":[-12.138,-22.669,-18.056],"0.29":[-11.973,-22.163,-18.213],"0.33":[-11.86,-21.988,-18.222],"0.38":[-11.795,-22.183,-18.079],"0.42":[-11.782,-22.799,-17.76],"0.46":[-11.77,-23.861,-17.452],"0.5":[-11.694,-25.144,-17.465],"0.54":[-11.605,-26.243,-17.614],"0.58":[-11.553,-26.824,-17.725],"0.62":[-11.545,-26.693,-17.741],"0.67":[-11.543,-26.136,-17.745],"0.71":[-11.543,-25.705,-17.743],"0.75":[-11.542,-25.605,-17.742],"0.96":[-11.542,-25.605,-17.742]}},"tactical":{"rotation":{"0.0":[26.85,11.905,168.273],"0.04":[31.251,12.322,169.818],"0.08":[36.267,12.018,171.868],"0.12":[44.733,-7.398,186.149],"0.17":[41.912,-14.01,195.009],"0.21":[33.163,32.194,152.331],"0.25":[-48.397,13.46,27.927],"0.29":[-10.817,-49.691,-59.578],"0.33":[29.91,50.824,-210.749],"0.38":[-55.514,15.161,-326.764],"0.42":[27.761,-52.14,-460.646],"0.46":[40.616,59.368,-555.864],"0.5":[40.026,39.203,-545.806],"0.54":[27.803,22.147,-550.327],"0.58":[20.371,11.038,-553.417],"0.62":[19.405,9.551,-553.825],"0.67":[19.435,9.576,-553.823],"0.71":[19.431,9.569,-553.805],"0.75":[19.432,9.56,-553.805],"0.79":[19.441,9.553,-553.811],"0.83":[19.452,9.562,-553.812],"0.88":[19.445,9.562,-553.812],"0.96":[19.445,9.562,-553.812]},"position":{"0.0":[4.997,13.15,-1.319],"0.04":[4.877,13.48,-1.616],"0.08":[4.773,13.78,-1.866],"0.12":[4.586,14.088,-2.02],"0.17":[4.583,14.219,-2.118],"0.21":[4.671,14.235,-2.223],"0.25":[4.757,14.261,-2.131],"0.29":[4.776,14.226,-2.099],"0.33":[4.915,14.212,-1.935],"0.38":[4.929,14.194,-1.917],"0.42":[4.934,14.186,-1.916],"0.46":[5.224,13.839,-1.252],"0.5":[5.28,13.513,-1.224],"0.54":[5.29,12.915,-0.933],"0.58":[5.26,12.495,-0.664],"0.62":[5.254,12.427,-0.623],"0.67":[5.253,12.42,-0.621],"0.71":[5.257,12.426,-0.621],"0.75":[5.257,12.43,-0.619],"0.79":[5.254,12.434,-0.617],"0.83":[5.261,12.432,-0.616],"0.88":[5.261,12.431,-0.614],"0.96":[5.261,12.431,-0.614]}},"lefthand":{"rotation":{"0.0":[128.168,-12.663,75.388],"0.04":[131.492,-15.341,76.741],"0.08":[134.604,-17.017,77.551],"0.12":[137.525,-17.462,78.078],"0.17":[140.119,-16.17,78.661],"0.21":[142.419,-13.186,79.576],"0.25":[144.309,-7.043,81.358],"0.29":[145.726,4.279,84.722],"0.33":[146.87,18.92,90.204],"0.38":[148.379,32.874,97.023],"0.42":[149.763,43.768,103.688],"0.46":[148.489,49.917,106.415],"0.5":[142.521,51.762,102.366],"0.54":[134.805,51.841,95.407],"0.58":[127.493,50.328,87.945],"0.62":[122.242,47.93,82.033],"0.67":[120.044,45.764,79.221],"0.71":[119.249,44.455,78.112],"0.75":[118.906,43.856,77.628],"0.79":[118.814,43.713,77.512],"0.83":[118.992,44.01,77.744],"0.88":[119.317,44.602,78.205],"0.92":[119.65,45.21,78.676],"0.96":[119.832,45.506,78.939]},"position":{"0.0":[17.676,-33.126,-19.785],"0.04":[17.164,-32.705,-19.689],"0.08":[16.562,-32.052,-19.634],"0.12":[15.909,-31.295,-19.637],"0.17":[15.309,-30.572,-19.762],"0.21":[14.801,-30.019,-20.003],"0.25":[14.47,-29.58,-20.433],"0.29":[14.346,-29.008,-21.101],"0.33":[14.407,-28.324,-21.919],"0.38":[14.547,-27.687,-22.706],"0.42":[14.691,-27.233,-23.319],"0.46":[14.773,-27.075,-23.634],"0.5":[14.783,-27.214,-23.68],"0.54":[14.784,-27.428,-23.685],"0.58":[14.787,-27.647,-23.672],"0.62":[14.783,-27.812,-23.65],"0.67":[14.778,-27.864,-23.639],"0.71":[14.779,-27.862,-23.639],"0.75":[14.785,-27.854,-23.639],"0.79":[14.786,-27.845,-23.637],"0.83":[14.778,-27.833,-23.639],"0.88":[14.777,-27.809,-23.634],"0.92":[14.775,-27.793,-23.629],"0.96":[14.773,-27.786,-23.627]}},"righthand":{"position":[-0.5,3.5,0.25],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_deploy1"}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/tactical.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/tactical.geo.json new file mode 100644 index 0000000..de2812f --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/tactical.geo.json @@ -0,0 +1,2294 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 4, + "visible_bounds_height": 4, + "visible_bounds_offset": [0, 0, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "bone", + "parent": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "knife_and_right", + "parent": "bone", + "pivot": [6, 19, 0] + }, + { + "name": "righthand", + "parent": "knife_and_right", + "pivot": [6, 19, 0] + }, + { + "name": "righthand_pos", + "parent": "righthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [4, 8, -2], + "size": [3, 12, 4], + "uv": { + "north": {"uv": [0, 0], "uv_size": [4, 12]}, + "east": {"uv": [4, 0], "uv_size": [4, 12]}, + "south": {"uv": [8, 0], "uv_size": [4, 12]}, + "west": {"uv": [0, 12], "uv_size": [4, 12]}, + "up": {"uv": [16, 0], "uv_size": [4, 4]}, + "down": {"uv": [16, 8], "uv_size": [4, -4]} + } + } + ] + }, + { + "name": "tactical", + "parent": "knife_and_right", + "pivot": [0, 10, -1] + }, + { + "name": "weapon2", + "parent": "tactical", + "pivot": [0, 10, -1], + "cubes": [ + { + "origin": [-0.36592, 10.53368, -1.25522], + "size": [0.73184, 0.55687, 0.37125], + "pivot": [0.00533, 11.06734, -1.23203], + "rotation": [-23.75, 0, 0], + "uv": { + "north": {"uv": [24, 28], "uv_size": [0.5, 0.5]}, + "east": {"uv": [28, 24], "uv_size": [0.5, 0.5]}, + "south": {"uv": [25, 28], "uv_size": [0.5, 0.5]}, + "west": {"uv": [28, 25], "uv_size": [0.5, 0.5]}, + "up": {"uv": [26, 28], "uv_size": [0.5, 0.5]}, + "down": {"uv": [28, 26.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 10.03134, -1.4682], + "size": [0.7425, 0.55687, 0.37125], + "pivot": [0, 10.58821, -1.4682], + "rotation": [-14.75, 0, 0], + "uv": { + "north": {"uv": [27, 28], "uv_size": [0.5, 0.5]}, + "east": {"uv": [28, 27], "uv_size": [0.5, 0.5]}, + "south": {"uv": [28, 28], "uv_size": [0.5, 0.5]}, + "west": {"uv": [0, 29], "uv_size": [0.5, 0.5]}, + "up": {"uv": [29, 0], "uv_size": [0.5, 0.5]}, + "down": {"uv": [1, 29.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 9.49281, -1.60998], + "size": [0.7425, 0.55688, 0.37125], + "pivot": [0, 10.04969, -1.60998], + "rotation": [-5, 0, 0], + "uv": { + "north": {"uv": [29, 1], "uv_size": [0.5, 0.5]}, + "east": {"uv": [2, 29], "uv_size": [0.5, 0.5]}, + "south": {"uv": [29, 2], "uv_size": [0.5, 0.5]}, + "west": {"uv": [3, 29], "uv_size": [0.5, 0.5]}, + "up": {"uv": [29, 3], "uv_size": [0.5, 0.5]}, + "down": {"uv": [4, 29.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37658, 8.93806, -1.65853], + "size": [0.75316, 0.55688, 0.37125], + "pivot": [-0.00533, 9.49494, -1.65853], + "rotation": [5, 0, 0], + "uv": { + "north": {"uv": [29, 4], "uv_size": [0.5, 0.5]}, + "east": {"uv": [5, 29], "uv_size": [0.5, 0.5]}, + "south": {"uv": [29, 5], "uv_size": [0.5, 0.5]}, + "west": {"uv": [6, 29], "uv_size": [0.5, 0.5]}, + "up": {"uv": [29, 6], "uv_size": [0.5, 0.5]}, + "down": {"uv": [7, 29.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 10.72667, -1.24392], + "size": [0.7425, 0.37125, 0.7425], + "pivot": [0, 11.09792, -1.24392], + "rotation": [-11.25, 0, 0], + "uv": { + "north": {"uv": [29, 7], "uv_size": [0.5, 0.5]}, + "east": {"uv": [8, 29], "uv_size": [0.5, 0.5]}, + "south": {"uv": [29, 8], "uv_size": [0.5, 0.5]}, + "west": {"uv": [9, 29], "uv_size": [0.5, 0.5]}, + "up": {"uv": [29, 9], "uv_size": [0.5, 0.5]}, + "down": {"uv": [10, 29.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 10.58895, -0.58812], + "size": [0.7425, 0.37125, 0.7425], + "pivot": [0, 10.58895, -0.58812], + "rotation": [-3, 0, 0], + "uv": { + "north": {"uv": [29, 10], "uv_size": [0.5, 0.5]}, + "east": {"uv": [11, 29], "uv_size": [0.5, 0.5]}, + "south": {"uv": [29, 11], "uv_size": [0.5, 0.5]}, + "west": {"uv": [12, 29], "uv_size": [0.5, 0.5]}, + "up": {"uv": [29, 12], "uv_size": [0.5, 0.5]}, + "down": {"uv": [13, 29.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 10.5501, 0.15337], + "size": [0.7425, 0.37125, 0.7425], + "pivot": [0, 10.5501, 0.15337], + "rotation": [4.5, 0, 0], + "uv": { + "north": {"uv": [29, 13], "uv_size": [0.5, 0.5]}, + "east": {"uv": [14, 29], "uv_size": [0.5, 0.5]}, + "south": {"uv": [29, 14], "uv_size": [0.5, 0.5]}, + "west": {"uv": [15, 29], "uv_size": [0.5, 0.5]}, + "up": {"uv": [29, 15], "uv_size": [0.5, 0.5]}, + "down": {"uv": [16, 29.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 10.60834, 0.89357], + "size": [0.7425, 0.37125, 0.7425], + "pivot": [0, 10.60834, 0.89357], + "rotation": [12, 0, 0], + "uv": { + "north": {"uv": [29, 16], "uv_size": [0.5, 0.5]}, + "east": {"uv": [17, 29], "uv_size": [0.5, 0.5]}, + "south": {"uv": [29, 17], "uv_size": [0.5, 0.5]}, + "west": {"uv": [18, 29], "uv_size": [0.5, 0.5]}, + "up": {"uv": [29, 18], "uv_size": [0.5, 0.5]}, + "down": {"uv": [19, 29.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 10.75462, 1.54266], + "size": [0.7425, 0.37125, 0.7425], + "pivot": [0, 11.12587, 1.54266], + "rotation": [7, 0, 0], + "uv": { + "north": {"uv": [29, 19], "uv_size": [0.5, 0.5]}, + "east": {"uv": [20, 29], "uv_size": [0.5, 0.5]}, + "south": {"uv": [29, 20], "uv_size": [0.5, 0.5]}, + "west": {"uv": [21, 29], "uv_size": [0.5, 0.5]}, + "up": {"uv": [29, 21], "uv_size": [0.5, 0.5]}, + "down": {"uv": [22, 29.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 10.8451, 2.27963], + "size": [0.7425, 0.37125, 0.55686], + "pivot": [0, 11.21635, 2.27963], + "rotation": [-5.5, 0, 0], + "uv": { + "north": {"uv": [29, 22], "uv_size": [0.5, 0.5]}, + "east": {"uv": [23, 29], "uv_size": [0.5, 0.5]}, + "south": {"uv": [29, 23], "uv_size": [0.5, 0.5]}, + "west": {"uv": [24, 29], "uv_size": [0.5, 0.5]}, + "up": {"uv": [29, 24], "uv_size": [0.5, 0.5]}, + "down": {"uv": [25, 29.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 10.79173, 2.83394], + "size": [0.7425, 0.37125, 0.7425], + "pivot": [0, 11.16298, 2.83394], + "rotation": [-13, 0, 0], + "uv": { + "north": {"uv": [29, 25], "uv_size": [0.5, 0.5]}, + "east": {"uv": [26, 29], "uv_size": [0.5, 0.5]}, + "south": {"uv": [29, 26], "uv_size": [0.5, 0.5]}, + "west": {"uv": [27, 29], "uv_size": [0.5, 0.5]}, + "up": {"uv": [29, 27], "uv_size": [0.5, 0.5]}, + "down": {"uv": [28, 29.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 10.62469, 3.55741], + "size": [0.7425, 0.37125, 1.485], + "pivot": [0, 10.99594, 3.55741], + "rotation": [-18, 0, 0], + "uv": { + "north": {"uv": [29, 28], "uv_size": [0.5, 0.5]}, + "east": {"uv": [2, 20], "uv_size": [1.5, 0.5]}, + "south": {"uv": [29, 29], "uv_size": [0.5, 0.5]}, + "west": {"uv": [20, 2], "uv_size": [1.5, 0.5]}, + "up": {"uv": [20, 3], "uv_size": [0.5, 1.5]}, + "down": {"uv": [4, 21.5], "uv_size": [0.5, -1.5]} + } + }, + { + "origin": [-0.37125, 10.18397, 4.855], + "size": [0.7425, 0.37126, 0.83531], + "pivot": [0, 10.18397, 4.855], + "rotation": [-8, 0, 0], + "uv": { + "north": {"uv": [0, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [23, 11], "uv_size": [1, 0.5]}, + "south": {"uv": [30, 0], "uv_size": [0.5, 0.5]}, + "west": {"uv": [12, 23], "uv_size": [1, 0.5]}, + "up": {"uv": [23, 12], "uv_size": [0.5, 1]}, + "down": {"uv": [13, 24], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.37125, 9.32523, 5.31094], + "size": [0.7425, 0.92812, 0.37125], + "pivot": [0, 10.06773, 5.68219], + "rotation": [14.5, 0, 0], + "uv": { + "north": {"uv": [23, 13], "uv_size": [0.5, 1]}, + "east": {"uv": [14, 23], "uv_size": [0.5, 1]}, + "south": {"uv": [23, 14], "uv_size": [0.5, 1]}, + "west": {"uv": [15, 23], "uv_size": [0.5, 1]}, + "up": {"uv": [1, 30], "uv_size": [0.5, 0.5]}, + "down": {"uv": [30, 1.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 8.97763, 5.49684], + "size": [0.7425, 0.37125, 0.37125], + "pivot": [0, 9.34888, 5.86809], + "rotation": [-8, 0, 0], + "uv": { + "north": {"uv": [2, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [30, 2], "uv_size": [0.5, 0.5]}, + "south": {"uv": [3, 30], "uv_size": [0.5, 0.5]}, + "west": {"uv": [30, 3], "uv_size": [0.5, 0.5]}, + "up": {"uv": [4, 30], "uv_size": [0.5, 0.5]}, + "down": {"uv": [30, 4.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.36592, 8.05475, 4.84519], + "size": [0.73184, 0.9265, 0.97125], + "pivot": [0.00533, 8.98125, 5.81644], + "rotation": [-40.5, 0, 0], + "uv": { + "north": {"uv": [5, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [30, 5], "uv_size": [0.5, 0.5]}, + "south": {"uv": [6, 30], "uv_size": [0.5, 0.5]}, + "west": {"uv": [30, 6], "uv_size": [0.5, 0.5]}, + "up": {"uv": [7, 30], "uv_size": [0.5, 0.5]}, + "down": {"uv": [30, 7.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 8.74597, 0.9507], + "size": [0.7425, 0.37125, 4.44114], + "pivot": [0, 8.74597, 5.12726], + "rotation": [-7, 0, 0], + "uv": { + "north": {"uv": [8, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [13, 10], "uv_size": [4.5, 0.5]}, + "south": {"uv": [30, 8], "uv_size": [0.5, 0.5]}, + "west": {"uv": [13, 11], "uv_size": [4.5, 0.5]}, + "up": {"uv": [0, 13], "uv_size": [0.5, 4.5]}, + "down": {"uv": [1, 17.5], "uv_size": [0.5, -4.5]} + } + }, + { + "origin": [-0.37125, 9.2522, -1.38606], + "size": [0.7425, 0.37125, 2.41313], + "pivot": [0, 9.62345, 1.02707], + "rotation": [6.75, 0, 0], + "uv": { + "north": {"uv": [9, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [17, 4], "uv_size": [2.5, 0.5]}, + "south": {"uv": [30, 9], "uv_size": [0.5, 0.5]}, + "west": {"uv": [17, 5], "uv_size": [2.5, 0.5]}, + "up": {"uv": [8, 17], "uv_size": [0.5, 2.5]}, + "down": {"uv": [9, 19.5], "uv_size": [0.5, -2.5]} + } + }, + { + "origin": [-0.37077, 9.3455, -1.29275], + "size": [0.74153, 1.57684, 4.54683], + "inflate": -0.001, + "uv": { + "north": {"uv": [5, 20], "uv_size": [0.5, 1.5]}, + "east": {"uv": [0, 0], "uv_size": [4.5, 1.5]}, + "south": {"uv": [20, 5], "uv_size": [0.5, 1.5]}, + "west": {"uv": [0, 2], "uv_size": [4.5, 1.5]}, + "up": {"uv": [2, 13], "uv_size": [0.5, 4.5]}, + "down": {"uv": [3, 17.5], "uv_size": [0.5, -4.5]} + } + }, + { + "origin": [-0.37077, 9.06706, 3.25505], + "size": [0.74153, 1.2984, 2.31935], + "inflate": -0.001, + "uv": { + "north": {"uv": [6, 20], "uv_size": [0.5, 1.5]}, + "east": {"uv": [0, 6], "uv_size": [2.5, 1.5]}, + "south": {"uv": [7, 20], "uv_size": [0.5, 1.5]}, + "west": {"uv": [3, 6], "uv_size": [2.5, 1.5]}, + "up": {"uv": [10, 17], "uv_size": [0.5, 2.5]}, + "down": {"uv": [11, 19.5], "uv_size": [0.5, -2.5]} + } + }, + { + "origin": [-0.37077, 10.36643, 3.25505], + "size": [0.74153, 0.37028, 1.01998], + "inflate": -0.001, + "uv": { + "north": {"uv": [10, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [23, 15], "uv_size": [1, 0.5]}, + "south": {"uv": [30, 10], "uv_size": [0.5, 0.5]}, + "west": {"uv": [16, 23], "uv_size": [1, 0.5]}, + "up": {"uv": [23, 16], "uv_size": [0.5, 1]}, + "down": {"uv": [17, 24], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.37125, 8.43303, 0.28385], + "size": [0.7425, 0.7425, 0.27845], + "pivot": [0, 8.80428, 0.42308], + "rotation": [6.75, 0, 0], + "uv": { + "north": {"uv": [11, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [30, 11], "uv_size": [0.5, 0.5]}, + "south": {"uv": [12, 30], "uv_size": [0.5, 0.5]}, + "west": {"uv": [30, 12], "uv_size": [0.5, 0.5]}, + "up": {"uv": [13, 30], "uv_size": [0.5, 0.5]}, + "down": {"uv": [30, 13.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 8.41923, 0.32845], + "size": [0.7425, 0.55688, 0.27844], + "pivot": [0, 8.41923, 0.32845], + "rotation": [26.75, 0, 0], + "uv": { + "north": {"uv": [14, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [30, 14], "uv_size": [0.5, 0.5]}, + "south": {"uv": [15, 30], "uv_size": [0.5, 0.5]}, + "west": {"uv": [30, 15], "uv_size": [0.5, 0.5]}, + "up": {"uv": [16, 30], "uv_size": [0.5, 0.5]}, + "down": {"uv": [30, 16.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 8.8237, 0.07781], + "size": [0.7425, 0.46406, 0.37125], + "pivot": [0, 8.91651, 0.07781], + "rotation": [46.75, 0, 0], + "uv": { + "north": {"uv": [17, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [30, 17], "uv_size": [0.5, 0.5]}, + "south": {"uv": [18, 30], "uv_size": [0.5, 0.5]}, + "west": {"uv": [30, 18], "uv_size": [0.5, 0.5]}, + "up": {"uv": [19, 30], "uv_size": [0.5, 0.5]}, + "down": {"uv": [30, 19.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 8.45196, 0.32652], + "size": [0.7425, 0.46407, 0.27844], + "pivot": [0, 8.45196, 0.60496], + "rotation": [-10.75, 0, 0], + "uv": { + "north": {"uv": [20, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [30, 20], "uv_size": [0.5, 0.5]}, + "south": {"uv": [21, 30], "uv_size": [0.5, 0.5]}, + "west": {"uv": [30, 21], "uv_size": [0.5, 0.5]}, + "up": {"uv": [22, 30], "uv_size": [0.5, 0.5]}, + "down": {"uv": [30, 22.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 8.81507, 0.36667], + "size": [0.7425, 0.55687, 0.32484], + "pivot": [0, 8.90789, 0.69151], + "rotation": [-38.25, 0, 0], + "uv": { + "north": {"uv": [23, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [30, 23], "uv_size": [0.5, 0.5]}, + "south": {"uv": [24, 30], "uv_size": [0.5, 0.5]}, + "west": {"uv": [30, 24], "uv_size": [0.5, 0.5]}, + "up": {"uv": [25, 30], "uv_size": [0.5, 0.5]}, + "down": {"uv": [30, 25.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 8.97253, -1.50266], + "size": [0.7425, 0.26252, 0.35532], + "pivot": [0, 8.97253, -1.24015], + "rotation": [50, 0, 0], + "uv": { + "north": {"uv": [26, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [30, 26], "uv_size": [0.5, 0.5]}, + "south": {"uv": [27, 30], "uv_size": [0.5, 0.5]}, + "west": {"uv": [30, 27], "uv_size": [0.5, 0.5]}, + "up": {"uv": [28, 30], "uv_size": [0.5, 0.5]}, + "down": {"uv": [30, 28.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 10.99594, 3.55741], + "size": [0.37126, 0.18563, 1.485], + "pivot": [-0.18563, 10.99594, 3.55741], + "rotation": [-18, 0, 0], + "uv": { + "north": {"uv": [29, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [20, 7], "uv_size": [1.5, 0.5]}, + "south": {"uv": [30, 29], "uv_size": [0.5, 0.5]}, + "west": {"uv": [8, 20], "uv_size": [1.5, 0.5]}, + "up": {"uv": [10, 20], "uv_size": [0.5, 1.5]}, + "down": {"uv": [20, 11.5], "uv_size": [0.5, -1.5]} + } + }, + { + "origin": [-0.18563, 11.16298, 2.83394], + "size": [0.37126, 0.18562, 0.7657], + "pivot": [-0.18563, 11.16298, 2.83394], + "rotation": [-13, 0, 0], + "uv": { + "north": {"uv": [30, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [23, 17], "uv_size": [1, 0.5]}, + "south": {"uv": [0, 31], "uv_size": [0.5, 0.5]}, + "west": {"uv": [18, 23], "uv_size": [1, 0.5]}, + "up": {"uv": [23, 18], "uv_size": [0.5, 1]}, + "down": {"uv": [19, 24], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.18563, 11.21635, 2.25643], + "size": [0.37126, 0.18562, 0.60328], + "pivot": [-0.18563, 11.21635, 2.27963], + "rotation": [-5.5, 0, 0], + "uv": { + "north": {"uv": [31, 0], "uv_size": [0.5, 0.5]}, + "east": {"uv": [1, 31], "uv_size": [0.5, 0.5]}, + "south": {"uv": [31, 1], "uv_size": [0.5, 0.5]}, + "west": {"uv": [2, 31], "uv_size": [0.5, 0.5]}, + "up": {"uv": [31, 2], "uv_size": [0.5, 0.5]}, + "down": {"uv": [3, 31.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 11.12587, 1.54266], + "size": [0.37126, 0.18563, 0.76571], + "pivot": [-0.18563, 11.12587, 1.54266], + "rotation": [7, 0, 0], + "uv": { + "north": {"uv": [31, 3], "uv_size": [0.5, 0.5]}, + "east": {"uv": [23, 19], "uv_size": [1, 0.5]}, + "south": {"uv": [4, 31], "uv_size": [0.5, 0.5]}, + "west": {"uv": [20, 23], "uv_size": [1, 0.5]}, + "up": {"uv": [23, 20], "uv_size": [0.5, 1]}, + "down": {"uv": [21, 24], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.18563, 10.97959, 0.89357], + "size": [0.37126, 0.18563, 0.76571], + "pivot": [-0.18563, 10.60834, 0.89357], + "rotation": [12, 0, 0], + "uv": { + "north": {"uv": [31, 4], "uv_size": [0.5, 0.5]}, + "east": {"uv": [23, 21], "uv_size": [1, 0.5]}, + "south": {"uv": [5, 31], "uv_size": [0.5, 0.5]}, + "west": {"uv": [22, 23], "uv_size": [1, 0.5]}, + "up": {"uv": [23, 22], "uv_size": [0.5, 1]}, + "down": {"uv": [23, 24], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.18563, 10.9602, -0.58812], + "size": [0.37126, 0.18563, 0.7425], + "pivot": [-0.18563, 10.58895, -0.58812], + "rotation": [-3, 0, 0], + "uv": { + "north": {"uv": [31, 5], "uv_size": [0.5, 0.5]}, + "east": {"uv": [6, 31], "uv_size": [0.5, 0.5]}, + "south": {"uv": [31, 6], "uv_size": [0.5, 0.5]}, + "west": {"uv": [7, 31], "uv_size": [0.5, 0.5]}, + "up": {"uv": [31, 7], "uv_size": [0.5, 0.5]}, + "down": {"uv": [8, 31.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 10.92135, 0.15337], + "size": [0.37126, 0.18562, 0.7425], + "pivot": [-0.18563, 10.5501, 0.15337], + "rotation": [4.5, 0, 0], + "uv": { + "north": {"uv": [31, 8], "uv_size": [0.5, 0.5]}, + "east": {"uv": [9, 31], "uv_size": [0.5, 0.5]}, + "south": {"uv": [31, 9], "uv_size": [0.5, 0.5]}, + "west": {"uv": [10, 31], "uv_size": [0.5, 0.5]}, + "up": {"uv": [31, 10], "uv_size": [0.5, 0.5]}, + "down": {"uv": [11, 31.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 11.09792, -0.87267], + "size": [0.37126, 0.18563, 0.37125], + "pivot": [-0.18563, 11.09792, -1.24392], + "rotation": [-11.25, 0, 0], + "uv": { + "north": {"uv": [31, 11], "uv_size": [0.5, 0.5]}, + "east": {"uv": [12, 31], "uv_size": [0.5, 0.5]}, + "south": {"uv": [31, 12], "uv_size": [0.5, 0.5]}, + "west": {"uv": [13, 31], "uv_size": [0.5, 0.5]}, + "up": {"uv": [31, 13], "uv_size": [0.5, 0.5]}, + "down": {"uv": [14, 31.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 10.47231, 5.11271], + "size": [0.37126, 0.18562, 0.37125], + "pivot": [0, 10.65793, 5.48396], + "rotation": [60.75, 0, 0], + "uv": { + "north": {"uv": [31, 14], "uv_size": [0.5, 0.5]}, + "east": {"uv": [15, 31], "uv_size": [0.5, 0.5]}, + "south": {"uv": [31, 15], "uv_size": [0.5, 0.5]}, + "west": {"uv": [16, 31], "uv_size": [0.5, 0.5]}, + "up": {"uv": [31, 16], "uv_size": [0.5, 0.5]}, + "down": {"uv": [17, 31.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 10.55523, 4.855], + "size": [0.37126, 0.18562, 0.55688], + "pivot": [-0.18563, 10.18397, 4.855], + "rotation": [-8, 0, 0], + "uv": { + "north": {"uv": [31, 17], "uv_size": [0.5, 0.5]}, + "east": {"uv": [18, 31], "uv_size": [0.5, 0.5]}, + "south": {"uv": [31, 18], "uv_size": [0.5, 0.5]}, + "west": {"uv": [19, 31], "uv_size": [0.5, 0.5]}, + "up": {"uv": [31, 19], "uv_size": [0.5, 0.5]}, + "down": {"uv": [20, 31.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 9.63911, 5.27468], + "size": [0.37126, 0.92813, 0.37125], + "pivot": [0, 10.56724, 5.64593], + "rotation": [43.25, 0, 0], + "uv": { + "north": {"uv": [0, 24], "uv_size": [0.5, 1]}, + "east": {"uv": [24, 0], "uv_size": [0.5, 1]}, + "south": {"uv": [1, 24], "uv_size": [0.5, 1]}, + "west": {"uv": [24, 1], "uv_size": [0.5, 1]}, + "up": {"uv": [31, 20], "uv_size": [0.5, 0.5]}, + "down": {"uv": [21, 31.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 9.51996, 5.91061], + "size": [0.37126, 0.37125, 0.37125], + "pivot": [0, 9.89121, 6.28186], + "rotation": [-1.75, 0, 0], + "uv": { + "north": {"uv": [31, 21], "uv_size": [0.5, 0.5]}, + "east": {"uv": [22, 31], "uv_size": [0.5, 0.5]}, + "south": {"uv": [31, 22], "uv_size": [0.5, 0.5]}, + "west": {"uv": [23, 31], "uv_size": [0.5, 0.5]}, + "up": {"uv": [31, 23], "uv_size": [0.5, 0.5]}, + "down": {"uv": [24, 31.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 8.77764, 5.89927], + "size": [0.37126, 0.7425, 0.37125], + "pivot": [0, 9.52014, 6.27052], + "rotation": [-26.25, 0, 0], + "uv": { + "north": {"uv": [31, 24], "uv_size": [0.5, 0.5]}, + "east": {"uv": [25, 31], "uv_size": [0.5, 0.5]}, + "south": {"uv": [31, 25], "uv_size": [0.5, 0.5]}, + "west": {"uv": [26, 31], "uv_size": [0.5, 0.5]}, + "up": {"uv": [31, 26], "uv_size": [0.5, 0.5]}, + "down": {"uv": [27, 31.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 8.11171, 5.57087], + "size": [0.37126, 0.7425, 0.37125], + "pivot": [0, 8.85421, 5.94212], + "rotation": [-56.5, 0, 0], + "uv": { + "north": {"uv": [31, 27], "uv_size": [0.5, 0.5]}, + "east": {"uv": [28, 31], "uv_size": [0.5, 0.5]}, + "south": {"uv": [31, 28], "uv_size": [0.5, 0.5]}, + "west": {"uv": [29, 31], "uv_size": [0.5, 0.5]}, + "up": {"uv": [31, 29], "uv_size": [0.5, 0.5]}, + "down": {"uv": [30, 31.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18514, 9.42763, 5.53984], + "size": [0.37028, 0.5559, 0.37028], + "inflate": -0.001, + "pivot": [0, 9.89121, 6.28186], + "rotation": [-1.75, 0, 0], + "uv": { + "north": {"uv": [31, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [31, 31], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 32], "uv_size": [0.5, 0.5]}, + "west": {"uv": [32, 0], "uv_size": [0.5, 0.5]}, + "up": {"uv": [1, 32], "uv_size": [0.5, 0.5]}, + "down": {"uv": [32, 1.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 10.83631, -1.23804], + "size": [0.37126, 0.37125, 0.39444], + "pivot": [0, 11.20756, -0.8436], + "rotation": [16.25, 0, 0], + "uv": { + "north": {"uv": [2, 32], "uv_size": [0.5, 0.5]}, + "east": {"uv": [32, 2], "uv_size": [0.5, 0.5]}, + "south": {"uv": [3, 32], "uv_size": [0.5, 0.5]}, + "west": {"uv": [32, 3], "uv_size": [0.5, 0.5]}, + "up": {"uv": [4, 32], "uv_size": [0.5, 0.5]}, + "down": {"uv": [32, 4.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 9.14197, 1.92486], + "size": [0.7425, 0.24452, 0.38981], + "pivot": [0, 9.14197, 1.94342], + "rotation": [-38, 0, 0], + "uv": { + "north": {"uv": [5, 32], "uv_size": [0.5, 0.5]}, + "east": {"uv": [32, 5], "uv_size": [0.5, 0.5]}, + "south": {"uv": [6, 32], "uv_size": [0.5, 0.5]}, + "west": {"uv": [32, 6], "uv_size": [0.5, 0.5]}, + "up": {"uv": [7, 32], "uv_size": [0.5, 0.5]}, + "down": {"uv": [32, 7.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.37125, 8.99941, 3.26136], + "size": [0.7425, 0.24452, 0.38981], + "pivot": [0, 8.99941, 3.27992], + "rotation": [-38, 0, 0], + "uv": { + "north": {"uv": [8, 32], "uv_size": [0.5, 0.5]}, + "east": {"uv": [32, 8], "uv_size": [0.5, 0.5]}, + "south": {"uv": [9, 32], "uv_size": [0.5, 0.5]}, + "west": {"uv": [32, 9], "uv_size": [0.5, 0.5]}, + "up": {"uv": [10, 32], "uv_size": [0.5, 0.5]}, + "down": {"uv": [32, 10.5], "uv_size": [0.5, -0.5]} + } + } + ] + }, + { + "name": "bone2", + "parent": "weapon2", + "pivot": [0.04641, 11.37642, -1.81231], + "cubes": [ + { + "origin": [-0.18563, 9.69709, -2.70137], + "size": [0.37126, 0.37125, 0.71929], + "pivot": [0.04641, 10.06834, -2.70137], + "rotation": [-27.75, 0, 0], + "uv": { + "north": {"uv": [2, 24], "uv_size": [0.5, 0.5]}, + "east": {"uv": [24, 2], "uv_size": [0.5, 0.5]}, + "south": {"uv": [3, 24], "uv_size": [0.5, 0.5]}, + "west": {"uv": [24, 3], "uv_size": [0.5, 0.5]}, + "up": {"uv": [4, 24], "uv_size": [0.5, 0.5]}, + "down": {"uv": [24, 4.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.19096, 9.48049, -2.54382], + "size": [0.38192, 0.37125, 2.01867], + "pivot": [0.04108, 9.48049, -2.3814], + "rotation": [-74, 0, 0], + "uv": { + "north": {"uv": [5, 24], "uv_size": [0.5, 0.5]}, + "east": {"uv": [17, 12], "uv_size": [2, 0.5]}, + "south": {"uv": [24, 5], "uv_size": [0.5, 0.5]}, + "west": {"uv": [17, 13], "uv_size": [2, 0.5]}, + "up": {"uv": [17, 14], "uv_size": [0.5, 2]}, + "down": {"uv": [15, 19], "uv_size": [0.5, -2]} + } + }, + { + "origin": [-0.18563, 7.69616, -1.86975], + "size": [0.37126, 0.37125, 0.37125], + "pivot": [0.04641, 7.69616, -1.86975], + "rotation": [-29, 0, 0], + "uv": { + "north": {"uv": [6, 24], "uv_size": [0.5, 0.5]}, + "east": {"uv": [24, 6], "uv_size": [0.5, 0.5]}, + "south": {"uv": [7, 24], "uv_size": [0.5, 0.5]}, + "west": {"uv": [24, 7], "uv_size": [0.5, 0.5]}, + "up": {"uv": [8, 24], "uv_size": [0.5, 0.5]}, + "down": {"uv": [24, 8.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 7.51616, -1.54504], + "size": [0.37126, 0.37125, 0.34804], + "pivot": [0.04641, 7.51616, -1.54504], + "rotation": [8.5, 0, 0], + "uv": { + "north": {"uv": [9, 24], "uv_size": [0.5, 0.5]}, + "east": {"uv": [24, 9], "uv_size": [0.5, 0.5]}, + "south": {"uv": [10, 24], "uv_size": [0.5, 0.5]}, + "west": {"uv": [24, 10], "uv_size": [0.5, 0.5]}, + "up": {"uv": [11, 24], "uv_size": [0.5, 0.5]}, + "down": {"uv": [24, 11.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 7.51616, -1.197], + "size": [0.37126, 0.16635, 0.20325], + "pivot": [0.04641, 7.51616, -1.54504], + "rotation": [8.5, 0, 0], + "uv": { + "north": {"uv": [12, 24], "uv_size": [0.5, 0.5]}, + "east": {"uv": [24, 12], "uv_size": [0.5, 0.5]}, + "south": {"uv": [13, 24], "uv_size": [0.5, 0.5]}, + "west": {"uv": [24, 13], "uv_size": [0.5, 0.5]}, + "up": {"uv": [14, 24], "uv_size": [0.5, 0.5]}, + "down": {"uv": [24, 14.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 8.83098, -8.1719], + "size": [0.37126, 0.37124, 1.11375], + "pivot": [0.04641, 8.83098, -7.05815], + "rotation": [0.75, 0, 0], + "uv": { + "north": {"uv": [15, 24], "uv_size": [0.5, 0.5]}, + "east": {"uv": [20, 8], "uv_size": [1, 0.5]}, + "south": {"uv": [24, 15], "uv_size": [0.5, 0.5]}, + "west": {"uv": [11, 20], "uv_size": [1, 0.5]}, + "up": {"uv": [12, 20], "uv_size": [0.5, 1]}, + "down": {"uv": [13, 21], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.18563, 8.8164, -9.28555], + "size": [0.37126, 0.37125, 1.11374], + "pivot": [0.04641, 8.8164, -8.17181], + "rotation": [-4, 0, 0], + "uv": { + "north": {"uv": [16, 24], "uv_size": [0.5, 0.5]}, + "east": {"uv": [20, 13], "uv_size": [1, 0.5]}, + "south": {"uv": [24, 16], "uv_size": [0.5, 0.5]}, + "west": {"uv": [14, 20], "uv_size": [1, 0.5]}, + "up": {"uv": [20, 14], "uv_size": [0.5, 1]}, + "down": {"uv": [17, 21], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.18563, 8.89409, -10.95346], + "size": [0.37126, 0.37125, 1.67063], + "pivot": [0.04641, 8.89409, -9.28283], + "rotation": [-7.75, 0, 0], + "uv": { + "north": {"uv": [17, 24], "uv_size": [0.5, 0.5]}, + "east": {"uv": [19, 9], "uv_size": [1.5, 0.5]}, + "south": {"uv": [24, 17], "uv_size": [0.5, 0.5]}, + "west": {"uv": [19, 12], "uv_size": [1.5, 0.5]}, + "up": {"uv": [19, 13], "uv_size": [0.5, 1.5]}, + "down": {"uv": [15, 20.5], "uv_size": [0.5, -1.5]} + } + }, + { + "origin": [-0.18563, 9.69837, -6.87038], + "size": [0.37126, 0.37125, 4.19976], + "pivot": [0.04641, 9.69837, -2.67062], + "rotation": [4.75, 0, 0], + "uv": { + "north": {"uv": [18, 24], "uv_size": [0.5, 0.5]}, + "east": {"uv": [13, 12], "uv_size": [4, 0.5]}, + "south": {"uv": [24, 18], "uv_size": [0.5, 0.5]}, + "west": {"uv": [13, 13], "uv_size": [4, 0.5]}, + "up": {"uv": [13, 14], "uv_size": [0.5, 4]}, + "down": {"uv": [14, 18], "uv_size": [0.5, -4]} + } + }, + { + "origin": [-0.18514, 9.64749, -7.0842], + "size": [0.37028, 0.78794, 4.38442], + "inflate": -0.001, + "pivot": [0, 9.92545, -5.54168], + "rotation": [4.75, 0, 0], + "uv": { + "north": {"uv": [20, 17], "uv_size": [0.5, 1]}, + "east": {"uv": [5, 2], "uv_size": [4.5, 1]}, + "south": {"uv": [18, 20], "uv_size": [0.5, 1]}, + "west": {"uv": [5, 3], "uv_size": [4.5, 1]}, + "up": {"uv": [0, 8], "uv_size": [0.5, 4.5]}, + "down": {"uv": [1, 12.5], "uv_size": [0.5, -4.5]} + } + }, + { + "origin": [-0.18514, 9.32959, -9.8899], + "size": [0.37028, 0.73459, 2.80473], + "inflate": -0.001, + "pivot": [0, 9.92545, -5.54168], + "rotation": [4.75, 0, 0], + "uv": { + "north": {"uv": [20, 18], "uv_size": [0.5, 1]}, + "east": {"uv": [6, 6], "uv_size": [3, 1]}, + "south": {"uv": [19, 20], "uv_size": [0.5, 1]}, + "west": {"uv": [6, 7], "uv_size": [3, 1]}, + "up": {"uv": [12, 15], "uv_size": [0.5, 3]}, + "down": {"uv": [17, 3], "uv_size": [0.5, -3]} + } + }, + { + "origin": [-0.18514, 8.62656, -2.32754], + "size": [0.37028, 2.08732, 0.74153], + "inflate": -0.001, + "pivot": [0, 9.92545, -5.54168], + "rotation": [4.75, 0, 0], + "uv": { + "north": {"uv": [16, 17], "uv_size": [0.5, 2]}, + "east": {"uv": [17, 16], "uv_size": [0.5, 2]}, + "south": {"uv": [0, 18], "uv_size": [0.5, 2]}, + "west": {"uv": [18, 0], "uv_size": [0.5, 2]}, + "up": {"uv": [19, 24], "uv_size": [0.5, 0.5]}, + "down": {"uv": [24, 19.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18514, 9.55469, -2.69879], + "size": [0.37028, 1.06637, 0.37026], + "inflate": -0.001, + "pivot": [0, 9.92545, -5.54168], + "rotation": [4.75, 0, 0], + "uv": { + "north": {"uv": [20, 19], "uv_size": [0.5, 1]}, + "east": {"uv": [20, 20], "uv_size": [0.5, 1]}, + "south": {"uv": [0, 21], "uv_size": [0.5, 1]}, + "west": {"uv": [1, 21], "uv_size": [0.5, 1]}, + "up": {"uv": [20, 24], "uv_size": [0.5, 0.5]}, + "down": {"uv": [24, 20.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 9.03698, -7.75044], + "size": [0.37126, 0.37125, 0.48726], + "pivot": [0.04641, 9.40823, -7.26318], + "rotation": [72.25, 0, 0], + "uv": { + "north": {"uv": [21, 24], "uv_size": [0.5, 0.5]}, + "east": {"uv": [24, 21], "uv_size": [0.5, 0.5]}, + "south": {"uv": [22, 24], "uv_size": [0.5, 0.5]}, + "west": {"uv": [24, 22], "uv_size": [0.5, 0.5]}, + "up": {"uv": [23, 24], "uv_size": [0.5, 0.5]}, + "down": {"uv": [24, 23.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.19096, 9.36019, -7.11161], + "size": [0.38192, 0.37125, 0.48728], + "pivot": [0.04108, 9.36019, -6.74036], + "rotation": [39.75, 0, 0], + "uv": { + "north": {"uv": [24, 24], "uv_size": [0.5, 0.5]}, + "east": {"uv": [0, 25], "uv_size": [0.5, 0.5]}, + "south": {"uv": [25, 0], "uv_size": [0.5, 0.5]}, + "west": {"uv": [1, 25], "uv_size": [0.5, 0.5]}, + "up": {"uv": [25, 1], "uv_size": [0.5, 0.5]}, + "down": {"uv": [2, 25.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.04641, 7.99567, -8.2183], + "size": [0.09282, 0.83531, 1.16015], + "pivot": [0.18563, 8.83098, -7.05815], + "rotation": [0.75, 0, 0], + "uv": { + "north": {"uv": [2, 21], "uv_size": [0.5, 1]}, + "east": {"uv": [1, 18], "uv_size": [1, 1]}, + "south": {"uv": [3, 21], "uv_size": [0.5, 1]}, + "west": {"uv": [2, 18], "uv_size": [1, 1]}, + "up": {"uv": [21, 3], "uv_size": [0.5, 1]}, + "down": {"uv": [21, 5], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.04641, 8.20174, -7.73951], + "size": [0.09282, 0.37125, 0.48728], + "pivot": [-0.09282, 8.57299, -7.25223], + "rotation": [72.25, 0, 0], + "uv": { + "north": {"uv": [25, 2], "uv_size": [0.5, 0.5]}, + "east": {"uv": [3, 25], "uv_size": [0.5, 0.5]}, + "south": {"uv": [25, 3], "uv_size": [0.5, 0.5]}, + "west": {"uv": [4, 25], "uv_size": [0.5, 0.5]}, + "up": {"uv": [25, 4], "uv_size": [0.5, 0.5]}, + "down": {"uv": [5, 25.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.04641, 8.52494, -7.10067], + "size": [0.09282, 0.6497, 0.6729], + "pivot": [-0.09282, 8.52494, -6.72942], + "rotation": [39.75, 0, 0], + "uv": { + "north": {"uv": [25, 5], "uv_size": [0.5, 0.5]}, + "east": {"uv": [6, 25], "uv_size": [0.5, 0.5]}, + "south": {"uv": [25, 6], "uv_size": [0.5, 0.5]}, + "west": {"uv": [7, 25], "uv_size": [0.5, 0.5]}, + "up": {"uv": [25, 7], "uv_size": [0.5, 0.5]}, + "down": {"uv": [8, 25.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.04641, 8.86237, -6.8613], + "size": [0.09282, 0.83532, 4.66384], + "pivot": [-0.09282, 8.86237, -2.66152], + "rotation": [4.75, 0, 0], + "uv": { + "north": {"uv": [21, 5], "uv_size": [0.5, 1]}, + "east": {"uv": [5, 4], "uv_size": [4.5, 1]}, + "south": {"uv": [21, 6], "uv_size": [0.5, 1]}, + "west": {"uv": [5, 5], "uv_size": [4.5, 1]}, + "up": {"uv": [2, 8], "uv_size": [0.5, 4.5]}, + "down": {"uv": [3, 12.5], "uv_size": [0.5, -4.5]} + } + }, + { + "origin": [-0.01922, 8.16215, -7.21656], + "size": [0.06563, 0.06562, 0.48725], + "pivot": [0.04641, 8.22777, -6.97293], + "rotation": [65.64405, -42.33355, 16.95459], + "uv": { + "north": {"uv": [25, 8], "uv_size": [0.5, 0.5]}, + "east": {"uv": [9, 25], "uv_size": [0.5, 0.5]}, + "south": {"uv": [25, 9], "uv_size": [0.5, 0.5]}, + "west": {"uv": [10, 25], "uv_size": [0.5, 0.5]}, + "up": {"uv": [25, 10], "uv_size": [0.5, 0.5]}, + "down": {"uv": [11, 25.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.01922, 8.43707, -7.09261], + "size": [0.06563, 0.06562, 0.67288], + "pivot": [0.04641, 8.50269, -6.75617], + "rotation": [30.45955, -26.88182, 37.55459], + "uv": { + "north": {"uv": [25, 11], "uv_size": [0.5, 0.5]}, + "east": {"uv": [12, 25], "uv_size": [0.5, 0.5]}, + "south": {"uv": [25, 12], "uv_size": [0.5, 0.5]}, + "west": {"uv": [13, 25], "uv_size": [0.5, 0.5]}, + "up": {"uv": [25, 13], "uv_size": [0.5, 0.5]}, + "down": {"uv": [14, 25.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.01922, 8.64207, -6.85488], + "size": [0.06563, 0.06563, 4.66383], + "pivot": [0.04641, 8.7077, -4.52296], + "rotation": [3.36261, -3.35683, 44.90144], + "uv": { + "north": {"uv": [25, 14], "uv_size": [0.5, 0.5]}, + "east": {"uv": [4, 8], "uv_size": [4.5, 0.5]}, + "south": {"uv": [15, 25], "uv_size": [0.5, 0.5]}, + "west": {"uv": [4, 9], "uv_size": [4.5, 0.5]}, + "up": {"uv": [9, 6], "uv_size": [0.5, 4.5]}, + "down": {"uv": [10, 4.5], "uv_size": [0.5, -4.5]} + } + }, + { + "origin": [-0.04641, 7.98108, -9.33196], + "size": [0.09282, 0.83532, 1.18337], + "pivot": [0.18563, 8.8164, -8.17181], + "rotation": [-4, 0, 0], + "uv": { + "north": {"uv": [8, 21], "uv_size": [0.5, 1]}, + "east": {"uv": [18, 2], "uv_size": [1, 1]}, + "south": {"uv": [21, 8], "uv_size": [0.5, 1]}, + "west": {"uv": [3, 18], "uv_size": [1, 1]}, + "up": {"uv": [9, 21], "uv_size": [0.5, 1]}, + "down": {"uv": [21, 10], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.04641, 8.05878, -11.18549], + "size": [0.09282, 0.83531, 1.92587], + "pivot": [0.18563, 8.89409, -9.28283], + "rotation": [-7.75, 0, 0], + "uv": { + "north": {"uv": [21, 10], "uv_size": [0.5, 1]}, + "east": {"uv": [15, 5], "uv_size": [2, 1]}, + "south": {"uv": [11, 21], "uv_size": [0.5, 1]}, + "west": {"uv": [15, 14], "uv_size": [2, 1]}, + "up": {"uv": [4, 18], "uv_size": [0.5, 2]}, + "down": {"uv": [5, 20], "uv_size": [0.5, -2]} + } + }, + { + "origin": [-0.04641, 8.32298, -12.58013], + "size": [0.09282, 0.37125, 1.29938], + "pivot": [0, 8.32298, -11.28075], + "rotation": [-42.75, 0, 0], + "uv": { + "north": {"uv": [25, 15], "uv_size": [0.5, 0.5]}, + "east": {"uv": [19, 15], "uv_size": [1.5, 0.5]}, + "south": {"uv": [16, 25], "uv_size": [0.5, 0.5]}, + "west": {"uv": [19, 16], "uv_size": [1.5, 0.5]}, + "up": {"uv": [16, 19], "uv_size": [0.5, 1.5]}, + "down": {"uv": [19, 18.5], "uv_size": [0.5, -1.5]} + } + }, + { + "origin": [-0.04641, 9.3824, -12.17928], + "size": [0.09282, 0.18563, 0.78891], + "pivot": [-0.09282, 9.40561, -11.32075], + "rotation": [12.25, 0, 0], + "uv": { + "north": {"uv": [25, 17], "uv_size": [0.5, 0.5]}, + "east": {"uv": [21, 13], "uv_size": [1, 0.5]}, + "south": {"uv": [18, 25], "uv_size": [0.5, 0.5]}, + "west": {"uv": [14, 21], "uv_size": [1, 0.5]}, + "up": {"uv": [21, 14], "uv_size": [0.5, 1]}, + "down": {"uv": [15, 22], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.04641, 9.56803, -12.3649], + "size": [0.09282, 0.27843, 0.97453], + "pivot": [-0.09282, 9.40561, -11.32075], + "rotation": [12.25, 0, 0], + "uv": { + "north": {"uv": [25, 18], "uv_size": [0.5, 0.5]}, + "east": {"uv": [21, 15], "uv_size": [1, 0.5]}, + "south": {"uv": [19, 25], "uv_size": [0.5, 0.5]}, + "west": {"uv": [16, 21], "uv_size": [1, 0.5]}, + "up": {"uv": [21, 16], "uv_size": [0.5, 1]}, + "down": {"uv": [17, 22], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.04641, 9.84646, -12.4345], + "size": [0.09282, 0.11603, 1.04413], + "pivot": [-0.09282, 9.40561, -11.32075], + "rotation": [12.25, 0, 0], + "uv": { + "north": {"uv": [25, 19], "uv_size": [0.5, 0.5]}, + "east": {"uv": [21, 17], "uv_size": [1, 0.5]}, + "south": {"uv": [20, 25], "uv_size": [0.5, 0.5]}, + "west": {"uv": [18, 21], "uv_size": [1, 0.5]}, + "up": {"uv": [21, 18], "uv_size": [0.5, 1]}, + "down": {"uv": [19, 22], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.04641, 9.40561, -11.39037], + "size": [0.09282, 0.55688, 4.66384], + "pivot": [-0.09282, 9.40561, -11.32075], + "rotation": [12.25, 0, 0], + "uv": { + "north": {"uv": [25, 20], "uv_size": [0.5, 0.5]}, + "east": {"uv": [4, 10], "uv_size": [4.5, 0.5]}, + "south": {"uv": [21, 25], "uv_size": [0.5, 0.5]}, + "west": {"uv": [10, 5], "uv_size": [4.5, 0.5]}, + "up": {"uv": [10, 6], "uv_size": [0.5, 4.5]}, + "down": {"uv": [11, 4.5], "uv_size": [0.5, -4.5]} + } + }, + { + "origin": [-0.04641, 9.99648, -7.41336], + "size": [0.09282, 0.92813, 0.46406], + "pivot": [0.0232, 10.92461, -6.9493], + "rotation": [61.75, 0, 0], + "uv": { + "north": {"uv": [21, 19], "uv_size": [0.5, 1]}, + "east": {"uv": [20, 21], "uv_size": [0.5, 1]}, + "south": {"uv": [21, 20], "uv_size": [0.5, 1]}, + "west": {"uv": [21, 21], "uv_size": [0.5, 1]}, + "up": {"uv": [25, 21], "uv_size": [0.5, 0.5]}, + "down": {"uv": [22, 25.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.04641, 9.09473, -11.84725], + "size": [0.09282, 0.51047, 0.64968], + "pivot": [0, 9.6052, -12.49695], + "rotation": [-11.25, 0, 0], + "uv": { + "north": {"uv": [25, 22], "uv_size": [0.5, 0.5]}, + "east": {"uv": [23, 25], "uv_size": [0.5, 0.5]}, + "south": {"uv": [25, 23], "uv_size": [0.5, 0.5]}, + "west": {"uv": [24, 25], "uv_size": [0.5, 0.5]}, + "up": {"uv": [25, 24], "uv_size": [0.5, 0.5]}, + "down": {"uv": [25, 25.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.04641, 8.32298, -13.14001], + "size": [0.09282, 0.17493, 0.55988], + "pivot": [0, 8.32298, -11.28075], + "rotation": [-42.75, 0, 0], + "uv": { + "north": {"uv": [0, 26], "uv_size": [0.5, 0.5]}, + "east": {"uv": [26, 0], "uv_size": [0.5, 0.5]}, + "south": {"uv": [1, 26], "uv_size": [0.5, 0.5]}, + "west": {"uv": [26, 1], "uv_size": [0.5, 0.5]}, + "up": {"uv": [2, 26], "uv_size": [0.5, 0.5]}, + "down": {"uv": [26, 2.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.04641, 8.32298, -11.28075], + "size": [0.09282, 0.85852, 0.27843], + "pivot": [0, 8.32298, -11.28075], + "rotation": [4.75, 0, 0], + "uv": { + "north": {"uv": [0, 22], "uv_size": [0.5, 1]}, + "east": {"uv": [22, 0], "uv_size": [0.5, 1]}, + "south": {"uv": [1, 22], "uv_size": [0.5, 1]}, + "west": {"uv": [22, 1], "uv_size": [0.5, 1]}, + "up": {"uv": [3, 26], "uv_size": [0.5, 0.5]}, + "down": {"uv": [26, 3.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.01922, 7.92252, -8.20731], + "size": [0.06563, 0.06563, 1.16015], + "pivot": [0.04641, 7.98815, -7.62725], + "rotation": [0.53035, -0.53032, 44.99755], + "uv": { + "north": {"uv": [4, 26], "uv_size": [0.5, 0.5]}, + "east": {"uv": [2, 22], "uv_size": [1, 0.5]}, + "south": {"uv": [26, 4], "uv_size": [0.5, 0.5]}, + "west": {"uv": [22, 2], "uv_size": [1, 0.5]}, + "up": {"uv": [3, 22], "uv_size": [0.5, 1]}, + "down": {"uv": [22, 4], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.01922, 7.95715, -9.38884], + "size": [0.06563, 0.06563, 1.18336], + "pivot": [0.04641, 8.02278, -8.79715], + "rotation": [-2.83073, 2.82728, 44.93013], + "uv": { + "north": {"uv": [5, 26], "uv_size": [0.5, 0.5]}, + "east": {"uv": [4, 22], "uv_size": [1, 0.5]}, + "south": {"uv": [26, 5], "uv_size": [0.5, 0.5]}, + "west": {"uv": [22, 4], "uv_size": [1, 0.5]}, + "up": {"uv": [5, 22], "uv_size": [0.5, 1]}, + "down": {"uv": [22, 6], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.01922, 8.1275, -11.28955], + "size": [0.06563, 0.06564, 1.92585], + "pivot": [0.04641, 8.19314, -10.32661], + "rotation": [-5.49682, 5.4717, 44.73713], + "uv": { + "north": {"uv": [6, 26], "uv_size": [0.5, 0.5]}, + "east": {"uv": [18, 6], "uv_size": [2, 0.5]}, + "south": {"uv": [26, 6], "uv_size": [0.5, 0.5]}, + "west": {"uv": [18, 7], "uv_size": [2, 0.5]}, + "up": {"uv": [6, 18], "uv_size": [0.5, 2]}, + "down": {"uv": [18, 10], "uv_size": [0.5, -2]} + } + }, + { + "origin": [-0.01922, 8.69837, -12.9674], + "size": [0.06563, 0.06562, 1.85925], + "pivot": [0.04641, 8.76399, -11.75785], + "rotation": [-33.17035, 28.6844, 36.29068], + "uv": { + "north": {"uv": [7, 26], "uv_size": [0.5, 0.5]}, + "east": {"uv": [18, 10], "uv_size": [2, 0.5]}, + "south": {"uv": [26, 7], "uv_size": [0.5, 0.5]}, + "west": {"uv": [18, 11], "uv_size": [2, 0.5]}, + "up": {"uv": [12, 18], "uv_size": [0.5, 2]}, + "down": {"uv": [13, 20], "uv_size": [0.5, -2]} + } + }, + { + "origin": [-0.18563, 8.89409, -11.37112], + "size": [0.37126, 0.23204, 0.41766], + "pivot": [0.04641, 8.89409, -9.28283], + "rotation": [-7.75, 0, 0], + "uv": { + "north": {"uv": [8, 26], "uv_size": [0.5, 0.5]}, + "east": {"uv": [26, 8], "uv_size": [0.5, 0.5]}, + "south": {"uv": [9, 26], "uv_size": [0.5, 0.5]}, + "west": {"uv": [26, 9], "uv_size": [0.5, 0.5]}, + "up": {"uv": [10, 26], "uv_size": [0.5, 0.5]}, + "down": {"uv": [26, 10.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 9.18757, -11.4001], + "size": [0.37126, 0.21804, 1.00747], + "pivot": [0.04641, 9.40561, -11.32075], + "rotation": [12.25, 0, 0], + "uv": { + "north": {"uv": [11, 26], "uv_size": [0.5, 0.5]}, + "east": {"uv": [6, 22], "uv_size": [1, 0.5]}, + "south": {"uv": [26, 11], "uv_size": [0.5, 0.5]}, + "west": {"uv": [22, 6], "uv_size": [1, 0.5]}, + "up": {"uv": [7, 22], "uv_size": [0.5, 1]}, + "down": {"uv": [22, 8], "uv_size": [0.5, -1]} + } + }, + { + "origin": [-0.18563, 9.03436, -10.39263], + "size": [0.37126, 0.37125, 4.31579], + "pivot": [0.04641, 9.40561, -11.32075], + "rotation": [12.25, 0, 0], + "uv": { + "north": {"uv": [12, 26], "uv_size": [0.5, 0.5]}, + "east": {"uv": [4, 11], "uv_size": [4.5, 0.5]}, + "south": {"uv": [26, 12], "uv_size": [0.5, 0.5]}, + "west": {"uv": [11, 6], "uv_size": [4.5, 0.5]}, + "up": {"uv": [11, 7], "uv_size": [0.5, 4.5]}, + "down": {"uv": [9, 15.5], "uv_size": [0.5, -4.5]} + } + }, + { + "origin": [-0.18563, 10.147, -6.56751], + "size": [0.37126, 0.37125, 0.37125], + "pivot": [0.04641, 10.51825, -6.19626], + "rotation": [82.25, 0, 0], + "uv": { + "north": {"uv": [13, 26], "uv_size": [0.5, 0.5]}, + "east": {"uv": [26, 13], "uv_size": [0.5, 0.5]}, + "south": {"uv": [14, 26], "uv_size": [0.5, 0.5]}, + "west": {"uv": [26, 14], "uv_size": [0.5, 0.5]}, + "up": {"uv": [15, 26], "uv_size": [0.5, 0.5]}, + "down": {"uv": [26, 15.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 9.35783, -5.87844], + "size": [0.37126, 0.7425, 0.37125], + "pivot": [0.04641, 10.10033, -5.87844], + "rotation": [92.25, 0, 0], + "uv": { + "north": {"uv": [16, 26], "uv_size": [0.5, 0.5]}, + "east": {"uv": [26, 16], "uv_size": [0.5, 0.5]}, + "south": {"uv": [17, 26], "uv_size": [0.5, 0.5]}, + "west": {"uv": [26, 17], "uv_size": [0.5, 0.5]}, + "up": {"uv": [18, 26], "uv_size": [0.5, 0.5]}, + "down": {"uv": [26, 18.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 9.38698, -5.13653], + "size": [0.37126, 0.7425, 0.37125], + "pivot": [0.04641, 10.12948, -5.13653], + "rotation": [97.75, 0, 0], + "uv": { + "north": {"uv": [19, 26], "uv_size": [0.5, 0.5]}, + "east": {"uv": [26, 19], "uv_size": [0.5, 0.5]}, + "south": {"uv": [20, 26], "uv_size": [0.5, 0.5]}, + "west": {"uv": [26, 20], "uv_size": [0.5, 0.5]}, + "up": {"uv": [21, 26], "uv_size": [0.5, 0.5]}, + "down": {"uv": [26, 21.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 8.37336, -4.40079], + "size": [0.37126, 1.85625, 0.37125], + "pivot": [0.04641, 10.22961, -4.40079], + "rotation": [105, 0, 0], + "uv": { + "north": {"uv": [14, 18], "uv_size": [0.5, 2]}, + "east": {"uv": [18, 14], "uv_size": [0.5, 2]}, + "south": {"uv": [18, 16], "uv_size": [0.5, 2]}, + "west": {"uv": [17, 18], "uv_size": [0.5, 2]}, + "up": {"uv": [22, 26], "uv_size": [0.5, 0.5]}, + "down": {"uv": [26, 22.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 10.33879, -2.60782], + "size": [0.37126, 0.37125, 0.37125], + "pivot": [0.04641, 10.71004, -2.60782], + "rotation": [125, 0, 0], + "uv": { + "north": {"uv": [23, 26], "uv_size": [0.5, 0.5]}, + "east": {"uv": [26, 23], "uv_size": [0.5, 0.5]}, + "south": {"uv": [24, 26], "uv_size": [0.5, 0.5]}, + "west": {"uv": [26, 24], "uv_size": [0.5, 0.5]}, + "up": {"uv": [25, 26], "uv_size": [0.5, 0.5]}, + "down": {"uv": [26, 25.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 10.99505, -2.88789], + "size": [0.37126, 0.23203, 0.37126], + "pivot": [0.04641, 11.22708, -2.51663], + "rotation": [90, 0, 0], + "uv": { + "north": {"uv": [26, 26], "uv_size": [0.5, 0.5]}, + "east": {"uv": [0, 27], "uv_size": [0.5, 0.5]}, + "south": {"uv": [27, 0], "uv_size": [0.5, 0.5]}, + "west": {"uv": [1, 27], "uv_size": [0.5, 0.5]}, + "up": {"uv": [27, 1], "uv_size": [0.5, 0.5]}, + "down": {"uv": [2, 27.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 10.39178, -2.2846], + "size": [0.37126, 0.46405, 0.37125], + "pivot": [0.04641, 10.85583, -2.2846], + "rotation": [112.5, 0, 0], + "uv": { + "north": {"uv": [27, 2], "uv_size": [0.5, 0.5]}, + "east": {"uv": [3, 27], "uv_size": [0.5, 0.5]}, + "south": {"uv": [27, 3], "uv_size": [0.5, 0.5]}, + "west": {"uv": [4, 27], "uv_size": [0.5, 0.5]}, + "up": {"uv": [27, 4], "uv_size": [0.5, 0.5]}, + "down": {"uv": [5, 27.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.19096, 11.19079, -2.36918], + "size": [0.38192, 0.18563, 0.37125], + "pivot": [0.04108, 11.37642, -1.99793], + "rotation": [90, 0, 0], + "uv": { + "north": {"uv": [27, 5], "uv_size": [0.5, 0.5]}, + "east": {"uv": [6, 27], "uv_size": [0.5, 0.5]}, + "south": {"uv": [27, 6], "uv_size": [0.5, 0.5]}, + "west": {"uv": [7, 27], "uv_size": [0.5, 0.5]}, + "up": {"uv": [27, 7], "uv_size": [0.5, 0.5]}, + "down": {"uv": [8, 27.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 10.72673, -2.18356], + "size": [0.37126, 0.64969, 0.37125], + "pivot": [0.04641, 11.37642, -1.81231], + "rotation": [67.5, 0, 0], + "uv": { + "north": {"uv": [27, 8], "uv_size": [0.5, 0.5]}, + "east": {"uv": [9, 27], "uv_size": [0.5, 0.5]}, + "south": {"uv": [27, 9], "uv_size": [0.5, 0.5]}, + "west": {"uv": [10, 27], "uv_size": [0.5, 0.5]}, + "up": {"uv": [27, 10], "uv_size": [0.5, 0.5]}, + "down": {"uv": [11, 27.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.1803, 10.78481, -3.58166], + "size": [0.3606, 0.37125, 2.41313], + "pivot": [0.00533, 10.78481, -1.35416], + "rotation": [85.75, 0, 0], + "uv": { + "north": {"uv": [27, 11], "uv_size": [0.5, 0.5]}, + "east": {"uv": [17, 3], "uv_size": [2.5, 0.5]}, + "south": {"uv": [12, 27], "uv_size": [0.5, 0.5]}, + "west": {"uv": [4, 17], "uv_size": [2.5, 0.5]}, + "up": {"uv": [7, 17], "uv_size": [0.5, 2.5]}, + "down": {"uv": [17, 9.5], "uv_size": [0.5, -2.5]} + } + }, + { + "origin": [-0.1803, 8.21969, -2.26071], + "size": [0.3606, 0.37125, 0.37125], + "pivot": [0.00533, 8.59094, -1.88946], + "rotation": [98.25, 0, 0], + "uv": { + "north": {"uv": [27, 12], "uv_size": [0.5, 0.5]}, + "east": {"uv": [13, 27], "uv_size": [0.5, 0.5]}, + "south": {"uv": [27, 13], "uv_size": [0.5, 0.5]}, + "west": {"uv": [14, 27], "uv_size": [0.5, 0.5]}, + "up": {"uv": [27, 14], "uv_size": [0.5, 0.5]}, + "down": {"uv": [15, 27.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 7.85229, -2.20744], + "size": [0.37126, 0.37125, 0.37125], + "pivot": [0, 8.22354, -1.83619], + "rotation": [118.25, 0, 0], + "uv": { + "north": {"uv": [27, 15], "uv_size": [0.5, 0.5]}, + "east": {"uv": [16, 27], "uv_size": [0.5, 0.5]}, + "south": {"uv": [27, 16], "uv_size": [0.5, 0.5]}, + "west": {"uv": [17, 27], "uv_size": [0.5, 0.5]}, + "up": {"uv": [27, 17], "uv_size": [0.5, 0.5]}, + "down": {"uv": [18, 27.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.18563, 7.52525, -2.19414], + "size": [0.37126, 0.27843, 0.53367], + "pivot": [0, 7.89649, -1.66047], + "rotation": [133.25, 0, 0], + "uv": { + "north": {"uv": [27, 18], "uv_size": [0.5, 0.5]}, + "east": {"uv": [19, 27], "uv_size": [0.5, 0.5]}, + "south": {"uv": [27, 19], "uv_size": [0.5, 0.5]}, + "west": {"uv": [20, 27], "uv_size": [0.5, 0.5]}, + "up": {"uv": [27, 20], "uv_size": [0.5, 0.5]}, + "down": {"uv": [21, 27.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.25988, 11.82192, -1.81231], + "size": [0.51976, 0.22275, 0.22275], + "pivot": [1.22512, 11.82192, -2.92606], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [27, 21], "uv_size": [0.5, 0.5]}, + "east": {"uv": [22, 27], "uv_size": [0.5, 0.5]}, + "south": {"uv": [27, 22], "uv_size": [0.5, 0.5]}, + "west": {"uv": [23, 27], "uv_size": [0.5, 0.5]}, + "up": {"uv": [27, 23], "uv_size": [0.5, 0.5]}, + "down": {"uv": [24, 27.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-0.4455, 10.70817, -0.47581], + "size": [0.891, 0.37125, 0.37125], + "pivot": [1.0395, 10.70817, -1.44106], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [8, 22], "uv_size": [1, 0.5]}, + "east": {"uv": [27, 24], "uv_size": [0.5, 0.5]}, + "south": {"uv": [22, 8], "uv_size": [1, 0.5]}, + "west": {"uv": [25, 27], "uv_size": [0.5, 0.5]}, + "up": {"uv": [9, 22], "uv_size": [1, 0.5]}, + "down": {"uv": [22, 9.5], "uv_size": [1, -0.5]} + } + }, + { + "origin": [-0.4455, 10.8824, 1.41211], + "size": [0.891, 0.37125, 0.37125], + "pivot": [1.0395, 10.8824, 0.44686], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [10, 22], "uv_size": [1, 0.5]}, + "east": {"uv": [27, 25], "uv_size": [0.5, 0.5]}, + "south": {"uv": [22, 10], "uv_size": [1, 0.5]}, + "west": {"uv": [26, 27], "uv_size": [0.5, 0.5]}, + "up": {"uv": [11, 22], "uv_size": [1, 0.5]}, + "down": {"uv": [22, 11.5], "uv_size": [1, -0.5]} + } + }, + { + "origin": [-0.25988, 10.47057, 6.07304], + "size": [0.51976, 0.297, 0.297], + "pivot": [0.85387, 10.47057, 5.10779], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [27, 26], "uv_size": [0.5, 0.5]}, + "east": {"uv": [27, 27], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 28], "uv_size": [0.5, 0.5]}, + "west": {"uv": [28, 0], "uv_size": [0.5, 0.5]}, + "up": {"uv": [1, 28], "uv_size": [0.5, 0.5]}, + "down": {"uv": [28, 1.5], "uv_size": [0.5, -0.5]} + } + } + ] + }, + { + "name": "bone3", + "parent": "weapon2", + "pivot": [0.18563, 9.38877, -11.39831], + "cubes": [ + { + "origin": [-0.04641, 7.98815, -8.16091], + "size": [0.09282, 0.84684, 1.11375], + "pivot": [0.04641, 7.98815, -7.62725], + "rotation": [0.7398, -0.1233, 9.46153], + "uv": { + "north": {"uv": [12, 22], "uv_size": [0.5, 1]}, + "east": {"uv": [18, 18], "uv_size": [1, 1]}, + "south": {"uv": [22, 12], "uv_size": [0.5, 1]}, + "west": {"uv": [19, 0], "uv_size": [1, 1]}, + "up": {"uv": [13, 22], "uv_size": [0.5, 1]}, + "down": {"uv": [22, 14], "uv_size": [0.5, -1]} + } + }, + { + "origin": [0.18563, 7.97054, -8.17181], + "size": [0, 0.84587, 0.04063], + "pivot": [0.18563, 8.81641, -8.17181], + "rotation": [-2.0102, -0.1233, 9.46153], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [14, 22], "uv_size": [0.5, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [22, 14], "uv_size": [0.5, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0.04641, 8.02278, -9.34243], + "size": [0, 0.84684, 1.11375], + "pivot": [0.04641, 8.02278, -8.79715], + "rotation": [-3.94575, 0.65708, 9.43969], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [1, 19], "uv_size": [1, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [19, 1], "uv_size": [1, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 1]}, + "down": {"uv": [0, 1], "uv_size": [0, -1]} + } + }, + { + "origin": [0.18563, 7.97008, -8.20136], + "size": [0, 0.84633, 0.02955], + "pivot": [0.18563, 8.81641, -8.17181], + "rotation": [-1.94575, 0.65708, 9.43969], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [15, 22], "uv_size": [0.5, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [22, 15], "uv_size": [0.5, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0.18563, 8.04778, -9.28283], + "size": [0, 0.84631, 0.02954], + "pivot": [0.18563, 8.89409, -9.28283], + "rotation": [-5.94575, 0.65708, 9.43969], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [16, 22], "uv_size": [0.5, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [22, 16], "uv_size": [0.5, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0.04641, 8.19314, -11.28955], + "size": [0, 0.84682, 1.90265], + "pivot": [0.04641, 8.19314, -10.32661], + "rotation": [-7.64581, 1.27031, 9.37743], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [15, 15], "uv_size": [2, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [16, 6], "uv_size": [2, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 2]}, + "down": {"uv": [0, 2], "uv_size": [0, -2]} + } + }, + { + "origin": [0.18563, 8.04765, -9.3087], + "size": [0, 0.84644, 0.02587], + "pivot": [0.18563, 8.89409, -9.28283], + "rotation": [-5.89581, 1.27031, 9.37743], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [17, 22], "uv_size": [0.5, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [22, 17], "uv_size": [0.5, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0.04641, 9.0003, -11.46849], + "size": [0, 0.03966, 0.17894], + "pivot": [0.04641, 8.19314, -10.32661], + "rotation": [-7.64581, 1.27031, 9.37743], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [2, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 2], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0.04641, 8.32298, -11.28075], + "size": [0, 0.82676, 0.18329], + "pivot": [0.04641, 8.32298, -11.28075], + "rotation": [4.85419, 1.27031, 9.37743], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [18, 22], "uv_size": [0.5, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [22, 18], "uv_size": [0.5, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0.18563, 9.19165, -12.59105], + "size": [0, 0.18563, 1.02094], + "pivot": [0.18563, 9.37728, -11.57011], + "rotation": [-17.69509, 9.14943, 10.03401], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [19, 22], "uv_size": [1, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [22, 19], "uv_size": [1, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 1]}, + "down": {"uv": [0, 1], "uv_size": [0, -1]} + } + }, + { + "origin": [0.18563, 8.98282, -12.17339], + "size": [0, 0.20883, 0.60328], + "pivot": [0.18563, 9.37728, -11.57011], + "rotation": [-17.69509, 9.14943, 10.03401], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [3, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 3], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0.18563, 8.50281, -11.53766], + "size": [0, 0.67289, 0.18563], + "pivot": [0.18563, 9.1757, -11.35203], + "rotation": [4.80491, 9.14943, 10.03401], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [4, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 4], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0.18563, 8.68844, -11.65369], + "size": [0, 0.34805, 0.11603], + "pivot": [0.18563, 9.1757, -11.35203], + "rotation": [4.80491, 9.14943, 10.03401], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [5, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 5], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0.18563, 8.38679, -11.44485], + "size": [0, 0.11602, 0.09282], + "pivot": [0.18563, 9.1757, -11.35203], + "rotation": [4.80491, 9.14943, 10.03401], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [6, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 6], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0.04641, 8.92642, -12.03628], + "size": [0, 0.43188, 0.29696], + "pivot": [0.04641, 8.76399, -11.75785], + "rotation": [-41.94509, 9.14943, 10.03401], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [7, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 7], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0.04641, 8.76399, -12.9644], + "size": [0, 0.17666, 1.60101], + "pivot": [0.04641, 8.76399, -11.75785], + "rotation": [-41.94509, 9.14943, 10.03401], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [18, 19], "uv_size": [1.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [0, 20], "uv_size": [1.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 1.5]}, + "down": {"uv": [0, 1.5], "uv_size": [0, -1.5]} + } + }, + { + "origin": [0.04641, 8.76399, -11.36339], + "size": [0, 0.06065, 0.25524], + "pivot": [0.04641, 8.76399, -11.75785], + "rotation": [-41.94509, 9.14943, 10.03401], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [8, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 8], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0.04641, 9.68505, -12.46958], + "size": [0, 0.13921, 0.97454], + "pivot": [0.04641, 9.82426, -12.01713], + "rotation": [11.84458, 3.14802, -14.67336], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [20, 22], "uv_size": [1, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [22, 20], "uv_size": [1, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 1]}, + "down": {"uv": [0, 1], "uv_size": [0, -1]} + } + }, + { + "origin": [0.18563, 9.36558, -12.34963], + "size": [0, 0.20882, 0.95132], + "pivot": [0.18563, 9.38877, -11.39831], + "rotation": [-13.10518, 2.94978, -13.72888], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [21, 22], "uv_size": [1, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [22, 21], "uv_size": [1, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 1]}, + "down": {"uv": [0, 1], "uv_size": [0, -1]} + } + }, + { + "origin": [0.18563, 9.5744, -12.02479], + "size": [0, 0.11603, 0.13922], + "pivot": [0.18563, 9.38877, -11.39831], + "rotation": [-13.10518, 2.94978, -13.72888], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [9, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 9], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [0.18563, 9.5744, -11.88557], + "size": [0, 0.20883, 0.48726], + "pivot": [0.18563, 9.38877, -11.39831], + "rotation": [-13.10518, 2.94978, -13.72888], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [10, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 10], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.04641, 9.92473, -11.57718], + "size": [0.09282, 0.57401, 4.67358], + "pivot": [0.04641, 10.49874, -8.91067], + "rotation": [11.89482, 2.94978, -13.72888], + "uv": { + "north": {"uv": [11, 28], "uv_size": [0.5, 0.5]}, + "east": {"uv": [12, 0], "uv_size": [4.5, 0.5]}, + "south": {"uv": [28, 11], "uv_size": [0.5, 0.5]}, + "west": {"uv": [12, 1], "uv_size": [4.5, 0.5]}, + "up": {"uv": [10, 11], "uv_size": [0.5, 4.5]}, + "down": {"uv": [4, 16.5], "uv_size": [0.5, -4.5]} + } + }, + { + "origin": [-0.13922, 9.92473, -11.57718], + "size": [0.09281, 0.20276, 4.67358], + "pivot": [0.04641, 10.49874, -8.91067], + "rotation": [11.89482, 2.94978, -13.72888], + "uv": { + "north": {"uv": [12, 28], "uv_size": [0.5, 0.5]}, + "east": {"uv": [12, 2], "uv_size": [4.5, 0.5]}, + "south": {"uv": [28, 12], "uv_size": [0.5, 0.5]}, + "west": {"uv": [12, 3], "uv_size": [4.5, 0.5]}, + "up": {"uv": [5, 12], "uv_size": [0.5, 4.5]}, + "down": {"uv": [6, 16.5], "uv_size": [0.5, -4.5]} + } + }, + { + "origin": [0.18563, 9.17995, -12.14081], + "size": [0, 0.20882, 0.81212], + "pivot": [0.18563, 9.38877, -11.39831], + "rotation": [-7.60308, 9.41798, -1.25129], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [22, 22], "uv_size": [1, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [0, 23], "uv_size": [1, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 1]}, + "down": {"uv": [0, 1], "uv_size": [0, -1]} + } + }, + { + "origin": [-0.18563, 9.17995, -12.14081], + "size": [0, 0.20882, 0.81212], + "pivot": [-0.18563, 9.38877, -11.39831], + "rotation": [-7.6031, -9.418, 1.2513], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [23, 0], "uv_size": [1, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [1, 23], "uv_size": [1, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 1]}, + "down": {"uv": [0, 1], "uv_size": [0, -1]} + } + }, + { + "origin": [0.04641, 9.92473, -11.57718], + "size": [0.09281, 0.20276, 4.67358], + "pivot": [-0.04641, 10.49874, -8.91067], + "rotation": [11.8948, -2.9498, 13.7289], + "uv": { + "north": {"uv": [13, 28], "uv_size": [0.5, 0.5]}, + "east": {"uv": [12, 4], "uv_size": [4.5, 0.5]}, + "south": {"uv": [28, 13], "uv_size": [0.5, 0.5]}, + "west": {"uv": [12, 7], "uv_size": [4.5, 0.5]}, + "up": {"uv": [7, 12], "uv_size": [0.5, 4.5]}, + "down": {"uv": [8, 16.5], "uv_size": [0.5, -4.5]} + } + }, + { + "origin": [-0.04641, 9.92473, -11.57718], + "size": [0.09282, 0.57401, 4.67358], + "pivot": [-0.04641, 10.49874, -8.91067], + "rotation": [11.8948, -2.9498, 13.7289], + "uv": { + "north": {"uv": [14, 28], "uv_size": [0.5, 0.5]}, + "east": {"uv": [16.5, 1], "uv_size": [-4.5, 0.5]}, + "south": {"uv": [28, 14], "uv_size": [0.5, 0.5]}, + "west": {"uv": [12, 9], "uv_size": [4.5, 0.5]}, + "up": {"uv": [12, 10], "uv_size": [0.5, 4.5]}, + "down": {"uv": [11, 16.5], "uv_size": [0.5, -4.5]} + } + }, + { + "origin": [-0.18563, 9.5744, -11.88557], + "size": [0, 0.20883, 0.48726], + "pivot": [-0.18563, 9.38877, -11.39831], + "rotation": [-13.1052, -2.9498, 13.7289], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [15, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 15], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.18563, 9.5744, -12.02479], + "size": [0, 0.11603, 0.13922], + "pivot": [-0.18563, 9.38877, -11.39831], + "rotation": [-13.1052, -2.9498, 13.7289], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [16, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 16], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.18563, 9.36558, -12.34963], + "size": [0, 0.20882, 0.95132], + "pivot": [-0.18563, 9.38877, -11.39831], + "rotation": [-13.1052, -2.9498, 13.7289], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [23, 1], "uv_size": [1, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [2, 23], "uv_size": [1, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 1]}, + "down": {"uv": [0, 1], "uv_size": [0, -1]} + } + }, + { + "origin": [-0.04641, 9.68505, -12.46958], + "size": [0, 0.13921, 0.97454], + "pivot": [-0.04641, 9.82426, -12.01713], + "rotation": [11.8446, -3.148, 14.6734], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [23, 2], "uv_size": [1, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [3, 23], "uv_size": [1, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 1]}, + "down": {"uv": [0, 1], "uv_size": [0, -1]} + } + }, + { + "origin": [-0.04641, 8.76399, -11.36339], + "size": [0, 0.06065, 0.25524], + "pivot": [-0.04641, 8.76399, -11.75785], + "rotation": [-41.9451, -9.1494, -10.034], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [17, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 17], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.04641, 8.76399, -12.9644], + "size": [0, 0.17666, 1.60101], + "pivot": [-0.04641, 8.76399, -11.75785], + "rotation": [-41.9451, -9.1494, -10.034], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [20, 0], "uv_size": [1.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [20, 1], "uv_size": [1.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 1.5]}, + "down": {"uv": [0, 1.5], "uv_size": [0, -1.5]} + } + }, + { + "origin": [-0.04641, 8.92642, -12.03628], + "size": [0, 0.43188, 0.29696], + "pivot": [-0.04641, 8.76399, -11.75785], + "rotation": [-41.9451, -9.1494, -10.034], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [18, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 18], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.18563, 8.38679, -11.44485], + "size": [0, 0.11602, 0.09282], + "pivot": [-0.18563, 9.1757, -11.35203], + "rotation": [4.8049, -9.1494, -10.034], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [19, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 19], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.18563, 8.68844, -11.65369], + "size": [0, 0.34805, 0.11603], + "pivot": [-0.18563, 9.1757, -11.35203], + "rotation": [4.8049, -9.1494, -10.034], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [20, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 20], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.18563, 8.50281, -11.53766], + "size": [0, 0.67289, 0.18563], + "pivot": [-0.18563, 9.1757, -11.35203], + "rotation": [4.8049, -9.1494, -10.034], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [21, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 21], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.18563, 8.98282, -12.17339], + "size": [0, 0.20883, 0.60328], + "pivot": [-0.18563, 9.37728, -11.57011], + "rotation": [-17.6951, -9.1494, -10.034], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [22, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 22], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.18563, 9.19165, -12.59105], + "size": [0, 0.18563, 1.02094], + "pivot": [-0.18563, 9.37728, -11.57011], + "rotation": [-17.6951, -9.1494, -10.034], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [23, 3], "uv_size": [1, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [4, 23], "uv_size": [1, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 1]}, + "down": {"uv": [0, 1], "uv_size": [0, -1]} + } + }, + { + "origin": [-0.04641, 8.32298, -11.28075], + "size": [0, 0.82676, 0.18329], + "pivot": [-0.04641, 8.32298, -11.28075], + "rotation": [4.8542, -1.2703, -9.3774], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [23, 4], "uv_size": [0.5, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [5, 23], "uv_size": [0.5, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.04641, 9.0003, -11.46849], + "size": [0, 0.03966, 0.17894], + "pivot": [-0.04641, 8.19314, -10.32661], + "rotation": [-7.6458, -1.2703, -9.3774], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [23, 28], "uv_size": [0.5, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [28, 23], "uv_size": [0.5, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.18563, 8.04765, -9.3087], + "size": [0, 0.84644, 0.02587], + "pivot": [-0.18563, 8.89409, -9.28283], + "rotation": [-5.8958, -1.2703, -9.3774], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [23, 5], "uv_size": [0.5, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [6, 23], "uv_size": [0.5, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.04641, 8.19314, -11.28955], + "size": [0, 0.84682, 1.90265], + "pivot": [-0.04641, 8.19314, -10.32661], + "rotation": [-7.6458, -1.2703, -9.3774], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [18, 6], "uv_size": [-2, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [15, 16], "uv_size": [2, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 2]}, + "down": {"uv": [0, 2], "uv_size": [0, -2]} + } + }, + { + "origin": [-0.18563, 8.04778, -9.28283], + "size": [0, 0.84631, 0.02954], + "pivot": [-0.18563, 8.89409, -9.28283], + "rotation": [-5.9457, -0.6571, -9.4397], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [23, 6], "uv_size": [0.5, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [7, 23], "uv_size": [0.5, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.18563, 7.97008, -8.20136], + "size": [0, 0.84633, 0.02955], + "pivot": [-0.18563, 8.81641, -8.17181], + "rotation": [-1.9457, -0.6571, -9.4397], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [23, 7], "uv_size": [0.5, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [8, 23], "uv_size": [0.5, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.04641, 8.02278, -9.34243], + "size": [0, 0.84684, 1.11375], + "pivot": [-0.04641, 8.02278, -8.79715], + "rotation": [-3.9457, -0.6571, -9.4397], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [19, 1], "uv_size": [1, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [19, 2], "uv_size": [1, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 1]}, + "down": {"uv": [0, 1], "uv_size": [0, -1]} + } + }, + { + "origin": [-0.18563, 7.97054, -8.17181], + "size": [0, 0.84587, 0.04063], + "pivot": [-0.18563, 8.81641, -8.17181], + "rotation": [-2.0102, 0.1233, -9.4615], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [23, 8], "uv_size": [0.5, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [9, 23], "uv_size": [0.5, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "down": {"uv": [0, 0.5], "uv_size": [0, -0.5]} + } + }, + { + "origin": [-0.04641, 7.98815, -8.16091], + "size": [0.09282, 0.84684, 1.11375], + "pivot": [-0.04641, 7.98815, -7.62725], + "rotation": [0.7398, 0.1233, -9.4615], + "uv": { + "north": {"uv": [23, 9], "uv_size": [0.5, 1]}, + "east": {"uv": [20, 0], "uv_size": [-1, 1]}, + "south": {"uv": [10, 23], "uv_size": [0.5, 1]}, + "west": {"uv": [19, 8], "uv_size": [1, 1]}, + "up": {"uv": [23, 10], "uv_size": [0.5, 1]}, + "down": {"uv": [11, 24], "uv_size": [0.5, -1]} + } + }, + { + "origin": [0.04641, 8.7077, -7.16597], + "size": [0, 0.8454, 4.97492], + "pivot": [0.04641, 8.7077, -4.52296], + "rotation": [4.68544, -0.78133, 9.44639], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [0, 4], "uv_size": [5, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [0, 5], "uv_size": [5, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 5]}, + "down": {"uv": [0, 5], "uv_size": [0, -5]} + } + }, + { + "origin": [-0.04641, 8.7077, -7.16597], + "size": [0, 0.8454, 4.97492], + "pivot": [-0.04641, 8.7077, -4.52296], + "rotation": [4.68544, 0.78133, -9.44639], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [5, 0], "uv_size": [5, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [5, 1], "uv_size": [5, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 5]}, + "down": {"uv": [0, 5], "uv_size": [0, -5]} + } + } + ] + }, + { + "name": "constraint", + "parent": "bone", + "pivot": [-0.01558, 8.125, 1.9375] + }, + { + "name": "lefthand", + "parent": "bone", + "pivot": [-6, 19, 0] + }, + { + "name": "lefthand_pos", + "parent": "lefthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [-7, 8, -2], + "size": [3, 12, 4], + "uv": { + "north": {"uv": [12.228, 0], "uv_size": [3.614, 12]}, + "east": {"uv": [5, 12], "uv_size": [3.614, 12]}, + "south": {"uv": [8.614, 12], "uv_size": [3.614, 12]}, + "west": {"uv": [12.228, 12], "uv_size": [3.614, 12]}, + "up": {"uv": [15.842, 8], "uv_size": [3.614, 4]}, + "down": {"uv": [15.842, 16], "uv_size": [3.614, -4]} + } + } + ] + }, + { + "name": "camera", + "pivot": [3.4563, 3.4656, -0.7687] + }, + { + "name": "view", + "pivot": [0, 0, 0] + }, + { + "name": "refit_view", + "parent": "view", + "pivot": [22.475, 5.55, 0.2], + "rotation": [0, 90, 0] + }, + { + "name": "iron_view", + "parent": "view", + "pivot": [-0.15326, 9.42188, 6.93493], + "rotation": [0, -1, 0] + }, + { + "name": "idle_view", + "parent": "view", + "pivot": [3.4563, 3.4656, -0.7687] + }, + { + "name": "positioning", + "pivot": [-0.01558, 4.125, 4.9375] + }, + { + "name": "ground", + "parent": "positioning", + "pivot": [0, 0, 0] + }, + { + "name": "thirdperson_hand", + "parent": "positioning", + "pivot": [-0.01558, 6.125, -2.0625] + }, + { + "name": "fixed", + "parent": "positioning", + "pivot": [0.79692, 5.125, -1.0625], + "rotation": [0, 90, 0] + }, + { + "name": "bone38", + "pivot": [62, -11.35, -167.5] + }, + { + "name": "bone39", + "parent": "bone38", + "pivot": [-65, -11.35, -167.5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/talon.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/talon.anim.json new file mode 100644 index 0000000..19a846e --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/talon.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"draw":{"loop":true,"animation_length":0.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[83.497,3.285,-161.268],"0.04":[90.665,7.619,-166.915],"0.08":[98.293,15.024,-173.424],"0.12":[104.149,23.911,-179.022],"0.17":[107.016,30.21,-182.241],"0.21":[107.797,31.794,-183.065],"0.25":[108.118,30.912,-183.235],"0.29":[107.106,30.157,-186.524],"0.33":[97.085,27.894,-205.229],"0.38":[85.499,15.833,-234.778],"0.42":[87.178,1.141,-240.824],"0.46":[90.471,4.969,-234.985],"0.5":[97.818,25.322,-220.249],"0.54":[106.417,37.55,-200.198],"0.58":[106.128,34.822,-187.942],"0.62":[105.316,32.306,-175.876],"0.67":[109.543,29.194,-163.127],"0.71":[116.393,22.696,-149.942],"0.75":[121.618,12.635,-137.621],"0.79":[123.748,0.531,-126.764],"0.83":[122.423,-11.429,-117.135],"0.88":[118.735,-21.157,-108.374],"0.92":[114.481,-27.47,-101.375],"0.96":[112.296,-29.891,-98.255]},"position":{"0.0":[-16.804,-28.864,-9.865],"0.04":[-15.29,-28.243,-10.404],"0.08":[-13.288,-27.38,-11.087],"0.12":[-11.169,-26.394,-11.785],"0.17":[-9.383,-25.415,-12.389],"0.21":[-8.355,-24.605,-12.819],"0.25":[-8.145,-24.004,-13.236],"0.29":[-8.181,-23.448,-13.724],"0.33":[-8.301,-23.02,-14.16],"0.38":[-8.372,-22.768,-14.416],"0.42":[-8.49,-22.823,-14.497],"0.46":[-8.795,-23.194,-14.581],"0.5":[-9.122,-23.581,-14.68],"0.54":[-9.293,-23.797,-14.829],"0.58":[-9.269,-23.824,-15.098],"0.62":[-9.202,-23.807,-15.455],"0.67":[-9.224,-23.856,-15.748],"0.71":[-9.32,-23.964,-16.02],"0.75":[-9.446,-24.1,-16.317],"0.79":[-9.589,-24.244,-16.613],"0.83":[-9.723,-24.384,-16.878],"0.88":[-9.843,-24.504,-17.097],"0.92":[-9.931,-24.586,-17.248],"0.96":[-9.961,-24.625,-17.307]}},"talon":{"rotation":{"0.0":[24.974,-176.361,1.55],"0.04":[24.966,-176.36,1.545],"0.08":[24.962,-176.366,1.548],"0.12":[24.976,-176.371,1.544],"0.17":[24.965,-176.353,1.55],"0.21":[25.13,-174.333,5.371],"0.25":[19.31,-165.753,27.233],"0.29":[33.62,-161.791,56.168],"0.33":[41.489,-149.864,75.03],"0.38":[69.045,-145.757,78.377],"0.42":[93.13,-139.829,70.928],"0.46":[145.371,-139.431,70.31],"0.5":[228.999,-141.426,77.889],"0.54":[254.031,-147.606,82.106],"0.58":[233.867,-155.225,76.043],"0.62":[192.736,-159.196,71.283],"0.67":[135.489,-166.892,68.252],"0.71":[61.829,-173.906,53.623],"0.75":[29.497,-175,20.839],"0.79":[26.352,-171.19,-3.871],"0.83":[26.092,-171.172,-3.85],"0.88":[25.56,-171.184,-3.818],"0.92":[25.019,-171.186,-3.764],"0.96":[24.748,-171.179,-3.767]},"position":{"0.0":{"post":[4.8,13.5,-6.3],"lerp_mode":"catmullrom"},"0.48":{"post":[4.92671,13.34444,-6.57696],"lerp_mode":"catmullrom"},"0.92":{"post":[5.8,13.5,-6.3],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[104.137,-16.6,52.791],"0.04":[102.456,-17.719,52.76],"0.08":[100.868,-18.721,52.769],"0.12":[99.978,-19.246,52.723],"0.17":[99.576,-19.408,52.826],"0.21":[99.431,-19.507,53.597],"0.25":[99.825,-19.545,55.072],"0.29":[100.555,-19.512,57.158],"0.33":[101.422,-19.483,60.012],"0.38":[102.489,-19.434,63.33],"0.42":[103.637,-19.467,66.753],"0.46":[104.887,-19.549,70.286],"0.5":[106.911,-18.408,75.005],"0.54":[110.261,-16.362,81.147],"0.58":[114.529,-14.119,87.229],"0.62":[118.611,-11.358,91.464],"0.67":[122.276,-6.897,93.285],"0.71":[126.148,-0.767,94.268],"0.75":[129.663,6.54,94.914],"0.79":[132.545,14.431,95.504],"0.83":[134.554,22.032,96.013],"0.88":[135.808,28.471,96.452],"0.92":[136.444,33.003,96.751],"0.96":[136.653,34.857,96.878]},"position":{"0.0":[20.955,-35.84,-23.808],"0.04":[21.07,-36.049,-23.536],"0.08":[21.176,-36.254,-23.262],"0.12":[21.233,-36.382,-23.032],"0.17":[21.259,-36.411,-22.812],"0.21":[21.26,-36.403,-22.614],"0.25":[21.237,-36.349,-22.452],"0.29":[21.196,-36.26,-22.296],"0.33":[21.142,-36.138,-22.149],"0.38":[21.075,-35.989,-21.999],"0.42":[21.01,-35.842,-21.865],"0.46":[20.942,-35.694,-21.753],"0.5":[20.757,-35.368,-21.623],"0.54":[20.421,-34.879,-21.493],"0.58":[19.992,-34.26,-21.395],"0.62":[19.568,-33.488,-21.344],"0.67":[19.106,-32.471,-21.352],"0.71":[18.575,-31.281,-21.359],"0.75":[18.011,-29.999,-21.371],"0.79":[17.462,-28.729,-21.381],"0.83":[16.961,-27.574,-21.398],"0.88":[16.555,-26.629,-21.417],"0.92":[16.278,-25.985,-21.425],"0.96":[16.169,-25.721,-21.425]}},"righthand":{"position":[-0.6,3,0],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_deploy1"}}},"inspect":{"loop":true,"animation_length":4.83,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[114.219,-25.312,-108.107],"0.04":[115.018,-16.021,-126.831],"0.08":[111.335,-7.004,-144.756],"0.12":[101.686,1.106,-155.925],"0.17":[86.74,7.917,-163.656],"0.21":[73.689,9.802,-172.143],"0.25":[67.592,7.288,-180.05],"0.29":[74.215,1.436,-187.894],"0.33":[88.589,-2.232,-196.376],"0.38":[100.463,-1.589,-204.405],"0.42":[108.618,2.106,-212.015],"0.46":[112.874,6.123,-216.7],"0.5":[111.7,6.779,-216.265],"0.54":[108.332,6.036,-213.791],"0.58":[105.187,5.635,-211.11],"0.62":[102.089,5.551,-208.227],"0.67":[99.371,5.788,-207.435],"0.71":[96.952,5.758,-208.571],"0.75":[95.476,6.209,-211.365],"0.79":[95.331,8.85,-218.853],"0.83":[95.325,13.345,-228.557],"0.88":[95.469,18.767,-235.84],"0.92":[95.158,24.686,-241.645],"0.96":[94.092,30.928,-246.841],"1.0":[92.779,36.321,-250.788],"1.04":[91.871,40.593,-253.227],"1.08":[90.981,43.839,-255.316],"1.12":[90.061,46.035,-257.097],"1.17":[89.224,46.424,-258.168],"1.21":[88.521,46.553,-258.979],"1.25":[87.878,46.369,-259.604],"1.29":[87.261,45.922,-260.118],"1.33":[86.753,45.376,-260.544],"1.38":[86.368,44.822,-260.847],"1.42":[86.07,44.305,-261.1],"1.46":[85.824,43.821,-261.312],"1.5":[85.693,43.353,-261.46],"1.54":[85.655,42.885,-261.536],"1.58":[85.704,42.433,-261.559],"1.62":[85.822,41.971,-261.542],"1.67":[85.986,41.49,-261.485],"1.71":[86.177,41.038,-261.412],"1.75":[86.391,40.656,-261.334],"1.79":[86.637,40.277,-261.244],"1.83":[86.902,39.894,-261.141],"1.88":[87.163,39.529,-261.056],"1.92":[87.427,39.177,-260.959],"1.96":[87.699,38.85,-260.84],"2.0":[87.991,38.542,-260.714],"2.04":[88.246,38.283,-260.593],"2.08":[88.499,38.073,-260.436],"2.12":[88.832,37.902,-260.215],"2.17":[89.172,37.789,-259.961],"2.21":[89.527,37.694,-259.694],"2.25":[89.85,37.624,-259.411],"2.29":[90.157,37.583,-259.106],"2.33":[90.373,37.564,-258.848],"2.38":[90.509,37.558,-258.618],"2.42":[90.523,37.622,-258.425],"2.46":[90.428,37.77,-258.285],"2.5":[90.232,37.95,-258.23],"2.54":[89.979,38.174,-258.21],"2.58":[89.701,38.419,-258.227],"2.62":[89.455,38.649,-258.213],"2.67":[89.262,38.879,-258.189],"2.71":[89.075,39.122,-258.166],"2.75":[88.864,39.388,-258.162],"2.79":[88.631,39.652,-258.204],"2.83":[88.41,39.926,-258.258],"2.88":[88.198,40.192,-258.324],"2.92":[87.992,40.444,-258.44],"2.96":[87.818,40.669,-258.558],"3.0":[87.626,40.857,-258.798],"3.04":[87.419,41.035,-259.131],"3.08":[87.183,41.184,-259.524],"3.12":[86.965,41.31,-259.884],"3.17":[86.738,41.398,-260.271],"3.21":[86.493,41.432,-260.667],"3.25":[86.281,41.384,-261.006],"3.29":[86.15,41.241,-261.242],"3.33":[86.124,41.051,-261.38],"3.38":[86.199,40.91,-261.406],"3.42":[87.001,40.736,-260.594],"3.46":[89.577,40.188,-257.219],"3.5":[95.248,38.599,-249.511],"3.54":[103.541,34.94,-237.664],"3.58":[111.596,28.143,-224.744],"3.62":[118.844,15.435,-210.796],"3.67":[119.778,-5.751,-195.975],"3.71":[111.762,-23.531,-183.957],"3.75":[104.07,-31.841,-174.801],"3.79":[99.387,-33.032,-166.676],"3.83":[107.199,-30.545,-161.666],"3.88":[116.239,-28.78,-154.358],"3.92":[120.034,-29.233,-145.123],"3.96":[121.421,-29.2,-136.695],"4.0":[121.05,-27.841,-135.107],"4.04":[114.874,-25.989,-143.754],"4.08":[109.574,-27.787,-154.53],"4.12":[114.589,-31.1,-157.831],"4.17":[121.22,-33.587,-157.111],"4.21":[118.682,-33.83,-142.982],"4.25":[117.167,-34.435,-127.063],"4.29":[117.888,-36.3,-115.761],"4.33":[117.907,-33.15,-108.64],"4.38":[117.828,-28.29,-103.174],"4.42":[116.648,-27.579,-101.025],"4.46":[113.067,-28.925,-99.315],"4.5":[109.55,-30.069,-97.725],"4.54":[109.323,-30.023,-98.256],"4.58":[111.504,-29.245,-100.282],"4.62":[112.348,-29.261,-99.995],"4.67":[112.318,-29.68,-98.79],"4.71":[112.306,-29.799,-98.465],"4.75":[112.297,-29.856,-98.303],"4.79":[112.3,-29.889,-98.254],"4.83":[112.296,-29.891,-98.255]},"position":{"0.0":[-9.937,-24.955,-17.128],"0.04":[-9.875,-25.577,-16.782],"0.08":[-9.822,-26.071,-16.494],"0.12":[-9.712,-26.287,-16.321],"0.17":[-9.518,-26.369,-16.172],"0.21":[-9.443,-26.302,-16.15],"0.25":[-9.685,-26.009,-16.382],"0.29":[-10.764,-25.138,-17.274],"0.33":[-12.608,-23.706,-18.821],"0.38":[-13.876,-22.73,-19.871],"0.42":[-14.488,-22.263,-20.409],"0.46":[-14.84,-22.077,-20.618],"0.5":[-15.025,-22.125,-20.385],"0.54":[-15.04,-22.412,-19.916],"0.58":[-14.909,-23.095,-19.399],"0.62":[-14.626,-24.146,-18.84],"0.67":[-14.163,-24.781,-18.319],"0.71":[-13.506,-24.904,-17.869],"0.75":[-12.813,-24.803,-17.453],"0.79":[-12.269,-24.587,-17.091],"0.83":[-11.945,-24.15,-16.832],"0.88":[-11.835,-23.5,-16.695],"0.92":[-11.768,-22.974,-16.599],"0.96":[-11.696,-22.599,-16.516],"1.0":[-11.604,-22.32,-16.47],"1.04":[-11.503,-22.115,-16.448],"1.08":[-11.413,-21.972,-16.436],"1.12":[-11.359,-21.89,-16.444],"1.17":[-11.348,-21.833,-16.452],"1.21":[-11.356,-21.804,-16.468],"1.25":[-11.36,-21.768,-16.481],"1.29":[-11.367,-21.708,-16.5],"1.33":[-11.369,-21.646,-16.509],"1.38":[-11.375,-21.583,-16.527],"1.42":[-11.376,-21.499,-16.527],"1.46":[-11.378,-21.4,-16.534],"1.5":[-11.382,-21.314,-16.54],"1.54":[-11.381,-21.24,-16.543],"1.58":[-11.378,-21.175,-16.55],"1.62":[-11.383,-21.124,-16.559],"1.67":[-11.375,-21.089,-16.566],"1.71":[-11.375,-21.059,-16.571],"1.75":[-11.37,-21.044,-16.576],"1.79":[-11.375,-21.033,-16.581],"1.83":[-11.373,-21.014,-16.595],"1.88":[-11.372,-21.006,-16.597],"1.92":[-11.371,-21,-16.601],"1.96":[-11.37,-20.99,-16.61],"2.0":[-11.369,-20.991,-16.613],"2.04":[-11.366,-20.991,-16.62],"2.08":[-11.362,-20.992,-16.622],"2.12":[-11.364,-20.992,-16.624],"2.17":[-11.363,-20.992,-16.625],"2.21":[-11.364,-20.992,-16.627],"2.25":[-11.365,-20.993,-16.629],"2.29":[-11.357,-20.994,-16.631],"2.33":[-11.357,-20.994,-16.632],"2.38":[-11.358,-20.998,-16.632],"2.42":[-11.358,-21.002,-16.633],"2.46":[-11.36,-21.002,-16.635],"2.5":[-11.36,-21.003,-16.635],"2.54":[-11.362,-21.007,-16.632],"2.58":[-11.364,-21.011,-16.633],"2.62":[-11.365,-21.012,-16.628],"2.67":[-11.365,-21.021,-16.631],"2.71":[-11.367,-21.025,-16.628],"2.75":[-11.367,-21.029,-16.625],"2.79":[-11.368,-21.037,-16.618],"2.83":[-11.37,-21.039,-16.611],"2.88":[-11.373,-21.046,-16.608],"2.92":[-11.379,-21.051,-16.599],"2.96":[-11.379,-21.054,-16.598],"3.0":[-11.38,-21.064,-16.59],"3.04":[-11.381,-21.074,-16.58],"3.08":[-11.382,-21.078,-16.571],"3.12":[-11.382,-21.087,-16.57],"3.17":[-11.382,-21.089,-16.563],"3.21":[-11.383,-21.095,-16.56],"3.25":[-11.383,-21.094,-16.56],"3.29":[-11.379,-21.077,-16.562],"3.33":[-11.375,-21.064,-16.563],"3.38":[-11.373,-21.054,-16.569],"3.42":[-11.351,-21.079,-16.582],"3.46":[-11.28,-21.157,-16.607],"3.5":[-11.189,-21.423,-16.641],"3.54":[-11.111,-21.78,-16.692],"3.58":[-11.184,-22.097,-16.747],"3.62":[-11.605,-22.329,-16.845],"3.67":[-12.911,-22.492,-17.099],"3.71":[-14.917,-22.492,-17.468],"3.75":[-16.31,-22.207,-17.843],"3.79":[-16.662,-21.519,-18.376],"3.83":[-16.174,-20.749,-19.991],"3.88":[-15.639,-20.515,-20.697],"3.92":[-15.356,-20.773,-20.5],"3.96":[-15.251,-21.452,-19.274],"4.0":[-15.46,-22.385,-18.105],"4.04":[-15.719,-23.195,-17.749],"4.08":[-15.795,-23.388,-17.742],"4.12":[-15.776,-23.125,-17.873],"4.17":[-15.7,-22.562,-18.193],"4.21":[-15.557,-22.119,-18.414],"4.25":[-15.356,-21.957,-18.463],"4.29":[-14.951,-22.099,-18.297],"4.33":[-14.175,-22.572,-17.874],"4.38":[-13.256,-23.209,-17.395],"4.42":[-12.357,-23.943,-17.127],"4.46":[-11.553,-24.655,-17.076],"4.5":[-10.864,-24.914,-17.189],"4.54":[-10.34,-24.778,-17.311],"4.58":[-9.988,-24.607,-17.362],"4.62":[-9.844,-24.531,-17.339],"4.67":[-9.876,-24.542,-17.301],"4.71":[-9.917,-24.578,-17.302],"4.75":[-9.95,-24.606,-17.307],"4.79":[-9.961,-24.625,-17.307],"4.83":[-9.961,-24.625,-17.307]}},"talon":{"rotation":{"0.0":[26.02,-173.818,-4.222],"0.04":[28.56,-179,-4.963],"0.08":[31.051,-184.096,-5.776],"0.12":[32.971,-188.037,-6.639],"0.17":[34.677,-191.495,-7.611],"0.21":[35.686,-193.572,-8.239],"0.25":[32.401,-193.937,-7.942],"0.29":[18.78,-193.645,-6.194],"0.33":[-4.684,-192.874,-3.308],"0.38":[-32.022,-191.79,-0.105],"0.42":[-65.593,-189.812,3.62],"0.46":[-109.707,-186.903,8.372],"0.5":[-150.145,-184.447,11.72],"0.54":[-181.808,-183.351,13.211],"0.58":[-210.49,-182.705,13.631],"0.62":[-238.502,-182.096,13.24],"0.67":[-263.467,-181.818,10.933],"0.71":[-288.506,-181.548,4.917],"0.75":[-304.693,-181.126,-1.842],"0.79":[-311.069,-181.122,-5.873],"0.83":[-313.518,-177.86,-6.416],"0.88":[-313.83,-173.981,-5.863],"0.92":[-312.605,-171.277,-4.45],"0.96":[-311.12,-168.56,-3.034],"1.0":[-310.073,-166.643,-2.023],"1.04":[-309.356,-166.08,-1.701],"1.08":[-308.864,-166.025,-1.564],"1.12":[-308.54,-166.076,-1.43],"1.17":[-308.439,-166.544,-1.258],"1.21":[-308.407,-167.108,-1.077],"1.25":[-308.435,-167.427,-0.913],"1.29":[-308.538,-167.59,-0.756],"1.33":[-308.692,-167.56,-0.626],"1.38":[-308.884,-167.437,-0.546],"1.42":[-309.081,-167.309,-0.464],"1.46":[-309.284,-167.203,-0.402],"1.5":[-309.377,-167.101,-0.323],"1.54":[-309.411,-167.04,-0.282],"1.58":[-309.441,-167.03,-0.265],"1.62":[-309.458,-167.018,-0.259],"1.67":[-309.467,-167.001,-0.25],"1.71":[-309.464,-166.93,-0.219],"1.75":[-309.462,-166.859,-0.182],"1.79":[-309.461,-166.851,-0.159],"1.83":[-309.461,-166.837,-0.15],"1.88":[-309.454,-166.825,-0.145],"1.92":[-309.45,-166.816,-0.125],"1.96":[-309.445,-166.823,-0.114],"2.0":[-309.452,-166.821,-0.111],"2.04":[-309.459,-166.824,-0.102],"2.08":[-309.477,-166.842,-0.099],"2.12":[-309.488,-166.874,-0.102],"2.17":[-309.512,-166.918,-0.104],"2.21":[-309.531,-166.961,-0.116],"2.25":[-309.561,-167.017,-0.132],"2.29":[-309.59,-167.094,-0.138],"2.33":[-309.605,-167.139,-0.149],"2.38":[-309.631,-167.181,-0.168],"2.42":[-309.649,-167.237,-0.187],"2.46":[-309.674,-167.288,-0.19],"2.5":[-309.676,-167.316,-0.221],"2.54":[-309.69,-167.356,-0.243],"2.58":[-309.693,-167.386,-0.259],"2.62":[-309.705,-167.424,-0.296],"2.67":[-309.708,-167.439,-0.301],"2.71":[-309.716,-167.463,-0.31],"2.75":[-309.722,-167.482,-0.325],"2.79":[-309.718,-167.485,-0.336],"2.83":[-309.723,-167.496,-0.349],"2.88":[-309.719,-167.493,-0.358],"2.92":[-309.709,-167.469,-0.359],"2.96":[-309.694,-167.453,-0.362],"3.0":[-309.683,-167.392,-0.356],"3.04":[-309.645,-167.314,-0.334],"3.08":[-309.611,-167.227,-0.305],"3.12":[-309.583,-167.14,-0.285],"3.17":[-309.543,-167.064,-0.263],"3.21":[-309.509,-166.99,-0.249],"3.25":[-309.48,-166.924,-0.238],"3.29":[-309.476,-166.892,-0.22],"3.33":[-309.465,-166.875,-0.2],"3.38":[-309.474,-166.84,-0.176],"3.42":[-309.49,-167.018,-0.252],"3.46":[-309.584,-167.213,-0.601],"3.5":[-309.602,-167.423,-1.211],"3.54":[-309.597,-169.195,-1.682],"3.58":[-309.779,-177.264,-1.443],"3.62":[-310.573,-188.346,-1.212],"3.67":[-312.445,-194.254,-2.037],"3.71":[-314.712,-191.857,-4.132],"3.75":[-317.431,-186.292,-6.455],"3.79":[-322.658,-184.339,-8.285],"3.83":[-334.226,-184.82,-9.071],"3.88":[-359.73,-186.783,-7.265],"3.92":[-395.689,-190.34,-0.243],"3.96":[-441.985,-192.716,6.705],"4.0":[-498.266,-189.467,10.384],"4.04":[-557.218,-180.47,9.48],"4.08":[-608.042,-170.991,8.209],"4.12":[-639.373,-166.248,7.261],"4.17":[-661.757,-163.939,3.585],"4.21":[-684.022,-170.637,-2.361],"4.25":[-701.632,-177.973,-6.928],"4.29":[-714.222,-180.759,-12.088],"4.33":[-713.621,-178.175,-11.46],"4.38":[-702.217,-174.124,-7.178],"4.42":[-696.558,-171.008,-5.776],"4.46":[-695.885,-169.54,-3.657],"4.5":[-696.8,-170.285,-2.639],"4.54":[-696.88,-171.455,-3.153],"4.58":[-695.56,-171.245,-3.751],"4.62":[-695.271,-171.184,-3.855],"4.67":[-695.254,-171.178,-3.86],"4.71":[-695.258,-171.186,-3.858],"4.75":[-695.261,-171.189,-3.858],"4.79":[-695.265,-171.188,-3.864],"4.83":[-695.265,-171.188,-3.864]},"position":{"0.0":{"post":[5.8,13.5,-6.3],"lerp_mode":"catmullrom"},"0.71":{"post":[4.06493,13.41103,-6.33475],"lerp_mode":"catmullrom"},"3.38":{"post":[4.06493,13.41103,-6.33475],"lerp_mode":"catmullrom"},"4.45":{"post":[5.8,13.5,-6.3],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[137.234,28.827,94.952],"0.04":[136.823,16.689,91.231],"0.08":[134.297,4.432,88.777],"0.12":[130.038,-5.297,89.327],"0.17":[123.805,-13.119,92.968],"0.21":[116.731,-18.257,98.526],"0.25":[111.087,-20.714,104.378],"0.29":[108.896,-21.447,107.627],"0.33":[108.897,-21.446,107.632],"0.38":[108.9,-21.441,107.63],"0.42":[108.887,-21.437,107.629],"0.46":[108.904,-21.434,107.625],"0.5":[108.916,-21.442,107.602],"0.54":[108.919,-21.44,107.59],"0.58":[108.92,-21.434,107.592],"0.62":[108.943,-21.442,107.575],"0.67":[108.959,-21.432,107.554],"0.71":[108.954,-21.432,107.55],"0.75":[108.97,-21.429,107.526],"0.79":[108.975,-21.414,107.51],"0.83":[108.997,-21.408,107.495],"0.88":[109.015,-21.406,107.472],"0.92":[109.031,-21.408,107.447],"0.96":[109.057,-21.418,107.426],"1.0":[109.064,-21.406,107.408],"1.04":[109.082,-21.393,107.38],"1.08":[109.093,-21.386,107.358],"1.12":[109.131,-21.394,107.319],"1.17":[109.153,-21.381,107.282],"1.21":[109.165,-21.37,107.267],"1.25":[109.184,-21.368,107.243],"1.29":[109.212,-21.352,107.212],"1.33":[109.235,-21.365,107.176],"1.38":[109.252,-21.352,107.152],"1.42":[109.287,-21.338,107.101],"1.46":[109.306,-21.344,107.083],"1.5":[109.332,-21.325,107.044],"1.54":[109.368,-21.319,107.004],"1.58":[109.39,-21.315,106.953],"1.62":[109.406,-21.304,106.942],"1.67":[109.437,-21.296,106.9],"1.71":[109.474,-21.301,106.857],"1.75":[109.512,-21.292,106.824],"1.79":[109.535,-21.275,106.786],"1.83":[109.552,-21.266,106.749],"1.88":[109.584,-21.259,106.71],"1.92":[109.62,-21.251,106.674],"1.96":[109.656,-21.243,106.626],"2.0":[109.671,-21.236,106.587],"2.04":[109.704,-21.226,106.55],"2.08":[109.733,-21.221,106.503],"2.12":[109.765,-21.205,106.465],"2.17":[109.792,-21.194,106.428],"2.21":[109.821,-21.193,106.391],"2.25":[109.855,-21.187,106.345],"2.29":[109.883,-21.175,106.305],"2.33":[109.912,-21.166,106.267],"2.38":[109.951,-21.151,106.217],"2.42":[109.982,-21.143,106.188],"2.46":[110.011,-21.141,106.135],"2.5":[110.044,-21.134,106.09],"2.54":[110.068,-21.117,106.052],"2.58":[110.092,-21.105,106.024],"2.62":[110.119,-21.11,105.984],"2.67":[110.157,-21.088,105.941],"2.71":[110.184,-21.085,105.901],"2.75":[110.226,-21.08,105.848],"2.79":[110.25,-21.062,105.817],"2.83":[110.269,-21.068,105.783],"2.88":[110.299,-21.05,105.744],"2.92":[110.33,-21.029,105.709],"2.96":[110.331,-21.025,105.709],"3.0":[110.336,-21.026,105.704],"3.04":[110.331,-21.025,105.709],"3.08":[110.336,-21.026,105.704],"3.12":[110.328,-21.028,105.707],"3.17":[110.336,-21.028,105.704],"3.21":[110.331,-21.028,105.708],"3.25":[110.331,-21.025,105.709],"3.29":[110.331,-21.025,105.709],"3.33":[110.329,-21.028,105.708],"3.38":[110.331,-21.025,105.709],"3.42":[110.336,-21.026,105.704],"3.46":[110.338,-21.027,105.703],"3.5":[110.331,-21.025,105.709],"3.62":[110.331,-21.025,105.709],"3.67":[110.332,-21.025,105.707],"3.71":[110.332,-21.029,105.704],"3.75":[110.329,-21.027,105.708],"3.79":[110.338,-21.027,105.703],"3.83":[110.331,-21.025,105.709],"3.92":[110.331,-21.025,105.709],"3.96":[110.335,-21.03,105.701],"4.0":[113.023,-18.907,102.958],"4.04":[118.219,-13.337,97.492],"4.08":[123.12,-5.218,91.898],"4.12":[126.295,3.428,87.688],"4.17":[128.438,12.864,86.399],"4.21":[130.295,20.188,86.718],"4.25":[132.197,26.048,87.549],"4.29":[133.478,30.273,88.589],"4.33":[133.914,32.844,89.547],"4.38":[134.247,34.425,90.468],"4.42":[134.57,35.277,91.413],"4.46":[134.91,35.673,92.412],"4.5":[135.285,35.792,93.47],"4.54":[135.688,35.724,94.43],"4.58":[136.034,35.532,95.178],"4.62":[136.289,35.297,95.741],"4.67":[136.476,35.082,96.173],"4.71":[136.584,34.936,96.503],"4.75":[136.634,34.872,96.753],"4.79":[136.639,34.844,96.88],"4.83":[136.639,34.844,96.88]},"position":{"0.0":[16.897,-26.444,-20.805],"0.04":[18.405,-27.887,-19.556],"0.08":[19.959,-29.325,-18.301],"0.12":[21.226,-30.514,-17.202],"0.17":[22.389,-31.626,-16.169],"0.21":[23.151,-32.285,-15.539],"0.25":[23.255,-32.531,-15.539],"0.29":[23.156,-32.815,-15.826],"0.33":[23.103,-33.267,-16.147],"0.38":[23.045,-33.761,-16.494],"0.42":[22.995,-34.237,-16.829],"0.46":[22.941,-34.637,-17.107],"0.5":[22.925,-34.862,-17.268],"0.54":[22.915,-34.921,-17.305],"0.58":[22.915,-34.921,-17.305],"0.62":[22.914,-34.921,-17.305],"0.67":[22.914,-34.922,-17.305],"0.71":[22.915,-34.923,-17.304],"0.75":[22.915,-34.923,-17.304],"0.79":[22.917,-34.922,-17.305],"0.83":[22.917,-34.922,-17.305],"0.88":[22.916,-34.923,-17.305],"0.92":[22.915,-34.924,-17.304],"0.96":[22.916,-34.925,-17.303],"1.04":[22.916,-34.925,-17.303],"1.08":[22.918,-34.926,-17.303],"1.12":[22.916,-34.928,-17.301],"1.17":[22.917,-34.928,-17.301],"1.21":[22.918,-34.928,-17.301],"1.25":[22.918,-34.929,-17.301],"1.29":[22.919,-34.929,-17.301],"1.33":[22.919,-34.931,-17.3],"1.38":[22.92,-34.932,-17.3],"1.42":[22.919,-34.932,-17.299],"1.46":[22.92,-34.934,-17.298],"1.5":[22.92,-34.934,-17.299],"1.54":[22.92,-34.939,-17.298],"1.58":[22.92,-34.944,-17.297],"1.62":[22.921,-34.945,-17.305],"1.67":[22.922,-34.946,-17.304],"1.71":[22.921,-34.948,-17.303],"1.75":[22.921,-34.949,-17.303],"1.79":[22.922,-34.949,-17.303],"1.83":[22.923,-34.95,-17.302],"1.88":[22.916,-34.951,-17.301],"1.92":[22.907,-34.953,-17.3],"1.96":[22.907,-34.954,-17.3],"2.0":[22.908,-34.955,-17.299],"2.04":[22.909,-34.956,-17.299],"2.08":[22.91,-34.958,-17.298],"2.12":[22.911,-34.959,-17.297],"2.17":[22.91,-34.959,-17.297],"2.21":[22.91,-34.961,-17.296],"2.25":[22.911,-34.962,-17.296],"2.29":[22.911,-34.962,-17.295],"2.33":[22.911,-34.964,-17.294],"2.38":[22.912,-34.965,-17.294],"2.42":[22.912,-34.966,-17.293],"2.46":[22.912,-34.967,-17.292],"2.5":[22.913,-34.969,-17.291],"2.54":[22.914,-34.97,-17.291],"2.58":[22.914,-34.97,-17.291],"2.62":[22.915,-34.971,-17.29],"2.67":[22.915,-34.972,-17.29],"2.71":[22.915,-34.974,-17.289],"2.75":[22.915,-34.975,-17.288],"2.79":[22.915,-34.976,-17.287],"2.83":[22.916,-34.977,-17.286],"2.88":[22.916,-34.978,-17.286],"2.92":[22.917,-34.978,-17.286],"2.96":[22.917,-34.986,-17.286],"3.96":[22.917,-34.986,-17.286],"4.0":[22.285,-34.539,-17.81],"4.04":[20.908,-33.524,-18.931],"4.08":[19.24,-32.273,-20.26],"4.12":[17.755,-31.099,-21.425],"4.17":[16.994,-30.057,-21.781],"4.21":[16.508,-29.035,-21.87],"4.25":[16.153,-28.078,-21.917],"4.29":[15.907,-27.212,-21.936],"4.33":[15.799,-26.458,-21.913],"4.38":[15.804,-25.892,-21.857],"4.42":[15.868,-25.565,-21.78],"4.46":[15.946,-25.437,-21.692],"4.5":[16.001,-25.445,-21.615],"4.54":[16.044,-25.507,-21.546],"4.58":[16.078,-25.588,-21.497],"4.62":[16.107,-25.656,-21.472],"4.67":[16.134,-25.687,-21.449],"4.71":[16.15,-25.706,-21.439],"4.75":[16.152,-25.717,-21.433],"4.79":[16.171,-25.721,-21.426],"4.83":[16.171,-25.721,-21.426]}},"righthand":{"rotation":{"0.0":[0,0,0],"0.62":[-1.40448,14.93561,-5.43411],"2.83":[-1.40448,14.93561,-5.43411],"3.56":[-1.40448,14.93561,-5.43411],"4.45":[0,0,0]},"position":[-0.6,3,0],"scale":[1,1.5,1]}}},"inspect_1":{"loop":true,"animation_length":2.62,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[114.456,-27.042,-103.306],"0.04":[117.881,-20.149,-114.013],"0.08":[119.61,-11.017,-126.817],"0.12":[118.647,-2.175,-139.567],"0.17":[116.136,3.497,-149.315],"0.21":[113.909,5.903,-155.136],"0.25":[112.148,7.397,-160.67],"0.29":[109.631,11.017,-169.203],"0.33":[105.078,20.305,-182.434],"0.38":[104.114,36.755,-192.37],"0.42":[102.034,48.73,-196.773],"0.46":[98.527,50.617,-197.643],"0.5":[92.732,42.947,-195.035],"0.54":[87.208,33.698,-189.167],"0.58":[82.356,27.438,-185.904],"0.62":[81.06,23.543,-185.603],"0.67":[82.096,18.654,-186.024],"0.71":[82.955,14.974,-186.564],"0.75":[82.747,13.886,-186.367],"0.79":[82.216,14.147,-185.291],"0.83":[81.959,14.705,-183.901],"0.88":[83.266,14.954,-182.973],"0.92":[88.144,14.839,-182.73],"0.96":[94.066,14.676,-182.745],"1.0":[92.744,14.654,-182.584],"1.04":[87.98,14.916,-181.965],"1.08":[82.344,15.453,-181.166],"1.12":[79.283,15.701,-181.054],"1.17":[81.035,15.388,-182.451],"1.21":[84.366,15.036,-184.315],"1.25":[86.559,14.854,-185.859],"1.29":[85.605,14.572,-187.281],"1.33":[83.741,14.165,-186.87],"1.38":[83.084,14.035,-186.701],"1.42":[83.778,14.081,-186.496],"1.46":[86.042,14.301,-185.961],"1.5":[88.597,15.127,-185.948],"1.54":[89.403,16.197,-186.371],"1.58":[86.436,15.21,-186.833],"1.62":[83.08,14.03,-186.695],"1.67":[82.139,13.992,-185.421],"1.71":[81.167,13.727,-186.196],"1.75":[80.514,13.492,-187.058],"1.79":[83.084,14.035,-186.701],"1.83":[83.08,14.026,-186.698],"1.88":[83.084,14.031,-186.701],"1.92":[83.08,14.033,-186.7],"1.96":[83.088,14.027,-186.696],"2.0":[83.092,14.026,-186.696],"2.04":[92.126,13.862,-185.647],"2.08":[126.707,5.569,-177.493],"2.12":[150.78,-15.782,-169.872],"2.17":[140.833,-25.009,-153.128],"2.21":[127.79,-23.744,-127.163],"2.25":[122.265,-19.857,-103.439],"2.29":[120.503,-20.349,-89.502],"2.33":[119.682,-21.358,-87.229],"2.38":[117.904,-22.877,-89.53],"2.42":[115.147,-25.788,-93.467],"2.46":[112.937,-28.82,-97.084],"2.5":[112.306,-29.881,-98.26],"2.54":[112.306,-29.881,-98.26],"2.58":[112.305,-29.877,-98.259],"2.62":[112.295,-29.885,-98.25]},"position":{"0.0":[-10.144,-24.625,-17.421],"0.04":[-10.553,-24.634,-17.677],"0.08":[-11.093,-24.649,-18.014],"0.12":[-11.662,-24.676,-18.377],"0.17":[-12.126,-24.7,-18.686],"0.21":[-12.394,-24.714,-18.874],"0.25":[-12.538,-24.637,-18.969],"0.29":[-12.687,-24.338,-18.987],"0.33":[-12.805,-23.619,-18.876],"0.38":[-12.875,-22.499,-18.62],"0.42":[-12.894,-21.071,-18.211],"0.46":[-12.89,-20.253,-17.952],"0.5":[-12.768,-21.663,-17.913],"0.54":[-12.877,-23.028,-18.819],"0.58":[-12.926,-23.371,-19.431],"0.62":[-13.235,-22.349,-20.254],"0.67":[-13.594,-20.962,-20.978],"0.71":[-13.701,-20.555,-21.046],"0.75":[-13.535,-21.154,-20.638],"0.79":[-13.289,-22.276,-20.294],"0.83":[-13.229,-22.961,-20.432],"0.88":[-13.368,-22.767,-20.884],"0.92":[-13.672,-21.696,-21.506],"0.96":[-13.87,-20.803,-21.783],"1.0":[-13.731,-20.861,-21.267],"1.04":[-13.456,-21.69,-20.587],"1.08":[-13.246,-22.371,-20.177],"1.12":[-13.149,-22.533,-20.362],"1.17":[-13.323,-21.973,-20.916],"1.21":[-13.64,-21.373,-21.413],"1.25":[-13.715,-21.014,-21.287],"1.29":[-13.537,-21.5,-20.849],"1.33":[-13.293,-22.496,-20.418],"1.38":[-13.242,-23.003,-20.509],"1.42":[-13.384,-22.581,-20.882],"1.46":[-13.616,-21.359,-21.201],"1.5":[-13.743,-20.659,-21.101],"1.54":[-13.694,-20.918,-20.753],"1.58":[-13.416,-21.777,-20.296],"1.62":[-13.177,-22.474,-20.131],"1.67":[-13.189,-22.395,-20.451],"1.71":[-13.423,-21.583,-20.902],"1.75":[-13.623,-20.797,-21.141],"1.79":[-13.677,-20.63,-20.934],"1.83":[-13.455,-21.516,-20.534],"1.88":[-13.257,-22.581,-20.341],"1.92":[-13.256,-23.046,-20.586],"1.96":[-13.5,-22.448,-20.958],"2.0":[-13.769,-21.237,-21.19],"2.04":[-13.473,-20.368,-20.966],"2.08":[-12.732,-19.671,-20.335],"2.12":[-12.08,-19.673,-19.567],"2.17":[-11.65,-21.005,-18.797],"2.21":[-11.199,-22.935,-17.99],"2.25":[-10.799,-24.926,-17.274],"2.29":[-10.52,-26.461,-16.77],"2.33":[-10.431,-26.844,-16.648],"2.38":[-10.383,-26.31,-16.755],"2.42":[-10.315,-25.399,-16.933],"2.46":[-10.252,-24.553,-17.097],"2.5":[-10.217,-24.291,-17.156],"2.54":[-10.14,-24.39,-17.201],"2.58":[-10.028,-24.537,-17.27],"2.62":[-9.961,-24.625,-17.308]}},"talon":{"rotation":{"0.0":[24.741,-171.176,-3.764],"0.04":[24.742,-171.173,-3.755],"0.08":[24.744,-171.167,-3.765],"0.12":[24.721,-171.169,-3.758],"0.17":[24.742,-171.159,-3.595],"0.21":[24.879,-171.29,-2.236],"0.25":[25.219,-171.547,0.434],"0.29":[25.771,-171.931,3.699],"0.33":[22.796,-172.747,7.064],"0.38":[-4.112,-174.102,11.19],"0.42":[-57.114,-168.731,15.93],"0.46":[-133.572,-158.43,24.143],"0.5":[-202.447,-163.306,24.144],"0.54":[-273.179,-167.42,20.53],"0.58":[-339.048,-170.483,11.28],"0.62":[-402.09,-171.434,0.259],"0.67":[-456.214,-171.681,0.144],"0.71":[-511.159,-169.094,13.905],"0.75":[-568.916,-170.888,18.529],"0.79":[-627.813,-173.358,15.313],"0.83":[-683.299,-174.864,12.827],"0.88":[-737.787,-175.933,10.363],"0.92":[-792.171,-176.581,9.062],"0.96":[-845.292,-177.077,10.051],"1.0":[-899.603,-177.104,12.896],"1.04":[-957.623,-177.167,15.079],"1.08":[-1014.605,-178.073,14.166],"1.12":[-1070.045,-179.744,9.915],"1.17":[-1125.273,-179.735,8.167],"1.21":[-1181.495,-176.274,11.786],"1.25":[-1239.04,-172.573,17.497],"1.29":[-1301.097,-171.515,19.959],"1.33":[-1369.745,-172.436,17.275],"1.38":[-1438.461,-173.938,12.484],"1.42":[-1501.218,-175.287,8.311],"1.46":[-1555.218,-173.669,11.798],"1.5":[-1608.561,-169.907,20.829],"1.54":[-1661.187,-168.93,23.952],"1.58":[-1712.895,-168.942,22.683],"1.62":[-1764.56,-169.021,20.575],"1.67":[-1815.892,-169.652,17.889],"1.71":[-1867.499,-169.85,15.707],"1.75":[-1919.813,-169.399,17.907],"1.79":[-1973.406,-169.231,19.612],"1.83":[-2030.151,-169.288,19.282],"1.88":[-2088.572,-169.37,18.472],"1.92":[-2147.701,-169.429,17.221],"1.96":[-2205.71,-169.401,15.633],"2.0":[-2261.782,-169.546,13.767],"2.04":[-2314.94,-169.607,11.725],"2.08":[-2366.047,-169.565,9.588],"2.12":[-2416.757,-169.428,7.446],"2.17":[-2457.851,-169.442,5.452],"2.21":[-2481.092,-169.361,3.598],"2.25":[-2492.876,-170.818,-2.083],"2.29":[-2495.262,-171.178,-3.777],"2.33":[-2495.253,-171.172,-3.777],"2.38":[-2495.254,-171.173,-3.772],"2.42":[-2495.247,-171.168,-3.755],"2.46":[-2495.253,-171.179,-3.756],"2.5":[-2495.241,-171.165,-3.765],"2.54":[-2495.243,-171.165,-3.766],"2.58":[-2495.242,-171.166,-3.763],"2.62":[-2495.252,-171.177,-3.763]},"position":{"0.0":{"post":[5.8,13.5,-6.3],"lerp_mode":"catmullrom"},"0.32":{"post":[4.37226,13.64837,-6.20878],"lerp_mode":"catmullrom"},"0.58":{"post":[4.30384,13.64921,-6.09666],"lerp_mode":"catmullrom"},"1.94":{"post":[4.30384,13.64921,-6.09666],"lerp_mode":"catmullrom"},"2.16":{"post":[4.37226,13.64837,-6.20878],"lerp_mode":"catmullrom"},"2.38":{"post":[5.8,13.5,-6.3],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[137.098,33.124,98.074],"0.04":[137.956,28.781,100.889],"0.08":[138.569,22.359,104.764],"0.12":[138.388,14.423,109.331],"0.17":[136.985,5.678,114.499],"0.21":[134.222,-2.964,120.233],"0.25":[130.084,-10.765,126.478],"0.29":[124.738,-17.139,133.061],"0.33":[118.902,-21.543,138.923],"0.38":[113.323,-24.172,143.256],"0.42":[108.805,-25.416,144.962],"0.46":[104.868,-27,143.55],"0.5":[100.009,-31.11,140.251],"0.54":[95.183,-36.365,137.239],"0.58":[91.335,-41.05,135.383],"0.62":[89.583,-43.282,134.767],"0.67":[89.588,-43.282,134.768],"0.71":[89.583,-43.282,134.767],"0.79":[89.583,-43.282,134.767],"0.83":[89.587,-43.281,134.768],"0.88":[89.583,-43.279,134.767],"0.92":[89.581,-43.278,134.767],"0.96":[89.583,-43.275,134.768],"1.0":[89.583,-43.282,134.767],"1.08":[89.583,-43.282,134.767],"1.12":[89.579,-43.278,134.767],"1.17":[89.583,-43.282,134.767],"1.29":[89.583,-43.282,134.767],"1.33":[89.582,-43.281,134.767],"1.38":[89.579,-43.278,134.767],"1.42":[89.587,-43.281,134.768],"1.46":[89.579,-43.278,134.767],"1.5":[89.583,-43.282,134.767],"1.62":[89.583,-43.282,134.767],"1.67":[89.58,-43.279,134.769],"1.71":[89.578,-43.28,134.772],"1.75":[89.573,-43.271,134.777],"1.79":[89.57,-43.273,134.775],"1.83":[89.565,-43.277,134.776],"1.88":[89.579,-43.274,134.766],"1.92":[89.576,-43.278,134.766],"1.96":[89.579,-43.278,134.767],"2.0":[92.079,-40.195,135.676],"2.04":[97.217,-34.185,138.389],"2.08":[103.096,-28.483,142.28],"2.12":[108.029,-25.584,145.089],"2.17":[112.244,-26.7,142.984],"2.21":[117.957,-28.994,136.431],"2.25":[125.42,-30.045,127.041],"2.29":[133.486,-27.723,117.393],"2.33":[139.715,-19.895,110.955],"2.38":[144.397,-5.229,106.807],"2.42":[146.592,13.208,104.488],"2.46":[145.702,28.973,102.955],"2.5":[143.035,34.978,101.151],"2.54":[140.187,35.644,99.247],"2.58":[137.749,35.26,97.613],"2.62":[136.646,34.847,96.882]},"position":{"0.0":[16.223,-25.851,-21.304],"0.04":[16.37,-26.181,-21],"0.08":[16.594,-26.673,-20.542],"0.12":[16.865,-27.301,-19.968],"0.17":[17.169,-28.033,-19.296],"0.21":[17.498,-28.83,-18.579],"0.25":[17.823,-29.649,-17.846],"0.29":[18.119,-30.464,-17.125],"0.33":[18.376,-31.223,-16.475],"0.38":[18.575,-31.898,-15.915],"0.42":[18.7,-32.455,-15.474],"0.46":[18.723,-32.911,-15.18],"0.5":[18.648,-33.32,-15.037],"0.54":[18.555,-33.65,-14.979],"0.58":[18.461,-33.875,-14.973],"0.62":[18.407,-33.971,-14.98],"1.71":[18.407,-33.971,-14.98],"1.75":[18.408,-33.965,-14.98],"1.79":[18.409,-33.969,-14.983],"1.83":[18.408,-33.965,-14.98],"1.88":[18.408,-33.971,-14.981],"1.92":[18.408,-33.971,-14.981],"1.96":[18.407,-33.971,-14.98],"2.0":[18.465,-33.843,-14.973],"2.04":[18.58,-33.533,-15],"2.08":[18.688,-33.095,-15.119],"2.12":[18.719,-32.556,-15.394],"2.17":[18.576,-31.84,-15.934],"2.21":[18.296,-30.925,-16.673],"2.25":[17.933,-29.887,-17.541],"2.29":[17.513,-28.795,-18.463],"2.33":[17.076,-27.739,-19.383],"2.38":[16.675,-26.8,-20.213],"2.42":[16.343,-26.053,-20.878],"2.46":[16.109,-25.559,-21.309],"2.5":[16.055,-25.441,-21.43],"2.54":[16.096,-25.53,-21.426],"2.58":[16.137,-25.65,-21.429],"2.62":[16.171,-25.72,-21.426]}},"righthand":{"rotation":{"0.0":[0,0,0],"0.59":[0,10,0],"1.94":[0,10,0],"2.16":[0,0,0]},"position":[-0.6,3,0],"scale":[1,1.5,1]}}},"melee_1":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[91.036,-40.768,-79.596],"0.04":[135.525,-41.48,-96.564],"0.08":[171.85,-34.721,-107.691],"0.12":[202.982,-14.4,-122.558],"0.17":[211.408,5.373,-124.034],"0.21":[199.118,4.875,-123.614],"0.25":[181.878,0.266,-122.52],"0.29":[166.304,-2.407,-120.701],"0.33":[160.822,-1.726,-118.85],"0.38":[156.476,-1.965,-116.893],"0.42":[149.93,-5.518,-115.428],"0.46":[142.067,-11.4,-113.28],"0.5":[135.17,-10.666,-113.583],"0.54":[128.729,-8.801,-115.43],"0.58":[122.462,-7.656,-117.755],"0.62":[117.27,-7.849,-119.454],"0.67":[116.388,-14.422,-119.47],"0.71":[115.569,-19.656,-117.099],"0.75":[114.292,-23.222,-113.627],"0.79":[112.754,-25.799,-109.646],"0.83":[111.089,-28.021,-104.729],"0.88":[109.85,-29.731,-100.078],"0.92":[109.078,-30.85,-96.553],"0.96":[109.114,-31.179,-95.176],"1.0":[110.178,-30.773,-96.05],"1.04":[111.36,-30.291,-97.295],"1.08":[112.145,-29.955,-98.124],"1.12":[112.296,-29.891,-98.255]},"position":{"0.0":[-18.428,-25.052,-14.825],"0.04":[-12.211,-22.25,-19.155],"0.08":[-5.166,-21.818,-20.833],"0.12":[3.113,-23.579,-19.348],"0.17":[14.414,-26.505,-15.51],"0.21":[20.446,-29.4,-12.766],"0.25":[20.633,-32.075,-11.559],"0.29":[17.218,-33.704,-11.381],"0.33":[12.389,-33.696,-11.35],"0.38":[7.594,-33.687,-11.354],"0.42":[3.74,-33.245,-11.658],"0.46":[-0.055,-31.825,-12.623],"0.5":[-3.454,-30.17,-12.965],"0.54":[-5.895,-28.825,-13.059],"0.58":[-7.901,-27.71,-13.376],"0.62":[-9.365,-26.711,-14.102],"0.67":[-10.134,-25.915,-14.953],"0.71":[-10.709,-25.328,-15.744],"0.75":[-11.11,-24.913,-16.352],"0.79":[-11.339,-24.627,-16.798],"0.83":[-11.37,-24.47,-17.103],"0.88":[-11.176,-24.407,-17.289],"0.92":[-10.82,-24.427,-17.363],"0.96":[-10.43,-24.514,-17.358],"1.0":[-10.178,-24.61,-17.327],"1.04":[-10.045,-24.638,-17.299],"1.08":[-9.979,-24.628,-17.298],"1.12":[-9.961,-24.625,-17.307]}},"talon":{"rotation":{"0.0":[26.49,-176.006,-12.253],"0.04":[15.888,-176.687,-11.894],"0.08":[2.099,-178.902,-12.013],"0.12":[1.024,-179.394,-12.146],"0.17":[1.463,-179.266,-12.121],"0.21":[4.896,-178.271,-11.905],"0.25":[10.803,-176.802,-11.731],"0.29":[16.401,-175.963,-11.784],"0.33":[20.095,-177.402,-10.97],"0.38":[22.694,-180.449,-9.414],"0.42":[24.175,-183.303,-8.447],"0.46":[24.658,-184.072,-8.401],"0.5":[24.681,-181.437,-8.199],"0.54":[24.728,-177.056,-6.887],"0.58":[24.756,-173.026,-4.962],"0.62":[24.735,-171.182,-3.862],"0.67":[24.724,-171.193,-3.867],"0.71":[24.723,-171.185,-3.857],"0.75":[24.72,-171.183,-3.86],"0.79":[24.74,-171.182,-3.862],"0.83":[24.737,-171.189,-3.859],"0.88":[24.727,-171.2,-3.853],"0.92":[24.737,-171.188,-3.86],"0.96":[24.734,-171.186,-3.86],"1.0":[24.732,-171.181,-3.858],"1.04":[24.737,-171.186,-3.86],"1.08":[24.742,-171.19,-3.859],"1.12":[24.735,-171.188,-3.864]},"position":{"0.0":{"post":[5.8,13.5,-6.3],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[111.55,-4.629,56.512],"0.04":[107.894,-12.419,53.646],"0.08":[102.485,-17.681,52.779],"0.12":[99.332,-19.464,52.873],"0.17":[100.39,-19.458,56.865],"0.21":[103.162,-19.227,65.588],"0.25":[107.271,-18.37,76.134],"0.29":[112.099,-16.525,85.758],"0.33":[116.93,-12.899,90.755],"0.38":[122.093,-6.384,90.329],"0.42":[126.146,3.042,87.786],"0.46":[128.265,12.323,86.326],"0.5":[130.012,19.277,86.645],"0.54":[131.835,25.002,87.365],"0.58":[133.195,29.289,88.31],"0.62":[133.812,32.194,89.263],"0.67":[134.122,33.959,90.129],"0.71":[134.423,34.984,91.004],"0.75":[134.743,35.508,91.921],"0.79":[135.067,35.756,92.899],"0.83":[135.465,35.796,93.9],"0.88":[135.837,35.659,94.754],"0.92":[136.163,35.411,95.46],"0.96":[136.419,35.135,96.041],"1.0":[136.579,34.942,96.463],"1.04":[136.63,34.874,96.743],"1.08":[136.634,34.854,96.855],"1.12":[136.653,34.857,96.878]},"position":{"0.0":[19.959,-33.874,-25.281],"0.04":[20.556,-35.055,-24.324],"0.08":[20.994,-35.84,-23.275],"0.12":[21.209,-36.233,-22.593],"0.17":[21.187,-36.211,-22.278],"0.21":[21.024,-35.891,-21.946],"0.25":[20.735,-35.317,-21.606],"0.29":[20.354,-34.619,-21.376],"0.33":[19.795,-33.803,-21.343],"0.38":[18.902,-32.676,-21.458],"0.42":[17.84,-31.336,-21.632],"0.46":[17.032,-30.131,-21.77],"0.5":[16.564,-29.178,-21.858],"0.54":[16.209,-28.266,-21.909],"0.58":[15.959,-27.424,-21.934],"0.62":[15.816,-26.676,-21.922],"0.67":[15.793,-26.072,-21.877],"0.71":[15.832,-25.674,-21.814],"0.75":[15.9,-25.484,-21.739],"0.79":[15.962,-25.425,-21.655],"0.83":[16.016,-25.466,-21.583],"0.88":[16.061,-25.537,-21.523],"0.92":[16.099,-25.624,-21.483],"0.96":[16.128,-25.68,-21.457],"1.0":[16.15,-25.705,-21.441],"1.04":[16.153,-25.716,-21.436],"1.08":[16.166,-25.72,-21.428],"1.12":[16.169,-25.721,-21.425]}},"root":{"position":{"0.0":[0,0,6],"0.45":{"pre":[0,0,6],"post":[0,0,0]}}},"righthand":{"position":[-0.6,3,0],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"melee_2":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[60.307,1.987,80.568],"0.04":[86.801,3.794,74.414],"0.08":[119.679,12.766,72.929],"0.12":[150.226,23.349,78.89],"0.17":[181.802,31.344,93.528],"0.21":[213.138,31.713,112.869],"0.25":[231.104,20.863,119.161],"0.29":[219.965,10.899,104.341],"0.33":[195.564,-10.3,89.01],"0.38":[168.69,-38.682,95.823],"0.42":[117.943,-53.393,141.451],"0.46":[79.754,-37.324,186.43],"0.5":[76.232,-19.516,210.564],"0.54":[83.34,-11.672,229.631],"0.58":[91.247,-10.756,242.534],"0.62":[97.931,-13.304,250.54],"0.67":[103.009,-17.289,254.651],"0.71":[106.837,-21.398,256.85],"0.75":[109.862,-24.862,258.131],"0.79":[112.259,-27.487,258.906],"0.83":[113.793,-29.139,259.504],"0.88":[114.405,-30.052,260.094],"0.92":[114.213,-30.346,260.651],"0.96":[113.669,-30.291,261.026],"1.0":[113.014,-30.158,261.406],"1.04":[112.522,-30.057,261.655],"1.08":[112.335,-29.946,261.745],"1.12":[112.308,-29.887,261.758]},"position":{"0.0":[8.042,-28.786,-14.674],"0.04":[4.378,-25.578,-15.986],"0.08":[-3.233,-21.279,-16.577],"0.12":[-11.66,-21.434,-16.251],"0.17":[-20.388,-24.732,-15.01],"0.21":[-27.337,-28.527,-13.713],"0.25":[-28.797,-31.708,-12.986],"0.29":[-26.018,-33.266,-13.35],"0.33":[-24.222,-32.972,-14.042],"0.38":[-22.316,-32.453,-14.764],"0.42":[-20.646,-31.785,-15.517],"0.46":[-19.183,-31.039,-16.243],"0.5":[-17.662,-30.157,-16.946],"0.54":[-16.148,-29.071,-17.59],"0.58":[-14.659,-27.983,-17.993],"0.62":[-13.195,-27.017,-17.99],"0.67":[-11.999,-26.123,-17.821],"0.71":[-11.095,-25.399,-17.62],"0.75":[-10.426,-24.907,-17.448],"0.79":[-10.005,-24.594,-17.307],"0.83":[-9.836,-24.451,-17.221],"0.88":[-9.808,-24.423,-17.193],"0.92":[-9.839,-24.465,-17.203],"0.96":[-9.886,-24.527,-17.231],"1.0":[-9.925,-24.581,-17.266],"1.04":[-9.945,-24.609,-17.298],"1.08":[-9.957,-24.623,-17.312],"1.12":[-9.959,-24.626,-17.306]}},"talon":{"rotation":{"0.0":[13.321,-178.956,-19.859],"0.04":[13.315,-178.963,-19.858],"0.08":[13.288,-178.974,-19.87],"0.12":[13.305,-178.961,-19.874],"0.17":[13.309,-178.96,-19.865],"0.21":[13.3,-178.962,-19.879],"0.25":[13.295,-178.986,-19.889],"0.29":[13.299,-178.972,-19.88],"0.33":[13.306,-178.962,-19.851],"0.38":[13.739,-178.667,-19.255],"0.42":[15.745,-177.303,-16.431],"0.46":[19.013,-175.068,-11.849],"0.5":[22.302,-172.836,-7.27],"0.54":[24.308,-171.478,-4.464],"0.58":[24.729,-171.194,-3.856],"0.62":[24.728,-171.191,-3.857],"0.67":[24.728,-171.193,-3.852],"0.71":[24.728,-171.194,-3.853],"0.75":[24.736,-171.198,-3.858],"0.79":[24.723,-171.186,-3.859],"0.83":[24.738,-171.19,-3.856],"0.88":[24.736,-171.189,-3.853],"0.92":[24.748,-171.188,-3.86],"0.96":[24.741,-171.177,-3.864],"1.0":[24.741,-171.192,-3.854],"1.04":[24.737,-171.186,-3.858],"1.08":[24.736,-171.179,-3.862],"1.12":[24.74,-171.182,-3.862]},"position":{"0.0":{"post":[5.8,13.5,-6.3],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[111.548,-4.646,56.503],"0.04":[107.9,-12.437,53.656],"0.08":[102.488,-17.689,52.786],"0.12":[99.34,-19.462,52.888],"0.17":[100.433,-19.481,56.835],"0.21":[103.204,-19.261,65.555],"0.25":[107.298,-18.397,76.1],"0.29":[112.122,-16.513,85.755],"0.33":[116.943,-12.911,90.735],"0.38":[122.097,-6.399,90.292],"0.42":[126.15,3.039,87.775],"0.46":[128.264,12.317,86.314],"0.5":[129.998,19.273,86.644],"0.54":[131.83,25.002,87.368],"0.58":[133.191,29.291,88.303],"0.62":[133.812,32.194,89.263],"0.67":[134.122,33.959,90.129],"0.71":[134.423,34.984,91.004],"0.75":[134.743,35.508,91.921],"0.79":[135.067,35.756,92.899],"0.83":[135.465,35.796,93.9],"0.88":[135.837,35.659,94.754],"0.92":[136.163,35.411,95.46],"0.96":[136.419,35.135,96.041],"1.0":[136.579,34.942,96.463],"1.04":[136.63,34.874,96.743],"1.08":[136.634,34.854,96.855],"1.12":[136.653,34.857,96.878]},"position":{"0.0":[19.957,-33.861,-25.251],"0.04":[20.594,-35.161,-24.461],"0.08":[21.065,-36.053,-23.542],"0.12":[21.267,-36.421,-22.813],"0.17":[21.205,-36.271,-22.346],"0.21":[21.025,-35.882,-21.931],"0.25":[20.74,-35.311,-21.595],"0.29":[20.348,-34.616,-21.377],"0.33":[19.799,-33.804,-21.355],"0.38":[18.906,-32.677,-21.471],"0.42":[17.841,-31.336,-21.632],"0.46":[17.02,-30.134,-21.769],"0.5":[16.57,-29.174,-21.859],"0.54":[16.216,-28.261,-21.915],"0.58":[15.963,-27.427,-21.937],"0.62":[15.816,-26.676,-21.922],"0.67":[15.793,-26.072,-21.877],"0.71":[15.832,-25.674,-21.814],"0.75":[15.9,-25.484,-21.739],"0.79":[15.962,-25.425,-21.655],"0.83":[16.016,-25.466,-21.583],"0.88":[16.061,-25.537,-21.523],"0.92":[16.099,-25.624,-21.483],"0.96":[16.128,-25.68,-21.457],"1.0":[16.15,-25.705,-21.441],"1.04":[16.153,-25.716,-21.436],"1.08":[16.166,-25.72,-21.428],"1.12":[16.169,-25.721,-21.425]}},"root":{"position":{"0.0":[0,0,6],"0.45":{"pre":[0,0,6],"post":[0,0,0]}}},"righthand":{"position":[-0.6,3,0],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash2"}}},"melee_3":{"loop":true,"animation_length":1.12,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[107.032,-17.985,-114.325],"0.04":[100.657,-8.837,-135.569],"0.08":[106.903,-3.998,-150.319],"0.12":[135.161,14.522,-179.404],"0.17":[161.708,30.054,-180.414],"0.21":[197.244,33.999,-165.188],"0.25":[213.585,25.866,-163.445],"0.29":[214.665,23.404,-163.166],"0.33":[213.093,21.317,-162.472],"0.38":[210.633,20.655,-161.345],"0.42":[207.003,20.073,-161.892],"0.46":[202.243,19.119,-164.589],"0.5":[197.185,18.774,-167.941],"0.54":[191.502,18.087,-171.993],"0.58":[184.827,15.334,-176.816],"0.62":[176.086,10.066,-182.114],"0.67":[164.448,3.423,-185.633],"0.71":[151.271,-3.81,-184.15],"0.75":[136.039,-9.065,-175.924],"0.79":[123.925,-10.655,-162.66],"0.83":[119.471,-12.501,-148.356],"0.88":[117.863,-15.847,-134.728],"0.92":[116.028,-20.605,-121.794],"0.96":[112.6,-25.716,-109.129],"1.0":[110.435,-28.527,-101.492],"1.04":[111.088,-28.96,-99.955],"1.08":[111.886,-29.452,-98.752],"1.12":[112.296,-29.891,-98.255]},"position":{"0.0":[-10.994,-25.169,-16.925],"0.04":[-12.76,-27.537,-16.159],"0.08":[-13.365,-27.368,-15.241],"0.12":[-13.174,-24.85,-16.323],"0.17":[-12.15,-17.765,-17.353],"0.21":[-12.267,-13.322,-15.444],"0.25":[-13.048,-13.467,-14.09],"0.29":[-13.34,-13.272,-13.914],"0.33":[-13.432,-13.276,-14.009],"0.38":[-13.494,-13.438,-14.158],"0.42":[-13.536,-13.702,-14.302],"0.46":[-13.535,-14.167,-14.43],"0.5":[-13.54,-14.948,-14.545],"0.54":[-13.537,-15.886,-14.659],"0.58":[-13.497,-16.966,-14.77],"0.62":[-13.344,-18.235,-14.88],"0.67":[-13.109,-19.686,-15.002],"0.71":[-12.706,-21.154,-15.142],"0.75":[-12.182,-22.564,-15.28],"0.79":[-11.557,-23.734,-15.417],"0.83":[-10.91,-24.367,-15.629],"0.88":[-10.332,-24.765,-15.909],"0.92":[-9.909,-24.962,-16.227],"0.96":[-9.737,-24.998,-16.57],"1.0":[-9.788,-24.845,-16.912],"1.04":[-9.89,-24.698,-17.145],"1.08":[-9.955,-24.64,-17.267],"1.12":[-9.961,-24.625,-17.307]}},"talon":{"rotation":{"0.0":[24.74,-171.184,-3.866],"0.04":[24.736,-171.184,-3.872],"0.08":[24.722,-171.177,-3.864],"0.12":[24.715,-171.174,-3.88],"0.17":[24.72,-171.168,-3.88],"0.21":[24.713,-171.167,-3.877],"0.25":[24.706,-171.167,-3.878],"0.29":[24.715,-171.178,-3.878],"0.33":[24.719,-171.173,-3.876],"0.38":[24.718,-171.164,-3.876],"0.42":[24.717,-171.168,-3.879],"0.46":[24.719,-171.185,-3.87],"0.5":[24.719,-171.177,-3.875],"0.54":[24.712,-171.176,-3.879],"0.58":[24.714,-171.169,-3.878],"0.62":[24.709,-171.176,-3.873],"0.67":[24.727,-171.166,-3.867],"0.71":[24.727,-171.174,-3.862],"0.75":[24.712,-171.174,-3.859],"0.79":[24.73,-171.173,-3.866],"0.83":[24.715,-171.191,-3.856],"0.88":[24.729,-171.187,-3.862],"0.92":[24.729,-171.188,-3.852],"0.96":[24.733,-171.189,-3.853],"1.0":[24.735,-171.192,-3.853],"1.04":[24.737,-171.182,-3.857],"1.08":[24.735,-171.181,-3.86],"1.12":[24.735,-171.188,-3.864]},"position":{"0.0":{"post":[5.8,13.5,-6.3],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[111.549,-4.645,56.505],"0.04":[107.894,-12.42,53.647],"0.08":[102.488,-17.682,52.771],"0.12":[99.332,-19.466,52.883],"0.17":[100.433,-19.473,56.844],"0.21":[103.218,-19.249,65.563],"0.25":[107.301,-18.402,76.113],"0.29":[112.102,-16.511,85.739],"0.33":[116.93,-12.907,90.77],"0.38":[122.083,-6.38,90.34],"0.42":[126.144,3.043,87.789],"0.46":[128.264,12.317,86.314],"0.5":[129.998,19.273,86.644],"0.54":[131.829,25.002,87.368],"0.58":[133.191,29.291,88.303],"0.62":[133.812,32.194,89.263],"0.67":[134.122,33.959,90.129],"0.71":[134.423,34.984,91.004],"0.75":[134.743,35.508,91.921],"0.79":[135.067,35.756,92.899],"0.83":[135.465,35.796,93.9],"0.88":[135.837,35.659,94.754],"0.92":[136.163,35.411,95.46],"0.96":[136.419,35.135,96.041],"1.0":[136.579,34.942,96.463],"1.04":[136.63,34.874,96.743],"1.08":[136.634,34.854,96.855],"1.12":[136.653,34.857,96.878]},"position":{"0.0":[19.958,-33.861,-25.251],"0.04":[20.591,-35.155,-24.451],"0.08":[21.065,-36.055,-23.535],"0.12":[21.271,-36.423,-22.811],"0.17":[21.199,-36.269,-22.35],"0.21":[21.022,-35.882,-21.934],"0.25":[20.735,-35.317,-21.595],"0.29":[20.349,-34.621,-21.378],"0.33":[19.795,-33.804,-21.339],"0.38":[18.909,-32.674,-21.458],"0.42":[17.843,-31.336,-21.629],"0.46":[17.02,-30.134,-21.769],"0.5":[16.57,-29.173,-21.859],"0.54":[16.216,-28.261,-21.915],"0.58":[15.963,-27.427,-21.937],"0.62":[15.816,-26.676,-21.922],"0.67":[15.793,-26.072,-21.877],"0.71":[15.832,-25.674,-21.814],"0.75":[15.9,-25.484,-21.739],"0.79":[15.962,-25.425,-21.655],"0.83":[16.016,-25.466,-21.583],"0.88":[16.061,-25.537,-21.523],"0.92":[16.098,-25.624,-21.483],"0.96":[16.128,-25.68,-21.457],"1.0":[16.15,-25.705,-21.441],"1.04":[16.153,-25.716,-21.436],"1.08":[16.166,-25.72,-21.428],"1.12":[16.169,-25.721,-21.425]}},"root":{"position":{"0.0":{"post":[0,-1.7,0],"lerp_mode":"catmullrom"},"0.37":{"post":[0,-5.3,1],"lerp_mode":"catmullrom"},"0.85":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"righthand":{"position":[-0.6,3,0],"scale":[1,1.5,1]}},"sound_effects":{"0.0":{"effect":"melee.cs2.knife_slash1"}}},"static_idle":{"loop":true,"animation_length":1.96,"override_previous_animation":true,"bones":{"knife_and_right":{"rotation":{"0.0":[112.288,-29.891,-98.25],"0.04":[112.281,-29.917,-98.252],"0.08":[112.26,-29.937,-98.224],"0.12":[112.22,-29.972,-98.178],"0.17":[112.182,-29.987,-98.129],"0.21":[112.138,-30.033,-98.063],"0.25":[112.091,-30.06,-97.991],"0.29":[112.039,-30.088,-97.908],"0.33":[111.995,-30.121,-97.836],"0.38":[111.946,-30.152,-97.751],"0.42":[111.895,-30.187,-97.666],"0.46":[111.848,-30.211,-97.585],"0.5":[111.79,-30.25,-97.499],"0.54":[111.727,-30.285,-97.404],"0.58":[111.696,-30.296,-97.343],"0.62":[111.639,-30.322,-97.268],"0.67":[111.606,-30.341,-97.203],"0.71":[111.555,-30.351,-97.127],"0.75":[111.519,-30.355,-97.073],"0.79":[111.503,-30.357,-97.043],"0.83":[111.483,-30.351,-97.015],"0.88":[111.474,-30.335,-97.01],"0.92":[111.47,-30.318,-97.017],"0.96":[111.478,-30.31,-97.041],"1.0":[111.482,-30.292,-97.054],"1.04":[111.501,-30.257,-97.096],"1.08":[111.523,-30.235,-97.142],"1.12":[111.55,-30.202,-97.204],"1.17":[111.575,-30.174,-97.254],"1.21":[111.62,-30.149,-97.313],"1.25":[111.666,-30.109,-97.38],"1.29":[111.727,-30.086,-97.444],"1.33":[111.771,-30.047,-97.511],"1.38":[111.832,-30.019,-97.564],"1.42":[111.894,-29.994,-97.619],"1.46":[111.961,-29.964,-97.671],"1.5":[112.015,-29.948,-97.71],"1.54":[112.081,-29.93,-97.77],"1.58":[112.125,-29.904,-97.834],"1.62":[112.157,-29.895,-97.894],"1.67":[112.195,-29.878,-97.956],"1.71":[112.221,-29.869,-98.005],"1.75":[112.249,-29.865,-98.065],"1.79":[112.281,-29.858,-98.128],"1.83":[112.287,-29.863,-98.167],"1.88":[112.299,-29.87,-98.203],"1.92":[112.312,-29.872,-98.237],"1.96":[112.296,-29.891,-98.255]},"position":{"0.0":[-9.97,-24.626,-17.308],"0.04":[-9.969,-24.626,-17.307],"0.08":[-9.968,-24.626,-17.307],"0.12":[-9.959,-24.625,-17.298],"0.17":[-9.956,-24.635,-17.297],"0.21":[-9.953,-24.633,-17.294],"0.25":[-9.95,-24.632,-17.292],"0.29":[-9.939,-24.631,-17.29],"0.33":[-9.934,-24.639,-17.287],"0.38":[-9.927,-24.638,-17.284],"0.42":[-9.918,-24.636,-17.28],"0.46":[-9.913,-24.633,-17.277],"0.5":[-9.902,-24.64,-17.276],"0.54":[-9.898,-24.637,-17.279],"0.58":[-9.888,-24.637,-17.275],"0.62":[-9.882,-24.634,-17.272],"0.67":[-9.877,-24.632,-17.27],"0.71":[-9.869,-24.635,-17.268],"0.75":[-9.866,-24.639,-17.266],"0.79":[-9.865,-24.637,-17.264],"0.83":[-9.864,-24.634,-17.266],"0.88":[-9.86,-24.629,-17.272],"0.92":[-9.855,-24.628,-17.271],"0.96":[-9.856,-24.628,-17.272],"1.0":[-9.858,-24.628,-17.275],"1.04":[-9.86,-24.625,-17.282],"1.08":[-9.861,-24.621,-17.283],"1.12":[-9.873,-24.622,-17.286],"1.17":[-9.876,-24.621,-17.29],"1.21":[-9.878,-24.616,-17.298],"1.25":[-9.881,-24.617,-17.3],"1.29":[-9.882,-24.617,-17.301],"1.33":[-9.887,-24.611,-17.305],"1.38":[-9.893,-24.612,-17.307],"1.42":[-9.9,-24.613,-17.309],"1.46":[-9.903,-24.613,-17.311],"1.5":[-9.908,-24.606,-17.313],"1.54":[-9.916,-24.607,-17.315],"1.58":[-9.919,-24.609,-17.317],"1.62":[-9.931,-24.608,-17.319],"1.67":[-9.933,-24.61,-17.319],"1.71":[-9.939,-24.612,-17.315],"1.75":[-9.945,-24.612,-17.317],"1.79":[-9.947,-24.613,-17.318],"1.83":[-9.957,-24.614,-17.312],"1.88":[-9.959,-24.614,-17.313],"1.92":[-9.959,-24.615,-17.313],"1.96":[-9.961,-24.625,-17.307]}},"talon":{"rotation":{"0.0":[24.749,-171.191,-3.844],"0.04":[24.753,-171.185,-3.857],"0.08":[24.752,-171.187,-3.857],"0.12":[24.745,-171.187,-3.861],"0.17":[24.74,-171.182,-3.85],"0.21":[24.742,-171.188,-3.857],"0.25":[24.747,-171.193,-3.853],"0.29":[24.744,-171.192,-3.848],"0.33":[24.742,-171.185,-3.85],"0.38":[24.746,-171.193,-3.85],"0.42":[24.749,-171.179,-3.855],"0.46":[24.766,-171.175,-3.846],"0.5":[24.753,-171.183,-3.858],"0.54":[24.742,-171.19,-3.856],"0.58":[24.752,-171.18,-3.852],"0.62":[24.75,-171.183,-3.852],"0.67":[24.749,-171.182,-3.852],"0.71":[24.744,-171.19,-3.849],"0.75":[24.74,-171.186,-3.846],"0.79":[24.75,-171.188,-3.85],"0.83":[24.746,-171.181,-3.848],"0.88":[24.75,-171.185,-3.851],"0.92":[24.746,-171.184,-3.851],"0.96":[24.756,-171.187,-3.862],"1.0":[24.751,-171.188,-3.855],"1.04":[24.75,-171.188,-3.85],"1.08":[24.752,-171.19,-3.852],"1.12":[24.75,-171.185,-3.857],"1.17":[24.744,-171.186,-3.853],"1.21":[24.748,-171.189,-3.86],"1.25":[24.746,-171.186,-3.853],"1.29":[24.757,-171.183,-3.864],"1.33":[24.745,-171.179,-3.859],"1.38":[24.742,-171.183,-3.851],"1.42":[24.743,-171.181,-3.851],"1.46":[24.74,-171.174,-3.855],"1.5":[24.75,-171.181,-3.854],"1.54":[24.752,-171.185,-3.851],"1.58":[24.751,-171.176,-3.846],"1.62":[24.739,-171.187,-3.849],"1.67":[24.743,-171.186,-3.847],"1.71":[24.74,-171.196,-3.845],"1.75":[24.747,-171.193,-3.842],"1.79":[24.744,-171.185,-3.845],"1.83":[24.749,-171.193,-3.847],"1.88":[24.752,-171.195,-3.849],"1.92":[24.751,-171.191,-3.854],"1.96":[24.74,-171.187,-3.86]},"position":{"0.0":{"post":[5.8,13.5,-6.3],"lerp_mode":"catmullrom"}}},"lefthand":{"rotation":{"0.0":[136.641,34.854,96.876],"0.04":[136.651,34.861,96.864],"0.08":[136.664,34.866,96.851],"0.12":[136.677,34.851,96.832],"0.17":[136.689,34.874,96.806],"0.21":[136.704,34.881,96.776],"0.25":[136.71,34.888,96.755],"0.29":[136.734,34.885,96.726],"0.33":[136.748,34.891,96.703],"0.38":[136.745,34.904,96.659],"0.42":[136.759,34.904,96.633],"0.46":[136.774,34.912,96.615],"0.5":[136.812,34.929,96.597],"0.54":[136.808,34.938,96.557],"0.58":[136.826,34.945,96.533],"0.62":[136.825,34.946,96.506],"0.67":[136.839,34.951,96.49],"0.71":[136.843,34.948,96.48],"0.75":[136.843,34.956,96.465],"0.79":[136.839,34.957,96.46],"0.83":[136.835,34.958,96.426],"0.88":[136.831,34.963,96.438],"0.92":[136.826,34.964,96.44],"0.96":[136.824,34.951,96.449],"1.0":[136.823,34.957,96.472],"1.04":[136.824,34.957,96.489],"1.08":[136.814,34.944,96.502],"1.12":[136.791,34.958,96.509],"1.17":[136.787,34.941,96.538],"1.21":[136.762,34.94,96.554],"1.25":[136.746,34.934,96.58],"1.29":[136.736,34.932,96.598],"1.33":[136.724,34.923,96.621],"1.38":[136.706,34.928,96.641],"1.42":[136.694,34.919,96.669],"1.46":[136.692,34.907,96.687],"1.5":[136.675,34.899,96.706],"1.54":[136.656,34.897,96.742],"1.58":[136.644,34.888,96.751],"1.62":[136.631,34.876,96.772],"1.67":[136.63,34.879,96.804],"1.71":[136.624,34.863,96.82],"1.75":[136.622,34.868,96.839],"1.79":[136.618,34.862,96.834],"1.83":[136.606,34.855,96.848],"1.88":[136.621,34.854,96.871],"1.92":[136.637,34.864,96.879],"1.96":[136.639,34.844,96.88]},"position":{"0.0":[16.17,-25.723,-21.426],"0.04":[16.161,-25.729,-21.425],"0.08":[16.151,-25.729,-21.423],"0.12":[16.151,-25.73,-21.424],"0.17":[16.149,-25.73,-21.422],"0.21":[16.148,-25.73,-21.421],"0.25":[16.147,-25.73,-21.42],"0.29":[16.146,-25.731,-21.419],"0.33":[16.144,-25.732,-21.418],"0.38":[16.144,-25.737,-21.418],"0.42":[16.142,-25.741,-21.416],"0.46":[16.14,-25.739,-21.413],"0.5":[16.138,-25.739,-21.412],"0.54":[16.137,-25.74,-21.411],"0.58":[16.135,-25.74,-21.41],"0.62":[16.135,-25.741,-21.409],"0.67":[16.134,-25.74,-21.409],"0.71":[16.133,-25.74,-21.408],"0.75":[16.133,-25.74,-21.407],"0.79":[16.133,-25.74,-21.407],"0.83":[16.132,-25.739,-21.415],"0.88":[16.132,-25.738,-21.414],"0.92":[16.132,-25.737,-21.414],"0.96":[16.132,-25.737,-21.414],"1.0":[16.131,-25.734,-21.412],"1.04":[16.131,-25.728,-21.411],"1.08":[16.132,-25.723,-21.412],"1.12":[16.133,-25.72,-21.412],"1.17":[16.133,-25.718,-21.411],"1.21":[16.135,-25.716,-21.416],"1.25":[16.135,-25.708,-21.42],"1.29":[16.137,-25.707,-21.422],"1.33":[16.138,-25.704,-21.422],"1.38":[16.139,-25.704,-21.422],"1.42":[16.14,-25.704,-21.423],"1.46":[16.141,-25.705,-21.416],"1.5":[16.142,-25.706,-21.418],"1.54":[16.144,-25.706,-21.42],"1.58":[16.147,-25.709,-21.423],"1.62":[16.148,-25.711,-21.425],"1.67":[16.154,-25.711,-21.427],"1.71":[16.168,-25.714,-21.425],"1.75":[16.169,-25.714,-21.422],"1.79":[16.169,-25.716,-21.423],"1.83":[16.172,-25.719,-21.426],"1.88":[16.171,-25.719,-21.426],"1.92":[16.171,-25.719,-21.426],"1.96":[16.171,-25.721,-21.426]}},"righthand":{"position":[-0.6,3,0],"scale":[1,1.5,1]}}},"idle":{"loop":true,"bones":{"root":{"rotation":[0,0,0],"position":[0,0,0],"scale":1}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/talon.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/talon.geo.json new file mode 100644 index 0000000..0b7497b --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/talon.geo.json @@ -0,0 +1,5101 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 4, + "visible_bounds_height": 4, + "visible_bounds_offset": [0, 0, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "bone", + "parent": "root", + "pivot": [0, 9.6875, 4.3375] + }, + { + "name": "knife_and_right", + "parent": "bone", + "pivot": [6, 19, 0] + }, + { + "name": "righthand", + "parent": "knife_and_right", + "pivot": [6, 19, 0] + }, + { + "name": "righthand_pos", + "parent": "righthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [4, 8, -2], + "size": [3, 12, 4], + "uv": { + "north": {"uv": [0, 0], "uv_size": [8, 24]}, + "east": {"uv": [8, 0], "uv_size": [8, 24]}, + "south": {"uv": [16, 0], "uv_size": [8, 24]}, + "west": {"uv": [0, 24], "uv_size": [8, 24]}, + "up": {"uv": [32, 0], "uv_size": [8, 8]}, + "down": {"uv": [32, 16], "uv_size": [8, -8]} + } + } + ] + }, + { + "name": "talon", + "parent": "knife_and_right", + "pivot": [0, 9.66217, 4.7775], + "rotation": [15, 0, 0], + "cubes": [ + { + "origin": [0.0246, 7.3027, -2.58756], + "size": [0.13543, 0.27012, 0.0532], + "pivot": [0.16003, 7.78562, -2.58756], + "rotation": [81.70352, -18.26249, -65.04592], + "uv": { + "north": {"uv": [28, 30], "uv_size": [0.25, 0.25]}, + "east": {"uv": [30, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [30, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [30, 30], "uv_size": [0.25, 0.25]}, + "down": {"uv": [0, 31.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0261, 7.29998, -2.64744], + "size": [0.24183, 0.21878, 0.0532], + "pivot": [0.0261, 7.46556, -2.64744], + "rotation": [82.45058, -18.3415, -67.16121], + "uv": { + "north": {"uv": [31, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [1, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 1], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [31, 2], "uv_size": [0.25, 0.25]}, + "down": {"uv": [3, 31.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.135, 7.5687, -2.58756], + "size": [0.29503, 0.21692, 0.0532], + "pivot": [0.16003, 7.78562, -2.58756], + "rotation": [81.70352, -18.26249, -65.04592], + "uv": { + "north": {"uv": [31, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [4, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 4], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [31, 5], "uv_size": [0.25, 0.25]}, + "down": {"uv": [6, 31.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0261, 6.83919, -2.6975], + "size": [0.24183, 0.16557, 0.0532], + "pivot": [0.0261, 7.48356, -2.6975], + "rotation": [82.45058, -18.3415, -67.16121], + "uv": { + "north": {"uv": [31, 6], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 7], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [31, 8], "uv_size": [0.25, 0.25]}, + "down": {"uv": [9, 31.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.06081, 7.40237, -2.18783], + "size": [0.24182, 0.16558, 0.0532], + "pivot": [0.0601, 7.45856, -2.16123], + "rotation": [82.69075, 11.41793, -71.00388], + "uv": { + "north": {"uv": [31, 9], "uv_size": [0.25, 0.25]}, + "east": {"uv": [10, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 10], "uv_size": [0.25, 0.25]}, + "west": {"uv": [11, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [31, 11], "uv_size": [0.25, 0.25]}, + "down": {"uv": [12, 31.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.135, 7.1431, -2.58756], + "size": [0.29503, 0.16372, 0.0532], + "pivot": [0.16003, 7.78562, -2.58756], + "rotation": [81.70352, -18.26249, -65.04592], + "uv": { + "north": {"uv": [31, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 13], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [31, 14], "uv_size": [0.25, 0.25]}, + "down": {"uv": [15, 31.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0246, 6.9303, -2.58756], + "size": [0.13543, 0.21692, 0.0532], + "pivot": [0.16003, 7.78562, -2.58756], + "rotation": [81.70352, -18.26249, -65.04592], + "uv": { + "north": {"uv": [31, 15], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 16], "uv_size": [0.25, 0.25]}, + "west": {"uv": [17, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [31, 17], "uv_size": [0.25, 0.25]}, + "down": {"uv": [18, 31.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.06571, 7.24588, -1.86327], + "size": [0.24183, 0.16558, 0.0532], + "pivot": [0.0552, 7.32867, -1.83667], + "rotation": [82.69075, 11.41793, -71.00388], + "uv": { + "north": {"uv": [31, 18], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 19], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [31, 20], "uv_size": [0.25, 0.25]}, + "down": {"uv": [21, 31.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.135, 6.7707, -2.58756], + "size": [0.29503, 0.16372, 0.0532], + "pivot": [0.16003, 7.78562, -2.58756], + "rotation": [81.70352, -18.26249, -65.04592], + "uv": { + "north": {"uv": [31, 21], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 22], "uv_size": [0.25, 0.25]}, + "west": {"uv": [23, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [31, 23], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 31.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0261, 6.46679, -2.6975], + "size": [0.24183, 0.16557, 0.0532], + "pivot": [0.0261, 7.48356, -2.6975], + "rotation": [82.45058, -18.3415, -67.16121], + "uv": { + "north": {"uv": [31, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [31, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [27, 31.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0246, 6.5047, -2.58756], + "size": [0.13543, 0.27012, 0.0532], + "pivot": [0.16003, 7.78562, -2.58756], + "rotation": [81.70352, -18.26249, -65.04592], + "uv": { + "north": {"uv": [31, 27], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [29, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [31, 29], "uv_size": [0.25, 0.25]}, + "down": {"uv": [30, 31.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.07551, 7.16535, -1.56458], + "size": [0.29502, 0.05918, 0.0532], + "pivot": [0.0454, 7.19494, -1.53798], + "rotation": [82.69075, 11.41793, -71.00388], + "uv": { + "north": {"uv": [31, 30], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 0], "uv_size": [0.25, 0.25]}, + "up": {"uv": [1, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 1.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1882, 7.20219, -1.43462], + "size": [0.34823, 0.16373, 0.0532], + "pivot": [0.16003, 7.36592, -1.43462], + "rotation": [86.12051, -9.22387, -67.06865], + "uv": { + "north": {"uv": [2, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 2], "uv_size": [0.25, 0.25]}, + "south": {"uv": [3, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 3], "uv_size": [0.25, 0.25]}, + "up": {"uv": [4, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 4.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.135, 6.5047, -2.58756], + "size": [0.29503, 0.05732, 0.0532], + "pivot": [0.16003, 7.78562, -2.58756], + "rotation": [81.70352, -18.26249, -65.04592], + "uv": { + "north": {"uv": [5, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 5], "uv_size": [0.25, 0.25]}, + "south": {"uv": [6, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 6], "uv_size": [0.25, 0.25]}, + "up": {"uv": [7, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 7.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.03089, 7.11215, -1.56458], + "size": [0.18862, 0.05918, 0.0532], + "pivot": [0.0454, 7.19494, -1.53798], + "rotation": [82.69075, 11.41793, -71.00388], + "uv": { + "north": {"uv": [8, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 8], "uv_size": [0.25, 0.25]}, + "south": {"uv": [9, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 9], "uv_size": [0.25, 0.25]}, + "up": {"uv": [10, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 10.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0261, 6.20079, -2.6975], + "size": [0.24183, 0.05917, 0.0532], + "pivot": [0.0261, 7.48356, -2.6975], + "rotation": [82.45058, -18.3415, -67.16121], + "uv": { + "north": {"uv": [11, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 11], "uv_size": [0.25, 0.25]}, + "south": {"uv": [12, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 12], "uv_size": [0.25, 0.25]}, + "up": {"uv": [13, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 13.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0246, 6.77659, -1.43462], + "size": [0.13543, 0.58933, 0.0532], + "pivot": [0.16003, 7.36592, -1.43462], + "rotation": [86.12051, -9.22387, -67.06865], + "uv": { + "north": {"uv": [4, 26], "uv_size": [0.25, 0.5]}, + "east": {"uv": [26, 4], "uv_size": [0.25, 0.5]}, + "south": {"uv": [5, 26], "uv_size": [0.25, 0.5]}, + "west": {"uv": [26, 5], "uv_size": [0.25, 0.5]}, + "up": {"uv": [14, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 14.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09965, 7.0817, -1.09806], + "size": [0.29502, 0.16372, 0.0532], + "pivot": [0.07446, 7.16356, -1.07146], + "rotation": [85.74985, 25.69361, -69.53686], + "uv": { + "north": {"uv": [15, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 15], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 16], "uv_size": [0.25, 0.25]}, + "up": {"uv": [17, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 17.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.23982, 7.04596, -0.99445], + "size": [0.133, 0.05732, 0.0532], + "pivot": [0.06729, 7.12782, -0.96785], + "rotation": [84.74916, 43.13508, -71.28689], + "uv": { + "north": {"uv": [18, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 18], "uv_size": [0.25, 0.25]}, + "south": {"uv": [19, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 19], "uv_size": [0.25, 0.25]}, + "up": {"uv": [20, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 20.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1882, 6.77659, -1.43462], + "size": [0.34823, 0.16373, 0.0532], + "pivot": [0.16003, 7.36592, -1.43462], + "rotation": [86.12051, -9.22387, -67.06865], + "uv": { + "north": {"uv": [21, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 21], "uv_size": [0.25, 0.25]}, + "south": {"uv": [22, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 22], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1882, 6.57141, -1.43462], + "size": [0.04892, 0.20518, 0.0532], + "pivot": [0.16003, 7.36592, -1.43462], + "rotation": [86.12051, -9.22387, -67.06865], + "uv": { + "north": {"uv": [24, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 24], "uv_size": [0.25, 0.25]}, + "south": {"uv": [25, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [26, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 26.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16667, 7.10328, -0.99445], + "size": [0.05985, 0.0532, 0.0532], + "pivot": [0.06729, 7.12782, -0.96785], + "rotation": [84.74916, 43.13508, -71.28689], + "uv": { + "north": {"uv": [27, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [28, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 28], "uv_size": [0.25, 0.25]}, + "up": {"uv": [29, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 29.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.10682, 7.04596, -0.99445], + "size": [0.18862, 0.16372, 0.0532], + "pivot": [0.06729, 7.12782, -0.96785], + "rotation": [84.74916, 43.13508, -71.28689], + "uv": { + "north": {"uv": [30, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [32, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [0, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.07502, 7.26545, -2.09116], + "size": [0.04892, 0.16558, 0.05221], + "pivot": [-0.0261, 7.26545, -2.09116], + "rotation": [89.99999, 19.78491, 89.99999], + "uv": { + "north": {"uv": [33, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [1, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [33, 1], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 33], "uv_size": [0.25, 0.25]}, + "up": {"uv": [33, 2], "uv_size": [0.25, 0.25]}, + "down": {"uv": [3, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.07502, 7.40951, -2.49163], + "size": [0.04892, 0.21878, 0.0522], + "pivot": [-0.0261, 7.40951, -2.49163], + "rotation": [89.99999, 19.78491, 89.99999], + "uv": { + "north": {"uv": [33, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [4, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [33, 4], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 33], "uv_size": [0.25, 0.25]}, + "up": {"uv": [33, 5], "uv_size": [0.25, 0.25]}, + "down": {"uv": [6, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.07502, 7.48356, -2.6975], + "size": [0.04892, 1.28278, 0.05221], + "pivot": [-0.0261, 7.48356, -2.6975], + "rotation": [89.99999, 30.00002, 89.99999], + "uv": { + "north": {"uv": [6, 9], "uv_size": [0.25, 1.25]}, + "east": {"uv": [9, 6], "uv_size": [0.25, 1.25]}, + "south": {"uv": [9, 8], "uv_size": [0.25, 1.25]}, + "west": {"uv": [10, 0], "uv_size": [0.25, 1.25]}, + "up": {"uv": [33, 6], "uv_size": [0.25, 0.25]}, + "down": {"uv": [7, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.02231, 7.16535, -1.51138], + "size": [0.18862, 0.05918, 0.0532], + "pivot": [0.0454, 7.19494, -1.53798], + "rotation": [82.69075, 11.41793, -71.00388], + "uv": { + "north": {"uv": [33, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [33, 8], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 33], "uv_size": [0.25, 0.25]}, + "up": {"uv": [33, 9], "uv_size": [0.25, 0.25]}, + "down": {"uv": [10, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16631, 7.16535, -1.51138], + "size": [0.18862, 0.05918, 0.0532], + "pivot": [-0.0454, 7.19494, -1.53798], + "rotation": [82.69075, -11.41793, 71.00388], + "uv": { + "north": {"uv": [33, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [33, 11], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 33], "uv_size": [0.25, 0.25]}, + "up": {"uv": [33, 12], "uv_size": [0.25, 0.25]}, + "down": {"uv": [13, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.18101, 7.40237, -2.13463], + "size": [0.18862, 0.16558, 0.0532], + "pivot": [-0.0601, 7.45856, -2.16123], + "rotation": [82.69075, -11.41793, 71.00388], + "uv": { + "north": {"uv": [33, 13], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [33, 14], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 33], "uv_size": [0.25, 0.25]}, + "up": {"uv": [33, 15], "uv_size": [0.25, 0.25]}, + "down": {"uv": [16, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.00761, 7.40237, -2.13463], + "size": [0.18862, 0.16558, 0.0532], + "pivot": [0.0601, 7.45856, -2.16123], + "rotation": [82.69075, 11.41793, -71.00388], + "uv": { + "north": {"uv": [33, 16], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [33, 17], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 33], "uv_size": [0.25, 0.25]}, + "up": {"uv": [33, 18], "uv_size": [0.25, 0.25]}, + "down": {"uv": [19, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.01251, 7.24588, -1.81007], + "size": [0.18863, 0.16558, 0.0532], + "pivot": [0.0552, 7.32867, -1.83667], + "rotation": [82.69075, 11.41793, -71.00388], + "uv": { + "north": {"uv": [33, 19], "uv_size": [0.25, 0.25]}, + "east": {"uv": [20, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [33, 20], "uv_size": [0.25, 0.25]}, + "west": {"uv": [21, 33], "uv_size": [0.25, 0.25]}, + "up": {"uv": [33, 21], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.17612, 7.24588, -1.81007], + "size": [0.18863, 0.16558, 0.0532], + "pivot": [-0.0552, 7.32867, -1.83667], + "rotation": [82.69075, -11.41793, 71.00388], + "uv": { + "north": {"uv": [33, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [33, 23], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 33], "uv_size": [0.25, 0.25]}, + "up": {"uv": [33, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [25, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.04645, 7.0817, -1.04486], + "size": [0.24182, 0.16372, 0.0532], + "pivot": [0.07446, 7.16356, -1.07146], + "rotation": [85.74985, 25.69361, -69.53686], + "uv": { + "north": {"uv": [33, 25], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [33, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [27, 33], "uv_size": [0.25, 0.25]}, + "up": {"uv": [33, 27], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.19537, 7.0817, -1.04486], + "size": [0.24182, 0.16372, 0.0532], + "pivot": [-0.07446, 7.16356, -1.07146], + "rotation": [85.74985, -25.69361, 69.53686], + "uv": { + "north": {"uv": [33, 28], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [33, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [30, 33], "uv_size": [0.25, 0.25]}, + "up": {"uv": [33, 30], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15609, 7.62056, -1.47666], + "size": [0.04791, 0.21692, 0.21154], + "pivot": [-0.10577, 7.24816, -1.47666], + "rotation": [89.99999, 19.78491, 89.99999], + "uv": { + "north": {"uv": [33, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [32, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [33, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [33, 33], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 0.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15469, 7.50385, -2.1762], + "size": [0.04791, 0.27012, 0.21154], + "pivot": [-0.10577, 7.50385, -2.1762], + "rotation": [89.99999, 19.78491, 89.99999], + "uv": { + "north": {"uv": [1, 34], "uv_size": [0.25, 0.25]}, + "east": {"uv": [34, 1], "uv_size": [0.25, 0.25]}, + "south": {"uv": [2, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [34, 2], "uv_size": [0.25, 0.25]}, + "up": {"uv": [3, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 3.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15609, 7.475, -1.07672], + "size": [0.04791, 0.27012, 0.21153], + "pivot": [-0.10577, 7.1026, -1.07672], + "rotation": [89.99999, 19.78491, 89.99999], + "uv": { + "north": {"uv": [4, 34], "uv_size": [0.25, 0.25]}, + "east": {"uv": [34, 4], "uv_size": [0.25, 0.25]}, + "south": {"uv": [5, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [34, 5], "uv_size": [0.25, 0.25]}, + "up": {"uv": [6, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 6.25], "uv_size": [0.25, -0.25]} + } + } + ] + }, + { + "name": "a3", + "parent": "talon", + "pivot": [-0.1064, 4.9677, 0.13874] + }, + { + "name": "bone2", + "parent": "talon", + "pivot": [-0.532, 9.13588, 5.4958], + "cubes": [ + { + "origin": [-0.1064, 6.44856, 0.04447], + "size": [0.2128, 0.32247, 0.3932], + "pivot": [-0.3192, 6.61143, -0.41353], + "rotation": [95, 0, 0], + "uv": { + "north": {"uv": [7, 34], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 26], "uv_size": [0.5, 0.25]}, + "south": {"uv": [34, 7], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 6], "uv_size": [0.5, 0.25]}, + "up": {"uv": [7, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 7.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.09495, 9.36271, -4.2577], + "size": [0.10483, 0.38142, 0.48929], + "inflate": 0.001, + "pivot": [-0.09595, 9.36171, -3.76741], + "rotation": [52.60545, 3.04137, 3.9705], + "uv": { + "north": {"uv": [8, 26], "uv_size": [0.25, 0.5]}, + "east": {"uv": [16, 9], "uv_size": [0.5, 0.5]}, + "south": {"uv": [26, 8], "uv_size": [0.25, 0.5]}, + "west": {"uv": [15, 16], "uv_size": [0.5, 0.5]}, + "up": {"uv": [9, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 9.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.09495, 9.59588, -4.37539], + "size": [0.10483, 0.76447, 0.30309], + "inflate": 0.001, + "pivot": [-0.09595, 9.59488, -4.0713], + "rotation": [52.60545, 3.04137, 3.9705], + "uv": { + "north": {"uv": [14, 20], "uv_size": [0.25, 0.75]}, + "east": {"uv": [20, 14], "uv_size": [0.25, 0.75]}, + "south": {"uv": [15, 20], "uv_size": [0.25, 0.75]}, + "west": {"uv": [20, 15], "uv_size": [0.25, 0.75]}, + "up": {"uv": [8, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 8.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.12951, 9.75637, -4.92844], + "size": [0.10483, 0.51691, 0.14349], + "inflate": 0.001, + "pivot": [-0.13051, 9.75537, -4.92944], + "rotation": [23.10507, 3.12911, 3.82048], + "uv": { + "north": {"uv": [10, 26], "uv_size": [0.25, 0.5]}, + "east": {"uv": [26, 10], "uv_size": [0.25, 0.5]}, + "south": {"uv": [11, 26], "uv_size": [0.25, 0.5]}, + "west": {"uv": [26, 11], "uv_size": [0.25, 0.5]}, + "up": {"uv": [9, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 9.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1303, 8.98912, -4.92923], + "size": [0.1064, 0.76604, 0.30466], + "pivot": [-0.13051, 9.75537, -4.92944], + "rotation": [45.10545, 3.04137, 3.9705], + "uv": { + "north": {"uv": [16, 20], "uv_size": [0.25, 0.75]}, + "east": {"uv": [20, 16], "uv_size": [0.25, 0.75]}, + "south": {"uv": [17, 20], "uv_size": [0.25, 0.75]}, + "west": {"uv": [20, 17], "uv_size": [0.25, 0.75]}, + "up": {"uv": [10, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 10.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.02468, 9.75637, -4.92844], + "size": [0.10483, 0.51691, 0.14349], + "inflate": 0.001, + "pivot": [0.13051, 9.75537, -4.92944], + "rotation": [23.10507, -3.12911, -3.82048], + "uv": { + "north": {"uv": [12, 26], "uv_size": [0.25, 0.5]}, + "east": {"uv": [26, 12], "uv_size": [0.25, 0.5]}, + "south": {"uv": [13, 26], "uv_size": [0.25, 0.5]}, + "west": {"uv": [26, 13], "uv_size": [0.25, 0.5]}, + "up": {"uv": [11, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 11.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.02543, 9.27969, -4.41348], + "size": [0.10483, 0.76446, 0.30309], + "inflate": 0.001, + "pivot": [0.13126, 9.27869, -4.32219], + "rotation": [45.10545, -3.04137, -3.9705], + "uv": { + "north": {"uv": [18, 20], "uv_size": [0.25, 0.75]}, + "east": {"uv": [20, 18], "uv_size": [0.25, 0.75]}, + "south": {"uv": [19, 20], "uv_size": [0.25, 0.75]}, + "west": {"uv": [20, 19], "uv_size": [0.25, 0.75]}, + "up": {"uv": [12, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 12.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09576, 9.94406, -4.84052], + "size": [0.1064, 0.62776, 0.16106], + "pivot": [-0.09595, 10.06148, -4.67938], + "rotation": [50.10753, 3.21154, 3.83424], + "uv": { + "north": {"uv": [20, 20], "uv_size": [0.25, 0.75]}, + "east": {"uv": [0, 21], "uv_size": [0.25, 0.75]}, + "south": {"uv": [21, 0], "uv_size": [0.25, 0.75]}, + "west": {"uv": [1, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [13, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 13.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09576, 9.94406, -4.94692], + "size": [0.1064, 0.25536, 0.10786], + "pivot": [-0.09595, 10.06148, -4.67938], + "rotation": [50.10753, 3.21154, 3.83424], + "uv": { + "north": {"uv": [14, 34], "uv_size": [0.25, 0.25]}, + "east": {"uv": [34, 14], "uv_size": [0.25, 0.25]}, + "south": {"uv": [15, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [34, 15], "uv_size": [0.25, 0.25]}, + "up": {"uv": [16, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 16.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.01064, 9.94406, -4.94692], + "size": [0.1064, 0.25536, 0.10786], + "pivot": [0.09595, 10.06148, -4.67938], + "rotation": [50.10753, -3.21154, -3.83424], + "uv": { + "north": {"uv": [17, 34], "uv_size": [0.25, 0.25]}, + "east": {"uv": [34, 17], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [34, 18], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 19.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09576, 8.95345, -3.40772], + "size": [0.1064, 1.14912, 0.49091], + "pivot": [-0.09576, 8.95345, -2.91681], + "rotation": [62.58937, 2.30644, 4.43745], + "uv": { + "north": {"uv": [1, 10], "uv_size": [0.25, 1.25]}, + "east": {"uv": [1, 5], "uv_size": [0.5, 1.25]}, + "south": {"uv": [2, 10], "uv_size": [0.25, 1.25]}, + "west": {"uv": [5, 1], "uv_size": [0.5, 1.25]}, + "up": {"uv": [14, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 14.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.09495, 8.62423, -2.45121], + "size": [0.10483, 1.1475, 0.48928], + "inflate": 0.001, + "pivot": [-0.09595, 8.62323, -1.96093], + "rotation": [70.0701, 1.70818, 4.69986], + "uv": { + "north": {"uv": [10, 2], "uv_size": [0.25, 1.25]}, + "east": {"uv": [3, 5], "uv_size": [0.5, 1.25]}, + "south": {"uv": [3, 10], "uv_size": [0.25, 1.25]}, + "west": {"uv": [5, 3], "uv_size": [0.5, 1.25]}, + "up": {"uv": [15, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 15.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.09495, 8.44089, -1.31334], + "size": [0.10483, 0.57747, 0.59569], + "inflate": 0.001, + "pivot": [-0.09595, 8.43989, -0.71665], + "rotation": [85.01893, 0.43523, 4.98107], + "uv": { + "north": {"uv": [16, 26], "uv_size": [0.25, 0.5]}, + "east": {"uv": [16, 16], "uv_size": [0.5, 0.5]}, + "south": {"uv": [26, 16], "uv_size": [0.25, 0.5]}, + "west": {"uv": [0, 17], "uv_size": [0.5, 0.5]}, + "up": {"uv": [17, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 17.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.01064, 9.94406, -4.84052], + "size": [0.1064, 0.62776, 0.16106], + "pivot": [0.09595, 10.06148, -4.67938], + "rotation": [50.10753, -3.21154, -3.83424], + "uv": { + "north": {"uv": [21, 1], "uv_size": [0.25, 0.75]}, + "east": {"uv": [2, 21], "uv_size": [0.25, 0.75]}, + "south": {"uv": [21, 2], "uv_size": [0.25, 0.75]}, + "west": {"uv": [3, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [20, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 20.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.00988, 9.59588, -4.37539], + "size": [0.10483, 0.76447, 0.30309], + "inflate": 0.001, + "pivot": [0.09595, 9.59488, -4.0713], + "rotation": [52.60545, -3.04137, -3.9705], + "uv": { + "north": {"uv": [21, 3], "uv_size": [0.25, 0.75]}, + "east": {"uv": [4, 21], "uv_size": [0.25, 0.75]}, + "south": {"uv": [21, 4], "uv_size": [0.25, 0.75]}, + "west": {"uv": [5, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [21, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.00988, 9.36271, -4.2577], + "size": [0.10483, 0.38142, 0.48929], + "inflate": 0.001, + "pivot": [0.09595, 9.36171, -3.76741], + "rotation": [52.60545, -3.04137, -3.9705], + "uv": { + "north": {"uv": [18, 26], "uv_size": [0.25, 0.5]}, + "east": {"uv": [1, 17], "uv_size": [0.5, 0.5]}, + "south": {"uv": [26, 18], "uv_size": [0.25, 0.5]}, + "west": {"uv": [17, 1], "uv_size": [0.5, 0.5]}, + "up": {"uv": [19, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 19.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.01064, 8.95345, -3.40772], + "size": [0.1064, 1.14912, 0.49091], + "pivot": [0.09576, 8.95345, -2.91681], + "rotation": [62.58937, -2.30644, -4.43745], + "uv": { + "north": {"uv": [4, 10], "uv_size": [0.25, 1.25]}, + "east": {"uv": [4, 5], "uv_size": [0.5, 1.25]}, + "south": {"uv": [10, 4], "uv_size": [0.25, 1.25]}, + "west": {"uv": [5, 5], "uv_size": [0.5, 1.25]}, + "up": {"uv": [20, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 20.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.00988, 8.62423, -2.45121], + "size": [0.10483, 1.1475, 0.48928], + "inflate": 0.001, + "pivot": [0.09595, 8.62323, -1.96093], + "rotation": [70.0701, -1.70818, -4.69986], + "uv": { + "north": {"uv": [5, 10], "uv_size": [0.25, 1.25]}, + "east": {"uv": [0, 6], "uv_size": [0.5, 1.25]}, + "south": {"uv": [10, 6], "uv_size": [0.25, 1.25]}, + "west": {"uv": [6, 0], "uv_size": [0.5, 1.25]}, + "up": {"uv": [21, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 21.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.01064, 8.46178, -1.64848], + "size": [0.1064, 0.9576, 0.49091], + "pivot": [0.09576, 8.46178, -1.15757], + "rotation": [77.54608, -1.08089, -4.88206], + "uv": { + "north": {"uv": [2, 17], "uv_size": [0.25, 1]}, + "east": {"uv": [6, 6], "uv_size": [0.5, 1]}, + "south": {"uv": [17, 2], "uv_size": [0.25, 1]}, + "west": {"uv": [7, 0], "uv_size": [0.5, 1]}, + "up": {"uv": [22, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 22.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.00988, 8.44089, -1.31334], + "size": [0.10483, 0.57747, 0.59569], + "inflate": 0.001, + "pivot": [0.09595, 8.43989, -0.71665], + "rotation": [85.01893, -0.43523, -4.98107], + "uv": { + "north": {"uv": [23, 26], "uv_size": [0.25, 0.5]}, + "east": {"uv": [4, 17], "uv_size": [0.5, 0.5]}, + "south": {"uv": [26, 23], "uv_size": [0.25, 0.5]}, + "west": {"uv": [17, 4], "uv_size": [0.5, 0.5]}, + "up": {"uv": [24, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 24.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.21057, 8.9509, -0.89855], + "size": [0.13543, 0.57908, 0.13543], + "pivot": [0.01905, 8.81178, -0.54466], + "rotation": [86.45998, 3.53329, 44.89078], + "uv": { + "north": {"uv": [25, 26], "uv_size": [0.25, 0.5]}, + "east": {"uv": [26, 25], "uv_size": [0.25, 0.5]}, + "south": {"uv": [26, 26], "uv_size": [0.25, 0.5]}, + "west": {"uv": [0, 27], "uv_size": [0.25, 0.5]}, + "up": {"uv": [22, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 22.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09576, 8.48614, -1.26742], + "size": [0.13543, 0.84508, 0.13543], + "pivot": [-0.09576, 8.48614, -1.26742], + "rotation": [81.09072, 8.80348, 44.31282], + "uv": { + "north": {"uv": [21, 5], "uv_size": [0.25, 0.75]}, + "east": {"uv": [6, 21], "uv_size": [0.25, 0.75]}, + "south": {"uv": [21, 6], "uv_size": [0.25, 0.75]}, + "west": {"uv": [7, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [23, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 23.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09575, 8.66159, -2.0669], + "size": [0.13542, 1.03661, 0.13542], + "pivot": [-0.09575, 8.66159, -2.0669], + "rotation": [75.56724, 13.99545, 43.21918], + "uv": { + "north": {"uv": [5, 17], "uv_size": [0.25, 1]}, + "east": {"uv": [17, 5], "uv_size": [0.25, 1]}, + "south": {"uv": [6, 17], "uv_size": [0.25, 1]}, + "west": {"uv": [17, 6], "uv_size": [0.25, 1]}, + "up": {"uv": [24, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 24.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09575, 9.00541, -3.01661], + "size": [0.13542, 1.0366, 0.13542], + "pivot": [-0.09575, 9.00541, -3.01661], + "rotation": [69.78119, 19.05698, 41.57386], + "uv": { + "north": {"uv": [7, 17], "uv_size": [0.25, 1]}, + "east": {"uv": [17, 7], "uv_size": [0.25, 1]}, + "south": {"uv": [8, 17], "uv_size": [0.25, 1]}, + "west": {"uv": [17, 9], "uv_size": [0.25, 1]}, + "up": {"uv": [25, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09575, 9.43016, -3.85695], + "size": [0.13542, 1.03661, 0.13543], + "pivot": [-0.09575, 9.43016, -3.85695], + "rotation": [61.51647, 25.49664, 38.42669], + "uv": { + "north": {"uv": [17, 10], "uv_size": [0.25, 1]}, + "east": {"uv": [17, 11], "uv_size": [0.25, 1]}, + "south": {"uv": [17, 12], "uv_size": [0.25, 1]}, + "west": {"uv": [17, 13], "uv_size": [0.25, 1]}, + "up": {"uv": [26, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 26.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09575, 10.05827, -4.67567], + "size": [0.13542, 0.51524, 0.13542], + "pivot": [-0.09575, 10.05827, -4.67567], + "rotation": [59.31787, 27.03394, 37.45356], + "uv": { + "north": {"uv": [27, 0], "uv_size": [0.25, 0.5]}, + "east": {"uv": [1, 27], "uv_size": [0.25, 0.5]}, + "south": {"uv": [27, 1], "uv_size": [0.25, 0.5]}, + "west": {"uv": [2, 27], "uv_size": [0.25, 0.5]}, + "up": {"uv": [27, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.06771, 10.25982, -5.25763], + "size": [0.13543, 0.44209, 0.13542], + "pivot": [0, 10.54404, -5.18992], + "rotation": [49.87918, 32.79765, 32.73226], + "uv": { + "north": {"uv": [27, 2], "uv_size": [0.25, 0.5]}, + "east": {"uv": [3, 27], "uv_size": [0.25, 0.5]}, + "south": {"uv": [27, 3], "uv_size": [0.25, 0.5]}, + "west": {"uv": [4, 27], "uv_size": [0.25, 0.5]}, + "up": {"uv": [28, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 28.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.00022, 10.68577, -5.27605], + "size": [0, 0.3889, 0.0922], + "pivot": [0.00001, 10.68577, -5.18385], + "rotation": [45.32686, 35.11938, 30.17716], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [27, 4], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [5, 27], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.00022, 11.07147, -5.22285], + "size": [0, 0.2692, 0.039], + "pivot": [0.00001, 10.68577, -5.18385], + "rotation": [45.32686, 35.11938, 30.17716], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [29, 34], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [34, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.00022, 11.33747, -5.21287], + "size": [0, 0.1628, 0.02902], + "pivot": [0.00001, 10.68577, -5.18385], + "rotation": [45.32686, 35.11938, 30.17716], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [30, 34], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [34, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.03623, 10.65748, -5.30063], + "size": [0, 0.3889, 0.0523], + "pivot": [-0.03644, 10.65748, -5.20843], + "rotation": [37.82686, 35.11938, 30.17716], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [27, 5], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [6, 27], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.03623, 11.04318, -5.30063], + "size": [0, 0.2692, 0.0523], + "pivot": [-0.03644, 10.65748, -5.20843], + "rotation": [37.82686, 35.11938, 30.17716], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [31, 34], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [34, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.03623, 11.30918, -5.28733], + "size": [0, 0.1628, 0.01905], + "pivot": [-0.03644, 10.65748, -5.20843], + "rotation": [37.82686, 35.11938, 30.17716], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [32, 34], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [34, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.09576, 10.20577, -5.48714], + "size": [0.13543, 0.24924, 0.14872], + "pivot": [-0.09576, 10.72101, -5.33842], + "rotation": [40.10759, 3.82809, 3.21863], + "uv": { + "north": {"uv": [33, 34], "uv_size": [0.25, 0.25]}, + "east": {"uv": [34, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [34, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 35], "uv_size": [0.25, 0.25]}, + "up": {"uv": [35, 0], "uv_size": [0.25, 0.25]}, + "down": {"uv": [1, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09576, 10.45501, -5.43394], + "size": [0.13543, 0.1064, 0.09552], + "pivot": [-0.09576, 10.72101, -5.33842], + "rotation": [40.10759, 3.82809, 3.21863], + "uv": { + "north": {"uv": [35, 1], "uv_size": [0.25, 0.25]}, + "east": {"uv": [2, 35], "uv_size": [0.25, 0.25]}, + "south": {"uv": [35, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [3, 35], "uv_size": [0.25, 0.25]}, + "up": {"uv": [35, 3], "uv_size": [0.25, 0.25]}, + "down": {"uv": [4, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09576, 10.56141, -5.38074], + "size": [0.13543, 0.08645, 0.04232], + "pivot": [-0.09576, 10.72101, -5.33842], + "rotation": [40.10759, 3.82809, 3.21863], + "uv": { + "north": {"uv": [35, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 35], "uv_size": [0.25, 0.25]}, + "south": {"uv": [35, 5], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 35], "uv_size": [0.25, 0.25]}, + "up": {"uv": [35, 6], "uv_size": [0.25, 0.25]}, + "down": {"uv": [7, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.03967, 10.45501, -5.43394], + "size": [0.13543, 0.1064, 0.09552], + "pivot": [0.09576, 10.72101, -5.33842], + "rotation": [40.10759, -3.82809, -3.21863], + "uv": { + "north": {"uv": [35, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 35], "uv_size": [0.25, 0.25]}, + "south": {"uv": [35, 8], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 35], "uv_size": [0.25, 0.25]}, + "up": {"uv": [35, 9], "uv_size": [0.25, 0.25]}, + "down": {"uv": [10, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.03967, 10.56141, -5.38074], + "size": [0.13543, 0.08645, 0.04232], + "pivot": [0.09576, 10.72101, -5.33842], + "rotation": [40.10759, -3.82809, -3.21863], + "uv": { + "north": {"uv": [35, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 35], "uv_size": [0.25, 0.25]}, + "south": {"uv": [35, 11], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 35], "uv_size": [0.25, 0.25]}, + "up": {"uv": [35, 12], "uv_size": [0.25, 0.25]}, + "down": {"uv": [13, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.03967, 10.20577, -5.48714], + "size": [0.13543, 0.24924, 0.14872], + "pivot": [0.09576, 10.72101, -5.33842], + "rotation": [40.10759, -3.82809, -3.21863], + "uv": { + "north": {"uv": [35, 13], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 35], "uv_size": [0.25, 0.25]}, + "south": {"uv": [35, 14], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 35], "uv_size": [0.25, 0.25]}, + "up": {"uv": [35, 15], "uv_size": [0.25, 0.25]}, + "down": {"uv": [16, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.31668, 8.2819, -4.88552], + "size": [0.29058, 1.34927, 0.05135], + "pivot": [-0.0261, 9.13907, -4.88552], + "rotation": [66.80578, 42.6931, 57.71073], + "uv": { + "north": {"uv": [7, 10], "uv_size": [0.25, 1.25]}, + "east": {"uv": [8, 10], "uv_size": [0.25, 1.25]}, + "south": {"uv": [10, 8], "uv_size": [0.25, 1.25]}, + "west": {"uv": [9, 10], "uv_size": [0.25, 1.25]}, + "up": {"uv": [35, 16], "uv_size": [0.25, 0.25]}, + "down": {"uv": [17, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.35658, 9.50189, -5.21799], + "size": [0.33048, 0.10667, 0.05135], + "pivot": [-0.0261, 9.50189, -5.21799], + "rotation": [52.79022, 55.91905, 45.97128], + "uv": { + "north": {"uv": [35, 17], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 35], "uv_size": [0.25, 0.25]}, + "south": {"uv": [35, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [19, 35], "uv_size": [0.25, 0.25]}, + "up": {"uv": [35, 19], "uv_size": [0.25, 0.25]}, + "down": {"uv": [20, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0261, 9.50189, -5.21799], + "size": [0.33048, 0.10667, 0.05135], + "pivot": [0.0261, 9.50189, -5.21799], + "rotation": [52.79022, -55.91905, -45.97128], + "uv": { + "north": {"uv": [35, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 35], "uv_size": [0.25, 0.25]}, + "south": {"uv": [35, 21], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 35], "uv_size": [0.25, 0.25]}, + "up": {"uv": [35, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [23, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 8.50631, -4.65831], + "size": [0.24183, 1.33412, 0.0532], + "pivot": [-0.16003, 9.34833, -4.65831], + "rotation": [66.15711, 42.38545, 56.75131], + "uv": { + "north": {"uv": [10, 10], "uv_size": [0.25, 1.25]}, + "east": {"uv": [0, 11], "uv_size": [0.25, 1.25]}, + "south": {"uv": [11, 0], "uv_size": [0.25, 1.25]}, + "west": {"uv": [11, 2], "uv_size": [0.25, 1.25]}, + "up": {"uv": [35, 23], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 9.71115, -4.99109], + "size": [0.3252, 0.09714, 0.05352], + "pivot": [-0.16003, 9.71115, -4.99077], + "rotation": [45.64649, 57.64311, 40.82741], + "uv": { + "north": {"uv": [35, 24], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 35], "uv_size": [0.25, 0.25]}, + "south": {"uv": [35, 25], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 35], "uv_size": [0.25, 0.25]}, + "up": {"uv": [35, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [27, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16517, 9.71115, -4.99109], + "size": [0.3252, 0.09714, 0.05352], + "pivot": [0.16003, 9.71115, -4.99077], + "rotation": [45.64649, -57.64311, -40.82741], + "uv": { + "north": {"uv": [35, 27], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 35], "uv_size": [0.25, 0.25]}, + "south": {"uv": [35, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [29, 35], "uv_size": [0.25, 0.25]}, + "up": {"uv": [35, 29], "uv_size": [0.25, 0.25]}, + "down": {"uv": [30, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16289, 9.80469, -4.99675], + "size": [0.32535, 0.20504, 0.03258], + "pivot": [-0.16003, 9.71115, -4.99077], + "rotation": [43.90896, 56.40988, 43.11064], + "uv": { + "north": {"uv": [35, 30], "uv_size": [0.25, 0.25]}, + "east": {"uv": [31, 35], "uv_size": [0.25, 0.25]}, + "south": {"uv": [35, 31], "uv_size": [0.25, 0.25]}, + "west": {"uv": [32, 35], "uv_size": [0.25, 0.25]}, + "up": {"uv": [35, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [33, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.14556, 9.98658, -5.10533], + "size": [0.21896, 0.6384, 0.03258], + "pivot": [-0.14556, 9.98658, -5.10533], + "rotation": [43.90896, 56.40988, 43.11064], + "uv": { + "north": {"uv": [21, 7], "uv_size": [0.25, 0.75]}, + "east": {"uv": [8, 21], "uv_size": [0.25, 0.75]}, + "south": {"uv": [21, 8], "uv_size": [0.25, 0.75]}, + "west": {"uv": [9, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [35, 33], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1246, 9.84441, -5.53266], + "size": [0.11256, 0.6472, 0.03258], + "pivot": [-0.01204, 10.49161, -5.53266], + "rotation": [31.21338, 62.22201, 28.38815], + "uv": { + "north": {"uv": [21, 9], "uv_size": [0.25, 0.75]}, + "east": {"uv": [10, 21], "uv_size": [0.25, 0.75]}, + "south": {"uv": [21, 10], "uv_size": [0.25, 0.75]}, + "west": {"uv": [11, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [35, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [35, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.01204, 9.84441, -5.53266], + "size": [0.11256, 0.6472, 0.03258], + "pivot": [0.01204, 10.49161, -5.53266], + "rotation": [31.21338, -62.22201, -28.38815], + "uv": { + "north": {"uv": [21, 11], "uv_size": [0.25, 0.75]}, + "east": {"uv": [12, 21], "uv_size": [0.25, 0.75]}, + "south": {"uv": [21, 12], "uv_size": [0.25, 0.75]}, + "west": {"uv": [13, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [0, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 0.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.05606, 10.00973, -4.99675], + "size": [0.21895, 0.6384, 0.03258], + "pivot": [0.16003, 9.71115, -4.99077], + "rotation": [43.90896, -56.40988, -43.11064], + "uv": { + "north": {"uv": [21, 13], "uv_size": [0.25, 0.75]}, + "east": {"uv": [14, 21], "uv_size": [0.25, 0.75]}, + "south": {"uv": [21, 14], "uv_size": [0.25, 0.75]}, + "west": {"uv": [15, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [1, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 1.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.05477, 8.93192, -4.95556], + "size": [0.10326, 0.89267, 0.07085], + "inflate": 0.002, + "pivot": [0.16003, 9.82659, -4.95756], + "rotation": [-157.4296, 1.51708, -3.75851], + "uv": { + "north": {"uv": [17, 14], "uv_size": [0.25, 1]}, + "east": {"uv": [15, 17], "uv_size": [0.25, 1]}, + "south": {"uv": [17, 15], "uv_size": [0.25, 1]}, + "west": {"uv": [16, 17], "uv_size": [0.25, 1]}, + "up": {"uv": [2, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 2.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16246, 9.80469, -4.99675], + "size": [0.32535, 0.20504, 0.03258], + "pivot": [0.16003, 9.71115, -4.99077], + "rotation": [43.90896, -56.40988, -43.11064], + "uv": { + "north": {"uv": [3, 36], "uv_size": [0.25, 0.25]}, + "east": {"uv": [36, 3], "uv_size": [0.25, 0.25]}, + "south": {"uv": [4, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [36, 4], "uv_size": [0.25, 0.25]}, + "up": {"uv": [5, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 5.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.02628, 8.50376, -4.41631], + "size": [0.04892, 1.34928, 0.05221], + "pivot": [-0.0438, 8.82248, -4.43401], + "rotation": [89.99998, 47.50002, 89.99998], + "uv": { + "north": {"uv": [11, 4], "uv_size": [0.25, 1.25]}, + "east": {"uv": [6, 11], "uv_size": [0.25, 1.25]}, + "south": {"uv": [11, 6], "uv_size": [0.25, 1.25]}, + "west": {"uv": [11, 8], "uv_size": [0.25, 1.25]}, + "up": {"uv": [6, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 6.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.07502, 9.59727, -5.25239], + "size": [0.04892, 0.12568, 0.0256], + "pivot": [-0.0261, 9.59727, -5.26569], + "rotation": [89.99997, 67.50002, 89.99997], + "uv": { + "north": {"uv": [7, 36], "uv_size": [0.25, 0.25]}, + "east": {"uv": [36, 7], "uv_size": [0.25, 0.25]}, + "south": {"uv": [8, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [36, 8], "uv_size": [0.25, 0.25]}, + "up": {"uv": [9, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 9.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.06172, 9.49154, -5.26569], + "size": [0.04892, 0.10573, 0.0256], + "pivot": [-0.0128, 9.59727, -5.26569], + "rotation": [89.99997, 63.4292, 89.99997], + "uv": { + "north": {"uv": [10, 36], "uv_size": [0.25, 0.25]}, + "east": {"uv": [36, 10], "uv_size": [0.25, 0.25]}, + "south": {"uv": [11, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [36, 11], "uv_size": [0.25, 0.25]}, + "up": {"uv": [12, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 12.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.06307, 9.86357, -5.37635], + "size": [0.04894, 0.64728, 0.02409], + "pivot": [-0.01415, 9.86357, -5.37635], + "rotation": [89.62365, 76.02354, 89.80402], + "uv": { + "north": {"uv": [21, 15], "uv_size": [0.25, 0.75]}, + "east": {"uv": [16, 21], "uv_size": [0.25, 0.75]}, + "south": {"uv": [21, 16], "uv_size": [0.25, 0.75]}, + "west": {"uv": [17, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [13, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 13.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0133, 10.48867, -5.4761], + "size": [0.0266, 0.91328, 0.05069], + "pivot": [-0.00002, 10.27587, -5.4761], + "rotation": [15, 0, 0], + "uv": { + "north": {"uv": [17, 16], "uv_size": [0.25, 1]}, + "east": {"uv": [17, 17], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 18], "uv_size": [0.25, 1]}, + "west": {"uv": [18, 0], "uv_size": [0.25, 1]}, + "up": {"uv": [14, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 14.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0133, 10.48142, -5.47798], + "size": [0, 0.0798, 0.11305], + "pivot": [-0.0133, 10.48142, -5.53118], + "rotation": [26.50218, -24.33266, -6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [15, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 15], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.10549, 10.56882, -5.40543], + "size": [0, 0.6783, 0.0532], + "pivot": [-0.10549, 10.56882, -5.35223], + "rotation": [30.25218, -24.33266, -6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "east": {"uv": [21, 17], "uv_size": [0.25, 0.75]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "west": {"uv": [18, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.10549, 11.24712, -5.37883], + "size": [0, 0.1197, 0.0266], + "pivot": [-0.10549, 10.56882, -5.35223], + "rotation": [30.25218, -24.33266, -6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [16, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 16], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.10549, 11.36682, -5.36553], + "size": [0, 0.0532, 0.0133], + "pivot": [-0.10549, 10.56882, -5.35223], + "rotation": [30.25218, -24.33266, -6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [17, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 17], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.10549, 11.42002, -5.35888], + "size": [0, 0.0266, 0.00665], + "pivot": [-0.10549, 10.56882, -5.35223], + "rotation": [30.25218, -24.33266, -6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [18, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 18], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.10549, 10.64862, -5.49853], + "size": [0, 0.1995, 0.0931], + "pivot": [-0.10549, 10.56882, -5.35223], + "rotation": [30.25218, -24.33266, -6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [19, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 19], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.0133, 10.48142, -5.47798], + "size": [0, 0.0798, 0.11305], + "pivot": [0.0133, 10.48142, -5.53118], + "rotation": [26.50218, 24.33266, 6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [20, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 20], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.10549, 10.64862, -5.49853], + "size": [0, 0.1995, 0.0931], + "pivot": [0.10549, 10.56882, -5.35223], + "rotation": [30.25218, 24.33266, 6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [21, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.10549, 10.84812, -5.47193], + "size": [0, 0.133, 0.0665], + "pivot": [-0.10549, 10.56882, -5.35223], + "rotation": [30.25218, -24.33266, -6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [22, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 22], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.10549, 10.98112, -5.44533], + "size": [0, 0.0665, 0.0399], + "pivot": [-0.10549, 10.56882, -5.35223], + "rotation": [30.25218, -24.33266, -6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [23, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.0133, 10.48142, -5.53118], + "size": [0, 0.7049, 0.0532], + "pivot": [-0.0133, 10.48142, -5.53118], + "rotation": [16.50218, -24.33266, -6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "east": {"uv": [21, 18], "uv_size": [0.25, 0.75]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "west": {"uv": [19, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.0133, 11.18632, -5.53118], + "size": [0, 0.1064, 0.0266], + "pivot": [-0.0133, 10.48142, -5.53118], + "rotation": [16.50218, -24.33266, -6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [24, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 24], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.0133, 11.29272, -5.53118], + "size": [0, 0.0532, 0.0133], + "pivot": [-0.0133, 10.48142, -5.53118], + "rotation": [16.50218, -24.33266, -6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [25, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 25], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.0133, 11.34592, -5.53118], + "size": [0, 0.0266, 0.00665], + "pivot": [-0.0133, 10.48142, -5.53118], + "rotation": [16.50218, -24.33266, -6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [26, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 26], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0, 10.48867, -5.0372], + "size": [0, 1.00638, 0.07729], + "pivot": [-0.00002, 10.27587, -5.1968], + "rotation": [35, 0, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 1]}, + "east": {"uv": [1, 18], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 0], "uv_size": [0, 1]}, + "west": {"uv": [18, 1], "uv_size": [0.25, 1]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.0133, 10.49939, -5.78185], + "size": [0.0266, 0.91105, 0.0798], + "pivot": [0, 11.41044, -5.70205], + "rotation": [27.3818, -2.65155, 5.10396], + "uv": { + "north": {"uv": [2, 18], "uv_size": [0.25, 1]}, + "east": {"uv": [18, 2], "uv_size": [0.25, 1]}, + "south": {"uv": [3, 18], "uv_size": [0.25, 1]}, + "west": {"uv": [18, 3], "uv_size": [0.25, 1]}, + "up": {"uv": [27, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.03623, 11.30918, -5.28733], + "size": [0, 0.1628, 0.01905], + "pivot": [0.03644, 10.65748, -5.20843], + "rotation": [37.82686, -35.11938, -30.17716], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [28, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 28], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.00022, 11.33747, -5.21287], + "size": [0, 0.1628, 0.02902], + "pivot": [-0.00001, 10.68577, -5.18385], + "rotation": [45.32686, -35.11938, -30.17716], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [29, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.00022, 11.07147, -5.22285], + "size": [0, 0.2692, 0.039], + "pivot": [-0.00001, 10.68577, -5.18385], + "rotation": [45.32686, -35.11938, -30.17716], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [30, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.03623, 11.04318, -5.30063], + "size": [0, 0.2692, 0.0523], + "pivot": [0.03644, 10.65748, -5.20843], + "rotation": [37.82686, -35.11938, -30.17716], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [31, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.03623, 10.65748, -5.30063], + "size": [0, 0.3889, 0.0523], + "pivot": [0.03644, 10.65748, -5.20843], + "rotation": [37.82686, -35.11938, -30.17716], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [27, 6], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [7, 27], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.00574, 10.53447, -5.56806], + "size": [0.0532, 0.39235, 0.0665], + "pivot": [0.04564, 10.98999, -5.52816], + "rotation": [32.3818, 2.65155, -5.10396], + "uv": { + "north": {"uv": [27, 7], "uv_size": [0.25, 0.5]}, + "east": {"uv": [8, 27], "uv_size": [0.25, 0.5]}, + "south": {"uv": [27, 8], "uv_size": [0.25, 0.5]}, + "west": {"uv": [9, 27], "uv_size": [0.25, 0.5]}, + "up": {"uv": [32, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 32.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.00022, 10.68577, -5.27605], + "size": [0, 0.3889, 0.0922], + "pivot": [-0.00001, 10.68577, -5.18385], + "rotation": [45.32686, -35.11938, -30.17716], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "east": {"uv": [27, 9], "uv_size": [0.25, 0.5]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.5]}, + "west": {"uv": [10, 27], "uv_size": [0.25, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.0133, 11.34592, -5.53118], + "size": [0, 0.0266, 0.00665], + "pivot": [0.0133, 10.48142, -5.53118], + "rotation": [16.50218, 24.33266, 6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [33, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 33], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.10549, 11.42002, -5.35888], + "size": [0, 0.0266, 0.00665], + "pivot": [0.10549, 10.56882, -5.35223], + "rotation": [30.25218, 24.33266, 6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [34, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.0133, 11.29272, -5.53118], + "size": [0, 0.0532, 0.0133], + "pivot": [0.0133, 10.48142, -5.53118], + "rotation": [16.50218, 24.33266, 6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [35, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [36, 35], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.10549, 11.36682, -5.36553], + "size": [0, 0.0532, 0.0133], + "pivot": [0.10549, 10.56882, -5.35223], + "rotation": [30.25218, 24.33266, 6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [36, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [0, 37], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.0133, 11.18632, -5.53118], + "size": [0, 0.1064, 0.0266], + "pivot": [0.0133, 10.48142, -5.53118], + "rotation": [16.50218, 24.33266, 6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [37, 0], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [1, 37], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.10549, 11.24712, -5.37883], + "size": [0, 0.1197, 0.0266], + "pivot": [0.10549, 10.56882, -5.35223], + "rotation": [30.25218, 24.33266, 6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [37, 1], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [2, 37], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.10549, 10.98112, -5.44533], + "size": [0, 0.0665, 0.0399], + "pivot": [0.10549, 10.56882, -5.35223], + "rotation": [30.25218, 24.33266, 6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [37, 2], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [3, 37], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.10549, 10.84812, -5.47193], + "size": [0, 0.133, 0.0665], + "pivot": [0.10549, 10.56882, -5.35223], + "rotation": [30.25218, 24.33266, 6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "east": {"uv": [37, 3], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "west": {"uv": [4, 37], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.10549, 10.56882, -5.40543], + "size": [0, 0.6783, 0.0532], + "pivot": [0.10549, 10.56882, -5.35223], + "rotation": [30.25218, 24.33266, 6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "east": {"uv": [21, 19], "uv_size": [0.25, 0.75]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "west": {"uv": [20, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [0.0133, 10.48142, -5.53118], + "size": [0, 0.7049, 0.0532], + "pivot": [0.0133, 10.48142, -5.53118], + "rotation": [16.50218, 24.33266, 6.95949], + "uv": { + "north": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "east": {"uv": [21, 20], "uv_size": [0.25, 0.75]}, + "south": {"uv": [0, 0], "uv_size": [0, 0.75]}, + "west": {"uv": [21, 21], "uv_size": [0.25, 0.75]}, + "up": {"uv": [0, 0], "uv_size": [0, 0.25]}, + "down": {"uv": [0, 0.25], "uv_size": [0, -0.25]} + } + }, + { + "origin": [-0.0133, 10.49939, -5.78185], + "size": [0.0266, 0.91105, 0.0798], + "pivot": [0, 11.41044, -5.70205], + "rotation": [27.3818, 2.65155, -5.10396], + "uv": { + "north": {"uv": [4, 18], "uv_size": [0.25, 1]}, + "east": {"uv": [18, 4], "uv_size": [0.25, 1]}, + "south": {"uv": [5, 18], "uv_size": [0.25, 1]}, + "west": {"uv": [18, 5], "uv_size": [0.25, 1]}, + "up": {"uv": [37, 4], "uv_size": [0.25, 0.25]}, + "down": {"uv": [5, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.05894, 10.53447, -5.56806], + "size": [0.0532, 0.39235, 0.0665], + "pivot": [-0.04564, 10.98999, -5.52816], + "rotation": [32.3818, -2.65155, 5.10396], + "uv": { + "north": {"uv": [27, 10], "uv_size": [0.25, 0.5]}, + "east": {"uv": [11, 27], "uv_size": [0.25, 0.5]}, + "south": {"uv": [27, 11], "uv_size": [0.25, 0.5]}, + "west": {"uv": [12, 27], "uv_size": [0.25, 0.5]}, + "up": {"uv": [37, 5], "uv_size": [0.25, 0.25]}, + "down": {"uv": [6, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.01413, 9.86357, -5.37635], + "size": [0.04894, 0.64728, 0.02409], + "pivot": [0.01415, 9.86357, -5.37635], + "rotation": [89.62365, -76.02354, -89.80402], + "uv": { + "north": {"uv": [0, 22], "uv_size": [0.25, 0.75]}, + "east": {"uv": [22, 0], "uv_size": [0.25, 0.75]}, + "south": {"uv": [1, 22], "uv_size": [0.25, 0.75]}, + "west": {"uv": [22, 1], "uv_size": [0.25, 0.75]}, + "up": {"uv": [37, 6], "uv_size": [0.25, 0.25]}, + "down": {"uv": [7, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.07502, 9.50189, -5.21799], + "size": [0.04892, 0.10667, 0.02561], + "pivot": [-0.0261, 9.50189, -5.21799], + "rotation": [91.73725, 63.48104, 90.42627], + "uv": { + "north": {"uv": [37, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 37], "uv_size": [0.25, 0.25]}, + "south": {"uv": [37, 8], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 37], "uv_size": [0.25, 0.25]}, + "up": {"uv": [37, 9], "uv_size": [0.25, 0.25]}, + "down": {"uv": [10, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0261, 9.50189, -5.21799], + "size": [0.04892, 0.10667, 0.02561], + "pivot": [0.0261, 9.50189, -5.21799], + "rotation": [91.73725, -63.48104, -90.42627], + "uv": { + "north": {"uv": [37, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 37], "uv_size": [0.25, 0.25]}, + "south": {"uv": [37, 11], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 37], "uv_size": [0.25, 0.25]}, + "up": {"uv": [37, 12], "uv_size": [0.25, 0.25]}, + "down": {"uv": [13, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.02863, 9.59731, -5.26559], + "size": [0.04892, 0.08384, 0.0256], + "pivot": [0.02863, 9.59731, -5.26559], + "rotation": [90.5743, -67.49882, -90.62162], + "uv": { + "north": {"uv": [37, 13], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 37], "uv_size": [0.25, 0.25]}, + "south": {"uv": [37, 14], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 37], "uv_size": [0.25, 0.25]}, + "up": {"uv": [37, 15], "uv_size": [0.25, 0.25]}, + "down": {"uv": [16, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.02863, 9.67477, -5.29768], + "size": [0.04892, 0.20505, 0.02561], + "pivot": [0.02863, 9.67477, -5.29768], + "rotation": [86.53122, -67.39414, -90.62851], + "uv": { + "north": {"uv": [37, 16], "uv_size": [0.25, 0.25]}, + "east": {"uv": [17, 37], "uv_size": [0.25, 0.25]}, + "south": {"uv": [37, 17], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 37], "uv_size": [0.25, 0.25]}, + "up": {"uv": [37, 18], "uv_size": [0.25, 0.25]}, + "down": {"uv": [19, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.07755, 9.67477, -5.29768], + "size": [0.04892, 0.20505, 0.02561], + "pivot": [-0.02863, 9.67477, -5.29768], + "rotation": [86.53122, 67.39414, 90.62851], + "uv": { + "north": {"uv": [37, 19], "uv_size": [0.25, 0.25]}, + "east": {"uv": [20, 37], "uv_size": [0.25, 0.25]}, + "south": {"uv": [37, 20], "uv_size": [0.25, 0.25]}, + "west": {"uv": [21, 37], "uv_size": [0.25, 0.25]}, + "up": {"uv": [37, 21], "uv_size": [0.25, 0.25]}, + "down": {"uv": [22, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.07755, 9.59731, -5.26559], + "size": [0.04892, 0.08384, 0.0256], + "pivot": [-0.02863, 9.59731, -5.26559], + "rotation": [90.5743, 67.49882, 90.62162], + "uv": { + "north": {"uv": [37, 22], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 37], "uv_size": [0.25, 0.25]}, + "south": {"uv": [37, 23], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 37], "uv_size": [0.25, 0.25]}, + "up": {"uv": [37, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [25, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 8.14487, -4.11697], + "size": [0.24183, 0.6126, 0.0532], + "pivot": [-0.16003, 8.75747, -4.11697], + "rotation": [73.05874, 33.96864, 61.40193], + "uv": { + "north": {"uv": [27, 12], "uv_size": [0.25, 0.5]}, + "east": {"uv": [13, 27], "uv_size": [0.25, 0.5]}, + "south": {"uv": [27, 13], "uv_size": [0.25, 0.5]}, + "west": {"uv": [14, 27], "uv_size": [0.25, 0.5]}, + "up": {"uv": [37, 25], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.31668, 7.87935, -4.30643], + "size": [0.29058, 0.62774, 0.05135], + "pivot": [-0.0261, 8.50709, -4.30643], + "rotation": [73.55834, 34.19007, 62.29352], + "uv": { + "north": {"uv": [2, 22], "uv_size": [0.25, 0.75]}, + "east": {"uv": [22, 2], "uv_size": [0.25, 0.75]}, + "south": {"uv": [3, 22], "uv_size": [0.25, 0.75]}, + "west": {"uv": [22, 3], "uv_size": [0.25, 0.75]}, + "up": {"uv": [37, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [27, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0261, 8.2819, -4.88552], + "size": [0.29058, 1.34927, 0.05135], + "pivot": [0.0261, 9.13907, -4.88552], + "rotation": [66.80578, -42.6931, -57.71073], + "uv": { + "north": {"uv": [11, 10], "uv_size": [0.25, 1.25]}, + "east": {"uv": [12, 0], "uv_size": [0.25, 1.25]}, + "south": {"uv": [1, 12], "uv_size": [0.25, 1.25]}, + "west": {"uv": [2, 12], "uv_size": [0.25, 1.25]}, + "up": {"uv": [37, 27], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0818, 8.50631, -4.65831], + "size": [0.24183, 1.33412, 0.0532], + "pivot": [0.16003, 9.34833, -4.65831], + "rotation": [66.15711, -42.38545, -56.75131], + "uv": { + "north": {"uv": [12, 2], "uv_size": [0.25, 1.25]}, + "east": {"uv": [3, 12], "uv_size": [0.25, 1.25]}, + "south": {"uv": [4, 12], "uv_size": [0.25, 1.25]}, + "west": {"uv": [12, 4], "uv_size": [0.25, 1.25]}, + "up": {"uv": [37, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [29, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.12228, 8.13353, -3.9394], + "size": [0.04892, 0.62775, 0.05221], + "pivot": [0, 8.35956, -3.91329], + "rotation": [89.99999, -37.50002, -89.99999], + "uv": { + "north": {"uv": [4, 22], "uv_size": [0.25, 0.75]}, + "east": {"uv": [22, 4], "uv_size": [0.25, 0.75]}, + "south": {"uv": [5, 22], "uv_size": [0.25, 0.75]}, + "west": {"uv": [22, 5], "uv_size": [0.25, 0.75]}, + "up": {"uv": [37, 29], "uv_size": [0.25, 0.25]}, + "down": {"uv": [30, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0818, 8.14487, -4.11697], + "size": [0.24183, 0.6126, 0.0532], + "pivot": [0.16003, 8.75747, -4.11697], + "rotation": [73.05874, -33.96864, -61.40193], + "uv": { + "north": {"uv": [27, 14], "uv_size": [0.25, 0.5]}, + "east": {"uv": [15, 27], "uv_size": [0.25, 0.5]}, + "south": {"uv": [27, 15], "uv_size": [0.25, 0.5]}, + "west": {"uv": [16, 27], "uv_size": [0.25, 0.5]}, + "up": {"uv": [37, 30], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0261, 7.87935, -4.30643], + "size": [0.29058, 0.62774, 0.05135], + "pivot": [0.0261, 8.50709, -4.30643], + "rotation": [73.55834, -34.19007, -62.29352], + "uv": { + "north": {"uv": [6, 22], "uv_size": [0.25, 0.75]}, + "east": {"uv": [22, 6], "uv_size": [0.25, 0.75]}, + "south": {"uv": [7, 22], "uv_size": [0.25, 0.75]}, + "west": {"uv": [22, 7], "uv_size": [0.25, 0.75]}, + "up": {"uv": [37, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 7.15813, -3.65009], + "size": [0.24183, 1.24103, 0.0532], + "pivot": [-0.16003, 8.39916, -3.65009], + "rotation": [77.19347, 27.12444, 63.51071], + "uv": { + "north": {"uv": [5, 12], "uv_size": [0.25, 1.25]}, + "east": {"uv": [12, 6], "uv_size": [0.25, 1.25]}, + "south": {"uv": [7, 12], "uv_size": [0.25, 1.25]}, + "west": {"uv": [8, 12], "uv_size": [0.25, 1.25]}, + "up": {"uv": [37, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [33, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.20357, 7.28757, -3.20663], + "size": [0.29058, 1.28277, 0.05135], + "pivot": [-0.05828, 7.92895, -3.18096], + "rotation": [77.48097, 27.48677, 64.30836], + "uv": { + "north": {"uv": [12, 8], "uv_size": [0.25, 1.25]}, + "east": {"uv": [9, 12], "uv_size": [0.25, 1.25]}, + "south": {"uv": [10, 12], "uv_size": [0.25, 1.25]}, + "west": {"uv": [12, 10], "uv_size": [0.25, 1.25]}, + "up": {"uv": [37, 33], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0818, 7.15813, -3.65009], + "size": [0.24183, 1.24103, 0.0532], + "pivot": [0.16003, 8.39916, -3.65009], + "rotation": [77.19347, -27.12444, -63.51071], + "uv": { + "north": {"uv": [11, 12], "uv_size": [0.25, 1.25]}, + "east": {"uv": [12, 12], "uv_size": [0.25, 1.25]}, + "south": {"uv": [0, 13], "uv_size": [0.25, 1.25]}, + "west": {"uv": [13, 0], "uv_size": [0.25, 1.25]}, + "up": {"uv": [37, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [35, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.08701, 7.28757, -3.20663], + "size": [0.29058, 1.28277, 0.05135], + "pivot": [0.05828, 7.92895, -3.18096], + "rotation": [77.48097, -27.48677, -64.30836], + "uv": { + "north": {"uv": [13, 2], "uv_size": [0.25, 1.25]}, + "east": {"uv": [13, 4], "uv_size": [0.25, 1.25]}, + "south": {"uv": [6, 13], "uv_size": [0.25, 1.25]}, + "west": {"uv": [13, 6], "uv_size": [0.25, 1.25]}, + "up": {"uv": [37, 35], "uv_size": [0.25, 0.25]}, + "down": {"uv": [36, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 6.7707, -2.58756], + "size": [0.29503, 0.16372, 0.0532], + "pivot": [-0.16003, 7.78562, -2.58756], + "rotation": [81.70352, 18.26249, 65.04592], + "uv": { + "north": {"uv": [37, 36], "uv_size": [0.25, 0.25]}, + "east": {"uv": [37, 37], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 0], "uv_size": [0.25, 0.25]}, + "up": {"uv": [1, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 1.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 6.9303, -2.58756], + "size": [0.13543, 0.21692, 0.0532], + "pivot": [-0.16003, 7.78562, -2.58756], + "rotation": [81.70352, 18.26249, 65.04592], + "uv": { + "north": {"uv": [2, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 2], "uv_size": [0.25, 0.25]}, + "south": {"uv": [3, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 3], "uv_size": [0.25, 0.25]}, + "up": {"uv": [4, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 4.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 7.1431, -2.58756], + "size": [0.29503, 0.16372, 0.0532], + "pivot": [-0.16003, 7.78562, -2.58756], + "rotation": [81.70352, 18.26249, 65.04592], + "uv": { + "north": {"uv": [5, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 5], "uv_size": [0.25, 0.25]}, + "south": {"uv": [6, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 6], "uv_size": [0.25, 0.25]}, + "up": {"uv": [7, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 7.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 7.3027, -2.58756], + "size": [0.13543, 0.27012, 0.0532], + "pivot": [-0.16003, 7.78562, -2.58756], + "rotation": [81.70352, 18.26249, 65.04592], + "uv": { + "north": {"uv": [8, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 8], "uv_size": [0.25, 0.25]}, + "south": {"uv": [9, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 9], "uv_size": [0.25, 0.25]}, + "up": {"uv": [10, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 10.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.26793, 7.26479, -2.6975], + "size": [0.24183, 0.21877, 0.0532], + "pivot": [-0.0261, 7.48356, -2.6975], + "rotation": [82.45058, 18.3415, 67.16121], + "uv": { + "north": {"uv": [11, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 11], "uv_size": [0.25, 0.25]}, + "south": {"uv": [12, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 12], "uv_size": [0.25, 0.25]}, + "up": {"uv": [13, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 13.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.26793, 7.26479, -2.6443], + "size": [0.18863, 0.21877, 0.0532], + "pivot": [-0.0261, 7.48356, -2.6975], + "rotation": [82.45058, 18.3415, 67.16121], + "uv": { + "north": {"uv": [14, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 14], "uv_size": [0.25, 0.25]}, + "south": {"uv": [15, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 15], "uv_size": [0.25, 0.25]}, + "up": {"uv": [16, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 16.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0793, 7.26479, -2.6443], + "size": [0.18863, 0.21877, 0.0532], + "pivot": [0.0261, 7.48356, -2.6975], + "rotation": [82.45058, -18.3415, -67.16121], + "uv": { + "north": {"uv": [17, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 17], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 18], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 19.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 7.5687, -2.58756], + "size": [0.29503, 0.21692, 0.0532], + "pivot": [-0.16003, 7.78562, -2.58756], + "rotation": [81.70352, 18.26249, 65.04592], + "uv": { + "north": {"uv": [20, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 20], "uv_size": [0.25, 0.25]}, + "south": {"uv": [21, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 21], "uv_size": [0.25, 0.25]}, + "up": {"uv": [22, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 22.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.26793, 6.83919, -2.6975], + "size": [0.24183, 0.16557, 0.0532], + "pivot": [-0.0261, 7.48356, -2.6975], + "rotation": [82.45058, 18.3415, 67.16121], + "uv": { + "north": {"uv": [23, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 23], "uv_size": [0.25, 0.25]}, + "south": {"uv": [24, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 24], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 25.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.26793, 6.83919, -2.6443], + "size": [0.18863, 0.16557, 0.0532], + "pivot": [-0.0261, 7.48356, -2.6975], + "rotation": [82.45058, 18.3415, 67.16121], + "uv": { + "north": {"uv": [26, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [27, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 27], "uv_size": [0.25, 0.25]}, + "up": {"uv": [28, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 28.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0793, 6.83919, -2.6443], + "size": [0.18863, 0.16557, 0.0532], + "pivot": [0.0261, 7.48356, -2.6975], + "rotation": [82.45058, -18.3415, -67.16121], + "uv": { + "north": {"uv": [29, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 30], "uv_size": [0.25, 0.25]}, + "up": {"uv": [31, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 31.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.18101, 7.40237, -2.18783], + "size": [0.24182, 0.16558, 0.0532], + "pivot": [-0.0601, 7.45856, -2.16123], + "rotation": [82.69075, -11.41793, 71.00388], + "uv": { + "north": {"uv": [32, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 32], "uv_size": [0.25, 0.25]}, + "south": {"uv": [33, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 33], "uv_size": [0.25, 0.25]}, + "up": {"uv": [34, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 34.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.26793, 6.46679, -2.6975], + "size": [0.24183, 0.16557, 0.0532], + "pivot": [-0.0261, 7.48356, -2.6975], + "rotation": [82.45058, 18.3415, 67.16121], + "uv": { + "north": {"uv": [35, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [38, 35], "uv_size": [0.25, 0.25]}, + "south": {"uv": [36, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [38, 36], "uv_size": [0.25, 0.25]}, + "up": {"uv": [37, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 37.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.26793, 6.46679, -2.6443], + "size": [0.18863, 0.16557, 0.0532], + "pivot": [-0.0261, 7.48356, -2.6975], + "rotation": [82.45058, 18.3415, 67.16121], + "uv": { + "north": {"uv": [38, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [0, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [39, 0], "uv_size": [0.25, 0.25]}, + "west": {"uv": [1, 39], "uv_size": [0.25, 0.25]}, + "up": {"uv": [39, 1], "uv_size": [0.25, 0.25]}, + "down": {"uv": [2, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.0793, 6.46679, -2.6443], + "size": [0.18863, 0.16557, 0.0532], + "pivot": [0.0261, 7.48356, -2.6975], + "rotation": [82.45058, -18.3415, -67.16121], + "uv": { + "north": {"uv": [39, 2], "uv_size": [0.25, 0.25]}, + "east": {"uv": [3, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [39, 3], "uv_size": [0.25, 0.25]}, + "west": {"uv": [4, 39], "uv_size": [0.25, 0.25]}, + "up": {"uv": [39, 4], "uv_size": [0.25, 0.25]}, + "down": {"uv": [5, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.17612, 7.24588, -1.86327], + "size": [0.24183, 0.16558, 0.0532], + "pivot": [-0.0552, 7.32867, -1.83667], + "rotation": [82.69075, -11.41793, 71.00388], + "uv": { + "north": {"uv": [39, 5], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [39, 6], "uv_size": [0.25, 0.25]}, + "west": {"uv": [7, 39], "uv_size": [0.25, 0.25]}, + "up": {"uv": [39, 7], "uv_size": [0.25, 0.25]}, + "down": {"uv": [8, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 6.5047, -2.58756], + "size": [0.29503, 0.05732, 0.0532], + "pivot": [-0.16003, 7.78562, -2.58756], + "rotation": [81.70352, 18.26249, 65.04592], + "uv": { + "north": {"uv": [39, 8], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [39, 9], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 39], "uv_size": [0.25, 0.25]}, + "up": {"uv": [39, 10], "uv_size": [0.25, 0.25]}, + "down": {"uv": [11, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 6.5047, -2.58756], + "size": [0.13543, 0.27012, 0.0532], + "pivot": [-0.16003, 7.78562, -2.58756], + "rotation": [81.70352, 18.26249, 65.04592], + "uv": { + "north": {"uv": [39, 11], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [39, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [13, 39], "uv_size": [0.25, 0.25]}, + "up": {"uv": [39, 13], "uv_size": [0.25, 0.25]}, + "down": {"uv": [14, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.26793, 6.20079, -2.6975], + "size": [0.24183, 0.05917, 0.0532], + "pivot": [-0.0261, 7.48356, -2.6975], + "rotation": [82.45058, 18.3415, 67.16121], + "uv": { + "north": {"uv": [39, 14], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [39, 15], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 39], "uv_size": [0.25, 0.25]}, + "up": {"uv": [39, 16], "uv_size": [0.25, 0.25]}, + "down": {"uv": [17, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.21951, 7.16535, -1.56458], + "size": [0.29502, 0.05918, 0.0532], + "pivot": [-0.0454, 7.19494, -1.53798], + "rotation": [82.69075, -11.41793, 71.00388], + "uv": { + "north": {"uv": [39, 17], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [39, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [19, 39], "uv_size": [0.25, 0.25]}, + "up": {"uv": [39, 19], "uv_size": [0.25, 0.25]}, + "down": {"uv": [20, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.21951, 7.11215, -1.56458], + "size": [0.18862, 0.05918, 0.0532], + "pivot": [-0.0454, 7.19494, -1.53798], + "rotation": [82.69075, -11.41793, 71.00388], + "uv": { + "north": {"uv": [39, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [39, 21], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 39], "uv_size": [0.25, 0.25]}, + "up": {"uv": [39, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [23, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 6.77659, -1.43462], + "size": [0.34823, 0.16373, 0.0532], + "pivot": [-0.16003, 7.36592, -1.43462], + "rotation": [86.12051, 9.22387, 67.06865], + "uv": { + "north": {"uv": [39, 23], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [39, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [25, 39], "uv_size": [0.25, 0.25]}, + "up": {"uv": [39, 25], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 6.77659, -1.38142], + "size": [0.24183, 0.16373, 0.1064], + "pivot": [-0.16003, 7.36592, -1.43462], + "rotation": [86.12051, 9.22387, 67.06865], + "uv": { + "north": {"uv": [39, 26], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [39, 27], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 39], "uv_size": [0.25, 0.25]}, + "up": {"uv": [39, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [29, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0818, 6.77659, -1.38142], + "size": [0.24183, 0.16373, 0.1064], + "pivot": [0.16003, 7.36592, -1.43462], + "rotation": [86.12051, -9.22387, -67.06865], + "uv": { + "north": {"uv": [39, 29], "uv_size": [0.25, 0.25]}, + "east": {"uv": [30, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [39, 30], "uv_size": [0.25, 0.25]}, + "west": {"uv": [31, 39], "uv_size": [0.25, 0.25]}, + "up": {"uv": [39, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.13928, 6.57141, -1.43462], + "size": [0.04892, 0.20518, 0.0532], + "pivot": [-0.16003, 7.36592, -1.43462], + "rotation": [86.12051, 9.22387, 67.06865], + "uv": { + "north": {"uv": [39, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [33, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [39, 33], "uv_size": [0.25, 0.25]}, + "west": {"uv": [34, 39], "uv_size": [0.25, 0.25]}, + "up": {"uv": [39, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [35, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.07502, 6.91139, -0.70801], + "size": [0.04892, 0.36891, 0.05221], + "pivot": [-0.0261, 6.91139, -0.70801], + "rotation": [89.99999, 10, 89.99999], + "uv": { + "north": {"uv": [39, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [36, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [39, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [37, 39], "uv_size": [0.25, 0.25]}, + "up": {"uv": [39, 37], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15687, 6.95833, -1.09303], + "size": [0.04893, 0.58932, 0.21588], + "pivot": [-0.10794, 7.17875, -1.09303], + "rotation": [89.99999, 10, 89.99999], + "uv": { + "north": {"uv": [27, 16], "uv_size": [0.25, 0.5]}, + "east": {"uv": [17, 27], "uv_size": [0.25, 0.5]}, + "south": {"uv": [27, 17], "uv_size": [0.25, 0.5]}, + "west": {"uv": [18, 27], "uv_size": [0.25, 0.5]}, + "up": {"uv": [39, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [39, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.07502, 7.02093, -1.32921], + "size": [0.04892, 0.16372, 0.05221], + "pivot": [-0.0261, 7.02093, -1.32921], + "rotation": [89.99999, 10, 89.99999], + "uv": { + "north": {"uv": [0, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 0], "uv_size": [0.25, 0.25]}, + "south": {"uv": [1, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 1], "uv_size": [0.25, 0.25]}, + "up": {"uv": [2, 40], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 2.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.07502, 7.04936, -1.49044], + "size": [0.04892, 0.05917, 0.0522], + "pivot": [-0.0261, 7.04936, -1.49044], + "rotation": [89.99999, 19.78491, 89.99999], + "uv": { + "north": {"uv": [3, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 3], "uv_size": [0.25, 0.25]}, + "south": {"uv": [4, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 4], "uv_size": [0.25, 0.25]}, + "up": {"uv": [5, 40], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 5.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.07502, 7.13939, -1.74074], + "size": [0.04892, 0.16558, 0.0522], + "pivot": [-0.0261, 7.13939, -1.74074], + "rotation": [89.99999, 19.78491, 89.99999], + "uv": { + "north": {"uv": [6, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 6], "uv_size": [0.25, 0.25]}, + "south": {"uv": [7, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 7], "uv_size": [0.25, 0.25]}, + "up": {"uv": [8, 40], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 8.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.0818, 7.04596, -0.99445], + "size": [0.18862, 0.16372, 0.0532], + "pivot": [-0.06729, 7.12782, -0.96785], + "rotation": [84.74916, -43.13508, 71.28689], + "uv": { + "north": {"uv": [9, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 9], "uv_size": [0.25, 0.25]}, + "south": {"uv": [10, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 10], "uv_size": [0.25, 0.25]}, + "up": {"uv": [11, 40], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 11.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.10682, 7.04596, -0.99445], + "size": [0.133, 0.05732, 0.0532], + "pivot": [-0.06729, 7.12782, -0.96785], + "rotation": [84.74916, -43.13508, 71.28689], + "uv": { + "north": {"uv": [12, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 12], "uv_size": [0.25, 0.25]}, + "south": {"uv": [13, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 13], "uv_size": [0.25, 0.25]}, + "up": {"uv": [14, 40], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 14.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.10682, 7.10328, -0.99445], + "size": [0.05985, 0.0532, 0.0532], + "pivot": [-0.06729, 7.12782, -0.96785], + "rotation": [84.74916, -43.13508, 71.28689], + "uv": { + "north": {"uv": [15, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 15], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 16], "uv_size": [0.25, 0.25]}, + "up": {"uv": [17, 40], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 17.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 6.77659, -1.43462], + "size": [0.13543, 0.58933, 0.0532], + "pivot": [-0.16003, 7.36592, -1.43462], + "rotation": [86.12051, 9.22387, 67.06865], + "uv": { + "north": {"uv": [27, 18], "uv_size": [0.25, 0.5]}, + "east": {"uv": [19, 27], "uv_size": [0.25, 0.5]}, + "south": {"uv": [27, 19], "uv_size": [0.25, 0.5]}, + "west": {"uv": [20, 27], "uv_size": [0.25, 0.5]}, + "up": {"uv": [18, 40], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 18.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16003, 7.20219, -1.43462], + "size": [0.34823, 0.16373, 0.0532], + "pivot": [-0.16003, 7.36592, -1.43462], + "rotation": [86.12051, 9.22387, 67.06865], + "uv": { + "north": {"uv": [19, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 20], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 40], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.05363, 7.20219, -1.38142], + "size": [0.18863, 0.16373, 0.0532], + "pivot": [-0.16003, 7.36592, -1.43462], + "rotation": [86.12051, 9.22387, 67.06865], + "uv": { + "north": {"uv": [22, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 22], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [24, 40], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 24.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.135, 7.20219, -1.38142], + "size": [0.18863, 0.16373, 0.0532], + "pivot": [0.16003, 7.36592, -1.43462], + "rotation": [86.12051, -9.22387, -67.06865], + "uv": { + "north": {"uv": [25, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [26, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 26], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 40], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.19537, 7.0817, -1.09806], + "size": [0.29502, 0.16372, 0.0532], + "pivot": [-0.07446, 7.16356, -1.07146], + "rotation": [85.74985, -25.69361, 69.53686], + "uv": { + "north": {"uv": [28, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [30, 40], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 30.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09575, 10.05827, -4.67567], + "size": [0.13542, 0.46204, 0.13542], + "pivot": [-0.09575, 10.05827, -4.67567], + "rotation": [59.31787, 27.03394, 37.45356], + "uv": { + "north": {"uv": [27, 20], "uv_size": [0.25, 0.5]}, + "east": {"uv": [21, 27], "uv_size": [0.25, 0.5]}, + "south": {"uv": [27, 21], "uv_size": [0.25, 0.5]}, + "west": {"uv": [22, 27], "uv_size": [0.25, 0.5]}, + "up": {"uv": [31, 40], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 31.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.09576, 8.46178, -1.64848], + "size": [0.1064, 0.9576, 0.49091], + "pivot": [-0.09576, 8.46178, -1.15757], + "rotation": [77.54608, 1.08089, 4.88206], + "uv": { + "north": {"uv": [6, 18], "uv_size": [0.25, 1]}, + "east": {"uv": [1, 7], "uv_size": [0.5, 1]}, + "south": {"uv": [18, 6], "uv_size": [0.25, 1]}, + "west": {"uv": [7, 1], "uv_size": [0.5, 1]}, + "up": {"uv": [27, 22], "uv_size": [0.25, 0.5]}, + "down": {"uv": [23, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.1064, 7.03379, -0.48771], + "size": [0.2128, 0.2128, 0.4256], + "pivot": [-0.3192, 7.45939, -0.48771], + "rotation": [27.5, 0, 0], + "uv": { + "north": {"uv": [32, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 23], "uv_size": [0.5, 0.25]}, + "south": {"uv": [40, 32], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 24], "uv_size": [0.25, 0.5]}, + "down": {"uv": [25, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.1064, 7.29979, -0.07324], + "size": [0.2128, 0.21826, 1.07513], + "pivot": [-0.3192, 7.72539, 0.15069], + "rotation": [15, 0, 0], + "uv": { + "north": {"uv": [33, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 18], "uv_size": [1, 0.25]}, + "south": {"uv": [40, 33], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 7], "uv_size": [1, 0.25]}, + "up": {"uv": [8, 18], "uv_size": [0.25, 1]}, + "down": {"uv": [18, 9], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.10719, 7.53381, 1.08225], + "size": [0.21438, 0.85278, 1.17197], + "inflate": -0.001, + "uv": { + "north": {"uv": [8, 22], "uv_size": [0.25, 0.75]}, + "east": {"uv": [0, 4], "uv_size": [1.25, 0.75]}, + "south": {"uv": [22, 8], "uv_size": [0.25, 0.75]}, + "west": {"uv": [4, 0], "uv_size": [1.25, 0.75]}, + "up": {"uv": [13, 8], "uv_size": [0.25, 1.25]}, + "down": {"uv": [13, 11.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.10719, 7.57439, 2.13524], + "size": [0.21438, 1.22517, 1.59758], + "inflate": -0.001, + "pivot": [-0.3192, 8.00077, 2.34883], + "rotation": [15, 0, 0], + "uv": { + "north": {"uv": [13, 12], "uv_size": [0.25, 1.25]}, + "east": {"uv": [0, 0], "uv_size": [1.5, 1.25]}, + "south": {"uv": [14, 0], "uv_size": [0.25, 1.25]}, + "west": {"uv": [0, 2], "uv_size": [1.5, 1.25]}, + "up": {"uv": [7, 5], "uv_size": [0.25, 1.5]}, + "down": {"uv": [6, 8.5], "uv_size": [0.25, -1.5]} + } + }, + { + "origin": [-0.1064, 7.9428, 3.56025], + "size": [0.2128, 0.2128, 0.8512], + "pivot": [-0.3192, 8.4748, 3.66665], + "rotation": [25, 0, 0], + "uv": { + "north": {"uv": [34, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [40, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 9], "uv_size": [0.75, 0.25]}, + "up": {"uv": [10, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 10.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.1064, 8.27222, 4.24212], + "size": [0.2128, 0.20957, 0.6384], + "pivot": [-0.3192, 8.80422, 4.34852], + "rotation": [35, 0, 0], + "uv": { + "north": {"uv": [35, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [40, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 11], "uv_size": [0.75, 0.25]}, + "up": {"uv": [12, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 12.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.1064, 8.60569, 4.70208], + "size": [0.2128, 0.20778, 0.4256], + "pivot": [-0.3192, 9.13769, 4.80848], + "rotation": [42.5, 0, 0], + "uv": { + "north": {"uv": [36, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 25], "uv_size": [0.5, 0.25]}, + "south": {"uv": [40, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [26, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [27, 26], "uv_size": [0.25, 0.5]}, + "down": {"uv": [27, 27.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.1064, 9.18406, 5.30399], + "size": [0.2128, 0.2128, 0.19181], + "pivot": [-0.532, 9.13588, 5.4958], + "rotation": [76.19007, 0, 0], + "uv": { + "north": {"uv": [37, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 37], "uv_size": [0.25, 0.25]}, + "south": {"uv": [38, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [40, 38], "uv_size": [0.25, 0.25]}, + "up": {"uv": [39, 40], "uv_size": [0.25, 0.25]}, + "down": {"uv": [40, 39.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1064, 9.4058, 4.38485], + "size": [0.2128, 0.2128, 0.9044], + "pivot": [0.1064, 8.8738, 4.33165], + "rotation": [65, 0, 0], + "uv": { + "north": {"uv": [40, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [9, 18], "uv_size": [1, 0.25]}, + "south": {"uv": [0, 41], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 9], "uv_size": [1, 0.25]}, + "up": {"uv": [10, 18], "uv_size": [0.25, 1]}, + "down": {"uv": [18, 11], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.1064, 9.00585, 3.54695], + "size": [0.2128, 0.17385, 0.56364], + "pivot": [0.1064, 8.4482, 3.65335], + "rotation": [25, 0, 0], + "uv": { + "north": {"uv": [41, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [0, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [1, 41], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 0], "uv_size": [0.5, 0.25]}, + "up": {"uv": [1, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 1.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.10561, 8.79668, 2.37672], + "size": [0.21122, 0.21122, 0.98085], + "inflate": 0.001, + "pivot": [-0.1064, 9.00869, 2.37594], + "rotation": [4.70009, 0, 0], + "uv": { + "north": {"uv": [41, 1], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 18], "uv_size": [1, 0.25]}, + "south": {"uv": [2, 41], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 11], "uv_size": [1, 0.25]}, + "up": {"uv": [12, 18], "uv_size": [0.25, 1]}, + "down": {"uv": [18, 13], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.10561, 8.47127, 1.16963], + "size": [0.21122, 0.21122, 1.48803], + "inflate": 0.001, + "pivot": [0.1064, 8.04488, 1.59445], + "rotation": [20, 0, 0], + "uv": { + "north": {"uv": [41, 2], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 7], "uv_size": [1.5, 0.25]}, + "south": {"uv": [3, 41], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 8], "uv_size": [1.5, 0.25]}, + "up": {"uv": [8, 0], "uv_size": [0.25, 1.5]}, + "down": {"uv": [2, 9.5], "uv_size": [0.25, -1.5]} + } + }, + { + "origin": [-0.1064, 8.3592, 0.85694], + "size": [0.2128, 0.2128, 0.4256], + "uv": { + "north": {"uv": [41, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [2, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [4, 41], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 2], "uv_size": [0.5, 0.25]}, + "up": {"uv": [3, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 3.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.1064, 8.42565, 0.60381], + "size": [0.2128, 0.2128, 0.3192], + "pivot": [-0.1064, 8.42565, 0.60381], + "rotation": [-14.96485, 0, 0], + "uv": { + "north": {"uv": [41, 4], "uv_size": [0.25, 0.25]}, + "east": {"uv": [5, 41], "uv_size": [0.25, 0.25]}, + "south": {"uv": [41, 5], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 41], "uv_size": [0.25, 0.25]}, + "up": {"uv": [41, 6], "uv_size": [0.25, 0.25]}, + "down": {"uv": [7, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1064, 8.572, 0.21854], + "size": [0.2128, 0.2128, 0.2128], + "pivot": [0.1064, 8.1464, 0.21854], + "rotation": [-27.5, 0, 0], + "uv": { + "north": {"uv": [41, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 41], "uv_size": [0.25, 0.25]}, + "south": {"uv": [41, 8], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 41], "uv_size": [0.25, 0.25]}, + "up": {"uv": [41, 9], "uv_size": [0.25, 0.25]}, + "down": {"uv": [10, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1064, 8.99458, -0.10066], + "size": [0.2128, 0.21582, 0.2995], + "pivot": [0.1064, 8.572, -0.10066], + "rotation": [-60, 0, 0], + "uv": { + "north": {"uv": [41, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 41], "uv_size": [0.25, 0.25]}, + "south": {"uv": [41, 11], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 41], "uv_size": [0.25, 0.25]}, + "up": {"uv": [41, 12], "uv_size": [0.25, 0.25]}, + "down": {"uv": [13, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1064, 8.21821, 0.03502], + "size": [0.2128, 0.27703, 0.3293], + "pivot": [0.1064, 8.64381, -0.27408], + "rotation": [52.5, 0, 0], + "uv": { + "north": {"uv": [41, 13], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 41], "uv_size": [0.25, 0.25]}, + "south": {"uv": [41, 14], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 41], "uv_size": [0.25, 0.25]}, + "up": {"uv": [41, 15], "uv_size": [0.25, 0.25]}, + "down": {"uv": [16, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1064, 7.9811, -0.31431], + "size": [0.2128, 0.27592, 0.63593], + "pivot": [0.1064, 8.26381, -0.31678], + "rotation": [57.5, 0, 0], + "uv": { + "north": {"uv": [41, 16], "uv_size": [0.25, 0.25]}, + "east": {"uv": [13, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [17, 41], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 13], "uv_size": [0.75, 0.25]}, + "up": {"uv": [14, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 14.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.1064, 7.16713, -0.47217], + "size": [0.2128, 0.25843, 0.82236], + "pivot": [0.1064, 7.43279, -0.50101], + "rotation": [77.5, 0, 0], + "uv": { + "north": {"uv": [41, 17], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [18, 41], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 15], "uv_size": [0.75, 0.25]}, + "up": {"uv": [16, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 16.75], "uv_size": [0.25, -0.75]} + } + } + ] + }, + { + "name": "bone3", + "parent": "bone2", + "pivot": [-0.3192, 8.26063, -0.30713], + "cubes": [ + { + "origin": [-0.16336, 6.91038, -2.61107], + "size": [0.32673, 0.79812, 0.17726], + "inflate": 0.002, + "pivot": [-0.32453, 8.56127, -3.07064], + "rotation": [-137.5, 0, 0], + "uv": { + "north": {"uv": [17, 22], "uv_size": [0.25, 0.75]}, + "east": {"uv": [22, 17], "uv_size": [0.25, 0.75]}, + "south": {"uv": [18, 22], "uv_size": [0.25, 0.75]}, + "west": {"uv": [22, 18], "uv_size": [0.25, 0.75]}, + "up": {"uv": [41, 18], "uv_size": [0.25, 0.25]}, + "down": {"uv": [19, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 6.41828, -2.50467], + "size": [0.31606, 0.48895, 0.07086], + "inflate": 0.002, + "pivot": [-0.3192, 8.56127, -3.07064], + "rotation": [-137.5, 0, 0], + "uv": { + "north": {"uv": [4, 28], "uv_size": [0.25, 0.5]}, + "east": {"uv": [28, 4], "uv_size": [0.25, 0.5]}, + "south": {"uv": [5, 28], "uv_size": [0.25, 0.5]}, + "west": {"uv": [28, 5], "uv_size": [0.25, 0.5]}, + "up": {"uv": [41, 19], "uv_size": [0.25, 0.25]}, + "down": {"uv": [20, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 9.61919, -5.06362], + "size": [0.31606, 0.08996, 0.07085], + "inflate": 0.002, + "pivot": [-0.16003, 9.71115, -4.99077], + "rotation": [-157.5, 0, 0], + "uv": { + "north": {"uv": [41, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 41], "uv_size": [0.25, 0.25]}, + "south": {"uv": [41, 21], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 41], "uv_size": [0.25, 0.25]}, + "up": {"uv": [41, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [23, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 8.93192, -4.95556], + "size": [0.10326, 0.89267, 0.07085], + "inflate": 0.002, + "pivot": [-0.16003, 9.82659, -4.95756], + "rotation": [-157.4296, -1.51708, 3.75851], + "uv": { + "north": {"uv": [13, 18], "uv_size": [0.25, 1]}, + "east": {"uv": [18, 13], "uv_size": [0.25, 1]}, + "south": {"uv": [14, 18], "uv_size": [0.25, 1]}, + "west": {"uv": [18, 14], "uv_size": [0.25, 1]}, + "up": {"uv": [41, 23], "uv_size": [0.25, 0.25]}, + "down": {"uv": [24, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 9.19023, -4.0752], + "size": [0.31606, 0.93584, 0.1167], + "inflate": 0.002, + "pivot": [-0.3192, 9.11684, -3.78997], + "rotation": [52.5, 0, 0], + "uv": { + "north": {"uv": [15, 18], "uv_size": [0.25, 1]}, + "east": {"uv": [18, 15], "uv_size": [0.25, 1]}, + "south": {"uv": [16, 18], "uv_size": [0.25, 1]}, + "west": {"uv": [18, 16], "uv_size": [0.25, 1]}, + "up": {"uv": [41, 24], "uv_size": [0.25, 0.25]}, + "down": {"uv": [25, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 10.13007, -4.0353], + "size": [0.31606, 0.31188, 0.0768], + "inflate": 0.002, + "pivot": [-0.3192, 9.11684, -3.78997], + "rotation": [52.5, 0, 0], + "uv": { + "north": {"uv": [41, 25], "uv_size": [0.25, 0.25]}, + "east": {"uv": [26, 41], "uv_size": [0.25, 0.25]}, + "south": {"uv": [41, 26], "uv_size": [0.25, 0.25]}, + "west": {"uv": [27, 41], "uv_size": [0.25, 0.25]}, + "up": {"uv": [41, 27], "uv_size": [0.25, 0.25]}, + "down": {"uv": [28, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 8.51539, -3.64322], + "size": [0.31606, 1.14864, 0.2231], + "inflate": 0.002, + "pivot": [-0.3192, 8.8676, -3.25159], + "rotation": [62.5, 0, 0], + "uv": { + "north": {"uv": [1, 14], "uv_size": [0.25, 1.25]}, + "east": {"uv": [2, 14], "uv_size": [0.25, 1.25]}, + "south": {"uv": [14, 2], "uv_size": [0.25, 1.25]}, + "west": {"uv": [3, 14], "uv_size": [0.25, 1.25]}, + "up": {"uv": [41, 28], "uv_size": [0.25, 0.25]}, + "down": {"uv": [29, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16336, 8.35733, -3.91666], + "size": [0.32673, 0.58532, 0.17725], + "inflate": 0.002, + "pivot": [-0.00533, 8.64999, -3.82803], + "rotation": [-127.5, 0, 0], + "uv": { + "north": {"uv": [6, 28], "uv_size": [0.25, 0.5]}, + "east": {"uv": [28, 6], "uv_size": [0.25, 0.5]}, + "south": {"uv": [7, 28], "uv_size": [0.25, 0.5]}, + "west": {"uv": [28, 7], "uv_size": [0.25, 0.5]}, + "up": {"uv": [41, 29], "uv_size": [0.25, 0.25]}, + "down": {"uv": [30, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 7.11345, -1.80824], + "size": [0.31606, 1.22372, 0.17725], + "inflate": 0.002, + "pivot": [-0.3192, 8.33875, -2.26781], + "rotation": [-120, 0, 0], + "uv": { + "north": {"uv": [4, 14], "uv_size": [0.25, 1.25]}, + "east": {"uv": [14, 4], "uv_size": [0.25, 1.25]}, + "south": {"uv": [5, 14], "uv_size": [0.25, 1.25]}, + "west": {"uv": [14, 6], "uv_size": [0.25, 1.25]}, + "up": {"uv": [41, 30], "uv_size": [0.25, 0.25]}, + "down": {"uv": [31, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 8.09982, -2.62662], + "size": [0.31606, 1.14864, 0.22311], + "inflate": 0.002, + "pivot": [-0.3192, 8.45203, -2.23499], + "rotation": [70, 0, 0], + "uv": { + "north": {"uv": [7, 14], "uv_size": [0.25, 1.25]}, + "east": {"uv": [8, 14], "uv_size": [0.25, 1.25]}, + "south": {"uv": [14, 8], "uv_size": [0.25, 1.25]}, + "west": {"uv": [9, 14], "uv_size": [0.25, 1.25]}, + "up": {"uv": [41, 31], "uv_size": [0.25, 0.25]}, + "down": {"uv": [32, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 6.74086, -0.75621], + "size": [0.31606, 1.22373, 0.17725], + "inflate": 0.002, + "pivot": [-0.3192, 7.96616, -1.21578], + "rotation": [-110, 0, 0], + "uv": { + "north": {"uv": [10, 14], "uv_size": [0.25, 1.25]}, + "east": {"uv": [14, 10], "uv_size": [0.25, 1.25]}, + "south": {"uv": [11, 14], "uv_size": [0.25, 1.25]}, + "west": {"uv": [12, 14], "uv_size": [0.25, 1.25]}, + "up": {"uv": [41, 32], "uv_size": [0.25, 0.25]}, + "down": {"uv": [33, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.16336, 7.82049, -1.56446], + "size": [0.32673, 1.14864, 0.2231], + "inflate": 0.002, + "pivot": [-0.32453, 8.1727, -1.17283], + "rotation": [77.5, 0, 0], + "uv": { + "north": {"uv": [14, 12], "uv_size": [0.25, 1.25]}, + "east": {"uv": [13, 14], "uv_size": [0.25, 1.25]}, + "south": {"uv": [14, 14], "uv_size": [0.25, 1.25]}, + "west": {"uv": [0, 15], "uv_size": [0.25, 1.25]}, + "up": {"uv": [41, 33], "uv_size": [0.25, 0.25]}, + "down": {"uv": [34, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 7.19251, 0.19183], + "size": [0.31606, 0.31932, 0.12405], + "inflate": 0.002, + "pivot": [-0.3192, 7.51341, -0.26775], + "rotation": [-137.5, 0, 0], + "uv": { + "north": {"uv": [41, 34], "uv_size": [0.25, 0.25]}, + "east": {"uv": [35, 41], "uv_size": [0.25, 0.25]}, + "south": {"uv": [41, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [36, 41], "uv_size": [0.25, 0.25]}, + "up": {"uv": [41, 36], "uv_size": [0.25, 0.25]}, + "down": {"uv": [37, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 6.02453, 0.15244], + "size": [0.31606, 0.53213, 0.17726], + "inflate": 0.002, + "pivot": [-0.3192, 6.61143, -0.30713], + "rotation": [132.5, 0, 0], + "uv": { + "north": {"uv": [8, 28], "uv_size": [0.25, 0.5]}, + "east": {"uv": [28, 8], "uv_size": [0.25, 0.5]}, + "south": {"uv": [9, 28], "uv_size": [0.25, 0.5]}, + "west": {"uv": [28, 9], "uv_size": [0.25, 0.5]}, + "up": {"uv": [41, 37], "uv_size": [0.25, 0.25]}, + "down": {"uv": [38, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 7.30588, -0.28417], + "size": [0.31606, 0.58532, 0.17725], + "inflate": 0.002, + "pivot": [-0.3192, 7.89278, -0.74374], + "rotation": [-100, 0, 0], + "uv": { + "north": {"uv": [10, 28], "uv_size": [0.25, 0.5]}, + "east": {"uv": [28, 10], "uv_size": [0.25, 0.5]}, + "south": {"uv": [11, 28], "uv_size": [0.25, 0.5]}, + "west": {"uv": [28, 11], "uv_size": [0.25, 0.5]}, + "up": {"uv": [41, 38], "uv_size": [0.25, 0.25]}, + "down": {"uv": [39, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 7.65161, -1.57328], + "size": [0.31606, 0.29744, 0.2231], + "inflate": 0.002, + "pivot": [-0.3192, 8.00382, -1.18165], + "rotation": [125, 0, 0], + "uv": { + "north": {"uv": [41, 39], "uv_size": [0.25, 0.25]}, + "east": {"uv": [40, 41], "uv_size": [0.25, 0.25]}, + "south": {"uv": [41, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [41, 41], "uv_size": [0.25, 0.25]}, + "up": {"uv": [0, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [42, 0.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 7.98111, -1.33808], + "size": [0.31606, 0.19103, 0.64871], + "inflate": 0.002, + "pivot": [-0.3192, 8.33332, -0.94645], + "rotation": [80, 0, 0], + "uv": { + "north": {"uv": [1, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [42, 1], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 19], "uv_size": [0.75, 0.25]}, + "up": {"uv": [20, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [22, 20.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.15803, 8.29531, -0.71295], + "size": [0.31606, 0.19104, 0.8615], + "inflate": 0.002, + "pivot": [-0.3192, 8.64752, -0.74692], + "rotation": [40, 0, 0], + "uv": { + "north": {"uv": [2, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 22], "uv_size": [0.75, 0.25]}, + "south": {"uv": [42, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 21], "uv_size": [0.75, 0.25]}, + "up": {"uv": [22, 22], "uv_size": [0.25, 0.75]}, + "down": {"uv": [0, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.15803, 8.36212, -0.76334], + "size": [0.31606, 0.19103, 0.22311], + "inflate": 0.002, + "pivot": [-0.3192, 8.71433, -0.79731], + "rotation": [7.5, 0, 0], + "uv": { + "north": {"uv": [3, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [42, 3], "uv_size": [0.25, 0.25]}, + "south": {"uv": [4, 42], "uv_size": [0.25, 0.25]}, + "west": {"uv": [42, 4], "uv_size": [0.25, 0.25]}, + "up": {"uv": [5, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [42, 5.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.15803, 7.90842, 0.15244], + "size": [0.31606, 0.19104, 0.43591], + "inflate": 0.002, + "pivot": [-0.3192, 8.26063, -0.30713], + "rotation": [77.5, 0, 0], + "uv": { + "north": {"uv": [6, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [42, 6], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 12], "uv_size": [0.5, 0.25]}, + "up": {"uv": [13, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 13.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.1596, 7.19663, -0.73273], + "size": [0.3192, 1.2768, 0.6384], + "uv": { + "north": {"uv": [15, 0], "uv_size": [0.25, 1.25]}, + "east": {"uv": [4, 1], "uv_size": [0.75, 1.25]}, + "south": {"uv": [15, 2], "uv_size": [0.25, 1.25]}, + "west": {"uv": [2, 4], "uv_size": [0.75, 1.25]}, + "up": {"uv": [23, 0], "uv_size": [0.25, 0.75]}, + "down": {"uv": [1, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.15427, 7.19663, -0.94553], + "size": [0.30853, 0.532, 0.4256], + "pivot": [0.00533, 8.04783, -0.09433], + "rotation": [-12.5, 0, 0], + "uv": { + "north": {"uv": [14, 28], "uv_size": [0.25, 0.5]}, + "east": {"uv": [17, 18], "uv_size": [0.5, 0.5]}, + "south": {"uv": [28, 14], "uv_size": [0.25, 0.5]}, + "west": {"uv": [18, 17], "uv_size": [0.5, 0.5]}, + "up": {"uv": [15, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 15.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.1596, 7.19663, -1.31793], + "size": [0.3192, 0.532, 0.1596], + "pivot": [0, 8.04783, -0.09433], + "rotation": [-12.5, 0, 0], + "uv": { + "north": {"uv": [16, 28], "uv_size": [0.25, 0.5]}, + "east": {"uv": [28, 16], "uv_size": [0.25, 0.5]}, + "south": {"uv": [17, 28], "uv_size": [0.25, 0.5]}, + "west": {"uv": [28, 17], "uv_size": [0.25, 0.5]}, + "up": {"uv": [7, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [42, 7.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1596, 7.19663, -1.63713], + "size": [0.3192, 0.532, 0.1064], + "pivot": [0, 8.04783, -0.09433], + "rotation": [-12.5, 0, 0], + "uv": { + "north": {"uv": [18, 28], "uv_size": [0.25, 0.5]}, + "east": {"uv": [28, 18], "uv_size": [0.25, 0.5]}, + "south": {"uv": [19, 28], "uv_size": [0.25, 0.5]}, + "west": {"uv": [28, 19], "uv_size": [0.25, 0.5]}, + "up": {"uv": [8, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [42, 8.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1596, 7.82816, -3.28632], + "size": [0.3192, 0.3192, 1.3832], + "pivot": [0, 7.98776, -2.22232], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [9, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 2], "uv_size": [1.5, 0.25]}, + "south": {"uv": [42, 9], "uv_size": [0.25, 0.25]}, + "west": {"uv": [3, 8], "uv_size": [1.5, 0.25]}, + "up": {"uv": [8, 3], "uv_size": [0.25, 1.5]}, + "down": {"uv": [5, 9.5], "uv_size": [0.25, -1.5]} + } + }, + { + "origin": [-0.1596, 7.62866, -1.99622], + "size": [0.3192, 0.0931, 0.0532], + "pivot": [0, 7.73506, -2.26222], + "rotation": [17.5, 0, 0], + "uv": { + "north": {"uv": [10, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [42, 10], "uv_size": [0.25, 0.25]}, + "south": {"uv": [11, 42], "uv_size": [0.25, 0.25]}, + "west": {"uv": [42, 11], "uv_size": [0.25, 0.25]}, + "up": {"uv": [12, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [42, 12.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1596, 7.64861, -1.43429], + "size": [0.3192, 0.1064, 0.0532], + "pivot": [0, 7.75501, -1.70029], + "rotation": [17.5, 0, 0], + "uv": { + "north": {"uv": [13, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [42, 13], "uv_size": [0.25, 0.25]}, + "south": {"uv": [14, 42], "uv_size": [0.25, 0.25]}, + "west": {"uv": [42, 14], "uv_size": [0.25, 0.25]}, + "up": {"uv": [15, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [42, 15.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1596, 7.52226, -1.67702], + "size": [0.3192, 0.1064, 0.0532], + "pivot": [0, 7.62866, -1.94302], + "rotation": [17.5, 0, 0], + "uv": { + "north": {"uv": [16, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [42, 16], "uv_size": [0.25, 0.25]}, + "south": {"uv": [17, 42], "uv_size": [0.25, 0.25]}, + "west": {"uv": [42, 17], "uv_size": [0.25, 0.25]}, + "up": {"uv": [18, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [42, 18.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1596, 7.56549, -1.07519], + "size": [0.3192, 0.1064, 0.0532], + "pivot": [0, 7.67189, -1.34119], + "rotation": [17.5, 0, 0], + "uv": { + "north": {"uv": [19, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [42, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 42], "uv_size": [0.25, 0.25]}, + "west": {"uv": [42, 20], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [42, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1596, 7.41586, -1.32124], + "size": [0.3192, 0.1064, 0.0532], + "pivot": [0, 7.52226, -1.58724], + "rotation": [17.5, 0, 0], + "uv": { + "north": {"uv": [22, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [42, 22], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 42], "uv_size": [0.25, 0.25]}, + "west": {"uv": [42, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [24, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [42, 24.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1596, 7.72176, -1.74352], + "size": [0.3192, 0.1064, 0.0532], + "pivot": [0, 7.82816, -2.00952], + "rotation": [17.5, 0, 0], + "uv": { + "north": {"uv": [25, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [42, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [26, 42], "uv_size": [0.25, 0.25]}, + "west": {"uv": [42, 26], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [42, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.1596, 7.93456, -3.92472], + "size": [0.3192, 0.2128, 0.6384], + "pivot": [0, 7.98776, -2.22232], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [28, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 1], "uv_size": [0.75, 0.25]}, + "south": {"uv": [42, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [2, 23], "uv_size": [0.75, 0.25]}, + "up": {"uv": [23, 2], "uv_size": [0.25, 0.75]}, + "down": {"uv": [3, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.16039, 8.10024, -0.46751], + "size": [0.32078, 0.63998, 0.63997], + "inflate": -0.001, + "pivot": [0, 8.52663, -0.04113], + "rotation": [40, 0, 0], + "uv": { + "north": {"uv": [23, 3], "uv_size": [0.25, 0.75]}, + "east": {"uv": [6, 4], "uv_size": [0.75, 0.75]}, + "south": {"uv": [4, 23], "uv_size": [0.25, 0.75]}, + "west": {"uv": [6, 5], "uv_size": [0.75, 0.75]}, + "up": {"uv": [23, 4], "uv_size": [0.25, 0.75]}, + "down": {"uv": [5, 23.75], "uv_size": [0.25, -0.75]} + } + } + ] + }, + { + "name": "b2", + "parent": "talon", + "pivot": [-0.1064, 4.9677, 0.13874], + "cubes": [ + { + "origin": [-0.3192, 7.5213, 1.20274], + "size": [0.2128, 0.2128, 1.064], + "uv": { + "north": {"uv": [29, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 18], "uv_size": [1, 0.25]}, + "south": {"uv": [42, 29], "uv_size": [0.25, 0.25]}, + "west": {"uv": [0, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 0], "uv_size": [0.25, 1]}, + "down": {"uv": [1, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.30433, 7.53617, 0.99151], + "size": [0.60866, 1.03426, 0.31605], + "inflate": 0.002, + "uv": { + "north": {"uv": [7, 2], "uv_size": [0.5, 1]}, + "east": {"uv": [19, 1], "uv_size": [0.25, 1]}, + "south": {"uv": [3, 7], "uv_size": [0.5, 1]}, + "west": {"uv": [2, 19], "uv_size": [0.25, 1]}, + "up": {"uv": [20, 28], "uv_size": [0.5, 0.25]}, + "down": {"uv": [28, 20.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [0.1064, 9.17076, 5.31729], + "size": [0.2128, 0.2128, 0.19181], + "pivot": [-0.3192, 9.12258, 5.5091], + "rotation": [76.19007, 0, 0], + "uv": { + "north": {"uv": [30, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [42, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [31, 42], "uv_size": [0.25, 0.25]}, + "west": {"uv": [42, 31], "uv_size": [0.25, 0.25]}, + "up": {"uv": [32, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [42, 32.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.09573, 8.69879, 5.08778], + "size": [0.2128, 0.26098, 0.2128], + "pivot": [-0.11707, 9.12439, 4.82178], + "rotation": [42.5, 0, 0], + "uv": { + "north": {"uv": [33, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [42, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [34, 42], "uv_size": [0.25, 0.25]}, + "west": {"uv": [42, 34], "uv_size": [0.25, 0.25]}, + "up": {"uv": [35, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [42, 35.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.11707, 8.59239, 4.71538], + "size": [0.2128, 0.20778, 0.4256], + "pivot": [-0.09573, 9.12439, 4.82178], + "rotation": [42.5, 0, 0], + "uv": { + "north": {"uv": [36, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [42, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 21], "uv_size": [0.5, 0.25]}, + "up": {"uv": [22, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 22.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.1064, 8.25892, 4.25542], + "size": [0.2128, 0.20957, 0.6384], + "pivot": [-0.1064, 8.79092, 4.36182], + "rotation": [35, 0, 0], + "uv": { + "north": {"uv": [37, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 5], "uv_size": [0.75, 0.25]}, + "south": {"uv": [42, 37], "uv_size": [0.25, 0.25]}, + "west": {"uv": [6, 23], "uv_size": [0.75, 0.25]}, + "up": {"uv": [23, 6], "uv_size": [0.25, 0.75]}, + "down": {"uv": [7, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.1064, 9.4191, 4.37155], + "size": [0.2128, 0.2128, 0.9044], + "pivot": [-0.1064, 8.8871, 4.31835], + "rotation": [65, 0, 0], + "uv": { + "north": {"uv": [38, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 2], "uv_size": [1, 0.25]}, + "south": {"uv": [42, 38], "uv_size": [0.25, 0.25]}, + "west": {"uv": [3, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 3], "uv_size": [0.25, 1]}, + "down": {"uv": [4, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.1064, 9.01915, 3.57355], + "size": [0.2128, 0.18715, 0.56364], + "pivot": [-0.1064, 8.4615, 3.67995], + "rotation": [25, 0, 0], + "uv": { + "north": {"uv": [39, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [42, 39], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 23], "uv_size": [0.5, 0.25]}, + "up": {"uv": [24, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 24.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.1064, 7.9295, 3.57355], + "size": [0.2128, 0.2128, 0.8512], + "pivot": [-0.1064, 8.4615, 3.67995], + "rotation": [25, 0, 0], + "uv": { + "north": {"uv": [40, 42], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 7], "uv_size": [0.75, 0.25]}, + "south": {"uv": [42, 40], "uv_size": [0.25, 0.25]}, + "west": {"uv": [8, 23], "uv_size": [0.75, 0.25]}, + "up": {"uv": [23, 8], "uv_size": [0.25, 0.75]}, + "down": {"uv": [9, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.1064, 7.56187, 3.53253], + "size": [0.2128, 1.2236, 0.2128], + "pivot": [-0.1064, 7.98747, 2.36213], + "rotation": [15, 0, 0], + "uv": { + "north": {"uv": [15, 4], "uv_size": [0.25, 1.25]}, + "east": {"uv": [6, 15], "uv_size": [0.25, 1.25]}, + "south": {"uv": [15, 6], "uv_size": [0.25, 1.25]}, + "west": {"uv": [15, 8], "uv_size": [0.25, 1.25]}, + "up": {"uv": [41, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [42, 41.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1064, 7.77467, 3.21333], + "size": [0.2128, 1.064, 0.2128], + "pivot": [-0.1064, 7.98747, 2.36213], + "rotation": [15, 0, 0], + "uv": { + "north": {"uv": [19, 4], "uv_size": [0.25, 1]}, + "east": {"uv": [5, 19], "uv_size": [0.25, 1]}, + "south": {"uv": [19, 5], "uv_size": [0.25, 1]}, + "west": {"uv": [6, 19], "uv_size": [0.25, 1]}, + "up": {"uv": [42, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [0, 43.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1064, 7.56187, 2.14933], + "size": [0.2128, 0.2128, 1.2768], + "pivot": [-0.1064, 7.98747, 2.36213], + "rotation": [15, 0, 0], + "uv": { + "north": {"uv": [43, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 10], "uv_size": [1.25, 0.25]}, + "south": {"uv": [1, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 11], "uv_size": [1.25, 0.25]}, + "up": {"uv": [15, 12], "uv_size": [0.25, 1.25]}, + "down": {"uv": [15, 15.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.1064, 8.80919, 2.40254], + "size": [0.2128, 0.2128, 0.76962], + "pivot": [-0.3192, 9.02199, 2.40254], + "rotation": [4.70009, 0, 0], + "uv": { + "north": {"uv": [43, 1], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 9], "uv_size": [0.75, 0.25]}, + "south": {"uv": [2, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [10, 23], "uv_size": [0.75, 0.25]}, + "up": {"uv": [23, 10], "uv_size": [0.25, 0.75]}, + "down": {"uv": [11, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.1064, 8.48378, 1.40825], + "size": [0.2128, 0.2128, 1.2768], + "pivot": [-0.1064, 8.05818, 1.62105], + "rotation": [20, 0, 0], + "uv": { + "north": {"uv": [43, 2], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 0], "uv_size": [1.25, 0.25]}, + "south": {"uv": [3, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [1, 16], "uv_size": [1.25, 0.25]}, + "up": {"uv": [16, 1], "uv_size": [0.25, 1.25]}, + "down": {"uv": [3, 17.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [0.1064, 6.32886, 0.27057], + "size": [0.2128, 0.1064, 0.1804], + "pivot": [-0.1064, 6.59813, -0.40023], + "rotation": [95, 0, 0], + "uv": { + "north": {"uv": [43, 3], "uv_size": [0.25, 0.25]}, + "east": {"uv": [4, 43], "uv_size": [0.25, 0.25]}, + "south": {"uv": [43, 4], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 43], "uv_size": [0.25, 0.25]}, + "up": {"uv": [43, 5], "uv_size": [0.25, 0.25]}, + "down": {"uv": [6, 43.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1064, 6.43526, 0.05777], + "size": [0.2128, 0.16287, 0.3932], + "pivot": [-0.1064, 6.59813, -0.40023], + "rotation": [95, 0, 0], + "uv": { + "north": {"uv": [43, 6], "uv_size": [0.25, 0.25]}, + "east": {"uv": [25, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [7, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 25], "uv_size": [0.5, 0.25]}, + "up": {"uv": [26, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 26.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.1064, 8.23151, 0.06103], + "size": [0.2128, 0.28379, 0.32989], + "pivot": [-0.1064, 8.65711, -0.24748], + "rotation": [52.5, 0, 0], + "uv": { + "north": {"uv": [43, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 43], "uv_size": [0.25, 0.25]}, + "south": {"uv": [43, 8], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 43], "uv_size": [0.25, 0.25]}, + "up": {"uv": [43, 9], "uv_size": [0.25, 0.25]}, + "down": {"uv": [10, 43.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1064, 7.9944, -0.29018], + "size": [0.2128, 0.28271, 0.6384], + "pivot": [-0.1064, 8.27711, -0.29018], + "rotation": [57.5, 0, 0], + "uv": { + "north": {"uv": [43, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 11], "uv_size": [0.75, 0.25]}, + "south": {"uv": [11, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 23], "uv_size": [0.75, 0.25]}, + "up": {"uv": [23, 12], "uv_size": [0.25, 0.75]}, + "down": {"uv": [13, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.1064, 7.18043, -0.47441], + "size": [0.2128, 0.26566, 0.8512], + "pivot": [-0.1064, 7.44609, -0.47441], + "rotation": [77.5, 0, 0], + "uv": { + "north": {"uv": [43, 11], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 13], "uv_size": [0.75, 0.25]}, + "south": {"uv": [12, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [14, 23], "uv_size": [0.75, 0.25]}, + "up": {"uv": [23, 14], "uv_size": [0.25, 0.75]}, + "down": {"uv": [15, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.1064, 7.02049, -0.47441], + "size": [0.2128, 0.2128, 0.4256], + "pivot": [-0.1064, 7.44609, -0.47441], + "rotation": [27.5, 0, 0], + "uv": { + "north": {"uv": [43, 12], "uv_size": [0.25, 0.25]}, + "east": {"uv": [27, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [13, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [28, 27], "uv_size": [0.5, 0.25]}, + "up": {"uv": [28, 28], "uv_size": [0.25, 0.5]}, + "down": {"uv": [0, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.1064, 7.28649, -0.05994], + "size": [0.2128, 0.21826, 1.07513], + "pivot": [-0.1064, 7.71209, 0.16399], + "rotation": [15, 0, 0], + "uv": { + "north": {"uv": [43, 13], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 6], "uv_size": [1, 0.25]}, + "south": {"uv": [14, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [7, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 7], "uv_size": [0.25, 1]}, + "down": {"uv": [8, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.1064, 9.00788, -0.07406], + "size": [0.2128, 0.21582, 0.2995], + "pivot": [-0.1064, 8.5853, -0.07406], + "rotation": [-60, 0, 0], + "uv": { + "north": {"uv": [43, 14], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 43], "uv_size": [0.25, 0.25]}, + "south": {"uv": [43, 15], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 43], "uv_size": [0.25, 0.25]}, + "up": {"uv": [43, 16], "uv_size": [0.25, 0.25]}, + "down": {"uv": [17, 43.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1064, 8.43895, 0.63041], + "size": [0.2128, 0.2128, 0.3192], + "pivot": [-0.3192, 8.43895, 0.63041], + "rotation": [-14.96485, 0, 0], + "uv": { + "north": {"uv": [43, 17], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 43], "uv_size": [0.25, 0.25]}, + "south": {"uv": [43, 18], "uv_size": [0.25, 0.25]}, + "west": {"uv": [19, 43], "uv_size": [0.25, 0.25]}, + "up": {"uv": [43, 19], "uv_size": [0.25, 0.25]}, + "down": {"uv": [20, 43.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1064, 8.5853, 0.24514], + "size": [0.2128, 0.2128, 0.2128], + "pivot": [-0.1064, 8.1597, 0.24514], + "rotation": [-27.5, 0, 0], + "uv": { + "north": {"uv": [43, 20], "uv_size": [0.25, 0.25]}, + "east": {"uv": [21, 43], "uv_size": [0.25, 0.25]}, + "south": {"uv": [43, 21], "uv_size": [0.25, 0.25]}, + "west": {"uv": [22, 43], "uv_size": [0.25, 0.25]}, + "up": {"uv": [43, 22], "uv_size": [0.25, 0.25]}, + "down": {"uv": [23, 43.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.10561, 8.58451, 0.08475], + "size": [0.21438, 0.21438, 0.37397], + "inflate": -0.001, + "uv": { + "north": {"uv": [43, 23], "uv_size": [0.25, 0.25]}, + "east": {"uv": [24, 43], "uv_size": [0.25, 0.25]}, + "south": {"uv": [43, 24], "uv_size": [0.25, 0.25]}, + "west": {"uv": [25, 43], "uv_size": [0.25, 0.25]}, + "up": {"uv": [43, 25], "uv_size": [0.25, 0.25]}, + "down": {"uv": [26, 43.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.10561, 7.73331, -0.18125], + "size": [0.21438, 0.63998, 0.21437], + "inflate": -0.001, + "uv": { + "north": {"uv": [23, 15], "uv_size": [0.25, 0.75]}, + "east": {"uv": [16, 23], "uv_size": [0.25, 0.75]}, + "south": {"uv": [23, 16], "uv_size": [0.25, 0.75]}, + "west": {"uv": [17, 23], "uv_size": [0.25, 0.75]}, + "up": {"uv": [43, 26], "uv_size": [0.25, 0.25]}, + "down": {"uv": [27, 43.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.10561, 7.30771, 0.03155], + "size": [0.21438, 0.21438, 0.21437], + "inflate": -0.001, + "uv": { + "north": {"uv": [43, 27], "uv_size": [0.25, 0.25]}, + "east": {"uv": [28, 43], "uv_size": [0.25, 0.25]}, + "south": {"uv": [43, 28], "uv_size": [0.25, 0.25]}, + "west": {"uv": [29, 43], "uv_size": [0.25, 0.25]}, + "up": {"uv": [43, 29], "uv_size": [0.25, 0.25]}, + "down": {"uv": [30, 43.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.10561, 7.30771, -0.39405], + "size": [0.21438, 0.42718, 0.42717], + "inflate": -0.001, + "uv": { + "north": {"uv": [29, 0], "uv_size": [0.25, 0.5]}, + "east": {"uv": [19, 8], "uv_size": [0.5, 0.5]}, + "south": {"uv": [1, 29], "uv_size": [0.25, 0.5]}, + "west": {"uv": [9, 19], "uv_size": [0.5, 0.5]}, + "up": {"uv": [29, 1], "uv_size": [0.25, 0.5]}, + "down": {"uv": [2, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.10561, 8.58451, 1.73395], + "size": [0.21438, 0.13458, 0.42717], + "inflate": -0.001, + "uv": { + "north": {"uv": [43, 30], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 2], "uv_size": [0.5, 0.25]}, + "south": {"uv": [31, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [3, 29], "uv_size": [0.5, 0.25]}, + "up": {"uv": [29, 3], "uv_size": [0.25, 0.5]}, + "down": {"uv": [4, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.10561, 9.11651, 3.64915], + "size": [0.21438, 0.10798, 0.69317], + "inflate": -0.001, + "uv": { + "north": {"uv": [43, 31], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 17], "uv_size": [0.75, 0.25]}, + "south": {"uv": [32, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [18, 23], "uv_size": [0.75, 0.25]}, + "up": {"uv": [23, 18], "uv_size": [0.25, 0.75]}, + "down": {"uv": [19, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.10561, 9.22291, 3.86195], + "size": [0.21438, 0.32078, 0.26757], + "inflate": -0.001, + "uv": { + "north": {"uv": [43, 32], "uv_size": [0.25, 0.25]}, + "east": {"uv": [33, 43], "uv_size": [0.25, 0.25]}, + "south": {"uv": [43, 33], "uv_size": [0.25, 0.25]}, + "west": {"uv": [34, 43], "uv_size": [0.25, 0.25]}, + "up": {"uv": [43, 34], "uv_size": [0.25, 0.25]}, + "down": {"uv": [35, 43.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.10561, 8.58451, 4.55312], + "size": [0.21438, 0.21438, 0.42718], + "inflate": -0.001, + "uv": { + "north": {"uv": [43, 35], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 4], "uv_size": [0.5, 0.25]}, + "south": {"uv": [36, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [5, 29], "uv_size": [0.5, 0.25]}, + "up": {"uv": [29, 5], "uv_size": [0.25, 0.5]}, + "down": {"uv": [6, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.10561, 8.79731, 4.55312], + "size": [0.21438, 0.10798, 0.48038], + "inflate": -0.001, + "uv": { + "north": {"uv": [43, 36], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 6], "uv_size": [0.5, 0.25]}, + "south": {"uv": [37, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [7, 29], "uv_size": [0.5, 0.25]}, + "up": {"uv": [29, 7], "uv_size": [0.25, 0.5]}, + "down": {"uv": [8, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.10561, 8.26531, 4.02155], + "size": [0.21438, 0.10798, 0.42717], + "inflate": -0.001, + "uv": { + "north": {"uv": [43, 37], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 8], "uv_size": [0.5, 0.25]}, + "south": {"uv": [38, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [9, 29], "uv_size": [0.5, 0.25]}, + "up": {"uv": [29, 9], "uv_size": [0.25, 0.5]}, + "down": {"uv": [10, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.10561, 8.37171, 4.02155], + "size": [0.21438, 0.21438, 0.63997], + "inflate": -0.001, + "uv": { + "north": {"uv": [43, 38], "uv_size": [0.25, 0.25]}, + "east": {"uv": [23, 19], "uv_size": [0.75, 0.25]}, + "south": {"uv": [39, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 23], "uv_size": [0.75, 0.25]}, + "up": {"uv": [23, 20], "uv_size": [0.25, 0.75]}, + "down": {"uv": [21, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.10561, 8.05251, 3.59595], + "size": [0.21438, 0.53358, 0.42717], + "inflate": -0.001, + "uv": { + "north": {"uv": [29, 10], "uv_size": [0.25, 0.5]}, + "east": {"uv": [19, 9], "uv_size": [0.5, 0.5]}, + "south": {"uv": [11, 29], "uv_size": [0.25, 0.5]}, + "west": {"uv": [10, 19], "uv_size": [0.5, 0.5]}, + "up": {"uv": [29, 11], "uv_size": [0.25, 0.5]}, + "down": {"uv": [12, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.10561, 8.58451, 3.43635], + "size": [0.21438, 0.53358, 1.11877], + "inflate": -0.001, + "uv": { + "north": {"uv": [29, 12], "uv_size": [0.25, 0.5]}, + "east": {"uv": [7, 3], "uv_size": [1, 0.5]}, + "south": {"uv": [13, 29], "uv_size": [0.25, 0.5]}, + "west": {"uv": [4, 7], "uv_size": [1, 0.5]}, + "up": {"uv": [19, 10], "uv_size": [0.25, 1]}, + "down": {"uv": [11, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.10561, 8.58451, 2.15955], + "size": [0.21438, 0.32078, 0.95917], + "inflate": -0.001, + "uv": { + "north": {"uv": [43, 39], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 11], "uv_size": [1, 0.25]}, + "south": {"uv": [40, 43], "uv_size": [0.25, 0.25]}, + "west": {"uv": [12, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 12], "uv_size": [0.25, 1]}, + "down": {"uv": [13, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [0.10561, 7.83971, 2.79795], + "size": [0.21438, 0.10798, 0.26757], + "inflate": -0.001, + "uv": { + "north": {"uv": [43, 40], "uv_size": [0.25, 0.25]}, + "east": {"uv": [41, 43], "uv_size": [0.25, 0.25]}, + "south": {"uv": [43, 41], "uv_size": [0.25, 0.25]}, + "west": {"uv": [42, 43], "uv_size": [0.25, 0.25]}, + "up": {"uv": [43, 42], "uv_size": [0.25, 0.25]}, + "down": {"uv": [43, 43.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.10561, 7.94611, 2.79795], + "size": [0.21438, 0.63998, 0.48037], + "inflate": -0.001, + "uv": { + "north": {"uv": [23, 21], "uv_size": [0.25, 0.75]}, + "east": {"uv": [8, 5], "uv_size": [0.5, 0.75]}, + "south": {"uv": [22, 23], "uv_size": [0.25, 0.75]}, + "west": {"uv": [8, 6], "uv_size": [0.5, 0.75]}, + "up": {"uv": [29, 13], "uv_size": [0.25, 0.5]}, + "down": {"uv": [14, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [0.10561, 7.73331, 1.30835], + "size": [0.21438, 0.85278, 1.49117], + "inflate": -0.001, + "uv": { + "north": {"uv": [23, 22], "uv_size": [0.25, 0.75]}, + "east": {"uv": [2, 0], "uv_size": [1.5, 0.75]}, + "south": {"uv": [23, 23], "uv_size": [0.25, 0.75]}, + "west": {"uv": [2, 1], "uv_size": [1.5, 0.75]}, + "up": {"uv": [7, 8], "uv_size": [0.25, 1.5]}, + "down": {"uv": [8, 9.5], "uv_size": [0.25, -1.5]} + } + }, + { + "origin": [0.10561, 7.52051, 0.03155], + "size": [0.21438, 1.06558, 0.85277], + "inflate": -0.001, + "uv": { + "north": {"uv": [19, 13], "uv_size": [0.25, 1]}, + "east": {"uv": [3, 4], "uv_size": [0.75, 1]}, + "south": {"uv": [14, 19], "uv_size": [0.25, 1]}, + "west": {"uv": [4, 3], "uv_size": [0.75, 1]}, + "up": {"uv": [0, 24], "uv_size": [0.25, 0.75]}, + "down": {"uv": [24, 0.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [0.1064, 7.5213, 0.88354], + "size": [0.2128, 1.064, 0.2128], + "uv": { + "north": {"uv": [19, 14], "uv_size": [0.25, 1]}, + "east": {"uv": [15, 19], "uv_size": [0.25, 1]}, + "south": {"uv": [19, 15], "uv_size": [0.25, 1]}, + "west": {"uv": [16, 19], "uv_size": [0.25, 1]}, + "up": {"uv": [0, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 0.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1064, 7.7341, 1.20274], + "size": [0.2128, 0.8512, 0.2128], + "uv": { + "north": {"uv": [1, 24], "uv_size": [0.25, 0.75]}, + "east": {"uv": [24, 1], "uv_size": [0.25, 0.75]}, + "south": {"uv": [2, 24], "uv_size": [0.25, 0.75]}, + "west": {"uv": [24, 2], "uv_size": [0.25, 0.75]}, + "up": {"uv": [1, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 1.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [0.1064, 7.5213, 1.20274], + "size": [0.2128, 0.2128, 1.064], + "uv": { + "north": {"uv": [2, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [19, 16], "uv_size": [1, 0.25]}, + "south": {"uv": [44, 2], "uv_size": [0.25, 0.25]}, + "west": {"uv": [17, 19], "uv_size": [1, 0.25]}, + "up": {"uv": [19, 17], "uv_size": [0.25, 1]}, + "down": {"uv": [18, 20], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.3192, 7.7341, 1.20274], + "size": [0.2128, 0.8512, 0.2128], + "uv": { + "north": {"uv": [3, 24], "uv_size": [0.25, 0.75]}, + "east": {"uv": [24, 3], "uv_size": [0.25, 0.75]}, + "south": {"uv": [4, 24], "uv_size": [0.25, 0.75]}, + "west": {"uv": [24, 4], "uv_size": [0.25, 0.75]}, + "up": {"uv": [3, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 3.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3192, 7.5213, 0.88354], + "size": [0.2128, 1.064, 0.2128], + "uv": { + "north": {"uv": [19, 18], "uv_size": [0.25, 1]}, + "east": {"uv": [19, 19], "uv_size": [0.25, 1]}, + "south": {"uv": [0, 20], "uv_size": [0.25, 1]}, + "west": {"uv": [20, 0], "uv_size": [0.25, 1]}, + "up": {"uv": [4, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 4.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.31999, 7.52051, 0.03155], + "size": [0.21438, 1.06558, 0.85277], + "inflate": -0.001, + "uv": { + "north": {"uv": [1, 20], "uv_size": [0.25, 1]}, + "east": {"uv": [4, 4], "uv_size": [0.75, 1]}, + "south": {"uv": [20, 1], "uv_size": [0.25, 1]}, + "west": {"uv": [0, 5], "uv_size": [0.75, 1]}, + "up": {"uv": [5, 24], "uv_size": [0.25, 0.75]}, + "down": {"uv": [24, 5.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.31999, 7.73331, 1.30835], + "size": [0.21438, 0.85278, 1.49117], + "inflate": -0.001, + "uv": { + "north": {"uv": [6, 24], "uv_size": [0.25, 0.75]}, + "east": {"uv": [2, 2], "uv_size": [1.5, 0.75]}, + "south": {"uv": [24, 6], "uv_size": [0.25, 0.75]}, + "west": {"uv": [2, 3], "uv_size": [1.5, 0.75]}, + "up": {"uv": [0, 9], "uv_size": [0.25, 1.5]}, + "down": {"uv": [9, 1.5], "uv_size": [0.25, -1.5]} + } + }, + { + "origin": [-0.31999, 7.94611, 2.79795], + "size": [0.21438, 0.63998, 0.48037], + "inflate": -0.001, + "uv": { + "north": {"uv": [7, 24], "uv_size": [0.25, 0.75]}, + "east": {"uv": [1, 9], "uv_size": [0.5, 0.75]}, + "south": {"uv": [24, 7], "uv_size": [0.25, 0.75]}, + "west": {"uv": [3, 9], "uv_size": [0.5, 0.75]}, + "up": {"uv": [29, 14], "uv_size": [0.25, 0.5]}, + "down": {"uv": [15, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.31999, 7.83971, 2.79795], + "size": [0.21438, 0.10798, 0.26757], + "inflate": -0.001, + "uv": { + "north": {"uv": [5, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [44, 5], "uv_size": [0.25, 0.25]}, + "south": {"uv": [6, 44], "uv_size": [0.25, 0.25]}, + "west": {"uv": [44, 6], "uv_size": [0.25, 0.25]}, + "up": {"uv": [7, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 7.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.31999, 8.58451, 2.15955], + "size": [0.21438, 0.32078, 0.95917], + "inflate": -0.001, + "uv": { + "north": {"uv": [8, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [2, 20], "uv_size": [1, 0.25]}, + "south": {"uv": [44, 8], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 2], "uv_size": [1, 0.25]}, + "up": {"uv": [3, 20], "uv_size": [0.25, 1]}, + "down": {"uv": [20, 4], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.31999, 8.58451, 3.43635], + "size": [0.21438, 0.53358, 1.11877], + "inflate": -0.001, + "uv": { + "north": {"uv": [29, 15], "uv_size": [0.25, 0.5]}, + "east": {"uv": [7, 4], "uv_size": [1, 0.5]}, + "south": {"uv": [16, 29], "uv_size": [0.25, 0.5]}, + "west": {"uv": [5, 7], "uv_size": [1, 0.5]}, + "up": {"uv": [4, 20], "uv_size": [0.25, 1]}, + "down": {"uv": [20, 5], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.31999, 8.05251, 3.59595], + "size": [0.21438, 0.53358, 0.42717], + "inflate": -0.001, + "uv": { + "north": {"uv": [29, 16], "uv_size": [0.25, 0.5]}, + "east": {"uv": [5, 20], "uv_size": [0.5, 0.5]}, + "south": {"uv": [17, 29], "uv_size": [0.25, 0.5]}, + "west": {"uv": [20, 5], "uv_size": [0.5, 0.5]}, + "up": {"uv": [29, 17], "uv_size": [0.25, 0.5]}, + "down": {"uv": [18, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.31999, 8.37171, 4.02155], + "size": [0.21438, 0.21438, 0.63997], + "inflate": -0.001, + "uv": { + "north": {"uv": [9, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 24], "uv_size": [0.75, 0.25]}, + "south": {"uv": [44, 9], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 8], "uv_size": [0.75, 0.25]}, + "up": {"uv": [9, 24], "uv_size": [0.25, 0.75]}, + "down": {"uv": [24, 9.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.31999, 8.26531, 4.02155], + "size": [0.21438, 0.10798, 0.42717], + "inflate": -0.001, + "uv": { + "north": {"uv": [10, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 18], "uv_size": [0.5, 0.25]}, + "south": {"uv": [44, 10], "uv_size": [0.25, 0.25]}, + "west": {"uv": [19, 29], "uv_size": [0.5, 0.25]}, + "up": {"uv": [29, 19], "uv_size": [0.25, 0.5]}, + "down": {"uv": [20, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.31999, 8.79731, 4.55312], + "size": [0.21438, 0.10798, 0.48038], + "inflate": -0.001, + "uv": { + "north": {"uv": [11, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 20], "uv_size": [0.5, 0.25]}, + "south": {"uv": [44, 11], "uv_size": [0.25, 0.25]}, + "west": {"uv": [21, 29], "uv_size": [0.5, 0.25]}, + "up": {"uv": [29, 21], "uv_size": [0.25, 0.5]}, + "down": {"uv": [22, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.31999, 8.58451, 4.55312], + "size": [0.21438, 0.21438, 0.42718], + "inflate": -0.001, + "uv": { + "north": {"uv": [12, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 22], "uv_size": [0.5, 0.25]}, + "south": {"uv": [44, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [23, 29], "uv_size": [0.5, 0.25]}, + "up": {"uv": [29, 23], "uv_size": [0.25, 0.5]}, + "down": {"uv": [24, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.31999, 9.22291, 3.86195], + "size": [0.21438, 0.32078, 0.26757], + "inflate": -0.001, + "uv": { + "north": {"uv": [13, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [44, 13], "uv_size": [0.25, 0.25]}, + "south": {"uv": [14, 44], "uv_size": [0.25, 0.25]}, + "west": {"uv": [44, 14], "uv_size": [0.25, 0.25]}, + "up": {"uv": [15, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 15.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.31999, 9.11651, 3.64915], + "size": [0.21438, 0.10798, 0.69317], + "inflate": -0.001, + "uv": { + "north": {"uv": [16, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [10, 24], "uv_size": [0.75, 0.25]}, + "south": {"uv": [44, 16], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 10], "uv_size": [0.75, 0.25]}, + "up": {"uv": [11, 24], "uv_size": [0.25, 0.75]}, + "down": {"uv": [24, 11.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.31999, 8.58451, 1.73395], + "size": [0.21438, 0.13458, 0.42717], + "inflate": -0.001, + "uv": { + "north": {"uv": [17, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 24], "uv_size": [0.5, 0.25]}, + "south": {"uv": [44, 17], "uv_size": [0.25, 0.25]}, + "west": {"uv": [25, 29], "uv_size": [0.5, 0.25]}, + "up": {"uv": [29, 25], "uv_size": [0.25, 0.5]}, + "down": {"uv": [26, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.31999, 7.30771, -0.39405], + "size": [0.21438, 0.42718, 0.42717], + "inflate": -0.001, + "uv": { + "north": {"uv": [29, 26], "uv_size": [0.25, 0.5]}, + "east": {"uv": [6, 20], "uv_size": [0.5, 0.5]}, + "south": {"uv": [27, 29], "uv_size": [0.25, 0.5]}, + "west": {"uv": [20, 6], "uv_size": [0.5, 0.5]}, + "up": {"uv": [29, 27], "uv_size": [0.25, 0.5]}, + "down": {"uv": [28, 29.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.31999, 7.30771, 0.03155], + "size": [0.21438, 0.21438, 0.21437], + "inflate": -0.001, + "uv": { + "north": {"uv": [18, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [44, 18], "uv_size": [0.25, 0.25]}, + "south": {"uv": [19, 44], "uv_size": [0.25, 0.25]}, + "west": {"uv": [44, 19], "uv_size": [0.25, 0.25]}, + "up": {"uv": [20, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 20.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.31999, 7.73331, -0.18125], + "size": [0.21438, 0.63998, 0.21437], + "inflate": -0.001, + "uv": { + "north": {"uv": [12, 24], "uv_size": [0.25, 0.75]}, + "east": {"uv": [24, 12], "uv_size": [0.25, 0.75]}, + "south": {"uv": [13, 24], "uv_size": [0.25, 0.75]}, + "west": {"uv": [24, 13], "uv_size": [0.25, 0.75]}, + "up": {"uv": [21, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 21.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.31999, 8.58451, 0.08475], + "size": [0.21438, 0.21438, 0.37397], + "inflate": -0.001, + "uv": { + "north": {"uv": [22, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [44, 22], "uv_size": [0.25, 0.25]}, + "south": {"uv": [23, 44], "uv_size": [0.25, 0.25]}, + "west": {"uv": [44, 23], "uv_size": [0.25, 0.25]}, + "up": {"uv": [24, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 24.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3192, 8.5853, 0.24514], + "size": [0.2128, 0.2128, 0.2128], + "pivot": [-0.1064, 8.1597, 0.24514], + "rotation": [-27.5, 0, 0], + "uv": { + "north": {"uv": [25, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [44, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [26, 44], "uv_size": [0.25, 0.25]}, + "west": {"uv": [44, 26], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 27.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3192, 8.43895, 0.63041], + "size": [0.2128, 0.2128, 0.3192], + "pivot": [-0.3192, 8.43895, 0.63041], + "rotation": [-14.96485, 0, 0], + "uv": { + "north": {"uv": [28, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [44, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [29, 44], "uv_size": [0.25, 0.25]}, + "west": {"uv": [44, 29], "uv_size": [0.25, 0.25]}, + "up": {"uv": [30, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 30.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3192, 9.00788, -0.07406], + "size": [0.2128, 0.21582, 0.2995], + "pivot": [-0.1064, 8.5853, -0.07406], + "rotation": [-60, 0, 0], + "uv": { + "north": {"uv": [31, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [44, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [32, 44], "uv_size": [0.25, 0.25]}, + "west": {"uv": [44, 32], "uv_size": [0.25, 0.25]}, + "up": {"uv": [33, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 33.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3192, 7.28649, -0.05994], + "size": [0.2128, 0.21826, 1.07513], + "pivot": [-0.1064, 7.71209, 0.16399], + "rotation": [15, 0, 0], + "uv": { + "north": {"uv": [34, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 20], "uv_size": [1, 0.25]}, + "south": {"uv": [44, 34], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 7], "uv_size": [1, 0.25]}, + "up": {"uv": [8, 20], "uv_size": [0.25, 1]}, + "down": {"uv": [20, 9], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.3192, 7.02049, -0.47441], + "size": [0.2128, 0.2128, 0.4256], + "pivot": [-0.1064, 7.44609, -0.47441], + "rotation": [27.5, 0, 0], + "uv": { + "north": {"uv": [35, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [29, 28], "uv_size": [0.5, 0.25]}, + "south": {"uv": [44, 35], "uv_size": [0.25, 0.25]}, + "west": {"uv": [29, 29], "uv_size": [0.5, 0.25]}, + "up": {"uv": [0, 30], "uv_size": [0.25, 0.5]}, + "down": {"uv": [30, 0.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.3192, 7.18043, -0.47441], + "size": [0.2128, 0.26566, 0.8512], + "pivot": [-0.1064, 7.44609, -0.47441], + "rotation": [77.5, 0, 0], + "uv": { + "north": {"uv": [36, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [14, 24], "uv_size": [0.75, 0.25]}, + "south": {"uv": [44, 36], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 14], "uv_size": [0.75, 0.25]}, + "up": {"uv": [15, 24], "uv_size": [0.25, 0.75]}, + "down": {"uv": [24, 15.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.3192, 7.9944, -0.29018], + "size": [0.2128, 0.28271, 0.6384], + "pivot": [-0.1064, 8.27711, -0.29018], + "rotation": [57.5, 0, 0], + "uv": { + "north": {"uv": [37, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 24], "uv_size": [0.75, 0.25]}, + "south": {"uv": [44, 37], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 16], "uv_size": [0.75, 0.25]}, + "up": {"uv": [17, 24], "uv_size": [0.25, 0.75]}, + "down": {"uv": [24, 17.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.3192, 8.23151, 0.06103], + "size": [0.2128, 0.28379, 0.32989], + "pivot": [-0.1064, 8.65711, -0.24748], + "rotation": [52.5, 0, 0], + "uv": { + "north": {"uv": [38, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [44, 38], "uv_size": [0.25, 0.25]}, + "south": {"uv": [39, 44], "uv_size": [0.25, 0.25]}, + "west": {"uv": [44, 39], "uv_size": [0.25, 0.25]}, + "up": {"uv": [40, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [44, 40.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3192, 6.43526, 0.05777], + "size": [0.2128, 0.16287, 0.3932], + "pivot": [-0.1064, 6.59813, -0.40023], + "rotation": [95, 0, 0], + "uv": { + "north": {"uv": [41, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [1, 30], "uv_size": [0.5, 0.25]}, + "south": {"uv": [44, 41], "uv_size": [0.25, 0.25]}, + "west": {"uv": [30, 1], "uv_size": [0.5, 0.25]}, + "up": {"uv": [2, 30], "uv_size": [0.25, 0.5]}, + "down": {"uv": [30, 2.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.3192, 6.32886, 0.27057], + "size": [0.2128, 0.1064, 0.1804], + "pivot": [-0.1064, 6.59813, -0.40023], + "rotation": [95, 0, 0], + "uv": { + "north": {"uv": [42, 44], "uv_size": [0.25, 0.25]}, + "east": {"uv": [44, 42], "uv_size": [0.25, 0.25]}, + "south": {"uv": [43, 44], "uv_size": [0.25, 0.25]}, + "west": {"uv": [44, 43], "uv_size": [0.25, 0.25]}, + "up": {"uv": [44, 44], "uv_size": [0.25, 0.25]}, + "down": {"uv": [0, 45.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3192, 8.48378, 1.40825], + "size": [0.2128, 0.2128, 1.2768], + "pivot": [-0.1064, 8.05818, 1.62105], + "rotation": [20, 0, 0], + "uv": { + "north": {"uv": [45, 0], "uv_size": [0.25, 0.25]}, + "east": {"uv": [16, 3], "uv_size": [1.25, 0.25]}, + "south": {"uv": [1, 45], "uv_size": [0.25, 0.25]}, + "west": {"uv": [4, 16], "uv_size": [1.25, 0.25]}, + "up": {"uv": [16, 4], "uv_size": [0.25, 1.25]}, + "down": {"uv": [16, 7.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.3192, 8.80919, 2.40254], + "size": [0.2128, 0.2128, 0.76962], + "pivot": [-0.3192, 9.02199, 2.40254], + "rotation": [4.70009, 0, 0], + "uv": { + "north": {"uv": [45, 1], "uv_size": [0.25, 0.25]}, + "east": {"uv": [18, 24], "uv_size": [0.75, 0.25]}, + "south": {"uv": [2, 45], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 18], "uv_size": [0.75, 0.25]}, + "up": {"uv": [19, 24], "uv_size": [0.25, 0.75]}, + "down": {"uv": [24, 19.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.3192, 7.56187, 2.14933], + "size": [0.2128, 0.2128, 1.2768], + "pivot": [-0.1064, 7.98747, 2.36213], + "rotation": [15, 0, 0], + "uv": { + "north": {"uv": [45, 2], "uv_size": [0.25, 0.25]}, + "east": {"uv": [7, 16], "uv_size": [1.25, 0.25]}, + "south": {"uv": [3, 45], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 8], "uv_size": [1.25, 0.25]}, + "up": {"uv": [9, 16], "uv_size": [0.25, 1.25]}, + "down": {"uv": [10, 17.25], "uv_size": [0.25, -1.25]} + } + }, + { + "origin": [-0.3192, 7.77467, 3.21333], + "size": [0.2128, 1.064, 0.2128], + "pivot": [-0.1064, 7.98747, 2.36213], + "rotation": [15, 0, 0], + "uv": { + "north": {"uv": [9, 20], "uv_size": [0.25, 1]}, + "east": {"uv": [20, 9], "uv_size": [0.25, 1]}, + "south": {"uv": [10, 20], "uv_size": [0.25, 1]}, + "west": {"uv": [20, 10], "uv_size": [0.25, 1]}, + "up": {"uv": [45, 3], "uv_size": [0.25, 0.25]}, + "down": {"uv": [4, 45.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3192, 7.56187, 3.53253], + "size": [0.2128, 1.2236, 0.2128], + "pivot": [-0.1064, 7.98747, 2.36213], + "rotation": [15, 0, 0], + "uv": { + "north": {"uv": [11, 16], "uv_size": [0.25, 1.25]}, + "east": {"uv": [12, 16], "uv_size": [0.25, 1.25]}, + "south": {"uv": [16, 12], "uv_size": [0.25, 1.25]}, + "west": {"uv": [13, 16], "uv_size": [0.25, 1.25]}, + "up": {"uv": [45, 4], "uv_size": [0.25, 0.25]}, + "down": {"uv": [5, 45.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3059, 7.57517, 3.42613], + "size": [0.6118, 1.2369, 0.1064], + "pivot": [-0.1064, 7.98747, 2.36213], + "rotation": [15, 0, 0], + "uv": { + "north": {"uv": [2, 6], "uv_size": [0.5, 1.25]}, + "east": {"uv": [14, 16], "uv_size": [0.25, 1.25]}, + "south": {"uv": [6, 2], "uv_size": [0.5, 1.25]}, + "west": {"uv": [16, 14], "uv_size": [0.25, 1.25]}, + "up": {"uv": [3, 30], "uv_size": [0.5, 0.25]}, + "down": {"uv": [30, 3.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.30669, 8.90239, 3.16963], + "size": [0.61338, 0.17447, 0.10797], + "inflate": -0.001, + "uv": { + "north": {"uv": [4, 30], "uv_size": [0.5, 0.25]}, + "east": {"uv": [45, 5], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 4], "uv_size": [0.5, 0.25]}, + "west": {"uv": [6, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [5, 30], "uv_size": [0.5, 0.25]}, + "down": {"uv": [30, 5.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.3192, 7.9295, 3.57355], + "size": [0.2128, 0.2128, 0.8512], + "pivot": [-0.1064, 8.4615, 3.67995], + "rotation": [25, 0, 0], + "uv": { + "north": {"uv": [45, 6], "uv_size": [0.25, 0.25]}, + "east": {"uv": [20, 24], "uv_size": [0.75, 0.25]}, + "south": {"uv": [7, 45], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 20], "uv_size": [0.75, 0.25]}, + "up": {"uv": [21, 24], "uv_size": [0.25, 0.75]}, + "down": {"uv": [24, 21.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.3192, 9.01915, 3.57355], + "size": [0.2128, 0.18715, 0.56364], + "pivot": [-0.1064, 8.4615, 3.67995], + "rotation": [25, 0, 0], + "uv": { + "north": {"uv": [45, 7], "uv_size": [0.25, 0.25]}, + "east": {"uv": [6, 30], "uv_size": [0.5, 0.25]}, + "south": {"uv": [8, 45], "uv_size": [0.25, 0.25]}, + "west": {"uv": [30, 6], "uv_size": [0.5, 0.25]}, + "up": {"uv": [7, 30], "uv_size": [0.25, 0.5]}, + "down": {"uv": [30, 7.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.3192, 9.4191, 4.37155], + "size": [0.2128, 0.2128, 0.9044], + "pivot": [-0.1064, 8.8871, 4.31835], + "rotation": [65, 0, 0], + "uv": { + "north": {"uv": [45, 8], "uv_size": [0.25, 0.25]}, + "east": {"uv": [11, 20], "uv_size": [1, 0.25]}, + "south": {"uv": [9, 45], "uv_size": [0.25, 0.25]}, + "west": {"uv": [20, 11], "uv_size": [1, 0.25]}, + "up": {"uv": [12, 20], "uv_size": [0.25, 1]}, + "down": {"uv": [20, 13], "uv_size": [0.25, -1]} + } + }, + { + "origin": [-0.3192, 8.25892, 4.25542], + "size": [0.2128, 0.20957, 0.6384], + "pivot": [-0.1064, 8.79092, 4.36182], + "rotation": [35, 0, 0], + "uv": { + "north": {"uv": [45, 9], "uv_size": [0.25, 0.25]}, + "east": {"uv": [22, 24], "uv_size": [0.75, 0.25]}, + "south": {"uv": [10, 45], "uv_size": [0.25, 0.25]}, + "west": {"uv": [24, 22], "uv_size": [0.75, 0.25]}, + "up": {"uv": [23, 24], "uv_size": [0.25, 0.75]}, + "down": {"uv": [24, 23.75], "uv_size": [0.25, -0.75]} + } + }, + { + "origin": [-0.32987, 8.59239, 4.71538], + "size": [0.2128, 0.20778, 0.4256], + "pivot": [-0.11707, 9.12439, 4.82178], + "rotation": [42.5, 0, 0], + "uv": { + "north": {"uv": [45, 10], "uv_size": [0.25, 0.25]}, + "east": {"uv": [8, 30], "uv_size": [0.5, 0.25]}, + "south": {"uv": [11, 45], "uv_size": [0.25, 0.25]}, + "west": {"uv": [30, 8], "uv_size": [0.5, 0.25]}, + "up": {"uv": [9, 30], "uv_size": [0.25, 0.5]}, + "down": {"uv": [30, 9.5], "uv_size": [0.25, -0.5]} + } + }, + { + "origin": [-0.30853, 8.69879, 5.08778], + "size": [0.2128, 0.26098, 0.2128], + "pivot": [-0.09573, 9.12439, 4.82178], + "rotation": [42.5, 0, 0], + "uv": { + "north": {"uv": [45, 11], "uv_size": [0.25, 0.25]}, + "east": {"uv": [12, 45], "uv_size": [0.25, 0.25]}, + "south": {"uv": [45, 12], "uv_size": [0.25, 0.25]}, + "west": {"uv": [13, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [45, 13], "uv_size": [0.25, 0.25]}, + "down": {"uv": [14, 45.25], "uv_size": [0.25, -0.25]} + } + }, + { + "origin": [-0.3192, 9.17076, 5.31729], + "size": [0.2128, 0.2128, 0.19181], + "pivot": [-0.3192, 9.12258, 5.5091], + "rotation": [76.19007, 0, 0], + "uv": { + "north": {"uv": [45, 14], "uv_size": [0.25, 0.25]}, + "east": {"uv": [15, 45], "uv_size": [0.25, 0.25]}, + "south": {"uv": [45, 15], "uv_size": [0.25, 0.25]}, + "west": {"uv": [16, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [45, 16], "uv_size": [0.25, 0.25]}, + "down": {"uv": [17, 45.25], "uv_size": [0.25, -0.25]} + } + } + ] + }, + { + "name": "hexadecagon", + "parent": "b2", + "pivot": [-0.1064, 9.7025, 4.82034], + "cubes": [ + { + "origin": [-0.25854, 9.53361, 5.42256], + "size": [0.51707, 0.33778, 0.24685], + "pivot": [-0.10107, 9.7025, 4.82034], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [10, 30], "uv_size": [0.5, 0.25]}, + "east": {"uv": [45, 17], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 10], "uv_size": [0.5, 0.25]}, + "west": {"uv": [18, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [11, 30], "uv_size": [0.5, 0.25]}, + "down": {"uv": [30, 11.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.26387, 9.53361, 5.42256], + "size": [0.52774, 0.33778, 0.24685], + "pivot": [-0.1064, 9.7025, 4.82034], + "rotation": [22.5, 0, 0], + "uv": { + "north": {"uv": [12, 30], "uv_size": [0.5, 0.25]}, + "east": {"uv": [45, 18], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 12], "uv_size": [0.5, 0.25]}, + "west": {"uv": [19, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [13, 30], "uv_size": [0.5, 0.25]}, + "down": {"uv": [30, 13.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.26387, 9.53361, 5.42256], + "size": [0.52774, 0.33778, 0.24685], + "uv": { + "north": {"uv": [14, 30], "uv_size": [0.5, 0.25]}, + "east": {"uv": [45, 19], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 14], "uv_size": [0.5, 0.25]}, + "west": {"uv": [20, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [15, 30], "uv_size": [0.5, 0.25]}, + "down": {"uv": [30, 15.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.26387, 9.53361, 5.42256], + "size": [0.52774, 0.33778, 0.24685], + "pivot": [-0.1064, 9.7025, 4.82034], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [16, 30], "uv_size": [0.5, 0.25]}, + "east": {"uv": [45, 20], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 16], "uv_size": [0.5, 0.25]}, + "west": {"uv": [21, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [17, 30], "uv_size": [0.5, 0.25]}, + "down": {"uv": [30, 17.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.2692, 9.53361, 5.42256], + "size": [0.53841, 0.33778, 0.24685], + "pivot": [-0.11173, 9.7025, 4.82034], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [18, 30], "uv_size": [0.5, 0.25]}, + "east": {"uv": [45, 21], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 18], "uv_size": [0.5, 0.25]}, + "west": {"uv": [22, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [19, 30], "uv_size": [0.5, 0.25]}, + "down": {"uv": [30, 19.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.3192, 9.53361, 3.97126], + "size": [0.6384, 0.33778, 0.24685], + "pivot": [-0.1064, 9.7025, 4.82034], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [24, 24], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 22], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 25], "uv_size": [0.75, 0.25]}, + "west": {"uv": [23, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 0], "uv_size": [0.75, 0.25]}, + "down": {"uv": [1, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.31387, 9.53361, 3.97126], + "size": [0.62773, 0.33778, 0.24685], + "pivot": [-0.10107, 9.7025, 4.82034], + "rotation": [22.5, 0, 0], + "uv": { + "north": {"uv": [25, 1], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 23], "uv_size": [0.25, 0.25]}, + "south": {"uv": [2, 25], "uv_size": [0.75, 0.25]}, + "west": {"uv": [24, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 2], "uv_size": [0.75, 0.25]}, + "down": {"uv": [3, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.31387, 9.53361, 3.97126], + "size": [0.62773, 0.33778, 0.24685], + "uv": { + "north": {"uv": [25, 3], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 24], "uv_size": [0.25, 0.25]}, + "south": {"uv": [4, 25], "uv_size": [0.75, 0.25]}, + "west": {"uv": [25, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 4], "uv_size": [0.75, 0.25]}, + "down": {"uv": [5, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.32453, 9.53361, 3.97126], + "size": [0.64907, 0.33778, 0.24685], + "pivot": [-0.11173, 9.7025, 4.82034], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [25, 5], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 25], "uv_size": [0.25, 0.25]}, + "south": {"uv": [6, 25], "uv_size": [0.75, 0.25]}, + "west": {"uv": [26, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 6], "uv_size": [0.75, 0.25]}, + "down": {"uv": [7, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.3192, 9.56547, 3.99156], + "size": [0.6384, 0.12498, 0.26015], + "pivot": [-0.1064, 9.73436, 4.84063], + "rotation": [-42.5, 0, 0], + "uv": { + "north": {"uv": [25, 7], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 26], "uv_size": [0.25, 0.25]}, + "south": {"uv": [8, 25], "uv_size": [0.75, 0.25]}, + "west": {"uv": [27, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 8], "uv_size": [0.75, 0.25]}, + "down": {"uv": [9, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.26387, 9.64001, 3.97126], + "size": [0.52774, 0.23138, 0.24685], + "pivot": [-0.1064, 9.7025, 4.82034], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [20, 30], "uv_size": [0.5, 0.25]}, + "east": {"uv": [45, 27], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 20], "uv_size": [0.5, 0.25]}, + "west": {"uv": [28, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [21, 30], "uv_size": [0.5, 0.25]}, + "down": {"uv": [30, 21.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.26387, 10.30472, 4.65145], + "size": [0.52774, 0.24685, 0.33778], + "pivot": [-0.1064, 9.7025, 4.82034], + "rotation": [22.5, 0, 0], + "uv": { + "north": {"uv": [22, 30], "uv_size": [0.5, 0.25]}, + "east": {"uv": [45, 28], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 22], "uv_size": [0.5, 0.25]}, + "west": {"uv": [29, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [23, 30], "uv_size": [0.5, 0.25]}, + "down": {"uv": [30, 23.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.26387, 10.30472, 4.65145], + "size": [0.52774, 0.24685, 0.33778], + "uv": { + "north": {"uv": [24, 30], "uv_size": [0.5, 0.25]}, + "east": {"uv": [45, 29], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 24], "uv_size": [0.5, 0.25]}, + "west": {"uv": [30, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 30], "uv_size": [0.5, 0.25]}, + "down": {"uv": [30, 25.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.26387, 10.30472, 4.65145], + "size": [0.52774, 0.24685, 0.33778], + "pivot": [-0.1064, 9.7025, 4.82034], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [26, 30], "uv_size": [0.5, 0.25]}, + "east": {"uv": [45, 30], "uv_size": [0.25, 0.25]}, + "south": {"uv": [30, 26], "uv_size": [0.5, 0.25]}, + "west": {"uv": [31, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [27, 30], "uv_size": [0.5, 0.25]}, + "down": {"uv": [30, 27.25], "uv_size": [0.5, -0.25]} + } + }, + { + "origin": [-0.31387, 8.85343, 4.65145], + "size": [0.62773, 0.24685, 0.33778], + "pivot": [-0.10107, 9.7025, 4.82034], + "rotation": [22.5, 0, 0], + "uv": { + "north": {"uv": [25, 9], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 31], "uv_size": [0.25, 0.25]}, + "south": {"uv": [10, 25], "uv_size": [0.75, 0.25]}, + "west": {"uv": [32, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 10], "uv_size": [0.75, 0.25]}, + "down": {"uv": [11, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.3192, 8.85343, 4.65145], + "size": [0.6384, 0.24685, 0.33778], + "uv": { + "north": {"uv": [25, 11], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 32], "uv_size": [0.25, 0.25]}, + "south": {"uv": [12, 25], "uv_size": [0.75, 0.25]}, + "west": {"uv": [33, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 12], "uv_size": [0.75, 0.25]}, + "down": {"uv": [13, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.31387, 8.85343, 4.65145], + "size": [0.62773, 0.24685, 0.33778], + "pivot": [-0.10107, 9.7025, 4.82034], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [25, 13], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 33], "uv_size": [0.25, 0.25]}, + "south": {"uv": [14, 25], "uv_size": [0.75, 0.25]}, + "west": {"uv": [34, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 14], "uv_size": [0.75, 0.25]}, + "down": {"uv": [15, 25.25], "uv_size": [0.75, -0.25]} + } + } + ] + }, + { + "name": "bone6", + "parent": "b2", + "pivot": [-0.1064, 9.09529, 4.20719], + "cubes": [ + { + "origin": [-0.3724, 7.71209, 0.68486], + "size": [0.7448, 0.21826, 0.22393], + "pivot": [-0.1064, 8.13769, 0.90879], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [25, 15], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 34], "uv_size": [0.25, 0.25]}, + "south": {"uv": [16, 25], "uv_size": [0.75, 0.25]}, + "west": {"uv": [35, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 16], "uv_size": [0.75, 0.25]}, + "down": {"uv": [17, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.3724, 7.44609, 0.15286], + "size": [0.7448, 0.21826, 0.22393], + "pivot": [-0.1064, 7.87169, 0.37679], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [25, 17], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 35], "uv_size": [0.25, 0.25]}, + "south": {"uv": [18, 25], "uv_size": [0.75, 0.25]}, + "west": {"uv": [36, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 18], "uv_size": [0.75, 0.25]}, + "down": {"uv": [19, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.3724, 8.08449, 0.41886], + "size": [0.7448, 0.21826, 0.22393], + "pivot": [-0.1064, 8.51009, 0.64279], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [25, 19], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 36], "uv_size": [0.25, 0.25]}, + "south": {"uv": [20, 25], "uv_size": [0.75, 0.25]}, + "west": {"uv": [37, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 20], "uv_size": [0.75, 0.25]}, + "down": {"uv": [21, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.3724, 7.81849, 1.74886], + "size": [0.7448, 0.21826, 0.22393], + "pivot": [-0.1064, 8.24409, 1.97279], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [25, 21], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 37], "uv_size": [0.25, 0.25]}, + "south": {"uv": [22, 25], "uv_size": [0.75, 0.25]}, + "west": {"uv": [38, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 22], "uv_size": [0.75, 0.25]}, + "down": {"uv": [23, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.3724, 8.08449, 2.91926], + "size": [0.7448, 0.21826, 0.22393], + "pivot": [-0.1064, 8.51009, 3.14319], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [25, 23], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 38], "uv_size": [0.25, 0.25]}, + "south": {"uv": [24, 25], "uv_size": [0.75, 0.25]}, + "west": {"uv": [39, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [25, 24], "uv_size": [0.75, 0.25]}, + "down": {"uv": [25, 25.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.3724, 7.87169, 2.33406], + "size": [0.7448, 0.43106, 0.43673], + "pivot": [-0.1064, 8.51009, 2.55799], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [9, 3], "uv_size": [0.75, 0.5]}, + "east": {"uv": [13, 20], "uv_size": [0.5, 0.5]}, + "south": {"uv": [4, 9], "uv_size": [0.75, 0.5]}, + "west": {"uv": [20, 13], "uv_size": [0.5, 0.5]}, + "up": {"uv": [9, 4], "uv_size": [0.75, 0.5]}, + "down": {"uv": [9, 5.5], "uv_size": [0.75, -0.5]} + } + }, + { + "origin": [-0.3724, 8.72289, 4.08966], + "size": [0.7448, 0.21826, 0.22393], + "pivot": [-0.1064, 9.14849, 4.31359], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [0, 26], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 39], "uv_size": [0.25, 0.25]}, + "south": {"uv": [26, 0], "uv_size": [0.75, 0.25]}, + "west": {"uv": [40, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [1, 26], "uv_size": [0.75, 0.25]}, + "down": {"uv": [26, 1.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.3724, 8.40369, 4.51526], + "size": [0.7448, 0.21826, 0.22393], + "pivot": [-0.1064, 8.82929, 4.73919], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [2, 26], "uv_size": [0.75, 0.25]}, + "east": {"uv": [45, 40], "uv_size": [0.25, 0.25]}, + "south": {"uv": [26, 2], "uv_size": [0.75, 0.25]}, + "west": {"uv": [41, 45], "uv_size": [0.25, 0.25]}, + "up": {"uv": [3, 26], "uv_size": [0.75, 0.25]}, + "down": {"uv": [26, 3.25], "uv_size": [0.75, -0.25]} + } + } + ] + }, + { + "name": "constraint", + "parent": "bone", + "pivot": [-0.01558, 8.125, 1.9375] + }, + { + "name": "lefthand", + "parent": "bone", + "pivot": [-6, 19, 0] + }, + { + "name": "lefthand_pos", + "parent": "lefthand", + "pivot": [0, 8, 0], + "cubes": [ + { + "origin": [-7, 8, -2], + "size": [3, 12, 4], + "uv": { + "north": {"uv": [23.228, 0], "uv_size": [9.114, 24]}, + "east": {"uv": [5, 24], "uv_size": [9.114, 24]}, + "south": {"uv": [14.114, 24], "uv_size": [9.114, 24]}, + "west": {"uv": [23.228, 24], "uv_size": [9.114, 24]}, + "up": {"uv": [32.342, 16], "uv_size": [9.114, 8]}, + "down": {"uv": [32.342, 32], "uv_size": [9.114, -8]} + } + } + ] + }, + { + "name": "camera", + "pivot": [3.4563, 3.4656, -0.7687] + }, + { + "name": "view", + "pivot": [0, 0, 0] + }, + { + "name": "refit_view", + "parent": "view", + "pivot": [22.475, 5.55, 0.2], + "rotation": [0, 90, 0] + }, + { + "name": "iron_view", + "parent": "view", + "pivot": [-0.15326, 9.42188, 6.93493], + "rotation": [0, -1, 0] + }, + { + "name": "idle_view", + "parent": "view", + "pivot": [3.4563, 3.4656, -0.7687] + }, + { + "name": "positioning", + "pivot": [-0.01558, 4.125, 4.9375] + }, + { + "name": "ground", + "parent": "positioning", + "pivot": [0, 0, 0] + }, + { + "name": "thirdperson_hand", + "parent": "positioning", + "pivot": [-0.01558, 6.125, -2.0625] + }, + { + "name": "fixed", + "parent": "positioning", + "pivot": [0.79692, 5.125, -1.0625], + "rotation": [0, 90, 0] + }, + { + "name": "bone38", + "pivot": [62, -11.35, -167.5] + }, + { + "name": "bone39", + "parent": "bone38", + "pivot": [-65, -11.35, -167.5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/thieve_sea.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/thieve_sea.anim.json new file mode 100644 index 0000000..d8b769b --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/thieve_sea.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"draw":{"loop":true,"animation_length":1.2083,"override_previous_animation":true,"bones":{"lefthand":{"rotation":{"0.0":[75.73,-29.719,156.676],"0.0417":[75.191,-30.038,157.469],"0.0833":[74.408,-30.48,158.609],"0.125":[72.999,-31.224,160.642],"0.1667":[72.062,-31.681,161.986],"0.2083":[70.95,-32.194,163.564],"0.25":[70.589,-32.355,164.073],"0.2917":[70.679,-32.316,163.95],"0.3333":[71.894,-31.761,162.223],"0.375":[73.553,-30.94,159.847],"0.4167":[77.851,-28.337,153.462],"0.4583":[83.843,-23.164,143.647],"0.5":[90.222,-14.66,131.542],"0.5417":[96.652,1.551,114.261],"0.5833":[98.531,11.686,105.068],"0.625":[101.59,18.566,101.68],"0.6667":[105.487,17.555,104.743],"0.7083":[109.375,16.865,103.537],"0.75":[115.151,15.512,101.017],"0.7917":[117.618,15.37,102.418],"0.8333":[119.29,15.831,109.147],"0.875":[120.335,16.475,113.581],"0.9167":[121.961,17.545,117.119],"0.9583":[124.497,19.48,121.527],"1.0":[125.352,20.358,122.739],"1.0417":[125.251,21.316,121.719],"1.0833":[125.159,21.764,121.007],"1.125":[125.427,22.004,121.036],"1.1667":[125.978,22.117,121.408],"1.2083":[126.156,22.135,121.508]},"position":{"0.0":[20.847,21.493,-3.794],"0.0417":[20.912,21.439,-3.725],"0.0833":[21.008,21.359,-3.627],"0.125":[21.175,21.216,-3.457],"0.1667":[21.282,21.126,-3.346],"0.2083":[21.409,21.016,-3.217],"0.25":[21.451,20.981,-3.178],"0.2917":[21.44,20.991,-3.187],"0.3333":[21.303,21.108,-3.326],"0.375":[21.11,21.273,-3.523],"0.4167":[20.583,21.719,-4.079],"0.4583":[19.758,22.408,-5.029],"0.5":[18.635,23.309,-6.399],"0.5417":[16.819,24.719,-8.814],"0.5833":[15.745,25.551,-10.305],"0.625":[14.37,26.346,-11.194],"0.6667":[13.672,26.575,-10.893],"0.7083":[13.397,26.771,-10.687],"0.75":[13.282,26.975,-10.355],"0.7917":[13.282,27.021,-10.352],"0.8333":[13.45,26.917,-10.66],"0.875":[13.525,26.858,-10.834],"0.9167":[13.503,26.862,-10.876],"0.9583":[13.399,26.897,-10.87],"1.0":[13.336,26.873,-10.919],"1.0417":[13.247,26.768,-11.061],"1.0833":[13.197,26.708,-11.124],"1.125":[13.161,26.679,-11.13],"1.1667":[13.117,26.66,-11.091],"1.2083":[13.099,26.659,-11.081]}},"righthand":{"rotation":{"0.0":[-96.06,133.007,-30.597],"0.0417":[-97.331,133.633,-32.91],"0.0833":[-97.411,143.974,-27.041],"0.125":[-92.498,153.575,-14.548],"0.1667":[-81.917,156.891,-1.118],"0.2083":[-72.435,163.952,1.426],"0.25":[-71.086,166.87,-14.057],"0.2917":[-68.952,174.324,-14.475],"0.3333":[-69.826,179.721,-11.832],"0.375":[-78.14,164.088,-6.663],"0.4167":[-82.734,165.304,-3.073],"0.4583":[-84.899,167.083,-0.804],"0.5":[-85.195,167.031,0.601],"0.5417":[-88.518,166.449,2.383],"0.5833":[-91.444,165.986,3.267],"0.625":[-96.706,166.724,1.87],"0.6667":[-99.613,167.737,0.488],"0.7083":[-100.77,169.286,0.529],"0.75":[-101.348,172.337,0.804],"0.7917":[-100.638,174.377,0.871],"0.8333":[-93.142,177.084,1.352],"0.875":[-88.513,177.529,1.764],"0.9167":[-86.058,177.028,2.103],"0.9583":[-84.15,176.399,2.542],"1.0":[-84.034,176.188,2.643],"1.0417":[-84.483,175.97,2.623],"1.0833":[-85.071,175.884,2.559],"1.125":[-85.475,175.771,2.518],"1.1667":[-85.936,175.616,2.472],"1.2083":[-86.036,175.389,2.481]},"position":{"0.0":[-9.975,21.501,-11.789],"0.0417":[-10.691,24.672,-12.377],"0.0833":[-11.312,26.6,-12.488],"0.125":[-12.161,28.887,-12.565],"0.1667":[-12.685,30.362,-12.278],"0.2083":[-13.491,31.341,-11.715],"0.25":[-13.861,30.728,-11.417],"0.2917":[-13.353,30.561,-10.554],"0.3333":[-12.81,30.017,-9.688],"0.375":[-12.955,29.11,-9.695],"0.4167":[-12.693,26.636,-10.266],"0.4583":[-12.879,24.741,-10.845],"0.5":[-13.179,23.165,-11.619],"0.5417":[-13.953,23.057,-12.222],"0.5833":[-14.665,23.277,-12.51],"0.625":[-15.244,23.832,-12.535],"0.6667":[-15.338,24.216,-12.236],"0.7083":[-15.279,24.499,-11.519],"0.75":[-15.142,24.871,-10.139],"0.7917":[-15.042,25.157,-9.279],"0.8333":[-14.878,25.397,-8.672],"0.875":[-14.818,25.357,-8.785],"0.9167":[-14.804,25.258,-8.944],"0.9583":[-14.793,25.134,-9.193],"1.0":[-14.797,25.095,-9.296],"1.0417":[-14.809,25.059,-9.367],"1.0833":[-14.816,25.065,-9.377],"1.125":[-14.824,25.094,-9.372],"1.1667":[-14.835,25.151,-9.36],"1.2083":[-14.843,25.159,-9.358]}},"h1":{"rotation":{"0.0":[-62.93,-72.782,-27.546],"0.0417":[-48.317,-72.637,-42.627],"0.0833":[-47.416,-72.497,-44.719],"0.125":[-49.407,-72.212,-44.184],"0.1667":[-56.987,-69.597,-37.384],"0.2083":[-74.085,-56.948,-21.673],"0.25":[-81.38,-42.401,-14.088],"0.2917":[-84.518,-25.888,-9.416],"0.3333":[-84.962,-4.021,-4.963],"0.375":[-84.197,-0.17,0.396],"0.4167":[-83.209,-1.251,5.959],"0.4583":[-84.041,-3.324,8.481],"0.5":[-86.308,-6.279,9.852],"0.5417":[-83.193,-7.383,12.025],"0.5833":[-80.446,-8.324,13.231],"0.625":[-75.227,-8.504,12.313],"0.6667":[-72.223,-8.026,11.141],"0.7083":[-70.81,-6.715,11.231],"0.75":[-69.678,-3.822,11.494],"0.7917":[-69.994,-1.688,11.495],"0.8333":[-76.863,2.317,11.379],"0.875":[-81.349,3.543,11.344],"0.9167":[-83.855,3.453,11.413],"0.9583":[-85.839,3.136,11.628],"1.0":[-85.988,2.946,11.714],"1.0417":[-85.579,2.659,11.745],"1.0833":[-85.014,2.481,11.748],"1.125":[-84.633,2.305,11.752],"1.1667":[-84.204,2.078,11.757],"1.2083":[-84.142,1.837,11.776]},"position":{"0.0":[-2.469,35.513,-15.1],"0.0417":[-3.065,39.133,-15.329],"0.0833":[-3.394,41.439,-15.793],"0.125":[-3.913,44.422,-16.365],"0.1667":[-4.344,46.266,-16.603],"0.2083":[-4.766,47.926,-16.644],"0.25":[-4.882,48.468,-16.262],"0.2917":[-4.958,48.77,-15.675],"0.3333":[-5.137,48.903,-14.814],"0.375":[-5.613,47.948,-14.445],"0.4167":[-5.953,45.103,-14.988],"0.4583":[-6.166,43.087,-15.645],"0.5":[-6.432,41.471,-16.449],"0.5417":[-7.199,41.22,-17.033],"0.5833":[-7.91,41.326,-17.3],"0.625":[-8.517,41.732,-17.303],"0.6667":[-8.636,42.047,-16.995],"0.7083":[-8.625,42.292,-16.292],"0.75":[-8.583,42.643,-14.951],"0.7917":[-8.546,42.952,-14.126],"0.8333":[-8.463,43.432,-13.618],"0.875":[-8.414,43.541,-13.759],"0.9167":[-8.382,43.52,-13.92],"0.9583":[-8.347,43.454,-14.164],"1.0":[-8.345,43.418,-14.265],"1.0417":[-8.351,43.367,-14.334],"1.0833":[-8.355,43.354,-14.341],"1.125":[-8.36,43.369,-14.334],"1.1667":[-8.367,43.412,-14.319],"1.2083":[-8.367,43.415,-14.314]}},"lefthand_1":{"scale":[1,1.5,1]},"righthand_1":{"position":[0,2,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.042,0.034,-0.043],"0.0417":[-0.154,0.127,-0.157],"0.0833":[-0.319,0.261,-0.31],"0.125":[-0.597,0.488,-0.54],"0.1667":[-0.771,0.627,-0.651],"0.2083":[-0.971,0.774,-0.653],"0.25":[-1.056,0.83,-0.377],"0.2917":[-1.121,0.862,-0.009],"0.3333":[-1.225,0.878,0.314],"0.375":[-1.299,0.785,0.019],"0.4167":[-1.185,0.568,-0.344],"0.4583":[-0.99,0.427,-0.32],"0.5":[-0.713,0.282,0.061],"0.5417":[-0.341,0.115,0.506],"0.5833":[-0.181,0.063,0.386],"0.625":[-0.018,0.031,-0.03],"0.6667":[0.062,0.03,-0.268],"0.7083":[0.12,0.039,-0.388],"0.75":[0.155,0.076,-0.471],"0.7917":[0.129,0.108,-0.412],"0.8333":[0.009,0.133,-0.113],"0.875":[-0.031,0.109,-0.042],"0.9167":[-0.061,0.071,0.013],"0.9583":[-0.09,0.032,0.048],"1.0":[-0.096,0.024,0.048],"1.0417":[-0.096,0.024,0.04],"1.0833":[-0.096,0.024,0.022],"1.125":[-0.096,0.024,0.014],"1.1667":[-0.096,0.024,0.005],"1.2083":[-0.096,0.024,-0.004]}}},"sound_effects":{"0.0":{"effect":"melee.thieve_sea.draw"}}},"draw_1":{"loop":true,"animation_length":1.375,"override_previous_animation":true,"bones":{"lefthand":{"rotation":{"0.1667":[75.73,-29.719,156.676],"0.2083":[75.191,-30.038,157.469],"0.25":[73.957,-30.722,159.263],"0.2917":[72.999,-31.224,160.642],"0.3333":[71.635,-31.883,162.59],"0.375":[70.95,-32.194,163.564],"0.4167":[70.589,-32.355,164.073],"0.4583":[70.926,-32.206,163.598],"0.5":[71.894,-31.761,162.223],"0.5417":[74.651,-30.345,158.256],"0.5833":[77.851,-28.337,153.462],"0.625":[83.843,-23.164,143.647],"0.6667":[92.887,-9.484,125.478],"0.7083":[96.652,1.551,114.261],"0.75":[99.044,15.756,101.592],"0.7917":[101.59,18.566,101.68],"0.8333":[105.487,17.555,104.743],"0.875":[111.422,16.342,102.482],"0.9167":[115.151,15.512,101.017],"0.9583":[118.336,15.452,104.306],"1.0":[119.29,15.831,109.147],"1.0417":[120.335,16.475,113.581],"1.0833":[122.866,18.213,118.796],"1.125":[124.497,19.48,121.527],"1.1667":[125.434,20.716,122.633],"1.2083":[125.251,21.316,121.719],"1.25":[125.159,21.764,121.007],"1.2917":[125.601,22.056,121.142],"1.3333":[125.978,22.117,121.408],"1.375":[126.155,22.166,121.514]},"position":{"0.1667":[20.847,21.493,-3.794],"0.2083":[20.912,21.439,-3.725],"0.25":[21.061,21.312,-3.572],"0.2917":[21.175,21.216,-3.457],"0.3333":[21.332,21.085,-3.297],"0.375":[21.409,21.016,-3.217],"0.4167":[21.451,20.981,-3.178],"0.4583":[21.412,21.015,-3.215],"0.5":[21.303,21.108,-3.326],"0.5417":[20.978,21.381,-3.658],"0.5833":[20.583,21.719,-4.079],"0.625":[19.758,22.408,-5.029],"0.6667":[18.024,23.788,-7.183],"0.7083":[16.819,24.719,-8.814],"0.75":[15.289,25.9,-10.903],"0.7917":[14.37,26.346,-11.194],"0.8333":[13.672,26.575,-10.893],"0.875":[13.333,26.852,-10.558],"0.9167":[13.282,26.975,-10.355],"0.9583":[13.325,27,-10.433],"1.0":[13.45,26.917,-10.66],"1.0417":[13.525,26.858,-10.834],"1.0833":[13.475,26.874,-10.877],"1.125":[13.399,26.897,-10.87],"1.1667":[13.306,26.842,-10.964],"1.2083":[13.247,26.768,-11.061],"1.25":[13.197,26.708,-11.124],"1.2917":[13.145,26.673,-11.122],"1.3333":[13.117,26.66,-11.091],"1.375":[13.102,26.651,-11.078]}},"righthand":{"rotation":{"0.0":[-111.495,107.688,35.066],"0.0417":[-82.298,121.98,50.462],"0.0833":[-56.755,144.565,65.54],"0.125":[-37.833,186.352,60.551],"0.1667":[-36.443,196.936,53.891],"0.2083":[-46.839,200.892,45.859],"0.25":[-55.873,200.578,41.153],"0.2917":[-62.534,199.16,36.504],"0.3333":[-66.532,190.148,29.616],"0.375":[-68.219,181.619,24.554],"0.4167":[-65.488,174.651,22.231],"0.4583":[-58.329,167.842,26.922],"0.5":[-59.583,161.659,25.734],"0.5417":[-67.277,154.976,16.915],"0.5833":[-65.479,154.016,12.26],"0.625":[-65.551,155.243,7.28],"0.6667":[-68.636,158.221,6.32],"0.7083":[-71.26,162.352,5.696],"0.75":[-75.671,168.94,4.537],"0.7917":[-79.753,172.534,3.344],"0.8333":[-80.53,172.611,2.991],"0.875":[-80.218,171.591,3.051],"0.9167":[-80.426,171.68,3.022],"0.9583":[-81.372,172.102,2.89],"1.0":[-82.283,172.519,2.765],"1.0417":[-83.836,173.266,2.558],"1.0833":[-84.863,173.794,2.424],"1.125":[-85.769,174.304,2.31],"1.1667":[-86.711,174.944,2.192],"1.2083":[-86.925,175.234,2.165],"1.25":[-86.685,175.482,2.244],"1.2917":[-86.375,175.562,2.34],"1.3333":[-86.098,175.595,2.428],"1.375":[-85.973,175.601,2.467]},"position":{"0.0":[-9.901,24.13,-12.457],"0.0417":[-10.122,25.539,-11.644],"0.0833":[-10.498,26.469,-10.258],"0.125":[-10.945,27.796,-9.725],"0.1667":[-11.269,28.169,-9.622],"0.2083":[-11.787,28.375,-9.528],"0.25":[-12.159,28.386,-9.525],"0.2917":[-12.576,28.312,-9.56],"0.3333":[-13.392,27.912,-9.761],"0.375":[-13.995,27.465,-9.912],"0.4167":[-14.85,25.441,-10.046],"0.4583":[-15.888,23.186,-10.35],"0.5":[-16.873,21.811,-10.6],"0.5417":[-17.733,20.952,-10.875],"0.5833":[-17.342,20.715,-11.109],"0.625":[-16.372,20.734,-11.245],"0.6667":[-16.014,21.256,-10.982],"0.7083":[-15.635,22.121,-10.509],"0.75":[-15.095,23.523,-9.651],"0.7917":[-14.819,24.199,-9.177],"0.8333":[-14.781,24.308,-8.983],"0.875":[-14.831,24.281,-8.991],"0.9167":[-14.84,24.308,-8.997],"0.9583":[-14.846,24.435,-9.027],"1.0":[-14.844,24.559,-9.058],"1.0417":[-14.838,24.768,-9.116],"1.0833":[-14.833,24.909,-9.158],"1.125":[-14.828,25.029,-9.2],"1.1667":[-14.824,25.158,-9.261],"1.2083":[-14.825,25.185,-9.292],"1.25":[-14.83,25.178,-9.328],"1.2917":[-14.833,25.169,-9.343],"1.3333":[-14.836,25.16,-9.356],"1.375":[-14.837,25.157,-9.359]}},"h1":{"rotation":{"0.0":[72.699,-106.099,-86.869],"0.0417":[80.385,-127.734,-109.054],"0.0833":[72.918,-150.09,-110.404],"0.125":[75.676,-194.314,-121.874],"0.1667":[62.649,-236.342,-142.41],"0.2083":[-78.835,-220.352,-293.232],"0.25":[-79.492,-184.576,-306.031],"0.2917":[-78.076,-149.845,-316.711],"0.3333":[-104.91,-43.106,-307.328],"0.375":[-96.602,-16.981,-316.082],"0.4167":[-93.428,1.645,-326.683],"0.4583":[-92.613,-1.257,-328.993],"0.5":[-83.85,-4.921,-333.86],"0.5417":[-66.442,-9.281,-341.772],"0.5833":[-62.276,-9.327,-346.449],"0.625":[-60.467,-8.187,-350.591],"0.6667":[-62.706,-6.337,-350.441],"0.7083":[-68.559,-3.962,-350.011],"0.75":[-79.744,-0.604,-349.156],"0.7917":[-85.965,0.72,-348.669],"0.8333":[-89.983,-0.053,-348.379],"0.875":[-90.441,-1.016,-348.358],"0.9167":[-90.224,-0.958,-348.361],"0.9583":[-89.235,-0.682,-348.374],"1.0":[-88.279,-0.408,-348.385],"1.0417":[-86.641,0.09,-348.405],"1.0833":[-85.549,0.45,-348.418],"1.125":[-84.579,0.809,-348.428],"1.1667":[-83.549,1.289,-348.439],"1.2083":[-83.292,1.54,-348.44],"1.25":[-83.488,1.824,-348.387],"1.2917":[-83.78,1.953,-348.324],"1.3333":[-84.047,2.031,-348.268],"1.375":[-84.17,2.056,-348.243]},"position":{"0.0":[-9.555,38.664,-15.909],"0.0417":[-8.507,39.722,-15.909],"0.0833":[-7.942,40.915,-15.909],"0.125":[-7.942,43.341,-15.909],"0.1667":[-7.942,44.17,-15.909],"0.2083":[-7.942,44.975,-15.909],"0.25":[-7.942,45.103,-15.909],"0.2917":[-7.942,45.096,-15.909],"0.3333":[-8.375,44.946,-15.511],"0.375":[-8.911,44.494,-15.019],"0.4167":[-9.071,42.734,-14.89],"0.4583":[-9.092,41.372,-14.89],"0.5":[-9.494,40.562,-14.953],"0.5417":[-10.17,39.999,-15.117],"0.5833":[-9.823,40.008,-15.183],"0.625":[-9.002,40.137,-15.236],"0.6667":[-8.75,40.514,-15.118],"0.7083":[-8.529,41.176,-14.834],"0.75":[-8.288,42.243,-14.307],"0.7917":[-8.207,42.694,-14.036],"0.8333":[-8.207,42.738,-13.905],"0.875":[-8.223,42.719,-13.897],"0.9167":[-8.236,42.741,-13.905],"0.9583":[-8.256,42.838,-13.942],"1.0":[-8.27,42.934,-13.979],"1.0417":[-8.29,43.095,-14.047],"1.0833":[-8.303,43.203,-14.095],"1.125":[-8.316,43.295,-14.142],"1.1667":[-8.334,43.395,-14.209],"1.2083":[-8.345,43.416,-14.243],"1.25":[-8.358,43.416,-14.284],"1.2917":[-8.364,43.416,-14.301],"1.3333":[-8.367,43.416,-14.314],"1.375":[-8.368,43.416,-14.318]}},"lefthand_1":{"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[70,0,0],"0.25":[0,0,0]},"position":[0,2,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.459,-0.215,0.242],"0.0417":[0.288,-0.12,-0.027],"0.0833":[0.085,-0.028,-0.254],"0.125":[-0.172,0.032,-0.249],"0.1667":[-0.365,0.06,-0.149],"0.2083":[-0.664,0.085,0.057],"0.25":[-0.824,0.098,0.194],"0.2917":[-0.935,0.104,0.296],"0.3333":[-0.865,0.1,0.316],"0.375":[-0.271,0.065,0.194],"0.4167":[0.273,-0.001,0.001],"0.4583":[0.194,0.037,0.041],"0.5":[0.006,0.127,0.142],"0.5417":[-0.362,0.306,0.345],"0.5833":[-0.59,0.415,0.464],"0.625":[-0.749,0.492,0.551],"0.6667":[-0.719,0.461,0.535],"0.7083":[-0.643,0.377,0.481],"0.75":[-0.469,0.199,0.356],"0.7917":[-0.339,0.068,0.263],"0.8333":[-0.166,-0.093,0.132],"0.875":[-0.074,-0.155,0.066],"0.9167":[-0.023,-0.155,0.02],"0.9583":[0.011,-0.078,-0.006],"1.0":[0.027,-0.009,-0.019],"1.0417":[0.027,0.06,-0.025],"1.0833":[0.027,0.068,-0.019],"1.125":[0.018,0.042,-0.011],"1.1667":[-0.008,-0.009,0.008],"1.2083":[-0.017,-0.026,0.013],"1.25":[-0.011,-0.02,0.008],"1.2917":[-0.008,-0.009,0.006],"1.3333":[-0.001,-0.003,0.001],"1.375":[-0.001,0.002,0.001]}}},"sound_effects":{"0.0":{"effect":"melee.thieve_sea.draw_1"}}},"static_idle":{"loop":true,"override_previous_animation":true,"bones":{"lefthand":{"rotation":[126.156,22.135,121.508],"position":[13.099,26.659,-11.081]},"righthand":{"rotation":[-86.036,175.389,2.481],"position":[-14.843,25.159,-9.358]},"h1":{"rotation":[-84.142,1.837,11.776],"position":[-8.367,43.415,-14.314]},"lefthand_1":{"scale":[1,1.5,1]},"righthand_1":{"position":[0,2,0],"scale":[1,1.5,1]}}},"melee_1":{"loop":true,"animation_length":1.8667,"override_previous_animation":true,"bones":{"lefthand":{"rotation":{"0.0":[122.919,21.384,119.832],"0.0167":[119.627,20.482,118.161],"0.0333":[116.31,19.471,116.52],"0.05":[112.978,18.35,114.922],"0.0833":[109.657,17.126,113.384],"0.1":[103.099,14.397,110.539],"0.1333":[99.89,12.914,109.246],"0.15":[93.673,9.779,106.959],"0.1833":[90.676,8.149,105.97],"0.2":[84.951,4.838,104.306],"0.2333":[82.236,3.189,103.623],"0.25":[77.131,-0.03,102.549],"0.2833":[74.756,-1.568,102.142],"0.3":[72.507,-3.046,101.817],"0.3167":[70.392,-4.45,101.565],"0.3333":[68.421,-5.766,101.376],"0.35":[66.608,-6.981,101.241],"0.3667":[64.962,-8.086,101.15],"0.3833":[63.578,-8.962,100.996],"0.4":[62.527,-9.533,100.692],"0.4167":[61.779,-9.843,100.274],"0.4333":[61.31,-9.928,99.778],"0.45":[61.084,-9.836,99.252],"0.4667":[61.071,-9.601,98.744],"0.5":[61.545,-8.895,97.981],"0.5333":[61.979,-8.504,97.821],"0.55":[63.092,-7.883,98.197],"0.5833":[63.721,-7.745,98.815],"0.6":[64.96,-8.085,101.152],"0.6333":[65.655,-8.575,102.885],"0.65":[67.618,-9.951,107.201],"0.6833":[68.801,-10.841,109.709],"0.7":[70.064,-11.869,112.403],"0.7167":[71.363,-13.027,115.248],"0.7333":[72.665,-14.298,118.209],"0.75":[73.926,-15.671,121.256],"0.7667":[75.113,-17.13,124.362],"0.7833":[76.193,-18.65,127.501],"0.8":[77.138,-20.197,130.643],"0.8167":[77.925,-21.742,133.768],"0.8333":[78.528,-23.252,136.852],"0.85":[78.934,-24.688,139.87],"0.8667":[79.136,-26.013,142.792],"0.8833":[79.121,-27.186,145.59],"0.9":[78.885,-28.176,148.237],"0.9333":[78.443,-28.943,150.682],"0.95":[76.952,-29.681,154.806],"0.9833":[75.934,-29.599,156.378],"1.0":[69.162,-26.916,156.912],"1.0167":[63.978,-23.582,155.63],"1.05":[52.893,-15.252,149.91],"1.0833":[47.869,-11.201,145.841],"1.1":[43.811,-7.742,141.348],"1.1167":[41.301,-5.124,136.753],"1.1333":[41.021,-3.462,132.355],"1.15":[44.019,-2.564,127.477],"1.1667":[50.253,-1.628,121.638],"1.1833":[58.74,0.111,115.493],"1.2":[68.39,3.046,109.786],"1.2167":[78.14,7.068,105.184],"1.2333":[87.042,11.634,102.058],"1.25":[94.223,15.994,100.385],"1.2667":[99.092,18.332,100.932],"1.2833":[102.357,18.276,102.998],"1.3":[105.064,17.547,104.652],"1.3333":[107.568,16.59,105.369],"1.35":[110.916,14.165,105.782],"1.3833":[111.626,13.617,105.801],"1.4":[112.035,12.921,105.596],"1.4333":[112.49,12.905,105.18],"1.45":[114.442,13.929,102.398],"1.4833":[115.553,14.709,101.163],"1.5":[117.56,15.733,103.379],"1.5333":[118.538,15.941,106.91],"1.55":[119.468,16.132,110.684],"1.5667":[120.335,16.473,113.582],"1.5833":[121.197,17.01,115.584],"1.6":[122.095,17.639,117.412],"1.6167":[122.984,18.299,119.042],"1.6333":[123.813,18.937,120.441],"1.65":[124.524,19.507,121.571],"1.6667":[125.054,19.963,122.385],"1.6833":[125.346,20.333,122.739],"1.7":[125.422,20.669,122.632],"1.7167":[125.358,20.977,122.234],"1.75":[125.149,21.526,121.248],"1.7833":[125.16,21.763,121.007],"1.8":[125.482,22.03,121.084],"1.8333":[125.707,22.076,121.227],"1.85":[126.155,22.168,121.513]},"position":{"0.0":[13.56,26.223,-10.772],"0.0167":[14.028,25.783,-10.458],"0.0333":[14.503,25.335,-10.145],"0.05":[14.982,24.882,-9.834],"0.0833":[15.468,24.422,-9.524],"0.1":[16.437,23.498,-8.925],"0.1333":[16.919,23.039,-8.636],"0.15":[17.872,22.119,-8.088],"0.1833":[18.338,21.666,-7.831],"0.2":[19.244,20.785,-7.358],"0.2333":[19.679,20.355,-7.141],"0.25":[20.508,19.539,-6.749],"0.2833":[20.898,19.15,-6.573],"0.3":[21.267,18.781,-6.414],"0.3167":[21.617,18.434,-6.265],"0.3333":[21.942,18.107,-6.133],"0.35":[22.244,17.805,-6.016],"0.3667":[22.519,17.531,-5.911],"0.3833":[22.745,17.294,-5.834],"0.4":[22.917,17.106,-5.788],"0.4167":[23.031,16.969,-5.773],"0.4333":[23.098,16.875,-5.776],"0.45":[23.123,16.822,-5.798],"0.4667":[23.113,16.802,-5.832],"0.5":[23.016,16.862,-5.914],"0.5333":[22.941,16.931,-5.952],"0.55":[22.759,17.132,-5.998],"0.5833":[22.671,17.253,-5.995],"0.6":[22.519,17.53,-5.911],"0.6333":[22.461,17.68,-5.834],"0.65":[22.355,18.032,-5.652],"0.6833":[22.306,18.226,-5.551],"0.7":[22.26,18.427,-5.447],"0.7167":[22.215,18.635,-5.341],"0.7333":[22.171,18.845,-5.234],"0.75":[22.124,19.054,-5.126],"0.7667":[22.077,19.264,-5.02],"0.7833":[22.025,19.47,-4.916],"0.8":[21.968,19.672,-4.814],"0.8167":[21.903,19.869,-4.713],"0.8333":[21.83,20.062,-4.614],"0.85":[21.747,20.25,-4.517],"0.8667":[21.653,20.434,-4.42],"0.8833":[21.547,20.615,-4.323],"0.9":[21.429,20.795,-4.226],"0.9333":[21.297,20.973,-4.128],"0.95":[20.995,21.333,-3.924],"0.9833":[20.823,21.514,-3.82],"1.0":[21.536,21.588,-5.066],"1.0167":[22.112,21.59,-6.17],"1.05":[23.054,21.761,-8.868],"1.0833":[23.249,21.969,-10.252],"1.1":[23.224,22.256,-11.518],"1.1167":[23.002,22.597,-12.59],"1.1333":[22.628,22.962,-13.404],"1.15":[22.098,23.352,-13.982],"1.1667":[21.397,23.771,-14.385],"1.1833":[20.564,24.201,-14.607],"1.2":[19.625,24.626,-14.645],"1.2167":[18.622,25.033,-14.521],"1.2333":[17.607,25.417,-14.27],"1.25":[16.64,25.77,-13.958],"1.2667":[15.661,26.086,-13.354],"1.2833":[14.616,26.359,-12.497],"1.3":[13.729,26.577,-11.802],"1.3333":[13.243,26.694,-11.36],"1.35":[12.95,26.782,-10.773],"1.3833":[12.906,26.817,-10.604],"1.4":[13.001,26.842,-10.428],"1.4333":[13.06,26.86,-10.371],"1.45":[13.154,26.953,-10.288],"1.4833":[13.212,26.995,-10.286],"1.5":[13.344,26.993,-10.424],"1.5333":[13.427,26.945,-10.577],"1.55":[13.494,26.892,-10.734],"1.5667":[13.525,26.858,-10.834],"1.5833":[13.524,26.85,-10.877],"1.6":[13.502,26.859,-10.892],"1.6167":[13.468,26.872,-10.888],"1.6333":[13.433,26.89,-10.878],"1.65":[13.396,26.897,-10.873],"1.6667":[13.366,26.891,-10.885],"1.6833":[13.34,26.869,-10.92],"1.7":[13.313,26.836,-10.962],"1.7167":[13.285,26.8,-11.012],"1.75":[13.227,26.731,-11.098],"1.7833":[13.2,26.706,-11.125],"1.8":[13.156,26.683,-11.127],"1.8333":[13.138,26.672,-11.111],"1.85":[13.101,26.652,-11.079]}},"righthand":{"rotation":{"0.0":[-83.981,174.775,0.539],"0.0167":[-78.896,173.01,-4.355],"0.0333":[-72.048,170.705,-10.851],"0.05":[-64.635,168.409,-17.648],"0.0833":[-57.631,166.564,-23.476],"0.1":[-46.66,164.672,-28.73],"0.1333":[-41.018,164.084,-29.723],"0.15":[-29.285,163.398,-30.153],"0.1833":[-23.665,163.297,-29.842],"0.2":[-14.104,163.441,-28.8],"0.2333":[-10.645,163.596,-28.302],"0.25":[-37.768,164.476,-32.128],"0.2833":[-64.044,164.23,-38.128],"0.3":[-90.401,163.584,-44.554],"0.3167":[-115.069,164.125,-49.217],"0.3333":[-139.404,168.068,-52.729],"0.35":[-159.709,170.878,-54.567],"0.3667":[-185.761,173.015,-54.487],"0.3833":[-183.279,173.799,-53.464],"0.4":[-181.98,175.003,-52.588],"0.4167":[-181.665,176.436,-51.74],"0.4333":[-182.135,177.912,-50.772],"0.45":[-183.193,179.272,-49.521],"0.4667":[-184.649,180.359,-47.799],"0.5":[-187.888,181.11,-42.194],"0.5333":[-188.028,179.324,-38.171],"0.55":[-180.616,167.401,-29.531],"0.5833":[-173.67,158.055,-25.546],"0.6":[-156.161,136.635,-17.535],"0.6333":[-146.629,127.035,-12.227],"0.65":[-128.993,115.797,3.099],"0.6833":[-119.961,112.843,12.986],"0.7":[-110.764,111.299,23.745],"0.7167":[-102.234,111.053,34.243],"0.7333":[-95.074,111.92,43.479],"0.75":[-89.444,113.663,50.994],"0.7667":[-84.977,116.109,56.859],"0.7833":[-81.033,119.142,61.404],"0.8":[-76.977,122.719,64.963],"0.8167":[-73.492,130.792,64.762],"0.8333":[-70.012,143.671,60.742],"0.85":[-65.104,156.079,56.518],"0.8667":[-59.065,162.824,55.022],"0.8833":[-55.195,170.489,57.223],"0.9":[-51.412,177.166,62.533],"0.9333":[-48.535,182.791,68.394],"0.95":[-47.359,190.299,73.101],"0.9833":[-48.73,192.241,72.845],"1.0":[-52.058,193.105,69.472],"1.0167":[-53.347,190.15,65.229],"1.05":[-56.266,182.981,54.758],"1.0833":[-57.515,184.592,52.371],"1.1":[-58.393,187.906,50.535],"1.1167":[-59.16,191.858,49.191],"1.1333":[-60.173,195.428,48.313],"1.15":[-61.881,197.638,47.914],"1.1667":[-64.718,197.465,47.896],"1.1833":[-73.322,182.701,48.516],"1.2":[-82.872,166,43.594],"1.2167":[-90.126,165.623,39.076],"1.2333":[-94.437,172.481,37.85],"1.25":[-95.755,176.953,37.138],"1.2667":[-98.165,179.465,32.833],"1.2833":[-103.714,183.581,26.201],"1.3":[-108.46,185.706,19.84],"1.3333":[-110.435,185.355,13.728],"1.35":[-111.384,183.815,3.937],"1.3833":[-110.926,183.966,2.093],"1.4":[-107.761,183.772,1.181],"1.4333":[-104.499,182.836,0.991],"1.45":[-96.254,179.945,1.137],"1.4833":[-92.551,178.616,1.382],"1.5":[-88.415,177.354,1.785],"1.5333":[-87.201,177.045,1.948],"1.55":[-86.305,176.831,2.093],"1.5667":[-85.676,176.689,2.219],"1.5833":[-85.268,176.6,2.322],"1.6":[-85.037,176.539,2.406],"1.6167":[-84.933,176.486,2.467],"1.6333":[-84.906,176.421,2.508],"1.65":[-84.927,176.34,2.531],"1.6667":[-84.989,176.253,2.541],"1.6833":[-85.071,176.165,2.542],"1.7":[-85.17,176.081,2.537],"1.7167":[-85.272,176.001,2.53],"1.75":[-85.459,175.868,2.517],"1.7833":[-85.57,175.801,2.509],"1.8":[-85.794,175.685,2.485],"1.8333":[-85.887,175.641,2.476],"1.85":[-85.975,175.602,2.467]},"position":{"0.0":[-14.961,25.636,-9.129],"0.0167":[-15.215,26.954,-8.575],"0.0333":[-15.484,28.749,-7.885],"0.05":[-15.684,30.695,-7.224],"0.0833":[-15.792,32.443,-6.734],"0.1":[-15.894,34.26,-6.586],"0.1333":[-15.958,34.791,-6.675],"0.15":[-16.124,35.536,-6.968],"0.1833":[-16.22,35.781,-7.147],"0.2":[-16.389,36.072,-7.499],"0.2333":[-16.441,36.131,-7.643],"0.25":[-13.524,33.305,-8.609],"0.2833":[-10.818,30.856,-9.673],"0.3":[-8.364,28.597,-11.032],"0.3167":[-6.023,26.392,-12.782],"0.3333":[-5.352,25.261,-11.315],"0.35":[-4.451,23.801,-10.111],"0.3667":[-3.341,22.266,-9.159],"0.3833":[-4.086,21.519,-8.232],"0.4":[-4.864,20.697,-7.213],"0.4167":[-5.658,19.866,-6.178],"0.4333":[-6.44,19.074,-5.196],"0.45":[-7.186,18.375,-4.345],"0.4667":[-7.87,17.824,-3.688],"0.5":[-8.941,17.367,-3.243],"0.5333":[-9.367,17.404,-3.467],"0.55":[-10.316,17.494,-4.462],"0.5833":[-10.826,17.562,-5.22],"0.6":[-11.802,17.891,-7.099],"0.6333":[-12.232,18.193,-8.097],"0.65":[-12.947,19.004,-9.997],"0.6833":[-13.224,19.464,-10.857],"0.7":[-13.445,19.939,-11.629],"0.7167":[-13.607,20.42,-12.293],"0.7333":[-13.703,20.902,-12.83],"0.75":[-13.741,21.383,-13.216],"0.7667":[-13.719,21.871,-13.421],"0.7833":[-13.649,22.365,-13.409],"0.8":[-13.539,22.869,-13.137],"0.8167":[-13.158,23.638,-12.606],"0.8333":[-12.432,24.732,-12.009],"0.85":[-11.698,25.935,-11.521],"0.8667":[-11.417,27.125,-11.171],"0.8833":[-11.561,27.749,-10.992],"0.9":[-11.851,28.173,-11.046],"0.9333":[-12.195,28.564,-11.183],"0.95":[-12.727,29.447,-11.281],"0.9833":[-12.958,29.871,-11.31],"1.0":[-13.474,30.536,-11.327],"1.0167":[-13.839,30.667,-11.303],"1.05":[-14.594,30.464,-11.25],"1.0833":[-14.821,30.32,-11.195],"1.1":[-14.999,30.172,-11.081],"1.1167":[-15.154,30.012,-10.968],"1.1333":[-15.319,29.833,-10.905],"1.15":[-15.521,29.627,-10.947],"1.1667":[-15.792,29.374,-11.14],"1.1833":[-16.316,28.771,-12.077],"1.2":[-16.754,27.7,-12.886],"1.2167":[-17.134,26.932,-13.462],"1.2333":[-17.323,25.948,-13.856],"1.25":[-17.538,24.951,-13.959],"1.2667":[-17.691,23.863,-13.836],"1.2833":[-17.521,22.815,-13.561],"1.3":[-17.168,22.353,-13.096],"1.3333":[-16.721,22.637,-12.369],"1.35":[-15.707,23.881,-10.533],"1.3833":[-15.293,24.462,-9.577],"1.4":[-14.768,25.427,-8.225],"1.4333":[-14.725,25.563,-8.254],"1.45":[-14.76,25.551,-8.514],"1.4833":[-14.792,25.475,-8.671],"1.5":[-14.808,25.349,-8.87],"1.5333":[-14.804,25.301,-8.942],"1.55":[-14.8,25.257,-9.011],"1.5667":[-14.796,25.222,-9.07],"1.5833":[-14.791,25.188,-9.127],"1.6":[-14.789,25.162,-9.179],"1.6167":[-14.787,25.141,-9.224],"1.6333":[-14.788,25.127,-9.267],"1.65":[-14.792,25.112,-9.304],"1.6667":[-14.795,25.1,-9.332],"1.6833":[-14.801,25.09,-9.354],"1.7":[-14.805,25.08,-9.368],"1.7167":[-14.809,25.075,-9.375],"1.75":[-14.818,25.081,-9.377],"1.7833":[-14.821,25.093,-9.375],"1.8":[-14.829,25.128,-9.368],"1.8333":[-14.834,25.142,-9.363],"1.85":[-14.837,25.158,-9.357]}},"h1":{"rotation":{"0.0":[-86.263,1.558,9.598],"0.0167":[-91.528,0.583,4.065],"0.0333":[-98.561,-0.761,-3.391],"0.05":[-106.081,-2.165,-11.34],"0.0833":[-113.076,-3.319,-18.352],"0.1":[-123.943,-4.435,-25.613],"0.1333":[-129.681,-4.771,-27.694],"0.15":[-141.621,-5.269,-30.446],"0.1833":[-147.2,-5.447,-31.248],"0.2":[-155.991,-5.683,-32.037],"0.2333":[-158.563,-5.743,-32.157],"0.25":[-130.078,-4.425,-30.657],"0.2833":[-102.613,-6.508,-31.871],"0.3":[-73.947,-10.887,-34.738],"0.3167":[-44.814,-14.949,-37.907],"0.3333":[-8.525,-15.945,-42.365],"0.35":[27.964,-16.623,-46.857],"0.3667":[64.613,-16.962,-51.352],"0.3833":[64.86,-15.994,-49.991],"0.4":[65.336,-14.67,-48.971],"0.4167":[65.931,-13.187,-48.125],"0.4333":[66.534,-11.721,-47.267],"0.45":[67.059,-10.424,-46.198],"0.4667":[67.411,-9.44,-44.7],"0.5":[67.21,-8.985,-39.534],"0.5333":[65.067,-10.929,-35.376],"0.55":[51.145,-22.818,-24.418],"0.5833":[39.377,-31.61,-18.001],"0.6":[7.073,-49.789,-1.421],"0.6333":[-12.333,-56.548,10.003],"0.65":[-46.204,-61.65,33.865],"0.6833":[-59.737,-61.812,44.482],"0.7":[-70.892,-61.04,53.554],"0.7167":[-79.684,-59.613,60.861],"0.7333":[-86.476,-57.728,66.514],"0.75":[-91.79,-55.518,70.771],"0.7667":[-96.172,-53.038,73.909],"0.7833":[-100.158,-50.295,76.187],"0.8":[-104.252,-47.253,77.827],"0.8167":[-106.747,-43.855,77.392],"0.8333":[-106.98,-39.943,74.755],"0.85":[-106.667,-35.288,71.715],"0.8667":[-107.081,-29.91,69.596],"0.8833":[-107.575,-19.126,67.398],"0.9":[-106.041,-2.467,60.144],"0.9333":[-104.885,16.911,59.321],"0.95":[-111.612,60.338,39.478],"0.9833":[-166.606,81.261,-20.147],"1.0":[-263.202,46.625,-120.673],"1.0167":[-266.18,28.953,-124.055],"1.05":[-267.461,-1.469,-128.248],"1.0833":[-267.994,-18.659,-129.228],"1.1":[-267.424,-36.907,-132.665],"1.1167":[-262.987,-55.492,-138.57],"1.1333":[-251.886,-76.579,-150.886],"1.15":[-280.034,-104.482,-124.534],"1.1667":[-271.873,-132.029,-130.552],"1.1833":[-271.528,-155.697,-128.684],"1.2":[-268.717,-173.062,-127.419],"1.2167":[-262.988,-180.234,-128.038],"1.2333":[-257.261,-185.809,-128.187],"1.25":[-254.809,-188.26,-129.252],"1.2667":[-251.785,-188.572,-133.909],"1.2833":[-245.309,-188.501,-141.63],"1.3":[-240.159,-187.963,-148.999],"1.3333":[-238.272,-186.924,-155.354],"1.35":[-237.613,-184.945,-165.431],"1.3833":[-238.036,-185.167,-167.292],"1.4":[-241.198,-185.708,-168.156],"1.4333":[-244.595,-185.516,-168.386],"1.45":[-253.277,-184.443,-168.614],"1.4833":[-257.175,-183.889,-168.648],"1.5":[-261.474,-183.386,-168.647],"1.5333":[-262.723,-183.281,-168.615],"1.55":[-263.643,-183.217,-168.571],"1.5667":[-264.286,-183.179,-168.516],"1.5833":[-264.703,-183.156,-168.459],"1.6":[-264.94,-183.133,-168.403],"1.6167":[-265.051,-183.098,-168.354],"1.6333":[-265.088,-183.038,-168.316],"1.65":[-265.08,-182.955,-168.292],"1.6667":[-265.034,-182.859,-168.276],"1.6833":[-264.967,-182.759,-168.266],"1.7":[-264.883,-182.66,-168.26],"1.7167":[-264.795,-182.565,-168.256],"1.75":[-264.632,-182.404,-168.249],"1.7833":[-264.533,-182.32,-168.245],"1.8":[-264.331,-182.169,-168.244],"1.8333":[-264.247,-182.111,-168.243],"1.85":[-264.167,-182.058,-168.242]},"position":{"0.0":[-8.448,44.049,-14.085],"0.0167":[-8.657,45.671,-13.497],"0.0333":[-8.947,47.858,-12.721],"0.05":[-9.268,50.196,-11.922],"0.0833":[-9.569,52.259,-11.267],"0.1":[-9.995,54.436,-10.8],"0.1333":[-10.195,55.093,-10.706],"0.15":[-10.585,56.009,-10.583],"0.1833":[-10.761,56.3,-10.549],"0.2":[-11.028,56.627,-10.518],"0.2333":[-11.106,56.689,-10.514],"0.25":[-8.056,53.831,-12.372],"0.2833":[-5.066,51.033,-14.177],"0.3":[-2.092,48.251,-15.974],"0.3167":[0.884,45.47,-17.769],"0.3333":[2.154,43.751,-15.947],"0.35":[3.426,42.033,-14.124],"0.3667":[4.698,40.314,-12.302],"0.3833":[3.967,39.552,-11.506],"0.4":[3.218,38.682,-10.597],"0.4167":[2.459,37.773,-9.645],"0.4333":[1.705,36.882,-8.711],"0.45":[0.966,36.078,-7.872],"0.4667":[0.254,35.423,-7.188],"0.5":[-1.041,34.823,-6.56],"0.5333":[-1.654,34.836,-6.667],"0.55":[-2.994,34.936,-7.452],"0.5833":[-3.697,35.022,-8.075],"0.6":[-5.122,35.269,-9.65],"0.6333":[-5.825,35.426,-10.552],"0.65":[-7.16,35.81,-12.446],"0.6833":[-7.773,36.036,-13.386],"0.7":[-8.336,36.282,-14.287],"0.7167":[-8.84,36.552,-15.122],"0.7333":[-9.273,36.842,-15.864],"0.75":[-9.628,37.152,-16.487],"0.7667":[-9.894,37.484,-16.965],"0.7833":[-10.061,37.835,-17.272],"0.8":[-10.118,38.206,-17.379],"0.8167":[-9.778,38.933,-17.357],"0.8333":[-9.03,40.15,-17.306],"0.85":[-8.282,41.547,-17.241],"0.8667":[-7.942,42.817,-17.181],"0.8833":[-8.131,43.729,-17.124],"0.9":[-8.233,44.102,-17.093],"0.9333":[-8.358,44.365,-17.068],"0.95":[-8.86,44.919,-17.024],"0.9833":[-9.174,45.361,-16.982],"1.0":[-9.615,45.919,-16.925],"1.0167":[-9.736,46.01,-16.915],"1.05":[-10.1,46.165,-16.972],"1.0833":[-10.388,46.184,-16.992],"1.1":[-10.581,46.017,-17.029],"1.1167":[-10.873,45.863,-17.022],"1.1333":[-11.161,45.689,-17.015],"1.15":[-11.376,45.455,-17.044],"1.1667":[-11.566,45.194,-17.096],"1.1833":[-11.737,44.93,-17.143],"1.2":[-11.967,43.983,-17.746],"1.2167":[-12.113,43.22,-18.168],"1.2333":[-12.237,42.495,-18.542],"1.25":[-12.288,41.793,-18.705],"1.2667":[-12.142,40.976,-18.633],"1.2833":[-11.781,40.184,-18.398],"1.3":[-11.33,39.829,-17.957],"1.3333":[-10.767,40.125,-17.226],"1.35":[-9.546,41.44,-15.391],"1.3833":[-9.109,42.052,-14.444],"1.4":[-8.567,43.093,-13.12],"1.4333":[-8.494,43.308,-13.173],"1.45":[-8.437,43.51,-13.472],"1.4833":[-8.425,43.536,-13.638],"1.5":[-8.398,43.536,-13.843],"1.5333":[-8.383,43.527,-13.915],"1.55":[-8.371,43.512,-13.984],"1.5667":[-8.362,43.495,-14.043],"1.5833":[-8.354,43.474,-14.1],"1.6":[-8.349,43.455,-14.151],"1.6167":[-8.346,43.436,-14.196],"1.6333":[-8.344,43.422,-14.238],"1.65":[-8.346,43.406,-14.274],"1.6667":[-8.346,43.392,-14.301],"1.6833":[-8.349,43.379,-14.322],"1.7":[-8.351,43.365,-14.334],"1.7167":[-8.352,43.357,-14.34],"1.75":[-8.357,43.357,-14.34],"1.7833":[-8.359,43.365,-14.337],"1.8":[-8.363,43.392,-14.328],"1.8333":[-8.366,43.403,-14.322],"1.85":[-8.368,43.417,-14.316]}},"lefthand_1":{"rotation":{"0.0":[0,0,0],"1.15":[32.5,0,0],"1.4667":[0,0,0]},"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.3":[0,0,0],"0.3667":[49.17,0,0],"0.75":[40,0,0],"0.8833":[0,0,0]},"position":[0,2,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.045,0.011,0.008],"0.0167":[-0.173,0.047,0.035],"0.0333":[-0.354,0.097,0.067],"0.05":[-0.572,0.161,0.108],"0.0833":[-0.804,0.227,0.149],"0.1":[-1.029,0.296,0.18],"0.1167":[-1.222,0.359,0.207],"0.1333":[-1.37,0.41,0.215],"0.15":[-1.473,0.458,0.205],"0.1667":[-1.544,0.508,0.176],"0.1833":[-1.589,0.556,0.124],"0.2":[-1.615,0.595,0.054],"0.2167":[-1.628,0.624,-0.038],"0.2333":[-1.635,0.633,-0.154],"0.25":[-1.437,0.529,-0.409],"0.2667":[-1.006,0.323,-0.751],"0.2833":[-0.612,0.168,-0.925],"0.3":[-0.405,0.091,-0.237],"0.3167":[-0.246,0.015,0.84],"0.3333":[-0.095,-0.059,1.432],"0.35":[-0.328,-0.132,-0.083],"0.3667":[-0.559,-0.199,-1.585],"0.3833":[-0.418,-0.261,-0.437],"0.4":[-0.246,-0.314,0.698],"0.4167":[-0.18,-0.36,0.604],"0.4333":[-0.118,-0.393,0.367],"0.45":[-0.068,-0.416,0.047],"0.4667":[-0.03,-0.423,-0.273],"0.5":[-0.004,-0.421,-0.509],"0.5167":[0.005,-0.414,-0.604],"0.5333":[-0.002,-0.402,-0.604],"0.55":[-0.018,-0.387,-0.604],"0.5667":[-0.038,-0.37,-0.592],"0.5833":[-0.066,-0.347,-0.58],"0.6":[-0.095,-0.325,-0.556],"0.6167":[-0.125,-0.299,-0.545],"0.6333":[-0.148,-0.268,-0.519],"0.65":[-0.171,-0.244,-0.495],"0.6667":[-0.182,-0.214,-0.47],"0.6833":[-0.194,-0.184,-0.445],"0.7":[-0.194,-0.154,-0.412],"0.7167":[-0.205,-0.124,-0.387],"0.7333":[-0.205,-0.094,-0.354],"0.75":[-0.217,-0.064,-0.321],"0.7667":[-0.228,-0.04,-0.287],"0.7833":[-0.25,-0.016,-0.263],"0.8":[-0.273,0.008,-0.23],"0.8167":[-0.329,0.026,-0.196],"0.8333":[-0.43,0.044,-0.163],"0.85":[-0.542,0.062,-0.139],"0.8667":[-0.654,0.074,-0.106],"0.8833":[-0.744,0.086,-0.081],"0.9167":[-0.811,0.092,-0.056],"0.9333":[-0.845,0.098,-0.023],"0.95":[-0.876,0.103,0.001],"0.9667":[-0.906,0.11,0.034],"0.9833":[-0.93,0.115,0.068],"1.0":[-0.948,0.119,0.101],"1.0167":[-0.983,0.129,0.167],"1.05":[-1.001,0.131,0.2],"1.0667":[-1.013,0.136,0.227],"1.0833":[-1.019,0.139,0.26],"1.1":[-1.031,0.141,0.28],"1.1167":[-1.037,0.141,0.299],"1.1333":[-1.037,0.144,0.313],"1.15":[-1.043,0.144,0.326],"1.1667":[-1.043,0.144,0.326],"1.1833":[-1.013,0.132,0.293],"1.2":[-0.935,0.102,0.207],"1.2167":[-0.822,0.059,0.081],"1.2333":[-0.684,0.008,-0.064],"1.25":[-0.529,-0.041,-0.21],"1.2667":[-0.373,-0.085,-0.341],"1.2833":[-0.226,-0.116,-0.428],"1.3":[-0.099,-0.128,-0.463],"1.3333":[0.025,-0.125,-0.106],"1.35":[0.137,-0.114,0.626],"1.3667":[0.185,-0.086,1.227],"1.3833":[0.132,-0.019,1.523],"1.4":[0.034,0.065,1.688],"1.4167":[-0.019,0.106,1.749],"1.4333":[-0.002,0.098,1.619],"1.45":[0.034,0.08,1.314],"1.4667":[0.079,0.057,0.931],"1.4833":[0.115,0.035,0.582],"1.5":[0.132,0.021,0.373],"1.5167":[0.129,0.012,0.278],"1.5333":[0.121,0.005,0.217],"1.55":[0.11,-0.002,0.173],"1.5667":[0.1,-0.007,0.153],"1.5833":[0.085,-0.011,0.13],"1.6":[0.07,-0.013,0.119],"1.6167":[0.062,-0.015,0.108],"1.6333":[0.055,-0.015,0.096],"1.65":[0.047,-0.015,0.074],"1.6667":[0.039,-0.015,0.062],"1.6833":[0.032,-0.013,0.051],"1.7":[0.032,-0.012,0.04],"1.7167":[0.024,-0.011,0.028],"1.75":[0.016,-0.008,0.017],"1.7667":[0.016,-0.006,0.017],"1.7833":[0.009,-0.005,0.006],"1.8":[0.009,-0.004,0.006],"1.8167":[0.001,-0.002,0.006],"1.8333":[0.001,-0.001,0.006],"1.85":[0.001,-0.001,0.006],"1.8667":[0.001,0,-0.006]}}},"sound_effects":{"0.0":{"effect":"melee.thieve_sea.melee_1"}}},"melee_2":{"loop":true,"animation_length":1.8,"override_previous_animation":true,"bones":{"lefthand":{"rotation":{"0.0":[78.323,-14.394,113.243],"0.0167":[88.573,-16.239,105.668],"0.0333":[93.006,-14.71,102.385],"0.05":[85.199,-8.225,105.436],"0.0833":[71.253,1.165,109.031],"0.1":[58.317,5.942,112.199],"0.1333":[55.183,5.497,113.931],"0.15":[49.664,4.026,117.837],"0.1833":[47.146,3.135,119.931],"0.2":[42.297,1.305,124.171],"0.2333":[39.899,0.477,126.236],"0.25":[35.073,-0.781,130.08],"0.2833":[32.641,-1.138,131.808],"0.3":[30.218,-1.281,133.376],"0.3167":[27.808,-1.189,134.773],"0.3333":[25.429,-0.853,135.989],"0.35":[23.021,-0.418,136.868],"0.3667":[20.682,-0.077,137.307],"0.3833":[18.675,0.097,137.379],"0.4":[17.282,0.084,137.168],"0.4167":[16.777,-0.094,136.726],"0.4333":[17.431,-0.371,136.096],"0.45":[19.182,-0.821,135.092],"0.4667":[21.671,-1.414,133.585],"0.5":[28.17,-2.173,129.607],"0.5333":[31.811,-2.092,127.528],"0.55":[39.021,-1.169,124.425],"0.5833":[42.32,-0.667,123.881],"0.6":[48.063,-0.465,125.405],"0.6333":[51.075,-0.715,126.897],"0.65":[57.425,-2.073,130.717],"0.6833":[60.608,-3.248,132.913],"0.7":[63.687,-4.761,135.212],"0.7167":[66.592,-6.595,137.554],"0.7333":[69.251,-8.709,139.887],"0.75":[71.606,-11.046,142.177],"0.7667":[73.616,-13.54,144.391],"0.7833":[75.245,-16.111,146.506],"0.8":[76.475,-18.68,148.501],"0.8167":[77.299,-21.161,150.362],"0.8333":[77.721,-23.472,152.059],"0.85":[77.761,-25.539,153.558],"0.8667":[77.448,-27.288,154.823],"0.8833":[76.823,-28.658,155.786],"0.9":[75.932,-29.6,156.378],"0.9333":[73.743,-29.318,156.497],"0.95":[64.699,-23.911,154.554],"0.9833":[59.142,-19.755,152.265],"1.0":[48.335,-11.21,145.344],"1.0167":[44.065,-7.715,141.105],"1.05":[41.021,-3.462,132.355],"1.0833":[44.019,-2.563,127.477],"1.1":[50.253,-1.628,121.638],"1.1167":[58.739,0.111,115.493],"1.1333":[68.39,3.046,109.786],"1.15":[78.14,7.067,105.184],"1.1667":[87.043,11.634,102.058],"1.1833":[94.224,15.992,100.388],"1.2":[99.09,18.334,100.929],"1.2167":[102.355,18.278,103],"1.2333":[105.063,17.543,104.653],"1.25":[107.569,16.592,105.369],"1.2667":[109.529,15.189,105.695],"1.2833":[110.914,14.166,105.778],"1.3":[111.625,13.619,105.801],"1.3333":[111.873,13.184,105.771],"1.35":[112.491,12.904,105.178],"1.3833":[113.368,13.258,104.044],"1.4":[115.55,14.71,101.165],"1.4333":[116.585,15.36,101.25],"1.45":[118.538,15.939,106.909],"1.4833":[119.471,16.135,110.688],"1.5":[121.197,17.011,115.582],"1.5333":[122.095,17.635,117.411],"1.55":[122.985,18.302,119.043],"1.5667":[123.811,18.935,120.439],"1.5833":[124.525,19.505,121.571],"1.6":[125.058,19.965,122.385],"1.6167":[125.348,20.331,122.74],"1.6333":[125.42,20.668,122.633],"1.65":[125.359,20.98,122.234],"1.6667":[125.241,21.266,121.716],"1.6833":[125.149,21.529,121.248],"1.7":[125.163,21.766,121.009],"1.7167":[125.294,21.933,120.998],"1.75":[125.708,22.075,121.23],"1.7833":[125.942,22.11,121.384],"1.8":[126.153,22.167,121.512]},"position":{"0.0":[21.613,17.855,-4.813],"0.0167":[20.689,17.331,-4.447],"0.0333":[20.129,16.758,-3.865],"0.05":[20.154,15.965,-3.076],"0.0833":[20.127,15.265,-2.463],"0.1":[20.065,14.696,-1.697],"0.1333":[20.135,14.505,-1.332],"0.15":[20.336,14.17,-0.57],"0.1833":[20.464,14.028,-0.178],"0.2":[20.758,13.801,0.618],"0.2333":[20.916,13.716,1.014],"0.25":[21.232,13.6,1.786],"0.2833":[21.38,13.559,2.155],"0.3":[21.51,13.523,2.509],"0.3167":[21.617,13.482,2.848],"0.3333":[21.696,13.431,3.169],"0.35":[21.75,13.321,3.465],"0.3667":[21.783,13.148,3.719],"0.3833":[21.791,12.966,3.908],"0.4":[21.776,12.819,3.998],"0.4167":[21.742,12.755,3.965],"0.4333":[21.693,12.817,3.785],"0.45":[21.592,13.011,3.463],"0.4667":[21.403,13.298,3.039],"0.5":[20.808,14.176,2.047],"0.5333":[20.44,14.739,1.556],"0.55":[19.733,15.934,0.717],"0.5833":[19.489,16.46,0.394],"0.6":[19.379,17.193,-0.069],"0.6333":[19.38,17.516,-0.25],"0.65":[19.412,18.149,-0.547],"0.6833":[19.441,18.451,-0.677],"0.7":[19.479,18.745,-0.8],"0.7167":[19.527,19.03,-0.925],"0.7333":[19.583,19.308,-1.055],"0.75":[19.649,19.572,-1.198],"0.7667":[19.727,19.827,-1.356],"0.7833":[19.819,20.071,-1.537],"0.8":[19.922,20.306,-1.744],"0.8167":[20.039,20.529,-1.983],"0.8333":[20.17,20.745,-2.259],"0.85":[20.316,20.952,-2.575],"0.8667":[20.473,21.148,-2.938],"0.8833":[20.643,21.335,-3.351],"0.9":[20.821,21.515,-3.82],"0.9333":[21.133,21.637,-4.476],"0.95":[22.183,21.746,-6.555],"0.9833":[22.686,21.813,-7.831],"1.0":[23.23,22.099,-10.44],"1.0167":[23.205,22.331,-11.613],"1.05":[22.629,22.961,-13.404],"1.0833":[22.098,23.35,-13.981],"1.1":[21.399,23.77,-14.385],"1.1167":[20.564,24.201,-14.605],"1.1333":[19.625,24.627,-14.645],"1.15":[18.622,25.036,-14.521],"1.1667":[17.609,25.416,-14.27],"1.1833":[16.64,25.771,-13.958],"1.2":[15.661,26.085,-13.354],"1.2167":[14.615,26.36,-12.496],"1.2333":[13.728,26.577,-11.803],"1.25":[13.243,26.694,-11.362],"1.2667":[13.041,26.742,-11.024],"1.2833":[12.949,26.783,-10.774],"1.3":[12.906,26.818,-10.605],"1.3333":[12.937,26.832,-10.497],"1.35":[13.059,26.86,-10.372],"1.3833":[13.103,26.9,-10.32],"1.4":[13.211,26.994,-10.286],"1.4333":[13.272,27.013,-10.322],"1.45":[13.427,26.947,-10.577],"1.4833":[13.493,26.892,-10.732],"1.5":[13.522,26.851,-10.878],"1.5333":[13.502,26.86,-10.889],"1.55":[13.468,26.874,-10.889],"1.5667":[13.433,26.889,-10.878],"1.5833":[13.396,26.896,-10.875],"1.6":[13.366,26.889,-10.886],"1.6167":[13.339,26.868,-10.918],"1.6333":[13.312,26.835,-10.964],"1.65":[13.285,26.799,-11.009],"1.6667":[13.254,26.762,-11.059],"1.6833":[13.227,26.731,-11.097],"1.7":[13.198,26.709,-11.123],"1.7167":[13.176,26.693,-11.132],"1.75":[13.137,26.673,-11.113],"1.7833":[13.121,26.663,-11.096],"1.8":[13.102,26.652,-11.078]}},"righthand":{"rotation":{"0.0":[113.918,41.091,-100.661],"0.0167":[121.879,8.699,-96.838],"0.0333":[131.536,-7.239,-104.635],"0.05":[145.102,-3.531,-104.977],"0.0833":[160.717,3.1,-102.516],"0.1":[160.465,0.464,-102.623],"0.1333":[140.857,-11.438,-104.674],"0.15":[114.874,-21.571,-108.702],"0.1833":[105.689,-24.046,-107.233],"0.2":[77.22,-22.006,-100.509],"0.2333":[61.156,-15.551,-103.588],"0.25":[42.766,-20.868,-105.736],"0.2833":[40.222,-29.83,-102.87],"0.3":[39.91,-33.666,-103.008],"0.3167":[41.219,-33.257,-106.412],"0.3333":[42.486,-32.338,-110.026],"0.35":[43.715,-30.97,-113.768],"0.3667":[44.903,-29.186,-117.568],"0.3833":[46.057,-26.997,-121.38],"0.4":[47.174,-24.41,-125.134],"0.4167":[48.254,-21.403,-128.783],"0.4333":[49.29,-17.959,-132.257],"0.45":[50.291,-14.039,-135.507],"0.4667":[51.257,-9.615,-138.457],"0.5":[53.168,0.908,-143.173],"0.5333":[54.223,7.072,-144.749],"0.55":[71.185,36.402,-140.886],"0.5833":[88.484,51.525,-128.683],"0.6":[106.379,52.209,-109.091],"0.6333":[106.477,39,-105.74],"0.65":[105.071,5.98,-101.204],"0.6833":[105.649,-5.075,-100.107],"0.7":[110.572,-7.708,-105.559],"0.7167":[116.595,-2.102,-121.224],"0.7333":[115.462,6.573,-145.098],"0.75":[107.734,10.658,-172.89],"0.7667":[100.169,13.979,-196.062],"0.7833":[92.671,17.722,-216.818],"0.8":[89.325,15.708,-238.429],"0.8167":[91.303,15.142,-257.5],"0.8333":[94.383,20.814,-270.855],"0.85":[95.575,24.132,-278.703],"0.8667":[93.675,22.568,-290.681],"0.8833":[90.264,18.56,-304.32],"0.9":[87.283,13.333,-314.744],"0.9333":[85.706,9.421,-318.125],"0.95":[91.83,21.911,-277.436],"0.9833":[110.007,30.241,-214.974],"1.0":[118.594,8.73,-135.874],"1.0167":[109.18,-5.887,-116.614],"1.05":[90.546,-15.797,-99.704],"1.0833":[87.933,-14.78,-107.869],"1.1":[92.999,-10.078,-116.418],"1.1167":[98.972,-4.883,-125.405],"1.1333":[101.42,-0.861,-133.45],"1.15":[102.085,2.983,-140.844],"1.1667":[104.362,7.91,-147.256],"1.1833":[106.528,12.505,-151.85],"1.2":[107.462,15.926,-153.911],"1.2167":[106.701,18.308,-154.862],"1.2333":[103.869,19.34,-157.279],"1.25":[97.556,18.083,-162.745],"1.2667":[88.394,14.32,-169.364],"1.2833":[79.061,9.098,-174.563],"1.3":[71.366,3.756,-177.422],"1.3333":[66.734,-0.02,-178.776],"1.35":[66.343,-2.297,-179.766],"1.3833":[71.384,-1.667,-179.866],"1.4":[84.757,0.895,-179.137],"1.4333":[89.262,1.871,-178.621],"1.45":[93.4,2.841,-177.986],"1.4833":[94.444,3.068,-177.823],"1.5":[95.572,3.401,-177.58],"1.5333":[95.787,3.521,-177.497],"1.55":[95.873,3.621,-177.437],"1.5667":[95.882,3.704,-177.399],"1.5833":[95.849,3.779,-177.377],"1.6":[95.755,3.857,-177.373],"1.6167":[95.615,3.933,-177.378],"1.6333":[95.454,4.01,-177.389],"1.65":[95.288,4.081,-177.404],"1.6667":[95.132,4.148,-177.419],"1.6833":[94.966,4.215,-177.434],"1.7":[94.769,4.286,-177.452],"1.7167":[94.557,4.359,-177.474],"1.75":[94.193,4.48,-177.512],"1.7833":[94.076,4.517,-177.528],"1.8":[94.031,4.533,-177.532]},"position":{"0.0":[-12.629,23.754,-10.546],"0.0167":[-10.042,26.187,-8.828],"0.0333":[-7.099,27.911,-7.478],"0.05":[-3.146,28.151,-5.635],"0.0833":[1.417,28.267,-3.669],"0.1":[2.943,29.045,-4.243],"0.1333":[1.599,29.587,-7.022],"0.15":[-3.052,30.073,-12.425],"0.1833":[-6.526,30.065,-14.843],"0.2":[-14.639,30.228,-14.629],"0.2333":[-19.369,30.406,-11.822],"0.25":[-23.943,29.375,-3.952],"0.2833":[-24.308,28.208,1.242],"0.3":[-24.292,27.375,3.613],"0.3167":[-24.221,26.836,3.385],"0.3333":[-24.055,26.255,2.955],"0.35":[-23.809,25.642,2.357],"0.3667":[-23.492,25.017,1.606],"0.3833":[-23.115,24.395,0.728],"0.4":[-22.69,23.793,-0.255],"0.4167":[-22.225,23.229,-1.316],"0.4333":[-21.726,22.723,-2.433],"0.45":[-21.199,22.29,-3.581],"0.4667":[-20.651,21.953,-4.74],"0.5":[-19.515,21.633,-6.964],"0.5333":[-18.937,21.685,-7.973],"0.55":[-17.527,22.078,-10.351],"0.5833":[-16.856,22.416,-11.321],"0.6":[-14.922,23.7,-11.451],"0.6333":[-13.729,24.915,-11.137],"0.65":[-11.608,27.238,-10.834],"0.6833":[-10.901,27.844,-10.82],"0.7":[-10.693,28.281,-10.641],"0.7167":[-11.029,28.927,-10.507],"0.7333":[-11.691,29.425,-10.7],"0.75":[-12.329,29.474,-11.027],"0.7667":[-12.827,29.339,-11.363],"0.7833":[-13.215,29.184,-11.735],"0.8":[-13.218,28.83,-11.762],"0.8167":[-12.818,28.387,-11.549],"0.8333":[-12.338,27.853,-11.54],"0.85":[-12.201,27.419,-11.704],"0.8667":[-12.194,27.573,-11.434],"0.8833":[-12.24,27.898,-11.063],"0.9":[-12.322,28.28,-10.641],"0.9333":[-12.414,28.614,-10.241],"0.95":[-12.914,28.837,-9.869],"0.9833":[-13.574,28.916,-9.945],"1.0":[-14.015,28.915,-10.598],"1.0167":[-13.816,28.547,-11.178],"1.05":[-12.809,27.6,-12.616],"1.0833":[-12.134,27.004,-13.221],"1.1":[-12.182,26.731,-13.594],"1.1167":[-12.441,26.327,-13.908],"1.1333":[-12.758,25.797,-14.11],"1.15":[-13.137,25.057,-14.093],"1.1667":[-13.583,24.122,-13.911],"1.1833":[-14.013,23.294,-13.666],"1.2":[-14.72,22.728,-13.362],"1.2167":[-15.621,22.388,-12.929],"1.2333":[-16.091,22.25,-12.328],"1.25":[-15.974,22.335,-11.437],"1.2667":[-15.659,22.687,-10.395],"1.2833":[-15.322,23.274,-9.539],"1.3":[-15.064,24.167,-8.945],"1.3333":[-14.903,25.131,-8.539],"1.35":[-14.774,25.906,-8.398],"1.3833":[-14.756,25.888,-8.448],"1.4":[-14.776,25.561,-8.667],"1.4333":[-14.794,25.423,-8.78],"1.45":[-14.801,25.281,-8.939],"1.4833":[-14.798,25.233,-9.006],"1.5":[-14.794,25.162,-9.127],"1.5333":[-14.792,25.137,-9.176],"1.55":[-14.791,25.115,-9.226],"1.5667":[-14.794,25.101,-9.267],"1.5833":[-14.796,25.088,-9.306],"1.6":[-14.801,25.075,-9.333],"1.6167":[-14.805,25.066,-9.352],"1.6333":[-14.809,25.06,-9.368],"1.65":[-14.813,25.057,-9.373],"1.6667":[-14.817,25.059,-9.378],"1.6833":[-14.821,25.068,-9.375],"1.7":[-14.825,25.083,-9.373],"1.7167":[-14.829,25.102,-9.371],"1.75":[-14.838,25.14,-9.365],"1.7833":[-14.839,25.152,-9.362],"1.8":[-14.84,25.158,-9.359]}},"h1":{"rotation":{"0.0":[-109.048,-31.053,87.925],"0.0167":[-111.423,1.02,89.776],"0.0333":[-118.748,16.435,81.702],"0.05":[-133.139,11.605,81.813],"0.0833":[-150.311,4.799,85.776],"0.1":[-146.962,7.185,84.539],"0.1333":[-122.773,19.647,80.651],"0.15":[-87.47,22.359,80.04],"0.1833":[-75.012,14.07,80.884],"0.2":[-52.808,10.389,82.826],"0.2333":[-44.311,11.145,83.888],"0.25":[-28.09,13.638,82.276],"0.2833":[-22.33,16.38,77.26],"0.3":[-20.851,17.265,72.621],"0.3167":[-21.97,16.909,69.939],"0.3333":[-23.043,16.32,67.463],"0.35":[-24.123,15.538,65.181],"0.3667":[-25.264,14.577,63.065],"0.3833":[-26.52,13.43,61.087],"0.4":[-27.934,12.073,59.222],"0.4167":[-29.548,10.463,57.446],"0.4333":[-31.389,8.549,55.753],"0.45":[-33.485,6.258,54.14],"0.4667":[-35.849,3.515,52.631],"0.5":[-41.438,-3.687,50.12],"0.5333":[-44.708,-8.33,49.306],"0.55":[-70.147,-31.381,55.008],"0.5833":[-90.476,-42.79,66.766],"0.6":[-106.429,-46.468,83.018],"0.6333":[-104.364,-43.024,86.358],"0.65":[-95.75,-34.957,88.598],"0.6833":[-93.853,-33.398,88.725],"0.7":[-98.909,-37.529,86.997],"0.7167":[-109.464,-48.005,79.938],"0.7333":[-114.083,-60.491,60.181],"0.75":[-97.369,-66.132,17.154],"0.7667":[-79.185,-58.644,-23.386],"0.7833":[-71.816,-42.27,-49.401],"0.8":[-72.901,-20.879,-69.457],"0.8167":[-78.11,-1.888,-87.88],"0.8333":[-82.63,10.856,-103.503],"0.85":[-83.233,19.16,-115.03],"0.8667":[-80.782,25.458,-125.425],"0.8833":[-76.103,30.225,-135.181],"0.9":[-70.338,33.88,-144.842],"0.9333":[-64.886,36.681,-155.085],"0.95":[-61.281,39.394,-180.566],"0.9833":[-65.554,38.107,-197.255],"1.0":[-75.905,27.085,-231.484],"1.0167":[-76.063,16.398,-247.337],"1.05":[-72.567,0.171,-269.693],"1.0833":[-75.912,-4.01,-278.867],"1.1":[-80.458,-6.338,-288],"1.1167":[-83.712,-7.16,-297.072],"1.1333":[-83.008,-7.023,-306.115],"1.15":[-80.314,-6.924,-314.94],"1.1667":[-78.476,-7.191,-322.752],"1.1833":[-76.326,-7.052,-328.728],"1.2":[-73.485,-6.153,-331.789],"1.2167":[-70.321,-5.074,-332.985],"1.2333":[-67.225,-4.026,-334.661],"1.25":[-64.261,-3.059,-338.015],"1.2667":[-61.457,-2.079,-341.847],"1.2833":[-59.239,-1.033,-344.891],"1.3":[-57.645,0.2,-346.617],"1.3333":[-56.543,1.454,-347.558],"1.35":[-58.12,2.836,-348.343],"1.3833":[-63.294,3.18,-348.525],"1.4":[-75.929,3.51,-348.651],"1.4333":[-79.848,3.543,-348.656],"1.45":[-83.3,3.492,-348.613],"1.4833":[-84.368,3.437,-348.568],"1.5":[-85.532,3.288,-348.459],"1.5333":[-85.763,3.204,-348.402],"1.55":[-85.864,3.118,-348.353],"1.5667":[-85.886,3.038,-348.316],"1.5833":[-85.865,2.959,-348.291],"1.6":[-85.785,2.867,-348.277],"1.6167":[-85.659,2.769,-348.267],"1.6333":[-85.513,2.668,-348.26],"1.65":[-85.36,2.572,-348.256],"1.6667":[-85.217,2.481,-348.253],"1.6833":[-85.064,2.389,-348.25],"1.7":[-84.881,2.286,-348.245],"1.7167":[-84.684,2.181,-348.244],"1.75":[-84.345,2.003,-348.242],"1.7833":[-84.236,1.948,-348.245],"1.8":[-84.194,1.925,-348.243]},"position":{"0.0":[-8.588,40.196,-15.345],"0.0167":[-5.073,43.993,-13.996],"0.0333":[-1.185,46.332,-12.377],"0.05":[3.568,46.617,-10.123],"0.0833":[8.696,46.668,-7.598],"0.1":[10.441,47.408,-8.01],"0.1333":[8.739,48.097,-11.453],"0.15":[3.303,48.845,-17.282],"0.1833":[-0.429,48.93,-19.669],"0.2":[-9.388,48.816,-19.46],"0.2333":[-14.612,48.478,-16.503],"0.25":[-19.753,47.293,-8.33],"0.2833":[-20.314,46.446,-3.114],"0.3":[-20.395,45.675,-0.648],"0.3167":[-20.339,44.977,-0.747],"0.3333":[-20.181,44.212,-1.032],"0.35":[-19.932,43.401,-1.479],"0.3667":[-19.605,42.565,-2.07],"0.3833":[-19.211,41.727,-2.782],"0.4":[-18.765,40.906,-3.596],"0.4167":[-18.276,40.125,-4.488],"0.4333":[-17.759,39.406,-5.439],"0.45":[-17.225,38.769,-6.426],"0.4667":[-16.686,38.237,-7.432],"0.5":[-15.645,37.57,-9.408],"0.5333":[-15.167,37.479,-10.336],"0.55":[-14.077,37.569,-13.537],"0.5833":[-13.393,37.786,-15.167],"0.6":[-11.692,39.239,-15.965],"0.6333":[-10.647,40.941,-16],"0.65":[-8.561,44.55,-16.024],"0.6833":[-7.706,45.548,-16.025],"0.7":[-7.031,45.896,-16.025],"0.7167":[-6.469,46.017,-16.024],"0.7333":[-5.993,46.052,-16.022],"0.75":[-5.57,46.13,-16.019],"0.7667":[-5.167,46.392,-16.014],"0.7833":[-4.769,46.961,-16.009],"0.8":[-4.422,47.741,-16.004],"0.8167":[-4.175,48.528,-15.99],"0.8333":[-4.08,49.13,-15.961],"0.85":[-4.375,49.51,-15.879],"0.8667":[-5.134,49.793,-15.731],"0.8833":[-6.16,50.006,-15.551],"0.9":[-7.266,50.182,-15.371],"0.9333":[-8.257,50.345,-15.224],"0.95":[-10.163,50.458,-15.116],"0.9833":[-10.092,49.817,-15.161],"1.0":[-9.649,47.29,-15.59],"1.0167":[-9.209,46.767,-16.2],"1.05":[-8.403,45.821,-17.377],"1.0833":[-8.043,45.255,-17.913],"1.1":[-7.72,44.671,-18.394],"1.1167":[-7.488,44.063,-18.741],"1.1333":[-7.399,43.422,-18.874],"1.15":[-7.403,42.643,-18.748],"1.1667":[-7.428,41.787,-18.442],"1.1833":[-7.498,41.105,-18.06],"1.2":[-7.945,40.673,-17.648],"1.2167":[-8.673,40.416,-17.16],"1.2333":[-9.054,40.329,-16.576],"1.25":[-8.979,40.408,-15.804],"1.2667":[-8.823,40.641,-14.932],"1.2833":[-8.693,41.028,-14.203],"1.3":[-8.632,41.707,-13.667],"1.3333":[-8.597,42.54,-13.274],"1.35":[-8.531,43.311,-13.174],"1.3833":[-8.496,43.444,-13.304],"1.4":[-8.435,43.537,-13.639],"1.4333":[-8.414,43.541,-13.761],"1.45":[-8.384,43.528,-13.916],"1.4833":[-8.372,43.513,-13.983],"1.5":[-8.355,43.475,-14.1],"1.5333":[-8.349,43.456,-14.149],"1.55":[-8.345,43.436,-14.197],"1.5667":[-8.345,43.422,-14.238],"1.5833":[-8.345,43.407,-14.275],"1.6":[-8.347,43.391,-14.301],"1.6167":[-8.349,43.377,-14.32],"1.6333":[-8.351,43.366,-14.335],"1.65":[-8.353,43.358,-14.338],"1.6667":[-8.355,43.355,-14.342],"1.6833":[-8.357,43.358,-14.338],"1.7":[-8.359,43.366,-14.335],"1.7167":[-8.361,43.379,-14.331],"1.75":[-8.367,43.404,-14.323],"1.7833":[-8.367,43.412,-14.32],"1.8":[-8.367,43.417,-14.316]}},"lefthand_1":{"rotation":{"0.0":[0,0,0],"1.05":[50,0,0],"1.4":[0,0,0]},"scale":[1,1.5,1]},"righthand_1":{"position":[0,2,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.028,-0.025,-0.045],"0.0167":[0.1,-0.088,-0.167],"0.0333":[0.193,-0.17,-0.32],"0.05":[0.291,-0.251,-0.474],"0.0833":[0.363,-0.315,-0.586],"0.1":[0.392,-0.34,-0.637],"0.1167":[0.324,-0.328,-0.586],"0.1333":[0.158,-0.293,-0.463],"0.15":[-0.061,-0.245,-0.3],"0.1667":[-0.276,-0.192,-0.136],"0.1833":[-0.444,-0.138,-0.014],"0.2":[-0.509,-0.091,0.037],"0.2167":[-0.161,-0.054,-0.514],"0.2333":[0.186,-0.014,-1.064],"0.25":[-0.151,0.066,0.22],"0.2667":[-0.482,0.121,1.514],"0.2833":[-0.197,0.095,0.037],"0.3":[0.089,0.067,-1.432],"0.3167":[0.067,0.065,-0.604],"0.3333":[0.044,0.062,0.218],"0.35":[0.067,0.046,0.14],"0.3667":[0.116,0.017,-0.036],"0.3833":[0.167,-0.015,-0.213],"0.4":[0.19,-0.044,-0.291],"0.4167":[0.187,-0.065,-0.265],"0.4333":[0.177,-0.085,-0.206],"0.45":[0.162,-0.104,-0.115],"0.4667":[0.139,-0.123,-0.024],"0.5":[0.112,-0.141,0.068],"0.5167":[0.078,-0.163,0.127],"0.5333":[0.038,-0.184,0.153],"0.55":[-0.019,-0.214,0.153],"0.5667":[-0.098,-0.25,0.14],"0.5833":[-0.188,-0.281,0.127],"0.6":[-0.275,-0.294,0.114],"0.6167":[-0.365,-0.294,0.092],"0.6333":[-0.467,-0.28,0.073],"0.65":[-0.577,-0.266,0.049],"0.6667":[-0.687,-0.245,0.027],"0.6833":[-0.797,-0.225,0.006],"0.7":[-0.899,-0.197,-0.013],"0.7167":[-0.983,-0.163,-0.029],"0.7333":[-1.051,-0.121,-0.041],"0.75":[-1.094,-0.08,-0.051],"0.7667":[-1.111,-0.038,-0.054],"0.7833":[-1.077,0.024,-0.039],"0.8":[-0.992,0.101,-0.006],"0.8167":[-0.865,0.191,0.046],"0.8333":[-0.712,0.288,0.104],"0.85":[-0.534,0.379,0.169],"0.8667":[-0.355,0.462,0.228],"0.8833":[-0.194,0.531,0.282],"0.9167":[-0.041,0.579,0.316],"0.9333":[0.073,0.594,0.329],"0.95":[0.157,0.583,0.325],"0.9667":[0.247,0.549,0.308],"0.9833":[0.324,0.498,0.286],"1.0":[0.394,0.43,0.259],"1.0167":[0.516,0.277,0.192],"1.05":[0.561,0.198,0.151],"1.0667":[0.599,0.125,0.115],"1.0833":[0.619,0.063,0.079],"1.1":[0.625,0.018,0.044],"1.1167":[0.586,-0.016,0.008],"1.1333":[0.483,-0.049,-0.032],"1.15":[0.342,-0.072,-0.082],"1.1667":[0.168,-0.089,-0.13],"1.1833":[-0.019,-0.106,-0.175],"1.2":[-0.192,-0.118,-0.215],"1.2167":[-0.336,-0.122,-0.245],"1.2333":[-0.437,-0.127,-0.267],"1.25":[-0.476,-0.128,-0.275],"1.2667":[-0.461,-0.124,-0.223],"1.2833":[-0.418,-0.118,-0.091],"1.3":[-0.36,-0.109,0.064],"1.3333":[-0.283,-0.097,0.196],"1.35":[-0.201,-0.086,0.255],"1.3667":[-0.119,-0.073,0.159],"1.3833":[-0.041,-0.058,-0.062],"1.4":[0.026,-0.043,-0.334],"1.4167":[0.075,-0.029,-0.555],"1.4333":[0.104,-0.019,-0.651],"1.45":[0.113,-0.014,-0.644],"1.4667":[0.118,-0.011,-0.607],"1.4833":[0.123,-0.009,-0.563],"1.5":[0.128,-0.008,-0.504],"1.5167":[0.13,-0.006,-0.439],"1.5333":[0.13,-0.006,-0.369],"1.55":[0.132,-0.004,-0.307],"1.5667":[0.132,0,-0.245],"1.5833":[0.128,0.006,-0.184],"1.6":[0.114,0.015,-0.113],"1.6167":[0.098,0.025,-0.034],"1.6333":[0.082,0.034,0.028],"1.65":[0.064,0.041,0.08],"1.6667":[0.053,0.043,0.098],"1.6833":[0.041,0.041,0.089],"1.7":[0.032,0.034,0.08],"1.7167":[0.021,0.026,0.054],"1.75":[0.014,0.017,0.036],"1.7667":[0.007,0.009,0.019],"1.7833":[0.003,0.002,0.001],"1.8":[0.001,0,0.001]}}},"sound_effects":{"0.0":{"effect":"melee.thieve_sea.melee_2"}}},"melee_3":{"loop":true,"animation_length":2.5,"override_previous_animation":true,"bones":{"lefthand":{"rotation":{"0.0":[73.411,-9.75,123.029],"0.0167":[77.592,-9.552,124.846],"0.0333":[81.816,-10.027,126.246],"0.05":[86.104,-10.883,127.219],"0.0833":[90.489,-11.866,127.889],"0.1":[99.816,-13.337,129.322],"0.1333":[104.616,-13.58,130.743],"0.15":[114.289,-13.904,135.671],"0.1833":[119.725,-14.561,138.9],"0.2":[133.28,-18.167,145.359],"0.2333":[144.099,-23.647,150.748],"0.25":[172.821,-37.518,153.048],"0.2833":[189.659,-24.7,142.91],"0.3":[197.6,-6.528,140.594],"0.3167":[201.616,3.232,141.856],"0.3333":[204.383,4.265,143.091],"0.35":[207.056,4.18,144.651],"0.3667":[209.682,3.32,146.319],"0.3833":[212.337,2.045,147.906],"0.4":[212.067,-0.094,148.699],"0.4167":[207.062,-3.677,148.987],"0.4333":[199.054,-8.58,150.044],"0.45":[176.096,-20.103,154.455],"0.4667":[142.164,-31.549,169.298],"0.5":[67.613,-19.808,205.699],"0.5333":[39.085,-2.364,212.801],"0.55":[-4.886,30.192,205.853],"0.5833":[-15.203,38.417,201.477],"0.6":[-3.232,39.009,208.686],"0.6333":[5.303,36.817,213.318],"0.65":[20.769,28.76,219.377],"0.6833":[26.154,24.174,219.857],"0.7":[29.348,20.101,218.601],"0.7167":[31.409,15.389,215.796],"0.7333":[33.902,8.949,211.62],"0.75":[37.119,1.376,206.192],"0.7667":[41.343,-6.688,199.531],"0.7833":[46.826,-14.551,191.587],"0.8":[53.663,-21.508,182.389],"0.8167":[61.675,-26.92,172.202],"0.8333":[70.219,-30.372,161.743],"0.85":[78.257,-31.842,152.132],"0.8667":[84.688,-31.716,144.574],"0.8833":[88.707,-30.591,140.007],"0.9":[89.865,-29.006,139.017],"0.9333":[90.615,-29.562,137.731],"0.95":[91.767,-30.497,135.805],"0.9833":[92.179,-30.872,135.145],"1.0":[92.708,-31.443,134.367],"1.0167":[92.836,-31.64,134.228],"1.05":[92.885,-31.871,134.372],"1.0833":[92.824,-31.911,134.632],"1.1":[92.703,-31.905,135.009],"1.1167":[92.553,-31.859,135.476],"1.1333":[92.362,-31.779,136.037],"1.15":[92.15,-31.67,136.67],"1.1667":[91.916,-31.537,137.374],"1.1833":[91.667,-31.387,138.134],"1.2":[91.407,-31.228,138.94],"1.2167":[91.138,-31.063,139.787],"1.2333":[90.861,-30.899,140.668],"1.25":[90.575,-30.741,141.572],"1.2667":[90.282,-30.595,142.497],"1.2833":[89.98,-30.464,143.432],"1.3":[89.663,-30.352,144.373],"1.3333":[89.329,-30.26,145.322],"1.35":[88.605,-30.144,147.191],"1.3833":[88.202,-30.118,148.108],"1.4":[87.307,-30.127,149.879],"1.4333":[86.806,-30.156,150.722],"1.45":[85.686,-30.241,152.3],"1.4833":[85.064,-30.289,153.023],"1.5":[83.698,-30.371,154.312],"1.5333":[82.955,-30.394,154.866],"1.55":[82.175,-30.399,155.352],"1.5667":[81.361,-30.38,155.764],"1.5833":[80.515,-30.335,156.096],"1.6":[79.641,-30.259,156.343],"1.6167":[78.743,-30.149,156.5],"1.6333":[77.824,-30.004,156.561],"1.65":[76.886,-29.821,156.522],"1.6667":[75.945,-29.618,156.348],"1.6833":[74.166,-28.855,156.145],"1.7":[71.085,-27.18,155.761],"1.7167":[67.119,-24.744,155.051],"1.75":[57.938,-18.45,152.188],"1.7833":[53.311,-15.082,149.903],"1.8":[45.302,-9.024,143.794],"1.8333":[42.498,-6.644,140.157],"1.85":[41.02,-3.463,132.356],"1.8833":[44.754,-2.675,127.169],"1.9":[63.656,1.041,113.011],"1.9333":[75.215,5.441,106.759],"1.95":[85.887,10.884,102.489],"1.9667":[94.225,15.992,100.388],"1.9833":[99.391,18.535,100.899],"2.0":[102.509,18.379,102.985],"2.0167":[105.059,17.544,104.654],"2.0333":[107.567,16.591,105.371],"2.05":[109.531,15.19,105.698],"2.0667":[110.913,14.164,105.78],"2.0833":[111.626,13.616,105.802],"2.1":[111.875,13.179,105.773],"2.1167":[112.035,12.916,105.598],"2.1333":[112.493,12.909,105.179],"2.15":[113.368,13.257,104.043],"2.1833":[114.441,13.929,102.4],"2.2":[116.584,15.365,101.25],"2.2333":[117.544,15.723,103.339],"2.25":[119.417,16.1,110.553],"2.2833":[120.332,16.469,113.577],"2.3":[122.373,17.853,117.915],"2.3333":[123.415,18.639,119.762],"2.35":[124.346,19.365,121.281],"2.3667":[125.055,19.967,122.385],"2.3833":[125.37,20.467,122.671],"2.4":[125.33,20.952,122.172],"2.4167":[125.179,21.404,121.442],"2.4333":[125.158,21.764,121.005],"2.45":[125.344,21.983,121.007],"2.4667":[125.6,22.07,121.146],"2.4833":[125.884,22.102,121.342],"2.5":[126.159,22.169,121.518]},"position":{"0.0":[21.701,19.531,-6.129],"0.0167":[20.909,20.72,-7.002],"0.0333":[20.058,21.959,-7.677],"0.05":[19.167,23.197,-8.156],"0.0833":[18.276,24.391,-8.472],"0.1":[16.592,26.536,-8.776],"0.1333":[15.872,27.433,-8.812],"0.15":[14.664,28.914,-8.804],"0.1833":[14.075,29.658,-8.871],"0.2":[12.672,31.608,-9.17],"0.2333":[11.618,33.502,-9.582],"0.25":[9.428,38.573,-8.528],"0.2833":[9.028,39.774,-5.555],"0.3":[8.219,40.767,-3.299],"0.3167":[7.579,41.26,-2.347],"0.3333":[7.242,41.364,-2.32],"0.35":[6.955,41.391,-2.382],"0.3667":[6.749,41.372,-2.503],"0.3833":[6.645,41.331,-2.658],"0.4":[6.879,41.198,-2.809],"0.4167":[7.385,40.652,-3.257],"0.4333":[7.748,39.382,-4.466],"0.45":[7.938,36.847,-6.77],"0.4667":[8.058,33.486,-9.922],"0.5":[8.059,27.253,-14.016],"0.5333":[7.684,24.119,-13.304],"0.55":[7.119,21.132,-12.767],"0.5833":[7.021,20.395,-12.54],"0.6":[6.808,19.49,-11.334],"0.6333":[6.734,19.164,-10.65],"0.65":[6.694,18.515,-9.246],"0.6833":[6.754,18.122,-8.571],"0.7":[6.886,17.669,-7.935],"0.7167":[7.103,17.165,-7.277],"0.7333":[7.404,16.613,-6.546],"0.75":[7.783,16.012,-5.76],"0.7667":[8.234,15.371,-4.938],"0.7833":[8.745,14.705,-4.099],"0.8":[9.304,14.024,-3.258],"0.8167":[9.895,13.349,-2.43],"0.8333":[10.497,12.683,-1.63],"0.85":[11.088,12.051,-0.861],"0.8667":[11.649,11.46,-0.133],"0.8833":[12.154,10.921,0.544],"0.9":[12.581,10.444,1.17],"0.9333":[12.835,10.468,1.206],"0.95":[13.341,10.559,1.233],"0.9833":[13.593,10.63,1.226],"1.0":[14.099,10.822,1.168],"1.0167":[14.352,10.942,1.119],"1.05":[14.857,11.23,0.988],"1.0833":[15.109,11.397,0.907],"1.1":[15.357,11.578,0.814],"1.1167":[15.604,11.778,0.714],"1.1333":[15.85,11.99,0.604],"1.15":[16.092,12.216,0.488],"1.1667":[16.331,12.459,0.365],"1.1833":[16.565,12.711,0.237],"1.2":[16.795,12.979,0.104],"1.2167":[17.019,13.261,-0.033],"1.2333":[17.237,13.55,-0.174],"1.25":[17.449,13.853,-0.317],"1.2667":[17.655,14.166,-0.462],"1.2833":[17.852,14.487,-0.608],"1.3":[18.041,14.816,-0.756],"1.3333":[18.225,15.15,-0.904],"1.35":[18.566,15.836,-1.199],"1.3833":[18.725,16.181,-1.345],"1.4":[19.021,16.88,-1.636],"1.4333":[19.158,17.228,-1.78],"1.45":[19.416,17.918,-2.066],"1.4833":[19.536,18.258,-2.208],"1.5":[19.766,18.922,-2.491],"1.5333":[19.878,19.245,-2.632],"1.55":[19.988,19.56,-2.775],"1.5667":[20.098,19.867,-2.918],"1.5833":[20.21,20.165,-3.063],"1.6":[20.323,20.455,-3.209],"1.6167":[20.44,20.735,-3.358],"1.6333":[20.561,21.005,-3.509],"1.65":[20.688,21.265,-3.663],"1.6667":[20.822,21.515,-3.82],"1.6833":[21.055,21.704,-4.118],"1.7":[21.446,21.802,-4.67],"1.7167":[21.921,21.852,-5.438],"1.75":[22.845,21.901,-7.434],"1.7833":[23.173,21.954,-8.56],"1.8":[23.38,22.188,-10.796],"1.8333":[23.253,22.388,-11.805],"1.85":[22.631,22.962,-13.404],"1.8833":[22.061,23.362,-13.962],"1.9":[20.16,24.364,-14.55],"1.9333":[18.975,24.878,-14.518],"1.95":[17.761,25.355,-14.293],"1.9667":[16.641,25.771,-13.958],"1.9833":[15.613,26.101,-13.336],"2.0":[14.588,26.368,-12.487],"2.0167":[13.729,26.577,-11.802],"2.0333":[13.244,26.694,-11.361],"2.05":[13.041,26.742,-11.023],"2.0667":[12.95,26.783,-10.774],"2.0833":[12.906,26.818,-10.605],"2.1":[12.937,26.834,-10.498],"2.1167":[13.002,26.841,-10.429],"2.1333":[13.059,26.86,-10.373],"2.15":[13.104,26.899,-10.321],"2.1833":[13.155,26.951,-10.29],"2.2":[13.271,27.012,-10.321],"2.2333":[13.344,26.994,-10.421],"2.25":[13.493,26.894,-10.729],"2.2833":[13.525,26.859,-10.834],"2.3":[13.491,26.867,-10.885],"2.3333":[13.449,26.885,-10.878],"2.35":[13.405,26.898,-10.872],"2.3667":[13.365,26.891,-10.887],"2.3833":[13.329,26.854,-10.937],"2.4":[13.286,26.797,-11.009],"2.4167":[13.24,26.743,-11.08],"2.4333":[13.198,26.709,-11.124],"2.45":[13.168,26.689,-11.133],"2.4667":[13.145,26.676,-11.12],"2.4833":[13.124,26.665,-11.098],"2.5":[13.103,26.652,-11.08]}},"righthand":{"rotation":{"0.0":[92.001,52.365,-120.403],"0.0167":[74.195,43.319,-126.846],"0.0333":[60.431,34.501,-128.417],"0.05":[49.113,26.373,-129.97],"0.0833":[37.358,19.313,-140.086],"0.1":[32.116,3.72,-156.575],"0.1333":[42.616,-1.89,-159.907],"0.15":[72.844,-10.315,-162.12],"0.1833":[90.529,-14.196,-162.063],"0.2":[127.726,-20.143,-162.821],"0.2333":[147.607,-20.634,-164.926],"0.25":[187.585,-14.795,-168.35],"0.2833":[203.276,-11.294,-167.38],"0.3":[213.992,-9.122,-165.545],"0.3167":[218.083,-8.184,-164.15],"0.3333":[217.976,-7.742,-163.307],"0.35":[217.447,-7.389,-162.517],"0.3667":[216.83,-7.132,-161.926],"0.3833":[216.482,-7.004,-161.674],"0.4":[214.122,-5.245,-162.131],"0.4167":[207.984,-1.298,-163.5],"0.4333":[199.114,2.927,-165.649],"0.45":[174.925,8.786,-172.109],"0.4667":[147.456,6.821,-177.999],"0.5":[93.936,3.667,-177.288],"0.5333":[60.373,5.366,-179.035],"0.55":[5.684,8.701,-182.697],"0.5833":[-6.646,10.944,-183.425],"0.6":[-1.029,13.585,-182.55],"0.6333":[4.176,14.728,-181.805],"0.65":[14.862,16.289,-180.196],"0.6833":[18.529,16.647,-179.61],"0.7":[19.842,16.734,-179.372],"0.7167":[19.647,16.674,-179.363],"0.7333":[19.407,16.579,-179.372],"0.75":[19.13,16.452,-179.4],"0.7667":[18.831,16.295,-179.445],"0.7833":[18.513,16.111,-179.509],"0.8":[18.187,15.903,-179.591],"0.8167":[17.864,15.674,-179.693],"0.8333":[17.553,15.425,-179.813],"0.85":[17.26,15.159,-179.952],"0.8667":[16.996,14.881,-180.113],"0.8833":[16.768,14.591,-180.293],"0.9":[16.589,14.296,-180.494],"0.9333":[15.865,14.645,-180.593],"0.95":[11.408,18.87,-180.066],"0.9833":[8.046,22.516,-179.364],"1.0":[0.338,32.292,-176.669],"1.0167":[-3.277,38.181,-174.348],"1.05":[-7.074,51.189,-165.883],"1.0833":[-5.133,57.738,-158.06],"1.1":[1.806,63.565,-145.689],"1.1167":[15.825,67.49,-126.889],"1.1333":[35.319,68.04,-103.441],"1.15":[53.116,64.827,-82.676],"1.1667":[65.238,59.068,-68.705],"1.1833":[73.016,52.124,-60.302],"1.2":[78.555,44.861,-55.436],"1.2167":[83.255,37.799,-52.74],"1.2333":[87.906,31.26,-51.412],"1.25":[92.958,25.461,-50.914],"1.2667":[101.247,17.51,-49.959],"1.2833":[108.282,9.648,-49.797],"1.3":[110.095,5.305,-50.6],"1.3333":[109.471,1.991,-51.462],"1.35":[92.84,-4.39,4.579],"1.3833":[86.547,-5.096,-2.961],"1.4":[82.991,-10.5,-30.025],"1.4333":[82.968,-14.318,-44.441],"1.45":[89.558,-22.738,-74.208],"1.4833":[100.673,-26.725,-90.773],"1.5":[129.256,-27.806,-126.083],"1.5333":[136.412,-25.823,-138.178],"1.55":[137.11,-24.771,-145.841],"1.5667":[134.831,-24.928,-151.437],"1.5833":[130.76,-26.083,-155.507],"1.6":[125.948,-27.714,-158.572],"1.6167":[121.376,-29.103,-161.286],"1.6333":[117.983,-29.412,-164.449],"1.65":[115.341,-28.53,-168.175],"1.6667":[112.468,-27.021,-171.937],"1.6833":[109.43,-25.021,-175.571],"1.7":[106.337,-22.663,-178.936],"1.7167":[103.34,-20.066,-181.926],"1.75":[98.446,-14.63,-186.239],"1.7833":[97.546,-11.488,-187.009],"1.8":[99.272,-3.271,-185.252],"1.8333":[100.358,1.248,-183.546],"1.85":[96.576,13.228,-180.364],"1.8833":[90.817,18.152,-180.533],"1.9":[67.874,4.36,-183.27],"1.9333":[66.117,3.351,-181.275],"1.95":[66.674,4.613,-179.719],"1.9667":[66.701,7.863,-179.421],"1.9833":[66.339,10.001,-179.404],"2.0":[65.998,9.912,-179.408],"2.0167":[67.132,8.582,-179.619],"2.0333":[69.823,6.941,-179.995],"2.05":[73.041,5.818,-180.127],"2.0667":[76.604,5.315,-179.898],"2.0833":[80.687,4.94,-179.534],"2.1":[84.75,4.65,-179.089],"2.1167":[88.279,4.419,-178.648],"2.1333":[90.752,4.227,-178.312],"2.15":[92.332,4.07,-178.084],"2.1833":[93.569,3.948,-177.894],"2.2":[95.184,3.799,-177.618],"2.2333":[95.635,3.762,-177.525],"2.25":[96.045,3.737,-177.411],"2.2833":[96.076,3.735,-177.377],"2.3":[95.875,3.815,-177.359],"2.3333":[95.675,3.896,-177.369],"2.35":[95.444,3.984,-177.392],"2.3667":[95.22,4.068,-177.411],"2.3833":[95.027,4.131,-177.428],"2.4":[94.856,4.185,-177.444],"2.4167":[94.67,4.237,-177.462],"2.4333":[94.476,4.288,-177.483],"2.45":[94.306,4.331,-177.5],"2.4667":[94.158,4.366,-177.518],"2.4833":[94.057,4.39,-177.529],"2.5":[94.026,4.397,-177.532]},"position":{"0.0":[-16.296,21.777,-10.938],"0.0167":[-20.18,20.591,-9.299],"0.0333":[-22.129,20.593,-6.279],"0.05":[-23.15,21.104,-4.238],"0.0833":[-23.332,21.831,-4.561],"0.1":[-22.684,23.915,-6.554],"0.1333":[-22.013,25.116,-8.263],"0.15":[-19.271,28.262,-9.973],"0.1833":[-17.382,30.193,-10.461],"0.2":[-14.188,33.408,-11.377],"0.2333":[-13.002,34.674,-11.088],"0.25":[-10.407,37.813,-7.696],"0.2833":[-9.254,39.256,-5.472],"0.3":[-8.436,40.3,-3.628],"0.3167":[-8.123,40.77,-2.76],"0.3333":[-8.152,40.875,-2.608],"0.35":[-8.228,40.92,-2.516],"0.3667":[-8.306,40.932,-2.467],"0.3833":[-8.341,40.929,-2.453],"0.4":[-8.089,40.823,-2.482],"0.4167":[-7.604,40.313,-2.863],"0.4333":[-7.289,39.118,-4.038],"0.45":[-7.153,36.692,-6.313],"0.4667":[-7.108,33.436,-9.576],"0.5":[-7.259,26.898,-13.833],"0.5333":[-7.588,23.906,-13.027],"0.55":[-8.02,21.2,-12.609],"0.5833":[-8.04,20.525,-12.514],"0.6":[-8.134,19.57,-11.406],"0.6333":[-8.18,19.232,-10.818],"0.65":[-8.269,18.679,-9.753],"0.6833":[-8.308,18.427,-9.328],"0.7":[-8.341,18.176,-9.013],"0.7167":[-8.363,17.934,-8.774],"0.7333":[-8.377,17.714,-8.551],"0.75":[-8.384,17.512,-8.352],"0.7667":[-8.388,17.33,-8.174],"0.7833":[-8.392,17.17,-8.016],"0.8":[-8.397,17.029,-7.882],"0.8167":[-8.408,16.913,-7.765],"0.8333":[-8.425,16.811,-7.676],"0.85":[-8.455,16.734,-7.604],"0.8667":[-8.497,16.677,-7.554],"0.8833":[-8.557,16.641,-7.525],"0.9":[-8.636,16.624,-7.52],"0.9333":[-8.723,16.647,-7.575],"0.95":[-8.876,16.832,-7.954],"0.9833":[-8.924,16.983,-8.251],"1.0":[-8.908,17.358,-8.97],"1.0167":[-8.842,17.57,-9.341],"1.05":[-8.606,18.009,-10.001],"1.0833":[-8.473,18.234,-10.25],"1.1":[-8.358,18.461,-10.437],"1.1167":[-8.279,18.692,-10.561],"1.1333":[-8.257,18.931,-10.631],"1.15":[-8.3,19.18,-10.661],"1.1667":[-8.412,19.446,-10.66],"1.1833":[-8.599,19.723,-10.651],"1.2":[-8.845,20.024,-10.636],"1.2167":[-9.153,20.345,-10.632],"1.2333":[-9.506,20.682,-10.632],"1.25":[-9.898,21.043,-10.649],"1.2667":[-10.931,22.233,-10.562],"1.2833":[-12.287,23.997,-10.433],"1.3":[-13.439,25.494,-10.161],"1.3333":[-14.069,26.967,-9.882],"1.35":[-12.695,29.027,-9.613],"1.3833":[-12.694,29.943,-9.287],"1.4":[-13.209,30.091,-8.839],"1.4333":[-13.508,29.979,-8.547],"1.45":[-14.162,29.621,-8.024],"1.4833":[-14.619,29.202,-7.97],"1.5":[-15.437,28.184,-8.137],"1.5333":[-15.7,27.823,-8.379],"1.55":[-15.929,27.564,-8.72],"1.5667":[-16.168,27.315,-9.119],"1.5833":[-16.399,27.085,-9.533],"1.6":[-16.593,26.889,-9.931],"1.6167":[-16.716,26.735,-10.296],"1.6333":[-16.726,26.621,-10.623],"1.65":[-16.629,26.554,-10.946],"1.6667":[-16.456,26.534,-11.284],"1.6833":[-16.217,26.556,-11.62],"1.7":[-15.925,26.603,-11.933],"1.7167":[-15.597,26.665,-12.204],"1.75":[-14.9,26.788,-12.547],"1.7833":[-14.495,26.881,-12.522],"1.8":[-13.536,27.164,-12.058],"1.8333":[-13.1,27.216,-11.819],"1.85":[-13.097,26.313,-12.106],"1.8833":[-13.13,25.389,-12.511],"1.9":[-13.389,24.243,-11.624],"1.9333":[-13.746,23.723,-10.926],"1.95":[-14.155,23.427,-10.203],"1.9667":[-14.656,23.522,-9.654],"1.9833":[-15.056,23.897,-9.195],"2.0":[-15.19,24.346,-8.85],"2.0167":[-15.157,24.787,-8.606],"2.0333":[-15.108,25.22,-8.443],"2.05":[-15.072,25.483,-8.355],"2.0667":[-15.043,25.566,-8.354],"2.0833":[-14.999,25.569,-8.435],"2.1":[-14.95,25.522,-8.564],"2.1167":[-14.906,25.451,-8.703],"2.1333":[-14.875,25.381,-8.81],"2.15":[-14.854,25.328,-8.884],"2.1833":[-14.838,25.28,-8.953],"2.2":[-14.813,25.194,-9.075],"2.2333":[-14.805,25.16,-9.129],"2.25":[-14.796,25.111,-9.225],"2.2833":[-14.795,25.095,-9.268],"2.3":[-14.799,25.073,-9.332],"2.3333":[-14.803,25.064,-9.353],"2.35":[-14.808,25.06,-9.366],"2.3667":[-14.812,25.059,-9.374],"2.3833":[-14.816,25.063,-9.376],"2.4":[-14.82,25.071,-9.376],"2.4167":[-14.824,25.086,-9.374],"2.4333":[-14.827,25.105,-9.37],"2.45":[-14.831,25.123,-9.366],"2.4667":[-14.834,25.141,-9.363],"2.4833":[-14.836,25.153,-9.359],"2.5":[-14.836,25.158,-9.358]}},"h1":{"rotation":{"0.0":[-90.791,-44.669,72.718],"0.0167":[-69.09,-39.046,65.692],"0.0333":[-50.5,-32.651,62.233],"0.05":[-34.562,-25.941,58.68],"0.0833":[-18.76,-19.72,46.864],"0.1":[-6.555,-2.853,28.052],"0.1333":[-14.386,4.353,23.546],"0.15":[-41.214,14.581,17.625],"0.1833":[-58.205,18.098,15.575],"0.2":[-95.285,21.304,12.257],"0.2333":[-116.466,20.785,10.629],"0.25":[-165.065,17.304,7.551],"0.2833":[-186.56,15.281,6.388],"0.3":[-202.357,13.712,5.621],"0.3167":[-209.602,13.083,5.345],"0.3333":[-211.141,13.128,5.469],"0.35":[-211.875,13.229,5.744],"0.3667":[-212.094,13.329,6.019],"0.3833":[-212.113,13.374,6.143],"0.4":[-209.238,12.102,6.1],"0.4167":[-201.621,9.192,5.956],"0.4333":[-190.779,6.01,5.677],"0.45":[-164.262,1.923,3.901],"0.4667":[-130.095,0.859,2.109],"0.5":[-59.652,-0.091,-0.411],"0.5333":[-25.302,-0.376,-0.054],"0.55":[30.213,-4.181,0.781],"0.5833":[42.694,-6.945,1.01],"0.6":[37.552,-8.696,1.488],"0.6333":[32.527,-9.336,1.743],"0.65":[22.065,-10.177,2.17],"0.6833":[18.4,-10.381,2.303],"0.7":[16.98,-10.448,2.353],"0.8333":[16.98,-10.448,2.353],"0.85":[16.979,-10.448,2.352],"0.9":[16.979,-10.448,2.352],"0.9333":[17.511,-11.155,2.538],"0.95":[21.283,-16.472,3.972],"0.9833":[24.103,-20.857,5.245],"1.0":[30.208,-32.436,9.261],"1.0167":[32.693,-39.312,12.403],"1.05":[32.999,-54.08,23.563],"1.0833":[27.907,-61.09,34.152],"1.1":[15.942,-66.633,51.244],"1.1167":[-3.933,-68.975,75.714],"1.1333":[-24.892,-66.879,100.589],"1.15":[-39.332,-61.288,118.115],"1.1667":[-47.686,-53.92,128.581],"1.1833":[-52.733,-45.871,134.631],"1.2":[-56.387,-37.724,138.06],"1.2167":[-59.733,-29.811,139.845],"1.2333":[-63.399,-22.351,140.542],"1.25":[-67.757,-15.494,140.487],"1.2667":[-75.604,-5.539,140.283],"1.2833":[-83.884,4.289,139.553],"1.3":[-88.915,9.061,139.195],"1.3333":[-92.6,10.746,139.81],"1.35":[-88.486,3.834,199.773],"1.3833":[-90.248,-3.697,225.975],"1.4":[-95.845,1.348,273.861],"1.4333":[-96.232,8.096,294.904],"1.45":[-92.573,13.154,337.354],"1.4833":[-86.746,10.609,359.832],"1.5":[-82.804,1.446,404.382],"1.5333":[-84.955,-0.941,426.362],"1.55":[-88.067,-0.257,447.686],"1.5667":[-90.507,2.98,467.76],"1.5833":[-92.147,6.958,485.727],"1.6":[-93.654,10.202,502],"1.6167":[-94.853,12.641,517.963],"1.6333":[-94.855,14.701,534.945],"1.65":[-93.818,16.604,553.874],"1.6667":[-91.601,16.602,573.6],"1.6833":[-88.109,13.304,591.838],"1.7":[-85.037,7.855,608.32],"1.7167":[-83.731,1.939,624.425],"1.75":[-85.568,-6.927,656.609],"1.7833":[-87.452,-8.72,672.493],"1.8":[-89.59,-6.482,700.483],"1.8333":[-87.98,-2.582,710.448],"1.85":[-79.958,-2.894,727.717],"1.8833":[-75.295,-6.874,731.907],"1.9":[-63.244,-14.345,728.66],"1.9333":[-61.39,-12.522,729.862],"1.95":[-60.672,-10.032,731.359],"1.9667":[-59.348,-9.065,731.79],"1.9833":[-58.117,-8.449,731.941],"2.0":[-57.44,-7.601,731.94],"2.0167":[-58.32,-6.17,731.649],"2.0333":[-60.809,-4.498,731.143],"2.05":[-63.848,-3.058,730.87],"2.0667":[-67.239,-1.894,730.899],"2.0833":[-71.167,-0.773,730.99],"2.1":[-75.098,0.24,731.113],"2.1167":[-78.522,1.082,731.236],"2.1333":[-80.92,1.689,731.328],"2.15":[-82.448,2.106,731.39],"2.1833":[-83.647,2.427,731.446],"2.2":[-85.215,2.834,731.541],"2.2333":[-85.655,2.942,731.583],"2.25":[-86.053,3.032,731.652],"2.2833":[-86.084,3.038,731.682],"2.3":[-85.899,2.928,731.723],"2.3333":[-85.714,2.817,731.736],"2.35":[-85.5,2.693,731.739],"2.3667":[-85.292,2.575,731.745],"2.3833":[-85.112,2.482,731.75],"2.4":[-84.952,2.402,731.753],"2.4167":[-84.778,2.321,731.756],"2.4333":[-84.595,2.24,731.756],"2.45":[-84.433,2.17,731.759],"2.4667":[-84.294,2.111,731.757],"2.4833":[-84.198,2.071,731.757],"2.5":[-84.169,2.059,731.758]},"position":{"0.0":[-12.931,37.435,-14.743],"0.0167":[-16.89,36.665,-12.385],"0.0333":[-18.671,37.038,-8.792],"0.05":[-19.303,37.736,-6.388],"0.0833":[-18.764,38.392,-6.487],"0.1":[-16.944,40.378,-9.025],"0.1333":[-16.051,41.631,-11.446],"0.15":[-13.196,45.558,-14.499],"0.1833":[-11.272,48.196,-15.371],"0.2":[-7.761,52.891,-16.117],"0.2333":[-6.334,54.645,-15.32],"0.25":[-3.487,57.94,-10.697],"0.2833":[-2.335,59.249,-8.046],"0.3":[-1.545,60.179,-5.948],"0.3167":[-1.252,60.61,-4.992],"0.3333":[-1.287,60.723,-4.846],"0.35":[-1.362,60.78,-4.771],"0.3667":[-1.438,60.802,-4.742],"0.3833":[-1.472,60.805,-4.739],"0.4":[-1.25,60.748,-4.821],"0.4167":[-0.826,60.343,-5.352],"0.4333":[-0.568,59.249,-6.766],"0.45":[-0.527,56.868,-9.761],"0.4667":[-0.506,53.302,-13.747],"0.5":[-0.497,45.478,-18.73],"0.5333":[-0.804,41.456,-17.705],"0.55":[-1.237,37.791,-15.853],"0.5833":[-1.299,37.099,-15.329],"0.6":[-1.38,36.126,-14.371],"0.6333":[-1.406,35.792,-13.936],"0.65":[-1.449,35.294,-13.179],"0.6833":[-1.472,35.073,-12.857],"0.7":[-1.501,34.834,-12.576],"0.7167":[-1.529,34.587,-12.329],"0.7333":[-1.549,34.363,-12.099],"0.75":[-1.563,34.157,-11.89],"0.7667":[-1.574,33.971,-11.702],"0.7833":[-1.584,33.808,-11.535],"0.8":[-1.596,33.663,-11.388],"0.8167":[-1.613,33.545,-11.263],"0.8333":[-1.637,33.443,-11.162],"0.85":[-1.672,33.366,-11.08],"0.8667":[-1.719,33.311,-11.022],"0.8833":[-1.781,33.278,-10.988],"0.9":[-1.861,33.266,-10.975],"0.9333":[-1.953,33.287,-10.997],"0.95":[-2.161,33.438,-11.155],"0.9833":[-2.276,33.566,-11.284],"1.0":[-2.525,33.914,-11.627],"1.0167":[-2.662,34.13,-11.833],"1.05":[-2.952,34.634,-12.297],"1.0833":[-3.108,34.918,-12.545],"1.1":[-3.271,35.22,-12.805],"1.1167":[-3.441,35.538,-13.067],"1.1333":[-3.618,35.869,-13.33],"1.15":[-3.801,36.211,-13.59],"1.1667":[-3.992,36.563,-13.844],"1.1833":[-4.19,36.919,-14.087],"1.2":[-4.394,37.282,-14.317],"1.2167":[-4.605,37.649,-14.531],"1.2333":[-4.823,38.012,-14.722],"1.25":[-5.047,38.375,-14.891],"1.2667":[-5.805,39.522,-14.981],"1.2833":[-6.881,41.22,-14.994],"1.3":[-7.91,42.69,-14.823],"1.3333":[-8.506,44.236,-14.651],"1.35":[-7.728,47.878,-15.098],"1.3833":[-7.63,49.145,-15.204],"1.4":[-7.549,51.385,-15.402],"1.4333":[-7.515,52.379,-15.495],"1.45":[-7.486,54.09,-15.662],"1.4833":[-7.488,54.833,-15.733],"1.5":[-7.498,56.254,-15.873],"1.5333":[-7.504,56.923,-15.937],"1.55":[-7.509,57.558,-15.995],"1.5667":[-7.511,58.156,-16.047],"1.5833":[-7.383,58.749,-16.083],"1.6":[-7.064,59.302,-16.103],"1.6167":[-6.648,59.711,-16.117],"1.6333":[-6.228,59.871,-16.137],"1.65":[-5.681,59.814,-16.161],"1.6667":[-5.071,59.567,-16.188],"1.6833":[-4.783,59.016,-16.228],"1.7":[-4.784,58.27,-16.28],"1.7167":[-4.786,57.489,-16.336],"1.75":[-4.803,55.658,-16.456],"1.7833":[-4.823,54.527,-16.519],"1.8":[-4.953,51.51,-16.659],"1.8333":[-5.166,49.454,-16.75],"1.85":[-5.797,45.085,-16.904],"1.8833":[-6.148,43.192,-16.93],"1.9":[-7.277,41.357,-15.952],"1.9333":[-7.646,40.858,-15.302],"1.95":[-7.923,40.674,-14.685],"1.9667":[-8.206,40.866,-14.21],"1.9833":[-8.461,41.296,-13.797],"2.0":[-8.571,41.758,-13.478],"2.0167":[-8.571,42.234,-13.27],"2.0333":[-8.57,42.739,-13.156],"2.05":[-8.567,43.092,-13.121],"2.0667":[-8.551,43.283,-13.174],"2.0833":[-8.518,43.411,-13.305],"2.1":[-8.478,43.491,-13.474],"2.1167":[-8.44,43.531,-13.639],"2.1333":[-8.414,43.54,-13.76],"2.15":[-8.398,43.537,-13.842],"2.1833":[-8.384,43.528,-13.916],"2.2":[-8.362,43.494,-14.044],"2.2333":[-8.355,43.474,-14.099],"2.25":[-8.346,43.437,-14.196],"2.2833":[-8.345,43.422,-14.238],"2.3":[-8.347,43.392,-14.302],"2.3333":[-8.348,43.377,-14.321],"2.35":[-8.351,43.366,-14.333],"2.3667":[-8.353,43.357,-14.339],"2.3833":[-8.355,43.354,-14.34],"2.4":[-8.357,43.357,-14.339],"2.4167":[-8.359,43.366,-14.336],"2.4333":[-8.362,43.379,-14.331],"2.45":[-8.364,43.391,-14.326],"2.4667":[-8.366,43.404,-14.322],"2.4833":[-8.367,43.413,-14.318],"2.5":[-8.367,43.417,-14.317]}},"lefthand_1":{"rotation":{"0.0":[0,0,0],"0.35":[-27.5,0,0],"0.4":[-34.4746,-6.5702,5.7982],"0.5333":[49.1146,-16.3051,4.5353],"0.5833":[86.6146,-16.3051,4.5353],"1.3333":[0,0,0]},"position":{"0.0":[0,0,0],"0.5667":[0,5.1387,0],"1.3333":[0,0,0]},"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"0.3":[-27.5,0,0],"0.3833":[-27.5,0,0],"0.55":[47.5,0,0],"0.5667":[61.25,0,0],"0.5833":[70,0,0],"1.0833":[137.5,0,0],"1.2167":{"pre":[137.5,0,0],"post":[0,0,0]}},"position":[0,2,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.01,-0.003,0.007],"0.0167":[0.042,-0.013,0.03],"0.0333":[0.094,-0.028,0.061],"0.05":[0.159,-0.048,0.106],"0.0833":[0.236,-0.071,0.155],"0.1":[0.32,-0.095,0.209],"0.1167":[0.404,-0.12,0.263],"0.1333":[0.494,-0.146,0.321],"0.15":[0.572,-0.169,0.375],"0.1667":[0.649,-0.192,0.424],"0.1833":[0.714,-0.211,0.469],"0.2":[0.765,-0.226,0.501],"0.2167":[0.797,-0.236,0.523],"0.2333":[0.81,-0.24,0.532],"0.25":[0.771,-0.238,0.527],"0.2667":[0.668,-0.23,0.51],"0.2833":[0.52,-0.219,0.481],"0.3":[0.346,-0.205,0.43],"0.3167":[0.172,-0.188,0.357],"0.3333":[0.01,-0.17,0.255],"0.35":[-0.152,-0.149,0.123],"0.3667":[-0.348,-0.124,-0.031],"0.3833":[-0.552,-0.098,-0.207],"0.4":[-0.748,-0.071,-0.398],"0.4167":[-0.91,-0.044,-0.588],"0.4333":[-1.02,-0.019,-0.772],"0.45":[-1.063,0.004,-0.948],"0.4667":[-1.012,0.021,-1.146],"0.5":[-0.846,0.031,-1.337],"0.5167":[-0.557,0.041,-1.425],"0.5333":[0.023,0.05,0.431],"0.55":[0.706,0.058,2.294],"0.5667":[1.106,0.067,1.429],"0.5833":[0.675,0.075,-0.636],"0.6":[0.245,0.082,-1.994],"0.6167":[0.466,0.088,-1.081],"0.6333":[0.686,0.092,-0.162],"0.65":[0.655,0.098,-0.241],"0.6667":[0.584,0.106,-0.435],"0.6833":[0.496,0.113,-0.665],"0.7":[0.425,0.119,-0.859],"0.7167":[0.394,0.121,-0.938],"0.7333":[0.404,0.114,-0.93],"0.75":[0.437,0.097,-0.902],"0.7667":[0.486,0.071,-0.859],"0.7833":[0.545,0.038,-0.801],"0.8":[0.611,0.001,-0.744],"0.8167":[0.68,-0.036,-0.672],"0.8333":[0.745,-0.072,-0.608],"0.85":[0.804,-0.105,-0.541],"0.8667":[0.852,-0.131,-0.478],"0.8833":[0.885,-0.149,-0.43],"0.9167":[0.897,-0.155,-0.39],"0.9333":[0.897,-0.154,-0.358],"0.95":[0.896,-0.15,-0.326],"0.9667":[0.895,-0.144,-0.294],"0.9833":[0.895,-0.136,-0.27],"1.0":[0.893,-0.127,-0.238],"1.0167":[0.888,-0.103,-0.181],"1.05":[0.885,-0.091,-0.157],"1.0667":[0.88,-0.077,-0.133],"1.0833":[0.875,-0.064,-0.109],"1.1":[0.868,-0.05,-0.085],"1.1167":[0.86,-0.036,-0.069],"1.1333":[0.855,-0.024,-0.047],"1.15":[0.837,-0.012,-0.029],"1.1667":[0.829,-0.001,-0.012],"1.1833":[0.812,0.009,-0.003],"1.2":[0.795,0.017,0.005],"1.2167":[0.778,0.023,0.014],"1.2333":[0.752,0.027,0.014],"1.25":[0.735,0.028,0.022],"1.2667":[0.667,0.024,-0.15],"1.2833":[0.54,0.015,-0.511],"1.3":[0.387,0.006,-0.872],"1.3333":[0.259,0.002,-1.044],"1.35":[0.157,0.005,-1.027],"1.3667":[0.038,0.014,-0.993],"1.3833":[-0.089,0.028,-0.941],"1.4":[-0.217,0.047,-0.864],"1.4167":[-0.344,0.067,-0.775],"1.4333":[-0.471,0.091,-0.684],"1.45":[-0.598,0.115,-0.575],"1.4667":[-0.713,0.139,-0.474],"1.4833":[-0.816,0.162,-0.365],"1.5":[-0.913,0.183,-0.256],"1.5167":[-0.992,0.201,-0.165],"1.5333":[-1.046,0.216,-0.074],"1.55":[-1.082,0.225,0.008],"1.5667":[-1.1,0.228,0.063],"1.5833":[-1.1,0.226,0.118],"1.6":[-1.094,0.22,0.164],"1.6167":[-1.094,0.212,0.209],"1.6333":[-1.094,0.201,0.255],"1.65":[-1.088,0.189,0.301],"1.6667":[-1.082,0.174,0.347],"1.6833":[-1.074,0.157,0.381],"1.7":[-1.06,0.14,0.419],"1.7167":[-1.046,0.123,0.45],"1.75":[-1.031,0.106,0.481],"1.7667":[-1.01,0.088,0.512],"1.7833":[-0.989,0.072,0.535],"1.8":[-0.96,0.058,0.558],"1.8167":[-0.932,0.044,0.574],"1.8333":[-0.896,0.033,0.589],"1.85":[-0.853,0.025,0.597],"1.8667":[-0.803,0.019,0.605],"1.8833":[-0.753,0.018,0.605],"1.9":[-0.667,0.033,0.52],"1.9167":[-0.532,0.07,0.297],"1.9333":[-0.368,0.123,-0.01],"1.95":[-0.19,0.18,-0.34],"1.9667":[-0.013,0.232,-0.64],"1.9833":[0.144,0.271,-0.862],"2.0":[0.267,0.286,-0.951],"2.0167":[0.344,0.263,-0.795],"2.0333":[0.386,0.211,-0.436],"2.05":[0.402,0.151,-0.046],"2.0667":[0.404,0.102,0.212],"2.0833":[0.397,0.065,0.332],"2.1":[0.378,0.027,0.415],"2.1167":[0.349,-0.01,0.475],"2.1333":[0.314,-0.045,0.517],"2.1667":[0.275,-0.074,0.535],"2.1833":[0.234,-0.092,0.547],"2.2":[0.193,-0.099,0.547],"2.2167":[0.144,-0.099,0.499],"2.2333":[0.08,-0.095,0.385],"2.25":[0.016,-0.093,0.256],"2.2667":[-0.036,-0.084,0.146],"2.2833":[-0.06,-0.075,0.091],"2.3":[-0.066,-0.053,0.118],"2.3167":[-0.069,-0.025,0.164],"2.3333":[-0.069,0.002,0.183],"2.35":[-0.063,0.015,0.173],"2.3667":[-0.051,0.029,0.146],"2.3833":[-0.035,0.038,0.118],"2.4":[-0.023,0.043,0.1],"2.4167":[-0.017,0.038,0.072],"2.4333":[-0.011,0.033,0.054],"2.45":[-0.008,0.02,0.035],"2.4667":[-0.002,0.011,0.017],"2.4833":[-0.002,0.002,0.008],"2.5":[0.001,0.002,-0.002]}}},"sound_effects":{"0.0":{"effect":"melee.thieve_sea.melee_3"}}},"inspect":{"loop":true,"animation_length":12.6667,"override_previous_animation":true,"bones":{"lefthand":{"rotation":{"0.0":[123.86,17.666,120.819],"0.0333":[121.414,12.705,120.395],"0.0667":[118.911,7.53,120.35],"0.1":[116.392,2.398,120.726],"0.1333":[113.92,-2.438,121.498],"0.1667":[111.555,-6.738,122.584],"0.2":[109.427,-10.296,123.849],"0.2333":[107.705,-12.928,125.112],"0.2667":[106.618,-14.487,126.177],"0.3":[105.922,-15.435,127.091],"0.3333":[105.214,-16.342,128.031],"0.3667":[104.503,-17.21,128.991],"0.4":[103.783,-18.041,129.972],"0.4333":[103.059,-18.829,130.97],"0.4667":[102.33,-19.586,131.987],"0.5":[101.598,-20.302,133.015],"0.5333":[100.862,-20.977,134.06],"0.5667":[100.125,-21.621,135.115],"0.6":[99.389,-22.229,136.179],"0.6333":[98.653,-22.805,137.252],"0.6667":[97.917,-23.349,138.334],"0.7":[97.187,-23.859,139.424],"0.7333":[96.46,-24.342,140.511],"0.7667":[95.736,-24.794,141.605],"0.8":[95.02,-25.215,142.698],"0.8333":[94.306,-25.609,143.788],"0.8667":[93.605,-25.976,144.878],"0.9":[92.909,-26.319,145.965],"0.9333":[92.221,-26.639,147.048],"0.9667":[91.545,-26.931,148.121],"1.0":[90.878,-27.211,149.194],"1.0333":[90.22,-27.461,150.251],"1.0667":[89.575,-27.694,151.303],"1.1":[88.943,-27.913,152.344],"1.1333":[88.324,-28.108,153.371],"1.1667":[87.714,-28.29,154.389],"1.2":[87.118,-28.454,155.392],"1.2333":[86.536,-28.606,156.383],"1.2667":[85.966,-28.741,157.357],"1.3":[85.41,-28.864,158.315],"1.3333":[84.864,-28.978,159.257],"1.3667":[84.334,-29.077,160.179],"1.4":[83.815,-29.167,161.087],"1.4333":[83.311,-29.25,161.975],"1.4667":[82.816,-29.321,162.849],"1.5":[82.335,-29.385,163.699],"1.5333":[81.869,-29.444,164.527],"1.5667":[81.41,-29.495,165.339],"1.6":[80.965,-29.536,166.132],"1.6333":[80.53,-29.575,166.9],"1.6667":[80.107,-29.608,167.645],"1.7":[79.691,-29.636,168.37],"1.7333":[79.287,-29.658,169.074],"1.7667":[78.891,-29.678,169.753],"1.8":[78.505,-29.693,170.411],"1.8333":[78.124,-29.705,171.044],"1.8667":[77.758,-29.716,171.654],"1.9":[77.395,-29.72,172.241],"1.9333":[77.039,-29.726,172.801],"1.9667":[76.69,-29.729,173.338],"2.0":[76.346,-29.729,173.849],"2.0333":[76.008,-29.727,174.336],"2.0667":[75.672,-29.725,174.811],"2.1":[75.337,-29.725,175.29],"2.1333":[75,-29.725,175.772],"2.1667":[74.667,-29.727,176.254],"2.2":[74.334,-29.727,176.737],"2.2333":[74.004,-29.728,177.218],"2.2667":[73.677,-29.729,177.699],"2.3":[73.353,-29.73,178.175],"2.3333":[73.033,-29.731,178.65],"2.3667":[72.718,-29.732,179.119],"2.4":[72.408,-29.731,179.586],"2.4333":[72.104,-29.731,180.044],"2.4667":[71.806,-29.731,180.495],"2.5":[71.514,-29.729,180.938],"2.5333":[71.231,-29.727,181.371],"2.5667":[70.956,-29.725,181.795],"2.6":[70.689,-29.723,182.205],"2.6333":[70.431,-29.72,182.605],"2.6667":[70.183,-29.716,182.993],"2.7":[69.945,-29.714,183.366],"2.7333":[69.719,-29.712,183.722],"2.7667":[69.504,-29.71,184.063],"2.8":[69.303,-29.71,184.385],"2.8333":[69.112,-29.709,184.692],"2.8667":[68.93,-29.708,184.981],"2.9":[68.768,-29.705,185.245],"2.9333":[68.621,-29.709,185.493],"2.9667":[68.487,-29.711,185.713],"3.0":[68.367,-29.714,185.917],"3.0333":[68.259,-29.717,186.098],"3.0667":[68.174,-29.724,186.243],"3.1":[68.1,-29.731,186.373],"3.1333":[68.049,-29.743,186.472],"3.1667":[68.009,-29.759,186.547],"3.2":[67.999,-29.768,186.585],"3.2333":[68,-29.784,186.6],"3.2667":[68.021,-29.8,186.581],"3.3":[68.06,-29.822,186.533],"3.3333":[68.12,-29.847,186.458],"3.3667":[68.204,-29.869,186.34],"3.4":[68.313,-29.893,186.187],"3.4333":[68.44,-29.917,186],"3.4667":[68.593,-29.944,185.777],"3.5":[68.766,-29.974,185.516],"3.5333":[68.967,-29.998,185.215],"3.5667":[69.195,-30.022,184.874],"3.6":[69.445,-30.05,184.495],"3.6333":[69.724,-30.071,184.07],"3.6667":[70.028,-30.094,183.604],"3.7":[70.362,-30.111,183.093],"3.7333":[70.724,-30.125,182.538],"3.7667":[71.112,-30.136,181.939],"3.8":[71.533,-30.136,181.289],"3.8333":[71.985,-30.13,180.594],"3.8667":[72.463,-30.113,179.849],"3.9":[72.975,-30.088,179.057],"3.9333":[73.518,-30.05,178.213],"3.9667":[74.096,-29.995,177.317],"4.0":[74.702,-29.925,176.375],"4.0333":[75.338,-29.833,175.383],"4.0667":[76.008,-29.723,174.334],"4.1":[79.003,-29.219,169.987],"4.1333":[85.374,-27.293,160.664],"4.1667":[92.873,-23.059,149.051],"4.2":[99.282,-16.488,137.709],"4.2333":[103.263,-8.682,128.262],"4.2667":[104.551,-1.347,121.52],"4.3":[103.658,3.766,118.169],"4.3333":[102.008,4.008,120.132],"4.3667":[96.754,-6.162,132.944],"4.4":[85.866,-19.229,153.271],"4.4333":[73.733,-27.603,173.477],"4.4667":[71.138,-30.731,181.057],"4.5":[77.927,-32.558,178.738],"4.5333":[90.177,-32.905,170.919],"4.5667":[103.445,-31.328,161.91],"4.6":[113.2,-29.616,155.803],"4.6333":[118.209,-29.17,152.825],"4.6667":[120.843,-29,150.783],"4.7":[121.661,-29.553,149.933],"4.7333":[121.126,-31.211,150.344],"4.7667":[118.962,-32.939,157.591],"4.8":[116.136,-34.488,164.79],"4.8333":[114.031,-34.753,170.36],"4.8667":[112.632,-34.02,174.08],"4.9":[111.49,-32.733,176.935],"4.9333":[111.273,-32.786,176.925],"4.9667":[112.479,-33.963,173.57],"5.0":[114.107,-34.143,169.997],"5.0333":[115.83,-34.087,167.012],"5.0667":[117.427,-34.184,164.727],"5.1":[118.701,-34.407,163.115],"5.1333":[119.546,-34.695,162.003],"5.1667":[119.976,-34.946,161.274],"5.2":[120.199,-35.155,160.728],"5.2333":[120.271,-35.474,160.325],"5.2667":[120.269,-36.05,159.991],"5.3":[120.276,-37.039,159.671],"5.3333":[113.127,-37.995,166.877],"5.3667":[104.163,-38.61,175.809],"5.4":[97.344,-37.886,183.393],"5.4333":[95.72,-36.133,187.217],"5.4667":[97.892,-34.077,188.179],"5.5":[101.535,-32.193,187.847],"5.5333":[100.451,-32.032,190.847],"5.5667":[99.963,-31.882,193.747],"5.6":[99.784,-31.725,196.64],"5.6333":[99.646,-31.483,199.605],"5.6667":[98.113,-34.221,201.475],"5.7":[95.138,-39.619,201.66],"5.7333":[90.915,-44.456,202.825],"5.7667":[83.783,-48.123,207.094],"5.8":[69.638,-50.854,222.15],"5.8333":[54.876,-49.694,240.389],"5.8667":[52.4,-47.265,243.299],"5.9":[58.524,-44.076,234.394],"5.9333":[65.31,-39.708,224.339],"5.9667":[68.75,-36.091,219.717],"6.0":[70.755,-33.487,217.799],"6.0333":[72.053,-31.786,217.081],"6.0667":[72.721,-30.976,216.962],"6.1":[72.568,-32.15,218.729],"6.1333":[68.312,-37.817,231.343],"6.1667":[58.672,-38.675,248.536],"6.2":[53.468,-36.458,256.976],"6.2333":[53.103,-36.136,258.699],"6.2667":[52.983,-36.153,259.507],"6.3":[53.051,-36.617,259.834],"6.3333":[53.327,-37.566,259.867],"6.3667":[54.129,-39.029,258.817],"6.4":[55.388,-40.816,256.872],"6.4333":[56.899,-42.753,254.554],"6.4667":[58.449,-45.005,252.499],"6.5":[60.336,-48.298,250.312],"6.5333":[62.684,-51.264,247.57],"6.5667":[65.1,-52.223,244.469],"6.6":[67.112,-50.755,241.456],"6.6333":[68.579,-47.907,238.884],"6.6667":[69.395,-44.276,237.126],"6.7":[69.711,-40.481,236.195],"6.7333":[69.751,-37.116,235.886],"6.7667":[69.705,-34.721,235.9],"6.8":[69.672,-33.811,235.956],"6.8333":[70.396,-34.693,236.721],"6.8667":[72.07,-36.957,239.198],"6.9":[73.663,-39.844,244.004],"6.9333":[74.064,-42.343,251.628],"6.9667":[72.824,-43.416,261.604],"7.0":[70.685,-42.639,272.125],"7.0333":[68.793,-40.803,281.037],"7.0667":[67.573,-39.707,287.019],"7.1":[67.064,-41.159,289.583],"7.1333":[68.28,-44.807,289.821],"7.1667":[71.387,-49.831,287.644],"7.2":[76.701,-55.253,282.544],"7.2333":[84.338,-59.943,274.463],"7.2667":[93.016,-63.04,265.008],"7.3":[99.517,-64.425,257.882],"7.3333":[101.134,-64.706,256.182],"7.3667":[101.815,-64.834,255.518],"7.4":[102.416,-64.942,254.931],"7.4333":[102.942,-65.033,254.414],"7.4667":[103.393,-65.109,253.97],"7.5":[103.782,-65.174,253.591],"7.5333":[104.104,-65.225,253.273],"7.5667":[104.371,-65.269,253.011],"7.6":[104.584,-65.302,252.801],"7.6333":[104.753,-65.327,252.634],"7.6667":[104.879,-65.346,252.511],"7.7":[104.967,-65.36,252.424],"7.7333":[105.03,-65.37,252.364],"7.7667":[105.065,-65.374,252.326],"7.8":[105.083,-65.376,252.308],"7.8333":[105.09,-65.378,252.302],"7.8667":[105.093,-65.379,252.3],"7.9":[93.851,-63.003,263.943],"7.9333":[76.934,-55.245,280.622],"7.9667":[66.963,-46.624,289.077],"8.0":[60.419,-39.908,294.083],"8.0333":[55.481,-34.272,297.335],"8.0667":[53.229,-31.748,298.171],"8.1":[52.284,-30.886,298.574],"8.1333":[51.86,-30.751,299.06],"8.1667":[51.485,-30.792,299.704],"8.2":[51.044,-30.818,300.461],"8.2333":[50.709,-30.955,301.202],"8.2667":[50.454,-31.138,301.864],"8.3":[50.247,-31.288,302.385],"8.3333":[50.082,-31.346,302.694],"8.3667":[49.973,-31.276,302.722],"8.4":[49.98,-31.074,302.386],"8.4333":[50.088,-30.707,301.632],"8.4667":[50.295,-30.139,300.394],"8.5":[50.571,-29.333,298.621],"8.5333":[50.748,-28.651,294.847],"8.5667":[50.938,-28.659,288.262],"8.6":[51.786,-29.546,279.559],"8.6333":[54.036,-31.221,269.372],"8.6667":[58.137,-33.332,258.417],"8.7":[63.925,-35.608,247.714],"8.7333":[70.579,-38.361,238.525],"8.7667":[76.928,-42.113,231.888],"8.8":[82.066,-46.809,227.554],"8.8333":[85.243,-52.218,225.346],"8.8667":[85.731,-57.81,225.648],"8.9":[82.896,-62.884,229.144],"8.9333":[76.823,-66.674,235.993],"8.9667":[69.477,-68.631,244.422],"9.0":[68.022,-68.637,245.756],"9.0333":[66.617,-68.182,247.037],"9.0667":[65.357,-67.35,248.173],"9.1":[64.291,-66.221,249.121],"9.1333":[63.461,-64.864,249.837],"9.1667":[62.842,-63.359,250.344],"9.2":[62.412,-61.774,250.654],"9.2333":[62.161,-60.179,250.779],"9.2667":[62.046,-58.648,250.753],"9.3":[62.067,-57.245,250.581],"9.3333":[62.218,-56.041,250.277],"9.3667":[62.496,-55.1,249.846],"9.4":[62.897,-54.489,249.303],"9.4333":[63.453,-54.281,248.626],"9.4667":[72.077,-54.325,238.087],"9.5":[82.276,-55.046,226.212],"9.5333":[94.307,-55.262,213.125],"9.5667":[107.002,-53.953,200.146],"9.6":[118.243,-50.722,189.27],"9.6333":[126.43,-45.844,181.709],"9.6667":[131.009,-39.82,177.363],"9.7":[132.545,-39.55,175.587],"9.7333":[133.978,-39.202,173.902],"9.7667":[135.299,-38.783,172.307],"9.8":[136.527,-38.313,170.796],"9.8333":[137.031,-38.459,170.51],"9.8667":[137.495,-38.598,170.234],"9.9":[137.915,-38.737,169.973],"9.9333":[138.287,-38.867,169.728],"9.9667":[138.628,-38.986,169.49],"10.0":[138.903,-39.088,169.286],"10.0333":[139.137,-39.18,169.092],"10.0667":[139.318,-39.243,168.924],"10.1":[139.45,-39.29,168.781],"10.1333":[139.521,-39.304,168.666],"10.1667":[139.53,-39.296,168.577],"10.2":[139.493,-39.252,168.518],"10.2333":[139.388,-39.168,168.496],"10.2667":[139.222,-39.045,168.502],"10.3":[138.552,-38.686,168.725],"10.3333":[137.209,-37.99,169.204],"10.3667":[135.586,-37.088,169.766],"10.4":[134.049,-36.136,170.249],"10.4333":[132.944,-35.325,170.522],"10.4667":[132.577,-34.838,170.498],"10.5":[133.276,-34.864,170.066],"10.5333":[132.791,-36.298,170.306],"10.5667":[129.281,-39.194,172.381],"10.6":[123.599,-42.352,176.292],"10.6333":[116.95,-44.7,181.461],"10.6667":[111.175,-45.686,186.393],"10.7":[110.992,-39.631,193.439],"10.7333":[110.745,-27.491,194.759],"10.7667":[96.095,-1.24,171.251],"10.8":[69.798,-13.736,135.788],"10.8333":[67.274,-23.618,128.751],"10.8667":[67.551,-26.877,127.009],"10.9":[68.013,-29.544,125.78],"10.9333":[68.557,-31.634,125.025],"10.9667":[69.116,-33.181,124.713],"11.0":[69.645,-34.238,124.806],"11.0333":[70.13,-34.86,125.272],"11.0667":[70.578,-35.112,126.05],"11.1":[71.014,-35.059,127.09],"11.1333":[71.466,-34.768,128.337],"11.1667":[71.973,-34.303,129.728],"11.2":[72.561,-33.737,131.205],"11.2333":[73.265,-33.126,132.71],"11.2667":[74.109,-32.532,134.182],"11.3":[75.112,-32.008,135.569],"11.3333":[76.287,-31.597,136.798],"11.3667":[77.648,-31.338,137.812],"11.4":[79.21,-31.255,138.543],"11.4333":[80.987,-31.354,138.92],"11.4667":[83,-31.647,138.852],"11.5":[85.282,-32.113,138.257],"11.5333":[87.968,-32.752,137.023],"11.5667":[91.657,-33.589,134.962],"11.6":[96.346,-34.399,132.06],"11.6333":[101.861,-34.903,128.386],"11.6667":[107.932,-34.846,124.133],"11.7":[114.191,-34.037,119.598],"11.7333":[120.23,-32.385,115.141],"11.7667":[125.683,-29.921,111.089],"11.8":[130.304,-26.764,107.682],"11.8333":[133.982,-23.091,105.024],"11.8667":[136.722,-19.09,103.115],"11.9":[138.6,-14.941,101.881],"11.9333":[139.722,-10.804,101.212],"11.9667":[139.675,-6.386,101.14],"12.0":[136.402,-0.069,101.779],"12.0333":[131.479,6.236,101.83],"12.0667":[126.039,11,101.142],"12.1":[119.556,14.389,101.235],"12.1333":[109.65,16.84,104.04],"12.1667":[106.52,16.79,105.538],"12.2":[109.18,14.48,105.775],"12.2333":[112.492,12.907,105.181],"12.2667":[114.339,13.406,103.104],"12.3":[115.852,14.797,101.06],"12.3333":[117.351,15.686,102.79],"12.3667":[118.894,16.003,108.4],"12.4":[120.334,16.472,113.581],"12.4333":[121.779,17.395,116.804],"12.4667":[123.241,18.458,119.498],"12.5":[124.54,19.502,121.594],"12.5333":[125.31,20.433,122.575],"12.5667":[125.166,21.416,121.401],"12.6":[125.31,21.961,120.991],"12.6333":[125.718,22.093,121.221],"12.6667":[126.156,22.169,121.514]},"position":{"0.0":[13.146,25.308,-10.866],"0.0333":[13.184,23.866,-10.477],"0.0667":[13.211,22.424,-9.908],"0.1":[13.218,21.082,-9.186],"0.1333":[13.208,19.908,-8.372],"0.1667":[13.182,18.953,-7.547],"0.2":[13.148,18.237,-6.802],"0.2333":[13.119,17.763,-6.228],"0.2667":[13.101,17.528,-5.911],"0.3":[13.097,17.422,-5.752],"0.3333":[13.09,17.323,-5.599],"0.3667":[13.084,17.233,-5.455],"0.4":[13.079,17.151,-5.317],"0.4333":[13.076,17.077,-5.187],"0.4667":[13.071,17.01,-5.064],"0.5":[13.068,16.948,-4.949],"0.5333":[13.065,16.895,-4.84],"0.5667":[13.063,16.844,-4.739],"0.6":[13.06,16.801,-4.643],"0.6333":[13.059,16.761,-4.556],"0.6667":[13.059,16.727,-4.475],"0.7":[13.057,16.696,-4.399],"0.7333":[13.059,16.67,-4.331],"0.7667":[13.059,16.646,-4.267],"0.8":[13.06,16.628,-4.209],"0.8333":[13.062,16.609,-4.158],"0.8667":[13.064,16.597,-4.111],"0.9":[13.065,16.585,-4.069],"0.9333":[13.069,16.577,-4.032],"0.9667":[13.071,16.572,-3.999],"1.0":[13.074,16.569,-3.971],"1.0333":[13.08,16.569,-3.947],"1.0667":[13.083,16.567,-3.926],"1.1":[13.088,16.568,-3.909],"1.1333":[13.092,16.572,-3.896],"1.1667":[13.099,16.577,-3.886],"1.2":[13.104,16.583,-3.878],"1.2333":[13.109,16.59,-3.872],"1.2667":[13.116,16.599,-3.87],"1.3":[13.12,16.609,-3.87],"1.3333":[13.124,16.616,-3.87],"1.3667":[13.131,16.627,-3.873],"1.4":[13.136,16.64,-3.877],"1.4333":[13.142,16.652,-3.882],"1.4667":[13.149,16.66,-3.889],"1.5":[13.156,16.677,-3.894],"1.5333":[13.161,16.688,-3.901],"1.5667":[13.163,16.698,-3.909],"1.6":[13.169,16.709,-3.916],"1.6333":[13.172,16.718,-3.923],"1.6667":[13.18,16.729,-3.928],"1.7":[13.185,16.739,-3.933],"1.7333":[13.189,16.749,-3.937],"1.7667":[13.194,16.756,-3.941],"1.8":[13.197,16.766,-3.941],"1.8333":[13.201,16.768,-3.941],"1.8667":[13.203,16.776,-3.939],"1.9":[13.206,16.779,-3.932],"1.9333":[13.208,16.781,-3.925],"1.9667":[13.209,16.779,-3.915],"2.0":[13.212,16.778,-3.903],"2.0333":[13.213,16.777,-3.887],"2.0667":[13.214,16.767,-3.869],"2.1":[13.215,16.764,-3.851],"2.1333":[13.218,16.755,-3.833],"2.1667":[13.22,16.747,-3.818],"2.2":[13.222,16.741,-3.8],"2.2333":[13.225,16.732,-3.785],"2.2667":[13.229,16.72,-3.769],"2.3":[13.233,16.709,-3.753],"2.3333":[13.237,16.698,-3.738],"2.3667":[13.24,16.686,-3.724],"2.4":[13.244,16.674,-3.709],"2.4333":[13.251,16.662,-3.696],"2.4667":[13.255,16.649,-3.682],"2.5":[13.261,16.637,-3.67],"2.5333":[13.264,16.623,-3.657],"2.5667":[13.27,16.61,-3.644],"2.6":[13.278,16.596,-3.633],"2.6333":[13.281,16.582,-3.622],"2.6667":[13.287,16.569,-3.612],"2.7":[13.291,16.557,-3.602],"2.7333":[13.298,16.541,-3.592],"2.7667":[13.303,16.53,-3.584],"2.8":[13.309,16.515,-3.576],"2.8333":[13.315,16.504,-3.57],"2.8667":[13.322,16.491,-3.562],"2.9":[13.326,16.479,-3.555],"2.9333":[13.332,16.467,-3.55],"2.9667":[13.336,16.456,-3.544],"3.0":[13.34,16.447,-3.54],"3.0333":[13.343,16.436,-3.536],"3.0667":[13.347,16.429,-3.534],"3.1":[13.35,16.42,-3.532],"3.1333":[13.353,16.412,-3.532],"3.1667":[13.359,16.406,-3.529],"3.2":[13.362,16.398,-3.533],"3.2333":[13.365,16.395,-3.534],"3.2667":[13.367,16.391,-3.534],"3.3":[13.366,16.39,-3.538],"3.3333":[13.367,16.386,-3.542],"3.3667":[13.368,16.387,-3.548],"3.4":[13.367,16.388,-3.552],"3.4333":[13.366,16.391,-3.56],"3.4667":[13.367,16.395,-3.568],"3.5":[13.366,16.401,-3.575],"3.5333":[13.362,16.407,-3.587],"3.5667":[13.359,16.415,-3.597],"3.6":[13.354,16.425,-3.61],"3.6333":[13.351,16.437,-3.623],"3.6667":[13.344,16.451,-3.635],"3.7":[13.34,16.466,-3.652],"3.7333":[13.333,16.483,-3.669],"3.7667":[13.323,16.503,-3.683],"3.8":[13.315,16.524,-3.704],"3.8333":[13.306,16.547,-3.724],"3.8667":[13.295,16.573,-3.742],"3.9":[13.283,16.601,-3.764],"3.9333":[13.272,16.631,-3.786],"3.9667":[13.258,16.664,-3.811],"4.0":[13.244,16.696,-3.835],"4.0333":[13.229,16.734,-3.86],"4.0667":[13.212,16.775,-3.886],"4.1":[13.153,16.856,-3.907],"4.1333":[13.025,17.027,-3.934],"4.1667":[12.854,17.291,-3.993],"4.2":[12.661,17.648,-4.104],"4.2333":[12.473,18.103,-4.288],"4.2667":[12.306,18.667,-4.56],"4.3":[12.181,19.354,-4.925],"4.3333":[12.046,20.595,-5.405],"4.3667":[11.964,22.714,-5.816],"4.4":[12.098,24.894,-6.252],"4.4333":[12.287,26.582,-6.785],"4.4667":[12.157,27.702,-7.255],"4.5":[11.743,28.377,-7.724],"4.5333":[11.207,28.775,-8.226],"4.5667":[10.688,29.043,-8.729],"4.6":[10.309,29.298,-9.133],"4.6333":[10.119,29.516,-9.35],"4.6667":[10.041,29.634,-9.432],"4.7":[10.022,29.642,-9.536],"4.7333":[9.986,29.598,-9.786],"4.7667":[9.906,29.361,-9.89],"4.8":[9.779,29.175,-9.986],"4.8333":[9.635,29.06,-10.068],"4.8667":[9.462,29.059,-10.137],"4.9":[9.286,29.111,-10.186],"4.9333":[9.203,29.212,-10.288],"4.9667":[9.221,29.357,-10.383],"5.0":[9.261,29.515,-10.332],"5.0333":[9.337,29.593,-10.238],"5.0667":[9.425,29.643,-10.167],"5.1":[9.508,29.679,-10.104],"5.1333":[9.577,29.705,-10.037],"5.1667":[9.638,29.73,-9.951],"5.2":[9.69,29.756,-9.851],"5.2333":[9.734,29.784,-9.764],"5.2667":[9.774,29.81,-9.717],"5.3":[9.812,29.83,-9.732],"5.3333":[9.745,29.905,-9.682],"5.3667":[9.677,29.932,-9.701],"5.4":[9.592,29.86,-9.776],"5.4333":[9.466,29.668,-9.877],"5.4667":[9.304,29.429,-9.985],"5.5":[9.134,29.256,-10.1],"5.5333":[9.035,29.218,-10.205],"5.5667":[8.948,29.135,-10.286],"5.6":[8.865,29.021,-10.348],"5.6333":[8.791,28.891,-10.39],"5.6667":[8.829,28.665,-10.347],"5.7":[8.987,28.372,-10.231],"5.7333":[9.113,28.141,-10.095],"5.7667":[9.151,27.92,-9.914],"5.8":[9.011,27.593,-9.753],"5.8333":[8.78,27.277,-9.581],"5.8667":[8.751,27.382,-9.291],"5.9":[8.886,27.803,-8.855],"5.9333":[9.035,28.263,-8.41],"5.9667":[9.177,28.543,-8.094],"6.0":[9.389,28.714,-7.891],"6.0333":[9.742,28.83,-7.773],"6.0667":[10.277,28.923,-7.722],"6.1":[11.36,28.856,-7.74],"6.1333":[13.859,28.053,-7.972],"6.1667":[15.876,27.487,-8.107],"6.2":[16.607,27.295,-8.021],"6.2333":[16.181,26.959,-8.059],"6.2667":[15.428,26.71,-8.111],"6.3":[14.816,26.505,-8.173],"6.3333":[14.725,26.333,-8.232],"6.3667":[14.887,26.288,-8.26],"6.4":[15.124,26.352,-8.254],"6.4333":[15.321,26.455,-8.228],"6.4667":[15.38,26.508,-8.224],"6.5":[15.389,26.547,-8.292],"6.5333":[15.393,26.627,-8.29],"6.5667":[15.409,26.75,-8.065],"6.6":[15.483,26.884,-7.574],"6.6333":[15.623,27.001,-6.94],"6.6667":[15.791,27.073,-6.263],"6.7":[15.973,27.089,-5.627],"6.7333":[16.167,27.052,-5.096],"6.7667":[16.382,26.986,-4.719],"6.8":[16.621,26.919,-4.536],"6.8333":[16.858,26.549,-4.487],"6.8667":[17.031,25.619,-4.512],"6.9":[17.042,24.226,-4.658],"6.9333":[16.767,22.559,-4.907],"6.9667":[16.153,20.901,-5.132],"7.0":[15.314,19.531,-5.2],"7.0333":[14.489,18.58,-5.117],"7.0667":[13.913,18.002,-5.072],"7.1":[13.692,17.674,-5.282],"7.1333":[13.518,17.46,-5.593],"7.1667":[13.416,17.368,-5.952],"7.2":[13.454,17.413,-6.303],"7.2333":[13.629,17.572,-6.57],"7.2667":[13.864,17.781,-6.716],"7.3":[14.046,17.942,-6.765],"7.3333":[14.094,17.975,-6.776],"7.3667":[14.115,17.986,-6.785],"7.4":[14.135,17.995,-6.793],"7.4333":[14.151,18.003,-6.8],"7.4667":[14.163,18.009,-6.805],"7.5":[14.173,18.015,-6.81],"7.5333":[14.181,18.021,-6.814],"7.5667":[14.188,18.025,-6.818],"7.6":[14.192,18.029,-6.82],"7.6333":[14.196,18.031,-6.822],"7.6667":[14.2,18.033,-6.823],"7.7":[14.203,18.035,-6.825],"7.7333":[14.206,18.035,-6.825],"7.7667":[14.21,18.035,-6.826],"7.8":[14.216,18.038,-6.826],"7.8333":[14.221,18.037,-6.826],"7.8667":[14.23,18.037,-6.826],"7.9":[14.097,17.955,-6.672],"7.9333":[14.05,17.951,-6.253],"7.9667":[14.296,18.124,-5.912],"8.0":[14.546,18.255,-5.889],"8.0333":[14.794,18.373,-6.005],"8.0667":[14.991,18.481,-6.108],"8.1":[15.067,18.551,-6.165],"8.1333":[15.068,18.585,-6.196],"8.1667":[15.054,18.611,-6.228],"8.2":[15.045,18.626,-6.267],"8.2333":[15.028,18.633,-6.3],"8.2667":[15.006,18.636,-6.323],"8.3":[14.986,18.64,-6.342],"8.3333":[14.975,18.645,-6.36],"8.3667":[14.975,18.651,-6.368],"8.4":[14.987,18.657,-6.362],"8.4333":[15.002,18.669,-6.347],"8.4667":[15.032,18.685,-6.324],"8.5":[15.083,18.704,-6.287],"8.5333":[15.052,18.725,-6.339],"8.5667":[14.909,18.749,-6.587],"8.6":[14.674,18.848,-7.016],"8.6333":[14.368,19.092,-7.577],"8.6667":[14.035,19.539,-8.203],"8.7":[13.731,20.233,-8.805],"8.7333":[13.478,21.181,-9.294],"8.7667":[13.252,22.352,-9.601],"8.8":[13.006,23.694,-9.679],"8.8333":[12.674,25.1,-9.556],"8.8667":[12.234,26.435,-9.311],"8.9":[11.722,27.566,-9.039],"8.9333":[11.246,28.375,-8.829],"8.9667":[10.933,28.781,-8.742],"9.0":[10.823,28.969,-8.684],"9.0333":[10.736,29.117,-8.629],"9.0667":[10.67,29.228,-8.578],"9.1":[10.618,29.307,-8.533],"9.1333":[10.582,29.357,-8.494],"9.1667":[10.558,29.385,-8.455],"9.2":[10.543,29.394,-8.424],"9.2333":[10.535,29.392,-8.39],"9.2667":[10.531,29.381,-8.362],"9.3":[10.525,29.37,-8.334],"9.3333":[10.518,29.358,-8.308],"9.3667":[10.505,29.354,-8.286],"9.4":[10.482,29.361,-8.266],"9.4333":[10.444,29.382,-8.253],"9.4667":[10.467,29.488,-8.242],"9.5":[10.453,29.59,-8.351],"9.5333":[10.401,29.674,-8.533],"9.5667":[10.324,29.731,-8.742],"9.6":[10.234,29.757,-8.933],"9.6333":[10.153,29.76,-9.076],"9.6667":[10.101,29.751,-9.132],"9.7":[10.086,29.748,-9.16],"9.7333":[10.073,29.746,-9.182],"9.7667":[10.064,29.745,-9.197],"9.8":[10.056,29.744,-9.207],"9.8333":[10.042,29.74,-9.237],"9.8667":[10.029,29.738,-9.262],"9.9":[10.017,29.733,-9.288],"9.9333":[10.01,29.73,-9.309],"9.9667":[10.001,29.726,-9.327],"10.0":[9.995,29.722,-9.342],"10.0333":[9.991,29.716,-9.356],"10.0667":[9.986,29.71,-9.367],"10.1":[9.984,29.701,-9.374],"10.1333":[9.981,29.693,-9.379],"10.1667":[9.977,29.681,-9.38],"10.2":[9.972,29.669,-9.381],"10.2333":[9.967,29.656,-9.375],"10.2667":[9.962,29.636,-9.369],"10.3":[9.977,29.571,-9.341],"10.3333":[10.029,29.43,-9.278],"10.3667":[10.113,29.245,-9.197],"10.4":[10.216,29.054,-9.115],"10.4333":[10.34,28.887,-9.042],"10.4667":[10.473,28.776,-8.997],"10.5":[10.62,28.754,-8.984],"10.5333":[10.768,28.867,-9.16],"10.5667":[10.919,29.05,-9.542],"10.6":[11.095,29.164,-9.957],"10.6333":[11.333,29.116,-10.256],"10.6667":[11.643,28.882,-10.353],"10.7":[12.856,27.997,-8.858],"10.7333":[13.961,26.196,-7.887],"10.7667":[15.896,20.232,-7.2],"10.8":[16.82,14.174,-2.866],"10.8333":[16.737,13.1,-1.187],"10.8667":[16.576,12.888,-0.609],"10.9":[16.399,12.765,-0.105],"10.9333":[16.21,12.711,0.321],"10.9667":[16.007,12.722,0.668],"11.0":[15.798,12.781,0.944],"11.0333":[15.581,12.883,1.147],"11.0667":[15.362,13.02,1.283],"11.1":[15.143,13.184,1.361],"11.1333":[14.926,13.37,1.383],"11.1667":[14.712,13.572,1.357],"11.2":[14.506,13.785,1.291],"11.2333":[14.307,14.001,1.188],"11.2667":[14.118,14.214,1.055],"11.3":[13.939,14.414,0.895],"11.3333":[13.772,14.599,0.713],"11.3667":[13.619,14.76,0.511],"11.4":[13.479,14.888,0.289],"11.4333":[13.351,14.975,0.047],"11.4667":[13.24,15.018,-0.215],"11.5":[13.144,15.009,-0.502],"11.5333":[13.061,14.931,-0.835],"11.5667":[12.965,14.725,-1.338],"11.6":[12.845,14.439,-2.032],"11.6333":[12.691,14.147,-2.915],"11.6667":[12.497,13.92,-3.976],"11.7":[12.258,13.828,-5.191],"11.7333":[11.978,13.929,-6.517],"11.7667":[11.669,14.263,-7.9],"11.8":[11.346,14.845,-9.276],"11.8333":[11.034,15.662,-10.58],"11.8667":[10.759,16.676,-11.756],"11.9":[10.543,17.83,-12.763],"11.9333":[10.405,19.054,-13.573],"11.9667":[10.501,20.379,-14.163],"12.0":[11.426,22.188,-14.264],"12.0333":[12.558,24.032,-13.45],"12.0667":[13.306,25.418,-12.046],"12.1":[13.593,26.217,-11.092],"12.1333":[13.504,26.491,-10.947],"12.1667":[13.288,26.669,-10.778],"12.2":[13.135,26.779,-10.544],"12.2333":[13.06,26.86,-10.373],"12.2667":[13.099,26.943,-10.291],"12.3":[13.215,27.001,-10.288],"12.3333":[13.328,27.001,-10.398],"12.3667":[13.456,26.923,-10.641],"12.4":[13.525,26.858,-10.834],"12.4333":[13.511,26.86,-10.885],"12.4667":[13.459,26.881,-10.878],"12.5":[13.396,26.899,-10.873],"12.5333":[13.332,26.857,-10.933],"12.5667":[13.239,26.748,-11.08],"12.6":[13.17,26.689,-11.136],"12.6333":[13.134,26.669,-11.112],"12.6667":[13.103,26.65,-11.079]}},"righthand":{"rotation":{"0.0":[-85.681,170.208,1.813],"0.0333":[-85.501,157.637,0.057],"0.0667":[-86.578,142.65,-2.882],"0.1":[-87.871,130.072,-4.834],"0.1333":[-86.443,124.684,-3.442],"0.1667":[-82.28,124.788,-9.706],"0.2":[-77.319,125.209,-15.64],"0.2333":[-75.869,127.394,-11.554],"0.2667":[-75.465,128.797,-8.234],"0.3":[-76.17,126.368,-5.841],"0.3333":[-76.027,123.911,-3.612],"0.3667":[-73.969,124.189,-1.13],"0.4":[-70.835,124.824,1.475],"0.4333":[-67.652,125.446,3.572],"0.4667":[-65.322,125.648,4.623],"0.5":[-64.455,125.188,3.782],"0.5333":[-64.734,124.347,1.317],"0.5667":[-65.541,123.485,-1.549],"0.6":[-66.086,122.855,-3.435],"0.6333":[-66.16,122.418,-4.269],"0.6667":[-66.187,121.994,-4.993],"0.7":[-66.168,121.583,-5.6],"0.7333":[-66.115,121.189,-6.107],"0.7667":[-66.047,120.809,-6.519],"0.8":[-65.964,120.442,-6.84],"0.8333":[-65.89,120.095,-7.083],"0.8667":[-65.829,119.765,-7.252],"0.9":[-65.796,119.456,-7.353],"0.9333":[-65.813,119.168,-7.413],"0.9667":[-65.855,118.882,-7.442],"1.0":[-65.903,118.585,-7.47],"1.0333":[-65.962,118.281,-7.506],"1.0667":[-66.024,117.97,-7.529],"1.1":[-66.084,117.67,-7.525],"1.1333":[-66.144,117.375,-7.504],"1.1667":[-66.207,117.096,-7.46],"1.2":[-66.257,116.838,-7.368],"1.2333":[-66.297,116.604,-7.23],"1.2667":[-66.333,116.403,-7.046],"1.3":[-66.347,116.237,-6.795],"1.3333":[-66.347,116.118,-6.479],"1.3667":[-67.454,116.08,-7.36],"1.4":[-70.744,116.221,-10.839],"1.4333":[-70.21,118.088,-7.109],"1.4667":[-66.821,123.057,5.602],"1.5":[-67.828,130.173,21.038],"1.5333":[-74.272,135.7,31.984],"1.5667":[-82.206,131.773,39.345],"1.6":[-82.879,123.895,52.807],"1.6333":[-74.86,124.009,66.189],"1.6667":[-62.351,133.166,71.165],"1.7":[-52.672,152.182,67.177],"1.7333":[-45.031,178.09,62.506],"1.7667":[-37.694,199.406,57.185],"1.8":[-35.216,207.981,54.644],"1.8333":[-35.014,212.454,53.841],"1.8667":[-36.212,214.879,54.003],"1.9":[-37.449,217.027,54.199],"1.9333":[-38.768,218.171,54.83],"1.9667":[-42.898,216.513,56.19],"2.0":[-55.551,206.871,58.533],"2.0333":[-76.136,186.954,58.697],"2.0667":[-83.506,193.052,49.494],"2.1":[-88.109,181.276,52.417],"2.1333":[-88.327,165.668,57.767],"2.1667":[-84.795,156.842,59.972],"2.2":[-81.744,156.67,64.909],"2.2333":[-72.995,167.023,90.065],"2.2667":[-71.956,177.903,125.202],"2.3":[-79.036,179.841,155.557],"2.3333":[-88.266,184.788,163.441],"2.3667":[-94.346,190.278,160.429],"2.4":[-97.457,195.932,152.068],"2.4333":[-91.064,195.489,131.587],"2.4667":[-82.409,186.658,105.412],"2.5":[-78.557,173.401,78.443],"2.5333":[-80.554,162.783,51.001],"2.5667":[-85.48,157.397,19.709],"2.6":[-90.485,156.209,-14.45],"2.6333":[-93.004,157.481,-43.582],"2.6667":[-94.029,158.913,-61.376],"2.7":[-94.215,160.126,-58.755],"2.7333":[-91.95,161.162,-39.96],"2.7667":[-88.052,163.013,-20.142],"2.8":[-83.487,164.291,-2.949],"2.8333":[-78.935,165.974,12.999],"2.8667":[-74.552,164.493,21.123],"2.9":[-77.196,173.214,40.584],"2.9333":[-88.942,173.859,65.41],"2.9667":[-99.203,159.759,70.903],"3.0":[-102.504,148.572,72.034],"3.0333":[-90.253,141.434,88.482],"3.0667":[-69.112,149.157,111.096],"3.1":[-57.044,171.22,115.425],"3.1333":[-51.069,201.524,85.867],"3.1667":[-25.531,185.719,56.18],"3.2":[-71.272,161.848,8.279],"3.2333":[-99.962,170.522,-24.534],"3.2667":[-102.229,173.822,-37.166],"3.3":[-99.947,176.24,-47.561],"3.3333":[-93.464,177.673,-57.814],"3.3667":[-88.986,176.708,-61.181],"3.4":[-89.371,175.079,-54.371],"3.4333":[-91.224,172.649,-42.54],"3.4667":[-93.148,168.266,-31.643],"3.5":[-94.969,160.636,-28.3],"3.5333":[-99.638,147.944,-36.383],"3.5667":[-105.687,136.81,-47.612],"3.6":[-114.165,127.561,-62.877],"3.6333":[-109.911,121.51,-65.59],"3.6667":[-93.26,117.545,-56.046],"3.7":[-70.156,116.804,-40.297],"3.7333":[-48.589,118.611,-26.103],"3.7667":[-31.171,126.819,-10.592],"3.8":[-22.034,140.362,1.102],"3.8333":[-19.855,147.952,9.225],"3.8667":[-20.278,148.304,16.158],"3.9":[-21.265,156.834,27.474],"3.9333":[-25.274,189.524,44.867],"3.9667":[-57.128,225.714,77.097],"4.0":[-76.603,223.865,92.929],"4.0333":[-60.288,200.391,73.209],"4.0667":[-49.845,177.635,62.828],"4.1":[-50.34,174.198,61.16],"4.1333":[-54.014,178.187,61.297],"4.1667":[-54.668,175.946,62.17],"4.2":[-55.439,167.479,63.605],"4.2333":[-55.163,161.652,64.151],"4.2667":[-55.023,161.53,63.794],"4.3":[-54.215,163.906,63.365],"4.3333":[-53.311,166.136,63.452],"4.3667":[-52.375,168.198,64.022],"4.4":[-51.308,169.945,64.758],"4.4333":[-50.381,171.654,65.084],"4.4667":[-49.359,173.84,64.441],"4.5":[-48.162,176.634,63.353],"4.5333":[-46.744,180.153,62.116],"4.5667":[-45.124,184.301,60.962],"4.6":[-43.51,188.586,60.276],"4.6333":[-42.081,192.563,60.173],"4.6667":[-40.659,196.434,60.304],"4.7":[-39.9,199.502,61.114],"4.7333":[-40.451,200.962,62.877],"4.7667":[-41.759,201.52,64.725],"4.8":[-43.285,201.735,66.405],"4.8333":[-44.705,201.985,67.812],"4.8667":[-46.039,202.158,68.6],"4.9":[-47.131,202.222,68.888],"4.9333":[-47.819,202.337,68.607],"4.9667":[-47.929,202.669,67.764],"5.0":[-46.977,203.052,66.553],"5.0333":[-45.754,203.607,65.632],"5.0667":[-44.62,204.339,64.871],"5.1":[-43.537,205.046,64.142],"5.1333":[-42.522,205.514,63.456],"5.1667":[-41.456,205.71,62.718],"5.2":[-40.326,205.768,61.914],"5.2333":[-39.32,205.733,61.171],"5.2667":[-38.623,205.664,60.614],"5.3":[-38.408,205.633,60.377],"5.3333":[-39.123,204.955,60.997],"5.3667":[-40.769,203.243,62.557],"5.4":[-42.873,200.995,64.511],"5.4333":[-45.033,198.747,66.384],"5.4667":[-46.943,197.089,67.82],"5.5":[-48.34,196.656,68.55],"5.5333":[-49.238,197.369,68.933],"5.5667":[-49.87,198.554,69.477],"5.6":[-50.307,199.966,70.137],"5.6333":[-50.608,201.371,70.845],"5.6667":[-50.801,202.53,71.477],"5.7":[-50.901,203.22,71.877],"5.7333":[-50.539,203.227,71.542],"5.7667":[-49.287,202.062,69.543],"5.8":[-47.84,200.025,66.98],"5.8333":[-46.8,197.702,64.974],"5.8667":[-46.531,195.449,64.285],"5.9":[-47.167,191.924,64.921],"5.9333":[-48.03,188.346,65.702],"5.9667":[-48.646,186.368,65.335],"6.0":[-49.256,186.917,63.032],"6.0333":[-50.427,189.229,59.598],"6.0667":[-52.301,192.484,56.132],"6.1":[-53.753,196.092,56.254],"6.1333":[-58.142,201.973,67.585],"6.1667":[-65.435,202.414,81.475],"6.2":[-68.495,200.938,87.909],"6.2333":[-68.739,200.566,89.503],"6.2667":[-68.844,200.565,90.277],"6.3":[-68.88,201.031,90.657],"6.3333":[-68.842,202.002,90.845],"6.3667":[-68.48,203.559,90.151],"6.4":[-67.834,205.504,88.744],"6.4333":[-67.061,207.635,87.088],"6.4667":[-66.391,210.08,85.784],"6.5":[-65.84,213.585,84.681],"6.5333":[-64.989,216.841,83.24],"6.5667":[-63.513,218.179,81.139],"6.6":[-84.26,219.942,89.777],"6.6333":[-106.167,217.23,100.071],"6.6667":[-122.45,211.596,105.446],"6.7":[-130.224,207.3,102.963],"6.7333":[-130.603,206.671,92.83],"6.7667":[-125.858,208.066,76.904],"6.8":[-116.377,208.563,56.102],"6.8333":[-103.686,204.975,34.057],"6.8667":[-89.507,191.036,14.029],"6.9":[-79.595,166.557,0.081],"6.9333":[-77.727,141.36,-10.387],"6.9667":[-85.636,126.695,-25.496],"7.0":[-92.785,126.747,-41.593],"7.0333":[-98.579,133.602,-54.725],"7.0667":[-99.351,144.613,-63.164],"7.1":[-97.97,145.693,-65.3],"7.1333":[-98.015,140.782,-65.66],"7.1667":[-99.674,133.944,-67.633],"7.2":[-103.362,126.347,-72.034],"7.2333":[-109.687,119.319,-79.575],"7.2667":[-118.396,114.065,-89.762],"7.3":[-126.375,111.152,-99.004],"7.3333":[-128.897,110.331,-101.97],"7.3667":[-129.952,110.052,-103.143],"7.4":[-130.861,109.832,-104.136],"7.4333":[-131.632,109.669,-104.966],"7.4667":[-132.263,109.553,-105.631],"7.5":[-132.769,109.473,-106.145],"7.5333":[-133.156,109.433,-106.526],"7.5667":[-133.439,109.417,-106.785],"7.6":[-133.628,109.426,-106.939],"7.6333":[-133.738,109.451,-107.005],"7.6667":[-133.79,109.492,-107.008],"7.7":[-133.786,109.538,-106.953],"7.7333":[-133.754,109.584,-106.869],"7.7667":[-133.697,109.629,-106.769],"7.8":[-133.647,109.673,-106.684],"7.8333":[-133.602,109.698,-106.615],"7.8667":[-133.585,109.706,-106.586],"7.9":[-120.184,112.28,-92.551],"7.9333":[-102.08,120.695,-74.181],"7.9667":[-92.591,129.842,-65.717],"8.0":[-86.558,136.957,-60.811],"8.0333":[-82.083,142.918,-57.661],"8.0667":[-80.045,145.613,-56.891],"8.1":[-79.241,146.67,-56.77],"8.1333":[-78.963,147.056,-56.768],"8.1667":[-78.754,147.329,-56.746],"8.2":[-78.494,147.646,-56.682],"8.2333":[-78.336,147.838,-56.639],"8.2667":[-78.239,147.945,-56.602],"8.3":[-78.157,148.019,-56.57],"8.3333":[-78.057,148.089,-56.539],"8.3667":[-77.952,148.158,-56.509],"8.4":[-77.869,148.202,-56.487],"8.4333":[-77.787,148.223,-56.464],"8.4667":[-77.693,148.219,-56.437],"8.5":[-77.559,148.198,-56.401],"8.5333":[-80.234,148.974,-56.599],"8.5667":[-82.093,148.205,-56.412],"8.6":[-83.263,146.071,-56.132],"8.6333":[-83.905,142.762,-56.067],"8.6667":[-84.246,138.508,-56.58],"8.7":[-84.654,133.593,-58.06],"8.7333":[-85.657,128.363,-60.974],"8.7667":[-87.96,123.241,-65.848],"8.8":[-92.312,118.71,-73.178],"8.8333":[-99.077,115.279,-83.012],"8.8667":[-107.554,113.31,-94.288],"8.9":[-115.815,112.774,-104.711],"8.9333":[-121.885,113.232,-111.932],"8.9667":[-124.775,114.125,-114.619],"9.0":[-125.119,114.502,-115.739],"9.0333":[-124.979,115.237,-116.263],"9.0667":[-124.418,116.258,-116.267],"9.1":[-123.565,117.501,-115.886],"9.1333":[-122.541,118.914,-115.256],"9.1667":[-121.431,120.435,-114.472],"9.2":[-120.321,122.009,-113.642],"9.2333":[-119.254,123.576,-112.82],"9.2667":[-118.268,125.069,-112.058],"9.3":[-117.383,126.426,-111.39],"9.3333":[-116.622,127.583,-110.854],"9.3667":[-115.979,128.473,-110.457],"9.4":[-115.467,129.029,-110.223],"9.4333":[-115.107,129.183,-110.189],"9.4667":[-114.682,127.943,-110.144],"9.5":[-113.961,124.82,-109.785],"9.5333":[-112.931,120.536,-109.003],"9.5667":[-111.515,115.813,-107.664],"9.6":[-109.657,111.377,-105.735],"9.6333":[-107.521,107.926,-103.48],"9.6667":[-105.966,106.137,-101.92],"9.7":[-105.172,105.432,-101.219],"9.7333":[-104.411,104.803,-100.543],"9.7667":[-103.701,104.248,-99.911],"9.8":[-103.012,103.754,-99.294],"9.8333":[-102.391,103.322,-98.742],"9.8667":[-101.822,102.949,-98.242],"9.9":[-101.317,102.627,-97.807],"9.9333":[-100.865,102.35,-97.429],"9.9667":[-100.456,102.115,-97.097],"10.0":[-100.125,101.923,-96.85],"10.0333":[-99.836,101.76,-96.653],"10.0667":[-99.608,101.627,-96.524],"10.1":[-99.401,101.519,-96.432],"10.1333":[-99.243,101.433,-96.399],"10.1667":[-99.097,101.366,-96.395],"10.2":[-98.962,101.307,-96.413],"10.2333":[-98.84,101.262,-96.465],"10.2667":[-98.717,101.218,-96.534],"10.3":[-44.014,127.83,-31.705],"10.3333":[-41.91,160.275,-17.495],"10.3667":[-45.834,190.024,-1.633],"10.4":[-58.678,211.895,33.498],"10.4333":[-77.205,223.038,71.536],"10.4667":[-84.89,241.876,79.139],"10.5":[-76.202,261.325,65.997],"10.5333":[-81.529,259.291,70.922],"10.5667":[-88.188,252.117,76.924],"10.6":[-91.101,241.933,78.932],"10.6333":[-92.056,231.029,78.836],"10.6667":[-92.002,221.636,77.865],"10.7":[-77.271,207.754,69.458],"10.7333":[-66.533,192.925,61.618],"10.7667":[-61.047,175.834,57.322],"10.8":[-63.355,156.668,59.088],"10.8333":[-90.791,144.288,40.349],"10.8667":[-122.71,153.958,-15.532],"10.9":[-111.645,181.128,-48.517],"10.9333":[-98.569,187.579,-72.619],"10.9667":[-106.705,192.035,-83.715],"11.0":[-108.44,193.718,-105.425],"11.0333":[-82.795,153.003,-117.125],"11.0667":[-85.753,154.279,-74.064],"11.1":[-70.358,139.879,-32.323],"11.1333":[-63.213,148.695,-27.512],"11.1667":[-63.432,164.053,-23.543],"11.2":[-87.335,176.28,-8.328],"11.2333":[-99.181,180.421,28.352],"11.2667":[-101.54,172.176,90.571],"11.3":[-107.653,187.89,134.914],"11.3333":[-88.132,178.292,139.204],"11.3667":[-64.455,167.375,141.587],"11.4":[-57.228,177.613,139.631],"11.4333":[-45.874,187.359,131.594],"11.4667":[-36.346,181.699,110.102],"11.5":[-30.263,168.579,81.236],"11.5333":[-34.37,156.787,46.257],"11.5667":[-83.918,153.272,-39.485],"11.6":[-86.903,156.619,-43.761],"11.6333":[-88.876,158.75,-46.343],"11.6667":[-90.019,160.066,-47.553],"11.7":[-90.371,161.026,-47.592],"11.7333":[-89.91,162.133,-46.622],"11.7667":[-88.596,163.929,-44.828],"11.8":[-86.413,166.991,-42.477],"11.8333":[-78.693,175.389,-36.426],"11.8667":[-67.147,188.722,-28.58],"11.9":[-59.415,199.336,-17.325],"11.9333":[-58.461,197.324,-2.06],"11.9667":[-69.173,175.35,-6.952],"12.0":[-82.697,166.45,-14.298],"12.0333":[-91.406,167.48,-6.632],"12.0667":[-105.947,161.133,-5.021],"12.1":[-112.934,167.445,-1.979],"12.1333":[-114.722,169.804,-0.558],"12.1667":[-113.236,172.111,0.029],"12.2":[-106.958,174.182,-0.128],"12.2333":[-99.311,175.061,0.465],"12.2667":[-91.718,175.581,1.35],"12.3":[-87.663,175.93,1.914],"12.3333":[-85.492,176.14,2.26],"12.3667":[-84.366,176.237,2.475],"12.4":[-83.954,176.264,2.593],"12.4333":[-83.961,176.249,2.645],"12.4667":[-84.237,176.141,2.639],"12.5":[-84.622,175.993,2.605],"12.5333":[-84.971,175.869,2.572],"12.5667":[-85.278,175.778,2.544],"12.6":[-85.607,175.692,2.509],"12.6333":[-85.87,175.628,2.48],"12.6667":[-85.973,175.603,2.469]},"position":{"0.0":[-14.865,25.383,-9.432],"0.0333":[-14.851,25.921,-9.658],"0.0667":[-14.656,26.551,-10.013],"0.1":[-14.465,27.346,-10.338],"0.1333":[-14.364,28.062,-10.499],"0.1667":[-12.903,28.881,-10.361],"0.2":[-11.36,29.112,-10.187],"0.2333":[-11.054,28.149,-9.97],"0.2667":[-10.823,27.395,-9.787],"0.3":[-10.823,27.127,-9.74],"0.3333":[-10.839,27.124,-9.701],"0.3667":[-10.757,27.212,-9.685],"0.4":[-10.657,27.316,-9.797],"0.4333":[-10.538,27.438,-9.966],"0.4667":[-10.409,27.586,-10.123],"0.5":[-10.264,27.809,-10.293],"0.5333":[-10.108,28.1,-10.504],"0.5667":[-9.968,28.37,-10.69],"0.6":[-9.876,28.547,-10.78],"0.6333":[-9.828,28.642,-10.798],"0.6667":[-9.784,28.726,-10.814],"0.7":[-9.746,28.795,-10.826],"0.7333":[-9.715,28.855,-10.839],"0.7667":[-9.691,28.902,-10.85],"0.8":[-9.671,28.941,-10.86],"0.8333":[-9.657,28.969,-10.871],"0.8667":[-9.651,28.989,-10.882],"0.9":[-9.649,29,-10.893],"0.9333":[-9.653,29.003,-10.905],"0.9667":[-9.659,29.002,-10.92],"1.0":[-9.665,29.001,-10.934],"1.0333":[-9.67,28.998,-10.948],"1.0667":[-9.677,28.993,-10.963],"1.1":[-9.679,28.985,-10.976],"1.1333":[-9.682,28.973,-10.989],"1.1667":[-9.679,28.955,-11],"1.2":[-9.676,28.932,-11.009],"1.2333":[-9.669,28.902,-11.017],"1.2667":[-9.657,28.854,-11.022],"1.3":[-9.648,28.78,-11.024],"1.3333":[-9.65,28.688,-11.022],"1.3667":[-9.658,28.576,-11.002],"1.4":[-9.678,28.419,-10.951],"1.4333":[-9.742,28.372,-10.795],"1.4667":[-9.761,28.454,-10.597],"1.5":[-9.561,28.71,-10.566],"1.5333":[-9.187,28.77,-10.828],"1.5667":[-9.15,28.368,-11.404],"1.6":[-9.253,27.463,-11.549],"1.6333":[-9.375,26.739,-11.202],"1.6667":[-9.777,27.459,-10.796],"1.7":[-10.498,28.525,-10.258],"1.7333":[-11.105,29.036,-10.202],"1.7667":[-11.659,29.312,-10.258],"1.8":[-12.229,29.373,-10.202],"1.8333":[-12.795,29.335,-10.119],"1.8667":[-13.265,29.256,-10.02],"1.9":[-13.583,29.191,-9.922],"1.9333":[-13.809,29.143,-9.824],"1.9667":[-13.754,29.003,-9.76],"2.0":[-12.842,28.612,-9.734],"2.0333":[-10.966,27.67,-9.671],"2.0667":[-10.16,25.464,-10.186],"2.1":[-10.402,24.504,-10.436],"2.1333":[-11.251,24.048,-10.445],"2.1667":[-12.301,23.742,-10.376],"2.2":[-12.835,23.754,-10.344],"2.2333":[-12.725,25.011,-10.196],"2.2667":[-12.198,27.328,-10.129],"2.3":[-11.365,29.726,-10.087],"2.3333":[-10.908,30.157,-10.397],"2.3667":[-10.284,29.951,-10.954],"2.4":[-9.498,29.435,-11.49],"2.4333":[-9.157,29.015,-11.725],"2.4667":[-9.085,28.653,-11.822],"2.5":[-9.169,28.336,-11.862],"2.5333":[-9.38,28.1,-11.875],"2.5667":[-9.75,27.936,-11.9],"2.6":[-10.261,27.822,-11.909],"2.6333":[-10.778,27.781,-11.84],"2.6667":[-11.175,27.818,-11.642],"2.7":[-11.39,28.054,-11.173],"2.7333":[-11.528,28.44,-10.461],"2.7667":[-11.637,28.728,-9.79],"2.8":[-11.775,28.738,-9.132],"2.8333":[-11.48,28.598,-9.261],"2.8667":[-9.231,28.774,-11.523],"2.9":[-7.793,27.318,-12.489],"2.9333":[-7.061,26.241,-12.94],"2.9667":[-6.351,25.623,-13.032],"3.0":[-6.339,25.497,-12.905],"3.0333":[-6.444,25.693,-12.359],"3.0667":[-6.326,26.004,-11.392],"3.1":[-6.619,26.21,-10.269],"3.1333":[-8.024,26.149,-10.002],"3.1667":[-11,27.246,-10.929],"3.2":[-10.722,26.816,-11.461],"3.2333":[-10.746,26.748,-11.466],"3.2667":[-11.387,27.167,-11.042],"3.3":[-11.795,27.344,-10.829],"3.3333":[-12.049,27.319,-10.832],"3.3667":[-12.167,27.294,-10.896],"3.4":[-12.146,27.365,-10.946],"3.4333":[-12.043,27.463,-11.013],"3.4667":[-11.891,27.516,-11.137],"3.5":[-11.688,27.426,-11.387],"3.5333":[-11.349,27.096,-11.828],"3.5667":[-11.034,26.755,-12.168],"3.6":[-10.752,26.407,-12.421],"3.6333":[-10.783,26.258,-12.31],"3.6667":[-10.999,26.241,-11.959],"3.7":[-11.268,26.28,-11.484],"3.7333":[-11.512,26.323,-10.999],"3.7667":[-11.797,26.478,-11.077],"3.8":[-12.146,26.74,-11.557],"3.8333":[-12.182,26.829,-11.596],"3.8667":[-11.965,26.707,-11.31],"3.9":[-11.663,26.857,-10.776],"3.9333":[-11.583,27.905,-9.644],"3.9667":[-11.05,28.468,-8.215],"4.0":[-10.526,28.875,-7.665],"4.0333":[-10.508,29.614,-7.81],"4.0667":[-10.654,29.732,-8.452],"4.1":[-10.422,28.719,-9.097],"4.1333":[-10.204,27.242,-9.76],"4.1667":[-10.237,26.452,-9.977],"4.2":[-10.263,26.429,-10.061],"4.2333":[-10.347,26.478,-9.939],"4.2667":[-10.393,26.556,-9.797],"4.3":[-10.417,26.794,-9.649],"4.3333":[-10.423,27.056,-9.492],"4.3667":[-10.411,27.363,-9.328],"4.4":[-10.398,27.658,-9.206],"4.4333":[-10.394,27.874,-9.101],"4.4667":[-10.412,28.062,-8.984],"4.5":[-10.433,28.214,-8.856],"4.5333":[-10.444,28.329,-8.721],"4.5667":[-10.434,28.394,-8.59],"4.6":[-10.394,28.396,-8.478],"4.6333":[-10.334,28.353,-8.391],"4.6667":[-10.271,28.28,-8.314],"4.7":[-10.199,28.202,-8.274],"4.7333":[-10.129,28.16,-8.278],"4.7667":[-10.115,28.14,-8.266],"4.8":[-10.131,28.132,-8.243],"4.8333":[-10.147,28.14,-8.231],"4.8667":[-10.181,28.169,-8.226],"4.9":[-10.212,28.188,-8.237],"4.9333":[-10.237,28.204,-8.281],"4.9667":[-10.255,28.21,-8.313],"5.0":[-10.278,28.215,-8.323],"5.0333":[-10.274,28.187,-8.32],"5.0667":[-10.249,28.149,-8.324],"5.1":[-10.22,28.11,-8.329],"5.1333":[-10.203,28.077,-8.33],"5.1667":[-10.198,28.049,-8.328],"5.2":[-10.198,28.021,-8.325],"5.2333":[-10.203,28,-8.324],"5.2667":[-10.207,27.988,-8.325],"5.3":[-10.208,27.988,-8.33],"5.3333":[-10.215,28.03,-8.322],"5.3667":[-10.236,28.12,-8.295],"5.4":[-10.263,28.232,-8.262],"5.4333":[-10.292,28.339,-8.232],"5.4667":[-10.315,28.42,-8.215],"5.5":[-10.324,28.451,-8.221],"5.5333":[-10.322,28.428,-8.236],"5.5667":[-10.315,28.365,-8.245],"5.6":[-10.305,28.276,-8.254],"5.6333":[-10.293,28.177,-8.263],"5.6667":[-10.284,28.083,-8.272],"5.7":[-10.278,28.016,-8.278],"5.7333":[-10.292,27.959,-8.296],"5.7667":[-10.351,27.782,-8.373],"5.8":[-10.415,27.574,-8.492],"5.8333":[-10.435,27.467,-8.61],"5.8667":[-10.377,27.583,-8.676],"5.9":[-10.257,27.81,-8.71],"5.9333":[-10.064,28.05,-8.749],"5.9667":[-9.77,28.213,-8.8],"6.0":[-9.331,28.253,-8.845],"6.0333":[-8.701,28.228,-8.856],"6.0667":[-7.884,28.201,-8.826],"6.1":[-7.845,27.885,-9.189],"6.1333":[-7.977,28.081,-9.32],"6.1667":[-8.411,29.53,-8.716],"6.2":[-10.004,30.787,-8.359],"6.2333":[-10.335,30.833,-8.366],"6.2667":[-11.037,30.77,-8.393],"6.3":[-11.624,30.66,-8.414],"6.3333":[-11.699,30.543,-8.414],"6.3667":[-11.576,30.363,-8.417],"6.4":[-11.416,30.144,-8.421],"6.4333":[-11.3,29.92,-8.415],"6.4667":[-11.297,29.73,-8.377],"6.5":[-11.332,29.565,-8.297],"6.5333":[-11.376,29.399,-8.218],"6.5667":[-11.414,29.212,-8.178],"6.6":[-10.849,28.823,-7.379],"6.6333":[-10.196,28.52,-6.724],"6.6667":[-9.598,28.26,-6.337],"6.7":[-9.102,27.965,-6.182],"6.7333":[-8.691,27.476,-6.223],"6.7667":[-8.348,26.843,-6.325],"6.8":[-8.133,26.265,-6.361],"6.8333":[-8.102,25.891,-6.313],"6.8667":[-8.374,25.762,-6.219],"6.9":[-8.836,25.69,-6.429],"6.9333":[-9.036,25.71,-7.025],"6.9667":[-8.784,25.851,-7.58],"7.0":[-8.068,26.124,-7.808],"7.0333":[-7.213,26.397,-7.752],"7.0667":[-6.273,26.669,-7.533],"7.1":[-5.83,26.712,-7.512],"7.1333":[-5.697,26.695,-7.624],"7.1667":[-5.629,26.696,-7.815],"7.2":[-5.579,26.716,-8.062],"7.2333":[-5.517,26.751,-8.326],"7.2667":[-5.437,26.791,-8.558],"7.3":[-5.358,26.819,-8.711],"7.3333":[-5.312,26.826,-8.756],"7.3667":[-5.284,26.835,-8.772],"7.4":[-5.261,26.843,-8.787],"7.4333":[-5.242,26.849,-8.798],"7.4667":[-5.227,26.854,-8.807],"7.5":[-5.217,26.86,-8.813],"7.5333":[-5.208,26.866,-8.818],"7.5667":[-5.203,26.87,-8.822],"7.6":[-5.2,26.875,-8.823],"7.6333":[-5.198,26.879,-8.823],"7.6667":[-5.195,26.882,-8.823],"7.7":[-5.195,26.885,-8.822],"7.7333":[-5.193,26.886,-8.82],"7.7667":[-5.192,26.888,-8.819],"7.8":[-5.188,26.891,-8.817],"7.8333":[-5.183,26.891,-8.817],"7.8667":[-5.174,26.892,-8.816],"7.9":[-5.222,26.889,-8.624],"7.9333":[-5.249,26.9,-8.206],"7.9667":[-5.177,26.935,-7.835],"8.0":[-5.068,26.992,-7.59],"8.0333":[-4.942,27.054,-7.415],"8.0667":[-4.872,27.075,-7.336],"8.1":[-4.858,27.088,-7.304],"8.1333":[-4.872,27.101,-7.294],"8.1667":[-4.883,27.113,-7.285],"8.2":[-4.885,27.118,-7.275],"8.2333":[-4.888,27.122,-7.267],"8.2667":[-4.892,27.125,-7.261],"8.3":[-4.896,27.128,-7.255],"8.3333":[-4.902,27.131,-7.249],"8.3667":[-4.908,27.133,-7.243],"8.4":[-4.914,27.135,-7.237],"8.4333":[-4.929,27.143,-7.233],"8.4667":[-4.951,27.151,-7.232],"8.5":[-4.973,27.156,-7.228],"8.5333":[-5.328,27.349,-7.107],"8.5667":[-5.906,27.519,-7.011],"8.6":[-6.664,27.649,-6.932],"8.6333":[-7.572,27.729,-6.868],"8.6667":[-8.586,27.744,-6.823],"8.7":[-9.666,27.685,-6.806],"8.7333":[-10.766,27.553,-6.829],"8.7667":[-11.835,27.355,-6.894],"8.8":[-12.823,27.111,-6.993],"8.8333":[-13.691,26.846,-7.11],"8.8667":[-14.411,26.585,-7.22],"8.9":[-14.978,26.352,-7.299],"8.9333":[-15.39,26.168,-7.327],"8.9667":[-15.651,26.052,-7.289],"9.0":[-15.699,26.003,-7.247],"9.0333":[-15.735,25.969,-7.184],"9.0667":[-15.763,25.947,-7.102],"9.1":[-15.786,25.936,-7.005],"9.1333":[-15.804,25.935,-6.898],"9.1667":[-15.819,25.943,-6.782],"9.2":[-15.831,25.959,-6.665],"9.2333":[-15.842,25.979,-6.545],"9.2667":[-15.85,25.999,-6.43],"9.3":[-15.859,26.02,-6.321],"9.3333":[-15.87,26.037,-6.218],"9.3667":[-15.882,26.045,-6.128],"9.4":[-15.895,26.043,-6.05],"9.4333":[-15.915,26.024,-5.99],"9.4667":[-15.934,25.96,-5.965],"9.5":[-15.955,25.839,-5.984],"9.5333":[-15.985,25.696,-6.04],"9.5667":[-16.028,25.557,-6.123],"9.6":[-16.082,25.443,-6.21],"9.6333":[-16.128,25.361,-6.286],"9.6667":[-16.155,25.309,-6.327],"9.7":[-16.162,25.281,-6.346],"9.7333":[-16.167,25.258,-6.363],"9.7667":[-16.172,25.242,-6.379],"9.8":[-16.178,25.228,-6.392],"9.8333":[-16.18,25.219,-6.406],"9.8667":[-16.182,25.212,-6.416],"9.9":[-16.185,25.205,-6.427],"9.9333":[-16.183,25.2,-6.436],"9.9667":[-16.183,25.193,-6.443],"10.0":[-16.182,25.184,-6.45],"10.0333":[-16.176,25.173,-6.455],"10.0667":[-16.173,25.157,-6.46],"10.1":[-16.165,25.134,-6.464],"10.1333":[-16.158,25.106,-6.468],"10.1667":[-16.15,25.071,-6.471],"10.2":[-16.14,25.028,-6.473],"10.2333":[-16.129,24.975,-6.475],"10.2667":[-16.117,24.91,-6.476],"10.3":[-18.092,24.689,-5.134],"10.3333":[-19.614,24.432,-3.821],"10.3667":[-19.82,24.292,-3.122],"10.4":[-17.312,24.863,-3.399],"10.4333":[-14.192,25.625,-4.094],"10.4667":[-13.074,25.373,-5.098],"10.5":[-12.587,25.228,-6.222],"10.5333":[-12.393,25.43,-6.201],"10.5667":[-12.207,25.896,-6.014],"10.6":[-12.018,26.507,-5.752],"10.6333":[-11.812,27.114,-5.506],"10.6667":[-11.576,27.516,-5.34],"10.7":[-11.899,27.768,-5.634],"10.7333":[-12.176,27.824,-6.891],"10.7667":[-12.343,27.84,-8.497],"10.8":[-12.285,28.13,-9.796],"10.8333":[-11.94,28.475,-9.965],"10.8667":[-11.864,27.811,-9.581],"10.9":[-10.353,27.15,-8.724],"10.9333":[-9.354,27.019,-8.77],"10.9667":[-9.603,27.333,-8.5],"11.0":[-9.746,27.539,-8.368],"11.0333":[-8.491,27.013,-8.859],"11.0667":[-10.053,27.337,-8.172],"11.1":[-11.496,27.022,-8.971],"11.1333":[-11.127,27.099,-9.054],"11.1667":[-10.656,26.748,-9.578],"11.2":[-10.178,27.885,-10.616],"11.2333":[-9.638,27.909,-12.05],"11.2667":[-8.264,27.443,-12.487],"11.3":[-7.022,25.656,-12.519],"11.3333":[-6.503,25.758,-12.374],"11.3667":[-6.177,26.86,-11.809],"11.4":[-6.772,28.236,-10.639],"11.4333":[-7.662,29.7,-10.403],"11.4667":[-7.975,30.344,-10.884],"11.5":[-8.475,29.568,-11.356],"11.5333":[-9.044,28.946,-11.691],"11.5667":[-10.527,29.855,-11.643],"11.6":[-10.807,29.575,-11.797],"11.6333":[-11.077,29.22,-11.978],"11.6667":[-11.333,28.816,-12.153],"11.7":[-11.577,28.401,-12.297],"11.7333":[-11.805,28.009,-12.387],"11.7667":[-12.017,27.684,-12.405],"11.8":[-12.209,27.462,-12.339],"11.8333":[-12.329,27.636,-11.832],"11.8667":[-12.271,28.147,-10.909],"11.9":[-11.838,28.726,-10.492],"11.9333":[-11.02,29.585,-10.932],"11.9667":[-10.364,30.352,-11.667],"12.0":[-10.777,28.942,-12.038],"12.0333":[-12.451,26.542,-12.099],"12.0667":[-14.033,23.943,-11.458],"12.1":[-14.641,23.237,-10.108],"12.1333":[-15.091,23.926,-9.213],"12.1667":[-15.119,24.819,-8.629],"12.2":[-15.074,25.485,-8.354],"12.2333":[-15.001,25.567,-8.434],"12.2667":[-14.907,25.449,-8.701],"12.3":[-14.856,25.326,-8.883],"12.3333":[-14.826,25.233,-9.019],"12.3667":[-14.806,25.159,-9.133],"12.4":[-14.797,25.11,-9.227],"12.4333":[-14.796,25.084,-9.302],"12.4667":[-14.802,25.066,-9.348],"12.5":[-14.81,25.058,-9.371],"12.5333":[-14.818,25.061,-9.376],"12.5667":[-14.824,25.083,-9.375],"12.6":[-14.83,25.115,-9.369],"12.6333":[-14.836,25.144,-9.362],"12.6667":[-14.838,25.157,-9.358]}},"h1":{"rotation":{"0.0":[-85.321,-3.221,11.081],"0.0333":[-87.577,-15.595,9.647],"0.0667":[-89.463,-30.51,7.992],"0.1":[-89.977,-43.131,5.889],"0.1333":[-88.856,-48.493,2.997],"0.1667":[-87.738,-47.956,-0.237],"0.2":[-87.052,-46.944,-3.496],"0.2333":[-89.293,-44.562,-0.185],"0.2667":[-91.062,-43.066,2.775],"0.3":[-92.685,-45.472,5.763],"0.3333":[-94.465,-47.822,8.487],"0.3667":[-96.429,-47.299,10.428],"0.4":[-98.978,-46.326,12.173],"0.4333":[-101.431,-45.387,13.409],"0.4667":[-103.191,-44.966,13.876],"0.5":[-103.848,-45.345,12.903],"0.5333":[-103.657,-46.205,10.65],"0.5667":[-103.088,-47.136,8.137],"0.6":[-102.756,-47.809,6.503],"0.6333":[-102.804,-48.247,5.765],"0.6667":[-102.885,-48.669,5.123],"0.7":[-102.994,-49.071,4.577],"0.7333":[-103.12,-49.456,4.113],"0.7667":[-103.254,-49.825,3.739],"0.8":[-103.394,-50.18,3.448],"0.8333":[-103.519,-50.519,3.228],"0.8667":[-103.632,-50.839,3.089],"0.9":[-103.717,-51.144,3.015],"0.9333":[-103.758,-51.431,2.998],"0.9667":[-103.786,-51.717,3.02],"1.0":[-103.812,-52.015,3.049],"1.0333":[-103.841,-52.323,3.084],"1.0667":[-103.876,-52.632,3.144],"1.1":[-103.919,-52.934,3.23],"1.1333":[-103.97,-53.227,3.347],"1.1667":[-104.026,-53.506,3.498],"1.2":[-104.096,-53.763,3.696],"1.2333":[-104.178,-53.993,3.944],"1.2667":[-104.274,-54.189,4.247],"1.3":[-104.385,-54.346,4.613],"1.3333":[-104.508,-54.458,5.041],"1.3667":[-104.65,-54.517,5.547],"1.4":[-104.802,-54.517,6.124],"1.4333":[-107.049,-52.373,11.976],"1.4667":[-109.212,-46.88,23.098],"1.5":[-107.318,-40.267,33.769],"1.5333":[-101.874,-35.691,41.594],"1.5667":[-96.897,-39.976,50.739],"1.6":[-99.319,-47.265,66.622],"1.6333":[-104.254,-47.251,77.83],"1.6667":[-105.223,-40.481,74.454],"1.7":[-107.082,-29.91,69.596],"1.7333":[-104.783,-4.883,60.629],"1.7667":[-106.836,27.632,53.531],"1.8":[-129.323,69.644,22.401],"1.8333":[-74.903,122.378,73.809],"1.8667":[-80.118,160.596,64.147],"1.9":[-78.565,191.974,58.71],"1.9333":[-74.536,226.989,50.051],"1.9667":[-149.274,281.175,118.71],"2.0":[-101.042,330.748,70.054],"2.0333":[-92.216,366.021,69.1],"2.0667":[-84.396,383.722,64.15],"2.1":[-83.295,373.306,66.307],"2.1333":[-87.063,359.883,71.654],"2.1667":[-92.338,351.763,73.067],"2.2":[-94.792,351.979,76.536],"2.2333":[-100.142,363.046,96.027],"2.2667":[-99.795,373.319,129.542],"2.3":[-92.69,373.623,167.288],"2.3333":[-86.355,367.093,206.541],"2.3667":[-88.775,360.414,250.541],"2.4":[-94.714,363.013,294.51],"2.4333":[-88.207,374.135,339.404],"2.4667":[-78.396,369.467,385.931],"2.5":[-82.17,360.289,430.897],"2.5333":[-90.245,363.013,472.767],"2.5667":[-94.711,370.361,506.803],"2.6":[-96.237,375.495,536.823],"2.6333":[-92.775,377.443,565.189],"2.6667":[-86.937,373.088,592.969],"2.7":[-78.383,362.585,623.238],"2.7333":[-71.52,351.424,654.258],"2.7667":[-70.915,345.297,683.847],"2.8":[-72.106,344.635,708.798],"2.8333":[-71.546,347.424,730.539],"2.8667":[-68.909,354.362,751.489],"2.9":[-61.556,365.535,776.667],"2.9333":[-48.769,364.134,805.549],"2.9667":[-43.595,348.855,814.339],"3.0":[-45.517,338.531,817.705],"3.0333":[-59.907,336.126,831.06],"3.0667":[-78.77,346.514,844.622],"3.1":[-98.272,361.349,844.717],"3.1333":[-130.06,368.57,825.662],"3.1667":[-173.567,359.892,809.924],"3.2":[-245.962,349.429,807.304],"3.2333":[-293.317,344.656,807.204],"3.2667":[-326.706,342.461,806.549],"3.3":[-356.224,341.45,806.038],"3.3333":[-381.402,341.206,805.839],"3.3667":[-403.889,341.36,807.025],"3.4":[-425.981,342.073,809.627],"3.4333":[-448.154,343.469,812.178],"3.4667":[-471.002,345.089,813.573],"3.5":[-496.07,346.31,812.85],"3.5333":[-525.773,347.796,809.32],"3.5667":[-554.263,349.941,806.117],"3.6":[-581.602,352.823,803.551],"3.6333":[-610.142,354.559,801.993],"3.6667":[-640.319,355.744,799.672],"3.7":[-670.416,357.071,796.953],"3.7333":[-698.447,358.146,794.634],"3.7667":[-723.044,357.823,793.281],"3.8":[-746.834,354.94,792.672],"3.8333":[-769.146,350.751,793.307],"3.8667":[-788.677,347.159,794.922],"3.9":[-803.782,345.712,795.91],"3.9333":[-813.366,346.473,795.254],"3.9667":[-818.615,348.587,793.736],"4.0":[-821.05,351.794,792.111],"4.0333":[-822.087,355.64,790.979],"4.0667":[-822.999,359.503,790.564],"4.1":[-819.801,365.54,789.72],"4.1333":[-813.876,372.461,790.049],"4.1667":[-812.628,371.954,790.398],"4.2":[-812.632,364.622,791.965],"4.2333":[-813.865,358.569,792.384],"4.2667":[-814.285,357.774,791.953],"4.3":[-814.77,360.095,791.287],"4.3333":[-815.333,362.422,791.128],"4.3667":[-815.967,364.586,791.452],"4.4":[-816.789,366.452,791.906],"4.4333":[-817.494,368.26,791.993],"4.4667":[-818.252,370.551,791.098],"4.5":[-819.14,373.461,789.725],"4.5333":[-820.206,377.113,788.167],"4.5667":[-821.463,381.405,786.661],"4.6":[-822.754,385.824,785.639],"4.6333":[-823.927,389.912,785.249],"4.6667":[-825.151,393.887,785.089],"4.7":[-825.724,397.005,785.801],"4.7333":[-824.917,398.416,787.867],"4.7667":[-823.297,398.859,790.253],"4.8":[-821.455,398.929,792.527],"4.8333":[-819.734,399.03,794.488],"4.8667":[-818.128,399.053,795.786],"4.9":[-816.827,398.987,796.481],"4.9333":[-815.995,399.016,796.463],"4.9667":[-815.806,399.33,795.697],"5.0":[-816.866,399.828,794.18],"5.0333":[-818.23,400.524,792.864],"5.0667":[-819.473,401.377,791.749],"5.1":[-820.672,402.194,790.672],"5.1333":[-821.839,402.761,789.633],"5.1667":[-823.117,403.056,788.486],"5.2":[-824.498,403.212,787.228],"5.2333":[-825.741,403.258,786.071],"5.2667":[-826.608,403.241,785.222],"5.3":[-826.876,403.226,784.894],"5.3333":[-826.072,402.498,785.756],"5.3667":[-824.271,400.661,787.839],"5.4":[-822.043,398.233,790.416],"5.4333":[-819.818,395.779,792.894],"5.4667":[-817.858,393.918,794.863],"5.5":[-816.33,393.319,796.033],"5.5333":[-815.194,393.912,796.783],"5.5667":[-814.272,395.001,797.653],"5.6":[-813.518,396.339,798.609],"5.6333":[-812.907,397.685,799.581],"5.6667":[-812.455,398.804,800.42],"5.7":[-812.199,399.47,800.943],"5.7333":[-812.34,399.387,800.675],"5.7667":[-813.518,398.155,798.454],"5.8":[-815.301,396.206,795.359],"5.8333":[-817.315,394.25,792.469],"5.8667":[-819.589,392.968,790.184],"5.9":[-822.456,391.59,787.819],"5.9333":[-825.616,389.985,785.459],"5.9667":[-828.699,388.296,783.331],"6.0":[-831.404,386.7,781.592],"6.0333":[-833.459,385.416,780.348],"6.0667":[-834.61,384.674,779.681],"6.1":[-834.015,385.666,781.544],"6.1333":[-827.897,389.519,794.549],"6.1667":[-819.561,387.447,809.744],"6.2":[-816.126,383.935,816.498],"6.2333":[-815.941,383.533,818.08],"6.2667":[-815.835,383.517,818.859],"6.3":[-815.723,383.973,819.271],"6.3333":[-815.6,384.939,819.524],"6.3667":[-815.705,386.528,818.925],"6.4":[-816.021,388.541,817.642],"6.4333":[-816.425,390.753,816.132],"6.4667":[-816.65,393.26,815.032],"6.5":[-816.512,396.795,814.298],"6.5333":[-816.679,400.122,813.246],"6.5667":[-817.894,401.644,811.247],"6.6":[-820.261,400.898,808.247],"6.6333":[-823.029,398.774,805.015],"6.6667":[-825.645,395.747,802.263],"6.7":[-827.811,392.394,800.331],"6.7333":[-829.422,389.326,799.22],"6.7667":[-830.445,387.106,798.725],"6.8":[-830.812,386.256,798.598],"6.8333":[-831.046,387.301,799.665],"6.8667":[-831.446,389.92,802.932],"6.9":[-831.391,393.065,808.757],"6.9333":[-830.437,395.455,817.182],"6.9667":[-828.856,396.031,827.237],"7.0":[-827.523,394.662,837.069],"7.0333":[-826.894,392.405,845.069],"7.0667":[-826.418,391.026,850.514],"7.1":[-825.318,392.202,853.324],"7.1333":[-824.477,395.888,854.861],"7.1667":[-824.044,401.325,855.241],"7.2":[-824.228,407.632,854.232],"7.2333":[-825.371,413.803,851.72],"7.2667":[-827.49,418.834,848.131],"7.3":[-829.611,421.848,844.992],"7.3333":[-830.174,422.55,844.254],"7.3667":[-830.387,422.851,844.016],"7.4":[-830.578,423.115,843.803],"7.4333":[-830.75,423.342,843.61],"7.4667":[-830.899,423.536,843.442],"7.5":[-831.025,423.703,843.302],"7.5333":[-831.134,423.839,843.179],"7.5667":[-831.222,423.953,843.081],"7.6":[-831.294,424.042,843],"7.6333":[-831.354,424.112,842.932],"7.6667":[-831.396,424.165,842.885],"7.7":[-831.425,424.202,842.852],"7.7333":[-831.446,424.229,842.831],"7.7667":[-831.461,424.243,842.811],"7.8":[-831.467,424.25,842.805],"7.8333":[-831.468,424.253,842.803],"7.8667":[-831.468,424.255,842.805],"7.9":[-828.071,419.066,847.311],"7.9333":[-824.409,407.691,852.363],"7.9667":[-822.484,397.145,854.352],"8.0":[-820.472,389.09,855.964],"8.0333":[-818.604,382.426,857.046],"8.0667":[-817.6,379.406,856.983],"8.1":[-817.18,378.221,856.792],"8.1333":[-817.038,377.79,856.685],"8.1667":[-816.925,377.484,856.627],"8.2":[-816.778,377.126,856.595],"8.2333":[-816.688,376.908,856.581],"8.2667":[-816.63,376.785,856.582],"8.3":[-816.577,376.698,856.586],"8.3333":[-816.508,376.609,856.585],"8.3667":[-816.433,376.522,856.58],"8.4":[-816.372,376.464,856.576],"8.4333":[-816.306,376.427,856.574],"8.4667":[-816.224,376.413,856.574],"8.5":[-816.104,376.409,856.575],"8.5333":[-815.312,377.168,856.726],"8.5667":[-813.325,379.324,857.122],"8.6":[-810.293,382.71,857.589],"8.6333":[-806.391,387.161,857.949],"8.6667":[-801.84,392.479,857.981],"8.7":[-796.949,398.434,857.469],"8.7333":[-792.117,404.754,856.164],"8.7667":[-787.881,411.119,853.773],"8.8":[-784.878,417.184,849.956],"8.8333":[-783.785,422.571,844.382],"8.8667":[-785.072,426.915,836.97],"8.9":[-788.413,429.956,828.442],"8.9333":[-792.288,431.655,820.725],"8.9667":[-794.472,432.216,816.432],"9.0":[-795.232,432.047,814.645],"9.0333":[-795.976,431.453,813.061],"9.0667":[-796.596,430.507,811.765],"9.1":[-797.071,429.283,810.763],"9.1333":[-797.401,427.851,810.032],"9.1667":[-797.612,426.282,809.527],"9.2":[-797.723,424.645,809.2],"9.2333":[-797.763,423.006,809.003],"9.2667":[-797.744,421.437,808.9],"9.3":[-797.678,420.002,808.855],"9.3333":[-797.566,418.77,808.847],"9.3667":[-797.398,417.806,808.861],"9.4":[-797.173,417.177,808.875],"9.4333":[-796.878,416.955,808.883],"9.4667":[-795.654,418.03,809.652],"9.5":[-792.729,420.789,811.976],"9.5333":[-787.957,424.486,816.167],"9.5667":[-781.048,428.347,822.641],"9.6":[-772.123,431.615,831.315],"9.6333":[-762.861,433.762,840.468],"9.6667":[-757.089,434.658,846.166],"9.7":[-754.676,434.941,848.506],"9.7333":[-752.459,435.168,850.67],"9.7667":[-750.48,435.351,852.61],"9.8":[-748.69,435.498,854.375],"9.8333":[-747.123,435.613,855.927],"9.8667":[-745.777,435.704,857.262],"9.9":[-744.618,435.773,858.412],"9.9333":[-743.637,435.828,859.382],"9.9667":[-742.816,435.869,860.19],"10.0":[-742.17,435.901,860.814],"10.0333":[-741.625,435.922,861.328],"10.0667":[-741.204,435.942,861.705],"10.1":[-740.866,435.952,861.98],"10.1333":[-740.605,435.961,862.16],"10.1667":[-740.398,435.964,862.262],"10.2":[-740.201,435.967,862.332],"10.2333":[-740.03,435.967,862.344],"10.2667":[-739.84,435.967,862.346],"10.3":[-739.54,435.984,862.277],"10.3333":[-739.192,436.023,862.005],"10.3667":[-739.006,436.072,861.425],"10.4":[-739.188,436.112,860.445],"10.4333":[-739.929,436.127,858.99],"10.4667":[-741.413,436.087,856.987],"10.5":[-743.834,435.967,854.352],"10.5333":[-752.947,433.635,845.329],"10.5667":[-765.12,427.311,833.38],"10.6":[-773.877,418.316,824.875],"10.6333":[-779.69,408.554,819.319],"10.6667":[-783.805,399.935,815.532],"10.7":[-794.068,390.398,802.404],"10.7333":[-799.241,377.806,790.615],"10.7667":[-797.541,361.928,783.396],"10.8":[-786.136,344.243,783.262],"10.8333":[-747.832,334.807,768.291],"10.8667":[-700.287,346.759,725.619],"10.9":[-698.878,386.4,695.499],"10.9333":[-738.627,409.901,653.86],"10.9667":[-759.546,419.364,627.057],"11.0":[-793.464,413.758,585.826],"11.0333":[-833.298,346.709,581.614],"11.0667":[-864.792,342.782,649.722],"11.1":[-873.172,330.86,699.1],"11.1333":[-854.088,338.962,705.52],"11.1667":[-826.664,350.507,708.577],"11.2":[-779.192,358.33,721.962],"11.2333":[-749.291,363.118,757.24],"11.2667":[-754.988,353.679,820.095],"11.3":[-778.433,363.779,867.805],"11.3333":[-802.608,358.783,873.148],"11.3667":[-824.969,353.544,873.726],"11.4":[-829.969,364.809,870.202],"11.4333":[-839.981,375.72,859.555],"11.4667":[-850.547,370.632,835.521],"11.5":[-857.736,358.325,805.839],"11.5333":[-855.34,348.142,773.85],"11.5667":[-840.921,345.601,738.1],"11.6":[-827.246,348.041,702.452],"11.6333":[-811.317,351.538,654.625],"11.6667":[-799.534,365.251,615.065],"11.7":[-794.711,364.587,578.626],"11.7333":[-797.849,352.625,546.017],"11.7667":[-803.272,341.862,516.132],"11.8":[-807.184,340.537,486.011],"11.8333":[-808.622,356.776,459.782],"11.8667":[-816.156,363.161,428.408],"11.9":[-822.753,369.783,396.464],"11.9333":[-821.656,364.621,365.777],"11.9667":[-816.224,356.283,354.053],"12.0":[-809.459,354.45,355.393],"12.0333":[-801.584,354.827,365.083],"12.0667":[-789.244,345.655,368.661],"12.1":[-780.672,349.967,371.36],"12.1333":[-777.851,351.551,371.942],"12.1667":[-778.323,353.831,371.649],"12.2":[-783.848,356.941,370.87],"12.2333":[-791.168,359.227,370.99],"12.2667":[-798.524,361.082,371.236],"12.3":[-802.453,362.106,371.39],"12.3333":[-804.557,362.666,371.498],"12.3667":[-805.652,362.941,371.585],"12.4":[-806.054,363.033,371.654],"12.4333":[-806.05,363.016,371.707],"12.4667":[-805.794,362.867,371.733],"12.5":[-805.438,362.659,371.742],"12.5333":[-805.114,362.481,371.748],"12.5667":[-804.826,362.343,371.755],"12.6":[-804.516,362.205,371.757],"12.6333":[-804.267,362.1,371.757],"12.6667":[-804.17,362.058,371.757]},"position":{"0.0":[-8.221,43.654,-14.315],"0.0333":[-7.832,44.225,-14.302],"0.0667":[-7.271,44.902,-14.274],"0.1":[-6.618,45.473,-14.222],"0.1333":[-5.943,45.71,-14.14],"0.1667":[-4.958,44.774,-13.922],"0.2":[-3.755,43.211,-13.624],"0.2333":[-3.543,41.984,-13.624],"0.2667":[-3.418,40.955,-13.624],"0.3":[-3.508,40.435,-13.624],"0.3333":[-3.6,40.28,-13.624],"0.3667":[-3.568,40.323,-13.757],"0.4":[-3.472,40.44,-14.07],"0.4333":[-3.325,40.611,-14.432],"0.4667":[-3.138,40.819,-14.715],"0.5":[-2.863,41.107,-14.906],"0.5333":[-2.509,41.471,-15.067],"0.5667":[-2.175,41.813,-15.178],"0.6":[-1.954,42.037,-15.219],"0.6333":[-1.829,42.161,-15.219],"0.6667":[-1.715,42.273,-15.219],"0.7":[-1.616,42.37,-15.219],"0.7333":[-1.529,42.453,-15.219],"0.7667":[-1.456,42.523,-15.219],"0.8":[-1.394,42.58,-15.219],"0.8333":[-1.347,42.622,-15.219],"0.8667":[-1.313,42.653,-15.219],"0.9":[-1.294,42.672,-15.219],"0.9333":[-1.287,42.677,-15.219],"0.9667":[-1.287,42.677,-15.219],"1.0":[-1.287,42.676,-15.219],"1.0333":[-1.287,42.673,-15.219],"1.0667":[-1.289,42.666,-15.219],"1.1":[-1.289,42.656,-15.219],"1.1333":[-1.293,42.641,-15.219],"1.1667":[-1.293,42.618,-15.219],"1.2":[-1.296,42.589,-15.219],"1.2333":[-1.3,42.552,-15.219],"1.2667":[-1.303,42.494,-15.219],"1.3":[-1.313,42.409,-15.219],"1.3333":[-1.341,42.304,-15.219],"1.3667":[-1.39,42.188,-15.219],"1.4":[-1.473,42.066,-15.219],"1.4333":[-1.944,41.928,-15.327],"1.4667":[-2.941,41.768,-15.564],"1.5":[-4.157,41.606,-15.801],"1.5333":[-5.279,41.46,-15.909],"1.5667":[-6.484,41.321,-15.909],"1.6":[-7.703,41.199,-15.909],"1.6333":[-8.261,41.147,-15.909],"1.6667":[-8.101,41.724,-15.909],"1.7":[-7.942,42.816,-15.909],"1.7333":[-7.942,44.641,-15.909],"1.7667":[-7.942,45.807,-15.909],"1.8":[-7.942,46.445,-15.909],"1.8333":[-7.942,46.803,-15.909],"1.8667":[-7.942,46.862,-15.909],"1.9":[-7.942,46.745,-15.909],"1.9333":[-7.942,46.624,-15.909],"1.9667":[-8.047,46.538,-15.782],"2.0":[-8.492,46.035,-15.248],"2.0333":[-8.236,44.897,-14.891],"2.0667":[-7.225,42.264,-14.851],"2.1":[-7.01,41.157,-14.834],"2.1333":[-7.19,40.858,-14.86],"2.1667":[-7.371,40.71,-14.886],"2.2":[-7.348,40.932,-14.891],"2.2333":[-6.991,42.531,-14.891],"2.2667":[-6.477,44.929,-14.891],"2.3":[-6.017,47.29,-14.891],"2.3333":[-5.608,49.538,-14.908],"2.3667":[-5.279,51.928,-14.935],"2.4":[-5.244,54.203,-14.912],"2.4333":[-5.294,56.117,-14.832],"2.4667":[-5.26,57.265,-15.146],"2.5":[-5.136,58.179,-15.731],"2.5333":[-4.886,59.044,-16.045],"2.5667":[-4.349,60.067,-15.877],"2.6":[-3.679,60.635,-15.593],"2.6333":[-2.959,60.515,-15.336],"2.6667":[-2.533,59.674,-15.126],"2.7":[-2.535,57.909,-15.013],"2.7333":[-2.544,55.719,-14.943],"2.7667":[-2.568,53.45,-14.919],"2.8":[-2.733,51.168,-14.943],"2.8333":[-2.973,48.72,-15.066],"2.8667":[-3.12,45.825,-15.501],"2.9":[-3.38,44.08,-15.545],"2.9333":[-3.298,43.831,-15.257],"2.9667":[-2.501,43.738,-14.957],"3.0":[-2.399,43.792,-14.891],"3.0333":[-2.651,44.183,-14.891],"3.0667":[-2.63,44.72,-14.891],"3.1":[-2.697,45.265,-15.243],"3.1333":[-3.089,45.766,-17.087],"3.1667":[-3.343,46.345,-18.28],"3.2":[-0.513,47.199,-17.193],"3.2333":[-0.012,48.065,-15.441],"3.2667":[-2.637,48.875,-13.486],"3.3":[-5.002,49.433,-12.226],"3.3333":[-6.851,49.615,-11.914],"3.3667":[-7.93,49.591,-12.115],"3.4":[-8.768,49.5,-12.702],"3.4333":[-9.467,49.312,-13.661],"3.4667":[-9.811,48.784,-15.822],"3.5":[-9.381,48.264,-18.258],"3.5333":[-6.885,47.837,-20.621],"3.5667":[-4.149,47.796,-20.876],"3.6":[-1.176,48.032,-19.749],"3.6333":[-0.836,48.518,-17.925],"3.6667":[-2.125,49.084,-15.46],"3.7":[-3.965,49.018,-13.291],"3.7333":[-5.953,48.893,-11.547],"3.7667":[-7.547,48.806,-11.462],"3.8":[-8.702,48.75,-12.597],"3.8333":[-8.752,48.665,-13.954],"3.8667":[-8.042,48.58,-15.657],"3.9":[-7.584,48.368,-16.541],"3.9333":[-7.771,47.897,-16.329],"3.9667":[-8.147,47.317,-15.907],"4.0":[-8.487,46.896,-15.524],"4.0333":[-8.862,46.67,-15.102],"4.0667":[-9.05,46.164,-14.891],"4.1":[-9.05,44.959,-14.891],"4.1333":[-9.05,43.524,-14.891],"4.1667":[-9.049,42.671,-14.878],"4.2":[-9.045,42.523,-14.809],"4.2333":[-9.063,42.457,-14.721],"4.2667":[-9.079,42.498,-14.645],"4.3":[-9.084,42.762,-14.586],"4.3333":[-9.09,43.092,-14.513],"4.3667":[-9.096,43.504,-14.433],"4.4":[-9.098,43.914,-14.405],"4.4333":[-9.096,44.217,-14.379],"4.4667":[-9.086,44.44,-14.348],"4.5":[-9.072,44.624,-14.314],"4.5333":[-9.054,44.802,-14.283],"4.5667":[-9.032,44.98,-14.255],"4.6":[-9.009,45.151,-14.228],"4.6333":[-8.989,45.316,-14.197],"4.6667":[-8.973,45.475,-14.158],"4.7":[-8.963,45.624,-14.109],"4.7333":[-8.972,45.757,-14.039],"4.7667":[-9.037,45.846,-13.918],"4.8":[-9.127,45.912,-13.777],"4.8333":[-9.208,45.982,-13.652],"4.8667":[-9.293,46.023,-13.542],"4.9":[-9.36,46.02,-13.467],"4.9333":[-9.403,45.985,-13.456],"4.9667":[-9.418,45.925,-13.473],"5.0":[-9.406,45.884,-13.548],"5.0333":[-9.366,45.855,-13.625],"5.0667":[-9.312,45.835,-13.697],"5.1":[-9.256,45.816,-13.764],"5.1333":[-9.21,45.796,-13.827],"5.1667":[-9.168,45.771,-13.896],"5.2":[-9.126,45.741,-13.971],"5.2333":[-9.091,45.713,-14.041],"5.2667":[-9.065,45.692,-14.092],"5.3":[-9.055,45.684,-14.113],"5.3333":[-9.077,45.708,-14.074],"5.3667":[-9.133,45.768,-13.977],"5.4":[-9.21,45.846,-13.843],"5.4333":[-9.294,45.925,-13.697],"5.4667":[-9.371,45.985,-13.561],"5.5":[-9.427,46.009,-13.462],"5.5333":[-9.466,46.009,-13.392],"5.5667":[-9.498,46.008,-13.33],"5.6":[-9.525,46.005,-13.279],"5.6333":[-9.545,45.999,-13.237],"5.6667":[-9.559,45.988,-13.209],"5.7":[-9.566,45.972,-13.194],"5.7333":[-9.566,45.904,-13.213],"5.7667":[-9.559,45.577,-13.363],"5.8":[-9.526,45.148,-13.61],"5.8333":[-9.45,44.831,-13.896],"5.8667":[-9.319,44.782,-14.185],"5.9":[-9.115,44.784,-14.54],"5.9333":[-8.83,44.793,-14.941],"5.9667":[-8.463,44.812,-15.344],"6.0":[-8.007,44.845,-15.709],"6.0333":[-7.45,44.896,-15.994],"6.0667":[-6.794,44.97,-16.155],"6.1":[-5.861,45.269,-16.01],"6.1333":[-4.047,46.603,-14.984],"6.1667":[-2.192,48.167,-13.746],"6.2":[-1.342,48.922,-13.146],"6.2333":[-1.688,48.88,-13.161],"6.2667":[-2.399,48.779,-13.193],"6.3":[-2.988,48.665,-13.219],"6.3333":[-3.064,48.567,-13.223],"6.3667":[-2.927,48.462,-13.219],"6.4":[-2.744,48.359,-13.203],"6.4333":[-2.607,48.265,-13.17],"6.4667":[-2.592,48.198,-13.111],"6.5":[-2.623,48.177,-13.015],"6.5333":[-2.662,48.153,-12.902],"6.5667":[-2.681,48.069,-12.801],"6.6":[-2.618,47.883,-12.714],"6.6333":[-2.448,47.616,-12.627],"6.6667":[-2.198,47.308,-12.542],"6.7":[-1.898,46.993,-12.459],"6.7333":[-1.579,46.706,-12.378],"6.7667":[-1.265,46.484,-12.302],"6.8":[-0.986,46.364,-12.23],"6.8333":[-0.725,46.312,-12.161],"6.8667":[-0.447,46.273,-12.094],"6.9":[-0.162,46.243,-12.027],"6.9333":[0.124,46.223,-11.964],"6.9667":[0.403,46.211,-11.904],"7.0":[0.668,46.203,-11.847],"7.0333":[0.908,46.2,-11.795],"7.0667":[1.12,46.199,-11.748],"7.1":[1.292,46.209,-11.707],"7.1333":[1.423,46.28,-11.674],"7.1667":[1.518,46.399,-11.646],"7.2":[1.585,46.544,-11.626],"7.2333":[1.631,46.69,-11.611],"7.2667":[1.662,46.815,-11.601],"7.3":[1.687,46.895,-11.597],"7.3333":[1.712,46.917,-11.596],"7.3667":[1.732,46.929,-11.596],"7.4":[1.75,46.939,-11.596],"7.4333":[1.765,46.947,-11.596],"7.4667":[1.776,46.953,-11.596],"7.5":[1.785,46.959,-11.596],"7.5333":[1.792,46.965,-11.596],"7.5667":[1.797,46.969,-11.596],"7.6":[1.801,46.973,-11.596],"7.6333":[1.805,46.975,-11.596],"7.6667":[1.808,46.977,-11.596],"7.7":[1.81,46.979,-11.596],"7.7333":[1.814,46.979,-11.596],"7.7667":[1.817,46.979,-11.596],"7.8":[1.823,46.981,-11.596],"7.8333":[1.828,46.981,-11.596],"7.8667":[1.837,46.981,-11.596],"7.9":[1.849,46.957,-11.597],"7.9333":[1.865,46.906,-11.598],"7.9667":[1.883,46.865,-11.602],"8.0":[1.906,46.846,-11.625],"8.0333":[1.927,46.841,-11.655],"8.0667":[1.927,46.841,-11.662],"8.1":[1.909,46.849,-11.663],"8.1333":[1.883,46.86,-11.664],"8.1667":[1.862,46.871,-11.664],"8.2":[1.851,46.873,-11.663],"8.2333":[1.842,46.876,-11.661],"8.2667":[1.835,46.879,-11.658],"8.3":[1.827,46.881,-11.654],"8.3333":[1.819,46.884,-11.651],"8.3667":[1.81,46.887,-11.647],"8.4":[1.801,46.889,-11.642],"8.4333":[1.785,46.897,-11.639],"8.4667":[1.761,46.906,-11.638],"8.5":[1.737,46.914,-11.633],"8.5333":[1.552,46.941,-11.614],"8.5667":[1.155,46.985,-11.586],"8.6":[0.584,47.043,-11.55],"8.6333":[-0.13,47.112,-11.508],"8.6667":[-0.949,47.189,-11.461],"8.7":[-1.84,47.271,-11.41],"8.7333":[-2.767,47.354,-11.356],"8.7667":[-3.697,47.436,-11.301],"8.8":[-4.594,47.514,-11.245],"8.8333":[-5.422,47.584,-11.191],"8.8667":[-6.147,47.645,-11.138],"8.9":[-6.738,47.691,-11.088],"8.9333":[-7.154,47.721,-11.042],"8.9667":[-7.364,47.733,-11.001],"9.0":[-7.451,47.733,-10.967],"9.0333":[-7.519,47.732,-10.936],"9.0667":[-7.57,47.732,-10.908],"9.1":[-7.61,47.731,-10.882],"9.1333":[-7.641,47.729,-10.858],"9.1667":[-7.662,47.727,-10.834],"9.2":[-7.678,47.724,-10.813],"9.2333":[-7.69,47.72,-10.789],"9.2667":[-7.699,47.714,-10.765],"9.3":[-7.711,47.706,-10.739],"9.3333":[-7.725,47.698,-10.708],"9.3667":[-7.744,47.688,-10.676],"9.4":[-7.77,47.676,-10.639],"9.4333":[-7.807,47.662,-10.598],"9.4667":[-7.861,47.636,-10.539],"9.5":[-7.931,47.593,-10.455],"9.5333":[-8.013,47.539,-10.359],"9.5667":[-8.092,47.481,-10.264],"9.6":[-8.166,47.422,-10.178],"9.6333":[-8.221,47.372,-10.113],"9.6667":[-8.253,47.334,-10.082],"9.7":[-8.269,47.31,-10.071],"9.7333":[-8.283,47.29,-10.064],"9.7667":[-8.295,47.276,-10.056],"9.8":[-8.307,47.264,-10.049],"9.8333":[-8.315,47.254,-10.044],"9.8667":[-8.322,47.248,-10.038],"9.9":[-8.33,47.24,-10.034],"9.9333":[-8.334,47.234,-10.031],"9.9667":[-8.34,47.226,-10.027],"10.0":[-8.344,47.216,-10.025],"10.0333":[-8.347,47.204,-10.023],"10.0667":[-8.349,47.189,-10.022],"10.1":[-8.35,47.167,-10.021],"10.1333":[-8.351,47.141,-10.02],"10.1667":[-8.352,47.109,-10.02],"10.2":[-8.352,47.07,-10.02],"10.2333":[-8.352,47.022,-10.02],"10.2667":[-8.352,46.963,-10.02],"10.3":[-8.327,46.823,-10.02],"10.3333":[-8.258,46.556,-10.02],"10.3667":[-8.152,46.215,-10.02],"10.4":[-8.021,45.86,-10.02],"10.4333":[-7.871,45.539,-10.02],"10.4667":[-7.713,45.307,-10.02],"10.5":[-7.555,45.218,-10.02],"10.5333":[-7.396,45.366,-10.02],"10.5667":[-7.218,45.717,-10.02],"10.6":[-7.017,46.135,-10.02],"10.6333":[-6.778,46.485,-10.02],"10.6667":[-6.497,46.632,-10.02],"10.7":[-6.146,46.53,-10.552],"10.7333":[-5.735,46.287,-11.78],"10.7667":[-5.291,46.018,-13.145],"10.8":[-4.854,45.832,-14.093],"10.8333":[-4.451,45.822,-14.239],"10.8667":[-4.092,45.937,-14.239],"10.9":[-3.711,46.105,-14.239],"10.9333":[-3.494,46.296,-14.239],"10.9667":[-3.603,46.467,-14.239],"11.0":[-3.831,46.705,-14.239],"11.0333":[-4.04,47.3,-14.239],"11.0667":[-4.2,47.891,-14.239],"11.1":[-4.339,47.692,-14.239],"11.1333":[-4.399,47.16,-14.239],"11.1667":[-4.217,45.89,-14.239],"11.2":[-3.686,46.398,-15.325],"11.2333":[-3.321,45.826,-17.005],"11.2667":[-2.828,44.91,-17.308],"11.3":[-2.117,44.587,-17.186],"11.3333":[-1.828,45.051,-17.101],"11.3667":[-1.688,46.053,-16.998],"11.4":[-1.969,47.599,-16.127],"11.4333":[-2.415,48.953,-16.157],"11.4667":[-2.704,48.922,-16.802],"11.5":[-2.837,47.314,-17.252],"11.5333":[-2.885,46.274,-17.457],"11.5667":[-2.425,49.014,-17.071],"11.6":[-1.964,53.473,-16.348],"11.6333":[-2.059,56.98,-15.454],"11.6667":[-2.234,59.249,-14.856],"11.7":[-2.442,60.555,-14.537],"11.7333":[-2.848,61.568,-14.439],"11.7667":[-3.462,62.033,-14.428],"11.8":[-3.984,61.946,-14.544],"11.8333":[-4.448,61.583,-14.771],"11.8667":[-4.826,60.961,-15.076],"11.9":[-4.819,58.941,-15.311],"11.9333":[-4.331,55.454,-15.559],"11.9667":[-3.785,51.202,-16.387],"12.0":[-4.03,47.584,-16.869],"12.0333":[-5.681,44.74,-16.93],"12.0667":[-7.086,41.652,-16.03],"12.1":[-7.923,40.674,-14.685],"12.1333":[-8.469,41.298,-13.793],"12.1667":[-8.571,42.235,-13.271],"12.2":[-8.567,43.094,-13.121],"12.2333":[-8.518,43.41,-13.304],"12.2667":[-8.44,43.53,-13.637],"12.3":[-8.398,43.536,-13.841],"12.3333":[-8.372,43.512,-13.986],"12.3667":[-8.354,43.473,-14.102],"12.4":[-8.346,43.437,-14.198],"12.4333":[-8.345,43.41,-14.273],"12.4667":[-8.347,43.383,-14.316],"12.5":[-8.351,43.362,-14.337],"12.5333":[-8.355,43.353,-14.34],"12.5667":[-8.359,43.365,-14.337],"12.6":[-8.363,43.386,-14.329],"12.6333":[-8.366,43.407,-14.322],"12.6667":[-8.368,43.416,-14.316]}},"lefthand_1":{"position":{"0.0":[0,0,0],"4.7667":[-2.6907,-0.7467,-0.7893],"7.0333":[-2.6907,-0.7467,-0.7893],"7.1667":[0,0,0]},"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[0,0,0],"2.7":[0,0,12.5],"3.0333":[0,0,37.5],"3.3":[0,0,-35],"3.7667":[0,0,37.5],"6.8333":[0,0,37.5],"7.1":[0,0,15],"10.5333":[0,0,15],"10.7333":[0,0,37.5],"10.8333":[67.5,0,-16.656],"10.9667":[51.7163,28.7945,-36.063],"11.0333":[15.6369,18.8173,-19.8803],"11.3":[21.319,-21.0917,44.8507],"11.7":[0,0,-7.5],"12.0333":[0,0,0]},"position":[0,2,0],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.067,0.042,-0.027],"0.0333":[-0.227,0.153,-0.102],"0.0667":[-0.419,0.29,-0.187],"0.1":[-0.58,0.426,-0.263],"0.1333":[-0.641,0.531,-0.289],"0.1667":[-0.449,0.59,-0.129],"0.2":[-0.035,0.628,0.224],"0.2333":[0.389,0.647,0.585],"0.2667":[0.581,0.65,0.745],"0.3":[0.57,0.619,0.695],"0.3333":[0.539,0.541,0.577],"0.3667":[0.497,0.431,0.409],"0.4":[0.456,0.321,0.242],"0.4333":[0.406,0.227,0.091],"0.4667":[0.375,0.169,-0.001],"0.5":[0.345,0.137,-0.051],"0.5333":[0.315,0.111,-0.091],"0.5667":[0.283,0.09,-0.128],"0.6":[0.257,0.074,-0.158],"0.6333":[0.224,0.06,-0.184],"0.6667":[0.191,0.049,-0.208],"0.7":[0.165,0.04,-0.228],"0.7333":[0.139,0.033,-0.241],"0.7667":[0.107,0.028,-0.254],"0.8":[0.087,0.024,-0.261],"0.8333":[0.061,0.019,-0.268],"0.8667":[0.035,0.014,-0.271],"0.9":[0.015,0.007,-0.274],"0.9333":[0.002,0,-0.274],"0.9667":[-0.017,-0.009,-0.274],"1.0":[-0.03,-0.013,-0.271],"1.0333":[-0.043,-0.02,-0.264],"1.0667":[-0.056,-0.025,-0.254],"1.1":[-0.062,-0.03,-0.244],"1.1333":[-0.073,-0.034,-0.234],"1.1667":[-0.084,-0.034,-0.213],"1.2":[-0.095,-0.038,-0.203],"1.2333":[-0.095,-0.041,-0.182],"1.2667":[-0.106,-0.045,-0.161],"1.3":[-0.106,-0.049,-0.14],"1.3333":[-0.106,-0.053,-0.109],"1.3667":[-0.117,-0.061,-0.088],"1.4":[-0.117,-0.065,-0.057],"1.4333":[-0.117,-0.072,-0.026],"1.4667":[-0.117,-0.08,-0.005],"1.5":[-0.095,-0.115,0.057],"1.5333":[0.004,-0.161,0.151],"1.5667":[0.19,-0.204,0.254],"1.6":[0.421,-0.239,0.337],"1.6333":[0.53,-0.259,0.378],"1.6667":[0.381,-0.175,0.14],"1.7":[0.109,-0.04,-0.222],"1.7333":[-0.084,0.017,-0.285],"1.7667":[-0.266,0.048,-0.244],"1.8":[-0.448,0.07,-0.176],"1.8333":[-0.63,0.087,-0.093],"1.8667":[-0.789,0.097,-0.011],"1.9":[-0.902,0.103,0.057],"1.9333":[-0.971,0.106,0.097],"1.9667":[-0.902,0.102,0.095],"2.0":[-0.459,0.076,0.047],"2.0333":[-0.005,0.045,-0.01],"2.0667":[0.143,0.023,-0.075],"2.1":[0.552,-0.041,-0.077],"2.1333":[1.29,-0.146,-0.001],"2.1667":[1.893,-0.229,0.076],"2.2":[1.915,-0.235,0.058],"2.2333":[1.454,-0.172,-0.137],"2.2667":[0.808,-0.082,-0.371],"2.3":[0.26,0.002,-0.485],"2.3333":[-0.16,0.077,-0.445],"2.3667":[-0.615,0.163,-0.34],"2.4":[-1.07,0.251,-0.197],"2.4333":[-1.482,0.334,-0.041],"2.4667":[-1.823,0.402,0.102],"2.5":[-2.057,0.449,0.206],"2.5333":[-2.142,0.466,0.247],"2.5667":[-2.135,0.461,0.24],"2.6":[-2.128,0.443,0.218],"2.6333":[-2.107,0.414,0.184],"2.6667":[-2.071,0.376,0.142],"2.7":[-2.022,0.332,0.094],"2.7333":[-1.937,0.282,0.04],"2.7667":[-1.83,0.226,-0.017],"2.8":[-1.693,0.168,-0.074],"2.8333":[-1.515,0.107,-0.128],"2.8667":[-1.294,0.047,-0.176],"2.9":[-0.883,-0.028,-0.224],"2.9333":[0.228,-0.177,-0.282],"2.9667":[1.253,-0.307,-0.325],"3.0":[1.401,-0.323,-0.327],"3.0333":[1.235,-0.279,-0.293],"3.0667":[0.958,-0.207,-0.236],"3.1":[0.639,-0.121,-0.166],"3.1333":[0.338,-0.039,-0.096],"3.1667":[0.123,0.025,-0.037],"3.2":[-0.005,0.071,0.018],"3.2333":[-0.091,0.109,0.081],"3.2667":[-0.146,0.141,0.14],"3.3":[-0.171,0.169,0.188],"3.3333":[-0.177,0.192,0.216],"3.3667":[-0.162,0.207,0.216],"3.4":[-0.129,0.214,0.168],"3.4333":[-0.077,0.218,0.092],"3.4667":[-0.019,0.22,0.017],"3.5":[0.04,0.225,-0.044],"3.5333":[0.092,0.229,-0.099],"3.5667":[0.138,0.232,-0.161],"3.6":[0.164,0.235,-0.195],"3.6333":[0.164,0.237,-0.195],"3.6667":[0.131,0.238,-0.147],"3.7":[0.086,0.239,-0.086],"3.7333":[0.027,0.239,-0.017],"3.7667":[-0.045,0.239,0.031],"3.8":[-0.11,0.237,0.079],"3.8333":[-0.162,0.234,0.133],"3.8667":[-0.201,0.229,0.175],"3.9":[-0.214,0.224,0.202],"3.9333":[-0.205,0.219,0.199],"3.9667":[-0.172,0.207,0.167],"4.0":[-0.123,0.188,0.113],"4.0333":[-0.066,0.169,0.059],"4.0667":[0,0.133,0.021],"4.1":[0.116,0.083,0.005],"4.1333":[0.247,0.022,0],"4.1667":[0.272,-0.015,0.005],"4.2":[0.239,-0.052,0.048],"4.2333":[0.19,-0.089,0.118],"4.2667":[0.132,-0.12,0.199],"4.3":[0.074,-0.144,0.27],"4.3333":[0.016,-0.157,0.313],"4.3667":[-0.017,-0.163,0.313],"4.4":[-0.058,-0.15,0.302],"4.4333":[-0.099,-0.138,0.275],"4.4667":[-0.14,-0.125,0.243],"4.5":[-0.174,-0.102,0.2],"4.5333":[-0.215,-0.082,0.159],"4.5667":[-0.244,-0.058,0.118],"4.6":[-0.279,-0.038,0.077],"4.6333":[-0.302,-0.022,0.04],"4.6667":[-0.32,-0.009,0.017],"4.7":[-0.326,-0.002,0.003],"4.7333":[-0.32,-0.005,0.003],"4.7667":[-0.279,-0.032,0.04],"4.8":[-0.203,-0.075,0.099],"4.8333":[-0.122,-0.125,0.163],"4.8667":[-0.052,-0.172,0.223],"4.9":[-0.005,-0.199,0.255],"4.9333":[-0.005,-0.202,0.259],"4.9667":[-0.017,-0.192,0.25],"5.0":[-0.046,-0.179,0.232],"5.0333":[-0.087,-0.159,0.205],"5.0667":[-0.133,-0.133,0.171],"5.1":[-0.184,-0.108,0.14],"5.1333":[-0.236,-0.081,0.103],"5.1667":[-0.287,-0.057,0.072],"5.2":[-0.33,-0.035,0.046],"5.2333":[-0.364,-0.016,0.02],"5.2667":[-0.39,-0.005,0.005],"5.3":[-0.399,0,-0.001],"5.3333":[-0.373,-0.011,0.02],"5.3667":[-0.313,-0.041,0.077],"5.4":[-0.227,-0.078,0.15],"5.4333":[-0.133,-0.116,0.223],"5.4667":[-0.056,-0.144,0.28],"5.5":[-0.004,-0.157,0.301],"5.5333":[0.03,-0.146,0.295],"5.5667":[0.064,-0.117,0.28],"5.6":[0.09,-0.076,0.259],"5.6333":[0.121,-0.027,0.229],"5.6667":[0.141,0.037,0.197],"5.7":[0.16,0.093,0.161],"5.7333":[0.174,0.148,0.12],"5.7667":[0.183,0.194,0.084],"5.8":[0.193,0.231,0.048],"5.8333":[0.198,0.249,0.016],"5.8667":[0.198,0.24,-0.016],"5.9":[0.188,0.148,-0.048],"5.9333":[0.174,-0.008,-0.084],"5.9667":[0.15,-0.183,-0.121],"6.0":[0.122,-0.367,-0.153],"6.0333":[0.079,-0.524,-0.18],"6.0667":[0.032,-0.616,-0.193],"6.1":[-0.045,-0.542,-0.157],"6.1333":[-0.203,-0.054,0.075],"6.1667":[-0.363,0.545,0.354],"6.2":[-0.431,0.877,0.49],"6.2333":[-0.361,0.925,0.3],"6.2667":[-0.199,0.947,-0.08],"6.3":[-0.052,0.956,-0.4],"6.3333":[0.012,0.956,-0.442],"6.3667":[0.035,0.956,-0.338],"6.4":[0.043,0.956,-0.191],"6.4333":[0.051,0.956,-0.052],"6.4667":[0.081,0.951,0.043],"6.5":[0.124,0.924,0.122],"6.5333":[0.175,0.879,0.208],"6.5667":[0.225,0.811,0.295],"6.6":[0.276,0.734,0.382],"6.6333":[0.326,0.649,0.46],"6.6667":[0.376,0.563,0.53],"6.7":[0.412,0.472,0.59],"6.7333":[0.447,0.391,0.633],"6.7667":[0.465,0.317,0.66],"6.8":[0.469,0.259,0.675],"6.8333":[0.459,0.209,0.652],"6.8667":[0.418,0.162,0.601],"6.9":[0.361,0.12,0.52],"6.9333":[0.294,0.084,0.425],"6.9667":[0.218,0.052,0.322],"7.0":[0.146,0.029,0.212],"7.0333":[0.08,0.011,0.117],"7.0667":[0.023,0,0.029],"7.1":[-0.017,0.003,-0.029],"7.1333":[-0.048,0.027,-0.081],"7.1667":[-0.069,0.063,-0.125],"7.2":[-0.089,0.111,-0.154],"7.2333":[-0.099,0.161,-0.191],"7.2667":[-0.11,0.206,-0.213],"7.3":[-0.12,0.237,-0.235],"7.3333":[-0.13,0.254,-0.251],"7.3667":[-0.139,0.266,-0.267],"7.4":[-0.147,0.274,-0.278],"7.4333":[-0.156,0.28,-0.295],"7.4667":[-0.164,0.283,-0.306],"7.5":[-0.172,0.286,-0.317],"7.5333":[-0.181,0.289,-0.333],"7.5667":[-0.189,0.289,-0.339],"7.6":[-0.193,0.289,-0.35],"7.6333":[-0.198,0.292,-0.361],"7.6667":[-0.206,0.292,-0.366],"7.7":[-0.21,0.295,-0.372],"7.7333":[-0.214,0.298,-0.377],"7.7667":[-0.214,0.304,-0.383],"7.8":[-0.219,0.31,-0.388],"7.8333":[-0.219,0.321,-0.388],"7.8667":[-0.219,0.333,-0.388],"7.9":[-0.191,0.356,-0.36],"7.9333":[-0.119,0.401,-0.287],"7.9667":[-0.021,0.454,-0.189],"8.0":[0.078,0.506,-0.092],"8.0333":[0.149,0.551,-0.018],"8.0667":[0.185,0.581,0.014],"8.1":[0.212,0.604,0.039],"8.1333":[0.239,0.634,0.055],"8.1667":[0.257,0.664,0.08],"8.2":[0.275,0.694,0.088],"8.2333":[0.284,0.716,0.104],"8.2667":[0.302,0.746,0.113],"8.3":[0.311,0.769,0.121],"8.3333":[0.311,0.791,0.129],"8.3667":[0.32,0.806,0.129],"8.4":[0.32,0.821,0.137],"8.4333":[0.325,0.836,0.138],"8.4667":[0.329,0.842,0.139],"8.5":[0.329,0.842,0.139],"8.5333":[0.32,0.836,0.138],"8.5667":[0.298,0.804,0.134],"8.6":[0.267,0.759,0.128],"8.6333":[0.223,0.708,0.121],"8.6667":[0.174,0.637,0.11],"8.7":[0.121,0.567,0.1],"8.7333":[0.063,0.483,0.088],"8.7667":[0.005,0.406,0.075],"8.8":[-0.048,0.323,0.063],"8.8333":[-0.097,0.24,0.049],"8.8667":[-0.137,0.169,0.036],"8.9":[-0.172,0.099,0.023],"8.9333":[-0.194,0.047,0.012],"8.9667":[-0.202,0.002,0.003],"9.0":[-0.195,-0.038,-0.009],"9.0333":[-0.187,-0.064,-0.027],"9.0667":[-0.179,-0.09,-0.039],"9.1":[-0.164,-0.11,-0.051],"9.1333":[-0.141,-0.13,-0.068],"9.1667":[-0.125,-0.15,-0.08],"9.2":[-0.102,-0.163,-0.098],"9.2333":[-0.079,-0.169,-0.11],"9.2667":[-0.056,-0.176,-0.122],"9.3":[-0.041,-0.182,-0.133],"9.3333":[-0.026,-0.189,-0.145],"9.3667":[-0.01,-0.189,-0.151],"9.4":[-0.003,-0.189,-0.157],"9.4333":[-0.003,-0.189,-0.157],"9.4667":[-0.026,-0.182,-0.139],"9.5":[-0.106,-0.159,-0.088],"9.5333":[-0.213,-0.126,-0.021],"9.5667":[-0.33,-0.086,0.056],"9.6":[-0.447,-0.049,0.123],"9.6333":[-0.532,-0.018,0.17],"9.6667":[-0.585,-0.002,0.189],"9.7":[-0.617,0.012,0.189],"9.7333":[-0.638,0.019,0.189],"9.7667":[-0.659,0.025,0.189],"9.8":[-0.681,0.029,0.189],"9.8333":[-0.691,0.032,0.189],"9.8667":[-0.702,0.035,0.189],"9.9":[-0.713,0.035,0.184],"9.9333":[-0.723,0.035,0.184],"9.9667":[-0.734,0.039,0.184],"10.0":[-0.745,0.039,0.179],"10.0333":[-0.745,0.04,0.175],"10.0667":[-0.745,0.044,0.174],"10.1":[-0.756,0.048,0.169],"10.1333":[-0.756,0.052,0.164],"10.1667":[-0.756,0.06,0.153],"10.2":[-0.756,0.069,0.148],"10.2333":[-0.756,0.081,0.143],"10.2667":[-0.756,0.094,0.132],"10.3":[-0.682,0.135,0.09],"10.3333":[-0.502,0.206,0],"10.3667":[-0.249,0.294,-0.115],"10.4":[0.035,0.39,-0.241],"10.4333":[0.288,0.475,-0.355],"10.4667":[0.467,0.535,-0.438],"10.5":[0.54,0.56,-0.475],"10.5333":[0.488,0.535,-0.438],"10.5667":[0.34,0.472,-0.351],"10.6":[0.144,0.381,-0.216],"10.6333":[-0.074,0.276,-0.059],"10.6667":[-0.27,0.169,0.111],"10.7":[-0.414,0.072,0.282],"10.7333":[-0.472,0.001,0.44],"10.7667":[-0.368,-0.052,0.604],"10.8":[-0.103,-0.093,0.809],"10.8333":[0.242,-0.126,1.006],"10.8667":[0.582,-0.147,1.19],"10.9":[0.847,-0.161,1.32],"10.9333":[0.956,-0.168,1.367],"10.9667":[0.847,-0.138,1.286],"11.0":[0.594,-0.057,1.088],"11.0333":[0.278,0.059,0.843],"11.0667":[0.002,0.201,0.61],"11.1":[-0.264,0.446,0.405],"11.1333":[-0.527,0.75,0.189],"11.1667":[-0.647,0.895,0.001],"11.2":[-0.402,0.78,-0.168],"11.2333":[0.148,0.521,-0.33],"11.2667":[0.709,0.22,-0.467],"11.3":[0.956,0,-0.585],"11.3333":[0.906,-0.145,-0.683],"11.3667":[0.762,-0.291,-0.773],"11.4":[0.543,-0.432,-0.856],"11.4333":[0.282,-0.548,-0.924],"11.4667":[-0.006,-0.645,-0.998],"11.5":[-0.293,-0.705,-1.072],"11.5333":[-0.564,-0.727,-1.146],"11.5667":[-0.843,-0.724,-1.227],"11.6":[-1.165,-0.728,-1.315],"11.6333":[-1.518,-0.725,-1.412],"11.6667":[-1.881,-0.723,-1.509],"11.7":[-2.245,-0.721,-1.605],"11.7333":[-2.589,-0.716,-1.697],"11.7667":[-2.912,-0.711,-1.779],"11.8":[-3.185,-0.701,-1.849],"11.8333":[-3.397,-0.692,-1.904],"11.8667":[-3.539,-0.679,-1.936],"11.9":[-3.59,-0.662,-1.951],"11.9333":[-3.055,-0.602,-1.791],"11.9667":[-1.784,-0.479,-1.396],"12.0":[-0.27,-0.316,-0.886],"12.0333":[1.002,-0.148,-0.382],"12.0667":[1.538,0,-0.001],"12.1":[1.184,0.149,0.245],"12.1333":[0.396,0.31,0.418],"12.1667":[-0.391,0.439,0.517],"12.2":[-0.746,0.487,0.553],"12.2333":[-0.65,0.388,0.483],"12.2667":[-0.431,0.164,0.323],"12.3":[-0.192,-0.059,0.153],"12.3333":[-0.043,-0.163,0.039],"12.3667":[0.002,-0.116,0.001],"12.4":[0.028,-0.023,-0.018],"12.4333":[0.028,0.06,-0.023],"12.4667":[0.028,0.065,-0.018],"12.5":[0.008,0.023,-0.004],"12.5333":[-0.011,-0.018,0.011],"12.5667":[-0.018,-0.023,0.011],"12.6":[-0.011,-0.018,0.006],"12.6333":[-0.005,-0.008,0.001],"12.6667":[0.002,-0.002,0.001]}}},"sound_effects":{"0.0":{"effect":"melee.thieve_sea.inspect"}}},"run":{"loop":true,"animation_length":0.7167,"bones":{"lefthand_1":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.15":{"post":[0,0,-9],"lerp_mode":"catmullrom"},"0.2333":{"post":[0,0,-1.39],"lerp_mode":"catmullrom"},"0.7167":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,0.125,0],"lerp_mode":"catmullrom"},"0.15":{"post":[0,-0.125,0],"lerp_mode":"catmullrom"},"0.3833":{"post":[1.75,-8.9375,0],"lerp_mode":"catmullrom"},"0.5":{"post":[3.9125,-11.5175,0],"lerp_mode":"catmullrom"},"0.5667":{"post":[0,-5.38,0],"lerp_mode":"catmullrom"},"0.7167":{"post":[0,0.125,0],"lerp_mode":"catmullrom"}}},"knife_and_right":{"rotation":{"0.4":{"pre":[-6.8765,5.1486,9.232],"post":[-6.8765,5.1486,9.232],"lerp_mode":"catmullrom"},"0.6":{"post":[0.5,0,0],"lerp_mode":"catmullrom"},"0.7167":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":[-6.8075,-15.16,11.6025],"0.15":[-6.8112,-15.1617,11.6061],"0.2667":{"pre":[-6.38,-7.46,2.41],"post":[-6.38,-7.46,2.41],"lerp_mode":"catmullrom"},"0.4":{"post":[-6.0075,-3.4902,-2.7123],"lerp_mode":"catmullrom"},"0.5167":{"post":[-4.682,-4.8737,-4.4094],"lerp_mode":"catmullrom"},"0.6":{"post":[-2.375,-14.2493,10.8357],"lerp_mode":"catmullrom"},"0.7167":{"post":[-0.375,-16.5625,9.0625],"lerp_mode":"catmullrom"}}}}},"run_start":{"loop":"hold_on_last_frame","animation_length":0.25,"bones":{"lefthand_1":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,0.125,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0.125,0],"lerp_mode":"catmullrom"}}},"knife_and_right":{"rotation":[0,0,0],"position":{"0.0":[0,0,0],"0.0833":{"pre":[-3.9362,-12.9742,10.7936],"post":[-3.9362,-12.9742,10.7936],"lerp_mode":"catmullrom"}}}}},"run_end":{"animation_length":0.55,"bones":{"lefthand":{"rotation":{"0.0833":{"pre":[9,0,0],"post":[9,0,0],"lerp_mode":"catmullrom"},"0.2167":{"post":[2.125,4.3125,-1.4375],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,0.875,-0.3125],"lerp_mode":"catmullrom"},"0.4333":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,-0.125,0.125],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,-0.0625,0],"lerp_mode":"catmullrom"},"0.2333":{"post":[0,0,-0.0625],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,0,0.0625],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"lefthand_1":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.25":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":{"post":[0,2.25,0],"lerp_mode":"catmullrom"},"0.0833":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.25":{"post":[0,0,0],"lerp_mode":"catmullrom"}}},"knife_and_right":{"rotation":{"0.0":{"post":[-6.8765,5.1486,9.232],"lerp_mode":"catmullrom"},"0.2167":{"post":[-1.1875,1.75,1.3125],"lerp_mode":"catmullrom"},"0.3167":{"post":[0.25,0.625,-0.125],"lerp_mode":"catmullrom"},"0.4333":{"post":[0,0,-0.0625],"lerp_mode":"catmullrom"},"0.55":{"post":[0,0,0.0625],"lerp_mode":"catmullrom"},"0.6667":{"post":[0,0,0],"lerp_mode":"catmullrom"}},"position":{"0.0":[-6.8075,-15.16,11.6025],"0.1333":{"pre":[-1.5,-5,3.625],"post":[-1.5,-5,3.625],"lerp_mode":"catmullrom"},"0.2333":{"post":[0.25,-1.375,-0.1875],"lerp_mode":"catmullrom"},"0.3167":{"post":[0,0,-0.25],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"}}}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/thieve_sea.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/thieve_sea.geo.json new file mode 100644 index 0000000..44bf9d8 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/thieve_sea.geo.json @@ -0,0 +1 @@ +{"format_version":"1.21.0","minecraft:geometry":[{"description":{"identifier":"geometry.mercy","texture_width":128,"texture_height":128,"visible_bounds_width":24,"visible_bounds_height":9,"visible_bounds_offset":[0,0.5,0]},"bones":[{"name":"root","pivot":[0,9.6875,4.3375]},{"name":"bone5","parent":"root","pivot":[0,9.6875,4.3375]},{"name":"fn_lefthand","parent":"bone5","pivot":[-6,19,0]},{"name":"lefthand","parent":"fn_lefthand","pivot":[-6,19,0]},{"name":"lefthand_1","parent":"lefthand","pivot":[-6,19,0]},{"name":"lefthand_pos","parent":"lefthand_1","pivot":[0,8,0],"cubes":[{"origin":[-7,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[12,0],"uv_size":[3,12]},"east":{"uv":[0,0],"uv_size":[4,12]},"south":{"uv":[4,12],"uv_size":[3,12]},"west":{"uv":[4,0],"uv_size":[4,12]},"up":{"uv":[13,12],"uv_size":[3,4]},"down":{"uv":[15,4],"uv_size":[3,-4]}}}]},{"name":"knife_and_right","parent":"bone5","pivot":[6,19,0]},{"name":"righthand","parent":"knife_and_right","pivot":[6,19,0]},{"name":"righthand_1","parent":"righthand","pivot":[6,19,0]},{"name":"righthand_pos","parent":"righthand_1","pivot":[0,8,0],"cubes":[{"origin":[4,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[7,12],"uv_size":[3,12]},"east":{"uv":[8,0],"uv_size":[4,12]},"south":{"uv":[10,12],"uv_size":[3,12]},"west":{"uv":[0,12],"uv_size":[4,12]},"up":{"uv":[15,4],"uv_size":[3,4]},"down":{"uv":[15,12],"uv_size":[3,-4]}}}]},{"name":"h1","parent":"knife_and_right","pivot":[0.2498,0.5802,3.0789]},{"name":"h1_fixed","parent":"h1","pivot":[0.2498,0.5802,3.0789]},{"name":"h2","parent":"h1_fixed","pivot":[0.3,0.5802,5.0789],"cubes":[{"origin":[-0.4,0.5802,-1.2211],"size":[0.8,0.4,9.1],"uv":{"north":{"uv":[7,25],"uv_size":[0.75,0.5]},"east":{"uv":[8,0],"uv_size":[9,0.5]},"south":{"uv":[25,8],"uv_size":[0.75,0.5]},"west":{"uv":[8,1],"uv_size":[9,0.5]},"up":{"uv":[0,0],"uv_size":[0.75,9]},"down":{"uv":[1,9],"uv_size":[0.75,-9]}}},{"origin":[-0.4,-0.2198,-5.1211],"size":[0.8,0.4,1.4],"uv":{"north":{"uv":[9,25],"uv_size":[0.75,0.5]},"east":{"uv":[20,12],"uv_size":[1.5,0.5]},"south":{"uv":[25,9],"uv_size":[0.75,0.5]},"west":{"uv":[20,13],"uv_size":[1.5,0.5]},"up":{"uv":[17,13],"uv_size":[0.75,1.5]},"down":{"uv":[18,1.5],"uv_size":[0.75,-1.5]}}},{"origin":[-0.4,0.5802,-5.1211],"size":[0.8,0.4,1.4],"uv":{"north":{"uv":[10,25],"uv_size":[0.75,0.5]},"east":{"uv":[20,14],"uv_size":[1.5,0.5]},"south":{"uv":[25,10],"uv_size":[0.75,0.5]},"west":{"uv":[20,15],"uv_size":[1.5,0.5]},"up":{"uv":[18,2],"uv_size":[0.75,1.5]},"down":{"uv":[5,19.5],"uv_size":[0.75,-1.5]}}},{"origin":[-0.4008,-0.2206,-3.6219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[11,25],"uv_size":[0.75,0.5]},"east":{"uv":[37,29],"uv_size":[0.25,0.5]},"south":{"uv":[12,25],"uv_size":[0.75,0.5]},"west":{"uv":[30,37],"uv_size":[0.25,0.5]},"up":{"uv":[31,19],"uv_size":[0.75,0.25]},"down":{"uv":[20,31.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.5794,-3.6219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[25,12],"uv_size":[0.75,0.5]},"east":{"uv":[37,30],"uv_size":[0.25,0.5]},"south":{"uv":[13,25],"uv_size":[0.75,0.5]},"west":{"uv":[31,37],"uv_size":[0.25,0.5]},"up":{"uv":[31,20],"uv_size":[0.75,0.25]},"down":{"uv":[21,31.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,-0.2206,-3.3219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[25,13],"uv_size":[0.75,0.5]},"east":{"uv":[37,31],"uv_size":[0.25,0.5]},"south":{"uv":[14,25],"uv_size":[0.75,0.5]},"west":{"uv":[32,37],"uv_size":[0.25,0.5]},"up":{"uv":[31,21],"uv_size":[0.75,0.25]},"down":{"uv":[22,31.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.5794,-3.3219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[25,14],"uv_size":[0.75,0.5]},"east":{"uv":[37,32],"uv_size":[0.25,0.5]},"south":{"uv":[15,25],"uv_size":[0.75,0.5]},"west":{"uv":[33,37],"uv_size":[0.25,0.5]},"up":{"uv":[31,22],"uv_size":[0.75,0.25]},"down":{"uv":[23,31.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,-0.2206,-3.0219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[25,15],"uv_size":[0.75,0.5]},"east":{"uv":[37,33],"uv_size":[0.25,0.5]},"south":{"uv":[16,25],"uv_size":[0.75,0.5]},"west":{"uv":[34,37],"uv_size":[0.25,0.5]},"up":{"uv":[31,23],"uv_size":[0.75,0.25]},"down":{"uv":[24,31.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.5794,-3.0219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[25,16],"uv_size":[0.75,0.5]},"east":{"uv":[37,34],"uv_size":[0.25,0.5]},"south":{"uv":[25,17],"uv_size":[0.75,0.5]},"west":{"uv":[35,37],"uv_size":[0.25,0.5]},"up":{"uv":[31,24],"uv_size":[0.75,0.25]},"down":{"uv":[25,31.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,-0.2206,-2.7219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[18,25],"uv_size":[0.75,0.5]},"east":{"uv":[37,35],"uv_size":[0.25,0.5]},"south":{"uv":[25,18],"uv_size":[0.75,0.5]},"west":{"uv":[36,37],"uv_size":[0.25,0.5]},"up":{"uv":[31,25],"uv_size":[0.75,0.25]},"down":{"uv":[26,31.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.5794,-2.7219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[25,19],"uv_size":[0.75,0.5]},"east":{"uv":[37,36],"uv_size":[0.25,0.5]},"south":{"uv":[25,20],"uv_size":[0.75,0.5]},"west":{"uv":[37,37],"uv_size":[0.25,0.5]},"up":{"uv":[31,26],"uv_size":[0.75,0.25]},"down":{"uv":[27,31.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,-0.2206,-2.4219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[21,25],"uv_size":[0.75,0.5]},"east":{"uv":[0,38],"uv_size":[0.25,0.5]},"south":{"uv":[25,21],"uv_size":[0.75,0.5]},"west":{"uv":[38,0],"uv_size":[0.25,0.5]},"up":{"uv":[31,27],"uv_size":[0.75,0.25]},"down":{"uv":[28,31.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.5794,-2.4219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[22,25],"uv_size":[0.75,0.5]},"east":{"uv":[1,38],"uv_size":[0.25,0.5]},"south":{"uv":[25,22],"uv_size":[0.75,0.5]},"west":{"uv":[38,1],"uv_size":[0.25,0.5]},"up":{"uv":[31,28],"uv_size":[0.75,0.25]},"down":{"uv":[29,31.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,-0.2206,-2.1219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[23,25],"uv_size":[0.75,0.5]},"east":{"uv":[2,38],"uv_size":[0.25,0.5]},"south":{"uv":[25,23],"uv_size":[0.75,0.5]},"west":{"uv":[38,2],"uv_size":[0.25,0.5]},"up":{"uv":[31,29],"uv_size":[0.75,0.25]},"down":{"uv":[30,31.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.5794,-2.1219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[24,25],"uv_size":[0.75,0.5]},"east":{"uv":[3,38],"uv_size":[0.25,0.5]},"south":{"uv":[25,24],"uv_size":[0.75,0.5]},"west":{"uv":[38,3],"uv_size":[0.25,0.5]},"up":{"uv":[31,30],"uv_size":[0.75,0.25]},"down":{"uv":[31,31.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,-0.2206,-1.8219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[25,25],"uv_size":[0.75,0.5]},"east":{"uv":[4,38],"uv_size":[0.25,0.5]},"south":{"uv":[0,26],"uv_size":[0.75,0.5]},"west":{"uv":[38,4],"uv_size":[0.25,0.5]},"up":{"uv":[0,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,0.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.5794,-1.8219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[26,0],"uv_size":[0.75,0.5]},"east":{"uv":[5,38],"uv_size":[0.25,0.5]},"south":{"uv":[26,1],"uv_size":[0.75,0.5]},"west":{"uv":[38,5],"uv_size":[0.25,0.5]},"up":{"uv":[1,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,1.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,-0.2206,-1.5219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[2,26],"uv_size":[0.75,0.5]},"east":{"uv":[6,38],"uv_size":[0.25,0.5]},"south":{"uv":[4,26],"uv_size":[0.75,0.5]},"west":{"uv":[38,6],"uv_size":[0.25,0.5]},"up":{"uv":[2,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,2.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.5794,-1.5219],"size":[0.8016,0.4016,0.2016],"inflate":-0.001,"uv":{"north":{"uv":[26,6],"uv_size":[0.75,0.5]},"east":{"uv":[7,38],"uv_size":[0.25,0.5]},"south":{"uv":[7,26],"uv_size":[0.75,0.5]},"west":{"uv":[38,7],"uv_size":[0.25,0.5]},"up":{"uv":[3,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,3.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3,-0.2198,-3.7211],"size":[0.6,0.4,2.5],"uv":{"north":{"uv":[29,9],"uv_size":[0.5,0.5]},"east":{"uv":[16,10],"uv_size":[2.5,0.5]},"south":{"uv":[29,10],"uv_size":[0.5,0.5]},"west":{"uv":[16,11],"uv_size":[2.5,0.5]},"up":{"uv":[6,16],"uv_size":[0.5,2.5]},"down":{"uv":[7,18.5],"uv_size":[0.5,-2.5]}}},{"origin":[-0.3,0.5802,-3.7211],"size":[0.6,0.4,2.5],"uv":{"north":{"uv":[11,29],"uv_size":[0.5,0.5]},"east":{"uv":[16,12],"uv_size":[2.5,0.5]},"south":{"uv":[29,11],"uv_size":[0.5,0.5]},"west":{"uv":[16,15],"uv_size":[2.5,0.5]},"up":{"uv":[16,16],"uv_size":[0.5,2.5]},"down":{"uv":[17,2.5],"uv_size":[0.5,-2.5]}}},{"origin":[-0.4,0.1802,-5.1211],"size":[0.8,0.4,0.4],"uv":{"north":{"uv":[26,7],"uv_size":[0.75,0.5]},"east":{"uv":[12,29],"uv_size":[0.5,0.5]},"south":{"uv":[26,8],"uv_size":[0.75,0.5]},"west":{"uv":[29,12],"uv_size":[0.5,0.5]},"up":{"uv":[9,26],"uv_size":[0.75,0.5]},"down":{"uv":[26,9.5],"uv_size":[0.75,-0.5]}}},{"origin":[-0.3947,0.1802,-5.3211],"size":[0.7893,0.4,0.3657],"pivot":[0.2053,0.5802,-5.5211],"rotation":[45,0,0],"uv":{"north":{"uv":[10,26],"uv_size":[0.75,0.5]},"east":{"uv":[8,38],"uv_size":[0.25,0.5]},"south":{"uv":[26,10],"uv_size":[0.75,0.5]},"west":{"uv":[38,8],"uv_size":[0.25,0.5]},"up":{"uv":[4,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,4.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.3947,0.1802,-5.3211],"size":[0.7893,0.4,0.3657],"pivot":[0.2053,0.1802,-5.5211],"rotation":[-45,0,0],"uv":{"north":{"uv":[11,26],"uv_size":[0.75,0.5]},"east":{"uv":[9,38],"uv_size":[0.25,0.5]},"south":{"uv":[26,11],"uv_size":[0.75,0.5]},"west":{"uv":[38,9],"uv_size":[0.25,0.5]},"up":{"uv":[5,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,5.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4,0.3802,7.7132],"size":[0.8,0.2,0.1657],"pivot":[0.2,0.5802,8.2789],"rotation":[-45,0,0],"uv":{"north":{"uv":[6,32],"uv_size":[0.75,0.25]},"east":{"uv":[21,44],"uv_size":[0.25,0.25]},"south":{"uv":[32,6],"uv_size":[0.75,0.25]},"west":{"uv":[44,21],"uv_size":[0.25,0.25]},"up":{"uv":[7,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,7.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4,0.1802,7.7132],"size":[0.8,0.2,0.1657],"pivot":[0.2,0.1802,8.2789],"rotation":[45,0,0],"uv":{"north":{"uv":[8,32],"uv_size":[0.75,0.25]},"east":{"uv":[22,44],"uv_size":[0.25,0.25]},"south":{"uv":[32,8],"uv_size":[0.75,0.25]},"west":{"uv":[44,22],"uv_size":[0.25,0.25]},"up":{"uv":[9,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,9.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4,0.1802,6.8789],"size":[0.8,0.4,1],"uv":{"north":{"uv":[12,26],"uv_size":[0.75,0.5]},"east":{"uv":[24,10],"uv_size":[1,0.5]},"south":{"uv":[26,12],"uv_size":[0.75,0.5]},"west":{"uv":[14,24],"uv_size":[1,0.5]},"up":{"uv":[12,9],"uv_size":[0.75,1]},"down":{"uv":[17,4],"uv_size":[0.75,-1]}}},{"origin":[-0.4,0.1802,6.2789],"size":[0.8,0.4,0.2],"uv":{"north":{"uv":[13,26],"uv_size":[0.75,0.5]},"east":{"uv":[10,38],"uv_size":[0.25,0.5]},"south":{"uv":[26,13],"uv_size":[0.75,0.5]},"west":{"uv":[38,10],"uv_size":[0.25,0.5]},"up":{"uv":[10,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,10.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4,0.1802,-0.7211],"size":[0.8,0.4,0.2],"uv":{"north":{"uv":[14,26],"uv_size":[0.75,0.5]},"east":{"uv":[11,38],"uv_size":[0.25,0.5]},"south":{"uv":[26,14],"uv_size":[0.75,0.5]},"west":{"uv":[38,11],"uv_size":[0.25,0.5]},"up":{"uv":[11,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,11.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4,0.1802,-0.1211],"size":[0.8,0.4,0.2],"uv":{"north":{"uv":[15,26],"uv_size":[0.75,0.5]},"east":{"uv":[12,38],"uv_size":[0.25,0.5]},"south":{"uv":[26,15],"uv_size":[0.75,0.5]},"west":{"uv":[38,12],"uv_size":[0.25,0.5]},"up":{"uv":[12,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,12.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4,0.1802,-4.3211],"size":[0.8,0.4,0.2],"uv":{"north":{"uv":[16,26],"uv_size":[0.75,0.5]},"east":{"uv":[13,38],"uv_size":[0.25,0.5]},"south":{"uv":[26,16],"uv_size":[0.75,0.5]},"west":{"uv":[38,13],"uv_size":[0.25,0.5]},"up":{"uv":[13,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,13.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.4794,-4.4219],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.5802,-4.3211],"rotation":[45,0,0],"uv":{"north":{"uv":[14,32],"uv_size":[0.75,0.25]},"east":{"uv":[23,44],"uv_size":[0.25,0.25]},"south":{"uv":[32,14],"uv_size":[0.75,0.25]},"west":{"uv":[44,23],"uv_size":[0.25,0.25]},"up":{"uv":[15,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,15.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.0794,-4.4219],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.1802,-4.3211],"rotation":[45,0,0],"uv":{"north":{"uv":[16,32],"uv_size":[0.75,0.25]},"east":{"uv":[24,44],"uv_size":[0.25,0.25]},"south":{"uv":[32,16],"uv_size":[0.75,0.25]},"west":{"uv":[44,24],"uv_size":[0.25,0.25]},"up":{"uv":[17,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,17.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4001,0.0801,-4.8212],"size":[0.8002,0.2002,0.2002],"inflate":-0.0001,"pivot":[0.4,0.1802,-4.7211],"rotation":[45,0,0],"uv":{"north":{"uv":[18,32],"uv_size":[0.75,0.25]},"east":{"uv":[25,44],"uv_size":[0.25,0.25]},"south":{"uv":[32,18],"uv_size":[0.75,0.25]},"west":{"uv":[44,25],"uv_size":[0.25,0.25]},"up":{"uv":[19,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,19.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.0794,-0.2219],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.1802,-0.1211],"rotation":[45,0,0],"uv":{"north":{"uv":[20,32],"uv_size":[0.75,0.25]},"east":{"uv":[26,44],"uv_size":[0.25,0.25]},"south":{"uv":[32,20],"uv_size":[0.75,0.25]},"west":{"uv":[44,26],"uv_size":[0.25,0.25]},"up":{"uv":[21,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,21.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.4794,-0.2219],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.5802,-0.1211],"rotation":[45,0,0],"uv":{"north":{"uv":[22,32],"uv_size":[0.75,0.25]},"east":{"uv":[27,44],"uv_size":[0.25,0.25]},"south":{"uv":[32,22],"uv_size":[0.75,0.25]},"west":{"uv":[44,27],"uv_size":[0.25,0.25]},"up":{"uv":[23,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,23.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.4794,-0.6219],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.5802,-0.5211],"rotation":[45,0,0],"uv":{"north":{"uv":[24,32],"uv_size":[0.75,0.25]},"east":{"uv":[28,44],"uv_size":[0.25,0.25]},"south":{"uv":[32,24],"uv_size":[0.75,0.25]},"west":{"uv":[44,28],"uv_size":[0.25,0.25]},"up":{"uv":[25,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,25.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.0794,-0.8219],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.1802,-0.7211],"rotation":[45,0,0],"uv":{"north":{"uv":[26,32],"uv_size":[0.75,0.25]},"east":{"uv":[29,44],"uv_size":[0.25,0.25]},"south":{"uv":[32,26],"uv_size":[0.75,0.25]},"west":{"uv":[44,29],"uv_size":[0.25,0.25]},"up":{"uv":[27,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,27.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.4794,-0.8219],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.5802,-0.7211],"rotation":[45,0,0],"uv":{"north":{"uv":[28,32],"uv_size":[0.75,0.25]},"east":{"uv":[30,44],"uv_size":[0.25,0.25]},"south":{"uv":[32,28],"uv_size":[0.75,0.25]},"west":{"uv":[44,30],"uv_size":[0.25,0.25]},"up":{"uv":[29,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,29.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.0794,-4.2219],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.1802,-4.1211],"rotation":[45,0,0],"uv":{"north":{"uv":[30,32],"uv_size":[0.75,0.25]},"east":{"uv":[31,44],"uv_size":[0.25,0.25]},"south":{"uv":[32,30],"uv_size":[0.75,0.25]},"west":{"uv":[44,31],"uv_size":[0.25,0.25]},"up":{"uv":[31,32],"uv_size":[0.75,0.25]},"down":{"uv":[32,31.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.4794,-4.2219],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.5802,-4.1211],"rotation":[45,0,0],"uv":{"north":{"uv":[32,32],"uv_size":[0.75,0.25]},"east":{"uv":[32,44],"uv_size":[0.25,0.25]},"south":{"uv":[0,33],"uv_size":[0.75,0.25]},"west":{"uv":[44,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,0],"uv_size":[0.75,0.25]},"down":{"uv":[1,33.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.0794,6.1781],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.1802,6.2789],"rotation":[45,0,0],"uv":{"north":{"uv":[33,1],"uv_size":[0.75,0.25]},"east":{"uv":[33,44],"uv_size":[0.25,0.25]},"south":{"uv":[2,33],"uv_size":[0.75,0.25]},"west":{"uv":[44,33],"uv_size":[0.25,0.25]},"up":{"uv":[33,2],"uv_size":[0.75,0.25]},"down":{"uv":[3,33.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.4794,6.1781],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.5802,6.2789],"rotation":[45,0,0],"uv":{"north":{"uv":[33,3],"uv_size":[0.75,0.25]},"east":{"uv":[34,44],"uv_size":[0.25,0.25]},"south":{"uv":[4,33],"uv_size":[0.75,0.25]},"west":{"uv":[44,34],"uv_size":[0.25,0.25]},"up":{"uv":[33,4],"uv_size":[0.75,0.25]},"down":{"uv":[5,33.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.0794,-0.0219],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.1802,0.0789],"rotation":[45,0,0],"uv":{"north":{"uv":[33,5],"uv_size":[0.75,0.25]},"east":{"uv":[35,44],"uv_size":[0.25,0.25]},"south":{"uv":[6,33],"uv_size":[0.75,0.25]},"west":{"uv":[44,35],"uv_size":[0.25,0.25]},"up":{"uv":[33,6],"uv_size":[0.75,0.25]},"down":{"uv":[7,33.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.4794,-0.0219],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.5802,0.0789],"rotation":[45,0,0],"uv":{"north":{"uv":[33,7],"uv_size":[0.75,0.25]},"east":{"uv":[36,44],"uv_size":[0.25,0.25]},"south":{"uv":[8,33],"uv_size":[0.75,0.25]},"west":{"uv":[44,36],"uv_size":[0.25,0.25]},"up":{"uv":[33,8],"uv_size":[0.75,0.25]},"down":{"uv":[9,33.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.0794,-0.6219],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.1802,-0.5211],"rotation":[45,0,0],"uv":{"north":{"uv":[33,9],"uv_size":[0.75,0.25]},"east":{"uv":[37,44],"uv_size":[0.25,0.25]},"south":{"uv":[10,33],"uv_size":[0.75,0.25]},"west":{"uv":[44,37],"uv_size":[0.25,0.25]},"up":{"uv":[33,10],"uv_size":[0.75,0.25]},"down":{"uv":[11,33.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.0794,6.7781],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.1802,6.8789],"rotation":[45,0,0],"uv":{"north":{"uv":[33,11],"uv_size":[0.75,0.25]},"east":{"uv":[38,44],"uv_size":[0.25,0.25]},"south":{"uv":[12,33],"uv_size":[0.75,0.25]},"west":{"uv":[44,38],"uv_size":[0.25,0.25]},"up":{"uv":[33,12],"uv_size":[0.75,0.25]},"down":{"uv":[13,33.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.4794,6.7781],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.5802,6.8789],"rotation":[45,0,0],"uv":{"north":{"uv":[33,13],"uv_size":[0.75,0.25]},"east":{"uv":[39,44],"uv_size":[0.25,0.25]},"south":{"uv":[14,33],"uv_size":[0.75,0.25]},"west":{"uv":[44,39],"uv_size":[0.25,0.25]},"up":{"uv":[33,14],"uv_size":[0.75,0.25]},"down":{"uv":[15,33.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.4794,6.3781],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.5802,6.4789],"rotation":[45,0,0],"uv":{"north":{"uv":[33,15],"uv_size":[0.75,0.25]},"east":{"uv":[40,44],"uv_size":[0.25,0.25]},"south":{"uv":[16,33],"uv_size":[0.75,0.25]},"west":{"uv":[44,40],"uv_size":[0.25,0.25]},"up":{"uv":[33,16],"uv_size":[0.75,0.25]},"down":{"uv":[17,33.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4008,0.0794,6.3781],"size":[0.8016,0.2016,0.2016],"inflate":-0.001,"pivot":[0.4,0.1802,6.4789],"rotation":[45,0,0],"uv":{"north":{"uv":[33,17],"uv_size":[0.75,0.25]},"east":{"uv":[41,44],"uv_size":[0.25,0.25]},"south":{"uv":[18,33],"uv_size":[0.75,0.25]},"west":{"uv":[44,41],"uv_size":[0.25,0.25]},"up":{"uv":[33,18],"uv_size":[0.75,0.25]},"down":{"uv":[19,33.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4001,0.4802,-4.8212],"size":[0.8002,0.2002,0.2002],"inflate":-0.0001,"pivot":[0.4,0.5802,-4.7211],"rotation":[45,0,0],"uv":{"north":{"uv":[33,19],"uv_size":[0.75,0.25]},"east":{"uv":[42,44],"uv_size":[0.25,0.25]},"south":{"uv":[20,33],"uv_size":[0.75,0.25]},"west":{"uv":[44,42],"uv_size":[0.25,0.25]},"up":{"uv":[33,20],"uv_size":[0.75,0.25]},"down":{"uv":[21,33.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.425,0.3016,-5.0998],"size":[0.85,0.1573,0.1573],"pivot":[0.425,0.3802,-5.0211],"rotation":[45,0,0],"uv":{"north":{"uv":[33,21],"uv_size":[0.75,0.25]},"east":{"uv":[43,44],"uv_size":[0.25,0.25]},"south":{"uv":[22,33],"uv_size":[0.75,0.25]},"west":{"uv":[44,43],"uv_size":[0.25,0.25]},"up":{"uv":[33,22],"uv_size":[0.75,0.25]},"down":{"uv":[23,33.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4197,0.2589,-5.1425],"size":[0.8393,0.2427,0.2427],"pivot":[0.4303,0.3802,-5.0211],"rotation":[45,0,0],"uv":{"north":{"uv":[37,27],"uv_size":[0.75,0.25]},"east":{"uv":[42,52],"uv_size":[0.25,0.25]},"south":{"uv":[28,37],"uv_size":[0.75,0.25]},"west":{"uv":[52,42],"uv_size":[0.25,0.25]},"up":{"uv":[37,28],"uv_size":[0.75,0.25]},"down":{"uv":[29,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4197,0.2589,7.2576],"size":[0.8393,0.2427,0.2427],"pivot":[0.4303,0.3802,7.3789],"rotation":[45,0,0],"uv":{"north":{"uv":[37,27],"uv_size":[0.75,0.25]},"east":{"uv":[42,52],"uv_size":[0.25,0.25]},"south":{"uv":[28,37],"uv_size":[0.75,0.25]},"west":{"uv":[52,42],"uv_size":[0.25,0.25]},"up":{"uv":[37,28],"uv_size":[0.75,0.25]},"down":{"uv":[29,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.425,0.2802,7.2789],"size":[0.85,0.2,0.2],"pivot":[0.425,0.3802,7.3789],"rotation":[45,0,0],"uv":{"north":{"uv":[33,23],"uv_size":[0.75,0.25]},"east":{"uv":[44,44],"uv_size":[0.25,0.25]},"south":{"uv":[24,33],"uv_size":[0.75,0.25]},"west":{"uv":[0,45],"uv_size":[0.25,0.25]},"up":{"uv":[33,24],"uv_size":[0.75,0.25]},"down":{"uv":[25,33.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4,-0.2198,-1.2211],"size":[0.8,0.4,9.1],"uv":{"north":{"uv":[17,26],"uv_size":[0.75,0.5]},"east":{"uv":[8,2],"uv_size":[9,0.5]},"south":{"uv":[26,17],"uv_size":[0.75,0.5]},"west":{"uv":[8,3],"uv_size":[9,0.5]},"up":{"uv":[2,0],"uv_size":[0.75,9]},"down":{"uv":[3,9],"uv_size":[0.75,-9]}}},{"origin":[-0.4,-0.1026,7.8789],"size":[0.8,0.9657,0.1172],"uv":{"north":{"uv":[17,9],"uv_size":[0.75,1]},"east":{"uv":[13,29],"uv_size":[0.25,1]},"south":{"uv":[19,3],"uv_size":[0.75,1]},"west":{"uv":[29,13],"uv_size":[0.25,1]},"up":{"uv":[33,25],"uv_size":[0.75,0.25]},"down":{"uv":[26,33.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4,0.0388,-5.3797],"size":[0.8,0.6828,0.2586],"uv":{"north":{"uv":[22,15],"uv_size":[0.75,0.75]},"east":{"uv":[33,26],"uv_size":[0.25,0.75]},"south":{"uv":[3,24],"uv_size":[0.75,0.75]},"west":{"uv":[27,33],"uv_size":[0.25,0.75]},"up":{"uv":[33,27],"uv_size":[0.75,0.25]},"down":{"uv":[28,33.25],"uv_size":[0.75,-0.25]}}}]},{"name":"h3","parent":"h1_fixed","pivot":[0.2523,0.5802,5.0789],"cubes":[{"origin":[-0.1977,0.9802,-5.1211],"size":[0.4,0.05,13.2],"uv":{"north":{"uv":[14,38],"uv_size":[0.5,0.25]},"east":{"uv":[9,4],"uv_size":[13.25,0.25]},"south":{"uv":[38,14],"uv_size":[0.5,0.25]},"west":{"uv":[9,5],"uv_size":[13.25,0.25]},"up":{"uv":[4,0],"uv_size":[0.5,13.25]},"down":{"uv":[5,13.25],"uv_size":[0.5,-13.25]}}},{"origin":[-0.1977,0.6302,-7.9211],"size":[0.4,0.4,2.8],"uv":{"north":{"uv":[14,29],"uv_size":[0.5,0.5]},"east":{"uv":[5,14],"uv_size":[2.75,0.5]},"south":{"uv":[29,15],"uv_size":[0.5,0.5]},"west":{"uv":[14,9],"uv_size":[2.75,0.5]},"up":{"uv":[14,10],"uv_size":[0.5,2.75]},"down":{"uv":[11,16.75],"uv_size":[0.5,-2.75]}}},{"origin":[-0.2053,0.7902,-7.9318],"size":[0.4107,0.0587,2.8107],"uv":{"north":{"uv":[23,40],"uv_size":[0.5,0.25]},"east":{"uv":[11,22],"uv_size":[2.75,0.25]},"south":{"uv":[40,23],"uv_size":[0.5,0.25]},"west":{"uv":[22,12],"uv_size":[2.75,0.25]},"up":{"uv":[1,15],"uv_size":[0.5,2.75]},"down":{"uv":[15,12.75],"uv_size":[0.5,-2.75]}}},{"origin":[-0.2053,-0.1098,-7.7318],"size":[0.4107,0.0587,2.6107],"uv":{"north":{"uv":[24,40],"uv_size":[0.5,0.25]},"east":{"uv":[22,19],"uv_size":[2.5,0.25]},"south":{"uv":[40,24],"uv_size":[0.5,0.25]},"west":{"uv":[23,11],"uv_size":[2.5,0.25]},"up":{"uv":[8,17],"uv_size":[0.5,2.5]},"down":{"uv":[9,19.5],"uv_size":[0.5,-2.5]}}},{"origin":[-0.2053,0.9676,-7.9318],"size":[0.4107,0.0587,2.8107],"uv":{"north":{"uv":[26,40],"uv_size":[0.5,0.25]},"east":{"uv":[22,13],"uv_size":[2.75,0.25]},"south":{"uv":[40,26],"uv_size":[0.5,0.25]},"west":{"uv":[22,14],"uv_size":[2.75,0.25]},"up":{"uv":[14,15],"uv_size":[0.5,2.75]},"down":{"uv":[15,17.75],"uv_size":[0.5,-2.75]}}},{"origin":[-0.2107,3.3432,-9.7364],"size":[0.4213,0.0587,1.2493],"pivot":[-0.013,2.713,-3.366],"rotation":[40,0,0],"uv":{"north":{"uv":[25,40],"uv_size":[0.5,0.25]},"east":{"uv":[28,14],"uv_size":[1.25,0.25]},"south":{"uv":[40,25],"uv_size":[0.5,0.25]},"west":{"uv":[9,29],"uv_size":[1.25,0.25]},"up":{"uv":[2,24],"uv_size":[0.5,1.25]},"down":{"uv":[24,3.25],"uv_size":[0.5,-1.25]}}},{"origin":[-0.1977,-0.2698,-10.3211],"size":[0.4,1.3,2.4],"uv":{"north":{"uv":[14,22],"uv_size":[0.5,1.25]},"east":{"uv":[0,9],"uv_size":[2.5,1.25]},"south":{"uv":[15,22],"uv_size":[0.5,1.25]},"west":{"uv":[9,8],"uv_size":[2.5,1.25]},"up":{"uv":[2,17],"uv_size":[0.5,2.5]},"down":{"uv":[3,19.5],"uv_size":[0.5,-2.5]}}},{"origin":[-0.2107,-0.2511,-9.6078],"size":[0.4213,1.05,1.25],"uv":{"north":{"uv":[43,53],"uv_size":[0.5,14.25]},"east":{"uv":[55.5,122],"uv_size":[69,-92.5],"uv_rotation":270},"south":{"uv":[44,53],"uv_size":[0.5,14.25]},"west":{"uv":[55.5,29.5],"uv_size":[69,92.5],"uv_rotation":270},"up":{"uv":[41,53],"uv_size":[0.5,30.5]},"down":{"uv":[42,83.5],"uv_size":[0.5,-30.5]}}},{"origin":[-0.1969,1.4793,-10.4581],"size":[0.3984,0.8935,0.1075],"inflate":0.001,"pivot":[0.0023,1.6987,-10.4061],"rotation":[-25,0,0],"uv":{"north":{"uv":[15,24],"uv_size":[0.5,1]},"east":{"uv":[29,16],"uv_size":[0.25,1]},"south":{"uv":[24,15],"uv_size":[0.5,1]},"west":{"uv":[17,29],"uv_size":[0.25,1]},"up":{"uv":[15,38],"uv_size":[0.5,0.25]},"down":{"uv":[38,15.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2045,-1.8455,-11.0307],"size":[0.4091,0.1484,0.2609],"inflate":0.001,"pivot":[0.3947,-2.2963,-0.2315],"rotation":[-15,0,0],"uv":{"north":{"uv":[16,38],"uv_size":[0.5,0.25]},"east":{"uv":[45,0],"uv_size":[0.25,0.25]},"south":{"uv":[38,16],"uv_size":[0.5,0.25]},"west":{"uv":[1,45],"uv_size":[0.25,0.25]},"up":{"uv":[17,38],"uv_size":[0.5,0.25]},"down":{"uv":[38,17.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1969,0.9345,-10.5463],"size":[0.3984,0.5859,0.2609],"inflate":0.001,"uv":{"north":{"uv":[29,17],"uv_size":[0.5,0.5]},"east":{"uv":[18,38],"uv_size":[0.25,0.5]},"south":{"uv":[29,18],"uv_size":[0.5,0.5]},"west":{"uv":[38,18],"uv_size":[0.25,0.5]},"up":{"uv":[19,38],"uv_size":[0.5,0.25]},"down":{"uv":[38,19.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2045,-2.8431,-11.9173],"size":[0.4091,0.9166,0.0476],"inflate":0.001,"pivot":[-0.0076,-3.7776,-1.3817],"rotation":[-25,0,0],"uv":{"north":{"uv":[53,48],"uv_size":[0.5,1]},"east":{"uv":[53,49],"uv_size":[0.25,1]},"south":{"uv":[49,53],"uv_size":[0.5,1]},"west":{"uv":[50,53],"uv_size":[0.25,1]},"up":{"uv":[53,51],"uv_size":[0.5,0.25]},"down":{"uv":[52,53.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,0.9345,-10.5356],"size":[0.4197,0.5859,0.0476],"inflate":0.001,"uv":{"north":{"uv":[53,50],"uv_size":[0.5,0.5]},"east":{"uv":[53,52],"uv_size":[0.25,0.5]},"south":{"uv":[51,53],"uv_size":[0.5,0.5]},"west":{"uv":[53,53],"uv_size":[0.25,0.5]},"up":{"uv":[0,54],"uv_size":[0.5,0.25]},"down":{"uv":[54,0.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-2.8431,-11.9173],"size":[0.4197,0.9379,0.0689],"inflate":0.001,"pivot":[-0.013,-3.7776,-1.3817],"rotation":[-25,0,0],"uv":{"north":{"uv":[53,45],"uv_size":[0.5,1]},"east":{"uv":[53,46],"uv_size":[0.25,1]},"south":{"uv":[46,53],"uv_size":[0.5,1]},"west":{"uv":[47,53],"uv_size":[0.25,1]},"up":{"uv":[53,47],"uv_size":[0.5,0.25]},"down":{"uv":[48,53.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1965,2.2675,-10.1408],"size":[0.3982,0.0655,0.0692],"inflate":0.001,"pivot":[-0.1975,2.334,-10.0707],"rotation":[-42.9489,0.2264,-0.0134],"uv":{"north":{"uv":[20,38],"uv_size":[0.5,0.25]},"east":{"uv":[45,1],"uv_size":[0.25,0.25]},"south":{"uv":[38,20],"uv_size":[0.5,0.25]},"west":{"uv":[2,45],"uv_size":[0.25,0.25]},"up":{"uv":[21,38],"uv_size":[0.5,0.25]},"down":{"uv":[38,21.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1955,3.7917,-10.0408],"size":[0.3909,1.3516,0.1016],"inflate":-0.001,"pivot":[0.4053,3.2424,0.66],"rotation":[15,0,0],"uv":{"north":{"uv":[22,17],"uv_size":[0.5,1.25]},"east":{"uv":[15,28],"uv_size":[0.25,1.25]},"south":{"uv":[19,22],"uv_size":[0.5,1.25]},"west":{"uv":[16,28],"uv_size":[0.25,1.25]},"up":{"uv":[22,38],"uv_size":[0.5,0.25]},"down":{"uv":[38,22.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.027,3.7917,-9.3408],"size":[0.0516,3.2016,0.2016],"inflate":-0.001,"pivot":[0.2238,3.6425,0.46],"rotation":[15,0,0],"uv":{"north":{"uv":[19,16],"uv_size":[0.25,3.25]},"east":{"uv":[18,19],"uv_size":[0.25,3.25]},"south":{"uv":[20,0],"uv_size":[0.25,3.25]},"west":{"uv":[2,20],"uv_size":[0.25,3.25]},"up":{"uv":[45,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0388,1.98,-9.8785],"size":[0.0016,2.4016,0.1516],"inflate":-0.001,"pivot":[-0.0382,4.3806,-9.7279],"rotation":[-9.8765,7.2431,1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,2.5]},"east":{"uv":[22,22],"uv_size":[0.25,2.5]},"south":{"uv":[0,0],"uv_size":[0,2.5]},"west":{"uv":[0,23],"uv_size":[0.25,2.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.1147,1.7749,-10.2208],"size":[0.0016,1.5016,0.1516],"inflate":-0.001,"pivot":[-0.1141,3.2755,-10.0702],"rotation":[-16.2419,-52.5287,16.2276],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.5]},"east":{"uv":[18,26],"uv_size":[0.25,1.5]},"south":{"uv":[0,0],"uv_size":[0,1.5]},"west":{"uv":[26,18],"uv_size":[0.25,1.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0254,3.2846,-10.1964],"size":[0.0016,0.0266,0.1641],"inflate":-0.001,"pivot":[0.0263,3.2981,-10.1954],"rotation":[-20.4981,30.8259,-10.8448],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,6],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[7,45],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0254,3.2971,-10.1964],"size":[0.0016,0.8641,0.061],"inflate":-0.001,"pivot":[0.0263,3.2981,-10.1954],"rotation":[-20.4981,30.8259,-10.8448],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[33,28],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[29,33],"uv_size":[0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.1108,3.2567,-10.115],"size":[0.0016,1.2016,0.0485],"inflate":-0.001,"pivot":[0.1118,3.2577,-10.0675],"rotation":[-12.9981,30.8259,-10.8448],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.25]},"east":{"uv":[28,16],"uv_size":[0.25,1.25]},"south":{"uv":[0,0],"uv_size":[0,1.25]},"west":{"uv":[18,28],"uv_size":[0.25,1.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0251,3.2972,-10.1373],"size":[0.0016,0.4266,0.0578],"inflate":-0.001,"pivot":[0.0261,3.2982,-10.1957],"rotation":[-20.4981,30.8259,-10.8448],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[26,38],"uv_size":[0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[38,26],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0246,1.7544,-10.2001],"size":[0.0516,1.536,0.1672],"inflate":-0.001,"pivot":[0.026,3.2894,-10.1991],"rotation":[-8.8243,31.6942,-4.6628],"uv":{"north":{"uv":[19,26],"uv_size":[0.25,1.5]},"east":{"uv":[20,26],"uv_size":[0.25,1.5]},"south":{"uv":[26,20],"uv_size":[0.25,1.5]},"west":{"uv":[21,26],"uv_size":[0.25,1.5]},"up":{"uv":[45,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0305,1.7445,-10.3273],"size":[0.0016,0.8516,0.0516],"inflate":-0.001,"pivot":[0.0315,2.5951,-10.2767],"rotation":[-61.6284,78.8496,-64.3785],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[33,29],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[30,33],"uv_size":[0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.1131,1.7749,-10.2208],"size":[0.0016,1.5016,0.1516],"inflate":-0.001,"pivot":[0.1141,3.2755,-10.0702],"rotation":[-16.2419,52.5287,-16.2276],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.5]},"east":{"uv":[22,26],"uv_size":[0.25,1.5]},"south":{"uv":[0,0],"uv_size":[0,1.5]},"west":{"uv":[26,22],"uv_size":[0.25,1.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0321,1.7445,-10.3273],"size":[0.0016,0.8516,0.0516],"inflate":-0.001,"pivot":[-0.0315,2.5951,-10.2767],"rotation":[-61.6284,-78.8496,64.3785],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[33,30],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[31,33],"uv_size":[0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0146,1.1928,-10.6806],"size":[0.0416,1.2016,0.4016],"inflate":-0.001,"pivot":[0.0263,4.3934,-9.68],"rotation":[15.1235,-7.2431,-1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.25]},"east":{"uv":[1,23],"uv_size":[0.5,1.25]},"south":{"uv":[0,0],"uv_size":[0,1.25]},"west":{"uv":[1.5,23],"uv_size":[-0.5,1.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[-0.0146,2.3928,-10.6306],"size":[0.0416,0.4016,0.1516],"inflate":-0.001,"pivot":[0.0263,4.3934,-9.68],"rotation":[15.1235,-7.2431,-1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[27,38],"uv_size":[0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[27,38],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0146,2.3928,-10.4806],"size":[0.0416,0.6016,0.2016],"inflate":-0.001,"pivot":[0.0263,4.3934,-9.68],"rotation":[15.1235,-7.2431,-1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[28,38],"uv_size":[0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[28,38],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0146,2.9928,-10.3806],"size":[0.0416,0.2516,0.1016],"inflate":-0.001,"pivot":[0.0263,4.3934,-9.68],"rotation":[15.1235,-7.2431,-1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,8],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[45,8.25],"uv_size":[0.25,-0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0253,1.1928,-10.2806],"size":[0.0523,2.2016,0.4016],"inflate":-0.001,"pivot":[0.0263,4.3934,-9.68],"rotation":[15.1235,-7.2431,-1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,2.25]},"east":{"uv":[18,16],"uv_size":[0.5,2.25]},"south":{"uv":[0,0],"uv_size":[0,2.25]},"west":{"uv":[18.5,16],"uv_size":[-0.5,2.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[-0.0146,3.6428,-10.1306],"size":[0.0416,0.1516,0.1016],"inflate":-0.001,"pivot":[0.0263,4.3934,-9.68],"rotation":[15.1235,-7.2431,-1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,9],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[45,9],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0146,3.3928,-10.2306],"size":[0.0416,0.2516,0.3516],"inflate":-0.001,"pivot":[0.0263,4.3934,-9.68],"rotation":[15.1235,-7.2431,-1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,10],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[45,10],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0146,3.6428,-10.0306],"size":[0.0416,0.4516,0.1516],"inflate":-0.001,"pivot":[0.0263,4.3934,-9.68],"rotation":[15.1235,-7.2431,-1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[29,38],"uv_size":[0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[29,38],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.027,1.1928,-10.6806],"size":[0.0416,1.2016,0.4016],"inflate":-0.001,"pivot":[-0.0263,4.3934,-9.68],"rotation":[15.1235,7.2431,1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.25]},"east":{"uv":[1,23],"uv_size":[0.5,1.25]},"south":{"uv":[0,0],"uv_size":[0,1.25]},"west":{"uv":[1.5,23],"uv_size":[-0.5,1.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[-0.027,2.3928,-10.6306],"size":[0.0416,0.4016,0.1516],"inflate":-0.001,"pivot":[-0.0263,4.3934,-9.68],"rotation":[15.1235,7.2431,1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[27.25,38],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[27.25,38],"uv_size":[-0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.027,2.3928,-10.4806],"size":[0.0416,0.6016,0.2016],"inflate":-0.001,"pivot":[-0.0263,4.3934,-9.68],"rotation":[15.1235,7.2431,1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[28.25,38],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[28.25,38],"uv_size":[-0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.027,2.9928,-10.3806],"size":[0.0416,0.2516,0.1016],"inflate":-0.001,"pivot":[-0.0263,4.3934,-9.68],"rotation":[15.1235,7.2431,1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45.25,8.25],"uv_size":[-0.25,-0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[45.25,8],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.027,1.1928,-10.2806],"size":[0.0523,2.2016,0.4016],"inflate":-0.001,"pivot":[-0.0263,4.3934,-9.68],"rotation":[15.1235,7.2431,1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,2.25]},"east":{"uv":[18,16],"uv_size":[0.5,2.25]},"south":{"uv":[0,0],"uv_size":[0,2.25]},"west":{"uv":[18.5,16],"uv_size":[-0.5,2.25]},"up":{"uv":[0,0],"uv_size":[0,0.5]},"down":{"uv":[0,0.5],"uv_size":[0,-0.5]}}},{"origin":[-0.027,3.6428,-10.1306],"size":[0.0416,0.1516,0.1016],"inflate":-0.001,"pivot":[-0.0263,4.3934,-9.68],"rotation":[15.1235,7.2431,1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45.25,9],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[45.25,9],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.027,3.3928,-10.2306],"size":[0.0416,0.2516,0.3516],"inflate":-0.001,"pivot":[-0.0263,4.3934,-9.68],"rotation":[15.1235,7.2431,1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45.25,10],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[45.25,10],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.027,3.6428,-10.0306],"size":[0.0416,0.4516,0.1516],"inflate":-0.001,"pivot":[-0.0263,4.3934,-9.68],"rotation":[15.1235,7.2431,1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[29.25,38],"uv_size":[-0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[29.25,38],"uv_size":[-0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0173,1.1928,-9.8806],"size":[0.0443,3.2016,0.1516],"inflate":-0.001,"pivot":[0.0263,4.3934,-9.68],"rotation":[15.1235,-7.2431,-1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,3.25]},"east":{"uv":[8,20],"uv_size":[0.25,3.25]},"south":{"uv":[0,0],"uv_size":[0,3.25]},"west":{"uv":[8,20],"uv_size":[0.25,3.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.027,1.1928,-9.8806],"size":[0.0443,3.2016,0.1516],"inflate":-0.001,"pivot":[-0.0263,4.3934,-9.68],"rotation":[15.1235,7.2431,1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,3.25]},"east":{"uv":[8.25,20],"uv_size":[-0.25,3.25]},"south":{"uv":[0,0],"uv_size":[0,3.25]},"west":{"uv":[8.25,20],"uv_size":[-0.25,3.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0372,1.98,-9.8785],"size":[0.0016,2.4016,0.1516],"inflate":-0.001,"pivot":[0.0382,4.3806,-9.7279],"rotation":[-9.8765,-7.2431,-1.9515],"uv":{"north":{"uv":[0,0],"uv_size":[0,2.5]},"east":{"uv":[4,23],"uv_size":[0.25,2.5]},"south":{"uv":[0,0],"uv_size":[0,2.5]},"west":{"uv":[23,4],"uv_size":[0.25,2.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0276,6.3903,-9.5412],"size":[0.0532,0.3032,0.2032],"inflate":-0.002,"pivot":[0.224,3.6419,0.4604],"rotation":[15,0,0],"uv":{"north":{"uv":[45,11],"uv_size":[0.25,0.25]},"east":{"uv":[12,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.027,3.2876,-10.2969],"size":[0.0516,1.2016,0.2016],"inflate":-0.001,"pivot":[-0.1762,3.0884,-10.1961],"rotation":[-17.5,0,0],"uv":{"north":{"uv":[19,28],"uv_size":[0.25,1.25]},"east":{"uv":[20,28],"uv_size":[0.25,1.25]},"south":{"uv":[28,20],"uv_size":[0.25,1.25]},"west":{"uv":[21,28],"uv_size":[0.25,1.25]},"up":{"uv":[45,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.027,3.2971,-10.1964],"size":[0.0016,0.8641,0.061],"inflate":-0.001,"pivot":[-0.0263,3.2981,-10.1954],"rotation":[-20.4981,-30.8259,10.8448],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[0,34],"uv_size":[0.25,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[34,0],"uv_size":[0.25,0.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.027,3.2846,-10.1964],"size":[0.0016,0.0266,0.1641],"inflate":-0.001,"pivot":[-0.0263,3.2981,-10.1954],"rotation":[-20.4981,-30.8259,10.8448],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,16],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[17,45],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0267,3.2972,-10.1373],"size":[0.0016,0.4266,0.0578],"inflate":-0.001,"pivot":[-0.0261,3.2982,-10.1957],"rotation":[-20.4981,-30.8259,10.8448],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[33,38],"uv_size":[0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[38,33],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.1124,3.2567,-10.115],"size":[0.0016,1.2016,0.0485],"inflate":-0.001,"pivot":[-0.1118,3.2577,-10.0675],"rotation":[-12.9981,-30.8259,10.8448],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.25]},"east":{"uv":[22,28],"uv_size":[0.25,1.25]},"south":{"uv":[0,0],"uv_size":[0,1.25]},"west":{"uv":[28,22],"uv_size":[0.25,1.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0311,4.2513,-9.8222],"size":[0.0623,0.1431,0.1431],"inflate":-0.001,"pivot":[-0.0301,4.3934,-9.68],"rotation":[-62.5,0,0],"uv":{"north":{"uv":[45,17],"uv_size":[0.25,0.25]},"east":{"uv":[18,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,18],"uv_size":[0.25,0.25]},"west":{"uv":[19,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.027,1.7077,-10.4157],"size":[0.0516,1.6016,0.2016],"inflate":-0.001,"pivot":[-0.1762,1.9085,-10.3149],"rotation":[-7.5,0,0],"uv":{"north":{"uv":[26,24],"uv_size":[0.25,1.5]},"east":{"uv":[25,26],"uv_size":[0.25,1.5]},"south":{"uv":[26,26],"uv_size":[0.25,1.5]},"west":{"uv":[0,27],"uv_size":[0.25,1.5]},"up":{"uv":[45,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.027,1.7544,-10.2001],"size":[0.0516,1.536,0.1672],"inflate":-0.001,"pivot":[-0.026,3.2894,-10.1991],"rotation":[-8.8243,-31.6942,4.6628],"uv":{"north":{"uv":[27,0],"uv_size":[0.25,1.5]},"east":{"uv":[1,27],"uv_size":[0.25,1.5]},"south":{"uv":[2,27],"uv_size":[0.25,1.5]},"west":{"uv":[27,2],"uv_size":[0.25,1.5]},"up":{"uv":[45,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1977,3.7925,-10.44],"size":[0.4,0.35,0.4],"pivot":[0.4023,3.2424,0.66],"rotation":[15,0,0],"uv":{"north":{"uv":[34,38],"uv_size":[0.5,0.25]},"east":{"uv":[38,34],"uv_size":[0.5,0.25]},"south":{"uv":[35,38],"uv_size":[0.5,0.25]},"west":{"uv":[38,35],"uv_size":[0.5,0.25]},"up":{"uv":[29,19],"uv_size":[0.5,0.5]},"down":{"uv":[29,20.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.1977,3.8925,-10.64],"size":[0.4,0.2,0.2],"pivot":[0.4023,3.2424,0.66],"rotation":[15,0,0],"uv":{"north":{"uv":[36,38],"uv_size":[0.5,0.25]},"east":{"uv":[45,22],"uv_size":[0.25,0.25]},"south":{"uv":[38,36],"uv_size":[0.5,0.25]},"west":{"uv":[23,45],"uv_size":[0.25,0.25]},"up":{"uv":[37,38],"uv_size":[0.5,0.25]},"down":{"uv":[38,37.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1977,4.0925,-10.54],"size":[0.4,0.2,0.1],"pivot":[0.4023,3.2424,0.66],"rotation":[15,0,0],"uv":{"north":{"uv":[38,38],"uv_size":[0.5,0.25]},"east":{"uv":[45,23],"uv_size":[0.25,0.25]},"south":{"uv":[0,39],"uv_size":[0.5,0.25]},"west":{"uv":[24,45],"uv_size":[0.25,0.25]},"up":{"uv":[39,0],"uv_size":[0.5,0.25]},"down":{"uv":[1,39.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1977,4.1438,-10.2269],"size":[0.4,0.55,0.2],"pivot":[0.4023,3.1938,0.6731],"rotation":[15,0,0],"uv":{"north":{"uv":[29,21],"uv_size":[0.5,0.5]},"east":{"uv":[39,1],"uv_size":[0.25,0.5]},"south":{"uv":[29,22],"uv_size":[0.5,0.5]},"west":{"uv":[2,39],"uv_size":[0.25,0.5]},"up":{"uv":[39,2],"uv_size":[0.5,0.25]},"down":{"uv":[3,39.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1977,4.1438,-10.4269],"size":[0.4,0.5,0.2],"pivot":[0.4023,3.1938,0.6731],"rotation":[15,0,0],"uv":{"north":{"uv":[23,29],"uv_size":[0.5,0.5]},"east":{"uv":[39,3],"uv_size":[0.25,0.5]},"south":{"uv":[29,23],"uv_size":[0.5,0.5]},"west":{"uv":[4,39],"uv_size":[0.25,0.5]},"up":{"uv":[39,4],"uv_size":[0.5,0.25]},"down":{"uv":[5,39.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1977,4.3938,-10.5269],"size":[0.4,0.15,0.1],"pivot":[0.4023,3.1938,0.6731],"rotation":[15,0,0],"uv":{"north":{"uv":[39,5],"uv_size":[0.5,0.25]},"east":{"uv":[45,24],"uv_size":[0.25,0.25]},"south":{"uv":[6,39],"uv_size":[0.5,0.25]},"west":{"uv":[25,45],"uv_size":[0.25,0.25]},"up":{"uv":[39,6],"uv_size":[0.5,0.25]},"down":{"uv":[7,39.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1977,4.6438,-10.3269],"size":[0.4,0.15,0.1],"pivot":[0.4023,3.1938,0.6731],"rotation":[15,0,0],"uv":{"north":{"uv":[39,7],"uv_size":[0.5,0.25]},"east":{"uv":[45,25],"uv_size":[0.25,0.25]},"south":{"uv":[8,39],"uv_size":[0.5,0.25]},"west":{"uv":[26,45],"uv_size":[0.25,0.25]},"up":{"uv":[39,8],"uv_size":[0.5,0.25]},"down":{"uv":[9,39.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1977,4.6938,-10.1269],"size":[0.4,0.3,0.1],"pivot":[0.4023,3.1938,0.6731],"rotation":[15,0,0],"uv":{"north":{"uv":[39,9],"uv_size":[0.5,0.25]},"east":{"uv":[45,26],"uv_size":[0.25,0.25]},"south":{"uv":[10,39],"uv_size":[0.5,0.25]},"west":{"uv":[27,45],"uv_size":[0.25,0.25]},"up":{"uv":[39,10],"uv_size":[0.5,0.25]},"down":{"uv":[11,39.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1977,4.6938,-10.2269],"size":[0.4,0.2,0.1],"pivot":[0.4023,3.1938,0.6731],"rotation":[15,0,0],"uv":{"north":{"uv":[39,11],"uv_size":[0.5,0.25]},"east":{"uv":[45,27],"uv_size":[0.25,0.25]},"south":{"uv":[12,39],"uv_size":[0.5,0.25]},"west":{"uv":[28,45],"uv_size":[0.25,0.25]},"up":{"uv":[39,12],"uv_size":[0.5,0.25]},"down":{"uv":[13,39.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2077,-2.6496,-10.772],"size":[0.4155,0.9048,2.2728],"inflate":-0.003,"pivot":[0.3947,-2.1972,-0.3695],"rotation":[-20,0,0],"uv":{"north":{"uv":[21,24],"uv_size":[0.5,1]},"east":{"uv":[8,12],"uv_size":[2.25,1]},"south":{"uv":[24,21],"uv_size":[0.5,1]},"west":{"uv":[12,8],"uv_size":[2.25,1]},"up":{"uv":[6,19],"uv_size":[0.5,2.25]},"down":{"uv":[7,21.25],"uv_size":[0.5,-2.25]}}},{"origin":[-0.1977,-3.8698,-10.3211],"size":[0.4,3.6,0.4],"uv":{"north":{"uv":[2,13],"uv_size":[0.5,3.5]},"east":{"uv":[3,13],"uv_size":[0.5,3.5]},"south":{"uv":[8,13],"uv_size":[0.5,3.5]},"west":{"uv":[9,13],"uv_size":[0.5,3.5]},"up":{"uv":[24,29],"uv_size":[0.5,0.5]},"down":{"uv":[29,24.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.1977,-3.8698,-10.5711],"size":[0,4.85,0.25],"pivot":[-0.1979,0.9802,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,4.75]},"east":{"uv":[10,17],"uv_size":[0.25,4.75]},"south":{"uv":[0,0],"uv_size":[0,4.75]},"west":{"uv":[11,17],"uv_size":[0.25,4.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.1977,-3.8698,-10.5711],"size":[0,4.85,0.25],"pivot":[0.1979,0.9802,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,4.75]},"east":{"uv":[12,17],"uv_size":[0.25,4.75]},"south":{"uv":[0,0],"uv_size":[0,4.75]},"west":{"uv":[13,17],"uv_size":[0.25,4.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,-2.6124,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,0.9589,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,-1.8338,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,1.7376,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,-1.5031,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,2.0682,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,-1.3004,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,2.2709,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,-1.0978,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,2.4736,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,-0.7778,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,2.7936,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,-0.9271,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,2.6442,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,-0.5964,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,2.9749,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,-0.0524,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,3.5189,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,0.6476,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,4.2189,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,0.5222,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,4.0936,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,0.3836,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,3.9549,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,0.3836,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,3.9549,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,0.6476,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,4.2189,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,0.5222,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,4.0936,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,-3.1244,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,0.4469,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,-3.3058,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,0.2656,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.2084,-3.6364,-10.5711],"size":[0,0.0713,0.25],"pivot":[0.2086,-0.0651,-10.3211],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[54,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,-3.6364,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,-0.0651,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,-0.0524,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,3.5189,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,-0.5964,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,2.9749,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,-0.7778,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,2.7936,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,-0.9271,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,2.6442,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,-1.0978,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,2.4736,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,-1.3004,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,2.2709,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,-1.5031,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,2.0682,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,-1.8338,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,1.7376,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,-2.6124,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,0.9589,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,-3.1244,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,0.4469,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.2084,-3.3058,-10.5711],"size":[0,0.0713,0.25],"pivot":[-0.2086,0.2656,-10.3211],"rotation":[0,-45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[54.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[1.25,54],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.025,-3.8698,-10.5211],"size":[0.05,4.8,0.2],"uv":{"north":{"uv":[17,16],"uv_size":[0.25,4.75]},"east":{"uv":[0,18],"uv_size":[0.25,4.75]},"south":{"uv":[1,18],"uv_size":[0.25,4.75]},"west":{"uv":[4,18],"uv_size":[0.25,4.75]},"up":{"uv":[45,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.025,-4.1468,-10.5024],"size":[0.05,0.3615,0.1813],"pivot":[-0.025,-3.8698,-10.3211],"rotation":[25,0.0058,-0.0261],"uv":{"north":{"uv":[45,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,45],"uv_size":[0.25,0.25]},"south":{"uv":[45,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,45],"uv_size":[0.25,0.25]},"up":{"uv":[45,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0248,-4.8242,-10.3683],"size":[0.05,0.6268,0.1813],"pivot":[-0.0248,-4.1974,-10.3683],"rotation":[41.8097,0.0048,-0.0246],"uv":{"north":{"uv":[1,34],"uv_size":[0.25,0.75]},"east":{"uv":[34,1],"uv_size":[0.25,0.75]},"south":{"uv":[2,34],"uv_size":[0.25,0.75]},"west":{"uv":[34,2],"uv_size":[0.25,0.75]},"up":{"uv":[45,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0248,-4.3117,-10.3433],"size":[0,0.1268,0.2063],"pivot":[-0.0248,-4.1849,-10.3433],"rotation":[51.6675,-31.8025,-33.7127],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,34],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[35,45],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0379,-4.5688,-10.0011],"size":[0,0.4018,0.0188],"pivot":[0.0381,-4.5688,-9.9824],"rotation":[51.6675,31.8025,33.7127],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[39,15],"uv_size":[0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[16,39],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0248,-4.5117,-10.2746],"size":[0,0.2018,0.0375],"pivot":[0.0248,-4.1849,-10.3433],"rotation":[51.6675,31.8025,33.7127],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,35],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[36,45],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0248,-4.6117,-10.3246],"size":[0,0.3018,0.05],"pivot":[0.0248,-4.1849,-10.3433],"rotation":[51.6675,31.8025,33.7127],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,36],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[37,45],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0248,-4.3742,-10.1996],"size":[0,0.0643,0.025],"pivot":[0.0248,-4.1849,-10.3433],"rotation":[51.6675,31.8025,33.7127],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,37],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[38,45],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0248,-4.4367,-10.2371],"size":[0,0.1268,0.0375],"pivot":[0.0248,-4.1849,-10.3433],"rotation":[51.6675,31.8025,33.7127],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,38],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[39,45],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0379,-4.5688,-10.0261],"size":[0,0.5143,0.0438],"pivot":[0.0381,-4.5688,-9.9824],"rotation":[26.1675,31.8025,33.7127],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[39,16],"uv_size":[0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[17,39],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0248,-4.3117,-10.3433],"size":[0,0.1268,0.2063],"pivot":[0.0248,-4.1849,-10.3433],"rotation":[51.6675,31.8025,33.7127],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,39],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[40,45],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0379,-4.5688,-10.0261],"size":[0,0.5143,0.0438],"pivot":[-0.0381,-4.5688,-9.9824],"rotation":[26.1675,-31.8025,-33.7127],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[39,17],"uv_size":[0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[18,39],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0379,-4.5688,-10.0011],"size":[0,0.4018,0.0188],"pivot":[-0.0381,-4.5688,-9.9824],"rotation":[51.6675,-31.8025,-33.7127],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.5]},"east":{"uv":[39,18],"uv_size":[0.25,0.5]},"south":{"uv":[0,0],"uv_size":[0,0.5]},"west":{"uv":[19,39],"uv_size":[0.25,0.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0248,-4.6117,-10.3246],"size":[0,0.3018,0.05],"pivot":[-0.0248,-4.1849,-10.3433],"rotation":[51.6675,-31.8025,-33.7127],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,40],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[41,45],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0248,-4.5117,-10.2746],"size":[0,0.2018,0.0375],"pivot":[-0.0248,-4.1849,-10.3433],"rotation":[51.6675,-31.8025,-33.7127],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,41],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[42,45],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0248,-4.4367,-10.2371],"size":[0,0.1268,0.0375],"pivot":[-0.0248,-4.1849,-10.3433],"rotation":[51.6675,-31.8025,-33.7127],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,42],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[43,45],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0248,-4.3742,-10.1996],"size":[0,0.0643,0.025],"pivot":[-0.0248,-4.1849,-10.3433],"rotation":[51.6675,-31.8025,-33.7127],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[45,43],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[44,45],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.1973,-4.1652,-10.1998],"size":[0.3992,0.2776,0.2167],"pivot":[-0.2024,-4.1523,-10.3007],"rotation":[25,0,0],"uv":{"north":{"uv":[39,19],"uv_size":[0.5,0.25]},"east":{"uv":[45,44],"uv_size":[0.25,0.25]},"south":{"uv":[20,39],"uv_size":[0.5,0.25]},"west":{"uv":[45,45],"uv_size":[0.25,0.25]},"up":{"uv":[39,20],"uv_size":[0.5,0.25]},"down":{"uv":[21,39.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1971,-4.1474,-10.5878],"size":[0,0.2776,0.2667],"pivot":[-0.1973,-3.8698,-10.3211],"rotation":[35.1353,-42.7487,-25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[0,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,0],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0255,-4.1068,-10.504],"size":[0,0.2432,0.0156],"pivot":[-0.0257,-3.8636,-10.4915],"rotation":[105.8853,-42.7487,-25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[1,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0348,-3.9101,-10.459],"size":[0,0.025,0.0375],"pivot":[0.035,-3.8601,-10.484],"rotation":[35.1353,42.7487,25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[2,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,2],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0348,-3.9101,-10.4215],"size":[0,0.0125,0.0375],"pivot":[0.035,-3.8601,-10.484],"rotation":[35.1353,42.7487,25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[3,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,3],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0348,-3.9226,-10.484],"size":[0,0.0125,0.1375],"pivot":[0.035,-3.8601,-10.484],"rotation":[35.1353,42.7487,25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[4,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,4],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0348,-3.9377,-10.484],"size":[0,0.0151,0.175],"pivot":[0.035,-3.8601,-10.484],"rotation":[35.1353,42.7487,25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[5,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,5],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0348,-3.9377,-10.509],"size":[0,0.0776,0.025],"pivot":[0.035,-3.8601,-10.484],"rotation":[35.1353,42.7487,25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[6,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,6],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0348,-3.9101,-10.484],"size":[0,0.0375,0.025],"pivot":[0.035,-3.8601,-10.484],"rotation":[35.1353,42.7487,25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[7,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,7],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0255,-4.1068,-10.504],"size":[0,0.2432,0.0156],"pivot":[0.0257,-3.8636,-10.4915],"rotation":[105.8853,42.7487,25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[8,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,8],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0348,-3.9377,-10.509],"size":[0,0.0776,0.025],"pivot":[-0.035,-3.8601,-10.484],"rotation":[35.1353,-42.7487,-25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[9,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,9],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0348,-3.9377,-10.484],"size":[0,0.0151,0.175],"pivot":[-0.035,-3.8601,-10.484],"rotation":[35.1353,-42.7487,-25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[10,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,10],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0348,-3.9226,-10.484],"size":[0,0.0125,0.1375],"pivot":[-0.035,-3.8601,-10.484],"rotation":[35.1353,-42.7487,-25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[11,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,11],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0348,-3.9101,-10.484],"size":[0,0.0375,0.025],"pivot":[-0.035,-3.8601,-10.484],"rotation":[35.1353,-42.7487,-25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[12,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,12],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0348,-3.9101,-10.459],"size":[0,0.025,0.0375],"pivot":[-0.035,-3.8601,-10.484],"rotation":[35.1353,-42.7487,-25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[13,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,13],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0348,-3.9101,-10.4215],"size":[0,0.0125,0.0375],"pivot":[-0.035,-3.8601,-10.484],"rotation":[35.1353,-42.7487,-25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[14,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,14],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.1971,-4.1474,-10.5878],"size":[0,0.2776,0.2667],"pivot":[0.1973,-3.8698,-10.3211],"rotation":[35.1353,42.7487,25.533],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[15,46],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[46,15],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.1975,-4.7489,-10.2037],"size":[0,0.6274,3.8308],"pivot":[-0.1975,-4.1215,-10.2037],"rotation":[23.9759,7.3011,-15.9477],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[9,10],"uv_size":[3.75,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[0,11],"uv_size":[3.75,0.75]},"up":{"uv":[0,0],"uv_size":[0,3.75]},"down":{"uv":[0,3.75],"uv_size":[0,-3.75]}}},{"origin":[-0.1475,-4.5489,-6.6037],"size":[0.05,0.4274,0.2308],"pivot":[-0.1975,-4.1215,-10.2037],"rotation":[23.9759,7.3011,-15.9477],"uv":{"north":{"uv":[39,21],"uv_size":[0.25,0.5]},"east":{"uv":[22,39],"uv_size":[0.25,0.5]},"south":{"uv":[39,22],"uv_size":[0.25,0.5]},"west":{"uv":[23,39],"uv_size":[0.25,0.5]},"up":{"uv":[16,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0975,-4.3989,-6.6037],"size":[0.1,0.2774,0.2308],"pivot":[-0.1975,-4.1215,-10.2037],"rotation":[23.9759,7.3011,-15.9477],"uv":{"north":{"uv":[17,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1475,-4.6989,-6.6037],"size":[0.0393,0.5774,0.2308],"pivot":[0.1975,-4.1215,-10.2037],"rotation":[23.9759,-7.3011,15.9477],"uv":{"north":{"uv":[39,23],"uv_size":[0.25,0.5]},"east":{"uv":[24,39],"uv_size":[0.25,0.5]},"south":{"uv":[39,24],"uv_size":[0.25,0.5]},"west":{"uv":[25,39],"uv_size":[0.25,0.5]},"up":{"uv":[20,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1868,-4.6989,-6.6037],"size":[0.0393,0.5774,0.2308],"pivot":[-0.1975,-4.1215,-10.2037],"rotation":[23.9759,7.3011,-15.9477],"uv":{"north":{"uv":[41,26],"uv_size":[0.25,0.5]},"east":{"uv":[27,41],"uv_size":[0.25,0.5]},"south":{"uv":[41,27],"uv_size":[0.25,0.5]},"west":{"uv":[28,41],"uv_size":[0.25,0.5]},"up":{"uv":[43,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0975,-4.5489,-6.6037],"size":[0.05,0.4274,0.2308],"pivot":[0.1975,-4.1215,-10.2037],"rotation":[23.9759,-7.3011,15.9477],"uv":{"north":{"uv":[39,25],"uv_size":[0.25,0.5]},"east":{"uv":[26,39],"uv_size":[0.25,0.5]},"south":{"uv":[39,26],"uv_size":[0.25,0.5]},"west":{"uv":[27,39],"uv_size":[0.25,0.5]},"up":{"uv":[21,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0025,-4.3989,-6.6037],"size":[0.1,0.2774,0.2308],"pivot":[0.1975,-4.1215,-10.2037],"rotation":[23.9759,-7.3011,15.9477],"uv":{"north":{"uv":[22,46],"uv_size":[0.25,0.25]},"east":{"uv":[46,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,46],"uv_size":[0.25,0.25]},"west":{"uv":[46,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1975,-4.7489,-10.2037],"size":[0,0.6274,3.8308],"pivot":[0.1975,-4.1215,-10.2037],"rotation":[23.9759,-7.3011,15.9477],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.75]},"east":{"uv":[9,11],"uv_size":[3.75,0.75]},"south":{"uv":[0,0],"uv_size":[0,0.75]},"west":{"uv":[0,12],"uv_size":[3.75,0.75]},"up":{"uv":[0,0],"uv_size":[0,3.75]},"down":{"uv":[0,3.75],"uv_size":[0,-3.75]}}},{"origin":[-0.0442,-3.0698,-10.1504],"size":[0.2828,2.2,0.2828],"pivot":[0.1558,-2.2698,-9.8504],"rotation":[0,45,0],"uv":{"north":{"uv":[24,4],"uv_size":[0.25,2.25]},"east":{"uv":[5,24],"uv_size":[0.25,2.25]},"south":{"uv":[24,7],"uv_size":[0.25,2.25]},"west":{"uv":[8,24],"uv_size":[0.25,2.25]},"up":{"uv":[25,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2069,-7.5031,-10.8625],"size":[0.4139,3.2179,0.5481],"inflate":-0.002,"pivot":[-0.0053,-3.8868,-10.5159],"rotation":[115,0,0],"uv":{"north":{"uv":[13,9],"uv_size":[0.5,3.25]},"east":{"uv":[10,13],"uv_size":[0.5,3.25]},"south":{"uv":[13,13],"uv_size":[0.5,3.25]},"west":{"uv":[4,14],"uv_size":[0.5,3.25]},"up":{"uv":[29,25],"uv_size":[0.5,0.5]},"down":{"uv":[29,26.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.027,-8.2376,-10.9765],"size":[0.0536,3.8586,0.9965],"inflate":-0.002,"pivot":[-0.175,-4.1975,-10.3749],"rotation":[115,0,0],"uv":{"north":{"uv":[19,12],"uv_size":[0.25,3.75]},"east":{"uv":[8,4],"uv_size":[1,3.75]},"south":{"uv":[16,19],"uv_size":[0.25,3.75]},"west":{"uv":[8,8],"uv_size":[1,3.75]},"up":{"uv":[29,27],"uv_size":[0.25,1]},"down":{"uv":[29,29],"uv_size":[0.25,-1]}}},{"origin":[-0.0654,-3.02,-9.0767],"size":[0.2863,1.2179,0.2863],"inflate":-0.002,"pivot":[0.1362,-2.8111,-8.8027],"rotation":[108.2489,-17.3877,42.1863],"uv":{"north":{"uv":[25,28],"uv_size":[0.25,1.25]},"east":{"uv":[26,28],"uv_size":[0.25,1.25]},"south":{"uv":[28,26],"uv_size":[0.25,1.25]},"west":{"uv":[27,28],"uv_size":[0.25,1.25]},"up":{"uv":[26,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1993,-6.9031,-10.3175],"size":[0.4032,0.8179,0.4032],"inflate":-0.002,"pivot":[0.0023,-3.8868,-10.5159],"rotation":[115,0,0],"uv":{"north":{"uv":[3,27],"uv_size":[0.5,0.75]},"east":{"uv":[4,27],"uv_size":[0.5,0.75]},"south":{"uv":[27,4],"uv_size":[0.5,0.75]},"west":{"uv":[5,27],"uv_size":[0.5,0.75]},"up":{"uv":[29,29],"uv_size":[0.5,0.5]},"down":{"uv":[30,0.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.1985,-3.8876,-10.7167],"size":[0.4016,0.6016,0.4016],"inflate":-0.001,"pivot":[0.0023,-2.6868,-10.5159],"rotation":[50,0,0],"uv":{"north":{"uv":[30,1],"uv_size":[0.5,0.5]},"east":{"uv":[30,2],"uv_size":[0.5,0.5]},"south":{"uv":[30,3],"uv_size":[0.5,0.5]},"west":{"uv":[30,4],"uv_size":[0.5,0.5]},"up":{"uv":[5,30],"uv_size":[0.5,0.5]},"down":{"uv":[30,5.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.1642,-3.413,-9.8989],"size":[0.2846,0.6016,0.2846],"inflate":-0.001,"pivot":[-0.0805,-3.1122,-9.6981],"rotation":[59.3179,-27.034,-37.4537],"uv":{"north":{"uv":[39,27],"uv_size":[0.25,0.5]},"east":{"uv":[28,39],"uv_size":[0.25,0.5]},"south":{"uv":[39,28],"uv_size":[0.25,0.5]},"west":{"uv":[29,39],"uv_size":[0.25,0.5]},"up":{"uv":[27,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1985,-5.6066,-8.1403],"size":[0.4016,0.4016,0.3671],"inflate":-0.001,"pivot":[0.0023,-3.6058,-8.424],"rotation":[115,0,0],"uv":{"north":{"uv":[6,30],"uv_size":[0.5,0.5]},"east":{"uv":[39,29],"uv_size":[0.25,0.5]},"south":{"uv":[30,6],"uv_size":[0.5,0.5]},"west":{"uv":[30,39],"uv_size":[0.25,0.5]},"up":{"uv":[39,30],"uv_size":[0.5,0.25]},"down":{"uv":[31,39.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1985,-1.0706,-9.5219],"size":[0.4016,1.3016,1.6016],"inflate":-0.001,"pivot":[0.0023,-0.4198,-9.1211],"rotation":[40,0,0],"uv":{"north":{"uv":[23,7],"uv_size":[0.5,1.25]},"east":{"uv":[11,12],"uv_size":[1.5,1.25]},"south":{"uv":[23,9],"uv_size":[0.5,1.25]},"west":{"uv":[0,13],"uv_size":[1.5,1.25]},"up":{"uv":[9,20],"uv_size":[0.5,1.5]},"down":{"uv":[20,17.5],"uv_size":[0.5,-1.5]}}},{"origin":[-0.0258,-1.2706,-9.5219],"size":[0.0516,0.2016,1.6516],"inflate":-0.001,"pivot":[-0.175,-0.4198,-9.1211],"rotation":[40,0,0],"uv":{"north":{"uv":[28,46],"uv_size":[0.25,0.25]},"east":{"uv":[25,2],"uv_size":[1.75,0.25]},"south":{"uv":[46,28],"uv_size":[0.25,0.25]},"west":{"uv":[25,3],"uv_size":[1.75,0.25]},"up":{"uv":[1,25],"uv_size":[0.25,1.75]},"down":{"uv":[3,26.75],"uv_size":[0.25,-1.75]}}},{"origin":[0.2025,-0.7951,-8.8997],"size":[0.2846,0.2846,1.8016],"inflate":-0.001,"pivot":[0.4033,-1.1613,-8.4989],"rotation":[30.6821,27.034,-37.4537],"uv":{"north":{"uv":[29,46],"uv_size":[0.25,0.25]},"east":{"uv":[25,4],"uv_size":[1.75,0.25]},"south":{"uv":[46,29],"uv_size":[0.25,0.25]},"west":{"uv":[25,5],"uv_size":[1.75,0.25]},"up":{"uv":[6,25],"uv_size":[0.25,1.75]},"down":{"uv":[25,7.75],"uv_size":[0.25,-1.75]}}},{"origin":[0.3085,-1.6003,-9.2362],"size":[0.2846,1.3016,0.2846],"inflate":-0.001,"pivot":[0.5093,-0.9495,-9.7524],"rotation":[49.8793,-32.7978,-32.7324],"uv":{"north":{"uv":[28,28],"uv_size":[0.25,1.25]},"east":{"uv":[0,29],"uv_size":[0.25,1.25]},"south":{"uv":[29,0],"uv_size":[0.25,1.25]},"west":{"uv":[1,29],"uv_size":[0.25,1.25]},"up":{"uv":[30,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1993,-1.0714,-10.5227],"size":[0.4032,0.5032,0.8032],"inflate":-0.002,"pivot":[0.0023,-0.4198,-10.3211],"rotation":[52.5,0,0],"uv":{"north":{"uv":[30,7],"uv_size":[0.5,0.5]},"east":{"uv":[27,5],"uv_size":[0.75,0.5]},"south":{"uv":[30,8],"uv_size":[0.5,0.5]},"west":{"uv":[6,27],"uv_size":[0.75,0.5]},"up":{"uv":[27,6],"uv_size":[0.5,0.75]},"down":{"uv":[7,27.75],"uv_size":[0.5,-0.75]}}},{"origin":[-0.3641,-1.0992,-10.2037],"size":[0.2863,0.2863,0.8032],"inflate":-0.002,"pivot":[-0.1625,-0.6646,-10.0021],"rotation":[42.6612,34.124,-31.3314],"uv":{"north":{"uv":[31,46],"uv_size":[0.25,0.25]},"east":{"uv":[3,34],"uv_size":[0.75,0.25]},"south":{"uv":[46,31],"uv_size":[0.25,0.25]},"west":{"uv":[34,3],"uv_size":[0.75,0.25]},"up":{"uv":[4,34],"uv_size":[0.25,0.75]},"down":{"uv":[34,4.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.1977,-2.8748,-9.0097],"size":[0.4,2.1,0.4],"pivot":[-0.1977,-1.1748,-9.0097],"rotation":[7.5,0,0],"uv":{"north":{"uv":[18,8],"uv_size":[0.5,2]},"east":{"uv":[18,13],"uv_size":[0.5,2]},"south":{"uv":[19,8],"uv_size":[0.5,2]},"west":{"uv":[19,10],"uv_size":[0.5,2]},"up":{"uv":[9,30],"uv_size":[0.5,0.5]},"down":{"uv":[30,9.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.025,-1.6748,-8.6097],"size":[0.05,0.9,0.2],"pivot":[0.375,-1.1748,-9.0097],"rotation":[7.5,0,0],"uv":{"north":{"uv":[10,30],"uv_size":[0.25,1]},"east":{"uv":[30,10],"uv_size":[0.25,1]},"south":{"uv":[11,30],"uv_size":[0.25,1]},"west":{"uv":[30,11],"uv_size":[0.25,1]},"up":{"uv":[32,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,32.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1149,-2.017,-8.7283],"size":[0.2828,1.3,0.2828],"pivot":[0.0851,-1.767,-8.5283],"rotation":[10.5468,44.5119,7.4366],"uv":{"north":{"uv":[2,29],"uv_size":[0.25,1.25]},"east":{"uv":[3,29],"uv_size":[0.25,1.25]},"south":{"uv":[29,3],"uv_size":[0.25,1.25]},"west":{"uv":[4,29],"uv_size":[0.25,1.25]},"up":{"uv":[33,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.2462,-2.8748,-8.8926],"size":[0.2828,2.1,0.2828],"pivot":[-0.3634,-1.1748,-9.0097],"rotation":[10.5468,44.5119,7.4366],"uv":{"north":{"uv":[24,16],"uv_size":[0.25,2]},"east":{"uv":[17,24],"uv_size":[0.25,2]},"south":{"uv":[19,24],"uv_size":[0.25,2]},"west":{"uv":[20,24],"uv_size":[0.25,2]},"up":{"uv":[34,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1985,-2.6756,-9.0105],"size":[0.4016,0.7016,0.4016],"inflate":-0.001,"pivot":[-0.1977,-1.7748,-9.0097],"rotation":[47.5,0,0],"uv":{"north":{"uv":[27,7],"uv_size":[0.5,0.75]},"east":{"uv":[8,27],"uv_size":[0.5,0.75]},"south":{"uv":[27,8],"uv_size":[0.5,0.75]},"west":{"uv":[9,27],"uv_size":[0.5,0.75]},"up":{"uv":[12,30],"uv_size":[0.5,0.5]},"down":{"uv":[30,12.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.0258,-2.7756,-9.0105],"size":[0.0516,1.0016,0.6016],"inflate":-0.001,"pivot":[-0.375,-1.7748,-9.0097],"rotation":[47.5,0,0],"uv":{"north":{"uv":[13,30],"uv_size":[0.25,1]},"east":{"uv":[24,18],"uv_size":[0.5,1]},"south":{"uv":[30,13],"uv_size":[0.25,1]},"west":{"uv":[24,20],"uv_size":[0.5,1]},"up":{"uv":[39,31],"uv_size":[0.25,0.5]},"down":{"uv":[32,39.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1157,-2.4024,-8.5349],"size":[0.2846,0.9016,0.2846],"inflate":-0.001,"pivot":[0.0851,-1.8516,-8.3341],"rotation":[57.059,28.5362,36.4005],"uv":{"north":{"uv":[14,30],"uv_size":[0.25,1]},"east":{"uv":[30,14],"uv_size":[0.25,1]},"south":{"uv":[15,30],"uv_size":[0.25,1]},"west":{"uv":[30,15],"uv_size":[0.25,1]},"up":{"uv":[35,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1947,-3.968,-8.5431],"size":[0.3893,1.4198,0.3914],"pivot":[-0.1947,-2.3481,-8.5431],"rotation":[82.5,0,0],"uv":{"north":{"uv":[20,18],"uv_size":[0.5,1.5]},"east":{"uv":[19,20],"uv_size":[0.5,1.5]},"south":{"uv":[20,20],"uv_size":[0.5,1.5]},"west":{"uv":[21,0],"uv_size":[0.5,1.5]},"up":{"uv":[16,30],"uv_size":[0.5,0.5]},"down":{"uv":[30,16.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.025,-3.968,-8.1931],"size":[0.05,1.4198,0.0789],"pivot":[0.375,-2.3481,-8.5431],"rotation":[82.5,0,0],"uv":{"north":{"uv":[27,9],"uv_size":[0.25,1.5]},"east":{"uv":[10,27],"uv_size":[0.25,1.5]},"south":{"uv":[11,27],"uv_size":[0.25,1.5]},"west":{"uv":[27,11],"uv_size":[0.25,1.5]},"up":{"uv":[36,46],"uv_size":[0.25,0.25]},"down":{"uv":[46,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1977,0.5302,-8.0211],"size":[0.4,0.2,0.2],"pivot":[0.0023,0.6302,-7.9211],"rotation":[45,0,0],"uv":{"north":{"uv":[39,32],"uv_size":[0.5,0.25]},"east":{"uv":[37,46],"uv_size":[0.25,0.25]},"south":{"uv":[33,39],"uv_size":[0.5,0.25]},"west":{"uv":[46,37],"uv_size":[0.25,0.25]},"up":{"uv":[39,33],"uv_size":[0.5,0.25]},"down":{"uv":[34,39.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1947,0.0302,-8.0211],"size":[0.3893,0.2,0.2],"pivot":[0.0053,0.1302,-7.9211],"rotation":[45,0,0],"uv":{"north":{"uv":[39,34],"uv_size":[0.5,0.25]},"east":{"uv":[38,46],"uv_size":[0.25,0.25]},"south":{"uv":[35,39],"uv_size":[0.5,0.25]},"west":{"uv":[46,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,35],"uv_size":[0.5,0.25]},"down":{"uv":[36,39.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.1977,-0.2698,-7.9211],"size":[0.4,0.4,2.8],"uv":{"north":{"uv":[17,30],"uv_size":[0.5,0.5]},"east":{"uv":[14,13],"uv_size":[2.75,0.5]},"south":{"uv":[30,17],"uv_size":[0.5,0.5]},"west":{"uv":[14,14],"uv_size":[2.75,0.5]},"up":{"uv":[12,14],"uv_size":[0.5,2.75]},"down":{"uv":[0,17.75],"uv_size":[0.5,-2.75]}}},{"origin":[-0.15,0.1302,-7.9211],"size":[0.3,0.5,2.8],"uv":{"north":{"uv":[39,36],"uv_size":[0.25,0.5]},"east":{"uv":[5,15],"uv_size":[2.75,0.5]},"south":{"uv":[37,39],"uv_size":[0.25,0.5]},"west":{"uv":[15,8],"uv_size":[2.75,0.5]},"up":{"uv":[17,21],"uv_size":[0.25,2.75]},"down":{"uv":[21,19.75],"uv_size":[0.25,-2.75]}}},{"origin":[-0.1607,0.2156,-7.5545],"size":[0.3213,0.3,1.7827],"uv":{"east":{"uv":[3.75,121.25],"uv_size":[59.75,6.75]},"west":{"uv":[3.75,121.25],"uv_size":[59.75,6.75]}}},{"origin":[-0.1607,0.5302,-7.9211],"size":[0.3213,0.15,2.8],"uv":{"north":{"uv":[32,52],"uv_size":[0.25,0.25]},"east":{"uv":[21,20],"uv_size":[2.75,0.25]},"south":{"uv":[52,32],"uv_size":[0.25,0.25]},"west":{"uv":[21,21],"uv_size":[2.75,0.25]},"up":{"uv":[6,22],"uv_size":[0.25,2.75]},"down":{"uv":[7,24.75],"uv_size":[0.25,-2.75]}}},{"origin":[-0.1607,0.0516,-7.9211],"size":[0.3213,0.15,2.8],"uv":{"north":{"uv":[33,52],"uv_size":[0.25,0.25]},"east":{"uv":[22,0],"uv_size":[2.75,0.25]},"south":{"uv":[52,33],"uv_size":[0.25,0.25]},"west":{"uv":[22,1],"uv_size":[2.75,0.25]},"up":{"uv":[9,22],"uv_size":[0.25,2.75]},"down":{"uv":[10,24.75],"uv_size":[0.25,-2.75]}}},{"origin":[-0.1977,-0.2698,-5.1211],"size":[0.4,0.05,13.2],"uv":{"north":{"uv":[39,37],"uv_size":[0.5,0.25]},"east":{"uv":[9,6],"uv_size":[13.25,0.25]},"south":{"uv":[38,39],"uv_size":[0.5,0.25]},"west":{"uv":[9,7],"uv_size":[13.25,0.25]},"up":{"uv":[6,0],"uv_size":[0.5,13.25]},"down":{"uv":[7,13.25],"uv_size":[0.5,-13.25]}}},{"origin":[-0.2023,-0.2198,7.8789],"size":[0.4,1.2,0.2],"uv":{"north":{"uv":[11,23],"uv_size":[0.5,1.25]},"east":{"uv":[29,5],"uv_size":[0.25,1.25]},"south":{"uv":[12,23],"uv_size":[0.5,1.25]},"west":{"uv":[7,29],"uv_size":[0.25,1.25]},"up":{"uv":[39,38],"uv_size":[0.5,0.25]},"down":{"uv":[39,39.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2023,-0.2698,9.2789],"size":[0.4,1.3,0.3],"uv":{"north":{"uv":[13,23],"uv_size":[0.5,1.25]},"east":{"uv":[29,7],"uv_size":[0.25,1.25]},"south":{"uv":[23,15],"uv_size":[0.5,1.25]},"west":{"uv":[8,29],"uv_size":[0.25,1.25]},"up":{"uv":[0,40],"uv_size":[0.5,0.25]},"down":{"uv":[40,0.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.0023,0.5302,9.5789],"size":[0.2107,0.5,1.6],"uv":{"north":{"uv":[3,40],"uv_size":[0.25,0.5]},"east":{"uv":[21,10],"uv_size":[1.5,0.5]},"south":{"uv":[40,3],"uv_size":[0.25,0.5]},"west":{"uv":[21,11],"uv_size":[1.5,0.5]},"up":{"uv":[23,27],"uv_size":[0.25,1.5]},"down":{"uv":[24,28.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.2084,0.5302,9.5789],"size":[0.2107,0.5,1.6],"uv":{"north":{"uv":[3.25,40],"uv_size":[-0.25,0.5]},"east":{"uv":[22.5,11],"uv_size":[-1.5,0.5]},"south":{"uv":[40.25,3],"uv_size":[-0.25,0.5]},"west":{"uv":[22.5,10],"uv_size":[-1.5,0.5]},"up":{"uv":[23.25,27],"uv_size":[-0.25,1.5]},"down":{"uv":[24.25,28.5],"uv_size":[-0.25,-1.5]}}},{"origin":[-0.0023,0.0802,9.7789],"size":[0.2,0.15,1.4],"pivot":[0.1977,0.2302,11.1789],"rotation":[-5,0,0],"uv":{"north":{"uv":[44,46],"uv_size":[0.25,0.25]},"east":{"uv":[27,24],"uv_size":[1.5,0.25]},"south":{"uv":[46,44],"uv_size":[0.25,0.25]},"west":{"uv":[27,25],"uv_size":[1.5,0.25]},"up":{"uv":[27,26],"uv_size":[0.25,1.5]},"down":{"uv":[28,1.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.0023,0.5302,9.7789],"size":[0.2,0.15,1.4],"pivot":[0.1977,0.5302,11.1789],"rotation":[5,0,0],"uv":{"north":{"uv":[45,46],"uv_size":[0.25,0.25]},"east":{"uv":[28,2],"uv_size":[1.5,0.25]},"south":{"uv":[46,45],"uv_size":[0.25,0.25]},"west":{"uv":[3,28],"uv_size":[1.5,0.25]},"up":{"uv":[28,3],"uv_size":[0.25,1.5]},"down":{"uv":[5,29.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.0023,-0.2698,9.5789],"size":[0.2107,0.5,1.6],"uv":{"north":{"uv":[4,40],"uv_size":[0.25,0.5]},"east":{"uv":[14,21],"uv_size":[1.5,0.5]},"south":{"uv":[40,4],"uv_size":[0.25,0.5]},"west":{"uv":[21,16],"uv_size":[1.5,0.5]},"up":{"uv":[28,5],"uv_size":[0.25,1.5]},"down":{"uv":[6,29.5],"uv_size":[0.25,-1.5]}}},{"origin":[-0.1759,0.2302,9.5789],"size":[0.3736,0.3,0.2108],"uv":{"north":{"uv":[46,46],"uv_size":[0.25,0.25]},"east":{"uv":[0,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,0],"uv_size":[0.25,0.25]},"west":{"uv":[1,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1977,0.2302,9.5789],"size":[0.3736,0.3,0.2108],"uv":{"north":{"uv":[46.25,46],"uv_size":[-0.25,0.25]},"east":{"uv":[1.25,47],"uv_size":[-0.25,0.25]},"south":{"uv":[47.25,0],"uv_size":[-0.25,0.25]},"west":{"uv":[0.25,47],"uv_size":[-0.25,0.25]},"up":{"uv":[47.25,1],"uv_size":[-0.25,0.25]},"down":{"uv":[2.25,47.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1977,0.5302,9.7789],"size":[0.2,0.15,1.4],"pivot":[-0.1977,0.5302,11.1789],"rotation":[5,0,0],"uv":{"north":{"uv":[45.25,46],"uv_size":[-0.25,0.25]},"east":{"uv":[4.5,28],"uv_size":[-1.5,0.25]},"south":{"uv":[46.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[29.5,2],"uv_size":[-1.5,0.25]},"up":{"uv":[28.25,3],"uv_size":[-0.25,1.5]},"down":{"uv":[5.25,29.5],"uv_size":[-0.25,-1.5]}}},{"origin":[-0.1977,0.0802,9.7789],"size":[0.2,0.15,1.4],"pivot":[-0.1977,0.2302,11.1789],"rotation":[-5,0,0],"uv":{"north":{"uv":[44.25,46],"uv_size":[-0.25,0.25]},"east":{"uv":[28.5,25],"uv_size":[-1.5,0.25]},"south":{"uv":[46.25,44],"uv_size":[-0.25,0.25]},"west":{"uv":[28.5,24],"uv_size":[-1.5,0.25]},"up":{"uv":[27.25,26],"uv_size":[-0.25,1.5]},"down":{"uv":[28.25,1.5],"uv_size":[-0.25,-1.5]}}},{"origin":[-0.2084,-0.2698,9.5789],"size":[0.2107,0.5,1.6],"uv":{"north":{"uv":[4.25,40],"uv_size":[-0.25,0.5]},"east":{"uv":[22.5,16],"uv_size":[-1.5,0.5]},"south":{"uv":[40.25,4],"uv_size":[-0.25,0.5]},"west":{"uv":[15.5,21],"uv_size":[-1.5,0.5]},"up":{"uv":[28.25,5],"uv_size":[-0.25,1.5]},"down":{"uv":[6.25,29.5],"uv_size":[-0.25,-1.5]}}},{"origin":[-0.2023,-0.2698,8.0789],"size":[0.4,1.3,0.4],"uv":{"north":{"uv":[16,23],"uv_size":[0.5,1.25]},"east":{"uv":[23,17],"uv_size":[0.5,1.25]},"south":{"uv":[18,23],"uv_size":[0.5,1.25]},"west":{"uv":[23,22],"uv_size":[0.5,1.25]},"up":{"uv":[18,30],"uv_size":[0.5,0.5]},"down":{"uv":[30,18.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2023,0.4302,8.7789],"size":[0.4,0.6,0.5],"uv":{"north":{"uv":[19,30],"uv_size":[0.5,0.5]},"east":{"uv":[30,19],"uv_size":[0.5,0.5]},"south":{"uv":[20,30],"uv_size":[0.5,0.5]},"west":{"uv":[30,20],"uv_size":[0.5,0.5]},"up":{"uv":[21,30],"uv_size":[0.5,0.5]},"down":{"uv":[30,21.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2023,-0.2698,8.7789],"size":[0.4,0.6,0.5],"uv":{"north":{"uv":[22,30],"uv_size":[0.5,0.5]},"east":{"uv":[30,22],"uv_size":[0.5,0.5]},"south":{"uv":[23,30],"uv_size":[0.5,0.5]},"west":{"uv":[30,23],"uv_size":[0.5,0.5]},"up":{"uv":[24,30],"uv_size":[0.5,0.5]},"down":{"uv":[30,24.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.1,0.3302,8.7789],"size":[0.2,0.1,0.5],"uv":{"north":{"uv":[47,2],"uv_size":[0.25,0.25]},"east":{"uv":[5,40],"uv_size":[0.5,0.25]},"south":{"uv":[3,47],"uv_size":[0.25,0.25]},"west":{"uv":[40,5],"uv_size":[0.5,0.25]},"up":{"uv":[6,40],"uv_size":[0.25,0.5]},"down":{"uv":[40,6.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.2023,0.5302,8.4789],"size":[0.4,0.5,0.3],"uv":{"north":{"uv":[25,30],"uv_size":[0.5,0.5]},"east":{"uv":[7,40],"uv_size":[0.25,0.5]},"south":{"uv":[30,25],"uv_size":[0.5,0.5]},"west":{"uv":[40,7],"uv_size":[0.25,0.5]},"up":{"uv":[8,40],"uv_size":[0.5,0.25]},"down":{"uv":[40,8.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2031,0.4794,8.4281],"size":[0.4016,0.1016,0.1016],"inflate":-0.001,"pivot":[-0.0023,0.5302,8.4789],"rotation":[45,0,0],"uv":{"north":{"uv":[9,40],"uv_size":[0.5,0.25]},"east":{"uv":[47,3],"uv_size":[0.25,0.25]},"south":{"uv":[40,9],"uv_size":[0.5,0.25]},"west":{"uv":[4,47],"uv_size":[0.25,0.25]},"up":{"uv":[10,40],"uv_size":[0.5,0.25]},"down":{"uv":[40,10.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2031,0.1794,8.7281],"size":[0.4016,0.1016,0.1016],"inflate":-0.001,"pivot":[-0.0023,0.2302,8.7789],"rotation":[45,0,0],"uv":{"north":{"uv":[11,40],"uv_size":[0.5,0.25]},"east":{"uv":[47,4],"uv_size":[0.25,0.25]},"south":{"uv":[40,11],"uv_size":[0.5,0.25]},"west":{"uv":[5,47],"uv_size":[0.25,0.25]},"up":{"uv":[12,40],"uv_size":[0.5,0.25]},"down":{"uv":[40,12.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2031,0.1794,8.4281],"size":[0.4016,0.1016,0.1016],"inflate":-0.001,"pivot":[-0.0023,0.2302,8.4789],"rotation":[45,0,0],"uv":{"north":{"uv":[13,40],"uv_size":[0.5,0.25]},"east":{"uv":[47,5],"uv_size":[0.25,0.25]},"south":{"uv":[40,13],"uv_size":[0.5,0.25]},"west":{"uv":[6,47],"uv_size":[0.25,0.25]},"up":{"uv":[14,40],"uv_size":[0.5,0.25]},"down":{"uv":[40,14.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2031,0.4794,8.7281],"size":[0.4016,0.1016,0.1016],"inflate":-0.001,"pivot":[-0.0023,0.5302,8.7789],"rotation":[45,0,0],"uv":{"north":{"uv":[15,40],"uv_size":[0.5,0.25]},"east":{"uv":[47,6],"uv_size":[0.25,0.25]},"south":{"uv":[40,15],"uv_size":[0.5,0.25]},"west":{"uv":[7,47],"uv_size":[0.25,0.25]},"up":{"uv":[16,40],"uv_size":[0.5,0.25]},"down":{"uv":[40,16.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2023,-0.2698,8.4789],"size":[0.4,0.5,0.3],"uv":{"north":{"uv":[26,30],"uv_size":[0.5,0.5]},"east":{"uv":[17,40],"uv_size":[0.25,0.5]},"south":{"uv":[30,26],"uv_size":[0.5,0.5]},"west":{"uv":[40,17],"uv_size":[0.25,0.5]},"up":{"uv":[18,40],"uv_size":[0.5,0.25]},"down":{"uv":[40,18.25],"uv_size":[0.5,-0.25]}}}]},{"name":"bone","parent":"h3","pivot":[0.2021,-1.3023,-8.8533],"cubes":[{"origin":[-0.2131,-1.1069,-8.894],"size":[0.4261,0.1555,0.2728],"inflate":-0.003,"pivot":[0.2021,-1.3023,-8.8533],"rotation":[40,0,0],"uv":{"north":{"uv":[39,13],"uv_size":[0.5,0.25]},"east":{"uv":[45,28],"uv_size":[0.25,0.25]},"south":{"uv":[14,39],"uv_size":[0.5,0.25]},"west":{"uv":[29,45],"uv_size":[0.25,0.25]},"up":{"uv":[39,14],"uv_size":[0.5,0.25]},"down":{"uv":[15,39.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2077,-1.006,-8.8083],"size":[0.4155,0.1555,0.2728],"inflate":-0.003,"pivot":[0.2154,-1.003,-8.8053],"rotation":[67.5,0,0],"uv":{"north":{"uv":[27,40],"uv_size":[0.5,0.25]},"east":{"uv":[34,52],"uv_size":[0.25,0.25]},"south":{"uv":[40,27],"uv_size":[0.5,0.25]},"west":{"uv":[52,34],"uv_size":[0.25,0.25]},"up":{"uv":[28,40],"uv_size":[0.5,0.25]},"down":{"uv":[40,28.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2184,-0.7595,-8.7062],"size":[0.4368,0.1555,0.4728],"inflate":-0.003,"pivot":[0.2047,-0.7565,-8.7032],"rotation":[105,0,0],"uv":{"north":{"uv":[29,40],"uv_size":[0.5,0.25]},"east":{"uv":[40,29],"uv_size":[0.5,0.25]},"south":{"uv":[30,40],"uv_size":[0.5,0.25]},"west":{"uv":[40,30],"uv_size":[0.5,0.25]},"up":{"uv":[27,30],"uv_size":[0.5,0.5]},"down":{"uv":[30,27.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2184,-0.0403,-9.1367],"size":[0.4368,0.1555,0.4941],"inflate":-0.003,"pivot":[0.2047,-0.0373,-9.1337],"rotation":[130,0,0],"uv":{"north":{"uv":[33,40],"uv_size":[0.5,0.25]},"east":{"uv":[40,33],"uv_size":[0.5,0.25]},"south":{"uv":[34,40],"uv_size":[0.5,0.25]},"west":{"uv":[40,34],"uv_size":[0.5,0.25]},"up":{"uv":[29,30],"uv_size":[0.5,0.5]},"down":{"uv":[30,29.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2131,-0.3086,-8.827],"size":[0.4261,0.1555,0.4728],"inflate":-0.003,"pivot":[0.2101,-0.3056,-8.824],"rotation":[137.5,0,0],"uv":{"north":{"uv":[31,40],"uv_size":[0.5,0.25]},"east":{"uv":[40,31],"uv_size":[0.5,0.25]},"south":{"uv":[32,40],"uv_size":[0.5,0.25]},"west":{"uv":[40,32],"uv_size":[0.5,0.25]},"up":{"uv":[28,30],"uv_size":[0.5,0.5]},"down":{"uv":[30,28.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2131,0.3007,-9.4295],"size":[0.4261,0.1555,0.5941],"inflate":-0.003,"pivot":[0.2101,0.3037,-9.4265],"rotation":[115,0,0],"uv":{"north":{"uv":[35,40],"uv_size":[0.5,0.25]},"east":{"uv":[40,35],"uv_size":[0.5,0.25]},"south":{"uv":[36,40],"uv_size":[0.5,0.25]},"west":{"uv":[40,36],"uv_size":[0.5,0.25]},"up":{"uv":[30,30],"uv_size":[0.5,0.5]},"down":{"uv":[0,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2131,0.8155,-9.671],"size":[0.4261,0.1555,0.8715],"inflate":-0.003,"pivot":[0.2101,0.8185,-9.668],"rotation":[107.5,0,0],"uv":{"north":{"uv":[37,40],"uv_size":[0.5,0.25]},"east":{"uv":[37,26],"uv_size":[0.75,0.25]},"south":{"uv":[40,37],"uv_size":[0.5,0.25]},"west":{"uv":[27,37],"uv_size":[0.75,0.25]},"up":{"uv":[28,12],"uv_size":[0.5,0.75]},"down":{"uv":[28,13.75],"uv_size":[0.5,-0.75]}}}]},{"name":"bone2","parent":"h3","pivot":[0.2021,-1.0023,-9.1033],"cubes":[{"origin":[-0.2099,-0.8411,-9.1639],"size":[0.4197,0.1076,0.1981],"inflate":-0.003,"pivot":[0.2014,-0.973,-9.1246],"rotation":[40,0,0],"uv":{"north":{"uv":[38,40],"uv_size":[0.5,0.25]},"east":{"uv":[35,52],"uv_size":[0.25,0.25]},"south":{"uv":[40,38],"uv_size":[0.5,0.25]},"west":{"uv":[52,35],"uv_size":[0.25,0.25]},"up":{"uv":[39,40],"uv_size":[0.5,0.25]},"down":{"uv":[40,39.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-0.5664,-9.4092],"size":[0.4197,0.0756,0.0701],"inflate":-0.003,"pivot":[0.2014,-0.6983,-9.3806],"rotation":[40,0,0],"uv":{"north":{"uv":[41,14],"uv_size":[0.5,0.25]},"east":{"uv":[38,52],"uv_size":[0.25,0.25]},"south":{"uv":[15,41],"uv_size":[0.5,0.25]},"west":{"uv":[52,38],"uv_size":[0.25,0.25]},"up":{"uv":[41,15],"uv_size":[0.5,0.25]},"down":{"uv":[16,41.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-0.4186,-9.3306],"size":[0.4197,0.0756,0.0808],"inflate":-0.003,"pivot":[0.2014,-0.5505,-9.302],"rotation":[87.5,0,0],"uv":{"north":{"uv":[41,16],"uv_size":[0.5,0.25]},"east":{"uv":[39,52],"uv_size":[0.25,0.25]},"south":{"uv":[17,41],"uv_size":[0.5,0.25]},"west":{"uv":[52,39],"uv_size":[0.25,0.25]},"up":{"uv":[41,17],"uv_size":[0.5,0.25]},"down":{"uv":[18,41.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-0.2501,-9.3859],"size":[0.4197,0.0756,0.2194],"inflate":-0.003,"pivot":[0.2014,-0.382,-9.3573],"rotation":[135,0,0],"uv":{"north":{"uv":[41,18],"uv_size":[0.5,0.25]},"east":{"uv":[40,52],"uv_size":[0.25,0.25]},"south":{"uv":[19,41],"uv_size":[0.5,0.25]},"west":{"uv":[52,40],"uv_size":[0.25,0.25]},"up":{"uv":[41,19],"uv_size":[0.5,0.25]},"down":{"uv":[20,41.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-0.0875,-9.5577],"size":[0.4197,0.0756,0.4194],"inflate":-0.003,"pivot":[0.2014,-0.2194,-9.5291],"rotation":[145,0,0],"uv":{"north":{"uv":[41,20],"uv_size":[0.5,0.25]},"east":{"uv":[21,41],"uv_size":[0.5,0.25]},"south":{"uv":[41,21],"uv_size":[0.5,0.25]},"west":{"uv":[22,41],"uv_size":[0.5,0.25]},"up":{"uv":[31,6],"uv_size":[0.5,0.5]},"down":{"uv":[7,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,0.1636,-9.9514],"size":[0.4197,0.0756,0.3981],"inflate":-0.003,"pivot":[0.2014,0.0317,-9.9121],"rotation":[160,0,0],"uv":{"north":{"uv":[41,22],"uv_size":[0.5,0.25]},"east":{"uv":[23,41],"uv_size":[0.5,0.25]},"south":{"uv":[41,23],"uv_size":[0.5,0.25]},"west":{"uv":[24,41],"uv_size":[0.5,0.25]},"up":{"uv":[31,7],"uv_size":[0.5,0.5]},"down":{"uv":[8,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,-0.672,-10.6133],"size":[0.4197,0.0756,0.2808],"inflate":-0.003,"pivot":[0.2069,-0.5993,-10.3355],"rotation":[-174.5,0,0],"uv":{"north":{"uv":[27,42],"uv_size":[0.5,0.25]},"east":{"uv":[53,4],"uv_size":[0.25,0.25]},"south":{"uv":[42,27],"uv_size":[0.5,0.25]},"west":{"uv":[5,53],"uv_size":[0.25,0.25]},"up":{"uv":[28,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,28.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-0.9966,-10.4213],"size":[0.4197,0.0756,0.1101],"inflate":-0.003,"pivot":[0.2069,-0.8493,-10.3142],"rotation":[-174.5,0,0],"uv":{"north":{"uv":[43,4],"uv_size":[0.5,0.25]},"east":{"uv":[53,14],"uv_size":[0.25,0.25]},"south":{"uv":[5,43],"uv_size":[0.5,0.25]},"west":{"uv":[15,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,5],"uv_size":[0.5,0.25]},"down":{"uv":[6,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-0.8651,-10.3943],"size":[0.4197,0.065,0.1101],"inflate":-0.003,"pivot":[0.2069,-0.7178,-10.2872],"rotation":[68,0,0],"uv":{"north":{"uv":[43,28],"uv_size":[0.5,0.25]},"east":{"uv":[53,26],"uv_size":[0.25,0.25]},"south":{"uv":[29,43],"uv_size":[0.5,0.25]},"west":{"uv":[27,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,29],"uv_size":[0.5,0.25]},"down":{"uv":[30,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-0.8784,-10.3761],"size":[0.4197,0.065,0.1421],"inflate":-0.003,"pivot":[0.2069,-0.7311,-10.237],"rotation":[18,0,0],"uv":{"north":{"uv":[43,32],"uv_size":[0.5,0.25]},"east":{"uv":[53,28],"uv_size":[0.25,0.25]},"south":{"uv":[33,43],"uv_size":[0.5,0.25]},"west":{"uv":[29,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,33],"uv_size":[0.5,0.25]},"down":{"uv":[34,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-0.9414,-10.437],"size":[0.4197,0.065,0.1101],"inflate":-0.003,"pivot":[0.2069,-0.7941,-10.3299],"rotation":[133,0,0],"uv":{"north":{"uv":[43,30],"uv_size":[0.5,0.25]},"east":{"uv":[53,27],"uv_size":[0.25,0.25]},"south":{"uv":[31,43],"uv_size":[0.5,0.25]},"west":{"uv":[28,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,31],"uv_size":[0.5,0.25]},"down":{"uv":[32,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-1.3793,-10.6133],"size":[0.4197,0.0756,0.2808],"inflate":-0.003,"pivot":[0.2069,-1.3067,-10.3355],"rotation":[168,0,0],"uv":{"north":{"uv":[35,42],"uv_size":[0.5,0.25]},"east":{"uv":[53,8],"uv_size":[0.25,0.25]},"south":{"uv":[42,35],"uv_size":[0.5,0.25]},"west":{"uv":[9,53],"uv_size":[0.25,0.25]},"up":{"uv":[36,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,36.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-1.4364,-10.2272],"size":[0.4197,0.0756,0.1634],"inflate":-0.003,"pivot":[0.2069,-1.3638,-10.0667],"rotation":[178,0,0],"uv":{"north":{"uv":[37,42],"uv_size":[0.5,0.25]},"east":{"uv":[53,9],"uv_size":[0.25,0.25]},"south":{"uv":[42,37],"uv_size":[0.5,0.25]},"west":{"uv":[10,53],"uv_size":[0.25,0.25]},"up":{"uv":[38,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,38.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-1.2523,-10.2332],"size":[0.4197,0.0756,0.1634],"inflate":-0.003,"pivot":[0.2069,-1.1797,-10.0727],"rotation":[173,0,0],"uv":{"north":{"uv":[41,42],"uv_size":[0.5,0.25]},"east":{"uv":[53,11],"uv_size":[0.25,0.25]},"south":{"uv":[42,41],"uv_size":[0.5,0.25]},"west":{"uv":[12,53],"uv_size":[0.25,0.25]},"up":{"uv":[42,42],"uv_size":[0.5,0.25]},"down":{"uv":[0,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-1.172,-10.6133],"size":[0.4197,0.0756,0.2808],"inflate":-0.003,"pivot":[0.2069,-1.0993,-10.3355],"rotation":[163,0,0],"uv":{"north":{"uv":[39,42],"uv_size":[0.5,0.25]},"east":{"uv":[53,10],"uv_size":[0.25,0.25]},"south":{"uv":[42,39],"uv_size":[0.5,0.25]},"west":{"uv":[11,53],"uv_size":[0.25,0.25]},"up":{"uv":[40,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,40.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-1.576,-10.6133],"size":[0.4197,0.0756,0.2808],"inflate":-0.003,"pivot":[0.2069,-1.5033,-10.3355],"rotation":[163,0,0],"uv":{"north":{"uv":[43,2],"uv_size":[0.5,0.25]},"east":{"uv":[53,13],"uv_size":[0.25,0.25]},"south":{"uv":[3,43],"uv_size":[0.5,0.25]},"west":{"uv":[14,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,3],"uv_size":[0.5,0.25]},"down":{"uv":[4,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-1.876,-10.6133],"size":[0.4197,0.0756,0.2808],"inflate":-0.003,"pivot":[0.2069,-1.8033,-10.3355],"rotation":[130.5,0,0],"uv":{"north":{"uv":[43,10],"uv_size":[0.5,0.25]},"east":{"uv":[53,17],"uv_size":[0.25,0.25]},"south":{"uv":[11,43],"uv_size":[0.5,0.25]},"west":{"uv":[18,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,11],"uv_size":[0.5,0.25]},"down":{"uv":[12,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-2.0524,-10.4077],"size":[0.4197,0.0756,0.2381],"inflate":-0.003,"pivot":[0.2069,-1.9797,-10.1726],"rotation":[100.5,0,0],"uv":{"north":{"uv":[43,12],"uv_size":[0.5,0.25]},"east":{"uv":[53,18],"uv_size":[0.25,0.25]},"south":{"uv":[13,43],"uv_size":[0.5,0.25]},"west":{"uv":[19,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,13],"uv_size":[0.5,0.25]},"down":{"uv":[14,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-2.2534,-10.365],"size":[0.4197,0.0756,0.2381],"inflate":-0.003,"pivot":[0.2069,-2.1808,-10.1299],"rotation":[78,0,0],"uv":{"north":{"uv":[43,14],"uv_size":[0.5,0.25]},"east":{"uv":[53,19],"uv_size":[0.25,0.25]},"south":{"uv":[15,43],"uv_size":[0.5,0.25]},"west":{"uv":[20,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,15],"uv_size":[0.5,0.25]},"down":{"uv":[16,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-2.0781,-8.397],"size":[0.4197,0.0756,0.2701],"inflate":-0.003,"pivot":[0.2069,-2.0054,-8.1299],"rotation":[93,0,0],"uv":{"north":{"uv":[43,38],"uv_size":[0.5,0.25]},"east":{"uv":[53,30],"uv_size":[0.25,0.25]},"south":{"uv":[39,43],"uv_size":[0.5,0.25]},"west":{"uv":[31,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,39],"uv_size":[0.5,0.25]},"down":{"uv":[40,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-1.6161,-9.0937],"size":[0.4197,0.0756,0.1528],"inflate":-0.003,"pivot":[0.2069,-1.5434,-8.9439],"rotation":[-124.5,0,0],"uv":{"north":{"uv":[43,42],"uv_size":[0.5,0.25]},"east":{"uv":[53,31],"uv_size":[0.25,0.25]},"south":{"uv":[43,43],"uv_size":[0.5,0.25]},"west":{"uv":[32,53],"uv_size":[0.25,0.25]},"up":{"uv":[0,44],"uv_size":[0.5,0.25]},"down":{"uv":[44,0.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-1.5235,-9.0523],"size":[0.4197,0.0756,0.1528],"inflate":-0.003,"pivot":[0.2069,-1.4509,-8.9025],"rotation":[-167,0,0],"uv":{"north":{"uv":[1,44],"uv_size":[0.5,0.25]},"east":{"uv":[53,32],"uv_size":[0.25,0.25]},"south":{"uv":[44,1],"uv_size":[0.5,0.25]},"west":{"uv":[33,53],"uv_size":[0.25,0.25]},"up":{"uv":[2,44],"uv_size":[0.5,0.25]},"down":{"uv":[44,2.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-1.4723,-9.0698],"size":[0.4197,0.0756,0.2488],"inflate":-0.003,"pivot":[0.2069,-1.3997,-8.824],"rotation":[135.5,0,0],"uv":{"north":{"uv":[3,44],"uv_size":[0.5,0.25]},"east":{"uv":[53,33],"uv_size":[0.25,0.25]},"south":{"uv":[44,3],"uv_size":[0.5,0.25]},"west":{"uv":[34,53],"uv_size":[0.25,0.25]},"up":{"uv":[4,44],"uv_size":[0.5,0.25]},"down":{"uv":[44,4.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-1.6114,-9.2136],"size":[0.4197,0.0756,0.5474],"inflate":-0.003,"pivot":[0.2069,-1.5388,-8.6691],"rotation":[105.5,0,0],"uv":{"north":{"uv":[5,44],"uv_size":[0.5,0.25]},"east":{"uv":[44,5],"uv_size":[0.5,0.25]},"south":{"uv":[6,44],"uv_size":[0.5,0.25]},"west":{"uv":[44,6],"uv_size":[0.5,0.25]},"up":{"uv":[31,17],"uv_size":[0.5,0.5]},"down":{"uv":[18,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,-1.7181,-9.4529],"size":[0.4197,0.1716,0.2061],"inflate":-0.003,"pivot":[0.2069,-1.5494,-8.9405],"rotation":[108,0,0],"uv":{"north":{"uv":[13,44],"uv_size":[0.5,0.25]},"east":{"uv":[53,37],"uv_size":[0.25,0.25]},"south":{"uv":[44,13],"uv_size":[0.5,0.25]},"west":{"uv":[38,53],"uv_size":[0.25,0.25]},"up":{"uv":[14,44],"uv_size":[0.5,0.25]},"down":{"uv":[44,14.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2152,-2.0217,-8.9162],"size":[0.4304,0.1076,0.1101],"inflate":-0.003,"pivot":[0.2122,-1.9063,-8.8091],"rotation":[120.5,0,0],"uv":{"north":{"uv":[15,44],"uv_size":[0.5,0.25]},"east":{"uv":[53,38],"uv_size":[0.25,0.25]},"south":{"uv":[44,15],"uv_size":[0.5,0.25]},"west":{"uv":[39,53],"uv_size":[0.25,0.25]},"up":{"uv":[16,44],"uv_size":[0.5,0.25]},"down":{"uv":[44,16.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-2.0942,-8.7697],"size":[0.4197,0.0756,0.2488],"inflate":-0.003,"pivot":[0.2069,-2.0215,-8.5239],"rotation":[73,0,0],"uv":{"north":{"uv":[7,44],"uv_size":[0.5,0.25]},"east":{"uv":[53,34],"uv_size":[0.25,0.25]},"south":{"uv":[44,7],"uv_size":[0.5,0.25]},"west":{"uv":[35,53],"uv_size":[0.25,0.25]},"up":{"uv":[8,44],"uv_size":[0.5,0.25]},"down":{"uv":[44,8.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2152,-2.29,-8.7719],"size":[0.4304,0.0756,0.2061],"inflate":-0.003,"pivot":[0.2015,-2.2174,-8.5688],"rotation":[35.5,0,0],"uv":{"north":{"uv":[9,44],"uv_size":[0.5,0.25]},"east":{"uv":[53,35],"uv_size":[0.25,0.25]},"south":{"uv":[44,9],"uv_size":[0.5,0.25]},"west":{"uv":[36,53],"uv_size":[0.25,0.25]},"up":{"uv":[10,44],"uv_size":[0.5,0.25]},"down":{"uv":[44,10.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-2.3972,-8.8711],"size":[0.4197,0.0756,0.2061],"inflate":-0.003,"pivot":[0.2069,-2.3246,-8.668],"rotation":[-19.5,0,0],"uv":{"north":{"uv":[11,44],"uv_size":[0.5,0.25]},"east":{"uv":[53,36],"uv_size":[0.25,0.25]},"south":{"uv":[44,11],"uv_size":[0.5,0.25]},"west":{"uv":[37,53],"uv_size":[0.25,0.25]},"up":{"uv":[12,44],"uv_size":[0.5,0.25]},"down":{"uv":[44,12.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2152,-2.3121,-8.4955],"size":[0.4304,0.0756,0.3874],"inflate":-0.003,"pivot":[0.2015,-2.2394,-8.1111],"rotation":[68,0,0],"uv":{"north":{"uv":[43,40],"uv_size":[0.5,0.25]},"east":{"uv":[41,43],"uv_size":[0.5,0.25]},"south":{"uv":[43,41],"uv_size":[0.5,0.25]},"west":{"uv":[42,43],"uv_size":[0.5,0.25]},"up":{"uv":[31,16],"uv_size":[0.5,0.5]},"down":{"uv":[17,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2152,-2.6233,-8.5866],"size":[0.4304,0.0756,0.3874],"inflate":-0.003,"pivot":[0.2015,-2.5507,-8.2021],"rotation":[10.5,0,0],"uv":{"north":{"uv":[17,44],"uv_size":[0.5,0.25]},"east":{"uv":[44,17],"uv_size":[0.5,0.25]},"south":{"uv":[18,44],"uv_size":[0.5,0.25]},"west":{"uv":[44,18],"uv_size":[0.5,0.25]},"up":{"uv":[31,18],"uv_size":[0.5,0.5]},"down":{"uv":[19,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,-2.6967,-8.8375],"size":[0.4197,0.0756,0.3021],"inflate":-0.003,"pivot":[0.2069,-2.6241,-8.5384],"rotation":[-22,0,0],"uv":{"north":{"uv":[19,44],"uv_size":[0.5,0.25]},"east":{"uv":[53,39],"uv_size":[0.25,0.25]},"south":{"uv":[44,19],"uv_size":[0.5,0.25]},"west":{"uv":[40,53],"uv_size":[0.25,0.25]},"up":{"uv":[20,44],"uv_size":[0.5,0.25]},"down":{"uv":[44,20.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-3.8507,-10.3435],"size":[0.4197,0.0756,0.5581],"inflate":-0.003,"pivot":[0.2069,-3.7781,-9.7884],"rotation":[-22,0,0],"uv":{"north":{"uv":[26,54],"uv_size":[0.5,0.25]},"east":{"uv":[54,26],"uv_size":[0.5,0.25]},"south":{"uv":[27,54],"uv_size":[0.5,0.25]},"west":{"uv":[54,27],"uv_size":[0.5,0.25]},"up":{"uv":[7,54],"uv_size":[0.5,0.5]},"down":{"uv":[54,7.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,-3.5901,-10.3435],"size":[0.4197,0.0756,0.3768],"inflate":-0.003,"pivot":[0.2069,-3.5174,-9.7884],"rotation":[-22,0,0],"uv":{"north":{"uv":[19,44],"uv_size":[0.5,0.25]},"east":{"uv":[53,39],"uv_size":[0.25,0.25]},"south":{"uv":[44,19],"uv_size":[0.5,0.25]},"west":{"uv":[40,53],"uv_size":[0.25,0.25]},"up":{"uv":[20,44],"uv_size":[0.5,0.25]},"down":{"uv":[44,20.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-3.3499,-10.0341],"size":[0.4197,0.0756,0.3768],"inflate":-0.003,"pivot":[0.2069,-3.2772,-9.4791],"rotation":[18,0,0],"uv":{"north":{"uv":[12,54],"uv_size":[0.5,0.25]},"east":{"uv":[54,12],"uv_size":[0.5,0.25]},"south":{"uv":[13,54],"uv_size":[0.5,0.25]},"west":{"uv":[54,13],"uv_size":[0.5,0.25]},"up":{"uv":[4,54],"uv_size":[0.5,0.5]},"down":{"uv":[54,4.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2152,-3.4492,-9.6562],"size":[0.4304,0.0756,0.2594],"inflate":-0.003,"pivot":[0.2015,-3.3766,-9.1011],"rotation":[-4.5,0,0],"uv":{"north":{"uv":[16,54],"uv_size":[0.5,0.25]},"east":{"uv":[36,54],"uv_size":[0.25,0.25]},"south":{"uv":[54,16],"uv_size":[0.5,0.25]},"west":{"uv":[54,36],"uv_size":[0.25,0.25]},"up":{"uv":[17,54],"uv_size":[0.5,0.25]},"down":{"uv":[54,17.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-3.155,-9.5191],"size":[0.4197,0.0756,0.5594],"inflate":-0.003,"pivot":[0.2069,-3.0824,-8.964],"rotation":[30.5,0,0],"uv":{"north":{"uv":[14,54],"uv_size":[0.5,0.25]},"east":{"uv":[54,14],"uv_size":[0.5,0.25]},"south":{"uv":[15,54],"uv_size":[0.5,0.25]},"west":{"uv":[54,15],"uv_size":[0.5,0.25]},"up":{"uv":[5,54],"uv_size":[0.5,0.5]},"down":{"uv":[54,5.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2152,-3.1976,-8.9675],"size":[0.4304,0.0756,0.2594],"inflate":-0.003,"pivot":[0.2015,-3.125,-8.4124],"rotation":[-4.5,0,0],"uv":{"north":{"uv":[18,54],"uv_size":[0.5,0.25]},"east":{"uv":[37,54],"uv_size":[0.25,0.25]},"south":{"uv":[54,18],"uv_size":[0.5,0.25]},"west":{"uv":[54,37],"uv_size":[0.25,0.25]},"up":{"uv":[19,54],"uv_size":[0.5,0.25]},"down":{"uv":[54,19.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-2.8011,-8.9334],"size":[0.4197,0.0756,0.3594],"inflate":-0.003,"pivot":[0.2069,-2.7284,-8.3783],"rotation":[45.5,0,0],"uv":{"north":{"uv":[20,54],"uv_size":[0.5,0.25]},"east":{"uv":[38,54],"uv_size":[0.25,0.25]},"south":{"uv":[54,20],"uv_size":[0.5,0.25]},"west":{"uv":[54,38],"uv_size":[0.25,0.25]},"up":{"uv":[21,54],"uv_size":[0.5,0.25]},"down":{"uv":[54,21.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2152,-2.7051,-8.5744],"size":[0.4304,0.0756,0.5088],"inflate":-0.003,"pivot":[0.2015,-2.6324,-8.0193],"rotation":[25.5,0,0],"uv":{"north":{"uv":[22,54],"uv_size":[0.5,0.25]},"east":{"uv":[54,22],"uv_size":[0.5,0.25]},"south":{"uv":[23,54],"uv_size":[0.5,0.25]},"west":{"uv":[54,23],"uv_size":[0.5,0.25]},"up":{"uv":[6,54],"uv_size":[0.5,0.5]},"down":{"uv":[54,6.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,-2.3617,-8.2326],"size":[0.4197,0.0756,0.3168],"inflate":-0.003,"pivot":[0.2069,-2.2891,-7.6776],"rotation":[43,0,0],"uv":{"north":{"uv":[24,54],"uv_size":[0.5,0.25]},"east":{"uv":[39,54],"uv_size":[0.25,0.25]},"south":{"uv":[54,24],"uv_size":[0.5,0.25]},"west":{"uv":[54,39],"uv_size":[0.25,0.25]},"up":{"uv":[25,54],"uv_size":[0.5,0.25]},"down":{"uv":[54,25.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-2.0721,-8.1281],"size":[0.4197,0.0756,0.2954],"inflate":-0.003,"pivot":[0.2069,-1.9995,-7.5731],"rotation":[58,0,0],"uv":{"north":{"uv":[19,44],"uv_size":[0.5,0.25]},"east":{"uv":[53,39],"uv_size":[0.25,0.25]},"south":{"uv":[44,19],"uv_size":[0.5,0.25]},"west":{"uv":[40,53],"uv_size":[0.25,0.25]},"up":{"uv":[20,44],"uv_size":[0.5,0.25]},"down":{"uv":[44,20.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2152,-3.7576,-9.8535],"size":[0.4304,0.0756,0.3874],"inflate":-0.003,"pivot":[0.2015,-3.6849,-9.5544],"rotation":[18,0,0],"uv":{"north":{"uv":[28,54],"uv_size":[0.5,0.25]},"east":{"uv":[54,28],"uv_size":[0.5,0.25]},"south":{"uv":[29,54],"uv_size":[0.5,0.25]},"west":{"uv":[54,29],"uv_size":[0.5,0.25]},"up":{"uv":[8,54],"uv_size":[0.5,0.5]},"down":{"uv":[54,8.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,-3.5778,-9.5404],"size":[0.4197,0.0756,0.6434],"inflate":-0.003,"pivot":[0.2069,-3.5051,-9.2413],"rotation":[33,0,0],"uv":{"north":{"uv":[30,54],"uv_size":[0.5,0.25]},"east":{"uv":[10,54],"uv_size":[0.75,0.25]},"south":{"uv":[54,30],"uv_size":[0.5,0.25]},"west":{"uv":[54,10],"uv_size":[0.75,0.25]},"up":{"uv":[2,54],"uv_size":[0.5,0.75]},"down":{"uv":[54,2.75],"uv_size":[0.5,-0.75]}}},{"origin":[-0.2099,-3.2762,-8.9816],"size":[0.4197,0.0756,0.6434],"inflate":-0.003,"pivot":[0.2069,-3.2035,-8.6825],"rotation":[23,0,0],"uv":{"north":{"uv":[31,54],"uv_size":[0.5,0.25]},"east":{"uv":[11,54],"uv_size":[0.75,0.25]},"south":{"uv":[54,31],"uv_size":[0.5,0.25]},"west":{"uv":[54,11],"uv_size":[0.75,0.25]},"up":{"uv":[3,54],"uv_size":[0.5,0.75]},"down":{"uv":[54,3.75],"uv_size":[0.5,-0.75]}}},{"origin":[-0.2099,-3.0888,-8.3763],"size":[0.4197,0.0756,0.5048],"inflate":-0.003,"pivot":[0.2069,-3.0162,-8.0772],"rotation":[10.5,0,0],"uv":{"north":{"uv":[32,54],"uv_size":[0.5,0.25]},"east":{"uv":[54,32],"uv_size":[0.5,0.25]},"south":{"uv":[33,54],"uv_size":[0.5,0.25]},"west":{"uv":[54,33],"uv_size":[0.5,0.25]},"up":{"uv":[9,54],"uv_size":[0.5,0.5]},"down":{"uv":[54,9.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,-2.9101,-7.9445],"size":[0.4197,0.0756,0.3341],"inflate":-0.003,"pivot":[0.2069,-2.8375,-7.6454],"rotation":[30.5,0,0],"uv":{"north":{"uv":[34,54],"uv_size":[0.5,0.25]},"east":{"uv":[40,54],"uv_size":[0.25,0.25]},"south":{"uv":[54,34],"uv_size":[0.5,0.25]},"west":{"uv":[54,40],"uv_size":[0.25,0.25]},"up":{"uv":[35,54],"uv_size":[0.5,0.25]},"down":{"uv":[54,35.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-2.6556,-7.8222],"size":[0.4197,0.0756,0.4301],"inflate":-0.003,"pivot":[0.2069,-2.5829,-7.5231],"rotation":[65.5,0,0],"uv":{"north":{"uv":[19,44],"uv_size":[0.5,0.25]},"east":{"uv":[53,39],"uv_size":[0.25,0.25]},"south":{"uv":[44,19],"uv_size":[0.5,0.25]},"west":{"uv":[40,53],"uv_size":[0.25,0.25]},"up":{"uv":[20,44],"uv_size":[0.5,0.25]},"down":{"uv":[44,20.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-2.4506,-10.4202],"size":[0.4197,0.0756,0.2594],"inflate":-0.003,"pivot":[0.2069,-2.378,-10.1638],"rotation":[50.5,0,0],"uv":{"north":{"uv":[43,16],"uv_size":[0.5,0.25]},"east":{"uv":[53,20],"uv_size":[0.25,0.25]},"south":{"uv":[17,43],"uv_size":[0.5,0.25]},"west":{"uv":[21,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,17],"uv_size":[0.5,0.25]},"down":{"uv":[18,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2152,-2.9506,-10.4202],"size":[0.4304,0.0756,0.2808],"inflate":-0.003,"pivot":[0.2015,-2.878,-10.1638],"rotation":[45.5,0,0],"uv":{"north":{"uv":[43,18],"uv_size":[0.5,0.25]},"east":{"uv":[53,21],"uv_size":[0.25,0.25]},"south":{"uv":[19,43],"uv_size":[0.5,0.25]},"west":{"uv":[22,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,19],"uv_size":[0.5,0.25]},"down":{"uv":[20,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-3.1899,-10.3669],"size":[0.4197,0.0756,0.2808],"inflate":-0.003,"pivot":[0.2069,-3.1173,-10.1105],"rotation":[28,0,0],"uv":{"north":{"uv":[43,24],"uv_size":[0.5,0.25]},"east":{"uv":[53,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,43],"uv_size":[0.5,0.25]},"west":{"uv":[25,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,25],"uv_size":[0.5,0.25]},"down":{"uv":[26,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-3.0176,-10.1775],"size":[0.4197,0.0756,0.2808],"inflate":-0.003,"pivot":[0.2069,-2.945,-9.9211],"rotation":[43,0,0],"uv":{"north":{"uv":[43,26],"uv_size":[0.5,0.25]},"east":{"uv":[53,25],"uv_size":[0.25,0.25]},"south":{"uv":[27,43],"uv_size":[0.5,0.25]},"west":{"uv":[26,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,27],"uv_size":[0.5,0.25]},"down":{"uv":[28,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-2.7268,-10.3026],"size":[0.4197,0.0756,0.1528],"inflate":-0.003,"pivot":[0.2069,-2.6541,-10.0462],"rotation":[63,0,0],"uv":{"north":{"uv":[43,20],"uv_size":[0.5,0.25]},"east":{"uv":[53,22],"uv_size":[0.25,0.25]},"south":{"uv":[21,43],"uv_size":[0.5,0.25]},"west":{"uv":[23,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,21],"uv_size":[0.5,0.25]},"down":{"uv":[22,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-2.6747,-10.1447],"size":[0.4197,0.0756,0.1848],"inflate":-0.003,"pivot":[0.2069,-2.602,-9.8883],"rotation":[35.5,0,0],"uv":{"north":{"uv":[43,22],"uv_size":[0.5,0.25]},"east":{"uv":[53,23],"uv_size":[0.25,0.25]},"south":{"uv":[23,43],"uv_size":[0.5,0.25]},"west":{"uv":[24,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,23],"uv_size":[0.5,0.25]},"down":{"uv":[24,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-1.6563,-10.2332],"size":[0.4197,0.0756,0.1634],"inflate":-0.003,"pivot":[0.2069,-1.5837,-10.0727],"rotation":[173,0,0],"uv":{"north":{"uv":[43,0],"uv_size":[0.5,0.25]},"east":{"uv":[53,12],"uv_size":[0.25,0.25]},"south":{"uv":[1,43],"uv_size":[0.5,0.25]},"west":{"uv":[13,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,1],"uv_size":[0.5,0.25]},"down":{"uv":[2,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-0.6437,-10.2785],"size":[0.4197,0.0756,0.1954],"inflate":-0.003,"pivot":[0.2069,-0.5711,-10.0861],"rotation":[165.5,0,0],"uv":{"north":{"uv":[29,42],"uv_size":[0.5,0.25]},"east":{"uv":[53,5],"uv_size":[0.25,0.25]},"south":{"uv":[42,29],"uv_size":[0.5,0.25]},"west":{"uv":[6,53],"uv_size":[0.25,0.25]},"up":{"uv":[30,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,30.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-0.6912,-10.1485],"size":[0.4197,0.0756,0.2488],"inflate":-0.003,"pivot":[0.2069,-0.6185,-9.9027],"rotation":[-179.5,0,0],"uv":{"north":{"uv":[31,42],"uv_size":[0.5,0.25]},"east":{"uv":[53,6],"uv_size":[0.25,0.25]},"south":{"uv":[42,31],"uv_size":[0.5,0.25]},"west":{"uv":[7,53],"uv_size":[0.25,0.25]},"up":{"uv":[32,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,32.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-0.5708,-9.7784],"size":[0.4197,0.0489,0.0609],"inflate":-0.003,"pivot":[0.2069,-0.475,-9.6684],"rotation":[52.5,0,0],"uv":{"north":{"uv":[33,42],"uv_size":[0.5,0.25]},"east":{"uv":[53,7],"uv_size":[0.25,0.25]},"south":{"uv":[42,33],"uv_size":[0.5,0.25]},"west":{"uv":[8,53],"uv_size":[0.25,0.25]},"up":{"uv":[34,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,34.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-0.046,-10.3251],"size":[0.4197,0.0756,0.0354],"inflate":-0.003,"uv":{"north":{"uv":[41,24],"uv_size":[0.5,0.25]},"east":{"uv":[41,52],"uv_size":[0.25,0.25]},"south":{"uv":[25,41],"uv_size":[0.5,0.25]},"west":{"uv":[52,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,25],"uv_size":[0.5,0.25]},"down":{"uv":[26,41.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-0.7725,-9.095],"size":[0.4197,0.1076,0.1874],"inflate":-0.003,"pivot":[0.2069,-0.7695,-9.092],"rotation":[87.5,0,0],"uv":{"north":{"uv":[40,40],"uv_size":[0.5,0.25]},"east":{"uv":[36,52],"uv_size":[0.25,0.25]},"south":{"uv":[0,41],"uv_size":[0.5,0.25]},"west":{"uv":[52,36],"uv_size":[0.25,0.25]},"up":{"uv":[41,0],"uv_size":[0.5,0.25]},"down":{"uv":[1,41.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2152,-0.7475,-9.1728],"size":[0.4304,0.1076,0.2874],"inflate":-0.003,"pivot":[0.2015,-0.6428,-9.1698],"rotation":[122.5,0,0],"uv":{"north":{"uv":[41,1],"uv_size":[0.5,0.25]},"east":{"uv":[37,52],"uv_size":[0.25,0.25]},"south":{"uv":[2,41],"uv_size":[0.5,0.25]},"west":{"uv":[52,37],"uv_size":[0.25,0.25]},"up":{"uv":[41,2],"uv_size":[0.5,0.25]},"down":{"uv":[3,41.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,0.7854,-5.0165],"size":[0.4197,0.1076,0.4794],"inflate":-0.003,"pivot":[0.2069,-0.4468,-6.9448],"rotation":[145,0,0],"uv":{"north":{"uv":[41,3],"uv_size":[0.5,0.25]},"east":{"uv":[4,41],"uv_size":[0.5,0.25]},"south":{"uv":[41,4],"uv_size":[0.5,0.25]},"west":{"uv":[5,41],"uv_size":[0.5,0.25]},"up":{"uv":[31,0],"uv_size":[0.5,0.5]},"down":{"uv":[1,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,0.6493,-5.4422],"size":[0.4197,0.1076,0.3794],"inflate":-0.003,"pivot":[0.2069,-0.5829,-7.3705],"rotation":[135,0,0],"uv":{"north":{"uv":[41,5],"uv_size":[0.5,0.25]},"east":{"uv":[6,41],"uv_size":[0.5,0.25]},"south":{"uv":[41,6],"uv_size":[0.5,0.25]},"west":{"uv":[7,41],"uv_size":[0.5,0.25]},"up":{"uv":[31,1],"uv_size":[0.5,0.5]},"down":{"uv":[2,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,0.1483,-5.9894],"size":[0.4197,0.1076,0.3794],"inflate":-0.003,"pivot":[0.2069,-1.0839,-7.9177],"rotation":[115,0,0],"uv":{"north":{"uv":[41,7],"uv_size":[0.5,0.25]},"east":{"uv":[8,41],"uv_size":[0.5,0.25]},"south":{"uv":[41,8],"uv_size":[0.5,0.25]},"west":{"uv":[9,41],"uv_size":[0.5,0.25]},"up":{"uv":[31,2],"uv_size":[0.5,0.5]},"down":{"uv":[3,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,-0.3872,-8.0658],"size":[0.4197,0.0863,0.4008],"inflate":-0.003,"pivot":[0.2069,-0.2825,-8.0414],"rotation":[100,0,0],"uv":{"north":{"uv":[41,28],"uv_size":[0.5,0.25]},"east":{"uv":[29,41],"uv_size":[0.5,0.25]},"south":{"uv":[41,29],"uv_size":[0.5,0.25]},"west":{"uv":[30,41],"uv_size":[0.5,0.25]},"up":{"uv":[31,8],"uv_size":[0.5,0.5]},"down":{"uv":[9,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,0.3658,-8.0017],"size":[0.4197,0.0863,0.3581],"inflate":-0.003,"pivot":[0.2069,0.4704,-8.0201],"rotation":[-84.4779,0,0],"uv":{"north":{"uv":[41,30],"uv_size":[0.5,0.25]},"east":{"uv":[44,52],"uv_size":[0.25,0.25]},"south":{"uv":[31,41],"uv_size":[0.5,0.25]},"west":{"uv":[52,44],"uv_size":[0.25,0.25]},"up":{"uv":[41,31],"uv_size":[0.5,0.25]},"down":{"uv":[32,41.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,0.6979,-8.0524],"size":[0.4197,0.0863,0.4434],"inflate":-0.003,"pivot":[0.2069,0.8025,-7.9854],"rotation":[-95,0,0],"uv":{"north":{"uv":[41,32],"uv_size":[0.5,0.25]},"east":{"uv":[33,41],"uv_size":[0.5,0.25]},"south":{"uv":[41,33],"uv_size":[0.5,0.25]},"west":{"uv":[34,41],"uv_size":[0.5,0.25]},"up":{"uv":[31,9],"uv_size":[0.5,0.5]},"down":{"uv":[10,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,0.727,-8.2764],"size":[0.4197,0.0756,0.4861],"inflate":-0.003,"pivot":[0.2069,0.7996,-8.1668],"rotation":[-95,0,0],"uv":{"north":{"uv":[41,38],"uv_size":[0.5,0.25]},"east":{"uv":[39,41],"uv_size":[0.5,0.25]},"south":{"uv":[41,39],"uv_size":[0.5,0.25]},"west":{"uv":[40,41],"uv_size":[0.5,0.25]},"up":{"uv":[31,11],"uv_size":[0.5,0.5]},"down":{"uv":[12,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,1.227,-9.6758],"size":[0.4197,0.0756,0.5394],"inflate":-0.003,"pivot":[0.2069,1.2996,-9.5128],"rotation":[-75,0,0],"uv":{"north":{"uv":[41,40],"uv_size":[0.5,0.25]},"east":{"uv":[41,41],"uv_size":[0.5,0.25]},"south":{"uv":[0,42],"uv_size":[0.5,0.25]},"west":{"uv":[42,0],"uv_size":[0.5,0.25]},"up":{"uv":[31,12],"uv_size":[0.5,0.5]},"down":{"uv":[13,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,1.227,-9.1651],"size":[0.4197,0.0756,0.3728],"inflate":-0.003,"pivot":[0.2069,1.2996,-9.1728],"rotation":[-82.5,0,0],"uv":{"north":{"uv":[43,8],"uv_size":[0.5,0.25]},"east":{"uv":[53,16],"uv_size":[0.25,0.25]},"south":{"uv":[9,43],"uv_size":[0.5,0.25]},"west":{"uv":[17,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,9],"uv_size":[0.5,0.25]},"down":{"uv":[10,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,1.195,-8.9151],"size":[0.4197,0.0756,0.2021],"inflate":-0.003,"pivot":[0.2069,1.2676,-8.9228],"rotation":[-97.5,0,0],"uv":{"north":{"uv":[19,42],"uv_size":[0.5,0.25]},"east":{"uv":[53,0],"uv_size":[0.25,0.25]},"south":{"uv":[42,19],"uv_size":[0.5,0.25]},"west":{"uv":[1,53],"uv_size":[0.25,0.25]},"up":{"uv":[20,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,20.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,1.0499,-8.9624],"size":[0.4197,0.0756,0.1488],"inflate":-0.003,"pivot":[0.2069,1.1225,-8.9701],"rotation":[-52.5,0,0],"uv":{"north":{"uv":[21,42],"uv_size":[0.5,0.25]},"east":{"uv":[53,1],"uv_size":[0.25,0.25]},"south":{"uv":[42,21],"uv_size":[0.5,0.25]},"west":{"uv":[2,53],"uv_size":[0.25,0.25]},"up":{"uv":[22,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,22.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,0.9542,-8.9409],"size":[0.4197,0.0756,0.1808],"inflate":-0.003,"pivot":[0.2069,1.0269,-8.9486],"rotation":[5,0,0],"uv":{"north":{"uv":[23,42],"uv_size":[0.5,0.25]},"east":{"uv":[53,2],"uv_size":[0.25,0.25]},"south":{"uv":[42,23],"uv_size":[0.5,0.25]},"west":{"uv":[3,53],"uv_size":[0.25,0.25]},"up":{"uv":[24,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,24.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,0.9452,-8.805],"size":[0.4197,0.0756,0.1808],"inflate":-0.003,"pivot":[0.2069,1.0178,-8.8127],"rotation":[42.5,0,0],"uv":{"north":{"uv":[25,42],"uv_size":[0.5,0.25]},"east":{"uv":[53,3],"uv_size":[0.25,0.25]},"south":{"uv":[42,25],"uv_size":[0.5,0.25]},"west":{"uv":[4,53],"uv_size":[0.25,0.25]},"up":{"uv":[26,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,26.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,0.8923,-9.1339],"size":[0.4197,0.0756,0.2194],"inflate":-0.003,"pivot":[0.2069,0.9649,-9.1416],"rotation":[-55.0921,0,0],"uv":{"north":{"uv":[43,6],"uv_size":[0.5,0.25]},"east":{"uv":[53,15],"uv_size":[0.25,0.25]},"south":{"uv":[7,43],"uv_size":[0.5,0.25]},"west":{"uv":[16,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,7],"uv_size":[0.5,0.25]},"down":{"uv":[8,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,0.7384,-9.0519],"size":[0.4197,0.0756,0.2194],"inflate":-0.003,"pivot":[0.2069,0.811,-9.0595],"rotation":[-17.5921,0,0],"uv":{"north":{"uv":[13,42],"uv_size":[0.5,0.25]},"east":{"uv":[50,52],"uv_size":[0.25,0.25]},"south":{"uv":[42,13],"uv_size":[0.5,0.25]},"west":{"uv":[52,50],"uv_size":[0.25,0.25]},"up":{"uv":[14,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,14.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2152,0.6701,-8.8847],"size":[0.4304,0.0756,0.2194],"inflate":-0.003,"pivot":[0.2015,0.7428,-8.8924],"rotation":[12.4079,0,0],"uv":{"north":{"uv":[15,42],"uv_size":[0.5,0.25]},"east":{"uv":[51,52],"uv_size":[0.25,0.25]},"south":{"uv":[42,15],"uv_size":[0.5,0.25]},"west":{"uv":[52,51],"uv_size":[0.25,0.25]},"up":{"uv":[16,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,16.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,0.676,-8.7165],"size":[0.4197,0.0756,0.3368],"inflate":-0.003,"pivot":[0.2069,0.7487,-8.7242],"rotation":[59.9079,0,0],"uv":{"north":{"uv":[17,42],"uv_size":[0.5,0.25]},"east":{"uv":[52,52],"uv_size":[0.25,0.25]},"south":{"uv":[42,17],"uv_size":[0.5,0.25]},"west":{"uv":[0,53],"uv_size":[0.25,0.25]},"up":{"uv":[18,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,18.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,0.7507,-9.5017],"size":[0.4197,0.0756,0.5288],"inflate":-0.003,"pivot":[0.2069,0.8233,-9.3387],"rotation":[-57.5,0,0],"uv":{"north":{"uv":[1,42],"uv_size":[0.5,0.25]},"east":{"uv":[42,1],"uv_size":[0.5,0.25]},"south":{"uv":[2,42],"uv_size":[0.5,0.25]},"west":{"uv":[42,2],"uv_size":[0.5,0.25]},"up":{"uv":[31,13],"uv_size":[0.5,0.5]},"down":{"uv":[14,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,0.3876,-9.1921],"size":[0.4197,0.0756,0.3154],"inflate":-0.003,"pivot":[0.2069,0.4603,-9.0291],"rotation":[-30,0,0],"uv":{"north":{"uv":[3,42],"uv_size":[0.5,0.25]},"east":{"uv":[46,52],"uv_size":[0.25,0.25]},"south":{"uv":[42,3],"uv_size":[0.5,0.25]},"west":{"uv":[52,46],"uv_size":[0.25,0.25]},"up":{"uv":[4,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,4.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,0.2689,-9.5588],"size":[0.4197,0.0756,0.4368],"inflate":-0.003,"pivot":[0.2069,0.3416,-9.2745],"rotation":[-30,0,0],"uv":{"north":{"uv":[43,36],"uv_size":[0.5,0.25]},"east":{"uv":[37,43],"uv_size":[0.5,0.25]},"south":{"uv":[43,37],"uv_size":[0.5,0.25]},"west":{"uv":[38,43],"uv_size":[0.5,0.25]},"up":{"uv":[31,15],"uv_size":[0.5,0.5]},"down":{"uv":[16,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,0.3292,-8.9407],"size":[0.4197,0.0756,0.2621],"inflate":-0.003,"pivot":[0.2069,0.4018,-8.7777],"rotation":[2.5,0,0],"uv":{"north":{"uv":[5,42],"uv_size":[0.5,0.25]},"east":{"uv":[47,52],"uv_size":[0.25,0.25]},"south":{"uv":[42,5],"uv_size":[0.5,0.25]},"west":{"uv":[52,47],"uv_size":[0.25,0.25]},"up":{"uv":[6,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,6.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,0.1747,-9.1732],"size":[0.4197,0.0756,0.2621],"inflate":-0.003,"pivot":[0.2069,0.2473,-9.0102],"rotation":[-10,0,0],"uv":{"north":{"uv":[43,34],"uv_size":[0.5,0.25]},"east":{"uv":[53,29],"uv_size":[0.25,0.25]},"south":{"uv":[35,43],"uv_size":[0.5,0.25]},"west":{"uv":[30,53],"uv_size":[0.25,0.25]},"up":{"uv":[43,35],"uv_size":[0.5,0.25]},"down":{"uv":[36,43.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,0.4126,-9.0546],"size":[0.4197,0.0756,0.5341],"inflate":-0.003,"pivot":[0.2069,0.4853,-8.5876],"rotation":[35,0,0],"uv":{"north":{"uv":[7,42],"uv_size":[0.5,0.25]},"east":{"uv":[42,7],"uv_size":[0.5,0.25]},"south":{"uv":[8,42],"uv_size":[0.5,0.25]},"west":{"uv":[42,8],"uv_size":[0.5,0.25]},"up":{"uv":[31,14],"uv_size":[0.5,0.5]},"down":{"uv":[15,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,0.5617,-8.616],"size":[0.4197,0.0756,0.1874],"inflate":-0.003,"pivot":[0.2069,0.6343,-8.453],"rotation":[52.5,0,0],"uv":{"north":{"uv":[9,42],"uv_size":[0.5,0.25]},"east":{"uv":[48,52],"uv_size":[0.25,0.25]},"south":{"uv":[42,9],"uv_size":[0.5,0.25]},"west":{"uv":[52,48],"uv_size":[0.25,0.25]},"up":{"uv":[10,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,10.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,0.7098,-8.566],"size":[0.4197,0.0756,0.3474],"inflate":-0.003,"pivot":[0.2069,0.7824,-8.403],"rotation":[72.5,0,0],"uv":{"north":{"uv":[11,42],"uv_size":[0.5,0.25]},"east":{"uv":[49,52],"uv_size":[0.25,0.25]},"south":{"uv":[42,11],"uv_size":[0.5,0.25]},"west":{"uv":[52,49],"uv_size":[0.25,0.25]},"up":{"uv":[12,42],"uv_size":[0.5,0.25]},"down":{"uv":[42,12.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,0.3948,-8.1831],"size":[0.4197,0.0756,0.3581],"inflate":-0.003,"pivot":[0.2069,0.4675,-8.2014],"rotation":[-84.4779,0,0],"uv":{"north":{"uv":[41,36],"uv_size":[0.5,0.25]},"east":{"uv":[45,52],"uv_size":[0.25,0.25]},"south":{"uv":[37,41],"uv_size":[0.5,0.25]},"west":{"uv":[52,45],"uv_size":[0.25,0.25]},"up":{"uv":[41,37],"uv_size":[0.5,0.25]},"down":{"uv":[38,41.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2099,-0.3638,-8.3328],"size":[0.4197,0.0756,0.5288],"inflate":-0.003,"pivot":[0.2069,-0.2805,-8.1805],"rotation":[100,0,0],"uv":{"north":{"uv":[41,34],"uv_size":[0.5,0.25]},"east":{"uv":[35,41],"uv_size":[0.5,0.25]},"south":{"uv":[41,35],"uv_size":[0.5,0.25]},"west":{"uv":[36,41],"uv_size":[0.5,0.25]},"up":{"uv":[31,10],"uv_size":[0.5,0.5]},"down":{"uv":[11,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,0.2322,-6.3193],"size":[0.4197,0.1076,0.4794],"inflate":-0.003,"pivot":[0.2069,-1,-8.2476],"rotation":[107.5,0,0],"uv":{"north":{"uv":[41,9],"uv_size":[0.5,0.25]},"east":{"uv":[10,41],"uv_size":[0.5,0.25]},"south":{"uv":[41,10],"uv_size":[0.5,0.25]},"west":{"uv":[11,41],"uv_size":[0.5,0.25]},"up":{"uv":[31,3],"uv_size":[0.5,0.5]},"down":{"uv":[4,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,0.1923,-6.9805],"size":[0.4197,0.1076,0.4794],"inflate":-0.003,"pivot":[0.2069,-1.0399,-8.9088],"rotation":[90,0,0],"uv":{"north":{"uv":[41,11],"uv_size":[0.5,0.25]},"east":{"uv":[12,41],"uv_size":[0.5,0.25]},"south":{"uv":[41,12],"uv_size":[0.5,0.25]},"west":{"uv":[13,41],"uv_size":[0.5,0.25]},"up":{"uv":[31,4],"uv_size":[0.5,0.5]},"down":{"uv":[5,31.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2099,0.5078,-7.244],"size":[0.4197,0.1076,0.9794],"inflate":-0.003,"pivot":[0.2069,-0.7244,-9.1723],"rotation":[82.5,0,0],"uv":{"north":{"uv":[41,13],"uv_size":[0.5,0.25]},"east":{"uv":[31,5],"uv_size":[1,0.25]},"south":{"uv":[14,41],"uv_size":[0.5,0.25]},"west":{"uv":[6,31],"uv_size":[1,0.25]},"up":{"uv":[24,22],"uv_size":[0.5,1]},"down":{"uv":[23,25],"uv_size":[0.5,-1]}}}]},{"name":"bone6","parent":"h3","pivot":[0.4523,0.5302,11.0789],"rotation":[0,7.5,0]},{"name":"h4","parent":"h1_fixed","pivot":[0.025,0.7802,-0.0961],"cubes":[{"origin":[-0.145,1.1352,0.0089],"size":[0.29,-0.0975,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,-0.0461],"rotation":[-35,0,0],"uv":{"north":{"uv":[47,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,0.3151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,0.2601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[5,34],"uv_size":[0.75,0.25]},"east":{"uv":[47,10],"uv_size":[0.25,0.25]},"south":{"uv":[34,5],"uv_size":[0.75,0.25]},"west":{"uv":[11,47],"uv_size":[0.25,0.25]},"up":{"uv":[6,34],"uv_size":[0.75,0.25]},"down":{"uv":[34,6.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,0.3151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,0.2601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[47,11],"uv_size":[0.25,0.25]},"east":{"uv":[12,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,0.5089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,0.4539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[7,34],"uv_size":[0.75,0.25]},"east":{"uv":[47,14],"uv_size":[0.25,0.25]},"south":{"uv":[34,7],"uv_size":[0.75,0.25]},"west":{"uv":[15,47],"uv_size":[0.25,0.25]},"up":{"uv":[8,34],"uv_size":[0.75,0.25]},"down":{"uv":[34,8.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.6102,0.7151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,0.6601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[9,34],"uv_size":[0.75,0.25]},"east":{"uv":[47,15],"uv_size":[0.25,0.25]},"south":{"uv":[34,9],"uv_size":[0.75,0.25]},"west":{"uv":[16,47],"uv_size":[0.25,0.25]},"up":{"uv":[10,34],"uv_size":[0.75,0.25]},"down":{"uv":[34,10.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,0.7151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,0.6601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[47,16],"uv_size":[0.25,0.25]},"east":{"uv":[17,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,17],"uv_size":[0.25,0.25]},"west":{"uv":[18,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,1.1102,0.9089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,0.8539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[47,19],"uv_size":[0.25,0.25]},"east":{"uv":[20,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,20],"uv_size":[0.25,0.25]},"west":{"uv":[21,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,0.9089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,0.8539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[11,34],"uv_size":[0.75,0.25]},"east":{"uv":[47,22],"uv_size":[0.25,0.25]},"south":{"uv":[34,11],"uv_size":[0.75,0.25]},"west":{"uv":[23,47],"uv_size":[0.25,0.25]},"up":{"uv":[12,34],"uv_size":[0.75,0.25]},"down":{"uv":[34,12.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.6102,1.1151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,1.0601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[13,34],"uv_size":[0.75,0.25]},"east":{"uv":[47,23],"uv_size":[0.25,0.25]},"south":{"uv":[34,13],"uv_size":[0.75,0.25]},"west":{"uv":[24,47],"uv_size":[0.25,0.25]},"up":{"uv":[14,34],"uv_size":[0.75,0.25]},"down":{"uv":[34,14.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,1.1151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,1.0601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[47,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,1.1102,1.3089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,1.2539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[47,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,1.3089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,1.2539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[15,34],"uv_size":[0.75,0.25]},"east":{"uv":[47,30],"uv_size":[0.25,0.25]},"south":{"uv":[34,15],"uv_size":[0.75,0.25]},"west":{"uv":[31,47],"uv_size":[0.25,0.25]},"up":{"uv":[16,34],"uv_size":[0.75,0.25]},"down":{"uv":[34,16.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,1.5151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,1.4601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[47,31],"uv_size":[0.25,0.25]},"east":{"uv":[32,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,32],"uv_size":[0.25,0.25]},"west":{"uv":[33,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,1.5151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,1.4601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[17,34],"uv_size":[0.75,0.25]},"east":{"uv":[47,34],"uv_size":[0.25,0.25]},"south":{"uv":[34,17],"uv_size":[0.75,0.25]},"west":{"uv":[35,47],"uv_size":[0.25,0.25]},"up":{"uv":[18,34],"uv_size":[0.75,0.25]},"down":{"uv":[34,18.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.6102,1.7089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,1.6539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[19,34],"uv_size":[0.75,0.25]},"east":{"uv":[47,35],"uv_size":[0.25,0.25]},"south":{"uv":[34,19],"uv_size":[0.75,0.25]},"west":{"uv":[36,47],"uv_size":[0.25,0.25]},"up":{"uv":[20,34],"uv_size":[0.75,0.25]},"down":{"uv":[34,20.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,1.7089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,1.6539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[47,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,1.1102,1.9151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,1.8601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[47,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,1.9151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,1.8601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[21,34],"uv_size":[0.75,0.25]},"east":{"uv":[47,42],"uv_size":[0.25,0.25]},"south":{"uv":[34,21],"uv_size":[0.75,0.25]},"west":{"uv":[43,47],"uv_size":[0.25,0.25]},"up":{"uv":[22,34],"uv_size":[0.75,0.25]},"down":{"uv":[34,22.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.6102,2.1089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,2.0539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[23,34],"uv_size":[0.75,0.25]},"east":{"uv":[47,43],"uv_size":[0.25,0.25]},"south":{"uv":[34,23],"uv_size":[0.75,0.25]},"west":{"uv":[44,47],"uv_size":[0.25,0.25]},"up":{"uv":[24,34],"uv_size":[0.75,0.25]},"down":{"uv":[34,24.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,2.1089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,2.0539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[47,44],"uv_size":[0.25,0.25]},"east":{"uv":[45,47],"uv_size":[0.25,0.25]},"south":{"uv":[47,45],"uv_size":[0.25,0.25]},"west":{"uv":[46,47],"uv_size":[0.25,0.25]},"up":{"uv":[47,46],"uv_size":[0.25,0.25]},"down":{"uv":[47,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,2.3151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,2.2601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[25,34],"uv_size":[0.75,0.25]},"east":{"uv":[0,48],"uv_size":[0.25,0.25]},"south":{"uv":[34,25],"uv_size":[0.75,0.25]},"west":{"uv":[48,0],"uv_size":[0.25,0.25]},"up":{"uv":[26,34],"uv_size":[0.75,0.25]},"down":{"uv":[34,26.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,2.3151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,2.2601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[1,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,1.1102,2.5089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,2.4539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[4,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,1.1102,2.7151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,2.6601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[7,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,7],"uv_size":[0.25,0.25]},"south":{"uv":[8,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,8],"uv_size":[0.25,0.25]},"up":{"uv":[9,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,2.7151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,2.6601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[27,34],"uv_size":[0.75,0.25]},"east":{"uv":[10,48],"uv_size":[0.25,0.25]},"south":{"uv":[34,27],"uv_size":[0.75,0.25]},"west":{"uv":[48,10],"uv_size":[0.25,0.25]},"up":{"uv":[28,34],"uv_size":[0.75,0.25]},"down":{"uv":[34,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.6102,2.9089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,2.8539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[29,34],"uv_size":[0.75,0.25]},"east":{"uv":[11,48],"uv_size":[0.25,0.25]},"south":{"uv":[34,29],"uv_size":[0.75,0.25]},"west":{"uv":[48,11],"uv_size":[0.25,0.25]},"up":{"uv":[30,34],"uv_size":[0.75,0.25]},"down":{"uv":[34,30.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,2.9089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,2.8539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[12,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,1.1102,3.1151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,3.0601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[15,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,3.1151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,3.0601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[31,34],"uv_size":[0.75,0.25]},"east":{"uv":[18,48],"uv_size":[0.25,0.25]},"south":{"uv":[34,31],"uv_size":[0.75,0.25]},"west":{"uv":[48,18],"uv_size":[0.25,0.25]},"up":{"uv":[32,34],"uv_size":[0.75,0.25]},"down":{"uv":[34,32.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.6102,3.3089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,3.2539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[33,34],"uv_size":[0.75,0.25]},"east":{"uv":[19,48],"uv_size":[0.25,0.25]},"south":{"uv":[34,33],"uv_size":[0.75,0.25]},"west":{"uv":[48,19],"uv_size":[0.25,0.25]},"up":{"uv":[34,34],"uv_size":[0.75,0.25]},"down":{"uv":[0,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,3.3089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,3.2539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[20,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,20],"uv_size":[0.25,0.25]},"south":{"uv":[21,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,21],"uv_size":[0.25,0.25]},"up":{"uv":[22,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,1.1102,3.5151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,3.4601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[23,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,23],"uv_size":[0.25,0.25]},"south":{"uv":[24,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,3.5151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,3.4601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[35,0],"uv_size":[0.75,0.25]},"east":{"uv":[26,48],"uv_size":[0.25,0.25]},"south":{"uv":[1,35],"uv_size":[0.75,0.25]},"west":{"uv":[48,26],"uv_size":[0.25,0.25]},"up":{"uv":[35,1],"uv_size":[0.75,0.25]},"down":{"uv":[2,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.6102,3.7089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,3.6539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[35,2],"uv_size":[0.75,0.25]},"east":{"uv":[27,48],"uv_size":[0.25,0.25]},"south":{"uv":[3,35],"uv_size":[0.75,0.25]},"west":{"uv":[48,27],"uv_size":[0.25,0.25]},"up":{"uv":[35,3],"uv_size":[0.75,0.25]},"down":{"uv":[4,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,3.7089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,3.6539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[28,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,1.1102,3.9151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,3.8601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[31,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,3.9151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,3.8601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[35,4],"uv_size":[0.75,0.25]},"east":{"uv":[34,48],"uv_size":[0.25,0.25]},"south":{"uv":[5,35],"uv_size":[0.75,0.25]},"west":{"uv":[48,34],"uv_size":[0.25,0.25]},"up":{"uv":[35,5],"uv_size":[0.75,0.25]},"down":{"uv":[6,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.6102,4.3151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,4.2601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[35,6],"uv_size":[0.75,0.25]},"east":{"uv":[35,48],"uv_size":[0.25,0.25]},"south":{"uv":[7,35],"uv_size":[0.75,0.25]},"west":{"uv":[48,35],"uv_size":[0.25,0.25]},"up":{"uv":[35,7],"uv_size":[0.75,0.25]},"down":{"uv":[8,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.6102,4.1089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,4.0539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[35,8],"uv_size":[0.75,0.25]},"east":{"uv":[36,48],"uv_size":[0.25,0.25]},"south":{"uv":[9,35],"uv_size":[0.75,0.25]},"west":{"uv":[48,36],"uv_size":[0.25,0.25]},"up":{"uv":[35,9],"uv_size":[0.75,0.25]},"down":{"uv":[10,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,4.1089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,4.0539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[37,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,1.1102,4.3151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,4.2601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[40,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,40],"uv_size":[0.25,0.25]},"south":{"uv":[41,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,41],"uv_size":[0.25,0.25]},"up":{"uv":[42,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,4.5089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,4.4539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[35,10],"uv_size":[0.75,0.25]},"east":{"uv":[43,48],"uv_size":[0.25,0.25]},"south":{"uv":[11,35],"uv_size":[0.75,0.25]},"west":{"uv":[48,43],"uv_size":[0.25,0.25]},"up":{"uv":[35,11],"uv_size":[0.75,0.25]},"down":{"uv":[12,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,4.5089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,4.4539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[44,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,44],"uv_size":[0.25,0.25]},"south":{"uv":[45,48],"uv_size":[0.25,0.25]},"west":{"uv":[48,45],"uv_size":[0.25,0.25]},"up":{"uv":[46,48],"uv_size":[0.25,0.25]},"down":{"uv":[48,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,1.1102,4.7151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,4.6601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[47,48],"uv_size":[0.25,0.25]},"east":{"uv":[48,47],"uv_size":[0.25,0.25]},"south":{"uv":[48,48],"uv_size":[0.25,0.25]},"west":{"uv":[0,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,4.7151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,4.6601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[35,12],"uv_size":[0.75,0.25]},"east":{"uv":[49,1],"uv_size":[0.25,0.25]},"south":{"uv":[13,35],"uv_size":[0.75,0.25]},"west":{"uv":[2,49],"uv_size":[0.25,0.25]},"up":{"uv":[35,13],"uv_size":[0.75,0.25]},"down":{"uv":[14,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.6102,4.9089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,4.8539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[35,14],"uv_size":[0.75,0.25]},"east":{"uv":[49,2],"uv_size":[0.25,0.25]},"south":{"uv":[15,35],"uv_size":[0.75,0.25]},"west":{"uv":[3,49],"uv_size":[0.25,0.25]},"up":{"uv":[35,15],"uv_size":[0.75,0.25]},"down":{"uv":[16,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,4.9089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,4.8539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[49,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,1.1102,5.1151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,5.0601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[49,6],"uv_size":[0.25,0.25]},"east":{"uv":[7,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,7],"uv_size":[0.25,0.25]},"west":{"uv":[8,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,5.1151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,5.0601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[35,16],"uv_size":[0.75,0.25]},"east":{"uv":[49,9],"uv_size":[0.25,0.25]},"south":{"uv":[17,35],"uv_size":[0.75,0.25]},"west":{"uv":[10,49],"uv_size":[0.25,0.25]},"up":{"uv":[35,17],"uv_size":[0.75,0.25]},"down":{"uv":[18,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.6102,5.3089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,5.2539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[35,18],"uv_size":[0.75,0.25]},"east":{"uv":[49,10],"uv_size":[0.25,0.25]},"south":{"uv":[19,35],"uv_size":[0.75,0.25]},"west":{"uv":[11,49],"uv_size":[0.25,0.25]},"up":{"uv":[35,19],"uv_size":[0.75,0.25]},"down":{"uv":[20,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,5.3089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,5.2539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[49,11],"uv_size":[0.25,0.25]},"east":{"uv":[12,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,1.1102,5.5151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,5.4601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[49,14],"uv_size":[0.25,0.25]},"east":{"uv":[15,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,15],"uv_size":[0.25,0.25]},"west":{"uv":[16,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,5.5151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,5.4601],"rotation":[12.5,0,0],"uv":{"north":{"uv":[35,20],"uv_size":[0.75,0.25]},"east":{"uv":[49,17],"uv_size":[0.25,0.25]},"south":{"uv":[21,35],"uv_size":[0.75,0.25]},"west":{"uv":[18,49],"uv_size":[0.25,0.25]},"up":{"uv":[35,21],"uv_size":[0.75,0.25]},"down":{"uv":[22,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,6.4651],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,6.4101],"rotation":[30,0,0],"uv":{"north":{"uv":[49,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.5602,6.4651],"size":[0.69,0.39,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,6.4101],"rotation":[30,0,0],"uv":{"north":{"uv":[7,28],"uv_size":[0.75,0.5]},"east":{"uv":[19,40],"uv_size":[0.25,0.5]},"south":{"uv":[28,7],"uv_size":[0.75,0.5]},"west":{"uv":[40,19],"uv_size":[0.25,0.5]},"up":{"uv":[35,22],"uv_size":[0.75,0.25]},"down":{"uv":[23,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.5102,6.4651],"size":[0.69,0.0025,-0.11],"inflate":0.1,"pivot":[0.025,0.4802,6.4101],"rotation":[90,0,0],"uv":{"north":{"uv":[35,23],"uv_size":[0.75,0.25]},"east":{"uv":[49,21],"uv_size":[0.25,0.25]},"south":{"uv":[24,35],"uv_size":[0.75,0.25]},"west":{"uv":[22,49],"uv_size":[0.25,0.25]},"up":{"uv":[35,24],"uv_size":[0.75,0.25]},"down":{"uv":[25,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.5465,6.3149],"size":[0.69,-0.1364,-0.1364],"inflate":0.1,"pivot":[0.025,0.5165,6.2599],"rotation":[45,0,0],"uv":{"north":{"uv":[35,25],"uv_size":[0.75,0.25]},"east":{"uv":[49,22],"uv_size":[0.25,0.25]},"south":{"uv":[26,35],"uv_size":[0.75,0.25]},"west":{"uv":[23,49],"uv_size":[0.25,0.25]},"up":{"uv":[35,26],"uv_size":[0.75,0.25]},"down":{"uv":[27,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.5465,6.5174],"size":[0.69,-0.1364,-0.1364],"inflate":0.1,"pivot":[0.025,0.5165,6.4624],"rotation":[45,0,0],"uv":{"north":{"uv":[35,27],"uv_size":[0.75,0.25]},"east":{"uv":[49,23],"uv_size":[0.25,0.25]},"south":{"uv":[28,35],"uv_size":[0.75,0.25]},"west":{"uv":[24,49],"uv_size":[0.25,0.25]},"up":{"uv":[35,28],"uv_size":[0.75,0.25]},"down":{"uv":[29,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.6102,5.7089],"size":[0.69,0.14,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,5.6539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[35,29],"uv_size":[0.75,0.25]},"east":{"uv":[49,24],"uv_size":[0.25,0.25]},"south":{"uv":[30,35],"uv_size":[0.75,0.25]},"west":{"uv":[25,49],"uv_size":[0.25,0.25]},"up":{"uv":[35,30],"uv_size":[0.75,0.25]},"down":{"uv":[31,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.8375,5.9096],"size":[-0.11,0.09,-0.11],"inflate":0.1,"pivot":[0.025,1.0075,5.8546],"rotation":[-47.5,0,0],"uv":{"north":{"uv":[49,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.455,0.8375,5.9096],"size":[-0.11,0.09,-0.11],"inflate":0.1,"pivot":[-0.025,1.0075,5.8546],"rotation":[-47.5,0,0],"uv":{"north":{"uv":[49,28],"uv_size":[0.25,0.25]},"east":{"uv":[29,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,29],"uv_size":[0.25,0.25]},"west":{"uv":[30,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.455,1.0392,5.9139],"size":[-0.11,-0.11,-0.11],"inflate":0.1,"pivot":[-0.025,1.0092,5.8589],"rotation":[90,0,0],"uv":{"north":{"uv":[49,31],"uv_size":[0.25,0.25]},"east":{"uv":[32,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,32],"uv_size":[0.25,0.25]},"west":{"uv":[33,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4685,0.6392,5.6657],"size":[-0.11,0.29,-0.11],"inflate":0.1,"pivot":[-0.0985,1.0092,5.6107],"rotation":[90,45,0],"uv":{"north":{"uv":[49,34],"uv_size":[0.25,0.25]},"east":{"uv":[35,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,35],"uv_size":[0.25,0.25]},"west":{"uv":[36,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,1.0392,5.9139],"size":[-0.11,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,1.0092,5.8589],"rotation":[90,0,0],"uv":{"north":{"uv":[49,37],"uv_size":[0.25,0.25]},"east":{"uv":[38,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,38],"uv_size":[0.25,0.25]},"west":{"uv":[39,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,39],"uv_size":[0.25,0.25]},"down":{"uv":[40,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.5785,0.6392,5.6657],"size":[-0.11,0.29,-0.11],"inflate":0.1,"pivot":[0.0985,1.0092,5.6107],"rotation":[90,-45,0],"uv":{"north":{"uv":[49,40],"uv_size":[0.25,0.25]},"east":{"uv":[41,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,41],"uv_size":[0.25,0.25]},"west":{"uv":[42,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,42],"uv_size":[0.25,0.25]},"down":{"uv":[43,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.6102,2.5089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,2.4539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[35,31],"uv_size":[0.75,0.25]},"east":{"uv":[49,43],"uv_size":[0.25,0.25]},"south":{"uv":[32,35],"uv_size":[0.75,0.25]},"west":{"uv":[44,49],"uv_size":[0.25,0.25]},"up":{"uv":[35,32],"uv_size":[0.75,0.25]},"down":{"uv":[33,35.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,1.1102,0.5089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,0.4539],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[49,44],"uv_size":[0.25,0.25]},"east":{"uv":[45,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,45],"uv_size":[0.25,0.25]},"west":{"uv":[46,49],"uv_size":[0.25,0.25]},"up":{"uv":[49,46],"uv_size":[0.25,0.25]},"down":{"uv":[47,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,0.5477,0.0089],"size":[0.69,0.4275,-0.11],"inflate":0.1,"pivot":[0.025,0.7802,-0.0461],"rotation":[-35,0,0],"uv":{"north":{"uv":[8,28],"uv_size":[0.75,0.5]},"east":{"uv":[20,40],"uv_size":[0.25,0.5]},"south":{"uv":[28,8],"uv_size":[0.75,0.5]},"west":{"uv":[40,20],"uv_size":[0.25,0.5]},"up":{"uv":[35,33],"uv_size":[0.75,0.25]},"down":{"uv":[34,35.25],"uv_size":[0.75,-0.25]}}}]},{"name":"h5","parent":"h1_fixed","pivot":[0.025,-0.0198,-0.0961],"cubes":[{"origin":[-0.145,-0.2773,0.0089],"size":[0.29,-0.0975,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,-0.0461],"rotation":[35,0,0],"uv":{"north":{"uv":[49,47],"uv_size":[0.25,0.25]},"east":{"uv":[48,49],"uv_size":[0.25,0.25]},"south":{"uv":[49,48],"uv_size":[0.25,0.25]},"west":{"uv":[49,49],"uv_size":[0.25,0.25]},"up":{"uv":[0,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,0.3151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,0.2601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[35,34],"uv_size":[0.75,0.25]},"east":{"uv":[1,50],"uv_size":[0.25,0.25]},"south":{"uv":[35,35],"uv_size":[0.75,0.25]},"west":{"uv":[50,1],"uv_size":[0.25,0.25]},"up":{"uv":[0,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,0.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,0.3151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,0.2601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[2,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,2],"uv_size":[0.25,0.25]},"south":{"uv":[3,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,3],"uv_size":[0.25,0.25]},"up":{"uv":[4,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,0.5089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,0.4539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[1,36],"uv_size":[0.75,0.25]},"east":{"uv":[5,50],"uv_size":[0.25,0.25]},"south":{"uv":[36,1],"uv_size":[0.75,0.25]},"west":{"uv":[50,5],"uv_size":[0.25,0.25]},"up":{"uv":[2,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,2.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-0.1898,0.7151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,0.6601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[3,36],"uv_size":[0.75,0.25]},"east":{"uv":[6,50],"uv_size":[0.25,0.25]},"south":{"uv":[36,3],"uv_size":[0.75,0.25]},"west":{"uv":[50,6],"uv_size":[0.25,0.25]},"up":{"uv":[4,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,4.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,0.7151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,0.6601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[7,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,7],"uv_size":[0.25,0.25]},"south":{"uv":[8,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,8],"uv_size":[0.25,0.25]},"up":{"uv":[9,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,-0.2398,0.9089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,0.8539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[10,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,10],"uv_size":[0.25,0.25]},"south":{"uv":[11,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,11],"uv_size":[0.25,0.25]},"up":{"uv":[12,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,0.9089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,0.8539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[5,36],"uv_size":[0.75,0.25]},"east":{"uv":[13,50],"uv_size":[0.25,0.25]},"south":{"uv":[36,5],"uv_size":[0.75,0.25]},"west":{"uv":[50,13],"uv_size":[0.25,0.25]},"up":{"uv":[6,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,6.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-0.1898,1.1151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,1.0601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[7,36],"uv_size":[0.75,0.25]},"east":{"uv":[14,50],"uv_size":[0.25,0.25]},"south":{"uv":[36,7],"uv_size":[0.75,0.25]},"west":{"uv":[50,14],"uv_size":[0.25,0.25]},"up":{"uv":[8,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,8.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,1.1151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,1.0601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[15,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,-0.2398,1.3089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,1.2539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[18,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,18],"uv_size":[0.25,0.25]},"south":{"uv":[19,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,19],"uv_size":[0.25,0.25]},"up":{"uv":[20,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,1.3089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,1.2539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[9,36],"uv_size":[0.75,0.25]},"east":{"uv":[21,50],"uv_size":[0.25,0.25]},"south":{"uv":[36,9],"uv_size":[0.75,0.25]},"west":{"uv":[50,21],"uv_size":[0.25,0.25]},"up":{"uv":[10,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,10.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,1.5151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,1.4601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[22,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,1.5151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,1.4601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[11,36],"uv_size":[0.75,0.25]},"east":{"uv":[25,50],"uv_size":[0.25,0.25]},"south":{"uv":[36,11],"uv_size":[0.75,0.25]},"west":{"uv":[50,25],"uv_size":[0.25,0.25]},"up":{"uv":[12,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,12.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-0.1898,1.7089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,1.6539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[13,36],"uv_size":[0.75,0.25]},"east":{"uv":[26,50],"uv_size":[0.25,0.25]},"south":{"uv":[36,13],"uv_size":[0.75,0.25]},"west":{"uv":[50,26],"uv_size":[0.25,0.25]},"up":{"uv":[14,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,14.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,1.7089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,1.6539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[27,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,27],"uv_size":[0.25,0.25]},"south":{"uv":[28,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,28],"uv_size":[0.25,0.25]},"up":{"uv":[29,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,-0.2398,1.9151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,1.8601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[30,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,30],"uv_size":[0.25,0.25]},"south":{"uv":[31,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,31],"uv_size":[0.25,0.25]},"up":{"uv":[32,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,32.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,1.9151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,1.8601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[15,36],"uv_size":[0.75,0.25]},"east":{"uv":[33,50],"uv_size":[0.25,0.25]},"south":{"uv":[36,15],"uv_size":[0.75,0.25]},"west":{"uv":[50,33],"uv_size":[0.25,0.25]},"up":{"uv":[16,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,16.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-0.1898,2.1089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,2.0539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[17,36],"uv_size":[0.75,0.25]},"east":{"uv":[34,50],"uv_size":[0.25,0.25]},"south":{"uv":[36,17],"uv_size":[0.75,0.25]},"west":{"uv":[50,34],"uv_size":[0.25,0.25]},"up":{"uv":[18,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,18.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,2.1089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,2.0539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[35,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,2.3151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,2.2601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[19,36],"uv_size":[0.75,0.25]},"east":{"uv":[38,50],"uv_size":[0.25,0.25]},"south":{"uv":[36,19],"uv_size":[0.75,0.25]},"west":{"uv":[50,38],"uv_size":[0.25,0.25]},"up":{"uv":[20,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,20.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,2.3151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,2.2601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[39,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,39],"uv_size":[0.25,0.25]},"south":{"uv":[40,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,40],"uv_size":[0.25,0.25]},"up":{"uv":[41,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,-0.2398,2.5089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,2.4539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[42,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,42],"uv_size":[0.25,0.25]},"south":{"uv":[43,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,43],"uv_size":[0.25,0.25]},"up":{"uv":[44,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,-0.2398,2.7151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,2.6601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[45,50],"uv_size":[0.25,0.25]},"east":{"uv":[50,45],"uv_size":[0.25,0.25]},"south":{"uv":[46,50],"uv_size":[0.25,0.25]},"west":{"uv":[50,46],"uv_size":[0.25,0.25]},"up":{"uv":[47,50],"uv_size":[0.25,0.25]},"down":{"uv":[50,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,2.7151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,2.6601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[21,36],"uv_size":[0.75,0.25]},"east":{"uv":[48,50],"uv_size":[0.25,0.25]},"south":{"uv":[36,21],"uv_size":[0.75,0.25]},"west":{"uv":[50,48],"uv_size":[0.25,0.25]},"up":{"uv":[22,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,22.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-0.1898,2.9089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,2.8539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[23,36],"uv_size":[0.75,0.25]},"east":{"uv":[49,50],"uv_size":[0.25,0.25]},"south":{"uv":[36,23],"uv_size":[0.75,0.25]},"west":{"uv":[50,49],"uv_size":[0.25,0.25]},"up":{"uv":[24,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,24.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,2.9089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,2.8539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[50,50],"uv_size":[0.25,0.25]},"east":{"uv":[0,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,0],"uv_size":[0.25,0.25]},"west":{"uv":[1,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,-0.2398,3.1151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,3.0601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[51,2],"uv_size":[0.25,0.25]},"east":{"uv":[3,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,3],"uv_size":[0.25,0.25]},"west":{"uv":[4,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,4],"uv_size":[0.25,0.25]},"down":{"uv":[5,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,3.1151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,3.0601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[25,36],"uv_size":[0.75,0.25]},"east":{"uv":[51,5],"uv_size":[0.25,0.25]},"south":{"uv":[36,25],"uv_size":[0.75,0.25]},"west":{"uv":[6,51],"uv_size":[0.25,0.25]},"up":{"uv":[26,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,26.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-0.1898,3.3089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,3.2539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[27,36],"uv_size":[0.75,0.25]},"east":{"uv":[51,6],"uv_size":[0.25,0.25]},"south":{"uv":[36,27],"uv_size":[0.75,0.25]},"west":{"uv":[7,51],"uv_size":[0.25,0.25]},"up":{"uv":[28,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,28.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,3.3089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,3.2539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[51,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,-0.2398,3.5151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,3.4601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[51,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,3.5151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,3.4601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[29,36],"uv_size":[0.75,0.25]},"east":{"uv":[51,13],"uv_size":[0.25,0.25]},"south":{"uv":[36,29],"uv_size":[0.75,0.25]},"west":{"uv":[14,51],"uv_size":[0.25,0.25]},"up":{"uv":[30,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,30.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-0.1898,3.7089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,3.6539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[31,36],"uv_size":[0.75,0.25]},"east":{"uv":[51,14],"uv_size":[0.25,0.25]},"south":{"uv":[36,31],"uv_size":[0.75,0.25]},"west":{"uv":[15,51],"uv_size":[0.25,0.25]},"up":{"uv":[32,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,32.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,3.7089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,3.6539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[51,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,-0.2398,3.9151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,3.8601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[51,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,3.9151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,3.8601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[33,36],"uv_size":[0.75,0.25]},"east":{"uv":[51,21],"uv_size":[0.25,0.25]},"south":{"uv":[36,33],"uv_size":[0.75,0.25]},"west":{"uv":[22,51],"uv_size":[0.25,0.25]},"up":{"uv":[34,36],"uv_size":[0.75,0.25]},"down":{"uv":[36,34.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-0.1898,4.3151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,4.2601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[35,36],"uv_size":[0.75,0.25]},"east":{"uv":[51,22],"uv_size":[0.25,0.25]},"south":{"uv":[36,35],"uv_size":[0.75,0.25]},"west":{"uv":[23,51],"uv_size":[0.25,0.25]},"up":{"uv":[36,36],"uv_size":[0.75,0.25]},"down":{"uv":[0,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-0.1898,4.1089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,4.0539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[37,0],"uv_size":[0.75,0.25]},"east":{"uv":[51,23],"uv_size":[0.25,0.25]},"south":{"uv":[1,37],"uv_size":[0.75,0.25]},"west":{"uv":[24,51],"uv_size":[0.25,0.25]},"up":{"uv":[37,1],"uv_size":[0.75,0.25]},"down":{"uv":[2,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,4.1089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,4.0539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[51,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,-0.2398,4.3151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,4.2601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[51,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,4.5089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,4.4539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[37,2],"uv_size":[0.75,0.25]},"east":{"uv":[51,30],"uv_size":[0.25,0.25]},"south":{"uv":[3,37],"uv_size":[0.75,0.25]},"west":{"uv":[31,51],"uv_size":[0.25,0.25]},"up":{"uv":[37,3],"uv_size":[0.75,0.25]},"down":{"uv":[4,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,4.5089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,4.4539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[51,31],"uv_size":[0.25,0.25]},"east":{"uv":[32,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,32],"uv_size":[0.25,0.25]},"west":{"uv":[33,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,-0.2398,4.7151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,4.6601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[51,34],"uv_size":[0.25,0.25]},"east":{"uv":[35,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,35],"uv_size":[0.25,0.25]},"west":{"uv":[36,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,4.7151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,4.6601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[37,4],"uv_size":[0.75,0.25]},"east":{"uv":[51,37],"uv_size":[0.25,0.25]},"south":{"uv":[5,37],"uv_size":[0.75,0.25]},"west":{"uv":[38,51],"uv_size":[0.25,0.25]},"up":{"uv":[37,5],"uv_size":[0.75,0.25]},"down":{"uv":[6,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-0.1898,4.9089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,4.8539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[37,6],"uv_size":[0.75,0.25]},"east":{"uv":[51,38],"uv_size":[0.25,0.25]},"south":{"uv":[7,37],"uv_size":[0.75,0.25]},"west":{"uv":[39,51],"uv_size":[0.25,0.25]},"up":{"uv":[37,7],"uv_size":[0.75,0.25]},"down":{"uv":[8,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,4.9089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,4.8539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[51,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,-0.2398,5.1151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,5.0601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[51,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,5.1151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,5.0601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[37,8],"uv_size":[0.75,0.25]},"east":{"uv":[51,45],"uv_size":[0.25,0.25]},"south":{"uv":[9,37],"uv_size":[0.75,0.25]},"west":{"uv":[46,51],"uv_size":[0.25,0.25]},"up":{"uv":[37,9],"uv_size":[0.75,0.25]},"down":{"uv":[10,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-0.1898,5.3089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,5.2539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[37,10],"uv_size":[0.75,0.25]},"east":{"uv":[51,46],"uv_size":[0.25,0.25]},"south":{"uv":[11,37],"uv_size":[0.75,0.25]},"west":{"uv":[47,51],"uv_size":[0.25,0.25]},"up":{"uv":[37,11],"uv_size":[0.75,0.25]},"down":{"uv":[12,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,5.3089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,5.2539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[51,47],"uv_size":[0.25,0.25]},"east":{"uv":[48,51],"uv_size":[0.25,0.25]},"south":{"uv":[51,48],"uv_size":[0.25,0.25]},"west":{"uv":[49,51],"uv_size":[0.25,0.25]},"up":{"uv":[51,49],"uv_size":[0.25,0.25]},"down":{"uv":[50,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.145,-0.2398,5.5151],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,5.4601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[51,50],"uv_size":[0.25,0.25]},"east":{"uv":[51,51],"uv_size":[0.25,0.25]},"south":{"uv":[0,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,5.5151],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,5.4601],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[37,12],"uv_size":[0.75,0.25]},"east":{"uv":[2,52],"uv_size":[0.25,0.25]},"south":{"uv":[13,37],"uv_size":[0.75,0.25]},"west":{"uv":[52,2],"uv_size":[0.25,0.25]},"up":{"uv":[37,13],"uv_size":[0.75,0.25]},"down":{"uv":[14,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,6.4651],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,6.4101],"rotation":[-30,0,0],"uv":{"north":{"uv":[3,52],"uv_size":[0.25,0.25]},"east":{"uv":[52,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,6.4651],"size":[0.69,0.39,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,6.4101],"rotation":[-30,0,0],"uv":{"north":{"uv":[9,28],"uv_size":[0.75,0.5]},"east":{"uv":[21,40],"uv_size":[0.25,0.5]},"south":{"uv":[28,9],"uv_size":[0.75,0.5]},"west":{"uv":[40,21],"uv_size":[0.25,0.5]},"up":{"uv":[37,14],"uv_size":[0.75,0.25]},"down":{"uv":[15,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.2477,6.4651],"size":[0.69,0.0025,-0.11],"inflate":0.1,"pivot":[0.025,0.2802,6.4101],"rotation":[-90,0,0],"uv":{"north":{"uv":[37,15],"uv_size":[0.75,0.25]},"east":{"uv":[6,52],"uv_size":[0.25,0.25]},"south":{"uv":[16,37],"uv_size":[0.75,0.25]},"west":{"uv":[52,6],"uv_size":[0.25,0.25]},"up":{"uv":[37,16],"uv_size":[0.75,0.25]},"down":{"uv":[17,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.3503,6.3149],"size":[0.69,-0.1364,-0.1364],"inflate":0.1,"pivot":[0.025,0.2439,6.2599],"rotation":[-45,0,0],"uv":{"north":{"uv":[37,17],"uv_size":[0.75,0.25]},"east":{"uv":[7,52],"uv_size":[0.25,0.25]},"south":{"uv":[18,37],"uv_size":[0.75,0.25]},"west":{"uv":[52,7],"uv_size":[0.25,0.25]},"up":{"uv":[37,18],"uv_size":[0.75,0.25]},"down":{"uv":[19,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.3503,6.5174],"size":[0.69,-0.1364,-0.1364],"inflate":0.1,"pivot":[0.025,0.2439,6.4624],"rotation":[-45,0,0],"uv":{"north":{"uv":[37,19],"uv_size":[0.75,0.25]},"east":{"uv":[8,52],"uv_size":[0.25,0.25]},"south":{"uv":[20,37],"uv_size":[0.75,0.25]},"west":{"uv":[52,8],"uv_size":[0.25,0.25]},"up":{"uv":[37,20],"uv_size":[0.75,0.25]},"down":{"uv":[21,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,0.0102,5.7089],"size":[0.69,0.14,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,5.6539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[37,21],"uv_size":[0.75,0.25]},"east":{"uv":[9,52],"uv_size":[0.25,0.25]},"south":{"uv":[22,37],"uv_size":[0.75,0.25]},"west":{"uv":[52,9],"uv_size":[0.25,0.25]},"up":{"uv":[37,22],"uv_size":[0.75,0.25]},"down":{"uv":[23,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.345,-0.1671,5.9096],"size":[-0.11,0.09,-0.11],"inflate":0.1,"pivot":[0.025,-0.2471,5.8546],"rotation":[47.5,0,0],"uv":{"north":{"uv":[10,52],"uv_size":[0.25,0.25]},"east":{"uv":[52,10],"uv_size":[0.25,0.25]},"south":{"uv":[11,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,11],"uv_size":[0.25,0.25]},"up":{"uv":[12,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.455,-0.1671,5.9096],"size":[-0.11,0.09,-0.11],"inflate":0.1,"pivot":[-0.025,-0.2471,5.8546],"rotation":[47.5,0,0],"uv":{"north":{"uv":[13,52],"uv_size":[0.25,0.25]},"east":{"uv":[52,13],"uv_size":[0.25,0.25]},"south":{"uv":[14,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,14],"uv_size":[0.25,0.25]},"up":{"uv":[15,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.455,-0.1688,5.9139],"size":[-0.11,-0.11,-0.11],"inflate":0.1,"pivot":[-0.025,-0.2488,5.8589],"rotation":[-90,0,0],"uv":{"north":{"uv":[16,52],"uv_size":[0.25,0.25]},"east":{"uv":[52,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.4685,-0.1688,5.6657],"size":[-0.11,0.29,-0.11],"inflate":0.1,"pivot":[-0.0985,-0.2488,5.6107],"rotation":[-90,45,0],"uv":{"north":{"uv":[19,52],"uv_size":[0.25,0.25]},"east":{"uv":[52,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1688,5.9139],"size":[-0.11,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.2488,5.8589],"rotation":[-90,0,0],"uv":{"north":{"uv":[22,52],"uv_size":[0.25,0.25]},"east":{"uv":[52,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.5785,-0.1688,5.6657],"size":[-0.11,0.29,-0.11],"inflate":0.1,"pivot":[0.0985,-0.2488,5.6107],"rotation":[-90,-45,0],"uv":{"north":{"uv":[25,52],"uv_size":[0.25,0.25]},"east":{"uv":[52,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.1898,2.5089],"size":[0.69,0.34,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,2.4539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[37,23],"uv_size":[0.75,0.25]},"east":{"uv":[28,52],"uv_size":[0.25,0.25]},"south":{"uv":[24,37],"uv_size":[0.75,0.25]},"west":{"uv":[52,28],"uv_size":[0.25,0.25]},"up":{"uv":[37,24],"uv_size":[0.75,0.25]},"down":{"uv":[25,37.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.145,-0.2398,0.5089],"size":[0.29,-0.11,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,0.4539],"rotation":[12.5,0,0],"uv":{"north":{"uv":[29,52],"uv_size":[0.25,0.25]},"east":{"uv":[52,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,52],"uv_size":[0.25,0.25]},"west":{"uv":[52,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,52],"uv_size":[0.25,0.25]},"down":{"uv":[52,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.345,-0.2148,0.0089],"size":[0.69,0.4275,-0.11],"inflate":0.1,"pivot":[0.025,-0.0198,-0.0461],"rotation":[35,0,0],"uv":{"north":{"uv":[28,10],"uv_size":[0.75,0.5]},"east":{"uv":[22,40],"uv_size":[0.25,0.5]},"south":{"uv":[28,11],"uv_size":[0.75,0.5]},"west":{"uv":[40,22],"uv_size":[0.25,0.5]},"up":{"uv":[37,25],"uv_size":[0.75,0.25]},"down":{"uv":[26,37.25],"uv_size":[0.75,-0.25]}}}]},{"name":"constraint","pivot":[-0.0156,8.125,1.9375]},{"name":"camera","pivot":[3.4563,3.4656,-0.7687]},{"name":"view","pivot":[0,0,0]},{"name":"refit_view","parent":"view","pivot":[22.475,5.55,0.2],"rotation":[0,90,0]},{"name":"idle_view","parent":"view","pivot":[-1.5,51.4219,2],"rotation":[0,-1,0]},{"name":"positioning","pivot":[-0.0156,4.125,4.9375]},{"name":"ground","parent":"positioning","pivot":[0,0,0]},{"name":"thirdperson_hand","parent":"positioning","pivot":[-0.0156,6.125,-2.0625]},{"name":"fixed","parent":"positioning","pivot":[0.7969,5.125,-1.0625],"rotation":[0,90,0]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/treasure_kn.anim.json b/src/main/resources/assets/evolution/cosmetic/melee/treasure_kn.anim.json new file mode 100644 index 0000000..ed9355b --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/treasure_kn.anim.json @@ -0,0 +1 @@ +{"format_version":"1.8.0","animations":{"draw":{"loop":"hold_on_last_frame","animation_length":1.96,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[92.661,-38.308,127.884],"0.0417":[92.1,-35.675,127.68],"0.0833":[91.797,-34.337,127.591],"0.125":[90.807,-30.257,127.362],"0.1667":[90.459,-28.876,127.29],"0.2083":[89.735,-26.088,127.148],"0.25":[88.601,-21.857,126.919],"0.2917":[87.836,-19.011,126.739],"0.3333":[87.447,-17.584,126.64],"0.375":[86.27,-13.299,126.292],"0.4167":[85.876,-11.873,126.158],"0.4583":[85.089,-9.029,125.855],"0.5":[83.921,-4.795,125.317],"0.5417":[83.142,-2.008,124.889],"0.5833":[82.76,-0.63,124.655],"0.625":[81.616,3.446,123.869],"0.6667":[81.243,4.775,123.572],"0.7083":[80.502,7.396,122.935],"0.75":[79.414,11.199,121.855],"0.7917":[78.717,13.639,121.053],"0.8333":[78.373,14.828,120.623],"0.875":[77.378,18.258,119.231],"0.9167":[77.059,19.351,118.733],"0.9583":[76.446,21.463,117.678],"1.0":[75.593,24.42,115.972],"1.0417":[75.083,26.244,114.751],"1.0833":[74.845,27.108,114.116],"1.125":[74.229,29.506,112.127],"1.1667":[74.317,29.957,111.336],"1.2083":[75.927,29.343,109.225],"1.25":[81.046,25.946,105.175],"1.2917":[85.52,23.043,102.176],"1.3333":[87.868,21.639,100.681],"1.375":[94.477,18.387,96.767],"1.4167":[96.276,17.809,95.849],"1.4583":[99.046,17.907,96.413],"1.5":[103.061,18.617,99.803],"1.5417":[107.19,17.278,100.577],"1.5833":[109.307,16.525,100.597],"1.625":[112.448,17.84,97.295],"1.6667":[112.812,19.033,95.869],"1.7083":[114.356,20.702,97.897],"1.75":[117.835,22.168,108.346],"1.7917":[119.642,24.137,112.601],"1.8333":[120.482,25.264,114.374],"1.875":[121.886,27.949,117.177],"1.9167":[121.658,28.528,116.732],"1.9583":[120.956,29.596,115.371]},"position":{"0.0":[15.406,27.374,-9.81],"0.0417":[15.817,27.283,-9.659],"0.0833":[16.029,27.228,-9.578],"0.125":[16.685,27.028,-9.32],"0.1667":[16.909,26.951,-9.229],"0.2083":[17.367,26.783,-9.042],"0.25":[18.066,26.506,-8.758],"0.2917":[18.538,26.306,-8.57],"0.3333":[18.775,26.204,-8.478],"0.375":[19.487,25.888,-8.206],"0.4167":[19.723,25.781,-8.119],"0.4583":[20.194,25.571,-7.956],"0.5":[20.893,25.258,-7.736],"0.5417":[21.346,25.058,-7.606],"0.5833":[21.57,24.964,-7.55],"0.625":[22.225,24.695,-7.405],"0.6667":[22.438,24.615,-7.368],"0.7083":[22.847,24.466,-7.311],"0.75":[23.432,24.283,-7.269],"0.7917":[23.798,24.193,-7.275],"0.8333":[23.972,24.158,-7.289],"0.875":[24.458,24.1,-7.374],"0.9167":[24.606,24.097,-7.418],"0.9583":[24.882,24.119,-7.529],"1.0":[25.238,24.224,-7.759],"1.0417":[25.433,24.347,-7.957],"1.0833":[25.517,24.426,-8.069],"1.125":[25.71,24.733,-8.463],"1.1667":[25.661,24.978,-8.704],"1.2083":[25.054,26.118,-9.672],"1.25":[23.234,28.97,-11.968],"1.2917":[21.699,31.252,-13.778],"1.3333":[20.909,32.402,-14.688],"1.375":[18.716,35.465,-17.115],"1.4167":[18.127,36.229,-17.725],"1.4583":[17.156,36.791,-18.19],"1.5":[16.051,36.539,-17.855],"1.5417":[15.602,36.724,-17.532],"1.5833":[15.476,36.823,-17.327],"1.625":[15.426,37.07,-17.059],"1.6667":[15.503,37.129,-17.05],"1.7083":[15.633,37.114,-17.221],"1.75":[15.788,36.882,-17.744],"1.7917":[15.797,36.884,-17.785],"1.8333":[15.787,36.904,-17.766],"1.875":[15.749,36.903,-17.795],"1.9167":[15.735,36.867,-17.845],"1.9583":[15.711,36.781,-17.959]}},"righthand":{"rotation":{"0.0":[71.453,23.946,-95.696],"0.0417":[68.786,7.955,-84.614],"0.0833":[69.548,2.063,-79.593],"0.125":[73.752,-7.471,-77.487],"0.1667":[75.263,-9.693,-78.9],"0.2083":[78.389,-13.418,-83.4],"0.25":[83.664,-17.827,-92.007],"0.2917":[88.165,-20.395,-97.21],"0.3333":[90.973,-21.679,-99.267],"0.375":[97.431,-20.829,-104.719],"0.4167":[91.594,-27.23,-96.136],"0.4583":[100.267,-21.268,-97.139],"0.5":[106.68,-21.9,-85.468],"0.5417":[112.071,-20.953,-91.798],"0.5833":[112.731,-21.583,-90.47],"0.625":[113.023,-23.615,-86.187],"0.6667":[112.593,-24.104,-85.369],"0.7083":[110.387,-24.938,-83.697],"0.75":[105.683,-24.262,-81.158],"0.7917":[104.35,-20.866,-79.594],"0.8333":[105.818,-17.278,-78.63],"0.875":[118.911,-3.69,-72.334],"0.9167":[124.97,2.522,-70.742],"0.9583":[139.588,27.541,-73.458],"1.0":[106.498,68.486,-136.777],"1.0417":[51.486,61,-208.763],"1.0833":[44.887,52.862,-223.736],"1.125":[44.339,33.695,-252.077],"1.1667":[48.982,28.411,-256.52],"1.2083":[59.339,21.519,-265.119],"1.25":[74.808,23.655,-278.347],"1.2917":[82.97,30.857,-282.55],"1.3333":[86.277,36.201,-281.975],"1.375":[108.671,48.204,-258.263],"1.4167":[121.651,47.444,-240.823],"1.4583":[138.527,37.096,-213.461],"1.5":[151.515,22.853,-183.342],"1.5417":[154.744,21.242,-174.996],"1.5833":[156.484,22.658,-172.52],"1.625":[160.566,28.426,-169.487],"1.6667":[161.289,30.285,-169.532],"1.7083":[162.188,33.548,-170.183],"1.75":[161.457,35.557,-173.102],"1.7917":[160.236,35.043,-174.452],"1.8333":[159.602,34.533,-174.924],"1.875":[158.614,33.439,-174.975],"1.9167":[158.458,33.128,-174.689],"1.9583":[158.143,32.508,-174.117]},"position":{"0.0":[-14.972,30.713,1.002],"0.0417":[-16.305,35.677,2.045],"0.0833":[-15.748,37.772,2.646],"0.125":[-14.273,40.303,3.293],"0.1667":[-13.959,40.706,3.386],"0.2083":[-13.565,41.234,3.417],"0.25":[-13.41,41.691,2.951],"0.2917":[-13.419,42.013,2.185],"0.3333":[-13.387,42.254,1.624],"0.375":[-10.452,42.135,-10.296],"0.4167":[-9.962,40.927,-14.741],"0.4583":[-9.86,40.898,-20.12],"0.5":[-9.131,41.288,-20.704],"0.5417":[-9.177,41.563,-20.72],"0.5833":[-9.279,41.651,-20.675],"0.625":[-9.659,41.784,-20.529],"0.6667":[-9.81,41.756,-20.495],"0.7083":[-10.079,41.631,-20.48],"0.75":[-10.413,41.312,-20.622],"0.7917":[-10.639,41.051,-20.778],"0.8333":[-10.882,40.84,-20.752],"0.875":[-11.005,40.12,-20.229],"0.9167":[-10.717,39.932,-19.799],"0.9583":[-9.061,39.696,-17.601],"1.0":[-7.355,39.642,-16.192],"1.0417":[-6.983,39.759,-15.93],"1.0833":[-6.868,39.918,-15.879],"1.125":[-7.104,40.688,-15.491],"1.1667":[-7.252,40.87,-14.983],"1.2083":[-7.554,41.108,-14.029],"1.25":[-8.157,40.781,-13.1],"1.2917":[-8.683,40.441,-12.778],"1.3333":[-9.005,40.201,-12.713],"1.375":[-10.263,39.236,-12.512],"1.4167":[-10.849,38.774,-12.278],"1.4583":[-11.898,38.214,-11.654],"1.5":[-13.029,38.405,-11.019],"1.5417":[-13.35,38.83,-10.844],"1.5833":[-13.412,38.959,-10.914],"1.625":[-13.398,39.314,-11.222],"1.6667":[-13.386,39.424,-11.33],"1.7083":[-13.345,39.586,-11.557],"1.75":[-13.247,39.625,-11.848],"1.7917":[-13.195,39.523,-12.02],"1.8333":[-13.174,39.461,-12.092],"1.875":[-13.166,39.38,-12.17],"1.9167":[-13.176,39.372,-12.163],"1.9583":[-13.198,39.363,-12.128]}},"treasure_kn":{"rotation":{"0.0":[6.999,-58.777,56.594],"0.0417":[25.169,-69.857,36.035],"0.0833":[46.122,-76.684,15.612],"0.125":[151.559,-60.326,-82.107],"0.1667":[159.141,-46.797,-88.445],"0.2083":[164.508,-18.871,-91.033],"0.25":[167.315,20.066,-89.104],"0.2917":[168.14,44.023,-88.473],"0.3333":[168.785,57.416,-88.765],"0.375":[185.612,130.713,-85.951],"0.4167":[195.28,147.713,-84.171],"0.4583":[184.916,160.467,-85.822],"0.5":[178.688,158.509,-74.091],"0.5417":[173.101,158.346,-80.602],"0.5833":[172.528,157.551,-79.305],"0.625":[172.487,155.327,-75.098],"0.6667":[172.948,154.859,-74.32],"0.7083":[175.163,154.285,-72.736],"0.75":[179.434,155.506,-70.533],"0.7917":[179.93,158.883,-69.425],"0.8333":[177.744,162.079,-68.788],"0.875":[162.301,173.181,-63.742],"0.9167":[155.333,178.39,-62.736],"0.9583":[138.021,201.086,-70.482],"1.0":[160.055,243.989,-123.376],"1.0417":[214.639,242.843,-194.375],"1.0833":[225.011,235.68,-212.741],"1.125":[230.106,216.815,-244.4],"1.1667":[226.273,211.049,-249.058],"1.2083":[216.69,203.007,-257.725],"1.25":[199.648,203.283,-270.639],"1.2917":[188.816,209.449,-274.408],"1.3333":[183.449,214.348,-273.385],"1.375":[157.962,223.725,-249.827],"1.4167":[146.704,221.834,-234.142],"1.4583":[134.907,210.483,-209.925],"1.5":[127.14,196.068,-181.651],"1.5417":[123.58,194.608,-173.133],"1.5833":[121.962,195.821,-171.243],"1.625":[118.158,201.35,-169.239],"1.6667":[117.453,203.22,-169.334],"1.7083":[116.603,206.481,-170.103],"1.75":[117.277,208.492,-172.918],"1.7917":[118.41,207.982,-174.099],"1.8333":[119.002,207.476,-174.485],"1.875":[119.933,206.389,-174.405],"1.9167":[120.081,206.08,-174.099],"1.9583":[120.383,205.462,-173.487]},"position":{"0.0":[-4.724,51.307,-11.359],"0.0417":[-4.495,54.949,-11.876],"0.0833":[-4.355,56.226,-11.879],"0.125":[-3.911,58.764,-11.836],"0.1667":[-3.81,59.085,-11.804],"0.2083":[-3.628,59.394,-11.855],"0.25":[-3.402,59.61,-12.092],"0.2917":[-3.35,59.369,-12.377],"0.3333":[-3.329,59.139,-12.527],"0.375":[-3.309,56.625,-14.252],"0.4167":[-3.349,55.067,-17.602],"0.4583":[-2.85,54.797,-22.702],"0.5":[-1.912,54.952,-23.171],"0.5417":[-1.728,55.285,-23.066],"0.5833":[-1.813,55.362,-23.005],"0.625":[-2.205,55.467,-22.856],"0.6667":[-2.374,55.445,-22.834],"0.7083":[-2.727,55.345,-22.869],"0.75":[-3.247,55.016,-23.101],"0.7917":[-3.557,54.601,-23.269],"0.8333":[-3.785,54.203,-23.193],"0.875":[-3.717,52.683,-22.177],"0.9167":[-3.356,52.216,-21.442],"0.9583":[-1.37,51.686,-18.164],"1.0":[1.213,52.888,-16.047],"1.0417":[1.682,53.995,-16.131],"1.0833":[1.702,54.543,-16.341],"1.125":[0.794,56.188,-16.671],"1.1667":[0.341,56.488,-16.434],"1.2083":[-0.642,56.859,-15.865],"1.25":[-2.32,56.706,-14.957],"1.2917":[-3.348,56.473,-14.354],"1.3333":[-3.795,56.327,-14.062],"1.375":[-4.97,55.665,-13.154],"1.4167":[-5.301,55.306,-12.734],"1.4583":[-5.774,54.831,-12.012],"1.5":[-5.972,54.837,-11.28],"1.5417":[-6.027,55.078,-11.062],"1.5833":[-5.996,55.194,-11.006],"1.625":[-5.914,55.529,-10.999],"1.6667":[-5.925,55.641,-11.05],"1.7083":[-5.952,55.834,-11.187],"1.75":[-5.975,55.951,-11.475],"1.7917":[-5.945,55.872,-11.698],"1.8333":[-5.925,55.815,-11.802],"1.875":[-5.891,55.727,-11.935],"1.9167":[-5.884,55.711,-11.939],"1.9583":[-5.873,55.686,-11.926]}},"lefthand_1":{"position":[0,1.5,1],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[-12.5,0,0],"0.6667":[-12.5,0,0],"1.0":[22.9098,-10.2886,22.9098],"1.25":[-12.5,0,0]},"position":[0,1.0118,0.8918],"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[-0.042,0.007,-0.007],"0.0417":[-0.305,0.048,-0.045],"0.0833":[-0.5,0.08,-0.075],"0.125":[-1.073,0.172,-0.196],"0.1667":[-1.199,0.195,-0.242],"0.2083":[-1.359,0.227,-0.385],"0.25":[-1.44,0.256,-0.611],"0.2917":[-1.417,0.244,-0.543],"0.3333":[-1.348,0.209,-0.325],"0.375":[-0.962,0.05,0.6],"0.4167":[-0.806,0.015,0.82],"0.4583":[-0.337,0.15,-0.485],"0.5":[0.033,0.086,-0.221],"0.5417":[0.033,-0.168,0.053],"0.5833":[0.038,-0.256,-0.243],"0.625":[-0.011,-0.277,0.206],"0.6667":[-0.022,-0.232,0.14],"0.7083":[-0.046,-0.175,-0.002],"0.75":[-0.082,-0.168,-0.177],"0.7917":[-0.116,-0.21,-0.243],"0.8333":[-0.138,-0.238,-0.233],"0.875":[-0.203,-0.32,-0.126],"0.9167":[-0.212,-0.338,-0.077],"0.9583":[-0.154,-0.352,0.059],"1.0":[-0.103,-0.343,0.225],"1.0417":[-0.117,-0.278,0.303],"1.0833":[-0.127,-0.232,0.332],"1.125":[-0.131,-0.108,0.351],"1.1667":[-0.114,-0.067,0.351],"1.2083":[-0.064,0.019,0.33],"1.25":[0.063,0.135,0.248],"1.2917":[0.119,0.148,0.173],"1.3333":[0.135,0.144,0.135],"1.375":[0.154,0.114,0.023],"1.4167":[0.146,0.092,-0.014],"1.4583":[0.099,0.04,-0.074],"1.5":[0.023,-0.046,-0.082],"1.5417":[-0.037,-0.115,0.038],"1.5833":[-0.061,-0.149,0.111],"1.625":[-0.064,-0.165,0.145],"1.6667":[-0.01,-0.133,0.043],"1.7083":[0.108,-0.05,-0.167],"1.75":[0.115,0.025,-0.119],"1.7917":[0.083,0.052,0.05],"1.8333":[0.065,0.06,0.111],"1.875":[0.025,0.036,0.091],"1.9167":[0.011,0.013,0.05],"1.9583":[0,-0.019,-0.004]}}},"sound_effects":{"0.0":{"effect":"melee.treasure_kn.treasure_kn_draw_1"}}},"draw_1":{"loop":"hold_on_last_frame","animation_length":1.875,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[92.228,-37.524,129.146],"0.0417":[91.595,-34.299,128.81],"0.0833":[91.241,-32.656,128.661],"0.125":[90.072,-27.625,128.256],"0.1667":[89.658,-25.916,128.122],"0.2083":[88.792,-22.468,127.849],"0.25":[87.443,-17.241,127.391],"0.2917":[86.517,-13.744,127.036],"0.3333":[86.049,-12,126.841],"0.375":[84.644,-6.782,126.155],"0.4167":[84.175,-5.059,125.894],"0.4583":[83.239,-1.648,125.313],"0.5":[81.848,3.351,124.291],"0.5417":[80.934,6.582,123.5],"0.5833":[80.482,8.162,123.069],"0.625":[79.156,12.735,121.637],"0.6667":[78.725,14.197,121.11],"0.7083":[77.887,17.019,119.984],"0.75":[76.701,20.965,118.11],"0.7917":[75.969,23.385,116.741],"0.8333":[75.626,24.53,116.019],"0.875":[74.717,27.668,113.739],"0.9167":[74.461,28.613,112.944],"0.9583":[74.29,30.054,111.213],"1.0":[77.336,28.653,107.68],"1.0417":[81.117,26.115,104.896],"1.0833":[83.324,24.64,103.434],"1.125":[90.331,20.381,99.112],"1.1667":[92.535,19.254,97.827],"1.2083":[96.275,17.81,95.848],"1.25":[99.809,18.059,96.931],"1.2917":[101.833,18.618,99.106],"1.3333":[103.058,18.619,99.799],"1.375":[108.001,16.931,100.665],"1.4167":[109.618,16.412,100.591],"1.4583":[111.872,16.816,99.147],"1.5":[113.376,20.043,95.818],"1.5417":[115.111,21.028,99.955],"1.5833":[116.084,21.337,102.999],"1.625":[118.587,22.907,110.204],"1.6667":[119.349,23.79,111.95],"1.7083":[120.756,25.688,114.935],"1.75":[121.908,27.777,117.224],"1.7917":[121.686,28.576,116.786],"1.8333":[121.419,28.906,116.266],"1.875":[120.957,29.592,115.373]},"position":{"0.0":[15.342,27.703,-9.473],"0.0417":[15.852,27.574,-9.303],"0.0833":[16.116,27.492,-9.209],"0.125":[16.939,27.205,-8.909],"0.1667":[17.222,27.096,-8.806],"0.2083":[17.795,26.862,-8.597],"0.25":[18.669,26.479,-8.281],"0.2917":[19.255,26.211,-8.078],"0.3333":[19.549,26.074,-7.981],"0.375":[20.421,25.666,-7.714],"0.4167":[20.707,25.534,-7.636],"0.4583":[21.269,25.274,-7.496],"0.5":[22.087,24.92,-7.333],"0.5417":[22.609,24.708,-7.263],"0.5833":[22.861,24.615,-7.242],"0.625":[23.576,24.383,-7.23],"0.6667":[23.796,24.32,-7.241],"0.7083":[24.213,24.234,-7.303],"0.75":[24.77,24.195,-7.477],"0.7917":[25.084,24.234,-7.645],"0.8333":[25.225,24.277,-7.751],"0.875":[25.56,24.497,-8.136],"0.9167":[25.641,24.606,-8.292],"0.9583":[25.669,24.993,-8.73],"1.0":[24.541,27.006,-10.43],"1.0417":[23.212,29.047,-12.061],"1.0833":[22.452,30.177,-12.957],"1.125":[20.087,33.582,-15.635],"1.1667":[19.355,34.601,-16.434],"1.2083":[18.128,36.23,-17.724],"1.25":[16.893,36.82,-18.21],"1.2917":[16.305,36.563,-17.952],"1.3333":[16.05,36.538,-17.854],"1.375":[15.545,36.762,-17.452],"1.4167":[15.46,36.838,-17.296],"1.4583":[15.384,36.988,-17.111],"1.5":[15.572,37.154,-17.093],"1.5417":[15.676,37.066,-17.339],"1.5833":[15.726,36.991,-17.502],"1.625":[15.797,36.872,-17.783],"1.6667":[15.799,36.876,-17.79],"1.7083":[15.782,36.907,-17.761],"1.75":[15.751,36.914,-17.781],"1.7917":[15.735,36.866,-17.848],"1.8333":[15.727,36.838,-17.884],"1.875":[15.711,36.78,-17.958]}},"righthand":{"rotation":{"0.0":[74.838,15.19,124.619],"0.0417":[80.645,16.113,115.952],"0.0833":[84.518,17.898,112.845],"0.125":[116.565,24.435,141.358],"0.1667":[122.215,24.186,149.399],"0.2083":[132.767,22.001,163.958],"0.25":[144.228,12.33,188.003],"0.2917":[139.931,0.503,220.475],"0.3333":[133.181,-1.975,241.247],"0.375":[119.243,4.577,264.583],"0.4167":[115.014,2.626,256.874],"0.4583":[118.285,1.727,244.065],"0.5":[122.613,2.091,234.707],"0.5417":[125.16,-0.642,239.692],"0.5833":[126.297,-4.264,244.641],"0.625":[129.012,-15.243,255.02],"0.6667":[131.166,-16.694,258.506],"0.7083":[146.149,-17.877,268.421],"0.75":[177.237,-24.731,270.314],"0.7917":[168.009,-18.52,277.523],"0.8333":[165.146,-19.228,275.607],"0.875":[160.304,-22.56,271.578],"0.9167":[159.468,-22.084,273.36],"0.9583":[158.829,-21.111,276.028],"1.0":[161.047,-23.041,269.548],"1.0417":[161.332,-23.635,266.502],"1.0833":[160.862,-23.767,266.006],"1.125":[159.333,-19.997,267.614],"1.1667":[159.431,-16.358,266.674],"1.2083":[160.432,-6.224,258.79],"1.25":[160.101,10.361,240.724],"1.2917":[158.6,18.73,224.275],"1.3333":[158.031,22.669,216.345],"1.375":[155.981,33.121,194.265],"1.4167":[155.661,34.062,190.638],"1.4583":[155.224,34.037,186.927],"1.5":[155.436,32.602,184.98],"1.5417":[155.263,31.249,184.274],"1.5833":[155.16,30.669,183.972],"1.625":[155.783,30.068,184.285],"1.6667":[156.114,29.935,184.404],"1.7083":[156.812,29.884,184.688],"1.75":[157.981,30.763,185.627],"1.7917":[158.535,31.69,186.18],"1.8333":[158.452,32.048,186.113],"1.875":[158.141,32.507,185.882]},"position":{"0.0":[-12.733,35.581,-11.671],"0.0417":[-13.335,38.362,-13.069],"0.0833":[-13.493,39.605,-13.345],"0.125":[-13.422,41.251,-13.828],"0.1667":[-13.343,41.162,-13.967],"0.2083":[-13.183,40.86,-14.267],"0.25":[-13.585,40.04,-14.55],"0.2917":[-14.833,39.24,-14.399],"0.3333":[-15.204,39.05,-14.314],"0.375":[-14.717,39.21,-14.852],"0.4167":[-14.085,39.522,-15.702],"0.4583":[-13.446,39.693,-16.345],"0.5":[-11.413,40.654,-17.148],"0.5417":[-10.24,41.037,-17.313],"0.5833":[-9.771,41.178,-17.27],"0.625":[-8.441,41.166,-16.576],"0.6667":[-8.107,40.982,-16.295],"0.7083":[-7.897,40.335,-15.659],"0.75":[-8.771,37.922,-12.586],"0.7917":[-9.378,38.094,-11.325],"0.8333":[-9.728,38.007,-11.487],"0.875":[-10.122,37.837,-12.485],"0.9167":[-10.044,37.908,-12.568],"0.9583":[-9.895,38.057,-12.696],"1.0":[-9.882,38.039,-12.982],"1.0417":[-9.91,37.959,-13.137],"1.0833":[-9.914,37.929,-13.201],"1.125":[-10.043,38.071,-13.487],"1.1667":[-10.309,38.143,-13.599],"1.2083":[-11.364,38.224,-13.744],"1.25":[-12.959,38.357,-13.556],"1.2917":[-13.636,38.435,-13.053],"1.3333":[-13.817,38.514,-12.776],"1.375":[-13.563,39.022,-11.739],"1.4167":[-13.488,39.176,-11.583],"1.4583":[-13.395,39.41,-11.554],"1.5":[-13.306,39.544,-11.765],"1.5417":[-13.255,39.53,-11.913],"1.5833":[-13.225,39.508,-11.98],"1.625":[-13.176,39.44,-12.125],"1.6667":[-13.161,39.41,-12.146],"1.7083":[-13.142,39.352,-12.179],"1.75":[-13.151,39.305,-12.207],"1.7917":[-13.161,39.297,-12.19],"1.8333":[-13.172,39.315,-12.166],"1.875":[-13.197,39.364,-12.128]}},"treasure_kn":{"rotation":{"0.0":[46.729,-21.882,-35.341],"0.0417":[17.994,-15.951,-38.061],"0.0833":[0.652,-11.906,-40.449],"0.125":[-95,-10.035,-32.649],"0.1667":[-125.43,-7.001,-24.803],"0.2083":[-176.55,1.796,-23.531],"0.25":[-266.33,-4.782,-15.666],"0.2917":[-316.433,-0.25,3.522],"0.3333":[-344.895,6.751,18.21],"0.375":[-422.601,13.529,46.043],"0.4167":[-442.829,9.334,63.733],"0.4583":[-492.019,9.618,66.049],"0.5":[-571.287,21.824,79.013],"0.5417":[-618.544,29.701,87.562],"0.5833":[-636.249,36.358,98.157],"0.625":[-726.157,33.983,76.678],"0.6667":[-742.473,26.134,83.136],"0.7083":[-778.541,24.385,88.895],"0.75":[-810.049,31.251,77.994],"0.7917":[-797.361,26.852,90.331],"0.8333":[-794.201,27.543,91.137],"0.875":[-789.134,29.956,92.738],"0.9167":[-788.257,29.479,94.579],"0.9583":[-787.615,28.622,96.862],"1.0":[-789.953,30.575,90.061],"1.0417":[-790.362,31.179,86.978],"1.0833":[-789.967,31.314,86.556],"1.125":[-785.871,27.376,88.292],"1.1667":[-785.366,23.7,87.296],"1.2083":[-787.928,13.662,79.286],"1.25":[-789.277,-2.833,61.289],"1.2917":[-786.916,-11.279,45.024],"1.3333":[-785.439,-15.283,37.152],"1.375":[-777.609,-26.099,15.194],"1.4167":[-776.839,-27.07,11.598],"1.4583":[-776.759,-27.035,7.96],"1.5":[-777.091,-25.588,5.978],"1.5417":[-776.902,-24.238,5.284],"1.5833":[-776.794,-23.66,4.992],"1.625":[-777.368,-23.05,5.217],"1.6667":[-777.678,-22.912,5.291],"1.7083":[-778.333,-22.852,5.483],"1.75":[-779.444,-23.719,6.27],"1.7917":[-779.974,-24.641,6.754],"1.8333":[-779.901,-24.999,6.699],"1.875":[-779.615,-25.461,6.513]},"position":{"0.0":[-5.765,51.505,-13.65],"0.0417":[-6.5,54.373,-15.046],"0.0833":[-6.713,55.684,-15.384],"0.125":[-6.559,58.253,-16.361],"0.1667":[-6.559,58.663,-16.544],"0.2083":[-6.478,59.251,-16.184],"0.25":[-5.783,58.39,-14.584],"0.2917":[-5.282,55.352,-14.76],"0.3333":[-5.335,53.305,-15.424],"0.375":[-5.956,51.651,-18.322],"0.4167":[-5.518,52.964,-19.949],"0.4583":[-4.188,54.509,-21.035],"0.5":[-0.95,56.276,-20.965],"0.5417":[0.474,55.949,-20.235],"0.5833":[0.787,55.578,-19.991],"0.625":[0.944,55.392,-19.118],"0.6667":[1.09,55.336,-18.73],"0.7083":[0.954,54.141,-17.173],"0.75":[-0.366,50.694,-12.788],"0.7917":[-1.049,50.749,-11.747],"0.8333":[-1.382,50.818,-12.031],"0.875":[-1.812,50.983,-13.25],"0.9167":[-1.765,50.989,-13.358],"0.9583":[-1.66,51.023,-13.5],"1.0":[-1.528,51.255,-13.728],"1.0417":[-1.518,51.305,-13.882],"1.0833":[-1.523,51.306,-13.966],"1.125":[-1.644,51.345,-14.234],"1.1667":[-1.884,51.408,-14.28],"1.2083":[-2.855,51.724,-14.236],"1.25":[-4.392,52.563,-13.78],"1.2917":[-5.204,53.337,-13.166],"1.3333":[-5.519,53.746,-12.823],"1.375":[-5.873,55.098,-11.603],"1.4167":[-5.929,55.359,-11.437],"1.4583":[-5.969,55.679,-11.426],"1.5":[-5.96,55.86,-11.66],"1.5417":[-5.93,55.86,-11.841],"1.5833":[-5.91,55.844,-11.923],"1.625":[-5.86,55.775,-12.057],"1.6667":[-5.847,55.745,-12.069],"1.7083":[-5.83,55.688,-12.077],"1.75":[-5.827,55.631,-12.045],"1.7917":[-5.83,55.614,-11.99],"1.8333":[-5.844,55.633,-11.963],"1.875":[-5.873,55.685,-11.927]}},"lefthand_1":{"position":[0,1.5,1],"scale":[1,1.5,1]},"righthand_1":{"rotation":[-12.5,0,0],"position":{"0.0":[0,1.0118,0.8918],"0.125":[0.25,1.69,1.2982],"0.25":[0.25,2.6091,-0.548],"0.3333":[0,1.6878,-1.0105],"0.4167":[0,3.0736,1.3663],"0.4583":[0,4.0502,1.0496],"0.5417":[-0.13,3.6182,-0.1081],"0.5833":[-0.25,3.0461,-0.1968],"0.6667":[-0.25,2.1013,0.614],"0.75":[0,1.0118,0.8918]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.003,-0.013,0.029],"0.0417":[0.021,0.008,0.21],"0.0833":[0.037,0.018,0.318],"0.125":[0.113,0.018,0.415],"0.1667":[0.157,-0.024,0.386],"0.2083":[0.251,-0.155,0.303],"0.25":[0.329,-0.365,0.219],"0.2917":[0.313,-0.48,0.36],"0.3333":[0.291,-0.538,0.473],"0.375":[0.163,-0.652,0.598],"0.4167":[0.096,-0.67,0.55],"0.4583":[-0.056,-0.691,0.415],"0.5":[-0.238,-0.683,0.17],"0.5417":[-0.331,-0.59,-0.061],"0.5833":[-0.366,-0.528,-0.163],"0.625":[-0.398,-0.384,-0.259],"0.6667":[-0.398,-0.347,-0.239],"0.7083":[-0.376,-0.285,-0.151],"0.75":[-0.189,-0.222,0.219],"0.7917":[0.02,-0.19,0.439],"0.8333":[0.086,-0.169,0.395],"0.875":[0.147,-0.093,0.065],"0.9167":[0.136,-0.064,-0.078],"0.9583":[0.098,-0.025,-0.243],"1.0":[0.042,-0.007,-0.111],"1.0417":[0.015,-0.018,-0.023],"1.0833":[0.009,-0.043,0.01],"1.125":[-0.003,-0.146,0.093],"1.1667":[-0.004,-0.156,0.127],"1.2083":[0.014,-0.153,0.209],"1.25":[0.057,-0.131,0.291],"1.2917":[0.069,-0.08,0.25],"1.3333":[0.069,-0.051,0.216],"1.375":[0.014,0.018,0.086],"1.4167":[-0.012,0.032,0.031],"1.4583":[-0.076,0.058,-0.078],"1.5":[-0.081,0.069,-0.095],"1.5417":[0.028,0.064,0.096],"1.5833":[0.055,0.058,0.175],"1.625":[0.032,0.008,0.242],"1.6667":[0.023,-0.003,0.254],"1.7083":[0.014,-0.012,0.209],"1.75":[0.005,-0.015,0.085],"1.7917":[0.001,-0.018,0.04],"1.8333":[0.001,-0.018,0.018],"1.875":[0.001,-0.018,-0.005]}}},"sound_effects":{"0.0":{"effect":"melee.treasure_kn.treasure_kn_draw"}}},"static_idle":{"loop":true,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":[120.958,29.593,115.372],"position":[15.711,36.781,-17.958]},"righthand":{"rotation":[-21.858,147.493,5.883],"position":[-13.197,39.364,-12.127]},"treasure_kn":{"rotation":[-59.617,-25.462,6.513],"position":[-5.873,55.686,-11.926]},"lefthand_1":{"position":[0,1.5,1],"scale":[1,1.5,1]},"righthand_1":{"rotation":[-12.5,0,0],"position":[0,1.0118,0.8918],"scale":[1,1.5,1]}}},"melee_1":{"loop":true,"animation_length":1.95,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[125.918,20.103,111.7],"0.0417":[134.322,5.728,104.597],"0.0833":[126.748,8.649,110.18],"0.125":[141.643,-9.613,168.013],"0.1667":[95.999,-20.952,192.763],"0.2083":[76.776,-18.935,191.898],"0.25":[76.717,-16.928,188.486],"0.2917":[76.806,-14.773,184.967],"0.3333":[77.002,-12.472,181.359],"0.375":[77.277,-10.03,177.675],"0.4167":[77.595,-7.461,173.929],"0.4583":[78.092,-3.403,168.225],"0.5":[78.407,-0.586,164.377],"0.5417":[78.671,2.287,160.506],"0.5833":[78.88,5.196,156.613],"0.625":[79.031,9.545,150.745],"0.6667":[79.01,12.392,146.821],"0.7083":[78.879,15.153,142.886],"0.75":[78.632,17.791,138.948],"0.7917":[78.036,21.431,133.039],"0.8333":[77.779,22.54,131.076],"0.875":[76.861,25.486,125.217],"0.9167":[76.143,27.079,121.368],"0.9583":[75.379,28.334,117.591],"1.0":[74.606,29.214,113.918],"1.0417":[74.603,29.402,108.474],"1.0833":[77.025,27.847,105.435],"1.125":[80.887,25.433,102.865],"1.1667":[85.526,22.725,100.575],"1.2083":[90.294,20.214,98.486],"1.25":[96.277,17.811,95.849],"1.2917":[98.811,17.756,96.013],"1.3333":[100.78,18.389,98.056],"1.375":[103.058,18.618,99.801],"1.4167":[106.264,17.618,100.518],"1.4583":[110.959,16.285,100.266],"1.5":[112.423,17.873,97.378],"1.5417":[113.38,20.041,95.821],"1.5833":[115.139,21.06,100.029],"1.625":[117.837,22.167,108.347],"1.6667":[118.515,22.825,110.033],"1.7083":[120.451,25.243,114.319],"1.75":[121.427,26.711,116.263],"1.7917":[121.897,27.655,117.205],"1.8333":[121.901,28.276,117.218],"1.875":[121.439,28.94,116.301],"1.9167":[121.079,29.347,115.606],"1.9583":[120.957,29.59,115.373]},"position":{"0.0":[14.687,37.322,-18.678],"0.0417":[12.626,38.382,-19.987],"0.0833":[13.417,39.724,-21.971],"0.125":[15.866,40.005,-17.471],"0.1667":[18.489,28.74,-10.032],"0.2083":[17.325,23.274,-5.738],"0.25":[17.558,22.871,-5.449],"0.2917":[17.831,22.525,-5.206],"0.3333":[18.145,22.236,-5.008],"0.375":[18.498,22.003,-4.857],"0.4167":[18.882,21.818,-4.752],"0.4583":[19.516,21.636,-4.675],"0.5":[19.965,21.575,-4.679],"0.5417":[20.437,21.56,-4.724],"0.5833":[20.921,21.592,-4.811],"0.625":[21.666,21.721,-5.017],"0.6667":[22.165,21.864,-5.203],"0.7083":[22.66,22.048,-5.426],"0.75":[23.145,22.269,-5.685],"0.7917":[23.837,22.677,-6.142],"0.8333":[24.057,22.829,-6.313],"0.875":[24.668,23.334,-6.871],"0.9167":[25.028,23.707,-7.284],"0.9583":[25.341,24.102,-7.733],"1.0":[25.601,24.519,-8.212],"1.0417":[24.358,26.467,-9.988],"1.0833":[23.089,28.334,-11.532],"1.125":[21.896,30.257,-13.061],"1.1667":[20.762,32.163,-14.545],"1.2083":[19.684,33.958,-15.94],"1.25":[18.128,36.23,-17.725],"1.2917":[17.248,36.854,-18.236],"1.3333":[16.584,36.69,-18.093],"1.375":[16.05,36.539,-17.857],"1.4167":[15.668,36.681,-17.621],"1.4583":[15.396,36.91,-17.182],"1.5":[15.432,37.067,-17.07],"1.5417":[15.571,37.152,-17.093],"1.5833":[15.679,37.066,-17.341],"1.625":[15.788,36.882,-17.743],"1.6667":[15.798,36.871,-17.781],"1.7083":[15.789,36.898,-17.776],"1.75":[15.768,36.924,-17.75],"1.7917":[15.754,36.917,-17.771],"1.8333":[15.742,36.89,-17.813],"1.875":[15.727,36.836,-17.886],"1.9167":[15.716,36.799,-17.935],"1.9583":[15.711,36.78,-17.959]}},"righthand":{"rotation":{"0.0":[-21.154,156.763,10.587],"0.0417":[-34.495,195.183,35.276],"0.0833":[-60.718,194.971,50.856],"0.125":[-76.365,179.652,52.572],"0.1667":[-58.187,184.869,63.583],"0.2083":[-67.079,203.33,65.842],"0.25":[-58.269,191.284,60.655],"0.2917":[-47.827,186.292,61.134],"0.3333":[-39.14,163.425,56.454],"0.375":[-23.612,154.362,67.411],"0.4167":[-16.618,151.886,68.722],"0.4583":[-19.721,150.887,60.911],"0.5":[-13.041,146.721,69.228],"0.5417":[-14.538,146.461,69.124],"0.5833":[-15.96,148.735,71.602],"0.625":[-33.376,142.856,57.285],"0.6667":[-73.761,128.898,22.058],"0.7083":[-108.837,148.87,-17.19],"0.75":[-107.498,177.96,-35.31],"0.7917":[-54.617,168.229,-32.165],"0.8333":[-43.644,166.253,-30.284],"0.875":[-30.772,163.737,-25.005],"0.9167":[-29.203,166.519,-21.561],"0.9583":[-28.318,169.592,-18.509],"1.0":[-27.948,169.648,-18.486],"1.0417":[-27.956,164.977,-24.742],"1.0833":[-28.28,160.966,-30.042],"1.125":[-28.639,158.132,-33.73],"1.1667":[-29.594,158.442,-32.925],"1.2083":[-34.074,161.314,-22.343],"1.25":[-32.377,160.268,3.727],"1.2917":[-21.515,158.046,13.824],"1.3333":[-19.402,143.889,11.711],"1.375":[-22.184,140.484,9.242],"1.4167":[-25.187,139.534,6.899],"1.4583":[-25.694,141.883,5.575],"1.5":[-24.635,144.027,5.026],"1.5417":[-22.436,145.906,5.408],"1.5833":[-20.659,147.2,6.038],"1.625":[-19.28,148.423,6.65],"1.6667":[-18.93,148.614,6.824],"1.7083":[-18.778,148.668,7.301],"1.75":[-19.165,148.403,7.35],"1.7917":[-19.795,148.069,7.204],"1.8333":[-20.557,147.888,6.853],"1.875":[-21.408,147.627,6.25],"1.9167":[-21.802,147.51,5.932],"1.9583":[-21.859,147.493,5.882]},"position":{"0.0":[-14.31,39.412,-11.881],"0.0417":[-18.398,39.908,-9.765],"0.0833":[-17.533,39.796,-0.821],"0.125":[-18.806,40.064,4.244],"0.1667":[-20.682,41.04,-5.644],"0.2083":[-9.619,43.257,-19.5],"0.25":[-8.104,43.006,-20.914],"0.2917":[-7.318,42.841,-19.298],"0.3333":[-4.257,41.164,-15.483],"0.375":[-2.866,39.359,-11.515],"0.4167":[-3.157,37.055,-8.883],"0.4583":[-7.238,33.989,-7.597],"0.5":[-9.953,33.919,-7.981],"0.5417":[-11.762,33.843,-8.406],"0.5833":[-12.529,34.334,-8.942],"0.625":[-13.255,35.299,-9.761],"0.6667":[-13.522,35.862,-10.262],"0.7083":[-14.323,36.992,-11.137],"0.75":[-15.306,38.852,-13.011],"0.7917":[-15.226,39.517,-14.924],"0.8333":[-15.397,40.082,-14.977],"0.875":[-15.549,41.781,-15.036],"0.9167":[-15.304,42.531,-15.24],"0.9583":[-14.945,42.984,-15.469],"1.0":[-14.585,43.03,-15.668],"1.0417":[-13.842,42.748,-16.027],"1.0833":[-13.287,42.421,-16.234],"1.125":[-12.785,41.999,-16.339],"1.1667":[-12.433,41.41,-16.147],"1.2083":[-12.432,40.495,-15.165],"1.25":[-13.135,39.22,-13.912],"1.2917":[-13.617,38.794,-13.887],"1.3333":[-13.721,38.755,-13.6],"1.375":[-13.742,38.897,-13.033],"1.4167":[-13.705,39.241,-12.632],"1.4583":[-13.6,39.55,-12.167],"1.5":[-13.487,39.595,-11.937],"1.5417":[-13.371,39.558,-11.767],"1.5833":[-13.274,39.456,-11.699],"1.625":[-13.169,39.302,-11.687],"1.6667":[-13.143,39.259,-11.713],"1.7083":[-13.112,39.186,-11.86],"1.75":[-13.125,39.199,-11.945],"1.7917":[-13.142,39.222,-12.025],"1.8333":[-13.157,39.249,-12.077],"1.875":[-13.182,39.317,-12.119],"1.9167":[-13.195,39.358,-12.127],"1.9583":[-13.197,39.364,-12.128]}},"treasure_kn":{"rotation":{"0.0":[-59.921,-16.202,11.048],"0.0417":[-45.253,21.541,37.442],"0.0833":[-18.037,19.601,55.658],"0.125":[-5.132,3.828,58.168],"0.1667":[-16.41,18.458,73.635],"0.2083":[11.356,27.076,87.524],"0.25":[-3.232,15.786,75.062],"0.2917":[-18.397,10.966,73.26],"0.3333":[-33.442,-20.985,75.046],"0.375":[-58.813,-16.575,74.616],"0.4167":[-65.709,-18.257,74.688],"0.4583":[-62.958,-19.55,67.476],"0.5":[-69.524,-23.093,74.724],"0.5417":[-68.196,-23.475,74.924],"0.5833":[-66.648,-21.337,77.576],"0.625":[-40.72,-27.2,57.674],"0.6667":[14.596,-26.215,21.388],"0.7083":[37.674,-3.481,4.591],"0.75":[0.027,22.849,-17.611],"0.7917":[-91.295,-11.895,-37.191],"0.8333":[-123.294,-19.006,-27.207],"0.875":[-193.629,-17.965,-31.338],"0.9167":[-260.524,-9.975,-11.305],"0.9583":[-346.53,10.382,-13.676],"1.0":[-409.677,-0.062,-24.81],"1.0417":[-481.545,-17.679,-23.126],"1.0833":[-559.028,-16.786,-17.478],"1.125":[-625.159,-0.917,-34.648],"1.1667":[-690.258,-14.842,-49.078],"1.2083":[-726.466,-26.59,-35.922],"1.25":[-773.9,-22.824,-14.639],"1.2917":[-781.786,-21.697,-5.172],"1.3333":[-780.858,-27.555,7.765],"1.375":[-779.066,-31.681,8.951],"1.4167":[-776.687,-33.46,8.07],"1.4583":[-776.166,-31.119,6.788],"1.5":[-777.093,-28.959,6.066],"1.5417":[-779.1,-27.053,6.128],"1.5833":[-780.74,-25.743,6.508],"1.625":[-782.019,-24.514,6.929],"1.6667":[-782.346,-24.322,7.055],"1.7083":[-782.488,-24.268,7.511],"1.75":[-782.127,-24.534,7.613],"1.7917":[-781.539,-24.871,7.553],"1.8333":[-780.828,-25.057,7.306],"1.875":[-780.035,-25.324,6.82],"1.9167":[-779.668,-25.445,6.555],"1.9583":[-779.616,-25.462,6.514]},"position":{"0.0":[-6.728,55.665,-11.891],"0.0417":[-10.386,55.446,-11.242],"0.0833":[-9.941,54.409,-3.325],"0.125":[-11.307,53.827,1.878],"0.1667":[-12.583,54.772,-7.547],"0.2083":[-2.071,57.535,-21.925],"0.25":[-0.016,57.183,-22.877],"0.2917":[1.063,56.98,-20.757],"0.3333":[4.401,55.449,-16.152],"0.375":[5.888,53.148,-11.467],"0.4167":[5.577,50.931,-8.513],"0.4583":[1.504,48.178,-7.326],"0.5":[-1.257,47.884,-7.379],"0.5417":[-3.058,47.786,-7.857],"0.5833":[-3.816,48.109,-8.487],"0.625":[-4.256,49.357,-9.8],"0.6667":[-3.931,50.183,-11.018],"0.7083":[-4.864,51.226,-13.297],"0.75":[-6.478,52.867,-16.333],"0.7917":[-8.125,57.582,-18.848],"0.8333":[-8.825,59.231,-18.33],"0.875":[-9.632,61.422,-16.435],"0.9167":[-9.373,62.087,-15.452],"0.9583":[-8.415,61.107,-15.356],"1.0":[-8.054,60.621,-16.525],"1.0417":[-8.015,61.18,-17.743],"1.0833":[-8.512,61.924,-17.379],"1.125":[-8.647,61.221,-16.306],"1.1667":[-7.713,59.646,-15.847],"1.2083":[-6.553,58.533,-15.616],"1.25":[-5.022,56.9,-14.717],"1.2917":[-5.251,55.477,-13.85],"1.3333":[-6.15,54.974,-13.209],"1.375":[-6.293,55.109,-12.682],"1.4167":[-6.293,55.5,-12.383],"1.4583":[-6.22,55.84,-11.99],"1.5":[-6.147,55.909,-11.767],"1.5417":[-6.06,55.885,-11.557],"1.5833":[-5.973,55.784,-11.45],"1.625":[-5.867,55.626,-11.41],"1.6667":[-5.84,55.582,-11.427],"1.7083":[-5.792,55.5,-11.569],"1.75":[-5.797,55.509,-11.663],"1.7917":[-5.808,55.531,-11.76],"1.8333":[-5.821,55.559,-11.836],"1.875":[-5.852,55.634,-11.905],"1.9167":[-5.871,55.679,-11.925],"1.9583":[-5.873,55.686,-11.927]}},"lefthand_1":{"position":[0,1.5,1],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[-12.5,0,0],"0.625":[-12.5,0,0]},"position":{"0.0":[0,1.0118,0.8918],"0.6667":[0,1.0118,0.8918],"0.7083":[0,1.9863,1.1064],"0.75":[-0.5,2.1258,1.6523],"0.7917":[-0.3873,3.6022,1.6323],"0.875":[-0.282,3.7568,1.2424],"0.9583":[0,1.7796,-0.2242],"1.0":[0.4147,1.7535,1.0545],"1.0833":[0.6967,3.5451,1.0382],"1.125":[0.5367,3.5224,0.0096],"1.1667":[0.066,2.29,-0.49],"1.2083":[0.462,1.9477,0.1722],"1.25":[-0.1553,2.3299,0.7664],"1.2917":[-0.35,2.2681,0.9282],"1.3333":[0,1.0118,0.8918]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.02,0.001,0.043],"0.0417":[0.129,0.105,0.323],"0.0833":[0.241,0.211,0.595],"0.125":[0.216,0.204,0.542],"0.1667":[-0.032,0.061,-0.063],"0.2083":[-0.319,-0.108,-0.78],"0.25":[0.149,0.039,0.089],"0.2917":[0.163,-0.07,-0.561],"0.3333":[0.115,-0.246,0.293],"0.375":[0.02,-0.181,0.197],"0.4167":[-0.066,-0.101,-0.024],"0.4583":[-0.118,-0.191,0.159],"0.5":[-0.144,-0.121,0.044],"0.5417":[-0.152,-0.05,-0.033],"0.5833":[-0.148,0,0.043],"0.625":[-0.101,0.015,0.101],"0.6667":[-0.046,-0.005,0.059],"0.7083":[-0.001,-0.019,-0.003],"0.75":[0.017,0.003,-0.08],"0.7917":[0.026,0.08,-0.188],"0.8333":[0.03,0.102,-0.199],"0.875":[0.05,0.179,-0.101],"0.9167":[0.066,0.208,-0.008],"0.9583":[0.082,0.175,0.075],"1.0":[0.101,0.116,0.127],"1.0417":[0.129,0.02,0.084],"1.0833":[0.141,-0.04,0.047],"1.125":[0.158,-0.099,-0.002],"1.1667":[0.17,-0.145,-0.044],"1.2083":[0.174,-0.168,-0.063],"1.25":[0.035,-0.145,0.139],"1.2917":[-0.08,-0.113,0.317],"1.3333":[-0.078,-0.043,0.264],"1.375":[0.053,0.077,-0.169],"1.4167":[0.176,0.145,-0.449],"1.4583":[0.233,0.071,-0.042],"1.5":[0.23,0.025,0.137],"1.5417":[0.206,-0.017,0.219],"1.5833":[0.166,-0.049,0.264],"1.625":[0.097,-0.063,0.268],"1.6667":[0.06,-0.063,0.238],"1.7083":[-0.02,-0.053,0.131],"1.75":[-0.028,-0.026,0.063],"1.7917":[-0.024,-0.007,0.014],"1.8333":[-0.007,0.005,-0.015],"1.875":[0.001,-0.002,-0.015],"1.9167":[0.001,-0.014,-0.005],"1.9583":[0.001,-0.017,-0.005]}}},"sound_effects":{"0.0":{"effect":"melee.treasure_kn.treasure_kn_melee_1"},"0.75":{"effect":"melee.treasure_kn.treasure_kn_melee_r_1"}}},"melee_2":{"loop":true,"animation_length":1.6933,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[75.979,-9.012,176.459],"0.0417":[70.976,-5.907,172.682],"0.0833":[64.622,-2.937,168.778],"0.125":[57.354,-0.28,164.81],"0.1667":[52.237,1.251,162.185],"0.2083":[44.537,3.137,158.328],"0.25":[37.299,4.516,154.616],"0.2917":[31.075,5.421,151.089],"0.3333":[27.761,5.794,148.831],"0.375":[24.457,6.065,145.553],"0.4167":[23.551,6.149,142.346],"0.4583":[24.244,6.472,139.02],"0.5":[26.074,7.162,135.577],"0.5417":[28.875,8.257,132.1],"0.5833":[32.468,9.772,128.683],"0.625":[35.231,11.017,126.502],"0.6667":[39.801,13.206,123.436],"0.7083":[44.761,15.717,120.702],"0.75":[49.988,18.446,118.37],"0.7917":[55.367,21.247,116.469],"0.8333":[60.776,23.958,114.97],"0.875":[64.333,25.639,114.158],"0.9167":[71.127,28.451,112.798],"0.9583":[74.229,29.507,112.126],"1.0":[78.724,28.772,109.188],"1.0417":[82.091,26.728,106.494],"1.0833":[87.497,22.739,101.986],"1.125":[92.943,19.178,97.82],"1.1667":[97.672,17.625,95.563],"1.2083":[100.783,18.391,98.057],"1.25":[104.559,18.254,100.204],"1.2917":[109.616,16.412,100.592],"1.3333":[112.422,17.872,97.376],"1.375":[113.378,20.039,95.821],"1.4167":[116.125,21.382,103.11],"1.4583":[118.516,22.824,110.033],"1.5":[120.447,25.24,114.316],"1.5417":[121.422,26.709,116.262],"1.5833":[121.949,27.995,117.307],"1.625":[121.63,28.737,116.673],"1.6667":[121.08,29.352,115.602],"1.7083":[120.959,29.594,115.372]},"position":{"0.0":[18.772,21.962,-4.691],"0.0417":[19.688,21.858,-4.043],"0.0833":[20.663,21.805,-3.198],"0.125":[21.63,21.822,-2.205],"0.1667":[22.246,21.876,-1.496],"0.2083":[23.082,22.013,-0.41],"0.25":[23.805,22.21,0.613],"0.2917":[24.407,22.425,1.485],"0.3333":[24.741,22.565,1.934],"0.375":[25.168,22.737,2.345],"0.4167":[25.5,22.839,2.371],"0.4583":[25.769,22.874,2.196],"0.5":[25.984,22.868,1.886],"0.5417":[26.153,22.829,1.443],"0.5833":[26.278,22.78,0.867],"0.625":[26.34,22.745,0.409],"0.6667":[26.402,22.714,-0.388],"0.7083":[26.424,22.723,-1.31],"0.75":[26.407,22.799,-2.352],"0.7917":[26.349,22.962,-3.504],"0.8333":[26.244,23.241,-4.757],"0.875":[26.147,23.502,-5.641],"0.9167":[25.881,24.241,-7.502],"0.9583":[25.71,24.733,-8.464],"1.0":[23.828,27.36,-10.726],"1.0417":[22.609,29.265,-12.273],"1.0833":[20.845,32.147,-14.541],"1.125":[19.176,34.783,-16.585],"1.1667":[17.655,36.688,-18.096],"1.2083":[16.584,36.691,-18.094],"1.25":[15.832,36.608,-17.765],"1.2917":[15.459,36.838,-17.297],"1.3333":[15.432,37.066,-17.067],"1.375":[15.572,37.152,-17.093],"1.4167":[15.728,36.99,-17.506],"1.4583":[15.796,36.87,-17.783],"1.5":[15.788,36.897,-17.773],"1.5417":[15.771,36.923,-17.749],"1.5833":[15.75,36.906,-17.791],"1.625":[15.733,36.857,-17.862],"1.6667":[15.715,36.797,-17.935],"1.7083":[15.711,36.78,-17.956]}},"righthand":{"rotation":{"0.0":[-20.129,159.006,78.097],"0.0417":[6.963,122.871,92.402],"0.0833":[164.208,120.99,259.272],"0.125":[223.541,164.477,278.517],"0.1667":[288.758,158.888,286.143],"0.2083":[341.146,163.578,300.249],"0.25":[359.415,162.419,300.924],"0.2917":[374.938,159.36,304.491],"0.3333":[385.674,158.695,309.113],"0.375":[400.409,168.603,323.577],"0.4167":[343.325,203.099,378.338],"0.4583":[286.323,179.29,407.777],"0.5":[292.745,170.007,455.336],"0.5417":[308.108,151.999,437.333],"0.5833":[315.794,138.691,416.061],"0.625":[301.167,143.601,384.598],"0.6667":[259.936,148.137,320.205],"0.7083":[242.67,143.722,276.174],"0.75":[235.511,143.487,260.225],"0.7917":[232.688,148.36,257.089],"0.8333":[232.773,157.296,266.503],"0.875":[235.224,162.834,273.569],"0.9167":[251.869,173.536,293.828],"0.9583":[265.199,179.739,311.509],"1.0":[285.705,208.439,357.006],"1.0417":[296.313,215.78,366.13],"1.0833":[301.792,207.58,364.605],"1.125":[296.328,184.924,352.507],"1.1667":[300.521,165.718,350.701],"1.2083":[307.649,158.225,358.361],"1.25":[313.472,154.253,360.346],"1.2917":[318.605,149.677,357.955],"1.3333":[326.828,144.725,358.992],"1.375":[331.983,143.624,361.288],"1.4167":[336.715,145.475,364.375],"1.4583":[339.539,147.268,366.256],"1.5":[340.454,148.199,367.077],"1.5417":[340.451,148.282,367.128],"1.5833":[339.864,148.135,366.89],"1.625":[339.114,147.894,366.508],"1.6667":[338.237,147.532,365.944],"1.7083":[338.146,147.492,365.885]},"position":{"0.0":[-2.472,34.935,-6.401],"0.0417":[2.179,35.646,-4.029],"0.0833":[4.902,36.176,-3.659],"0.125":[3.433,39.172,-11.16],"0.1667":[-5.351,43.466,-17.766],"0.2083":[-17.123,47.926,-15.372],"0.25":[-21.525,48.613,-10.386],"0.2917":[-23.981,48.825,-6.036],"0.3333":[-25.044,48.916,-3.999],"0.375":[-25.779,47.69,-3.592],"0.4167":[-23.202,37.908,-3.207],"0.4583":[-18.236,34.728,-5.065],"0.5":[-13.881,35.731,-9.827],"0.5417":[-13.702,38.11,-12.45],"0.5833":[-14.804,38.791,-14.316],"0.625":[-15.403,39.284,-15.194],"0.6667":[-15.387,39.185,-16.602],"0.7083":[-13.943,39.096,-17.701],"0.75":[-12.242,38.139,-17.785],"0.7917":[-11.715,37.776,-17.035],"0.8333":[-12.217,38.265,-15.939],"0.875":[-12.634,38.609,-15.38],"0.9167":[-12.669,39.043,-14.992],"0.9583":[-12.557,39.225,-14.985],"1.0":[-11.72,39.769,-15.595],"1.0417":[-11.876,39.492,-16.262],"1.0833":[-12.667,39.31,-17.012],"1.125":[-13.697,38.851,-17.476],"1.1667":[-14.421,38.089,-17.199],"1.2083":[-14.53,37.933,-15.923],"1.25":[-14.053,38.093,-14.064],"1.2917":[-13.354,38.91,-12.404],"1.3333":[-13.273,39.413,-11.917],"1.375":[-13.264,39.473,-11.878],"1.4167":[-13.204,39.488,-11.858],"1.4583":[-13.167,39.397,-11.868],"1.5":[-13.149,39.295,-11.939],"1.5417":[-13.148,39.262,-12.005],"1.5833":[-13.163,39.249,-12.074],"1.625":[-13.18,39.259,-12.119],"1.6667":[-13.197,39.35,-12.128],"1.7083":[-13.196,39.363,-12.125]}},"treasure_kn":{"rotation":{"0.0":[-61.552,-11.562,84.544],"0.0417":[-88.364,-45.947,94.9],"0.0833":[-227.091,-67.327,241.918],"0.125":[-303.876,-25.819,283.607],"0.1667":[-371.649,-20.841,298.288],"0.2083":[-421.145,-7.437,307.33],"0.25":[-438.78,-6.904,304.838],"0.2917":[-453.707,-9.336,305.414],"0.3333":[-463.874,-10.025,307.896],"0.375":[-478.512,-0.779,319.565],"0.4167":[-417.617,31.496,387.165],"0.4583":[-366.096,10.843,421.876],"0.5":[-354.987,-14.518,410.842],"0.5417":[-358.588,-25.404,405.139],"0.5833":[-381.882,-36.723,408.281],"0.625":[-386.612,-32.349,389.298],"0.6667":[-373.155,-18.814,335.582],"0.7083":[-316.161,-19.904,289.213],"0.75":[-210.378,-6.865,294.836],"0.7917":[-104.193,24.607,292.984],"0.8333":[-26.077,22.139,320.746],"0.875":[1.318,24.203,322.527],"0.9167":[9.55,42.466,332.506],"0.9583":[-15.682,45.038,344.202],"1.0":[-91.007,79.685,371.849],"1.0417":[-109.924,72.53,408.086],"1.0833":[-84.025,62.953,520.797],"1.125":[-24.102,44.687,677.699],"1.1667":[-24.374,9.608,711.437],"1.2083":[-30.733,-14.989,724.391],"1.25":[-36.052,-19.541,724.01],"1.2917":[-41.212,-23.839,721.113],"1.3333":[-49.161,-28.461,721.196],"1.375":[-53.975,-29.424,722.804],"1.4167":[-58.315,-27.495,725.215],"1.4583":[-60.923,-25.675,726.698],"1.5":[-61.772,-24.739,727.391],"1.5417":[-61.768,-24.657,727.443],"1.5833":[-61.22,-24.806,727.285],"1.625":[-60.521,-25.052,727.005],"1.6667":[-59.705,-25.421,726.562],"1.7083":[-59.621,-25.462,726.515]},"position":{"0.0":[6.209,48.262,-6.312],"0.0417":[10.559,49.691,-2.692],"0.0833":[13.34,51.032,-2.834],"0.125":[11.05,54.615,-12.895],"0.1667":[-0.11,59.602,-19.367],"0.2083":[-12.692,64.198,-15.314],"0.25":[-17.153,64.672,-9.545],"0.2917":[-19.438,64.626,-4.55],"0.3333":[-20.253,64.54,-2.14],"0.375":[-20.084,63.326,-1.408],"0.4167":[-15.473,53.984,-3.816],"0.4583":[-10.601,48.564,-7.274],"0.5":[-6.387,47.688,-11.43],"0.5417":[-5.1,50.327,-12.979],"0.5833":[-5.571,52.041,-14.685],"0.625":[-6.272,53.839,-16.836],"0.6667":[-7.295,54.622,-19.698],"0.7083":[-6.801,55.51,-20.889],"0.75":[-6.153,55.474,-22.464],"0.7917":[-4.27,53.586,-22.558],"0.8333":[-4.084,52.6,-20.528],"0.875":[-4.626,52.621,-19.59],"0.9167":[-5.374,52.815,-19.543],"0.9583":[-6.498,52.793,-19.74],"1.0":[-8.804,55.673,-19.603],"1.0417":[-8.471,57.567,-19.855],"1.0833":[-7.033,58.458,-21.116],"1.125":[-6.274,55.936,-21.677],"1.1667":[-6.67,54.365,-19.148],"1.2083":[-6.839,53.824,-16.938],"1.25":[-6.514,54.142,-14.877],"1.2917":[-5.944,55.134,-12.929],"1.3333":[-5.974,55.757,-12.048],"1.375":[-5.995,55.834,-11.813],"1.4167":[-5.917,55.831,-11.668],"1.4583":[-5.86,55.722,-11.613],"1.5":[-5.825,55.608,-11.667],"1.5417":[-5.821,55.574,-11.735],"1.5833":[-5.834,55.561,-11.823],"1.625":[-5.851,55.574,-11.89],"1.6667":[-5.873,55.671,-11.924],"1.7083":[-5.873,55.684,-11.924]}},"lefthand_1":{"position":[0,1.5,1],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[-12.5,0,0],"0.0833":[-5,0,0],"0.125":[-3.9865,-2.3329,-3.9867],"0.2083":[-29.6488,-8.8651,-15.1493],"0.2917":[-26.6946,-6.8638,-13.3697],"0.375":[-12.5,0,0],"0.4583":[-12.5,0,0]},"position":{"0.0":[0,1.0118,0.8918],"0.375":[1.55,2.3547,-0.0944],"0.4583":[0,1.0118,0.8918],"0.5833":[-0.45,1.01,0.89],"0.625":[0.05,1.444,1.2423],"0.6667":[1.3,2.134,0.8817],"0.7083":[1.76,2.66,0.44],"0.75":[1.55,3.5427,-0.8499],"0.7917":[2.55,3.8764,-0.5193],"0.8333":[3.3,3.5553,0.9444],"0.9167":[1.8,3.4518,1.4282],"1.0":[1.8,3.6123,0.6978],"1.0833":[0.68,4.6682,-0.5981],"1.125":[-0.45,4.56,-0.11],"1.1667":[-0.2,3.015,1.0839],"1.2083":[0,1.0118,0.8918]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.021,-0.034,0.011],"0.0417":[0.226,-0.141,0.124],"0.0833":[0.373,-0.212,0.209],"0.125":[0.256,-0.166,-0.121],"0.1667":[0.088,-0.081,0.2],"0.2083":[-0.106,0.06,-0.667],"0.25":[-0.164,0.149,0.116],"0.2917":[-0.192,0.224,1.373],"0.3333":[-0.21,0.269,0.557],"0.375":[-0.216,0.287,-0.081],"0.4167":[-0.17,0.243,-0.184],"0.4583":[-0.095,0.174,-0.222],"0.5":[-0.02,0.112,-0.225],"0.5417":[0.046,0.066,-0.153],"0.5833":[0.116,0.042,-0.05],"0.625":[0.157,0.069,-0.004],"0.6667":[0.207,0.149,0.054],"0.7083":[0.258,0.222,0.139],"0.75":[0.297,0.269,0.183],"0.7917":[0.326,0.246,0.151],"0.8333":[0.331,0.187,0.101],"0.875":[0.306,0.128,0.068],"0.9167":[0.232,0.039,0.011],"0.9583":[0.202,0.046,-0.03],"1.0":[0.157,0.07,-0.087],"1.0417":[0.122,0.086,-0.117],"1.0833":[0.067,0.089,-0.109],"1.125":[-0.015,0.057,0.025],"1.1667":[-0.036,0.048,0.062],"1.2083":[0.026,0.087,-0.109],"1.25":[0.11,0.129,-0.284],"1.2917":[0.179,0.099,-0.106],"1.3333":[0.199,0.021,0.215],"1.375":[0.175,-0.022,0.322],"1.4167":[0.112,-0.072,0.418],"1.4583":[0.031,-0.073,0.299],"1.5":[-0.043,-0.061,0.064],"1.5417":[-0.049,-0.031,0.118],"1.5833":[-0.035,0,0.118],"1.625":[-0.013,0.006,0.054],"1.6667":[-0.002,-0.014,0],"1.7083":[0.001,-0.017,0]}}},"sound_effects":{"0.0":{"effect":"melee.treasure_kn.treasure_kn_melee_2"},"0.5":{"effect":"melee.treasure_kn.treasure_kn_melee_r_2"}}},"melee_3":{"loop":true,"animation_length":2.184,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[111.231,8.891,119.603],"0.0417":[177.667,39.616,136.463],"0.0833":[126.199,25.435,113.795],"0.125":[126.96,6.588,132.912],"0.1667":[113.626,7.071,153.837],"0.2083":[99.085,9.002,155.595],"0.25":[97.09,10.139,154.247],"0.2917":[95.826,10.928,153.302],"0.3333":[94.03,12.154,151.813],"0.375":[92.901,12.986,150.775],"0.4167":[91.279,14.26,149.155],"0.4583":[90.251,15.117,148.036],"0.5":[88.792,16.405,146.293],"0.5417":[87.864,17.262,145.093],"0.5833":[86.533,18.533,143.239],"0.625":[85.691,19.369,141.977],"0.6667":[84.479,20.589,140.026],"0.7083":[83.71,21.382,138.708],"0.75":[82.606,22.526,136.689],"0.7917":[81.903,23.254,135.322],"0.8333":[80.898,24.289,133.253],"0.875":[80.262,24.939,131.861],"0.9167":[79.354,25.846,129.765],"0.9583":[78.783,26.4,128.364],"1.0":[77.974,27.158,126.265],"1.0417":[77.47,27.607,124.869],"1.0833":[76.764,28.199,122.788],"1.125":[76.334,28.536,121.411],"1.1667":[75.748,28.95,119.37],"1.2083":[75.391,29.163,118.024],"1.25":[74.929,29.395,116.028],"1.2917":[74.659,29.483,114.713],"1.3333":[74.324,29.519,112.77],"1.375":[74.337,29.271,111.239],"1.4167":[77.467,26.875,107.72],"1.4583":[81.251,24.496,104.892],"1.5":[88.083,20.904,100.461],"1.5417":[92.565,19.014,97.812],"1.5833":[97.672,17.624,95.562],"1.625":[99.809,18.057,96.933],"1.6667":[103.059,18.618,99.803],"1.7083":[106.263,17.621,100.516],"1.75":[110.96,16.286,100.266],"1.7917":[112.422,17.874,97.38],"1.8333":[114.191,20.64,97.407],"1.875":[116.127,21.377,103.109],"1.9167":[118.513,22.82,110.034],"1.9583":[119.841,24.415,113.044],"2.0":[121.427,26.708,116.267],"2.0417":[121.898,27.656,117.206],"2.0833":[121.793,28.522,116.993],"2.125":[121.44,28.941,116.302],"2.1667":[120.96,29.593,115.371]},"position":{"0.0":[19.381,28.688,-9.86],"0.0417":[11.308,36.786,-10.065],"0.0833":[13.099,38.859,-9.153],"0.125":[17.208,35.916,-9.004],"0.1667":[20.169,26.68,-5.453],"0.2083":[18.584,26.599,-3.712],"0.25":[18.751,26.321,-3.703],"0.2917":[18.882,26.132,-3.698],"0.3333":[19.099,25.845,-3.696],"0.375":[19.261,25.653,-3.699],"0.4167":[19.525,25.368,-3.71],"0.4583":[19.715,25.179,-3.717],"0.5":[20.02,24.903,-3.744],"0.5417":[20.233,24.727,-3.765],"0.5833":[20.571,24.472,-3.812],"0.625":[20.806,24.31,-3.851],"0.6667":[21.168,24.087,-3.926],"0.7083":[21.418,23.951,-3.984],"0.75":[21.798,23.766,-4.096],"0.7917":[22.057,23.66,-4.185],"0.8333":[22.446,23.524,-4.34],"0.875":[22.706,23.454,-4.464],"0.9167":[23.093,23.376,-4.674],"0.9583":[23.349,23.347,-4.836],"1.0":[23.726,23.339,-5.117],"1.0417":[23.969,23.357,-5.327],"1.0833":[24.321,23.424,-5.677],"1.125":[24.547,23.497,-5.943],"1.1667":[24.863,23.651,-6.381],"1.2083":[25.057,23.785,-6.704],"1.25":[25.318,24.036,-7.235],"1.2917":[25.473,24.238,-7.619],"1.3333":[25.658,24.597,-8.243],"1.375":[25.024,25.615,-9.208],"1.4167":[23.086,28.41,-11.504],"1.4583":[21.892,30.324,-13.042],"1.5":[20.215,33.11,-15.251],"1.5417":[19.158,34.791,-16.582],"1.5833":[17.655,36.691,-18.096],"1.625":[16.895,36.819,-18.21],"1.6667":[16.049,36.539,-17.854],"1.7083":[15.667,36.682,-17.619],"1.75":[15.398,36.911,-17.182],"1.7917":[15.432,37.066,-17.065],"1.8333":[15.623,37.126,-17.194],"1.875":[15.727,36.991,-17.505],"1.9167":[15.796,36.872,-17.781],"1.9583":[15.796,36.884,-17.79],"2.0":[15.77,36.922,-17.751],"2.0417":[15.753,36.919,-17.772],"2.0833":[15.737,36.874,-17.839],"2.125":[15.728,36.837,-17.886],"2.1667":[15.711,36.783,-17.958]}},"righthand":{"rotation":{"0.0":[9.211,187.369,-50.626],"0.0417":[59.841,290.587,-74.395],"0.0833":[51.255,356.627,-82.918],"0.125":[94.55,345.466,-85.956],"0.1667":[139.731,329.824,-96.144],"0.2083":[149.575,327.282,-106.587],"0.25":[154.896,326.157,-118.698],"0.2917":[154.668,327.234,-116.174],"0.3333":[155.848,329.879,-114.52],"0.375":[135.366,355.413,-74.498],"0.4167":[138.261,353.497,-80.136],"0.4583":[143.292,350.621,-83.774],"0.5":[168.707,354.963,-83.985],"0.5417":[179.931,356.335,-86.949],"0.5833":[191.899,361.71,-90.029],"0.625":[185.985,363.72,-90.853],"0.6667":[181.305,368.979,-91.678],"0.7083":[189.166,376.348,-88.173],"0.75":[198.579,378.804,-84.075],"0.7917":[200.812,374.837,-87.024],"0.8333":[201.742,370.484,-91.162],"0.875":[199.186,367.196,-82.802],"0.9167":[194.585,370.678,-69.774],"0.9583":[198.888,385.138,-107.507],"1.0":[171.513,382.093,-185.965],"1.0417":[169.365,375.879,-189.313],"1.0833":[169.263,368.19,-188.944],"1.125":[169.724,364.183,-187.845],"1.1667":[171.016,363.286,-188.216],"1.2083":[170.012,368.784,-180.874],"1.25":[173.431,374.278,-153.892],"1.2917":[181.303,366.039,-131.42],"1.3333":[176.541,364.713,-120.887],"1.375":[163.404,368.143,-127.21],"1.4167":[142.25,376.751,-158.834],"1.4583":[140.038,374.33,-171.934],"1.5":[137.937,369.496,-185.734],"1.5417":[141.27,369.706,-189.205],"1.5833":[147.235,368.371,-174.092],"1.625":[143.024,376.896,-178.914],"1.6667":[144.158,386.722,-181.065],"1.7083":[145.67,392.695,-182.206],"1.75":[149.883,396.266,-179.752],"1.7917":[153.397,395.902,-177.67],"1.8333":[157.996,393.7,-174.761],"1.875":[159.265,392.913,-173.93],"1.9167":[160.237,392.117,-173.172],"1.9583":[160.478,391.757,-172.892],"2.0":[160.299,391.75,-172.931],"2.0417":[159.845,391.867,-173.119],"2.0833":[159.15,392.089,-173.472],"2.125":[158.615,392.309,-173.806],"2.1667":[158.144,392.505,-174.119]},"position":{"0.0":[-24.094,47.203,-1.047],"0.0417":[-23.892,43.549,13.885],"0.0833":[-27.936,42.028,-0.777],"0.125":[-18.977,42.983,-12.425],"0.1667":[-4.556,41.733,-19.593],"0.2083":[-2.197,41.576,-19.191],"0.25":[-1.639,42.047,-19.212],"0.2917":[-1.587,42.052,-19.014],"0.3333":[-1.887,42.367,-18.772],"0.375":[-1.372,42.298,-19.18],"0.4167":[-1.622,42.62,-18.802],"0.4583":[-0.973,42.185,-17.281],"0.5":[2.467,38.714,-6.856],"0.5417":[4.304,36.5,0.797],"0.5833":[1.785,37.121,2.089],"0.625":[0.608,36.782,1.389],"0.6667":[-1.153,36.155,-1.367],"0.7083":[-2.491,35.87,-4.191],"0.75":[-3.971,35.913,-7.636],"0.7917":[-4.475,36.956,-9.254],"0.8333":[-5.755,38.786,-11.205],"0.875":[-7.467,40.023,-12.296],"0.9167":[-10.872,41.187,-13.389],"0.9583":[-12.937,41.025,-14.196],"1.0":[-14.089,41.184,-15.009],"1.0417":[-14.269,41.462,-15.047],"1.0833":[-14.466,41.847,-15.039],"1.125":[-14.529,42.13,-15.016],"1.1667":[-14.251,42.781,-14.971],"1.2083":[-14.068,43.24,-14.885],"1.25":[-14.209,43.82,-14.817],"1.2917":[-14.441,44.236,-14.901],"1.3333":[-15.095,44.375,-14.706],"1.375":[-15.701,44.094,-14.237],"1.4167":[-15.357,43.725,-12.777],"1.4583":[-15.066,43.338,-12.366],"1.5":[-14.618,42.854,-11.902],"1.5417":[-14.11,42.241,-11.902],"1.5833":[-13.728,40.459,-12.512],"1.625":[-13.183,39.234,-12.473],"1.6667":[-13.045,38.691,-12.246],"1.7083":[-13.148,38.807,-12.089],"1.75":[-13.284,39.392,-11.9],"1.7917":[-13.247,39.484,-11.872],"1.8333":[-13.189,39.465,-11.852],"1.875":[-13.169,39.416,-11.862],"1.9167":[-13.154,39.339,-11.889],"1.9583":[-13.148,39.29,-11.949],"2.0":[-13.152,39.255,-12.03],"2.0417":[-13.166,39.248,-12.073],"2.0833":[-13.181,39.253,-12.118],"2.125":[-13.189,39.304,-12.127],"2.1667":[-13.196,39.364,-12.127]}},"treasure_kn":{"rotation":{"0.0":[-87.26,18.517,-48.488],"0.0417":[-125.048,120.105,-59.717],"0.0833":[-129.937,186.278,-76.955],"0.125":[-170.571,168.655,-74.787],"0.1667":[-211.731,144.673,-84.117],"0.2083":[-221.444,140.484,-95.328],"0.25":[-226.905,138.534,-108.067],"0.2917":[-226.92,139.626,-105.678],"0.3333":[-228.802,142.051,-104.597],"0.375":[-212.631,170.578,-64.161],"0.4167":[-215.17,168.18,-69.986],"0.4583":[-219.709,164.485,-74.003],"0.5":[-246.206,165.273,-78],"0.5417":[-257.847,165.671,-83.039],"0.5833":[-270.325,170.473,-88.504],"0.625":[-264.432,172.698,-88.185],"0.6667":[-246.566,187.402,-101.904],"0.7083":[-213.983,204.236,-133.419],"0.75":[-177.591,200.831,-163.621],"0.7917":[-182.658,201.7,-166.919],"0.8333":[-189.107,203.413,-169.398],"0.875":[-186.286,204.312,-168.833],"0.9167":[-177.344,204.303,-173.107],"0.9583":[-164.48,207.741,-209],"1.0":[-191.098,205.192,-255.906],"1.0417":[-270.973,184.446,-245.702],"1.0833":[-395.734,173.152,-275.879],"1.125":[-467.706,193.793,-274.287],"1.1667":[-615.297,198.889,-248.867],"1.2083":[-716.77,190.97,-246.842],"1.25":[-842.145,190.069,-236.524],"1.2917":[-898.099,181.161,-228.495],"1.3333":[-964.158,190.152,-220.937],"1.375":[-990.401,180.1,-216.115],"1.4167":[-982.855,161.08,-214.425],"1.4583":[-975.252,157.221,-210.405],"1.5":[-965.474,157.169,-203.79],"1.5417":[-956.648,162.381,-189.072],"1.5833":[-947.783,182.131,-173.003],"1.625":[-944.761,190.231,-176.493],"1.6667":[-946.278,200.006,-178.67],"1.7083":[-947.97,205.921,-179.901],"1.75":[-952.032,209.364,-177.947],"1.7917":[-955.27,208.923,-176.359],"1.8333":[-959.496,206.657,-174.105],"1.875":[-960.67,205.859,-173.451],"1.9167":[-961.572,205.058,-172.827],"1.9583":[-961.795,204.697,-172.58],"2.0":[-961.628,204.691,-172.595],"2.0417":[-961.204,204.81,-172.721],"2.0833":[-960.556,205.037,-172.979],"2.125":[-960.057,205.261,-173.24],"2.1667":[-959.62,205.461,-173.487]},"position":{"0.0":[-19.094,63.654,-0.273],"0.0417":[-18.11,59.525,11.944],"0.0833":[-23.145,55.158,-3.126],"0.125":[-12.257,56.421,-15.054],"0.1667":[3.71,55.561,-21.187],"0.2083":[6.261,55.725,-20.466],"0.25":[6.834,56.648,-20.31],"0.2917":[6.914,56.529,-20.108],"0.3333":[6.667,56.708,-19.79],"0.375":[6.412,54.725,-20.607],"0.4167":[6.378,55.253,-20.154],"0.4583":[7.21,54.973,-18.486],"0.5":[10.845,51.307,-6.903],"0.5417":[12.687,49.189,1.264],"0.5833":[10.064,50.005,3.16],"0.625":[8.999,49.724,2.258],"0.6667":[7.666,49.276,-0.428],"0.7083":[7.116,49.407,-2.187],"0.75":[6.203,50.176,-4.307],"0.7917":[5.365,51.174,-5.602],"0.8333":[3.903,52.879,-7.622],"0.875":[2.104,53.235,-8.695],"0.9167":[-1.137,53.749,-9.965],"0.9583":[-3.882,56.794,-10.881],"1.0":[-8.392,60.284,-13.448],"1.0417":[-8.834,60.836,-15.022],"1.0833":[-10.845,61.22,-14.531],"1.125":[-10.166,61.287,-13.368],"1.1667":[-7.955,62.047,-14.91],"1.2083":[-8.556,63.225,-15.258],"1.25":[-6.423,62.783,-12.764],"1.2917":[-4.236,61.051,-12.276],"1.3333":[-4.077,59.822,-14.012],"1.375":[-4.945,60.293,-14.999],"1.4167":[-7.172,61.329,-15.092],"1.4583":[-8.024,61.32,-14.962],"1.5":[-8.569,60.646,-14.435],"1.5417":[-7.652,59.149,-13.632],"1.5833":[-6.383,56.716,-13.152],"1.625":[-5.861,55.466,-13.168],"1.6667":[-5.731,54.993,-12.672],"1.7083":[-5.88,55.16,-12.321],"1.75":[-6.006,55.749,-11.909],"1.7917":[-5.969,55.838,-11.77],"1.8333":[-5.893,55.801,-11.634],"1.875":[-5.864,55.744,-11.613],"1.9167":[-5.836,55.656,-11.619],"1.9583":[-5.823,55.602,-11.678],"2.0":[-5.825,55.567,-11.765],"2.0417":[-5.836,55.561,-11.823],"2.0833":[-5.851,55.568,-11.889],"2.125":[-5.863,55.622,-11.913],"2.1667":[-5.873,55.686,-11.926]}},"lefthand_1":{"position":[0,1.5,1],"scale":[1,1.5,1]},"righthand_1":{"rotation":{"0.0":[-27.5,0,0],"0.375":[-26.9409,5.7358,11.125],"0.5833":[-26.9409,5.7358,11.125],"0.7917":[-35,0,0],"0.9167":[-27.3049,22.7992,36.8924],"1.0":[-35,0,0],"1.1667":[-12.5,0,0]},"position":{"0.0":[0,1.0118,0.8918],"0.7083":[0,1.0118,0.8918],"0.7917":[1.1215,2.9523,-1.5734],"0.875":[0.2403,2.563,-1.6777],"0.9167":[-0.0285,2.0514,-2.2887],"0.9583":[0.6584,2.0915,-1.561],"1.0":[1.1574,2.8219,-2.1115],"1.0417":[1.16,3.3472,-0.0552],"1.0833":[2.91,3.8305,-0.6825],"1.1667":[1.66,2.9407,-1.2013],"1.2083":[2.41,4.2282,-0.0781],"1.25":[2.1,3.6742,-1.1423],"1.2917":[0.66,3.6099,-0.7336],"1.375":[0.41,3.2312,0.9785],"1.4167":[0.91,3.23,0.98],"1.4583":[0.55,3.3163,1.1564],"1.5417":[0,1.0118,0.8918]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.088,-0.069,0.077],"0.0417":[0.469,-0.315,0.425],"0.0833":[0.506,-0.476,0.404],"0.125":[0.392,-0.495,0.24],"0.1667":[0.1,-0.192,1.125],"0.2083":[0.108,-0.052,0.138],"0.25":[0.161,0.001,-0.55],"0.2917":[0.137,0.054,0.07],"0.3333":[0.089,0.129,-0.093],"0.375":[0.213,-0.327,-0.283],"0.4167":[0.277,-0.486,0.285],"0.4583":[0.289,-0.477,0.064],"0.5":[0.017,0.129,0.007],"0.5417":[-0.044,-0.245,0.081],"0.5833":[-0.109,0.077,0.038],"0.625":[-0.165,0.065,0.064],"0.6667":[-0.179,0.027,0.082],"0.7083":[-0.102,-0.002,0.03],"0.75":[0.066,-0.015,0],"0.7917":[0.206,0.011,0.023],"0.8333":[0.234,0.057,0.083],"0.875":[0.216,0.088,0.136],"0.9167":[0.18,0.084,0.198],"0.9583":[0.139,-0.024,0.237],"1.0":[0.076,-0.149,0.266],"1.0417":[0.036,-0.095,0.233],"1.0833":[-0.027,0.075,0.119],"1.125":[-0.064,0.164,0.062],"1.1667":[-0.124,0.141,0.085],"1.2083":[-0.164,0.053,0.168],"1.25":[-0.219,-0.1,0.307],"1.2917":[-0.252,-0.17,0.368],"1.3333":[-0.291,-0.129,0.324],"1.375":[-0.307,-0.023,0.19],"1.4167":[-0.322,0.114,-0.048],"1.4583":[-0.302,0.105,-0.181],"1.5":[-0.103,-0.088,-0.378],"1.5417":[-0.026,-0.166,-0.432],"1.5833":[-0.257,-0.081,-0.01],"1.625":[-0.382,0,0.22],"1.6667":[-0.052,0.119,-0.225],"1.7083":[0.205,0.161,-0.471],"1.75":[0.3,0.065,0.015],"1.7917":[0.296,0.006,0.226],"1.8333":[0.234,-0.072,0.36],"1.875":[0.177,-0.102,0.395],"1.9167":[0.064,-0.104,0.283],"1.9583":[-0.023,-0.092,0.104],"2.0":[-0.046,-0.045,0.114],"2.0417":[-0.042,-0.014,0.124],"2.0833":[-0.015,0.009,0.064],"2.125":[-0.008,-0.003,0.034],"2.1667":[0,-0.018,-0.005]}}},"sound_effects":{"0.0":{"effect":"melee.treasure_kn.treasure_kn_melee_3"},"0.9167":{"effect":"melee.treasure_kn.treasure_kn_melee_r_3"}}},"inspect":{"loop":"hold_on_last_frame","animation_length":16.2791,"override_previous_animation":true,"bones":{"fn_lefthand":{"rotation":{"0.0":[118.834,27.564,110.196],"0.0417":[115.737,23.891,97.971],"0.0833":[110.602,13.52,92.762],"0.125":[102.473,1.954,106.488],"0.1667":[79.626,-9.555,143.237],"0.2083":[56.808,-5.12,178.834],"0.25":[56.808,-5.121,178.832],"0.2917":[56.812,-5.121,178.829],"0.3333":[56.808,-5.121,178.831],"0.375":[56.804,-5.122,178.833],"0.4167":[56.811,-5.119,178.829],"0.4583":[56.807,-5.12,178.831],"0.5":[56.805,-5.12,178.834],"0.5417":[56.807,-5.121,178.832],"0.5833":[56.809,-5.121,178.831],"0.625":[56.811,-5.12,178.829],"0.6667":[56.812,-5.119,178.828],"0.7083":[56.808,-5.12,178.83],"0.75":[56.807,-5.121,178.832],"0.7917":[56.808,-5.12,178.831],"0.875":[56.808,-5.121,178.831],"0.9167":[56.808,-5.121,178.831],"0.9583":[56.809,-5.121,178.831],"1.0":[56.807,-5.121,178.832],"1.0417":[56.809,-5.12,178.831],"1.0833":[56.808,-5.121,178.831],"1.125":[56.809,-5.12,178.831],"1.1667":[56.808,-5.121,178.832],"1.2083":[56.808,-5.121,178.832],"1.25":[56.809,-5.121,178.831],"1.2917":[56.808,-5.121,178.832],"1.3333":[56.808,-5.12,178.831],"1.375":[56.808,-5.121,178.832],"1.4167":[56.809,-5.12,178.831],"1.4583":[56.809,-5.121,178.831],"1.5":[56.811,-5.121,178.829],"1.5417":[56.808,-5.121,178.832],"1.5833":[56.808,-5.121,178.832],"1.625":[56.809,-5.121,178.832],"1.6667":[56.809,-5.121,178.832],"1.7083":[56.807,-5.121,178.833],"1.75":[56.809,-5.121,178.832],"1.7917":[56.809,-5.121,178.831],"1.8333":[66.134,-2.29,175.654],"1.875":[82.455,3.88,171.226],"1.9167":[92.891,8.376,169.286],"1.9583":[108.966,15.753,167.954],"2.0":[123.123,21.525,167.961],"2.0417":[130.095,23.522,167.747],"2.0833":[97.588,-5.712,154.196],"2.125":[95.963,-8.418,176.16],"2.1667":[136.352,-9.234,130.531],"2.2083":[149.07,6.994,107.712],"2.25":[157.168,15.573,105.673],"2.2917":[166.261,22.53,108.792],"2.3333":[167.797,23.352,109.673],"2.375":[167.643,23.752,111.766],"2.4167":[166.54,23.678,112.918],"2.4583":[165.258,23.684,112.714],"2.5":[164.222,23.668,111.895],"2.5417":[163.932,23.709,111.292],"2.5833":[163.875,23.788,110.304],"2.625":[163.923,23.784,109.921],"2.6667":[164.176,23.705,109.704],"2.7083":[164.686,23.634,109.975],"2.75":[165.185,23.422,110.729],"2.7917":[164.729,21.63,111.765],"2.8333":[165.315,19.616,112.757],"2.875":[171.276,14.56,114.29],"2.9167":[177.294,13.418,118.72],"2.9583":[180.584,15.546,128.797],"3.0":[180.599,21.513,144.431],"3.0417":[175.302,18.658,152.792],"3.0833":[158.32,10.016,162.656],"3.125":[149.675,4.712,167.947],"3.1667":[146.377,-4.296,174.82],"3.2083":[145.359,-13.007,183.109],"3.25":[142.454,-16.081,189.067],"3.2917":[135.172,-14.91,195.419],"3.3333":[130.575,-13.044,198.124],"3.375":[125.793,-13.444,202.207],"3.4167":[124.019,-14.949,204.559],"3.4583":[122.788,-15.702,206.451],"3.5":[122.187,-16.118,207.263],"3.5417":[121.984,-16.302,207.396],"3.5833":[121.744,-16.648,207.534],"3.625":[121.626,-16.869,207.571],"3.6667":[121.59,-17,207.481],"3.7083":[121.915,-16.756,207.081],"3.75":[122.228,-16.456,206.718],"3.7917":[122.449,-15.951,206.312],"3.8333":[122.336,-15.535,206.152],"3.875":[121.922,-14.81,206.011],"3.9167":[121.492,-14.498,206.118],"3.9583":[120.54,-14.692,206.876],"4.0":[119.67,-15.194,207.775],"4.0417":[118.324,-15.88,209.106],"4.0833":[117.27,-15.733,209.646],"4.125":[116.707,-15.245,209.604],"4.1667":[116.205,-14.979,209.715],"4.2083":[115.97,-15.064,209.952],"4.25":[115.687,-15.314,210.365],"4.2917":[115.546,-15.612,210.728],"4.3333":[115.56,-15.789,210.879],"4.375":[115.735,-16.05,211.004],"4.4167":[115.924,-16.307,211.114],"4.4583":[116.514,-16.559,210.958],"4.5":[117.226,-16.472,210.414],"4.5417":[119.111,-15.588,208.419],"4.5833":[120.945,-14.435,206.28],"4.625":[123.74,-12.366,202.933],"4.6667":[125.741,-10.678,200.588],"4.7083":[126.61,-9.845,199.642],"4.75":[127.416,-8.94,198.843],"4.7917":[127.676,-8.597,198.645],"4.8333":[127.762,-8.696,198.839],"4.875":[127.675,-8.937,199.243],"4.9167":[127.614,-8.813,199.4],"4.9583":[127.669,-7.647,199.116],"5.0":[127.869,-5.402,198.196],"5.0417":[128.194,-0.111,195.935],"5.0833":[128.295,3.191,194.527],"5.125":[128.363,5.852,193.428],"5.1667":[128.437,6.752,193.083],"5.2083":[128.47,7.019,192.951],"5.25":[128.501,7.433,192.815],"5.2917":[128.52,7.645,192.802],"5.3333":[128.543,7.724,192.765],"5.375":[128.544,7.338,192.553],"5.4167":[128.54,6.716,192.22],"5.4583":[128.603,4.968,191.31],"5.5":[128.599,3.214,190.543],"5.5417":[128.436,-0.79,189.353],"5.5833":[124.411,-8.114,188.886],"5.625":[113.488,-17.276,188.729],"5.6667":[99.973,-23.782,191.61],"5.7083":[91.711,-26.746,195.302],"5.75":[80.227,-27.857,201.189],"5.7917":[74.927,-24.006,203.511],"5.8333":[73.108,-14.597,202.473],"5.875":[75.016,-7.162,199.294],"5.9167":[79.159,-2.933,198.117],"5.9583":[94.143,-16.032,202.384],"6.0":[103.844,-34.012,207.826],"6.0417":[119.747,-55.592,205.192],"6.0833":[115.838,-51.796,202.758],"6.125":[103.171,-34.564,196.155],"6.1667":[106.049,-21.764,188.997],"6.2083":[113.445,-13.58,185.992],"6.25":[117.147,-8.339,185.797],"6.2917":[107.409,-5.385,188.424],"6.3333":[96.303,-5.326,191.555],"6.375":[88.112,-4.252,192.244],"6.4167":[83.467,-2.163,190.629],"6.4583":[81.064,-3.651,191.1],"6.5":[80.853,-4.616,191.039],"6.5417":[81.88,-5.575,190.137],"6.5833":[83.458,-6.222,189.721],"6.625":[86.989,-7.38,189.325],"6.6667":[90.477,-6.921,188.785],"6.7083":[92.544,-4.743,188.358],"6.75":[97.509,-0.542,187.591],"6.7917":[99.468,1.82,187.137],"6.8333":[101.512,2.934,188.301],"6.875":[101.775,2.944,189.596],"6.9167":[97.422,2.886,189.334],"6.9583":[104.041,-10.818,182.703],"7.0":[105.678,-11.698,176.026],"7.0417":[99.791,-0.851,167.357],"7.0833":[90.42,1.331,173.367],"7.125":[79.631,4.614,183.741],"7.1667":[77.729,6.889,190.728],"7.2083":[76.099,9.564,215.594],"7.25":[78.503,9.137,223.744],"7.2917":[84.764,5.948,188.671],"7.3333":[89.582,11.143,94.372],"7.375":[82.853,20.961,21.921],"7.4167":[81.501,34.626,29.031],"7.4583":[87.305,49.979,32.036],"7.5":[101.287,54.317,40.427],"7.5417":[138.004,30.529,75.306],"7.5833":[137.585,13.05,76.849],"7.625":[122.608,-3.145,68.93],"7.6667":[121.487,-7.006,68.629],"7.7083":[121.712,-8.139,68.392],"7.75":[122.863,-8.758,68.537],"7.7917":[123.796,-9.099,69.324],"7.8333":[124.742,-10.628,72.108],"7.875":[124.655,-13.046,75.658],"7.9167":[123.233,-19.471,85.927],"7.9583":[119.586,-26.248,99.447],"8.0":[116.431,-29.283,108.037],"8.0417":[113.179,-30.049,115.615],"8.0833":[112.422,-28.666,117.111],"8.125":[111.61,-25.989,118.767],"8.1667":[111.13,-22.735,119.782],"8.2083":[110.954,-20.307,120.15],"8.25":[110.846,-16.384,120.314],"8.2917":[110.849,-13.628,120.206],"8.3333":[110.894,-9.38,119.771],"8.375":[110.934,-6.518,119.339],"8.4167":[110.969,-2.268,118.51],"8.4583":[110.954,0.483,117.861],"8.5":[110.858,4.398,116.803],"8.5417":[110.654,7.954,115.673],"8.5833":[110.457,10.062,114.908],"8.625":[110.074,12.75,113.79],"8.6667":[109.768,14.172,113.094],"8.7083":[109.24,15.666,112.2],"8.75":[108.64,16.081,111.424],"8.7917":[108.197,15.447,110.815],"8.8333":[107.497,13.312,109.788],"8.875":[107.035,11.235,109.059],"8.9167":[106.397,7.397,107.951],"8.9583":[106.02,4.492,107.215],"9.0":[105.526,-0.119,106.133],"9.0417":[105.125,-4.753,105.097],"9.0833":[104.9,-7.686,104.434],"9.125":[104.606,-11.6,103.493],"9.1667":[104.513,-12.725,103.195],"9.2083":[104.007,-12.316,103.125],"9.25":[103.666,-12.045,103.073],"9.2917":[103.157,-11.639,102.991],"9.3333":[102.65,-11.23,102.911],"9.375":[102.307,-10.96,102.854],"9.4167":[101.799,-10.554,102.764],"9.4583":[101.458,-10.284,102.702],"9.5":[100.945,-9.878,102.608],"9.5417":[100.431,-9.471,102.51],"9.5833":[100.091,-9.202,102.441],"9.625":[99.577,-8.797,102.336],"9.6667":[99.237,-8.528,102.265],"9.7083":[98.721,-8.125,102.154],"9.75":[98.376,-7.857,102.077],"9.7917":[97.864,-7.455,101.96],"9.8333":[97.349,-7.053,101.84],"9.875":[97.004,-6.786,101.759],"9.9167":[96.484,-6.388,101.631],"9.9583":[96.14,-6.122,101.545],"10.0":[95.623,-5.724,101.413],"10.0417":[95.103,-5.328,101.276],"10.0833":[94.761,-5.063,101.184],"10.125":[94.238,-4.671,101.043],"10.1667":[93.89,-4.409,100.945],"10.2083":[93.372,-4.016,100.796],"10.25":[93.026,-3.755,100.698],"10.2917":[92.502,-3.37,100.542],"10.3333":[91.982,-2.977,100.391],"10.375":[91.633,-2.718,100.281],"10.4167":[91.111,-2.335,100.12],"10.4583":[90.762,-2.079,100.01],"10.5":[90.238,-1.696,99.844],"10.5417":[89.713,-1.315,99.672],"10.5833":[89.363,-1.063,99.555],"10.625":[88.836,-0.686,99.379],"10.6667":[88.485,-0.437,99.257],"10.7083":[87.959,-0.062,99.075],"10.75":[87.607,0.185,98.951],"10.7917":[87.081,0.554,98.764],"10.8333":[86.554,0.924,98.578],"10.875":[86.199,1.167,98.447],"10.9167":[85.669,1.532,98.25],"10.9583":[88.259,3.139,99.242],"11.0":[96.786,8.059,102.802],"11.0417":[107.202,12.492,108.329],"11.0833":[117.108,14.433,114.508],"11.125":[132.84,15.061,125.09],"11.1667":[137.784,16.106,129.244],"11.2083":[137.231,20.504,131.414],"11.25":[136.343,23.264,132.38],"11.2917":[136.955,25.217,134.855],"11.3333":[138.058,27.306,136.731],"11.375":[139.383,31.241,136.355],"11.4167":[142.833,34.141,137.07],"11.4583":[146.043,32.245,139.386],"11.5":[150.029,28.934,142.1],"11.5417":[151.72,28.077,142.29],"11.5833":[152.528,28.168,141.919],"11.625":[154.708,28.618,141.729],"11.6667":[155.86,29.403,141.317],"11.7083":[155.571,32.086,139.16],"11.75":[154.616,34.654,136.857],"11.7917":[152.207,38.128,133.32],"11.8333":[149.197,39.371,131.606],"11.875":[146.804,38.713,131.854],"11.9167":[143.02,36.716,133.455],"11.9583":[140.681,35.45,134.718],"12.0":[137.935,34.559,136.109],"12.0417":[136.083,34.2,137.593],"12.0833":[135.366,33.653,139.063],"12.125":[135.224,32.261,142.234],"12.1667":[134.748,31.899,143.312],"12.2083":[133.167,32.492,142.949],"12.25":[131.925,33.15,142.217],"12.2917":[129.891,34.218,140.803],"12.3333":[128.53,34.807,139.93],"12.375":[126.663,35.21,139.251],"12.4167":[125.175,34.71,139.766],"12.4583":[124.084,34.363,140.092],"12.5":[121.593,34.635,139.212],"12.5417":[119.459,35.184,137.94],"12.5833":[116.863,35.965,136.832],"12.625":[114.539,36.685,136.154],"12.6667":[112.784,36.636,135.759],"12.7083":[110.226,35.767,135.668],"12.75":[108.3,35.215,135.389],"12.7917":[104.395,35.324,133.37],"12.8333":[100.728,36.083,130.275],"12.875":[94.606,37.223,124.99],"12.9167":[91.097,37.588,122.81],"12.9583":[87.989,37.754,123.403],"13.0":[85.495,37.841,125.677],"13.0417":[82.632,37.839,126.024],"13.0833":[75.076,37.827,123.662],"13.125":[69.04,37.542,121.265],"13.1667":[61.426,36.231,118.331],"13.2083":[57.943,33.842,117.662],"13.25":[57.075,31.75,117.905],"13.2917":[57.118,28.387,118.936],"13.3333":[57.696,26.295,119.966],"13.375":[59.072,23.615,121.85],"13.4167":[60.674,21.921,123.394],"13.4583":[64.486,19.895,126.857],"13.5":[70.687,18.748,132.709],"13.5417":[76.238,18.08,137.924],"13.5833":[84.959,16.281,146.206],"13.625":[89.948,14.377,151.121],"13.6667":[96.37,10.664,157.874],"13.7083":[104.5,6.525,165.824],"13.75":[112.015,3.097,172.368],"13.7917":[120.607,-2.265,182.022],"13.8333":[124.817,-6.159,189.077],"13.875":[129.671,-11.32,198.837],"13.9167":[132.014,-12.792,203.266],"13.9583":[133.734,-10.289,205.895],"14.0":[133.781,-5.263,206.011],"14.0417":[134.041,-2.742,206.228],"14.0833":[134.931,-0.838,207.264],"14.125":[135.466,0.033,207.955],"14.1667":[136.195,0.962,208.949],"14.2083":[136.78,1.557,209.86],"14.25":[136.846,1.643,210.31],"14.2917":[135.622,11.127,210.725],"14.3333":[134.665,19.72,210.557],"14.375":[134.788,22.404,206.397],"14.4167":[134.073,20.491,205.101],"14.4583":[131.798,13.374,204.734],"14.5":[131.113,4.751,198.307],"14.5417":[131.536,-1.705,193.353],"14.5833":[133.061,-10.453,185.325],"14.625":[134.092,-14.62,180.004],"14.6667":[133.569,-15.926,173.568],"14.7083":[125.848,-4.467,170.374],"14.75":[119.992,2.696,166.665],"14.7917":[110.962,8.461,156.996],"14.8333":[104.123,10.868,149.192],"14.875":[95.584,12.068,139.233],"14.9167":[92.81,12.05,136.005],"14.9583":[91.343,11.927,134.398],"15.0":[90.375,11.747,133.344],"15.0417":[89.972,11.606,132.913],"15.0833":[89.687,11.388,132.622],"15.125":[89.679,11.237,132.63],"15.1667":[89.891,11.004,132.893],"15.2083":[90.311,10.76,133.393],"15.25":[90.678,10.595,133.82],"15.2917":[91.306,10.335,134.55],"15.3333":[91.75,10.158,135.066],"15.375":[92.407,9.885,135.827],"15.4167":[92.811,9.701,136.299],"15.4583":[93.319,9.429,136.899],"15.5":[93.66,9.171,137.309],"15.5417":[93.761,9.011,137.444],"15.5833":[96.716,13.199,130.305],"15.625":[99.452,18.074,122.577],"15.6667":[102.163,25.989,111.027],"15.7083":[102.433,33.24,100.965],"15.75":[99.628,36.846,98.996],"15.7917":[97.545,34.49,97.702],"15.8333":[99.468,27.132,94.221],"15.875":[103.969,18.052,91.314],"15.9167":[106.855,17.296,93.876],"15.9583":[111.536,19.627,101.546],"16.0":[116.059,22.34,109.19],"16.0417":[119.188,24.586,114.682],"16.0833":[121.858,27.091,118.784],"16.125":[121.466,28.429,117.491],"16.1667":[120.292,29.791,114.756],"16.2083":[120.371,29.987,114.644],"16.25":[120.823,29.67,115.218],"16.2917":[120.957,29.594,115.371]},"position":{"0.0":[16.021,35.95,-16.289],"0.0417":[16.619,34.177,-13.039],"0.0833":[17.035,30.684,-8.544],"0.125":[16.863,27.483,-5.816],"0.1667":[16.467,22.218,-2.176],"0.2083":[16.442,17.59,0.704],"0.25":[16.444,17.589,0.705],"0.2917":[16.443,17.589,0.704],"0.3333":[16.443,17.59,0.704],"0.375":[16.443,17.59,0.703],"0.4167":[16.443,17.589,0.703],"0.4583":[16.443,17.59,0.703],"0.5":[16.443,17.59,0.703],"0.5417":[16.442,17.59,0.704],"0.5833":[16.442,17.59,0.704],"0.625":[16.443,17.59,0.703],"0.6667":[16.443,17.589,0.703],"0.7083":[16.443,17.591,0.704],"0.75":[16.443,17.588,0.703],"0.7917":[16.442,17.589,0.705],"0.8333":[16.442,17.588,0.704],"0.875":[16.442,17.586,0.704],"0.9167":[16.443,17.589,0.704],"0.9583":[16.443,17.588,0.702],"1.0":[16.443,17.591,0.703],"1.0417":[16.443,17.588,0.704],"1.0833":[16.443,17.587,0.705],"1.125":[16.443,17.59,0.703],"1.1667":[16.442,17.589,0.704],"1.2083":[16.443,17.59,0.705],"1.25":[16.443,17.589,0.702],"1.2917":[16.443,17.592,0.705],"1.3333":[16.442,17.586,0.705],"1.375":[16.442,17.592,0.706],"1.4167":[16.444,17.591,0.701],"1.4583":[16.443,17.592,0.705],"1.5":[16.444,17.59,0.703],"1.5417":[16.442,17.592,0.705],"1.5833":[16.443,17.588,0.704],"1.625":[16.444,17.59,0.704],"1.6667":[16.443,17.59,0.703],"1.7083":[16.442,17.587,0.706],"1.75":[16.444,17.588,0.704],"1.7917":[16.443,17.588,0.703],"1.8333":[17.667,22.38,-2.567],"1.875":[19.678,30.585,-8.239],"1.9167":[20.209,34.534,-10.724],"1.9583":[19.929,38.566,-12.682],"2.0":[18.887,41.179,-14.42],"2.0417":[17.459,41.548,-15.504],"2.0833":[13.16,40.444,-15.63],"2.125":[9.851,39.827,-15.523],"2.1667":[5.729,39.862,-12.759],"2.2083":[3.163,41.814,-11.132],"2.25":[2.769,41.935,-10.862],"2.2917":[2.661,41.676,-10.899],"2.3333":[2.526,41.505,-10.922],"2.375":[2.43,41.258,-10.97],"2.4167":[2.434,41.14,-11.007],"2.4583":[2.512,41.102,-11.068],"2.5":[2.593,41.123,-11.117],"2.5417":[2.605,41.163,-11.122],"2.5833":[2.595,41.242,-11.111],"2.625":[2.585,41.27,-11.103],"2.6667":[2.561,41.278,-11.083],"2.7083":[2.543,41.264,-11.073],"2.75":[2.544,41.24,-11.076],"2.7917":[2.542,41.269,-11.047],"2.8333":[2.613,41.287,-11.171],"2.875":[2.774,41.321,-11.509],"2.9167":[2.872,41.21,-11.79],"2.9583":[3.202,40.754,-11.847],"3.0":[3.753,40.103,-11.635],"3.0417":[4.25,40.116,-11.361],"3.0833":[5.211,40.689,-10.874],"3.125":[5.979,41.104,-10.702],"3.1667":[7.174,41.382,-10.755],"3.2083":[8.016,41.396,-10.885],"3.25":[8.34,41.458,-10.81],"3.2917":[8.638,42.018,-10.393],"3.3333":[8.764,42.518,-10.09],"3.375":[8.809,42.962,-9.868],"3.4167":[8.756,43.112,-9.84],"3.4583":[8.741,43.223,-9.822],"3.5":[8.723,43.277,-9.835],"3.5417":[8.71,43.297,-9.853],"3.5833":[8.695,43.302,-9.874],"3.625":[8.686,43.305,-9.889],"3.6667":[8.681,43.311,-9.904],"3.7083":[8.693,43.324,-9.91],"3.75":[8.705,43.337,-9.908],"3.7917":[8.723,43.369,-9.906],"3.8333":[8.73,43.403,-9.906],"3.875":[8.74,43.467,-9.904],"3.9167":[8.744,43.518,-9.914],"3.9583":[8.749,43.615,-9.962],"4.0":[8.75,43.692,-10.016],"4.0417":[8.752,43.813,-10.092],"4.0833":[8.757,43.939,-10.131],"4.125":[8.764,44.028,-10.14],"4.1667":[8.762,44.091,-10.15],"4.2083":[8.758,44.111,-10.163],"4.25":[8.748,44.117,-10.179],"4.2917":[8.739,44.104,-10.192],"4.3333":[8.734,44.088,-10.195],"4.375":[8.724,44.032,-10.191],"4.4167":[8.719,43.973,-10.18],"4.4583":[8.714,43.868,-10.153],"4.5":[8.719,43.804,-10.122],"4.5417":[8.746,43.737,-10.046],"4.5833":[8.776,43.707,-9.972],"4.625":[8.819,43.659,-9.844],"4.6667":[8.843,43.578,-9.727],"4.7083":[8.85,43.488,-9.652],"4.75":[8.851,43.35,-9.558],"4.7917":[8.848,43.296,-9.522],"4.8333":[8.841,43.227,-9.485],"4.875":[8.833,43.175,-9.464],"4.9167":[8.826,43.154,-9.453],"4.9583":[8.81,43.153,-9.437],"5.0":[8.787,43.201,-9.429],"5.0417":[8.728,43.341,-9.432],"5.0833":[8.68,43.433,-9.432],"5.125":[8.63,43.505,-9.41],"5.1667":[8.605,43.531,-9.362],"5.2083":[8.596,43.537,-9.337],"5.25":[8.583,43.54,-9.305],"5.2917":[8.576,43.538,-9.282],"5.3333":[8.574,43.53,-9.256],"5.375":[8.585,43.51,-9.254],"5.4167":[8.605,43.493,-9.275],"5.4583":[8.658,43.466,-9.345],"5.5":[8.71,43.427,-9.428],"5.5417":[8.812,43.319,-9.623],"5.5833":[8.914,43.075,-9.798],"5.625":[9.168,41.903,-10.536],"5.6667":[9.515,40.39,-11.488],"5.7083":[9.779,39.445,-12.074],"5.75":[10.128,38.307,-12.739],"5.7917":[10.247,37.749,-12.832],"5.8333":[10.313,37.57,-12.64],"5.875":[10.363,39.2,-12.622],"5.9167":[10.335,40.988,-12.498],"5.9583":[10.671,42.02,-12.45],"6.0":[11.054,41.91,-12.725],"6.0417":[11.303,41.662,-13.176],"6.0833":[11.26,41.416,-12.666],"6.125":[10.906,40.965,-11.488],"6.1667":[10.41,40.319,-11.071],"6.2083":[10.062,39.782,-11.116],"6.25":[9.767,39.087,-11.067],"6.2917":[9.575,38.847,-10.303],"6.3333":[9.485,38.597,-9.431],"6.375":[9.4,38.269,-8.906],"6.4167":[9.289,38.122,-8.917],"6.4583":[9.241,38.236,-9.162],"6.5":[9.258,38.401,-9.252],"6.5417":[9.333,38.727,-9.252],"6.5833":[9.386,38.806,-9.224],"6.625":[9.48,38.752,-9.161],"6.6667":[9.474,38.608,-9.069],"6.7083":[9.356,38.417,-8.966],"6.75":[9.145,37.79,-8.874],"6.7917":[9.04,37.517,-8.882],"6.8333":[9.017,37.316,-9.113],"6.875":[9.161,37.297,-9.381],"6.9167":[9.407,37.608,-9.305],"6.9583":[10.409,37.886,-9.399],"7.0":[11.112,38.051,-10.032],"7.0417":[11.994,38.104,-11.605],"7.0833":[12.418,38.158,-11.577],"7.125":[13.033,38.281,-11.608],"7.1667":[13.604,38.471,-12.337],"7.2083":[13.894,38.82,-12.653],"7.25":[14.271,39.421,-12.911],"7.2917":[14.569,39.723,-12.938],"7.3333":[15.492,41.472,-13.337],"7.375":[15.443,43.81,-13.933],"7.4167":[13.696,44.151,-14.437],"7.4583":[10.44,41.653,-14.504],"7.5":[8.228,38.583,-13.938],"7.5417":[5.882,33.012,-11.622],"7.5833":[5.37,30.566,-10.121],"7.625":[5.95,29.302,-8.33],"7.6667":[6.792,29.035,-7.031],"7.7083":[7.405,28.977,-6.168],"7.75":[8.373,29,-4.93],"7.7917":[9.027,29.043,-4.177],"7.8333":[9.997,29.075,-3.214],"7.875":[10.636,29.039,-2.721],"7.9167":[11.732,28.953,-2.264],"7.9583":[12.817,28.859,-2.037],"8.0":[13.415,28.807,-1.947],"8.0417":[13.948,28.768,-1.805],"8.0833":[14.101,28.765,-1.687],"8.125":[14.274,28.761,-1.522],"8.1667":[14.391,28.764,-1.37],"8.2083":[14.44,28.769,-1.277],"8.25":[14.48,28.772,-1.149],"8.2917":[14.492,28.777,-1.072],"8.3333":[14.492,28.783,-0.967],"8.375":[14.482,28.786,-0.902],"8.4167":[14.468,28.791,-0.811],"8.4583":[14.462,28.795,-0.755],"8.5":[14.464,28.8,-0.674],"8.5417":[14.489,28.804,-0.592],"8.5833":[14.522,28.806,-0.531],"8.625":[14.607,28.809,-0.435],"8.6667":[14.687,28.81,-0.363],"8.7083":[14.848,28.806,-0.239],"8.75":[15.08,28.8,-0.083],"8.7917":[15.287,28.792,0.042],"8.8333":[15.661,28.776,0.259],"8.875":[15.945,28.766,0.419],"8.9167":[16.41,28.749,0.667],"8.9583":[16.739,28.74,0.834],"9.0":[17.24,28.726,1.081],"9.0417":[17.738,28.713,1.315],"9.0833":[18.058,28.708,1.462],"9.125":[18.507,28.698,1.667],"9.1667":[18.645,28.696,1.729],"9.2083":[18.548,28.708,1.538],"9.25":[18.485,28.718,1.412],"9.2917":[18.388,28.73,1.218],"9.3333":[18.29,28.742,1.026],"9.375":[18.226,28.751,0.897],"9.4167":[18.127,28.765,0.703],"9.4583":[18.063,28.774,0.575],"9.5":[17.965,28.786,0.379],"9.5417":[17.866,28.798,0.185],"9.5833":[17.801,28.808,0.057],"9.625":[17.703,28.82,-0.142],"9.6667":[17.638,28.828,-0.271],"9.7083":[17.54,28.841,-0.466],"9.75":[17.474,28.85,-0.594],"9.7917":[17.375,28.862,-0.793],"9.8333":[17.279,28.872,-0.989],"9.875":[17.213,28.882,-1.119],"9.9167":[17.114,28.893,-1.316],"9.9583":[17.047,28.903,-1.447],"10.0":[16.95,28.917,-1.645],"10.0417":[16.85,28.925,-1.843],"10.0833":[16.785,28.937,-1.973],"10.125":[16.687,28.946,-2.174],"10.1667":[16.623,28.954,-2.304],"10.2083":[16.523,28.966,-2.505],"10.25":[16.455,28.977,-2.636],"10.2917":[16.357,28.985,-2.835],"10.3333":[16.258,29,-3.032],"10.375":[16.194,29.008,-3.165],"10.4167":[16.097,29.016,-3.364],"10.4583":[16.032,29.024,-3.496],"10.5":[15.933,29.037,-3.695],"10.5417":[15.835,29.047,-3.894],"10.5833":[15.77,29.054,-4.027],"10.625":[15.673,29.066,-4.226],"10.6667":[15.608,29.077,-4.357],"10.7083":[15.508,29.087,-4.557],"10.75":[15.446,29.093,-4.69],"10.7917":[15.347,29.105,-4.889],"10.8333":[15.249,29.118,-5.087],"10.875":[15.186,29.124,-5.22],"10.9167":[15.091,29.134,-5.418],"10.9583":[15.005,30.029,-5.708],"11.0":[14.741,33.067,-6.716],"11.0417":[14.374,35.839,-7.712],"11.0833":[14.024,37.171,-8.295],"11.125":[13.31,38.668,-9.087],"11.1667":[12.764,39.558,-9.479],"11.2083":[11.854,40.688,-9.814],"11.25":[11.304,41.229,-9.942],"11.2917":[10.639,41.63,-9.99],"11.3333":[10.092,41.748,-9.914],"11.375":[9.814,41.705,-9.788],"11.4167":[9.612,41.478,-9.603],"11.4583":[9.577,41.295,-9.534],"11.5":[9.571,41.006,-9.446],"11.5417":[9.591,40.731,-9.347],"11.5833":[9.625,40.546,-9.297],"11.625":[9.704,40.243,-9.264],"11.6667":[9.763,40.057,-9.25],"11.7083":[9.845,39.858,-9.215],"11.75":[9.908,39.751,-9.196],"11.7917":[9.973,39.625,-9.14],"11.8333":[9.954,39.549,-9.007],"11.875":[9.879,39.534,-8.869],"11.9167":[9.72,39.56,-8.62],"11.9583":[9.615,39.593,-8.446],"12.0":[9.504,39.651,-8.196],"12.0417":[9.424,39.727,-7.942],"12.0833":[9.389,39.756,-7.794],"12.125":[9.361,39.768,-7.599],"12.1667":[9.349,39.766,-7.488],"12.2083":[9.327,39.76,-7.338],"12.25":[9.319,39.75,-7.242],"12.2917":[9.3,39.735,-7.11],"12.3333":[9.283,39.725,-7.034],"12.375":[9.246,39.709,-6.944],"12.4167":[9.177,39.69,-6.922],"12.4583":[9.123,39.677,-6.929],"12.5":[9.044,39.645,-6.956],"12.5417":[8.984,39.615,-6.995],"12.5833":[8.87,39.566,-7.065],"12.625":[8.741,39.515,-7.125],"12.6667":[8.666,39.493,-7.079],"12.7083":[8.567,39.483,-6.915],"12.75":[8.501,39.483,-6.785],"12.7917":[8.412,39.471,-6.612],"12.8333":[8.356,39.459,-6.514],"12.875":[8.272,39.434,-6.373],"12.9167":[8.217,39.42,-6.285],"12.9583":[8.136,39.42,-6.173],"13.0":[8.068,39.434,-6.064],"13.0417":[8.033,39.437,-5.976],"13.0833":[7.991,39.432,-5.822],"13.125":[7.972,39.427,-5.719],"13.1667":[7.974,39.417,-5.567],"13.2083":[8.019,39.41,-5.403],"13.25":[8.07,39.405,-5.284],"13.2917":[8.162,39.398,-5.097],"13.3333":[8.235,39.393,-4.978],"13.375":[8.354,39.37,-4.797],"13.4167":[8.447,39.355,-4.668],"13.4583":[8.608,39.306,-4.524],"13.5":[8.82,39.203,-4.5],"13.5417":[8.993,39.1,-4.544],"13.5833":[9.241,38.918,-4.694],"13.625":[9.374,38.796,-4.85],"13.6667":[9.519,38.618,-5.215],"13.7083":[9.538,38.344,-5.679],"13.75":[9.419,38.064,-6.077],"13.7917":[9.149,37.713,-6.635],"13.8333":[8.905,37.518,-6.989],"13.875":[8.494,37.255,-7.446],"13.9167":[8.231,37.098,-7.631],"13.9583":[7.891,36.926,-7.627],"14.0":[7.648,36.85,-7.479],"14.0417":[7.51,36.809,-7.436],"14.0833":[7.33,36.767,-7.471],"14.125":[7.23,36.759,-7.504],"14.1667":[7.098,36.768,-7.565],"14.2083":[6.98,36.812,-7.646],"14.25":[6.918,36.89,-7.716],"14.2917":[7.686,36.166,-7.016],"14.3333":[8.554,35.411,-6.314],"14.375":[9.679,35.017,-5.667],"14.4167":[10.135,35.094,-5.597],"14.4583":[10.364,35.558,-6.005],"14.5":[10.492,35.909,-6.479],"14.5417":[10.565,36.193,-6.861],"14.5833":[10.678,36.573,-7.441],"14.625":[10.766,36.707,-7.769],"14.6667":[10.918,36.486,-7.977],"14.7083":[11.014,35.062,-7.436],"14.75":[11.348,33.937,-6.961],"14.7917":[12.551,32.118,-6.124],"14.8333":[13.546,30.788,-5.495],"14.875":[14.803,29.144,-4.729],"14.9167":[15.197,28.593,-4.489],"14.9583":[15.358,28.274,-4.381],"15.0":[15.456,28.041,-4.314],"15.0417":[15.49,27.932,-4.29],"15.0833":[15.499,27.82,-4.278],"15.125":[15.482,27.781,-4.283],"15.1667":[15.428,27.76,-4.31],"15.2083":[15.344,27.776,-4.35],"15.25":[15.28,27.8,-4.392],"15.2917":[15.169,27.855,-4.454],"15.3333":[15.091,27.892,-4.495],"15.375":[14.977,27.955,-4.56],"15.4167":[14.904,27.987,-4.601],"15.4583":[14.808,28.026,-4.654],"15.5":[14.735,28.028,-4.692],"15.5417":[14.704,28.011,-4.71],"15.5833":[15.562,28.752,-6.594],"15.625":[16.552,29.522,-8.615],"15.6667":[18.03,30.785,-11.733],"15.7083":[19.114,32.217,-14.694],"15.75":[18.841,33.601,-16.48],"15.7917":[17.478,35.201,-17.706],"15.8333":[16.372,35.666,-17.548],"15.875":[15.224,36.152,-17.141],"15.9167":[15.463,36.416,-17.066],"15.9583":[16.474,36.657,-17.028],"16.0":[16.64,36.82,-17.248],"16.0417":[16.42,36.885,-17.526],"16.0833":[16.123,36.945,-17.831],"16.125":[15.983,36.964,-17.937],"16.1667":[15.812,36.944,-18.019],"16.2083":[15.752,36.907,-18.027],"16.25":[15.716,36.816,-17.979],"16.2917":[15.709,36.78,-17.958]}},"righthand":{"rotation":{"0.0":[-34.954,150.887,-1.536],"0.0417":[-57.788,162.693,-10.956],"0.0833":[-86.831,167.025,-9.117],"0.125":[-104.651,168.632,-8.77],"0.1667":[-125.509,176.907,-5.052],"0.2083":[-113.72,176.025,-4.844],"0.25":[-92.661,170.97,-5.667],"0.2917":[-75.64,166.21,-4.891],"0.3333":[-73.889,166.008,-4.102],"0.375":[-77.289,167.332,-2.677],"0.4167":[-83.958,168.923,0.646],"0.4583":[-94.199,170.164,3.931],"0.5":[-96.794,171.057,1.995],"0.5417":[-92.622,170.981,-1.757],"0.5833":[-82.532,168.646,-4.999],"0.625":[-79.697,167.965,-5.733],"0.6667":[-80.299,168.403,-5.715],"0.7083":[-84.277,169.577,-4.496],"0.75":[-90.329,170.884,-2.364],"0.7917":[-84.202,170.04,-0.181],"0.8333":[-76.67,168.815,-0.162],"0.875":[-79.684,168.12,-6.563],"0.9167":[-83.563,168.759,-9.097],"0.9583":[-89.46,170.682,-8.501],"1.0":[-89.517,170.944,-2.772],"1.0417":[-86.669,170.634,-0.401],"1.0833":[-79.185,169.51,-0.391],"1.125":[-74.97,167.617,-4.063],"1.1667":[-74.94,166.571,-8.009],"1.2083":[-82.787,169.332,-6.041],"1.25":[-89.479,170.589,-3.237],"1.2917":[-96.045,171.643,-3.44],"1.3333":[-91.083,171.971,-9.124],"1.375":[-73.807,167.453,-14.162],"1.4167":[-62.302,164.056,-18.372],"1.4583":[-66.783,160.764,-42.968],"1.5":[-58.342,167.808,-26.39],"1.5417":[-58.82,177.401,-4.435],"1.5833":[-60.292,177.31,7.563],"1.625":[-61.116,173.92,10.306],"1.6667":[-62.196,166.524,10.458],"1.7083":[-63.888,158.005,7.914],"1.75":[-66.466,153.764,5.971],"1.7917":[-73.207,151.542,4.142],"1.8333":[-79.136,151.759,3.168],"1.875":[-88.677,153.488,2.238],"1.9167":[-94.719,154.958,1.974],"1.9583":[-102.199,156.604,1.725],"2.0":[-106.457,157.322,1.458],"2.0417":[-107.959,157.632,1.361],"2.0833":[-110.019,158.061,1.242],"2.125":[-110.975,158.235,1.197],"2.1667":[-111.845,158.335,1.149],"2.2083":[-111.852,158.332,1.147],"2.25":[-111.858,158.331,1.141],"2.2917":[-111.881,158.32,1.133],"2.3333":[-111.901,158.314,1.125],"2.375":[-111.935,158.3,1.112],"2.4167":[-111.967,158.29,1.098],"2.4583":[-112.014,158.268,1.08],"2.5":[-112.072,158.246,1.057],"2.5417":[-112.109,158.231,1.039],"2.5833":[-112.18,158.204,1.014],"2.625":[-112.228,158.185,0.991],"2.6667":[-112.314,158.153,0.96],"2.7083":[-112.397,158.12,0.927],"2.75":[-112.458,158.097,0.9],"2.7917":[-112.553,158.059,0.861],"2.8333":[-112.62,158.035,0.835],"2.875":[-112.728,157.993,0.791],"2.9167":[-112.799,157.965,0.761],"2.9583":[-112.917,157.922,0.714],"3.0":[-113.034,157.877,0.665],"3.0417":[-113.117,157.844,0.631],"3.0833":[-113.243,157.798,0.579],"3.125":[-113.331,157.764,0.545],"3.1667":[-113.465,157.713,0.488],"3.2083":[-113.601,157.662,0.431],"3.25":[-113.694,157.627,0.393],"3.2917":[-113.839,157.569,0.333],"3.3333":[-113.938,157.536,0.292],"3.375":[-114.084,157.481,0.228],"3.4167":[-114.184,157.444,0.189],"3.4583":[-114.336,157.385,0.123],"3.5":[-114.49,157.325,0.059],"3.5417":[-114.597,157.294,0.015],"3.5833":[-114.754,157.233,-0.049],"3.625":[-114.858,157.188,-0.096],"3.6667":[-115.022,157.132,-0.164],"3.7083":[-115.182,157.072,-0.233],"3.75":[-115.289,157.03,-0.279],"3.7917":[-115.452,156.971,-0.349],"3.8333":[-115.56,156.931,-0.396],"3.875":[-115.724,156.876,-0.466],"3.9167":[-115.833,156.831,-0.512],"3.9583":[-115.993,156.775,-0.581],"4.0":[-116.104,156.735,-0.631],"4.0417":[-116.266,156.678,-0.7],"4.0833":[-116.428,156.619,-0.77],"4.125":[-116.535,156.584,-0.819],"4.1667":[-116.693,156.526,-0.886],"4.2083":[-116.797,156.485,-0.931],"4.25":[-116.954,156.432,-1],"4.2917":[-117.107,156.375,-1.069],"4.3333":[-117.209,156.343,-1.114],"4.375":[-117.358,156.287,-1.18],"4.4167":[-117.457,156.252,-1.225],"4.4583":[-117.596,156.197,-1.287],"4.5":[-117.693,156.167,-1.331],"4.5417":[-117.833,156.119,-1.394],"4.5833":[-117.923,156.084,-1.432],"4.625":[-118.055,156.04,-1.492],"4.6667":[-118.184,155.993,-1.553],"4.7083":[-118.268,155.964,-1.593],"4.75":[-118.385,155.922,-1.644],"4.7917":[-118.461,155.891,-1.679],"4.8333":[-118.575,155.854,-1.732],"4.875":[-118.68,155.814,-1.781],"4.9167":[-118.746,155.791,-1.809],"4.9583":[-118.845,155.757,-1.857],"5.0":[-118.906,155.738,-1.885],"5.0417":[-118.991,155.703,-1.927],"5.0833":[-119.046,155.684,-1.952],"5.125":[-119.117,155.653,-1.987],"5.1667":[-119.183,155.629,-2.021],"5.2083":[-119.228,155.611,-2.042],"5.25":[-119.282,155.593,-2.068],"5.2917":[-119.313,155.579,-2.084],"5.3333":[-119.354,155.559,-2.106],"5.375":[-119.385,155.543,-2.124],"5.4167":[-119.403,155.536,-2.133],"5.4583":[-119.423,155.526,-2.146],"5.5":[-119.431,155.523,-2.154],"5.5417":[-119.431,155.515,-2.157],"5.5833":[-119.429,155.515,-2.159],"5.625":[-119.412,155.51,-2.153],"5.6667":[-119.389,155.514,-2.15],"5.7083":[-119.367,155.518,-2.143],"5.75":[-119.327,155.527,-2.129],"5.7917":[-119.294,155.534,-2.118],"5.8333":[-119.232,155.545,-2.095],"5.875":[-119.165,155.566,-2.07],"5.9167":[-119.109,155.575,-2.048],"5.9583":[-119.02,155.599,-2.014],"6.0":[-118.952,155.617,-1.987],"6.0417":[-118.841,155.648,-1.944],"6.0833":[-118.761,155.671,-1.913],"6.125":[-118.632,155.703,-1.863],"6.1667":[-118.489,155.745,-1.804],"6.2083":[-118.388,155.773,-1.76],"6.25":[-118.221,155.82,-1.691],"6.2917":[-118.103,155.854,-1.644],"6.3333":[-117.917,155.908,-1.569],"6.375":[-117.713,155.969,-1.487],"6.4167":[-117.573,156.011,-1.43],"6.4583":[-117.349,156.078,-1.336],"6.5":[-117.188,156.126,-1.27],"6.5417":[-116.937,156.204,-1.169],"6.5833":[-116.761,156.258,-1.101],"6.625":[-116.487,156.345,-0.989],"6.6667":[-116.197,156.438,-0.869],"6.7083":[-115.995,156.501,-0.79],"6.75":[-115.683,156.602,-0.662],"6.7917":[-115.464,156.674,-0.573],"6.8333":[-115.124,156.784,-0.435],"6.875":[-114.765,156.902,-0.291],"6.9167":[-114.515,156.988,-0.193],"6.9583":[-114.131,157.116,-0.039],"7.0":[-113.868,157.205,0.067],"7.0417":[-113.456,157.345,0.233],"7.0833":[-113.173,157.444,0.343],"7.125":[-112.732,157.6,0.515],"7.1667":[-112.276,157.762,0.694],"7.2083":[-111.962,157.875,0.817],"7.25":[-111.475,158.05,1.005],"7.2917":[-111.142,158.172,1.133],"7.3333":[-100.185,162.737,4.905],"7.375":[-69.611,179.616,10.335],"7.4167":[-56.312,187.978,10.194],"7.4583":[-47.614,194.567,10.031],"7.5":[-48.159,195.485,10.221],"7.5417":[-51.47,195.11,10.723],"7.5833":[-54.434,194.718,11.211],"7.625":[-58.542,195.672,12.381],"7.6667":[-61.177,203.786,16.491],"7.7083":[-63.251,213.536,21.548],"7.75":[-64.113,213.843,18.587],"7.7917":[-64.306,198.699,5.635],"7.8333":[-58.081,179.173,-15.98],"7.875":[-51.134,171.231,-30.078],"7.9167":[-54.535,163.361,-45.807],"7.9583":[-55.767,160.207,-50.36],"8.0":[-54.939,159.4,-46.999],"8.0417":[-50.474,160.672,-38.575],"8.0833":[-47.603,162.374,-33.822],"8.125":[-48.288,162.589,-35.54],"8.1667":[-49.437,162.072,-38.523],"8.2083":[-49.656,161.621,-39.909],"8.25":[-49.989,160.39,-41.637],"8.2917":[-50.331,158.733,-42.715],"8.3333":[-51.132,155.918,-42.96],"8.375":[-52.184,154.707,-40.095],"8.4167":[-53.029,153.965,-34.541],"8.4583":[-52.259,154.918,-29.754],"8.5":[-51.89,156.861,-24.416],"8.5417":[-54.173,158.317,-24.126],"8.5833":[-56.407,159.147,-25.813],"8.625":[-59.896,160.45,-30.324],"8.6667":[-62.529,161.305,-35.026],"8.7083":[-65.586,162.734,-41.589],"8.75":[-66.79,163.1,-45.05],"8.7917":[-66.738,163.314,-45.636],"8.8333":[-64.35,166.947,-40.126],"8.875":[-62.185,169.493,-36.399],"8.9167":[-57.141,172.804,-29.177],"8.9583":[-50.706,175.834,-20.537],"9.0":[-37.53,184.341,-2.687],"9.0417":[-25.161,199.05,16.116],"9.0833":[-19.433,211.968,28.248],"9.125":[-19.742,240.816,54.206],"9.1667":[-32.012,251.307,75.568],"9.2083":[-42.599,253.285,89.66],"9.25":[-46.085,253.793,94.375],"9.2917":[-46.406,253.879,95.571],"9.3333":[-45.403,253.966,95.56],"9.375":[-44.578,253.976,95.204],"9.4167":[-43.69,253.922,94.579],"9.4583":[-43.122,253.857,94.023],"9.5":[-42.413,253.78,93.3],"9.5417":[-41.812,253.713,92.595],"9.5833":[-41.406,253.694,92.145],"9.625":[-40.985,253.758,91.694],"9.6667":[-40.559,253.765,91.239],"9.7083":[-39.279,253.568,89.879],"9.75":[-38.089,253.353,88.665],"9.7917":[-34.928,252.267,85.13],"9.8333":[-32.959,249.124,81.135],"9.875":[-21.228,239.758,63.444],"9.9167":[-13.612,212.459,40.188],"9.9583":[-15.229,196.547,32.456],"10.0":[-20.905,174.054,22.018],"10.0417":[-31.192,153.087,8.823],"10.0833":[-42.083,140.92,-3.455],"10.125":[-61.202,129.978,-23.843],"10.1667":[-66.924,127.597,-30.219],"10.2083":[-71.761,126.454,-36.558],"10.25":[-73.324,126.472,-38.834],"10.2917":[-74.65,126.41,-40.577],"10.3333":[-75.04,126.411,-41.027],"10.375":[-74.785,126.426,-40.659],"10.4167":[-73.831,126.486,-39.305],"10.4583":[-73.242,126.483,-38.356],"10.5":[-72.134,126.694,-36.424],"10.5417":[-70.281,128.899,-33.503],"10.5833":[-68.411,130.736,-30.585],"10.625":[-66.028,134.173,-26.619],"10.6667":[-63.523,136.915,-23.043],"10.7083":[-58.889,141.666,-16.346],"10.75":[-55.743,145.099,-11.643],"10.7917":[-50.16,150.265,-3.881],"10.8333":[-43.061,155.627,4.221],"10.875":[-37.161,159.644,9.676],"10.9167":[-27.984,166.741,17.345],"10.9583":[-22.663,172.163,21.718],"11.0":[-17.218,180.958,27.016],"11.0417":[-14.471,190.792,31.661],"11.0833":[-14.169,197.215,34.695],"11.125":[-16.165,205.073,39.538],"11.1667":[-18.522,208.686,41.669],"11.2083":[-23.377,211.943,45.042],"11.25":[-26.158,212.588,46.58],"11.2917":[-29.527,211.394,47.391],"11.3333":[-33.269,207.861,47.894],"11.375":[-36.64,203.688,48.557],"11.4167":[-41.905,195.152,48.889],"11.4583":[-44.635,189.476,48.27],"11.5":[-48.34,180.798,46.324],"11.5417":[-51.273,172.094,43.928],"11.5833":[-52.797,166.33,42.35],"11.625":[-55.013,157.657,39.769],"11.6667":[-56.343,151.942,37.921],"11.7083":[-57.885,143.552,35.053],"11.75":[-58.404,138.107,33.219],"11.7917":[-58.384,130.029,30.742],"11.8333":[-57.852,121.969,28.468],"11.875":[-57.61,116.578,26.831],"11.9167":[-57.238,107.971,24.357],"11.9583":[-56.835,101.973,22.785],"12.0":[-59.521,93.346,17.068],"12.0417":[-42.781,85.968,30.756],"12.0833":[-42.342,82.207,29.173],"12.125":[-39.514,77.498,28.891],"12.1667":[-37.289,74.835,29.006],"12.2083":[-33.549,71.459,29.556],"12.25":[-30.821,69.543,30.179],"12.2917":[-26.41,67.033,31.513],"12.3333":[-23.114,65.591,32.826],"12.375":[-16.165,64.222,36.824],"12.4167":[-7.93,63.39,42.309],"12.4583":[-2.528,62.923,46.097],"12.5":[4.375,62.289,51.079],"12.5417":[8.705,62.13,54.583],"12.5833":[15.222,62.08,60.318],"12.625":[21.362,61.855,65.807],"12.6667":[24.965,61.474,68.843],"12.7083":[29.933,60.744,72.952],"12.75":[32.972,60.193,75.427],"12.7917":[37.074,59.31,78.677],"12.8333":[39.482,58.709,80.507],"12.875":[42.631,57.805,82.75],"12.9167":[44.479,57.19,83.97],"12.9583":[46.889,56.328,85.42],"13.0":[48.87,55.632,86.467],"13.0417":[49.963,55.315,86.966],"13.0833":[51.008,55.259,87.16],"13.125":[51.383,55.45,86.984],"13.1667":[51.869,55.784,86.698],"13.2083":[52.767,55.806,86.901],"13.25":[53.735,55.531,87.472],"13.2917":[55.481,54.83,88.708],"13.3333":[56.748,54.238,89.665],"13.375":[58.625,53.293,91.069],"13.4167":[59.972,52.539,92.06],"13.4583":[62.048,51.23,93.617],"13.5":[63.518,50.299,94.795],"13.5417":[64.168,49.902,95.426],"13.5833":[64.862,49.528,96.167],"13.625":[65.202,49.411,96.458],"13.6667":[65.61,49.407,96.531],"13.7083":[65.89,49.574,96.366],"13.75":[65.966,49.74,96.248],"13.7917":[65.861,50.014,96.254],"13.8333":[65.552,50.258,96.509],"13.875":[64.428,50.854,96.553],"13.9167":[62.919,51.489,95.923],"13.9583":[60.028,52.597,94.408],"14.0":[57.77,53.498,92.941],"14.0417":[56.541,54.023,91.971],"14.0833":[55.45,54.63,90.956],"14.125":[55.143,54.94,90.542],"14.1667":[55.099,55.331,90.176],"14.2083":[55.561,55.688,90.158],"14.25":[56.617,55.849,90.651],"14.2917":[56.812,56.226,89.69],"14.3333":[56.574,56.147,88.707],"14.375":[57.319,54.132,89.052],"14.4167":[57.762,52.741,89.363],"14.4583":[58.341,51.196,89.927],"14.5":[59.394,51.449,91.498],"14.5417":[60.193,51.927,92.653],"14.5833":[61.055,52.429,93.477],"14.625":[61.511,52.75,93.648],"14.6667":[63.072,53.2,95.116],"14.7083":[65.132,53.254,97.444],"14.75":[69.315,54.142,102.275],"14.7917":[82.999,58.152,117.737],"14.8333":[97.197,58.082,133.702],"14.875":[115.103,41.123,154.936],"14.9167":[115.372,24.169,161.844],"14.9583":[85.427,15.659,167.735],"15.0":[74.388,9.041,173.482],"15.0417":[78.029,6.765,177.233],"15.0833":[94.843,9.281,179.169],"15.125":[105.866,11.879,180.076],"15.1667":[105.998,12.352,180.105],"15.2083":[95.134,10.704,178.695],"15.25":[89.003,9.674,178.038],"15.2917":[82.493,8.576,177.425],"15.3333":[83.445,8.722,177.359],"15.375":[100.418,11.317,178.579],"15.4167":[107.332,12.506,179.029],"15.4583":[106.969,12.783,178.571],"15.5":[95.267,11.079,177.028],"15.5417":[94.706,11.061,176.731],"15.5833":[103.919,12.747,177.33],"15.625":[110.677,13.554,178.314],"15.6667":[120.986,14.406,181.105],"15.7083":[132.153,16.058,184.536],"15.75":[145.691,26.053,182.01],"15.7917":[161.754,37.49,183.288],"15.8333":[160.015,36.007,185.16],"15.875":[159.322,34.254,184.904],"15.9167":[158.787,33.428,183.763],"15.9583":[158.009,33.545,184.239],"16.0":[158.168,34.335,184.622],"16.0417":[158.4,34.763,184.762],"16.0833":[158.173,34.217,185.154],"16.125":[157.968,33.671,185.412],"16.1667":[157.923,33.183,185.639],"16.2083":[157.985,32.947,185.729],"16.25":[158.11,32.627,185.838],"16.2917":[158.142,32.51,185.88]},"position":{"0.0":[-13.323,39.042,-12.314],"0.0417":[-13.615,38.487,-12.459],"0.0833":[-14.426,38.274,-12.618],"0.125":[-14.949,39.015,-13.1],"0.1667":[-15.323,40.55,-14.888],"0.2083":[-15.618,40.63,-15.418],"0.25":[-15.741,40.532,-15.574],"0.2917":[-15.775,40.656,-15.77],"0.3333":[-15.749,40.371,-15.092],"0.375":[-15.81,39.67,-15.075],"0.4167":[-15.939,39.677,-15.02],"0.4583":[-15.999,40.684,-14.904],"0.5":[-15.921,41.532,-15.316],"0.5417":[-15.82,41.698,-15.642],"0.5833":[-15.715,41.284,-15.314],"0.625":[-15.714,40.934,-15.06],"0.6667":[-15.81,40.369,-14.649],"0.7083":[-15.855,40.228,-14.637],"0.75":[-15.807,40.639,-15.091],"0.7917":[-15.843,40.827,-15.622],"0.8333":[-15.841,40.834,-15.749],"0.875":[-15.443,41.149,-14.879],"0.9167":[-15.418,41.088,-14.427],"0.9583":[-15.749,40.638,-14.301],"1.0":[-15.786,40.775,-15.72],"1.0417":[-15.802,41.093,-16.186],"1.0833":[-15.828,41.684,-15.916],"1.125":[-15.772,41.302,-15.468],"1.1667":[-15.681,40.521,-14.572],"1.2083":[-15.67,40.019,-13.774],"1.25":[-15.856,39.281,-13.654],"1.2917":[-16.234,37.664,-14.413],"1.3333":[-16.31,37.237,-15.529],"1.375":[-16.344,38.326,-16.834],"1.4167":[-16.019,40.469,-17.31],"1.4583":[-16.666,42.814,-14.61],"1.5":[-16.955,40.492,-10.894],"1.5417":[-17.024,37.965,-8.647],"1.5833":[-16.343,33.915,-6.742],"1.625":[-15.881,32.097,-6.365],"1.6667":[-15.533,31.499,-7.294],"1.7083":[-15.283,31.697,-8.822],"1.75":[-15.122,31.815,-9.506],"1.7917":[-14.85,31.551,-9.373],"1.8333":[-14.661,31.325,-8.872],"1.875":[-14.364,30.925,-7.813],"1.9167":[-14.155,30.6,-7.051],"1.9583":[-13.844,29.994,-6.036],"2.0":[-13.544,29.047,-5.14],"2.0417":[-13.355,28.257,-4.521],"2.0833":[-13.088,27.144,-3.652],"2.125":[-12.993,26.794,-3.358],"2.1667":[-12.904,26.482,-3.09],"2.2083":[-12.905,26.479,-3.089],"2.25":[-12.902,26.477,-3.09],"2.2917":[-12.9,26.474,-3.091],"2.3333":[-12.899,26.471,-3.091],"2.375":[-12.897,26.465,-3.095],"2.4167":[-12.893,26.459,-3.097],"2.4583":[-12.89,26.45,-3.098],"2.5":[-12.884,26.442,-3.104],"2.5417":[-12.881,26.436,-3.104],"2.5833":[-12.877,26.421,-3.107],"2.625":[-12.873,26.415,-3.109],"2.6667":[-12.866,26.402,-3.111],"2.7083":[-12.858,26.387,-3.118],"2.75":[-12.854,26.375,-3.12],"2.7917":[-12.846,26.362,-3.124],"2.8333":[-12.841,26.35,-3.127],"2.875":[-12.833,26.333,-3.132],"2.9167":[-12.826,26.322,-3.136],"2.9583":[-12.818,26.301,-3.14],"3.0":[-12.808,26.284,-3.146],"3.0417":[-12.801,26.268,-3.151],"3.0833":[-12.792,26.249,-3.156],"3.125":[-12.785,26.236,-3.161],"3.1667":[-12.77,26.212,-3.167],"3.2083":[-12.764,26.19,-3.173],"3.25":[-12.753,26.173,-3.18],"3.2917":[-12.743,26.151,-3.188],"3.3333":[-12.737,26.137,-3.191],"3.375":[-12.722,26.114,-3.197],"3.4167":[-12.713,26.096,-3.202],"3.4583":[-12.703,26.074,-3.212],"3.5":[-12.691,26.047,-3.22],"3.5417":[-12.682,26.033,-3.223],"3.5833":[-12.67,26.005,-3.231],"3.625":[-12.661,25.988,-3.238],"3.6667":[-12.649,25.965,-3.245],"3.7083":[-12.636,25.938,-3.255],"3.75":[-12.628,25.921,-3.263],"3.7917":[-12.613,25.895,-3.27],"3.8333":[-12.604,25.879,-3.275],"3.875":[-12.592,25.854,-3.284],"3.9167":[-12.582,25.838,-3.288],"3.9583":[-12.569,25.813,-3.296],"4.0":[-12.562,25.794,-3.306],"4.0417":[-12.547,25.771,-3.311],"4.0833":[-12.536,25.743,-3.323],"4.125":[-12.526,25.727,-3.33],"4.1667":[-12.516,25.702,-3.336],"4.2083":[-12.507,25.688,-3.345],"4.25":[-12.495,25.664,-3.351],"4.2917":[-12.479,25.64,-3.359],"4.3333":[-12.472,25.628,-3.365],"4.375":[-12.462,25.6,-3.377],"4.4167":[-12.454,25.587,-3.382],"4.4583":[-12.443,25.565,-3.391],"4.5":[-12.435,25.551,-3.396],"4.5417":[-12.424,25.531,-3.405],"4.5833":[-12.417,25.517,-3.41],"4.625":[-12.406,25.498,-3.419],"4.6667":[-12.396,25.479,-3.426],"4.7083":[-12.39,25.468,-3.431],"4.75":[-12.381,25.448,-3.44],"4.7917":[-12.374,25.438,-3.446],"4.8333":[-12.365,25.42,-3.453],"4.875":[-12.358,25.405,-3.462],"4.9167":[-12.353,25.396,-3.466],"4.9583":[-12.344,25.384,-3.473],"5.0":[-12.339,25.375,-3.477],"5.0417":[-12.333,25.363,-3.485],"5.0833":[-12.329,25.356,-3.488],"5.125":[-12.323,25.346,-3.496],"5.1667":[-12.318,25.337,-3.503],"5.2083":[-12.315,25.333,-3.506],"5.25":[-12.311,25.326,-3.512],"5.2917":[-12.31,25.322,-3.515],"5.3333":[-12.306,25.318,-3.521],"5.375":[-12.303,25.315,-3.526],"5.4167":[-12.302,25.313,-3.529],"5.4583":[-12.301,25.313,-3.533],"5.5":[-12.299,25.312,-3.536],"5.5417":[-12.3,25.317,-3.539],"5.5833":[-12.302,25.316,-3.542],"5.625":[-12.302,25.321,-3.545],"5.6667":[-12.304,25.328,-3.549],"5.7083":[-12.307,25.336,-3.551],"5.75":[-12.31,25.343,-3.551],"5.7917":[-12.312,25.347,-3.554],"5.8333":[-12.318,25.36,-3.556],"5.875":[-12.324,25.375,-3.556],"5.9167":[-12.328,25.385,-3.558],"5.9583":[-12.335,25.402,-3.559],"6.0":[-12.341,25.416,-3.558],"6.0417":[-12.35,25.436,-3.556],"6.0833":[-12.357,25.449,-3.556],"6.125":[-12.366,25.474,-3.556],"6.1667":[-12.379,25.499,-3.555],"6.2083":[-12.387,25.519,-3.551],"6.25":[-12.4,25.547,-3.55],"6.2917":[-12.41,25.567,-3.55],"6.3333":[-12.425,25.601,-3.546],"6.375":[-12.442,25.638,-3.54],"6.4167":[-12.452,25.661,-3.54],"6.4583":[-12.473,25.701,-3.532],"6.5":[-12.485,25.729,-3.531],"6.5417":[-12.504,25.771,-3.523],"6.5833":[-12.519,25.803,-3.52],"6.625":[-12.541,25.85,-3.513],"6.6667":[-12.564,25.901,-3.506],"6.7083":[-12.581,25.934,-3.5],"6.75":[-12.605,25.986,-3.494],"6.7917":[-12.624,26.025,-3.485],"6.8333":[-12.652,26.084,-3.478],"6.875":[-12.681,26.143,-3.47],"6.9167":[-12.701,26.187,-3.461],"6.9583":[-12.734,26.251,-3.451],"7.0":[-12.756,26.299,-3.442],"7.0417":[-12.79,26.37,-3.431],"7.0833":[-12.812,26.418,-3.424],"7.125":[-12.846,26.494,-3.411],"7.1667":[-12.886,26.571,-3.397],"7.2083":[-12.912,26.624,-3.389],"7.25":[-12.952,26.708,-3.374],"7.2917":[-12.981,26.768,-3.363],"7.3333":[-13.923,28.638,-2.93],"7.375":[-16.758,34.364,-2.181],"7.4167":[-17.978,37.113,-2.47],"7.4583":[-18.556,39.299,-3.705],"7.5":[-18.278,39.462,-3.833],"7.5417":[-17.589,39.145,-3.691],"7.5833":[-17.055,38.837,-3.627],"7.625":[-16.327,38.689,-4.007],"7.6667":[-15.992,39.622,-5.87],"7.7083":[-15.994,40.971,-8.264],"7.75":[-15.388,43.104,-11.72],"7.7917":[-14.358,44.691,-13.912],"7.8333":[-14.371,44.778,-15.912],"7.875":[-15.676,42.466,-15.828],"7.9167":[-16.698,40.425,-15.948],"7.9583":[-17.173,39.466,-15.972],"8.0":[-17.292,39.542,-16.012],"8.0417":[-17.42,39.909,-15.928],"8.0833":[-17.456,40.214,-15.844],"8.125":[-17.473,40.555,-15.841],"8.1667":[-17.487,40.706,-15.836],"8.2083":[-17.515,40.672,-15.812],"8.25":[-17.515,40.548,-15.781],"8.2917":[-17.464,40.409,-15.799],"8.3333":[-17.27,40.257,-15.803],"8.375":[-16.974,40.433,-15.698],"8.4167":[-16.415,40.834,-15.398],"8.4583":[-16.011,41.032,-15.136],"8.5":[-15.487,41.276,-14.772],"8.5417":[-15.178,41.421,-14.573],"8.5833":[-15.018,41.49,-14.44],"8.625":[-14.71,41.613,-14.103],"8.6667":[-14.481,41.723,-13.827],"8.7083":[-14.15,41.855,-13.363],"8.75":[-13.907,41.831,-12.83],"8.7917":[-13.793,41.733,-12.433],"8.8333":[-13.554,41.656,-11.841],"8.875":[-13.328,41.692,-11.479],"8.9167":[-12.866,41.854,-11.009],"8.9583":[-12.326,41.953,-10.618],"9.0":[-11.15,41.865,-9.949],"9.0417":[-9.79,41.396,-9.44],"9.0833":[-8.887,40.913,-9.274],"9.125":[-7.301,39.927,-9.426],"9.1667":[-6.843,39.625,-9.573],"9.2083":[-6.63,39.605,-9.524],"9.25":[-6.559,39.624,-9.481],"9.2917":[-6.534,39.664,-9.427],"9.3333":[-6.557,39.682,-9.408],"9.375":[-6.567,39.687,-9.398],"9.4167":[-6.553,39.672,-9.377],"9.4583":[-6.539,39.655,-9.365],"9.5":[-6.543,39.632,-9.356],"9.5417":[-6.562,39.61,-9.352],"9.5833":[-6.573,39.602,-9.354],"9.625":[-6.583,39.591,-9.363],"9.6667":[-6.591,39.587,-9.369],"9.7083":[-6.62,39.59,-9.374],"9.75":[-6.656,39.597,-9.376],"9.7917":[-6.713,39.635,-9.363],"9.8333":[-6.685,39.719,-9.314],"9.875":[-6.679,39.996,-9.067],"9.9167":[-7.089,40.846,-8.602],"9.9583":[-7.582,41.4,-8.604],"10.0":[-8.488,42.154,-8.97],"10.0417":[-9.442,42.705,-9.71],"10.0833":[-10.024,42.927,-10.392],"10.125":[-10.635,43.071,-11.313],"10.1667":[-10.833,43.126,-11.583],"10.2083":[-10.983,43.125,-11.814],"10.25":[-11.021,43.116,-11.87],"10.2917":[-11.025,43.102,-11.916],"10.3333":[-11.006,43.091,-11.926],"10.375":[-10.992,43.087,-11.918],"10.4167":[-10.966,43.08,-11.886],"10.4583":[-10.945,43.066,-11.869],"10.5":[-10.899,43.025,-11.831],"10.5417":[-10.838,42.988,-11.71],"10.5833":[-10.8,42.959,-11.636],"10.625":[-10.726,42.902,-11.531],"10.6667":[-10.65,42.899,-11.475],"10.7083":[-10.481,42.905,-11.436],"10.75":[-10.339,42.886,-11.439],"10.7917":[-10.11,42.832,-11.459],"10.8333":[-9.883,42.774,-11.48],"10.875":[-9.742,42.736,-11.521],"10.9167":[-9.553,42.662,-11.641],"10.9583":[-9.442,42.606,-11.745],"11.0":[-9.276,42.527,-11.872],"11.0417":[-9.104,42.484,-11.877],"11.0833":[-8.986,42.484,-11.859],"11.125":[-8.803,42.507,-11.863],"11.1667":[-8.622,42.531,-11.883],"11.2083":[-8.357,42.588,-11.901],"11.25":[-8.218,42.626,-11.922],"11.2917":[-8.044,42.697,-11.964],"11.3333":[-7.928,42.789,-11.962],"11.375":[-7.9,42.873,-11.934],"11.4167":[-7.933,43.026,-11.897],"11.4583":[-7.975,43.115,-11.868],"11.5":[-8.073,43.215,-11.841],"11.5417":[-8.196,43.292,-11.821],"11.5833":[-8.277,43.333,-11.809],"11.625":[-8.392,43.369,-11.81],"11.6667":[-8.462,43.37,-11.828],"11.7083":[-8.553,43.341,-11.869],"11.75":[-8.597,43.298,-11.906],"11.7917":[-8.634,43.206,-11.969],"11.8333":[-8.642,43.097,-12.032],"11.875":[-8.635,43.024,-12.077],"11.9167":[-8.595,42.905,-12.15],"11.9583":[-8.536,42.814,-12.201],"12.0":[-8.405,42.673,-12.266],"12.0417":[-8.255,42.544,-12.291],"12.0833":[-8.17,42.475,-12.271],"12.125":[-8.059,42.388,-12.193],"12.1667":[-7.993,42.339,-12.115],"12.2083":[-7.915,42.281,-11.976],"12.25":[-7.869,42.25,-11.879],"12.2917":[-7.817,42.217,-11.74],"12.3333":[-7.792,42.204,-11.657],"12.375":[-7.81,42.222,-11.532],"12.4167":[-7.885,42.28,-11.41],"12.4583":[-7.951,42.337,-11.338],"12.5":[-8.063,42.439,-11.257],"12.5417":[-8.158,42.531,-11.235],"12.5833":[-8.33,42.703,-11.229],"12.625":[-8.523,42.885,-11.232],"12.6667":[-8.655,43.003,-11.227],"12.7083":[-8.875,43.185,-11.221],"12.75":[-9.029,43.311,-11.218],"12.7917":[-9.261,43.496,-11.211],"12.8333":[-9.408,43.612,-11.203],"12.875":[-9.626,43.778,-11.179],"12.9167":[-9.768,43.882,-11.152],"12.9583":[-9.982,44.029,-11.11],"13.0":[-10.18,44.174,-11.079],"13.0417":[-10.301,44.265,-11.076],"13.0833":[-10.455,44.391,-11.11],"13.125":[-10.546,44.469,-11.15],"13.1667":[-10.672,44.585,-11.217],"13.2083":[-10.802,44.699,-11.264],"13.25":[-10.886,44.775,-11.276],"13.2917":[-11.009,44.885,-11.274],"13.3333":[-11.092,44.966,-11.266],"13.375":[-11.228,45.093,-11.256],"13.4167":[-11.339,45.201,-11.251],"13.4583":[-11.53,45.379,-11.243],"13.5":[-11.68,45.533,-11.243],"13.5417":[-11.755,45.627,-11.254],"13.5833":[-11.851,45.749,-11.271],"13.625":[-11.905,45.808,-11.278],"13.6667":[-11.982,45.855,-11.276],"13.7083":[-12.051,45.876,-11.27],"13.75":[-12.092,45.893,-11.268],"13.7917":[-12.136,45.962,-11.278],"13.8333":[-12.145,46.059,-11.292],"13.875":[-12.135,46.2,-11.343],"13.9167":[-12.109,46.252,-11.413],"13.9583":[-12.052,46.293,-11.543],"14.0":[-12.018,46.298,-11.641],"14.0417":[-12.005,46.281,-11.694],"14.0833":[-12.011,46.258,-11.735],"14.125":[-12.023,46.242,-11.735],"14.1667":[-12.057,46.223,-11.72],"14.2083":[-12.112,46.226,-11.69],"14.25":[-12.182,46.262,-11.65],"14.2917":[-12.728,46.675,-11.815],"14.3333":[-13.203,47.026,-11.991],"14.375":[-13.568,47.185,-12.117],"14.4167":[-13.722,47.127,-12.117],"14.4583":[-13.863,46.878,-12.007],"14.5":[-13.944,46.848,-11.839],"14.5417":[-13.98,46.868,-11.733],"14.5833":[-14.011,46.937,-11.675],"14.625":[-14.014,47.01,-11.693],"14.6667":[-13.965,47.058,-11.736],"14.7083":[-13.834,47.065,-11.772],"14.75":[-13.773,46.892,-11.892],"14.7917":[-13.658,46.269,-12.34],"14.8333":[-13.607,45.595,-12.668],"14.875":[-13.58,43.714,-12.873],"14.9167":[-13.6,42.32,-13.245],"14.9583":[-14.964,40.077,-13.507],"15.0":[-15.623,40.069,-15.241],"15.0417":[-15.751,40.168,-16.933],"15.0833":[-15.911,40.511,-17.943],"15.125":[-15.896,41.272,-18.357],"15.1667":[-15.846,41.497,-17.763],"15.2083":[-15.758,41.142,-17.002],"15.25":[-15.692,40.998,-17.195],"15.2917":[-15.499,41.532,-17.112],"15.3333":[-15.338,42.112,-16.938],"15.375":[-15.065,42.562,-17.46],"15.4167":[-14.841,42.629,-17.117],"15.4583":[-14.413,42.66,-15.85],"15.5":[-13.868,42.495,-14.054],"15.5417":[-13.436,42.049,-13.533],"15.5833":[-12.737,40.89,-13.874],"15.625":[-12.512,40.759,-14.237],"15.6667":[-12.237,40.523,-14.213],"15.7083":[-12.117,39.639,-13.251],"15.75":[-12.62,38.841,-13.09],"15.7917":[-13.252,38.187,-12.899],"15.8333":[-13.519,38.658,-12.27],"15.875":[-13.626,39.036,-11.879],"15.9167":[-13.57,39.214,-11.882],"15.9583":[-13.43,39.453,-12.149],"16.0":[-13.302,39.459,-12.306],"16.0417":[-13.231,39.396,-12.322],"16.0833":[-13.13,39.356,-12.271],"16.125":[-13.079,39.344,-12.22],"16.1667":[-13.078,39.337,-12.178],"16.2083":[-13.108,39.341,-12.159],"16.25":[-13.173,39.358,-12.134],"16.2917":[-13.197,39.364,-12.127]}},"treasure_kn":{"rotation":{"0.0":[-48.417,-23.713,4.638],"0.0417":[-26.1,-19.483,2.399],"0.0833":[4.861,-14.051,2.687],"0.125":[23.543,-12.362,3.366],"0.1667":[47.327,-11.357,2.152],"0.2083":[31.642,-12.552,5.201],"0.25":[-12.118,-12.92,9.45],"0.2917":[-98.707,-12.247,12.474],"0.3333":[-159.993,-12.428,12.841],"0.375":[-214.837,-12.804,12.25],"0.4167":[-255.504,-12.801,11.926],"0.4583":[-286.764,-12.672,11.86],"0.5":[-335.447,-12.56,11.663],"0.5417":[-370.981,-12.588,11.513],"0.5833":[-437.761,-12.833,11.421],"0.625":[-476.925,-12.97,11.542],"0.6667":[-526.707,-12.996,11.824],"0.7083":[-581.672,-12.805,12.098],"0.75":[-625.339,-12.571,12.161],"0.7917":[-689.478,-12.33,11.999],"0.8333":[-732.878,-12.344,11.832],"0.875":[-804.367,-12.607,11.76],"0.9167":[-848.387,-12.753,11.908],"0.9583":[-908.886,-12.743,12.206],"1.0":[-977.603,-12.472,12.34],"1.0417":[-1018.042,-12.321,12.228],"1.0833":[-1068.901,-12.299,11.943],"1.125":[-1097.418,-12.398,11.762],"1.1667":[-1149.014,-12.701,11.538],"1.2083":[-1220.079,-13.081,11.565],"1.25":[-1261.837,-14.388,9.712],"1.2917":[-1319.307,-13.801,7.829],"1.3333":[-1358.235,-12.841,4.841],"1.375":[-1408.456,-17.82,5.387],"1.4167":[-1439.334,-19.84,8.111],"1.4583":[-1494.431,-23.473,8.951],"1.5":[-1568.106,-25.955,7.056],"1.5417":[-1641.041,-24.971,8.37],"1.5833":[-1750.143,-15.043,5.958],"1.625":[-1807.114,-10.994,-0.194],"1.6667":[-1867.508,-10.997,-6.773],"1.7083":[-1927.268,-14.754,-8.305],"1.75":[-1973.087,-16.912,-5.705],"1.7917":[-2053.072,-13.441,-0.075],"1.8333":[-2103.739,-8.183,-1.637],"1.875":[-2173.888,-5.95,-8.798],"1.9167":[-2215.93,-8.344,-11.985],"1.9583":[-2278.396,-12.848,-12.134],"2.0":[-2341.158,-13.021,-8.464],"2.0417":[-2382.42,-9.687,-6.652],"2.0833":[-2459.42,-0.305,-9.768],"2.125":[-2513.099,6.423,-19.056],"2.1667":[-2552.123,-2.464,-60.285],"2.2083":[-2562.317,-20.012,-80.416],"2.25":[-2569.784,-29.538,-80.904],"2.2917":[-2579.244,-37.286,-75.535],"2.3333":[-2580.956,-38.21,-74.204],"2.375":[-2580.741,-38.599,-72.183],"2.4167":[-2579.46,-38.453,-71.386],"2.4583":[-2577.966,-38.366,-72.003],"2.5":[-2576.763,-38.27,-73.151],"2.5417":[-2576.422,-38.287,-73.85],"2.5833":[-2576.346,-38.36,-74.863],"2.625":[-2576.407,-38.362,-75.229],"2.6667":[-2576.71,-38.304,-75.359],"2.7083":[-2577.311,-38.274,-74.921],"2.75":[-2577.913,-38.101,-73.993],"2.7917":[-2577.573,-36.282,-72.985],"2.8333":[-2574.196,-32.708,-76.012],"2.875":[-2569.213,-26.091,-80.298],"2.9167":[-2568.243,-22.025,-79.277],"2.9583":[-2570.166,-16.663,-70.536],"3.0":[-2573.912,-14.223,-55.379],"3.0417":[-2571.341,-5.106,-47.643],"3.0833":[-2558.455,15.494,-36.061],"3.125":[-2548.815,29.056,-27.154],"3.1667":[-2533.901,49.485,-11.465],"3.2083":[-2502.582,65.973,20.988],"3.25":[-2470.406,67.825,54.131],"3.2917":[-2448.579,61.024,78.185],"3.3333":[-2444.56,56.61,83.987],"3.375":[-2438.824,52.327,92.049],"3.4167":[-2436.263,51.326,95.86],"3.4583":[-2434.541,50.433,98.763],"3.5":[-2433.651,50.006,100.095],"3.5417":[-2433.288,49.874,100.449],"3.5833":[-2432.673,49.753,100.99],"3.625":[-2432.296,49.707,101.279],"3.6667":[-2432.087,49.711,101.338],"3.7083":[-2432.585,49.941,100.652],"3.75":[-2433.167,50.142,99.932],"3.7917":[-2434.018,50.197,98.934],"3.8333":[-2434.584,49.967,98.309],"3.875":[-2435.454,49.361,97.396],"3.9167":[-2435.702,48.866,97.207],"3.9583":[-2434.978,48.057,98.267],"4.0":[-2433.876,47.417,99.758],"4.0417":[-2432.344,46.389,101.847],"4.0833":[-2432.112,45.377,102.266],"4.125":[-2432.538,44.712,101.772],"4.1667":[-2432.684,44.169,101.65],"4.2083":[-2432.474,43.98,101.973],"4.25":[-2432.027,43.796,102.621],"4.2917":[-2431.577,43.757,103.259],"4.3333":[-2431.348,43.823,103.571],"4.375":[-2431.072,44.06,103.936],"4.4167":[-2430.803,44.308,104.286],"4.4583":[-2430.692,44.923,104.376],"4.5":[-2431.088,45.552,103.752],"4.5417":[-2433.081,47.024,100.837],"4.5833":[-2435.532,48.345,97.36],"4.625":[-2439.95,50.181,91.313],"4.6667":[-2443.612,51.333,86.531],"4.7083":[-2445.403,51.762,84.337],"4.75":[-2447.288,52.08,82.186],"4.7917":[-2447.974,52.154,81.486],"4.8333":[-2447.894,52.276,81.756],"4.875":[-2447.48,52.307,82.474],"4.9167":[-2447.616,52.198,82.515],"4.9583":[-2449.333,51.707,80.886],"5.0":[-2452.612,50.774,77.432],"5.0417":[-2459.68,48.124,69.812],"5.0833":[-2463.62,46.19,65.511],"5.125":[-2466.58,44.529,62.3],"5.1667":[-2467.588,43.987,61.243],"5.2083":[-2467.894,43.833,60.895],"5.25":[-2468.348,43.578,60.442],"5.2917":[-2468.581,43.449,60.265],"5.3333":[-2468.682,43.412,60.156],"5.375":[-2468.29,43.674,60.214],"5.4167":[-2467.647,44.088,60.327],"5.4583":[-2465.851,45.289,60.674],"5.5":[-2463.916,46.412,61.296],"5.5417":[-2459.059,48.719,63.696],"5.5833":[-2452.261,51.137,67.94],"5.625":[-2441.821,49.675,73.621],"5.6667":[-2433.999,45.2,77.764],"5.7083":[-2430.215,42.439,80.589],"5.75":[-2426.387,37.13,83.442],"5.7917":[-2424.921,29.93,84.199],"5.8333":[-2424.261,20.081,83.788],"5.875":[-2428.056,28.682,78.522],"5.9167":[-2435.269,42.711,70.348],"5.9583":[-2453.265,75.262,51.396],"6.0":[-2433.027,109.084,71.119],"6.0417":[-2438.645,161.847,65.583],"6.0833":[-2436.908,195.674,69.072],"6.125":[-2438.757,242.436,78.986],"6.1667":[-2473.398,263.913,117.545],"6.2083":[-2509.444,265.456,155.296],"6.25":[-2471.128,264.964,119.156],"6.2917":[-2431.045,254.406,80.102],"6.3333":[-2422.928,241.581,70.861],"6.375":[-2422.242,232.018,67.242],"6.4167":[-2424.275,227.327,67.376],"6.4583":[-2427.969,226.08,70.416],"6.5":[-2429.328,226.384,71.321],"6.5417":[-2429.814,227.746,70.866],"6.5833":[-2429.505,229.432,70.38],"6.625":[-2428.349,233.053,69.5],"6.6667":[-2424.599,235.778,66.343],"6.7083":[-2419.302,236.239,61.734],"6.75":[-2413.807,233.661,56.517],"6.7917":[-2412.456,230.8,55.224],"6.8333":[-2414.242,227.735,58.043],"6.875":[-2417.876,223.57,62.763],"6.9167":[-2421.413,216.048,66.519],"6.9583":[-2427.116,184.867,70.431],"7.0":[-2433.865,159.448,68.856],"7.0417":[-2455.163,120.686,55.495],"7.0833":[-2393.552,105.373,125.299],"7.125":[-2338.777,130.436,192.299],"7.1667":[-2323.453,140.653,216.197],"7.2083":[-2321.155,146.906,225.533],"7.25":[-2324.372,154.999,215.164],"7.2917":[-2329.118,161.471,179.888],"7.3333":[-2340.207,172.805,100.575],"7.375":[-2345.468,186.555,22.166],"7.4167":[-2346.807,178.505,-15.753],"7.4583":[-2345.447,178.591,-72.873],"7.5":[-2340.02,180.037,-111.538],"7.5417":[-2332.112,181.093,-170.727],"7.5833":[-2335.902,180.954,-219.554],"7.625":[-2341.479,194.626,-305.104],"7.6667":[-2333.246,181.955,-382.04],"7.7083":[-2338.39,175.085,-425.486],"7.75":[-2346.492,177.036,-479.906],"7.7917":[-2348.447,173.41,-508.839],"7.8333":[-2353.533,175.765,-547.68],"7.875":[-2353.165,186.195,-565.305],"7.9167":[-2350.491,194.323,-580.757],"7.9583":[-2349.571,197.569,-585.177],"8.0":[-2350.461,198.302,-581.828],"8.0417":[-2354.724,196.667,-573.646],"8.0833":[-2357.394,194.741,-569.08],"8.125":[-2356.702,194.581,-570.768],"8.1667":[-2355.62,195.187,-573.68],"8.2083":[-2355.445,195.654,-575.044],"8.25":[-2355.227,196.908,-576.725],"8.2917":[-2355.042,198.585,-577.738],"8.3333":[-2354.522,201.455,-577.853],"8.375":[-2353.612,202.747,-574.891],"8.4167":[-2352.861,203.555,-569.266],"8.4583":[-2353.242,203.351,-565.583],"8.5":[-2352.997,202.806,-562.115],"8.5417":[-2350.226,202.631,-563.511],"8.5833":[-2347.775,202.292,-565.968],"8.625":[-2344.314,200.961,-570.297],"8.6667":[-2341.937,199.672,-573.795],"8.7083":[-2339.23,197.233,-578.311],"8.75":[-2338.177,194.339,-580.939],"8.7917":[-2338.087,192.137,-582.217],"8.8333":[-2339.448,189.142,-581.694],"8.875":[-2341.571,187.739,-578.546],"8.9167":[-2346.944,186.174,-568.247],"8.9583":[-2353.388,183.576,-558.167],"9.0":[-2366.235,175.012,-540.247],"9.0417":[-2378.183,160.351,-521.835],"9.0833":[-2383.674,147.675,-509.941],"9.125":[-2382.48,119.456,-483.593],"9.1667":[-2369.624,109.347,-461.76],"9.2083":[-2359.171,107.518,-447.837],"9.25":[-2355.777,107.052,-443.224],"9.2917":[-2355.459,106.97,-442.032],"9.3333":[-2356.41,106.872,-441.989],"9.375":[-2357.192,106.851,-442.301],"9.4167":[-2358.046,106.895,-442.89],"9.4583":[-2358.597,106.953,-443.427],"9.5":[-2359.284,107.02,-444.127],"9.5417":[-2359.868,107.081,-444.812],"9.5833":[-2360.248,107.092,-445.236],"9.625":[-2360.639,107.023,-445.657],"9.6667":[-2361.045,107.011,-446.091],"9.7083":[-2362.3,107.191,-447.421],"9.75":[-2363.472,107.389,-448.614],"9.7917":[-2366.674,108.43,-452.176],"9.8333":[-2368.739,110.693,-454.879],"9.875":[-2382.486,118.777,-473.103],"9.9167":[-2393.907,144.256,-497.721],"9.9583":[-2394.125,159.14,-505.45],"10.0":[-2391.282,180.242,-515.246],"10.0417":[-2384.677,200.206,-526.605],"10.0833":[-2377.427,212.231,-536.356],"10.125":[-2365.308,223.939,-551.29],"10.1667":[-2362.096,226.695,-555.705],"10.2083":[-2358.364,228.555,-560.939],"10.25":[-2357.002,228.79,-562.98],"10.2917":[-2355.875,229.066,-564.506],"10.3333":[-2355.541,229.133,-564.897],"10.375":[-2355.757,229.076,-564.57],"10.4167":[-2356.561,228.862,-563.376],"10.4583":[-2357.074,228.769,-562.516],"10.5":[-2357.913,228.362,-560.864],"10.5417":[-2358.4,225.761,-559.232],"10.5833":[-2359.309,223.623,-557.185],"10.625":[-2360.734,220.167,-553.721],"10.6667":[-2362.934,217.647,-549.793],"10.7083":[-2367.27,213.312,-541.844],"10.75":[-2370.042,210.016,-536.266],"10.7917":[-2374.427,204.373,-528.043],"10.8333":[-2379.688,197.708,-520.64],"10.875":[-2384.158,192.481,-516.057],"10.9167":[-2391.121,183.542,-510.147],"10.9583":[-2395.123,177.162,-507.048],"11.0":[-2399.055,167.615,-503.562],"11.0417":[-2401.083,157.774,-501.308],"11.0833":[-2401.483,151.636,-499.998],"11.125":[-2400.141,144.298,-497.26],"11.1667":[-2397.216,140.822,-494.415],"11.2083":[-2391.366,137.91,-489.682],"11.25":[-2388.117,137.499,-487.442],"11.2917":[-2384.485,138.999,-485.998],"11.3333":[-2380.868,142.893,-485.065],"11.375":[-2377.831,147.414,-484.132],"11.4167":[-2373.506,156.52,-483.517],"11.4583":[-2371.491,162.501,-484.013],"11.5":[-2368.953,171.6,-485.72],"11.5417":[-2367.276,180.628,-487.82],"11.5833":[-2366.633,186.549,-489.153],"11.625":[-2365.856,195.439,-491.197],"11.6667":[-2365.575,201.274,-492.566],"11.7083":[-2365.759,209.763,-494.53],"11.75":[-2366.497,215.186,-495.639],"11.7917":[-2368.645,223.092,-496.771],"11.8333":[-2371.834,230.86,-497.139],"11.875":[-2374.418,236.03,-496.91],"11.9167":[-2380.191,244.152,-494.715],"11.9583":[-2386.566,249.611,-490.805],"12.0":[-2403.049,256.901,-478.027],"12.0417":[-2433.88,261.675,-450.771],"12.0833":[-2460.668,262.943,-426.233],"12.125":[-2498.337,262.434,-391.916],"12.1667":[-2515.669,261.258,-376.807],"12.2083":[-2533.278,259.291,-362.474],"12.25":[-2542.07,258.054,-355.802],"12.2917":[-2553.238,256.357,-347.674],"12.3333":[-2560.177,255.373,-342.651],"12.375":[-2572.483,254.682,-333.055],"12.4167":[-2586.37,254.291,-321.577],"12.4583":[-2595.332,253.908,-313.988],"12.5":[-2606.452,253.152,-304.47],"12.5417":[-2613.258,252.789,-298.289],"12.5833":[-2623.267,252.26,-288.766],"12.625":[-2632.158,251.417,-280.248],"12.6667":[-2636.941,250.613,-275.858],"12.7083":[-2643.079,249.248,-270.333],"12.75":[-2646.589,248.283,-267.231],"12.7917":[-2651.045,246.815,-263.405],"12.8333":[-2653.52,245.86,-261.373],"12.875":[-2656.597,244.484,-259.015],"12.9167":[-2658.312,243.589,-257.812],"12.9583":[-2660.481,242.357,-256.441],"13.0":[-2662.257,241.35,-255.471],"13.0417":[-2663.272,240.857,-254.983],"13.0833":[-2664.393,240.618,-254.671],"13.125":[-2664.929,240.734,-254.688],"13.1667":[-2665.68,240.964,-254.718],"13.2083":[-2666.68,240.82,-254.384],"13.25":[-2667.554,240.386,-253.851],"13.2917":[-2668.992,239.403,-252.804],"13.3333":[-2669.984,238.609,-252.029],"13.375":[-2671.417,237.366,-250.923],"13.4167":[-2672.409,236.399,-250.177],"13.4583":[-2673.871,234.764,-249.047],"13.5":[-2674.919,233.6,-248.157],"13.5417":[-2675.393,233.099,-247.644],"13.5833":[-2675.924,232.61,-247.01],"13.625":[-2676.216,232.435,-246.746],"13.6667":[-2676.631,232.354,-246.654],"13.7083":[-2676.992,232.461,-246.743],"13.75":[-2677.148,232.605,-246.794],"13.7917":[-2677.175,232.887,-246.688],"13.8333":[-2676.979,233.179,-246.351],"13.875":[-2676.128,233.959,-246.125],"13.9167":[-2674.903,234.849,-246.575],"13.9583":[-2672.497,236.442,-247.796],"14.0":[-2670.63,237.717,-249.025],"14.0417":[-2669.632,238.441,-249.851],"14.0833":[-2668.833,239.217,-250.663],"14.125":[-2668.696,239.568,-250.944],"14.1667":[-2668.897,239.946,-251.101],"14.2083":[-2669.62,240.198,-250.875],"14.25":[-2670.895,240.149,-250.141],"14.2917":[-2671.413,240.456,-250.803],"14.3333":[-2671.152,240.416,-251.81],"14.375":[-2670.719,238.36,-252.436],"14.4167":[-2670.425,236.948,-252.719],"14.4583":[-2670.255,235.356,-252.737],"14.5":[-2671.552,235.385,-250.905],"14.5417":[-2672.682,235.679,-249.433],"14.5833":[-2673.91,235.975,-248.26],"14.625":[-2674.603,236.183,-247.868],"14.6667":[-2676.518,236.294,-246.041],"14.7083":[-2678.693,235.933,-243.545],"14.75":[-2683.413,235.945,-238.168],"14.7917":[-2698.896,237.043,-221.16],"14.8333":[-2711.337,234.378,-206.973],"14.875":[-2720.682,214.452,-192.815],"14.9167":[-2717.232,197.068,-187.476],"14.9583":[-2694.7,192.101,-178.333],"15.0":[-2663.265,189.706,-177.661],"15.0417":[-2652.098,187.775,-179.701],"15.0833":[-2686.49,190.542,-174.263],"15.125":[-2740.353,191.546,-170.135],"15.1667":[-2830.375,193.086,-167.79],"15.2083":[-2900.633,193.785,-166.866],"15.25":[-2927.276,193.697,-167.082],"15.2917":[-2970.755,192.816,-167.064],"15.3333":[-3008.973,192.088,-167.682],"15.375":[-3072.048,192,-169.393],"15.4167":[-3116.048,193.259,-171.049],"15.4583":[-3182.275,192.627,-170.332],"15.5":[-3244.684,186.336,-172.734],"15.5417":[-3281.57,185.086,-172.717],"15.5833":[-3328.697,181.215,-167.864],"15.625":[-3357.482,177.619,-170.5],"15.6667":[-3403.427,180.531,-174.544],"15.7083":[-3452.616,189.544,-167.324],"15.75":[-3472.688,198.27,-171.302],"15.7917":[-3482.925,209.579,-175.569],"15.8333":[-3480.5,208.75,-174.4],"15.875":[-3480.11,207.235,-174.644],"15.9167":[-3479.916,206.395,-175.7],"15.9583":[-3479.503,206.499,-175.101],"16.0":[-3479.661,207.288,-174.736],"16.0417":[-3479.884,207.712,-174.627],"16.0833":[-3479.667,207.169,-174.207],"16.125":[-3479.469,206.624,-173.924],"16.1667":[-3479.42,206.137,-173.694],"16.2083":[-3479.476,205.9,-173.613],"16.25":[-3479.588,205.579,-173.524],"16.2917":[-3479.616,205.462,-173.486]},"position":{"0.0":[-5.981,55.381,-12.65],"0.0417":[-6.319,54.494,-13.831],"0.0833":[-6.988,53.275,-14.836],"0.125":[-7.343,53.08,-15.467],"0.1667":[-7.474,53.569,-17.594],"0.2083":[-7.494,54.139,-18.482],"0.25":[-7.371,54.949,-18.758],"0.2917":[-6.912,56.323,-19.76],"0.3333":[-6.588,57.222,-19.252],"0.375":[-6.614,57.145,-18.653],"0.4167":[-6.819,56.51,-17.877],"0.4583":[-6.98,56.208,-17.534],"0.5":[-7.13,56.021,-18.079],"0.5417":[-7.12,55.927,-18.742],"0.5833":[-6.828,56.23,-19.434],"0.625":[-6.632,56.67,-19.546],"0.6667":[-6.558,57.019,-19.005],"0.7083":[-6.643,57.158,-18.161],"0.75":[-6.764,56.865,-17.918],"0.7917":[-6.981,56.291,-17.884],"0.8333":[-6.985,56.107,-18.294],"0.875":[-6.662,56.453,-19.004],"0.9167":[-6.532,56.94,-19.105],"0.9583":[-6.715,57.169,-18.585],"1.0":[-6.866,57.177,-18.711],"1.0417":[-7.059,56.997,-18.613],"1.0833":[-7.272,57.123,-18.261],"1.125":[-7.264,56.841,-18.091],"1.1667":[-7.041,56.146,-18.177],"1.2083":[-6.636,55.946,-18.292],"1.25":[-6.737,55.426,-18.026],"1.2917":[-7.364,53.764,-17.975],"1.3333":[-7.69,53.477,-18.435],"1.375":[-7.912,55.147,-18.751],"1.4167":[-7.863,57.327,-18.909],"1.4583":[-8.167,59.536,-18.525],"1.5":[-7.929,59.102,-19.083],"1.5417":[-5.5,59.99,-23.119],"1.5833":[-3.55,68.611,-25.263],"1.625":[-4.048,71.706,-22.249],"1.6667":[-3.943,71.614,-19.07],"1.7083":[-2.653,69.618,-18.93],"1.75":[-0.954,68.829,-20.677],"1.7917":[1.209,70.098,-23.806],"1.8333":[1.551,72.016,-23.384],"1.875":[1.426,71.724,-19.404],"1.9167":[1.641,69.124,-17.215],"1.9583":[2.937,62.787,-16.635],"2.0":[4.396,57.429,-19.408],"2.0417":[5.076,55.61,-21.465],"2.0833":[4.56,55.008,-21.339],"2.125":[2.41,54.737,-17.721],"2.1667":[-2.734,54.496,-13.748],"2.2083":[-5.497,55.654,-11.887],"2.25":[-5.936,55.721,-11.409],"2.2917":[-6.086,55.531,-11.181],"2.3333":[-6.227,55.378,-11.156],"2.375":[-6.324,55.236,-11.218],"2.4167":[-6.316,55.192,-11.298],"2.4583":[-6.232,55.167,-11.411],"2.5":[-6.146,55.167,-11.502],"2.5417":[-6.132,55.183,-11.521],"2.5833":[-6.142,55.216,-11.512],"2.625":[-6.152,55.225,-11.502],"2.6667":[-6.178,55.218,-11.471],"2.7083":[-6.197,55.208,-11.439],"2.75":[-6.199,55.21,-11.418],"2.7917":[-6.203,55.287,-11.377],"2.8333":[-6.252,55.325,-11.379],"2.875":[-6.329,55.382,-11.401],"2.9167":[-6.289,55.451,-11.365],"2.9583":[-5.945,55.653,-11.191],"3.0":[-5.089,55.97,-10.902],"3.0417":[-4.259,56.627,-10.777],"3.0833":[-2.722,57.957,-11.14],"3.125":[-1.712,58.617,-11.512],"3.1667":[-0.414,59.227,-11.911],"3.2083":[0.505,59.576,-12.269],"3.25":[0.898,59.743,-12.461],"3.2917":[1.235,60.182,-12.55],"3.3333":[1.369,60.541,-12.518],"3.375":[1.465,60.883,-12.502],"3.4167":[1.469,61.028,-12.502],"3.4583":[1.506,61.138,-12.508],"3.5":[1.502,61.191,-12.53],"3.5417":[1.482,61.209,-12.549],"3.5833":[1.453,61.213,-12.565],"3.625":[1.433,61.216,-12.574],"3.6667":[1.416,61.221,-12.584],"3.7083":[1.423,61.235,-12.586],"3.75":[1.435,61.248,-12.584],"3.7917":[1.455,61.271,-12.597],"3.8333":[1.465,61.288,-12.624],"3.875":[1.48,61.314,-12.678],"3.9167":[1.489,61.34,-12.725],"3.9583":[1.5,61.413,-12.809],"4.0":[1.504,61.478,-12.879],"4.0417":[1.509,61.579,-12.981],"4.0833":[1.512,61.663,-13.075],"4.125":[1.514,61.711,-13.133],"4.1667":[1.511,61.745,-13.178],"4.2083":[1.509,61.761,-13.197],"4.25":[1.501,61.768,-13.213],"4.2917":[1.496,61.764,-13.216],"4.3333":[1.493,61.757,-13.21],"4.375":[1.488,61.719,-13.185],"4.4167":[1.486,61.678,-13.153],"4.4583":[1.486,61.605,-13.087],"4.5":[1.49,61.562,-13.03],"4.5417":[1.503,61.52,-12.915],"4.5833":[1.514,61.504,-12.811],"4.625":[1.525,61.476,-12.644],"4.6667":[1.53,61.408,-12.5],"4.7083":[1.535,61.324,-12.414],"4.75":[1.545,61.192,-12.316],"4.7917":[1.55,61.142,-12.28],"4.8333":[1.554,61.083,-12.234],"4.875":[1.56,61.039,-12.207],"4.9167":[1.567,61.017,-12.205],"4.9583":[1.586,60.994,-12.237],"5.0":[1.614,60.994,-12.311],"5.0417":[1.675,61.025,-12.498],"5.0833":[1.711,61.05,-12.605],"5.125":[1.736,61.072,-12.661],"5.1667":[1.74,61.085,-12.637],"5.2083":[1.738,61.087,-12.618],"5.25":[1.74,61.085,-12.596],"5.2917":[1.744,61.081,-12.578],"5.3333":[1.744,61.072,-12.553],"5.375":[1.72,61.055,-12.54],"5.4167":[1.685,61.039,-12.543],"5.4583":[1.585,61.02,-12.557],"5.5":[1.494,60.984,-12.585],"5.5417":[1.309,60.876,-12.653],"5.5833":[1.102,60.704,-12.746],"5.625":[0.891,59.362,-13.61],"5.6667":[0.889,57.561,-14.818],"5.7083":[1.02,56.501,-15.553],"5.75":[1.238,55.137,-16.57],"5.7917":[1.35,54.218,-17.226],"5.8333":[1.511,53.323,-17.957],"5.875":[1.733,55.022,-18.056],"5.9167":[1.83,57.325,-17.644],"5.9583":[1.41,60.23,-15.869],"6.0":[1.097,61.062,-13.707],"6.0417":[1.619,60.04,-11.11],"6.0833":[2.203,58.355,-10.745],"6.125":[2.532,56.069,-12.086],"6.1667":[2.404,55.369,-13.216],"6.2083":[2.351,55.078,-13.372],"6.25":[2.318,54.488,-13.277],"6.2917":[2.31,53.994,-12.847],"6.3333":[2.3,53.352,-12.265],"6.375":[2.263,52.651,-11.905],"6.4167":[2.193,52.197,-11.94],"6.4583":[2.045,52.212,-12.149],"6.5":[2.011,52.374,-12.218],"6.5417":[2.048,52.743,-12.201],"6.5833":[2.082,52.901,-12.163],"6.625":[2.147,53.033,-12.076],"6.6667":[2.191,53.055,-11.985],"6.7083":[2.196,52.946,-11.92],"6.75":[2.18,52.773,-11.862],"6.7917":[2.159,52.664,-11.828],"6.8333":[2.152,52.547,-11.745],"6.875":[2.236,52.502,-11.651],"6.9167":[2.338,52.596,-11.488],"6.9583":[2.451,53.341,-11.328],"7.0":[2.79,54.295,-11.932],"7.0417":[3.623,55.429,-14.149],"7.0833":[4.402,55.485,-15.315],"7.125":[6.081,55.247,-16.522],"7.1667":[7.717,54.786,-17.753],"7.2083":[8.813,54.501,-18.306],"7.25":[9.484,55.064,-18.779],"7.2917":[8.274,56.185,-18.927],"7.3333":[5.686,55.615,-19.078],"7.375":[6.271,55.992,-19.433],"7.4167":[7.266,58.076,-19.523],"7.4583":[7.733,62.859,-19.667],"7.5":[6.344,66.31,-19.953],"7.5417":[1.716,69.307,-20.329],"7.5833":[-2.282,68.664,-19.993],"7.625":[-4.611,63.185,-19.409],"7.6667":[-2.001,60.532,-19.69],"7.7083":[-0.992,61.095,-19.229],"7.75":[-2.421,62.225,-18.498],"7.7917":[-4.364,62.271,-18.273],"7.8333":[-7.736,60.733,-17.695],"7.875":[-9.492,59.025,-17.504],"7.9167":[-10.96,57.036,-17.528],"7.9583":[-11.546,56.096,-17.497],"8.0":[-11.523,56.217,-17.485],"8.0417":[-11.417,56.653,-17.288],"8.0833":[-11.337,56.981,-17.151],"8.125":[-11.422,57.309,-17.179],"8.1667":[-11.538,57.446,-17.201],"8.2083":[-11.618,57.414,-17.171],"8.25":[-11.669,57.299,-17.116],"8.2917":[-11.63,57.177,-17.096],"8.3333":[-11.377,57.054,-17.039],"8.375":[-10.887,57.233,-16.93],"8.4167":[-10.018,57.606,-16.634],"8.4583":[-9.465,57.839,-16.351],"8.5":[-8.788,58.132,-15.989],"8.5417":[-8.495,58.323,-15.883],"8.5833":[-8.413,58.41,-15.847],"8.625":[-8.293,58.514,-15.687],"8.6667":[-8.237,58.561,-15.551],"8.7083":[-8.15,58.581,-15.273],"8.75":[-8.064,58.52,-14.863],"8.7917":[-8.032,58.43,-14.522],"8.8333":[-7.866,58.368,-13.94],"8.875":[-7.572,58.46,-13.532],"8.9167":[-6.749,58.773,-12.889],"8.9583":[-5.868,58.958,-12.289],"9.0":[-4.066,58.879,-11.21],"9.0417":[-1.984,58.139,-10.364],"9.0833":[-0.652,57.322,-10.112],"9.125":[1.409,55.615,-10.499],"9.1667":[1.943,55.001,-10.86],"9.2083":[2.166,54.823,-10.943],"9.25":[2.242,54.788,-10.936],"9.2917":[2.283,54.786,-10.884],"9.3333":[2.284,54.76,-10.85],"9.375":[2.288,54.743,-10.829],"9.4167":[2.312,54.714,-10.798],"9.4583":[2.33,54.695,-10.779],"9.5":[2.33,54.673,-10.762],"9.5417":[2.312,54.656,-10.752],"9.5833":[2.302,54.65,-10.748],"9.625":[2.294,54.643,-10.75],"9.6667":[2.289,54.641,-10.75],"9.7083":[2.265,54.646,-10.741],"9.75":[2.237,54.651,-10.73],"9.7917":[2.192,54.692,-10.686],"9.8333":[2.157,54.771,-10.659],"9.875":[2.14,55.193,-10.195],"9.9167":[1.553,56.526,-9.198],"9.9583":[0.881,57.297,-9.013],"10.0":[-0.324,58.303,-9.225],"10.0417":[-1.601,59.051,-9.936],"10.0833":[-2.387,59.364,-10.646],"10.125":[-3.206,59.555,-11.611],"10.1667":[-3.463,59.621,-11.867],"10.2083":[-3.71,59.669,-12.118],"10.25":[-3.791,59.678,-12.195],"10.2917":[-3.822,59.676,-12.255],"10.3333":[-3.807,59.666,-12.268],"10.375":[-3.786,59.66,-12.258],"10.4167":[-3.736,59.642,-12.216],"10.4583":[-3.695,59.619,-12.192],"10.5":[-3.606,59.558,-12.15],"10.5417":[-3.499,59.49,-12.107],"10.5833":[-3.412,59.429,-12.086],"10.625":[-3.273,59.308,-12.076],"10.6667":[-3.14,59.241,-12.061],"10.7083":[-2.859,59.115,-12.064],"10.75":[-2.636,58.996,-12.09],"10.7917":[-2.287,58.798,-12.12],"10.8333":[-1.95,58.631,-12.096],"10.875":[-1.737,58.533,-12.06],"10.9167":[-1.432,58.363,-12.042],"10.9583":[-1.245,58.229,-12.079],"11.0":[-0.975,58.028,-12.191],"11.0417":[-0.718,57.889,-12.293],"11.0833":[-0.559,57.837,-12.384],"11.125":[-0.346,57.783,-12.599],"11.1667":[-0.199,57.772,-12.777],"11.2083":[-0.006,57.777,-13.031],"11.25":[0.091,57.789,-13.164],"11.2917":[0.217,57.836,-13.313],"11.3333":[0.306,57.865,-13.404],"11.375":[0.332,57.85,-13.448],"11.4167":[0.329,57.8,-13.485],"11.4583":[0.32,57.772,-13.462],"11.5":[0.285,57.723,-13.396],"11.5417":[0.249,57.679,-13.27],"11.5833":[0.237,57.656,-13.151],"11.625":[0.222,57.619,-12.959],"11.6667":[0.214,57.597,-12.824],"11.7083":[0.204,57.575,-12.606],"11.75":[0.199,57.569,-12.451],"11.7917":[0.192,57.572,-12.2],"11.8333":[0.17,57.593,-11.938],"11.875":[0.14,57.619,-11.77],"11.9167":[0.08,57.665,-11.512],"11.9583":[0.036,57.695,-11.343],"12.0":[-0.027,57.744,-11.118],"12.0417":[-0.088,57.805,-10.942],"12.0833":[-0.129,57.858,-10.848],"12.125":[-0.196,57.945,-10.707],"12.1667":[-0.243,58.008,-10.613],"12.2083":[-0.321,58.107,-10.483],"12.25":[-0.371,58.175,-10.41],"12.2917":[-0.449,58.279,-10.332],"12.3333":[-0.499,58.352,-10.306],"12.375":[-0.592,58.494,-10.317],"12.4167":[-0.711,58.658,-10.365],"12.4583":[-0.797,58.772,-10.407],"12.5":[-0.927,58.937,-10.477],"12.5417":[-1.017,59.053,-10.544],"12.5833":[-1.162,59.244,-10.664],"12.625":[-1.328,59.439,-10.785],"12.6667":[-1.457,59.567,-10.854],"12.7083":[-1.676,59.762,-10.957],"12.75":[-1.832,59.896,-11.023],"12.7917":[-2.071,60.091,-11.114],"12.8333":[-2.228,60.214,-11.166],"12.875":[-2.465,60.389,-11.224],"12.9167":[-2.623,60.499,-11.249],"12.9583":[-2.866,60.655,-11.276],"13.0":[-3.094,60.809,-11.301],"13.0417":[-3.235,60.906,-11.326],"13.0833":[-3.423,61.044,-11.374],"13.125":[-3.537,61.132,-11.41],"13.1667":[-3.696,61.261,-11.467],"13.2083":[-3.854,61.385,-11.523],"13.25":[-3.951,61.463,-11.558],"13.2917":[-4.088,61.573,-11.606],"13.3333":[-4.178,61.651,-11.639],"13.375":[-4.327,61.774,-11.69],"13.4167":[-4.448,61.877,-11.732],"13.4583":[-4.655,62.045,-11.802],"13.5":[-4.813,62.191,-11.858],"13.5417":[-4.887,62.279,-11.892],"13.5833":[-4.978,62.394,-11.932],"13.625":[-5.033,62.452,-11.946],"13.6667":[-5.124,62.502,-11.948],"13.7083":[-5.212,62.531,-11.935],"13.75":[-5.261,62.553,-11.926],"13.7917":[-5.3,62.623,-11.921],"13.8333":[-5.284,62.715,-11.922],"13.875":[-5.224,62.847,-11.938],"13.9167":[-5.164,62.895,-11.967],"13.9583":[-5.055,62.932,-12.022],"14.0":[-4.995,62.937,-12.058],"14.0417":[-4.976,62.923,-12.075],"14.0833":[-4.984,62.905,-12.076],"14.125":[-5.002,62.894,-12.059],"14.1667":[-5.052,62.883,-12.025],"14.2083":[-5.127,62.896,-11.984],"14.25":[-5.22,62.937,-11.946],"14.2917":[-5.826,63.371,-12.098],"14.3333":[-6.343,63.733,-12.278],"14.375":[-6.73,63.882,-12.505],"14.4167":[-6.892,63.814,-12.577],"14.4583":[-7.039,63.551,-12.547],"14.5":[-7.1,63.51,-12.378],"14.5417":[-7.121,63.525,-12.258],"14.5833":[-7.158,63.595,-12.185],"14.625":[-7.176,63.674,-12.192],"14.6667":[-7.132,63.721,-12.225],"14.7083":[-6.988,63.719,-12.272],"14.75":[-6.88,63.535,-12.368],"14.7917":[-6.616,62.882,-12.622],"14.8333":[-6.412,62.148,-12.874],"14.875":[-5.95,59.426,-13.485],"14.9167":[-5.805,56.948,-14.392],"14.9583":[-6.817,54.479,-15.698],"15.0":[-7.506,54.313,-17.735],"15.0417":[-7.645,54.723,-19.786],"15.0833":[-7.567,55.577,-20.57],"15.125":[-7.277,56.423,-21.413],"15.1667":[-6.652,57.659,-21.917],"15.2083":[-6.453,57.915,-21.01],"15.25":[-6.506,57.387,-20.717],"15.2917":[-6.575,56.983,-19.968],"15.3333":[-6.577,57.126,-19.844],"15.375":[-6.295,57.52,-20.483],"15.4167":[-5.858,57.854,-20.617],"15.4583":[-5.157,58.754,-20.113],"15.5":[-4.784,59.21,-18.488],"15.5417":[-4.391,59.162,-17.391],"15.5833":[-3.511,58.453,-16.439],"15.625":[-3.264,58.097,-15.968],"15.6667":[-3.23,57.281,-15.285],"15.7083":[-3.744,56.223,-14.473],"15.75":[-4.75,55.628,-13.36],"15.7917":[-6.086,54.834,-12.311],"15.8333":[-6.285,55.111,-11.901],"15.875":[-6.369,55.44,-11.623],"15.9167":[-6.348,55.614,-11.651],"15.9583":[-6.175,55.811,-11.933],"16.0":[-6.039,55.811,-12.069],"16.0417":[-5.969,55.746,-12.07],"16.0833":[-5.844,55.695,-12.037],"16.125":[-5.776,55.675,-12.003],"16.1667":[-5.763,55.663,-11.972],"16.2083":[-5.789,55.665,-11.956],"16.25":[-5.851,55.68,-11.933],"16.2917":[-5.874,55.685,-11.926]}},"lefthand_1":{"rotation":{"2.6667":[0,0,0],"3.0417":[0,0,0],"3.375":[11.125,-5.7358,26.9409],"5.5417":[11.125,-5.7358,26.9409],"5.7083":[11.125,-5.7358,26.9409],"7.0":[11.125,-5.7358,26.9409],"7.2083":[34.3017,-2.2178,10.4172],"7.2917":[20,0,0],"7.4167":[-20,0,0],"7.5833":[-20,0,0],"7.875":[0,0,0],"11.0":[0,0,0]},"position":{"0.0":[0,1.5,1],"2.6667":[0,1.5,1],"3.0417":[0,1.5,1],"3.375":[-0.2509,4.0244,0.6621],"5.5417":[-0.2509,4.0244,0.6621],"5.7083":[-0.2509,3.8079,-0.3142],"7.0":[-0.2509,3.8079,-0.3142],"7.2083":[-0.2204,3.707,-1.5598],"7.2917":[-0.25,3.635,-1.9055],"7.5833":[0,1.5,1],"7.875":[0,1.5,1],"11.0":[0,1.5,1],"11.375":[-1,3.5,1.5],"11.7917":[0,5.5,3.25],"12.0417":[0,2.5,2.25],"12.2917":[0,2,1.25],"12.5417":[0,1.5,1],"13.4583":[0,1.5,-1],"13.7917":[0,1.5,1],"14.0":[0,2,0],"14.7917":[0,2,0],"15.0":[0,1.5,1]},"scale":{"0.0":[1,1.5,1],"2.6667":[1,1.5,1],"3.0417":[1,1.5,1],"7.2917":[1,1.5,1],"7.5833":[1,1.5,1],"7.875":[1,1.5,1],"11.0":[1,1.5,1]}},"righthand_1":{"rotation":{"0.0":[-12.5,0,0],"0.2083":[32.5,0,0],"0.2917":[-12.5,0,0]},"position":{"0.0":[0,1.0118,0.8918],"0.2083":[0,2.7762,0.9505],"0.25":[0,2.4944,1.4143],"0.2917":[-0.31,2.8,1.19],"0.3333":[-0.3493,3.7228,0.212],"0.375":[-0.8233,3.3942,-0.6304],"0.4167":[-0.6053,2.0232,-0.933],"0.5":[-0.328,1.2613,0.1822],"0.5417":[-0.264,1.7758,1.3186],"0.625":[-0.26,3.3527,1.1565],"0.7083":[-1.01,3.0341,-0.391],"0.75":[-0.76,2.512,-0.8228],"0.7917":[-0.76,1.0732,-0.1143],"0.875":[-0.76,2.318,1.191],"0.9167":[-0.76,3.4586,0.6742],"1.0":[-0.76,2.9983,-0.7127],"1.0417":[-0.51,1.7255,-0.7365],"1.0833":[-0.51,1.4053,0.7244],"1.1667":[-0.01,2.034,1.3705],"1.2083":[-0.51,3.4127,0.9083],"1.25":[-0.51,3.3824,-0.1204],"1.2917":[-0.78,2.24,-0.6282],"1.3333":[-0.5527,1.6715,-0.4988],"1.375":[-0.606,1.2636,0.1781],"1.4583":[-0.51,2.942,1.8333],"7.4583":[-0.51,2.942,1.8333],"7.5833":[0,1.0118,0.8918],"14.9583":[0,1.0118,0.8918],"15.1667":[-0.5,2.4744,1.2147],"15.2083":[-1,3.391,-0.6344],"15.25":[-1,2.08,-0.7182],"15.2917":[-1,1.5233,-0.2806],"15.375":[-1,1.9316,1.3509],"15.4583":[-1,3.2085,1.3806],"15.5":[-1,3.5888,-0.3285],"15.5833":[-1,2.4779,-1.0887],"15.6667":[-1,1.2331,-0.0861],"15.7917":[0,1.0118,0.8918]},"scale":[1,1.5,1]},"camera":{"rotation":{"0.0":[0.012,-0.014,-0.004],"0.0417":[0.076,-0.005,-0.004],"0.0833":[0.193,0.02,-0.004],"0.125":[0.236,0.038,-0.004],"0.1667":[0.193,0.063,-0.004],"0.2083":[0.119,0.08,-0.004],"0.25":[0.076,0.072,-0.004],"0.2917":[0.012,-0.008,-0.004],"0.3333":[0.012,-0.058,-0.004],"0.375":[0.076,-0.114,-0.004],"0.4167":[0.15,-0.089,-0.004],"0.4583":[0.193,-0.027,-0.004],"0.5":[0.161,0.048,-0.004],"0.5417":[0.101,0.081,-0.004],"0.5833":[0.012,0.038,-0.004],"0.625":[-0.024,-0.005,-0.004],"0.6667":[0.012,-0.076,-0.004],"0.7083":[0.074,-0.119,-0.004],"0.75":[0.11,-0.098,-0.004],"0.7917":[0.17,-0.033,-0.004],"0.8333":[0.159,0.01,-0.004],"0.875":[0.085,0.067,-0.004],"0.9167":[0.042,0.067,-0.004],"0.9583":[-0.033,0.003,-0.004],"1.0":[-0.011,-0.091,-0.004],"1.0417":[0.058,-0.127,-0.004],"1.0833":[0.182,-0.069,-0.004],"1.125":[0.227,-0.019,-0.004],"1.1667":[0.174,0.052,-0.004],"1.2083":[0.085,0.052,-0.004],"1.25":[0.04,0.016,-0.004],"1.2917":[0.098,-0.104,-0.004],"1.3333":[0.156,-0.116,-0.004],"1.375":[0.213,-0.069,-0.004],"1.4167":[0.19,-0.037,-0.004],"1.4583":[-0.234,-0.032,-0.001],"1.5":[-1.562,-0.193,0.025],"1.5417":[-2.592,-0.327,0.047],"1.5833":[-4.181,-0.533,0.082],"1.625":[-5.238,-0.691,0.105],"1.6667":[-6.743,-0.958,0.137],"1.7083":[-7.824,-1.244,0.165],"1.75":[-8.294,-1.442,0.186],"1.7917":[-8.59,-1.725,0.202],"1.8333":[-8.405,-1.888,0.198],"1.875":[-7.631,-2.108,0.178],"1.9167":[-6.849,-2.251,0.154],"1.9583":[-5.356,-2.443,0.109],"2.0":[-3.52,-2.57,0.059],"2.0417":[-2.295,-2.634,0.032],"2.0833":[-0.529,-2.712,-0.001],"2.125":[0.178,-2.598,-0.004],"2.1667":[0.383,-1.592,-0.004],"2.2083":[0.181,-0.592,-0.004],"2.25":[0,-0.02,-0.004],"2.2917":[-0.145,0.408,-0.004],"2.3333":[-0.272,0.539,-0.004],"2.375":[-0.5,0.577,-0.004],"2.4167":[-0.569,0.501,-0.004],"2.4583":[-0.569,0.306,-0.004],"2.5":[-0.386,0.133,-0.004],"2.5417":[-0.281,0.148,-0.004],"2.5833":[-0.133,0.206,-0.004],"2.625":[-0.072,0.276,-0.004],"2.6667":[-0.024,0.396,-0.004],"2.7083":[-0.059,0.51,-0.004],"2.75":[-0.098,0.567,-0.004],"2.7917":[-0.155,0.574,-0.004],"2.8333":[-0.19,0.561,-0.004],"2.875":[-0.207,0.516,-0.004],"2.9167":[-0.204,0.452,-0.004],"2.9583":[-0.19,0.318,-0.004],"3.0":[-0.166,0.167,-0.004],"3.0417":[-0.147,0.06,-0.004],"3.0833":[-0.119,-0.101,-0.004],"3.125":[-0.099,-0.204,-0.004],"3.1667":[-0.078,-0.369,-0.004],"3.2083":[-0.064,-0.524,-0.004],"3.25":[-0.061,-0.623,-0.004],"3.2917":[-0.11,-0.756,-0.004],"3.3333":[-0.159,-0.8,-0.004],"3.375":[-0.247,-0.818,-0.004],"3.4167":[-0.31,-0.825,-0.004],"3.4583":[-0.394,-0.825,-0.004],"3.5":[-0.443,-0.823,-0.004],"3.5417":[-0.471,-0.809,-0.004],"3.5833":[-0.555,-0.745,-0.004],"3.625":[-0.587,-0.688,-0.004],"3.6667":[-0.564,-0.581,-0.004],"3.7083":[-0.441,-0.498,-0.004],"3.75":[-0.278,-0.473,-0.004],"3.7917":[0.101,-0.435,-0.004],"3.8333":[0.433,-0.401,-0.004],"3.875":[1.021,-0.346,-0.003],"3.9167":[1.465,-0.298,-0.002],"3.9583":[2.222,-0.195,0.002],"4.0":[2.82,-0.103,0.006],"4.0417":[3.662,0.04,0.015],"4.0833":[4.405,0.192,0.028],"4.125":[4.841,0.293,0.039],"4.1667":[5.282,0.412,0.052],"4.2083":[5.416,0.471,0.06],"4.25":[5.471,0.53,0.07],"4.2917":[5.471,0.578,0.076],"4.3333":[5.471,0.605,0.079],"4.375":[5.455,0.643,0.082],"4.4167":[5.434,0.66,0.084],"4.4583":[5.39,0.675,0.085],"4.5":[5.324,0.672,0.085],"4.5417":[4.949,0.612,0.073],"4.5833":[4.559,0.545,0.06],"4.625":[3.861,0.426,0.039],"4.6667":[3.172,0.312,0.02],"4.7083":[2.766,0.251,0.012],"4.75":[2.126,0.145,0.004],"4.7917":[1.682,0.076,0],"4.8333":[1.054,-0.001,-0.004],"4.875":[0.525,-0.018,-0.004],"4.9167":[0.256,-0.008,-0.004],"4.9583":[-0.002,0.086,-0.004],"5.0":[-0.08,0.35,-0.004],"5.0417":[-0.1,0.877,-0.004],"5.0833":[-0.072,1.013,-0.004],"5.125":[0.01,1.056,-0.004],"5.1667":[0.072,1.044,-0.004],"5.2083":[0.104,1.03,-0.004],"5.25":[0.104,1.009,-0.004],"5.2917":[0.104,0.994,-0.004],"5.3333":[0.088,0.966,-0.004],"5.375":[0.078,0.923,-0.004],"5.4167":[0.056,0.858,-0.004],"5.4583":[0.034,0.74,-0.004],"5.5":[0.04,0.678,-0.004],"5.5417":[0.083,0.599,-0.004],"5.5833":[0.126,0.565,-0.004],"5.625":[0.211,0.526,-0.004],"5.6667":[0.309,0.486,-0.004],"5.7083":[0.378,0.462,-0.004],"5.75":[0.449,0.429,-0.004],"5.7917":[0.485,0.409,-0.004],"5.8333":[0.493,0.369,-0.004],"5.875":[0.449,0.335,-0.004],"5.9167":[0.387,0.308,-0.004],"5.9583":[0.29,0.269,-0.004],"6.0":[0.22,0.244,-0.004],"6.0417":[0.122,0.199,-0.004],"6.0833":[0.08,0.165,-0.004],"6.125":[0.024,0.096,-0.004],"6.1667":[-0.004,0.027,-0.004],"6.2083":[-0.006,-0.013,-0.004],"6.25":[0.023,-0.063,-0.004],"6.2917":[0.068,-0.099,-0.004],"6.3333":[0.171,-0.167,-0.004],"6.375":[0.377,-0.242,-0.004],"6.4167":[0.591,-0.292,-0.004],"6.4583":[0.885,-0.362,-0.005],"6.5":[0.989,-0.417,-0.006],"6.5417":[0.897,-0.532,-0.005],"6.5833":[0.817,-0.601,-0.005],"6.625":[0.695,-0.689,-0.004],"6.6667":[0.689,-0.751,-0.004],"6.7083":[0.713,-0.778,-0.004],"6.75":[0.781,-0.81,-0.004],"6.7917":[0.871,-0.835,-0.004],"6.8333":[1.042,-0.869,-0.004],"6.875":[1.178,-0.911,-0.004],"6.9167":[1.247,-0.949,-0.005],"6.9583":[1.338,-1.021,-0.006],"7.0":[1.385,-1.07,-0.007],"7.0417":[1.416,-1.137,-0.007],"7.0833":[1.416,-1.18,-0.008],"7.125":[1.338,-1.253,-0.007],"7.1667":[1.204,-1.326,-0.007],"7.2083":[1.086,-1.369,-0.006],"7.25":[0.912,-1.405,-0.006],"7.2917":[0.799,-1.405,-0.005],"7.3333":[0.539,-1.349,-0.004],"7.375":[0.33,-1.199,-0.004],"7.4167":[0.209,-1.064,-0.004],"7.4583":[0.044,-0.858,-0.004],"7.5":[-0.051,-0.74,-0.004],"7.5417":[-0.17,-0.564,-0.004],"7.5833":[-0.224,-0.438,-0.004],"7.625":[-0.264,-0.245,-0.004],"7.6667":[-0.197,-0.01,-0.004],"7.7083":[-0.112,0.15,-0.004],"7.75":[0.037,0.358,-0.004],"7.7917":[0.155,0.508,-0.004],"7.8333":[0.425,0.809,-0.004],"7.875":[0.495,0.884,-0.004],"7.9167":[0.668,0.991,-0.004],"7.9583":[0.793,0.954,-0.005],"8.0":[0.821,0.846,-0.007],"8.0417":[0.768,0.746,-0.007],"8.0833":[0.658,0.703,-0.007],"8.125":[0.597,0.706,-0.007],"8.1667":[0.554,0.752,-0.007],"8.2083":[0.536,0.795,-0.007],"8.25":[0.517,0.856,-0.007],"8.2917":[0.52,0.885,-0.007],"8.3333":[0.527,0.923,-0.007],"8.375":[0.541,0.947,-0.007],"8.4167":[0.577,0.976,-0.007],"8.4583":[0.598,0.985,-0.007],"8.5":[0.641,0.971,-0.007],"8.5417":[0.689,0.919,-0.007],"8.5833":[0.705,0.883,-0.007],"8.625":[0.705,0.847,-0.007],"8.6667":[0.705,0.826,-0.007],"8.7083":[0.705,0.79,-0.007],"8.75":[0.705,0.754,-0.007],"8.7917":[0.704,0.737,-0.007],"8.8333":[0.703,0.725,-0.007],"8.875":[0.702,0.694,-0.007],"8.9167":[0.7,0.589,-0.007],"8.9583":[0.699,0.441,-0.007],"9.0":[0.695,0.157,-0.007],"9.0417":[0.692,-0.088,-0.007],"9.0833":[0.688,-0.19,-0.007],"9.125":[0.688,-0.299,-0.007],"9.1667":[0.683,-0.36,-0.007],"9.2083":[0.644,-0.449,-0.007],"9.25":[0.592,-0.49,-0.007],"9.2917":[0.539,-0.49,-0.007],"9.3333":[0.495,-0.492,-0.007],"9.375":[0.474,-0.491,-0.007],"9.4167":[0.453,-0.489,-0.007],"9.4583":[0.453,-0.487,-0.006],"9.5":[0.453,-0.486,-0.006],"9.5417":[0.453,-0.484,-0.006],"9.5833":[0.456,-0.481,-0.006],"9.625":[0.456,-0.473,-0.006],"9.6667":[0.449,-0.473,-0.006],"9.7083":[0.449,-0.457,-0.006],"9.75":[0.441,-0.449,-0.006],"9.7917":[0.427,-0.418,-0.006],"9.8333":[0.398,-0.356,-0.006],"9.875":[0.377,-0.301,-0.006],"9.9167":[0.33,-0.2,-0.006],"9.9583":[0.299,-0.118,-0.006],"10.0":[0.252,0.001,-0.006],"10.0417":[0.199,0.12,-0.006],"10.0833":[0.163,0.205,-0.006],"10.125":[0.115,0.311,-0.006],"10.1667":[0.085,0.376,-0.006],"10.2083":[0.045,0.452,-0.006],"10.25":[0.019,0.493,-0.006],"10.2917":[-0.012,0.528,-0.006],"10.3333":[-0.04,0.555,-0.006],"10.375":[-0.051,0.565,-0.006],"10.4167":[-0.062,0.57,-0.006],"10.4583":[-0.073,0.57,-0.006],"10.5":[-0.073,0.57,-0.006],"10.5417":[-0.051,0.555,-0.006],"10.5833":[-0.04,0.54,-0.006],"10.625":[0.003,0.503,-0.006],"10.6667":[0.04,0.472,-0.006],"10.7083":[0.095,0.415,-0.006],"10.75":[0.138,0.374,-0.006],"10.7917":[0.205,0.312,-0.006],"10.8333":[0.272,0.239,-0.006],"10.875":[0.32,0.191,-0.006],"10.9167":[0.383,0.12,-0.006],"10.9583":[0.419,0.073,-0.006],"11.0":[0.467,0.003,-0.006],"11.0417":[0.503,-0.062,-0.006],"11.0833":[0.519,-0.103,-0.006],"11.125":[0.529,-0.157,-0.006],"11.1667":[0.529,-0.188,-0.006],"11.2083":[0.518,-0.234,-0.006],"11.25":[0.508,-0.264,-0.006],"11.2917":[0.486,-0.303,-0.006],"11.3333":[0.465,-0.333,-0.006],"11.375":[0.447,-0.347,-0.006],"11.4167":[0.421,-0.353,-0.006],"11.4583":[0.403,-0.35,-0.006],"11.5":[0.376,-0.34,-0.006],"11.5417":[0.332,-0.316,-0.006],"11.5833":[0.314,-0.3,-0.006],"11.625":[0.273,-0.267,-0.006],"11.6667":[0.246,-0.244,-0.005],"11.7083":[0.202,-0.198,-0.005],"11.75":[0.184,-0.175,-0.005],"11.7917":[0.149,-0.129,-0.005],"11.8333":[0.113,-0.083,-0.005],"11.875":[0.095,-0.053,-0.005],"11.9167":[0.072,-0.012,-0.005],"11.9583":[0.062,0.015,-0.005],"12.0":[0.056,0.055,-0.005],"12.0417":[0.056,0.081,-0.005],"12.0833":[0.067,0.101,-0.005],"12.125":[0.083,0.135,-0.005],"12.1667":[0.101,0.149,-0.005],"12.2083":[0.122,0.166,-0.005],"12.25":[0.136,0.168,-0.005],"12.2917":[0.158,0.161,-0.005],"12.3333":[0.165,0.151,-0.005],"12.375":[0.186,0.125,-0.005],"12.4167":[0.215,0.092,-0.005],"12.4583":[0.236,0.069,-0.005],"12.5":[0.278,0.028,-0.005],"12.5417":[0.309,0.001,-0.005],"12.5833":[0.351,-0.04,-0.005],"12.625":[0.398,-0.085,-0.005],"12.6667":[0.43,-0.117,-0.005],"12.7083":[0.477,-0.161,-0.005],"12.75":[0.514,-0.193,-0.005],"12.7917":[0.561,-0.237,-0.005],"12.8333":[0.593,-0.269,-0.005],"12.875":[0.64,-0.312,-0.005],"12.9167":[0.671,-0.344,-0.005],"12.9583":[0.716,-0.39,-0.005],"13.0":[0.763,-0.43,-0.005],"13.0417":[0.789,-0.457,-0.005],"13.0833":[0.836,-0.501,-0.005],"13.125":[0.868,-0.529,-0.006],"13.1667":[0.915,-0.569,-0.007],"13.2083":[0.97,-0.612,-0.008],"13.25":[1.001,-0.642,-0.008],"13.2917":[1.056,-0.684,-0.01],"13.3333":[1.087,-0.71,-0.011],"13.375":[1.136,-0.751,-0.012],"13.4167":[1.166,-0.778,-0.013],"13.4583":[1.215,-0.821,-0.015],"13.5":[1.251,-0.857,-0.016],"13.5417":[1.277,-0.885,-0.017],"13.5833":[1.304,-0.921,-0.018],"13.625":[1.322,-0.942,-0.018],"13.6667":[1.331,-0.978,-0.019],"13.7083":[1.345,-1.012,-0.019],"13.75":[1.345,-1.035,-0.019],"13.7917":[1.339,-1.058,-0.019],"13.8333":[1.339,-1.073,-0.018],"13.875":[1.323,-1.088,-0.017],"13.9167":[1.313,-1.092,-0.016],"13.9583":[1.277,-1.099,-0.015],"14.0":[1.225,-1.104,-0.014],"14.0417":[1.178,-1.094,-0.013],"14.0833":[1.069,-0.992,-0.01],"14.125":[0.981,-0.88,-0.009],"14.1667":[0.824,-0.675,-0.006],"14.2083":[0.668,-0.467,-0.005],"14.25":[0.572,-0.358,-0.004],"14.2917":[0.397,-0.255,-0.004],"14.3333":[0.292,-0.265,-0.004],"14.375":[0.204,-0.427,-0.004],"14.4167":[0.274,-0.492,-0.004],"14.4583":[0.405,-0.516,-0.004],"14.5":[0.458,-0.433,-0.004],"14.5417":[0.458,-0.397,-0.004],"14.5833":[0.373,-0.365,-0.004],"14.625":[0.341,-0.365,-0.004],"14.6667":[0.319,-0.407,-0.004],"14.7083":[0.266,-0.444,-0.004],"14.75":[0.214,-0.467,-0.004],"14.7917":[0.13,-0.47,-0.004],"14.8333":[0.067,-0.425,-0.004],"14.875":[-0.031,-0.335,-0.004],"14.9167":[-0.066,-0.297,-0.004],"14.9583":[-0.087,-0.279,-0.004],"15.0":[-0.106,-0.261,-0.004],"15.0417":[-0.117,-0.247,-0.004],"15.0833":[-0.128,-0.233,-0.004],"15.125":[-0.139,-0.226,-0.004],"15.1667":[-0.15,-0.212,-0.004],"15.2083":[-0.161,-0.198,-0.004],"15.25":[-0.172,-0.194,-0.004],"15.2917":[-0.183,-0.183,-0.004],"15.3333":[-0.194,-0.177,-0.004],"15.375":[-0.194,-0.165,-0.004],"15.4167":[-0.205,-0.159,-0.004],"15.4583":[-0.205,-0.147,-0.004],"15.5":[-0.216,-0.132,-0.004],"15.5417":[-0.216,-0.122,-0.004],"15.5833":[-0.219,-0.108,-0.004],"15.625":[-0.223,-0.093,-0.004],"15.6667":[-0.223,-0.074,-0.004],"15.7083":[-0.226,-0.055,-0.004],"15.75":[-0.216,-0.022,-0.004],"15.7917":[-0.095,0.134,-0.004],"15.8333":[0.039,0.108,-0.004],"15.875":[0.173,-0.094,-0.004],"15.9167":[0.086,-0.146,-0.004],"15.9583":[-0.016,-0.089,-0.004],"16.0":[-0.032,0.01,-0.004],"16.0417":[0.026,0.028,-0.004],"16.0833":[0.076,0.009,-0.004],"16.125":[0.083,-0.029,-0.004],"16.1667":[0.033,-0.056,-0.004],"16.2083":[0.012,-0.052,-0.004],"16.25":[-0.002,-0.021,-0.004],"16.2917":[-0.002,-0.017,-0.004]}}},"sound_effects":{"0.0":{"effect":"melee.treasure_kn.treasure_kn_inspect"},"14.9583":{"effect":"melee.treasure_kn.treasure_kn_melee_r_3"}}},"run_end":{"animation_length":0.7,"bones":{"melee_and_right":{"rotation":{"0.0333":[0,-30,-77.5],"0.1":[10.6406,-14.4375,-20],"0.2":[0,0,2.75],"0.3":[0,0,0]},"position":{"0.0":[0,-28.0806,0],"0.1":[-4.625,-7.1875,0],"0.1667":[0,0,0]}},"root":{"rotation":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.3333":[0,0,0],"0.4333":[0,0,0]},"position":{"0.0":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.1":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2":{"post":[0,-0.5781,0],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.3333":[0,0,0],"0.4333":[0,0,0]}},"lefthand":{"rotation":{"0.0667":[-1.5163,-17.5284,31.465],"0.1333":[-0.9525,-10.7269,13.8908],"0.2":[0,0,-10],"0.2667":[0,0,0]},"position":{"0.0":[-0.5944,-1.4538,1.565],"0.1333":[0,0,0]}},"knife_and_right":{"rotation":{"0.0333":[0,-30,-77.5],"0.1":[10.6406,-14.4375,-20],"0.2":[0,0,1.4492],"0.3":[0,0,0]},"position":{"0.0":[0,-28.0806,0],"0.1":[-4.625,-7.1875,0],"0.1667":[0,0,0]}}}},"run":{"loop":true,"animation_length":0.6,"bones":{"melee_and_right":{"rotation":{"0.0":[0,-30,-77.5],"0.0667":[0,-30,-77.5],"0.1333":{"pre":[0,-30,-48.75],"post":[0,-30,-48.75],"lerp_mode":"catmullrom"},"0.2":{"post":[0,-30,-33.5],"lerp_mode":"catmullrom"},"0.3":{"post":[-9.75,-30,-26.5312],"lerp_mode":"catmullrom"},"0.4":{"post":[-21.25,-30,-28.25],"lerp_mode":"catmullrom"},"0.4667":[0,-30,-52.98],"0.5333":[0,-30,-77.5]},"position":{"0.0":[0,-28.0806,0],"0.0667":[1.0781,-28.3769,0],"0.1333":{"pre":[-0.42,-16.9894,0],"post":[-0.42,-16.9894,0],"lerp_mode":"catmullrom"},"0.2":{"post":[-1.97,-9.5669,0],"lerp_mode":"catmullrom"},"0.3":{"post":[-2.8919,-4.8594,0],"lerp_mode":"catmullrom"},"0.4":{"post":[-1.97,-6.0475,0],"lerp_mode":"catmullrom"},"0.4667":[-0.98,-11.3919,0],"0.5333":[0,-28.0806,0]}},"root":{"rotation":{"0.0":[0,0,0],"0.0667":[0,0,0],"0.1333":{"pre":[0,0,0],"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.3333":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.4":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.4667":{"post":[0,0,0],"lerp_mode":"catmullrom"},"0.5333":[0,0,0],"0.6":[0,0,0]},"position":{"0.0":[0,0,0],"0.0667":[0,-0.3125,-0.8594],"0.1333":{"pre":[0,-1.0781,-0.7344],"post":[0,-1.0781,-0.7344],"lerp_mode":"catmullrom"},"0.2":{"post":[0,-0.7656,-0.3594],"lerp_mode":"catmullrom"},"0.2667":{"post":[0,0.1094,0],"lerp_mode":"catmullrom"},"0.3333":{"post":[0,0.25,0.3594],"lerp_mode":"catmullrom"},"0.4":{"post":[0,-0.625,0.7656],"lerp_mode":"catmullrom"},"0.4667":{"post":[0,-0.4531,0.9062],"lerp_mode":"catmullrom"},"0.5333":[0,0,0.7031],"0.6":[0,0,0]}},"lefthand":{"rotation":{"0.0":[-1.5163,-13.5284,8.465],"0.0667":[0.3666,-16.9644,19.7489],"0.1333":{"pre":[-4.3575,-10.3212,6.2426],"post":[-4.3575,-10.3212,6.2426],"lerp_mode":"catmullrom"},"0.2":{"post":[-4.3575,11.8507,3.3832],"lerp_mode":"catmullrom"},"0.2667":{"post":[-4.4725,15.7063,2.5444],"lerp_mode":"catmullrom"},"0.3667":{"post":[-4.3575,11.8507,3.3832],"lerp_mode":"catmullrom"},"0.4333":{"post":[-3.3525,-6.3238,8.9144],"lerp_mode":"catmullrom"},"0.5333":[0.3666,-16.9644,19.7489],"0.6":[-1.5163,-13.5284,8.465]},"position":{"0.0":[-0.5944,0.4213,0.44],"0.0667":[-1.1256,1.0462,-0.185],"0.1333":{"pre":[1.2512,-2.5775,-0.3256],"post":[1.2512,-2.5775,-0.3256],"lerp_mode":"catmullrom"},"0.2":{"post":[4.6225,-12.5444,-0.26],"lerp_mode":"catmullrom"},"0.3":{"post":[5.5362,-13.0344,-0.26],"lerp_mode":"catmullrom"},"0.4":{"post":[4.6225,-9.5288,-0.26],"lerp_mode":"catmullrom"},"0.4667":{"post":[2.6888,-5.4525,-0.0287],"lerp_mode":"catmullrom"},"0.5333":[0.41,-0.7987,0.44],"0.6":[-0.5944,0.4213,0.44]}},"knife_and_right":{"rotation":{"0.0":[8,26,-22.5],"0.0667":[8,26,-22.5],"0.1333":{"pre":[8,26,-10.75],"post":[8,26,-10.75],"lerp_mode":"catmullrom"},"0.2":{"post":[8,26,4.5],"lerp_mode":"catmullrom"},"0.3":{"post":[3.5735,25.6893,11.8827],"lerp_mode":"catmullrom"},"0.4":{"post":[6.75,26,7.75],"lerp_mode":"catmullrom"},"0.4667":[8,26,-16.98],"0.5333":[8,26,-22.5]},"position":{"0.0":[-0.9,-10.0806,-6],"0.0667":[0.1781,-10.3769,-6],"0.1333":{"pre":[-0.32,-8.9894,-6],"post":[-0.32,-8.9894,-6],"lerp_mode":"catmullrom"},"0.2":{"post":[-0.87,-6.5669,-6],"lerp_mode":"catmullrom"},"0.3":{"post":[-1.2591,-1.6094,-6],"lerp_mode":"catmullrom"},"0.4":{"post":[0.03,-4.0475,-6],"lerp_mode":"catmullrom"},"0.4667":[0.02,-8.3919,-6],"0.5333":[0,-10.0806,-6]}}}},"run_start":{"animation_length":0.2333,"bones":{"melee_and_right":{"rotation":{"0.0":[0,0,0],"0.1":[10.6406,-14.4375,-20],"0.1667":[0,-30,-77.5]},"position":{"0.0":[0,0,0],"0.1":[-4.625,-7.1875,0],"0.2333":[0,-28.0806,0]}},"lefthand":{"rotation":{"0.0":[0,0,0],"0.0667":[-0.9525,-10.7269,13.8908],"0.1333":[-1.5163,-13.5284,8.465]},"position":{"0.0":[0,0,0],"0.1333":[-0.2656,-4.2969,0.1875],"0.2":[-0.5944,0.4213,0.44]}},"knife_and_right":{"rotation":{"0.0":[0,0,0],"0.1":[10.6406,-14.4375,-20],"0.1667":[8,26,-22.5]},"position":{"0.0":[0,0,0],"0.1":[-4.625,-7.1875,0],"0.2333":[-0.9,-10.0806,-6]}}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/melee/treasure_kn.geo.json b/src/main/resources/assets/evolution/cosmetic/melee/treasure_kn.geo.json new file mode 100644 index 0000000..a6d7bde --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/melee/treasure_kn.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.treasure_kn","texture_width":256,"texture_height":256,"visible_bounds_width":24,"visible_bounds_height":10,"visible_bounds_offset":[0,1,0]},"bones":[{"name":"root","pivot":[0,9.6875,4.3375]},{"name":"bone5","parent":"root","pivot":[0,9.6875,4.3375]},{"name":"fn_lefthand","parent":"bone5","pivot":[-6,19,0]},{"name":"lefthand","parent":"fn_lefthand","pivot":[-6,19,0]},{"name":"lefthand_1","parent":"lefthand","pivot":[-6,19,0]},{"name":"lefthand_pos","parent":"lefthand_1","pivot":[0,8,0],"cubes":[{"origin":[-7,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[7,12],"uv_size":[3,12]},"east":{"uv":[8,0],"uv_size":[4,12]},"south":{"uv":[10,12],"uv_size":[3,12]},"west":{"uv":[0,12],"uv_size":[4,12]},"up":{"uv":[17,14],"uv_size":[3,4]},"down":{"uv":[18,6],"uv_size":[3,-4]}}}]},{"name":"knife_and_right","parent":"bone5","pivot":[6,19,0]},{"name":"righthand","parent":"knife_and_right","pivot":[6,19,0]},{"name":"righthand_1","parent":"righthand","pivot":[6,19,0]},{"name":"righthand_pos","parent":"righthand_1","pivot":[0,8,0],"cubes":[{"origin":[4,8,-2],"size":[3,12,4],"uv":{"north":{"uv":[12,0],"uv_size":[3,12]},"east":{"uv":[0,0],"uv_size":[4,12]},"south":{"uv":[4,12],"uv_size":[3,12]},"west":{"uv":[4,0],"uv_size":[4,12]},"up":{"uv":[15,2],"uv_size":[3,4]},"down":{"uv":[15,10],"uv_size":[3,-4]}}}]},{"name":"treasure_kn","parent":"knife_and_right","pivot":[0,5,0.0213]},{"name":"group3","parent":"treasure_kn","pivot":[0,-0.9584,-0.2222],"cubes":[{"origin":[0.1206,1.2424,-0.5934],"size":[0.2223,0.061,0.2626],"inflate":0.001,"pivot":[0.2318,1.3032,-0.4923],"rotation":[-30,0,0],"uv":{"north":{"uv":[14,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,15],"uv_size":[0.25,0.25]},"up":{"uv":[16,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,1.182,-0.3529],"size":[0.2223,0.0403,0.0459],"inflate":0.001,"pivot":[0.2318,1.2226,-0.3527],"rotation":[-70.1116,0,0],"uv":{"north":{"uv":[17,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,1.2354,-0.7249],"size":[0.2223,0.0409,0.2425],"inflate":0.001,"pivot":[0.2318,1.276,-0.4626],"rotation":[-42.5,0,0],"uv":{"north":{"uv":[20,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,20],"uv_size":[0.25,0.25]},"south":{"uv":[21,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,21],"uv_size":[0.25,0.25]},"up":{"uv":[22,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,1.3629,-1.0609],"size":[0.2223,0.0409,0.827],"inflate":0.001,"pivot":[0.2318,1.3833,-0.6373],"rotation":[-60.75,0,0],"uv":{"north":{"uv":[23,36],"uv_size":[0.25,0.25]},"east":{"uv":[24,24],"uv_size":[0.75,0.25]},"south":{"uv":[36,23],"uv_size":[0.25,0.25]},"west":{"uv":[0,25],"uv_size":[0.75,0.25]},"up":{"uv":[25,0],"uv_size":[0.25,0.75]},"down":{"uv":[1,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.1206,2.3495,-1.1724],"size":[0.2223,0.0409,0.3432],"inflate":0.001,"pivot":[0.2318,2.3699,-0.9604],"rotation":[-45.75,0,0],"uv":{"north":{"uv":[24,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,2.5208,-1.0742],"size":[0.2223,0.0409,0.1014],"inflate":0.001,"pivot":[0.2318,2.5614,-1.0739],"rotation":[-63.25,0,0],"uv":{"north":{"uv":[27,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,27],"uv_size":[0.25,0.25]},"south":{"uv":[28,36],"uv_size":[0.25,0.25]},"west":{"uv":[36,28],"uv_size":[0.25,0.25]},"up":{"uv":[29,36],"uv_size":[0.25,0.25]},"down":{"uv":[36,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,2.722,-1.3745],"size":[0.2223,0.061,0.4843],"inflate":0.001,"pivot":[0.2318,2.7525,-1.1324],"rotation":[-80.75,0,0],"uv":{"north":{"uv":[30,36],"uv_size":[0.25,0.25]},"east":{"uv":[29,19],"uv_size":[0.5,0.25]},"south":{"uv":[36,30],"uv_size":[0.25,0.25]},"west":{"uv":[20,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,20],"uv_size":[0.25,0.5]},"down":{"uv":[21,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1206,2.9861,-1.6045],"size":[0.2223,0.0409,0.4037],"inflate":0.001,"pivot":[0.2318,2.9864,-1.2011],"rotation":[-115.75,0,0],"uv":{"north":{"uv":[31,36],"uv_size":[0.25,0.25]},"east":{"uv":[29,21],"uv_size":[0.5,0.25]},"south":{"uv":[36,31],"uv_size":[0.25,0.25]},"west":{"uv":[22,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,22],"uv_size":[0.25,0.5]},"down":{"uv":[23,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1206,2.8359,-1.5286],"size":[0.2223,0.0611,0.4037],"inflate":0.001,"pivot":[0.2318,2.8967,-1.1252],"rotation":[-110.25,0,0],"uv":{"north":{"uv":[32,36],"uv_size":[0.25,0.25]},"east":{"uv":[29,23],"uv_size":[0.5,0.25]},"south":{"uv":[36,32],"uv_size":[0.25,0.25]},"west":{"uv":[24,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,24],"uv_size":[0.25,0.5]},"down":{"uv":[25,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1206,3.7588,-1.7087],"size":[0.2223,0.0812,0.5246],"inflate":0.001,"pivot":[0.2318,3.7591,-1.1843],"rotation":[-101.5,0,0],"uv":{"north":{"uv":[33,36],"uv_size":[0.25,0.25]},"east":{"uv":[29,25],"uv_size":[0.5,0.25]},"south":{"uv":[36,33],"uv_size":[0.25,0.25]},"west":{"uv":[26,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,26],"uv_size":[0.25,0.5]},"down":{"uv":[27,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1206,4.1369,-1.4204],"size":[0.2223,0.0409,0.4037],"inflate":0.001,"pivot":[0.2318,4.1775,-1.0169],"rotation":[-132,0,0],"uv":{"north":{"uv":[34,36],"uv_size":[0.25,0.25]},"east":{"uv":[29,27],"uv_size":[0.5,0.25]},"south":{"uv":[36,34],"uv_size":[0.25,0.25]},"west":{"uv":[28,29],"uv_size":[0.5,0.25]},"up":{"uv":[29,28],"uv_size":[0.25,0.5]},"down":{"uv":[29,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1206,4.2723,-1.4026],"size":[0.2223,0.0812,0.3231],"inflate":0.001,"pivot":[0.2318,4.2726,-1.0799],"rotation":[-134,0,0],"uv":{"north":{"uv":[35,36],"uv_size":[0.25,0.25]},"east":{"uv":[36,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,36],"uv_size":[0.25,0.25]},"west":{"uv":[0,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,4.8129,-0.9589],"size":[0.2223,0.0812,0.444],"inflate":0.001,"pivot":[0.2318,4.8535,-0.7369],"rotation":[-78.5,0,0],"uv":{"north":{"uv":[37,1],"uv_size":[0.25,0.25]},"east":{"uv":[0,30],"uv_size":[0.5,0.25]},"south":{"uv":[2,37],"uv_size":[0.25,0.25]},"west":{"uv":[30,0],"uv_size":[0.5,0.25]},"up":{"uv":[1,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,1.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1206,4.8403,-0.9677],"size":[0.2223,0.0611,0.2626],"inflate":0.001,"pivot":[0.2318,4.9011,-0.7054],"rotation":[-96,0,0],"uv":{"north":{"uv":[37,2],"uv_size":[0.25,0.25]},"east":{"uv":[3,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,3],"uv_size":[0.25,0.25]},"west":{"uv":[4,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,4],"uv_size":[0.25,0.25]},"down":{"uv":[5,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,5.0625,-1.7682],"size":[0.2223,0.0409,0.9479],"inflate":0.001,"pivot":[0.2318,5.0628,-0.8206],"rotation":[-121.5,0,0],"uv":{"north":{"uv":[37,5],"uv_size":[0.25,0.25]},"east":{"uv":[17,11],"uv_size":[1,0.25]},"south":{"uv":[6,37],"uv_size":[0.25,0.25]},"west":{"uv":[18,8],"uv_size":[1,0.25]},"up":{"uv":[7,20],"uv_size":[0.25,1]},"down":{"uv":[20,8],"uv_size":[0.25,-1]}}},{"origin":[0.1206,5.1028,-1.7078],"size":[0.2223,0.0812,0.182],"inflate":0.001,"pivot":[0.2318,5.0628,-0.8206],"rotation":[-121.5,0,0],"uv":{"north":{"uv":[37,6],"uv_size":[0.25,0.25]},"east":{"uv":[7,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,7],"uv_size":[0.25,0.25]},"west":{"uv":[8,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,5.1028,-1.5264],"size":[0.2223,0.0409,0.1215],"inflate":0.001,"pivot":[0.2318,5.0628,-0.8206],"rotation":[-121.5,0,0],"uv":{"north":{"uv":[37,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,5.8702,-0.3259],"size":[0.2223,0.0812,0.182],"inflate":0.001,"pivot":[0.2318,5.8705,-0.3256],"rotation":[-88.5,0,0],"uv":{"north":{"uv":[37,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,5.3964,-0.5443],"size":[0.2223,0.0409,0.4843],"inflate":0.001,"pivot":[0.2318,5.437,-0.544],"rotation":[-115.75,0,0],"uv":{"north":{"uv":[37,15],"uv_size":[0.25,0.25]},"east":{"uv":[2,30],"uv_size":[0.5,0.25]},"south":{"uv":[16,37],"uv_size":[0.25,0.25]},"west":{"uv":[30,2],"uv_size":[0.5,0.25]},"up":{"uv":[3,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,3.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1206,5.3964,-0.9394],"size":[0.2223,0.0409,0.3957],"inflate":0.001,"pivot":[0.2318,5.437,-0.544],"rotation":[-140.1326,0,0],"uv":{"north":{"uv":[37,16],"uv_size":[0.25,0.25]},"east":{"uv":[4,30],"uv_size":[0.5,0.25]},"south":{"uv":[17,37],"uv_size":[0.25,0.25]},"west":{"uv":[30,4],"uv_size":[0.5,0.25]},"up":{"uv":[5,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,5.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1206,3.4783,-1.3512],"size":[0.2223,0.061,0.5246],"inflate":0.001,"pivot":[0.2318,3.4887,-1.0486],"rotation":[-65.25,0,0],"uv":{"north":{"uv":[37,17],"uv_size":[0.25,0.25]},"east":{"uv":[6,30],"uv_size":[0.5,0.25]},"south":{"uv":[18,37],"uv_size":[0.25,0.25]},"west":{"uv":[30,6],"uv_size":[0.5,0.25]},"up":{"uv":[7,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,7.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1206,3.6522,-1.2286],"size":[0.2223,0.0409,0.1417],"inflate":0.001,"pivot":[0.2318,3.6928,-1.0872],"rotation":[-80.25,0,0],"uv":{"north":{"uv":[37,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,1.7425,-1.1845],"size":[0.2223,0.0409,0.3231],"inflate":0.001,"pivot":[0.2318,1.7428,-0.8617],"rotation":[-98.75,0,0],"uv":{"north":{"uv":[37,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,1.5812,-1.0101],"size":[0.2223,0.0409,0.2626],"inflate":0.001,"pivot":[0.2318,1.6218,-0.7478],"rotation":[-78,0,0],"uv":{"north":{"uv":[37,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,1.519,-0.4522],"size":[0.2223,0.061,0.182],"inflate":0.001,"pivot":[0.2318,1.479,-0.714],"rotation":[-60.75,0,0],"uv":{"north":{"uv":[37,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,1.5795,-0.3514],"size":[0.2223,0.0208,0.0812],"inflate":0.001,"pivot":[0.2318,1.479,-0.714],"rotation":[-60.75,0,0],"uv":{"north":{"uv":[37,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,1.0411,-0.5037],"size":[0.2223,0.1618,0.0812],"inflate":0.001,"pivot":[0.2318,1.0414,-0.4227],"rotation":[-31.75,0,0],"uv":{"north":{"uv":[37,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,37],"uv_size":[0.25,0.25]},"south":{"uv":[37,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,37],"uv_size":[0.25,0.25]},"up":{"uv":[37,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,0.8758,-0.7261],"size":[0.1613,0.2217,0.1613],"pivot":[0,0.8153,-0.5648],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[37,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,37],"uv_size":[0.25,0.25]},"south":{"uv":[0,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,0.7959,-1.5452],"size":[0.1613,0.2419,0.7861],"pivot":[0.2318,0.7959,-0.5776],"rotation":[-60,0,0],"uv":{"north":{"uv":[2,38],"uv_size":[0.25,0.25]},"east":{"uv":[25,1],"uv_size":[0.75,0.25]},"south":{"uv":[38,2],"uv_size":[0.25,0.25]},"west":{"uv":[2,25],"uv_size":[0.75,0.25]},"up":{"uv":[25,2],"uv_size":[0.25,0.75]},"down":{"uv":[3,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.1209,1.6337,-1.0614],"size":[0.1613,0.3225,0.1613],"pivot":[0.2318,1.6337,-1.0614],"rotation":[-19.25,0,0],"uv":{"north":{"uv":[3,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,1.885,-0.9641],"size":[0.1613,0.3225,0.1613],"pivot":[0.2318,1.885,-0.8028],"rotation":[5.75,0,0],"uv":{"north":{"uv":[6,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,2.2059,-0.9964],"size":[0.1613,0.3225,0.1613],"pivot":[0.2318,2.2059,-0.8351],"rotation":[42.5,0,0],"uv":{"north":{"uv":[9,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,2.4437,-1.2143],"size":[0.1613,0.2217,0.2016],"pivot":[0.2318,2.4437,-1.053],"rotation":[62.5,0,0],"uv":{"north":{"uv":[12,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1211,2.403,-1.3241],"size":[0.1613,0.5644,0.2217],"pivot":[0.2318,2.403,-1.3241],"rotation":[9.25,0,0],"uv":{"north":{"uv":[8,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,8],"uv_size":[0.25,0.5]},"south":{"uv":[9,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,9],"uv_size":[0.25,0.5]},"up":{"uv":[15,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,2.9601,-1.4149],"size":[0.1613,0.3225,0.1613],"pivot":[0.2318,2.9601,-1.4149],"rotation":[-37,0,0],"uv":{"north":{"uv":[16,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,3.1206,-1.2533],"size":[0.1613,0.3225,0.1613],"pivot":[0.2318,3.1206,-1.092],"rotation":[-7.5,0,0],"uv":{"north":{"uv":[19,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,3.4403,-1.2112],"size":[0.1613,0.3225,0.1613],"pivot":[0.2318,3.4403,-1.0499],"rotation":[19.5,0,0],"uv":{"north":{"uv":[22,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,3.7443,-1.3188],"size":[0.1613,0.1814,0.1613],"pivot":[0.2318,3.7443,-1.1576],"rotation":[42,0,0],"uv":{"north":{"uv":[25,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1211,3.7713,-1.3988],"size":[0.1613,0.5644,0.2217],"pivot":[0.2318,3.7713,-1.3988],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[10,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,10],"uv_size":[0.25,0.5]},"south":{"uv":[11,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,11],"uv_size":[0.25,0.5]},"up":{"uv":[28,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,4.3223,-1.2766],"size":[0.1613,0.3225,0.1613],"pivot":[0.2318,4.3223,-1.2766],"rotation":[-57.5,0,0],"uv":{"north":{"uv":[29,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,4.3595,-1.0792],"size":[0.1613,0.3225,0.1613],"pivot":[0.2318,4.3595,-0.918],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[32,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,4.6315,-0.906],"size":[0.1613,0.3225,0.1613],"uv":{"north":{"uv":[35,38],"uv_size":[0.25,0.25]},"east":{"uv":[38,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,38],"uv_size":[0.25,0.25]},"west":{"uv":[38,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,38],"uv_size":[0.25,0.25]},"down":{"uv":[38,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,4.954,-0.906],"size":[0.1613,0.2016,0.1613],"pivot":[0.2318,4.954,-0.7447],"rotation":[20,0,0],"uv":{"north":{"uv":[38,38],"uv_size":[0.25,0.25]},"east":{"uv":[0,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,0],"uv_size":[0.25,0.25]},"west":{"uv":[1,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1211,5.0883,-0.9652],"size":[0.1613,1.0078,0.1613],"pivot":[0.2318,5.0883,-0.9652],"rotation":[-31.75,0,0],"uv":{"north":{"uv":[8,20],"uv_size":[0.25,1]},"east":{"uv":[20,8],"uv_size":[0.25,1]},"south":{"uv":[20,9],"uv_size":[0.25,1]},"west":{"uv":[10,20],"uv_size":[0.25,1]},"up":{"uv":[39,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,5.4362,-0.8814],"size":[0.0403,0.5845,0.383],"pivot":[0.1008,5.5168,-0.7],"rotation":[-34,0,0],"uv":{"north":{"uv":[12,30],"uv_size":[0.25,0.5]},"east":{"uv":[11,20],"uv_size":[0.5,0.5]},"south":{"uv":[30,12],"uv_size":[0.25,0.5]},"west":{"uv":[12,20],"uv_size":[0.5,0.5]},"up":{"uv":[13,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,13.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0806,5.1079,-0.8955],"size":[0.0403,0.4434,0.4434],"pivot":[0.1008,5.5514,-0.8955],"rotation":[-29.5,0,0],"uv":{"north":{"uv":[14,30],"uv_size":[0.25,0.5]},"east":{"uv":[20,12],"uv_size":[0.5,0.5]},"south":{"uv":[30,14],"uv_size":[0.25,0.5]},"west":{"uv":[13,20],"uv_size":[0.5,0.5]},"up":{"uv":[15,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,15.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0806,4.423,-0.8085],"size":[0.0403,0.5241,0.0806],"pivot":[0.1008,4.9471,-0.7279],"rotation":[-29.5,0,0],"uv":{"north":{"uv":[16,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,16],"uv_size":[0.25,0.5]},"south":{"uv":[17,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,17],"uv_size":[0.25,0.5]},"up":{"uv":[39,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,4.3063,-1.0462],"size":[0.0403,0.262,0.1411],"pivot":[0.1008,4.5482,-1.0462],"rotation":[-56,0,0],"uv":{"north":{"uv":[39,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,4.0541,-1.3089],"size":[0.0403,0.2419,0.1411],"pivot":[0.1008,4.296,-1.1678],"rotation":[-73.5,0,0],"uv":{"north":{"uv":[39,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,3.7982,-1.4398],"size":[0.0403,0.5644,0.2016],"pivot":[0.1008,4.3626,-1.4398],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[18,30],"uv_size":[0.25,0.5]},"east":{"uv":[30,18],"uv_size":[0.25,0.5]},"south":{"uv":[19,30],"uv_size":[0.25,0.5]},"west":{"uv":[30,19],"uv_size":[0.25,0.5]},"up":{"uv":[39,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,3.8116,-1.562],"size":[0.0403,0.1613,0.3225],"pivot":[0.1008,3.8116,-1.562],"rotation":[-43,0,0],"uv":{"north":{"uv":[39,11],"uv_size":[0.25,0.25]},"east":{"uv":[12,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,3.5483,-1.2162],"size":[0.0403,0.1613,0.3225],"pivot":[0.1008,3.7095,-1.2162],"rotation":[-70.5,0,0],"uv":{"north":{"uv":[39,14],"uv_size":[0.25,0.25]},"east":{"uv":[15,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,15],"uv_size":[0.25,0.25]},"west":{"uv":[16,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,3.2443,-1.1085],"size":[0.0403,0.1613,0.3225],"pivot":[0.1008,3.4055,-1.1085],"rotation":[-103.75,0,0],"uv":{"north":{"uv":[39,17],"uv_size":[0.25,0.25]},"east":{"uv":[18,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,18],"uv_size":[0.25,0.25]},"west":{"uv":[19,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,2.931,-1.1851],"size":[0.0403,0.1613,0.4031],"pivot":[0.1008,3.0923,-1.1851],"rotation":[-136.25,0,0],"uv":{"north":{"uv":[39,20],"uv_size":[0.25,0.25]},"east":{"uv":[20,30],"uv_size":[0.5,0.25]},"south":{"uv":[21,39],"uv_size":[0.25,0.25]},"west":{"uv":[30,20],"uv_size":[0.5,0.25]},"up":{"uv":[21,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,21.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0806,2.93,-1.5878],"size":[0.0403,0.1613,0.5644],"pivot":[0.1008,2.93,-1.5878],"rotation":[-80.25,0,0],"uv":{"north":{"uv":[39,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,30],"uv_size":[0.5,0.25]},"south":{"uv":[22,39],"uv_size":[0.25,0.25]},"west":{"uv":[30,22],"uv_size":[0.5,0.25]},"up":{"uv":[23,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,23.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0806,2.3738,-1.4923],"size":[0.0403,0.1613,0.3225],"pivot":[0.1008,2.3738,-1.4923],"rotation":[-20.5,0,0],"uv":{"north":{"uv":[39,22],"uv_size":[0.25,0.25]},"east":{"uv":[23,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,23],"uv_size":[0.25,0.25]},"west":{"uv":[24,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,2.2506,-1.1337],"size":[0.0403,0.1613,0.3225],"pivot":[0.1008,2.4119,-1.1337],"rotation":[-49,0,0],"uv":{"north":{"uv":[39,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,2.0072,-0.9221],"size":[0.0403,0.1613,0.3225],"pivot":[0.1008,2.1685,-0.9221],"rotation":[-81.5,0,0],"uv":{"north":{"uv":[39,28],"uv_size":[0.25,0.25]},"east":{"uv":[29,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,29],"uv_size":[0.25,0.25]},"west":{"uv":[30,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,1.6883,-0.8745],"size":[0.0403,0.1613,0.4031],"pivot":[0.1008,1.8495,-0.8745],"rotation":[-116.5,0,0],"uv":{"north":{"uv":[39,31],"uv_size":[0.25,0.25]},"east":{"uv":[24,30],"uv_size":[0.5,0.25]},"south":{"uv":[32,39],"uv_size":[0.25,0.25]},"west":{"uv":[30,24],"uv_size":[0.5,0.25]},"up":{"uv":[25,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,25.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0806,1.5607,-1.1987],"size":[0.0403,0.1613,0.4838],"pivot":[0.1008,1.5607,-1.1987],"rotation":[-63.25,0,0],"uv":{"north":{"uv":[39,32],"uv_size":[0.25,0.25]},"east":{"uv":[26,30],"uv_size":[0.5,0.25]},"south":{"uv":[33,39],"uv_size":[0.25,0.25]},"west":{"uv":[30,26],"uv_size":[0.5,0.25]},"up":{"uv":[27,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,27.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0806,1.1287,-0.9809],"size":[0.0403,0.1613,0.4434],"pivot":[0.1008,1.1287,-0.9809],"rotation":[-57.5,0,0],"uv":{"north":{"uv":[39,33],"uv_size":[0.25,0.25]},"east":{"uv":[28,30],"uv_size":[0.5,0.25]},"south":{"uv":[34,39],"uv_size":[0.25,0.25]},"west":{"uv":[30,28],"uv_size":[0.5,0.25]},"up":{"uv":[29,30],"uv_size":[0.25,0.5]},"down":{"uv":[30,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0806,0.6984,-0.6811],"size":[0.0403,0.143,0.0745],"pivot":[0.1008,0.8414,-0.6067],"rotation":[-30,0,0],"uv":{"north":{"uv":[39,34],"uv_size":[0.25,0.25]},"east":{"uv":[35,39],"uv_size":[0.25,0.25]},"south":{"uv":[39,35],"uv_size":[0.25,0.25]},"west":{"uv":[36,39],"uv_size":[0.25,0.25]},"up":{"uv":[39,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,5.1654,-1.1139],"size":[0.0403,0.2016,0.383],"pivot":[0.1008,5.1654,-1.1139],"rotation":[-62,0,0],"uv":{"north":{"uv":[39,37],"uv_size":[0.25,0.25]},"east":{"uv":[30,30],"uv_size":[0.5,0.25]},"south":{"uv":[38,39],"uv_size":[0.25,0.25]},"west":{"uv":[0,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,0],"uv_size":[0.25,0.5]},"down":{"uv":[1,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0806,4.8985,-0.9719],"size":[0.0403,0.1008,0.2419],"pivot":[0.1008,4.8985,-0.9719],"rotation":[-92,0,0],"uv":{"north":{"uv":[39,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,39],"uv_size":[0.25,0.25]},"south":{"uv":[0,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,6.0207,-0.8814],"size":[0.0403,0.0915,0.0502],"pivot":[0.1008,5.5168,-0.7],"rotation":[-34,0,0],"uv":{"north":{"uv":[2,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,2],"uv_size":[0.25,0.25]},"south":{"uv":[3,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,3],"uv_size":[0.25,0.25]},"up":{"uv":[4,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,5.6796,-0.585],"size":[0.0403,0.1043,0.3004],"pivot":[0.1008,5.8444,-0.2846],"rotation":[-62.75,0,0],"uv":{"north":{"uv":[5,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,5],"uv_size":[0.25,0.25]},"south":{"uv":[6,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,6],"uv_size":[0.25,0.25]},"up":{"uv":[7,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,5.0681,-1.0256],"size":[0.0403,1.028,0.0605],"pivot":[0.2318,5.0883,-0.9652],"rotation":[-31.75,0,0],"uv":{"north":{"uv":[20,13],"uv_size":[0.25,1]},"east":{"uv":[14,20],"uv_size":[0.25,1]},"south":{"uv":[15,20],"uv_size":[0.25,1]},"west":{"uv":[20,15],"uv_size":[0.25,1]},"up":{"uv":[8,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,5.0462,-0.7567],"size":[0.1352,1.0078,0.0806],"pivot":[0.1613,5.54,-0.7567],"rotation":[-34.6784,-22.3536,14.7423],"uv":{"north":{"uv":[16,20],"uv_size":[0.25,1]},"east":{"uv":[20,16],"uv_size":[0.25,1]},"south":{"uv":[17,20],"uv_size":[0.25,1]},"west":{"uv":[20,17],"uv_size":[0.25,1]},"up":{"uv":[9,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1303,5.0693,-0.9748],"size":[0.1339,0.0188,0.0806],"pivot":[0.2641,5.0693,-0.9345],"rotation":[-31.6143,-26.7344,7.3797],"uv":{"north":{"uv":[10,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,10],"uv_size":[0.25,0.25]},"south":{"uv":[11,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,11],"uv_size":[0.25,0.25]},"up":{"uv":[12,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,0.7411,-1.5778],"size":[0.0403,0.0547,0.8389],"pivot":[0.2318,0.7959,-0.5776],"rotation":[-60,0,0],"uv":{"north":{"uv":[13,40],"uv_size":[0.25,0.25]},"east":{"uv":[25,3],"uv_size":[0.75,0.25]},"south":{"uv":[40,13],"uv_size":[0.25,0.25]},"west":{"uv":[4,25],"uv_size":[0.75,0.25]},"up":{"uv":[25,4],"uv_size":[0.25,0.75]},"down":{"uv":[5,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.1613,1.2714,-1.3022],"size":[0.1327,0.0202,0.7861],"pivot":[0.1613,1.2714,-0.9154],"rotation":[-57.6364,-20.9211,-12.7509],"uv":{"north":{"uv":[14,40],"uv_size":[0.25,0.25]},"east":{"uv":[25,5],"uv_size":[0.75,0.25]},"south":{"uv":[40,14],"uv_size":[0.25,0.25]},"west":{"uv":[6,25],"uv_size":[0.75,0.25]},"up":{"uv":[25,6],"uv_size":[0.25,0.75]},"down":{"uv":[7,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.1464,0.9475,-0.6772],"size":[0.1317,0.0202,0.0168],"pivot":[0.278,0.9576,-0.6604],"rotation":[-55.5585,-16.9255,-19.1482],"uv":{"north":{"uv":[15,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1495,1.6283,-1.0534],"size":[0.1285,0.0202,0.0332],"pivot":[0.278,1.6383,-1.0534],"rotation":[-63.4247,-28.0926,1.1198],"uv":{"north":{"uv":[18,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,18],"uv_size":[0.25,0.25]},"south":{"uv":[19,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,19],"uv_size":[0.25,0.25]},"up":{"uv":[20,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,1.6452,-1.0687],"size":[0.1352,0.3225,0.0202],"pivot":[0.1613,1.7964,-1.0687],"rotation":[-21.3278,-24.9764,9.3617],"uv":{"north":{"uv":[21,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,21],"uv_size":[0.25,0.25]},"south":{"uv":[22,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,22],"uv_size":[0.25,0.25]},"up":{"uv":[23,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1436,1.6308,-1.063],"size":[0.1341,0.0176,0.0202],"pivot":[0.2777,1.6308,-1.0529],"rotation":[-17.8399,-27.4947,1.4835],"uv":{"north":{"uv":[24,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,1.6136,-1.1219],"size":[0.0403,0.3427,0.0605],"pivot":[0.2318,1.6337,-1.0614],"rotation":[-19.25,0,0],"uv":{"north":{"uv":[27,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,27],"uv_size":[0.25,0.25]},"south":{"uv":[28,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,28],"uv_size":[0.25,0.25]},"up":{"uv":[29,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,1.885,-1.0246],"size":[0.0403,0.3225,0.0605],"pivot":[0.2318,1.885,-0.8028],"rotation":[5.75,0,0],"uv":{"north":{"uv":[30,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,30],"uv_size":[0.25,0.25]},"south":{"uv":[31,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,31],"uv_size":[0.25,0.25]},"up":{"uv":[32,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,32.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,1.862,-1.0396],"size":[0.1352,0.3225,0.0202],"pivot":[0.1613,2.0233,-1.0396],"rotation":[6.4232,-26.4186,-2.8675],"uv":{"north":{"uv":[33,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,33],"uv_size":[0.25,0.25]},"south":{"uv":[34,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,34],"uv_size":[0.25,0.25]},"up":{"uv":[35,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,2.2059,-1.0569],"size":[0.0403,0.3225,0.0605],"pivot":[0.2318,2.2059,-0.8351],"rotation":[42.5,0,0],"uv":{"north":{"uv":[36,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,36],"uv_size":[0.25,0.25]},"south":{"uv":[37,40],"uv_size":[0.25,0.25]},"west":{"uv":[40,37],"uv_size":[0.25,0.25]},"up":{"uv":[38,40],"uv_size":[0.25,0.25]},"down":{"uv":[40,38.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,2.0138,-1.1076],"size":[0.1352,0.3225,0.0202],"pivot":[0.1613,2.175,-1.1076],"rotation":[45.6937,-19.2535,-18.6666],"uv":{"north":{"uv":[39,40],"uv_size":[0.25,0.25]},"east":{"uv":[40,39],"uv_size":[0.25,0.25]},"south":{"uv":[40,40],"uv_size":[0.25,0.25]},"west":{"uv":[0,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,2.4437,-1.2748],"size":[0.0403,0.262,0.0605],"pivot":[0.2318,2.4437,-1.053],"rotation":[62.5,0,0],"uv":{"north":{"uv":[41,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,2.1765,-1.2716],"size":[0.1352,0.2217,0.0202],"pivot":[0.1613,2.3075,-1.2716],"rotation":[65.0333,-11.9184,-23.9198],"uv":{"north":{"uv":[41,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1487,2.3704,-1.3301],"size":[0.129,0.0407,0.0202],"pivot":[0.2777,2.411,-1.32],"rotation":[62.2165,-27.6254,-15.6835],"uv":{"north":{"uv":[41,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,2.3787,-1.3926],"size":[0.0403,0.6089,0.0685],"pivot":[0.2318,2.403,-1.3241],"rotation":[9.25,0,0],"uv":{"north":{"uv":[31,1],"uv_size":[0.25,0.5]},"east":{"uv":[2,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,2],"uv_size":[0.25,0.5]},"west":{"uv":[3,31],"uv_size":[0.25,0.5]},"up":{"uv":[41,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,2.3884,-1.4368],"size":[0.139,0.5644,0.0202],"pivot":[0.1613,2.6685,-1.4368],"rotation":[10.6009,-29.1015,-5.2012],"uv":{"north":{"uv":[31,3],"uv_size":[0.25,0.5]},"east":{"uv":[4,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,4],"uv_size":[0.25,0.5]},"west":{"uv":[5,31],"uv_size":[0.25,0.5]},"up":{"uv":[41,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1399,2.4045,-1.3256],"size":[0.1373,0.0217,0.0202],"pivot":[0.2772,2.4045,-1.3155],"rotation":[15.2934,-27.0794,-15.1458],"uv":{"north":{"uv":[41,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1394,2.9434,-1.4163],"size":[0.1378,0.0181,0.0202],"pivot":[0.2772,2.9615,-1.4062],"rotation":[6.3703,-30.2106,3.3367],"uv":{"north":{"uv":[41,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,2.9245,-1.4768],"size":[0.0403,0.358,0.0619],"pivot":[0.2318,2.9601,-1.4149],"rotation":[-37,0,0],"uv":{"north":{"uv":[41,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,2.9684,-1.378],"size":[0.1359,0.3225,0.0202],"pivot":[0.1613,3.1119,-1.378],"rotation":[-40.2506,-21.3441,17.1256],"uv":{"north":{"uv":[41,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1464,2.9547,-1.4178],"size":[0.1313,0.0352,0.0202],"pivot":[0.2776,2.9547,-1.4077],"rotation":[-34.4197,-30.486,3.874],"uv":{"north":{"uv":[41,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,3.1206,-1.3137],"size":[0.0403,0.3225,0.0605],"pivot":[0.2318,3.1206,-1.092],"rotation":[-7.5,0,0],"uv":{"north":{"uv":[41,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,3.1481,-1.2908],"size":[0.1352,0.3225,0.0202],"pivot":[0.1613,3.3094,-1.2908],"rotation":[-8.3732,-26.3178,3.7336],"uv":{"north":{"uv":[41,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,3.4403,-1.2716],"size":[0.0403,0.3225,0.0605],"pivot":[0.2318,3.4403,-1.0499],"rotation":[19.5,0,0],"uv":{"north":{"uv":[41,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,3.3571,-1.3127],"size":[0.1352,0.3225,0.0202],"pivot":[0.1613,3.5183,-1.3127],"rotation":[21.5998,-24.9355,-9.4765],"uv":{"north":{"uv":[41,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,41],"uv_size":[0.25,0.25]},"up":{"uv":[41,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,3.7443,-1.3703],"size":[0.0403,0.2189,0.0515],"pivot":[0.2318,3.7443,-1.1576],"rotation":[42,0,0],"uv":{"north":{"uv":[41,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,41],"uv_size":[0.25,0.25]},"south":{"uv":[41,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,41],"uv_size":[0.25,0.25]},"up":{"uv":[0,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,3.5739,-1.3889],"size":[0.1315,0.1814,0.0202],"pivot":[0.1613,3.6833,-1.3889],"rotation":[44.3835,-16.9339,-15.9111],"uv":{"north":{"uv":[1,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1513,3.7434,-1.402],"size":[0.127,0.034,0.0202],"pivot":[0.2782,3.7775,-1.3919],"rotation":[39.8652,-27.0345,-3.9258],"uv":{"north":{"uv":[4,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,3.7511,-1.4558],"size":[0.0403,0.613,0.057],"pivot":[0.2318,3.7713,-1.3988],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[31,5],"uv_size":[0.25,0.5]},"east":{"uv":[6,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,6],"uv_size":[0.25,0.5]},"west":{"uv":[7,31],"uv_size":[0.25,0.5]},"up":{"uv":[7,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,3.7768,-1.3925],"size":[0.1337,0.5644,0.0202],"pivot":[0.1613,4.0632,-1.3925],"rotation":[-13.7711,-24.5988,5.8252],"uv":{"north":{"uv":[31,7],"uv_size":[0.25,0.5]},"east":{"uv":[8,31],"uv_size":[0.25,0.5]},"south":{"uv":[31,8],"uv_size":[0.25,0.5]},"west":{"uv":[9,31],"uv_size":[0.25,0.5]},"up":{"uv":[8,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1457,3.7693,-1.4],"size":[0.1322,0.0198,0.0202],"pivot":[0.2779,3.7693,-1.3899],"rotation":[-9.7997,-26.339,-3.3928],"uv":{"north":{"uv":[9,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.147,4.2931,-1.2778],"size":[0.1309,0.0272,0.0202],"pivot":[0.2779,4.3203,-1.2677],"rotation":[-18.5693,-21.313,18.0829],"uv":{"north":{"uv":[12,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,4.3021,-1.3371],"size":[0.0403,0.3427,0.0605],"pivot":[0.2318,4.3223,-1.2766],"rotation":[-57.5,0,0],"uv":{"north":{"uv":[15,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,4.3033,-1.1816],"size":[0.1352,0.3225,0.0202],"pivot":[0.1613,4.4545,-1.1816],"rotation":[-60.3255,-13.9047,22.8671],"uv":{"north":{"uv":[18,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,18],"uv_size":[0.25,0.25]},"south":{"uv":[19,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,19],"uv_size":[0.25,0.25]},"up":{"uv":[20,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1439,4.3147,-1.2819],"size":[0.1337,0.02,0.0202],"pivot":[0.2777,4.3147,-1.2718],"rotation":[-58.9624,-21.2433,18.3641],"uv":{"north":{"uv":[21,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,21],"uv_size":[0.25,0.25]},"south":{"uv":[22,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,22],"uv_size":[0.25,0.25]},"up":{"uv":[23,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,4.3595,-1.1397],"size":[0.0403,0.3225,0.0605],"pivot":[0.2318,4.3595,-0.918],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[24,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,4.4534,-1.0184],"size":[0.1352,0.3225,0.0202],"pivot":[0.1613,4.6147,-1.0184],"rotation":[-35.4616,-22.1609,15.039],"uv":{"north":{"uv":[27,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,27],"uv_size":[0.25,0.25]},"south":{"uv":[28,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,28],"uv_size":[0.25,0.25]},"up":{"uv":[29,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,4.6315,-0.9664],"size":[0.0403,0.3225,0.0605],"uv":{"north":{"uv":[30,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,30],"uv_size":[0.25,0.25]},"south":{"uv":[31,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,31],"uv_size":[0.25,0.25]},"up":{"uv":[32,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,32.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,4.6315,-0.9664],"size":[0.1352,0.3225,0.0202],"pivot":[0.1613,4.7928,-0.9664],"rotation":[0,-26.5626,0],"uv":{"north":{"uv":[33,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,33],"uv_size":[0.25,0.25]},"south":{"uv":[34,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,34],"uv_size":[0.25,0.25]},"up":{"uv":[35,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,4.954,-0.9592],"size":[0.0403,0.2366,0.0533],"pivot":[0.2318,4.954,-0.7447],"rotation":[20,0,0],"uv":{"north":{"uv":[36,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,36],"uv_size":[0.25,0.25]},"south":{"uv":[37,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,37],"uv_size":[0.25,0.25]},"up":{"uv":[38,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,38.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,4.8735,-0.9868],"size":[0.1321,0.2016,0.0806],"pivot":[0.1613,4.9918,-0.9868],"rotation":[21.6881,-22.2568,-8.5663],"uv":{"north":{"uv":[39,42],"uv_size":[0.25,0.25]},"east":{"uv":[42,39],"uv_size":[0.25,0.25]},"south":{"uv":[40,42],"uv_size":[0.25,0.25]},"west":{"uv":[42,40],"uv_size":[0.25,0.25]},"up":{"uv":[41,42],"uv_size":[0.25,0.25]},"down":{"uv":[42,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1383,5.0667,-0.9708],"size":[0.1276,0.0342,0.0806],"pivot":[0.2659,5.1009,-0.9305],"rotation":[15.1184,-27.0246,7.0965],"uv":{"north":{"uv":[42,42],"uv_size":[0.25,0.25]},"east":{"uv":[0,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,0],"uv_size":[0.25,0.25]},"west":{"uv":[1,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,0.8179,-0.7335],"size":[0.0403,0.0579,0.1686],"pivot":[0,0.8153,-0.5648],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[43,2],"uv_size":[0.25,0.25]},"east":{"uv":[3,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,3],"uv_size":[0.25,0.25]},"west":{"uv":[4,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,4],"uv_size":[0.25,0.25]},"down":{"uv":[5,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1613,0.8628,-0.7115],"size":[0.1341,0.0605,0.1613],"pivot":[0.1613,0.8628,-0.6346],"rotation":[-29.8846,-13.41,-21.9775],"uv":{"north":{"uv":[43,5],"uv_size":[0.25,0.25]},"east":{"uv":[6,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,6],"uv_size":[0.25,0.25]},"west":{"uv":[7,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1441,0.9506,-0.6635],"size":[0.1338,0.0202,0.0088],"pivot":[0.2778,0.9606,-0.6635],"rotation":[-30.3904,-16.6534,-20.0282],"uv":{"north":{"uv":[43,8],"uv_size":[0.25,0.25]},"east":{"uv":[9,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,9],"uv_size":[0.25,0.25]},"west":{"uv":[10,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,5.9508,-0.3259],"size":[0.0812,0.2424,0.182],"inflate":0.001,"pivot":[0.2318,5.8705,-0.3256],"rotation":[-88.5,0,0],"uv":{"north":{"uv":[43,11],"uv_size":[0.25,0.25]},"east":{"uv":[12,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,5.5097,-0.0918],"size":[0.1213,0.2788,0.182],"inflate":0.001,"pivot":[0.2016,5.7883,-0.0008],"rotation":[-88.2612,-30.3782,-0.8795],"uv":{"north":{"uv":[43,14],"uv_size":[0.25,0.25]},"east":{"uv":[15,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,15],"uv_size":[0.25,0.25]},"west":{"uv":[16,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2294,5.6902,-0.3321],"size":[0.1213,0.2714,0.0633],"inflate":0.001,"pivot":[0.2901,5.6905,-0.2691],"rotation":[-101.7612,-30.3782,-0.8795],"uv":{"north":{"uv":[43,17],"uv_size":[0.25,0.25]},"east":{"uv":[18,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,18],"uv_size":[0.25,0.25]},"west":{"uv":[19,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1206,5.691,-0.305],"size":[0.0812,0.2334,0.0651],"inflate":0.001,"pivot":[0.1613,5.6913,-0.2403],"rotation":[-104.5,0,0],"uv":{"north":{"uv":[43,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,1.3032,-0.5931],"size":[0.0806,0.1008,0.262],"pivot":[0.2318,1.3032,-0.4923],"rotation":[-30,0,0],"uv":{"north":{"uv":[43,23],"uv_size":[0.25,0.25]},"east":{"uv":[24,43],"uv_size":[0.25,0.25]},"south":{"uv":[43,24],"uv_size":[0.25,0.25]},"west":{"uv":[25,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,1.2544,-0.5467],"size":[0.1737,0.1209,0.2633],"pivot":[0.2016,1.3754,-0.4157],"rotation":[-25.3264,16.6419,31.1798],"uv":{"east":{"uv":[43,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,43],"uv_size":[0.25,0.25]},"up":{"uv":[43,27],"uv_size":[0.25,0.25]}}},{"origin":[0.1209,1.276,-0.7246],"size":[0.0806,0.1008,0.2419],"pivot":[0.2318,1.276,-0.4626],"rotation":[-42.5,0,0],"uv":{"north":{"uv":[28,43],"uv_size":[0.25,0.25]},"east":{"uv":[43,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,43],"uv_size":[0.25,0.25]},"west":{"uv":[43,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,43],"uv_size":[0.25,0.25]},"down":{"uv":[43,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,1.4254,-0.6208],"size":[0.1737,0.0202,0.2432],"pivot":[0.2016,1.4456,-0.4985],"rotation":[-36.9112,22.7656,27.2564],"uv":{"north":{"uv":[31,43],"uv_size":[0.25,0.25]},"east":{"uv":[43,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,43],"uv_size":[0.25,0.25]},"west":{"uv":[43,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,43],"uv_size":[0.25,0.25]},"down":{"uv":[43,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,1.4035,-1.0606],"size":[0.0806,0.1008,0.5039],"pivot":[0.2318,1.3833,-0.6373],"rotation":[-60.75,0,0],"uv":{"north":{"uv":[34,43],"uv_size":[0.25,0.25]},"east":{"uv":[31,9],"uv_size":[0.5,0.25]},"south":{"uv":[43,34],"uv_size":[0.25,0.25]},"west":{"uv":[10,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,10],"uv_size":[0.25,0.5]},"down":{"uv":[11,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2016,1.5717,-0.8687],"size":[0.1737,0.0202,0.5052],"pivot":[0.2016,1.5919,-0.6155],"rotation":[-55.6591,29.9832,18.8513],"uv":{"north":{"uv":[35,43],"uv_size":[0.25,0.25]},"east":{"uv":[31,11],"uv_size":[0.5,0.25]},"south":{"uv":[43,35],"uv_size":[0.25,0.25]},"west":{"uv":[12,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,12],"uv_size":[0.25,0.5]},"down":{"uv":[13,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1209,1.6218,-1.0098],"size":[0.0806,0.1008,0.262],"pivot":[0.2318,1.6218,-0.7478],"rotation":[-78,0,0],"uv":{"north":{"uv":[36,43],"uv_size":[0.25,0.25]},"east":{"uv":[43,36],"uv_size":[0.25,0.25]},"south":{"uv":[37,43],"uv_size":[0.25,0.25]},"west":{"uv":[43,37],"uv_size":[0.25,0.25]},"up":{"uv":[38,43],"uv_size":[0.25,0.25]},"down":{"uv":[43,38.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,1.7507,-0.8074],"size":[0.1737,0.0202,0.2633],"pivot":[0.2016,1.7709,-0.6764],"rotation":[-75.463,34.0738,8.266],"uv":{"north":{"uv":[39,43],"uv_size":[0.25,0.25]},"east":{"uv":[43,39],"uv_size":[0.25,0.25]},"south":{"uv":[40,43],"uv_size":[0.25,0.25]},"west":{"uv":[43,40],"uv_size":[0.25,0.25]},"up":{"uv":[41,43],"uv_size":[0.25,0.25]},"down":{"uv":[43,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,1.7831,-1.1842],"size":[0.0806,0.1008,0.3225],"pivot":[0.2318,1.7428,-0.8617],"rotation":[-98.75,0,0],"uv":{"north":{"uv":[42,43],"uv_size":[0.25,0.25]},"east":{"uv":[43,42],"uv_size":[0.25,0.25]},"south":{"uv":[43,43],"uv_size":[0.25,0.25]},"west":{"uv":[0,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,1.8605,-0.859],"size":[0.1737,0.0202,0.3238],"pivot":[0.2016,1.8807,-0.6977],"rotation":[-100.6344,34.4794,-6.0676],"uv":{"north":{"uv":[44,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,44],"uv_size":[0.25,0.25]},"south":{"uv":[44,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,2.0554,-0.9542],"size":[0.0806,0.1008,0.1814],"pivot":[0.2318,2.0554,-0.7728],"rotation":[-110.75,0,0],"uv":{"north":{"uv":[44,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,44],"uv_size":[0.25,0.25]},"south":{"uv":[44,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,2.0843,-0.6767],"size":[0.2016,0.0202,0.1209],"pivot":[0.2016,2.1045,-0.6464],"rotation":[-114.1904,30.1621,-12.719],"uv":{"north":{"uv":[44,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,44],"uv_size":[0.25,0.25]},"south":{"uv":[44,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1444,2.1641,-0.7449],"size":[0.2217,0.0202,0.0806],"pivot":[0.3661,2.1742,-0.7449],"rotation":[-104.3709,35.4955,5.2694],"uv":{"north":{"uv":[44,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,44],"uv_size":[0.25,0.25]},"south":{"uv":[44,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,2.3901,-1.1721],"size":[0.0806,0.1008,0.3427],"pivot":[0.2318,2.3699,-0.9604],"rotation":[-45.75,0,0],"uv":{"north":{"uv":[44,13],"uv_size":[0.25,0.25]},"east":{"uv":[14,44],"uv_size":[0.25,0.25]},"south":{"uv":[44,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,2.463,-1.0746],"size":[0.1737,0.0202,0.3843],"pivot":[0.2016,2.4832,-0.9019],"rotation":[-40.0792,24.2225,25.9931],"uv":{"north":{"uv":[44,16],"uv_size":[0.25,0.25]},"east":{"uv":[31,13],"uv_size":[0.5,0.25]},"south":{"uv":[17,44],"uv_size":[0.25,0.25]},"west":{"uv":[14,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,14],"uv_size":[0.25,0.5]},"down":{"uv":[15,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1209,2.2901,-0.8546],"size":[0.0806,0.1008,0.1814],"pivot":[0.2318,2.2901,-0.8546],"rotation":[-33.25,0,0],"uv":{"north":{"uv":[44,17],"uv_size":[0.25,0.25]},"east":{"uv":[18,44],"uv_size":[0.25,0.25]},"south":{"uv":[44,18],"uv_size":[0.25,0.25]},"west":{"uv":[19,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,2.3045,-0.8142],"size":[0.1613,0.0202,0.1613],"pivot":[0.2016,2.3247,-0.7235],"rotation":[-27.2429,19.8431,33.3959],"uv":{"north":{"uv":[44,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,44],"uv_size":[0.25,0.25]},"south":{"uv":[44,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1626,2.1858,-0.7481],"size":[0.1594,0.0202,0.0245],"pivot":[0.322,2.1959,-0.7236],"rotation":[-29.0589,27.5623,28.8906],"uv":{"north":{"uv":[44,23],"uv_size":[0.25,0.25]},"east":{"uv":[24,44],"uv_size":[0.25,0.25]},"south":{"uv":[44,24],"uv_size":[0.25,0.25]},"west":{"uv":[25,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,2.1742,-0.6476],"size":[0.0806,0.1008,0.0919],"pivot":[0.2318,2.275,-0.6476],"rotation":[-68.7302,0,0],"uv":{"north":{"uv":[44,26],"uv_size":[0.25,0.25]},"east":{"uv":[27,44],"uv_size":[0.25,0.25]},"south":{"uv":[44,27],"uv_size":[0.25,0.25]},"west":{"uv":[28,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,2.212,-0.6366],"size":[0.2217,0.0202,0.0314],"pivot":[0.2016,2.2321,-0.631],"rotation":[-63.8641,34.5618,15.5548],"uv":{"north":{"uv":[44,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,44],"uv_size":[0.25,0.25]},"south":{"uv":[44,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1536,2.1754,-0.7662],"size":[0.2178,0.0202,0.0421],"pivot":[0.3713,2.1855,-0.7662],"rotation":[-58.5922,29.9763,25.4039],"uv":{"north":{"uv":[44,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,44],"uv_size":[0.25,0.25]},"south":{"uv":[44,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1508,2.1462,-0.778],"size":[0.2205,0.0202,0.0232],"pivot":[0.3713,2.1562,-0.7548],"rotation":[-67.8155,37.0208,8.8051],"uv":{"north":{"uv":[44,35],"uv_size":[0.25,0.25]},"east":{"uv":[36,44],"uv_size":[0.25,0.25]},"south":{"uv":[44,36],"uv_size":[0.25,0.25]},"west":{"uv":[37,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,2.5614,-1.0739],"size":[0.0806,0.1008,0.1008],"pivot":[0.2318,2.5614,-1.0739],"rotation":[-63.25,0,0],"uv":{"north":{"uv":[44,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,44],"uv_size":[0.25,0.25]},"south":{"uv":[44,39],"uv_size":[0.25,0.25]},"west":{"uv":[40,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,2.5416,-1.0116],"size":[0.1737,0.0202,0.1021],"pivot":[0.2016,2.5618,-0.9612],"rotation":[-58.4126,30.7623,17.4588],"uv":{"north":{"uv":[44,41],"uv_size":[0.25,0.25]},"east":{"uv":[42,44],"uv_size":[0.25,0.25]},"south":{"uv":[44,42],"uv_size":[0.25,0.25]},"west":{"uv":[43,44],"uv_size":[0.25,0.25]},"up":{"uv":[44,43],"uv_size":[0.25,0.25]},"down":{"uv":[44,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,2.7828,-1.3742],"size":[0.0806,0.1008,0.4838],"pivot":[0.2318,2.7525,-1.1324],"rotation":[-80.75,0,0],"uv":{"north":{"uv":[0,45],"uv_size":[0.25,0.25]},"east":{"uv":[31,15],"uv_size":[0.5,0.25]},"south":{"uv":[45,0],"uv_size":[0.25,0.25]},"west":{"uv":[16,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,16],"uv_size":[0.25,0.5]},"down":{"uv":[17,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2016,2.7534,-1.2449],"size":[0.1737,0.0202,0.485],"pivot":[0.2016,2.7736,-1.003],"rotation":[-78.7628,34.4251,6.4086],"uv":{"north":{"uv":[1,45],"uv_size":[0.25,0.25]},"east":{"uv":[31,17],"uv_size":[0.5,0.25]},"south":{"uv":[45,1],"uv_size":[0.25,0.25]},"west":{"uv":[18,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,18],"uv_size":[0.25,0.5]},"down":{"uv":[19,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1209,2.8967,-1.5283],"size":[0.0806,0.1008,0.4031],"pivot":[0.2318,2.8967,-1.1252],"rotation":[-110.25,0,0],"uv":{"north":{"uv":[2,45],"uv_size":[0.25,0.25]},"east":{"uv":[31,19],"uv_size":[0.5,0.25]},"south":{"uv":[45,2],"uv_size":[0.25,0.25]},"west":{"uv":[20,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,20],"uv_size":[0.25,0.5]},"down":{"uv":[21,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2016,3.0307,-1.1624],"size":[0.1737,0.0202,0.4044],"pivot":[0.2016,3.0509,-0.9609],"rotation":[-114.2306,32.5051,-13.596],"uv":{"north":{"uv":[3,45],"uv_size":[0.25,0.25]},"east":{"uv":[31,21],"uv_size":[0.5,0.25]},"south":{"uv":[45,3],"uv_size":[0.25,0.25]},"west":{"uv":[22,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,22],"uv_size":[0.25,0.5]},"down":{"uv":[23,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1209,3.0825,-1.0733],"size":[0.0806,0.1008,0.1613],"pivot":[0.2318,3.1833,-0.912],"rotation":[-130.25,0,0],"uv":{"north":{"uv":[4,45],"uv_size":[0.25,0.25]},"east":{"uv":[45,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,45],"uv_size":[0.25,0.25]},"west":{"uv":[45,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,45],"uv_size":[0.25,0.25]},"down":{"uv":[45,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,3.2246,-0.9003],"size":[0.2016,0.0202,0.1209],"pivot":[0.2016,3.2448,-0.8599],"rotation":[-136.7631,27.5149,-26.166],"uv":{"north":{"uv":[7,45],"uv_size":[0.25,0.25]},"east":{"uv":[45,7],"uv_size":[0.25,0.25]},"south":{"uv":[8,45],"uv_size":[0.25,0.25]},"west":{"uv":[45,8],"uv_size":[0.25,0.25]},"up":{"uv":[9,45],"uv_size":[0.25,0.25]},"down":{"uv":[45,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1577,3.3495,-0.9332],"size":[0.1982,0.0202,0.0367],"pivot":[0.3559,3.3596,-0.9332],"rotation":[-132.2123,34.8892,-17.4122],"uv":{"north":{"uv":[10,45],"uv_size":[0.25,0.25]},"east":{"uv":[45,10],"uv_size":[0.25,0.25]},"south":{"uv":[11,45],"uv_size":[0.25,0.25]},"west":{"uv":[45,11],"uv_size":[0.25,0.25]},"up":{"uv":[12,45],"uv_size":[0.25,0.25]},"down":{"uv":[45,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,3.2055,-0.9086],"size":[0.0806,0.1008,0.1008],"pivot":[0.2318,3.3063,-0.8079],"rotation":[-85.25,0,0],"uv":{"north":{"uv":[13,45],"uv_size":[0.25,0.25]},"east":{"uv":[45,13],"uv_size":[0.25,0.25]},"south":{"uv":[14,45],"uv_size":[0.25,0.25]},"west":{"uv":[45,14],"uv_size":[0.25,0.25]},"up":{"uv":[15,45],"uv_size":[0.25,0.25]},"down":{"uv":[45,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,3.3364,-0.8624],"size":[0.2217,0.0202,0.0605],"pivot":[0.2016,3.3565,-0.812],"rotation":[-83.8755,39.0894,3.8706],"uv":{"north":{"uv":[16,45],"uv_size":[0.25,0.25]},"east":{"uv":[45,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,45],"uv_size":[0.25,0.25]},"west":{"uv":[45,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,45],"uv_size":[0.25,0.25]},"down":{"uv":[45,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1487,3.3242,-0.9982],"size":[0.2182,0.0202,0.0394],"pivot":[0.3669,3.3342,-0.9588],"rotation":[-92.279,39.4352,-9.3723],"uv":{"north":{"uv":[19,45],"uv_size":[0.25,0.25]},"east":{"uv":[45,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,45],"uv_size":[0.25,0.25]},"west":{"uv":[45,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,45],"uv_size":[0.25,0.25]},"down":{"uv":[45,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,3.306,-0.8968],"size":[0.0806,0.1008,0.0806],"pivot":[0.2318,3.4068,-0.8162],"rotation":[-47.75,0,0],"uv":{"north":{"uv":[22,45],"uv_size":[0.25,0.25]},"east":{"uv":[45,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,45],"uv_size":[0.25,0.25]},"west":{"uv":[45,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,45],"uv_size":[0.25,0.25]},"down":{"uv":[45,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,3.4164,-0.9038],"size":[0.1814,0.0202,0.0403],"pivot":[0.2016,3.4366,-0.8433],"rotation":[-42.797,23.6056,23.3876],"uv":{"north":{"uv":[25,45],"uv_size":[0.25,0.25]},"east":{"uv":[45,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,45],"uv_size":[0.25,0.25]},"west":{"uv":[45,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,45],"uv_size":[0.25,0.25]},"down":{"uv":[45,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1699,3.3698,-0.9928],"size":[0.1787,0.0202,0.057],"pivot":[0.3487,3.3798,-0.9358],"rotation":[-50.362,36.0586,8.3352],"uv":{"north":{"uv":[28,45],"uv_size":[0.25,0.25]},"east":{"uv":[45,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,45],"uv_size":[0.25,0.25]},"west":{"uv":[45,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,45],"uv_size":[0.25,0.25]},"down":{"uv":[45,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,3.6928,-1.2283],"size":[0.0806,0.1008,0.1411],"pivot":[0.2318,3.6928,-1.0872],"rotation":[-80.25,0,0],"uv":{"north":{"uv":[31,45],"uv_size":[0.25,0.25]},"east":{"uv":[45,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,45],"uv_size":[0.25,0.25]},"west":{"uv":[45,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,45],"uv_size":[0.25,0.25]},"down":{"uv":[45,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,3.7391,-1.0717],"size":[0.1737,0.0403,0.1424],"pivot":[0.2016,3.7794,-0.9999],"rotation":[-78.1608,34.3678,6.7486],"uv":{"north":{"uv":[34,45],"uv_size":[0.25,0.25]},"east":{"uv":[45,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,45],"uv_size":[0.25,0.25]},"west":{"uv":[45,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,45],"uv_size":[0.25,0.25]},"down":{"uv":[45,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,3.5391,-1.351],"size":[0.0806,0.1008,0.5241],"pivot":[0.2318,3.4887,-1.0486],"rotation":[-65.25,0,0],"uv":{"north":{"uv":[37,45],"uv_size":[0.25,0.25]},"east":{"uv":[31,23],"uv_size":[0.5,0.25]},"south":{"uv":[45,37],"uv_size":[0.25,0.25]},"west":{"uv":[24,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,24],"uv_size":[0.25,0.5]},"down":{"uv":[25,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2016,3.5684,-1.1915],"size":[0.1737,0.0202,0.4044],"pivot":[0.2016,3.5886,-0.9282],"rotation":[-60.6466,31.3432,16.3063],"uv":{"north":{"uv":[38,45],"uv_size":[0.25,0.25]},"east":{"uv":[31,25],"uv_size":[0.5,0.25]},"south":{"uv":[45,38],"uv_size":[0.25,0.25]},"west":{"uv":[26,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,26],"uv_size":[0.25,0.5]},"down":{"uv":[27,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1209,3.8397,-1.7084],"size":[0.0806,0.1008,0.5241],"pivot":[0.2318,3.7591,-1.1843],"rotation":[-101.5,0,0],"uv":{"north":{"uv":[39,45],"uv_size":[0.25,0.25]},"east":{"uv":[31,27],"uv_size":[0.5,0.25]},"south":{"uv":[45,39],"uv_size":[0.25,0.25]},"west":{"uv":[28,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,28],"uv_size":[0.25,0.5]},"down":{"uv":[29,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2016,3.9595,-1.2177],"size":[0.1737,0.0202,0.5254],"pivot":[0.2016,3.9797,-0.9543],"rotation":[-103.9391,34.1442,-7.9308],"uv":{"north":{"uv":[40,45],"uv_size":[0.25,0.25]},"east":{"uv":[31,29],"uv_size":[0.5,0.25]},"south":{"uv":[45,40],"uv_size":[0.25,0.25]},"west":{"uv":[30,31],"uv_size":[0.5,0.25]},"up":{"uv":[31,30],"uv_size":[0.25,0.5]},"down":{"uv":[31,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1209,4.1775,-1.4201],"size":[0.0806,0.1008,0.4031],"pivot":[0.2318,4.1775,-1.0169],"rotation":[-132,0,0],"uv":{"north":{"uv":[41,45],"uv_size":[0.25,0.25]},"east":{"uv":[0,32],"uv_size":[0.5,0.25]},"south":{"uv":[45,41],"uv_size":[0.25,0.25]},"west":{"uv":[32,0],"uv_size":[0.5,0.25]},"up":{"uv":[1,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,1.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2016,4.2397,-1.0087],"size":[0.1737,0.0202,0.4044],"pivot":[0.2016,4.2599,-0.8072],"rotation":[-137.6858,25.1922,-25.0588],"uv":{"north":{"uv":[42,45],"uv_size":[0.25,0.25]},"east":{"uv":[2,32],"uv_size":[0.5,0.25]},"south":{"uv":[45,42],"uv_size":[0.25,0.25]},"west":{"uv":[32,2],"uv_size":[0.5,0.25]},"up":{"uv":[3,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,3.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1209,4.2138,-0.901],"size":[0.0806,0.1209,0.1613],"pivot":[0.2318,4.3348,-0.7397],"rotation":[-154.5,0,0],"uv":{"north":{"uv":[43,45],"uv_size":[0.25,0.25]},"east":{"uv":[45,43],"uv_size":[0.25,0.25]},"south":{"uv":[44,45],"uv_size":[0.25,0.25]},"west":{"uv":[45,44],"uv_size":[0.25,0.25]},"up":{"uv":[45,45],"uv_size":[0.25,0.25]},"down":{"uv":[0,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,4.3493,-0.7274],"size":[0.2016,0.0202,0.1411],"pivot":[0.2016,4.3695,-0.667],"rotation":[-159.9285,16.065,-37.1388],"uv":{"north":{"uv":[46,0],"uv_size":[0.25,0.25]},"east":{"uv":[1,46],"uv_size":[0.25,0.25]},"south":{"uv":[46,1],"uv_size":[0.25,0.25]},"west":{"uv":[2,46],"uv_size":[0.25,0.25]},"up":{"uv":[46,2],"uv_size":[0.25,0.25]},"down":{"uv":[3,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1489,4.5093,-0.6715],"size":[0.2006,0.0202,0.0193],"pivot":[0.3495,4.5194,-0.6715],"rotation":[-159.2813,21.2207,-35.1166],"uv":{"north":{"uv":[46,3],"uv_size":[0.25,0.25]},"east":{"uv":[4,46],"uv_size":[0.25,0.25]},"south":{"uv":[46,4],"uv_size":[0.25,0.25]},"west":{"uv":[5,46],"uv_size":[0.25,0.25]},"up":{"uv":[46,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,4.2631,-0.7664],"size":[0.0806,0.1411,0.1722],"pivot":[0.2318,4.4042,-0.5942],"rotation":[-110.3399,0,0],"uv":{"north":{"uv":[46,6],"uv_size":[0.25,0.25]},"east":{"uv":[7,46],"uv_size":[0.25,0.25]},"south":{"uv":[46,7],"uv_size":[0.25,0.25]},"west":{"uv":[8,46],"uv_size":[0.25,0.25]},"up":{"uv":[46,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,4.4648,-0.6302],"size":[0.1814,0.0202,0.0916],"pivot":[0.2016,4.4849,-0.5643],"rotation":[-114.6179,33.4449,-14.173],"uv":{"north":{"uv":[46,9],"uv_size":[0.25,0.25]},"east":{"uv":[10,46],"uv_size":[0.25,0.25]},"south":{"uv":[46,10],"uv_size":[0.25,0.25]},"west":{"uv":[11,46],"uv_size":[0.25,0.25]},"up":{"uv":[46,11],"uv_size":[0.25,0.25]},"down":{"uv":[12,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1621,4.5765,-0.649],"size":[0.1802,0.0202,0.0205],"pivot":[0.3424,4.5866,-0.649],"rotation":[-110.4566,35.9402,-6.8703],"uv":{"north":{"uv":[46,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,46],"uv_size":[0.25,0.25]},"south":{"uv":[46,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,46],"uv_size":[0.25,0.25]},"up":{"uv":[46,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1701,4.4907,-0.7376],"size":[0.1723,0.0202,0.0568],"pivot":[0.3424,4.5008,-0.6808],"rotation":[-123.5321,24.4916,-32.404],"uv":{"north":{"uv":[46,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,46],"uv_size":[0.25,0.25]},"south":{"uv":[46,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,46],"uv_size":[0.25,0.25]},"up":{"uv":[46,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,5.437,-0.9391],"size":[0.0806,0.1008,0.3951],"pivot":[0.2318,5.437,-0.544],"rotation":[-140.1326,0,0],"uv":{"north":{"uv":[46,18],"uv_size":[0.25,0.25]},"east":{"uv":[4,32],"uv_size":[0.5,0.25]},"south":{"uv":[19,46],"uv_size":[0.25,0.25]},"west":{"uv":[32,4],"uv_size":[0.5,0.25]},"up":{"uv":[5,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,5.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2016,5.4661,-0.5266],"size":[0.1737,0.0208,0.3963],"pivot":[0.2016,5.4862,-0.3278],"rotation":[-145.6796,21.6698,-28.4088],"uv":{"north":{"uv":[46,19],"uv_size":[0.25,0.25]},"east":{"uv":[6,32],"uv_size":[0.5,0.25]},"south":{"uv":[20,46],"uv_size":[0.25,0.25]},"west":{"uv":[32,6],"uv_size":[0.5,0.25]},"up":{"uv":[7,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,7.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0558,5.6861,-0.2444],"size":[0.2822,0.0209,0.0806],"pivot":[0.3379,5.6965,-0.2444],"rotation":[-147.2716,57.3463,-22.5283],"uv":{"north":{"uv":[46,20],"uv_size":[0.25,0.25]},"east":{"uv":[21,46],"uv_size":[0.25,0.25]},"south":{"uv":[46,21],"uv_size":[0.25,0.25]},"west":{"uv":[22,46],"uv_size":[0.25,0.25]},"up":{"uv":[46,22],"uv_size":[0.25,0.25]},"down":{"uv":[23,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,5.6902,-0.4515],"size":[0.0819,0.1023,0.2108],"pivot":[0.1613,5.6902,-0.2408],"rotation":[-168.6326,0,0],"uv":{"north":{"uv":[46,23],"uv_size":[0.25,0.25]},"east":{"uv":[24,46],"uv_size":[0.25,0.25]},"south":{"uv":[46,24],"uv_size":[0.25,0.25]},"west":{"uv":[25,46],"uv_size":[0.25,0.25]},"up":{"uv":[46,25],"uv_size":[0.25,0.25]},"down":{"uv":[26,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,5.437,-0.544],"size":[0.0806,0.1008,0.4838],"pivot":[0.2318,5.437,-0.544],"rotation":[-115.75,0,0],"uv":{"north":{"uv":[46,26],"uv_size":[0.25,0.25]},"east":{"uv":[8,32],"uv_size":[0.5,0.25]},"south":{"uv":[27,46],"uv_size":[0.25,0.25]},"west":{"uv":[32,8],"uv_size":[0.5,0.25]},"up":{"uv":[9,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,9.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2016,5.1552,-0.7985],"size":[0.1741,0.0197,0.482],"pivot":[0.2016,5.1753,-0.5583],"rotation":[-120.4738,31.0576,-16.8867],"uv":{"north":{"uv":[46,27],"uv_size":[0.25,0.25]},"east":{"uv":[10,32],"uv_size":[0.5,0.25]},"south":{"uv":[28,46],"uv_size":[0.25,0.25]},"west":{"uv":[32,10],"uv_size":[0.5,0.25]},"up":{"uv":[11,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,11.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1209,4.9011,-0.9675],"size":[0.0806,0.1008,0.262],"pivot":[0.2318,4.9011,-0.7054],"rotation":[-96,0,0],"uv":{"north":{"uv":[46,28],"uv_size":[0.25,0.25]},"east":{"uv":[29,46],"uv_size":[0.25,0.25]},"south":{"uv":[46,29],"uv_size":[0.25,0.25]},"west":{"uv":[30,46],"uv_size":[0.25,0.25]},"up":{"uv":[46,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2016,5.0007,-0.7238],"size":[0.1737,0.0202,0.2633],"pivot":[0.2016,5.0208,-0.5915],"rotation":[-97.3067,34.7251,-4.1775],"uv":{"north":{"uv":[46,31],"uv_size":[0.25,0.25]},"east":{"uv":[32,46],"uv_size":[0.25,0.25]},"south":{"uv":[46,32],"uv_size":[0.25,0.25]},"west":{"uv":[33,46],"uv_size":[0.25,0.25]},"up":{"uv":[46,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1209,4.8938,-0.9586],"size":[0.0806,0.1008,0.5442],"pivot":[0.2318,4.8535,-0.7369],"rotation":[-78.5,0,0],"uv":{"north":{"uv":[46,34],"uv_size":[0.25,0.25]},"east":{"uv":[12,32],"uv_size":[0.5,0.25]},"south":{"uv":[35,46],"uv_size":[0.25,0.25]},"west":{"uv":[32,12],"uv_size":[0.5,0.25]},"up":{"uv":[13,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,13.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2016,4.8121,-0.8607],"size":[0.1737,0.0202,0.5039],"pivot":[0.2016,4.8323,-0.5886],"rotation":[-76.0609,34.1442,7.9308],"uv":{"north":{"uv":[46,35],"uv_size":[0.25,0.25]},"east":{"uv":[14,32],"uv_size":[0.5,0.25]},"south":{"uv":[36,46],"uv_size":[0.25,0.25]},"west":{"uv":[32,14],"uv_size":[0.5,0.25]},"up":{"uv":[15,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,15.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1686,4.5736,-0.6856],"size":[0.1696,0.0202,0.0376],"pivot":[0.3382,4.5836,-0.648],"rotation":[-84.7959,36.2369,-7.1654],"uv":{"north":{"uv":[46,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,46],"uv_size":[0.25,0.25]},"south":{"uv":[46,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,46],"uv_size":[0.25,0.25]},"up":{"uv":[46,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,6.2245,0.7883],"size":[0.2626,0.2424,0.827],"inflate":0.001,"pivot":[0.2116,6.2248,0.7483],"rotation":[-79.75,0,0],"uv":{"north":{"uv":[46,39],"uv_size":[0.25,0.25]},"east":{"uv":[25,7],"uv_size":[0.75,0.25]},"south":{"uv":[40,46],"uv_size":[0.25,0.25]},"west":{"uv":[8,25],"uv_size":[0.75,0.25]},"up":{"uv":[25,8],"uv_size":[0.25,0.75]},"down":{"uv":[9,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0803,6.2245,0.5867],"size":[0.2626,0.1618,0.2021],"inflate":0.001,"pivot":[0.2116,6.2248,0.7483],"rotation":[-79.75,0,0],"uv":{"north":{"uv":[46,40],"uv_size":[0.25,0.25]},"east":{"uv":[41,46],"uv_size":[0.25,0.25]},"south":{"uv":[46,41],"uv_size":[0.25,0.25]},"west":{"uv":[42,46],"uv_size":[0.25,0.25]},"up":{"uv":[46,42],"uv_size":[0.25,0.25]},"down":{"uv":[43,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,6.2447,0.5644],"size":[0.2626,0.0607,0.1806],"inflate":0.001,"pivot":[0.2116,6.2447,0.7447],"rotation":[-70.701,0,0],"uv":{"north":{"uv":[46,43],"uv_size":[0.25,0.25]},"east":{"uv":[44,46],"uv_size":[0.25,0.25]},"south":{"uv":[46,44],"uv_size":[0.25,0.25]},"west":{"uv":[45,46],"uv_size":[0.25,0.25]},"up":{"uv":[46,45],"uv_size":[0.25,0.25]},"down":{"uv":[46,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,5.1728,1.1402],"size":[0.2626,0.2425,0.9882],"inflate":0.001,"pivot":[0.2116,5.415,1.1405],"rotation":[-85.25,0,0],"uv":{"north":{"uv":[0,47],"uv_size":[0.25,0.25]},"east":{"uv":[18,20],"uv_size":[1,0.25]},"south":{"uv":[47,0],"uv_size":[0.25,0.25]},"west":{"uv":[20,18],"uv_size":[1,0.25]},"up":{"uv":[19,20],"uv_size":[0.25,1]},"down":{"uv":[20,20],"uv_size":[0.25,-1]}}},{"origin":[0.0803,4.4104,0.9608],"size":[0.2626,0.1215,0.2223],"inflate":0.001,"pivot":[0.2116,4.4107,0.9813],"rotation":[-93.25,0,0],"uv":{"north":{"uv":[1,47],"uv_size":[0.25,0.25]},"east":{"uv":[47,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,47],"uv_size":[0.25,0.25]},"west":{"uv":[47,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,47],"uv_size":[0.25,0.25]},"down":{"uv":[47,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,4.2092,0.9695],"size":[0.2626,0.2223,0.3231],"inflate":0.001,"pivot":[0.2116,4.2095,0.9698],"rotation":[-93.25,0,0],"uv":{"north":{"uv":[4,47],"uv_size":[0.25,0.25]},"east":{"uv":[47,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,47],"uv_size":[0.25,0.25]},"west":{"uv":[47,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,47],"uv_size":[0.25,0.25]},"down":{"uv":[47,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,4.2092,1.292],"size":[0.2626,0.2626,0.3634],"inflate":0.001,"pivot":[0.2116,4.2095,0.9698],"rotation":[-93.25,0,0],"uv":{"north":{"uv":[7,47],"uv_size":[0.25,0.25]},"east":{"uv":[47,7],"uv_size":[0.25,0.25]},"south":{"uv":[8,47],"uv_size":[0.25,0.25]},"west":{"uv":[47,8],"uv_size":[0.25,0.25]},"up":{"uv":[9,47],"uv_size":[0.25,0.25]},"down":{"uv":[47,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,3.525,0.8904],"size":[0.2626,0.3231,0.9479],"inflate":0.001,"pivot":[0.2116,3.5252,0.931],"rotation":[-102.5,0,0],"uv":{"north":{"uv":[10,47],"uv_size":[0.25,0.25]},"east":{"uv":[20,20],"uv_size":[1,0.25]},"south":{"uv":[47,10],"uv_size":[0.25,0.25]},"west":{"uv":[0,21],"uv_size":[1,0.25]},"up":{"uv":[21,0],"uv_size":[0.25,1]},"down":{"uv":[1,22],"uv_size":[0.25,-1]}}},{"origin":[0.0803,2.6394,0.7344],"size":[0.2626,0.0812,0.1013],"inflate":0.001,"pivot":[0.2116,2.6397,0.7347],"rotation":[-59,0,0],"uv":{"north":{"uv":[11,47],"uv_size":[0.25,0.25]},"east":{"uv":[47,11],"uv_size":[0.25,0.25]},"south":{"uv":[12,47],"uv_size":[0.25,0.25]},"west":{"uv":[47,12],"uv_size":[0.25,0.25]},"up":{"uv":[13,47],"uv_size":[0.25,0.25]},"down":{"uv":[47,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,2.553,0.7863],"size":[0.2626,0.0812,0.2223],"inflate":0.001,"pivot":[0.2116,2.5533,0.7866],"rotation":[-9,0,0],"uv":{"north":{"uv":[14,47],"uv_size":[0.25,0.25]},"east":{"uv":[47,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,47],"uv_size":[0.25,0.25]},"west":{"uv":[47,15],"uv_size":[0.25,0.25]},"up":{"uv":[16,47],"uv_size":[0.25,0.25]},"down":{"uv":[47,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,2.5174,1.0179],"size":[0.2626,0.0812,0.182],"inflate":0.001,"pivot":[0.2116,2.5983,1.0182],"rotation":[-36.25,0,0],"uv":{"north":{"uv":[17,47],"uv_size":[0.25,0.25]},"east":{"uv":[47,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,47],"uv_size":[0.25,0.25]},"west":{"uv":[47,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,47],"uv_size":[0.25,0.25]},"down":{"uv":[47,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,2.4101,1.1642],"size":[0.2626,0.0812,0.182],"inflate":0.001,"pivot":[0.2116,2.491,1.1645],"rotation":[-72.75,0,0],"uv":{"north":{"uv":[20,47],"uv_size":[0.25,0.25]},"east":{"uv":[47,20],"uv_size":[0.25,0.25]},"south":{"uv":[21,47],"uv_size":[0.25,0.25]},"west":{"uv":[47,21],"uv_size":[0.25,0.25]},"up":{"uv":[22,47],"uv_size":[0.25,0.25]},"down":{"uv":[47,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,2.2369,1.218],"size":[0.2626,0.0812,0.182],"inflate":0.001,"pivot":[0.2116,2.3178,1.2183],"rotation":[-104.25,0,0],"uv":{"north":{"uv":[23,47],"uv_size":[0.25,0.25]},"east":{"uv":[47,23],"uv_size":[0.25,0.25]},"south":{"uv":[24,47],"uv_size":[0.25,0.25]},"west":{"uv":[47,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,47],"uv_size":[0.25,0.25]},"down":{"uv":[47,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,2.061,1.1733],"size":[0.2626,0.0812,1.1898],"inflate":0.001,"pivot":[0.2116,2.1419,1.1736],"rotation":[-128,0,0],"uv":{"north":{"uv":[26,47],"uv_size":[0.25,0.25]},"east":{"uv":[15,11],"uv_size":[1.25,0.25]},"south":{"uv":[47,26],"uv_size":[0.25,0.25]},"west":{"uv":[2,16],"uv_size":[1.25,0.25]},"up":{"uv":[16,2],"uv_size":[0.25,1.25]},"down":{"uv":[4,17.25],"uv_size":[0.25,-1.25]}}},{"origin":[0.0803,2.061,1.1733],"size":[0.2626,0.1618,1.1898],"inflate":0.001,"pivot":[0.2116,2.1419,1.1736],"rotation":[-128,0,0],"uv":{"north":{"uv":[27,47],"uv_size":[0.25,0.25]},"east":{"uv":[16,4],"uv_size":[1.25,0.25]},"south":{"uv":[47,27],"uv_size":[0.25,0.25]},"west":{"uv":[5,16],"uv_size":[1.25,0.25]},"up":{"uv":[16,5],"uv_size":[0.25,1.25]},"down":{"uv":[7,17.25],"uv_size":[0.25,-1.25]}}},{"origin":[0.0803,1.2542,0.297],"size":[0.2626,0.2424,0.0812],"inflate":0.001,"pivot":[0.2116,1.2545,0.3779],"rotation":[-148,0,0],"uv":{"north":{"uv":[28,47],"uv_size":[0.25,0.25]},"east":{"uv":[47,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,47],"uv_size":[0.25,0.25]},"west":{"uv":[47,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,47],"uv_size":[0.25,0.25]},"down":{"uv":[47,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.302,6.1883,0.625],"size":[0.0409,0.1417,0.1806],"inflate":0.001,"pivot":[0.3427,6.3297,0.7153],"rotation":[-68.8747,23.5075,8.7611],"uv":{"north":{"uv":[31,47],"uv_size":[0.25,0.25]},"east":{"uv":[47,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,47],"uv_size":[0.25,0.25]},"west":{"uv":[47,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,47],"uv_size":[0.25,0.25]},"down":{"uv":[47,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.302,5.6573,0.4155],"size":[0.0409,0.1215,0.827],"inflate":0.001,"pivot":[0.3427,5.7786,0.829],"rotation":[-78.7163,24.5743,4.7433],"uv":{"north":{"uv":[34,47],"uv_size":[0.25,0.25]},"east":{"uv":[25,9],"uv_size":[0.75,0.25]},"south":{"uv":[47,34],"uv_size":[0.25,0.25]},"west":{"uv":[10,25],"uv_size":[0.75,0.25]},"up":{"uv":[25,10],"uv_size":[0.25,0.75]},"down":{"uv":[11,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.302,4.8018,0.4462],"size":[0.0409,0.1013,0.9882],"inflate":0.001,"pivot":[0.3427,4.9028,0.9404],"rotation":[-84.7616,24.9083,2.2113],"uv":{"north":{"uv":[35,47],"uv_size":[0.25,0.25]},"east":{"uv":[21,1],"uv_size":[1,0.25]},"south":{"uv":[47,35],"uv_size":[0.25,0.25]},"west":{"uv":[3,21],"uv_size":[1,0.25]},"up":{"uv":[21,3],"uv_size":[0.25,1]},"down":{"uv":[4,22],"uv_size":[0.25,-1]}}},{"origin":[0.3222,6.1631,0.6364],"size":[0.0207,0.1215,0.2021],"inflate":0.001,"pivot":[0.3427,6.2843,0.7375],"rotation":[-78.7163,24.5743,4.7433],"uv":{"north":{"uv":[36,47],"uv_size":[0.25,0.25]},"east":{"uv":[47,36],"uv_size":[0.25,0.25]},"south":{"uv":[37,47],"uv_size":[0.25,0.25]},"west":{"uv":[47,37],"uv_size":[0.25,0.25]},"up":{"uv":[38,47],"uv_size":[0.25,0.25]},"down":{"uv":[47,38.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.302,4.1586,0.865],"size":[0.0409,0.1618,0.2223],"inflate":0.001,"pivot":[0.3427,4.3201,0.9761],"rotation":[-93.5851,24.957,-1.5143],"uv":{"north":{"uv":[39,47],"uv_size":[0.25,0.25]},"east":{"uv":[47,39],"uv_size":[0.25,0.25]},"south":{"uv":[40,47],"uv_size":[0.25,0.25]},"west":{"uv":[47,40],"uv_size":[0.25,0.25]},"up":{"uv":[41,47],"uv_size":[0.25,0.25]},"down":{"uv":[47,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2699,3.9712,0.7347],"size":[0.0409,0.1618,0.3231],"inflate":0.001,"pivot":[0.2903,4.0521,0.8962],"rotation":[-93.5851,24.957,-1.5143],"uv":{"north":{"uv":[42,47],"uv_size":[0.25,0.25]},"east":{"uv":[47,42],"uv_size":[0.25,0.25]},"south":{"uv":[43,47],"uv_size":[0.25,0.25]},"west":{"uv":[47,43],"uv_size":[0.25,0.25]},"up":{"uv":[44,47],"uv_size":[0.25,0.25]},"down":{"uv":[47,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.302,3.5448,0.7596],"size":[0.0409,0.1618,0.3634],"inflate":0.001,"pivot":[0.3427,3.7064,0.9413],"rotation":[-93.5851,24.957,-1.5143],"uv":{"north":{"uv":[45,47],"uv_size":[0.25,0.25]},"east":{"uv":[47,45],"uv_size":[0.25,0.25]},"south":{"uv":[46,47],"uv_size":[0.25,0.25]},"west":{"uv":[47,46],"uv_size":[0.25,0.25]},"up":{"uv":[47,47],"uv_size":[0.25,0.25]},"down":{"uv":[0,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2617,2.9406,0.3632],"size":[0.0812,0.1618,0.9479],"inflate":0.001,"pivot":[0.3427,3.1021,0.8372],"rotation":[-103.7454,24.3683,-5.7632],"uv":{"north":{"uv":[48,0],"uv_size":[0.25,0.25]},"east":{"uv":[21,4],"uv_size":[1,0.25]},"south":{"uv":[1,48],"uv_size":[0.25,0.25]},"west":{"uv":[5,21],"uv_size":[1,0.25]},"up":{"uv":[21,5],"uv_size":[0.25,1]},"down":{"uv":[6,22],"uv_size":[0.25,-1]}}},{"origin":[0.2655,2.4745,0.6704],"size":[0.0812,0.1618,0.0812],"inflate":0.001,"pivot":[0.3061,2.636,0.7513],"rotation":[-86.2454,24.3683,-5.7632],"uv":{"north":{"uv":[48,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,48],"uv_size":[0.25,0.25]},"south":{"uv":[48,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,48],"uv_size":[0.25,0.25]},"up":{"uv":[48,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.302,2.3544,0.7099],"size":[0.0409,0.2425,0.1013],"inflate":0.001,"pivot":[0.3427,2.5965,0.7606],"rotation":[-56.4566,21.2387,13.5047],"uv":{"north":{"uv":[48,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,48],"uv_size":[0.25,0.25]},"south":{"uv":[48,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,48],"uv_size":[0.25,0.25]},"up":{"uv":[48,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3039,2.4826,0.7417],"size":[0.0409,0.1618,0.0812],"inflate":0.001,"pivot":[0.3244,2.6441,0.742],"rotation":[-76.4566,21.2387,13.5047],"uv":{"north":{"uv":[48,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,48],"uv_size":[0.25,0.25]},"south":{"uv":[48,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,48],"uv_size":[0.25,0.25]},"up":{"uv":[48,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3039,2.3559,0.713],"size":[0.0409,0.2021,0.0812],"inflate":0.001,"pivot":[0.3244,2.5577,0.7939],"rotation":[-38.9566,21.2387,13.5047],"uv":{"north":{"uv":[48,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,48],"uv_size":[0.25,0.25]},"south":{"uv":[48,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,48],"uv_size":[0.25,0.25]},"up":{"uv":[48,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2617,2.3744,0.7849],"size":[0.0812,0.1618,0.2223],"inflate":0.001,"pivot":[0.3427,2.536,0.8961],"rotation":[-8.3249,3.4321,22.2502],"uv":{"north":{"uv":[48,13],"uv_size":[0.25,0.25]},"east":{"uv":[14,48],"uv_size":[0.25,0.25]},"south":{"uv":[48,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,48],"uv_size":[0.25,0.25]},"up":{"uv":[48,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2648,2.407,0.7887],"size":[0.0812,0.1618,0.0812],"inflate":0.001,"pivot":[0.3054,2.5686,0.789],"rotation":[-35.8249,3.4321,22.2502],"uv":{"north":{"uv":[48,16],"uv_size":[0.25,0.25]},"east":{"uv":[17,48],"uv_size":[0.25,0.25]},"south":{"uv":[48,17],"uv_size":[0.25,0.25]},"west":{"uv":[18,48],"uv_size":[0.25,0.25]},"up":{"uv":[48,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2617,2.3181,0.9526],"size":[0.0812,0.1618,0.182],"inflate":0.001,"pivot":[0.3427,2.4796,1.0436],"rotation":[-34.1144,13.0784,18.4714],"uv":{"north":{"uv":[48,19],"uv_size":[0.25,0.25]},"east":{"uv":[20,48],"uv_size":[0.25,0.25]},"south":{"uv":[48,20],"uv_size":[0.25,0.25]},"west":{"uv":[21,48],"uv_size":[0.25,0.25]},"up":{"uv":[48,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2617,2.2189,1.0234],"size":[0.0812,0.1618,0.182],"inflate":0.001,"pivot":[0.3427,2.3805,1.1144],"rotation":[-71.0881,23.804,7.8729],"uv":{"north":{"uv":[48,22],"uv_size":[0.25,0.25]},"east":{"uv":[23,48],"uv_size":[0.25,0.25]},"south":{"uv":[48,23],"uv_size":[0.25,0.25]},"west":{"uv":[24,48],"uv_size":[0.25,0.25]},"up":{"uv":[48,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.302,2.1083,1.0268],"size":[0.0409,0.1417,0.182],"inflate":0.001,"pivot":[0.3427,2.2497,1.1178],"rotation":[-105.6541,24.1806,-6.5479],"uv":{"north":{"uv":[48,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,48],"uv_size":[0.25,0.25]},"south":{"uv":[48,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,48],"uv_size":[0.25,0.25]},"up":{"uv":[48,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2819,1.5615,0.1491],"size":[0.061,0.1618,1.1898],"inflate":0.001,"pivot":[0.3427,1.723,0.744],"rotation":[-130.7631,19.4526,-16.0181],"uv":{"north":{"uv":[48,28],"uv_size":[0.25,0.25]},"east":{"uv":[16,7],"uv_size":[1.25,0.25]},"south":{"uv":[29,48],"uv_size":[0.25,0.25]},"west":{"uv":[16,8],"uv_size":[1.25,0.25]},"up":{"uv":[8,16],"uv_size":[0.25,1.25]},"down":{"uv":[16,10.25],"uv_size":[0.25,-1.25]}}},{"origin":[0.2847,1.0851,0.3071],"size":[0.0611,0.1618,0.0812],"inflate":0.001,"pivot":[0.3152,1.2466,0.388],"rotation":[-93.2631,19.4526,-16.0181],"uv":{"north":{"uv":[48,29],"uv_size":[0.25,0.25]},"east":{"uv":[30,48],"uv_size":[0.25,0.25]},"south":{"uv":[48,30],"uv_size":[0.25,0.25]},"west":{"uv":[31,48],"uv_size":[0.25,0.25]},"up":{"uv":[48,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2617,1.0307,0.4417],"size":[0.0812,0.2425,0.1618],"inflate":0.001,"pivot":[0.3427,1.1519,0.442],"rotation":[-145.415,21.002,13.8801],"uv":{"north":{"uv":[48,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,48],"uv_size":[0.25,0.25]},"south":{"uv":[48,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,48],"uv_size":[0.25,0.25]},"up":{"uv":[48,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2655,1.2632,0.3921],"size":[0.0812,0.0812,0.1618],"inflate":0.001,"pivot":[0.3061,1.2635,0.3924],"rotation":[-172.915,21.002,13.8801],"uv":{"north":{"uv":[48,35],"uv_size":[0.25,0.25]},"east":{"uv":[36,48],"uv_size":[0.25,0.25]},"south":{"uv":[48,36],"uv_size":[0.25,0.25]},"west":{"uv":[37,48],"uv_size":[0.25,0.25]},"up":{"uv":[48,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,2.1618,1.3346],"size":[0.2626,0.182,0.3836],"inflate":0.001,"pivot":[0.2116,2.1419,1.1736],"rotation":[-128,0,0],"uv":{"north":{"uv":[48,38],"uv_size":[0.25,0.25]},"east":{"uv":[16,32],"uv_size":[0.5,0.25]},"south":{"uv":[39,48],"uv_size":[0.25,0.25]},"west":{"uv":[32,16],"uv_size":[0.5,0.25]},"up":{"uv":[17,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,17.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0806,5.6838,0.5505],"size":[0.2626,0.0812,1.0689],"inflate":0.001,"pivot":[0.2116,5.7244,1.0849],"rotation":[-83.75,0,0],"uv":{"north":{"uv":[48,39],"uv_size":[0.25,0.25]},"east":{"uv":[21,6],"uv_size":[1,0.25]},"south":{"uv":[40,48],"uv_size":[0.25,0.25]},"west":{"uv":[7,21],"uv_size":[1,0.25]},"up":{"uv":[21,7],"uv_size":[0.25,1]},"down":{"uv":[8,22],"uv_size":[0.25,-1]}}},{"origin":[0.1411,5.7308,0.37],"size":[0.2016,0.1613,1.4109],"pivot":[0.2318,5.8114,1.0754],"rotation":[-84.5,0,0],"uv":{"north":{"uv":[48,40],"uv_size":[0.25,0.25]},"east":{"uv":[13,6],"uv_size":[1.5,0.25]},"south":{"uv":[41,48],"uv_size":[0.25,0.25]},"west":{"uv":[7,13],"uv_size":[1.5,0.25]},"up":{"uv":[13,7],"uv_size":[0.25,1.5]},"down":{"uv":[13,10.5],"uv_size":[0.25,-1.5]}}},{"origin":[0.1411,6.4408,1.0074],"size":[0.2016,0.0806,0.0806],"pivot":[0.2419,6.5214,1.0881],"rotation":[-54.5,0,0],"uv":{"north":{"uv":[48,41],"uv_size":[0.25,0.25]},"east":{"uv":[42,48],"uv_size":[0.25,0.25]},"south":{"uv":[48,42],"uv_size":[0.25,0.25]},"west":{"uv":[43,48],"uv_size":[0.25,0.25]},"up":{"uv":[48,43],"uv_size":[0.25,0.25]},"down":{"uv":[44,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1814,6.5542,1.0247],"size":[0.1613,0.3055,0.0803],"pivot":[0.3427,6.5542,1.0647],"rotation":[-46.4911,-32.4914,-27.0178],"uv":{"north":{"uv":[48,44],"uv_size":[0.25,0.25]},"east":{"uv":[45,48],"uv_size":[0.25,0.25]},"south":{"uv":[48,45],"uv_size":[0.25,0.25]},"west":{"uv":[46,48],"uv_size":[0.25,0.25]},"up":{"uv":[48,46],"uv_size":[0.25,0.25]},"down":{"uv":[47,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2014,6.4905,0.9641],"size":[0.1613,0.3225,0.0806],"pivot":[0.2821,6.4905,1.0448],"rotation":[-58.9911,-32.4914,-27.0178],"uv":{"north":{"uv":[48,47],"uv_size":[0.25,0.25]},"east":{"uv":[48,48],"uv_size":[0.25,0.25]},"south":{"uv":[0,49],"uv_size":[0.25,0.25]},"west":{"uv":[49,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1411,5.0363,1.2233],"size":[0.2016,0.0806,0.9473],"pivot":[0.2318,5.117,1.2233],"rotation":[-85,0,0],"uv":{"north":{"uv":[2,49],"uv_size":[0.25,0.25]},"east":{"uv":[21,8],"uv_size":[1,0.25]},"south":{"uv":[49,2],"uv_size":[0.25,0.25]},"west":{"uv":[9,21],"uv_size":[1,0.25]},"up":{"uv":[21,9],"uv_size":[0.25,1]},"down":{"uv":[10,22],"uv_size":[0.25,-1]}}},{"origin":[0.262,4.4768,1.3556],"size":[0.0806,0.1613,0.3023],"pivot":[0.3427,4.6381,1.1843],"rotation":[-84.5904,22.4097,2.0675],"uv":{"north":{"uv":[3,49],"uv_size":[0.25,0.25]},"east":{"uv":[49,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,49],"uv_size":[0.25,0.25]},"west":{"uv":[49,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1411,4.0926,1.3059],"size":[0.2016,0.0806,1.29],"pivot":[0.2419,4.1732,1.3059],"rotation":[-89.25,0,0],"uv":{"north":{"uv":[6,49],"uv_size":[0.25,0.25]},"east":{"uv":[16,12],"uv_size":[1.25,0.25]},"south":{"uv":[49,6],"uv_size":[0.25,0.25]},"west":{"uv":[16,13],"uv_size":[1.25,0.25]},"up":{"uv":[10,16],"uv_size":[0.25,1.25]},"down":{"uv":[13,17.25],"uv_size":[0.25,-1.25]}}},{"origin":[0.3026,3.5283,0.6693],"size":[0.0403,0.1613,0.3628],"pivot":[0.3427,3.5283,1.3143],"rotation":[-89.0788,-35.4965,-0.5349],"uv":{"north":{"uv":[51,61],"uv_size":[0.25,0.25]},"east":{"uv":[61,51],"uv_size":[0.25,0.25]},"south":{"uv":[52,61],"uv_size":[0.25,0.25]},"west":{"uv":[61,52],"uv_size":[0.25,0.25]},"up":{"uv":[53,61],"uv_size":[0.25,0.25]},"down":{"uv":[61,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3023,3.5283,0.6693],"size":[0.0403,0.3427,0.3628],"pivot":[0.3427,3.5283,1.3143],"rotation":[-89.0788,-35.4965,-0.5349],"uv":{"north":{"uv":[7,49],"uv_size":[0.25,0.25]},"east":{"uv":[49,7],"uv_size":[0.25,0.25]},"south":{"uv":[8,49],"uv_size":[0.25,0.25]},"west":{"uv":[49,8],"uv_size":[0.25,0.25]},"up":{"uv":[9,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,9.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2827,3.8107,1.2108],"size":[0.0403,0.3023,0.1209],"pivot":[0.3028,3.8107,1.3317],"rotation":[-114.0788,-35.4965,-0.5349],"uv":{"north":{"uv":[10,49],"uv_size":[0.25,0.25]},"east":{"uv":[49,10],"uv_size":[0.25,0.25]},"south":{"uv":[11,49],"uv_size":[0.25,0.25]},"west":{"uv":[49,11],"uv_size":[0.25,0.25]},"up":{"uv":[12,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3023,3.5283,1.0321],"size":[0.0403,0.0403,0.6249],"pivot":[0.3427,3.5283,1.3143],"rotation":[-89.0788,-35.4965,-0.5349],"uv":{"north":{"uv":[13,49],"uv_size":[0.25,0.25]},"east":{"uv":[18,32],"uv_size":[0.5,0.25]},"south":{"uv":[49,13],"uv_size":[0.25,0.25]},"west":{"uv":[32,18],"uv_size":[0.5,0.25]},"up":{"uv":[19,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,19.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2386,3.4985,1.0351],"size":[0.0806,0.1613,0.6249],"pivot":[0.3192,3.4985,1.3475],"rotation":[-87.7542,-70.4861,-2.1169],"uv":{"north":{"uv":[14,49],"uv_size":[0.25,0.25]},"east":{"uv":[20,32],"uv_size":[0.5,0.25]},"south":{"uv":[49,14],"uv_size":[0.25,0.25]},"west":{"uv":[32,20],"uv_size":[0.5,0.25]},"up":{"uv":[21,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,21.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1411,2.8027,1.3228],"size":[0.2016,0.0806,1.3706],"pivot":[0.2419,2.8833,1.3228],"rotation":[-91.5,0,0],"uv":{"north":{"uv":[15,49],"uv_size":[0.25,0.25]},"east":{"uv":[16,14],"uv_size":[1.25,0.25]},"south":{"uv":[49,15],"uv_size":[0.25,0.25]},"west":{"uv":[16,15],"uv_size":[1.25,0.25]},"up":{"uv":[16,16],"uv_size":[0.25,1.25]},"down":{"uv":[17,1.25],"uv_size":[0.25,-1.25]}}},{"origin":[0.3023,2.1982,1.0226],"size":[0.0403,0.4434,0.0806],"pivot":[0.3427,2.1982,1.3048],"rotation":[-91.6948,-27.7397,0.789],"uv":{"north":{"uv":[22,32],"uv_size":[0.25,0.5]},"east":{"uv":[32,22],"uv_size":[0.25,0.5]},"south":{"uv":[23,32],"uv_size":[0.25,0.5]},"west":{"uv":[32,23],"uv_size":[0.25,0.5]},"up":{"uv":[16,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1357,2.1094,1.6238],"size":[0.0403,0.3628,0.0605],"pivot":[0.1559,2.4722,1.6238],"rotation":[-116.6948,-27.7397,0.789],"uv":{"north":{"uv":[17,49],"uv_size":[0.25,0.25]},"east":{"uv":[49,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,49],"uv_size":[0.25,0.25]},"west":{"uv":[49,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1357,2.1295,1.6843],"size":[0.0403,0.4233,0.0806],"pivot":[0.1559,2.4722,1.6238],"rotation":[-116.6948,-27.7397,0.789],"uv":{"north":{"uv":[24,32],"uv_size":[0.25,0.5]},"east":{"uv":[32,24],"uv_size":[0.25,0.5]},"south":{"uv":[25,32],"uv_size":[0.25,0.5]},"west":{"uv":[32,25],"uv_size":[0.25,0.5]},"up":{"uv":[20,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2859,2.399,1.2557],"size":[0.0403,0.4031,0.0806],"pivot":[0.306,2.399,1.3364],"rotation":[-114.1948,-27.7397,0.789],"uv":{"north":{"uv":[26,32],"uv_size":[0.25,0.5]},"east":{"uv":[32,26],"uv_size":[0.25,0.5]},"south":{"uv":[27,32],"uv_size":[0.25,0.5]},"west":{"uv":[32,27],"uv_size":[0.25,0.5]},"up":{"uv":[21,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3023,2.1982,1.1033],"size":[0.0403,0.0403,0.6249],"pivot":[0.3427,2.1982,1.3048],"rotation":[-91.6948,-27.7397,0.789],"uv":{"north":{"uv":[22,49],"uv_size":[0.25,0.25]},"east":{"uv":[28,32],"uv_size":[0.5,0.25]},"south":{"uv":[49,22],"uv_size":[0.25,0.25]},"west":{"uv":[32,28],"uv_size":[0.5,0.25]},"up":{"uv":[29,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,29.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.3023,2.1982,0.6397],"size":[0.0403,0.0403,0.383],"pivot":[0.3427,2.1982,1.3048],"rotation":[-91.6948,-27.7397,0.789],"uv":{"north":{"uv":[23,49],"uv_size":[0.25,0.25]},"east":{"uv":[30,32],"uv_size":[0.5,0.25]},"south":{"uv":[49,23],"uv_size":[0.25,0.25]},"west":{"uv":[32,30],"uv_size":[0.5,0.25]},"up":{"uv":[31,32],"uv_size":[0.25,0.5]},"down":{"uv":[32,31.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0806,2.8833,1.3228],"size":[0.0605,0.2822,1.4916],"pivot":[0.2419,2.8833,1.3228],"rotation":[-91.5,0,0],"uv":{"north":{"uv":[24,49],"uv_size":[0.25,0.25]},"east":{"uv":[11,13],"uv_size":[1.5,0.25]},"south":{"uv":[49,24],"uv_size":[0.25,0.25]},"west":{"uv":[13,11],"uv_size":[1.5,0.25]},"up":{"uv":[13,12],"uv_size":[0.25,1.5]},"down":{"uv":[0,15.5],"uv_size":[0.25,-1.5]}}},{"origin":[0.0806,4.1765,1.3064],"size":[0.0605,0.2822,1.3101],"pivot":[0.2419,4.1765,1.3064],"rotation":[-89.25,0,0],"uv":{"north":{"uv":[25,49],"uv_size":[0.25,0.25]},"east":{"uv":[2,17],"uv_size":[1.25,0.25]},"south":{"uv":[49,25],"uv_size":[0.25,0.25]},"west":{"uv":[17,2],"uv_size":[1.25,0.25]},"up":{"uv":[5,17],"uv_size":[0.25,1.25]},"down":{"uv":[17,6.25],"uv_size":[0.25,-1.25]}}},{"origin":[0.0806,4.0189,1.5885],"size":[0.0605,0.1613,1.3101],"pivot":[0.2419,4.1802,1.5885],"rotation":[-86,0,0],"uv":{"north":{"uv":[26,49],"uv_size":[0.25,0.25]},"east":{"uv":[17,3],"uv_size":[1.25,0.25]},"south":{"uv":[49,26],"uv_size":[0.25,0.25]},"west":{"uv":[17,9],"uv_size":[1.25,0.25]},"up":{"uv":[6,17],"uv_size":[0.25,1.25]},"down":{"uv":[9,18.25],"uv_size":[0.25,-1.25]}}},{"origin":[0.3023,3.5283,1.657],"size":[0.0403,0.4031,0.0806],"pivot":[0.3427,3.5283,1.3143],"rotation":[-89.125,-30.9971,-0.4506],"uv":{"north":{"uv":[32,32],"uv_size":[0.25,0.5]},"east":{"uv":[0,33],"uv_size":[0.25,0.5]},"south":{"uv":[33,0],"uv_size":[0.25,0.5]},"west":{"uv":[1,33],"uv_size":[0.25,0.5]},"up":{"uv":[27,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2845,3.1053,1.2634],"size":[0.0403,0.3427,0.0806],"pivot":[0.3046,3.1053,1.344],"rotation":[-114.125,-30.9971,-0.4506],"uv":{"north":{"uv":[28,49],"uv_size":[0.25,0.25]},"east":{"uv":[49,28],"uv_size":[0.25,0.25]},"south":{"uv":[29,49],"uv_size":[0.25,0.25]},"west":{"uv":[49,29],"uv_size":[0.25,0.25]},"up":{"uv":[30,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,30.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1287,2.8467,1.6021],"size":[0.0403,0.3427,0.0605],"pivot":[0.1489,3.1893,1.6021],"rotation":[-114.125,-30.9971,-0.4506],"uv":{"north":{"uv":[31,49],"uv_size":[0.25,0.25]},"east":{"uv":[49,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,49],"uv_size":[0.25,0.25]},"west":{"uv":[49,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1287,2.887,1.6626],"size":[0.0403,0.3628,0.0806],"pivot":[0.1489,3.1893,1.6021],"rotation":[-114.125,-30.9971,-0.4506],"uv":{"north":{"uv":[34,49],"uv_size":[0.25,0.25]},"east":{"uv":[49,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,49],"uv_size":[0.25,0.25]},"west":{"uv":[49,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3023,3.5283,1.7376],"size":[0.0403,0.0403,0.2419],"pivot":[0.3427,3.5283,1.3143],"rotation":[-89.125,-30.9971,-0.4506],"uv":{"north":{"uv":[37,49],"uv_size":[0.25,0.25]},"east":{"uv":[49,37],"uv_size":[0.25,0.25]},"south":{"uv":[38,49],"uv_size":[0.25,0.25]},"west":{"uv":[49,38],"uv_size":[0.25,0.25]},"up":{"uv":[39,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,39.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2413,2.9845,1.2351],"size":[0.0806,0.1613,0.262],"pivot":[0.3219,2.9845,1.356],"rotation":[-88.1566,-65.989,-1.684],"uv":{"north":{"uv":[40,49],"uv_size":[0.25,0.25]},"east":{"uv":[49,40],"uv_size":[0.25,0.25]},"south":{"uv":[41,49],"uv_size":[0.25,0.25]},"west":{"uv":[49,41],"uv_size":[0.25,0.25]},"up":{"uv":[42,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2433,2.6708,1.1614],"size":[0.0806,0.1613,0.383],"pivot":[0.3239,2.6708,1.3529],"rotation":[-93.6837,-65.956,3.3648],"uv":{"north":{"uv":[43,49],"uv_size":[0.25,0.25]},"east":{"uv":[33,1],"uv_size":[0.5,0.25]},"south":{"uv":[49,43],"uv_size":[0.25,0.25]},"west":{"uv":[2,33],"uv_size":[0.5,0.25]},"up":{"uv":[33,2],"uv_size":[0.25,0.5]},"down":{"uv":[3,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.2836,2.0865,1.0252],"size":[0.0403,0.1613,0.6248],"pivot":[0.3239,2.0865,1.3376],"rotation":[-93.2732,-62.7119,2.9096],"uv":{"north":{"uv":[44,49],"uv_size":[0.25,0.25]},"east":{"uv":[33,3],"uv_size":[0.5,0.25]},"south":{"uv":[49,44],"uv_size":[0.25,0.25]},"west":{"uv":[4,33],"uv_size":[0.5,0.25]},"up":{"uv":[33,4],"uv_size":[0.25,0.5]},"down":{"uv":[5,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0806,2.712,1.6799],"size":[0.0605,0.1613,1.5722],"pivot":[0.2419,2.8732,1.6799],"rotation":[-88,0,0],"uv":{"north":{"uv":[45,49],"uv_size":[0.25,0.25]},"east":{"uv":[14,0],"uv_size":[1.5,0.25]},"south":{"uv":[49,45],"uv_size":[0.25,0.25]},"west":{"uv":[1,14],"uv_size":[1.5,0.25]},"up":{"uv":[14,1],"uv_size":[0.25,1.5]},"down":{"uv":[3,15.5],"uv_size":[0.25,-1.5]}}},{"origin":[0.1411,3.4461,0.9791],"size":[0.0605,0.0806,1.3101],"pivot":[0.1411,3.5267,1.6342],"rotation":[-81.3886,62.2331,7.6322],"uv":{"north":{"uv":[46,49],"uv_size":[0.25,0.25]},"east":{"uv":[17,10],"uv_size":[1.25,0.25]},"south":{"uv":[49,46],"uv_size":[0.25,0.25]},"west":{"uv":[11,17],"uv_size":[1.25,0.25]},"up":{"uv":[14,17],"uv_size":[0.25,1.25]},"down":{"uv":[15,18.25],"uv_size":[0.25,-1.25]}}},{"origin":[0.1411,1.9868,0.9212],"size":[0.0605,0.1008,1.1086],"pivot":[0.1411,2.0876,1.7073],"rotation":[-85.6386,62.6823,3.8765],"uv":{"north":{"uv":[47,49],"uv_size":[0.25,0.25]},"east":{"uv":[21,10],"uv_size":[1,0.25]},"south":{"uv":[49,47],"uv_size":[0.25,0.25]},"west":{"uv":[11,21],"uv_size":[1,0.25]},"up":{"uv":[21,11],"uv_size":[0.25,1]},"down":{"uv":[12,22],"uv_size":[0.25,-1]}}},{"origin":[0.3023,2.1982,1.7281],"size":[0.0403,0.4838,0.4838],"pivot":[0.3427,2.1982,1.3048],"rotation":[-91.6584,-25.2407,0.7073],"uv":{"north":{"uv":[33,5],"uv_size":[0.25,0.5]},"east":{"uv":[21,12],"uv_size":[0.5,0.5]},"south":{"uv":[6,33],"uv_size":[0.25,0.5]},"west":{"uv":[13,21],"uv_size":[0.5,0.5]},"up":{"uv":[33,6],"uv_size":[0.25,0.5]},"down":{"uv":[7,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.1323,1.3627,1.6496],"size":[0.0403,0.4031,0.0806],"pivot":[0.1525,1.7658,1.6496],"rotation":[-116.6584,-25.2407,0.7073],"uv":{"north":{"uv":[33,7],"uv_size":[0.25,0.5]},"east":{"uv":[8,33],"uv_size":[0.25,0.5]},"south":{"uv":[33,8],"uv_size":[0.25,0.5]},"west":{"uv":[9,33],"uv_size":[0.25,0.5]},"up":{"uv":[48,49],"uv_size":[0.25,0.25]},"down":{"uv":[49,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1323,1.403,1.7302],"size":[0.0403,0.2016,0.0806],"pivot":[0.1525,1.7658,1.6496],"rotation":[-116.6584,-25.2407,0.7073],"uv":{"north":{"uv":[49,49],"uv_size":[0.25,0.25]},"east":{"uv":[0,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,0],"uv_size":[0.25,0.25]},"west":{"uv":[1,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,1],"uv_size":[0.25,0.25]},"down":{"uv":[2,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,5.1194,1.2231],"size":[0.0605,0.2822,0.9675],"pivot":[0.2318,5.1194,1.2231],"rotation":[-85,0,0],"uv":{"north":{"uv":[50,2],"uv_size":[0.25,0.25]},"east":{"uv":[21,13],"uv_size":[1,0.25]},"south":{"uv":[3,50],"uv_size":[0.25,0.25]},"west":{"uv":[14,21],"uv_size":[1,0.25]},"up":{"uv":[21,14],"uv_size":[0.25,1]},"down":{"uv":[15,22],"uv_size":[0.25,-1]}}},{"origin":[0.1008,4.3153,1.2655],"size":[0.0403,0.1613,0.7469],"pivot":[0.1411,4.6621,1.5463],"rotation":[-83.8633,-35.3831,-3.5624],"uv":{"north":{"uv":[50,3],"uv_size":[0.25,0.25]},"east":{"uv":[25,11],"uv_size":[0.75,0.25]},"south":{"uv":[4,50],"uv_size":[0.25,0.25]},"west":{"uv":[12,25],"uv_size":[0.75,0.25]},"up":{"uv":[25,12],"uv_size":[0.25,0.75]},"down":{"uv":[13,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.1852,4.9163,1.2291],"size":[0.1613,0.212,0.0551],"pivot":[0.3262,4.9163,1.2291],"rotation":[-63.8633,-35.3831,-3.5624],"uv":{"north":{"uv":[50,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,4.4766,1.0639],"size":[0.0605,0.1855,0.9485],"pivot":[0.1411,4.6621,1.5463],"rotation":[-83.8633,-35.3831,-3.5624],"uv":{"north":{"uv":[50,7],"uv_size":[0.25,0.25]},"east":{"uv":[21,15],"uv_size":[1,0.25]},"south":{"uv":[8,50],"uv_size":[0.25,0.25]},"west":{"uv":[16,21],"uv_size":[1,0.25]},"up":{"uv":[21,16],"uv_size":[0.25,1]},"down":{"uv":[17,22],"uv_size":[0.25,-1]}}},{"origin":[0.3061,4.1722,1.2745],"size":[0.0403,0.3462,0.0197],"pivot":[0.3262,4.1722,1.2942],"rotation":[-87.1133,-35.3831,-3.5624],"uv":{"north":{"uv":[50,8],"uv_size":[0.25,0.25]},"east":{"uv":[9,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,9],"uv_size":[0.25,0.25]},"west":{"uv":[10,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,5.8114,0.37],"size":[0.0605,0.3628,1.4109],"pivot":[0.2318,5.8114,1.0754],"rotation":[-84.5,0,0],"uv":{"north":{"uv":[50,11],"uv_size":[0.25,0.25]},"east":{"uv":[14,3],"uv_size":[1.5,0.25]},"south":{"uv":[12,50],"uv_size":[0.25,0.25]},"west":{"uv":[14,4],"uv_size":[1.5,0.25]},"up":{"uv":[7,14],"uv_size":[0.25,1.5]},"down":{"uv":[14,8.5],"uv_size":[0.25,-1.5]}}},{"origin":[0.0806,5.8921,0.2893],"size":[0.0605,0.2822,0.0806],"pivot":[0.2318,5.8114,1.0754],"rotation":[-84.5,0,0],"uv":{"north":{"uv":[50,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,6.4674,1.2],"size":[0.0605,0.1613,0.1613],"pivot":[0.1109,6.6287,1.3612],"rotation":[-34.5,0,0],"uv":{"north":{"uv":[50,15],"uv_size":[0.25,0.25]},"east":{"uv":[16,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,16],"uv_size":[0.25,0.25]},"west":{"uv":[17,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,6.3975,1.2283],"size":[0.0605,0.3225,0.0806],"pivot":[0.2116,6.72,1.2283],"rotation":[-54.5,0,0],"uv":{"north":{"uv":[50,18],"uv_size":[0.25,0.25]},"east":{"uv":[19,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,19],"uv_size":[0.25,0.25]},"west":{"uv":[20,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,5.4994,0.7311],"size":[0.0605,0.1613,0.2822],"pivot":[0.1411,5.8462,1.4366],"rotation":[-83.2516,-35.3495,-3.9164],"uv":{"north":{"uv":[50,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1941,6.094,1.1933],"size":[0.0605,0.1574,0.0349],"pivot":[0.2243,6.2514,1.2282],"rotation":[-70.7516,-35.3495,-3.9164],"uv":{"north":{"uv":[50,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,5.4994,1.2552],"size":[0.0605,0.1613,0.3023],"pivot":[0.1411,5.8462,1.4366],"rotation":[-83.2516,-35.3495,-3.9164],"uv":{"north":{"uv":[50,27],"uv_size":[0.25,0.25]},"east":{"uv":[28,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,28],"uv_size":[0.25,0.25]},"west":{"uv":[29,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1941,5.5539,1.2387],"size":[0.0605,0.1558,0.0417],"pivot":[0.2243,5.7097,1.2804],"rotation":[-68.2516,-35.3495,-3.9164],"uv":{"north":{"uv":[50,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2878,5.9981,1.1208],"size":[0.0605,0.1737,0.0492],"pivot":[0.318,5.9981,1.1208],"rotation":[-65.5016,-35.3495,-3.9164],"uv":{"north":{"uv":[50,33],"uv_size":[0.25,0.25]},"east":{"uv":[34,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,34],"uv_size":[0.25,0.25]},"west":{"uv":[35,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,35],"uv_size":[0.25,0.25]},"down":{"uv":[36,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,5.4994,1.7994],"size":[0.0605,0.1613,0.3024],"pivot":[0.1411,5.8462,1.4366],"rotation":[-83.2516,-35.3495,-3.9164],"uv":{"north":{"uv":[50,36],"uv_size":[0.25,0.25]},"east":{"uv":[37,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,37],"uv_size":[0.25,0.25]},"west":{"uv":[38,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.1941,5.0105,1.2976],"size":[0.0605,0.1574,0.0349],"pivot":[0.2243,5.168,1.3326],"rotation":[-70.7516,-35.3495,-3.9164],"uv":{"north":{"uv":[50,39],"uv_size":[0.25,0.25]},"east":{"uv":[40,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,40],"uv_size":[0.25,0.25]},"west":{"uv":[41,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,41],"uv_size":[0.25,0.25]},"down":{"uv":[42,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2878,5.4563,1.173],"size":[0.0605,0.1918,0.0551],"pivot":[0.318,5.4563,1.173],"rotation":[-63.2516,-35.3495,-3.9164],"uv":{"north":{"uv":[50,42],"uv_size":[0.25,0.25]},"east":{"uv":[43,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,43],"uv_size":[0.25,0.25]},"west":{"uv":[44,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,5.6607,0.7311],"size":[0.0605,0.1855,1.4109],"pivot":[0.1411,5.8462,1.4366],"rotation":[-83.2516,-35.3495,-3.9164],"uv":{"north":{"uv":[50,45],"uv_size":[0.25,0.25]},"east":{"uv":[14,5],"uv_size":[1.5,0.25]},"south":{"uv":[46,50],"uv_size":[0.25,0.25]},"west":{"uv":[8,14],"uv_size":[1.5,0.25]},"up":{"uv":[14,9],"uv_size":[0.25,1.5]},"down":{"uv":[10,15.5],"uv_size":[0.25,-1.5]}}},{"origin":[0.2878,6.5197,1.0706],"size":[0.0605,0.3386,0.0751],"pivot":[0.318,6.5197,1.0706],"rotation":[-70.7516,-35.3495,-3.9164],"uv":{"north":{"uv":[50,46],"uv_size":[0.25,0.25]},"east":{"uv":[47,50],"uv_size":[0.25,0.25]},"south":{"uv":[50,47],"uv_size":[0.25,0.25]},"west":{"uv":[48,50],"uv_size":[0.25,0.25]},"up":{"uv":[50,48],"uv_size":[0.25,0.25]},"down":{"uv":[49,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0202,5.4994,0.7311],"size":[0.0605,0.2662,1.6528],"pivot":[0.1411,5.8462,1.4366],"rotation":[-83.2516,-35.3495,-3.9164],"uv":{"north":{"uv":[50,49],"uv_size":[0.25,0.25]},"east":{"uv":[0,11],"uv_size":[1.75,0.25]},"south":{"uv":[50,50],"uv_size":[0.25,0.25]},"west":{"uv":[11,0],"uv_size":[1.75,0.25]},"up":{"uv":[4,11],"uv_size":[0.25,1.75]},"down":{"uv":[5,12.75],"uv_size":[0.25,-1.75]}}},{"origin":[0.2358,5.0094,1.2224],"size":[0.0403,0.0646,0.1209],"pivot":[0.2559,5.0417,1.2829],"rotation":[-83.2516,0,-3.9164],"uv":{"north":{"uv":[0,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,0],"uv_size":[0.25,0.25]},"south":{"uv":[1,51],"uv_size":[0.25,0.25]},"west":{"uv":[51,1],"uv_size":[0.25,0.25]},"up":{"uv":[2,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2358,5.5511,1.1702],"size":[0.0403,0.0646,0.1209],"pivot":[0.2559,5.5834,1.2307],"rotation":[-83.2516,0,-3.9164],"uv":{"north":{"uv":[3,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,51],"uv_size":[0.25,0.25]},"west":{"uv":[51,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2358,6.0928,1.1181],"size":[0.0403,0.0646,0.1209],"pivot":[0.2559,6.1251,1.1785],"rotation":[-83.2516,0,-3.9164],"uv":{"north":{"uv":[6,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,51],"uv_size":[0.25,0.25]},"west":{"uv":[51,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0403,5.4994,0.7311],"size":[0.0605,0.1855,1.4109],"pivot":[0.1411,5.8462,1.4366],"rotation":[-83.2516,-35.3495,-3.9164],"uv":{"north":{"uv":[9,51],"uv_size":[0.25,0.25]},"east":{"uv":[11,14],"uv_size":[1.5,0.25]},"south":{"uv":[51,9],"uv_size":[0.25,0.25]},"west":{"uv":[14,12],"uv_size":[1.5,0.25]},"up":{"uv":[13,14],"uv_size":[0.25,1.5]},"down":{"uv":[14,14.5],"uv_size":[0.25,-1.5]}}},{"origin":[0.1411,4.8097,0.6142],"size":[0.2016,0,0],"pivot":[0.2419,4.8056,1.2491],"rotation":[-84.5,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0.25,0]},"east":{"uv":[0,0],"uv_size":[0,0]},"south":{"uv":[0,0],"uv_size":[0.25,0]},"west":{"uv":[0,0],"uv_size":[0,0]},"up":{"uv":[0,0],"uv_size":[0.25,0]},"down":{"uv":[0,0],"uv_size":[0.25,0]}}},{"origin":[0.0803,6.1499,0.9864],"size":[0.2626,0.1618,0.0812],"inflate":0.001,"pivot":[0.2116,6.251,0.9867],"rotation":[-126.5,0,0],"uv":{"north":{"uv":[10,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,10],"uv_size":[0.25,0.25]},"south":{"uv":[11,51],"uv_size":[0.25,0.25]},"west":{"uv":[51,11],"uv_size":[0.25,0.25]},"up":{"uv":[12,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,12.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,6.0846,0.7768],"size":[0.2626,0.1618,0.0812],"inflate":0.001,"pivot":[0.2116,6.2461,0.8577],"rotation":[-174,0,0],"uv":{"north":{"uv":[13,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,13],"uv_size":[0.25,0.25]},"south":{"uv":[14,51],"uv_size":[0.25,0.25]},"west":{"uv":[51,14],"uv_size":[0.25,0.25]},"up":{"uv":[15,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,6.245,0.76],"size":[0.2626,0.1618,0.0812],"inflate":0.001,"pivot":[0.2116,6.4065,0.8409],"rotation":[141,0,0],"uv":{"north":{"uv":[16,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,16],"uv_size":[0.25,0.25]},"south":{"uv":[17,51],"uv_size":[0.25,0.25]},"west":{"uv":[51,17],"uv_size":[0.25,0.25]},"up":{"uv":[18,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,6.4509,0.8614],"size":[0.2626,0.3634,0.0812],"inflate":0.001,"pivot":[0.2116,6.5318,0.9424],"rotation":[114.5,0,0],"uv":{"north":{"uv":[19,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,51],"uv_size":[0.25,0.25]},"west":{"uv":[51,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,5.1169,1.1829],"size":[0.2626,0.0812,0.7867],"inflate":0.001,"pivot":[0.2116,5.1978,1.1831],"rotation":[-86.75,0,0],"uv":{"north":{"uv":[22,51],"uv_size":[0.25,0.25]},"east":{"uv":[25,13],"uv_size":[0.75,0.25]},"south":{"uv":[51,22],"uv_size":[0.25,0.25]},"west":{"uv":[14,25],"uv_size":[0.75,0.25]},"up":{"uv":[25,14],"uv_size":[0.25,0.75]},"down":{"uv":[15,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0803,4.3074,1.0663],"size":[0.2626,0.1417,0.0812],"inflate":0.001,"pivot":[0.2116,4.4084,1.1472],"rotation":[-39.25,0,0],"uv":{"north":{"uv":[23,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,23],"uv_size":[0.25,0.25]},"south":{"uv":[24,51],"uv_size":[0.25,0.25]},"west":{"uv":[51,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,4.24,1.0207],"size":[0.2626,0.1417,0.0812],"inflate":0.001,"pivot":[0.2116,4.3814,1.021],"rotation":[1.5,0,0],"uv":{"north":{"uv":[26,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,51],"uv_size":[0.25,0.25]},"west":{"uv":[51,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,4.0788,1.0244],"size":[0.2626,0.1618,0.0812],"inflate":0.001,"pivot":[0.2116,4.2404,1.0247],"rotation":[49,0,0],"uv":{"north":{"uv":[29,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,51],"uv_size":[0.25,0.25]},"west":{"uv":[51,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,4.0537,1.1461],"size":[0.2626,0.0812,0.0812],"inflate":0.001,"pivot":[0.2116,4.1346,1.1464],"rotation":[68.5,0,0],"uv":{"north":{"uv":[32,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,51],"uv_size":[0.25,0.25]},"west":{"uv":[51,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,4.1798,-0.7448],"size":[0.2626,0.0812,1.996],"inflate":0.001,"pivot":[0.2116,4.18,1.251],"rotation":[90,0,0],"uv":{"north":{"uv":[35,51],"uv_size":[0.25,0.25]},"east":{"uv":[8,6],"uv_size":[2,0.25]},"south":{"uv":[51,35],"uv_size":[0.25,0.25]},"west":{"uv":[2,9],"uv_size":[2,0.25]},"up":{"uv":[9,3],"uv_size":[0.25,2]},"down":{"uv":[4,11],"uv_size":[0.25,-2]}}},{"origin":[0.0803,4.2604,-0.4424],"size":[0.2626,0.1215,0.8068],"inflate":0.001,"pivot":[0.2116,4.18,1.251],"rotation":[90,0,0],"uv":{"north":{"uv":[36,51],"uv_size":[0.25,0.25]},"east":{"uv":[25,15],"uv_size":[0.75,0.25]},"south":{"uv":[51,36],"uv_size":[0.25,0.25]},"west":{"uv":[16,25],"uv_size":[0.75,0.25]},"up":{"uv":[25,16],"uv_size":[0.25,0.75]},"down":{"uv":[17,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0806,2.1843,0.6259],"size":[0.2626,0.0812,0.6254],"inflate":0.001,"pivot":[0.2116,2.1846,1.251],"rotation":[87,0,0],"uv":{"north":{"uv":[37,51],"uv_size":[0.25,0.25]},"east":{"uv":[25,17],"uv_size":[0.75,0.25]},"south":{"uv":[51,37],"uv_size":[0.25,0.25]},"west":{"uv":[18,25],"uv_size":[0.75,0.25]},"up":{"uv":[25,18],"uv_size":[0.25,0.75]},"down":{"uv":[19,25.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0806,1.6609,1.062],"size":[0.2626,0.0812,0.182],"inflate":0.001,"pivot":[0.2116,1.6612,1.2235],"rotation":[122,0,0],"uv":{"north":{"uv":[38,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,51],"uv_size":[0.25,0.25]},"west":{"uv":[51,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,2.2649,0.6259],"size":[0.2626,0.1014,0.5448],"inflate":0.001,"pivot":[0.2116,2.1846,1.251],"rotation":[87,0,0],"uv":{"north":{"uv":[41,51],"uv_size":[0.25,0.25]},"east":{"uv":[33,9],"uv_size":[0.5,0.25]},"south":{"uv":[51,41],"uv_size":[0.25,0.25]},"west":{"uv":[10,33],"uv_size":[0.5,0.25]},"up":{"uv":[33,10],"uv_size":[0.25,0.5]},"down":{"uv":[11,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0803,1.3228,0.5073],"size":[0.2626,0.2021,1.0084],"inflate":0.001,"pivot":[0.2116,1.4642,1.1325],"rotation":[154.5,0,0],"uv":{"north":{"uv":[42,51],"uv_size":[0.25,0.25]},"east":{"uv":[21,17],"uv_size":[1,0.25]},"south":{"uv":[51,42],"uv_size":[0.25,0.25]},"west":{"uv":[18,21],"uv_size":[1,0.25]},"up":{"uv":[21,18],"uv_size":[0.25,1]},"down":{"uv":[19,22],"uv_size":[0.25,-1]}}},{"origin":[0.0805,1.5243,0.5073],"size":[0.2425,0.7665,0.9278],"inflate":0.001,"pivot":[0.2116,1.4642,1.1325],"rotation":[154.5,0,0],"uv":{"north":{"uv":[25,19],"uv_size":[0.25,0.75]},"east":{"uv":[4,3],"uv_size":[1,0.75]},"south":{"uv":[20,25],"uv_size":[0.25,0.75]},"west":{"uv":[4,4],"uv_size":[1,0.75]},"up":{"uv":[21,19],"uv_size":[0.25,1]},"down":{"uv":[20,22],"uv_size":[0.25,-1]}}},{"origin":[0.0801,1.1403,1.6701],"size":[0.2425,1.0084,0.3231],"inflate":0.001,"pivot":[0.2318,1.1406,1.6704],"rotation":[173.5,0,0],"uv":{"north":{"uv":[21,20],"uv_size":[0.25,1]},"east":{"uv":[21,21],"uv_size":[0.25,1]},"south":{"uv":[0,22],"uv_size":[0.25,1]},"west":{"uv":[22,0],"uv_size":[0.25,1]},"up":{"uv":[43,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3222,0.6953,1.2568],"size":[0.061,0.2021,0.2626],"inflate":0.001,"pivot":[0.3527,0.8064,1.4789],"rotation":[156,0,0],"uv":{"north":{"uv":[44,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,44],"uv_size":[0.25,0.25]},"south":{"uv":[45,51],"uv_size":[0.25,0.25]},"west":{"uv":[51,45],"uv_size":[0.25,0.25]},"up":{"uv":[46,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3827,0.7379,1.3868],"size":[0.2425,0.182,0.182],"inflate":0.001,"pivot":[0.5039,0.8289,1.4779],"rotation":[111,0,0],"uv":{"north":{"uv":[47,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,47],"uv_size":[0.25,0.25]},"south":{"uv":[48,51],"uv_size":[0.25,0.25]},"west":{"uv":[51,48],"uv_size":[0.25,0.25]},"up":{"uv":[49,51],"uv_size":[0.25,0.25]},"down":{"uv":[51,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.6246,0.7782,1.4272],"size":[0.061,0.1014,0.1014],"inflate":0.001,"pivot":[0.5039,0.8289,1.4779],"rotation":[111,0,0],"uv":{"north":{"uv":[50,51],"uv_size":[0.25,0.25]},"east":{"uv":[51,50],"uv_size":[0.25,0.25]},"south":{"uv":[51,51],"uv_size":[0.25,0.25]},"west":{"uv":[0,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3222,0.5604,1.3136],"size":[0.061,0.1798,0.0918],"inflate":0.001,"pivot":[0.3527,0.7399,1.4051],"rotation":[-176.5,0,0],"uv":{"north":{"uv":[52,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,0.8172,1.7262],"size":[0.3029,0.1872,0.0757],"inflate":0.001,"pivot":[0.3527,0.8175,1.7265],"rotation":[178.5,0,0],"uv":{"north":{"uv":[52,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2214,1.0038,1.7262],"size":[0.1014,0.5246,0.0757],"inflate":0.001,"pivot":[0.3527,0.8175,1.7265],"rotation":[178.5,0,0],"uv":{"north":{"uv":[33,11],"uv_size":[0.25,0.5]},"east":{"uv":[12,33],"uv_size":[0.25,0.5]},"south":{"uv":[33,12],"uv_size":[0.25,0.5]},"west":{"uv":[13,33],"uv_size":[0.25,0.5]},"up":{"uv":[52,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0602,1.5279,1.7262],"size":[0.2626,0.1215,0.0757],"inflate":0.001,"pivot":[0.3527,0.8175,1.7265],"rotation":[178.5,0,0],"uv":{"north":{"uv":[52,8],"uv_size":[0.25,0.25]},"east":{"uv":[9,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,9],"uv_size":[0.25,0.25]},"west":{"uv":[10,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,10],"uv_size":[0.25,0.25]},"down":{"uv":[11,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0602,-0.0115,1.7044],"size":[0.2626,0.0988,0.0757],"inflate":0.001,"pivot":[0.1915,-0.0138,1.7047],"rotation":[147.5,0,0],"uv":{"north":{"uv":[52,11],"uv_size":[0.25,0.25]},"east":{"uv":[12,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,12],"uv_size":[0.25,0.25]},"west":{"uv":[13,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0602,-0.0971,1.6521],"size":[0.2626,0.0988,0.0757],"inflate":0.001,"pivot":[0.1915,-0.0994,1.6523],"rotation":[113.5,0,0],"uv":{"north":{"uv":[52,14],"uv_size":[0.25,0.25]},"east":{"uv":[15,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,15],"uv_size":[0.25,0.25]},"west":{"uv":[16,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0602,-0.1373,1.5596],"size":[0.2626,0.0988,0.0757],"inflate":0.001,"pivot":[0.1915,-0.1396,1.5599],"rotation":[68.5,0,0],"uv":{"north":{"uv":[52,17],"uv_size":[0.25,0.25]},"east":{"uv":[18,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,18],"uv_size":[0.25,0.25]},"west":{"uv":[19,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4028,-0.0592,1.5596],"size":[0.1014,0.4037,0.0757],"inflate":0.001,"pivot":[0.1915,-0.1396,1.5599],"rotation":[68.5,0,0],"uv":{"north":{"uv":[33,13],"uv_size":[0.25,0.5]},"east":{"uv":[14,33],"uv_size":[0.25,0.5]},"south":{"uv":[33,14],"uv_size":[0.25,0.5]},"west":{"uv":[15,33],"uv_size":[0.25,0.5]},"up":{"uv":[52,20],"uv_size":[0.25,0.25]},"down":{"uv":[21,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3222,-0.0592,1.5596],"size":[0.0812,0.1215,0.0757],"inflate":0.001,"pivot":[0.1915,-0.1396,1.5599],"rotation":[68.5,0,0],"uv":{"north":{"uv":[52,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.161,-0.1117,1.3483],"size":[0.1618,0.0812,0.0757],"inflate":0.001,"pivot":[0.3225,-0.0308,1.3862],"rotation":[60.879,41.1403,-20.1279],"uv":{"north":{"uv":[52,24],"uv_size":[0.25,0.25]},"east":{"uv":[25,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,25],"uv_size":[0.25,0.25]},"west":{"uv":[26,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,26],"uv_size":[0.25,0.25]},"down":{"uv":[27,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0602,-0.0365,1.5596],"size":[0.1417,0.6632,0.0757],"inflate":0.001,"pivot":[0.1915,-0.1396,1.5599],"rotation":[68.5,0,0],"uv":{"north":{"uv":[25,20],"uv_size":[0.25,0.75]},"east":{"uv":[21,25],"uv_size":[0.25,0.75]},"south":{"uv":[25,21],"uv_size":[0.25,0.75]},"west":{"uv":[22,25],"uv_size":[0.25,0.75]},"up":{"uv":[52,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2013,0.4648,1.5596],"size":[0.061,0.0812,0.0757],"inflate":0.001,"pivot":[0.1915,-0.1396,1.5599],"rotation":[68.5,0,0],"uv":{"north":{"uv":[52,28],"uv_size":[0.25,0.25]},"east":{"uv":[29,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,29],"uv_size":[0.25,0.25]},"west":{"uv":[30,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.4028,0.0724,1.0857],"size":[0.1014,0.6456,0.0757],"inflate":0.001,"pivot":[0.5039,0.0727,1.1236],"rotation":[61.4961,39.8259,-19.1775],"uv":{"north":{"uv":[25,22],"uv_size":[0.25,0.75]},"east":{"uv":[23,25],"uv_size":[0.25,0.75]},"south":{"uv":[25,23],"uv_size":[0.25,0.75]},"west":{"uv":[24,25],"uv_size":[0.25,0.75]},"up":{"uv":[52,31],"uv_size":[0.25,0.25]},"down":{"uv":[32,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.2214,0.1278,1.6404],"size":[0.1014,0.2828,0.0757],"inflate":0.001,"pivot":[0.2217,0.4103,1.6782],"rotation":[178.7042,-0.7556,-30.2415],"uv":{"north":{"uv":[52,32],"uv_size":[0.25,0.25]},"east":{"uv":[33,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,33],"uv_size":[0.25,0.25]},"west":{"uv":[34,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,34],"uv_size":[0.25,0.25]},"down":{"uv":[35,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3222,0.3495,1.643],"size":[0.1339,0.1616,0.0757],"inflate":0.001,"pivot":[0.3225,0.5111,1.6809],"rotation":[179.3225,-1.3383,-63.1453],"uv":{"north":{"uv":[52,35],"uv_size":[0.25,0.25]},"east":{"uv":[36,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,36],"uv_size":[0.25,0.25]},"west":{"uv":[37,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,37],"uv_size":[0.25,0.25]},"down":{"uv":[38,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,1.5394,0.5108],"size":[0.2425,0.706,0.3231],"inflate":0.001,"pivot":[0.2318,1.5397,0.8336],"rotation":[141.5,0,0],"uv":{"north":{"uv":[25,24],"uv_size":[0.25,0.75]},"east":{"uv":[25,25],"uv_size":[0.25,0.75]},"south":{"uv":[0,26],"uv_size":[0.25,0.75]},"west":{"uv":[26,0],"uv_size":[0.25,0.75]},"up":{"uv":[52,38],"uv_size":[0.25,0.25]},"down":{"uv":[39,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,0.6648,-0.2509],"size":[0.2425,0.3231,0.6456],"inflate":0.001,"pivot":[0.2318,0.9876,0.3944],"rotation":[117.25,0,0],"uv":{"north":{"uv":[52,39],"uv_size":[0.25,0.25]},"east":{"uv":[1,26],"uv_size":[0.75,0.25]},"south":{"uv":[40,52],"uv_size":[0.25,0.25]},"west":{"uv":[26,1],"uv_size":[0.75,0.25]},"up":{"uv":[2,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,2.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0803,0.0914,-0.1168],"size":[0.2425,0.3231,0.8068],"inflate":0.001,"pivot":[0.2318,0.4142,0.6897],"rotation":[154.75,0,0],"uv":{"north":{"uv":[52,40],"uv_size":[0.25,0.25]},"east":{"uv":[3,26],"uv_size":[0.75,0.25]},"south":{"uv":[41,52],"uv_size":[0.25,0.25]},"west":{"uv":[26,3],"uv_size":[0.75,0.25]},"up":{"uv":[4,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,4.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.3222,0.1721,-0.1168],"size":[0.061,0.2424,0.8068],"inflate":0.001,"pivot":[0.2318,0.4142,0.6897],"rotation":[154.75,0,0],"uv":{"north":{"uv":[52,41],"uv_size":[0.25,0.25]},"east":{"uv":[5,26],"uv_size":[0.75,0.25]},"south":{"uv":[42,52],"uv_size":[0.25,0.25]},"west":{"uv":[26,5],"uv_size":[0.75,0.25]},"up":{"uv":[6,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,6.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.3224,0.7455,-0.2509],"size":[0.061,0.2424,0.6456],"inflate":0.001,"pivot":[0.2318,0.9876,0.3944],"rotation":[117.25,0,0],"uv":{"north":{"uv":[52,42],"uv_size":[0.25,0.25]},"east":{"uv":[7,26],"uv_size":[0.75,0.25]},"south":{"uv":[43,52],"uv_size":[0.25,0.25]},"west":{"uv":[26,7],"uv_size":[0.75,0.25]},"up":{"uv":[8,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,8.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.3222,0.8651,0.7291],"size":[0.061,0.1014,0.2021],"inflate":0.001,"pivot":[0.3527,0.8654,0.7294],"rotation":[82.25,0,0],"uv":{"north":{"uv":[52,43],"uv_size":[0.25,0.25]},"east":{"uv":[44,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,44],"uv_size":[0.25,0.25]},"west":{"uv":[45,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,45],"uv_size":[0.25,0.25]},"down":{"uv":[46,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3222,1.6201,0.5914],"size":[0.061,0.6254,0.2424],"inflate":0.001,"pivot":[0.2318,1.5397,0.8336],"rotation":[141.5,0,0],"uv":{"north":{"uv":[9,26],"uv_size":[0.25,0.75]},"east":{"uv":[26,9],"uv_size":[0.25,0.75]},"south":{"uv":[10,26],"uv_size":[0.25,0.75]},"west":{"uv":[26,10],"uv_size":[0.25,0.75]},"up":{"uv":[52,46],"uv_size":[0.25,0.25]},"down":{"uv":[47,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3222,1.3516,0.7025],"size":[0.061,0.1253,0.0809],"inflate":0.001,"pivot":[0.3527,1.4766,0.7834],"rotation":[103.3695,0,0],"uv":{"north":{"uv":[52,47],"uv_size":[0.25,0.25]},"east":{"uv":[48,52],"uv_size":[0.25,0.25]},"south":{"uv":[52,48],"uv_size":[0.25,0.25]},"west":{"uv":[49,52],"uv_size":[0.25,0.25]},"up":{"uv":[52,49],"uv_size":[0.25,0.25]},"down":{"uv":[50,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.3222,1.5243,0.6484],"size":[0.061,0.2425,0.706],"inflate":0.001,"pivot":[0.2116,1.4642,1.1325],"rotation":[154.5,0,0],"uv":{"north":{"uv":[52,50],"uv_size":[0.25,0.25]},"east":{"uv":[11,26],"uv_size":[0.75,0.25]},"south":{"uv":[51,52],"uv_size":[0.25,0.25]},"west":{"uv":[26,11],"uv_size":[0.75,0.25]},"up":{"uv":[12,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,12.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.3222,1.201,1.5428],"size":[0.061,0.2244,0.0911],"inflate":0.001,"pivot":[0.3527,1.2013,1.5431],"rotation":[177,0,0],"uv":{"north":{"uv":[52,51],"uv_size":[0.25,0.25]},"east":{"uv":[52,52],"uv_size":[0.25,0.25]},"south":{"uv":[0,53],"uv_size":[0.25,0.25]},"west":{"uv":[53,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.322,1.0815,1.0202],"size":[0.061,0.1014,0.2424],"inflate":0.001,"pivot":[0.3527,1.1826,1.0205],"rotation":[-168,0,0],"uv":{"north":{"uv":[2,53],"uv_size":[0.25,0.25]},"east":{"uv":[53,2],"uv_size":[0.25,0.25]},"south":{"uv":[3,53],"uv_size":[0.25,0.25]},"west":{"uv":[53,3],"uv_size":[0.25,0.25]},"up":{"uv":[4,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,4.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,-0.0106,1.2658],"size":[0.2425,0.0811,0.1534],"inflate":0.001,"pivot":[0.2318,0.0703,1.4189],"rotation":[-153.5622,0,0],"uv":{"north":{"uv":[5,53],"uv_size":[0.25,0.25]},"east":{"uv":[53,5],"uv_size":[0.25,0.25]},"south":{"uv":[6,53],"uv_size":[0.25,0.25]},"west":{"uv":[53,6],"uv_size":[0.25,0.25]},"up":{"uv":[7,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,1.4961,0.8957],"size":[0.2626,0.1618,0.1618],"inflate":0.001,"pivot":[0.2116,1.577,0.896],"rotation":[-170.5,0,0],"uv":{"north":{"uv":[8,53],"uv_size":[0.25,0.25]},"east":{"uv":[53,8],"uv_size":[0.25,0.25]},"south":{"uv":[9,53],"uv_size":[0.25,0.25]},"west":{"uv":[53,9],"uv_size":[0.25,0.25]},"up":{"uv":[10,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0808,5.833,0.3064],"size":[0.2217,0.4434,0.3427],"pivot":[0.2116,5.8834,0.5281],"rotation":[-14,0,0],"uv":{"north":{"uv":[33,15],"uv_size":[0.25,0.5]},"east":{"uv":[16,33],"uv_size":[0.25,0.5]},"south":{"uv":[33,16],"uv_size":[0.25,0.5]},"west":{"uv":[17,33],"uv_size":[0.25,0.5]},"up":{"uv":[11,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,5.7068,0.3008],"size":[0.2217,0.1814,0.3225],"pivot":[0.2116,5.8882,0.3008],"rotation":[16,0,0],"uv":{"north":{"uv":[12,53],"uv_size":[0.25,0.25]},"east":{"uv":[53,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,53],"uv_size":[0.25,0.25]},"west":{"uv":[53,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,5.4115,0.5523],"size":[0.2217,0.3023,0.1008],"pivot":[0.2116,5.7138,0.3508],"rotation":[44.25,0,0],"uv":{"north":{"uv":[15,53],"uv_size":[0.25,0.25]},"east":{"uv":[53,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,53],"uv_size":[0.25,0.25]},"west":{"uv":[53,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,5.1696,0.3508],"size":[0.2217,0.5442,0.2016],"pivot":[0.2116,5.7138,0.3508],"rotation":[44.25,0,0],"uv":{"north":{"uv":[33,17],"uv_size":[0.25,0.5]},"east":{"uv":[18,33],"uv_size":[0.25,0.5]},"south":{"uv":[33,18],"uv_size":[0.25,0.5]},"west":{"uv":[19,33],"uv_size":[0.25,0.5]},"up":{"uv":[18,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,18.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,5.0015,0.7305],"size":[0.2217,0.3427,0.0806],"pivot":[0.2116,5.324,0.7305],"rotation":[16.75,0,0],"uv":{"north":{"uv":[19,53],"uv_size":[0.25,0.25]},"east":{"uv":[53,19],"uv_size":[0.25,0.25]},"south":{"uv":[20,53],"uv_size":[0.25,0.25]},"west":{"uv":[53,20],"uv_size":[0.25,0.25]},"up":{"uv":[21,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,21.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,6.3184,0.4081],"size":[0.2217,0.1209,0.2217],"pivot":[0.2116,6.3184,0.4081],"rotation":[-41.5,0,0],"uv":{"north":{"uv":[22,53],"uv_size":[0.25,0.25]},"east":{"uv":[53,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,53],"uv_size":[0.25,0.25]},"west":{"uv":[53,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,6.409,0.4882],"size":[0.2217,0.1814,0.262],"pivot":[0.2116,6.409,0.4882],"rotation":[-70,0,0],"uv":{"north":{"uv":[25,53],"uv_size":[0.25,0.25]},"east":{"uv":[53,25],"uv_size":[0.25,0.25]},"south":{"uv":[26,53],"uv_size":[0.25,0.25]},"west":{"uv":[53,26],"uv_size":[0.25,0.25]},"up":{"uv":[27,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,27.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,6.0434,0.7483],"size":[0.2217,0.1814,0.8667],"pivot":[0.2116,6.2248,0.7483],"rotation":[-79.75,0,0],"uv":{"north":{"uv":[28,53],"uv_size":[0.25,0.25]},"east":{"uv":[13,26],"uv_size":[0.75,0.25]},"south":{"uv":[53,28],"uv_size":[0.25,0.25]},"west":{"uv":[26,13],"uv_size":[0.75,0.25]},"up":{"uv":[14,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,14.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0806,5.251,0.9025],"size":[0.2217,0.1209,0.9877],"pivot":[0.2116,5.3719,0.9025],"rotation":[-85.25,0,0],"uv":{"north":{"uv":[29,53],"uv_size":[0.25,0.25]},"east":{"uv":[1,22],"uv_size":[1,0.25]},"south":{"uv":[53,29],"uv_size":[0.25,0.25]},"west":{"uv":[22,1],"uv_size":[1,0.25]},"up":{"uv":[2,22],"uv_size":[0.25,1]},"down":{"uv":[22,3],"uv_size":[0.25,-1]}}},{"origin":[0.0803,3.3414,0.9276],"size":[0.2217,0.1814,0.9675],"pivot":[0.2116,3.5228,0.9276],"rotation":[-102.5,0,0],"uv":{"north":{"uv":[30,53],"uv_size":[0.25,0.25]},"east":{"uv":[3,22],"uv_size":[1,0.25]},"south":{"uv":[53,30],"uv_size":[0.25,0.25]},"west":{"uv":[22,3],"uv_size":[1,0.25]},"up":{"uv":[4,22],"uv_size":[0.25,1]},"down":{"uv":[22,5],"uv_size":[0.25,-1]}}},{"origin":[0.0803,2.6175,0.5411],"size":[0.2217,0.1814,0.1814],"pivot":[0.2116,2.6175,0.5411],"rotation":[-62.5,0,0],"uv":{"north":{"uv":[31,53],"uv_size":[0.25,0.25]},"east":{"uv":[53,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,53],"uv_size":[0.25,0.25]},"west":{"uv":[53,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,4.2063,0.5006],"size":[0.2217,0.1008,0.4838],"pivot":[0.2116,4.3877,0.9843],"rotation":[-93.75,0,0],"uv":{"north":{"uv":[34,53],"uv_size":[0.25,0.25]},"east":{"uv":[33,19],"uv_size":[0.5,0.25]},"south":{"uv":[53,34],"uv_size":[0.25,0.25]},"west":{"uv":[20,33],"uv_size":[0.5,0.25]},"up":{"uv":[33,20],"uv_size":[0.25,0.5]},"down":{"uv":[21,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0806,4.9602,0.8154],"size":[0.2217,0.1209,0.4031],"pivot":[0.2116,4.9602,0.8154],"rotation":[-107.25,0,0],"uv":{"north":{"uv":[35,53],"uv_size":[0.25,0.25]},"east":{"uv":[33,21],"uv_size":[0.5,0.25]},"south":{"uv":[53,35],"uv_size":[0.25,0.25]},"west":{"uv":[22,33],"uv_size":[0.5,0.25]},"up":{"uv":[33,22],"uv_size":[0.25,0.5]},"down":{"uv":[23,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0804,4.5752,0.6353],"size":[0.2217,0.2822,0.4434],"pivot":[0.2116,4.5752,0.6958],"rotation":[-125,0,0],"uv":{"north":{"uv":[36,53],"uv_size":[0.25,0.25]},"east":{"uv":[33,23],"uv_size":[0.5,0.25]},"south":{"uv":[53,36],"uv_size":[0.25,0.25]},"west":{"uv":[24,33],"uv_size":[0.5,0.25]},"up":{"uv":[33,24],"uv_size":[0.25,0.5]},"down":{"uv":[25,33.5],"uv_size":[0.25,-0.5]}}},{"origin":[0.0806,4.2615,0.4762],"size":[0.2217,0.383,0.8063],"pivot":[0.2116,4.2615,0.4762],"rotation":[-95,0,0],"uv":{"north":{"uv":[33,25],"uv_size":[0.25,0.5]},"east":{"uv":[5,4],"uv_size":[0.75,0.5]},"south":{"uv":[26,33],"uv_size":[0.25,0.5]},"west":{"uv":[11,1],"uv_size":[0.75,0.5]},"up":{"uv":[15,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,15.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0813,3.042,0.7874],"size":[0.2217,0.383,0.8466],"pivot":[0.2116,3.4249,0.7874],"rotation":[-105,0,0],"uv":{"north":{"uv":[33,26],"uv_size":[0.25,0.5]},"east":{"uv":[11,7],"uv_size":[0.75,0.5]},"south":{"uv":[27,33],"uv_size":[0.25,0.5]},"west":{"uv":[1,15],"uv_size":[0.75,0.5]},"up":{"uv":[16,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,16.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0806,2.7063,0.1984],"size":[0.2217,0.4031,0.3225],"pivot":[0.2116,2.7063,0.1984],"rotation":[-76.5,0,0],"uv":{"north":{"uv":[33,27],"uv_size":[0.25,0.5]},"east":{"uv":[28,33],"uv_size":[0.25,0.5]},"south":{"uv":[33,28],"uv_size":[0.25,0.5]},"west":{"uv":[29,33],"uv_size":[0.25,0.5]},"up":{"uv":[37,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0805,2.3927,0.052],"size":[0.2217,0.7055,0.2217],"pivot":[0.2116,2.3927,0.2737],"rotation":[-97.5,0,0],"uv":{"north":{"uv":[17,26],"uv_size":[0.25,0.75]},"east":{"uv":[26,17],"uv_size":[0.25,0.75]},"south":{"uv":[18,26],"uv_size":[0.25,0.75]},"west":{"uv":[26,18],"uv_size":[0.25,0.75]},"up":{"uv":[38,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,38.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,2.3927,0.2737],"size":[0.1008,0.5241,0.645],"pivot":[0.131,2.3927,0.2737],"rotation":[-67.5,0,0],"uv":{"north":{"uv":[33,29],"uv_size":[0.25,0.5]},"east":{"uv":[15,1],"uv_size":[0.75,0.5]},"south":{"uv":[30,33],"uv_size":[0.25,0.5]},"west":{"uv":[2,15],"uv_size":[0.75,0.5]},"up":{"uv":[19,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,19.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0806,1.983,0.4434],"size":[0.1008,0.1613,0.3225],"pivot":[0.131,1.983,0.4434],"rotation":[-92.5,0,0],"uv":{"north":{"uv":[39,53],"uv_size":[0.25,0.25]},"east":{"uv":[53,39],"uv_size":[0.25,0.25]},"south":{"uv":[40,53],"uv_size":[0.25,0.25]},"west":{"uv":[53,40],"uv_size":[0.25,0.25]},"up":{"uv":[41,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,2.5205,0.9416],"size":[0.2217,0.3225,0.2822],"pivot":[0.2116,2.5205,1.002],"rotation":[-158.75,0,0],"uv":{"north":{"uv":[42,53],"uv_size":[0.25,0.25]},"east":{"uv":[53,42],"uv_size":[0.25,0.25]},"south":{"uv":[43,53],"uv_size":[0.25,0.25]},"west":{"uv":[53,43],"uv_size":[0.25,0.25]},"up":{"uv":[44,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0808,2.2199,1.1189],"size":[0.2217,1.3505,0.2217],"pivot":[0.2116,2.2199,1.1189],"rotation":[142.25,0,0],"uv":{"north":{"uv":[17,16],"uv_size":[0.25,1.25]},"east":{"uv":[0,18],"uv_size":[0.25,1.25]},"south":{"uv":[18,0],"uv_size":[0.25,1.25]},"west":{"uv":[1,18],"uv_size":[0.25,1.25]},"up":{"uv":[45,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,1.3155,0.0093],"size":[0.2217,1.0481,0.2217],"pivot":[0.2116,1.3155,0.1706],"rotation":[-151.5,0,0],"uv":{"north":{"uv":[5,22],"uv_size":[0.25,1]},"east":{"uv":[22,5],"uv_size":[0.25,1]},"south":{"uv":[6,22],"uv_size":[0.25,1]},"west":{"uv":[22,6],"uv_size":[0.25,1]},"up":{"uv":[46,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0806,0.3656,0.3757],"size":[0.2217,0.9474,0.2419],"pivot":[0.2116,0.3656,0.6176],"rotation":[-115.75,0,0],"uv":{"north":{"uv":[7,22],"uv_size":[0.25,1]},"east":{"uv":[22,7],"uv_size":[0.25,1]},"south":{"uv":[8,22],"uv_size":[0.25,1]},"west":{"uv":[22,8],"uv_size":[0.25,1]},"up":{"uv":[47,53],"uv_size":[0.25,0.25]},"down":{"uv":[53,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0803,4.2063,0.9843],"size":[0.2217,0.1814,0.8667],"pivot":[0.2116,4.3877,0.9843],"rotation":[-93.75,0,0],"uv":{"north":{"uv":[48,53],"uv_size":[0.25,0.25]},"east":{"uv":[20,26],"uv_size":[0.75,0.25]},"south":{"uv":[53,48],"uv_size":[0.25,0.25]},"west":{"uv":[26,20],"uv_size":[0.75,0.25]},"up":{"uv":[21,26],"uv_size":[0.25,0.75]},"down":{"uv":[26,21.75],"uv_size":[0.25,-0.75]}}}]},{"name":"group15","parent":"treasure_kn","pivot":[0,-0.9584,-0.2222],"cubes":[{"origin":[-0.3429,1.2424,-0.5934],"size":[0.2223,0.061,0.2626],"inflate":0.001,"pivot":[-0.2318,1.3032,-0.4923],"rotation":[-30,0,0],"uv":{"north":{"uv":[14.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[36.25,15],"uv_size":[-0.25,0.25]},"south":{"uv":[15.25,36],"uv_size":[-0.25,0.25]},"west":{"uv":[36.25,14],"uv_size":[-0.25,0.25]},"up":{"uv":[16.25,36],"uv_size":[-0.25,0.25]},"down":{"uv":[36.25,16.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,1.182,-0.3529],"size":[0.2223,0.0403,0.0459],"inflate":0.001,"pivot":[-0.2318,1.2226,-0.3527],"rotation":[-70.1116,0,0],"uv":{"north":{"uv":[17.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[36.25,18],"uv_size":[-0.25,0.25]},"south":{"uv":[18.25,36],"uv_size":[-0.25,0.25]},"west":{"uv":[36.25,17],"uv_size":[-0.25,0.25]},"up":{"uv":[19.25,36],"uv_size":[-0.25,0.25]},"down":{"uv":[36.25,19.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,1.2354,-0.7249],"size":[0.2223,0.0409,0.2425],"inflate":0.001,"pivot":[-0.2318,1.276,-0.4626],"rotation":[-42.5,0,0],"uv":{"north":{"uv":[20.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[36.25,21],"uv_size":[-0.25,0.25]},"south":{"uv":[21.25,36],"uv_size":[-0.25,0.25]},"west":{"uv":[36.25,20],"uv_size":[-0.25,0.25]},"up":{"uv":[22.25,36],"uv_size":[-0.25,0.25]},"down":{"uv":[36.25,22.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,1.3629,-1.0609],"size":[0.2223,0.0409,0.827],"inflate":0.001,"pivot":[-0.2318,1.3833,-0.6373],"rotation":[-60.75,0,0],"uv":{"north":{"uv":[23.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[0.75,25],"uv_size":[-0.75,0.25]},"south":{"uv":[36.25,23],"uv_size":[-0.25,0.25]},"west":{"uv":[24.75,24],"uv_size":[-0.75,0.25]},"up":{"uv":[25.25,0],"uv_size":[-0.25,0.75]},"down":{"uv":[1.25,25.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.3429,2.3495,-1.1724],"size":[0.2223,0.0409,0.3432],"inflate":0.001,"pivot":[-0.2318,2.3699,-0.9604],"rotation":[-45.75,0,0],"uv":{"north":{"uv":[24.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[36.25,25],"uv_size":[-0.25,0.25]},"south":{"uv":[25.25,36],"uv_size":[-0.25,0.25]},"west":{"uv":[36.25,24],"uv_size":[-0.25,0.25]},"up":{"uv":[26.25,36],"uv_size":[-0.25,0.25]},"down":{"uv":[36.25,26.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.5208,-1.0742],"size":[0.2223,0.0409,0.1014],"inflate":0.001,"pivot":[-0.2318,2.5614,-1.0739],"rotation":[-63.25,0,0],"uv":{"north":{"uv":[27.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[36.25,28],"uv_size":[-0.25,0.25]},"south":{"uv":[28.25,36],"uv_size":[-0.25,0.25]},"west":{"uv":[36.25,27],"uv_size":[-0.25,0.25]},"up":{"uv":[29.25,36],"uv_size":[-0.25,0.25]},"down":{"uv":[36.25,29.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.722,-1.3745],"size":[0.2223,0.061,0.4843],"inflate":0.001,"pivot":[-0.2318,2.7525,-1.1324],"rotation":[-80.75,0,0],"uv":{"north":{"uv":[30.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[20.5,29],"uv_size":[-0.5,0.25]},"south":{"uv":[36.25,30],"uv_size":[-0.25,0.25]},"west":{"uv":[29.5,19],"uv_size":[-0.5,0.25]},"up":{"uv":[29.25,20],"uv_size":[-0.25,0.5]},"down":{"uv":[21.25,29.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3429,2.9861,-1.6045],"size":[0.2223,0.0409,0.4037],"inflate":0.001,"pivot":[-0.2318,2.9864,-1.2011],"rotation":[-115.75,0,0],"uv":{"north":{"uv":[31.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[22.5,29],"uv_size":[-0.5,0.25]},"south":{"uv":[36.25,31],"uv_size":[-0.25,0.25]},"west":{"uv":[29.5,21],"uv_size":[-0.5,0.25]},"up":{"uv":[29.25,22],"uv_size":[-0.25,0.5]},"down":{"uv":[23.25,29.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3429,2.8359,-1.5286],"size":[0.2223,0.0611,0.4037],"inflate":0.001,"pivot":[-0.2318,2.8967,-1.1252],"rotation":[-110.25,0,0],"uv":{"north":{"uv":[32.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[24.5,29],"uv_size":[-0.5,0.25]},"south":{"uv":[36.25,32],"uv_size":[-0.25,0.25]},"west":{"uv":[29.5,23],"uv_size":[-0.5,0.25]},"up":{"uv":[29.25,24],"uv_size":[-0.25,0.5]},"down":{"uv":[25.25,29.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3429,3.7588,-1.7087],"size":[0.2223,0.0812,0.5246],"inflate":0.001,"pivot":[-0.2318,3.7591,-1.1843],"rotation":[-101.5,0,0],"uv":{"north":{"uv":[33.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[26.5,29],"uv_size":[-0.5,0.25]},"south":{"uv":[36.25,33],"uv_size":[-0.25,0.25]},"west":{"uv":[29.5,25],"uv_size":[-0.5,0.25]},"up":{"uv":[29.25,26],"uv_size":[-0.25,0.5]},"down":{"uv":[27.25,29.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3429,4.1369,-1.4204],"size":[0.2223,0.0409,0.4037],"inflate":0.001,"pivot":[-0.2318,4.1775,-1.0169],"rotation":[-132,0,0],"uv":{"north":{"uv":[34.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[28.5,29],"uv_size":[-0.5,0.25]},"south":{"uv":[36.25,34],"uv_size":[-0.25,0.25]},"west":{"uv":[29.5,27],"uv_size":[-0.5,0.25]},"up":{"uv":[29.25,28],"uv_size":[-0.25,0.5]},"down":{"uv":[29.25,29.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3429,4.2723,-1.4026],"size":[0.2223,0.0812,0.3231],"inflate":0.001,"pivot":[-0.2318,4.2726,-1.0799],"rotation":[-134,0,0],"uv":{"north":{"uv":[35.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[0.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[36.25,36],"uv_size":[-0.25,0.25]},"west":{"uv":[36.25,35],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,0],"uv_size":[-0.25,0.25]},"down":{"uv":[1.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,4.8129,-0.9589],"size":[0.2223,0.0812,0.444],"inflate":0.001,"pivot":[-0.2318,4.8535,-0.7369],"rotation":[-78.5,0,0],"uv":{"north":{"uv":[37.25,1],"uv_size":[-0.25,0.25]},"east":{"uv":[30.5,0],"uv_size":[-0.5,0.25]},"south":{"uv":[2.25,37],"uv_size":[-0.25,0.25]},"west":{"uv":[0.5,30],"uv_size":[-0.5,0.25]},"up":{"uv":[1.25,30],"uv_size":[-0.25,0.5]},"down":{"uv":[30.25,1.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3429,4.8403,-0.9677],"size":[0.2223,0.0611,0.2626],"inflate":0.001,"pivot":[-0.2318,4.9011,-0.7054],"rotation":[-96,0,0],"uv":{"north":{"uv":[37.25,2],"uv_size":[-0.25,0.25]},"east":{"uv":[4.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,3],"uv_size":[-0.25,0.25]},"west":{"uv":[3.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,4],"uv_size":[-0.25,0.25]},"down":{"uv":[5.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,5.0625,-1.7682],"size":[0.2223,0.0409,0.9479],"inflate":0.001,"pivot":[-0.2318,5.0628,-0.8206],"rotation":[-121.5,0,0],"uv":{"north":{"uv":[37.25,5],"uv_size":[-0.25,0.25]},"east":{"uv":[19,8],"uv_size":[-1,0.25]},"south":{"uv":[6.25,37],"uv_size":[-0.25,0.25]},"west":{"uv":[18,11],"uv_size":[-1,0.25]},"up":{"uv":[7.25,20],"uv_size":[-0.25,1]},"down":{"uv":[20.25,8],"uv_size":[-0.25,-1]}}},{"origin":[-0.3429,5.1028,-1.7078],"size":[0.2223,0.0812,0.182],"inflate":0.001,"pivot":[-0.2318,5.0628,-0.8206],"rotation":[-121.5,0,0],"uv":{"north":{"uv":[37.25,6],"uv_size":[-0.25,0.25]},"east":{"uv":[8.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,7],"uv_size":[-0.25,0.25]},"west":{"uv":[7.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,8],"uv_size":[-0.25,0.25]},"down":{"uv":[9.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,5.1028,-1.5264],"size":[0.2223,0.0409,0.1215],"inflate":0.001,"pivot":[-0.2318,5.0628,-0.8206],"rotation":[-121.5,0,0],"uv":{"north":{"uv":[37.25,9],"uv_size":[-0.25,0.25]},"east":{"uv":[11.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,10],"uv_size":[-0.25,0.25]},"west":{"uv":[10.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,11],"uv_size":[-0.25,0.25]},"down":{"uv":[12.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,5.8702,-0.3259],"size":[0.2223,0.0812,0.182],"inflate":0.001,"pivot":[-0.2318,5.8705,-0.3256],"rotation":[-88.5,0,0],"uv":{"north":{"uv":[37.25,12],"uv_size":[-0.25,0.25]},"east":{"uv":[14.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,13],"uv_size":[-0.25,0.25]},"west":{"uv":[13.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,14],"uv_size":[-0.25,0.25]},"down":{"uv":[15.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,5.3964,-0.5443],"size":[0.2223,0.0409,0.4843],"inflate":0.001,"pivot":[-0.2318,5.437,-0.544],"rotation":[-115.75,0,0],"uv":{"north":{"uv":[37.25,15],"uv_size":[-0.25,0.25]},"east":{"uv":[30.5,2],"uv_size":[-0.5,0.25]},"south":{"uv":[16.25,37],"uv_size":[-0.25,0.25]},"west":{"uv":[2.5,30],"uv_size":[-0.5,0.25]},"up":{"uv":[3.25,30],"uv_size":[-0.25,0.5]},"down":{"uv":[30.25,3.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3429,5.3964,-0.9394],"size":[0.2223,0.0409,0.3957],"inflate":0.001,"pivot":[-0.2318,5.437,-0.544],"rotation":[-140.1326,0,0],"uv":{"north":{"uv":[37.25,16],"uv_size":[-0.25,0.25]},"east":{"uv":[30.5,4],"uv_size":[-0.5,0.25]},"south":{"uv":[17.25,37],"uv_size":[-0.25,0.25]},"west":{"uv":[4.5,30],"uv_size":[-0.5,0.25]},"up":{"uv":[5.25,30],"uv_size":[-0.25,0.5]},"down":{"uv":[30.25,5.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3429,3.4783,-1.3512],"size":[0.2223,0.061,0.5246],"inflate":0.001,"pivot":[-0.2318,3.4887,-1.0486],"rotation":[-65.25,0,0],"uv":{"north":{"uv":[37.25,17],"uv_size":[-0.25,0.25]},"east":{"uv":[30.5,6],"uv_size":[-0.5,0.25]},"south":{"uv":[18.25,37],"uv_size":[-0.25,0.25]},"west":{"uv":[6.5,30],"uv_size":[-0.5,0.25]},"up":{"uv":[7.25,30],"uv_size":[-0.25,0.5]},"down":{"uv":[30.25,7.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3429,3.6522,-1.2286],"size":[0.2223,0.0409,0.1417],"inflate":0.001,"pivot":[-0.2318,3.6928,-1.0872],"rotation":[-80.25,0,0],"uv":{"north":{"uv":[37.25,18],"uv_size":[-0.25,0.25]},"east":{"uv":[20.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,19],"uv_size":[-0.25,0.25]},"west":{"uv":[19.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,20],"uv_size":[-0.25,0.25]},"down":{"uv":[21.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,1.7425,-1.1845],"size":[0.2223,0.0409,0.3231],"inflate":0.001,"pivot":[-0.2318,1.7428,-0.8617],"rotation":[-98.75,0,0],"uv":{"north":{"uv":[37.25,21],"uv_size":[-0.25,0.25]},"east":{"uv":[23.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,22],"uv_size":[-0.25,0.25]},"west":{"uv":[22.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,23],"uv_size":[-0.25,0.25]},"down":{"uv":[24.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,1.5812,-1.0101],"size":[0.2223,0.0409,0.2626],"inflate":0.001,"pivot":[-0.2318,1.6218,-0.7478],"rotation":[-78,0,0],"uv":{"north":{"uv":[37.25,24],"uv_size":[-0.25,0.25]},"east":{"uv":[26.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,25],"uv_size":[-0.25,0.25]},"west":{"uv":[25.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,26],"uv_size":[-0.25,0.25]},"down":{"uv":[27.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,1.519,-0.4522],"size":[0.2223,0.061,0.182],"inflate":0.001,"pivot":[-0.2318,1.479,-0.714],"rotation":[-60.75,0,0],"uv":{"north":{"uv":[37.25,27],"uv_size":[-0.25,0.25]},"east":{"uv":[29.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,28],"uv_size":[-0.25,0.25]},"west":{"uv":[28.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,29],"uv_size":[-0.25,0.25]},"down":{"uv":[30.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,1.5795,-0.3514],"size":[0.2223,0.0208,0.0812],"inflate":0.001,"pivot":[-0.2318,1.479,-0.714],"rotation":[-60.75,0,0],"uv":{"north":{"uv":[37.25,30],"uv_size":[-0.25,0.25]},"east":{"uv":[32.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,31],"uv_size":[-0.25,0.25]},"west":{"uv":[31.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,32],"uv_size":[-0.25,0.25]},"down":{"uv":[33.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,1.0411,-0.5037],"size":[0.2223,0.1618,0.0812],"inflate":0.001,"pivot":[-0.2318,1.0414,-0.4227],"rotation":[-31.75,0,0],"uv":{"north":{"uv":[37.25,33],"uv_size":[-0.25,0.25]},"east":{"uv":[35.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,34],"uv_size":[-0.25,0.25]},"west":{"uv":[34.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,35],"uv_size":[-0.25,0.25]},"down":{"uv":[36.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2822,0.8758,-0.7261],"size":[0.1613,0.2217,0.1613],"pivot":[0,0.8153,-0.5648],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[37.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[0.25,38],"uv_size":[-0.25,0.25]},"west":{"uv":[37.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[1.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,1.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2822,0.7959,-1.5452],"size":[0.1613,0.2419,0.7861],"pivot":[-0.2318,0.7959,-0.5776],"rotation":[-60,0,0],"uv":{"north":{"uv":[2.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[2.75,25],"uv_size":[-0.75,0.25]},"south":{"uv":[38.25,2],"uv_size":[-0.25,0.25]},"west":{"uv":[25.75,1],"uv_size":[-0.75,0.25]},"up":{"uv":[25.25,2],"uv_size":[-0.25,0.75]},"down":{"uv":[3.25,25.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.2822,1.6337,-1.0614],"size":[0.1613,0.3225,0.1613],"pivot":[-0.2318,1.6337,-1.0614],"rotation":[-19.25,0,0],"uv":{"north":{"uv":[3.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,4],"uv_size":[-0.25,0.25]},"south":{"uv":[4.25,38],"uv_size":[-0.25,0.25]},"west":{"uv":[38.25,3],"uv_size":[-0.25,0.25]},"up":{"uv":[5.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,5.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2822,1.885,-0.9641],"size":[0.1613,0.3225,0.1613],"pivot":[-0.2318,1.885,-0.8028],"rotation":[5.75,0,0],"uv":{"north":{"uv":[6.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,7],"uv_size":[-0.25,0.25]},"south":{"uv":[7.25,38],"uv_size":[-0.25,0.25]},"west":{"uv":[38.25,6],"uv_size":[-0.25,0.25]},"up":{"uv":[8.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,8.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2822,2.2059,-0.9964],"size":[0.1613,0.3225,0.1613],"pivot":[-0.2318,2.2059,-0.8351],"rotation":[42.5,0,0],"uv":{"north":{"uv":[9.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,10],"uv_size":[-0.25,0.25]},"south":{"uv":[10.25,38],"uv_size":[-0.25,0.25]},"west":{"uv":[38.25,9],"uv_size":[-0.25,0.25]},"up":{"uv":[11.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,11.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2822,2.4437,-1.2143],"size":[0.1613,0.2217,0.2016],"pivot":[-0.2318,2.4437,-1.053],"rotation":[62.5,0,0],"uv":{"north":{"uv":[12.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,13],"uv_size":[-0.25,0.25]},"south":{"uv":[13.25,38],"uv_size":[-0.25,0.25]},"west":{"uv":[38.25,12],"uv_size":[-0.25,0.25]},"up":{"uv":[14.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,14.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2823,2.403,-1.3241],"size":[0.1613,0.5644,0.2217],"pivot":[-0.2318,2.403,-1.3241],"rotation":[9.25,0,0],"uv":{"north":{"uv":[8.25,30],"uv_size":[-0.25,0.5]},"east":{"uv":[30.25,9],"uv_size":[-0.25,0.5]},"south":{"uv":[9.25,30],"uv_size":[-0.25,0.5]},"west":{"uv":[30.25,8],"uv_size":[-0.25,0.5]},"up":{"uv":[15.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,15.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2822,2.9601,-1.4149],"size":[0.1613,0.3225,0.1613],"pivot":[-0.2318,2.9601,-1.4149],"rotation":[-37,0,0],"uv":{"north":{"uv":[16.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,17],"uv_size":[-0.25,0.25]},"south":{"uv":[17.25,38],"uv_size":[-0.25,0.25]},"west":{"uv":[38.25,16],"uv_size":[-0.25,0.25]},"up":{"uv":[18.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,18.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2822,3.1206,-1.2533],"size":[0.1613,0.3225,0.1613],"pivot":[-0.2318,3.1206,-1.092],"rotation":[-7.5,0,0],"uv":{"north":{"uv":[19.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,20],"uv_size":[-0.25,0.25]},"south":{"uv":[20.25,38],"uv_size":[-0.25,0.25]},"west":{"uv":[38.25,19],"uv_size":[-0.25,0.25]},"up":{"uv":[21.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,21.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2822,3.4403,-1.2112],"size":[0.1613,0.3225,0.1613],"pivot":[-0.2318,3.4403,-1.0499],"rotation":[19.5,0,0],"uv":{"north":{"uv":[22.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,23],"uv_size":[-0.25,0.25]},"south":{"uv":[23.25,38],"uv_size":[-0.25,0.25]},"west":{"uv":[38.25,22],"uv_size":[-0.25,0.25]},"up":{"uv":[24.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,24.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2822,3.7443,-1.3188],"size":[0.1613,0.1814,0.1613],"pivot":[-0.2318,3.7443,-1.1576],"rotation":[42,0,0],"uv":{"north":{"uv":[25.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,26],"uv_size":[-0.25,0.25]},"south":{"uv":[26.25,38],"uv_size":[-0.25,0.25]},"west":{"uv":[38.25,25],"uv_size":[-0.25,0.25]},"up":{"uv":[27.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,27.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2823,3.7713,-1.3988],"size":[0.1613,0.5644,0.2217],"pivot":[-0.2318,3.7713,-1.3988],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[10.25,30],"uv_size":[-0.25,0.5]},"east":{"uv":[30.25,11],"uv_size":[-0.25,0.5]},"south":{"uv":[11.25,30],"uv_size":[-0.25,0.5]},"west":{"uv":[30.25,10],"uv_size":[-0.25,0.5]},"up":{"uv":[28.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,28.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2822,4.3223,-1.2766],"size":[0.1613,0.3225,0.1613],"pivot":[-0.2318,4.3223,-1.2766],"rotation":[-57.5,0,0],"uv":{"north":{"uv":[29.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,30],"uv_size":[-0.25,0.25]},"south":{"uv":[30.25,38],"uv_size":[-0.25,0.25]},"west":{"uv":[38.25,29],"uv_size":[-0.25,0.25]},"up":{"uv":[31.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,31.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2822,4.3595,-1.0792],"size":[0.1613,0.3225,0.1613],"pivot":[-0.2318,4.3595,-0.918],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[32.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,33],"uv_size":[-0.25,0.25]},"south":{"uv":[33.25,38],"uv_size":[-0.25,0.25]},"west":{"uv":[38.25,32],"uv_size":[-0.25,0.25]},"up":{"uv":[34.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,34.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2822,4.6315,-0.906],"size":[0.1613,0.3225,0.1613],"uv":{"north":{"uv":[35.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,36],"uv_size":[-0.25,0.25]},"south":{"uv":[36.25,38],"uv_size":[-0.25,0.25]},"west":{"uv":[38.25,35],"uv_size":[-0.25,0.25]},"up":{"uv":[37.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2822,4.954,-0.906],"size":[0.1613,0.2016,0.1613],"pivot":[-0.2318,4.954,-0.7447],"rotation":[20,0,0],"uv":{"north":{"uv":[38.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[1.25,39],"uv_size":[-0.25,0.25]},"south":{"uv":[39.25,0],"uv_size":[-0.25,0.25]},"west":{"uv":[0.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[39.25,1],"uv_size":[-0.25,0.25]},"down":{"uv":[2.25,39.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2823,5.0883,-0.9652],"size":[0.1613,1.0078,0.1613],"pivot":[-0.2318,5.0883,-0.9652],"rotation":[-31.75,0,0],"uv":{"north":{"uv":[8.25,20],"uv_size":[-0.25,1]},"east":{"uv":[10.25,20],"uv_size":[-0.25,1]},"south":{"uv":[20.25,9],"uv_size":[-0.25,1]},"west":{"uv":[20.25,8],"uv_size":[-0.25,1]},"up":{"uv":[39.25,2],"uv_size":[-0.25,0.25]},"down":{"uv":[3.25,39.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1209,5.4362,-0.8814],"size":[0.0403,0.5845,0.383],"pivot":[-0.1008,5.5168,-0.7],"rotation":[-34,0,0],"uv":{"north":{"uv":[12.25,30],"uv_size":[-0.25,0.5]},"east":{"uv":[12.5,20],"uv_size":[-0.5,0.5]},"south":{"uv":[30.25,12],"uv_size":[-0.25,0.5]},"west":{"uv":[11.5,20],"uv_size":[-0.5,0.5]},"up":{"uv":[13.25,30],"uv_size":[-0.25,0.5]},"down":{"uv":[30.25,13.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.1209,5.1079,-0.8955],"size":[0.0403,0.4434,0.4434],"pivot":[-0.1008,5.5514,-0.8955],"rotation":[-29.5,0,0],"uv":{"north":{"uv":[14.25,30],"uv_size":[-0.25,0.5]},"east":{"uv":[13.5,20],"uv_size":[-0.5,0.5]},"south":{"uv":[30.25,14],"uv_size":[-0.25,0.5]},"west":{"uv":[20.5,12],"uv_size":[-0.5,0.5]},"up":{"uv":[15.25,30],"uv_size":[-0.25,0.5]},"down":{"uv":[30.25,15.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.1209,4.423,-0.8085],"size":[0.0403,0.5241,0.0806],"pivot":[-0.1008,4.9471,-0.7279],"rotation":[-29.5,0,0],"uv":{"north":{"uv":[16.25,30],"uv_size":[-0.25,0.5]},"east":{"uv":[30.25,17],"uv_size":[-0.25,0.5]},"south":{"uv":[17.25,30],"uv_size":[-0.25,0.5]},"west":{"uv":[30.25,16],"uv_size":[-0.25,0.5]},"up":{"uv":[39.25,3],"uv_size":[-0.25,0.25]},"down":{"uv":[4.25,39.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1209,4.3063,-1.0462],"size":[0.0403,0.262,0.1411],"pivot":[-0.1008,4.5482,-1.0462],"rotation":[-56,0,0],"uv":{"north":{"uv":[39.25,4],"uv_size":[-0.25,0.25]},"east":{"uv":[6.25,39],"uv_size":[-0.25,0.25]},"south":{"uv":[39.25,5],"uv_size":[-0.25,0.25]},"west":{"uv":[5.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[39.25,6],"uv_size":[-0.25,0.25]},"down":{"uv":[7.25,39.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1209,4.0541,-1.3089],"size":[0.0403,0.2419,0.1411],"pivot":[-0.1008,4.296,-1.1678],"rotation":[-73.5,0,0],"uv":{"north":{"uv":[39.25,7],"uv_size":[-0.25,0.25]},"east":{"uv":[9.25,39],"uv_size":[-0.25,0.25]},"south":{"uv":[39.25,8],"uv_size":[-0.25,0.25]},"west":{"uv":[8.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[39.25,9],"uv_size":[-0.25,0.25]},"down":{"uv":[10.25,39.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1209,3.7982,-1.4398],"size":[0.0403,0.5644,0.2016],"pivot":[-0.1008,4.3626,-1.4398],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[18.25,30],"uv_size":[-0.25,0.5]},"east":{"uv":[30.25,19],"uv_size":[-0.25,0.5]},"south":{"uv":[19.25,30],"uv_size":[-0.25,0.5]},"west":{"uv":[30.25,18],"uv_size":[-0.25,0.5]},"up":{"uv":[39.25,10],"uv_size":[-0.25,0.25]},"down":{"uv":[11.25,39.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1209,3.8116,-1.562],"size":[0.0403,0.1613,0.3225],"pivot":[-0.1008,3.8116,-1.562],"rotation":[-43,0,0],"uv":{"north":{"uv":[39.25,11],"uv_size":[-0.25,0.25]},"east":{"uv":[13.25,39],"uv_size":[-0.25,0.25]},"south":{"uv":[39.25,12],"uv_size":[-0.25,0.25]},"west":{"uv":[12.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[39.25,13],"uv_size":[-0.25,0.25]},"down":{"uv":[14.25,39.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1209,3.5483,-1.2162],"size":[0.0403,0.1613,0.3225],"pivot":[-0.1008,3.7095,-1.2162],"rotation":[-70.5,0,0],"uv":{"north":{"uv":[39.25,14],"uv_size":[-0.25,0.25]},"east":{"uv":[16.25,39],"uv_size":[-0.25,0.25]},"south":{"uv":[39.25,15],"uv_size":[-0.25,0.25]},"west":{"uv":[15.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[39.25,16],"uv_size":[-0.25,0.25]},"down":{"uv":[17.25,39.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1209,3.2443,-1.1085],"size":[0.0403,0.1613,0.3225],"pivot":[-0.1008,3.4055,-1.1085],"rotation":[-103.75,0,0],"uv":{"north":{"uv":[39.25,17],"uv_size":[-0.25,0.25]},"east":{"uv":[19.25,39],"uv_size":[-0.25,0.25]},"south":{"uv":[39.25,18],"uv_size":[-0.25,0.25]},"west":{"uv":[18.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[39.25,19],"uv_size":[-0.25,0.25]},"down":{"uv":[20.25,39.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1209,2.931,-1.1851],"size":[0.0403,0.1613,0.4031],"pivot":[-0.1008,3.0923,-1.1851],"rotation":[-136.25,0,0],"uv":{"north":{"uv":[39.25,20],"uv_size":[-0.25,0.25]},"east":{"uv":[30.5,20],"uv_size":[-0.5,0.25]},"south":{"uv":[21.25,39],"uv_size":[-0.25,0.25]},"west":{"uv":[20.5,30],"uv_size":[-0.5,0.25]},"up":{"uv":[21.25,30],"uv_size":[-0.25,0.5]},"down":{"uv":[30.25,21.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.1209,2.93,-1.5878],"size":[0.0403,0.1613,0.5644],"pivot":[-0.1008,2.93,-1.5878],"rotation":[-80.25,0,0],"uv":{"north":{"uv":[39.25,21],"uv_size":[-0.25,0.25]},"east":{"uv":[30.5,22],"uv_size":[-0.5,0.25]},"south":{"uv":[22.25,39],"uv_size":[-0.25,0.25]},"west":{"uv":[22.5,30],"uv_size":[-0.5,0.25]},"up":{"uv":[23.25,30],"uv_size":[-0.25,0.5]},"down":{"uv":[30.25,23.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.1209,2.3738,-1.4923],"size":[0.0403,0.1613,0.3225],"pivot":[-0.1008,2.3738,-1.4923],"rotation":[-20.5,0,0],"uv":{"north":{"uv":[39.25,22],"uv_size":[-0.25,0.25]},"east":{"uv":[24.25,39],"uv_size":[-0.25,0.25]},"south":{"uv":[39.25,23],"uv_size":[-0.25,0.25]},"west":{"uv":[23.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[39.25,24],"uv_size":[-0.25,0.25]},"down":{"uv":[25.25,39.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1209,2.2506,-1.1337],"size":[0.0403,0.1613,0.3225],"pivot":[-0.1008,2.4119,-1.1337],"rotation":[-49,0,0],"uv":{"north":{"uv":[39.25,25],"uv_size":[-0.25,0.25]},"east":{"uv":[27.25,39],"uv_size":[-0.25,0.25]},"south":{"uv":[39.25,26],"uv_size":[-0.25,0.25]},"west":{"uv":[26.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[39.25,27],"uv_size":[-0.25,0.25]},"down":{"uv":[28.25,39.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1209,2.0072,-0.9221],"size":[0.0403,0.1613,0.3225],"pivot":[-0.1008,2.1685,-0.9221],"rotation":[-81.5,0,0],"uv":{"north":{"uv":[39.25,28],"uv_size":[-0.25,0.25]},"east":{"uv":[30.25,39],"uv_size":[-0.25,0.25]},"south":{"uv":[39.25,29],"uv_size":[-0.25,0.25]},"west":{"uv":[29.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[39.25,30],"uv_size":[-0.25,0.25]},"down":{"uv":[31.25,39.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1209,1.6883,-0.8745],"size":[0.0403,0.1613,0.4031],"pivot":[-0.1008,1.8495,-0.8745],"rotation":[-116.5,0,0],"uv":{"north":{"uv":[39.25,31],"uv_size":[-0.25,0.25]},"east":{"uv":[30.5,24],"uv_size":[-0.5,0.25]},"south":{"uv":[32.25,39],"uv_size":[-0.25,0.25]},"west":{"uv":[24.5,30],"uv_size":[-0.5,0.25]},"up":{"uv":[25.25,30],"uv_size":[-0.25,0.5]},"down":{"uv":[30.25,25.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.1209,1.5607,-1.1987],"size":[0.0403,0.1613,0.4838],"pivot":[-0.1008,1.5607,-1.1987],"rotation":[-63.25,0,0],"uv":{"north":{"uv":[39.25,32],"uv_size":[-0.25,0.25]},"east":{"uv":[30.5,26],"uv_size":[-0.5,0.25]},"south":{"uv":[33.25,39],"uv_size":[-0.25,0.25]},"west":{"uv":[26.5,30],"uv_size":[-0.5,0.25]},"up":{"uv":[27.25,30],"uv_size":[-0.25,0.5]},"down":{"uv":[30.25,27.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.1209,1.1287,-0.9809],"size":[0.0403,0.1613,0.4434],"pivot":[-0.1008,1.1287,-0.9809],"rotation":[-57.5,0,0],"uv":{"north":{"uv":[39.25,33],"uv_size":[-0.25,0.25]},"east":{"uv":[30.5,28],"uv_size":[-0.5,0.25]},"south":{"uv":[34.25,39],"uv_size":[-0.25,0.25]},"west":{"uv":[28.5,30],"uv_size":[-0.5,0.25]},"up":{"uv":[29.25,30],"uv_size":[-0.25,0.5]},"down":{"uv":[30.25,29.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.1209,0.6984,-0.6811],"size":[0.0403,0.143,0.0745],"pivot":[-0.1008,0.8414,-0.6067],"rotation":[-30,0,0],"uv":{"north":{"uv":[39.25,34],"uv_size":[-0.25,0.25]},"east":{"uv":[36.25,39],"uv_size":[-0.25,0.25]},"south":{"uv":[39.25,35],"uv_size":[-0.25,0.25]},"west":{"uv":[35.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[39.25,36],"uv_size":[-0.25,0.25]},"down":{"uv":[37.25,39.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1209,5.1654,-1.1139],"size":[0.0403,0.2016,0.383],"pivot":[-0.1008,5.1654,-1.1139],"rotation":[-62,0,0],"uv":{"north":{"uv":[39.25,37],"uv_size":[-0.25,0.25]},"east":{"uv":[0.5,31],"uv_size":[-0.5,0.25]},"south":{"uv":[38.25,39],"uv_size":[-0.25,0.25]},"west":{"uv":[30.5,30],"uv_size":[-0.5,0.25]},"up":{"uv":[31.25,0],"uv_size":[-0.25,0.5]},"down":{"uv":[1.25,31.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.1209,4.8985,-0.9719],"size":[0.0403,0.1008,0.2419],"pivot":[-0.1008,4.8985,-0.9719],"rotation":[-92,0,0],"uv":{"north":{"uv":[39.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[40.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[0.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[39.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[1.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[40.25,1.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1209,6.0207,-0.8814],"size":[0.0403,0.0915,0.0502],"pivot":[-0.1008,5.5168,-0.7],"rotation":[-34,0,0],"uv":{"north":{"uv":[2.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[40.25,3],"uv_size":[-0.25,0.25]},"south":{"uv":[3.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[40.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[4.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[40.25,4.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1209,5.6796,-0.585],"size":[0.0403,0.1043,0.3004],"pivot":[-0.1008,5.8444,-0.2846],"rotation":[-62.75,0,0],"uv":{"north":{"uv":[5.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[40.25,6],"uv_size":[-0.25,0.25]},"south":{"uv":[6.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[40.25,5],"uv_size":[-0.25,0.25]},"up":{"uv":[7.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[40.25,7.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,5.0681,-1.0256],"size":[0.0403,1.028,0.0605],"pivot":[-0.2318,5.0883,-0.9652],"rotation":[-31.75,0,0],"uv":{"north":{"uv":[20.25,13],"uv_size":[-0.25,1]},"east":{"uv":[20.25,15],"uv_size":[-0.25,1]},"south":{"uv":[15.25,20],"uv_size":[-0.25,1]},"west":{"uv":[14.25,20],"uv_size":[-0.25,1]},"up":{"uv":[8.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[40.25,8.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2965,5.0462,-0.7567],"size":[0.1352,1.0078,0.0806],"pivot":[-0.1613,5.54,-0.7567],"rotation":[-34.6784,22.3536,-14.7423],"uv":{"north":{"uv":[16.25,20],"uv_size":[-0.25,1]},"east":{"uv":[20.25,17],"uv_size":[-0.25,1]},"south":{"uv":[17.25,20],"uv_size":[-0.25,1]},"west":{"uv":[20.25,16],"uv_size":[-0.25,1]},"up":{"uv":[9.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[40.25,9.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2641,5.0693,-0.9748],"size":[0.1339,0.0188,0.0806],"pivot":[-0.2641,5.0693,-0.9345],"rotation":[-31.6143,26.7344,-7.3797],"uv":{"north":{"uv":[10.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[40.25,11],"uv_size":[-0.25,0.25]},"south":{"uv":[11.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[40.25,10],"uv_size":[-0.25,0.25]},"up":{"uv":[12.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[40.25,12.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,0.7411,-1.5778],"size":[0.0403,0.0547,0.8389],"pivot":[-0.2318,0.7959,-0.5776],"rotation":[-60,0,0],"uv":{"north":{"uv":[13.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[4.75,25],"uv_size":[-0.75,0.25]},"south":{"uv":[40.25,13],"uv_size":[-0.25,0.25]},"west":{"uv":[25.75,3],"uv_size":[-0.75,0.25]},"up":{"uv":[25.25,4],"uv_size":[-0.25,0.75]},"down":{"uv":[5.25,25.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.294,1.2714,-1.3022],"size":[0.1327,0.0202,0.7861],"pivot":[-0.1613,1.2714,-0.9154],"rotation":[-57.6364,20.9211,12.7509],"uv":{"north":{"uv":[14.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[6.75,25],"uv_size":[-0.75,0.25]},"south":{"uv":[40.25,14],"uv_size":[-0.25,0.25]},"west":{"uv":[25.75,5],"uv_size":[-0.75,0.25]},"up":{"uv":[25.25,6],"uv_size":[-0.25,0.75]},"down":{"uv":[7.25,25.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.278,0.9475,-0.6772],"size":[0.1317,0.0202,0.0168],"pivot":[-0.278,0.9576,-0.6604],"rotation":[-55.5585,16.9255,19.1482],"uv":{"north":{"uv":[15.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[40.25,16],"uv_size":[-0.25,0.25]},"south":{"uv":[16.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[40.25,15],"uv_size":[-0.25,0.25]},"up":{"uv":[17.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[40.25,17.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.278,1.6283,-1.0534],"size":[0.1285,0.0202,0.0332],"pivot":[-0.278,1.6383,-1.0534],"rotation":[-63.4247,28.0926,-1.1198],"uv":{"north":{"uv":[18.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[40.25,19],"uv_size":[-0.25,0.25]},"south":{"uv":[19.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[40.25,18],"uv_size":[-0.25,0.25]},"up":{"uv":[20.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[40.25,20.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2965,1.6452,-1.0687],"size":[0.1352,0.3225,0.0202],"pivot":[-0.1613,1.7964,-1.0687],"rotation":[-21.3278,24.9764,-9.3617],"uv":{"north":{"uv":[21.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[40.25,22],"uv_size":[-0.25,0.25]},"south":{"uv":[22.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[40.25,21],"uv_size":[-0.25,0.25]},"up":{"uv":[23.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[40.25,23.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2777,1.6308,-1.063],"size":[0.1341,0.0176,0.0202],"pivot":[-0.2777,1.6308,-1.0529],"rotation":[-17.8399,27.4947,-1.4835],"uv":{"north":{"uv":[24.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[40.25,25],"uv_size":[-0.25,0.25]},"south":{"uv":[25.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[40.25,24],"uv_size":[-0.25,0.25]},"up":{"uv":[26.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[40.25,26.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,1.6136,-1.1219],"size":[0.0403,0.3427,0.0605],"pivot":[-0.2318,1.6337,-1.0614],"rotation":[-19.25,0,0],"uv":{"north":{"uv":[27.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[40.25,28],"uv_size":[-0.25,0.25]},"south":{"uv":[28.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[40.25,27],"uv_size":[-0.25,0.25]},"up":{"uv":[29.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[40.25,29.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,1.885,-1.0246],"size":[0.0403,0.3225,0.0605],"pivot":[-0.2318,1.885,-0.8028],"rotation":[5.75,0,0],"uv":{"north":{"uv":[30.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[40.25,31],"uv_size":[-0.25,0.25]},"south":{"uv":[31.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[40.25,30],"uv_size":[-0.25,0.25]},"up":{"uv":[32.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[40.25,32.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2964,1.862,-1.0396],"size":[0.1352,0.3225,0.0202],"pivot":[-0.1613,2.0233,-1.0396],"rotation":[6.4232,26.4186,2.8675],"uv":{"north":{"uv":[33.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[40.25,34],"uv_size":[-0.25,0.25]},"south":{"uv":[34.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[40.25,33],"uv_size":[-0.25,0.25]},"up":{"uv":[35.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[40.25,35.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,2.2059,-1.0569],"size":[0.0403,0.3225,0.0605],"pivot":[-0.2318,2.2059,-0.8351],"rotation":[42.5,0,0],"uv":{"north":{"uv":[36.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[40.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[40.25,36],"uv_size":[-0.25,0.25]},"up":{"uv":[38.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[40.25,38.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2965,2.0138,-1.1076],"size":[0.1352,0.3225,0.0202],"pivot":[-0.1613,2.175,-1.1076],"rotation":[45.6937,19.2535,18.6666],"uv":{"north":{"uv":[39.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[0.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[40.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[40.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,0],"uv_size":[-0.25,0.25]},"down":{"uv":[1.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,2.4437,-1.2748],"size":[0.0403,0.262,0.0605],"pivot":[-0.2318,2.4437,-1.053],"rotation":[62.5,0,0],"uv":{"north":{"uv":[41.25,1],"uv_size":[-0.25,0.25]},"east":{"uv":[3.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[41.25,2],"uv_size":[-0.25,0.25]},"west":{"uv":[2.25,41],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,3],"uv_size":[-0.25,0.25]},"down":{"uv":[4.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2965,2.1765,-1.2716],"size":[0.1352,0.2217,0.0202],"pivot":[-0.1613,2.3075,-1.2716],"rotation":[65.0333,11.9184,23.9198],"uv":{"north":{"uv":[41.25,4],"uv_size":[-0.25,0.25]},"east":{"uv":[6.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[41.25,5],"uv_size":[-0.25,0.25]},"west":{"uv":[5.25,41],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,6],"uv_size":[-0.25,0.25]},"down":{"uv":[7.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2777,2.3704,-1.3301],"size":[0.129,0.0407,0.0202],"pivot":[-0.2777,2.411,-1.32],"rotation":[62.2165,27.6254,15.6835],"uv":{"north":{"uv":[41.25,7],"uv_size":[-0.25,0.25]},"east":{"uv":[9.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[41.25,8],"uv_size":[-0.25,0.25]},"west":{"uv":[8.25,41],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,9],"uv_size":[-0.25,0.25]},"down":{"uv":[10.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,2.3787,-1.3926],"size":[0.0403,0.6089,0.0685],"pivot":[-0.2318,2.403,-1.3241],"rotation":[9.25,0,0],"uv":{"north":{"uv":[31.25,1],"uv_size":[-0.25,0.5]},"east":{"uv":[3.25,31],"uv_size":[-0.25,0.5]},"south":{"uv":[31.25,2],"uv_size":[-0.25,0.5]},"west":{"uv":[2.25,31],"uv_size":[-0.25,0.5]},"up":{"uv":[41.25,10],"uv_size":[-0.25,0.25]},"down":{"uv":[11.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3002,2.3884,-1.4368],"size":[0.139,0.5644,0.0202],"pivot":[-0.1613,2.6685,-1.4368],"rotation":[10.6009,29.1015,5.2012],"uv":{"north":{"uv":[31.25,3],"uv_size":[-0.25,0.5]},"east":{"uv":[5.25,31],"uv_size":[-0.25,0.5]},"south":{"uv":[31.25,4],"uv_size":[-0.25,0.5]},"west":{"uv":[4.25,31],"uv_size":[-0.25,0.5]},"up":{"uv":[41.25,11],"uv_size":[-0.25,0.25]},"down":{"uv":[12.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2772,2.4045,-1.3256],"size":[0.1373,0.0217,0.0202],"pivot":[-0.2772,2.4045,-1.3155],"rotation":[15.2934,27.0794,15.1458],"uv":{"north":{"uv":[41.25,12],"uv_size":[-0.25,0.25]},"east":{"uv":[14.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[41.25,13],"uv_size":[-0.25,0.25]},"west":{"uv":[13.25,41],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,14],"uv_size":[-0.25,0.25]},"down":{"uv":[15.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2772,2.9434,-1.4163],"size":[0.1378,0.0181,0.0202],"pivot":[-0.2772,2.9615,-1.4062],"rotation":[6.3703,30.2106,-3.3367],"uv":{"north":{"uv":[41.25,15],"uv_size":[-0.25,0.25]},"east":{"uv":[17.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[41.25,16],"uv_size":[-0.25,0.25]},"west":{"uv":[16.25,41],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,17],"uv_size":[-0.25,0.25]},"down":{"uv":[18.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,2.9245,-1.4768],"size":[0.0403,0.358,0.0619],"pivot":[-0.2318,2.9601,-1.4149],"rotation":[-37,0,0],"uv":{"north":{"uv":[41.25,18],"uv_size":[-0.25,0.25]},"east":{"uv":[20.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[41.25,19],"uv_size":[-0.25,0.25]},"west":{"uv":[19.25,41],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,20],"uv_size":[-0.25,0.25]},"down":{"uv":[21.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2971,2.9684,-1.378],"size":[0.1359,0.3225,0.0202],"pivot":[-0.1613,3.1119,-1.378],"rotation":[-40.2506,21.3441,-17.1256],"uv":{"north":{"uv":[41.25,21],"uv_size":[-0.25,0.25]},"east":{"uv":[23.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[41.25,22],"uv_size":[-0.25,0.25]},"west":{"uv":[22.25,41],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,23],"uv_size":[-0.25,0.25]},"down":{"uv":[24.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2776,2.9547,-1.4178],"size":[0.1313,0.0352,0.0202],"pivot":[-0.2776,2.9547,-1.4077],"rotation":[-34.4197,30.486,-3.874],"uv":{"north":{"uv":[41.25,24],"uv_size":[-0.25,0.25]},"east":{"uv":[26.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[41.25,25],"uv_size":[-0.25,0.25]},"west":{"uv":[25.25,41],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,26],"uv_size":[-0.25,0.25]},"down":{"uv":[27.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,3.1206,-1.3137],"size":[0.0403,0.3225,0.0605],"pivot":[-0.2318,3.1206,-1.092],"rotation":[-7.5,0,0],"uv":{"north":{"uv":[41.25,27],"uv_size":[-0.25,0.25]},"east":{"uv":[29.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[41.25,28],"uv_size":[-0.25,0.25]},"west":{"uv":[28.25,41],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,29],"uv_size":[-0.25,0.25]},"down":{"uv":[30.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2964,3.1481,-1.2908],"size":[0.1352,0.3225,0.0202],"pivot":[-0.1613,3.3094,-1.2908],"rotation":[-8.3732,26.3178,-3.7336],"uv":{"north":{"uv":[41.25,30],"uv_size":[-0.25,0.25]},"east":{"uv":[32.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[41.25,31],"uv_size":[-0.25,0.25]},"west":{"uv":[31.25,41],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,32],"uv_size":[-0.25,0.25]},"down":{"uv":[33.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,3.4403,-1.2716],"size":[0.0403,0.3225,0.0605],"pivot":[-0.2318,3.4403,-1.0499],"rotation":[19.5,0,0],"uv":{"north":{"uv":[41.25,33],"uv_size":[-0.25,0.25]},"east":{"uv":[35.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[41.25,34],"uv_size":[-0.25,0.25]},"west":{"uv":[34.25,41],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,35],"uv_size":[-0.25,0.25]},"down":{"uv":[36.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2965,3.3571,-1.3127],"size":[0.1352,0.3225,0.0202],"pivot":[-0.1613,3.5183,-1.3127],"rotation":[21.5998,24.9355,9.4765],"uv":{"north":{"uv":[41.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[41.25,37],"uv_size":[-0.25,0.25]},"west":{"uv":[37.25,41],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[39.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,3.7443,-1.3703],"size":[0.0403,0.2189,0.0515],"pivot":[-0.2318,3.7443,-1.1576],"rotation":[42,0,0],"uv":{"north":{"uv":[41.25,39],"uv_size":[-0.25,0.25]},"east":{"uv":[41.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[41.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[40.25,41],"uv_size":[-0.25,0.25]},"up":{"uv":[0.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,0.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2927,3.5739,-1.3889],"size":[0.1315,0.1814,0.0202],"pivot":[-0.1613,3.6833,-1.3889],"rotation":[44.3835,16.9339,15.9111],"uv":{"north":{"uv":[1.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[42.25,2],"uv_size":[-0.25,0.25]},"south":{"uv":[2.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,1],"uv_size":[-0.25,0.25]},"up":{"uv":[3.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,3.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2782,3.7434,-1.402],"size":[0.127,0.034,0.0202],"pivot":[-0.2782,3.7775,-1.3919],"rotation":[39.8652,27.0345,3.9258],"uv":{"north":{"uv":[4.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[42.25,5],"uv_size":[-0.25,0.25]},"south":{"uv":[5.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,4],"uv_size":[-0.25,0.25]},"up":{"uv":[6.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,6.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,3.7511,-1.4558],"size":[0.0403,0.613,0.057],"pivot":[-0.2318,3.7713,-1.3988],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[31.25,5],"uv_size":[-0.25,0.5]},"east":{"uv":[7.25,31],"uv_size":[-0.25,0.5]},"south":{"uv":[31.25,6],"uv_size":[-0.25,0.5]},"west":{"uv":[6.25,31],"uv_size":[-0.25,0.5]},"up":{"uv":[7.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,7.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2949,3.7768,-1.3925],"size":[0.1337,0.5644,0.0202],"pivot":[-0.1613,4.0632,-1.3925],"rotation":[-13.7711,24.5988,-5.8252],"uv":{"north":{"uv":[31.25,7],"uv_size":[-0.25,0.5]},"east":{"uv":[9.25,31],"uv_size":[-0.25,0.5]},"south":{"uv":[31.25,8],"uv_size":[-0.25,0.5]},"west":{"uv":[8.25,31],"uv_size":[-0.25,0.5]},"up":{"uv":[8.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,8.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2779,3.7693,-1.4],"size":[0.1322,0.0198,0.0202],"pivot":[-0.2779,3.7693,-1.3899],"rotation":[-9.7997,26.339,3.3928],"uv":{"north":{"uv":[9.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[42.25,10],"uv_size":[-0.25,0.25]},"south":{"uv":[10.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,9],"uv_size":[-0.25,0.25]},"up":{"uv":[11.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,11.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2779,4.2931,-1.2778],"size":[0.1309,0.0272,0.0202],"pivot":[-0.2779,4.3203,-1.2677],"rotation":[-18.5693,21.313,-18.0829],"uv":{"north":{"uv":[12.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[42.25,13],"uv_size":[-0.25,0.25]},"south":{"uv":[13.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,12],"uv_size":[-0.25,0.25]},"up":{"uv":[14.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,14.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,4.3021,-1.3371],"size":[0.0403,0.3427,0.0605],"pivot":[-0.2318,4.3223,-1.2766],"rotation":[-57.5,0,0],"uv":{"north":{"uv":[15.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[42.25,16],"uv_size":[-0.25,0.25]},"south":{"uv":[16.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,15],"uv_size":[-0.25,0.25]},"up":{"uv":[17.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,17.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2965,4.3033,-1.1816],"size":[0.1352,0.3225,0.0202],"pivot":[-0.1613,4.4545,-1.1816],"rotation":[-60.3255,13.9047,-22.8671],"uv":{"north":{"uv":[18.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[42.25,19],"uv_size":[-0.25,0.25]},"south":{"uv":[19.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,18],"uv_size":[-0.25,0.25]},"up":{"uv":[20.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,20.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2777,4.3147,-1.2819],"size":[0.1337,0.02,0.0202],"pivot":[-0.2777,4.3147,-1.2718],"rotation":[-58.9624,21.2433,-18.3641],"uv":{"north":{"uv":[21.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[42.25,22],"uv_size":[-0.25,0.25]},"south":{"uv":[22.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,21],"uv_size":[-0.25,0.25]},"up":{"uv":[23.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,23.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,4.3595,-1.1397],"size":[0.0403,0.3225,0.0605],"pivot":[-0.2318,4.3595,-0.918],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[24.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[42.25,25],"uv_size":[-0.25,0.25]},"south":{"uv":[25.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,24],"uv_size":[-0.25,0.25]},"up":{"uv":[26.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,26.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2965,4.4534,-1.0184],"size":[0.1352,0.3225,0.0202],"pivot":[-0.1613,4.6147,-1.0184],"rotation":[-35.4616,22.1609,-15.039],"uv":{"north":{"uv":[27.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[42.25,28],"uv_size":[-0.25,0.25]},"south":{"uv":[28.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,27],"uv_size":[-0.25,0.25]},"up":{"uv":[29.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,29.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,4.6315,-0.9664],"size":[0.0403,0.3225,0.0605],"uv":{"north":{"uv":[30.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[42.25,31],"uv_size":[-0.25,0.25]},"south":{"uv":[31.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,30],"uv_size":[-0.25,0.25]},"up":{"uv":[32.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,32.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2964,4.6315,-0.9664],"size":[0.1352,0.3225,0.0202],"pivot":[-0.1613,4.7928,-0.9664],"rotation":[0,26.5626,0],"uv":{"north":{"uv":[33.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[42.25,34],"uv_size":[-0.25,0.25]},"south":{"uv":[34.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,33],"uv_size":[-0.25,0.25]},"up":{"uv":[35.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,35.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,4.954,-0.9592],"size":[0.0403,0.2366,0.0533],"pivot":[-0.2318,4.954,-0.7447],"rotation":[20,0,0],"uv":{"north":{"uv":[36.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[42.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,36],"uv_size":[-0.25,0.25]},"up":{"uv":[38.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,38.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2934,4.8735,-0.9868],"size":[0.1321,0.2016,0.0806],"pivot":[-0.1613,4.9918,-0.9868],"rotation":[21.6881,22.2568,8.5663],"uv":{"north":{"uv":[39.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[42.25,40],"uv_size":[-0.25,0.25]},"south":{"uv":[40.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2659,5.0667,-0.9708],"size":[0.1276,0.0342,0.0806],"pivot":[-0.2659,5.1009,-0.9305],"rotation":[15.1184,27.0246,-7.0965],"uv":{"north":{"uv":[42.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[1.25,43],"uv_size":[-0.25,0.25]},"south":{"uv":[43.25,0],"uv_size":[-0.25,0.25]},"west":{"uv":[0.25,43],"uv_size":[-0.25,0.25]},"up":{"uv":[43.25,1],"uv_size":[-0.25,0.25]},"down":{"uv":[2.25,43.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1613,0.8179,-0.7335],"size":[0.0403,0.0579,0.1686],"pivot":[0,0.8153,-0.5648],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[43.25,2],"uv_size":[-0.25,0.25]},"east":{"uv":[4.25,43],"uv_size":[-0.25,0.25]},"south":{"uv":[43.25,3],"uv_size":[-0.25,0.25]},"west":{"uv":[3.25,43],"uv_size":[-0.25,0.25]},"up":{"uv":[43.25,4],"uv_size":[-0.25,0.25]},"down":{"uv":[5.25,43.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2953,0.8628,-0.7115],"size":[0.1341,0.0605,0.1613],"pivot":[-0.1613,0.8628,-0.6346],"rotation":[-29.8846,13.41,21.9775],"uv":{"north":{"uv":[43.25,5],"uv_size":[-0.25,0.25]},"east":{"uv":[7.25,43],"uv_size":[-0.25,0.25]},"south":{"uv":[43.25,6],"uv_size":[-0.25,0.25]},"west":{"uv":[6.25,43],"uv_size":[-0.25,0.25]},"up":{"uv":[43.25,7],"uv_size":[-0.25,0.25]},"down":{"uv":[8.25,43.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2778,0.9506,-0.6635],"size":[0.1338,0.0202,0.0088],"pivot":[-0.2778,0.9606,-0.6635],"rotation":[-30.3904,16.6534,20.0282],"uv":{"north":{"uv":[43.25,8],"uv_size":[-0.25,0.25]},"east":{"uv":[10.25,43],"uv_size":[-0.25,0.25]},"south":{"uv":[43.25,9],"uv_size":[-0.25,0.25]},"west":{"uv":[9.25,43],"uv_size":[-0.25,0.25]},"up":{"uv":[43.25,10],"uv_size":[-0.25,0.25]},"down":{"uv":[11.25,43.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2019,5.9508,-0.3259],"size":[0.0812,0.2424,0.182],"inflate":0.001,"pivot":[-0.2318,5.8705,-0.3256],"rotation":[-88.5,0,0],"uv":{"north":{"uv":[43.25,11],"uv_size":[-0.25,0.25]},"east":{"uv":[13.25,43],"uv_size":[-0.25,0.25]},"south":{"uv":[43.25,12],"uv_size":[-0.25,0.25]},"west":{"uv":[12.25,43],"uv_size":[-0.25,0.25]},"up":{"uv":[43.25,13],"uv_size":[-0.25,0.25]},"down":{"uv":[14.25,43.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2017,5.5097,-0.0918],"size":[0.1213,0.2788,0.182],"inflate":0.001,"pivot":[-0.2016,5.7883,-0.0008],"rotation":[-88.2612,30.3782,0.8795],"uv":{"north":{"uv":[43.25,14],"uv_size":[-0.25,0.25]},"east":{"uv":[16.25,43],"uv_size":[-0.25,0.25]},"south":{"uv":[43.25,15],"uv_size":[-0.25,0.25]},"west":{"uv":[15.25,43],"uv_size":[-0.25,0.25]},"up":{"uv":[43.25,16],"uv_size":[-0.25,0.25]},"down":{"uv":[17.25,43.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3508,5.6902,-0.3321],"size":[0.1213,0.2714,0.0633],"inflate":0.001,"pivot":[-0.2901,5.6905,-0.2691],"rotation":[-101.7612,30.3782,0.8795],"uv":{"north":{"uv":[43.25,17],"uv_size":[-0.25,0.25]},"east":{"uv":[19.25,43],"uv_size":[-0.25,0.25]},"south":{"uv":[43.25,18],"uv_size":[-0.25,0.25]},"west":{"uv":[18.25,43],"uv_size":[-0.25,0.25]},"up":{"uv":[43.25,19],"uv_size":[-0.25,0.25]},"down":{"uv":[20.25,43.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2019,5.691,-0.305],"size":[0.0812,0.2334,0.0651],"inflate":0.001,"pivot":[-0.1613,5.6913,-0.2403],"rotation":[-104.5,0,0],"uv":{"north":{"uv":[43.25,20],"uv_size":[-0.25,0.25]},"east":{"uv":[22.25,43],"uv_size":[-0.25,0.25]},"south":{"uv":[43.25,21],"uv_size":[-0.25,0.25]},"west":{"uv":[21.25,43],"uv_size":[-0.25,0.25]},"up":{"uv":[43.25,22],"uv_size":[-0.25,0.25]},"down":{"uv":[23.25,43.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,1.3032,-0.5931],"size":[0.0806,0.1008,0.262],"pivot":[-0.2318,1.3032,-0.4923],"rotation":[-30,0,0],"uv":{"north":{"uv":[43.25,23],"uv_size":[-0.25,0.25]},"east":{"uv":[25.25,43],"uv_size":[-0.25,0.25]},"south":{"uv":[43.25,24],"uv_size":[-0.25,0.25]},"west":{"uv":[24.25,43],"uv_size":[-0.25,0.25]},"up":{"uv":[43.25,25],"uv_size":[-0.25,0.25]},"down":{"uv":[26.25,43.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3753,1.2544,-0.5467],"size":[0.1737,0.1209,0.2633],"pivot":[-0.2016,1.3754,-0.4157],"rotation":[-25.3264,-16.6419,-31.1798],"uv":{"south":{"uv":[27.25,43],"uv_size":[-0.25,0.25]},"west":{"uv":[43.25,26],"uv_size":[-0.25,0.25]},"up":{"uv":[43.25,27],"uv_size":[-0.25,0.25]}}},{"origin":[-0.2016,1.276,-0.7246],"size":[0.0806,0.1008,0.2419],"pivot":[-0.2318,1.276,-0.4626],"rotation":[-42.5,0,0],"uv":{"north":{"uv":[28.25,43],"uv_size":[-0.25,0.25]},"east":{"uv":[43.25,29],"uv_size":[-0.25,0.25]},"south":{"uv":[29.25,43],"uv_size":[-0.25,0.25]},"west":{"uv":[43.25,28],"uv_size":[-0.25,0.25]},"up":{"uv":[30.25,43],"uv_size":[-0.25,0.25]},"down":{"uv":[43.25,30.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3753,1.4254,-0.6208],"size":[0.1737,0.0202,0.2432],"pivot":[-0.2016,1.4456,-0.4985],"rotation":[-36.9112,-22.7656,-27.2564],"uv":{"north":{"uv":[31.25,43],"uv_size":[-0.25,0.25]},"east":{"uv":[43.25,32],"uv_size":[-0.25,0.25]},"south":{"uv":[32.25,43],"uv_size":[-0.25,0.25]},"west":{"uv":[43.25,31],"uv_size":[-0.25,0.25]},"up":{"uv":[33.25,43],"uv_size":[-0.25,0.25]},"down":{"uv":[43.25,33.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,1.4035,-1.0606],"size":[0.0806,0.1008,0.5039],"pivot":[-0.2318,1.3833,-0.6373],"rotation":[-60.75,0,0],"uv":{"north":{"uv":[34.25,43],"uv_size":[-0.25,0.25]},"east":{"uv":[10.5,31],"uv_size":[-0.5,0.25]},"south":{"uv":[43.25,34],"uv_size":[-0.25,0.25]},"west":{"uv":[31.5,9],"uv_size":[-0.5,0.25]},"up":{"uv":[31.25,10],"uv_size":[-0.25,0.5]},"down":{"uv":[11.25,31.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3753,1.5717,-0.8687],"size":[0.1737,0.0202,0.5052],"pivot":[-0.2016,1.5919,-0.6155],"rotation":[-55.6591,-29.9832,-18.8513],"uv":{"north":{"uv":[35.25,43],"uv_size":[-0.25,0.25]},"east":{"uv":[12.5,31],"uv_size":[-0.5,0.25]},"south":{"uv":[43.25,35],"uv_size":[-0.25,0.25]},"west":{"uv":[31.5,11],"uv_size":[-0.5,0.25]},"up":{"uv":[31.25,12],"uv_size":[-0.25,0.5]},"down":{"uv":[13.25,31.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.2016,1.6218,-1.0098],"size":[0.0806,0.1008,0.262],"pivot":[-0.2318,1.6218,-0.7478],"rotation":[-78,0,0],"uv":{"north":{"uv":[36.25,43],"uv_size":[-0.25,0.25]},"east":{"uv":[43.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,43],"uv_size":[-0.25,0.25]},"west":{"uv":[43.25,36],"uv_size":[-0.25,0.25]},"up":{"uv":[38.25,43],"uv_size":[-0.25,0.25]},"down":{"uv":[43.25,38.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3753,1.7507,-0.8074],"size":[0.1737,0.0202,0.2633],"pivot":[-0.2016,1.7709,-0.6764],"rotation":[-75.463,-34.0738,-8.266],"uv":{"north":{"uv":[39.25,43],"uv_size":[-0.25,0.25]},"east":{"uv":[43.25,40],"uv_size":[-0.25,0.25]},"south":{"uv":[40.25,43],"uv_size":[-0.25,0.25]},"west":{"uv":[43.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,43],"uv_size":[-0.25,0.25]},"down":{"uv":[43.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,1.7831,-1.1842],"size":[0.0806,0.1008,0.3225],"pivot":[-0.2318,1.7428,-0.8617],"rotation":[-98.75,0,0],"uv":{"north":{"uv":[42.25,43],"uv_size":[-0.25,0.25]},"east":{"uv":[0.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[43.25,43],"uv_size":[-0.25,0.25]},"west":{"uv":[43.25,42],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,0],"uv_size":[-0.25,0.25]},"down":{"uv":[1.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3753,1.8605,-0.859],"size":[0.1737,0.0202,0.3238],"pivot":[-0.2016,1.8807,-0.6977],"rotation":[-100.6344,-34.4794,6.0676],"uv":{"north":{"uv":[44.25,1],"uv_size":[-0.25,0.25]},"east":{"uv":[3.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,2],"uv_size":[-0.25,0.25]},"west":{"uv":[2.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,3],"uv_size":[-0.25,0.25]},"down":{"uv":[4.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,2.0554,-0.9542],"size":[0.0806,0.1008,0.1814],"pivot":[-0.2318,2.0554,-0.7728],"rotation":[-110.75,0,0],"uv":{"north":{"uv":[44.25,4],"uv_size":[-0.25,0.25]},"east":{"uv":[6.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,5],"uv_size":[-0.25,0.25]},"west":{"uv":[5.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,6],"uv_size":[-0.25,0.25]},"down":{"uv":[7.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.4031,2.0843,-0.6767],"size":[0.2016,0.0202,0.1209],"pivot":[-0.2016,2.1045,-0.6464],"rotation":[-114.1904,-30.1621,12.719],"uv":{"north":{"uv":[44.25,7],"uv_size":[-0.25,0.25]},"east":{"uv":[9.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,8],"uv_size":[-0.25,0.25]},"west":{"uv":[8.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,9],"uv_size":[-0.25,0.25]},"down":{"uv":[10.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3661,2.1641,-0.7449],"size":[0.2217,0.0202,0.0806],"pivot":[-0.3661,2.1742,-0.7449],"rotation":[-104.3709,-35.4955,-5.2694],"uv":{"north":{"uv":[44.25,10],"uv_size":[-0.25,0.25]},"east":{"uv":[12.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,11],"uv_size":[-0.25,0.25]},"west":{"uv":[11.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,12],"uv_size":[-0.25,0.25]},"down":{"uv":[13.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,2.3901,-1.1721],"size":[0.0806,0.1008,0.3427],"pivot":[-0.2318,2.3699,-0.9604],"rotation":[-45.75,0,0],"uv":{"north":{"uv":[44.25,13],"uv_size":[-0.25,0.25]},"east":{"uv":[15.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,14],"uv_size":[-0.25,0.25]},"west":{"uv":[14.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,15],"uv_size":[-0.25,0.25]},"down":{"uv":[16.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3753,2.463,-1.0746],"size":[0.1737,0.0202,0.3843],"pivot":[-0.2016,2.4832,-0.9019],"rotation":[-40.0792,-24.2225,-25.9931],"uv":{"north":{"uv":[44.25,16],"uv_size":[-0.25,0.25]},"east":{"uv":[14.5,31],"uv_size":[-0.5,0.25]},"south":{"uv":[17.25,44],"uv_size":[-0.25,0.25]},"west":{"uv":[31.5,13],"uv_size":[-0.5,0.25]},"up":{"uv":[31.25,14],"uv_size":[-0.25,0.5]},"down":{"uv":[15.25,31.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.2016,2.2901,-0.8546],"size":[0.0806,0.1008,0.1814],"pivot":[-0.2318,2.2901,-0.8546],"rotation":[-33.25,0,0],"uv":{"north":{"uv":[44.25,17],"uv_size":[-0.25,0.25]},"east":{"uv":[19.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,18],"uv_size":[-0.25,0.25]},"west":{"uv":[18.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,19],"uv_size":[-0.25,0.25]},"down":{"uv":[20.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3628,2.3045,-0.8142],"size":[0.1613,0.0202,0.1613],"pivot":[-0.2016,2.3247,-0.7235],"rotation":[-27.2429,-19.8431,-33.3959],"uv":{"north":{"uv":[44.25,20],"uv_size":[-0.25,0.25]},"east":{"uv":[22.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,21],"uv_size":[-0.25,0.25]},"west":{"uv":[21.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,22],"uv_size":[-0.25,0.25]},"down":{"uv":[23.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.322,2.1858,-0.7481],"size":[0.1594,0.0202,0.0245],"pivot":[-0.322,2.1959,-0.7236],"rotation":[-29.0589,-27.5623,-28.8906],"uv":{"north":{"uv":[44.25,23],"uv_size":[-0.25,0.25]},"east":{"uv":[25.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,24],"uv_size":[-0.25,0.25]},"west":{"uv":[24.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,25],"uv_size":[-0.25,0.25]},"down":{"uv":[26.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,2.1742,-0.6476],"size":[0.0806,0.1008,0.0919],"pivot":[-0.2318,2.275,-0.6476],"rotation":[-68.7302,0,0],"uv":{"north":{"uv":[44.25,26],"uv_size":[-0.25,0.25]},"east":{"uv":[28.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,27],"uv_size":[-0.25,0.25]},"west":{"uv":[27.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,28],"uv_size":[-0.25,0.25]},"down":{"uv":[29.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.4233,2.212,-0.6366],"size":[0.2217,0.0202,0.0314],"pivot":[-0.2016,2.2321,-0.631],"rotation":[-63.8641,-34.5618,-15.5548],"uv":{"north":{"uv":[44.25,29],"uv_size":[-0.25,0.25]},"east":{"uv":[31.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,30],"uv_size":[-0.25,0.25]},"west":{"uv":[30.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,31],"uv_size":[-0.25,0.25]},"down":{"uv":[32.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3713,2.1754,-0.7662],"size":[0.2178,0.0202,0.0421],"pivot":[-0.3713,2.1855,-0.7662],"rotation":[-58.5922,-29.9763,-25.4039],"uv":{"north":{"uv":[44.25,32],"uv_size":[-0.25,0.25]},"east":{"uv":[34.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,33],"uv_size":[-0.25,0.25]},"west":{"uv":[33.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,34],"uv_size":[-0.25,0.25]},"down":{"uv":[35.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3713,2.1462,-0.778],"size":[0.2205,0.0202,0.0232],"pivot":[-0.3713,2.1562,-0.7548],"rotation":[-67.8155,-37.0208,-8.8051],"uv":{"north":{"uv":[44.25,35],"uv_size":[-0.25,0.25]},"east":{"uv":[37.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,36],"uv_size":[-0.25,0.25]},"west":{"uv":[36.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,37],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,2.5614,-1.0739],"size":[0.0806,0.1008,0.1008],"pivot":[-0.2318,2.5614,-1.0739],"rotation":[-63.25,0,0],"uv":{"north":{"uv":[44.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[40.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,39],"uv_size":[-0.25,0.25]},"west":{"uv":[39.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,40],"uv_size":[-0.25,0.25]},"down":{"uv":[41.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3753,2.5416,-1.0116],"size":[0.1737,0.0202,0.1021],"pivot":[-0.2016,2.5618,-0.9612],"rotation":[-58.4126,-30.7623,-17.4588],"uv":{"north":{"uv":[44.25,41],"uv_size":[-0.25,0.25]},"east":{"uv":[43.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,43],"uv_size":[-0.25,0.25]},"down":{"uv":[44.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,2.7828,-1.3742],"size":[0.0806,0.1008,0.4838],"pivot":[-0.2318,2.7525,-1.1324],"rotation":[-80.75,0,0],"uv":{"north":{"uv":[0.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[16.5,31],"uv_size":[-0.5,0.25]},"south":{"uv":[45.25,0],"uv_size":[-0.25,0.25]},"west":{"uv":[31.5,15],"uv_size":[-0.5,0.25]},"up":{"uv":[31.25,16],"uv_size":[-0.25,0.5]},"down":{"uv":[17.25,31.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3753,2.7534,-1.2449],"size":[0.1737,0.0202,0.485],"pivot":[-0.2016,2.7736,-1.003],"rotation":[-78.7628,-34.4251,-6.4086],"uv":{"north":{"uv":[1.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[18.5,31],"uv_size":[-0.5,0.25]},"south":{"uv":[45.25,1],"uv_size":[-0.25,0.25]},"west":{"uv":[31.5,17],"uv_size":[-0.5,0.25]},"up":{"uv":[31.25,18],"uv_size":[-0.25,0.5]},"down":{"uv":[19.25,31.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.2016,2.8967,-1.5283],"size":[0.0806,0.1008,0.4031],"pivot":[-0.2318,2.8967,-1.1252],"rotation":[-110.25,0,0],"uv":{"north":{"uv":[2.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[20.5,31],"uv_size":[-0.5,0.25]},"south":{"uv":[45.25,2],"uv_size":[-0.25,0.25]},"west":{"uv":[31.5,19],"uv_size":[-0.5,0.25]},"up":{"uv":[31.25,20],"uv_size":[-0.25,0.5]},"down":{"uv":[21.25,31.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3753,3.0307,-1.1624],"size":[0.1737,0.0202,0.4044],"pivot":[-0.2016,3.0509,-0.9609],"rotation":[-114.2306,-32.5051,13.596],"uv":{"north":{"uv":[3.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[22.5,31],"uv_size":[-0.5,0.25]},"south":{"uv":[45.25,3],"uv_size":[-0.25,0.25]},"west":{"uv":[31.5,21],"uv_size":[-0.5,0.25]},"up":{"uv":[31.25,22],"uv_size":[-0.25,0.5]},"down":{"uv":[23.25,31.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.2016,3.0825,-1.0733],"size":[0.0806,0.1008,0.1613],"pivot":[-0.2318,3.1833,-0.912],"rotation":[-130.25,0,0],"uv":{"north":{"uv":[4.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[45.25,5],"uv_size":[-0.25,0.25]},"south":{"uv":[5.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[45.25,4],"uv_size":[-0.25,0.25]},"up":{"uv":[6.25,45],"uv_size":[-0.25,0.25]},"down":{"uv":[45.25,6.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.4031,3.2246,-0.9003],"size":[0.2016,0.0202,0.1209],"pivot":[-0.2016,3.2448,-0.8599],"rotation":[-136.7631,-27.5149,26.166],"uv":{"north":{"uv":[7.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[45.25,8],"uv_size":[-0.25,0.25]},"south":{"uv":[8.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[45.25,7],"uv_size":[-0.25,0.25]},"up":{"uv":[9.25,45],"uv_size":[-0.25,0.25]},"down":{"uv":[45.25,9.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3559,3.3495,-0.9332],"size":[0.1982,0.0202,0.0367],"pivot":[-0.3559,3.3596,-0.9332],"rotation":[-132.2123,-34.8892,17.4122],"uv":{"north":{"uv":[10.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[45.25,11],"uv_size":[-0.25,0.25]},"south":{"uv":[11.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[45.25,10],"uv_size":[-0.25,0.25]},"up":{"uv":[12.25,45],"uv_size":[-0.25,0.25]},"down":{"uv":[45.25,12.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,3.2055,-0.9086],"size":[0.0806,0.1008,0.1008],"pivot":[-0.2318,3.3063,-0.8079],"rotation":[-85.25,0,0],"uv":{"north":{"uv":[13.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[45.25,14],"uv_size":[-0.25,0.25]},"south":{"uv":[14.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[45.25,13],"uv_size":[-0.25,0.25]},"up":{"uv":[15.25,45],"uv_size":[-0.25,0.25]},"down":{"uv":[45.25,15.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.4233,3.3364,-0.8624],"size":[0.2217,0.0202,0.0605],"pivot":[-0.2016,3.3565,-0.812],"rotation":[-83.8755,-39.0894,-3.8706],"uv":{"north":{"uv":[16.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[45.25,17],"uv_size":[-0.25,0.25]},"south":{"uv":[17.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[45.25,16],"uv_size":[-0.25,0.25]},"up":{"uv":[18.25,45],"uv_size":[-0.25,0.25]},"down":{"uv":[45.25,18.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3669,3.3242,-0.9982],"size":[0.2182,0.0202,0.0394],"pivot":[-0.3669,3.3342,-0.9588],"rotation":[-92.279,-39.4352,9.3723],"uv":{"north":{"uv":[19.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[45.25,20],"uv_size":[-0.25,0.25]},"south":{"uv":[20.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[45.25,19],"uv_size":[-0.25,0.25]},"up":{"uv":[21.25,45],"uv_size":[-0.25,0.25]},"down":{"uv":[45.25,21.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,3.306,-0.8968],"size":[0.0806,0.1008,0.0806],"pivot":[-0.2318,3.4068,-0.8162],"rotation":[-47.75,0,0],"uv":{"north":{"uv":[22.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[45.25,23],"uv_size":[-0.25,0.25]},"south":{"uv":[23.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[45.25,22],"uv_size":[-0.25,0.25]},"up":{"uv":[24.25,45],"uv_size":[-0.25,0.25]},"down":{"uv":[45.25,24.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.383,3.4164,-0.9038],"size":[0.1814,0.0202,0.0403],"pivot":[-0.2016,3.4366,-0.8433],"rotation":[-42.797,-23.6056,-23.3876],"uv":{"north":{"uv":[25.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[45.25,26],"uv_size":[-0.25,0.25]},"south":{"uv":[26.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[45.25,25],"uv_size":[-0.25,0.25]},"up":{"uv":[27.25,45],"uv_size":[-0.25,0.25]},"down":{"uv":[45.25,27.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3487,3.3698,-0.9928],"size":[0.1787,0.0202,0.057],"pivot":[-0.3487,3.3798,-0.9358],"rotation":[-50.362,-36.0586,-8.3352],"uv":{"north":{"uv":[28.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[45.25,29],"uv_size":[-0.25,0.25]},"south":{"uv":[29.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[45.25,28],"uv_size":[-0.25,0.25]},"up":{"uv":[30.25,45],"uv_size":[-0.25,0.25]},"down":{"uv":[45.25,30.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,3.6928,-1.2283],"size":[0.0806,0.1008,0.1411],"pivot":[-0.2318,3.6928,-1.0872],"rotation":[-80.25,0,0],"uv":{"north":{"uv":[31.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[45.25,32],"uv_size":[-0.25,0.25]},"south":{"uv":[32.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[45.25,31],"uv_size":[-0.25,0.25]},"up":{"uv":[33.25,45],"uv_size":[-0.25,0.25]},"down":{"uv":[45.25,33.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3753,3.7391,-1.0717],"size":[0.1737,0.0403,0.1424],"pivot":[-0.2016,3.7794,-0.9999],"rotation":[-78.1608,-34.3678,-6.7486],"uv":{"north":{"uv":[34.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[45.25,35],"uv_size":[-0.25,0.25]},"south":{"uv":[35.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[45.25,34],"uv_size":[-0.25,0.25]},"up":{"uv":[36.25,45],"uv_size":[-0.25,0.25]},"down":{"uv":[45.25,36.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,3.5391,-1.351],"size":[0.0806,0.1008,0.5241],"pivot":[-0.2318,3.4887,-1.0486],"rotation":[-65.25,0,0],"uv":{"north":{"uv":[37.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[24.5,31],"uv_size":[-0.5,0.25]},"south":{"uv":[45.25,37],"uv_size":[-0.25,0.25]},"west":{"uv":[31.5,23],"uv_size":[-0.5,0.25]},"up":{"uv":[31.25,24],"uv_size":[-0.25,0.5]},"down":{"uv":[25.25,31.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3753,3.5684,-1.1915],"size":[0.1737,0.0202,0.4044],"pivot":[-0.2016,3.5886,-0.9282],"rotation":[-60.6466,-31.3432,-16.3063],"uv":{"north":{"uv":[38.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[26.5,31],"uv_size":[-0.5,0.25]},"south":{"uv":[45.25,38],"uv_size":[-0.25,0.25]},"west":{"uv":[31.5,25],"uv_size":[-0.5,0.25]},"up":{"uv":[31.25,26],"uv_size":[-0.25,0.5]},"down":{"uv":[27.25,31.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.2016,3.8397,-1.7084],"size":[0.0806,0.1008,0.5241],"pivot":[-0.2318,3.7591,-1.1843],"rotation":[-101.5,0,0],"uv":{"north":{"uv":[39.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[28.5,31],"uv_size":[-0.5,0.25]},"south":{"uv":[45.25,39],"uv_size":[-0.25,0.25]},"west":{"uv":[31.5,27],"uv_size":[-0.5,0.25]},"up":{"uv":[31.25,28],"uv_size":[-0.25,0.5]},"down":{"uv":[29.25,31.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3753,3.9595,-1.2177],"size":[0.1737,0.0202,0.5254],"pivot":[-0.2016,3.9797,-0.9543],"rotation":[-103.9391,-34.1442,7.9308],"uv":{"north":{"uv":[40.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[30.5,31],"uv_size":[-0.5,0.25]},"south":{"uv":[45.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[31.5,29],"uv_size":[-0.5,0.25]},"up":{"uv":[31.25,30],"uv_size":[-0.25,0.5]},"down":{"uv":[31.25,31.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.2016,4.1775,-1.4201],"size":[0.0806,0.1008,0.4031],"pivot":[-0.2318,4.1775,-1.0169],"rotation":[-132,0,0],"uv":{"north":{"uv":[41.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[32.5,0],"uv_size":[-0.5,0.25]},"south":{"uv":[45.25,41],"uv_size":[-0.25,0.25]},"west":{"uv":[0.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[1.25,32],"uv_size":[-0.25,0.5]},"down":{"uv":[32.25,1.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3753,4.2397,-1.0087],"size":[0.1737,0.0202,0.4044],"pivot":[-0.2016,4.2599,-0.8072],"rotation":[-137.6858,-25.1922,25.0588],"uv":{"north":{"uv":[42.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[32.5,2],"uv_size":[-0.5,0.25]},"south":{"uv":[45.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[2.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[3.25,32],"uv_size":[-0.25,0.5]},"down":{"uv":[32.25,3.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.2016,4.2138,-0.901],"size":[0.0806,0.1209,0.1613],"pivot":[-0.2318,4.3348,-0.7397],"rotation":[-154.5,0,0],"uv":{"north":{"uv":[43.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[45.25,44],"uv_size":[-0.25,0.25]},"south":{"uv":[44.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[45.25,43],"uv_size":[-0.25,0.25]},"up":{"uv":[45.25,45],"uv_size":[-0.25,0.25]},"down":{"uv":[0.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.4031,4.3493,-0.7274],"size":[0.2016,0.0202,0.1411],"pivot":[-0.2016,4.3695,-0.667],"rotation":[-159.9285,-16.065,37.1388],"uv":{"north":{"uv":[46.25,0],"uv_size":[-0.25,0.25]},"east":{"uv":[2.25,46],"uv_size":[-0.25,0.25]},"south":{"uv":[46.25,1],"uv_size":[-0.25,0.25]},"west":{"uv":[1.25,46],"uv_size":[-0.25,0.25]},"up":{"uv":[46.25,2],"uv_size":[-0.25,0.25]},"down":{"uv":[3.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3495,4.5093,-0.6715],"size":[0.2006,0.0202,0.0193],"pivot":[-0.3495,4.5194,-0.6715],"rotation":[-159.2813,-21.2207,35.1166],"uv":{"north":{"uv":[46.25,3],"uv_size":[-0.25,0.25]},"east":{"uv":[5.25,46],"uv_size":[-0.25,0.25]},"south":{"uv":[46.25,4],"uv_size":[-0.25,0.25]},"west":{"uv":[4.25,46],"uv_size":[-0.25,0.25]},"up":{"uv":[46.25,5],"uv_size":[-0.25,0.25]},"down":{"uv":[6.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,4.2631,-0.7664],"size":[0.0806,0.1411,0.1722],"pivot":[-0.2318,4.4042,-0.5942],"rotation":[-110.3399,0,0],"uv":{"north":{"uv":[46.25,6],"uv_size":[-0.25,0.25]},"east":{"uv":[8.25,46],"uv_size":[-0.25,0.25]},"south":{"uv":[46.25,7],"uv_size":[-0.25,0.25]},"west":{"uv":[7.25,46],"uv_size":[-0.25,0.25]},"up":{"uv":[46.25,8],"uv_size":[-0.25,0.25]},"down":{"uv":[9.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.383,4.4648,-0.6302],"size":[0.1814,0.0202,0.0916],"pivot":[-0.2016,4.4849,-0.5643],"rotation":[-114.6179,-33.4449,14.173],"uv":{"north":{"uv":[46.25,9],"uv_size":[-0.25,0.25]},"east":{"uv":[11.25,46],"uv_size":[-0.25,0.25]},"south":{"uv":[46.25,10],"uv_size":[-0.25,0.25]},"west":{"uv":[10.25,46],"uv_size":[-0.25,0.25]},"up":{"uv":[46.25,11],"uv_size":[-0.25,0.25]},"down":{"uv":[12.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3424,4.5765,-0.649],"size":[0.1802,0.0202,0.0205],"pivot":[-0.3424,4.5866,-0.649],"rotation":[-110.4566,-35.9402,6.8703],"uv":{"north":{"uv":[46.25,12],"uv_size":[-0.25,0.25]},"east":{"uv":[14.25,46],"uv_size":[-0.25,0.25]},"south":{"uv":[46.25,13],"uv_size":[-0.25,0.25]},"west":{"uv":[13.25,46],"uv_size":[-0.25,0.25]},"up":{"uv":[46.25,14],"uv_size":[-0.25,0.25]},"down":{"uv":[15.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3424,4.4907,-0.7376],"size":[0.1723,0.0202,0.0568],"pivot":[-0.3424,4.5008,-0.6808],"rotation":[-123.5321,-24.4916,32.404],"uv":{"north":{"uv":[46.25,15],"uv_size":[-0.25,0.25]},"east":{"uv":[17.25,46],"uv_size":[-0.25,0.25]},"south":{"uv":[46.25,16],"uv_size":[-0.25,0.25]},"west":{"uv":[16.25,46],"uv_size":[-0.25,0.25]},"up":{"uv":[46.25,17],"uv_size":[-0.25,0.25]},"down":{"uv":[18.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,5.437,-0.9391],"size":[0.0806,0.1008,0.3951],"pivot":[-0.2318,5.437,-0.544],"rotation":[-140.1326,0,0],"uv":{"north":{"uv":[46.25,18],"uv_size":[-0.25,0.25]},"east":{"uv":[32.5,4],"uv_size":[-0.5,0.25]},"south":{"uv":[19.25,46],"uv_size":[-0.25,0.25]},"west":{"uv":[4.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[5.25,32],"uv_size":[-0.25,0.5]},"down":{"uv":[32.25,5.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3753,5.4661,-0.5266],"size":[0.1737,0.0208,0.3963],"pivot":[-0.2016,5.4862,-0.3278],"rotation":[-145.6796,-21.6698,28.4088],"uv":{"north":{"uv":[46.25,19],"uv_size":[-0.25,0.25]},"east":{"uv":[32.5,6],"uv_size":[-0.5,0.25]},"south":{"uv":[20.25,46],"uv_size":[-0.25,0.25]},"west":{"uv":[6.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[7.25,32],"uv_size":[-0.25,0.5]},"down":{"uv":[32.25,7.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3379,5.6861,-0.2444],"size":[0.2822,0.0209,0.0806],"pivot":[-0.3379,5.6965,-0.2444],"rotation":[-147.2716,-57.3463,22.5283],"uv":{"north":{"uv":[46.25,20],"uv_size":[-0.25,0.25]},"east":{"uv":[22.25,46],"uv_size":[-0.25,0.25]},"south":{"uv":[46.25,21],"uv_size":[-0.25,0.25]},"west":{"uv":[21.25,46],"uv_size":[-0.25,0.25]},"up":{"uv":[46.25,22],"uv_size":[-0.25,0.25]},"down":{"uv":[23.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2029,5.6902,-0.4515],"size":[0.0819,0.1023,0.2108],"pivot":[-0.1613,5.6902,-0.2408],"rotation":[-168.6326,0,0],"uv":{"north":{"uv":[46.25,23],"uv_size":[-0.25,0.25]},"east":{"uv":[25.25,46],"uv_size":[-0.25,0.25]},"south":{"uv":[46.25,24],"uv_size":[-0.25,0.25]},"west":{"uv":[24.25,46],"uv_size":[-0.25,0.25]},"up":{"uv":[46.25,25],"uv_size":[-0.25,0.25]},"down":{"uv":[26.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,5.437,-0.544],"size":[0.0806,0.1008,0.4838],"pivot":[-0.2318,5.437,-0.544],"rotation":[-115.75,0,0],"uv":{"north":{"uv":[46.25,26],"uv_size":[-0.25,0.25]},"east":{"uv":[32.5,8],"uv_size":[-0.5,0.25]},"south":{"uv":[27.25,46],"uv_size":[-0.25,0.25]},"west":{"uv":[8.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[9.25,32],"uv_size":[-0.25,0.5]},"down":{"uv":[32.25,9.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3756,5.1552,-0.7985],"size":[0.1741,0.0197,0.482],"pivot":[-0.2016,5.1753,-0.5583],"rotation":[-120.4738,-31.0576,16.8867],"uv":{"north":{"uv":[46.25,27],"uv_size":[-0.25,0.25]},"east":{"uv":[32.5,10],"uv_size":[-0.5,0.25]},"south":{"uv":[28.25,46],"uv_size":[-0.25,0.25]},"west":{"uv":[10.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[11.25,32],"uv_size":[-0.25,0.5]},"down":{"uv":[32.25,11.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.2016,4.9011,-0.9675],"size":[0.0806,0.1008,0.262],"pivot":[-0.2318,4.9011,-0.7054],"rotation":[-96,0,0],"uv":{"north":{"uv":[46.25,28],"uv_size":[-0.25,0.25]},"east":{"uv":[30.25,46],"uv_size":[-0.25,0.25]},"south":{"uv":[46.25,29],"uv_size":[-0.25,0.25]},"west":{"uv":[29.25,46],"uv_size":[-0.25,0.25]},"up":{"uv":[46.25,30],"uv_size":[-0.25,0.25]},"down":{"uv":[31.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3753,5.0007,-0.7238],"size":[0.1737,0.0202,0.2633],"pivot":[-0.2016,5.0208,-0.5915],"rotation":[-97.3067,-34.7251,4.1775],"uv":{"north":{"uv":[46.25,31],"uv_size":[-0.25,0.25]},"east":{"uv":[33.25,46],"uv_size":[-0.25,0.25]},"south":{"uv":[46.25,32],"uv_size":[-0.25,0.25]},"west":{"uv":[32.25,46],"uv_size":[-0.25,0.25]},"up":{"uv":[46.25,33],"uv_size":[-0.25,0.25]},"down":{"uv":[34.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2016,4.8938,-0.9586],"size":[0.0806,0.1008,0.5442],"pivot":[-0.2318,4.8535,-0.7369],"rotation":[-78.5,0,0],"uv":{"north":{"uv":[46.25,34],"uv_size":[-0.25,0.25]},"east":{"uv":[32.5,12],"uv_size":[-0.5,0.25]},"south":{"uv":[35.25,46],"uv_size":[-0.25,0.25]},"west":{"uv":[12.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[13.25,32],"uv_size":[-0.25,0.5]},"down":{"uv":[32.25,13.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3753,4.8121,-0.8607],"size":[0.1737,0.0202,0.5039],"pivot":[-0.2016,4.8323,-0.5886],"rotation":[-76.0609,-34.1442,-7.9308],"uv":{"north":{"uv":[46.25,35],"uv_size":[-0.25,0.25]},"east":{"uv":[32.5,14],"uv_size":[-0.5,0.25]},"south":{"uv":[36.25,46],"uv_size":[-0.25,0.25]},"west":{"uv":[14.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[15.25,32],"uv_size":[-0.25,0.5]},"down":{"uv":[32.25,15.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3382,4.5736,-0.6856],"size":[0.1696,0.0202,0.0376],"pivot":[-0.3382,4.5836,-0.648],"rotation":[-84.7959,-36.2369,7.1654],"uv":{"north":{"uv":[46.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,46],"uv_size":[-0.25,0.25]},"south":{"uv":[46.25,37],"uv_size":[-0.25,0.25]},"west":{"uv":[37.25,46],"uv_size":[-0.25,0.25]},"up":{"uv":[46.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[39.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,6.2245,0.7883],"size":[0.2626,0.2424,0.827],"inflate":0.001,"pivot":[-0.2116,6.2248,0.7483],"rotation":[-79.75,0,0],"uv":{"north":{"uv":[46.25,39],"uv_size":[-0.25,0.25]},"east":{"uv":[8.75,25],"uv_size":[-0.75,0.25]},"south":{"uv":[40.25,46],"uv_size":[-0.25,0.25]},"west":{"uv":[25.75,7],"uv_size":[-0.75,0.25]},"up":{"uv":[25.25,8],"uv_size":[-0.25,0.75]},"down":{"uv":[9.25,25.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.3429,6.2245,0.5867],"size":[0.2626,0.1618,0.2021],"inflate":0.001,"pivot":[-0.2116,6.2248,0.7483],"rotation":[-79.75,0,0],"uv":{"north":{"uv":[46.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[42.25,46],"uv_size":[-0.25,0.25]},"south":{"uv":[46.25,41],"uv_size":[-0.25,0.25]},"west":{"uv":[41.25,46],"uv_size":[-0.25,0.25]},"up":{"uv":[46.25,42],"uv_size":[-0.25,0.25]},"down":{"uv":[43.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,6.2447,0.5644],"size":[0.2626,0.0607,0.1806],"inflate":0.001,"pivot":[-0.2116,6.2447,0.7447],"rotation":[-70.701,0,0],"uv":{"north":{"uv":[46.25,43],"uv_size":[-0.25,0.25]},"east":{"uv":[45.25,46],"uv_size":[-0.25,0.25]},"south":{"uv":[46.25,44],"uv_size":[-0.25,0.25]},"west":{"uv":[44.25,46],"uv_size":[-0.25,0.25]},"up":{"uv":[46.25,45],"uv_size":[-0.25,0.25]},"down":{"uv":[46.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,5.1728,1.1402],"size":[0.2626,0.2425,0.9882],"inflate":0.001,"pivot":[-0.2116,5.415,1.1405],"rotation":[-85.25,0,0],"uv":{"north":{"uv":[0.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[21,18],"uv_size":[-1,0.25]},"south":{"uv":[47.25,0],"uv_size":[-0.25,0.25]},"west":{"uv":[19,20],"uv_size":[-1,0.25]},"up":{"uv":[19.25,20],"uv_size":[-0.25,1]},"down":{"uv":[20.25,20],"uv_size":[-0.25,-1]}}},{"origin":[-0.3429,4.4104,0.9608],"size":[0.2626,0.1215,0.2223],"inflate":0.001,"pivot":[-0.2116,4.4107,0.9813],"rotation":[-93.25,0,0],"uv":{"north":{"uv":[1.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[47.25,2],"uv_size":[-0.25,0.25]},"south":{"uv":[2.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,1],"uv_size":[-0.25,0.25]},"up":{"uv":[3.25,47],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,3.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,4.2092,0.9695],"size":[0.2626,0.2223,0.3231],"inflate":0.001,"pivot":[-0.2116,4.2095,0.9698],"rotation":[-93.25,0,0],"uv":{"north":{"uv":[4.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[47.25,5],"uv_size":[-0.25,0.25]},"south":{"uv":[5.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,4],"uv_size":[-0.25,0.25]},"up":{"uv":[6.25,47],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,6.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,4.2092,1.292],"size":[0.2626,0.2626,0.3634],"inflate":0.001,"pivot":[-0.2116,4.2095,0.9698],"rotation":[-93.25,0,0],"uv":{"north":{"uv":[7.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[47.25,8],"uv_size":[-0.25,0.25]},"south":{"uv":[8.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,7],"uv_size":[-0.25,0.25]},"up":{"uv":[9.25,47],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,9.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,3.525,0.8904],"size":[0.2626,0.3231,0.9479],"inflate":0.001,"pivot":[-0.2116,3.5252,0.931],"rotation":[-102.5,0,0],"uv":{"north":{"uv":[10.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[1,21],"uv_size":[-1,0.25]},"south":{"uv":[47.25,10],"uv_size":[-0.25,0.25]},"west":{"uv":[21,20],"uv_size":[-1,0.25]},"up":{"uv":[21.25,0],"uv_size":[-0.25,1]},"down":{"uv":[1.25,22],"uv_size":[-0.25,-1]}}},{"origin":[-0.3429,2.6394,0.7344],"size":[0.2626,0.0812,0.1013],"inflate":0.001,"pivot":[-0.2116,2.6397,0.7347],"rotation":[-59,0,0],"uv":{"north":{"uv":[11.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[47.25,12],"uv_size":[-0.25,0.25]},"south":{"uv":[12.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,11],"uv_size":[-0.25,0.25]},"up":{"uv":[13.25,47],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,13.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.553,0.7863],"size":[0.2626,0.0812,0.2223],"inflate":0.001,"pivot":[-0.2116,2.5533,0.7866],"rotation":[-9,0,0],"uv":{"north":{"uv":[14.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[47.25,15],"uv_size":[-0.25,0.25]},"south":{"uv":[15.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,14],"uv_size":[-0.25,0.25]},"up":{"uv":[16.25,47],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,16.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.5174,1.0179],"size":[0.2626,0.0812,0.182],"inflate":0.001,"pivot":[-0.2116,2.5983,1.0182],"rotation":[-36.25,0,0],"uv":{"north":{"uv":[17.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[47.25,18],"uv_size":[-0.25,0.25]},"south":{"uv":[18.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,17],"uv_size":[-0.25,0.25]},"up":{"uv":[19.25,47],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,19.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.4101,1.1642],"size":[0.2626,0.0812,0.182],"inflate":0.001,"pivot":[-0.2116,2.491,1.1645],"rotation":[-72.75,0,0],"uv":{"north":{"uv":[20.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[47.25,21],"uv_size":[-0.25,0.25]},"south":{"uv":[21.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,20],"uv_size":[-0.25,0.25]},"up":{"uv":[22.25,47],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,22.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.2369,1.218],"size":[0.2626,0.0812,0.182],"inflate":0.001,"pivot":[-0.2116,2.3178,1.2183],"rotation":[-104.25,0,0],"uv":{"north":{"uv":[23.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[47.25,24],"uv_size":[-0.25,0.25]},"south":{"uv":[24.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,23],"uv_size":[-0.25,0.25]},"up":{"uv":[25.25,47],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,25.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.061,1.1733],"size":[0.2626,0.0812,1.1898],"inflate":0.001,"pivot":[-0.2116,2.1419,1.1736],"rotation":[-128,0,0],"uv":{"north":{"uv":[26.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[3.25,16],"uv_size":[-1.25,0.25]},"south":{"uv":[47.25,26],"uv_size":[-0.25,0.25]},"west":{"uv":[16.25,11],"uv_size":[-1.25,0.25]},"up":{"uv":[16.25,2],"uv_size":[-0.25,1.25]},"down":{"uv":[4.25,17.25],"uv_size":[-0.25,-1.25]}}},{"origin":[-0.3429,2.061,1.1733],"size":[0.2626,0.1618,1.1898],"inflate":0.001,"pivot":[-0.2116,2.1419,1.1736],"rotation":[-128,0,0],"uv":{"north":{"uv":[27.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[6.25,16],"uv_size":[-1.25,0.25]},"south":{"uv":[47.25,27],"uv_size":[-0.25,0.25]},"west":{"uv":[17.25,4],"uv_size":[-1.25,0.25]},"up":{"uv":[16.25,5],"uv_size":[-0.25,1.25]},"down":{"uv":[7.25,17.25],"uv_size":[-0.25,-1.25]}}},{"origin":[-0.3429,1.2542,0.297],"size":[0.2626,0.2424,0.0812],"inflate":0.001,"pivot":[-0.2116,1.2545,0.3779],"rotation":[-148,0,0],"uv":{"north":{"uv":[28.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[47.25,29],"uv_size":[-0.25,0.25]},"south":{"uv":[29.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,28],"uv_size":[-0.25,0.25]},"up":{"uv":[30.25,47],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,30.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,6.1883,0.625],"size":[0.0409,0.1417,0.1806],"inflate":0.001,"pivot":[-0.3427,6.3297,0.7153],"rotation":[-68.8747,-23.5075,-8.7611],"uv":{"north":{"uv":[31.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[47.25,32],"uv_size":[-0.25,0.25]},"south":{"uv":[32.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,31],"uv_size":[-0.25,0.25]},"up":{"uv":[33.25,47],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,33.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,5.6573,0.4155],"size":[0.0409,0.1215,0.827],"inflate":0.001,"pivot":[-0.3427,5.7786,0.829],"rotation":[-78.7163,-24.5743,-4.7433],"uv":{"north":{"uv":[34.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[10.75,25],"uv_size":[-0.75,0.25]},"south":{"uv":[47.25,34],"uv_size":[-0.25,0.25]},"west":{"uv":[25.75,9],"uv_size":[-0.75,0.25]},"up":{"uv":[25.25,10],"uv_size":[-0.25,0.75]},"down":{"uv":[11.25,25.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.3429,4.8018,0.4462],"size":[0.0409,0.1013,0.9882],"inflate":0.001,"pivot":[-0.3427,4.9028,0.9404],"rotation":[-84.7616,-24.9083,-2.2113],"uv":{"north":{"uv":[35.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[4,21],"uv_size":[-1,0.25]},"south":{"uv":[47.25,35],"uv_size":[-0.25,0.25]},"west":{"uv":[22,1],"uv_size":[-1,0.25]},"up":{"uv":[21.25,3],"uv_size":[-0.25,1]},"down":{"uv":[4.25,22],"uv_size":[-0.25,-1]}}},{"origin":[-0.3429,6.1631,0.6364],"size":[0.0207,0.1215,0.2021],"inflate":0.001,"pivot":[-0.3427,6.2843,0.7375],"rotation":[-78.7163,-24.5743,-4.7433],"uv":{"north":{"uv":[36.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[47.25,37],"uv_size":[-0.25,0.25]},"south":{"uv":[37.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,36],"uv_size":[-0.25,0.25]},"up":{"uv":[38.25,47],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,38.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,4.1586,0.865],"size":[0.0409,0.1618,0.2223],"inflate":0.001,"pivot":[-0.3427,4.3201,0.9761],"rotation":[-93.5851,-24.957,1.5143],"uv":{"north":{"uv":[39.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[47.25,40],"uv_size":[-0.25,0.25]},"south":{"uv":[40.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,47],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3108,3.9712,0.7347],"size":[0.0409,0.1618,0.3231],"inflate":0.001,"pivot":[-0.2903,4.0521,0.8962],"rotation":[-93.5851,-24.957,1.5143],"uv":{"north":{"uv":[42.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[47.25,43],"uv_size":[-0.25,0.25]},"south":{"uv":[43.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,42],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,47],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,3.5448,0.7596],"size":[0.0409,0.1618,0.3634],"inflate":0.001,"pivot":[-0.3427,3.7064,0.9413],"rotation":[-93.5851,-24.957,1.5143],"uv":{"north":{"uv":[45.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[47.25,46],"uv_size":[-0.25,0.25]},"south":{"uv":[46.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,45],"uv_size":[-0.25,0.25]},"up":{"uv":[47.25,47],"uv_size":[-0.25,0.25]},"down":{"uv":[0.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.9406,0.3632],"size":[0.0812,0.1618,0.9479],"inflate":0.001,"pivot":[-0.3427,3.1021,0.8372],"rotation":[-103.7454,-24.3683,5.7632],"uv":{"north":{"uv":[48.25,0],"uv_size":[-0.25,0.25]},"east":{"uv":[6,21],"uv_size":[-1,0.25]},"south":{"uv":[1.25,48],"uv_size":[-0.25,0.25]},"west":{"uv":[22,4],"uv_size":[-1,0.25]},"up":{"uv":[21.25,5],"uv_size":[-0.25,1]},"down":{"uv":[6.25,22],"uv_size":[-0.25,-1]}}},{"origin":[-0.3467,2.4745,0.6704],"size":[0.0812,0.1618,0.0812],"inflate":0.001,"pivot":[-0.3061,2.636,0.7513],"rotation":[-86.2454,-24.3683,5.7632],"uv":{"north":{"uv":[48.25,1],"uv_size":[-0.25,0.25]},"east":{"uv":[3.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,2],"uv_size":[-0.25,0.25]},"west":{"uv":[2.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[48.25,3],"uv_size":[-0.25,0.25]},"down":{"uv":[4.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.3544,0.7099],"size":[0.0409,0.2425,0.1013],"inflate":0.001,"pivot":[-0.3427,2.5965,0.7606],"rotation":[-56.4566,-21.2387,-13.5047],"uv":{"north":{"uv":[48.25,4],"uv_size":[-0.25,0.25]},"east":{"uv":[6.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,5],"uv_size":[-0.25,0.25]},"west":{"uv":[5.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[48.25,6],"uv_size":[-0.25,0.25]},"down":{"uv":[7.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3448,2.4826,0.7417],"size":[0.0409,0.1618,0.0812],"inflate":0.001,"pivot":[-0.3244,2.6441,0.742],"rotation":[-76.4566,-21.2387,-13.5047],"uv":{"north":{"uv":[48.25,7],"uv_size":[-0.25,0.25]},"east":{"uv":[9.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,8],"uv_size":[-0.25,0.25]},"west":{"uv":[8.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[48.25,9],"uv_size":[-0.25,0.25]},"down":{"uv":[10.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3448,2.3559,0.713],"size":[0.0409,0.2021,0.0812],"inflate":0.001,"pivot":[-0.3244,2.5577,0.7939],"rotation":[-38.9566,-21.2387,-13.5047],"uv":{"north":{"uv":[48.25,10],"uv_size":[-0.25,0.25]},"east":{"uv":[12.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,11],"uv_size":[-0.25,0.25]},"west":{"uv":[11.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[48.25,12],"uv_size":[-0.25,0.25]},"down":{"uv":[13.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.3744,0.7849],"size":[0.0812,0.1618,0.2223],"inflate":0.001,"pivot":[-0.3427,2.536,0.8961],"rotation":[-8.3249,-3.4321,-22.2502],"uv":{"north":{"uv":[48.25,13],"uv_size":[-0.25,0.25]},"east":{"uv":[15.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,14],"uv_size":[-0.25,0.25]},"west":{"uv":[14.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[48.25,15],"uv_size":[-0.25,0.25]},"down":{"uv":[16.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.346,2.407,0.7887],"size":[0.0812,0.1618,0.0812],"inflate":0.001,"pivot":[-0.3054,2.5686,0.789],"rotation":[-35.8249,-3.4321,-22.2502],"uv":{"north":{"uv":[48.25,16],"uv_size":[-0.25,0.25]},"east":{"uv":[18.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,17],"uv_size":[-0.25,0.25]},"west":{"uv":[17.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[48.25,18],"uv_size":[-0.25,0.25]},"down":{"uv":[19.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.3181,0.9526],"size":[0.0812,0.1618,0.182],"inflate":0.001,"pivot":[-0.3427,2.4796,1.0436],"rotation":[-34.1144,-13.0784,-18.4714],"uv":{"north":{"uv":[48.25,19],"uv_size":[-0.25,0.25]},"east":{"uv":[21.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,20],"uv_size":[-0.25,0.25]},"west":{"uv":[20.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[48.25,21],"uv_size":[-0.25,0.25]},"down":{"uv":[22.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.2189,1.0234],"size":[0.0812,0.1618,0.182],"inflate":0.001,"pivot":[-0.3427,2.3805,1.1144],"rotation":[-71.0881,-23.804,-7.8729],"uv":{"north":{"uv":[48.25,22],"uv_size":[-0.25,0.25]},"east":{"uv":[24.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,23],"uv_size":[-0.25,0.25]},"west":{"uv":[23.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[48.25,24],"uv_size":[-0.25,0.25]},"down":{"uv":[25.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.1083,1.0268],"size":[0.0409,0.1417,0.182],"inflate":0.001,"pivot":[-0.3427,2.2497,1.1178],"rotation":[-105.6541,-24.1806,6.5479],"uv":{"north":{"uv":[48.25,25],"uv_size":[-0.25,0.25]},"east":{"uv":[27.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,26],"uv_size":[-0.25,0.25]},"west":{"uv":[26.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[48.25,27],"uv_size":[-0.25,0.25]},"down":{"uv":[28.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,1.5615,0.1491],"size":[0.061,0.1618,1.1898],"inflate":0.001,"pivot":[-0.3427,1.723,0.744],"rotation":[-130.7631,-19.4526,16.0181],"uv":{"north":{"uv":[48.25,28],"uv_size":[-0.25,0.25]},"east":{"uv":[17.25,8],"uv_size":[-1.25,0.25]},"south":{"uv":[29.25,48],"uv_size":[-0.25,0.25]},"west":{"uv":[17.25,7],"uv_size":[-1.25,0.25]},"up":{"uv":[8.25,16],"uv_size":[-0.25,1.25]},"down":{"uv":[16.25,10.25],"uv_size":[-0.25,-1.25]}}},{"origin":[-0.3458,1.0851,0.3071],"size":[0.0611,0.1618,0.0812],"inflate":0.001,"pivot":[-0.3152,1.2466,0.388],"rotation":[-93.2631,-19.4526,16.0181],"uv":{"north":{"uv":[48.25,29],"uv_size":[-0.25,0.25]},"east":{"uv":[31.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,30],"uv_size":[-0.25,0.25]},"west":{"uv":[30.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[48.25,31],"uv_size":[-0.25,0.25]},"down":{"uv":[32.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,1.0307,0.4417],"size":[0.0812,0.2425,0.1618],"inflate":0.001,"pivot":[-0.3427,1.1519,0.442],"rotation":[-145.415,-21.002,-13.8801],"uv":{"north":{"uv":[48.25,32],"uv_size":[-0.25,0.25]},"east":{"uv":[34.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,33],"uv_size":[-0.25,0.25]},"west":{"uv":[33.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[48.25,34],"uv_size":[-0.25,0.25]},"down":{"uv":[35.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3467,1.2632,0.3921],"size":[0.0812,0.0812,0.1618],"inflate":0.001,"pivot":[-0.3061,1.2635,0.3924],"rotation":[-172.915,-21.002,-13.8801],"uv":{"north":{"uv":[48.25,35],"uv_size":[-0.25,0.25]},"east":{"uv":[37.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,36],"uv_size":[-0.25,0.25]},"west":{"uv":[36.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[48.25,37],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.1618,1.3346],"size":[0.2626,0.182,0.3836],"inflate":0.001,"pivot":[-0.2116,2.1419,1.1736],"rotation":[-128,0,0],"uv":{"north":{"uv":[48.25,38],"uv_size":[-0.25,0.25]},"east":{"uv":[32.5,16],"uv_size":[-0.5,0.25]},"south":{"uv":[39.25,48],"uv_size":[-0.25,0.25]},"west":{"uv":[16.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[17.25,32],"uv_size":[-0.25,0.5]},"down":{"uv":[32.25,17.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3432,5.6838,0.5505],"size":[0.2626,0.0812,1.0689],"inflate":0.001,"pivot":[-0.2116,5.7244,1.0849],"rotation":[-83.75,0,0],"uv":{"north":{"uv":[48.25,39],"uv_size":[-0.25,0.25]},"east":{"uv":[8,21],"uv_size":[-1,0.25]},"south":{"uv":[40.25,48],"uv_size":[-0.25,0.25]},"west":{"uv":[22,6],"uv_size":[-1,0.25]},"up":{"uv":[21.25,7],"uv_size":[-0.25,1]},"down":{"uv":[8.25,22],"uv_size":[-0.25,-1]}}},{"origin":[-0.3427,5.7308,0.37],"size":[0.2016,0.1613,1.4109],"pivot":[-0.2318,5.8114,1.0754],"rotation":[-84.5,0,0],"uv":{"north":{"uv":[48.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[8.5,13],"uv_size":[-1.5,0.25]},"south":{"uv":[41.25,48],"uv_size":[-0.25,0.25]},"west":{"uv":[14.5,6],"uv_size":[-1.5,0.25]},"up":{"uv":[13.25,7],"uv_size":[-0.25,1.5]},"down":{"uv":[13.25,10.5],"uv_size":[-0.25,-1.5]}}},{"origin":[-0.3427,6.4408,1.0074],"size":[0.2016,0.0806,0.0806],"pivot":[-0.2419,6.5214,1.0881],"rotation":[-54.5,0,0],"uv":{"north":{"uv":[48.25,41],"uv_size":[-0.25,0.25]},"east":{"uv":[43.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[42.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[48.25,43],"uv_size":[-0.25,0.25]},"down":{"uv":[44.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3427,6.5542,1.0247],"size":[0.1613,0.3055,0.0803],"pivot":[-0.3427,6.5542,1.0647],"rotation":[-46.4911,32.4914,27.0178],"uv":{"north":{"uv":[48.25,44],"uv_size":[-0.25,0.25]},"east":{"uv":[46.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[45.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[48.25,46],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3627,6.4905,0.9641],"size":[0.1613,0.3225,0.0806],"pivot":[-0.2821,6.4905,1.0448],"rotation":[-58.9911,32.4914,27.0178],"uv":{"north":{"uv":[48.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[49.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[0.25,49],"uv_size":[-0.25,0.25]},"west":{"uv":[48.25,48],"uv_size":[-0.25,0.25]},"up":{"uv":[1.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,1.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3427,5.0363,1.2233],"size":[0.2016,0.0806,0.9473],"pivot":[-0.2318,5.117,1.2233],"rotation":[-85,0,0],"uv":{"north":{"uv":[2.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[10,21],"uv_size":[-1,0.25]},"south":{"uv":[49.25,2],"uv_size":[-0.25,0.25]},"west":{"uv":[22,8],"uv_size":[-1,0.25]},"up":{"uv":[21.25,9],"uv_size":[-0.25,1]},"down":{"uv":[10.25,22],"uv_size":[-0.25,-1]}}},{"origin":[-0.3427,4.4768,1.3556],"size":[0.0806,0.1613,0.3023],"pivot":[-0.3427,4.6381,1.1843],"rotation":[-84.5904,-22.4097,-2.0675],"uv":{"north":{"uv":[3.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[49.25,4],"uv_size":[-0.25,0.25]},"south":{"uv":[4.25,49],"uv_size":[-0.25,0.25]},"west":{"uv":[49.25,3],"uv_size":[-0.25,0.25]},"up":{"uv":[5.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,5.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3427,4.0926,1.3059],"size":[0.2016,0.0806,1.29],"pivot":[-0.2419,4.1732,1.3059],"rotation":[-89.25,0,0],"uv":{"north":{"uv":[6.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[17.25,13],"uv_size":[-1.25,0.25]},"south":{"uv":[49.25,6],"uv_size":[-0.25,0.25]},"west":{"uv":[17.25,12],"uv_size":[-1.25,0.25]},"up":{"uv":[10.25,16],"uv_size":[-0.25,1.25]},"down":{"uv":[13.25,17.25],"uv_size":[-0.25,-1.25]}}},{"origin":[-0.3429,3.5283,0.6693],"size":[0.0403,0.1613,0.3628],"pivot":[-0.3427,3.5283,1.3143],"rotation":[-89.0788,35.4965,0.5349],"uv":{"north":{"uv":[51.25,61],"uv_size":[-0.25,0.25]},"east":{"uv":[61.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[52.25,61],"uv_size":[-0.25,0.25]},"west":{"uv":[61.25,51],"uv_size":[-0.25,0.25]},"up":{"uv":[53.25,61],"uv_size":[-0.25,0.25]},"down":{"uv":[61.25,53.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3427,3.5283,0.6693],"size":[0.0403,0.3427,0.3628],"pivot":[-0.3427,3.5283,1.3143],"rotation":[-89.0788,35.4965,0.5349],"uv":{"north":{"uv":[7.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[49.25,8],"uv_size":[-0.25,0.25]},"south":{"uv":[8.25,49],"uv_size":[-0.25,0.25]},"west":{"uv":[49.25,7],"uv_size":[-0.25,0.25]},"up":{"uv":[9.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,9.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.323,3.8107,1.2108],"size":[0.0403,0.3023,0.1209],"pivot":[-0.3028,3.8107,1.3317],"rotation":[-114.0788,35.4965,0.5349],"uv":{"north":{"uv":[10.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[49.25,11],"uv_size":[-0.25,0.25]},"south":{"uv":[11.25,49],"uv_size":[-0.25,0.25]},"west":{"uv":[49.25,10],"uv_size":[-0.25,0.25]},"up":{"uv":[12.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,12.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3427,3.5283,1.0321],"size":[0.0403,0.0403,0.6249],"pivot":[-0.3427,3.5283,1.3143],"rotation":[-89.0788,35.4965,0.5349],"uv":{"north":{"uv":[13.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[32.5,18],"uv_size":[-0.5,0.25]},"south":{"uv":[49.25,13],"uv_size":[-0.25,0.25]},"west":{"uv":[18.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[19.25,32],"uv_size":[-0.25,0.5]},"down":{"uv":[32.25,19.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3192,3.4985,1.0351],"size":[0.0806,0.1613,0.6249],"pivot":[-0.3192,3.4985,1.3475],"rotation":[-87.7542,70.4861,2.1169],"uv":{"north":{"uv":[14.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[32.5,20],"uv_size":[-0.5,0.25]},"south":{"uv":[49.25,14],"uv_size":[-0.25,0.25]},"west":{"uv":[20.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[21.25,32],"uv_size":[-0.25,0.5]},"down":{"uv":[32.25,21.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3427,2.8027,1.3228],"size":[0.2016,0.0806,1.3706],"pivot":[-0.2419,2.8833,1.3228],"rotation":[-91.5,0,0],"uv":{"north":{"uv":[15.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[17.25,15],"uv_size":[-1.25,0.25]},"south":{"uv":[49.25,15],"uv_size":[-0.25,0.25]},"west":{"uv":[17.25,14],"uv_size":[-1.25,0.25]},"up":{"uv":[16.25,16],"uv_size":[-0.25,1.25]},"down":{"uv":[17.25,1.25],"uv_size":[-0.25,-1.25]}}},{"origin":[-0.3427,2.1982,1.0226],"size":[0.0403,0.4434,0.0806],"pivot":[-0.3427,2.1982,1.3048],"rotation":[-91.6948,27.7397,-0.789],"uv":{"north":{"uv":[22.25,32],"uv_size":[-0.25,0.5]},"east":{"uv":[32.25,23],"uv_size":[-0.25,0.5]},"south":{"uv":[23.25,32],"uv_size":[-0.25,0.5]},"west":{"uv":[32.25,22],"uv_size":[-0.25,0.5]},"up":{"uv":[16.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,16.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.176,2.1094,1.6238],"size":[0.0403,0.3628,0.0605],"pivot":[-0.1559,2.4722,1.6238],"rotation":[-116.6948,27.7397,-0.789],"uv":{"north":{"uv":[17.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[49.25,18],"uv_size":[-0.25,0.25]},"south":{"uv":[18.25,49],"uv_size":[-0.25,0.25]},"west":{"uv":[49.25,17],"uv_size":[-0.25,0.25]},"up":{"uv":[19.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,19.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.176,2.1295,1.6843],"size":[0.0403,0.4233,0.0806],"pivot":[-0.1559,2.4722,1.6238],"rotation":[-116.6948,27.7397,-0.789],"uv":{"north":{"uv":[24.25,32],"uv_size":[-0.25,0.5]},"east":{"uv":[32.25,25],"uv_size":[-0.25,0.5]},"south":{"uv":[25.25,32],"uv_size":[-0.25,0.5]},"west":{"uv":[32.25,24],"uv_size":[-0.25,0.5]},"up":{"uv":[20.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,20.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3262,2.399,1.2557],"size":[0.0403,0.4031,0.0806],"pivot":[-0.306,2.399,1.3364],"rotation":[-114.1948,27.7397,-0.789],"uv":{"north":{"uv":[26.25,32],"uv_size":[-0.25,0.5]},"east":{"uv":[32.25,27],"uv_size":[-0.25,0.5]},"south":{"uv":[27.25,32],"uv_size":[-0.25,0.5]},"west":{"uv":[32.25,26],"uv_size":[-0.25,0.5]},"up":{"uv":[21.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,21.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3427,2.1982,1.1033],"size":[0.0403,0.0403,0.6249],"pivot":[-0.3427,2.1982,1.3048],"rotation":[-91.6948,27.7397,-0.789],"uv":{"north":{"uv":[22.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[32.5,28],"uv_size":[-0.5,0.25]},"south":{"uv":[49.25,22],"uv_size":[-0.25,0.25]},"west":{"uv":[28.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[29.25,32],"uv_size":[-0.25,0.5]},"down":{"uv":[32.25,29.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3427,2.1982,0.6397],"size":[0.0403,0.0403,0.383],"pivot":[-0.3427,2.1982,1.3048],"rotation":[-91.6948,27.7397,-0.789],"uv":{"north":{"uv":[23.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[32.5,30],"uv_size":[-0.5,0.25]},"south":{"uv":[49.25,23],"uv_size":[-0.25,0.25]},"west":{"uv":[30.5,32],"uv_size":[-0.5,0.25]},"up":{"uv":[31.25,32],"uv_size":[-0.25,0.5]},"down":{"uv":[32.25,31.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.1411,2.8833,1.3228],"size":[0.0605,0.2822,1.4916],"pivot":[-0.2419,2.8833,1.3228],"rotation":[-91.5,0,0],"uv":{"north":{"uv":[24.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[14.5,11],"uv_size":[-1.5,0.25]},"south":{"uv":[49.25,24],"uv_size":[-0.25,0.25]},"west":{"uv":[12.5,13],"uv_size":[-1.5,0.25]},"up":{"uv":[13.25,12],"uv_size":[-0.25,1.5]},"down":{"uv":[0.25,15.5],"uv_size":[-0.25,-1.5]}}},{"origin":[-0.1411,4.1765,1.3064],"size":[0.0605,0.2822,1.3101],"pivot":[-0.2419,4.1765,1.3064],"rotation":[-89.25,0,0],"uv":{"north":{"uv":[25.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[18.25,2],"uv_size":[-1.25,0.25]},"south":{"uv":[49.25,25],"uv_size":[-0.25,0.25]},"west":{"uv":[3.25,17],"uv_size":[-1.25,0.25]},"up":{"uv":[5.25,17],"uv_size":[-0.25,1.25]},"down":{"uv":[17.25,6.25],"uv_size":[-0.25,-1.25]}}},{"origin":[-0.1411,4.0189,1.5885],"size":[0.0605,0.1613,1.3101],"pivot":[-0.2419,4.1802,1.5885],"rotation":[-86,0,0],"uv":{"north":{"uv":[26.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[18.25,9],"uv_size":[-1.25,0.25]},"south":{"uv":[49.25,26],"uv_size":[-0.25,0.25]},"west":{"uv":[18.25,3],"uv_size":[-1.25,0.25]},"up":{"uv":[6.25,17],"uv_size":[-0.25,1.25]},"down":{"uv":[9.25,18.25],"uv_size":[-0.25,-1.25]}}},{"origin":[-0.3427,3.5283,1.657],"size":[0.0403,0.4031,0.0806],"pivot":[-0.3427,3.5283,1.3143],"rotation":[-89.125,30.9971,0.4506],"uv":{"north":{"uv":[32.25,32],"uv_size":[-0.25,0.5]},"east":{"uv":[1.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[33.25,0],"uv_size":[-0.25,0.5]},"west":{"uv":[0.25,33],"uv_size":[-0.25,0.5]},"up":{"uv":[27.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,27.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3248,3.1053,1.2634],"size":[0.0403,0.3427,0.0806],"pivot":[-0.3046,3.1053,1.344],"rotation":[-114.125,30.9971,0.4506],"uv":{"north":{"uv":[28.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[49.25,29],"uv_size":[-0.25,0.25]},"south":{"uv":[29.25,49],"uv_size":[-0.25,0.25]},"west":{"uv":[49.25,28],"uv_size":[-0.25,0.25]},"up":{"uv":[30.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,30.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.169,2.8467,1.6021],"size":[0.0403,0.3427,0.0605],"pivot":[-0.1489,3.1893,1.6021],"rotation":[-114.125,30.9971,0.4506],"uv":{"north":{"uv":[31.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[49.25,32],"uv_size":[-0.25,0.25]},"south":{"uv":[32.25,49],"uv_size":[-0.25,0.25]},"west":{"uv":[49.25,31],"uv_size":[-0.25,0.25]},"up":{"uv":[33.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,33.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.169,2.887,1.6626],"size":[0.0403,0.3628,0.0806],"pivot":[-0.1489,3.1893,1.6021],"rotation":[-114.125,30.9971,0.4506],"uv":{"north":{"uv":[34.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[49.25,35],"uv_size":[-0.25,0.25]},"south":{"uv":[35.25,49],"uv_size":[-0.25,0.25]},"west":{"uv":[49.25,34],"uv_size":[-0.25,0.25]},"up":{"uv":[36.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,36.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3427,3.5283,1.7376],"size":[0.0403,0.0403,0.2419],"pivot":[-0.3427,3.5283,1.3143],"rotation":[-89.125,30.9971,0.4506],"uv":{"north":{"uv":[37.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[49.25,38],"uv_size":[-0.25,0.25]},"south":{"uv":[38.25,49],"uv_size":[-0.25,0.25]},"west":{"uv":[49.25,37],"uv_size":[-0.25,0.25]},"up":{"uv":[39.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,39.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3219,2.9845,1.2351],"size":[0.0806,0.1613,0.262],"pivot":[-0.3219,2.9845,1.356],"rotation":[-88.1566,65.989,1.684],"uv":{"north":{"uv":[40.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[49.25,41],"uv_size":[-0.25,0.25]},"south":{"uv":[41.25,49],"uv_size":[-0.25,0.25]},"west":{"uv":[49.25,40],"uv_size":[-0.25,0.25]},"up":{"uv":[42.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,42.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3239,2.6708,1.1614],"size":[0.0806,0.1613,0.383],"pivot":[-0.3239,2.6708,1.3529],"rotation":[-93.6837,65.956,-3.3648],"uv":{"north":{"uv":[43.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[2.5,33],"uv_size":[-0.5,0.25]},"south":{"uv":[49.25,43],"uv_size":[-0.25,0.25]},"west":{"uv":[33.5,1],"uv_size":[-0.5,0.25]},"up":{"uv":[33.25,2],"uv_size":[-0.25,0.5]},"down":{"uv":[3.25,33.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3239,2.0865,1.0252],"size":[0.0403,0.1613,0.6248],"pivot":[-0.3239,2.0865,1.3376],"rotation":[-93.2732,62.7119,-2.9096],"uv":{"north":{"uv":[44.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[4.5,33],"uv_size":[-0.5,0.25]},"south":{"uv":[49.25,44],"uv_size":[-0.25,0.25]},"west":{"uv":[33.5,3],"uv_size":[-0.5,0.25]},"up":{"uv":[33.25,4],"uv_size":[-0.25,0.5]},"down":{"uv":[5.25,33.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.1411,2.712,1.6799],"size":[0.0605,0.1613,1.5722],"pivot":[-0.2419,2.8732,1.6799],"rotation":[-88,0,0],"uv":{"north":{"uv":[45.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[2.5,14],"uv_size":[-1.5,0.25]},"south":{"uv":[49.25,45],"uv_size":[-0.25,0.25]},"west":{"uv":[15.5,0],"uv_size":[-1.5,0.25]},"up":{"uv":[14.25,1],"uv_size":[-0.25,1.5]},"down":{"uv":[3.25,15.5],"uv_size":[-0.25,-1.5]}}},{"origin":[-0.2016,3.4461,0.9791],"size":[0.0605,0.0806,1.3101],"pivot":[-0.1411,3.5267,1.6342],"rotation":[-81.3886,-62.2331,-7.6322],"uv":{"north":{"uv":[46.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[12.25,17],"uv_size":[-1.25,0.25]},"south":{"uv":[49.25,46],"uv_size":[-0.25,0.25]},"west":{"uv":[18.25,10],"uv_size":[-1.25,0.25]},"up":{"uv":[14.25,17],"uv_size":[-0.25,1.25]},"down":{"uv":[15.25,18.25],"uv_size":[-0.25,-1.25]}}},{"origin":[-0.2016,1.9868,0.9212],"size":[0.0605,0.1008,1.1086],"pivot":[-0.1411,2.0876,1.7073],"rotation":[-85.6386,-62.6823,-3.8765],"uv":{"north":{"uv":[47.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[12,21],"uv_size":[-1,0.25]},"south":{"uv":[49.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[22,10],"uv_size":[-1,0.25]},"up":{"uv":[21.25,11],"uv_size":[-0.25,1]},"down":{"uv":[12.25,22],"uv_size":[-0.25,-1]}}},{"origin":[-0.3427,2.1982,1.7281],"size":[0.0403,0.4838,0.4838],"pivot":[-0.3427,2.1982,1.3048],"rotation":[-91.6584,25.2407,-0.7073],"uv":{"north":{"uv":[33.25,5],"uv_size":[-0.25,0.5]},"east":{"uv":[13.5,21],"uv_size":[-0.5,0.5]},"south":{"uv":[6.25,33],"uv_size":[-0.25,0.5]},"west":{"uv":[21.5,12],"uv_size":[-0.5,0.5]},"up":{"uv":[33.25,6],"uv_size":[-0.25,0.5]},"down":{"uv":[7.25,33.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.1726,1.3627,1.6496],"size":[0.0403,0.4031,0.0806],"pivot":[-0.1525,1.7658,1.6496],"rotation":[-116.6584,25.2407,-0.7073],"uv":{"north":{"uv":[33.25,7],"uv_size":[-0.25,0.5]},"east":{"uv":[9.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[33.25,8],"uv_size":[-0.25,0.5]},"west":{"uv":[8.25,33],"uv_size":[-0.25,0.5]},"up":{"uv":[48.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,48.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1726,1.403,1.7302],"size":[0.0403,0.2016,0.0806],"pivot":[-0.1525,1.7658,1.6496],"rotation":[-116.6584,25.2407,-0.7073],"uv":{"north":{"uv":[49.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[1.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,0],"uv_size":[-0.25,0.25]},"west":{"uv":[0.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,1],"uv_size":[-0.25,0.25]},"down":{"uv":[2.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1411,5.1194,1.2231],"size":[0.0605,0.2822,0.9675],"pivot":[-0.2318,5.1194,1.2231],"rotation":[-85,0,0],"uv":{"north":{"uv":[50.25,2],"uv_size":[-0.25,0.25]},"east":{"uv":[15,21],"uv_size":[-1,0.25]},"south":{"uv":[3.25,50],"uv_size":[-0.25,0.25]},"west":{"uv":[22,13],"uv_size":[-1,0.25]},"up":{"uv":[21.25,14],"uv_size":[-0.25,1]},"down":{"uv":[15.25,22],"uv_size":[-0.25,-1]}}},{"origin":[-0.1411,4.3153,1.2655],"size":[0.0403,0.1613,0.7469],"pivot":[-0.1411,4.6621,1.5463],"rotation":[-83.8633,35.3831,3.5624],"uv":{"north":{"uv":[50.25,3],"uv_size":[-0.25,0.25]},"east":{"uv":[12.75,25],"uv_size":[-0.75,0.25]},"south":{"uv":[4.25,50],"uv_size":[-0.25,0.25]},"west":{"uv":[25.75,11],"uv_size":[-0.75,0.25]},"up":{"uv":[25.25,12],"uv_size":[-0.25,0.75]},"down":{"uv":[13.25,25.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.3464,4.9163,1.2291],"size":[0.1613,0.212,0.0551],"pivot":[-0.3262,4.9163,1.2291],"rotation":[-63.8633,35.3831,3.5624],"uv":{"north":{"uv":[50.25,4],"uv_size":[-0.25,0.25]},"east":{"uv":[6.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,5],"uv_size":[-0.25,0.25]},"west":{"uv":[5.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,6],"uv_size":[-0.25,0.25]},"down":{"uv":[7.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1411,4.4766,1.0639],"size":[0.0605,0.1855,0.9485],"pivot":[-0.1411,4.6621,1.5463],"rotation":[-83.8633,35.3831,3.5624],"uv":{"north":{"uv":[50.25,7],"uv_size":[-0.25,0.25]},"east":{"uv":[17,21],"uv_size":[-1,0.25]},"south":{"uv":[8.25,50],"uv_size":[-0.25,0.25]},"west":{"uv":[22,15],"uv_size":[-1,0.25]},"up":{"uv":[21.25,16],"uv_size":[-0.25,1]},"down":{"uv":[17.25,22],"uv_size":[-0.25,-1]}}},{"origin":[-0.3464,4.1722,1.2745],"size":[0.0403,0.3462,0.0197],"pivot":[-0.3262,4.1722,1.2942],"rotation":[-87.1133,35.3831,3.5624],"uv":{"north":{"uv":[50.25,8],"uv_size":[-0.25,0.25]},"east":{"uv":[10.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,9],"uv_size":[-0.25,0.25]},"west":{"uv":[9.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,10],"uv_size":[-0.25,0.25]},"down":{"uv":[11.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1411,5.8114,0.37],"size":[0.0605,0.3628,1.4109],"pivot":[-0.2318,5.8114,1.0754],"rotation":[-84.5,0,0],"uv":{"north":{"uv":[50.25,11],"uv_size":[-0.25,0.25]},"east":{"uv":[15.5,4],"uv_size":[-1.5,0.25]},"south":{"uv":[12.25,50],"uv_size":[-0.25,0.25]},"west":{"uv":[15.5,3],"uv_size":[-1.5,0.25]},"up":{"uv":[7.25,14],"uv_size":[-0.25,1.5]},"down":{"uv":[14.25,8.5],"uv_size":[-0.25,-1.5]}}},{"origin":[-0.1411,5.8921,0.2893],"size":[0.0605,0.2822,0.0806],"pivot":[-0.2318,5.8114,1.0754],"rotation":[-84.5,0,0],"uv":{"north":{"uv":[50.25,12],"uv_size":[-0.25,0.25]},"east":{"uv":[14.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,13],"uv_size":[-0.25,0.25]},"west":{"uv":[13.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,14],"uv_size":[-0.25,0.25]},"down":{"uv":[15.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1411,6.4674,1.2],"size":[0.0605,0.1613,0.1613],"pivot":[-0.1109,6.6287,1.3612],"rotation":[-34.5,0,0],"uv":{"north":{"uv":[50.25,15],"uv_size":[-0.25,0.25]},"east":{"uv":[17.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,16],"uv_size":[-0.25,0.25]},"west":{"uv":[16.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,17],"uv_size":[-0.25,0.25]},"down":{"uv":[18.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1411,6.3975,1.2283],"size":[0.0605,0.3225,0.0806],"pivot":[-0.2116,6.72,1.2283],"rotation":[-54.5,0,0],"uv":{"north":{"uv":[50.25,18],"uv_size":[-0.25,0.25]},"east":{"uv":[20.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,19],"uv_size":[-0.25,0.25]},"west":{"uv":[19.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,20],"uv_size":[-0.25,0.25]},"down":{"uv":[21.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1411,5.4994,0.7311],"size":[0.0605,0.1613,0.2822],"pivot":[-0.1411,5.8462,1.4366],"rotation":[-83.2516,35.3495,3.9164],"uv":{"north":{"uv":[50.25,21],"uv_size":[-0.25,0.25]},"east":{"uv":[23.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,22],"uv_size":[-0.25,0.25]},"west":{"uv":[22.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,23],"uv_size":[-0.25,0.25]},"down":{"uv":[24.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2546,6.094,1.1933],"size":[0.0605,0.1574,0.0349],"pivot":[-0.2243,6.2514,1.2282],"rotation":[-70.7516,35.3495,3.9164],"uv":{"north":{"uv":[50.25,24],"uv_size":[-0.25,0.25]},"east":{"uv":[26.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,25],"uv_size":[-0.25,0.25]},"west":{"uv":[25.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,26],"uv_size":[-0.25,0.25]},"down":{"uv":[27.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1411,5.4994,1.2552],"size":[0.0605,0.1613,0.3023],"pivot":[-0.1411,5.8462,1.4366],"rotation":[-83.2516,35.3495,3.9164],"uv":{"north":{"uv":[50.25,27],"uv_size":[-0.25,0.25]},"east":{"uv":[29.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,28],"uv_size":[-0.25,0.25]},"west":{"uv":[28.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,29],"uv_size":[-0.25,0.25]},"down":{"uv":[30.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2546,5.5539,1.2387],"size":[0.0605,0.1558,0.0417],"pivot":[-0.2243,5.7097,1.2804],"rotation":[-68.2516,35.3495,3.9164],"uv":{"north":{"uv":[50.25,30],"uv_size":[-0.25,0.25]},"east":{"uv":[32.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,31],"uv_size":[-0.25,0.25]},"west":{"uv":[31.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,32],"uv_size":[-0.25,0.25]},"down":{"uv":[33.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3483,5.9981,1.1208],"size":[0.0605,0.1737,0.0492],"pivot":[-0.318,5.9981,1.1208],"rotation":[-65.5016,35.3495,3.9164],"uv":{"north":{"uv":[50.25,33],"uv_size":[-0.25,0.25]},"east":{"uv":[35.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,34],"uv_size":[-0.25,0.25]},"west":{"uv":[34.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,35],"uv_size":[-0.25,0.25]},"down":{"uv":[36.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1411,5.4994,1.7994],"size":[0.0605,0.1613,0.3024],"pivot":[-0.1411,5.8462,1.4366],"rotation":[-83.2516,35.3495,3.9164],"uv":{"north":{"uv":[50.25,36],"uv_size":[-0.25,0.25]},"east":{"uv":[38.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,37],"uv_size":[-0.25,0.25]},"west":{"uv":[37.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[39.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2546,5.0105,1.2976],"size":[0.0605,0.1574,0.0349],"pivot":[-0.2243,5.168,1.3326],"rotation":[-70.7516,35.3495,3.9164],"uv":{"north":{"uv":[50.25,39],"uv_size":[-0.25,0.25]},"east":{"uv":[41.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,40],"uv_size":[-0.25,0.25]},"west":{"uv":[40.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,41],"uv_size":[-0.25,0.25]},"down":{"uv":[42.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3483,5.4563,1.173],"size":[0.0605,0.1918,0.0551],"pivot":[-0.318,5.4563,1.173],"rotation":[-63.2516,35.3495,3.9164],"uv":{"north":{"uv":[50.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[44.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,43],"uv_size":[-0.25,0.25]},"west":{"uv":[43.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,44],"uv_size":[-0.25,0.25]},"down":{"uv":[45.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1411,5.6607,0.7311],"size":[0.0605,0.1855,1.4109],"pivot":[-0.1411,5.8462,1.4366],"rotation":[-83.2516,35.3495,3.9164],"uv":{"north":{"uv":[50.25,45],"uv_size":[-0.25,0.25]},"east":{"uv":[9.5,14],"uv_size":[-1.5,0.25]},"south":{"uv":[46.25,50],"uv_size":[-0.25,0.25]},"west":{"uv":[15.5,5],"uv_size":[-1.5,0.25]},"up":{"uv":[14.25,9],"uv_size":[-0.25,1.5]},"down":{"uv":[10.25,15.5],"uv_size":[-0.25,-1.5]}}},{"origin":[-0.3483,6.5197,1.0706],"size":[0.0605,0.3386,0.0751],"pivot":[-0.318,6.5197,1.0706],"rotation":[-70.7516,35.3495,3.9164],"uv":{"north":{"uv":[50.25,46],"uv_size":[-0.25,0.25]},"east":{"uv":[48.25,50],"uv_size":[-0.25,0.25]},"south":{"uv":[50.25,47],"uv_size":[-0.25,0.25]},"west":{"uv":[47.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[50.25,48],"uv_size":[-0.25,0.25]},"down":{"uv":[49.25,50.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.0806,5.4994,0.7311],"size":[0.0605,0.2662,1.6528],"pivot":[-0.1411,5.8462,1.4366],"rotation":[-83.2516,35.3495,3.9164],"uv":{"north":{"uv":[50.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[12.75,0],"uv_size":[-1.75,0.25]},"south":{"uv":[50.25,50],"uv_size":[-0.25,0.25]},"west":{"uv":[1.75,11],"uv_size":[-1.75,0.25]},"up":{"uv":[4.25,11],"uv_size":[-0.25,1.75]},"down":{"uv":[5.25,12.75],"uv_size":[-0.25,-1.75]}}},{"origin":[-0.2761,5.0094,1.2224],"size":[0.0403,0.0646,0.1209],"pivot":[-0.2559,5.0417,1.2829],"rotation":[-83.2516,0,3.9164],"uv":{"north":{"uv":[0.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,1],"uv_size":[-0.25,0.25]},"south":{"uv":[1.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,0],"uv_size":[-0.25,0.25]},"up":{"uv":[2.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,2.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2761,5.5511,1.1702],"size":[0.0403,0.0646,0.1209],"pivot":[-0.2559,5.5834,1.2307],"rotation":[-83.2516,0,3.9164],"uv":{"north":{"uv":[3.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,4],"uv_size":[-0.25,0.25]},"south":{"uv":[4.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,3],"uv_size":[-0.25,0.25]},"up":{"uv":[5.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,5.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2761,6.0928,1.1181],"size":[0.0403,0.0646,0.1209],"pivot":[-0.2559,6.1251,1.1785],"rotation":[-83.2516,0,3.9164],"uv":{"north":{"uv":[6.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,7],"uv_size":[-0.25,0.25]},"south":{"uv":[7.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,6],"uv_size":[-0.25,0.25]},"up":{"uv":[8.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,8.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.0202,5.4994,0.7311],"size":[0.0605,0.1855,1.4109],"pivot":[-0.1411,5.8462,1.4366],"rotation":[-83.2516,35.3495,3.9164],"uv":{"north":{"uv":[9.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[15.5,12],"uv_size":[-1.5,0.25]},"south":{"uv":[51.25,9],"uv_size":[-0.25,0.25]},"west":{"uv":[12.5,14],"uv_size":[-1.5,0.25]},"up":{"uv":[13.25,14],"uv_size":[-0.25,1.5]},"down":{"uv":[14.25,14.5],"uv_size":[-0.25,-1.5]}}},{"origin":[-0.3427,4.8097,0.6142],"size":[0.2016,0,0],"pivot":[-0.2419,4.8056,1.2491],"rotation":[-84.5,0,0],"uv":{"north":{"uv":[0.25,0],"uv_size":[-0.25,0]},"east":{"uv":[0,0],"uv_size":[0,0]},"south":{"uv":[0.25,0],"uv_size":[-0.25,0]},"west":{"uv":[0,0],"uv_size":[0,0]},"up":{"uv":[0.25,0],"uv_size":[-0.25,0]},"down":{"uv":[0.25,0],"uv_size":[-0.25,0]}}},{"origin":[-0.3429,6.1499,0.9864],"size":[0.2626,0.1618,0.0812],"inflate":0.001,"pivot":[-0.2116,6.251,0.9867],"rotation":[-126.5,0,0],"uv":{"north":{"uv":[10.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,11],"uv_size":[-0.25,0.25]},"south":{"uv":[11.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,10],"uv_size":[-0.25,0.25]},"up":{"uv":[12.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,12.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,6.0846,0.7768],"size":[0.2626,0.1618,0.0812],"inflate":0.001,"pivot":[-0.2116,6.2461,0.8577],"rotation":[-174,0,0],"uv":{"north":{"uv":[13.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,14],"uv_size":[-0.25,0.25]},"south":{"uv":[14.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,13],"uv_size":[-0.25,0.25]},"up":{"uv":[15.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,15.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,6.245,0.76],"size":[0.2626,0.1618,0.0812],"inflate":0.001,"pivot":[-0.2116,6.4065,0.8409],"rotation":[141,0,0],"uv":{"north":{"uv":[16.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,17],"uv_size":[-0.25,0.25]},"south":{"uv":[17.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,16],"uv_size":[-0.25,0.25]},"up":{"uv":[18.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,18.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,6.4509,0.8614],"size":[0.2626,0.3634,0.0812],"inflate":0.001,"pivot":[-0.2116,6.5318,0.9424],"rotation":[114.5,0,0],"uv":{"north":{"uv":[19.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,20],"uv_size":[-0.25,0.25]},"south":{"uv":[20.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,19],"uv_size":[-0.25,0.25]},"up":{"uv":[21.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,21.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3432,5.1169,1.1829],"size":[0.2626,0.0812,0.7867],"inflate":0.001,"pivot":[-0.2116,5.1978,1.1831],"rotation":[-86.75,0,0],"uv":{"north":{"uv":[22.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[14.75,25],"uv_size":[-0.75,0.25]},"south":{"uv":[51.25,22],"uv_size":[-0.25,0.25]},"west":{"uv":[25.75,13],"uv_size":[-0.75,0.25]},"up":{"uv":[25.25,14],"uv_size":[-0.25,0.75]},"down":{"uv":[15.25,25.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.3429,4.3074,1.0663],"size":[0.2626,0.1417,0.0812],"inflate":0.001,"pivot":[-0.2116,4.4084,1.1472],"rotation":[-39.25,0,0],"uv":{"north":{"uv":[23.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,24],"uv_size":[-0.25,0.25]},"south":{"uv":[24.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,23],"uv_size":[-0.25,0.25]},"up":{"uv":[25.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,25.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,4.24,1.0207],"size":[0.2626,0.1417,0.0812],"inflate":0.001,"pivot":[-0.2116,4.3814,1.021],"rotation":[1.5,0,0],"uv":{"north":{"uv":[26.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,27],"uv_size":[-0.25,0.25]},"south":{"uv":[27.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,26],"uv_size":[-0.25,0.25]},"up":{"uv":[28.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,28.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,4.0788,1.0244],"size":[0.2626,0.1618,0.0812],"inflate":0.001,"pivot":[-0.2116,4.2404,1.0247],"rotation":[49,0,0],"uv":{"north":{"uv":[29.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,30],"uv_size":[-0.25,0.25]},"south":{"uv":[30.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,29],"uv_size":[-0.25,0.25]},"up":{"uv":[31.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,31.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,4.0537,1.1461],"size":[0.2626,0.0812,0.0812],"inflate":0.001,"pivot":[-0.2116,4.1346,1.1464],"rotation":[68.5,0,0],"uv":{"north":{"uv":[32.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,33],"uv_size":[-0.25,0.25]},"south":{"uv":[33.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,32],"uv_size":[-0.25,0.25]},"up":{"uv":[34.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,34.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3432,4.1798,-0.7448],"size":[0.2626,0.0812,1.996],"inflate":0.001,"pivot":[-0.2116,4.18,1.251],"rotation":[90,0,0],"uv":{"north":{"uv":[35.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[4,9],"uv_size":[-2,0.25]},"south":{"uv":[51.25,35],"uv_size":[-0.25,0.25]},"west":{"uv":[10,6],"uv_size":[-2,0.25]},"up":{"uv":[9.25,3],"uv_size":[-0.25,2]},"down":{"uv":[4.25,11],"uv_size":[-0.25,-2]}}},{"origin":[-0.3429,4.2604,-0.4424],"size":[0.2626,0.1215,0.8068],"inflate":0.001,"pivot":[-0.2116,4.18,1.251],"rotation":[90,0,0],"uv":{"north":{"uv":[36.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[16.75,25],"uv_size":[-0.75,0.25]},"south":{"uv":[51.25,36],"uv_size":[-0.25,0.25]},"west":{"uv":[25.75,15],"uv_size":[-0.75,0.25]},"up":{"uv":[25.25,16],"uv_size":[-0.25,0.75]},"down":{"uv":[17.25,25.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.3432,2.1843,0.6259],"size":[0.2626,0.0812,0.6254],"inflate":0.001,"pivot":[-0.2116,2.1846,1.251],"rotation":[87,0,0],"uv":{"north":{"uv":[37.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[18.75,25],"uv_size":[-0.75,0.25]},"south":{"uv":[51.25,37],"uv_size":[-0.25,0.25]},"west":{"uv":[25.75,17],"uv_size":[-0.75,0.25]},"up":{"uv":[25.25,18],"uv_size":[-0.25,0.75]},"down":{"uv":[19.25,25.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.3432,1.6609,1.062],"size":[0.2626,0.0812,0.182],"inflate":0.001,"pivot":[-0.2116,1.6612,1.2235],"rotation":[122,0,0],"uv":{"north":{"uv":[38.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,39],"uv_size":[-0.25,0.25]},"south":{"uv":[39.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,38],"uv_size":[-0.25,0.25]},"up":{"uv":[40.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,40.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,2.2649,0.6259],"size":[0.2626,0.1014,0.5448],"inflate":0.001,"pivot":[-0.2116,2.1846,1.251],"rotation":[87,0,0],"uv":{"north":{"uv":[41.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[10.5,33],"uv_size":[-0.5,0.25]},"south":{"uv":[51.25,41],"uv_size":[-0.25,0.25]},"west":{"uv":[33.5,9],"uv_size":[-0.5,0.25]},"up":{"uv":[33.25,10],"uv_size":[-0.25,0.5]},"down":{"uv":[11.25,33.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3429,1.3228,0.5073],"size":[0.2626,0.2021,1.0084],"inflate":0.001,"pivot":[-0.2116,1.4642,1.1325],"rotation":[154.5,0,0],"uv":{"north":{"uv":[42.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[19,21],"uv_size":[-1,0.25]},"south":{"uv":[51.25,42],"uv_size":[-0.25,0.25]},"west":{"uv":[22,17],"uv_size":[-1,0.25]},"up":{"uv":[21.25,18],"uv_size":[-0.25,1]},"down":{"uv":[19.25,22],"uv_size":[-0.25,-1]}}},{"origin":[-0.323,1.5243,0.5073],"size":[0.2425,0.7665,0.9278],"inflate":0.001,"pivot":[-0.2116,1.4642,1.1325],"rotation":[154.5,0,0],"uv":{"north":{"uv":[25.25,19],"uv_size":[-0.25,0.75]},"east":{"uv":[5,4],"uv_size":[-1,0.75]},"south":{"uv":[20.25,25],"uv_size":[-0.25,0.75]},"west":{"uv":[5,3],"uv_size":[-1,0.75]},"up":{"uv":[21.25,19],"uv_size":[-0.25,1]},"down":{"uv":[20.25,22],"uv_size":[-0.25,-1]}}},{"origin":[-0.3226,1.1403,1.6701],"size":[0.2425,1.0084,0.3231],"inflate":0.001,"pivot":[-0.2318,1.1406,1.6704],"rotation":[173.5,0,0],"uv":{"north":{"uv":[21.25,20],"uv_size":[-0.25,1]},"east":{"uv":[22.25,0],"uv_size":[-0.25,1]},"south":{"uv":[0.25,22],"uv_size":[-0.25,1]},"west":{"uv":[21.25,21],"uv_size":[-0.25,1]},"up":{"uv":[43.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,43.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3832,0.6953,1.2568],"size":[0.061,0.2021,0.2626],"inflate":0.001,"pivot":[-0.3527,0.8064,1.4789],"rotation":[156,0,0],"uv":{"north":{"uv":[44.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,45],"uv_size":[-0.25,0.25]},"south":{"uv":[45.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,44],"uv_size":[-0.25,0.25]},"up":{"uv":[46.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.6251,0.7379,1.3868],"size":[0.2425,0.182,0.182],"inflate":0.001,"pivot":[-0.5039,0.8289,1.4779],"rotation":[111,0,0],"uv":{"north":{"uv":[47.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,48],"uv_size":[-0.25,0.25]},"south":{"uv":[48.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,47],"uv_size":[-0.25,0.25]},"up":{"uv":[49.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[51.25,49.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.6856,0.7782,1.4272],"size":[0.061,0.1014,0.1014],"inflate":0.001,"pivot":[-0.5039,0.8289,1.4779],"rotation":[111,0,0],"uv":{"north":{"uv":[50.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[0.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[51.25,51],"uv_size":[-0.25,0.25]},"west":{"uv":[51.25,50],"uv_size":[-0.25,0.25]},"up":{"uv":[52.25,0],"uv_size":[-0.25,0.25]},"down":{"uv":[1.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3832,0.5604,1.3136],"size":[0.061,0.1798,0.0918],"inflate":0.001,"pivot":[-0.3527,0.7399,1.4051],"rotation":[-176.5,0,0],"uv":{"north":{"uv":[52.25,1],"uv_size":[-0.25,0.25]},"east":{"uv":[3.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[52.25,2],"uv_size":[-0.25,0.25]},"west":{"uv":[2.25,52],"uv_size":[-0.25,0.25]},"up":{"uv":[52.25,3],"uv_size":[-0.25,0.25]},"down":{"uv":[4.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3832,0.8172,1.7262],"size":[0.3029,0.1872,0.0757],"inflate":0.001,"pivot":[-0.3527,0.8175,1.7265],"rotation":[178.5,0,0],"uv":{"north":{"uv":[52.25,4],"uv_size":[-0.25,0.25]},"east":{"uv":[6.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[52.25,5],"uv_size":[-0.25,0.25]},"west":{"uv":[5.25,52],"uv_size":[-0.25,0.25]},"up":{"uv":[52.25,6],"uv_size":[-0.25,0.25]},"down":{"uv":[7.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3228,1.0038,1.7262],"size":[0.1014,0.5246,0.0757],"inflate":0.001,"pivot":[-0.3527,0.8175,1.7265],"rotation":[178.5,0,0],"uv":{"north":{"uv":[33.25,11],"uv_size":[-0.25,0.5]},"east":{"uv":[13.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[33.25,12],"uv_size":[-0.25,0.5]},"west":{"uv":[12.25,33],"uv_size":[-0.25,0.5]},"up":{"uv":[52.25,7],"uv_size":[-0.25,0.25]},"down":{"uv":[8.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3228,1.5279,1.7262],"size":[0.2626,0.1215,0.0757],"inflate":0.001,"pivot":[-0.3527,0.8175,1.7265],"rotation":[178.5,0,0],"uv":{"north":{"uv":[52.25,8],"uv_size":[-0.25,0.25]},"east":{"uv":[10.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[52.25,9],"uv_size":[-0.25,0.25]},"west":{"uv":[9.25,52],"uv_size":[-0.25,0.25]},"up":{"uv":[52.25,10],"uv_size":[-0.25,0.25]},"down":{"uv":[11.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3228,-0.0115,1.7044],"size":[0.2626,0.0988,0.0757],"inflate":0.001,"pivot":[-0.1915,-0.0138,1.7047],"rotation":[147.5,0,0],"uv":{"north":{"uv":[52.25,11],"uv_size":[-0.25,0.25]},"east":{"uv":[13.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[52.25,12],"uv_size":[-0.25,0.25]},"west":{"uv":[12.25,52],"uv_size":[-0.25,0.25]},"up":{"uv":[52.25,13],"uv_size":[-0.25,0.25]},"down":{"uv":[14.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3228,-0.0971,1.6521],"size":[0.2626,0.0988,0.0757],"inflate":0.001,"pivot":[-0.1915,-0.0994,1.6523],"rotation":[113.5,0,0],"uv":{"north":{"uv":[52.25,14],"uv_size":[-0.25,0.25]},"east":{"uv":[16.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[52.25,15],"uv_size":[-0.25,0.25]},"west":{"uv":[15.25,52],"uv_size":[-0.25,0.25]},"up":{"uv":[52.25,16],"uv_size":[-0.25,0.25]},"down":{"uv":[17.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3228,-0.1373,1.5596],"size":[0.2626,0.0988,0.0757],"inflate":0.001,"pivot":[-0.1915,-0.1396,1.5599],"rotation":[68.5,0,0],"uv":{"north":{"uv":[52.25,17],"uv_size":[-0.25,0.25]},"east":{"uv":[19.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[52.25,18],"uv_size":[-0.25,0.25]},"west":{"uv":[18.25,52],"uv_size":[-0.25,0.25]},"up":{"uv":[52.25,19],"uv_size":[-0.25,0.25]},"down":{"uv":[20.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.5042,-0.0592,1.5596],"size":[0.1014,0.4037,0.0757],"inflate":0.001,"pivot":[-0.1915,-0.1396,1.5599],"rotation":[68.5,0,0],"uv":{"north":{"uv":[33.25,13],"uv_size":[-0.25,0.5]},"east":{"uv":[15.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[33.25,14],"uv_size":[-0.25,0.5]},"west":{"uv":[14.25,33],"uv_size":[-0.25,0.5]},"up":{"uv":[52.25,20],"uv_size":[-0.25,0.25]},"down":{"uv":[21.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.4034,-0.0592,1.5596],"size":[0.0812,0.1215,0.0757],"inflate":0.001,"pivot":[-0.1915,-0.1396,1.5599],"rotation":[68.5,0,0],"uv":{"north":{"uv":[52.25,21],"uv_size":[-0.25,0.25]},"east":{"uv":[23.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[52.25,22],"uv_size":[-0.25,0.25]},"west":{"uv":[22.25,52],"uv_size":[-0.25,0.25]},"up":{"uv":[52.25,23],"uv_size":[-0.25,0.25]},"down":{"uv":[24.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3228,-0.1117,1.3483],"size":[0.1618,0.0812,0.0757],"inflate":0.001,"pivot":[-0.3225,-0.0308,1.3862],"rotation":[60.879,-41.1403,20.1279],"uv":{"north":{"uv":[52.25,24],"uv_size":[-0.25,0.25]},"east":{"uv":[26.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[52.25,25],"uv_size":[-0.25,0.25]},"west":{"uv":[25.25,52],"uv_size":[-0.25,0.25]},"up":{"uv":[52.25,26],"uv_size":[-0.25,0.25]},"down":{"uv":[27.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2019,-0.0365,1.5596],"size":[0.1417,0.6632,0.0757],"inflate":0.001,"pivot":[-0.1915,-0.1396,1.5599],"rotation":[68.5,0,0],"uv":{"north":{"uv":[25.25,20],"uv_size":[-0.25,0.75]},"east":{"uv":[22.25,25],"uv_size":[-0.25,0.75]},"south":{"uv":[25.25,21],"uv_size":[-0.25,0.75]},"west":{"uv":[21.25,25],"uv_size":[-0.25,0.75]},"up":{"uv":[52.25,27],"uv_size":[-0.25,0.25]},"down":{"uv":[28.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.2623,0.4648,1.5596],"size":[0.061,0.0812,0.0757],"inflate":0.001,"pivot":[-0.1915,-0.1396,1.5599],"rotation":[68.5,0,0],"uv":{"north":{"uv":[52.25,28],"uv_size":[-0.25,0.25]},"east":{"uv":[30.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[52.25,29],"uv_size":[-0.25,0.25]},"west":{"uv":[29.25,52],"uv_size":[-0.25,0.25]},"up":{"uv":[52.25,30],"uv_size":[-0.25,0.25]},"down":{"uv":[31.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.5042,0.0724,1.0857],"size":[0.1014,0.6456,0.0757],"inflate":0.001,"pivot":[-0.5039,0.0727,1.1236],"rotation":[61.4961,-39.8259,19.1775],"uv":{"north":{"uv":[25.25,22],"uv_size":[-0.25,0.75]},"east":{"uv":[24.25,25],"uv_size":[-0.25,0.75]},"south":{"uv":[25.25,23],"uv_size":[-0.25,0.75]},"west":{"uv":[23.25,25],"uv_size":[-0.25,0.75]},"up":{"uv":[52.25,31],"uv_size":[-0.25,0.25]},"down":{"uv":[32.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3228,0.1278,1.6404],"size":[0.1014,0.2828,0.0757],"inflate":0.001,"pivot":[-0.2217,0.4103,1.6782],"rotation":[178.7042,0.7556,30.2415],"uv":{"north":{"uv":[52.25,32],"uv_size":[-0.25,0.25]},"east":{"uv":[34.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[52.25,33],"uv_size":[-0.25,0.25]},"west":{"uv":[33.25,52],"uv_size":[-0.25,0.25]},"up":{"uv":[52.25,34],"uv_size":[-0.25,0.25]},"down":{"uv":[35.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.4561,0.3495,1.643],"size":[0.1339,0.1616,0.0757],"inflate":0.001,"pivot":[-0.3225,0.5111,1.6809],"rotation":[179.3225,1.3383,63.1453],"uv":{"north":{"uv":[52.25,35],"uv_size":[-0.25,0.25]},"east":{"uv":[37.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[52.25,36],"uv_size":[-0.25,0.25]},"west":{"uv":[36.25,52],"uv_size":[-0.25,0.25]},"up":{"uv":[52.25,37],"uv_size":[-0.25,0.25]},"down":{"uv":[38.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3228,1.5394,0.5108],"size":[0.2425,0.706,0.3231],"inflate":0.001,"pivot":[-0.2318,1.5397,0.8336],"rotation":[141.5,0,0],"uv":{"north":{"uv":[25.25,24],"uv_size":[-0.25,0.75]},"east":{"uv":[26.25,0],"uv_size":[-0.25,0.75]},"south":{"uv":[0.25,26],"uv_size":[-0.25,0.75]},"west":{"uv":[25.25,25],"uv_size":[-0.25,0.75]},"up":{"uv":[52.25,38],"uv_size":[-0.25,0.25]},"down":{"uv":[39.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3228,0.6648,-0.2509],"size":[0.2425,0.3231,0.6456],"inflate":0.001,"pivot":[-0.2318,0.9876,0.3944],"rotation":[117.25,0,0],"uv":{"north":{"uv":[52.25,39],"uv_size":[-0.25,0.25]},"east":{"uv":[26.75,1],"uv_size":[-0.75,0.25]},"south":{"uv":[40.25,52],"uv_size":[-0.25,0.25]},"west":{"uv":[1.75,26],"uv_size":[-0.75,0.25]},"up":{"uv":[2.25,26],"uv_size":[-0.25,0.75]},"down":{"uv":[26.25,2.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.3228,0.0914,-0.1168],"size":[0.2425,0.3231,0.8068],"inflate":0.001,"pivot":[-0.2318,0.4142,0.6897],"rotation":[154.75,0,0],"uv":{"north":{"uv":[52.25,40],"uv_size":[-0.25,0.25]},"east":{"uv":[26.75,3],"uv_size":[-0.75,0.25]},"south":{"uv":[41.25,52],"uv_size":[-0.25,0.25]},"west":{"uv":[3.75,26],"uv_size":[-0.75,0.25]},"up":{"uv":[4.25,26],"uv_size":[-0.25,0.75]},"down":{"uv":[26.25,4.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.3832,0.1721,-0.1168],"size":[0.061,0.2424,0.8068],"inflate":0.001,"pivot":[-0.2318,0.4142,0.6897],"rotation":[154.75,0,0],"uv":{"north":{"uv":[52.25,41],"uv_size":[-0.25,0.25]},"east":{"uv":[26.75,5],"uv_size":[-0.75,0.25]},"south":{"uv":[42.25,52],"uv_size":[-0.25,0.25]},"west":{"uv":[5.75,26],"uv_size":[-0.75,0.25]},"up":{"uv":[6.25,26],"uv_size":[-0.25,0.75]},"down":{"uv":[26.25,6.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.3834,0.7455,-0.2509],"size":[0.061,0.2424,0.6456],"inflate":0.001,"pivot":[-0.2318,0.9876,0.3944],"rotation":[117.25,0,0],"uv":{"north":{"uv":[52.25,42],"uv_size":[-0.25,0.25]},"east":{"uv":[26.75,7],"uv_size":[-0.75,0.25]},"south":{"uv":[43.25,52],"uv_size":[-0.25,0.25]},"west":{"uv":[7.75,26],"uv_size":[-0.75,0.25]},"up":{"uv":[8.25,26],"uv_size":[-0.25,0.75]},"down":{"uv":[26.25,8.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.3832,0.8651,0.7291],"size":[0.061,0.1014,0.2021],"inflate":0.001,"pivot":[-0.3527,0.8654,0.7294],"rotation":[82.25,0,0],"uv":{"north":{"uv":[52.25,43],"uv_size":[-0.25,0.25]},"east":{"uv":[45.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[52.25,44],"uv_size":[-0.25,0.25]},"west":{"uv":[44.25,52],"uv_size":[-0.25,0.25]},"up":{"uv":[52.25,45],"uv_size":[-0.25,0.25]},"down":{"uv":[46.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3832,1.6201,0.5914],"size":[0.061,0.6254,0.2424],"inflate":0.001,"pivot":[-0.2318,1.5397,0.8336],"rotation":[141.5,0,0],"uv":{"north":{"uv":[9.25,26],"uv_size":[-0.25,0.75]},"east":{"uv":[26.25,10],"uv_size":[-0.25,0.75]},"south":{"uv":[10.25,26],"uv_size":[-0.25,0.75]},"west":{"uv":[26.25,9],"uv_size":[-0.25,0.75]},"up":{"uv":[52.25,46],"uv_size":[-0.25,0.25]},"down":{"uv":[47.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3832,1.3516,0.7025],"size":[0.061,0.1253,0.0809],"inflate":0.001,"pivot":[-0.3527,1.4766,0.7834],"rotation":[103.3695,0,0],"uv":{"north":{"uv":[52.25,47],"uv_size":[-0.25,0.25]},"east":{"uv":[49.25,52],"uv_size":[-0.25,0.25]},"south":{"uv":[52.25,48],"uv_size":[-0.25,0.25]},"west":{"uv":[48.25,52],"uv_size":[-0.25,0.25]},"up":{"uv":[52.25,49],"uv_size":[-0.25,0.25]},"down":{"uv":[50.25,52.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3832,1.5243,0.6484],"size":[0.061,0.2425,0.706],"inflate":0.001,"pivot":[-0.2116,1.4642,1.1325],"rotation":[154.5,0,0],"uv":{"north":{"uv":[52.25,50],"uv_size":[-0.25,0.25]},"east":{"uv":[26.75,11],"uv_size":[-0.75,0.25]},"south":{"uv":[51.25,52],"uv_size":[-0.25,0.25]},"west":{"uv":[11.75,26],"uv_size":[-0.75,0.25]},"up":{"uv":[12.25,26],"uv_size":[-0.25,0.75]},"down":{"uv":[26.25,12.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.3832,1.201,1.5428],"size":[0.061,0.2244,0.0911],"inflate":0.001,"pivot":[-0.3527,1.2013,1.5431],"rotation":[177,0,0],"uv":{"north":{"uv":[52.25,51],"uv_size":[-0.25,0.25]},"east":{"uv":[53.25,0],"uv_size":[-0.25,0.25]},"south":{"uv":[0.25,53],"uv_size":[-0.25,0.25]},"west":{"uv":[52.25,52],"uv_size":[-0.25,0.25]},"up":{"uv":[1.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,1.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.383,1.0815,1.0202],"size":[0.061,0.1014,0.2424],"inflate":0.001,"pivot":[-0.3527,1.1826,1.0205],"rotation":[-168,0,0],"uv":{"north":{"uv":[2.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[53.25,3],"uv_size":[-0.25,0.25]},"south":{"uv":[3.25,53],"uv_size":[-0.25,0.25]},"west":{"uv":[53.25,2],"uv_size":[-0.25,0.25]},"up":{"uv":[4.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,4.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3228,-0.0106,1.2658],"size":[0.2425,0.0811,0.1534],"inflate":0.001,"pivot":[-0.2318,0.0703,1.4189],"rotation":[-153.5622,0,0],"uv":{"north":{"uv":[5.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[53.25,6],"uv_size":[-0.25,0.25]},"south":{"uv":[6.25,53],"uv_size":[-0.25,0.25]},"west":{"uv":[53.25,5],"uv_size":[-0.25,0.25]},"up":{"uv":[7.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,7.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3429,1.4961,0.8957],"size":[0.2626,0.1618,0.1618],"inflate":0.001,"pivot":[-0.2116,1.577,0.896],"rotation":[-170.5,0,0],"uv":{"north":{"uv":[8.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[53.25,9],"uv_size":[-0.25,0.25]},"south":{"uv":[9.25,53],"uv_size":[-0.25,0.25]},"west":{"uv":[53.25,8],"uv_size":[-0.25,0.25]},"up":{"uv":[10.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,10.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3025,5.833,0.3064],"size":[0.2217,0.4434,0.3427],"pivot":[-0.2116,5.8834,0.5281],"rotation":[-14,0,0],"uv":{"north":{"uv":[33.25,15],"uv_size":[-0.25,0.5]},"east":{"uv":[17.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[33.25,16],"uv_size":[-0.25,0.5]},"west":{"uv":[16.25,33],"uv_size":[-0.25,0.5]},"up":{"uv":[11.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,11.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3023,5.7068,0.3008],"size":[0.2217,0.1814,0.3225],"pivot":[-0.2116,5.8882,0.3008],"rotation":[16,0,0],"uv":{"north":{"uv":[12.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[53.25,13],"uv_size":[-0.25,0.25]},"south":{"uv":[13.25,53],"uv_size":[-0.25,0.25]},"west":{"uv":[53.25,12],"uv_size":[-0.25,0.25]},"up":{"uv":[14.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,14.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3023,5.4115,0.5523],"size":[0.2217,0.3023,0.1008],"pivot":[-0.2116,5.7138,0.3508],"rotation":[44.25,0,0],"uv":{"north":{"uv":[15.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[53.25,16],"uv_size":[-0.25,0.25]},"south":{"uv":[16.25,53],"uv_size":[-0.25,0.25]},"west":{"uv":[53.25,15],"uv_size":[-0.25,0.25]},"up":{"uv":[17.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,17.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.302,5.1696,0.3508],"size":[0.2217,0.5442,0.2016],"pivot":[-0.2116,5.7138,0.3508],"rotation":[44.25,0,0],"uv":{"north":{"uv":[33.25,17],"uv_size":[-0.25,0.5]},"east":{"uv":[19.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[33.25,18],"uv_size":[-0.25,0.5]},"west":{"uv":[18.25,33],"uv_size":[-0.25,0.5]},"up":{"uv":[18.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,18.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3023,5.0015,0.7305],"size":[0.2217,0.3427,0.0806],"pivot":[-0.2116,5.324,0.7305],"rotation":[16.75,0,0],"uv":{"north":{"uv":[19.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[53.25,20],"uv_size":[-0.25,0.25]},"south":{"uv":[20.25,53],"uv_size":[-0.25,0.25]},"west":{"uv":[53.25,19],"uv_size":[-0.25,0.25]},"up":{"uv":[21.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,21.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3023,6.3184,0.4081],"size":[0.2217,0.1209,0.2217],"pivot":[-0.2116,6.3184,0.4081],"rotation":[-41.5,0,0],"uv":{"north":{"uv":[22.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[53.25,23],"uv_size":[-0.25,0.25]},"south":{"uv":[23.25,53],"uv_size":[-0.25,0.25]},"west":{"uv":[53.25,22],"uv_size":[-0.25,0.25]},"up":{"uv":[24.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,24.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3023,6.409,0.4882],"size":[0.2217,0.1814,0.262],"pivot":[-0.2116,6.409,0.4882],"rotation":[-70,0,0],"uv":{"north":{"uv":[25.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[53.25,26],"uv_size":[-0.25,0.25]},"south":{"uv":[26.25,53],"uv_size":[-0.25,0.25]},"west":{"uv":[53.25,25],"uv_size":[-0.25,0.25]},"up":{"uv":[27.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,27.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3023,6.0434,0.7483],"size":[0.2217,0.1814,0.8667],"pivot":[-0.2116,6.2248,0.7483],"rotation":[-79.75,0,0],"uv":{"north":{"uv":[28.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[26.75,13],"uv_size":[-0.75,0.25]},"south":{"uv":[53.25,28],"uv_size":[-0.25,0.25]},"west":{"uv":[13.75,26],"uv_size":[-0.75,0.25]},"up":{"uv":[14.25,26],"uv_size":[-0.25,0.75]},"down":{"uv":[26.25,14.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.3023,5.251,0.9025],"size":[0.2217,0.1209,0.9877],"pivot":[-0.2116,5.3719,0.9025],"rotation":[-85.25,0,0],"uv":{"north":{"uv":[29.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[23,1],"uv_size":[-1,0.25]},"south":{"uv":[53.25,29],"uv_size":[-0.25,0.25]},"west":{"uv":[2,22],"uv_size":[-1,0.25]},"up":{"uv":[2.25,22],"uv_size":[-0.25,1]},"down":{"uv":[22.25,3],"uv_size":[-0.25,-1]}}},{"origin":[-0.302,3.3414,0.9276],"size":[0.2217,0.1814,0.9675],"pivot":[-0.2116,3.5228,0.9276],"rotation":[-102.5,0,0],"uv":{"north":{"uv":[30.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[23,3],"uv_size":[-1,0.25]},"south":{"uv":[53.25,30],"uv_size":[-0.25,0.25]},"west":{"uv":[4,22],"uv_size":[-1,0.25]},"up":{"uv":[4.25,22],"uv_size":[-0.25,1]},"down":{"uv":[22.25,5],"uv_size":[-0.25,-1]}}},{"origin":[-0.302,2.6175,0.5411],"size":[0.2217,0.1814,0.1814],"pivot":[-0.2116,2.6175,0.5411],"rotation":[-62.5,0,0],"uv":{"north":{"uv":[31.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[53.25,32],"uv_size":[-0.25,0.25]},"south":{"uv":[32.25,53],"uv_size":[-0.25,0.25]},"west":{"uv":[53.25,31],"uv_size":[-0.25,0.25]},"up":{"uv":[33.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,33.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3023,4.2063,0.5006],"size":[0.2217,0.1008,0.4838],"pivot":[-0.2116,4.3877,0.9843],"rotation":[-93.75,0,0],"uv":{"north":{"uv":[34.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[20.5,33],"uv_size":[-0.5,0.25]},"south":{"uv":[53.25,34],"uv_size":[-0.25,0.25]},"west":{"uv":[33.5,19],"uv_size":[-0.5,0.25]},"up":{"uv":[33.25,20],"uv_size":[-0.25,0.5]},"down":{"uv":[21.25,33.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3023,4.9602,0.8154],"size":[0.2217,0.1209,0.4031],"pivot":[-0.2116,4.9602,0.8154],"rotation":[-107.25,0,0],"uv":{"north":{"uv":[35.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[22.5,33],"uv_size":[-0.5,0.25]},"south":{"uv":[53.25,35],"uv_size":[-0.25,0.25]},"west":{"uv":[33.5,21],"uv_size":[-0.5,0.25]},"up":{"uv":[33.25,22],"uv_size":[-0.25,0.5]},"down":{"uv":[23.25,33.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3021,4.5752,0.6353],"size":[0.2217,0.2822,0.4434],"pivot":[-0.2116,4.5752,0.6958],"rotation":[-125,0,0],"uv":{"north":{"uv":[36.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[24.5,33],"uv_size":[-0.5,0.25]},"south":{"uv":[53.25,36],"uv_size":[-0.25,0.25]},"west":{"uv":[33.5,23],"uv_size":[-0.5,0.25]},"up":{"uv":[33.25,24],"uv_size":[-0.25,0.5]},"down":{"uv":[25.25,33.5],"uv_size":[-0.25,-0.5]}}},{"origin":[-0.3023,4.2615,0.4762],"size":[0.2217,0.383,0.8063],"pivot":[-0.2116,4.2615,0.4762],"rotation":[-95,0,0],"uv":{"north":{"uv":[33.25,25],"uv_size":[-0.25,0.5]},"east":{"uv":[11.75,1],"uv_size":[-0.75,0.5]},"south":{"uv":[26.25,33],"uv_size":[-0.25,0.5]},"west":{"uv":[5.75,4],"uv_size":[-0.75,0.5]},"up":{"uv":[15.25,26],"uv_size":[-0.25,0.75]},"down":{"uv":[26.25,15.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.303,3.042,0.7874],"size":[0.2217,0.383,0.8466],"pivot":[-0.2116,3.4249,0.7874],"rotation":[-105,0,0],"uv":{"north":{"uv":[33.25,26],"uv_size":[-0.25,0.5]},"east":{"uv":[1.75,15],"uv_size":[-0.75,0.5]},"south":{"uv":[27.25,33],"uv_size":[-0.25,0.5]},"west":{"uv":[11.75,7],"uv_size":[-0.75,0.5]},"up":{"uv":[16.25,26],"uv_size":[-0.25,0.75]},"down":{"uv":[26.25,16.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.3023,2.7063,0.1984],"size":[0.2217,0.4031,0.3225],"pivot":[-0.2116,2.7063,0.1984],"rotation":[-76.5,0,0],"uv":{"north":{"uv":[33.25,27],"uv_size":[-0.25,0.5]},"east":{"uv":[29.25,33],"uv_size":[-0.25,0.5]},"south":{"uv":[33.25,28],"uv_size":[-0.25,0.5]},"west":{"uv":[28.25,33],"uv_size":[-0.25,0.5]},"up":{"uv":[37.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,37.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3022,2.3927,0.052],"size":[0.2217,0.7055,0.2217],"pivot":[-0.2116,2.3927,0.2737],"rotation":[-97.5,0,0],"uv":{"north":{"uv":[17.25,26],"uv_size":[-0.25,0.75]},"east":{"uv":[26.25,18],"uv_size":[-0.25,0.75]},"south":{"uv":[18.25,26],"uv_size":[-0.25,0.75]},"west":{"uv":[26.25,17],"uv_size":[-0.25,0.75]},"up":{"uv":[38.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,38.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1814,2.3927,0.2737],"size":[0.1008,0.5241,0.645],"pivot":[-0.131,2.3927,0.2737],"rotation":[-67.5,0,0],"uv":{"north":{"uv":[33.25,29],"uv_size":[-0.25,0.5]},"east":{"uv":[2.75,15],"uv_size":[-0.75,0.5]},"south":{"uv":[30.25,33],"uv_size":[-0.25,0.5]},"west":{"uv":[15.75,1],"uv_size":[-0.75,0.5]},"up":{"uv":[19.25,26],"uv_size":[-0.25,0.75]},"down":{"uv":[26.25,19.75],"uv_size":[-0.25,-0.75]}}},{"origin":[-0.1814,1.983,0.4434],"size":[0.1008,0.1613,0.3225],"pivot":[-0.131,1.983,0.4434],"rotation":[-92.5,0,0],"uv":{"north":{"uv":[39.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[53.25,40],"uv_size":[-0.25,0.25]},"south":{"uv":[40.25,53],"uv_size":[-0.25,0.25]},"west":{"uv":[53.25,39],"uv_size":[-0.25,0.25]},"up":{"uv":[41.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,41.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3023,2.5205,0.9416],"size":[0.2217,0.3225,0.2822],"pivot":[-0.2116,2.5205,1.002],"rotation":[-158.75,0,0],"uv":{"north":{"uv":[42.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[53.25,43],"uv_size":[-0.25,0.25]},"south":{"uv":[43.25,53],"uv_size":[-0.25,0.25]},"west":{"uv":[53.25,42],"uv_size":[-0.25,0.25]},"up":{"uv":[44.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,44.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3025,2.2199,1.1189],"size":[0.2217,1.3505,0.2217],"pivot":[-0.2116,2.2199,1.1189],"rotation":[142.25,0,0],"uv":{"north":{"uv":[17.25,16],"uv_size":[-0.25,1.25]},"east":{"uv":[1.25,18],"uv_size":[-0.25,1.25]},"south":{"uv":[18.25,0],"uv_size":[-0.25,1.25]},"west":{"uv":[0.25,18],"uv_size":[-0.25,1.25]},"up":{"uv":[45.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,45.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3024,1.3155,0.0093],"size":[0.2217,1.0481,0.2217],"pivot":[-0.2116,1.3155,0.1706],"rotation":[-151.5,0,0],"uv":{"north":{"uv":[5.25,22],"uv_size":[-0.25,1]},"east":{"uv":[22.25,6],"uv_size":[-0.25,1]},"south":{"uv":[6.25,22],"uv_size":[-0.25,1]},"west":{"uv":[22.25,5],"uv_size":[-0.25,1]},"up":{"uv":[46.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,46.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.3024,0.3656,0.3757],"size":[0.2217,0.9474,0.2419],"pivot":[-0.2116,0.3656,0.6176],"rotation":[-115.75,0,0],"uv":{"north":{"uv":[7.25,22],"uv_size":[-0.25,1]},"east":{"uv":[22.25,8],"uv_size":[-0.25,1]},"south":{"uv":[8.25,22],"uv_size":[-0.25,1]},"west":{"uv":[22.25,7],"uv_size":[-0.25,1]},"up":{"uv":[47.25,53],"uv_size":[-0.25,0.25]},"down":{"uv":[53.25,47.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.302,4.2063,0.9843],"size":[0.2217,0.1814,0.8667],"pivot":[-0.2116,4.3877,0.9843],"rotation":[-93.75,0,0],"uv":{"north":{"uv":[48.25,53],"uv_size":[-0.25,0.25]},"east":{"uv":[26.75,20],"uv_size":[-0.75,0.25]},"south":{"uv":[53.25,48],"uv_size":[-0.25,0.25]},"west":{"uv":[20.75,26],"uv_size":[-0.75,0.25]},"up":{"uv":[21.25,26],"uv_size":[-0.25,0.75]},"down":{"uv":[26.25,21.75],"uv_size":[-0.25,-0.75]}}}]},{"name":"group10","parent":"treasure_kn","pivot":[0,3.355,-1.0688],"cubes":[{"origin":[-0.4434,3.2882,-1.23],"size":[0.8667,0.1336,0.3225],"pivot":[0,3.355,-1.0688],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[22,26],"uv_size":[0.75,0.25]},"east":{"uv":[49,53],"uv_size":[0.25,0.25]},"south":{"uv":[26,22],"uv_size":[0.75,0.25]},"west":{"uv":[53,49],"uv_size":[0.25,0.25]},"up":{"uv":[23,26],"uv_size":[0.75,0.25]},"down":{"uv":[26,23.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4434,3.1938,-1.1356],"size":[0.8667,0.3225,0.1336],"pivot":[0,3.355,-1.0688],"rotation":[-77.5,0,0],"uv":{"north":{"uv":[24,26],"uv_size":[0.75,0.25]},"east":{"uv":[50,53],"uv_size":[0.25,0.25]},"south":{"uv":[26,24],"uv_size":[0.75,0.25]},"west":{"uv":[53,50],"uv_size":[0.25,0.25]},"up":{"uv":[25,26],"uv_size":[0.75,0.25]},"down":{"uv":[26,25.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4434,3.1938,-1.1356],"size":[0.8667,0.3225,0.1336],"pivot":[0,3.355,-1.0688],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[26,26],"uv_size":[0.75,0.25]},"east":{"uv":[51,53],"uv_size":[0.25,0.25]},"south":{"uv":[0,27],"uv_size":[0.75,0.25]},"west":{"uv":[53,51],"uv_size":[0.25,0.25]},"up":{"uv":[27,0],"uv_size":[0.75,0.25]},"down":{"uv":[1,27.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4434,3.2882,-1.23],"size":[0.8667,0.1336,0.3225],"pivot":[0,3.355,-1.0688],"rotation":[-77.5,0,0],"uv":{"north":{"uv":[27,1],"uv_size":[0.75,0.25]},"east":{"uv":[52,53],"uv_size":[0.25,0.25]},"south":{"uv":[2,27],"uv_size":[0.75,0.25]},"west":{"uv":[53,52],"uv_size":[0.25,0.25]},"up":{"uv":[27,2],"uv_size":[0.75,0.25]},"down":{"uv":[3,27.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4838,3.2341,-1.0952],"size":[0.9473,0.2419,0.053],"pivot":[0.2923,3.355,-1.0688],"rotation":[-43,0,0],"uv":{"north":{"uv":[9,22],"uv_size":[1,0.25]},"east":{"uv":[53,53],"uv_size":[0.25,0.25]},"south":{"uv":[22,9],"uv_size":[1,0.25]},"west":{"uv":[0,54],"uv_size":[0.25,0.25]},"up":{"uv":[10,22],"uv_size":[1,0.25]},"down":{"uv":[22,10.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4838,3.2341,-1.0952],"size":[0.9473,0.2419,0.053],"pivot":[0.2923,3.355,-1.0688],"rotation":[47,0,0],"uv":{"north":{"uv":[11,22],"uv_size":[1,0.25]},"east":{"uv":[54,0],"uv_size":[0.25,0.25]},"south":{"uv":[22,11],"uv_size":[1,0.25]},"west":{"uv":[1,54],"uv_size":[0.25,0.25]},"up":{"uv":[12,22],"uv_size":[1,0.25]},"down":{"uv":[22,12.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4838,3.2946,-1.1292],"size":[0.9473,0.1209,0.1209],"pivot":[0.2923,3.355,-1.0688],"rotation":[-88,0,0],"uv":{"north":{"uv":[13,22],"uv_size":[1,0.25]},"east":{"uv":[54,1],"uv_size":[0.25,0.25]},"south":{"uv":[22,13],"uv_size":[1,0.25]},"west":{"uv":[2,54],"uv_size":[0.25,0.25]},"up":{"uv":[14,22],"uv_size":[1,0.25]},"down":{"uv":[22,14.25],"uv_size":[1,-0.25]}}}]},{"name":"group11","parent":"treasure_kn","pivot":[0,4.6047,-0.8067],"cubes":[{"origin":[-0.4434,4.5379,-0.968],"size":[0.8667,0.1336,0.3225],"pivot":[0,4.6047,-0.8067],"rotation":[-15,0,0],"uv":{"north":{"uv":[27,3],"uv_size":[0.75,0.25]},"east":{"uv":[54,2],"uv_size":[0.25,0.25]},"south":{"uv":[4,27],"uv_size":[0.75,0.25]},"west":{"uv":[3,54],"uv_size":[0.25,0.25]},"up":{"uv":[27,4],"uv_size":[0.75,0.25]},"down":{"uv":[5,27.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4838,4.4838,-0.8332],"size":[0.9473,0.2419,0.053],"pivot":[0.2923,4.6047,-0.8067],"rotation":[109.5,0,0],"uv":{"north":{"uv":[15,22],"uv_size":[1,0.25]},"east":{"uv":[54,3],"uv_size":[0.25,0.25]},"south":{"uv":[22,15],"uv_size":[1,0.25]},"west":{"uv":[4,54],"uv_size":[0.25,0.25]},"up":{"uv":[16,22],"uv_size":[1,0.25]},"down":{"uv":[22,16.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4838,4.5442,-0.8672],"size":[0.9473,0.1209,0.1209],"pivot":[0.2923,4.6047,-0.8067],"rotation":[-25.5,0,0],"uv":{"north":{"uv":[17,22],"uv_size":[1,0.25]},"east":{"uv":[54,4],"uv_size":[0.25,0.25]},"south":{"uv":[22,17],"uv_size":[1,0.25]},"west":{"uv":[5,54],"uv_size":[0.25,0.25]},"up":{"uv":[18,22],"uv_size":[1,0.25]},"down":{"uv":[22,18.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4838,4.4838,-0.8332],"size":[0.9473,0.2419,0.053],"pivot":[0.2923,4.6047,-0.8067],"rotation":[19.5,0,0],"uv":{"north":{"uv":[19,22],"uv_size":[1,0.25]},"east":{"uv":[54,5],"uv_size":[0.25,0.25]},"south":{"uv":[22,19],"uv_size":[1,0.25]},"west":{"uv":[6,54],"uv_size":[0.25,0.25]},"up":{"uv":[20,22],"uv_size":[1,0.25]},"down":{"uv":[22,20.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4434,4.4435,-0.8735],"size":[0.8667,0.3225,0.1336],"pivot":[0,4.6047,-0.8067],"rotation":[30,0,0],"uv":{"north":{"uv":[27,5],"uv_size":[0.75,0.25]},"east":{"uv":[54,6],"uv_size":[0.25,0.25]},"south":{"uv":[6,27],"uv_size":[0.75,0.25]},"west":{"uv":[7,54],"uv_size":[0.25,0.25]},"up":{"uv":[27,6],"uv_size":[0.75,0.25]},"down":{"uv":[7,27.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4434,4.4435,-0.8735],"size":[0.8667,0.3225,0.1336],"pivot":[0,4.6047,-0.8067],"rotation":[-15,0,0],"uv":{"north":{"uv":[27,7],"uv_size":[0.75,0.25]},"east":{"uv":[54,7],"uv_size":[0.25,0.25]},"south":{"uv":[8,27],"uv_size":[0.75,0.25]},"west":{"uv":[8,54],"uv_size":[0.25,0.25]},"up":{"uv":[27,8],"uv_size":[0.75,0.25]},"down":{"uv":[9,27.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4434,4.5379,-0.968],"size":[0.8667,0.1336,0.3225],"pivot":[0,4.6047,-0.8067],"rotation":[30,0,0],"uv":{"north":{"uv":[27,9],"uv_size":[0.75,0.25]},"east":{"uv":[54,8],"uv_size":[0.25,0.25]},"south":{"uv":[10,27],"uv_size":[0.75,0.25]},"west":{"uv":[9,54],"uv_size":[0.25,0.25]},"up":{"uv":[27,10],"uv_size":[0.75,0.25]},"down":{"uv":[11,27.25],"uv_size":[0.75,-0.25]}}}]},{"name":"group9","parent":"treasure_kn","pivot":[0,2.1456,-0.8672],"cubes":[{"origin":[-0.4434,2.0788,-1.0284],"size":[0.8667,0.1336,0.3225],"uv":{"north":{"uv":[27,11],"uv_size":[0.75,0.25]},"east":{"uv":[54,9],"uv_size":[0.25,0.25]},"south":{"uv":[12,27],"uv_size":[0.75,0.25]},"west":{"uv":[10,54],"uv_size":[0.25,0.25]},"up":{"uv":[27,12],"uv_size":[0.75,0.25]},"down":{"uv":[13,27.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4434,1.9844,-0.934],"size":[0.8667,0.3225,0.1336],"pivot":[0,2.1456,-0.8672],"rotation":[-45,0,0],"uv":{"north":{"uv":[27,13],"uv_size":[0.75,0.25]},"east":{"uv":[54,10],"uv_size":[0.25,0.25]},"south":{"uv":[14,27],"uv_size":[0.75,0.25]},"west":{"uv":[11,54],"uv_size":[0.25,0.25]},"up":{"uv":[27,14],"uv_size":[0.75,0.25]},"down":{"uv":[15,27.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4434,1.9844,-0.934],"size":[0.8667,0.3225,0.1336],"uv":{"north":{"uv":[27,15],"uv_size":[0.75,0.25]},"east":{"uv":[54,11],"uv_size":[0.25,0.25]},"south":{"uv":[16,27],"uv_size":[0.75,0.25]},"west":{"uv":[12,54],"uv_size":[0.25,0.25]},"up":{"uv":[27,16],"uv_size":[0.75,0.25]},"down":{"uv":[17,27.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4434,2.0788,-1.0284],"size":[0.8667,0.1336,0.3225],"pivot":[0,2.1456,-0.8672],"rotation":[-45,0,0],"uv":{"north":{"uv":[27,17],"uv_size":[0.75,0.25]},"east":{"uv":[54,12],"uv_size":[0.25,0.25]},"south":{"uv":[18,27],"uv_size":[0.75,0.25]},"west":{"uv":[13,54],"uv_size":[0.25,0.25]},"up":{"uv":[27,18],"uv_size":[0.75,0.25]},"down":{"uv":[19,27.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4838,2.0247,-0.8937],"size":[0.9473,0.2419,0.053],"pivot":[0.2923,2.1456,-0.8672],"rotation":[-10.5,0,0],"uv":{"north":{"uv":[21,22],"uv_size":[1,0.25]},"east":{"uv":[54,13],"uv_size":[0.25,0.25]},"south":{"uv":[22,21],"uv_size":[1,0.25]},"west":{"uv":[14,54],"uv_size":[0.25,0.25]},"up":{"uv":[22,22],"uv_size":[1,0.25]},"down":{"uv":[0,23.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4838,2.0852,-0.9276],"size":[0.9473,0.1209,0.1209],"pivot":[0.2923,2.1456,-0.8672],"rotation":[-55.5,0,0],"uv":{"north":{"uv":[23,0],"uv_size":[1,0.25]},"east":{"uv":[54,14],"uv_size":[0.25,0.25]},"south":{"uv":[1,23],"uv_size":[1,0.25]},"west":{"uv":[15,54],"uv_size":[0.25,0.25]},"up":{"uv":[23,1],"uv_size":[1,0.25]},"down":{"uv":[2,23.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4838,2.0247,-0.8937],"size":[0.9473,0.2419,0.053],"pivot":[0.2923,2.1456,-0.8672],"rotation":[79.5,0,0],"uv":{"north":{"uv":[23,2],"uv_size":[1,0.25]},"east":{"uv":[54,15],"uv_size":[0.25,0.25]},"south":{"uv":[3,23],"uv_size":[1,0.25]},"west":{"uv":[16,54],"uv_size":[0.25,0.25]},"up":{"uv":[23,3],"uv_size":[1,0.25]},"down":{"uv":[4,23.25],"uv_size":[1,-0.25]}}}]},{"name":"group12","parent":"treasure_kn","pivot":[0.1713,2.7976,1.4888],"cubes":[{"origin":[-0.2016,2.7271,1.3074],"size":[0.4031,0.1411,0.3628],"pivot":[0.1713,2.7976,1.4888],"rotation":[-87,0,0],"uv":{"north":{"uv":[33,30],"uv_size":[0.5,0.25]},"east":{"uv":[54,16],"uv_size":[0.25,0.25]},"south":{"uv":[31,33],"uv_size":[0.5,0.25]},"west":{"uv":[17,54],"uv_size":[0.25,0.25]},"up":{"uv":[33,31],"uv_size":[0.5,0.25]},"down":{"uv":[32,33.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2016,2.0418,1.3276],"size":[0.4031,0.1613,0.383],"pivot":[0.1713,2.1123,1.4888],"rotation":[-91.25,0,0],"uv":{"north":{"uv":[33,32],"uv_size":[0.5,0.25]},"east":{"uv":[33,33],"uv_size":[0.5,0.25]},"south":{"uv":[0,34],"uv_size":[0.5,0.25]},"west":{"uv":[34,0],"uv_size":[0.5,0.25]},"up":{"uv":[23,4],"uv_size":[0.5,0.5]},"down":{"uv":[5,23.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2016,2.2111,1.583],"size":[0.4031,0.0673,0.3883],"pivot":[0.1713,2.2715,1.583],"rotation":[-86.75,0,0],"uv":{"north":{"uv":[1,34],"uv_size":[0.5,0.25]},"east":{"uv":[34,1],"uv_size":[0.5,0.25]},"south":{"uv":[2,34],"uv_size":[0.5,0.25]},"west":{"uv":[34,2],"uv_size":[0.5,0.25]},"up":{"uv":[23,5],"uv_size":[0.5,0.5]},"down":{"uv":[6,23.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2016,2.1205,1.5898],"size":[0.4031,0.1514,0.0728],"pivot":[0.1713,2.2719,1.5898],"rotation":[-116.75,0,0],"uv":{"north":{"uv":[3,34],"uv_size":[0.5,0.25]},"east":{"uv":[54,17],"uv_size":[0.25,0.25]},"south":{"uv":[34,3],"uv_size":[0.5,0.25]},"west":{"uv":[18,54],"uv_size":[0.25,0.25]},"up":{"uv":[4,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,4.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2016,1.8922,1.3328],"size":[0.4031,0.1814,0.0806],"pivot":[0.1713,1.8922,1.4135],"rotation":[-116.25,0,0],"uv":{"north":{"uv":[5,34],"uv_size":[0.5,0.25]},"east":{"uv":[54,18],"uv_size":[0.25,0.25]},"south":{"uv":[34,5],"uv_size":[0.5,0.25]},"west":{"uv":[19,54],"uv_size":[0.25,0.25]},"up":{"uv":[6,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,6.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2016,3.4325,1.2671],"size":[0.4031,0.1008,0.383],"pivot":[0.1713,3.4829,1.4687],"rotation":[-88.75,0,0],"uv":{"north":{"uv":[7,34],"uv_size":[0.5,0.25]},"east":{"uv":[34,7],"uv_size":[0.5,0.25]},"south":{"uv":[8,34],"uv_size":[0.5,0.25]},"west":{"uv":[34,8],"uv_size":[0.5,0.25]},"up":{"uv":[23,6],"uv_size":[0.5,0.5]},"down":{"uv":[7,23.5],"uv_size":[0.5,-0.5]}}},{"origin":[-0.2016,3.5924,1.5147],"size":[0.4031,0.0931,0.0386],"pivot":[0.1713,3.6855,1.5147],"rotation":[-111.25,0,0],"uv":{"north":{"uv":[9,34],"uv_size":[0.5,0.25]},"east":{"uv":[54,19],"uv_size":[0.25,0.25]},"south":{"uv":[34,9],"uv_size":[0.5,0.25]},"west":{"uv":[20,54],"uv_size":[0.25,0.25]},"up":{"uv":[10,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,10.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2016,3.6251,1.5147],"size":[0.4031,0.06,0.366],"pivot":[0.1713,3.6855,1.5147],"rotation":[-86.25,0,0],"uv":{"north":{"uv":[11,34],"uv_size":[0.5,0.25]},"east":{"uv":[54,20],"uv_size":[0.25,0.25]},"south":{"uv":[34,11],"uv_size":[0.5,0.25]},"west":{"uv":[21,54],"uv_size":[0.25,0.25]},"up":{"uv":[12,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,12.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2016,3.3005,1.3618],"size":[0.4031,0.1008,0.0605],"pivot":[0.1713,3.3005,1.4223],"rotation":[-111.25,0,0],"uv":{"north":{"uv":[13,34],"uv_size":[0.5,0.25]},"east":{"uv":[54,21],"uv_size":[0.25,0.25]},"south":{"uv":[34,13],"uv_size":[0.5,0.25]},"west":{"uv":[22,54],"uv_size":[0.25,0.25]},"up":{"uv":[14,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,14.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2016,2.8521,1.5498],"size":[0.4031,0.1303,0.054],"pivot":[0.1713,2.9825,1.5498],"rotation":[-109.5,0,0],"uv":{"north":{"uv":[15,34],"uv_size":[0.5,0.25]},"east":{"uv":[54,22],"uv_size":[0.25,0.25]},"south":{"uv":[34,15],"uv_size":[0.5,0.25]},"west":{"uv":[23,54],"uv_size":[0.25,0.25]},"up":{"uv":[16,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,16.25],"uv_size":[0.5,-0.25]}}},{"origin":[-0.2016,2.6128,1.3682],"size":[0.4031,0.1279,0.0596],"pivot":[0.1713,2.6128,1.4279],"rotation":[-112,0,0],"uv":{"north":{"uv":[17,34],"uv_size":[0.5,0.25]},"east":{"uv":[54,23],"uv_size":[0.25,0.25]},"south":{"uv":[34,17],"uv_size":[0.5,0.25]},"west":{"uv":[24,54],"uv_size":[0.25,0.25]},"up":{"uv":[18,34],"uv_size":[0.5,0.25]},"down":{"uv":[34,18.25],"uv_size":[0.5,-0.25]}}}]},{"name":"group4","parent":"treasure_kn","pivot":[0.2606,0.8758,1.0275],"rotation":[12.5,0,0],"cubes":[{"origin":[-0.4504,0.7343,0.9965],"size":[0.925,0.283,0.062],"pivot":[0.2741,0.8758,1.0275],"rotation":[79.5,0,0],"uv":{"north":{"uv":[23,7],"uv_size":[1,0.25]},"east":{"uv":[54,24],"uv_size":[0.25,0.25]},"south":{"uv":[8,23],"uv_size":[1,0.25]},"west":{"uv":[25,54],"uv_size":[0.25,0.25]},"up":{"uv":[23,8],"uv_size":[1,0.25]},"down":{"uv":[9,23.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4504,0.7343,0.9965],"size":[0.925,0.283,0.062],"pivot":[0.2741,0.8758,1.0275],"rotation":[-10.5,0,0],"uv":{"north":{"uv":[23,9],"uv_size":[1,0.25]},"east":{"uv":[54,25],"uv_size":[0.25,0.25]},"south":{"uv":[10,23],"uv_size":[1,0.25]},"west":{"uv":[26,54],"uv_size":[0.25,0.25]},"up":{"uv":[23,10],"uv_size":[1,0.25]},"down":{"uv":[11,23.25],"uv_size":[1,-0.25]}}},{"origin":[-0.463,0.8051,0.9567],"size":[0.926,0.1415,0.1415],"pivot":[0.2626,0.8758,1.0275],"rotation":[-55.5,0,0],"uv":{"north":{"uv":[23,11],"uv_size":[1,0.25]},"east":{"uv":[54,26],"uv_size":[0.25,0.25]},"south":{"uv":[12,23],"uv_size":[1,0.25]},"west":{"uv":[27,54],"uv_size":[0.25,0.25]},"up":{"uv":[23,12],"uv_size":[1,0.25]},"down":{"uv":[13,23.25],"uv_size":[1,-0.25]}}},{"origin":[-0.4101,0.7976,0.8388],"size":[0.8375,0.1563,0.3773],"pivot":[-0.0679,0.8758,1.0275],"rotation":[-45,0,0],"uv":{"north":{"uv":[27,19],"uv_size":[0.75,0.25]},"east":{"uv":[19,34],"uv_size":[0.5,0.25]},"south":{"uv":[20,27],"uv_size":[0.75,0.25]},"west":{"uv":[34,19],"uv_size":[0.5,0.25]},"up":{"uv":[15,2],"uv_size":[0.75,0.5]},"down":{"uv":[4,15.5],"uv_size":[0.75,-0.5]}}},{"origin":[-0.4101,0.7976,0.8388],"size":[0.8375,0.1563,0.3773],"uv":{"north":{"uv":[27,20],"uv_size":[0.75,0.25]},"east":{"uv":[20,34],"uv_size":[0.5,0.25]},"south":{"uv":[21,27],"uv_size":[0.75,0.25]},"west":{"uv":[34,20],"uv_size":[0.5,0.25]},"up":{"uv":[5,15],"uv_size":[0.75,0.5]},"down":{"uv":[6,15.5],"uv_size":[0.75,-0.5]}}},{"origin":[-0.4101,0.6871,0.9494],"size":[0.8375,0.3773,0.1563],"pivot":[-0.0679,0.8758,1.0275],"rotation":[-45,0,0],"uv":{"north":{"uv":[15,6],"uv_size":[0.75,0.5]},"east":{"uv":[21,34],"uv_size":[0.25,0.5]},"south":{"uv":[15,7],"uv_size":[0.75,0.5]},"west":{"uv":[34,21],"uv_size":[0.25,0.5]},"up":{"uv":[27,21],"uv_size":[0.75,0.25]},"down":{"uv":[22,27.25],"uv_size":[0.75,-0.25]}}},{"origin":[-0.4101,0.6871,0.9494],"size":[0.8375,0.3773,0.1563],"uv":{"north":{"uv":[8,15],"uv_size":[0.75,0.5]},"east":{"uv":[22,34],"uv_size":[0.25,0.5]},"south":{"uv":[15,8],"uv_size":[0.75,0.5]},"west":{"uv":[34,22],"uv_size":[0.25,0.5]},"up":{"uv":[27,22],"uv_size":[0.75,0.25]},"down":{"uv":[23,27.25],"uv_size":[0.75,-0.25]}}}]},{"name":"group2","parent":"treasure_kn","pivot":[0,-0.9584,-0.2222],"cubes":[{"origin":[-0.0907,-1.2406,0.9872],"size":[0.1814,2.5397,0.7659],"uv":{"north":{"uv":[0,5],"uv_size":[0.25,2.5]},"east":{"uv":[0,0],"uv_size":[0.75,2.5]},"south":{"uv":[5,0],"uv_size":[0.25,2.5]},"west":{"uv":[1,0],"uv_size":[0.75,2.5]},"up":{"uv":[27,23],"uv_size":[0.25,0.75]},"down":{"uv":[24,27.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0907,-0.8375,0.6848],"size":[0.1814,2.1366,0.3023],"uv":{"north":{"uv":[2,6],"uv_size":[0.25,2.25]},"east":{"uv":[3,6],"uv_size":[0.25,2.25]},"south":{"uv":[4,6],"uv_size":[0.25,2.25]},"west":{"uv":[6,4],"uv_size":[0.25,2.25]},"up":{"uv":[54,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-1.2406,0.9872],"size":[0.1814,0.4636,0.1008],"pivot":[0,-1.2406,0.9872],"rotation":[39.75,0,0],"uv":{"north":{"uv":[23,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,23],"uv_size":[0.25,0.5]},"south":{"uv":[24,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,24],"uv_size":[0.25,0.5]},"up":{"uv":[54,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-1.2406,1.088],"size":[0.1814,0.4636,0.3225],"pivot":[0,-1.2406,0.9872],"rotation":[39.75,0,0],"uv":{"north":{"uv":[25,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,25],"uv_size":[0.25,0.5]},"south":{"uv":[26,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,26],"uv_size":[0.25,0.5]},"up":{"uv":[54,29],"uv_size":[0.25,0.25]},"down":{"uv":[30,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-0.6939,0.622],"size":[0.1814,0.4636,0.1008],"pivot":[0,-0.714,0.8638],"rotation":[57.25,0,0],"uv":{"north":{"uv":[27,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,27],"uv_size":[0.25,0.5]},"south":{"uv":[28,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,28],"uv_size":[0.25,0.5]},"up":{"uv":[54,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-0.7364,0.3261],"size":[0.1814,0.0806,0.0806],"pivot":[0,-0.6558,0.3261],"rotation":[79.75,0,0],"uv":{"north":{"uv":[54,31],"uv_size":[0.25,0.25]},"east":{"uv":[32,54],"uv_size":[0.25,0.25]},"south":{"uv":[54,32],"uv_size":[0.25,0.25]},"west":{"uv":[33,54],"uv_size":[0.25,0.25]},"up":{"uv":[54,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-0.8183,0.2397],"size":[0.1814,0.2419,0.1008],"pivot":[0,-0.5764,0.3405],"rotation":[104.75,0,0],"uv":{"north":{"uv":[54,34],"uv_size":[0.25,0.25]},"east":{"uv":[35,54],"uv_size":[0.25,0.25]},"south":{"uv":[54,35],"uv_size":[0.25,0.25]},"west":{"uv":[36,54],"uv_size":[0.25,0.25]},"up":{"uv":[54,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-0.8542,0.6],"size":[0.1814,0.2419,0.1008],"pivot":[0,-0.6123,0.6],"rotation":[139.75,0,0],"uv":{"north":{"uv":[54,37],"uv_size":[0.25,0.25]},"east":{"uv":[38,54],"uv_size":[0.25,0.25]},"south":{"uv":[54,38],"uv_size":[0.25,0.25]},"west":{"uv":[39,54],"uv_size":[0.25,0.25]},"up":{"uv":[54,39],"uv_size":[0.25,0.25]},"down":{"uv":[40,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-0.8542,0.4186],"size":[0.1814,0.383,0.262],"pivot":[0,-0.6123,0.6],"rotation":[139.75,0,0],"uv":{"north":{"uv":[29,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,29],"uv_size":[0.25,0.5]},"south":{"uv":[30,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,30],"uv_size":[0.25,0.5]},"up":{"uv":[54,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-0.6695,0.7563],"size":[0.1814,0.2419,0.1008],"pivot":[0,-0.4277,0.7563],"rotation":[172.25,0,0],"uv":{"north":{"uv":[54,41],"uv_size":[0.25,0.25]},"east":{"uv":[42,54],"uv_size":[0.25,0.25]},"south":{"uv":[54,42],"uv_size":[0.25,0.25]},"west":{"uv":[43,54],"uv_size":[0.25,0.25]},"up":{"uv":[54,43],"uv_size":[0.25,0.25]},"down":{"uv":[44,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-1.4982,0.7889],"size":[0.1814,1.3101,0.1008],"pivot":[0,-0.188,0.7889],"rotation":[-153,0,0],"uv":{"north":{"uv":[2,18],"uv_size":[0.25,1.25]},"east":{"uv":[3,18],"uv_size":[0.25,1.25]},"south":{"uv":[4,18],"uv_size":[0.25,1.25]},"west":{"uv":[18,4],"uv_size":[0.25,1.25]},"up":{"uv":[54,44],"uv_size":[0.25,0.25]},"down":{"uv":[45,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,0.1273,-0.1375],"size":[0.1814,1.1287,0.2419],"pivot":[0,0.9336,0.1043],"rotation":[-113.5,0,0],"uv":{"north":{"uv":[18,6],"uv_size":[0.25,1.25]},"east":{"uv":[7,18],"uv_size":[0.25,1.25]},"south":{"uv":[8,18],"uv_size":[0.25,1.25]},"west":{"uv":[10,18],"uv_size":[0.25,1.25]},"up":{"uv":[54,45],"uv_size":[0.25,0.25]},"down":{"uv":[46,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,1.3563,-0.2613],"size":[0.1814,0.645,0.2419],"pivot":[0,1.3563,-0.2613],"rotation":[-88.5,0,0],"uv":{"north":{"uv":[27,24],"uv_size":[0.25,0.75]},"east":{"uv":[25,27],"uv_size":[0.25,0.75]},"south":{"uv":[27,25],"uv_size":[0.25,0.75]},"west":{"uv":[26,27],"uv_size":[0.25,0.75]},"up":{"uv":[54,46],"uv_size":[0.25,0.25]},"down":{"uv":[47,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,1.4788,0.2976],"size":[0.1814,0.4031,0.1613],"pivot":[0,1.5595,0.2976],"rotation":[-20.25,0,0],"uv":{"north":{"uv":[31,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,31],"uv_size":[0.25,0.5]},"south":{"uv":[32,34],"uv_size":[0.25,0.5]},"west":{"uv":[34,32],"uv_size":[0.25,0.5]},"up":{"uv":[54,47],"uv_size":[0.25,0.25]},"down":{"uv":[48,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,2.0894,0.3136],"size":[0.1814,0.3225,0.1613],"pivot":[0,2.17,0.3136],"rotation":[34.75,0,0],"uv":{"north":{"uv":[54,48],"uv_size":[0.25,0.25]},"east":{"uv":[49,54],"uv_size":[0.25,0.25]},"south":{"uv":[54,49],"uv_size":[0.25,0.25]},"west":{"uv":[50,54],"uv_size":[0.25,0.25]},"up":{"uv":[54,50],"uv_size":[0.25,0.25]},"down":{"uv":[51,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0854,2.3688,0.1757],"size":[0.1707,0.8063,0.1613],"pivot":[0.0053,2.3688,0.1757],"rotation":[12.25,0,0],"uv":{"north":{"uv":[27,26],"uv_size":[0.25,0.75]},"east":{"uv":[27,27],"uv_size":[0.25,0.75]},"south":{"uv":[0,28],"uv_size":[0.25,0.75]},"west":{"uv":[28,0],"uv_size":[0.25,0.75]},"up":{"uv":[54,51],"uv_size":[0.25,0.25]},"down":{"uv":[52,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.096,3.1566,0.0047],"size":[0.1921,0.7256,0.1613],"pivot":[-0.0053,3.1566,0.0047],"rotation":[-7.75,0,0],"uv":{"north":{"uv":[1,28],"uv_size":[0.25,0.75]},"east":{"uv":[28,1],"uv_size":[0.25,0.75]},"south":{"uv":[2,28],"uv_size":[0.25,0.75]},"west":{"uv":[28,2],"uv_size":[0.25,0.75]},"up":{"uv":[54,52],"uv_size":[0.25,0.25]},"down":{"uv":[53,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.096,3.8756,0.1025],"size":[0.1921,0.3225,0.1613],"pivot":[-0.0053,3.8756,0.1025],"rotation":[-21.75,0,0],"uv":{"north":{"uv":[54,53],"uv_size":[0.25,0.25]},"east":{"uv":[54,54],"uv_size":[0.25,0.25]},"south":{"uv":[0,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,0],"uv_size":[0.25,0.25]},"up":{"uv":[1,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,3.9325,0.1625],"size":[0.1814,0.4838,0.262],"pivot":[0,4.1743,0.3439],"rotation":[-94.25,0,0],"uv":{"north":{"uv":[33,34],"uv_size":[0.25,0.5]},"east":{"uv":[34,33],"uv_size":[0.25,0.5]},"south":{"uv":[34,34],"uv_size":[0.25,0.5]},"west":{"uv":[0,35],"uv_size":[0.25,0.5]},"up":{"uv":[2,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,4.088,0.4183],"size":[0.1814,0.0806,0.5644],"pivot":[0,4.088,0.4183],"rotation":[-94.25,0,0],"uv":{"north":{"uv":[3,55],"uv_size":[0.25,0.25]},"east":{"uv":[35,0],"uv_size":[0.5,0.25]},"south":{"uv":[55,3],"uv_size":[0.25,0.25]},"west":{"uv":[1,35],"uv_size":[0.5,0.25]},"up":{"uv":[35,1],"uv_size":[0.25,0.5]},"down":{"uv":[2,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0907,3.4385,0.4569],"size":[0.1814,0.0806,0.7256],"pivot":[0,3.5192,0.4569],"rotation":[-104,0,0],"uv":{"north":{"uv":[4,55],"uv_size":[0.25,0.25]},"east":{"uv":[3,28],"uv_size":[0.75,0.25]},"south":{"uv":[55,4],"uv_size":[0.25,0.25]},"west":{"uv":[28,3],"uv_size":[0.75,0.25]},"up":{"uv":[4,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,4.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0907,2.9116,0.2525],"size":[0.1814,0.0806,0.0806],"pivot":[0,2.9922,0.2525],"rotation":[-79,0,0],"uv":{"north":{"uv":[5,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,5],"uv_size":[0.25,0.25]},"south":{"uv":[6,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,6],"uv_size":[0.25,0.25]},"up":{"uv":[7,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0854,3.8539,0.1011],"size":[0.1707,0.3225,0.1613],"pivot":[0.0053,3.8539,0.2623],"rotation":[16,0,0],"uv":{"north":{"uv":[8,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,8],"uv_size":[0.25,0.25]},"south":{"uv":[9,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,9],"uv_size":[0.25,0.25]},"up":{"uv":[10,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,4.1639,0.0323],"size":[0.1814,0.3225,0.1411],"pivot":[0,4.1639,0.1734],"rotation":[48.5,0,0],"uv":{"north":{"uv":[11,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,11],"uv_size":[0.25,0.25]},"south":{"uv":[12,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,12],"uv_size":[0.25,0.25]},"up":{"uv":[13,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,4.0551,-0.2294],"size":[0.1814,0.3225,0.1613],"pivot":[0,4.3776,-0.0681],"rotation":[94,0,0],"uv":{"north":{"uv":[14,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,15],"uv_size":[0.25,0.25]},"up":{"uv":[16,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,3.9167,0.1842],"size":[0.1814,0.3225,0.2419],"pivot":[0,4.2392,0.2648],"rotation":[119,0,0],"uv":{"north":{"uv":[17,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,4.0731,0.5469],"size":[0.1814,0.3225,0.1613],"pivot":[0,4.3956,0.5469],"rotation":[143,0,0],"uv":{"north":{"uv":[20,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,20],"uv_size":[0.25,0.25]},"south":{"uv":[21,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,21],"uv_size":[0.25,0.25]},"up":{"uv":[22,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,22.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,4.3307,0.741],"size":[0.1814,0.3225,0.1613],"pivot":[0,4.6532,0.741],"rotation":[166.5,0,0],"uv":{"north":{"uv":[23,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,23],"uv_size":[0.25,0.25]},"south":{"uv":[24,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,24],"uv_size":[0.25,0.25]},"up":{"uv":[25,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,25.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,4.6442,0.8163],"size":[0.1814,0.3225,0.1613],"pivot":[0,4.9667,0.8163],"rotation":[-169.25,0,0],"uv":{"north":{"uv":[26,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,26],"uv_size":[0.25,0.25]},"south":{"uv":[27,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,27],"uv_size":[0.25,0.25]},"up":{"uv":[28,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,28.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,4.9611,0.7561],"size":[0.1814,0.3225,0.1613],"pivot":[0,5.2836,0.7561],"rotation":[-144.5,0,0],"uv":{"north":{"uv":[29,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,29],"uv_size":[0.25,0.25]},"south":{"uv":[30,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,30],"uv_size":[0.25,0.25]},"up":{"uv":[31,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,31.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,5.2236,0.5688],"size":[0.1814,0.3225,0.1613],"pivot":[0,5.5461,0.5688],"rotation":[-121.5,0,0],"uv":{"north":{"uv":[32,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,32],"uv_size":[0.25,0.25]},"south":{"uv":[33,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,33],"uv_size":[0.25,0.25]},"up":{"uv":[34,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,34.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.096,5.3921,0.2939],"size":[0.1921,0.3225,0.1613],"pivot":[-0.0053,5.7146,0.2939],"rotation":[-96.5,0,0],"uv":{"north":{"uv":[35,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,35],"uv_size":[0.25,0.25]},"south":{"uv":[36,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,36],"uv_size":[0.25,0.25]},"up":{"uv":[37,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,37.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,5.4287,-0.0266],"size":[0.1814,0.3225,0.1613],"pivot":[0,5.7511,-0.0266],"rotation":[-71.5,0,0],"uv":{"north":{"uv":[38,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,5.3263,-0.3324],"size":[0.1814,0.3225,0.1613],"pivot":[0,5.6488,-0.3324],"rotation":[-49,0,0],"uv":{"north":{"uv":[41,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,41],"uv_size":[0.25,0.25]},"south":{"uv":[42,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,42],"uv_size":[0.25,0.25]},"up":{"uv":[43,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,5.1147,-0.5758],"size":[0.1814,0.3225,0.1613],"pivot":[0,5.4372,-0.5758],"rotation":[-24,0,0],"uv":{"north":{"uv":[44,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,44],"uv_size":[0.25,0.25]},"south":{"uv":[45,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,45],"uv_size":[0.25,0.25]},"up":{"uv":[46,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,46.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,4.8201,-0.707],"size":[0.1814,0.3225,0.1613],"pivot":[0,5.1426,-0.707],"rotation":[-1.5,0,0],"uv":{"north":{"uv":[47,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,47],"uv_size":[0.25,0.25]},"south":{"uv":[48,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,48],"uv_size":[0.25,0.25]},"up":{"uv":[49,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,4.4977,-0.7154],"size":[0.1814,0.3225,0.1613],"pivot":[0,4.8202,-0.7154],"rotation":[25,0,0],"uv":{"north":{"uv":[50,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,50],"uv_size":[0.25,0.25]},"south":{"uv":[51,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,51],"uv_size":[0.25,0.25]},"up":{"uv":[52,55],"uv_size":[0.25,0.25]},"down":{"uv":[55,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,4.2054,-0.5388],"size":[0.1814,0.3225,0.1209],"pivot":[0,4.5279,-0.5791],"rotation":[45,0,0],"uv":{"north":{"uv":[53,55],"uv_size":[0.25,0.25]},"east":{"uv":[55,53],"uv_size":[0.25,0.25]},"south":{"uv":[54,55],"uv_size":[0.25,0.25]},"west":{"uv":[55,54],"uv_size":[0.25,0.25]},"up":{"uv":[55,55],"uv_size":[0.25,0.25]},"down":{"uv":[0,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,4.3776,-0.2092],"size":[0.1814,0.5039,0.1411],"pivot":[0,4.3776,-0.0681],"rotation":[68.5,0,0],"uv":{"north":{"uv":[35,2],"uv_size":[0.25,0.5]},"east":{"uv":[3,35],"uv_size":[0.25,0.5]},"south":{"uv":[35,3],"uv_size":[0.25,0.5]},"west":{"uv":[4,35],"uv_size":[0.25,0.5]},"up":{"uv":[56,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,4.3719,-0.4387],"size":[0.1814,0.3225,0.1613],"pivot":[0,4.3719,-0.4387],"rotation":[106,0,0],"uv":{"north":{"uv":[56,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1109,1.241,-0.3959],"size":[0.2217,0.3225,0.1613],"pivot":[0,1.7119,-0.5344],"rotation":[165,0,0],"uv":{"north":{"uv":[56,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1109,1.4573,-0.4788],"size":[0.2217,0.3225,0.1613],"pivot":[0,1.7119,-0.5344],"rotation":[-171.75,0,0],"uv":{"north":{"uv":[56,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1109,1.669,-0.4725],"size":[0.2217,0.3225,0.1613],"pivot":[0,1.7119,-0.5344],"rotation":[-143.5,0,0],"uv":{"north":{"uv":[56,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1109,1.8848,-0.3824],"size":[0.2217,0.1814,0.1613],"pivot":[0,1.7119,-0.5344],"rotation":[-121,0,0],"uv":{"north":{"uv":[56,13],"uv_size":[0.25,0.25]},"east":{"uv":[14,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,14],"uv_size":[0.25,0.25]},"west":{"uv":[15,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1109,3.8835,-1.257],"size":[0.2217,0.3225,0.1613],"pivot":[0,3.8835,-1.0958],"rotation":[-168.75,0,0],"uv":{"north":{"uv":[56,16],"uv_size":[0.25,0.25]},"east":{"uv":[17,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,17],"uv_size":[0.25,0.25]},"west":{"uv":[18,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1109,3.5672,-1.1941],"size":[0.2217,0.262,0.1613],"pivot":[0,3.5672,-1.0329],"rotation":[-146.25,0,0],"uv":{"north":{"uv":[56,19],"uv_size":[0.25,0.25]},"east":{"uv":[20,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,20],"uv_size":[0.25,0.25]},"west":{"uv":[21,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1109,4.1919,-1.1627],"size":[0.2217,0.3225,0.1613],"pivot":[0,4.1919,-1.0015],"rotation":[163,0,0],"uv":{"north":{"uv":[56,22],"uv_size":[0.25,0.25]},"east":{"uv":[23,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,23],"uv_size":[0.25,0.25]},"west":{"uv":[24,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1109,4.1016,-0.9164],"size":[0.2217,0.3225,0.1613],"pivot":[0,4.2629,-0.8358],"rotation":[139.75,0,0],"uv":{"north":{"uv":[56,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1109,2.876,-0.7507],"size":[0.2217,0.262,0.1613],"pivot":[0,2.6877,-0.8901],"rotation":[-123.25,0,0],"uv":{"north":{"uv":[56,28],"uv_size":[0.25,0.25]},"east":{"uv":[29,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,29],"uv_size":[0.25,0.25]},"west":{"uv":[30,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1109,2.6542,-0.8456],"size":[0.2217,0.3225,0.1613],"pivot":[0,2.6877,-0.8901],"rotation":[-145.75,0,0],"uv":{"north":{"uv":[56,31],"uv_size":[0.25,0.25]},"east":{"uv":[32,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,32],"uv_size":[0.25,0.25]},"west":{"uv":[33,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1109,2.2091,-0.7698],"size":[0.2217,0.3225,0.1613],"pivot":[0,2.6877,-0.8901],"rotation":[162.75,0,0],"uv":{"north":{"uv":[56,34],"uv_size":[0.25,0.25]},"east":{"uv":[35,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,35],"uv_size":[0.25,0.25]},"west":{"uv":[36,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1109,2.8691,-1.2023],"size":[0.2217,0.3628,0.1613],"pivot":[0,3.1513,-1.0411],"rotation":[140.25,0,0],"uv":{"north":{"uv":[56,37],"uv_size":[0.25,0.25]},"east":{"uv":[38,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,38],"uv_size":[0.25,0.25]},"west":{"uv":[39,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,39],"uv_size":[0.25,0.25]},"down":{"uv":[40,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.1109,2.4331,-0.8542],"size":[0.2217,0.3225,0.1613],"pivot":[0,2.6877,-0.8901],"rotation":[-174,0,0],"uv":{"north":{"uv":[56,40],"uv_size":[0.25,0.25]},"east":{"uv":[41,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,41],"uv_size":[0.25,0.25]},"west":{"uv":[42,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,42],"uv_size":[0.25,0.25]},"down":{"uv":[43,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,3.1754,-0.9787],"size":[0.1814,0.1613,0.2016],"pivot":[0,3.3165,-0.8981],"rotation":[96,0,0],"uv":{"north":{"uv":[56,43],"uv_size":[0.25,0.25]},"east":{"uv":[44,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,44],"uv_size":[0.25,0.25]},"west":{"uv":[45,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,45],"uv_size":[0.25,0.25]},"down":{"uv":[46,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,2.1883,-0.7246],"size":[0.1814,0.1411,0.1411],"pivot":[0,2.2488,-0.644],"rotation":[113.5,0,0],"uv":{"north":{"uv":[56,46],"uv_size":[0.25,0.25]},"east":{"uv":[47,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,47],"uv_size":[0.25,0.25]},"west":{"uv":[48,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,48],"uv_size":[0.25,0.25]},"down":{"uv":[49,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,1.7814,0.4092],"size":[0.1814,0.4031,0.1613],"pivot":[0,1.862,0.4092],"rotation":[17.25,0,0],"uv":{"north":{"uv":[35,4],"uv_size":[0.25,0.5]},"east":{"uv":[5,35],"uv_size":[0.25,0.5]},"south":{"uv":[35,5],"uv_size":[0.25,0.5]},"west":{"uv":[6,35],"uv_size":[0.25,0.5]},"up":{"uv":[56,49],"uv_size":[0.25,0.25]},"down":{"uv":[50,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,1.3642,0.0409],"size":[0.1814,0.3225,0.2419],"pivot":[0,1.3642,0.0409],"rotation":[-52.75,0,0],"uv":{"north":{"uv":[56,50],"uv_size":[0.25,0.25]},"east":{"uv":[51,56],"uv_size":[0.25,0.25]},"south":{"uv":[56,51],"uv_size":[0.25,0.25]},"west":{"uv":[52,56],"uv_size":[0.25,0.25]},"up":{"uv":[56,52],"uv_size":[0.25,0.25]},"down":{"uv":[53,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-1.4982,0.5471],"size":[0.1814,1.3101,0.2419],"pivot":[0,-0.188,0.7889],"rotation":[-153,0,0],"uv":{"north":{"uv":[11,18],"uv_size":[0.25,1.25]},"east":{"uv":[18,11],"uv_size":[0.25,1.25]},"south":{"uv":[12,18],"uv_size":[0.25,1.25]},"west":{"uv":[13,18],"uv_size":[0.25,1.25]},"up":{"uv":[56,53],"uv_size":[0.25,0.25]},"down":{"uv":[54,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-1.2406,1.35],"size":[0.1814,0.2419,0.4031],"pivot":[0,-1.2406,1.7531],"rotation":[50,0,0],"uv":{"north":{"uv":[56,54],"uv_size":[0.25,0.25]},"east":{"uv":[35,6],"uv_size":[0.5,0.25]},"south":{"uv":[55,56],"uv_size":[0.25,0.25]},"west":{"uv":[7,35],"uv_size":[0.5,0.25]},"up":{"uv":[35,7],"uv_size":[0.25,0.5]},"down":{"uv":[8,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0907,-1.6236,1.35],"size":[0.1814,0.0806,0.383],"pivot":[0,-1.6236,1.7531],"rotation":[50,0,0],"uv":{"north":{"uv":[56,55],"uv_size":[0.25,0.25]},"east":{"uv":[35,8],"uv_size":[0.5,0.25]},"south":{"uv":[56,56],"uv_size":[0.25,0.25]},"west":{"uv":[9,35],"uv_size":[0.5,0.25]},"up":{"uv":[35,9],"uv_size":[0.25,0.5]},"down":{"uv":[10,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0907,-1.639,1.7402],"size":[0.1814,0.057,0.057],"pivot":[0,-1.639,1.7402],"rotation":[95,0,0],"uv":{"north":{"uv":[0,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,0],"uv_size":[0.25,0.25]},"south":{"uv":[1,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,1],"uv_size":[0.25,0.25]},"up":{"uv":[2,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-2.0327,1.7143],"size":[0.1814,0.057,0.057],"pivot":[0,-2.0327,1.7143],"rotation":[95,0,0],"uv":{"north":{"uv":[3,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-2.411,1.7013],"size":[0.1814,0.057,0.057],"pivot":[0,-2.411,1.7013],"rotation":[95,0,0],"uv":{"north":{"uv":[6,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,6],"uv_size":[0.25,0.25]},"south":{"uv":[7,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,7],"uv_size":[0.25,0.25]},"up":{"uv":[8,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,8.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-2.7892,1.6883],"size":[0.1814,0.057,0.057],"pivot":[0,-2.7892,1.6883],"rotation":[95,0,0],"uv":{"north":{"uv":[9,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,9],"uv_size":[0.25,0.25]},"south":{"uv":[10,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,10],"uv_size":[0.25,0.25]},"up":{"uv":[11,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,11.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-3.1675,1.6754],"size":[0.1814,0.057,0.057],"pivot":[0,-3.1675,1.6754],"rotation":[95,0,0],"uv":{"north":{"uv":[12,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,12],"uv_size":[0.25,0.25]},"south":{"uv":[13,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,13],"uv_size":[0.25,0.25]},"up":{"uv":[14,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,14.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-1.7296,1.5459],"size":[0.1814,0.0806,0.0806],"uv":{"north":{"uv":[15,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,15],"uv_size":[0.25,0.25]},"south":{"uv":[16,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,16],"uv_size":[0.25,0.25]},"up":{"uv":[17,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,17.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-2.1126,1.5258],"size":[0.1814,0.0806,0.1008],"uv":{"north":{"uv":[18,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,18],"uv_size":[0.25,0.25]},"south":{"uv":[19,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,19],"uv_size":[0.25,0.25]},"up":{"uv":[20,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-2.4955,1.5258],"size":[0.1814,0.0605,0.0605],"uv":{"north":{"uv":[21,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,21],"uv_size":[0.25,0.25]},"south":{"uv":[22,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,22],"uv_size":[0.25,0.25]},"up":{"uv":[23,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-2.8785,1.5258],"size":[0.1814,0.0605,0.0605],"uv":{"north":{"uv":[24,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-3.2413,1.5258],"size":[0.1814,0.0605,0.0605],"uv":{"north":{"uv":[27,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,27],"uv_size":[0.25,0.25]},"south":{"uv":[28,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,28],"uv_size":[0.25,0.25]},"up":{"uv":[29,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-1.543,1.4709],"size":[0.1814,0.1209,0.1411],"pivot":[0,-1.6236,1.7531],"rotation":[50,0,0],"uv":{"north":{"uv":[30,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,30],"uv_size":[0.25,0.25]},"south":{"uv":[31,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,31],"uv_size":[0.25,0.25]},"up":{"uv":[32,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,32.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-1.9259,1.4911],"size":[0.1814,0.1008,0.1209],"pivot":[0,-2.0267,1.7531],"rotation":[50,0,0],"uv":{"north":{"uv":[33,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,33],"uv_size":[0.25,0.25]},"south":{"uv":[34,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,34],"uv_size":[0.25,0.25]},"up":{"uv":[35,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,35.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-2.3089,1.5112],"size":[0.1814,0.0806,0.1008],"pivot":[0,-2.4298,1.7531],"rotation":[50,0,0],"uv":{"north":{"uv":[36,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,36],"uv_size":[0.25,0.25]},"south":{"uv":[37,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,37],"uv_size":[0.25,0.25]},"up":{"uv":[38,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,38.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-2.6717,1.5314],"size":[0.1814,0.0605,0.0806],"pivot":[0,-2.8128,1.7531],"rotation":[50,0,0],"uv":{"north":{"uv":[39,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,39],"uv_size":[0.25,0.25]},"south":{"uv":[40,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,40],"uv_size":[0.25,0.25]},"up":{"uv":[41,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-3.0345,1.5314],"size":[0.1814,0.0605,0.0806],"pivot":[0,-3.1756,1.7531],"rotation":[50,0,0],"uv":{"north":{"uv":[42,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,42],"uv_size":[0.25,0.25]},"south":{"uv":[43,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,43],"uv_size":[0.25,0.25]},"up":{"uv":[44,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-1.9864,1.35],"size":[0.1814,0.0806,0.3427],"pivot":[0,-1.9864,1.7531],"rotation":[50,0,0],"uv":{"north":{"uv":[45,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,45],"uv_size":[0.25,0.25]},"south":{"uv":[46,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,46],"uv_size":[0.25,0.25]},"up":{"uv":[47,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,47.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-2.3492,1.35],"size":[0.1814,0.0806,0.3225],"pivot":[0,-2.3492,1.7531],"rotation":[50,0,0],"uv":{"north":{"uv":[48,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,48],"uv_size":[0.25,0.25]},"south":{"uv":[49,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,49],"uv_size":[0.25,0.25]},"up":{"uv":[50,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-2.712,1.35],"size":[0.1814,0.0806,0.3024],"pivot":[0,-2.712,1.7531],"rotation":[50,0,0],"uv":{"north":{"uv":[51,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,51],"uv_size":[0.25,0.25]},"south":{"uv":[52,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,52],"uv_size":[0.25,0.25]},"up":{"uv":[53,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-3.0748,1.4306],"size":[0.1814,0.0806,0.2016],"pivot":[0,-3.0748,1.7531],"rotation":[50,0,0],"uv":{"north":{"uv":[54,57],"uv_size":[0.25,0.25]},"east":{"uv":[57,54],"uv_size":[0.25,0.25]},"south":{"uv":[55,57],"uv_size":[0.25,0.25]},"west":{"uv":[57,55],"uv_size":[0.25,0.25]},"up":{"uv":[56,57],"uv_size":[0.25,0.25]},"down":{"uv":[57,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-3.2562,1.1283],"size":[0.1814,2.0156,0.383],"uv":{"north":{"uv":[5,9],"uv_size":[0.25,2]},"east":{"uv":[4,0],"uv_size":[0.5,2]},"south":{"uv":[9,7],"uv_size":[0.25,2]},"west":{"uv":[2,4],"uv_size":[0.5,2]},"up":{"uv":[35,10],"uv_size":[0.25,0.5]},"down":{"uv":[11,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0403,-3.6594,0.2213],"size":[0.0806,1.6327,0.9675],"uv":{"north":{"uv":[11,5],"uv_size":[0.25,1.75]},"east":{"uv":[2,0],"uv_size":[1,1.75]},"south":{"uv":[6,11],"uv_size":[0.25,1.75]},"west":{"uv":[2,2],"uv_size":[1,1.75]},"up":{"uv":[23,13],"uv_size":[0.25,1]},"down":{"uv":[14,24],"uv_size":[0.25,-1]}}},{"origin":[-0.0605,-2.1678,0.5437],"size":[0.121,1.4311,0.645],"uv":{"north":{"uv":[9,15],"uv_size":[0.25,1.5]},"east":{"uv":[1,3],"uv_size":[0.75,1.5]},"south":{"uv":[15,9],"uv_size":[0.25,1.5]},"west":{"uv":[3,2],"uv_size":[0.75,1.5]},"up":{"uv":[5,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,5.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0605,-1.9259,0.4582],"size":[0.0855,1.1892,0.0855],"pivot":[-0.0605,-1.4926,0.5437],"rotation":[0,-45,0],"uv":{"north":{"uv":[18,13],"uv_size":[0.25,1.25]},"east":{"uv":[18,15],"uv_size":[0.25,1.25]},"south":{"uv":[16,18],"uv_size":[0.25,1.25]},"west":{"uv":[17,18],"uv_size":[0.25,1.25]},"up":{"uv":[57,57],"uv_size":[0.25,0.25]},"down":{"uv":[0,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0606,-2.5107,0.2584],"size":[0.1212,0.0577,0.9028],"pivot":[0.0001,-2.5107,1.1613],"rotation":[-29.25,0,0],"uv":{"north":{"uv":[58,0],"uv_size":[0.25,0.25]},"east":{"uv":[23,14],"uv_size":[1,0.25]},"south":{"uv":[1,58],"uv_size":[0.25,0.25]},"west":{"uv":[15,23],"uv_size":[1,0.25]},"up":{"uv":[23,15],"uv_size":[0.25,1]},"down":{"uv":[16,24],"uv_size":[0.25,-1]}}},{"origin":[-0.0605,-2.1275,0.3422],"size":[0.1209,0.2419,0.9272],"pivot":[0,-2.1678,0.5437],"rotation":[-35,0,0],"uv":{"north":{"uv":[58,1],"uv_size":[0.25,0.25]},"east":{"uv":[23,16],"uv_size":[1,0.25]},"south":{"uv":[2,58],"uv_size":[0.25,0.25]},"west":{"uv":[17,23],"uv_size":[1,0.25]},"up":{"uv":[23,17],"uv_size":[0.25,1]},"down":{"uv":[18,24],"uv_size":[0.25,-1]}}},{"origin":[-0.025,-2.1015,0.3856],"size":[0.0855,0.3024,0.0855],"pivot":[0.0605,-1.9201,0.4711],"rotation":[-44.7191,35.3963,-29.8376],"uv":{"north":{"uv":[58,2],"uv_size":[0.25,0.25]},"east":{"uv":[3,58],"uv_size":[0.25,0.25]},"south":{"uv":[58,3],"uv_size":[0.25,0.25]},"west":{"uv":[4,58],"uv_size":[0.25,0.25]},"up":{"uv":[58,4],"uv_size":[0.25,0.25]},"down":{"uv":[5,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0403,-5.2719,0.2213],"size":[0.0806,1.6125,0.9675],"pivot":[0,-3.6594,0.2213],"rotation":[5.5,0,0],"uv":{"north":{"uv":[11,15],"uv_size":[0.25,1.5]},"east":{"uv":[0,3],"uv_size":[1,1.5]},"south":{"uv":[12,15],"uv_size":[0.25,1.5]},"west":{"uv":[3,0],"uv_size":[1,1.5]},"up":{"uv":[23,18],"uv_size":[0.25,1]},"down":{"uv":[19,24],"uv_size":[0.25,-1]}}},{"origin":[-0.096,-0.4987,-6.0867],"size":[0.192,1.456,6.2773],"pivot":[3.096,1.064,0.1693],"rotation":[88.5,0,0],"uv":{"east":{"uv":[256,256],"uv_size":[-256,-71.5]},"west":{"uv":[0,256],"uv_size":[256,-71.5]}}},{"origin":[-0.0403,-6.2118,0.3758],"size":[0.0806,0.9473,0.9675],"pivot":[0,-5.2644,0.3758],"rotation":[11.25,0,0],"uv":{"north":{"uv":[23,19],"uv_size":[0.25,1]},"east":{"uv":[4,2],"uv_size":[1,1]},"south":{"uv":[20,23],"uv_size":[0.25,1]},"west":{"uv":[3,4],"uv_size":[1,1]},"up":{"uv":[23,20],"uv_size":[0.25,1]},"down":{"uv":[21,24],"uv_size":[0.25,-1]}}},{"origin":[-0.0403,-7.2014,0.5606],"size":[0.0805,1.0078,0.3427],"pivot":[-0.0001,-6.1936,0.5606],"rotation":[35.75,0,0],"uv":{"north":{"uv":[23,21],"uv_size":[0.25,1]},"east":{"uv":[22,23],"uv_size":[0.25,1]},"south":{"uv":[23,22],"uv_size":[0.25,1]},"west":{"uv":[23,23],"uv_size":[0.25,1]},"up":{"uv":[58,5],"uv_size":[0.25,0.25]},"down":{"uv":[6,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[0,-3.6795,0.1205],"size":[0,1.6528,0.1008],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.75]},"east":{"uv":[7,11],"uv_size":[0.25,1.75]},"south":{"uv":[0,0],"uv_size":[0,1.75]},"west":{"uv":[8,11],"uv_size":[0.25,1.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,-5.2719,0.119],"size":[0,1.6021,0.1022],"pivot":[0,-3.6594,0.2213],"rotation":[5.5,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.5]},"east":{"uv":[15,13],"uv_size":[0.25,1.5]},"south":{"uv":[0,0],"uv_size":[0,1.5]},"west":{"uv":[14,15],"uv_size":[0.25,1.5]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,-6.2319,0.2755],"size":[0,0.9776,0.1003],"pivot":[0,-5.2644,0.3758],"rotation":[11.25,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,1]},"east":{"uv":[0,24],"uv_size":[0.25,1]},"south":{"uv":[0,0],"uv_size":[0,1]},"west":{"uv":[24,0],"uv_size":[0.25,1]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,-7.1677,0.4606],"size":[0,0.9976,0.1001],"pivot":[0,-6.1936,0.5606],"rotation":[35.75,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,1]},"east":{"uv":[1,24],"uv_size":[0.25,1]},"south":{"uv":[0,0],"uv_size":[0,1]},"west":{"uv":[24,1],"uv_size":[0.25,1]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0403,-6.8789,0.9033],"size":[0.0806,0.6853,0.2419],"pivot":[0,-6.1936,0.5606],"rotation":[35.75,0,0],"uv":{"north":{"uv":[6,28],"uv_size":[0.25,0.75]},"east":{"uv":[28,6],"uv_size":[0.25,0.75]},"south":{"uv":[7,28],"uv_size":[0.25,0.75]},"west":{"uv":[28,7],"uv_size":[0.25,0.75]},"up":{"uv":[58,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0906,-4.0625,1.2895],"size":[0.1812,0.8063,0.2217],"uv":{"north":{"uv":[8,28],"uv_size":[0.25,0.75]},"east":{"uv":[28,8],"uv_size":[0.25,0.75]},"south":{"uv":[9,28],"uv_size":[0.25,0.75]},"west":{"uv":[28,9],"uv_size":[0.25,0.75]},"up":{"uv":[58,7],"uv_size":[0.25,0.25]},"down":{"uv":[8,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-2.2887,0.9872],"size":[0.1814,1.1287,0.2419],"pivot":[0,-1.2406,0.9872],"rotation":[-4,0,0],"uv":{"north":{"uv":[18,17],"uv_size":[0.25,1.25]},"east":{"uv":[19,0],"uv_size":[0.25,1.25]},"south":{"uv":[19,2],"uv_size":[0.25,1.25]},"west":{"uv":[19,4],"uv_size":[0.25,1.25]},"up":{"uv":[58,8],"uv_size":[0.25,0.25]},"down":{"uv":[9,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-1.4819,0.9703],"size":[0.1814,0.4031,0.1209],"pivot":[0,-1.4819,0.9703],"rotation":[13.5,0,0],"uv":{"north":{"uv":[35,11],"uv_size":[0.25,0.5]},"east":{"uv":[12,35],"uv_size":[0.25,0.5]},"south":{"uv":[35,12],"uv_size":[0.25,0.5]},"west":{"uv":[13,35],"uv_size":[0.25,0.5]},"up":{"uv":[58,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-2.4383,1.0463],"size":[0.1814,0.2419,2.318],"pivot":[0,-2.4383,1.0463],"rotation":[-85.25,0,0],"uv":{"north":{"uv":[58,10],"uv_size":[0.25,0.25]},"east":{"uv":[7,0],"uv_size":[2.25,0.25]},"south":{"uv":[11,58],"uv_size":[0.25,0.25]},"west":{"uv":[7,1],"uv_size":[2.25,0.25]},"up":{"uv":[5,6],"uv_size":[0.25,2.25]},"down":{"uv":[7,6.25],"uv_size":[0.25,-2.25]}}},{"origin":[0.0706,-3.7546,-0.0167],"size":[0.0202,0.1613,2.5598],"pivot":[0.0907,-3.5933,1.1423],"rotation":[-84.9546,19.6794,1.703],"uv":{"north":{"uv":[58,11],"uv_size":[0.25,0.25]},"east":{"uv":[3,5],"uv_size":[2.5,0.25]},"south":{"uv":[12,58],"uv_size":[0.25,0.25]},"west":{"uv":[5,3],"uv_size":[2.5,0.25]},"up":{"uv":[1,5],"uv_size":[0.25,2.5]},"down":{"uv":[6,2.5],"uv_size":[0.25,-2.5]}}},{"origin":[0.1047,-3.5367,2.4735],"size":[0.0202,0.0866,0.3092],"pivot":[-0.7924,-3.4501,1.3818],"rotation":[-84.9546,19.6794,1.703],"uv":{"north":{"uv":[58,11],"uv_size":[0.25,0.25]},"east":{"uv":[3,5],"uv_size":[2.5,0.25]},"south":{"uv":[12,58],"uv_size":[0.25,0.25]},"west":{"uv":[5,3],"uv_size":[2.5,0.25]},"up":{"uv":[1,5],"uv_size":[0.25,2.5]},"down":{"uv":[6,2.5],"uv_size":[0.25,-2.5]}}},{"origin":[-0.0907,-2.4383,3.3643],"size":[0.1814,0.1209,0.2419],"pivot":[0,-2.4383,1.0463],"rotation":[-85.25,0,0],"uv":{"north":{"uv":[58,12],"uv_size":[0.25,0.25]},"east":{"uv":[13,58],"uv_size":[0.25,0.25]},"south":{"uv":[58,13],"uv_size":[0.25,0.25]},"west":{"uv":[14,58],"uv_size":[0.25,0.25]},"up":{"uv":[58,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0403,-4.7483,1.198],"size":[0.0806,0.1613,2.2978],"pivot":[0.0101,-4.7483,1.2383],"rotation":[-92.25,0,0],"uv":{"north":{"uv":[58,15],"uv_size":[0.25,0.25]},"east":{"uv":[7,2],"uv_size":[2.25,0.25]},"south":{"uv":[16,58],"uv_size":[0.25,0.25]},"west":{"uv":[6,7],"uv_size":[2.25,0.25]},"up":{"uv":[0,8],"uv_size":[0.25,2.25]},"down":{"uv":[1,10.25],"uv_size":[0.25,-2.25]}}},{"origin":[-0.0403,-7.0041,0.9884],"size":[0.0806,0.1814,0.1613],"pivot":[0.0101,-7.0041,1.1496],"rotation":[-137.25,0,0],"uv":{"north":{"uv":[58,17],"uv_size":[0.25,0.25]},"east":{"uv":[18,58],"uv_size":[0.25,0.25]},"south":{"uv":[58,18],"uv_size":[0.25,0.25]},"west":{"uv":[19,58],"uv_size":[0.25,0.25]},"up":{"uv":[58,19],"uv_size":[0.25,0.25]},"down":{"uv":[20,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[0,-7.0444,1.1496],"size":[0,0.3024,0.1008],"pivot":[0.0101,-7.0041,1.1496],"rotation":[-137.25,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[58,20],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[21,58],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0403,-6.8227,1.0988],"size":[0.0806,0.0878,0.0508],"pivot":[0.0101,-7.0041,1.1496],"rotation":[-137.25,0,0],"uv":{"north":{"uv":[58,21],"uv_size":[0.25,0.25]},"east":{"uv":[22,58],"uv_size":[0.25,0.25]},"south":{"uv":[58,22],"uv_size":[0.25,0.25]},"west":{"uv":[23,58],"uv_size":[0.25,0.25]},"up":{"uv":[58,23],"uv_size":[0.25,0.25]},"down":{"uv":[24,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0406,-7.27,-0.6852],"size":[0.0812,0.2425,2.0767],"inflate":0.001,"pivot":[0.0101,-7.0278,1.3912],"rotation":[-98.75,0,0],"uv":{"north":{"uv":[58,24],"uv_size":[0.25,0.25]},"east":{"uv":[10,2],"uv_size":[2,0.25]},"south":{"uv":[25,58],"uv_size":[0.25,0.25]},"west":{"uv":[10,3],"uv_size":[2,0.25]},"up":{"uv":[3,10],"uv_size":[0.25,2]},"down":{"uv":[10,8],"uv_size":[0.25,-2]}}},{"origin":[-0.0403,-7.3503,-0.6849],"size":[0.0806,0.0806,0.7055],"pivot":[0.0101,-7.0278,1.3912],"rotation":[-98.75,0,0],"uv":{"north":{"uv":[58,25],"uv_size":[0.25,0.25]},"east":{"uv":[10,28],"uv_size":[0.75,0.25]},"south":{"uv":[26,58],"uv_size":[0.25,0.25]},"west":{"uv":[28,10],"uv_size":[0.75,0.25]},"up":{"uv":[11,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,11.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0403,-7.1085,1.3912],"size":[0.0806,0.0806,0.1411],"pivot":[0.0101,-7.0278,1.3912],"rotation":[-98.75,0,0],"uv":{"north":{"uv":[58,26],"uv_size":[0.25,0.25]},"east":{"uv":[27,58],"uv_size":[0.25,0.25]},"south":{"uv":[58,27],"uv_size":[0.25,0.25]},"west":{"uv":[28,58],"uv_size":[0.25,0.25]},"up":{"uv":[58,28],"uv_size":[0.25,0.25]},"down":{"uv":[29,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0403,-7.0681,-1.1485],"size":[0.0806,0.0403,0.4636],"pivot":[0.0101,-7.0278,1.3912],"rotation":[-98.75,0,0],"uv":{"north":{"uv":[58,29],"uv_size":[0.25,0.25]},"east":{"uv":[35,13],"uv_size":[0.5,0.25]},"south":{"uv":[30,58],"uv_size":[0.25,0.25]},"west":{"uv":[14,35],"uv_size":[0.5,0.25]},"up":{"uv":[35,14],"uv_size":[0.25,0.5]},"down":{"uv":[15,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0403,-4.8647,1.6545],"size":[0.0806,0.0605,0.1613],"pivot":[0.0101,-4.8647,1.6545],"rotation":[-137.75,0,0],"uv":{"north":{"uv":[58,30],"uv_size":[0.25,0.25]},"east":{"uv":[31,58],"uv_size":[0.25,0.25]},"south":{"uv":[58,31],"uv_size":[0.25,0.25]},"west":{"uv":[32,58],"uv_size":[0.25,0.25]},"up":{"uv":[58,32],"uv_size":[0.25,0.25]},"down":{"uv":[33,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0403,-4.5116,1.7377],"size":[0.0806,0.0403,0.4838],"pivot":[0.0101,-4.5116,1.7377],"rotation":[-103.25,0,0],"uv":{"north":{"uv":[58,33],"uv_size":[0.25,0.25]},"east":{"uv":[35,15],"uv_size":[0.5,0.25]},"south":{"uv":[34,58],"uv_size":[0.25,0.25]},"west":{"uv":[16,35],"uv_size":[0.5,0.25]},"up":{"uv":[35,16],"uv_size":[0.25,0.5]},"down":{"uv":[17,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0403,-4.8444,1.4455],"size":[0.0806,0.1613,0.0806],"pivot":[0.0101,-4.8444,1.4455],"rotation":[-146.25,0,0],"uv":{"north":{"uv":[58,34],"uv_size":[0.25,0.25]},"east":{"uv":[35,58],"uv_size":[0.25,0.25]},"south":{"uv":[58,35],"uv_size":[0.25,0.25]},"west":{"uv":[36,58],"uv_size":[0.25,0.25]},"up":{"uv":[58,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0908,-4.9702,0.7134],"size":[0.1816,0.2419,0.8596],"pivot":[0.0001,-4.7283,1.4793],"rotation":[-106.25,0,0],"uv":{"north":{"uv":[58,37],"uv_size":[0.25,0.25]},"east":{"uv":[12,28],"uv_size":[0.75,0.25]},"south":{"uv":[38,58],"uv_size":[0.25,0.25]},"west":{"uv":[28,12],"uv_size":[0.75,0.25]},"up":{"uv":[13,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,13.75],"uv_size":[0.25,-0.75]}}},{"origin":[0.0696,-5.0342,-0.0653],"size":[0.0214,0.0605,1.3662],"pivot":[0,-4.7283,1.4793],"rotation":[-106.25,0,0],"uv":{"north":{"uv":[50,61],"uv_size":[0.25,0.25]},"east":{"uv":[47,61],"uv_size":[1.75,0.25]},"south":{"uv":[61,50],"uv_size":[0.25,0.25]},"west":{"uv":[61,47],"uv_size":[1.75,0.25]},"up":{"uv":[61,48],"uv_size":[0.25,1.75]},"down":{"uv":[49,62.75],"uv_size":[0.25,-1.75]}}},{"origin":[-0.091,-5.0342,-0.0653],"size":[0.0214,0.0605,1.3662],"pivot":[0,-4.7283,1.4793],"rotation":[-106.25,0,0],"uv":{"north":{"uv":[50.25,61],"uv_size":[-0.25,0.25]},"east":{"uv":[62.75,47],"uv_size":[-1.75,0.25]},"south":{"uv":[61.25,50],"uv_size":[-0.25,0.25]},"west":{"uv":[48.75,61],"uv_size":[-1.75,0.25]},"up":{"uv":[61.25,48],"uv_size":[-0.25,1.75]},"down":{"uv":[49.25,62.75],"uv_size":[-0.25,-1.75]}}},{"origin":[0.0696,-5.0172,0.3766],"size":[0.0214,0.0605,0.7662],"pivot":[0,-4.7113,1.4212],"rotation":[-106.25,0,0],"uv":{"north":{"uv":[50,61],"uv_size":[0.25,0.25]},"east":{"uv":[47,61],"uv_size":[1.75,0.25]},"south":{"uv":[61,50],"uv_size":[0.25,0.25]},"west":{"uv":[61,47],"uv_size":[1.75,0.25]},"up":{"uv":[61,48],"uv_size":[0.25,1.75]},"down":{"uv":[49,62.75],"uv_size":[0.25,-1.75]}}},{"origin":[0.0696,-4.9852,-0.1354],"size":[0.0214,0.0285,0.4089],"pivot":[0,-4.7113,1.4212],"rotation":[-106.25,0,0],"uv":{"north":{"uv":[50,61],"uv_size":[0.25,0.25]},"east":{"uv":[47,61],"uv_size":[1.75,0.25]},"south":{"uv":[61,50],"uv_size":[0.25,0.25]},"west":{"uv":[61,47],"uv_size":[1.75,0.25]},"up":{"uv":[61,48],"uv_size":[0.25,1.75]},"down":{"uv":[49,62.75],"uv_size":[0.25,-1.75]}}},{"origin":[-0.091,-5.0172,0.3766],"size":[0.0214,0.0605,0.7662],"pivot":[0,-4.7113,1.4212],"rotation":[-106.25,0,0],"uv":{"north":{"uv":[50.25,61],"uv_size":[-0.25,0.25]},"east":{"uv":[62.75,47],"uv_size":[-1.75,0.25]},"south":{"uv":[61.25,50],"uv_size":[-0.25,0.25]},"west":{"uv":[48.75,61],"uv_size":[-1.75,0.25]},"up":{"uv":[61.25,48],"uv_size":[-0.25,1.75]},"down":{"uv":[49.25,62.75],"uv_size":[-0.25,-1.75]}}},{"origin":[-0.091,-4.9852,-0.1354],"size":[0.0214,0.0285,0.4089],"pivot":[0,-4.7113,1.4212],"rotation":[-106.25,0,0],"uv":{"north":{"uv":[50.25,61],"uv_size":[-0.25,0.25]},"east":{"uv":[62.75,47],"uv_size":[-1.75,0.25]},"south":{"uv":[61.25,50],"uv_size":[-0.25,0.25]},"west":{"uv":[48.75,61],"uv_size":[-1.75,0.25]},"up":{"uv":[61.25,48],"uv_size":[-0.25,1.75]},"down":{"uv":[49.25,62.75],"uv_size":[-0.25,-1.75]}}},{"origin":[-0.0907,-4.8674,1.5196],"size":[0.1814,0.1391,0.2722],"pivot":[0,-4.7283,1.4793],"rotation":[-106.25,0,0],"uv":{"north":{"uv":[58,38],"uv_size":[0.25,0.25]},"east":{"uv":[39,58],"uv_size":[0.25,0.25]},"south":{"uv":[58,39],"uv_size":[0.25,0.25]},"west":{"uv":[40,58],"uv_size":[0.25,0.25]},"up":{"uv":[58,40],"uv_size":[0.25,0.25]},"down":{"uv":[41,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-4.2348,1.3711],"size":[0.1814,0.2419,0.3225],"pivot":[0,-3.9929,1.6936],"rotation":[-80,0,0],"uv":{"north":{"uv":[58,41],"uv_size":[0.25,0.25]},"east":{"uv":[42,58],"uv_size":[0.25,0.25]},"south":{"uv":[58,42],"uv_size":[0.25,0.25]},"west":{"uv":[43,58],"uv_size":[0.25,0.25]},"up":{"uv":[58,43],"uv_size":[0.25,0.25]},"down":{"uv":[44,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-3.5561,0.8351],"size":[0.1814,0.0806,0.5644],"pivot":[0,-3.7174,1.3994],"rotation":[-93.75,0,0],"uv":{"north":{"uv":[58,44],"uv_size":[0.25,0.25]},"east":{"uv":[35,17],"uv_size":[0.5,0.25]},"south":{"uv":[45,58],"uv_size":[0.25,0.25]},"west":{"uv":[18,35],"uv_size":[0.5,0.25]},"up":{"uv":[35,18],"uv_size":[0.25,0.5]},"down":{"uv":[19,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0906,-3.7174,0.9157],"size":[0.1811,0.1613,0.4838],"pivot":[-0.0001,-3.7174,1.3994],"rotation":[-93.75,0,0],"uv":{"north":{"uv":[58,45],"uv_size":[0.25,0.25]},"east":{"uv":[35,19],"uv_size":[0.5,0.25]},"south":{"uv":[46,58],"uv_size":[0.25,0.25]},"west":{"uv":[20,35],"uv_size":[0.5,0.25]},"up":{"uv":[35,20],"uv_size":[0.25,0.5]},"down":{"uv":[21,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0907,-2.2862,0.9141],"size":[0.1814,0.2419,0.3225],"pivot":[0,-2.2862,0.9141],"rotation":[-49,0,0],"uv":{"north":{"uv":[58,46],"uv_size":[0.25,0.25]},"east":{"uv":[47,58],"uv_size":[0.25,0.25]},"south":{"uv":[58,47],"uv_size":[0.25,0.25]},"west":{"uv":[48,58],"uv_size":[0.25,0.25]},"up":{"uv":[58,48],"uv_size":[0.25,0.25]},"down":{"uv":[49,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[0.0101,-2.5691,0.8586],"size":[0.0806,0.1613,0.3225],"pivot":[0.0907,-2.4079,1.0199],"rotation":[-47.2288,14.9589,13.4299],"uv":{"north":{"uv":[58,49],"uv_size":[0.25,0.25]},"east":{"uv":[50,58],"uv_size":[0.25,0.25]},"south":{"uv":[58,50],"uv_size":[0.25,0.25]},"west":{"uv":[51,58],"uv_size":[0.25,0.25]},"up":{"uv":[58,51],"uv_size":[0.25,0.25]},"down":{"uv":[52,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,-3.7546,-0.0167],"size":[0.0202,0.1613,2.5598],"pivot":[-0.0907,-3.5933,1.1423],"rotation":[-84.9546,-19.6794,-1.703],"uv":{"north":{"uv":[58.25,11],"uv_size":[-0.25,0.25]},"east":{"uv":[7.5,3],"uv_size":[-2.5,0.25]},"south":{"uv":[12.25,58],"uv_size":[-0.25,0.25]},"west":{"uv":[5.5,5],"uv_size":[-2.5,0.25]},"up":{"uv":[1.25,5],"uv_size":[-0.25,2.5]},"down":{"uv":[6.25,2.5],"uv_size":[-0.25,-2.5]}}},{"origin":[-0.0907,-2.5691,0.8586],"size":[0.0806,0.1613,0.3225],"pivot":[-0.0907,-2.4079,1.0199],"rotation":[-47.2288,-14.9589,-13.4299],"uv":{"north":{"uv":[58.25,49],"uv_size":[-0.25,0.25]},"east":{"uv":[51.25,58],"uv_size":[-0.25,0.25]},"south":{"uv":[58.25,50],"uv_size":[-0.25,0.25]},"west":{"uv":[50.25,58],"uv_size":[-0.25,0.25]},"up":{"uv":[58.25,51],"uv_size":[-0.25,0.25]},"down":{"uv":[52.25,58.25],"uv_size":[-0.25,-0.25]}}},{"origin":[-0.1249,-3.5367,2.4735],"size":[0.0202,0.0866,0.3092],"pivot":[0.7924,-3.4501,1.3818],"rotation":[-84.9546,-19.6794,-1.703],"uv":{"north":{"uv":[58.25,11],"uv_size":[-0.25,0.25]},"east":{"uv":[7.5,3],"uv_size":[-2.5,0.25]},"south":{"uv":[12.25,58],"uv_size":[-0.25,0.25]},"west":{"uv":[5.5,5],"uv_size":[-2.5,0.25]},"up":{"uv":[1.25,5],"uv_size":[-0.25,2.5]},"down":{"uv":[6.25,2.5],"uv_size":[-0.25,-2.5]}}},{"origin":[-0.0645,-6.1182,0.1561],"size":[0.0202,0.1613,1.9567],"pivot":[-0.0645,-5.957,1.2061],"rotation":[-93.2589,-18.7718,-0.5035],"uv":{"north":{"uv":[58.25,16],"uv_size":[-0.25,0.25]},"east":{"uv":[11,9],"uv_size":[-2,0.25]},"south":{"uv":[17.25,58],"uv_size":[-0.25,0.25]},"west":{"uv":[11,5],"uv_size":[-2,0.25]},"up":{"uv":[10.25,0],"uv_size":[-0.25,2]},"down":{"uv":[2.25,12],"uv_size":[-0.25,-2]}}},{"origin":[0.0443,-6.1182,0.1561],"size":[0.0202,0.1613,1.9567],"pivot":[0.0645,-5.957,1.2061],"rotation":[-93.2589,18.7718,0.5035],"uv":{"north":{"uv":[58,16],"uv_size":[0.25,0.25]},"east":{"uv":[9,5],"uv_size":[2,0.25]},"south":{"uv":[17,58],"uv_size":[0.25,0.25]},"west":{"uv":[9,9],"uv_size":[2,0.25]},"up":{"uv":[10,0],"uv_size":[0.25,2]},"down":{"uv":[2,12],"uv_size":[0.25,-2]}}},{"origin":[-0.0907,0.251,1.7531],"size":[0.1814,0.262,0.383],"uv":{"north":{"uv":[58,52],"uv_size":[0.25,0.25]},"east":{"uv":[35,21],"uv_size":[0.5,0.25]},"south":{"uv":[53,58],"uv_size":[0.25,0.25]},"west":{"uv":[22,35],"uv_size":[0.5,0.25]},"up":{"uv":[35,22],"uv_size":[0.25,0.5]},"down":{"uv":[23,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0907,0.251,1.733],"size":[0.1814,0.1613,0.4031],"pivot":[0,0.251,2.1361],"rotation":[14,0,0],"uv":{"north":{"uv":[58,53],"uv_size":[0.25,0.25]},"east":{"uv":[35,23],"uv_size":[0.5,0.25]},"south":{"uv":[54,58],"uv_size":[0.25,0.25]},"west":{"uv":[24,35],"uv_size":[0.5,0.25]},"up":{"uv":[35,24],"uv_size":[0.25,0.5]},"down":{"uv":[25,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0907,0.1778,1.6009],"size":[0.1814,0.1613,0.2419],"pivot":[0,0.1778,1.8427],"rotation":[59,0,0],"uv":{"north":{"uv":[58,54],"uv_size":[0.25,0.25]},"east":{"uv":[55,58],"uv_size":[0.25,0.25]},"south":{"uv":[58,55],"uv_size":[0.25,0.25]},"west":{"uv":[56,58],"uv_size":[0.25,0.25]},"up":{"uv":[58,56],"uv_size":[0.25,0.25]},"down":{"uv":[57,58.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,0.251,1.5354],"size":[0.1814,0.2345,0.6007],"pivot":[0,0.251,2.1361],"rotation":[-26.5,0,0],"uv":{"north":{"uv":[58,57],"uv_size":[0.25,0.25]},"east":{"uv":[35,25],"uv_size":[0.5,0.25]},"south":{"uv":[58,58],"uv_size":[0.25,0.25]},"west":{"uv":[26,35],"uv_size":[0.5,0.25]},"up":{"uv":[35,26],"uv_size":[0.25,0.5]},"down":{"uv":[27,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.1144,0.2723,1.9494],"size":[0.2287,0.082,0.082],"pivot":[0.2263,0.251,2.1361],"rotation":[-45,0,0],"uv":{"north":{"uv":[54,61],"uv_size":[0.25,0.25]},"east":{"uv":[61,54],"uv_size":[0.25,0.25]},"south":{"uv":[55,61],"uv_size":[0.25,0.25]},"west":{"uv":[61,55],"uv_size":[0.25,0.25]},"up":{"uv":[56,61],"uv_size":[0.25,0.25]},"down":{"uv":[61,56.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0907,0.4553,1.5048],"size":[0.1814,0.2419,0.4031],"pivot":[0,0.6569,1.8475],"rotation":[-64,0,0],"uv":{"north":{"uv":[0,59],"uv_size":[0.25,0.25]},"east":{"uv":[35,27],"uv_size":[0.5,0.25]},"south":{"uv":[59,0],"uv_size":[0.25,0.25]},"west":{"uv":[28,35],"uv_size":[0.5,0.25]},"up":{"uv":[35,28],"uv_size":[0.25,0.5]},"down":{"uv":[29,35.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0806,5.0676,-0.5125],"size":[0.1613,0.4838,0.1008],"pivot":[0.1008,5.5514,-0.8955],"rotation":[-29.5,0,0],"uv":{"north":{"uv":[35,29],"uv_size":[0.25,0.5]},"east":{"uv":[30,35],"uv_size":[0.25,0.5]},"south":{"uv":[35,30],"uv_size":[0.25,0.5]},"west":{"uv":[31,35],"uv_size":[0.25,0.5]},"up":{"uv":[1,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,1.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,5.2136,-0.4946],"size":[0.1613,0.5241,0.1008],"pivot":[0,5.4555,-0.424],"rotation":[-35,0,0],"uv":{"north":{"uv":[35,31],"uv_size":[0.25,0.5]},"east":{"uv":[32,35],"uv_size":[0.25,0.5]},"south":{"uv":[35,32],"uv_size":[0.25,0.5]},"west":{"uv":[33,35],"uv_size":[0.25,0.5]},"up":{"uv":[2,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,2.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,5.7271,-0.32],"size":[0.1613,0.3225,0.1411],"pivot":[0,5.7271,-0.32],"rotation":[-87.5,0,0],"uv":{"north":{"uv":[3,59],"uv_size":[0.25,0.25]},"east":{"uv":[59,3],"uv_size":[0.25,0.25]},"south":{"uv":[4,59],"uv_size":[0.25,0.25]},"west":{"uv":[59,4],"uv_size":[0.25,0.25]},"up":{"uv":[5,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,5.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,5.6002,-0.1327],"size":[0.1613,0.383,0.1411],"pivot":[0,5.6002,0.0084],"rotation":[-65,0,0],"uv":{"north":{"uv":[35,33],"uv_size":[0.25,0.5]},"east":{"uv":[34,35],"uv_size":[0.25,0.5]},"south":{"uv":[35,34],"uv_size":[0.25,0.5]},"west":{"uv":[35,35],"uv_size":[0.25,0.5]},"up":{"uv":[6,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,6.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,5.6374,0.2377],"size":[0.1613,1.1691,0.1008],"pivot":[0,5.7986,0.3384],"rotation":[-15,0,0],"uv":{"north":{"uv":[5,19],"uv_size":[0.25,1.25]},"east":{"uv":[6,19],"uv_size":[0.25,1.25]},"south":{"uv":[19,6],"uv_size":[0.25,1.25]},"west":{"uv":[19,8],"uv_size":[0.25,1.25]},"up":{"uv":[7,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,7.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,6.8064,0.2377],"size":[0.1613,0.1411,0.0403],"pivot":[0,5.7986,0.3384],"rotation":[-15,0,0],"uv":{"north":{"uv":[8,59],"uv_size":[0.25,0.25]},"east":{"uv":[59,8],"uv_size":[0.25,0.25]},"south":{"uv":[9,59],"uv_size":[0.25,0.25]},"west":{"uv":[59,9],"uv_size":[0.25,0.25]},"up":{"uv":[10,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,10.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.086,6.6821,0.5371],"size":[0.1719,0.2419,0.0403],"pivot":[-0.0053,6.924,0.5774],"rotation":[13,0,0],"uv":{"north":{"uv":[11,59],"uv_size":[0.25,0.25]},"east":{"uv":[59,11],"uv_size":[0.25,0.25]},"south":{"uv":[12,59],"uv_size":[0.25,0.25]},"west":{"uv":[59,12],"uv_size":[0.25,0.25]},"up":{"uv":[13,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,13.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,6.6821,0.4968],"size":[0.1613,0.1613,0.0403],"pivot":[0,6.924,0.5774],"rotation":[13,0,0],"uv":{"north":{"uv":[14,59],"uv_size":[0.25,0.25]},"east":{"uv":[59,14],"uv_size":[0.25,0.25]},"south":{"uv":[15,59],"uv_size":[0.25,0.25]},"west":{"uv":[59,15],"uv_size":[0.25,0.25]},"up":{"uv":[16,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,16.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,6.509,0.4121],"size":[0.1613,0.1814,0.2217],"pivot":[0,6.6702,0.5532],"rotation":[48.25,0,0],"uv":{"north":{"uv":[17,59],"uv_size":[0.25,0.25]},"east":{"uv":[59,17],"uv_size":[0.25,0.25]},"south":{"uv":[18,59],"uv_size":[0.25,0.25]},"west":{"uv":[59,18],"uv_size":[0.25,0.25]},"up":{"uv":[19,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,19.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,6.321,0.5929],"size":[0.1613,0.4233,0.1613],"pivot":[0,6.5628,0.6735],"rotation":[98.25,0,0],"uv":{"north":{"uv":[0,36],"uv_size":[0.25,0.5]},"east":{"uv":[36,0],"uv_size":[0.25,0.5]},"south":{"uv":[1,36],"uv_size":[0.25,0.5]},"west":{"uv":[36,1],"uv_size":[0.25,0.5]},"up":{"uv":[20,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,20.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,6.4247,0.7525],"size":[0.1613,0.1613,0.1613],"pivot":[0,6.586,0.8331],"rotation":[150.75,0,0],"uv":{"north":{"uv":[21,59],"uv_size":[0.25,0.25]},"east":{"uv":[59,21],"uv_size":[0.25,0.25]},"south":{"uv":[22,59],"uv_size":[0.25,0.25]},"west":{"uv":[59,22],"uv_size":[0.25,0.25]},"up":{"uv":[23,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,23.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.086,6.3639,0.9119],"size":[0.1719,0.3628,0.0806],"pivot":[-0.0053,6.7267,0.9119],"rotation":[-178.75,0,0],"uv":{"north":{"uv":[24,59],"uv_size":[0.25,0.25]},"east":{"uv":[59,24],"uv_size":[0.25,0.25]},"south":{"uv":[25,59],"uv_size":[0.25,0.25]},"west":{"uv":[59,25],"uv_size":[0.25,0.25]},"up":{"uv":[26,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,26.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,6.8274,0.7714],"size":[0.1613,0.2419,0.0806],"pivot":[0,7.0693,0.8318],"rotation":[114.75,0,0],"uv":{"north":{"uv":[27,59],"uv_size":[0.25,0.25]},"east":{"uv":[59,27],"uv_size":[0.25,0.25]},"south":{"uv":[28,59],"uv_size":[0.25,0.25]},"west":{"uv":[59,28],"uv_size":[0.25,0.25]},"up":{"uv":[29,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,29.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,7.1157,0.5729],"size":[0.1613,0.2016,0.5039],"pivot":[0,7.1157,1.0768],"rotation":[94.75,0,0],"uv":{"north":{"uv":[30,59],"uv_size":[0.25,0.25]},"east":{"uv":[2,36],"uv_size":[0.5,0.25]},"south":{"uv":[59,30],"uv_size":[0.25,0.25]},"west":{"uv":[36,2],"uv_size":[0.5,0.25]},"up":{"uv":[3,36],"uv_size":[0.25,0.5]},"down":{"uv":[36,3.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0806,7.1157,1.0768],"size":[0.1613,0.0276,0.0758],"pivot":[0,7.1157,1.0768],"rotation":[94.75,0,0],"uv":{"north":{"uv":[31,59],"uv_size":[0.25,0.25]},"east":{"uv":[59,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,59],"uv_size":[0.25,0.25]},"west":{"uv":[59,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,6.6528,0.8533],"size":[0.1613,0.2419,0.2419],"pivot":[0,6.8947,1.0952],"rotation":[47.25,0,0],"uv":{"north":{"uv":[34,59],"uv_size":[0.25,0.25]},"east":{"uv":[59,34],"uv_size":[0.25,0.25]},"south":{"uv":[35,59],"uv_size":[0.25,0.25]},"west":{"uv":[59,35],"uv_size":[0.25,0.25]},"up":{"uv":[36,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,36.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,6.5506,0.4289],"size":[0.1613,0.1411,0.8667],"pivot":[0,6.5506,1.2957],"rotation":[13.75,0,0],"uv":{"north":{"uv":[37,59],"uv_size":[0.25,0.25]},"east":{"uv":[14,28],"uv_size":[0.75,0.25]},"south":{"uv":[59,37],"uv_size":[0.25,0.25]},"west":{"uv":[28,14],"uv_size":[0.75,0.25]},"up":{"uv":[15,28],"uv_size":[0.25,0.75]},"down":{"uv":[28,15.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0806,5.7796,0.2776],"size":[0.1613,0.1814,0.2419],"pivot":[0,5.961,0.2776],"rotation":[-37.5,0,0],"uv":{"north":{"uv":[38,59],"uv_size":[0.25,0.25]},"east":{"uv":[59,38],"uv_size":[0.25,0.25]},"south":{"uv":[39,59],"uv_size":[0.25,0.25]},"west":{"uv":[59,39],"uv_size":[0.25,0.25]},"up":{"uv":[40,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,40.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,4.3572,-0.8004],"size":[0.1613,0.5845,0.262],"pivot":[0,4.9418,-0.8004],"rotation":[-22.25,0,0],"uv":{"north":{"uv":[4,36],"uv_size":[0.25,0.5]},"east":{"uv":[36,4],"uv_size":[0.25,0.5]},"south":{"uv":[5,36],"uv_size":[0.25,0.5]},"west":{"uv":[36,5],"uv_size":[0.25,0.5]},"up":{"uv":[41,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,41.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,3.7557,-1.0217],"size":[0.1613,0.645,0.1613],"pivot":[0,4.4008,-1.0217],"rotation":[-13.5,0,0],"uv":{"north":{"uv":[16,28],"uv_size":[0.25,0.75]},"east":{"uv":[28,16],"uv_size":[0.25,0.75]},"south":{"uv":[17,28],"uv_size":[0.25,0.75]},"west":{"uv":[28,17],"uv_size":[0.25,0.75]},"up":{"uv":[42,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,2.8061,-1.1723],"size":[0.1613,0.9675,0.2217],"pivot":[0,3.7736,-1.1723],"rotation":[-0.25,0,0],"uv":{"north":{"uv":[2,24],"uv_size":[0.25,1]},"east":{"uv":[24,2],"uv_size":[0.25,1]},"south":{"uv":[3,24],"uv_size":[0.25,1]},"west":{"uv":[24,3],"uv_size":[0.25,1]},"up":{"uv":[43,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,43.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,1.8386,-1.1765],"size":[0.1613,0.9675,0.1814],"pivot":[0,2.8061,-1.1765],"rotation":[16.25,0,0],"uv":{"north":{"uv":[4,24],"uv_size":[0.25,1]},"east":{"uv":[24,4],"uv_size":[0.25,1]},"south":{"uv":[5,24],"uv_size":[0.25,1]},"west":{"uv":[24,5],"uv_size":[0.25,1]},"up":{"uv":[44,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,44.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,1.2121,-0.9058],"size":[0.1613,0.6652,0.1613],"pivot":[0,1.8772,-0.9058],"rotation":[25.25,0,0],"uv":{"north":{"uv":[18,28],"uv_size":[0.25,0.75]},"east":{"uv":[28,18],"uv_size":[0.25,0.75]},"south":{"uv":[19,28],"uv_size":[0.25,0.75]},"west":{"uv":[28,19],"uv_size":[0.25,0.75]},"up":{"uv":[45,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,45.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,6.5491,1.1115],"size":[0.1613,0.1814,0.1613],"pivot":[0,6.7305,1.2728],"rotation":[7.25,0,0],"uv":{"north":{"uv":[46,59],"uv_size":[0.25,0.25]},"east":{"uv":[59,46],"uv_size":[0.25,0.25]},"south":{"uv":[47,59],"uv_size":[0.25,0.25]},"west":{"uv":[59,47],"uv_size":[0.25,0.25]},"up":{"uv":[48,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,48.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0809,4.5347,1.1946],"size":[0.1618,2.2782,0.1014],"inflate":0.001,"pivot":[0,6.5506,1.2957],"rotation":[6.5,0,0],"uv":{"north":{"uv":[8,3],"uv_size":[0.25,2.25]},"east":{"uv":[6,8],"uv_size":[0.25,2.25]},"south":{"uv":[7,8],"uv_size":[0.25,2.25]},"west":{"uv":[8,8],"uv_size":[0.25,2.25]},"up":{"uv":[49,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,49.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,2.6935,1.3626],"size":[0.1613,1.8544,0.1613],"pivot":[0,4.5479,1.5238],"rotation":[4.25,0,0],"uv":{"north":{"uv":[11,9],"uv_size":[0.25,1.75]},"east":{"uv":[11,11],"uv_size":[0.25,1.75]},"south":{"uv":[0,12],"uv_size":[0.25,1.75]},"west":{"uv":[1,12],"uv_size":[0.25,1.75]},"up":{"uv":[50,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,50.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,1.2474,1.5],"size":[0.1613,1.4512,0.1613],"pivot":[0,2.6986,1.6613],"rotation":[1.75,0,0],"uv":{"north":{"uv":[15,15],"uv_size":[0.25,1.5]},"east":{"uv":[0,16],"uv_size":[0.25,1.5]},"south":{"uv":[16,0],"uv_size":[0.25,1.5]},"west":{"uv":[1,16],"uv_size":[0.25,1.5]},"up":{"uv":[51,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,51.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0403,1.973,1.6613],"size":[0.0806,0.7256,0.0605],"pivot":[0,2.6986,1.6613],"rotation":[1.75,0,0],"uv":{"north":{"uv":[20,28],"uv_size":[0.25,0.75]},"east":{"uv":[28,20],"uv_size":[0.25,0.75]},"south":{"uv":[21,28],"uv_size":[0.25,0.75]},"west":{"uv":[28,21],"uv_size":[0.25,0.75]},"up":{"uv":[52,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,52.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0403,1.9752,1.6712],"size":[0.0403,0.7256,0.0727],"pivot":[-0.0403,1.9752,1.7439],"rotation":[2.1029,33.6722,1.1663],"uv":{"north":{"uv":[22,28],"uv_size":[0.25,0.75]},"east":{"uv":[28,22],"uv_size":[0.25,0.75]},"south":{"uv":[23,28],"uv_size":[0.25,0.75]},"west":{"uv":[28,23],"uv_size":[0.25,0.75]},"up":{"uv":[53,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,53.25],"uv_size":[0.25,-0.25]}}},{"origin":[0,1.9752,1.6712],"size":[0.0403,0.7256,0.0727],"pivot":[0.0403,1.9752,1.7439],"rotation":[2.1029,-33.6722,-1.1663],"uv":{"north":{"uv":[24,28],"uv_size":[0.25,0.75]},"east":{"uv":[28,24],"uv_size":[0.25,0.75]},"south":{"uv":[25,28],"uv_size":[0.25,0.75]},"west":{"uv":[28,25],"uv_size":[0.25,0.75]},"up":{"uv":[54,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,54.25],"uv_size":[0.25,-0.25]}}},{"origin":[0,1.693,1.6712],"size":[0.0403,0.1008,0.0727],"pivot":[0.0403,1.693,1.7439],"rotation":[2.1029,-33.6722,-1.1663],"uv":{"north":{"uv":[55,59],"uv_size":[0.25,0.25]},"east":{"uv":[59,55],"uv_size":[0.25,0.25]},"south":{"uv":[56,59],"uv_size":[0.25,0.25]},"west":{"uv":[59,56],"uv_size":[0.25,0.25]},"up":{"uv":[57,59],"uv_size":[0.25,0.25]},"down":{"uv":[59,57.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0403,1.6908,1.6613],"size":[0.0806,0.1008,0.0605],"pivot":[0,2.4165,1.6613],"rotation":[1.75,0,0],"uv":{"north":{"uv":[58,59],"uv_size":[0.25,0.25]},"east":{"uv":[59,58],"uv_size":[0.25,0.25]},"south":{"uv":[59,59],"uv_size":[0.25,0.25]},"west":{"uv":[0,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,0],"uv_size":[0.25,0.25]},"down":{"uv":[1,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0403,1.693,1.6712],"size":[0.0403,0.1008,0.0727],"pivot":[-0.0403,1.693,1.7439],"rotation":[2.1029,33.6722,1.1663],"uv":{"north":{"uv":[60,1],"uv_size":[0.25,0.25]},"east":{"uv":[2,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,2],"uv_size":[0.25,0.25]},"west":{"uv":[3,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,3],"uv_size":[0.25,0.25]},"down":{"uv":[4,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[0,1.431,1.6712],"size":[0.0403,0.1008,0.0727],"pivot":[0.0403,1.431,1.7439],"rotation":[2.1029,-33.6722,-1.1663],"uv":{"north":{"uv":[60,4],"uv_size":[0.25,0.25]},"east":{"uv":[5,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,5],"uv_size":[0.25,0.25]},"west":{"uv":[6,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,6],"uv_size":[0.25,0.25]},"down":{"uv":[7,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0403,1.4288,1.6613],"size":[0.0806,0.1008,0.0605],"pivot":[0,2.1544,1.6613],"rotation":[1.75,0,0],"uv":{"north":{"uv":[60,7],"uv_size":[0.25,0.25]},"east":{"uv":[8,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,8],"uv_size":[0.25,0.25]},"west":{"uv":[9,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,9],"uv_size":[0.25,0.25]},"down":{"uv":[10,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0403,1.431,1.6712],"size":[0.0403,0.1008,0.0727],"pivot":[-0.0403,1.431,1.7439],"rotation":[2.1029,33.6722,1.1663],"uv":{"north":{"uv":[60,10],"uv_size":[0.25,0.25]},"east":{"uv":[11,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,11],"uv_size":[0.25,0.25]},"west":{"uv":[12,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,12],"uv_size":[0.25,0.25]},"down":{"uv":[13,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0403,2.6935,1.5238],"size":[0.0806,1.8544,0.0605],"pivot":[0,4.5479,1.5238],"rotation":[4.25,0,0],"uv":{"north":{"uv":[12,1],"uv_size":[0.25,1.75]},"east":{"uv":[2,12],"uv_size":[0.25,1.75]},"south":{"uv":[3,12],"uv_size":[0.25,1.75]},"west":{"uv":[12,3],"uv_size":[0.25,1.75]},"up":{"uv":[60,13],"uv_size":[0.25,0.25]},"down":{"uv":[14,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0403,2.7006,1.5802],"size":[0.0403,1.8544,0.0727],"pivot":[-0.0403,3.6277,1.6529],"rotation":[5.1037,33.5851,2.8284],"uv":{"north":{"uv":[12,5],"uv_size":[0.25,1.75]},"east":{"uv":[12,7],"uv_size":[0.25,1.75]},"south":{"uv":[9,12],"uv_size":[0.25,1.75]},"west":{"uv":[12,9],"uv_size":[0.25,1.75]},"up":{"uv":[60,14],"uv_size":[0.25,0.25]},"down":{"uv":[15,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[0,2.7006,1.5802],"size":[0.0403,1.8544,0.0727],"pivot":[0.0403,3.6277,1.6529],"rotation":[5.1037,-33.5851,-2.8284],"uv":{"north":{"uv":[10,12],"uv_size":[0.25,1.75]},"east":{"uv":[12,11],"uv_size":[0.25,1.75]},"south":{"uv":[13,0],"uv_size":[0.25,1.75]},"west":{"uv":[13,2],"uv_size":[0.25,1.75]},"up":{"uv":[60,15],"uv_size":[0.25,0.25]},"down":{"uv":[16,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0406,4.5347,1.2954],"size":[0.0812,0.7464,0.061],"inflate":0.001,"pivot":[0,6.5506,1.2957],"rotation":[6.5,0,0],"uv":{"north":{"uv":[26,28],"uv_size":[0.25,0.75]},"east":{"uv":[28,26],"uv_size":[0.25,0.75]},"south":{"uv":[27,28],"uv_size":[0.25,0.75]},"west":{"uv":[28,27],"uv_size":[0.25,0.75]},"up":{"uv":[60,16],"uv_size":[0.25,0.25]},"down":{"uv":[17,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0402,4.5472,1.3837],"size":[0.0405,0.7463,0.0716],"inflate":0.001,"pivot":[-0.0403,5.6863,1.455],"rotation":[7.8604,34.1314,4.4294],"uv":{"north":{"uv":[28,28],"uv_size":[0.25,0.75]},"east":{"uv":[0,29],"uv_size":[0.25,0.75]},"south":{"uv":[29,0],"uv_size":[0.25,0.75]},"west":{"uv":[1,29],"uv_size":[0.25,0.75]},"up":{"uv":[60,17],"uv_size":[0.25,0.25]},"down":{"uv":[18,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0003,4.5472,1.3837],"size":[0.0405,0.7463,0.0716],"inflate":0.001,"pivot":[0.0403,5.6863,1.455],"rotation":[7.8604,-34.1314,-4.4294],"uv":{"north":{"uv":[29,1],"uv_size":[0.25,0.75]},"east":{"uv":[2,29],"uv_size":[0.25,0.75]},"south":{"uv":[29,2],"uv_size":[0.25,0.75]},"west":{"uv":[3,29],"uv_size":[0.25,0.75]},"up":{"uv":[60,18],"uv_size":[0.25,0.25]},"down":{"uv":[19,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0402,5.4743,1.3837],"size":[0.0405,0.1215,0.0716],"inflate":0.001,"pivot":[-0.0403,5.6863,1.455],"rotation":[7.8604,34.1314,4.4294],"uv":{"north":{"uv":[60,19],"uv_size":[0.25,0.25]},"east":{"uv":[20,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,20],"uv_size":[0.25,0.25]},"west":{"uv":[21,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,21],"uv_size":[0.25,0.25]},"down":{"uv":[22,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0003,5.4743,1.3837],"size":[0.0405,0.1215,0.0716],"inflate":0.001,"pivot":[0.0403,5.6863,1.455],"rotation":[7.8604,-34.1314,-4.4294],"uv":{"north":{"uv":[60,22],"uv_size":[0.25,0.25]},"east":{"uv":[23,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,23],"uv_size":[0.25,0.25]},"west":{"uv":[24,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,24],"uv_size":[0.25,0.25]},"down":{"uv":[25,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0406,5.4619,1.2954],"size":[0.0812,0.1215,0.061],"inflate":0.001,"pivot":[0,6.5506,1.2957],"rotation":[6.5,0,0],"uv":{"north":{"uv":[60,25],"uv_size":[0.25,0.25]},"east":{"uv":[26,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,26],"uv_size":[0.25,0.25]},"west":{"uv":[27,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,27],"uv_size":[0.25,0.25]},"down":{"uv":[28,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0402,5.7364,1.3837],"size":[0.0405,0.1215,0.0716],"inflate":0.001,"pivot":[-0.0403,5.6863,1.455],"rotation":[7.8604,34.1314,4.4294],"uv":{"north":{"uv":[60,28],"uv_size":[0.25,0.25]},"east":{"uv":[29,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,29],"uv_size":[0.25,0.25]},"west":{"uv":[30,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,30],"uv_size":[0.25,0.25]},"down":{"uv":[31,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0003,5.7364,1.3837],"size":[0.0405,0.1215,0.0716],"inflate":0.001,"pivot":[0.0403,5.6863,1.455],"rotation":[7.8604,-34.1314,-4.4294],"uv":{"north":{"uv":[60,31],"uv_size":[0.25,0.25]},"east":{"uv":[32,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,32],"uv_size":[0.25,0.25]},"west":{"uv":[33,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,33],"uv_size":[0.25,0.25]},"down":{"uv":[34,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0406,5.7239,1.2954],"size":[0.0812,0.1215,0.061],"inflate":0.001,"pivot":[0,6.5506,1.2957],"rotation":[6.5,0,0],"uv":{"north":{"uv":[60,34],"uv_size":[0.25,0.25]},"east":{"uv":[35,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,35],"uv_size":[0.25,0.25]},"west":{"uv":[36,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,36],"uv_size":[0.25,0.25]},"down":{"uv":[37,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0402,6.0186,1.3837],"size":[0.0405,0.1013,0.0716],"inflate":0.001,"pivot":[-0.0403,5.6863,1.455],"rotation":[7.8604,34.1314,4.4294],"uv":{"north":{"uv":[60,37],"uv_size":[0.25,0.25]},"east":{"uv":[38,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,38],"uv_size":[0.25,0.25]},"west":{"uv":[39,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,39],"uv_size":[0.25,0.25]},"down":{"uv":[40,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0003,6.0186,1.3837],"size":[0.0405,0.1013,0.0716],"inflate":0.001,"pivot":[0.0403,5.6863,1.455],"rotation":[7.8604,-34.1314,-4.4294],"uv":{"north":{"uv":[60,40],"uv_size":[0.25,0.25]},"east":{"uv":[41,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,41],"uv_size":[0.25,0.25]},"west":{"uv":[42,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,42],"uv_size":[0.25,0.25]},"down":{"uv":[43,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0406,6.0061,1.2954],"size":[0.0812,0.1014,0.061],"inflate":0.001,"pivot":[0,6.5506,1.2957],"rotation":[6.5,0,0],"uv":{"north":{"uv":[60,43],"uv_size":[0.25,0.25]},"east":{"uv":[44,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,44],"uv_size":[0.25,0.25]},"west":{"uv":[45,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,45],"uv_size":[0.25,0.25]},"down":{"uv":[46,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0402,6.2806,1.3837],"size":[0.0405,0.1215,0.0716],"inflate":0.001,"pivot":[-0.0403,5.6863,1.455],"rotation":[7.8604,34.1314,4.4294],"uv":{"north":{"uv":[60,46],"uv_size":[0.25,0.25]},"east":{"uv":[47,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,47],"uv_size":[0.25,0.25]},"west":{"uv":[48,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,48],"uv_size":[0.25,0.25]},"down":{"uv":[49,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0003,6.2806,1.3837],"size":[0.0405,0.1215,0.0716],"inflate":0.001,"pivot":[0.0403,5.6863,1.455],"rotation":[7.8604,-34.1314,-4.4294],"uv":{"north":{"uv":[60,49],"uv_size":[0.25,0.25]},"east":{"uv":[50,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,50],"uv_size":[0.25,0.25]},"west":{"uv":[51,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,51],"uv_size":[0.25,0.25]},"down":{"uv":[52,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0406,6.2681,1.2954],"size":[0.0812,0.1215,0.061],"inflate":0.001,"pivot":[0,6.5506,1.2957],"rotation":[6.5,0,0],"uv":{"north":{"uv":[60,52],"uv_size":[0.25,0.25]},"east":{"uv":[53,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,53],"uv_size":[0.25,0.25]},"west":{"uv":[54,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,54],"uv_size":[0.25,0.25]},"down":{"uv":[55,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0402,6.5628,1.3837],"size":[0.0405,0.2626,0.0716],"inflate":0.001,"pivot":[-0.0403,5.6863,1.455],"rotation":[7.8604,34.1314,4.4294],"uv":{"north":{"uv":[60,55],"uv_size":[0.25,0.25]},"east":{"uv":[56,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,56],"uv_size":[0.25,0.25]},"west":{"uv":[57,60],"uv_size":[0.25,0.25]},"up":{"uv":[60,57],"uv_size":[0.25,0.25]},"down":{"uv":[58,60.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0003,6.5628,1.3837],"size":[0.0405,0.2626,0.0716],"inflate":0.001,"pivot":[0.0403,5.6863,1.455],"rotation":[7.8604,-34.1314,-4.4294],"uv":{"north":{"uv":[60,58],"uv_size":[0.25,0.25]},"east":{"uv":[59,60],"uv_size":[0.25,0.25]},"south":{"uv":[60,59],"uv_size":[0.25,0.25]},"west":{"uv":[60,60],"uv_size":[0.25,0.25]},"up":{"uv":[0,61],"uv_size":[0.25,0.25]},"down":{"uv":[61,0.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0406,6.5503,1.2954],"size":[0.0812,0.2626,0.061],"inflate":0.001,"pivot":[0,6.5506,1.2957],"rotation":[6.5,0,0],"uv":{"north":{"uv":[1,61],"uv_size":[0.25,0.25]},"east":{"uv":[61,1],"uv_size":[0.25,0.25]},"south":{"uv":[2,61],"uv_size":[0.25,0.25]},"west":{"uv":[61,2],"uv_size":[0.25,0.25]},"up":{"uv":[3,61],"uv_size":[0.25,0.25]},"down":{"uv":[61,3.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0806,4.5185,-0.5384],"size":[0.1613,0.262,0.1613],"pivot":[0,4.9418,-0.8004],"rotation":[-22.25,0,0],"uv":{"north":{"uv":[4,61],"uv_size":[0.25,0.25]},"east":{"uv":[61,4],"uv_size":[0.25,0.25]},"south":{"uv":[5,61],"uv_size":[0.25,0.25]},"west":{"uv":[61,5],"uv_size":[0.25,0.25]},"up":{"uv":[6,61],"uv_size":[0.25,0.25]},"down":{"uv":[61,6.25],"uv_size":[0.25,-0.25]}}}]},{"name":"group14","parent":"group2","pivot":[0,-2.8531,0.1205],"cubes":[{"origin":[0,-3.6795,0.1205],"size":[0,1.6528,0.1085],"pivot":[0,-2.8531,0.1205],"rotation":[0,21.8014,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.75]},"east":{"uv":[4,13],"uv_size":[0.25,1.75]},"south":{"uv":[0,0],"uv_size":[0,1.75]},"west":{"uv":[13,4],"uv_size":[0.25,1.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,-5.2981,0.1972],"size":[0,1.6327,0.1099],"pivot":[0,-4.4769,0.1972],"rotation":[5.9092,21.4133,2.1641],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.75]},"east":{"uv":[5,13],"uv_size":[0.25,1.75]},"south":{"uv":[0,0],"uv_size":[0,1.75]},"west":{"uv":[6,13],"uv_size":[0.25,1.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,-7.1703,0.7571],"size":[0,1.0078,0.1079],"pivot":[0,-6.6378,0.7571],"rotation":[37.8158,17.6539,13.2447],"uv":{"north":{"uv":[0,0],"uv_size":[0,1]},"east":{"uv":[6,24],"uv_size":[0.25,1]},"south":{"uv":[0,0],"uv_size":[0,1]},"west":{"uv":[24,6],"uv_size":[0.25,1]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,-6.2221,0.3708],"size":[0,0.9473,0.1081],"pivot":[0,-5.7535,0.3708],"rotation":[12.1002,21.4593,4.4846],"uv":{"north":{"uv":[0,0],"uv_size":[0,1]},"east":{"uv":[7,24],"uv_size":[0.25,1]},"south":{"uv":[0,0],"uv_size":[0,1]},"west":{"uv":[24,7],"uv_size":[0.25,1]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0403,-6.1936,0.4545],"size":[0,0.0206,0.1061],"pivot":[0.0403,-6.1936,0.5606],"rotation":[23.1002,21.4593,4.4846],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[7,61],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[61,7],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0.0403,-6.2151,0.4549],"size":[0,0.0215,0.1057],"pivot":[0.0403,-6.1936,0.5606],"rotation":[26.3158,17.6539,13.2447],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[8,61],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[61,8],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,-7.2849,1.0423],"size":[0,0.2822,0.1085],"pivot":[0,-7.1539,1.1509],"rotation":[-135.1264,15.8262,15.1907],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[9,61],"uv_size":[0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[61,9],"uv_size":[0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0403,-7.0041,-0.9504],"size":[0.0764,0.1613,2.1],"pivot":[0,-7.0041,1.1496],"rotation":[-93.0854,0.05,1.5505],"uv":{"north":{"uv":[10,61],"uv_size":[0.25,0.25]},"east":{"uv":[10,4],"uv_size":[2,0.25]},"south":{"uv":[61,10],"uv_size":[0.25,0.25]},"west":{"uv":[10,8],"uv_size":[2,0.25]},"up":{"uv":[9,10],"uv_size":[0.25,2]},"down":{"uv":[10,12],"uv_size":[0.25,-2]}}}]},{"name":"group13","parent":"group2","pivot":[0,-2.8531,0.1205],"cubes":[{"origin":[0,-3.6795,0.1205],"size":[0,1.6528,0.1085],"pivot":[0,-2.8531,0.1205],"rotation":[0,-21.8014,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.75]},"east":{"uv":[13.25,4],"uv_size":[-0.25,1.75]},"south":{"uv":[0,0],"uv_size":[0,1.75]},"west":{"uv":[4.25,13],"uv_size":[-0.25,1.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,-5.2981,0.1972],"size":[0,1.6327,0.1099],"pivot":[0,-4.4769,0.1972],"rotation":[5.9092,-21.4133,-2.1641],"uv":{"north":{"uv":[0,0],"uv_size":[0,1.75]},"east":{"uv":[6.25,13],"uv_size":[-0.25,1.75]},"south":{"uv":[0,0],"uv_size":[0,1.75]},"west":{"uv":[5.25,13],"uv_size":[-0.25,1.75]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,-7.1703,0.7571],"size":[0,1.0078,0.1079],"pivot":[0,-6.6378,0.7571],"rotation":[37.8158,-17.6539,-13.2447],"uv":{"north":{"uv":[0,0],"uv_size":[0,1]},"east":{"uv":[24.25,6],"uv_size":[-0.25,1]},"south":{"uv":[0,0],"uv_size":[0,1]},"west":{"uv":[6.25,24],"uv_size":[-0.25,1]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,-6.2221,0.3708],"size":[0,0.9473,0.1081],"pivot":[0,-5.7535,0.3708],"rotation":[12.1002,-21.4593,-4.4846],"uv":{"north":{"uv":[0,0],"uv_size":[0,1]},"east":{"uv":[24.25,7],"uv_size":[-0.25,1]},"south":{"uv":[0,0],"uv_size":[0,1]},"west":{"uv":[7.25,24],"uv_size":[-0.25,1]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0403,-6.1936,0.4545],"size":[0,0.0206,0.1061],"pivot":[-0.0403,-6.1936,0.5606],"rotation":[23.1002,-21.4593,-4.4846],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[61.25,7],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[7.25,61],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0403,-6.2151,0.4549],"size":[0,0.0215,0.1057],"pivot":[-0.0403,-6.1936,0.5606],"rotation":[26.3158,-17.6539,-13.2447],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[61.25,8],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[8.25,61],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[0,-7.2849,1.0423],"size":[0,0.2822,0.1085],"pivot":[0,-7.1539,1.1509],"rotation":[-135.1264,-15.8262,-15.1907],"uv":{"north":{"uv":[0,0],"uv_size":[0,0.25]},"east":{"uv":[61.25,9],"uv_size":[-0.25,0.25]},"south":{"uv":[0,0],"uv_size":[0,0.25]},"west":{"uv":[9.25,61],"uv_size":[-0.25,0.25]},"up":{"uv":[0,0],"uv_size":[0,0.25]},"down":{"uv":[0,0.25],"uv_size":[0,-0.25]}}},{"origin":[-0.0361,-7.0041,-0.9504],"size":[0.0764,0.1613,2.1],"pivot":[0,-7.0041,1.1496],"rotation":[-93.0854,-0.05,-1.5505],"uv":{"north":{"uv":[10.25,61],"uv_size":[-0.25,0.25]},"east":{"uv":[12,8],"uv_size":[-2,0.25]},"south":{"uv":[61.25,10],"uv_size":[-0.25,0.25]},"west":{"uv":[12,4],"uv_size":[-2,0.25]},"up":{"uv":[9.25,10],"uv_size":[-0.25,2]},"down":{"uv":[10.25,12],"uv_size":[-0.25,-2]}}}]},{"name":"group5","parent":"group2","pivot":[0,5.6533,-0.8303],"cubes":[{"origin":[-0.0708,5.6731,-1.4857],"size":[0.1417,0.0611,1.089],"inflate":0.001,"pivot":[0,5.6533,-0.8303],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[11,61],"uv_size":[0.25,0.25]},"east":{"uv":[8,24],"uv_size":[1,0.25]},"south":{"uv":[61,11],"uv_size":[0.25,0.25]},"west":{"uv":[24,8],"uv_size":[1,0.25]},"up":{"uv":[9,24],"uv_size":[0.25,1]},"down":{"uv":[24,10],"uv_size":[0.25,-1]}}},{"origin":[-0.0708,5.4313,-1.4655],"size":[0.1417,0.061,1.1495],"inflate":0.001,"pivot":[0,5.6533,-0.8303],"rotation":[-43.5,0,0],"uv":{"north":{"uv":[12,61],"uv_size":[0.25,0.25]},"east":{"uv":[19,10],"uv_size":[1.25,0.25]},"south":{"uv":[61,12],"uv_size":[0.25,0.25]},"west":{"uv":[19,11],"uv_size":[1.25,0.25]},"up":{"uv":[9,19],"uv_size":[0.25,1.25]},"down":{"uv":[19,13.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.0706,5.6331,-1.3241],"size":[0.1411,0.0403,0.1209],"pivot":[0,5.6533,-0.8303],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[13,61],"uv_size":[0.25,0.25]},"east":{"uv":[61,13],"uv_size":[0.25,0.25]},"south":{"uv":[14,61],"uv_size":[0.25,0.25]},"west":{"uv":[61,14],"uv_size":[0.25,0.25]},"up":{"uv":[15,61],"uv_size":[0.25,0.25]},"down":{"uv":[61,15.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0706,5.5525,-1.0016],"size":[0.1411,0.0806,0.6047],"pivot":[0,5.6533,-0.8303],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[16,61],"uv_size":[0.25,0.25]},"east":{"uv":[6,36],"uv_size":[0.5,0.25]},"south":{"uv":[61,16],"uv_size":[0.25,0.25]},"west":{"uv":[36,6],"uv_size":[0.5,0.25]},"up":{"uv":[7,36],"uv_size":[0.25,0.5]},"down":{"uv":[36,7.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0706,5.5323,-1.1024],"size":[0.1411,0.0403,0.7861],"pivot":[0,5.6533,-0.8303],"rotation":[-43.5,0,0],"uv":{"north":{"uv":[17,61],"uv_size":[0.25,0.25]},"east":{"uv":[29,3],"uv_size":[0.75,0.25]},"south":{"uv":[61,17],"uv_size":[0.25,0.25]},"west":{"uv":[4,29],"uv_size":[0.75,0.25]},"up":{"uv":[29,4],"uv_size":[0.25,0.75]},"down":{"uv":[5,29.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0706,5.492,-1.2032],"size":[0.1411,0.0403,0.8869],"pivot":[0,5.6533,-0.8303],"rotation":[-43.5,0,0],"uv":{"north":{"uv":[18,61],"uv_size":[0.25,0.25]},"east":{"uv":[10,24],"uv_size":[1,0.25]},"south":{"uv":[61,18],"uv_size":[0.25,0.25]},"west":{"uv":[24,10],"uv_size":[1,0.25]},"up":{"uv":[11,24],"uv_size":[0.25,1]},"down":{"uv":[24,12],"uv_size":[0.25,-1]}}},{"origin":[-0.0706,5.6331,-1.2233],"size":[0.1411,0.0403,0.8264],"pivot":[0,5.6533,-0.8303],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[19,61],"uv_size":[0.25,0.25]},"east":{"uv":[29,5],"uv_size":[0.75,0.25]},"south":{"uv":[61,19],"uv_size":[0.25,0.25]},"west":{"uv":[6,29],"uv_size":[0.75,0.25]},"up":{"uv":[29,6],"uv_size":[0.25,0.75]},"down":{"uv":[7,29.75],"uv_size":[0.25,-0.75]}}}]},{"name":"group6","parent":"group2","pivot":[0,4.1042,-1.5567],"rotation":[21.75,0,0],"cubes":[{"origin":[-0.0708,4.1614,-2.1307],"size":[0.1417,0.061,1.089],"inflate":0.001,"pivot":[0,4.1416,-1.4753],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[20,61],"uv_size":[0.25,0.25]},"east":{"uv":[12,24],"uv_size":[1,0.25]},"south":{"uv":[61,20],"uv_size":[0.25,0.25]},"west":{"uv":[24,12],"uv_size":[1,0.25]},"up":{"uv":[13,24],"uv_size":[0.25,1]},"down":{"uv":[24,14],"uv_size":[0.25,-1]}}},{"origin":[-0.0708,3.9196,-2.1105],"size":[0.1417,0.0611,1.1495],"inflate":0.001,"pivot":[0,4.1416,-1.4753],"rotation":[-43.5,0,0],"uv":{"north":{"uv":[21,61],"uv_size":[0.25,0.25]},"east":{"uv":[14,19],"uv_size":[1.25,0.25]},"south":{"uv":[61,21],"uv_size":[0.25,0.25]},"west":{"uv":[19,14],"uv_size":[1.25,0.25]},"up":{"uv":[19,15],"uv_size":[0.25,1.25]},"down":{"uv":[19,18.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.0706,4.1214,-1.9691],"size":[0.1411,0.0403,0.1209],"pivot":[0,4.1416,-1.4753],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[22,61],"uv_size":[0.25,0.25]},"east":{"uv":[61,22],"uv_size":[0.25,0.25]},"south":{"uv":[23,61],"uv_size":[0.25,0.25]},"west":{"uv":[61,23],"uv_size":[0.25,0.25]},"up":{"uv":[24,61],"uv_size":[0.25,0.25]},"down":{"uv":[61,24.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0706,4.0408,-1.6466],"size":[0.1411,0.0806,0.6047],"pivot":[0,4.1416,-1.4753],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[25,61],"uv_size":[0.25,0.25]},"east":{"uv":[8,36],"uv_size":[0.5,0.25]},"south":{"uv":[61,25],"uv_size":[0.25,0.25]},"west":{"uv":[36,8],"uv_size":[0.5,0.25]},"up":{"uv":[9,36],"uv_size":[0.25,0.5]},"down":{"uv":[36,9.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0706,4.0206,-1.7474],"size":[0.1411,0.0403,0.7861],"pivot":[0,4.1416,-1.4753],"rotation":[-43.5,0,0],"uv":{"north":{"uv":[26,61],"uv_size":[0.25,0.25]},"east":{"uv":[29,7],"uv_size":[0.75,0.25]},"south":{"uv":[61,26],"uv_size":[0.25,0.25]},"west":{"uv":[8,29],"uv_size":[0.75,0.25]},"up":{"uv":[29,8],"uv_size":[0.25,0.75]},"down":{"uv":[9,29.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0706,3.9803,-1.8482],"size":[0.1411,0.0403,0.8869],"pivot":[0,4.1416,-1.4753],"rotation":[-43.5,0,0],"uv":{"north":{"uv":[27,61],"uv_size":[0.25,0.25]},"east":{"uv":[14,24],"uv_size":[1,0.25]},"south":{"uv":[61,27],"uv_size":[0.25,0.25]},"west":{"uv":[24,14],"uv_size":[1,0.25]},"up":{"uv":[15,24],"uv_size":[0.25,1]},"down":{"uv":[24,16],"uv_size":[0.25,-1]}}},{"origin":[-0.0706,4.1214,-1.8683],"size":[0.1411,0.0403,0.8264],"pivot":[0,4.1416,-1.4753],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[28,61],"uv_size":[0.25,0.25]},"east":{"uv":[29,9],"uv_size":[0.75,0.25]},"south":{"uv":[61,28],"uv_size":[0.25,0.25]},"west":{"uv":[10,29],"uv_size":[0.75,0.25]},"up":{"uv":[29,10],"uv_size":[0.25,0.75]},"down":{"uv":[11,29.75],"uv_size":[0.25,-0.75]}}}]},{"name":"group7","parent":"group2","pivot":[0,2.6327,-1.5768],"rotation":[46.5,0,0],"cubes":[{"origin":[-0.0708,2.69,-2.1508],"size":[0.1417,0.0611,1.089],"inflate":0.001,"pivot":[0,2.6702,-1.4954],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[29,61],"uv_size":[0.25,0.25]},"east":{"uv":[16,24],"uv_size":[1,0.25]},"south":{"uv":[61,29],"uv_size":[0.25,0.25]},"west":{"uv":[24,16],"uv_size":[1,0.25]},"up":{"uv":[17,24],"uv_size":[0.25,1]},"down":{"uv":[24,18],"uv_size":[0.25,-1]}}},{"origin":[-0.0708,2.4482,-2.1307],"size":[0.1417,0.061,1.1495],"inflate":0.001,"pivot":[0,2.6702,-1.4954],"rotation":[-43.5,0,0],"uv":{"north":{"uv":[30,61],"uv_size":[0.25,0.25]},"east":{"uv":[18,19],"uv_size":[1.25,0.25]},"south":{"uv":[61,30],"uv_size":[0.25,0.25]},"west":{"uv":[0,20],"uv_size":[1.25,0.25]},"up":{"uv":[20,0],"uv_size":[0.25,1.25]},"down":{"uv":[2,21.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.0706,2.65,-1.9893],"size":[0.1411,0.0403,0.1209],"pivot":[0,2.6702,-1.4954],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[31,61],"uv_size":[0.25,0.25]},"east":{"uv":[61,31],"uv_size":[0.25,0.25]},"south":{"uv":[32,61],"uv_size":[0.25,0.25]},"west":{"uv":[61,32],"uv_size":[0.25,0.25]},"up":{"uv":[33,61],"uv_size":[0.25,0.25]},"down":{"uv":[61,33.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0706,2.5694,-1.6668],"size":[0.1411,0.0806,0.6047],"pivot":[0,2.6702,-1.4954],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[34,61],"uv_size":[0.25,0.25]},"east":{"uv":[10,36],"uv_size":[0.5,0.25]},"south":{"uv":[61,34],"uv_size":[0.25,0.25]},"west":{"uv":[36,10],"uv_size":[0.5,0.25]},"up":{"uv":[11,36],"uv_size":[0.25,0.5]},"down":{"uv":[36,11.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0706,2.5492,-1.7676],"size":[0.1411,0.0403,0.7861],"pivot":[0,2.6702,-1.4954],"rotation":[-43.5,0,0],"uv":{"north":{"uv":[35,61],"uv_size":[0.25,0.25]},"east":{"uv":[29,11],"uv_size":[0.75,0.25]},"south":{"uv":[61,35],"uv_size":[0.25,0.25]},"west":{"uv":[12,29],"uv_size":[0.75,0.25]},"up":{"uv":[29,12],"uv_size":[0.25,0.75]},"down":{"uv":[13,29.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0706,2.5089,-1.8683],"size":[0.1411,0.0403,0.8869],"pivot":[0,2.6702,-1.4954],"rotation":[-43.5,0,0],"uv":{"north":{"uv":[36,61],"uv_size":[0.25,0.25]},"east":{"uv":[18,24],"uv_size":[1,0.25]},"south":{"uv":[61,36],"uv_size":[0.25,0.25]},"west":{"uv":[24,18],"uv_size":[1,0.25]},"up":{"uv":[19,24],"uv_size":[0.25,1]},"down":{"uv":[24,20],"uv_size":[0.25,-1]}}},{"origin":[-0.0706,2.65,-1.8885],"size":[0.1411,0.0403,0.8264],"pivot":[0,2.6702,-1.4954],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[37,61],"uv_size":[0.25,0.25]},"east":{"uv":[29,13],"uv_size":[0.75,0.25]},"south":{"uv":[61,37],"uv_size":[0.25,0.25]},"west":{"uv":[14,29],"uv_size":[0.75,0.25]},"up":{"uv":[29,14],"uv_size":[0.25,0.75]},"down":{"uv":[15,29.75],"uv_size":[0.25,-0.75]}}}]},{"name":"group8","parent":"group2","pivot":[0,1.0757,-1.0328],"rotation":[72.25,0,0],"cubes":[{"origin":[-0.0708,1.133,-1.6068],"size":[0.1417,0.0611,1.089],"inflate":0.001,"pivot":[0,1.1131,-0.9514],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[38,61],"uv_size":[0.25,0.25]},"east":{"uv":[20,24],"uv_size":[1,0.25]},"south":{"uv":[61,38],"uv_size":[0.25,0.25]},"west":{"uv":[24,20],"uv_size":[1,0.25]},"up":{"uv":[21,24],"uv_size":[0.25,1]},"down":{"uv":[24,22],"uv_size":[0.25,-1]}}},{"origin":[-0.0708,0.8911,-1.5866],"size":[0.1417,0.061,1.1495],"inflate":0.001,"pivot":[0,1.1131,-0.9514],"rotation":[-43.5,0,0],"uv":{"north":{"uv":[39,61],"uv_size":[0.25,0.25]},"east":{"uv":[20,2],"uv_size":[1.25,0.25]},"south":{"uv":[61,39],"uv_size":[0.25,0.25]},"west":{"uv":[3,20],"uv_size":[1.25,0.25]},"up":{"uv":[20,3],"uv_size":[0.25,1.25]},"down":{"uv":[20,6.25],"uv_size":[0.25,-1.25]}}},{"origin":[-0.0706,1.093,-1.4452],"size":[0.1411,0.0403,0.1209],"pivot":[0,1.1131,-0.9514],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[40,61],"uv_size":[0.25,0.25]},"east":{"uv":[61,40],"uv_size":[0.25,0.25]},"south":{"uv":[41,61],"uv_size":[0.25,0.25]},"west":{"uv":[61,41],"uv_size":[0.25,0.25]},"up":{"uv":[42,61],"uv_size":[0.25,0.25]},"down":{"uv":[61,42.25],"uv_size":[0.25,-0.25]}}},{"origin":[-0.0706,1.0123,-1.1227],"size":[0.1411,0.0806,0.6047],"pivot":[0,1.1131,-0.9514],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[43,61],"uv_size":[0.25,0.25]},"east":{"uv":[12,36],"uv_size":[0.5,0.25]},"south":{"uv":[61,43],"uv_size":[0.25,0.25]},"west":{"uv":[36,12],"uv_size":[0.5,0.25]},"up":{"uv":[13,36],"uv_size":[0.25,0.5]},"down":{"uv":[36,13.5],"uv_size":[0.25,-0.5]}}},{"origin":[-0.0706,0.9922,-1.2235],"size":[0.1411,0.0403,0.7861],"pivot":[0,1.1131,-0.9514],"rotation":[-43.5,0,0],"uv":{"north":{"uv":[44,61],"uv_size":[0.25,0.25]},"east":{"uv":[29,15],"uv_size":[0.75,0.25]},"south":{"uv":[61,44],"uv_size":[0.25,0.25]},"west":{"uv":[16,29],"uv_size":[0.75,0.25]},"up":{"uv":[29,16],"uv_size":[0.25,0.75]},"down":{"uv":[17,29.75],"uv_size":[0.25,-0.75]}}},{"origin":[-0.0706,0.9519,-1.3243],"size":[0.1411,0.0403,0.8869],"pivot":[0,1.1131,-0.9514],"rotation":[-43.5,0,0],"uv":{"north":{"uv":[45,61],"uv_size":[0.25,0.25]},"east":{"uv":[22,24],"uv_size":[1,0.25]},"south":{"uv":[61,45],"uv_size":[0.25,0.25]},"west":{"uv":[24,22],"uv_size":[1,0.25]},"up":{"uv":[23,24],"uv_size":[0.25,1]},"down":{"uv":[24,24],"uv_size":[0.25,-1]}}},{"origin":[-0.0706,1.093,-1.3445],"size":[0.1411,0.0403,0.8264],"pivot":[0,1.1131,-0.9514],"rotation":[-22.75,0,0],"uv":{"north":{"uv":[46,61],"uv_size":[0.25,0.25]},"east":{"uv":[29,17],"uv_size":[0.75,0.25]},"south":{"uv":[61,46],"uv_size":[0.25,0.25]},"west":{"uv":[18,29],"uv_size":[0.75,0.25]},"up":{"uv":[29,18],"uv_size":[0.25,0.75]},"down":{"uv":[19,29.75],"uv_size":[0.25,-0.75]}}}]},{"name":"constraint","pivot":[-0.0156,8.125,1.9375]},{"name":"camera","pivot":[3.4563,3.4656,-0.7687]},{"name":"view","pivot":[0,0,0]},{"name":"refit_view","parent":"view","pivot":[22.475,5.55,0.2],"rotation":[0,90,0]},{"name":"idle_view","parent":"view","pivot":[-0.0001,63.4219,-0.9913],"rotation":[0,-1,0]},{"name":"positioning","pivot":[-0.0156,4.125,4.9375]},{"name":"ground","parent":"positioning","pivot":[0,0,0]},{"name":"thirdperson_hand","parent":"positioning","pivot":[-0.0156,6.125,-2.0625]},{"name":"fixed","parent":"positioning","pivot":[0.7969,5.125,-1.0625],"rotation":[0,90,0]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/akita_neru.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/akita_neru.anim.json new file mode 100644 index 0000000..e32e2a0 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/akita_neru.anim.json @@ -0,0 +1 @@ +{"autoplay":[],"clips":{"Blink":{"loop":"once","length":0.25,"bones":{"Eyelid":{"position":[[0,0,0,-0.075],[0.125,0,-2,-0.11],[0.25,0,0,0]]},"Eyebrows":{"position":[[0.08333,0,0,0],[0.125,0,-0.2,-0.2],[0.16667,0,0,0]],"scale":[[0.08333,1,1,1],[0.125,1,0.75,1],[0.16667,1,1,1]]}}},"EyesClosed":{"loop":"hold","length":0,"bones":{"Eyelid":{"position":[[0,0,-2,-0.11]]},"Eyebrows":{"position":[[0,0,-0.2,-0.2]],"scale":[[0,1,0.75,1]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/akita_neru.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/akita_neru.geo.json new file mode 100644 index 0000000..22a46c0 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/akita_neru.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.akita_neru","texture_width":256,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"root","pivot":[0,0,0]},{"name":"Head","pivot":[0,23,0],"parent":"root","cubes":[{"origin":[-4,23,-4],"size":[8,8,8],"uv":{"north":{"uv":[8,24],"uv_size":[8,8]},"east":{"uv":[0,24],"uv_size":[8,8]},"south":{"uv":[24,24],"uv_size":[8,8]},"west":{"uv":[16,24],"uv_size":[8,8]},"up":{"uv":[16,24],"uv_size":[-8,-8]},"down":{"uv":[24,16],"uv_size":[-8,8]}}},{"origin":[-4,23,-4],"size":[8,8,8],"inflate":0.5,"uv":{"north":{"uv":[8,8],"uv_size":[8,8]},"east":{"uv":[0,8],"uv_size":[8,8]},"south":{"uv":[24,8],"uv_size":[8,8]},"west":{"uv":[16,8],"uv_size":[8,8]},"up":{"uv":[16,8],"uv_size":[-8,-8]},"down":{"uv":[24,0],"uv_size":[-8,8]}}},{"origin":[3.5,25,-3],"size":[1,3,3],"uv":{"north":{"uv":[3,19],"uv_size":[1,3]},"east":{"uv":[0,19],"uv_size":[3,3]},"south":{"uv":[7,19],"uv_size":[1,3]},"west":{"uv":[4,19],"uv_size":[3,3]},"up":{"uv":[4,19],"uv_size":[-1,-3]},"down":{"uv":[5,16],"uv_size":[-1,3]}}},{"origin":[3.8,25.3,-2.7],"size":[1,2.7,2.4],"inflate":-0.15,"uv":{"north":{"uv":[3,3],"uv_size":[1,3]},"east":{"uv":[0,3],"uv_size":[3,3]},"south":{"uv":[7,3],"uv_size":[1,3]},"west":{"uv":[4,3],"uv_size":[3,3]},"up":{"uv":[4,3],"uv_size":[-1,-3]},"down":{"uv":[5,0],"uv_size":[-1,3]}}},{"origin":[-4.5,25,-3],"size":[1,3,3],"uv":{"north":{"uv":[4,19],"uv_size":[-1,3]},"east":{"uv":[7,19],"uv_size":[-3,3]},"south":{"uv":[8,19],"uv_size":[-1,3]},"west":{"uv":[3,19],"uv_size":[-3,3]},"up":{"uv":[3,19],"uv_size":[1,-3]},"down":{"uv":[4,16],"uv_size":[1,3]}}},{"origin":[-4.8,25.3,-2.7],"size":[1,2.7,2.4],"inflate":-0.15,"uv":{"north":{"uv":[4,3],"uv_size":[-1,3]},"east":{"uv":[7,3],"uv_size":[-3,3]},"south":{"uv":[8,3],"uv_size":[-1,3]},"west":{"uv":[3,3],"uv_size":[-3,3]},"up":{"uv":[3,3],"uv_size":[1,-3]},"down":{"uv":[4,0],"uv_size":[1,3]}}},{"origin":[1,27,-4],"size":[4,1,3],"pivot":[3,27.5,-1.5],"rotation":[-90,0,80],"uv":{"north":{"uv":[3,67],"uv_size":[4,1]},"east":{"uv":[0,67],"uv_size":[3,1]},"south":{"uv":[10,67],"uv_size":[4,1]},"west":{"uv":[7,67],"uv_size":[3,1]},"up":{"uv":[7,67],"uv_size":[-4,-3]},"down":{"uv":[11,64],"uv_size":[-4,3]}}}]},{"name":"LeftTailMount","pivot":[-4,31,2],"parent":"Head","rotation":[0,10,0],"cubes":[{"origin":[-5,29,0],"size":[3,3,3],"uv":{"north":{"uv":[62,13],"uv_size":[-3,3]},"east":{"uv":[65,13],"uv_size":[-3,3]},"south":{"uv":[68,13],"uv_size":[-3,3]},"west":{"uv":[59,13],"uv_size":[-3,3]},"up":{"uv":[59,13],"uv_size":[3,-3]},"down":{"uv":[62,10],"uv_size":[3,3]}}},{"origin":[-6,29.5,0.5],"size":[1,2,2],"uv":{"north":{"uv":[48,2],"uv_size":[-1,2]},"east":{"uv":[50,2],"uv_size":[-2,2]},"south":{"uv":[51,2],"uv_size":[-1,2]},"west":{"uv":[47,2],"uv_size":[-2,2]},"up":{"uv":[47,2],"uv_size":[1,-2]},"down":{"uv":[48,0],"uv_size":[1,2]}}}]},{"name":"LeftTail","pivot":[-4.5,31,1.5],"parent":"LeftTailMount","rotation":[0,-10,2.5]},{"name":"LeftTailOffset","pivot":[-4.5,31,1.5],"parent":"LeftTail","rotation":[0,15,0],"cubes":[{"origin":[-7.5,24,-0.5],"size":[3,7,4],"uv":{"north":{"uv":[39,21],"uv_size":[-3,7]},"east":{"uv":[43,21],"uv_size":[-4,7]},"south":{"uv":[46,21],"uv_size":[-3,7]},"west":{"uv":[36,21],"uv_size":[-4,7]},"up":{"uv":[36,21],"uv_size":[3,-4]},"down":{"uv":[39,17],"uv_size":[3,4]}}},{"origin":[-7.5,24,-0.5],"size":[3,7,4],"inflate":0.25,"uv":{"north":{"uv":[67,21],"uv_size":[-3,7]},"east":{"uv":[71,21],"uv_size":[-4,7]},"south":{"uv":[74,21],"uv_size":[-3,7]},"west":{"uv":[64,21],"uv_size":[-4,7]},"up":{"uv":[64,21],"uv_size":[3,-4]},"down":{"uv":[67,17],"uv_size":[3,4]}}}]},{"name":"LeftTail2","pivot":[-6.5,23,1.5],"parent":"LeftTailOffset","rotation":[0,0,-2.5],"cubes":[{"origin":[-8.45638,11.99905,-1],"size":[4,12,5],"uv":{"north":{"uv":[41,5],"uv_size":[-4,12]},"east":{"uv":[46,5],"uv_size":[-5,12]},"south":{"uv":[50,5],"uv_size":[-4,12]},"west":{"uv":[37,5],"uv_size":[-5,12]},"up":{"uv":[37,5],"uv_size":[4,-5]},"down":{"uv":[41,0],"uv_size":[4,5]}}},{"origin":[-8.45638,11.99905,-1],"size":[4,12,5],"inflate":0.25,"uv":{"north":{"uv":[75,33],"uv_size":[-4,12]},"east":{"uv":[80,33],"uv_size":[-5,12]},"south":{"uv":[84,33],"uv_size":[-4,12]},"west":{"uv":[71,33],"uv_size":[-5,12]},"up":{"uv":[71,33],"uv_size":[4,-5]},"down":{"uv":[75,28],"uv_size":[4,5]}}}]},{"name":"LeftTail3","pivot":[-6.5,12,1.5],"parent":"LeftTail2","rotation":[0,0,-5],"cubes":[{"origin":[-8,6,-0.5],"size":[3,6,4],"inflate":0.1,"uv":{"north":{"uv":[57,4],"uv_size":[-3,6]},"east":{"uv":[61,4],"uv_size":[-4,6]},"south":{"uv":[64,4],"uv_size":[-3,6]},"west":{"uv":[54,4],"uv_size":[-4,6]},"up":{"uv":[54,4],"uv_size":[3,-4]},"down":{"uv":[57,0],"uv_size":[3,4]}}},{"origin":[-8,6,-0.5],"size":[3,6,4],"inflate":0.35,"uv":{"north":{"uv":[81,22],"uv_size":[-3,6]},"east":{"uv":[85,22],"uv_size":[-4,6]},"south":{"uv":[88,22],"uv_size":[-3,6]},"west":{"uv":[78,22],"uv_size":[-4,6]},"up":{"uv":[78,22],"uv_size":[3,-4]},"down":{"uv":[81,18],"uv_size":[3,4]}}}]},{"name":"LeftSpyglassPivot","pivot":[-2,27,-4],"parent":"Head"},{"name":"RightSpyglassPivot","pivot":[2,27,-4],"parent":"Head"},{"name":"HelmetItemPivot","pivot":[0,23,0],"parent":"Head"},{"name":"HelmetPivot","pivot":[0,23,0],"parent":"Head"},{"name":"Hair","pivot":[0,31,-4.5],"parent":"Head","cubes":[{"origin":[-1,26,-4.5],"size":[2,4,1],"pivot":[0,30,-3.5],"rotation":[0,0,10],"uv":{"north":{"uv":[60,29],"uv_size":[2,4]}}},{"origin":[2,22,-4],"size":[2,7,2],"pivot":[3,29,-3],"rotation":[-2.5,0,-5],"inflate":0.25,"uv":{"north":{"uv":[22,61],"uv_size":[2,7]},"east":{"uv":[20,61],"uv_size":[2,7]},"south":{"uv":[26,61],"uv_size":[2,7]},"west":{"uv":[24,61],"uv_size":[2,7]},"up":{"uv":[24,61],"uv_size":[-2,-2]},"down":{"uv":[26,59],"uv_size":[-2,2]}}},{"origin":[-4,22,-4],"size":[2,7,2],"pivot":[-3,29,-3],"rotation":[-2.5,0,5],"inflate":0.25,"uv":{"north":{"uv":[24,61],"uv_size":[-2,7]},"east":{"uv":[26,61],"uv_size":[-2,7]},"south":{"uv":[28,61],"uv_size":[-2,7]},"west":{"uv":[22,61],"uv_size":[-2,7]},"up":{"uv":[22,61],"uv_size":[2,-2]},"down":{"uv":[24,59],"uv_size":[2,2]}}}]},{"name":"Eyelid","pivot":[0,23,4],"parent":"Head","cubes":[{"origin":[1,27,-3.9],"size":[2,3,1],"uv":{"north":{"uv":[31,42],"uv_size":[2,3]},"east":{"uv":[30,42],"uv_size":[1,3]},"south":{"uv":[34,42],"uv_size":[2,3]},"west":{"uv":[33,42],"uv_size":[1,3]},"up":{"uv":[33,42],"uv_size":[-2,-1]},"down":{"uv":[35,41],"uv_size":[-2,1]}}},{"origin":[-3,27,-3.9],"size":[2,3,1],"uv":{"north":{"uv":[31,42],"uv_size":[2,3]},"east":{"uv":[30,42],"uv_size":[1,3]},"west":{"uv":[33,42],"uv_size":[1,3]},"up":{"uv":[33,42],"uv_size":[-2,-1]},"down":{"uv":[35,41],"uv_size":[-2,1]}}}]},{"name":"Eyebrows","pivot":[0,27.5,-4],"parent":"Eyelid","cubes":[{"origin":[1,27,-4.25],"size":[2,1,1],"uv":{"north":{"uv":[1,7],"uv_size":[2,1]},"east":{"uv":[0,7],"uv_size":[1,1]},"south":{"uv":[4,7],"uv_size":[2,1]},"west":{"uv":[3,7],"uv_size":[1,1]},"up":{"uv":[3,7],"uv_size":[-2,-1]},"down":{"uv":[5,6],"uv_size":[-2,1]}}},{"origin":[-3,27,-4.25],"size":[2,1,1],"uv":{"north":{"uv":[1,7],"uv_size":[2,1]},"east":{"uv":[0,7],"uv_size":[1,1]},"south":{"uv":[4,7],"uv_size":[2,1]},"west":{"uv":[3,7],"uv_size":[1,1]},"up":{"uv":[3,7],"uv_size":[-2,-1]},"down":{"uv":[5,6],"uv_size":[-2,1]}}}]},{"name":"Eyes","pivot":[0,23,0],"parent":"Head","cubes":[{"origin":[1,25,-3.975],"size":[1,2,1],"uv":{"north":{"uv":[25,1],"uv_size":[1,2]},"east":{"uv":[24,1],"uv_size":[1,2]},"south":{"uv":[27,1],"uv_size":[1,2]},"west":{"uv":[26,1],"uv_size":[1,2]},"up":{"uv":[26,1],"uv_size":[-1,-1]},"down":{"uv":[27,0],"uv_size":[-1,1]}}},{"origin":[-2,25,-3.975],"size":[1,2,1],"uv":{"north":{"uv":[25,1],"uv_size":[1,2]},"east":{"uv":[24,1],"uv_size":[1,2]},"west":{"uv":[26,1],"uv_size":[1,2]},"up":{"uv":[26,1],"uv_size":[-1,-1]},"down":{"uv":[27,0],"uv_size":[-1,1]}}},{"origin":[-4,24,-3.95],"size":[8,4,0],"uv":{"north":{"uv":[50,51],"uv_size":[8,4]}}}]},{"name":"Body","pivot":[0,24,0],"parent":"root","cubes":[{"origin":[-3.5,14,-2],"size":[7,9,4],"uv":{"north":{"uv":[4,36],"uv_size":[7,9]},"east":{"uv":[0,36],"uv_size":[4,9]},"south":{"uv":[15,36],"uv_size":[7,9]},"west":{"uv":[11,36],"uv_size":[4,9]},"up":{"uv":[11,36],"uv_size":[-7,-4]},"down":{"uv":[18,32],"uv_size":[-7,4]}}},{"origin":[-3.5,14,-2],"size":[7,9,4],"inflate":0.25,"uv":{"north":{"uv":[32,32],"uv_size":[7,9]},"east":{"uv":[28,32],"uv_size":[4,9]},"south":{"uv":[43,32],"uv_size":[7,9]},"west":{"uv":[39,32],"uv_size":[4,9]},"up":{"uv":[39,32],"uv_size":[-7,-4]},"down":{"uv":[46,28],"uv_size":[-7,4]}}},{"origin":[-3.5,13.8,-2],"size":[3,5,4],"pivot":[-2.5,17.3,0],"rotation":[0,0,20],"inflate":0.24,"uv":{"north":{"uv":[57,46],"uv_size":[-3,5]},"east":{"uv":[61,46],"uv_size":[-4,5]},"south":{"uv":[64,46],"uv_size":[-3,5]},"west":{"uv":[54,46],"uv_size":[-4,5]},"up":{"uv":[54,47],"uv_size":[3,-4]},"down":{"uv":[57,43],"uv_size":[3,4]}}},{"origin":[0.5,13.8,-2],"size":[3,5,4],"pivot":[2.5,17.3,0],"rotation":[0,0,-17.5],"inflate":0.24,"uv":{"north":{"uv":[54,46],"uv_size":[3,5]},"east":{"uv":[50,46],"uv_size":[4,5]},"south":{"uv":[61,46],"uv_size":[3,5]},"west":{"uv":[57,46],"uv_size":[4,5]},"up":{"uv":[57,47],"uv_size":[-3,-4]},"down":{"uv":[60,43],"uv_size":[-3,4]}}},{"origin":[-2.5,21.5,-2.2],"size":[2,2,1],"pivot":[-1.5,23,-1.7],"rotation":[0,10,15],"uv":{"north":{"uv":[27,6],"uv_size":[-2,2]},"east":{"uv":[28,6],"uv_size":[-1,2]},"south":{"uv":[30,6],"uv_size":[-2,2]},"west":{"uv":[25,6],"uv_size":[-1,2]},"up":{"uv":[25,6],"uv_size":[2,-1]},"down":{"uv":[27,5],"uv_size":[2,1]}}},{"origin":[0.5,21.5,-2.2],"size":[2,2,1],"pivot":[1.5,23,-1.7],"rotation":[0,-10,-15],"uv":{"north":{"uv":[25,6],"uv_size":[2,2]},"east":{"uv":[24,6],"uv_size":[1,2]},"south":{"uv":[28,6],"uv_size":[2,2]},"west":{"uv":[27,6],"uv_size":[1,2]},"up":{"uv":[27,6],"uv_size":[-2,-1]},"down":{"uv":[29,5],"uv_size":[-2,1]}}},{"origin":[-2.5,19,-2],"size":[5,3,1],"pivot":[0,22,-2],"rotation":[-10,0,0],"uv":{"north":{"uv":[61,1],"uv_size":[5,3]},"east":{"uv":[60,1],"uv_size":[1,3]},"south":{"uv":[67,1],"uv_size":[5,3]},"west":{"uv":[66,1],"uv_size":[1,3]},"up":{"uv":[66,1],"uv_size":[-5,-1]},"down":{"uv":[71,0],"uv_size":[-5,1]}}}]},{"name":"LeftParrotPivot","pivot":[-6,24,0],"parent":"Body"},{"name":"RightParrotPivot","pivot":[6,24,0],"parent":"Body"},{"name":"ChestplatePivot","pivot":[0,24,0],"parent":"Body"},{"name":"LeftElytra","pivot":[0,24,0],"parent":"Body"},{"name":"RightElytra","pivot":[0,24,0],"parent":"Body"},{"name":"LeggingsPivot","pivot":[0,12,0],"parent":"Body"},{"name":"Skirt","pivot":[0,14,0],"parent":"Body"},{"name":"Front","pivot":[0,14,-2],"parent":"Skirt"},{"name":"FrontCenter","pivot":[0,14,-2],"parent":"Front","rotation":[-25,0,0],"cubes":[{"origin":[-2,11,-2],"size":[4,3,1],"pivot":[0,12,-1.5],"rotation":[0,-180,0],"inflate":0.1,"uv":{"north":{"uv":[29,61],"uv_size":[4,3]},"east":{"uv":[28,61],"uv_size":[1,3]},"south":{"uv":[34,61],"uv_size":[4,3]},"west":{"uv":[33,61],"uv_size":[1,3]},"up":{"uv":[33,60],"uv_size":[-4,-1]},"down":{"uv":[37,59],"uv_size":[-4,1]}}}]},{"name":"FrontLeft","pivot":[-3,14,-2],"parent":"Front","rotation":[-25,0,0],"cubes":[{"origin":[-4,12,-2],"size":[3,2,1],"pivot":[-2.5,12.5,-1.5],"rotation":[0,-180,0],"uv":{"north":{"uv":[25,22],"uv_size":[3,2]},"east":{"uv":[24,22],"uv_size":[1,2]},"south":{"uv":[29,22],"uv_size":[3,2]},"west":{"uv":[28,22],"uv_size":[1,2]},"up":{"uv":[28,21],"uv_size":[-3,-1]},"down":{"uv":[31,20],"uv_size":[-3,1]}}}]},{"name":"FrontRight","pivot":[3,14,-2],"parent":"Front","rotation":[-25,0,0],"cubes":[{"origin":[1,12,-2],"size":[3,2,1],"pivot":[2.5,12.5,-1.5],"rotation":[0,-180,0],"uv":{"north":{"uv":[28,22],"uv_size":[-3,2]},"east":{"uv":[29,22],"uv_size":[-1,2]},"south":{"uv":[32,22],"uv_size":[-3,2]},"west":{"uv":[25,22],"uv_size":[-1,2]},"up":{"uv":[25,21],"uv_size":[3,-1]},"down":{"uv":[28,20],"uv_size":[3,1]}}}]},{"name":"Back","pivot":[0,14,2],"parent":"Skirt"},{"name":"BackCenter","pivot":[0,14,2],"parent":"Back","rotation":[25,0,0],"cubes":[{"origin":[-2,11,1],"size":[4,3,1],"inflate":0.1,"uv":{"north":{"uv":[29,61],"uv_size":[4,3]},"east":{"uv":[28,61],"uv_size":[1,3]},"south":{"uv":[34,61],"uv_size":[4,3]},"west":{"uv":[33,61],"uv_size":[1,3]},"up":{"uv":[33,60],"uv_size":[-4,-1]},"down":{"uv":[37,59],"uv_size":[-4,1]}}}]},{"name":"BackLeft","pivot":[-3,14,2],"parent":"Back","rotation":[25,0,0],"cubes":[{"origin":[-4,12,1],"size":[3,2,1],"uv":{"north":{"uv":[25,22],"uv_size":[3,2]},"east":{"uv":[24,22],"uv_size":[1,2]},"south":{"uv":[29,22],"uv_size":[3,2]},"west":{"uv":[28,22],"uv_size":[1,2]},"up":{"uv":[28,21],"uv_size":[-3,-1]},"down":{"uv":[31,20],"uv_size":[-3,1]}}}]},{"name":"BackRight","pivot":[3,14,2],"parent":"Back","rotation":[25,0,0],"cubes":[{"origin":[1,12,1],"size":[3,2,1],"uv":{"north":{"uv":[25,22],"uv_size":[3,2]},"east":{"uv":[24,22],"uv_size":[1,2]},"south":{"uv":[29,22],"uv_size":[3,2]},"west":{"uv":[28,22],"uv_size":[1,2]},"up":{"uv":[28,21],"uv_size":[-3,-1]},"down":{"uv":[31,20],"uv_size":[-3,1]}}}]},{"name":"Left","pivot":[-4,14,0],"parent":"Skirt","rotation":[0,0,25],"cubes":[{"origin":[-4,12,-2],"size":[1,2,4],"uv":{"north":{"uv":[15,62],"uv_size":[-1,2]},"east":{"uv":[19,62],"uv_size":[-4,2]},"south":{"uv":[20,62],"uv_size":[-1,2]},"west":{"uv":[14,62],"uv_size":[-4,2]},"up":{"uv":[14,61],"uv_size":[1,-4]},"down":{"uv":[15,57],"uv_size":[1,4]}}}]},{"name":"Right","pivot":[4,14,0],"parent":"Skirt","rotation":[0,0,-25],"cubes":[{"origin":[3,12,-2],"size":[1,2,4],"uv":{"north":{"uv":[14,62],"uv_size":[1,2]},"east":{"uv":[10,62],"uv_size":[4,2]},"south":{"uv":[19,62],"uv_size":[1,2]},"west":{"uv":[15,62],"uv_size":[4,2]},"up":{"uv":[15,61],"uv_size":[-1,-4]},"down":{"uv":[16,57],"uv_size":[-1,4]}}}]},{"name":"FrontLeftCorner","pivot":[-4,14,-2],"parent":"Skirt","rotation":[-25,45,0]},{"name":"FrontLeftCornerPivot","pivot":[-4,14,-2],"parent":"FrontLeftCorner","cubes":[{"origin":[-5,12,-2],"size":[2,2,1],"uv":{"north":{"uv":[31,2],"uv_size":[2,2]},"east":{"uv":[30,2],"uv_size":[1,2]},"south":{"uv":[34,2],"uv_size":[2,2]},"west":{"uv":[33,2],"uv_size":[1,2]},"up":{"uv":[33,1],"uv_size":[-2,-1]},"down":{"uv":[35,0],"uv_size":[-2,1]}}}]},{"name":"BackLeftCorner","pivot":[-4,14,2],"parent":"Skirt","rotation":[25,-45,0]},{"name":"BackLeftCornerPivot","pivot":[-4,14,2],"parent":"BackLeftCorner","cubes":[{"origin":[-5,12,1],"size":[2,2,1],"uv":{"north":{"uv":[31,2],"uv_size":[2,2]},"east":{"uv":[30,2],"uv_size":[1,2]},"south":{"uv":[34,2],"uv_size":[2,2]},"west":{"uv":[33,2],"uv_size":[1,2]},"up":{"uv":[33,1],"uv_size":[-2,-1]},"down":{"uv":[35,0],"uv_size":[-2,1]}}}]},{"name":"FrontRightCorner","pivot":[4,14,-2],"parent":"Skirt","rotation":[-25,-45,0]},{"name":"FrontRightCornerPivot","pivot":[4,14,-2],"parent":"FrontRightCorner","cubes":[{"origin":[3,12,-2],"size":[2,2,1],"uv":{"north":{"uv":[31,2],"uv_size":[2,2]},"east":{"uv":[30,2],"uv_size":[1,2]},"south":{"uv":[34,2],"uv_size":[2,2]},"west":{"uv":[33,2],"uv_size":[1,2]},"up":{"uv":[33,1],"uv_size":[-2,-1]},"down":{"uv":[35,0],"uv_size":[-2,1]}}}]},{"name":"BackRightCorner","pivot":[4,14,2],"parent":"Skirt","rotation":[25,45,0]},{"name":"BackRightCornerPivot","pivot":[4,14,2],"parent":"BackRightCorner","cubes":[{"origin":[3,12,1],"size":[2,2,1],"uv":{"north":{"uv":[31,2],"uv_size":[2,2]},"east":{"uv":[30,2],"uv_size":[1,2]},"south":{"uv":[34,2],"uv_size":[2,2]},"west":{"uv":[33,2],"uv_size":[1,2]},"up":{"uv":[33,1],"uv_size":[-2,-1]},"down":{"uv":[35,0],"uv_size":[-2,1]}}}]},{"name":"Tie","pivot":[0,24,-2],"parent":"Body","rotation":[-3.5,0,0],"cubes":[{"origin":[-1,18,-2.25],"size":[2,5,1],"uv":{"north":{"uv":[23,33],"uv_size":[2,5]}}}]},{"name":"LeftArm","pivot":[-3.5,21,0],"parent":"root","rotation":[0,0,10],"cubes":[{"origin":[-6.5,11,-2],"size":[3,12,4],"uv":{"north":{"uv":[50,17],"uv_size":[3,12]},"east":{"uv":[46,17],"uv_size":[4,12]},"south":{"uv":[57,17],"uv_size":[3,12]},"west":{"uv":[53,17],"uv_size":[4,12]},"up":{"uv":[53,17],"uv_size":[-3,-4]},"down":{"uv":[56,13],"uv_size":[-3,4]}}},{"origin":[-6.5,11,-2],"size":[3,12,4],"inflate":0.25,"uv":{"north":{"uv":[4,49],"uv_size":[3,12]},"east":{"uv":[0,49],"uv_size":[4,12]},"south":{"uv":[11,49],"uv_size":[3,12]},"west":{"uv":[7,49],"uv_size":[4,12]},"up":{"uv":[7,49],"uv_size":[-3,-4]},"down":{"uv":[10,45],"uv_size":[-3,4]}}}]},{"name":"Brand","pivot":[-6.5,21,0],"parent":"LeftArm","cubes":[{"origin":[-6.5,21,-2],"size":[1,1,4],"inflate":0.01,"uv":{"north":{"uv":[28,4],"uv_size":[1,1]},"east":{"uv":[24,4],"uv_size":[4,1]},"south":{"uv":[33,4],"uv_size":[1,1]},"west":{"uv":[29,4],"uv_size":[4,1]},"up":{"uv":[29,4],"uv_size":[-1,-4]},"down":{"uv":[30,0],"uv_size":[-1,4]}}},{"origin":[-6.5,20,-2],"size":[1,5,4],"inflate":0.26,"uv":{"north":{"uv":[50,59],"uv_size":[1,5]},"east":{"uv":[46,59],"uv_size":[4,5]},"south":{"uv":[55,59],"uv_size":[1,5]},"west":{"uv":[51,59],"uv_size":[4,5]},"up":{"uv":[51,59],"uv_size":[-1,-4]},"down":{"uv":[52,55],"uv_size":[-1,4]}}}]},{"name":"LeftItemPivot","pivot":[-5,11,-2],"parent":"LeftArm"},{"name":"LeftShoulderPivot","pivot":[-5.5,23,0],"parent":"LeftArm"},{"name":"RightArm","pivot":[3.5,21,0],"parent":"root","rotation":[0,0,-10],"cubes":[{"origin":[3.5,11,-2],"size":[3,12,4],"uv":{"north":{"uv":[53,17],"uv_size":[-3,12]},"east":{"uv":[57,17],"uv_size":[-4,12]},"south":{"uv":[60,17],"uv_size":[-3,12]},"west":{"uv":[50,17],"uv_size":[-4,12]},"up":{"uv":[50,17],"uv_size":[3,-4]},"down":{"uv":[53,13],"uv_size":[3,4]}}},{"origin":[3.5,11,-2],"size":[3,12,4],"inflate":0.25,"uv":{"north":{"uv":[7,49],"uv_size":[-3,12]},"east":{"uv":[11,49],"uv_size":[-4,12]},"south":{"uv":[14,49],"uv_size":[-3,12]},"west":{"uv":[4,49],"uv_size":[-4,12]},"up":{"uv":[4,49],"uv_size":[3,-4]},"down":{"uv":[7,45],"uv_size":[3,4]}}}]},{"name":"RightItemPivot","pivot":[5,11,-2],"parent":"RightArm"},{"name":"RightShoulderPivot","pivot":[5.5,23,0],"parent":"RightArm"},{"name":"LeftLeg","pivot":[-2,12,0],"parent":"root","cubes":[{"origin":[-4,0,-2],"size":[4,14,4],"uv":{"north":{"uv":[42,45],"uv_size":[-4,14]},"east":{"uv":[46,45],"uv_size":[-4,14]},"south":{"uv":[50,45],"uv_size":[-4,14]},"west":{"uv":[38,45],"uv_size":[-4,14]},"up":{"uv":[38,45],"uv_size":[4,-4]},"down":{"uv":[42,41],"uv_size":[4,4]}}},{"origin":[-4.1,8.5,-2.1],"size":[4.2,1,4.2],"uv":{"north":{"uv":[57,40],"uv_size":[1,-4]},"east":{"uv":[57,40],"uv_size":[1,-4]},"south":{"uv":[57,43],"uv_size":[1,-4]},"west":{"uv":[57,40],"uv_size":[1,-4]},"up":{"uv":[49,40],"uv_size":[4,-4]},"down":{"uv":[53,36],"uv_size":[4,4]}}},{"origin":[-5.1,7.7,-1.1],"size":[1.2,2.2,2.2],"uv":{"north":{"uv":[102,10],"uv_size":[4,7]},"east":{"uv":[106,10],"uv_size":[-4,7]},"south":{"uv":[102,10],"uv_size":[4,7]},"west":{"uv":[102,10],"uv_size":[4,7]},"up":{"uv":[100,12],"uv_size":[2,-2]},"down":{"uv":[100,10],"uv_size":[2,2]}}},{"origin":[-4,0,-2],"size":[4,14,4],"inflate":0.25,"uv":{"north":{"uv":[26,45],"uv_size":[-4,14]},"east":{"uv":[30,45],"uv_size":[-4,14]},"south":{"uv":[34,45],"uv_size":[-4,14]},"west":{"uv":[22,45],"uv_size":[-4,14]},"up":{"uv":[22,45],"uv_size":[4,-4]},"down":{"uv":[26,41],"uv_size":[4,4]}}},{"origin":[-4,0,-3],"size":[4,2,1],"uv":{"north":{"uv":[29,18],"uv_size":[-4,2]},"east":{"uv":[30,18],"uv_size":[-1,2]},"south":{"uv":[34,18],"uv_size":[-4,2]},"west":{"uv":[25,18],"uv_size":[-1,2]},"up":{"uv":[25,18],"uv_size":[4,-1]},"down":{"uv":[29,17],"uv_size":[4,1]}}},{"origin":[-4,0,-3],"size":[4,2,1],"inflate":0.25,"uv":{"north":{"uv":[51,30],"uv_size":[-4,2]},"east":{"uv":[52,30],"uv_size":[-1,2]},"south":{"uv":[56,30],"uv_size":[-4,2]},"west":{"uv":[47,30],"uv_size":[-1,2]},"up":{"uv":[47,30],"uv_size":[4,-1]},"down":{"uv":[51,29],"uv_size":[4,1]}}}]},{"name":"LeftLeggingPivot","pivot":[-2,12,0],"parent":"LeftLeg"},{"name":"LeftBootPivot","pivot":[-2,0,0],"parent":"LeftLeg"},{"name":"RightLeg","pivot":[2,12,0],"parent":"root","cubes":[{"origin":[0,0,-2],"size":[4,14,4],"uv":{"north":{"uv":[38,45],"uv_size":[4,14]},"east":{"uv":[34,45],"uv_size":[4,14]},"south":{"uv":[46,45],"uv_size":[4,14]},"west":{"uv":[42,45],"uv_size":[4,14]},"up":{"uv":[42,45],"uv_size":[-4,-4]},"down":{"uv":[46,41],"uv_size":[-4,4]}}},{"origin":[0,0,-2],"size":[4,14,4],"inflate":0.25,"uv":{"north":{"uv":[22,45],"uv_size":[4,14]},"east":{"uv":[18,45],"uv_size":[4,14]},"south":{"uv":[30,45],"uv_size":[4,14]},"west":{"uv":[26,45],"uv_size":[4,14]},"up":{"uv":[26,45],"uv_size":[-4,-4]},"down":{"uv":[30,41],"uv_size":[-4,4]}}},{"origin":[0,0,-3],"size":[4,2,1],"inflate":0.25,"uv":{"north":{"uv":[47,30],"uv_size":[4,2]},"east":{"uv":[46,30],"uv_size":[1,2]},"south":{"uv":[52,30],"uv_size":[4,2]},"west":{"uv":[51,30],"uv_size":[1,2]},"up":{"uv":[51,30],"uv_size":[-4,-1]},"down":{"uv":[55,29],"uv_size":[-4,1]}}},{"origin":[0,0,-3],"size":[4,2,1],"uv":{"north":{"uv":[25,18],"uv_size":[4,2]},"east":{"uv":[24,18],"uv_size":[1,2]},"south":{"uv":[30,18],"uv_size":[4,2]},"west":{"uv":[29,18],"uv_size":[1,2]},"up":{"uv":[29,18],"uv_size":[-4,-1]},"down":{"uv":[33,17],"uv_size":[-4,1]}}}]},{"name":"RightLeggingPivot","pivot":[2,12,0],"parent":"RightLeg"},{"name":"RightBootPivot","pivot":[2,0,0],"parent":"RightLeg"},{"name":"ItemLeek","pivot":[0,-4.4,0.5],"rotation":[10,-27.5,0],"cubes":[{"origin":[-1.3,-1.4,0.5],"size":[2.6,4,1],"uv":{"north":{"uv":[98,2],"uv_size":[4,7]},"east":{"uv":[96,2],"uv_size":[2,7]},"south":{"uv":[96,9],"uv_size":[4,7]},"west":{"uv":[102,2],"uv_size":[2,7]},"up":{"uv":[102,2],"uv_size":[-4,-2]},"down":{"uv":[106,0],"uv_size":[-4,2]}}},{"origin":[-1.3,2.3,0.7],"size":[2.6,4,1],"pivot":[0,2.8,1.2],"rotation":[-30,0,0],"uv":{"north":{"uv":[98,2],"uv_size":[4,7]},"east":{"uv":[96,2],"uv_size":[2,7]},"south":{"uv":[104,2],"uv_size":[4,7]},"west":{"uv":[102,2],"uv_size":[2,7]},"up":{"uv":[102,2],"uv_size":[-4,-2]},"down":{"uv":[106,0],"uv_size":[-4,2]}}}]},{"name":"Portrait","pivot":[0,0,0],"cubes":[{"origin":[-4,0,-4],"size":[8,8,8],"uv":{"north":{"uv":[8,24],"uv_size":[8,8]},"east":{"uv":[0,24],"uv_size":[8,8]},"south":{"uv":[24,24],"uv_size":[8,8]},"west":{"uv":[16,24],"uv_size":[8,8]},"up":{"uv":[16,24],"uv_size":[-8,-8]},"down":{"uv":[24,16],"uv_size":[-8,8]}}},{"origin":[-4,0,-4],"size":[8,8,8],"inflate":0.5,"uv":{"north":{"uv":[8,8],"uv_size":[8,8]},"east":{"uv":[0,8],"uv_size":[8,8]},"south":{"uv":[24,8],"uv_size":[8,8]},"west":{"uv":[16,8],"uv_size":[8,8]},"up":{"uv":[16,8],"uv_size":[-8,-8]},"down":{"uv":[24,0],"uv_size":[-8,8]}}},{"origin":[1,4,-4.25],"size":[2,1,1],"uv":{"north":{"uv":[1,7],"uv_size":[2,1]},"east":{"uv":[0,7],"uv_size":[1,1]},"south":{"uv":[4,7],"uv_size":[2,1]},"west":{"uv":[3,7],"uv_size":[1,1]},"up":{"uv":[3,7],"uv_size":[-2,-1]},"down":{"uv":[5,6],"uv_size":[-2,1]}}},{"origin":[-3,4,-4.25],"size":[2,1,1],"uv":{"north":{"uv":[1,7],"uv_size":[2,1]},"east":{"uv":[0,7],"uv_size":[1,1]},"south":{"uv":[4,7],"uv_size":[2,1]},"west":{"uv":[3,7],"uv_size":[1,1]},"up":{"uv":[3,7],"uv_size":[-2,-1]},"down":{"uv":[5,6],"uv_size":[-2,1]}}}]},{"name":"Hair3","pivot":[0,8,-4.5],"parent":"Portrait","cubes":[{"origin":[-1,3,-4.5],"size":[2,4,1],"pivot":[0,7,-3.5],"rotation":[0,0,10],"uv":{"north":{"uv":[60,29],"uv_size":[2,4]}}},{"origin":[2,-1,-4],"size":[2,7,2],"pivot":[3,6,-3],"rotation":[-2.5,0,-5],"inflate":0.25,"uv":{"north":{"uv":[22,61],"uv_size":[2,7]},"east":{"uv":[20,61],"uv_size":[2,7]},"south":{"uv":[26,61],"uv_size":[2,7]},"west":{"uv":[24,61],"uv_size":[2,7]},"up":{"uv":[24,61],"uv_size":[-2,-2]},"down":{"uv":[26,59],"uv_size":[-2,2]}}},{"origin":[-4,-1,-4],"size":[2,7,2],"pivot":[-3,6,-3],"rotation":[-2.5,0,5],"inflate":0.25,"uv":{"north":{"uv":[24,61],"uv_size":[-2,7]},"east":{"uv":[26,61],"uv_size":[-2,7]},"south":{"uv":[28,61],"uv_size":[-2,7]},"west":{"uv":[22,61],"uv_size":[-2,7]},"up":{"uv":[22,61],"uv_size":[2,-2]},"down":{"uv":[24,59],"uv_size":[2,2]}}}]},{"name":"Eyes3","pivot":[0,0,0],"parent":"Portrait","cubes":[{"origin":[1,2,-3.975],"size":[1,2,1],"uv":{"north":{"uv":[25,1],"uv_size":[1,2]},"east":{"uv":[24,1],"uv_size":[1,2]},"south":{"uv":[27,1],"uv_size":[1,2]},"west":{"uv":[26,1],"uv_size":[1,2]},"up":{"uv":[26,1],"uv_size":[-1,-1]},"down":{"uv":[27,0],"uv_size":[-1,1]}}},{"origin":[-2,2,-3.975],"size":[1,2,1],"uv":{"north":{"uv":[25,1],"uv_size":[1,2]},"east":{"uv":[24,1],"uv_size":[1,2]},"west":{"uv":[26,1],"uv_size":[1,2]},"up":{"uv":[26,1],"uv_size":[-1,-1]},"down":{"uv":[27,0],"uv_size":[-1,1]}}},{"origin":[-4,1,-3.95],"size":[8,4,0],"uv":{"north":{"uv":[50,51],"uv_size":[8,4]}}}]},{"name":"Skull2","pivot":[0,0,0]},{"name":"SkBody","pivot":[0,2,1],"parent":"Skull2","rotation":[7.5,0,0],"cubes":[{"origin":[-3,3,-0.5],"size":[6,6,3],"uv":{"north":{"uv":[3,83],"uv_size":[6,6]},"east":{"uv":[0,83],"uv_size":[3,6]},"south":{"uv":[12,83],"uv_size":[6,6]},"west":{"uv":[9,83],"uv_size":[3,6]},"up":{"uv":[9,83],"uv_size":[-6,-3]},"down":{"uv":[15,80],"uv_size":[-6,3]}}},{"origin":[-0.5,4,-0.5],"size":[1,5,1],"pivot":[0,9,0.5],"rotation":[-5,0,0],"inflate":0.2,"uv":{"north":{"uv":[9,93],"uv_size":[1,5]},"east":{"uv":[8,93],"uv_size":[1,5]},"south":{"uv":[11,93],"uv_size":[1,5]},"west":{"uv":[10,93],"uv_size":[1,5]},"up":{"uv":[10,93],"uv_size":[-1,-1]},"down":{"uv":[11,92],"uv_size":[-1,1]}}},{"origin":[1,1,-1.5],"size":[2,2,1],"pivot":[2,3,-0.5],"rotation":[-92.5,0,180],"uv":{"north":{"uv":[11,90],"uv_size":[-2,2]},"east":{"uv":[12,90],"uv_size":[-1,2]},"south":{"uv":[14,90],"uv_size":[-2,2]},"west":{"uv":[9,90],"uv_size":[-1,2]},"up":{"uv":[9,90],"uv_size":[2,-1]},"down":{"uv":[11,89],"uv_size":[2,1]}}},{"origin":[-3,1,-1.5],"size":[2,2,1],"pivot":[-2,3,-0.5],"rotation":[-90,0,180],"uv":{"north":{"uv":[9,90],"uv_size":[2,2]},"east":{"uv":[8,90],"uv_size":[1,2]},"south":{"uv":[12,90],"uv_size":[2,2]},"west":{"uv":[11,90],"uv_size":[1,2]},"up":{"uv":[11,90],"uv_size":[-2,-1]},"down":{"uv":[13,89],"uv_size":[-2,1]}}},{"origin":[-4,1,1.5],"size":[3,2,1],"pivot":[-3,3,1.5],"rotation":[-22.5,90,0],"uv":{"north":{"uv":[1,94],"uv_size":[3,2]},"east":{"uv":[0,94],"uv_size":[1,2]},"south":{"uv":[5,94],"uv_size":[3,2]},"west":{"uv":[4,94],"uv_size":[1,2]},"up":{"uv":[4,94],"uv_size":[-3,-1]},"down":{"uv":[7,93],"uv_size":[-3,1]}}},{"origin":[1,1,1.5],"size":[3,2,1],"pivot":[3,3,1.5],"rotation":[-22.5,-90,0],"uv":{"north":{"uv":[4,94],"uv_size":[-3,2]},"east":{"uv":[5,94],"uv_size":[-1,2]},"south":{"uv":[8,94],"uv_size":[-3,2]},"west":{"uv":[1,94],"uv_size":[-1,2]},"up":{"uv":[1,94],"uv_size":[3,-1]},"down":{"uv":[4,93],"uv_size":[3,1]}}},{"origin":[-3.5,1,-0.5],"size":[1,2,1],"pivot":[-3,3,-0.5],"rotation":[-57.5,45,-25],"uv":{"north":{"uv":[14,90],"uv_size":[1,2]},"east":{"uv":[13,90],"uv_size":[1,2]},"south":{"uv":[16,90],"uv_size":[1,2]},"west":{"uv":[15,90],"uv_size":[1,2]},"up":{"uv":[15,90],"uv_size":[-1,-1]},"down":{"uv":[16,89],"uv_size":[-1,1]}}},{"origin":[2.5,1,-0.5],"size":[1,2,1],"pivot":[3,3,-0.5],"rotation":[-57.5,-45,25],"uv":{"north":{"uv":[15,90],"uv_size":[-1,2]},"east":{"uv":[16,90],"uv_size":[-1,2]},"south":{"uv":[17,90],"uv_size":[-1,2]},"west":{"uv":[14,90],"uv_size":[-1,2]},"up":{"uv":[14,90],"uv_size":[1,-1]},"down":{"uv":[15,89],"uv_size":[1,1]}}},{"origin":[2.5,1,1.5],"size":[1,2,1],"pivot":[3,3,2.5],"rotation":[22.5,45,0],"uv":{"north":{"uv":[15,90],"uv_size":[-1,2]},"east":{"uv":[16,90],"uv_size":[-1,2]},"south":{"uv":[17,90],"uv_size":[-1,2]},"west":{"uv":[14,90],"uv_size":[-1,2]},"up":{"uv":[14,90],"uv_size":[1,-1]},"down":{"uv":[15,89],"uv_size":[1,1]}}},{"origin":[-3.5,1,1.5],"size":[1,2,1],"pivot":[-3,3,2.5],"rotation":[22.5,-45,0],"uv":{"north":{"uv":[14,90],"uv_size":[1,2]},"east":{"uv":[13,90],"uv_size":[1,2]},"south":{"uv":[16,90],"uv_size":[1,2]},"west":{"uv":[15,90],"uv_size":[1,2]},"up":{"uv":[15,90],"uv_size":[-1,-1]},"down":{"uv":[16,89],"uv_size":[-1,1]}}},{"origin":[-1.5,0,-1.5],"size":[3,3,1],"pivot":[0,3,-0.5],"rotation":[-90,0,180],"inflate":0.1,"uv":{"north":{"uv":[1,90],"uv_size":[3,3]},"east":{"uv":[0,90],"uv_size":[1,3]},"south":{"uv":[5,90],"uv_size":[3,3]},"west":{"uv":[4,90],"uv_size":[1,3]},"up":{"uv":[4,90],"uv_size":[-3,-1]},"down":{"uv":[7,89],"uv_size":[-3,1]}}},{"origin":[-3,1,1.5],"size":[2,2,1],"pivot":[-2,3,2.5],"rotation":[37.5,0,0],"uv":{"north":{"uv":[11,90],"uv_size":[-2,2]},"east":{"uv":[12,90],"uv_size":[-1,2]},"south":{"uv":[14,90],"uv_size":[-2,2]},"west":{"uv":[9,90],"uv_size":[-1,2]},"up":{"uv":[9,90],"uv_size":[2,-1]},"down":{"uv":[11,89],"uv_size":[2,1]}}},{"origin":[-1.5,0,1.5],"size":[3,3,1],"pivot":[0,3,2.5],"rotation":[35,0,0],"inflate":0.1,"uv":{"north":{"uv":[1,90],"uv_size":[3,3]},"east":{"uv":[0,90],"uv_size":[1,3]},"south":{"uv":[5,90],"uv_size":[3,3]},"west":{"uv":[4,90],"uv_size":[1,3]},"up":{"uv":[4,90],"uv_size":[-3,-1]},"down":{"uv":[7,89],"uv_size":[-3,1]}}},{"origin":[1,1,1.5],"size":[2,2,1],"pivot":[2,3,2.5],"rotation":[37.5,0,0],"uv":{"north":{"uv":[9,90],"uv_size":[2,2]},"east":{"uv":[8,90],"uv_size":[1,2]},"south":{"uv":[12,90],"uv_size":[2,2]},"west":{"uv":[11,90],"uv_size":[1,2]},"up":{"uv":[11,90],"uv_size":[-2,-1]},"down":{"uv":[13,89],"uv_size":[-2,1]}}}]},{"name":"SkHead","pivot":[0,9,1],"parent":"SkBody","rotation":[7.5,0,0],"cubes":[{"origin":[-3,8,-2],"size":[2,6,2],"pivot":[-2,14,-1],"rotation":[-5,0,5],"inflate":0.2,"uv":{"north":{"uv":[26,104],"uv_size":[2,6]},"east":{"uv":[24,104],"uv_size":[2,6]},"south":{"uv":[30,104],"uv_size":[2,6]},"west":{"uv":[28,104],"uv_size":[2,6]},"up":{"uv":[28,104],"uv_size":[-2,-2]},"down":{"uv":[30,102],"uv_size":[-2,2]}}},{"origin":[1,8,-2],"size":[2,6,2],"pivot":[2,14,-1],"rotation":[-5,0,-5],"inflate":0.2,"uv":{"north":{"uv":[28,104],"uv_size":[-2,6]},"east":{"uv":[30,104],"uv_size":[-2,6]},"south":{"uv":[32,104],"uv_size":[-2,6]},"west":{"uv":[26,104],"uv_size":[-2,6]},"up":{"uv":[26,104],"uv_size":[2,-2]},"down":{"uv":[28,102],"uv_size":[2,2]}}},{"origin":[-3,9,-2],"size":[6,6,6],"uv":{"north":{"uv":[6,104],"uv_size":[6,6]},"east":{"uv":[0,104],"uv_size":[6,6]},"south":{"uv":[18,104],"uv_size":[6,6]},"west":{"uv":[12,104],"uv_size":[6,6]},"up":{"uv":[12,104],"uv_size":[-6,-6]},"down":{"uv":[18,98],"uv_size":[-6,6]}}},{"origin":[-3,9,-2],"size":[6,6,6],"inflate":0.25,"uv":{"north":{"uv":[44,86],"uv_size":[6,6]},"east":{"uv":[38,86],"uv_size":[6,6]},"south":{"uv":[56,86],"uv_size":[6,6]},"west":{"uv":[50,86],"uv_size":[6,6]},"up":{"uv":[50,86],"uv_size":[-6,-6]},"down":{"uv":[56,80],"uv_size":[-6,6]}}},{"origin":[0,11,-2.25],"size":[1,2,1],"pivot":[0,13,-1.25],"rotation":[0,0,20],"uv":{"north":{"uv":[13,96],"uv_size":[1,2]},"east":{"uv":[12,96],"uv_size":[1,2]},"south":{"uv":[15,96],"uv_size":[1,2]},"west":{"uv":[14,96],"uv_size":[1,2]},"up":{"uv":[14,96],"uv_size":[-1,-1]},"down":{"uv":[15,95],"uv_size":[-1,1]}}},{"origin":[0.75,10,-3],"size":[3,1,3],"pivot":[2.25,10.5,-1],"rotation":[22.5,0,0],"uv":{"north":{"uv":[43,95],"uv_size":[3,1]},"east":{"uv":[40,95],"uv_size":[3,1]},"south":{"uv":[49,95],"uv_size":[3,1]},"west":{"uv":[46,95],"uv_size":[3,1]},"up":{"uv":[46,95],"uv_size":[-3,-3]},"down":{"uv":[49,92],"uv_size":[-3,3]}}}]},{"name":"SkLeftTail","pivot":[-3,15,2.5],"parent":"SkHead","rotation":[-15,15,0],"cubes":[{"origin":[-5,14,1.5],"size":[3,2,2],"uv":{"north":{"uv":[2,112],"uv_size":[3,2]},"east":{"uv":[0,112],"uv_size":[2,2]},"south":{"uv":[7,112],"uv_size":[3,2]},"west":{"uv":[5,112],"uv_size":[2,2]},"up":{"uv":[5,112],"uv_size":[-3,-2]},"down":{"uv":[8,110],"uv_size":[-3,2]}}}]},{"name":"SkLowerLeftTail","pivot":[-5,15,2.5],"parent":"SkLeftTail","rotation":[0,10,5],"cubes":[{"origin":[-6,10,1],"size":[2,5,3],"inflate":0.1,"uv":{"north":{"uv":[3,117],"uv_size":[2,5]},"east":{"uv":[0,117],"uv_size":[3,5]},"south":{"uv":[8,117],"uv_size":[2,5]},"west":{"uv":[5,117],"uv_size":[3,5]},"up":{"uv":[5,117],"uv_size":[-2,-3]},"down":{"uv":[7,114],"uv_size":[-2,3]}}},{"origin":[-6,10,1],"size":[2,5,3],"inflate":0.3,"uv":{"north":{"uv":[27,123],"uv_size":[2,5]},"east":{"uv":[24,123],"uv_size":[3,5]},"south":{"uv":[32,123],"uv_size":[2,5]},"west":{"uv":[29,123],"uv_size":[3,5]},"up":{"uv":[29,123],"uv_size":[-2,-3]},"down":{"uv":[31,120],"uv_size":[-2,3]}}}]},{"name":"SkLowerLeftTail2","pivot":[-5.5,10,2.5],"parent":"SkLowerLeftTail","rotation":[0,0,-5],"cubes":[{"origin":[-6,-2,1],"size":[2,4,3],"pivot":[-5,2,3],"rotation":[0,0,-5],"inflate":0.1,"uv":{"north":{"uv":[23,113],"uv_size":[2,4]},"east":{"uv":[20,113],"uv_size":[3,4]},"south":{"uv":[28,113],"uv_size":[2,4]},"west":{"uv":[25,113],"uv_size":[3,4]},"up":{"uv":[25,113],"uv_size":[-2,-3]},"down":{"uv":[27,110],"uv_size":[-2,3]}}},{"origin":[-6,-2,1],"size":[2,4,3],"pivot":[-5,2,3],"rotation":[0,0,-5],"inflate":0.3,"uv":{"north":{"uv":[33,113],"uv_size":[2,4]},"east":{"uv":[30,113],"uv_size":[3,4]},"south":{"uv":[38,113],"uv_size":[2,4]},"west":{"uv":[35,113],"uv_size":[3,4]},"up":{"uv":[35,113],"uv_size":[-2,-3]},"down":{"uv":[37,110],"uv_size":[-2,3]}}},{"origin":[-7,2,0.5],"size":[3,8,4],"uv":{"north":{"uv":[14,120],"uv_size":[3,8]},"east":{"uv":[10,120],"uv_size":[4,8]},"south":{"uv":[21,120],"uv_size":[3,8]},"west":{"uv":[17,120],"uv_size":[4,8]},"up":{"uv":[17,120],"uv_size":[-3,-4]},"down":{"uv":[20,116],"uv_size":[-3,4]}}},{"origin":[-7,2,0.5],"size":[3,8,4],"inflate":0.2,"uv":{"north":{"uv":[34,96],"uv_size":[3,8]},"east":{"uv":[30,96],"uv_size":[4,8]},"south":{"uv":[41,96],"uv_size":[3,8]},"west":{"uv":[37,96],"uv_size":[4,8]},"up":{"uv":[37,96],"uv_size":[-3,-4]},"down":{"uv":[40,92],"uv_size":[-3,4]}}}]},{"name":"SkLeftLeg","pivot":[-2,1,1],"parent":"SkBody","rotation":[-90,2.5,-7.5],"cubes":[{"origin":[-3,-5,-0.5],"size":[3,8,3],"uv":{"north":{"uv":[21,94],"uv_size":[3,8]},"east":{"uv":[18,94],"uv_size":[3,8]},"south":{"uv":[27,94],"uv_size":[3,8]},"west":{"uv":[24,94],"uv_size":[3,8]},"up":{"uv":[24,94],"uv_size":[-3,-3]},"down":{"uv":[27,91],"uv_size":[-3,3]}}}]},{"name":"SkRightLeg","pivot":[2,1,1],"parent":"SkBody","rotation":[-92.20462,-12.3071,10.23772],"cubes":[{"origin":[0,-5,-0.5],"size":[3,8,3],"uv":{"north":{"uv":[24,94],"uv_size":[-3,8]},"east":{"uv":[27,94],"uv_size":[-3,8]},"south":{"uv":[30,94],"uv_size":[-3,8]},"west":{"uv":[21,94],"uv_size":[-3,8]},"up":{"uv":[21,94],"uv_size":[3,-3]},"down":{"uv":[24,91],"uv_size":[3,3]}}}]},{"name":"SkLeftArm","pivot":[-3,8,1],"parent":"SkBody","rotation":[-8.62394,-16.98708,9.94622],"cubes":[{"origin":[-5,1,-0.5],"size":[2,8,3],"uv":{"north":{"uv":[21,83],"uv_size":[2,8]},"east":{"uv":[18,83],"uv_size":[3,8]},"south":{"uv":[26,83],"uv_size":[2,8]},"west":{"uv":[23,83],"uv_size":[3,8]},"up":{"uv":[23,83],"uv_size":[-2,-3]},"down":{"uv":[25,80],"uv_size":[-2,3]}}},{"origin":[-5,1,-0.5],"size":[2,8,3],"inflate":0.2,"uv":{"north":{"uv":[31,83],"uv_size":[2,8]},"east":{"uv":[28,83],"uv_size":[3,8]},"south":{"uv":[36,83],"uv_size":[2,8]},"west":{"uv":[33,83],"uv_size":[3,8]},"up":{"uv":[33,83],"uv_size":[-2,-3]},"down":{"uv":[35,80],"uv_size":[-2,3]}}}]},{"name":"SkRightArm","pivot":[3,8,1],"parent":"SkBody","rotation":[-15,0,-5],"cubes":[{"origin":[3,1,-0.5],"size":[2,8,3],"uv":{"north":{"uv":[23,83],"uv_size":[-2,8]},"east":{"uv":[26,83],"uv_size":[-3,8]},"south":{"uv":[28,83],"uv_size":[-2,8]},"west":{"uv":[21,83],"uv_size":[-3,8]},"up":{"uv":[21,83],"uv_size":[2,-3]},"down":{"uv":[23,80],"uv_size":[2,3]}}},{"origin":[3,1,-0.5],"size":[2,8,3],"inflate":0.2,"uv":{"north":{"uv":[33,83],"uv_size":[-2,8]},"east":{"uv":[36,83],"uv_size":[-3,8]},"south":{"uv":[38,83],"uv_size":[-2,8]},"west":{"uv":[31,83],"uv_size":[-3,8]},"up":{"uv":[31,83],"uv_size":[2,-3]},"down":{"uv":[33,80],"uv_size":[2,3]}}}]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/android.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/android.geo.json new file mode 100644 index 0000000..e4a775d --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/android.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.android","texture_width":128,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"Head","pivot":[0,33,0],"cubes":[{"origin":[-6,33,-6],"size":[12,8,12],"uv":{"north":{"uv":[12,68],"uv_size":[12,8]},"east":{"uv":[0,68],"uv_size":[12,8]},"south":{"uv":[36,68],"uv_size":[12,8]},"west":{"uv":[24,68],"uv_size":[12,8]},"up":{"uv":[24,68],"uv_size":[-12,-12]},"down":{"uv":[36,56],"uv_size":[-12,12]}}}]},{"name":"LeftEar","pivot":[-4,41,0],"parent":"Head","rotation":[0,0,-15],"cubes":[{"origin":[-5,40,-1],"size":[2,4,2],"uv":{"north":{"uv":[68,50],"uv_size":[-2,4]},"east":{"uv":[70,50],"uv_size":[-2,4]},"south":{"uv":[72,50],"uv_size":[-2,4]},"west":{"uv":[66,50],"uv_size":[-2,4]},"up":{"uv":[66,50],"uv_size":[2,-2]},"down":{"uv":[68,48],"uv_size":[2,2]}}}]},{"name":"RightEar","pivot":[4,41,0],"parent":"Head","rotation":[0,0,15],"cubes":[{"origin":[3,40,-1],"size":[2,4,2],"uv":{"north":{"uv":[66,50],"uv_size":[2,4]},"east":{"uv":[64,50],"uv_size":[2,4]},"south":{"uv":[70,50],"uv_size":[2,4]},"west":{"uv":[68,50],"uv_size":[2,4]},"up":{"uv":[68,50],"uv_size":[-2,-2]},"down":{"uv":[70,48],"uv_size":[-2,2]}}}]},{"name":"Body","pivot":[0,32,0],"cubes":[{"origin":[-8,24,-8],"size":[16,8,16],"uv":{"north":{"uv":[16,48],"uv_size":[16,8]},"east":{"uv":[0,48],"uv_size":[16,8]},"south":{"uv":[48,48],"uv_size":[16,8]},"west":{"uv":[32,48],"uv_size":[16,8]},"up":{"uv":[32,48],"uv_size":[-16,-16]},"down":{"uv":[48,32],"uv_size":[-16,16]}}},{"origin":[-10,12,-10],"size":[20,12,20],"uv":{"north":{"uv":[20,20],"uv_size":[20,12]},"east":{"uv":[0,20],"uv_size":[20,12]},"south":{"uv":[60,20],"uv_size":[20,12]},"west":{"uv":[40,20],"uv_size":[20,12]},"up":{"uv":[40,20],"uv_size":[-20,-20]},"down":{"uv":[60,0],"uv_size":[-20,20]}}}]},{"name":"Tail","pivot":[0,16,10],"parent":"Body","rotation":[20,0,0],"cubes":[{"origin":[-5,8,8],"size":[10,10,6],"uv":{"north":{"uv":[70,38],"uv_size":[10,10]},"east":{"uv":[64,38],"uv_size":[6,10]},"south":{"uv":[86,38],"uv_size":[10,10]},"west":{"uv":[80,38],"uv_size":[6,10]},"up":{"uv":[80,38],"uv_size":[-10,-6]},"down":{"uv":[90,32],"uv_size":[-10,6]}}}]},{"name":"tailseg1","pivot":[0,8,8],"parent":"Tail","rotation":[30,0,0],"cubes":[{"origin":[-4,2,8],"size":[8,6,4],"uv":{"north":{"uv":[26,80],"uv_size":[8,6]},"east":{"uv":[22,80],"uv_size":[4,6]},"south":{"uv":[38,80],"uv_size":[8,6]},"west":{"uv":[34,80],"uv_size":[4,6]},"up":{"uv":[34,80],"uv_size":[-8,-4]},"down":{"uv":[42,76],"uv_size":[-8,4]}}}]},{"name":"LeftArm","pivot":[-9,32,0],"rotation":[0,0,5],"cubes":[{"origin":[-14,15,-3],"size":[5,18,6],"uv":{"north":{"uv":[11,82],"uv_size":[-5,18]},"east":{"uv":[17,82],"uv_size":[-6,18]},"south":{"uv":[22,82],"uv_size":[-5,18]},"west":{"uv":[6,82],"uv_size":[-6,18]},"up":{"uv":[6,82],"uv_size":[5,-6]},"down":{"uv":[11,76],"uv_size":[5,6]}}}]},{"name":"LeftItemPivot","pivot":[-9,16,-2],"parent":"LeftArm"},{"name":"RightArm","pivot":[9,32,0],"rotation":[0,0,-5],"cubes":[{"origin":[9,15,-3],"size":[5,18,6],"uv":{"north":{"uv":[6,82],"uv_size":[5,18]},"east":{"uv":[0,82],"uv_size":[6,18]},"south":{"uv":[17,82],"uv_size":[5,18]},"west":{"uv":[11,82],"uv_size":[6,18]},"up":{"uv":[11,82],"uv_size":[-5,-6]},"down":{"uv":[16,76],"uv_size":[-5,6]}}}]},{"name":"RightItemPivot","pivot":[9,16,-2],"parent":"RightArm"},{"name":"LeftLeg","pivot":[-5,14,-0.5],"rotation":[0,0,5],"cubes":[{"origin":[-9,0,-4.5],"size":[9,13,9],"uv":{"north":{"uv":[66,65],"uv_size":[-9,13]},"east":{"uv":[75,65],"uv_size":[-9,13]},"south":{"uv":[84,65],"uv_size":[-9,13]},"west":{"uv":[57,65],"uv_size":[-9,13]},"up":{"uv":[57,65],"uv_size":[9,-9]},"down":{"uv":[66,56],"uv_size":[9,9]}}}]},{"name":"RightLeg","pivot":[5,14,-0.5],"rotation":[0,0,-5],"cubes":[{"origin":[0,0,-4.5],"size":[9,13,9],"uv":{"north":{"uv":[57,65],"uv_size":[9,13]},"east":{"uv":[48,65],"uv_size":[9,13]},"south":{"uv":[75,65],"uv_size":[9,13]},"west":{"uv":[66,65],"uv_size":[9,13]},"up":{"uv":[66,65],"uv_size":[-9,-9]},"down":{"uv":[75,56],"uv_size":[-9,9]}}}]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/aria.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/aria.anim.json new file mode 100644 index 0000000..0202401 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/aria.anim.json @@ -0,0 +1 @@ +{"autoplay":["idle_1","idle_2","idle_3","idle_4"],"clips":{"idle_1":{"loop":"loop","length":4,"bones":{"head":{"rotation":[[0,0,0,2.5],[1,0,0,0],[2,0,0,-2.5],[3,0,0,0],[4,0,0,2.5]]}}},"idle_2":{"loop":"loop","length":2,"bones":{"head":{"rotation":[[0,0,0,0],[0.48,2.5,0,0],[1,0,0,0],[1.52,2.5,0,0],[2,0,0,0]]},"body":{"rotation":[[0,0,2.5,0],[0.48,2.5,0.1,0],[1,0,-2.5,0],[1.52,2.5,0.1,0],[2,0,2.5,0]]},"w1":{"rotation":[[0,0,0,0],[1,0,0,5],[2,0,0,0]]},"w2":{"rotation":[[0,0,0,0],[0.96,0,0,-5],[2,0,0,0]]}}},"blink":{"loop":"once","length":1.52,"bones":{"head":{"scale":[[0,1,1,1],[0.44,1.005,0.97,1],[0.72,1.005,0.97,1],[1.52,1,1,1]]},"lashes":{"position":[[0,0,0,0],[0.12,0,-0.25,0],[0.4,0,-1,0],[0.56,0,-1,0],[0.76,0,-1,0],[1.52,0,0,0]]},"blink":{"position":[[0,0,0,0],[0.28,0,0,-1],[1.08,0,0,-1],[1.52,0,0,0]]},"blink2":{"position":[[0,0,0,0],[0.16,0,0,-1],[1.36,0,0,0]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/aria.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/aria.geo.json new file mode 100644 index 0000000..1e01739 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/aria.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.aria","texture_width":160,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"whole","pivot":[0,0,0]},{"name":"body","pivot":[0,10,0],"parent":"whole"},{"name":"torsorot","pivot":[0,10,0],"parent":"body"},{"name":"LeftArm","pivot":[-2.74528,18.30617,0],"parent":"torsorot"},{"name":"LeftItemPivot","pivot":[-5.05955,11.31002,-1],"parent":"LeftArm"},{"name":"arm","pivot":[-3.03365,18.84908,0.25],"parent":"LeftArm","rotation":[0,0,-5],"cubes":[{"origin":[-3.55955,10.194,-1.25],"size":[2.75,10,3],"pivot":[-3.80955,20.31002,0.25],"rotation":[0,0,25],"uv":{"north":{"uv":[45,65],"uv_size":[3,10]},"east":{"uv":[49,65],"uv_size":[3,10]},"south":{"uv":[32,66],"uv_size":[3,10]},"west":{"uv":[70,66],"uv_size":[3,10]},"up":{"uv":[123,30],"uv_size":[-3,-3]},"down":{"uv":[68,88],"uv_size":[-3,3]}}},{"origin":[-5.02869,13.79919,-1.25],"size":[2.75,6,3],"pivot":[-3.65369,16.79919,0.25],"rotation":[0,0,37.5],"inflate":0.25,"uv":{"north":{"uv":[89,74],"uv_size":[3,6]},"east":{"uv":[107,0],"uv_size":[3,6]},"south":{"uv":[107,7],"uv_size":[3,6]},"west":{"uv":[45,76],"uv_size":[3,6]},"up":{"uv":[77,91],"uv_size":[-3,-3]},"down":{"uv":[95,88],"uv_size":[-3,3]}}},{"origin":[-5.03372,12.42349,-1.25],"size":[2.75,6,3],"pivot":[-3.65872,15.92349,0.25],"rotation":[0,0,37.5],"inflate":0.25,"uv":{"north":{"uv":[49,76],"uv_size":[3,6]},"east":{"uv":[93,76],"uv_size":[3,6]},"south":{"uv":[108,63],"uv_size":[3,6]},"west":{"uv":[97,76],"uv_size":[3,6]},"up":{"uv":[99,91],"uv_size":[-3,-3]},"down":{"uv":[103,88],"uv_size":[-3,3]}}},{"origin":[-7.13007,10.32048,-1.25],"size":[2.75,4,3],"pivot":[-5.88007,12.32048,0.25],"rotation":[0,0,12.5],"inflate":0.51,"uv":{"north":{"uv":[72,81],"uv_size":[3,4]},"east":{"uv":[113,48],"uv_size":[3,4]},"south":{"uv":[113,53],"uv_size":[3,4]},"west":{"uv":[88,81],"uv_size":[3,4]},"up":{"uv":[35,92],"uv_size":[-3,-3]},"down":{"uv":[39,89],"uv_size":[-3,3]}}}]},{"name":"RightArm","pivot":[2.74528,18.30617,0],"parent":"torsorot"},{"name":"RightItemPivot","pivot":[5.05955,11.31002,-1],"parent":"RightArm"},{"name":"arm_2","pivot":[3.03365,18.84908,0.25],"parent":"RightArm","rotation":[0,0,5],"cubes":[{"origin":[0.80955,10.194,-1.25],"size":[2.75,10,3],"pivot":[3.80955,20.31002,0.25],"rotation":[0,0,-25],"uv":{"north":{"uv":[48,65],"uv_size":[-3,10]},"east":{"uv":[73,66],"uv_size":[-3,10]},"south":{"uv":[35,66],"uv_size":[-3,10]},"west":{"uv":[52,65],"uv_size":[-3,10]},"up":{"uv":[123,27],"uv_size":[-3,3]},"down":{"uv":[68,88],"uv_size":[-3,3]}}},{"origin":[2.27869,13.79919,-1.25],"size":[2.75,6,3],"pivot":[3.65369,16.79919,0.25],"rotation":[0,0,-37.5],"inflate":0.25,"uv":{"north":{"uv":[92,74],"uv_size":[-3,6]},"east":{"uv":[48,76],"uv_size":[-3,6]},"south":{"uv":[110,7],"uv_size":[-3,6]},"west":{"uv":[110,0],"uv_size":[-3,6]},"up":{"uv":[77,88],"uv_size":[-3,3]},"down":{"uv":[95,88],"uv_size":[-3,3]}}},{"origin":[2.28372,12.42349,-1.25],"size":[2.75,6,3],"pivot":[3.65872,15.92349,0.25],"rotation":[0,0,-37.5],"inflate":0.25,"uv":{"north":{"uv":[52,76],"uv_size":[-3,6]},"east":{"uv":[100,76],"uv_size":[-3,6]},"south":{"uv":[111,63],"uv_size":[-3,6]},"west":{"uv":[96,76],"uv_size":[-3,6]},"up":{"uv":[99,88],"uv_size":[-3,3]},"down":{"uv":[103,88],"uv_size":[-3,3]}}},{"origin":[4.38007,10.32048,-1.25],"size":[2.75,4,3],"pivot":[5.88007,12.32048,0.25],"rotation":[0,0,-12.5],"inflate":0.51,"uv":{"north":{"uv":[75,81],"uv_size":[-3,4]},"east":{"uv":[91,81],"uv_size":[-3,4]},"south":{"uv":[116,53],"uv_size":[-3,4]},"west":{"uv":[116,48],"uv_size":[-3,4]},"up":{"uv":[35,89],"uv_size":[-3,3]},"down":{"uv":[39,89],"uv_size":[-3,3]}}}]},{"name":"Body","pivot":[0,22,0],"parent":"torsorot","cubes":[{"origin":[-1.25,20,-2],"size":[2.5,2,3.5],"uv":{"north":{"uv":[70,51],"uv_size":[3,2]},"east":{"uv":[78,34],"uv_size":[4,2]},"south":{"uv":[104,63],"uv_size":[3,2]},"west":{"uv":[122,12],"uv_size":[4,2]},"up":{"uv":[116,62],"uv_size":[-3,-4]},"down":{"uv":[108,82],"uv_size":[-3,4]}}},{"origin":[-2.75,12,-2],"size":[5.5,4,4],"uv":{"north":{"uv":[94,66],"uv_size":[6,4]},"east":{"uv":[107,14],"uv_size":[4,4]},"south":{"uv":[99,34],"uv_size":[6,4]},"west":{"uv":[105,77],"uv_size":[4,4]},"up":{"uv":[105,43],"uv_size":[-6,-4]},"down":{"uv":[106,0],"uv_size":[-6,4]}}},{"origin":[-3.15,11.99524,-1.7819],"size":[2.5,3,3.75],"pivot":[-1.9,12.99524,-0.2819],"rotation":[0,0,40],"inflate":-0.01,"uv":{"north":{"uv":[40,89],"uv_size":[3,3]},"east":{"uv":[109,82],"uv_size":[4,3]},"south":{"uv":[56,89],"uv_size":[3,3]},"west":{"uv":[114,82],"uv_size":[4,3]},"up":{"uv":[47,87],"uv_size":[-3,-4]},"down":{"uv":[51,83],"uv_size":[-3,4]}}},{"origin":[0.65,11.99524,-1.7819],"size":[2.5,3,3.75],"pivot":[1.9,12.99524,-0.2819],"rotation":[0,0,-40],"inflate":-0.01,"uv":{"north":{"uv":[43,89],"uv_size":[-3,3]},"east":{"uv":[118,82],"uv_size":[-4,3]},"south":{"uv":[59,89],"uv_size":[-3,3]},"west":{"uv":[113,82],"uv_size":[-4,3]},"up":{"uv":[47,83],"uv_size":[-3,4]},"down":{"uv":[51,83],"uv_size":[-3,4]}}},{"origin":[-2.75,16,-2],"size":[5.5,4,4],"uv":{"north":{"uv":[100,5],"uv_size":[6,4]},"east":{"uv":[110,19],"uv_size":[4,4]},"south":{"uv":[100,10],"uv_size":[6,4]},"west":{"uv":[110,24],"uv_size":[4,4]},"up":{"uv":[59,73],"uv_size":[-6,-4]},"down":{"uv":[66,69],"uv_size":[-6,4]}}},{"origin":[-2.75,13.9559,-1.77037],"size":[5.5,4,1],"pivot":[0,16.7059,-1.27037],"rotation":[-10,0,0],"inflate":0.15,"uv":{"north":{"uv":[101,66],"uv_size":[6,4]},"east":{"uv":[68,72],"uv_size":[1,4]},"south":{"uv":[103,20],"uv_size":[6,4]},"west":{"uv":[111,94],"uv_size":[1,4]},"up":{"uv":[90,17],"uv_size":[-6,-1]},"down":{"uv":[129,83],"uv_size":[-6,1]}}},{"origin":[-2.75,13.9559,1.17037],"size":[5.5,4,1],"pivot":[0,16.7059,1.67037],"rotation":[10,0,0],"inflate":0.15,"uv":{"north":{"uv":[109,20],"uv_size":[-6,4]},"east":{"uv":[69,72],"uv_size":[-1,4]},"south":{"uv":[107,66],"uv_size":[-6,4]},"west":{"uv":[112,94],"uv_size":[-1,4]},"up":{"uv":[84,17],"uv_size":[6,-1]},"down":{"uv":[123,84],"uv_size":[6,-1]}}},{"origin":[-2.5,16.75,-2],"size":[5.5,4,4],"pivot":[0,18,0],"rotation":[4.38375,-5.88,-18.84647],"inflate":0.25,"uv":{"north":{"uv":[103,25],"uv_size":[6,4]},"east":{"uv":[110,77],"uv_size":[4,4]},"south":{"uv":[94,71],"uv_size":[6,4]},"west":{"uv":[111,0],"uv_size":[4,4]},"up":{"uv":[107,75],"uv_size":[-6,-4]},"down":{"uv":[110,44],"uv_size":[-6,4]}}},{"origin":[-3,16.75,-2],"size":[5.5,4,4],"pivot":[0,18,0],"rotation":[4.38375,5.88,18.84647],"inflate":0.25,"uv":{"north":{"uv":[109,25],"uv_size":[-6,4]},"east":{"uv":[115,0],"uv_size":[-4,4]},"south":{"uv":[100,71],"uv_size":[-6,4]},"west":{"uv":[114,77],"uv_size":[-4,4]},"up":{"uv":[107,71],"uv_size":[-6,4]},"down":{"uv":[110,44],"uv_size":[-6,4]}}},{"origin":[-1.15687,14.07129,-2.75],"size":[1,4,0],"pivot":[0,16.2784,-2.75],"rotation":[-9.54589,2.99318,17.25002],"uv":{"north":{"uv":[71,95],"uv_size":[1,4]},"east":{"uv":[36,66],"uv_size":[0,4]},"south":{"uv":[99,95],"uv_size":[1,4]},"west":{"uv":[36,66],"uv_size":[0,4]},"up":{"uv":[55,49],"uv_size":[-1,0]},"down":{"uv":[54,49],"uv_size":[1,0]}}},{"origin":[0.15687,14.07129,-2.75],"size":[1,4,0],"pivot":[0,16.2784,-2.75],"rotation":[-9.54589,-2.99318,-17.25002],"uv":{"north":{"uv":[72,95],"uv_size":[-1,4]},"east":{"uv":[36,66],"uv_size":[0,4]},"south":{"uv":[100,95],"uv_size":[-1,4]},"west":{"uv":[36,66],"uv_size":[0,4]},"up":{"uv":[55,49],"uv_size":[-1,0]},"down":{"uv":[55,49],"uv_size":[-1,0]}}},{"origin":[-2.25,17,-3],"size":[2,2,1],"pivot":[-1.25,18,-2.5],"rotation":[0,0,-15],"uv":{"north":{"uv":[65,81],"uv_size":[2,2]},"east":{"uv":[72,77],"uv_size":[1,2]},"south":{"uv":[76,81],"uv_size":[2,2]},"west":{"uv":[86,88],"uv_size":[1,2]},"up":{"uv":[95,21],"uv_size":[-2,-1]},"down":{"uv":[55,67],"uv_size":[-2,1]}}},{"origin":[0.25,17,-3],"size":[2,2,1],"pivot":[1.25,18,-2.5],"rotation":[0,0,15],"uv":{"north":{"uv":[67,81],"uv_size":[-2,2]},"east":{"uv":[87,88],"uv_size":[-1,2]},"south":{"uv":[78,81],"uv_size":[-2,2]},"west":{"uv":[73,77],"uv_size":[-1,2]},"up":{"uv":[95,20],"uv_size":[-2,1]},"down":{"uv":[55,67],"uv_size":[-2,1]}}}]},{"name":"wings","pivot":[0,15.75,0],"parent":"Body"},{"name":"w1","pivot":[0,18.75,2],"parent":"wings","cubes":[{"origin":[-20.47789,6.11843,3.15],"size":[23,19,0],"pivot":[1.52211,14.11843,0.15],"rotation":[-3.814,11.9128,-77.8981],"uv":{"north":{"uv":[32,0],"uv_size":[23,19]},"east":{"uv":[107,95],"uv_size":[0,19]},"south":{"uv":[32,20],"uv_size":[23,19]},"west":{"uv":[107,95],"uv_size":[0,19]},"up":{"uv":[151,51],"uv_size":[-23,0]},"down":{"uv":[128,51],"uv_size":[23,0]}}},{"origin":[-21.5,9.68782,4],"size":[18,10,0],"pivot":[-4.5,12.68782,1],"rotation":[0,12.5,-60],"uv":{"north":{"uv":[56,0],"uv_size":[18,10]},"east":{"uv":[119,95],"uv_size":[0,10]},"south":{"uv":[56,11],"uv_size":[18,10]},"west":{"uv":[119,95],"uv_size":[0,10]},"up":{"uv":[147,11],"uv_size":[-18,0]},"down":{"uv":[129,11],"uv_size":[18,0]}}},{"origin":[-18.28349,16.75897,1],"size":[15,3,3],"pivot":[-1.28349,17.75897,2],"rotation":[-2.2046,12.3071,-70.2377],"inflate":0.5,"uv":{"north":{"uv":[74,46],"uv_size":[15,3]},"east":{"uv":[60,89],"uv_size":[3,3]},"south":{"uv":[38,49],"uv_size":[15,3]},"west":{"uv":[121,31],"uv_size":[3,3]},"up":{"uv":[89,53],"uv_size":[-15,-3]},"down":{"uv":[69,51],"uv_size":[-15,3]}}},{"origin":[-18.28349,16.75897,1],"size":[15,3,3],"pivot":[-1.28349,17.75897,2],"rotation":[-2.2046,12.3071,-70.2377],"inflate":0.25,"uv":{"north":{"uv":[83,34],"uv_size":[15,3]},"east":{"uv":[121,35],"uv_size":[3,3]},"south":{"uv":[83,38],"uv_size":[15,3]},"west":{"uv":[121,39],"uv_size":[3,3]},"up":{"uv":[98,45],"uv_size":[-15,-3]},"down":{"uv":[99,0],"uv_size":[-15,3]}}},{"origin":[-13.5,16.88397,1],"size":[13,3,3],"pivot":[-1.5,17.88397,2],"rotation":[-7.2468,10.2124,-95.6484],"inflate":0.25,"uv":{"north":{"uv":[37,57],"uv_size":[13,3]},"east":{"uv":[121,43],"uv_size":[3,3]},"south":{"uv":[90,46],"uv_size":[13,3]},"west":{"uv":[78,89],"uv_size":[3,3]},"up":{"uv":[103,53],"uv_size":[-13,-3]},"down":{"uv":[103,54],"uv_size":[-13,3]}}},{"origin":[-13.5,16.88397,1],"size":[13,3,3],"pivot":[-1.5,17.88397,2],"rotation":[-7.2468,10.2124,-95.6484],"inflate":-0.02,"uv":{"north":{"uv":[90,58],"uv_size":[13,3]},"east":{"uv":[121,47],"uv_size":[3,3]},"south":{"uv":[37,61],"uv_size":[13,3]},"west":{"uv":[82,89],"uv_size":[3,3]},"up":{"uv":[106,19],"uv_size":[-13,-3]},"down":{"uv":[103,62],"uv_size":[-13,3]}}},{"origin":[-17.5,16.88397,1],"size":[17,3,3],"pivot":[-1.5,17.88397,2],"rotation":[-4.3361,11.7351,-80.4458],"uv":{"north":{"uv":[75,18],"uv_size":[17,3]},"east":{"uv":[121,51],"uv_size":[3,3]},"south":{"uv":[78,22],"uv_size":[17,3]},"west":{"uv":[121,55],"uv_size":[3,3]},"up":{"uv":[95,29],"uv_size":[-17,-3]},"down":{"uv":[95,30],"uv_size":[-17,3]}}},{"origin":[-15.5,16.88397,1],"size":[15,3,3],"pivot":[-1.5,17.88397,2],"rotation":[0,12.5,-60],"inflate":-0.01,"uv":{"north":{"uv":[84,4],"uv_size":[15,3]},"east":{"uv":[122,8],"uv_size":[3,3]},"south":{"uv":[84,8],"uv_size":[15,3]},"west":{"uv":[52,90],"uv_size":[3,3]},"up":{"uv":[99,15],"uv_size":[-15,-3]},"down":{"uv":[53,53],"uv_size":[-15,3]}}}]},{"name":"w2","pivot":[0,18.75,2],"parent":"wings","cubes":[{"origin":[-2.31769,6.01283,3.15],"size":[23,19,0],"pivot":[-1.31769,14.01283,0.15],"rotation":[-3.814,-11.9128,75.3981],"uv":{"north":{"uv":[55,0],"uv_size":[-23,19]},"east":{"uv":[107,95],"uv_size":[0,19]},"south":{"uv":[55,20],"uv_size":[-23,19]},"west":{"uv":[107,95],"uv_size":[0,19]},"up":{"uv":[151,51],"uv_size":[-23,0]},"down":{"uv":[151,51],"uv_size":[-23,0]}}},{"origin":[3.7611,9.84626,4],"size":[18,10,0],"pivot":[4.7611,12.84626,1],"rotation":[0,-12.5,57.5],"uv":{"north":{"uv":[74,0],"uv_size":[-18,10]},"east":{"uv":[119,95],"uv_size":[0,10]},"south":{"uv":[74,11],"uv_size":[-18,10]},"west":{"uv":[119,95],"uv_size":[0,10]},"up":{"uv":[147,11],"uv_size":[-18,0]},"down":{"uv":[147,11],"uv_size":[-18,0]}}},{"origin":[3.32645,16.77228,1],"size":[15,3,3],"pivot":[1.32645,17.77228,2],"rotation":[-2.2046,-12.3071,67.7377],"inflate":0.5,"uv":{"north":{"uv":[89,46],"uv_size":[-15,3]},"east":{"uv":[124,31],"uv_size":[-3,3]},"south":{"uv":[53,49],"uv_size":[-15,3]},"west":{"uv":[63,89],"uv_size":[-3,3]},"up":{"uv":[89,50],"uv_size":[-15,3]},"down":{"uv":[69,51],"uv_size":[-15,3]}}},{"origin":[3.32645,16.77228,1],"size":[15,3,3],"pivot":[1.32645,17.77228,2],"rotation":[-2.2046,-12.3071,67.7377],"inflate":0.25,"uv":{"north":{"uv":[98,34],"uv_size":[-15,3]},"east":{"uv":[124,39],"uv_size":[-3,3]},"south":{"uv":[98,38],"uv_size":[-15,3]},"west":{"uv":[124,35],"uv_size":[-3,3]},"up":{"uv":[98,42],"uv_size":[-15,3]},"down":{"uv":[99,0],"uv_size":[-15,3]}}},{"origin":[0.5373,16.90661,1],"size":[13,3,3],"pivot":[1.5373,17.90661,2],"rotation":[-7.2468,-10.2124,93.1484],"inflate":0.25,"uv":{"north":{"uv":[50,57],"uv_size":[-13,3]},"east":{"uv":[81,89],"uv_size":[-3,3]},"south":{"uv":[103,46],"uv_size":[-13,3]},"west":{"uv":[124,43],"uv_size":[-3,3]},"up":{"uv":[103,50],"uv_size":[-13,3]},"down":{"uv":[103,54],"uv_size":[-13,3]}}},{"origin":[0.5373,16.90661,1],"size":[13,3,3],"pivot":[1.5373,17.90661,2],"rotation":[-7.2468,-10.2124,93.1484],"inflate":-0.02,"uv":{"north":{"uv":[103,58],"uv_size":[-13,3]},"east":{"uv":[85,89],"uv_size":[-3,3]},"south":{"uv":[50,61],"uv_size":[-13,3]},"west":{"uv":[124,47],"uv_size":[-3,3]},"up":{"uv":[106,16],"uv_size":[-13,3]},"down":{"uv":[103,62],"uv_size":[-13,3]}}},{"origin":[0.5373,16.90661,1],"size":[17,3,3],"pivot":[1.5373,17.90661,2],"rotation":[-4.3361,-11.7351,77.9458],"uv":{"north":{"uv":[92,18],"uv_size":[-17,3]},"east":{"uv":[124,55],"uv_size":[-3,3]},"south":{"uv":[95,22],"uv_size":[-17,3]},"west":{"uv":[124,51],"uv_size":[-3,3]},"up":{"uv":[95,26],"uv_size":[-17,3]},"down":{"uv":[95,30],"uv_size":[-17,3]}}},{"origin":[0.5373,16.90661,1],"size":[15,3,3],"pivot":[1.5373,17.90661,2],"rotation":[0,-12.5,57.5],"inflate":-0.01,"uv":{"north":{"uv":[99,4],"uv_size":[-15,3]},"east":{"uv":[55,90],"uv_size":[-3,3]},"south":{"uv":[99,8],"uv_size":[-15,3]},"west":{"uv":[125,8],"uv_size":[-3,3]},"up":{"uv":[99,12],"uv_size":[-15,3]},"down":{"uv":[53,53],"uv_size":[-15,3]}}}]},{"name":"head","pivot":[0,22.75,0],"parent":"torsorot","cubes":[{"origin":[-3.8,21,-3.85],"size":[7.6,7.6,7.6],"uv":{"north":{"uv":[38,40],"uv_size":[8,8]},"east":{"uv":[47,40],"uv_size":[8,8]},"south":{"uv":[74,37],"uv_size":[8,8]},"west":{"uv":[47,40],"uv_size":[8,8]},"up":{"uv":[83,8],"uv_size":[-8,-8]},"down":{"uv":[83,9],"uv_size":[-8,8]}}}]},{"name":"eyes","pivot":[-0.2,29.55,-0.43],"parent":"head","cubes":[{"origin":[-3.75,21.2375,-3.698],"size":[7.6,2.325,0],"uv":{"north":{"uv":[7.032,0.032],"uv_size":[8.936,1.936]},"east":{"uv":[-1.032,26.032],"uv_size":[-1.068,5.936]},"south":{"uv":[-1.032,26.032],"uv_size":[-1.068,5.936]},"west":{"uv":[-1.032,26.032],"uv_size":[-1.068,5.936]},"up":{"uv":[7.968,31.968],"uv_size":[-7.936,-0.068]},"down":{"uv":[7.968,31.968],"uv_size":[-7.936,-0.068]}}}]},{"name":"iris","pivot":[-2.17125,23.6125,-3.755],"parent":"eyes","cubes":[{"origin":[0.6275,21.475,-3.7455],"size":[2.6125,3.325,0],"uv":{"north":{"uv":[6.936,20.032],"uv_size":[-6.836,6.936]},"east":{"uv":[1.968,30.032],"uv_size":[-0.068,1.936]},"south":{"uv":[8.032,4.032],"uv_size":[-0.064,1.936]},"west":{"uv":[-1.032,30.032],"uv_size":[-1.068,1.936]},"up":{"uv":[0.032,29.968],"uv_size":[1.936,-0.068]},"down":{"uv":[2.032,29.968],"uv_size":[1.936,-0.068]}}}]},{"name":"iris2","pivot":[1.77125,23.6125,-3.755],"parent":"eyes","cubes":[{"origin":[-3.24,21.475,-3.7455],"size":[2.6125,3.325,0],"uv":{"north":{"uv":[0.1,20.032],"uv_size":[6.836,6.936]},"east":{"uv":[-2.1,30.032],"uv_size":[1.068,1.936]},"south":{"uv":[7.968,4.032],"uv_size":[0.064,1.936]},"west":{"uv":[1.9,30.032],"uv_size":[0.068,1.936]},"up":{"uv":[1.968,29.968],"uv_size":[-1.936,-0.068]},"down":{"uv":[3.968,29.968],"uv_size":[-1.936,-0.068]}}}]},{"name":"lashes","pivot":[-0.2,24.33065,-3.97101],"parent":"eyes","rotation":[2.5,0,0]},{"name":"right_lashes","pivot":[-2.38139,23.69698,-4.17447],"parent":"lashes","rotation":[1.46444,0,0],"cubes":[{"origin":[-0.10773,22.4129,-4.19815],"size":[4.25,2.5,0],"pivot":[1.76727,23.4129,-4.19815],"rotation":[-9.93704,-0.43168,-2.46247],"uv":{"north":{"uv":[24.032,0.032],"uv_size":[4.936,2.936]},"east":{"uv":[21.9,0.032],"uv_size":[0.068,2.936]},"south":{"uv":[-2.1,29.032],"uv_size":[1.068,2.936]},"west":{"uv":[17.9,0.032],"uv_size":[0.068,2.936]},"up":{"uv":[18.032,-1.032],"uv_size":[3.936,-1.068]},"down":{"uv":[22.032,-1.032],"uv_size":[3.936,-1.068]}}}]},{"name":"left_lashes","pivot":[-2.33152,23.69369,-4.17579],"parent":"lashes","rotation":[1.46444,0,0],"cubes":[{"origin":[-4.14227,22.4129,-4.19815],"size":[4.25,2.5,0],"pivot":[-1.76727,23.4129,-4.19815],"rotation":[-9.93704,0.43168,2.46247],"uv":{"north":{"uv":[28.968,0.032],"uv_size":[-4.936,2.936]},"east":{"uv":[17.968,0.032],"uv_size":[-0.068,2.936]},"south":{"uv":[-1.032,29.032],"uv_size":[-1.068,2.936]},"west":{"uv":[21.968,0.032],"uv_size":[-0.068,2.936]},"up":{"uv":[21.968,-1.032],"uv_size":[-3.936,-1.068]},"down":{"uv":[25.968,-1.032],"uv_size":[-3.936,-1.068]}}}]},{"name":"blink","pivot":[-0.2,23.375,-2.7765],"parent":"eyes","cubes":[{"origin":[-3.75,21.95,-2.7765],"size":[7.6,0.95,0],"uv":{"north":{"uv":[16.032,6.032],"uv_size":[7.936,0.936]},"east":{"uv":[16.032,6.032],"uv_size":[-0.064,0.936]},"south":{"uv":[24.032,6.032],"uv_size":[7.936,0.936]},"west":{"uv":[23.968,6.032],"uv_size":[-0.068,0.936]},"up":{"uv":[23.968,6.032],"uv_size":[-7.936,-0.064]},"down":{"uv":[31.968,6.032],"uv_size":[-7.936,-0.064]}}}]},{"name":"blink2","pivot":[-0.2,24.375,-2.7765],"parent":"eyes","cubes":[{"origin":[-3.75,22.95,-2.7765],"size":[7.6,0.95,0],"uv":{"north":{"uv":[16.032,5.032],"uv_size":[7.936,0.936]},"east":{"uv":[16.032,6.032],"uv_size":[-0.064,0.936]},"south":{"uv":[16.032,4.032],"uv_size":[7.936,0.936]},"west":{"uv":[23.968,6.032],"uv_size":[-0.068,0.936]},"up":{"uv":[23.968,6.032],"uv_size":[-7.936,-0.064]},"down":{"uv":[31.968,6.032],"uv_size":[-7.936,-0.064]}}}]},{"name":"bone","pivot":[-7.41539,28.68606,-1.05],"parent":"head","rotation":[0,0,22.5],"cubes":[{"origin":[-5.91539,23.18606,-2.55],"size":[3,4,2],"pivot":[-4.66539,28.18606,-1.55],"rotation":[3.26173,10.17979,37.93665],"uv":{"north":{"uv":[115,18],"uv_size":[3,4]},"east":{"uv":[67,67],"uv_size":[2,4]},"south":{"uv":[115,23],"uv_size":[3,4]},"west":{"uv":[124,15],"uv_size":[2,4]},"up":{"uv":[43,95],"uv_size":[-3,-2]},"down":{"uv":[47,93],"uv_size":[-3,2]}}},{"origin":[-5.91539,23.18606,-2.55],"size":[3,4,2],"pivot":[-4.66539,28.18606,-1.55],"rotation":[3.26173,10.17979,37.93665],"inflate":0.25,"uv":{"north":{"uv":[92,83],"uv_size":[3,4]},"east":{"uv":[124,20],"uv_size":[2,4]},"south":{"uv":[96,83],"uv_size":[3,4]},"west":{"uv":[124,25],"uv_size":[2,4]},"up":{"uv":[51,95],"uv_size":[-3,-2]},"down":{"uv":[59,93],"uv_size":[-3,2]}}},{"origin":[-5.91539,29.18606,-2.55],"size":[3,4,2],"pivot":[-4.66539,28.18606,-1.55],"rotation":[10.26684,13.74337,10.21666],"uv":{"north":{"uv":[100,83],"uv_size":[3,4]},"east":{"uv":[64,92],"uv_size":[2,4]},"south":{"uv":[115,75],"uv_size":[3,4]},"west":{"uv":[73,92],"uv_size":[2,4]},"up":{"uv":[63,95],"uv_size":[-3,-2]},"down":{"uv":[128,30],"uv_size":[-3,2]}}},{"origin":[-5.91539,29.18606,-2.55],"size":[3,4,2],"pivot":[-4.66539,28.18606,-1.55],"rotation":[10.26684,13.74337,10.21666],"inflate":0.25,"uv":{"north":{"uv":[32,84],"uv_size":[3,4]},"east":{"uv":[90,92],"uv_size":[2,4]},"south":{"uv":[116,0],"uv_size":[3,4]},"west":{"uv":[93,92],"uv_size":[2,4]},"up":{"uv":[128,35],"uv_size":[-3,-2]},"down":{"uv":[128,36],"uv_size":[-3,2]}}},{"origin":[-5.66539,27.18606,-2.55],"size":[2,2,2],"pivot":[-4.66539,28.18606,-1.55],"rotation":[8.45737,10.64184,25.23522],"uv":{"north":{"uv":[104,95],"uv_size":[2,2]},"east":{"uv":[127,74],"uv_size":[2,2]},"south":{"uv":[127,77],"uv_size":[2,2]},"west":{"uv":[127,80],"uv_size":[2,2]},"up":{"uv":[115,97],"uv_size":[-2,-2]},"down":{"uv":[118,95],"uv_size":[-2,2]}}},{"origin":[-7.41539,16.68606,-2.05],"size":[5,13,0],"pivot":[-7.41539,28.68606,-1.05],"rotation":[-9.98107,-0.43523,-4.98107],"uv":{"north":{"uv":[56,37],"uv_size":[5,13]},"east":{"uv":[120,95],"uv_size":[0,13]},"south":{"uv":[62,37],"uv_size":[5,13]},"west":{"uv":[120,95],"uv_size":[0,13]},"up":{"uv":[105,15],"uv_size":[-5,0]},"down":{"uv":[100,15],"uv_size":[5,0]}}},{"origin":[-6.86615,17.78853,-2.91592],"size":[5,13,0],"pivot":[-4.36615,24.28853,-2.91592],"rotation":[-12.74994,0.35681,-32.51978],"uv":{"north":{"uv":[68,37],"uv_size":[5,13]},"east":{"uv":[120,95],"uv_size":[0,13]},"south":{"uv":[32,40],"uv_size":[5,13]},"west":{"uv":[120,95],"uv_size":[0,13]},"up":{"uv":[100,15],"uv_size":[5,0]},"down":{"uv":[100,15],"uv_size":[5,0]}}}]},{"name":"ears","pivot":[0.05,-1.8,-0.05],"parent":"head"},{"name":"e1","pivot":[-2.7,26.2,-0.05],"parent":"ears","rotation":[0,0,25],"cubes":[{"origin":[-11.54808,22.76218,-0.55],"size":[10,14,0],"pivot":[-6.54808,29.76218,-0.55],"rotation":[5.71946,37.12482,-20.57795],"uv":{"north":{"uv":[56,22],"uv_size":[10,14]},"east":{"uv":[35,96],"uv_size":[0,14]},"south":{"uv":[67,22],"uv_size":[10,14]},"west":{"uv":[35,96],"uv_size":[0,14]},"up":{"uv":[139,36],"uv_size":[-10,0]},"down":{"uv":[139,36],"uv_size":[-10,0]}}},{"origin":[-12.79808,18.76218,-0.05],"size":[10,14,0],"pivot":[-7.79808,27.76218,-0.05],"rotation":[-7.20516,34.89321,-54.64445],"uv":{"north":{"uv":[56,22],"uv_size":[10,14]},"east":{"uv":[35,96],"uv_size":[0,14]},"south":{"uv":[67,22],"uv_size":[10,14]},"west":{"uv":[35,96],"uv_size":[0,14]},"up":{"uv":[129,36],"uv_size":[10,0]},"down":{"uv":[139,36],"uv_size":[-10,0]}}}]},{"name":"e2","pivot":[2.7,26.2,-0.05],"parent":"ears","rotation":[0,0,-25],"cubes":[{"origin":[1.54808,22.76218,-0.55],"size":[10,14,0],"pivot":[6.54808,29.76218,-0.55],"rotation":[5.71946,-37.12482,20.57795],"uv":{"north":{"uv":[66,22],"uv_size":[-10,14]},"east":{"uv":[35,96],"uv_size":[0,14]},"south":{"uv":[77,22],"uv_size":[-10,14]},"west":{"uv":[35,96],"uv_size":[0,14]},"up":{"uv":[139,36],"uv_size":[-10,0]},"down":{"uv":[129,36],"uv_size":[10,0]}}},{"origin":[2.79808,18.76218,-0.05],"size":[10,14,0],"pivot":[7.79808,27.76218,-0.05],"rotation":[-7.20516,-34.89321,54.64445],"uv":{"north":{"uv":[66,22],"uv_size":[-10,14]},"east":{"uv":[35,96],"uv_size":[0,14]},"south":{"uv":[77,22],"uv_size":[-10,14]},"west":{"uv":[35,96],"uv_size":[0,14]},"up":{"uv":[139,36],"uv_size":[-10,0]},"down":{"uv":[129,36],"uv_size":[10,0]}}}]},{"name":"hair","pivot":[-0.2,-0.85,-1.95],"parent":"head","cubes":[{"origin":[-2.8,28.6,-2.9],"size":[5.7,0.95,5.7],"uv":{"north":{"uv":[125,6],"uv_size":[6,1]},"east":{"uv":[125,39],"uv_size":[6,1]},"south":{"uv":[125,41],"uv_size":[6,1]},"west":{"uv":[125,43],"uv_size":[6,1]},"up":{"uv":[65,61],"uv_size":[-6,-6]},"down":{"uv":[65,62],"uv_size":[-6,6]}}}]},{"name":"front_hair","pivot":[-0.2,26.2,-4.0875],"parent":"hair"},{"name":"lf_hair","pivot":[-2.7,25.7,-4.0875],"parent":"front_hair","cubes":[{"origin":[-2.7,24.45,-4.8375],"size":[3,3,2],"pivot":[-0.7,26.2,-4.0875],"rotation":[-12.5,0,7.5],"uv":{"north":{"uv":[122,59],"uv_size":[3,3]},"east":{"uv":[103,30],"uv_size":[2,3]},"south":{"uv":[122,63],"uv_size":[3,3]},"west":{"uv":[56,85],"uv_size":[2,3]},"up":{"uv":[79,95],"uv_size":[-3,-2]},"down":{"uv":[128,45],"uv_size":[-3,2]}}},{"origin":[-2.7,24.45,-4.8375],"size":[3,3,2],"pivot":[-0.7,26.2,-4.0875],"rotation":[-12.5,0,7.5],"inflate":0.25,"uv":{"north":{"uv":[122,67],"uv_size":[3,3]},"east":{"uv":[80,93],"uv_size":[2,3]},"south":{"uv":[109,90],"uv_size":[3,3]},"west":{"uv":[125,48],"uv_size":[2,3]},"up":{"uv":[128,54],"uv_size":[-3,-2]},"down":{"uv":[128,55],"uv_size":[-3,2]}}},{"origin":[-4.84924,23.94748,-5.11398],"size":[2,3,2],"pivot":[-2.84924,25.19748,-4.11398],"rotation":[-14.09937,28.95621,10.80447],"uv":{"north":{"uv":[83,93],"uv_size":[2,3]},"east":{"uv":[121,93],"uv_size":[2,3]},"south":{"uv":[124,93],"uv_size":[2,3]},"west":{"uv":[126,8],"uv_size":[2,3]},"up":{"uv":[129,95],"uv_size":[-2,-2]},"down":{"uv":[34,96],"uv_size":[-2,2]}}},{"origin":[-4.86431,21.94765,-4.56589],"size":[2,3,2],"pivot":[-3.86431,23.44765,-3.56589],"rotation":[9.7613,25.24758,-2.61569],"uv":{"north":{"uv":[52,94],"uv_size":[2,3]},"east":{"uv":[126,58],"uv_size":[2,3]},"south":{"uv":[126,62],"uv_size":[2,3]},"west":{"uv":[126,66],"uv_size":[2,3]},"up":{"uv":[42,98],"uv_size":[-2,-2]},"down":{"uv":[45,96],"uv_size":[-2,2]}}},{"origin":[-4.86431,21.94765,-4.56589],"size":[2,3,2],"pivot":[-3.86431,23.44765,-3.56589],"rotation":[9.7613,25.24758,-2.61569],"inflate":0.25,"uv":{"north":{"uv":[108,94],"uv_size":[2,3]},"east":{"uv":[126,85],"uv_size":[2,3]},"south":{"uv":[126,89],"uv_size":[2,3]},"west":{"uv":[127,12],"uv_size":[2,3]},"up":{"uv":[48,98],"uv_size":[-2,-2]},"down":{"uv":[51,96],"uv_size":[-2,2]}}}]},{"name":"lff","pivot":[-3.61431,21.44765,-3.56589],"parent":"lf_hair","cubes":[{"origin":[-5.61431,16.94765,-4.31589],"size":[4,5,0],"uv":{"north":{"uv":[79,74],"uv_size":[4,5]},"east":{"uv":[36,71],"uv_size":[0,5]},"south":{"uv":[84,74],"uv_size":[4,5]},"west":{"uv":[36,71],"uv_size":[0,5]},"up":{"uv":[103,44],"uv_size":[-4,0]},"down":{"uv":[103,44],"uv_size":[-4,0]}}}]},{"name":"rf_hair","pivot":[2.7,25.7,-4.0875],"parent":"front_hair","cubes":[{"origin":[2.86431,21.94765,-4.56589],"size":[2,3,2],"pivot":[3.86431,23.44765,-3.56589],"rotation":[9.7613,-25.24758,2.61569],"inflate":0.25,"uv":{"north":{"uv":[110,94],"uv_size":[-2,3]},"east":{"uv":[129,12],"uv_size":[-2,3]},"south":{"uv":[128,89],"uv_size":[-2,3]},"west":{"uv":[128,85],"uv_size":[-2,3]},"up":{"uv":[46,98],"uv_size":[2,-2]},"down":{"uv":[49,96],"uv_size":[2,2]}}},{"origin":[2.86431,21.94765,-4.56589],"size":[2,3,2],"pivot":[3.86431,23.44765,-3.56589],"rotation":[9.7613,-25.24758,2.61569],"uv":{"north":{"uv":[54,94],"uv_size":[-2,3]},"east":{"uv":[128,66],"uv_size":[-2,3]},"south":{"uv":[128,62],"uv_size":[-2,3]},"west":{"uv":[128,58],"uv_size":[-2,3]},"up":{"uv":[40,98],"uv_size":[2,-2]},"down":{"uv":[43,96],"uv_size":[2,2]}}},{"origin":[2.84924,23.94748,-5.11398],"size":[2,3,2],"pivot":[2.84924,25.19748,-4.11398],"rotation":[-14.09937,-28.95621,-10.80447],"uv":{"north":{"uv":[85,93],"uv_size":[-2,3]},"east":{"uv":[128,8],"uv_size":[-2,3]},"south":{"uv":[126,93],"uv_size":[-2,3]},"west":{"uv":[123,93],"uv_size":[-2,3]},"up":{"uv":[127,95],"uv_size":[2,-2]},"down":{"uv":[32,96],"uv_size":[2,2]}}},{"origin":[-0.3,24.45,-4.8375],"size":[3,3,2],"pivot":[0.7,26.2,-4.0875],"rotation":[-12.5,0,-7.5],"inflate":0.25,"uv":{"north":{"uv":[125,67],"uv_size":[-3,3]},"east":{"uv":[127,48],"uv_size":[-2,3]},"south":{"uv":[112,90],"uv_size":[-3,3]},"west":{"uv":[82,93],"uv_size":[-2,3]},"up":{"uv":[125,54],"uv_size":[3,-2]},"down":{"uv":[125,55],"uv_size":[3,2]}}},{"origin":[-0.3,24.45,-4.8375],"size":[3,3,2],"pivot":[0.7,26.2,-4.0875],"rotation":[-12.5,0,-7.5],"uv":{"north":{"uv":[125,59],"uv_size":[-3,3]},"east":{"uv":[58,85],"uv_size":[-2,3]},"south":{"uv":[125,63],"uv_size":[-3,3]},"west":{"uv":[105,30],"uv_size":[-2,3]},"up":{"uv":[76,95],"uv_size":[3,-2]},"down":{"uv":[125,45],"uv_size":[3,2]}}}]},{"name":"rff","pivot":[3.61431,21.44765,-3.56589],"parent":"rf_hair","cubes":[{"origin":[1.61431,16.94765,-4.31589],"size":[4,5,0],"uv":{"north":{"uv":[83,74],"uv_size":[-4,5]},"east":{"uv":[36,71],"uv_size":[0,5]},"south":{"uv":[88,74],"uv_size":[-4,5]},"west":{"uv":[36,71],"uv_size":[0,5]},"up":{"uv":[99,44],"uv_size":[4,0]},"down":{"uv":[99,44],"uv_size":[4,0]}}}]},{"name":"l_h","pivot":[-4,26.85,-0.05],"parent":"hair","cubes":[{"origin":[-5,20.6,-2.8],"size":[3,6,4],"pivot":[-4,25.6,-0.8],"rotation":[-12.2127,2.68507,12.2127],"uv":{"north":{"uv":[101,76],"uv_size":[3,6]},"east":{"uv":[104,49],"uv_size":[4,6]},"south":{"uv":[108,70],"uv_size":[3,6]},"west":{"uv":[104,56],"uv_size":[4,6]},"up":{"uv":[39,88],"uv_size":[-3,-4]},"down":{"uv":[119,5],"uv_size":[-3,4]}}},{"origin":[-5,20.6,-2.8],"size":[3,6,4],"pivot":[-4,25.6,-0.8],"rotation":[-12.2127,2.68507,12.2127],"inflate":0.25,"uv":{"north":{"uv":[32,77],"uv_size":[3,6]},"east":{"uv":[53,74],"uv_size":[4,6]},"south":{"uv":[36,77],"uv_size":[3,6]},"west":{"uv":[58,74],"uv_size":[4,6]},"up":{"uv":[43,88],"uv_size":[-3,-4]},"down":{"uv":[119,28],"uv_size":[-3,4]}}},{"origin":[-5,20.6,-0.7],"size":[3,6,4],"pivot":[-4,25.6,0.8],"rotation":[12.2127,-2.68507,12.2127],"inflate":0.25,"uv":{"north":{"uv":[39,77],"uv_size":[-3,6]},"east":{"uv":[57,74],"uv_size":[-4,6]},"south":{"uv":[35,77],"uv_size":[-3,6]},"west":{"uv":[62,74],"uv_size":[-4,6]},"up":{"uv":[43,84],"uv_size":[-3,4]},"down":{"uv":[119,32],"uv_size":[-3,-4]}}},{"origin":[-8.40918,21.905,-1.17577],"size":[6,6,0],"pivot":[-5.40918,23.905,-1.17577],"rotation":[-9.97528,7.57131,36.83829],"uv":{"north":{"uv":[96,20],"uv_size":[6,6]},"east":{"uv":[36,96],"uv_size":[0,6]},"south":{"uv":[96,27],"uv_size":[6,6]},"west":{"uv":[36,96],"uv_size":[0,6]},"up":{"uv":[135,37],"uv_size":[-6,0]},"down":{"uv":[135,37],"uv_size":[-6,0]}}},{"origin":[-5,20.6,-0.45],"size":[3,6,4],"pivot":[-4,25.6,1.55],"rotation":[12.2127,-2.68507,12.2127],"uv":{"north":{"uv":[111,70],"uv_size":[-3,6]},"east":{"uv":[108,49],"uv_size":[-4,6]},"south":{"uv":[104,76],"uv_size":[-3,6]},"west":{"uv":[108,56],"uv_size":[-4,6]},"up":{"uv":[39,84],"uv_size":[-3,4]},"down":{"uv":[119,9],"uv_size":[-3,-4]}}}]},{"name":"r_h","pivot":[4,26.85,-0.05],"parent":"hair","cubes":[{"origin":[2,20.6,-2.8],"size":[3,6,4],"pivot":[4,25.6,-0.8],"rotation":[-12.2127,-2.68507,-12.2127],"uv":{"north":{"uv":[104,76],"uv_size":[-3,6]},"east":{"uv":[108,56],"uv_size":[-4,6]},"south":{"uv":[111,70],"uv_size":[-3,6]},"west":{"uv":[108,49],"uv_size":[-4,6]},"up":{"uv":[36,88],"uv_size":[3,-4]},"down":{"uv":[116,5],"uv_size":[3,4]}}},{"origin":[2,20.6,-2.8],"size":[3,6,4],"pivot":[4,25.6,-0.8],"rotation":[-12.2127,-2.68507,-12.2127],"inflate":0.25,"uv":{"north":{"uv":[35,77],"uv_size":[-3,6]},"east":{"uv":[62,74],"uv_size":[-4,6]},"south":{"uv":[39,77],"uv_size":[-3,6]},"west":{"uv":[57,74],"uv_size":[-4,6]},"up":{"uv":[40,88],"uv_size":[3,-4]},"down":{"uv":[116,28],"uv_size":[3,4]}}},{"origin":[2,20.6,-0.7],"size":[3,6,4],"pivot":[4,25.6,0.8],"rotation":[12.2127,2.68507,-12.2127],"inflate":0.25,"uv":{"north":{"uv":[36,77],"uv_size":[3,6]},"east":{"uv":[58,74],"uv_size":[4,6]},"south":{"uv":[32,77],"uv_size":[3,6]},"west":{"uv":[53,74],"uv_size":[4,6]},"up":{"uv":[40,84],"uv_size":[3,4]},"down":{"uv":[116,32],"uv_size":[3,-4]}}},{"origin":[2.40918,21.905,-1.17577],"size":[6,6,0],"pivot":[5.40918,23.905,-1.17577],"rotation":[-9.97528,-7.57131,-36.83829],"uv":{"north":{"uv":[102,20],"uv_size":[-6,6]},"east":{"uv":[36,96],"uv_size":[0,6]},"south":{"uv":[102,27],"uv_size":[-6,6]},"west":{"uv":[36,96],"uv_size":[0,6]},"up":{"uv":[129,37],"uv_size":[6,0]},"down":{"uv":[129,37],"uv_size":[6,0]}}},{"origin":[2,20.6,-0.45],"size":[3,6,4],"pivot":[4,25.6,1.55],"rotation":[12.2127,2.68507,-12.2127],"uv":{"north":{"uv":[108,70],"uv_size":[3,6]},"east":{"uv":[104,56],"uv_size":[4,6]},"south":{"uv":[101,76],"uv_size":[3,6]},"west":{"uv":[104,49],"uv_size":[4,6]},"up":{"uv":[36,84],"uv_size":[3,4]},"down":{"uv":[116,9],"uv_size":[3,-4]}}}]},{"name":"back_hair","pivot":[0.37894,27.14677,4.05932],"parent":"hair"},{"name":"bh1","pivot":[1.37894,24.14677,4.55932],"parent":"back_hair","cubes":[{"origin":[-3.62106,20.39677,2.05932],"size":[4,6,3],"pivot":[1.37894,24.14677,4.55932],"rotation":[20,0,12.5],"uv":{"north":{"uv":[106,30],"uv_size":[4,6]},"east":{"uv":[40,77],"uv_size":[3,6]},"south":{"uv":[63,74],"uv_size":[4,6]},"west":{"uv":[68,77],"uv_size":[3,6]},"up":{"uv":[69,87],"uv_size":[-4,-3]},"down":{"uv":[120,33],"uv_size":[-4,3]}}},{"origin":[-3.62106,20.39677,2.05932],"size":[4,6,3],"pivot":[1.37894,24.14677,4.55932],"rotation":[20,0,12.5],"inflate":0.25,"uv":{"north":{"uv":[106,37],"uv_size":[4,6]},"east":{"uv":[109,49],"uv_size":[3,6]},"south":{"uv":[74,74],"uv_size":[4,6]},"west":{"uv":[109,56],"uv_size":[3,6]},"up":{"uv":[120,40],"uv_size":[-4,-3]},"down":{"uv":[80,84],"uv_size":[-4,3]}}},{"origin":[-0.37894,20.39677,2.05932],"size":[4,6,3],"pivot":[-1.37894,24.14677,4.55932],"rotation":[20,0,-12.5],"uv":{"north":{"uv":[110,30],"uv_size":[-4,6]},"east":{"uv":[71,77],"uv_size":[-3,6]},"south":{"uv":[67,74],"uv_size":[-4,6]},"west":{"uv":[43,77],"uv_size":[-3,6]},"up":{"uv":[65,87],"uv_size":[4,-3]},"down":{"uv":[116,33],"uv_size":[4,3]}}},{"origin":[-0.37894,20.39677,2.05932],"size":[4,6,3],"pivot":[-1.37894,24.14677,4.55932],"rotation":[20,0,-12.5],"inflate":0.25,"uv":{"north":{"uv":[106,37],"uv_size":[4,6]},"east":{"uv":[109,56],"uv_size":[3,6]},"south":{"uv":[74,74],"uv_size":[4,6]},"west":{"uv":[109,49],"uv_size":[3,6]},"up":{"uv":[120,40],"uv_size":[-4,-3]},"down":{"uv":[80,84],"uv_size":[-4,3]}}}]},{"name":"bh2","pivot":[0.12894,20.88795,3.09339],"parent":"back_hair","rotation":[15,0,0],"cubes":[{"origin":[-0.25,15.74118,2.03407],"size":[4,7,2],"pivot":[0.75,19.24118,3.03407],"rotation":[0,0,-7.5],"uv":{"north":{"uv":[74,66],"uv_size":[4,7]},"east":{"uv":[51,57],"uv_size":[2,7]},"south":{"uv":[79,66],"uv_size":[4,7]},"west":{"uv":[85,80],"uv_size":[2,7]},"up":{"uv":[100,94],"uv_size":[-4,-2]},"down":{"uv":[36,93],"uv_size":[-4,2]}}},{"origin":[-0.2737,15.95762,2.03407],"size":[4,7,2],"pivot":[1.7263,19.45762,3.03407],"rotation":[0,0,-2.5],"inflate":0.25,"uv":{"north":{"uv":[84,66],"uv_size":[4,7]},"east":{"uv":[59,81],"uv_size":[2,7]},"south":{"uv":[89,66],"uv_size":[4,7]},"west":{"uv":[62,81],"uv_size":[2,7]},"up":{"uv":[129,2],"uv_size":[-4,-2]},"down":{"uv":[129,3],"uv_size":[-4,2]}}},{"origin":[-3.7263,15.95762,2.03407],"size":[4,7,2],"pivot":[-1.7263,19.45762,3.03407],"rotation":[0,0,2.5],"inflate":0.25,"uv":{"north":{"uv":[88,66],"uv_size":[-4,7]},"east":{"uv":[64,81],"uv_size":[-2,7]},"south":{"uv":[93,66],"uv_size":[-4,7]},"west":{"uv":[61,81],"uv_size":[-2,7]},"up":{"uv":[125,2],"uv_size":[4,-2]},"down":{"uv":[125,3],"uv_size":[4,2]}}},{"origin":[-3.75,15.74118,2.03407],"size":[4,7,2],"pivot":[-0.75,19.24118,3.03407],"rotation":[0,0,7.5],"uv":{"north":{"uv":[78,66],"uv_size":[-4,7]},"east":{"uv":[87,80],"uv_size":[-2,7]},"south":{"uv":[83,66],"uv_size":[-4,7]},"west":{"uv":[53,57],"uv_size":[-2,7]},"up":{"uv":[96,94],"uv_size":[4,-2]},"down":{"uv":[32,93],"uv_size":[4,2]}}},{"origin":[-0.62106,13.88795,2.09339],"size":[5,3,2.5],"pivot":[1.62894,15.38795,3.34339],"rotation":[15,0,-12.5],"uv":{"north":{"uv":[111,10],"uv_size":[5,3]},"east":{"uv":[122,85],"uv_size":[3,3]},"south":{"uv":[111,44],"uv_size":[5,3]},"west":{"uv":[122,89],"uv_size":[3,3]},"up":{"uv":[117,17],"uv_size":[-5,-3]},"down":{"uv":[84,80],"uv_size":[-5,3]}}},{"origin":[-0.62106,13.88795,2.09339],"size":[5,3,2.5],"pivot":[1.62894,15.38795,3.34339],"rotation":[15,0,-12.5],"inflate":0.25,"uv":{"north":{"uv":[112,63],"uv_size":[5,3]},"east":{"uv":[69,91],"uv_size":[3,3]},"south":{"uv":[112,67],"uv_size":[5,3]},"west":{"uv":[86,91],"uv_size":[3,3]},"up":{"uv":[117,74],"uv_size":[-5,-3]},"down":{"uv":[58,81],"uv_size":[-5,3]}}},{"origin":[-0.62106,13.88795,2.09339],"size":[5,3,2.5],"pivot":[1.62894,15.38795,3.34339],"rotation":[15,0,-12.5],"inflate":0.25,"uv":{"north":{"uv":[112,63],"uv_size":[5,3]},"east":{"uv":[69,91],"uv_size":[3,3]},"south":{"uv":[112,67],"uv_size":[5,3]},"west":{"uv":[86,91],"uv_size":[3,3]},"up":{"uv":[117,74],"uv_size":[-5,-3]},"down":{"uv":[58,81],"uv_size":[-5,3]}}},{"origin":[-4.37894,13.88795,2.09339],"size":[5,3,2.5],"pivot":[-1.62894,15.38795,3.34339],"rotation":[15,0,12.5],"uv":{"north":{"uv":[116,10],"uv_size":[-5,3]},"east":{"uv":[125,89],"uv_size":[-3,3]},"south":{"uv":[116,44],"uv_size":[-5,3]},"west":{"uv":[125,85],"uv_size":[-3,3]},"up":{"uv":[112,17],"uv_size":[5,-3]},"down":{"uv":[79,80],"uv_size":[5,3]}}}]},{"name":"LeftLeg","pivot":[-1.9,12,0],"parent":"whole","cubes":[{"origin":[-3.05,0,-1.75],"size":[3,11.25,3.5],"pivot":[-1.8,6.5,0],"rotation":[0,0,-2.5],"uv":{"north":{"uv":[66,55],"uv_size":[3,11]},"east":{"uv":[32,54],"uv_size":[4,11]},"south":{"uv":[69,55],"uv_size":[-3,11]},"west":{"uv":[70,54],"uv_size":[4,11]},"up":{"uv":[84,88],"uv_size":[-3,-4]},"down":{"uv":[55,85],"uv_size":[-3,4]}}},{"origin":[-3.01207,0.01174,-1.75],"size":[3,11.25,3.5],"pivot":[-1.51207,5.63674,0],"rotation":[0,0,-2.5],"inflate":0.25,"uv":{"north":{"uv":[37,65],"uv_size":[3,11]},"east":{"uv":[75,54],"uv_size":[4,11]},"south":{"uv":[40,65],"uv_size":[-3,11]},"west":{"uv":[80,54],"uv_size":[4,11]},"up":{"uv":[120,45],"uv_size":[-3,-4]},"down":{"uv":[120,46],"uv_size":[-3,4]}}},{"origin":[-3.3,0,-2],"size":[3.35,4.25,4],"pivot":[-1.8,6.5,0],"rotation":[0,0,-2.5],"uv":{"north":{"uv":[117,51],"uv_size":[3,4]},"east":{"uv":[111,5],"uv_size":[4,4]},"south":{"uv":[120,51],"uv_size":[-3,4]},"west":{"uv":[111,29],"uv_size":[4,4]},"up":{"uv":[120,60],"uv_size":[-3,-4]},"down":{"uv":[121,10],"uv_size":[-3,4]}}},{"origin":[-2.8,0,-2.2],"size":[3.35,4.25,0],"pivot":[-1.8,6.5,0],"rotation":[0,0,-2.5],"uv":{"north":{"uv":[70,86],"uv_size":[3,4]},"east":{"uv":[44,77],"uv_size":[0,4]},"south":{"uv":[88,86],"uv_size":[3,4]},"west":{"uv":[44,77],"uv_size":[0,4]},"up":{"uv":[102,45],"uv_size":[-3,0]},"down":{"uv":[102,45],"uv_size":[-3,0]}}},{"origin":[-3.3,0,-2.1],"size":[3.35,4.25,0],"pivot":[-1.8,6.5,0],"rotation":[0,0,-2.5],"uv":{"north":{"uv":[118,61],"uv_size":[3,4]},"east":{"uv":[44,77],"uv_size":[0,4]},"south":{"uv":[118,66],"uv_size":[3,4]},"west":{"uv":[44,77],"uv_size":[0,4]},"up":{"uv":[102,45],"uv_size":[-3,0]},"down":{"uv":[99,45],"uv_size":[3,0]}}},{"origin":[-3.53154,10.1093,-1.7719],"size":[3.25,3,3.75],"pivot":[-1.78154,14.1093,-0.2719],"rotation":[0,0,-2.5],"uv":{"north":{"uv":[123,71],"uv_size":[3,3]},"east":{"uv":[118,71],"uv_size":[4,3]},"south":{"uv":[104,91],"uv_size":[3,3]},"west":{"uv":[109,86],"uv_size":[4,3]},"up":{"uv":[117,90],"uv_size":[-3,-4]},"down":{"uv":[121,86],"uv_size":[-3,4]}}},{"origin":[-3.55205,9.17095,-1.7719],"size":[3.5,3,3.75],"pivot":[-1.80205,10.67095,0.1031],"rotation":[0,0,-12.5],"inflate":0.25,"uv":{"north":{"uv":[119,15],"uv_size":[4,3]},"east":{"uv":[119,19],"uv_size":[4,3]},"south":{"uv":[119,23],"uv_size":[4,3]},"west":{"uv":[104,87],"uv_size":[4,3]},"up":{"uv":[115,38],"uv_size":[-4,-4]},"down":{"uv":[115,39],"uv_size":[-4,4]}}},{"origin":[-5.65,5.25,1],"size":[3,3,0],"pivot":[-4.15,6.75,1],"rotation":[-8.10692,46.96776,-11.02705],"uv":{"north":{"uv":[123,75],"uv_size":[3,3]},"east":{"uv":[104,83],"uv_size":[0,3]},"south":{"uv":[123,79],"uv_size":[3,3]},"west":{"uv":[104,83],"uv_size":[0,3]},"up":{"uv":[99,45],"uv_size":[3,0]},"down":{"uv":[99,45],"uv_size":[3,0]}}},{"origin":[-6.15,5,1],"size":[3,3,0],"pivot":[-4.15,6.75,1],"rotation":[-41.79505,25.01686,-64.68335],"uv":{"north":{"uv":[126,78],"uv_size":[-3,-3]},"east":{"uv":[104,83],"uv_size":[0,3]},"south":{"uv":[123,79],"uv_size":[3,3]},"west":{"uv":[104,83],"uv_size":[0,3]},"up":{"uv":[99,45],"uv_size":[3,0]},"down":{"uv":[99,45],"uv_size":[3,0]}}}]},{"name":"bone_2","pivot":[-1.80205,10.67095,0.1031],"parent":"LeftLeg","cubes":[{"origin":[-4.30205,10.67095,-2.6469],"size":[2,2,3],"pivot":[-3.80205,11.67095,-0.3969],"rotation":[0,-15,10],"uv":{"north":{"uv":[55,96],"uv_size":[2,2]},"east":{"uv":[127,16],"uv_size":[3,2]},"south":{"uv":[58,96],"uv_size":[2,2]},"west":{"uv":[127,19],"uv_size":[3,2]},"up":{"uv":[129,25],"uv_size":[-2,-3]},"down":{"uv":[129,26],"uv_size":[-2,3]}}},{"origin":[-4.13525,10.55338,-2.49194],"size":[2,2,3],"pivot":[-3.13525,11.55338,-0.99194],"rotation":[-18.15883,-5.94603,28.33816],"inflate":0.25,"uv":{"north":{"uv":[61,96],"uv_size":[2,2]},"east":{"uv":[67,95],"uv_size":[3,2]},"south":{"uv":[76,96],"uv_size":[2,2]},"west":{"uv":[86,95],"uv_size":[3,2]},"up":{"uv":[98,98],"uv_size":[-2,-3]},"down":{"uv":[129,70],"uv_size":[-2,3]}}}]},{"name":"RightLeg","pivot":[1.9,12,0],"parent":"whole","cubes":[{"origin":[0.05,0,-1.75],"size":[3,11.25,3.5],"pivot":[1.8,6.5,0],"rotation":[0,0,2.5],"uv":{"north":{"uv":[41,65],"uv_size":[3,11]},"east":{"uv":[85,54],"uv_size":[4,11]},"south":{"uv":[41,65],"uv_size":[3,11]},"west":{"uv":[54,55],"uv_size":[4,11]},"up":{"uv":[122,79],"uv_size":[-3,-4]},"down":{"uv":[122,80],"uv_size":[-3,4]}}},{"origin":[-0.05,0,-2],"size":[3.35,4.25,4],"pivot":[1.8,6.5,0],"rotation":[0,0,2.5],"uv":{"north":{"uv":[120,51],"uv_size":[-3,4]},"east":{"uv":[115,29],"uv_size":[-4,4]},"south":{"uv":[117,51],"uv_size":[3,4]},"west":{"uv":[115,5],"uv_size":[-4,4]},"up":{"uv":[120,56],"uv_size":[-3,4]},"down":{"uv":[121,10],"uv_size":[-3,4]}}},{"origin":[-0.55,0,-2.2],"size":[3.35,4.25,0],"pivot":[1.8,6.5,0],"rotation":[0,0,2.5],"uv":{"north":{"uv":[73,86],"uv_size":[-3,4]},"east":{"uv":[44,77],"uv_size":[0,4]},"south":{"uv":[88,86],"uv_size":[3,4]},"west":{"uv":[44,77],"uv_size":[0,4]},"up":{"uv":[99,45],"uv_size":[3,0]},"down":{"uv":[99,45],"uv_size":[3,0]}}},{"origin":[-0.05,0,-2.1],"size":[3.35,4.25,0],"pivot":[1.8,6.5,0],"rotation":[0,0,2.5],"uv":{"north":{"uv":[118,61],"uv_size":[3,4]},"east":{"uv":[44,77],"uv_size":[0,4]},"south":{"uv":[118,66],"uv_size":[3,4]},"west":{"uv":[44,77],"uv_size":[0,4]},"up":{"uv":[99,45],"uv_size":[3,0]},"down":{"uv":[102,45],"uv_size":[-3,0]}}},{"origin":[0.28154,10.1093,-1.7719],"size":[3.25,3,3.75],"pivot":[1.78154,14.1093,-0.2719],"rotation":[0,0,2.5],"uv":{"north":{"uv":[113,91],"uv_size":[3,3]},"east":{"uv":[120,0],"uv_size":[4,3]},"south":{"uv":[117,91],"uv_size":[3,3]},"west":{"uv":[120,4],"uv_size":[4,3]},"up":{"uv":[47,92],"uv_size":[-3,-4]},"down":{"uv":[51,88],"uv_size":[-3,4]}}},{"origin":[0.05205,9.17095,-1.7719],"size":[3.5,3,3.75],"pivot":[1.80205,10.67095,0.1031],"rotation":[0,0,12.5],"inflate":0.25,"uv":{"north":{"uv":[123,15],"uv_size":[-4,3]},"east":{"uv":[108,87],"uv_size":[-4,3]},"south":{"uv":[123,23],"uv_size":[-4,3]},"west":{"uv":[123,19],"uv_size":[-4,3]},"up":{"uv":[115,34],"uv_size":[-4,4]},"down":{"uv":[115,39],"uv_size":[-4,4]}}},{"origin":[2.9,10.5,-1],"size":[2,2,2],"pivot":[3.9,11,0],"rotation":[-18.88172,6.71771,-71.11828],"uv":{"north":{"uv":[128,48],"uv_size":[2,2]},"east":{"uv":[127,96],"uv_size":[2,2]},"south":{"uv":[129,8],"uv_size":[2,2]},"west":{"uv":[129,30],"uv_size":[2,2]},"up":{"uv":[66,99],"uv_size":[-2,-2]},"down":{"uv":[131,33],"uv_size":[-2,2]}}},{"origin":[2.9,6,1],"size":[2,4,0],"uv":{"north":{"uv":[101,92],"uv_size":[2,4]},"east":{"uv":[44,77],"uv_size":[0,4]},"south":{"uv":[37,93],"uv_size":[2,4]},"west":{"uv":[44,77],"uv_size":[0,4]},"up":{"uv":[58,67],"uv_size":[-2,0]},"down":{"uv":[56,67],"uv_size":[2,0]}}}]},{"name":"RightArm_2","pivot":[4.37586,19.90466,0]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/baron.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/baron.anim.json new file mode 100644 index 0000000..8367597 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/baron.anim.json @@ -0,0 +1 @@ +{"autoplay":[],"clips":{"a11":{"loop":"once","length":8,"bones":{"Head":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]},"Body":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]},"LeftArm":{"rotation":[[0,0,0,0],[0.48,58.55737,20.31333,28.12449],[1.6,58.55737,20.31333,28.12449],[6.92,58.55737,20.31333,28.12449],[7.4,0,0,0]],"position":[[0,0,0,0],[0.48,-1,0,-1],[1.6,-1,0,-1],[6.92,-1,0,-1],[7.4,0,0,0]],"scale":[[0,1,1,1],[7.4,1,1,1]]},"RightArm":{"rotation":[[0,0,0,0],[0.48,60.97696,-19.46826,-24.03418],[1.6,60.97696,-19.46826,-24.03418],[6.92,60.97696,-19.46826,-24.03418],[7.4,0,0,0]],"position":[[0,0,0,0],[0.48,1,0,-1],[1.6,1,0,-1],[6.92,1,0,-1],[7.4,0,0,0]],"scale":[[0,1,1,1],[7.4,1,1,1]]},"root":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]},"LeftLeg":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]},"RightLeg":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]}}},"walk":{"loop":"loop","length":1.24,"bones":{"LeftSpyglassPivot":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]},"RightSpyglassPivot":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]},"HelmetItemPivot":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]},"physBoob2":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]},"physBoob":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]},"LeftItemPivot":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]},"LeftParrotPivot":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]},"RightParrotPivot":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]},"RightItemPivot":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]}}},"a1":{"loop":"once","length":6.2,"bones":{"root":{"rotation":[[0,0,0,0],[1.56,0,0,0],[1.96,0,0,0],[2.44,0,167.5,0],[4.76,0,167.5,0],[5.24,0,0,0]],"position":[[0,0,0,0],[1.96,0,0,0],[2.2,0,5,0],[2.44,0,0,2],[4.76,0,0,2],[4.96,0,5,0],[5.16,0,0,0],[5.32,0,0,0]]},"Head":{"rotation":[[0,0,0,10],[0.36,0,0,-10],[0.56,0,0,-10],[0.88,0,0,10],[1.24,0,0,10],[1.56,0,0,-10],[1.88,0,0,-10],[2.36,0,0,10],[2.72,0,0,10],[3.04,0,0,-10],[3.36,0,0,-10],[3.68,0,0,10],[4.04,0,0,10],[4.36,0,0,-10],[4.68,0,0,-10],[5.04,0,0,10],[5.4,0,0,10],[5.8,0,0,-10],[6.12,0,0,-10]],"position":[[0,0,0,-0.6]]},"Body":{"rotation":[[0,-14.87739,-1.93597,-7.24721],[0.32,-14.87739,1.93597,7.24721],[0.56,-14.87739,1.93597,7.24721],[0.88,-14.87739,-1.93597,-7.24721],[1.2,-14.87739,-1.93597,-7.24721],[1.52,-14.87739,1.93597,7.24721],[1.84,-14.87739,1.93597,7.24721],[2.36,-14.87739,-1.93597,-7.24721],[2.68,-14.87739,-1.93597,-7.24721],[3,-14.87739,1.93597,7.24721],[3.32,-14.87739,1.93597,7.24721],[3.68,-14.87739,-1.93597,-7.24721],[4,-14.87739,-1.93597,-7.24721],[4.32,-14.87739,1.93597,7.24721],[4.64,-14.87739,1.93597,7.24721],[5.04,-14.87739,-1.93597,-7.24721],[5.36,-14.87739,-1.93597,-7.24721],[5.76,-14.87739,1.93597,7.24721],[6.08,-14.87739,1.93597,7.24721]],"position":[[0,0,0,-1]],"scale":[[0,1,1,1]]},"LeftArm":{"rotation":[[0,0,0,22.5],[0.32,0,0,97.5],[0.56,0,0,97.5],[0.88,0,0,22.5],[1.2,0,0,22.5],[1.52,0,0,97.5],[1.84,0,0,97.5],[2.36,0,0,22.5],[2.68,0,0,22.5],[3,0,0,97.5],[3.32,0,0,97.5],[3.68,0,0,22.5],[4,0,0,22.5],[4.32,0,0,97.5],[4.64,0,0,97.5],[5.04,0,0,22.5],[5.36,0,0,22.5],[5.76,0,0,97.5],[6.08,0,0,97.5]],"position":[[0,0,0,0],[0.88,0,0,0],[1.2,0,0,0],[2.36,0,0,0],[2.68,0,0,0],[3.68,0,0,0],[4,0,0,0],[5.04,0,0,0],[5.36,0,0,0]]},"RightArm":{"rotation":[[0,0,0,-90],[0.32,0,0,-7.5],[0.56,0,0,-7.5],[0.88,0,0,-90],[1.2,0,0,-90],[1.52,0,0,-7.5],[1.84,0,0,-7.5],[2.36,0,0,-90],[2.68,0,0,-90],[3,0,0,-7.5],[3.32,0,0,-7.5],[3.68,0,0,-90],[4,0,0,-90],[4.32,0,0,-7.5],[4.64,0,0,-7.5],[5.04,0,0,-90],[5.36,0,0,-90],[5.76,0,0,-7.5],[6.08,0,0,-7.5]],"position":[[0,0,0,0],[0.32,0,-1.25,0],[0.56,0,-1.25,0],[0.88,0,0,0],[1.2,0,0,0],[1.52,0,-1.25,0],[1.84,0,-1.25,0],[2.36,0,0,0],[2.68,0,0,0],[3,0,-1.25,0],[3.32,0,-1.25,0],[3.68,0,0,0],[4,0,0,0],[4.32,0,-1.25,0],[4.64,0,-1.25,0],[5.04,0,0,0],[5.36,0,0,0],[5.76,0,-1.25,0],[6.08,0,-1.25,0]],"scale":[[0,1,1,1],[0.88,1,1,1],[1.2,1,1,1],[2.36,1,1,1],[2.68,1,1,1],[3.68,1,1,1],[4,1,1,1],[5.04,1,1,1],[5.36,1,1,1]]},"LeftLeg":{"rotation":[[0,0,0,5],[0.32,0,0,-7.5],[0.56,0,0,-7.5],[0.88,0,0,5],[1.2,0,0,5],[1.52,0,0,-7.5],[1.84,0,0,-7.5],[2.36,0,0,5],[2.68,0,0,5],[3,0,0,-7.5],[3.32,0,0,-7.5],[3.68,0,0,5],[4,0,0,5],[4.32,0,0,-7.5],[4.64,0,0,-7.5],[5.04,0,0,5],[5.36,0,0,5],[5.76,0,0,-7.5],[6.08,0,0,-7.5]],"position":[[0,1,0,0],[0.32,-1,0,0],[0.56,-1,0,0],[0.88,1,0,0],[1.2,1,0,0],[1.52,-1,0,0],[1.84,-1,0,0],[2.36,1,0,0],[2.68,1,0,0],[3,-1,0,0],[3.32,-1,0,0],[3.68,1,0,0],[4,1,0,0],[4.32,-1,0,0],[4.64,-1,0,0],[5.04,1,0,0],[5.36,1,0,0],[5.76,-1,0,0],[6.08,-1,0,0]],"scale":[[0,1,1,1]]},"RightLeg":{"rotation":[[0,0,0,7.5],[0.32,0,0,-2.5],[0.56,0,0,-2.5],[0.88,0,0,7.5],[1.2,0,0,7.5],[1.52,0,0,-2.5],[1.84,0,0,-2.5],[2.36,0,0,7.5],[2.68,0,0,7.5],[3,0,0,-2.5],[3.32,0,0,-2.5],[3.68,0,0,7.5],[4,0,0,7.5],[4.32,0,0,-2.5],[4.64,0,0,-2.5],[5.04,0,0,7.5],[5.36,0,0,7.5],[5.76,0,0,-2.5],[6.08,0,0,-2.5]],"position":[[0,1,0,0],[0.32,-1,0,0],[0.56,-1,0,0],[0.88,1,0,0],[1.2,1,0,0],[1.52,-1,0,0],[1.84,-1,0,0],[2.36,1,0,0],[2.68,1,0,0],[3,-1,0,0],[3.32,-1,0,0],[3.68,1,0,0],[4,1,0,0],[4.32,-1,0,0],[4.64,-1,0,0],[5.04,1,0,0],[5.36,1,0,0],[5.76,-1,0,0],[6.08,-1,0,0]],"scale":[[0,1,1,1]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/baron.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/baron.geo.json new file mode 100644 index 0000000..9f9b6ed --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/baron.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.baron","texture_width":192,"texture_height":64,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"root","pivot":[0,0,0]},{"name":"Head","pivot":[0,15,0],"parent":"root","cubes":[{"origin":[-5,15,-4.5],"size":[10,9,9],"uv":{"north":{"uv":[0,0],"uv_size":[10,9]},"east":{"uv":[0,20],"uv_size":[9,9]},"south":{"uv":[0,10],"uv_size":[10,9]},"west":{"uv":[10,20],"uv_size":[9,9]},"up":{"uv":[21,9],"uv_size":[-10,-9]},"down":{"uv":[21,10],"uv_size":[-10,9]}}},{"origin":[-5.2,15,-4.5],"size":[0,9,9],"uv":{"north":{"uv":[144,0],"uv_size":[9,9]},"east":{"uv":[144,9],"uv_size":[9,9]},"south":{"uv":[144,9],"uv_size":[9,9]},"west":{"uv":[144,0],"uv_size":[9,9]},"up":{"uv":[165,9],"uv_size":[-10,-9]},"down":{"uv":[165,10],"uv_size":[-10,9]}}},{"origin":[-5.5,24.2,-6],"size":[4,2,4],"pivot":[-2.5,24.2,-3],"rotation":[43.21918,13.99545,-14.43276],"uv":{"north":{"uv":[0,30],"uv_size":[4,2]},"east":{"uv":[8,30],"uv_size":[4,2]},"south":{"uv":[4,30],"uv_size":[4,2]},"west":{"uv":[12,30],"uv_size":[4,2]},"up":{"uv":[22,9],"uv_size":[4,4]},"down":{"uv":[24,28],"uv_size":[4,4]}}},{"origin":[1.5,24.2,-6],"size":[4,2,4],"pivot":[2.5,24.2,-3],"rotation":[43.21918,-13.99545,14.43276],"uv":{"north":{"uv":[27,9],"uv_size":[4,2]},"east":{"uv":[27,12],"uv_size":[4,2]},"south":{"uv":[27,15],"uv_size":[4,2]},"west":{"uv":[28,18],"uv_size":[4,2]},"up":{"uv":[32,32],"uv_size":[-4,-4]},"down":{"uv":[26,14],"uv_size":[-4,4]}}},{"origin":[2.4,16.73015,-4.6586],"size":[5,5.5,0],"pivot":[4.9,19.48015,-4.6586],"rotation":[8.59262,-40.38512,-20.71303],"uv":{"north":{"uv":[40,0],"uv_size":[5,6]},"east":{"uv":[32,0],"uv_size":[0,6]},"south":{"uv":[40,6],"uv_size":[5,6]},"west":{"uv":[32,0],"uv_size":[0,6]},"up":{"uv":[37,0],"uv_size":[-5,0]},"down":{"uv":[37,0],"uv_size":[-5,0]}}},{"origin":[-7.4,16.73015,-4.6586],"size":[5,5.5,0],"pivot":[-4.9,19.48015,-4.6586],"rotation":[8.59262,40.38512,20.71303],"uv":{"north":{"uv":[45,0],"uv_size":[-5,6]},"east":{"uv":[32,0],"uv_size":[0,5.5]},"south":{"uv":[45,6],"uv_size":[-5,6]},"west":{"uv":[32,0],"uv_size":[0,5.5]},"up":{"uv":[34,0],"uv_size":[-2,0]},"down":{"uv":[34,0],"uv_size":[-2,0]}}},{"origin":[5.2,15,-4.5],"size":[0,9,9],"uv":{"north":{"uv":[144,0],"uv_size":[0,9]},"east":{"uv":[144,9],"uv_size":[9,9]},"south":{"uv":[144,0],"uv_size":[0,9]},"west":{"uv":[144,0],"uv_size":[9,9]},"up":{"uv":[144,9],"uv_size":[0,-9]},"down":{"uv":[144,0],"uv_size":[0,9]}}},{"origin":[-12,0,-5],"size":[24,20,9],"uv":{"north":{"uv":[64,0],"uv_size":[16,20]},"east":{"uv":[72,0],"uv_size":[8,20]},"south":{"uv":[64,0],"uv_size":[16,20]},"west":{"uv":[72,0],"uv_size":[8,20]},"up":{"uv":[64,0],"uv_size":[16,8]},"down":{"uv":[64,0],"uv_size":[16,8]}}}]},{"name":"LeftSpyglassPivot","pivot":[-2,19,-4],"parent":"Head"},{"name":"RightSpyglassPivot","pivot":[2,19,-4],"parent":"Head"},{"name":"HelmetItemPivot","pivot":[0,15,0],"parent":"Head"},{"name":"LeftItemPivot","pivot":[-0.25,15.5,-6.5],"parent":"Head","rotation":[-90,-20,90]},{"name":"physBoob2","pivot":[-3,23,1],"parent":"Head","cubes":[{"origin":[-6,23,0],"size":[4,8,2],"pivot":[-4,24,1],"rotation":[10,0,-20],"uv":{"north":{"uv":[20,20],"uv_size":[4,8]},"east":{"uv":[27,0],"uv_size":[2,8]},"south":{"uv":[22,0],"uv_size":[4,8]},"west":{"uv":[25,19],"uv_size":[2,8]},"up":{"uv":[28,26],"uv_size":[4,2]},"down":{"uv":[28,22],"uv_size":[4,2]}}}]},{"name":"physBoob","pivot":[3,24,1],"parent":"Head","cubes":[{"origin":[2,23,0],"size":[4,8,2],"pivot":[4,24,1],"rotation":[10,0,20],"uv":{"north":{"uv":[20,20],"uv_size":[4,8]},"east":{"uv":[25,19],"uv_size":[2,8]},"south":{"uv":[22,0],"uv_size":[4,8]},"west":{"uv":[27,0],"uv_size":[2,8]},"up":{"uv":[32,26],"uv_size":[-4,-2]},"down":{"uv":[32,22],"uv_size":[-4,2]}}},{"origin":[2.3,27,-0.75],"size":[4.9,1,2.4],"pivot":[4.6,27,-0.15],"rotation":[8.88927,-4.59902,47.14233],"uv":{"north":{"uv":[181,4],"uv_size":[5,1]},"east":{"uv":[180,6],"uv_size":[2,1]},"south":{"uv":[181,5],"uv_size":[5,1]},"west":{"uv":[182,6],"uv_size":[2,1]},"up":{"uv":[181,6],"uv_size":[-5,-2]},"down":{"uv":[186,0],"uv_size":[-5,2]}}},{"origin":[3.05,27,-0.65],"size":[4.75,1,2.2],"pivot":[5.35,27,-0.15],"rotation":[9.40804,3.40487,0.28025],"uv":{"north":{"uv":[181,2],"uv_size":[5,1]},"east":{"uv":[176,6],"uv_size":[2,1]},"south":{"uv":[181,3],"uv_size":[5,1]},"west":{"uv":[178,6],"uv_size":[2,1]},"up":{"uv":[181,2],"uv_size":[-5,-2]},"down":{"uv":[181,2],"uv_size":[-5,2]}}}]},{"name":"physBoob3","pivot":[-4,17,5],"parent":"Head","cubes":[{"origin":[-9,8.75,4.55],"size":[6,9,0],"pivot":[-6,15.75,5.55],"rotation":[12.75141,-12.75961,14.74859],"uv":{"north":{"uv":[54,10],"uv_size":[-6,9]},"east":{"uv":[48,0],"uv_size":[0,9]},"south":{"uv":[60,10],"uv_size":[-6,9]},"west":{"uv":[48,0],"uv_size":[0,9]},"up":{"uv":[48,0],"uv_size":[6,0]},"down":{"uv":[48,0],"uv_size":[6,0]}}}]},{"name":"physBoob4","pivot":[-4,17,3],"parent":"physBoob3","cubes":[{"origin":[-7,9.5,3.3],"size":[6,9,0],"pivot":[-4,16.5,4.3],"rotation":[3.58286,-21.50056,25.78274],"uv":{"north":{"uv":[54,10],"uv_size":[-6,9]},"east":{"uv":[48,0],"uv_size":[0,9]},"south":{"uv":[60,10],"uv_size":[-6,9]},"west":{"uv":[48,0],"uv_size":[0,9]},"up":{"uv":[48,0],"uv_size":[6,0]},"down":{"uv":[48,0],"uv_size":[6,0]}}}]},{"name":"physBoob5","pivot":[0,17,5],"parent":"Head","cubes":[{"origin":[-4,8.5,4.6],"size":[8,10,0],"pivot":[0,16.5,5.6],"rotation":[15,0,0],"uv":{"north":{"uv":[48,0],"uv_size":[8,10]},"east":{"uv":[48,0],"uv_size":[0,10]},"south":{"uv":[56,0],"uv_size":[8,10]},"west":{"uv":[48,0],"uv_size":[0,10]},"up":{"uv":[56,0],"uv_size":[-8,0]},"down":{"uv":[56,0],"uv_size":[-8,0]}}}]},{"name":"physBoob6","pivot":[0,17,4],"parent":"physBoob5","cubes":[{"origin":[-4,8.5,4.1],"size":[8,10,0],"pivot":[0,16.5,5.1],"rotation":[7.5,0,0],"uv":{"north":{"uv":[48,0],"uv_size":[8,10]},"east":{"uv":[48,0],"uv_size":[0,10]},"south":{"uv":[56,0],"uv_size":[8,10]},"west":{"uv":[48,0],"uv_size":[0,10]},"up":{"uv":[56,0],"uv_size":[-8,0]},"down":{"uv":[56,0],"uv_size":[-8,0]}}}]},{"name":"physBoob7","pivot":[4,17,5],"parent":"Head","cubes":[{"origin":[3,8.75,4.55],"size":[6,9,0],"pivot":[6,15.75,5.55],"rotation":[12.75141,12.75961,-14.74859],"uv":{"north":{"uv":[48,10],"uv_size":[6,9]},"east":{"uv":[48,0],"uv_size":[0,9]},"south":{"uv":[54,10],"uv_size":[6,9]},"west":{"uv":[48,0],"uv_size":[0,9]},"up":{"uv":[54,0],"uv_size":[-6,0]},"down":{"uv":[54,0],"uv_size":[-6,0]}}}]},{"name":"physBoob8","pivot":[4,17,3],"parent":"physBoob7","cubes":[{"origin":[1,9.5,3.3],"size":[6,9,0],"pivot":[4,16.5,4.3],"rotation":[3.58286,21.50056,-25.78274],"uv":{"north":{"uv":[48,10],"uv_size":[6,9]},"east":{"uv":[48,0],"uv_size":[0,9]},"south":{"uv":[54,10],"uv_size":[6,9]},"west":{"uv":[48,0],"uv_size":[0,9]},"up":{"uv":[54,0],"uv_size":[-6,0]},"down":{"uv":[54,0],"uv_size":[-6,0]}}}]},{"name":"Body","pivot":[0,14,0],"parent":"root","cubes":[{"origin":[-4,6,-3],"size":[8,9,6],"uv":{"north":{"uv":[80,0],"uv_size":[8,9]},"east":{"uv":[80,9],"uv_size":[6,9]},"south":{"uv":[88,0],"uv_size":[8,9]},"west":{"uv":[86,9],"uv_size":[6,9]},"up":{"uv":[100,15],"uv_size":[-8,-6]},"down":{"uv":[100,15],"uv_size":[-8,6]}}},{"origin":[-1.95746,10.05945,-3.79628],"size":[4,4,0],"pivot":[0.04254,12.05945,-3.79628],"rotation":[-25.42814,7.52578,19.26555],"uv":{"north":{"uv":[104,28],"uv_size":[4,4]},"east":{"uv":[80,0],"uv_size":[0,4]},"south":{"uv":[108,24],"uv_size":[4,4]},"west":{"uv":[80,0],"uv_size":[0,4]},"up":{"uv":[84,0],"uv_size":[-4,0]},"down":{"uv":[84,0],"uv_size":[-4,0]}}},{"origin":[-2.04254,10.05945,-3.79628],"size":[4,4,0],"pivot":[-0.04254,12.05945,-3.79628],"rotation":[-25.42814,-7.52578,-19.26555],"uv":{"north":{"uv":[108,28],"uv_size":[-4,4]},"east":{"uv":[80,0],"uv_size":[0,4]},"south":{"uv":[112,24],"uv_size":[-4,4]},"west":{"uv":[80,0],"uv_size":[0,4]},"up":{"uv":[80,0],"uv_size":[4,0]},"down":{"uv":[80,0],"uv_size":[4,0]}}},{"origin":[1.5,11,-3.5],"size":[4,4,0],"pivot":[2.5,13,-4.5],"rotation":[-15.27269,-8.64738,-48.83844],"uv":{"north":{"uv":[112,28],"uv_size":[-4,4]},"east":{"uv":[80,0],"uv_size":[0,4]},"south":{"uv":[92,29],"uv_size":[-4,4]},"west":{"uv":[80,0],"uv_size":[0,4]},"up":{"uv":[80,0],"uv_size":[4,0]},"down":{"uv":[80,0],"uv_size":[4,0]}}},{"origin":[-5.5,11,-3.5],"size":[4,4,0],"pivot":[-2.5,13,-4.5],"rotation":[-15.27269,8.64738,48.83844],"uv":{"north":{"uv":[104,28],"uv_size":[-4,4]},"east":{"uv":[80,0],"uv_size":[0,4]},"south":{"uv":[112,20],"uv_size":[-4,4]},"west":{"uv":[80,0],"uv_size":[0,4]},"up":{"uv":[80,0],"uv_size":[4,0]},"down":{"uv":[80,0],"uv_size":[4,0]}}}]},{"name":"LeftParrotPivot","pivot":[-6,24,0],"parent":"Body"},{"name":"RightParrotPivot","pivot":[6,24,0],"parent":"Body"},{"name":"LeftArm","pivot":[-4,14,0],"parent":"root","cubes":[{"origin":[-6.85,6.35,-2.25],"size":[4.5,4.25,4.5],"pivot":[-4.6,11.6,0],"rotation":[0,0,35],"uv":{"north":{"uv":[161,0],"uv_size":[4,4]},"east":{"uv":[154,19],"uv_size":[4,4]},"south":{"uv":[161,8],"uv_size":[4,4]},"west":{"uv":[161,4],"uv_size":[4,4]},"up":{"uv":[163,19],"uv_size":[-5,-5]},"down":{"uv":[172,3],"uv_size":[-4,4]}}},{"origin":[-6.6,6.6,-2],"size":[4,7,4],"pivot":[-4.6,11.6,0],"rotation":[0,0,35],"uv":{"north":{"uv":[108,14],"uv_size":[-4,7]},"east":{"uv":[88,25],"uv_size":[-4,7]},"south":{"uv":[84,25],"uv_size":[-4,7]},"west":{"uv":[108,21],"uv_size":[-4,7]},"up":{"uv":[96,32],"uv_size":[4,-4]},"down":{"uv":[108,16],"uv_size":[4,4]}}}]},{"name":"RightArm","pivot":[4,14,0],"parent":"root","cubes":[{"origin":[2.6,6.6,-2],"size":[4,7,4],"pivot":[4.6,11.6,0],"rotation":[0,0,-35],"uv":{"north":{"uv":[104,14],"uv_size":[4,7]},"east":{"uv":[104,21],"uv_size":[4,7]},"south":{"uv":[80,25],"uv_size":[4,7]},"west":{"uv":[84,25],"uv_size":[4,7]},"up":{"uv":[100,32],"uv_size":[-4,-4]},"down":{"uv":[112,16],"uv_size":[-4,4]}}},{"origin":[2.35,6.35,-2.25],"size":[4.5,4.25,4.5],"pivot":[4.6,11.6,0],"rotation":[0,0,-35],"uv":{"north":{"uv":[172,16],"uv_size":[4,4]},"east":{"uv":[172,12],"uv_size":[4,4]},"south":{"uv":[172,8],"uv_size":[4,4]},"west":{"uv":[172,20],"uv_size":[4,4]},"up":{"uv":[158,19],"uv_size":[-5,-5]},"down":{"uv":[176,24],"uv_size":[-4,4]}}}]},{"name":"RightItemPivot","pivot":[6.5,8.75,-2],"parent":"RightArm","rotation":[0,0,-25]},{"name":"LeftLeg","pivot":[-1.9,6,0],"parent":"root","cubes":[{"origin":[-4.45,-0.65,-2.25],"size":[4.5,4.25,4.5],"pivot":[-2.2,4.6,0],"rotation":[0,0,2.5],"uv":{"north":{"uv":[148,28],"uv_size":[-4,4]},"east":{"uv":[160,28],"uv_size":[4,4]},"south":{"uv":[156,28],"uv_size":[-4,4]},"west":{"uv":[152,28],"uv_size":[-4,4]},"up":{"uv":[176,8],"uv_size":[-4,-4]},"down":{"uv":[156,28],"uv_size":[4,4]}}},{"origin":[-4.2,-0.4,-2],"size":[4,7,4],"pivot":[-2.2,4.6,0],"rotation":[0,0,2.5],"uv":{"north":{"uv":[100,21],"uv_size":[-4,7]},"east":{"uv":[108,7],"uv_size":[-4,7]},"south":{"uv":[108,0],"uv_size":[-4,7]},"west":{"uv":[104,21],"uv_size":[-4,7]},"up":{"uv":[92,32],"uv_size":[4,-4]},"down":{"uv":[108,12],"uv_size":[4,4]}}}]},{"name":"RightLeg","pivot":[1.9,6,0],"parent":"root","cubes":[{"origin":[0.2,-0.4,-2],"size":[4,7,4],"pivot":[2.2,4.6,0],"rotation":[0,0,-2.5],"uv":{"north":{"uv":[153,0],"uv_size":[4,7]},"east":{"uv":[153,7],"uv_size":[4,7]},"south":{"uv":[157,0],"uv_size":[4,7]},"west":{"uv":[157,7],"uv_size":[4,7]},"up":{"uv":[167,21],"uv_size":[-4,-4]},"down":{"uv":[167,21],"uv_size":[-4,4]}}},{"origin":[-0.05,-0.65,-2.25],"size":[4.5,4.25,4.5],"pivot":[2.2,4.6,0],"rotation":[0,0,-2.5],"uv":{"north":{"uv":[144,28],"uv_size":[4,4]},"east":{"uv":[148,28],"uv_size":[4,4]},"south":{"uv":[152,28],"uv_size":[4,4]},"west":{"uv":[164,28],"uv_size":[-4,4]},"up":{"uv":[176,8],"uv_size":[-4,-4]},"down":{"uv":[160,28],"uv_size":[-4,4]}}}]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/beardie.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/beardie.anim.json new file mode 100644 index 0000000..6253592 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/beardie.anim.json @@ -0,0 +1 @@ +{"autoplay":[],"clips":{"idle":{"loop":"loop","length":3,"bones":{"Body":{"rotation":[[0,5,0,0],[1,0,0,0],[2.25,5,0,0],[3,5,0,0]]},"Neck":{"rotation":[[0,7.5,0,0],[0.5,4.37,0,0],[1,-2.5,0,0],[2.25,10,0,0],[3,7.5,0,0]],"position":[[0,0,0,1],[2.25,0,0,1],[3,0,0,1]]},"Head":{"rotation":[[0,-17.5,0,0],[0.75,-1.7,0,0],[1.5,-17.47,0,0],[2.5,-25,0,0],[3,-17.5,0,0]]},"Tail":{"rotation":[[0,17.5,0,0],[0.75,22.5,0,0],[1.25,-23.61,0,0],[3,17.5,0,0]]},"Left Arm":{"rotation":[[0,5.019,-4.98093,-0.43688],[1,15.019,-4.98093,-0.43688],[2.25,5.019,-4.98093,-0.43688],[3,5.019,-4.98093,-0.43688]],"position":[[0,0,0,0],[1,0,0,1],[2.25,0,0,0],[3,0,0,0]]},"Left Forearm":{"rotation":[[0,-10.47479,-17.22575,3.13388],[1,-2.97479,-17.22575,3.13388],[2.25,-10.47479,-17.22575,3.13388],[3,-10.47479,-17.22575,3.13388]]},"Left Hand":{"rotation":[[0,0,0,2.5],[1,-9.99067,0.43399,2.46207],[2.25,0,0,2.5],[3,0,0,2.5]],"position":[[0,0,0,-1],[2.25,0,0,-1],[3,0,0,-1]]},"Left Leg":{"rotation":[[0,7.5,-10,0],[1,17.5,-10,0],[2.25,7.5,-10,0],[3,7.5,-10,0]],"position":[[0,0,0,0],[1,0,-0.5,0],[2.25,0,0,0],[3,0,0,0]]},"Left Shin":{"rotation":[[0,-20,10,0],[2.25,-20,10,0],[3,-20,10,0]]},"Left Ankle":{"rotation":[[0,10,-15,0],[1,-2.5,-15,0],[2.25,10,-15,0],[3,10,-15,0]]},"Left Foot":{"rotation":[[0,-2.5,0,-2.5],[1,5,0,-2.5],[2.25,-2.5,0,-2.5],[3,-2.5,0,-2.5]]},"Right Arm":{"rotation":[[0,20.15874,7.04533,2.57816],[1,30.15874,7.04533,2.57816],[2.25,20.15874,7.04533,2.57816],[3,20.15874,7.04533,2.57816]],"position":[[0,0,0,0],[1,0,0,1],[2.25,0,0,0],[3,0,0,0]]},"Right Forearm":{"rotation":[[0,-15.12353,7.24305,-1.95155],[1,-10.12353,7.24305,-1.95155],[2.25,-15.12353,7.24305,-1.95155],[3,-15.12353,7.24305,-1.95155]]},"Right Hand":{"rotation":[[0,-9.80576,-1.58438,-3.21414],[1,-19.79978,-2.00556,-3.10278],[2.25,-9.80576,-1.58438,-3.21414],[3,-9.80576,-1.58438,-3.21414]],"position":[[0,0,0,-1],[2.25,0,0,-1],[3,0,0,-1]]},"Right Leg":{"rotation":[[0,-12.5,10,0],[1,-2.5,10,0],[2.25,-12.5,10,0],[3,-12.5,10,0]],"position":[[0,0,0,0],[1,0,-0.25,0],[2.25,0,0,0],[3,0,0,0]]},"Right Shin":{"rotation":[[0,0,-10,0],[2.25,0,-10,0],[3,0,-10,0]]},"Right Ankle":{"rotation":[[0,0,15,0],[1,-7.5,15,0],[2.25,0,15,0],[3,0,15,0]]},"Right Foot":{"rotation":[[0,7.5,0,0],[2.25,7.5,0,0],[3,7.5,0,0]]}}},"walk":{"loop":"loop","length":2.75,"bones":{"Body":{"rotation":[[0,2.5,0,0],[0.54167,-2.5,0,0],[1.16667,2.5,0,0],[1.79167,-5,0,0],[2.33333,2.5,0,0],[2.75,2.5,0,0]],"position":[[0,0,0,0]],"scale":[[0,1,1,1]]},"Neck":{"rotation":[[0,-7.5,0,0],[0.75,-5.52,0,0],[1.25,-2.5,0,0],[1.75,-5.52,0,0],[2.25,-2.5,0,0],[2.75,-7.5,0,0]]},"Head":{"rotation":[[0,0,0,0],[0.375,-0.12,0,0],[0.75,-10,0,0],[1.25,0,0,0],[1.66667,4.84,0,0],[2,-9.3,0,0],[2.25,-10,0,0],[2.75,0,0,0]]},"Tail":{"rotation":[[0,-20.01754,-2.34914,0.85553],[0.5,-10.34527,-14.76689,2.66399],[0.75,-22.17256,-9.2561,3.27674],[1,-20.01754,-2.34914,0.85553],[1.5,-20.0024,1.96661,-1.6698],[1.75,-25.4123,8.93449,-4.79292],[2,-20.6469,14.0761,-5.23619],[2.75,-20.01754,-2.34914,0.85553]]},"Left Arm":{"rotation":[[0,-25,0,0],[0.25,44.75386,5.29571,-5.31847],[0.5,52.39445,3.9649,-3.04868],[0.75,35,0,0],[1,20,0,0],[1.25,5,0,0],[1.5,-5,0,0],[1.75,-7.5,0,0],[2,2.5,0,0],[2.25,-17.5,0,0],[2.5,-35,0,0],[2.75,-25,0,0]],"position":[[0,0,0,0],[0.25,0,1,0],[0.5,0,2,0],[1.5,0,0,0],[2,0,0,0],[2.75,0,0,0]]},"Left Forearm":{"rotation":[[0,47.5,0,0],[0.25,7.5,0,0],[0.5,-19.99392,0.197,-0.15712],[0.75,-25,0,0],[1,-25,0,0],[1.25,-20,0,0],[1.5,-15,0,0],[1.75,-15,0,0],[2,-40,0,0],[2.25,-16.67,0,0],[2.75,47.5,0,0]]},"Left Hand":{"rotation":[[0,-112.5,0,0],[0.25,-89.55482,-13.53329,-11.08028],[0.5,-7.5337,-12.19377,-25.20726],[0.75,-7.5,0,0],[1,5,0,0],[1.25,12.5,0,0],[1.5,17.5,0,0],[1.75,27.5,0,0],[2,40,0,0],[2.25,7.5,0,0],[2.5,-105,0,0],[2.75,-112.5,0,0]]},"Right Arm":{"rotation":[[0,0,0,0],[0.25,-2.5,0,0],[0.5,-5,0,0],[0.75,-22.5,0,0],[1,-32.5,0,0],[1.25,22.5,0,0],[1.5,45,0,0],[1.75,38.92915,-4.72903,5.82782],[2,47.39118,-3.68425,3.38262],[2.25,32.5,0,0],[2.5,17.5,0,0],[2.75,0,0,0]],"position":[[0,0,0,0],[1.5,0,0,0],[2,0,1.5,0],[2.25,0,0.92,0],[2.5,0,0.83,0],[2.75,0,0,0]]},"Right Forearm":{"rotation":[[0,-15,0,0],[0.25,-22.44712,-0.76118,0.5127],[0.5,-29.94712,-0.76118,0.5127],[0.75,-14.94712,-0.76118,0.5127],[1,30.05288,-0.76118,0.5127],[1.25,12.55288,-0.76118,0.5127],[1.75,14.85033,-0.76118,0.5127],[2,-22.44712,-0.76118,0.5127],[2.25,-19.94712,-0.76118,0.5127],[2.5,-22.47356,-0.38059,0.25635],[2.75,-15,0,0]]},"Right Hand":{"rotation":[[0,12.5,0,0],[0.25,25,0,0],[0.5,32.5,0,0],[0.75,2.5,0,0],[1,-107.5,0,0],[1.25,-160,0,0],[1.5,-131.68165,10.58406,6.68569],[1.75,-49.10122,15.4099,12.73353],[2,-24.91643,-2.11089,-4.53359],[2.25,-15,0,0],[2.5,1.24454,0.23394,0.01345],[2.75,12.5,0,0]]},"Left Leg":{"rotation":[[0,27.47766,1.15408,-2.21783],[0.25,17.48436,0.75155,-2.38443],[0.5,5,0,0],[0.75,-2.5,0,0],[1,-10,0,0],[1.25,-22.5,0,0],[1.5,-32.5,0,0],[1.75,0,0,-7.5],[2,22.42287,1.91134,-4.62111],[2.25,44.89078,3.53329,-3.54002],[2.5,27.41063,2.30644,-4.43745],[2.75,27.47766,1.15408,-2.21783]]},"Left Shin":{"rotation":[[0,-15,0,0],[0.25,-12.5,0,0],[0.5,5,0,0],[0.75,7.5,0,0],[1,7.96,0,0],[1.5,35,0,0],[1.75,-22.5,0,0],[2,-52.5,0,0],[2.25,-32.5,0,0],[2.5,6.25,0,0],[2.75,-15,0,0]]},"Left Ankle":{"rotation":[[0,-2.5,0,0],[0.25,2.5,0,0],[0.5,2.81,0,0],[0.75,-7.5,0,0],[1.75,-30,0,0],[2,40,0,0],[2.25,10,0,0],[2.5,-3.75,0,0],[2.75,-2.5,0,0]]},"Left Foot":{"rotation":[[0,-12.5,0,0],[0.25,-7.5,0,0],[0.5,-10,0,0],[0.75,5,0,0],[1,12.5,0,0],[1.25,14.85634,-0.39068,0.12638],[1.5,-9.97482,-0.78137,0.25276],[1.75,-59.97482,-0.78137,0.25276],[2,-97.39181,-3.48867,0.91414],[2.25,-95.49085,-1.50992,2.51784],[2.375,-29.61077,1.13566,4.8861],[2.5,-31.58013,2.36211,4.34235],[2.75,-12.5,0,0]]},"Right Leg":{"rotation":[[0,-17.5,0,0],[0.25,-32.24148,3.76443,7.73607],[0.5,12.49621,-1.33702,6.27895],[0.75,27.45494,-2.56223,5.83335],[1,32.43193,-2.79869,5.1229],[1.25,25.0138,-1.16977,3.16968],[1.5,17.51882,-0.86512,3.28827],[1.75,7.53915,-0.11204,0.90429],[2,2.53915,-0.11204,0.90429],[2.25,-2.46085,-0.11204,0.90429],[2.5,-17.5,0,0],[2.75,-17.5,0,0]],"position":[[0,0,0,0],[1,0,-0.5,0],[2.75,0,0,0]]},"Right Shin":{"rotation":[[0,0,0,0],[0.25,-7.5,0,0],[0.5,-37.5,0,0],[0.75,-10.79522,3.68049,-4.70556],[1,14.20478,3.68049,-4.70556],[1.25,-0.79522,3.68049,-4.70556],[1.5,-5.79522,3.68049,-4.70556],[1.75,14.20478,3.68049,-4.70556],[2,4.20478,3.68049,-4.70556],[2.25,-5.79522,3.68049,-4.70556],[2.5,10.85335,1.7359,-2.43077],[2.75,0,0,0]]},"Right Ankle":{"rotation":[[0,0,0,0],[0.5,57.5,0,0],[0.75,30,0,0],[1,-12.5,0,0],[1.25,12.5,0,0],[1.5,17.5,0,0],[1.75,12.5,0,0],[2,12.5,0,0],[2.25,11.67,0,0],[2.5,5,0,0],[2.75,0,0,0]]},"Right Foot":{"rotation":[[0,-5,0,0],[0.25,-75,0,0],[0.5,-107.99983,1.75939,-3.46366],[0.75,-85.60883,-1.39327,-5.22868],[0.91667,-13.86141,-0.40769,-3.18564],[1,-34.89743,-2.86544,-4.09918],[1.25,-40.1076,-3.82821,3.21873],[1.5,-30.00177,-2.80975,4.48248],[1.75,-30.67507,3.09519,3.92872],[2,-19.89455,3.04137,3.9705],[2.25,-4.92287,1.91134,4.62111],[2.5,-3.73535,0.69937,2.40024],[2.75,-5,0,0]]}}},"walkback":{"loop":"loop","length":2.75,"bones":{"Body":{"rotation":[[0,2.5,0,0],[0.41667,2.5,0,0],[0.95833,-5,0,0],[1.58333,2.5,0,0],[2.20833,-2.5,0,0],[2.75,2.5,0,0]],"position":[[2.75,0,0,0]],"scale":[[2.75,1,1,1]]},"Neck":{"rotation":[[0,-7.5,0,0],[0.5,-2.5,0,0],[1,-5.52,0,0],[1.5,-2.5,0,0],[2,-5.52,0,0],[2.75,-7.5,0,0]]},"Head":{"rotation":[[0,0,0,0],[0.5,-10,0,0],[0.75,-9.3,0,0],[1.08333,4.84,0,0],[1.5,0,0,0],[2,-10,0,0],[2.375,-0.12,0,0],[2.75,0,0,0]]},"Tail":{"rotation":[[0,-20.01754,-2.34914,0.85553],[0.75,-20.6469,14.0761,-5.23619],[1,-25.4123,8.93449,-4.79292],[1.25,-20.0024,1.96661,-1.6698],[1.75,-20.01754,-2.34914,0.85553],[2,-22.17256,-9.2561,3.27674],[2.25,-10.34527,-14.76689,2.66399],[2.75,-20.01754,-2.34914,0.85553]]},"Left Arm":{"rotation":[[0,-25,0,0],[0.25,-35,0,0],[0.5,-17.5,0,0],[0.75,2.5,0,0],[1,-7.5,0,0],[1.25,-5,0,0],[1.5,5,0,0],[1.75,20,0,0],[2,35,0,0],[2.25,52.39445,3.9649,-3.04868],[2.5,44.75386,5.29571,-5.31847],[2.75,-25,0,0]],"position":[[0,0,0,0],[0.75,0,0,0],[1.25,0,0,0],[2.25,0,2,0],[2.5,0,1,0],[2.75,0,0,0]]},"Left Forearm":{"rotation":[[0,47.5,0,0],[0.5,-16.67,0,0],[0.75,-40,0,0],[1,-15,0,0],[1.25,-15,0,0],[1.5,-20,0,0],[1.75,-25,0,0],[2,-25,0,0],[2.25,-19.99392,0.197,-0.15712],[2.5,7.5,0,0],[2.75,47.5,0,0]]},"Left Hand":{"rotation":[[0,-112.5,0,0],[0.25,-105,0,0],[0.5,7.5,0,0],[0.75,40,0,0],[1,27.5,0,0],[1.25,17.5,0,0],[1.5,12.5,0,0],[1.75,5,0,0],[2,-7.5,0,0],[2.25,-7.5337,-12.19377,-25.20726],[2.5,-89.55482,-13.53329,-11.08028],[2.75,-112.5,0,0]]},"Right Arm":{"rotation":[[0,0,0,0],[0.25,17.5,0,0],[0.5,32.5,0,0],[0.75,47.39118,-3.68425,3.38262],[1,38.92915,-4.72903,5.82782],[1.25,45,0,0],[1.5,22.5,0,0],[1.75,-32.5,0,0],[2,-22.5,0,0],[2.25,-5,0,0],[2.5,-2.5,0,0],[2.75,0,0,0]],"position":[[0,0,0,0],[0.25,0,0.83,0],[0.5,0,0.92,0],[0.75,0,1.5,0],[1.25,0,0,0],[2.75,0,0,0]]},"Right Forearm":{"rotation":[[0,-15,0,0],[0.25,-22.47356,-0.38059,0.25635],[0.5,-19.94712,-0.76118,0.5127],[0.75,-22.44712,-0.76118,0.5127],[1,14.85033,-0.76118,0.5127],[1.5,12.55288,-0.76118,0.5127],[1.75,30.05288,-0.76118,0.5127],[2,-14.94712,-0.76118,0.5127],[2.25,-29.94712,-0.76118,0.5127],[2.5,-22.44712,-0.76118,0.5127],[2.75,-15,0,0]]},"Right Hand":{"rotation":[[0,12.5,0,0],[0.25,1.24454,0.23394,0.01345],[0.5,-15,0,0],[0.75,-24.91643,-2.11089,-4.53359],[1,-49.10122,15.4099,12.73353],[1.25,-131.68165,10.58406,6.68569],[1.5,-160,0,0],[1.75,-107.5,0,0],[2,2.5,0,0],[2.25,32.5,0,0],[2.5,25,0,0],[2.75,12.5,0,0]]},"Left Leg":{"rotation":[[0,27.47766,1.15408,-2.21783],[0.25,27.41063,2.30644,-4.43745],[0.5,44.89078,3.53329,-3.54002],[0.75,22.42287,1.91134,-4.62111],[1,0,0,-7.5],[1.25,-32.5,0,0],[1.5,-22.5,0,0],[1.75,-10,0,0],[2,-2.5,0,0],[2.25,5,0,0],[2.5,17.48436,0.75155,-2.38443],[2.75,27.47766,1.15408,-2.21783]]},"Left Shin":{"rotation":[[0,-15,0,0],[0.25,6.25,0,0],[0.5,-32.5,0,0],[0.75,-52.5,0,0],[1,-22.5,0,0],[1.25,35,0,0],[1.75,7.96,0,0],[2,7.5,0,0],[2.25,5,0,0],[2.5,-12.5,0,0],[2.75,-15,0,0]]},"Left Ankle":{"rotation":[[0,-2.5,0,0],[0.25,-3.75,0,0],[0.5,10,0,0],[0.75,40,0,0],[1,-30,0,0],[2,-7.5,0,0],[2.25,2.81,0,0],[2.5,2.5,0,0],[2.75,-2.5,0,0]]},"Left Foot":{"rotation":[[0,-12.5,0,0],[0.25,-31.58013,2.36211,4.34235],[0.375,-29.61077,1.13566,4.8861],[0.5,-95.49085,-1.50992,2.51784],[0.75,-97.39181,-3.48867,0.91414],[1,-59.97482,-0.78137,0.25276],[1.25,-9.97482,-0.78137,0.25276],[1.5,14.85634,-0.39068,0.12638],[1.75,12.5,0,0],[2,5,0,0],[2.25,-10,0,0],[2.5,-7.5,0,0],[2.75,-12.5,0,0]]},"Right Leg":{"rotation":[[0,-17.5,0,0],[0.25,-17.5,0,0],[0.5,-2.46085,-0.11204,0.90429],[0.75,2.53915,-0.11204,0.90429],[1,7.53915,-0.11204,0.90429],[1.25,17.51882,-0.86512,3.28827],[1.5,25.0138,-1.16977,3.16968],[1.75,32.43193,-2.79869,5.1229],[2,27.45494,-2.56223,5.83335],[2.25,12.49621,-1.33702,6.27895],[2.5,-32.24148,3.76443,7.73607],[2.75,-17.5,0,0]],"position":[[0,0,0,0],[1.75,0,-0.5,0],[2.75,0,0,0]]},"Right Shin":{"rotation":[[0,0,0,0],[0.25,10.85335,1.7359,-2.43077],[0.5,-5.79522,3.68049,-4.70556],[0.75,4.20478,3.68049,-4.70556],[1,14.20478,3.68049,-4.70556],[1.25,-5.79522,3.68049,-4.70556],[1.5,-0.79522,3.68049,-4.70556],[1.75,14.20478,3.68049,-4.70556],[2,-10.79522,3.68049,-4.70556],[2.25,-37.5,0,0],[2.5,-7.5,0,0],[2.75,0,0,0]]},"Right Ankle":{"rotation":[[0,0,0,0],[0.25,5,0,0],[0.5,11.67,0,0],[0.75,12.5,0,0],[1,12.5,0,0],[1.25,17.5,0,0],[1.5,12.5,0,0],[1.75,-12.5,0,0],[2,30,0,0],[2.25,57.5,0,0],[2.75,0,0,0]]},"Right Foot":{"rotation":[[0,-5,0,0],[0.25,-3.73535,0.69937,2.40024],[0.5,-4.92287,1.91134,4.62111],[0.75,-19.89455,3.04137,3.9705],[1,-30.67507,3.09519,3.92872],[1.25,-30.00177,-2.80975,4.48248],[1.5,-40.1076,-3.82821,3.21873],[1.75,-34.89743,-2.86544,-4.09918],[1.83333,-13.86141,-0.40769,-3.18564],[2,-85.60883,-1.39327,-5.22868],[2.25,-107.99983,1.75939,-3.46366],[2.5,-75,0,0],[2.75,-5,0,0]]}}},"sprint":{"loop":"loop","length":1.5,"bones":{"Body":{"rotation":[[0,5,0,0],[0.25,2.5,0,0],[0.5,-2.5,0,0],[0.75,-12.5,0,0],[1,-10,0,0],[1.25,-2.5,0,0],[1.5,5,0,0]],"position":[[0,0,0,0],[0.5,0,1,0],[1,0,2,0],[1.25,0,0,0],[1.5,0,0,0]]},"Neck":{"rotation":[[0,0,0,0],[0.5,-25,0,0],[0.75,-15,0,0],[1,-17.5,0,0],[1.25,-2.5,0,0],[1.5,0,0,0]]},"Head":{"rotation":[[0,-12.5,0,0],[0.5,25,0,0],[1.25,-10,0,0],[1.5,-12.5,0,0]]},"Tail":{"rotation":[[0,0,0,0],[0.5,-20,0,0],[1,-35,0,0],[1.5,0,0,0]]},"Left Arm":{"rotation":[[0,-4.99527,-0.21782,-2.4905],[0.25,37.50238,-0.10901,-2.49762],[0.5,109.99762,0.10901,-2.49762],[0.75,102.48848,0.54094,-2.44081],[1,49.99067,0.43399,-2.46207],[1.25,17.47864,0.32621,-7.49294],[1.5,-4.99527,-0.21782,-2.4905]],"position":[[0,0,0,0],[1,0,1.96962,0.3473],[1.25,0,2.9781,0.25724],[1.5,0,0,0]]},"Left Forearm":{"rotation":[[0,50,0,0],[0.25,40,0,0],[0.5,-65,0,0],[0.75,-74.98541,0.08508,0.64686],[1,-47.5,0,0],[1.25,-30,0,0],[1.5,50,0,0]]},"Left Hand":{"rotation":[[0,-145,0,0],[0.25,-85,0,0],[0.5,-20,0,0],[0.75,-0.03325,1.35856,-0.33287],[1,5,0,0],[1.125,-6.55196,8.72934,8.02601],[1.25,-140,0,0],[1.5,-145,0,0]],"scale":[[0,1,1,1],[0.95833,1,1,1],[1,1.2,1,1],[1.25,1,1,1]]},"Right Arm":{"rotation":[[0,62.50473,0.21782,2.4905],[0.25,102.50238,0.10901,2.49762],[0.5,42.49762,-0.10901,2.49762],[0.75,27.48848,-0.54094,2.44081],[1,12.49067,-0.43399,2.46207],[1.25,12.47864,-0.32621,7.49294],[1.5,62.50473,0.21782,2.4905]],"position":[[0,0,0,0],[0.5,0,0.99905,0.04362],[0.75,0,1.9763,0.25644],[1.25,0,2.5481,0.16724],[1.5,0,0,0]]},"Right Forearm":{"rotation":[[0,-10,0,0],[0.25,-75,0,0],[0.5,-30,0,0],[0.75,-60,0,0],[1,-30,0,0],[1.5,-10,0,0]]},"Right Hand":{"rotation":[[0,-92.5,0,0],[0.25,5,0,0],[0.5,-10,0,0],[0.75,25,0,0],[1,-120,0,0],[1.5,-92.5,0,0]],"scale":[[0,1,1,1],[0.45833,1,1,1],[0.5,1.2,1,1],[0.75,1,1,1]]},"Left Leg":{"rotation":[[0,9.97556,-0.85701,-0.23568],[0.25,-40,0,0],[0.5,-22.5,0,0],[0.75,0,0,0],[1,42.5,0,0],[1.25,45,0,0],[1.5,9.97556,-0.85701,-0.23568]]},"Left Shin":{"rotation":[[0,-24.99693,0.04753,0.38179],[0.5,-27.5,0,0],[0.75,-12.65625,0,0],[1,-12.5,0,0],[1.25,42.5,0,0],[1.5,-24.99693,0.04753,0.38179]]},"Left Ankle":{"rotation":[[0,12.49844,0.03908,-0.18953],[0.25,-20,0,0],[0.5,-25,0,0],[0.75,-30,0,0],[1,-2.5,0,0],[1.25,-60,0,0],[1.5,12.49844,0.03908,-0.18953]]},"Left Foot":{"rotation":[[0,-2.4988,-0.00109,0.15492],[0.25,-52.5,0,0],[0.5,-115,0,0],[0.75,-117.5,0,0],[1,-122.5,0,0],[1.25,-46.95368,0.84644,-6.46599],[1.5,-2.4988,-0.00109,0.15492]]},"Right Leg":{"rotation":[[0,17.5,0,0],[0.25,-7.5,0,0],[0.5,-22.5,0,0],[0.75,-12.5,0,0],[1,12.5,0,0],[1.25,40,0,0],[1.5,17.5,0,0]]},"Right Shin":{"rotation":[[0,0,0,0],[0.25,-7.53454,0.34183,-0.22665],[0.5,7.46569,0.38884,-0.13045],[0.75,23.85385,0.39627,-0.01032],[1.25,-37.53445,0.18271,-0.3672],[1.5,0,0,0]]},"Right Ankle":{"rotation":[[0,12.5,0,0],[0.25,17.49988,0.01427,0.03281],[0.5,-32.42651,0.40535,-0.7941],[0.75,-52.42266,0.02559,-1.00005],[1,30.08194,0.53981,0.35427],[1.25,32.575,0.8412,0.46968],[1.5,12.5,0,0]]},"Right Foot":{"rotation":[[0,-35,0,0],[0.25,-7.50012,0.02104,0.02894],[0.5,-47.48843,-0.5019,-0.65172],[0.75,-112.47599,-1.85033,-0.6512],[1,-102.47528,-1.65635,-0.7523],[1.5,-35,0,0]]}}},"jumpup":{"loop":"hold","length":0.5,"bones":{"Body":{"rotation":[[0,32.5,0,0],[0.125,32.5,0,0],[0.5,12.5,0,0]]},"Neck":{"rotation":[[0,0,0,0],[0.5,10,0,0]]},"Head":{"rotation":[[0,0,0,0],[0.25,-61.25,0,0],[0.5,-47.5,0,0]]},"Tail":{"rotation":[[0,-7.5,0,0],[0.5,-55,0,0]]},"Left Arm":{"rotation":[[0,-42.40109,-2.68407,-4.22005],[0.5,-7.5095,0.21782,-4.99527]]},"Left Forearm":{"rotation":[[0,60,0,0],[0.25,56.26436,-0.40957,0.1985],[0.5,22.61934,-3.17389,0.48525]]},"Left Hand":{"rotation":[[0,-125,0,0],[0.25,-157.45526,0.56971,2.15154],[0.5,-30.23934,7.36082,-0.33725]]},"Right Arm":{"rotation":[[0,-19.90109,2.68407,4.22005],[0.5,19.97178,-0.65182,4.95744]]},"Right Forearm":{"rotation":[[0,20,0,0],[0.5,-27.40653,3.24688,-2.37694]]},"Right Hand":{"rotation":[[0,-115,0,0],[0.25,-144.96936,0.82629,-1.63409],[0.5,-60.19519,-4.59465,0.41009]]},"Left Leg":{"rotation":[[0,-19.66395,-6.3154,-1.01281],[0.5,-24.93919,-0.4828,-5.4173]],"position":[[0,0,0,0],[0.25,0,0.46175,0.88701]]},"Left Shin":{"rotation":[[0,42.26754,2.89011,-1.48741],[0.5,-4.80058,-3.49278,-2.84807]]},"Left Ankle":{"rotation":[[0,39.96623,3.87914,4.0918],[0.25,-52.2413,-2.88465,-1.09322],[0.5,-7.4976,1.84049,-0.07238]]},"Left Foot":{"rotation":[[0,-84.92319,-6.24012,2.58196]]},"Right Leg":{"rotation":[[0,-22.46789,14.09075,-4.49046],[0.5,-30,0,5]],"position":[[0,0,0,0],[0.25,0,0.46175,0.88701]]},"Right Shin":{"rotation":[[0,61.41245,-3.18844,4.45132],[0.5,-12.37976,1.41642,0.35526]]},"Right Ankle":{"rotation":[[0,22.89838,-4.93068,-4.22417],[0.25,-44.82905,3.78926,0.5048],[0.5,-24.89611,2.06116,0.652]]},"Right Foot":{"rotation":[[0,-94.91833,7.02991,-2.21352]]}}},"walkjumpup":{"loop":"hold","length":0.5,"bones":{"Body":{"rotation":[[0,32.5,0,0],[0.125,32.5,0,0],[0.5,12.5,0,0]]},"Neck":{"rotation":[[0,0,0,0],[0.5,10,0,0]]},"Head":{"rotation":[[0,0,0,0],[0.25,-61.25,0,0],[0.5,-47.5,0,0]]},"Tail":{"rotation":[[0,-7.5,0,0],[0.5,-55,0,0]]},"Left Arm":{"rotation":[[0,-42.40109,-2.68407,-4.22005],[0.5,-7.5095,0.21782,-4.99527]]},"Left Forearm":{"rotation":[[0,60,0,0],[0.25,56.26436,-0.40957,0.1985],[0.5,22.61934,-3.17389,0.48525]]},"Left Hand":{"rotation":[[0,-125,0,0],[0.25,-157.45526,0.56971,2.15154],[0.5,-30.23934,7.36082,-0.33725]]},"Right Arm":{"rotation":[[0,-19.90109,2.68407,4.22005],[0.5,19.97178,-0.65182,4.95744]]},"Right Forearm":{"rotation":[[0,20,0,0],[0.5,-27.40653,3.24688,-2.37694]]},"Right Hand":{"rotation":[[0,-115,0,0],[0.25,-144.96936,0.82629,-1.63409],[0.5,-60.19519,-4.59465,0.41009]]},"Left Leg":{"rotation":[[0,-19.66395,-6.3154,-1.01281],[0.5,-24.93919,-0.4828,-5.4173]],"position":[[0,0,0,0],[0.25,0,0.46175,0.88701]]},"Left Shin":{"rotation":[[0,42.26754,2.89011,-1.48741],[0.5,-4.80058,-3.49278,-2.84807]]},"Left Ankle":{"rotation":[[0,39.96623,3.87914,4.0918],[0.25,-52.2413,-2.88465,-1.09322],[0.5,-7.4976,1.84049,-0.07238]]},"Left Foot":{"rotation":[[0,-84.92319,-6.24012,2.58196]]},"Right Leg":{"rotation":[[0,-22.46789,14.09075,-4.49046],[0.5,-30,0,5]],"position":[[0,0,0,0],[0.25,0,0.46175,0.88701]]},"Right Shin":{"rotation":[[0,61.41245,-3.18844,4.45132],[0.5,-12.37976,1.41642,0.35526]]},"Right Ankle":{"rotation":[[0,22.89838,-4.93068,-4.22417],[0.25,-44.82905,3.78926,0.5048],[0.5,-24.89611,2.06116,0.652]]},"Right Foot":{"rotation":[[0,-94.91833,7.02991,-2.21352]]}}},"sprintjumpup":{"loop":"hold","length":0.5,"bones":{"Body":{"rotation":[[0,32.5,0,0],[0.125,32.5,0,0],[0.5,12.5,0,0]]},"Neck":{"rotation":[[0,0,0,0],[0.5,10,0,0]]},"Head":{"rotation":[[0,0,0,0],[0.25,-61.25,0,0],[0.5,-47.5,0,0]]},"Tail":{"rotation":[[0,-7.5,0,0],[0.5,-55,0,0]]},"Left Arm":{"rotation":[[0,-42.40109,-2.68407,-4.22005],[0.5,-7.5095,0.21782,-4.99527]]},"Left Forearm":{"rotation":[[0,60,0,0],[0.25,56.26436,-0.40957,0.1985],[0.5,22.61934,-3.17389,0.48525]]},"Left Hand":{"rotation":[[0,-125,0,0],[0.25,-157.45526,0.56971,2.15154],[0.5,-30.23934,7.36082,-0.33725]]},"Right Arm":{"rotation":[[0,-19.90109,2.68407,4.22005],[0.5,19.97178,-0.65182,4.95744]]},"Right Forearm":{"rotation":[[0,20,0,0],[0.5,-27.40653,3.24688,-2.37694]]},"Right Hand":{"rotation":[[0,-115,0,0],[0.25,-144.96936,0.82629,-1.63409],[0.5,-60.19519,-4.59465,0.41009]]},"Left Leg":{"rotation":[[0,-19.66395,-6.3154,-1.01281],[0.5,-24.93919,-0.4828,-5.4173]],"position":[[0,0,0,0],[0.25,0,0.46175,0.88701]]},"Left Shin":{"rotation":[[0,42.26754,2.89011,-1.48741],[0.5,-4.80058,-3.49278,-2.84807]]},"Left Ankle":{"rotation":[[0,39.96623,3.87914,4.0918],[0.25,-52.2413,-2.88465,-1.09322],[0.5,-7.4976,1.84049,-0.07238]]},"Left Foot":{"rotation":[[0,-84.92319,-6.24012,2.58196]]},"Right Leg":{"rotation":[[0,-22.46789,14.09075,-4.49046],[0.5,-30,0,5]],"position":[[0,0,0,0],[0.25,0,0.46175,0.88701]]},"Right Shin":{"rotation":[[0,61.41245,-3.18844,4.45132],[0.5,-12.37976,1.41642,0.35526]]},"Right Ankle":{"rotation":[[0,22.89838,-4.93068,-4.22417],[0.25,-44.82905,3.78926,0.5048],[0.5,-24.89611,2.06116,0.652]]},"Right Foot":{"rotation":[[0,-94.91833,7.02991,-2.21352]]}}},"crouchjumpup":{"loop":"hold","length":0.5,"bones":{"Body":{"rotation":[[0,32.5,0,0],[0.125,32.5,0,0],[0.5,12.5,0,0]]},"Neck":{"rotation":[[0,0,0,0],[0.5,10,0,0]]},"Head":{"rotation":[[0,0,0,0],[0.25,-61.25,0,0],[0.5,-47.5,0,0]]},"Tail":{"rotation":[[0,-7.5,0,0],[0.5,-55,0,0]]},"Left Arm":{"rotation":[[0,-42.40109,-2.68407,-4.22005],[0.5,-7.5095,0.21782,-4.99527]]},"Left Forearm":{"rotation":[[0,60,0,0],[0.25,56.26436,-0.40957,0.1985],[0.5,22.61934,-3.17389,0.48525]]},"Left Hand":{"rotation":[[0,-125,0,0],[0.25,-157.45526,0.56971,2.15154],[0.5,-30.23934,7.36082,-0.33725]]},"Right Arm":{"rotation":[[0,-19.90109,2.68407,4.22005],[0.5,19.97178,-0.65182,4.95744]]},"Right Forearm":{"rotation":[[0,20,0,0],[0.5,-27.40653,3.24688,-2.37694]]},"Right Hand":{"rotation":[[0,-115,0,0],[0.25,-144.96936,0.82629,-1.63409],[0.5,-60.19519,-4.59465,0.41009]]},"Left Leg":{"rotation":[[0,-19.66395,-6.3154,-1.01281],[0.5,-24.93919,-0.4828,-5.4173]],"position":[[0,0,0,0],[0.25,0,0.46175,0.88701]]},"Left Shin":{"rotation":[[0,42.26754,2.89011,-1.48741],[0.5,-4.80058,-3.49278,-2.84807]]},"Left Ankle":{"rotation":[[0,39.96623,3.87914,4.0918],[0.25,-52.2413,-2.88465,-1.09322],[0.5,-7.4976,1.84049,-0.07238]]},"Left Foot":{"rotation":[[0,-84.92319,-6.24012,2.58196]]},"Right Leg":{"rotation":[[0,-22.46789,14.09075,-4.49046],[0.5,-30,0,5]],"position":[[0,0,0,0],[0.25,0,0.46175,0.88701]]},"Right Shin":{"rotation":[[0,61.41245,-3.18844,4.45132],[0.5,-12.37976,1.41642,0.35526]]},"Right Ankle":{"rotation":[[0,22.89838,-4.93068,-4.22417],[0.25,-44.82905,3.78926,0.5048],[0.5,-24.89611,2.06116,0.652]]},"Right Foot":{"rotation":[[0,-94.91833,7.02991,-2.21352]]}}},"jumpdown":{"loop":"hold","length":0.5,"bones":{"Body":{"rotation":[[0,12.5,0,0],[0.5,-22.5,0,0]]},"Neck":{"rotation":[[0,10,0,0]]},"Head":{"rotation":[[0,-47.5,0,0],[0.5,-55,0,0]]},"Tail":{"rotation":[[0,-55,0,0]]},"Left Arm":{"rotation":[[0,-7.5095,0.21782,-4.99527],[0.5,92.54624,4.88119,1.08482]]},"Left Forearm":{"rotation":[[0,22.61934,-3.17389,0.48525],[0.5,-80.1938,-4.69192,8.14927]]},"Left Hand":{"rotation":[[0,-30.23934,7.36082,-0.33725],[0.5,-0.03373,8.65888,1.92043]]},"Right Arm":{"rotation":[[0,19.97178,-0.65182,4.95744],[0.5,107.48429,-5.41437,-0.46213]]},"Right Forearm":{"rotation":[[0,-27.40653,3.24688,-2.37694],[0.5,-69.98032,4.05936,-6.14159]]},"Right Hand":{"rotation":[[0,-60.19519,-4.59465,0.41009],[0.5,0.05048,-7.95518,-3.87293]]},"Left Leg":{"rotation":[[0,-24.98107,-0.43523,-4.98107],[0.5,-12.49498,0.6994,-5.39369]]},"Left Shin":{"rotation":[[0,-14.94043,-1.27259,-0.28283],[0.5,-27.39394,-2.35967,-0.26067]]},"Left Ankle":{"rotation":[[0,-27.37123,-0.33254,-1.04544],[0.5,-17.43057,-1.48998,-0.29733]]},"Left Foot":{"rotation":[[0,-84.92319,-6.24012,2.58196],[0.5,-92.46255,-6.47747,3.19428]]},"Right Leg":{"rotation":[[0,-12.56255,-1.50179,4.76968],[0.5,-32.4905,0.21782,4.99527]]},"Right Shin":{"rotation":[[0,-49.81911,4.20514,0.37476],[0.5,-4.98032,0.38638,0.20122]]},"Right Ankle":{"rotation":[[0,0,0,0],[0.5,-24.89611,2.06116,0.652]]},"Right Foot":{"rotation":[[0,-94.91833,7.02991,-2.21352],[0.5,-107.50128,7.38015,-3.25107]]}}},"walkjumpdown":{"loop":"hold","length":0.5,"bones":{"Body":{"rotation":[[0,12.5,0,0],[0.5,-22.5,0,0]]},"Neck":{"rotation":[[0,10,0,0]]},"Head":{"rotation":[[0,-47.5,0,0],[0.5,-55,0,0]]},"Tail":{"rotation":[[0,-55,0,0]]},"Left Arm":{"rotation":[[0,-7.5095,0.21782,-4.99527],[0.5,92.54624,4.88119,1.08482]]},"Left Forearm":{"rotation":[[0,22.61934,-3.17389,0.48525],[0.5,-80.1938,-4.69192,8.14927]]},"Left Hand":{"rotation":[[0,-30.23934,7.36082,-0.33725],[0.5,-0.03373,8.65888,1.92043]]},"Right Arm":{"rotation":[[0,19.97178,-0.65182,4.95744],[0.5,107.48429,-5.41437,-0.46213]]},"Right Forearm":{"rotation":[[0,-27.40653,3.24688,-2.37694],[0.5,-69.98032,4.05936,-6.14159]]},"Right Hand":{"rotation":[[0,-60.19519,-4.59465,0.41009],[0.5,0.05048,-7.95518,-3.87293]]},"Left Leg":{"rotation":[[0,-24.98107,-0.43523,-4.98107],[0.5,-12.49498,0.6994,-5.39369]]},"Left Shin":{"rotation":[[0,-14.94043,-1.27259,-0.28283],[0.5,-27.39394,-2.35967,-0.26067]]},"Left Ankle":{"rotation":[[0,-27.37123,-0.33254,-1.04544],[0.5,-17.43057,-1.48998,-0.29733]]},"Left Foot":{"rotation":[[0,-84.92319,-6.24012,2.58196],[0.5,-92.46255,-6.47747,3.19428]]},"Right Leg":{"rotation":[[0,-12.56255,-1.50179,4.76968],[0.5,-32.4905,0.21782,4.99527]]},"Right Shin":{"rotation":[[0,-49.81911,4.20514,0.37476],[0.5,-4.98032,0.38638,0.20122]]},"Right Ankle":{"rotation":[[0,0,0,0],[0.5,-24.89611,2.06116,0.652]]},"Right Foot":{"rotation":[[0,-94.91833,7.02991,-2.21352],[0.5,-107.50128,7.38015,-3.25107]]}}},"sprintjumpdown":{"loop":"hold","length":0.5,"bones":{"Body":{"rotation":[[0,12.5,0,0],[0.5,-22.5,0,0]]},"Neck":{"rotation":[[0,10,0,0]]},"Head":{"rotation":[[0,-47.5,0,0],[0.5,-55,0,0]]},"Tail":{"rotation":[[0,-55,0,0]]},"Left Arm":{"rotation":[[0,-7.5095,0.21782,-4.99527],[0.5,92.54624,4.88119,1.08482]]},"Left Forearm":{"rotation":[[0,22.61934,-3.17389,0.48525],[0.5,-80.1938,-4.69192,8.14927]]},"Left Hand":{"rotation":[[0,-30.23934,7.36082,-0.33725],[0.5,-0.03373,8.65888,1.92043]]},"Right Arm":{"rotation":[[0,19.97178,-0.65182,4.95744],[0.5,107.48429,-5.41437,-0.46213]]},"Right Forearm":{"rotation":[[0,-27.40653,3.24688,-2.37694],[0.5,-69.98032,4.05936,-6.14159]]},"Right Hand":{"rotation":[[0,-60.19519,-4.59465,0.41009],[0.5,0.05048,-7.95518,-3.87293]]},"Left Leg":{"rotation":[[0,-24.98107,-0.43523,-4.98107],[0.5,-12.49498,0.6994,-5.39369]]},"Left Shin":{"rotation":[[0,-14.94043,-1.27259,-0.28283],[0.5,-27.39394,-2.35967,-0.26067]]},"Left Ankle":{"rotation":[[0,-27.37123,-0.33254,-1.04544],[0.5,-17.43057,-1.48998,-0.29733]]},"Left Foot":{"rotation":[[0,-84.92319,-6.24012,2.58196],[0.5,-92.46255,-6.47747,3.19428]]},"Right Leg":{"rotation":[[0,-12.56255,-1.50179,4.76968],[0.5,-32.4905,0.21782,4.99527]]},"Right Shin":{"rotation":[[0,-49.81911,4.20514,0.37476],[0.5,-4.98032,0.38638,0.20122]]},"Right Ankle":{"rotation":[[0,0,0,0],[0.5,-24.89611,2.06116,0.652]]},"Right Foot":{"rotation":[[0,-94.91833,7.02991,-2.21352],[0.5,-107.50128,7.38015,-3.25107]]}}},"crouchjumpdown":{"loop":"hold","length":0.5,"bones":{"Body":{"rotation":[[0,12.5,0,0],[0.5,-22.5,0,0]]},"Neck":{"rotation":[[0,10,0,0]]},"Head":{"rotation":[[0,-47.5,0,0],[0.5,-55,0,0]]},"Tail":{"rotation":[[0,-55,0,0]]},"Left Arm":{"rotation":[[0,-7.5095,0.21782,-4.99527],[0.5,92.54624,4.88119,1.08482]]},"Left Forearm":{"rotation":[[0,22.61934,-3.17389,0.48525],[0.5,-80.1938,-4.69192,8.14927]]},"Left Hand":{"rotation":[[0,-30.23934,7.36082,-0.33725],[0.5,-0.03373,8.65888,1.92043]]},"Right Arm":{"rotation":[[0,19.97178,-0.65182,4.95744],[0.5,107.48429,-5.41437,-0.46213]]},"Right Forearm":{"rotation":[[0,-27.40653,3.24688,-2.37694],[0.5,-69.98032,4.05936,-6.14159]]},"Right Hand":{"rotation":[[0,-60.19519,-4.59465,0.41009],[0.5,0.05048,-7.95518,-3.87293]]},"Left Leg":{"rotation":[[0,-24.98107,-0.43523,-4.98107],[0.5,-12.49498,0.6994,-5.39369]]},"Left Shin":{"rotation":[[0,-14.94043,-1.27259,-0.28283],[0.5,-27.39394,-2.35967,-0.26067]]},"Left Ankle":{"rotation":[[0,-27.37123,-0.33254,-1.04544],[0.5,-17.43057,-1.48998,-0.29733]]},"Left Foot":{"rotation":[[0,-84.92319,-6.24012,2.58196],[0.5,-92.46255,-6.47747,3.19428]]},"Right Leg":{"rotation":[[0,-12.56255,-1.50179,4.76968],[0.5,-32.4905,0.21782,4.99527]]},"Right Shin":{"rotation":[[0,-49.81911,4.20514,0.37476],[0.5,-4.98032,0.38638,0.20122]]},"Right Ankle":{"rotation":[[0,0,0,0],[0.5,-24.89611,2.06116,0.652]]},"Right Foot":{"rotation":[[0,-94.91833,7.02991,-2.21352],[0.5,-107.50128,7.38015,-3.25107]]}}},"crouch":{"loop":"loop","length":6,"bones":{"Body":{"rotation":[[0,-7.5,0,0],[3,-10,0,0],[6,-7.5,0,0]],"position":[[0,0,-5,0],[3,0,-6,0],[6,0,-5,0]]},"Neck":{"rotation":[[0,-12.5,0,0],[3.5,-7.5,0,0],[6,-12.5,0,0]]},"Head":{"rotation":[[0,17.34683,-2.16578,0.56249],[3.5,14.84521,-2.13919,0.65646],[6,17.34683,-2.16578,0.56249]],"position":[[0,0,0,0],[6,0,0,0]]},"Tail":{"rotation":[[0,-4.84612,0.81695,0.8873],[6,-4.84612,0.81695,0.8873]]},"Left Arm":{"rotation":[[0,-30,0,0],[3,-27.5,0,0],[6,-30,0,0]],"position":[[0,0,2.97433,0.39158],[3,0,4.20101,0.60706],[6,0,2.97433,0.39158]]},"Left Forearm":{"rotation":[[0,40.10293,-0.54203,0.8753],[6,40.10293,-0.54203,0.8753]]},"Left Hand":{"rotation":[[0,-2.4996,0.04429,-0.00748],[6,-2.4996,0.04429,-0.00748]]},"Right Arm":{"rotation":[[0,-15,0,0],[3,-12.5,0,0],[6,-15,0,0]],"position":[[0,0,2.97433,0.39158],[3,0,4.20101,0.60706],[6,0,2.97433,0.39158]]},"Right Forearm":{"rotation":[[0,47.5,0,0],[6,47.5,0,0]]},"Right Hand":{"rotation":[[0,-25,0,0],[6,-25,0,0]]},"Left Leg":{"rotation":[[0,50,0,0],[3,52.5,0,0],[6,50,0,0]],"position":[[0,0,1.98289,0.26105],[3,0,2.71861,0.39024],[6,0,1.98289,0.26105]]},"Left Shin":{"rotation":[[0,-47.5,0,0],[6,-47.5,0,0]]},"Left Ankle":{"rotation":[[0,5,0,0],[6,5,0,0]]},"Right Leg":{"rotation":[[0,-7.5,0,0],[3,-5,0,0],[6,-7.5,0,0]],"position":[[0,0,1.98289,0.26105],[3,0,2.96481,0.43365],[6,0,1.98289,0.26105]]},"Right Shin":{"rotation":[[0,-12.5,0,0],[3,-10,0,0],[6,-12.5,0,0]]},"Right Ankle":{"rotation":[[0,14.98742,0.17987,-0.1705],[6,14.98742,0.17987,-0.1705]]},"Right Foot":{"rotation":[[0,10,0,0],[6,10,0,0]]}}},"crouchwalk":{"loop":"loop","length":2.75,"bones":{"Body":{"rotation":[[0,2.5,0,0],[0.54167,-2.5,0,0],[1.16667,2.5,0,0],[1.79167,-5,0,0],[2.33333,2.5,0,0],[2.75,2.5,0,0]],"position":[[0,0,-4,0],[2.75,0,-4,0]],"scale":[[0,1,1,1],[2.75,1,1,1]]},"Neck":{"rotation":[[0,-32.5,0,0],[0.75,-30.52,0,0],[1.25,-27.5,0,0],[1.75,-30.52,0,0],[2.25,-27.5,0,0],[2.75,-32.5,0,0]]},"Head":{"rotation":[[0,27.5,0,0],[0.375,32.38,0,0],[0.75,29.63072,0,0],[1.25,25,0,0],[1.66667,34.84,0,0],[2.25,25,0,0],[2.75,27.5,0,0]],"position":[[0,0,0,0],[2.75,0,0,0]]},"Tail":{"rotation":[[0,-2.50238,-2.49762,0.10912]]},"Left Arm":{"rotation":[[0,-25,0,0],[0.25,57.27652,6.3202,-4.04618],[0.5,72.46392,5.18566,-1.62617],[0.75,35,0,0],[1,20,0,0],[1.25,5,0,0],[1.5,-5,0,0],[1.75,-7.5,0,0],[2,2.5,0,0],[2.25,-17.5,0,0],[2.5,-35,0,0],[2.75,-25,0,0]],"position":[[0,0,3.99619,-0.17448],[0.25,0,5,0.00326],[0.5,0,5.9964,0.16956],[1.5,0,3.99809,0.12352],[2,0,3.995,0.20003],[2.75,0,3.99619,-0.17448]]},"Left Forearm":{"rotation":[[0,47.5,0,0],[0.25,-12.3423,-2.55868,0.44761],[0.5,-39.90408,-1.72493,0.1078],[0.75,-25,0,0],[1,-25,0,0],[1.25,-20,0,0],[1.5,-15,0,0],[1.75,-15,0,0],[2,-40,0,0],[2.25,-16.67,0,0],[2.75,47.5,0,0]]},"Left Hand":{"rotation":[[0,-82.5,0,0],[0.25,-89.55482,-13.53329,-11.08028],[0.5,-37.35831,-1.97255,-1.39313],[0.75,-7.5,0,0],[1,5,0,0],[1.25,12.5,0,0],[1.5,17.5,0,0],[1.75,27.5,0,0],[2,40,0,0],[2.25,7.5,0,0],[2.5,-105,0,0],[2.75,-82.5,0,0]]},"Right Arm":{"rotation":[[0,0,0,0],[0.25,-2.5,0,0],[0.5,-5,0,0],[0.75,-22.5,0,0],[1,-32.5,0,0],[1.25,22.5,0,0],[1.5,60,0,0],[1.75,81.59914,-7.42043,1.09267],[2,47.39118,-3.68425,3.38262],[2.25,32.5,0,0],[2.5,17.5,0,0],[2.75,0,0,0]],"position":[[0,0,3.99619,-0.17448],[1.5,0,3.99809,0.12352],[2,0,5.495,0.20003],[2.25,0,4.91842,-0.11232],[2.5,0,4.82345,-0.22886],[2.75,0,3.99619,-0.17448]]},"Right Forearm":{"rotation":[[0,-15,0,0],[0.25,-22.44712,-0.76118,0.5127],[0.5,-29.94712,-0.76118,0.5127],[0.75,-14.94712,-0.76118,0.5127],[1,30.05288,-0.76118,0.5127],[1.25,12.55288,-0.76118,0.5127],[1.5,-4.52334,0.32403,0.4393],[1.75,-29.81814,5.11546,-1.27794],[2,-22.44712,-0.76118,0.5127],[2.25,-19.94712,-0.76118,0.5127],[2.5,-22.47356,-0.38059,0.25635],[2.75,-15,0,0]]},"Right Hand":{"rotation":[[0,12.5,0,0],[0.25,25,0,0],[0.5,32.5,0,0],[0.75,2.5,0,0],[1,-107.5,0,0],[1.25,-50.00978,0.22168,-1.48707],[1.5,-82.1837,1.43573,11.66724],[1.75,-77.67394,-1.32322,-3.79541],[2,-24.91643,-2.11089,-4.53359],[2.25,-15,0,0],[2.5,1.24454,0.23394,0.01345],[2.75,12.5,0,0]]},"Left Leg":{"rotation":[[0,39.97314,1.60667,-1.91561],[0.25,24.97911,1.05627,-2.26603],[0.5,20,0,0],[0.75,10,0,0],[1,-10,0,0],[1.25,-22.5,0,0],[1.5,-32.5,0,0],[1.75,0,0,-7.5],[2,22.42287,1.91134,-4.62111],[2.25,44.89078,3.53329,-3.54002],[2.5,42.39121,3.37562,-3.69066],[2.75,39.97314,1.60667,-1.91561]],"position":[[0,0,1.9981,-0.08724],[2,0,2.99875,-0.03999],[2.25,0,3.66961,-0.08808],[2.75,0,1.9981,-0.08724]]},"Left Shin":{"rotation":[[0,-49.97437,-1.43364,0.45169],[0.25,-47.47437,-1.43364,0.45169],[0.5,-37.5,0,0],[0.75,-40,0,0],[1,-24.33156,2.31952,-3.66263],[1.25,-10.08014,0.52164,-2.38205],[1.5,2.5,0,0],[1.75,-22.5,0,0],[2,-52.5,0,0],[2.25,-32.5,0,0],[2.5,-23.6555,-2.49762,0.66713],[2.75,-49.97437,-1.43364,0.45169]]},"Left Ankle":{"rotation":[[0,19.98242,0.87466,0.43117],[0.25,32.47871,1.14766,0.59718],[0.5,30.31,0,0],[0.75,27.5,0,0],[1.5,14.19195,0,0],[1.75,-30,0,0],[2,40,0,0],[2.25,10,0,0],[2.5,-1.25955,0.21704,-0.01901],[2.75,19.98242,0.87466,0.43117]]},"Left Foot":{"rotation":[[0,-12.5,0,0],[0.25,-7.5,0,0],[0.5,-10,0,0],[0.75,5,0,0],[1,12.5,0,0],[1.25,14.85634,-0.39068,0.12638],[1.5,-64.97475,-0.24113,0.78503],[1.75,-59.97482,-0.78137,0.25276],[2,-97.39181,-3.48867,0.91414],[2.25,-95.49085,-1.50992,2.51784],[2.375,-29.61077,1.13566,4.8861],[2.5,-21.57171,2.44289,4.72485],[2.75,-12.5,0,0]]},"Right Leg":{"rotation":[[0,-17.5,0,0],[0.25,-22.32486,2.36886,8.26795],[0.5,17.46882,-1.87815,6.13936],[0.75,27.45494,-2.56223,5.83335],[1,32.43193,-2.79869,5.1229],[1.25,25.0138,-1.16977,3.16968],[1.5,17.51882,-0.86512,3.28827],[1.75,7.53915,-0.11204,0.90429],[2,2.53915,-0.11204,0.90429],[2.25,-2.46085,-0.11204,0.90429],[2.5,-5.06448,0.67591,-1.00473],[2.75,-17.5,0,0]],"position":[[0,0,1.9981,-0.08724],[0.5,0,3.2891,-0.00761],[0.75,0,2.57981,-0.05061],[1,0,3.49802,-0.1258],[1.5,0,3.43988,-0.11228],[2.75,0,1.9981,-0.08724]]},"Right Shin":{"rotation":[[0,-15.396,2.05314,-3.31815],[0.25,-22.33404,2.23602,-0.03786],[0.5,-52.41037,1.65611,-0.23213],[0.75,-20.81444,3.90455,-5.44409],[1,-0.82658,3.83066,-5.79898],[1.25,-0.79522,3.68049,-4.70556],[1.5,-5.79522,3.68049,-4.70556],[1.75,4.21341,2.96624,-5.28758],[2,-10.77717,2.5759,-5.50892],[2.25,-25.76467,2.16733,-5.68153],[2.5,-34.06674,-0.95839,-3.18038],[2.75,-15.396,2.05314,-3.31815]]},"Right Ankle":{"rotation":[[0,17.46188,0.73563,1.13667],[0.25,70.07442,-3.61051,-1.88622],[0.5,50.0497,0.70073,0.45945],[0.75,42.45912,-0.60477,0.74827],[1,2.45817,-0.1652,1.0889],[1.25,12.5,0,0],[1.5,17.5,0,0],[1.75,22.4611,0.75514,0.5268],[2,29.93907,1.06476,1.18228],[2.25,31.60225,0.93956,1.53528],[2.5,27.4681,1.04131,0.80728],[2.75,17.46188,0.73563,1.13667]]},"Right Foot":{"rotation":[[0,12.42257,0.87699,3.17679],[0.25,-97.30151,2.56043,-2.14979],[0.5,-107.99983,1.75939,-3.46366],[0.75,-55.7714,0.70322,-3.04761],[1,-34.89743,-2.86544,-4.09918],[1.25,-40.1076,-3.82821,3.21873],[1.5,-25.00916,-3.02254,4.53367],[1.75,-30.67507,3.09519,3.92872],[2,-19.89455,3.04137,3.9705],[2.25,-4.92287,1.91134,4.62111],[2.5,6.24867,1.25489,3.22193],[2.75,12.42257,0.87699,3.17679]]}}},"climb":{"loop":"loop","length":2.75,"bones":{"Body":{"rotation":[[0,92.5,0,0],[0.54167,87.5,0,0],[1.16667,92.5,0,0],[1.79167,85,0,0],[2.33333,92.5,0,0],[2.75,92.5,0,0]],"position":[[0,0,-4,3],[2.75,0,-4,3]],"scale":[[0,1,1,1],[2.75,1,1,1]]},"Neck":{"rotation":[[0,-32.5,0,0],[0.75,-30.52,0,0],[1.25,-27.5,0,0],[1.75,-30.52,0,0],[2.25,-27.5,0,0],[2.75,-32.5,0,0]]},"Head":{"rotation":[[0,27.5,0,0],[0.375,32.38,0,0],[0.75,29.63072,0,0],[1.25,25,0,0],[1.66667,34.84,0,0],[2.25,25,0,0],[2.75,27.5,0,0]],"position":[[0,0,0,0],[2.75,0,0,0]]},"Tail":{"rotation":[[0,-2.50238,-2.49762,0.10912]]},"Left Arm":{"rotation":[[0,-25,0,0],[0.25,57.27652,6.3202,-4.04618],[0.5,72.46392,5.18566,-1.62617],[0.75,35,0,0],[1,20,0,0],[1.25,5,0,0],[1.5,-5,0,0],[1.75,-7.5,0,0],[2,2.5,0,0],[2.25,-17.5,0,0],[2.5,-35,0,0],[2.75,-25,0,0]],"position":[[0,0,3.99619,-0.17448],[0.25,0,5,0.00326],[0.5,0,5.9964,0.16956],[1.5,0,3.99809,0.12352],[2,0,3.995,0.20003],[2.75,0,3.99619,-0.17448]]},"Left Forearm":{"rotation":[[0,47.5,0,0],[0.25,-12.3423,-2.55868,0.44761],[0.5,-39.90408,-1.72493,0.1078],[0.75,-25,0,0],[1,-25,0,0],[1.25,-20,0,0],[1.5,-15,0,0],[1.75,-15,0,0],[2,-40,0,0],[2.25,-16.67,0,0],[2.75,47.5,0,0]]},"Left Hand":{"rotation":[[0,-82.5,0,0],[0.25,-89.55482,-13.53329,-11.08028],[0.5,-37.35831,-1.97255,-1.39313],[0.75,-7.5,0,0],[1,5,0,0],[1.25,12.5,0,0],[1.5,17.5,0,0],[1.75,27.5,0,0],[2,40,0,0],[2.25,7.5,0,0],[2.5,-105,0,0],[2.75,-82.5,0,0]]},"Right Arm":{"rotation":[[0,0,0,0],[0.25,-2.5,0,0],[0.5,-5,0,0],[0.75,-22.5,0,0],[1,-32.5,0,0],[1.25,22.5,0,0],[1.5,60,0,0],[1.75,81.59914,-7.42043,1.09267],[2,47.39118,-3.68425,3.38262],[2.25,32.5,0,0],[2.5,17.5,0,0],[2.75,0,0,0]],"position":[[0,0,3.99619,-0.17448],[1.5,0,3.99809,0.12352],[2,0,5.495,0.20003],[2.25,0,4.91842,-0.11232],[2.5,0,4.82345,-0.22886],[2.75,0,3.99619,-0.17448]]},"Right Forearm":{"rotation":[[0,-15,0,0],[0.25,-22.44712,-0.76118,0.5127],[0.5,-29.94712,-0.76118,0.5127],[0.75,-14.94712,-0.76118,0.5127],[1,30.05288,-0.76118,0.5127],[1.25,12.55288,-0.76118,0.5127],[1.5,-4.52334,0.32403,0.4393],[1.75,-29.81814,5.11546,-1.27794],[2,-22.44712,-0.76118,0.5127],[2.25,-19.94712,-0.76118,0.5127],[2.5,-22.47356,-0.38059,0.25635],[2.75,-15,0,0]]},"Right Hand":{"rotation":[[0,12.5,0,0],[0.25,25,0,0],[0.5,32.5,0,0],[0.75,2.5,0,0],[1,-107.5,0,0],[1.25,-50.00978,0.22168,-1.48707],[1.5,-82.1837,1.43573,11.66724],[1.75,-77.67394,-1.32322,-3.79541],[2,-24.91643,-2.11089,-4.53359],[2.25,-15,0,0],[2.5,1.24454,0.23394,0.01345],[2.75,12.5,0,0]]},"Left Leg":{"rotation":[[0,39.97314,1.60667,-1.91561],[0.25,24.97911,1.05627,-2.26603],[0.5,20,0,0],[0.75,10,0,0],[1,-10,0,0],[1.25,-22.5,0,0],[1.5,-32.5,0,0],[1.75,0,0,-7.5],[2,22.42287,1.91134,-4.62111],[2.25,44.89078,3.53329,-3.54002],[2.5,42.39121,3.37562,-3.69066],[2.75,39.97314,1.60667,-1.91561]],"position":[[0,0,1.9981,-0.08724],[2,0,2.99875,-0.03999],[2.25,0,3.66961,-0.08808],[2.75,0,1.9981,-0.08724]]},"Left Shin":{"rotation":[[0,-49.97437,-1.43364,0.45169],[0.25,-47.47437,-1.43364,0.45169],[0.5,-37.5,0,0],[0.75,-40,0,0],[1,-24.33156,2.31952,-3.66263],[1.25,-10.08014,0.52164,-2.38205],[1.5,2.5,0,0],[1.75,-22.5,0,0],[2,-52.5,0,0],[2.25,-32.5,0,0],[2.5,-23.6555,-2.49762,0.66713],[2.75,-49.97437,-1.43364,0.45169]]},"Left Ankle":{"rotation":[[0,19.98242,0.87466,0.43117],[0.25,32.47871,1.14766,0.59718],[0.5,30.31,0,0],[0.75,27.5,0,0],[1.5,14.19195,0,0],[1.75,-30,0,0],[2,40,0,0],[2.25,10,0,0],[2.5,-1.25955,0.21704,-0.01901],[2.75,19.98242,0.87466,0.43117]]},"Left Foot":{"rotation":[[0,-12.5,0,0],[0.25,-7.5,0,0],[0.5,-10,0,0],[0.75,5,0,0],[1,12.5,0,0],[1.25,14.85634,-0.39068,0.12638],[1.5,-64.97475,-0.24113,0.78503],[1.75,-59.97482,-0.78137,0.25276],[2,-97.39181,-3.48867,0.91414],[2.25,-95.49085,-1.50992,2.51784],[2.375,-29.61077,1.13566,4.8861],[2.5,-21.57171,2.44289,4.72485],[2.75,-12.5,0,0]]},"Right Leg":{"rotation":[[0,-17.5,0,0],[0.25,-22.32486,2.36886,8.26795],[0.5,17.46882,-1.87815,6.13936],[0.75,27.45494,-2.56223,5.83335],[1,32.43193,-2.79869,5.1229],[1.25,25.0138,-1.16977,3.16968],[1.5,17.51882,-0.86512,3.28827],[1.75,7.53915,-0.11204,0.90429],[2,2.53915,-0.11204,0.90429],[2.25,-2.46085,-0.11204,0.90429],[2.5,-5.06448,0.67591,-1.00473],[2.75,-17.5,0,0]],"position":[[0,0,1.9981,-0.08724],[0.5,0,3.2891,-0.00761],[0.75,0,2.57981,-0.05061],[1,0,3.49802,-0.1258],[1.5,0,3.43988,-0.11228],[2.75,0,1.9981,-0.08724]]},"Right Shin":{"rotation":[[0,-15.396,2.05314,-3.31815],[0.25,-22.33404,2.23602,-0.03786],[0.5,-52.41037,1.65611,-0.23213],[0.75,-20.81444,3.90455,-5.44409],[1,-0.82658,3.83066,-5.79898],[1.25,-0.79522,3.68049,-4.70556],[1.5,-5.79522,3.68049,-4.70556],[1.75,4.21341,2.96624,-5.28758],[2,-10.77717,2.5759,-5.50892],[2.25,-25.76467,2.16733,-5.68153],[2.5,-34.06674,-0.95839,-3.18038],[2.75,-15.396,2.05314,-3.31815]]},"Right Ankle":{"rotation":[[0,17.46188,0.73563,1.13667],[0.25,70.07442,-3.61051,-1.88622],[0.5,50.0497,0.70073,0.45945],[0.75,42.45912,-0.60477,0.74827],[1,2.45817,-0.1652,1.0889],[1.25,12.5,0,0],[1.5,17.5,0,0],[1.75,22.4611,0.75514,0.5268],[2,29.93907,1.06476,1.18228],[2.25,31.60225,0.93956,1.53528],[2.5,27.4681,1.04131,0.80728],[2.75,17.46188,0.73563,1.13667]]},"Right Foot":{"rotation":[[0,12.42257,0.87699,3.17679],[0.25,-97.30151,2.56043,-2.14979],[0.5,-107.99983,1.75939,-3.46366],[0.75,-55.7714,0.70322,-3.04761],[1,-34.89743,-2.86544,-4.09918],[1.25,-40.1076,-3.82821,3.21873],[1.5,-25.00916,-3.02254,4.53367],[1.75,-30.67507,3.09519,3.92872],[2,-19.89455,3.04137,3.9705],[2.25,-4.92287,1.91134,4.62111],[2.5,6.24867,1.25489,3.22193],[2.75,12.42257,0.87699,3.17679]]}}},"climbdown":{"loop":"loop","length":2.75,"bones":{"Body":{"rotation":[[0,92.5,0,0],[0.41667,92.5,0,0],[0.95833,85,0,0],[1.58333,92.5,0,0],[2.20833,87.5,0,0],[2.75,92.5,0,0]],"position":[[0,0,-4,3],[2.75,0,-4,3]],"scale":[[0,1,1,1],[2.75,1,1,1]]},"Neck":{"rotation":[[0,-32.5,0,0],[0.5,-27.5,0,0],[1,-30.52,0,0],[1.5,-27.5,0,0],[2,-30.52,0,0],[2.75,-32.5,0,0]]},"Head":{"rotation":[[0,27.5,0,0],[0.5,25,0,0],[1.08333,34.84,0,0],[1.5,25,0,0],[2,29.63072,0,0],[2.375,32.38,0,0],[2.75,27.5,0,0]],"position":[[0,0,0,0],[2.75,0,0,0]]},"Tail":{"rotation":[[2.75,-2.50238,-2.49762,0.10912]]},"Left Arm":{"rotation":[[0,-25,0,0],[0.25,-35,0,0],[0.5,-17.5,0,0],[0.75,2.5,0,0],[1,-7.5,0,0],[1.25,-5,0,0],[1.5,5,0,0],[1.75,20,0,0],[2,35,0,0],[2.25,72.46392,5.18566,-1.62617],[2.5,57.27652,6.3202,-4.04618],[2.75,-25,0,0]],"position":[[0,0,3.99619,-0.17448],[0.75,0,3.995,0.20003],[1.25,0,3.99809,0.12352],[2.25,0,5.9964,0.16956],[2.5,0,5,0.00326],[2.75,0,3.99619,-0.17448]]},"Left Forearm":{"rotation":[[0,47.5,0,0],[0.5,-16.67,0,0],[0.75,-40,0,0],[1,-15,0,0],[1.25,-15,0,0],[1.5,-20,0,0],[1.75,-25,0,0],[2,-25,0,0],[2.25,-39.90408,-1.72493,0.1078],[2.5,-12.3423,-2.55868,0.44761],[2.75,47.5,0,0]]},"Left Hand":{"rotation":[[0,-82.5,0,0],[0.25,-105,0,0],[0.5,7.5,0,0],[0.75,40,0,0],[1,27.5,0,0],[1.25,17.5,0,0],[1.5,12.5,0,0],[1.75,5,0,0],[2,-7.5,0,0],[2.25,-37.35831,-1.97255,-1.39313],[2.5,-89.55482,-13.53329,-11.08028],[2.75,-82.5,0,0]]},"Right Arm":{"rotation":[[0,0,0,0],[0.25,17.5,0,0],[0.5,32.5,0,0],[0.75,47.39118,-3.68425,3.38262],[1,81.59914,-7.42043,1.09267],[1.25,60,0,0],[1.5,22.5,0,0],[1.75,-32.5,0,0],[2,-22.5,0,0],[2.25,-5,0,0],[2.5,-2.5,0,0],[2.75,0,0,0]],"position":[[0,0,3.99619,-0.17448],[0.25,0,4.82345,-0.22886],[0.5,0,4.91842,-0.11232],[0.75,0,5.495,0.20003],[1.25,0,3.99809,0.12352],[2.75,0,3.99619,-0.17448]]},"Right Forearm":{"rotation":[[0,-15,0,0],[0.25,-22.47356,-0.38059,0.25635],[0.5,-19.94712,-0.76118,0.5127],[0.75,-22.44712,-0.76118,0.5127],[1,-29.81814,5.11546,-1.27794],[1.25,-4.52334,0.32403,0.4393],[1.5,12.55288,-0.76118,0.5127],[1.75,30.05288,-0.76118,0.5127],[2,-14.94712,-0.76118,0.5127],[2.25,-29.94712,-0.76118,0.5127],[2.5,-22.44712,-0.76118,0.5127],[2.75,-15,0,0]]},"Right Hand":{"rotation":[[0,12.5,0,0],[0.25,1.24454,0.23394,0.01345],[0.5,-15,0,0],[0.75,-24.91643,-2.11089,-4.53359],[1,-77.67394,-1.32322,-3.79541],[1.25,-82.1837,1.43573,11.66724],[1.5,-50.00978,0.22168,-1.48707],[1.75,-107.5,0,0],[2,2.5,0,0],[2.25,32.5,0,0],[2.5,25,0,0],[2.75,12.5,0,0]]},"Left Leg":{"rotation":[[0,39.97314,1.60667,-1.91561],[0.25,42.39121,3.37562,-3.69066],[0.5,44.89078,3.53329,-3.54002],[0.75,22.42287,1.91134,-4.62111],[1,0,0,-7.5],[1.25,-32.5,0,0],[1.5,-22.5,0,0],[1.75,-10,0,0],[2,10,0,0],[2.25,20,0,0],[2.5,24.97911,1.05627,-2.26603],[2.75,39.97314,1.60667,-1.91561]],"position":[[0,0,1.9981,-0.08724],[0.5,0,3.66961,-0.08808],[0.75,0,2.99875,-0.03999],[2.75,0,1.9981,-0.08724]]},"Left Shin":{"rotation":[[0,-49.97437,-1.43364,0.45169],[0.25,-23.6555,-2.49762,0.66713],[0.5,-32.5,0,0],[0.75,-52.5,0,0],[1,-22.5,0,0],[1.25,2.5,0,0],[1.5,-10.08014,0.52164,-2.38205],[1.75,-24.33156,2.31952,-3.66263],[2,-40,0,0],[2.25,-37.5,0,0],[2.5,-47.47437,-1.43364,0.45169],[2.75,-49.97437,-1.43364,0.45169]]},"Left Ankle":{"rotation":[[0,19.98242,0.87466,0.43117],[0.25,-1.25955,0.21704,-0.01901],[0.5,10,0,0],[0.75,40,0,0],[1,-30,0,0],[1.25,14.19195,0,0],[2,27.5,0,0],[2.25,30.31,0,0],[2.5,32.47871,1.14766,0.59718],[2.75,19.98242,0.87466,0.43117]]},"Left Foot":{"rotation":[[0,-12.5,0,0],[0.25,-21.57171,2.44289,4.72485],[0.375,-29.61077,1.13566,4.8861],[0.5,-95.49085,-1.50992,2.51784],[0.75,-97.39181,-3.48867,0.91414],[1,-59.97482,-0.78137,0.25276],[1.25,-64.97475,-0.24113,0.78503],[1.5,14.85634,-0.39068,0.12638],[1.75,12.5,0,0],[2,5,0,0],[2.25,-10,0,0],[2.5,-7.5,0,0],[2.75,-12.5,0,0]]},"Right Leg":{"rotation":[[0,-17.5,0,0],[0.25,-5.06448,0.67591,-1.00473],[0.5,-2.46085,-0.11204,0.90429],[0.75,2.53915,-0.11204,0.90429],[1,7.53915,-0.11204,0.90429],[1.25,17.51882,-0.86512,3.28827],[1.5,25.0138,-1.16977,3.16968],[1.75,32.43193,-2.79869,5.1229],[2,27.45494,-2.56223,5.83335],[2.25,17.46882,-1.87815,6.13936],[2.5,-22.32486,2.36886,8.26795],[2.75,-17.5,0,0]],"position":[[0,0,1.9981,-0.08724],[1.25,0,3.43988,-0.11228],[1.75,0,3.49802,-0.1258],[2,0,2.57981,-0.05061],[2.25,0,3.2891,-0.00761],[2.75,0,1.9981,-0.08724]]},"Right Shin":{"rotation":[[0,-15.396,2.05314,-3.31815],[0.25,-34.06674,-0.95839,-3.18038],[0.5,-25.76467,2.16733,-5.68153],[0.75,-10.77717,2.5759,-5.50892],[1,4.21341,2.96624,-5.28758],[1.25,-5.79522,3.68049,-4.70556],[1.5,-0.79522,3.68049,-4.70556],[1.75,-0.82658,3.83066,-5.79898],[2,-20.81444,3.90455,-5.44409],[2.25,-52.41037,1.65611,-0.23213],[2.5,-22.33404,2.23602,-0.03786],[2.75,-15.396,2.05314,-3.31815]]},"Right Ankle":{"rotation":[[0,17.46188,0.73563,1.13667],[0.25,27.4681,1.04131,0.80728],[0.5,31.60225,0.93956,1.53528],[0.75,29.93907,1.06476,1.18228],[1,22.4611,0.75514,0.5268],[1.25,17.5,0,0],[1.5,12.5,0,0],[1.75,2.45817,-0.1652,1.0889],[2,42.45912,-0.60477,0.74827],[2.25,50.0497,0.70073,0.45945],[2.5,70.07442,-3.61051,-1.88622],[2.75,17.46188,0.73563,1.13667]]},"Right Foot":{"rotation":[[0,12.42257,0.87699,3.17679],[0.25,6.24867,1.25489,3.22193],[0.5,-4.92287,1.91134,4.62111],[0.75,-19.89455,3.04137,3.9705],[1,-30.67507,3.09519,3.92872],[1.25,-25.00916,-3.02254,4.53367],[1.5,-40.1076,-3.82821,3.21873],[1.75,-34.89743,-2.86544,-4.09918],[2,-55.7714,0.70322,-3.04761],[2.25,-107.99983,1.75939,-3.46366],[2.5,-97.30151,2.56043,-2.14979],[2.75,12.42257,0.87699,3.17679]]}}},"climbcrouch":{"loop":"loop","length":6,"bones":{"Body":{"rotation":[[0,82.5,0,0],[3,80,0,0],[6,82.5,0,0]],"position":[[0,0,-5,2],[3,0,-6,1],[6,0,-5,2]]},"Neck":{"rotation":[[0,-12.5,0,0],[3.5,-7.5,0,0],[6,-12.5,0,0]]},"Head":{"rotation":[[0,17.34683,-2.16578,0.56249],[3.5,14.84521,-2.13919,0.65646],[6,17.34683,-2.16578,0.56249]],"position":[[0,0,0,0],[6,0,0,0]]},"Tail":{"rotation":[[0,-4.84612,0.81695,0.8873],[6,-4.84612,0.81695,0.8873]]},"Left Arm":{"rotation":[[0,-30,0,0],[3,-27.5,0,0],[6,-30,0,0]],"position":[[0,0,2.97433,0.39158],[3,0,4.20101,0.60706],[6,0,2.97433,0.39158]]},"Left Forearm":{"rotation":[[0,40.10293,-0.54203,0.8753],[6,40.10293,-0.54203,0.8753]]},"Left Hand":{"rotation":[[0,-2.4996,0.04429,-0.00748],[6,-2.4996,0.04429,-0.00748]]},"Right Arm":{"rotation":[[0,-15,0,0],[3,-12.5,0,0],[6,-15,0,0]],"position":[[0,0,2.97433,0.39158],[3,0,4.20101,0.60706],[6,0,2.97433,0.39158]]},"Right Forearm":{"rotation":[[0,47.5,0,0],[6,47.5,0,0]]},"Right Hand":{"rotation":[[0,-25,0,0],[6,-25,0,0]]},"Left Leg":{"rotation":[[0,50,0,0],[3,52.5,0,0],[6,50,0,0]],"position":[[0,0,1.98289,0.26105],[3,0,2.71861,0.39024],[6,0,1.98289,0.26105]]},"Left Shin":{"rotation":[[0,-47.5,0,0],[6,-47.5,0,0]]},"Left Ankle":{"rotation":[[0,5,0,0],[6,5,0,0]]},"Right Leg":{"rotation":[[0,-7.5,0,0],[3,-5,0,0],[6,-7.5,0,0]],"position":[[0,0,1.98289,0.26105],[3,0,2.96481,0.43365],[6,0,1.98289,0.26105]]},"Right Shin":{"rotation":[[0,-12.5,0,0],[3,-10,0,0],[6,-12.5,0,0]]},"Right Ankle":{"rotation":[[0,14.98742,0.17987,-0.1705],[6,14.98742,0.17987,-0.1705]]},"Right Foot":{"rotation":[[0,10,0,0],[6,10,0,0]]}}},"swim":{"loop":"loop","length":1,"bones":{"Body":{"rotation":[[0,0,0,2.5],[0.125,2.49941,-0.05452,1.24881],[0.25,0,0,0],[0.375,-2.49941,-0.05452,-1.24881],[0.5,0,0,-2.5],[0.625,2.49941,0.05452,-1.24881],[0.75,0,0,0],[0.875,-2.49941,0.05452,1.24881],[1,0,0,2.5]]},"Neck":{"rotation":[[0,-42.49294,0.32621,-0.02136]]},"Tail":{"rotation":[[0,-19.98247,0.85481,-0.15059],[1,-19.98247,0.85481,-0.15059]]},"Left Arm":{"rotation":[[0,-10,0,0],[0.25,5,0,0],[0.5,32.5,0,0],[0.75,77.5,0,0],[1,-10,0,0]]},"Left Forearm":{"rotation":[[0,2.47747,-1.25462,-0.61842],[0.25,-57.5,0,0],[0.75,7.5,0,0],[0.875,9.16667,0,0],[1,2.47747,-1.25462,-0.61842]]},"Left Hand":{"rotation":[[0,-17.5,0,0],[0.25,-87.5,0,0],[0.5,-107.5,0,0],[0.75,-80,0,0],[1,-17.5,0,0]]},"Right Arm":{"rotation":[[0,67.35678,-1.54389,2.37492],[0.25,10,0,0],[0.5,-10,0,0],[0.75,10,0,0],[1,67.35678,-1.54389,2.37492]]},"Right Forearm":{"rotation":[[0,2.5,0,0],[0.25,10,0,0],[0.5,-53.3589,-6.67175,-1.67505],[0.75,-38.48317,-3.33547,-0.2353],[0.875,-26.43102,-1.24801,0.1366],[1,2.5,0,0]]},"Right Hand":{"rotation":[[0,-107.5,0,0],[0.25,-22.5,0,0],[0.5,-34.54252,1.76971,-0.35464],[0.75,-108.28873,-0.09557,0.97437],[1,-107.5,0,0]]},"Left Leg":{"rotation":[[0,17.5,0,0],[0.25,0,0,0],[0.5,-52.47528,-1.34295,0.39114],[0.75,0,0,0],[1,17.5,0,0]]},"Left Shin":{"rotation":[[0,0,0,0],[0.25,32.5,0,0],[0.5,17.5,0,0],[1,0,0,0]]},"Left Ankle":{"rotation":[[0,0,0,0],[0.25,-6.25,0,0],[0.5,-42.5,0,0],[0.75,-43.125,0,0],[1,0,0,0]]},"Left Foot":{"rotation":[[0,-47.5,0,0],[0.25,-35,0,0],[0.5,-42.91667,0,0],[0.75,-115.83333,0,0],[1,-47.5,0,0]]},"Right Leg":{"rotation":[[0,-49.98072,0.95645,-0.19009],[0.25,-2.5,0,0],[0.5,12.5,0,0],[0.75,-2.5,0,0],[1,-49.98072,0.95645,-0.19009]]},"Right Shin":{"rotation":[[0,0,0,0],[0.75,30,0,0],[1,0,0,0]]},"Right Ankle":{"rotation":[[0,0,0,0],[0.125,-54.2118,0.78056,-0.22419],[0.25,-37.5,0,0],[0.5,-35,0,0],[1,0,0,0]]},"Right Foot":{"rotation":[[0,-20,0,0],[0.25,-117.47664,-1.398,1.49714],[0.75,-22.44017,-1.36912,-1.52359],[1,-20,0,0]]}}},"water":{"loop":"loop","length":2,"bones":{"Body":{"rotation":[[0,-2.5,0,0],[0.5,2.5,0,0],[1,-2.5,0,0],[1.5,2.5,0,0],[2,-2.5,0,0]]},"Neck":{"rotation":[[0,10,0,0],[2,10,0,0]]},"Head":{"rotation":[[0,-20,0,0],[2,-20,0,0]]},"Tail":{"rotation":[[0,-35,0,0],[2,-35,0,0]]},"Left Arm":{"rotation":[[0,0,-12.5,0],[1,-12.67541,-12.34391,4.47938],[2,0,-12.5,0]]},"Left Forearm":{"rotation":[[0,31.67496,-4.57988,4.3023],[1,-4.26259,2.01824,13.82729],[2,31.67496,-4.57988,4.3023]]},"Left Hand":{"rotation":[[0,-54.25075,4.14698,-5.48044],[0.5,-22.59614,1.05166,-10.95357],[1.5,-77.77427,7.7456,-3.62177],[2,-54.25075,4.14698,-5.48044]]},"Right Arm":{"rotation":[[0,-12.49904,6.73221,-0.19394],[1,15.12353,7.24305,1.95155],[2,-12.49904,6.73221,-0.19394]]},"Right Forearm":{"rotation":[[0,-3.95105,-0.05463,-7.81284],[1,15.75801,2.14719,-4.8124],[2,-3.95105,-0.05463,-7.81284]]},"Right Hand":{"rotation":[[0,-24.12125,1.23121,11.87269],[1,-63.78019,1.97654,5.32272],[1.5,-11.79704,-0.75839,13.02224],[2,-24.12125,1.23121,11.87269]]},"Left Leg":{"rotation":[[0,17.5,0,0],[1,30,0,0],[2,17.5,0,0]]},"Left Shin":{"rotation":[[0,-35,0,0],[1.5,-10,0,0],[2,-35,0,0]]},"Left Ankle":{"rotation":[[0,0,0,0],[1,-12.5,0,0],[2,0,0,0]]},"Left Foot":{"rotation":[[0,-72.5,0,0],[0.5,-109.07027,4.36689,-9.28697],[1,-60,0,0],[1.5,-36.25,0,0],[2,-72.5,0,0]]},"Right Leg":{"rotation":[[0,7.5,0,0],[1,-2.5,0,0],[2,7.5,0,0]]},"Right Shin":{"rotation":[[0,-27.5,0,0],[2,-27.5,0,0]]},"Right Ankle":{"rotation":[[0,25,0,0],[1,0,0,0],[2,25,0,0]]},"Right Foot":{"rotation":[[0,-29.39622,-1.42741,6.27147],[1,-76.64903,3.65138,5.29775],[1.5,-123.03132,5.81578,0.93471],[2,-29.39622,-1.42741,6.27147]]}}},"waterwalk":{"loop":"loop","length":1,"bones":{"Body":{"rotation":[[0,0,0,2.5],[0.125,2.49941,-0.05452,1.24881],[0.25,0,0,0],[0.375,-2.49941,-0.05452,-1.24881],[0.5,0,0,-2.5],[0.625,2.49941,0.05452,-1.24881],[0.75,0,0,0],[0.875,-2.49941,0.05452,1.24881],[1,0,0,2.5]]},"Neck":{"rotation":[[0,-42.49294,0.32621,-0.02136]]},"Tail":{"rotation":[[0,-19.98247,0.85481,-0.15059],[1,-19.98247,0.85481,-0.15059]]},"Left Arm":{"rotation":[[0,-10,0,0],[0.25,5,0,0],[0.5,32.5,0,0],[0.75,77.5,0,0],[1,-10,0,0]]},"Left Forearm":{"rotation":[[0,2.47747,-1.25462,-0.61842],[0.25,-57.5,0,0],[0.75,7.5,0,0],[0.875,9.16667,0,0],[1,2.47747,-1.25462,-0.61842]]},"Left Hand":{"rotation":[[0,-17.5,0,0],[0.25,-87.5,0,0],[0.5,-107.5,0,0],[0.75,-80,0,0],[1,-17.5,0,0]]},"Right Arm":{"rotation":[[0,67.35678,-1.54389,2.37492],[0.25,10,0,0],[0.5,-10,0,0],[0.75,10,0,0],[1,67.35678,-1.54389,2.37492]]},"Right Forearm":{"rotation":[[0,2.5,0,0],[0.25,10,0,0],[0.5,-53.3589,-6.67175,-1.67505],[0.75,-38.48317,-3.33547,-0.2353],[0.875,-26.43102,-1.24801,0.1366],[1,2.5,0,0]]},"Right Hand":{"rotation":[[0,-107.5,0,0],[0.25,-22.5,0,0],[0.5,-34.54252,1.76971,-0.35464],[0.75,-108.28873,-0.09557,0.97437],[1,-107.5,0,0]]},"Left Leg":{"rotation":[[0,17.5,0,0],[0.25,0,0,0],[0.5,-52.47528,-1.34295,0.39114],[0.75,0,0,0],[1,17.5,0,0]]},"Left Shin":{"rotation":[[0,0,0,0],[0.25,32.5,0,0],[0.5,17.5,0,0],[1,0,0,0]]},"Left Ankle":{"rotation":[[0,0,0,0],[0.25,-6.25,0,0],[0.5,-42.5,0,0],[0.75,-43.125,0,0],[1,0,0,0]]},"Left Foot":{"rotation":[[0,-47.5,0,0],[0.25,-35,0,0],[0.5,-42.91667,0,0],[0.75,-115.83333,0,0],[1,-47.5,0,0]]},"Right Leg":{"rotation":[[0,-49.98072,0.95645,-0.19009],[0.25,-2.5,0,0],[0.5,12.5,0,0],[0.75,-2.5,0,0],[1,-49.98072,0.95645,-0.19009]]},"Right Shin":{"rotation":[[0,0,0,0],[0.75,30,0,0],[1,0,0,0]]},"Right Ankle":{"rotation":[[0,0,0,0],[0.125,-54.2118,0.78056,-0.22419],[0.25,-37.5,0,0],[0.5,-35,0,0],[1,0,0,0]]},"Right Foot":{"rotation":[[0,-20,0,0],[0.25,-117.47664,-1.398,1.49714],[0.75,-22.44017,-1.36912,-1.52359],[1,-20,0,0]]}}},"waterup":{"loop":"loop","length":1,"bones":{"Body":{"rotation":[[0,59.97637,-2.16489,1.2506],[0.125,62.49441,-1.10874,0.57726],[0.25,60,0,0],[0.375,57.49382,1.05422,-0.6717],[0.5,59.97637,2.16489,-1.2506],[0.625,62.49441,1.10874,-0.57726],[0.75,60,0,0],[0.875,57.49382,-1.05422,0.6717],[1,59.97637,-2.16489,1.2506]]},"Neck":{"rotation":[[0,-42.49294,0.32621,-0.02136]]},"Tail":{"rotation":[[0,-19.98247,0.85481,-0.15059],[1,-19.98247,0.85481,-0.15059]]},"Left Arm":{"rotation":[[0,-10,0,0],[0.25,5,0,0],[0.5,32.5,0,0],[0.75,77.5,0,0],[1,-10,0,0]]},"Left Forearm":{"rotation":[[0,2.47747,-1.25462,-0.61842],[0.25,-57.5,0,0],[0.75,7.5,0,0],[0.875,9.16667,0,0],[1,2.47747,-1.25462,-0.61842]]},"Left Hand":{"rotation":[[0,-17.5,0,0],[0.25,-87.5,0,0],[0.5,-107.5,0,0],[0.75,-80,0,0],[1,-17.5,0,0]]},"Right Arm":{"rotation":[[0,67.35678,-1.54389,2.37492],[0.25,10,0,0],[0.5,-10,0,0],[0.75,10,0,0],[1,67.35678,-1.54389,2.37492]]},"Right Forearm":{"rotation":[[0,2.5,0,0],[0.25,10,0,0],[0.5,-53.3589,-6.67175,-1.67505],[0.75,-38.48317,-3.33547,-0.2353],[0.875,-26.43102,-1.24801,0.1366],[1,2.5,0,0]]},"Right Hand":{"rotation":[[0,-107.5,0,0],[0.25,-22.5,0,0],[0.5,-34.54252,1.76971,-0.35464],[0.75,-108.28873,-0.09557,0.97437],[1,-107.5,0,0]]},"Left Leg":{"rotation":[[0,17.5,0,0],[0.25,0,0,0],[0.5,-52.47528,-1.34295,0.39114],[0.75,0,0,0],[1,17.5,0,0]]},"Left Shin":{"rotation":[[0,0,0,0],[0.25,32.5,0,0],[0.5,17.5,0,0],[1,0,0,0]]},"Left Ankle":{"rotation":[[0,0,0,0],[0.25,-6.25,0,0],[0.5,-42.5,0,0],[0.75,-43.125,0,0],[1,0,0,0]]},"Left Foot":{"rotation":[[0,-47.5,0,0],[0.25,-35,0,0],[0.5,-42.91667,0,0],[0.75,-115.83333,0,0],[1,-47.5,0,0]]},"Right Leg":{"rotation":[[0,-49.98072,0.95645,-0.19009],[0.25,-2.5,0,0],[0.5,12.5,0,0],[0.75,-2.5,0,0],[1,-49.98072,0.95645,-0.19009]]},"Right Shin":{"rotation":[[0,0,0,0],[0.75,30,0,0],[1,0,0,0]]},"Right Ankle":{"rotation":[[0,0,0,0],[0.125,-54.2118,0.78056,-0.22419],[0.25,-37.5,0,0],[0.5,-35,0,0],[1,0,0,0]]},"Right Foot":{"rotation":[[0,-20,0,0],[0.25,-117.47664,-1.398,1.49714],[0.75,-22.44017,-1.36912,-1.52359],[1,-20,0,0]]}}},"waterdown":{"loop":"loop","length":1,"bones":{"Body":{"rotation":[[0,-29.97638,1.2497,2.16541],[0.125,-27.49442,0.57715,1.1088],[0.25,-30,0,0],[0.375,-32.49382,-0.67159,-1.05429],[0.5,-29.97638,-1.2497,-2.16541],[0.625,-27.49442,-0.57715,-1.1088],[0.75,-30,0,0],[0.875,-32.49382,0.67159,1.05429],[1,-29.97638,1.2497,2.16541]]},"Neck":{"rotation":[[0,-42.49294,0.32621,-0.02136]]},"Head":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]]},"Tail":{"rotation":[[0,-19.98247,0.85481,-0.15059],[1,-19.98247,0.85481,-0.15059]]},"Left Arm":{"rotation":[[0,-10,0,0],[0.25,5,0,0],[0.5,32.5,0,0],[0.75,77.5,0,0],[1,-10,0,0]]},"Left Forearm":{"rotation":[[0,2.47747,-1.25462,-0.61842],[0.25,-57.5,0,0],[0.75,7.5,0,0],[0.875,9.16667,0,0],[1,2.47747,-1.25462,-0.61842]]},"Left Hand":{"rotation":[[0,-17.5,0,0],[0.25,-87.5,0,0],[0.5,-107.5,0,0],[0.75,-80,0,0],[1,-17.5,0,0]]},"Right Arm":{"rotation":[[0,67.35678,-1.54389,2.37492],[0.25,10,0,0],[0.5,-10,0,0],[0.75,10,0,0],[1,67.35678,-1.54389,2.37492]]},"Right Forearm":{"rotation":[[0,2.5,0,0],[0.25,10,0,0],[0.5,-53.3589,-6.67175,-1.67505],[0.75,-38.48317,-3.33547,-0.2353],[0.875,-26.43102,-1.24801,0.1366],[1,2.5,0,0]]},"Right Hand":{"rotation":[[0,-107.5,0,0],[0.25,-22.5,0,0],[0.5,-34.54252,1.76971,-0.35464],[0.75,-108.28873,-0.09557,0.97437],[1,-107.5,0,0]]},"Left Leg":{"rotation":[[0,17.5,0,0],[0.25,0,0,0],[0.5,-52.47528,-1.34295,0.39114],[0.75,0,0,0],[1,17.5,0,0]]},"Left Shin":{"rotation":[[0,0,0,0],[0.25,32.5,0,0],[0.5,17.5,0,0],[1,0,0,0]]},"Left Ankle":{"rotation":[[0,0,0,0],[0.25,-6.25,0,0],[0.5,-42.5,0,0],[0.75,-43.125,0,0],[1,0,0,0]]},"Left Foot":{"rotation":[[0,-47.5,0,0],[0.25,-35,0,0],[0.5,-42.91667,0,0],[0.75,-115.83333,0,0],[1,-47.5,0,0]]},"Right Leg":{"rotation":[[0,-49.98072,0.95645,-0.19009],[0.25,-2.5,0,0],[0.5,12.5,0,0],[0.75,-2.5,0,0],[1,-49.98072,0.95645,-0.19009]]},"Right Shin":{"rotation":[[0,0,0,0],[0.75,30,0,0],[1,0,0,0]]},"Right Ankle":{"rotation":[[0,0,0,0],[0.125,-54.2118,0.78056,-0.22419],[0.25,-37.5,0,0],[0.5,-35,0,0],[1,0,0,0]]},"Right Foot":{"rotation":[[0,-20,0,0],[0.25,-117.47664,-1.398,1.49714],[0.75,-22.44017,-1.36912,-1.52359],[1,-20,0,0]]}}},"flysprint":{"loop":"loop","length":0,"bones":{"Neck":{"rotation":[[0,-22.5,0,0]]},"Tail":{"rotation":[[0,-17.5,0,0]]},"Left Arm":{"rotation":[[0,-57.5,0,-10]]},"Left Forearm":{"rotation":[[0,82.5,0,0]]},"Left Hand":{"rotation":[[0,-117.5,0,0]]},"Right Arm":{"rotation":[[0,-52.5,0,5]]},"Right Forearm":{"rotation":[[0,65,0,0]]},"Right Hand":{"rotation":[[0,-130,0,0]]},"Left Leg":{"rotation":[[0,-57.5,0,12.5]]},"Left Shin":{"rotation":[[0,-0.98777,-2.6593,-4.09491]]},"Left Foot":{"rotation":[[0,-94.28369,17.06276,10.8628]]},"Right Leg":{"rotation":[[0,-62.5,0,-17.5]]},"Right Shin":{"rotation":[[0,-2.07039,3.42013,6.28544]]},"Right Foot":{"rotation":[[0,-93.09486,-22.45193,-18.64683]]}}},"fly":{"loop":"loop","length":1,"bones":{"Body":{"rotation":[[0,0,0,2.5],[0.125,2.49941,-0.05452,1.24881],[0.25,0,0,0],[0.375,-2.49941,-0.05452,-1.24881],[0.5,0,0,-2.5],[0.625,2.49941,0.05452,-1.24881],[0.75,0,0,0],[0.875,-2.49941,0.05452,1.24881],[1,0,0,2.5]]},"Neck":{"rotation":[[0,-12.51928,-0.95645,-0.19009]]},"Tail":{"rotation":[[0,-19.98247,0.85481,-0.15059],[1,-19.98247,0.85481,-0.15059]]},"Left Arm":{"rotation":[[0,-10,0,0],[0.25,5,0,0],[0.5,32.5,0,0],[0.75,77.5,0,0],[1,-10,0,0]]},"Left Forearm":{"rotation":[[0,2.47747,-1.25462,-0.61842],[0.25,-57.5,0,0],[0.75,7.5,0,0],[0.875,9.16667,0,0],[1,2.47747,-1.25462,-0.61842]]},"Left Hand":{"rotation":[[0,-17.5,0,0],[0.25,-87.5,0,0],[0.5,-107.5,0,0],[0.75,-80,0,0],[1,-17.5,0,0]]},"Right Arm":{"rotation":[[0,67.35678,-1.54389,2.37492],[0.25,10,0,0],[0.5,-10,0,0],[0.75,10,0,0],[1,67.35678,-1.54389,2.37492]]},"Right Forearm":{"rotation":[[0,2.5,0,0],[0.25,10,0,0],[0.5,-53.3589,-6.67175,-1.67505],[0.75,-38.48317,-3.33547,-0.2353],[0.875,-26.43102,-1.24801,0.1366],[1,2.5,0,0]]},"Right Hand":{"rotation":[[0,-107.5,0,0],[0.25,-22.5,0,0],[0.5,-34.54252,1.76971,-0.35464],[0.75,-108.28873,-0.09557,0.97437],[1,-107.5,0,0]]},"Left Leg":{"rotation":[[0,17.5,0,0],[0.25,0,0,0],[0.5,-52.47528,-1.34295,0.39114],[0.75,0,0,0],[1,17.5,0,0]]},"Left Shin":{"rotation":[[0,0,0,0],[0.25,32.5,0,0],[0.5,17.5,0,0],[1,0,0,0]]},"Left Ankle":{"rotation":[[0,0,0,0],[0.25,-6.25,0,0],[0.5,-42.5,0,0],[0.75,-43.125,0,0],[1,0,0,0]]},"Left Foot":{"rotation":[[0,-47.5,0,0],[0.25,-35,0,0],[0.5,-42.91667,0,0],[0.75,-115.83333,0,0],[1,-47.5,0,0]]},"Right Leg":{"rotation":[[0,-49.98072,0.95645,-0.19009],[0.25,-2.5,0,0],[0.5,12.5,0,0],[0.75,-2.5,0,0],[1,-49.98072,0.95645,-0.19009]]},"Right Shin":{"rotation":[[0,0,0,0],[0.75,30,0,0],[1,0,0,0]]},"Right Ankle":{"rotation":[[0,0,0,0],[0.125,-54.2118,0.78056,-0.22419],[0.25,-37.5,0,0],[0.5,-35,0,0],[1,0,0,0]]},"Right Foot":{"rotation":[[0,-20,0,0],[0.25,-117.47664,-1.398,1.49714],[0.75,-22.44017,-1.36912,-1.52359],[1,-20,0,0]]}}},"elytra":{"loop":"loop","length":0,"bones":{"Neck":{"rotation":[[0,-22.5,0,0]]},"Tail":{"rotation":[[0,-17.5,0,0]]},"Left Arm":{"rotation":[[0,-57.5,0,-10]]},"Left Forearm":{"rotation":[[0,82.5,0,0]]},"Left Hand":{"rotation":[[0,-117.5,0,0]]},"Right Arm":{"rotation":[[0,-52.5,0,5]]},"Right Forearm":{"rotation":[[0,65,0,0]]},"Right Hand":{"rotation":[[0,-130,0,0]]},"Left Leg":{"rotation":[[0,-57.5,0,12.5]]},"Left Shin":{"rotation":[[0,-0.98777,-2.6593,-4.09491]]},"Left Foot":{"rotation":[[0,-94.28369,17.06276,10.8628]]},"Right Leg":{"rotation":[[0,-62.5,0,-17.5]]},"Right Shin":{"rotation":[[0,-2.07039,3.42013,6.28544]]},"Right Foot":{"rotation":[[0,-93.09486,-22.45193,-18.64683]]}}},"elytradown":{"loop":"loop","length":0,"bones":{"Neck":{"rotation":[[0,-22.5,0,0]]},"Tail":{"rotation":[[0,-17.5,0,0]]},"Left Arm":{"rotation":[[0,-57.5,0,-10]]},"Left Forearm":{"rotation":[[0,82.5,0,0]]},"Left Hand":{"rotation":[[0,-117.5,0,0]]},"Right Arm":{"rotation":[[0,-52.5,0,5]]},"Right Forearm":{"rotation":[[0,65,0,0]]},"Right Hand":{"rotation":[[0,-130,0,0]]},"Left Leg":{"rotation":[[0,-57.5,0,12.5]]},"Left Shin":{"rotation":[[0,-0.98777,-2.6593,-4.09491]]},"Left Foot":{"rotation":[[0,-94.28369,17.06276,10.8628]]},"Right Leg":{"rotation":[[0,-62.5,0,-17.5]]},"Right Shin":{"rotation":[[0,-2.07039,3.42013,6.28544]]},"Right Foot":{"rotation":[[0,-93.09486,-22.45193,-18.64683]]}}},"trident":{"loop":"loop","length":0,"bones":{"Neck":{"rotation":[[0,-22.5,0,0]]},"Tail":{"rotation":[[0,-17.5,0,0]]},"Left Arm":{"rotation":[[0,-57.5,0,-10]]},"Left Forearm":{"rotation":[[0,82.5,0,0]]},"Left Hand":{"rotation":[[0,-117.5,0,0]]},"Right Arm":{"rotation":[[0,-52.5,0,5]]},"Right Forearm":{"rotation":[[0,65,0,0]]},"Right Hand":{"rotation":[[0,-130,0,0]]},"Left Leg":{"rotation":[[0,-57.5,0,12.5]]},"Left Shin":{"rotation":[[0,-0.98777,-2.6593,-4.09491]]},"Left Foot":{"rotation":[[0,-94.28369,17.06276,10.8628]]},"Right Leg":{"rotation":[[0,-62.5,0,-17.5]]},"Right Shin":{"rotation":[[0,-2.07039,3.42013,6.28544]]},"Right Foot":{"rotation":[[0,-93.09486,-22.45193,-18.64683]]}}},"sit":{"loop":"loop","length":0,"bones":{"Body":{"rotation":[[0,60,0,0]],"position":[[0,0,3,0]]},"Neck":{"rotation":[[0,-25,0,0]]},"Head":{"rotation":[[0,-45,0,0]]},"Tail":{"rotation":[[0,-87.5,0,0]]},"Left Arm":{"rotation":[[0,0.09468,-4.32875,-2.50477]]},"Left Forearm":{"rotation":[[0,-62.5,0,0]]},"Left Hand":{"rotation":[[0,-0.4216,-10.30881,7.09454]]},"Right Arm":{"rotation":[[0,0.21362,6.49053,3.76613]]},"Right Forearm":{"rotation":[[0,-62.5,0,0]]},"Right Hand":{"rotation":[[0,0.34228,7.70258,-4.64611]]},"Left Leg":{"rotation":[[0,49.81767,-11.8798,2.12698]]},"Left Shin":{"rotation":[[0,-46.46833,9.59278,1.13311]]},"Left Ankle":{"rotation":[[0,27.05638,-4.13439,-3.92131]]},"Left Foot":{"rotation":[[0,-84.21927,-4.27178,-3.056]]},"Right Leg":{"rotation":[[0,49.76228,12.3071,-2.20462]]},"Right Shin":{"rotation":[[0,-51.33772,-10.95535,-0.83225]]},"Right Ankle":{"rotation":[[0,34.46234,5.07186,5.48248]]},"Right Foot":{"rotation":[[0,-92.47818,10.23566,3.17696]]}}},"holdL":{"loop":"loop","length":0,"bones":{"Left Arm":{"rotation":[[0,10.23772,12.3071,2.20462]]},"Left Forearm":{"rotation":[[0,36.69146,-16.27014,-11.79198]]},"Left Hand":{"rotation":[[0,-170.67461,-61.06723,70.15344]]},"LeftItemPivot":{"rotation":[[0,60.16544,-11.07703,22.27053]]}}},"mineR":{"loop":"once","length":0.25,"bones":{"Body":{"rotation":[[0,0,0,0],[0.08333,0,0,0],[0.16667,-2.5,0,0],[0.25,0,0,0]]},"Neck":{"rotation":[[0,10,0,0],[0.16667,-25,0,0],[0.25,-30,0,0]]},"Head":{"rotation":[[0,-20,0,0],[0.08333,2.5,0,0],[0.16667,5,0,0],[0.25,-19.74547,-1.05455,1.21493]]}}},"attackR":{"loop":"once","length":0.25,"bones":{"Body":{"rotation":[[0,0,5,0],[0.08333,0,0,0],[0.16667,-2.5,0,0],[0.25,0,0,0]]},"Neck":{"rotation":[[0,25,0,10],[0.16667,-25,0,0],[0.25,-30,-10,-7.5]]},"Head":{"rotation":[[0,-20,0,0],[0.08333,2.5,0,0],[0.16667,5,0,0],[0.25,-19.74547,-1.05455,1.21493]]}}},"mineL":{"loop":"once","length":0.25,"bones":{"Body":{"rotation":[[0,0,0,0],[0.08333,0,0,0],[0.16667,0,2.5,0],[0.25,0,0,0]]},"Left Arm":{"rotation":[[0,4.62111,-1.91134,22.42287],[0.16667,65.85133,-20.70481,9.00717]]},"Left Forearm":{"rotation":[[0,30.48005,-11.86554,-3.24344],[0.16667,-29.0902,-18.56298,-19.74195],[0.25,-29.06212,-17.60671,-22.06042]]},"Left Hand":{"rotation":[[0,7.0671,-17.36957,-26.64322],[0.08333,23.88367,3.67065,-27.35393],[0.16667,-33.74465,-7.09112,-38.97303],[0.25,-38.90658,-9.35682,-38.10629]]}}},"attackL":{"loop":"once","length":0.25,"bones":{"Body":{"rotation":[[0,0,-2.5,0],[0.08333,0,0,0],[0.16667,0,2.5,0],[0.25,0,0,0]]},"Neck":{"rotation":[[0,0,0,0],[0.08333,12.71515,2.50106,10.20127]]},"Head":{"rotation":[[0,0,0,0],[0.25,-23.09304,-8.56972,-10.17]]},"Left Arm":{"rotation":[[0,4.62111,-1.91134,47.42287],[0.08333,35.23622,-11.30808,48.21502],[0.16667,65.85133,-20.70481,9.00717],[0.25,90,-22.5,0]]},"Left Forearm":{"rotation":[[0,30.48005,-11.86554,-3.24344],[0.16667,-29.0902,-18.56298,-19.74195],[0.25,-29.06212,-17.60671,-22.06042]]},"Left Hand":{"rotation":[[0,7.0671,-17.36957,-26.64322],[0.08333,23.88367,3.67065,-27.35393],[0.16667,-33.74465,-7.09112,-38.97303],[0.25,-38.90658,-9.35682,-38.10629]]}}},"blockL":{"loop":"loop","length":0,"bones":{"Neck":{"rotation":[[0,27.5,0,17.5]],"position":[[0,0,0,2]]},"Head":{"rotation":[[0,-39.20419,-0.80459,1.89252]]},"Left Arm":{"rotation":[[0,75.34007,3.21132,29.58681]]},"Left Forearm":{"rotation":[[0,36.69146,-16.27014,-11.79198]]},"Left Hand":{"rotation":[[0,-180.06777,-68.2379,55.02553]],"position":[[0,-0.34267,-1.87235,0.61391]]},"LeftItemPivot":{"rotation":[[0,24.43244,9.18293,-24.28938]],"position":[[0,0.32547,0.20788,-1.53899]]}}},"blockR":{"loop":"loop","length":0,"bones":{"Neck":{"rotation":[[0,37.5,0,0]],"position":[[0,0,0,2]]},"Head":{"rotation":[[0,-42.5,0,0]]},"RightItemPivot":{"rotation":[[0,89.22541,-51.10079,40.50749]],"position":[[0,-1,1.17051,-1.90523]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/beardie.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/beardie.geo.json new file mode 100644 index 0000000..dd62418 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/beardie.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.beardie","texture_width":832,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"Body","pivot":[0,15,2],"cubes":[{"origin":[-4,0,-3],"size":[7,8,4.2],"pivot":[-0.3,4,-2],"rotation":[81.98163,-0.47274,3.1072],"uv":{"north":{"uv":[12,11],"uv_size":[7,8]},"east":{"uv":[8,11],"uv_size":[4,8]},"south":{"uv":[23,11],"uv_size":[7,8]},"west":{"uv":[19,11],"uv_size":[4,8]},"up":{"uv":[19,11],"uv_size":[-7,-4]},"down":{"uv":[26,7],"uv_size":[-7,4]}}},{"origin":[-3.9,3,1],"size":[7,8,4],"pivot":[-0.5,7,5],"rotation":[90.06884,1.21389,0.94821],"uv":{"north":{"uv":[9,30],"uv_size":[7,8]},"east":{"uv":[5,30],"uv_size":[4,8]},"south":{"uv":[20,30],"uv_size":[7,8]},"west":{"uv":[16,30],"uv_size":[4,8]},"up":{"uv":[16,30],"uv_size":[-7,-4]},"down":{"uv":[23,26],"uv_size":[-7,4]}}}]},{"name":"Neck","pivot":[0,16,-6],"parent":"Body","cubes":[{"origin":[-2.5,5,-11],"size":[5,6,4],"pivot":[-1,9,-7],"rotation":[60,0,0],"uv":{"north":{"uv":[44,8],"uv_size":[5,6]},"east":{"uv":[40,8],"uv_size":[4,6]},"south":{"uv":[53,8],"uv_size":[5,6]},"west":{"uv":[49,8],"uv_size":[4,6]},"up":{"uv":[49,8],"uv_size":[-5,-4]},"down":{"uv":[54,4],"uv_size":[-5,4]}}}]},{"name":"Head","pivot":[0,9,-10],"parent":"Neck","rotation":[-7.5,0,0],"cubes":[{"origin":[-2.35,8,-14],"size":[4.7,2.7,3.7],"uv":{"north":{"uv":[252,12],"uv_size":[16,8]},"east":{"uv":[240,12],"uv_size":[12,8]},"south":{"uv":[280,12],"uv_size":[16,8]},"west":{"uv":[268,12],"uv_size":[12,8]},"up":{"uv":[268,12],"uv_size":[-16,-12]},"down":{"uv":[284,0],"uv_size":[-16,12]}}}]},{"name":"RightItemPivot","pivot":[1,8,-14],"parent":"Head","rotation":[15,0,-15]},{"name":"Tail","pivot":[0,4,8],"parent":"Body","rotation":[22.5,0,0],"cubes":[{"origin":[-2.5,0,18],"size":[5,4,3],"pivot":[-0.5,-1,14],"rotation":[90,0,0],"uv":{"north":{"uv":[14,65],"uv_size":[5,4]},"east":{"uv":[11,65],"uv_size":[3,4]},"south":{"uv":[22,65],"uv_size":[5,4]},"west":{"uv":[19,65],"uv_size":[3,4]},"up":{"uv":[19,65],"uv_size":[-5,-3]},"down":{"uv":[24,62],"uv_size":[-5,3]}}}]},{"name":"Left Arm","pivot":[-3,9,-6],"parent":"Body","cubes":[{"origin":[-5,2.9,-7],"size":[2,2.1,5],"pivot":[-4,4,-2],"rotation":[-20,0,0],"uv":{"north":{"uv":[40,44],"uv_size":[2,2]},"east":{"uv":[35,44],"uv_size":[5,2]},"south":{"uv":[47,44],"uv_size":[2,2]},"west":{"uv":[42,44],"uv_size":[5,2]},"up":{"uv":[42,44],"uv_size":[-2,-5]},"down":{"uv":[44,39],"uv_size":[-2,5]}}}]},{"name":"Left Forearm","pivot":[-5,6,-4],"parent":"Left Arm","cubes":[{"origin":[-6.5,-0.1,-7],"size":[2,5.1,2],"pivot":[-5.5,-2,-6],"rotation":[-19.71975,3.40487,9.40804],"uv":{"north":{"uv":[4,53],"uv_size":[2,5]},"east":{"uv":[2,53],"uv_size":[2,5]},"south":{"uv":[8,53],"uv_size":[2,5]},"west":{"uv":[6,53],"uv_size":[2,5]},"up":{"uv":[6,53],"uv_size":[-2,-2]},"down":{"uv":[8,51],"uv_size":[-2,2]}}}]},{"name":"Left Hand","pivot":[-5,1,-5],"parent":"Left Forearm","cubes":[{"origin":[-7,0,-9],"size":[4,0.2,4],"uv":{"north":{"uv":[29,66],"uv_size":[4,0]},"east":{"uv":[25,66],"uv_size":[4,0]},"south":{"uv":[37,66],"uv_size":[4,0]},"west":{"uv":[33,66],"uv_size":[4,0]},"up":{"uv":[33,66],"uv_size":[-4,-4]},"down":{"uv":[37,62],"uv_size":[-4,4]}}}]},{"name":"LeftItemPivot","pivot":[-5,-1,-6],"parent":"Left Hand","rotation":[-37.26251,-4.55749,84.03725]},{"name":"Right Arm","pivot":[4,8,-6],"parent":"Body","cubes":[{"origin":[2,2.9,-7],"size":[2,2.1,5],"pivot":[4,4,-2],"rotation":[-20,0,0],"uv":{"north":{"uv":[9,46],"uv_size":[2,2]},"east":{"uv":[4,46],"uv_size":[5,2]},"south":{"uv":[16,46],"uv_size":[2,2]},"west":{"uv":[11,46],"uv_size":[5,2]},"up":{"uv":[11,46],"uv_size":[-2,-5]},"down":{"uv":[13,41],"uv_size":[-2,5]}}}]},{"name":"Right Forearm","pivot":[5,5,-4],"parent":"Right Arm","cubes":[{"origin":[3.5,-0.1,-7],"size":[2,5.1,2],"pivot":[5.5,-3,-6],"rotation":[-19.8423,-2.55868,-7.05239],"uv":{"north":{"uv":[58,40],"uv_size":[2,5]},"east":{"uv":[56,40],"uv_size":[2,5]},"south":{"uv":[62,40],"uv_size":[2,5]},"west":{"uv":[60,40],"uv_size":[2,5]},"up":{"uv":[60,40],"uv_size":[-2,-2]},"down":{"uv":[62,38],"uv_size":[-2,2]}}}]},{"name":"Right Hand","pivot":[5,-1,-5],"parent":"Right Forearm","cubes":[{"origin":[2,0,-8],"size":[4,0,4],"uv":{"north":{"uv":[69,4],"uv_size":[4,0]},"east":{"uv":[65,4],"uv_size":[4,0]},"south":{"uv":[77,4],"uv_size":[4,0]},"west":{"uv":[73,4],"uv_size":[4,0]},"up":{"uv":[73,4],"uv_size":[-4,-4]},"down":{"uv":[77,0],"uv_size":[-4,4]}}}]},{"name":"Left Leg","pivot":[-1.9,6,8],"parent":"Body","cubes":[{"origin":[-5.5,4,8],"size":[2,4,2],"pivot":[-5.5,7,6],"rotation":[-35.79355,12.0174,16.10644],"uv":{"north":{"uv":[28,53],"uv_size":[2,4]},"east":{"uv":[26,53],"uv_size":[2,4]},"south":{"uv":[32,53],"uv_size":[2,4]},"west":{"uv":[30,53],"uv_size":[2,4]},"up":{"uv":[30,53],"uv_size":[-2,-2]},"down":{"uv":[32,51],"uv_size":[-2,2]}}}]},{"name":"Left Shin","pivot":[-4,6,8],"parent":"Left Leg","cubes":[{"origin":[-6,2,6],"size":[1,2,4],"pivot":[-6,2,7],"rotation":[-42.5,0,0],"uv":{"north":{"uv":[61,56],"uv_size":[1,2]},"east":{"uv":[57,56],"uv_size":[4,2]},"south":{"uv":[66,56],"uv_size":[1,2]},"west":{"uv":[62,56],"uv_size":[4,2]},"up":{"uv":[62,56],"uv_size":[-1,-4]},"down":{"uv":[63,52],"uv_size":[-1,4]}}}]},{"name":"Left Ankle","pivot":[-4,4,11],"parent":"Left Shin","cubes":[{"origin":[-6.5,1,7],"size":[2,2,2],"pivot":[-6.5,1,8],"rotation":[-32.5,0,0],"uv":{"north":{"uv":[44,65],"uv_size":[2,2]},"east":{"uv":[42,65],"uv_size":[2,2]},"south":{"uv":[48,65],"uv_size":[2,2]},"west":{"uv":[46,65],"uv_size":[2,2]},"up":{"uv":[46,65],"uv_size":[-2,-2]},"down":{"uv":[48,63],"uv_size":[-2,2]}}}]},{"name":"Left Foot","pivot":[-5,0,9],"parent":"Left Ankle","rotation":[0,25,0],"cubes":[{"origin":[-7,0,5],"size":[3,1,4.5],"uv":{"north":{"uv":[69,10],"uv_size":[3,1]},"east":{"uv":[65,10],"uv_size":[4,1]},"south":{"uv":[76,10],"uv_size":[3,1]},"west":{"uv":[72,10],"uv_size":[4,1]},"up":{"uv":[72,10],"uv_size":[-3,-4]},"down":{"uv":[75,6],"uv_size":[-3,4]}}}]},{"name":"Right Leg","pivot":[1.9,6,7],"parent":"Body","cubes":[{"origin":[2.5,4,7],"size":[2,4,2],"pivot":[5.5,7,5],"rotation":[-32.36627,12.19484,-10.357],"uv":{"north":{"uv":[44,53],"uv_size":[2,4]},"east":{"uv":[42,53],"uv_size":[2,4]},"south":{"uv":[48,53],"uv_size":[2,4]},"west":{"uv":[46,53],"uv_size":[2,4]},"up":{"uv":[46,53],"uv_size":[-2,-2]},"down":{"uv":[48,51],"uv_size":[-2,2]}}}]},{"name":"Right Shin","pivot":[4,6,7],"parent":"Right Leg","cubes":[{"origin":[4,3,5],"size":[1,2,4],"pivot":[6,3,6],"rotation":[-50,0,0],"uv":{"north":{"uv":[61,65],"uv_size":[1,2]},"east":{"uv":[57,65],"uv_size":[4,2]},"south":{"uv":[66,65],"uv_size":[1,2]},"west":{"uv":[62,65],"uv_size":[4,2]},"up":{"uv":[62,65],"uv_size":[-1,-4]},"down":{"uv":[63,61],"uv_size":[-1,4]}}}]},{"name":"Right Ankle","pivot":[4,4,10],"parent":"Right Shin","cubes":[{"origin":[3.5,0,6],"size":[2,3,2],"pivot":[6.5,0,7],"rotation":[-25,0,0],"uv":{"north":{"uv":[4,66],"uv_size":[2,3]},"east":{"uv":[2,66],"uv_size":[2,3]},"south":{"uv":[8,66],"uv_size":[2,3]},"west":{"uv":[6,66],"uv_size":[2,3]},"up":{"uv":[6,66],"uv_size":[-2,-2]},"down":{"uv":[8,64],"uv_size":[-2,2]}}}]},{"name":"Right Foot","pivot":[5,0,9],"parent":"Right Ankle","rotation":[0,-40,0],"cubes":[{"origin":[3,0,5],"size":[3,1,4.5],"uv":{"north":{"uv":[69,16],"uv_size":[3,1]},"east":{"uv":[65,16],"uv_size":[4,1]},"south":{"uv":[76,16],"uv_size":[3,1]},"west":{"uv":[72,16],"uv_size":[4,1]},"up":{"uv":[72,16],"uv_size":[-3,-4]},"down":{"uv":[75,12],"uv_size":[-3,4]}}}]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/cotton.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/cotton.anim.json new file mode 100644 index 0000000..4881964 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/cotton.anim.json @@ -0,0 +1 @@ +{"autoplay":["idle_1","idle_2","idle_3","idle_4"],"clips":{"idle_1":{"loop":"loop","length":4,"bones":{"head":{"rotation":[[0,0,0,2.5],[1,0,0,0],[2,0,0,-2.5],[3,0,0,0],[4,0,0,2.5]]},"front_hair":{"rotation":[[0,0,0,-2.5],[1,0,0,0],[2,0,0,2.5],[3,0,0,0],[4,0,0,-2.5]]}}},"idle_2":{"loop":"loop","length":2,"bones":{"head":{"rotation":[[0,0,0,0],[0.48,2.5,0,0],[1,0,0,0],[1.52,2.5,0,0],[2,0,0,0]]},"body":{"rotation":[[0,0,2.5,0],[0.48,2.5,0.1,0],[1,0,-2.5,0],[1.52,2.5,0.1,0],[2,0,2.5,0]]},"front_hair":{"rotation":[[0,0,0,0],[0.48,-2.5,0,0],[0.96,2.5,0,0],[1.48,-2.5,0,0],[2,0,0,0]]}}},"idle_3":{"loop":"loop","length":2,"bones":{"e1":{"rotation":[[0,0,0,0],[0.16,-12.5,0,0],[0.32,-7.17,0.13,-0.72],[0.52,-7.5,0,0],[1.68,14.70409,-2.05609,11.50378],[2,0,0,0]],"scale":[[0,0.975,1.025,1],[1,1.025,0.975,1],[2,0.975,1.025,1]]},"e2":{"rotation":[[0,0,0,0],[0.16,-12.5,0,0],[0.32,-7.17,-0.13,0.72],[0.52,-7.5,0,0],[1.68,14.70409,2.05609,-11.50378],[2,0,0,0]],"scale":[[0,0.975,1.025,1],[1,1.025,0.975,1],[2,0.975,1.025,1]]},"tail":{"rotation":[[0,0,7.5,0],[1,0,-7.5,0],[2,0,7.5,0]]}}},"idle_4":{"loop":"loop","length":1,"bones":{"front_hair":{"rotation":[[0,0,0,-2.5],[0.52,0,0,2.5],[1,0,0,-2.5]]},"lf_hair":{"rotation":[[0,0,0,5],[0.52,0,0,0],[1,0,0,5]]},"rf_hair":{"rotation":[[0,0,0,0],[0.52,0,0,-5],[1,0,0,0]]},"wingl":{"rotation":[[0,0,0,0],[0.52,5.73126,-3.33806,7.93745],[1,0,0,0]]},"wingr":{"rotation":[[0,0,0,0],[0.52,5.73126,3.33806,-7.93745],[1,0,0,0]]}}},"blink":{"loop":"once","length":1.52,"bones":{"head":{"scale":[[0,1,1,1],[0.44,1.005,0.97,1],[0.72,1.005,0.97,1],[1.52,1,1,1]]},"lashes":{"position":[[0,0,0,0],[0.12,0,-0.25,0],[0.4,0,-1,0],[0.56,0,-1,0],[0.76,0,-1,0],[1.52,0,0,0]]},"blink":{"position":[[0,0,0,0],[0.28,0,0,-1],[1.08,0,0,-1],[1.52,0,0,0]]}}},"crouching":{"loop":"loop","length":0,"bones":{"head":{"rotation":[[0,-12.5,0,0]],"position":[[0,0,-3.7634,0.87761]]},"whole":{"position":[[0,0,0,0]]},"body":{"position":[[0,0,1,0]]},"RightArm":{"position":[[0,0,-1,2.5]]},"torsorot":{"position":[[0,0,0,-1.5]]},"skirt":{"rotation":[[0,17.5,0,0]],"position":[[0,0,0,-0.5]]},"e1":{"rotation":[[0,-20,-25,-77.5]],"position":[[0,-1,0.21644,-0.9763]]},"e2":{"rotation":[[0,-20,25,77.5]],"position":[[0,1,0.21644,-0.9763]]},"LeftArm":{"position":[[0,0,-1,2.5]]}}},"crouchingwalking":{"loop":"loop","length":0,"bones":{"head":{"rotation":[[0,-12.5,0,0]],"position":[[0,0,-3.7634,0.87761]]},"whole":{"position":[[0,0,0,0]]},"body":{"position":[[0,0,1,0]]},"RightArm":{"position":[[0,0,-1,2.5]]},"torsorot":{"position":[[0,0,0,-1.5]]},"skirt":{"rotation":[[0,17.5,0,0]],"position":[[0,0,-0.22553,0.21529]]},"e1":{"rotation":[[0,-20,-25,-77.5]],"position":[[0,-1,0.21644,-0.9763]]},"e2":{"rotation":[[0,-20,25,77.5]],"position":[[0,1,0.21644,-0.9763]]},"LeftArm":{"position":[[0,0,-1,2.5]]}}},"swimming":{"loop":"loop","length":0,"bones":{"RightArm":{"rotation":[[0,40,0,20]]},"LeftArm":{"rotation":[[0,40,0,20]]}}},"smile":{"loop":"loop","length":0.48,"bones":{"tail":{"rotation":[[0,0,25,22.5],[0.12,0,0,0],[0.24,0,-25,-22.5],[0.36,0,0,0],[0.48,0,25,22.5]]},"head":{"rotation":[[0,5,0,10]]},"lashes":{"position":[[0,0,-0.75024,-0.0109]]},"blink":{"position":[[0,0,0,-1]]},"front_hair":{"rotation":[[0,0,0,-2.5]]},"lf_hair":{"rotation":[[0,0,0,-7.5]]},"rf_hair":{"rotation":[[0,0,0,-12.5]]}}},"sit":{"loop":"loop","length":0,"bones":{"whole":{"rotation":[[0,7.5,0,0]],"position":[[0,0,-8.75,0]]},"head":{"rotation":[[0,-10,0,0]]},"LeftLeg":{"rotation":[[0,78.75686,-27.0478,5.16524]]},"RightLeg":{"rotation":[[0,78.75686,27.0478,-5.16524]]},"arm":{"rotation":[[0,32.83762,-6.5547,44.10129]],"position":[[0,0.5,-1.25,0]]},"arm_2":{"rotation":[[0,32.83762,6.5547,-44.10129]],"position":[[0,-0.5,-1.25,0]]}}},"elytra":{"loop":"loop","length":1.28,"bones":{"wingl":{"rotation":[[0,0,0,0],[0.28,-3.9671,-14.4775,15.5041],[0.64,0,0,0],[0.96,0,0,0],[1.12,-3.9671,-14.4775,15.5041],[1.28,0,0,0]]},"iris":{"position":[[0,0,-0.5,0]]},"iris2":{"position":[[0,0,-0.5,0]]},"wingr":{"rotation":[[0,0,0,0],[0.28,-3.9671,14.4775,-15.5041],[0.64,0,0,0],[0.96,0,0,0],[1.12,-3.9671,14.4775,-15.5041],[1.28,0,0,0]]}}},"jumpingup":{"loop":"loop","length":0,"bones":{"whole":{"position":[[0,0,2,0]],"scale":[[0,1,1,1]]}}},"hide_items":{"loop":"loop","length":0,"bones":{"RightItemPivot":{"scale":[[0,0,0,0]]},"LeftItemPivot":{"scale":[[0,0,0,0]]}}},"jumpingdown":{"loop":"loop","length":0,"bones":{"whole":{"position":[[0,0,0,0]],"scale":[[0,0.95,1.05,1]]},"rabbit":{"position":[[0,0,2,0]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/cotton.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/cotton.geo.json new file mode 100644 index 0000000..7023c41 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/cotton.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.cotton","texture_width":192,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"whole","pivot":[0,0,0]},{"name":"body","pivot":[0,10,0],"parent":"whole"},{"name":"torsorot","pivot":[0,10,0],"parent":"body"},{"name":"RightArm","pivot":[2.74528,18.30617,0],"parent":"torsorot"},{"name":"RightItemPivot","pivot":[5.05955,11.31002,-1],"parent":"RightArm"},{"name":"arm","pivot":[3.03365,18.84908,0.25],"parent":"RightArm","rotation":[0,0,5],"cubes":[{"origin":[0.80955,14.194,-1.25],"size":[2.75,6,3],"pivot":[3.80955,20.31002,0.25],"rotation":[0,0,-25],"uv":{"north":{"uv":[34.9,32.1],"uv_size":[-2.8,5.8]},"east":{"uv":[66.9,32.1],"uv_size":[-2.8,5.8]},"south":{"uv":[63.9,32.1],"uv_size":[-2.8,5.8]},"west":{"uv":[37.9,32.1],"uv_size":[-2.8,5.8]},"up":{"uv":[72.1,46.9],"uv_size":[2.8,-2.8]},"down":{"uv":[76.1,42.1],"uv_size":[2.8,2.8]}}},{"origin":[0.80955,14.194,-1.25],"size":[2.75,6,3],"pivot":[3.80955,20.31002,0.25],"rotation":[0,0,-25],"inflate":0.25,"uv":{"north":{"uv":[43.968,40.032],"uv_size":[-2.936,5.936]},"east":{"uv":[49.968,40.032],"uv_size":[-2.936,5.936]},"south":{"uv":[74.968,12.032],"uv_size":[-2.936,5.936]},"west":{"uv":[46.968,40.032],"uv_size":[-2.936,5.936]},"up":{"uv":[62.032,40.968],"uv_size":[2.936,-2.936]},"down":{"uv":[72.032,18.032],"uv_size":[2.936,2.936]}}},{"origin":[2.28372,12.92349,-1.25],"size":[2.75,6,3],"pivot":[3.65872,15.92349,0.25],"rotation":[0,0,-37.5],"inflate":0.5,"uv":{"north":{"uv":[34.9,38.1],"uv_size":[-2.8,5.8]},"east":{"uv":[60.9,52.1],"uv_size":[-2.8,5.8]},"south":{"uv":[49.9,52.1],"uv_size":[-2.8,5.8]},"west":{"uv":[60.9,46.1],"uv_size":[-2.8,5.8]},"up":{"uv":[55.1,40.9],"uv_size":[2.8,-2.8]},"down":{"uv":[51.1,41.1],"uv_size":[2.8,2.8]}}},{"origin":[0.80955,10.194,-1.25],"size":[2.75,4,3],"pivot":[3.80955,20.31002,0.25],"rotation":[0,0,-25],"uv":{"north":{"uv":[63.9,42.1],"uv_size":[-2.8,3.8]},"east":{"uv":[77.9,7.1],"uv_size":[-2.8,3.8]},"south":{"uv":[77.9,0.1],"uv_size":[-2.8,3.8]},"west":{"uv":[76.9,30.1],"uv_size":[-2.8,3.8]},"up":{"uv":[32.1,47.9],"uv_size":[2.8,-2.8]},"down":{"uv":[77.1,19.1],"uv_size":[2.8,2.8]}}},{"origin":[4.38007,10.32048,-1.25],"size":[2.75,4,3],"pivot":[5.88007,12.32048,0.25],"rotation":[0,0,-12.5],"inflate":0.51,"uv":{"north":{"uv":[75.9,36.1],"uv_size":[-2.8,3.8]},"east":{"uv":[66.9,52.1],"uv_size":[-2.8,3.8]},"south":{"uv":[63.9,52.1],"uv_size":[-2.8,3.8]},"west":{"uv":[54.9,45.1],"uv_size":[-2.8,3.8]},"up":{"uv":[74.1,6.9],"uv_size":[2.8,-2.8]},"down":{"uv":[38.1,44.1],"uv_size":[2.8,2.8]}}},{"origin":[5.28365,15.99908,-1.25],"size":[3,0,3],"pivot":[6.53365,16.09908,0.25],"rotation":[0,0,37.5],"uv":{"north":{"uv":[34.968,0.032],"uv_size":[-2.936,0]},"east":{"uv":[34.968,0.032],"uv_size":[-2.936,0]},"south":{"uv":[34.968,0.032],"uv_size":[-2.936,0]},"west":{"uv":[34.968,0.032],"uv_size":[-2.936,0]},"up":{"uv":[69.032,42.968],"uv_size":[2.936,-2.936]},"down":{"uv":[72.032,40.032],"uv_size":[2.936,2.936]}}}]},{"name":"LeftArm","pivot":[-2.74528,18.30617,0],"parent":"torsorot"},{"name":"LeftItemPivot","pivot":[-5.05955,11.31002,-1],"parent":"LeftArm"},{"name":"arm_2","pivot":[-3.03365,18.84908,0.25],"parent":"LeftArm","rotation":[0,0,-5],"cubes":[{"origin":[-3.55955,14.194,-1.25],"size":[2.75,6,3],"pivot":[-3.80955,20.31002,0.25],"rotation":[0,0,25],"uv":{"north":{"uv":[32.1,32.1],"uv_size":[2.8,5.8]},"east":{"uv":[35.1,32.1],"uv_size":[2.8,5.8]},"south":{"uv":[61.1,32.1],"uv_size":[2.8,5.8]},"west":{"uv":[64.1,32.1],"uv_size":[2.8,5.8]},"up":{"uv":[74.9,46.9],"uv_size":[-2.8,-2.8]},"down":{"uv":[78.9,42.1],"uv_size":[-2.8,2.8]}}},{"origin":[-3.55955,14.194,-1.25],"size":[2.75,6,3],"pivot":[-3.80955,20.31002,0.25],"rotation":[0,0,25],"inflate":0.25,"uv":{"north":{"uv":[41.032,40.032],"uv_size":[2.936,5.936]},"east":{"uv":[44.032,40.032],"uv_size":[2.936,5.936]},"south":{"uv":[72.032,12.032],"uv_size":[2.936,5.936]},"west":{"uv":[47.032,40.032],"uv_size":[2.936,5.936]},"up":{"uv":[64.968,40.968],"uv_size":[-2.936,-2.936]},"down":{"uv":[74.968,18.032],"uv_size":[-2.936,2.936]}}},{"origin":[-5.03372,12.92349,-1.25],"size":[2.75,6,3],"pivot":[-3.65872,15.92349,0.25],"rotation":[0,0,37.5],"inflate":0.5,"uv":{"north":{"uv":[32.1,38.1],"uv_size":[2.8,5.8]},"east":{"uv":[58.1,46.1],"uv_size":[2.8,5.8]},"south":{"uv":[47.1,52.1],"uv_size":[2.8,5.8]},"west":{"uv":[58.1,52.1],"uv_size":[2.8,5.8]},"up":{"uv":[57.9,40.9],"uv_size":[-2.8,-2.8]},"down":{"uv":[53.9,41.1],"uv_size":[-2.8,2.8]}}},{"origin":[-3.55955,10.194,-1.25],"size":[2.75,4,3],"pivot":[-3.80955,20.31002,0.25],"rotation":[0,0,25],"uv":{"north":{"uv":[61.1,42.1],"uv_size":[2.8,3.8]},"east":{"uv":[74.1,30.1],"uv_size":[2.8,3.8]},"south":{"uv":[75.1,0.1],"uv_size":[2.8,3.8]},"west":{"uv":[75.1,7.1],"uv_size":[2.8,3.8]},"up":{"uv":[34.9,47.9],"uv_size":[-2.8,-2.8]},"down":{"uv":[79.9,19.1],"uv_size":[-2.8,2.8]}}},{"origin":[-7.13007,10.32048,-1.25],"size":[2.75,4,3],"pivot":[-5.88007,12.32048,0.25],"rotation":[0,0,12.5],"inflate":0.51,"uv":{"north":{"uv":[73.1,36.1],"uv_size":[2.8,3.8]},"east":{"uv":[52.1,45.1],"uv_size":[2.8,3.8]},"south":{"uv":[61.1,52.1],"uv_size":[2.8,3.8]},"west":{"uv":[64.1,52.1],"uv_size":[2.8,3.8]},"up":{"uv":[76.9,6.9],"uv_size":[-2.8,-2.8]},"down":{"uv":[40.9,44.1],"uv_size":[-2.8,2.8]}}},{"origin":[-8.28365,15.99908,-1.25],"size":[3,0,3],"pivot":[-6.53365,16.09908,0.25],"rotation":[0,0,-37.5],"uv":{"north":{"uv":[32.032,0.032],"uv_size":[2.936,0]},"east":{"uv":[32.032,0.032],"uv_size":[2.936,0]},"south":{"uv":[32.032,0.032],"uv_size":[2.936,0]},"west":{"uv":[32.032,0.032],"uv_size":[2.936,0]},"up":{"uv":[71.968,42.968],"uv_size":[-2.936,-2.936]},"down":{"uv":[74.968,40.032],"uv_size":[-2.936,2.936]}}}]},{"name":"Body","pivot":[0,22,0],"parent":"torsorot","cubes":[{"origin":[-1.25,20,-2],"size":[2.5,2,3.5],"uv":{"north":{"uv":[79.1,34.1],"uv_size":[2.8,1.8]},"east":{"uv":[77.1,30.1],"uv_size":[3.8,1.8]},"south":{"uv":[68.1,47.1],"uv_size":[2.8,1.8]},"west":{"uv":[77.1,32.1],"uv_size":[3.8,1.8]},"up":{"uv":[74.9,3.9],"uv_size":[-2.8,-3.8]},"down":{"uv":[40.9,40.1],"uv_size":[-2.8,3.8]}}},{"origin":[-2.75,12,-2],"size":[5.5,4,4],"uv":{"north":{"uv":[61.1,24.1],"uv_size":[5.8,3.8]},"east":{"uv":[38.1,36.1],"uv_size":[3.8,3.8]},"south":{"uv":[61.1,28.1],"uv_size":[5.8,3.8]},"west":{"uv":[68.1,8.1],"uv_size":[3.8,3.8]},"up":{"uv":[67.9,11.9],"uv_size":[-5.8,-3.8]},"down":{"uv":[67.9,12.1],"uv_size":[-5.8,3.8]}}},{"origin":[-3.15,11.49524,-1.7819],"size":[2.5,3,3.75],"pivot":[-1.9,12.99524,-0.2819],"rotation":[0,0,22.5],"inflate":-0.01,"uv":{"north":{"uv":[76.1,36.1],"uv_size":[2.8,2.8]},"east":{"uv":[54.1,42.1],"uv_size":[3.8,2.8]},"south":{"uv":[76.1,39.1],"uv_size":[2.8,2.8]},"west":{"uv":[74.1,23.1],"uv_size":[3.8,2.8]},"up":{"uv":[60.9,45.9],"uv_size":[-2.8,-3.8]},"down":{"uv":[76.9,26.1],"uv_size":[-2.8,3.8]}}},{"origin":[0.65,11.49524,-1.7819],"size":[2.5,3,3.75],"pivot":[1.9,12.99524,-0.2819],"rotation":[0,0,-22.5],"inflate":-0.01,"uv":{"north":{"uv":[78.9,36.1],"uv_size":[-2.8,2.8]},"east":{"uv":[77.9,23.1],"uv_size":[-3.8,2.8]},"south":{"uv":[78.9,39.1],"uv_size":[-2.8,2.8]},"west":{"uv":[57.9,42.1],"uv_size":[-3.8,2.8]},"up":{"uv":[58.1,45.9],"uv_size":[2.8,-3.8]},"down":{"uv":[74.1,26.1],"uv_size":[2.8,3.8]}}},{"origin":[-2.75,16,-2],"size":[5.5,4,4],"uv":{"north":{"uv":[62.1,16.1],"uv_size":[5.8,3.8]},"east":{"uv":[42.1,36.1],"uv_size":[3.8,3.8]},"south":{"uv":[62.1,20.1],"uv_size":[5.8,3.8]},"west":{"uv":[68.1,12.1],"uv_size":[3.8,3.8]},"up":{"uv":[60.9,33.9],"uv_size":[-5.8,-3.8]},"down":{"uv":[68.9,0.1],"uv_size":[-5.8,3.8]}}},{"origin":[-2.75,15.75,-2],"size":[5.5,4,4],"pivot":[0,17.75,0],"rotation":[0,0,5],"inflate":0.25,"uv":{"north":{"uv":[77.032,26.032],"uv_size":[5.936,3.936]},"east":{"uv":[64.032,42.032],"uv_size":[3.936,3.936]},"south":{"uv":[78.032,5.032],"uv_size":[5.936,3.936]},"west":{"uv":[75.032,15.032],"uv_size":[3.936,3.936]},"up":{"uv":[80.968,49.968],"uv_size":[-5.936,-3.936]},"down":{"uv":[40.968,47.032],"uv_size":[-5.936,3.936]}}},{"origin":[-1.53365,13.50751,-4.02616],"size":[3,0,3],"pivot":[-0.03365,13.50751,-2.52616],"rotation":[90,-22.5,-90],"uv":{"north":{"uv":[32.032,0.032],"uv_size":[2.936,0]},"east":{"uv":[32.032,0.032],"uv_size":[2.936,0]},"south":{"uv":[32.032,0.032],"uv_size":[2.936,0]},"west":{"uv":[32.032,0.032],"uv_size":[2.936,0]},"up":{"uv":[71.968,42.968],"uv_size":[-2.936,-2.936]},"down":{"uv":[74.968,40.032],"uv_size":[-2.936,2.936]}}},{"origin":[0.46635,13.50751,-2.52616],"size":[1,1,1.5],"pivot":[-0.03365,13.50751,-1.77616],"rotation":[90,-7.5,-90],"uv":{"north":{"uv":[38.032,5.032],"uv_size":[0.936,0.936]},"east":{"uv":[38.032,5.032],"uv_size":[0.936,0.936]},"south":{"uv":[38.032,5.032],"uv_size":[0.936,0.936]},"west":{"uv":[38.032,5.032],"uv_size":[0.936,0.936]},"up":{"uv":[38.968,6.968],"uv_size":[-0.936,-0.936]},"down":{"uv":[39.968,1.032],"uv_size":[-0.936,0.936]}}}]},{"name":"tail","pivot":[0,13,2],"parent":"Body","cubes":[{"origin":[-1.5,11.25,1],"size":[3,3,4],"uv":{"north":{"uv":[71,31],"uv_size":[3,3]},"east":{"uv":[59,5],"uv_size":[4,3]},"south":{"uv":[72,8],"uv_size":[3,3]},"west":{"uv":[75,11],"uv_size":[4,3]},"up":{"uv":[74,27],"uv_size":[-3,-4]},"down":{"uv":[74,27],"uv_size":[-3,4]}}},{"origin":[-1.5,11.25,1],"size":[3,3,4],"pivot":[0.5,13.25,2],"rotation":[-5,0,5],"inflate":0.25,"uv":{"north":{"uv":[66,57],"uv_size":[3,3]},"east":{"uv":[54,50],"uv_size":[4,3]},"south":{"uv":[78,57],"uv_size":[3,3]},"west":{"uv":[86,37],"uv_size":[4,3]},"up":{"uv":[58,60],"uv_size":[-3,-4]},"down":{"uv":[92,33],"uv_size":[-3,4]}}},{"origin":[-1.54911,11.21055,0.95262],"size":[3,3,4],"pivot":[-0.04911,12.71055,2.95262],"rotation":[-21.741,17.26588,41.65996],"inflate":0.2,"uv":{"north":{"uv":[66,57],"uv_size":[3,3]},"east":{"uv":[54,50],"uv_size":[4,3]},"south":{"uv":[78,57],"uv_size":[3,3]},"west":{"uv":[86,37],"uv_size":[4,3]},"up":{"uv":[58,60],"uv_size":[-3,-4]},"down":{"uv":[92,33],"uv_size":[-3,4]}}}]},{"name":"skirt","pivot":[0,10.86231,-0.44416],"parent":"Body"},{"name":"c_front","pivot":[0,12.80877,-2.04324],"parent":"skirt","cubes":[{"origin":[-1.75,8.80877,-3.04324],"size":[3.5,3.75,1],"pivot":[0,10.80877,-2.04324],"rotation":[-20,0,0],"uv":{"north":{"uv":[50.032,36.032],"uv_size":[3.936,3.936]},"east":{"uv":[33.032,1.032],"uv_size":[0.936,3.936]},"south":{"uv":[58.032,38.032],"uv_size":[3.936,3.936]},"west":{"uv":[34.032,1.032],"uv_size":[0.936,3.936]},"up":{"uv":[39.968,0.968],"uv_size":[-3.936,-0.936]},"down":{"uv":[42.968,24.032],"uv_size":[-3.936,0.936]}}}]},{"name":"c_back","pivot":[0,12.80877,2.04324],"parent":"skirt","cubes":[{"origin":[-1.75,8.80877,2.04324],"size":[3.5,3.75,1],"pivot":[0,10.80877,2.04324],"rotation":[20,0,0],"uv":{"north":{"uv":[61.968,38.032],"uv_size":[-3.936,3.936]},"east":{"uv":[33.968,1.032],"uv_size":[-0.936,3.936]},"south":{"uv":[53.968,36.032],"uv_size":[-3.936,3.936]},"west":{"uv":[34.968,1.032],"uv_size":[-0.936,3.936]},"up":{"uv":[39.968,0.032],"uv_size":[-3.936,0.936]},"down":{"uv":[42.968,24.968],"uv_size":[-3.936,-0.936]}}}]},{"name":"l_leg","pivot":[-2.25,11.05877,-0.19324],"parent":"skirt","cubes":[{"origin":[-4,9.30877,-0.55676],"size":[3,3.5,3],"pivot":[-3,11.05877,1.44324],"rotation":[10.47011,-13.84624,21.41964],"uv":{"north":{"uv":[72.968,36.032],"uv_size":[-2.936,3.936]},"east":{"uv":[68.968,38.032],"uv_size":[-2.936,3.936]},"south":{"uv":[37.968,38.032],"uv_size":[-2.936,3.936]},"west":{"uv":[73.968,4.032],"uv_size":[-2.936,3.936]},"up":{"uv":[34.968,5.032],"uv_size":[-2.936,2.936]},"down":{"uv":[37.968,7.968],"uv_size":[-2.936,-2.936]}}},{"origin":[-4,9.30877,-2.44324],"size":[3,3.5,3],"pivot":[-3,11.05877,-1.44324],"rotation":[-10.47011,13.84624,21.41964],"uv":{"north":{"uv":[35.032,38.032],"uv_size":[2.936,3.936]},"east":{"uv":[66.032,38.032],"uv_size":[2.936,3.936]},"south":{"uv":[70.032,36.032],"uv_size":[2.936,3.936]},"west":{"uv":[71.032,4.032],"uv_size":[2.936,3.936]},"up":{"uv":[34.968,7.968],"uv_size":[-2.936,-2.936]},"down":{"uv":[37.968,5.032],"uv_size":[-2.936,2.936]}}}]},{"name":"r_leg","pivot":[2.25,11.05877,-0.19324],"parent":"skirt","cubes":[{"origin":[1,9.30877,-0.55676],"size":[3,3.5,3],"pivot":[3,11.05877,1.44324],"rotation":[10.47011,13.84624,-21.41964],"uv":{"north":{"uv":[70.032,36.032],"uv_size":[2.936,3.936]},"east":{"uv":[71.032,4.032],"uv_size":[2.936,3.936]},"south":{"uv":[35.032,38.032],"uv_size":[2.936,3.936]},"west":{"uv":[66.032,38.032],"uv_size":[2.936,3.936]},"up":{"uv":[32.032,5.032],"uv_size":[2.936,2.936]},"down":{"uv":[35.032,7.968],"uv_size":[2.936,-2.936]}}},{"origin":[1,9.30877,-2.44324],"size":[3,3.5,3],"pivot":[3,11.05877,-1.44324],"rotation":[-10.47011,-13.84624,-21.41964],"uv":{"north":{"uv":[37.968,38.032],"uv_size":[-2.936,3.936]},"east":{"uv":[73.968,4.032],"uv_size":[-2.936,3.936]},"south":{"uv":[72.968,36.032],"uv_size":[-2.936,3.936]},"west":{"uv":[68.968,38.032],"uv_size":[-2.936,3.936]},"up":{"uv":[32.032,7.968],"uv_size":[2.936,-2.936]},"down":{"uv":[35.032,5.032],"uv_size":[2.936,2.936]}}}]},{"name":"ELYTRA_PIVOT","pivot":[0,6,-2],"parent":"Body"},{"name":"LeftElytraPivot","pivot":[-1,21.8829,0.54964],"parent":"ELYTRA_PIVOT"},{"name":"RightElytraPivot","pivot":[1,21.8829,-0.45036],"parent":"ELYTRA_PIVOT"},{"name":"wings","pivot":[0,22,0],"parent":"Body"},{"name":"wingl","pivot":[1.78702,15.46891,1.28273],"parent":"wings","rotation":[-22.76048,-33.82584,37.0045]},{"name":"wingr","pivot":[-1.78702,15.46891,1.28273],"parent":"wings","rotation":[-22.76048,33.82584,-37.0045]},{"name":"head","pivot":[0,22.75,0],"parent":"torsorot","cubes":[{"origin":[-3.8,21,-3.85],"size":[7.6,7.6,7.6],"uv":{"north":{"uv":[40.032,0.032],"uv_size":[7.936,7.936]},"east":{"uv":[55.968,0.032],"uv_size":[-7.936,7.936]},"south":{"uv":[32.032,8.032],"uv_size":[7.936,7.936]},"west":{"uv":[48.032,0.032],"uv_size":[7.936,7.936]},"up":{"uv":[47.968,23.968],"uv_size":[-7.936,-7.936]},"down":{"uv":[55.968,8.032],"uv_size":[-7.936,7.936]}}}]},{"name":"eyes","pivot":[-0.2,29.55,-0.43],"parent":"head","cubes":[{"origin":[-3.75,21.2375,-3.698],"size":[7.6,2.325,0],"uv":{"north":{"uv":[7.032,0.032],"uv_size":[8.936,1.936]},"east":{"uv":[-1.032,26.032],"uv_size":[-1.068,5.936]},"south":{"uv":[-1.032,26.032],"uv_size":[-1.068,5.936]},"west":{"uv":[-1.032,26.032],"uv_size":[-1.068,5.936]},"up":{"uv":[7.968,31.968],"uv_size":[-7.936,-0.068]},"down":{"uv":[7.968,31.968],"uv_size":[-7.936,-0.068]}}}]},{"name":"iris","pivot":[-2.17125,23.6125,-3.755],"parent":"eyes","cubes":[{"origin":[0.6275,21.475,-3.7455],"size":[2.6125,3.325,0],"uv":{"north":{"uv":[6.936,20.032],"uv_size":[-6.836,6.936]},"east":{"uv":[1.968,30.032],"uv_size":[-0.068,1.936]},"south":{"uv":[8.032,4.032],"uv_size":[-0.064,1.936]},"west":{"uv":[-1.032,30.032],"uv_size":[-1.068,1.936]},"up":{"uv":[0.032,29.968],"uv_size":[1.936,-0.068]},"down":{"uv":[2.032,29.968],"uv_size":[1.936,-0.068]}}}]},{"name":"iris2","pivot":[1.77125,23.6125,-3.755],"parent":"eyes","cubes":[{"origin":[-3.24,21.475,-3.7455],"size":[2.6125,3.325,0],"uv":{"north":{"uv":[0.1,20.032],"uv_size":[6.836,6.936]},"east":{"uv":[-2.1,30.032],"uv_size":[1.068,1.936]},"south":{"uv":[7.968,4.032],"uv_size":[0.064,1.936]},"west":{"uv":[1.9,30.032],"uv_size":[0.068,1.936]},"up":{"uv":[1.968,29.968],"uv_size":[-1.936,-0.068]},"down":{"uv":[3.968,29.968],"uv_size":[-1.936,-0.068]}}}]},{"name":"lashes","pivot":[-0.2,23.83065,-3.97101],"parent":"eyes","rotation":[2.5,0,0]},{"name":"right_lashes","pivot":[2.28709,24.65764,-3.52225],"parent":"lashes","rotation":[1.42584,-0.91618,0.18232],"cubes":[{"origin":[0.89772,21.99427,-4.23487],"size":[4.25,2.5,0],"pivot":[3.12247,23.23737,-4.2365],"rotation":[-9.97613,-0.69405,-3.93942],"uv":{"north":{"uv":[17.032,0.032],"uv_size":[4.936,2.936]},"east":{"uv":[21.9,0.032],"uv_size":[0.068,2.936]},"south":{"uv":[-2.1,29.032],"uv_size":[1.068,2.936]},"west":{"uv":[17.9,0.032],"uv_size":[0.068,2.936]},"up":{"uv":[18.032,-1.032],"uv_size":[3.936,-1.068]},"down":{"uv":[22.032,-1.032],"uv_size":[3.936,-1.068]}}},{"origin":[-0.36353,21.68465,-4.18197],"size":[4.25,2.5,0],"pivot":[3.12247,23.23737,-4.2365],"rotation":[-9.81988,1.89876,10.83687],"uv":{"north":{"uv":[24.032,0.032],"uv_size":[4.936,2.936]},"east":{"uv":[21.9,0.032],"uv_size":[0.068,2.936]},"south":{"uv":[-2.1,29.032],"uv_size":[1.068,2.936]},"west":{"uv":[17.9,0.032],"uv_size":[0.068,2.936]},"up":{"uv":[18.032,-1.032],"uv_size":[3.936,-1.068]},"down":{"uv":[22.032,-1.032],"uv_size":[3.936,-1.068]}}}]},{"name":"left_lashes","pivot":[-2.28709,24.65764,-3.52225],"parent":"lashes","rotation":[1.42584,0.91618,-0.18232],"cubes":[{"origin":[-3.88647,21.68465,-4.18197],"size":[4.25,2.5,0],"pivot":[-3.12247,23.23737,-4.2365],"rotation":[-9.81988,-1.89876,-10.83687],"uv":{"north":{"uv":[28.968,0.032],"uv_size":[-4.936,2.936]},"east":{"uv":[17.968,0.032],"uv_size":[-0.068,2.936]},"south":{"uv":[-1.032,29.032],"uv_size":[-1.068,2.936]},"west":{"uv":[21.968,0.032],"uv_size":[-0.068,2.936]},"up":{"uv":[21.968,-1.032],"uv_size":[-3.936,-1.068]},"down":{"uv":[25.968,-1.032],"uv_size":[-3.936,-1.068]}}},{"origin":[-4.94772,21.99427,-4.23487],"size":[4.05,2.5,0],"pivot":[-3.12247,23.23737,-4.2365],"rotation":[-9.97613,0.69405,3.93942],"uv":{"north":{"uv":[21.968,0.032],"uv_size":[-4.936,2.936]},"east":{"uv":[17.968,0.032],"uv_size":[-0.068,2.936]},"south":{"uv":[-1.032,29.032],"uv_size":[-1.068,2.936]},"west":{"uv":[21.968,0.032],"uv_size":[-0.068,2.936]},"up":{"uv":[21.968,-1.032],"uv_size":[-3.936,-1.068]},"down":{"uv":[25.968,-1.032],"uv_size":[-3.936,-1.068]}}}]},{"name":"blink","pivot":[-0.2,23.375,-2.7765],"parent":"eyes","cubes":[{"origin":[-3.75,21.95,-2.7765],"size":[7.6,0.95,0],"uv":{"north":{"uv":[16.032,6.032],"uv_size":[7.936,0.936]},"east":{"uv":[16.032,6.032],"uv_size":[-0.064,0.936]},"south":{"uv":[24.032,6.032],"uv_size":[7.936,0.936]},"west":{"uv":[23.968,6.032],"uv_size":[-0.068,0.936]},"up":{"uv":[23.968,6.032],"uv_size":[-7.936,-0.064]},"down":{"uv":[31.968,6.032],"uv_size":[-7.936,-0.064]}}}]},{"name":"hair","pivot":[-0.2,-0.85,-1.95],"parent":"head","cubes":[{"origin":[-2.8,28.6,-2.9],"size":[5.7,0.95,5.7],"uv":{"north":{"uv":[78.1,10.1],"uv_size":[5.8,0.8]},"east":{"uv":[78.1,25.1],"uv_size":[5.8,0.8]},"south":{"uv":[66.1,46.1],"uv_size":[5.8,0.8]},"west":{"uv":[78.1,45.1],"uv_size":[5.8,0.8]},"up":{"uv":[61.9,13.9],"uv_size":[-5.8,-5.8]},"down":{"uv":[60.9,24.1],"uv_size":[-5.8,5.8]}}}]},{"name":"front_hair","pivot":[-0.2,25.7,-4.0875],"parent":"hair","cubes":[{"origin":[-4,24.37509,-4.0875],"size":[3.8,3.8,0],"pivot":[-2.28892,26.03759,-4.0875],"rotation":[0,0,10],"uv":{"north":{"uv":[63.1,4.1],"uv_size":[3.8,3.8]},"east":{"uv":[32.1,0.1],"uv_size":[0,3.8]},"south":{"uv":[55.1,34.1],"uv_size":[3.8,3.8]},"west":{"uv":[32.1,0.1],"uv_size":[0,3.8]},"up":{"uv":[35.9,0.1],"uv_size":[-3.8,0]},"down":{"uv":[35.9,0.1],"uv_size":[-3.8,0]}}},{"origin":[0.4,24.37509,-4.0875],"size":[3.8,3.8,0],"pivot":[2.38892,26.03759,-4.0875],"rotation":[0,0,-10],"uv":{"north":{"uv":[67.1,4.1],"uv_size":[3.8,3.8]},"east":{"uv":[32.1,0.1],"uv_size":[0,3.8]},"south":{"uv":[67.1,24.1],"uv_size":[3.8,3.8]},"west":{"uv":[32.1,0.1],"uv_size":[0,3.8]},"up":{"uv":[35.9,0.1],"uv_size":[-3.8,0]},"down":{"uv":[35.9,0.1],"uv_size":[-3.8,0]}}},{"origin":[-1.8,23.825,-4.325],"size":[3.8,3.8,0],"uv":{"north":{"uv":[67.1,28.1],"uv_size":[3.8,3.8]},"east":{"uv":[32.1,0.1],"uv_size":[0,3.8]},"south":{"uv":[67.1,32.1],"uv_size":[3.8,3.8]},"west":{"uv":[32.1,0.1],"uv_size":[0,3.8]},"up":{"uv":[35.9,0.1],"uv_size":[-3.8,0]},"down":{"uv":[35.9,0.1],"uv_size":[-3.8,0]}}}]},{"name":"lf_hair","pivot":[-3.7,23.7,-4.0875],"parent":"front_hair","cubes":[{"origin":[-4.7,13.95,-3.8375],"size":[5,8,0],"pivot":[-2.2,17.95,-3.8375],"rotation":[0,0,-2.5],"uv":{"north":{"uv":[87,0],"uv_size":[5,8]},"east":{"uv":[32,0],"uv_size":[0,8]},"south":{"uv":[38,56],"uv_size":[5,8]},"west":{"uv":[32,0],"uv_size":[0,8]},"up":{"uv":[37,0],"uv_size":[-5,0]},"down":{"uv":[37,0],"uv_size":[-5,0]}}},{"origin":[-5,19.35,-4.65],"size":[4,5,0],"pivot":[-2.75,22.35,-5.05],"rotation":[1.3796,16.45627,29.4108],"uv":{"north":{"uv":[47.1,24.1],"uv_size":[3.8,4.8]},"east":{"uv":[32.1,0.1],"uv_size":[0,4.8]},"south":{"uv":[47.1,29.1],"uv_size":[3.8,4.8]},"west":{"uv":[32.1,0.1],"uv_size":[0,4.8]},"up":{"uv":[35.9,0.1],"uv_size":[-3.8,0]},"down":{"uv":[35.9,0.1],"uv_size":[-3.8,0]}}}]},{"name":"rf_hair","pivot":[3.55,23.7,-4.0875],"parent":"front_hair","cubes":[{"origin":[-0.35,13.95,-3.9875],"size":[5,8,0],"pivot":[2.15,17.95,-3.9875],"rotation":[0,0,2.5],"uv":{"north":{"uv":[50,56],"uv_size":[5,8]},"east":{"uv":[32,0],"uv_size":[0,8]},"south":{"uv":[61,56],"uv_size":[5,8]},"west":{"uv":[32,0],"uv_size":[0,8]},"up":{"uv":[37,0],"uv_size":[-5,0]},"down":{"uv":[37,0],"uv_size":[-5,0]}}},{"origin":[1,19.35,-4.65],"size":[4,5,0],"pivot":[2.75,22.35,-5.05],"rotation":[1.3796,-16.45627,-29.4108],"uv":{"north":{"uv":[56.1,16.1],"uv_size":[3.8,4.8]},"east":{"uv":[32.1,0.1],"uv_size":[0,4.8]},"south":{"uv":[57.1,0.1],"uv_size":[3.8,4.8]},"west":{"uv":[32.1,0.1],"uv_size":[0,4.8]},"up":{"uv":[35.9,0.1],"uv_size":[-3.8,0]},"down":{"uv":[35.9,0.1],"uv_size":[-3.8,0]}}}]},{"name":"l_h","pivot":[-4,26.85,-0.05],"parent":"hair","cubes":[{"origin":[-3.725,20.69317,-3.86897],"size":[-0.05,7.55,7.55],"pivot":[-3.0375,23.61317,2.75603],"rotation":[0,0,2.5],"inflate":0.5,"uv":{"north":{"uv":[32.1,24.1],"uv_size":[0.8,7.8]},"east":{"uv":[40.1,8.1],"uv_size":[7.8,7.8]},"south":{"uv":[56.1,0.1],"uv_size":[0.8,7.8]},"west":{"uv":[32.1,16.1],"uv_size":[7.8,7.8]},"up":{"uv":[33.9,31.9],"uv_size":[-0.8,-7.8]},"down":{"uv":[34.9,24.1],"uv_size":[-0.8,7.8]}}}]},{"name":"l_tail","pivot":[-3.7875,25.61317,0.00603],"parent":"l_h","cubes":[{"origin":[-5.0375,24.61317,-0.74397],"size":[2,2,2],"uv":{"north":{"uv":[82.032,15.032],"uv_size":[1.936,1.936]},"east":{"uv":[71.032,50.032],"uv_size":[1.936,1.936]},"south":{"uv":[82.032,42.032],"uv_size":[1.936,1.936]},"west":{"uv":[80.032,50.032],"uv_size":[1.936,1.936]},"up":{"uv":[83.968,51.968],"uv_size":[-1.936,-1.936]},"down":{"uv":[35.968,51.032],"uv_size":[-1.936,1.936]}}},{"origin":[-6.0375,20.61317,-0.24397],"size":[3,5,3],"uv":{"north":{"uv":[38.032,51.032],"uv_size":[2.936,4.936]},"east":{"uv":[43.032,51.032],"uv_size":[2.936,4.936]},"south":{"uv":[83.032,26.032],"uv_size":[2.936,4.936]},"west":{"uv":[83.032,33.032],"uv_size":[2.936,4.936]},"up":{"uv":[76.968,52.968],"uv_size":[-2.936,-2.936]},"down":{"uv":[79.968,50.032],"uv_size":[-2.936,2.936]}}},{"origin":[-6.0375,17.61317,-0.24397],"size":[3,3,3],"uv":{"north":{"uv":[55.032,53.032],"uv_size":[2.936,2.936]},"east":{"uv":[86.032,22.032],"uv_size":[2.936,2.936]},"south":{"uv":[86.032,25.032],"uv_size":[2.936,2.936]},"west":{"uv":[86.032,28.032],"uv_size":[2.936,2.936]},"up":{"uv":[88.968,33.968],"uv_size":[-2.936,-2.936]},"down":{"uv":[88.968,34.032],"uv_size":[-2.936,2.936]}}},{"origin":[-6.0375,20.36317,-0.24397],"size":[3,5,3],"pivot":[-4.5375,22.86317,1.25603],"rotation":[-7.47178,0.65182,-5.04256],"inflate":0.5,"uv":{"north":{"uv":[84.032,2.032],"uv_size":[2.936,4.936]},"east":{"uv":[84.032,7.032],"uv_size":[2.936,4.936]},"south":{"uv":[67.032,52.032],"uv_size":[2.936,4.936]},"west":{"uv":[84.032,50.032],"uv_size":[2.936,4.936]},"up":{"uv":[85.968,24.968],"uv_size":[-2.936,-2.936]},"down":{"uv":[54.968,53.032],"uv_size":[-2.936,2.936]}}}]},{"name":"r_h","pivot":[4,27.85,-0.05],"parent":"hair","cubes":[{"origin":[3.775,20.69317,-3.86897],"size":[-0.05,7.55,7.55],"pivot":[3.0375,23.61317,2.75603],"rotation":[0,0,-2.5],"inflate":0.5,"uv":{"north":{"uv":[35.1,24.1],"uv_size":[0.8,7.8]},"east":{"uv":[48.1,16.1],"uv_size":[7.8,7.8]},"south":{"uv":[36.1,24.1],"uv_size":[0.8,7.8]},"west":{"uv":[84.1,14.1],"uv_size":[7.8,7.8]},"up":{"uv":[37.9,31.9],"uv_size":[-0.8,-7.8]},"down":{"uv":[38.9,24.1],"uv_size":[-0.8,7.8]}}}]},{"name":"r_tail","pivot":[3.7875,25.61317,0.75603],"parent":"r_h","cubes":[{"origin":[3.0375,24.61317,-0.74397],"size":[2,2,2],"uv":{"north":{"uv":[83.968,15.032],"uv_size":[-1.936,1.936]},"east":{"uv":[81.968,50.032],"uv_size":[-1.936,1.936]},"south":{"uv":[83.968,42.032],"uv_size":[-1.936,1.936]},"west":{"uv":[72.968,50.032],"uv_size":[-1.936,1.936]},"up":{"uv":[82.032,51.968],"uv_size":[1.936,-1.936]},"down":{"uv":[34.032,51.032],"uv_size":[1.936,1.936]}}},{"origin":[3.0375,20.61317,-0.24397],"size":[3,5,3],"uv":{"north":{"uv":[40.968,51.032],"uv_size":[-2.936,4.936]},"east":{"uv":[85.968,33.032],"uv_size":[-2.936,4.936]},"south":{"uv":[85.968,26.032],"uv_size":[-2.936,4.936]},"west":{"uv":[45.968,51.032],"uv_size":[-2.936,4.936]},"up":{"uv":[74.032,52.968],"uv_size":[2.936,-2.936]},"down":{"uv":[77.032,50.032],"uv_size":[2.936,2.936]}}},{"origin":[3.0375,17.61317,-0.24397],"size":[3,3,3],"uv":{"north":{"uv":[57.968,53.032],"uv_size":[-2.936,2.936]},"east":{"uv":[88.968,28.032],"uv_size":[-2.936,2.936]},"south":{"uv":[88.968,25.032],"uv_size":[-2.936,2.936]},"west":{"uv":[88.968,22.032],"uv_size":[-2.936,2.936]},"up":{"uv":[86.032,33.968],"uv_size":[2.936,-2.936]},"down":{"uv":[86.032,34.032],"uv_size":[2.936,2.936]}}},{"origin":[3.0375,20.36317,-0.24397],"size":[3,5,3],"pivot":[4.5375,22.86317,1.25603],"rotation":[-7.47178,-0.65182,5.04256],"inflate":0.5,"uv":{"north":{"uv":[86.968,2.032],"uv_size":[-2.936,4.936]},"east":{"uv":[86.968,50.032],"uv_size":[-2.936,4.936]},"south":{"uv":[69.968,52.032],"uv_size":[-2.936,4.936]},"west":{"uv":[86.968,7.032],"uv_size":[-2.936,4.936]},"up":{"uv":[83.032,24.968],"uv_size":[2.936,-2.936]},"down":{"uv":[52.032,53.032],"uv_size":[2.936,2.936]}}}]},{"name":"back_hair","pivot":[0.37894,27.14677,4.05932],"parent":"hair","cubes":[{"origin":[-3.68103,20.69317,3.775],"size":[7.55,7.55,-0.05],"pivot":[-2.75603,23.61317,3.0375],"rotation":[2.5,0,0],"inflate":0.5,"uv":{"north":{"uv":[84.032,40.032],"uv_size":[7.936,7.936]},"east":{"uv":[60.032,16.032],"uv_size":[0.936,7.936]},"south":{"uv":[70.032,54.032],"uv_size":[7.936,7.936]},"west":{"uv":[61.032,14.032],"uv_size":[0.936,7.936]},"up":{"uv":[78.968,22.968],"uv_size":[-7.936,-0.936]},"down":{"uv":[83.968,14.032],"uv_size":[-7.936,0.936]}}}]},{"name":"ears","pivot":[0,28,1],"parent":"head"},{"name":"e1","pivot":[-2.87906,28.07124,1.34758],"parent":"ears","rotation":[0,0,-20],"cubes":[{"origin":[-4.25,27.30071,0.95372],"size":[3,5,2],"pivot":[-2.75,30.30071,1.45372],"rotation":[0,0,-2.5],"uv":{"north":{"uv":[35.032,42.032],"uv_size":[2.936,4.936]},"east":{"uv":[61.032,0.032],"uv_size":[1.936,4.936]},"south":{"uv":[55.032,45.032],"uv_size":[2.936,4.936]},"west":{"uv":[78.032,0.032],"uv_size":[1.936,4.936]},"up":{"uv":[58.968,15.968],"uv_size":[-2.936,-1.936]},"down":{"uv":[58.968,21.032],"uv_size":[-2.936,1.936]}}},{"origin":[-3.80261,32.29465,0.70372],"size":[2,3,2],"pivot":[-2.96511,33.79465,1.95372],"rotation":[7.5,0,7.5],"uv":{"north":{"uv":[57.032,5.032],"uv_size":[1.936,2.936]},"east":{"uv":[59.032,34.032],"uv_size":[1.936,2.936]},"south":{"uv":[68.032,20.032],"uv_size":[1.936,2.936]},"west":{"uv":[69.032,0.032],"uv_size":[1.936,2.936]},"up":{"uv":[76.968,20.968],"uv_size":[-1.936,-1.936]},"down":{"uv":[69.968,43.032],"uv_size":[-1.936,1.936]}}},{"origin":[-4.5,27.30071,0.95372],"size":[3.25,5,2],"pivot":[-2.75,30.30071,1.45372],"rotation":[0,0,-2.5],"inflate":0.3,"uv":{"north":{"uv":[43.032,46.032],"uv_size":[2.936,4.936]},"east":{"uv":[46.032,46.032],"uv_size":[1.936,4.936]},"south":{"uv":[64.032,47.032],"uv_size":[2.936,4.936]},"west":{"uv":[79.032,36.032],"uv_size":[1.936,4.936]},"up":{"uv":[78.968,35.968],"uv_size":[-2.936,-1.936]},"down":{"uv":[80.968,23.032],"uv_size":[-2.936,1.936]}}},{"origin":[-3.80261,32.29465,0.70372],"size":[2,3,2],"pivot":[-2.96511,33.79465,1.95372],"rotation":[7.5,0,7.5],"inflate":0.3,"uv":{"north":{"uv":[80.032,0.032],"uv_size":[1.936,2.936]},"east":{"uv":[81.032,11.032],"uv_size":[1.936,2.936]},"south":{"uv":[48.032,49.032],"uv_size":[1.936,2.936]},"west":{"uv":[67.032,49.032],"uv_size":[1.936,2.936]},"up":{"uv":[81.968,4.968],"uv_size":[-1.936,-1.936]},"down":{"uv":[62.968,48.032],"uv_size":[-1.936,1.936]}}},{"origin":[-4.55261,32.29465,0.70372],"size":[3.25,3,2],"pivot":[-2.96511,33.79465,1.95372],"rotation":[7.5,0,7.5],"inflate":0.2,"uv":{"north":{"uv":[71.032,47.032],"uv_size":[2.936,2.936]},"east":{"uv":[70.032,43.032],"uv_size":[1.936,2.936]},"south":{"uv":[79.032,42.032],"uv_size":[2.936,2.936]},"west":{"uv":[50.032,44.032],"uv_size":[1.936,2.936]},"up":{"uv":[81.968,16.968],"uv_size":[-2.936,-1.936]},"down":{"uv":[34.968,48.032],"uv_size":[-2.936,1.936]}}},{"origin":[-4,27.30071,-1.04628],"size":[2,2,2],"pivot":[-3.25,29.30071,-0.04628],"rotation":[17.5,0,0],"uv":{"north":{"uv":[59.032,14.032],"uv_size":[1.936,1.936]},"east":{"uv":[47.032,34.032],"uv_size":[1.936,1.936]},"south":{"uv":[49.032,34.032],"uv_size":[1.936,1.936]},"west":{"uv":[67.032,36.032],"uv_size":[1.936,1.936]},"up":{"uv":[71.968,21.968],"uv_size":[-1.936,-1.936]},"down":{"uv":[75.968,34.032],"uv_size":[-1.936,1.936]}}},{"origin":[-4,27.30071,-1.04628],"size":[2,2,2],"pivot":[-3.25,29.30071,-0.04628],"rotation":[19.18246,23.7695,7.98205],"inflate":0.2,"uv":{"north":{"uv":[81.032,23.032],"uv_size":[1.936,1.936]},"east":{"uv":[81.032,36.032],"uv_size":[1.936,1.936]},"south":{"uv":[69.032,49.032],"uv_size":[1.936,1.936]},"west":{"uv":[81.032,38.032],"uv_size":[1.936,1.936]},"up":{"uv":[82.968,49.968],"uv_size":[-1.936,-1.936]},"down":{"uv":[33.968,50.032],"uv_size":[-1.936,1.936]}}}]},{"name":"e2","pivot":[2.87906,28.07124,1.34758],"parent":"ears","rotation":[0,0,20],"cubes":[{"origin":[1.25,27.30071,0.95372],"size":[3,5,2],"pivot":[2.75,30.30071,1.45372],"rotation":[0,0,2.5],"uv":{"north":{"uv":[37.968,42.032],"uv_size":[-2.936,4.936]},"east":{"uv":[79.968,0.032],"uv_size":[-1.936,4.936]},"south":{"uv":[57.968,45.032],"uv_size":[-2.936,4.936]},"west":{"uv":[62.968,0.032],"uv_size":[-1.936,4.936]},"up":{"uv":[56.032,15.968],"uv_size":[2.936,-1.936]},"down":{"uv":[56.032,21.032],"uv_size":[2.936,1.936]}}},{"origin":[1.80261,32.29465,0.70372],"size":[2,3,2],"pivot":[2.96511,33.79465,1.95372],"rotation":[7.5,0,-7.5],"uv":{"north":{"uv":[58.968,5.032],"uv_size":[-1.936,2.936]},"east":{"uv":[70.968,0.032],"uv_size":[-1.936,2.936]},"south":{"uv":[69.968,20.032],"uv_size":[-1.936,2.936]},"west":{"uv":[60.968,34.032],"uv_size":[-1.936,2.936]},"up":{"uv":[75.032,20.968],"uv_size":[1.936,-1.936]},"down":{"uv":[68.032,43.032],"uv_size":[1.936,1.936]}}},{"origin":[1.25,27.30071,0.95372],"size":[3.25,5,2],"pivot":[2.75,30.30071,1.45372],"rotation":[0,0,2.5],"inflate":0.3,"uv":{"north":{"uv":[45.968,46.032],"uv_size":[-2.936,4.936]},"east":{"uv":[80.968,36.032],"uv_size":[-1.936,4.936]},"south":{"uv":[66.968,47.032],"uv_size":[-2.936,4.936]},"west":{"uv":[47.968,46.032],"uv_size":[-1.936,4.936]},"up":{"uv":[76.032,35.968],"uv_size":[2.936,-1.936]},"down":{"uv":[78.032,23.032],"uv_size":[2.936,1.936]}}},{"origin":[1.80261,32.29465,0.70372],"size":[2,3,2],"pivot":[2.96511,33.79465,1.95372],"rotation":[7.5,0,-7.5],"inflate":0.3,"uv":{"north":{"uv":[81.968,0.032],"uv_size":[-1.936,2.936]},"east":{"uv":[68.968,49.032],"uv_size":[-1.936,2.936]},"south":{"uv":[49.968,49.032],"uv_size":[-1.936,2.936]},"west":{"uv":[82.968,11.032],"uv_size":[-1.936,2.936]},"up":{"uv":[80.032,4.968],"uv_size":[1.936,-1.936]},"down":{"uv":[61.032,48.032],"uv_size":[1.936,1.936]}}},{"origin":[1.30261,32.29465,0.70372],"size":[3.25,3,2],"pivot":[2.96511,33.79465,1.95372],"rotation":[7.5,0,-7.5],"inflate":0.2,"uv":{"north":{"uv":[73.968,47.032],"uv_size":[-2.936,2.936]},"east":{"uv":[51.968,44.032],"uv_size":[-1.936,2.936]},"south":{"uv":[81.968,42.032],"uv_size":[-2.936,2.936]},"west":{"uv":[71.968,43.032],"uv_size":[-1.936,2.936]},"up":{"uv":[79.032,16.968],"uv_size":[2.936,-1.936]},"down":{"uv":[32.032,48.032],"uv_size":[2.936,1.936]}}},{"origin":[2,27.30071,-1.04628],"size":[2,2,2],"pivot":[3.25,29.30071,-0.04628],"rotation":[17.5,0,0],"uv":{"north":{"uv":[60.968,14.032],"uv_size":[-1.936,1.936]},"east":{"uv":[68.968,36.032],"uv_size":[-1.936,1.936]},"south":{"uv":[50.968,34.032],"uv_size":[-1.936,1.936]},"west":{"uv":[48.968,34.032],"uv_size":[-1.936,1.936]},"up":{"uv":[70.032,21.968],"uv_size":[1.936,-1.936]},"down":{"uv":[74.032,34.032],"uv_size":[1.936,1.936]}}},{"origin":[2,27.30071,-1.04628],"size":[2,2,2],"pivot":[3.25,29.30071,-0.04628],"rotation":[19.18246,-23.7695,-7.98205],"inflate":0.2,"uv":{"north":{"uv":[82.968,23.032],"uv_size":[-1.936,1.936]},"east":{"uv":[82.968,38.032],"uv_size":[-1.936,1.936]},"south":{"uv":[70.968,49.032],"uv_size":[-1.936,1.936]},"west":{"uv":[82.968,36.032],"uv_size":[-1.936,1.936]},"up":{"uv":[81.032,49.968],"uv_size":[1.936,-1.936]},"down":{"uv":[32.032,50.032],"uv_size":[1.936,1.936]}}}]},{"name":"rabbit","pivot":[0,30.19439,0.03268],"parent":"head"},{"name":"head_2","pivot":[0,33.5,-3],"parent":"rabbit"},{"name":"e1_2","pivot":[-1.50953,36.4983,-1.93398],"parent":"head_2","rotation":[-32.8087,42.64879,-131.11265]},{"name":"e1_3","pivot":[1.50953,36.4983,-1.93398],"parent":"head_2","rotation":[-32.8087,-42.64879,131.11265]},{"name":"LeftLeg","pivot":[-1.9,10,0],"parent":"whole","cubes":[{"origin":[-3.05,0,-1.75],"size":[3,10.25,3.5],"pivot":[-1.8,6.5,0],"rotation":[0,0,-2.5],"inflate":0.25,"uv":{"north":{"uv":[43,56],"uv_size":[4,11]},"east":{"uv":[84,56],"uv_size":[4,11]},"south":{"uv":[88,56],"uv_size":[4,11]},"west":{"uv":[89,22],"uv_size":[4,11]},"up":{"uv":[84,21],"uv_size":[-4,-4]},"down":{"uv":[91,8],"uv_size":[-4,4]}}},{"origin":[-3.05,0,-1.75],"size":[3,10.25,3.5],"pivot":[-1.8,6.5,0],"rotation":[0,0,-2.5],"uv":{"north":{"uv":[39.1,25.1],"uv_size":[3.8,10.8]},"east":{"uv":[43.1,25.1],"uv_size":[3.8,10.8]},"south":{"uv":[42.9,25.1],"uv_size":[-3.8,10.8]},"west":{"uv":[51.1,25.1],"uv_size":[3.8,10.8]},"up":{"uv":[49.9,39.9],"uv_size":[-3.8,-3.8]},"down":{"uv":[71.9,16.1],"uv_size":[-3.8,3.8]}}}]},{"name":"RightLeg","pivot":[1.9,10,0],"parent":"whole","cubes":[{"origin":[0.05,0,-1.75],"size":[3,10.25,3.5],"pivot":[1.8,6.5,0],"rotation":[0,0,2.5],"inflate":0.25,"uv":{"north":{"uv":[47,56],"uv_size":[-4,11]},"east":{"uv":[93,22],"uv_size":[-4,11]},"south":{"uv":[92,56],"uv_size":[-4,11]},"west":{"uv":[88,56],"uv_size":[-4,11]},"up":{"uv":[80,21],"uv_size":[4,-4]},"down":{"uv":[87,8],"uv_size":[4,4]}}},{"origin":[0.05,0,-1.75],"size":[3,10.25,3.5],"pivot":[1.8,6.5,0],"rotation":[0,0,2.5],"uv":{"north":{"uv":[42.9,25.1],"uv_size":[-3.8,10.8]},"east":{"uv":[54.9,25.1],"uv_size":[-3.8,10.8]},"south":{"uv":[39.1,25.1],"uv_size":[3.8,10.8]},"west":{"uv":[46.9,25.1],"uv_size":[-3.8,10.8]},"up":{"uv":[46.1,39.9],"uv_size":[3.8,-3.8]},"down":{"uv":[68.1,16.1],"uv_size":[3.8,3.8]}}}]},{"name":"RightArm_2","pivot":[4.37586,19.90466,0]},{"name":"Skull","pivot":[0,0.25,-1],"cubes":[{"origin":[-2.5,1.14048,-3.95216],"size":[5,4.5,4],"pivot":[0,4.36548,-0.95216],"rotation":[-7.5,0,0],"uv":{"north":{"uv":[165,12],"uv_size":[5,4]},"east":{"uv":[171,8],"uv_size":[4,4]},"south":{"uv":[170,12],"uv_size":[5,4]},"west":{"uv":[172,0],"uv_size":[4,4]},"up":{"uv":[188,21],"uv_size":[-5,-4]},"down":{"uv":[188,21],"uv_size":[-5,4]}}},{"origin":[-2.5,0.50405,-0.97523],"size":[5,3.5,3],"pivot":[0,2.50405,1.02477],"rotation":[-27.5,0,0],"inflate":-0.01,"uv":{"north":{"uv":[160,14],"uv_size":[5,3]},"east":{"uv":[173,16],"uv_size":[3,3]},"south":{"uv":[175,8],"uv_size":[5,3]},"west":{"uv":[176,16],"uv_size":[3,3]},"up":{"uv":[181,3],"uv_size":[-5,-3]},"down":{"uv":[181,3],"uv_size":[-5,3]}}},{"origin":[0.75,0.05,-4.25],"size":[1.5,2.25,2],"pivot":[1.75,-0.5,-3.25],"rotation":[-10,0,0],"uv":{"north":{"uv":[176,6],"uv_size":[2,2]},"east":{"uv":[178,6],"uv_size":[2,2]},"south":{"uv":[173,19],"uv_size":[2,2]},"west":{"uv":[175,19],"uv_size":[2,2]},"up":{"uv":[181,17],"uv_size":[-2,-2]},"down":{"uv":[179,19],"uv_size":[-2,2]}}},{"origin":[0.75,-0.14791,-0.23735],"size":[1.5,2.25,2],"pivot":[1.5,0.72709,0.01265],"rotation":[2.5,0,0],"uv":{"north":{"uv":[176,6],"uv_size":[2,2]},"east":{"uv":[178,6],"uv_size":[2,2]},"south":{"uv":[173,19],"uv_size":[2,2]},"west":{"uv":[175,19],"uv_size":[2,2]},"up":{"uv":[181,17],"uv_size":[-2,-2]},"down":{"uv":[179,19],"uv_size":[-2,2]}}},{"origin":[-2.25,-0.14791,-0.23735],"size":[1.5,2.25,2],"pivot":[-1.5,0.72709,0.01265],"rotation":[2.5,0,0],"uv":{"north":{"uv":[178,6],"uv_size":[-2,2]},"east":{"uv":[177,19],"uv_size":[-2,2]},"south":{"uv":[175,19],"uv_size":[-2,2]},"west":{"uv":[180,6],"uv_size":[-2,2]},"up":{"uv":[179,17],"uv_size":[2,-2]},"down":{"uv":[177,19],"uv_size":[2,2]}}},{"origin":[-2.25,0.05,-4.25],"size":[1.5,2.25,2],"pivot":[-1.75,-0.5,-3.25],"rotation":[-10,0,0],"uv":{"north":{"uv":[178,6],"uv_size":[-2,2]},"east":{"uv":[177,19],"uv_size":[-2,2]},"south":{"uv":[175,19],"uv_size":[-2,2]},"west":{"uv":[180,6],"uv_size":[-2,2]},"up":{"uv":[179,17],"uv_size":[2,-2]},"down":{"uv":[177,19],"uv_size":[2,2]}}},{"origin":[-0.75,2.25,1.75],"size":[1.5,2,2],"uv":{"north":{"uv":[180,7],"uv_size":[2,2]},"east":{"uv":[180,9],"uv_size":[2,2]},"south":{"uv":[179,20],"uv_size":[2,2]},"west":{"uv":[160,21],"uv_size":[2,2]},"up":{"uv":[183,2],"uv_size":[-2,-2]},"down":{"uv":[164,21],"uv_size":[-2,2]}}}]},{"name":"bone","pivot":[0,7.25,-3.5],"parent":"Skull","cubes":[{"origin":[-1.75,5,-6],"size":[3.5,3,2.75],"pivot":[0,7.25,-3.5],"rotation":[15,0,0],"uv":{"north":{"uv":[165,16],"uv_size":[4,4]},"east":{"uv":[165,20],"uv_size":[3,4]},"south":{"uv":[169,16],"uv_size":[4,4]},"west":{"uv":[168,20],"uv_size":[3,4]},"up":{"uv":[175,26],"uv_size":[-4,-3]},"down":{"uv":[187,14],"uv_size":[-4,3]}}},{"origin":[-0.11122,7.21496,-4.29195],"size":[2,5,1],"pivot":[1.71508,7.99162,-3.10791],"rotation":[-4.87366,-23.99518,13.13739],"uv":{"north":{"uv":[179,22],"uv_size":[2,5]},"east":{"uv":[160,23],"uv_size":[1,5]},"south":{"uv":[181,22],"uv_size":[2,5]},"west":{"uv":[183,0],"uv_size":[1,5]},"up":{"uv":[184,14],"uv_size":[-2,-1]},"down":{"uv":[163,23],"uv_size":[-2,1]}}},{"origin":[-1.88878,7.21496,-4.29195],"size":[2,5,1],"pivot":[-1.71508,7.99162,-3.10791],"rotation":[-4.87366,23.99518,-13.13739],"uv":{"north":{"uv":[181,22],"uv_size":[-2,5]},"east":{"uv":[184,0],"uv_size":[-1,5]},"south":{"uv":[183,22],"uv_size":[-2,5]},"west":{"uv":[161,23],"uv_size":[-1,5]},"up":{"uv":[182,14],"uv_size":[2,-1]},"down":{"uv":[161,23],"uv_size":[2,1]}}},{"origin":[-1,5,-7.25],"size":[2,2,2],"pivot":[0,7.25,-3.5],"rotation":[15,0,0],"inflate":-0.01,"uv":{"north":{"uv":[174,21],"uv_size":[2,2]},"east":{"uv":[181,14],"uv_size":[2,2]},"south":{"uv":[176,21],"uv_size":[2,2]},"west":{"uv":[181,20],"uv_size":[2,2]},"up":{"uv":[184,9],"uv_size":[-2,-2]},"down":{"uv":[184,9],"uv_size":[-2,2]}}},{"origin":[-0.5,6.25,-7.35],"size":[1,0.85,1.1],"pivot":[0,7.25,-3.5],"rotation":[15,0,0],"uv":{"north":{"uv":[164,20],"uv_size":[1,1]},"east":{"uv":[181,16],"uv_size":[2,1]},"south":{"uv":[182,12],"uv_size":[1,1]},"west":{"uv":[182,11],"uv_size":[2,1]},"up":{"uv":[166,12],"uv_size":[-1,-2]},"down":{"uv":[179,21],"uv_size":[-1,2]}}}]},{"name":"Portrait","pivot":[0,1.75,0],"cubes":[{"origin":[-4.95389,0.96539,-4.1589],"size":[4.05,2.5,0],"pivot":[-3.12864,2.20849,-4.16053],"rotation":[-5.9951,1.344,3.8364],"uv":{"north":{"uv":[21.968,0.032],"uv_size":[-4.936,2.936]},"east":{"uv":[17.968,0.032],"uv_size":[-0.068,2.936]},"south":{"uv":[-1.032,29.032],"uv_size":[-1.068,2.936]},"west":{"uv":[21.968,0.032],"uv_size":[-0.068,2.936]},"up":{"uv":[21.968,-1.032],"uv_size":[-3.936,-1.068]},"down":{"uv":[25.968,-1.032],"uv_size":[-3.936,-1.068]}}},{"origin":[-3.89264,0.65578,-4.106],"size":[4.25,2.5,0],"pivot":[-3.12864,2.20849,-4.16053],"rotation":[-6.1382,-0.2503,-11.0798],"uv":{"north":{"uv":[28.968,0.032],"uv_size":[-4.936,2.936]},"east":{"uv":[17.968,0.032],"uv_size":[-0.068,2.936]},"south":{"uv":[-1.032,29.032],"uv_size":[-1.068,2.936]},"west":{"uv":[21.968,0.032],"uv_size":[-0.068,2.936]},"up":{"uv":[21.968,-1.032],"uv_size":[-3.936,-1.068]},"down":{"uv":[25.968,-1.032],"uv_size":[-3.936,-1.068]}}},{"origin":[-0.35736,0.65578,-4.106],"size":[4.25,2.5,0],"pivot":[3.12864,2.20849,-4.16053],"rotation":[-6.1382,0.2503,11.0798],"uv":{"north":{"uv":[24.032,0.032],"uv_size":[4.936,2.936]},"east":{"uv":[21.9,0.032],"uv_size":[0.068,2.936]},"south":{"uv":[-2.1,29.032],"uv_size":[1.068,2.936]},"west":{"uv":[17.9,0.032],"uv_size":[0.068,2.936]},"up":{"uv":[18.032,-1.032],"uv_size":[3.936,-1.068]},"down":{"uv":[22.032,-1.032],"uv_size":[3.936,-1.068]}}},{"origin":[0.90389,0.96539,-4.1589],"size":[4.25,2.5,0],"pivot":[3.12864,2.20849,-4.16053],"rotation":[-5.9951,-1.344,-3.8364],"uv":{"north":{"uv":[17.032,0.032],"uv_size":[4.936,2.936]},"east":{"uv":[21.9,0.032],"uv_size":[0.068,2.936]},"south":{"uv":[-2.1,29.032],"uv_size":[1.068,2.936]},"west":{"uv":[17.9,0.032],"uv_size":[0.068,2.936]},"up":{"uv":[18.032,-1.032],"uv_size":[3.936,-1.068]},"down":{"uv":[22.032,-1.032],"uv_size":[3.936,-1.068]}}},{"origin":[-3.24,0.475,-3.7455],"size":[2.6125,3.325,0],"uv":{"north":{"uv":[0.1,20.032],"uv_size":[6.836,6.936]},"east":{"uv":[-2.1,30.032],"uv_size":[1.068,1.936]},"south":{"uv":[7.968,4.032],"uv_size":[0.064,1.936]},"west":{"uv":[1.9,30.032],"uv_size":[0.068,1.936]},"up":{"uv":[1.968,29.968],"uv_size":[-1.936,-0.068]},"down":{"uv":[3.968,29.968],"uv_size":[-1.936,-0.068]}}},{"origin":[0.6275,0.475,-3.7455],"size":[2.6125,3.325,0],"uv":{"north":{"uv":[6.936,20.032],"uv_size":[-6.836,6.936]},"east":{"uv":[1.968,30.032],"uv_size":[-0.068,1.936]},"south":{"uv":[8.032,4.032],"uv_size":[-0.064,1.936]},"west":{"uv":[-1.032,30.032],"uv_size":[-1.068,1.936]},"up":{"uv":[0.032,29.968],"uv_size":[1.936,-0.068]},"down":{"uv":[2.032,29.968],"uv_size":[1.936,-0.068]}}},{"origin":[-3.75,0.2375,-3.698],"size":[7.6,2.325,0],"uv":{"north":{"uv":[7.032,0.032],"uv_size":[8.936,1.936]},"east":{"uv":[-1.032,26.032],"uv_size":[-1.068,5.936]},"south":{"uv":[-1.032,26.032],"uv_size":[-1.068,5.936]},"west":{"uv":[-1.032,26.032],"uv_size":[-1.068,5.936]},"up":{"uv":[7.968,31.968],"uv_size":[-7.936,-0.068]},"down":{"uv":[7.968,31.968],"uv_size":[-7.936,-0.068]}}},{"origin":[-4,3.37509,-4.0875],"size":[3.8,3.8,0],"pivot":[-2.28892,5.03759,-4.0875],"rotation":[0,0,10],"uv":{"north":{"uv":[63.1,4.1],"uv_size":[3.8,3.8]},"east":{"uv":[32.1,0.1],"uv_size":[0,3.8]},"south":{"uv":[55.1,34.1],"uv_size":[3.8,3.8]},"west":{"uv":[32.1,0.1],"uv_size":[0,3.8]},"up":{"uv":[35.9,0.1],"uv_size":[-3.8,0]},"down":{"uv":[35.9,0.1],"uv_size":[-3.8,0]}}},{"origin":[0.4,3.37509,-4.0875],"size":[3.8,3.8,0],"pivot":[2.38892,5.03759,-4.0875],"rotation":[0,0,-10],"uv":{"north":{"uv":[67.1,4.1],"uv_size":[3.8,3.8]},"east":{"uv":[32.1,0.1],"uv_size":[0,3.8]},"south":{"uv":[67.1,24.1],"uv_size":[3.8,3.8]},"west":{"uv":[32.1,0.1],"uv_size":[0,3.8]},"up":{"uv":[35.9,0.1],"uv_size":[-3.8,0]},"down":{"uv":[35.9,0.1],"uv_size":[-3.8,0]}}},{"origin":[-1.8,2.825,-4.325],"size":[3.8,3.8,0],"uv":{"north":{"uv":[67.1,28.1],"uv_size":[3.8,3.8]},"east":{"uv":[32.1,0.1],"uv_size":[0,3.8]},"south":{"uv":[67.1,32.1],"uv_size":[3.8,3.8]},"west":{"uv":[32.1,0.1],"uv_size":[0,3.8]},"up":{"uv":[35.9,0.1],"uv_size":[-3.8,0]},"down":{"uv":[35.9,0.1],"uv_size":[-3.8,0]}}},{"origin":[-5,-1.65,-4.65],"size":[4,5,0],"pivot":[-2.75,1.35,-5.05],"rotation":[1.3796,16.4563,29.4108],"uv":{"north":{"uv":[47.1,24.1],"uv_size":[3.8,4.8]},"east":{"uv":[32.1,0.1],"uv_size":[0,4.8]},"south":{"uv":[47.1,29.1],"uv_size":[3.8,4.8]},"west":{"uv":[32.1,0.1],"uv_size":[0,4.8]},"up":{"uv":[35.9,0.1],"uv_size":[-3.8,0]},"down":{"uv":[35.9,0.1],"uv_size":[-3.8,0]}}},{"origin":[1,-1.65,-4.65],"size":[4,5,0],"pivot":[2.75,1.35,-5.05],"rotation":[1.3796,-16.4563,-29.4108],"uv":{"north":{"uv":[56.1,16.1],"uv_size":[3.8,4.8]},"east":{"uv":[32.1,0.1],"uv_size":[0,4.8]},"south":{"uv":[57.1,0.1],"uv_size":[3.8,4.8]},"west":{"uv":[32.1,0.1],"uv_size":[0,4.8]},"up":{"uv":[35.9,0.1],"uv_size":[-3.8,0]},"down":{"uv":[35.9,0.1],"uv_size":[-3.8,0]}}},{"origin":[-3.8,0,-3.85],"size":[7.6,7.6,7.6],"uv":{"north":{"uv":[40.032,0.032],"uv_size":[7.936,7.936]},"east":{"uv":[55.968,0.032],"uv_size":[-7.936,7.936]},"south":{"uv":[32.032,8.032],"uv_size":[7.936,7.936]},"west":{"uv":[48.032,0.032],"uv_size":[7.936,7.936]},"up":{"uv":[47.968,23.968],"uv_size":[-7.936,-7.936]},"down":{"uv":[55.968,8.032],"uv_size":[-7.936,7.936]}}}]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/elise.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/elise.anim.json new file mode 100644 index 0000000..e2e39cf --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/elise.anim.json @@ -0,0 +1 @@ +{"autoplay":["i1","i2","i3","lanternglow"],"clips":{"i3":{"loop":"loop","length":4,"bones":{"headrot":{"rotation":[[0,0,0,2.5],[1,0,0,0],[2,0,0,-2.5],[3,0,0,0],[4,0,0,2.5]]}}},"i2":{"loop":"loop","length":0.76,"bones":{"wing1":{"rotation":[[0,0,0,0],[0.36,0,-12.5,0],[0.76,0,0,0]]},"wing2":{"rotation":[[0,0,0,0],[0.36,0,12.5,0],[0.76,0,0,0]]}}},"i1":{"loop":"loop","length":2,"bones":{"l_arm":{"rotation":[[0,0,0,0],[0.24,2.5,0,0],[0.48,0,0,3],[0.72,-2.5,0,0],[1,0,0,0],[1.28,2.5,0,0],[1.52,0,0,3],[1.76,-2.5,0,0],[2,0,0,0]]},"r_arm":{"rotation":[[0,0,0,0],[0.24,2.5,0,0],[0.48,0,0,-3],[0.72,-2.5,0,0],[1,0,0,0],[1.28,2.5,0,0],[1.52,0,0,-3],[1.76,-2.5,0,0],[2,0,0,0]]}}},"walkmain":{"loop":"loop","length":2,"bones":{"l_arm":{"rotation":[[0,22.5,0,0],[1,-25,0,0],[2,22.5,0,0]]},"headrot":{"rotation":[[0,-3.02584,-7.48966,0.39477],[0.48,0,0,2],[1,-3.01144,4.99313,-0.26234],[1.48,0,0,-2],[2,-3.02584,-7.48966,0.39477]]},"head":{"rotation":[[0,0,-2.5,0],[1,0,2.5,0],[2,0,-2.5,0]]},"strand1":{"rotation":[[0,-0.01795,-0.47872,4.97766],[1,-0.00379,0.17434,-2.49392],[1.96,-0.01795,-0.47872,4.97766]]},"strand2":{"rotation":[[0,-0.01795,0.47872,-4.97766],[1,-0.00379,-0.17434,2.49392],[1.96,-0.01795,0.47872,-4.97766]]},"skirt":{"rotation":[[0,0,0,5],[1.2,0,0,-5],[2,0,0,5]]},"hand":{"rotation":[[0,0,0,7.5],[0.24,12.5,0,8.3],[1,0,0,12.5],[1.16,-7.5,0,11.7],[2,0,0,7.5]]},"l_leg":{"rotation":[[0,-25.5,0,0],[1.04,26,0,0],[2,-25.5,0,0]],"position":[[0,0,0,0],[1,0,0,1],[2,0,0,0]],"scale":[[0,1,1,1],[0.8,1.05,0.95,1],[1,1,1,1],[1.8,1.05,0.95,1],[2,1,1,1]]},"r_leg":{"rotation":[[0.04,26,0,0],[1,-25.5,0,0],[2,26,0,0]],"position":[[0,0,0,1],[1,0,0,0],[2,0,0,1]],"scale":[[0,1,1,1],[0.8,1.05,0.95,1],[1,1,1,1],[1.8,1.05,0.95,1],[2,1,1,1]]},"r_arm":{"rotation":[[0,-25,0,0],[1,22.5,0,0],[2,-25,0,0]]},"hand_2":{"rotation":[[0,0,0,-12.5],[0.16,-7.5,0,-11.7],[1,0,0,-7.5],[1.32,12.5,0,-8.3],[2,0,0,-12.5]]},"skirt2":{"rotation":[[0,-0.94307,-4.79627,-7.83205],[1.16,-2.06251,2.36966,10.30631],[2,-0.94307,-4.79627,-7.83205]]},"bodyrot":{"rotation":[[0,-2.5,10,0],[0.48,0,0,0],[1,-2.49986,-9.98135,0.86795],[1.52,0,0,0],[2,-2.5,10,0]]},"knee_2":{"rotation":[[0,-9.65,0,0],[0.16,0,0,0],[0.56,0,0,0],[1,-20,0,0],[1.36,-35,0,0],[1.8,-35,0,0],[2,-9.65,0,0]]},"knee":{"rotation":[[0,-20,0,0],[0.72,-35,0,0],[1,-9.65,0,0],[1.16,0,0,0],[1.56,0,0,0],[2,-20,0,0]]}}},"walkbackmain":{"loop":"loop","length":2,"bones":{"headrot":{"rotation":[[0,-15.50409,-14.47751,3.96713],[1,-13.00409,-14.47751,3.96713],[2,-15.50409,-14.47751,3.96713]]},"twintail":{"rotation":[[0,10,0,0]]},"strand1":{"rotation":[[0,-0.01517,0.34834,-4.98788],[0.12,-0.04794,0.63514,-6.97987],[1,-0.00442,-0.25149,2.48773],[2,-0.01517,0.34834,-4.98788]]},"strand2":{"rotation":[[0,-0.01517,0.34834,-4.98788],[0.12,-0.04794,0.63514,-6.97987],[1,-0.00442,-0.25149,2.48773],[2,-0.01517,0.34834,-4.98788]]},"iris":{"position":[[0,-0.15,0,0]]},"iris2":{"position":[[0,-0.5,0,0]]},"skirt":{"rotation":[[0,-16,0,-5],[1.12,-16,0,5],[2,-16,0,-5]]},"l_arm":{"rotation":[[0,12.5,0,0],[1,-12.5,0,0],[2,12.5,0,0]]},"hand":{"rotation":[[0,0,0,12.5],[0.2,7.5,0,12.5],[1,0,0,12.5],[1.24,-5,0,12.5],[2,0,0,12.5]]},"l_leg":{"rotation":[[0,-27.5,0,0],[1,15,0,0],[1.32,27.5,0,0],[2,-27.5,0,0]]},"r_leg":{"rotation":[[0,15,0,0],[0.2,27.5,0,0],[1,-27.5,0,0],[2,15,0,0]]},"twintail_2":{"rotation":[[0,10,0,0]]},"front":{"position":[[0,0,0,-0.3]]},"r_arm":{"rotation":[[0,-12.5,0,0],[1,12.5,0,0],[2,-12.5,0,0]]},"hand_2":{"rotation":[[0,0,0,-12.5],[0.24,-5,0,-12.5],[1,0,0,-12.5],[1.2,7.5,0,-12.5],[2,0,0,-12.5]]},"bodyrot":{"rotation":[[0,12.5,0,0]]},"knee_2":{"rotation":[[0,-15,0,0],[0.2,-52.5,0,0],[1,-6.67,0,0],[1.52,0,0,0],[2,-15,0,0]]},"knee":{"rotation":[[0,-6.67,0,0],[0.52,0,0,0],[1,-15,0,0],[1.36,-52.5,0,0],[2,-6.67,0,0]]}}},"sprintmain":{"loop":"loop","length":2,"bones":{"whole":{"position":[[0,2,5.7,-3],[0.48,0,3.3,0],[1,-2,5.7,-3],[1.48,0,3.4,0],[2,2,5.7,-3]],"scale":[[0,0.99,1,1.01],[0.52,1.01,1,0.99],[1.04,0.99,1,1.01],[1.52,1.01,1,0.99],[2,0.99,1,1.01]]},"torso":{"rotation":[[0,-5,0,0]]},"bodyrot":{"rotation":[[0,0,-2.5,0],[1,0,2.5,0],[2,0,-2.5,0]]},"skirt":{"rotation":[[0,-12,0.99,0.15],[0.28,-12,1.4905,0.21803],[0.72,-12,0,0],[1.2,-12,-1.4905,-0.21803],[1.68,-12,0,0],[2,-12,0.99,0.15]],"position":[[0,0.004,-0.06472,-0.24145]]},"headrot":{"rotation":[[0,7.43656,0.9762,-7.43656],[0.48,9.52,-0.68,0],[1,0,0,6.5],[1.52,1.33,-0.68,0],[2,7.43656,0.9762,-7.43656]],"position":[[0,0,-0.19829,-0.02611]]},"strand1":{"rotation":[[0,4e-05,0.34867,-2.48784],[1.28,-2.50442,-0.25149,2.48773],[2,4e-05,0.34867,-2.48784]]},"strand2":{"rotation":[[0,4e-05,-0.34867,2.48784],[1.28,-2.50442,0.25149,-2.48773],[2,4e-05,-0.34867,2.48784]]},"l_arm":{"rotation":[[0,-17.5,0,0],[1,-14.98436,0.75155,2.38443],[2,-17.5,0,0]]},"hand":{"rotation":[[0,0,0,12.5],[1,0,0,7.5],[2,0,0,12.5]]},"r_arm":{"rotation":[[0,-17.5,0,0],[1,-14.98436,-0.75155,-2.38443],[2,-17.5,0,0]]},"hand_2":{"rotation":[[0,0,0,-12.5],[1,0,0,-7.5],[2,0,0,-12.5]]},"l_leg":{"rotation":[[0,-24.99762,-0.10901,-2.49762]]},"r_leg":{"rotation":[[0,-20,0,2.5]]},"wing1":{"rotation":[[0,0,0,0],[0.36,0,-25,0],[0.72,0,0,0],[1,0,-25,0],[1.32,0,0,0],[1.64,0,-25,0],[2,0,0,0]]},"wing2":{"rotation":[[0,0,0,0],[0.36,0,25,0],[0.72,0,0,0],[1,0,25,0],[1.32,0,0,0],[1.64,0,25,0],[2,0,0,0]]}}},"crawlstill":{"loop":"loop","length":0,"bones":{"torsorot":{"rotation":[[0,-12.5,0,0]]},"headrot":{"rotation":[[0,32.5,0,0]]},"l_arm":{"rotation":[[0,157.5,0,0]]},"r_arm":{"rotation":[[0,157.5,0,0]]},"l_leg":{"rotation":[[0,22.5,0,0]]},"r_leg":{"rotation":[[0,17.5,0,0]]},"knee_2":{"rotation":[[0,-35,0,0]]}}},"crawl":{"loop":"loop","length":2,"bones":{"torsorot":{"rotation":[[0,-12.5,0,0]]},"headrot":{"rotation":[[0,32.5,0,0]]},"l_arm":{"rotation":[[0,157.5,0,0],[1,168.29908,-19.3546,-57.99794],[2,157.5,0,0]]},"r_arm":{"rotation":[[0,157.5,0,0],[1,168.29908,19.3546,57.99794],[2,157.5,0,0]]},"l_leg":{"rotation":[[0,22.5,0,0]]},"r_leg":{"rotation":[[0,17.5,0,0]]},"skirt":{"rotation":[[0,25,0,0]]},"hand":{"rotation":[[0,0,0,0],[1,0,0,-32.5],[2,0,0,0]]},"hand_2":{"rotation":[[0,0,0,0],[1,0,0,32.5],[2,0,0,0]]},"knee":{"rotation":[[0,-35,0,0],[1,0,0,0],[2,-35,0,0]]},"knee_2":{"rotation":[[0,0,0,0],[1,-35,0,0],[2,0,0,0]]}}},"climb":{"loop":"loop","length":2,"bones":{"whole":{"position":[[0,0,2.7,-3]],"scale":[[0,0.99,1,1.01]]},"torso":{"rotation":[[0,-5,0,0]]},"bodyrot":{"rotation":[[0,0,-2.5,0]]},"skirt":{"rotation":[[0,-12,0.99,0.15]],"position":[[0,0.004,-0.06472,-0.24145]]},"headrot":{"rotation":[[0,25,0,0]]},"strand1":{"rotation":[[0,4e-05,0.34867,-2.48784]]},"strand2":{"rotation":[[0,4e-05,-0.34867,2.48784]]},"l_arm":{"rotation":[[0,-17.5,0,0]]},"hand":{"rotation":[[0,0,0,12.5]]},"r_arm":{"rotation":[[0,-17.5,0,0]]},"hand_2":{"rotation":[[0,0,0,-12.5]]},"l_leg":{"rotation":[[0,-2.49762,-0.10901,-2.49762]]},"r_leg":{"rotation":[[0,-2.5,0,2.5]]}}},"climbstill":{"loop":"loop","length":2,"bones":{"whole":{"position":[[0,0,2.7,-3]],"scale":[[0,0.99,1,1.01]]},"torso":{"rotation":[[0,-5,0,0]]},"bodyrot":{"rotation":[[0,0,-2.5,0]]},"skirt":{"rotation":[[0,-12,0.99,0.15]],"position":[[0,0.004,-0.06472,-0.24145]]},"headrot":{"rotation":[[0,-2.5,0,0]]},"strand1":{"rotation":[[0,4e-05,0.34867,-2.48784]]},"strand2":{"rotation":[[0,4e-05,-0.34867,2.48784]]},"l_arm":{"rotation":[[0,-17.5,0,0]]},"hand":{"rotation":[[0,0,0,12.5]]},"r_arm":{"rotation":[[0,-17.5,0,0]]},"hand_2":{"rotation":[[0,0,0,-12.5]]},"l_leg":{"rotation":[[0,-2.49762,-0.10901,-2.49762]]},"r_leg":{"rotation":[[0,-2.5,0,2.5]]}}},"fly":{"loop":"loop","length":2,"bones":{"whole":{"position":[[0,0,2.7,-3]],"scale":[[0,0.99,1,1.01]]},"torso":{"rotation":[[0,-5,0,0]]},"bodyrot":{"rotation":[[0,0,-2.5,0]]},"skirt":{"rotation":[[0,-12,0.99,0.15]],"position":[[0,0.004,-0.06472,-0.24145]]},"headrot":{"rotation":[[0,-2.5,0,0]]},"strand1":{"rotation":[[0,4e-05,0.34867,-2.48784]]},"strand2":{"rotation":[[0,4e-05,-0.34867,2.48784]]},"l_arm":{"rotation":[[0,-17.5,0,0]]},"hand":{"rotation":[[0,0,0,12.5]]},"r_arm":{"rotation":[[0,-17.5,0,0]]},"hand_2":{"rotation":[[0,0,0,-12.5]]},"l_leg":{"rotation":[[0,-2.49762,-0.10901,-2.49762]]},"r_leg":{"rotation":[[0,-2.5,0,2.5]]}}},"climbcrouch":{"loop":"loop","length":2,"bones":{"whole":{"position":[[0,0,2.7,-3]],"scale":[[0,0.99,1,1.01]]},"torso":{"rotation":[[0,-5,0,0]]},"bodyrot":{"rotation":[[0,0,-2.5,0]]},"skirt":{"rotation":[[0,-12,0.99,0.15]],"position":[[0,0.004,-0.06472,-0.24145]]},"headrot":{"rotation":[[0,-2.5,0,0]],"position":[[0,0,-0.95372,-0.30071]]},"strand1":{"rotation":[[0,4e-05,0.34867,-2.48784]]},"strand2":{"rotation":[[0,4e-05,-0.34867,2.48784]]},"l_arm":{"rotation":[[0,-17.5,0,0]]},"hand":{"rotation":[[0,0,0,12.5]]},"r_arm":{"rotation":[[0,-17.5,0,0]]},"hand_2":{"rotation":[[0,0,0,-12.5]]},"l_leg":{"rotation":[[0,-2.49762,-0.10901,-2.49762]]},"r_leg":{"rotation":[[0,-2.5,0,2.5]]},"neck":{"position":[[0,0,5,0]]}}},"jumpdownmain":{"loop":"loop","length":2,"bones":{"whole":{"position":[[0,0,-0.5,0]],"scale":[[0,1.01,0.99,1]]},"strand1":{"rotation":[[0,0,0,5]]},"strand2":{"rotation":[[0,0,0,-5]]},"l_arm":{"rotation":[[0,0,0,5]]},"r_arm":{"rotation":[[0,0,0,-5]]},"l_leg":{"rotation":[[0,20,0,0]]},"knee":{"rotation":[[0,-45,0,0]]},"r_leg":{"rotation":[[0,7.49294,0.32621,-2.47864]]},"knee_2":{"rotation":[[0,-25,0,0]]}}},"jumpupmain":{"loop":"loop","length":1.48,"bones":{"whole":{"position":[[0,0,-0.5,0],[0.28,0,1,0]],"scale":[[0,0.99,0.99,1]]},"strand1":{"rotation":[[0,0,0,-2.5]]},"strand2":{"rotation":[[0,0,0,2.5]]},"l_arm":{"rotation":[[0,0,0,-2.5]]},"r_arm":{"rotation":[[0,0,0,2.5]]},"knee":{"rotation":[[0,-45,0,0]]},"r_leg":{"rotation":[[0,7.5,0,0]]},"knee_2":{"rotation":[[0,-25,0,0]]}}},"crouch":{"loop":"loop","length":0,"bones":{"whole":{"rotation":[[0,7.5,0,0]],"position":[[0,0,-5.25,-3]]},"torsorot":{"rotation":[[0,-32.5,0,0]],"position":[[0,0,2.53017,-1.6119]]},"neck":{"position":[[0,0,4,0]]},"skirt":{"rotation":[[0,15,0,0]]},"back":{"rotation":[[0,15,0,0]]},"skirt2":{"position":[[0,0,0.3,0.5]]},"right":{"rotation":[[0,17.5,0,0]]},"left":{"rotation":[[0,15,0,0]]},"front":{"rotation":[[0,30,0,0]]},"headrot":{"rotation":[[0,17.5,0,0]],"position":[[0,0,-0.95372,-0.30071]]},"l_arm":{"rotation":[[0,47.5,0,0]],"position":[[0,0,-1.41287,-0.06169]]},"hand":{"rotation":[[0,0,27.5,-67.5]]},"r_arm":{"rotation":[[0,47.5,0,0]],"position":[[0,0,-1.41287,-0.06169]]},"hand_2":{"rotation":[[0,-2.58807,-14.98539,83.16963]]},"l_leg":{"rotation":[[0,37.5,0,0]],"position":[[0,0,4.09789,-0.25642]]},"knee":{"rotation":[[0,-60,0,0]]},"r_leg":{"rotation":[[0,37.5,0,0]],"position":[[0,0,4.06526,-0.50428]]},"knee_2":{"rotation":[[0,-60,0,0]]}}},"crouchwalk":{"loop":"loop","length":0.96,"bones":{"whole":{"rotation":[[0,7.5,0,0]],"position":[[0,0,-4.75,-3]]},"torsorot":{"rotation":[[0,-32.5,0,0]],"position":[[0,0,2.53017,-1.6119]]},"neck":{"position":[[0,0,4,0]]},"skirt":{"rotation":[[0,15,0,0]]},"back":{"rotation":[[0,15,0,0]]},"skirt2":{"position":[[0,0,0.3,0.5]]},"right":{"rotation":[[0,17.5,0,0]]},"left":{"rotation":[[0,15,0,0]]},"front":{"rotation":[[0,30,0,0]]},"headrot":{"rotation":[[0,17.5,0,0]],"position":[[0,0,-0.95372,-0.30071]]},"l_arm":{"rotation":[[0,47.5,0,0]],"position":[[0,0,-1.41287,-0.06169]]},"hand":{"rotation":[[0,26.06663,9.08661,4.60756]]},"r_arm":{"rotation":[[0,47.5,0,0]],"position":[[0,0,-1.41287,-0.06169]]},"hand_2":{"rotation":[[0,14.36091,-5.04036,2.19378]]},"l_leg":{"rotation":[[0,2.5,0,0],[0.48,37.5,0,0],[0.96,2.5,0,0]],"position":[[0,0,4.09789,-0.25642]]},"knee":{"rotation":[[0,-60,0,0]]},"r_leg":{"rotation":[[0,37.5,0,0],[0.48,2.5,0,0],[0.96,37.5,0,0]],"position":[[0,0,4.06526,-0.50428]]},"knee_2":{"rotation":[[0,-60,0,0]]}}},"water":{"loop":"loop","length":2,"bones":{"l_arm":{"rotation":[[0,47.5,-20,0],[1,22.5,-20,17],[2,47.5,-20,0]],"position":[[0,0.05777,-0.18432,0.15871]]},"hand":{"rotation":[[0,12.68664,9.76061,2.18558],[0.24,8.00009,3.55086,2.65001],[1.08,12.69,9.76,1.19],[2,12.69,9.76,2.19]]},"r_arm":{"rotation":[[0,47.5,20,0],[1,22.5,20,-17],[2,47.5,20,0]],"position":[[0,-0.05777,-0.18432,0.15871]]},"hand_2":{"rotation":[[0,12.68664,-9.76061,-2.18558],[0.24,8.00009,-3.55086,-2.65001],[1.08,12.69,-9.76,-1.19],[2,12.69,-9.76,-2.19]]},"l_leg":{"rotation":[[0,27.5,0,0],[0.52,-15,0,0],[0.96,27.5,0,0],[1.44,-15,0,0],[2,27.5,0,0]]},"r_leg":{"rotation":[[0,-15,0,0],[0.48,27.5,0,0],[1,-15,0,0],[1.44,27.5,0,0],[2,-15,0,0]]}}},"waterdown":{"loop":"loop","length":2,"bones":{"l_arm":{"rotation":[[0,47.5,-20,0],[1,22.5,-20,17],[2,47.5,-20,0]],"position":[[0,0.05777,-0.18432,0.15871]]},"hand":{"rotation":[[0,12.68664,9.76061,2.18558],[0.24,8.00009,3.55086,2.65001],[1.08,12.69,9.76,1.19],[2,12.69,9.76,2.19]]},"r_arm":{"rotation":[[0,47.5,20,0],[1,22.5,20,-17],[2,47.5,20,0]],"position":[[0,-0.05777,-0.18432,0.15871]]},"hand_2":{"rotation":[[0,12.68664,-9.76061,-2.18558],[0.24,8.00009,-3.55086,-2.65001],[1.08,12.69,-9.76,-1.19],[2,12.69,-9.76,-2.19]]},"l_leg":{"rotation":[[0,27.5,0,0],[0.52,-15,0,0],[0.96,27.5,0,0],[1.44,-15,0,0],[2,27.5,0,0]]},"r_leg":{"rotation":[[0,-15,0,0],[0.48,27.5,0,0],[1,-15,0,0],[1.44,27.5,0,0],[2,-15,0,0]]}}},"waterup":{"loop":"loop","length":2,"bones":{"l_arm":{"rotation":[[0,87.5,-20,0],[1,62.5,-20,17],[2,87.5,-20,0]],"position":[[0,0.05777,-0.18432,0.15871]]},"hand":{"rotation":[[0,12.68664,9.76061,2.18558],[0.24,8.00009,3.55086,2.65001],[1.08,12.69,9.76,1.19],[2,12.69,9.76,2.19]]},"r_arm":{"rotation":[[0,87.5,20,0],[1,62.5,20,-17],[2,87.5,20,0]],"position":[[0,-0.05777,-0.18432,0.15871]]},"hand_2":{"rotation":[[0,12.68664,-9.76061,-2.18558],[0.24,8.00009,-3.55086,-2.65001],[1.08,12.69,-9.76,-1.19],[2,12.69,-9.76,-2.19]]},"l_leg":{"rotation":[[0,27.5,0,0],[0.52,-15,0,0],[0.96,27.5,0,0],[1.44,-15,0,0],[2,27.5,0,0]]},"r_leg":{"rotation":[[0,-15,0,0],[0.48,27.5,0,0],[1,-15,0,0],[1.44,27.5,0,0],[2,-15,0,0]]}}},"swim":{"loop":"loop","length":2,"bones":{"headrot":{"rotation":[[0,40,0,0]]},"l_arm":{"rotation":[[0,7.05239,-2.55868,132.3423],[0.28,33.46275,-4.55749,146.76251],[1.24,28.37671,26.31924,25.57444],[1.72,3.85816,1.90777,57.77968],[2,7.05239,-2.55868,132.3423]]},"hand":{"rotation":[[0,0,0,0],[1,0,0,87.5],[2,0,0,0]]},"r_arm":{"rotation":[[0,7.05239,2.55868,-132.3423],[0.28,33.46275,4.55749,-146.76251],[1.24,28.37671,-26.31924,-25.57444],[1.72,3.85816,-1.90777,-57.77968],[2,7.05239,2.55868,-132.3423]]},"hand_2":{"rotation":[[0,0,0,0],[1,0,0,-87.5],[2,0,0,0]]},"l_leg":{"rotation":[[0,27.5,0,0],[0.52,-15,0,0],[0.96,27.5,0,0],[1.44,-15,0,0],[2,27.5,0,0]]},"knee":{"rotation":[[0,-32.5,0,0],[0.28,-32.5,0,0],[0.52,-10,0,0],[2,-32.5,0,0]]},"r_leg":{"rotation":[[0,-15,0,0],[0.48,27.5,0,0],[1,-15,0,0],[1.44,27.5,0,0],[2,-15,0,0]]},"knee_2":{"rotation":[[0,-32.5,0,0],[0.28,-32.5,0,0],[0.52,-10,0,0],[2,-32.5,0,0]]}}},"elytradown":{"loop":"loop","length":0.4,"bones":{"skirt":{"rotation":[[0,-12.5,0,0]]},"l_arm":{"rotation":[[0,0,0,-7.5]]},"r_leg":{"rotation":[[0,-17.5,0,0]]},"skirt2":{"rotation":[[0,0,0,0],[0.2,0,-7.5,0],[0.4,0,0,0]]},"r_arm":{"rotation":[[0,0,0,7.5]]},"knee":{"rotation":[[0,-37.47365,1.5216,1.98385]]}}},"sit":{"loop":"loop","length":0,"bones":{"whole":{"position":[[0,0,-2,-2]]},"torso":{"rotation":[[0,5.01405,4.97973,0.43645]]},"skirt":{"rotation":[[0,10,0,0]]},"front":{"rotation":[[0,27.5,0,0]]},"headrot":{"rotation":[[0,-7.85085,-31.63886,14.72765]]},"iris":{"position":[[0,0.6,0,0]]},"iris2":{"position":[[0,0.1,0,0]]},"lashes":{"position":[[0,0,-0.19981,0.00872]]},"left_lashes":{"position":[[0,0.09999,0.00032,-0.0016]]},"twintail":{"rotation":[[0,0,0,-10]]},"twintail_2":{"rotation":[[0,0,0,-15]]},"strand1":{"rotation":[[0,0,0,-7.5]]},"strand2":{"rotation":[[0,0,0,-15]]},"l_arm":{"rotation":[[0,17.75832,-9.85376,-3.13827]]},"hand":{"rotation":[[0,49.4913,33.71462,-65.04217]],"position":[[0,-0.67796,-0.52803,0.27211]]},"r_arm":{"rotation":[[0,17.40525,-1.08077,4.88412]]},"hand_2":{"rotation":[[0,0,0,-22.5]]},"l_leg":{"rotation":[[0,78.65584,16.94726,-2.93447]],"position":[[0,0.94782,-0.93303,0.4802]]},"knee":{"rotation":[[0,-60,0,0]]},"r_leg":{"rotation":[[0,68.72068,-11.7153,4.62782]],"position":[[0,-1.00182,-0.93354,0.35336]]},"knee_2":{"rotation":[[0,-55,0,0]]},"goblet":{"rotation":[[0,70.2686,-13.94571,123.47074]]}}},"jumpupsword":{"loop":"loop","length":2,"bones":{"whole":{"position":[[0,0,-0.5,0],[0.28,0,1,0]],"scale":[[0,0.99,0.99,1]]},"strand1":{"rotation":[[0,0,0,-2.5]]},"strand2":{"rotation":[[0,0,0,2.5]]},"l_arm":{"rotation":[[0,26.26935,19.08121,-42.72817]],"position":[[0,-0.63709,-1.02729,-0.73402]]},"r_arm":{"rotation":[[0,26.26935,-19.08121,42.72817]],"position":[[0,0.63709,-1.02729,-0.73402]]},"knee":{"rotation":[[0,-45,0,0]]},"r_leg":{"rotation":[[0,7.5,0,0]]},"knee_2":{"rotation":[[0,-25,0,0]]},"hand":{"rotation":[[0,0,0,-12.5]]},"hand_2":{"rotation":[[0,15,0,12.5]]}}},"jumpdownsword":{"loop":"loop","length":1.64,"bones":{"whole":{"position":[[0,0,-0.5,0]],"scale":[[0,1.01,0.99,1]]},"strand1":{"rotation":[[0,0,0,5]]},"strand2":{"rotation":[[0,0,0,-5]]},"l_arm":{"rotation":[[0,26.26935,19.08121,-42.72817]],"position":[[0,-0.63709,-1.02729,-0.73402]]},"r_arm":{"rotation":[[0,26.26935,-19.08121,42.72817]],"position":[[0,0.63709,-1.02729,-0.73402]]},"l_leg":{"rotation":[[0,20,0,0]]},"knee":{"rotation":[[0,-45,0,0]]},"r_leg":{"rotation":[[0,7.49294,0.32621,-2.47864]]},"knee_2":{"rotation":[[0,-25,0,0]]},"hand":{"rotation":[[0,0,0,-12.5]]},"hand_2":{"rotation":[[0,15,0,12.5]]}}},"sword_hands":{"loop":"loop","length":0,"bones":{"l_arm":{"rotation":[[0,26.26935,19.08121,-42.72817]],"position":[[0,-0.63709,-1.02729,-0.73402]]},"hand":{"rotation":[[0,0,0,-12.5]]},"r_arm":{"rotation":[[0,26.26935,-19.08121,42.72817]],"position":[[0,0.63709,-1.02729,-0.73402]]},"hand_2":{"rotation":[[0,15,0,12.5]]}}},"walkbacksword":{"loop":"loop","length":2,"bones":{"headrot":{"rotation":[[0,-15.50409,-14.47751,3.96713],[1,-13.00409,-14.47751,3.96713],[2,-15.50409,-14.47751,3.96713]]},"twintail":{"rotation":[[0,10,0,0]]},"strand1":{"rotation":[[0,-0.01517,0.34834,-4.98788],[0.12,-0.04794,0.63514,-6.97987],[1,-0.00442,-0.25149,2.48773],[2,-0.01517,0.34834,-4.98788]]},"strand2":{"rotation":[[0,-0.01517,0.34834,-4.98788],[0.12,-0.04794,0.63514,-6.97987],[1,-0.00442,-0.25149,2.48773],[2,-0.01517,0.34834,-4.98788]]},"iris":{"position":[[0,0.35,0,0]]},"iris2":{"position":[[0,0,0,0]]},"skirt":{"rotation":[[0,-16,0,-5],[1.12,-16,0,5],[2,-16,0,-5]]},"l_arm":{"rotation":[[0,26.26935,19.08121,-42.72817]],"position":[[0,-0.63709,-1.02729,-0.73402]]},"hand":{"rotation":[[0,0,0,-12.5]]},"l_leg":{"rotation":[[0,-27.5,0,0],[1,15,0,0],[1.32,27.5,0,0],[2,-27.5,0,0]]},"r_leg":{"rotation":[[0,15,0,0],[0.2,27.5,0,0],[1,-27.5,0,0],[2,15,0,0]]},"twintail_2":{"rotation":[[0,10,0,0]]},"front":{"position":[[0,0,0,-0.3]]},"r_arm":{"rotation":[[0,26.26935,-19.08121,42.72817]],"position":[[0,0.63709,-1.02729,-0.73402]]},"hand_2":{"rotation":[[0,15,0,12.5]]},"bodyrot":{"rotation":[[0,12.5,0,0]]},"knee_2":{"rotation":[[0,-15,0,0],[0.2,-52.5,0,0],[1,-6.67,0,0],[1.52,0,0,0],[2,-15,0,0]]},"knee":{"rotation":[[0,-6.67,0,0],[0.52,0,0,0],[1,-15,0,0],[1.36,-52.5,0,0],[2,-6.67,0,0]]},"RightItemPivot":{"rotation":[[0,0,-7.5,-62.5]]}}},"walksword":{"loop":"loop","length":2,"bones":{"l_arm":{"rotation":[[0,26.26935,19.08121,-42.72817]],"position":[[0,-0.63709,-1.02729,-0.73402]]},"head":{"rotation":[[0,0,-2.5,0],[1,0,2.5,0],[2,0,-2.5,0]]},"strand1":{"rotation":[[0,-0.01795,-0.47872,4.97766],[1,-0.00379,0.17434,-2.49392],[1.96,-0.01795,-0.47872,4.97766]]},"strand2":{"rotation":[[0,-0.01795,0.47872,-4.97766],[1,-0.00379,-0.17434,2.49392],[1.96,-0.01795,0.47872,-4.97766]]},"skirt":{"rotation":[[0,0,0,5],[1.2,0,0,-5],[2,0,0,5]]},"hand":{"rotation":[[0,0,0,-12.5]]},"l_leg":{"rotation":[[0,-25.41522,-2.15033,-4.51505],[0.52,16.76126,-1.42522,0.27707],[1.04,25.91403,2.18961,-4.49616],[2,-25.41522,-2.15033,-4.51505]],"position":[[0,0,0,0],[1,0,0,1],[2,0,0,0]],"scale":[[0,1,1,1],[0.8,1.05,0.95,1],[1,1,1,1],[1.8,1.05,0.95,1],[2,1,1,1]]},"r_leg":{"rotation":[[0,25.91403,-2.18961,4.49616],[1,-25.41522,2.15033,4.51505],[1.52,16.69983,1.31972,-0.27862],[2,25.91403,-2.18961,4.49616]],"position":[[0,0,0,1],[1,0,0,0],[2,0,0,1]],"scale":[[0,1,1,1],[0.8,1.05,0.95,1],[1,1,1,1],[1.8,1.05,0.95,1],[2,1,1,1]]},"r_arm":{"rotation":[[0,26.26935,-19.08121,42.72817]],"position":[[0,0.63709,-1.02729,-0.73402]]},"hand_2":{"rotation":[[0,15,0,12.5]]},"skirt2":{"rotation":[[0,-0.94307,-4.79627,-7.83205],[1.16,-2.06251,2.36966,10.30631],[2,-0.94307,-4.79627,-7.83205]]},"knee_2":{"rotation":[[0,-9.65,0,0],[0.16,0,0,0],[0.56,0,0,0],[1,-20,0,0],[1.36,-35,0,0],[1.8,-35,0,0],[2,-9.65,0,0]]},"knee":{"rotation":[[0,-20,0,0],[0.72,-35,0,0],[1,-9.65,0,0],[1.16,0,0,0],[1.56,0,0,0],[2,-20,0,0]]},"RightItemPivot":{"rotation":[[0,0,-7.5,-62.5]]},"bodyrot2":{"rotation":[[0,-2.5,10,0],[0.48,0,0,0],[1,-2.49986,-9.98135,0.86795],[1.52,0,0,0],[2,-2.5,10,0]]}}},"sprintsword":{"loop":"loop","length":2,"bones":{"whole":{"position":[[0,2,5.7,-3],[0.48,0,3.3,0],[1,-2,5.7,-3],[1.48,0,3.4,0],[2,2,5.7,-3]],"scale":[[0,0.99,1,1.01],[0.52,1.01,1,0.99],[1.04,0.99,1,1.01],[1.52,1.01,1,0.99],[2,0.99,1,1.01]]},"torso":{"rotation":[[0,-5,0,0]]},"bodyrot":{"rotation":[[0,0,-2.5,0],[1,0,2.5,0],[2,0,-2.5,0]]},"skirt":{"rotation":[[0,-12,0.99,0.15],[0.28,-12,1.4905,0.21803],[0.72,-12,0,0],[1.2,-12,-1.4905,-0.21803],[1.68,-12,0,0],[2,-12,0.99,0.15]],"position":[[0,0.004,-0.06472,-0.24145]]},"headrot":{"rotation":[[0,7.43656,0.9762,-7.43656],[0.48,9.52,-0.68,0],[1,0,0,6.5],[1.52,1.33,-0.68,0],[2,7.43656,0.9762,-7.43656]],"position":[[0,0,-0.19829,-0.02611]]},"strand1":{"rotation":[[0,4e-05,0.34867,-2.48784],[1.28,-2.50442,-0.25149,2.48773],[2,4e-05,0.34867,-2.48784]]},"strand2":{"rotation":[[0,4e-05,-0.34867,2.48784],[1.28,-2.50442,0.25149,-2.48773],[2,4e-05,-0.34867,2.48784]]},"l_arm":{"rotation":[[0,26.26935,19.08121,-42.72817]],"position":[[0,-0.63709,-1.02729,-0.73402]]},"hand":{"rotation":[[0,0,0,-12.5]]},"r_arm":{"rotation":[[0,26.26935,-19.08121,42.72817]],"position":[[0,0.63709,-1.02729,-0.73402]]},"hand_2":{"rotation":[[0,15,0,12.5]]},"l_leg":{"rotation":[[0,-2.49762,-0.10901,-2.49762]]},"r_leg":{"rotation":[[0,-20,0,2.5]]},"RightItemPivot":{"rotation":[[0,0,-7.5,-62.5]]},"wings":{"scale":[[0,1.1,1.1,1]]},"wing1":{"rotation":[[0,0,0,0],[0.36,0,-25,0],[0.72,0,0,0],[1,0,-25,0],[1.32,0,0,0],[1.64,0,-25,0],[2,0,0,0]]},"wing2":{"rotation":[[0,0,0,0],[0.36,0,25,0],[0.72,0,0,0],[1,0,25,0],[1.32,0,0,0],[1.64,0,25,0],[2,0,0,0]]},"knee":{"rotation":[[0,-42.5,0,0]]},"knee_2":{"rotation":[[0,-60,0,0]]}}},"idlesword":{"loop":"loop","length":1,"bones":{"torsorot":{"rotation":[[0,-12.5,0,0],[0.52,-5,0,0],[1,-12.5,0,0]]},"headrot":{"rotation":[[0,15,0,0],[0.52,10,0,0],[1,15,0,0]],"position":[[0,0,-0.19319,-0.05176]]},"right_lashes":{"rotation":[[0,0,0,-2.5]],"position":[[0,-0.10062,-0.20398,0.00338]]},"left_lashes":{"rotation":[[0,0,0,2.5]],"position":[[0,0.1028,-0.20402,0.00338]]},"l_arm":{"rotation":[[0,26.26935,19.08121,-42.72817]],"position":[[0,-0.63709,-1.02729,-0.73402]]},"hand":{"rotation":[[0,0,0,-12.5]]},"r_arm":{"rotation":[[0,26.26935,-19.08121,42.72817]],"position":[[0,0.63709,-1.02729,-0.73402]]},"RightItemPivot":{"rotation":[[0,0,-7.5,-62.5]]},"hand_2":{"rotation":[[0,15,0,12.5]]},"l_leg":{"rotation":[[0,-5,0,-5]]},"knee":{"rotation":[[0,-32.5,0,0]]},"r_leg":{"rotation":[[0,7.47178,-0.65182,4.95744]]},"bodyrot2":{"rotation":[[0,0,-10,0]]}}},"idlesword111":{"loop":"loop","length":1,"bones":{"torsorot":{"rotation":[[0,-12.5,0,0],[0.52,-5,0,0],[1,-12.5,0,0]]},"headrot":{"rotation":[[0,-35,0,0]],"position":[[0,0,-0.19319,-0.05176]]},"right_lashes":{"position":[[0,-0.10062,-0.20398,0.00338]]},"left_lashes":{"position":[[0,0.1028,-0.20402,0.00338]]},"l_arm":{"rotation":[[0,51.64317,51.60899,-13.12772]],"position":[[0,-0.63709,-1.02729,-0.73402]]},"r_arm":{"rotation":[[0,51.64317,-51.60897,13.12772]],"position":[[0,0.63709,-1.02729,-0.73402]]},"RightItemPivot":{"position":[[0,-0.50514,-0.55378,1.00033]]},"l_leg":{"rotation":[[0,-5,0,-5]]},"r_leg":{"rotation":[[0,7.47178,-0.65182,4.95744]]},"bodyrot2":{"rotation":[[0,0,-10,0]]},"lashes":{"position":[[0,0,-1,0]]},"blink2":{"position":[[0,0,0,-1.1]]},"blink3":{"position":[[0,0,0,-1.1]]},"knee":{"rotation":[[0,-32.5,0,0]]}}},"walkbackproud":{"loop":"loop","length":2,"bones":{"headrot":{"rotation":[[0,7.5,0,0]]},"twintail":{"rotation":[[0,10,0,0]]},"strand1":{"rotation":[[0,-0.01517,0.34834,-4.98788],[0.12,-0.04794,0.63514,-6.97987],[1,-0.00442,-0.25149,2.48773],[2,-0.01517,0.34834,-4.98788]]},"strand2":{"rotation":[[0,-0.01517,0.34834,-4.98788],[0.12,-0.04794,0.63514,-6.97987],[1,-0.00442,-0.25149,2.48773],[2,-0.01517,0.34834,-4.98788]]},"iris":{"position":[[0,0,-0.25,0]]},"iris2":{"position":[[0,0,-0.25,0]]},"skirt":{"rotation":[[0,-11,0,-5],[1.12,-11,0,5],[2,-11,0,-5]]},"l_arm":{"rotation":[[0,12.5,0,0],[1,-12.5,0,0],[2,12.5,0,0]]},"hand":{"rotation":[[0,0,0,12.5],[0.2,7.5,0,12.5],[1,0,0,12.5],[1.24,-5,0,12.5],[2,0,0,12.5]]},"l_leg":{"rotation":[[0,-27.5,0,0],[1,15,0,0],[1.32,27.5,0,0],[2,-27.5,0,0]]},"r_leg":{"rotation":[[0,15,0,0],[0.2,27.5,0,0],[1,-27.5,0,0],[2,15,0,0]]},"twintail_2":{"rotation":[[0,10,0,0]]},"front":{"rotation":[[0,10,0,0]],"position":[[0,0,0,-0.3]]},"r_arm":{"rotation":[[0,0,0,-25],[1.04,0,0,-20],[2,0,0,-25]]},"hand_2":{"rotation":[[0,0,0,102.5]]},"bodyrot":{"rotation":[[0,0,0,0]]},"knee_2":{"rotation":[[0,-15,0,0],[0.2,-52.5,0,0],[1,-6.67,0,0],[1.52,0,0,0],[2,-15,0,0]]},"knee":{"rotation":[[0,-6.67,0,0],[0.52,0,0,0],[1,-15,0,0],[1.36,-52.5,0,0],[2,-6.67,0,0]]},"torsorot":{"rotation":[[0,0,7.5,0]]},"right":{"rotation":[[0,12.5,0,0]]},"left":{"rotation":[[0,12.5,0,0]]},"bodyrot2":{"rotation":[[0,0,15,0]]}}},"walkproud":{"loop":"loop","length":2,"bones":{"l_arm":{"rotation":[[0,22.5,0,0],[1,-25,0,0],[2,22.5,0,0]]},"headrot":{"rotation":[[0,7.5,0,0]]},"head":{"rotation":[[0,0,-2.5,0],[1,0,2.5,0],[2,0,-2.5,0]]},"strand1":{"rotation":[[0,-0.01795,-0.47872,4.97766],[1,-0.00379,0.17434,-2.49392],[1.96,-0.01795,-0.47872,4.97766]]},"strand2":{"rotation":[[0,-0.01795,0.47872,-4.97766],[1,-0.00379,-0.17434,2.49392],[1.96,-0.01795,0.47872,-4.97766]]},"skirt":{"rotation":[[0,0,0,5],[1.2,0,0,-5],[2,0,0,5]]},"hand":{"rotation":[[0,0,0,7.5],[0.24,12.5,0,8.3],[1,0,0,12.5],[1.16,-7.5,0,11.7],[2,0,0,7.5]]},"l_leg":{"rotation":[[0,-25.5,0,0],[1.04,26,0,0],[2,-25.5,0,0]],"position":[[0,0,0,0],[1,0,0,1],[2,0,0,0]],"scale":[[0,1,1,1],[0.8,1.05,0.95,1],[1,1,1,1],[1.8,1.05,0.95,1],[2,1,1,1]]},"r_leg":{"rotation":[[0.04,26,0,0],[1,-25.5,0,0],[2,26,0,0]],"position":[[0,0,0,1],[1,0,0,0],[2,0,0,1]],"scale":[[0,1,1,1],[0.8,1.05,0.95,1],[1,1,1,1],[1.8,1.05,0.95,1],[2,1,1,1]]},"r_arm":{"rotation":[[0,0,0,-25]]},"hand_2":{"rotation":[[0,0,0,102.5]]},"skirt2":{"rotation":[[0,-0.94307,-4.79627,-7.83205],[1.16,-2.06251,2.36966,10.30631],[2,-0.94307,-4.79627,-7.83205]]},"bodyrot":{"rotation":[[0,0,-5,0]]},"knee_2":{"rotation":[[0,-9.65,0,0],[0.16,0,0,0],[0.56,0,0,0],[1,-20,0,0],[1.36,-35,0,0],[1.8,-35,0,0],[2,-9.65,0,0]]},"knee":{"rotation":[[0,-20,0,0],[0.72,-35,0,0],[1,-9.65,0,0],[1.16,0,0,0],[1.56,0,0,0],[2,-20,0,0]]},"torsorot":{"rotation":[[0,0,7.5,0]]},"iris":{"position":[[0,0,-0.25,0]]},"iris2":{"position":[[0,0,-0.25,0]]}}},"idleproud":{"loop":"loop","length":0,"bones":{"torsorot":{"rotation":[[0,0,7.5,0]]},"torso":{"rotation":[[0,5,0,0]]},"bodyrot":{"rotation":[[0,0,-5,0]]},"headrot":{"rotation":[[0,7.5,0,0]]},"iris":{"position":[[0,0,-0.5,0]]},"iris2":{"position":[[0,0,-0.5,0]]},"lashes":{"position":[[0,0,-0.25,0]]},"twintail":{"rotation":[[0,-15,0,0]]},"twintail_2":{"rotation":[[0,-15,0,0]]},"strand1":{"rotation":[[0,-7.5,0,0]]},"strand2":{"rotation":[[0,-7.5,0,0]]},"skirt":{"rotation":[[0,-9.91615,1.29876,7.38733]]},"bodyrot2":{"rotation":[[0,0,15,0]]},"r_arm":{"rotation":[[0,0,0,-25]]},"hand_2":{"rotation":[[0,0,0,102.5]]},"l_leg":{"position":[[0,0.5,0,0]]},"r_leg":{"rotation":[[0,0,0,-15]]}}},"walkgoblet":{"loop":"loop","length":2,"bones":{"l_arm":{"rotation":[[0,24.78507,-12.31064,24.78507],[1,4.79,-12.31,24.79],[2,24.79,-12.31,24.79]]},"headrot":{"rotation":[[0,-7.07539,-19.24364,12.93318],[1,-6.76788,-9.31612,11.6912],[2,-7.07539,-19.24364,12.93318]]},"head":{"rotation":[[0,0,0,-7.5]]},"strand1":{"rotation":[[0,-0.01795,-0.47872,4.97766],[1,-0.00379,0.17434,-2.49392],[1.96,-0.01795,-0.47872,4.97766]]},"strand2":{"rotation":[[0,-0.01795,0.47872,-4.97766],[1,-0.00379,-0.17434,2.49392],[1.96,-0.01795,0.47872,-4.97766]]},"skirt":{"rotation":[[0,0,0,5],[1.2,0,0,-5],[2,0,0,5]]},"hand":{"rotation":[[0,110.87993,2.88126,-98.64942],[1,112.49244,21.49191,-91.12209],[2,110.88,2.88,-98.65]]},"l_leg":{"rotation":[[0,-25.5,0,0],[1.04,26,0,0],[2,-25.5,0,0]],"position":[[0,0,0,0],[1,0,0,1],[2,0,0,0]],"scale":[[0,1,1,1],[0.8,1.05,0.95,1],[1,1,1,1],[1.8,1.05,0.95,1],[2,1,1,1]]},"r_leg":{"rotation":[[0.04,26,0,0],[1,-25.5,0,0],[2,26,0,0]],"position":[[0,0,0,1],[1,0,0,0],[2,0,0,1]],"scale":[[0,1,1,1],[0.8,1.05,0.95,1],[1,1,1,1],[1.8,1.05,0.95,1],[2,1,1,1]]},"r_arm":{"rotation":[[0,-25,0,0],[1,22.5,0,0],[2,-25,0,0]]},"hand_2":{"rotation":[[0,0,0,-12.5],[0.16,-7.5,0,-11.7],[1,0,0,-7.5],[1.32,12.5,0,-8.3],[2,0,0,-12.5]]},"skirt2":{"rotation":[[0,-0.94307,-4.79627,-7.83205],[1.16,-2.06251,2.36966,10.30631],[2,-0.94307,-4.79627,-7.83205]]},"bodyrot":{"rotation":[[0,-2.5,10,0],[0.48,0,0,0],[1,-2.49986,-9.98135,0.86795],[1.52,0,0,0],[2,-2.5,10,0]]},"knee_2":{"rotation":[[0,-9.65,0,0],[0.16,0,0,0],[0.56,0,0,0],[1,-20,0,0],[1.36,-35,0,0],[1.8,-35,0,0],[2,-9.65,0,0]]},"knee":{"rotation":[[0,-20,0,0],[0.72,-35,0,0],[1,-9.65,0,0],[1.16,0,0,0],[1.56,0,0,0],[2,-20,0,0]]},"iris":{"position":[[0,0.6,0,0]]},"iris2":{"position":[[0,0.1,0,0]]},"goblet":{"rotation":[[0,-84.95293,18.82943,-55.41141]]}}},"walkbackgoblet":{"loop":"loop","length":2,"bones":{"headrot":{"rotation":[[0,-7.07539,-19.24364,12.93318],[1,-6.76788,-9.31612,11.6912],[2,-7.07539,-19.24364,12.93318]]},"twintail":{"rotation":[[0,10,0,0]]},"strand1":{"rotation":[[0,-0.01517,0.34834,-4.98788],[0.12,-0.04794,0.63514,-6.97987],[1,-0.00442,-0.25149,2.48773],[2,-0.01517,0.34834,-4.98788]]},"strand2":{"rotation":[[0,-0.01517,0.34834,-4.98788],[0.12,-0.04794,0.63514,-6.97987],[1,-0.00442,-0.25149,2.48773],[2,-0.01517,0.34834,-4.98788]]},"iris":{"position":[[0,0.6,0,0]]},"iris2":{"position":[[0,0.1,0,0]]},"skirt":{"rotation":[[0,-1,0,-5],[1.12,-1,0,5],[2,-1,0,-5]]},"l_arm":{"rotation":[[0,24.78507,-12.31064,24.78507],[1,4.79,-12.31,24.79],[2,24.79,-12.31,24.79]]},"hand":{"rotation":[[0,110.87993,2.88126,-98.64942],[1,112.49244,21.49191,-91.12209],[2,110.88,2.88,-98.65]]},"l_leg":{"rotation":[[0,-27.5,0,0],[1,15,0,0],[1.32,27.5,0,0],[2,-27.5,0,0]]},"r_leg":{"rotation":[[0,15,0,0],[0.2,27.5,0,0],[1,-27.5,0,0],[2,15,0,0]]},"twintail_2":{"rotation":[[0,10,0,0]]},"front":{"position":[[0,0,0,-0.3]]},"r_arm":{"rotation":[[0,-12.5,0,0],[1,12.5,0,0],[2,-12.5,0,0]]},"hand_2":{"rotation":[[0,0,0,-12.5],[0.24,-5,0,-12.5],[1,0,0,-12.5],[1.2,7.5,0,-12.5],[2,0,0,-12.5]]},"knee_2":{"rotation":[[0,-15,0,0],[0.2,-52.5,0,0],[1,-6.67,0,0],[1.52,0,0,0],[2,-15,0,0]]},"knee":{"rotation":[[0,-6.67,0,0],[0.52,0,0,0],[1,-15,0,0],[1.36,-52.5,0,0],[2,-6.67,0,0]]},"bodyrot2":{"rotation":[[0,0,10,0],[1,0,2.5,0],[2,0,10,0]]},"goblet":{"rotation":[[0,-84.95293,18.82943,-55.41141]]}}},"sprintgoblet":{"loop":"loop","length":2,"bones":{"whole":{"position":[[0,2,5.7,-3],[0.48,0,3.3,0],[1,-2,5.7,-3],[1.48,0,3.4,0],[2,2,5.7,-3]],"scale":[[0,0.99,1,1.01],[0.52,1.01,1,0.99],[1.04,0.99,1,1.01],[1.52,1.01,1,0.99],[2,0.99,1,1.01]]},"torso":{"rotation":[[0,-5,0,0]]},"bodyrot":{"rotation":[[0,0,-2.5,0],[1,0,2.5,0],[2,0,-2.5,0]]},"skirt":{"rotation":[[0,-12,0.99,0.15],[0.28,-12,1.4905,0.21803],[0.72,-12,0,0],[1.2,-12,-1.4905,-0.21803],[1.68,-12,0,0],[2,-12,0.99,0.15]],"position":[[0,0.004,-0.06472,-0.24145]]},"headrot":{"rotation":[[0,7.43656,0.9762,-7.43656],[0.48,9.52,-0.68,0],[1,0,0,6.5],[1.52,1.33,-0.68,0],[2,7.43656,0.9762,-7.43656]],"position":[[0,0,-0.19829,-0.02611]]},"strand1":{"rotation":[[0,4e-05,0.34867,-2.48784],[1.28,-2.50442,-0.25149,2.48773],[2,4e-05,0.34867,-2.48784]]},"strand2":{"rotation":[[0,4e-05,-0.34867,2.48784],[1.28,-2.50442,0.25149,-2.48773],[2,4e-05,-0.34867,2.48784]]},"l_arm":{"rotation":[[0,24.78507,-12.31064,24.78507],[1,4.79,-12.31,24.79],[2,24.79,-12.31,24.79]]},"hand":{"rotation":[[0,110.87993,2.88126,-98.64942],[1,112.49244,21.49191,-91.12209],[2,110.88,2.88,-98.65]]},"r_arm":{"rotation":[[0,-17.5,0,0],[1,-14.98436,-0.75155,-2.38443],[2,-17.5,0,0]]},"hand_2":{"rotation":[[0,0,0,-12.5],[1,0,0,-7.5],[2,0,0,-12.5]]},"l_leg":{"rotation":[[0,-24.99762,-0.10901,-2.49762]]},"r_leg":{"rotation":[[0,-20,0,2.5]]},"wing1":{"rotation":[[0,0,0,0],[0.36,0,-25,0],[0.72,0,0,0],[1,0,-25,0],[1.32,0,0,0],[1.64,0,-25,0],[2,0,0,0]]},"wing2":{"rotation":[[0,0,0,0],[0.36,0,25,0],[0.72,0,0,0],[1,0,25,0],[1.32,0,0,0],[1.64,0,25,0],[2,0,0,0]]},"goblet":{"rotation":[[0,-84.95293,18.82943,-55.41141]]}}},"idlegoblet":{"loop":"loop","length":1,"bones":{"torso":{"rotation":[[0,5.01405,4.97973,0.43645]]},"headrot":{"rotation":[[0,-7.85085,-31.63886,14.72765],[0.24,-4.99,-25.92,13.9],[0.52,-7.07459,-19.24476,12.93572],[0.76,-9.96,-25.44,13.83],[1,-7.85,-31.64,14.73]]},"iris":{"position":[[0,0.6,0,0],[0.28,0.6,0,0],[0.48,0.1,0,0],[0.76,0.1,0,0],[0.92,0.6,0,0]]},"iris2":{"position":[[0,0.1,0,0],[0.28,0.1,0,0],[0.48,-0.4,0,0],[0.76,-0.4,0,0],[0.92,0.1,0,0]]},"lashes":{"position":[[0,0,-0.19981,0.00872]]},"left_lashes":{"position":[[0,0.09999,0.00032,-0.0016]]},"twintail":{"rotation":[[0,0,0,-10]]},"twintail_2":{"rotation":[[0,0,0,-15]]},"strand1":{"rotation":[[0,0,0,-5]]},"strand2":{"rotation":[[0,0,0,-15]]},"l_arm":{"rotation":[[0,24.78507,-12.31064,24.78507]]},"hand":{"rotation":[[0,110.87993,2.88126,-98.64942]]},"r_arm":{"rotation":[[0,17.40525,-1.08077,4.88412]]},"hand_2":{"rotation":[[0,18.97405,-53.83216,-38.8605]]},"r_leg":{"rotation":[[0,0,0,-7.5]]},"bodyrot2":{"rotation":[[0,0,-12.5,0]]},"goblet":{"rotation":[[0,-84.95293,18.82943,-55.41141]]}}},"hidelefthand":{"loop":"once","length":0,"bones":{"LeftItemPivot":{"scale":[[0,0.01,0.01,0.01]]}}},"blink":{"loop":"once","length":1.52,"bones":{"headrot":{"scale":[[0,1,1,1],[0.44,1.005,0.995,1],[0.72,1.005,0.995,1],[1.52,1,1,1]]},"lashes":{"position":[[0,0,0,0],[0.12,0,-0.25,0],[0.4,0,-1.1,0],[0.76,0,-1.1,0],[1.52,0,0,0]]},"blink2":{"position":[[0,0,0,0],[0.2,0,0,-1.1],[0.76,0,0,-1.1],[1.16,0,0,-1.1],[1.52,0,0,0]]},"blink3":{"position":[[0,0,0,0],[0.4,0,0,-1.1],[0.88,0,0,-1.1],[1.52,0,0,0]]}}},"sleepy":{"loop":"loop","length":0.96,"bones":{"headrot":{"rotation":[[0,2.5,0,0],[0.28,2.46225,-0.21599,-2.49094],[0.56,-2.54,-0.22,-2.49],[0.96,2.5,0,0]],"scale":[[0.28,1,1,1],[0.44,1.005,0.995,1],[0.68,1,1,1]]},"lashes":{"position":[[0,0,-1,0]]},"blink2":{"position":[[0,0,0,-1.1]]},"blink3":{"position":[[0,0,0,-1.1]]}}},"hiderighthand":{"loop":"loop","length":0,"bones":{"RightItemPivot":{"scale":[[0,0.01,0.01,0.01]]}}},"flick":{"loop":"once","length":0.36,"bones":{"wing1":{"rotation":[[0,0,-22.5,0],[0.08,0,-10,0],[0.16,0,-17.5,0]]},"wing2":{"rotation":[[0,0,22.5,0],[0.08,0,10,0],[0.16,-0.65426,17.45712,-7.52832]]}}},"att1":{"loop":"once","length":0.76,"bones":{"whole":{"position":[[0,0,0,0],[0.48,0,0,-2],[0.76,0,0,0]]},"torsorot":{"rotation":[[0,0,0,0],[0.16,0,-10,0],[0.76,0,0,0]]},"headrot":{"rotation":[[0,0,0,0],[0.16,0,7.5,0],[0.76,0,0,0]]},"l_arm":{"rotation":[[0,40,0,0],[0.16,39.53047,10.44311,-62.05985],[0.36,52.58352,18.92397,-59.59821],[0.64,65.33428,22.4932,0.64929],[0.76,0,0,0]],"position":[[0,0,0,0],[0.16,-0.36284,0.05227,1.36588],[0.36,0.17884,-0.18376,0.08353],[0.64,0,0,0]]},"hand":{"rotation":[[0,0,0,0],[0.16,10.04546,-43.73696,-10.52248],[0.36,107.30916,-77.13053,-53.03935],[0.48,99.80916,-77.13053,-53.03935],[0.64,70.70567,-47.26782,-45.82778],[0.76,0,0,0]]},"r_arm":{"rotation":[[0,22.5,0,27.5],[0.16,11.9551,-25.93297,64.31896],[0.48,11.96,-25.93,64.32],[0.76,0,0,0]]},"hand_2":{"rotation":[[0,0,0,0],[0.16,14.39942,-19.84302,-10.82777],[0.48,-10.60058,-19.84302,-10.82777],[0.76,0,0,0]]},"RightItemPivot":{"rotation":[[0,0,0,0],[0.2,-8.53328,-24.77146,3.62643],[0.44,-120,0,0],[0.64,-140,0,0],[0.76,0,0,0]]},"l_leg":{"rotation":[[0,20,0,0],[0.76,0,0,0]],"position":[[0,0,0,0],[0.48,0,-0.34202,0.93969],[0.76,0,0,0]]},"knee":{"rotation":[[0,0,0,0],[0.24,22.5,0,0],[0.48,-7.5,0,0],[0.76,0,0,0]]},"r_leg":{"rotation":[[0,-20,0,0],[0.76,0,0,0]]},"knee_2":{"rotation":[[0,-32.5,0,0],[0.76,0,0,0]]}}},"att2":{"loop":"once","length":0.68,"bones":{"whole":{"position":[[0,0,0,0],[0.48,0,0,-2],[0.68,0,0,0]]},"torsorot":{"rotation":[[0,0,0,0],[0.16,0,-10,0],[0.68,0,0,0]]},"headrot":{"rotation":[[0,0,0,0],[0.16,0,7.5,0],[0.68,0,0,0]]},"l_arm":{"rotation":[[0,40,0,0],[0.16,39.53047,-10.44311,62.05985],[0.36,52.58352,-18.92397,59.59821],[0.64,65.33428,-22.4932,-0.64929],[0.68,0,0,0]],"position":[[0,0,0,0],[0.16,0.36284,0.05227,1.36588],[0.36,-0.17884,-0.18376,0.08353],[0.64,0,0,0]]},"hand":{"rotation":[[0.68,0,0,0]]},"r_arm":{"rotation":[[0,14.20661,-15.9493,-9.55987],[0.16,11.31937,-19.1003,-4.72169],[0.48,11.96,25.93,-64.32],[0.68,0,0,0]]},"hand_2":{"rotation":[[0,20,0,0],[0.16,-12.43042,-34.88356,43.61938],[0.48,-10.60058,-19.84302,-10.82777],[0.68,0,0,0]]},"RightItemPivot":{"rotation":[[0,0,0,0],[0.2,-8.53328,-24.77146,3.62643],[0.44,-120,0,0],[0.64,-140,0,0],[0.68,0,0,0]]},"l_leg":{"rotation":[[0,20,0,0],[0.68,0,0,0]],"position":[[0,0,0,0],[0.48,0,-0.34202,0.93969],[0.68,0,0,0]]},"knee":{"rotation":[[0,0,0,0],[0.24,22.5,0,0],[0.48,-7.5,0,0],[0.68,0,0,0]]},"r_leg":{"rotation":[[0,-20,0,0],[0.68,0,0,0]]},"knee_2":{"rotation":[[0,-32.5,0,0],[0.68,0,0,0]]}}},"bowR":{"loop":"hold","length":0.96,"bones":{"torsorot":{"rotation":[[0,0,0,5]]},"torso":{"rotation":[[0,0,0,-5]]},"head":{"rotation":[[0,0,0,-5]]},"right_lashes":{"position":[[0,-0.00143,-0.39987,0.00995]]},"left_lashes":{"rotation":[[0,0,0,5]],"position":[[0,0.19927,-0.01679,-0.0032]]},"skirt":{"rotation":[[0,0,0,5]]},"l_arm":{"rotation":[[0.16,72.66779,27.86472,-11.0822]]},"hand":{"rotation":[[0.16,0,0,-60],[0.56,0,0,-75],[0.92,0,0,-92.5]]},"r_arm":{"rotation":[[0,65.98064,-31.79457,15.27677]]},"RightItemPivot":{"rotation":[[0,6.57798,5.26917,-36.85094]],"position":[[0,1.03942,-0.90773,-3.11571]],"scale":[[0,1.3,1.3,1.3]]},"l_leg":{"rotation":[[0.16,-14.65993,-3.21132,-2.08681]]},"knee":{"rotation":[[0,-17.5,0,0]]},"r_leg":{"rotation":[[0,11.93839,-4.46375,6.83501]]}}},"bowL":{"loop":"hold","length":0.96,"bones":{"torsorot":{"rotation":[[0,0,0,5]]},"torso":{"rotation":[[0,0,0,-5]]},"head":{"rotation":[[0,0,0,-5]]},"right_lashes":{"position":[[0,-0.00143,-0.39987,0.00995]]},"left_lashes":{"rotation":[[0,0,0,5]],"position":[[0,0.19927,-0.01679,-0.0032]]},"skirt":{"rotation":[[0,0,0,5]]},"l_arm":{"rotation":[[0,65.98064,31.79457,-15.27677]]},"r_arm":{"rotation":[[0,72.66779,-27.86472,11.0822]]},"RightItemPivot":{"rotation":[[0,6.57798,5.26917,-36.85094]],"position":[[0,1.03942,-0.90773,-3.11571]],"scale":[[0,1.3,1.3,1.3]]},"l_leg":{"rotation":[[0.16,-14.65993,-3.21132,-2.08681]]},"r_leg":{"rotation":[[0,11.93839,-4.46375,6.83501]]},"LeftItemPivot":{"rotation":[[0,6.57798,-5.26917,36.85094]],"position":[[0,-1.03942,-0.90773,-3.11571]],"scale":[[0,1.3,1.3,1.3]]},"hand_2":{"rotation":[[0,0,0,60],[0.4,0,0,75],[0.76,0,0,92.5]]},"knee":{"rotation":[[0,-17.5,0,0]]}}},"att3":{"loop":"once","length":0.16,"bones":{"r_arm":{"rotation":[[0,2.58807,-14.98539,-0.66963],[0.08,32.58807,-14.98539,-0.66963],[0.16,25.09,-14.99,-0.67]]},"hand_2":{"rotation":[[0,32.5,0,0],[0.08,79.72629,-46.60184,-33.40267],[0.16,34.73,-46.6,-33.4]]}}},"att4":{"loop":"once","length":0.16,"bones":{"r_arm":{"rotation":[[0,22.58807,-14.98539,-0.66963],[0.08,32.58807,-14.98539,-0.66963],[0.16,25.09,-14.99,-0.67]]},"hand_2":{"rotation":[[0,32.5,0,0],[0.08,79.72629,-46.60184,-33.40267],[0.16,34.73,-46.6,-33.4]]}}},"mineR":{"loop":"once","length":0.08,"bones":{"r_arm":{"rotation":[[0,50.09,-14.99,-0.67]]},"hand_2":{"rotation":[[0,31.60659,7.99365,-12.73415]]},"RightItemPivot":{"rotation":[[0,7.5,0,0]],"position":[[0,0,-0.5,0]]},"skirt":{"rotation":[[0,0,0,5]]},"bodyrot2":{"rotation":[[0,0,-12.5,0]]},"l_arm":{"rotation":[[0,-20,0,0]]}}},"useR":{"loop":"once","length":0.12,"bones":{"r_arm":{"rotation":[[0,22.58807,-14.98539,-0.66963],[0.04,38.52974,-11.90171,-4.71699]]},"hand_2":{"rotation":[[0,-4.72644,-22.52101,11.14843],[0.04,0.30902,-20.94483,24.5023]],"position":[[0,0.25,0,0.25]]},"skirt":{"rotation":[[0,0,0,5]]},"chest":{"rotation":[[0,0,-5,7.5]]},"l_arm":{"rotation":[[0,-12.5,0,0]]}}},"useL":{"loop":"once","length":0.08,"bones":{"l_arm":{"rotation":[[0,28.67232,12.62674,5.20995]]},"hand":{"rotation":[[0,-4.72644,22.52101,-11.14843]],"position":[[0,-0.25,0,0.25]]},"skirt":{"rotation":[[0,0,0,-5]]},"chest":{"rotation":[[0,0,7.5,7.5]]},"r_arm":{"rotation":[[0,-12.5,0,0]]}}},"sitting":{"loop":"loop","length":0,"bones":{"whole":{"position":[[0,0,-9,0]]},"torsorot":{"rotation":[[0,7.5,0,0]],"position":[[0,0,-1,0]]},"head":{"rotation":[[0,-25,0,0]]},"iris":{"position":[[0,-0.1,0,0]]},"iris2":{"position":[[0,-0.25,0,0]]},"back":{"rotation":[[0,12.5,0,0]]},"skirt2":{"rotation":[[0,-37.5,0,0]]},"right":{"rotation":[[0,37.5,0,0]]},"front":{"rotation":[[0,50.41301,-25.59048,-19.66238]]},"chest":{"rotation":[[0,0,12.5,0]]},"l_arm":{"rotation":[[0,-22.5,0,0]],"position":[[0,0,-2,0]]},"r_arm":{"rotation":[[0,42.47283,1.68868,-1.84373]]},"l_leg":{"rotation":[[0,87.37884,-17.48281,0.78795]],"position":[[0,0,-4,0]]},"r_leg":{"rotation":[[0,137.5,0,0]],"position":[[0,0,-6,0]]},"hand_2":{"rotation":[[0,0,0,87.5]]},"knee_2":{"rotation":[[0,-107.5,0,0]]},"headrot":{"rotation":[[0,10,0,0]]}}},"walklamp":{"loop":"loop","length":2,"bones":{"l_arm":{"rotation":[[0,22.5,0,0],[1,-25,0,0],[2,22.5,0,0]]},"head":{"rotation":[[0,-7.5,-12.24,0]]},"strand1":{"rotation":[[0,-0.01795,-0.47872,4.97766],[1,-0.00379,0.17434,-2.49392],[1.96,-0.01795,-0.47872,4.97766]]},"strand2":{"rotation":[[0,-0.01795,0.47872,-4.97766],[1,-0.00379,-0.17434,2.49392],[1.96,-0.01795,0.47872,-4.97766]]},"skirt":{"rotation":[[0,0,0,5],[1.2,0,0,-5],[2,0,0,5]]},"hand":{"rotation":[[0,0,0,7.5],[0.24,12.5,0,8.3],[1,0,0,12.5],[1.16,-7.5,0,11.7],[2,0,0,7.5]]},"l_leg":{"rotation":[[0,-25.41522,-2.15033,-4.51505],[0.52,16.76126,-1.42522,0.27707],[1.04,25.91403,2.18961,-4.49616],[2,-25.41522,-2.15033,-4.51505]],"position":[[0,0,0,0],[1,0,0,1],[2,0,0,0]],"scale":[[0,1,1,1],[0.8,1.05,0.95,1],[1,1,1,1],[1.8,1.05,0.95,1],[2,1,1,1]]},"r_leg":{"rotation":[[0,25.91403,-2.18961,4.49616],[1,-25.41522,2.15033,4.51505],[1.52,16.69983,1.31972,-0.27862],[2,25.91403,-2.18961,4.49616]],"position":[[0,0,0,1],[1,0,0,0],[2,0,0,1]],"scale":[[0,1,1,1],[0.8,1.05,0.95,1],[1,1,1,1],[1.8,1.05,0.95,1],[2,1,1,1]]},"r_arm":{"rotation":[[0,42.4583,2.55994,19.07659]]},"hand_2":{"rotation":[[0,57.76457,-55.68422,27.5122]]},"skirt2":{"rotation":[[0,-0.94307,-4.79627,-7.83205],[1.16,-2.06251,2.36966,10.30631],[2,-0.94307,-4.79627,-7.83205]]},"knee_2":{"rotation":[[0,-9.65,0,0],[0.16,0,0,0],[0.56,0,0,0],[1,-20,0,0],[1.36,-35,0,0],[1.8,-35,0,0],[2,-9.65,0,0]]},"knee":{"rotation":[[0,-20,0,0],[0.72,-35,0,0],[1,-9.65,0,0],[1.16,0,0,0],[1.56,0,0,0],[2,-20,0,0]]},"RightItemPivot":{"rotation":[[0,0,-7.5,-62.5]]},"bodyrot2":{"rotation":[[0,-2.5,10,0],[0.48,0,0,0],[1,-2.49986,-9.98135,0.86795],[1.52,0,0,0],[2,-2.5,10,0]]},"headrot":{"rotation":[[0,8.09,6.12,7.62]]},"lamp":{"rotation":[[0,-120.1027,4.09405,-2.87277]],"position":[[0,0.33923,-0.80934,0.69274]]},"ch1":{"rotation":[[0,-7.00349,0.06762,7.138]]}}},"walkbacklamp":{"loop":"loop","length":2,"bones":{"headrot":{"rotation":[[0,10.27633,11.32259,-11.31949]]},"twintail":{"rotation":[[0,-7.36709,-2.02678,11.58809]]},"strand1":{"rotation":[[0,-12.5,0,17.5],[1,-12.45392,1.08089,22.38206],[2,-12.5,0,17.5]]},"strand2":{"rotation":[[0,0,0,7.5],[1,0,0,5],[2,0,0,7.5]]},"iris":{"position":[[0,0.5,0,0]]},"iris2":{"position":[[0,0.1,0,0]]},"skirt":{"rotation":[[0,-11,0,-5],[1.12,-11,0,5],[2,-11,0,-5]]},"l_arm":{"rotation":[[0,12.5,0,0],[1,-12.5,0,0],[2,12.5,0,0]]},"hand":{"rotation":[[0,0,0,12.5],[0.2,7.5,0,12.5],[1,0,0,12.5],[1.24,-5,0,12.5],[2,0,0,12.5]]},"l_leg":{"rotation":[[0,-27.5,0,0],[1,15,0,0],[1.32,27.5,0,0],[2,-27.5,0,0]]},"r_leg":{"rotation":[[0,15,0,0],[0.2,27.5,0,0],[1,-27.5,0,0],[2,15,0,0]]},"twintail_2":{"rotation":[[0,-7.28481,-1.50163,8.56147]]},"front":{"rotation":[[0,10,0,0]],"position":[[0,0,0,-0.3]]},"r_arm":{"rotation":[[0,42.4583,2.55994,19.07659]]},"hand_2":{"rotation":[[0,57.76457,-55.68422,27.5122]]},"bodyrot":{"rotation":[[0,0,0,0]]},"knee_2":{"rotation":[[0,-15,0,0],[0.2,-52.5,0,0],[1,-6.67,0,0],[1.52,0,0,0],[2,-15,0,0]]},"knee":{"rotation":[[0,-6.67,0,0],[0.52,0,0,0],[1,-15,0,0],[1.36,-52.5,0,0],[2,-6.67,0,0]]},"torsorot":{"rotation":[[0,0,7.5,0]]},"right":{"rotation":[[0,12.5,0,0]]},"left":{"rotation":[[0,12.5,0,0]]},"bodyrot2":{"rotation":[[0,0,-17.5,0],[1,0,-5,0],[2,0,-17.5,0]]},"lamp":{"rotation":[[0,-120.1027,4.09405,-2.87277]],"position":[[0,0.33923,-0.80934,0.69274]]},"ch1":{"rotation":[[0,17.44515,2.94667,-13.51408]]}}},"lanternglow":{"loop":"loop","length":2,"bones":{"f2":{"rotation":[[0,0,0,0],[0.22222,0,90,0],[0.44444,0,180,0],[0.66667,0,270,0],[0.88889,0,0,0],[1.11111,0,90,0],[1.33333,0,180,0],[1.55556,0,270,0],[1.77778,0,0,0]]}}},"lanternhold":{"loop":"loop","length":2,"bones":{"torsorot":{"rotation":[[0,-5,0,0],[0.48,-5,0,0],[1.04,-5,0,0]]},"headrot":{"rotation":[[0,7.99119,-22.38696,-1.75088],[0.48,7.74315,-17.43395,-1.02321],[0.76,7.45409,-2.30969,8.55824],[0.88,8.09,6.12,7.62],[1.04,7.63715,14.79306,3.27221],[1.48,-3.52053,8.34809,-7.49013],[2,7.99119,-22.38696,-1.75088]]},"bodyrot2":{"rotation":[[0,0,-7.5,0]]},"l_arm":{"rotation":[[0,-9.91615,-1.29876,0.11267]]},"r_arm":{"rotation":[[0,42.4583,2.55994,19.07659]]},"hand_2":{"rotation":[[0,57.76457,-55.68422,27.5122]]},"lamp":{"rotation":[[0,-116.53597,0.86712,-1.34216]],"position":[[0,0.33923,-0.80934,0.69274]]},"l_leg":{"rotation":[[0,-10,0,0]]},"knee":{"rotation":[[0,-17.5,0,0]]},"r_leg":{"rotation":[[0,12.5,0,2.5]]},"ch1":{"rotation":[[0,0,0,0],[1,-7.5,0,0],[2,0,0,0]]},"ch2":{"rotation":[[0,0,0,0],[1,10,0,0],[1.72,-2.2,0,0],[2,0,0,0]]}}},"sprintlamp":{"loop":"loop","length":2,"bones":{"whole":{"position":[[0,2,5.7,-3],[0.48,0,3.3,0],[1,-2,5.7,-3],[1.48,0,3.4,0],[2,2,5.7,-3]],"scale":[[0,0.99,1,1.01],[0.52,1.01,1,0.99],[1.04,0.99,1,1.01],[1.52,1.01,1,0.99],[2,0.99,1,1.01]]},"torso":{"rotation":[[0,-5,0,0]]},"bodyrot":{"rotation":[[0,0,-2.5,0],[1,0,2.5,0],[2,0,-2.5,0]]},"skirt":{"rotation":[[0,-12,0.99,0.15],[0.28,-12,1.4905,0.21803],[0.72,-12,0,0],[1.2,-12,-1.4905,-0.21803],[1.68,-12,0,0],[2,-12,0.99,0.15]],"position":[[0,0.004,-0.06472,-0.24145]]},"headrot":{"rotation":[[0,7.43656,0.9762,-7.43656],[0.48,9.52,-0.68,0],[1,0,0,6.5],[1.52,1.33,-0.68,0],[2,7.43656,0.9762,-7.43656]],"position":[[0,0,-0.19829,-0.02611]]},"strand1":{"rotation":[[0,4e-05,0.34867,-2.48784],[1.28,-2.50442,-0.25149,2.48773],[2,4e-05,0.34867,-2.48784]]},"strand2":{"rotation":[[0,4e-05,-0.34867,2.48784],[1.28,-2.50442,0.25149,-2.48773],[2,4e-05,-0.34867,2.48784]]},"l_arm":{"rotation":[[0,-17.5,0,0],[1,-14.98436,0.75155,2.38443],[2,-17.5,0,0]]},"hand":{"rotation":[[0,0,0,12.5],[1,0,0,7.5],[2,0,0,12.5]]},"r_arm":{"rotation":[[0,42.4583,2.55994,19.07659]]},"hand_2":{"rotation":[[0,57.76457,-55.68422,27.5122]]},"l_leg":{"rotation":[[0,-24.99762,-0.10901,-2.49762]]},"r_leg":{"rotation":[[0,-20,0,2.5]]},"wing1":{"rotation":[[0,0,0,0],[0.36,0,-25,0],[0.72,0,0,0],[1,0,-25,0],[1.32,0,0,0],[1.64,0,-25,0],[2,0,0,0]]},"wing2":{"rotation":[[0,0,0,0],[0.36,0,25,0],[0.72,0,0,0],[1,0,25,0],[1.32,0,0,0],[1.64,0,25,0],[2,0,0,0]]},"lamp":{"rotation":[[0,-120.1027,4.09405,-2.87277]],"position":[[0,0.33923,-0.80934,0.69274]]},"ch2":{"rotation":[[0,-15.65943,1.36899,15.96401],[1,-10.48943,0.42851,10.68932],[2,-15.66,1.37,15.96]]}}},"jumpuplamp":{"loop":"loop","length":0.28,"bones":{"torsorot":{"rotation":[[0,10,0,0]]},"headrot":{"rotation":[[0,-5,0,0]]},"bodyrot2":{"rotation":[[0,0,-5,0]]},"chest":{"rotation":[[0,0,-5,0]]},"l_arm":{"rotation":[[0,-17.43411,-0.42906,-2.46228]]},"hand":{"rotation":[[0,0,0,20]]},"r_arm":{"rotation":[[0,42.4583,2.55994,19.07659]]},"hand_2":{"rotation":[[0,46.19852,-49.35943,33.40969]]},"l_leg":{"rotation":[[0,-5,0,-2.5]]},"knee":{"rotation":[[0,-25,0,0]]},"r_leg":{"rotation":[[0,4.99527,-0.21782,2.4905]]},"whole":{"position":[[0,0,-0.5,0],[0.28,0,1,0]],"scale":[[0,0.99,0.99,1]]},"knee_2":{"rotation":[[0,-17.48525,0.75158,-0.11558]]},"lamp":{"rotation":[[0,-116.30166,-4.09003,0.63547]],"position":[[0,0.33923,-0.80934,0.69274]]}}},"jumpdownlamp":{"loop":"loop","length":0,"bones":{"torsorot":{"rotation":[[0,10,0,0]]},"headrot":{"rotation":[[0,-5,0,0]]},"bodyrot2":{"rotation":[[0,0,-5,0]]},"chest":{"rotation":[[0,0,-5,0]]},"l_arm":{"rotation":[[0,-17.57623,0.86462,4.92356]]},"hand":{"rotation":[[0,0,0,20]]},"r_arm":{"rotation":[[0,42.4583,2.55994,19.07659]]},"hand_2":{"rotation":[[0,51.63019,-52.62239,30.82969]]},"l_leg":{"rotation":[[0,-5,0,-2.5]]},"r_leg":{"rotation":[[0,4.99527,-0.21782,2.4905]]},"lamp":{"rotation":[[0,-125.1027,4.09405,-2.87277]],"position":[[0,0.33923,-0.80934,0.69274]]},"whole":{"position":[[0,0,-0.5,0]],"scale":[[0,1.01,0.99,1]]},"ch1":{"rotation":[[0,-21.06071,0.9668,21.28599]]},"ch2":{"rotation":[[0,27.61395,11.35524,-27.96299]]},"knee":{"rotation":[[0,-25,0,0]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/elise.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/elise.geo.json new file mode 100644 index 0000000..ceafe24 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/elise.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.elise","texture_width":384,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"whole","pivot":[0,0,0]},{"name":"torsorot","pivot":[0,17,0],"parent":"whole"},{"name":"torso","pivot":[0,13,0],"parent":"torsorot"},{"name":"bodyrot","pivot":[0,18,0],"parent":"torso"},{"name":"body","pivot":[0,24,0],"parent":"bodyrot"},{"name":"neck","pivot":[0,24,0],"parent":"body","cubes":[{"origin":[-1.5,24,-1.5],"size":[3,2,3],"uv":{"north":{"uv":[39,27],"uv_size":[3,2]},"east":{"uv":[13,41],"uv_size":[3,2]},"south":{"uv":[22,41],"uv_size":[3,2]},"west":{"uv":[25,41],"uv_size":[3,2]},"up":{"uv":[42,12],"uv_size":[-3,-3]},"down":{"uv":[42,12],"uv_size":[-3,3]}}},{"origin":[-1.5,24.4,-1.5],"size":[3,2,3],"inflate":0.2,"uv":{"north":{"uv":[160,24],"uv_size":[6,4]},"east":{"uv":[184,0],"uv_size":[6,4]},"south":{"uv":[184,4],"uv_size":[6,4]},"west":{"uv":[166,26],"uv_size":[6,4]},"up":{"uv":[188,22],"uv_size":[-6,-6]},"down":{"uv":[188,22],"uv_size":[-6,6]}}}]},{"name":"headrot","pivot":[0,25,0],"parent":"neck"},{"name":"head","pivot":[0,25.5,0],"parent":"headrot","cubes":[{"origin":[-4,25,-4],"size":[8,8,8],"uv":{"north":{"uv":[8,19],"uv_size":[8,8]},"east":{"uv":[22,0],"uv_size":[8,8]},"south":{"uv":[22,0],"uv_size":[8,8]},"west":{"uv":[22,0],"uv_size":[8,8]},"up":{"uv":[32,16],"uv_size":[-8,-8]},"down":{"uv":[24,24],"uv_size":[-8,8]}}},{"origin":[-3,33,-3],"size":[6,1,6],"uv":{"north":{"uv":[42,10],"uv_size":[6,1]},"east":{"uv":[42,25],"uv_size":[6,1]},"south":{"uv":[42,26],"uv_size":[6,1]},"west":{"uv":[42,27],"uv_size":[6,1]},"up":{"uv":[42,48],"uv_size":[-6,-6]},"down":{"uv":[48,42],"uv_size":[-6,6]}}}]},{"name":"eyes","pivot":[0,27,-3.4],"parent":"head","cubes":[{"origin":[-4,25.25,-3.84],"size":[8,3.5,0],"uv":{"north":{"uv":[135,0],"uv_size":[9,2]},"east":{"uv":[128,26],"uv_size":[0,6]},"south":{"uv":[128,26],"uv_size":[0,6]},"west":{"uv":[128,26],"uv_size":[0,6]},"up":{"uv":[136,32],"uv_size":[-8,0]},"down":{"uv":[136,32],"uv_size":[-8,0]}}}]},{"name":"iris","pivot":[-1.825,28,-3.9],"parent":"eyes"},{"name":"detail","pivot":[1.6,27.25,-3.905],"parent":"iris","cubes":[{"origin":[1,26,-3.91],"size":[1.2,2.5,0],"uv":{"north":{"uv":[131,9.5],"uv_size":[4,7]},"east":{"uv":[128,30],"uv_size":[0,2]},"south":{"uv":[128,30],"uv_size":[0,2]},"west":{"uv":[128,30],"uv_size":[0,2]},"up":{"uv":[128,32],"uv_size":[1,0]},"down":{"uv":[129,32],"uv_size":[1,0]}}},{"origin":[0.9,26,-3.89],"size":[2.6,2.5,0],"uv":{"north":{"uv":[134.5,0],"uv_size":[-5.5,7]},"east":{"uv":[130,30],"uv_size":[0,2]},"south":{"uv":[136,4],"uv_size":[0,2]},"west":{"uv":[128,30],"uv_size":[0,2]},"up":{"uv":[128,30],"uv_size":[2,0]},"down":{"uv":[130,30],"uv_size":[2,0]}}},{"origin":[0.9,25.9,-3.9],"size":[1.4,2.7,0],"uv":{"north":{"uv":[131,17.5],"uv_size":[4,7]},"east":{"uv":[128,30],"uv_size":[0,2]},"south":{"uv":[128,30],"uv_size":[0,2]},"west":{"uv":[128,30],"uv_size":[0,2]},"up":{"uv":[128,32],"uv_size":[1,0]},"down":{"uv":[129,32],"uv_size":[1,0]}}}]},{"name":"simple","pivot":[-1.825,28,-3.9],"parent":"iris"},{"name":"iris2","pivot":[1.825,28,-3.9],"parent":"eyes"},{"name":"detail_2","pivot":[-1.6,27.25,-3.905],"parent":"iris2","cubes":[{"origin":[-2.3,25.9,-3.9],"size":[1.4,2.7,0],"uv":{"north":{"uv":[135,17.5],"uv_size":[-4,7]},"east":{"uv":[128,30],"uv_size":[0,2]},"south":{"uv":[128,30],"uv_size":[0,2]},"west":{"uv":[128,30],"uv_size":[0,2]},"up":{"uv":[129,32],"uv_size":[-1,0]},"down":{"uv":[130,32],"uv_size":[-1,0]}}},{"origin":[-3.5,26,-3.89],"size":[2.6,2.5,0],"uv":{"north":{"uv":[129,0],"uv_size":[5.5,7]},"east":{"uv":[128,30],"uv_size":[0,2]},"south":{"uv":[136,4],"uv_size":[0,2]},"west":{"uv":[130,30],"uv_size":[0,2]},"up":{"uv":[130,30],"uv_size":[-2,0]},"down":{"uv":[132,30],"uv_size":[-2,0]}}},{"origin":[-2.2,26,-3.91],"size":[1.2,2.5,0],"uv":{"north":{"uv":[135,9.5],"uv_size":[-4,7]},"east":{"uv":[128,30],"uv_size":[0,2]},"south":{"uv":[128,30],"uv_size":[0,2]},"west":{"uv":[128,30],"uv_size":[0,2]},"up":{"uv":[129,32],"uv_size":[-1,0]},"down":{"uv":[130,32],"uv_size":[-1,0]}}}]},{"name":"simple_2","pivot":[1.825,28,-3.9],"parent":"iris2"},{"name":"lashes","pivot":[0,28.50595,-4.12738],"parent":"eyes","rotation":[2.5,0,0]},{"name":"right_lashes","pivot":[2.61799,29.37646,-3.655],"parent":"lashes","rotation":[1.42584,-0.91618,0.18232],"cubes":[{"origin":[1.0241,26.50213,-3.86883],"size":[4.25,2.5,0],"pivot":[2.50262,28.70876,-3.94821],"rotation":[-9.62,2.74345,15.7691],"uv":{"north":{"uv":[151,0],"uv_size":[5,3]},"east":{"uv":[150,0],"uv_size":[0,3]},"south":{"uv":[128,29],"uv_size":[0,3]},"west":{"uv":[146,0],"uv_size":[0,3]},"up":{"uv":[146,0],"uv_size":[4,0]},"down":{"uv":[150,0],"uv_size":[4,0]}}},{"origin":[0.97407,26.7132,-4.01883],"size":[4.25,2.5,0],"pivot":[2.75262,28.95876,-4.09821],"rotation":[-9.99664,-0.26044,-1.47722],"uv":{"north":{"uv":[145,0],"uv_size":[5,3]},"east":{"uv":[150,0],"uv_size":[0,3]},"south":{"uv":[128,29],"uv_size":[0,3]},"west":{"uv":[146,0],"uv_size":[0,3]},"up":{"uv":[146,0],"uv_size":[4,0]},"down":{"uv":[150,0],"uv_size":[4,0]}}}]},{"name":"left_lashes","pivot":[-2.61799,29.37646,-3.655],"parent":"lashes","rotation":[1.42584,0.91618,-0.18232],"cubes":[{"origin":[-5.22153,26.72676,-4.06405],"size":[4.25,2.5,0],"pivot":[-2.75007,28.97232,-4.14342],"rotation":[-9.99664,0.26044,1.47722],"uv":{"north":{"uv":[150,0],"uv_size":[-5,3]},"east":{"uv":[146,0],"uv_size":[0,3]},"south":{"uv":[128,29],"uv_size":[0,3]},"west":{"uv":[150,0],"uv_size":[0,3]},"up":{"uv":[150,0],"uv_size":[-4,0]},"down":{"uv":[154,0],"uv_size":[-4,0]}}},{"origin":[-5.27155,26.51569,-3.91405],"size":[4.25,2.5,0],"pivot":[-2.50007,28.72232,-3.99342],"rotation":[-9.62,-2.74345,-15.7691],"uv":{"north":{"uv":[156,0],"uv_size":[-5,3]},"east":{"uv":[146,0],"uv_size":[0,3]},"south":{"uv":[128,29],"uv_size":[0,3]},"west":{"uv":[150,0],"uv_size":[0,3]},"up":{"uv":[150,0],"uv_size":[-4,0]},"down":{"uv":[154,0],"uv_size":[-4,0]}}}]},{"name":"blink2","pivot":[0,28.5,-2.87],"parent":"eyes","cubes":[{"origin":[-4,27,-2.87],"size":[8,1,0],"uv":{"north":{"uv":[144,5],"uv_size":[8,1]},"east":{"uv":[144,5],"uv_size":[0,1]},"south":{"uv":[152,5],"uv_size":[8,1]},"west":{"uv":[152,5],"uv_size":[0,1]},"up":{"uv":[152,5],"uv_size":[-8,0]},"down":{"uv":[160,5],"uv_size":[-8,0]}}}]},{"name":"blink3","pivot":[0,27.5,-2.87],"parent":"eyes","cubes":[{"origin":[-4,26,-2.87],"size":[8,1,0],"uv":{"north":{"uv":[144,6],"uv_size":[8,1]},"east":{"uv":[144,6],"uv_size":[0,1]},"south":{"uv":[152,6],"uv_size":[8,1]},"west":{"uv":[152,6],"uv_size":[0,1]},"up":{"uv":[152,6],"uv_size":[-8,0]},"down":{"uv":[160,6],"uv_size":[-8,0]}}}]},{"name":"hair","pivot":[0,0,0],"parent":"head","cubes":[{"origin":[-4,29,4.5],"size":[8,2,0],"uv":{"north":{"uv":[188,24],"uv_size":[16,4]},"east":{"uv":[160,0],"uv_size":[0,4]},"south":{"uv":[186,28],"uv_size":[16,4]},"west":{"uv":[160,0],"uv_size":[0,4]},"up":{"uv":[176,0],"uv_size":[-16,0]},"down":{"uv":[176,0],"uv_size":[-16,0]}}}]},{"name":"bun","pivot":[0,0,0],"parent":"hair"},{"name":"pom1","pivot":[-3,29,4],"parent":"hair","cubes":[{"origin":[-5,27.25,2.25],"size":[3,3,3],"uv":{"north":{"uv":[0,9],"uv_size":[3,3]},"east":{"uv":[3,9],"uv_size":[3,3]},"south":{"uv":[6,9],"uv_size":[3,3]},"west":{"uv":[9,9],"uv_size":[3,3]},"up":{"uv":[3,15],"uv_size":[-3,-3]},"down":{"uv":[6,12],"uv_size":[-3,3]}}},{"origin":[-5,27.25,2.25],"size":[3,3,3],"pivot":[-3.5,28.75,3.75],"rotation":[0,0,-7.5],"inflate":0.2,"uv":{"north":{"uv":[6,12],"uv_size":[3,3]},"east":{"uv":[9,12],"uv_size":[3,3]},"south":{"uv":[12,9],"uv_size":[3,3]},"west":{"uv":[12,12],"uv_size":[3,3]},"up":{"uv":[17,3],"uv_size":[-3,-3]},"down":{"uv":[17,3],"uv_size":[-3,3]}}}]},{"name":"twintail","pivot":[-5.5,28,4],"parent":"pom1","cubes":[{"origin":[-6.5,27,2],"size":[2,2,1],"pivot":[-5.5,28,2.5],"rotation":[-170,0,0],"uv":{"north":{"uv":[17,4],"uv_size":[2,2]},"east":{"uv":[4,17],"uv_size":[1,2]},"south":{"uv":[7,17],"uv_size":[2,2]},"west":{"uv":[19,6],"uv_size":[1,2]},"up":{"uv":[32,5],"uv_size":[-2,-1]},"down":{"uv":[32,5],"uv_size":[-2,1]}}},{"origin":[-6.5,25.5,4],"size":[2,2,1],"pivot":[-5.5,26.5,4.5],"rotation":[170,0,0],"uv":{"north":{"uv":[9,17],"uv_size":[2,2]},"east":{"uv":[23,8],"uv_size":[1,2]},"south":{"uv":[11,17],"uv_size":[2,2]},"west":{"uv":[30,16],"uv_size":[1,2]},"up":{"uv":[32,7],"uv_size":[-2,-1]},"down":{"uv":[32,18],"uv_size":[-2,1]}}},{"origin":[-6.5,21.5,4],"size":[2,2,1],"pivot":[-5.5,22.5,4.5],"rotation":[170,0,0],"uv":{"north":{"uv":[13,17],"uv_size":[2,2]},"east":{"uv":[30,19],"uv_size":[1,2]},"south":{"uv":[15,17],"uv_size":[2,2]},"west":{"uv":[30,21],"uv_size":[1,2]},"up":{"uv":[32,24],"uv_size":[-2,-1]},"down":{"uv":[32,24],"uv_size":[-2,1]}}},{"origin":[-8,18.25,4],"size":[4,4,0],"pivot":[-5,24.25,4],"rotation":[0,5,-15],"uv":{"north":{"uv":[20,43],"uv_size":[4,4]},"east":{"uv":[0,0],"uv_size":[0,4]},"south":{"uv":[6,44],"uv_size":[4,4]},"west":{"uv":[0,0],"uv_size":[0,4]},"up":{"uv":[4,0],"uv_size":[-4,0]},"down":{"uv":[4,0],"uv_size":[-4,0]}}},{"origin":[-6.5,23.5,1.75],"size":[2,2,1],"pivot":[-5.5,24.5,2.25],"rotation":[-170,0,0],"uv":{"north":{"uv":[19,8],"uv_size":[2,2]},"east":{"uv":[30,25],"uv_size":[1,2]},"south":{"uv":[21,8],"uv_size":[2,2]},"west":{"uv":[8,31],"uv_size":[1,2]},"up":{"uv":[32,28],"uv_size":[-2,-1]},"down":{"uv":[11,31],"uv_size":[-2,1]}}},{"origin":[-7.25,26.25,3],"size":[2,2,1],"pivot":[-6.25,27.25,3.5],"rotation":[71.73423,81.75568,-122.87153],"uv":{"north":{"uv":[0,24],"uv_size":[2,2]},"east":{"uv":[11,31],"uv_size":[1,2]},"south":{"uv":[28,28],"uv_size":[2,2]},"west":{"uv":[12,31],"uv_size":[1,2]},"up":{"uv":[15,32],"uv_size":[-2,-1]},"down":{"uv":[33,16],"uv_size":[-2,1]}}},{"origin":[-7.25,22.25,3],"size":[2,2,1],"pivot":[-6.25,23.25,3.5],"rotation":[71.73423,81.75568,-122.87153],"uv":{"north":{"uv":[24,29],"uv_size":[2,2]},"east":{"uv":[15,31],"uv_size":[1,2]},"south":{"uv":[26,29],"uv_size":[2,2]},"west":{"uv":[31,19],"uv_size":[1,2]},"up":{"uv":[33,18],"uv_size":[-2,-1]},"down":{"uv":[33,21],"uv_size":[-2,1]}}},{"origin":[-5.75,24.25,3],"size":[2,2,1],"pivot":[-4.75,25.25,3.5],"rotation":[71.73423,-81.75568,122.87153],"uv":{"north":{"uv":[30,0],"uv_size":[2,2]},"east":{"uv":[24,31],"uv_size":[1,2]},"south":{"uv":[30,2],"uv_size":[2,2]},"west":{"uv":[25,31],"uv_size":[1,2]},"up":{"uv":[33,23],"uv_size":[-2,-1]},"down":{"uv":[33,25],"uv_size":[-2,1]}}},{"origin":[-7,22,1.75],"size":[3,8,3.4],"uv":{"north":{"uv":[4,32],"uv_size":[4,8]},"east":{"uv":[33,15],"uv_size":[4,8]},"south":{"uv":[0,36],"uv_size":[4,8]},"west":{"uv":[47,32],"uv_size":[4,8]},"up":{"uv":[35,33],"uv_size":[-4,-4]},"down":{"uv":[37,10],"uv_size":[-4,4]}}}]},{"name":"pom2","pivot":[3,29,4],"parent":"hair","cubes":[{"origin":[2,27.25,2.25],"size":[3,3,3],"uv":{"north":{"uv":[3,9],"uv_size":[-3,3]},"east":{"uv":[12,9],"uv_size":[-3,3]},"south":{"uv":[9,9],"uv_size":[-3,3]},"west":{"uv":[6,9],"uv_size":[-3,3]},"up":{"uv":[0,15],"uv_size":[3,-3]},"down":{"uv":[3,12],"uv_size":[3,3]}}},{"origin":[2,27.25,2.25],"size":[3,3,3],"pivot":[3.5,28.75,3.75],"rotation":[0,0,7.5],"inflate":0.2,"uv":{"north":{"uv":[9,12],"uv_size":[-3,3]},"east":{"uv":[15,12],"uv_size":[-3,3]},"south":{"uv":[15,9],"uv_size":[-3,3]},"west":{"uv":[12,12],"uv_size":[-3,3]},"up":{"uv":[14,3],"uv_size":[3,-3]},"down":{"uv":[14,3],"uv_size":[3,3]}}}]},{"name":"twintail_2","pivot":[5.5,28,4],"parent":"pom2","cubes":[{"origin":[4.5,27,2],"size":[2,2,1],"pivot":[5.5,28,2.5],"rotation":[-170,0,0],"uv":{"north":{"uv":[19,4],"uv_size":[-2,2]},"east":{"uv":[20,6],"uv_size":[-1,2]},"south":{"uv":[9,17],"uv_size":[-2,2]},"west":{"uv":[5,17],"uv_size":[-1,2]},"up":{"uv":[30,5],"uv_size":[2,-1]},"down":{"uv":[30,5],"uv_size":[2,1]}}},{"origin":[4.5,25.5,4],"size":[2,2,1],"pivot":[5.5,26.5,4.5],"rotation":[170,0,0],"uv":{"north":{"uv":[11,17],"uv_size":[-2,2]},"east":{"uv":[31,16],"uv_size":[-1,2]},"south":{"uv":[13,17],"uv_size":[-2,2]},"west":{"uv":[24,8],"uv_size":[-1,2]},"up":{"uv":[30,7],"uv_size":[2,-1]},"down":{"uv":[30,18],"uv_size":[2,1]}}},{"origin":[4.5,21.5,4],"size":[2,2,1],"pivot":[5.5,22.5,4.5],"rotation":[170,0,0],"uv":{"north":{"uv":[15,17],"uv_size":[-2,2]},"east":{"uv":[31,21],"uv_size":[-1,2]},"south":{"uv":[17,17],"uv_size":[-2,2]},"west":{"uv":[31,19],"uv_size":[-1,2]},"up":{"uv":[30,24],"uv_size":[2,-1]},"down":{"uv":[30,24],"uv_size":[2,1]}}},{"origin":[4,18.25,4],"size":[4,4,0],"pivot":[5,24.25,4],"rotation":[0,-5,15],"uv":{"north":{"uv":[24,43],"uv_size":[-4,4]},"east":{"uv":[0,0],"uv_size":[0,4]},"south":{"uv":[10,44],"uv_size":[-4,4]},"west":{"uv":[0,0],"uv_size":[0,4]},"up":{"uv":[0,0],"uv_size":[4,0]},"down":{"uv":[0,0],"uv_size":[4,0]}}},{"origin":[4.5,23.5,1.75],"size":[2,2,1],"pivot":[5.5,24.5,2.25],"rotation":[-170,0,0],"uv":{"north":{"uv":[21,8],"uv_size":[-2,2]},"east":{"uv":[9,31],"uv_size":[-1,2]},"south":{"uv":[23,8],"uv_size":[-2,2]},"west":{"uv":[31,25],"uv_size":[-1,2]},"up":{"uv":[30,28],"uv_size":[2,-1]},"down":{"uv":[9,31],"uv_size":[2,1]}}},{"origin":[5.25,26.25,3],"size":[2,2,1],"pivot":[6.25,27.25,3.5],"rotation":[71.73423,-81.75568,122.87153],"uv":{"north":{"uv":[2,24],"uv_size":[-2,2]},"east":{"uv":[13,31],"uv_size":[-1,2]},"south":{"uv":[30,28],"uv_size":[-2,2]},"west":{"uv":[12,31],"uv_size":[-1,2]},"up":{"uv":[13,32],"uv_size":[2,-1]},"down":{"uv":[31,16],"uv_size":[2,1]}}},{"origin":[5.25,22.25,3],"size":[2,2,1],"pivot":[6.25,23.25,3.5],"rotation":[71.73423,-81.75568,122.87153],"uv":{"north":{"uv":[26,29],"uv_size":[-2,2]},"east":{"uv":[32,19],"uv_size":[-1,2]},"south":{"uv":[28,29],"uv_size":[-2,2]},"west":{"uv":[16,31],"uv_size":[-1,2]},"up":{"uv":[31,18],"uv_size":[2,-1]},"down":{"uv":[31,21],"uv_size":[2,1]}}},{"origin":[3.75,24.25,3],"size":[2,2,1],"pivot":[4.75,25.25,3.5],"rotation":[71.73423,81.75568,-122.87153],"uv":{"north":{"uv":[32,0],"uv_size":[-2,2]},"east":{"uv":[26,31],"uv_size":[-1,2]},"south":{"uv":[32,2],"uv_size":[-2,2]},"west":{"uv":[25,31],"uv_size":[-1,2]},"up":{"uv":[31,23],"uv_size":[2,-1]},"down":{"uv":[31,25],"uv_size":[2,1]}}},{"origin":[4,22,1.75],"size":[3,8,3.4],"uv":{"north":{"uv":[8,32],"uv_size":[-4,8]},"east":{"uv":[51,32],"uv_size":[-4,8]},"south":{"uv":[4,36],"uv_size":[-4,8]},"west":{"uv":[37,15],"uv_size":[-4,8]},"up":{"uv":[31,33],"uv_size":[4,-4]},"down":{"uv":[33,10],"uv_size":[4,4]}}}]},{"name":"left_hair","pivot":[-4,32,0],"parent":"hair","cubes":[{"origin":[-5,28.5,-3],"size":[2,4,4],"pivot":[-4,30,-1],"rotation":[0,0,22.5],"uv":{"north":{"uv":[4,20],"uv_size":[2,4]},"east":{"uv":[17,15],"uv_size":[4,4]},"south":{"uv":[20,4],"uv_size":[2,4]},"west":{"uv":[19,11],"uv_size":[4,4]},"up":{"uv":[8,24],"uv_size":[-2,-4]},"down":{"uv":[22,19],"uv_size":[-2,4]}}},{"origin":[-5,28.5,-3],"size":[2,4,4],"pivot":[-4,30,-1],"rotation":[0,0,22.5],"inflate":0.2,"uv":{"north":{"uv":[21,15],"uv_size":[2,4]},"east":{"uv":[4,24],"uv_size":[4,4]},"south":{"uv":[22,19],"uv_size":[2,4]},"west":{"uv":[24,25],"uv_size":[4,4]},"up":{"uv":[4,27],"uv_size":[-2,-4]},"down":{"uv":[10,27],"uv_size":[-2,4]}}},{"origin":[-5,25.5,-2],"size":[2,4,4],"pivot":[-4,28,0],"rotation":[0,0,-22.5],"uv":{"north":{"uv":[2,19],"uv_size":[2,4]},"east":{"uv":[15,11],"uv_size":[4,4]},"south":{"uv":[16,19],"uv_size":[2,4]},"west":{"uv":[17,0],"uv_size":[4,4]},"up":{"uv":[20,23],"uv_size":[-2,-4]},"down":{"uv":[2,20],"uv_size":[-2,4]}}},{"origin":[-5,25.5,-2],"size":[2,4,4],"pivot":[-4,28,0],"rotation":[0,0,-22.5],"inflate":0.2,"uv":{"north":{"uv":[14,27],"uv_size":[2,4]},"east":{"uv":[10,27],"uv_size":[4,4]},"south":{"uv":[28,16],"uv_size":[2,4]},"west":{"uv":[4,28],"uv_size":[4,4]},"up":{"uv":[30,24],"uv_size":[-2,-4]},"down":{"uv":[30,24],"uv_size":[-2,4]}}}]},{"name":"right_hair","pivot":[4,32,0],"parent":"hair"},{"name":"main","pivot":[4,28,0],"parent":"right_hair","cubes":[{"origin":[3,28.5,-3],"size":[2,4,4],"pivot":[4,30,-1],"rotation":[0,0,-22.5],"uv":{"north":{"uv":[6,20],"uv_size":[-2,4]},"east":{"uv":[23,11],"uv_size":[-4,4]},"south":{"uv":[22,4],"uv_size":[-2,4]},"west":{"uv":[21,15],"uv_size":[-4,4]},"up":{"uv":[6,24],"uv_size":[2,-4]},"down":{"uv":[20,19],"uv_size":[2,4]}}},{"origin":[3,28.5,-3],"size":[2,4,4],"pivot":[4,30,-1],"rotation":[0,0,-22.5],"inflate":0.2,"uv":{"north":{"uv":[23,15],"uv_size":[-2,4]},"east":{"uv":[28,25],"uv_size":[-4,4]},"south":{"uv":[24,19],"uv_size":[-2,4]},"west":{"uv":[8,24],"uv_size":[-4,4]},"up":{"uv":[2,27],"uv_size":[2,-4]},"down":{"uv":[8,27],"uv_size":[2,4]}}},{"origin":[3,25.5,-2],"size":[2,4,4],"pivot":[4,28,0],"rotation":[0,0,22.5],"uv":{"north":{"uv":[4,19],"uv_size":[-2,4]},"east":{"uv":[21,0],"uv_size":[-4,4]},"south":{"uv":[18,19],"uv_size":[-2,4]},"west":{"uv":[19,11],"uv_size":[-4,4]},"up":{"uv":[18,23],"uv_size":[2,-4]},"down":{"uv":[0,20],"uv_size":[2,4]}}},{"origin":[3,25.5,-2],"size":[2,4,4],"pivot":[4,28,0],"rotation":[0,0,22.5],"inflate":0.2,"uv":{"north":{"uv":[16,27],"uv_size":[-2,4]},"east":{"uv":[8,28],"uv_size":[-4,4]},"south":{"uv":[30,16],"uv_size":[-2,4]},"west":{"uv":[14,27],"uv_size":[-4,4]},"up":{"uv":[28,24],"uv_size":[2,-4]},"down":{"uv":[28,24],"uv_size":[2,4]}}}]},{"name":"bloody","pivot":[4,30,7.5],"parent":"right_hair"},{"name":"front_hair","pivot":[0,31,-4.25],"parent":"hair","cubes":[{"origin":[-4.5,28,-4.25],"size":[9,4,2],"pivot":[0,30,-3.25],"rotation":[-4.98107,0.43523,4.98107],"uv":{"north":{"uv":[79,56],"uv_size":[9,4]},"east":{"uv":[73,0],"uv_size":[2,4]},"south":{"uv":[79,70],"uv_size":[9,4]},"west":{"uv":[24,73],"uv_size":[2,4]},"up":{"uv":[88,76],"uv_size":[-9,-2]},"down":{"uv":[89,13],"uv_size":[-9,2]}}}]},{"name":"strand1","pivot":[-4,30,-4],"parent":"front_hair"},{"name":"main_2","pivot":[-3,28,-4],"parent":"strand1","cubes":[{"origin":[-5.5,27.75,-5],"size":[2,3,2],"pivot":[-4.5,28,-4],"rotation":[-30,37.5,0],"uv":{"north":{"uv":[0,17],"uv_size":[2,3]},"east":{"uv":[5,17],"uv_size":[2,3]},"south":{"uv":[42,15],"uv_size":[2,3]},"west":{"uv":[42,18],"uv_size":[2,3]},"up":{"uv":[11,17],"uv_size":[-2,-2]},"down":{"uv":[13,15],"uv_size":[-2,2]}}},{"origin":[-5.5,27.25,-4.5],"size":[2,1,2],"pivot":[-3,28,-4],"rotation":[0,0,-12.5],"uv":{"north":{"uv":[18,10],"uv_size":[2,1]},"east":{"uv":[29,31],"uv_size":[2,1]},"south":{"uv":[8,36],"uv_size":[2,1]},"west":{"uv":[10,36],"uv_size":[2,1]},"up":{"uv":[44,23],"uv_size":[-2,-2]},"down":{"uv":[44,23],"uv_size":[-2,2]}}},{"origin":[-5.39777,25.8656,-4.5],"size":[2,1,2],"pivot":[-4.39777,26.3656,-3.5],"rotation":[0,22.5,5],"uv":{"north":{"uv":[2,17],"uv_size":[2,1]},"east":{"uv":[2,18],"uv_size":[2,1]},"south":{"uv":[36,29],"uv_size":[2,1]},"west":{"uv":[38,8],"uv_size":[2,1]},"up":{"uv":[15,17],"uv_size":[-2,-2]},"down":{"uv":[17,15],"uv_size":[-2,2]}}},{"origin":[-5.89777,24.8656,-4.5],"size":[2,1,2],"pivot":[-4.39777,26.3656,-3.5],"rotation":[0,-27.5,-27.5],"uv":{"north":{"uv":[18,10],"uv_size":[2,1]},"east":{"uv":[29,31],"uv_size":[2,1]},"south":{"uv":[8,36],"uv_size":[2,1]},"west":{"uv":[10,36],"uv_size":[2,1]},"up":{"uv":[44,23],"uv_size":[-2,-2]},"down":{"uv":[44,23],"uv_size":[-2,2]}}},{"origin":[-6,22,-4],"size":[4,4,0],"pivot":[-3,28,-4],"rotation":[0,5,-15],"uv":{"north":{"uv":[20,43],"uv_size":[4,4]},"east":{"uv":[0,0],"uv_size":[0,4]},"south":{"uv":[6,44],"uv_size":[4,4]},"west":{"uv":[0,0],"uv_size":[0,4]},"up":{"uv":[4,0],"uv_size":[-4,0]},"down":{"uv":[4,0],"uv_size":[-4,0]}}}]},{"name":"strand2","pivot":[4,30,-4],"parent":"front_hair"},{"name":"main_3","pivot":[3,28,-4],"parent":"strand2","cubes":[{"origin":[3.5,27.75,-5],"size":[2,3,2],"pivot":[4.5,28,-4],"rotation":[-30,-37.5,0],"uv":{"north":{"uv":[2,17],"uv_size":[-2,3]},"east":{"uv":[44,18],"uv_size":[-2,3]},"south":{"uv":[44,15],"uv_size":[-2,3]},"west":{"uv":[7,17],"uv_size":[-2,3]},"up":{"uv":[9,17],"uv_size":[2,-2]},"down":{"uv":[11,15],"uv_size":[2,2]}}},{"origin":[3.5,27.25,-4.5],"size":[2,1,2],"pivot":[3,28,-4],"rotation":[0,0,12.5],"uv":{"north":{"uv":[20,10],"uv_size":[-2,1]},"east":{"uv":[12,36],"uv_size":[-2,1]},"south":{"uv":[10,36],"uv_size":[-2,1]},"west":{"uv":[31,31],"uv_size":[-2,1]},"up":{"uv":[42,23],"uv_size":[2,-2]},"down":{"uv":[42,23],"uv_size":[2,2]}}},{"origin":[3.39777,25.8656,-4.5],"size":[2,1,2],"pivot":[4.39777,26.3656,-3.5],"rotation":[0,-22.5,-5],"uv":{"north":{"uv":[4,17],"uv_size":[-2,1]},"east":{"uv":[40,8],"uv_size":[-2,1]},"south":{"uv":[38,29],"uv_size":[-2,1]},"west":{"uv":[4,18],"uv_size":[-2,1]},"up":{"uv":[13,17],"uv_size":[2,-2]},"down":{"uv":[15,15],"uv_size":[2,2]}}},{"origin":[3.89777,24.8656,-4.5],"size":[2,1,2],"pivot":[4.39777,26.3656,-3.5],"rotation":[0,27.5,27.5],"uv":{"north":{"uv":[20,10],"uv_size":[-2,1]},"east":{"uv":[12,36],"uv_size":[-2,1]},"south":{"uv":[10,36],"uv_size":[-2,1]},"west":{"uv":[31,31],"uv_size":[-2,1]},"up":{"uv":[42,23],"uv_size":[2,-2]},"down":{"uv":[42,23],"uv_size":[2,2]}}},{"origin":[2,22,-4],"size":[4,4,0],"pivot":[3,28,-4],"rotation":[0,-5,15],"uv":{"north":{"uv":[24,43],"uv_size":[-4,4]},"east":{"uv":[0,0],"uv_size":[0,4]},"south":{"uv":[10,44],"uv_size":[-4,4]},"west":{"uv":[0,0],"uv_size":[0,4]},"up":{"uv":[0,0],"uv_size":[4,0]},"down":{"uv":[0,0],"uv_size":[4,0]}}}]},{"name":"bloody_2","pivot":[4,30,-4],"parent":"strand2"},{"name":"tiara","pivot":[0,29.4,-4.25],"parent":"front_hair","cubes":[{"origin":[-4,29,-4.5],"size":[8,2,0],"uv":{"north":{"uv":[160,0],"uv_size":[16,4]},"east":{"uv":[160,0],"uv_size":[0,4]},"south":{"uv":[160,4],"uv_size":[16,4]},"west":{"uv":[160,0],"uv_size":[0,4]},"up":{"uv":[176,0],"uv_size":[-16,0]},"down":{"uv":[176,0],"uv_size":[-16,0]}}},{"origin":[-0.5,28.9,-4.75],"size":[1,1,1],"pivot":[0,29.4,-4.25],"rotation":[-3.54002,-3.53329,-134.89078],"uv":{"north":{"uv":[160,8],"uv_size":[2,2]},"east":{"uv":[162,8],"uv_size":[2,2]},"south":{"uv":[164,8],"uv_size":[2,2]},"west":{"uv":[166,8],"uv_size":[2,2]},"up":{"uv":[170,10],"uv_size":[-2,-2]},"down":{"uv":[162,10],"uv_size":[-2,2]}}}]},{"name":"hair2","pivot":[0,0,0],"parent":"head"},{"name":"right_hair_2","pivot":[4,32,0],"parent":"hair2"},{"name":"bone","pivot":[4,30,7.5],"parent":"right_hair_2"},{"name":"front_hair_2","pivot":[0,31,-4.25],"parent":"hair2"},{"name":"strand1_2","pivot":[4,30,-4],"parent":"front_hair_2"},{"name":"ears","pivot":[0,0,0],"parent":"head"},{"name":"ear2","pivot":[-4,28,-1],"parent":"ears","cubes":[{"origin":[-8.15,25.15,-1],"size":[4,4,0],"pivot":[-7.65,26.65,-1],"rotation":[0,0,-15],"inflate":0.01,"uv":{"north":{"uv":[174,18],"uv_size":[8,8]},"east":{"uv":[160,0],"uv_size":[0,8]},"south":{"uv":[182,8],"uv_size":[8,8]},"west":{"uv":[160,0],"uv_size":[0,8]},"up":{"uv":[168,0],"uv_size":[-8,0]},"down":{"uv":[168,0],"uv_size":[-8,0]}}},{"origin":[-11,27,-1],"size":[7,3,0],"pivot":[-4,29,0],"rotation":[0,0,-10],"uv":{"north":{"uv":[63,40],"uv_size":[7,3]},"east":{"uv":[0,0],"uv_size":[0,3]},"south":{"uv":[64,19],"uv_size":[7,3]},"west":{"uv":[0,0],"uv_size":[0,3]},"up":{"uv":[7,0],"uv_size":[-7,0]},"down":{"uv":[7,0],"uv_size":[-7,0]}}}]},{"name":"earring","pivot":[-6.865,27.55,-0.93],"parent":"ear2","cubes":[{"origin":[-7.1,25.25,-1.5],"size":[0,3,2],"pivot":[-7.1,26.75,-0.5],"rotation":[0,-12.5,0],"uv":{"north":{"uv":[160,0],"uv_size":[0,6]},"east":{"uv":[162,10],"uv_size":[4,6]},"south":{"uv":[160,0],"uv_size":[0,6]},"west":{"uv":[166,10],"uv_size":[4,6]},"up":{"uv":[160,4],"uv_size":[0,-4]},"down":{"uv":[160,0],"uv_size":[0,6]}}}]},{"name":"ear1","pivot":[4,28,-1],"parent":"ears","cubes":[{"origin":[4,27,-1],"size":[7,3,0],"pivot":[4,29,0],"rotation":[0,0,10],"uv":{"north":{"uv":[70,40],"uv_size":[-7,3]},"east":{"uv":[0,0],"uv_size":[0,3]},"south":{"uv":[71,19],"uv_size":[-7,3]},"west":{"uv":[0,0],"uv_size":[0,3]},"up":{"uv":[0,0],"uv_size":[7,0]},"down":{"uv":[0,0],"uv_size":[7,0]}}}]},{"name":"earring2","pivot":[7.65,26.65,-1],"parent":"ear1","cubes":[{"origin":[7.15,27.15,-1.25],"size":[1,1,0.5],"pivot":[7.65,27.65,-1],"rotation":[0,0,15],"uv":{"north":{"uv":[170,16],"uv_size":[2,2]},"east":{"uv":[172,16],"uv_size":[1,2]},"south":{"uv":[176,10],"uv_size":[2,2]},"west":{"uv":[176,12],"uv_size":[1,2]},"up":{"uv":[176,17],"uv_size":[-2,-1]},"down":{"uv":[178,16],"uv_size":[-2,1]}}},{"origin":[4.15,25.15,-1],"size":[4,4,0],"pivot":[7.65,26.65,-1],"rotation":[0,0,15],"inflate":0.01,"uv":{"north":{"uv":[176,0],"uv_size":[8,8]},"east":{"uv":[160,0],"uv_size":[0,8]},"south":{"uv":[162,16],"uv_size":[8,8]},"west":{"uv":[160,0],"uv_size":[0,8]},"up":{"uv":[168,0],"uv_size":[-8,0]},"down":{"uv":[168,0],"uv_size":[-8,0]}}}]},{"name":"earring_2","pivot":[5,27.75,-1.1],"parent":"ear1","cubes":[{"origin":[4,24,-1.1],"size":[2,4,0],"uv":{"north":{"uv":[178,8],"uv_size":[4,8]},"east":{"uv":[160,0],"uv_size":[0,8]},"south":{"uv":[170,18],"uv_size":[4,8]},"west":{"uv":[160,0],"uv_size":[0,8]},"up":{"uv":[164,0],"uv_size":[-4,0]},"down":{"uv":[164,0],"uv_size":[-4,0]}}}]},{"name":"skirt","pivot":[0,18,0],"parent":"body"},{"name":"back","pivot":[0.25,16.75,2],"parent":"skirt","cubes":[{"origin":[0,8,0],"size":[3.25,10,2.75],"pivot":[1,16,2],"rotation":[21.73088,5.59932,-16.59219],"uv":{"north":{"uv":[52,0],"uv_size":[-3,10]},"east":{"uv":[47,11],"uv_size":[-3,10]},"south":{"uv":[3,44],"uv_size":[-3,10]},"west":{"uv":[23,51],"uv_size":[-3,10]},"up":{"uv":[36,23],"uv_size":[-3,3]},"down":{"uv":[38,6],"uv_size":[-3,-3]}}},{"origin":[-0.75,8.25,0.25],"size":[3,9.5,2.5],"pivot":[1.25,15.75,1.75],"rotation":[28.66203,-16.18954,-14.21485],"uv":{"north":{"uv":[61,60],"uv_size":[-3,10]},"east":{"uv":[52,60],"uv_size":[-3,10]},"south":{"uv":[18,52],"uv_size":[-3,10]},"west":{"uv":[21,61],"uv_size":[-3,10]},"up":{"uv":[38,6],"uv_size":[-3,3]},"down":{"uv":[11,40],"uv_size":[-3,-3]}}},{"origin":[-2.25,8.25,0.25],"size":[3,9.5,2.5],"pivot":[-1.25,15.75,1.75],"rotation":[28.66203,16.18954,14.21485],"uv":{"north":{"uv":[58,60],"uv_size":[3,10]},"east":{"uv":[18,61],"uv_size":[3,10]},"south":{"uv":[15,52],"uv_size":[3,10]},"west":{"uv":[49,60],"uv_size":[3,10]},"up":{"uv":[35,6],"uv_size":[3,3]},"down":{"uv":[8,40],"uv_size":[3,-3]}}},{"origin":[-3.25,8,0],"size":[3.25,10,2.75],"pivot":[-1,16,2],"rotation":[21.73088,-5.59932,16.59219],"uv":{"north":{"uv":[49,0],"uv_size":[3,10]},"east":{"uv":[20,51],"uv_size":[3,10]},"south":{"uv":[0,44],"uv_size":[3,10]},"west":{"uv":[44,11],"uv_size":[3,10]},"up":{"uv":[33,23],"uv_size":[3,3]},"down":{"uv":[35,6],"uv_size":[3,-3]}}}]},{"name":"skirt2","pivot":[1,17,2.5],"parent":"back"},{"name":"flower","pivot":[-1.25154,17.94444,-2.91566],"parent":"skirt","cubes":[{"origin":[-3,16.5,-3.5],"size":[2,2,2],"pivot":[-2,18,-3],"rotation":[25,55,0],"inflate":-0.2,"uv":{"north":{"uv":[2,32],"uv_size":[2,2]},"east":{"uv":[14,33],"uv_size":[2,2]},"south":{"uv":[33,33],"uv_size":[2,2]},"west":{"uv":[2,34],"uv_size":[2,2]},"up":{"uv":[37,2],"uv_size":[-2,-2]},"down":{"uv":[35,35],"uv_size":[-2,2]}}}]},{"name":"right","pivot":[2.91903,16.83138,-0.68655],"parent":"skirt","cubes":[{"origin":[1.91903,8.33138,-2.18655],"size":[2,10,4],"pivot":[2.91903,15.33138,-0.68655],"rotation":[-14.89149,-9.29798,-31.28223],"inflate":0.2,"uv":{"north":{"uv":[33,33],"uv_size":[-2,10]},"east":{"uv":[58,50],"uv_size":[-4,10]},"south":{"uv":[2,26],"uv_size":[-2,10]},"west":{"uv":[69,45],"uv_size":[-4,10]},"up":{"uv":[26,19],"uv_size":[-2,4]},"down":{"uv":[28,20],"uv_size":[-2,-4]}}},{"origin":[1.91903,8.33138,-1.81345],"size":[2,10,4],"pivot":[2.91903,15.33138,0.68655],"rotation":[14.89149,9.29798,-31.28223],"inflate":0.2,"uv":{"north":{"uv":[0,26],"uv_size":[2,10]},"east":{"uv":[54,50],"uv_size":[4,10]},"south":{"uv":[31,33],"uv_size":[2,10]},"west":{"uv":[65,45],"uv_size":[4,10]},"up":{"uv":[26,23],"uv_size":[-2,-4]},"down":{"uv":[28,16],"uv_size":[-2,4]}}},{"origin":[1.91903,8.33138,-1.81345],"size":[2,10,4],"pivot":[2.91903,15.33138,0.68655],"rotation":[14.89149,9.29798,-31.28223],"uv":{"north":{"uv":[35,30],"uv_size":[2,10]},"east":{"uv":[11,43],"uv_size":[4,10]},"south":{"uv":[29,42],"uv_size":[2,10]},"west":{"uv":[25,43],"uv_size":[4,10]},"up":{"uv":[41,42],"uv_size":[-2,-4]},"down":{"uv":[36,41],"uv_size":[-2,4]}}},{"origin":[1.16903,8.33138,-2.18655],"size":[2.75,10,4],"pivot":[2.91903,15.33138,-0.68655],"rotation":[-14.89149,-9.29798,-31.28223],"uv":{"north":{"uv":[54,10],"uv_size":[3,10]},"east":{"uv":[42,0],"uv_size":[4,10]},"south":{"uv":[54,40],"uv_size":[3,10]},"west":{"uv":[16,42],"uv_size":[4,10]},"up":{"uv":[15,40],"uv_size":[-3,-4]},"down":{"uv":[39,23],"uv_size":[-3,4]}}}]},{"name":"left","pivot":[-2.91903,16.83138,-0.68655],"parent":"skirt","cubes":[{"origin":[-3.91903,8.33138,-2.18655],"size":[2,10,4],"pivot":[-2.91903,15.33138,-0.68655],"rotation":[-14.89149,9.29798,31.28223],"inflate":0.2,"uv":{"north":{"uv":[31,33],"uv_size":[2,10]},"east":{"uv":[65,45],"uv_size":[4,10]},"south":{"uv":[0,26],"uv_size":[2,10]},"west":{"uv":[54,50],"uv_size":[4,10]},"up":{"uv":[24,19],"uv_size":[2,4]},"down":{"uv":[26,20],"uv_size":[2,-4]}}},{"origin":[-3.91903,8.33138,-1.81345],"size":[2,10,4],"pivot":[-2.91903,15.33138,0.68655],"rotation":[14.89149,-9.29798,31.28223],"inflate":0.2,"uv":{"north":{"uv":[2,26],"uv_size":[-2,10]},"east":{"uv":[69,45],"uv_size":[-4,10]},"south":{"uv":[33,33],"uv_size":[-2,10]},"west":{"uv":[58,50],"uv_size":[-4,10]},"up":{"uv":[24,23],"uv_size":[2,-4]},"down":{"uv":[26,16],"uv_size":[2,4]}}},{"origin":[-3.91903,8.33138,-1.81345],"size":[2,10,4],"pivot":[-2.91903,15.33138,0.68655],"rotation":[14.89149,-9.29798,31.28223],"uv":{"north":{"uv":[37,30],"uv_size":[-2,10]},"east":{"uv":[29,43],"uv_size":[-4,10]},"south":{"uv":[31,42],"uv_size":[-2,10]},"west":{"uv":[15,43],"uv_size":[-4,10]},"up":{"uv":[39,42],"uv_size":[2,-4]},"down":{"uv":[34,41],"uv_size":[2,4]}}},{"origin":[-3.91903,8.33138,-2.18655],"size":[2.75,10,4],"pivot":[-2.91903,15.33138,-0.68655],"rotation":[-14.89149,9.29798,31.28223],"uv":{"north":{"uv":[57,10],"uv_size":[-3,10]},"east":{"uv":[20,42],"uv_size":[-4,10]},"south":{"uv":[57,40],"uv_size":[-3,10]},"west":{"uv":[46,0],"uv_size":[-4,10]},"up":{"uv":[12,40],"uv_size":[3,-4]},"down":{"uv":[36,23],"uv_size":[3,4]}}}]},{"name":"front","pivot":[0.25,17,-2],"parent":"skirt","cubes":[{"origin":[-3.25,8,-2.75],"size":[3.25,10,2.75],"pivot":[-1,16,-2],"rotation":[-21.73088,5.59932,16.59219],"uv":{"north":{"uv":[55,0],"uv_size":[-3,10]},"east":{"uv":[5,54],"uv_size":[-3,10]},"south":{"uv":[15,53],"uv_size":[-3,10]},"west":{"uv":[12,53],"uv_size":[-3,10]},"up":{"uv":[39,24],"uv_size":[3,-3]},"down":{"uv":[39,24],"uv_size":[3,3]}}},{"origin":[-2.25,8.25,-2.75],"size":[3,9.5,2.5],"pivot":[-1.25,15.75,-1.75],"rotation":[-28.66203,-16.18954,14.21485],"uv":{"north":{"uv":[6,44],"uv_size":[-3,10]},"east":{"uv":[50,15],"uv_size":[-3,10]},"south":{"uv":[49,0],"uv_size":[-3,10]},"west":{"uv":[47,29],"uv_size":[-3,10]},"up":{"uv":[37,3],"uv_size":[3,-3]},"down":{"uv":[38,3],"uv_size":[3,3]}}},{"origin":[-0.75,8.25,-2.75],"size":[3,9.5,2.5],"pivot":[1.25,15.75,-1.75],"rotation":[-28.66203,16.18954,-14.21485],"uv":{"north":{"uv":[3,44],"uv_size":[3,10]},"east":{"uv":[44,29],"uv_size":[3,10]},"south":{"uv":[46,0],"uv_size":[3,10]},"west":{"uv":[47,15],"uv_size":[3,10]},"up":{"uv":[40,3],"uv_size":[-3,-3]},"down":{"uv":[41,3],"uv_size":[-3,3]}}},{"origin":[0,8,-2.75],"size":[3.25,10,2.75],"pivot":[1,16,-2],"rotation":[-21.73088,-5.59932,-16.59219],"uv":{"north":{"uv":[52,0],"uv_size":[3,10]},"east":{"uv":[9,53],"uv_size":[3,10]},"south":{"uv":[12,53],"uv_size":[3,10]},"west":{"uv":[2,54],"uv_size":[3,10]},"up":{"uv":[42,24],"uv_size":[-3,-3]},"down":{"uv":[42,24],"uv_size":[-3,3]}}}]},{"name":"chain","pivot":[-2,16,-2],"parent":"front","cubes":[{"origin":[-1,14,-3],"size":[4,4,0],"pivot":[2,16,-2],"rotation":[-22.69444,-7.69146,-12.32369],"uv":{"north":{"uv":[188,16],"uv_size":[8,8]},"east":{"uv":[160,0],"uv_size":[0,8]},"south":{"uv":[178,28],"uv_size":[8,8]},"west":{"uv":[160,0],"uv_size":[0,8]},"up":{"uv":[168,0],"uv_size":[-8,0]},"down":{"uv":[168,0],"uv_size":[-8,0]}}},{"origin":[-3,14,-3],"size":[2,4,0],"pivot":[-2,16,-2],"rotation":[-22.69444,7.69146,12.32369],"uv":{"north":{"uv":[172,26],"uv_size":[4,8]},"east":{"uv":[160,0],"uv_size":[0,8]},"south":{"uv":[160,28],"uv_size":[4,8]},"west":{"uv":[160,0],"uv_size":[0,8]},"up":{"uv":[164,0],"uv_size":[-4,0]},"down":{"uv":[164,0],"uv_size":[-4,0]}}}]},{"name":"wings","pivot":[0,24,0],"parent":"body"},{"name":"wing1","pivot":[-1,21,2],"parent":"wings","rotation":[0,-12.5,0],"cubes":[{"origin":[-7.80726,15,1.75986],"size":[9,9,0],"pivot":[0.19274,22,2.75986],"rotation":[39.32269,42.14507,50.67731],"uv":{"north":{"uv":[63,29],"uv_size":[9,9]},"east":{"uv":[0,0],"uv_size":[0,9]},"south":{"uv":[66,62],"uv_size":[9,9]},"west":{"uv":[0,0],"uv_size":[0,9]},"up":{"uv":[9,0],"uv_size":[-9,0]},"down":{"uv":[9,0],"uv_size":[-9,0]}}}]},{"name":"wing2","pivot":[1,22,2],"parent":"wings","rotation":[0,12.5,0],"cubes":[{"origin":[-1.19274,15,1.75986],"size":[9,9,0],"pivot":[-0.19274,22,2.75986],"rotation":[39.32269,-42.14507,-50.67731],"uv":{"north":{"uv":[72,29],"uv_size":[-9,9]},"east":{"uv":[0,0],"uv_size":[0,9]},"south":{"uv":[75,62],"uv_size":[-9,9]},"west":{"uv":[0,0],"uv_size":[0,9]},"up":{"uv":[0,0],"uv_size":[9,0]},"down":{"uv":[0,0],"uv_size":[9,0]}}}]},{"name":"bodyrot2","pivot":[-0.0303,16.00381,0.17183],"parent":"body"},{"name":"chest","pivot":[-0.0303,22.00381,-1.32817],"parent":"bodyrot2"},{"name":"o1","pivot":[-0.0303,22.00381,-1.57817],"parent":"chest","cubes":[{"origin":[-3.0303,20.00381,-2.57817],"size":[6,3,2],"pivot":[-0.0303,22.00381,-1.57817],"rotation":[-30,0,0],"inflate":-0.01,"uv":{"north":{"uv":[0,1],"uv_size":[6,3]},"east":{"uv":[6,4],"uv_size":[2,3]},"south":{"uv":[0,4],"uv_size":[6,3]},"west":{"uv":[8,4],"uv_size":[2,3]},"up":{"uv":[12,2],"uv_size":[-6,-2]},"down":{"uv":[12,2],"uv_size":[-6,2]}}},{"origin":[-2.9303,20.00381,-2.57817],"size":[5.8,3,2],"pivot":[-0.0303,22.00381,-1.57817],"rotation":[-30,0,0],"inflate":0.4,"uv":{"north":{"uv":[51,32],"uv_size":[6,3]},"east":{"uv":[12,0],"uv_size":[2,3]},"south":{"uv":[51,35],"uv_size":[6,3]},"west":{"uv":[24,16],"uv_size":[2,3]},"up":{"uv":[6,9],"uv_size":[-6,-2]},"down":{"uv":[38,27],"uv_size":[-6,2]}}}]},{"name":"o2","pivot":[-0.0303,22.00381,-1.32817],"parent":"chest"},{"name":"o1_2","pivot":[-0.0303,-0.99619,0.17183],"parent":"bodyrot2","cubes":[{"origin":[-3.1303,17.00381,-2.32817],"size":[6.35,1,5],"uv":{"north":{"uv":[16,23],"uv_size":[6,1]},"east":{"uv":[31,26],"uv_size":[5,1]},"south":{"uv":[32,14],"uv_size":[6,1]},"west":{"uv":[38,29],"uv_size":[5,1]},"up":{"uv":[68,19],"uv_size":[-6,-5]},"down":{"uv":[31,63],"uv_size":[-6,5]}}},{"origin":[-3.0303,14.00381,-1.82817],"size":[6,10,4],"uv":{"north":{"uv":[48,42],"uv_size":[6,10]},"east":{"uv":[50,10],"uv_size":[4,10]},"south":{"uv":[58,19],"uv_size":[6,10]},"west":{"uv":[5,54],"uv_size":[4,10]},"up":{"uv":[28,37],"uv_size":[-6,-4]},"down":{"uv":[10,40],"uv_size":[-6,4]}}}]},{"name":"o2_2","pivot":[-0.0303,16.00381,0.17183],"parent":"bodyrot2"},{"name":"skirt2_2","pivot":[0,16.5,0],"parent":"body"},{"name":"l_arm","pivot":[-3.26105,22.48289,0],"parent":"torso","rotation":[0,0,-7.5]},{"name":"hand","pivot":[-5.27408,18.34844,0.25],"parent":"l_arm","rotation":[0,0,7.5]},{"name":"goblet","pivot":[-8,12.7375,-0.03125],"parent":"hand","rotation":[82.5,0,0]},{"name":"LeftItemPivot","pivot":[-8.24144,13.84631,0],"parent":"hand"},{"name":"o1_3","pivot":[-7.35154,18.30858,-0.1],"parent":"hand","cubes":[{"origin":[-3.93749,11.89621,-1.5],"size":[3,6,3],"pivot":[-3.17171,22.62411,0],"rotation":[0,0,35],"inflate":0.21,"uv":{"north":{"uv":[61,46],"uv_size":[3,6]},"east":{"uv":[61,52],"uv_size":[3,6]},"south":{"uv":[61,58],"uv_size":[3,6]},"west":{"uv":[63,0],"uv_size":[3,6]},"up":{"uv":[32,55],"uv_size":[-3,-3]},"down":{"uv":[51,52],"uv_size":[-3,3]}}},{"origin":[-3.93749,11.89621,-1.5],"size":[3,6,3],"pivot":[-3.17171,22.62411,0],"rotation":[0,0,35],"uv":{"north":{"uv":[57,40],"uv_size":[3,6]},"east":{"uv":[60,29],"uv_size":[3,6]},"south":{"uv":[60,40],"uv_size":[3,6]},"west":{"uv":[61,8],"uv_size":[3,6]},"up":{"uv":[13,43],"uv_size":[-3,-3]},"down":{"uv":[34,43],"uv_size":[-3,3]}}},{"origin":[-8.10154,16.80858,-1.6],"size":[2,2,3],"pivot":[-7.35154,18.30858,-0.1],"rotation":[0,0,-32.5],"uv":{"north":{"uv":[2,30],"uv_size":[2,2]},"east":{"uv":[6,7],"uv_size":[3,2]},"south":{"uv":[26,31],"uv_size":[2,2]},"west":{"uv":[24,23],"uv_size":[3,2]},"up":{"uv":[28,23],"uv_size":[-2,-3]},"down":{"uv":[4,27],"uv_size":[-2,3]}}}]},{"name":"o2_3","pivot":[-5.27408,18.34844,0.25],"parent":"hand","rotation":[0,0,2.5]},{"name":"o1_4","pivot":[-3.26105,22.48289,0],"parent":"l_arm","cubes":[{"origin":[-4.02683,17.75499,-1.5],"size":[3,6,3],"pivot":[-3.26105,22.48289,0],"rotation":[0,0,35],"uv":{"north":{"uv":[41,36],"uv_size":[3,6]},"east":{"uv":[6,48],"uv_size":[3,6]},"south":{"uv":[23,53],"uv_size":[3,6]},"west":{"uv":[57,29],"uv_size":[3,6]},"up":{"uv":[25,40],"uv_size":[-3,-3]},"down":{"uv":[28,37],"uv_size":[-3,3]}}},{"origin":[-4.02683,17.75499,-1.5],"size":[3,6,3],"pivot":[-3.26105,22.48289,0],"rotation":[0,0,35],"inflate":0.2,"uv":{"north":{"uv":[34,61],"uv_size":[3,6]},"east":{"uv":[39,61],"uv_size":[3,6]},"south":{"uv":[42,61],"uv_size":[3,6]},"west":{"uv":[45,61],"uv_size":[3,6]},"up":{"uv":[47,24],"uv_size":[-3,-3]},"down":{"uv":[50,11],"uv_size":[-3,3]}}}]},{"name":"o2_4","pivot":[-3.26105,22.48289,0],"parent":"l_arm","rotation":[0,0,-5]},{"name":"r_arm","pivot":[3.26105,22.48289,0],"parent":"torso","rotation":[0,0,7.5]},{"name":"hand_2","pivot":[5.27408,18.34844,0.25],"parent":"r_arm","rotation":[0,0,-7.5]},{"name":"RightItemPivot","pivot":[8.24144,13.84631,0],"parent":"hand_2"},{"name":"o1_5","pivot":[7.35154,18.30858,-0.1],"parent":"hand_2","cubes":[{"origin":[0.93749,11.89621,-1.5],"size":[3,6,3],"pivot":[3.17171,22.62411,0],"rotation":[0,0,-35],"inflate":0.21,"uv":{"north":{"uv":[64,46],"uv_size":[-3,6]},"east":{"uv":[66,0],"uv_size":[-3,6]},"south":{"uv":[64,58],"uv_size":[-3,6]},"west":{"uv":[64,52],"uv_size":[-3,6]},"up":{"uv":[29,55],"uv_size":[3,-3]},"down":{"uv":[48,52],"uv_size":[3,3]}}},{"origin":[0.93749,11.89621,-1.5],"size":[3,6,3],"pivot":[3.17171,22.62411,0],"rotation":[0,0,-35],"uv":{"north":{"uv":[60,40],"uv_size":[-3,6]},"east":{"uv":[64,8],"uv_size":[-3,6]},"south":{"uv":[63,40],"uv_size":[-3,6]},"west":{"uv":[63,29],"uv_size":[-3,6]},"up":{"uv":[10,43],"uv_size":[3,-3]},"down":{"uv":[31,43],"uv_size":[3,3]}}},{"origin":[6.10154,16.80858,-1.6],"size":[2,2,3],"pivot":[7.35154,18.30858,-0.1],"rotation":[0,0,32.5],"uv":{"north":{"uv":[4,30],"uv_size":[-2,2]},"east":{"uv":[27,23],"uv_size":[-3,2]},"south":{"uv":[28,31],"uv_size":[-2,2]},"west":{"uv":[9,7],"uv_size":[-3,2]},"up":{"uv":[26,23],"uv_size":[2,-3]},"down":{"uv":[2,27],"uv_size":[2,3]}}}]},{"name":"lamp","pivot":[8.66337,13.78178,-0.31904],"parent":"hand_2"},{"name":"ch1","pivot":[8.56697,12.69844,-0.45711],"parent":"lamp"},{"name":"ch2","pivot":[8.52408,11.09844,-0.5],"parent":"ch1"},{"name":"ch3","pivot":[9.27408,3.34844,0.25],"parent":"ch2"},{"name":"f1","pivot":[8.77408,5.84844,-0.25],"parent":"ch3"},{"name":"f2","pivot":[8.77408,5.84844,-0.25],"parent":"ch3"},{"name":"o2_5","pivot":[5.27408,18.34844,0.25],"parent":"hand_2","rotation":[0,0,-2.5]},{"name":"o1_6","pivot":[3.26105,22.48289,0],"parent":"r_arm","cubes":[{"origin":[1.02683,17.75499,-1.5],"size":[3,6,3],"pivot":[3.26105,22.48289,0],"rotation":[0,0,-35],"inflate":-0.01,"uv":{"north":{"uv":[44,36],"uv_size":[-3,6]},"east":{"uv":[60,29],"uv_size":[-3,6]},"south":{"uv":[26,53],"uv_size":[-3,6]},"west":{"uv":[9,48],"uv_size":[-3,6]},"up":{"uv":[22,40],"uv_size":[3,-3]},"down":{"uv":[25,37],"uv_size":[3,3]}}},{"origin":[1.02683,17.75499,-1.5],"size":[3,6,3],"pivot":[3.26105,22.48289,0],"rotation":[0,0,-35],"inflate":0.2,"uv":{"north":{"uv":[37,61],"uv_size":[-3,6]},"east":{"uv":[48,61],"uv_size":[-3,6]},"south":{"uv":[45,61],"uv_size":[-3,6]},"west":{"uv":[42,61],"uv_size":[-3,6]},"up":{"uv":[44,24],"uv_size":[3,-3]},"down":{"uv":[47,11],"uv_size":[3,3]}}}]},{"name":"o2_6","pivot":[3.26105,22.48289,0],"parent":"r_arm"},{"name":"l_leg","pivot":[-1.9,15,0],"parent":"whole"},{"name":"knee","pivot":[-1.4,7,-0.25],"parent":"l_leg"},{"name":"o1_7","pivot":[-0.4,-4,-0.25],"parent":"knee","cubes":[{"origin":[-2.85,0,-1.5],"size":[2.8,7,3],"uv":{"north":{"uv":[31,63],"uv_size":[3,7]},"east":{"uv":[6,64],"uv_size":[3,7]},"south":{"uv":[64,6],"uv_size":[3,7]},"west":{"uv":[6,64],"uv_size":[3,7]},"up":{"uv":[40,21],"uv_size":[-3,-3]},"down":{"uv":[19,39],"uv_size":[-3,3]}}},{"origin":[-3.05,0,-1.5],"size":[3,7,3],"inflate":0.2,"uv":{"north":{"uv":[51,52],"uv_size":[3,7]},"east":{"uv":[57,8],"uv_size":[3,7]},"south":{"uv":[58,46],"uv_size":[3,7]},"west":{"uv":[57,8],"uv_size":[3,7]},"up":{"uv":[22,42],"uv_size":[-3,-3]},"down":{"uv":[31,39],"uv_size":[-3,3]}}}]},{"name":"o2_7","pivot":[-0.4,-4,-0.25],"parent":"knee"},{"name":"o1_8","pivot":[-1.55,7,0],"parent":"l_leg","cubes":[{"origin":[-2.95,7,-1.5],"size":[2.9,7,3],"pivot":[-1.55,7,0],"rotation":[0,0,-2.5],"inflate":0.1,"uv":{"north":{"uv":[32,0],"uv_size":[3,7]},"east":{"uv":[16,32],"uv_size":[3,7]},"south":{"uv":[19,32],"uv_size":[3,7]},"west":{"uv":[28,32],"uv_size":[3,7]},"up":{"uv":[35,10],"uv_size":[-3,-3]},"down":{"uv":[40,15],"uv_size":[-3,3]}}},{"origin":[-3.4,7.5,-1.5],"size":[2,2,3],"pivot":[-2.4,8.5,0],"rotation":[0,0,15],"uv":{"north":{"uv":[37,12],"uv_size":[2,2]},"east":{"uv":[37,36],"uv_size":[3,2]},"south":{"uv":[37,21],"uv_size":[2,2]},"west":{"uv":[38,6],"uv_size":[3,2]},"up":{"uv":[39,12],"uv_size":[-2,-3]},"down":{"uv":[35,37],"uv_size":[-2,3]}}}]},{"name":"o2_8","pivot":[-1.55,7,0],"parent":"l_leg"},{"name":"r_leg","pivot":[1.9,15,0],"parent":"whole"},{"name":"knee_2","pivot":[1.4,7,-0.25],"parent":"r_leg"},{"name":"o1_9","pivot":[0.4,-4,-0.25],"parent":"knee_2","cubes":[{"origin":[0.05,0,-1.5],"size":[3,7,3],"inflate":0.2,"uv":{"north":{"uv":[54,52],"uv_size":[-3,7]},"east":{"uv":[60,8],"uv_size":[-3,7]},"south":{"uv":[61,46],"uv_size":[-3,7]},"west":{"uv":[60,8],"uv_size":[-3,7]},"up":{"uv":[19,42],"uv_size":[3,-3]},"down":{"uv":[28,39],"uv_size":[3,3]}}},{"origin":[0.05,0,-1.5],"size":[2.8,7,3],"uv":{"north":{"uv":[34,63],"uv_size":[-3,7]},"east":{"uv":[9,64],"uv_size":[-3,7]},"south":{"uv":[67,6],"uv_size":[-3,7]},"west":{"uv":[9,64],"uv_size":[-3,7]},"up":{"uv":[37,21],"uv_size":[3,-3]},"down":{"uv":[16,39],"uv_size":[3,3]}}}]},{"name":"o2_9","pivot":[0.4,-4,-0.25],"parent":"knee_2"},{"name":"o1_10","pivot":[1.55,7,0],"parent":"r_leg","cubes":[{"origin":[1.4,5.5,-1.5],"size":[2,2,3],"pivot":[2.4,6.5,0],"rotation":[0,0,-15],"uv":{"north":{"uv":[39,12],"uv_size":[-2,2]},"east":{"uv":[41,6],"uv_size":[-3,2]},"south":{"uv":[39,21],"uv_size":[-2,2]},"west":{"uv":[40,36],"uv_size":[-3,2]},"up":{"uv":[37,12],"uv_size":[2,-3]},"down":{"uv":[33,37],"uv_size":[2,3]}}},{"origin":[0.05,7,-1.5],"size":[2.8,7,3],"pivot":[1.55,7,0],"rotation":[0,0,2.5],"inflate":0.1,"uv":{"north":{"uv":[64,55],"uv_size":[3,7]},"east":{"uv":[61,66],"uv_size":[3,7]},"south":{"uv":[67,0],"uv_size":[3,7]},"west":{"uv":[67,7],"uv_size":[3,7]},"up":{"uv":[3,67],"uv_size":[-3,-3]},"down":{"uv":[67,22],"uv_size":[-3,3]}}}]},{"name":"o2_10","pivot":[1.55,7,0],"parent":"r_leg"}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/goldenglow.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/goldenglow.anim.json new file mode 100644 index 0000000..f8a5518 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/goldenglow.anim.json @@ -0,0 +1 @@ +{"autoplay":["Drone","StaticDrone","StaticStaff"],"clips":{"blink":{"loop":"once","length":0.20833,"bones":{"eyelids":{"position":[[0,0,0,0],[0.08333,0,-2.25,0],[0.125,0,0,0],[0.20833,0,0,0]]}}},"crouch":{"loop":"loop","length":0,"bones":{"CharModel":{"position":[[0,0,0,4]]},"RootBody":{"rotation":[[0,-30,0,0]],"position":[[0,0,-1.5,2]]},"FHead":{"rotation":[[0,30,0,0]],"position":[[0,0,-1,0]]},"Body":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]]},"Skirt":{"rotation":[[0,25,0,0]],"position":[[0,0,0,0]]},"LeftArm":{"position":[[0,0,0,0]]},"RightArm":{"position":[[0,0,0,0]]},"RightLeg":{"position":[[0,0,0,0]]},"LowerRightLeg":{"position":[[0,0,0,0]]},"LeftLeg":{"position":[[0,0,0,0]]},"LowerLeftLeg":{"position":[[0,0,0,0]]}}},"Drone":{"loop":"loop","length":2,"bones":{"DroneBone":{"rotation":[[0,0,0,0],[2,0,360,0]]}}},"jumpup":{"loop":"loop","length":0,"bones":{"LeftArm":{"rotation":[[0,0,0,15]]},"RightArm":{"rotation":[[0,0,0,-15]]}}},"sprintjumpup":{"loop":"loop","length":0,"bones":{"LeftArm":{"rotation":[[0,0,0,15]]},"RightArm":{"rotation":[[0,0,0,-15]]}}},"walk":{"loop":"loop","length":0,"bones":{"CharModel":{"rotation":[[0,-5,0,0]]},"FHead":{"rotation":[[0,5,0,0]]}}},"walkback":{"loop":"loop","length":0,"bones":{"CharModel":{"rotation":[[0,5,0,0]]},"FHead":{"rotation":[[0,-5,0,0]]}}},"sprint":{"loop":"loop","length":0,"bones":{"CharModel":{"rotation":[[0,-15,0,0]]},"FHead":{"rotation":[[0,15,0,0]]}}},"StaticDrone":{"loop":"loop","length":15,"bones":{"SU1":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.5,1,1,1],[0.54167,0,0,0],[1.16667,1,1,1],[1.20833,0,0,0],[1.58333,1,1,1],[1.625,0,0,0],[3.25,1,1,1],[3.29167,0,0,0],[3.70833,1,1,1],[3.75,0,0,0],[4.625,1,1,1],[4.66667,0,0,0],[5.70833,1,1,1],[5.75,0,0,0],[6.58333,1,1,1],[6.625,0,0,0],[7.16667,1,1,1],[7.20833,0,0,0],[8.25,1,1,1],[8.29167,0,0,0],[9.16667,1,1,1],[9.20833,0,0,0],[9.875,1,1,1],[9.91667,0,0,0],[10.33333,1,1,1],[10.375,0,0,0],[11.29167,1,1,1],[11.33333,0,0,0],[12.16667,1,1,1],[12.20833,0,0,0],[12.83333,1,1,1],[12.875,0,0,0],[13.29167,1,1,1],[13.33333,0,0,0],[14.41667,1,1,1],[14.45833,0,0,0],[14.83333,1,1,1],[14.875,0,0,0]]},"SU2":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.41667,1,1,1],[0.45833,0,0,0],[1.16667,1,1,1],[1.20833,0,0,0],[1.66667,1,1,1],[1.70833,0,0,0],[3.04167,1,1,1],[3.08333,0,0,0],[3.75,1,1,1],[3.79167,0,0,0],[4.33333,1,1,1],[4.375,0,0,0],[5.08333,1,1,1],[5.125,0,0,0],[5.75,1,1,1],[5.79167,0,0,0],[6.16667,1,1,1],[6.20833,0,0,0],[6.91667,1,1,1],[6.95833,0,0,0],[7.58333,1,1,1],[7.625,0,0,0],[8.375,1,1,1],[8.41667,0,0,0],[8.58333,1,1,1],[8.625,0,0,0],[9.58333,1,1,1],[9.625,0,0,0],[10.08333,1,1,1],[10.125,0,0,0],[11.625,1,1,1],[11.66667,0,0,0],[12.70833,1,1,1],[12.75,0,0,0],[13.25,1,1,1],[13.29167,0,0,0],[13.79167,1,1,1],[13.83333,0,0,0],[14.66667,1,1,1],[14.70833,0,0,0],[14.95833,1,1,1],[15,0,0,0]]},"SL1":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.54167,1,1,1],[0.58333,0,0,0],[1,1,1,1],[1.04167,0,0,0],[2.875,1,1,1],[2.91667,0,0,0],[3.5,1,1,1],[3.54167,0,0,0],[4.875,1,1,1],[4.91667,0,0,0],[5.625,1,1,1],[5.66667,0,0,0],[6.375,1,1,1],[6.41667,0,0,0],[7.58333,1,1,1],[7.625,0,0,0],[9.66667,1,1,1],[9.70833,0,0,0],[10.5,1,1,1],[10.54167,0,0,0],[11,1,1,1],[11.04167,0,0,0],[12.08333,1,1,1],[12.125,0,0,0],[13.04167,1,1,1],[13.08333,0,0,0],[13.79167,1,1,1],[13.83333,0,0,0],[14.58333,1,1,1],[14.625,0,0,0]]},"SL2":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[1.25,1,1,1],[1.29167,0,0,0],[3.04167,1,1,1],[3.08333,0,0,0],[4.375,1,1,1],[4.41667,0,0,0],[5.08333,1,1,1],[5.125,0,0,0],[6.375,1,1,1],[6.41667,0,0,0],[7.04167,1,1,1],[7.08333,0,0,0],[9.54167,1,1,1],[9.58333,0,0,0],[10.16667,1,1,1],[10.20833,0,0,0],[11.66667,1,1,1],[11.70833,0,0,0],[12.66667,1,1,1],[12.70833,0,0,0],[13.33333,1,1,1],[13.375,0,0,0],[14.25,1,1,1],[14.29167,0,0,0]]},"SL3":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.66667,1,1,1],[0.70833,0,0,0],[2.20833,1,1,1],[2.25,0,0,0],[4.25,1,1,1],[4.29167,0,0,0],[4.58333,1,1,1],[4.625,0,0,0],[5.91667,1,1,1],[5.95833,0,0,0],[7.20833,1,1,1],[7.25,0,0,0],[8.625,1,1,1],[8.66667,0,0,0],[9.25,1,1,1],[9.29167,0,0,0],[10.58333,1,1,1],[10.625,0,0,0],[11.16667,1,1,1],[11.20833,0,0,0],[11.91667,1,1,1],[11.95833,0,0,0],[13.58333,1,1,1],[13.625,0,0,0]]},"SL4":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[1.33333,1,1,1],[1.375,0,0,0],[1.58333,1,1,1],[1.625,0,0,0],[3,1,1,1],[3.04167,0,0,0],[4.29167,1,1,1],[4.33333,0,0,0],[5.33333,1,1,1],[5.375,0,0,0],[5.625,1,1,1],[5.66667,0,0,0],[6.20833,1,1,1],[6.25,0,0,0],[7.83333,1,1,1],[7.875,0,0,0],[9.91667,1,1,1],[9.95833,0,0,0],[10.16667,1,1,1],[10.20833,0,0,0],[11.5,1,1,1],[11.54167,0,0,0],[12.875,1,1,1],[12.91667,0,0,0],[14.91667,1,1,1],[14.95833,0,0,0]]}}},"StaticStaff":{"loop":"loop","length":15,"bones":{"SV1":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.5,1,1,1],[0.54167,0,0,0],[1.125,1,1,1],[1.16667,0,0,0],[1.45833,1,1,1],[1.5,0,0,0],[2.54167,1,1,1],[2.58333,0,0,0],[3.125,1,1,1],[3.16667,0,0,0],[4.08333,1,1,1],[4.125,0,0,0],[4.41667,1,1,1],[4.45833,0,0,0],[5.66667,1,1,1],[5.70833,0,0,0],[6.29167,1,1,1],[6.33333,0,0,0],[7.29167,1,1,1],[7.33333,0,0,0],[7.875,1,1,1],[7.91667,0,0,0],[8.66667,1,1,1],[8.70833,0,0,0],[9.41667,1,1,1],[9.45833,0,0,0],[10.375,1,1,1],[10.41667,0,0,0],[11,1,1,1],[11.04167,0,0,0],[11.25,1,1,1],[11.29167,0,0,0],[12.29167,1,1,1],[12.33333,0,0,0],[13.04167,1,1,1],[13.08333,0,0,0],[14,1,1,1],[14.04167,0,0,0],[14.54167,1,1,1],[14.58333,0,0,0]]},"SV2":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.70833,1,1,1],[0.75,0,0,0],[1.45833,1,1,1],[1.5,0,0,0],[1.875,1,1,1],[1.91667,0,0,0],[2.25,1,1,1],[2.29167,0,0,0],[3.20833,1,1,1],[3.25,0,0,0],[4.04167,1,1,1],[4.08333,0,0,0],[4.70833,1,1,1],[4.75,0,0,0],[5.5,1,1,1],[5.54167,0,0,0],[6.25,1,1,1],[6.29167,0,0,0],[6.70833,1,1,1],[6.75,0,0,0],[7.125,1,1,1],[7.16667,0,0,0],[8.04167,1,1,1],[8.08333,0,0,0],[8.375,1,1,1],[8.41667,0,0,0],[8.83333,1,1,1],[8.875,0,0,0],[9.58333,1,1,1],[9.625,0,0,0],[10,1,1,1],[10.04167,0,0,0],[10.66667,1,1,1],[10.70833,0,0,0],[11.16667,1,1,1],[11.20833,0,0,0],[11.83333,1,1,1],[11.875,0,0,0],[12.375,1,1,1],[12.41667,0,0,0],[12.95833,1,1,1],[13,0,0,0],[13.5,1,1,1],[13.54167,0,0,0],[14.16667,1,1,1],[14.20833,0,0,0]]},"SV3":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.625,1,1,1],[0.66667,0,0,0],[0.79167,1,1,1],[0.83333,0,0,0],[1,1,1,1],[1.04167,0,0,0],[1.375,1,1,1],[1.41667,0,0,0],[2.5,1,1,1],[2.54167,0,0,0],[3.375,1,1,1],[3.41667,0,0,0],[3.83333,1,1,1],[3.875,0,0,0],[4.83333,1,1,1],[4.875,0,0,0],[5.66667,1,1,1],[5.70833,0,0,0],[7.33333,1,1,1],[7.375,0,0,0],[8.08333,1,1,1],[8.125,0,0,0],[8.25,1,1,1],[8.29167,0,0,0],[8.625,1,1,1],[8.66667,0,0,0],[9.83333,1,1,1],[9.875,0,0,0],[10.66667,1,1,1],[10.70833,0,0,0],[11,1,1,1],[11.04167,0,0,0],[11.83333,1,1,1],[11.875,0,0,0],[12.29167,1,1,1],[12.33333,0,0,0],[13.16667,1,1,1],[13.20833,0,0,0],[13.95833,1,1,1],[14,0,0,0]]},"SV4":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.54167,1,1,1],[0.58333,0,0,0],[1.20833,1,1,1],[1.25,0,0,0],[1.54167,1,1,1],[1.58333,0,0,0],[2.54167,1,1,1],[2.58333,0,0,0],[2.875,1,1,1],[2.91667,0,0,0],[4.125,1,1,1],[4.16667,0,0,0],[4.70833,1,1,1],[4.75,0,0,0],[5.16667,1,1,1],[5.20833,0,0,0],[6.04167,1,1,1],[6.08333,0,0,0],[6.70833,1,1,1],[6.75,0,0,0],[7.41667,1,1,1],[7.45833,0,0,0],[8.25,1,1,1],[8.29167,0,0,0],[9.04167,1,1,1],[9.08333,0,0,0],[9.54167,1,1,1],[9.58333,0,0,0],[10.5,1,1,1],[10.54167,0,0,0],[11.5,1,1,1],[11.54167,0,0,0],[11.83333,1,1,1],[11.875,0,0,0],[12.08333,1,1,1],[12.125,0,0,0],[12.91667,1,1,1],[12.95833,0,0,0],[13.41667,1,1,1],[13.45833,0,0,0],[13.79167,1,1,1],[13.83333,0,0,0],[14.54167,1,1,1],[14.58333,0,0,0]]},"SNS1":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.54167,1,1,1],[0.58333,0,0,0],[1.83333,1,1,1],[1.875,0,0,0],[2.625,1,1,1],[2.66667,0,0,0],[3.33333,1,1,1],[3.375,0,0,0],[4.04167,1,1,1],[4.08333,0,0,0],[4.375,1,1,1],[4.41667,0,0,0],[5.125,1,1,1],[5.16667,0,0,0],[5.33333,1,1,1],[5.375,0,0,0],[5.5,1,1,1],[5.54167,0,0,0],[5.75,1,1,1],[5.79167,0,0,0],[6.45833,1,1,1],[6.5,0,0,0],[6.91667,1,1,1],[6.95833,0,0,0],[7.375,1,1,1],[7.41667,0,0,0],[8.20833,1,1,1],[8.25,0,0,0],[8.41667,1,1,1],[8.45833,0,0,0],[8.66667,1,1,1],[8.70833,0,0,0],[9.04167,1,1,1],[9.08333,0,0,0],[9.83333,1,1,1],[9.875,0,0,0],[10.125,1,1,1],[10.16667,0,0,0],[10.95833,1,1,1],[11,0,0,0],[11.625,1,1,1],[11.66667,0,0,0],[11.91667,1,1,1],[11.95833,0,0,0],[12.625,1,1,1],[12.66667,0,0,0],[12.79167,1,1,1],[12.83333,0,0,0],[13.04167,1,1,1],[13.08333,0,0,0],[14,1,1,1],[14.04167,1,1,1],[14.08333,0,0,0],[14.625,1,1,1],[14.66667,0,0,0]]},"SNS2":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.45833,1,1,1],[0.5,0,0,0],[1.125,1,1,1],[1.16667,0,0,0],[1.5,1,1,1],[1.54167,0,0,0],[2.25,1,1,1],[2.29167,0,0,0],[3.125,1,1,1],[3.16667,0,0,0],[3.83333,1,1,1],[3.875,0,0,0],[4.83333,1,1,1],[4.875,0,0,0],[5.5,1,1,1],[5.54167,0,0,0],[6.16667,1,1,1],[6.20833,0,0,0],[6.91667,1,1,1],[6.95833,0,0,0],[7.20833,1,1,1],[7.25,0,0,0],[7.83333,1,1,1],[7.875,0,0,0],[8.70833,1,1,1],[8.75,0,0,0],[9.29167,1,1,1],[9.33333,0,0,0],[10,1,1,1],[10.04167,0,0,0],[10.66667,1,1,1],[10.70833,0,0,0],[11.41667,1,1,1],[11.45833,0,0,0],[12.375,1,1,1],[12.41667,0,0,0],[12.83333,1,1,1],[12.875,0,0,0],[13.79167,1,1,1],[13.83333,0,0,0],[14.20833,1,1,1],[14.25,0,0,0],[14.45833,1,1,1],[14.5,0,0,0]]},"SNS3":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.5,1,1,1],[0.54167,0,0,0],[1.375,1,1,1],[1.41667,0,0,0],[1.83333,1,1,1],[1.875,0,0,0],[2.70833,1,1,1],[2.75,0,0,0],[3.375,1,1,1],[3.41667,0,0,0],[4.04167,1,1,1],[4.08333,0,0,0],[4.625,1,1,1],[4.66667,0,0,0],[5.25,1,1,1],[5.29167,0,0,0],[5.875,1,1,1],[5.91667,0,0,0],[6.41667,1,1,1],[6.45833,0,0,0],[7.20833,1,1,1],[7.25,0,0,0],[7.91667,1,1,1],[7.95833,0,0,0],[8.95833,1,1,1],[9,0,0,0],[9.41667,1,1,1],[9.45833,0,0,0],[9.95833,1,1,1],[10,0,0,0],[10.70833,1,1,1],[10.75,0,0,0],[11.33333,1,1,1],[11.375,0,0,0],[12.125,1,1,1],[12.16667,0,0,0],[12.875,1,1,1],[12.91667,0,0,0],[13.375,1,1,1],[13.41667,0,0,0],[13.95833,1,1,1],[14,0,0,0],[14.79167,1,1,1],[14.83333,0,0,0]]},"SNS4":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.5,1,1,1],[0.54167,0,0,0],[1.16667,1,1,1],[1.20833,0,0,0],[1.66667,1,1,1],[1.70833,0,0,0],[2.5,1,1,1],[2.54167,0,0,0],[3.125,1,1,1],[3.16667,0,0,0],[3.375,1,1,1],[3.41667,0,0,0],[4,1,1,1],[4.04167,1,1,1],[4.08333,0,0,0],[4.29167,1,1,1],[4.33333,0,0,0],[4.58333,1,1,1],[4.625,0,0,0],[5.54167,1,1,1],[5.58333,0,0,0],[6.54167,1,1,1],[6.58333,0,0,0],[7.25,1,1,1],[7.29167,0,0,0],[7.66667,1,1,1],[7.70833,0,0,0],[8.125,1,1,1],[8.16667,0,0,0],[8.875,1,1,1],[8.91667,0,0,0],[9.70833,1,1,1],[9.75,0,0,0],[10.04167,1,1,1],[10.08333,0,0,0],[10.66667,1,1,1],[10.70833,0,0,0],[12.125,1,1,1],[12.16667,0,0,0],[13.95833,1,1,1],[14,0,0,0]]},"SEW1":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.375,1,1,1],[0.41667,0,0,0],[0.70833,1,1,1],[0.75,0,0,0],[0.91667,1,1,1],[0.95833,0,0,0],[1.54167,1,1,1],[1.58333,0,0,0],[2.20833,1,1,1],[2.25,0,0,0],[2.58333,1,1,1],[2.625,0,0,0],[3.29167,1,1,1],[3.33333,0,0,0],[4.58333,1,1,1],[4.625,0,0,0],[4.91667,1,1,1],[4.95833,0,0,0],[5.375,1,1,1],[5.41667,0,0,0],[6,1,1,1],[6.04167,0,0,0],[7.08333,1,1,1],[7.125,0,0,0],[7.375,1,1,1],[7.41667,0,0,0],[7.58333,1,1,1],[7.625,0,0,0],[8.16667,1,1,1],[8.20833,0,0,0],[8.70833,1,1,1],[8.75,0,0,0],[10.33333,1,1,1],[10.375,0,0,0],[11.08333,1,1,1],[11.125,0,0,0],[11.70833,1,1,1],[11.75,0,0,0],[12.54167,1,1,1],[12.58333,0,0,0],[13.41667,1,1,1],[13.45833,0,0,0],[13.66667,1,1,1],[13.70833,0,0,0],[14.20833,1,1,1],[14.25,0,0,0],[14.66667,1,1,1],[14.70833,0,0,0]]},"SEW2":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.33333,1,1,1],[0.375,0,0,0],[1.54167,1,1,1],[1.58333,0,0,0],[2.375,1,1,1],[2.41667,0,0,0],[2.875,1,1,1],[2.91667,0,0,0],[3.5,1,1,1],[3.54167,0,0,0],[4.20833,1,1,1],[4.25,0,0,0],[4.83333,1,1,1],[4.875,0,0,0],[5.5,1,1,1],[5.54167,0,0,0],[5.91667,1,1,1],[5.95833,0,0,0],[6.41667,1,1,1],[6.45833,0,0,0],[7.25,1,1,1],[7.29167,0,0,0],[7.95833,1,1,1],[8,0,0,0],[9.08333,1,1,1],[9.125,0,0,0],[9.83333,1,1,1],[9.875,0,0,0],[11.41667,1,1,1],[11.45833,0,0,0],[11.91667,1,1,1],[11.95833,0,0,0],[12.41667,1,1,1],[12.45833,0,0,0],[12.70833,1,1,1],[12.75,0,0,0],[13.41667,1,1,1],[13.45833,0,0,0],[13.625,1,1,1],[13.66667,0,0,0],[14,1,1,1],[14.04167,0,0,0],[14.20833,1,1,1],[14.25,0,0,0],[14.70833,1,1,1],[14.75,0,0,0]]},"SEW3":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.29167,1,1,1],[0.33333,0,0,0],[1.125,1,1,1],[1.16667,0,0,0],[1.66667,1,1,1],[1.70833,0,0,0],[1.95833,1,1,1],[2,0,0,0],[2.5,1,1,1],[2.54167,0,0,0],[2.95833,1,1,1],[3,0,0,0],[3.625,1,1,1],[3.66667,0,0,0],[4.33333,1,1,1],[4.375,0,0,0],[4.83333,1,1,1],[4.875,0,0,0],[6.16667,1,1,1],[6.20833,0,0,0],[6.45833,1,1,1],[6.5,0,0,0],[6.66667,1,1,1],[6.70833,0,0,0],[7.20833,1,1,1],[7.25,0,0,0],[8,1,1,1],[8.04167,0,0,0],[8.66667,1,1,1],[8.70833,0,0,0],[9.125,1,1,1],[9.16667,0,0,0],[9.58333,1,1,1],[9.625,0,0,0],[10.08333,1,1,1],[10.125,0,0,0],[10.625,1,1,1],[10.66667,0,0,0],[10.95833,1,1,1],[11,0,0,0],[11.25,1,1,1],[11.29167,0,0,0],[12.16667,1,1,1],[12.20833,0,0,0],[13.125,1,1,1],[13.16667,0,0,0],[13.29167,1,1,1],[13.33333,0,0,0],[13.83333,1,1,1],[13.875,0,0,0],[14.16667,1,1,1],[14.20833,0,0,0],[14.66667,1,1,1],[14.70833,0,0,0],[14.83333,1,1,1],[14.875,0,0,0]]},"SEW4":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]],"scale":[[0,0,0,0],[0.54167,1,1,1],[0.58333,0,0,0],[1.29167,1,1,1],[1.33333,0,0,0],[2.04167,1,1,1],[2.08333,0,0,0],[2.33333,1,1,1],[2.375,0,0,0],[3.20833,1,1,1],[3.25,0,0,0],[3.83333,1,1,1],[3.875,0,0,0],[4.45833,1,1,1],[4.5,0,0,0],[5.625,1,1,1],[5.66667,0,0,0],[7,1,1,1],[7.04167,0,0,0],[7.41667,1,1,1],[7.45833,0,0,0],[8.20833,1,1,1],[8.25,0,0,0],[9.16667,1,1,1],[9.20833,0,0,0],[9.5,1,1,1],[9.54167,0,0,0],[9.75,1,1,1],[9.79167,0,0,0],[10.66667,1,1,1],[10.70833,0,0,0],[11.29167,1,1,1],[11.33333,0,0,0],[11.58333,1,1,1],[11.625,0,0,0],[12.33333,1,1,1],[12.375,0,0,0],[12.54167,1,1,1],[12.58333,0,0,0],[13.04167,1,1,1],[13.08333,0,0,0],[13.375,1,1,1],[13.41667,0,0,0],[13.95833,1,1,1],[14,0,0,0],[14.33333,1,1,1],[14.375,0,0,0],[14.75,1,1,1],[14.79167,0,0,0]]}}},"hurt_disabled":{"loop":"once","length":1.625,"bones":{"FHead":{"rotation":[[0.54167,0,0,0],[0.75,-7.56397,-7.43547,0.98448],[0.875,-7.56397,7.43547,-0.98448],[0.95833,-7.56397,-7.43547,0.98448],[1.08333,-7.56397,7.43547,-0.98448],[1.33333,10,0,0],[1.625,0,0,0]]},"eyes2":{"position":[[0,0,0,1],[1.29167,0,0,1],[1.41667,0,0,0]]},"eyelids":{"position":[[0.54167,0,0,0],[0.66667,0,-2,0],[1.33333,0,-2,0],[1.41667,0,0,0]]},"TearLeft":{"position":[[0,-1,-1,-1.25],[1.29167,-1,-1,-1.25],[1.41667,0,0,0]]},"TearRight":{"position":[[0,1,-1,-1.25],[1.29167,1,-1,-1.25],[1.41667,0,0,0]]}}},"Pose1":{"loop":"loop","length":0,"bones":{"FHead":{"rotation":[[0,0,0,7.5]]},"LeftArm":{"rotation":[[0,114.94221,-51.78915,-57.75517]]},"LowerLeftArm":{"rotation":[[0,27.5,0,0]]},"RightArm":{"rotation":[[0,-37.83476,67.9847,-34.79362]]},"LowerRightArm":{"rotation":[[0,14.03271,-26.79524,-6.42848]]},"Drone":{"position":[[0,-12,3,-13]]}}},"Pose2":{"loop":"loop","length":0,"bones":{"RootBody":{"rotation":[[0,5,0,0]]},"FHead":{"rotation":[[0,-12.72405,13.02614,-15.59348]]},"eyes2":{"position":[[0,0.25,0,0]]},"rightEye":{"position":[[0,0.25,0,0]]},"Braid":{"rotation":[[0,-7.5,0,22.5]]},"BraidBone":{"rotation":[[0,42.33144,-2.54058,4.38917]]},"LeftArm":{"rotation":[[0,60,0,0]]},"LowerLeftArm":{"rotation":[[0,53.0343,-32.51703,-52.48143]]},"RightArm":{"rotation":[[0,-3.4583,52.36595,-7.27355]]},"LowerRightArm":{"rotation":[[0,23.47603,16.1299,6.88003]]},"RightItemPivot":{"rotation":[[0,5.06344,-44.5119,100.54684]]},"RightLeg":{"rotation":[[0,17.92638,-14.63639,-3.31914]]},"LowerRightLeg":{"rotation":[[0,-47.5,0,0]]},"LeftLeg":{"rotation":[[0,0,15,0]]},"LowerLeftLeg":{"rotation":[[0,-7.5,0,0]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/goldenglow.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/goldenglow.geo.json new file mode 100644 index 0000000..b5a8fd4 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/goldenglow.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.goldenglow","texture_width":384,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"CharModel","pivot":[0,0,0]},{"name":"RootBody","pivot":[0,12,0],"parent":"CharModel"},{"name":"Torso","pivot":[0,24,0],"parent":"RootBody"},{"name":"FHead","pivot":[0,24.5,0],"parent":"Torso","cubes":[{"origin":[-4,24.5,-4],"size":[8,8,8],"uv":{"north":{"uv":[0,0],"uv_size":[8,8]},"east":{"uv":[0,8],"uv_size":[8,8]},"south":{"uv":[8,0],"uv_size":[8,8]},"west":{"uv":[8,8],"uv_size":[8,8]},"up":{"uv":[8,24],"uv_size":[-8,-8]},"down":{"uv":[24,0],"uv_size":[-8,8]}}},{"origin":[-4,24.5,-4],"size":[8,8,8],"inflate":0.5,"uv":{"north":{"uv":[45,33],"uv_size":[8,8]},"east":{"uv":[37,45],"uv_size":[8,8]},"south":{"uv":[45,41],"uv_size":[8,8]},"west":{"uv":[0,46],"uv_size":[8,8]},"up":{"uv":[54,14],"uv_size":[-8,-8]},"down":{"uv":[16,46],"uv_size":[-8,8]}}},{"origin":[-4,24.5,-3.75],"size":[8,4,0],"uv":{"north":{"uv":[14,16],"uv_size":[8,4]},"east":{"uv":[0,0],"uv_size":[0,4]},"south":{"uv":[14,20],"uv_size":[8,4]},"west":{"uv":[0,0],"uv_size":[0,4]},"up":{"uv":[8,0],"uv_size":[-8,0]},"down":{"uv":[8,0],"uv_size":[-8,0]}}}]},{"name":"eyes","pivot":[0,24.5,0],"parent":"FHead"},{"name":"eyes2","pivot":[0,24.5,0],"parent":"eyes"},{"name":"leftEye","pivot":[0,24.5,0],"parent":"eyes2","cubes":[{"origin":[-2,25.5,-3.8],"size":[1,2,0],"uv":{"north":{"uv":[31,36],"uv_size":[1,2]},"east":{"uv":[0,0],"uv_size":[0,2]},"south":{"uv":[3,38],"uv_size":[1,2]},"west":{"uv":[0,0],"uv_size":[0,2]},"up":{"uv":[1,0],"uv_size":[-1,0]},"down":{"uv":[1,0],"uv_size":[-1,0]}}}]},{"name":"rightEye","pivot":[0,24.5,0],"parent":"eyes2","cubes":[{"origin":[1,25.5,-3.8],"size":[1,2,0],"uv":{"north":{"uv":[38,12],"uv_size":[1,2]},"east":{"uv":[0,0],"uv_size":[0,2]},"south":{"uv":[38,14],"uv_size":[1,2]},"west":{"uv":[0,0],"uv_size":[0,2]},"up":{"uv":[1,0],"uv_size":[-1,0]},"down":{"uv":[1,0],"uv_size":[-1,0]}}}]},{"name":"eyelids","pivot":[0,24.5,0],"parent":"eyes","cubes":[{"origin":[-3,27.5,-3.99],"size":[6,4,0],"uv":{"north":{"uv":[16,24],"uv_size":[6,4]},"east":{"uv":[0,0],"uv_size":[0,4]},"south":{"uv":[22,24],"uv_size":[6,4]},"west":{"uv":[0,0],"uv_size":[0,4]},"up":{"uv":[6,0],"uv_size":[-6,0]},"down":{"uv":[6,0],"uv_size":[-6,0]}}}]},{"name":"Bangs","pivot":[0,31.5,-4],"parent":"FHead"},{"name":"BangsLeft","pivot":[-3.25,31.5,-4.25],"parent":"Bangs","rotation":[-4.99523,0.00062,2.50949],"cubes":[{"origin":[-4.25,22.5,-4.25],"size":[3,9,3],"uv":{"north":{"uv":[63,53],"uv_size":[3,9]},"east":{"uv":[63,62],"uv_size":[3,9]},"south":{"uv":[0,64],"uv_size":[3,9]},"west":{"uv":[3,64],"uv_size":[3,9]},"up":{"uv":[67,7],"uv_size":[-3,-3]},"down":{"uv":[9,64],"uv_size":[-3,3]}}},{"origin":[-4.25,22.5,-4.25],"size":[3,9,3],"inflate":0.25,"uv":{"north":{"uv":[64,28],"uv_size":[3,9]},"east":{"uv":[55,64],"uv_size":[3,9]},"south":{"uv":[58,64],"uv_size":[3,9]},"west":{"uv":[44,65],"uv_size":[3,9]},"up":{"uv":[67,49],"uv_size":[-3,-3]},"down":{"uv":[68,0],"uv_size":[-3,3]}}}]},{"name":"BangsRight","pivot":[3.25,31.5,-4.25],"parent":"Bangs","rotation":[-4.99523,-0.00062,-2.50949],"cubes":[{"origin":[1.25,21.5,-4.25],"size":[3,10,3],"uv":{"north":{"uv":[24,63],"uv_size":[3,10]},"east":{"uv":[27,63],"uv_size":[3,10]},"south":{"uv":[32,63],"uv_size":[3,10]},"west":{"uv":[35,63],"uv_size":[3,10]},"up":{"uv":[66,25],"uv_size":[-3,-3]},"down":{"uv":[21,64],"uv_size":[-3,3]}}},{"origin":[1.25,21.5,-4.25],"size":[3,10,3],"inflate":0.25,"uv":{"north":{"uv":[9,64],"uv_size":[3,10]},"east":{"uv":[64,10],"uv_size":[3,10]},"south":{"uv":[12,64],"uv_size":[3,10]},"west":{"uv":[15,64],"uv_size":[3,10]},"up":{"uv":[24,67],"uv_size":[-3,-3]},"down":{"uv":[67,25],"uv_size":[-3,3]}}}]},{"name":"LeftEar","pivot":[-3.25,32.5,-1.25],"parent":"FHead","rotation":[11.66067,3.45533,-27.29887],"cubes":[{"origin":[-5.25,31.5,-3.25],"size":[3,1,2],"uv":{"north":{"uv":[6,45],"uv_size":[3,1]},"east":{"uv":[34,40],"uv_size":[2,1]},"south":{"uv":[25,45],"uv_size":[3,1]},"west":{"uv":[37,41],"uv_size":[2,1]},"up":{"uv":[66,42],"uv_size":[-3,-2]},"down":{"uv":[44,63],"uv_size":[-3,2]}}},{"origin":[-5.25,32.5,-4.25],"size":[3,1,3],"uv":{"north":{"uv":[50,32],"uv_size":[3,1]},"east":{"uv":[32,52],"uv_size":[3,1]},"south":{"uv":[53,52],"uv_size":[3,1]},"west":{"uv":[55,3],"uv_size":[3,1]},"up":{"uv":[66,40],"uv_size":[-3,-3]},"down":{"uv":[41,63],"uv_size":[-3,3]}}},{"origin":[-4.25,32.5,-5.25],"size":[2,1,1],"uv":{"north":{"uv":[44,10],"uv_size":[2,1]},"east":{"uv":[38,16],"uv_size":[1,1]},"south":{"uv":[9,45],"uv_size":[2,1]},"west":{"uv":[7,40],"uv_size":[1,1]},"up":{"uv":[37,53],"uv_size":[-2,-1]},"down":{"uv":[62,25],"uv_size":[-2,1]}}},{"origin":[-5.25,31.5,-5.25],"size":[3,2,4],"inflate":0.25,"uv":{"north":{"uv":[64,49],"uv_size":[3,2]},"east":{"uv":[63,51],"uv_size":[4,2]},"south":{"uv":[65,7],"uv_size":[3,2]},"west":{"uv":[64,20],"uv_size":[4,2]},"up":{"uv":[66,46],"uv_size":[-3,-4]},"down":{"uv":[53,63],"uv_size":[-3,4]}}}]},{"name":"RightEar","pivot":[3.25,32.5,-1.25],"parent":"FHead","rotation":[11.66067,-3.45533,27.29887],"cubes":[{"origin":[2.25,31.5,-3.25],"size":[3,1,2],"uv":{"north":{"uv":[9,45],"uv_size":[-3,1]},"east":{"uv":[39,41],"uv_size":[-2,1]},"south":{"uv":[28,45],"uv_size":[-3,1]},"west":{"uv":[36,40],"uv_size":[-2,1]},"up":{"uv":[63,42],"uv_size":[3,-2]},"down":{"uv":[41,63],"uv_size":[3,2]}}},{"origin":[2.25,32.5,-4.25],"size":[3,1,3],"uv":{"north":{"uv":[53,32],"uv_size":[-3,1]},"east":{"uv":[58,3],"uv_size":[-3,1]},"south":{"uv":[56,52],"uv_size":[-3,1]},"west":{"uv":[35,52],"uv_size":[-3,1]},"up":{"uv":[63,40],"uv_size":[3,-3]},"down":{"uv":[38,63],"uv_size":[3,3]}}},{"origin":[2.25,32.5,-5.25],"size":[2,1,1],"uv":{"north":{"uv":[46,10],"uv_size":[-2,1]},"east":{"uv":[8,40],"uv_size":[-1,1]},"south":{"uv":[11,45],"uv_size":[-2,1]},"west":{"uv":[39,16],"uv_size":[-1,1]},"up":{"uv":[35,53],"uv_size":[2,-1]},"down":{"uv":[60,25],"uv_size":[2,1]}}},{"origin":[2.25,31.5,-5.25],"size":[3,2,4],"inflate":0.25,"uv":{"north":{"uv":[67,49],"uv_size":[-3,2]},"east":{"uv":[68,20],"uv_size":[-4,2]},"south":{"uv":[68,7],"uv_size":[-3,2]},"west":{"uv":[67,51],"uv_size":[-4,2]},"up":{"uv":[63,46],"uv_size":[3,-4]},"down":{"uv":[50,63],"uv_size":[3,4]}}}]},{"name":"Braid","pivot":[4,26.5,2],"parent":"FHead","rotation":[26.87202,-2.22638,-17.7276],"cubes":[{"origin":[2,25,0],"size":[3,3,3],"uv":{"north":{"uv":[70,9],"uv_size":[3,3]},"east":{"uv":[70,12],"uv_size":[3,3]},"south":{"uv":[70,25],"uv_size":[3,3]},"west":{"uv":[73,12],"uv_size":[3,3]},"up":{"uv":[76,52],"uv_size":[-3,-3]},"down":{"uv":[76,65],"uv_size":[-3,3]}}},{"origin":[2.5,25,-3],"size":[2,2,3],"uv":{"north":{"uv":[68,7],"uv_size":[2,2]},"east":{"uv":[73,35],"uv_size":[3,2]},"south":{"uv":[15,74],"uv_size":[2,2]},"west":{"uv":[73,68],"uv_size":[3,2]},"up":{"uv":[13,77],"uv_size":[-2,-3]},"down":{"uv":[15,74],"uv_size":[-2,3]}}},{"origin":[2,25,0],"size":[3,3,3],"inflate":0.25,"uv":{"north":{"uv":[55,19],"uv_size":[3,3]},"east":{"uv":[67,9],"uv_size":[3,3]},"south":{"uv":[67,12],"uv_size":[3,3]},"west":{"uv":[18,67],"uv_size":[3,3]},"up":{"uv":[24,70],"uv_size":[-3,-3]},"down":{"uv":[70,25],"uv_size":[-3,3]}}},{"origin":[2.5,25,-3],"size":[2,2,3],"inflate":0.25,"uv":{"north":{"uv":[53,34],"uv_size":[2,2]},"east":{"uv":[39,24],"uv_size":[3,2]},"south":{"uv":[61,54],"uv_size":[2,2]},"west":{"uv":[47,20],"uv_size":[3,2]},"up":{"uv":[54,70],"uv_size":[-2,-3]},"down":{"uv":[72,6],"uv_size":[-2,3]}}}]},{"name":"BraidBone","pivot":[3.5,27,-3],"parent":"Braid"},{"name":"Braid2","pivot":[3.5,27,-3],"parent":"BraidBone","rotation":[57.5762,-9.11307,8.02302],"cubes":[{"origin":[2.5,25,-7],"size":[2,2,4],"uv":{"north":{"uv":[44,74],"uv_size":[2,2]},"east":{"uv":[67,15],"uv_size":[4,2]},"south":{"uv":[75,15],"uv_size":[2,2]},"west":{"uv":[71,15],"uv_size":[4,2]},"up":{"uv":[61,77],"uv_size":[-2,-4]},"down":{"uv":[11,74],"uv_size":[-2,4]}}},{"origin":[3,25.5,-9],"size":[1,1,2],"pivot":[3.5,26,-8],"rotation":[0,0,-42.5],"uv":{"north":{"uv":[24,31],"uv_size":[1,1]},"east":{"uv":[20,31],"uv_size":[2,1]},"south":{"uv":[25,31],"uv_size":[1,1]},"west":{"uv":[22,31],"uv_size":[2,1]},"up":{"uv":[43,25],"uv_size":[-1,-2]},"down":{"uv":[46,6],"uv_size":[-1,2]}}},{"origin":[2.5,25,-7],"size":[2,2,4],"inflate":0.25,"uv":{"north":{"uv":[50,20],"uv_size":[2,2]},"east":{"uv":[34,15],"uv_size":[4,2]},"south":{"uv":[52,20],"uv_size":[2,2]},"west":{"uv":[4,38],"uv_size":[4,2]},"up":{"uv":[60,22],"uv_size":[-2,-4]},"down":{"uv":[52,67],"uv_size":[-2,4]}}},{"origin":[3,25.5,-9],"size":[1,1,2],"pivot":[3.5,26,-8],"rotation":[0,0,-42.5],"inflate":0.25,"uv":{"north":{"uv":[18,31],"uv_size":[1,1]},"east":{"uv":[28,23],"uv_size":[2,1]},"south":{"uv":[19,31],"uv_size":[1,1]},"west":{"uv":[16,31],"uv_size":[2,1]},"up":{"uv":[8,37],"uv_size":[-1,-2]},"down":{"uv":[38,12],"uv_size":[-1,2]}}}]},{"name":"Bow","pivot":[3.75,27,-6.25],"parent":"Braid2","rotation":[-6.77001,5.95308,2.47549],"cubes":[{"origin":[2.04316,27,-7.27994],"size":[3,0,1],"pivot":[3.54316,27,-6.27994],"rotation":[0,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[3,0]},"east":{"uv":[0,0],"uv_size":[1,0]},"south":{"uv":[0,0],"uv_size":[3,0]},"west":{"uv":[0,0],"uv_size":[1,0]},"up":{"uv":[50,4],"uv_size":[-3,-1]},"down":{"uv":[53,3],"uv_size":[-3,1]}}},{"origin":[3.04316,26.25,-7.27994],"size":[1,1,1],"pivot":[3.54316,26.75,-6.27994],"rotation":[0,0,0],"uv":{"north":{"uv":[26,31],"uv_size":[1,1]},"east":{"uv":[27,31],"uv_size":[1,1]},"south":{"uv":[7,37],"uv_size":[1,1]},"west":{"uv":[37,14],"uv_size":[1,1]},"up":{"uv":[42,12],"uv_size":[-1,-1]},"down":{"uv":[43,25],"uv_size":[-1,1]}}},{"origin":[3.54316,26.99,-8.27994],"size":[2,0,2],"pivot":[3.54316,27,-6.27994],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[2,0]},"east":{"uv":[0,0],"uv_size":[2,0]},"south":{"uv":[0,0],"uv_size":[2,0]},"west":{"uv":[0,0],"uv_size":[2,0]},"up":{"uv":[77,31],"uv_size":[-2,-2]},"down":{"uv":[77,31],"uv_size":[-2,2]}}}]},{"name":"Tears","pivot":[0,24.75,-0.25],"parent":"FHead"},{"name":"TearLeft","pivot":[1.5,25.75,1.5],"parent":"Tears","cubes":[{"origin":[-2.75,24.75,-3.5],"size":[2,2,2],"uv":{"north":{"uv":[91,37],"uv_size":[2,2]},"east":{"uv":[71,91],"uv_size":[2,2]},"south":{"uv":[84,91],"uv_size":[2,2]},"west":{"uv":[91,85],"uv_size":[2,2]},"up":{"uv":[88,93],"uv_size":[-2,-2]},"down":{"uv":[93,87],"uv_size":[-2,2]}}}]},{"name":"TearRight","pivot":[-1.5,25.75,1.5],"parent":"Tears","cubes":[{"origin":[0.75,24.75,-3.5],"size":[2,2,2],"uv":{"north":{"uv":[93,37],"uv_size":[-2,2]},"east":{"uv":[93,85],"uv_size":[-2,2]},"south":{"uv":[86,91],"uv_size":[-2,2]},"west":{"uv":[73,91],"uv_size":[-2,2]},"up":{"uv":[86,93],"uv_size":[2,-2]},"down":{"uv":[91,87],"uv_size":[2,2]}}}]},{"name":"Body","pivot":[0,24,0],"parent":"Torso","cubes":[{"origin":[-1,23,-1],"size":[2,2,2],"uv":{"north":{"uv":[34,38],"uv_size":[2,2]},"east":{"uv":[43,33],"uv_size":[2,2]},"south":{"uv":[43,35],"uv_size":[2,2]},"west":{"uv":[43,37],"uv_size":[2,2]},"up":{"uv":[45,41],"uv_size":[-2,-2]},"down":{"uv":[45,41],"uv_size":[-2,2]}}}]},{"name":"Hips","pivot":[0,16,0],"parent":"Body","cubes":[{"origin":[-3,12,-2],"size":[6,4,4],"uv":{"north":{"uv":[67,29],"uv_size":[6,4]},"east":{"uv":[68,17],"uv_size":[4,4]},"south":{"uv":[67,33],"uv_size":[6,4]},"west":{"uv":[69,66],"uv_size":[4,4]},"up":{"uv":[73,49],"uv_size":[-6,-4]},"down":{"uv":[73,49],"uv_size":[-6,4]}}}]},{"name":"Skirt","pivot":[0,16,0],"parent":"Hips"},{"name":"SkirtMiddleFront","pivot":[0.5,16,-2],"parent":"Skirt","rotation":[-15,0,0],"cubes":[{"origin":[-3,10,-2],"size":[6,6,1],"pivot":[0.5,16,-2],"rotation":[-2.5,0,0],"uv":{"north":{"uv":[72,17],"uv_size":[6,6]},"east":{"uv":[55,73],"uv_size":[1,6]},"south":{"uv":[72,37],"uv_size":[6,6]},"west":{"uv":[56,73],"uv_size":[1,6]},"up":{"uv":[10,28],"uv_size":[-6,-1]},"down":{"uv":[16,27],"uv_size":[-6,1]}}},{"origin":[-3,10,-2],"size":[6,6,1],"pivot":[0.5,16,-2],"rotation":[-2.5,0,0],"inflate":0.25,"uv":{"north":{"uv":[22,8],"uv_size":[6,6]},"east":{"uv":[42,17],"uv_size":[1,6]},"south":{"uv":[22,14],"uv_size":[6,6]},"west":{"uv":[36,46],"uv_size":[1,6]},"up":{"uv":[28,21],"uv_size":[-6,-1]},"down":{"uv":[28,21],"uv_size":[-6,1]}}}]},{"name":"SkirtMiddleBack","pivot":[0.5,16,2],"parent":"Skirt","rotation":[15,0,0],"cubes":[{"origin":[-3,10,1],"size":[6,6,1],"pivot":[0.5,16,2],"rotation":[2.5,0,0],"uv":{"north":{"uv":[72,53],"uv_size":[6,6]},"east":{"uv":[57,73],"uv_size":[1,6]},"south":{"uv":[72,59],"uv_size":[6,6]},"west":{"uv":[58,73],"uv_size":[1,6]},"up":{"uv":[10,29],"uv_size":[-6,-1]},"down":{"uv":[16,28],"uv_size":[-6,1]}}},{"origin":[-3,10,1],"size":[6,6,1],"pivot":[0.5,16,2],"rotation":[2.5,0,0],"inflate":0.25,"uv":{"north":{"uv":[47,14],"uv_size":[6,6]},"east":{"uv":[53,59],"uv_size":[1,6]},"south":{"uv":[70,0],"uv_size":[6,6]},"west":{"uv":[54,63],"uv_size":[1,6]},"up":{"uv":[28,23],"uv_size":[-6,-1]},"down":{"uv":[28,23],"uv_size":[-6,1]}}}]},{"name":"SkirtLeft","pivot":[0.5,16,-2],"parent":"Skirt","cubes":[{"origin":[-2.75,10.25,-2],"size":[2,6,3],"pivot":[-2.75,16.25,-2],"rotation":[-9,0,20],"uv":{"north":{"uv":[53,71],"uv_size":[2,6]},"east":{"uv":[50,71],"uv_size":[3,6]},"south":{"uv":[26,73],"uv_size":[2,6]},"west":{"uv":[63,71],"uv_size":[3,6]},"up":{"uv":[55,3],"uv_size":[-2,-3]},"down":{"uv":[58,23],"uv_size":[-2,3]}}},{"origin":[-2.75,10.25,-1],"size":[2,6,3],"pivot":[-2.75,16.25,2],"rotation":[9,0,20],"uv":{"north":{"uv":[28,73],"uv_size":[2,6]},"east":{"uv":[72,70],"uv_size":[3,6]},"south":{"uv":[73,29],"uv_size":[2,6]},"west":{"uv":[0,73],"uv_size":[3,6]},"up":{"uv":[58,35],"uv_size":[-2,-3]},"down":{"uv":[60,23],"uv_size":[-2,3]}}},{"origin":[-2.75,10.25,-2],"size":[2,6,3],"pivot":[-2.75,16.25,-2],"rotation":[-9,0,20],"inflate":0.25,"uv":{"north":{"uv":[28,8],"uv_size":[2,6]},"east":{"uv":[39,18],"uv_size":[3,6]},"south":{"uv":[28,14],"uv_size":[2,6]},"west":{"uv":[47,69],"uv_size":[3,6]},"up":{"uv":[30,23],"uv_size":[-2,-3]},"down":{"uv":[49,0],"uv_size":[-2,3]}}},{"origin":[-2.75,10.25,-1],"size":[2,6,3],"pivot":[-2.75,16.25,2],"rotation":[9,0,20],"inflate":0.25,"uv":{"north":{"uv":[53,14],"uv_size":[2,6]},"east":{"uv":[38,70],"uv_size":[3,6]},"south":{"uv":[30,64],"uv_size":[2,6]},"west":{"uv":[41,70],"uv_size":[3,6]},"up":{"uv":[51,3],"uv_size":[-2,-3]},"down":{"uv":[47,49],"uv_size":[-2,3]}}}]},{"name":"SkirtRight","pivot":[-0.5,16,-2],"parent":"Skirt","cubes":[{"origin":[0.75,10.25,-2],"size":[2,6,3],"pivot":[2.75,16.25,-2],"rotation":[-9,0,-20],"uv":{"north":{"uv":[32,73],"uv_size":[2,6]},"east":{"uv":[3,73],"uv_size":[3,6]},"south":{"uv":[34,73],"uv_size":[2,6]},"west":{"uv":[73,6],"uv_size":[3,6]},"up":{"uv":[52,62],"uv_size":[-2,-3]},"down":{"uv":[61,52],"uv_size":[-2,3]}}},{"origin":[0.75,10.25,-1],"size":[2,6,3],"pivot":[2.75,16.25,2],"rotation":[9,0,-20],"uv":{"north":{"uv":[36,73],"uv_size":[2,6]},"east":{"uv":[23,73],"uv_size":[3,6]},"south":{"uv":[73,43],"uv_size":[2,6]},"west":{"uv":[73,23],"uv_size":[3,6]},"up":{"uv":[63,54],"uv_size":[-2,-3]},"down":{"uv":[70,0],"uv_size":[-2,3]}}},{"origin":[0.75,10.25,-1],"size":[2,6,3],"pivot":[2.75,16.25,2],"rotation":[9,0,-20],"inflate":0.25,"uv":{"north":{"uv":[61,64],"uv_size":[2,6]},"east":{"uv":[66,70],"uv_size":[3,6]},"south":{"uv":[30,70],"uv_size":[2,6]},"west":{"uv":[69,70],"uv_size":[3,6]},"up":{"uv":[49,52],"uv_size":[-2,-3]},"down":{"uv":[51,49],"uv_size":[-2,3]}}},{"origin":[0.75,10.25,-2],"size":[2,6,3],"pivot":[2.75,16.25,-2],"rotation":[-9,0,-20],"inflate":0.25,"uv":{"north":{"uv":[61,70],"uv_size":[2,6]},"east":{"uv":[6,71],"uv_size":[3,6]},"south":{"uv":[21,71],"uv_size":[2,6]},"west":{"uv":[18,71],"uv_size":[3,6]},"up":{"uv":[53,3],"uv_size":[-2,-3]},"down":{"uv":[53,49],"uv_size":[-2,3]}}}]},{"name":"Chest","pivot":[0,24,0],"parent":"Body","cubes":[{"origin":[-3,16,-2],"size":[6,8,4],"uv":{"north":{"uv":[8,16],"uv_size":[6,8]},"east":{"uv":[0,24],"uv_size":[4,8]},"south":{"uv":[16,8],"uv_size":[6,8]},"west":{"uv":[24,0],"uv_size":[4,8]},"up":{"uv":[34,4],"uv_size":[-6,-4]},"down":{"uv":[34,4],"uv_size":[-6,4]}}},{"origin":[-3,16,-2],"size":[6,8,4],"inflate":0.25,"uv":{"north":{"uv":[16,46],"uv_size":[6,8]},"east":{"uv":[46,25],"uv_size":[4,8]},"south":{"uv":[22,46],"uv_size":[6,8]},"west":{"uv":[28,46],"uv_size":[4,8]},"up":{"uv":[59,40],"uv_size":[-6,-4]},"down":{"uv":[44,53],"uv_size":[-6,4]}}}]},{"name":"Booba","pivot":[0,23,-2],"parent":"Chest","rotation":[-17.5,0,0],"cubes":[{"origin":[-3,19,-2],"size":[6,4,3],"inflate":-0.001,"uv":{"north":{"uv":[66,37],"uv_size":[6,4]},"east":{"uv":[47,65],"uv_size":[3,4]},"south":{"uv":[38,66],"uv_size":[6,4]},"west":{"uv":[66,66],"uv_size":[3,4]},"up":{"uv":[72,25],"uv_size":[-6,-3]},"down":{"uv":[72,57],"uv_size":[-6,3]}}},{"origin":[-3,19,-2],"size":[6,4,3],"inflate":0.249,"uv":{"north":{"uv":[66,41],"uv_size":[6,4]},"east":{"uv":[67,3],"uv_size":[3,4]},"south":{"uv":[66,53],"uv_size":[6,4]},"west":{"uv":[6,67],"uv_size":[3,4]},"up":{"uv":[72,63],"uv_size":[-6,-3]},"down":{"uv":[72,63],"uv_size":[-6,3]}}}]},{"name":"Booba2","pivot":[0,19,-2],"parent":"Booba","rotation":[60,0,0],"cubes":[{"origin":[-3,16,-2],"size":[6,3,3],"inflate":-0.002,"uv":{"north":{"uv":[4,24],"uv_size":[6,3]},"east":{"uv":[34,12],"uv_size":[3,3]},"south":{"uv":[10,24],"uv_size":[6,3]},"west":{"uv":[4,35],"uv_size":[3,3]},"up":{"uv":[22,31],"uv_size":[-6,-3]},"down":{"uv":[28,28],"uv_size":[-6,3]}}},{"origin":[-3,15.75,-2],"size":[6,3,3],"inflate":0.248,"uv":{"north":{"uv":[50,22],"uv_size":[6,3]},"east":{"uv":[53,31],"uv_size":[3,3]},"south":{"uv":[50,25],"uv_size":[6,3]},"west":{"uv":[55,16],"uv_size":[3,3]},"up":{"uv":[56,31],"uv_size":[-6,-3]},"down":{"uv":[38,53],"uv_size":[-6,3]}}}]},{"name":"Coat","pivot":[0,24,0],"parent":"Chest"},{"name":"Hood","pivot":[0,24,2.25],"parent":"Coat","rotation":[40,0,0],"cubes":[{"origin":[-4,20,-0.75],"size":[8,4,3],"uv":{"north":{"uv":[79,29],"uv_size":[8,4]},"east":{"uv":[78,56],"uv_size":[3,4]},"south":{"uv":[81,38],"uv_size":[8,4]},"west":{"uv":[78,60],"uv_size":[3,4]},"up":{"uv":[88,26],"uv_size":[-8,-3]},"down":{"uv":[90,42],"uv_size":[-8,3]}}},{"origin":[-4,20,-0.75],"size":[8,4,3],"inflate":0.25,"uv":{"north":{"uv":[78,15],"uv_size":[8,4]},"east":{"uv":[63,77],"uv_size":[3,4]},"south":{"uv":[78,19],"uv_size":[8,4]},"west":{"uv":[78,38],"uv_size":[3,4]},"up":{"uv":[86,29],"uv_size":[-8,-3]},"down":{"uv":[86,35],"uv_size":[-8,3]}}}]},{"name":"CoatLeft","pivot":[-3.5,24,-0.25],"parent":"Coat","rotation":[0,0,10],"cubes":[{"origin":[-3.5,9,-2.75],"size":[2,15,3],"pivot":[-3.5,24,-2.75],"rotation":[-10,0,0],"uv":{"north":{"uv":[9,78],"uv_size":[2,15]},"east":{"uv":[81,0],"uv_size":[3,15]},"south":{"uv":[28,79],"uv_size":[2,15]},"west":{"uv":[81,45],"uv_size":[3,15]},"up":{"uv":[81,48],"uv_size":[-2,-3]},"down":{"uv":[86,50],"uv_size":[-2,3]}}},{"origin":[-3.5,9,-0.75],"size":[4,15,3],"pivot":[-3.5,24,2.25],"rotation":[10,0,0],"uv":{"north":{"uv":[32,79],"uv_size":[4,15]},"east":{"uv":[63,81],"uv_size":[3,15]},"south":{"uv":[54,79],"uv_size":[4,15]},"west":{"uv":[82,60],"uv_size":[3,15]},"up":{"uv":[82,67],"uv_size":[-4,-3]},"down":{"uv":[82,67],"uv_size":[-4,3]}}},{"origin":[-3.5,9,-2.75],"size":[2,15,5],"pivot":[-3.5,24,-0.25],"rotation":[0,0,5],"uv":{"north":{"uv":[36,79],"uv_size":[2,15]},"east":{"uv":[0,79],"uv_size":[5,15]},"south":{"uv":[82,75],"uv_size":[2,15]},"west":{"uv":[23,79],"uv_size":[5,15]},"up":{"uv":[86,13],"uv_size":[-2,-5]},"down":{"uv":[86,45],"uv_size":[-2,5]}}},{"origin":[-3.5,9,-2.75],"size":[2,15,3],"pivot":[-3.5,24,-2.75],"rotation":[-10,0,0],"inflate":0.25,"uv":{"north":{"uv":[52,77],"uv_size":[2,15]},"east":{"uv":[11,77],"uv_size":[3,15]},"south":{"uv":[59,77],"uv_size":[2,15]},"west":{"uv":[18,77],"uv_size":[3,15]},"up":{"uv":[78,29],"uv_size":[-2,-3]},"down":{"uv":[79,29],"uv_size":[-2,3]}}},{"origin":[-3.5,9,-0.75],"size":[4,15,3],"pivot":[-3.5,24,2.25],"rotation":[10,0,0],"inflate":0.25,"uv":{"north":{"uv":[66,76],"uv_size":[4,15]},"east":{"uv":[15,76],"uv_size":[3,15]},"south":{"uv":[70,76],"uv_size":[4,15]},"west":{"uv":[6,77],"uv_size":[3,15]},"up":{"uv":[79,48],"uv_size":[-4,-3]},"down":{"uv":[80,23],"uv_size":[-4,3]}}},{"origin":[-3.5,9,-2.75],"size":[2,15,5],"pivot":[-3.5,24,-0.25],"rotation":[0,0,5],"inflate":0.25,"uv":{"north":{"uv":[21,77],"uv_size":[2,15]},"east":{"uv":[76,0],"uv_size":[5,15]},"south":{"uv":[50,77],"uv_size":[2,15]},"west":{"uv":[45,76],"uv_size":[5,15]},"up":{"uv":[78,53],"uv_size":[-2,-5]},"down":{"uv":[78,65],"uv_size":[-2,5]}}}]},{"name":"Pocket","pivot":[-3.75,15,-2.75],"parent":"CoatLeft","rotation":[0,-25,7.5],"cubes":[{"origin":[-4.75,11,-4.25],"size":[1,4,3],"uv":{"north":{"uv":[58,32],"uv_size":[1,4]},"east":{"uv":[84,0],"uv_size":[3,4]},"south":{"uv":[52,59],"uv_size":[1,4]},"west":{"uv":[84,4],"uv_size":[3,4]},"up":{"uv":[68,20],"uv_size":[-1,-3]},"down":{"uv":[24,70],"uv_size":[-1,3]}}},{"origin":[-4.75,11,-4.25],"size":[1,4,3],"inflate":0.25,"uv":{"north":{"uv":[45,25],"uv_size":[1,4]},"east":{"uv":[78,48],"uv_size":[3,4]},"south":{"uv":[54,10],"uv_size":[1,4]},"west":{"uv":[78,52],"uv_size":[3,4]},"up":{"uv":[46,14],"uv_size":[-1,-3]},"down":{"uv":[59,6],"uv_size":[-1,3]}}}]},{"name":"Strap","pivot":[-3.5,10,-0.25],"parent":"CoatLeft","cubes":[{"origin":[-2.5,5,-4.25],"size":[1,6,0],"pivot":[-1.5,9,-3.25],"rotation":[0,0,-10],"uv":{"north":{"uv":[74,76],"uv_size":[1,6]},"east":{"uv":[0,0],"uv_size":[0,6]},"south":{"uv":[14,77],"uv_size":[1,6]},"west":{"uv":[0,0],"uv_size":[0,6]},"up":{"uv":[1,0],"uv_size":[-1,0]},"down":{"uv":[1,0],"uv_size":[-1,0]}}}]},{"name":"CoatRight","pivot":[3.5,24,-0.25],"parent":"Coat","rotation":[0,0,-10],"cubes":[{"origin":[1.5,9,-2.75],"size":[2,15,3],"pivot":[3.5,24,-2.75],"rotation":[-10,0,0],"uv":{"north":{"uv":[11,78],"uv_size":[-2,15]},"east":{"uv":[84,45],"uv_size":[-3,15]},"south":{"uv":[30,79],"uv_size":[-2,15]},"west":{"uv":[84,0],"uv_size":[-3,15]},"up":{"uv":[79,48],"uv_size":[2,-3]},"down":{"uv":[84,50],"uv_size":[2,3]}}},{"origin":[-0.5,9,-0.75],"size":[4,15,3],"pivot":[3.5,24,2.25],"rotation":[10,0,0],"uv":{"north":{"uv":[36,79],"uv_size":[-4,15]},"east":{"uv":[85,60],"uv_size":[-3,15]},"south":{"uv":[58,79],"uv_size":[-4,15]},"west":{"uv":[66,81],"uv_size":[-3,15]},"up":{"uv":[78,67],"uv_size":[4,-3]},"down":{"uv":[78,67],"uv_size":[4,3]}}},{"origin":[1.5,9,-2.75],"size":[2,15,5],"pivot":[3.5,24,-0.25],"rotation":[0,0,-5],"uv":{"north":{"uv":[38,79],"uv_size":[-2,15]},"east":{"uv":[28,79],"uv_size":[-5,15]},"south":{"uv":[84,75],"uv_size":[-2,15]},"west":{"uv":[5,79],"uv_size":[-5,15]},"up":{"uv":[84,13],"uv_size":[2,-5]},"down":{"uv":[84,45],"uv_size":[2,5]}}},{"origin":[1.5,9,-2.75],"size":[2,15,3],"pivot":[3.5,24,-2.75],"rotation":[-10,0,0],"inflate":0.25,"uv":{"north":{"uv":[54,77],"uv_size":[-2,15]},"east":{"uv":[21,77],"uv_size":[-3,15]},"south":{"uv":[61,77],"uv_size":[-2,15]},"west":{"uv":[14,77],"uv_size":[-3,15]},"up":{"uv":[76,29],"uv_size":[2,-3]},"down":{"uv":[77,29],"uv_size":[2,3]}}},{"origin":[-0.5,9,-0.75],"size":[4,15,3],"pivot":[3.5,24,2.25],"rotation":[10,0,0],"inflate":0.25,"uv":{"north":{"uv":[70,76],"uv_size":[-4,15]},"east":{"uv":[9,77],"uv_size":[-3,15]},"south":{"uv":[74,76],"uv_size":[-4,15]},"west":{"uv":[18,76],"uv_size":[-3,15]},"up":{"uv":[75,48],"uv_size":[4,-3]},"down":{"uv":[76,23],"uv_size":[4,3]}}},{"origin":[1.5,9,-2.75],"size":[2,15,5],"pivot":[3.5,24,-0.25],"rotation":[0,0,-5],"inflate":0.25,"uv":{"north":{"uv":[23,77],"uv_size":[-2,15]},"east":{"uv":[50,76],"uv_size":[-5,15]},"south":{"uv":[52,77],"uv_size":[-2,15]},"west":{"uv":[81,0],"uv_size":[-5,15]},"up":{"uv":[76,53],"uv_size":[2,-5]},"down":{"uv":[76,65],"uv_size":[2,5]}}}]},{"name":"Pocket2","pivot":[3.75,15,-2.75],"parent":"CoatRight","rotation":[0,25,-7.5],"cubes":[{"origin":[3.75,11,-4.25],"size":[1,4,3],"uv":{"north":{"uv":[59,32],"uv_size":[-1,4]},"east":{"uv":[87,4],"uv_size":[-3,4]},"south":{"uv":[53,59],"uv_size":[-1,4]},"west":{"uv":[87,0],"uv_size":[-3,4]},"up":{"uv":[67,20],"uv_size":[1,-3]},"down":{"uv":[23,70],"uv_size":[1,3]}}},{"origin":[3.75,11,-4.25],"size":[1,4,3],"inflate":0.25,"uv":{"north":{"uv":[46,25],"uv_size":[-1,4]},"east":{"uv":[81,52],"uv_size":[-3,4]},"south":{"uv":[55,10],"uv_size":[-1,4]},"west":{"uv":[81,48],"uv_size":[-3,4]},"up":{"uv":[45,14],"uv_size":[1,-3]},"down":{"uv":[58,6],"uv_size":[1,3]}}}]},{"name":"Strap2","pivot":[3.5,10,-0.25],"parent":"CoatRight","cubes":[{"origin":[1.5,5,-4.25],"size":[1,6,0],"pivot":[1.5,9,-3.25],"rotation":[0,0,10],"uv":{"north":{"uv":[75,76],"uv_size":[-1,6]},"east":{"uv":[0,0],"uv_size":[0,6]},"south":{"uv":[15,77],"uv_size":[-1,6]},"west":{"uv":[0,0],"uv_size":[0,6]},"up":{"uv":[0,0],"uv_size":[1,0]},"down":{"uv":[0,0],"uv_size":[1,0]}}}]},{"name":"CoatMiddle","pivot":[0,24,2.25],"parent":"Coat","rotation":[17.5,0,0],"cubes":[{"origin":[-3.5,8,0.25],"size":[7,16,2],"pivot":[0,22,1.25],"rotation":[-2.5,0,0],"uv":{"north":{"uv":[84,75],"uv_size":[7,16]},"east":{"uv":[74,86],"uv_size":[2,16]},"south":{"uv":[85,53],"uv_size":[7,16]},"west":{"uv":[76,86],"uv_size":[2,16]},"up":{"uv":[89,35],"uv_size":[-7,-2]},"down":{"uv":[91,13],"uv_size":[-7,2]}}},{"origin":[-3.5,8,0.25],"size":[7,16,2],"pivot":[0,22,1.25],"rotation":[-2.5,0,0],"inflate":0.25,"uv":{"north":{"uv":[75,70],"uv_size":[7,16]},"east":{"uv":[30,76],"uv_size":[2,16]},"south":{"uv":[38,76],"uv_size":[7,16]},"west":{"uv":[61,76],"uv_size":[2,16]},"up":{"uv":[82,35],"uv_size":[-7,-2]},"down":{"uv":[82,43],"uv_size":[-7,2]}}}]},{"name":"Lanyard","pivot":[0,24,0],"parent":"Chest","cubes":[{"origin":[-2,24.25,-2],"size":[4,0,4],"uv":{"north":{"uv":[0,0],"uv_size":[4,0]},"east":{"uv":[0,0],"uv_size":[4,0]},"south":{"uv":[0,0],"uv_size":[4,0]},"west":{"uv":[0,0],"uv_size":[4,0]},"up":{"uv":[90,19],"uv_size":[-4,-4]},"down":{"uv":[90,19],"uv_size":[-4,4]}}}]},{"name":"LanyardBone","pivot":[0,24.25,-2],"parent":"Lanyard","rotation":[70,0,0],"cubes":[{"origin":[-2,24.25,-7],"size":[4,0,5],"uv":{"north":{"uv":[0,0],"uv_size":[4,0]},"east":{"uv":[0,0],"uv_size":[5,0]},"south":{"uv":[0,0],"uv_size":[4,0]},"west":{"uv":[0,0],"uv_size":[5,0]},"up":{"uv":[89,74],"uv_size":[-4,-5]},"down":{"uv":[90,8],"uv_size":[-4,5]}}},{"origin":[-1.5,24.25,-10],"size":[3,0,3],"pivot":[0,24.25,-7],"rotation":[22.5,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[3,0]},"east":{"uv":[0,0],"uv_size":[3,0]},"south":{"uv":[0,0],"uv_size":[3,0]},"west":{"uv":[0,0],"uv_size":[3,0]},"up":{"uv":[89,48],"uv_size":[-3,-3]},"down":{"uv":[89,48],"uv_size":[-3,3]}}}]},{"name":"TailBone1","pivot":[0,14,1.25],"parent":"Body","rotation":[-77.5,0,0],"cubes":[{"origin":[-1,13,0.25],"size":[2,2,4],"uv":{"north":{"uv":[43,43],"uv_size":[2,2]},"east":{"uv":[43,17],"uv_size":[4,2]},"south":{"uv":[0,44],"uv_size":[2,2]},"west":{"uv":[43,19],"uv_size":[4,2]},"up":{"uv":[32,24],"uv_size":[-2,-4]},"down":{"uv":[28,38],"uv_size":[-2,4]}}},{"origin":[-1,13,0.25],"size":[2,2,4],"inflate":0.25,"uv":{"north":{"uv":[62,13],"uv_size":[2,2]},"east":{"uv":[47,4],"uv_size":[4,2]},"south":{"uv":[62,15],"uv_size":[2,2]},"west":{"uv":[60,47],"uv_size":[4,2]},"up":{"uv":[56,63],"uv_size":[-2,-4]},"down":{"uv":[32,60],"uv_size":[-2,4]}}}]},{"name":"TailBone2","pivot":[0,14,4],"parent":"TailBone1","rotation":[15,0,0],"cubes":[{"origin":[-1,13,4],"size":[2,2,5],"uv":{"north":{"uv":[39,5],"uv_size":[2,2]},"east":{"uv":[57,49],"uv_size":[5,2]},"south":{"uv":[39,12],"uv_size":[2,2]},"west":{"uv":[58,0],"uv_size":[5,2]},"up":{"uv":[47,5],"uv_size":[-2,-5]},"down":{"uv":[59,40],"uv_size":[-2,5]}}},{"origin":[-1,13,4],"size":[2,2,5],"inflate":0.25,"uv":{"north":{"uv":[38,8],"uv_size":[2,2]},"east":{"uv":[14,42],"uv_size":[5,2]},"south":{"uv":[38,10],"uv_size":[2,2]},"west":{"uv":[31,44],"uv_size":[5,2]},"up":{"uv":[33,43],"uv_size":[-2,-5]},"down":{"uv":[41,0],"uv_size":[-2,5]}}}]},{"name":"TailBone3","pivot":[0,14,8.75],"parent":"TailBone2","rotation":[20,0,0],"cubes":[{"origin":[-1,13,8.75],"size":[2,2,3],"uv":{"north":{"uv":[44,8],"uv_size":[2,2]},"east":{"uv":[43,29],"uv_size":[3,2]},"south":{"uv":[11,44],"uv_size":[2,2]},"west":{"uv":[43,31],"uv_size":[3,2]},"up":{"uv":[36,20],"uv_size":[-2,-3]},"down":{"uv":[16,35],"uv_size":[-2,3]}}},{"origin":[-1,13,8.75],"size":[2,2,3],"inflate":0.25,"uv":{"north":{"uv":[62,29],"uv_size":[2,2]},"east":{"uv":[51,4],"uv_size":[3,2]},"south":{"uv":[62,31],"uv_size":[2,2]},"west":{"uv":[62,8],"uv_size":[3,2]},"up":{"uv":[47,17],"uv_size":[-2,-3]},"down":{"uv":[64,10],"uv_size":[-2,3]}}}]},{"name":"TailBone4","pivot":[0,14,11.5],"parent":"TailBone3","rotation":[22.5,0,0],"cubes":[{"origin":[-1,13,11.5],"size":[2,2,2],"uv":{"north":{"uv":[13,44],"uv_size":[2,2]},"east":{"uv":[15,44],"uv_size":[2,2]},"south":{"uv":[17,44],"uv_size":[2,2]},"west":{"uv":[19,44],"uv_size":[2,2]},"up":{"uv":[23,46],"uv_size":[-2,-2]},"down":{"uv":[25,44],"uv_size":[-2,2]}}},{"origin":[-1,13,11.5],"size":[2,2,2],"inflate":0.25,"uv":{"north":{"uv":[62,33],"uv_size":[2,2]},"east":{"uv":[62,35],"uv_size":[2,2]},"south":{"uv":[59,62],"uv_size":[2,2]},"west":{"uv":[61,62],"uv_size":[2,2]},"up":{"uv":[65,2],"uv_size":[-2,-2]},"down":{"uv":[65,2],"uv_size":[-2,2]}}}]},{"name":"LeftArm","pivot":[-4,22,0],"parent":"Torso","rotation":[0,0,20],"cubes":[{"origin":[-6,17.5,-1],"size":[3,6,3],"uv":{"north":{"uv":[8,35],"uv_size":[3,6]},"east":{"uv":[11,35],"uv_size":[3,6]},"south":{"uv":[36,17],"uv_size":[3,6]},"west":{"uv":[36,23],"uv_size":[3,6]},"up":{"uv":[44,11],"uv_size":[-3,-3]},"down":{"uv":[14,41],"uv_size":[-3,3]}}},{"origin":[-6,17.75,-1],"size":[3,5.75,3],"inflate":0.25,"uv":{"north":{"uv":[59,26],"uv_size":[3,6]},"east":{"uv":[59,32],"uv_size":[3,6]},"south":{"uv":[44,59],"uv_size":[3,6]},"west":{"uv":[47,59],"uv_size":[3,6]},"up":{"uv":[63,44],"uv_size":[-3,-3]},"down":{"uv":[63,44],"uv_size":[-3,3]}}},{"origin":[-6.75,16.5,-1.5],"size":[4,3,4],"uv":{"north":{"uv":[22,38],"uv_size":[4,3]},"east":{"uv":[39,14],"uv_size":[4,3]},"south":{"uv":[22,41],"uv_size":[4,3]},"west":{"uv":[37,42],"uv_size":[4,3]},"up":{"uv":[18,42],"uv_size":[-4,-4]},"down":{"uv":[22,38],"uv_size":[-4,4]}}},{"origin":[-6.75,16.5,-1.5],"size":[4,3,4],"inflate":0.25,"uv":{"north":{"uv":[59,38],"uv_size":[4,3]},"east":{"uv":[24,60],"uv_size":[4,3]},"south":{"uv":[86,26],"uv_size":[4,3]},"west":{"uv":[86,35],"uv_size":[4,3]},"up":{"uv":[42,61],"uv_size":[-4,-4]},"down":{"uv":[82,86],"uv_size":[-4,4]}}}]},{"name":"LowerLeftArm","pivot":[-4,17.5,1],"parent":"LeftArm","cubes":[{"origin":[-6,11.5,-1],"size":[3,6,3],"uv":{"north":{"uv":[19,92],"uv_size":[3,6]},"east":{"uv":[50,92],"uv_size":[3,6]},"south":{"uv":[92,52],"uv_size":[3,6]},"west":{"uv":[92,58],"uv_size":[3,6]},"up":{"uv":[62,95],"uv_size":[-3,-3]},"down":{"uv":[95,64],"uv_size":[-3,3]}}},{"origin":[-6,11.5,-1],"size":[3,5.75,3],"inflate":0.25,"uv":{"north":{"uv":[56,26],"uv_size":[3,6]},"east":{"uv":[56,52],"uv_size":[3,6]},"south":{"uv":[32,57],"uv_size":[3,6]},"west":{"uv":[35,57],"uv_size":[3,6]},"up":{"uv":[50,25],"uv_size":[-3,-3]},"down":{"uv":[58,0],"uv_size":[-3,3]}}},{"origin":[-6,12.5,0],"size":[0,4,1],"pivot":[-6,16.5,1],"rotation":[0,0,10],"uv":{"north":{"uv":[0,0],"uv_size":[0,4]},"east":{"uv":[38,0],"uv_size":[1,4]},"south":{"uv":[0,0],"uv_size":[0,4]},"west":{"uv":[38,4],"uv_size":[1,4]},"up":{"uv":[0,1],"uv_size":[0,-1]},"down":{"uv":[0,0],"uv_size":[0,1]}}}]},{"name":"LeftItemPivot","pivot":[-4.25,13,-1],"parent":"LowerLeftArm"},{"name":"RightArm","pivot":[4,22,0],"parent":"Torso","rotation":[0,0,-20],"cubes":[{"origin":[3,17.5,-1],"size":[3,6,3],"uv":{"north":{"uv":[11,35],"uv_size":[-3,6]},"east":{"uv":[39,23],"uv_size":[-3,6]},"south":{"uv":[39,17],"uv_size":[-3,6]},"west":{"uv":[14,35],"uv_size":[-3,6]},"up":{"uv":[41,11],"uv_size":[3,-3]},"down":{"uv":[11,41],"uv_size":[3,3]}}},{"origin":[3,17.75,-1],"size":[3,5.75,3],"inflate":0.25,"uv":{"north":{"uv":[62,26],"uv_size":[-3,6]},"east":{"uv":[50,59],"uv_size":[-3,6]},"south":{"uv":[47,59],"uv_size":[-3,6]},"west":{"uv":[62,32],"uv_size":[-3,6]},"up":{"uv":[60,44],"uv_size":[3,-3]},"down":{"uv":[60,44],"uv_size":[3,3]}}},{"origin":[2.75,16.5,-1.5],"size":[4,3,4],"uv":{"north":{"uv":[26,38],"uv_size":[-4,3]},"east":{"uv":[41,42],"uv_size":[-4,3]},"south":{"uv":[26,41],"uv_size":[-4,3]},"west":{"uv":[43,14],"uv_size":[-4,3]},"up":{"uv":[14,42],"uv_size":[4,-4]},"down":{"uv":[18,38],"uv_size":[4,4]}}},{"origin":[2.75,16.5,-1.5],"size":[4,3,4],"inflate":0.25,"uv":{"north":{"uv":[63,38],"uv_size":[-4,3]},"east":{"uv":[90,35],"uv_size":[-4,3]},"south":{"uv":[90,26],"uv_size":[-4,3]},"west":{"uv":[28,60],"uv_size":[-4,3]},"up":{"uv":[38,61],"uv_size":[4,-4]},"down":{"uv":[78,86],"uv_size":[4,4]}}}]},{"name":"LowerRightArm","pivot":[4,17.5,1],"parent":"RightArm","cubes":[{"origin":[3,11.5,-1],"size":[3,6,3],"uv":{"north":{"uv":[31,36],"uv_size":[-3,6]},"east":{"uv":[3,38],"uv_size":[-3,6]},"south":{"uv":[39,35],"uv_size":[-3,6]},"west":{"uv":[39,29],"uv_size":[-3,6]},"up":{"uv":[34,44],"uv_size":[3,-3]},"down":{"uv":[42,11],"uv_size":[3,3]}}},{"origin":[3,11.5,-1],"size":[3,5.75,3],"inflate":0.25,"uv":{"north":{"uv":[59,26],"uv_size":[-3,6]},"east":{"uv":[38,57],"uv_size":[-3,6]},"south":{"uv":[35,57],"uv_size":[-3,6]},"west":{"uv":[59,52],"uv_size":[-3,6]},"up":{"uv":[47,25],"uv_size":[3,-3]},"down":{"uv":[55,0],"uv_size":[3,3]}}},{"origin":[6,12.5,0],"size":[0,4,1],"pivot":[6,16.5,1],"rotation":[0,0,-10],"uv":{"north":{"uv":[0,0],"uv_size":[0,4]},"east":{"uv":[39,4],"uv_size":[-1,4]},"south":{"uv":[0,0],"uv_size":[0,4]},"west":{"uv":[39,0],"uv_size":[-1,4]},"up":{"uv":[0,1],"uv_size":[0,-1]},"down":{"uv":[0,0],"uv_size":[0,1]}}}]},{"name":"RightItemPivot","pivot":[4.25,13,-1],"parent":"LowerRightArm"},{"name":"RightLeg","pivot":[1.9,12,0],"parent":"CharModel","cubes":[{"origin":[-0.1,6,-2],"size":[4,6,4],"uv":{"north":{"uv":[28,24],"uv_size":[4,6]},"east":{"uv":[4,29],"uv_size":[4,6]},"south":{"uv":[8,29],"uv_size":[4,6]},"west":{"uv":[12,29],"uv_size":[4,6]},"up":{"uv":[43,30],"uv_size":[-4,-4]},"down":{"uv":[43,30],"uv_size":[-4,4]}}},{"origin":[-0.1,6,-2],"size":[4,6,4],"inflate":0.25,"uv":{"north":{"uv":[32,46],"uv_size":[4,6]},"east":{"uv":[53,40],"uv_size":[4,6]},"south":{"uv":[44,53],"uv_size":[4,6]},"west":{"uv":[53,46],"uv_size":[4,6]},"up":{"uv":[63,60],"uv_size":[-4,-4]},"down":{"uv":[4,60],"uv_size":[-4,4]}}}]},{"name":"LowerRightLeg","pivot":[1.9,6,-1],"parent":"RightLeg","cubes":[{"origin":[-0.1,0,-2],"size":[4,6,4],"uv":{"north":{"uv":[30,8],"uv_size":[4,6]},"east":{"uv":[30,14],"uv_size":[4,6]},"south":{"uv":[28,30],"uv_size":[4,6]},"west":{"uv":[0,32],"uv_size":[4,6]},"up":{"uv":[43,38],"uv_size":[-4,-4]},"down":{"uv":[43,38],"uv_size":[-4,4]}}},{"origin":[-0.1,0,-2],"size":[4,6,4],"inflate":0.25,"uv":{"north":{"uv":[20,54],"uv_size":[4,6]},"east":{"uv":[24,54],"uv_size":[4,6]},"south":{"uv":[28,54],"uv_size":[4,6]},"west":{"uv":[55,10],"uv_size":[4,6]},"up":{"uv":[64,22],"uv_size":[-4,-4]},"down":{"uv":[24,60],"uv_size":[-4,4]}}}]},{"name":"LeftLeg","pivot":[-1.9,12,0],"parent":"CharModel","cubes":[{"origin":[-3.9,6,-2],"size":[4,6,4],"uv":{"north":{"uv":[16,32],"uv_size":[4,6]},"east":{"uv":[20,32],"uv_size":[4,6]},"south":{"uv":[32,20],"uv_size":[4,6]},"west":{"uv":[24,32],"uv_size":[4,6]},"up":{"uv":[7,44],"uv_size":[-4,-4]},"down":{"uv":[45,0],"uv_size":[-4,4]}}},{"origin":[-3.9,6,-2],"size":[4,6,4],"inflate":0.25,"uv":{"north":{"uv":[48,53],"uv_size":[4,6]},"east":{"uv":[52,53],"uv_size":[4,6]},"south":{"uv":[0,54],"uv_size":[4,6]},"west":{"uv":[4,54],"uv_size":[4,6]},"up":{"uv":[8,64],"uv_size":[-4,-4]},"down":{"uv":[12,60],"uv_size":[-4,4]}}}]},{"name":"LowerLeftLeg","pivot":[-1.9,6,-1],"parent":"LeftLeg","cubes":[{"origin":[-3.9,0,-2],"size":[4,6,4],"uv":{"north":{"uv":[32,26],"uv_size":[4,6]},"east":{"uv":[32,32],"uv_size":[4,6]},"south":{"uv":[34,0],"uv_size":[4,6]},"west":{"uv":[34,6],"uv_size":[4,6]},"up":{"uv":[45,8],"uv_size":[-4,-4]},"down":{"uv":[11,41],"uv_size":[-4,4]}}},{"origin":[-3.9,0,-2],"size":[4,6,4],"inflate":0.25,"uv":{"north":{"uv":[54,4],"uv_size":[4,6]},"east":{"uv":[8,54],"uv_size":[4,6]},"south":{"uv":[12,54],"uv_size":[4,6]},"west":{"uv":[16,54],"uv_size":[4,6]},"up":{"uv":[16,64],"uv_size":[-4,-4]},"down":{"uv":[20,60],"uv_size":[-4,4]}}}]},{"name":"Drone","pivot":[-16,29,0]},{"name":"DroneFull","pivot":[-16,29,0],"parent":"Drone"},{"name":"DroneBone","pivot":[-16,29,0],"parent":"DroneFull","cubes":[{"origin":[-17.5,24,0],"size":[3,9,0],"uv":{"north":{"uv":[59,2],"uv_size":[3,9]},"east":{"uv":[0,0],"uv_size":[0,9]},"south":{"uv":[90,0],"uv_size":[3,9]},"west":{"uv":[0,0],"uv_size":[0,9]},"up":{"uv":[3,0],"uv_size":[-3,0]},"down":{"uv":[3,0],"uv_size":[-3,0]}}}]},{"name":"StaticUpper","pivot":[-16,29,0],"parent":"DroneFull"},{"name":"SU2","pivot":[-16,30.5,0],"parent":"StaticUpper"},{"name":"SU1","pivot":[-16,29,0],"parent":"StaticUpper"},{"name":"StaticLower","pivot":[-16,29,0],"parent":"DroneFull"},{"name":"SL1","pivot":[-16,28,0],"parent":"StaticLower"},{"name":"SL2","pivot":[-16,28,0],"parent":"StaticLower"},{"name":"SL3","pivot":[-16,28,0],"parent":"StaticLower"},{"name":"SL4","pivot":[-16,28,0],"parent":"StaticLower"},{"name":"ItemStaff","pivot":[0,-2.5,-2]},{"name":"Handle","pivot":[0,-2.5,-2],"parent":"ItemStaff","cubes":[{"origin":[-0.5,-15.5,-2.5],"size":[1,24,1],"inflate":0.25,"uv":{"north":{"uv":[5,79],"uv_size":[1,24]},"east":{"uv":[58,79],"uv_size":[1,24]},"south":{"uv":[14,83],"uv_size":[1,24]},"west":{"uv":[90,15],"uv_size":[1,24]},"up":{"uv":[34,39],"uv_size":[-1,-1]},"down":{"uv":[40,7],"uv_size":[-1,1]}}},{"origin":[0,-15.5,-2.5],"size":[0,19,1],"pivot":[0,-2.5,-2],"rotation":[0,45,0],"uv":{"north":{"uv":[0,0],"uv_size":[0,19]},"east":{"uv":[82,90],"uv_size":[1,19]},"south":{"uv":[0,0],"uv_size":[0,19]},"west":{"uv":[83,90],"uv_size":[1,19]},"up":{"uv":[0,1],"uv_size":[0,-1]},"down":{"uv":[0,0],"uv_size":[0,1]}}},{"origin":[-0.5,-15.5,-2.5],"size":[1,24,1],"uv":{"north":{"uv":[78,90],"uv_size":[1,24]},"east":{"uv":[79,90],"uv_size":[1,24]},"south":{"uv":[80,90],"uv_size":[1,24]},"west":{"uv":[81,90],"uv_size":[1,24]},"up":{"uv":[40,18],"uv_size":[-1,-1]},"down":{"uv":[34,39],"uv_size":[-1,1]}}}]},{"name":"Grip","pivot":[0,-2.5,-2],"parent":"ItemStaff","cubes":[{"origin":[-0.5,-4.5,-1],"size":[1,6,1],"uv":{"north":{"uv":[43,23],"uv_size":[1,6]},"east":{"uv":[44,23],"uv_size":[1,6]},"south":{"uv":[42,57],"uv_size":[1,6]},"west":{"uv":[43,57],"uv_size":[1,6]},"up":{"uv":[41,11],"uv_size":[-1,-1]},"down":{"uv":[41,11],"uv_size":[-1,1]}}},{"origin":[-0.5,-4.5,-2.75],"size":[1,0,3],"uv":{"north":{"uv":[0,0],"uv_size":[1,0]},"east":{"uv":[0,0],"uv_size":[3,0]},"south":{"uv":[0,0],"uv_size":[1,0]},"west":{"uv":[0,0],"uv_size":[3,0]},"up":{"uv":[41,10],"uv_size":[-1,-3]},"down":{"uv":[34,40],"uv_size":[-1,3]}}},{"origin":[-0.5,1.5,-2.75],"size":[1,0,3],"uv":{"north":{"uv":[0,0],"uv_size":[1,0]},"east":{"uv":[0,0],"uv_size":[3,0]},"south":{"uv":[0,0],"uv_size":[1,0]},"west":{"uv":[0,0],"uv_size":[3,0]},"up":{"uv":[31,45],"uv_size":[-1,-3]},"down":{"uv":[46,21],"uv_size":[-1,3]}}}]},{"name":"StaffTop","pivot":[0,6.5,-2],"parent":"ItemStaff","rotation":[0,-90,0],"cubes":[{"origin":[-1,6.5,-3],"size":[2,2,2],"uv":{"north":{"uv":[2,44],"uv_size":[2,2]},"east":{"uv":[4,44],"uv_size":[2,2]},"south":{"uv":[28,44],"uv_size":[2,2]},"west":{"uv":[57,45],"uv_size":[2,2]},"up":{"uv":[59,49],"uv_size":[-2,-2]},"down":{"uv":[60,16],"uv_size":[-2,2]}}},{"origin":[-1,6.5,-3],"size":[2,2,2],"inflate":0.25,"uv":{"north":{"uv":[19,42],"uv_size":[2,2]},"east":{"uv":[26,42],"uv_size":[2,2]},"south":{"uv":[28,42],"uv_size":[2,2]},"west":{"uv":[41,42],"uv_size":[2,2]},"up":{"uv":[45,16],"uv_size":[-2,-2]},"down":{"uv":[45,21],"uv_size":[-2,2]}}},{"origin":[-0.5,8.5,-2.5],"size":[1,3,1],"uv":{"north":{"uv":[46,21],"uv_size":[1,3]},"east":{"uv":[58,2],"uv_size":[1,3]},"south":{"uv":[56,58],"uv_size":[1,3]},"west":{"uv":[57,58],"uv_size":[1,3]},"up":{"uv":[41,18],"uv_size":[-1,-1]},"down":{"uv":[42,12],"uv_size":[-1,1]}}},{"origin":[-0.5,8.5,-2.5],"size":[1,3,1],"inflate":0.25,"uv":{"north":{"uv":[58,58],"uv_size":[1,3]},"east":{"uv":[59,11],"uv_size":[1,3]},"south":{"uv":[59,41],"uv_size":[1,3]},"west":{"uv":[59,44],"uv_size":[1,3]},"up":{"uv":[42,14],"uv_size":[-1,-1]},"down":{"uv":[42,17],"uv_size":[-1,1]}}},{"origin":[-2.5,8.5,-4.5],"size":[5,5,5],"uv":{"north":{"uv":[91,27],"uv_size":[5,5]},"east":{"uv":[91,32],"uv_size":[5,5]},"south":{"uv":[45,91],"uv_size":[5,5]},"west":{"uv":[66,91],"uv_size":[5,5]},"up":{"uv":[96,80],"uv_size":[-5,-5]},"down":{"uv":[96,80],"uv_size":[-5,5]}}},{"origin":[-3,8.25,-5],"size":[6,6,6],"uv":{"north":{"uv":[89,45],"uv_size":[6,6]},"east":{"uv":[89,69],"uv_size":[6,6]},"south":{"uv":[90,39],"uv_size":[6,6]},"west":{"uv":[91,9],"uv_size":[6,6]},"up":{"uv":[97,21],"uv_size":[-6,-6]},"down":{"uv":[97,21],"uv_size":[-6,6]}}},{"origin":[3,10.25,-3],"size":[0,2,2],"pivot":[3,12.25,-2],"rotation":[0,0,-17.5],"uv":{"north":{"uv":[0,0],"uv_size":[0,2]},"east":{"uv":[59,14],"uv_size":[2,2]},"south":{"uv":[0,0],"uv_size":[0,2]},"west":{"uv":[60,11],"uv_size":[2,2]},"up":{"uv":[0,2],"uv_size":[0,-2]},"down":{"uv":[0,0],"uv_size":[0,2]}}},{"origin":[-1,13.501,-3],"size":[2,3,2],"uv":{"north":{"uv":[87,0],"uv_size":[2,3]},"east":{"uv":[87,3],"uv_size":[2,3]},"south":{"uv":[87,29],"uv_size":[2,3]},"west":{"uv":[88,23],"uv_size":[2,3]},"up":{"uv":[42,63],"uv_size":[-2,-2]},"down":{"uv":[63,60],"uv_size":[-2,2]}}},{"origin":[-1,13.5,-3],"size":[2,3,2],"inflate":0.25,"uv":{"north":{"uv":[61,22],"uv_size":[2,3]},"east":{"uv":[56,61],"uv_size":[2,3]},"south":{"uv":[62,4],"uv_size":[2,3]},"west":{"uv":[62,25],"uv_size":[2,3]},"up":{"uv":[61,62],"uv_size":[-2,-2]},"down":{"uv":[40,61],"uv_size":[-2,2]}}},{"origin":[-0.5,16.5,-2.5],"size":[1,2,1],"uv":{"north":{"uv":[63,49],"uv_size":[1,2]},"east":{"uv":[53,65],"uv_size":[1,2]},"south":{"uv":[54,69],"uv_size":[1,2]},"west":{"uv":[72,6],"uv_size":[1,2]},"up":{"uv":[38,57],"uv_size":[-1,-1]},"down":{"uv":[58,22],"uv_size":[-1,1]}}},{"origin":[-1,18.5,-3],"size":[2,2,2],"uv":{"north":{"uv":[76,35],"uv_size":[2,2]},"east":{"uv":[86,51],"uv_size":[2,2]},"south":{"uv":[87,6],"uv_size":[2,2]},"west":{"uv":[88,51],"uv_size":[2,2]},"up":{"uv":[92,53],"uv_size":[-2,-2]},"down":{"uv":[17,91],"uv_size":[-2,2]}}},{"origin":[-1,18.5,-3],"size":[2,2,2],"inflate":0.25,"uv":{"north":{"uv":[88,91],"uv_size":[2,2]},"east":{"uv":[91,89],"uv_size":[2,2]},"south":{"uv":[90,91],"uv_size":[2,2]},"west":{"uv":[6,92],"uv_size":[2,2]},"up":{"uv":[13,94],"uv_size":[-2,-2]},"down":{"uv":[19,92],"uv_size":[-2,2]}}}]},{"name":"Spiky_Things","pivot":[0,6.5,-2],"parent":"StaffTop","cubes":[{"origin":[1.25,7.75,-2.5],"size":[1,1,1],"uv":{"north":{"uv":[43,16],"uv_size":[1,1]},"east":{"uv":[31,43],"uv_size":[1,1]},"south":{"uv":[32,43],"uv_size":[1,1]},"west":{"uv":[33,43],"uv_size":[1,1]},"up":{"uv":[7,45],"uv_size":[-1,-1]},"down":{"uv":[45,16],"uv_size":[-1,1]}}},{"origin":[-2.25,7.75,-2.5],"size":[1,1,1],"uv":{"north":{"uv":[25,44],"uv_size":[1,1]},"east":{"uv":[26,44],"uv_size":[1,1]},"south":{"uv":[27,44],"uv_size":[1,1]},"west":{"uv":[41,44],"uv_size":[1,1]},"up":{"uv":[43,45],"uv_size":[-1,-1]},"down":{"uv":[46,5],"uv_size":[-1,1]}}},{"origin":[-3.25,9,-2.5],"size":[1,1,1],"uv":{"north":{"uv":[45,24],"uv_size":[1,1]},"east":{"uv":[30,45],"uv_size":[1,1]},"south":{"uv":[46,5],"uv_size":[1,1]},"west":{"uv":[46,24],"uv_size":[1,1]},"up":{"uv":[51,32],"uv_size":[-1,-1]},"down":{"uv":[52,31],"uv_size":[-1,1]}}},{"origin":[-3.25,11.5,-2.5],"size":[1,1,1],"uv":{"north":{"uv":[52,31],"uv_size":[1,1]},"east":{"uv":[45,52],"uv_size":[1,1]},"south":{"uv":[46,52],"uv_size":[1,1]},"west":{"uv":[47,52],"uv_size":[1,1]},"up":{"uv":[49,53],"uv_size":[-1,-1]},"down":{"uv":[50,52],"uv_size":[-1,1]}}},{"origin":[-2.25,12.75,-2.5],"size":[1,2,1],"uv":{"north":{"uv":[21,42],"uv_size":[1,2]},"east":{"uv":[36,44],"uv_size":[1,2]},"south":{"uv":[54,20],"uv_size":[1,2]},"west":{"uv":[55,34],"uv_size":[1,2]},"up":{"uv":[51,53],"uv_size":[-1,-1]},"down":{"uv":[52,52],"uv_size":[-1,1]}}},{"origin":[1.25,12.75,-2.5],"size":[1,2,1],"uv":{"north":{"uv":[59,47],"uv_size":[1,2]},"east":{"uv":[60,16],"uv_size":[1,2]},"south":{"uv":[60,22],"uv_size":[1,2]},"west":{"uv":[28,60],"uv_size":[1,2]},"up":{"uv":[53,53],"uv_size":[-1,-1]},"down":{"uv":[54,3],"uv_size":[-1,1]}}}]},{"name":"Wires","pivot":[0,6.5,-2],"parent":"StaffTop","cubes":[{"origin":[0,13.5,-3.25],"size":[0,3,1],"uv":{"north":{"uv":[0,0],"uv_size":[0,3]},"east":{"uv":[29,60],"uv_size":[1,3]},"south":{"uv":[0,0],"uv_size":[0,3]},"west":{"uv":[61,13],"uv_size":[1,3]},"up":{"uv":[0,1],"uv_size":[0,-1]},"down":{"uv":[0,0],"uv_size":[0,1]}}}]},{"name":"WhiteWire","pivot":[0.5,16.5,-3.25],"parent":"Wires","rotation":[0,0,-27.5],"cubes":[{"origin":[0.5,14.5,-3.25],"size":[0,2,1],"uv":{"north":{"uv":[0,0],"uv_size":[0,2]},"east":{"uv":[61,16],"uv_size":[1,2]},"south":{"uv":[0,0],"uv_size":[0,2]},"west":{"uv":[58,61],"uv_size":[1,2]},"up":{"uv":[0,1],"uv_size":[0,-1]},"down":{"uv":[0,0],"uv_size":[0,1]}}},{"origin":[0.5,13.5,-3.25],"size":[0,1,1],"pivot":[0.5,14.5,-3.25],"rotation":[0,0,60],"uv":{"north":{"uv":[0,0],"uv_size":[0,1]},"east":{"uv":[54,3],"uv_size":[1,1]},"south":{"uv":[0,0],"uv_size":[0,1]},"west":{"uv":[56,22],"uv_size":[1,1]},"up":{"uv":[0,1],"uv_size":[0,-1]},"down":{"uv":[0,0],"uv_size":[0,1]}}}]},{"name":"RedWire","pivot":[-0.5,16.5,-3.25],"parent":"Wires","rotation":[0,0,27.5],"cubes":[{"origin":[-0.5,14.5,-3.25],"size":[0,2,1],"uv":{"north":{"uv":[0,0],"uv_size":[0,2]},"east":{"uv":[62,2],"uv_size":[1,2]},"south":{"uv":[0,0],"uv_size":[0,2]},"west":{"uv":[62,49],"uv_size":[1,2]},"up":{"uv":[0,1],"uv_size":[0,-1]},"down":{"uv":[0,0],"uv_size":[0,1]}}},{"origin":[-0.5,13.5,-3.25],"size":[0,1,1],"pivot":[-0.5,14.5,-3.25],"rotation":[0,0,-60],"uv":{"north":{"uv":[0,0],"uv_size":[0,1]},"east":{"uv":[32,56],"uv_size":[1,1]},"south":{"uv":[0,0],"uv_size":[0,1]},"west":{"uv":[33,56],"uv_size":[1,1]},"up":{"uv":[0,1],"uv_size":[0,-1]},"down":{"uv":[0,0],"uv_size":[0,1]}}}]},{"name":"BlueWireLeft","pivot":[1.75,19.25,-2],"parent":"Wires","rotation":[0,0,26.5],"cubes":[{"origin":[1.75,16.25,-2.5],"size":[0,3,1],"uv":{"north":{"uv":[0,0],"uv_size":[0,3]},"east":{"uv":[81,60],"uv_size":[1,3]},"south":{"uv":[0,0],"uv_size":[0,3]},"west":{"uv":[74,82],"uv_size":[1,3]},"up":{"uv":[0,1],"uv_size":[0,-1]},"down":{"uv":[0,0],"uv_size":[0,1]}}}]},{"name":"BlueWireLeft2","pivot":[-1.75,19.25,-2],"parent":"Wires","rotation":[0,0,-26.5],"cubes":[{"origin":[-1.75,16.25,-2.5],"size":[0,3,1],"uv":{"north":{"uv":[0,0],"uv_size":[0,3]},"east":{"uv":[81,60],"uv_size":[1,3]},"south":{"uv":[0,0],"uv_size":[0,3]},"west":{"uv":[74,82],"uv_size":[1,3]},"up":{"uv":[0,1],"uv_size":[0,-1]},"down":{"uv":[0,0],"uv_size":[0,1]}}}]},{"name":"Bar1","pivot":[-3.75,17,-2],"parent":"StaffTop","cubes":[{"origin":[-3,16.75,-2.5],"size":[6,0,1],"uv":{"north":{"uv":[0,0],"uv_size":[6,0]},"east":{"uv":[0,0],"uv_size":[1,0]},"south":{"uv":[0,0],"uv_size":[6,0]},"west":{"uv":[0,0],"uv_size":[1,0]},"up":{"uv":[44,93],"uv_size":[-6,-1]},"down":{"uv":[98,51],"uv_size":[-6,1]}}},{"origin":[1.75,17,-2.5],"size":[1,0,1],"uv":{"north":{"uv":[0,0],"uv_size":[1,0]},"east":{"uv":[0,0],"uv_size":[1,0]},"south":{"uv":[0,0],"uv_size":[1,0]},"west":{"uv":[0,0],"uv_size":[1,0]},"up":{"uv":[35,57],"uv_size":[-1,-1]},"down":{"uv":[36,56],"uv_size":[-1,1]}}},{"origin":[-2.75,17,-2.5],"size":[1,0,1],"uv":{"north":{"uv":[0,0],"uv_size":[1,0]},"east":{"uv":[0,0],"uv_size":[1,0]},"south":{"uv":[0,0],"uv_size":[1,0]},"west":{"uv":[0,0],"uv_size":[1,0]},"up":{"uv":[57,36],"uv_size":[-1,-1]},"down":{"uv":[37,56],"uv_size":[-1,1]}}}]},{"name":"Bar2","pivot":[-3.75,19.25,-2],"parent":"StaffTop","cubes":[{"origin":[-2.5,19,-2.5],"size":[5,0,1],"uv":{"north":{"uv":[0,0],"uv_size":[6,0]},"east":{"uv":[0,0],"uv_size":[1,0]},"south":{"uv":[0,0],"uv_size":[6,0]},"west":{"uv":[0,0],"uv_size":[1,0]},"up":{"uv":[44,93],"uv_size":[-6,-1]},"down":{"uv":[98,51],"uv_size":[-6,1]}}},{"origin":[1.25,19.25,-2.5],"size":[1,0,1],"uv":{"north":{"uv":[0,0],"uv_size":[1,0]},"east":{"uv":[0,0],"uv_size":[1,0]},"south":{"uv":[0,0],"uv_size":[1,0]},"west":{"uv":[0,0],"uv_size":[1,0]},"up":{"uv":[35,57],"uv_size":[-1,-1]},"down":{"uv":[36,56],"uv_size":[-1,1]}}},{"origin":[-2.25,19.25,-2.5],"size":[1,0,1],"uv":{"north":{"uv":[0,0],"uv_size":[1,0]},"east":{"uv":[0,0],"uv_size":[1,0]},"south":{"uv":[0,0],"uv_size":[1,0]},"west":{"uv":[0,0],"uv_size":[1,0]},"up":{"uv":[57,36],"uv_size":[-1,-1]},"down":{"uv":[37,56],"uv_size":[-1,1]}}}]},{"name":"StaticVert","pivot":[0,10.5,-2],"parent":"ItemStaff"},{"name":"SV1","pivot":[0,10.5,-2],"parent":"StaticVert"},{"name":"SV2","pivot":[0,10.5,-2],"parent":"StaticVert"},{"name":"SV3","pivot":[0,10.5,-2],"parent":"StaticVert","rotation":[0,90,0]},{"name":"SV4","pivot":[0,10.5,-2],"parent":"StaticVert","rotation":[0,90,0]},{"name":"StaticNS","pivot":[0,10.5,-2],"parent":"ItemStaff","rotation":[-90,0,-45]},{"name":"SNS1","pivot":[0,9.5,-2],"parent":"StaticNS"},{"name":"SNS2","pivot":[0,9.5,-2],"parent":"StaticNS"},{"name":"SNS3","pivot":[0,9.5,-2],"parent":"StaticNS","rotation":[0,-90,0]},{"name":"SNS4","pivot":[0,9.5,-2],"parent":"StaticNS","rotation":[0,-90,0]},{"name":"StaticEW","pivot":[0,10.5,-2],"parent":"ItemStaff","rotation":[0,-45,-90]},{"name":"SEW1","pivot":[0,9.5,-2],"parent":"StaticEW"},{"name":"SEW2","pivot":[0,9.5,-2],"parent":"StaticEW"},{"name":"SEW3","pivot":[0,9.5,-2],"parent":"StaticEW","rotation":[0,-90,0]},{"name":"SEW4","pivot":[0,9.5,-2],"parent":"StaticEW","rotation":[0,-90,0]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/goose.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/goose.anim.json new file mode 100644 index 0000000..209dbb9 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/goose.anim.json @@ -0,0 +1 @@ +{"autoplay":[],"clips":{"idling":{"loop":"loop","length":2,"bones":{"gorso":{"rotation":[[0,0,0,0],[1,3,0,0],[2,0,0,0]]},"gneck1":{"rotation":[[0,0,0,0],[1,-2,0,0],[2,0,0,0]]},"gneck2":{"rotation":[[0,0,0,0],[1.125,-2,0,0],[2,0,0,0]]}}},"walking":{"loop":"loop","length":0.83333,"bones":{"root":{"rotation":[[0,-15.44441,9.6458,-2.65048],[0.25,-15.44441,-9.6458,2.65048],[0.83333,-15.44441,9.6458,-2.65048]],"position":[[0,0,-1,0]]},"chknthighright":{"rotation":[[0,-37.73802,5.94383,-4.58217],[0.125,-67.32542,6.92618,2.88419],[0.25,25.56145,27.51235,12.45891],[0.375,46.6167,21.63168,21.30838],[0.5,20.00533,28.48042,9.8491],[0.83333,-37.73802,5.94383,-4.58217]]},"chknlegright":{"rotation":[[0,40,0,0],[0.125,117.5,0,0],[0.25,82.5,0,0],[0.375,22.5,0,0],[0.5,17.5,0,0],[0.66667,18.75,0,0],[0.83333,40,0,0]],"position":[[0,0,0,0],[0.125,0,-1,0],[0.25,0,0,0]]},"chknfootright":{"rotation":[[0,-15,0,0],[0.125,-110,0,0],[0.375,-52.5,0,0],[0.5,-25,0,0],[0.66667,2.5,0,0],[0.83333,-15,0,0]]},"chknthighleft":{"rotation":[[0,46.6167,-21.63168,-21.30838],[0.125,20.00533,-28.48042,-9.8491],[0.375,-37.73802,-5.94383,4.58217],[0.5,-67.32542,-6.92618,-2.88419],[0.66667,25.56145,-27.51235,-12.45891],[0.83333,46.6167,-21.63168,-21.30838]]},"chknlegleft":{"rotation":[[0,22.5,0,0],[0.125,17.5,0,0],[0.25,18.75,0,0],[0.375,40,0,0],[0.5,117.5,0,0],[0.66667,82.5,0,0],[0.83333,22.5,0,0]],"position":[[0.375,0,0,0],[0.5,0,-1,0],[0.66667,0,0,0]]},"chknfootleft":{"rotation":[[0,-52.5,0,0],[0.25,2.5,0,0],[0.375,-15,0,0],[0.5,-110,0,0],[0.83333,-52.5,0,0]]},"gneck1":{"rotation":[[0,-15.44441,-9.6458,2.65048],[0.25,-15.44441,9.6458,-2.65048],[0.83333,-15.44441,-9.6458,2.65048]]},"gneck2":{"rotation":[[0,29.90672,2.47615,-4.29558],[0.25,29.90672,-2.47615,4.29558],[0.83333,29.90672,2.47615,-4.29558]]},"head":{"rotation":[[0,0,0,3],[0.25,0,0,-3],[0.83333,0,0,3]],"position":[[0,-0.25,0,0],[0.25,0.25,0,0],[0.83333,-0.25,0,0]]}}},"walkingback":{"loop":"loop","length":0.83333,"bones":{"root":{"rotation":[[0,-15.44441,9.6458,-2.65048],[0.58333,-15.44441,-9.6458,2.65048],[0.83333,-15.44441,9.6458,-2.65048]],"position":[[0,0,-1,0]]},"chknthighright":{"rotation":[[0,-37.73802,5.94383,-4.58217],[0.33333,20.00533,28.48042,9.8491],[0.45833,46.6167,21.63168,21.30838],[0.58333,25.56145,27.51235,12.45891],[0.70833,-67.32542,6.92618,2.88419],[0.83333,-37.73802,5.94383,-4.58217]]},"chknlegright":{"rotation":[[0,40,0,0],[0.16667,18.75,0,0],[0.33333,17.5,0,0],[0.45833,22.5,0,0],[0.58333,82.5,0,0],[0.70833,117.5,0,0],[0.83333,40,0,0]],"position":[[0.58333,0,0,0],[0.70833,0,-1,0],[0.83333,0,0,0]]},"chknfootright":{"rotation":[[0,-15,0,0],[0.16667,2.5,0,0],[0.33333,-25,0,0],[0.45833,-52.5,0,0],[0.70833,-110,0,0],[0.83333,-15,0,0]]},"chknthighleft":{"rotation":[[0,46.6167,-21.63168,-21.30838],[0.16667,25.56145,-27.51235,-12.45891],[0.33333,-67.32542,-6.92618,-2.88419],[0.45833,-37.73802,-5.94383,4.58217],[0.70833,20.00533,-28.48042,-9.8491],[0.83333,46.6167,-21.63168,-21.30838]]},"chknlegleft":{"rotation":[[0,22.5,0,0],[0.16667,82.5,0,0],[0.33333,117.5,0,0],[0.45833,40,0,0],[0.58333,18.75,0,0],[0.70833,17.5,0,0],[0.83333,22.5,0,0]],"position":[[0.16667,0,0,0],[0.33333,0,-1,0],[0.45833,0,0,0]]},"chknfootleft":{"rotation":[[0,-52.5,0,0],[0.33333,-110,0,0],[0.45833,-15,0,0],[0.58333,2.5,0,0],[0.83333,-52.5,0,0]]},"gneck1":{"rotation":[[0,-5.44441,-9.6458,2.65048],[0.58333,-2.94441,9.6458,-2.65048],[0.83333,-5.44441,-9.6458,2.65048]]},"gneck2":{"rotation":[[0,-2.59328,2.47615,-4.29558],[0.58333,-2.59328,-2.47615,4.29558],[0.83333,-2.59328,2.47615,-4.29558]]},"head":{"rotation":[[0,0,0,3],[0.58333,0,0,-3],[0.83333,0,0,3]],"position":[[0,-0.25,0,0],[0.58333,0.25,0,0],[0.83333,-0.25,0,0]]}}},"jumpingup":{"loop":"loop","length":0,"bones":{"chknthighright":{"rotation":[[0,20,0,0]]},"chknlegright":{"rotation":[[0,37.5,0,0]]},"chknfootright":{"rotation":[[0,-37.5,0,0]]},"chknthighleft":{"rotation":[[0,20,0,0]]},"chknlegleft":{"rotation":[[0,37.5,0,0]]},"chknfootleft":{"rotation":[[0,-37.5,0,0]]},"gneck1":{"rotation":[[0,-10,0,0]]},"gneck2":{"rotation":[[0,-12.5,0,0]]}}},"jumpingdown":{"loop":"loop","length":0,"bones":{"chknthighright":{"rotation":[[0,-42.5,0,0]]},"chknlegright":{"rotation":[[0,37.5,0,0]]},"chknfootright":{"rotation":[[0,-47.5,0,0]]},"chknthighleft":{"rotation":[[0,-42.5,0,0]]},"chknlegleft":{"rotation":[[0,37.5,0,0]]},"chknfootleft":{"rotation":[[0,-47.5,0,0]]},"gneck1":{"rotation":[[0,-10,0,0]]},"gneck2":{"rotation":[[0,-12.5,0,0]]},"head":{"rotation":[[0,30,0,0]]}}},"falling":{"loop":"loop","length":0,"bones":{"root":{"rotation":[[0,-20,0,0]]},"chknthighright":{"rotation":[[0,20,0,0]]},"chknlegright":{"rotation":[[0,25,0,0]]},"chknfootright":{"rotation":[[0,-50,0,0]]},"chknthighleft":{"rotation":[[0,20,0,0]]},"chknlegleft":{"rotation":[[0,25,0,0]]},"chknfootleft":{"rotation":[[0,-50,0,0]]},"head":{"rotation":[[0,-27.5,0,0]]},"rightwing":{"position":[[0,-4,0,0]],"scale":[[0,0.1,1,0.3]]},"leftwing":{"position":[[0,4,0,0]],"scale":[[0,0.1,1,0.3]]}}},"sprinting":{"loop":"loop","length":0.83333,"bones":{"root":{"rotation":[[0,-15.44441,9.6458,-2.65048],[0.25,-15.44441,-9.6458,2.65048],[0.83333,-15.44441,9.6458,-2.65048]],"position":[[0,0,-1,0]]},"chknthighright":{"rotation":[[0,-74.27,6.27,-2.09],[0.08333,-67.32542,6.92618,2.88419],[0.25,43.06145,27.51235,12.45891],[0.41667,71.6167,21.63168,21.30838],[0.54167,20.00533,28.48042,9.8491],[0.66667,-26.36634,17.21213,2.63346],[0.79167,-77.73802,5.94383,-4.58217],[0.83333,-74.27,6.27,-2.09]]},"chknlegright":{"rotation":[[0,87.5,0,0],[0.08333,117.5,0,0],[0.25,82.5,0,0],[0.41667,22.5,0,0],[0.54167,17.5,0,0],[0.66667,18.75,0,0],[0.79167,72.5,0,0],[0.83333,87.5,0,0]],"position":[[0,0,-0.33,0],[0.08333,0,-1,0],[0.25,0,0,0],[0.79167,0,0,0],[0.83333,0,-0.33,0]]},"chknfootright":{"rotation":[[0,-63.33,0,0],[0.08333,-110,0,0],[0.25,-158.75,0,0],[0.41667,-67.5,0,0],[0.54167,-25,0,0],[0.66667,7.5,0,0],[0.79167,-40,0,0],[0.83333,-63.33,0,0]]},"chknthighleft":{"rotation":[[0,71.6167,-21.63168,-21.30838],[0.125,20.00533,-28.48042,-9.8491],[0.25,-26.36634,-17.21213,-2.63346],[0.375,-77.73802,-5.94383,4.58217],[0.5,-67.32542,-6.92618,-2.88419],[0.66667,43.06145,-27.51235,-12.45891],[0.83333,71.6167,-21.63168,-21.30838]]},"chknlegleft":{"rotation":[[0,22.5,0,0],[0.125,17.5,0,0],[0.25,18.75,0,0],[0.375,72.5,0,0],[0.5,117.5,0,0],[0.66667,82.5,0,0],[0.83333,22.5,0,0]],"position":[[0.375,0,0,0],[0.5,0,-1,0],[0.66667,0,0,0]]},"chknfootleft":{"rotation":[[0,-67.5,0,0],[0.125,-25,0,0],[0.25,7.5,0,0],[0.375,-40,0,0],[0.5,-110,0,0],[0.66667,-158.75,0,0],[0.83333,-67.5,0,0]]},"gneck1":{"rotation":[[0,-42.94441,-9.6458,2.65048],[0.25,-50.44441,9.6458,-2.65048],[0.83333,-42.94441,-9.6458,2.65048]]},"gneck2":{"rotation":[[0,29.90672,2.47615,-4.29558],[0.25,37.40672,-2.47615,4.29558],[0.83333,29.90672,2.47615,-4.29558]]},"head":{"rotation":[[0,30,0,3],[0.25,30,0,-3],[0.83333,30,0,3]],"position":[[0,-0.25,0,0],[0.25,0.25,0,0],[0.83333,-0.25,0,0]]}}},"crouching":{"loop":"loop","length":2,"bones":{"gorso":{"rotation":[[0,-47.5,0,0],[0.66667,-50.5,0,0],[2,-47.5,0,0]],"position":[[0,0,-2,-1]]},"gneck1":{"rotation":[[0,-72.5,0,0],[1.29167,-67.5,0,0],[2,-72.5,0,0]]},"gneck2":{"rotation":[[0,40,0,0],[1.29167,39,0,0],[2,40,0,0]]},"head":{"rotation":[[0,80,0,0],[1.29167,72.5,0,0],[2,80,0,0]],"position":[[0,0,3,0]]}}},"crouchwalk":{"loop":"loop","length":1.45833,"bones":{"root":{"rotation":[[0,-15.44441,9.6458,-2.65048],[0.75,-15.44441,-9.6458,2.65048],[1.375,-15.44441,9.6458,-2.65048]],"position":[[0,0,-1,0]]},"chknthighright":{"rotation":[[0,-37.73802,5.94383,-4.58217],[0.25,-67.32542,6.92618,2.88419],[0.5,25.56145,27.51235,12.45891],[0.75,46.6167,21.63168,21.30838],[1,20.00533,28.48042,9.8491],[1.375,-37.73802,5.94383,-4.58217]]},"chknlegright":{"rotation":[[0,40,0,0],[0.25,117.5,0,0],[0.5,82.5,0,0],[0.75,22.5,0,0],[1,17.5,0,0],[1.20833,18.75,0,0],[1.375,40,0,0]],"position":[[0,0,0,0],[0.25,0,-1,0],[0.5,0,0,0]]},"chknfootright":{"rotation":[[0,-15,0,0],[0.25,-110,0,0],[0.75,-52.5,0,0],[1,-25,0,0],[1.20833,2.5,0,0],[1.375,-15,0,0]]},"chknthighleft":{"rotation":[[0,46.6167,-21.63168,-21.30838],[0.25,20.00533,-28.48042,-9.8491],[0.75,-37.73802,-5.94383,4.58217],[1,-67.32542,-6.92618,-2.88419],[1.20833,25.56145,-27.51235,-12.45891],[1.45833,46.6167,-21.63168,-21.30838]]},"chknlegleft":{"rotation":[[0,22.5,0,0],[0.25,17.5,0,0],[0.5,18.75,0,0],[0.75,40,0,0],[1,117.5,0,0],[1.20833,82.5,0,0],[1.45833,22.5,0,0]],"position":[[0.75,0,0,0],[1,0,-1,0],[1.20833,0,0,0]]},"chknfootleft":{"rotation":[[0,-52.5,0,0],[0.5,2.5,0,0],[0.75,-15,0,0],[1,-110,0,0],[1.45833,-52.5,0,0]]},"gneck1":{"rotation":[[0,-61.93319,-11.06861,-5.84485],[0.75,-61.93319,11.06861,5.84485],[1.375,-61.93319,-11.06861,-5.84485]]},"gneck2":{"rotation":[[0,39.89247,-3.21154,3.83424],[0.75,39.89247,3.21154,-3.83424],[1.375,39.89247,-3.21154,3.83424]]},"head":{"rotation":[[0,80,0,0]],"position":[[0,-0.25,3,0],[0.75,0.25,3,0],[1.375,-0.25,3,0]]},"gorso":{"rotation":[[0,-47.5,0,0]],"position":[[0,0,-2,-1]]}}},"crouchwalkback":{"loop":"loop","length":1.45833,"bones":{"root":{"rotation":[[0.08333,-15.44441,9.6458,-2.65048],[0.70833,-15.44441,-9.6458,2.65048],[1.45833,-15.44441,9.6458,-2.65048]],"position":[[0,0,-1,0]]},"chknthighright":{"rotation":[[0.08333,-37.73802,5.94383,-4.58217],[0.45833,20.00533,28.48042,9.8491],[0.70833,46.6167,21.63168,21.30838],[0.95833,25.56145,27.51235,12.45891],[1.20833,-67.32542,6.92618,2.88419],[1.45833,-37.73802,5.94383,-4.58217]]},"chknlegright":{"rotation":[[0.08333,40,0,0],[0.25,18.75,0,0],[0.45833,17.5,0,0],[0.70833,22.5,0,0],[0.95833,82.5,0,0],[1.20833,117.5,0,0],[1.45833,40,0,0]],"position":[[0.95833,0,0,0],[1.20833,0,-1,0],[1.45833,0,0,0]]},"chknfootright":{"rotation":[[0.08333,-15,0,0],[0.25,2.5,0,0],[0.45833,-25,0,0],[0.70833,-52.5,0,0],[1.20833,-110,0,0],[1.45833,-15,0,0]]},"chknthighleft":{"rotation":[[0,46.6167,-21.63168,-21.30838],[0.25,25.56145,-27.51235,-12.45891],[0.45833,-67.32542,-6.92618,-2.88419],[0.70833,-37.73802,-5.94383,4.58217],[1.20833,20.00533,-28.48042,-9.8491],[1.45833,46.6167,-21.63168,-21.30838]]},"chknlegleft":{"rotation":[[0,22.5,0,0],[0.25,82.5,0,0],[0.45833,117.5,0,0],[0.70833,40,0,0],[0.95833,18.75,0,0],[1.20833,17.5,0,0],[1.45833,22.5,0,0]],"position":[[0.25,0,0,0],[0.45833,0,-1,0],[0.70833,0,0,0]]},"chknfootleft":{"rotation":[[0,-52.5,0,0],[0.45833,-110,0,0],[0.70833,-15,0,0],[0.95833,2.5,0,0],[1.45833,-52.5,0,0]]},"gneck1":{"rotation":[[0.08333,-61.93319,-11.06861,-5.84485],[0.70833,-61.93319,11.06861,5.84485],[1.45833,-61.93319,-11.06861,-5.84485]]},"gneck2":{"rotation":[[0.08333,39.89247,-3.21154,3.83424],[0.70833,39.89247,3.21154,-3.83424],[1.45833,39.89247,-3.21154,3.83424]]},"head":{"rotation":[[0,80,0,0]],"position":[[0.08333,-0.25,3,0],[0.70833,0.25,3,0],[1.45833,-0.25,3,0]]},"gorso":{"rotation":[[0,-47.5,0,0]],"position":[[0,0,-2,-1]]}}},"crouchjumpup":{"loop":"loop","length":0,"bones":{"chknthighright":{"rotation":[[0,15,0,0]]},"chknlegright":{"rotation":[[0,15,0,0]]},"chknfootright":{"rotation":[[0,-15,0,0]]},"chknthighleft":{"rotation":[[0,15,0,0]]},"chknlegleft":{"rotation":[[0,15,0,0]]},"chknfootleft":{"rotation":[[0,-15,0,0]]},"gorso":{"rotation":[[0,-35,0,0]],"position":[[0,0,-2,-1]]},"gneck1":{"rotation":[[0,-72.5,0,0]]},"gneck2":{"rotation":[[0,30,0,0]]},"head":{"rotation":[[0,80,0,0]]}}},"crouchjumpdown":{"loop":"loop","length":0,"bones":{"chknthighright":{"rotation":[[0,-25,0,0]]},"chknlegright":{"rotation":[[0,37.5,0,0]]},"chknfootright":{"rotation":[[0,-45,0,0]]},"chknthighleft":{"rotation":[[0,-25,0,0]]},"chknlegleft":{"rotation":[[0,37.5,0,0]]},"chknfootleft":{"rotation":[[0,-45,0,0]]},"gorso":{"rotation":[[0,-35,0,0]],"position":[[0,0,-2,-1]]},"gneck1":{"rotation":[[0,-72.5,0,0]]},"gneck2":{"rotation":[[0,20,0,0]]},"head":{"rotation":[[0,75,0,0]]}}},"elytra":{"loop":"loop","length":1,"bones":{"root":{"rotation":[[0,90,0,0]],"position":[[0,0,-1,0],[0.5,0,2,0],[1,0,-1,0]]},"chknthighright":{"rotation":[[0,-85,0,0],[0.5,-90,0,0],[1,-85,0,0]],"position":[[0,0,1,2]]},"chknlegright":{"rotation":[[0,27.5,0,0],[0.5,15,0,0],[1,27.5,0,0]]},"chknfootright":{"rotation":[[0,-107.5,0,0],[0.5,-95,0,0],[0.70833,-111.67,0,0],[1,-107.5,0,0]]},"chknthighleft":{"rotation":[[0,-85,0,0],[0.5,-90,0,0],[1,-85,0,0]],"position":[[0,0,1,2]]},"chknlegleft":{"rotation":[[0,27.5,0,0],[0.5,15,0,0],[1,27.5,0,0]]},"chknfootleft":{"rotation":[[0,-107.5,0,0],[0.5,-95,0,0],[0.70833,-111.67,0,0],[1,-107.5,0,0]]},"gorso":{"rotation":[[0,-20,0,0]]},"waggler1":{"rotation":[[0,21,0,0]]},"waggler2":{"rotation":[[0,9,0,0]]},"gneck1":{"rotation":[[0,-95,0,0],[0.5,-105,0,0],[1,-95,0,0]]},"gneck2":{"rotation":[[0,25,0,0],[0.5,35,0,0],[1,25,0,0]]},"head":{"rotation":[[0,90,0,0]],"position":[[0,0,0,-1]]},"rightwing":{"rotation":[[0,0,0,-67.5],[0.5,0,0,70],[0.75,0,0,7.5],[1,0,0,-67.5]]},"rightwing2":{"rotation":[[0.5,0,0,-27.5],[0.75,0,0,45],[1,0,0,-27.5]]},"leftwing":{"rotation":[[0,0,0,67.5],[0.5,0,0,-70],[0.75,0,0,-7.5],[1,0,0,67.5]]},"leftwing2":{"rotation":[[0.5,0,0,27.5],[0.75,0,0,-45],[1,0,0,27.5]]}}},"elytradown":{"loop":"loop","length":1,"bones":{"chknthighright":{"rotation":[[0,-85,0,0],[0.5,-90,0,0],[1,-85,0,0]],"position":[[0,0,1,2]]},"chknlegright":{"rotation":[[0,27.5,0,0],[0.5,15,0,0],[1,27.5,0,0]]},"chknfootright":{"rotation":[[0,-107.5,0,0],[0.5,-95,0,0],[0.70833,-111.67,0,0],[1,-107.5,0,0]]},"chknthighleft":{"rotation":[[0,-85,0,0],[0.5,-90,0,0],[1,-85,0,0]],"position":[[0,0,1,2]]},"chknlegleft":{"rotation":[[0,27.5,0,0],[0.5,15,0,0],[1,27.5,0,0]]},"chknfootleft":{"rotation":[[0,-107.5,0,0],[0.5,-95,0,0],[0.70833,-111.67,0,0],[1,-107.5,0,0]]},"gorso":{"rotation":[[0,-20,0,0]]},"waggler1":{"rotation":[[0,21,0,0]]},"waggler2":{"rotation":[[0,9,0,0]]},"gneck1":{"rotation":[[0,-95,0,0],[0.5,-105,0,0],[1,-95,0,0]]},"gneck2":{"rotation":[[0,25,0,0],[0.5,35,0,0],[1,25,0,0]]},"head":{"rotation":[[0,90,0,0]],"position":[[0,0,0,-1]]},"rightwing":{"rotation":[[0,22.5,0,0],[0.45833,22.5,0,-2],[1,22.5,0,0]]},"rightwing2":{"rotation":[[0,0,0,0],[0.45833,0,0,4],[1,0,0,0]]},"leftwing":{"rotation":[[0,22.5,0,0],[0.45833,22.5,0,2],[1,22.5,0,0]]},"leftwing2":{"rotation":[[0,0,0,0],[0.45833,0,0,-4],[1,0,0,0]]},"rightwingfeathers":{"rotation":[[0,0,0,0],[0.45833,7.5,0,0],[1,0,0,0]]},"leftwingfeathers":{"rotation":[[0,0,0,0],[0.45833,7.5,0,0],[1,0,0,0]]},"root":{"rotation":[[0,90,0,0]]}}},"sleeping":{"loop":"loop","length":2,"bones":{"root":{"rotation":[[0,-25,0,0]],"position":[[0,0,-8,0]]},"chknthighright":{"position":[[0,0,2,0]]},"chknlegright":{"position":[[0,-1,5,0]]},"chknfootright":{"rotation":[[0,26.39218,18.05776,8.74472]],"position":[[0,0,-1,0]]},"chknthighleft":{"position":[[0,0,2,0]]},"chknlegleft":{"position":[[0,1,5,0]]},"chknfootleft":{"rotation":[[0,26.39218,-18.05776,-8.74472]],"position":[[0,0,-1,0]]},"gorso":{"rotation":[[0,0,0,0],[1,-1,0,0],[2,0,0,0]]},"gneck1":{"rotation":[[0,-24.60273,53.72486,-10.01044]],"position":[[0,0,-3,-0.5]]},"gneck2":{"rotation":[[0,-83.81033,53.11758,-30.4744]]},"head":{"rotation":[[0,-25,0,0],[1,-27,0,0],[2,-25,0,0]],"position":[[0,0,-1,-0.9]]}}},"swimming":{"loop":"loop","length":1,"bones":{"chknthighright":{"rotation":[[0,-127.5,0,0],[0.5,-52.5,0,0],[1,-127.5,0,0]],"position":[[0,0,1,2]]},"chknlegright":{"rotation":[[0,17.5,0,0],[0.5,57.5,0,0],[1,17.5,0,0]]},"chknfootright":{"rotation":[[0,-125,0,0],[0.5,-57.5,0,0],[1,-125,0,0]]},"chknthighleft":{"rotation":[[0,-52.5,0,0],[0.5,-127.5,0,0],[1,-52.5,0,0]],"position":[[0,0,1,2]]},"chknlegleft":{"rotation":[[0,57.5,0,0],[0.5,17.5,0,0],[1,57.5,0,0]]},"chknfootleft":{"rotation":[[0,-57.5,0,0],[0.5,-125,0,0],[1,-57.5,0,0]]},"gorso":{"rotation":[[0,-20,0,0],[0.5,-23,0,0],[1,-20,0,0]]},"waggler1":{"rotation":[[0,21,0,0]]},"waggler2":{"rotation":[[0,9,0,0]]},"gneck1":{"rotation":[[0,-95,0,0],[0.75,-100,0,0],[1,-95,0,0]]},"gneck2":{"rotation":[[0,25,0,0],[0.75,32.5,0,0],[1,25,0,0]]},"head":{"rotation":[[0.41667,90,0,0],[0.83333,95,0,0],[1,90,0,0]],"position":[[0,0,0,-1]]}}},"sitting":{"loop":"loop","length":0,"bones":{"root":{"rotation":[[0,-25,0,0]],"position":[[0,0,-8,0]]},"chknthighright":{"position":[[0,0,2,0]]},"chknlegright":{"position":[[0,-1,5,0]]},"chknfootright":{"rotation":[[0,26.39218,18.05776,8.74472]],"position":[[0,0,-1,0]]},"chknthighleft":{"position":[[0,0,2,0]]},"chknlegleft":{"position":[[0,1,5,0]]},"chknfootleft":{"rotation":[[0,26.39218,-18.05776,-8.74472]],"position":[[0,0,-1,0]]},"gneck1":{"position":[[0,0,-1,-0.75]]},"gneck2":{"rotation":[[0,35,0,0]]},"head":{"rotation":[[0,-12.5,0,0]]}}},"sitpass":{"loop":"loop","length":0,"bones":{"root":{"rotation":[[0,-25,0,0]],"position":[[0,0,-8,0]]},"chknthighright":{"position":[[0,0,2,0]]},"chknlegright":{"position":[[0,-1,5,0]]},"chknfootright":{"rotation":[[0,26.39218,18.05776,8.74472]],"position":[[0,0,-1,0]]},"chknthighleft":{"position":[[0,0,2,0]]},"chknlegleft":{"position":[[0,1,5,0]]},"chknfootleft":{"rotation":[[0,26.39218,-18.05776,-8.74472]],"position":[[0,0,-1,0]]},"gneck1":{"position":[[0,0,-1,-0.75]]},"gneck2":{"rotation":[[0,35,0,0]]},"head":{"rotation":[[0,-12.5,0,0]]}}},"water":{"loop":"loop","length":1,"bones":{"chknthighright":{"rotation":[[0,12.5,0,0],[0.25,-45,0,0],[0.5,-72.5,0,0],[0.75,-25,0,0],[1,12.5,0,0]]},"chknlegright":{"rotation":[[0,35,0,0],[0.25,42.5,0,0],[0.5,42.5,0,0],[0.75,66.25,0,0],[1,35,0,0]]},"chknfootright":{"rotation":[[0,-32.5,0,0],[0.5,-65,0,0],[0.75,-97.5,0,0],[1,-32.5,0,0]]},"chknthighleft":{"rotation":[[0,-72.5,0,0],[0.25,-25,0,0],[0.5,12.5,0,0],[0.75,-45,0,0],[1,-72.5,0,0]]},"chknlegleft":{"rotation":[[0,42.5,0,0],[0.25,66.25,0,0],[0.5,35,0,0],[0.75,42.5,0,0]]},"chknfootleft":{"rotation":[[0,-65,0,0],[0.25,-97.5,0,0],[0.5,-32.5,0,0],[1,-65,0,0]]},"gorso":{"rotation":[[0,0,0,0],[0.5,-3,0,0],[1,0,0,0]]},"gneck1":{"rotation":[[0,-32.5,0,0]]},"gneck2":{"rotation":[[0,-22.5,0,0]]},"head":{"rotation":[[0,50,0,0]],"position":[[0,0,0,-1]]},"wings":{"scale":[[0,0.1,1,0.3]]}}},"attackR":{"loop":"once","length":0.5,"bones":{"gneck1":{"rotation":[[0,0,0,0],[0.16667,-87.5,0,0],[0.5,0,0,0]]},"gneck2":{"rotation":[[0,0,0,0],[0.16667,37.5,0,0],[0.5,0,0,0]]},"head":{"rotation":[[0,0,0,0],[0.16667,62.5,0,0],[0.29167,52.5,0,0],[0.375,0,0,0]],"position":[[0,0,0,0],[0.16667,0,0,-1],[0.5,0,0,0]]},"jaw":{"rotation":[[0,0,0,0],[0.16667,-40,0,0],[0.375,0,0,0]]}}},"attackL":{"loop":"once","length":0.5,"bones":{"gneck1":{"rotation":[[0,0,0,0],[0.16667,-87.5,0,0],[0.5,0,0,0]]},"gneck2":{"rotation":[[0,0,0,0],[0.16667,37.5,0,0],[0.5,0,0,0]]},"head":{"rotation":[[0,0,0,0],[0.16667,62.5,0,0],[0.29167,52.5,0,0],[0.375,0,0,0]],"position":[[0,0,0,0],[0.16667,0,0,-1],[0.5,0,0,0]]},"jaw":{"rotation":[[0,0,0,0],[0.16667,-40,0,0],[0.375,0,0,0]]}}},"mineR":{"loop":"once","length":0.5,"bones":{"gneck1":{"rotation":[[0,0,0,0],[0.16667,-12.5,0,0],[0.5,0,0,0]]},"gneck2":{"rotation":[[0,0,0,0],[0.16667,-10,0,0],[0.33333,-22.5,0,0],[0.5,0,0,0]]},"head":{"rotation":[[0,0,0,0],[0.33333,10,0,0],[0.5,0,0,0]]},"jaw":{"rotation":[[0,0,0,0],[0.16667,-10,0,0],[0.5,0,0,0]]}}},"mineL":{"loop":"once","length":0.5,"bones":{"gneck1":{"rotation":[[0,0,0,0],[0.16667,-12.5,0,0],[0.5,0,0,0]]},"gneck2":{"rotation":[[0,0,0,0],[0.16667,-10,0,0],[0.33333,-22.5,0,0],[0.5,0,0,0]]},"head":{"rotation":[[0,0,0,0],[0.33333,10,0,0],[0.5,0,0,0]]},"jaw":{"rotation":[[0,0,0,0],[0.16667,-10,0,0],[0.5,0,0,0]]}}},"holdR":{"loop":"loop","length":0,"bones":{"head":{"rotation":[[0,5,0,0]]},"jaw":{"rotation":[[0,-10,0,0]]}}},"holdL":{"loop":"loop","length":0,"bones":{"head":{"rotation":[[0,5,0,0]]},"jaw":{"rotation":[[0,-10,0,0]]}}},"eatR":{"loop":"loop","length":0.66667,"bones":{"jaw":{"rotation":[[0,-17.5,0,0],[0.16667,0,0,0],[0.33333,-17.5,0,0],[0.5,0,0,0],[0.66667,-17.5,0,0]]}}},"eatL":{"loop":"loop","length":0.66667,"bones":{"jaw":{"rotation":[[0,-17.5,0,0],[0.16667,0,0,0],[0.33333,-17.5,0,0],[0.5,0,0,0],[0.66667,-17.5,0,0]]}}},"brushR":{"loop":"loop","length":0.83333,"bones":{"gorso":{"rotation":[[0,-30,0,0]],"position":[[0,0,-1,0]]},"gneck1":{"rotation":[[0,-92.5,0,0],[0.20833,-102.5,0,0],[0.41667,-92.5,0,0],[0.625,-102.5,0,0],[0.83333,-92.5,0,0]]},"gneck2":{"rotation":[[0,32.5,0,0],[0.20833,17.5,0,0],[0.41667,32.5,0,0],[0.625,17.5,0,0],[0.83333,32.5,0,0]]},"head":{"rotation":[[0,0,0,0],[0.20833,17.5,0,0],[0.41667,0,0,0],[0.625,17.5,0,0],[0.83333,0,0,0]]}}},"brushL":{"loop":"loop","length":0.83333,"bones":{"gorso":{"rotation":[[0,-30,0,0]],"position":[[0,0,-1,0]]},"gneck1":{"rotation":[[0,-92.5,0,0],[0.20833,-102.5,0,0],[0.41667,-92.5,0,0],[0.625,-102.5,0,0],[0.83333,-92.5,0,0]]},"gneck2":{"rotation":[[0,32.5,0,0],[0.20833,17.5,0,0],[0.41667,32.5,0,0],[0.625,17.5,0,0],[0.83333,32.5,0,0]]},"head":{"rotation":[[0,0,0,0],[0.20833,17.5,0,0],[0.41667,0,0,0],[0.625,17.5,0,0],[0.83333,0,0,0]]}}},"foldwings":{"loop":"loop","length":0,"bones":{"wings":{"scale":[[0,0.1,1,0.3]]}}},"random1":{"loop":"once","length":0.375,"bones":{"waggler1":{"rotation":[[0,0,0,0],[0.08333,-7.5,14,0],[0.29167,0,0,0]]},"waggler2":{"rotation":[[0.08333,-10,0,0],[0.16667,0,10,0],[0.29167,0,0,0],[0.375,-10,0,0]]}}},"random2":{"loop":"once","length":1,"bones":{"waggler1":{"rotation":[[0,0,0,0],[0.125,0,12.5,0],[0.375,0,-12.5,0],[0.625,0,12.5,0],[0.875,0,-12.5,0],[1,0,0,0]]},"waggler2":{"rotation":[[0,0,0,0],[0.16667,0,12.5,0],[0.375,0,-12.5,0],[0.58333,0,-12.5,0],[0.70833,0,15,0],[1,0,0,0]]}}},"Esit":{"loop":"loop","length":0,"bones":{"root":{"rotation":[[0,-25,0,0]],"position":[[0,0,-8,0]]},"chknthighright":{"position":[[0,0,2,0]]},"chknlegright":{"position":[[0,-1,5,0]]},"chknfootright":{"rotation":[[0,26.39218,18.05776,8.74472]],"position":[[0,0,-1,0]]},"chknthighleft":{"position":[[0,0,2,0]]},"chknlegleft":{"position":[[0,1,5,0]]},"chknfootleft":{"rotation":[[0,26.39218,-18.05776,-8.74472]],"position":[[0,0,-1,0]]},"gneck1":{"position":[[0,0,-1,-0.75]]},"gneck2":{"rotation":[[0,35,0,0]]},"head":{"rotation":[[0,-12.5,0,0]]}}},"Esleep":{"loop":"loop","length":2,"bones":{"root":{"rotation":[[0,-25,0,0]],"position":[[0,0,-8,0]]},"chknthighright":{"position":[[0,0,2,0]]},"chknlegright":{"position":[[0,-1,5,0]]},"chknfootright":{"rotation":[[0,26.39218,18.05776,8.74472]],"position":[[0,0,-1,0]]},"chknthighleft":{"position":[[0,0,2,0]]},"chknlegleft":{"position":[[0,1,5,0]]},"chknfootleft":{"rotation":[[0,26.39218,-18.05776,-8.74472]],"position":[[0,0,-1,0]]},"gorso":{"rotation":[[0,0,0,0],[1,-1,0,0],[2,0,0,0]]},"gneck1":{"rotation":[[0,-24.60273,53.72486,-10.01044]],"position":[[0,0,-3,-0.5]]},"gneck2":{"rotation":[[0,-83.81033,53.11758,-30.4744]]},"head":{"rotation":[[0,-25,0,0],[1,-27,0,0],[2,-25,0,0]],"position":[[0,0,-1,-0.9]]}}},"KBhonk":{"loop":"once","length":0.33333,"bones":{"head":{"rotation":[[0.125,0,0,0],[0.20833,5,0,0],[0.33333,0,0,0]]},"jaw":{"rotation":[[0.08333,0,0,0],[0.20833,-35,0,0],[0.33333,0,0,0]]}}},"KBwings":{"loop":"loop","length":0.75,"bones":{"wings":{"position":[[0,0,3,2]]},"rightwing":{"rotation":[[0,47.5,0,0],[0.125,26.744,40.84182,-52.38443],[0.375,45.53367,-16.46362,15.57514],[0.54167,32.3164,-37.35499,43.8362],[0.75,47.5,0,0]]},"rightwingfeathers":{"rotation":[[0,12.5,0,0],[0.29167,-15,0,0],[0.54167,12.5,0,0]]},"rightwing2":{"rotation":[[0.125,0,0,30],[0.29167,0,0,-37.5],[0.54167,0,0,35],[0.75,0,0,30]]},"leftwing":{"rotation":[[0,47.5,0,0],[0.125,26.744,-40.84182,52.38443],[0.375,45.53367,16.46362,-15.57514],[0.54167,32.3164,37.35499,-43.8362],[0.75,47.5,0,0]]},"leftwingfeathers":{"rotation":[[0,12.5,0,0],[0.29167,-15,0,0],[0.54167,12.5,0,0]]},"leftwing2":{"rotation":[[0.125,0,0,-30],[0.29167,0,0,37.5],[0.54167,0,0,-35],[0.75,0,0,-30]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/goose.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/goose.geo.json new file mode 100644 index 0000000..6413a9f --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/goose.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.goose","texture_width":128,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"root","pivot":[0,10,0]},{"name":"chknthighright","pivot":[3.5,9,3.5],"parent":"root","cubes":[{"origin":[1.75,5,2],"size":[3.5,4,3],"uv":{"north":{"uv":[18,53],"uv_size":[3,4]},"east":{"uv":[15,53],"uv_size":[3,4]},"south":{"uv":[24,53],"uv_size":[3,4]},"west":{"uv":[21,53],"uv_size":[3,4]},"up":{"uv":[21,53],"uv_size":[-3,-3]},"down":{"uv":[24,50],"uv_size":[-3,3]}}}]},{"name":"chknlegright","pivot":[3.5,5.5,3.5],"parent":"chknthighright","cubes":[{"origin":[2.75,0.2,2.75],"size":[1.5,6,1.5],"uv":{"north":{"uv":[57,31],"uv_size":[1,6]},"east":{"uv":[56,31],"uv_size":[1,6]},"south":{"uv":[59,31],"uv_size":[1,6]},"west":{"uv":[58,31],"uv_size":[1,6]},"up":{"uv":[58,31],"uv_size":[-1,-1]},"down":{"uv":[59,30],"uv_size":[-1,1]}}}]},{"name":"chknfootright","pivot":[3.5,0.7,3.625],"parent":"chknlegright","cubes":[{"origin":[1.25,0,-1.25],"size":[4.5,1,5.75],"inflate":-0.1,"uv":{"north":{"uv":[43,43],"uv_size":[4,1]},"east":{"uv":[38,43],"uv_size":[5,1]},"south":{"uv":[52,43],"uv_size":[4,1]},"west":{"uv":[47,43],"uv_size":[5,1]},"up":{"uv":[47,43],"uv_size":[-4,-5]},"down":{"uv":[51,38],"uv_size":[-4,5]}}}]},{"name":"chknthighleft","pivot":[-3.5,9,3.5],"parent":"root","cubes":[{"origin":[-5.25,5,2],"size":[3.5,4,3],"uv":{"north":{"uv":[31,56],"uv_size":[3,4]},"east":{"uv":[28,56],"uv_size":[3,4]},"south":{"uv":[37,56],"uv_size":[3,4]},"west":{"uv":[34,56],"uv_size":[3,4]},"up":{"uv":[34,56],"uv_size":[-3,-3]},"down":{"uv":[37,53],"uv_size":[-3,3]}}}]},{"name":"chknlegleft","pivot":[-3.5,5.5,3.5],"parent":"chknthighleft","cubes":[{"origin":[-4.25,0.2,2.75],"size":[1.5,6,1.5],"uv":{"north":{"uv":[57,52],"uv_size":[1,6]},"east":{"uv":[56,52],"uv_size":[1,6]},"south":{"uv":[59,52],"uv_size":[1,6]},"west":{"uv":[58,52],"uv_size":[1,6]},"up":{"uv":[58,52],"uv_size":[-1,-1]},"down":{"uv":[59,51],"uv_size":[-1,1]}}}]},{"name":"chknfootleft","pivot":[-3.5,0.7,3.625],"parent":"chknlegleft","cubes":[{"origin":[-5.75,0,-1.25],"size":[4.5,1,5.75],"inflate":-0.1,"uv":{"north":{"uv":[48,23],"uv_size":[4,1]},"east":{"uv":[43,23],"uv_size":[5,1]},"south":{"uv":[57,23],"uv_size":[4,1]},"west":{"uv":[52,23],"uv_size":[5,1]},"up":{"uv":[52,23],"uv_size":[-4,-5]},"down":{"uv":[56,18],"uv_size":[-4,5]}}}]},{"name":"gorso","pivot":[0,10.89191,1.94174],"parent":"root","cubes":[{"origin":[-4,7,-4],"size":[8,8,9],"pivot":[-2,8,1],"rotation":[-27.5,0,0],"uv":{"north":{"uv":[9,9],"uv_size":[8,8]},"east":{"uv":[0,9],"uv_size":[9,8]},"south":{"uv":[26,9],"uv_size":[8,8]},"west":{"uv":[17,9],"uv_size":[9,8]},"up":{"uv":[17,9],"uv_size":[-8,-9]},"down":{"uv":[25,0],"uv_size":[-8,9]}}}]},{"name":"waggler1","pivot":[0,10.07033,4.67434],"parent":"gorso","cubes":[{"origin":[-2.5,7.54804,4.15301],"size":[5,5,5],"pivot":[0,10.54804,6.15301],"rotation":[2.5,0,0],"uv":{"north":{"uv":[5,43],"uv_size":[5,5]},"east":{"uv":[0,43],"uv_size":[5,5]},"south":{"uv":[15,43],"uv_size":[5,5]},"west":{"uv":[10,43],"uv_size":[5,5]},"up":{"uv":[10,43],"uv_size":[-5,-5]},"down":{"uv":[15,38],"uv_size":[-5,5]}}}]},{"name":"waggler2","pivot":[0,10.94628,9.08279],"parent":"waggler1","cubes":[{"origin":[-1.5,8.04804,8.15301],"size":[3,3,4],"pivot":[0,10.04804,6.15301],"rotation":[20,0,0],"uv":{"north":{"uv":[4,53],"uv_size":[3,3]},"east":{"uv":[0,53],"uv_size":[4,3]},"south":{"uv":[11,53],"uv_size":[3,3]},"west":{"uv":[7,53],"uv_size":[4,3]},"up":{"uv":[7,53],"uv_size":[-3,-4]},"down":{"uv":[10,49],"uv_size":[-3,4]}}}]},{"name":"gneck1","pivot":[0,13.53907,-1.37811],"parent":"gorso","cubes":[{"origin":[-2,11,-4],"size":[4,7,4],"pivot":[-1,11,-0.5],"rotation":[-17.5,0,0],"uv":{"north":{"uv":[25,42],"uv_size":[4,7]},"east":{"uv":[21,42],"uv_size":[4,7]},"south":{"uv":[33,42],"uv_size":[4,7]},"west":{"uv":[29,42],"uv_size":[4,7]},"up":{"uv":[29,42],"uv_size":[-4,-4]},"down":{"uv":[33,38],"uv_size":[-4,4]}}}]},{"name":"gneck2","pivot":[0,17.54458,0.08152],"parent":"gneck1","cubes":[{"origin":[-1.5,17.04458,-1.41848],"size":[3,8,3],"uv":{"north":{"uv":[46,28],"uv_size":[3,8]},"east":{"uv":[43,28],"uv_size":[3,8]},"south":{"uv":[52,28],"uv_size":[3,8]},"west":{"uv":[49,28],"uv_size":[3,8]},"up":{"uv":[49,28],"uv_size":[-3,-3]},"down":{"uv":[52,25],"uv_size":[-3,3]}}}]},{"name":"head","pivot":[0,23.99899,0.8193],"parent":"gneck2","cubes":[{"origin":[-1.5,22.99458,-6.96848],"size":[3,1.3,4.3],"uv":{"north":{"uv":[45,57],"uv_size":[3,1]},"east":{"uv":[41,57],"uv_size":[4,1]},"south":{"uv":[52,57],"uv_size":[3,1]},"west":{"uv":[48,57],"uv_size":[4,1]},"up":{"uv":[48,57],"uv_size":[-3,-4]},"down":{"uv":[51,53],"uv_size":[-3,4]}}},{"origin":[-1.125,24.19458,-6.86848],"size":[2.25,1.3,4.2],"pivot":[-0.625,24.49458,-3.16848],"rotation":[14.5,0,0],"uv":{"north":{"uv":[59,49],"uv_size":[2,1]},"east":{"uv":[55,49],"uv_size":[4,1]},"south":{"uv":[65,49],"uv_size":[2,1]},"west":{"uv":[61,49],"uv_size":[4,1]},"up":{"uv":[61,49],"uv_size":[-2,-4]},"down":{"uv":[63,45],"uv_size":[-2,4]}}},{"origin":[-2,22.04458,-3.16848],"size":[4,4.25,4],"uv":{"north":{"uv":[42,49],"uv_size":[4,4]},"east":{"uv":[38,49],"uv_size":[4,4]},"south":{"uv":[50,49],"uv_size":[4,4]},"west":{"uv":[46,49],"uv_size":[4,4]},"up":{"uv":[46,49],"uv_size":[-4,-4]},"down":{"uv":[50,45],"uv_size":[-4,4]}}}]},{"name":"jaw","pivot":[0,22.59458,-2.41848],"parent":"head","cubes":[{"origin":[-1.5,22.09458,-7.06848],"size":[3,1,4.3],"inflate":-0.1,"uv":{"north":{"uv":[60,29],"uv_size":[3,1]},"east":{"uv":[56,29],"uv_size":[4,1]},"south":{"uv":[67,29],"uv_size":[3,1]},"west":{"uv":[63,29],"uv_size":[4,1]},"up":{"uv":[63,29],"uv_size":[-3,-4]},"down":{"uv":[66,25],"uv_size":[-3,4]}}}]},{"name":"RightItemPivot","pivot":[0,22.29458,-6.16848],"parent":"head"},{"name":"LeftItemPivot","pivot":[0,22.29458,-6.16848],"parent":"head"},{"name":"wings","pivot":[0,14,1],"parent":"gorso"},{"name":"rightwing","pivot":[3.5,13.5,-1],"parent":"wings","cubes":[{"origin":[3,13,-1],"size":[13,1,8],"uv":{"north":{"uv":[8,26],"uv_size":[13,1]},"east":{"uv":[0,26],"uv_size":[8,1]},"south":{"uv":[29,26],"uv_size":[13,1]},"west":{"uv":[21,26],"uv_size":[8,1]},"up":{"uv":[21,26],"uv_size":[-13,-8]},"down":{"uv":[34,18],"uv_size":[-13,8]}}}]},{"name":"rightwingfeathers","pivot":[10,13.5,7],"parent":"rightwing"},{"name":"rightwing2","pivot":[16,13.75,3],"parent":"rightwing","cubes":[{"origin":[16,13,-1],"size":[9,1,7],"uv":{"north":{"uv":[42,7],"uv_size":[9,1]},"east":{"uv":[35,7],"uv_size":[7,1]},"south":{"uv":[58,7],"uv_size":[9,1]},"west":{"uv":[51,7],"uv_size":[7,1]},"up":{"uv":[51,7],"uv_size":[-9,-7]},"down":{"uv":[60,0],"uv_size":[-9,7]}}}]},{"name":"rightwingfeathers2","pivot":[15,13,1],"parent":"rightwing2"},{"name":"leftwing","pivot":[-3.5,13.5,-1],"parent":"wings","cubes":[{"origin":[-16,13,-1],"size":[13,1,8],"uv":{"north":{"uv":[8,36],"uv_size":[13,1]},"east":{"uv":[0,36],"uv_size":[8,1]},"south":{"uv":[29,36],"uv_size":[13,1]},"west":{"uv":[21,36],"uv_size":[8,1]},"up":{"uv":[21,36],"uv_size":[-13,-8]},"down":{"uv":[34,28],"uv_size":[-13,8]}}}]},{"name":"leftwingfeathers","pivot":[-10,13.5,7],"parent":"leftwing"},{"name":"leftwing2","pivot":[-16,13.75,3],"parent":"leftwing","cubes":[{"origin":[-25,13,-1],"size":[9,1,7],"uv":{"north":{"uv":[42,16],"uv_size":[9,1]},"east":{"uv":[35,16],"uv_size":[7,1]},"south":{"uv":[58,16],"uv_size":[9,1]},"west":{"uv":[51,16],"uv_size":[7,1]},"up":{"uv":[51,16],"uv_size":[-9,-7]},"down":{"uv":[60,9],"uv_size":[-9,7]}}}]},{"name":"leftwingfeathers2","pivot":[-15,13,1],"parent":"leftwing2"}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/kaltsit.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/kaltsit.anim.json new file mode 100644 index 0000000..24e733f --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/kaltsit.anim.json @@ -0,0 +1 @@ +{"autoplay":["idleMonsBob"],"clips":{"painting":{"loop":"once","length":0,"bones":{"Head":{"position":[[0,0,4,0]]},"RightArm":{"rotation":[[0,0,0,-67.5]]},"LeftArm":{"rotation":[[0,0,0,67.5]]},"LeftLeg":{"rotation":[[0,0,0,45]]},"RightLeg":{"rotation":[[0,0,0,-45]]}}},"praise":{"loop":"loop","length":0,"bones":{"root":{"position":[[0,0,-9,0]]},"Head":{"rotation":[[0,40,0,0]]},"RightArm":{"rotation":[[0,170.74751,3.81024,22.19157]]},"LeftArm":{"rotation":[[0,170.74751,-3.81024,-22.19157]]},"LeftLeg":{"rotation":[[0,-85,0,0]],"position":[[0,0,-2,-4]]},"RightLeg":{"rotation":[[0,-85,0,0]],"position":[[0,0,-2,-4]]}}},"pose1":{"loop":"once","length":0,"bones":{"Head":{"rotation":[[0,-6.4481,-8.86913,12.63789]]},"righteye":{"position":[[0,0,-1,0]],"scale":[[0,0.9,0.3,1]]},"lefteye":{"position":[[0,0,-0.55,0]],"scale":[[0,1,0.8,1]]},"rightear":{"rotation":[[0,-8.26228,4.29348,-11.48217]]},"leftear":{"rotation":[[0,-13.85958,-0.51206,-39.23148]]},"lidR":{"position":[[0,0,-2.35,0]],"scale":[[0,1,0.8,1]]},"lidR2":{"position":[[0,0,-0.85,0]],"scale":[[0,1,0.8,1]]},"root":{"rotation":[[0,0,0,5]]},"rightbang":{"rotation":[[0,0,0,-15]]},"LeftArm":{"rotation":[[0,356.90528,-22.29711,463.11003]],"position":[[0,0,-1,0]]},"RightArm":{"rotation":[[0,0,0,-90]]},"LeftLeg":{"rotation":[[0,0,0,20]]}}},"pose2":{"loop":"once","length":0,"bones":{"Head":{"rotation":[[0,0,0,-10]]},"righteye":{"position":[[0,0.25,0,0]]},"lefteye":{"position":[[0,0.75,0,0]]},"rightear":{"rotation":[[0,-1.83221,38.60996,18.42698]]},"leftear":{"rotation":[[0,0,0,7.5]]},"rightbang":{"rotation":[[0,0.44393,-0.1048,-7.54236]]},"LeftArm":{"rotation":[[0,0,0,10]]},"RightArm":{"rotation":[[0,0,30,-15]],"position":[[0,-1,-1,0]]},"LeftLeg":{"rotation":[[0,0,0,10]]},"righthighlight":{"position":[[0,0.5,0,0]]},"lefthighlight":{"position":[[0,-1,0,0]]},"midhair":{"rotation":[[0,0,0,5]]},"leftbang":{"rotation":[[0,0,0,25]]},"leftcoatall":{"rotation":[[0,0.78795,-17.48281,4.87884]]},"Strap":{"rotation":[[0,0,0,-12.5]]},"Strap2":{"rotation":[[0,0,0,-32.5]]},"monst3r":{"rotation":[[0,-153.69199,39.55824,196.56797]],"position":[[0,0,-11,-13]]},"minihead":{"rotation":[[0,-32.14473,24.09897,-23.99799]]},"minijaw":{"rotation":[[0,35,0,0]]},"miniR1":{"rotation":[[0,0,47.5,0]]},"miniR2":{"rotation":[[0,0,55,0]]},"miniL1":{"rotation":[[0,-43.27786,-44.44844,1.74896]]},"minitail":{"rotation":[[0,1.76926,-13.35981,4.97874]]},"minitail2":{"rotation":[[0,-15.95913,-16.18917,31.73617]]}}},"pose3":{"loop":"once","length":0,"bones":{"Head":{"rotation":[[0,-12.5,7.5,7.5]]},"righteye":{"position":[[0,-1,0,0]]},"righthighlight":{"position":[[0,1.2,0,0]]},"lefteye":{"position":[[0,-0.65,0,0]],"scale":[[0,0.87,1,1]]},"lefthighlight":{"position":[[0,-0.7,0,0]]},"lefthair":{"rotation":[[0,0,-5,7.5]]},"midhair":{"rotation":[[0,20,0,0]]},"rightbang":{"rotation":[[0,16.24074,6.60796,-21.55613]]},"leftbang":{"rotation":[[0,32.11161,-5.09073,11.23065]]},"rightear":{"rotation":[[0,0,5,12.5]]},"leftear":{"rotation":[[0,0,-20,-25]]},"LeftArm":{"rotation":[[0,-2.29544,-8.05012,50.77596]],"position":[[0,0,-0.4,0]]},"RightArm":{"rotation":[[0,-2.68393,7.28894,-28.01923]],"position":[[0,-1,-1,0]]},"scarf1":{"rotation":[[0,0,0,25]]},"scarf2":{"rotation":[[0,56.88542,1.32985,11.99146]],"position":[[0,0,0.5,0]]},"CoatLeft":{"rotation":[[0,0,-17.5,0]]},"Strap":{"rotation":[[0,0,0,27.5]]},"CoatRight":{"rotation":[[0,-11.7647,34.64969,-16.6401]]},"Strap2":{"rotation":[[0,0,0,20]]},"tail":{"rotation":[[0,-6.1291,23.33243,9.9068]]},"tail2":{"rotation":[[0,0,17.5,0]]},"tail3":{"rotation":[[0,0,15,0]]},"LeftLeg":{"rotation":[[0,-4.95744,-0.65182,-2.47178]],"position":[[0,-0.1,0,0]]},"RightLeg":{"rotation":[[0,-28.59581,20.15398,-42.66382]],"position":[[0,-0.2,1.2,0]]},"monst3r":{"rotation":[[0,-153.69199,-39.55824,-196.56797]],"position":[[0,0,-11,-13]]},"minihead":{"rotation":[[0,-25.00991,-28.28312,7.9287]]},"rightMiniEye":{"position":[[0,0,0.2,0]],"scale":[[0,1,0.8,1]]},"leftMiniEye":{"position":[[0,0,0.2,0]],"scale":[[0,1,0.8,1]]},"miniR1":{"rotation":[[0,-30,37.5,0]]},"miniL2":{"rotation":[[0,0,-72.5,0]]},"miniL1":{"rotation":[[0,-47.5,-60,0]]}}},"monsblink":{"loop":"once","length":1,"bones":{"rightMiniEye":{"position":[[0,0,0,0],[0.29167,0,1.05,0],[0.66667,0,-0.3,0],[1,0,0,0]],"scale":[[0,1,1,1],[0.29167,1,0,1],[0.66667,1,1.25,1],[1,1,1,1]]},"leftMiniEye":{"position":[[0,0,0,0],[0.29167,0,1.05,0],[0.66667,0,-0.3,0],[1,0,0,0]],"scale":[[0,1,1,1],[0.29167,1,0,1],[0.66667,1,1.25,1],[1,1,1,1]]}}},"monsupdownR":{"loop":"once","length":8.45833,"bones":{"minimons":{"rotation":[[0,0,0,0],[0.91667,0,0,-195],[1.66667,0,0,-165],[2.29167,0,0,-195],[3.375,0,0,-165],[4.91667,0,0,-195],[5.91667,0,0,-195],[7,0,0,15],[8.08333,0,0,0]]},"minihead":{"rotation":[[0,0,0,0],[0.91667,-27.5,0,0],[2.33333,-11.11844,-13.71476,23.77235],[4.08333,-23.54797,0.29276,2.16216],[5.375,-11.3491,27.50574,-0.52335],[6.58333,9.49707,56.01215,-12.39253],[7.66667,18.33647,-1.42131,-21.34642],[8.5,0,0,0]]},"miniR1":{"rotation":[[0,0,0,0],[0.91667,0,37.5,0],[2.125,0,-17.5,0],[3.83333,0,42.5,0],[5.66667,0,62.5,0],[6.625,26.5901,13.79033,-28.55825],[7.45833,33.02467,72.75297,33.50324],[8.45833,0,0,0]]},"miniR2":{"rotation":[[0,0,0,0],[0.91667,0,37.5,0],[2.125,0,-17.5,0],[3.83333,0,42.5,0],[5.66667,0,62.5,0],[6.625,26.5901,13.79033,-28.55825],[7.45833,33.02467,72.75297,33.50324],[8.45833,0,0,0]]},"miniL2":{"rotation":[[0,0,0,0],[0.91667,0,37.5,0],[2.125,0,-17.5,0],[2.83333,0,14.02,0],[3.83333,0,-52.5,0],[5.66667,0,62.5,0],[6.625,22.99774,-32.9409,-53.44302],[7.45833,-93.99726,23.08868,-123.55036],[8.45833,0,0,0]]},"miniL1":{"rotation":[[0,0,0,0],[0.91667,0,37.5,0],[2.125,0,-17.5,0],[2.83333,0,14.02,0],[3.83333,0,-52.5,0],[5.66667,0,62.5,0],[6.625,22.99774,-32.9409,-53.44302],[7.45833,-93.99726,23.08868,-123.55036],[8.45833,0,0,0]]}}},"monsupdownL":{"loop":"once","length":8.45833,"bones":{"minimons":{"rotation":[[0,0,0,0],[0.91667,0,0,195],[1.66667,0,0,165],[2.29167,0,0,195],[3.375,0,0,165],[4.91667,0,0,195],[5.91667,0,0,195],[7,0,0,-15],[8.08333,0,0,0]]},"minihead":{"rotation":[[0,0,0,0],[0.91667,-27.5,0,0],[2.33333,-11.11844,13.71476,-23.77235],[4.08333,-23.54797,-0.29276,-2.16216],[5.375,-11.3491,-27.50574,0.52335],[6.58333,9.49707,-56.01215,12.39253],[7.66667,18.33647,1.42131,21.34642],[8.5,0,0,0]]},"miniR1":{"rotation":[[0,0,0,0],[0.91667,0,-37.5,0],[2.125,0,17.5,0],[3.83333,0,-42.5,0],[5.66667,0,-62.5,0],[6.625,26.5901,-13.79033,28.55825],[7.45833,33.02467,-72.75297,-33.50324],[8.45833,0,0,0]]},"miniR2":{"rotation":[[0,0,0,0],[0.91667,0,-37.5,0],[2.125,0,17.5,0],[3.83333,0,-42.5,0],[5.66667,0,-62.5,0],[6.625,26.5901,-13.79033,28.55825],[7.45833,33.02467,-72.75297,-33.50324],[8.45833,0,0,0]]},"miniL2":{"rotation":[[0,0,0,0],[0.91667,0,-37.5,0],[2.125,0,17.5,0],[2.83333,0,-14.02,0],[3.83333,0,52.5,0],[5.66667,0,-62.5,0],[6.66667,-6.27611,18.49905,-45.05814],[7.45833,24.72917,-32.71228,-72.14157],[8.45833,0,0,0]]},"miniL1":{"rotation":[[0,0,0,0],[0.91667,0,-37.5,0],[2.125,0,17.5,0],[2.83333,0,-14.02,0],[3.83333,0,52.5,0],[5.66667,0,-62.5,0],[6.66667,-6.27611,18.49905,-45.05814],[7.45833,24.72917,-32.71228,-72.14157],[8.45833,0,0,0]]}}},"monsspin":{"loop":"once","length":3.45833,"bones":{"minimons":{"rotation":[[0,0,0,0],[0.79167,0,0,0],[2.20833,375,0,0],[3.125,360,0,0]],"position":[[0,0,0,0],[0.79167,0,0,0],[1.58333,0,2,0],[2.66667,0,-1,0],[3.45833,0,0,0]]},"minihead":{"rotation":[[0,0,0,0],[0.79167,25,0,0],[1.58333,25,0,0],[2.54167,-40,0,0],[3.33333,0,0,0]]},"rightMiniEye":{"position":[[0,0,0,0],[0.79167,0,0.5,0],[1.95833,0,0.5,0],[2.70833,0,-0.3,0],[3.45833,0,0,0]],"scale":[[0,1,1,1],[0.79167,1,0.45,1],[1.95833,1,0.36,1],[2.70833,1,1.32,1],[3.45833,1,1,1]]},"leftMiniEye":{"position":[[0,0,0,0],[0.79167,0,0.5,0],[1.95833,0,0.5,0],[2.70833,0,-0.3,0],[3.45833,0,0,0]],"scale":[[0,1,1,1],[0.79167,1,0.45,1],[1.95833,1,0.36,1],[2.70833,1,1.32,1],[3.45833,1,1,1]]},"minitail":{"rotation":[[0,0,0,0],[0.79167,0,0,0],[1.70833,-40,0,0],[2.66667,10,0,0],[3.5,0,0,0]]},"minitail2":{"rotation":[[0,0,0,0],[0.79167,0,0,0],[1.70833,-60,0,0],[2.66667,10,0,0],[3.5,0,0,0]]},"minitail3":{"rotation":[[0,0,0,0],[0.79167,0,0,0],[1.70833,-80,0,0],[2.66667,0,0,0],[3.5,0,0,0]]}}},"happimons":{"loop":"once","length":9.04167,"bones":{"minijaw":{"rotation":[[0,0,0,0],[1.04167,32.5,0,0],[3.04167,20,0,0],[5.04167,32.5,0,0],[7.04167,20,0,0],[9.04167,0,0,0]]},"rightMiniEye":{"position":[[0,0,0,0],[1.04167,0,0.25,0],[3.04167,0,0.1,0],[5.04167,0,0.25,0],[7.04167,0,0.1,0],[9.04167,0,0,0]],"scale":[[0,1,1,1],[1.04167,1,0.775,1],[3.04167,1,0.89,1],[5.04167,1,0.775,1],[7.04167,1,0.89,1],[9.04167,1,1,1]]},"leftMiniEye":{"position":[[0,0,0,0],[1.04167,0,0.25,0],[3.04167,0,0.1,0],[5.04167,0,0.25,0],[7.04167,0,0.1,0],[9.04167,0,0,0]],"scale":[[0,1,1,1],[1.04167,1,0.775,1],[3.04167,1,0.89,1],[5.04167,1,0.775,1],[7.04167,1,0.89,1],[9.04167,1,1,1]]},"minibody":{"rotation":[[0,0,0,0],[1.04167,15,0,0],[7.33333,15,0,0],[9.04167,0,0,0]]},"miniR1":{"rotation":[[0,0,0,0],[1.04167,0,-32.5,0],[7.33333,0,-32.5,0],[9.04167,0,0,0]]},"miniR2":{"rotation":[[0,0,0,0],[1.04167,25,0,0],[7.33333,25,0,0],[9.04167,0,0,0]]},"miniL2":{"rotation":[[0,0,0,0],[1.04167,25,0,0],[7.33333,25,0,0],[9.04167,0,0,0]]},"miniL1":{"rotation":[[0,0,0,0],[1.04167,0,32.5,0],[7.33333,0,32.5,0],[9.04167,0,0,0]]},"minitail":{"rotation":[[0,0,0,0],[1.04167,-25,0,0],[3.45833,3.77625,-9.04598,25.48022],[5.66667,1.7405,2.39003,-33.06541],[7.75,-37.5,0,0],[9.04167,0,0,0]]}}},"idleMonsBob":{"loop":"loop","length":5,"bones":{"monst3r":{"position":[[0,0,0,0],[1.625,0,-7,0],[2.58333,0,-7,0],[4,0,0,0],[5,0,0,0]]},"miniR1":{"position":[[0,0,0.7,-0.1],[1.41667,0,0.75,-0.5],[3.41667,0,0.1,-0.1],[5,0,0.7,-0.1]]},"miniR2":{"position":[[0,0,0,0],[1.41667,0,0.75,-0.5],[3.41667,0,-0.2,0.4],[5,0,0,0]]},"miniL2":{"position":[[0,0,0,0],[1.41667,0,0.75,-0.5],[3.41667,0,-0.2,0.4],[5,0,0,0]]},"miniL1":{"position":[[0,0,0.7,-0.1],[1.41667,0,0.75,-0.5],[3.41667,0,0.1,-0.1],[5,0,0.7,-0.1]]},"minitail":{"rotation":[[0,0,0,0],[2.29167,15,0,0],[5,0,0,0]]},"minitail2":{"rotation":[[0,0,0,0],[2.29167,15,0,0],[5,0,0,0]]}}},"summon":{"loop":"once","length":1.25,"bones":{"Head":{"rotation":[[0,0,0,0],[0.33333,-5,0,5],[0.66667,0,0,0]]},"rightear":{"rotation":[[0,0,0,0],[0.25,-17.5,32.5,0],[0.54167,-19.19989,42.53966,-8.53905],[0.83333,0,0,0],[1.25,0,0,0]]},"leftear":{"rotation":[[0,0,0,0],[0.25,-17.5,-32.5,0],[0.54167,-19.19989,-42.53966,8.53905],[0.83333,0,0,0],[1.25,0,0,0]]},"Body":{"rotation":[[0,0,0,0],[0.25,0,0,-7.5],[0.5,0,0,-7.5],[0.75,0,0,0]]},"Coat":{"rotation":[[0,0,0,0],[0.5,0,0,-5],[0.875,0,0,5],[1.25,0,0,0]]},"Strap":{"rotation":[[0,0,0,0],[0.29167,0,0,29.56],[0.58333,0,0,-25.95],[0.95833,0,0,13.76],[1.25,0,0,0]]},"Strap2":{"rotation":[[0,0,0,0],[0.29167,0,0,29.56],[0.58333,0,0,-25.95],[0.95833,0,0,13.76],[1.25,0,0,0]]},"RightArm":{"rotation":[[0,74.24747,-31.94761,-60.10827],[0.33333,-23.83735,24.40369,-53.73588],[0.70833,-23.83735,24.40369,-53.73588],[1.08333,0,0,0]]},"LeftArm":{"rotation":[[0,0,0,0],[0.25,8.7658,-6.01437,10.952],[0.58333,6.46406,-13.42504,9.78019],[1,0,0,0]]},"LeftLeg":{"rotation":[[0,0,0,0],[0.25,0,0,4],[0.5,0,0,4],[0.75,0,0,0]],"position":[[0,0,0,0],[0.25,0.8,0,0],[0.5,0.8,0,0],[0.75,0,0,0]]},"RightLeg":{"rotation":[[0,0,0,0],[0.25,0,0,2.5],[0.5,0,0,2.5],[0.75,0,0,0]],"position":[[0,0,0,0],[0.25,0.7,0,0],[0.5,0.7,0,0],[0.75,0,0,0]]}}},"earflickR":{"loop":"once","length":0.58333,"bones":{"rightear":{"rotation":[[0,0,0,0],[0.16667,-11,-8,17],[0.375,0,0,-10],[0.54167,0,0,0]],"position":[[0,0,0,0],[0.54167,0,0,0]]}}},"earflickL":{"loop":"once","length":0.58333,"bones":{"leftear":{"rotation":[[0,0,0,0],[0.16667,-11,8,-17],[0.375,0,0,10],[0.54167,0,0,0]],"position":[[0,0,0,0],[0.54167,0,0,0]]}}},"earflick":{"loop":"once","length":0.58333,"bones":{"rightear":{"rotation":[[0,0,0,0],[0.16667,-11,-8,17],[0.375,0,0,-10],[0.54167,0,0,0]],"position":[[0,0,0,0],[0.54167,0,0,0]]},"leftear":{"rotation":[[0,0,0,0],[0.16667,-11.26908,7.61373,-18.98071],[0.375,0,0,5],[0.54167,0,0,0]],"position":[[0,0,0,0],[0.54167,0,0,0]]}}},"blink":{"loop":"once","length":0.29167,"bones":{"righteye":{"position":[[0,0,0,0],[0.04167,0.2,-1,0],[0.16667,0,0,0]],"scale":[[0,1,1,1],[0.04167,1,0.11,1],[0.16667,0.8,1.2,1],[0.29167,1,1,1]]},"lefteye":{"position":[[0,0,0,0],[0.04167,-0.2,-1,0],[0.16667,0,0,0]],"scale":[[0,1,1,1],[0.04167,1,0.11,1],[0.16667,0.8,1.2,1],[0.29167,1,1,1]]},"eyelids":{"position":[[0,0,0,0],[0.04167,0,-3.1,0],[0.20833,0,0.1,0],[0.29167,0,0,0]]},"sideeyeliner":{"scale":[[0,1,1,1],[0.04167,1,0.3,1],[0.20833,1,1.1,1],[0.29167,1,1,1]]}}},"idled":{"loop":"loop","length":4,"bones":{"RightArm":{"rotation":[[0,0,0,0],[1.45833,-1,0,-6],[2.41667,2,0,-6],[4,0,0,0]]},"LeftArm":{"rotation":[[0,0,0,0],[1.45833,-1,0,6],[2.41667,2,0,6],[4,0,0,0]]},"RightLeg":{"rotation":[[0,0,17.5,-5]],"position":[[0,0,0,0.25]]}}},"jumpup":{"loop":"once","length":0,"bones":{"root":{"rotation":[[0,0,0,0]]}}},"sit":{"loop":"loop","length":0,"bones":{"root":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]]},"Head":{"position":[[0,0,-1,2.6]]},"Body":{"rotation":[[0,12.5,0,0]],"position":[[0,0,0,2]]},"RightArm":{"rotation":[[0,-12.5,0,0]],"position":[[0,0,-2,2]]},"LeftArm":{"rotation":[[0,-12.5,0,0]],"position":[[0,0,-2,2]]},"LeftLeg":{"rotation":[[0,45,0,0]]},"RightLeg":{"rotation":[[0,45,0,0]]}}},"crouch":{"loop":"loop","length":0,"bones":{"root":{"position":[[0,0,3,0]]},"LeftArm":{"position":[[0,0,3,0]]},"RightArm":{"position":[[0,0,3,0]]},"Body":{"position":[[0,0,0,0]]},"scarf2":{"rotation":[[0,-15,0,0]]},"LeftLeg":{"position":[[0,0,-1,1]]},"RightLeg":{"position":[[0,0,-1,1]]}}},"surprise":{"loop":"once","length":0.625,"bones":{"root":{"position":[[0,0,0,0],[0.08333,0,3,0],[0.25,0,0,0]]},"Head":{"rotation":[[0,0,0,0],[0.125,-15,0,0],[0.29167,5,0,0],[0.5,0,0,0]]},"righteye":{"scale":[[0,1,1,1],[0.125,0,0,0],[0.29167,0,0,0],[0.45833,1.2,1.2,1.2],[0.625,1,1,1]]},"lefteye":{"scale":[[0,1,1,1],[0.125,0,0,0],[0.29167,0,0,0],[0.45833,1.2,1.2,1.2],[0.625,1,1,1]]},"rightear":{"rotation":[[0,0,0,0],[0.16667,91.33545,18.99092,76.56901],[0.375,-21.04882,28.6474,-4.27752],[0.58333,0,0,0]]},"leftear":{"rotation":[[0,0,0,0],[0.16667,91.33545,-18.99092,-76.56901],[0.375,-21.04882,-28.6474,4.27752],[0.58333,0,0,0]]},"LeftArm":{"rotation":[[0,0,0,0],[0.125,0,-10,20],[0.33333,0,0,0]]},"RightArm":{"rotation":[[0,0,0,0],[0.125,0,10,-20],[0.33333,0,0,0]]},"LeftLeg":{"rotation":[[0,0,0,0],[0.125,-2.47864,0.32621,-2.50706],[0.33333,0,0,0]]},"RightLeg":{"rotation":[[0,0,0,0],[0.125,2.52136,-0.32621,2.50706],[0.33333,0,0,0]]}}},"earsdown":{"loop":"hold","length":0,"bones":{"rightear":{"rotation":[[0,30.67029,42.04184,-245.51134]],"position":[[0,1,-2.5,0]]},"leftear":{"rotation":[[0,30.67029,-42.04184,245.51134]],"position":[[0,-1,-2.5,0]]}}},"wink":{"loop":"once","length":0.5,"bones":{"Head":{"rotation":[[0,0,0,0],[0.16667,-6.4481,-8.86913,12.63789],[0.41667,0,0,0]]},"righteye":{"position":[[0,0,0,0],[0.125,0,-1,0],[0.25,0,-1,0],[0.375,0,0,0],[0.5,0,0,0]],"scale":[[0,1,1,1],[0.125,0.9,0.3,1],[0.25,0.4,1,1],[0.375,1.3,0.9,1],[0.5,1,1,1]]},"lefteye":{"position":[[0,0,0,0],[0.125,0,-0.3,0],[0.25,0,-0.3,0],[0.41667,0,0,0]],"scale":[[0,1,1,1],[0.125,1,0.8,1],[0.25,1,0.8,1],[0.41667,1,1,1]]},"rightear":{"rotation":[[0,0,0,-19],[0.125,-7.59496,-16.32864,4.05949],[0.25,0,0,-10],[0.375,0,0,0]],"position":[[0,0,0,0],[0.375,0,0,0]]},"leftear":{"rotation":[[0,0,0,19],[0.125,-7.59496,16.32864,-4.05949],[0.25,0,0,10],[0.375,0,0,0]],"position":[[0,0,0,0],[0.375,0,0,0]]},"lidR":{"position":[[0,0,0,0],[0.125,0,-2.35,0],[0.25,0,-2.1,0],[0.41667,0,0.1,0],[0.5,0,0,0]],"scale":[[0,1,1,1],[0.125,1,0.8,1],[0.25,1,0.8,1],[0.41667,1,1.0633,1],[0.5,1,1,1]]},"lidR2":{"position":[[0,0,0,0],[0.125,0,-0.85,0],[0.25,0,-0.1,0],[0.41667,0,0.1,0],[0.5,0,0,0]],"scale":[[0,1,1,1],[0.125,1,0.8,1],[0.25,1,0.8,1],[0.41667,1,1.0633,1],[0.5,1,1,1]]}}},"squint":{"loop":"hold","length":0,"bones":{"eyelids":{"position":[[0,0,-1.5,0]]},"righteye":{"position":[[0,0,-0.75,0]],"scale":[[0,1,0.7,1]]},"righthighlight":{"position":[[0,0,0.5,0]]},"lefteye":{"position":[[0,0,-0.75,0]],"scale":[[0,1,0.7,1]]},"lefthighlight":{"position":[[0,0,0.5,0]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/kaltsit.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/kaltsit.geo.json new file mode 100644 index 0000000..a77756a --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/kaltsit.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.kaltsit","texture_width":491,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"root","pivot":[0,0,0]},{"name":"Torso","pivot":[0,12,0],"parent":"root"},{"name":"Head","pivot":[0,24,0],"parent":"Torso","cubes":[{"origin":[-4,24,-4],"size":[8,8,8],"uv":{"north":{"uv":[5,29],"uv_size":[8,8]},"east":{"uv":[13,29],"uv_size":[8,8]},"south":{"uv":[21,30],"uv_size":[8,8]},"west":{"uv":[29,30],"uv_size":[8,8]},"up":{"uv":[40,8],"uv_size":[-8,-8]},"down":{"uv":[40,8],"uv_size":[-8,8]}}},{"origin":[-3,31,-3.5],"size":[3,2,3.5],"pivot":[-1,31.75,-2],"rotation":[-10,0,-22.5],"uv":{"north":{"uv":[42,88],"uv_size":[3,2]},"east":{"uv":[97,95],"uv_size":[4,2]},"south":{"uv":[37,107],"uv_size":[3,2]},"west":{"uv":[99,26],"uv_size":[4,2]},"up":{"uv":[102,116],"uv_size":[-3,-4]},"down":{"uv":[105,112],"uv_size":[-3,4]}}},{"origin":[0,31,-3.5],"size":[3,2,3.5],"pivot":[1,31.75,-2],"rotation":[-10,0,22.5],"uv":{"north":{"uv":[118,80],"uv_size":[3,2]},"east":{"uv":[4,101],"uv_size":[4,2]},"south":{"uv":[81,118],"uv_size":[3,2]},"west":{"uv":[117,16],"uv_size":[4,2]},"up":{"uv":[112,116],"uv_size":[-3,-4]},"down":{"uv":[115,112],"uv_size":[-3,4]}}}]},{"name":"pivots","pivot":[0,24,0],"parent":"Head"},{"name":"LeftSpyglassPivot","pivot":[-2,28,-4],"parent":"pivots"},{"name":"RightSpyglassPivot","pivot":[2,28,-4],"parent":"pivots"},{"name":"HelmetItemPivot","pivot":[0,24,0],"parent":"pivots"},{"name":"eyes","pivot":[1,31.75,-2],"parent":"Head","cubes":[{"origin":[-3.95,24.45,-3.9],"size":[7.9,3.9,2.9],"uv":{"north":{"uv":[84,12],"uv_size":[8,4]},"east":{"uv":[52,113],"uv_size":[3,4]},"south":{"uv":[84,16],"uv_size":[8,4]},"west":{"uv":[52,113],"uv_size":[3,4]},"up":{"uv":[104,3],"uv_size":[-8,-3]},"down":{"uv":[104,3],"uv_size":[-8,3]}}}]},{"name":"eyelids","pivot":[1.05,28.75,-2],"parent":"eyes"},{"name":"lidR","pivot":[1.05,25.75,-2],"parent":"eyelids","cubes":[{"origin":[-3.95,27.75,-3.99],"size":[7.9,4,2],"uv":{"north":{"uv":[49,42],"uv_size":[8,4]},"east":{"uv":[117,74],"uv_size":[2,4]},"south":{"uv":[67,20],"uv_size":[8,4]},"west":{"uv":[75,117],"uv_size":[2,4]},"up":{"uv":[37,40],"uv_size":[-8,-2]},"down":{"uv":[74,34],"uv_size":[-8,2]}}},{"origin":[-4.05,24.75,-4.15],"size":[8.1,4,3.15],"uv":{"north":{"uv":[83,65],"uv_size":[8,4]},"east":{"uv":[13,113],"uv_size":[3,4]},"south":{"uv":[83,69],"uv_size":[8,4]},"west":{"uv":[13,113],"uv_size":[3,4]},"up":{"uv":[97,36],"uv_size":[-8,-3]},"down":{"uv":[103,28],"uv_size":[-8,3]}}}]},{"name":"lidR2","pivot":[1.05,25.75,-2],"parent":"eyelids","cubes":[{"origin":[-3.95,27.75,-3.99],"size":[7.9,4,2],"uv":{"north":{"uv":[83,73],"uv_size":[8,4]},"east":{"uv":[77,117],"uv_size":[2,4]},"south":{"uv":[83,77],"uv_size":[8,4]},"west":{"uv":[79,117],"uv_size":[2,4]},"up":{"uv":[117,18],"uv_size":[-8,-2]},"down":{"uv":[51,109],"uv_size":[-8,2]}}},{"origin":[-4.05,24.75,-4.15],"size":[8.1,4,3.15],"uv":{"north":{"uv":[83,81],"uv_size":[8,4]},"east":{"uv":[22,113],"uv_size":[3,4]},"south":{"uv":[84,0],"uv_size":[8,4]},"west":{"uv":[22,113],"uv_size":[3,4]},"up":{"uv":[103,51],"uv_size":[-8,-3]},"down":{"uv":[103,51],"uv_size":[-8,3]}}}]},{"name":"sideeyeliner","pivot":[0,24.65,-4.7],"parent":"eyes","cubes":[{"origin":[-4.05,24.75,-4.15],"size":[8.1,4,3.15],"uv":{"north":{"uv":[84,4],"uv_size":[8,4]},"east":{"uv":[113,43],"uv_size":[3,4]},"south":{"uv":[84,8],"uv_size":[8,4]},"west":{"uv":[49,113],"uv_size":[3,4]},"up":{"uv":[103,57],"uv_size":[-8,-3]},"down":{"uv":[103,57],"uv_size":[-8,3]}}}]},{"name":"righteye","pivot":[2,26.5,-4],"parent":"eyes","cubes":[{"origin":[1.1,25.25,-3.92],"size":[2.2,2.4,0.4],"uv":{"north":{"uv":[128,0],"uv_size":[3,3]},"east":{"uv":[141,1],"uv_size":[1,2]},"south":{"uv":[140,1],"uv_size":[2,2]},"west":{"uv":[141,3],"uv_size":[1,2]},"up":{"uv":[144,2],"uv_size":[-2,-1]},"down":{"uv":[144,2],"uv_size":[-2,1]}}}]},{"name":"righthighlight","pivot":[1.4,25.95,-3.1],"parent":"righteye"},{"name":"lefteye","pivot":[-2,26.5,-4],"parent":"eyes","cubes":[{"origin":[-3.3,25.25,-3.92],"size":[2.2,2.4,0.4],"uv":{"north":{"uv":[131,0],"uv_size":[-3,3]},"east":{"uv":[142,3],"uv_size":[-1,2]},"south":{"uv":[142,1],"uv_size":[-2,2]},"west":{"uv":[142,1],"uv_size":[-1,2]},"up":{"uv":[142,2],"uv_size":[2,-1]},"down":{"uv":[142,2],"uv_size":[2,1]}}}]},{"name":"lefthighlight","pivot":[-1.4,25.95,-3.1],"parent":"lefteye"},{"name":"hair","pivot":[3.75,31.5,0],"parent":"Head"},{"name":"righthair","pivot":[3.75,31.5,0],"parent":"hair","cubes":[{"origin":[1.75,23.5,-4.1],"size":[3,8,8.1],"pivot":[3.75,31.5,0],"rotation":[0,0,-7.5],"uv":{"north":{"uv":[96,6],"uv_size":[3,8]},"east":{"uv":[32,16],"uv_size":[8,8]},"south":{"uv":[33,96],"uv_size":[3,8]},"west":{"uv":[5,37],"uv_size":[8,8]},"up":{"uv":[39,104],"uv_size":[-3,-8]},"down":{"uv":[99,36],"uv_size":[-3,8]}}},{"origin":[2.11105,25.08289,-2],"size":[3,6,5.1],"pivot":[3.85,31.1,0.1],"rotation":[0,0,-12.5],"uv":{"north":{"uv":[58,36],"uv_size":[3,6]},"east":{"uv":[32,24],"uv_size":[5,6]},"south":{"uv":[13,107],"uv_size":[3,6]},"west":{"uv":[66,87],"uv_size":[5,6]},"up":{"uv":[45,64],"uv_size":[-3,-5]},"down":{"uv":[60,96],"uv_size":[-3,5]}}}]},{"name":"lefthair","pivot":[-3.75,31.5,0],"parent":"hair","cubes":[{"origin":[-4.75,23.5,-4.1],"size":[3,8,8.1],"pivot":[-3.75,31.5,0],"rotation":[0,0,7.5],"uv":{"north":{"uv":[39,96],"uv_size":[3,8]},"east":{"uv":[13,37],"uv_size":[8,8]},"south":{"uv":[42,96],"uv_size":[3,8]},"west":{"uv":[37,24],"uv_size":[8,8]},"up":{"uv":[48,104],"uv_size":[-3,-8]},"down":{"uv":[51,96],"uv_size":[-3,8]}}},{"origin":[-5.11105,25.08289,-2],"size":[3,6,5.1],"pivot":[-3.85,31.1,0.1],"rotation":[0,0,12.5],"uv":{"north":{"uv":[39,96],"uv_size":[3,8]},"east":{"uv":[13,37],"uv_size":[8,8]},"south":{"uv":[42,96],"uv_size":[3,8]},"west":{"uv":[71,88],"uv_size":[5,6]},"up":{"uv":[48,104],"uv_size":[-3,-8]},"down":{"uv":[51,96],"uv_size":[-3,8]}}}]},{"name":"backhair","pivot":[0,31.5,3.75],"parent":"hair","cubes":[{"origin":[-4,23.5,1.75],"size":[8,8,3],"pivot":[0,31.5,3.75],"rotation":[7.5,0,0],"uv":{"north":{"uv":[37,32],"uv_size":[8,8]},"east":{"uv":[51,96],"uv_size":[3,8]},"south":{"uv":[21,38],"uv_size":[8,8]},"west":{"uv":[54,96],"uv_size":[3,8]},"up":{"uv":[104,47],"uv_size":[-8,-3]},"down":{"uv":[104,60],"uv_size":[-8,3]}}},{"origin":[-3,25.7,2.05],"size":[6,5,3],"pivot":[0,30.7,4.05],"rotation":[12.5,0,0],"uv":{"north":{"uv":[16,89],"uv_size":[6,5]},"east":{"uv":[30,110],"uv_size":[3,5]},"south":{"uv":[22,89],"uv_size":[6,5]},"west":{"uv":[43,111],"uv_size":[3,5]},"up":{"uv":[6,87],"uv_size":[-6,-3]},"down":{"uv":[114,101],"uv_size":[-6,3]}}}]},{"name":"midhair","pivot":[0,31.25,-4],"parent":"hair","cubes":[{"origin":[-4.5,27.25,-4.5],"size":[9,5,1.5],"uv":{"north":{"uv":[65,36],"uv_size":[9,5]},"east":{"uv":[97,113],"uv_size":[2,5]},"south":{"uv":[65,41],"uv_size":[9,5]},"west":{"uv":[31,115],"uv_size":[2,5]},"up":{"uv":[111,83],"uv_size":[-9,-2]},"down":{"uv":[113,73],"uv_size":[-9,2]}}}]},{"name":"rightbang","pivot":[3,31,-4],"parent":"hair","cubes":[{"origin":[1,20,-4.3],"size":[4,12,1.3],"uv":{"north":{"uv":[45,52],"uv_size":[4,12]},"east":{"uv":[21,0],"uv_size":[1,12]},"south":{"uv":[49,52],"uv_size":[4,12]},"west":{"uv":[35,73],"uv_size":[1,12]},"up":{"uv":[49,40],"uv_size":[-4,-1]},"down":{"uv":[58,90],"uv_size":[-4,1]}}}]},{"name":"leftbang","pivot":[-3,31,-4],"parent":"hair","cubes":[{"origin":[-5,22,-4.3],"size":[4,10,1.3],"uv":{"north":{"uv":[67,10],"uv_size":[4,10]},"east":{"uv":[108,113],"uv_size":[1,10]},"south":{"uv":[71,10],"uv_size":[4,10]},"west":{"uv":[3,114],"uv_size":[1,10]},"up":{"uv":[109,43],"uv_size":[-4,-1]},"down":{"uv":[113,72],"uv_size":[-4,1]}}}]},{"name":"ears","pivot":[0,23.8,0],"parent":"Head"},{"name":"rightear","pivot":[3,31.65,0],"parent":"ears","rotation":[0,-17.5,22.5],"cubes":[{"origin":[1.15538,31.42493,0.26631],"size":[2,4,1],"uv":{"north":{"uv":[87,117],"uv_size":[2,4]},"east":{"uv":[42,112],"uv_size":[1,4]},"south":{"uv":[89,117],"uv_size":[2,4]},"west":{"uv":[86,118],"uv_size":[1,4]},"up":{"uv":[36,86],"uv_size":[-2,-1]},"down":{"uv":[18,88],"uv_size":[-2,1]}}},{"origin":[1.15538,31.42493,-0.73369],"size":[2,4,2],"uv":{"north":{"uv":[117,90],"uv_size":[2,4]},"east":{"uv":[91,117],"uv_size":[2,4]},"south":{"uv":[104,117],"uv_size":[2,4]},"west":{"uv":[106,117],"uv_size":[2,4]},"up":{"uv":[89,30],"uv_size":[-2,-2]},"down":{"uv":[90,48],"uv_size":[-2,2]}}},{"origin":[3.15538,30.17493,-0.73369],"size":[2,3,2],"uv":{"north":{"uv":[8,57],"uv_size":[2,3]},"east":{"uv":[6,69],"uv_size":[2,3]},"south":{"uv":[69,108],"uv_size":[2,3]},"west":{"uv":[118,82],"uv_size":[2,3]},"up":{"uv":[93,85],"uv_size":[-2,-2]},"down":{"uv":[97,31],"uv_size":[-2,2]}}},{"origin":[1.19539,32.41514,-0.23369],"size":[2,3,1.5],"pivot":[3.15538,35.42493,0.26631],"rotation":[0,0,-40],"uv":{"north":{"uv":[84,118],"uv_size":[2,3]},"east":{"uv":[118,85],"uv_size":[2,3]},"south":{"uv":[97,118],"uv_size":[2,3]},"west":{"uv":[99,118],"uv_size":[2,3]},"up":{"uv":[101,14],"uv_size":[-2,-2]},"down":{"uv":[103,18],"uv_size":[-2,2]}}},{"origin":[0.45538,33.17493,0.46631],"size":[3.7,4,0.5],"uv":{"north":{"uv":[22,109],"uv_size":[4,4]},"east":{"uv":[115,118],"uv_size":[1,4]},"south":{"uv":[109,43],"uv_size":[4,4]},"west":{"uv":[120,25],"uv_size":[1,4]},"up":{"uv":[115,56],"uv_size":[-4,-1]},"down":{"uv":[124,29],"uv_size":[-4,1]}}},{"origin":[1.65538,30.42493,0.76631],"size":[2.5,3.75,1.25],"pivot":[2.15538,31.42493,2.26631],"rotation":[15,0,0],"uv":{"north":{"uv":[0,118],"uv_size":[2,4]},"east":{"uv":[35,120],"uv_size":[1,4]},"south":{"uv":[118,18],"uv_size":[2,4]},"west":{"uv":[36,120],"uv_size":[1,4]},"up":{"uv":[99,21],"uv_size":[-2,-1]},"down":{"uv":[99,35],"uv_size":[-2,1]}}}]},{"name":"rightpuff","pivot":[3.75538,31.42493,0.26631],"parent":"rightear","rotation":[0,0,-25],"cubes":[{"origin":[2.25538,31.17493,-1.48369],"size":[2.5,2.25,2.75],"uv":{"north":{"uv":[101,118],"uv_size":[3,2]},"east":{"uv":[118,101],"uv_size":[3,2]},"south":{"uv":[118,103],"uv_size":[3,2]},"west":{"uv":[118,105],"uv_size":[3,2]},"up":{"uv":[95,24],"uv_size":[-3,-3]},"down":{"uv":[95,98],"uv_size":[-3,3]}}},{"origin":[2.50538,31.42493,-1.23369],"size":[2,1.75,2],"uv":{"north":{"uv":[103,33],"uv_size":[2,2]},"east":{"uv":[31,108],"uv_size":[2,2]},"south":{"uv":[49,111],"uv_size":[2,2]},"west":{"uv":[31,120],"uv_size":[2,2]},"up":{"uv":[35,122],"uv_size":[-2,-2]},"down":{"uv":[122,33],"uv_size":[-2,2]}}}]},{"name":"leftear","pivot":[-3,31.65,0],"parent":"ears","rotation":[0,17.5,-22.5],"cubes":[{"origin":[-3.15538,31.42493,0.26631],"size":[2,4,1],"uv":{"north":{"uv":[36,67],"uv_size":[2,4]},"east":{"uv":[4,97],"uv_size":[1,4]},"south":{"uv":[75,30],"uv_size":[2,4]},"west":{"uv":[87,105],"uv_size":[1,4]},"up":{"uv":[7,29],"uv_size":[-2,-1]},"down":{"uv":[18,60],"uv_size":[-2,1]}}},{"origin":[-3.15538,31.42493,-0.73369],"size":[2,4,2],"uv":{"north":{"uv":[118,22],"uv_size":[2,4]},"east":{"uv":[24,118],"uv_size":[2,4]},"south":{"uv":[26,118],"uv_size":[2,4]},"west":{"uv":[118,26],"uv_size":[2,4]},"up":{"uv":[39,122],"uv_size":[-2,-2]},"down":{"uv":[41,120],"uv_size":[-2,2]}}},{"origin":[-5.15538,30.17493,-0.73369],"size":[2,3,2],"uv":{"north":{"uv":[111,118],"uv_size":[2,3]},"east":{"uv":[118,112],"uv_size":[2,3]},"south":{"uv":[113,118],"uv_size":[2,3]},"west":{"uv":[118,115],"uv_size":[2,3]},"up":{"uv":[43,122],"uv_size":[-2,-2]},"down":{"uv":[45,120],"uv_size":[-2,2]}}},{"origin":[-3.19539,32.41514,-0.23369],"size":[2,3,1.5],"pivot":[-3.15538,35.42493,0.26631],"rotation":[0,0,40],"uv":{"north":{"uv":[118,118],"uv_size":[2,3]},"east":{"uv":[119,0],"uv_size":[2,3]},"south":{"uv":[119,3],"uv_size":[2,3]},"west":{"uv":[119,6],"uv_size":[2,3]},"up":{"uv":[122,49],"uv_size":[-2,-2]},"down":{"uv":[51,120],"uv_size":[-2,2]}}},{"origin":[-4.15538,33.17493,0.46631],"size":[3.7,4,0.5],"uv":{"north":{"uv":[51,109],"uv_size":[4,4]},"east":{"uv":[51,120],"uv_size":[1,4]},"south":{"uv":[109,68],"uv_size":[4,4]},"west":{"uv":[52,120],"uv_size":[1,4]},"up":{"uv":[124,50],"uv_size":[-4,-1]},"down":{"uv":[124,58],"uv_size":[-4,1]}}},{"origin":[-4.15538,30.42493,0.76631],"size":[2.5,3.75,1.25],"pivot":[-2.15538,31.42493,2.26631],"rotation":[15,0,0],"uv":{"north":{"uv":[55,118],"uv_size":[2,4]},"east":{"uv":[66,120],"uv_size":[1,4]},"south":{"uv":[57,118],"uv_size":[2,4]},"west":{"uv":[120,82],"uv_size":[1,4]},"up":{"uv":[62,106],"uv_size":[-2,-1]},"down":{"uv":[83,113],"uv_size":[-2,1]}}}]},{"name":"leftpuff","pivot":[-3.75538,31.42493,0.26631],"parent":"leftear","rotation":[0,0,25],"cubes":[{"origin":[-4.75538,31.17493,-1.48369],"size":[2.5,2.25,2.75],"uv":{"north":{"uv":[118,107],"uv_size":[3,2]},"east":{"uv":[119,9],"uv_size":[3,2]},"south":{"uv":[28,119],"uv_size":[3,2]},"west":{"uv":[119,35],"uv_size":[3,2]},"up":{"uv":[9,120],"uv_size":[-3,-3]},"down":{"uv":[12,117],"uv_size":[-3,3]}}},{"origin":[-4.50538,31.42493,-1.23369],"size":[2,1.75,2],"uv":{"north":{"uv":[53,120],"uv_size":[2,2]},"east":{"uv":[120,59],"uv_size":[2,2]},"south":{"uv":[120,61],"uv_size":[2,2]},"west":{"uv":[64,120],"uv_size":[2,2]},"up":{"uv":[122,73],"uv_size":[-2,-2]},"down":{"uv":[83,120],"uv_size":[-2,2]}}}]},{"name":"LeftArm","pivot":[-3.95,22.1,0],"parent":"Torso","rotation":[0,0,10.5],"cubes":[{"origin":[-5.95,11.1,-2],"size":[3,12,4],"pivot":[-3.95,21.1,0],"rotation":[0,0,7.5],"uv":{"north":{"uv":[32,73],"uv_size":[3,12]},"east":{"uv":[53,52],"uv_size":[4,12]},"south":{"uv":[74,34],"uv_size":[3,12]},"west":{"uv":[0,57],"uv_size":[4,12]},"up":{"uv":[116,68],"uv_size":[-3,-4]},"down":{"uv":[116,68],"uv_size":[-3,4]}}}]},{"name":"sleeveL","pivot":[-3.65,20.9,0],"parent":"LeftArm"},{"name":"transparentL","pivot":[-5.25,17.1,0],"parent":"LeftArm"},{"name":"LeftCloakarm","pivot":[-4.45,13.6,0.5],"parent":"LeftArm","cubes":[{"origin":[-6.53632,13.65989,-2.5],"size":[4,7,5],"pivot":[-4.45,20.6,0.5],"rotation":[0,0,12.5],"uv":{"north":{"uv":[76,94],"uv_size":[4,7]},"east":{"uv":[45,76],"uv_size":[5,7]},"south":{"uv":[80,94],"uv_size":[4,7]},"west":{"uv":[83,36],"uv_size":[5,7]},"up":{"uv":[108,64],"uv_size":[-4,-5]},"down":{"uv":[108,64],"uv_size":[-4,5]}}},{"origin":[-7.95,13.35,-2.5],"size":[4,4,5],"pivot":[-4.95,13.35,0.5],"rotation":[0,0,7.5],"inflate":0.25,"uv":{"north":{"uv":[109,83],"uv_size":[4,4]},"east":{"uv":[104,43],"uv_size":[5,4]},"south":{"uv":[87,109],"uv_size":[4,4]},"west":{"uv":[104,69],"uv_size":[5,4]},"up":{"uv":[79,109],"uv_size":[-4,-5]},"down":{"uv":[83,104],"uv_size":[-4,5]}}},{"origin":[-7.2,12.6,-2.25],"size":[3.5,0.75,4.5],"pivot":[-4.95,13.35,0.5],"rotation":[0,0,7.5],"inflate":0.25,"uv":{"north":{"uv":[120,63],"uv_size":[4,1]},"east":{"uv":[77,84],"uv_size":[5,1]},"south":{"uv":[120,73],"uv_size":[4,1]},"west":{"uv":[99,43],"uv_size":[5,1]},"up":{"uv":[96,109],"uv_size":[-4,-5]},"down":{"uv":[100,104],"uv_size":[-4,5]}}},{"origin":[-8.95,14.1,-2.75],"size":[4,4,5.5],"pivot":[-5.95,14.1,0.5],"rotation":[0,0,22.5],"inflate":0.25,"uv":{"north":{"uv":[109,87],"uv_size":[4,4]},"east":{"uv":[96,75],"uv_size":[6,4]},"south":{"uv":[91,109],"uv_size":[4,4]},"west":{"uv":[96,79],"uv_size":[6,4]},"up":{"uv":[4,103],"uv_size":[-4,-6]},"down":{"uv":[101,14],"uv_size":[-4,6]}}}]},{"name":"LeftItemPivot","pivot":[-5.2,12.1,-2],"parent":"LeftArm"},{"name":"RightArm","pivot":[3.95,22.1,0],"parent":"Torso","rotation":[0,0,-10.5],"cubes":[{"origin":[2.95,11.1,-2],"size":[3,12,4],"pivot":[3.95,21.1,0],"rotation":[0,0,-7.5],"uv":{"north":{"uv":[74,70],"uv_size":[3,12]},"east":{"uv":[57,54],"uv_size":[4,12]},"south":{"uv":[75,0],"uv_size":[3,12]},"west":{"uv":[58,0],"uv_size":[4,12]},"up":{"uv":[116,87],"uv_size":[-3,-4]},"down":{"uv":[90,113],"uv_size":[-3,4]}}}]},{"name":"sleeveR","pivot":[3.65,20.9,0],"parent":"RightArm"},{"name":"transparentR","pivot":[5.25,17.1,0],"parent":"RightArm"},{"name":"RightCloakarm","pivot":[4.45,13.6,0.5],"parent":"RightArm","cubes":[{"origin":[3.95,13.35,-2.5],"size":[4,4,5],"pivot":[4.95,13.35,0.5],"rotation":[0,0,-7.5],"inflate":0.25,"uv":{"north":{"uv":[109,95],"uv_size":[4,4]},"east":{"uv":[0,106],"uv_size":[5,4]},"south":{"uv":[109,104],"uv_size":[4,4]},"west":{"uv":[26,106],"uv_size":[5,4]},"up":{"uv":[64,111],"uv_size":[-4,-5]},"down":{"uv":[75,106],"uv_size":[-4,5]}}},{"origin":[3.7,12.6,-2.25],"size":[3.5,0.75,4.5],"pivot":[4.95,13.35,0.5],"rotation":[0,0,-7.5],"inflate":0.25,"uv":{"north":{"uv":[120,86],"uv_size":[4,1]},"east":{"uv":[117,50],"uv_size":[5,1]},"south":{"uv":[120,87],"uv_size":[4,1]},"west":{"uv":[118,68],"uv_size":[5,1]},"up":{"uv":[9,112],"uv_size":[-4,-5]},"down":{"uv":[13,107],"uv_size":[-4,5]}}},{"origin":[4.95,14.1,-2.75],"size":[4,4,5.5],"pivot":[5.95,14.1,0.5],"rotation":[0,0,-22.5],"inflate":0.25,"uv":{"north":{"uv":[105,109],"uv_size":[4,4]},"east":{"uv":[97,31],"uv_size":[6,4]},"south":{"uv":[109,108],"uv_size":[4,4]},"west":{"uv":[95,97],"uv_size":[6,4]},"up":{"uv":[103,12],"uv_size":[-4,-6]},"down":{"uv":[103,20],"uv_size":[-4,6]}}},{"origin":[2.53632,13.65989,-2.5],"size":[4,7,5],"pivot":[4.45,20.6,0.5],"rotation":[0,0,-12.5],"uv":{"north":{"uv":[84,94],"uv_size":[4,7]},"east":{"uv":[83,43],"uv_size":[5,7]},"south":{"uv":[95,21],"uv_size":[4,7]},"west":{"uv":[45,83],"uv_size":[5,7]},"up":{"uv":[37,112],"uv_size":[-4,-5]},"down":{"uv":[112,59],"uv_size":[-4,5]}}}]},{"name":"RightItemPivot","pivot":[4.75,12.5,-2],"parent":"RightArm"},{"name":"Body","pivot":[0,24,0],"parent":"Torso"},{"name":"chestO","pivot":[0,24,0],"parent":"Body"},{"name":"skirt","pivot":[0,15.025,0.59875],"parent":"Body","cubes":[{"origin":[-4.45,10.5625,-2.39375],"size":[8.9,5.5125,5.25],"pivot":[0,15.025,0.59875],"rotation":[-0.5,0,0],"uv":{"north":{"uv":[49,36],"uv_size":[9,6]},"east":{"uv":[90,48],"uv_size":[5,6]},"south":{"uv":[50,12],"uv_size":[9,6]},"west":{"uv":[49,90],"uv_size":[5,6]},"up":{"uv":[75,5],"uv_size":[-9,-5]},"down":{"uv":[75,5],"uv_size":[-9,5]}}},{"origin":[0.3,10.56254,-2.63502],"size":[4.4,5.7625,5.75],"pivot":[1,16.025,0.59875],"rotation":[-0.49952,-0.02181,-2.4999],"uv":{"north":{"uv":[26,100],"uv_size":[4,6]},"east":{"uv":[75,24],"uv_size":[6,6]},"south":{"uv":[100,63],"uv_size":[4,6]},"west":{"uv":[77,30],"uv_size":[6,6]},"up":{"uv":[104,75],"uv_size":[-4,-6]},"down":{"uv":[75,100],"uv_size":[-4,6]}}},{"origin":[-2.75,12,-2.625],"size":[5.5,6,5.2],"uv":{"north":{"uv":[77,36],"uv_size":[6,6]},"east":{"uv":[90,54],"uv_size":[5,6]},"south":{"uv":[77,42],"uv_size":[6,6]},"west":{"uv":[0,91],"uv_size":[5,6]},"up":{"uv":[96,65],"uv_size":[-6,-5]},"down":{"uv":[60,91],"uv_size":[-6,5]}}},{"origin":[-3.25,11.75,-2.875],"size":[6.25,6,5.7],"uv":{"north":{"uv":[77,48],"uv_size":[6,6]},"east":{"uv":[77,54],"uv_size":[6,6]},"south":{"uv":[77,60],"uv_size":[6,6]},"west":{"uv":[77,66],"uv_size":[6,6]},"up":{"uv":[83,78],"uv_size":[-6,-6]},"down":{"uv":[84,0],"uv_size":[-6,6]}}},{"origin":[-4.58,15.25124,-2.0575],"size":[2.5875,2.075,4.515],"pivot":[-4.8025,13.98,1.25],"rotation":[0,0,15],"uv":{"north":{"uv":[119,37],"uv_size":[3,2]},"east":{"uv":[0,43],"uv_size":[5,2]},"south":{"uv":[119,39],"uv_size":[3,2]},"west":{"uv":[115,62],"uv_size":[5,2]},"up":{"uv":[7,117],"uv_size":[-3,-5]},"down":{"uv":[10,112],"uv_size":[-3,5]}}},{"origin":[1.9925,15.25124,-2.0575],"size":[2.5875,2.075,4.515],"pivot":[4.8025,13.98,1.25],"rotation":[0,0,-15],"uv":{"north":{"uv":[119,41],"uv_size":[3,2]},"east":{"uv":[116,30],"uv_size":[5,2]},"south":{"uv":[119,43],"uv_size":[3,2]},"west":{"uv":[116,45],"uv_size":[5,2]},"up":{"uv":[13,117],"uv_size":[-3,-5]},"down":{"uv":[19,112],"uv_size":[-3,5]}}}]},{"name":"bewbO","pivot":[-0.25,24,-2],"parent":"Body","rotation":[-17.5,0,0],"cubes":[{"origin":[-3.75,20,-2],"size":[7.5,4,3],"inflate":-0.001,"uv":{"north":{"uv":[50,86],"uv_size":[8,4]},"east":{"uv":[113,104],"uv_size":[3,4]},"south":{"uv":[0,87],"uv_size":[8,4]},"west":{"uv":[105,113],"uv_size":[3,4]},"up":{"uv":[109,15],"uv_size":[-8,-3]},"down":{"uv":[109,15],"uv_size":[-8,3]}}},{"origin":[-3.75,20,-2],"size":[7.5,4,3],"inflate":0.249,"uv":{"north":{"uv":[87,24],"uv_size":[8,4]},"east":{"uv":[113,108],"uv_size":[3,4]},"south":{"uv":[58,87],"uv_size":[8,4]},"west":{"uv":[0,114],"uv_size":[3,4]},"up":{"uv":[83,104],"uv_size":[-8,-3]},"down":{"uv":[109,83],"uv_size":[-8,3]}}}]},{"name":"bewbO2","pivot":[-0.25,20,-2],"parent":"bewbO","rotation":[60,0,0],"cubes":[{"origin":[-3.75,17,-2],"size":[7.5,3,3],"inflate":-0.002,"uv":{"north":{"uv":[101,86],"uv_size":[8,3]},"east":{"uv":[33,117],"uv_size":[3,3]},"south":{"uv":[101,89],"uv_size":[8,3]},"west":{"uv":[36,117],"uv_size":[3,3]},"up":{"uv":[100,104],"uv_size":[-8,-3]},"down":{"uv":[109,92],"uv_size":[-8,3]}}},{"origin":[-3.75,16.75,-2],"size":[7.5,3,3],"inflate":0.248,"uv":{"north":{"uv":[101,95],"uv_size":[8,3]},"east":{"uv":[39,117],"uv_size":[3,3]},"south":{"uv":[101,98],"uv_size":[8,3]},"west":{"uv":[117,47],"uv_size":[3,3]},"up":{"uv":[108,104],"uv_size":[-8,-3]},"down":{"uv":[110,75],"uv_size":[-8,3]}}}]},{"name":"scarf","pivot":[-0.5,24,-3],"parent":"Body","rotation":[0,0,1.5]},{"name":"scarf1","pivot":[-1.5,24,-3],"parent":"scarf"},{"name":"scarf2","pivot":[-0.4,19.8,-4.25],"parent":"scarf1"},{"name":"shorts","pivot":[0,15.025,0.59875],"parent":"Body"},{"name":"chestS","pivot":[0,24,0],"parent":"Body"},{"name":"bewbS","pivot":[-0.25,24,-2],"parent":"Body","rotation":[-17.5,0,0]},{"name":"bewbS2","pivot":[-0.25,20,-2],"parent":"bewbS","rotation":[60,0,0]},{"name":"Coat","pivot":[0,22,-1],"parent":"Body"},{"name":"CoatMiddle","pivot":[0,21.25,2.25],"parent":"Coat","cubes":[{"origin":[-3.66768,7,1.25],"size":[7,14,2],"pivot":[-0.16768,21,2.25],"rotation":[12.5,0,0],"uv":{"north":{"uv":[0,0],"uv_size":[7,14]},"east":{"uv":[31,94],"uv_size":[2,14]},"south":{"uv":[7,0],"uv_size":[7,14]},"west":{"uv":[95,83],"uv_size":[2,14]},"up":{"uv":[57,66],"uv_size":[-7,-2]},"down":{"uv":[116,99],"uv_size":[-7,2]}}},{"origin":[-3.66768,7,1.25],"size":[7,14,2],"pivot":[-0.16768,21,2.25],"rotation":[12.5,0,0],"inflate":0.25,"uv":{"north":{"uv":[0,14],"uv_size":[7,14]},"east":{"uv":[88,95],"uv_size":[2,14]},"south":{"uv":[14,0],"uv_size":[7,14]},"west":{"uv":[90,95],"uv_size":[2,14]},"up":{"uv":[117,81],"uv_size":[-7,-2]},"down":{"uv":[118,81],"uv_size":[-7,2]}}}]},{"name":"CoatLeft","pivot":[-3.5,21,0.75],"parent":"Coat","rotation":[0,0,10]},{"name":"leftcloakback","pivot":[-3.67365,20.98481,2.75],"parent":"CoatLeft","cubes":[{"origin":[-3.67365,5.98481,-0.25],"size":[4,15,3],"pivot":[-3.67365,20.98481,2.75],"rotation":[10,0,0],"inflate":0.25,"uv":{"north":{"uv":[10,45],"uv_size":[4,15]},"east":{"uv":[65,66],"uv_size":[3,15]},"south":{"uv":[14,45],"uv_size":[4,15]},"west":{"uv":[68,66],"uv_size":[3,15]},"up":{"uv":[118,104],"uv_size":[-4,-3]},"down":{"uv":[119,0],"uv_size":[-4,3]}}},{"origin":[-3.67365,5.98481,-0.25],"size":[4,15,3],"pivot":[-3.67365,20.98481,2.75],"rotation":[10,0,0],"uv":{"north":{"uv":[45,24],"uv_size":[4,15]},"east":{"uv":[0,69],"uv_size":[3,15]},"south":{"uv":[18,46],"uv_size":[4,15]},"west":{"uv":[3,69],"uv_size":[3,15]},"up":{"uv":[119,6],"uv_size":[-4,-3]},"down":{"uv":[119,6],"uv_size":[-4,3]}}}]},{"name":"leftcoatall","pivot":[-3.67365,20.98481,-0.25],"parent":"CoatLeft","cubes":[{"origin":[-3.67365,5.98481,-2.75],"size":[2,15,3],"pivot":[-3.67365,20.98481,-2.75],"rotation":[-10.08453,7.38542,-1.30962],"uv":{"north":{"uv":[63,91],"uv_size":[2,15]},"east":{"uv":[36,71],"uv_size":[3,15]},"south":{"uv":[92,0],"uv_size":[2,15]},"west":{"uv":[39,71],"uv_size":[3,15]},"up":{"uv":[121,58],"uv_size":[-2,-3]},"down":{"uv":[121,74],"uv_size":[-2,3]}}},{"origin":[-3.67365,5.98481,-2.75],"size":[2,15,3],"pivot":[-3.67365,20.98481,-2.75],"rotation":[-10.08453,7.38542,-1.30962],"inflate":0.25,"uv":{"north":{"uv":[8,92],"uv_size":[2,15]},"east":{"uv":[50,71],"uv_size":[3,15]},"south":{"uv":[10,92],"uv_size":[2,15]},"west":{"uv":[53,71],"uv_size":[3,15]},"up":{"uv":[121,93],"uv_size":[-2,-3]},"down":{"uv":[121,96],"uv_size":[-2,3]}}},{"origin":[-3.67365,6.98481,-2.5],"size":[2,15,5],"pivot":[-3.67365,21.98481,0],"rotation":[0,0,5],"uv":{"north":{"uv":[12,92],"uv_size":[2,15]},"east":{"uv":[7,14],"uv_size":[5,15]},"south":{"uv":[14,92],"uv_size":[2,15]},"west":{"uv":[12,14],"uv_size":[5,15]},"up":{"uv":[49,121],"uv_size":[-2,-5]},"down":{"uv":[118,64],"uv_size":[-2,5]}}},{"origin":[-3.67365,5.98481,-2.5],"size":[2,15,5],"pivot":[-3.67365,20.98481,0],"rotation":[0,0,5],"inflate":0.25,"uv":{"north":{"uv":[65,93],"uv_size":[2,15]},"east":{"uv":[17,14],"uv_size":[5,15]},"south":{"uv":[67,93],"uv_size":[2,15]},"west":{"uv":[22,0],"uv_size":[5,15]},"up":{"uv":[71,121],"uv_size":[-2,-5]},"down":{"uv":[73,116],"uv_size":[-2,5]}}}]},{"name":"leftcoatflap","pivot":[-1.42365,18.98481,-3.25],"parent":"leftcoatall","cubes":[{"origin":[-7.67365,16.98481,-4.45],"size":[5.25,6,2],"pivot":[-3.67365,19.98481,-3.45],"rotation":[-12.45165,-20.30028,4.32445],"uv":{"north":{"uv":[91,77],"uv_size":[5,6]},"east":{"uv":[36,61],"uv_size":[2,6]},"south":{"uv":[92,15],"uv_size":[5,6]},"west":{"uv":[59,66],"uv_size":[2,6]},"up":{"uv":[121,53],"uv_size":[-5,-2]},"down":{"uv":[121,53],"uv_size":[-5,2]}}}]},{"name":"Pocket","pivot":[-3.92365,12.98481,-1.75],"parent":"leftcoatall","rotation":[0,-25,7.5],"cubes":[{"origin":[-4.92365,8.98481,-3.25],"size":[1,4,3],"uv":{"north":{"uv":[120,112],"uv_size":[1,4]},"east":{"uv":[115,18],"uv_size":[3,4]},"south":{"uv":[120,116],"uv_size":[1,4]},"west":{"uv":[115,22],"uv_size":[3,4]},"up":{"uv":[93,98],"uv_size":[-1,-3]},"down":{"uv":[100,109],"uv_size":[-1,3]}}},{"origin":[-4.92365,8.98481,-3.25],"size":[1,4,3],"inflate":0.25,"uv":{"north":{"uv":[120,120],"uv_size":[1,4]},"east":{"uv":[115,26],"uv_size":[3,4]},"south":{"uv":[121,0],"uv_size":[1,4]},"west":{"uv":[28,115],"uv_size":[3,4]},"up":{"uv":[31,124],"uv_size":[-1,-3]},"down":{"uv":[92,121],"uv_size":[-1,3]}}}]},{"name":"Strap","pivot":[-3.67365,7.98481,-0.25],"parent":"leftcoatall","cubes":[{"origin":[-2.67365,2.98481,-4.25],"size":[1,6,0],"pivot":[-1.67365,6.98481,-3.25],"rotation":[0,0,-10],"uv":{"north":{"uv":[9,51],"uv_size":[1,6]},"east":{"uv":[0,0],"uv_size":[0,6]},"south":{"uv":[56,46],"uv_size":[1,6]},"west":{"uv":[0,0],"uv_size":[0,6]},"up":{"uv":[1,0],"uv_size":[-1,0]},"down":{"uv":[1,0],"uv_size":[-1,0]}}}]},{"name":"CoatRight","pivot":[3.5,21,0.75],"parent":"Coat","rotation":[0,0,-10]},{"name":"rightcloakback","pivot":[3.67365,20.98481,2.75],"parent":"CoatRight","cubes":[{"origin":[-0.32635,5.98481,-0.25],"size":[4,15,3],"pivot":[3.67365,20.98481,2.75],"rotation":[10,0,0],"inflate":0.25,"uv":{"north":{"uv":[22,46],"uv_size":[4,15]},"east":{"uv":[56,71],"uv_size":[3,15]},"south":{"uv":[26,46],"uv_size":[4,15]},"west":{"uv":[71,66],"uv_size":[3,15]},"up":{"uv":[119,12],"uv_size":[-4,-3]},"down":{"uv":[119,35],"uv_size":[-4,3]}}},{"origin":[-0.32635,5.98481,-0.25],"size":[4,15,3],"pivot":[3.67365,20.98481,2.75],"rotation":[10,0,0],"uv":{"north":{"uv":[30,46],"uv_size":[4,15]},"east":{"uv":[6,72],"uv_size":[3,15]},"south":{"uv":[34,46],"uv_size":[4,15]},"west":{"uv":[9,72],"uv_size":[3,15]},"up":{"uv":[119,41],"uv_size":[-4,-3]},"down":{"uv":[119,55],"uv_size":[-4,3]}}}]},{"name":"rightcoatall","pivot":[3.67365,20.98481,-0.25],"parent":"CoatRight","cubes":[{"origin":[1.67365,5.98481,-2.5],"size":[2,15,5],"pivot":[3.67365,20.98481,0],"rotation":[0,0,-5],"inflate":0.25,"uv":{"north":{"uv":[69,93],"uv_size":[2,15]},"east":{"uv":[22,15],"uv_size":[5,15]},"south":{"uv":[93,83],"uv_size":[2,15]},"west":{"uv":[27,0],"uv_size":[5,15]},"up":{"uv":[75,121],"uv_size":[-2,-5]},"down":{"uv":[118,83],"uv_size":[-2,5]}}},{"origin":[1.67365,5.98481,-2.75],"size":[2,15,3],"pivot":[3.67365,20.98481,-2.75],"rotation":[-10.08453,-7.38542,1.30962],"inflate":0.25,"uv":{"north":{"uv":[94,0],"uv_size":[2,15]},"east":{"uv":[12,72],"uv_size":[3,15]},"south":{"uv":[16,94],"uv_size":[2,15]},"west":{"uv":[59,72],"uv_size":[3,15]},"up":{"uv":[8,123],"uv_size":[-2,-3]},"down":{"uv":[10,120],"uv_size":[-2,3]}}},{"origin":[1.67365,5.98481,-2.75],"size":[2,15,3],"pivot":[3.67365,20.98481,-2.75],"rotation":[-10.08453,-7.38542,1.30962],"uv":{"north":{"uv":[18,94],"uv_size":[2,15]},"east":{"uv":[62,72],"uv_size":[3,15]},"south":{"uv":[20,94],"uv_size":[2,15]},"west":{"uv":[15,73],"uv_size":[3,15]},"up":{"uv":[12,123],"uv_size":[-2,-3]},"down":{"uv":[122,11],"uv_size":[-2,3]}}},{"origin":[1.67365,6.98481,-2.5],"size":[2,15,5],"pivot":[3.67365,21.98481,0],"rotation":[0,0,-5],"uv":{"north":{"uv":[22,94],"uv_size":[2,15]},"east":{"uv":[27,15],"uv_size":[5,15]},"south":{"uv":[24,94],"uv_size":[2,15]},"west":{"uv":[0,28],"uv_size":[5,15]},"up":{"uv":[95,121],"uv_size":[-2,-5]},"down":{"uv":[97,116],"uv_size":[-2,5]}}}]},{"name":"rightcoatflap","pivot":[1.42365,18.98481,-3.25],"parent":"rightcoatall","cubes":[{"origin":[2.42365,16.98481,-4.45],"size":[5.25,6,2],"pivot":[3.67365,19.98481,-3.45],"rotation":[-12.45165,20.30028,-4.32445],"uv":{"north":{"uv":[26,94],"uv_size":[5,6]},"east":{"uv":[30,79],"uv_size":[2,6]},"south":{"uv":[71,94],"uv_size":[5,6]},"west":{"uv":[67,112],"uv_size":[2,6]},"up":{"uv":[121,71],"uv_size":[-5,-2]},"down":{"uv":[121,88],"uv_size":[-5,2]}}}]},{"name":"Pocket2","pivot":[3.92365,12.98481,-1.75],"parent":"rightcoatall","rotation":[0,25,-7.5],"cubes":[{"origin":[3.92365,8.98481,-3.25],"size":[1,4,3],"uv":{"north":{"uv":[121,4],"uv_size":[1,4]},"east":{"uv":[115,58],"uv_size":[3,4]},"south":{"uv":[121,25],"uv_size":[1,4]},"west":{"uv":[115,112],"uv_size":[3,4]},"up":{"uv":[93,124],"uv_size":[-1,-3]},"down":{"uv":[94,121],"uv_size":[-1,3]}}},{"origin":[3.92365,8.98481,-3.25],"size":[1,4,3],"inflate":0.25,"uv":{"north":{"uv":[28,121],"uv_size":[1,4]},"east":{"uv":[116,41],"uv_size":[3,4]},"south":{"uv":[29,121],"uv_size":[1,4]},"west":{"uv":[42,116],"uv_size":[3,4]},"up":{"uv":[95,124],"uv_size":[-1,-3]},"down":{"uv":[122,94],"uv_size":[-1,3]}}}]},{"name":"Strap2","pivot":[3.67365,7.98481,-0.25],"parent":"rightcoatall","cubes":[{"origin":[1.67365,2.98481,-4.25],"size":[1,6,0],"pivot":[1.67365,6.98481,-3.25],"rotation":[0,0,10],"uv":{"north":{"uv":[30,100],"uv_size":[1,6]},"east":{"uv":[0,0],"uv_size":[0,6]},"south":{"uv":[2,118],"uv_size":[1,6]},"west":{"uv":[0,0],"uv_size":[0,6]},"up":{"uv":[1,0],"uv_size":[-1,0]},"down":{"uv":[1,0],"uv_size":[-1,0]}}}]},{"name":"tail","pivot":[0,14,1.25],"parent":"Body","rotation":[-67.5,0,0],"cubes":[{"origin":[-1,13,0.25],"size":[2,2,4],"uv":{"north":{"uv":[121,16],"uv_size":[2,2]},"east":{"uv":[117,78],"uv_size":[4,2]},"south":{"uv":[121,30],"uv_size":[2,2]},"west":{"uv":[117,94],"uv_size":[4,2]},"up":{"uv":[120,62],"uv_size":[-2,-4]},"down":{"uv":[61,118],"uv_size":[-2,4]}}},{"origin":[-1,13,0.25],"size":[2,2,4],"inflate":0.25,"uv":{"north":{"uv":[121,45],"uv_size":[2,2]},"east":{"uv":[118,64],"uv_size":[4,2]},"south":{"uv":[47,121],"uv_size":[2,2]},"west":{"uv":[118,66],"uv_size":[4,2]},"up":{"uv":[63,122],"uv_size":[-2,-4]},"down":{"uv":[69,118],"uv_size":[-2,4]}}}]},{"name":"tail2","pivot":[0,14,4],"parent":"tail","cubes":[{"origin":[-1,13,4],"size":[2,2,5],"uv":{"north":{"uv":[121,51],"uv_size":[2,2]},"east":{"uv":[99,116],"uv_size":[5,2]},"south":{"uv":[121,53],"uv_size":[2,2]},"west":{"uv":[116,99],"uv_size":[5,2]},"up":{"uv":[118,109],"uv_size":[-2,-5]},"down":{"uv":[111,116],"uv_size":[-2,5]}}},{"origin":[-1,13,4],"size":[2,2,5],"inflate":0.25,"uv":{"north":{"uv":[121,55],"uv_size":[2,2]},"east":{"uv":[116,109],"uv_size":[5,2]},"south":{"uv":[69,121],"uv_size":[2,2]},"west":{"uv":[111,116],"uv_size":[5,2]},"up":{"uv":[118,121],"uv_size":[-2,-5]},"down":{"uv":[6,117],"uv_size":[-2,5]}}}]},{"name":"tail3","pivot":[0,14,8.75],"parent":"tail2","rotation":[2.5,0,0],"cubes":[{"origin":[-1,13,8.75],"size":[2,2,3],"uv":{"north":{"uv":[121,69],"uv_size":[2,2]},"east":{"uv":[12,120],"uv_size":[3,2]},"south":{"uv":[71,121],"uv_size":[2,2]},"west":{"uv":[120,14],"uv_size":[3,2]},"up":{"uv":[17,123],"uv_size":[-2,-3]},"down":{"uv":[19,120],"uv_size":[-2,3]}}},{"origin":[-1,13,8.75],"size":[2,2,3],"inflate":0.25,"uv":{"north":{"uv":[73,121],"uv_size":[2,2]},"east":{"uv":[120,18],"uv_size":[3,2]},"south":{"uv":[121,74],"uv_size":[2,2]},"west":{"uv":[19,120],"uv_size":[3,2]},"up":{"uv":[122,23],"uv_size":[-2,-3]},"down":{"uv":[24,120],"uv_size":[-2,3]}}}]},{"name":"tail4","pivot":[0,14,11.5],"parent":"tail3","rotation":[2.5,0,0],"cubes":[{"origin":[-1,13,11.5],"size":[2,2,2],"uv":{"north":{"uv":[75,121],"uv_size":[2,2]},"east":{"uv":[77,121],"uv_size":[2,2]},"south":{"uv":[121,78],"uv_size":[2,2]},"west":{"uv":[79,121],"uv_size":[2,2]},"up":{"uv":[123,82],"uv_size":[-2,-2]},"down":{"uv":[123,82],"uv_size":[-2,2]}}},{"origin":[-1,13,11.5],"size":[2,2,2],"inflate":0.25,"uv":{"north":{"uv":[84,121],"uv_size":[2,2]},"east":{"uv":[121,84],"uv_size":[2,2]},"south":{"uv":[87,121],"uv_size":[2,2]},"west":{"uv":[121,88],"uv_size":[2,2]},"up":{"uv":[91,123],"uv_size":[-2,-2]},"down":{"uv":[123,90],"uv_size":[-2,2]}}}]},{"name":"smoke1","pivot":[0,20,-8],"parent":"Body"},{"name":"smoke2","pivot":[0,20,8],"parent":"Body"},{"name":"smoke3","pivot":[-9,20,0],"parent":"Body"},{"name":"smoke4","pivot":[9,20,0],"parent":"Body"},{"name":"RightParrotPivot","pivot":[6,24,0],"parent":"Body"},{"name":"LeftParrotPivot","pivot":[-6,24,0],"parent":"Body"},{"name":"LeftLeg","pivot":[-2.65,12,0],"parent":"root","rotation":[0,0,-2.5],"cubes":[{"origin":[-4.15,0,-2],"size":[4,12,4],"uv":{"north":{"uv":[38,59],"uv_size":[4,12]},"east":{"uv":[8,60],"uv_size":[4,12]},"south":{"uv":[12,60],"uv_size":[4,12]},"west":{"uv":[16,61],"uv_size":[4,12]},"up":{"uv":[114,79],"uv_size":[-4,-4]},"down":{"uv":[87,110],"uv_size":[-4,4]}}},{"origin":[-4.15,0,-2],"size":[4,12,4],"inflate":0.25,"uv":{"north":{"uv":[20,61],"uv_size":[4,12]},"east":{"uv":[24,61],"uv_size":[4,12]},"south":{"uv":[28,61],"uv_size":[4,12]},"west":{"uv":[32,61],"uv_size":[4,12]},"up":{"uv":[115,4],"uv_size":[-4,-4]},"down":{"uv":[115,4],"uv_size":[-4,4]}}}]},{"name":"RightLeg","pivot":[2.15,12,0],"parent":"root","rotation":[0,0,2.5],"cubes":[{"origin":[0.15,0,-2],"size":[4,12,4],"inflate":0.25,"uv":{"north":{"uv":[62,24],"uv_size":[4,12]},"east":{"uv":[63,12],"uv_size":[4,12]},"south":{"uv":[42,64],"uv_size":[4,12]},"west":{"uv":[46,64],"uv_size":[4,12]},"up":{"uv":[115,26],"uv_size":[-4,-4]},"down":{"uv":[115,26],"uv_size":[-4,4]}}}]},{"name":"monst3r","pivot":[13,42,13]},{"name":"minimons","pivot":[13,40,12.08812],"parent":"monst3r"},{"name":"minihead","pivot":[13.15,42.75,12.98812],"parent":"minimons","rotation":[-12.5,0,0],"cubes":[{"origin":[11.88041,40.60201,14.1734],"size":[0.9,1.75,2.65],"pivot":[11.9,42.25,14.83812],"rotation":[-16.11393,4.52698,17.09324],"uv":{"north":{"uv":[176,29.35],"uv_size":[0.9,1.75]},"east":{"uv":[176,29.35],"uv_size":[2.65,1.75]},"south":{"uv":[176,29.35],"uv_size":[0.9,1.75]},"west":{"uv":[176,27.35],"uv_size":[2.65,1.75]},"up":{"uv":[176,29.35],"uv_size":[0.9,2.65]},"down":{"uv":[176,29.35],"uv_size":[0.9,2.65]}}},{"origin":[13.21959,40.60201,14.1734],"size":[0.9,1.75,2.65],"pivot":[14.1,42.25,14.83812],"rotation":[-16.11393,-4.52698,-17.09324],"uv":{"north":{"uv":[176.9,29.35],"uv_size":[-0.9,1.75]},"east":{"uv":[178.65,27.35],"uv_size":[-2.65,1.75]},"south":{"uv":[176.9,29.35],"uv_size":[-0.9,1.75]},"west":{"uv":[178.65,29.35],"uv_size":[-2.65,1.75]},"up":{"uv":[176.9,29.35],"uv_size":[-0.9,2.65]},"down":{"uv":[176.9,29.35],"uv_size":[-0.9,2.65]}}},{"origin":[11.75,41.51418,12.76409],"size":[2.5,1.95,1.85],"pivot":[13,42.95,14.18812],"rotation":[-25,0,0],"uv":{"north":{"uv":[182,10],"uv_size":[3,2]},"east":{"uv":[192,2],"uv_size":[2,2]},"south":{"uv":[185,10],"uv_size":[3,2]},"west":{"uv":[192,4],"uv_size":[2,2]},"up":{"uv":[190,8],"uv_size":[-3,-2]},"down":{"uv":[190,8],"uv_size":[-3,2]}}},{"origin":[11.5,41.35,13.18812],"size":[3,2.25,2],"uv":{"north":{"uv":[188,0],"uv_size":[3,2]},"east":{"uv":[182,16],"uv_size":[2,2]},"south":{"uv":[188,2.3],"uv_size":[3,2]},"west":{"uv":[192,8],"uv_size":[2,2]},"up":{"uv":[191,6],"uv_size":[-3,-2]},"down":{"uv":[185,12],"uv_size":[-3,2]}}},{"origin":[12.15,42.35,10.98812],"size":[1.75,2,2.5],"pivot":[13.15,42.35,12.48812],"rotation":[-42.5,0,0],"uv":{"north":{"uv":[192,10],"uv_size":[2,2]},"east":{"uv":[185,12],"uv_size":[3,2]},"south":{"uv":[176,17],"uv_size":[2,2]},"west":{"uv":[188,10],"uv_size":[3,2]},"up":{"uv":[208,11],"uv_size":[-3,-3]},"down":{"uv":[178,14],"uv_size":[-2,3]}}},{"origin":[12.375,40.5,12.23812],"size":[1.25,2.25,1.25],"pivot":[13.375,40.75,12.98812],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[196,8],"uv_size":[1,2]},"east":{"uv":[185,20],"uv_size":[1,2]},"south":{"uv":[186,20],"uv_size":[1,2]},"west":{"uv":[196,10],"uv_size":[1,2]},"up":{"uv":[196,23],"uv_size":[-1,-1]},"down":{"uv":[197,22],"uv_size":[-1,1]}}},{"origin":[12.975,41,11.68812],"size":[1.85,2,1.4],"pivot":[13.975,40.75,12.58812],"rotation":[-40.97983,-36.09389,0.27676],"uv":{"north":{"uv":[178,17],"uv_size":[2,2]},"east":{"uv":[187,20],"uv_size":[1,2]},"south":{"uv":[180,17],"uv_size":[2,2]},"west":{"uv":[188,20],"uv_size":[1,2]},"up":{"uv":[198,6],"uv_size":[-2,-1]},"down":{"uv":[198,16],"uv_size":[-2,1]}}},{"origin":[11.175,41,11.68812],"size":[1.85,2,1.4],"pivot":[12.025,40.75,12.58812],"rotation":[-40.97983,36.09389,-0.27676],"uv":{"north":{"uv":[180,17],"uv_size":[-2,2]},"east":{"uv":[189,20],"uv_size":[-1,2]},"south":{"uv":[182,17],"uv_size":[-2,2]},"west":{"uv":[188,20],"uv_size":[-1,2]},"up":{"uv":[196,6],"uv_size":[2,-1]},"down":{"uv":[196,16],"uv_size":[2,1]}}}]},{"name":"minijaw","pivot":[13,42.25,14.53812],"parent":"minihead"},{"name":"minimoneyes","pivot":[13,41.15,14.98812],"parent":"minihead"},{"name":"rightMiniEye","pivot":[13,41.15,14.98812],"parent":"minimoneyes"},{"name":"leftMiniEye","pivot":[13,41.15,14.98812],"parent":"minimoneyes"},{"name":"minibody","pivot":[13,41.25,13.63812],"parent":"minimons","rotation":[-32,0,0],"cubes":[{"origin":[11.9,37.466,12.23012],"size":[2.2,4.62,1.012],"pivot":[13.22,40.106,13.24212],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[176,0],"uv_size":[3,5]},"east":{"uv":[185,14],"uv_size":[1,5]},"south":{"uv":[179,0],"uv_size":[3,5]},"west":{"uv":[186,14],"uv_size":[1,5]},"up":{"uv":[198,7],"uv_size":[-3,-1]},"down":{"uv":[198,7],"uv_size":[-3,1]}}},{"origin":[11.68,38.346,12.89012],"size":[2.64,2.64,1.672],"pivot":[13.44,40.106,13.24212],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[185,0],"uv_size":[3,3]},"east":{"uv":[178,14],"uv_size":[2,3]},"south":{"uv":[185,3],"uv_size":[3,3]},"west":{"uv":[180,14],"uv_size":[2,3]},"up":{"uv":[185,16],"uv_size":[-3,-2]},"down":{"uv":[193,6],"uv_size":[-3,2]}}},{"origin":[12.12,37.598,12.58212],"size":[1.76,3.872,1.628],"pivot":[13.22,40.106,13.06612],"rotation":[-5,0,0],"uv":{"north":{"uv":[185,6],"uv_size":[2,4]},"east":{"uv":[176,10],"uv_size":[2,4]},"south":{"uv":[178,10],"uv_size":[2,4]},"west":{"uv":[180,10],"uv_size":[2,4]},"up":{"uv":[190,17],"uv_size":[-2,-2]},"down":{"uv":[193,13],"uv_size":[-2,2]}}},{"origin":[12.384,36.234,11.52612],"size":[2.2,4.4,0.748],"pivot":[13.704,38.874,12.62612],"rotation":[-39.77477,9.68958,-28.77937],"uv":{"north":{"uv":[185,0],"uv_size":[-3,5]},"east":{"uv":[192,8],"uv_size":[-1,5]},"south":{"uv":[185,5],"uv_size":[-3,5]},"west":{"uv":[192,0],"uv_size":[-1,5]},"up":{"uv":[195,13],"uv_size":[3,-1]},"down":{"uv":[195,13],"uv_size":[3,1]}}},{"origin":[11.416,36.234,11.52612],"size":[2.2,4.4,0.748],"pivot":[12.296,38.874,12.62612],"rotation":[-39.77477,-9.68958,28.77937],"uv":{"north":{"uv":[182,0],"uv_size":[3,5]},"east":{"uv":[191,0],"uv_size":[1,5]},"south":{"uv":[182,5],"uv_size":[3,5]},"west":{"uv":[191,8],"uv_size":[1,5]},"up":{"uv":[198,13],"uv_size":[-3,-1]},"down":{"uv":[198,13],"uv_size":[-3,1]}}}]},{"name":"miniR1","pivot":[11.48,39.41,14.14812],"parent":"minibody","rotation":[-4.08619,17.07228,-3.90399],"cubes":[{"origin":[10.70267,38.41893,13.60759],"size":[1.1,1.276,1.76],"pivot":[11.58267,38.59493,14.48759],"rotation":[-37.5,0,0],"uv":{"north":{"uv":[200,15],"uv_size":[-1,1]},"east":{"uv":[200,9],"uv_size":[-2,1]},"south":{"uv":[200,16],"uv_size":[-1,1]},"west":{"uv":[187,22],"uv_size":[-2,1]},"up":{"uv":[198,12],"uv_size":[1,-2]},"down":{"uv":[187,22],"uv_size":[1,2]}}},{"origin":[10.87867,38.68293,14.70759],"size":[0.66,0.88,1.54],"pivot":[11.31867,38.68293,14.48759],"rotation":[-37.92445,7.9185,-6.12673],"uv":{"north":{"uv":[200,17],"uv_size":[-1,1]},"east":{"uv":[200,12],"uv_size":[-2,1]},"south":{"uv":[195,23],"uv_size":[-1,1]},"west":{"uv":[190,22],"uv_size":[-2,1]},"up":{"uv":[190,24],"uv_size":[1,-2]},"down":{"uv":[191,22],"uv_size":[1,2]}}}]},{"name":"miniR2","pivot":[11.14,38.12,13.51812],"parent":"minibody","rotation":[-18.97939,10.05542,-28.61646],"cubes":[{"origin":[10.31152,37.08774,12.85441],"size":[1.1,1.276,1.76],"pivot":[11.19152,37.26374,13.73441],"rotation":[-37.5,0,0],"uv":{"north":{"uv":[189,23],"uv_size":[-1,1]},"east":{"uv":[182,22],"uv_size":[-2,1]},"south":{"uv":[190,23],"uv_size":[-1,1]},"west":{"uv":[200,3],"uv_size":[-2,1]},"up":{"uv":[177,24],"uv_size":[1,-2]},"down":{"uv":[198,4],"uv_size":[1,2]}}},{"origin":[10.48752,37.35174,13.95441],"size":[0.66,0.88,1.54],"pivot":[10.92752,37.35174,13.73441],"rotation":[-37.92445,7.9185,-6.12673],"uv":{"north":{"uv":[200,13],"uv_size":[-1,1]},"east":{"uv":[200,6],"uv_size":[-2,1]},"south":{"uv":[200,14],"uv_size":[-1,1]},"west":{"uv":[184,22],"uv_size":[-2,1]},"up":{"uv":[198,9],"uv_size":[1,-2]},"down":{"uv":[184,22],"uv_size":[1,2]}}}]},{"name":"miniL2","pivot":[14.86,38.12,13.51812],"parent":"minibody","rotation":[-18.97939,-10.05542,28.61646],"cubes":[{"origin":[14.58848,37.08774,12.85441],"size":[1.1,1.276,1.76],"pivot":[14.80848,37.26374,13.73441],"rotation":[-37.5,0,0],"uv":{"north":{"uv":[188,23],"uv_size":[1,1]},"east":{"uv":[198,3],"uv_size":[2,1]},"south":{"uv":[189,23],"uv_size":[1,1]},"west":{"uv":[180,22],"uv_size":[2,1]},"up":{"uv":[178,24],"uv_size":[-1,-2]},"down":{"uv":[199,4],"uv_size":[-1,2]}}},{"origin":[14.85248,37.35174,13.95441],"size":[0.66,0.88,1.54],"pivot":[15.07248,37.35174,13.73441],"rotation":[-37.92445,-7.9185,6.12673],"uv":{"north":{"uv":[199,13],"uv_size":[1,1]},"east":{"uv":[182,22],"uv_size":[2,1]},"south":{"uv":[199,14],"uv_size":[1,1]},"west":{"uv":[198,6],"uv_size":[2,1]},"up":{"uv":[199,9],"uv_size":[-1,-2]},"down":{"uv":[185,22],"uv_size":[-1,2]}}}]},{"name":"miniL1","pivot":[14.52,39.41,14.14812],"parent":"minibody","rotation":[-4.08619,-17.07228,3.90399],"cubes":[{"origin":[14.19733,38.41893,13.60759],"size":[1.1,1.276,1.76],"pivot":[14.41733,38.59493,14.48759],"rotation":[-37.5,0,0],"uv":{"north":{"uv":[199,15],"uv_size":[1,1]},"east":{"uv":[185,22],"uv_size":[2,1]},"south":{"uv":[199,16],"uv_size":[1,1]},"west":{"uv":[198,9],"uv_size":[2,1]},"up":{"uv":[199,12],"uv_size":[-1,-2]},"down":{"uv":[188,22],"uv_size":[-1,2]}}},{"origin":[14.46133,38.68293,14.70759],"size":[0.66,0.88,1.54],"pivot":[14.68133,38.68293,14.48759],"rotation":[-37.92445,-7.9185,6.12673],"uv":{"north":{"uv":[199,17],"uv_size":[1,1]},"east":{"uv":[188,22],"uv_size":[2,1]},"south":{"uv":[194,23],"uv_size":[1,1]},"west":{"uv":[198,12],"uv_size":[2,1]},"up":{"uv":[191,24],"uv_size":[-1,-2]},"down":{"uv":[192,22],"uv_size":[-1,2]}}}]},{"name":"minitail","pivot":[13,38.594,12.42612],"parent":"minibody","rotation":[-47.5,0,0],"cubes":[{"origin":[12.208,36.834,12.11812],"size":[1.584,1.76,1.54],"pivot":[13.088,36.834,12.77812],"rotation":[12,0,0],"uv":{"north":{"uv":[193,14],"uv_size":[2,2]},"east":{"uv":[192,17],"uv_size":[2,2]},"south":{"uv":[194,0],"uv_size":[2,2]},"west":{"uv":[194,2],"uv_size":[2,2]},"up":{"uv":[196,6],"uv_size":[-2,-2]},"down":{"uv":[184,18],"uv_size":[-2,2]}}}]},{"name":"minitail2","pivot":[13,37.494,12.42612],"parent":"minitail","rotation":[22,0,0],"cubes":[{"origin":[12.34,36.394,10.71012],"size":[1.32,1.76,1.54],"pivot":[13.22,36.394,11.37012],"rotation":[-40,0,0],"uv":{"north":{"uv":[194,8],"uv_size":[2,2]},"east":{"uv":[194,10],"uv_size":[2,2]},"south":{"uv":[194,16],"uv_size":[2,2]},"west":{"uv":[194,18],"uv_size":[2,2]},"up":{"uv":[178,21],"uv_size":[-2,-2]},"down":{"uv":[180,19],"uv_size":[-2,2]}}}]},{"name":"minitail3","pivot":[13.11,36.614,11.57612],"parent":"minitail2","rotation":[-47.5,0,0],"cubes":[{"origin":[12.45,35.78383,10.28337],"size":[1.1,1.76,0.88],"pivot":[13.33,35.78383,10.28337],"rotation":[-40,0,0],"uv":{"north":{"uv":[192,22],"uv_size":[1,2]},"east":{"uv":[198,16],"uv_size":[1,2]},"south":{"uv":[193,22],"uv_size":[1,2]},"west":{"uv":[198,18],"uv_size":[1,2]},"up":{"uv":[200,19],"uv_size":[-1,-1]},"down":{"uv":[196,23],"uv_size":[-1,1]}}}]},{"name":"puffs","pivot":[13,41,15.08812],"parent":"minimons"},{"name":"puff5","pivot":[16,41,13.08812],"parent":"puffs"},{"name":"puff6","pivot":[10,41,13.08812],"parent":"puffs"},{"name":"puff7","pivot":[13,41,10.08812],"parent":"puffs"},{"name":"puff8","pivot":[13,41,17.08812],"parent":"puffs"}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/mikie.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/mikie.anim.json new file mode 100644 index 0000000..7546a79 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/mikie.anim.json @@ -0,0 +1 @@ +{"autoplay":["i3","i_ears","i_ears2"],"clips":{"i3":{"loop":"loop","length":4,"bones":{"head":{"rotation":[[0,0,0,2.5],[1,0,0,0],[2,0,0,-2.5],[3,0,0,0],[4,0,0,2.5]]},"front_hair":{"rotation":[[0,0,0,-2.5],[1,0,0,0],[2,0,0,2.5],[3,0,0,0],[4,0,0,-2.5]]}}},"blink":{"loop":"once","length":1.52,"bones":{"head":{"scale":[[0,1,1,1],[0.44,1.005,0.97,1],[0.72,1.005,0.97,1],[1.52,1,1,1]]},"lashes":{"position":[[0,0,0,0],[0.12,0,-0.25,0],[0.4,0,-1.25,0],[0.48,0,-1.35,0],[0.56,0,-1.25,0],[0.76,0,-1.25,0],[1.52,0,0,0]]},"blink2":{"position":[[0,0,0,0],[0.2,0,0,-1.1],[0.76,0,0,-1.1],[1.16,0,0,-1.1],[1.52,0,0,0]]},"blink3":{"position":[[0,0,0,0],[0.44,0,0,-1],[0.76,0,0,-1],[1.52,0,0,0]]}}},"i_ears":{"loop":"loop","length":2,"bones":{"head":{"rotation":[[0,0,0,0],[0.48,2.5,0,0],[1,0,0,0],[1.52,2.5,0,0],[2,0,0,0]]},"e2":{"rotation":[[0,0,0,0],[0.32,-7.5,0,0],[1,13.21706,-5.3751,30.07359],[1.68,14.70409,-2.05609,11.50378],[2,0,0,0]],"scale":[[0,0.975,1.025,1],[1,1.025,0.975,1],[2,0.975,1.025,1]]},"e1":{"rotation":[[0,0,0,0],[0.32,-7.5,0,0],[1,13.21706,5.3751,-30.07359],[1.68,14.70409,2.05609,-11.50378],[2,0,0,0]],"scale":[[0,0.975,1.025,1],[1,1.025,0.975,1],[2,0.975,1.025,1]]},"body":{"rotation":[[0,0,2.5,0],[0.48,2.5,0.1,0],[1,0,-2.5,0],[1.52,2.5,0.1,0],[2,0,2.5,0]]}}},"tail swirl":{"loop":"once","length":0,"bones":{"tail":{"rotation":[[0,-25,-7.5,0]]},"t1":{"rotation":[[0,0,-42.5,0]]},"t2":{"rotation":[[0,0,-30,0]]},"t3":{"rotation":[[0,0,-35,0]]},"bone":{"rotation":[[0,-25,-27.5,0]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/mikie.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/mikie.geo.json new file mode 100644 index 0000000..a2bc71a --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/mikie.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.mikie","texture_width":160,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"whole","pivot":[0,1,0]},{"name":"body","pivot":[0,13,0],"parent":"whole"},{"name":"head","pivot":[0,22.75,0],"parent":"body","cubes":[{"origin":[-2.8,28.6,-2.9],"size":[5.7,0.95,5.7],"uv":{"north":{"uv":[8.032,25.032],"uv_size":[5.936,0.936]},"east":{"uv":[8.032,26.032],"uv_size":[5.936,0.936]},"south":{"uv":[8.032,27.032],"uv_size":[5.936,0.936]},"west":{"uv":[27.032,11.032],"uv_size":[5.936,0.936]},"up":{"uv":[29.968,28.968],"uv_size":[-5.936,-5.936]},"down":{"uv":[32.968,5.032],"uv_size":[-5.936,5.936]}}},{"origin":[-3.8,21,-3.85],"size":[7.6,7.6,7.6],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[7.936,7.936]},"east":{"uv":[7.968,8.032],"uv_size":[-7.936,7.936]},"south":{"uv":[0.032,78.032],"uv_size":[7.936,7.936]},"west":{"uv":[0.032,8.032],"uv_size":[7.936,7.936]},"up":{"uv":[7.968,23.968],"uv_size":[-7.936,-7.936]},"down":{"uv":[23.968,0.032],"uv_size":[-7.936,7.936]}}}]},{"name":"ears","pivot":[-0.05,28.65,0],"parent":"head"},{"name":"e2","pivot":[2.9208,28.50876,0.07957],"parent":"ears","rotation":[2.31336,4.43385,5.08957],"cubes":[{"origin":[1.73245,26.38428,-0.31657],"size":[3,4,1.25],"pivot":[3.73245,27.38428,-0.31657],"rotation":[0.87038,4.92385,10.03742],"inflate":0.01,"uv":{"north":{"uv":[27.032,12.032],"uv_size":[2.936,3.936]},"east":{"uv":[14.032,25.032],"uv_size":[0.936,3.936]},"south":{"uv":[8.032,28.032],"uv_size":[2.936,3.936]},"west":{"uv":[27.032,29.032],"uv_size":[0.936,3.936]},"up":{"uv":[26.968,22.968],"uv_size":[-2.936,-0.936]},"down":{"uv":[29.968,22.032],"uv_size":[-2.936,0.936]}}},{"origin":[2.16502,24.41316,0.34346],"size":[3,4,1.5],"pivot":[3.41502,26.41316,0.59346],"rotation":[-177.68529,0.28769,-172.58605],"inflate":0.25,"uv":{"north":{"uv":[35.032,0.032],"uv_size":[2.936,3.936]},"east":{"uv":[6.032,35.032],"uv_size":[1.936,3.936]},"south":{"uv":[35.032,4.032],"uv_size":[2.936,3.936]},"west":{"uv":[35.032,8.032],"uv_size":[1.936,3.936]},"up":{"uv":[36.968,26.968],"uv_size":[-2.936,-1.936]},"down":{"uv":[37.968,12.032],"uv_size":[-2.936,1.936]}}},{"origin":[1.73245,30.38428,-0.31657],"size":[1.25,2.25,1.25],"pivot":[3.73245,27.38428,-0.31657],"rotation":[0.87038,4.92385,10.03742],"inflate":-0.01,"uv":{"north":{"uv":[20.032,26.032],"uv_size":[0.936,1.936]},"east":{"uv":[23.032,30.032],"uv_size":[0.936,1.936]},"south":{"uv":[32.032,20.032],"uv_size":[0.936,1.936]},"west":{"uv":[0.032,34.032],"uv_size":[0.936,1.936]},"up":{"uv":[31.968,29.968],"uv_size":[-0.936,-0.936]},"down":{"uv":[34.968,10.032],"uv_size":[-0.936,0.936]}}},{"origin":[4.22726,29.86201,-0.37982],"size":[1.75,3.35,1.25],"pivot":[4.47726,27.36201,0.12018],"rotation":[-1.29717,4.82922,-15.0547],"uv":{"north":{"uv":[16.032,21.032],"uv_size":[1.936,2.936]},"east":{"uv":[33.032,13.032],"uv_size":[0.936,2.936]},"south":{"uv":[27.032,16.032],"uv_size":[1.936,2.936]},"west":{"uv":[33.032,21.032],"uv_size":[0.936,2.936]},"up":{"uv":[17.968,24.968],"uv_size":[-1.936,-0.936]},"down":{"uv":[28.968,19.032],"uv_size":[-1.936,0.936]}}},{"origin":[2.96081,32.7952,-0.24715],"size":[1,1.5,1.25],"pivot":[2.96081,33.2202,0.25285],"rotation":[3.21873,3.82821,40.1076],"uv":{"north":{"uv":[34.032,0.032],"uv_size":[0.936,1.936]},"east":{"uv":[1.032,34.032],"uv_size":[0.936,1.936]},"south":{"uv":[2.032,34.032],"uv_size":[0.936,1.936]},"west":{"uv":[34.032,2.032],"uv_size":[0.936,1.936]},"up":{"uv":[34.968,11.968],"uv_size":[-0.936,-0.936]},"down":{"uv":[34.968,12.032],"uv_size":[-0.936,0.936]}}},{"origin":[1.37151,26.61036,-1.55651],"size":[3,4,1.25],"pivot":[2.64001,30.96368,-0.78887],"rotation":[-133.67881,86.7987,-126.32119],"inflate":0.01,"uv":{"north":{"uv":[11.032,28.032],"uv_size":[2.936,3.936]},"east":{"uv":[33.032,5.032],"uv_size":[0.936,3.936]},"south":{"uv":[30.032,12.032],"uv_size":[2.936,3.936]},"west":{"uv":[33.032,9.032],"uv_size":[0.936,3.936]},"up":{"uv":[30.968,29.968],"uv_size":[-2.936,-0.936]},"down":{"uv":[35.968,16.032],"uv_size":[-2.936,0.936]}}},{"origin":[0.68803,26.66043,-1.73455],"size":[3,4,1.5],"pivot":[2.18803,28.66043,-1.10955],"rotation":[-133.67881,86.7987,-126.32119],"inflate":0.25,"uv":{"north":{"uv":[28.032,34.032],"uv_size":[2.936,3.936]},"east":{"uv":[26.032,34.032],"uv_size":[1.936,3.936]},"south":{"uv":[31.032,34.032],"uv_size":[2.936,3.936]},"west":{"uv":[34.032,32.032],"uv_size":[0.936,3.936]},"up":{"uv":[25.968,34.968],"uv_size":[-2.936,-0.936]},"down":{"uv":[36.968,24.032],"uv_size":[-2.936,0.936]}}},{"origin":[1.37151,30.61036,-1.55651],"size":[1.25,2.25,1.25],"pivot":[2.64001,30.96368,-0.78887],"rotation":[-133.67881,86.7987,-126.32119],"inflate":-0.01,"uv":{"north":{"uv":[3.032,34.032],"uv_size":[0.936,1.936]},"east":{"uv":[4.032,34.032],"uv_size":[0.936,1.936]},"south":{"uv":[34.032,4.032],"uv_size":[0.936,1.936]},"west":{"uv":[5.032,34.032],"uv_size":[0.936,1.936]},"up":{"uv":[34.968,13.968],"uv_size":[-0.936,-0.936]},"down":{"uv":[34.968,14.032],"uv_size":[-0.936,0.936]}}},{"origin":[2.30996,29.9117,-1.55651],"size":[1.75,3.35,1.25],"pivot":[2.64001,30.96368,-0.78887],"rotation":[-94.80748,62.60118,-86.95739],"uv":{"north":{"uv":[14.032,29.032],"uv_size":[1.936,2.936]},"east":{"uv":[33.032,24.032],"uv_size":[0.936,2.936]},"south":{"uv":[16.032,29.032],"uv_size":[1.936,2.936]},"west":{"uv":[27.032,32.032],"uv_size":[0.936,2.936]},"up":{"uv":[34.968,17.968],"uv_size":[-1.936,-0.936]},"down":{"uv":[7.968,34.032],"uv_size":[-1.936,0.936]}}},{"origin":[0.57203,31.94492,-1.55651],"size":[1,1.5,1.25],"pivot":[2.64001,30.96368,-0.78887],"rotation":[94.74893,62.23526,101.51719],"uv":{"north":{"uv":[34.032,6.032],"uv_size":[0.936,1.936]},"east":{"uv":[8.032,34.032],"uv_size":[0.936,1.936]},"south":{"uv":[34.032,8.032],"uv_size":[0.936,1.936]},"west":{"uv":[9.032,34.032],"uv_size":[0.936,1.936]},"up":{"uv":[34.968,15.968],"uv_size":[-0.936,-0.936]},"down":{"uv":[22.968,34.032],"uv_size":[-0.936,0.936]}}},{"origin":[2.23871,28.06396,-1.79334],"size":[2,2,2],"pivot":[3.23871,29.06396,-0.79334],"rotation":[6.46066,13.56626,25.76926],"uv":{"north":{"uv":[18.032,26.032],"uv_size":[1.936,1.936]},"east":{"uv":[21.032,30.032],"uv_size":[1.936,1.936]},"south":{"uv":[30.032,27.032],"uv_size":[1.936,1.936]},"west":{"uv":[8.032,32.032],"uv_size":[1.936,1.936]},"up":{"uv":[23.968,33.968],"uv_size":[-1.936,-1.936]},"down":{"uv":[33.968,32.032],"uv_size":[-1.936,1.936]}}},{"origin":[2.23871,28.06396,-1.79334],"size":[2,2,2],"pivot":[3.23871,29.06396,-0.79334],"rotation":[19.54219,40.25332,46.48706],"inflate":0.25,"uv":{"north":{"uv":[35.032,14.032],"uv_size":[1.936,1.936]},"east":{"uv":[35.032,27.032],"uv_size":[1.936,1.936]},"south":{"uv":[35.032,29.032],"uv_size":[1.936,1.936]},"west":{"uv":[35.032,31.032],"uv_size":[1.936,1.936]},"up":{"uv":[36.968,34.968],"uv_size":[-1.936,-1.936]},"down":{"uv":[36.968,35.032],"uv_size":[-1.936,1.936]}}}]},{"name":"e1","pivot":[-2.9208,28.50876,0.07957],"parent":"ears","rotation":[2.31336,-4.43385,-5.08957],"cubes":[{"origin":[-4.73245,26.38428,-0.31657],"size":[3,4,1.25],"pivot":[-3.73245,27.38428,-0.31657],"rotation":[0.87038,-4.92385,-10.03742],"inflate":0.01,"uv":{"north":{"uv":[12.032,36.032],"uv_size":[2.936,3.936]},"east":{"uv":[8.032,38.032],"uv_size":[0.936,3.936]},"south":{"uv":[15.032,36.032],"uv_size":[2.936,3.936]},"west":{"uv":[28.032,38.032],"uv_size":[0.936,3.936]},"up":{"uv":[24.968,35.968],"uv_size":[-2.936,-0.936]},"down":{"uv":[40.968,23.032],"uv_size":[-2.936,0.936]}}},{"origin":[-5.16502,24.41316,0.34346],"size":[3,4,1.5],"pivot":[-3.41502,26.41316,0.59346],"rotation":[-177.68529,-0.28769,172.58605],"inflate":0.25,"uv":{"north":{"uv":[36.032,16.032],"uv_size":[2.936,3.936]},"east":{"uv":[4.032,36.032],"uv_size":[1.936,3.936]},"south":{"uv":[37.032,8.032],"uv_size":[2.936,3.936]},"west":{"uv":[18.032,36.032],"uv_size":[1.936,3.936]},"up":{"uv":[10.968,37.968],"uv_size":[-2.936,-1.936]},"down":{"uv":[39.968,14.032],"uv_size":[-2.936,1.936]}}},{"origin":[-2.98245,30.38428,-0.31657],"size":[1.25,2.25,1.25],"pivot":[-3.73245,27.38428,-0.31657],"rotation":[0.87038,-4.92385,-10.03742],"inflate":-0.01,"uv":{"north":{"uv":[11.032,36.032],"uv_size":[0.936,1.936]},"east":{"uv":[40.032,9.032],"uv_size":[0.936,1.936]},"south":{"uv":[40.032,11.032],"uv_size":[0.936,1.936]},"west":{"uv":[12.032,40.032],"uv_size":[0.936,1.936]},"up":{"uv":[35.968,17.968],"uv_size":[-0.936,-0.936]},"down":{"uv":[25.968,35.032],"uv_size":[-0.936,0.936]}}},{"origin":[-5.97726,29.86201,-0.37982],"size":[1.75,3.35,1.25],"pivot":[-4.47726,27.36201,0.12018],"rotation":[-1.29717,-4.82922,15.0547],"uv":{"north":{"uv":[37.032,36.032],"uv_size":[1.936,2.936]},"east":{"uv":[33.032,38.032],"uv_size":[0.936,2.936]},"south":{"uv":[38.032,0.032],"uv_size":[1.936,2.936]},"west":{"uv":[40.032,2.032],"uv_size":[0.936,2.936]},"up":{"uv":[37.968,20.968],"uv_size":[-1.936,-0.936]},"down":{"uv":[14.968,40.032],"uv_size":[-1.936,0.936]}}},{"origin":[-3.96081,32.7952,-0.24715],"size":[1,1.5,1.25],"pivot":[-2.96081,33.2202,0.25285],"rotation":[3.21873,-3.82821,-40.1076],"uv":{"north":{"uv":[40.032,13.032],"uv_size":[0.936,1.936]},"east":{"uv":[15.032,40.032],"uv_size":[0.936,1.936]},"south":{"uv":[16.032,40.032],"uv_size":[0.936,1.936]},"west":{"uv":[17.032,40.032],"uv_size":[0.936,1.936]},"up":{"uv":[34.968,36.968],"uv_size":[-0.936,-0.936]},"down":{"uv":[40.968,22.032],"uv_size":[-0.936,0.936]}}},{"origin":[-4.37151,26.61036,-1.55651],"size":[3,4,1.25],"pivot":[-2.64001,30.96368,-0.78887],"rotation":[-133.67881,-86.7987,126.32119],"inflate":0.01,"uv":{"north":{"uv":[37.032,24.032],"uv_size":[2.936,3.936]},"east":{"uv":[29.032,38.032],"uv_size":[0.936,3.936]},"south":{"uv":[37.032,28.032],"uv_size":[2.936,3.936]},"west":{"uv":[30.032,38.032],"uv_size":[0.936,3.936]},"up":{"uv":[42.968,5.968],"uv_size":[-2.936,-0.936]},"down":{"uv":[42.968,6.032],"uv_size":[-2.936,0.936]}}},{"origin":[-3.68803,26.66043,-1.73455],"size":[3,4,1.5],"pivot":[-2.18803,28.66043,-1.10955],"rotation":[-133.67881,-86.7987,126.32119],"inflate":0.25,"uv":{"north":{"uv":[37.032,32.032],"uv_size":[2.936,3.936]},"east":{"uv":[31.032,38.032],"uv_size":[0.936,3.936]},"south":{"uv":[34.032,37.032],"uv_size":[2.936,3.936]},"west":{"uv":[32.032,38.032],"uv_size":[0.936,3.936]},"up":{"uv":[42.968,7.968],"uv_size":[-2.936,-0.936]},"down":{"uv":[42.968,8.032],"uv_size":[-2.936,0.936]}}},{"origin":[-2.62151,30.61036,-1.55651],"size":[1.25,2.25,1.25],"pivot":[-2.64001,30.96368,-0.78887],"rotation":[-133.67881,-86.7987,126.32119],"inflate":-0.01,"uv":{"north":{"uv":[18.032,40.032],"uv_size":[0.936,1.936]},"east":{"uv":[19.032,40.032],"uv_size":[0.936,1.936]},"south":{"uv":[20.032,40.032],"uv_size":[0.936,1.936]},"west":{"uv":[40.032,20.032],"uv_size":[0.936,1.936]},"up":{"uv":[23.968,40.968],"uv_size":[-0.936,-0.936]},"down":{"uv":[24.968,40.032],"uv_size":[-0.936,0.936]}}},{"origin":[-4.05996,29.9117,-1.55651],"size":[1.75,3.35,1.25],"pivot":[-2.64001,30.96368,-0.78887],"rotation":[-94.80748,-62.60118,86.95739],"uv":{"north":{"uv":[38.032,3.032],"uv_size":[1.936,2.936]},"east":{"uv":[4.032,40.032],"uv_size":[0.936,2.936]},"south":{"uv":[38.032,20.032],"uv_size":[1.936,2.936]},"west":{"uv":[5.032,40.032],"uv_size":[0.936,2.936]},"up":{"uv":[41.968,15.968],"uv_size":[-1.936,-0.936]},"down":{"uv":[22.968,40.032],"uv_size":[-1.936,0.936]}}},{"origin":[-1.57203,31.94492,-1.55651],"size":[1,1.5,1.25],"pivot":[-2.64001,30.96368,-0.78887],"rotation":[94.74893,-62.23526,-101.51719],"uv":{"north":{"uv":[40.032,24.032],"uv_size":[0.936,0.936]},"east":{"uv":[25.032,40.032],"uv_size":[0.936,0.936]},"south":{"uv":[40.032,25.032],"uv_size":[0.936,0.936]},"west":{"uv":[26.032,40.032],"uv_size":[0.936,0.936]},"up":{"uv":[40.968,26.968],"uv_size":[-0.936,-0.936]},"down":{"uv":[27.968,40.032],"uv_size":[-0.936,0.936]}}},{"origin":[-4.23871,28.06396,-1.79334],"size":[2,2,2],"pivot":[-3.23871,29.06396,-0.79334],"rotation":[6.46066,-13.56626,-25.76926],"uv":{"north":{"uv":[38.032,6.032],"uv_size":[1.936,1.936]},"east":{"uv":[38.032,12.032],"uv_size":[1.936,1.936]},"south":{"uv":[26.032,38.032],"uv_size":[1.936,1.936]},"west":{"uv":[0.032,39.032],"uv_size":[1.936,1.936]},"up":{"uv":[3.968,40.968],"uv_size":[-1.936,-1.936]},"down":{"uv":[7.968,39.032],"uv_size":[-1.936,1.936]}}},{"origin":[-4.23871,28.06396,-1.79334],"size":[2,2,2],"pivot":[-3.23871,29.06396,-0.79334],"rotation":[19.54219,-40.25332,-46.48706],"inflate":0.25,"uv":{"north":{"uv":[39.032,16.032],"uv_size":[1.936,1.936]},"east":{"uv":[39.032,18.032],"uv_size":[1.936,1.936]},"south":{"uv":[39.032,36.032],"uv_size":[1.936,1.936]},"west":{"uv":[37.032,39.032],"uv_size":[1.936,1.936]},"up":{"uv":[40.968,39.968],"uv_size":[-1.936,-1.936]},"down":{"uv":[41.968,0.032],"uv_size":[-1.936,1.936]}}}]},{"name":"hair","pivot":[-0.2,-0.85,-1.95],"parent":"head"},{"name":"front_hair","pivot":[-0.2,26.7,-4.0875],"parent":"hair","cubes":[{"origin":[-4,24.62509,-4.0875],"size":[3.8,3.8,0],"pivot":[-2.28892,26.28759,-4.0875],"rotation":[0,0,10],"uv":{"north":{"uv":[8.032,0.032],"uv_size":[3.936,3.936]},"east":{"uv":[0.032,0.032],"uv_size":[0,3.936]},"south":{"uv":[8.032,4.032],"uv_size":[3.936,3.936]},"west":{"uv":[0.032,0.032],"uv_size":[0,3.936]},"up":{"uv":[3.968,0.032],"uv_size":[-3.936,0]},"down":{"uv":[3.968,0.032],"uv_size":[-3.936,0]}}},{"origin":[0.4,24.62509,-4.0875],"size":[3.8,3.8,0],"pivot":[2.38892,26.28759,-4.0875],"rotation":[0,0,-10],"uv":{"north":{"uv":[29.032,16.032],"uv_size":[3.936,3.936]},"east":{"uv":[0.032,0.032],"uv_size":[0,3.936]},"south":{"uv":[28.032,30.032],"uv_size":[3.936,3.936]},"west":{"uv":[0.032,0.032],"uv_size":[0,3.936]},"up":{"uv":[3.968,0.032],"uv_size":[-3.936,0]},"down":{"uv":[3.968,0.032],"uv_size":[-3.936,0]}}},{"origin":[-1.8,24.325,-4.325],"size":[3.8,3.8,0],"uv":{"north":{"uv":[8.032,8.032],"uv_size":[3.936,3.936]},"east":{"uv":[0.032,0.032],"uv_size":[0,3.936]},"south":{"uv":[12.032,0.032],"uv_size":[3.936,3.936]},"west":{"uv":[0.032,0.032],"uv_size":[0,3.936]},"up":{"uv":[3.968,0.032],"uv_size":[-3.936,0]},"down":{"uv":[3.968,0.032],"uv_size":[-3.936,0]}}}]},{"name":"lf_hair","pivot":[-3.7,20.7,-4.0875],"parent":"front_hair","cubes":[{"origin":[-6.95,14.2,-3.8375],"size":[4,7,0],"uv":{"north":{"uv":[0.032,60.032],"uv_size":[3.936,6.936]},"east":{"uv":[0.032,0.032],"uv_size":[0,6.936]},"south":{"uv":[60.032,0.032],"uv_size":[3.936,6.936]},"west":{"uv":[0.032,0.032],"uv_size":[0,6.936]},"up":{"uv":[3.968,0.032],"uv_size":[-3.936,0]},"down":{"uv":[3.968,0.032],"uv_size":[-3.936,0]}}}]},{"name":"rf_hair","pivot":[3.55,20.7,-4.0875],"parent":"front_hair","cubes":[{"origin":[2.95,14.45,-3.8375],"size":[4,7,0],"uv":{"north":{"uv":[4.032,60.032],"uv_size":[3.936,6.936]},"east":{"uv":[0.032,0.032],"uv_size":[0,6.936]},"south":{"uv":[60.032,48.032],"uv_size":[3.936,6.936]},"west":{"uv":[0.032,0.032],"uv_size":[0,6.936]},"up":{"uv":[3.968,0.032],"uv_size":[-3.936,0]},"down":{"uv":[3.968,0.032],"uv_size":[-3.936,0]}}}]},{"name":"l_h","pivot":[-4,23.85,-0.05],"parent":"hair","cubes":[{"origin":[-3.725,20.69317,-3.36897],"size":[-0.05,7.55,7.05],"pivot":[-3.0375,23.61317,2.75603],"rotation":[0,0,2.5],"inflate":0.5,"uv":{"north":{"uv":[12.968,4.032],"uv_size":[-0.936,7.936]},"east":{"uv":[23.968,8.032],"uv_size":[-7.936,7.936]},"south":{"uv":[13.968,4.032],"uv_size":[-0.936,7.936]},"west":{"uv":[15.968,12.032],"uv_size":[-7.936,7.936]},"up":{"uv":[14.032,11.968],"uv_size":[0.936,-7.936]},"down":{"uv":[15.032,4.032],"uv_size":[0.936,7.936]}}}]},{"name":"left_hair","pivot":[-3.81947,24.34784,-0.0832],"parent":"l_h","rotation":[0,0,-12.5],"cubes":[{"origin":[-0.64117,24.33171,-2.4582],"size":[2.85,4.75,4.75],"pivot":[-4.95,31.92115,-1.21678],"rotation":[0,0,37.5],"uv":{"north":{"uv":[13.032,20.032],"uv_size":[2.936,4.936]},"east":{"uv":[16.032,16.032],"uv_size":[4.936,4.936]},"south":{"uv":[18.032,21.032],"uv_size":[2.936,4.936]},"west":{"uv":[8.032,20.032],"uv_size":[4.936,4.936]},"up":{"uv":[23.968,22.968],"uv_size":[-2.936,-4.936]},"down":{"uv":[23.968,23.032],"uv_size":[-2.936,4.936]}}},{"origin":[-0.61617,24.35671,-2.4332],"size":[2.8,4.7,4.7],"pivot":[-4.95,31.92115,-1.21678],"rotation":[0,0,37.5],"inflate":0.5,"uv":{"north":{"uv":[5.032,24.032],"uv_size":[2.936,4.936]},"east":{"uv":[0.032,24.032],"uv_size":[4.936,4.936]},"south":{"uv":[24.032,5.032],"uv_size":[2.936,4.936]},"west":{"uv":[24.032,0.032],"uv_size":[4.936,4.936]},"up":{"uv":[26.968,14.968],"uv_size":[-2.936,-4.936]},"down":{"uv":[26.968,15.032],"uv_size":[-2.936,4.936]}}}]},{"name":"r_h","pivot":[4,23.85,-0.05],"parent":"hair","cubes":[{"origin":[3.775,20.69317,-3.36897],"size":[-0.05,7.55,7.05],"pivot":[3.0375,23.61317,2.75603],"rotation":[0,0,-2.5],"inflate":0.5,"uv":{"north":{"uv":[12.032,4.032],"uv_size":[0.936,7.936]},"east":{"uv":[8.032,12.032],"uv_size":[7.936,7.936]},"south":{"uv":[13.032,4.032],"uv_size":[0.936,7.936]},"west":{"uv":[16.032,8.032],"uv_size":[7.936,7.936]},"up":{"uv":[14.968,11.968],"uv_size":[-0.936,-7.936]},"down":{"uv":[15.968,4.032],"uv_size":[-0.936,7.936]}}}]},{"name":"right_hair","pivot":[3.81947,24.34784,-0.0832],"parent":"r_h","rotation":[0,0,12.5],"cubes":[{"origin":[-2.20883,24.33171,-2.4582],"size":[2.85,4.75,4.75],"pivot":[4.95,31.92115,-1.21678],"rotation":[0,0,-37.5],"uv":{"north":{"uv":[15.968,20.032],"uv_size":[-2.936,4.936]},"east":{"uv":[12.968,20.032],"uv_size":[-4.936,4.936]},"south":{"uv":[20.968,21.032],"uv_size":[-2.936,4.936]},"west":{"uv":[20.968,16.032],"uv_size":[-4.936,4.936]},"up":{"uv":[21.032,22.968],"uv_size":[2.936,-4.936]},"down":{"uv":[21.032,23.032],"uv_size":[2.936,4.936]}}},{"origin":[-2.18383,24.35671,-2.4332],"size":[2.8,4.7,4.7],"pivot":[4.95,31.92115,-1.21678],"rotation":[0,0,-37.5],"inflate":0.5,"uv":{"north":{"uv":[5.032,29.032],"uv_size":[2.936,4.936]},"east":{"uv":[0.032,29.032],"uv_size":[4.936,4.936]},"south":{"uv":[24.032,29.032],"uv_size":[2.936,4.936]},"west":{"uv":[29.032,0.032],"uv_size":[4.936,4.936]},"up":{"uv":[32.968,26.968],"uv_size":[-2.936,-4.936]},"down":{"uv":[34.968,27.032],"uv_size":[-2.936,4.936]}}}]},{"name":"back_hair","pivot":[0.37894,27.14677,4.05932],"parent":"hair","cubes":[{"origin":[-3.775,20.7875,3.5375],"size":[7.55,7.55,0.045],"pivot":[0,25.5125,4.4625],"rotation":[5,0,0],"inflate":0.5,"uv":{"north":{"uv":[53.968,25.032],"uv_size":[-7.936,7.936]},"east":{"uv":[41.968,28.032],"uv_size":[-0.936,7.936]},"south":{"uv":[7.968,48.032],"uv_size":[-7.936,7.936]},"west":{"uv":[41.968,28.032],"uv_size":[-0.936,7.936]},"up":{"uv":[45.032,43.968],"uv_size":[7.936,-0.936]},"down":{"uv":[45.032,44.032],"uv_size":[7.936,0.936]}}}]},{"name":"ponytail","pivot":[0.25,28.7,3.75],"parent":"back_hair","cubes":[{"origin":[-1,27.45,2.25],"size":[2.5,3,3],"uv":{"north":{"uv":[46.032,33.032],"uv_size":[2.936,2.936]},"east":{"uv":[36.032,46.032],"uv_size":[2.936,2.936]},"south":{"uv":[47.032,4.032],"uv_size":[2.936,2.936]},"west":{"uv":[47.032,13.032],"uv_size":[2.936,2.936]},"up":{"uv":[30.968,49.968],"uv_size":[-2.936,-2.936]},"down":{"uv":[51.968,16.032],"uv_size":[-2.936,2.936]}}}]},{"name":"p1","pivot":[0.25,28.7,3.75],"parent":"ponytail","cubes":[{"origin":[-1.75,25.95,3.5],"size":[4,5,4],"inflate":0.25,"uv":{"north":{"uv":[39.032,46.032],"uv_size":[3.936,4.936]},"east":{"uv":[47.032,8.032],"uv_size":[3.936,4.936]},"south":{"uv":[12.032,47.032],"uv_size":[3.936,4.936]},"west":{"uv":[20.032,47.032],"uv_size":[3.936,4.936]},"up":{"uv":[52.968,40.968],"uv_size":[-3.936,-3.936]},"down":{"uv":[51.968,49.032],"uv_size":[-3.936,3.936]}}},{"origin":[-1.75,25.95,3.5],"size":[4,5,4],"uv":{"north":{"uv":[12.032,42.032],"uv_size":[3.936,4.936]},"east":{"uv":[16.032,42.032],"uv_size":[3.936,4.936]},"south":{"uv":[20.032,42.032],"uv_size":[3.936,4.936]},"west":{"uv":[42.032,26.032],"uv_size":[3.936,4.936]},"up":{"uv":[45.968,34.968],"uv_size":[-3.936,-3.936]},"down":{"uv":[54.968,8.032],"uv_size":[-3.936,3.936]}}}]},{"name":"p2","pivot":[0.25,25.7,4.75],"parent":"p1","cubes":[{"origin":[-1.75,20.95,3.5],"size":[4,5,4],"inflate":0.25,"uv":{"north":{"uv":[45.032,20.032],"uv_size":[3.936,4.936]},"east":{"uv":[45.032,36.032],"uv_size":[3.936,4.936]},"south":{"uv":[24.032,46.032],"uv_size":[3.936,4.936]},"west":{"uv":[32.032,46.032],"uv_size":[3.936,4.936]},"up":{"uv":[48.968,48.968],"uv_size":[-3.936,-3.936]},"down":{"uv":[11.968,48.032],"uv_size":[-3.936,3.936]}}},{"origin":[-1.75,20.95,3.5],"size":[4,5,4],"uv":{"north":{"uv":[39.032,40.032],"uv_size":[3.936,4.936]},"east":{"uv":[41.032,16.032],"uv_size":[3.936,4.936]},"south":{"uv":[41.032,21.032],"uv_size":[3.936,4.936]},"west":{"uv":[33.032,41.032],"uv_size":[3.936,4.936]},"up":{"uv":[44.968,39.968],"uv_size":[-3.936,-3.936]},"down":{"uv":[31.968,42.032],"uv_size":[-3.936,3.936]}}},{"origin":[-1.75,15.95,3.5],"size":[4,5,4],"uv":{"north":{"uv":[4,43],"uv_size":[4,5]},"east":{"uv":[43,4],"uv_size":[4,5]},"south":{"uv":[8,43],"uv_size":[4,5]},"west":{"uv":[43,11],"uv_size":[4,5]},"up":{"uv":[48,4],"uv_size":[-4,-4]},"down":{"uv":[49,16],"uv_size":[-4,4]}}}]},{"name":"eyes","pivot":[-0.2,29.55,-0.43],"parent":"head","cubes":[{"origin":[-3.75,21.2375,-3.698],"size":[7.6,3.325,0],"uv":{"north":{"uv":[135.032,0.032],"uv_size":[8.936,1.936]},"east":{"uv":[128.032,26.032],"uv_size":[0,5.936]},"south":{"uv":[128.032,26.032],"uv_size":[0,5.936]},"west":{"uv":[128.032,26.032],"uv_size":[0,5.936]},"up":{"uv":[135.968,32.032],"uv_size":[-7.936,0]},"down":{"uv":[135.968,32.032],"uv_size":[-7.936,0]}}}]},{"name":"iris","pivot":[-2.17125,23.6125,-3.755],"parent":"eyes","cubes":[{"origin":[0.7275,21.475,-3.7455],"size":[3.3625,3.325,0],"uv":{"north":{"uv":[134.968,0.032],"uv_size":[-6.936,6.936]},"east":{"uv":[130.032,30.032],"uv_size":[0,1.936]},"south":{"uv":[136.032,4.032],"uv_size":[0,1.936]},"west":{"uv":[128.032,30.032],"uv_size":[0,1.936]},"up":{"uv":[128.032,30.032],"uv_size":[1.936,0]},"down":{"uv":[130.032,30.032],"uv_size":[1.936,0]}}}]},{"name":"iris2","pivot":[1.77125,23.6125,-3.755],"parent":"eyes","cubes":[{"origin":[-4.09,21.475,-3.7455],"size":[3.3625,3.325,0],"uv":{"north":{"uv":[128.032,0.032],"uv_size":[6.936,6.936]},"east":{"uv":[128.032,30.032],"uv_size":[0,1.936]},"south":{"uv":[136.032,4.032],"uv_size":[0,1.936]},"west":{"uv":[130.032,30.032],"uv_size":[0,1.936]},"up":{"uv":[129.968,30.032],"uv_size":[-1.936,0]},"down":{"uv":[131.968,30.032],"uv_size":[-1.936,0]}}},{"origin":[-2.35,21.7,-3.755],"size":[1.0575,2.175,0],"uv":{"north":{"uv":[130.75,9.5],"uv_size":[7,7]},"east":{"uv":[128.032,30.032],"uv_size":[0,1.936]},"south":{"uv":[128.032,30.032],"uv_size":[0,1.936]},"west":{"uv":[128.032,30.032],"uv_size":[0,1.936]},"up":{"uv":[128.968,32.032],"uv_size":[-0.936,0]},"down":{"uv":[129.968,32.032],"uv_size":[-0.936,0]}}},{"origin":[1.2925,21.7,-3.755],"size":[1.0575,2.175,0],"uv":{"north":{"uv":[137.75,9.5],"uv_size":[-7,7]},"east":{"uv":[128.032,30.032],"uv_size":[0,1.936]},"south":{"uv":[128.032,30.032],"uv_size":[0,1.936]},"west":{"uv":[128.032,30.032],"uv_size":[0,1.936]},"up":{"uv":[128.032,32.032],"uv_size":[0.936,0]},"down":{"uv":[129.032,32.032],"uv_size":[0.936,0]}}}]},{"name":"lashes","pivot":[-0.2,24.33065,-3.97101],"parent":"eyes","rotation":[2.5,0,0]},{"name":"right_lashes","pivot":[2.28709,25.15764,-3.52225],"parent":"lashes","rotation":[1.42584,-0.91618,0.18232],"cubes":[{"origin":[1.01071,22.50899,-3.77242],"size":[4.0375,2.375,0],"pivot":[2.17507,24.5362,-3.84375],"rotation":[-9.62,2.74345,15.7691],"uv":{"north":{"uv":[151.032,0.032],"uv_size":[4.936,2.936]},"east":{"uv":[150.032,0.032],"uv_size":[0,2.936]},"south":{"uv":[128.032,29.032],"uv_size":[0,2.936]},"west":{"uv":[146.032,0.032],"uv_size":[0,2.936]},"up":{"uv":[146.032,0.032],"uv_size":[3.936,0]},"down":{"uv":[150.032,0.032],"uv_size":[3.936,0]}}},{"origin":[0.97153,22.47676,-4.06405],"size":[4.25,2.5,0],"pivot":[2.75007,24.72232,-4.14342],"rotation":[-9.99664,-0.26044,-1.47722],"uv":{"north":{"uv":[145.032,0.032],"uv_size":[4.936,2.936]},"east":{"uv":[150.032,0.032],"uv_size":[0,2.936]},"south":{"uv":[128.032,29.032],"uv_size":[0,2.936]},"west":{"uv":[146.032,0.032],"uv_size":[0,2.936]},"up":{"uv":[146.032,0.032],"uv_size":[3.936,0]},"down":{"uv":[150.032,0.032],"uv_size":[3.936,0]}}}]},{"name":"left_lashes","pivot":[-2.28709,25.15764,-3.52225],"parent":"lashes","rotation":[1.42584,0.91618,-0.18232],"cubes":[{"origin":[-5.04821,22.50899,-3.77242],"size":[4.0375,2.375,0],"pivot":[-2.17507,24.5362,-3.84375],"rotation":[-9.62,-2.74345,-15.7691],"uv":{"north":{"uv":[155.968,0.032],"uv_size":[-4.936,2.936]},"east":{"uv":[146.032,0.032],"uv_size":[0,2.936]},"south":{"uv":[128.032,29.032],"uv_size":[0,2.936]},"west":{"uv":[150.032,0.032],"uv_size":[0,2.936]},"up":{"uv":[149.968,0.032],"uv_size":[-3.936,0]},"down":{"uv":[153.968,0.032],"uv_size":[-3.936,0]}}},{"origin":[-5.22153,22.47676,-4.06405],"size":[4.25,2.5,0],"pivot":[-2.75007,24.72232,-4.14342],"rotation":[-9.99664,0.26044,1.47722],"uv":{"north":{"uv":[149.968,0.032],"uv_size":[-4.936,2.936]},"east":{"uv":[146.032,0.032],"uv_size":[0,2.936]},"south":{"uv":[128.032,29.032],"uv_size":[0,2.936]},"west":{"uv":[150.032,0.032],"uv_size":[0,2.936]},"up":{"uv":[149.968,0.032],"uv_size":[-3.936,0]},"down":{"uv":[153.968,0.032],"uv_size":[-3.936,0]}}}]},{"name":"blink2","pivot":[-0.2,24.325,-2.7765],"parent":"eyes","cubes":[{"origin":[-3.75,22.9,-2.7765],"size":[7.6,0.95,0],"uv":{"north":{"uv":[144.032,5.032],"uv_size":[7.936,0.936]},"east":{"uv":[144.032,5.032],"uv_size":[0,0.936]},"south":{"uv":[152.032,5.032],"uv_size":[7.936,0.936]},"west":{"uv":[152.032,5.032],"uv_size":[0,0.936]},"up":{"uv":[151.968,5.032],"uv_size":[-7.936,0]},"down":{"uv":[159.968,5.032],"uv_size":[-7.936,0]}}}]},{"name":"blink3","pivot":[-0.2,23.375,-2.7765],"parent":"eyes","cubes":[{"origin":[-3.75,21.95,-2.7765],"size":[7.6,0.95,0],"uv":{"north":{"uv":[144.032,6.032],"uv_size":[7.936,0.936]},"east":{"uv":[144.032,6.032],"uv_size":[0,0.936]},"south":{"uv":[152.032,6.032],"uv_size":[7.936,0.936]},"west":{"uv":[152.032,6.032],"uv_size":[0,0.936]},"up":{"uv":[151.968,6.032],"uv_size":[-7.936,0]},"down":{"uv":[159.968,6.032],"uv_size":[-7.936,0]}}}]},{"name":"Body","pivot":[0,22,0],"parent":"body","cubes":[{"origin":[-1.5,20,-2],"size":[3,2,3.5],"uv":{"north":{"uv":[21.032,16.032],"uv_size":[2.936,1.936]},"east":{"uv":[24.032,20.032],"uv_size":[3.936,1.936]},"south":{"uv":[21.032,28.032],"uv_size":[2.936,1.936]},"west":{"uv":[28.032,20.032],"uv_size":[3.936,1.936]},"up":{"uv":[17.968,28.968],"uv_size":[-2.936,-3.936]},"down":{"uv":[20.968,28.032],"uv_size":[-2.936,3.936]}}},{"origin":[-3,12,-2],"size":[6,4,4],"uv":{"north":{"uv":[51.032,45.032],"uv_size":[5.936,3.936]},"east":{"uv":[8.032,52.032],"uv_size":[3.936,3.936]},"south":{"uv":[52.032,15.032],"uv_size":[5.936,3.936]},"west":{"uv":[21.032,52.032],"uv_size":[3.936,3.936]},"up":{"uv":[57.968,22.968],"uv_size":[-5.936,-3.936]},"down":{"uv":[37.968,52.032],"uv_size":[-5.936,3.936]}}},{"origin":[0.4,11.49524,-1.7819],"size":[3,3,3.75],"pivot":[1.9,12.99524,-0.2819],"rotation":[0,0,-22.5],"inflate":-0.01,"uv":{"north":{"uv":[35.968,18.032],"uv_size":[-2.936,2.936]},"east":{"uv":[3.968,36.032],"uv_size":[-3.936,2.936]},"south":{"uv":[11.968,38.032],"uv_size":[-2.936,2.936]},"west":{"uv":[37.968,21.032],"uv_size":[-3.936,2.936]},"up":{"uv":[20.032,39.968],"uv_size":[2.936,-3.936]},"down":{"uv":[23.032,36.032],"uv_size":[2.936,3.936]}}},{"origin":[-3.4,11.49524,-1.7819],"size":[3,3,3.75],"pivot":[-1.9,12.99524,-0.2819],"rotation":[0,0,22.5],"inflate":-0.01,"uv":{"north":{"uv":[33.032,18.032],"uv_size":[2.936,2.936]},"east":{"uv":[34.032,21.032],"uv_size":[3.936,2.936]},"south":{"uv":[9.032,38.032],"uv_size":[2.936,2.936]},"west":{"uv":[0.032,36.032],"uv_size":[3.936,2.936]},"up":{"uv":[22.968,39.968],"uv_size":[-2.936,-3.936]},"down":{"uv":[25.968,36.032],"uv_size":[-2.936,3.936]}}},{"origin":[-3,16,-2],"size":[6,4,4],"uv":{"north":{"uv":[10.032,32.032],"uv_size":[5.936,3.936]},"east":{"uv":[28.032,50.032],"uv_size":[3.936,3.936]},"south":{"uv":[16.032,32.032],"uv_size":[5.936,3.936]},"west":{"uv":[50.032,33.032],"uv_size":[3.936,3.936]},"up":{"uv":[55.968,3.968],"uv_size":[-5.936,-3.936]},"down":{"uv":[55.968,4.032],"uv_size":[-5.936,3.936]}}},{"origin":[-3,15.5,-2],"size":[6,4,4],"pivot":[0,18,0],"rotation":[-7.5,0,0],"inflate":0.25,"uv":{"north":{"uv":[53.032,37.032],"uv_size":[5.936,3.936]},"east":{"uv":[28.032,54.032],"uv_size":[3.936,3.936]},"south":{"uv":[53.032,41.032],"uv_size":[5.936,3.936]},"west":{"uv":[56.032,0.032],"uv_size":[3.936,3.936]},"up":{"uv":[60.968,11.968],"uv_size":[-5.936,-3.936]},"down":{"uv":[5.968,56.032],"uv_size":[-5.936,3.936]}}},{"origin":[-3,15.5,-2],"size":[6,4,4],"pivot":[0,18,0],"rotation":[7.5,0,0],"inflate":0.5,"uv":{"north":{"uv":[58.968,41.032],"uv_size":[-5.936,3.936]},"east":{"uv":[31.968,54.032],"uv_size":[-3.936,3.936]},"south":{"uv":[58.968,37.032],"uv_size":[-5.936,3.936]},"west":{"uv":[59.968,0.032],"uv_size":[-3.936,3.936]},"up":{"uv":[60.968,8.032],"uv_size":[-5.936,3.936]},"down":{"uv":[5.968,59.968],"uv_size":[-5.936,-3.936]}}},{"origin":[-0.5,16,-2.45],"size":[1,3.75,0],"pivot":[0,17.875,-2.1],"rotation":[-7.5,0,0],"uv":{"north":{"uv":[40.032,31.032],"uv_size":[0.936,3.936]},"east":{"uv":[0.032,0.032],"uv_size":[0,3.936]},"south":{"uv":[41.032,9.032],"uv_size":[0.936,3.936]},"west":{"uv":[0.032,0.032],"uv_size":[0,3.936]},"up":{"uv":[0.968,0.032],"uv_size":[-0.936,0]},"down":{"uv":[0.968,0.032],"uv_size":[-0.936,0]}}}]},{"name":"ELYTRA_PIVOT","pivot":[0,6,-2],"parent":"Body"},{"name":"LeftElytraPivot","pivot":[-1,21.8829,0.54964],"parent":"ELYTRA_PIVOT"},{"name":"RightElytraPivot","pivot":[1,21.8829,-0.45036],"parent":"ELYTRA_PIVOT"},{"name":"tail","pivot":[0,12.05877,1.80676],"parent":"Body","rotation":[-25,0,0],"cubes":[{"origin":[-1,12.05877,0.80676],"size":[1.5,1.5,5],"uv":{"north":{"uv":[19,53],"uv_size":[2,2]},"east":{"uv":[48,41],"uv_size":[5,2]},"south":{"uv":[6,56],"uv_size":[2,2]},"west":{"uv":[60,62],"uv_size":[5,2]},"up":{"uv":[63,16],"uv_size":[-2,-5]},"down":{"uv":[63,16],"uv_size":[-2,5]}}}]},{"name":"t1","pivot":[-0.25,13.30284,6.50265],"parent":"tail","rotation":[12.5,0,0],"cubes":[{"origin":[-1.1,12.20284,5.50265],"size":[1.7,1.7,5],"uv":{"north":{"uv":[42,0],"uv_size":[2,2]},"east":{"uv":[42,9],"uv_size":[5,2]},"south":{"uv":[52,23],"uv_size":[2,2]},"west":{"uv":[43,41],"uv_size":[5,2]},"up":{"uv":[39,46],"uv_size":[-2,-5]},"down":{"uv":[45,43],"uv_size":[-2,5]}}}]},{"name":"t2","pivot":[-0.25,13.50339,10.71426],"parent":"t1","rotation":[12.5,0,0],"cubes":[{"origin":[-1.25,12.25339,9.71426],"size":[2,2,3],"uv":{"north":{"uv":[6,41],"uv_size":[2,2]},"east":{"uv":[25,62],"uv_size":[3,2]},"south":{"uv":[41,13],"uv_size":[2,2]},"west":{"uv":[63,58],"uv_size":[3,2]},"up":{"uv":[50,3],"uv_size":[-2,-3]},"down":{"uv":[51,45],"uv_size":[-2,3]}}},{"origin":[-1.25,12.25339,9.71426],"size":[2,2,3],"pivot":[-0.25,13.50339,10.71426],"rotation":[12.5,0,0],"inflate":0.5,"uv":{"north":{"uv":[6,58],"uv_size":[2,2]},"east":{"uv":[63,60],"uv_size":[3,2]},"south":{"uv":[42,63],"uv_size":[2,2]},"west":{"uv":[64,10],"uv_size":[3,2]},"up":{"uv":[59,48],"uv_size":[-2,-3]},"down":{"uv":[63,21],"uv_size":[-2,3]}}}]},{"name":"t3","pivot":[-0.25,12.00339,12.71426],"parent":"t2","rotation":[15,0,0],"cubes":[{"origin":[-1.5,12.00339,12.71426],"size":[2.5,2.5,4],"uv":{"north":{"uv":[41,2],"uv_size":[3,2]},"east":{"uv":[0,46],"uv_size":[4,2]},"south":{"uv":[9,41],"uv_size":[3,2]},"west":{"uv":[38,63],"uv_size":[4,2]},"up":{"uv":[11,65],"uv_size":[-3,-4]},"down":{"uv":[54,61],"uv_size":[-3,4]}}}]},{"name":"bone","pivot":[-0.25,12.00339,16.71426],"parent":"t3","cubes":[{"origin":[-1.75,11.75339,16.71426],"size":[3,3,4],"uv":{"north":{"uv":[36,49],"uv_size":[3,3]},"east":{"uv":[44,49],"uv_size":[4,3]},"south":{"uv":[54,61],"uv_size":[3,3]},"west":{"uv":[60,55],"uv_size":[4,3]},"up":{"uv":[63,62],"uv_size":[-3,-4]},"down":{"uv":[64,7],"uv_size":[-3,4]}}},{"origin":[-1.75,11.75339,16.71426],"size":[3,3,4],"inflate":0.5,"uv":{"north":{"uv":[14,64],"uv_size":[3,3]},"east":{"uv":[64,0],"uv_size":[4,3]},"south":{"uv":[25,64],"uv_size":[3,3]},"west":{"uv":[64,3],"uv_size":[4,3]},"up":{"uv":[67,10],"uv_size":[-3,-4]},"down":{"uv":[14,64],"uv_size":[-3,4]}}}]},{"name":"LeftArm","pivot":[-5.99528,20.30617,0],"parent":"body","rotation":[0,0,-5],"cubes":[{"origin":[-4.24528,13.94014,-1.25],"size":[3,6,3],"pivot":[-4.24528,20.05617,0.25],"rotation":[0,0,25],"uv":{"north":{"uv":[25.032,51.032],"uv_size":[2.936,5.936]},"east":{"uv":[16.032,53.032],"uv_size":[2.936,5.936]},"south":{"uv":[48.032,53.032],"uv_size":[2.936,5.936]},"west":{"uv":[54.032,23.032],"uv_size":[2.936,5.936]},"up":{"uv":[51.968,21.968],"uv_size":[-2.936,-2.936]},"down":{"uv":[51.968,22.032],"uv_size":[-2.936,2.936]}}},{"origin":[-4.24528,8.94014,-1.25],"size":[3,11,3],"pivot":[-4.24528,20.05617,0.25],"rotation":[0,0,25],"inflate":0.25,"uv":{"north":{"uv":[19.032,56.032],"uv_size":[2.936,10.936]},"east":{"uv":[22.032,56.032],"uv_size":[2.936,10.936]},"south":{"uv":[32.032,56.032],"uv_size":[2.936,10.936]},"west":{"uv":[35.032,56.032],"uv_size":[2.936,10.936]},"up":{"uv":[53.968,14.968],"uv_size":[-2.936,-2.936]},"down":{"uv":[56.968,12.032],"uv_size":[-2.936,2.936]}}},{"origin":[-4.24528,9.94014,-1.25],"size":[3,4,3],"pivot":[-4.24528,20.05617,0.25],"rotation":[0,0,25],"uv":{"north":{"uv":[25.032,58.032],"uv_size":[2.936,3.936]},"east":{"uv":[16.032,60.032],"uv_size":[2.936,3.936]},"south":{"uv":[48.032,60.032],"uv_size":[2.936,3.936]},"west":{"uv":[54.032,30.032],"uv_size":[2.936,3.936]},"up":{"uv":[51.968,21.968],"uv_size":[-2.936,-2.936]},"down":{"uv":[51.968,22.032],"uv_size":[-2.936,2.936]}}},{"origin":[-6.75925,8.83239,-1.25],"size":[3,11,3],"pivot":[-5.25925,14.33239,0.25],"rotation":[0,0,30],"inflate":0.5,"uv":{"north":{"uv":[57.032,48.032],"uv_size":[2.936,10.936]},"east":{"uv":[58.032,12.032],"uv_size":[2.936,10.936]},"south":{"uv":[28.032,58.032],"uv_size":[2.936,10.936]},"west":{"uv":[57.032,59.032],"uv_size":[2.936,10.936]},"up":{"uv":[56.968,36.968],"uv_size":[-2.936,-2.936]},"down":{"uv":[58.968,4.032],"uv_size":[-2.936,2.936]}}}]},{"name":"LeftItemPivot","pivot":[-6.24528,11.55617,-1],"parent":"LeftArm"},{"name":"RightArm","pivot":[5.99528,20.30617,0],"parent":"body","rotation":[0,0,5],"cubes":[{"origin":[1.24528,13.94014,-1.25],"size":[3,6,3],"pivot":[4.24528,20.05617,0.25],"rotation":[0,0,-25],"uv":{"north":{"uv":[27.968,51.032],"uv_size":[-2.936,5.936]},"east":{"uv":[56.968,23.032],"uv_size":[-2.936,5.936]},"south":{"uv":[50.968,53.032],"uv_size":[-2.936,5.936]},"west":{"uv":[18.968,53.032],"uv_size":[-2.936,5.936]},"up":{"uv":[49.032,21.968],"uv_size":[2.936,-2.936]},"down":{"uv":[49.032,22.032],"uv_size":[2.936,2.936]}}},{"origin":[1.24528,8.94014,-1.25],"size":[3,11,3],"pivot":[4.24528,20.05617,0.25],"rotation":[0,0,-25],"inflate":0.25,"uv":{"north":{"uv":[21.968,56.032],"uv_size":[-2.936,10.936]},"east":{"uv":[37.968,56.032],"uv_size":[-2.936,10.936]},"south":{"uv":[34.968,56.032],"uv_size":[-2.936,10.936]},"west":{"uv":[24.968,56.032],"uv_size":[-2.936,10.936]},"up":{"uv":[51.032,14.968],"uv_size":[2.936,-2.936]},"down":{"uv":[54.032,12.032],"uv_size":[2.936,2.936]}}},{"origin":[1.24528,9.94014,-1.25],"size":[3,4,3],"pivot":[4.24528,20.05617,0.25],"rotation":[0,0,-25],"uv":{"north":{"uv":[27.968,58.032],"uv_size":[-2.936,3.936]},"east":{"uv":[56.968,30.032],"uv_size":[-2.936,3.936]},"south":{"uv":[50.968,60.032],"uv_size":[-2.936,3.936]},"west":{"uv":[18.968,60.032],"uv_size":[-2.936,3.936]},"up":{"uv":[49.032,21.968],"uv_size":[2.936,-2.936]},"down":{"uv":[49.032,22.032],"uv_size":[2.936,2.936]}}},{"origin":[3.75925,8.83239,-1.25],"size":[3,11,3],"pivot":[5.25925,14.33239,0.25],"rotation":[0,0,-30],"inflate":0.5,"uv":{"north":{"uv":[59.968,48.032],"uv_size":[-2.936,10.936]},"east":{"uv":[59.968,59.032],"uv_size":[-2.936,10.936]},"south":{"uv":[30.968,58.032],"uv_size":[-2.936,10.936]},"west":{"uv":[60.968,12.032],"uv_size":[-2.936,10.936]},"up":{"uv":[54.032,36.968],"uv_size":[2.936,-2.936]},"down":{"uv":[56.032,4.032],"uv_size":[2.936,2.936]}}}]},{"name":"RightItemPivot","pivot":[6.24528,11.55617,-1],"parent":"RightArm"},{"name":"LeftLeg","pivot":[-1.9,12,0],"parent":"whole","cubes":[{"origin":[-3.55,0,-2],"size":[3.5,12.25,4],"pivot":[-1.8,6.5,0],"rotation":[0,0,-2.5],"uv":{"north":{"uv":[63.032,12.032],"uv_size":[3.936,11.936]},"east":{"uv":[58.032,24.032],"uv_size":[4.936,11.936]},"south":{"uv":[63.032,24.032],"uv_size":[3.936,11.936]},"west":{"uv":[59.032,36.032],"uv_size":[4.936,11.936]},"up":{"uv":[19.968,52.968],"uv_size":[-3.936,-4.936]},"down":{"uv":[11.968,56.032],"uv_size":[-3.936,4.936]}}},{"origin":[-3.55,0,-2],"size":[3.5,12.25,4],"pivot":[-1.8,6.5,0],"rotation":[0,0,-2.5],"inflate":0.5,"uv":{"north":{"uv":[12.032,52.032],"uv_size":[3.936,11.936]},"east":{"uv":[39.032,51.032],"uv_size":[4.936,11.936]},"south":{"uv":[44.032,52.032],"uv_size":[3.936,11.936]},"west":{"uv":[52.032,49.032],"uv_size":[4.936,11.936]},"up":{"uv":[3.968,45.968],"uv_size":[-3.936,-4.936]},"down":{"uv":[27.968,41.032],"uv_size":[-3.936,4.936]}}}]},{"name":"RightLeg","pivot":[1.9,12,0],"parent":"whole","cubes":[{"origin":[0.05,0,-2],"size":[3.5,12.25,4],"pivot":[1.8,6.5,0],"rotation":[0,0,2.5],"uv":{"north":{"uv":[66.968,12.032],"uv_size":[-3.936,11.936]},"east":{"uv":[63.968,36.032],"uv_size":[-4.936,11.936]},"south":{"uv":[66.968,24.032],"uv_size":[-3.936,11.936]},"west":{"uv":[62.968,24.032],"uv_size":[-4.936,11.936]},"up":{"uv":[16.032,52.968],"uv_size":[3.936,-4.936]},"down":{"uv":[8.032,56.032],"uv_size":[3.936,4.936]}}},{"origin":[0.05,0,-2],"size":[3.5,12.25,4],"pivot":[1.8,6.5,0],"rotation":[0,0,2.5],"inflate":0.5,"uv":{"north":{"uv":[15.968,52.032],"uv_size":[-3.936,11.936]},"east":{"uv":[56.968,49.032],"uv_size":[-4.936,11.936]},"south":{"uv":[47.968,52.032],"uv_size":[-3.936,11.936]},"west":{"uv":[43.968,51.032],"uv_size":[-4.936,11.936]},"up":{"uv":[0.032,45.968],"uv_size":[3.936,-4.936]},"down":{"uv":[24.032,41.032],"uv_size":[3.936,4.936]}}}]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/miku.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/miku.anim.json new file mode 100644 index 0000000..89e698b --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/miku.anim.json @@ -0,0 +1 @@ +{"autoplay":["WingsIdle"],"clips":{"Blink":{"loop":"once","length":0.29167,"bones":{"eyelids_L":{"position":[[0,0,0,0],[0.125,0,-1.5,0],[0.25,0,0,0]]},"eyelids_R":{"position":[[0,0,0,0],[0.125,0,-1.5,0],[0.25,0,0,0]]}}},"EquipElytra":{"loop":"hold","length":0.29167,"bones":{"wingR":{"rotation":[[0,0,20,0],[0.25,0,10,5]],"position":[[0,0,0,0],[0.25,0,0,0]],"scale":[[0,0,0,0],[0.20833,1,1,1]]},"wingL":{"rotation":[[0,0,-20,0],[0.25,0,-10,-5]],"position":[[0,0,0,0],[0.25,0,0,0]],"scale":[[0,0,0,0],[0.20833,1,1,1]]}}},"WhileGliding":{"loop":"hold","length":0.29167,"bones":{"Head":{"rotation":[[0,0,0,0],[0.25,17.5,0,0]]},"left_main_1":{"rotation":[[0,0,0,0],[0.25,-17.5,0,0]]},"right_main_1":{"rotation":[[0,0,0,0],[0.25,-17.5,0,0]]},"wingR":{"rotation":[[0,0,10,5],[0.25,0,0,0]]},"wingL":{"rotation":[[0,0,-10,-5],[0.25,0,0,0]]}}},"pose":{"loop":"hold","length":1.125,"bones":{"Head":{"rotation":[[0,5,0,0]]},"right_main_1":{"rotation":[[0,-14.30504,29.21934,-10.09379]]},"right_main_2":{"rotation":[[0,-14.75943,20.86183,-29.33508]]},"right_front_1":{"rotation":[[0,-5.29588,28.02432,-11.17023]]},"Body":{"rotation":[[0,0,0,0]]},"wings":{"rotation":[[0,-5,0,0]]},"wingR":{"rotation":[[0,-154.49445,94.76874,152.72683]]},"wingL":{"rotation":[[0,0,-35,0]]},"LeftArm":{"rotation":[[0,-26.69458,6.86379,13.36965]]},"l_arm_1":{"rotation":[[0,0,0,0]]},"l_arm_2":{"rotation":[[0,0,0,40]]},"RightArm":{"rotation":[[0,17.5,0,-12.5]]},"r_arm_1":{"rotation":[[0,0,0,0]]},"r_arm_2":{"rotation":[[0,125,0,0]]},"RightLeg":{"rotation":[[0,12.5,0,0]]},"R_leg_2":{"rotation":[[0,-40,0,0]]},"left_main_1":{"rotation":[[0,-22.70337,-16.02363,7.5576]]},"left_front_1":{"rotation":[[0,0,0,15]]}}},"gesture":{"loop":"once","length":3.5,"bones":{"ring1":{"rotation":[[0,0,0,40],[1.08333,0,0,-2.5],[1.91667,0,0,2.5]],"scale":[[0.125,1.5,1.5,1.5],[1.08333,0.2,0.2,0.2],[1.125,0.2,0.2,0.2],[1.75,1.3,1.3,1.3]]},"ring2":{"rotation":[[0,0,0,-40],[1.08333,0,0,10],[1.91667,0,0,-2.5]],"scale":[[0.125,1.5,1.5,1.5],[1.08333,0.2,0.2,0.2],[1.125,0.2,0.2,0.2],[1.75,1.2,1.2,1.2]]},"ring3":{"rotation":[[0,0,0,50],[1.08333,0,0,-5],[1.91667,0,0,10]],"scale":[[0.125,1.5,1.5,1.5],[1.08333,0.2,0.2,0.2],[1.125,0.2,0.2,0.2],[1.75,1.1,1.1,1.1]]},"ring4":{"rotation":[[0,0,0,-60],[1.08333,0,0,10],[1.91667,0,0,-10]],"scale":[[0.125,1.5,1.5,1.5],[1.08333,0.2,0.2,0.2],[1.125,0.2,0.2,0.2],[1.75,0.9,0.9,0.9]]},"sheet":{"rotation":[[1.125,0,10,0],[1.91667,0,-10,0]],"scale":[[1.125,0,0,0],[1.75,1,1,1],[1.91667,1,1,1]]},"main":{"scale":[[1.125,0,0,0],[1.75,1,1,1],[1.91667,0.975,0.975,0.975]]},"root":{"position":[[0,0,0,0],[1.04167,0,5,0],[1.625,0,13,0],[1.79167,0,12.16,0],[2.29167,0,5,0],[3.16667,0,0,0]]},"Head":{"rotation":[[0,0,0,0],[1.04167,-12.5,0,0],[1.83333,0,0,0]]},"hair":{"rotation":[[0,0,0,0],[1.04167,0,0,0]]},"twintail":{"rotation":[[0,0,0,0],[1.04167,15,0,0],[1.79167,0,0,0]]},"eyelids_L":{"position":[[0,0,0,0],[0.41667,0,-1.5,0],[1.08333,0,-1.5,0],[1.25,0,0,0],[1.625,0,0,0],[1.83333,0,-1.5,0],[2.79167,0,-1.5,0],[3.16667,0,0,0]]},"eyelids_R":{"position":[[0,0,0,0],[0.41667,0,-1.5,0],[1.08333,0,-1.5,0],[1.25,0,0,0],[1.625,0,0,0],[1.83333,0,-1.5,0],[2.79167,0,-1.5,0],[3.16667,0,0,0]]},"LeftArm":{"rotation":[[0,0,0,0],[0.5,15,-0.5,2.5],[1.04167,15,-0.5,2.5],[1.16667,62.5,-0.5,2.5],[1.83333,62.5,-0.5,2.5],[2.5,7.11872,-2.41921,17.38227],[3,7.12,-2.42,17.38],[3.5,0,0,0]]},"l_arm_2":{"rotation":[[0,0,0,0],[0.5,126,25,17],[1.04167,126,25,17],[1.29167,8.5,10,-5],[1.83333,8.5,10,-5],[2.5,9.0543,-14.52182,40.54233],[3,9.05,-14.52,40.54],[3.5,0,0,0]],"position":[[0,0,0,0],[0.5,0,-1.25,1],[1.04167,0,-1.25,1],[1.29167,0,0,0.25],[1.83333,0,0,0.25],[2.5,0,-0.75,-0.25],[3,0,-0.75,-0.25],[3.5,0,0,0]]},"RightArm":{"rotation":[[0,0,0,0],[0.5,15,0.5,-2.5],[1.04167,15,0.5,-2.5],[1.16667,62.5,0.5,-2.5],[1.70833,62.5,0.5,-2.5],[2.04167,22.5,0.5,-2.5],[3,22.5,0.5,-2.5],[3.5,0,0,0]]},"r_arm_2":{"rotation":[[0,0,0,0],[0.5,126,-25,-17],[1.04167,126,-25,-17],[1.25,8.5,-10,-5],[1.70833,8.5,-10,-5],[2.04167,108.5,-10,-5],[3,108.5,-10,-5],[3.5,0,0,0]],"position":[[0,0,0,0],[0.5,0,-1.25,1],[1.04167,0,-1.25,1],[1.25,0,0,0.25]]},"LeftLeg":{"rotation":[[0,0,0,0],[0.375,4.96271,0.86717,-4.92442],[1.04167,4.96,0.87,-4.92],[1.20833,12.33541,23.42571,13.71129],[1.5,12.34,23.43,13.71],[2.20833,0,0,0]]},"L_leg_2":{"rotation":[[0,0,0,0],[0.375,-15,0,0],[1.04167,-15,0,0],[1.20833,-45,0,0],[1.5,-45,0,0],[1.95833,-17.5,0,0],[2.20833,0,0,0]],"position":[[1.04167,0,0,0],[1.20833,0,1,0],[1.5,0,1,0],[1.95833,0,0,0]]},"RightLeg":{"rotation":[[0,0,0,0],[0.375,-7.47,0.65,4.96],[1.5,-7.47,0.65,4.96],[1.95833,0,0,0]]},"effect":{"rotation":[[0.20833,0,0,-720],[1.125,0,0,0]],"scale":[[0.20833,1.6,1.6,1.6],[1.125,0.4,0.4,0.4]]},"left_main_1":{"rotation":[[1.04167,0,0,0],[1.5,0,0,42.5],[1.75,0,0,45],[2.75,0,0,0]]},"right_main_1":{"rotation":[[1.04167,0,0,0],[1.5,0,0,-27.5],[1.75,0,0,-42.5],[2.75,0,0,0]]},"wingR":{"rotation":[[0,0,17.5,5],[0.25,0,0,0],[1.125,0,0,-17.5],[1.33333,0,0,0],[1.58333,0,0,-10],[2.625,0,0,-5],[3,0,0,5],[3.29167,0,0,0]],"scale":[[0,0,0,0],[0.41667,1.1,1.1,1.1],[3,1,1,1],[3.5,0,0,0]]},"wingL":{"rotation":[[0,0,-17.5,-5],[0.25,0,0,0],[1.125,0,0,17.5],[1.33333,0,0,0],[1.58333,0,0,10],[2.625,0,0,5],[3,0,0,-5],[3.29167,0,0,0]],"scale":[[0,0,0,0],[0.41667,1.1,1.1,1.1],[3,1,1,1],[3.5,0,0,0]]}}},"WingsIdle":{"loop":"loop","length":2,"bones":{"section1R":{"position":[[0,0,0,0],[0.5,0,-0.25,0],[1,0,0,0],[1.5,0,0.25,0],[2,0,0,0]]},"section2R":{"position":[[0,0,0.25,0],[0.5,0,0,0],[1,0,-0.25,0],[1.5,0,0,0],[2,0,0.25,0]]},"section3R":{"position":[[0,0,0,0],[0.5,0,-0.5,0],[1,0,0,0],[1.5,0,0.5,0],[2,0,0,0]]},"section4R":{"position":[[0,0,-0.25,0],[0.5,0,0,0],[1,0,0.25,0],[1.5,0,0,0],[2,0,-0.25,0]]},"section5R":{"position":[[0,0,0,0],[0.5,0,0.5,0],[1,0,0,0],[1.5,0,-0.5,0],[2,0,0,0]]},"section6R":{"position":[[0,0,0,0],[0.5,0,0.25,0],[1,0,0,0],[1.5,0,-0.25,0],[2,0,0,0]]},"section1L":{"position":[[0,0,0.25,0],[0.5,0,0,0],[1,0,-0.25,0],[1.5,0,0,0],[2,0,0.25,0]]},"section6L":{"position":[[0,0,0,0],[0.5,0,0.5,0],[1,0,0,0],[1.5,0,-0.5,0],[2,0,0,0]]},"section2L":{"position":[[0,0,0,0],[0.5,0,0.25,0],[1,0,0,0],[1.5,0,-0.25,0],[2,0,0,0]]},"section4L":{"position":[[0,0,0,0],[0.5,0,-0.25,0],[1,0,0,0],[1.5,0,0.25,0],[2,0,0,0]]},"section5L":{"position":[[0,0,0.25,0],[0.5,0,0,0],[1,0,-0.25,0],[1.5,0,0,0],[2,0,0.25,0]]},"section3L":{"position":[[0,0,-0.5,0],[0.5,0,0,0],[1,0,0.5,0],[1.5,0,0,0],[2,0,-0.5,0]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/miku.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/miku.geo.json new file mode 100644 index 0000000..6897401 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/miku.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.miku","texture_width":2304,"texture_height":256,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"root","pivot":[0,12,0]},{"name":"UpperBody","pivot":[0,12,0],"parent":"root"},{"name":"Head","pivot":[0,25,0],"parent":"UpperBody","cubes":[{"origin":[-4,24,-4],"size":[8,8,8],"uv":{"north":{"uv":[16,16],"uv_size":[16,16]},"east":{"uv":[0,16],"uv_size":[16,16]},"south":{"uv":[48,16],"uv_size":[16,16]},"west":{"uv":[32,16],"uv_size":[16,16]},"up":{"uv":[32,16],"uv_size":[-16,-16]},"down":{"uv":[48,0],"uv_size":[-16,16]}}}]},{"name":"hair","pivot":[10.5,15.5,4.25],"parent":"Head"},{"name":"tie","pivot":[-4.55,31.8,1.6],"parent":"hair","cubes":[{"origin":[3.65,29.12861,-0.48719],"size":[1.5,4,4],"pivot":[4.15,31.8,1.35],"rotation":[52.3481,-12.57278,-13.40161],"uv":{"north":{"uv":[121,12],"uv_size":[3,8]},"east":{"uv":[113,0],"uv_size":[8,8]},"south":{"uv":[125,12],"uv_size":[3,8]},"west":{"uv":[113,8],"uv_size":[8,8]},"up":{"uv":[130,8],"uv_size":[-3,-8]},"down":{"uv":[116,16],"uv_size":[-3,8]}}},{"origin":[3.65,29.62861,0.01281],"size":[1.5,3,3],"pivot":[4.15,31.8,1.35],"rotation":[52.3481,-12.57278,-13.40161],"uv":{"north":{"uv":[117,16],"uv_size":[3,6]},"east":{"uv":[121,0],"uv_size":[6,6]},"south":{"uv":[129,8],"uv_size":[3,6]},"west":{"uv":[121,6],"uv_size":[6,6]},"up":{"uv":[132,20],"uv_size":[-3,-6]},"down":{"uv":[134,0],"uv_size":[-3,6]}}},{"origin":[-5.15,29.12861,-0.48719],"size":[1.5,4,4],"pivot":[-4.15,31.8,1.35],"rotation":[52.3481,12.57278,13.40161],"uv":{"north":{"uv":[124,12],"uv_size":[-3,8]},"east":{"uv":[121,8],"uv_size":[-8,8]},"south":{"uv":[128,12],"uv_size":[-3,8]},"west":{"uv":[121,0],"uv_size":[-8,8]},"up":{"uv":[130,0],"uv_size":[-3,8]},"down":{"uv":[116,16],"uv_size":[-3,8]}}},{"origin":[-5.15,29.62861,0.01281],"size":[1.5,3,3],"pivot":[-4.15,31.8,1.35],"rotation":[52.3481,12.57278,13.40161],"uv":{"north":{"uv":[120,16],"uv_size":[-3,6]},"east":{"uv":[127,6],"uv_size":[-6,6]},"south":{"uv":[132,8],"uv_size":[-3,6]},"west":{"uv":[127,0],"uv_size":[-6,6]},"up":{"uv":[132,14],"uv_size":[-3,6]},"down":{"uv":[134,0],"uv_size":[-3,6]}}}]},{"name":"twintail","pivot":[-4.55,32.3,1.8],"parent":"hair"},{"name":"left_main_1","pivot":[-4.45,31.2,2.15],"parent":"twintail","rotation":[2.55304,12.70581,-4.44286],"cubes":[{"origin":[-6.04144,30.73518,1.20024],"size":[2.5,2,2],"pivot":[-4.54144,30.73518,2.20024],"rotation":[0,0,15],"uv":{"north":{"uv":[84,12],"uv_size":[-2,2]},"east":{"uv":[73,21],"uv_size":[-2,2]},"south":{"uv":[71,21],"uv_size":[-2,2]},"west":{"uv":[88,17],"uv_size":[-2,2]},"up":{"uv":[87,8],"uv_size":[2,-2]},"down":{"uv":[73,21],"uv_size":[2,2]}}},{"origin":[-6.89061,26.10828,1.14388],"size":[2,7,2],"pivot":[-5.84144,31.38518,1.90024],"rotation":[0,0,17.5],"uv":{"north":{"uv":[78,0],"uv_size":[-2,7]},"east":{"uv":[80,0],"uv_size":[-2,7]},"south":{"uv":[68,12],"uv_size":[-2,7]},"west":{"uv":[78,7],"uv_size":[-2,7]},"up":{"uv":[87,10],"uv_size":[2,-2]},"down":{"uv":[76,21],"uv_size":[2,2]}}},{"origin":[-7.13639,26.4517,1.14388],"size":[2,7,2],"pivot":[-6.59144,31.58518,1.90024],"rotation":[0,0,25.5],"inflate":-0.01,"uv":{"north":{"uv":[70,12],"uv_size":[-2,7]},"east":{"uv":[80,7],"uv_size":[-2,7]},"south":{"uv":[74,12],"uv_size":[-2,7]},"west":{"uv":[72,12],"uv_size":[-2,7]},"up":{"uv":[87,12],"uv_size":[2,-2]},"down":{"uv":[87,12],"uv_size":[2,2]}}}]},{"name":"left_main_2","pivot":[-7.83574,26.46475,2.40558],"parent":"left_main_1","rotation":[5,0,0],"cubes":[{"origin":[-9.99755,15.3124,1.13958],"size":[3,12,2],"pivot":[-8.97551,25.44358,1.99452],"rotation":[0,0,24.5],"uv":{"north":{"uv":[69,0],"uv_size":[-3,12]},"east":{"uv":[76,0],"uv_size":[-2,12]},"south":{"uv":[72,0],"uv_size":[-3,12]},"west":{"uv":[74,0],"uv_size":[-2,12]},"up":{"uv":[66,21],"uv_size":[3,-2]},"down":{"uv":[69,19],"uv_size":[3,2]}}}]},{"name":"left_main_3","pivot":[-12.49144,15.93366,2.2851],"parent":"left_main_2","cubes":[{"origin":[-14.19586,12.60065,1.17686],"size":[3,4,2],"pivot":[-12.14144,16.78366,1.9351],"rotation":[0,0,1],"inflate":-0.01,"uv":{"north":{"uv":[81,14],"uv_size":[-3,4]},"east":{"uv":[86,4],"uv_size":[-2,4]},"south":{"uv":[84,14],"uv_size":[-3,4]},"west":{"uv":[86,0],"uv_size":[-2,4]},"up":{"uv":[72,21],"uv_size":[3,-2]},"down":{"uv":[84,19],"uv_size":[3,2]}}},{"origin":[-12.70369,11.2802,1.68345],"size":[2,3,1],"pivot":[-11.69144,12.73366,2.6351],"rotation":[0,0,-14.5],"inflate":-0.02,"uv":{"north":{"uv":[88,0],"uv_size":[-2,3]},"east":{"uv":[90,2],"uv_size":[-1,3]},"south":{"uv":[88,3],"uv_size":[-2,3]},"west":{"uv":[89,21],"uv_size":[-1,3]},"up":{"uv":[90,14],"uv_size":[2,-1]},"down":{"uv":[90,14],"uv_size":[2,1]}}},{"origin":[-9.90392,8.38615,1.68345],"size":[1,4,1],"pivot":[-9.89144,9.83366,2.6351],"rotation":[0,0,-41.5],"inflate":-0.01,"uv":{"north":{"uv":[83,21],"uv_size":[-1,4]},"east":{"uv":[86,21],"uv_size":[-1,4]},"south":{"uv":[85,21],"uv_size":[-1,4]},"west":{"uv":[84,21],"uv_size":[-1,4]},"up":{"uv":[87,17],"uv_size":[1,-1]},"down":{"uv":[91,12],"uv_size":[1,1]}}},{"origin":[-14.54623,9.56218,1.65845],"size":[1,3,1],"pivot":[-14.78364,13.81024,2.6101],"rotation":[0,0,-39],"inflate":0.25,"uv":{"north":{"uv":[70,23],"uv_size":[-1,3]},"east":{"uv":[90,5],"uv_size":[-1,3]},"south":{"uv":[72,23],"uv_size":[-1,3]},"west":{"uv":[71,23],"uv_size":[-1,3]},"up":{"uv":[92,1],"uv_size":[1,-1]},"down":{"uv":[67,26],"uv_size":[1,1]}}},{"origin":[-10.35276,6.08949,1.65845],"size":[1,5,1],"pivot":[-10.34144,9.58366,2.6101],"rotation":[0,0,-57.5],"inflate":0.249,"uv":{"north":{"uv":[87,12],"uv_size":[-1,5]},"east":{"uv":[69,21],"uv_size":[-1,5]},"south":{"uv":[68,21],"uv_size":[-1,5]},"west":{"uv":[67,21],"uv_size":[-1,5]},"up":{"uv":[92,2],"uv_size":[1,-1]},"down":{"uv":[68,26],"uv_size":[1,1]}}}]},{"name":"left_main_4","pivot":[-6.74144,7.98366,2.6351],"parent":"left_main_3","cubes":[{"origin":[-6.85406,6.18195,1.68345],"size":[1,2,1],"pivot":[-6.84144,6.48366,2.6351],"rotation":[0,0,-22.5],"uv":{"north":{"uv":[91,15],"uv_size":[-1,2]},"east":{"uv":[91,21],"uv_size":[-1,2]},"south":{"uv":[91,19],"uv_size":[-1,2]},"west":{"uv":[91,17],"uv_size":[-1,2]},"up":{"uv":[92,3],"uv_size":[1,-1]},"down":{"uv":[69,26],"uv_size":[1,1]}}},{"origin":[-6.7527,4.47773,1.68345],"size":[1,2,1],"pivot":[-6.64144,4.48366,2.6351],"rotation":[0,0,-2.5],"uv":{"north":{"uv":[89,24],"uv_size":[-1,2]},"east":{"uv":[92,2],"uv_size":[-1,2]},"south":{"uv":[92,0],"uv_size":[-1,2]},"west":{"uv":[91,23],"uv_size":[-1,2]},"up":{"uv":[92,4],"uv_size":[1,-1]},"down":{"uv":[70,26],"uv_size":[1,1]}}}]},{"name":"left_front_1","pivot":[-8.28574,26.86475,1.85558],"parent":"left_main_1","rotation":[5,0,0],"cubes":[{"origin":[-10.07785,20.24134,1.10069],"size":[2,7,2],"pivot":[-8.84144,25.21981,2.19739],"rotation":[0,0,27.5],"uv":{"north":{"uv":[76,12],"uv_size":[-2,7]},"east":{"uv":[78,14],"uv_size":[-2,7]},"south":{"uv":[82,7],"uv_size":[-2,7]},"west":{"uv":[82,0],"uv_size":[-2,7]},"up":{"uv":[87,16],"uv_size":[2,-2]},"down":{"uv":[87,19],"uv_size":[2,2]}}}]},{"name":"left_front_2","pivot":[-10.84144,21.11981,2.34739],"parent":"left_front_1","cubes":[{"origin":[-12.94144,17.51981,0.69739],"size":[2,4,2],"pivot":[-11.69144,20.01981,1.69739],"rotation":[-14.87932,-1.55661,33.63454],"uv":{"north":{"uv":[86,8],"uv_size":[-2,4]},"east":{"uv":[82,18],"uv_size":[-2,4]},"south":{"uv":[86,12],"uv_size":[-2,4]},"west":{"uv":[80,18],"uv_size":[-2,4]},"up":{"uv":[86,23],"uv_size":[2,-2]},"down":{"uv":[88,0],"uv_size":[2,2]}}},{"origin":[-13.94337,14.03915,0.26723],"size":[1,4,1],"pivot":[-13.64144,16.26981,1.24739],"rotation":[-13.44574,-5.13879,10.35931],"inflate":0.25,"uv":{"north":{"uv":[89,2],"uv_size":[-1,4]},"east":{"uv":[81,22],"uv_size":[-1,4]},"south":{"uv":[80,22],"uv_size":[-1,4]},"west":{"uv":[79,22],"uv_size":[-1,4]},"up":{"uv":[92,5],"uv_size":[1,-1]},"down":{"uv":[71,26],"uv_size":[1,1]}}},{"origin":[-13.78323,11.14193,-0.45845],"size":[1,3,1],"pivot":[-14.36644,12.21981,0.52239],"rotation":[-3.95576,-8.74481,-17.62127],"uv":{"north":{"uv":[73,23],"uv_size":[-1,3]},"east":{"uv":[90,8],"uv_size":[-1,3]},"south":{"uv":[75,23],"uv_size":[-1,3]},"west":{"uv":[74,23],"uv_size":[-1,3]},"up":{"uv":[92,6],"uv_size":[1,-1]},"down":{"uv":[72,26],"uv_size":[1,1]}}}]},{"name":"left_front_3","pivot":[-13.29144,11.61981,-0.30261],"parent":"left_front_2","cubes":[{"origin":[-12.41255,8.96693,-0.33936],"size":[1,3,1],"pivot":[-12.24144,10.56981,0.67239],"rotation":[5.61772,-9.41416,-54.05427],"uv":{"north":{"uv":[77,23],"uv_size":[-1,3]},"east":{"uv":[90,14],"uv_size":[-1,3]},"south":{"uv":[90,11],"uv_size":[-1,3]},"west":{"uv":[78,23],"uv_size":[-1,3]},"up":{"uv":[92,7],"uv_size":[1,-1]},"down":{"uv":[73,26],"uv_size":[1,1]}}},{"origin":[-8.03684,9.87803,0.45378],"size":[1,1,1],"pivot":[-7.69144,9.29481,0.59739],"rotation":[10.57393,-6.39115,-89.77966],"uv":{"north":{"uv":[93,7],"uv_size":[-1,1]},"east":{"uv":[93,9],"uv_size":[-1,1]},"south":{"uv":[93,8],"uv_size":[-1,1]},"west":{"uv":[75,26],"uv_size":[-1,1]},"up":{"uv":[76,27],"uv_size":[1,-1]},"down":{"uv":[92,10],"uv_size":[1,1]}}},{"origin":[-9.25565,9.40125,0.11717],"size":[1,2,1],"pivot":[-9.04144,9.16981,0.52239],"rotation":[8.57681,-8.90065,-74.8564],"uv":{"north":{"uv":[92,4],"uv_size":[-1,2]},"east":{"uv":[76,25],"uv_size":[-1,2]},"south":{"uv":[92,8],"uv_size":[-1,2]},"west":{"uv":[92,6],"uv_size":[-1,2]},"up":{"uv":[77,27],"uv_size":[1,-1]},"down":{"uv":[92,11],"uv_size":[1,1]}}}]},{"name":"left_front_4","pivot":[-7.44144,9.46981,0.14739],"parent":"left_front_3","cubes":[{"origin":[-6.50123,11.49069,0.8171],"size":[1,1,1],"pivot":[-6.19144,10.04481,0.97239],"rotation":[12.10037,-2.42033,-109.4442],"uv":{"north":{"uv":[79,26],"uv_size":[-1,1]},"east":{"uv":[93,13],"uv_size":[-1,1]},"south":{"uv":[80,26],"uv_size":[-1,1]},"west":{"uv":[93,12],"uv_size":[-1,1]},"up":{"uv":[80,27],"uv_size":[1,-1]},"down":{"uv":[92,14],"uv_size":[1,1]}}}]},{"name":"left_back_1","pivot":[-11.39144,22.76981,1.79739],"parent":"left_front_1","cubes":[{"origin":[-15.99144,16.44481,0.29739],"size":[1,3,2],"pivot":[-15.69144,17.44481,1.29739],"rotation":[2.2211,8.77539,23.08727],"uv":{"north":{"uv":[82,22],"uv_size":[-1,3]},"east":{"uv":[86,16],"uv_size":[-2,3]},"south":{"uv":[89,16],"uv_size":[-1,3]},"west":{"uv":[84,18],"uv_size":[-2,3]},"up":{"uv":[90,11],"uv_size":[1,-2]},"down":{"uv":[90,11],"uv_size":[1,2]}}},{"origin":[-12.72072,17.87903,0.7],"size":[1,6,2],"pivot":[-12.24144,21.61981,1.79739],"rotation":[-9.1222,8.33596,44.32166],"uv":{"north":{"uv":[76,19],"uv_size":[-1,6]},"east":{"uv":[84,6],"uv_size":[-2,6]},"south":{"uv":[87,6],"uv_size":[-1,6]},"west":{"uv":[84,0],"uv_size":[-2,6]},"up":{"uv":[91,12],"uv_size":[1,-2]},"down":{"uv":[81,25],"uv_size":[1,2]}}}]},{"name":"left_back_2","pivot":[-16.04144,15.86981,1.59739],"parent":"left_back_1","cubes":[{"origin":[-16.51644,14.76981,1.09739],"size":[1,2,1],"pivot":[-16.06644,14.51981,1.84739],"rotation":[11.41224,14.39573,7.96038],"uv":{"north":{"uv":[92,15],"uv_size":[-1,2]},"east":{"uv":[92,17],"uv_size":[-1,2]},"south":{"uv":[84,25],"uv_size":[-1,2]},"west":{"uv":[83,25],"uv_size":[-1,2]},"up":{"uv":[92,16],"uv_size":[1,-1]},"down":{"uv":[92,16],"uv_size":[1,1]}}},{"origin":[-15.66173,12.29517,2.78171],"size":[1,3,1],"pivot":[-14.99144,12.31981,2.59739],"rotation":[40.25055,36.6116,-2.54655],"uv":{"north":{"uv":[90,17],"uv_size":[-1,3]},"east":{"uv":[88,23],"uv_size":[-1,3]},"south":{"uv":[90,20],"uv_size":[-1,3]},"west":{"uv":[87,23],"uv_size":[-1,3]},"up":{"uv":[92,18],"uv_size":[1,-1]},"down":{"uv":[92,18],"uv_size":[1,1]}}}]},{"name":"left_back_3","pivot":[-15.24144,12.76981,2.84739],"parent":"left_back_2","cubes":[{"origin":[-14.01108,10.48024,4.07101],"size":[1,3,1],"pivot":[-13.49144,11.01981,3.59739],"rotation":[53.71794,58.38095,-12.27561],"uv":{"north":{"uv":[90,23],"uv_size":[-1,3]},"east":{"uv":[91,6],"uv_size":[-1,3]},"south":{"uv":[91,3],"uv_size":[-1,3]},"west":{"uv":[91,0],"uv_size":[-1,3]},"up":{"uv":[92,20],"uv_size":[1,-1]},"down":{"uv":[86,26],"uv_size":[1,1]}}},{"origin":[-11.84392,10.6987,4.14236],"size":[1,2,1],"pivot":[-10.99144,10.61981,3.79739],"rotation":[48.68957,76.98632,-35.25078],"uv":{"north":{"uv":[85,25],"uv_size":[-1,2]},"east":{"uv":[92,21],"uv_size":[-1,2]},"south":{"uv":[92,19],"uv_size":[-1,2]},"west":{"uv":[86,25],"uv_size":[-1,2]},"up":{"uv":[92,21],"uv_size":[1,-1]},"down":{"uv":[87,26],"uv_size":[1,1]}}}]},{"name":"left_back_4","pivot":[-10.94144,11.21981,4.49739],"parent":"left_back_3","cubes":[{"origin":[-10.04392,10.81116,4.39601],"size":[1,2,1],"pivot":[-9.19144,10.71981,4.09739],"rotation":[58.68957,76.98632,-35.25078],"uv":{"north":{"uv":[92,23],"uv_size":[-1,2]},"east":{"uv":[67,26],"uv_size":[-1,2]},"south":{"uv":[92,25],"uv_size":[-1,2]},"west":{"uv":[91,25],"uv_size":[-1,2]},"up":{"uv":[92,22],"uv_size":[1,-1]},"down":{"uv":[88,26],"uv_size":[1,1]}}}]},{"name":"right_main_1","pivot":[4.45,31.2,2.15],"parent":"twintail","rotation":[2.55304,-12.70581,4.44286],"cubes":[{"origin":[3.54144,30.73518,1.20024],"size":[2.5,2,2],"pivot":[4.54144,30.73518,2.20024],"rotation":[0,0,-15],"uv":{"north":{"uv":[82,12],"uv_size":[2,2]},"east":{"uv":[86,17],"uv_size":[2,2]},"south":{"uv":[69,21],"uv_size":[2,2]},"west":{"uv":[71,21],"uv_size":[2,2]},"up":{"uv":[89,8],"uv_size":[-2,-2]},"down":{"uv":[75,21],"uv_size":[-2,2]}}},{"origin":[4.89061,26.10828,1.14388],"size":[2,7,2],"pivot":[5.84144,31.38518,1.90024],"rotation":[0,0,-17.5],"uv":{"north":{"uv":[76,0],"uv_size":[2,7]},"east":{"uv":[76,7],"uv_size":[2,7]},"south":{"uv":[66,12],"uv_size":[2,7]},"west":{"uv":[78,0],"uv_size":[2,7]},"up":{"uv":[89,10],"uv_size":[-2,-2]},"down":{"uv":[78,21],"uv_size":[-2,2]}}},{"origin":[5.13639,26.4517,1.14388],"size":[2,7,2],"pivot":[6.59144,31.58518,1.90024],"rotation":[0,0,-25.5],"inflate":-0.01,"uv":{"north":{"uv":[68,12],"uv_size":[2,7]},"east":{"uv":[70,12],"uv_size":[2,7]},"south":{"uv":[72,12],"uv_size":[2,7]},"west":{"uv":[78,7],"uv_size":[2,7]},"up":{"uv":[89,12],"uv_size":[-2,-2]},"down":{"uv":[89,12],"uv_size":[-2,2]}}}]},{"name":"right_main_2","pivot":[7.83574,26.46475,2.40558],"parent":"right_main_1","rotation":[5,0,0],"cubes":[{"origin":[6.99755,15.3124,1.13958],"size":[3,12,2],"pivot":[8.97551,25.44358,1.99452],"rotation":[0,0,-24.5],"uv":{"north":{"uv":[66,0],"uv_size":[3,12]},"east":{"uv":[72,0],"uv_size":[2,12]},"south":{"uv":[69,0],"uv_size":[3,12]},"west":{"uv":[74,0],"uv_size":[2,12]},"up":{"uv":[69,21],"uv_size":[-3,-2]},"down":{"uv":[72,19],"uv_size":[-3,2]}}}]},{"name":"right_main_3","pivot":[12.49144,15.93366,2.2851],"parent":"right_main_2","cubes":[{"origin":[11.19586,12.60065,1.17686],"size":[3,4,2],"pivot":[12.14144,16.78366,1.9351],"rotation":[0,0,-1],"inflate":-0.01,"uv":{"north":{"uv":[78,14],"uv_size":[3,4]},"east":{"uv":[84,0],"uv_size":[2,4]},"south":{"uv":[81,14],"uv_size":[3,4]},"west":{"uv":[84,4],"uv_size":[2,4]},"up":{"uv":[75,21],"uv_size":[-3,-2]},"down":{"uv":[87,19],"uv_size":[-3,2]}}},{"origin":[10.70369,11.2802,1.68345],"size":[2,3,1],"pivot":[11.69144,12.73366,2.6351],"rotation":[0,0,14.5],"inflate":-0.02,"uv":{"north":{"uv":[86,0],"uv_size":[2,3]},"east":{"uv":[88,21],"uv_size":[1,3]},"south":{"uv":[86,3],"uv_size":[2,3]},"west":{"uv":[89,2],"uv_size":[1,3]},"up":{"uv":[92,14],"uv_size":[-2,-1]},"down":{"uv":[92,14],"uv_size":[-2,1]}}},{"origin":[8.90392,8.38615,1.68345],"size":[1,4,1],"pivot":[9.89144,9.83366,2.6351],"rotation":[0,0,41.5],"inflate":-0.01,"uv":{"north":{"uv":[82,21],"uv_size":[1,4]},"east":{"uv":[83,21],"uv_size":[1,4]},"south":{"uv":[84,21],"uv_size":[1,4]},"west":{"uv":[85,21],"uv_size":[1,4]},"up":{"uv":[88,17],"uv_size":[-1,-1]},"down":{"uv":[92,12],"uv_size":[-1,1]}}},{"origin":[13.54623,9.56218,1.65845],"size":[1,3,1],"pivot":[14.78364,13.81024,2.6101],"rotation":[0,0,39],"inflate":0.25,"uv":{"north":{"uv":[69,23],"uv_size":[1,3]},"east":{"uv":[70,23],"uv_size":[1,3]},"south":{"uv":[71,23],"uv_size":[1,3]},"west":{"uv":[89,5],"uv_size":[1,3]},"up":{"uv":[93,1],"uv_size":[-1,-1]},"down":{"uv":[68,26],"uv_size":[-1,1]}}},{"origin":[9.35276,6.08949,1.65845],"size":[1,5,1],"pivot":[10.34144,9.58366,2.6101],"rotation":[0,0,57.5],"inflate":0.249,"uv":{"north":{"uv":[86,12],"uv_size":[1,5]},"east":{"uv":[66,21],"uv_size":[1,5]},"south":{"uv":[67,21],"uv_size":[1,5]},"west":{"uv":[68,21],"uv_size":[1,5]},"up":{"uv":[93,2],"uv_size":[-1,-1]},"down":{"uv":[69,26],"uv_size":[-1,1]}}}]},{"name":"right_main_4","pivot":[6.74144,7.98366,2.6351],"parent":"right_main_3","cubes":[{"origin":[5.85406,6.18195,1.68345],"size":[1,2,1],"pivot":[6.84144,6.48366,2.6351],"rotation":[0,0,22.5],"uv":{"north":{"uv":[90,15],"uv_size":[1,2]},"east":{"uv":[90,17],"uv_size":[1,2]},"south":{"uv":[90,19],"uv_size":[1,2]},"west":{"uv":[90,21],"uv_size":[1,2]},"up":{"uv":[93,3],"uv_size":[-1,-1]},"down":{"uv":[70,26],"uv_size":[-1,1]}}},{"origin":[5.7527,4.47773,1.68345],"size":[1,2,1],"pivot":[6.64144,4.48366,2.6351],"rotation":[0,0,2.5],"uv":{"north":{"uv":[88,24],"uv_size":[1,2]},"east":{"uv":[90,23],"uv_size":[1,2]},"south":{"uv":[91,0],"uv_size":[1,2]},"west":{"uv":[91,2],"uv_size":[1,2]},"up":{"uv":[93,4],"uv_size":[-1,-1]},"down":{"uv":[71,26],"uv_size":[-1,1]}}}]},{"name":"right_front_1","pivot":[8.28574,26.86475,1.85558],"parent":"right_main_1","rotation":[5,0,0],"cubes":[{"origin":[8.07785,20.24134,1.10069],"size":[2,7,2],"pivot":[8.84144,25.21981,2.19739],"rotation":[0,0,-27.5],"uv":{"north":{"uv":[74,12],"uv_size":[2,7]},"east":{"uv":[80,0],"uv_size":[2,7]},"south":{"uv":[80,7],"uv_size":[2,7]},"west":{"uv":[76,14],"uv_size":[2,7]},"up":{"uv":[89,16],"uv_size":[-2,-2]},"down":{"uv":[89,19],"uv_size":[-2,2]}}}]},{"name":"right_front_2","pivot":[10.84144,21.11981,2.34739],"parent":"right_front_1","cubes":[{"origin":[10.94144,17.51981,0.69739],"size":[2,4,2],"pivot":[11.69144,20.01981,1.69739],"rotation":[-14.87932,1.55661,-33.63454],"uv":{"north":{"uv":[84,8],"uv_size":[2,4]},"east":{"uv":[78,18],"uv_size":[2,4]},"south":{"uv":[84,12],"uv_size":[2,4]},"west":{"uv":[80,18],"uv_size":[2,4]},"up":{"uv":[88,23],"uv_size":[-2,-2]},"down":{"uv":[90,0],"uv_size":[-2,2]}}},{"origin":[12.94337,14.03915,0.26723],"size":[1,4,1],"pivot":[13.64144,16.26981,1.24739],"rotation":[-13.44574,5.13879,-10.35931],"inflate":0.25,"uv":{"north":{"uv":[88,2],"uv_size":[1,4]},"east":{"uv":[78,22],"uv_size":[1,4]},"south":{"uv":[79,22],"uv_size":[1,4]},"west":{"uv":[80,22],"uv_size":[1,4]},"up":{"uv":[93,5],"uv_size":[-1,-1]},"down":{"uv":[72,26],"uv_size":[-1,1]}}},{"origin":[12.78323,11.14193,-0.45845],"size":[1,3,1],"pivot":[14.36644,12.21981,0.52239],"rotation":[-3.95576,8.74481,17.62127],"uv":{"north":{"uv":[72,23],"uv_size":[1,3]},"east":{"uv":[73,23],"uv_size":[1,3]},"south":{"uv":[74,23],"uv_size":[1,3]},"west":{"uv":[89,8],"uv_size":[1,3]},"up":{"uv":[93,6],"uv_size":[-1,-1]},"down":{"uv":[73,26],"uv_size":[-1,1]}}}]},{"name":"right_front_3","pivot":[13.29144,11.61981,-0.30261],"parent":"right_front_2","cubes":[{"origin":[11.41255,8.96693,-0.33936],"size":[1,3,1],"pivot":[12.24144,10.56981,0.67239],"rotation":[5.61772,9.41416,54.05427],"uv":{"north":{"uv":[76,23],"uv_size":[1,3]},"east":{"uv":[77,23],"uv_size":[1,3]},"south":{"uv":[89,11],"uv_size":[1,3]},"west":{"uv":[89,14],"uv_size":[1,3]},"up":{"uv":[93,7],"uv_size":[-1,-1]},"down":{"uv":[74,26],"uv_size":[-1,1]}}},{"origin":[7.03684,9.87803,0.45378],"size":[1,1,1],"pivot":[7.69144,9.29481,0.59739],"rotation":[10.57393,6.39115,89.77966],"uv":{"north":{"uv":[92,7],"uv_size":[1,1]},"east":{"uv":[74,26],"uv_size":[1,1]},"south":{"uv":[92,8],"uv_size":[1,1]},"west":{"uv":[92,9],"uv_size":[1,1]},"up":{"uv":[77,27],"uv_size":[-1,-1]},"down":{"uv":[93,10],"uv_size":[-1,1]}}},{"origin":[8.25565,9.40125,0.11717],"size":[1,2,1],"pivot":[9.04144,9.16981,0.52239],"rotation":[8.57681,8.90065,74.8564],"uv":{"north":{"uv":[91,4],"uv_size":[1,2]},"east":{"uv":[91,6],"uv_size":[1,2]},"south":{"uv":[91,8],"uv_size":[1,2]},"west":{"uv":[75,25],"uv_size":[1,2]},"up":{"uv":[78,27],"uv_size":[-1,-1]},"down":{"uv":[93,11],"uv_size":[-1,1]}}}]},{"name":"right_front_4","pivot":[7.44144,9.46981,0.14739],"parent":"right_front_3","cubes":[{"origin":[5.50123,11.49069,0.8171],"size":[1,1,1],"pivot":[6.19144,10.04481,0.97239],"rotation":[12.10037,2.42033,109.4442],"uv":{"north":{"uv":[78,26],"uv_size":[1,1]},"east":{"uv":[92,12],"uv_size":[1,1]},"south":{"uv":[79,26],"uv_size":[1,1]},"west":{"uv":[92,13],"uv_size":[1,1]},"up":{"uv":[81,27],"uv_size":[-1,-1]},"down":{"uv":[93,14],"uv_size":[-1,1]}}}]},{"name":"right_back_1","pivot":[11.39144,22.76981,1.79739],"parent":"right_front_1","cubes":[{"origin":[14.99144,16.44481,0.29739],"size":[1,3,2],"pivot":[15.69144,17.44481,1.29739],"rotation":[2.2211,-8.77539,-23.08727],"uv":{"north":{"uv":[81,22],"uv_size":[1,3]},"east":{"uv":[82,18],"uv_size":[2,3]},"south":{"uv":[88,16],"uv_size":[1,3]},"west":{"uv":[84,16],"uv_size":[2,3]},"up":{"uv":[91,11],"uv_size":[-1,-2]},"down":{"uv":[91,11],"uv_size":[-1,2]}}},{"origin":[11.72072,17.87903,0.7],"size":[1,6,2],"pivot":[12.24144,21.61981,1.79739],"rotation":[-9.1222,-8.33596,-44.32166],"uv":{"north":{"uv":[75,19],"uv_size":[1,6]},"east":{"uv":[82,0],"uv_size":[2,6]},"south":{"uv":[86,6],"uv_size":[1,6]},"west":{"uv":[82,6],"uv_size":[2,6]},"up":{"uv":[92,12],"uv_size":[-1,-2]},"down":{"uv":[82,25],"uv_size":[-1,2]}}}]},{"name":"right_back_2","pivot":[16.04144,15.86981,1.59739],"parent":"right_back_1","cubes":[{"origin":[15.51644,14.76981,1.09739],"size":[1,2,1],"pivot":[16.06644,14.51981,1.84739],"rotation":[11.41224,-14.39573,-7.96038],"uv":{"north":{"uv":[91,15],"uv_size":[1,2]},"east":{"uv":[82,25],"uv_size":[1,2]},"south":{"uv":[83,25],"uv_size":[1,2]},"west":{"uv":[91,17],"uv_size":[1,2]},"up":{"uv":[93,16],"uv_size":[-1,-1]},"down":{"uv":[93,16],"uv_size":[-1,1]}}},{"origin":[14.66173,12.29517,2.78171],"size":[1,3,1],"pivot":[14.99144,12.31981,2.59739],"rotation":[40.25055,-36.6116,2.54655],"uv":{"north":{"uv":[89,17],"uv_size":[1,3]},"east":{"uv":[86,23],"uv_size":[1,3]},"south":{"uv":[89,20],"uv_size":[1,3]},"west":{"uv":[87,23],"uv_size":[1,3]},"up":{"uv":[93,18],"uv_size":[-1,-1]},"down":{"uv":[93,18],"uv_size":[-1,1]}}}]},{"name":"right_back_3","pivot":[15.24144,12.76981,2.84739],"parent":"right_back_2","cubes":[{"origin":[13.01108,10.48024,4.07101],"size":[1,3,1],"pivot":[13.49144,11.01981,3.59739],"rotation":[53.71794,-58.38095,12.27561],"uv":{"north":{"uv":[89,23],"uv_size":[1,3]},"east":{"uv":[90,0],"uv_size":[1,3]},"south":{"uv":[90,3],"uv_size":[1,3]},"west":{"uv":[90,6],"uv_size":[1,3]},"up":{"uv":[93,20],"uv_size":[-1,-1]},"down":{"uv":[87,26],"uv_size":[-1,1]}}},{"origin":[10.84392,10.6987,4.14236],"size":[1,2,1],"pivot":[10.99144,10.61981,3.79739],"rotation":[48.68957,-76.98632,35.25078],"uv":{"north":{"uv":[84,25],"uv_size":[1,2]},"east":{"uv":[85,25],"uv_size":[1,2]},"south":{"uv":[91,19],"uv_size":[1,2]},"west":{"uv":[91,21],"uv_size":[1,2]},"up":{"uv":[93,21],"uv_size":[-1,-1]},"down":{"uv":[88,26],"uv_size":[-1,1]}}}]},{"name":"right_back_4","pivot":[10.94144,11.21981,4.49739],"parent":"right_back_3","cubes":[{"origin":[9.04392,10.81116,4.39601],"size":[1,2,1],"pivot":[9.19144,10.71981,4.09739],"rotation":[58.68957,-76.98632,35.25078],"uv":{"north":{"uv":[91,23],"uv_size":[1,2]},"east":{"uv":[90,25],"uv_size":[1,2]},"south":{"uv":[91,25],"uv_size":[1,2]},"west":{"uv":[66,26],"uv_size":[1,2]},"up":{"uv":[93,22],"uv_size":[-1,-1]},"down":{"uv":[89,26],"uv_size":[-1,1]}}}]},{"name":"bangs","pivot":[0,26.25,-6.1],"parent":"Head","cubes":[{"origin":[-1.2,26.025,-4.25],"size":[1,3,1],"pivot":[-0.2,26.025,-4.25],"rotation":[9.85108,-1.72794,14.85108],"uv":{"north":{"uv":[106,12],"uv_size":[1,3]},"east":{"uv":[107,12],"uv_size":[1,3]},"south":{"uv":[108,4],"uv_size":[1,3]},"west":{"uv":[108,12],"uv_size":[1,3]},"up":{"uv":[109,8],"uv_size":[-1,-1]},"down":{"uv":[110,13],"uv_size":[-1,1]}}},{"origin":[-0.075,26.625,-4.375],"size":[1,2,1],"pivot":[0.925,26.625,-4.375],"rotation":[9.85108,-1.72794,14.85108],"uv":{"north":{"uv":[102,10],"uv_size":[1,2]},"east":{"uv":[101,14],"uv_size":[1,2]},"south":{"uv":[109,6],"uv_size":[1,2]},"west":{"uv":[102,14],"uv_size":[1,2]},"up":{"uv":[110,15],"uv_size":[-1,-1]},"down":{"uv":[111,0],"uv_size":[-1,1]}}},{"origin":[-0.4875,28.52923,-5.10317],"size":[2,4,1],"pivot":[1.5125,27.52923,-5.10317],"rotation":[-14.24791,-4.04585,-2.52088],"uv":{"north":{"uv":[103,0],"uv_size":[2,4]},"east":{"uv":[99,10],"uv_size":[1,4]},"south":{"uv":[103,4],"uv_size":[2,4]},"west":{"uv":[105,4],"uv_size":[1,4]},"up":{"uv":[105,15],"uv_size":[-2,-1]},"down":{"uv":[111,8],"uv_size":[-2,1]}}},{"origin":[2.675,27.5,-4.35],"size":[2,4,2],"pivot":[3.675,27.5,-3.35],"rotation":[-0.98448,-7.43547,-17.43603],"uv":{"north":{"uv":[103,8],"uv_size":[2,4]},"east":{"uv":[95,10],"uv_size":[2,4]},"south":{"uv":[105,0],"uv_size":[2,4]},"west":{"uv":[97,10],"uv_size":[2,4]},"up":{"uv":[102,12],"uv_size":[-2,-2]},"down":{"uv":[107,8],"uv_size":[-2,2]}}},{"origin":[1.94711,27.50476,-4.58659],"size":[2,2,2],"pivot":[2.15,27.35,-3.35],"rotation":[-10,-7.5,-25],"uv":{"north":{"uv":[105,10],"uv_size":[2,2]},"east":{"uv":[106,4],"uv_size":[2,2]},"south":{"uv":[106,6],"uv_size":[2,2]},"west":{"uv":[107,0],"uv_size":[2,2]},"up":{"uv":[109,4],"uv_size":[-2,-2]},"down":{"uv":[102,12],"uv_size":[-2,2]}}},{"origin":[3.025,25,-4.325],"size":[1,3,1],"pivot":[3.025,25,-3.325],"rotation":[-6.7931,-5.06114,10.06909],"inflate":0.1,"uv":{"north":{"uv":[95,14],"uv_size":[1,3]},"east":{"uv":[109,0],"uv_size":[1,3]},"south":{"uv":[96,14],"uv_size":[1,3]},"west":{"uv":[97,14],"uv_size":[1,3]},"up":{"uv":[111,2],"uv_size":[-1,-1]},"down":{"uv":[111,2],"uv_size":[-1,1]}}},{"origin":[2.34861,30.67383,-4.55214],"size":[1,1,2],"pivot":[2.38951,29.33168,-3.42587],"rotation":[-10,-7.5,-25],"uv":{"north":{"uv":[110,3],"uv_size":[1,1]},"east":{"uv":[109,9],"uv_size":[2,1]},"south":{"uv":[110,4],"uv_size":[1,1]},"west":{"uv":[109,10],"uv_size":[2,1]},"up":{"uv":[106,16],"uv_size":[-1,-2]},"down":{"uv":[110,11],"uv_size":[-1,2]}}},{"origin":[-4.15,24.725,-4.275],"size":[1,3,1],"pivot":[-3.15,24.725,-3.275],"rotation":[-6.27783,6.05998,-5.14678],"inflate":0.1,"uv":{"north":{"uv":[98,14],"uv_size":[1,3]},"east":{"uv":[109,3],"uv_size":[1,3]},"south":{"uv":[99,14],"uv_size":[1,3]},"west":{"uv":[100,14],"uv_size":[1,3]},"up":{"uv":[111,6],"uv_size":[-1,-1]},"down":{"uv":[111,6],"uv_size":[-1,1]}}},{"origin":[-4.65,27.225,-4.35],"size":[2,5,2],"pivot":[-3.65,27.225,-3.35],"rotation":[-3.46148,7.10943,17.44879],"uv":{"north":{"uv":[95,0],"uv_size":[2,5]},"east":{"uv":[97,0],"uv_size":[2,5]},"south":{"uv":[99,0],"uv_size":[2,5]},"west":{"uv":[95,5],"uv_size":[2,5]},"up":{"uv":[104,14],"uv_size":[-2,-2]},"down":{"uv":[109,8],"uv_size":[-2,2]}}},{"origin":[-4.15,28.025,-4.625],"size":[2,5,2],"pivot":[-3.15,28.025,-3.625],"rotation":[-8.04845,7.24305,40.12353],"uv":{"north":{"uv":[97,5],"uv_size":[2,5]},"east":{"uv":[99,5],"uv_size":[2,5]},"south":{"uv":[101,0],"uv_size":[2,5]},"west":{"uv":[101,5],"uv_size":[2,5]},"up":{"uv":[106,14],"uv_size":[-2,-2]},"down":{"uv":[109,10],"uv_size":[-2,2]}}}]},{"name":"headphones","pivot":[0,25.2,-2.75],"parent":"Head","cubes":[{"origin":[-4.5,25.2,-2],"size":[1,3,3],"uv":{"north":{"uv":[112,34],"uv_size":[1,3]},"east":{"uv":[107,34],"uv_size":[3,3]},"south":{"uv":[112,37],"uv_size":[1,3]},"west":{"uv":[107,37],"uv_size":[3,3]},"up":{"uv":[108,43],"uv_size":[-1,-3]},"down":{"uv":[114,34],"uv_size":[-1,3]}}},{"origin":[-4.5237,27.98356,-1],"size":[1,3,1],"pivot":[-3.5237,27.98356,0],"rotation":[0,0,10],"uv":{"north":{"uv":[108,40],"uv_size":[1,3]},"east":{"uv":[109,40],"uv_size":[1,3]},"south":{"uv":[110,40],"uv_size":[1,3]},"west":{"uv":[113,37],"uv_size":[1,3]},"up":{"uv":[115,37],"uv_size":[-1,-1]},"down":{"uv":[115,37],"uv_size":[-1,1]}}},{"origin":[-4.075,25.2,-2.025],"size":[0,3,2],"inflate":-0.5,"uv":{"north":{"uv":[107,34],"uv_size":[0,3]},"south":{"uv":[107,34],"uv_size":[0,3]},"up":{"uv":[107,36],"uv_size":[0,-2]},"down":{"uv":[107,34],"uv_size":[0,2]}}},{"origin":[4.074,25.2,-2.025],"size":[1,3,2],"inflate":-0.5,"uv":{"east":{"uv":[110,34],"uv_size":[2,3]}}},{"origin":[-5.075,25.2,-2.025],"size":[1,3,2],"inflate":-0.5,"uv":{"west":{"uv":[112,34],"uv_size":[-2,3]}}},{"origin":[3.5,25.2,-2],"size":[1,3,3],"uv":{"north":{"uv":[113,34],"uv_size":[-1,3]},"east":{"uv":[110,37],"uv_size":[-3,3]},"south":{"uv":[113,37],"uv_size":[-1,3]},"west":{"uv":[110,34],"uv_size":[-3,3]},"up":{"uv":[108,40],"uv_size":[-1,3]},"down":{"uv":[114,34],"uv_size":[-1,3]}}},{"origin":[3.5237,27.98356,-1],"size":[1,3,1],"pivot":[3.5237,27.98356,0],"rotation":[0,0,-10],"uv":{"north":{"uv":[109,40],"uv_size":[-1,3]},"east":{"uv":[114,37],"uv_size":[-1,3]},"south":{"uv":[111,40],"uv_size":[-1,3]},"west":{"uv":[110,40],"uv_size":[-1,3]},"up":{"uv":[115,36],"uv_size":[-1,1]},"down":{"uv":[115,37],"uv_size":[-1,1]}}},{"origin":[4.075,25.2,-2.025],"size":[0,3,2],"inflate":-0.5,"uv":{"north":{"uv":[107,34],"uv_size":[0,3]},"south":{"uv":[107,34],"uv_size":[0,3]},"up":{"uv":[107,34],"uv_size":[0,2]},"down":{"uv":[107,34],"uv_size":[0,2]}}},{"origin":[4.25,24.2,-2.5],"size":[0,0.75,2],"pivot":[4.25,24.2,-2.5],"rotation":[42.5,0,0],"uv":{"east":{"uv":[114,34],"uv_size":[2,1]}}},{"origin":[4.25,23.59859,-4.40743],"size":[0,0.75,2],"pivot":[4.25,23.59859,-4.40743],"rotation":[17.5,0,0],"uv":{"east":{"uv":[114,35],"uv_size":[2,1]}}},{"origin":[2.251,23.59889,-4.90648],"size":[0,0.75,2.5],"pivot":[2.251,23.59889,-4.40648],"rotation":[90,72.5,90],"uv":{"east":{"uv":[111,40],"uv_size":[3,1]}}}]},{"name":"eyebrows_eyelids","pivot":[0,24.75,2.025],"parent":"Head"},{"name":"eyelids_L","pivot":[0,24.75,2.025],"parent":"eyebrows_eyelids","cubes":[{"origin":[1,25.5,-3.995],"size":[2,3,0],"uv":{"north":{"uv":[0,92],"uv_size":[4,6]},"east":{"uv":[0,92],"uv_size":[0,6]},"west":{"uv":[0,92],"uv_size":[0,6]},"up":{"uv":[4,92],"uv_size":[-4,0]},"down":{"uv":[4,92],"uv_size":[-4,0]}}},{"origin":[1,27,-4.1],"size":[1.5,0.5,0.25],"uv":{"north":{"uv":[0,99],"uv_size":[3,1]},"east":{"uv":[4,99],"uv_size":[1,1]},"west":{"uv":[4,101],"uv_size":[1,1]},"up":{"uv":[3,102],"uv_size":[-3,-1]},"down":{"uv":[3,103],"uv_size":[-3,1]}}}]},{"name":"eyelids_R","pivot":[0,24.75,2.025],"parent":"eyebrows_eyelids","cubes":[{"origin":[-3,25.5,-3.995],"size":[2,3,0],"uv":{"north":{"uv":[4,92],"uv_size":[-4,6]},"east":{"uv":[0,92],"uv_size":[0,6]},"west":{"uv":[0,92],"uv_size":[0,6]},"up":{"uv":[0,92],"uv_size":[4,0]},"down":{"uv":[0,92],"uv_size":[4,0]}}},{"origin":[-2.5,27,-4.1],"size":[1.5,0.5,0.25],"uv":{"north":{"uv":[3,99],"uv_size":[-3,1]},"east":{"uv":[5,101],"uv_size":[-1,1]},"west":{"uv":[5,99],"uv_size":[-1,1]},"up":{"uv":[0,102],"uv_size":[3,-1]},"down":{"uv":[0,103],"uv_size":[3,1]}}}]},{"name":"eyes","pivot":[0,24.75,0],"parent":"Head","cubes":[{"origin":[-3,25.25,-3.915],"size":[6,2,0],"uv":{"north":{"uv":[0,105],"uv_size":[12,4]},"east":{"uv":[0,105],"uv_size":[0,4]},"west":{"uv":[0,105],"uv_size":[0,4]},"up":{"uv":[12,105],"uv_size":[-12,0]},"down":{"uv":[12,105],"uv_size":[-12,0]}}}]},{"name":"Reye","pivot":[0,24.75,0],"parent":"eyes","cubes":[{"origin":[1.2,25.5,-3.95],"size":[1,1.5,0],"inflate":0.01,"uv":{"north":{"uv":[0,88],"uv_size":[2,3]},"south":{"uv":[7,88],"uv_size":[2,3]}}}]},{"name":"Reyetop","pivot":[0,24.75,0],"parent":"eyes","cubes":[{"origin":[1.2,26,-3.975],"size":[1,1,0],"inflate":0.01,"uv":{"north":{"uv":[0,88],"uv_size":[2,2]},"south":{"uv":[7,88],"uv_size":[2,2]}}}]},{"name":"Leye","pivot":[0,24.75,0],"parent":"eyes","cubes":[{"origin":[-2.2,25.5,-3.95],"size":[1,1.5,0],"inflate":0.01,"uv":{"north":{"uv":[3,88],"uv_size":[2,3]},"south":{"uv":[10,88],"uv_size":[2,3]}}}]},{"name":"Leyetop","pivot":[0,24.75,0],"parent":"eyes","cubes":[{"origin":[-2.2,26,-3.975],"size":[1,1,0],"inflate":0.01,"uv":{"north":{"uv":[3,88],"uv_size":[2,2]},"south":{"uv":[10,88],"uv_size":[2,2]}}}]},{"name":"Body","pivot":[0,24,0],"parent":"UpperBody"},{"name":"actual_body","pivot":[0,24,0.05],"parent":"Body","cubes":[{"origin":[-3.25,20.96993,-2.05677],"size":[6.5,3.25,4],"pivot":[0.01,23.96993,-1.05677],"rotation":[-3,0,0],"uv":{"north":{"uv":[33,34],"uv_size":[7,3]},"east":{"uv":[34,44],"uv_size":[4,3]},"south":{"uv":[33,37],"uv_size":[7,3]},"west":{"uv":[34,47],"uv_size":[4,3]},"up":{"uv":[34,47],"uv_size":[-7,-4]},"down":{"uv":[34,47],"uv_size":[-7,4]}}},{"origin":[-3.25,20.88432,-1.8843],"size":[6.5,3.25,3],"pivot":[0.01,23.88432,-0.8843],"rotation":[-14,0,0],"inflate":-0.01,"uv":{"north":{"uv":[33,34],"uv_size":[7,3]},"east":{"uv":[35,44],"uv_size":[3,3]},"west":{"uv":[34,47],"uv_size":[3,3]}}},{"origin":[-3.25,12.07214,-2.15356],"size":[6.5,9,4],"pivot":[-0.05,19.07214,-1.15356],"rotation":[2,0,0],"inflate":-0.02,"uv":{"north":{"uv":[26,34],"uv_size":[-7,9]},"east":{"uv":[27,43],"uv_size":[-4,9]},"south":{"uv":[33,34],"uv_size":[-7,9]},"west":{"uv":[23,43],"uv_size":[-4,9]},"up":{"uv":[34,43],"uv_size":[-7,4]},"down":{"uv":[34,47],"uv_size":[-7,4]}}},{"origin":[-3.25,17.5439,-2.11152],"size":[6.5,4,3],"pivot":[0.02,19.5439,-1.11152],"rotation":[14.5,0,0],"inflate":-0.01,"uv":{"north":{"uv":[19,34],"uv_size":[7,3]},"east":{"uv":[19,43],"uv_size":[3,3]},"west":{"uv":[24,43],"uv_size":[3,3]}}},{"origin":[-3.675,15,-1.975],"size":[3,4,4],"pivot":[-3.175,15,0.025],"rotation":[2.5,0,10],"inflate":0.01,"uv":{"north":{"uv":[34,50],"uv_size":[3,4]},"south":{"uv":[27,51],"uv_size":[3,4]},"west":{"uv":[34,40],"uv_size":[4,4]},"down":{"uv":[33,51],"uv_size":[-3,4]}}},{"origin":[0.675,15,-1.975],"size":[3,4,4],"pivot":[3.175,15,0.025],"rotation":[2.5,0,-10],"inflate":0.01,"uv":{"north":{"uv":[37,50],"uv_size":[-3,4]},"east":{"uv":[38,40],"uv_size":[-4,4]},"south":{"uv":[30,51],"uv_size":[-3,4]},"down":{"uv":[30,51],"uv_size":[3,4]}}}]},{"name":"tie2","pivot":[0,23.8,-2.05],"parent":"Body","rotation":[-12.5,0,0],"cubes":[{"origin":[-0.5,21.1,-2.3],"size":[1,3,0],"pivot":[0,24.1,-2.3],"rotation":[-2.46207,0.43399,9.99067],"inflate":-0.25,"uv":{"north":{"uv":[136,6.1],"uv_size":[2,6]}}},{"origin":[-1.31617,19.76215,-2.27732],"size":[1,2,0],"pivot":[-0.81617,20.76215,-2.27732],"rotation":[10.28217,1.15408,27.47766],"inflate":-0.25,"uv":{"north":{"uv":[136,12.1],"uv_size":[2,4]}}}]},{"name":"Skirt","pivot":[0,15.25,-0.2],"parent":"Body"},{"name":"SkirtFront","pivot":[0,15.15,-0.9],"parent":"Skirt","rotation":[-20,0,0],"cubes":[{"origin":[-2,11.05933,-2.37329],"size":[4,4,2],"uv":{"north":{"uv":[4,34],"uv_size":[-4,4]},"east":{"uv":[9,46],"uv_size":[2,4]},"south":{"uv":[0,38],"uv_size":[4,4]},"west":{"uv":[11,46],"uv_size":[2,4]},"up":{"uv":[17,36],"uv_size":[-4,-2]},"down":{"uv":[17,36],"uv_size":[-4,2]}}}]},{"name":"SkirtBack","pivot":[0,15.15,0.9],"parent":"Skirt","rotation":[20,0,0],"cubes":[{"origin":[-2,11.05933,0.37329],"size":[4,4,2],"uv":{"north":{"uv":[4,38],"uv_size":[-4,4]},"east":{"uv":[11,46],"uv_size":[-2,4]},"south":{"uv":[4,34],"uv_size":[-4,4]},"west":{"uv":[13,46],"uv_size":[-2,4]},"up":{"uv":[17,34],"uv_size":[-4,2]},"down":{"uv":[17,38],"uv_size":[-4,-2]}}}]},{"name":"right","pivot":[3.55153,15.06035,-0.025],"parent":"Skirt","rotation":[0,-90,-42.5],"cubes":[{"origin":[1.92653,12.32307,-0.47441],"size":[3.25,4,2.25],"uv":{"north":{"uv":[7,34],"uv_size":[-3,4]},"east":{"uv":[13,38],"uv_size":[2,4]},"south":{"uv":[4,38],"uv_size":[3,4]},"west":{"uv":[13,45],"uv_size":[2,4]},"up":{"uv":[3,51],"uv_size":[-3,-2]},"down":{"uv":[6,49],"uv_size":[-3,2]}}}]},{"name":"left","pivot":[-3.53146,15.11963,-0.025],"parent":"Skirt","rotation":[0,90,40],"cubes":[{"origin":[-5.15646,12.35359,-0.50721],"size":[3.25,4,2.25],"uv":{"north":{"uv":[7,34],"uv_size":[-3,4]},"east":{"uv":[15,45],"uv_size":[-2,4]},"south":{"uv":[7,38],"uv_size":[-3,4]},"west":{"uv":[15,38],"uv_size":[-2,4]},"up":{"uv":[0,51],"uv_size":[3,-2]},"down":{"uv":[3,49],"uv_size":[3,2]}}}]},{"name":"belt","pivot":[-1.85,12.25,-0.375],"parent":"left","rotation":[90,-85,-90],"cubes":[{"origin":[-1.825,11.8071,-0.64318],"size":[0.75,3,0],"pivot":[-0.825,14.3071,-0.64318],"rotation":[-12.5,0,0],"inflate":0.001,"uv":{"north":{"uv":[0,62],"uv_size":[2.975,12]},"south":{"uv":[3.96666,62],"uv_size":[2.97501,12]}}},{"origin":[-1.825,11.85937,3.09853],"size":[0.75,3,0],"pivot":[-0.825,14.35937,3.09853],"rotation":[17.5,0,0],"inflate":0.001,"uv":{"north":{"uv":[7.93333,62],"uv_size":[2.975,12]},"south":{"uv":[0,74],"uv_size":[2.975,12]}}},{"origin":[-1.825,8.40944,1.12553],"size":[0.75,2.75,0],"pivot":[-0.825,10.90944,1.12553],"rotation":[-112.5,0,0],"inflate":0.001,"uv":{"north":{"uv":[11.9,62],"uv_size":[2.975,12]},"south":{"uv":[3.96666,74],"uv_size":[2.97501,12]}}},{"origin":[-1.825,9.51468,3.39672],"size":[0.75,2.75,0],"pivot":[-0.825,11.76468,3.39672],"rotation":[-65,0,0],"inflate":0.001,"uv":{"north":{"uv":[7.93333,74],"uv_size":[2.975,12]},"south":{"uv":[11.9,74],"uv_size":[2.975,12]}}},{"origin":[-1.92854,12.77298,0],"size":[0,0.85,2.6],"pivot":[-1.85,13.5,1.55],"rotation":[0,0,5],"inflate":0.001,"uv":{"west":{"uv":[16,62],"uv_size":[13.88333,5]}}}]},{"name":"veilR","pivot":[2.175,16.1,1.75],"parent":"Skirt"},{"name":"sectionR1","pivot":[2.175,16.1,1.75],"parent":"veilR","rotation":[0,17.5,0],"cubes":[{"origin":[3.77179,10.32155,0.31434],"size":[3,7,1],"pivot":[3.82624,17.32233,1.30654],"rotation":[75.96772,61.9046,51.04146],"uv":{"east":{"uv":[94,41],"uv_size":[-1,7]},"south":{"uv":[91,34],"uv_size":[-3,7]},"west":{"uv":[93,41],"uv_size":[-1,7]},"up":{"uv":[95,42],"uv_size":[3,-1]}}},{"origin":[1.77033,4.38618,1.29609],"size":[2,12,1],"pivot":[1.77571,16.3916,1.24719],"rotation":[29.10611,21.83612,-12.09205],"uv":{"south":{"uv":[88,34],"uv_size":[-2,12]},"up":{"uv":[90,44],"uv_size":[2,-1]}}},{"origin":[0.59501,8.4528,1.13227],"size":[2,7,1],"pivot":[0.57571,15.4916,1.14719],"rotation":[27.92343,-3.21078,-26.17889],"uv":{"east":{"uv":[89,43],"uv_size":[-1,7]},"south":{"uv":[95,34],"uv_size":[-2,7]},"west":{"uv":[96,34],"uv_size":[-1,7]}}}]},{"name":"sectionR2","pivot":[4.57571,10.9916,5.39719],"parent":"sectionR1","cubes":[{"origin":[2.91021,3.58848,4.22406],"size":[2,7,1],"pivot":[2.90745,10.58399,4.14246],"rotation":[9.75712,-6.28037,-10.52028],"uv":{"south":{"uv":[93,34],"uv_size":[-2,7]},"west":{"uv":[95,41],"uv_size":[-1,7]}}}]},{"name":"veilL","pivot":[-2.175,16.1,1.75],"parent":"Skirt"},{"name":"sectionL1","pivot":[-2.175,16.1,1.75],"parent":"veilL","rotation":[0,-17.5,0],"cubes":[{"origin":[-6.77179,10.27995,0.31343],"size":[3,7,1],"pivot":[-3.82624,17.28073,1.30563],"rotation":[75.96772,-61.9046,-51.04146],"uv":{"east":{"uv":[92,41],"uv_size":[1,7]},"south":{"uv":[88,34],"uv_size":[3,7]},"west":{"uv":[93,41],"uv_size":[1,7]},"up":{"uv":[98,42],"uv_size":[-3,-1]}}},{"origin":[-3.77033,4.34458,1.29518],"size":[2,12,1],"pivot":[-1.77571,16.35,1.24628],"rotation":[29.10611,-21.83612,12.09205],"uv":{"south":{"uv":[86,34],"uv_size":[2,12]},"up":{"uv":[92,44],"uv_size":[-2,-1]}}},{"origin":[-2.59501,8.4112,1.13136],"size":[2,7,1],"pivot":[-0.57571,15.45,1.14628],"rotation":[27.92343,3.21078,26.17889],"uv":{"east":{"uv":[95,34],"uv_size":[1,7]},"south":{"uv":[93,34],"uv_size":[2,7]},"west":{"uv":[88,43],"uv_size":[1,7]}}}]},{"name":"sectionL2","pivot":[-4.57571,10.95,5.39628],"parent":"sectionL1","cubes":[{"origin":[-4.91021,3.54688,4.22315],"size":[2,7,1],"pivot":[-2.90745,10.54239,4.14155],"rotation":[9.75712,6.28037,10.52028],"uv":{"east":{"uv":[94,41],"uv_size":[1,7]},"south":{"uv":[91,34],"uv_size":[2,7]}}}]},{"name":"SkirtBackRight","pivot":[1.8,15.8,1.2],"parent":"Skirt","rotation":[15,15,-20],"cubes":[{"origin":[0.05,11.55,-1.1],"size":[3.25,4,3],"pivot":[2.05,15.55,0.9],"rotation":[-1.24202,1.30118,4.65134],"uv":{"north":{"uv":[3,42],"uv_size":[-3,4]},"east":{"uv":[10,38],"uv_size":[-3,4]},"south":{"uv":[10,34],"uv_size":[-3,4]},"west":{"uv":[6,42],"uv_size":[-3,4]},"up":{"uv":[3,46],"uv_size":[-3,3]},"down":{"uv":[6,49],"uv_size":[-3,-3]}}}]},{"name":"SkirtBackLeft","pivot":[-1.8,15.8,1.2],"parent":"Skirt","rotation":[15,-15,20],"cubes":[{"origin":[-3.3,11.55,-1.1],"size":[3.25,4,3],"pivot":[-2.05,15.55,0.9],"rotation":[-1.24202,-1.30118,-4.65134],"uv":{"north":{"uv":[13,34],"uv_size":[-3,4]},"east":{"uv":[12,42],"uv_size":[-3,4]},"south":{"uv":[9,42],"uv_size":[-3,4]},"west":{"uv":[13,38],"uv_size":[-3,4]},"up":{"uv":[9,46],"uv_size":[-3,3]},"down":{"uv":[15,45],"uv_size":[-3,-3]}}}]},{"name":"SkirtFrontRight","pivot":[1.8,15.8,-1.2],"parent":"Skirt","rotation":[-15,-15,-20]},{"name":"FrontRight","pivot":[1.8,15.8,-1.2],"parent":"SkirtFrontRight","cubes":[{"origin":[0.05,11.55,-1.9],"size":[3.25,4,3],"pivot":[2.05,15.55,-0.9],"rotation":[1.24202,-1.30118,4.65134],"uv":{"north":{"uv":[10,34],"uv_size":[-3,4]},"east":{"uv":[7,38],"uv_size":[3,4]},"south":{"uv":[0,42],"uv_size":[3,4]},"west":{"uv":[3,42],"uv_size":[3,4]},"up":{"uv":[3,49],"uv_size":[-3,-3]},"down":{"uv":[6,46],"uv_size":[-3,3]}}}]},{"name":"test2","pivot":[1.98322,16.08506,-2.4836],"parent":"SkirtFrontRight","rotation":[13,5,24],"cubes":[{"origin":[0.61642,11.59424,-2.61893],"size":[1,5,0],"pivot":[1.86198,14.43345,-2.63182],"rotation":[-15.12353,-7.24305,-8.04845],"inflate":0.02,"uv":{"north":{"uv":[90,43],"uv_size":[-1,5]},"east":{"uv":[86,34],"uv_size":[0,5]},"west":{"uv":[86,34],"uv_size":[0,5]},"up":{"uv":[86,34],"uv_size":[1,0]},"down":{"uv":[86,34],"uv_size":[1,0]}}},{"origin":[-0.60461,13.0061,-2.61893],"size":[2,1,0],"pivot":[1.86198,14.43345,-2.63182],"rotation":[-2.70076,-16.51868,-63.61911],"inflate":0.01,"uv":{"north":{"uv":[97,42],"uv_size":[-2,1]},"east":{"uv":[86,34],"uv_size":[0,1]},"west":{"uv":[86,34],"uv_size":[0,1]},"up":{"uv":[86,34],"uv_size":[2,0]},"down":{"uv":[86,34],"uv_size":[2,0]}}},{"origin":[1.60987,12.86314,-2.61893],"size":[2,1,0],"pivot":[1.86198,14.43345,-2.63182],"rotation":[-8.93375,-14.20529,-40.39582],"inflate":0.01,"uv":{"north":{"uv":[97,43],"uv_size":[-2,1]},"east":{"uv":[86,34],"uv_size":[0,1]},"west":{"uv":[86,34],"uv_size":[0,1]},"up":{"uv":[86,34],"uv_size":[2,0]},"down":{"uv":[86,34],"uv_size":[2,0]}}},{"origin":[3.47966,13.86857,-2.68069],"size":[1,1,0],"pivot":[3.47007,14.76965,-2.77757],"rotation":[26.85326,-47.25182,-87.97279],"uv":{"north":{"uv":[97,43],"uv_size":[-2,1]},"east":{"uv":[86,34],"uv_size":[0,1]},"west":{"uv":[86,34],"uv_size":[0,1]},"up":{"uv":[86,34],"uv_size":[2,0]},"down":{"uv":[86,34],"uv_size":[2,0]}}},{"origin":[0.26278,13.50607,-2.61892],"size":[3.5,2,0],"pivot":[1.86198,14.43345,-2.63182],"rotation":[-6.2951,-15.53402,-50.65174],"uv":{"north":{"uv":[92,41],"uv_size":[-4,2]},"east":{"uv":[86,34],"uv_size":[0,2]},"west":{"uv":[86,34],"uv_size":[0,2]},"up":{"uv":[86,34],"uv_size":[4,0]},"down":{"uv":[86,34],"uv_size":[4,0]}}},{"origin":[2.26279,15.50606,-2.61893],"size":[1.5,1,0],"pivot":[1.86198,14.43345,-2.63182],"rotation":[-6.2951,-15.53402,-50.65174],"uv":{"north":{"uv":[98,34],"uv_size":[-2,1]},"east":{"uv":[86,34],"uv_size":[0,1]},"west":{"uv":[86,34],"uv_size":[0,1]},"up":{"uv":[86,34],"uv_size":[2,0]},"down":{"uv":[86,34],"uv_size":[2,0]}}}]},{"name":"SkirtFrontLeft","pivot":[-1.8,15.8,-1.2],"parent":"Skirt","rotation":[-15,15,20]},{"name":"FrontLeft","pivot":[-1.8,15.8,-1.2],"parent":"SkirtFrontLeft","cubes":[{"origin":[-3.3,11.55,-1.9],"size":[3.25,4,3],"pivot":[-2.05,15.55,-0.9],"rotation":[1.24202,1.30118,-4.65134],"uv":{"north":{"uv":[9,42],"uv_size":[-3,4]},"east":{"uv":[9,42],"uv_size":[3,4]},"south":{"uv":[10,34],"uv_size":[3,4]},"west":{"uv":[10,38],"uv_size":[3,4]},"up":{"uv":[9,49],"uv_size":[-3,-3]},"down":{"uv":[15,42],"uv_size":[-3,3]}}}]},{"name":"test","pivot":[-1.98322,16.08506,-2.4836],"parent":"SkirtFrontLeft","rotation":[13,-5,-24],"cubes":[{"origin":[-1.61642,11.59424,-2.61893],"size":[1,5,0],"pivot":[-1.86198,14.43345,-2.63182],"rotation":[-15.12353,7.24305,8.04845],"inflate":0.02,"uv":{"north":{"uv":[89,43],"uv_size":[1,5]},"east":{"uv":[86,34],"uv_size":[0,5]},"west":{"uv":[86,34],"uv_size":[0,5]},"up":{"uv":[87,34],"uv_size":[-1,0]},"down":{"uv":[87,34],"uv_size":[-1,0]}}},{"origin":[-1.39539,13.0061,-2.61893],"size":[2,1,0],"pivot":[-1.86198,14.43345,-2.63182],"rotation":[-2.70076,16.51868,63.61911],"inflate":0.01,"uv":{"north":{"uv":[95,42],"uv_size":[2,1]},"east":{"uv":[86,34],"uv_size":[0,1]},"west":{"uv":[86,34],"uv_size":[0,1]},"up":{"uv":[88,34],"uv_size":[-2,0]},"down":{"uv":[88,34],"uv_size":[-2,0]}}},{"origin":[-3.60987,12.86314,-2.61893],"size":[2,1,0],"pivot":[-1.86198,14.43345,-2.63182],"rotation":[-8.93375,14.20529,40.39582],"inflate":0.01,"uv":{"north":{"uv":[95,43],"uv_size":[2,1]},"east":{"uv":[86,34],"uv_size":[0,1]},"west":{"uv":[86,34],"uv_size":[0,1]},"up":{"uv":[88,34],"uv_size":[-2,0]},"down":{"uv":[88,34],"uv_size":[-2,0]}}},{"origin":[-4.47966,13.86857,-2.68069],"size":[1,1,0],"pivot":[-3.47007,14.76965,-2.77757],"rotation":[26.85326,47.25182,87.97279],"uv":{"north":{"uv":[95,43],"uv_size":[2,1]},"east":{"uv":[86,34],"uv_size":[0,1]},"west":{"uv":[86,34],"uv_size":[0,1]},"up":{"uv":[88,34],"uv_size":[-2,0]},"down":{"uv":[88,34],"uv_size":[-2,0]}}},{"origin":[-3.76278,13.50607,-2.61892],"size":[3.5,2,0],"pivot":[-1.86198,14.43345,-2.63182],"rotation":[-6.2951,15.53402,50.65174],"uv":{"north":{"uv":[88,41],"uv_size":[4,2]},"east":{"uv":[86,34],"uv_size":[0,2]},"west":{"uv":[86,34],"uv_size":[0,2]},"up":{"uv":[90,34],"uv_size":[-4,0]},"down":{"uv":[90,34],"uv_size":[-4,0]}}},{"origin":[-3.76279,15.50606,-2.61893],"size":[1.5,1,0],"pivot":[-1.86198,14.43345,-2.63182],"rotation":[-6.2951,15.53402,50.65174],"uv":{"north":{"uv":[96,34],"uv_size":[2,1]},"east":{"uv":[86,34],"uv_size":[0,1]},"west":{"uv":[86,34],"uv_size":[0,1]},"up":{"uv":[88,34],"uv_size":[-2,0]},"down":{"uv":[88,34],"uv_size":[-2,0]}}}]},{"name":"wings","pivot":[0,24,-0.5],"parent":"Body"},{"name":"wingR","pivot":[1.25,24.1,3],"parent":"wings","rotation":[0,162.5,0]},{"name":"section1R","pivot":[-7.5631,21.7,-0.9639],"parent":"wingR"},{"name":"watercolor_panel","pivot":[-7.5631,21.7,-0.9639],"parent":"section1R","rotation":[0,-12.5,30],"cubes":[{"origin":[-10.3131,21.55,-0.5639],"size":[3.6,1.8,0.25],"uv":{"north":{"uv":[587,130],"uv_size":[14,7]},"east":{"uv":[587,153],"uv_size":[1,7]},"south":{"uv":[587,138],"uv_size":[14,7]},"west":{"uv":[591,153],"uv_size":[1,7]},"up":{"uv":[617,142],"uv_size":[-14,-1]},"down":{"uv":[617,143],"uv_size":[-14,1]}}},{"origin":[-10.5131,21.75,-0.5639],"size":[4,1.4,0.25],"uv":{"north":{"uv":[587,146],"uv_size":[16,6]},"east":{"uv":[595,153],"uv_size":[1,6]},"south":{"uv":[603,130],"uv_size":[16,6]},"west":{"uv":[599,153],"uv_size":[1,6]},"up":{"uv":[619,138],"uv_size":[-16,-1]},"down":{"uv":[619,139],"uv_size":[-16,1]}}},{"origin":[-7.2131,22.65,-0.6639],"size":[0.4,0.4,0.35],"uv":{"north":{"uv":[578,130],"uv_size":[2,2]},"east":{"uv":[578,134],"uv_size":[1,2]},"west":{"uv":[582,130],"uv_size":[1,2]},"up":{"uv":[584,135],"uv_size":[-2,-1]},"down":{"uv":[580,138],"uv_size":[-2,1]}}},{"origin":[-7.2131,21.85,-0.6639],"size":[0.4,0.4,0.35],"uv":{"north":{"uv":[578,130],"uv_size":[2,2]},"east":{"uv":[578,134],"uv_size":[1,2]},"west":{"uv":[582,130],"uv_size":[1,2]},"up":{"uv":[584,135],"uv_size":[-2,-1]},"down":{"uv":[580,138],"uv_size":[-2,1]}}},{"origin":[-7.8131,21.85,-0.6639],"size":[0.4,0.4,0.35],"uv":{"north":{"uv":[578,130],"uv_size":[2,2]},"east":{"uv":[578,134],"uv_size":[1,2]},"west":{"uv":[582,130],"uv_size":[1,2]},"up":{"uv":[584,135],"uv_size":[-2,-1]},"down":{"uv":[580,138],"uv_size":[-2,1]}}},{"origin":[-7.8131,22.65,-0.6639],"size":[0.4,0.4,0.35],"uv":{"north":{"uv":[578,130],"uv_size":[2,2]},"east":{"uv":[578,134],"uv_size":[1,2]},"west":{"uv":[582,130],"uv_size":[1,2]},"up":{"uv":[584,135],"uv_size":[-2,-1]},"down":{"uv":[580,138],"uv_size":[-2,1]}}},{"origin":[-8.4131,22.65,-0.6639],"size":[0.4,0.4,0.35],"uv":{"north":{"uv":[578,130],"uv_size":[2,2]},"east":{"uv":[578,134],"uv_size":[1,2]},"west":{"uv":[582,130],"uv_size":[1,2]},"up":{"uv":[584,135],"uv_size":[-2,-1]},"down":{"uv":[580,138],"uv_size":[-2,1]}}},{"origin":[-8.4131,21.85,-0.6639],"size":[0.4,0.4,0.35],"uv":{"north":{"uv":[578,130],"uv_size":[2,2]},"east":{"uv":[578,134],"uv_size":[1,2]},"west":{"uv":[582,130],"uv_size":[1,2]},"up":{"uv":[584,135],"uv_size":[-2,-1]},"down":{"uv":[580,138],"uv_size":[-2,1]}}},{"origin":[-9.0131,21.85,-0.6639],"size":[0.4,0.4,0.35],"uv":{"north":{"uv":[578,130],"uv_size":[2,2]},"east":{"uv":[578,134],"uv_size":[1,2]},"west":{"uv":[582,130],"uv_size":[1,2]},"up":{"uv":[584,135],"uv_size":[-2,-1]},"down":{"uv":[580,138],"uv_size":[-2,1]}}},{"origin":[-9.0131,22.65,-0.6639],"size":[0.4,0.4,0.35],"uv":{"north":{"uv":[578,130],"uv_size":[2,2]},"east":{"uv":[578,134],"uv_size":[1,2]},"west":{"uv":[582,130],"uv_size":[1,2]},"up":{"uv":[584,135],"uv_size":[-2,-1]},"down":{"uv":[580,138],"uv_size":[-2,1]}}},{"origin":[-9.6131,22.65,-0.6639],"size":[0.4,0.4,0.35],"uv":{"north":{"uv":[578,130],"uv_size":[2,2]},"east":{"uv":[578,134],"uv_size":[1,2]},"west":{"uv":[582,130],"uv_size":[1,2]},"up":{"uv":[584,135],"uv_size":[-2,-1]},"down":{"uv":[580,138],"uv_size":[-2,1]}}},{"origin":[-9.6131,21.85,-0.6639],"size":[0.4,0.4,0.35],"uv":{"north":{"uv":[578,130],"uv_size":[2,2]},"east":{"uv":[578,134],"uv_size":[1,2]},"west":{"uv":[582,130],"uv_size":[1,2]},"up":{"uv":[584,135],"uv_size":[-2,-1]},"down":{"uv":[580,138],"uv_size":[-2,1]}}},{"origin":[-10.2131,21.85,-0.6639],"size":[0.4,0.4,0.35],"uv":{"north":{"uv":[578,130],"uv_size":[2,2]},"east":{"uv":[578,134],"uv_size":[1,2]},"west":{"uv":[582,130],"uv_size":[1,2]},"up":{"uv":[584,135],"uv_size":[-2,-1]},"down":{"uv":[580,138],"uv_size":[-2,1]}}},{"origin":[-10.2131,22.65,-0.6639],"size":[0.4,0.4,0.35],"uv":{"north":{"uv":[578,130],"uv_size":[2,2]},"east":{"uv":[578,134],"uv_size":[1,2]},"west":{"uv":[582,130],"uv_size":[1,2]},"up":{"uv":[584,135],"uv_size":[-2,-1]},"down":{"uv":[580,138],"uv_size":[-2,1]}}}]},{"name":"mouse","pivot":[-5.2631,24.85,0.7361],"parent":"section1R","rotation":[31.54052,25.19375,22.48236],"cubes":[{"origin":[-5.2631,24.45,0.5361],"size":[1.5,1,0.5],"uv":{"north":{"uv":[427,217],"uv_size":[6,4]},"east":{"uv":[434,220],"uv_size":[2,4]},"south":{"uv":[427,221],"uv_size":[6,4]},"west":{"uv":[434,224],"uv_size":[2,4]},"up":{"uv":[433,227],"uv_size":[-6,-2]},"down":{"uv":[440,217],"uv_size":[-6,2]}}},{"origin":[-4.3131,24.85,0.9861],"size":[0.35,0.2,0.15],"uv":{"east":{"uv":[427,227],"uv_size":[1,1]},"south":{"uv":[437,220],"uv_size":[1,1]},"west":{"uv":[430,227],"uv_size":[1,1]},"up":{"uv":[438,223],"uv_size":[-1,-1]},"down":{"uv":[438,224],"uv_size":[-1,1]}}}]},{"name":"drawing_pad","pivot":[0.6869,24.3,-3.3639],"parent":"section1R","cubes":[{"origin":[-6.2843,21.62317,-0.62777],"size":[4.25,3.25,0.2],"pivot":[-4.9131,23.6,-0.4639],"rotation":[46.87262,31.32904,-10.62774],"uv":{"north":{"uv":[393,183],"uv_size":[17,13]},"east":{"uv":[411,183],"uv_size":[1,13]},"south":{"uv":[393,197],"uv_size":[17,13]},"west":{"uv":[411,197],"uv_size":[1,13]},"up":{"uv":[410,212],"uv_size":[-17,-1]},"down":{"uv":[410,213],"uv_size":[-17,1]}}}]},{"name":"pen","pivot":[-7.5131,23.35,1.8861],"parent":"section1R","rotation":[35.23649,16.01235,14.53467],"cubes":[{"origin":[-7.1631,23.25,1.7361],"size":[2.25,0.25,0.25],"uv":{"north":{"uv":[525,130],"uv_size":[9,1]},"east":{"uv":[535,130],"uv_size":[1,1]},"south":{"uv":[525,132],"uv_size":[9,1]},"west":{"uv":[535,132],"uv_size":[1,1]},"up":{"uv":[534,135],"uv_size":[-9,-1]},"down":{"uv":[534,136],"uv_size":[-9,1]}}},{"origin":[-7.2631,23.3,1.7861],"size":[0.1,0.15,0.15],"uv":{"north":{"uv":[535,134],"uv_size":[1,1]},"south":{"uv":[535,136],"uv_size":[1,1]},"west":{"uv":[525,138],"uv_size":[1,1]},"up":{"uv":[538,131],"uv_size":[-1,-1]},"down":{"uv":[530,138],"uv_size":[-1,1]}}},{"origin":[-4.9131,23.275,1.7611],"size":[0.1,0.2,0.2],"uv":{"north":{"uv":[537,132],"uv_size":[1,1]},"east":{"uv":[533,138],"uv_size":[1,1]},"south":{"uv":[537,134],"uv_size":[1,1]},"up":{"uv":[536,139],"uv_size":[-1,-1]},"down":{"uv":[538,136],"uv_size":[-1,1]}}},{"origin":[-4.8131,23.3,1.7861],"size":[0.1,0.15,0.15],"uv":{"north":{"uv":[537,138],"uv_size":[1,1]},"east":{"uv":[525,140],"uv_size":[1,1]},"south":{"uv":[539,130],"uv_size":[1,1]},"up":{"uv":[530,141],"uv_size":[-1,-1]},"down":{"uv":[540,132],"uv_size":[-1,1]}}},{"origin":[-4.7131,23.325,1.8111],"size":[0.1,0.1,0.1],"uv":{"north":{"uv":[533,140],"uv_size":[1,1]},"east":{"uv":[539,134],"uv_size":[1,1]},"south":{"uv":[535,140],"uv_size":[1,1]},"up":{"uv":[540,137],"uv_size":[-1,-1]},"down":{"uv":[538,140],"uv_size":[-1,1]}}}]},{"name":"paint_tube","pivot":[-5.1131,21.9,1.7361],"parent":"section1R","rotation":[12,0,-9]},{"name":"tube_1","pivot":[-3.0631,23.2,1.5361],"parent":"paint_tube","rotation":[0,0,-47.5],"cubes":[{"origin":[-3.1131,22.05,1.3361],"size":[0.3,1.05,0.1],"pivot":[-3.0131,23.1,1.3361],"rotation":[-5,0,0],"uv":{"north":{"uv":[513,138],"uv_size":[1,4]},"east":{"uv":[517,130],"uv_size":[1,4]},"west":{"uv":[515,138],"uv_size":[1,4]},"down":{"uv":[520,134],"uv_size":[-1,1]}}},{"origin":[-3.1131,22.05,1.3361],"size":[0.3,1.05,0.1],"pivot":[-3.0131,23.1,1.4361],"rotation":[5,0,0],"uv":{"east":{"uv":[517,134],"uv_size":[1,4]},"south":{"uv":[517,138],"uv_size":[1,4]},"west":{"uv":[513,142],"uv_size":[1,4]},"down":{"uv":[518,142],"uv_size":[-1,1]}}},{"origin":[-3.0631,21.95,1.2861],"size":[0.2,0.1,0.2],"uv":{"north":{"uv":[519,138],"uv_size":[1,1]},"east":{"uv":[519,142],"uv_size":[1,1]},"south":{"uv":[513,146],"uv_size":[1,1]},"west":{"uv":[521,130],"uv_size":[1,1]},"up":{"uv":[516,147],"uv_size":[-1,-1]},"down":{"uv":[522,134],"uv_size":[-1,1]}}},{"origin":[-3.1131,22.04,1.3361],"size":[0.3,1.1,0.1],"uv":{"north":{"uv":[513,130],"uv_size":[1,4]},"east":{"uv":[513,134],"uv_size":[1,4]},"south":{"uv":[515,130],"uv_size":[1,4]},"west":{"uv":[515,134],"uv_size":[1,4]},"up":{"uv":[520,131],"uv_size":[-1,-1]},"down":{"uv":[516,142],"uv_size":[-1,1]}}}]},{"name":"tube_2","pivot":[-3.3631,23,1.7361],"parent":"paint_tube","rotation":[0,0,-30],"cubes":[{"origin":[-3.4131,21.85,1.5361],"size":[0.3,1.05,0.1],"pivot":[-3.3131,22.9,1.5361],"rotation":[-5,0,0],"uv":{"north":{"uv":[513,138],"uv_size":[1,4]},"east":{"uv":[517,130],"uv_size":[1,4]},"west":{"uv":[515,138],"uv_size":[1,4]},"down":{"uv":[519,134],"uv_size":[1,1]}}},{"origin":[-3.4131,21.85,1.5361],"size":[0.3,1.05,0.1],"pivot":[-3.3131,22.9,1.6361],"rotation":[5,0,0],"uv":{"east":{"uv":[517,134],"uv_size":[1,4]},"south":{"uv":[517,138],"uv_size":[1,4]},"west":{"uv":[513,142],"uv_size":[1,4]},"down":{"uv":[518,142],"uv_size":[-1,1]}}},{"origin":[-3.3631,21.75,1.4861],"size":[0.2,0.1,0.2],"uv":{"north":{"uv":[519,138],"uv_size":[1,1]},"east":{"uv":[519,142],"uv_size":[1,1]},"south":{"uv":[513,146],"uv_size":[1,1]},"west":{"uv":[521,130],"uv_size":[1,1]},"up":{"uv":[515,146],"uv_size":[1,1]},"down":{"uv":[521,134],"uv_size":[1,1]}}},{"origin":[-3.4131,21.84,1.5361],"size":[0.3,1.1,0.1],"uv":{"north":{"uv":[513,130],"uv_size":[1,4]},"east":{"uv":[513,134],"uv_size":[1,4]},"south":{"uv":[515,130],"uv_size":[1,4]},"west":{"uv":[515,134],"uv_size":[1,4]},"up":{"uv":[519,130],"uv_size":[1,1]},"down":{"uv":[515,142],"uv_size":[1,1]}}}]},{"name":"tube_3","pivot":[-3.6631,22.6,1.5361],"parent":"paint_tube","rotation":[0,0,-27.5],"cubes":[{"origin":[-3.7131,21.45,1.3361],"size":[0.3,1.05,0.1],"pivot":[-3.6131,22.5,1.3361],"rotation":[-5,0,0],"uv":{"north":{"uv":[513,138],"uv_size":[1,4]},"east":{"uv":[517,130],"uv_size":[1,4]},"west":{"uv":[515,138],"uv_size":[1,4]},"down":{"uv":[520,134],"uv_size":[-1,1]}}},{"origin":[-3.7131,21.45,1.3361],"size":[0.3,1.05,0.1],"pivot":[-3.6131,22.5,1.4361],"rotation":[5,0,0],"uv":{"east":{"uv":[517,134],"uv_size":[1,4]},"south":{"uv":[517,138],"uv_size":[1,4]},"west":{"uv":[513,142],"uv_size":[1,4]},"down":{"uv":[518,142],"uv_size":[-1,1]}}},{"origin":[-3.6631,21.35,1.2861],"size":[0.2,0.1,0.2],"uv":{"north":{"uv":[519,138],"uv_size":[1,1]},"east":{"uv":[519,142],"uv_size":[1,1]},"south":{"uv":[513,146],"uv_size":[1,1]},"west":{"uv":[521,130],"uv_size":[1,1]},"up":{"uv":[516,147],"uv_size":[-1,-1]},"down":{"uv":[522,134],"uv_size":[-1,1]}}},{"origin":[-3.7131,21.44,1.3361],"size":[0.3,1.1,0.1],"uv":{"north":{"uv":[513,130],"uv_size":[1,4]},"east":{"uv":[513,134],"uv_size":[1,4]},"south":{"uv":[515,130],"uv_size":[1,4]},"west":{"uv":[515,134],"uv_size":[1,4]},"up":{"uv":[520,131],"uv_size":[-1,-1]},"down":{"uv":[516,142],"uv_size":[-1,1]}}}]},{"name":"tube_4","pivot":[-4.0631,22.4,1.5361],"parent":"paint_tube","rotation":[0,0,-25],"cubes":[{"origin":[-4.1131,21.25,1.3361],"size":[0.3,1.05,0.1],"pivot":[-4.0131,22.3,1.3361],"rotation":[-5,0,0],"uv":{"north":{"uv":[513,138],"uv_size":[1,4]},"east":{"uv":[517,130],"uv_size":[1,4]},"west":{"uv":[515,138],"uv_size":[1,4]},"down":{"uv":[520,134],"uv_size":[-1,1]}}},{"origin":[-4.1131,21.25,1.3361],"size":[0.3,1.05,0.1],"pivot":[-4.0131,22.3,1.4361],"rotation":[5,0,0],"uv":{"east":{"uv":[517,134],"uv_size":[1,4]},"south":{"uv":[517,138],"uv_size":[1,4]},"west":{"uv":[513,142],"uv_size":[1,4]},"down":{"uv":[518,142],"uv_size":[-1,1]}}},{"origin":[-4.0631,21.15,1.2861],"size":[0.2,0.1,0.2],"uv":{"north":{"uv":[519,138],"uv_size":[1,1]},"east":{"uv":[519,142],"uv_size":[1,1]},"south":{"uv":[513,146],"uv_size":[1,1]},"west":{"uv":[521,130],"uv_size":[1,1]},"up":{"uv":[516,147],"uv_size":[-1,-1]},"down":{"uv":[522,134],"uv_size":[-1,1]}}},{"origin":[-4.1131,21.24,1.3361],"size":[0.3,1.1,0.1],"uv":{"north":{"uv":[513,130],"uv_size":[1,4]},"east":{"uv":[513,134],"uv_size":[1,4]},"south":{"uv":[515,130],"uv_size":[1,4]},"west":{"uv":[515,134],"uv_size":[1,4]},"up":{"uv":[520,131],"uv_size":[-1,-1]},"down":{"uv":[516,142],"uv_size":[-1,1]}}}]},{"name":"tube_5","pivot":[-4.3631,22.2,1.5361],"parent":"paint_tube","rotation":[0,0,-5],"cubes":[{"origin":[-4.4131,21.05,1.3361],"size":[0.3,1.05,0.1],"pivot":[-4.3131,22.1,1.3361],"rotation":[-5,0,0],"uv":{"north":{"uv":[513,138],"uv_size":[1,4]},"east":{"uv":[517,130],"uv_size":[1,4]},"west":{"uv":[515,138],"uv_size":[1,4]},"down":{"uv":[520,134],"uv_size":[-1,1]}}},{"origin":[-4.4131,21.05,1.3361],"size":[0.3,1.05,0.1],"pivot":[-4.3131,22.1,1.4361],"rotation":[5,0,0],"uv":{"east":{"uv":[517,134],"uv_size":[1,4]},"south":{"uv":[517,138],"uv_size":[1,4]},"west":{"uv":[513,142],"uv_size":[1,4]},"down":{"uv":[518,142],"uv_size":[-1,1]}}},{"origin":[-4.3631,20.95,1.2861],"size":[0.2,0.1,0.2],"uv":{"north":{"uv":[519,138],"uv_size":[1,1]},"east":{"uv":[519,142],"uv_size":[1,1]},"south":{"uv":[513,146],"uv_size":[1,1]},"west":{"uv":[521,130],"uv_size":[1,1]},"up":{"uv":[516,147],"uv_size":[-1,-1]},"down":{"uv":[522,134],"uv_size":[-1,1]}}},{"origin":[-4.4131,21.04,1.3361],"size":[0.3,1.1,0.1],"uv":{"north":{"uv":[513,130],"uv_size":[1,4]},"east":{"uv":[513,134],"uv_size":[1,4]},"south":{"uv":[515,130],"uv_size":[1,4]},"west":{"uv":[515,134],"uv_size":[1,4]},"up":{"uv":[520,131],"uv_size":[-1,-1]},"down":{"uv":[516,142],"uv_size":[-1,1]}}}]},{"name":"tube_6","pivot":[-4.7631,22,1.7361],"parent":"paint_tube","cubes":[{"origin":[-4.8131,20.85,1.5361],"size":[0.3,1.05,0.1],"pivot":[-4.7131,21.9,1.5361],"rotation":[-5,0,0],"uv":{"north":{"uv":[513,138],"uv_size":[1,4]},"east":{"uv":[517,130],"uv_size":[1,4]},"west":{"uv":[515,138],"uv_size":[1,4]},"down":{"uv":[520,134],"uv_size":[-1,1]}}},{"origin":[-4.8131,20.85,1.5361],"size":[0.3,1.05,0.1],"pivot":[-4.7131,21.9,1.6361],"rotation":[5,0,0],"uv":{"east":{"uv":[517,134],"uv_size":[1,4]},"south":{"uv":[517,138],"uv_size":[1,4]},"west":{"uv":[513,142],"uv_size":[1,4]},"down":{"uv":[518,142],"uv_size":[-1,1]}}},{"origin":[-4.7631,20.75,1.4861],"size":[0.2,0.1,0.2],"uv":{"north":{"uv":[519,138],"uv_size":[1,1]},"east":{"uv":[519,142],"uv_size":[1,1]},"south":{"uv":[513,146],"uv_size":[1,1]},"west":{"uv":[521,130],"uv_size":[1,1]},"up":{"uv":[516,147],"uv_size":[-1,-1]},"down":{"uv":[522,134],"uv_size":[-1,1]}}},{"origin":[-4.8131,20.84,1.5361],"size":[0.3,1.1,0.1],"uv":{"north":{"uv":[513,130],"uv_size":[1,4]},"east":{"uv":[513,134],"uv_size":[1,4]},"south":{"uv":[515,130],"uv_size":[1,4]},"west":{"uv":[515,134],"uv_size":[1,4]},"up":{"uv":[520,131],"uv_size":[-1,-1]},"down":{"uv":[516,142],"uv_size":[-1,1]}}}]},{"name":"tube_7","pivot":[-5.2631,22,1.5361],"parent":"paint_tube","rotation":[0,0,2.5],"cubes":[{"origin":[-5.3131,20.85,1.3361],"size":[0.3,1.05,0.1],"pivot":[-5.2131,21.9,1.3361],"rotation":[-5,0,0],"uv":{"north":{"uv":[513,138],"uv_size":[1,4]},"east":{"uv":[517,130],"uv_size":[1,4]},"west":{"uv":[515,138],"uv_size":[1,4]},"down":{"uv":[520,134],"uv_size":[-1,1]}}},{"origin":[-5.3131,20.85,1.3361],"size":[0.3,1.05,0.1],"pivot":[-5.2131,21.9,1.4361],"rotation":[5,0,0],"uv":{"east":{"uv":[517,134],"uv_size":[1,4]},"south":{"uv":[517,138],"uv_size":[1,4]},"west":{"uv":[513,142],"uv_size":[1,4]},"down":{"uv":[518,142],"uv_size":[-1,1]}}},{"origin":[-5.2631,20.75,1.2861],"size":[0.2,0.1,0.2],"uv":{"north":{"uv":[519,138],"uv_size":[1,1]},"east":{"uv":[519,142],"uv_size":[1,1]},"south":{"uv":[513,146],"uv_size":[1,1]},"west":{"uv":[521,130],"uv_size":[1,1]},"up":{"uv":[516,147],"uv_size":[-1,-1]},"down":{"uv":[522,134],"uv_size":[-1,1]}}},{"origin":[-5.3131,20.84,1.3361],"size":[0.3,1.1,0.1],"uv":{"north":{"uv":[513,130],"uv_size":[1,4]},"east":{"uv":[513,134],"uv_size":[1,4]},"south":{"uv":[515,130],"uv_size":[1,4]},"west":{"uv":[515,134],"uv_size":[1,4]},"up":{"uv":[520,131],"uv_size":[-1,-1]},"down":{"uv":[516,142],"uv_size":[-1,1]}}}]},{"name":"tube_8","pivot":[-5.6631,22,1.5361],"parent":"paint_tube","rotation":[0,0,7.5],"cubes":[{"origin":[-5.7131,20.84,1.3361],"size":[0.3,1.1,0.1],"uv":{"north":{"uv":[513,130],"uv_size":[1,4]},"east":{"uv":[513,134],"uv_size":[1,4]},"south":{"uv":[515,130],"uv_size":[1,4]},"west":{"uv":[515,134],"uv_size":[1,4]},"up":{"uv":[520,131],"uv_size":[-1,-1]},"down":{"uv":[516,142],"uv_size":[-1,1]}}},{"origin":[-5.6631,20.75,1.2861],"size":[0.2,0.1,0.2],"uv":{"north":{"uv":[519,138],"uv_size":[1,1]},"east":{"uv":[519,142],"uv_size":[1,1]},"south":{"uv":[513,146],"uv_size":[1,1]},"west":{"uv":[521,130],"uv_size":[1,1]},"up":{"uv":[516,147],"uv_size":[-1,-1]},"down":{"uv":[522,134],"uv_size":[-1,1]}}},{"origin":[-5.7131,20.85,1.3361],"size":[0.3,1.05,0.1],"pivot":[-5.6131,21.9,1.4361],"rotation":[5,0,0],"uv":{"east":{"uv":[517,134],"uv_size":[1,4]},"south":{"uv":[517,138],"uv_size":[1,4]},"west":{"uv":[513,142],"uv_size":[1,4]},"down":{"uv":[518,142],"uv_size":[-1,1]}}},{"origin":[-5.7131,20.85,1.3361],"size":[0.3,1.05,0.1],"pivot":[-5.6131,21.9,1.3361],"rotation":[-5,0,0],"uv":{"north":{"uv":[513,138],"uv_size":[1,4]},"east":{"uv":[517,130],"uv_size":[1,4]},"west":{"uv":[515,138],"uv_size":[1,4]},"down":{"uv":[520,134],"uv_size":[-1,1]}}}]},{"name":"tube_9","pivot":[-6.1631,22.2,1.5361],"parent":"paint_tube","rotation":[0,0,10],"cubes":[{"origin":[-6.2131,21.05,1.3361],"size":[0.3,1.05,0.1],"pivot":[-6.1131,22.1,1.3361],"rotation":[-5,0,0],"uv":{"north":{"uv":[513,138],"uv_size":[1,4]},"east":{"uv":[517,130],"uv_size":[1,4]},"west":{"uv":[515,138],"uv_size":[1,4]},"down":{"uv":[520,134],"uv_size":[-1,1]}}},{"origin":[-6.2131,21.05,1.3361],"size":[0.3,1.05,0.1],"pivot":[-6.1131,22.1,1.4361],"rotation":[5,0,0],"uv":{"east":{"uv":[517,134],"uv_size":[1,4]},"south":{"uv":[517,138],"uv_size":[1,4]},"west":{"uv":[513,142],"uv_size":[1,4]},"down":{"uv":[518,142],"uv_size":[-1,1]}}},{"origin":[-6.1631,20.95,1.2861],"size":[0.2,0.1,0.2],"uv":{"north":{"uv":[519,138],"uv_size":[1,1]},"east":{"uv":[519,142],"uv_size":[1,1]},"south":{"uv":[513,146],"uv_size":[1,1]},"west":{"uv":[521,130],"uv_size":[1,1]},"up":{"uv":[516,147],"uv_size":[-1,-1]},"down":{"uv":[522,134],"uv_size":[-1,1]}}},{"origin":[-6.2131,21.04,1.3361],"size":[0.3,1.1,0.1],"uv":{"north":{"uv":[513,130],"uv_size":[1,4]},"east":{"uv":[513,134],"uv_size":[1,4]},"south":{"uv":[515,130],"uv_size":[1,4]},"west":{"uv":[515,134],"uv_size":[1,4]},"up":{"uv":[520,131],"uv_size":[-1,-1]},"down":{"uv":[516,142],"uv_size":[-1,1]}}}]},{"name":"tube_10","pivot":[-6.5631,22.2,1.5361],"parent":"paint_tube","rotation":[0,0,22.5],"cubes":[{"origin":[-6.6131,21.05,1.3361],"size":[0.3,1.05,0.1],"pivot":[-6.5131,22.1,1.3361],"rotation":[-5,0,0],"uv":{"north":{"uv":[513,138],"uv_size":[1,4]},"east":{"uv":[517,130],"uv_size":[1,4]},"west":{"uv":[515,138],"uv_size":[1,4]},"down":{"uv":[520,134],"uv_size":[-1,1]}}},{"origin":[-6.6131,21.05,1.3361],"size":[0.3,1.05,0.1],"pivot":[-6.5131,22.1,1.4361],"rotation":[5,0,0],"uv":{"east":{"uv":[517,134],"uv_size":[1,4]},"south":{"uv":[517,138],"uv_size":[1,4]},"west":{"uv":[513,142],"uv_size":[1,4]},"down":{"uv":[518,142],"uv_size":[-1,1]}}},{"origin":[-6.5631,20.95,1.2861],"size":[0.2,0.1,0.2],"uv":{"north":{"uv":[519,138],"uv_size":[1,1]},"east":{"uv":[519,142],"uv_size":[1,1]},"south":{"uv":[513,146],"uv_size":[1,1]},"west":{"uv":[521,130],"uv_size":[1,1]},"up":{"uv":[516,147],"uv_size":[-1,-1]},"down":{"uv":[522,134],"uv_size":[-1,1]}}},{"origin":[-6.6131,21.04,1.3361],"size":[0.3,1.1,0.1],"uv":{"north":{"uv":[513,130],"uv_size":[1,4]},"east":{"uv":[513,134],"uv_size":[1,4]},"south":{"uv":[515,130],"uv_size":[1,4]},"west":{"uv":[515,134],"uv_size":[1,4]},"up":{"uv":[520,131],"uv_size":[-1,-1]},"down":{"uv":[516,142],"uv_size":[-1,1]}}}]},{"name":"tube_11","pivot":[-7.0631,22.3,1.5361],"parent":"paint_tube","rotation":[0,0,30],"cubes":[{"origin":[-7.1131,21.15,1.3361],"size":[0.3,1.05,0.1],"pivot":[-7.0131,22.2,1.3361],"rotation":[-5,0,0],"uv":{"north":{"uv":[513,138],"uv_size":[1,4]},"east":{"uv":[517,130],"uv_size":[1,4]},"west":{"uv":[515,138],"uv_size":[1,4]},"down":{"uv":[520,134],"uv_size":[-1,1]}}},{"origin":[-7.1131,21.15,1.3361],"size":[0.3,1.05,0.1],"pivot":[-7.0131,22.2,1.4361],"rotation":[5,0,0],"uv":{"east":{"uv":[517,134],"uv_size":[1,4]},"south":{"uv":[517,138],"uv_size":[1,4]},"west":{"uv":[513,142],"uv_size":[1,4]},"down":{"uv":[518,142],"uv_size":[-1,1]}}},{"origin":[-7.0631,21.05,1.2861],"size":[0.2,0.1,0.2],"uv":{"north":{"uv":[519,138],"uv_size":[1,1]},"east":{"uv":[519,142],"uv_size":[1,1]},"south":{"uv":[513,146],"uv_size":[1,1]},"west":{"uv":[521,130],"uv_size":[1,1]},"up":{"uv":[516,147],"uv_size":[-1,-1]},"down":{"uv":[522,134],"uv_size":[-1,1]}}},{"origin":[-7.1131,21.14,1.3361],"size":[0.3,1.1,0.1],"uv":{"north":{"uv":[513,130],"uv_size":[1,4]},"east":{"uv":[513,134],"uv_size":[1,4]},"south":{"uv":[515,130],"uv_size":[1,4]},"west":{"uv":[515,134],"uv_size":[1,4]},"up":{"uv":[520,131],"uv_size":[-1,-1]},"down":{"uv":[516,142],"uv_size":[-1,1]}}}]},{"name":"tube_12","pivot":[-7.4631,22.6,1.5361],"parent":"paint_tube","rotation":[0,0,32.5],"cubes":[{"origin":[-7.5131,21.45,1.3361],"size":[0.3,1.05,0.1],"pivot":[-7.4131,22.5,1.3361],"rotation":[-5,0,0],"uv":{"north":{"uv":[513,138],"uv_size":[1,4]},"east":{"uv":[517,130],"uv_size":[1,4]},"west":{"uv":[515,138],"uv_size":[1,4]},"down":{"uv":[520,134],"uv_size":[-1,1]}}},{"origin":[-7.5131,21.45,1.3361],"size":[0.3,1.05,0.1],"pivot":[-7.4131,22.5,1.4361],"rotation":[5,0,0],"uv":{"east":{"uv":[517,134],"uv_size":[1,4]},"south":{"uv":[517,138],"uv_size":[1,4]},"west":{"uv":[513,142],"uv_size":[1,4]},"down":{"uv":[518,142],"uv_size":[-1,1]}}},{"origin":[-7.4631,21.35,1.2861],"size":[0.2,0.1,0.2],"uv":{"north":{"uv":[519,138],"uv_size":[1,1]},"east":{"uv":[519,142],"uv_size":[1,1]},"south":{"uv":[513,146],"uv_size":[1,1]},"west":{"uv":[521,130],"uv_size":[1,1]},"up":{"uv":[516,147],"uv_size":[-1,-1]},"down":{"uv":[522,134],"uv_size":[-1,1]}}},{"origin":[-7.5131,21.44,1.3361],"size":[0.3,1.1,0.1],"uv":{"north":{"uv":[513,130],"uv_size":[1,4]},"east":{"uv":[513,134],"uv_size":[1,4]},"south":{"uv":[515,130],"uv_size":[1,4]},"west":{"uv":[515,134],"uv_size":[1,4]},"up":{"uv":[520,131],"uv_size":[-1,-1]},"down":{"uv":[516,142],"uv_size":[-1,1]}}}]},{"name":"section2R","pivot":[-13.1131,26.8,1.7361],"parent":"wingR"},{"name":"watercolor_box","pivot":[-13.1131,26.8,1.7361],"parent":"section2R","rotation":[-22.5,0,37.5],"cubes":[{"origin":[-14.6131,25.8,1.7361],"size":[3.5,0.25,1.75],"uv":{"north":{"uv":[575,142],"uv_size":[-15,1]},"east":{"uv":[567,152],"uv_size":[-7,1]},"south":{"uv":[575,144],"uv_size":[-15,1]},"west":{"uv":[567,150],"uv_size":[-7,1]},"up":{"uv":[544,153],"uv_size":[15,-7]},"down":{"uv":[560,130],"uv_size":[15,7]}}},{"origin":[-14.6131,27.05,0.7361],"size":[3.5,0.25,1.75],"pivot":[-12.1131,27.05,1.7361],"rotation":[90,0,0],"uv":{"north":{"uv":[575,138],"uv_size":[-15,1]},"east":{"uv":[567,148],"uv_size":[-7,1]},"south":{"uv":[575,140],"uv_size":[-15,1]},"west":{"uv":[567,146],"uv_size":[-7,1]},"up":{"uv":[544,137],"uv_size":[15,-7]},"down":{"uv":[544,138],"uv_size":[15,7]}}}]},{"name":"paint_can","pivot":[-7.7631,21,-0.1639],"parent":"section2R"},{"name":"can_1","pivot":[-8.0631,22.65,-0.1139],"parent":"paint_can","rotation":[20,15,0],"cubes":[{"origin":[-9.5631,23.9,0.1361],"size":[1.25,0.75,0.75],"uv":{"north":{"uv":[495,130],"uv_size":[-5,3]},"east":{"uv":[505,142],"uv_size":[-3,3]},"south":{"uv":[495,134],"uv_size":[-5,3]},"west":{"uv":[501,142],"uv_size":[-3,3]},"up":{"uv":[490,141],"uv_size":[5,-3]},"down":{"uv":[498,130],"uv_size":[5,3]}}},{"origin":[-9.3131,23.65,0.1361],"size":[0.75,1.25,0.75],"uv":{"north":{"uv":[501,134],"uv_size":[-3,5]},"east":{"uv":[505,134],"uv_size":[-3,5]},"south":{"uv":[497,142],"uv_size":[-3,5]},"west":{"uv":[493,142],"uv_size":[-3,5]},"up":{"uv":[506,133],"uv_size":[3,-3]},"down":{"uv":[506,134],"uv_size":[3,3]}}}]},{"name":"can_2","pivot":[-9.0631,22.65,0.8361],"parent":"paint_can","rotation":[5,0,0],"cubes":[{"origin":[-10.5131,23.9,1.0361],"size":[1.25,0.75,0.75],"uv":{"north":{"uv":[495,130],"uv_size":[-5,3]},"east":{"uv":[505,142],"uv_size":[-3,3]},"south":{"uv":[495,134],"uv_size":[-5,3]},"west":{"uv":[501,142],"uv_size":[-3,3]},"up":{"uv":[490,141],"uv_size":[5,-3]},"down":{"uv":[498,130],"uv_size":[5,3]}}},{"origin":[-10.2631,23.65,1.0361],"size":[0.75,1.25,0.75],"uv":{"north":{"uv":[501,134],"uv_size":[-3,5]},"east":{"uv":[505,134],"uv_size":[-3,5]},"south":{"uv":[497,142],"uv_size":[-3,5]},"west":{"uv":[493,142],"uv_size":[-3,5]},"up":{"uv":[506,133],"uv_size":[3,-3]},"down":{"uv":[506,134],"uv_size":[3,3]}}}]},{"name":"can_3","pivot":[-9.5131,23.95,0.4861],"parent":"paint_can","rotation":[13.4936,21.93857,5.123],"cubes":[{"origin":[-11.0131,25.2,0.7361],"size":[1.25,0.75,0.75],"uv":{"north":{"uv":[495,130],"uv_size":[-5,3]},"east":{"uv":[505,142],"uv_size":[-3,3]},"south":{"uv":[495,134],"uv_size":[-5,3]},"west":{"uv":[501,142],"uv_size":[-3,3]},"up":{"uv":[490,141],"uv_size":[5,-3]},"down":{"uv":[498,130],"uv_size":[5,3]}}},{"origin":[-10.7631,24.95,0.7361],"size":[0.75,1.25,0.75],"uv":{"north":{"uv":[501,134],"uv_size":[-3,5]},"east":{"uv":[505,134],"uv_size":[-3,5]},"south":{"uv":[497,142],"uv_size":[-3,5]},"west":{"uv":[493,142],"uv_size":[-3,5]},"up":{"uv":[506,133],"uv_size":[3,-3]},"down":{"uv":[506,134],"uv_size":[3,3]}}}]},{"name":"can_4","pivot":[-10.6131,23.75,0.5861],"parent":"paint_can","rotation":[7.5,-7.5,0],"cubes":[{"origin":[-12.1131,25,0.8361],"size":[1.25,0.75,0.75],"uv":{"north":{"uv":[495,130],"uv_size":[-5,3]},"east":{"uv":[505,142],"uv_size":[-3,3]},"south":{"uv":[495,134],"uv_size":[-5,3]},"west":{"uv":[501,142],"uv_size":[-3,3]},"up":{"uv":[490,141],"uv_size":[5,-3]},"down":{"uv":[498,130],"uv_size":[5,3]}}},{"origin":[-11.8631,24.75,0.8361],"size":[0.75,1.25,0.75],"uv":{"north":{"uv":[501,134],"uv_size":[-3,5]},"east":{"uv":[505,134],"uv_size":[-3,5]},"south":{"uv":[497,142],"uv_size":[-3,5]},"west":{"uv":[493,142],"uv_size":[-3,5]},"up":{"uv":[506,133],"uv_size":[3,-3]},"down":{"uv":[506,134],"uv_size":[3,3]}}}]},{"name":"can_5","pivot":[-10.8631,25.2,-0.1639],"parent":"paint_can","rotation":[2.5,0,0],"cubes":[{"origin":[-12.3631,26.45,0.0361],"size":[1.25,0.75,0.75],"uv":{"north":{"uv":[495,130],"uv_size":[-5,3]},"east":{"uv":[505,142],"uv_size":[-3,3]},"south":{"uv":[495,134],"uv_size":[-5,3]},"west":{"uv":[501,142],"uv_size":[-3,3]},"up":{"uv":[490,141],"uv_size":[5,-3]},"down":{"uv":[498,130],"uv_size":[5,3]}}},{"origin":[-12.1131,26.2,0.0361],"size":[0.75,1.25,0.75],"uv":{"north":{"uv":[501,134],"uv_size":[-3,5]},"east":{"uv":[505,134],"uv_size":[-3,5]},"south":{"uv":[497,142],"uv_size":[-3,5]},"west":{"uv":[493,142],"uv_size":[-3,5]},"up":{"uv":[506,133],"uv_size":[3,-3]},"down":{"uv":[506,134],"uv_size":[3,3]}}}]},{"name":"book","pivot":[-9.1131,27.5,1.9361],"parent":"section2R","rotation":[-34.02178,-11.66521,54.34472],"cubes":[{"origin":[-13.7131,23.7,1.5861],"size":[2.25,3.25,0.1],"pivot":[-13.7131,25.45,1.5861],"rotation":[112.65442,-37.235,-175.47806],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,148],"uv_size":[-9,1]},"down":{"uv":[305,144],"uv_size":[-9,1]}}},{"origin":[-15.49888,23.84123,2.94754],"size":[2.25,3.25,0.1],"pivot":[-15.49888,25.59123,2.94754],"rotation":[123.97496,-27.62683,163.65194],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,148],"uv_size":[-9,1]},"down":{"uv":[305,144],"uv_size":[-9,1]}}},{"origin":[-17.63078,22.90844,2.71547],"size":[2.25,3.25,0.1],"pivot":[-17.63078,24.65844,2.71547],"rotation":[119.91435,-33.30556,136.3398],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,148],"uv_size":[-9,1]},"down":{"uv":[305,144],"uv_size":[-9,1]}}},{"origin":[-18.9625,21.6268,3.92443],"size":[2.25,3.25,0.1],"pivot":[-18.9625,23.3768,3.92443],"rotation":[101.8167,-42.26071,165.39651],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,148],"uv_size":[-9,1]},"down":{"uv":[305,144],"uv_size":[-9,1]}}}]},{"name":"actual_book","pivot":[-9.15759,28.67115,1.15378],"parent":"book","rotation":[-99.04166,15.01409,11.80692],"cubes":[{"origin":[-9.28041,26.46408,1.95597],"size":[0.35,3.25,-0.35],"pivot":[-9.14013,27.66408,1.77995],"rotation":[0,-30,0],"uv":{"north":{"uv":[378,130],"uv_size":[1,13]},"east":{"uv":[380,130],"uv_size":[1,13]},"south":{"uv":[382,130],"uv_size":[1,13]},"west":{"uv":[384,130],"uv_size":[1,13]},"up":{"uv":[379,145],"uv_size":[-1,-1]},"down":{"uv":[381,144],"uv_size":[-1,1]}}}]},{"name":"book2","pivot":[-9.18144,28.41408,1.58197],"parent":"actual_book","cubes":[{"origin":[-14.14041,26.41408,1.50597],"size":[5,3.75,0.2],"pivot":[-9.14041,28.16408,1.60597],"rotation":[0,27.5,0],"uv":{"north":{"uv":[350,130],"uv_size":[20,15]},"east":{"uv":[371,130],"uv_size":[1,15]},"south":{"uv":[350,146],"uv_size":[20,15]},"west":{"uv":[373,130],"uv_size":[1,15]},"up":{"uv":[370,165],"uv_size":[-20,-1]},"down":{"uv":[370,162],"uv_size":[-20,1]}}},{"origin":[-9.24041,26.66408,1.85597],"size":[2.25,3.25,0.1],"pivot":[-9.24041,28.41408,1.85597],"rotation":[0,-145,0],"uv":{"north":{"uv":[290,130],"uv_size":[9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[300,130],"uv_size":[9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,144],"uv_size":[-9,1]},"down":{"uv":[305,148],"uv_size":[-9,1]}}},{"origin":[-11.0835,26.66408,3.14652],"size":[2.25,3.25,0.1],"pivot":[-11.0835,28.41408,3.14652],"rotation":[0,-150,0],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,145],"uv_size":[-9,-1]},"down":{"uv":[305,148],"uv_size":[-9,1]}}},{"origin":[-9.24041,26.66408,1.80597],"size":[2.25,3.25,0.1],"pivot":[-9.24041,28.41408,1.85597],"rotation":[180,-42.5,-180],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,144],"uv_size":[-9,1]},"down":{"uv":[305,148],"uv_size":[-9,1]}}},{"origin":[-10.8655,26.66408,3.41291],"size":[2.25,3.25,0.1],"pivot":[-10.8655,28.41408,3.41291],"rotation":[0,-145,0],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,144],"uv_size":[-9,1]},"down":{"uv":[305,148],"uv_size":[-9,1]}}},{"origin":[-9.21173,26.66408,1.89693],"size":[2.25,3.25,0.1],"pivot":[-9.21173,28.41408,1.89693],"rotation":[0,-112.5,0],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,144],"uv_size":[-9,1]},"down":{"uv":[305,148],"uv_size":[-9,1]}}},{"origin":[-10.07277,26.66408,3.97566],"size":[2.25,3.25,0.1],"pivot":[-10.07277,28.41408,3.97566],"rotation":[0,-122.5,0],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,144],"uv_size":[-9,1]},"down":{"uv":[305,148],"uv_size":[-9,1]}}},{"origin":[-10.86035,26.66408,4.51377],"size":[0.2,3.25,0.1],"pivot":[-10.81035,28.41408,4.51377],"rotation":[0,-122.5,0],"uv":{"north":{"uv":[317,130],"uv_size":[1,13]},"east":{"uv":[319,130],"uv_size":[1,13]},"south":{"uv":[321,130],"uv_size":[1,13]},"up":{"uv":[324,131],"uv_size":[-1,-1]},"down":{"uv":[324,134],"uv_size":[-1,1]}}},{"origin":[-10.98311,26.66408,4.66714],"size":[0.2,3.25,0.1],"pivot":[-10.93311,28.41408,4.66714],"rotation":[0,-147.5,0],"uv":{"north":{"uv":[317,130],"uv_size":[1,13]},"east":{"uv":[319,130],"uv_size":[1,13]},"south":{"uv":[321,130],"uv_size":[1,13]},"up":{"uv":[323,130],"uv_size":[1,1]},"down":{"uv":[323,134],"uv_size":[1,1]}}},{"origin":[-11.15493,26.66408,4.72661],"size":[0.2,3.25,0.1],"pivot":[-11.10493,28.41408,4.72661],"rotation":[0,155,0],"uv":{"north":{"uv":[317,130],"uv_size":[1,13]},"east":{"uv":[319,130],"uv_size":[1,13]},"south":{"uv":[321,130],"uv_size":[1,13]},"up":{"uv":[323,130],"uv_size":[1,1]},"down":{"uv":[323,134],"uv_size":[1,1]}}},{"origin":[-10.83348,26.66408,4.3216],"size":[0.2,3.25,0.1],"pivot":[-10.78348,28.41408,4.3216],"rotation":[0,-90,0],"uv":{"north":{"uv":[317,130],"uv_size":[1,13]},"east":{"uv":[319,130],"uv_size":[1,13]},"south":{"uv":[321,130],"uv_size":[1,13]},"up":{"uv":[323,130],"uv_size":[1,1]},"down":{"uv":[323,134],"uv_size":[1,1]}}},{"origin":[-10.94407,26.66408,4.17026],"size":[0.2,3.25,0.1],"pivot":[-10.89407,28.41408,4.17026],"rotation":[0,-42.5,0],"uv":{"north":{"uv":[317,130],"uv_size":[1,13]},"east":{"uv":[319,130],"uv_size":[1,13]},"south":{"uv":[321,130],"uv_size":[1,13]},"up":{"uv":[323,130],"uv_size":[1,1]},"down":{"uv":[323,134],"uv_size":[1,1]}}},{"origin":[-11.46213,26.66408,4.32793],"size":[0.2,3.25,0.1],"pivot":[-11.41213,28.41408,4.32793],"rotation":[0,50,0],"uv":{"north":{"uv":[317,130],"uv_size":[1,13]},"east":{"uv":[319,130],"uv_size":[1,13]},"south":{"uv":[321,130],"uv_size":[1,13]},"up":{"uv":[323,130],"uv_size":[1,1]},"down":{"uv":[323,134],"uv_size":[1,1]}}},{"origin":[-11.13094,26.66408,4.13648],"size":[0.2,3.25,0.1],"uv":{"north":{"uv":[317,130],"uv_size":[1,13]},"east":{"uv":[319,130],"uv_size":[1,13]},"south":{"uv":[321,130],"uv_size":[1,13]},"up":{"uv":[323,130],"uv_size":[1,1]},"down":{"uv":[323,134],"uv_size":[1,1]}}},{"origin":[-11.31952,26.66408,4.19389],"size":[0.2,3.25,0.1],"pivot":[-11.26952,28.41408,4.19389],"rotation":[0,22.5,0],"uv":{"north":{"uv":[317,130],"uv_size":[1,13]},"east":{"uv":[319,130],"uv_size":[1,13]},"south":{"uv":[321,130],"uv_size":[1,13]},"up":{"uv":[323,130],"uv_size":[1,1]},"down":{"uv":[323,134],"uv_size":[1,1]}}},{"origin":[-12.37487,26.66408,4.49274],"size":[1,3.25,0.1],"pivot":[-11.52487,28.41408,4.49274],"rotation":[0,57.5,0],"uv":{"north":{"uv":[331,130],"uv_size":[4,13]},"south":{"uv":[335,130],"uv_size":[4,13]},"west":{"uv":[339,130],"uv_size":[1,13]},"up":{"uv":[344,131],"uv_size":[-4,-1]},"down":{"uv":[344,134],"uv_size":[-4,1]}}},{"origin":[-12.9223,26.66408,5.30638],"size":[1,3.25,0.1],"pivot":[-12.0723,28.41408,5.30638],"rotation":[0,47.5,0],"uv":{"north":{"uv":[331,130],"uv_size":[4,13]},"south":{"uv":[335,130],"uv_size":[4,13]},"west":{"uv":[339,130],"uv_size":[1,13]},"up":{"uv":[340,130],"uv_size":[4,1]},"down":{"uv":[340,134],"uv_size":[4,1]}}}]},{"name":"book1","pivot":[-9.08645,28.41408,1.5837],"parent":"actual_book","rotation":[0,-7.5,0],"cubes":[{"origin":[-9.14041,26.41408,1.50597],"size":[5,3.75,0.2],"uv":{"north":{"uv":[370,130],"uv_size":[-20,15]},"east":{"uv":[371,130],"uv_size":[1,15]},"south":{"uv":[370,146],"uv_size":[-20,15]},"west":{"uv":[373,130],"uv_size":[1,15]},"up":{"uv":[350,164],"uv_size":[20,1]},"down":{"uv":[350,162],"uv_size":[20,1]}}},{"origin":[-8.94041,26.66408,1.65597],"size":[2.25,3.25,0.1],"pivot":[-8.94041,28.41408,1.65597],"rotation":[0,-7.5,0],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,144],"uv_size":[-9,1]},"down":{"uv":[305,148],"uv_size":[-9,1]}}},{"origin":[-6.714,26.66408,1.94918],"size":[2.25,3.25,0.1],"pivot":[-6.714,28.41408,1.94918],"rotation":[0,-2.5,0],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,144],"uv_size":[-9,1]},"down":{"uv":[305,148],"uv_size":[-9,1]}}},{"origin":[-8.92758,26.66408,1.70597],"size":[2.25,3.25,0.1],"pivot":[-8.92758,28.41408,1.65852],"rotation":[0,-15,0],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,144],"uv_size":[-9,1]},"down":{"uv":[305,148],"uv_size":[-9,1]}}},{"origin":[-6.83002,26.66408,2.28165],"size":[2.25,3.25,0.1],"pivot":[-6.83002,28.41408,2.81323],"rotation":[0,-5,0],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,144],"uv_size":[-9,1]},"down":{"uv":[305,148],"uv_size":[-9,1]}}},{"origin":[-8.94041,26.66408,1.75597],"size":[2.25,3.25,0.1],"pivot":[-8.94041,28.41408,1.75597],"rotation":[0,-27.5,0],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,144],"uv_size":[-9,1]},"down":{"uv":[305,148],"uv_size":[-9,1]}}},{"origin":[-6.98645,26.66408,2.7837],"size":[2.25,3.25,0.1],"pivot":[-6.98645,28.41408,2.7837],"rotation":[0,-10,0],"uv":{"north":{"uv":[299,130],"uv_size":[-9,13]},"east":{"uv":[290,144],"uv_size":[1,13]},"south":{"uv":[309,130],"uv_size":[-9,13]},"west":{"uv":[294,144],"uv_size":[1,13]},"up":{"uv":[305,144],"uv_size":[-9,1]},"down":{"uv":[305,148],"uv_size":[-9,1]}}}]},{"name":"section3R","pivot":[-18.8131,28.8,1.8361],"parent":"wingR"},{"name":"yarn","pivot":[-18.8131,28.8,1.8361],"parent":"section3R"},{"name":"folded","pivot":[-19.3631,29.7,2.1361],"parent":"yarn","rotation":[-48.23904,13.69111,-21.93791],"cubes":[{"origin":[-18.5631,29.8,1.3361],"size":[0.65,0.75,1.3],"uv":{"north":{"uv":[645,158],"uv_size":[3,3]},"east":{"uv":[645,138],"uv_size":[5,3]},"south":{"uv":[653,158],"uv_size":[3,3]},"west":{"uv":[637,150],"uv_size":[5,3]},"up":{"uv":[648,147],"uv_size":[-3,-5]},"down":{"uv":[648,150],"uv_size":[-3,5]}}},{"origin":[-19.0131,29.95,1.4361],"size":[0.45,0.5,1.1],"uv":{"north":{"uv":[657,142],"uv_size":[2,2]},"south":{"uv":[657,158],"uv_size":[2,2]},"up":{"uv":[635,166],"uv_size":[-2,-4]},"down":{"uv":[639,162],"uv_size":[-2,4]}}},{"origin":[-19.7631,29.8,1.3361],"size":[0.75,0.75,1.3],"uv":{"north":{"uv":[657,130],"uv_size":[3,3]},"east":{"uv":[625,154],"uv_size":[5,3]},"south":{"uv":[657,134],"uv_size":[3,3]},"west":{"uv":[649,130],"uv_size":[5,3]},"up":{"uv":[636,159],"uv_size":[-3,-5]},"down":{"uv":[640,154],"uv_size":[-3,5]}}},{"origin":[-18.9131,29.9,1.3861],"size":[0.25,0.6,1.2],"uv":{"north":{"uv":[657,162],"uv_size":[1,2]},"east":{"uv":[649,134],"uv_size":[5,2]},"south":{"uv":[661,130],"uv_size":[1,2]},"west":{"uv":[649,142],"uv_size":[5,2]},"up":{"uv":[646,167],"uv_size":[-1,-5]},"down":{"uv":[654,162],"uv_size":[-1,5]}}}]},{"name":"sticks","pivot":[-18.83017,27.5,1.90034],"parent":"yarn","cubes":[{"origin":[-19.23017,28,0.60034],"size":[0.15,0.15,2.5],"pivot":[-19.23017,28,1.60034],"rotation":[-2.12256,-47.50604,-0.48292],"uv":{"east":{"uv":[649,146],"uv_size":[10,1]},"south":{"uv":[661,134],"uv_size":[1,1]},"west":{"uv":[649,150],"uv_size":[10,1]},"up":{"uv":[642,164],"uv_size":[-1,-10]},"down":{"uv":[650,154],"uv_size":[-1,10]}}},{"origin":[-19.23017,28.1,0.90034],"size":[0.15,0.15,2.5],"pivot":[-19.23017,28.1,1.90034],"rotation":[-16.31277,-41.20917,-11.07733],"uv":{"east":{"uv":[653,138],"uv_size":[10,1]},"south":{"uv":[633,166],"uv_size":[1,1]},"west":{"uv":[653,154],"uv_size":[10,1]},"up":{"uv":[626,168],"uv_size":[-1,-10]},"down":{"uv":[630,158],"uv_size":[-1,10]}}}]},{"name":"ball","pivot":[-18.83017,27.5,1.90034],"parent":"yarn","cubes":[{"origin":[-19.13017,27.5,1.35034],"size":[1.05,1.8,1.05],"uv":{"north":{"uv":[625,130],"uv_size":[4,7]},"east":{"uv":[629,130],"uv_size":[4,7]},"south":{"uv":[625,138],"uv_size":[4,7]},"west":{"uv":[633,130],"uv_size":[4,7]},"up":{"uv":[637,150],"uv_size":[-4,-4]},"down":{"uv":[641,146],"uv_size":[-4,4]}}},{"origin":[-19.48017,27.9,1.35034],"size":[1.8,1.05,1.05],"uv":{"north":{"uv":[629,138],"uv_size":[7,4]},"east":{"uv":[641,146],"uv_size":[4,4]},"south":{"uv":[637,130],"uv_size":[7,4]},"west":{"uv":[645,130],"uv_size":[4,4]},"up":{"uv":[636,146],"uv_size":[-7,-4]},"down":{"uv":[644,134],"uv_size":[-7,4]}}},{"origin":[-19.13017,27.9,0.95034],"size":[1.05,1.05,1.8],"uv":{"north":{"uv":[645,134],"uv_size":[4,4]},"east":{"uv":[637,138],"uv_size":[7,4]},"south":{"uv":[633,150],"uv_size":[4,4]},"west":{"uv":[637,142],"uv_size":[7,4]},"up":{"uv":[629,153],"uv_size":[-4,-7]},"down":{"uv":[633,146],"uv_size":[-4,7]}}}]},{"name":"string","pivot":[-14.8131,26.95,3.5361],"parent":"section3R","rotation":[32.31715,9.19784,28.94125],"cubes":[{"origin":[-15.2631,26.6,3.9361],"size":[0.45,1.1,0.45],"uv":{"north":{"uv":[490,238],"uv_size":[2,4]},"east":{"uv":[490,242],"uv_size":[2,4]},"south":{"uv":[493,238],"uv_size":[2,4]},"west":{"uv":[493,242],"uv_size":[2,4]},"up":{"uv":[492,248],"uv_size":[-2,-2]},"down":{"uv":[495,246],"uv_size":[-2,2]}}},{"origin":[-15.7631,26.6,3.9361],"size":[0.45,1.1,0.45],"pivot":[-15.5131,27.45,4.2361],"rotation":[0,0,22.5],"uv":{"north":{"uv":[490,238],"uv_size":[2,4]},"east":{"uv":[490,242],"uv_size":[2,4]},"south":{"uv":[493,238],"uv_size":[2,4]},"west":{"uv":[493,242],"uv_size":[2,4]},"up":{"uv":[490,246],"uv_size":[2,2]},"down":{"uv":[493,246],"uv_size":[2,2]}}},{"origin":[-16.2631,26.6,3.7361],"size":[0.45,1.1,0.45],"pivot":[-16.0131,27.45,4.0361],"rotation":[0,0,22.5],"uv":{"north":{"uv":[490,238],"uv_size":[2,4]},"east":{"uv":[490,242],"uv_size":[2,4]},"south":{"uv":[493,238],"uv_size":[2,4]},"west":{"uv":[493,242],"uv_size":[2,4]},"up":{"uv":[490,246],"uv_size":[2,2]},"down":{"uv":[493,246],"uv_size":[2,2]}}},{"origin":[-16.2631,27,4.2361],"size":[0.45,1.1,0.45],"pivot":[-16.0131,27.85,4.5361],"rotation":[0,0,32.5],"uv":{"north":{"uv":[490,238],"uv_size":[2,4]},"east":{"uv":[490,242],"uv_size":[2,4]},"south":{"uv":[493,238],"uv_size":[2,4]},"west":{"uv":[493,242],"uv_size":[2,4]},"up":{"uv":[490,246],"uv_size":[2,2]},"down":{"uv":[493,246],"uv_size":[2,2]}}},{"origin":[-17.0631,27,3.9361],"size":[0.45,1.1,0.45],"pivot":[-16.8131,27.85,4.2361],"rotation":[0,0,32.5],"uv":{"north":{"uv":[490,238],"uv_size":[2,4]},"east":{"uv":[490,242],"uv_size":[2,4]},"south":{"uv":[493,238],"uv_size":[2,4]},"west":{"uv":[493,242],"uv_size":[2,4]},"up":{"uv":[490,246],"uv_size":[2,2]},"down":{"uv":[493,246],"uv_size":[2,2]}}},{"origin":[-17.4631,27.5,3.9361],"size":[0.45,1.1,0.45],"pivot":[-17.2131,28.35,4.2361],"rotation":[0,0,42.5],"uv":{"north":{"uv":[490,238],"uv_size":[2,4]},"east":{"uv":[490,242],"uv_size":[2,4]},"south":{"uv":[493,238],"uv_size":[2,4]},"west":{"uv":[493,242],"uv_size":[2,4]},"up":{"uv":[490,246],"uv_size":[2,2]},"down":{"uv":[493,246],"uv_size":[2,2]}}}]},{"name":"color_tablet","pivot":[-13.9631,29.45,2.6361],"parent":"section3R","rotation":[17,0,20],"cubes":[{"origin":[-16.3631,26.95,2.4861],"size":[3.45,4.5,0.25],"uv":{"north":{"uv":[393,130],"uv_size":[14,18]},"east":{"uv":[425,130],"uv_size":[1,18]},"south":{"uv":[409,130],"uv_size":[14,18]},"west":{"uv":[401,162],"uv_size":[1,18]},"up":{"uv":[435,163],"uv_size":[-14,-1]},"down":{"uv":[439,158],"uv_size":[-14,1]}}},{"origin":[-17.1631,26.95,2.4861],"size":[0.8,2.35,0.25],"uv":{"north":{"uv":[417,150],"uv_size":[3,9]},"south":{"uv":[421,150],"uv_size":[3,9]},"west":{"uv":[429,130],"uv_size":[1,9]},"up":{"uv":[436,155],"uv_size":[-3,-1]},"down":{"uv":[424,170],"uv_size":[-3,1]}}},{"origin":[-17.1631,29.95,2.4861],"size":[0.8,1.25,0.25],"uv":{"north":{"uv":[409,162],"uv_size":[3,5]},"south":{"uv":[413,162],"uv_size":[3,5]},"west":{"uv":[433,130],"uv_size":[1,5]},"up":{"uv":[428,171],"uv_size":[-3,-1]},"down":{"uv":[432,170],"uv_size":[-3,1]}}},{"origin":[-18.1631,28.7,2.4861],"size":[1,2.25,0.25],"uv":{"north":{"uv":[401,150],"uv_size":[4,9]},"east":{"uv":[397,166],"uv_size":[1,9]},"south":{"uv":[405,150],"uv_size":[4,9]},"west":{"uv":[429,142],"uv_size":[1,9]},"up":{"uv":[413,171],"uv_size":[-4,-1]},"down":{"uv":[437,146],"uv_size":[-4,1]}}},{"origin":[-18.9131,29.2,2.4861],"size":[0.75,1.25,0.25],"uv":{"north":{"uv":[425,150],"uv_size":[3,5]},"south":{"uv":[417,162],"uv_size":[3,5]},"west":{"uv":[433,138],"uv_size":[1,5]},"up":{"uv":[436,167],"uv_size":[-3,-1]},"down":{"uv":[436,170],"uv_size":[-3,1]}}},{"origin":[-17.6631,27.3,2.4861],"size":[0.5,1,0.25],"uv":{"north":{"uv":[425,166],"uv_size":[2,4]},"south":{"uv":[429,166],"uv_size":[2,4]},"west":{"uv":[413,170],"uv_size":[1,4]},"up":{"uv":[439,147],"uv_size":[-2,-1]},"down":{"uv":[415,174],"uv_size":[-2,1]}}},{"origin":[-18.4131,27.55,2.4861],"size":[0.75,0.75,0.25],"uv":{"north":{"uv":[429,154],"uv_size":[3,3]},"south":{"uv":[421,166],"uv_size":[3,3]},"west":{"uv":[437,130],"uv_size":[1,3]},"up":{"uv":[440,135],"uv_size":[-3,-1]},"down":{"uv":[440,138],"uv_size":[-3,1]}}},{"origin":[-12.1631,27.7,2.4861],"size":[0.75,2.75,0.25],"uv":{"north":{"uv":[409,150],"uv_size":[3,11]},"east":{"uv":[393,166],"uv_size":[1,11]},"south":{"uv":[413,150],"uv_size":[3,11]},"up":{"uv":[440,143],"uv_size":[-3,-1]},"down":{"uv":[412,174],"uv_size":[-3,1]}}},{"origin":[-12.9131,27.2,2.4861],"size":[0.75,3.75,0.25],"uv":{"north":{"uv":[393,150],"uv_size":[3,15]},"east":{"uv":[405,162],"uv_size":[1,15]},"south":{"uv":[397,150],"uv_size":[3,15]},"up":{"uv":[436,151],"uv_size":[-3,-1]},"down":{"uv":[420,170],"uv_size":[-3,1]}}}]},{"name":"section4R","pivot":[-14.7131,24.3,2.0361],"parent":"wingR"},{"name":"sewing","pivot":[-14.7131,24.3,2.0361],"parent":"section4R","rotation":[-1.92004,20.86701,-8.48166],"cubes":[{"origin":[-15.7131,24.3,2.5861],"size":[2,0.15,0.15],"pivot":[-14.7131,24.4,2.6361],"rotation":[0,9,-20],"uv":{"north":{"uv":[544,163],"uv_size":[8,1]},"east":{"uv":[564,167],"uv_size":[1,1]},"south":{"uv":[544,167],"uv_size":[8,1]},"west":{"uv":[552,183],"uv_size":[1,1]},"up":{"uv":[552,172],"uv_size":[-8,-1]},"down":{"uv":[560,163],"uv_size":[-8,1]}}},{"origin":[-15.9131,23.9,2.5861],"size":[2,0.15,0.15],"pivot":[-14.9131,24,2.6361],"rotation":[-4.73334,14.2499,-26.59199],"uv":{"north":{"uv":[552,167],"uv_size":[8,1]},"east":{"uv":[564,171],"uv_size":[1,1]},"south":{"uv":[552,171],"uv_size":[8,1]},"west":{"uv":[556,183],"uv_size":[1,1]},"up":{"uv":[552,176],"uv_size":[-8,-1]},"down":{"uv":[560,175],"uv_size":[-8,1]}}},{"origin":[-15.9131,24.4,2.3361],"size":[0.7,0.1,0.1],"pivot":[-14.9131,24.5,2.3361],"rotation":[-4.73334,14.2499,-26.59199],"uv":{"north":{"uv":[544,179],"uv_size":[3,1]},"east":{"uv":[564,175],"uv_size":[1,1]},"south":{"uv":[560,163],"uv_size":[3,1]},"west":{"uv":[560,183],"uv_size":[1,1]},"up":{"uv":[551,180],"uv_size":[-3,-1]},"down":{"uv":[563,167],"uv_size":[-3,1]}}},{"origin":[-15.9131,24.3,2.3361],"size":[0.7,0.1,0.1],"pivot":[-14.9131,24.4,2.3361],"rotation":[2.92682,14.71812,3.37808],"uv":{"north":{"uv":[552,179],"uv_size":[3,1]},"east":{"uv":[564,179],"uv_size":[1,1]},"south":{"uv":[560,171],"uv_size":[3,1]},"west":{"uv":[564,183],"uv_size":[1,1]},"up":{"uv":[559,180],"uv_size":[-3,-1]},"down":{"uv":[563,175],"uv_size":[-3,1]}}},{"origin":[-15.8131,24.6,2.3361],"size":[0.7,0.1,0.1],"pivot":[-14.8131,24.7,2.3361],"rotation":[1.60434,14.91591,-1.78997],"uv":{"north":{"uv":[560,179],"uv_size":[3,1]},"east":{"uv":[544,187],"uv_size":[1,1]},"south":{"uv":[544,183],"uv_size":[3,1]},"west":{"uv":[568,163],"uv_size":[1,1]},"up":{"uv":[567,164],"uv_size":[-3,-1]},"down":{"uv":[551,183],"uv_size":[-3,1]}}}]},{"name":"clippers","pivot":[-11.3131,23,2.1361],"parent":"section4R"},{"name":"clip_1","pivot":[-11.7131,22.8,2.0361],"parent":"clippers","rotation":[0,54,29],"cubes":[{"origin":[-11.7131,20.4,2.0361],"size":[0.15,2.5,0.15],"uv":{"north":{"uv":[350,168],"uv_size":[1,10]},"east":{"uv":[352,168],"uv_size":[1,10]},"south":{"uv":[354,168],"uv_size":[1,10]},"west":{"uv":[350,179],"uv_size":[1,10]},"up":{"uv":[359,173],"uv_size":[-1,-1]}}},{"origin":[-11.7631,19.9,2.0361],"size":[0.25,0.6,0.15],"pivot":[-11.7131,19.9,2.0361],"rotation":[-17.5,0,0],"uv":{"north":{"uv":[356,168],"uv_size":[1,2]},"east":{"uv":[352,179],"uv_size":[1,2]},"south":{"uv":[356,172],"uv_size":[1,2]},"west":{"uv":[354,179],"uv_size":[1,2]},"up":{"uv":[355,184],"uv_size":[-1,-1]},"down":{"uv":[359,176],"uv_size":[-1,1]}}},{"origin":[-11.7631,19.9,2.0361],"size":[0.25,0.6,0.15],"uv":{"north":{"uv":[356,176],"uv_size":[1,2]},"east":{"uv":[356,179],"uv_size":[1,2]},"south":{"uv":[358,168],"uv_size":[1,2]},"west":{"uv":[352,182],"uv_size":[1,2]},"up":{"uv":[357,184],"uv_size":[-1,-1]},"down":{"uv":[359,179],"uv_size":[-1,1]}}}]},{"name":"clip_2","pivot":[-12.3131,23,2.0361],"parent":"clippers","rotation":[-3,54,29],"cubes":[{"origin":[-12.3631,20.1,2.0361],"size":[0.25,0.6,0.15],"uv":{"north":{"uv":[356,176],"uv_size":[1,2]},"east":{"uv":[356,179],"uv_size":[1,2]},"south":{"uv":[358,168],"uv_size":[1,2]},"west":{"uv":[352,182],"uv_size":[1,2]},"up":{"uv":[357,184],"uv_size":[-1,-1]},"down":{"uv":[359,179],"uv_size":[-1,1]}}},{"origin":[-12.3631,20.1,2.0361],"size":[0.25,0.6,0.15],"pivot":[-12.3131,20.1,2.0361],"rotation":[-17.5,0,0],"uv":{"north":{"uv":[356,168],"uv_size":[1,2]},"east":{"uv":[352,179],"uv_size":[1,2]},"south":{"uv":[356,172],"uv_size":[1,2]},"west":{"uv":[354,179],"uv_size":[1,2]},"up":{"uv":[355,184],"uv_size":[-1,-1]},"down":{"uv":[359,176],"uv_size":[-1,1]}}},{"origin":[-12.3131,20.6,2.0361],"size":[0.15,2.5,0.15],"uv":{"north":{"uv":[350,168],"uv_size":[1,10]},"east":{"uv":[352,168],"uv_size":[1,10]},"south":{"uv":[354,168],"uv_size":[1,10]},"west":{"uv":[350,179],"uv_size":[1,10]},"up":{"uv":[359,173],"uv_size":[-1,-1]}}}]},{"name":"clip_3","pivot":[-12.4131,23,2.3361],"parent":"clippers","rotation":[-164.90529,-56.904,-152.32865],"cubes":[{"origin":[-12.4131,20.6,2.3361],"size":[0.15,2.5,0.15],"uv":{"north":{"uv":[350,168],"uv_size":[1,10]},"east":{"uv":[352,168],"uv_size":[1,10]},"south":{"uv":[354,168],"uv_size":[1,10]},"west":{"uv":[350,179],"uv_size":[1,10]},"up":{"uv":[359,173],"uv_size":[-1,-1]}}},{"origin":[-12.4631,20.1,2.3361],"size":[0.25,0.6,0.15],"pivot":[-12.4131,20.1,2.3361],"rotation":[-17.5,0,0],"uv":{"north":{"uv":[356,168],"uv_size":[1,2]},"east":{"uv":[352,179],"uv_size":[1,2]},"south":{"uv":[356,172],"uv_size":[1,2]},"west":{"uv":[354,179],"uv_size":[1,2]},"up":{"uv":[355,184],"uv_size":[-1,-1]},"down":{"uv":[359,176],"uv_size":[-1,1]}}},{"origin":[-12.4631,20.1,2.3361],"size":[0.25,0.6,0.15],"uv":{"north":{"uv":[356,176],"uv_size":[1,2]},"east":{"uv":[356,179],"uv_size":[1,2]},"south":{"uv":[358,168],"uv_size":[1,2]},"west":{"uv":[352,182],"uv_size":[1,2]},"up":{"uv":[357,184],"uv_size":[-1,-1]},"down":{"uv":[359,179],"uv_size":[-1,1]}}}]},{"name":"clip_4","pivot":[-12.7131,23.1,2.4361],"parent":"clippers","rotation":[-7.52403,-57.12382,60.38714],"cubes":[{"origin":[-12.7631,20.2,2.4361],"size":[0.25,0.6,0.15],"uv":{"north":{"uv":[356,176],"uv_size":[1,2]},"east":{"uv":[356,179],"uv_size":[1,2]},"south":{"uv":[358,168],"uv_size":[1,2]},"west":{"uv":[352,182],"uv_size":[1,2]},"up":{"uv":[357,184],"uv_size":[-1,-1]},"down":{"uv":[359,179],"uv_size":[-1,1]}}},{"origin":[-12.7631,20.2,2.4361],"size":[0.25,0.6,0.15],"pivot":[-12.7131,20.2,2.4361],"rotation":[-17.5,0,0],"uv":{"north":{"uv":[356,168],"uv_size":[1,2]},"east":{"uv":[352,179],"uv_size":[1,2]},"south":{"uv":[356,172],"uv_size":[1,2]},"west":{"uv":[354,179],"uv_size":[1,2]},"up":{"uv":[355,184],"uv_size":[-1,-1]},"down":{"uv":[359,176],"uv_size":[-1,1]}}},{"origin":[-12.7131,20.7,2.4361],"size":[0.15,2.5,0.15],"uv":{"north":{"uv":[350,168],"uv_size":[1,10]},"east":{"uv":[352,168],"uv_size":[1,10]},"south":{"uv":[354,168],"uv_size":[1,10]},"west":{"uv":[350,179],"uv_size":[1,10]},"up":{"uv":[359,173],"uv_size":[-1,-1]}}}]},{"name":"clip_5","pivot":[-13.2131,23.3,2.4361],"parent":"clippers","rotation":[11.93423,63.239,74.97203],"cubes":[{"origin":[-13.2131,20.9,2.4361],"size":[0.15,2.5,0.15],"uv":{"north":{"uv":[350,168],"uv_size":[1,10]},"east":{"uv":[352,168],"uv_size":[1,10]},"south":{"uv":[354,168],"uv_size":[1,10]},"west":{"uv":[350,179],"uv_size":[1,10]},"up":{"uv":[359,173],"uv_size":[-1,-1]}}},{"origin":[-13.2631,20.4,2.4361],"size":[0.25,0.6,0.15],"pivot":[-13.2131,20.4,2.4361],"rotation":[-17.5,0,0],"uv":{"north":{"uv":[356,168],"uv_size":[1,2]},"east":{"uv":[352,179],"uv_size":[1,2]},"south":{"uv":[356,172],"uv_size":[1,2]},"west":{"uv":[354,179],"uv_size":[1,2]},"up":{"uv":[355,184],"uv_size":[-1,-1]},"down":{"uv":[359,176],"uv_size":[-1,1]}}},{"origin":[-13.2631,20.4,2.4361],"size":[0.25,0.6,0.15],"uv":{"north":{"uv":[356,176],"uv_size":[1,2]},"east":{"uv":[356,179],"uv_size":[1,2]},"south":{"uv":[358,168],"uv_size":[1,2]},"west":{"uv":[352,182],"uv_size":[1,2]},"up":{"uv":[357,184],"uv_size":[-1,-1]},"down":{"uv":[359,179],"uv_size":[-1,1]}}}]},{"name":"clip_6","pivot":[-13.5131,23.6,2.4361],"parent":"clippers","rotation":[1.21651,65.34965,74.766],"cubes":[{"origin":[-13.5131,21.2,2.4361],"size":[0.15,2.5,0.15],"uv":{"north":{"uv":[350,168],"uv_size":[1,10]},"east":{"uv":[352,168],"uv_size":[1,10]},"south":{"uv":[354,168],"uv_size":[1,10]},"west":{"uv":[350,179],"uv_size":[1,10]},"up":{"uv":[359,173],"uv_size":[-1,-1]}}},{"origin":[-13.5631,20.7,2.4361],"size":[0.25,0.6,0.15],"pivot":[-13.5131,20.7,2.4361],"rotation":[-17.5,0,0],"uv":{"north":{"uv":[356,168],"uv_size":[1,2]},"east":{"uv":[352,179],"uv_size":[1,2]},"south":{"uv":[356,172],"uv_size":[1,2]},"west":{"uv":[354,179],"uv_size":[1,2]},"up":{"uv":[355,184],"uv_size":[-1,-1]},"down":{"uv":[359,176],"uv_size":[-1,1]}}},{"origin":[-13.5631,20.7,2.4361],"size":[0.25,0.6,0.15],"uv":{"north":{"uv":[356,176],"uv_size":[1,2]},"east":{"uv":[356,179],"uv_size":[1,2]},"south":{"uv":[358,168],"uv_size":[1,2]},"west":{"uv":[352,182],"uv_size":[1,2]},"up":{"uv":[357,184],"uv_size":[-1,-1]},"down":{"uv":[359,179],"uv_size":[-1,1]}}}]},{"name":"stationary","pivot":[-9.6131,21.5,2.1361],"parent":"section4R","rotation":[0,0,-24]},{"name":"marker","pivot":[-8.39199,20.55364,2.0361],"parent":"stationary","cubes":[{"origin":[-8.71115,20.25581,1.0361],"size":[0.4,0.65,0.25],"pivot":[-8.5131,20.8,2.0361],"rotation":[0,0,-1],"uv":{"north":{"uv":[544,207],"uv_size":[2,3]},"east":{"uv":[564,215],"uv_size":[1,3]},"south":{"uv":[560,191],"uv_size":[2,3]},"west":{"uv":[568,211],"uv_size":[1,3]},"up":{"uv":[574,204],"uv_size":[-2,-1]},"down":{"uv":[562,219],"uv_size":[-2,1]}}},{"origin":[-8.4031,20.10944,1.0861],"size":[0.3,0.3,0.15],"pivot":[-8.39199,20.55364,2.0361],"rotation":[0,0,45],"uv":{"north":{"uv":[580,219],"uv_size":[1,1]},"east":{"uv":[576,227],"uv_size":[1,1]},"south":{"uv":[580,223],"uv_size":[1,1]},"west":{"uv":[580,227],"uv_size":[1,1]},"up":{"uv":[545,232],"uv_size":[-1,-1]},"down":{"uv":[585,191],"uv_size":[-1,1]}}}]},{"name":"ink_pen","pivot":[-9.6131,21.5,2.1361],"parent":"stationary"},{"name":"ink_1","pivot":[-9.09199,20.55364,1.7361],"parent":"ink_pen","cubes":[{"origin":[-9.14199,19.85364,1.4861],"size":[0.15,1.9,0.15],"pivot":[-9.09199,20.55364,1.5361],"rotation":[0,0,-5],"uv":{"north":{"uv":[544,191],"uv_size":[1,8]},"east":{"uv":[548,191],"uv_size":[1,8]},"south":{"uv":[544,199],"uv_size":[1,8]},"west":{"uv":[552,191],"uv_size":[1,8]},"up":{"uv":[549,232],"uv_size":[-1,-1]},"down":{"uv":[585,195],"uv_size":[-1,1]}}}]},{"name":"air_brush","pivot":[-9.9131,21.5,1.1361],"parent":"ink_pen","rotation":[17,-0.15,21],"cubes":[{"origin":[-9.94176,22.21688,1.16741],"size":[0.15,0.1,0.15],"uv":{"north":{"uv":[552,231],"uv_size":[1,1]},"east":{"uv":[584,199],"uv_size":[1,1]},"south":{"uv":[556,231],"uv_size":[1,1]},"west":{"uv":[584,203],"uv_size":[1,1]},"up":{"uv":[561,232],"uv_size":[-1,-1]}}},{"origin":[-9.99176,20.36688,1.11741],"size":[0.25,1.85,0.25],"uv":{"north":{"uv":[548,199],"uv_size":[1,7]},"east":{"uv":[552,199],"uv_size":[1,7]},"south":{"uv":[556,191],"uv_size":[1,7]},"west":{"uv":[556,199],"uv_size":[1,7]},"up":{"uv":[585,208],"uv_size":[-1,-1]},"down":{"uv":[565,231],"uv_size":[-1,1]}}},{"origin":[-9.99176,21.61688,1.41741],"size":[0.25,0.6,0],"uv":{"north":{"uv":[572,207],"uv_size":[1,2]},"east":{"uv":[544,191],"uv_size":[0,2]},"south":{"uv":[564,219],"uv_size":[1,2]},"west":{"uv":[544,191],"uv_size":[0,2]},"up":{"uv":[545,191],"uv_size":[-1,0]},"down":{"uv":[545,191],"uv_size":[-1,0]}}},{"origin":[-9.9668,20.26688,1.1394],"size":[0.2,0.1,0.2],"uv":{"north":{"uv":[584,211],"uv_size":[1,1]},"east":{"uv":[568,231],"uv_size":[1,1]},"south":{"uv":[584,215],"uv_size":[1,1]},"west":{"uv":[572,231],"uv_size":[1,1]},"down":{"uv":[585,219],"uv_size":[-1,1]}}},{"origin":[-9.9388,20.16688,1.1644],"size":[0.15,0.1,0.15],"uv":{"north":{"uv":[576,231],"uv_size":[1,1]},"east":{"uv":[584,223],"uv_size":[1,1]},"south":{"uv":[580,231],"uv_size":[1,1]},"west":{"uv":[584,227],"uv_size":[1,1]},"down":{"uv":[585,231],"uv_size":[-1,1]}}},{"origin":[-9.9138,20.06688,1.1894],"size":[0.1,0.1,0.1],"uv":{"north":{"uv":[544,235],"uv_size":[1,1]},"east":{"uv":[588,191],"uv_size":[1,1]},"south":{"uv":[548,235],"uv_size":[1,1]},"west":{"uv":[588,195],"uv_size":[1,1]},"down":{"uv":[553,235],"uv_size":[-1,1]}}}]},{"name":"funnel","pivot":[-9.84176,20.46688,1.21741],"parent":"air_brush","rotation":[0,0,61],"cubes":[{"origin":[-9.99176,20.46688,1.11741],"size":[0.25,0.25,0.25],"inflate":-0.005,"uv":{"north":{"uv":[588,199],"uv_size":[1,1]},"east":{"uv":[556,235],"uv_size":[1,1]},"south":{"uv":[588,203],"uv_size":[1,1]},"west":{"uv":[560,235],"uv_size":[1,1]}}},{"origin":[-10.09176,20.91688,1.01741],"size":[0.45,0.3,0.45],"uv":{"north":{"uv":[572,211],"uv_size":[2,1]},"east":{"uv":[568,219],"uv_size":[2,1]},"south":{"uv":[572,215],"uv_size":[2,1]},"west":{"uv":[572,219],"uv_size":[2,1]},"up":{"uv":[546,213],"uv_size":[-2,-2]},"down":{"uv":[570,203],"uv_size":[-2,2]}}},{"origin":[-10.0418,20.71688,1.0674],"size":[0.35,0.2,0.35],"uv":{"north":{"uv":[588,207],"uv_size":[1,1]},"east":{"uv":[564,235],"uv_size":[1,1]},"south":{"uv":[588,211],"uv_size":[1,1]},"west":{"uv":[568,235],"uv_size":[1,1]},"down":{"uv":[589,215],"uv_size":[-1,1]}}}]},{"name":"button","pivot":[-9.6131,21.1,1.1361],"parent":"air_brush","rotation":[0,0,76],"cubes":[{"origin":[-9.5168,20.26688,1.1654],"size":[0.15,0.5,0.15],"pivot":[-9.47043,20.46688,1.26741],"rotation":[0,0,-6.5],"uv":{"north":{"uv":[544,223],"uv_size":[1,2]},"east":{"uv":[576,191],"uv_size":[1,2]},"south":{"uv":[548,223],"uv_size":[1,2]},"west":{"uv":[576,195],"uv_size":[1,2]},"down":{"uv":[573,235],"uv_size":[-1,1]}}},{"origin":[-9.5168,20.86688,1.1654],"size":[0.15,0.2,0.15],"pivot":[-9.47043,20.76688,1.26741],"rotation":[0,0,-6.5],"uv":{"north":{"uv":[588,219],"uv_size":[1,1]},"east":{"uv":[576,235],"uv_size":[1,1]},"south":{"uv":[588,223],"uv_size":[1,1]},"west":{"uv":[580,235],"uv_size":[1,1]},"up":{"uv":[589,228],"uv_size":[-1,-1]}}}]},{"name":"ink_3","pivot":[-10.5131,21.9,1.1361],"parent":"ink_pen","rotation":[16.73133,-3.05806,30.57261],"cubes":[{"origin":[-10.54176,22.56688,1.16741],"size":[0.15,0.2,0.15],"uv":{"north":{"uv":[584,235],"uv_size":[1,1]},"east":{"uv":[588,231],"uv_size":[1,1]},"south":{"uv":[588,235],"uv_size":[1,1]},"west":{"uv":[544,239],"uv_size":[1,1]},"up":{"uv":[593,192],"uv_size":[-1,-1]}}},{"origin":[-10.59176,21.01688,1.11741],"size":[0.25,1.6,0.25],"uv":{"north":{"uv":[548,207],"uv_size":[1,6]},"east":{"uv":[560,195],"uv_size":[1,6]},"south":{"uv":[552,207],"uv_size":[1,6]},"west":{"uv":[556,207],"uv_size":[1,6]},"up":{"uv":[549,240],"uv_size":[-1,-1]},"down":{"uv":[593,195],"uv_size":[-1,1]}}},{"origin":[-10.5668,20.76688,1.1394],"size":[0.2,0.25,0.2],"uv":{"north":{"uv":[552,239],"uv_size":[1,1]},"east":{"uv":[592,199],"uv_size":[1,1]},"south":{"uv":[556,239],"uv_size":[1,1]},"west":{"uv":[592,203],"uv_size":[1,1]},"down":{"uv":[561,239],"uv_size":[-1,1]}}},{"origin":[-10.5388,20.66688,1.1644],"size":[0.15,0.1,0.15],"uv":{"north":{"uv":[592,207],"uv_size":[1,1]},"east":{"uv":[564,239],"uv_size":[1,1]},"south":{"uv":[592,211],"uv_size":[1,1]},"west":{"uv":[568,239],"uv_size":[1,1]},"down":{"uv":[593,215],"uv_size":[-1,1]}}},{"origin":[-10.5138,20.46688,1.1894],"size":[0.1,0.2,0.1],"uv":{"north":{"uv":[572,239],"uv_size":[1,1]},"east":{"uv":[592,219],"uv_size":[1,1]},"south":{"uv":[576,239],"uv_size":[1,1]},"west":{"uv":[592,223],"uv_size":[1,1]},"down":{"uv":[581,239],"uv_size":[-1,1]}}}]},{"name":"clipper","pivot":[-8.7131,21.3,1.2361],"parent":"stationary","rotation":[59,0,60],"cubes":[{"origin":[-9.0631,21.2,1.1361],"size":[0.6,0.25,0.1],"pivot":[-8.9131,21.3,1.2361],"rotation":[0,6,0],"uv":{"north":{"uv":[552,223],"uv_size":[2,1]},"east":{"uv":[592,227],"uv_size":[1,1]},"south":{"uv":[576,199],"uv_size":[2,1]},"west":{"uv":[584,239],"uv_size":[1,1]},"up":{"uv":[558,224],"uv_size":[-2,-1]},"down":{"uv":[578,203],"uv_size":[-2,1]}}},{"origin":[-9.0631,21.2,0.9361],"size":[0.6,0.25,0.1],"pivot":[-8.9131,21.3,1.0361],"rotation":[0,-9,0],"uv":{"north":{"uv":[560,223],"uv_size":[2,1]},"east":{"uv":[592,231],"uv_size":[1,1]},"south":{"uv":[576,207],"uv_size":[2,1]},"west":{"uv":[588,239],"uv_size":[1,1]},"up":{"uv":[566,224],"uv_size":[-2,-1]},"down":{"uv":[578,211],"uv_size":[-2,1]}}}]},{"name":"eraser","pivot":[-9.6131,21.5,2.1361],"parent":"stationary","cubes":[{"origin":[-9.3631,21.75,1.1361],"size":[0.5,0.6,0.25],"uv":{"north":{"uv":[560,215],"uv_size":[2,2]},"east":{"uv":[568,223],"uv_size":[1,2]},"south":{"uv":[568,207],"uv_size":[2,2]},"west":{"uv":[576,215],"uv_size":[1,2]},"up":{"uv":[574,224],"uv_size":[-2,-1]},"down":{"uv":[578,219],"uv_size":[-2,1]}}}]},{"name":"tweezer","pivot":[-11.3131,22.4,1.6361],"parent":"stationary","rotation":[49.78878,5.35678,-47.01268],"cubes":[{"origin":[-10.67283,21.86504,1.5361],"size":[0.6,0.25,0.25],"pivot":[-10.37283,22.01504,1.6361],"rotation":[0,0,-5],"uv":{"north":{"uv":[576,223],"uv_size":[2,1]},"east":{"uv":[592,235],"uv_size":[1,1]},"south":{"uv":[544,227],"uv_size":[2,1]},"west":{"uv":[592,239],"uv_size":[1,1]},"up":{"uv":[582,192],"uv_size":[-2,-1]},"down":{"uv":[550,227],"uv_size":[-2,1]}}},{"origin":[-11.33286,22.05339,1.5361],"size":[0.8,0.25,0.25],"pivot":[-11.03286,22.20339,1.6361],"rotation":[0,0,27.5],"uv":{"north":{"uv":[568,215],"uv_size":[3,1]},"east":{"uv":[544,243],"uv_size":[1,1]},"south":{"uv":[544,219],"uv_size":[3,1]},"west":{"uv":[596,191],"uv_size":[1,1]},"up":{"uv":[575,192],"uv_size":[-3,-1]},"down":{"uv":[551,219],"uv_size":[-3,1]}}},{"origin":[-10.66452,22.73662,1.5361],"size":[0.6,0.25,0.25],"pivot":[-10.36452,22.88662,1.6361],"rotation":[0,0,5],"uv":{"north":{"uv":[580,195],"uv_size":[2,1]},"east":{"uv":[548,243],"uv_size":[1,1]},"south":{"uv":[552,227],"uv_size":[2,1]},"west":{"uv":[596,195],"uv_size":[1,1]},"up":{"uv":[582,200],"uv_size":[-2,-1]},"down":{"uv":[558,227],"uv_size":[-2,1]}}},{"origin":[-11.352,22.54281,1.5361],"size":[0.8,0.25,0.25],"pivot":[-11.052,22.69281,1.6361],"rotation":[0,0,-27.5],"uv":{"north":{"uv":[572,195],"uv_size":[3,1]},"east":{"uv":[552,243],"uv_size":[1,1]},"south":{"uv":[552,219],"uv_size":[3,1]},"west":{"uv":[596,199],"uv_size":[1,1]},"up":{"uv":[575,200],"uv_size":[-3,-1]},"down":{"uv":[559,219],"uv_size":[-3,1]}}},{"origin":[-12.41794,22.50473,1.5611],"size":[1.2,0.1,0.2],"pivot":[-11.71794,22.35473,1.6361],"rotation":[0,0,-10],"uv":{"north":{"uv":[560,203],"uv_size":[5,1]},"east":{"uv":[556,243],"uv_size":[1,1]},"south":{"uv":[560,207],"uv_size":[5,1]},"west":{"uv":[596,203],"uv_size":[1,1]},"up":{"uv":[569,192],"uv_size":[-5,-1]},"down":{"uv":[569,195],"uv_size":[-5,1]}}},{"origin":[-12.4353,22.24679,1.5611],"size":[1.2,0.1,0.2],"pivot":[-11.7353,22.39679,1.6361],"rotation":[0,0,10],"uv":{"north":{"uv":[564,199],"uv_size":[5,1]},"east":{"uv":[560,243],"uv_size":[1,1]},"south":{"uv":[560,211],"uv_size":[5,1]},"west":{"uv":[596,207],"uv_size":[1,1]},"up":{"uv":[549,216],"uv_size":[-5,-1]},"down":{"uv":[557,215],"uv_size":[-5,1]}}},{"origin":[-11.7131,22.25,1.5611],"size":[0.5,0.35,0.2],"uv":{"north":{"uv":[580,203],"uv_size":[2,1]},"east":{"uv":[564,243],"uv_size":[1,1]},"south":{"uv":[560,227],"uv_size":[2,1]},"west":{"uv":[596,211],"uv_size":[1,1]},"up":{"uv":[582,208],"uv_size":[-2,-1]},"down":{"uv":[566,227],"uv_size":[-2,1]}}},{"origin":[-12.2131,22.35,1.5611],"size":[0.5,0.15,0.2],"uv":{"north":{"uv":[580,211],"uv_size":[2,1]},"east":{"uv":[568,243],"uv_size":[1,1]},"south":{"uv":[568,227],"uv_size":[2,1]},"west":{"uv":[596,215],"uv_size":[1,1]},"up":{"uv":[582,216],"uv_size":[-2,-1]},"down":{"uv":[574,227],"uv_size":[-2,1]}}}]},{"name":"section5R","pivot":[-16.9131,25.5,2.4361],"parent":"wingR"},{"name":"cutting tools","pivot":[-16.9131,25.5,2.4361],"parent":"section5R","rotation":[43,42,-31.5]},{"name":"scissor","pivot":[-16.47427,24.33262,-1.26776],"parent":"cutting tools","cubes":[{"origin":[-18.17427,24.33262,2.33224],"size":[2,0.4,0.15],"uv":{"north":{"uv":[444,130],"uv_size":[8,2]},"east":{"uv":[464,138],"uv_size":[1,2]},"south":{"uv":[444,134],"uv_size":[8,2]},"west":{"uv":[456,150],"uv_size":[1,2]},"up":{"uv":[452,139],"uv_size":[-8,-1]},"down":{"uv":[460,130],"uv_size":[-8,1]}}},{"origin":[-18.77427,24.38262,2.33224],"size":[0.6,0.3,0.15],"uv":{"north":{"uv":[464,142],"uv_size":[2,1]},"south":{"uv":[460,150],"uv_size":[2,1]},"west":{"uv":[468,158],"uv_size":[1,1]},"up":{"uv":[466,147],"uv_size":[-2,-1]},"down":{"uv":[466,150],"uv_size":[-2,1]}}}]},{"name":"handle_1","pivot":[-15.57427,24.03262,2.43224],"parent":"scissor","cubes":[{"origin":[-16.17427,24.33262,2.38224],"size":[0.4,0.2,0.1],"uv":{"north":{"uv":[444,154],"uv_size":[2,1]},"east":{"uv":[472,154],"uv_size":[1,1]},"south":{"uv":[468,130],"uv_size":[2,1]},"up":{"uv":[450,155],"uv_size":[-2,-1]},"down":{"uv":[470,134],"uv_size":[-2,1]}}},{"origin":[-15.87427,24.33262,2.33224],"size":[0.1,0.2,0.15],"uv":{"north":{"uv":[472,158],"uv_size":[1,1]},"east":{"uv":[444,162],"uv_size":[1,1]},"south":{"uv":[476,130],"uv_size":[1,1]},"west":{"uv":[448,162],"uv_size":[1,1]},"up":{"uv":[477,135],"uv_size":[-1,-1]},"down":{"uv":[453,162],"uv_size":[-1,1]}}},{"origin":[-15.17427,24.13262,2.33224],"size":[0.4,0.4,0.15],"uv":{"north":{"uv":[452,134],"uv_size":[2,2]},"east":{"uv":[452,154],"uv_size":[1,2]},"south":{"uv":[452,138],"uv_size":[2,2]},"west":{"uv":[468,138],"uv_size":[1,2]},"up":{"uv":[458,155],"uv_size":[-2,-1]},"down":{"uv":[470,142],"uv_size":[-2,1]}}},{"origin":[-15.87427,24.53262,2.33224],"size":[0.9,0.1,0.15],"uv":{"north":{"uv":[444,142],"uv_size":[4,1]},"east":{"uv":[476,138],"uv_size":[1,1]},"south":{"uv":[448,142],"uv_size":[4,1]},"west":{"uv":[456,162],"uv_size":[1,1]},"up":{"uv":[460,135],"uv_size":[-4,-1]},"down":{"uv":[456,142],"uv_size":[-4,1]}}},{"origin":[-15.57427,24.03262,2.33224],"size":[0.6,0.1,0.15],"uv":{"north":{"uv":[460,154],"uv_size":[2,1]},"east":{"uv":[476,142],"uv_size":[1,1]},"south":{"uv":[468,146],"uv_size":[2,1]},"west":{"uv":[460,162],"uv_size":[1,1]},"up":{"uv":[466,155],"uv_size":[-2,-1]},"down":{"uv":[470,150],"uv_size":[-2,1]}}},{"origin":[-16.07427,24.03262,2.33224],"size":[0.5,0.1,0.15],"pivot":[-15.57427,24.03262,2.43224],"rotation":[0,0,42.5],"uv":{"north":{"uv":[468,154],"uv_size":[2,1]},"east":{"uv":[476,146],"uv_size":[1,1]},"south":{"uv":[444,158],"uv_size":[2,1]},"west":{"uv":[464,162],"uv_size":[1,1]},"up":{"uv":[474,131],"uv_size":[-2,-1]},"down":{"uv":[450,158],"uv_size":[-2,1]}}}]},{"name":"handle_2","pivot":[-16.41004,24.62959,2.43224],"parent":"scissor","rotation":[0,0,1.5],"cubes":[{"origin":[-15.70915,24.833,2.33224],"size":[0.15,0.15,0.1],"pivot":[-15.85915,24.733,2.43224],"rotation":[0,0,27],"uv":{"north":{"uv":[472,142],"uv_size":[1,1]},"east":{"uv":[460,158],"uv_size":[1,1]},"south":{"uv":[472,146],"uv_size":[1,1]},"up":{"uv":[465,159],"uv_size":[-1,-1]},"down":{"uv":[473,150],"uv_size":[-1,1]}}},{"origin":[-16.35647,24.69305,2.33224],"size":[0.55,0.25,0.1],"pivot":[-16.00647,24.69305,2.43224],"rotation":[0,0,-35],"uv":{"north":{"uv":[472,134],"uv_size":[2,1]},"east":{"uv":[476,150],"uv_size":[1,1]},"south":{"uv":[452,158],"uv_size":[2,1]},"up":{"uv":[474,139],"uv_size":[-2,-1]},"down":{"uv":[458,158],"uv_size":[-2,1]}}},{"origin":[-16.02779,25.2521,2.33224],"size":[0.65,0.2,0.15],"pivot":[-15.67779,25.1521,2.43224],"rotation":[0,0,-35],"uv":{"north":{"uv":[456,138],"uv_size":[3,1]},"east":{"uv":[468,162],"uv_size":[1,1]},"south":{"uv":[456,142],"uv_size":[3,1]},"west":{"uv":[476,154],"uv_size":[1,1]},"up":{"uv":[447,147],"uv_size":[-3,-1]},"down":{"uv":[463,130],"uv_size":[-3,1]}}},{"origin":[-16.05647,24.79305,2.33224],"size":[0.65,0.2,0.15],"pivot":[-15.70647,25.19305,2.43224],"rotation":[0,0,-35],"uv":{"north":{"uv":[448,146],"uv_size":[3,1]},"east":{"uv":[472,162],"uv_size":[1,1]},"south":{"uv":[460,134],"uv_size":[3,1]},"west":{"uv":[476,158],"uv_size":[1,1]},"up":{"uv":[455,147],"uv_size":[-3,-1]},"down":{"uv":[463,138],"uv_size":[-3,1]}}},{"origin":[-15.55647,24.99305,2.33224],"size":[0.25,0.25,0.15],"pivot":[-15.70647,25.19305,2.43224],"rotation":[0,0,-35],"uv":{"north":{"uv":[476,162],"uv_size":[1,1]},"east":{"uv":[444,166],"uv_size":[1,1]},"south":{"uv":[480,130],"uv_size":[1,1]},"west":{"uv":[448,166],"uv_size":[1,1]},"up":{"uv":[481,135],"uv_size":[-1,-1]},"down":{"uv":[453,166],"uv_size":[-1,1]}}},{"origin":[-16.05647,24.99305,2.33224],"size":[0.15,0.25,0.15],"pivot":[-15.70647,25.19305,2.43224],"rotation":[0,0,-35],"uv":{"north":{"uv":[480,138],"uv_size":[1,1]},"east":{"uv":[456,166],"uv_size":[1,1]},"south":{"uv":[480,142],"uv_size":[1,1]},"west":{"uv":[460,166],"uv_size":[1,1]},"up":{"uv":[481,147],"uv_size":[-1,-1]},"down":{"uv":[465,166],"uv_size":[-1,1]}}}]},{"name":"cutter","pivot":[-16.22427,25.33262,2.73224],"parent":"cutting tools","rotation":[-6.39627,-17.92855,25.01001]},{"name":"cutter_1","pivot":[-16.22427,25.33262,2.73224],"parent":"cutter","rotation":[0,0,5],"cubes":[{"origin":[-17.04591,25.43025,2.73224],"size":[0.8,0.1,0.1],"uv":{"north":{"uv":[456,146],"uv_size":[3,1]},"east":{"uv":[480,150],"uv_size":[1,1]},"south":{"uv":[460,142],"uv_size":[3,1]},"up":{"uv":[463,147],"uv_size":[-3,-1]},"down":{"uv":[447,150],"uv_size":[-3,1]}}},{"origin":[-17.34591,25.33025,2.73224],"size":[0.3,0.2,0.1],"uv":{"north":{"uv":[468,166],"uv_size":[1,1]},"east":{"uv":[480,154],"uv_size":[1,1]},"south":{"uv":[472,166],"uv_size":[1,1]},"west":{"uv":[480,158],"uv_size":[1,1]},"up":{"uv":[477,167],"uv_size":[-1,-1]},"down":{"uv":[481,162],"uv_size":[-1,1]}}},{"origin":[-17.54591,25.43025,2.73224],"size":[0.2,0.1,0.1],"uv":{"north":{"uv":[480,166],"uv_size":[1,1]},"south":{"uv":[444,170],"uv_size":[1,1]},"west":{"uv":[484,130],"uv_size":[1,1]},"up":{"uv":[449,171],"uv_size":[-1,-1]},"down":{"uv":[485,134],"uv_size":[-1,1]}}}]},{"name":"cutter_2","pivot":[-16.22427,25.43262,2.73224],"parent":"cutter","rotation":[180,0,-10.5],"cubes":[{"origin":[-17.03732,25.43176,2.63224],"size":[0.8,0.1,0.1],"uv":{"north":{"uv":[464,130],"uv_size":[3,1]},"east":{"uv":[452,170],"uv_size":[1,1]},"south":{"uv":[448,150],"uv_size":[3,1]},"up":{"uv":[467,135],"uv_size":[-3,-1]},"down":{"uv":[455,150],"uv_size":[-3,1]}}},{"origin":[-17.33732,25.33176,2.63224],"size":[0.3,0.2,0.1],"uv":{"north":{"uv":[484,138],"uv_size":[1,1]},"east":{"uv":[456,170],"uv_size":[1,1]},"south":{"uv":[484,142],"uv_size":[1,1]},"west":{"uv":[460,170],"uv_size":[1,1]},"up":{"uv":[485,147],"uv_size":[-1,-1]},"down":{"uv":[465,170],"uv_size":[-1,1]}}},{"origin":[-17.53732,25.43176,2.63224],"size":[0.2,0.1,0.1],"uv":{"north":{"uv":[484,150],"uv_size":[1,1]},"south":{"uv":[468,170],"uv_size":[1,1]},"west":{"uv":[484,154],"uv_size":[1,1]},"up":{"uv":[473,171],"uv_size":[-1,-1]},"down":{"uv":[485,158],"uv_size":[-1,1]}}}]},{"name":"pad","pivot":[-13.2131,23.3,2.6361],"parent":"section5R","rotation":[0,0,13],"cubes":[{"origin":[-13.8131,23.4,1.3361],"size":[2.4,1.3,0.2],"uv":{"north":{"uv":[444,217],"uv_size":[10,5]},"east":{"uv":[455,223],"uv_size":[1,5]},"south":{"uv":[444,223],"uv_size":[10,5]},"west":{"uv":[457,223],"uv_size":[1,5]},"up":{"uv":[465,218],"uv_size":[-10,-1]},"down":{"uv":[465,221],"uv_size":[-10,1]}}}]},{"name":"fabric","pivot":[-16.9131,26.5,0.1361],"parent":"section5R","rotation":[0.9621,38.47516,-21.23222],"cubes":[{"origin":[-19.79859,23.40576,1.40976],"size":[5.5,0.5,0.9],"pivot":[-17.54859,23.10576,2.30976],"rotation":[-15,0,0],"inflate":-0.005,"uv":{"north":{"uv":[444,199],"uv_size":[22,2]},"east":{"uv":[466,183],"uv_size":[4,2]},"south":{"uv":[444,201],"uv_size":[22,2]},"west":{"uv":[466,187],"uv_size":[4,2]},"up":{"uv":[466,187],"uv_size":[-22,-4]},"down":{"uv":[466,187],"uv_size":[-22,4]}}},{"origin":[-19.79859,23.20576,1.60976],"size":[5.5,0.9,0.5],"pivot":[-17.54859,23.10576,2.30976],"rotation":[-15,0,0],"uv":{"north":{"uv":[444,191],"uv_size":[22,4]},"east":{"uv":[466,191],"uv_size":[2,4]},"south":{"uv":[444,195],"uv_size":[22,4]},"west":{"uv":[466,195],"uv_size":[2,4]},"up":{"uv":[466,205],"uv_size":[-22,-2]},"down":{"uv":[466,205],"uv_size":[-22,2]}}},{"origin":[-19.7655,23.99335,2.45778],"size":[5.5,1,0.1],"pivot":[-17.5155,23.99335,2.55778],"rotation":[49,0,0],"uv":{"north":{"uv":[417,183],"uv_size":[22,4]},"east":{"uv":[439,183],"uv_size":[1,4]},"south":{"uv":[417,187],"uv_size":[22,4]},"west":{"uv":[439,187],"uv_size":[1,4]},"up":{"uv":[439,192],"uv_size":[-22,-1]},"down":{"uv":[439,192],"uv_size":[-22,1]}}},{"origin":[-19.7655,24.6402,1.71236],"size":[5.5,1,0.1],"pivot":[-17.5155,24.6402,1.81236],"rotation":[41.5,0,0],"uv":{"north":{"uv":[417,183],"uv_size":[22,4]},"east":{"uv":[439,183],"uv_size":[1,4]},"south":{"uv":[417,187],"uv_size":[22,4]},"west":{"uv":[439,187],"uv_size":[1,4]},"up":{"uv":[417,191],"uv_size":[22,1]},"down":{"uv":[417,192],"uv_size":[22,1]}}},{"origin":[-19.7655,25.37662,1.05919],"size":[5.5,1,0.1],"pivot":[-17.5155,25.37662,1.15919],"rotation":[32.5,0,0],"uv":{"north":{"uv":[417,183],"uv_size":[22,4]},"east":{"uv":[439,183],"uv_size":[1,4]},"south":{"uv":[417,187],"uv_size":[22,4]},"west":{"uv":[439,187],"uv_size":[1,4]},"up":{"uv":[417,191],"uv_size":[22,1]},"down":{"uv":[417,192],"uv_size":[22,1]}}},{"origin":[-19.7655,26.20854,0.52818],"size":[5.5,1,0.1],"pivot":[-17.5155,26.20854,0.62818],"rotation":[25,0,0],"uv":{"north":{"uv":[417,183],"uv_size":[22,4]},"east":{"uv":[439,183],"uv_size":[1,4]},"south":{"uv":[417,187],"uv_size":[22,4]},"west":{"uv":[439,187],"uv_size":[1,4]},"up":{"uv":[417,191],"uv_size":[22,1]},"down":{"uv":[417,192],"uv_size":[22,1]}}},{"origin":[-19.7655,27.10432,0.10976],"size":[5.5,1,0.1],"pivot":[-17.5155,27.10432,0.20976],"rotation":[18.5,0,0],"uv":{"north":{"uv":[417,183],"uv_size":[22,4]},"east":{"uv":[439,183],"uv_size":[1,4]},"south":{"uv":[417,187],"uv_size":[22,4]},"west":{"uv":[439,187],"uv_size":[1,4]},"up":{"uv":[417,191],"uv_size":[22,1]},"down":{"uv":[417,192],"uv_size":[22,1]}}},{"origin":[-19.7655,28.03483,-0.20335],"size":[5.5,1,0.1],"pivot":[-17.5155,28.03483,-0.10335],"rotation":[8,0,0],"uv":{"north":{"uv":[417,183],"uv_size":[22,4]},"east":{"uv":[439,183],"uv_size":[1,4]},"south":{"uv":[417,187],"uv_size":[22,4]},"west":{"uv":[439,187],"uv_size":[1,4]},"up":{"uv":[417,191],"uv_size":[22,1]},"down":{"uv":[417,192],"uv_size":[22,1]}}},{"origin":[-19.7655,29.00247,-0.34193],"size":[5.5,1,0.1],"pivot":[-17.5155,29.00247,-0.24193],"rotation":[-5,0,0],"uv":{"north":{"uv":[417,183],"uv_size":[22,4]},"east":{"uv":[439,183],"uv_size":[1,4]},"south":{"uv":[417,187],"uv_size":[22,4]},"west":{"uv":[439,187],"uv_size":[1,4]},"up":{"uv":[417,191],"uv_size":[16,1]},"down":{"uv":[417,192],"uv_size":[22,1]}}},{"origin":[-19.7655,29.9883,-0.25623],"size":[5.5,1,0.1],"pivot":[-17.5155,29.9883,-0.15623],"rotation":[-11,0,0],"uv":{"north":{"uv":[417,183],"uv_size":[22,4]},"east":{"uv":[439,183],"uv_size":[1,4]},"south":{"uv":[417,187],"uv_size":[22,4]},"west":{"uv":[439,187],"uv_size":[1,4]},"up":{"uv":[417,191],"uv_size":[16,1]},"down":{"uv":[417,192],"uv_size":[22,1]}}}]},{"name":"miscellaneous","pivot":[-17.1131,26.3,3.1361],"parent":"section5R","rotation":[24.63288,24.40445,6.55289]},{"name":"m_1","pivot":[-17.2131,26.4,2.1361],"parent":"miscellaneous","rotation":[0,0,-38],"cubes":[{"origin":[-17.0131,26.2,2.1361],"size":[1,0.2,0.1],"uv":{"north":{"uv":[393,233],"uv_size":[4,1]},"east":{"uv":[401,241],"uv_size":[1,1]},"south":{"uv":[409,217],"uv_size":[4,1]},"west":{"uv":[417,225],"uv_size":[1,1]},"up":{"uv":[401,234],"uv_size":[-4,-1]},"down":{"uv":[413,221],"uv_size":[-4,1]}}},{"origin":[-17.5131,26.25,2.1361],"size":[0.5,0.1,0.1],"uv":{"north":{"uv":[413,221],"uv_size":[2,1]},"south":{"uv":[401,237],"uv_size":[2,1]},"west":{"uv":[405,241],"uv_size":[1,1]},"up":{"uv":[415,226],"uv_size":[-2,-1]},"down":{"uv":[407,237],"uv_size":[-2,1]}}}]},{"name":"m_2","pivot":[-17.7131,26.7,2.1361],"parent":"miscellaneous","rotation":[18,0,-34],"cubes":[{"origin":[-17.9131,26.5,2.1361],"size":[1.4,0.2,0.1],"uv":{"north":{"uv":[393,217],"uv_size":[6,1]},"east":{"uv":[417,229],"uv_size":[1,1]},"south":{"uv":[393,221],"uv_size":[6,1]},"west":{"uv":[409,241],"uv_size":[1,1]},"up":{"uv":[399,226],"uv_size":[-6,-1]},"down":{"uv":[407,217],"uv_size":[-6,1]}}},{"origin":[-18.4131,26.55,2.1361],"size":[0.5,0.1,0.1],"uv":{"north":{"uv":[413,229],"uv_size":[2,1]},"south":{"uv":[409,237],"uv_size":[2,1]},"west":{"uv":[417,233],"uv_size":[1,1]},"up":{"uv":[415,234],"uv_size":[-2,-1]},"down":{"uv":[415,237],"uv_size":[-2,1]}}}]},{"name":"m_3","pivot":[-18.3131,26.9,2.1361],"parent":"miscellaneous","rotation":[-14,0,-20],"cubes":[{"origin":[-18.0131,26.7,2.1361],"size":[0.9,0.2,0.1],"uv":{"north":{"uv":[401,233],"uv_size":[4,1]},"east":{"uv":[413,241],"uv_size":[1,1]},"south":{"uv":[409,225],"uv_size":[4,1]},"west":{"uv":[417,237],"uv_size":[1,1]},"up":{"uv":[409,234],"uv_size":[-4,-1]},"down":{"uv":[413,229],"uv_size":[-4,1]}}},{"origin":[-18.3131,26.75,2.1361],"size":[0.3,0.1,0.1],"uv":{"north":{"uv":[417,241],"uv_size":[1,1]},"south":{"uv":[393,245],"uv_size":[1,1]},"west":{"uv":[421,217],"uv_size":[1,1]},"up":{"uv":[398,246],"uv_size":[-1,-1]},"down":{"uv":[422,221],"uv_size":[-1,1]}}}]},{"name":"m_4","pivot":[-18.4131,27.3,2.1361],"parent":"miscellaneous","rotation":[-31,0,-12],"cubes":[{"origin":[-18.4131,27.1,2.1361],"size":[1.2,0.2,0.1],"uv":{"north":{"uv":[401,221],"uv_size":[5,1]},"east":{"uv":[401,245],"uv_size":[1,1]},"south":{"uv":[401,225],"uv_size":[5,1]},"west":{"uv":[421,225],"uv_size":[1,1]},"up":{"uv":[398,230],"uv_size":[-5,-1]},"down":{"uv":[406,229],"uv_size":[-5,1]}}},{"origin":[-18.9131,27.15,2.1361],"size":[0.5,0.1,0.1],"uv":{"north":{"uv":[393,241],"uv_size":[2,1]},"south":{"uv":[417,217],"uv_size":[2,1]},"west":{"uv":[405,245],"uv_size":[1,1]},"up":{"uv":[399,242],"uv_size":[-2,-1]},"down":{"uv":[419,221],"uv_size":[-2,1]}}}]},{"name":"m_5","pivot":[-19.0131,27.6,2.1361],"parent":"miscellaneous","rotation":[59,0,-4],"cubes":[{"origin":[-18.6131,27.4,2.1361],"size":[0.8,0.2,0.1],"uv":{"north":{"uv":[409,233],"uv_size":[3,1]},"east":{"uv":[421,229],"uv_size":[1,1]},"south":{"uv":[393,237],"uv_size":[3,1]},"west":{"uv":[409,245],"uv_size":[1,1]},"up":{"uv":[416,218],"uv_size":[-3,-1]},"down":{"uv":[400,237],"uv_size":[-3,1]}}},{"origin":[-18.9131,27.45,2.1361],"size":[0.3,0.1,0.1],"uv":{"north":{"uv":[421,233],"uv_size":[1,1]},"south":{"uv":[413,245],"uv_size":[1,1]},"west":{"uv":[421,237],"uv_size":[1,1]},"up":{"uv":[418,246],"uv_size":[-1,-1]},"down":{"uv":[422,241],"uv_size":[-1,1]}}}]},{"name":"section6R","pivot":[1.25,24.1,3],"parent":"wingR"},{"name":"brushes_pens_scraper","pivot":[-21.5131,32,1.0361],"parent":"section6R"},{"name":"brushes","pivot":[-19.7131,31.2,1.5361],"parent":"brushes_pens_scraper"},{"name":"brush_1","pivot":[-19.44246,31.6,1.39445],"parent":"brushes","rotation":[0,-7,12.5],"cubes":[{"origin":[-22.24246,31.5,1.39445],"size":[3.8,0.15,0.1],"uv":{"north":{"uv":[290,200],"uv_size":[15,1]},"east":{"uv":[342,216],"uv_size":[1,1]},"south":{"uv":[322,168],"uv_size":[15,1]},"up":{"uv":[337,173],"uv_size":[-15,-1]},"down":{"uv":[337,176],"uv_size":[-15,1]}}},{"origin":[-22.74246,31.45,1.39445],"size":[0.5,0.25,0.1],"uv":{"north":{"uv":[342,188],"uv_size":[2,1]},"east":{"uv":[342,220],"uv_size":[1,1]},"south":{"uv":[314,220],"uv_size":[2,1]},"west":{"uv":[290,224],"uv_size":[1,1]},"up":{"uv":[344,193],"uv_size":[-2,-1]},"down":{"uv":[320,220],"uv_size":[-2,1]}}}]},{"name":"brush_2","pivot":[-20.14246,32.2,1.19445],"parent":"brushes","rotation":[0,-11,12.5],"cubes":[{"origin":[-22.64246,32.1,1.19445],"size":[3.5,0.15,0.1],"uv":{"north":{"uv":[314,200],"uv_size":[14,1]},"east":{"uv":[346,168],"uv_size":[1,1]},"south":{"uv":[322,192],"uv_size":[14,1]},"up":{"uv":[336,197],"uv_size":[-14,-1]},"down":{"uv":[304,204],"uv_size":[-14,1]}}},{"origin":[-23.44246,32.05,1.19445],"size":[0.8,0.25,0.1],"uv":{"north":{"uv":[326,216],"uv_size":[3,1]},"east":{"uv":[294,224],"uv_size":[1,1]},"south":{"uv":[338,204],"uv_size":[3,1]},"west":{"uv":[346,172],"uv_size":[1,1]},"up":{"uv":[333,217],"uv_size":[-3,-1]},"down":{"uv":[341,208],"uv_size":[-3,1]}}}]},{"name":"brush_3","pivot":[-21.18639,33.4,1.20903],"parent":"brushes","rotation":[1.83041,-16.90406,18.22799],"cubes":[{"origin":[-23.58639,33.3,1.20903],"size":[4.2,0.15,0.1],"uv":{"north":{"uv":[290,184],"uv_size":[17,1]},"east":{"uv":[298,224],"uv_size":[1,1]},"south":{"uv":[290,188],"uv_size":[17,1]},"up":{"uv":[327,185],"uv_size":[-17,-1]},"down":{"uv":[327,188],"uv_size":[-17,1]}}},{"origin":[-24.88639,33.25,1.20903],"size":[1.3,0.25,0.1],"uv":{"north":{"uv":[330,204],"uv_size":[5,1]},"east":{"uv":[346,176],"uv_size":[1,1]},"south":{"uv":[330,208],"uv_size":[5,1]},"west":{"uv":[302,224],"uv_size":[1,1]},"up":{"uv":[295,213],"uv_size":[-5,-1]},"down":{"uv":[303,212],"uv_size":[-5,1]}}}]},{"name":"brush_4","pivot":[-21.38639,33.9,1.00903],"parent":"brushes","rotation":[1.37593,-18.95195,22.77033],"cubes":[{"origin":[-24.44437,33.8,0.94872],"size":[4.8,0.15,0.1],"uv":{"north":{"uv":[302,168],"uv_size":[19,1]},"east":{"uv":[346,180],"uv_size":[1,1]},"south":{"uv":[302,172],"uv_size":[19,1]},"up":{"uv":[321,177],"uv_size":[-19,-1]},"down":{"uv":[321,180],"uv_size":[-19,1]}}},{"origin":[-25.34437,33.75,0.94872],"size":[0.9,0.25,0.1],"uv":{"north":{"uv":[322,212],"uv_size":[4,1]},"east":{"uv":[306,224],"uv_size":[1,1]},"south":{"uv":[326,212],"uv_size":[4,1]},"west":{"uv":[346,184],"uv_size":[1,1]},"up":{"uv":[334,213],"uv_size":[-4,-1]},"down":{"uv":[338,212],"uv_size":[-4,1]}}}]},{"name":"brush_5","pivot":[-21.28639,34.4,0.80903],"parent":"brushes","rotation":[1.0324,-18.97297,26.32748],"cubes":[{"origin":[-23.98639,34.25,0.70903],"size":[4.1,0.25,0.1],"uv":{"north":{"uv":[290,192],"uv_size":[16,1]},"east":{"uv":[310,224],"uv_size":[1,1]},"south":{"uv":[306,192],"uv_size":[16,1]},"up":{"uv":[306,197],"uv_size":[-16,-1]},"down":{"uv":[322,196],"uv_size":[-16,1]}}},{"origin":[-24.88639,34.2,0.70903],"size":[0.9,0.35,0.1],"uv":{"north":{"uv":[290,216],"uv_size":[4,1]},"east":{"uv":[346,188],"uv_size":[1,1]},"south":{"uv":[338,168],"uv_size":[4,1]},"up":{"uv":[298,217],"uv_size":[-4,-1]},"down":{"uv":[342,172],"uv_size":[-4,1]}}},{"origin":[-26.18639,34.15,0.70903],"size":[1.3,0.45,0.1],"uv":{"north":{"uv":[322,204],"uv_size":[5,2]},"east":{"uv":[342,196],"uv_size":[1,2]},"south":{"uv":[290,208],"uv_size":[5,2]},"west":{"uv":[322,220],"uv_size":[1,2]},"up":{"uv":[339,181],"uv_size":[-5,-1]},"down":{"uv":[311,212],"uv_size":[-5,1]}}}]},{"name":"big_brush_1","pivot":[-18.39094,31.8,1.87949],"parent":"brushes","rotation":[53.19531,18.28283,-0.1096],"cubes":[{"origin":[-20.09094,31.5,1.67949],"size":[0.8,0.5,0.15],"inflate":-0.005,"uv":{"north":{"uv":[330,188],"uv_size":[3,2]},"south":{"uv":[318,208],"uv_size":[3,2]},"up":{"uv":[337,217],"uv_size":[-3,-1]},"down":{"uv":[341,212],"uv_size":[-3,1]}}},{"origin":[-21.59094,30.75,1.67949],"size":[1.4,1.9,0.15],"uv":{"north":{"uv":[290,168],"uv_size":[6,8]},"south":{"uv":[290,176],"uv_size":[6,8]},"west":{"uv":[314,208],"uv_size":[1,8]},"up":{"uv":[328,209],"uv_size":[-6,-1]},"down":{"uv":[336,200],"uv_size":[-6,1]}}},{"origin":[-18.09094,31.5,1.67949],"size":[0.5,0.5,0.15],"uv":{"north":{"uv":[298,216],"uv_size":[2,2]},"east":{"uv":[342,200],"uv_size":[1,2]},"south":{"uv":[338,176],"uv_size":[2,2]},"up":{"uv":[328,221],"uv_size":[-2,-1]},"down":{"uv":[344,204],"uv_size":[-2,1]}}},{"origin":[-19.39094,31.4,1.67949],"size":[1.3,0.7,0.15],"uv":{"north":{"uv":[322,180],"uv_size":[5,3]},"east":{"uv":[338,216],"uv_size":[1,3]},"south":{"uv":[306,200],"uv_size":[5,3]},"west":{"uv":[290,220],"uv_size":[1,3]},"up":{"uv":[339,185],"uv_size":[-5,-1]},"down":{"uv":[339,188],"uv_size":[-5,1]}}},{"origin":[-20.59094,31.7,1.67949],"size":[0.7,1,0.15],"pivot":[-19.89094,31.7,1.77949],"rotation":[0,0,-15],"inflate":-0.0025,"uv":{"north":{"uv":[306,204],"uv_size":[3,4]},"east":{"uv":[302,216],"uv_size":[1,4]},"south":{"uv":[310,204],"uv_size":[3,4]},"up":{"uv":[345,169],"uv_size":[-3,-1]}}},{"origin":[-20.59094,30.7,1.67949],"size":[0.7,1,0.15],"pivot":[-19.89094,31.7,1.77949],"rotation":[0,0,15],"inflate":-0.0025,"uv":{"north":{"uv":[314,204],"uv_size":[3,4]},"east":{"uv":[306,216],"uv_size":[1,4]},"south":{"uv":[318,204],"uv_size":[3,4]},"down":{"uv":[297,220],"uv_size":[-3,1]}}}]},{"name":"big_brush_2","pivot":[-19.59094,29.7,1.47949],"parent":"brushes","rotation":[64.97022,29.05878,-16.66493],"cubes":[{"origin":[-20.69094,29.4,1.27949],"size":[0.7,0.5,0.15],"inflate":-0.005,"uv":{"north":{"uv":[310,216],"uv_size":[2,2]},"south":{"uv":[314,216],"uv_size":[2,2]},"up":{"uv":[332,221],"uv_size":[-2,-1]},"down":{"uv":[344,208],"uv_size":[-2,1]}}},{"origin":[-21.89094,28.95,1.27949],"size":[1,1.3,0.15],"uv":{"north":{"uv":[298,168],"uv_size":[4,5]},"south":{"uv":[298,176],"uv_size":[4,5]},"west":{"uv":[318,212],"uv_size":[1,5]},"up":{"uv":[342,193],"uv_size":[-4,-1]},"down":{"uv":[342,196],"uv_size":[-4,1]}}},{"origin":[-19.39094,29.4,1.27949],"size":[0.4,0.5,0.15],"uv":{"north":{"uv":[322,216],"uv_size":[2,2]},"east":{"uv":[334,220],"uv_size":[1,2]},"south":{"uv":[338,200],"uv_size":[2,2]},"up":{"uv":[344,213],"uv_size":[-2,-1]},"down":{"uv":[340,220],"uv_size":[-2,1]}}},{"origin":[-20.09094,29.3,1.27949],"size":[0.7,0.7,0.15],"uv":{"north":{"uv":[298,208],"uv_size":[3,3]},"east":{"uv":[342,172],"uv_size":[1,3]},"south":{"uv":[302,208],"uv_size":[3,3]},"west":{"uv":[298,220],"uv_size":[1,3]},"up":{"uv":[345,177],"uv_size":[-3,-1]},"down":{"uv":[305,220],"uv_size":[-3,1]}}},{"origin":[-21.29094,29.6,1.27949],"size":[0.7,0.7,0.15],"pivot":[-20.59094,29.6,1.37949],"rotation":[0,0,-15],"inflate":-0.0025,"uv":{"north":{"uv":[330,180],"uv_size":[3,3]},"east":{"uv":[342,180],"uv_size":[1,3]},"south":{"uv":[306,208],"uv_size":[3,3]},"up":{"uv":[309,221],"uv_size":[-3,-1]}}},{"origin":[-21.29094,28.9,1.27949],"size":[0.7,0.7,0.15],"pivot":[-20.59094,29.6,1.37949],"rotation":[0,0,15],"inflate":-0.0025,"uv":{"north":{"uv":[330,184],"uv_size":[3,3]},"east":{"uv":[342,184],"uv_size":[1,3]},"south":{"uv":[310,208],"uv_size":[3,3]},"down":{"uv":[313,220],"uv_size":[-3,1]}}}]},{"name":"pens","pivot":[1.55754,22.5,-1.60555],"parent":"brushes_pens_scraper"},{"name":"pen_1","pivot":[-19.94246,30.3,1.59445],"parent":"pens","rotation":[0,0,5.5],"cubes":[{"origin":[-21.84246,30.2,1.39445],"size":[2.1,0.15,0.15],"uv":{"north":{"uv":[514,175],"uv_size":[8,1]},"east":{"uv":[506,179],"uv_size":[1,1]},"south":{"uv":[490,179],"uv_size":[8,1]},"west":{"uv":[510,179],"uv_size":[1,1]},"up":{"uv":[526,152],"uv_size":[-8,-1]},"down":{"uv":[526,155],"uv_size":[-8,1]}}},{"origin":[-22.14246,30.225,1.41945],"size":[0.3,0.1,0.1],"uv":{"north":{"uv":[514,179],"uv_size":[1,1]},"south":{"uv":[518,179],"uv_size":[1,1]},"west":{"uv":[490,183],"uv_size":[1,1]},"up":{"uv":[495,184],"uv_size":[-1,-1]},"down":{"uv":[499,183],"uv_size":[-1,1]}}}]},{"name":"pen_2","pivot":[-20.84246,30.8,1.59445],"parent":"pens","rotation":[0,-4,0.5],"cubes":[{"origin":[-22.74246,30.7,1.39445],"size":[2.4,0.15,0.15],"uv":{"north":{"uv":[502,167],"uv_size":[10,1]},"east":{"uv":[506,183],"uv_size":[1,1]},"south":{"uv":[506,163],"uv_size":[10,1]},"west":{"uv":[510,183],"uv_size":[1,1]},"up":{"uv":[500,172],"uv_size":[-10,-1]},"down":{"uv":[512,171],"uv_size":[-10,1]}}},{"origin":[-23.04246,30.725,1.41945],"size":[0.3,0.1,0.1],"uv":{"north":{"uv":[514,183],"uv_size":[1,1]},"south":{"uv":[522,175],"uv_size":[1,1]},"west":{"uv":[518,183],"uv_size":[1,1]},"up":{"uv":[523,180],"uv_size":[-1,-1]},"down":{"uv":[523,183],"uv_size":[-1,1]}}}]},{"name":"pen_3","pivot":[-20.44246,31.1,1.59445],"parent":"pens","rotation":[0,-6,2.5],"cubes":[{"origin":[-22.34246,31,1.39445],"size":[2.4,0.15,0.15],"uv":{"north":{"uv":[490,175],"uv_size":[10,1]},"east":{"uv":[490,187],"uv_size":[1,1]},"south":{"uv":[502,175],"uv_size":[10,1]},"west":{"uv":[526,151],"uv_size":[1,1]},"up":{"uv":[524,168],"uv_size":[-10,-1]},"down":{"uv":[524,171],"uv_size":[-10,1]}}},{"origin":[-22.64246,31.025,1.41945],"size":[0.3,0.1,0.1],"uv":{"north":{"uv":[494,187],"uv_size":[1,1]},"south":{"uv":[526,155],"uv_size":[1,1]},"west":{"uv":[498,187],"uv_size":[1,1]},"up":{"uv":[527,160],"uv_size":[-1,-1]},"down":{"uv":[503,187],"uv_size":[-1,1]}}}]},{"name":"pen_4","pivot":[-19.34246,31.1,1.59445],"parent":"pens","rotation":[0,-6,8.5],"cubes":[{"origin":[-21.74246,31,1.39445],"size":[2.9,0.15,0.15],"uv":{"north":{"uv":[490,167],"uv_size":[12,1]},"east":{"uv":[526,163],"uv_size":[1,1]},"south":{"uv":[506,151],"uv_size":[12,1]},"west":{"uv":[506,187],"uv_size":[1,1]},"up":{"uv":[518,156],"uv_size":[-12,-1]},"down":{"uv":[518,159],"uv_size":[-12,1]}}},{"origin":[-22.04246,31.025,1.41945],"size":[0.3,0.1,0.1],"uv":{"north":{"uv":[526,167],"uv_size":[1,1]},"south":{"uv":[510,187],"uv_size":[1,1]},"west":{"uv":[526,171],"uv_size":[1,1]},"up":{"uv":[515,188],"uv_size":[-1,-1]},"down":{"uv":[527,175],"uv_size":[-1,1]}}}]},{"name":"pen_5","pivot":[-19.94246,32.5,1.39445],"parent":"pens","rotation":[0,-12,17.5],"cubes":[{"origin":[-23.44246,32.4,1.19445],"size":[4,0.15,0.15],"uv":{"north":{"uv":[490,151],"uv_size":[16,1]},"east":{"uv":[502,183],"uv_size":[1,1]},"south":{"uv":[490,155],"uv_size":[16,1]},"west":{"uv":[522,163],"uv_size":[1,1]},"up":{"uv":[506,160],"uv_size":[-16,-1]},"down":{"uv":[506,163],"uv_size":[-16,1]}}},{"origin":[-23.84246,32.425,1.21945],"size":[0.4,0.1,0.1],"uv":{"north":{"uv":[498,179],"uv_size":[2,1]},"south":{"uv":[518,159],"uv_size":[2,1]},"west":{"uv":[522,159],"uv_size":[1,1]},"up":{"uv":[504,180],"uv_size":[-2,-1]},"down":{"uv":[520,163],"uv_size":[-2,1]}}}]},{"name":"scraper","pivot":[-20.2131,29.8,0.8361],"parent":"brushes_pens_scraper","rotation":[-19.23201,16.20319,1.77149]},{"name":"scraper_1","pivot":[-20.1131,30.1,1.6361],"parent":"scraper","cubes":[{"origin":[-21.1131,30.1,1.4361],"size":[1.5,0.15,0.5],"uv":{"north":{"uv":[514,214],"uv_size":[6,1]},"east":{"uv":[522,214],"uv_size":[2,1]},"south":{"uv":[490,218],"uv_size":[6,1]},"west":{"uv":[518,222],"uv_size":[2,1]},"up":{"uv":[496,200],"uv_size":[-6,-2]},"down":{"uv":[504,190],"uv_size":[-6,2]}}},{"origin":[-22.6131,30.125,1.2361],"size":[0.8,0.1,1],"uv":{"north":{"uv":[510,222],"uv_size":[3,1]},"south":{"uv":[522,210],"uv_size":[3,1]},"west":{"uv":[518,210],"uv_size":[4,1]},"up":{"uv":[501,198],"uv_size":[-3,-4]},"down":{"uv":[501,198],"uv_size":[-3,4]}}},{"origin":[-21.6131,30.125,1.4361],"size":[0.5,0.1,0.5],"uv":{"north":{"uv":[522,218],"uv_size":[2,1]},"south":{"uv":[522,222],"uv_size":[2,1]},"up":{"uv":[520,220],"uv_size":[-2,-2]},"down":{"uv":[492,222],"uv_size":[-2,2]}}},{"origin":[-21.7131,30.125,1.7361],"size":[0.4,0.1,0.7],"pivot":[-21.3131,30.1,1.7361],"rotation":[0,-45,0],"uv":{"east":{"uv":[506,222],"uv_size":[3,1]},"up":{"uv":[516,209],"uv_size":[-2,-3]},"down":{"uv":[516,210],"uv_size":[-2,3]}}},{"origin":[-21.7131,30.125,1.0361],"size":[0.4,0.1,0.7],"pivot":[-21.3131,30.1,1.7361],"rotation":[0,45,0],"uv":{"east":{"uv":[514,222],"uv_size":[3,1]},"up":{"uv":[520,193],"uv_size":[-2,-3]},"down":{"uv":[500,218],"uv_size":[-2,3]}}},{"origin":[-19.6131,30.1,1.5361],"size":[0.2,0.15,0.3],"uv":{"north":{"uv":[526,230],"uv_size":[1,1]},"east":{"uv":[530,226],"uv_size":[1,1]},"south":{"uv":[530,230],"uv_size":[1,1]},"up":{"uv":[491,235],"uv_size":[-1,-1]},"down":{"uv":[535,190],"uv_size":[-1,1]}}}]},{"name":"scraper_2","pivot":[-21.0131,30.8,1.3361],"parent":"scraper","rotation":[0,-3,0],"cubes":[{"origin":[-22.0131,30.7,1.2361],"size":[2.1,0.15,0.15],"uv":{"north":{"uv":[490,214],"uv_size":[8,1]},"east":{"uv":[494,234],"uv_size":[1,1]},"south":{"uv":[498,214],"uv_size":[8,1]},"west":{"uv":[534,194],"uv_size":[1,1]},"up":{"uv":[522,203],"uv_size":[-8,-1]},"down":{"uv":[514,214],"uv_size":[-8,1]}}},{"origin":[-19.9131,30.725,1.2611],"size":[0.5,0.1,0.1],"uv":{"north":{"uv":[490,226],"uv_size":[2,1]},"east":{"uv":[498,234],"uv_size":[1,1]},"south":{"uv":[526,190],"uv_size":[2,1]},"up":{"uv":[496,227],"uv_size":[-2,-1]},"down":{"uv":[528,194],"uv_size":[-2,1]}}},{"origin":[-22.6131,30.725,1.2611],"size":[0.6,0.1,0.1],"uv":{"north":{"uv":[498,226],"uv_size":[2,1]},"south":{"uv":[526,198],"uv_size":[2,1]},"up":{"uv":[504,227],"uv_size":[-2,-1]},"down":{"uv":[528,202],"uv_size":[-2,1]}}},{"origin":[-23.1131,30.725,1.0111],"size":[0.3,0.1,0.6],"uv":{"north":{"uv":[534,198],"uv_size":[1,1]},"south":{"uv":[502,234],"uv_size":[1,1]},"west":{"uv":[506,226],"uv_size":[2,1]},"up":{"uv":[527,208],"uv_size":[-1,-2]},"down":{"uv":[511,226],"uv_size":[-1,2]}}},{"origin":[-22.8131,30.725,1.3611],"size":[0.3,0.1,0.4],"pivot":[-22.5131,30.725,1.3611],"rotation":[0,-50,0],"uv":{"east":{"uv":[526,210],"uv_size":[2,1]},"up":{"uv":[515,228],"uv_size":[-1,-2]},"down":{"uv":[527,214],"uv_size":[-1,2]}}},{"origin":[-22.8897,30.725,0.82538],"size":[0.3,0.1,0.4],"pivot":[-22.5131,30.725,1.1611],"rotation":[0,50,0],"uv":{"east":{"uv":[518,226],"uv_size":[2,1]},"up":{"uv":[527,220],"uv_size":[-1,-2]},"down":{"uv":[523,226],"uv_size":[-1,2]}}}]},{"name":"scraper_3","pivot":[-16.7131,33,1.5361],"parent":"scraper","rotation":[-27.06255,-14.16939,5.45418],"cubes":[{"origin":[-17.4131,33,1.4361],"size":[0.4,0.2,0.4],"uv":{"north":{"uv":[526,222],"uv_size":[2,1]},"east":{"uv":[526,226],"uv_size":[2,1]},"south":{"uv":[490,230],"uv_size":[2,1]},"up":{"uv":[524,192],"uv_size":[-2,-2]},"down":{"uv":[496,222],"uv_size":[-2,2]}}},{"origin":[-19.0131,33,1.3361],"size":[1.6,0.2,0.6],"uv":{"north":{"uv":[518,198],"uv_size":[6,1]},"east":{"uv":[530,190],"uv_size":[2,1]},"south":{"uv":[502,218],"uv_size":[6,1]},"west":{"uv":[494,230],"uv_size":[2,1]},"up":{"uv":[496,204],"uv_size":[-6,-2]},"down":{"uv":[508,194],"uv_size":[-6,2]}}},{"origin":[-20.3131,33,1.4361],"size":[1.3,0.2,0.4],"uv":{"north":{"uv":[518,206],"uv_size":[5,1]},"south":{"uv":[510,218],"uv_size":[5,1]},"west":{"uv":[530,194],"uv_size":[2,1]},"up":{"uv":[507,204],"uv_size":[-5,-2]},"down":{"uv":[495,206],"uv_size":[-5,2]}}},{"origin":[-20.7131,33.05,1.5361],"size":[0.5,0.1,0.2],"uv":{"north":{"uv":[498,230],"uv_size":[2,1]},"south":{"uv":[530,198],"uv_size":[2,1]},"up":{"uv":[504,231],"uv_size":[-2,-1]},"down":{"uv":[532,202],"uv_size":[-2,1]}}},{"origin":[-21.13324,33.08982,1.5361],"size":[0.5,0.1,0.2],"pivot":[-20.63324,33.08982,1.6361],"rotation":[0,0,-53],"uv":{"north":{"uv":[506,230],"uv_size":[2,1]},"south":{"uv":[530,206],"uv_size":[2,1]},"up":{"uv":[512,231],"uv_size":[-2,-1]},"down":{"uv":[532,210],"uv_size":[-2,1]}}},{"origin":[-21.43414,32.6905,1.5361],"size":[0.5,0.1,0.2],"uv":{"north":{"uv":[514,230],"uv_size":[2,1]},"south":{"uv":[530,214],"uv_size":[2,1]},"up":{"uv":[520,231],"uv_size":[-2,-1]},"down":{"uv":[532,218],"uv_size":[-2,1]}}},{"origin":[-22.33414,32.6905,0.7361],"size":[0.9,0.1,1],"pivot":[-21.43414,32.6905,1.6361],"rotation":[0,47,0],"uv":{"south":{"uv":[522,194],"uv_size":[4,1]},"up":{"uv":[494,194],"uv_size":[-4,-4]},"down":{"uv":[494,194],"uv_size":[-4,4]}}},{"origin":[-24.54391,32.6905,2.16741],"size":[2.6,0.1,0.2],"pivot":[-21.94391,32.6905,2.26741],"rotation":[0,-14,0],"uv":{"south":{"uv":[506,190],"uv_size":[10,1]},"west":{"uv":[534,202],"uv_size":[1,1]},"up":{"uv":[508,207],"uv_size":[-10,-1]},"down":{"uv":[516,198],"uv_size":[-10,1]}}},{"origin":[-24.54391,32.6905,0.90479],"size":[2.6,0.1,0.2],"pivot":[-21.94391,32.6905,1.00479],"rotation":[0,14,0],"uv":{"north":{"uv":[490,210],"uv_size":[10,1]},"west":{"uv":[506,234],"uv_size":[1,1]},"up":{"uv":[520,195],"uv_size":[-10,-1]},"down":{"uv":[512,210],"uv_size":[-10,1]}}},{"origin":[-22.33414,32.6905,1.5361],"size":[0.9,0.1,1],"pivot":[-21.43414,32.6905,1.6361],"rotation":[0,-47,0],"uv":{"north":{"uv":[498,222],"uv_size":[4,1]},"up":{"uv":[498,194],"uv_size":[-4,-4]},"down":{"uv":[498,194],"uv_size":[-4,4]}}},{"origin":[-22.83414,32.6905,1.1361],"size":[0.7,0.1,1],"uv":{"up":{"uv":[501,206],"uv_size":[-3,-4]},"down":{"uv":[505,198],"uv_size":[-3,4]}}},{"origin":[-23.43414,32.6905,1.2861],"size":[0.8,0.1,0.7],"uv":{"up":{"uv":[513,205],"uv_size":[-3,-3]},"down":{"uv":[513,206],"uv_size":[-3,3]}}},{"origin":[-24.43414,32.6905,1.5361],"size":[0.6,0.1,0.2],"uv":{"up":{"uv":[524,231],"uv_size":[-2,-1]},"down":{"uv":[532,222],"uv_size":[-2,1]}}},{"origin":[-23.83414,32.6905,1.4361],"size":[0.4,0.1,0.4],"uv":{"up":{"uv":[504,224],"uv_size":[-2,-2]},"down":{"uv":[524,202],"uv_size":[-2,2]}}}]},{"name":"wingL","pivot":[-1.25,24,3],"parent":"wings","rotation":[0,22.5,0]},{"name":"section1L","pivot":[-1.55,24,17],"parent":"wingL"},{"name":"thing1","pivot":[-1.75,1.3,19.2],"parent":"section1L","cubes":[{"origin":[-7.25,22.15,4.35],"size":[2.75,1.25,0.25],"pivot":[-6.25,21.4,4.9],"rotation":[-12.5,0,-22.5],"uv":{"north":{"uv":[183,130],"uv_size":[11,5]},"east":{"uv":[207,134],"uv_size":[1,5]},"south":{"uv":[183,138],"uv_size":[11,5]},"west":{"uv":[195,154],"uv_size":[1,5]},"up":{"uv":[194,151],"uv_size":[-11,-1]},"down":{"uv":[206,150],"uv_size":[-11,1]}}},{"origin":[-7.05,22.45,4.3],"size":[2.75,1.25,0],"pivot":[-6.05,21.7,4.3],"rotation":[-12.5,0,-22.5],"uv":{"east":{"uv":[183,130],"uv_size":[0,5]},"south":{"uv":[195,130],"uv_size":[11,5]},"west":{"uv":[183,130],"uv_size":[0,5]},"up":{"uv":[194,130],"uv_size":[-11,0]},"down":{"uv":[194,130],"uv_size":[-11,0]}}},{"origin":[-7.05,22.45,4.2],"size":[2.75,1.25,0],"pivot":[-6.05,21.7,4.2],"rotation":[-12.5,0,-22.5],"uv":{"east":{"uv":[183,130],"uv_size":[0,5]},"south":{"uv":[195,138],"uv_size":[11,5]},"west":{"uv":[183,130],"uv_size":[0,5]},"up":{"uv":[194,130],"uv_size":[-11,0]},"down":{"uv":[194,130],"uv_size":[-11,0]}}},{"origin":[-7.55,23.5,4.85],"size":[2.75,0.8,0.25],"pivot":[-6.55,22.3,5.6],"rotation":[4.99527,0.21782,-27.4905],"uv":{"north":{"uv":[183,146],"uv_size":[11,3]},"east":{"uv":[207,142],"uv_size":[1,3]},"south":{"uv":[195,146],"uv_size":[11,3]},"west":{"uv":[199,154],"uv_size":[1,3]},"up":{"uv":[194,155],"uv_size":[-11,-1]},"down":{"uv":[218,130],"uv_size":[-11,1]}}}]},{"name":"pianokeys1","pivot":[-4.35,23.4,4.2],"parent":"section1L","rotation":[0,-20,-35],"cubes":[{"origin":[-4.35021,22.19833,4],"size":[0.4,1.75,0.4],"pivot":[-4.25,22.3,4.2],"rotation":[0,0,-10],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[172,193],"uv_size":[-2,-2]},"down":{"uv":[176,191],"uv_size":[-2,2]}}},{"origin":[-3.65021,22.09833,4],"size":[0.4,1.75,0.4],"pivot":[-3.55,22.2,4.2],"rotation":[0,0,-17.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-6.95021,22.59833,4],"size":[0.4,1.75,0.4],"pivot":[-6.85,22.7,4.2],"rotation":[0,5,12.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-3.05021,22.09833,4],"size":[0.4,1.75,0.4],"pivot":[-2.95,22.2,4.2],"rotation":[0,0,-20],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-6.25021,22.39833,4],"size":[0.4,1.75,0.4],"pivot":[-6.15,22.5,4.2],"rotation":[0,0,5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-5.55021,22.29833,4],"size":[0.4,1.75,0.4],"pivot":[-5.45,22.4,4.2],"rotation":[0,0,-2.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-4.95021,22.29833,4],"size":[0.4,1.75,0.4],"pivot":[-4.85,22.4,4.2],"rotation":[0,0,-7.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-3.65,23.2,3.7],"size":[0.3,1.25,0.3],"pivot":[-3.55,23.2,3.8],"rotation":[0,0,-20],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[171,171],"uv_size":[-1,-1]},"down":{"uv":[175,170],"uv_size":[-1,1]}}},{"origin":[-4.15,23.2,3.7],"size":[0.3,1.25,0.3],"pivot":[-4.05,23.2,3.9],"rotation":[0,0,-15],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-4.75,23.2,3.7],"size":[0.3,1.25,0.3],"pivot":[-4.65,23.2,3.8],"rotation":[0,0,-7.5],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-5.85,23.2,3.7],"size":[0.3,1.25,0.3],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-6.45,23.2,3.7],"size":[0.3,1.25,0.3],"pivot":[-6.25,23.2,3.8],"rotation":[0,0,7.5],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}}]},{"name":"pianokeys2","pivot":[-7.85,22.7,3.2],"parent":"section1L","rotation":[0,0,-2.5],"cubes":[{"origin":[-7.95021,21.19833,3],"size":[0.4,1.75,0.4],"pivot":[-7.85,21.3,3.2],"rotation":[0,-5,0],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-7.35021,21.09833,3],"size":[0.4,1.75,0.4],"pivot":[-7.25,21.2,3.2],"rotation":[-2.50238,-2.49762,-4.89088],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-9.95021,20.59833,2.9],"size":[0.4,1.75,0.4],"pivot":[-9.85,20.7,3.2],"rotation":[0,0,-7.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-6.75021,21.09833,3],"size":[0.4,1.75,0.4],"pivot":[-6.65,21.2,3.2],"rotation":[-7.55034,-9.97848,-7.16878],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-9.45021,20.89833,2.9],"size":[0.4,1.75,0.4],"pivot":[-9.35,21,3.2],"rotation":[0,0,-12.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-8.95021,21.09833,2.9],"size":[0.4,1.75,0.4],"pivot":[-8.85,21.2,3.2],"rotation":[0,0,-10],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-8.45021,21.09833,2.9],"size":[0.4,1.75,0.4],"pivot":[-8.35,21.2,3.2],"rotation":[0,-5,-5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-7.05,21.9,2.8],"size":[0.3,1.25,0.3],"pivot":[-6.95,21.9,2.9],"rotation":[-10,0,-7],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-7.65,22.1,2.8],"size":[0.3,1.25,0.3],"pivot":[-7.55,22.1,3],"rotation":[-7.5,0,-2.5],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-8.25,21.9,2.8],"size":[0.3,1.25,0.3],"pivot":[-8.15,21.9,2.9],"rotation":[-5,0,0],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-9.25,21.7,2.7],"size":[0.3,1.25,0.3],"pivot":[-9.15,21.7,3.1],"rotation":[0,0,-10],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-9.75,21.59564,2.7001],"size":[0.3,1.25,0.3],"pivot":[-9.55,21.6,2.9],"rotation":[-2.5,0,-12.5],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}}]},{"name":"section2L","pivot":[-1.25,24,3],"parent":"wingL"},{"name":"keyboard","pivot":[-9.5,23.5,4.15],"parent":"section2L","rotation":[7.56482,2.05232,1.78746],"cubes":[{"origin":[-18.5,20.5,4.4],"size":[9,3.5,0.5],"pivot":[-9.5,23.5,3.9],"rotation":[0,0,18],"uv":{"north":{"uv":[91,130],"uv_size":[36,14]},"east":{"uv":[127,146],"uv_size":[2,14]},"south":{"uv":[91,146],"uv_size":[36,14]},"west":{"uv":[127,162],"uv_size":[2,14]},"up":{"uv":[163,132],"uv_size":[-36,-2]},"down":{"uv":[163,134],"uv_size":[-36,2]}}},{"origin":[-18.5,20.5,4.25],"size":[9,1.5,0.5],"pivot":[-9.5,23.5,3.75],"rotation":[0,0,18],"uv":{"north":{"uv":[91,162],"uv_size":[36,6]},"east":{"uv":[119,170],"uv_size":[2,6]},"west":{"uv":[123,170],"uv_size":[2,6]},"up":{"uv":[163,140],"uv_size":[-36,-2]},"down":{"uv":[163,142],"uv_size":[-36,2]}}},{"origin":[-9.8,20.7,4.65],"size":[0.3,3.5,0.5],"pivot":[-10.3,21.7,4.15],"rotation":[0,0,15],"uv":{"north":{"uv":[107,170],"uv_size":[1,14]},"east":{"uv":[91,170],"uv_size":[2,14]},"south":{"uv":[131,146],"uv_size":[1,14]},"west":{"uv":[95,170],"uv_size":[2,14]},"up":{"uv":[132,164],"uv_size":[-1,-2]},"down":{"uv":[132,166],"uv_size":[-1,2]}}},{"origin":[-19.2,23.6,4.65],"size":[0.3,3.5,0.5],"pivot":[-19.7,24.6,4.15],"rotation":[0,0,15],"uv":{"north":{"uv":[111,170],"uv_size":[1,14]},"east":{"uv":[99,170],"uv_size":[2,14]},"south":{"uv":[115,170],"uv_size":[1,14]},"west":{"uv":[103,170],"uv_size":[2,14]},"up":{"uv":[132,172],"uv_size":[-1,-2]},"down":{"uv":[136,146],"uv_size":[-1,2]}}},{"origin":[-18,21,4.6],"size":[8,2.5,0.5],"pivot":[-9.5,23.5,4.1],"rotation":[0,0,18],"uv":{"east":{"uv":[91,207],"uv_size":[2,10]},"south":{"uv":[91,187],"uv_size":[32,10]},"west":{"uv":[95,207],"uv_size":[2,10]},"up":{"uv":[123,201],"uv_size":[-32,-2]},"down":{"uv":[123,203],"uv_size":[-32,2]}}}]},{"name":"section3L","pivot":[-1.25,24,3],"parent":"wingL"},{"name":"pianokeys3","pivot":[-11.45,21.9,3.1],"parent":"section3L","rotation":[0.21865,4.99046,5.01429],"cubes":[{"origin":[-11.55021,19.89833,3],"size":[0.4,1.75,0.4],"pivot":[-11.45,20,3.2],"rotation":[0,-5,0],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-10.85021,20.09833,3],"size":[0.4,1.75,0.4],"pivot":[-10.75,20.2,3.2],"rotation":[3.348,-4.59778,-10.02537],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-13.85021,19.99833,2.9],"size":[0.4,1.75,0.4],"pivot":[-13.75,20.1,3.1],"rotation":[2.5,0,5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-10.25021,20.39833,3],"size":[0.4,1.75,0.4],"pivot":[-10.15,20.5,3.2],"rotation":[-1.39387,-5.20748,-12.54536],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-13.25021,19.89833,2.9],"size":[0.4,1.75,0.4],"pivot":[-13.15,20,3.1],"rotation":[0,0,2.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-12.65021,19.89833,2.9],"size":[0.4,1.75,0.4],"pivot":[-12.55,20,3.1],"rotation":[-2.5,0,0],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-12.15021,19.89833,3],"size":[0.4,1.75,0.4],"pivot":[-12.05,20,3.2],"rotation":[-5,0,2.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-10.65,21.1,2.8],"size":[0.3,1.25,0.3],"pivot":[-10.55,21.1,2.9],"rotation":[-4.34574,-4.95712,-7.52832],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-11.15,20.9,2.7],"size":[0.3,1.25,0.3],"pivot":[-11.05,20.9,2.9],"rotation":[-2.28135,-4.99523,-2.50954],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-11.75,20.9,2.7],"size":[0.3,1.25,0.3],"pivot":[-11.65,20.9,2.8],"rotation":[-2.5,0,0],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-12.75,20.9,2.7],"size":[0.3,1.25,0.3],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-13.45,20.9,2.7],"size":[0.3,1.25,0.3],"pivot":[-13.25,20.9,2.8],"rotation":[-2.5,0,5],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}}]},{"name":"pianokeys4","pivot":[-15.45,22,3.5],"parent":"section3L","rotation":[0,7.5,27.5],"cubes":[{"origin":[-15.45021,20.79833,3.3],"size":[0.4,1.75,0.4],"pivot":[-15.35,20.9,3.5],"rotation":[-4.99527,-0.21782,-2.4905],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-14.65021,20.89833,3.3],"size":[0.4,1.75,0.4],"pivot":[-14.55,21,3.5],"rotation":[-2.49762,-0.10901,-7.49762],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-18.25021,20.99833,3.3],"size":[0.4,1.75,0.4],"pivot":[-18.15,21.1,3.5],"rotation":[0,0,17.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-13.95021,20.89833,3.3],"size":[0.4,1.75,0.4],"pivot":[-13.85,21,3.5],"rotation":[0,0,-10],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-17.45021,20.89833,3.4],"size":[0.4,1.75,0.4],"pivot":[-17.35,21,3.6],"rotation":[5,0,10],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-16.75021,20.79833,3.4],"size":[0.4,1.75,0.4],"pivot":[-16.65,20.9,3.6],"rotation":[2.5,0,2.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-16.15021,20.79833,3.4],"size":[0.4,1.75,0.4],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-14.45,21.8,3.2],"size":[0.3,1.25,0.3],"pivot":[-14.35,21.8,3.3],"rotation":[5,0,-7.5],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-15.05,21.8,3.2],"size":[0.3,1.25,0.3],"pivot":[-14.95,21.8,3.4],"rotation":[2.5,0,-5],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-15.75,21.8,3.1],"size":[0.3,1.25,0.3],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-16.95,21.8,3.1],"size":[0.3,1.25,0.3],"pivot":[-16.85,21.8,3.4],"rotation":[-2.5,0,7.5],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-17.55,21.8,3.1],"size":[0.3,1.25,0.3],"pivot":[-17.35,21.8,3.2],"rotation":[-2.5,0,15],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}}]},{"name":"section4L","pivot":[-1.25,24,3],"parent":"wingL"},{"name":"pianokeys5","pivot":[-17.25,25.3,3.9],"parent":"section4L","rotation":[0,5,57.5],"cubes":[{"origin":[-17.45021,22.69833,3.7],"size":[0.4,1.75,0.4],"pivot":[-17.35,22.8,3.9],"rotation":[0,0,5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-16.85021,22.79833,3.8],"size":[0.4,1.75,0.4],"pivot":[-16.75,22.9,4],"rotation":[5,0,0],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-19.75021,23.19833,3.8],"size":[0.4,1.75,0.4],"pivot":[-19.65,23.3,4],"rotation":[0,0,12.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-16.15021,22.59833,3.8],"size":[0.4,1.75,0.4],"pivot":[-16.05,22.7,4],"rotation":[-4.98107,-0.43523,-4.98107],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-19.25021,22.99833,3.8],"size":[0.4,1.75,0.4],"pivot":[-19.15,23.1,4],"rotation":[0,0,17.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-18.65021,22.59833,3.7],"size":[0.4,1.75,0.4],"pivot":[-18.55,22.7,3.9],"rotation":[-2.5,0,15],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-17.95021,22.59833,3.8],"size":[0.4,1.75,0.4],"pivot":[-17.85,22.7,4],"rotation":[2.5,0,5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-16.45,23.5,3.6],"size":[0.3,1.25,0.3],"pivot":[-16.35,23.5,3.7],"rotation":[0,0,-5],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-17.05,23.5,3.6],"size":[0.3,1.25,0.3],"pivot":[-16.95,23.5,3.8],"rotation":[5,0,0],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-17.55,23.5,3.5],"size":[0.3,1.25,0.3],"pivot":[-17.45,23.5,3.6],"rotation":[0,0,2.5],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-18.65,23.8,3.5],"size":[0.3,1.25,0.3],"pivot":[-18.55,23.8,3.8],"rotation":[-5,0,12.5],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-19.25,24,3.5],"size":[0.3,1.25,0.3],"pivot":[-19.05,24,3.6],"rotation":[-5,0,15],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}}]},{"name":"pianokeys6","pivot":[-19.15,27,4.2],"parent":"section4L","rotation":[0,0,72.5],"cubes":[{"origin":[-20.75021,25.39833,4],"size":[0.4,1.75,0.4],"pivot":[-20.65,25.5,4.2],"rotation":[-2.5,0,12.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-19.95021,25.29833,4],"size":[0.4,1.75,0.4],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-23.35021,25.39833,4],"size":[0.4,1.75,0.4],"pivot":[-23.25,25.5,4.2],"rotation":[2.5,0,25],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-19.35021,25.59833,4.1],"size":[0.4,1.75,0.4],"pivot":[-19.25,25.7,4.3],"rotation":[5,0,0],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-22.65021,25.39833,4],"size":[0.4,1.75,0.4],"pivot":[-22.55,25.5,4.2],"rotation":[-2.5,0,17.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-21.95021,25.49833,4],"size":[0.4,1.75,0.4],"pivot":[-21.85,25.6,4.2],"rotation":[0,0,15],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-21.35021,25.49833,4.1],"size":[0.4,1.75,0.4],"pivot":[-21.25,25.6,4.3],"rotation":[2.5,0,12.5],"uv":{"north":{"uv":[166,183],"uv_size":[2,7]},"east":{"uv":[170,183],"uv_size":[2,7]},"south":{"uv":[166,191],"uv_size":[2,7]},"west":{"uv":[174,183],"uv_size":[2,7]},"up":{"uv":[170,191],"uv_size":[2,2]},"down":{"uv":[174,191],"uv_size":[2,2]}}},{"origin":[-20.95,26.35436,3.8001],"size":[0.3,1.25,0.3],"pivot":[-20.85,26.1,4],"rotation":[2.5,0,10],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-19.65,26.45,3.8],"size":[0.3,1.25,0.3],"pivot":[-19.55,26.2,4],"rotation":[0,0,2.5],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}},{"origin":[-20.35,26.35,3.8],"size":[0.3,1.25,0.3],"pivot":[-20.25,26.1,3.9],"rotation":[-2.5,0,10],"uv":{"north":{"uv":[166,162],"uv_size":[1,5]},"east":{"uv":[170,162],"uv_size":[1,5]},"south":{"uv":[166,170],"uv_size":[1,5]},"west":{"uv":[174,162],"uv_size":[1,5]},"up":{"uv":[170,170],"uv_size":[1,1]},"down":{"uv":[174,170],"uv_size":[1,1]}}}]},{"name":"otamatone","pivot":[1.25,-0.9,22.7],"parent":"section4L","cubes":[{"origin":[-18.05,27.6,2.8],"size":[1.5,1.5,1.5],"pivot":[-17.3,28.35,3.6],"rotation":[0,0,-37.5],"uv":{"north":{"uv":[146,178],"uv_size":[6,6]},"east":{"uv":[146,186],"uv_size":[6,6]},"south":{"uv":[146,194],"uv_size":[6,6]},"west":{"uv":[130,202],"uv_size":[6,6]},"up":{"uv":[160,184],"uv_size":[-6,-6]},"down":{"uv":[144,202],"uv_size":[-6,6]}}},{"origin":[-18.77827,28.54627,3.3],"size":[0.5,5.5,0.5],"pivot":[-18.02827,29.29627,3.1],"rotation":[0,0,-37.5],"uv":{"north":{"uv":[130,178],"uv_size":[2,22]},"east":{"uv":[134,178],"uv_size":[2,22]},"south":{"uv":[138,178],"uv_size":[2,22]},"west":{"uv":[142,178],"uv_size":[2,22]},"up":{"uv":[152,204],"uv_size":[-2,-2]},"down":{"uv":[156,198],"uv_size":[-2,2]}}},{"origin":[-22.75,31.25,3.3],"size":[0.3,0.75,0.5],"pivot":[-22,32,3.1],"rotation":[0,0,177.5],"uv":{"north":{"uv":[154,202],"uv_size":[1,3]},"east":{"uv":[154,186],"uv_size":[2,3]},"south":{"uv":[158,186],"uv_size":[1,3]},"west":{"uv":[154,190],"uv_size":[2,3]},"up":{"uv":[159,196],"uv_size":[-1,-2]},"down":{"uv":[151,206],"uv_size":[-1,2]}}},{"origin":[-22.45177,31.44042,3.4],"size":[0.25,0.5,0.3],"pivot":[-21.95177,31.94042,3],"rotation":[0,0,-142.5],"uv":{"north":{"uv":[158,198],"uv_size":[1,2]},"east":{"uv":[154,206],"uv_size":[1,2]},"south":{"uv":[158,202],"uv_size":[1,2]},"west":{"uv":[158,206],"uv_size":[1,2]},"up":{"uv":[143,211],"uv_size":[-1,-1]},"down":{"uv":[163,190],"uv_size":[-1,1]}}},{"origin":[-22.35,30.75,3.3],"size":[0.3,0.75,0.5],"pivot":[-21.6,31.5,3.1],"rotation":[0,0,177.5],"uv":{"north":{"uv":[158,190],"uv_size":[1,3]},"east":{"uv":[146,202],"uv_size":[2,3]},"south":{"uv":[146,206],"uv_size":[1,3]},"west":{"uv":[154,194],"uv_size":[2,3]},"up":{"uv":[131,212],"uv_size":[-1,-2]},"down":{"uv":[163,178],"uv_size":[-1,2]}}},{"origin":[-22.05177,30.94042,3.4],"size":[0.25,0.5,0.3],"pivot":[-21.55177,31.44042,3.1],"rotation":[0,0,-142.5],"uv":{"north":{"uv":[134,210],"uv_size":[1,2]},"east":{"uv":[162,182],"uv_size":[1,2]},"south":{"uv":[138,210],"uv_size":[1,2]},"west":{"uv":[162,186],"uv_size":[1,2]},"up":{"uv":[147,211],"uv_size":[-1,-1]},"down":{"uv":[163,194],"uv_size":[-1,1]}}}]},{"name":"section5L","pivot":[-1.25,24,3],"parent":"wingL"},{"name":"violin smooth might be better","pivot":[-7.15,25.1,4.1],"parent":"section5L","rotation":[-40.00632,-21.76659,12.53611],"cubes":[{"origin":[-9.65,23.8,4.2],"size":[2.5,3,1],"uv":{"north":{"uv":[221,130],"uv_size":[10,12]},"east":{"uv":[241,130],"uv_size":[4,12]},"south":{"uv":[221,142],"uv_size":[10,12]},"west":{"uv":[241,142],"uv_size":[4,12]},"up":{"uv":[255,134],"uv_size":[-10,-4]},"down":{"uv":[255,134],"uv_size":[-10,4]}}},{"origin":[-7.65,23.8,4.2],"size":[0.5,0.75,1],"uv":{"west":{"uv":[225,170],"uv_size":[4,3]},"up":{"uv":[243,174],"uv_size":[-2,-4]}}},{"origin":[-7.65,26.05,4.2],"size":[0.5,0.75,1],"uv":{"west":{"uv":[229,170],"uv_size":[4,3]},"down":{"uv":[247,170],"uv_size":[-2,4]}}},{"origin":[-12.65,24.05,4.2],"size":[2,2.5,1],"uv":{"north":{"uv":[233,130],"uv_size":[8,10]},"east":{"uv":[245,138],"uv_size":[4,10]},"south":{"uv":[233,142],"uv_size":[8,10]},"west":{"uv":[245,150],"uv_size":[4,10]},"up":{"uv":[229,162],"uv_size":[-8,-4]},"down":{"uv":[237,158],"uv_size":[-8,4]}}},{"origin":[-12.65,24.05,4.2],"size":[0.5,0.5,1],"uv":{"east":{"uv":[249,170],"uv_size":[4,2]},"up":{"uv":[263,166],"uv_size":[-2,-4]}}},{"origin":[-12.65,26.05,4.2],"size":[0.5,0.5,1],"uv":{"east":{"uv":[233,170],"uv_size":[4,2]},"down":{"uv":[239,170],"uv_size":[-2,4]}}},{"origin":[-10.65,24.3,4.2],"size":[1,2,1],"uv":{"north":{"uv":[249,138],"uv_size":[4,8]},"east":{"uv":[237,158],"uv_size":[4,8]},"south":{"uv":[249,146],"uv_size":[4,8]},"west":{"uv":[241,158],"uv_size":[4,8]},"up":{"uv":[261,170],"uv_size":[-4,-4]},"down":{"uv":[225,170],"uv_size":[-4,4]}}},{"origin":[-9.55,25.05,3.95],"size":[-0.1,0.5,0.25],"uv":{"north":{"uv":[265,174],"uv_size":[1,2]},"east":{"uv":[221,178],"uv_size":[1,2]},"south":{"uv":[225,178],"uv_size":[1,2]},"west":{"uv":[229,178],"uv_size":[1,2]},"up":{"uv":[234,179],"uv_size":[-1,-1]},"down":{"uv":[238,178],"uv_size":[-1,1]}}},{"origin":[-15.25,25.05,4.2],"size":[3.5,0.5,0.5],"uv":{"north":{"uv":[221,162],"uv_size":[14,2]},"east":{"uv":[229,174],"uv_size":[2,2]},"south":{"uv":[253,146],"uv_size":[14,2]},"west":{"uv":[233,174],"uv_size":[2,2]},"up":{"uv":[267,152],"uv_size":[-14,-2]},"down":{"uv":[259,162],"uv_size":[-14,2]}}},{"origin":[-15.15,25.05,4.2],"size":[3.5,0.5,0.5],"pivot":[-15.15,25.05,4.7],"rotation":[0,-5,0],"uv":{"north":{"uv":[221,166],"uv_size":[14,2]},"east":{"uv":[237,174],"uv_size":[2,2]},"south":{"uv":[257,130],"uv_size":[14,2]},"west":{"uv":[241,174],"uv_size":[2,2]},"up":{"uv":[271,136],"uv_size":[-14,-2]},"down":{"uv":[251,166],"uv_size":[-14,2]}}},{"origin":[-15.15,25.05,4.2],"size":[5.5,0.5,0],"pivot":[-15.15,25.05,4.2],"rotation":[0,2.5,0],"uv":{"north":{"uv":[221,154],"uv_size":[22,2]},"east":{"uv":[221,130],"uv_size":[0,2]},"west":{"uv":[221,130],"uv_size":[0,2]},"up":{"uv":[243,130],"uv_size":[-22,0]},"down":{"uv":[243,130],"uv_size":[-22,0]}}},{"origin":[-9.65,25.05,3.95],"size":[1,0.5,0],"pivot":[-9.65,25.05,4],"rotation":[0,-12.5,0],"uv":{"north":{"uv":[257,170],"uv_size":[4,2]},"east":{"uv":[221,130],"uv_size":[0,2]},"west":{"uv":[221,130],"uv_size":[0,2]},"up":{"uv":[225,130],"uv_size":[-4,0]},"down":{"uv":[225,130],"uv_size":[-4,0]}}},{"origin":[-16.2,25.05,4.2],"size":[1,0.5,0.5],"pivot":[-15.25,25,4.2],"rotation":[0,17.5,0],"uv":{"north":{"uv":[261,166],"uv_size":[4,2]},"east":{"uv":[245,174],"uv_size":[2,2]},"south":{"uv":[261,170],"uv_size":[4,2]},"west":{"uv":[249,174],"uv_size":[2,2]},"up":{"uv":[225,176],"uv_size":[-4,-2]},"down":{"uv":[229,174],"uv_size":[-4,2]}}},{"origin":[-16.3,24.55,4.4],"size":[1,1.5,0],"pivot":[-15.25,24.5,3.9],"rotation":[0,17.5,0],"uv":{"north":{"uv":[253,166],"uv_size":[4,6]},"east":{"uv":[221,130],"uv_size":[0,6]},"west":{"uv":[221,130],"uv_size":[0,6]},"up":{"uv":[225,130],"uv_size":[-4,0]},"down":{"uv":[225,130],"uv_size":[-4,0]}}},{"origin":[-16.5,25.05,4.5],"size":[0.5,0.5,0.5],"pivot":[-16.05,25,4.5],"rotation":[0,-122.5,0],"uv":{"north":{"uv":[253,174],"uv_size":[2,2]},"east":{"uv":[265,162],"uv_size":[2,2]},"south":{"uv":[257,174],"uv_size":[2,2]},"west":{"uv":[265,166],"uv_size":[2,2]},"up":{"uv":[263,176],"uv_size":[-2,-2]},"down":{"uv":[267,170],"uv_size":[-2,2]}}},{"origin":[-16.55,25.5,7.15],"size":[7.5,0.35,0.35],"pivot":[-16.45,26.65,8],"rotation":[-7.13764,6.84077,22.56064],"uv":{"north":{"uv":[249,154],"uv_size":[30,1]},"east":{"uv":[269,146],"uv_size":[1,1]},"south":{"uv":[249,158],"uv_size":[30,1]},"west":{"uv":[241,178],"uv_size":[1,1]},"up":{"uv":[283,139],"uv_size":[-30,-1]},"down":{"uv":[283,142],"uv_size":[-30,1]}}},{"origin":[-16.55,25.5,7.35],"size":[7.5,0.35,0.35],"pivot":[-16.45,26.65,8.2],"rotation":[-7.13764,6.84077,22.56064],"uv":{"north":{"uv":[249,155],"uv_size":[30,1]}}}]},{"name":"paper","pivot":[-1.55,24,17],"parent":"section5L","cubes":[{"origin":[-11.55,27.8,4.7],"size":[3,2,0.1],"pivot":[-9.55,27.8,5.7],"rotation":[46.53148,-2.91759,35.85109],"uv":{"north":{"uv":[166,130],"uv_size":[12,8]},"east":{"uv":[178,140],"uv_size":[1,8]},"south":{"uv":[166,140],"uv_size":[12,8]},"west":{"uv":[166,148],"uv_size":[1,8]},"up":{"uv":[178,139],"uv_size":[-12,-1]},"down":{"uv":[178,139],"uv_size":[-12,1]}}},{"origin":[-11.05,25.7,5.4],"size":[3,2,0.1],"pivot":[-9.25,27.2,5],"rotation":[37.53148,-2.91759,35.85109],"uv":{"north":{"uv":[166,130],"uv_size":[12,8]},"east":{"uv":[178,140],"uv_size":[1,8]},"south":{"uv":[166,140],"uv_size":[12,8]},"west":{"uv":[166,148],"uv_size":[1,8]},"up":{"uv":[178,139],"uv_size":[-12,-1]},"down":{"uv":[178,139],"uv_size":[-12,1]}}},{"origin":[-14.75,25.3,3.6],"size":[3,2,0.1],"pivot":[-12.75,25.3,4.6],"rotation":[-10.2721,33.6441,64.3868],"uv":{"north":{"uv":[166,130],"uv_size":[12,8]},"east":{"uv":[178,140],"uv_size":[1,8]},"south":{"uv":[166,140],"uv_size":[12,8]},"west":{"uv":[166,148],"uv_size":[1,8]},"up":{"uv":[178,139],"uv_size":[-12,-1]},"down":{"uv":[178,139],"uv_size":[-12,1]}}},{"origin":[-11.65,23.5,4.4],"size":[3,2,0.1],"pivot":[-9.65,23.5,5.4],"rotation":[-32.5,0,25],"uv":{"north":{"uv":[166,130],"uv_size":[12,8]},"east":{"uv":[178,140],"uv_size":[1,8]},"south":{"uv":[166,140],"uv_size":[12,8]},"west":{"uv":[166,148],"uv_size":[1,8]},"up":{"uv":[178,139],"uv_size":[-12,-1]},"down":{"uv":[178,139],"uv_size":[-12,1]}}},{"origin":[-8.05,24.4,4],"size":[3,2,0.1],"pivot":[-6.05,24.4,5],"rotation":[-45.4433,32.4649,-12.2425],"uv":{"north":{"uv":[166,130],"uv_size":[12,8]},"east":{"uv":[178,140],"uv_size":[1,8]},"south":{"uv":[166,140],"uv_size":[12,8]},"west":{"uv":[166,148],"uv_size":[1,8]},"up":{"uv":[178,139],"uv_size":[-12,-1]},"down":{"uv":[178,139],"uv_size":[-12,1]}}},{"origin":[-17.55,28.6,3.4],"size":[3,2,0.1],"pivot":[-15.55,28.6,4.4],"rotation":[43.129,-27.0681,-113.0866],"uv":{"north":{"uv":[166,130],"uv_size":[12,8]},"east":{"uv":[178,140],"uv_size":[1,8]},"south":{"uv":[166,140],"uv_size":[12,8]},"west":{"uv":[166,148],"uv_size":[1,8]},"up":{"uv":[178,139],"uv_size":[-12,-1]},"down":{"uv":[178,139],"uv_size":[-12,1]}}},{"origin":[-14.65,27.5,4.5],"size":[3,2,0.1],"pivot":[-12.65,27.5,5.5],"rotation":[7.569,-30.1081,-96.341],"uv":{"north":{"uv":[166,130],"uv_size":[12,8]},"east":{"uv":[178,140],"uv_size":[1,8]},"south":{"uv":[166,140],"uv_size":[12,8]},"west":{"uv":[166,148],"uv_size":[1,8]},"up":{"uv":[178,139],"uv_size":[-12,-1]},"down":{"uv":[178,139],"uv_size":[-12,1]}}}]},{"name":"section6L","pivot":[-15.05,31.3,2.7],"parent":"wingL"},{"name":"guitar","pivot":[-15.05,31.3,2.7],"parent":"section6L","rotation":[-57.05757,8.68325,22.02656],"cubes":[{"origin":[-14.05,28.8,2.7],"size":[3,5,1],"uv":{"north":{"uv":[0,130],"uv_size":[12,20]},"east":{"uv":[24,158],"uv_size":[4,20]},"south":{"uv":[12,130],"uv_size":[12,20]},"west":{"uv":[28,158],"uv_size":[4,20]},"up":{"uv":[52,166],"uv_size":[-12,-4]},"down":{"uv":[52,166],"uv_size":[-12,4]}}},{"origin":[-18.8,28.8,2.7],"size":[3.25,1,1],"uv":{"north":{"uv":[36,138],"uv_size":[13,4]},"east":{"uv":[52,166],"uv_size":[4,4]},"south":{"uv":[36,142],"uv_size":[13,4]},"west":{"uv":[40,182],"uv_size":[4,4]},"up":{"uv":[49,150],"uv_size":[-13,-4]},"down":{"uv":[53,158],"uv_size":[-13,4]}}},{"origin":[-17.05,29.3,2.7],"size":[3,4,1],"uv":{"north":{"uv":[0,158],"uv_size":[12,16]},"east":{"uv":[32,158],"uv_size":[4,16]},"south":{"uv":[12,158],"uv_size":[12,16]},"west":{"uv":[36,158],"uv_size":[4,16]},"up":{"uv":[52,174],"uv_size":[-12,-4]},"down":{"uv":[12,174],"uv_size":[-12,4]}}},{"origin":[-17.55,29.5,2.7],"size":[1.5,1,1],"uv":{"north":{"uv":[52,142],"uv_size":[6,4]},"east":{"uv":[52,170],"uv_size":[4,4]},"south":{"uv":[16,182],"uv_size":[6,4]},"west":{"uv":[44,182],"uv_size":[4,4]},"up":{"uv":[58,150],"uv_size":[-6,-4]},"down":{"uv":[30,182],"uv_size":[-6,4]}}},{"origin":[-17.55,32.8,2.7],"size":[2,1,1],"uv":{"north":{"uv":[48,178],"uv_size":[8,4]},"east":{"uv":[48,182],"uv_size":[4,4]},"south":{"uv":[0,182],"uv_size":[8,4]},"west":{"uv":[52,182],"uv_size":[4,4]},"up":{"uv":[16,186],"uv_size":[-8,-4]},"down":{"uv":[60,138],"uv_size":[-8,4]}}},{"origin":[-16.8,30.3,2.6],"size":[2.75,2.75,0.1],"uv":{"north":{"uv":[24,138],"uv_size":[11,11]},"east":{"uv":[24,186],"uv_size":[1,11]},"south":{"uv":[24,138],"uv_size":[11,11]},"west":{"uv":[48,186],"uv_size":[1,11]},"up":{"uv":[67,179],"uv_size":[-11,-1]},"down":{"uv":[63,186],"uv_size":[-11,1]}}},{"origin":[-17.3,29.7,2.6],"size":[1.5,0.6,0.1],"uv":{"north":{"uv":[0,186],"uv_size":[6,2]},"east":{"uv":[0,202],"uv_size":[1,2]},"south":{"uv":[0,186],"uv_size":[6,2]},"west":{"uv":[72,130],"uv_size":[1,2]},"up":{"uv":[66,155],"uv_size":[-6,-1]},"down":{"uv":[34,190],"uv_size":[-6,1]}}},{"origin":[-17.8,29.1,2.6],"size":[1.5,0.6,0.1],"uv":{"north":{"uv":[0,186],"uv_size":[6,2]},"east":{"uv":[0,202],"uv_size":[1,2]},"south":{"uv":[0,186],"uv_size":[6,2]},"west":{"uv":[72,130],"uv_size":[1,2]},"up":{"uv":[66,155],"uv_size":[-6,-1]},"down":{"uv":[34,190],"uv_size":[-6,1]}}},{"origin":[-26.3,30.8,2.45],"size":[12,1.25,0.25],"uv":{"north":{"uv":[0,150],"uv_size":[48,5]},"east":{"uv":[64,146],"uv_size":[1,5]},"south":{"uv":[24,130],"uv_size":[48,5]},"west":{"uv":[28,194],"uv_size":[1,5]},"up":{"uv":[80,175],"uv_size":[-48,-1]},"down":{"uv":[48,178],"uv_size":[-48,1]}}},{"origin":[-28.19778,30.62354,2.45],"size":[1.5,0.75,0.25],"uv":{"north":{"uv":[32,182],"uv_size":[6,3]},"east":{"uv":[68,182],"uv_size":[1,3]},"south":{"uv":[52,162],"uv_size":[6,3]},"west":{"uv":[56,198],"uv_size":[1,3]},"up":{"uv":[66,159],"uv_size":[-6,-1]},"down":{"uv":[66,162],"uv_size":[-6,1]}}},{"origin":[-26.8,30.8,2.45],"size":[0.5,1,0.25],"uv":{"north":{"uv":[56,182],"uv_size":[2,4]},"east":{"uv":[64,166],"uv_size":[1,4]},"south":{"uv":[0,190],"uv_size":[2,4]},"west":{"uv":[64,170],"uv_size":[1,4]},"up":{"uv":[6,203],"uv_size":[-2,-1]},"down":{"uv":[74,134],"uv_size":[-2,1]}}},{"origin":[-29.28194,31.60147,2.44],"size":[3,0.75,0.25],"pivot":[-26.28194,32.10147,2.71],"rotation":[0,0,-22.5],"uv":{"north":{"uv":[12,174],"uv_size":[12,3]},"east":{"uv":[68,186],"uv_size":[1,3]},"south":{"uv":[48,150],"uv_size":[12,3]},"west":{"uv":[60,198],"uv_size":[1,3]},"up":{"uv":[28,187],"uv_size":[-12,-1]},"down":{"uv":[40,186],"uv_size":[-12,1]}}},{"origin":[-29.14925,30.43439,2.45],"size":[1,0.75,0.25],"uv":{"north":{"uv":[8,186],"uv_size":[4,3]},"east":{"uv":[68,178],"uv_size":[1,3]},"south":{"uv":[12,186],"uv_size":[4,3]},"west":{"uv":[52,198],"uv_size":[1,3]},"up":{"uv":[64,183],"uv_size":[-4,-1]},"down":{"uv":[36,194],"uv_size":[-4,1]}}},{"origin":[-29.56896,32.29438,2.6],"size":[3,0.75,0],"pivot":[-26.56896,32.79438,2.6],"rotation":[0,0,-22.5],"uv":{"north":{"uv":[48,154],"uv_size":[12,3]},"east":{"uv":[0,130],"uv_size":[0,3]},"west":{"uv":[0,130],"uv_size":[0,3]},"up":{"uv":[12,130],"uv_size":[-12,0]},"down":{"uv":[12,130],"uv_size":[-12,0]}}},{"origin":[-12.85,30.5,1.8],"size":[0.4,0.4,0.4],"uv":{"north":{"uv":[64,182],"uv_size":[2,2]},"east":{"uv":[64,186],"uv_size":[2,2]},"south":{"uv":[64,190],"uv_size":[2,2]},"west":{"uv":[64,194],"uv_size":[2,2]},"up":{"uv":[6,200],"uv_size":[-2,-2]},"down":{"uv":[10,198],"uv_size":[-2,2]}}},{"origin":[-12.85,29.3,2.1],"size":[0.4,0.4,0.4],"uv":{"north":{"uv":[68,138],"uv_size":[2,2]},"east":{"uv":[12,198],"uv_size":[2,2]},"south":{"uv":[68,142],"uv_size":[2,2]},"west":{"uv":[16,198],"uv_size":[2,2]},"up":{"uv":[70,148],"uv_size":[-2,-2]},"down":{"uv":[22,198],"uv_size":[-2,2]}}},{"origin":[-12.05,30,2.3],"size":[0.4,0.4,0.4],"uv":{"north":{"uv":[68,150],"uv_size":[2,2]},"east":{"uv":[24,198],"uv_size":[2,2]},"south":{"uv":[68,154],"uv_size":[2,2]},"west":{"uv":[68,158],"uv_size":[2,2]},"up":{"uv":[34,200],"uv_size":[-2,-2]},"down":{"uv":[70,162],"uv_size":[-2,2]}}},{"origin":[-13.65,30,1.6],"size":[0.4,0.4,0.4],"uv":{"north":{"uv":[36,198],"uv_size":[2,2]},"east":{"uv":[68,166],"uv_size":[2,2]},"south":{"uv":[40,198],"uv_size":[2,2]},"west":{"uv":[68,170],"uv_size":[2,2]},"up":{"uv":[46,200],"uv_size":[-2,-2]},"down":{"uv":[50,198],"uv_size":[-2,2]}}},{"origin":[-11.8,28.8,2.7],"size":[0.75,0.75,1],"uv":{"west":{"uv":[56,158],"uv_size":[4,3]},"up":{"uv":[59,170],"uv_size":[-3,-4]}}},{"origin":[-11.8,33.05,2.7],"size":[0.75,0.75,1],"uv":{"west":{"uv":[40,186],"uv_size":[4,3]},"down":{"uv":[59,170],"uv_size":[-3,4]}}},{"origin":[-10.65,30.6,2.1],"size":[0.25,2,0.25],"pivot":[-9.65,30.6,3.1],"rotation":[0,0,-10],"uv":{"north":{"uv":[4,190],"uv_size":[1,8]},"east":{"uv":[8,190],"uv_size":[1,8]},"south":{"uv":[60,138],"uv_size":[1,8]},"west":{"uv":[12,190],"uv_size":[1,8]},"up":{"uv":[9,203],"uv_size":[-1,-1]},"down":{"uv":[73,138],"uv_size":[-1,1]}}},{"origin":[-14.0077,32.81747,2.1],"size":[0.25,1.75,0.25],"pivot":[-13.9,32.7,2.2],"rotation":[0,0,-82.5],"uv":{"north":{"uv":[16,190],"uv_size":[1,7]},"east":{"uv":[60,146],"uv_size":[1,7]},"south":{"uv":[20,190],"uv_size":[1,7]},"west":{"uv":[24,190],"uv_size":[1,7]},"up":{"uv":[13,203],"uv_size":[-1,-1]},"down":{"uv":[73,142],"uv_size":[-1,1]}}},{"origin":[-14.7244,34.35408,2.1],"size":[0.25,0.75,0.25],"pivot":[-14.6167,33.23661,2.2],"rotation":[0,0,-105],"uv":{"north":{"uv":[68,190],"uv_size":[1,3]},"east":{"uv":[64,198],"uv_size":[1,3]},"south":{"uv":[68,194],"uv_size":[1,3]},"west":{"uv":[68,198],"uv_size":[1,3]},"up":{"uv":[17,203],"uv_size":[-1,-1]},"down":{"uv":[73,146],"uv_size":[-1,1]}}},{"origin":[-11.29024,31.55935,2.00631],"size":[0.25,1.5,0.25],"pivot":[-10.29024,31.55935,3.00631],"rotation":[-25,0,27.5],"uv":{"north":{"uv":[36,190],"uv_size":[1,6]},"east":{"uv":[60,166],"uv_size":[1,6]},"south":{"uv":[40,190],"uv_size":[1,6]},"west":{"uv":[52,190],"uv_size":[1,6]},"up":{"uv":[21,203],"uv_size":[-1,-1]},"down":{"uv":[73,150],"uv_size":[-1,1]}}},{"origin":[-10.27495,32.02609,2.76476],"size":[0.25,1.5,0.25],"pivot":[-10.19845,33.6339,3.01502],"rotation":[12.43473,37.54487,79.3745],"uv":{"north":{"uv":[56,190],"uv_size":[1,6]},"east":{"uv":[60,190],"uv_size":[1,6]},"south":{"uv":[0,194],"uv_size":[1,6]},"west":{"uv":[64,138],"uv_size":[1,6]},"up":{"uv":[25,203],"uv_size":[-1,-1]},"down":{"uv":[73,154],"uv_size":[-1,1]}}},{"origin":[-15.15,30.5,3.7],"size":[2.5,1.75,0.1],"uv":{"east":{"uv":[87,130],"uv_size":[1,7]},"south":{"uv":[75,130],"uv_size":[10,7]},"west":{"uv":[87,138],"uv_size":[1,7]},"up":{"uv":[85,139],"uv_size":[-10,-1]},"down":{"uv":[85,142],"uv_size":[-10,1]}}}]},{"name":"band_thing","pivot":[-27.45,25.9,4.3],"parent":"guitar","rotation":[0,0,-12.5],"cubes":[{"origin":[-14.55365,28.89591,4.00404],"size":[2,1,0.2],"pivot":[-13.55365,28.89591,4.20404],"rotation":[1.14465,2.86552,-19.9968],"uv":{"north":{"uv":[75,147],"uv_size":[8,4]},"east":{"uv":[83,151],"uv_size":[1,4]},"south":{"uv":[75,151],"uv_size":[8,4]},"west":{"uv":[83,147],"uv_size":[1,4]},"up":{"uv":[75,155],"uv_size":[8,1]},"down":{"uv":[75,156],"uv_size":[8,1]}}},{"origin":[-16.26151,28.14523,4.04623],"size":[2,1,0.2],"pivot":[-15.26151,28.14523,4.24623],"rotation":[-3.46444,4.1531,-27.55008],"uv":{"north":{"uv":[75,147],"uv_size":[8,4]},"east":{"uv":[83,151],"uv_size":[1,4]},"south":{"uv":[75,151],"uv_size":[8,4]},"west":{"uv":[83,147],"uv_size":[1,4]},"up":{"uv":[75,155],"uv_size":[8,1]},"down":{"uv":[75,156],"uv_size":[8,1]}}},{"origin":[-18.05195,27.26228,4.15138],"size":[2,1,0.2],"pivot":[-17.05195,27.26228,4.35138],"rotation":[-2.29795,1.87546,-24.95298],"uv":{"north":{"uv":[75,147],"uv_size":[8,4]},"east":{"uv":[83,151],"uv_size":[1,4]},"south":{"uv":[75,151],"uv_size":[8,4]},"west":{"uv":[83,147],"uv_size":[1,4]},"up":{"uv":[75,155],"uv_size":[8,1]},"down":{"uv":[75,156],"uv_size":[8,1]}}},{"origin":[-19.91179,26.54385,4.13468],"size":[2,1,0.2],"pivot":[-18.91179,26.54385,4.33468],"rotation":[-1.81633,-2.83313,-17.28595],"uv":{"north":{"uv":[75,147],"uv_size":[8,4]},"east":{"uv":[83,151],"uv_size":[1,4]},"south":{"uv":[75,151],"uv_size":[8,4]},"west":{"uv":[83,147],"uv_size":[1,4]},"up":{"uv":[75,155],"uv_size":[8,1]},"down":{"uv":[75,156],"uv_size":[8,1]}}},{"origin":[-21.83594,26.07242,3.91897],"size":[2,1,0.2],"pivot":[-20.83594,26.07242,4.11897],"rotation":[3.2567,-9.57161,-10.20202],"uv":{"north":{"uv":[75,147],"uv_size":[8,4]},"east":{"uv":[83,151],"uv_size":[1,4]},"south":{"uv":[75,151],"uv_size":[8,4]},"west":{"uv":[83,147],"uv_size":[1,4]},"up":{"uv":[75,155],"uv_size":[8,1]},"down":{"uv":[75,156],"uv_size":[8,1]}}},{"origin":[-23.76704,26.11462,3.57888],"size":[2,1,0.2],"pivot":[-22.76704,26.11462,3.77888],"rotation":[4.95682,-10.00943,12.72119],"uv":{"north":{"uv":[75,147],"uv_size":[8,4]},"east":{"uv":[83,151],"uv_size":[1,4]},"south":{"uv":[75,151],"uv_size":[8,4]},"west":{"uv":[83,147],"uv_size":[1,4]},"up":{"uv":[83,156],"uv_size":[-8,-1]},"down":{"uv":[83,156],"uv_size":[-8,1]}}},{"origin":[-12.44039,27.99717,4.20988],"size":[1.5,1,0.2],"pivot":[-11.44039,27.99717,4.40988],"rotation":[7.17517,-2.78455,92.16214],"uv":{"north":{"uv":[75,160],"uv_size":[6,4]},"east":{"uv":[81,164],"uv_size":[1,4]},"south":{"uv":[75,164],"uv_size":[6,4]},"west":{"uv":[81,160],"uv_size":[1,4]},"up":{"uv":[81,169],"uv_size":[-6,-1]},"down":{"uv":[81,169],"uv_size":[-6,1]}}},{"origin":[-12.61576,26.63477,4.26072],"size":[1.5,1,0.2],"pivot":[-11.61576,26.63477,4.46072],"rotation":[7.38733,-1.29876,99.91615],"uv":{"north":{"uv":[75,160],"uv_size":[6,4]},"east":{"uv":[81,164],"uv_size":[1,4]},"south":{"uv":[75,164],"uv_size":[6,4]},"west":{"uv":[81,160],"uv_size":[1,4]},"up":{"uv":[75,168],"uv_size":[6,1]},"down":{"uv":[75,169],"uv_size":[6,1]}}},{"origin":[-12.49742,28.65406,4.12388],"size":[1.5,1,0.2],"pivot":[-11.49742,28.65406,4.32388],"rotation":[6.1807,-2.37342,46.98231],"uv":{"north":{"uv":[75,160],"uv_size":[6,4]},"east":{"uv":[81,164],"uv_size":[1,4]},"south":{"uv":[75,164],"uv_size":[6,4]},"west":{"uv":[81,160],"uv_size":[1,4]},"up":{"uv":[75,168],"uv_size":[6,1]},"down":{"uv":[75,169],"uv_size":[6,1]}}},{"origin":[-13.0439,29.10338,4.04651],"size":[1.5,1,0.2],"pivot":[-12.0439,29.10338,4.24651],"rotation":[4.86988,-1.57923,4.60591],"uv":{"north":{"uv":[75,160],"uv_size":[6,4]},"east":{"uv":[81,164],"uv_size":[1,4]},"south":{"uv":[75,164],"uv_size":[6,4]},"west":{"uv":[81,160],"uv_size":[1,4]},"up":{"uv":[75,168],"uv_size":[6,1]},"down":{"uv":[75,169],"uv_size":[6,1]}}},{"origin":[-24.88453,28.3938,2.89516],"size":[1.5,1,0.2],"pivot":[-24.38453,28.3938,3.09516],"rotation":[-11.37544,-9.991,106.72901],"uv":{"north":{"uv":[75,160],"uv_size":[6,4]},"east":{"uv":[81,164],"uv_size":[1,4]},"south":{"uv":[75,164],"uv_size":[6,4]},"west":{"uv":[81,160],"uv_size":[1,4]},"up":{"uv":[75,168],"uv_size":[6,1]},"down":{"uv":[75,169],"uv_size":[6,1]}}},{"origin":[-24.85455,27.07759,3.18079],"size":[1.5,1,0.2],"pivot":[-24.35455,27.07759,3.38079],"rotation":[1.7036,-12.96037,49.96193],"uv":{"north":{"uv":[75,160],"uv_size":[6,4]},"east":{"uv":[81,164],"uv_size":[1,4]},"south":{"uv":[75,164],"uv_size":[6,4]},"west":{"uv":[81,160],"uv_size":[1,4]},"up":{"uv":[75,168],"uv_size":[6,1]},"down":{"uv":[75,169],"uv_size":[6,1]}}},{"origin":[-23.84872,28.63655,2.87333],"size":[1.5,1,0.2],"pivot":[-22.84872,28.63655,3.07333],"rotation":[10.63245,6.79365,-34.76145],"uv":{"north":{"uv":[75,160],"uv_size":[6,4]},"east":{"uv":[81,164],"uv_size":[1,4]},"south":{"uv":[75,164],"uv_size":[6,4]},"west":{"uv":[81,160],"uv_size":[1,4]},"up":{"uv":[75,168],"uv_size":[6,1]},"down":{"uv":[75,169],"uv_size":[6,1]}}},{"origin":[-23.03054,28.72696,2.84824],"size":[1.5,1,0.2],"pivot":[-22.03054,28.72696,3.04824],"rotation":[7.50954,-4.99523,-0.21865],"uv":{"north":{"uv":[75,160],"uv_size":[6,4]},"east":{"uv":[81,164],"uv_size":[1,4]},"south":{"uv":[75,164],"uv_size":[6,4]},"west":{"uv":[81,160],"uv_size":[1,4]},"up":{"uv":[75,168],"uv_size":[6,1]},"down":{"uv":[75,169],"uv_size":[6,1]}}},{"origin":[-21.84721,28.50642,3.02094],"size":[1.5,1,0.2],"pivot":[-20.84721,28.50642,3.22094],"rotation":[2.52179,-12.4976,14.88834],"uv":{"north":{"uv":[75,160],"uv_size":[6,4]},"east":{"uv":[81,164],"uv_size":[1,4]},"south":{"uv":[75,164],"uv_size":[6,4]},"west":{"uv":[81,160],"uv_size":[1,4]},"up":{"uv":[75,168],"uv_size":[6,1]},"down":{"uv":[75,169],"uv_size":[6,1]}}},{"origin":[-20.71271,28.00885,3.33065],"size":[1.5,1,0.2],"pivot":[-19.71271,28.00885,3.53065],"rotation":[4.18654,-9.93669,27.72204],"uv":{"north":{"uv":[75,160],"uv_size":[6,4]},"east":{"uv":[81,164],"uv_size":[1,4]},"south":{"uv":[75,164],"uv_size":[6,4]},"west":{"uv":[81,160],"uv_size":[1,4]},"up":{"uv":[75,168],"uv_size":[6,1]},"down":{"uv":[75,169],"uv_size":[6,1]}}},{"origin":[-19.45217,27.2999,3.53698],"size":[1.5,1,0.2],"pivot":[-18.45217,27.2999,3.73698],"rotation":[1.07912,-9.98658,30.02895],"uv":{"north":{"uv":[75,160],"uv_size":[6,4]},"east":{"uv":[81,164],"uv_size":[1,4]},"south":{"uv":[75,164],"uv_size":[6,4]},"west":{"uv":[81,160],"uv_size":[1,4]},"up":{"uv":[75,168],"uv_size":[6,1]},"down":{"uv":[75,169],"uv_size":[6,1]}}}]},{"name":"LeftArm","pivot":[-4.25,22,0.25],"parent":"UpperBody","rotation":[0,0,10]},{"name":"l_arm_1","pivot":[-3.15,18,0],"parent":"LeftArm","cubes":[{"origin":[-6.25,18,-1.5],"size":[3,6,3],"uv":{"north":{"uv":[45,40],"uv_size":[3,6]},"east":{"uv":[48,40],"uv_size":[3,6]},"south":{"uv":[51,34],"uv_size":[3,6]},"west":{"uv":[51,40],"uv_size":[3,6]},"up":{"uv":[52,49],"uv_size":[-3,-3]},"down":{"uv":[46,46],"uv_size":[3,3]}}},{"origin":[-6.65,17.9,-1],"size":[2,2,2],"pivot":[-5.65,17.9,0],"rotation":[0,0,10],"uv":{"north":{"uv":[54,44],"uv_size":[2,2]},"south":{"uv":[54,46],"uv_size":[2,2]},"west":{"uv":[56,34],"uv_size":[2,2]},"up":{"uv":[58,38],"uv_size":[-2,-2]},"down":{"uv":[58,42],"uv_size":[-2,2]}}},{"origin":[-6.275,21.75,-0.75],"size":[0,1.25,1.5],"uv":{"west":{"uv":[99,33.75],"uv_size":[6,5.25]}}}]},{"name":"l_arm_2","pivot":[-3.15,18,0],"parent":"l_arm_1","cubes":[{"origin":[-6.25,12,-1.5],"size":[3,6,3],"uv":{"north":{"uv":[42,34],"uv_size":[3,6]},"east":{"uv":[45,34],"uv_size":[3,6]},"south":{"uv":[42,40],"uv_size":[3,6]},"west":{"uv":[48,34],"uv_size":[3,6]},"up":{"uv":[49,49],"uv_size":[-3,-3]},"down":{"uv":[57,39],"uv_size":[-3,3]}}},{"origin":[-6.65,12.9,-1],"size":[2,5,2],"pivot":[-5.65,17.9,0],"rotation":[0,0,10],"uv":{"north":{"uv":[42,46],"uv_size":[2,5]},"south":{"uv":[54,34],"uv_size":[2,5]},"west":{"uv":[44,46],"uv_size":[2,5]},"up":{"uv":[56,44],"uv_size":[-2,-2]},"down":{"uv":[54,46],"uv_size":[-2,2]}}}]},{"name":"RightArm","pivot":[4.25,22,0.25],"parent":"UpperBody","rotation":[0,0,-10]},{"name":"r_arm_1","pivot":[3.15,18,0],"parent":"RightArm","cubes":[{"origin":[3.25,18,-1.5],"size":[3,6,3],"uv":{"north":{"uv":[48,40],"uv_size":[-3,6]},"east":{"uv":[54,40],"uv_size":[-3,6]},"south":{"uv":[54,34],"uv_size":[-3,6]},"west":{"uv":[51,40],"uv_size":[-3,6]},"up":{"uv":[49,46],"uv_size":[3,3]},"down":{"uv":[49,46],"uv_size":[-3,3]}}},{"origin":[4.65,17.9,-1],"size":[2,2,2],"pivot":[5.65,17.9,0],"rotation":[0,0,-10],"uv":{"north":{"uv":[56,44],"uv_size":[-2,2]},"east":{"uv":[58,34],"uv_size":[-2,2]},"south":{"uv":[56,46],"uv_size":[-2,2]},"up":{"uv":[58,36],"uv_size":[-2,2]},"down":{"uv":[58,42],"uv_size":[-2,2]}}}]},{"name":"r_arm_2","pivot":[3.15,18,0],"parent":"r_arm_1","cubes":[{"origin":[3.25,12,-1.5],"size":[3,6,3],"uv":{"north":{"uv":[45,34],"uv_size":[-3,6]},"east":{"uv":[51,34],"uv_size":[-3,6]},"south":{"uv":[45,40],"uv_size":[-3,6]},"west":{"uv":[48,34],"uv_size":[-3,6]},"up":{"uv":[49,49],"uv_size":[-3,-3]},"down":{"uv":[57,39],"uv_size":[-3,3]}}},{"origin":[4.65,12.9,-1],"size":[2,5,2],"pivot":[5.65,17.9,0],"rotation":[0,0,-10],"uv":{"north":{"uv":[44,46],"uv_size":[-2,5]},"east":{"uv":[46,46],"uv_size":[-2,5]},"south":{"uv":[56,34],"uv_size":[-2,5]},"up":{"uv":[56,42],"uv_size":[-2,2]},"down":{"uv":[54,46],"uv_size":[-2,2]}}}]},{"name":"LeftLeg","pivot":[-2.1,11.5,0],"parent":"root","rotation":[0,0,-0.5]},{"name":"L_leg_1","pivot":[-2.05,10.5,0],"parent":"LeftLeg","cubes":[{"origin":[-4.1,6.5,-2],"size":[4,6,4],"uv":{"north":{"uv":[63,48],"uv_size":[-4,6]},"east":{"uv":[75,48],"uv_size":[-4,6]},"south":{"uv":[71,48],"uv_size":[-4,6]},"west":{"uv":[67,48],"uv_size":[-4,6]},"up":{"uv":[63,54],"uv_size":[-4,4]},"down":{"uv":[83,34],"uv_size":[-4,4]}}},{"origin":[-4.05,6.5,-2],"size":[4,6,4],"inflate":0.249,"uv":{"north":{"uv":[79,34],"uv_size":[-4,6]},"east":{"uv":[79,52],"uv_size":[-4,6]},"south":{"uv":[79,46],"uv_size":[-4,6]},"west":{"uv":[79,40],"uv_size":[-4,6]},"up":{"uv":[67,54],"uv_size":[-4,4]},"down":{"uv":[83,38],"uv_size":[-4,4]}}}]},{"name":"L_leg_2","pivot":[-2.1,6.5,0],"parent":"L_leg_1","cubes":[{"origin":[-4.1,0,-2],"size":[4,6.5,4],"uv":{"north":{"uv":[63,34],"uv_size":[-4,7]},"east":{"uv":[67,41],"uv_size":[-4,7]},"south":{"uv":[63,41],"uv_size":[-4,7]},"west":{"uv":[67,34],"uv_size":[-4,7]},"up":{"uv":[71,54],"uv_size":[-4,4]},"down":{"uv":[83,42],"uv_size":[-4,4]}}},{"origin":[-4.1,0,-3],"size":[4,2,1],"uv":{"north":{"uv":[83,50],"uv_size":[-4,2]},"east":{"uv":[84,34],"uv_size":[-1,2]},"west":{"uv":[60,58],"uv_size":[-1,2]},"up":{"uv":[83,54],"uv_size":[-4,1]},"down":{"uv":[83,55],"uv_size":[-4,1]}}},{"origin":[-4.09913,0.1,-2],"size":[4,6.5,4],"inflate":0.25,"uv":{"north":{"uv":[71,34],"uv_size":[-4,7]},"east":{"uv":[75,41],"uv_size":[-4,7]},"south":{"uv":[75,34],"uv_size":[-4,7]},"west":{"uv":[71,41],"uv_size":[-4,7]},"up":{"uv":[75,54],"uv_size":[-4,4]},"down":{"uv":[83,46],"uv_size":[-4,4]}}},{"origin":[-4.1,0,-3],"size":[4,2,1],"inflate":0.25,"uv":{"north":{"uv":[83,52],"uv_size":[-4,2]},"east":{"uv":[62,58],"uv_size":[-1,2]},"west":{"uv":[61,58],"uv_size":[-1,2]},"up":{"uv":[83,56],"uv_size":[-4,1]},"down":{"uv":[83,57],"uv_size":[-4,1]}}}]},{"name":"RightLeg","pivot":[2.1,11.5,0],"parent":"root","rotation":[0,0,0.5]},{"name":"R_leg_1","pivot":[2.05,10.5,0],"parent":"RightLeg","cubes":[{"origin":[0.1,6.5,-2],"size":[4,6,4],"uv":{"north":{"uv":[59,48],"uv_size":[4,6]},"east":{"uv":[63,48],"uv_size":[4,6]},"south":{"uv":[67,48],"uv_size":[4,6]},"west":{"uv":[71,48],"uv_size":[4,6]},"up":{"uv":[63,58],"uv_size":[-4,-4]},"down":{"uv":[83,34],"uv_size":[-4,4]}}},{"origin":[0.05,6.5,-2],"size":[4,6,4],"inflate":0.249,"uv":{"north":{"uv":[75,34],"uv_size":[4,6]},"east":{"uv":[75,40],"uv_size":[4,6]},"south":{"uv":[75,46],"uv_size":[4,6]},"west":{"uv":[75,52],"uv_size":[4,6]},"up":{"uv":[67,58],"uv_size":[-4,-4]},"down":{"uv":[83,38],"uv_size":[-4,4]}}}]},{"name":"R_leg_2","pivot":[2.1,6.5,0],"parent":"R_leg_1","cubes":[{"origin":[0.1,0,-2],"size":[4,6.5,4],"uv":{"north":{"uv":[59,34],"uv_size":[4,7]},"east":{"uv":[63,34],"uv_size":[4,7]},"south":{"uv":[59,41],"uv_size":[4,7]},"west":{"uv":[63,41],"uv_size":[4,7]},"up":{"uv":[71,58],"uv_size":[-4,-4]},"down":{"uv":[83,42],"uv_size":[-4,4]}}},{"origin":[0.1,0,-3],"size":[4,2,1],"uv":{"north":{"uv":[79,50],"uv_size":[4,2]},"east":{"uv":[59,58],"uv_size":[1,2]},"west":{"uv":[83,34],"uv_size":[1,2]},"up":{"uv":[83,55],"uv_size":[-4,-1]},"down":{"uv":[83,55],"uv_size":[-4,1]}}},{"origin":[0.09913,0.1,-2],"size":[4,6.5,4],"inflate":0.25,"uv":{"north":{"uv":[67,34],"uv_size":[4,7]},"east":{"uv":[67,41],"uv_size":[4,7]},"south":{"uv":[71,34],"uv_size":[4,7]},"west":{"uv":[71,41],"uv_size":[4,7]},"up":{"uv":[75,58],"uv_size":[-4,-4]},"down":{"uv":[83,46],"uv_size":[-4,4]}}},{"origin":[0.1,0,-3],"size":[4,2,1],"inflate":0.25,"uv":{"north":{"uv":[79,52],"uv_size":[4,2]},"east":{"uv":[60,58],"uv_size":[1,2]},"west":{"uv":[61,58],"uv_size":[1,2]},"up":{"uv":[83,57],"uv_size":[-4,-1]},"down":{"uv":[83,57],"uv_size":[-4,1]}}}]},{"name":"Camera_heart","pivot":[0,10.40625,-17.25]},{"name":"effect","pivot":[0.25,16.5,-17.925],"parent":"Camera_heart"},{"name":"sheet","pivot":[0,14.40625,-12.25],"parent":"Camera_heart"},{"name":"main","pivot":[0,10.40625,-17.25],"parent":"Camera_heart"},{"name":"rings","pivot":[0,10.40625,-17.25],"parent":"Camera_heart"},{"name":"ring1","pivot":[0.25,16.40625,-18.5],"parent":"rings"},{"name":"ring2","pivot":[0.25,16.40625,-18.5],"parent":"rings"},{"name":"ring3","pivot":[0.25,16.40625,-18.5],"parent":"rings"},{"name":"ring4","pivot":[0.25,16.40625,-18.5],"parent":"rings"}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/mothi.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/mothi.anim.json new file mode 100644 index 0000000..d36fdcd --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/mothi.anim.json @@ -0,0 +1 @@ +{"autoplay":["i1","i2","i3"],"clips":{"i1":{"loop":"loop","length":2.8,"bones":{"a1":{"rotation":[[0,0,0,0],[1.2,5,0,-5],[2.8,0,0,0]],"scale":[[0,1,1,1],[1.2,1.025,0.975,1],[2.8,1,1,1]]},"a2":{"rotation":[[0,0,0,0],[1.2,5,0,5],[2.8,0,0,0]],"scale":[[0,1,1,1],[1.2,1.025,0.975,1],[2.8,1,1,1]]},"hw1":{"rotation":[[0,0,0,0],[1.48,0,-2.5,3],[2.8,0,0,0]]},"hw2":{"rotation":[[0,0,0,0],[1.48,2.28197,-2.49048,3.00474],[2.8,0,0,0]]},"hw2_2":{"rotation":[[0,0,0,0],[1.48,2.28197,2.49048,-3.00474],[2.8,0,0,0]]},"hw1_2":{"rotation":[[0,0,0,0],[1.48,0,2.5,-3],[2.8,0,0,0]]}}},"i2":{"loop":"loop","length":1.08,"bones":{"fluff":{"scale":[[0,1,1,1],[0.52,1.025,1.025,1.025],[1,1,1,1]]}}},"i3":{"loop":"loop","length":4,"bones":{"head":{"rotation":[[0,0,0,2.5],[1,0,0,0],[2,0,0,-2.5],[3,0,0,0],[4,0,0,2.5]]},"front_hair":{"rotation":[[0,0,0,-2.5],[1,0,0,0],[2,0,0,2.5],[3,0,0,0],[4,0,0,-2.5]]}}},"walk":{"loop":"loop","length":0,"bones":{"a1":{"rotation":[[0,15,0,0]]},"a2":{"rotation":[[0,15,0,0]]},"wings":{"rotation":[[0,-10,0,0]],"position":[[0,0,0,0.4]]},"hw1":{"rotation":[[0,-12.5,0,0]]},"hw2":{"rotation":[[0,-5,0,0]]},"hw2_2":{"rotation":[[0,-5,0,0]]},"hw1_2":{"rotation":[[0,-12.5,0,0]]}}},"walkback":{"loop":"loop","length":0,"bones":{"a1":{"rotation":[[0,-10,0,0]]},"a2":{"rotation":[[0,-10,0,0]]},"wings":{"rotation":[[0,5,0,0]]}}},"elytra":{"loop":"loop","length":1,"bones":{"w1":{"rotation":[[0,0,0,-20],[0.52,-3.0023,34.05757,-28.72166],[1,0,0,-20]]},"hw1":{"rotation":[[0,0,0,-20],[0.24,-2.51394,-8.39793,-26.67186],[1,0,0,-20]]},"w2":{"rotation":[[0,0,0,20],[0.52,-3.0023,-34.05757,28.72166],[1,0,0,20]]},"hw1_2":{"rotation":[[0,0,0,20],[0.24,-2.51394,8.39793,26.67186],[1,0,0,20]]}}},"elytradown":{"loop":"loop","length":0.4,"bones":{"w1":{"rotation":[[0,0,0,-20],[0.2,-0.18919,4.87785,-21.11495],[0.4,0,0,-20]]},"w2":{"rotation":[[0,0,0,20],[0.2,-0.18919,-4.87785,21.11495],[0.4,0,0,20]]}}},"fly":{"loop":"loop","length":1,"bones":{"w1":{"rotation":[[0,0,0,-20],[0.52,-3.0023,34.05757,-28.72166],[1,0,0,-20]]},"hw1":{"rotation":[[0,0,0,-20],[0.24,-2.51394,-8.39793,-26.67186],[1,0,0,-20]]},"w2":{"rotation":[[0,0,0,20],[0.52,-3.0023,-34.05757,28.72166],[1,0,0,20]]},"hw1_2":{"rotation":[[0,0,0,20],[0.24,-2.51394,8.39793,26.67186],[1,0,0,20]]}}},"new":{"loop":"once","length":0,"bones":{"whole":{"position":[[0,0,8,0]]},"head":{"rotation":[[0,22.5,0,10]]},"iris":{"position":[[0,0.25,0,0]]},"iris2":{"position":[[0,0.25,0,0]]},"lashes":{"position":[[0,0,-0.24976,0.0109]]},"a1":{"rotation":[[0,-27.5,0,-27.5]]},"a2":{"rotation":[[0,-19.5623,-4.2453,-36.76782]]},"wings":{"rotation":[[0,0,0,-2.5]]},"w1":{"rotation":[[0,0,0,-30]]},"hw1":{"rotation":[[0,0,0,-17.5]]},"w2":{"rotation":[[0,0,0,25]]},"hw1_2":{"rotation":[[0,0,0,7.5]]},"arm":{"rotation":[[0,34.40959,-25.2131,-47.34425]]},"LeftArm":{"rotation":[[0,75.7299,51.69366,107.2792]],"position":[[0,0.3752,0.12846,0.45428]]},"Leftleg":{"rotation":[[0,-7.5,0,0]]},"Rightleg":{"rotation":[[0,12.68803,-3.1622,-6.80423]]},"body":{"rotation":[[0,-12.5,0,-7.5]]}}},"sitanim":{"loop":"loop","length":0,"bones":{"whole":{"position":[[0,0,-8,0]]},"head":{"rotation":[[0,-7.43656,0.9762,7.43656]]},"w1":{"rotation":[[0,-28.01175,15.42266,17.03033]],"position":[[0,-2,0,0]]},"hw2":{"rotation":[[0,0,0,-50]]},"hw1":{"rotation":[[0,0,5,-42.5]]},"w2":{"rotation":[[0,-28.01175,-15.4227,-17.0303]],"position":[[0,2,0,0]]},"hw2_2":{"rotation":[[0,0,0,50]]},"hw1_2":{"rotation":[[0,0,-5,42.5]]},"RightArm":{"rotation":[[0,0,0,0]]},"arm":{"rotation":[[0,13.46295,-15.58394,28.88636]]},"LeftArm":{"rotation":[[0,13.46295,15.58394,-28.88636]]},"Leftleg":{"rotation":[[0,84.07764,-32.3612,-3.17805]],"position":[[0,0,-1,0]]},"Rightleg":{"rotation":[[0,84.07764,32.36121,-3.17805]],"position":[[0,0,-1,0]]},"body":{"position":[[0,0,-1,0]]}}},"sleepy":{"loop":"loop","length":0.96,"bones":{"head":{"rotation":[[0,2.5,0,0],[0.28,2.46225,-0.21599,-2.49094],[0.56,-2.54,-0.22,-2.49],[0.96,2.5,0,0]],"scale":[[0.28,1,1,1],[0.44,1.005,0.995,1],[0.68,1,1,1]]},"lashes":{"position":[[0,0,-1,0]]},"blink2":{"position":[[0,0,0,-1.1]]},"blink3":{"position":[[0,0,0,-1.1]]},"front_hair":{"rotation":[[0,7.5,0,0]]},"a1":{"rotation":[[0,-65.27288,-15.27177,-75.05128]],"position":[[0,0,1,0]]},"a2":{"rotation":[[0,-65.27288,15.27177,75.05128]],"position":[[0,0,1,0]]}}},"blink":{"loop":"once","length":1.52,"bones":{"head":{"scale":[[0,1,1,1],[0.44,1.005,0.995,1],[0.72,1.005,0.995,1],[1.52,1,1,1]]},"lashes":{"position":[[0,0,0,0],[0.12,0,-0.25,0],[0.4,0,-1.25,0],[0.48,0,-1.35,0],[0.56,0,-1.25,0],[0.76,0,-1.25,0],[1.52,0,0,0]]},"blink2":{"position":[[0,0,0,0],[0.2,0,0,-1.1],[0.76,0,0,-1.1],[1.16,0,0,-1.1],[1.52,0,0,0]]},"blink3":{"position":[[0,0,0,0],[0.44,0,0,-1],[0.76,0,0,-1],[1.52,0,0,0]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/mothi.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/mothi.geo.json new file mode 100644 index 0000000..0ff2e8b --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/mothi.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.mothi","texture_width":192,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"whole","pivot":[0,22,0]},{"name":"body","pivot":[0,13,0],"parent":"whole"},{"name":"fluff","pivot":[0,20,-0.75],"parent":"body","cubes":[{"origin":[-3,19,-2.75],"size":[6,3,5],"pivot":[0,20,1.25],"rotation":[22.5,0,0],"uv":{"north":{"uv":[28,26],"uv_size":[6,3]},"east":{"uv":[37,0],"uv_size":[5,3]},"south":{"uv":[28,29],"uv_size":[6,3]},"west":{"uv":[37,3],"uv_size":[5,3]},"up":{"uv":[34,21],"uv_size":[-6,-5]},"down":{"uv":[34,21],"uv_size":[-6,5]}}}]},{"name":"head","pivot":[0,23,0],"parent":"body"},{"name":"hed","pivot":[-4,26,-1],"parent":"head","cubes":[{"origin":[-4,21,-4],"size":[8,8,8],"uv":{"north":{"uv":[8,19],"uv_size":[8,8]},"east":{"uv":[22,0],"uv_size":[8,8]},"south":{"uv":[22,0],"uv_size":[8,8]},"west":{"uv":[22,0],"uv_size":[8,8]},"up":{"uv":[32,16],"uv_size":[-8,-8]},"down":{"uv":[24,24],"uv_size":[-8,8]}}},{"origin":[-3,29,-3],"size":[6,1,6],"uv":{"north":{"uv":[46,15],"uv_size":[6,1]},"east":{"uv":[46,29],"uv_size":[6,1]},"south":{"uv":[47,36],"uv_size":[6,1]},"west":{"uv":[47,37],"uv_size":[6,1]},"up":{"uv":[54,6],"uv_size":[-6,-6]},"down":{"uv":[15,48],"uv_size":[-6,6]}}}]},{"name":"eyes","pivot":[0,30,-0.4],"parent":"hed","cubes":[{"origin":[-4,21.25,-3.84],"size":[8,3.5,0],"uv":{"north":{"uv":[135,0],"uv_size":[9,2]},"east":{"uv":[128,26],"uv_size":[0,6]},"south":{"uv":[128,26],"uv_size":[0,6]},"west":{"uv":[128,26],"uv_size":[0,6]},"up":{"uv":[136,32],"uv_size":[-8,0]},"down":{"uv":[136,32],"uv_size":[-8,0]}}}]},{"name":"iris","pivot":[-1.825,24,-3.9],"parent":"eyes","cubes":[{"origin":[0.7,22,-3.89],"size":[3.5,2.5,0],"uv":{"north":{"uv":[135,0],"uv_size":[-7,7]},"east":{"uv":[130,30],"uv_size":[0,2]},"south":{"uv":[136,4],"uv_size":[0,2]},"west":{"uv":[128,30],"uv_size":[0,2]},"up":{"uv":[128,30],"uv_size":[2,0]},"down":{"uv":[130,30],"uv_size":[2,0]}}},{"origin":[1,22.25,-3.9],"size":[1.7,2,0],"uv":{"north":{"uv":[131,9.5],"uv_size":[4,7]},"east":{"uv":[128,30],"uv_size":[0,2]},"south":{"uv":[128,30],"uv_size":[0,2]},"west":{"uv":[128,30],"uv_size":[0,2]},"up":{"uv":[128,32],"uv_size":[1,0]},"down":{"uv":[129,32],"uv_size":[1,0]}}}]},{"name":"iris2","pivot":[1.825,24,-3.9],"parent":"eyes","cubes":[{"origin":[-2.7,22.25,-3.9],"size":[1.7,2,0],"uv":{"north":{"uv":[131,9.5],"uv_size":[4,7]},"east":{"uv":[128,30],"uv_size":[0,2]},"south":{"uv":[128,30],"uv_size":[0,2]},"west":{"uv":[128,30],"uv_size":[0,2]},"up":{"uv":[129,32],"uv_size":[-1,0]},"down":{"uv":[130,32],"uv_size":[-1,0]}}},{"origin":[-4.2,22,-3.89],"size":[3.5,2.5,0],"uv":{"north":{"uv":[128,0],"uv_size":[7,7]},"east":{"uv":[128,30],"uv_size":[0,2]},"south":{"uv":[136,4],"uv_size":[0,2]},"west":{"uv":[130,30],"uv_size":[0,2]},"up":{"uv":[130,30],"uv_size":[-2,0]},"down":{"uv":[132,30],"uv_size":[-2,0]}}}]},{"name":"lashes","pivot":[0,24.50595,-4.12738],"parent":"eyes","rotation":[2.5,0,0]},{"name":"right_lashes","pivot":[2.61799,25.37646,-3.655],"parent":"lashes","rotation":[1.42584,-0.91618,0.18232],"cubes":[{"origin":[1.02155,22.51569,-3.91405],"size":[4.25,2.5,0],"pivot":[2.50007,24.72232,-3.99342],"rotation":[-9.62,2.74345,15.7691],"uv":{"north":{"uv":[151,0],"uv_size":[5,3]},"east":{"uv":[150,0],"uv_size":[0,3]},"south":{"uv":[128,29],"uv_size":[0,3]},"west":{"uv":[146,0],"uv_size":[0,3]},"up":{"uv":[146,0],"uv_size":[4,0]},"down":{"uv":[150,0],"uv_size":[4,0]}}},{"origin":[0.97153,22.72676,-4.06405],"size":[4.25,2.5,0],"pivot":[2.75007,24.97232,-4.14342],"rotation":[-9.99664,-0.26044,-1.47722],"uv":{"north":{"uv":[145,0],"uv_size":[5,3]},"east":{"uv":[150,0],"uv_size":[0,3]},"south":{"uv":[128,29],"uv_size":[0,3]},"west":{"uv":[146,0],"uv_size":[0,3]},"up":{"uv":[146,0],"uv_size":[4,0]},"down":{"uv":[150,0],"uv_size":[4,0]}}}]},{"name":"left_lashes","pivot":[-2.61799,25.37646,-3.655],"parent":"lashes","rotation":[1.42584,0.91618,-0.18232],"cubes":[{"origin":[-5.22153,22.72676,-4.06405],"size":[4.25,2.5,0],"pivot":[-2.75007,24.97232,-4.14342],"rotation":[-9.99664,0.26044,1.47722],"uv":{"north":{"uv":[150,0],"uv_size":[-5,3]},"east":{"uv":[146,0],"uv_size":[0,3]},"south":{"uv":[128,29],"uv_size":[0,3]},"west":{"uv":[150,0],"uv_size":[0,3]},"up":{"uv":[150,0],"uv_size":[-4,0]},"down":{"uv":[154,0],"uv_size":[-4,0]}}},{"origin":[-5.27155,22.51569,-3.91405],"size":[4.25,2.5,0],"pivot":[-2.50007,24.72232,-3.99342],"rotation":[-9.62,-2.74345,-15.7691],"uv":{"north":{"uv":[156,0],"uv_size":[-5,3]},"east":{"uv":[146,0],"uv_size":[0,3]},"south":{"uv":[128,29],"uv_size":[0,3]},"west":{"uv":[150,0],"uv_size":[0,3]},"up":{"uv":[150,0],"uv_size":[-4,0]},"down":{"uv":[154,0],"uv_size":[-4,0]}}}]},{"name":"blink2","pivot":[0,24.5,-5.87],"parent":"eyes","cubes":[{"origin":[-4,23,-2.87],"size":[8,1,0],"uv":{"north":{"uv":[144,5],"uv_size":[8,1]},"east":{"uv":[144,5],"uv_size":[0,1]},"south":{"uv":[152,5],"uv_size":[8,1]},"west":{"uv":[152,5],"uv_size":[0,1]},"up":{"uv":[152,5],"uv_size":[-8,0]},"down":{"uv":[160,5],"uv_size":[-8,0]}}}]},{"name":"blink3","pivot":[0,23.5,-5.87],"parent":"eyes","cubes":[{"origin":[-4,22,-2.87],"size":[8,1,0],"uv":{"north":{"uv":[144,6],"uv_size":[8,1]},"east":{"uv":[144,6],"uv_size":[0,1]},"south":{"uv":[152,6],"uv_size":[8,1]},"west":{"uv":[152,6],"uv_size":[0,1]},"up":{"uv":[152,6],"uv_size":[-8,0]},"down":{"uv":[160,6],"uv_size":[-8,0]}}}]},{"name":"hair","pivot":[0,-2,-2],"parent":"hed"},{"name":"left_bun","pivot":[-4,25,1.5],"parent":"hair","cubes":[{"origin":[-6,23,-1],"size":[3,4,4],"uv":{"north":{"uv":[42,16],"uv_size":[3,4]},"east":{"uv":[41,23],"uv_size":[4,4]},"south":{"uv":[18,42],"uv_size":[3,4]},"west":{"uv":[38,41],"uv_size":[4,4]},"up":{"uv":[31,46],"uv_size":[-3,-4]},"down":{"uv":[45,38],"uv_size":[-3,4]}}},{"origin":[-7,20.25,-1],"size":[3,7,0],"pivot":[-5,25.25,-1],"rotation":[-14.1614,-37.80946,22.37174],"uv":{"north":{"uv":[7,43],"uv_size":[-3,7]},"east":{"uv":[0,0],"uv_size":[0,7]},"south":{"uv":[42,42],"uv_size":[3,7]},"west":{"uv":[0,0],"uv_size":[0,7]},"up":{"uv":[3,0],"uv_size":[-3,0]},"down":{"uv":[3,0],"uv_size":[-3,0]}}},{"origin":[-5,22,-1.25],"size":[2,2,2],"uv":{"north":{"uv":[12,9],"uv_size":[2,2]},"east":{"uv":[14,8],"uv_size":[2,2]},"south":{"uv":[24,25],"uv_size":[2,2]},"west":{"uv":[26,25],"uv_size":[2,2]},"up":{"uv":[32,2],"uv_size":[-2,-2]},"down":{"uv":[36,16],"uv_size":[-2,2]}}},{"origin":[-5,22,1.75],"size":[2,2,2],"uv":{"north":{"uv":[12,9],"uv_size":[2,2]},"east":{"uv":[14,8],"uv_size":[2,2]},"south":{"uv":[24,25],"uv_size":[2,2]},"west":{"uv":[26,25],"uv_size":[2,2]},"up":{"uv":[32,2],"uv_size":[-2,-2]},"down":{"uv":[36,16],"uv_size":[-2,2]}}},{"origin":[-6.18888,19.43656,3.41954],"size":[2,4,1],"pivot":[-5.43888,19.93656,2.91954],"rotation":[47.1699,12.80971,44.77883],"uv":{"north":{"uv":[38,51],"uv_size":[-2,4]},"east":{"uv":[9,49],"uv_size":[-1,4]},"south":{"uv":[40,51],"uv_size":[-2,4]},"west":{"uv":[4,38],"uv_size":[-1,4]},"up":{"uv":[9,37],"uv_size":[2,-1]},"down":{"uv":[37,29],"uv_size":[2,1]}}},{"origin":[-5,18,0.5],"size":[2,5,2],"pivot":[-5,22,1.5],"rotation":[20,0,30],"uv":{"north":{"uv":[48,49],"uv_size":[-2,5]},"east":{"uv":[36,51],"uv_size":[-2,5]},"south":{"uv":[18,50],"uv_size":[-2,5]},"west":{"uv":[6,50],"uv_size":[-2,5]},"up":{"uv":[50,10],"uv_size":[2,-2]},"down":{"uv":[51,44],"uv_size":[2,2]}}},{"origin":[-7.5,21,1],"size":[3,7,0],"pivot":[-5.5,26,1],"rotation":[14.1614,37.80946,62.37174],"uv":{"north":{"uv":[45,42],"uv_size":[-3,7]},"east":{"uv":[0,0],"uv_size":[0,7]},"south":{"uv":[4,43],"uv_size":[3,7]},"west":{"uv":[0,0],"uv_size":[0,7]},"up":{"uv":[3,0],"uv_size":[-3,0]},"down":{"uv":[3,0],"uv_size":[-3,0]}}},{"origin":[-6.90617,17.95919,3.25],"size":[0,6,4],"pivot":[-5.90617,18.95919,3.75],"rotation":[97.5,-67.5,-67.5],"uv":{"north":{"uv":[0,0],"uv_size":[0,6]},"east":{"uv":[44,0],"uv_size":[4,6]},"south":{"uv":[0,0],"uv_size":[0,6]},"west":{"uv":[45,16],"uv_size":[4,6]},"up":{"uv":[0,4],"uv_size":[0,-4]},"down":{"uv":[0,0],"uv_size":[0,4]}}},{"origin":[-5,19,0.5],"size":[2,4,1],"pivot":[-5,22,1.5],"rotation":[2.44081,-0.54094,42.48848],"uv":{"north":{"uv":[53,40],"uv_size":[-2,4]},"east":{"uv":[7,50],"uv_size":[-1,4]},"south":{"uv":[46,51],"uv_size":[-2,4]},"west":{"uv":[49,49],"uv_size":[-1,4]},"up":{"uv":[39,30],"uv_size":[2,-1]},"down":{"uv":[22,40],"uv_size":[2,1]}}}]},{"name":"right_bun","pivot":[5,22,1.5],"parent":"hair","cubes":[{"origin":[4.5,21,1],"size":[3,7,0],"pivot":[5.5,26,1],"rotation":[14.1614,-37.80946,-62.37174],"uv":{"north":{"uv":[42,42],"uv_size":[3,7]},"east":{"uv":[0,0],"uv_size":[0,7]},"south":{"uv":[7,43],"uv_size":[-3,7]},"west":{"uv":[0,0],"uv_size":[0,7]},"up":{"uv":[0,0],"uv_size":[3,0]},"down":{"uv":[0,0],"uv_size":[3,0]}}},{"origin":[3,23,-1],"size":[3,4,4],"uv":{"north":{"uv":[45,16],"uv_size":[-3,4]},"east":{"uv":[42,41],"uv_size":[-4,4]},"south":{"uv":[21,42],"uv_size":[-3,4]},"west":{"uv":[45,23],"uv_size":[-4,4]},"up":{"uv":[28,46],"uv_size":[3,-4]},"down":{"uv":[42,38],"uv_size":[3,4]}}},{"origin":[4,20.25,-1],"size":[3,7,0],"pivot":[5,25.25,-1],"rotation":[-14.1614,37.80946,-22.37174],"uv":{"north":{"uv":[4,43],"uv_size":[3,7]},"east":{"uv":[0,0],"uv_size":[0,7]},"south":{"uv":[45,42],"uv_size":[-3,7]},"west":{"uv":[0,0],"uv_size":[0,7]},"up":{"uv":[0,0],"uv_size":[3,0]},"down":{"uv":[0,0],"uv_size":[3,0]}}},{"origin":[3,22,-1.25],"size":[2,2,2],"uv":{"north":{"uv":[14,9],"uv_size":[-2,2]},"east":{"uv":[28,25],"uv_size":[-2,2]},"south":{"uv":[26,25],"uv_size":[-2,2]},"west":{"uv":[16,8],"uv_size":[-2,2]},"up":{"uv":[30,2],"uv_size":[2,-2]},"down":{"uv":[34,16],"uv_size":[2,2]}}},{"origin":[6.90617,17.95919,3.25],"size":[0,6,4],"pivot":[5.90617,18.95919,3.75],"rotation":[97.5,67.5,67.5],"uv":{"north":{"uv":[0,0],"uv_size":[0,6]},"east":{"uv":[49,16],"uv_size":[-4,6]},"south":{"uv":[0,0],"uv_size":[0,6]},"west":{"uv":[48,0],"uv_size":[-4,6]},"up":{"uv":[0,4],"uv_size":[0,-4]},"down":{"uv":[0,0],"uv_size":[0,4]}}},{"origin":[4.18888,19.43656,3.41954],"size":[2,4,1],"pivot":[5.43888,19.93656,2.91954],"rotation":[47.1699,-12.80971,-44.77883],"uv":{"north":{"uv":[36,51],"uv_size":[2,4]},"east":{"uv":[3,38],"uv_size":[1,4]},"south":{"uv":[38,51],"uv_size":[2,4]},"west":{"uv":[8,49],"uv_size":[1,4]},"up":{"uv":[11,37],"uv_size":[-2,-1]},"down":{"uv":[39,29],"uv_size":[-2,1]}}},{"origin":[3,22,1.75],"size":[2,2,2],"uv":{"north":{"uv":[14,9],"uv_size":[-2,2]},"east":{"uv":[28,25],"uv_size":[-2,2]},"south":{"uv":[26,25],"uv_size":[-2,2]},"west":{"uv":[16,8],"uv_size":[-2,2]},"up":{"uv":[30,2],"uv_size":[2,-2]},"down":{"uv":[34,16],"uv_size":[2,2]}}},{"origin":[3,18,0.5],"size":[2,5,2],"pivot":[5,22,1.5],"rotation":[20,0,-30],"uv":{"north":{"uv":[46,49],"uv_size":[2,5]},"east":{"uv":[4,50],"uv_size":[2,5]},"south":{"uv":[16,50],"uv_size":[2,5]},"west":{"uv":[34,51],"uv_size":[2,5]},"up":{"uv":[52,10],"uv_size":[-2,-2]},"down":{"uv":[53,44],"uv_size":[-2,2]}}},{"origin":[3,19,0.5],"size":[2,4,1],"pivot":[5,22,1.5],"rotation":[2.44081,0.54094,-42.48848],"uv":{"north":{"uv":[51,40],"uv_size":[2,4]},"east":{"uv":[48,49],"uv_size":[1,4]},"south":{"uv":[44,51],"uv_size":[2,4]},"west":{"uv":[6,50],"uv_size":[1,4]},"up":{"uv":[41,30],"uv_size":[-2,-1]},"down":{"uv":[24,40],"uv_size":[-2,1]}}}]},{"name":"ear1","pivot":[-3.34698,24.74908,-1.375],"parent":"hed","rotation":[0,12.5,7.5]},{"name":"bone5","pivot":[-1,27.25,-0.5],"parent":"hed","rotation":[-35,0,0]},{"name":"front_hair","pivot":[0,27,-4.25],"parent":"hed","cubes":[{"origin":[1,24.75,-5],"size":[2,3.25,2],"pivot":[2,26,-4],"rotation":[-17.89318,-18.58978,-14.55222],"uv":{"north":{"uv":[39,26],"uv_size":[-2,3]},"east":{"uv":[33,43],"uv_size":[-2,3]},"south":{"uv":[27,43],"uv_size":[-2,3]},"west":{"uv":[44,11],"uv_size":[-2,3]},"up":{"uv":[42,16],"uv_size":[2,-2]},"down":{"uv":[44,12],"uv_size":[2,2]}}},{"origin":[-3,24.75,-5],"size":[2,3.25,2],"pivot":[-2,26,-4],"rotation":[-17.89318,18.58978,14.55222],"uv":{"north":{"uv":[37,26],"uv_size":[2,3]},"east":{"uv":[42,11],"uv_size":[2,3]},"south":{"uv":[25,43],"uv_size":[2,3]},"west":{"uv":[31,43],"uv_size":[2,3]},"up":{"uv":[44,16],"uv_size":[-2,-2]},"down":{"uv":[46,12],"uv_size":[-2,2]}}},{"origin":[-1,24.25,-5],"size":[2,3.25,2],"pivot":[0,25.5,-4],"rotation":[-20,0,0],"uv":{"north":{"uv":[13,45],"uv_size":[2,3]},"east":{"uv":[45,36],"uv_size":[2,3]},"south":{"uv":[46,12],"uv_size":[2,3]},"west":{"uv":[46,26],"uv_size":[2,3]},"up":{"uv":[46,16],"uv_size":[-2,-2]},"down":{"uv":[9,47],"uv_size":[-2,2]}}},{"origin":[-7,22,-4.25],"size":[4,4,0],"pivot":[-4,24,-3.25],"rotation":[0,0,12.5],"uv":{"north":{"uv":[45,22],"uv_size":[4,4]},"east":{"uv":[0,0],"uv_size":[0,4]},"south":{"uv":[38,45],"uv_size":[4,4]},"west":{"uv":[0,0],"uv_size":[0,4]},"up":{"uv":[4,0],"uv_size":[-4,0]},"down":{"uv":[4,0],"uv_size":[-4,0]}}},{"origin":[3,22,-4.25],"size":[4,4,0],"pivot":[4,24,-3.25],"rotation":[-5,0,-12.5],"uv":{"north":{"uv":[49,22],"uv_size":[-4,4]},"east":{"uv":[0,0],"uv_size":[0,4]},"south":{"uv":[42,45],"uv_size":[-4,4]},"west":{"uv":[0,0],"uv_size":[0,4]},"up":{"uv":[0,0],"uv_size":[4,0]},"down":{"uv":[0,0],"uv_size":[4,0]}}},{"origin":[3,20,-4.25],"size":[6,6,0],"pivot":[4,23,-3.25],"rotation":[0,0,102.5],"uv":{"north":{"uv":[49,16],"uv_size":[6,6]},"east":{"uv":[0,0],"uv_size":[0,6]},"south":{"uv":[49,22],"uv_size":[6,6]},"west":{"uv":[0,0],"uv_size":[0,6]},"up":{"uv":[6,0],"uv_size":[-6,0]},"down":{"uv":[6,0],"uv_size":[-6,0]}}},{"origin":[-4,21,-4.4],"size":[8,7,0],"uv":{"north":{"uv":[18,46],"uv_size":[8,7]},"east":{"uv":[0,0],"uv_size":[0,7]},"south":{"uv":[26,46],"uv_size":[8,7]},"west":{"uv":[0,0],"uv_size":[0,7]},"up":{"uv":[8,0],"uv_size":[-8,0]},"down":{"uv":[8,0],"uv_size":[-8,0]}}}]},{"name":"antennaes","pivot":[0,23,0],"parent":"head"},{"name":"a1","pivot":[-3,29,0],"parent":"antennaes","cubes":[{"origin":[-4,29,-1],"size":[1,8,1],"pivot":[-3,29,0],"rotation":[-15,0,-25],"uv":{"north":{"uv":[38,9],"uv_size":[1,8]},"east":{"uv":[38,17],"uv_size":[1,8]},"south":{"uv":[15,45],"uv_size":[1,8]},"west":{"uv":[7,49],"uv_size":[1,8]},"up":{"uv":[15,11],"uv_size":[-1,-1]},"down":{"uv":[16,10],"uv_size":[-1,1]}}},{"origin":[-8,29,-0.5],"size":[9,11,0],"pivot":[-3,29,0],"rotation":[-15,0,-25],"uv":{"north":{"uv":[60,37],"uv_size":[9,11]},"east":{"uv":[0,0],"uv_size":[0,11]},"south":{"uv":[67,22],"uv_size":[9,11]},"west":{"uv":[0,0],"uv_size":[0,11]},"up":{"uv":[9,0],"uv_size":[-9,0]},"down":{"uv":[9,0],"uv_size":[-9,0]}}},{"origin":[-8,29,-0.4],"size":[9,11,0],"pivot":[-3,29,0],"rotation":[-15,0,-25],"uv":{"north":{"uv":[64,67],"uv_size":[9,11]},"east":{"uv":[0,0],"uv_size":[0,11]},"south":{"uv":[68,52],"uv_size":[9,11]},"west":{"uv":[0,0],"uv_size":[0,11]},"up":{"uv":[9,0],"uv_size":[-9,0]},"down":{"uv":[9,0],"uv_size":[-9,0]}}},{"origin":[-8,29,-0.6],"size":[9,11,0],"pivot":[-3,29,0],"rotation":[-15,0,-25],"uv":{"north":{"uv":[64,67],"uv_size":[9,11]},"east":{"uv":[0,0],"uv_size":[0,11]},"south":{"uv":[68,52],"uv_size":[9,11]},"west":{"uv":[0,0],"uv_size":[0,11]},"up":{"uv":[9,0],"uv_size":[-9,0]},"down":{"uv":[9,0],"uv_size":[-9,0]}}}]},{"name":"a2","pivot":[3,29,0],"parent":"antennaes","cubes":[{"origin":[3,29,-1],"size":[1,8,1],"pivot":[3,29,0],"rotation":[-15,0,25],"uv":{"north":{"uv":[39,9],"uv_size":[-1,8]},"east":{"uv":[8,49],"uv_size":[-1,8]},"south":{"uv":[16,45],"uv_size":[-1,8]},"west":{"uv":[39,17],"uv_size":[-1,8]},"up":{"uv":[14,11],"uv_size":[1,-1]},"down":{"uv":[15,10],"uv_size":[1,1]}}},{"origin":[-1,29,-0.5],"size":[9,11,0],"pivot":[3,29,0],"rotation":[-15,0,25],"uv":{"north":{"uv":[69,37],"uv_size":[-9,11]},"east":{"uv":[0,0],"uv_size":[0,11]},"south":{"uv":[76,22],"uv_size":[-9,11]},"west":{"uv":[0,0],"uv_size":[0,11]},"up":{"uv":[0,0],"uv_size":[9,0]},"down":{"uv":[0,0],"uv_size":[9,0]}}},{"origin":[-1,29,-0.4],"size":[9,11,0],"pivot":[3,29,0],"rotation":[-15,0,25],"uv":{"north":{"uv":[73,67],"uv_size":[-9,11]},"east":{"uv":[0,0],"uv_size":[0,11]},"south":{"uv":[77,52],"uv_size":[-9,11]},"west":{"uv":[0,0],"uv_size":[0,11]},"up":{"uv":[0,0],"uv_size":[9,0]},"down":{"uv":[0,0],"uv_size":[9,0]}}},{"origin":[-1,29,-0.6],"size":[9,11,0],"pivot":[3,29,0],"rotation":[-15,0,25],"uv":{"north":{"uv":[73,67],"uv_size":[-9,11]},"east":{"uv":[0,0],"uv_size":[0,11]},"south":{"uv":[77,52],"uv_size":[-9,11]},"west":{"uv":[0,0],"uv_size":[0,11]},"up":{"uv":[0,0],"uv_size":[9,0]},"down":{"uv":[0,0],"uv_size":[9,0]}}}]},{"name":"Body","pivot":[0,22,0],"parent":"body","cubes":[{"origin":[-3.5,11,-2],"size":[7,9,4],"uv":{"north":{"uv":[0,0],"uv_size":[7,9]},"east":{"uv":[24,16],"uv_size":[4,9]},"south":{"uv":[7,0],"uv_size":[7,9]},"west":{"uv":[0,27],"uv_size":[4,9]},"up":{"uv":[44,34],"uv_size":[-7,-4]},"down":{"uv":[44,34],"uv_size":[-7,4]}}},{"origin":[-1.5,20,-1.5],"size":[3,2,3],"uv":{"north":{"uv":[39,27],"uv_size":[3,2]},"east":{"uv":[13,41],"uv_size":[3,2]},"south":{"uv":[22,41],"uv_size":[3,2]},"west":{"uv":[25,41],"uv_size":[3,2]},"up":{"uv":[42,12],"uv_size":[-3,-3]},"down":{"uv":[42,12],"uv_size":[-3,3]}}},{"origin":[-2.5,10.75,-2.2],"size":[2,2,2],"uv":{"north":{"uv":[38,49],"uv_size":[2,2]},"east":{"uv":[40,49],"uv_size":[2,2]},"south":{"uv":[49,40],"uv_size":[2,2]},"west":{"uv":[49,42],"uv_size":[2,2]},"up":{"uv":[46,51],"uv_size":[-2,-2]},"down":{"uv":[51,44],"uv_size":[-2,2]}}},{"origin":[3,12.5,-2.15],"size":[1,9.75,4.2],"pivot":[0,22,0],"rotation":[0,0,32.5],"uv":{"north":{"uv":[40,51],"uv_size":[1,10]},"east":{"uv":[49,46],"uv_size":[4,10]},"south":{"uv":[41,51],"uv_size":[1,10]},"west":{"uv":[0,50],"uv_size":[4,10]},"up":{"uv":[7,41],"uv_size":[-1,-4]},"down":{"uv":[25,37],"uv_size":[-1,4]}}}]},{"name":"bow","pivot":[0,23.75,0],"parent":"Body"},{"name":"wings","pivot":[0,16,1],"parent":"Body"},{"name":"w1","pivot":[0,19,1],"parent":"wings","rotation":[12.60443,-7.32123,20.86781]},{"name":"hw2","pivot":[0,19,0.75],"parent":"w1","cubes":[{"origin":[-1,-2,1.75],"size":[17,23,0],"pivot":[0,19,0.75],"rotation":[7.5,-2.5,-7.5],"uv":{"north":{"uv":[19,69],"uv_size":[17,23]},"east":{"uv":[0,0],"uv_size":[0,23]},"south":{"uv":[0,75],"uv_size":[17,23]},"west":{"uv":[0,0],"uv_size":[0,23]},"up":{"uv":[17,0],"uv_size":[-17,0]},"down":{"uv":[17,0],"uv_size":[-17,0]}}}]},{"name":"hw1","pivot":[0,19,1],"parent":"w1","cubes":[{"origin":[-1,-4,3],"size":[18,25,0],"pivot":[0,19,2],"rotation":[6.48109,3.28671,-34.9721],"uv":{"north":{"uv":[73,63],"uv_size":[18,25]},"east":{"uv":[73,63],"uv_size":[0,25]},"south":{"uv":[91,63],"uv_size":[18,25]},"west":{"uv":[91,63],"uv_size":[0,25]},"up":{"uv":[91,63],"uv_size":[-18,0]},"down":{"uv":[109,63],"uv_size":[-18,0]}}}]},{"name":"w2","pivot":[0,19,1],"parent":"wings","rotation":[12.60443,7.32123,-20.86781]},{"name":"hw2_2","pivot":[0,19,0.75],"parent":"w2","cubes":[{"origin":[-16,-2,1.75],"size":[17,23,0],"pivot":[0,19,0.75],"rotation":[7.5,2.5,7.5],"uv":{"north":{"uv":[36,69],"uv_size":[-17,23]},"east":{"uv":[0,0],"uv_size":[0,23]},"south":{"uv":[17,75],"uv_size":[-17,23]},"west":{"uv":[0,0],"uv_size":[0,23]},"up":{"uv":[0,0],"uv_size":[17,0]},"down":{"uv":[0,0],"uv_size":[17,0]}}}]},{"name":"hw1_2","pivot":[0,19,1],"parent":"w2","cubes":[{"origin":[-17,-4,3],"size":[18,25,0],"pivot":[0,19,2],"rotation":[6.48109,-3.28671,34.9721],"uv":{"north":{"uv":[91,63],"uv_size":[-18,25]},"east":{"uv":[91,63],"uv_size":[0,25]},"south":{"uv":[109,63],"uv_size":[-18,25]},"west":{"uv":[73,63],"uv_size":[0,25]},"up":{"uv":[73,63],"uv_size":[18,0]},"down":{"uv":[91,63],"uv_size":[18,0]}}}]},{"name":"RightArm","pivot":[4,20,0],"parent":"body","rotation":[0,0,2.5]},{"name":"arm","pivot":[4,20,0],"parent":"RightArm","cubes":[{"origin":[1.25,9.63397,-1.5],"size":[3,10,3],"pivot":[3.75,19.75,0.25],"rotation":[0,0,-25],"uv":{"north":{"uv":[35,0],"uv_size":[-3,10]},"east":{"uv":[31,32],"uv_size":[-3,10]},"south":{"uv":[22,32],"uv_size":[-3,10]},"west":{"uv":[19,32],"uv_size":[-3,10]},"up":{"uv":[39,18],"uv_size":[3,-3]},"down":{"uv":[39,18],"uv_size":[3,3]}}},{"origin":[1.25,10.63397,-1.5],"size":[3,2,3],"pivot":[3.75,19.75,0.25],"rotation":[0,0,-25],"inflate":0.15,"uv":{"north":{"uv":[0,9],"uv_size":[3,2]},"east":{"uv":[3,9],"uv_size":[3,2]},"south":{"uv":[6,9],"uv_size":[3,2]},"west":{"uv":[9,9],"uv_size":[3,2]},"up":{"uv":[41,9],"uv_size":[-3,-3]},"down":{"uv":[39,38],"uv_size":[-3,3]}}},{"origin":[0.5,17.13397,-1.75],"size":[4,2,3.5],"pivot":[4,20,0],"rotation":[0,0,-25],"uv":{"north":{"uv":[23,64],"uv_size":[-4,2]},"east":{"uv":[68,55],"uv_size":[-4,2]},"south":{"uv":[68,53],"uv_size":[-4,2]},"west":{"uv":[27,64],"uv_size":[-4,2]},"up":{"uv":[63,37],"uv_size":[4,-4]},"down":{"uv":[42,63],"uv_size":[4,4]}}},{"origin":[-0.37196,16.45872,-1.75],"size":[4,2,3.5],"pivot":[3.89408,20.10151,0],"rotation":[0,0,-45],"inflate":0.01,"uv":{"north":{"uv":[50,63],"uv_size":[-4,2]},"east":{"uv":[8,64],"uv_size":[-4,2]},"south":{"uv":[60,63],"uv_size":[-4,2]},"west":{"uv":[54,63],"uv_size":[-4,2]},"up":{"uv":[28,67],"uv_size":[4,-4]},"down":{"uv":[63,29],"uv_size":[4,4]}}}]},{"name":"RightItemPivot","pivot":[6.25,12.25,-1],"parent":"RightArm"},{"name":"LeftArm","pivot":[-4,20,0],"parent":"body","rotation":[0,0,-2.5],"cubes":[{"origin":[-3.62804,16.45872,-1.75],"size":[4,2,3.5],"pivot":[-3.89408,20.10151,0],"rotation":[0,0,45],"inflate":0.01,"uv":{"north":{"uv":[46,63],"uv_size":[4,2]},"east":{"uv":[50,63],"uv_size":[4,2]},"south":{"uv":[56,63],"uv_size":[4,2]},"west":{"uv":[4,64],"uv_size":[4,2]},"up":{"uv":[32,67],"uv_size":[-4,-4]},"down":{"uv":[67,29],"uv_size":[-4,4]}}},{"origin":[-4.5,17.13397,-1.75],"size":[4,2,3.5],"pivot":[-4,20,0],"rotation":[0,0,25],"uv":{"north":{"uv":[19,64],"uv_size":[4,2]},"east":{"uv":[23,64],"uv_size":[4,2]},"south":{"uv":[64,53],"uv_size":[4,2]},"west":{"uv":[64,55],"uv_size":[4,2]},"up":{"uv":[67,37],"uv_size":[-4,-4]},"down":{"uv":[46,63],"uv_size":[-4,4]}}},{"origin":[-4.25,10.63397,-1.5],"size":[3,2,3],"pivot":[-3.75,19.75,0.25],"rotation":[0,0,25],"inflate":0.15,"uv":{"north":{"uv":[3,9],"uv_size":[-3,2]},"east":{"uv":[12,9],"uv_size":[-3,2]},"south":{"uv":[9,9],"uv_size":[-3,2]},"west":{"uv":[6,9],"uv_size":[-3,2]},"up":{"uv":[38,9],"uv_size":[3,-3]},"down":{"uv":[36,38],"uv_size":[3,3]}}},{"origin":[-4.25,9.63397,-1.5],"size":[3,10,3],"pivot":[-3.75,19.75,0.25],"rotation":[0,0,25],"uv":{"north":{"uv":[32,0],"uv_size":[3,10]},"east":{"uv":[16,32],"uv_size":[3,10]},"south":{"uv":[19,32],"uv_size":[3,10]},"west":{"uv":[28,32],"uv_size":[3,10]},"up":{"uv":[42,18],"uv_size":[-3,-3]},"down":{"uv":[42,18],"uv_size":[-3,3]}}}]},{"name":"LeftItemPivot","pivot":[-6.25,12.25,-1],"parent":"LeftArm"},{"name":"Leftleg","pivot":[-1.9,11,0],"parent":"whole","cubes":[{"origin":[-3.05,0,-2],"size":[3,9,4],"uv":{"north":{"uv":[7,37],"uv_size":[3,10]},"east":{"uv":[12,27],"uv_size":[4,10]},"south":{"uv":[10,37],"uv_size":[3,10]},"west":{"uv":[24,27],"uv_size":[4,10]},"up":{"uv":[28,41],"uv_size":[-3,-4]},"down":{"uv":[3,38],"uv_size":[-3,4]}}},{"origin":[-3.05,0,-2],"size":[3,3,4],"inflate":0.1,"uv":{"north":{"uv":[39,38],"uv_size":[3,3]},"east":{"uv":[34,20],"uv_size":[4,3]},"south":{"uv":[31,40],"uv_size":[3,3]},"west":{"uv":[34,23],"uv_size":[4,3]},"up":{"uv":[37,30],"uv_size":[-3,-4]},"down":{"uv":[16,37],"uv_size":[-3,4]}}}]},{"name":"Rightleg","pivot":[1.9,11,0],"parent":"whole","cubes":[{"origin":[0.05,0,-2],"size":[3,9,4],"uv":{"north":{"uv":[10,37],"uv_size":[-3,10]},"east":{"uv":[28,27],"uv_size":[-4,10]},"south":{"uv":[13,37],"uv_size":[-3,10]},"west":{"uv":[16,27],"uv_size":[-4,10]},"up":{"uv":[25,41],"uv_size":[3,-4]},"down":{"uv":[0,38],"uv_size":[3,4]}}},{"origin":[0.05,0,-2],"size":[3,3,4],"inflate":0.1,"uv":{"north":{"uv":[42,38],"uv_size":[-3,3]},"east":{"uv":[38,23],"uv_size":[-4,3]},"south":{"uv":[34,40],"uv_size":[-3,3]},"west":{"uv":[38,20],"uv_size":[-4,3]},"up":{"uv":[34,30],"uv_size":[3,-4]},"down":{"uv":[13,37],"uv_size":[3,4]}}}]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/mothli.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/mothli.anim.json new file mode 100644 index 0000000..18fd42d --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/mothli.anim.json @@ -0,0 +1 @@ +{"autoplay":[],"clips":{"fly_fast":{"loop":"loop","length":2,"bones":{"head":{"rotation":[[0,-7.5,0,0],[1,-12.5,0,0],[2,-7.5,0,0],[3,-12.5,0,0]],"position":[[0,0,0,0],[2,0,0,0]]},"L":{"rotation":[[0,0,0,5]]},"R":{"rotation":[[0,0,0,-5]]},"1":{"rotation":[[0,17.5,0,32.5],[1,27.5,0,32.5],[2,17.5,0,32.5]]},"bone4":{"rotation":[[0,20,0,0]]},"bone3":{"rotation":[[0,20,0,0]]},"2":{"rotation":[[0,17.5,0,-32.5],[1,27.5,0,-32.5],[2,17.5,0,-32.5]]},"bone5":{"rotation":[[0,20,0,0]]},"bone6":{"rotation":[[0,20,0,0]]},"body":{"position":[[0,0,0,0]]},"abdomen":{"rotation":[[0,10,0,0],[1,15,0,0],[2,10,0,0]]},"bone2":{"rotation":[[0,0,0,0]]},"W1":{"rotation":[[0,0,-30,40],[0.16667,11.17023,-28.02432,-72.79588],[0.33333,0,-30,40],[0.5,11.17023,-28.02432,-72.79588],[0.66667,0,-30,40],[0.83333,11.17023,-28.02432,-72.79588],[1,0,-30,40],[1.16667,11.17023,-28.02432,-72.79588],[1.33333,0,-30,40],[1.5,11.17023,-28.02432,-72.79588],[1.66667,0,-30,40],[1.83333,11.17023,-28.02432,-72.79588],[2,0,-30,40]]},"W2":{"rotation":[[0,0,0,40],[0.20833,0,0,-80],[0.33333,0,0,40],[0.54167,0,0,-80],[0.66667,0,0,40],[0.875,0,0,-80],[1,0,0,40],[1.20833,0,0,-80],[1.33333,0,0,40],[1.54167,0,0,-80],[1.66667,0,0,40],[1.875,0,0,-80],[2,0,0,40]]},"W3":{"rotation":[[0,0,30,-40],[0.16667,11.17023,28.02432,72.79588],[0.33333,0,30,-40],[0.5,11.17023,28.02432,72.79588],[0.66667,0,30,-40],[0.83333,11.17023,28.02432,72.79588],[1,0,30,-40],[1.16667,11.17023,28.02432,72.79588],[1.33333,0,30,-40],[1.5,11.17023,28.02432,72.79588],[1.66667,0,30,-40],[1.83333,11.17023,28.02432,72.79588],[2,0,30,-40]]},"W4":{"rotation":[[0,0,0,-40],[0.20833,0,0,80],[0.33333,0,0,-40],[0.54167,0,0,80],[0.66667,0,0,-40],[0.875,0,0,80],[1,0,0,-40],[1.20833,0,0,80],[1.33333,0,0,-40],[1.54167,0,0,80],[1.66667,0,0,-40],[1.875,0,0,80],[2,0,0,-40]]},"bone11":{"rotation":[[0,22.5,0,0]]},"bone12":{"rotation":[[0,17.5,0,0]]},"l1":{"rotation":[[0,-7.48966,6.87708,53.24555],[1,-7.76852,16.78904,51.89081],[2,-7.48966,6.87708,53.24555]]},"l2":{"rotation":[[0,0,20,55],[1,0,30,55],[2,0,20,55]]},"l3":{"rotation":[[0,12.33976,36.85049,60.95564],[1,14.40708,46.58222,64.05072],[2,12.33976,36.85049,60.95564]]},"l4":{"rotation":[[0,-7.48966,-6.87708,-53.24555],[1,-7.76852,-16.78904,-51.89081],[2,-7.48966,-6.87708,-53.24555]]},"l5":{"rotation":[[0,0,-20,-55],[1,0,-30,-55],[2,0,-20,-55]]},"l6":{"rotation":[[0,12.33976,-36.85049,-60.95564],[1,14.40708,-46.58222,-64.05072],[2,12.33976,-36.85049,-60.95564]]}}},"fly":{"loop":"loop","length":2,"bones":{"head":{"rotation":[[0,-7.5,0,0],[1,-12.5,0,0],[2,-7.5,0,0],[3,-12.5,0,0]],"position":[[0,0,0,0],[2,0,0,0]]},"L":{"rotation":[[0,0,0,5]]},"R":{"rotation":[[0,0,0,-5]]},"1":{"rotation":[[0,7.5,0,32.5],[1,17.5,0,32.5],[2,7.5,0,32.5]]},"bone4":{"rotation":[[0,20,0,0]]},"bone3":{"rotation":[[0,20,0,0]]},"2":{"rotation":[[0,7.5,0,-32.5],[1,17.5,0,-32.5],[2,7.5,0,-32.5]]},"bone5":{"rotation":[[0,20,0,0]]},"bone6":{"rotation":[[0,20,0,0]]},"body":{"position":[[0,0,0,0]]},"abdomen":{"rotation":[[0,10,0,0],[1,15,0,0],[2,10,0,0]]},"bone2":{"rotation":[[0,0,0,0]]},"W1":{"rotation":[[0,0,-30,40],[0.25,11.17023,-28.02432,-72.79588],[0.5,0,-30,40],[0.75,11.17023,-28.02432,-72.79588],[1,0,-30,40],[1.25,11.17023,-28.02432,-72.79588],[1.5,0,-30,40],[1.75,11.17023,-28.02432,-72.79588],[2,0,-30,40]]},"W2":{"rotation":[[0,0,0,40],[0.29167,0,0,-70],[0.5,0,0,40],[0.79167,0,0,-70],[1,0,0,40],[1.29167,0,0,-70],[1.5,0,0,40],[1.79167,0,0,-70],[2,0,0,40]]},"W3":{"rotation":[[0,0,30,-40],[0.25,11.17023,28.02432,72.79588],[0.5,0,30,-40],[0.75,11.17023,28.02432,72.79588],[1,0,30,-40],[1.25,11.17023,28.02432,72.79588],[1.5,0,30,-40],[1.75,11.17023,28.02432,72.79588],[2,0,30,-40]]},"W4":{"rotation":[[0,0,0,-40],[0.29167,0,0,70],[0.5,0,0,-40],[0.79167,0,0,70],[1,0,0,-40],[1.29167,0,0,70],[1.5,0,0,-40],[1.79167,0,0,70],[2,0,0,-40]]},"bone11":{"rotation":[[0,22.5,0,0]]},"bone12":{"rotation":[[0,17.5,0,0]]},"l1":{"rotation":[[0,-7.63074,-12.95254,55.86748],[1,-8.73739,-12.2403,60.93866],[2,-7.63074,-12.95254,55.86748]]},"l2":{"rotation":[[0,0,0,55],[1,0,0,60],[2,0,0,55]]},"l3":{"rotation":[[0,10.3141,17.2294,56.5667],[1,11.79198,16.27014,61.69146],[2,10.3141,17.2294,56.5667]]},"l4":{"rotation":[[0,-7.63074,12.95254,-55.86748],[1,-8.73739,12.2403,-60.93866],[2,-7.63074,12.95254,-55.86748]]},"l5":{"rotation":[[0,0,0,-55],[1,0,0,-60],[2,0,0,-55]]},"l6":{"rotation":[[0,10.3141,-17.2294,-56.5667],[1,11.79198,-16.27014,-61.69146],[2,10.3141,-17.2294,-56.5667]]}}},"pat":{"loop":"once","length":0.16667,"bones":{"mothli":{"scale":[[0,1,1,1],[0.08333,1,0.3,1],[0.16667,1,1,1]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/mothli.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/mothli.geo.json new file mode 100644 index 0000000..0e23fd9 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/mothli.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.mothli","texture_width":128,"texture_height":64,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"World","pivot":[0,0.25,0]},{"name":"mothli","pivot":[0,0.25,0],"parent":"World"},{"name":"head","pivot":[0,3.25,-4],"parent":"mothli","cubes":[{"origin":[-2,1.25,-6],"size":[4,4,4],"uv":{"north":{"uv":[17,21],"uv_size":[4,4]},"east":{"uv":[21,20],"uv_size":[4,4]},"south":{"uv":[7,24],"uv_size":[4,4]},"west":{"uv":[21,24],"uv_size":[4,4]},"up":{"uv":[4,29],"uv_size":[-4,-4]},"down":{"uv":[29,14],"uv_size":[-4,4]}}}]},{"name":"Eyes","pivot":[0,-0.75,0.25],"parent":"head"},{"name":"L","pivot":[1.5625,3.25,-5.3225],"parent":"Eyes"},{"name":"R","pivot":[-1.5625,3.25,-5.3225],"parent":"Eyes"},{"name":"sensilles","pivot":[0,0.25,1],"parent":"head"},{"name":"1","pivot":[1.5,5.25,-5.875],"parent":"sensilles","cubes":[{"origin":[1,5.25,-6],"size":[1,1,0.25],"uv":{"north":{"uv":[13,20],"uv_size":[1,1]},"east":{"uv":[15,30],"uv_size":[1,1]},"south":{"uv":[16,30],"uv_size":[1,1]},"west":{"uv":[8,31],"uv_size":[1,1]},"up":{"uv":[10,32],"uv_size":[-1,-1]},"down":{"uv":[3,35],"uv_size":[-1,1]}}}]},{"name":"bone4","pivot":[1.5,6.25,-5.875],"parent":"1","cubes":[{"origin":[1,6.25,-6],"size":[1,2,0.25],"uv":{"north":{"uv":[13,18],"uv_size":[1,2]},"east":{"uv":[10,28],"uv_size":[1,2]},"south":{"uv":[24,28],"uv_size":[1,2]},"west":{"uv":[20,29],"uv_size":[1,2]},"up":{"uv":[36,3],"uv_size":[-1,-1]},"down":{"uv":[4,35],"uv_size":[-1,1]}}},{"origin":[2,6.25,-6],"size":[1,2,0.25],"uv":{"north":{"uv":[23,33],"uv_size":[1,2]},"east":{"uv":[12,34],"uv_size":[1,2]},"south":{"uv":[34,20],"uv_size":[1,2]},"west":{"uv":[34,22],"uv_size":[1,2]},"up":{"uv":[36,4],"uv_size":[-1,-1]},"down":{"uv":[5,35],"uv_size":[-1,1]}}}]},{"name":"bone3","pivot":[2,8.25,-5.875],"parent":"bone4","cubes":[{"origin":[2,8.25,-6],"size":[1,2,0.25],"uv":{"north":{"uv":[24,34],"uv_size":[1,2]},"east":{"uv":[34,24],"uv_size":[1,2]},"south":{"uv":[25,34],"uv_size":[1,2]},"west":{"uv":[26,34],"uv_size":[1,2]},"up":{"uv":[6,36],"uv_size":[-1,-1]},"down":{"uv":[7,35],"uv_size":[-1,1]}}},{"origin":[1,8.25,-6],"size":[1,1,0.25],"uv":{"north":{"uv":[7,35],"uv_size":[1,1]},"east":{"uv":[35,10],"uv_size":[1,1]},"south":{"uv":[35,11],"uv_size":[1,1]},"west":{"uv":[35,12],"uv_size":[1,1]},"up":{"uv":[14,36],"uv_size":[-1,-1]},"down":{"uv":[36,13],"uv_size":[-1,1]}}}]},{"name":"2","pivot":[-1.5,5.25,-5.875],"parent":"sensilles","cubes":[{"origin":[-2,5.25,-6],"size":[1,1,0.25],"uv":{"north":{"uv":[14,35],"uv_size":[1,1]},"east":{"uv":[35,14],"uv_size":[1,1]},"south":{"uv":[15,35],"uv_size":[1,1]},"west":{"uv":[35,15],"uv_size":[1,1]},"up":{"uv":[17,36],"uv_size":[-1,-1]},"down":{"uv":[18,35],"uv_size":[-1,1]}}}]},{"name":"bone5","pivot":[-1.5,6.25,-5.875],"parent":"2","cubes":[{"origin":[-2,6.25,-6],"size":[1,2,0.25],"uv":{"north":{"uv":[34,26],"uv_size":[1,2]},"east":{"uv":[27,34],"uv_size":[1,2]},"south":{"uv":[28,34],"uv_size":[1,2]},"west":{"uv":[34,28],"uv_size":[1,2]},"up":{"uv":[19,36],"uv_size":[-1,-1]},"down":{"uv":[20,35],"uv_size":[-1,1]}}},{"origin":[-3,6.25,-6],"size":[1,2,0.25],"uv":{"north":{"uv":[34,32],"uv_size":[1,2]},"east":{"uv":[33,34],"uv_size":[1,2]},"south":{"uv":[34,34],"uv_size":[1,2]},"west":{"uv":[35,0],"uv_size":[1,2]},"up":{"uv":[36,25],"uv_size":[-1,-1]},"down":{"uv":[36,25],"uv_size":[-1,1]}}}]},{"name":"bone6","pivot":[-2,8.25,-5.875],"parent":"bone5","cubes":[{"origin":[-2,8.25,-6],"size":[1,1,0.25],"uv":{"north":{"uv":[20,35],"uv_size":[1,1]},"east":{"uv":[35,20],"uv_size":[1,1]},"south":{"uv":[21,35],"uv_size":[1,1]},"west":{"uv":[35,21],"uv_size":[1,1]},"up":{"uv":[23,36],"uv_size":[-1,-1]},"down":{"uv":[36,22],"uv_size":[-1,1]}}},{"origin":[-3,8.25,-6],"size":[1,2,0.25],"uv":{"north":{"uv":[29,34],"uv_size":[1,2]},"east":{"uv":[30,34],"uv_size":[1,2]},"south":{"uv":[31,34],"uv_size":[1,2]},"west":{"uv":[32,34],"uv_size":[1,2]},"up":{"uv":[24,36],"uv_size":[-1,-1]},"down":{"uv":[36,23],"uv_size":[-1,1]}}}]},{"name":"body","pivot":[0,3.25,-1.75],"parent":"mothli","cubes":[{"origin":[-2,1.25,-2],"size":[4,4,3],"uv":{"north":{"uv":[17,25],"uv_size":[4,4]},"east":{"uv":[4,25],"uv_size":[3,4]},"south":{"uv":[25,18],"uv_size":[4,4]},"west":{"uv":[27,0],"uv_size":[3,4]},"up":{"uv":[31,7],"uv_size":[-4,-3]},"down":{"uv":[31,7],"uv_size":[-4,3]}}},{"origin":[-3,0.75,-4],"size":[6,5.5,2],"uv":{"north":{"uv":[7,18],"uv_size":[6,6]},"east":{"uv":[11,24],"uv_size":[2,6]},"south":{"uv":[21,0],"uv_size":[6,6]},"west":{"uv":[13,27],"uv_size":[2,6]},"up":{"uv":[33,12],"uv_size":[-6,-2]},"down":{"uv":[33,12],"uv_size":[-6,2]}}}]},{"name":"abdomen","pivot":[0,3,1],"parent":"body","cubes":[{"origin":[-1.99,1.15,0],"size":[3.98,3.98,5.98],"uv":{"north":{"uv":[25,22],"uv_size":[4,4]},"east":{"uv":[21,6],"uv_size":[6,4]},"south":{"uv":[25,26],"uv_size":[4,4]},"west":{"uv":[21,10],"uv_size":[6,4]},"up":{"uv":[17,27],"uv_size":[-4,-6]},"down":{"uv":[25,14],"uv_size":[-4,6]}}}]},{"name":"bone2","pivot":[0,3,5.49],"parent":"abdomen","cubes":[{"origin":[-1.5,2.11,5.29761],"size":[3,2.5,2],"pivot":[0,2.98097,5.83567],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[7,28],"uv_size":[3,3]},"east":{"uv":[15,27],"uv_size":[2,3]},"south":{"uv":[21,28],"uv_size":[3,3]},"west":{"uv":[0,29],"uv_size":[2,3]},"up":{"uv":[5,31],"uv_size":[-3,-2]},"down":{"uv":[32,14],"uv_size":[-3,2]}}}]},{"name":"Wings","pivot":[0,3,-1.75],"parent":"body"},{"name":"W1","pivot":[1.5,5,-2.25],"parent":"Wings","cubes":[{"origin":[1.5,5.01,-2.75],"size":[7,0.01,7],"uv":{"north":{"uv":[57,0],"uv_size":[7,0]},"east":{"uv":[56.22222,0],"uv_size":[7.77778,0]},"south":{"uv":[57,0],"uv_size":[7,2]},"west":{"uv":[57,0],"uv_size":[7,2]},"up":{"uv":[21,7],"uv_size":[-7,-7]},"down":{"uv":[21,0],"uv_size":[-7,7]}}}]},{"name":"W2","pivot":[1.5,5,-1.25],"parent":"Wings","cubes":[{"origin":[1.5,5,-1.75],"size":[7,0.01,9],"uv":{"north":{"uv":[64,0],"uv_size":[0,0]},"east":{"uv":[64,0],"uv_size":[0,0]},"south":{"uv":[57,0],"uv_size":[7,0]},"west":{"uv":[59,0],"uv_size":[5,0]},"up":{"uv":[7,9],"uv_size":[-7,-9]},"down":{"uv":[7,0],"uv_size":[-7,9]}}}]},{"name":"W3","pivot":[-1.5,5,-2.25],"parent":"Wings","cubes":[{"origin":[-8.5,5.01,-2.75],"size":[7,0.01,7],"uv":{"north":{"uv":[57,0],"uv_size":[7,1]},"east":{"uv":[56.22222,0],"uv_size":[7.77778,8]},"south":{"uv":[57,0],"uv_size":[7,2]},"west":{"uv":[57,0],"uv_size":[7,2]},"up":{"uv":[21,21],"uv_size":[-7,-7]},"down":{"uv":[21,14],"uv_size":[-7,7]}}}]},{"name":"W4","pivot":[-1.5,5,-1.25],"parent":"Wings","cubes":[{"origin":[-8.5,5,-1.75],"size":[7,0.01,9],"uv":{"north":{"uv":[57,0],"uv_size":[7,2]},"east":{"uv":[57,0],"uv_size":[7,12]},"south":{"uv":[57,0],"uv_size":[7,2]},"west":{"uv":[57,0],"uv_size":[7,2]},"up":{"uv":[7,18],"uv_size":[-7,-9]},"down":{"uv":[7,9],"uv_size":[-7,9]}}}]},{"name":"fur","pivot":[0,3.25,-1.75],"parent":"body"},{"name":"right","pivot":[0,3.25,-1.75],"parent":"fur"},{"name":"bone15","pivot":[2,3.25,0.25],"parent":"right","cubes":[{"origin":[2,1.25,0.25],"size":[2,4,0.01],"pivot":[2,3.25,0.25],"rotation":[0,-45,0],"uv":{"north":{"uv":[38,0],"uv_size":[-2,4]},"east":{"uv":[62,0],"uv_size":[0,4]},"south":{"uv":[36,4],"uv_size":[2,-4]},"west":{"uv":[62,0],"uv_size":[0,4]},"up":{"uv":[64,0],"uv_size":[-2,0]},"down":{"uv":[64,0],"uv_size":[-2,0]}}}]},{"name":"bone14","pivot":[2,3.25,0.25],"parent":"right","cubes":[{"origin":[1.75,1.25,1.75],"size":[2,4,0.01],"pivot":[1.75,3.25,1.75],"rotation":[0,-45,0],"uv":{"north":{"uv":[38,0],"uv_size":[-2,4]},"east":{"uv":[62,0],"uv_size":[0,4]},"south":{"uv":[36,0],"uv_size":[2,4]},"west":{"uv":[62,0],"uv_size":[0,4]},"up":{"uv":[64,0],"uv_size":[-2,0]},"down":{"uv":[64,0],"uv_size":[-2,0]}}}]},{"name":"bone13","pivot":[1.75,3.25,1.75],"parent":"right","cubes":[{"origin":[2,1.25,-1.75],"size":[2,4,0.01],"pivot":[2,3.25,-1.75],"rotation":[0,-45,0],"uv":{"north":{"uv":[38,0],"uv_size":[-2,4]},"east":{"uv":[62,0],"uv_size":[0,4]},"south":{"uv":[36,0],"uv_size":[2,4]},"west":{"uv":[62,0],"uv_size":[0,4]},"up":{"uv":[64,0],"uv_size":[-2,0]},"down":{"uv":[64,0],"uv_size":[-2,0]}}}]},{"name":"up","pivot":[0,3.25,-1.75],"parent":"fur"},{"name":"bone11","pivot":[0,5.25,0],"parent":"up","cubes":[{"origin":[-2,5.25,0],"size":[4,2,0.01],"pivot":[0,5.25,0],"rotation":[-45,0,0],"uv":{"north":{"uv":[38,0],"uv_size":[4,2]},"east":{"uv":[60,0],"uv_size":[0,2]},"south":{"uv":[38,0],"uv_size":[4,2]},"west":{"uv":[60,0],"uv_size":[0,2]},"up":{"uv":[60,0],"uv_size":[4,0]},"down":{"uv":[60,0],"uv_size":[4,0]}}}]},{"name":"bone12","pivot":[0,5.25,-1.75],"parent":"up","cubes":[{"origin":[-2,5.25,-1.75],"size":[4,2,0.01],"pivot":[0,5.25,-1.75],"rotation":[-45,0,0],"uv":{"north":{"uv":[38,0],"uv_size":[4,2]},"east":{"uv":[60,0],"uv_size":[0,2]},"south":{"uv":[38,0],"uv_size":[4,2]},"west":{"uv":[60,0],"uv_size":[0,2]},"up":{"uv":[60,0],"uv_size":[4,0]},"down":{"uv":[60,0],"uv_size":[4,0]}}}]},{"name":"left","pivot":[0,3.25,-1.75],"parent":"fur"},{"name":"bone8","pivot":[-2,3.25,0.25],"parent":"left","cubes":[{"origin":[-3.75,1.25,1.75],"size":[2,4,0.01],"pivot":[-1.75,3.25,1.75],"rotation":[0,45,0],"uv":{"north":{"uv":[36,0],"uv_size":[2,4]},"east":{"uv":[62,0],"uv_size":[0,4]},"south":{"uv":[38,0],"uv_size":[-2,4]},"west":{"uv":[62,0],"uv_size":[0,4]},"up":{"uv":[62,0],"uv_size":[2,0]},"down":{"uv":[62,0],"uv_size":[2,0]}}}]},{"name":"bone9","pivot":[-2,3.25,0.25],"parent":"left","cubes":[{"origin":[-4,1.25,0.25],"size":[2,4,0.01],"pivot":[-2,3.25,0.25],"rotation":[0,45,0],"uv":{"north":{"uv":[36,0],"uv_size":[2,4]},"east":{"uv":[62,0],"uv_size":[0,4]},"south":{"uv":[38,0],"uv_size":[-2,4]},"west":{"uv":[62,0],"uv_size":[0,4]},"up":{"uv":[62,0],"uv_size":[2,0]},"down":{"uv":[62,0],"uv_size":[2,0]}}}]},{"name":"bone10","pivot":[-1.75,3.25,1.75],"parent":"left","cubes":[{"origin":[-4,1.25,-1.75],"size":[2,4,0.01],"pivot":[-2,3.25,-1.75],"rotation":[0,45,0],"uv":{"north":{"uv":[36,0],"uv_size":[2,4]},"east":{"uv":[62,0],"uv_size":[0,4]},"south":{"uv":[38,0],"uv_size":[-2,4]},"west":{"uv":[62,0],"uv_size":[0,4]},"up":{"uv":[62,0],"uv_size":[2,0]},"down":{"uv":[62,0],"uv_size":[2,0]}}}]},{"name":"legs","pivot":[0,0.25,0],"parent":"mothli"},{"name":"l1","pivot":[2,2.25,-3],"parent":"legs","cubes":[{"origin":[2,1.25,-4.01],"size":[3,2,2],"uv":{"north":{"uv":[29,16],"uv_size":[3,2]},"east":{"uv":[17,33],"uv_size":[2,2]},"south":{"uv":[17,29],"uv_size":[3,2]},"west":{"uv":[19,33],"uv_size":[2,2]},"up":{"uv":[32,20],"uv_size":[-3,-2]},"down":{"uv":[32,20],"uv_size":[-3,2]}}}]},{"name":"l2","pivot":[2,2.25,-1],"parent":"legs","cubes":[{"origin":[2,1.25,-2],"size":[3,2,2],"uv":{"north":{"uv":[29,22],"uv_size":[3,2]},"east":{"uv":[21,33],"uv_size":[2,2]},"south":{"uv":[29,24],"uv_size":[3,2]},"west":{"uv":[33,30],"uv_size":[2,2]},"up":{"uv":[32,28],"uv_size":[-3,-2]},"down":{"uv":[32,28],"uv_size":[-3,2]}}}]},{"name":"l3","pivot":[2,2.25,1],"parent":"legs","cubes":[{"origin":[2,1.25,0],"size":[3,2,2],"uv":{"north":{"uv":[30,0],"uv_size":[3,2]},"east":{"uv":[0,34],"uv_size":[2,2]},"south":{"uv":[30,2],"uv_size":[3,2]},"west":{"uv":[34,4],"uv_size":[2,2]},"up":{"uv":[13,32],"uv_size":[-3,-2]},"down":{"uv":[27,30],"uv_size":[-3,2]}}}]},{"name":"l4","pivot":[-2,2.25,-3],"parent":"legs","cubes":[{"origin":[-5,1.25,-4.01],"size":[3,2,2],"uv":{"north":{"uv":[27,30],"uv_size":[3,2]},"east":{"uv":[34,6],"uv_size":[2,2]},"south":{"uv":[30,30],"uv_size":[3,2]},"west":{"uv":[8,34],"uv_size":[2,2]},"up":{"uv":[5,33],"uv_size":[-3,-2]},"down":{"uv":[34,4],"uv_size":[-3,2]}}}]},{"name":"l5","pivot":[-2,2.25,-1],"parent":"legs","cubes":[{"origin":[-5,1.25,-2],"size":[3,2,2],"uv":{"north":{"uv":[5,31],"uv_size":[3,2]},"east":{"uv":[34,8],"uv_size":[2,2]},"south":{"uv":[31,6],"uv_size":[3,2]},"west":{"uv":[10,34],"uv_size":[2,2]},"up":{"uv":[34,10],"uv_size":[-3,-2]},"down":{"uv":[18,31],"uv_size":[-3,2]}}}]},{"name":"l6","pivot":[-2,2.25,1],"parent":"legs","cubes":[{"origin":[-5,1.25,0],"size":[3,2,2],"uv":{"north":{"uv":[18,31],"uv_size":[3,2]},"east":{"uv":[34,16],"uv_size":[2,2]},"south":{"uv":[21,31],"uv_size":[3,2]},"west":{"uv":[34,18],"uv_size":[2,2]},"up":{"uv":[11,34],"uv_size":[-3,-2]},"down":{"uv":[35,14],"uv_size":[-3,2]}}}]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/peter.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/peter.geo.json new file mode 100644 index 0000000..dd7aa24 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/peter.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.peter","texture_width":128,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"Head","pivot":[0,24,0],"cubes":[{"origin":[-4,29,-4],"size":[8,4,8],"uv":{"north":{"uv":[46,43],"uv_size":[8,4]},"east":{"uv":[38,43],"uv_size":[8,4]},"south":{"uv":[62,43],"uv_size":[8,4]},"west":{"uv":[54,43],"uv_size":[8,4]},"up":{"uv":[54,43],"uv_size":[-8,-8]},"down":{"uv":[62,35],"uv_size":[-8,8]}}},{"origin":[-1,28,-6],"size":[2,2,2],"uv":{"north":{"uv":[28,54],"uv_size":[2,2]},"east":{"uv":[26,54],"uv_size":[2,2]},"south":{"uv":[32,54],"uv_size":[2,2]},"west":{"uv":[30,54],"uv_size":[2,2]},"up":{"uv":[30,54],"uv_size":[-2,-2]},"down":{"uv":[32,52],"uv_size":[-2,2]}}},{"origin":[-2.5,24,-6],"size":[5,2,1],"uv":{"north":{"uv":[27,50],"uv_size":[5,2]},"east":{"uv":[26,50],"uv_size":[1,2]},"south":{"uv":[33,50],"uv_size":[5,2]},"west":{"uv":[32,50],"uv_size":[1,2]},"up":{"uv":[32,50],"uv_size":[-5,-1]},"down":{"uv":[37,49],"uv_size":[-5,1]}}},{"origin":[-5,24,-5],"size":[10,5,9],"uv":{"north":{"uv":[9,44],"uv_size":[10,5]},"east":{"uv":[0,44],"uv_size":[9,5]},"south":{"uv":[28,44],"uv_size":[10,5]},"west":{"uv":[19,44],"uv_size":[9,5]},"up":{"uv":[19,44],"uv_size":[-10,-9]},"down":{"uv":[29,35],"uv_size":[-10,9]}}},{"origin":[-4,28.5,-4.3],"size":[8,2,6],"inflate":0.1,"uv":{"north":{"uv":[32,70],"uv_size":[8,2]},"east":{"uv":[26,70],"uv_size":[6,2]},"south":{"uv":[46,70],"uv_size":[8,2]},"west":{"uv":[40,70],"uv_size":[6,2]},"up":{"uv":[40,70],"uv_size":[-8,-6]},"down":{"uv":[48,64],"uv_size":[-8,6]}}}]},{"name":"Body","pivot":[0,24,0],"cubes":[{"origin":[-7,19,-5],"size":[14,5,10],"uv":{"north":{"uv":[10,30],"uv_size":[14,5]},"east":{"uv":[0,30],"uv_size":[10,5]},"south":{"uv":[34,30],"uv_size":[14,5]},"west":{"uv":[24,30],"uv_size":[10,5]},"up":{"uv":[24,30],"uv_size":[-14,-10]},"down":{"uv":[38,20],"uv_size":[-14,10]}}},{"origin":[-8,10,-6],"size":[16,9,11],"uv":{"north":{"uv":[11,11],"uv_size":[16,9]},"east":{"uv":[0,11],"uv_size":[11,9]},"south":{"uv":[38,11],"uv_size":[16,9]},"west":{"uv":[27,11],"uv_size":[11,9]},"up":{"uv":[27,11],"uv_size":[-16,-11]},"down":{"uv":[43,0],"uv_size":[-16,11]}}}]},{"name":"RightArm","pivot":[8,22,0.5],"rotation":[0,0,-15],"cubes":[{"origin":[7,12,-2.5],"size":[5,12,5],"uv":{"north":{"uv":[59,5],"uv_size":[5,12]},"east":{"uv":[54,5],"uv_size":[5,12]},"south":{"uv":[69,5],"uv_size":[5,12]},"west":{"uv":[64,5],"uv_size":[5,12]},"up":{"uv":[64,5],"uv_size":[-5,-5]},"down":{"uv":[69,0],"uv_size":[-5,5]}}}]},{"name":"RightItemPivot","pivot":[9,13,-2],"parent":"RightArm"},{"name":"LeftArm","pivot":[-8,22,0.5],"rotation":[0,0,15],"cubes":[{"origin":[-12,12,-2.5],"size":[5,12,5],"uv":{"north":{"uv":[59,22],"uv_size":[5,12]},"east":{"uv":[54,22],"uv_size":[5,12]},"south":{"uv":[69,22],"uv_size":[5,12]},"west":{"uv":[64,22],"uv_size":[5,12]},"up":{"uv":[64,22],"uv_size":[-5,-5]},"down":{"uv":[69,17],"uv_size":[-5,5]}}}]},{"name":"LeftItemPivot","pivot":[-9,13,-2],"parent":"LeftArm"},{"name":"RightLeg","pivot":[1.9,12,0],"cubes":[{"origin":[0,0,-3.5],"size":[6,10,7],"uv":{"north":{"uv":[45,54],"uv_size":[6,10]},"east":{"uv":[38,54],"uv_size":[7,10]},"south":{"uv":[58,54],"uv_size":[6,10]},"west":{"uv":[51,54],"uv_size":[7,10]},"up":{"uv":[51,54],"uv_size":[-6,-7]},"down":{"uv":[57,47],"uv_size":[-6,7]}}}]},{"name":"LeftLeg","pivot":[-1.9,12,0],"cubes":[{"origin":[-6,0,-3.5],"size":[6,10,7],"uv":{"north":{"uv":[7,56],"uv_size":[6,10]},"east":{"uv":[0,56],"uv_size":[7,10]},"south":{"uv":[20,56],"uv_size":[6,10]},"west":{"uv":[13,56],"uv_size":[7,10]},"up":{"uv":[13,56],"uv_size":[-6,-7]},"down":{"uv":[19,49],"uv_size":[-6,7]}}}]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/repo.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/repo.anim.json new file mode 100644 index 0000000..e85841d --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/repo.anim.json @@ -0,0 +1 @@ +{"autoplay":[],"clips":{"painting":{"loop":"once","length":0,"bones":{"head":{"position":[[0,0,4,0]]},"upperhead":{"position":[[0,0,4,0]]},"rightarm":{"position":[[0,17,0,0]]},"leftarm":{"position":[[0,-18,0,0]]},"rightleg":{"position":[[0,13,0,0]]},"leftleg":{"position":[[0,-15,0,0]]}}},"yap":{"loop":"loop","length":0.83333,"bones":{"upperhead":{"rotation":[[0,0,0,0],[0.08333,25,0,0],[0.20833,0,0,0],[0.29167,30,0,0],[0.41667,0,0,0],[0.5,17.5,0,0],[0.625,0,0,0],[0.70833,25,0,0],[0.83333,0,0,0]]}}},"crouching":{"loop":"loop","length":0,"bones":{"head":{"position":[[0,0,-0.25,0]]},"thigh_L":{"scale":[[0,0,0,0]]},"thigh_R":{"scale":[[0,0,0,0]]},"bottomleg_R":{"position":[[0,0,6,0]]},"bottomleg_L":{"position":[[0,0,6,0]]},"body":{"position":[[0,0,-5,0]]},"botbody":{"scale":[[0,0,0,0]]},"rightarm":{"rotation":[[0,0,0,-12.5]],"position":[[0,0,1,0]]},"toparm_R":{"scale":[[0,0,0,0]]},"botarm_R":{"position":[[0,-1,3.25,0]]},"leftarm":{"rotation":[[0,0,0,12.5]],"position":[[0,0,1,0]]},"toparm_R2":{"scale":[[0,0,0,0]]},"botarm_R2":{"position":[[0,1,3.25,0]]},"root":{"position":[[0,0,2,0]]},"torso":{"position":[[0,0,-6,0]]},"legs":{"position":[[0,0,-6,0]]},"arms":{"position":[[0,0,0.75,0]]}}},"jumpdown":{"loop":"once","length":0.25,"bones":{"root":{"scale":[[0,1,0.9,1],[0.25,1,1,1]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/repo.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/repo.geo.json new file mode 100644 index 0000000..07d58bb --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/repo.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.repo","texture_width":624,"texture_height":64,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"root","pivot":[0,0,0]},{"name":"torso","pivot":[0,8,0],"parent":"root"},{"name":"body","pivot":[0,9,-0.5],"parent":"torso"},{"name":"topbody","pivot":[0,13,-0.5],"parent":"body","cubes":[{"origin":[-3.5,13,-3.5],"size":[7,4,7],"uv":{"north":{"uv":[590,5],"uv_size":[7,4]},"east":{"uv":[590,9],"uv_size":[7,4]},"south":{"uv":[590,13],"uv_size":[7,4]},"west":{"uv":[573,32],"uv_size":[7,4]},"up":{"uv":[567,23],"uv_size":[-7,-7]},"down":{"uv":[574,21],"uv_size":[-7,7]}}}]},{"name":"head","pivot":[0,17,0],"parent":"topbody","cubes":[{"origin":[-3.25,16.75,-3.25],"size":[6.5,2,6.5],"uv":{"north":{"uv":[596,23],"uv_size":[7,2]},"east":{"uv":[596,25],"uv_size":[7,2]},"south":{"uv":[597,0],"uv_size":[7,2]},"west":{"uv":[597,2],"uv_size":[7,2]},"up":{"uv":[575,7],"uv_size":[-7,-7]},"down":{"uv":[575,7],"uv_size":[-7,7]}}}]},{"name":"upperhead","pivot":[0,19,3.25],"parent":"head"},{"name":"googly","pivot":[0,18.65,0.5],"parent":"upperhead","cubes":[{"origin":[-3.52,19.15,-3.27],"size":[2.52,3,1.25],"uv":{"north":{"uv":[32,0],"uv_size":[3,3]},"east":{"uv":[38,0],"uv_size":[1,3]},"south":{"uv":[32,3],"uv_size":[3,3]},"west":{"uv":[35,6],"uv_size":[1,3]},"up":{"uv":[41,4],"uv_size":[-3,-1]},"down":{"uv":[39,6],"uv_size":[-3,1]}}},{"origin":[1,19.15,-3.27],"size":[2.52,3,1.25],"uv":{"north":{"uv":[35,0],"uv_size":[-3,3]},"east":{"uv":[36,6],"uv_size":[-1,3]},"south":{"uv":[35,3],"uv_size":[-3,3]},"west":{"uv":[39,0],"uv_size":[-1,3]},"up":{"uv":[41,3],"uv_size":[-3,1]},"down":{"uv":[39,6],"uv_size":[-3,1]}}}]},{"name":"rightgoogle","pivot":[2.25,20.65,-3.95],"parent":"googly","cubes":[{"origin":[1.75,20.15,-3.97],"size":[1,1,0.75],"uv":{"north":{"uv":[16,0],"uv_size":[2,2]},"east":{"uv":[18,2],"uv_size":[1,2]},"south":{"uv":[16,2],"uv_size":[2,2]},"west":{"uv":[19,2],"uv_size":[1,2]},"up":{"uv":[18,5],"uv_size":[-2,-1]},"down":{"uv":[22,0],"uv_size":[-2,1]}}}]},{"name":"rightgoogle_light","pivot":[2.75,21.15,-4.8],"parent":"rightgoogle"},{"name":"leftgoogle","pivot":[-2.25,20.65,-3.95],"parent":"googly","cubes":[{"origin":[-2.75,20.15,-3.97],"size":[1,1,0.75],"uv":{"north":{"uv":[16,0],"uv_size":[2,2]},"east":{"uv":[20,1],"uv_size":[1,2]},"south":{"uv":[18,0],"uv_size":[2,2]},"west":{"uv":[18,4],"uv_size":[1,2]},"up":{"uv":[21,5],"uv_size":[-2,-1]},"down":{"uv":[22,3],"uv_size":[-2,1]}}}]},{"name":"leftgoogle_light","pivot":[-1.75,21.15,-4.8],"parent":"leftgoogle"},{"name":"mound","pivot":[2,16,-3],"parent":"upperhead","cubes":[{"origin":[-3.25,18.75,-3.25],"size":[6.5,4.5,6.5],"uv":{"north":{"uv":[582,24],"uv_size":[7,5]},"east":{"uv":[574,27],"uv_size":[7,5]},"south":{"uv":[566,28],"uv_size":[7,5]},"west":{"uv":[588,18],"uv_size":[7,5]},"up":{"uv":[575,21],"uv_size":[-7,-7]},"down":{"uv":[582,0],"uv_size":[-7,7]}}},{"origin":[-3,19,-3],"size":[6,4,6],"uv":{"north":{"uv":[560,29],"uv_size":[6,4]},"east":{"uv":[560,33],"uv_size":[6,4]},"south":{"uv":[566,33],"uv_size":[6,4]},"west":{"uv":[580,34],"uv_size":[6,4]},"up":{"uv":[588,24],"uv_size":[-6,-6]},"down":{"uv":[566,23],"uv_size":[-6,6]}}}]},{"name":"LeftSpyglassPivot","pivot":[-2,20,-5],"parent":"head"},{"name":"RightSpyglassPivot","pivot":[2,20,-5],"parent":"head"},{"name":"arms","pivot":[0,16,-0.5],"parent":"topbody"},{"name":"rightarm","pivot":[3.75,15.5,0],"parent":"arms","rotation":[0,-10,-15]},{"name":"toparm_R","pivot":[3.75,15.5,0],"parent":"rightarm","cubes":[{"origin":[3.17077,12.34442,-1.25],"size":[2,4,2],"uv":{"north":{"uv":[584,38],"uv_size":[2,4]},"east":{"uv":[598,27],"uv_size":[2,4]},"south":{"uv":[598,31],"uv_size":[2,4]},"west":{"uv":[598,35],"uv_size":[2,4]},"up":{"uv":[580,38],"uv_size":[-2,-2]},"down":{"uv":[603,16],"uv_size":[-2,2]}}}]},{"name":"botarm_R","pivot":[5.25,12.5,0],"parent":"rightarm","cubes":[{"origin":[3.17077,8.34442,-1.25],"size":[2,4,2],"uv":{"north":{"uv":[599,16],"uv_size":[2,4]},"east":{"uv":[598,39],"uv_size":[2,4]},"south":{"uv":[600,4],"uv_size":[2,4]},"west":{"uv":[600,8],"uv_size":[2,4]},"up":{"uv":[603,20],"uv_size":[-2,-2]},"down":{"uv":[603,20],"uv_size":[-2,2]}}}]},{"name":"RightItemPivot","pivot":[3.75,8.5,0],"parent":"botarm_R"},{"name":"leftarm","pivot":[-3.75,15.5,0],"parent":"arms","rotation":[0,10,15]},{"name":"toparm_R2","pivot":[-3.75,15.5,0],"parent":"leftarm","cubes":[{"origin":[-5.17077,12.34442,-1.25],"size":[2,4,2],"uv":{"north":{"uv":[600,12],"uv_size":[2,4]},"east":{"uv":[586,40],"uv_size":[2,4]},"south":{"uv":[600,27],"uv_size":[2,4]},"west":{"uv":[588,40],"uv_size":[2,4]},"up":{"uv":[604,6],"uv_size":[-2,-2]},"down":{"uv":[604,6],"uv_size":[-2,2]}}}]},{"name":"botarm_R2","pivot":[-5.25,12.5,0],"parent":"leftarm","cubes":[{"origin":[-5.17077,8.34442,-1.25],"size":[2,4,2],"uv":{"north":{"uv":[590,40],"uv_size":[2,4]},"east":{"uv":[600,31],"uv_size":[2,4]},"south":{"uv":[592,40],"uv_size":[2,4]},"west":{"uv":[594,40],"uv_size":[2,4]},"up":{"uv":[604,10],"uv_size":[-2,-2]},"down":{"uv":[604,10],"uv_size":[-2,2]}}}]},{"name":"LeftItemPivot","pivot":[-3.75,8.5,0],"parent":"botarm_R2"},{"name":"botbody","pivot":[0.875,10.75,-2.875],"parent":"body","cubes":[{"origin":[-3.5,8,-3.5],"size":[7,5,7],"uv":{"north":{"uv":[581,29],"uv_size":[7,5]},"east":{"uv":[589,23],"uv_size":[7,5]},"south":{"uv":[588,29],"uv_size":[7,5]},"west":{"uv":[590,0],"uv_size":[7,5]},"up":{"uv":[582,14],"uv_size":[-7,-7]},"down":{"uv":[582,14],"uv_size":[-7,7]}}},{"origin":[-3.875,7.75,-3.875],"size":[7.75,6,7.75],"uv":{"north":{"uv":[574,21],"uv_size":[8,6]},"east":{"uv":[582,0],"uv_size":[8,6]},"south":{"uv":[582,6],"uv_size":[8,6]},"west":{"uv":[582,12],"uv_size":[8,6]},"up":{"uv":[568,8],"uv_size":[-8,-8]},"down":{"uv":[568,8],"uv_size":[-8,8]}}}]},{"name":"LeftParrotPivot","pivot":[-5,16,0],"parent":"body"},{"name":"RightParrotPivot","pivot":[5,16,0],"parent":"body"},{"name":"legs","pivot":[0,8,0],"parent":"root"},{"name":"leftleg","pivot":[-1.5,7.75,-0.5],"parent":"legs"},{"name":"thigh_L","pivot":[-1,7.75,-0.5],"parent":"leftleg","cubes":[{"origin":[-3.25,2.75,-2],"size":[3,6,4],"uv":{"north":{"uv":[595,28],"uv_size":[3,6]},"east":{"uv":[586,34],"uv_size":[4,6]},"south":{"uv":[572,36],"uv_size":[3,6]},"west":{"uv":[590,34],"uv_size":[4,6]},"up":{"uv":[566,41],"uv_size":[-3,-4]},"down":{"uv":[600,4],"uv_size":[-3,4]}}}]},{"name":"bottomleg_L","pivot":[-1.5,4,0],"parent":"leftleg","cubes":[{"origin":[-2.75,0,-1.25],"size":[2,4,2.5],"uv":{"north":{"uv":[600,35],"uv_size":[2,4]},"east":{"uv":[566,37],"uv_size":[3,4]},"south":{"uv":[596,40],"uv_size":[2,4]},"west":{"uv":[597,8],"uv_size":[3,4]},"up":{"uv":[601,23],"uv_size":[-2,-3]},"down":{"uv":[567,41],"uv_size":[-2,3]}}}]},{"name":"rightleg","pivot":[1.5,7.75,-0.5],"parent":"legs"},{"name":"thigh_R","pivot":[1,7.75,-0.5],"parent":"rightleg","cubes":[{"origin":[0.25,2.75,-2],"size":[3,6,4],"uv":{"north":{"uv":[575,36],"uv_size":[3,6]},"east":{"uv":[594,34],"uv_size":[4,6]},"south":{"uv":[560,37],"uv_size":[3,6]},"west":{"uv":[595,17],"uv_size":[4,6]},"up":{"uv":[572,41],"uv_size":[-3,-4]},"down":{"uv":[600,12],"uv_size":[-3,4]}}}]},{"name":"bottomleg_R","pivot":[1.5,4,0],"parent":"rightleg","cubes":[{"origin":[0.75,0,-1.25],"size":[2,4,2.5],"uv":{"north":{"uv":[600,39],"uv_size":[2,4]},"east":{"uv":[578,38],"uv_size":[3,4]},"south":{"uv":[563,41],"uv_size":[2,4]},"west":{"uv":[581,38],"uv_size":[3,4]},"up":{"uv":[569,44],"uv_size":[-2,-3]},"down":{"uv":[571,41],"uv_size":[-2,3]}}}]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/turbo_granny.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/turbo_granny.anim.json new file mode 100644 index 0000000..f2681ea --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/turbo_granny.anim.json @@ -0,0 +1 @@ +{"autoplay":[],"clips":{"blink":{"loop":"once","length":0.5,"bones":{"lid_R":{"position":[[0,0,0,0],[0.125,0,-2.15,0],[0.29167,0,0,0],[0.5,0,0,0]]},"lid_L":{"position":[[0,0,0,0],[0.125,0,-2.25,0],[0.29167,0,0,0],[0.5,0,0,0]]},"eyelinertop_R":{"position":[[0,0,0,0],[0.125,0,-2,0],[0.29167,0,0,0]]},"eyelinertop_L":{"position":[[0,0,0,0],[0.125,0,-2,0],[0.29167,0,0,0]]},"eyemiddle_R":{"position":[[0,0,0,0],[0.125,0,-1.7,0],[0.29167,0,0,0]],"scale":[[0,1,1,1],[0.125,1,0.3,1],[0.29167,1,1,1]]},"eyemiddle_L":{"position":[[0,0,0,0],[0.125,0,-1.5,0],[0.29167,0,0,0]],"scale":[[0,1,1,1],[0.125,1,0.4,1],[0.29167,1,1,1]]}}},"judging":{"loop":"hold","length":2,"bones":{"lid_R":{"position":[[0,0,0,0],[0.25,0,-1,0]]},"lid_L":{"position":[[0,0,0,0],[0.25,0,-1,0]]},"eyelinertop_R":{"position":[[0,0,0,0],[0.25,0,-1,0]]},"eyelinertop_L":{"position":[[0,0,0,0],[0.25,0,-1,0]]},"bell":{"rotation":[[0.375,0,0,0],[0.5,0,0,-2.5],[0.625,0,0,0],[0.75,0,0,-2.5],[0.875,0,0,0],[1,0,0,-2.5],[1.125,0,0,0],[1.25,0,0,-2.5],[1.375,0,0,0],[1.5,0,0,-2.5],[1.625,0,0,0],[1.75,0,0,-2.5],[1.875,0,0,0],[2,0,0,-2.5]]},"plaque":{"rotation":[[0.375,0,0,0],[0.5,0,0,-2.5],[0.625,0,0,0],[0.75,0,0,-2.5],[0.875,0,0,0],[1,0,0,-2.5],[1.125,0,0,0],[1.25,0,0,-2.5],[1.375,0,0,0],[1.5,0,0,-2.5],[1.625,0,0,0],[1.75,0,0,-2.5],[1.875,0,0,0],[2,0,0,-2.5]]},"LeftArm":{"rotation":[[0,0,0,0],[0.25,0,0,17.5]]},"LeftArm2":{"rotation":[[0,0,0,0],[0.25,0,0,-55]],"position":[[0,0,0,0],[0.25,0.7,1.5,0]]},"RightArm":{"rotation":[[0,0,0,0],[0.25,0,0,-25]]},"RightArm2":{"rotation":[[0,0,0,0],[0.25,0,0,57.5]],"position":[[0,0,0,0],[0.25,-1.2,1,0]]},"RightLeg":{"rotation":[[0,0,0,0],[0.25,0,17.5,0]]},"LeftLeg":{"rotation":[[0,0,0,0],[0.25,0,-25,0]]},"LeftLeg2":{"rotation":[[0.25,0,0,0],[0.375,15,0,0],[0.5,0,0,0],[0.625,15,0,0],[0.75,0,0,0],[0.875,15,0,0],[1,0,0,0],[1.125,15,0,0],[1.25,0,0,0],[1.375,15,0,0],[1.5,0,0,0],[1.625,15,0,0],[1.75,0,0,0],[1.875,15,0,0],[2,0,0,0]]},"eyemiddle_R":{"position":[[0,0,0,0],[0.25,0,-1,0]],"scale":[[0,1,1,1],[0.25,1,0.6,1]]},"eyemiddle_L":{"position":[[0,0,0,0],[0.25,0,-0.9,0]],"scale":[[0,1,1,1],[0.25,1,0.6,1]]}}},"crouch":{"loop":"loop","length":0,"bones":{"root":{"position":[[0,0,1,0]]},"Head":{"position":[[0,0,-2,-1]]},"Body":{"rotation":[[0,-12.5,0,0]],"position":[[0,0,-1,-1]]},"bell":{"position":[[0,0,0,0]]},"plaque":{"position":[[0,0,0,0]]},"LeftArm":{"rotation":[[0,0,0,17.5]],"position":[[0,0,-2,0]]},"LeftArm2":{"rotation":[[0,0,0,5]],"position":[[0,0,0,0]]},"RightArm":{"rotation":[[0,0,0,-15]],"position":[[0,0,-2,0]]},"RightArm2":{"rotation":[[0,0,0,-5]],"position":[[0,0,0,0]]},"RightLeg":{"position":[[0,0,0,0]]},"RightLeg2":{"position":[[0,0,0,0]]},"LeftLeg":{"position":[[0,0,0,0]]},"LeftLeg2":{"position":[[0,0,0,0]]}}},"chilling":{"loop":"loop","length":1,"bones":{"root":{"rotation":[[0,90,0,0]],"position":[[0,0,-11,0]]},"LeftArm":{"rotation":[[0,285.02864,-61.61028,231.39246]]},"LeftArm2":{"rotation":[[0,35,0,0]],"position":[[0,0,0,-0.5]]},"RightArm":{"rotation":[[0,273.25215,50.76404,110.01027]],"position":[[0,-0.4,-0.6,0.8]]},"RightArm2":{"rotation":[[0,30,0,0]],"position":[[0,0,0,-1.1]]},"RightLeg":{"rotation":[[0,0,0,30]]},"RightLeg2":{"rotation":[[0,0,0,10]]},"LeftLeg":{"rotation":[[0,18.07555,11.0311,-19.7339]],"position":[[0,0,0.9,0.1]]},"LeftLeg2":{"rotation":[[0,12.5,0,0],[0.25,17.5,0,0],[0.5,7.5,0,0],[0.75,17.5,0,0],[1,12.5,0,0]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/turbo_granny.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/turbo_granny.geo.json new file mode 100644 index 0000000..a7751e1 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/turbo_granny.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.turbo_granny","texture_width":144,"texture_height":64,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"root","pivot":[0,16,0]},{"name":"Head","pivot":[-0.3,18.1,2.1],"parent":"root","cubes":[{"origin":[-6,15.5,-1],"size":[10,7.9,6],"uv":{"north":{"uv":[80,0],"uv_size":[10,8]},"east":{"uv":[97,12],"uv_size":[6,8]},"south":{"uv":[80,8],"uv_size":[10,8]},"west":{"uv":[100,0],"uv_size":[6,8]},"up":{"uv":[100,6],"uv_size":[-10,-6]},"down":{"uv":[100,6],"uv_size":[-10,6]}}},{"origin":[-2.4,16.2,-1.4],"size":[2.8,1.9,1.9],"uv":{"north":{"uv":[121,39],"uv_size":[3,2]},"east":{"uv":[123,35],"uv_size":[2,2]},"south":{"uv":[120,41],"uv_size":[3,2]},"west":{"uv":[117,43],"uv_size":[2,2]},"up":{"uv":[85,44],"uv_size":[-3,-2]},"down":{"uv":[125,8],"uv_size":[-3,2]}}},{"origin":[-1.5,17.6,-1.5],"size":[1,0.6,2],"uv":{"north":{"uv":[82,41],"uv_size":[1,1]},"east":{"uv":[112,45],"uv_size":[2,1]},"south":{"uv":[127,25],"uv_size":[1,1]},"west":{"uv":[125,35],"uv_size":[2,1]},"up":{"uv":[115,47],"uv_size":[-1,-2]},"down":{"uv":[126,36],"uv_size":[-1,2]}}},{"origin":[-5.9,17.6,-1.1],"size":[2,0.1,2],"pivot":[-4.9,15.7,-0.1],"rotation":[0,0,10],"uv":{"north":{"uv":[117,45],"uv_size":[2,1]},"east":{"uv":[125,38],"uv_size":[2,1]},"south":{"uv":[119,45],"uv_size":[2,1]},"west":{"uv":[125,39],"uv_size":[2,1]},"up":{"uv":[121,45],"uv_size":[-2,-2]},"down":{"uv":[123,43],"uv_size":[-2,2]}}},{"origin":[-5.6,16.8,-1.1],"size":[2,0.1,2],"uv":{"north":{"uv":[125,40],"uv_size":[2,1]},"east":{"uv":[121,45],"uv_size":[2,1]},"south":{"uv":[125,41],"uv_size":[2,1]},"west":{"uv":[125,42],"uv_size":[2,1]},"up":{"uv":[125,43],"uv_size":[-2,-2]},"down":{"uv":[125,43],"uv_size":[-2,2]}}},{"origin":[-5.1,16.1,-1.1],"size":[2,0.1,2],"pivot":[-4.1,14.2,-0.1],"rotation":[0,0,-13],"uv":{"north":{"uv":[123,45],"uv_size":[2,1]},"east":{"uv":[125,43],"uv_size":[2,1]},"south":{"uv":[125,44],"uv_size":[2,1]},"west":{"uv":[125,45],"uv_size":[2,1]},"up":{"uv":[84,46],"uv_size":[-2,-2]},"down":{"uv":[126,4],"uv_size":[-2,2]}}},{"origin":[0.9,16.1,-1.1],"size":[2,0.1,2],"pivot":[1.9,14.2,-0.1],"rotation":[0,0,13],"uv":{"north":{"uv":[82,46],"uv_size":[2,1]},"east":{"uv":[126,4],"uv_size":[2,1]},"south":{"uv":[126,5],"uv_size":[2,1]},"west":{"uv":[126,6],"uv_size":[2,1]},"up":{"uv":[126,8],"uv_size":[-2,-2]},"down":{"uv":[89,44],"uv_size":[-2,2]}}},{"origin":[1.4,16.8,-1.1],"size":[2,0.1,2],"uv":{"north":{"uv":[87,46],"uv_size":[2,1]},"east":{"uv":[126,7],"uv_size":[2,1]},"south":{"uv":[126,8],"uv_size":[2,1]},"west":{"uv":[89,46],"uv_size":[2,1]},"up":{"uv":[91,46],"uv_size":[-2,-2]},"down":{"uv":[93,44],"uv_size":[-2,2]}}},{"origin":[1.7,17.6,-1.1],"size":[2,0.1,2],"pivot":[2.7,15.7,-0.1],"rotation":[0,0,-10],"uv":{"north":{"uv":[126,9],"uv_size":[2,1]},"east":{"uv":[126,10],"uv_size":[2,1]},"south":{"uv":[91,46],"uv_size":[2,1]},"west":{"uv":[93,46],"uv_size":[2,1]},"up":{"uv":[126,18],"uv_size":[-2,-2]},"down":{"uv":[126,18],"uv_size":[-2,2]}}}]},{"name":"eyes","pivot":[-0.5,20,-0.1],"parent":"Head"},{"name":"sclera_L","pivot":[-1,18,1],"parent":"eyes","cubes":[{"origin":[-5,18,-0.85],"size":[4,3,2],"uv":{"north":{"uv":[115,28],"uv_size":[4,3]},"east":{"uv":[106,5],"uv_size":[2,3]},"south":{"uv":[115,31],"uv_size":[4,3]},"west":{"uv":[108,21],"uv_size":[2,3]},"up":{"uv":[123,37],"uv_size":[-4,-2]},"down":{"uv":[87,40],"uv_size":[-4,2]}}}]},{"name":"sclera_R","pivot":[0,18,1],"parent":"eyes","cubes":[{"origin":[-1,18,-0.85],"size":[4,3,2],"uv":{"north":{"uv":[115,34],"uv_size":[4,3]},"east":{"uv":[116,17],"uv_size":[2,3]},"south":{"uv":[116,4],"uv_size":[4,3]},"west":{"uv":[115,41],"uv_size":[2,3]},"up":{"uv":[124,6],"uv_size":[-4,-2]},"down":{"uv":[124,6],"uv_size":[-4,2]}}}]},{"name":"eyelid","pivot":[-0.5,19,3.9],"parent":"eyes"},{"name":"lid_R","pivot":[-0.5,19,3.9],"parent":"eyelid","cubes":[{"origin":[-0.1,20.5,-0.91],"size":[3.3,2.8,1],"uv":{"north":{"uv":[96,31],"uv_size":[3,3]},"east":{"uv":[83,37],"uv_size":[1,3]},"south":{"uv":[119,13],"uv_size":[3,3]},"west":{"uv":[118,25],"uv_size":[1,3]},"up":{"uv":[128,1],"uv_size":[-3,-1]},"down":{"uv":[128,1],"uv_size":[-3,1]}}}]},{"name":"lid_L","pivot":[-0.5,19,3.9],"parent":"eyelid","cubes":[{"origin":[-5.2,20.6,-0.91],"size":[3.5,2.6,1],"uv":{"north":{"uv":[116,7],"uv_size":[4,3]},"east":{"uv":[86,45],"uv_size":[1,3]},"south":{"uv":[116,10],"uv_size":[4,3]},"west":{"uv":[125,8],"uv_size":[1,3]},"up":{"uv":[127,27],"uv_size":[-4,-1]},"down":{"uv":[127,27],"uv_size":[-4,1]}}}]},{"name":"eyeliner","pivot":[0,18,0.85],"parent":"eyes"},{"name":"eyemiddle_R","pivot":[3,20.65,0.85],"parent":"eyeliner","cubes":[{"origin":[0.4,23.55,-1.05],"size":[2.3,0.3,2],"pivot":[3,20.65,0.85],"rotation":[0,0,-90],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}},{"origin":[3.6,23.55,-1.05],"size":[2.2,0.3,2],"pivot":[6.2,20.65,0.85],"rotation":[0,0,-90],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}}]},{"name":"eyemiddle_L","pivot":[1.2,20.65,0.85],"parent":"eyeliner","cubes":[{"origin":[-1.4,23.55,-1.05],"size":[2.3,0.3,2],"pivot":[1.2,20.65,0.85],"rotation":[0,0,-90],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}},{"origin":[-4.6,23.55,-1.05],"size":[2.2,0.3,2],"pivot":[-2,20.65,0.85],"rotation":[0,0,-90],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}}]},{"name":"eyebottom_L","pivot":[-1.5,15.15,0.85],"parent":"eyeliner","cubes":[{"origin":[-5.2,18.05,-1.05],"size":[3.5,0.5,2],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[123,28],"uv_size":[2,2]},"down":{"uv":[123,30],"uv_size":[2,2]}}},{"origin":[-2.2,24.65,-1.05],"size":[0.4,0.4,2],"pivot":[1.5,21.75,0.85],"rotation":[0,0,-90],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}}]},{"name":"eyebottom_R","pivot":[3.5,15.15,0.85],"parent":"eyeliner","cubes":[{"origin":[-0.2,18.05,-1.05],"size":[3.5,0.5,2],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}},{"origin":[-1,24.65,-1.05],"size":[0.4,0.4,2],"pivot":[2.7,21.75,0.85],"rotation":[0,0,-90],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}}]},{"name":"eyelinertop_R","pivot":[3.5,17.45,0.85],"parent":"eyeliner","cubes":[{"origin":[-0.2,20.25,-1.05],"size":[3.5,0.4,2],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}},{"origin":[-0.4,27.25,-1.05],"size":[0.2,0.3,2],"pivot":[3.3,24.35,0.85],"rotation":[0,0,-90],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}},{"origin":[0.9,27.25,-1.05],"size":[0.4,0.3,2],"pivot":[4.6,24.35,0.85],"rotation":[0,0,-90],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}},{"origin":[2.2,27.25,-1.05],"size":[0.2,0.3,2],"pivot":[5.9,24.35,0.85],"rotation":[0,0,-90],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}}]},{"name":"eyelinertop_L","pivot":[0.9,24.35,0.85],"parent":"eyeliner","cubes":[{"origin":[-2.8,27.25,-1.05],"size":[0.2,0.3,2],"pivot":[0.9,24.35,0.85],"rotation":[0,0,-90],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}},{"origin":[-5.2,20.25,-1.05],"size":[3.5,0.4,2],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}},{"origin":[-5.4,27.25,-1.05],"size":[0.2,0.3,2],"pivot":[-1.7,24.35,0.85],"rotation":[0,0,-90],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}},{"origin":[-4.1,27.25,-1.05],"size":[0.4,0.3,2],"pivot":[-0.4,24.35,0.85],"rotation":[0,0,-90],"uv":{"north":{"uv":[110,4],"uv_size":[2,1]},"east":{"uv":[112,20],"uv_size":[2,1]},"south":{"uv":[119,16],"uv_size":[2,1]},"west":{"uv":[125,23],"uv_size":[2,1]},"up":{"uv":[125,30],"uv_size":[-2,-2]},"down":{"uv":[125,30],"uv_size":[-2,2]}}}]},{"name":"eye_R","pivot":[1.65,19.65,0],"parent":"eyes","cubes":[{"origin":[0.3,18.4,-0.9],"size":[2.5,1.75,1],"uv":{"north":{"uv":[84,29],"uv_size":[3,2]},"east":{"uv":[109,45],"uv_size":[1,2]},"south":{"uv":[121,33],"uv_size":[3,2]},"west":{"uv":[110,45],"uv_size":[1,2]},"up":{"uv":[128,3],"uv_size":[-3,-1]},"down":{"uv":[128,11],"uv_size":[-3,1]}}}]},{"name":"eye_L","pivot":[-2.55,19.65,0],"parent":"eyes","cubes":[{"origin":[-4.7,18.4,-0.9],"size":[2.5,1.75,1],"uv":{"north":{"uv":[117,41],"uv_size":[3,2]},"east":{"uv":[125,30],"uv_size":[1,2]},"south":{"uv":[121,37],"uv_size":[3,2]},"west":{"uv":[111,45],"uv_size":[1,2]},"up":{"uv":[128,14],"uv_size":[-3,-1]},"down":{"uv":[128,14],"uv_size":[-3,1]}}}]},{"name":"ears","pivot":[0,16,0],"parent":"Head"},{"name":"leftear","pivot":[0.1,6.7,0.9],"parent":"ears","cubes":[{"origin":[-5,22.7,0.7],"size":[2.5,4.3,2.2],"uv":{"north":{"uv":[87,16],"uv_size":[3,4]},"east":{"uv":[87,40],"uv_size":[2,4]},"south":{"uv":[100,8],"uv_size":[3,4]},"west":{"uv":[120,8],"uv_size":[2,4]},"up":{"uv":[125,12],"uv_size":[-3,-2]},"down":{"uv":[125,13],"uv_size":[-3,2]}}},{"origin":[-4.9,22.7,0.8],"size":[2.3,4.25,1.1],"uv":{"north":{"uv":[89,40],"uv_size":[2,4]},"east":{"uv":[84,44],"uv_size":[1,4]},"south":{"uv":[91,40],"uv_size":[2,4]},"west":{"uv":[99,44],"uv_size":[1,4]},"up":{"uv":[128,17],"uv_size":[-2,-1]},"down":{"uv":[128,17],"uv_size":[-2,1]}}},{"origin":[-5.9,23.1,0.6],"size":[1.1,4.4,2.4],"pivot":[-4.8,23.7,1.6],"rotation":[0,0,14],"uv":{"north":{"uv":[100,44],"uv_size":[1,4]},"east":{"uv":[80,41],"uv_size":[2,4]},"south":{"uv":[124,20],"uv_size":[1,4]},"west":{"uv":[121,0],"uv_size":[2,4]},"up":{"uv":[127,20],"uv_size":[-1,-2]},"down":{"uv":[104,46],"uv_size":[-1,2]}}},{"origin":[-2.6,23.3,0.6],"size":[1,4.4,2.4],"pivot":[-1.6,23.7,1.6],"rotation":[0,0,-14],"uv":{"north":{"uv":[101,44],"uv_size":[1,4]},"east":{"uv":[121,16],"uv_size":[2,4]},"south":{"uv":[102,44],"uv_size":[1,4]},"west":{"uv":[121,20],"uv_size":[2,4]},"up":{"uv":[105,48],"uv_size":[-1,-2]},"down":{"uv":[127,24],"uv_size":[-1,2]}}},{"origin":[0.9,23,3.2],"size":[2.1,4.5,0.9],"pivot":[1.9,23.4,3.1],"rotation":[12.5,0,0],"uv":{"north":{"uv":[99,39],"uv_size":[2,5]},"east":{"uv":[98,42],"uv_size":[1,5]},"south":{"uv":[101,39],"uv_size":[2,5]},"west":{"uv":[95,43],"uv_size":[1,5]},"up":{"uv":[128,29],"uv_size":[-2,-1]},"down":{"uv":[128,29],"uv_size":[-2,1]}}},{"origin":[-4.8,23,3.2],"size":[2.2,4.5,0.9],"pivot":[-3.7,23.4,3.1],"rotation":[12.5,0,0],"uv":{"north":{"uv":[119,25],"uv_size":[2,5]},"east":{"uv":[123,16],"uv_size":[1,5]},"south":{"uv":[119,30],"uv_size":[2,5]},"west":{"uv":[123,21],"uv_size":[1,5]},"up":{"uv":[128,31],"uv_size":[-2,-1]},"down":{"uv":[128,31],"uv_size":[-2,1]}}},{"origin":[-4.95,27,0.5],"size":[2.4,0.7,2.6],"uv":{"north":{"uv":[112,46],"uv_size":[2,1]},"east":{"uv":[125,20],"uv_size":[3,1]},"south":{"uv":[126,33],"uv_size":[2,1]},"west":{"uv":[125,21],"uv_size":[3,1]},"up":{"uv":[87,45],"uv_size":[-2,-3]},"down":{"uv":[98,42],"uv_size":[-2,3]}}}]},{"name":"rightear","pivot":[5.6,6.7,0.9],"parent":"ears","cubes":[{"origin":[0.5,22.7,0.7],"size":[2.4,4.3,2.2],"uv":{"north":{"uv":[103,41],"uv_size":[2,4]},"east":{"uv":[121,24],"uv_size":[2,4]},"south":{"uv":[105,41],"uv_size":[2,4]},"west":{"uv":[107,41],"uv_size":[2,4]},"up":{"uv":[126,26],"uv_size":[-2,-2]},"down":{"uv":[126,33],"uv_size":[-2,2]}}},{"origin":[0.7,22.7,0.8],"size":[2.2,4.25,1.1],"uv":{"north":{"uv":[121,28],"uv_size":[2,4]},"east":{"uv":[115,44],"uv_size":[1,4]},"south":{"uv":[109,41],"uv_size":[2,4]},"west":{"uv":[116,44],"uv_size":[1,4]},"up":{"uv":[128,35],"uv_size":[-2,-1]},"down":{"uv":[128,36],"uv_size":[-2,1]}}},{"origin":[2.9,23.3,0.6],"size":[1,4.4,2.5],"pivot":[3.9,23.7,1.6],"rotation":[0,0,-14],"uv":{"north":{"uv":[124,37],"uv_size":[1,4]},"east":{"uv":[93,35],"uv_size":[3,4]},"south":{"uv":[80,45],"uv_size":[1,4]},"west":{"uv":[116,13],"uv_size":[3,4]},"up":{"uv":[97,48],"uv_size":[-1,-3]},"down":{"uv":[98,45],"uv_size":[-1,3]}}},{"origin":[-0.3,23.1,0.6],"size":[1.1,4.4,2.4],"pivot":[0.8,23.7,1.6],"rotation":[0,0,14],"uv":{"north":{"uv":[81,45],"uv_size":[1,4]},"east":{"uv":[111,41],"uv_size":[2,4]},"south":{"uv":[85,45],"uv_size":[1,4]},"west":{"uv":[113,41],"uv_size":[2,4]},"up":{"uv":[106,48],"uv_size":[-1,-2]},"down":{"uv":[118,46],"uv_size":[-1,2]}}},{"origin":[0.75,27,0.5],"size":[2.2,0.7,2.6],"uv":{"north":{"uv":[126,37],"uv_size":[2,1]},"east":{"uv":[125,22],"uv_size":[3,1]},"south":{"uv":[118,46],"uv_size":[2,1]},"west":{"uv":[103,45],"uv_size":[3,1]},"up":{"uv":[125,3],"uv_size":[-2,-3]},"down":{"uv":[95,43],"uv_size":[-2,3]}}}]},{"name":"Body","pivot":[-1.2,15.1,1.7],"parent":"root","cubes":[{"origin":[-4.7,7.3,-0.5],"size":[7.3,8.2,5.1],"uv":{"north":{"uv":[90,12],"uv_size":[7,8]},"east":{"uv":[103,8],"uv_size":[5,8]},"south":{"uv":[80,16],"uv_size":[7,8]},"west":{"uv":[103,16],"uv_size":[5,8]},"up":{"uv":[87,29],"uv_size":[-7,-5]},"down":{"uv":[110,24],"uv_size":[-7,5]}}}]},{"name":"bell","pivot":[0,15,1],"parent":"Body","cubes":[{"origin":[-1.3,13.3,-1.7],"size":[2,2,2],"pivot":[-0.3,13.3,-0.7],"rotation":[35,52.5,0],"uv":{"north":{"uv":[0,0],"uv_size":[4,4]},"east":{"uv":[0,4],"uv_size":[4,4]},"south":{"uv":[4,0],"uv_size":[4,4]},"west":{"uv":[4,4],"uv_size":[4,4]},"up":{"uv":[4,12],"uv_size":[-4,-4]},"down":{"uv":[12,0],"uv_size":[-4,4]}}},{"origin":[-4.9,14.7,-0.8],"size":[7.6,0.9,5.5],"uv":{"north":{"uv":[120,12],"uv_size":[8,1]},"east":{"uv":[122,15],"uv_size":[6,1]},"south":{"uv":[121,32],"uv_size":[8,1]},"west":{"uv":[123,3],"uv_size":[6,1]},"up":{"uv":[95,26],"uv_size":[-8,-6]},"down":{"uv":[103,20],"uv_size":[-8,6]}}}]},{"name":"plaque","pivot":[-0.8,14,0],"parent":"Body","cubes":[{"origin":[-3,7.8,-0.75],"size":[4,5.7,0.25],"uv":{"north":{"uv":[16,0],"uv_size":[16,23]},"east":{"uv":[48,8],"uv_size":[1,23]},"south":{"uv":[32,0],"uv_size":[16,23]},"west":{"uv":[32,32],"uv_size":[1,23]},"up":{"uv":[68,17],"uv_size":[-16,-1]},"down":{"uv":[68,20],"uv_size":[-16,1]}}},{"origin":[-3.75,7.8,-0.75],"size":[0.75,5.7,0.25],"uv":{"north":{"uv":[16,24],"uv_size":[3,23]},"east":{"uv":[36,32],"uv_size":[1,23]},"south":{"uv":[20,24],"uv_size":[3,23]},"west":{"uv":[40,32],"uv_size":[1,23]},"up":{"uv":[59,33],"uv_size":[-3,-1]},"down":{"uv":[55,40],"uv_size":[-3,1]}}},{"origin":[1,7.8,-0.75],"size":[0.75,5.7,0.25],"uv":{"north":{"uv":[24,24],"uv_size":[3,23]},"east":{"uv":[44,32],"uv_size":[1,23]},"south":{"uv":[28,24],"uv_size":[3,23]},"west":{"uv":[48,32],"uv_size":[1,23]},"up":{"uv":[59,37],"uv_size":[-3,-1]},"down":{"uv":[59,40],"uv_size":[-3,1]}}},{"origin":[-3,7.2,-0.75],"size":[4,0.7,0.25],"uv":{"north":{"uv":[32,24],"uv_size":[16,3]},"east":{"uv":[52,32],"uv_size":[1,3]},"south":{"uv":[32,28],"uv_size":[16,3]},"west":{"uv":[52,36],"uv_size":[1,3]},"up":{"uv":[68,9],"uv_size":[-16,-1]},"down":{"uv":[68,12],"uv_size":[-16,1]}}},{"origin":[-3,13.5,-0.75],"size":[4,0.7,0.25],"uv":{"north":{"uv":[48,0],"uv_size":[16,3]},"east":{"uv":[60,32],"uv_size":[1,3]},"south":{"uv":[48,4],"uv_size":[16,3]},"west":{"uv":[52,44],"uv_size":[1,3]},"up":{"uv":[68,25],"uv_size":[-16,-1]},"down":{"uv":[68,28],"uv_size":[-16,1]}}}]},{"name":"LeftArm","pivot":[-5,13.2,2.2],"parent":"root","rotation":[0,0,7.5],"cubes":[{"origin":[-7,11,-0.1],"size":[3,4.2,3.9],"uv":{"north":{"uv":[80,37],"uv_size":[3,4]},"east":{"uv":[99,26],"uv_size":[4,4]},"south":{"uv":[103,37],"uv_size":[3,4]},"west":{"uv":[108,5],"uv_size":[4,4]},"up":{"uv":[109,41],"uv_size":[-3,-4]},"down":{"uv":[112,37],"uv_size":[-3,4]}}}]},{"name":"LeftArm2","pivot":[-5,9.7,2.2],"parent":"LeftArm","cubes":[{"origin":[-7,7.1,-0.1],"size":[3,4.6,3.9],"uv":{"north":{"uv":[100,34],"uv_size":[3,5]},"east":{"uv":[106,0],"uv_size":[4,5]},"south":{"uv":[84,35],"uv_size":[3,5]},"west":{"uv":[87,26],"uv_size":[4,5]},"up":{"uv":[115,41],"uv_size":[-3,-4]},"down":{"uv":[118,37],"uv_size":[-3,4]}}}]},{"name":"RightItemPivot","pivot":[4.3,9.1,2.2],"parent":"LeftArm"},{"name":"RightArm","pivot":[3.8,13.2,2.2],"parent":"root","rotation":[0,0,-5],"cubes":[{"origin":[1.8,11,-0.1],"size":[3,4.2,3.9],"uv":{"north":{"uv":[118,0],"uv_size":[3,4]},"east":{"uv":[108,9],"uv_size":[4,4]},"south":{"uv":[96,38],"uv_size":[3,4]},"west":{"uv":[108,13],"uv_size":[4,4]},"up":{"uv":[121,21],"uv_size":[-3,-4]},"down":{"uv":[121,21],"uv_size":[-3,4]}}}]},{"name":"RightArm2","pivot":[3.8,9.7,2.2],"parent":"RightArm","cubes":[{"origin":[1.8,7.1,-0.1],"size":[3,4.6,3.9],"uv":{"north":{"uv":[87,35],"uv_size":[3,5]},"east":{"uv":[91,26],"uv_size":[4,5]},"south":{"uv":[90,35],"uv_size":[3,5]},"west":{"uv":[95,26],"uv_size":[4,5]},"up":{"uv":[121,41],"uv_size":[-3,-4]},"down":{"uv":[96,39],"uv_size":[-3,4]}}}]},{"name":"LeftItemPivot","pivot":[-6.6,9,2.2],"parent":"RightArm"},{"name":"RightLeg","pivot":[1.5,7,3.4],"parent":"root","cubes":[{"origin":[-0.8,3.3,0.7],"size":[3,4,3.1],"uv":{"north":{"uv":[108,17],"uv_size":[4,4]},"east":{"uv":[80,29],"uv_size":[4,4]},"south":{"uv":[103,29],"uv_size":[4,4]},"west":{"uv":[107,29],"uv_size":[4,4]},"up":{"uv":[114,4],"uv_size":[-4,-4]},"down":{"uv":[103,30],"uv_size":[-4,4]}}}]},{"name":"RightLeg2","pivot":[1.5,4,2.4],"parent":"RightLeg","cubes":[{"origin":[-0.8,0.3,0.7],"size":[3,4,3.1],"uv":{"north":{"uv":[110,21],"uv_size":[4,4]},"east":{"uv":[110,25],"uv_size":[4,4]},"south":{"uv":[84,31],"uv_size":[4,4]},"west":{"uv":[88,31],"uv_size":[4,4]},"up":{"uv":[96,35],"uv_size":[-4,-4]},"down":{"uv":[115,29],"uv_size":[-4,4]}}},{"origin":[-0.8,0.3,-0.6],"size":[1,1.5,1.3],"uv":{"north":{"uv":[106,45],"uv_size":[1,2]},"east":{"uv":[107,45],"uv_size":[1,2]},"south":{"uv":[108,45],"uv_size":[1,2]},"west":{"uv":[125,28],"uv_size":[1,2]},"up":{"uv":[115,29],"uv_size":[-1,-1]},"down":{"uv":[100,38],"uv_size":[-1,1]}}},{"origin":[1.2,0.3,-0.6],"size":[1,1.5,1.3],"uv":{"north":{"uv":[120,46],"uv_size":[1,2]},"east":{"uv":[121,46],"uv_size":[1,2]},"south":{"uv":[122,46],"uv_size":[1,2]},"west":{"uv":[123,46],"uv_size":[1,2]},"up":{"uv":[107,48],"uv_size":[-1,-1]},"down":{"uv":[128,26],"uv_size":[-1,1]}}},{"origin":[0.2,0.3,-0.7],"size":[1,1.6,1.4],"uv":{"north":{"uv":[124,46],"uv_size":[1,2]},"east":{"uv":[125,46],"uv_size":[1,2]},"south":{"uv":[126,46],"uv_size":[1,2]},"west":{"uv":[82,47],"uv_size":[1,2]},"up":{"uv":[108,48],"uv_size":[-1,-1]},"down":{"uv":[128,27],"uv_size":[-1,1]}}}]},{"name":"LeftLeg","pivot":[-2.9,7.3,0.9],"parent":"root","cubes":[{"origin":[-4.3,3.3,0.7],"size":[3,4,3],"uv":{"north":{"uv":[112,4],"uv_size":[4,4]},"east":{"uv":[112,8],"uv_size":[4,4]},"south":{"uv":[112,12],"uv_size":[4,4]},"west":{"uv":[112,16],"uv_size":[4,4]},"up":{"uv":[84,37],"uv_size":[-4,-4]},"down":{"uv":[107,33],"uv_size":[-4,4]}}}]},{"name":"LeftLeg2","pivot":[-2.5,4.5,3.3],"parent":"LeftLeg","cubes":[{"origin":[-4.3,0.3,0.7],"size":[3,4,3],"uv":{"north":{"uv":[107,33],"uv_size":[4,4]},"east":{"uv":[111,33],"uv_size":[4,4]},"south":{"uv":[114,0],"uv_size":[4,4]},"west":{"uv":[96,34],"uv_size":[4,4]},"up":{"uv":[118,24],"uv_size":[-4,-4]},"down":{"uv":[118,24],"uv_size":[-4,4]}}},{"origin":[-2.3,0.3,-0.6],"size":[1,1.5,1.3],"uv":{"north":{"uv":[83,47],"uv_size":[1,2]},"east":{"uv":[87,47],"uv_size":[1,2]},"south":{"uv":[88,47],"uv_size":[1,2]},"west":{"uv":[89,47],"uv_size":[1,2]},"up":{"uv":[109,48],"uv_size":[-1,-1]},"down":{"uv":[110,47],"uv_size":[-1,1]}}},{"origin":[-3.3,0.3,-0.7],"size":[1,1.6,1.4],"uv":{"north":{"uv":[90,47],"uv_size":[1,2]},"east":{"uv":[91,47],"uv_size":[1,2]},"south":{"uv":[92,47],"uv_size":[1,2]},"west":{"uv":[93,47],"uv_size":[1,2]},"up":{"uv":[111,48],"uv_size":[-1,-1]},"down":{"uv":[112,47],"uv_size":[-1,1]}}},{"origin":[-4.3,0.3,-0.6],"size":[1,1.5,1.3],"uv":{"north":{"uv":[94,47],"uv_size":[1,2]},"east":{"uv":[98,47],"uv_size":[1,2]},"south":{"uv":[127,18],"uv_size":[1,2]},"west":{"uv":[127,23],"uv_size":[1,2]},"up":{"uv":[113,48],"uv_size":[-1,-1]},"down":{"uv":[114,47],"uv_size":[-1,1]}}}]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/wheelchair.anim.json b/src/main/resources/assets/evolution/cosmetic/skins/wheelchair.anim.json new file mode 100644 index 0000000..bfd2b11 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/wheelchair.anim.json @@ -0,0 +1 @@ +{"autoplay":[],"clips":{"idle":{"loop":"loop","length":6,"bones":{"LeftAnchor":{"rotation":[[0,27.5,0,2.5]],"position":[[0,0,-0.5,1.2]]},"LeftForearm":{"rotation":[[0,47.47282,-1.84293,4.18956]],"position":[[0,0,0,0]]},"RightAnchor":{"rotation":[[0,4,0,-2.5]],"position":[[0,0,-0.7,0.3]]},"RightForearm":{"rotation":[[0,47.47282,1.84293,-4.18956]],"position":[[0,0,1,0.7]]},"Main":{"rotation":[[0,5,0,0]],"position":[[0,0,2.3,2.5]]},"upper":{"rotation":[[0,-2.5,0,0]]},"Stomach":{"rotation":[[0,7.5,0,0]]},"LeftArm":{"rotation":[[0,0,0,0]]},"skin4":{"rotation":[[0,0,0,5]],"position":[[0,0,0.6,0]]},"LeftHand":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]]},"RightArm":{"rotation":[[0,22.5,0,0]]},"skin6":{"rotation":[[0,0,0,-5]]},"LeftLeg":{"rotation":[[0,85,0,0]]},"skin7":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]]},"LShin":{"rotation":[[0,-37.5,0,0]]},"skin8":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]]},"RightLeg":{"rotation":[[0,72.5,0,0]]},"skin9":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]]},"RShin":{"rotation":[[0,-40,0,0]]},"skin10":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]]}}},"nodoff":{"loop":"hold","length":3.375,"bones":{"Head":{"rotation":[[0,0,0,0],[1.25,-0.00718,-0.32621,0.0214],[2.29167,-19.53,-0.96,-6.07],[2.41667,-16.87,-1.04,-6.8],[2.625,-12.56428,-0.12667,-3.59664],[3.375,-14.67275,2.81973,-0.72577]]},"Eyelids":{"position":[[0,0,0,0],[0.625,0,0,0],[2.29167,0,-0.84,0],[2.41667,0,-0.9,0],[2.625,0,-0.6,0],[3.375,0,-1,0]]}}},"hold":{"loop":"hold","length":0.29167,"bones":{"LeftAnchor":{"rotation":[[0,-2.80572,-1.25989,14.8043]]},"LeftForearm":{"rotation":[[0,20.10748,0.92905,2.81666]]},"LeftItemPivot":{"rotation":[[0,28.97923,-0.01939,-53.78382]],"position":[[0,1.525,0.525,-1]]}}},"wave":{"loop":"once","length":2.5025,"bones":{"upper":{"rotation":[[0,0,0,0],[0.50042,0,0,-5],[1.41785,0,0,-5],[1.83486,0,0,0]]},"Neck":{"rotation":[[0,0,0,0],[0.54212,0,0,-5],[1.37615,0,0,-5],[1.75146,0,0,0]]},"LeftArm":{"rotation":[[0,0,0,0],[0.50042,0,0,7.5],[1.62636,0,0,7.5],[2.04337,0,0,0]],"position":[[0,0,0,0],[0.50042,0,-0.5,0],[1.62636,0,-0.5,0],[2.00167,0,0,0]]},"RightArm":{"rotation":[[0,0,0,0],[0.50042,0,0,-70],[0.83403,0,0,-142.5],[1.00083,0,0,-147.5],[1.16764,0,0,-125],[1.33445,0,0,-150],[1.50125,0,0,-122.5],[1.83486,0,0,-7.5],[2.00167,0,0,0]]},"RightForearm":{"rotation":[[0,0,0,0],[0.75063,0,0,-7.5],[1.00083,0,0,-15],[1.16764,0,0,5],[1.33445,0,0,-7.5],[1.50125,0,0,5],[1.79316,0,0,-11],[1.91827,0,0,0]]},"LeftLeg":{"rotation":[[0,0,0,0],[0.33361,0,0,2.5],[1.70976,0,0,2.5],[1.91827,0,0,0]]},"RightLeg":{"rotation":[[0,0,0,0],[0.50042,0,0,-7.5],[1.58465,0,0,-7.5],[1.91827,0,0,0]]},"RShin":{"rotation":[[0,0,0,0],[0.50042,0,0,-2.5],[1.70976,0,0,-2.5],[1.91827,0,0,0]]}}},"hairtug":{"loop":"hold","length":4,"bones":{"Neck":{"rotation":[[0,0,0,0],[0.95833,-15.00933,2.462,-0.43439],[1.625,-17.55156,4.87449,-1.07963],[3,-10.05156,4.87449,-1.07963],[4,0,0,0]]},"Body":{"rotation":[[0,0,0,0],[2,0,2.5,0],[4,0,0,0]]},"LeftArm":{"rotation":[[0,0,0,0],[0.95833,47.5,0,0],[1.5,55,0,0],[4,0,0,0]]},"LeftForearm":{"rotation":[[0,0,0,0],[0.5,0,0,0],[1.41667,67.5,0,0],[1.83333,95.00474,2.49048,0.21803],[2.08333,117.55539,4.16231,3.247],[2.5,112.56,4.16,3.25],[2.83333,117.55539,4.16231,3.247],[4,0,0,0]]},"RightArm":{"rotation":[[0,0,0,0],[1.5,5,0,-2.5],[4,0,0,0]]},"RightForearm":{"rotation":[[0,0,0,0],[1,0,0,5],[4,0,0,0]]},"LeftLeg":{"rotation":[[0,0,0,0],[2.08333,-2.5,0,0],[4,0,0,0]]},"LShin":{"rotation":[[0,0,0,0],[1.5,-5,0,0],[4,0,0,0]]},"Eyelids":{"position":[[0,0,0,0],[1.70833,0,-0.41,0],[2,0,-0.25,0],[3,0,-0.25,0],[4,0,0,0]]}}},"glare":{"loop":"hold","length":8.66667,"bones":{"Eyebrows":{"position":[[0,0,0.025,0]],"scale":[[0,1,0.94,1]]},"EARS":{"rotation":[[0,-12.5,0,0]]},"Eyelids":{"position":[[0,0,0.1,0]],"scale":[[0,1,0.98,1]]},"Main":{"position":[[0,0,3.2,0]]},"skin5":{"position":[[0,0.1,0,0]]},"RightAnchor":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]]},"LeftLeg":{"rotation":[[0,7.5,0,0]]},"RightLeg":{"rotation":[[0,5,0,0]]},"Chair":{"rotation":[[0,12.5,0,0]],"position":[[0,0,2,0]]}}},"walk":{"loop":"loop","length":8.04167,"bones":{"LeftAnchor":{"rotation":[[0,0,0,20]]},"LeftForearm":{"rotation":[[0,0,0,0],[1,30,0,0],[1.5,-20,0,0],[2,0,0,0],[3,30,0,0],[3.5,-20,0,0],[4,0,0,0],[5,30,0,0],[5.5,-20,0,0],[6,0,0,0],[7,30,0,0],[7.5,-20,0,0],[8,0,0,0]],"position":[[0,0,1,0.7]]},"RightAnchor":{"rotation":[[0,3.86412,1.03449,-17.4651]],"position":[[0,0,-0.7,0.3]]},"RightForearm":{"rotation":[[0,0,0,0],[1,30,0,0],[1.5,-20,0,0],[2,0,0,0],[3,30,0,0],[3.5,-20,0,0],[4,0,0,0],[5,30,0,0],[5.5,-20,0,0],[6,0,0,0],[7,30,0,0],[7.5,-20,0,0],[8,0,0,0]],"position":[[0,0,1,0.7]]},"Main":{"rotation":[[0,5,0,0]],"position":[[0,0,2.3,2.5]]},"upper":{"rotation":[[0,-2.5,0,0]]},"Stomach":{"rotation":[[0,7.5,0,0]]},"LeftArm":{"rotation":[[0,0,0,0]],"position":[[0,0,-0.2,0]]},"skin3":{"rotation":[[0,-7.5,0,0]],"position":[[0,0,0,0]]},"RightArm":{"rotation":[[0,0,0,0]]},"skin5":{"rotation":[[0,-10,0,0]],"position":[[0,0,0,0]]},"LeftLeg":{"rotation":[[0,85,0,0]]},"LShin":{"rotation":[[0,-37.5,0,0]]},"RightLeg":{"rotation":[[0,72.5,0,0]]},"RShin":{"rotation":[[0,-40,0,0]]},"wheel":{"rotation":[[0,0,0,0],[5.95833,-360,0,0]]},"wheel2":{"rotation":[[0,0,0,0],[5.95833,-360,0,0]]}}},"jumpup":{"loop":"hold","length":6,"bones":{"LeftAnchor":{"rotation":[[0,19.59657,-4.07774,13.79549]],"position":[[0,0,-0.5,1.2]]},"LeftForearm":{"rotation":[[0,17.13219,-6.07357,4.42698]]},"RightAnchor":{"rotation":[[0,3.99621,0.17434,-4.99392]],"position":[[0,0,-0.7,0.3]]},"RightForearm":{"rotation":[[0,2.5,0,-2.5]],"position":[[0,0,1,0.7]]},"Main":{"rotation":[[0,2.5,0,0]],"position":[[0,0,2.3,2.9]]},"upper":{"rotation":[[0,-2.5,0,0]]},"Stomach":{"rotation":[[0,7.5,0,0]]},"LeftArm":{"rotation":[[0,0,0,0]],"position":[[0,0,0,0]]},"skin3":{"rotation":[[0,0,0,2.5]]},"skin4":{"rotation":[[0,0,0,0]],"position":[[0,0,0.1,0]]},"RightArm":{"rotation":[[0,-0.94387,6.60796,-16.24074]]},"skin6":{"rotation":[[0,5,0,0]],"position":[[0,0,-0.4,-0.3]]},"LeftLeg":{"rotation":[[0,85,0,0]]},"LShin":{"rotation":[[0,-37.5,0,0]]},"RightLeg":{"rotation":[[0,72.5,0,0]]},"RShin":{"rotation":[[0,-40,0,0]]},"Chair":{"rotation":[[0,10,0,0]]},"wheel":{"rotation":[[0,10,0,0]]},"wheel2":{"rotation":[[0,10,0,0]]}}},"book":{"loop":"loop","length":0,"bones":{"LeftArm":{"rotation":[[0,32.47766,1.15408,-2.21783]],"position":[[0,0,-0.5,0]]},"LeftForearm":{"rotation":[[0,-2.68444,1.90186,-45.11922]],"position":[[0,-0.75,1.25,0]]},"RightArm":{"rotation":[[0,35.49209,-4.69808,-1.26586]],"position":[[0,0,-0.5,0]]},"RightForearm":{"rotation":[[0,4.92821,-15.76264,47.98725]],"position":[[0,0.5,0.5,0.25]]},"Book2":{"rotation":[[0,-61.6913,-4.82319,-66.33235]],"position":[[0,-0.8,2,1.1]],"scale":[[0,1.1,1.1,1.1]]},"b2":{"rotation":[[0,7.58159,17.06265,7.14615]],"position":[[0,-0.5,2.5,-2.25]],"scale":[[0,1,1,1]]},"Book3":{"rotation":[[0,5,0,0]],"position":[[0,-1,2.5,1.5]]},"b3":{"rotation":[[0,7.38224,12.08127,6.67098]],"position":[[0,-0.5,2.5,-2.25]],"scale":[[0,1,1,1]]},"skin3":{"rotation":[[0,-7.5,0,4]]},"skin4":{"rotation":[[0,-47.5,0,0]]},"RightAnchor":{"rotation":[[0,-5,0,0]]},"skin5":{"rotation":[[0,-12.5,0,0]]},"skin6":{"rotation":[[0,-47.5,0,0]],"position":[[0,0,0.2,0]]}}},"book2":{"loop":"loop","length":59.83607,"bones":{"LeftArm":{"rotation":[[0,32.2155,-4.92203,5.73256]],"position":[[0,0,0,0]]},"LeftForearm":{"rotation":[[0,81.85,37.45817,-1.91699]]},"RightArm":{"rotation":[[0,32.58019,0.60708,-5.15033]],"position":[[0,0,0,0]]},"RightForearm":{"rotation":[[0,39.14314,-5.90316,36.50371]]},"Book2":{"rotation":[[0,5,0,0]],"position":[[0,-1,2.5,1.5]]},"b2":{"rotation":[[0,7.38224,12.08127,6.67098]],"position":[[0,-0.5,2.5,-2.25]],"scale":[[0,1,1,1]]},"Book3":{"rotation":[[0,5,0,0]],"position":[[0,-1,2.5,1.5]]},"b3":{"rotation":[[0,13.02887,31.27237,15.55197]],"position":[[0,-4.75,0,-3.25]],"scale":[[0,1,1,1]]},"LeftAnchor":{"rotation":[[0,-15,0,0]]},"skin3":{"rotation":[[0,-2,0,0]]},"skin4":{"rotation":[[0,-109.6888,-1.3027,11.09368]],"position":[[0,0,0,-0.5]]},"RightAnchor":{"rotation":[[0,-7.5,0,0]]},"skin6":{"rotation":[[0,-65,0,0]]}}},"defaultsit":{"loop":"hold","length":0,"bones":{"Main":{"position":[[0,0,-4,-3]]},"upper":{"rotation":[[0,5,0,0]]},"LeftAnchor":{"rotation":[[0,-29.78729,3.74196,6.50446]]},"LeftForearm":{"rotation":[[0,-22.5,0,0]]},"RightAnchor":{"rotation":[[0,-25.68482,-10.17781,-20.17393]]},"RightForearm":{"rotation":[[0,4.11532,2.70343,17.73215]],"position":[[0,0,-1,-1]]},"LeftLeg":{"rotation":[[0,0,-12.5,12.5]]},"RightLeg":{"rotation":[[0,12.48848,-0.54094,2.44081]]},"Chair":{"scale":[[0,0,0,0]]}}}}} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/skins/wheelchair.geo.json b/src/main/resources/assets/evolution/cosmetic/skins/wheelchair.geo.json new file mode 100644 index 0000000..5d0dd23 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/skins/wheelchair.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.wheelchair","texture_width":368,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,2,0]},"bones":[{"name":"Main","pivot":[0,17,0]},{"name":"upper","pivot":[0,12,0],"parent":"Main"},{"name":"Neck","pivot":[0,24,0],"parent":"upper"},{"name":"Head","pivot":[0,24,0],"parent":"Neck"},{"name":"WitchHats","pivot":[0.0583,30.58385,6.57789],"parent":"Head"},{"name":"Hat","pivot":[0.0583,30.58385,6.57789],"parent":"WitchHats"},{"name":"hatbrim","pivot":[-6.60407,29.05,0.37368],"parent":"Hat"},{"name":"hatfrillsR","pivot":[-5.36785,28.2704,-0.88124],"parent":"hatbrim"},{"name":"hatfrillsL","pivot":[8.33838,28.50962,-0.68816],"parent":"hatbrim","rotation":[0,-0.1,0]},{"name":"dangle","pivot":[0.14593,33.3,7.67615],"parent":"Hat"},{"name":"dangle1","pivot":[0.14593,31.3,10.17615],"parent":"dangle"},{"name":"dangle2","pivot":[0.14593,28.3,11.17615],"parent":"dangle1"},{"name":"HatDetails","pivot":[0.0583,30.58385,6.57789],"parent":"Hat"},{"name":"BigBow","pivot":[0.0583,30.33385,6.57789],"parent":"HatDetails"},{"name":"PR","pivot":[-6.4417,30.58385,1.32789],"parent":"BigBow","rotation":[0,10,0]},{"name":"PL","pivot":[-7,31.13553,0.07034],"parent":"BigBow","rotation":[0,-7.5,0]},{"name":"skin","pivot":[0,24,0],"parent":"Head"},{"name":"Face1","pivot":[0,24.05,0.125],"parent":"skin"},{"name":"Face","pivot":[0,24,0],"parent":"Face1"},{"name":"EyesR","pivot":[0,26.65,-4.925],"parent":"Face1"},{"name":"EyesL","pivot":[0,26.65,-4.925],"parent":"Face1"},{"name":"fringe","pivot":[0,24.05,0.125],"parent":"Face1"},{"name":"right0","pivot":[-2.2,31.15,-3.875],"parent":"fringe"},{"name":"left","pivot":[2.675,31.05,-3.875],"parent":"fringe"},{"name":"Eyelids","pivot":[0,25,0.025],"parent":"Face1"},{"name":"Eyebrows","pivot":[0,24,-0.1],"parent":"Face1"},{"name":"Face2","pivot":[0,24,0],"parent":"skin","cubes":[{"origin":[-3.8,24.2,-3.6],"size":[7.6,7.8,7.6],"inflate":0.6,"uv":{"north":{"uv":[136,8],"uv_size":[8,8]},"east":{"uv":[128,8],"uv_size":[7,8]},"south":{"uv":[152,8],"uv_size":[8,8]},"west":{"uv":[145,8],"uv_size":[7,8]},"up":{"uv":[144,7],"uv_size":[-8,-7]},"down":{"uv":[152,0],"uv_size":[-8,7]}}},{"origin":[-4,24,-4],"size":[8,8,8],"uv":{"north":{"uv":[104,8],"uv_size":[8,8]},"east":{"uv":[96,8],"uv_size":[8,8]},"south":{"uv":[120,8],"uv_size":[8,8]},"west":{"uv":[112,8],"uv_size":[8,8]},"up":{"uv":[112,8],"uv_size":[-8,-8]},"down":{"uv":[120,0],"uv_size":[-8,8]}}}]},{"name":"EARS","pivot":[0.5,26.15,-3.25],"parent":"Head","rotation":[15,0,0]},{"name":"EarRight","pivot":[3.775,26.8,-2.475],"parent":"EARS","rotation":[-0.80466,44.34138,2.75252]},{"name":"EarLeft","pivot":[-3.775,26.8,-2.475],"parent":"EARS","rotation":[-0.57275,-41.85368,-3.09187]},{"name":"BUN","pivot":[0,24,0],"parent":"Head"},{"name":"HORNS","pivot":[0,24,0],"parent":"Head"},{"name":"HelmetItemPivot","pivot":[0,24.05,0],"parent":"Head"},{"name":"Body","pivot":[0,24,0],"parent":"upper"},{"name":"Chest","pivot":[0,18,0],"parent":"Body"},{"name":"skin1","pivot":[0,18,0],"parent":"Chest","cubes":[{"origin":[-4,18.1,-2],"size":[8,5.8,4],"inflate":0.25,"uv":{"north":{"uv":[116,36],"uv_size":[8,6]},"east":{"uv":[112,36],"uv_size":[4,6]},"south":{"uv":[128,36],"uv_size":[8,6]},"west":{"uv":[124,36],"uv_size":[4,6]},"up":{"uv":[124,36],"uv_size":[-8,-4]}}},{"origin":[-4,18,-2],"size":[8,6,4],"uv":{"north":{"uv":[116,20],"uv_size":[8,6]},"east":{"uv":[112,20],"uv_size":[4,6]},"south":{"uv":[128,20],"uv_size":[8,6]},"west":{"uv":[124,20],"uv_size":[4,6]},"up":{"uv":[124,20],"uv_size":[-8,-4]},"down":{"uv":[124,25],"uv_size":[-8,1]}}}]},{"name":"Book2","pivot":[0.85,16.7,-5],"parent":"Chest","rotation":[0,-90,90]},{"name":"b2","pivot":[2.6,13.95,-3],"parent":"Book2","rotation":[2.53056,-10.20827,4.55597]},{"name":"Book3","pivot":[0.85,16.7,-5],"parent":"Chest","rotation":[0,-90,90]},{"name":"b3","pivot":[2.55812,16.3044,-3.14644],"parent":"Book3","rotation":[2.53056,-10.20827,4.55597]},{"name":"bone7","pivot":[2.55922,16.70848,-3.14644],"parent":"b3"},{"name":"WINGS","pivot":[0,18,0],"parent":"Chest"},{"name":"Stomach","pivot":[-0.78125,17.57442,-1.10861],"parent":"Body"},{"name":"Viles","pivot":[6.5,24,1],"parent":"Stomach"},{"name":"Vile1","pivot":[3.5,13.59375,-1.75],"parent":"Viles"},{"name":"Vile2","pivot":[1,14.84375,-2],"parent":"Viles"},{"name":"skin2","pivot":[0,18,0],"parent":"Stomach","cubes":[{"origin":[-3.975,12,-2],"size":[7.95,5.6,4],"inflate":0.25,"uv":{"north":{"uv":[116,42],"uv_size":[8,6]},"east":{"uv":[112,42],"uv_size":[4,6]},"south":{"uv":[128,42],"uv_size":[8,6]},"west":{"uv":[124,42],"uv_size":[4,6]},"down":{"uv":[132,32],"uv_size":[-8,4]}}},{"origin":[-3.975,12,-2],"size":[7.95,6,4],"uv":{"north":{"uv":[116,26],"uv_size":[8,6]},"east":{"uv":[112,26],"uv_size":[4,6]},"south":{"uv":[128,26],"uv_size":[8,6]},"west":{"uv":[124,26],"uv_size":[4,6]},"up":{"uv":[124,26],"uv_size":[-8,1]},"down":{"uv":[132,16],"uv_size":[-8,4]}}}]},{"name":"TAIL","pivot":[-0.78125,17.57442,-1.10861],"parent":"Stomach"},{"name":"LeftAnchor","pivot":[-5,22,0],"parent":"upper"},{"name":"LeftArm","pivot":[-5,22,0],"parent":"LeftAnchor"},{"name":"skin3","pivot":[-5,22,0],"parent":"LeftArm","cubes":[{"origin":[-8,17.75,-2],"size":[4,5.75,4],"inflate":0.25,"uv":{"north":{"uv":[148,52],"uv_size":[4,6]},"east":{"uv":[144,52],"uv_size":[4,6]},"south":{"uv":[156,52],"uv_size":[4,6]},"west":{"uv":[152,52],"uv_size":[4,6]},"up":{"uv":[151,52],"uv_size":[-3,-4]}}},{"origin":[-8,17.5,-2],"size":[4,6,4],"uv":{"north":{"uv":[132,52],"uv_size":[4,6]},"east":{"uv":[128,52],"uv_size":[4,6]},"south":{"uv":[140,52],"uv_size":[4,6]},"west":{"uv":[136,52],"uv_size":[4,6]},"up":{"uv":[135,52],"uv_size":[-3,-4]},"down":{"uv":[135,57],"uv_size":[-3,1]}}}]},{"name":"LeftForearm","pivot":[-5,18,0],"parent":"LeftArm"},{"name":"skin4","pivot":[-5,18,0],"parent":"LeftForearm","cubes":[{"origin":[-8,11.5,-2],"size":[4,5.75,4],"inflate":0.25,"uv":{"north":{"uv":[148,58],"uv_size":[4,6]},"east":{"uv":[144,58],"uv_size":[4,6]},"south":{"uv":[156,58],"uv_size":[4,6]},"west":{"uv":[152,58],"uv_size":[4,6]},"down":{"uv":[154,48],"uv_size":[-3,4]}}},{"origin":[-8,11.5,-2],"size":[4,6,4],"uv":{"north":{"uv":[132,58],"uv_size":[4,6]},"east":{"uv":[128,58],"uv_size":[4,6]},"south":{"uv":[140,58],"uv_size":[4,6]},"west":{"uv":[136,58],"uv_size":[4,6]},"up":{"uv":[135,59],"uv_size":[-3,-1]},"down":{"uv":[138,48],"uv_size":[-3,4]}}}]},{"name":"LeftHand","pivot":[-5.5,12,-2],"parent":"LeftForearm"},{"name":"LeftItemPivot","pivot":[-5.5,12,-2],"parent":"LeftHand"},{"name":"RightAnchor","pivot":[5,22,0],"parent":"upper"},{"name":"RightArm","pivot":[5,22,0],"parent":"RightAnchor"},{"name":"skin5","pivot":[5,22,0],"parent":"RightArm","cubes":[{"origin":[4,17.5,-2],"size":[4,6,4],"uv":{"north":{"uv":[140,20],"uv_size":[4,6]},"east":{"uv":[136,20],"uv_size":[4,6]},"south":{"uv":[148,20],"uv_size":[4,6]},"west":{"uv":[143,20],"uv_size":[4,6]},"up":{"uv":[144,20],"uv_size":[-4,-4]},"down":{"uv":[144,25],"uv_size":[-4,1]}}},{"origin":[4,17.75,-2],"size":[4,5.75,4],"inflate":0.25,"uv":{"north":{"uv":[140,36],"uv_size":[4,6]},"east":{"uv":[136,36],"uv_size":[4,6]},"south":{"uv":[148,36],"uv_size":[4,6]},"west":{"uv":[143,36],"uv_size":[4,6]},"up":{"uv":[144,36],"uv_size":[-4,-4]}}}]},{"name":"RightForearm","pivot":[5,18,0],"parent":"RightArm"},{"name":"skin6","pivot":[5,18,0],"parent":"RightForearm","cubes":[{"origin":[4,11.5,-2],"size":[4,6,4],"uv":{"north":{"uv":[140,26],"uv_size":[4,6]},"east":{"uv":[136,26],"uv_size":[4,6]},"south":{"uv":[148,26],"uv_size":[4,6]},"west":{"uv":[143,26],"uv_size":[4,6]},"up":{"uv":[144,27],"uv_size":[-4,-1]},"down":{"uv":[148,16],"uv_size":[-4,4]}}},{"origin":[4,11.5,-2],"size":[4,5.75,4],"inflate":0.25,"uv":{"north":{"uv":[140,42],"uv_size":[4,6]},"east":{"uv":[136,42],"uv_size":[4,6]},"south":{"uv":[148,42],"uv_size":[4,6]},"west":{"uv":[143,42],"uv_size":[4,6]},"down":{"uv":[148,32],"uv_size":[-4,4]}}}]},{"name":"RightHand","pivot":[5.5,12,-2],"parent":"RightForearm"},{"name":"RightItemPivot","pivot":[5.5,12,-2],"parent":"RightHand"},{"name":"LeftLeg","pivot":[-1.9,12,0],"parent":"Main"},{"name":"skin7","pivot":[-1.9,12,0],"parent":"LeftLeg","cubes":[{"origin":[-4,6,-2],"size":[4,6,4],"uv":{"north":{"uv":[116,52],"uv_size":[4,6]},"east":{"uv":[112,52],"uv_size":[4,6]},"south":{"uv":[124,52],"uv_size":[4,6]},"west":{"uv":[120,52],"uv_size":[4,6]},"up":{"uv":[120,52],"uv_size":[-4,-4]},"down":{"uv":[120,57],"uv_size":[-4,1]}}},{"origin":[-4.15,6.25,-2.1],"size":[4,5.75,4.2],"inflate":0.25,"uv":{"north":{"uv":[100,52],"uv_size":[4,6]},"east":{"uv":[96,52],"uv_size":[4,6]},"south":{"uv":[108,52],"uv_size":[4,6]},"west":{"uv":[104,52],"uv_size":[4,6]},"up":{"uv":[104,52],"uv_size":[-4,-4]}}}]},{"name":"LShin","pivot":[-1.9,6,0],"parent":"LeftLeg"},{"name":"skin8","pivot":[-2.15,6,0],"parent":"LShin","cubes":[{"origin":[-4,0,-2],"size":[4,6,4],"uv":{"north":{"uv":[116,58],"uv_size":[4,6]},"east":{"uv":[112,58],"uv_size":[4,6]},"south":{"uv":[124,58],"uv_size":[4,6]},"west":{"uv":[120,58],"uv_size":[4,6]},"up":{"uv":[120,59],"uv_size":[-4,-1]},"down":{"uv":[124,48],"uv_size":[-4,4]}}},{"origin":[-4.15,0,-2.1],"size":[4,5.75,4.2],"inflate":0.25,"uv":{"north":{"uv":[100,58],"uv_size":[4,6]},"east":{"uv":[96,58],"uv_size":[4,6]},"south":{"uv":[108,58],"uv_size":[4,6]},"west":{"uv":[104,58],"uv_size":[4,6]},"down":{"uv":[108,48],"uv_size":[-4,4]}}}]},{"name":"RightLeg","pivot":[1.9,12,0],"parent":"Main"},{"name":"skin9","pivot":[1.9,12,0],"parent":"RightLeg","cubes":[{"origin":[0,6,-2],"size":[4,6,4],"uv":{"north":{"uv":[100,20],"uv_size":[4,6]},"east":{"uv":[96,20],"uv_size":[4,6]},"south":{"uv":[108,20],"uv_size":[4,6]},"west":{"uv":[104,20],"uv_size":[4,6]},"up":{"uv":[104,20],"uv_size":[-4,-4]},"down":{"uv":[104,25],"uv_size":[-4,1]}}},{"origin":[-0.1,6.25,-2.2],"size":[4,5.75,4.4],"inflate":0.25,"uv":{"north":{"uv":[100,36],"uv_size":[4,6]},"east":{"uv":[96,36],"uv_size":[4,6]},"south":{"uv":[108,36],"uv_size":[4,6]},"west":{"uv":[104,36],"uv_size":[4,6]},"up":{"uv":[104,36],"uv_size":[-4,-4]}}}]},{"name":"RShin","pivot":[1.9,6,0],"parent":"RightLeg"},{"name":"skin10","pivot":[1.9,6,0],"parent":"RShin","cubes":[{"origin":[0,0,-2.2],"size":[4,6,4.4],"uv":{"north":{"uv":[100,26],"uv_size":[4,6]},"east":{"uv":[96,26],"uv_size":[4,6]},"south":{"uv":[108,26],"uv_size":[4,6]},"west":{"uv":[104,26],"uv_size":[4,6]},"up":{"uv":[104,27],"uv_size":[-4,-1]},"down":{"uv":[108,16],"uv_size":[-4,4]}}},{"origin":[-0.1,0,-2.2],"size":[4,5.75,4.4],"inflate":0.25,"uv":{"north":{"uv":[100,42],"uv_size":[4,6]},"east":{"uv":[96,42],"uv_size":[4,6]},"south":{"uv":[108,42],"uv_size":[4,6]},"west":{"uv":[104,42],"uv_size":[4,6]},"down":{"uv":[108,32],"uv_size":[-4,4]}}}]},{"name":"Chair","pivot":[1.6,0,4]},{"name":"seat","pivot":[0.15102,2,3.94745],"parent":"Chair","cubes":[{"origin":[-5.04898,12,-3.05255],"size":[10,2,10],"uv":{"north":{"uv":[328,4],"uv_size":[10,2]},"east":{"uv":[328,6],"uv_size":[10,2]},"south":{"uv":[328,8],"uv_size":[10,2]},"west":{"uv":[316,25],"uv_size":[10,2]},"up":{"uv":[324,22],"uv_size":[-10,-10]},"down":{"uv":[334,10],"uv_size":[-10,10]}}},{"origin":[-4.94898,2.6,-7.25255],"size":[10,2,5],"pivot":[0.05102,2.6,-4.25255],"rotation":[10,0,0],"uv":{"north":{"uv":[326,25],"uv_size":[10,2]},"east":{"uv":[342,26],"uv_size":[5,2]},"south":{"uv":[304,27],"uv_size":[10,2]},"west":{"uv":[342,28],"uv_size":[5,2]},"up":{"uv":[334,25],"uv_size":[-10,-5]},"down":{"uv":[314,22],"uv_size":[-10,5]}}},{"origin":[-1.54898,11.24894,-11.39663],"size":[1,1,12],"pivot":[-1.04898,12.74894,-4.39663],"rotation":[90,-5,-90],"uv":{"north":{"uv":[348,7],"uv_size":[1,1]},"east":{"uv":[312,29],"uv_size":[1,12]},"south":{"uv":[348,13],"uv_size":[1,1]},"west":{"uv":[312,29],"uv_size":[1,12]},"up":{"uv":[313,41],"uv_size":[-1,-12]},"down":{"uv":[313,29],"uv_size":[-1,12]}}},{"origin":[4.85102,17,-4.05255],"size":[2,2,8],"pivot":[9.85102,13,4.94745],"rotation":[5,0,0],"uv":{"north":{"uv":[320,27],"uv_size":[2,2]},"east":{"uv":[316,10],"uv_size":[8,2]},"south":{"uv":[322,27],"uv_size":[2,2]},"west":{"uv":[316,22],"uv_size":[8,2]},"up":{"uv":[318,35],"uv_size":[-2,-8]},"down":{"uv":[320,27],"uv_size":[-2,8]}}},{"origin":[4.85102,17,-4.05255],"size":[2,2,4],"pivot":[9.85102,13,4.94745],"rotation":[5,0,0],"inflate":0.1,"uv":{"north":{"uv":[316,8],"uv_size":[2,2]},"east":{"uv":[316,0],"uv_size":[4,2]},"west":{"uv":[316,2],"uv_size":[4,2]},"up":{"uv":[318,8],"uv_size":[-2,-4]},"down":{"uv":[320,4],"uv_size":[-2,4]}}},{"origin":[-6.8262,17,-4.05255],"size":[2,2,4],"pivot":[-9.8262,13,4.94745],"rotation":[5,0,0],"inflate":0.1,"uv":{"north":{"uv":[318,8],"uv_size":[-2,2]},"east":{"uv":[320,2],"uv_size":[-4,2]},"west":{"uv":[320,0],"uv_size":[-4,2]},"up":{"uv":[316,8],"uv_size":[2,-4]},"down":{"uv":[318,4],"uv_size":[2,4]}}},{"origin":[-6.8262,17,-4.05255],"size":[2,2,8],"pivot":[-9.8262,13,4.94745],"rotation":[5,0,0],"uv":{"north":{"uv":[322,27],"uv_size":[-2,2]},"east":{"uv":[324,22],"uv_size":[-8,2]},"south":{"uv":[324,27],"uv_size":[-2,2]},"west":{"uv":[324,10],"uv_size":[-8,2]},"up":{"uv":[316,35],"uv_size":[2,-8]},"down":{"uv":[318,27],"uv_size":[2,8]}}}]},{"name":"topofseat","pivot":[-0.04898,11.84652,6.91734],"parent":"seat","rotation":[-0.5,0,0],"cubes":[{"origin":[-5.04898,13.075,5.54745],"size":[10,10,2],"pivot":[-0.04898,13.075,4.54745],"rotation":[-5,0,0],"uv":{"north":{"uv":[304,12],"uv_size":[10,10]},"east":{"uv":[326,0],"uv_size":[2,10]},"south":{"uv":[324,20],"uv_size":[10,-10]},"west":{"uv":[314,22],"uv_size":[2,10]},"up":{"uv":[338,2],"uv_size":[-10,-2]},"down":{"uv":[338,2],"uv_size":[-10,2]}}},{"origin":[4.95102,16.94894,0.60337],"size":[1.1,1,11],"pivot":[5.45102,18.44894,6.60337],"rotation":[85,0,0],"uv":{"north":{"uv":[334,24],"uv_size":[1,1]},"east":{"uv":[320,37],"uv_size":[11,1]},"south":{"uv":[335,24],"uv_size":[1,1]},"west":{"uv":[320,38],"uv_size":[11,1]},"up":{"uv":[332,48],"uv_size":[-1,-11]},"down":{"uv":[315,38],"uv_size":[-1,11]}}},{"origin":[-1.54898,21.84894,0.00337],"size":[1,1,12],"pivot":[-1.04898,23.34894,7.00337],"rotation":[90,-5,-90],"uv":{"north":{"uv":[348,7],"uv_size":[1,1]},"east":{"uv":[334,13],"uv_size":[12,1]},"south":{"uv":[348,13],"uv_size":[1,1]},"west":{"uv":[334,14],"uv_size":[12,1]},"up":{"uv":[313,41],"uv_size":[-1,-12]},"down":{"uv":[314,29],"uv_size":[-1,12]}}},{"origin":[-6.14898,16.94894,0.60337],"size":[1.1,1,11],"pivot":[-5.54898,18.44894,6.60337],"rotation":[85,0,0],"uv":{"north":{"uv":[335,24],"uv_size":[-1,1]},"east":{"uv":[331,38],"uv_size":[-11,1]},"south":{"uv":[336,24],"uv_size":[-1,1]},"west":{"uv":[331,37],"uv_size":[-11,1]},"up":{"uv":[331,48],"uv_size":[1,-11]},"down":{"uv":[314,38],"uv_size":[1,11]}}},{"origin":[-6.2988,22.51774,8.62116],"size":[2,1,1],"pivot":[-5.7988,23.01774,9.12116],"rotation":[-62.28562,80.68274,-57.26655],"uv":{"north":{"uv":[350,12],"uv_size":[-3,1]},"east":{"uv":[349,43],"uv_size":[-1,1]},"south":{"uv":[350,29],"uv_size":[-3,1]},"west":{"uv":[348,44],"uv_size":[-1,1]},"up":{"uv":[345,44],"uv_size":[3,-1]},"down":{"uv":[348,6],"uv_size":[3,1]}}},{"origin":[4.2988,22.51774,8.62116],"size":[2,1,1],"pivot":[5.7988,23.01774,9.12116],"rotation":[-62.28562,-80.68274,57.26655],"uv":{"north":{"uv":[347,12],"uv_size":[3,1]},"east":{"uv":[347,44],"uv_size":[1,1]},"south":{"uv":[347,29],"uv_size":[3,1]},"west":{"uv":[348,43],"uv_size":[1,1]},"up":{"uv":[348,44],"uv_size":[-3,-1]},"down":{"uv":[351,6],"uv_size":[-3,1]}}},{"origin":[-1.54898,10.94894,-0.99663],"size":[1,1,12],"pivot":[-1.04898,12.44894,6.00337],"rotation":[90,-5,-90],"uv":{"north":{"uv":[348,14],"uv_size":[1,1]},"east":{"uv":[334,15],"uv_size":[12,1]},"south":{"uv":[348,15],"uv_size":[1,1]},"west":{"uv":[320,30],"uv_size":[12,1]},"up":{"uv":[333,42],"uv_size":[-1,-12]},"down":{"uv":[334,30],"uv_size":[-1,12]}}}]},{"name":"bone","pivot":[-9.84898,13,5.94745],"parent":"seat","cubes":[{"origin":[5.10102,14.2,-3.35255],"size":[1,1,9],"pivot":[5.65102,14.7,3.64745],"rotation":[-17.5,0,0],"uv":{"north":{"uv":[348,16],"uv_size":[1,1]},"east":{"uv":[342,30],"uv_size":[9,1]},"south":{"uv":[348,17],"uv_size":[1,1]},"west":{"uv":[351,30],"uv_size":[-9,1]},"up":{"uv":[351,31],"uv_size":[-9,-1]},"down":{"uv":[342,31],"uv_size":[9,-1]}}},{"origin":[5.25102,16.3,-2.85255],"size":[1,0.7,8],"pivot":[5.75102,16.5,0.64745],"rotation":[4.26654,-7.09617,8.10197],"uv":{"east":{"uv":[316,24],"uv_size":[8,1]},"south":{"uv":[310,42],"uv_size":[1,1]},"west":{"uv":[342,34],"uv_size":[8,1]},"up":{"uv":[331,47],"uv_size":[-1,-8]},"down":{"uv":[344,38],"uv_size":[-1,8]}}},{"origin":[-6.4512,16.3,-2.85255],"size":[1,0.7,8],"pivot":[-5.9512,16.5,0.64745],"rotation":[4.26654,7.09617,-8.10197],"uv":{"east":{"uv":[350,34],"uv_size":[-8,1]},"south":{"uv":[311,42],"uv_size":[-1,1]},"west":{"uv":[324,24],"uv_size":[-8,1]},"up":{"uv":[330,47],"uv_size":[1,-8]},"down":{"uv":[343,38],"uv_size":[1,8]}}},{"origin":[5.05102,17.94894,-6.89663],"size":[1,1,14.7],"pivot":[5.65102,18.44894,8.00337],"rotation":[25,0,0],"uv":{"north":{"uv":[348,22],"uv_size":[1,1]},"east":{"uv":[320,29],"uv_size":[16,1]},"south":{"uv":[348,26],"uv_size":[1,1]},"west":{"uv":[336,29],"uv_size":[-16,1]},"up":{"uv":[336,30],"uv_size":[-16,-1]},"down":{"uv":[320,30],"uv_size":[16,-1]}}},{"origin":[4.87602,4.21052,-5.21603],"size":[1,1,12],"pivot":[5.37602,4.71052,-0.21603],"rotation":[27.52235,-2.21738,-1.15495],"uv":{"north":{"uv":[348,28],"uv_size":[1,1]},"east":{"uv":[334,11],"uv_size":[13,1]},"south":{"uv":[333,44],"uv_size":[1,1]},"west":{"uv":[334,11],"uv_size":[13,1]},"up":{"uv":[347,12],"uv_size":[-13,-1]},"down":{"uv":[334,12],"uv_size":[13,-1]}}},{"origin":[4.97602,12.11052,-3.86603],"size":[0.8,1,11.45],"uv":{"north":{"uv":[348,28],"uv_size":[1,1]},"east":{"uv":[334,11],"uv_size":[13,1]},"west":{"uv":[334,11],"uv_size":[13,1]},"up":{"uv":[347,12],"uv_size":[-13,-1]},"down":{"uv":[334,12],"uv_size":[13,-1]}}},{"origin":[4.77602,7.59143,5.08342],"size":[0.9,10,1],"pivot":[5.27602,11.59143,5.58342],"rotation":[0,0,3],"uv":{"north":{"uv":[326,39],"uv_size":[1,10]},"east":{"uv":[326,39],"uv_size":[1,10]},"south":{"uv":[326,39],"uv_size":[1,10]},"west":{"uv":[326,39],"uv_size":[1,10]},"up":{"uv":[347,7],"uv_size":[-1,-1]}}},{"origin":[5.10102,13.7,-3.35255],"size":[0.875,3,1],"uv":{"north":{"uv":[316,43],"uv_size":[1,3]},"east":{"uv":[317,43],"uv_size":[1,3]},"south":{"uv":[318,43],"uv_size":[1,3]},"west":{"uv":[319,43],"uv_size":[1,3]},"up":{"uv":[337,45],"uv_size":[-1,-1]},"down":{"uv":[338,44],"uv_size":[-1,1]}}},{"origin":[5.15102,2.575,-5.72755],"size":[0.8,9.9,1],"pivot":[5.65102,11.975,-6.22755],"rotation":[-2.5,0,0],"uv":{"north":{"uv":[342,38],"uv_size":[1,11]},"east":{"uv":[342,38],"uv_size":[1,11]},"south":{"uv":[342,38],"uv_size":[1,11]},"west":{"uv":[342,38],"uv_size":[1,11]},"up":{"uv":[339,45],"uv_size":[-1,-1]},"down":{"uv":[340,44],"uv_size":[-1,1]}}},{"origin":[-5.8512,12.11052,-3.86603],"size":[0.8,1,11.45],"uv":{"north":{"uv":[349,28],"uv_size":[-1,1]},"east":{"uv":[347,11],"uv_size":[-13,1]},"west":{"uv":[347,11],"uv_size":[-13,1]},"up":{"uv":[347,11],"uv_size":[-13,1]},"down":{"uv":[334,11],"uv_size":[13,1]}}},{"origin":[-6.1262,17.94894,-6.89663],"size":[1,1,14.7],"pivot":[-5.7262,18.44894,8.00337],"rotation":[25,0,0],"uv":{"north":{"uv":[349,22],"uv_size":[-1,1]},"east":{"uv":[320,29],"uv_size":[16,1]},"south":{"uv":[349,26],"uv_size":[-1,1]},"west":{"uv":[336,29],"uv_size":[-16,1]},"up":{"uv":[336,29],"uv_size":[-16,1]},"down":{"uv":[320,29],"uv_size":[16,1]}}},{"origin":[-6.1762,14.2,-3.35255],"size":[1,1,9],"pivot":[-5.7262,14.7,3.64745],"rotation":[-17.5,0,0],"uv":{"north":{"uv":[349,16],"uv_size":[-1,1]},"east":{"uv":[342,30],"uv_size":[9,1]},"south":{"uv":[349,17],"uv_size":[-1,1]},"west":{"uv":[351,30],"uv_size":[-9,1]},"up":{"uv":[351,30],"uv_size":[-9,1]},"down":{"uv":[342,30],"uv_size":[9,1]}}},{"origin":[-5.7512,7.59143,5.08342],"size":[0.9,10,1],"pivot":[-5.3512,11.59143,5.58342],"rotation":[0,0,-3],"uv":{"north":{"uv":[327,39],"uv_size":[-1,10]},"east":{"uv":[327,39],"uv_size":[-1,10]},"south":{"uv":[327,39],"uv_size":[-1,10]},"west":{"uv":[327,39],"uv_size":[-1,10]},"up":{"uv":[346,7],"uv_size":[1,-1]}}},{"origin":[-6.0512,13.7,-3.35255],"size":[0.875,3,1],"uv":{"north":{"uv":[317,43],"uv_size":[-1,3]},"east":{"uv":[320,43],"uv_size":[-1,3]},"south":{"uv":[319,43],"uv_size":[-1,3]},"west":{"uv":[318,43],"uv_size":[-1,3]},"up":{"uv":[336,45],"uv_size":[1,-1]},"down":{"uv":[337,44],"uv_size":[1,1]}}},{"origin":[-5.9512,4.21052,-5.21603],"size":[1,1,12],"pivot":[-5.4512,4.71052,-0.21603],"rotation":[27.52235,2.21738,1.15495],"uv":{"north":{"uv":[349,28],"uv_size":[-1,1]},"east":{"uv":[347,11],"uv_size":[-13,1]},"south":{"uv":[334,44],"uv_size":[-1,1]},"west":{"uv":[347,11],"uv_size":[-13,1]},"up":{"uv":[347,11],"uv_size":[-13,1]},"down":{"uv":[334,11],"uv_size":[13,1]}}},{"origin":[-6.0262,2.575,-5.72755],"size":[0.8,9.9,1],"pivot":[-5.7262,11.975,-6.22755],"rotation":[-2.5,0,0],"uv":{"north":{"uv":[343,38],"uv_size":[-1,11]},"east":{"uv":[343,38],"uv_size":[-1,11]},"south":{"uv":[343,38],"uv_size":[-1,11]},"west":{"uv":[343,38],"uv_size":[-1,11]},"up":{"uv":[338,45],"uv_size":[1,-1]},"down":{"uv":[339,44],"uv_size":[1,1]}}},{"origin":[5.17602,2.60633,-8.56327],"size":[1,0.8,3],"pivot":[5.67602,2.90633,-7.56327],"rotation":[2.50238,-2.49762,-0.10912],"uv":{"north":{"uv":[348,36],"uv_size":[1,1]},"east":{"uv":[346,23],"uv_size":[3,1]},"south":{"uv":[348,37],"uv_size":[1,1]},"west":{"uv":[347,11],"uv_size":[3,1]},"up":{"uv":[348,29],"uv_size":[-1,-3]},"down":{"uv":[345,43],"uv_size":[-1,3]}}},{"origin":[-6.17602,2.60633,-8.56327],"size":[1,0.8,3],"pivot":[-5.67602,2.90633,-7.56327],"rotation":[2.50238,2.49762,0.10912],"uv":{"north":{"uv":[349,36],"uv_size":[-1,1]},"east":{"uv":[350,11],"uv_size":[-3,1]},"south":{"uv":[349,37],"uv_size":[-1,1]},"west":{"uv":[349,23],"uv_size":[-3,1]},"up":{"uv":[347,29],"uv_size":[1,-3]},"down":{"uv":[344,43],"uv_size":[1,3]}}}]},{"name":"bone2","pivot":[0.35102,1.72482,-9.39956],"parent":"bone","rotation":[10,0,0],"cubes":[{"origin":[-3.64898,2.24982,-9.89956],"size":[8,0.975,1],"pivot":[0.35102,1.72482,-9.39956],"rotation":[-10,0,0],"uv":{"north":{"uv":[344,0],"uv_size":[8,1]},"south":{"uv":[344,0],"uv_size":[8,1]},"up":{"uv":[352,1],"uv_size":[-8,-1]},"down":{"uv":[352,0],"uv_size":[-8,1]}}},{"origin":[3.6292,2.27272,-8.98332],"size":[4,1,1],"pivot":[5.49972,1.78139,-8.46093],"rotation":[-8.6552,-28.73008,-3.05369],"uv":{"north":{"uv":[346,2],"uv_size":[4,1]},"east":{"uv":[346,44],"uv_size":[1,1]},"south":{"uv":[346,3],"uv_size":[4,1]},"west":{"uv":[348,42],"uv_size":[1,1]},"up":{"uv":[350,5],"uv_size":[-4,-1]},"down":{"uv":[350,5],"uv_size":[-4,1]}}},{"origin":[4.21451,1.9656,-4.61917],"size":[3,1,1],"pivot":[8.15102,1.47482,-3.99956],"rotation":[-28.45503,-72.02093,19.54123],"uv":{"north":{"uv":[347,12],"uv_size":[3,1]},"east":{"uv":[347,44],"uv_size":[1,1]},"south":{"uv":[347,29],"uv_size":[3,1]},"west":{"uv":[348,43],"uv_size":[1,1]},"up":{"uv":[348,44],"uv_size":[-3,-1]},"down":{"uv":[351,6],"uv_size":[-3,1]}}},{"origin":[-7.19972,2.28139,-8.96093],"size":[4,1,1],"pivot":[-5.19972,2.78139,-8.46093],"rotation":[-8.6552,28.73008,3.05369],"uv":{"north":{"uv":[350,2],"uv_size":[-4,1]},"east":{"uv":[349,42],"uv_size":[-1,1]},"south":{"uv":[350,3],"uv_size":[-4,1]},"west":{"uv":[347,44],"uv_size":[-1,1]},"up":{"uv":[346,5],"uv_size":[4,-1]},"down":{"uv":[346,5],"uv_size":[4,1]}}},{"origin":[-6.91451,1.9656,-4.61917],"size":[3,1,1],"pivot":[-7.85102,1.47482,-3.99956],"rotation":[-28.45503,72.02093,-19.54123],"uv":{"north":{"uv":[350,12],"uv_size":[-3,1]},"east":{"uv":[349,43],"uv_size":[-1,1]},"south":{"uv":[350,29],"uv_size":[-3,1]},"west":{"uv":[348,44],"uv_size":[-1,1]},"up":{"uv":[345,44],"uv_size":[3,-1]},"down":{"uv":[348,6],"uv_size":[3,1]}}}]},{"name":"smallwheel1","pivot":[-6.85102,1.47482,-6.99956],"parent":"bone2","cubes":[{"origin":[-5.65102,-0.42518,-9.19956],"size":[1,2,2],"pivot":[-6.15102,0.07482,-7.69956],"rotation":[-10.15108,-9.84655,1.75378],"uv":{"north":{"uv":[320,35],"uv_size":[1,2]},"east":{"uv":[316,35],"uv_size":[2,2]},"south":{"uv":[321,35],"uv_size":[1,2]},"west":{"uv":[318,35],"uv_size":[2,2]},"up":{"uv":[323,37],"uv_size":[-1,-2]},"down":{"uv":[324,35],"uv_size":[-1,2]}}},{"origin":[-5.65102,1.57482,-9.19956],"size":[1,1,1],"pivot":[-6.15102,0.07482,-7.69956],"rotation":[-10.15108,-9.84655,1.75378],"uv":{"north":{"uv":[334,10],"uv_size":[1,1]},"east":{"uv":[334,12],"uv_size":[1,1]},"south":{"uv":[335,10],"uv_size":[1,1]},"west":{"uv":[335,12],"uv_size":[1,1]}}}]},{"name":"smallwheel2","pivot":[7.15102,1.47482,-6.99956],"parent":"bone2","cubes":[{"origin":[4.95102,-0.42518,-9.19956],"size":[1,2,2],"pivot":[6.45102,0.07482,-7.69956],"rotation":[-10.15108,9.84655,-1.75378],"uv":{"north":{"uv":[321,35],"uv_size":[-1,2]},"east":{"uv":[320,35],"uv_size":[-2,2]},"south":{"uv":[322,35],"uv_size":[-1,2]},"west":{"uv":[318,35],"uv_size":[-2,2]},"up":{"uv":[322,37],"uv_size":[1,-2]},"down":{"uv":[323,35],"uv_size":[1,2]}}},{"origin":[4.95102,1.57482,-9.19956],"size":[1,1,1],"pivot":[6.45102,0.07482,-7.69956],"rotation":[-10.15108,9.84655,-1.75378],"uv":{"north":{"uv":[335,10],"uv_size":[-1,1]},"east":{"uv":[336,12],"uv_size":[-1,1]},"south":{"uv":[336,10],"uv_size":[-1,1]},"west":{"uv":[335,12],"uv_size":[-1,1]}}}]},{"name":"wheel","pivot":[8.61241,7.375,2.05995],"parent":"Chair","rotation":[-25,0,-5],"cubes":[{"origin":[8.61241,1.375,-3.94005],"size":[0,12,12],"uv":{"west":{"uv":[304,0],"uv_size":[12,12]}}},{"origin":[0.01241,6.83552,1.58397],"size":[8.5,1,1],"uv":{"north":{"uv":[344,8],"uv_size":[8,1]},"east":{"uv":[348,44],"uv_size":[1,1]},"south":{"uv":[344,8],"uv_size":[8,1]},"west":{"uv":[304,45],"uv_size":[1,1]},"up":{"uv":[352,9],"uv_size":[-8,-1]},"down":{"uv":[344,8],"uv_size":[8,1]}}},{"origin":[8.36241,6.31052,1.08397],"size":[0.6,2,2],"pivot":[8.81241,7.31052,2.08397],"rotation":[45,0,0],"uv":{"north":{"uv":[308,35],"uv_size":[1,2]},"east":{"uv":[324,8],"uv_size":[2,2]},"south":{"uv":[309,35],"uv_size":[1,2]},"west":{"uv":[306,35],"uv_size":[2,2]},"up":{"uv":[311,37],"uv_size":[-1,-2]},"down":{"uv":[312,35],"uv_size":[-1,2]}}}]},{"name":"band","pivot":[8.61241,1.575,-0.32755],"parent":"wheel","cubes":[{"origin":[7.63741,0.575,-3.40255],"size":[1.95,2,6.075],"pivot":[8.61241,1.575,-0.32755],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[306,31],"uv_size":[6,2]},"west":{"uv":[320,31],"uv_size":[6,2]},"up":{"uv":[328,37],"uv_size":[-2,-6]},"down":{"uv":[330,31],"uv_size":[-2,6]}}},{"origin":[7.61241,0.575,1.47245],"size":[2,2,6],"pivot":[8.61241,1.575,4.47245],"rotation":[22.5,0,0],"uv":{"east":{"uv":[336,18],"uv_size":[6,2]},"west":{"uv":[336,20],"uv_size":[6,2]},"up":{"uv":[332,37],"uv_size":[-2,-6]},"down":{"uv":[316,32],"uv_size":[-2,6]}}},{"origin":[7.61241,8.75,4.84745],"size":[2,2,6.025],"pivot":[8.61241,9.75,7.87245],"rotation":[-67.5,0,0],"uv":{"east":{"uv":[306,33],"uv_size":[6,2]},"west":{"uv":[320,33],"uv_size":[6,2]},"up":{"uv":[340,6],"uv_size":[-2,-6]},"down":{"uv":[340,26],"uv_size":[-2,6]}}},{"origin":[7.63741,3.95,4.87245],"size":[1.95,2,6],"pivot":[8.61241,4.95,7.87245],"rotation":[67.5,0,0],"uv":{"east":{"uv":[338,6],"uv_size":[6,2]},"west":{"uv":[338,8],"uv_size":[6,2]},"up":{"uv":[340,38],"uv_size":[-2,-6]},"down":{"uv":[306,35],"uv_size":[-2,6]}}},{"origin":[7.63741,8.8,-6.75255],"size":[1.95,2,6],"pivot":[8.61241,9.8,-3.75255],"rotation":[67.5,0,0],"uv":{"east":{"uv":[324,27],"uv_size":[6,2]},"west":{"uv":[330,27],"uv_size":[6,2]},"up":{"uv":[326,8],"uv_size":[-2,-6]},"down":{"uv":[306,29],"uv_size":[-2,6]}}},{"origin":[7.63741,12.175,1.44745],"size":[1.95,2,6.075],"pivot":[8.61241,13.175,4.44745],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[336,22],"uv_size":[6,2]},"west":{"uv":[336,24],"uv_size":[6,2]},"up":{"uv":[338,32],"uv_size":[-2,-6]},"down":{"uv":[338,32],"uv_size":[-2,6]}}},{"origin":[7.61241,12.175,-3.35255],"size":[2,2,6],"pivot":[8.61241,13.175,-0.35255],"rotation":[22.5,0,0],"uv":{"east":{"uv":[318,8],"uv_size":[6,2]},"west":{"uv":[320,0],"uv_size":[6,2]},"up":{"uv":[322,8],"uv_size":[-2,-6]},"down":{"uv":[324,2],"uv_size":[-2,6]}}},{"origin":[7.61241,4,-6.75255],"size":[2,2,6],"pivot":[8.61241,5,-3.75255],"rotation":[-67.5,0,0],"uv":{"east":{"uv":[306,29],"uv_size":[6,2]},"west":{"uv":[334,16],"uv_size":[6,2]},"up":{"uv":[336,24],"uv_size":[-2,-6]},"down":{"uv":[336,30],"uv_size":[-2,6]}}}]},{"name":"wheel2","pivot":[-8.41241,7.375,2.05995],"parent":"Chair","rotation":[-25,0,5],"cubes":[{"origin":[-8.41241,1.375,-3.94005],"size":[0,12,12],"uv":{"east":{"uv":[316,0],"uv_size":[-12,12]}}},{"origin":[-8.31241,6.83552,1.58397],"size":[8.5,1,1],"uv":{"north":{"uv":[352,8],"uv_size":[-8,1]},"east":{"uv":[305,45],"uv_size":[-1,1]},"south":{"uv":[352,8],"uv_size":[-8,1]},"west":{"uv":[349,44],"uv_size":[-1,1]},"up":{"uv":[344,9],"uv_size":[8,-1]},"down":{"uv":[352,8],"uv_size":[-8,1]}}},{"origin":[-8.76241,6.31052,1.08397],"size":[0.6,2,2],"pivot":[-8.61241,7.31052,2.08397],"rotation":[45,0,0],"uv":{"north":{"uv":[309,35],"uv_size":[-1,2]},"east":{"uv":[308,35],"uv_size":[-2,2]},"south":{"uv":[310,35],"uv_size":[-1,2]},"west":{"uv":[326,8],"uv_size":[-2,2]},"up":{"uv":[310,37],"uv_size":[1,-2]},"down":{"uv":[311,35],"uv_size":[1,2]}}}]},{"name":"band2","pivot":[-8.41241,1.575,-0.32755],"parent":"wheel2","cubes":[{"origin":[-9.38741,0.575,-3.40255],"size":[1.95,2,6.075],"pivot":[-8.41241,1.575,-0.32755],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[326,31],"uv_size":[-6,2]},"west":{"uv":[312,31],"uv_size":[-6,2]},"up":{"uv":[326,37],"uv_size":[2,-6]},"down":{"uv":[328,31],"uv_size":[2,6]}}},{"origin":[-9.41241,0.575,1.47245],"size":[2,2,6],"pivot":[-8.41241,1.575,4.47245],"rotation":[22.5,0,0],"uv":{"east":{"uv":[342,20],"uv_size":[-6,2]},"west":{"uv":[342,18],"uv_size":[-6,2]},"up":{"uv":[330,37],"uv_size":[2,-6]},"down":{"uv":[314,32],"uv_size":[2,6]}}},{"origin":[-9.41241,8.75,4.84745],"size":[2,2,6.025],"pivot":[-8.41241,9.75,7.87245],"rotation":[-67.5,0,0],"uv":{"east":{"uv":[326,33],"uv_size":[-6,2]},"west":{"uv":[312,33],"uv_size":[-6,2]},"up":{"uv":[338,6],"uv_size":[2,-6]},"down":{"uv":[338,26],"uv_size":[2,6]}}},{"origin":[-9.38741,3.95,4.87245],"size":[1.95,2,6],"pivot":[-8.41241,4.95,7.87245],"rotation":[67.5,0,0],"uv":{"east":{"uv":[344,8],"uv_size":[-6,2]},"west":{"uv":[344,6],"uv_size":[-6,2]},"up":{"uv":[338,38],"uv_size":[2,-6]},"down":{"uv":[304,35],"uv_size":[2,6]}}},{"origin":[-9.38741,8.8,-6.75255],"size":[1.95,2,6],"pivot":[-8.41241,9.8,-3.75255],"rotation":[67.5,0,0],"uv":{"east":{"uv":[336,27],"uv_size":[-6,2]},"west":{"uv":[330,27],"uv_size":[-6,2]},"up":{"uv":[324,8],"uv_size":[2,-6]},"down":{"uv":[304,29],"uv_size":[2,6]}}},{"origin":[-9.38741,12.175,1.44745],"size":[1.95,2,6.075],"pivot":[-8.41241,13.175,4.44745],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[342,24],"uv_size":[-6,2]},"west":{"uv":[342,22],"uv_size":[-6,2]},"up":{"uv":[336,32],"uv_size":[2,-6]},"down":{"uv":[336,32],"uv_size":[2,6]}}},{"origin":[-9.41241,12.175,-3.35255],"size":[2,2,6],"pivot":[-8.41241,13.175,-0.35255],"rotation":[22.5,0,0],"uv":{"east":{"uv":[326,0],"uv_size":[-6,2]},"west":{"uv":[324,8],"uv_size":[-6,2]},"up":{"uv":[320,8],"uv_size":[2,-6]},"down":{"uv":[322,2],"uv_size":[2,6]}}},{"origin":[-9.41241,4,-6.75255],"size":[2,2,6],"pivot":[-8.41241,5,-3.75255],"rotation":[-67.5,0,0],"uv":{"east":{"uv":[340,16],"uv_size":[-6,2]},"west":{"uv":[312,29],"uv_size":[-6,2]},"up":{"uv":[334,24],"uv_size":[2,-6]},"down":{"uv":[334,30],"uv_size":[2,6]}}}]}]}]} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/watch/omnitrix.geo.json b/src/main/resources/assets/evolution/cosmetic/watch/omnitrix.geo.json new file mode 100644 index 0000000..61f3259 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/watch/omnitrix.geo.json @@ -0,0 +1,1689 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.evo_omnitrix", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 2, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [ + 0, + 0.75, + 0 + ] + }, + "bones": [ + { + "name": "os_omnitrix", + "pivot": [ + 6, + 21.5, + 0 + ] + }, + { + "name": "core", + "parent": "os_omnitrix", + "pivot": [ + 8.7475, + 15.25, + 0 + ], + "cubes": [ + { + "origin": [ + 8.7, + 14.0, + -1.25 + ], + "size": [ + 0.0, + 2.5, + 2.5 + ], + "uv": { + "west": { + "uv": [ + 22, + 12 + ], + "uv_size": [ + 12, + 12 + ] + } + } + } + ] + }, + { + "name": "dial", + "parent": "core", + "pivot": [ + 8.675, + 15.25, + 0 + ], + "cubes": [ + { + "origin": [ + 8.3, + 14.349999999999998, + -0.9 + ], + "size": [ + 0.5, + 1.8, + 1.8 + ], + "inflate": -0.025, + "uv": { + "north": { + "uv": [ + 10, + 28 + ], + "uv_size": [ + 1, + -3 + ] + }, + "south": { + "uv": [ + 9, + 28 + ], + "uv_size": [ + 1, + -3 + ] + }, + "up": { + "uv": [ + 9, + 28 + ], + "uv_size": [ + -1, + -3 + ] + }, + "down": { + "uv": [ + 8, + 25 + ], + "uv_size": [ + -1, + 3 + ] + } + } + }, + { + "origin": [ + 8.3, + 14.0, + -1.25 + ], + "size": [ + 0.5, + 2.5, + 2.5 + ], + "inflate": 0.1, + "uv": { + "north": { + "uv": [ + 21, + 25 + ], + "uv_size": [ + 1, + 4 + ] + }, + "south": { + "uv": [ + 22, + 25 + ], + "uv_size": [ + 1, + 4 + ] + }, + "west": { + "uv": [ + 12, + 25 + ], + "uv_size": [ + 7, + 7 + ] + }, + "up": { + "uv": [ + 19, + 25 + ], + "uv_size": [ + 1, + 4 + ] + }, + "down": { + "uv": [ + 20, + 29 + ], + "uv_size": [ + 1, + -4 + ] + } + } + }, + { + "origin": [ + 8.3, + 14.0, + -1.25 + ], + "size": [ + 0.5, + 2.5, + 2.5 + ], + "inflate": 0.025, + "uv": { + "north": { + "uv": [ + 9, + 25 + ], + "uv_size": [ + 1, + 3 + ] + }, + "east": { + "uv": [ + 7, + 28 + ], + "uv_size": [ + 3, + 3 + ] + }, + "south": { + "uv": [ + 10, + 25 + ], + "uv_size": [ + 1, + 3 + ] + }, + "west": { + "uv": [ + 0, + 25 + ], + "uv_size": [ + 7, + 7 + ] + }, + "up": { + "uv": [ + 7, + 25 + ], + "uv_size": [ + 1, + 3 + ] + }, + "down": { + "uv": [ + 8, + 28 + ], + "uv_size": [ + 1, + -3 + ] + } + } + } + ] + }, + { + "name": "lights", + "parent": "dial", + "pivot": [ + 9.075, + 15.25, + 0 + ], + "cubes": [ + { + "origin": [ + 8.775, + 14.75, + -1.75 + ], + "size": [ + 1.0, + 1.0, + 1.0 + ], + "inflate": -0.3, + "pivot": [ + 9.075, + 15.25, + 0 + ], + "rotation": [ + 0, + 22.5, + 0 + ], + "uv": { + "north": { + "uv": [ + 59, + 26 + ], + "uv_size": [ + 1, + 1 + ] + }, + "east": { + "uv": [ + 59, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "south": { + "uv": [ + 60, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "west": { + "uv": [ + 58, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "up": { + "uv": [ + 61, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "down": { + "uv": [ + 61, + 28 + ], + "uv_size": [ + 1, + -1 + ] + } + } + }, + { + "origin": [ + 8.775, + 16.0, + -0.5 + ], + "size": [ + 1.0, + 1.0, + 1.0 + ], + "inflate": -0.3, + "pivot": [ + 9.075, + 15.25, + 0 + ], + "rotation": [ + 0, + 0, + -22.5 + ], + "uv": { + "north": { + "uv": [ + 61, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "east": { + "uv": [ + 59, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "south": { + "uv": [ + 61, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "west": { + "uv": [ + 58, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "up": { + "uv": [ + 59, + 26 + ], + "uv_size": [ + 1, + 1 + ] + }, + "down": { + "uv": [ + 60, + 28 + ], + "uv_size": [ + 1, + -1 + ] + } + } + }, + { + "origin": [ + 8.775, + 14.75, + 0.75 + ], + "size": [ + 1.0, + 1.0, + 1.0 + ], + "inflate": -0.3, + "pivot": [ + 9.075, + 15.25, + 0 + ], + "rotation": [ + 0, + -22.5, + 0 + ], + "uv": { + "north": { + "uv": [ + 60, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "east": { + "uv": [ + 59, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "south": { + "uv": [ + 59, + 26 + ], + "uv_size": [ + 1, + 1 + ] + }, + "west": { + "uv": [ + 58, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "up": { + "uv": [ + 61, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "down": { + "uv": [ + 61, + 28 + ], + "uv_size": [ + 1, + -1 + ] + } + } + }, + { + "origin": [ + 8.775, + 13.5, + -0.5 + ], + "size": [ + 1.0, + 1.0, + 1.0 + ], + "inflate": -0.3, + "pivot": [ + 9.075, + 15.25, + 0 + ], + "rotation": [ + 0, + 0, + 22.5 + ], + "uv": { + "north": { + "uv": [ + 61, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "east": { + "uv": [ + 59, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "south": { + "uv": [ + 61, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "west": { + "uv": [ + 58, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "up": { + "uv": [ + 60, + 27 + ], + "uv_size": [ + 1, + 1 + ] + }, + "down": { + "uv": [ + 59, + 27 + ], + "uv_size": [ + 1, + -1 + ] + } + } + } + ] + }, + { + "name": "cylinder", + "parent": "core", + "pivot": [ + 8.675, + 15.25, + 0 + ], + "cubes": [ + { + "origin": [ + 7.675, + 14.375, + -0.875 + ], + "size": [ + 0.85, + 1.75, + 1.75 + ], + "inflate": 0.025, + "uv": { + "north": { + "uv": [ + 50, + 13 + ], + "uv_size": [ + 3, + 5 + ] + }, + "east": { + "uv": [ + 59, + 13 + ], + "uv_size": [ + 2, + 2 + ] + }, + "south": { + "uv": [ + 53, + 13 + ], + "uv_size": [ + 3, + 5 + ] + }, + "west": { + "uv": [ + 59, + 15 + ], + "uv_size": [ + 2, + 2 + ] + }, + "up": { + "uv": [ + 50, + 18 + ], + "uv_size": [ + -3, + -5 + ] + }, + "down": { + "uv": [ + 59, + 18 + ], + "uv_size": [ + -3, + -5 + ] + } + } + }, + { + "origin": [ + 7.675, + 14.375, + -0.875 + ], + "size": [ + 0.85, + 1.75, + 1.75 + ], + "inflate": 0.1, + "uv": { + "north": { + "uv": [ + 50, + 19 + ], + "uv_size": [ + 3, + 5 + ] + }, + "east": { + "uv": [ + 59, + 19 + ], + "uv_size": [ + 2, + 2 + ] + }, + "south": { + "uv": [ + 53, + 19 + ], + "uv_size": [ + 3, + 5 + ] + }, + "west": { + "uv": [ + 59, + 21 + ], + "uv_size": [ + 2, + 2 + ] + }, + "up": { + "uv": [ + 50, + 24 + ], + "uv_size": [ + -3, + -5 + ] + }, + "down": { + "uv": [ + 59, + 24 + ], + "uv_size": [ + -3, + -5 + ] + } + } + } + ] + }, + { + "name": "arrows", + "parent": "core", + "pivot": [ + 8.7225, + 15.25, + 0 + ] + }, + { + "name": "a_closed", + "parent": "arrows", + "pivot": [ + 8.725, + 15.25, + 0 + ], + "cubes": [ + { + "origin": [ + 8.775, + 14.0, + -1.25 + ], + "size": [ + 0.0, + 2.5, + 2.5 + ], + "uv": { + "west": { + "uv": [ + 0, + 0 + ], + "uv_size": [ + 11, + 12 + ] + } + } + } + ] + }, + { + "name": "os_body", + "parent": "os_omnitrix", + "pivot": [ + 14, + 13.5, + -8 + ] + }, + { + "name": "white", + "parent": "os_body", + "pivot": [ + 0, + 0.25, + 0 + ], + "cubes": [ + { + "origin": [ + 3.5, + 13.88365, + -2.49273 + ], + "size": [ + 5.0, + 0.7, + 1.0 + ], + "pivot": [ + 6, + 14.23365, + -1.99273 + ], + "rotation": [ + 12.5, + 0, + 0 + ], + "uv": { + "north": { + "uv": [ + 36, + 30 + ], + "uv_size": [ + 5, + -1 + ] + }, + "east": { + "uv": [ + 35, + 30 + ], + "uv_size": [ + 1, + -1 + ] + }, + "west": { + "uv": [ + 41, + 30 + ], + "uv_size": [ + 1, + -1 + ] + } + } + }, + { + "origin": [ + 3.5, + 13.88365, + 1.49273 + ], + "size": [ + 5.0, + 0.7, + 1.0 + ], + "pivot": [ + 6, + 14.23365, + 1.99273 + ], + "rotation": [ + -12.5, + 0, + 0 + ], + "uv": { + "east": { + "uv": [ + 36, + 30 + ], + "uv_size": [ + -1, + -1 + ] + }, + "south": { + "uv": [ + 41, + 30 + ], + "uv_size": [ + -5, + -1 + ] + }, + "west": { + "uv": [ + 42, + 30 + ], + "uv_size": [ + -1, + -1 + ] + } + } + }, + { + "origin": [ + 3.5, + 15.91635, + 1.49273 + ], + "size": [ + 5.0, + 0.7, + 1.0 + ], + "pivot": [ + 6, + 16.26635, + 1.99273 + ], + "rotation": [ + 12.5, + 0, + 0 + ], + "uv": { + "east": { + "uv": [ + 36, + 29 + ], + "uv_size": [ + -1, + 1 + ] + }, + "south": { + "uv": [ + 41, + 29 + ], + "uv_size": [ + -5, + 1 + ] + }, + "west": { + "uv": [ + 42, + 29 + ], + "uv_size": [ + -1, + 1 + ] + } + } + }, + { + "origin": [ + 3.5, + 15.91635, + -2.49273 + ], + "size": [ + 5.0, + 0.7, + 1.0 + ], + "pivot": [ + 6, + 16.26635, + -1.99273 + ], + "rotation": [ + -12.5, + 0, + 0 + ], + "uv": { + "north": { + "uv": [ + 36, + 29 + ], + "uv_size": [ + 5, + 1 + ] + }, + "east": { + "uv": [ + 35, + 29 + ], + "uv_size": [ + 1, + 1 + ] + }, + "west": { + "uv": [ + 41, + 29 + ], + "uv_size": [ + 1, + 1 + ] + } + } + }, + { + "origin": [ + 3.5, + 15.81643, + -1.58034 + ], + "size": [ + 5.0, + 0.7, + 3.16068 + ], + "uv": { + "east": { + "uv": [ + 35, + 31 + ], + "uv_size": [ + 4, + 1 + ] + } + } + }, + { + "origin": [ + 3.5, + 13.98357, + -1.58034 + ], + "size": [ + 5.0, + 0.7, + 3.16068 + ], + "uv": { + "east": { + "uv": [ + 35, + 31 + ], + "uv_size": [ + 4, + 1 + ] + } + } + } + ] + }, + { + "name": "grey", + "parent": "os_body", + "pivot": [ + 0, + 0.25, + 0 + ], + "cubes": [ + { + "origin": [ + 4.0, + 13.60362, + -5.41044 + ], + "size": [ + 4.0, + 0.5, + 1.0 + ], + "inflate": 0.251, + "pivot": [ + 0, + 29.65362, + -3.16044 + ], + "rotation": [ + 12.5, + 0, + 0 + ], + "uv": { + "north": { + "uv": [ + 45, + 27 + ], + "uv_size": [ + 6, + -1 + ] + }, + "east": { + "uv": [ + 45, + 26 + ], + "uv_size": [ + 2, + -1 + ] + }, + "west": { + "uv": [ + 49, + 26 + ], + "uv_size": [ + 2, + -1 + ] + } + } + }, + { + "origin": [ + 3.749, + 13.52279, + -0.82445 + ], + "size": [ + 0.0, + 0.97825, + 1.6489 + ], + "uv": { + "east": { + "uv": [ + 47, + 25 + ], + "uv_size": [ + 2, + 1 + ] + } + } + }, + { + "origin": [ + 3.749, + 15.99896, + -0.82445 + ], + "size": [ + 0.0, + 0.97825, + 1.6489 + ], + "uv": { + "east": { + "uv": [ + 47, + 25 + ], + "uv_size": [ + 2, + 1 + ] + } + } + }, + { + "origin": [ + 4.0, + 16.39638, + -5.41044 + ], + "size": [ + 4.0, + 0.5, + 1.0 + ], + "inflate": 0.251, + "pivot": [ + 0, + 0.84638, + -3.16044 + ], + "rotation": [ + -12.5, + 0, + 0 + ], + "uv": { + "north": { + "uv": [ + 45, + 26 + ], + "uv_size": [ + 6, + 1 + ] + }, + "east": { + "uv": [ + 45, + 25 + ], + "uv_size": [ + 2, + 1 + ] + }, + "west": { + "uv": [ + 49, + 25 + ], + "uv_size": [ + 2, + 1 + ] + } + } + }, + { + "origin": [ + 4.0, + 16.39638, + 4.41044 + ], + "size": [ + 4.0, + 0.5, + 1.0 + ], + "inflate": 0.251, + "pivot": [ + 0, + 0.84638, + 3.16044 + ], + "rotation": [ + 12.5, + 0, + 0 + ], + "uv": { + "east": { + "uv": [ + 47, + 25 + ], + "uv_size": [ + -2, + 1 + ] + }, + "south": { + "uv": [ + 51, + 26 + ], + "uv_size": [ + -6, + 1 + ] + }, + "west": { + "uv": [ + 51, + 25 + ], + "uv_size": [ + -2, + 1 + ] + } + } + }, + { + "origin": [ + 4.0, + 13.60362, + 4.41044 + ], + "size": [ + 4.0, + 0.5, + 1.0 + ], + "inflate": 0.251, + "pivot": [ + 0, + 29.65362, + 3.16044 + ], + "rotation": [ + -12.5, + 0, + 0 + ], + "uv": { + "east": { + "uv": [ + 47, + 26 + ], + "uv_size": [ + -2, + -1 + ] + }, + "south": { + "uv": [ + 51, + 27 + ], + "uv_size": [ + -6, + -1 + ] + }, + "west": { + "uv": [ + 51, + 26 + ], + "uv_size": [ + -2, + -1 + ] + } + } + } + ] + }, + { + "name": "black", + "parent": "os_body", + "pivot": [ + 0, + 0.25, + 0 + ], + "cubes": [ + { + "origin": [ + 8.25, + 14.55, + -0.7 + ], + "size": [ + 0.0, + 1.4, + 1.4 + ], + "pivot": [ + 7.75, + 15.25, + 0 + ], + "rotation": [ + -45, + 0, + 0 + ], + "uv": { + "west": { + "uv": [ + 20, + 30 + ], + "uv_size": [ + 2, + 2 + ] + } + } + }, + { + "origin": [ + 8.275, + 15.0, + -0.25 + ], + "size": [ + 0.0, + 0.5, + 0.5 + ], + "uv": { + "west": { + "uv": [ + 61, + 30 + ], + "uv_size": [ + 1, + 1 + ] + } + } + }, + { + "origin": [ + 3.5, + 13.625, + -2.5 + ], + "size": [ + 5.0, + 3.25, + 5.0 + ], + "inflate": -0.2, + "uv": { + "north": { + "uv": [ + 29, + 25 + ], + "uv_size": [ + 5, + 3 + ] + }, + "east": { + "uv": [ + 24, + 25 + ], + "uv_size": [ + 5, + 3 + ] + }, + "south": { + "uv": [ + 39, + 25 + ], + "uv_size": [ + 5, + 3 + ] + }, + "west": { + "uv": [ + 34, + 25 + ], + "uv_size": [ + 5, + 3 + ] + }, + "up": { + "uv": [ + 24, + 28 + ], + "uv_size": [ + 5, + 5 + ] + }, + "down": { + "uv": [ + 29, + 33 + ], + "uv_size": [ + 5, + -5 + ] + } + } + } + ] + }, + { + "name": "button", + "parent": "os_body", + "pivot": [ + 8, + 15.25, + -2 + ], + "rotation": [ + 0, + 65, + 0 + ], + "cubes": [ + { + "origin": [ + 7.75, + 14.75, + -2.5 + ], + "size": [ + 1.0, + 1.0, + 1.0 + ], + "inflate": -0.25, + "uv": { + "north": { + "uv": [ + 61, + 30 + ], + "uv_size": [ + 1, + 1 + ] + }, + "south": { + "uv": [ + 61, + 30 + ], + "uv_size": [ + 1, + 1 + ] + }, + "west": { + "uv": [ + 61, + 30 + ], + "uv_size": [ + 1, + 1 + ] + }, + "up": { + "uv": [ + 61, + 30 + ], + "uv_size": [ + 1, + 1 + ] + }, + "down": { + "uv": [ + 61, + 31 + ], + "uv_size": [ + 1, + -1 + ] + } + } + }, + { + "origin": [ + 7.525, + 14.75, + -2.5 + ], + "size": [ + 1.0, + 1.0, + 1.0 + ], + "inflate": -0.125, + "uv": { + "north": { + "uv": [ + 57, + 30 + ], + "uv_size": [ + 1, + 1 + ] + }, + "east": { + "uv": [ + 56, + 30 + ], + "uv_size": [ + 1, + 1 + ] + }, + "south": { + "uv": [ + 59, + 30 + ], + "uv_size": [ + 1, + 1 + ] + }, + "west": { + "uv": [ + 58, + 30 + ], + "uv_size": [ + 1, + 1 + ] + }, + "up": { + "uv": [ + 57, + 29 + ], + "uv_size": [ + 1, + 1 + ] + }, + "down": { + "uv": [ + 58, + 30 + ], + "uv_size": [ + 1, + -1 + ] + } + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/wings/angel.geo.json b/src/main/resources/assets/evolution/cosmetic/wings/angel.geo.json new file mode 100644 index 0000000..5872d40 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/angel.geo.json @@ -0,0 +1,517 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.angel", + "texture_width": 258, + "texture_height": 387, + "visible_bounds_width": 10, + "visible_bounds_height": 5, + "visible_bounds_offset": [ + 0, + 1.5, + 0 + ] + }, + "bones": [ + { + "name": "Wings", + "pivot": [ + 0, + -6.85, + 0 + ] + }, + { + "name": "Right_Wing", + "parent": "Wings", + "pivot": [ + -2.93976, + -5.44744, + 2.38353 + ], + "rotation": [ + -1.07057, + 3.8543, + -15.53602 + ] + }, + { + "name": "Right_Wing2", + "parent": "Right_Wing", + "pivot": [ + -12.32527, + 1.02659, + 1.75929 + ], + "cubes": [ + { + "origin": [ + -42.52111, + -12.97582, + 2.15429 + ], + "size": [ + 46, + 38.1, + 0 + ], + "pivot": [ + -26.56808, + -7.39648, + 3.48791 + ], + "rotation": [ + 4.15043, + -0.81935, + 7.89748 + ], + "uv": [ + 1, + 51 + ] + } + ] + }, + { + "name": "bone4", + "parent": "Right_Wing2", + "pivot": [ + -19.32325, + 3.34313, + 1.28385 + ], + "cubes": [ + { + "origin": [ + -43.01561, + -13.04216, + 2.12159 + ], + "size": [ + 46, + 42.1, + 0 + ], + "pivot": [ + -26.56808, + -7.39648, + 3.48791 + ], + "rotation": [ + 4.15043, + -0.81935, + 7.89748 + ], + "uv": [ + 117, + 149 + ] + } + ] + }, + { + "name": "bone5", + "parent": "bone4", + "pivot": [ + -22.14301, + 0.74618, + 1.76461 + ], + "cubes": [ + { + "origin": [ + -60.14299, + -15.98428, + 3.1095 + ], + "size": [ + 46, + 38.1, + 0 + ], + "pivot": [ + -20.06808, + -8.69648, + 2.98791 + ], + "rotation": [ + 7.74343, + 12.8061, + -10.54352 + ], + "uv": [ + 1, + 91 + ] + } + ] + }, + { + "name": "bone8", + "parent": "Right_Wing2", + "pivot": [ + -14.43869, + -6.54119, + 3.03488 + ], + "rotation": [ + -10.3371, + -0.1063, + 16.88836 + ], + "cubes": [ + { + "origin": [ + -45.1861, + -40.98733, + 5.63314 + ], + "size": [ + 46, + 38.1, + 0 + ], + "pivot": [ + -23.1861, + -20.93733, + 5.63314 + ], + "rotation": [ + 8.7678, + 1.78326, + 13.33926 + ], + "uv": [ + 1, + 1 + ] + } + ] + }, + { + "name": "bone9", + "parent": "Right_Wing", + "pivot": [ + -3.4317, + -4.71341, + 2.70181 + ], + "cubes": [ + { + "origin": [ + -43.0317, + -15.66341, + 2.70181 + ], + "size": [ + 46, + 38.1, + 0 + ], + "pivot": [ + -3.4317, + -4.71341, + 2.70181 + ], + "rotation": [ + -1.02452, + -7.94183, + 6.56222 + ], + "uv": [ + 136, + 54 + ] + } + ] + }, + { + "name": "bone11", + "parent": "bone9", + "pivot": [ + -12.45911, + 1.01341, + 1.55166 + ], + "cubes": [ + { + "origin": [ + -43.0317, + -15.66341, + 2.70181 + ], + "size": [ + 46, + 38.1, + 0 + ], + "pivot": [ + -3.4317, + -4.71341, + 2.70181 + ], + "rotation": [ + -1.02452, + -7.94183, + 6.56222 + ], + "uv": [ + 136, + 93 + ] + } + ] + }, + { + "name": "Left_Wing", + "parent": "Wings", + "pivot": [ + 2.93976, + -5.44744, + 2.38353 + ], + "rotation": [ + -1.07057, + -3.8543, + 15.53602 + ] + }, + { + "name": "Left_Wing2", + "parent": "Left_Wing", + "pivot": [ + 12.32527, + 1.02659, + 1.75929 + ], + "cubes": [ + { + "origin": [ + -3.47889, + -12.97582, + 2.15429 + ], + "size": [ + 46, + 38.1, + 0 + ], + "pivot": [ + 26.56808, + -7.39648, + 3.48791 + ], + "rotation": [ + 4.15043, + 0.81935, + -7.89748 + ], + "uv": [ + 1, + 51 + ], + "mirror": true + } + ] + }, + { + "name": "bone6", + "parent": "Left_Wing2", + "pivot": [ + 19.32325, + 3.34313, + 1.28385 + ], + "cubes": [ + { + "origin": [ + -2.98439, + -13.04216, + 2.12159 + ], + "size": [ + 46, + 42.1, + 0 + ], + "pivot": [ + 26.56808, + -7.39648, + 3.48791 + ], + "rotation": [ + 4.15043, + 0.81935, + -7.89748 + ], + "uv": [ + 117, + 149 + ], + "mirror": true + } + ] + }, + { + "name": "bone7", + "parent": "bone6", + "pivot": [ + 22.14301, + 0.74618, + 1.76461 + ], + "cubes": [ + { + "origin": [ + 14.14299, + -15.98428, + 3.1095 + ], + "size": [ + 46, + 38.1, + 0 + ], + "pivot": [ + 20.06808, + -8.69648, + 2.98791 + ], + "rotation": [ + 7.74343, + -12.8061, + 10.54352 + ], + "uv": [ + 1, + 91 + ], + "mirror": true + } + ] + }, + { + "name": "bone3", + "parent": "Left_Wing2", + "pivot": [ + 14.43869, + -6.54119, + 3.03488 + ], + "rotation": [ + -10.3371, + 0.1063, + -16.88836 + ], + "cubes": [ + { + "origin": [ + -0.8139, + -40.98733, + 5.63314 + ], + "size": [ + 46, + 38.1, + 0 + ], + "pivot": [ + 23.1861, + -20.93733, + 5.63314 + ], + "rotation": [ + 8.7678, + -1.78326, + -13.33926 + ], + "uv": [ + 1, + 1 + ], + "mirror": true + } + ] + }, + { + "name": "bone2", + "parent": "Left_Wing", + "pivot": [ + 3.4317, + -4.71341, + 2.70181 + ], + "cubes": [ + { + "origin": [ + -2.9683, + -15.66341, + 2.70181 + ], + "size": [ + 46, + 38.1, + 0 + ], + "pivot": [ + 3.4317, + -4.71341, + 2.70181 + ], + "rotation": [ + -1.02452, + 7.94183, + -6.56222 + ], + "uv": [ + 136, + 54 + ], + "mirror": true + } + ] + }, + { + "name": "bone10", + "parent": "bone2", + "pivot": [ + 12.45911, + 1.01341, + 1.55166 + ], + "cubes": [ + { + "origin": [ + -2.9683, + -15.66341, + 2.70181 + ], + "size": [ + 46, + 38.1, + 0 + ], + "pivot": [ + 3.4317, + -4.71341, + 2.70181 + ], + "rotation": [ + -1.02452, + 7.94183, + -6.56222 + ], + "uv": [ + 136, + 93 + ], + "mirror": true + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/wings/blue_dragon.animation.json b/src/main/resources/assets/evolution/cosmetic/wings/blue_dragon.animation.json new file mode 100644 index 0000000..990ff5c --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/blue_dragon.animation.json @@ -0,0 +1 @@ +{"animation.dragon_wings.idle":{"loop":true,"animation_length":1.8,"bones":{"wing_left":{"rotation":{"0":[10,-22.5,15.54292],"1":[-9.39693,-32.7606,-18.91037],"0.033":[9.93238,-19.01721,16.89902],"0.067":[9.73045,-15.58152,18.02658],"0.1":[9.39693,-12.2394,18.91037],"0.133":[8.93633,-9.03602,19.53843],"0.167":[8.35488,-6.01473,19.90226],"0.2":[7.66044,-3.21637,19.99695],"0.233":[6.86242,-0.67879,19.82122],"0.267":[5.97159,1.5637,19.37744],"0.3":[5,3.48076,18.67161],"0.333":[3.9608,5.04648,17.71328],"0.367":[2.86803,6.23969,16.51541],"0.4":[1.73648,7.04423,15.09419],"0.433":[0.58145,7.44924,13.46885],"0.467":[-0.58145,7.44924,11.66137],"0.5":[-1.73648,7.04423,9.69619],"0.533":[-2.86803,6.23969,7.59989],"0.567":[-3.9608,5.04648,5.40081],"0.6":[-5,3.48076,3.12869],"0.633":[-5.97159,1.5637,0.81426],"0.667":[-6.86242,-0.67879,-1.51118],"0.7":[-7.66044,-3.21637,-3.81618],"0.733":[-8.35488,-6.01473,-6.06958],"0.767":[-8.93633,-9.03602,-8.24089],"0.8":[-9.39693,-12.2394,-10.30076],"0.833":[-9.73045,-15.58152,-12.22133],"0.867":[-9.93238,-19.01721,-13.97663],"0.9":[-10,-22.5,-15.54292],"0.933":[-9.93238,-25.98279,-16.89902],"0.967":[-9.73045,-29.41848,-18.02658],"1.033":[-8.93633,-35.96398,-19.53843],"1.067":[-8.35488,-38.98527,-19.90226],"1.1":[-7.66044,-41.78363,-19.99695],"1.133":[-6.86242,-44.32121,-19.82122],"1.167":[-5.97159,-46.5637,-19.37744],"1.2":[-5,-48.48076,-18.67161],"1.233":[-3.9608,-50.04648,-17.71328],"1.267":[-2.86803,-51.23969,-16.51541],"1.3":[-1.73648,-52.04423,-15.09419],"1.333":[-0.58145,-52.44924,-13.46885],"1.367":[0.58145,-52.44924,-11.66137],"1.4":[1.73648,-52.04423,-9.69619],"1.433":[2.86803,-51.23969,-7.59989],"1.467":[3.9608,-50.04648,-5.40081],"1.5":[5,-48.48076,-3.12869],"1.533":[5.97159,-46.5637,-0.81426],"1.567":[6.86242,-44.32121,1.51118],"1.6":[7.66044,-41.78363,3.81618],"1.633":[8.35488,-38.98527,6.06958],"1.667":[8.93633,-35.96398,8.24089],"1.7":[9.39693,-32.7606,10.30076],"1.733":[9.73045,-29.41848,12.22133],"1.767":[9.93238,-25.98279,13.97663],"1.8":[10,-22.5,15.54292]},"position":{"0":[0.5,0,0],"1":[-0.46985,0,0],"0.033":[0.49662,0,0],"0.067":[0.48652,0,0],"0.1":[0.46985,0,0],"0.133":[0.44682,0,0],"0.167":[0.41774,0,0],"0.2":[0.38302,0,0],"0.233":[0.34312,0,0],"0.267":[0.29858,0,0],"0.3":[0.25,0,0],"0.333":[0.19804,0,0],"0.367":[0.1434,0,0],"0.4":[0.08682,0,0],"0.433":[0.02907,0,0],"0.467":[-0.02907,0,0],"0.5":[-0.08682,0,0],"0.533":[-0.1434,0,0],"0.567":[-0.19804,0,0],"0.6":[-0.25,0,0],"0.633":[-0.29858,0,0],"0.667":[-0.34312,0,0],"0.7":[-0.38302,0,0],"0.733":[-0.41774,0,0],"0.767":[-0.44682,0,0],"0.8":[-0.46985,0,0],"0.833":[-0.48652,0,0],"0.867":[-0.49662,0,0],"0.9":[-0.5,0,0],"0.933":[-0.49662,0,0],"0.967":[-0.48652,0,0],"1.033":[-0.44682,0,0],"1.067":[-0.41774,0,0],"1.1":[-0.38302,0,0],"1.133":[-0.34312,0,0],"1.167":[-0.29858,0,0],"1.2":[-0.25,0,0],"1.233":[-0.19804,0,0],"1.267":[-0.1434,0,0],"1.3":[-0.08682,0,0],"1.333":[-0.02907,0,0],"1.367":[0.02907,0,0],"1.4":[0.08682,0,0],"1.433":[0.1434,0,0],"1.467":[0.19804,0,0],"1.5":[0.25,0,0],"1.533":[0.29858,0,0],"1.567":[0.34312,0,0],"1.6":[0.38302,0,0],"1.633":[0.41774,0,0],"1.667":[0.44682,0,0],"1.7":[0.46985,0,0],"1.733":[0.48652,0,0],"1.767":[0.49662,0,0],"1.8":[0.5,0,0]}},"wing_2":{"rotation":{"0":[10,-5,0],"1":[-9.39693,4.69846,0],"0.033":[9.93238,-4.96619,0],"0.067":[9.73045,-4.86522,0],"0.1":[9.39693,-4.69846,0],"0.133":[8.93633,-4.46816,0],"0.167":[8.35488,-4.17744,0],"0.2":[7.66044,-3.83022,0],"0.233":[6.86242,-3.43121,0],"0.267":[5.97159,-2.98579,0],"0.3":[5,-2.5,0],"0.333":[3.9608,-1.9804,0],"0.367":[2.86803,-1.43402,0],"0.4":[1.73648,-0.86824,0],"0.433":[0.58145,-0.29072,0],"0.467":[-0.58145,0.29072,0],"0.5":[-1.73648,0.86824,0],"0.533":[-2.86803,1.43402,0],"0.567":[-3.9608,1.9804,0],"0.6":[-5,2.5,0],"0.633":[-5.97159,2.98579,0],"0.667":[-6.86242,3.43121,0],"0.7":[-7.66044,3.83022,0],"0.733":[-8.35488,4.17744,0],"0.767":[-8.93633,4.46816,0],"0.8":[-9.39693,4.69846,0],"0.833":[-9.73045,4.86522,0],"0.867":[-9.93238,4.96619,0],"0.9":[-10,5,0],"0.933":[-9.93238,4.96619,0],"0.967":[-9.73045,4.86522,0],"1.033":[-8.93633,4.46816,0],"1.067":[-8.35488,4.17744,0],"1.1":[-7.66044,3.83022,0],"1.133":[-6.86242,3.43121,0],"1.167":[-5.97159,2.98579,0],"1.2":[-5,2.5,0],"1.233":[-3.9608,1.9804,0],"1.267":[-2.86803,1.43402,0],"1.3":[-1.73648,0.86824,0],"1.333":[-0.58145,0.29072,0],"1.367":[0.58145,-0.29072,0],"1.4":[1.73648,-0.86824,0],"1.433":[2.86803,-1.43402,0],"1.467":[3.9608,-1.9804,0],"1.5":[5,-2.5,0],"1.533":[5.97159,-2.98579,0],"1.567":[6.86242,-3.43121,0],"1.6":[7.66044,-3.83022,0],"1.633":[8.35488,-4.17744,0],"1.667":[8.93633,-4.46816,0],"1.7":[9.39693,-4.69846,0],"1.733":[9.73045,-4.86522,0],"1.767":[9.93238,-4.96619,0],"1.8":[10,-5,0]}},"wing_right":{"rotation":{"0":[10,22.5,-15.54292],"1":[-9.39693,32.7606,18.91037],"0.033":[9.93238,19.01721,-16.89902],"0.067":[9.73045,15.58152,-18.02658],"0.1":[9.39693,12.2394,-18.91037],"0.133":[8.93633,9.03602,-19.53843],"0.167":[8.35488,6.01473,-19.90226],"0.2":[7.66044,3.21637,-19.99695],"0.233":[6.86242,0.67879,-19.82122],"0.267":[5.97159,-1.5637,-19.37744],"0.3":[5,-3.48076,-18.67161],"0.333":[3.9608,-5.04648,-17.71328],"0.367":[2.86803,-6.23969,-16.51541],"0.4":[1.73648,-7.04423,-15.09419],"0.433":[0.58145,-7.44924,-13.46885],"0.467":[-0.58145,-7.44924,-11.66137],"0.5":[-1.73648,-7.04423,-9.69619],"0.533":[-2.86803,-6.23969,-7.59989],"0.567":[-3.9608,-5.04648,-5.40081],"0.6":[-5,-3.48076,-3.12869],"0.633":[-5.97159,-1.5637,-0.81426],"0.667":[-6.86242,0.67879,1.51118],"0.7":[-7.66044,3.21637,3.81618],"0.733":[-8.35488,6.01473,6.06958],"0.767":[-8.93633,9.03602,8.24089],"0.8":[-9.39693,12.2394,10.30076],"0.833":[-9.73045,15.58152,12.22133],"0.867":[-9.93238,19.01721,13.97663],"0.9":[-10,22.5,15.54292],"0.933":[-9.93238,25.98279,16.89902],"0.967":[-9.73045,29.41848,18.02658],"1.033":[-8.93633,35.96398,19.53843],"1.067":[-8.35488,38.98527,19.90226],"1.1":[-7.66044,41.78363,19.99695],"1.133":[-6.86242,44.32121,19.82122],"1.167":[-5.97159,46.5637,19.37744],"1.2":[-5,48.48076,18.67161],"1.233":[-3.9608,50.04648,17.71328],"1.267":[-2.86803,51.23969,16.51541],"1.3":[-1.73648,52.04423,15.09419],"1.333":[-0.58145,52.44924,13.46885],"1.367":[0.58145,52.44924,11.66137],"1.4":[1.73648,52.04423,9.69619],"1.433":[2.86803,51.23969,7.59989],"1.467":[3.9608,50.04648,5.40081],"1.5":[5,48.48076,3.12869],"1.533":[5.97159,46.5637,0.81426],"1.567":[6.86242,44.32121,-1.51118],"1.6":[7.66044,41.78363,-3.81618],"1.633":[8.35488,38.98527,-6.06958],"1.667":[8.93633,35.96398,-8.24089],"1.7":[9.39693,32.7606,-10.30076],"1.733":[9.73045,29.41848,-12.22133],"1.767":[9.93238,25.98279,-13.97663],"1.8":[10,22.5,-15.54292]},"position":{"0":[-0.5,0,0],"1":[0.46985,0,0],"0.033":[-0.49662,0,0],"0.067":[-0.48652,0,0],"0.1":[-0.46985,0,0],"0.133":[-0.44682,0,0],"0.167":[-0.41774,0,0],"0.2":[-0.38302,0,0],"0.233":[-0.34312,0,0],"0.267":[-0.29858,0,0],"0.3":[-0.25,0,0],"0.333":[-0.19804,0,0],"0.367":[-0.1434,0,0],"0.4":[-0.08682,0,0],"0.433":[-0.02907,0,0],"0.467":[0.02907,0,0],"0.5":[0.08682,0,0],"0.533":[0.1434,0,0],"0.567":[0.19804,0,0],"0.6":[0.25,0,0],"0.633":[0.29858,0,0],"0.667":[0.34312,0,0],"0.7":[0.38302,0,0],"0.733":[0.41774,0,0],"0.767":[0.44682,0,0],"0.8":[0.46985,0,0],"0.833":[0.48652,0,0],"0.867":[0.49662,0,0],"0.9":[0.5,0,0],"0.933":[0.49662,0,0],"0.967":[0.48652,0,0],"1.033":[0.44682,0,0],"1.067":[0.41774,0,0],"1.1":[0.38302,0,0],"1.133":[0.34312,0,0],"1.167":[0.29858,0,0],"1.2":[0.25,0,0],"1.233":[0.19804,0,0],"1.267":[0.1434,0,0],"1.3":[0.08682,0,0],"1.333":[0.02907,0,0],"1.367":[-0.02907,0,0],"1.4":[-0.08682,0,0],"1.433":[-0.1434,0,0],"1.467":[-0.19804,0,0],"1.5":[-0.25,0,0],"1.533":[-0.29858,0,0],"1.567":[-0.34312,0,0],"1.6":[-0.38302,0,0],"1.633":[-0.41774,0,0],"1.667":[-0.44682,0,0],"1.7":[-0.46985,0,0],"1.733":[-0.48652,0,0],"1.767":[-0.49662,0,0],"1.8":[-0.5,0,0]}},"wing_3":{"rotation":{"0":[10,5,0],"1":[-9.39693,-4.69846,0],"0.033":[9.93238,4.96619,0],"0.067":[9.73045,4.86522,0],"0.1":[9.39693,4.69846,0],"0.133":[8.93633,4.46816,0],"0.167":[8.35488,4.17744,0],"0.2":[7.66044,3.83022,0],"0.233":[6.86242,3.43121,0],"0.267":[5.97159,2.98579,0],"0.3":[5,2.5,0],"0.333":[3.9608,1.9804,0],"0.367":[2.86803,1.43402,0],"0.4":[1.73648,0.86824,0],"0.433":[0.58145,0.29072,0],"0.467":[-0.58145,-0.29072,0],"0.5":[-1.73648,-0.86824,0],"0.533":[-2.86803,-1.43402,0],"0.567":[-3.9608,-1.9804,0],"0.6":[-5,-2.5,0],"0.633":[-5.97159,-2.98579,0],"0.667":[-6.86242,-3.43121,0],"0.7":[-7.66044,-3.83022,0],"0.733":[-8.35488,-4.17744,0],"0.767":[-8.93633,-4.46816,0],"0.8":[-9.39693,-4.69846,0],"0.833":[-9.73045,-4.86522,0],"0.867":[-9.93238,-4.96619,0],"0.9":[-10,-5,0],"0.933":[-9.93238,-4.96619,0],"0.967":[-9.73045,-4.86522,0],"1.033":[-8.93633,-4.46816,0],"1.067":[-8.35488,-4.17744,0],"1.1":[-7.66044,-3.83022,0],"1.133":[-6.86242,-3.43121,0],"1.167":[-5.97159,-2.98579,0],"1.2":[-5,-2.5,0],"1.233":[-3.9608,-1.9804,0],"1.267":[-2.86803,-1.43402,0],"1.3":[-1.73648,-0.86824,0],"1.333":[-0.58145,-0.29072,0],"1.367":[0.58145,0.29072,0],"1.4":[1.73648,0.86824,0],"1.433":[2.86803,1.43402,0],"1.467":[3.9608,1.9804,0],"1.5":[5,2.5,0],"1.533":[5.97159,2.98579,0],"1.567":[6.86242,3.43121,0],"1.6":[7.66044,3.83022,0],"1.633":[8.35488,4.17744,0],"1.667":[8.93633,4.46816,0],"1.7":[9.39693,4.69846,0],"1.733":[9.73045,4.86522,0],"1.767":[9.93238,4.96619,0],"1.8":[10,5,0]}},"dragonwings":{"scale":{"0":[1,1,1],"1":[1,1,1],"0.033":[1,1,1],"0.067":[1,1,1],"0.1":[1,1,1],"0.133":[1,1,1],"0.167":[1,1,1],"0.2":[1,1,1],"0.233":[1,1,1],"0.267":[1,1,1],"0.3":[1,1,1],"0.333":[1,1,1],"0.367":[1,1,1],"0.4":[1,1,1],"0.433":[1,1,1],"0.467":[1,1,1],"0.5":[1,1,1],"0.533":[1,1,1],"0.567":[1,1,1],"0.6":[1,1,1],"0.633":[1,1,1],"0.667":[1,1,1],"0.7":[1,1,1],"0.733":[1,1,1],"0.767":[1,1,1],"0.8":[1,1,1],"0.833":[1,1,1],"0.867":[1,1,1],"0.9":[1,1,1],"0.933":[1,1,1],"0.967":[1,1,1],"1.033":[1,1,1],"1.067":[1,1,1],"1.1":[1,1,1],"1.133":[1,1,1],"1.167":[1,1,1],"1.2":[1,1,1],"1.233":[1,1,1],"1.267":[1,1,1],"1.3":[1,1,1],"1.333":[1,1,1],"1.367":[1,1,1],"1.4":[1,1,1],"1.433":[1,1,1],"1.467":[1,1,1],"1.5":[1,1,1],"1.533":[1,1,1],"1.567":[1,1,1],"1.6":[1,1,1],"1.633":[1,1,1],"1.667":[1,1,1],"1.7":[1,1,1],"1.733":[1,1,1],"1.767":[1,1,1],"1.8":[1,1,1]}}}}} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/blue_dragon.geo.json b/src/main/resources/assets/evolution/cosmetic/wings/blue_dragon.geo.json new file mode 100644 index 0000000..082437c --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/blue_dragon.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.dragon_wings","texture_width":64,"texture_height":64,"visible_bounds_width":4,"visible_bounds_height":3.5,"visible_bounds_offset":[0,1.25,0]},"bones":[{"name":"dragonwings","pivot":[0,21,1.5]},{"name":"armorBody","parent":"dragonwings","pivot":[0,24,0]},{"name":"armorBodyt","parent":"armorBody","pivot":[0,24,0]},{"name":"black_dragon_wings","parent":"armorBodyt","pivot":[2,21.84835,3.61612]},{"name":"wing_left","parent":"black_dragon_wings","pivot":[3.5,22.84835,1.61612],"rotation":[-22.5,22.5,0],"cubes":[{"origin":[5.55062,24.08113,-4.03918],"size":[2,1.7,6],"pivot":[7.05062,26.73722,2.78656],"rotation":[56.52421,42.85882,28.8368],"uv":{"north":{"uv":[6.032,35.032],"uv_size":[1.936,1.468]},"east":{"uv":[23.032,14.032],"uv_size":[5.936,1.468]},"south":{"uv":[21.032,35.032],"uv_size":[1.936,1.468]},"west":{"uv":[23.032,16.032],"uv_size":[5.936,1.468]},"up":{"uv":[18.032,3.032],"uv_size":[1.936,5.936]},"down":{"uv":[18.032,14.968],"uv_size":[1.936,-5.936]}}},{"origin":[4.73437,18.98395,0.4599],"size":[0,7.6,5.8],"pivot":[4.73437,23.03395,3.2599],"rotation":[21.52421,42.85882,28.8368],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,7.468]},"east":{"uv":[0.032,14.032],"uv_size":[5.936,7.468]},"south":{"uv":[0.032,0.032],"uv_size":[0,7.468]},"west":{"uv":[6.032,14.032],"uv_size":[5.936,7.468]},"up":{"uv":[0.032,0.032],"uv_size":[0,5.936]},"down":{"uv":[0.032,5.968],"uv_size":[0,-5.936]}}},{"origin":[2.42888,18.77415,0.1786],"size":[2,4.7,2.25],"pivot":[3.15388,21.47415,2.5786],"rotation":[46.19362,50.24171,38.68043],"uv":{"north":{"uv":[14.032,24.032],"uv_size":[1.936,4.468]},"east":{"uv":[20.032,9.032],"uv_size":[2.468,4.468]},"south":{"uv":[16.032,24.032],"uv_size":[1.936,4.468]},"west":{"uv":[20.032,14.032],"uv_size":[2.468,4.468]},"up":{"uv":[0.032,33.032],"uv_size":[1.936,2.468]},"down":{"uv":[12.032,35.5],"uv_size":[1.936,-2.468]}}},{"origin":[3.8148,21.90239,2.67748],"size":[1.95,1.2,6.6],"pivot":[5.2898,24.34469,2.36787],"rotation":[101.52421,42.85882,28.8368],"uv":{"north":{"uv":[16.032,13.032],"uv_size":[1.936,0.936]},"east":{"uv":[29.032,0.032],"uv_size":[6.468,0.936]},"south":{"uv":[20.032,32.032],"uv_size":[1.936,0.936]},"west":{"uv":[29.032,1.032],"uv_size":[6.468,0.936]},"up":{"uv":[16.032,3.032],"uv_size":[1.936,6.468]},"down":{"uv":[12.032,23.5],"uv_size":[1.936,-6.468]}}}]},{"name":"wing_2","parent":"wing_left","pivot":[8.93888,31.47609,3.07638],"cubes":[{"origin":[6.82891,29.05989,-0.46982],"size":[2.05,2.375,2.625],"pivot":[7.85391,31.20989,1.95518],"rotation":[159.02421,42.85882,28.8368],"uv":{"north":{"uv":[16.032,10.032],"uv_size":[1.936,2.468]},"east":{"uv":[14.032,29.032],"uv_size":[2.468,2.468]},"south":{"uv":[20.032,29.032],"uv_size":[1.936,2.468]},"west":{"uv":[29.032,14.032],"uv_size":[2.468,2.468]},"up":{"uv":[10.032,32.032],"uv_size":[1.936,2.468]},"down":{"uv":[32.032,18.5],"uv_size":[1.936,-2.468]}}},{"origin":[9.1206,29.31009,-0.31489],"size":[1.3,1.7,6],"pivot":[9.7206,30.31009,4.18511],"rotation":[169.02421,42.85882,28.8368],"uv":{"north":{"uv":[36.032,4.032],"uv_size":[1.468,1.468]},"east":{"uv":[23.032,18.032],"uv_size":[5.936,1.468]},"south":{"uv":[36.032,10.032],"uv_size":[1.468,1.468]},"west":{"uv":[23.032,20.032],"uv_size":[5.936,1.468]},"up":{"uv":[18.032,21.032],"uv_size":[1.468,5.936]},"down":{"uv":[23.032,27.968],"uv_size":[1.468,-5.936]}}},{"origin":[8.98272,28.37645,-2.12877],"size":[0.8,1,9],"pivot":[9.38272,28.37645,4.87123],"rotation":[129.0242,42.8588,28.8368],"uv":{"north":{"uv":[37.032,16.032],"uv_size":[0.936,0.936]},"east":{"uv":[3.032,25.032],"uv_size":[8.936,0.936]},"south":{"uv":[37.032,17.032],"uv_size":[0.936,0.936]},"west":{"uv":[25.032,22.032],"uv_size":[8.936,0.936]},"up":{"uv":[12.032,24.032],"uv_size":[0.936,8.936]},"down":{"uv":[13.032,32.968],"uv_size":[0.936,-8.936]}}},{"origin":[8.16539,19.51405,6.17127],"size":[0.8,1,4.55],"pivot":[8.56539,20.01405,8.44627],"rotation":[114.0242,42.8588,28.8368],"uv":{"north":{"uv":[14.032,37.032],"uv_size":[0.936,0.936]},"east":{"uv":[31.032,28.032],"uv_size":[4.468,0.936]},"south":{"uv":[15.032,37.032],"uv_size":[0.936,0.936]},"west":{"uv":[33.032,21.032],"uv_size":[4.468,0.936]},"up":{"uv":[8.032,28.032],"uv_size":[0.936,4.468]},"down":{"uv":[8.032,37.5],"uv_size":[0.936,-4.468]}}},{"origin":[10.87952,18.71999,7.60686],"size":[0.9,1.275,7.1],"pivot":[11.27952,19.63249,11.20686],"rotation":[106.5242,42.8588,28.8368],"uv":{"north":{"uv":[31.032,36.032],"uv_size":[0.936,1.468]},"east":{"uv":[22.032,0.032],"uv_size":[6.936,1.468]},"south":{"uv":[32.032,36.032],"uv_size":[0.936,1.468]},"west":{"uv":[22.032,2.032],"uv_size":[6.936,1.468]},"up":{"uv":[4.032,28.032],"uv_size":[0.936,6.936]},"down":{"uv":[5.032,34.968],"uv_size":[0.936,-6.936]}}},{"origin":[11.22952,19.79499,5.70686],"size":[0,7.2,16],"pivot":[11.27952,19.63249,11.20686],"rotation":[106.5242,42.8588,28.8368],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,6.936]},"east":{"uv":[0.032,0.032],"uv_size":[15.936,6.936]},"south":{"uv":[0.032,0.032],"uv_size":[0,6.936]},"west":{"uv":[0.032,7.032],"uv_size":[15.936,6.936]},"up":{"uv":[0.032,0.032],"uv_size":[0,15.936]},"down":{"uv":[0.032,15.968],"uv_size":[0,-15.936]}}},{"origin":[8.96727,14.18835,10.349],"size":[0.8,1.025,2.3],"pivot":[9.31727,15.65085,11.424],"rotation":[91.5242,42.8588,28.8368],"uv":{"north":{"uv":[20.032,37.032],"uv_size":[0.936,0.936]},"east":{"uv":[35.032,27.032],"uv_size":[2.468,0.936]},"south":{"uv":[21.032,37.032],"uv_size":[0.936,0.936]},"west":{"uv":[35.032,31.032],"uv_size":[2.468,0.936]},"up":{"uv":[35.032,32.032],"uv_size":[0.936,2.468]},"down":{"uv":[35.032,37.5],"uv_size":[0.936,-2.468]}}},{"origin":[8.40968,12.20329,7.56347],"size":[0,2.45,5.45],"pivot":[8.40968,13.64079,11.53847],"rotation":[76.5242,42.8588,28.8368],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,2.468]},"east":{"uv":[12.032,14.032],"uv_size":[5.468,2.468]},"south":{"uv":[0.032,0.032],"uv_size":[0,2.468]},"west":{"uv":[16.032,0.032],"uv_size":[5.468,2.468]},"up":{"uv":[0.032,0.032],"uv_size":[0,5.468]},"down":{"uv":[0.032,5.5],"uv_size":[0,-5.468]}}},{"origin":[6.66556,14.48213,7.36322],"size":[0,1.825,2.4],"pivot":[6.36556,15.84463,8.46322],"rotation":[69.79306,42.19627,26.276],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,1.936]},"east":{"uv":[33.032,19.032],"uv_size":[2.468,1.936]},"south":{"uv":[0.032,0.032],"uv_size":[0,1.936]},"west":{"uv":[20.032,33.032],"uv_size":[2.468,1.936]},"up":{"uv":[0.032,0.032],"uv_size":[0,2.468]},"down":{"uv":[0.032,2.5],"uv_size":[0,-2.468]}}},{"origin":[6.01556,14.48213,7.36322],"size":[0,1.825,2.4],"pivot":[6.36556,15.84463,8.46322],"rotation":[71.5242,42.8588,28.8368],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,1.936]},"east":{"uv":[33.032,19.032],"uv_size":[2.468,1.936]},"south":{"uv":[0.032,0.032],"uv_size":[0,1.936]},"west":{"uv":[20.032,33.032],"uv_size":[2.468,1.936]},"up":{"uv":[0.032,0.032],"uv_size":[0,2.468]},"down":{"uv":[0.032,2.5],"uv_size":[0,-2.468]}}},{"origin":[4.62244,17.82851,4.78843],"size":[0,1.675,2.55],"pivot":[4.62244,18.66601,6.06343],"rotation":[71.22286,43.80643,28.3977],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,1.468]},"east":{"uv":[9.032,35.032],"uv_size":[2.468,1.468]},"south":{"uv":[0.032,0.032],"uv_size":[0,1.468]},"west":{"uv":[18.032,35.032],"uv_size":[2.468,1.468]},"up":{"uv":[0.032,0.032],"uv_size":[0,2.468]},"down":{"uv":[0.032,2.5],"uv_size":[0,-2.468]}}},{"origin":[4.99877,17.60754,4.36331],"size":[0,1.675,2.55],"pivot":[5.02377,18.44504,5.63831],"rotation":[71.85119,45.07165,29.28259],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,1.468]},"east":{"uv":[9.032,35.032],"uv_size":[2.468,1.468]},"south":{"uv":[0.032,0.032],"uv_size":[0,1.468]},"west":{"uv":[18.032,35.032],"uv_size":[2.468,1.468]},"up":{"uv":[0.032,0.032],"uv_size":[0,2.468]},"down":{"uv":[0.032,2.5],"uv_size":[0,-2.468]}}},{"origin":[7.42854,16.82429,8.46676],"size":[0.6,0.725,1.9],"pivot":[7.72854,17.01179,9.21676],"rotation":[91.5242,42.8588,28.8368],"uv":{"north":{"uv":[38.032,19.032],"uv_size":[0.468,0.468]},"east":{"uv":[37.032,22.032],"uv_size":[1.936,0.468]},"south":{"uv":[20.032,38.032],"uv_size":[0.468,0.468]},"west":{"uv":[37.032,25.032],"uv_size":[1.936,0.468]},"up":{"uv":[22.032,37.032],"uv_size":[0.468,1.936]},"down":{"uv":[26.032,38.968],"uv_size":[0.468,-1.936]}}},{"origin":[5.76414,19.91317,5.15039],"size":[0.6,0.8,1.8],"pivot":[5.83914,20.42567,6.15039],"rotation":[84.61027,45.33128,30.19424],"uv":{"north":{"uv":[38.032,16.032],"uv_size":[0.468,0.936]},"east":{"uv":[36.032,12.032],"uv_size":[1.936,0.936]},"south":{"uv":[38.032,17.032],"uv_size":[0.468,0.936]},"west":{"uv":[36.032,19.032],"uv_size":[1.936,0.936]},"up":{"uv":[27.032,37.032],"uv_size":[0.468,1.936]},"down":{"uv":[37.032,29.968],"uv_size":[0.468,-1.936]}}},{"origin":[11.16334,26.32511,5.07069],"size":[1.1,1.5,4],"pivot":[11.66334,27.32511,7.57069],"rotation":[124.0242,42.8588,28.8368],"uv":{"north":{"uv":[29.032,36.032],"uv_size":[0.936,1.468]},"east":{"uv":[30.032,10.032],"uv_size":[3.936,1.468]},"south":{"uv":[30.032,36.032],"uv_size":[0.936,1.468]},"west":{"uv":[30.032,12.032],"uv_size":[3.936,1.468]},"up":{"uv":[25.032,34.032],"uv_size":[0.936,3.936]},"down":{"uv":[34.032,32.968],"uv_size":[0.936,-3.936]}}},{"origin":[8.545,30.4519,3.56734],"size":[0.55,1.975,2.375],"pivot":[8.82,31.0894,2.92984],"rotation":[134.02421,42.85882,28.8368],"uv":{"north":{"uv":[37.032,32.032],"uv_size":[0.468,1.936]},"east":{"uv":[23.032,32.032],"uv_size":[2.468,1.936]},"south":{"uv":[34.032,37.032],"uv_size":[0.468,1.936]},"west":{"uv":[33.032,8.032],"uv_size":[2.468,1.936]},"up":{"uv":[37.032,7.032],"uv_size":[0.468,2.468]},"down":{"uv":[9.032,39.5],"uv_size":[0.468,-2.468]}}},{"origin":[8.0415,32.77388,-0.26622],"size":[0,1.575,3.425],"pivot":[8.0415,33.66138,0.82128],"rotation":[171.52421,42.85882,28.8368],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,1.468]},"east":{"uv":[14.032,32.032],"uv_size":[3.468,1.468]},"south":{"uv":[0.032,0.032],"uv_size":[0,1.468]},"west":{"uv":[32.032,14.032],"uv_size":[3.468,1.468]},"up":{"uv":[0.032,0.032],"uv_size":[0,3.468]},"down":{"uv":[0.032,3.5],"uv_size":[0,-3.468]}}},{"origin":[13.16838,30.46021,5.43661],"size":[0,2.85,3.75],"pivot":[13.20733,30.99164,7.12249],"rotation":[141.52421,42.85882,28.8368],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,2.936]},"east":{"uv":[3.032,22.032],"uv_size":[3.468,2.936]},"south":{"uv":[0.032,0.032],"uv_size":[0,2.936]},"west":{"uv":[22.032,4.032],"uv_size":[3.468,2.936]},"up":{"uv":[0.032,0.032],"uv_size":[0,3.468]},"down":{"uv":[0.032,3.5],"uv_size":[0,-3.468]}}},{"origin":[12.83376,22.26368,7.47048],"size":[0,3.05,3.4],"pivot":[13.54284,24.82218,9.46987],"rotation":[86.52421,42.85882,28.8368],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,2.936]},"east":{"uv":[7.032,22.032],"uv_size":[3.468,2.936]},"south":{"uv":[0.032,0.032],"uv_size":[0,2.936]},"west":{"uv":[23.032,7.032],"uv_size":[3.468,2.936]},"up":{"uv":[0.032,0.032],"uv_size":[0,3.468]},"down":{"uv":[0.032,3.5],"uv_size":[0,-3.468]}}},{"origin":[7.73134,15.64871,4.7884],"size":[0.95,1.375,3.825],"pivot":[8.15634,21.49871,7.2884],"rotation":[146.5242,42.8588,28.8368],"uv":{"north":{"uv":[22.032,7.032],"uv_size":[0.936,1.468]},"east":{"uv":[29.032,20.032],"uv_size":[3.936,1.468]},"south":{"uv":[28.032,36.032],"uv_size":[0.936,1.468]},"west":{"uv":[26.032,29.032],"uv_size":[3.936,1.468]},"up":{"uv":[23.032,34.032],"uv_size":[0.936,3.936]},"down":{"uv":[24.032,37.968],"uv_size":[0.936,-3.936]}}},{"origin":[7.61499,26.44111,0.261],"size":[0.8,1.1,7.5],"pivot":[8.01499,26.94111,4.461],"rotation":[116.5242,42.8588,28.8368],"uv":{"north":{"uv":[32.032,19.032],"uv_size":[0.936,0.936]},"east":{"uv":[27.032,25.032],"uv_size":[7.468,0.936]},"south":{"uv":[36.032,28.032],"uv_size":[0.936,0.936]},"west":{"uv":[27.032,26.032],"uv_size":[7.468,0.936]},"up":{"uv":[2.032,27.032],"uv_size":[0.936,7.468]},"down":{"uv":[18.032,34.5],"uv_size":[0.936,-7.468]}}},{"origin":[6.46943,21.43527,4.68051],"size":[0.8,1.125,2.55],"pivot":[6.86943,21.98527,5.95551],"rotation":[101.5242,42.8588,28.8368],"uv":{"north":{"uv":[18.032,37.032],"uv_size":[0.936,0.936]},"east":{"uv":[34.032,22.032],"uv_size":[2.468,0.936]},"south":{"uv":[19.032,37.032],"uv_size":[0.936,0.936]},"west":{"uv":[35.032,6.032],"uv_size":[2.468,0.936]},"up":{"uv":[11.032,22.032],"uv_size":[0.936,2.468]},"down":{"uv":[17.032,31.5],"uv_size":[0.936,-2.468]}}}]},{"name":"wing_right","parent":"black_dragon_wings","pivot":[-3.5,22.84835,1.61612],"rotation":[-22.5,-22.5,0],"cubes":[{"origin":[-7.55062,24.08113,-4.03918],"size":[2,1.7,6],"pivot":[-7.05062,26.73722,2.78656],"rotation":[56.52421,-42.85882,-28.8368],"uv":{"north":{"uv":[35.032,25.032],"uv_size":[1.936,1.468]},"east":{"uv":[3.032,26.032],"uv_size":[5.936,1.468]},"south":{"uv":[35.032,29.032],"uv_size":[1.936,1.468]},"west":{"uv":[26.032,4.032],"uv_size":[5.936,1.468]},"up":{"uv":[18.032,15.032],"uv_size":[1.936,5.936]},"down":{"uv":[20.032,8.968],"uv_size":[1.936,-5.936]}}},{"origin":[-4.73437,18.98395,0.4599],"size":[0,7.6,5.8],"pivot":[-4.73437,23.03395,3.2599],"rotation":[21.52421,-42.85882,-28.8368],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,7.468]},"east":{"uv":[0.032,14.032],"uv_size":[5.936,7.468]},"south":{"uv":[0.032,0.032],"uv_size":[0,7.468]},"west":{"uv":[6.032,14.032],"uv_size":[5.936,7.468]},"up":{"uv":[0.032,0.032],"uv_size":[0,5.936]},"down":{"uv":[0.032,5.968],"uv_size":[0,-5.936]}}},{"origin":[-4.42888,18.77415,0.1786],"size":[2,4.7,2.25],"pivot":[-3.15388,21.47415,2.5786],"rotation":[46.19362,-50.24171,-38.68043],"uv":{"north":{"uv":[20.032,24.032],"uv_size":[1.936,4.468]},"east":{"uv":[20.032,19.032],"uv_size":[2.468,4.468]},"south":{"uv":[25.032,23.032],"uv_size":[1.936,4.468]},"west":{"uv":[0.032,22.032],"uv_size":[2.468,4.468]},"up":{"uv":[26.032,33.032],"uv_size":[1.936,2.468]},"down":{"uv":[28.032,35.5],"uv_size":[1.936,-2.468]}}},{"origin":[-5.7648,21.90239,2.67748],"size":[1.95,1.2,6.6],"pivot":[-5.2898,24.34469,2.36787],"rotation":[101.52421,-42.85882,-28.8368],"uv":{"north":{"uv":[36.032,20.032],"uv_size":[1.936,0.936]},"east":{"uv":[29.032,2.032],"uv_size":[6.468,0.936]},"south":{"uv":[36.032,23.032],"uv_size":[1.936,0.936]},"west":{"uv":[29.032,3.032],"uv_size":[6.468,0.936]},"up":{"uv":[14.032,17.032],"uv_size":[1.936,6.468]},"down":{"uv":[16.032,23.5],"uv_size":[1.936,-6.468]}}}]},{"name":"wing_3","parent":"wing_right","pivot":[-8.93888,31.47609,3.07638],"cubes":[{"origin":[-10.4206,29.31009,-0.31489],"size":[1.3,1.7,6],"pivot":[-9.7206,30.31009,4.18511],"rotation":[169.02421,-42.85882,-28.8368],"uv":{"north":{"uv":[12.032,36.032],"uv_size":[1.468,1.468]},"east":{"uv":[27.032,8.032],"uv_size":[5.936,1.468]},"south":{"uv":[36.032,14.032],"uv_size":[1.468,1.468]},"west":{"uv":[27.032,23.032],"uv_size":[5.936,1.468]},"up":{"uv":[10.032,26.032],"uv_size":[1.468,5.936]},"down":{"uv":[0.032,32.968],"uv_size":[1.468,-5.936]}}},{"origin":[-9.78272,28.37645,-2.12877],"size":[0.8,1,9],"pivot":[-9.38272,28.37645,4.87123],"rotation":[129.0242,-42.8588,-28.8368],"uv":{"north":{"uv":[15.032,38.032],"uv_size":[0.936,0.936]},"east":{"uv":[26.032,6.032],"uv_size":[8.936,0.936]},"south":{"uv":[38.032,15.032],"uv_size":[0.936,0.936]},"west":{"uv":[27.032,7.032],"uv_size":[8.936,0.936]},"up":{"uv":[22.032,24.032],"uv_size":[0.936,8.936]},"down":{"uv":[9.032,34.968],"uv_size":[0.936,-8.936]}}},{"origin":[-8.96539,19.51405,6.17127],"size":[0.8,1,4.55],"pivot":[-8.56539,20.01405,8.44627],"rotation":[114.0242,-42.8588,-28.8368],"uv":{"north":{"uv":[14.032,38.032],"uv_size":[0.936,0.936]},"east":{"uv":[34.032,13.032],"uv_size":[4.468,0.936]},"south":{"uv":[38.032,14.032],"uv_size":[0.936,0.936]},"west":{"uv":[34.032,18.032],"uv_size":[4.468,0.936]},"up":{"uv":[16.032,34.032],"uv_size":[0.936,4.468]},"down":{"uv":[17.032,38.5],"uv_size":[0.936,-4.468]}}},{"origin":[-11.77952,18.71999,7.60686],"size":[0.9,1.275,7.1],"pivot":[-11.27952,19.63249,11.20686],"rotation":[106.5242,-42.8588,-28.8368],"uv":{"north":{"uv":[6.032,37.032],"uv_size":[0.936,1.468]},"east":{"uv":[23.032,10.032],"uv_size":[6.936,1.468]},"south":{"uv":[7.032,37.032],"uv_size":[0.936,1.468]},"west":{"uv":[23.032,12.032],"uv_size":[6.936,1.468]},"up":{"uv":[6.032,28.032],"uv_size":[0.936,6.936]},"down":{"uv":[7.032,34.968],"uv_size":[0.936,-6.936]}}},{"origin":[-11.22952,19.79499,5.70686],"size":[0,7.2,16],"pivot":[-11.27952,19.63249,11.20686],"rotation":[106.5242,-42.8588,-28.8368],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,6.936]},"east":{"uv":[0.032,0.032],"uv_size":[15.936,6.936]},"south":{"uv":[0.032,0.032],"uv_size":[0,6.936]},"west":{"uv":[0.032,7.032],"uv_size":[15.936,6.936]},"up":{"uv":[0.032,0.032],"uv_size":[0,15.936]},"down":{"uv":[0.032,15.968],"uv_size":[0,-15.936]}}},{"origin":[-9.76727,14.18835,10.349],"size":[0.8,1.025,2.3],"pivot":[-9.31727,15.65085,11.424],"rotation":[91.5242,-42.8588,-28.8368],"uv":{"north":{"uv":[38.032,12.032],"uv_size":[0.936,0.936]},"east":{"uv":[36.032,2.032],"uv_size":[2.468,0.936]},"south":{"uv":[13.032,38.032],"uv_size":[0.936,0.936]},"west":{"uv":[36.032,3.032],"uv_size":[2.468,0.936]},"up":{"uv":[3.032,36.032],"uv_size":[0.936,2.468]},"down":{"uv":[36.032,9.5],"uv_size":[0.936,-2.468]}}},{"origin":[-8.40968,12.20329,7.56347],"size":[0,2.45,5.45],"pivot":[-8.40968,13.64079,11.53847],"rotation":[76.5242,-42.8588,-28.8368],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,2.468]},"east":{"uv":[12.032,14.032],"uv_size":[5.468,2.468]},"south":{"uv":[0.032,0.032],"uv_size":[0,2.468]},"west":{"uv":[16.032,0.032],"uv_size":[5.468,2.468]},"up":{"uv":[0.032,0.032],"uv_size":[0,5.468]},"down":{"uv":[0.032,5.5],"uv_size":[0,-5.468]}}},{"origin":[-6.66556,14.48213,7.36322],"size":[0,1.825,2.4],"pivot":[-6.36556,15.84463,8.46322],"rotation":[69.79306,-42.19627,-26.276],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,1.936]},"east":{"uv":[33.032,19.032],"uv_size":[2.468,1.936]},"south":{"uv":[0.032,0.032],"uv_size":[0,1.936]},"west":{"uv":[20.032,33.032],"uv_size":[2.468,1.936]},"up":{"uv":[0.032,0.032],"uv_size":[0,2.468]},"down":{"uv":[0.032,2.5],"uv_size":[0,-2.468]}}},{"origin":[-6.01556,14.48213,7.36322],"size":[0,1.825,2.4],"pivot":[-6.36556,15.84463,8.46322],"rotation":[71.5242,-42.8588,-28.8368],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,1.936]},"east":{"uv":[33.032,19.032],"uv_size":[2.468,1.936]},"south":{"uv":[0.032,0.032],"uv_size":[0,1.936]},"west":{"uv":[20.032,33.032],"uv_size":[2.468,1.936]},"up":{"uv":[0.032,0.032],"uv_size":[0,2.468]},"down":{"uv":[0.032,2.5],"uv_size":[0,-2.468]}}},{"origin":[-4.62244,17.82851,4.78843],"size":[0,1.675,2.55],"pivot":[-4.62244,18.66601,6.06343],"rotation":[71.22286,-43.80643,-28.3977],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,1.468]},"east":{"uv":[9.032,35.032],"uv_size":[2.468,1.468]},"south":{"uv":[0.032,0.032],"uv_size":[0,1.468]},"west":{"uv":[18.032,35.032],"uv_size":[2.468,1.468]},"up":{"uv":[0.032,0.032],"uv_size":[0,2.468]},"down":{"uv":[0.032,2.5],"uv_size":[0,-2.468]}}},{"origin":[-4.99877,17.60754,4.36331],"size":[0,1.675,2.55],"pivot":[-5.02377,18.44504,5.63831],"rotation":[71.85119,-45.07165,-29.28259],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,1.468]},"east":{"uv":[9.032,35.032],"uv_size":[2.468,1.468]},"south":{"uv":[0.032,0.032],"uv_size":[0,1.468]},"west":{"uv":[18.032,35.032],"uv_size":[2.468,1.468]},"up":{"uv":[0.032,0.032],"uv_size":[0,2.468]},"down":{"uv":[0.032,2.5],"uv_size":[0,-2.468]}}},{"origin":[-8.02854,16.82429,8.46676],"size":[0.6,0.725,1.9],"pivot":[-7.72854,17.01179,9.21676],"rotation":[91.5242,-42.8588,-28.8368],"uv":{"north":{"uv":[38.032,20.032],"uv_size":[0.468,0.468]},"east":{"uv":[38.032,8.032],"uv_size":[1.936,0.468]},"south":{"uv":[21.032,38.032],"uv_size":[0.468,0.468]},"west":{"uv":[38.032,9.032],"uv_size":[1.936,0.468]},"up":{"uv":[38.032,10.032],"uv_size":[0.468,1.936]},"down":{"uv":[12.032,39.968],"uv_size":[0.468,-1.936]}}},{"origin":[-6.36414,19.91317,5.15039],"size":[0.6,0.8,1.8],"pivot":[-5.83914,20.42567,6.15039],"rotation":[84.61027,-45.33128,-30.19424],"uv":{"north":{"uv":[18.032,38.032],"uv_size":[0.468,0.936]},"east":{"uv":[36.032,24.032],"uv_size":[1.936,0.936]},"south":{"uv":[19.032,38.032],"uv_size":[0.468,0.936]},"west":{"uv":[26.032,36.032],"uv_size":[1.936,0.936]},"up":{"uv":[38.032,6.032],"uv_size":[0.468,1.936]},"down":{"uv":[8.032,39.968],"uv_size":[0.468,-1.936]}}},{"origin":[-12.26334,26.32511,5.07069],"size":[1.1,1.5,4],"pivot":[-11.66334,27.32511,7.57069],"rotation":[124.0242,-42.8588,-28.8368],"uv":{"north":{"uv":[36.032,34.032],"uv_size":[0.936,1.468]},"east":{"uv":[30.032,31.032],"uv_size":[3.936,1.468]},"south":{"uv":[36.032,36.032],"uv_size":[0.936,1.468]},"west":{"uv":[32.032,4.032],"uv_size":[3.936,1.468]},"up":{"uv":[4.032,35.032],"uv_size":[0.936,3.936]},"down":{"uv":[5.032,38.968],"uv_size":[0.936,-3.936]}}},{"origin":[-9.095,30.4519,3.56734],"size":[0.55,1.975,2.375],"pivot":[-8.82,31.0894,2.92984],"rotation":[134.02421,-42.85882,-28.8368],"uv":{"north":{"uv":[37.032,36.032],"uv_size":[0.468,1.936]},"east":{"uv":[33.032,23.032],"uv_size":[2.468,1.936]},"south":{"uv":[38.032,4.032],"uv_size":[0.468,1.936]},"west":{"uv":[34.032,16.032],"uv_size":[2.468,1.936]},"up":{"uv":[10.032,37.032],"uv_size":[0.468,2.468]},"down":{"uv":[11.032,39.5],"uv_size":[0.468,-2.468]}}},{"origin":[-8.0415,32.77388,-0.26622],"size":[0,1.575,3.425],"pivot":[-8.0415,33.66138,0.82128],"rotation":[171.52421,-42.85882,-28.8368],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,1.468]},"east":{"uv":[14.032,32.032],"uv_size":[3.468,1.468]},"south":{"uv":[0.032,0.032],"uv_size":[0,1.468]},"west":{"uv":[32.032,14.032],"uv_size":[3.468,1.468]},"up":{"uv":[0.032,0.032],"uv_size":[0,3.468]},"down":{"uv":[0.032,3.5],"uv_size":[0,-3.468]}}},{"origin":[-13.16838,30.46021,5.43661],"size":[0,2.85,3.75],"pivot":[-13.20733,30.99164,7.12249],"rotation":[141.52421,-42.85882,-28.8368],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,2.936]},"east":{"uv":[3.032,22.032],"uv_size":[3.468,2.936]},"south":{"uv":[0.032,0.032],"uv_size":[0,2.936]},"west":{"uv":[22.032,4.032],"uv_size":[3.468,2.936]},"up":{"uv":[0.032,0.032],"uv_size":[0,3.468]},"down":{"uv":[0.032,3.5],"uv_size":[0,-3.468]}}},{"origin":[-12.83376,22.26368,7.47048],"size":[0,3.05,3.4],"pivot":[-13.54284,24.82218,9.46987],"rotation":[86.52421,-42.85882,-28.8368],"uv":{"north":{"uv":[0.032,0.032],"uv_size":[0,2.936]},"east":{"uv":[7.032,22.032],"uv_size":[3.468,2.936]},"south":{"uv":[0.032,0.032],"uv_size":[0,2.936]},"west":{"uv":[23.032,7.032],"uv_size":[3.468,2.936]},"up":{"uv":[0.032,0.032],"uv_size":[0,3.468]},"down":{"uv":[0.032,3.5],"uv_size":[0,-3.468]}}},{"origin":[-8.68134,15.64871,4.7884],"size":[0.95,1.375,3.825],"pivot":[-8.15634,21.49871,7.2884],"rotation":[146.5242,-42.8588,-28.8368],"uv":{"north":{"uv":[36.032,32.032],"uv_size":[0.936,1.468]},"east":{"uv":[30.032,29.032],"uv_size":[3.936,1.468]},"south":{"uv":[33.032,36.032],"uv_size":[0.936,1.468]},"west":{"uv":[26.032,31.032],"uv_size":[3.936,1.468]},"up":{"uv":[34.032,33.032],"uv_size":[0.936,3.936]},"down":{"uv":[2.032,38.968],"uv_size":[0.936,-3.936]}}},{"origin":[-8.41499,26.44111,0.261],"size":[0.8,1.1,7.5],"pivot":[-8.01499,26.94111,4.461],"rotation":[116.5242,-42.8588,-28.8368],"uv":{"north":{"uv":[37.032,34.032],"uv_size":[0.936,0.936]},"east":{"uv":[27.032,27.032],"uv_size":[7.468,0.936]},"south":{"uv":[37.032,35.032],"uv_size":[0.936,0.936]},"west":{"uv":[23.032,28.032],"uv_size":[7.468,0.936]},"up":{"uv":[19.032,27.032],"uv_size":[0.936,7.468]},"down":{"uv":[3.032,35.5],"uv_size":[0.936,-7.468]}}},{"origin":[-7.26943,21.43527,4.68051],"size":[0.8,1.125,2.55],"pivot":[-6.86943,21.98527,5.95551],"rotation":[101.5242,-42.8588,-28.8368],"uv":{"north":{"uv":[37.032,26.032],"uv_size":[0.936,0.936]},"east":{"uv":[36.032,0.032],"uv_size":[2.468,0.936]},"south":{"uv":[37.032,30.032],"uv_size":[0.936,0.936]},"west":{"uv":[36.032,1.032],"uv_size":[2.468,0.936]},"up":{"uv":[0.032,36.032],"uv_size":[0.936,2.468]},"down":{"uv":[1.032,38.5],"uv_size":[0.936,-2.468]}}},{"origin":[-8.87891,29.05989,-0.46982],"size":[2.05,2.375,2.625],"pivot":[-7.85391,31.20989,1.95518],"rotation":[159.02421,-42.85882,-28.8368],"uv":{"north":{"uv":[30.032,33.032],"uv_size":[1.936,2.468]},"east":{"uv":[29.032,17.032],"uv_size":[2.468,2.468]},"south":{"uv":[32.032,33.032],"uv_size":[1.936,2.468]},"west":{"uv":[23.032,29.032],"uv_size":[2.468,2.468]},"up":{"uv":[34.032,10.032],"uv_size":[1.936,2.468]},"down":{"uv":[14.032,36.5],"uv_size":[1.936,-2.468]}}}]}]}]} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/dark.animation.json b/src/main/resources/assets/evolution/cosmetic/wings/dark.animation.json new file mode 100644 index 0000000..6a7a4d4 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/dark.animation.json @@ -0,0 +1 @@ +{"idle":{"loop":true,"animation_length":4,"bones":{"bone":{"rotation":{"0.0":[-0.0422,6.3507,-8.977],"2.0":[0,0,10],"4.0":[-0.0422,6.3507,-8.977]}},"bone2":{"rotation":{"0.0":[0,0,0],"1.4583":[0,0,20],"4.0":[0,0,0]}},"bone3":{"rotation":{"0.0":[0,0,0],"2.8333":[-30,0,7.5],"4.0":[0,0,0]}},"bone4":{"rotation":{"0.0":[-0.0422,-6.3507,8.977],"2.0":[0,0,-10],"4.0":[-0.0422,-6.3507,8.977]}},"bone5":{"rotation":{"0.0":[0,0,0],"1.4583":[0,0,-20],"4.0":[0,0,0]}},"bone6":{"rotation":{"0.0":[0,0,0],"2.8333":[-30,0,-7.5],"4.0":[0,0,0]}}}}} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/dark.geo.json b/src/main/resources/assets/evolution/cosmetic/wings/dark.geo.json new file mode 100644 index 0000000..77e199c --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/dark.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.pulse_darkwings","texture_width":32,"texture_height":32,"visible_bounds_width":2,"visible_bounds_height":1.5,"visible_bounds_offset":[0,0.25,0]},"bones":[{"name":"root","pivot":[0,20.93799,1.85292]},{"name":"left_wing","pivot":[1.43281,20.93799,1.85292],"parent":"root","cubes":[{"origin":[0.16077,18.3978,2.05181],"size":[3,5,2],"uv":{"north":{"uv":[21,6],"uv_size":[3,5]},"east":{"uv":[24,6],"uv_size":[2,5]},"south":{"uv":[26,6],"uv_size":[3,5]},"west":{"uv":[29,6],"uv_size":[2,5]},"up":{"uv":[0,12],"uv_size":[3,2]},"down":{"uv":[3,14],"uv_size":[3,-2]}}}]},{"name":"bone","pivot":[1.25225,21.44468,3.49517],"parent":"left_wing","cubes":[{"origin":[6.4552,17.80568,3.12339],"size":[2,5,2],"pivot":[6.53039,24.99262,6.79417],"rotation":[-21.14906,49.90115,21.07668],"uv":{"north":{"uv":[28,0],"uv_size":[2,5]},"east":{"uv":[30,0],"uv_size":[2,5]},"south":{"uv":[16,6],"uv_size":[2,5]},"west":{"uv":[32,0],"uv_size":[-2,5]},"up":{"uv":[6,12],"uv_size":[2,2]},"down":{"uv":[8,14],"uv_size":[2,-2]}}},{"origin":[7.4552,16.80568,5.12339],"size":[0,6,16],"inflate":0.01,"pivot":[6.53039,24.99262,6.79417],"rotation":[-21.14906,49.90115,21.07668],"uv":{"east":{"uv":[0,6],"uv_size":[16,6]},"west":{"uv":[16,6],"uv_size":[-16,6]}}}]},{"name":"bone2","pivot":[4.12752,24.7838,3.71557],"parent":"bone","cubes":[{"origin":[5.8236,22.38202,3.12339],"size":[2,5,2],"pivot":[6.53039,24.99262,6.79417],"rotation":[-35.11636,42.7439,1.88756],"uv":{"north":{"uv":[20,6],"uv_size":[-2,5]},"east":{"uv":[18,6],"uv_size":[2,5]},"south":{"uv":[20,6],"uv_size":[-2,5]},"west":{"uv":[18,6],"uv_size":[2,5]},"up":{"uv":[12,14],"uv_size":[-2,-2]},"down":{"uv":[14,14],"uv_size":[-2,-2]}}},{"origin":[6.8236,22.38202,5.12339],"size":[0,5,11],"inflate":0.01,"pivot":[6.53039,24.99262,6.79417],"rotation":[-35.11636,42.7439,1.88756],"uv":{"east":{"uv":[17,0],"uv_size":[11,5]},"west":{"uv":[28,0],"uv_size":[-11,5]}}}]},{"name":"bone3","pivot":[6.24238,28.65953,5.95846],"parent":"bone2","cubes":[{"origin":[6.3236,27.77385,4.41922],"size":[1,5,1],"pivot":[6.53039,24.99262,6.79417],"rotation":[-17.61636,42.7439,1.88756],"uv":{"north":{"uv":[21,6],"uv_size":[-1,5]},"east":{"uv":[20,6],"uv_size":[1,5]},"south":{"uv":[21,6],"uv_size":[-1,5]},"west":{"uv":[20,6],"uv_size":[1,5]},"up":{"uv":[18,6],"uv_size":[-1,-1]},"down":{"uv":[19,6],"uv_size":[-1,-1]}}},{"origin":[6.8236,26.77385,5.41922],"size":[0,6,17],"inflate":0.01,"pivot":[6.53039,24.99262,6.79417],"rotation":[-17.61636,42.7439,1.88756],"uv":{"east":{"uv":[0,0],"uv_size":[17,6]},"west":{"uv":[17,0],"uv_size":[-17,6]}}}]},{"name":"right_wing","pivot":[-1.43281,20.93799,1.85292],"parent":"root","cubes":[{"origin":[-3.16077,18.3978,2.05181],"size":[3,5,2],"uv":{"north":{"uv":[24,6],"uv_size":[-3,5]},"east":{"uv":[31,6],"uv_size":[-2,5]},"south":{"uv":[29,6],"uv_size":[-3,5]},"west":{"uv":[26,6],"uv_size":[-2,5]},"up":{"uv":[3,12],"uv_size":[-3,2]},"down":{"uv":[6,14],"uv_size":[-3,-2]}}}]},{"name":"bone4","pivot":[-1.25225,21.44468,3.49517],"parent":"right_wing","cubes":[{"origin":[-8.4552,17.80568,3.12339],"size":[2,5,2],"pivot":[-6.53039,24.99262,6.79417],"rotation":[-21.14906,-49.90115,-21.07668],"uv":{"north":{"uv":[30,0],"uv_size":[-2,5]},"east":{"uv":[30,0],"uv_size":[2,5]},"south":{"uv":[18,6],"uv_size":[-2,5]},"west":{"uv":[32,0],"uv_size":[-2,5]},"up":{"uv":[8,12],"uv_size":[-2,2]},"down":{"uv":[10,14],"uv_size":[-2,-2]}}},{"origin":[-7.4552,16.80568,5.12339],"size":[0,6,16],"inflate":0.01,"pivot":[-6.53039,24.99262,6.79417],"rotation":[-21.14906,-49.90115,-21.07668],"uv":{"east":{"uv":[0,6],"uv_size":[16,6]},"west":{"uv":[16,6],"uv_size":[-16,6]}}}]},{"name":"bone5","pivot":[-4.12752,24.7838,3.71557],"parent":"bone4","cubes":[{"origin":[-7.8236,22.38202,3.12339],"size":[2,5,2],"pivot":[-6.53039,24.99262,6.79417],"rotation":[-35.11636,-42.7439,-1.88756],"uv":{"north":{"uv":[18,6],"uv_size":[2,5]},"east":{"uv":[20,6],"uv_size":[-2,5]},"south":{"uv":[18,6],"uv_size":[2,5]},"west":{"uv":[20,6],"uv_size":[-2,5]},"up":{"uv":[10,14],"uv_size":[2,-2]},"down":{"uv":[12,14],"uv_size":[2,-2]}}},{"origin":[-6.8236,22.38202,5.12339],"size":[0,5,11],"inflate":0.01,"pivot":[-6.53039,24.99262,6.79417],"rotation":[-35.11636,-42.7439,-1.88756],"uv":{"east":{"uv":[17,0],"uv_size":[11,5]},"west":{"uv":[28,0],"uv_size":[-11,5]}}}]},{"name":"bone6","pivot":[-6.24238,28.65953,5.95846],"parent":"bone5","cubes":[{"origin":[-7.3236,27.77385,4.41922],"size":[1,5,1],"pivot":[-6.53039,24.99262,6.79417],"rotation":[-17.61636,-42.7439,-1.88756],"uv":{"north":{"uv":[20,6],"uv_size":[1,5]},"east":{"uv":[21,6],"uv_size":[-1,5]},"south":{"uv":[20,6],"uv_size":[1,5]},"west":{"uv":[21,6],"uv_size":[-1,5]},"up":{"uv":[17,6],"uv_size":[1,-1]},"down":{"uv":[18,6],"uv_size":[1,-1]}}},{"origin":[-6.8236,26.77385,5.41922],"size":[0,6,17],"inflate":0.01,"pivot":[-6.53039,24.99262,6.79417],"rotation":[-17.61636,-42.7439,-1.88756],"uv":{"east":{"uv":[0,0],"uv_size":[17,6]},"west":{"uv":[17,0],"uv_size":[-17,6]}}}]}]}]} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/demon.geo.json b/src/main/resources/assets/evolution/cosmetic/wings/demon.geo.json new file mode 100644 index 0000000..abf1e15 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/demon.geo.json @@ -0,0 +1,406 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.demon", + "texture_width": 258, + "texture_height": 387, + "visible_bounds_width": 6, + "visible_bounds_height": 4.5, + "visible_bounds_offset": [ + 0, + 1.75, + 0 + ] + }, + "bones": [ + { + "name": "Wing_Right2", + "pivot": [ + -1.5, + -6.85, + 3.4 + ] + }, + { + "name": "Wing3", + "parent": "Wing_Right2", + "pivot": [ + -2.11427, + -5.79637, + 3.2 + ], + "cubes": [ + { + "origin": [ + -10.9082, + -25.9403, + 3.2 + ], + "size": [ + 8.78787, + 39.48787, + 0 + ], + "uv": [ + 1, + 303 + ], + "mirror": true + }, + { + "origin": [ + -8.96473, + -6.72103, + 1.9 + ], + "size": [ + 9, + 2.4, + 2.4 + ], + "pivot": [ + -3.96473, + -5.52103, + 3.1 + ], + "rotation": [ + 0, + 0, + 16.5 + ], + "uv": [ + 49, + 258 + ], + "mirror": true + }, + { + "origin": [ + -13.1522, + -4.39156, + 1.9 + ], + "size": [ + 6.78787, + 2.48787, + 2.4 + ], + "pivot": [ + -8.25827, + -3.14763, + 3.1 + ], + "rotation": [ + 0, + 0, + 78.5 + ], + "uv": [ + 49, + 264 + ], + "mirror": true + }, + { + "origin": [ + -17.25406, + -1.39366, + 3 + ], + "size": [ + 8.78787, + 7.48787, + 0 + ], + "pivot": [ + -8.76012, + -3.24973, + 3.1 + ], + "rotation": [ + 0, + 0, + 47.5 + ], + "uv": [ + 17, + 303 + ], + "mirror": true + } + ] + }, + { + "name": "bone8", + "parent": "Wing3", + "pivot": [ + -11.00517, + 1.70363, + 3.2 + ], + "cubes": [ + { + "origin": [ + -17.9082, + -26.9403, + 3.2 + ], + "size": [ + 7, + 50.48787, + 0 + ], + "uv": [ + 35, + 258 + ], + "mirror": true + }, + { + "origin": [ + -18.67649, + 3.01597, + 2.2 + ], + "size": [ + 10.78787, + 1.78787, + 1.8 + ], + "pivot": [ + -12.78256, + 3.5599, + 3.1 + ], + "rotation": [ + 0, + 0, + 33.5 + ], + "uv": [ + 49, + 262 + ], + "mirror": true + } + ] + }, + { + "name": "bone9", + "parent": "bone8", + "pivot": [ + -17.90214, + -2.99637, + 3.2 + ], + "cubes": [ + { + "origin": [ + -34.39607, + -19.9403, + 3.2 + ], + "size": [ + 17.78787, + 45.48787, + 0 + ], + "uv": [ + 1, + 258 + ], + "mirror": true + } + ] + }, + { + "name": "Wing2", + "parent": "Wing_Right2", + "pivot": [ + 4.11427, + -5.79637, + 3.2 + ], + "cubes": [ + { + "origin": [ + 4.12034, + -25.9403, + 3.2 + ], + "size": [ + 8.78787, + 39.48787, + 0 + ], + "uv": [ + 1, + 303 + ] + }, + { + "origin": [ + 1.96473, + -6.72103, + 1.9 + ], + "size": [ + 9, + 2.4, + 2.4 + ], + "pivot": [ + 5.96473, + -5.52103, + 3.1 + ], + "rotation": [ + 0, + 0, + -16.5 + ], + "uv": [ + 49, + 258 + ] + }, + { + "origin": [ + 8.36434, + -4.39156, + 1.9 + ], + "size": [ + 6.78787, + 2.48787, + 2.4 + ], + "pivot": [ + 10.25827, + -3.14763, + 3.1 + ], + "rotation": [ + 0, + 0, + -78.5 + ], + "uv": [ + 49, + 264 + ] + }, + { + "origin": [ + 10.46619, + -1.39366, + 3 + ], + "size": [ + 8.78787, + 7.48787, + 0 + ], + "pivot": [ + 10.76012, + -3.24973, + 3.1 + ], + "rotation": [ + 0, + 0, + -47.5 + ], + "uv": [ + 17, + 303 + ] + } + ] + }, + { + "name": "bone2", + "parent": "Wing2", + "pivot": [ + 13.00517, + 1.70363, + 3.2 + ], + "cubes": [ + { + "origin": [ + 12.9082, + -26.9403, + 3.2 + ], + "size": [ + 7, + 50.48787, + 0 + ], + "uv": [ + 35, + 258 + ] + }, + { + "origin": [ + 9.88862, + 3.01597, + 2.2 + ], + "size": [ + 10.78787, + 1.78787, + 1.8 + ], + "pivot": [ + 14.78256, + 3.5599, + 3.1 + ], + "rotation": [ + 0, + 0, + -33.5 + ], + "uv": [ + 49, + 262 + ] + } + ] + }, + { + "name": "bone3", + "parent": "bone2", + "pivot": [ + 19.90214, + -2.99637, + 3.2 + ], + "cubes": [ + { + "origin": [ + 18.6082, + -19.9403, + 3.2 + ], + "size": [ + 17.78787, + 45.48787, + 0 + ], + "uv": [ + 1, + 258 + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/wings/dragon.geo.json b/src/main/resources/assets/evolution/cosmetic/wings/dragon.geo.json new file mode 100644 index 0000000..22e6f16 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/dragon.geo.json @@ -0,0 +1,371 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.dragon", + "texture_width": 32, + "texture_height": 32, + "visible_bounds_width": 6, + "visible_bounds_height": 4.5, + "visible_bounds_offset": [ + 0, + 1.75, + 0 + ] + }, + "bones": [ + { + "name": "cherub_wings", + "pivot": [ + 0, + -5.0, + 2.25 + ] + }, + { + "name": "left_wing", + "parent": "cherub_wings", + "pivot": [ + 1.5, + -6.25, + 3.75 + ], + "rotation": [ + 5, + -30, + 0 + ], + "cubes": [ + { + "origin": [ + 2.36603, + -11.45642, + 3.2519 + ], + "size": [ + 4, + 10, + 0 + ], + "uv": [ + 0, + 10 + ], + "mirror": true + }, + { + "origin": [ + 2.56603, + -1.5709899999999983, + 2.67795 + ], + "size": [ + 5, + 3, + 0 + ], + "pivot": [ + 5.06603, + -0.07098999999999833, + 2.67795 + ], + "rotation": [ + 22.5, + 0, + 0 + ], + "uv": [ + 10, + 0 + ], + "mirror": true + }, + { + "origin": [ + 1.97577, + -7.569009999999999, + 2.67047 + ], + "size": [ + 2, + 2, + 2 + ], + "pivot": [ + 2.86603, + -5.956420000000001, + 3.2519 + ], + "rotation": [ + 0, + -45, + 67.5 + ], + "uv": [ + 10, + 3 + ], + "mirror": true + }, + { + "origin": [ + 2.86603, + -6.456420000000001, + 2.7519 + ], + "size": [ + 1, + 6.25, + 1 + ], + "pivot": [ + 3.36603, + -5.456420000000001, + 3.2519 + ], + "rotation": [ + 0, + -45, + 40 + ], + "uv": [ + 10, + 7 + ], + "mirror": true + } + ] + }, + { + "name": "left_tip", + "parent": "left_wing", + "pivot": [ + 6.36603, + -1.4564200000000014, + 3.2519 + ], + "rotation": [ + 0, + 45, + 0 + ], + "cubes": [ + { + "origin": [ + 6.36603, + -11.45642, + 3.2519 + ], + "size": [ + 5, + 10, + 0 + ], + "uv": [ + 0, + 0 + ], + "mirror": true + }, + { + "origin": [ + 6.36603, + -2.5314200000000007, + 2.7519 + ], + "size": [ + 1, + 5.25, + 1 + ], + "pivot": [ + 6.86603, + -1.5314200000000007, + 3.2519 + ], + "rotation": [ + 0, + -45, + 132.5 + ], + "uv": [ + 14, + 7 + ], + "mirror": true + } + ] + }, + { + "name": "right_wing", + "parent": "cherub_wings", + "pivot": [ + -1.5, + -6.25, + 3.75 + ], + "rotation": [ + 5, + 30, + 0 + ], + "cubes": [ + { + "origin": [ + -6.36603, + -11.45642, + 3.2519 + ], + "size": [ + 4, + 10, + 0 + ], + "uv": [ + 0, + 10 + ] + }, + { + "origin": [ + -7.56603, + -1.5709899999999983, + 2.67795 + ], + "size": [ + 5, + 3, + 0 + ], + "pivot": [ + -5.06603, + -0.07098999999999833, + 2.67795 + ], + "rotation": [ + 22.5, + 0, + 0 + ], + "uv": [ + 10, + 0 + ] + }, + { + "origin": [ + -3.97577, + -7.569009999999999, + 2.67047 + ], + "size": [ + 2, + 2, + 2 + ], + "pivot": [ + -2.86603, + -5.956420000000001, + 3.2519 + ], + "rotation": [ + 0, + 45, + -67.5 + ], + "uv": [ + 10, + 3 + ] + }, + { + "origin": [ + -3.86603, + -6.456420000000001, + 2.7519 + ], + "size": [ + 1, + 6.25, + 1 + ], + "pivot": [ + -3.36603, + -5.456420000000001, + 3.2519 + ], + "rotation": [ + 0, + 45, + -40 + ], + "uv": [ + 10, + 7 + ] + } + ] + }, + { + "name": "right_tip", + "parent": "right_wing", + "pivot": [ + -6.36603, + -1.4564200000000014, + 3.2519 + ], + "rotation": [ + 0, + -45, + 0 + ], + "cubes": [ + { + "origin": [ + -11.36603, + -11.45642, + 3.2519 + ], + "size": [ + 5, + 10, + 0 + ], + "uv": [ + 0, + 0 + ] + }, + { + "origin": [ + -7.36603, + -2.5314200000000007, + 2.7519 + ], + "size": [ + 1, + 5.25, + 1 + ], + "pivot": [ + -6.86603, + -1.5314200000000007, + 3.2519 + ], + "rotation": [ + 0, + 45, + -132.5 + ], + "uv": [ + 14, + 7 + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/cosmetic/wings/easter.animation.json b/src/main/resources/assets/evolution/cosmetic/wings/easter.animation.json new file mode 100644 index 0000000..88808ec --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/easter.animation.json @@ -0,0 +1 @@ +{"animation.wings_easter.idle":{"loop":true,"animation_length":3,"bones":{"1seg":{"rotation":{"0.0":[0,0,0],"1.5":[-10,0,0],"3.0":[0,0,0]}},"3seg":{"rotation":{"0.0":[0,0,0],"1.5":[-17.5,0,0],"3.0":[0,0,0]}},"4seg":{"rotation":{"0.0":[0,0,0],"1.5":[10,0,0],"3.0":[0,0,0]}},"2seg":{"rotation":{"0.0":[0,0,0],"1.5":[-10,0,0],"3.0":[0,0,0]}},"tail":{"rotation":{"0.0":[0,0,0],"0.75":[0,0,0],"0.875":[0,-5,0],"0.9167":[0,7.5,0],"1.0":[0,-12.5,0],"1.0417":[0,7.5,0],"1.125":[0,-12.5,0],"1.1667":[0,7.5,0],"1.25":[0,-12.5,0],"1.2917":[0,12.5,0],"1.4167":[0,0,0]}},"right_wing":{"rotation":{"0.0":[0,0,0],"1.0":[0,8,-8],"3.0":[0,0,0]},"position":{"0.0":[0,0,0],"2.0":[0,0,0]}},"bone":{"rotation":{"0.0":[0,0,0],"1.5":[17.5,0,0],"3.0":[0,0,0]}},"bone2":{"rotation":{"0.0":[0,0,0],"1.5":[17.5,0,0],"3.0":[0,0,0]}},"bone3":{"rotation":{"0.0":[0,0,0],"1.5":[17.5,0,0],"3.0":[0,0,0]}},"bone13":{"rotation":{"0.0":[0,0,0],"1.5":[17.5,0,0],"3.0":[0,0,0]}},"left_wing":{"rotation":{"0.0":[0,0,0],"1.0":[0,-8,8],"3.0":[0,0,0]},"position":{"0.0":[0,0,0],"2.0":[0,0,0]}},"4seg2":{"rotation":{"0.0":[0,0,0],"1.5":[10,0,0],"3.0":[0,0,0]}},"1seg2":{"rotation":{"0.0":[0,0,0],"1.5":[-10,0,0],"3.0":[0,0,0]}},"bone15":{"rotation":{"0.0":[0,0,0],"1.5":[17.5,0,0],"3.0":[0,0,0]}},"2seg2":{"rotation":{"0.0":[0,0,0],"1.5":[-10,0,0],"3.0":[0,0,0]}},"bone22":{"rotation":{"0.0":[0,0,0],"1.5":[17.5,0,0],"3.0":[0,0,0]}},"bone23":{"rotation":{"0.0":[0,0,0],"1.5":[17.5,0,0],"3.0":[0,0,0]}},"3seg2":{"rotation":{"0.0":[0,0,0],"1.5":[-17.5,0,0],"3.0":[0,0,0]}},"bone26":{"rotation":{"0.0":[0,0,0],"1.5":[17.5,0,0],"3.0":[0,0,0]}}}}} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/easter.geo.json b/src/main/resources/assets/evolution/cosmetic/wings/easter.geo.json new file mode 100644 index 0000000..fcbe10c --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/easter.geo.json @@ -0,0 +1 @@ +{"format_version":"1.21.0","minecraft:geometry":[{"description":{"identifier":"geometry.unknown","texture_width":32,"texture_height":32,"visible_bounds_width":4,"visible_bounds_height":3.5,"visible_bounds_offset":[0,1.25,0]},"bones":[{"name":"root","pivot":[0.6,16,3]},{"name":"tail","parent":"root","pivot":[0.6,16,3],"cubes":[{"origin":[-1.9,13,2.6],"size":[4,4,4],"inflate":0.3,"pivot":[0.6,16,3],"rotation":[-17.5,0,0],"uv":{"north":{"uv":[2,4],"uv_size":[2,2]},"east":{"uv":[4.5,2],"uv_size":[2,2]},"south":{"uv":[2,6],"uv_size":[2,2]},"west":{"uv":[5,8],"uv_size":[2,2]},"up":{"uv":[5,10],"uv_size":[2,2]},"down":{"uv":[2.5,4],"uv_size":[2,-2]}}},{"origin":[-1.9,13,2.6],"size":[4,4,4],"pivot":[0.6,16,3],"rotation":[-17.5,0,0],"uv":{"north":{"uv":[4,4],"uv_size":[2,2]},"east":{"uv":[4.5,0],"uv_size":[2,2]},"south":{"uv":[4,6],"uv_size":[2,2]},"west":{"uv":[6,4],"uv_size":[2,2]},"up":{"uv":[6,6],"uv_size":[2,2]},"down":{"uv":[0,8.5],"uv_size":[2,-2]}}}]},{"name":"back","parent":"root","pivot":[-2.4,20,3],"cubes":[{"origin":[-3.4,17,2],"size":[2,5,2],"uv":{"north":{"uv":[7,9],"uv_size":[1,2.5]},"east":{"uv":[8,9],"uv_size":[1,2.5]},"south":{"uv":[9,9],"uv_size":[1,2.5]},"west":{"uv":[10,7.5],"uv_size":[1,2.5]},"up":{"uv":[12.5,3],"uv_size":[1,1]},"down":{"uv":[12.5,5],"uv_size":[1,-1]}}},{"origin":[1.4,17,2],"size":[2,5,2],"uv":{"north":{"uv":[8,9],"uv_size":[-1,2.5]},"east":{"uv":[11,7.5],"uv_size":[-1,2.5]},"south":{"uv":[10,9],"uv_size":[-1,2.5]},"west":{"uv":[9,9],"uv_size":[-1,2.5]},"up":{"uv":[13.5,3],"uv_size":[-1,1]},"down":{"uv":[13.5,5],"uv_size":[-1,-1]}}}]},{"name":"right_wing","parent":"root","pivot":[-2.44,20.38747,3.06641]},{"name":"4seg","parent":"right_wing","pivot":[-3.4,18.60934,3.03301],"rotation":[-115,-57.5,0],"cubes":[{"origin":[-3.3627,26.73696,-0.98509],"size":[1,1,6],"pivot":[-2.8627,24.52985,9.75333],"rotation":[57.5,0,0],"uv":{"north":{"uv":[0.5,14],"uv_size":[0.5,0.5]},"east":{"uv":[9,5],"uv_size":[3,0.5]},"south":{"uv":[14,0.5],"uv_size":[0.5,0.5]},"west":{"uv":[10,1.5],"uv_size":[3,0.5]},"up":{"uv":[4,11.5],"uv_size":[0.5,3]},"down":{"uv":[4.5,14.5],"uv_size":[0.5,-3]}}},{"origin":[-3.3627,23.14958,5.05937],"size":[1,1,6],"pivot":[-2.8627,22.16404,8.31313],"rotation":[30,0,0],"uv":{"north":{"uv":[1,14],"uv_size":[0.5,0.5]},"east":{"uv":[11,9],"uv_size":[3,0.5]},"south":{"uv":[14,1],"uv_size":[0.5,0.5]},"west":{"uv":[11,9.5],"uv_size":[3,0.5]},"up":{"uv":[8.5,11.5],"uv_size":[0.5,3]},"down":{"uv":[9,14.5],"uv_size":[0.5,-3]}}}]},{"name":"1seg","parent":"right_wing","pivot":[-2.6,20.60934,3.23301],"rotation":[0,-57.5,0],"cubes":[{"origin":[-3.6,29.84657,0.67109],"size":[2,2,9],"pivot":[-2.6,28.13946,11.40951],"rotation":[57.5,0,0],"uv":{"north":{"uv":[5,12.5],"uv_size":[1,1]},"east":{"uv":[0,0],"uv_size":[4.5,1]},"south":{"uv":[12.5,5.5],"uv_size":[1,1]},"west":{"uv":[0,1],"uv_size":[4.5,1]},"up":{"uv":[0,2],"uv_size":[1,4.5]},"down":{"uv":[1,6.5],"uv_size":[1,-4.5]}}}]},{"name":"11seg","parent":"1seg","pivot":[-2.6153,27.64381,7.80831],"cubes":[{"origin":[-3.35,28.875,8.15576],"size":[1.5,1.5,7],"pivot":[-2.6,28.13946,11.40951],"rotation":[30,0,0],"uv":{"north":{"uv":[6,12.5],"uv_size":[1,1]},"east":{"uv":[6.5,0.25],"uv_size":[3.5,0.75]},"south":{"uv":[12.5,7.5],"uv_size":[0.75,0.75]},"west":{"uv":[6.5,1.25],"uv_size":[3.5,0.75]},"up":{"uv":[8,2],"uv_size":[0.75,3.5]},"down":{"uv":[4,11.5],"uv_size":[0.75,-3.5]}}},{"origin":[-3.35,28.875,10.15576],"size":[1.5,1.5,1],"inflate":0.2,"pivot":[-2.6,28.13946,11.40951],"rotation":[30,0,0],"uv":{"east":{"uv":[13.5,2.5],"uv_size":[-0.5,-0.75]},"west":{"uv":[13,1.75],"uv_size":[0.5,0.75]},"up":{"uv":[13.5,1.75],"uv_size":[-0.5,0.75],"uv_rotation":90},"down":{"uv":[13,2.5],"uv_size":[0.5,-0.75],"uv_rotation":90}}},{"origin":[-3.1,30.13648,14.23496],"size":[1,1,7],"pivot":[-2.6,28.13946,11.40951],"rotation":[12.5,0,0],"uv":{"north":{"uv":[9,2.25],"uv_size":[3.5,0.5]},"east":{"uv":[12.5,2.75],"uv_size":[-3.5,-0.5]},"south":{"uv":[14.25,3.5],"uv_size":[0.5,0.5]},"west":{"uv":[9,2.25],"uv_size":[3.5,0.5]},"up":{"uv":[12.5,2.25],"uv_size":[-3.5,0.5],"uv_rotation":90},"down":{"uv":[9,2.75],"uv_size":[3.5,-0.5],"uv_rotation":90}}},{"origin":[-2.66122,25.27406,7.16037],"size":[0,5,17],"inflate":0.005,"pivot":[-2.66122,22.56695,13.8988],"rotation":[25,0,0],"uv":{"east":{"uv":[24.5,0],"uv_size":[-8.5,2.5]},"west":{"uv":[16,0],"uv_size":[8.5,2.5]}}},{"origin":[-2.6,28.03648,13.18496],"size":[0,3,0.5],"inflate":0.005,"uv":{"east":{"uv":[8,13],"uv_size":[0.25,1.5]},"west":{"uv":[8,13],"uv_size":[0.25,1.5]}}},{"origin":[-3.6,27.03648,12.43496],"size":[2,2,2],"pivot":[-2.6,27.03648,13.43496],"rotation":[0,17.5,0],"uv":{"north":{"uv":[2,13],"uv_size":[-1,1]},"east":{"uv":[1,13],"uv_size":[1,1]},"south":{"uv":[2,13],"uv_size":[-1,1]},"west":{"uv":[1,13],"uv_size":[1,1]},"up":{"uv":[2,15.5],"uv_size":[-1,-1]},"down":{"uv":[3,15.5],"uv_size":[-1,-1]}}},{"origin":[-1.55594,30.23199,12.66496],"size":[0,0.5,1],"inflate":0.005,"pivot":[-1.55594,30.48199,12.91496],"rotation":[40.253,-19.5899,-15.8477],"uv":{"east":{"uv":[13,15.5],"uv_size":[0.5,-0.25]},"west":{"uv":[13.5,15.5],"uv_size":[-0.5,-0.25]}}},{"origin":[-1.55594,30.95494,12.16496],"size":[0,1,1.5],"inflate":0.005,"pivot":[-1.55594,31.45494,12.91496],"rotation":[-40.253,-19.5899,15.8477],"uv":{"east":{"uv":[13,15],"uv_size":[0.75,0.5]},"west":{"uv":[13.75,15],"uv_size":[-0.75,0.5]}}},{"origin":[-1.55594,30.23199,13.23487],"size":[0,0.5,1],"inflate":0.005,"pivot":[-1.55594,30.48199,13.98487],"rotation":[-40.253,19.5899,-15.8477],"uv":{"east":{"uv":[13.5,15.5],"uv_size":[-0.5,-0.25]},"west":{"uv":[13,15.5],"uv_size":[0.5,-0.25]}}},{"origin":[-1.55594,30.95494,13.23487],"size":[0,1,1.5],"inflate":0.005,"pivot":[-1.55594,31.45494,13.98487],"rotation":[40.253,19.5899,15.8477],"uv":{"east":{"uv":[13.75,15],"uv_size":[-0.75,0.5]},"west":{"uv":[13,15],"uv_size":[0.75,0.5]}}},{"origin":[-1.80594,30.75494,13.20987],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"east":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"south":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"west":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"up":{"uv":[9.5,9],"uv_size":[-0.25,-0.25]},"down":{"uv":[9.5,9],"uv_size":[-0.25,-0.25]}}},{"origin":[-1.8759,31.88831,18.72218],"size":[0,0.5,1],"inflate":0.005,"pivot":[-1.8759,32.13831,18.97218],"rotation":[31.8983,-19.0333,-12.9164],"uv":{"east":{"uv":[12,14.75],"uv_size":[0.5,-0.25]},"west":{"uv":[12.5,14.75],"uv_size":[-0.5,-0.25]}}},{"origin":[-1.84951,32.53648,18.29051],"size":[0,1,1.5],"inflate":0.005,"pivot":[-1.84951,33.03648,19.04051],"rotation":[-40.253,-19.5899,15.8477],"uv":{"east":{"uv":[12,14.25],"uv_size":[0.75,0.5]},"west":{"uv":[12.75,14.25],"uv_size":[-0.75,0.5]}}},{"origin":[-1.84951,31.81352,19.36042],"size":[0,0.5,1],"inflate":0.005,"pivot":[-1.84951,32.06352,20.11042],"rotation":[-40.253,19.5899,-15.8477],"uv":{"east":{"uv":[12.5,14.75],"uv_size":[-0.5,-0.25]},"west":{"uv":[12,14.75],"uv_size":[0.5,-0.25]}}},{"origin":[-1.84951,32.53648,19.36042],"size":[0,1,1.5],"inflate":0.005,"pivot":[-1.84951,33.03648,20.11042],"rotation":[40.253,19.5899,15.8477],"uv":{"east":{"uv":[12.75,14.25],"uv_size":[-0.75,0.5]},"west":{"uv":[12,14.25],"uv_size":[0.75,0.5]}}},{"origin":[-2.09951,32.33648,19.33542],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"east":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"south":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"west":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"up":{"uv":[9.5,9],"uv_size":[-0.25,-0.25]},"down":{"uv":[9.5,9],"uv_size":[-0.25,-0.25]}}}]},{"name":"bone3","parent":"11seg","pivot":[-2.6,32.13648,19.73496],"cubes":[{"origin":[-3.85,27.03648,18.48496],"size":[2.5,0.5,2.5],"pivot":[-2.6,29.03648,19.73496],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[13.5,4.5],"uv_size":[1.25,0.25]},"east":{"uv":[11.5,13.5],"uv_size":[1.25,0.25]},"south":{"uv":[13.5,11.5],"uv_size":[1.25,0.25]},"west":{"uv":[13.5,12],"uv_size":[1.25,0.25]},"up":{"uv":[11.5,0],"uv_size":[1.25,1.25]},"down":{"uv":[7,12.75],"uv_size":[1.25,-1.25]}}},{"origin":[-3.6,30.53648,18.73496],"size":[2,0.5,2],"pivot":[-2.6,29.03648,19.73496],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[15,8.5],"uv_size":[-1,0.25]},"east":{"uv":[14,6.5],"uv_size":[1,0.25]},"south":{"uv":[14,7],"uv_size":[1,0.25]},"west":{"uv":[14,8.5],"uv_size":[1,0.25]},"up":{"uv":[11.5,12.5],"uv_size":[1,1]},"down":{"uv":[12.5,12.5],"uv_size":[1,-1]}}},{"origin":[-3.85,29.53648,18.48496],"size":[2.5,1,2.5],"pivot":[-2.6,29.03648,19.73496],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[12.5,8.5],"uv_size":[1.25,0.5]},"east":{"uv":[13,10],"uv_size":[1.25,0.5]},"south":{"uv":[13,10.5],"uv_size":[1.25,0.5]},"west":{"uv":[13.5,3],"uv_size":[1.25,0.5]},"up":{"uv":[10,10],"uv_size":[1.25,1.25]},"down":{"uv":[11,8.75],"uv_size":[1.25,-1.25]}}},{"origin":[-4.1,27.53648,18.23496],"size":[3,2,3],"pivot":[-2.6,29.03648,19.73496],"rotation":[0,-22.5,0],"uv":{"north":{"uv":[12.5,11.5],"uv_size":[-1.5,1]},"east":{"uv":[11,11.5],"uv_size":[1.5,1]},"south":{"uv":[12.5,11.5],"uv_size":[-1.5,1]},"west":{"uv":[11,11.5],"uv_size":[1.5,1]},"up":{"uv":[8,3.5],"uv_size":[-1.5,-1.5]},"down":{"uv":[11.5,1.5],"uv_size":[-1.5,-1.5]}}},{"origin":[-2.6,30.53648,19.48496],"size":[0,2,0.5],"inflate":0.005,"uv":{"east":{"uv":[8,13.5],"uv_size":[0.25,1]},"west":{"uv":[8,13.5],"uv_size":[0.25,1]}}}]},{"name":"bone4","parent":"1seg","pivot":[-2.6,30.18648,13.43496]},{"name":"bone5","parent":"1seg","pivot":[-1.59177,32.61247,19.57746],"rotation":[-7.5,2.5,0]},{"name":"bone6","parent":"1seg","pivot":[-1.29821,31.03093,13.45191],"rotation":[14.58719,-6.60639,-11.36294]},{"name":"bone7","parent":"1seg","pivot":[-1.34483,24.93649,6.2187],"rotation":[-2.69345,5.49455,-8.22371],"cubes":[{"origin":[-1.55257,24.4105,5.72666],"size":[0.5,1,1],"pivot":[-1.30257,24.9105,6.22666],"rotation":[-45,0,0],"uv":{"north":{"uv":[12,14.5],"uv_size":[0.25,0.25]},"east":{"uv":[12,14.5],"uv_size":[0.25,0.25]},"south":{"uv":[12,14.5],"uv_size":[0.25,0.25]},"west":{"uv":[12,14.5],"uv_size":[0.25,0.25]},"up":{"uv":[12.25,14.75],"uv_size":[-0.25,-0.25]},"down":{"uv":[12.25,14.75],"uv_size":[-0.25,-0.25]}}},{"origin":[-1.30257,23.8605,6.00166],"size":[0,2,2.5],"inflate":0.005,"pivot":[-1.30257,25.3605,6.75166],"rotation":[40.25298,19.58991,15.84766],"uv":{"east":{"uv":[12,14.5],"uv_size":[-1.25,1]},"west":{"uv":[10.75,14.5],"uv_size":[1.25,1]}}},{"origin":[-1.30257,24.13755,6.00166],"size":[0,0.5,3],"inflate":0.005,"pivot":[-1.30257,24.38755,6.75166],"rotation":[-60.25298,19.58991,-15.84766],"uv":{"east":{"uv":[12.5,15.5],"uv_size":[-0.5,-0.25]},"west":{"uv":[12,15.5],"uv_size":[0.5,-0.25]}}},{"origin":[-1.30257,23.8605,3.93175],"size":[0,2,2.5],"inflate":0.005,"pivot":[-1.30257,25.3605,5.68175],"rotation":[-40.25298,-19.58991,15.84766],"uv":{"east":{"uv":[10.75,14.5],"uv_size":[1.25,1]},"west":{"uv":[12,14.5],"uv_size":[-1.25,1]}}},{"origin":[-1.30257,24.13755,3.43175],"size":[0,0.5,3],"inflate":0.005,"pivot":[-1.30257,24.38755,5.68175],"rotation":[62.75298,-19.58991,-15.84766],"uv":{"east":{"uv":[12,15.5],"uv_size":[0.5,-0.25]},"west":{"uv":[12.5,15.5],"uv_size":[-0.5,-0.25]}}}]},{"name":"2seg","parent":"right_wing","pivot":[-2.4,20.60934,3.03301],"rotation":[-32.5,-57.5,0],"cubes":[{"origin":[-3.4,29.84657,0.47109],"size":[2,2,9],"inflate":0.01,"pivot":[-2.4,28.13946,11.20951],"rotation":[57.5,0,0],"uv":{"north":{"uv":[5,12.5],"uv_size":[1,1]},"east":{"uv":[0,0],"uv_size":[4.5,1]},"south":{"uv":[12.5,5.5],"uv_size":[1,1]},"west":{"uv":[0,1],"uv_size":[4.5,1]},"up":{"uv":[0,2],"uv_size":[1,4.5]},"down":{"uv":[1,6.5],"uv_size":[1,-4.5]}}},{"origin":[-2.4,23.84657,1.57109],"size":[0,5,17],"inflate":0.005,"pivot":[-2.4,28.13946,11.20951],"rotation":[27.5,0,0],"uv":{"east":{"uv":[24.5,0],"uv_size":[-8.5,2.5]},"west":{"uv":[16,0],"uv_size":[8.5,2.5]}}}]},{"name":"22seg","parent":"2seg","pivot":[-2.35928,27.61111,8.18846],"cubes":[{"origin":[-3.15,28.875,7.95576],"size":[1.5,1.5,7],"pivot":[-2.4,28.13946,11.20951],"rotation":[30,0,0],"uv":{"north":{"uv":[6,12.5],"uv_size":[1,1]},"east":{"uv":[6.5,0.25],"uv_size":[3.5,0.75]},"south":{"uv":[12.5,7.5],"uv_size":[0.75,0.75]},"west":{"uv":[6.5,1.25],"uv_size":[3.5,0.75]},"up":{"uv":[8,2],"uv_size":[0.75,3.5]},"down":{"uv":[4,11.5],"uv_size":[0.75,-3.5]}}},{"origin":[-3.15,29,10.15576],"size":[1.5,1.5,1],"inflate":0.2,"pivot":[-2.6,28.13946,11.40951],"rotation":[30,0,0],"uv":{"east":{"uv":[13.5,2.5],"uv_size":[-0.5,-0.75]},"west":{"uv":[13,1.75],"uv_size":[0.5,0.75]},"up":{"uv":[13.5,1.75],"uv_size":[-0.5,0.75],"uv_rotation":90},"down":{"uv":[13,2.5],"uv_size":[0.5,-0.75],"uv_rotation":90}}},{"origin":[-2.9,30.13648,14.03496],"size":[1,1,5],"pivot":[-2.4,28.13946,11.20951],"rotation":[12.5,0,0],"uv":{"north":{"uv":[9,2.25],"uv_size":[2.5,0.5]},"east":{"uv":[11.5,2.75],"uv_size":[-2.5,-0.5]},"south":{"uv":[14.25,4],"uv_size":[0.5,0.5]},"west":{"uv":[9,2.25],"uv_size":[2.5,0.5]},"up":{"uv":[11.5,2.25],"uv_size":[-2.5,0.5],"uv_rotation":90},"down":{"uv":[9,2.75],"uv_size":[2.5,-0.5],"uv_rotation":90}}}]},{"name":"bone9","parent":"22seg","pivot":[-1.50659,30.82323,12.81887],"rotation":[30.30783,3.08207,-1.65378],"cubes":[{"origin":[-1.71433,30.29724,12.32684],"size":[0.5,1,1],"pivot":[-1.46433,30.79724,12.82684],"rotation":[-45,0,0],"uv":{"north":{"uv":[11.5,14.75],"uv_size":[0.25,0.25]},"east":{"uv":[11.5,14.75],"uv_size":[0.25,0.25]},"south":{"uv":[11.5,14.75],"uv_size":[0.25,0.25]},"west":{"uv":[11.5,14.75],"uv_size":[0.25,0.25]},"up":{"uv":[11.75,15],"uv_size":[-0.25,-0.25]},"down":{"uv":[11.75,15],"uv_size":[-0.25,-0.25]}}},{"origin":[-1.46433,29.74724,12.60184],"size":[0,2,2.5],"inflate":0.005,"pivot":[-1.46433,31.24724,13.35184],"rotation":[40.25298,19.58991,15.84766],"uv":{"east":{"uv":[10.75,14.5],"uv_size":[-1.25,1]},"west":{"uv":[9.5,14.5],"uv_size":[1.25,1]}}},{"origin":[-1.46433,30.02428,12.60184],"size":[0,0.5,3],"inflate":0.005,"pivot":[-1.46433,30.27428,13.35184],"rotation":[-60.25298,19.58991,-15.84766],"uv":{"east":{"uv":[13.5,15.5],"uv_size":[-0.5,-0.25]},"west":{"uv":[13,15.5],"uv_size":[0.5,-0.25]}}},{"origin":[-1.46433,29.74724,10.53192],"size":[0,2,2.5],"inflate":0.005,"pivot":[-1.46433,31.24724,12.28192],"rotation":[-40.25298,-19.58991,15.84766],"uv":{"east":{"uv":[9.5,14.5],"uv_size":[1.25,1]},"west":{"uv":[10.75,14.5],"uv_size":[-1.25,1]}}},{"origin":[-1.46433,30.02428,10.03192],"size":[0,0.5,3],"inflate":0.005,"pivot":[-1.46433,30.27428,12.28192],"rotation":[62.75298,-19.58991,-15.84766],"uv":{"east":{"uv":[13,15.5],"uv_size":[0.5,-0.25]},"west":{"uv":[13.5,15.5],"uv_size":[-0.5,-0.25]}}}]},{"name":"bone8","parent":"22seg","pivot":[-1.75614,32.0598,17.47901],"rotation":[25.02473,2.10829,1.34386],"cubes":[{"origin":[-1.96387,31.78381,17.23697],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"east":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"south":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"west":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"up":{"uv":[9.5,9],"uv_size":[-0.25,-0.25]},"down":{"uv":[9.5,9],"uv_size":[-0.25,-0.25]}}},{"origin":[-1.71387,31.98381,17.26197],"size":[0,1,1.5],"inflate":0.005,"pivot":[-1.71387,32.48381,18.01197],"rotation":[40.25298,19.58991,15.84766],"uv":{"east":{"uv":[13.75,15],"uv_size":[-0.75,0.5]},"west":{"uv":[13,15],"uv_size":[0.75,0.5]}}},{"origin":[-1.71387,31.26085,17.26197],"size":[0,0.5,1],"inflate":0.005,"pivot":[-1.71387,31.51085,18.01197],"rotation":[-40.25298,19.58991,-15.84766],"uv":{"east":{"uv":[13.5,15.5],"uv_size":[-0.5,-0.25]},"west":{"uv":[13,15.5],"uv_size":[0.5,-0.25]}}},{"origin":[-1.71387,31.98381,16.19206],"size":[0,1,1.5],"inflate":0.005,"pivot":[-1.71387,32.48381,16.94206],"rotation":[-40.25298,-19.58991,15.84766],"uv":{"east":{"uv":[13,15],"uv_size":[0.75,0.5]},"west":{"uv":[13.75,15],"uv_size":[-0.75,0.5]}}},{"origin":[-1.71387,31.26085,16.69206],"size":[0,0.5,1],"inflate":0.005,"pivot":[-1.71387,31.51085,16.94206],"rotation":[40.25298,-19.58991,-15.84766],"uv":{"east":{"uv":[13,15.5],"uv_size":[0.5,-0.25]},"west":{"uv":[13.5,15.5],"uv_size":[-0.5,-0.25]}}}]},{"name":"bone","parent":"22seg","pivot":[-2.6,31.47326,17.76036],"cubes":[{"origin":[-3.6,27.53648,17.83496],"size":[2,2,2],"pivot":[-2.6,29.78648,18.83496],"rotation":[33.7424,14.6914,9.61518],"uv":{"north":{"uv":[15,13.5],"uv_size":[-1,1]},"east":{"uv":[14,13.5],"uv_size":[1,1]},"south":{"uv":[15,13.5],"uv_size":[-1,1]},"west":{"uv":[14,13.5],"uv_size":[1,1]},"up":{"uv":[15,16],"uv_size":[-1,-1]},"down":{"uv":[16,16],"uv_size":[-1,-1]}}},{"origin":[-2.6,29.53648,18.58496],"size":[0,3,0.5],"inflate":0.005,"pivot":[-2.6,29.78648,18.83496],"rotation":[32.5,0,0],"uv":{"east":{"uv":[8,13],"uv_size":[0.25,1.5]},"west":{"uv":[8,13],"uv_size":[0.25,1.5]}}}]},{"name":"bone13","parent":"22seg","pivot":[-2.33878,30.15116,12.93502],"cubes":[{"origin":[-3.58878,25.36796,13.45811],"size":[2.5,0.5,2.5],"pivot":[-2.33878,27.36796,14.70811],"rotation":[34.58859,-18.82943,-12.54707],"uv":{"north":{"uv":[14.25,10],"uv_size":[1.25,0.25]},"east":{"uv":[15.5,10],"uv_size":[-1.25,0.25]},"south":{"uv":[14.25,10],"uv_size":[1.25,0.25]},"west":{"uv":[15.5,10],"uv_size":[-1.25,0.25]},"down":{"uv":[14,10],"uv_size":[1.25,-1.25]}}},{"origin":[-3.83878,25.86796,13.20811],"size":[3,2,3],"pivot":[-2.33878,27.36796,14.70811],"rotation":[34.58859,-18.82943,-12.54707],"uv":{"north":{"uv":[15,4.75],"uv_size":[-1.5,1]},"east":{"uv":[13.5,4.75],"uv_size":[1.5,1]},"south":{"uv":[15,4.75],"uv_size":[-1.5,1]},"west":{"uv":[13.5,4.75],"uv_size":[1.5,1]},"up":{"uv":[16,1.5],"uv_size":[-1.5,-1.5]},"down":{"uv":[13,1.5],"uv_size":[-1.5,-1.5]}}},{"origin":[-3.58878,27.86796,13.45811],"size":[2.5,1,2.5],"pivot":[-2.33878,27.36796,14.70811],"rotation":[34.58859,-18.82943,-12.54707],"uv":{"north":{"uv":[9,4.25],"uv_size":[1.25,0.5]},"east":{"uv":[11,2.75],"uv_size":[1.25,0.5]},"south":{"uv":[11,3.25],"uv_size":[1.25,0.5]},"west":{"uv":[9,3.75],"uv_size":[1.25,0.5]},"up":{"uv":[10.25,3.75],"uv_size":[1.25,1.25]},"down":{"uv":[11,8.75],"uv_size":[1.25,-1.25]}}},{"origin":[-3.33878,28.86796,13.70811],"size":[2,0.5,2],"pivot":[-2.33878,27.36796,14.70811],"rotation":[34.58859,-18.82943,-12.54707],"uv":{"north":{"uv":[14,1.5],"uv_size":[1,0.25]},"east":{"uv":[9,2.75],"uv_size":[1,0.25]},"south":{"uv":[9,3.25],"uv_size":[1,0.25]},"west":{"uv":[9,3],"uv_size":[1,0.25]},"up":{"uv":[10,2.75],"uv_size":[1,1]},"down":{"uv":[12.5,12.5],"uv_size":[1,-1]}}},{"origin":[-2.33878,21.94265,17.34934],"size":[0,2,0.5],"inflate":0.005,"pivot":[-2.33878,18.94564,4.27389],"rotation":[32.5,0,0],"uv":{"east":{"uv":[8,13.5],"uv_size":[0.25,1]},"west":{"uv":[8,13.5],"uv_size":[0.25,1]}}}]},{"name":"bone14","parent":"2seg","pivot":[-2.6,26.88289,7.93647],"cubes":[{"origin":[-3.6,23.53648,7.63496],"size":[2,2,2],"pivot":[-2.6,25.78648,8.63496],"rotation":[38.76479,-30.89218,-22.40559],"uv":{"north":{"uv":[6.75,13.5],"uv_size":[-1,1]},"east":{"uv":[5.75,13.5],"uv_size":[1,1]},"south":{"uv":[6.75,13.5],"uv_size":[-1,1]},"west":{"uv":[5.75,13.5],"uv_size":[1,1]},"up":{"uv":[6.75,16],"uv_size":[-1,-1]},"down":{"uv":[7.75,16],"uv_size":[-1,-1]}}},{"origin":[-2.6,25.53648,8.38496],"size":[0,3,0.5],"inflate":0.005,"pivot":[-2.6,25.78648,8.63496],"rotation":[32.5,0,0],"uv":{"east":{"uv":[8,13],"uv_size":[0.25,1.5]},"west":{"uv":[8,13],"uv_size":[0.25,1.5]}}}]},{"name":"bone10","parent":"2seg","pivot":[-1.18756,27.08759,7.72152],"rotation":[45.94975,0.25012,-2.52444],"cubes":[{"origin":[-1.3953,26.8116,7.47948],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[9.25,13.5],"uv_size":[0.25,0.25]},"east":{"uv":[9.25,13.5],"uv_size":[0.25,0.25]},"south":{"uv":[9.25,13.5],"uv_size":[0.25,0.25]},"west":{"uv":[9.25,13.5],"uv_size":[0.25,0.25]},"up":{"uv":[9.5,13.75],"uv_size":[-0.25,-0.25]},"down":{"uv":[9.5,13.75],"uv_size":[-0.25,-0.25]}}},{"origin":[-1.1453,27.0116,7.50448],"size":[0,1,1.5],"inflate":0.005,"pivot":[-1.1453,27.5116,8.25448],"rotation":[40.25298,19.58991,15.84766],"uv":{"east":{"uv":[12.75,15],"uv_size":[-0.75,0.5]},"west":{"uv":[12,15],"uv_size":[0.75,0.5]}}},{"origin":[-1.1453,26.28864,7.50448],"size":[0,0.5,1],"inflate":0.005,"pivot":[-1.1453,26.53864,8.25448],"rotation":[-40.25298,19.58991,-15.84766],"uv":{"east":{"uv":[12.5,15.5],"uv_size":[-0.5,-0.25]},"west":{"uv":[12,15.5],"uv_size":[0.5,-0.25]}}},{"origin":[-1.1453,27.0116,6.43457],"size":[0,1,1.5],"inflate":0.005,"pivot":[-1.1453,27.5116,7.18457],"rotation":[-40.25298,-19.58991,15.84766],"uv":{"east":{"uv":[12,15],"uv_size":[0.75,0.5]},"west":{"uv":[12.75,15],"uv_size":[-0.75,0.5]}}},{"origin":[-1.1453,26.28864,6.93457],"size":[0,0.5,1],"inflate":0.005,"pivot":[-1.1453,26.53864,7.18457],"rotation":[40.25298,-19.58991,-15.84766],"uv":{"east":{"uv":[12,15.5],"uv_size":[0.5,-0.25]},"west":{"uv":[12.5,15.5],"uv_size":[-0.5,-0.25]}}}]},{"name":"3seg","parent":"right_wing","pivot":[-2.4,20.60934,3.03301],"rotation":[-77.5,-57.5,0],"cubes":[{"origin":[-3.15,30.09657,0.47109],"size":[1.5,1.5,9],"pivot":[-2.4,28.13946,11.20951],"rotation":[57.5,0,0],"uv":{"north":{"uv":[13.5,7.5],"uv_size":[0.75,0.75]},"east":{"uv":[12.5,5.5],"uv_size":[-4.5,0.75]},"south":{"uv":[9.5,13.5],"uv_size":[0.75,0.75]},"west":{"uv":[8,5.5],"uv_size":[4.5,0.75]},"up":{"uv":[0,8.5],"uv_size":[0.75,4.5]},"down":{"uv":[1,13],"uv_size":[0.75,-4.5]}}},{"origin":[-3.15,26.86106,4.4891],"size":[1.5,1.5,1],"inflate":0.2,"pivot":[-2.4,27.86106,7.6891],"rotation":[55,0,0],"uv":{"east":{"uv":[13.5,2.5],"uv_size":[-0.5,-0.75]},"west":{"uv":[13,1.75],"uv_size":[0.5,0.75]},"up":{"uv":[13.5,1.75],"uv_size":[-0.5,0.75],"uv_rotation":90},"down":{"uv":[13,2.5],"uv_size":[0.5,-0.75],"uv_rotation":90}}},{"origin":[-2.9,29.125,7.95576],"size":[1,1,5],"pivot":[-2.4,28.13946,11.20951],"rotation":[30,0,0],"uv":{"north":{"uv":[13.5,13],"uv_size":[0.5,0.5]},"east":{"uv":[15,2.5],"uv_size":[-2.5,0.5]},"south":{"uv":[13.5,13.5],"uv_size":[0.5,0.5]},"west":{"uv":[12.5,2.5],"uv_size":[2.5,0.5]},"up":{"uv":[3,12],"uv_size":[0.5,2.5]},"down":{"uv":[3.5,14.5],"uv_size":[0.5,-2.5]}}},{"origin":[-2.9,29.19161,12.44469],"size":[1,1,3],"pivot":[-2.4,27.1946,9.61924],"rotation":[12.5,0,0],"uv":{"north":{"uv":[0,14],"uv_size":[0.5,0.5]},"east":{"uv":[6.5,3.5],"uv_size":[1.5,0.5]},"south":{"uv":[14,0],"uv_size":[0.5,0.5]},"west":{"uv":[8,7.5],"uv_size":[1.5,0.5]},"up":{"uv":[9.5,7.5],"uv_size":[0.5,1.5]},"down":{"uv":[7,14.5],"uv_size":[0.5,-1.5]}}},{"origin":[-3.3994,23.65897,7.53347],"size":[2,2,2],"pivot":[-2.3994,24.65897,8.53347],"rotation":[94.8493,-11.53486,-112.99008],"uv":{"north":{"uv":[2,13],"uv_size":[-1,1]},"east":{"uv":[1,13],"uv_size":[1,1]},"south":{"uv":[2,13],"uv_size":[-1,1]},"west":{"uv":[1,13],"uv_size":[1,1]},"up":{"uv":[2,15.5],"uv_size":[-1,-1]},"down":{"uv":[3,15.5],"uv_size":[-1,-1]}}},{"origin":[-2.3994,23.38131,0.72125],"size":[0,2,0.5],"inflate":0.005,"pivot":[-2.6,28.23131,3.3334],"rotation":[77.5,0,0],"uv":{"east":{"uv":[8,13.5],"uv_size":[0.25,1]},"west":{"uv":[8,13.5],"uv_size":[0.25,1]}}},{"origin":[-2.4,23.4341,7.12034],"size":[0,3,9],"inflate":0.005,"pivot":[-2.4,27.1341,11.62034],"rotation":[-12.5,0,0],"uv":{"east":{"uv":[17.5,4],"uv_size":[-1.5,4.5],"uv_rotation":90},"west":{"uv":[16,4],"uv_size":[1.5,4.5],"uv_rotation":90}}}]},{"name":"bone2","parent":"3seg","pivot":[-2.42318,30.93698,14.33106],"cubes":[{"origin":[-1.98023,21.05897,6.97136],"size":[2,2,2],"pivot":[-2.3994,30.65897,8.53347],"rotation":[94.8493,-11.53486,-112.99008],"uv":{"north":{"uv":[15,13.5],"uv_size":[-1,1]},"east":{"uv":[14,13.5],"uv_size":[1,1]},"south":{"uv":[15,13.5],"uv_size":[-1,1]},"west":{"uv":[14,13.5],"uv_size":[1,1]},"up":{"uv":[15,16],"uv_size":[-1,-1]},"down":{"uv":[16,16],"uv_size":[-1,-1]}}},{"origin":[-2.42318,20.78131,2.24749],"size":[0,2,0.5],"inflate":0.005,"pivot":[-2.6,34.23131,3.3334],"rotation":[77.5,0,0],"uv":{"east":{"uv":[8,13.5],"uv_size":[0.25,1]},"west":{"uv":[8,13.5],"uv_size":[0.25,1]}}}]},{"name":"bone11","parent":"3seg","pivot":[-1.71476,30.66212,14.58732],"rotation":[70.01152,0.54094,2.44081],"cubes":[{"origin":[-1.9225,30.38613,14.34529],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"east":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"south":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"west":{"uv":[9.25,8.75],"uv_size":[0.25,0.25]},"up":{"uv":[9.5,9],"uv_size":[-0.25,-0.25]},"down":{"uv":[9.5,9],"uv_size":[-0.25,-0.25]}}},{"origin":[-1.6725,30.58613,14.37029],"size":[0,1,1.5],"inflate":0.005,"pivot":[-1.6725,31.08613,15.12029],"rotation":[40.25298,19.58991,15.84766],"uv":{"east":{"uv":[12.75,14.25],"uv_size":[-0.75,0.5]},"west":{"uv":[12,14.25],"uv_size":[0.75,0.5]}}},{"origin":[-1.6725,29.86318,14.37029],"size":[0,0.5,1],"inflate":0.005,"pivot":[-1.6725,30.11318,15.12029],"rotation":[-40.25298,19.58991,-15.84766],"uv":{"east":{"uv":[12.5,14.75],"uv_size":[-0.5,-0.25]},"west":{"uv":[12,14.75],"uv_size":[0.5,-0.25]}}},{"origin":[-1.6725,30.58613,13.30037],"size":[0,1,1.5],"inflate":0.005,"pivot":[-1.6725,31.08613,14.05037],"rotation":[-40.25298,-19.58991,15.84766],"uv":{"east":{"uv":[12,14.25],"uv_size":[0.75,0.5]},"west":{"uv":[12.75,14.25],"uv_size":[-0.75,0.5]}}},{"origin":[-1.6725,29.86318,13.80037],"size":[0,0.5,1],"inflate":0.005,"pivot":[-1.6725,30.11318,14.05037],"rotation":[40.25298,-19.58991,-15.84766],"uv":{"east":{"uv":[12,14.75],"uv_size":[0.5,-0.25]},"west":{"uv":[12.5,14.75],"uv_size":[-0.5,-0.25]}}}]},{"name":"bone12","parent":"3seg","pivot":[-1.43742,25.16575,6.78088],"rotation":[68.74,3.60357,5.83997],"cubes":[{"origin":[-1.64516,24.63976,6.28885],"size":[0.5,1,1],"pivot":[-1.39516,25.13976,6.78885],"rotation":[-45,0,0],"uv":{"north":{"uv":[12,15.25],"uv_size":[0.25,0.25]},"east":{"uv":[12,15.25],"uv_size":[0.25,0.25]},"south":{"uv":[12,15.25],"uv_size":[0.25,0.25]},"west":{"uv":[12,15.25],"uv_size":[0.25,0.25]},"up":{"uv":[12.25,15.5],"uv_size":[-0.25,-0.25]},"down":{"uv":[12.25,15.5],"uv_size":[-0.25,-0.25]}}},{"origin":[-1.39516,24.08976,6.56385],"size":[0,2,2.5],"inflate":0.005,"pivot":[-1.39516,25.58976,7.31385],"rotation":[40.25298,19.58991,15.84766],"uv":{"east":{"uv":[9.5,14.5],"uv_size":[-1.25,1]},"west":{"uv":[8.25,14.5],"uv_size":[1.25,1]}}},{"origin":[-1.39516,24.3668,6.56385],"size":[0,0.5,3],"inflate":0.005,"pivot":[-1.39516,24.6168,7.31385],"rotation":[-60.25298,19.58991,-15.84766],"uv":{"east":{"uv":[12.5,14.75],"uv_size":[-0.5,-0.25]},"west":{"uv":[12,14.75],"uv_size":[0.5,-0.25]}}},{"origin":[-1.39516,24.08976,4.49393],"size":[0,2,2.5],"inflate":0.005,"pivot":[-1.39516,25.58976,6.24393],"rotation":[-40.25298,-19.58991,15.84766],"uv":{"east":{"uv":[8.25,14.5],"uv_size":[1.25,1]},"west":{"uv":[9.5,14.5],"uv_size":[-1.25,1]}}},{"origin":[-1.39516,24.3668,3.99393],"size":[0,0.5,3],"inflate":0.005,"pivot":[-1.39516,24.6168,6.24393],"rotation":[62.75298,-19.58991,-15.84766],"uv":{"east":{"uv":[12,14.75],"uv_size":[0.5,-0.25]},"west":{"uv":[12.5,14.75],"uv_size":[-0.5,-0.25]}}}]},{"name":"left_wing","parent":"root","pivot":[2.44,20.38747,3.06641]},{"name":"4seg2","parent":"left_wing","pivot":[3.4,18.60934,3.03301],"rotation":[-115,57.5,0],"cubes":[{"origin":[2.3627,26.73696,-0.98509],"size":[1,1,6],"pivot":[2.8627,24.52985,9.75333],"rotation":[57.5,0,0],"uv":{"north":{"uv":[1,14],"uv_size":[-0.5,0.5]},"east":{"uv":[13,1.5],"uv_size":[-3,0.5]},"south":{"uv":[14.5,0.5],"uv_size":[-0.5,0.5]},"west":{"uv":[12,5],"uv_size":[-3,0.5]},"up":{"uv":[4.5,11.5],"uv_size":[-0.5,3]},"down":{"uv":[5,14.5],"uv_size":[-0.5,-3]}}},{"origin":[2.3627,23.14958,5.05937],"size":[1,1,6],"pivot":[2.8627,22.16404,8.31313],"rotation":[30,0,0],"uv":{"north":{"uv":[1.5,14],"uv_size":[-0.5,0.5]},"east":{"uv":[14,9.5],"uv_size":[-3,0.5]},"south":{"uv":[14.5,1],"uv_size":[-0.5,0.5]},"west":{"uv":[14,9],"uv_size":[-3,0.5]},"up":{"uv":[9,11.5],"uv_size":[-0.5,3]},"down":{"uv":[9.5,14.5],"uv_size":[-0.5,-3]}}}]},{"name":"1seg2","parent":"left_wing","pivot":[2.6,20.60934,3.23301],"rotation":[0,57.5,0],"cubes":[{"origin":[1.6,29.84657,0.67109],"size":[2,2,9],"pivot":[2.6,28.13946,11.40951],"rotation":[57.5,0,0],"uv":{"north":{"uv":[6,12.5],"uv_size":[-1,1]},"east":{"uv":[4.5,1],"uv_size":[-4.5,1]},"south":{"uv":[13.5,5.5],"uv_size":[-1,1]},"west":{"uv":[4.5,0],"uv_size":[-4.5,1]},"up":{"uv":[1,2],"uv_size":[-1,4.5]},"down":{"uv":[2,6.5],"uv_size":[-1,-4.5]}}}]},{"name":"11seg2","parent":"1seg2","pivot":[2.6153,27.64381,7.80831],"cubes":[{"origin":[1.85,28.875,8.15576],"size":[1.5,1.5,7],"pivot":[2.6,28.13946,11.40951],"rotation":[30,0,0],"uv":{"north":{"uv":[7,12.5],"uv_size":[-1,1]},"east":{"uv":[10,1.25],"uv_size":[-3.5,0.75]},"south":{"uv":[13.25,7.5],"uv_size":[-0.75,0.75]},"west":{"uv":[10,0.25],"uv_size":[-3.5,0.75]},"up":{"uv":[8.75,2],"uv_size":[-0.75,3.5]},"down":{"uv":[4.75,11.5],"uv_size":[-0.75,-3.5]}}},{"origin":[1.85,28.875,10.15576],"size":[1.5,1.5,1],"inflate":0.2,"pivot":[2.6,28.13946,11.40951],"rotation":[30,0,0],"uv":{"east":{"uv":[13.5,1.75],"uv_size":[-0.5,0.75]},"west":{"uv":[13,2.5],"uv_size":[0.5,-0.75]},"up":{"uv":[13.5,2.5],"uv_size":[-0.5,-0.75],"uv_rotation":90},"down":{"uv":[13,1.75],"uv_size":[0.5,0.75],"uv_rotation":90}}},{"origin":[2.1,30.13648,14.23496],"size":[1,1,7],"pivot":[2.6,28.13946,11.40951],"rotation":[12.5,0,0],"uv":{"north":{"uv":[12.5,2.25],"uv_size":[-3.5,0.5]},"east":{"uv":[12.5,2.25],"uv_size":[-3.5,0.5]},"south":{"uv":[14.75,3.5],"uv_size":[-0.5,0.5]},"west":{"uv":[9,2.75],"uv_size":[3.5,-0.5]},"up":{"uv":[12.5,2.75],"uv_size":[-3.5,-0.5],"uv_rotation":90},"down":{"uv":[9,2.25],"uv_size":[3.5,0.5],"uv_rotation":90}}},{"origin":[2.66122,25.27406,7.16037],"size":[0,5,17],"inflate":0.005,"pivot":[2.66122,22.56695,13.8988],"rotation":[25,0,0],"uv":{"east":{"uv":[24.5,0],"uv_size":[-8.5,2.5]},"west":{"uv":[16,0],"uv_size":[8.5,2.5]}}},{"origin":[2.6,28.03648,13.18496],"size":[0,3,0.5],"inflate":0.005,"uv":{"east":{"uv":[8.25,13],"uv_size":[-0.25,1.5]},"west":{"uv":[8.25,13],"uv_size":[-0.25,1.5]}}},{"origin":[1.6,27.03648,12.43496],"size":[2,2,2],"pivot":[2.6,27.03648,13.43496],"rotation":[0,-17.5,0],"uv":{"north":{"uv":[1,13],"uv_size":[1,1]},"east":{"uv":[2,13],"uv_size":[-1,1]},"south":{"uv":[1,13],"uv_size":[1,1]},"west":{"uv":[2,13],"uv_size":[-1,1]},"up":{"uv":[1,15.5],"uv_size":[1,-1]},"down":{"uv":[2,15.5],"uv_size":[1,-1]}}},{"origin":[1.55594,30.23199,12.66496],"size":[0,0.5,1],"inflate":0.005,"pivot":[1.55594,30.48199,12.91496],"rotation":[40.253,19.5899,15.8477],"uv":{"east":{"uv":[13,15.5],"uv_size":[0.5,-0.25]},"west":{"uv":[13.5,15.5],"uv_size":[-0.5,-0.25]}}},{"origin":[1.55594,30.95494,12.16496],"size":[0,1,1.5],"inflate":0.005,"pivot":[1.55594,31.45494,12.91496],"rotation":[-40.253,19.5899,-15.8477],"uv":{"east":{"uv":[13,15],"uv_size":[0.75,0.5]},"west":{"uv":[13.75,15],"uv_size":[-0.75,0.5]}}},{"origin":[1.55594,30.23199,13.23487],"size":[0,0.5,1],"inflate":0.005,"pivot":[1.55594,30.48199,13.98487],"rotation":[-40.253,-19.5899,15.8477],"uv":{"east":{"uv":[13.5,15.5],"uv_size":[-0.5,-0.25]},"west":{"uv":[13,15.5],"uv_size":[0.5,-0.25]}}},{"origin":[1.55594,30.95494,13.23487],"size":[0,1,1.5],"inflate":0.005,"pivot":[1.55594,31.45494,13.98487],"rotation":[40.253,-19.5899,-15.8477],"uv":{"east":{"uv":[13.75,15],"uv_size":[-0.75,0.5]},"west":{"uv":[13,15],"uv_size":[0.75,0.5]}}},{"origin":[1.30594,30.75494,13.20987],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"east":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"south":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"west":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"up":{"uv":[9.25,9],"uv_size":[0.25,-0.25]},"down":{"uv":[9.25,9],"uv_size":[0.25,-0.25]}}},{"origin":[1.8759,31.88831,18.72218],"size":[0,0.5,1],"inflate":0.005,"pivot":[1.8759,32.13831,18.97218],"rotation":[31.8983,19.0333,12.9164],"uv":{"east":{"uv":[12,14.75],"uv_size":[0.5,-0.25]},"west":{"uv":[12.5,14.75],"uv_size":[-0.5,-0.25]}}},{"origin":[1.84951,32.53648,18.29051],"size":[0,1,1.5],"inflate":0.005,"pivot":[1.84951,33.03648,19.04051],"rotation":[-40.253,19.5899,-15.8477],"uv":{"east":{"uv":[12,14.25],"uv_size":[0.75,0.5]},"west":{"uv":[12.75,14.25],"uv_size":[-0.75,0.5]}}},{"origin":[1.84951,31.81352,19.36042],"size":[0,0.5,1],"inflate":0.005,"pivot":[1.84951,32.06352,20.11042],"rotation":[-40.253,-19.5899,15.8477],"uv":{"east":{"uv":[12.5,14.75],"uv_size":[-0.5,-0.25]},"west":{"uv":[12,14.75],"uv_size":[0.5,-0.25]}}},{"origin":[1.84951,32.53648,19.36042],"size":[0,1,1.5],"inflate":0.005,"pivot":[1.84951,33.03648,20.11042],"rotation":[40.253,-19.5899,-15.8477],"uv":{"east":{"uv":[12.75,14.25],"uv_size":[-0.75,0.5]},"west":{"uv":[12,14.25],"uv_size":[0.75,0.5]}}},{"origin":[1.59951,32.33648,19.33542],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"east":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"south":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"west":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"up":{"uv":[9.25,9],"uv_size":[0.25,-0.25]},"down":{"uv":[9.25,9],"uv_size":[0.25,-0.25]}}}]},{"name":"bone15","parent":"11seg2","pivot":[2.6,32.13648,19.73496],"cubes":[{"origin":[1.35,27.03648,18.48496],"size":[2.5,0.5,2.5],"pivot":[2.6,29.03648,19.73496],"rotation":[0,22.5,0],"uv":{"north":{"uv":[14.75,4.5],"uv_size":[-1.25,0.25]},"east":{"uv":[14.75,12],"uv_size":[-1.25,0.25]},"south":{"uv":[14.75,11.5],"uv_size":[-1.25,0.25]},"west":{"uv":[12.75,13.5],"uv_size":[-1.25,0.25]},"up":{"uv":[12.75,0],"uv_size":[-1.25,1.25]},"down":{"uv":[8.25,12.75],"uv_size":[-1.25,-1.25]}}},{"origin":[1.6,30.53648,18.73496],"size":[2,0.5,2],"pivot":[2.6,29.03648,19.73496],"rotation":[0,22.5,0],"uv":{"north":{"uv":[14,8.5],"uv_size":[1,0.25]},"east":{"uv":[15,8.5],"uv_size":[-1,0.25]},"south":{"uv":[15,7],"uv_size":[-1,0.25]},"west":{"uv":[15,6.5],"uv_size":[-1,0.25]},"up":{"uv":[12.5,12.5],"uv_size":[-1,1]},"down":{"uv":[13.5,12.5],"uv_size":[-1,-1]}}},{"origin":[1.35,29.53648,18.48496],"size":[2.5,1,2.5],"pivot":[2.6,29.03648,19.73496],"rotation":[0,22.5,0],"uv":{"north":{"uv":[13.75,8.5],"uv_size":[-1.25,0.5]},"east":{"uv":[14.75,3],"uv_size":[-1.25,0.5]},"south":{"uv":[14.25,10.5],"uv_size":[-1.25,0.5]},"west":{"uv":[14.25,10],"uv_size":[-1.25,0.5]},"up":{"uv":[11.25,10],"uv_size":[-1.25,1.25]},"down":{"uv":[12.25,8.75],"uv_size":[-1.25,-1.25]}}},{"origin":[1.1,27.53648,18.23496],"size":[3,2,3],"pivot":[2.6,29.03648,19.73496],"rotation":[0,22.5,0],"uv":{"north":{"uv":[11,11.5],"uv_size":[1.5,1]},"east":{"uv":[12.5,11.5],"uv_size":[-1.5,1]},"south":{"uv":[11,11.5],"uv_size":[1.5,1]},"west":{"uv":[12.5,11.5],"uv_size":[-1.5,1]},"up":{"uv":[6.5,3.5],"uv_size":[1.5,-1.5]},"down":{"uv":[10,1.5],"uv_size":[1.5,-1.5]}}},{"origin":[2.6,30.53648,19.48496],"size":[0,2,0.5],"inflate":0.005,"uv":{"east":{"uv":[8.25,13.5],"uv_size":[-0.25,1]},"west":{"uv":[8.25,13.5],"uv_size":[-0.25,1]}}}]},{"name":"bone16","parent":"1seg2","pivot":[2.6,30.18648,13.43496]},{"name":"bone17","parent":"1seg2","pivot":[1.59177,32.61247,19.57746],"rotation":[-7.5,-2.5,0]},{"name":"bone18","parent":"1seg2","pivot":[1.29821,31.03093,13.45191],"rotation":[14.58719,6.60639,11.36294]},{"name":"bone19","parent":"1seg2","pivot":[1.34483,24.93649,6.2187],"rotation":[-2.69345,-5.49455,8.22371],"cubes":[{"origin":[1.05257,24.4105,5.72666],"size":[0.5,1,1],"pivot":[1.30257,24.9105,6.22666],"rotation":[-45,0,0],"uv":{"north":{"uv":[12.25,14.5],"uv_size":[-0.25,0.25]},"east":{"uv":[12.25,14.5],"uv_size":[-0.25,0.25]},"south":{"uv":[12.25,14.5],"uv_size":[-0.25,0.25]},"west":{"uv":[12.25,14.5],"uv_size":[-0.25,0.25]},"up":{"uv":[12,14.75],"uv_size":[0.25,-0.25]},"down":{"uv":[12,14.75],"uv_size":[0.25,-0.25]}}},{"origin":[1.30257,23.8605,6.00166],"size":[0,2,2.5],"inflate":0.005,"pivot":[1.30257,25.3605,6.75166],"rotation":[40.25298,-19.58991,-15.84766],"uv":{"east":{"uv":[12,14.5],"uv_size":[-1.25,1]},"west":{"uv":[10.75,14.5],"uv_size":[1.25,1]}}},{"origin":[1.30257,24.13755,6.00166],"size":[0,0.5,3],"inflate":0.005,"pivot":[1.30257,24.38755,6.75166],"rotation":[-60.25298,-19.58991,15.84766],"uv":{"east":{"uv":[12.5,15.5],"uv_size":[-0.5,-0.25]},"west":{"uv":[12,15.5],"uv_size":[0.5,-0.25]}}},{"origin":[1.30257,23.8605,3.93175],"size":[0,2,2.5],"inflate":0.005,"pivot":[1.30257,25.3605,5.68175],"rotation":[-40.25298,19.58991,-15.84766],"uv":{"east":{"uv":[10.75,14.5],"uv_size":[1.25,1]},"west":{"uv":[12,14.5],"uv_size":[-1.25,1]}}},{"origin":[1.30257,24.13755,3.43175],"size":[0,0.5,3],"inflate":0.005,"pivot":[1.30257,24.38755,5.68175],"rotation":[62.75298,19.58991,15.84766],"uv":{"east":{"uv":[12,15.5],"uv_size":[0.5,-0.25]},"west":{"uv":[12.5,15.5],"uv_size":[-0.5,-0.25]}}}]},{"name":"2seg2","parent":"left_wing","pivot":[2.4,20.60934,3.03301],"rotation":[-32.5,57.5,0],"cubes":[{"origin":[1.4,29.84657,0.47109],"size":[2,2,9],"inflate":0.01,"pivot":[2.4,28.13946,11.20951],"rotation":[57.5,0,0],"uv":{"north":{"uv":[6,12.5],"uv_size":[-1,1]},"east":{"uv":[4.5,1],"uv_size":[-4.5,1]},"south":{"uv":[13.5,5.5],"uv_size":[-1,1]},"west":{"uv":[4.5,0],"uv_size":[-4.5,1]},"up":{"uv":[1,2],"uv_size":[-1,4.5]},"down":{"uv":[2,6.5],"uv_size":[-1,-4.5]}}},{"origin":[2.4,23.84657,1.57109],"size":[0,5,17],"inflate":0.005,"pivot":[2.4,28.13946,11.20951],"rotation":[27.5,0,0],"uv":{"east":{"uv":[24.5,0],"uv_size":[-8.5,2.5]},"west":{"uv":[16,0],"uv_size":[8.5,2.5]}}}]},{"name":"22seg2","parent":"2seg2","pivot":[2.35928,27.61111,8.18846],"cubes":[{"origin":[1.65,28.875,7.95576],"size":[1.5,1.5,7],"pivot":[2.4,28.13946,11.20951],"rotation":[30,0,0],"uv":{"north":{"uv":[7,12.5],"uv_size":[-1,1]},"east":{"uv":[10,1.25],"uv_size":[-3.5,0.75]},"south":{"uv":[13.25,7.5],"uv_size":[-0.75,0.75]},"west":{"uv":[10,0.25],"uv_size":[-3.5,0.75]},"up":{"uv":[8.75,2],"uv_size":[-0.75,3.5]},"down":{"uv":[4.75,11.5],"uv_size":[-0.75,-3.5]}}},{"origin":[1.65,29,10.15576],"size":[1.5,1.5,1],"inflate":0.2,"pivot":[2.6,28.13946,11.40951],"rotation":[30,0,0],"uv":{"east":{"uv":[13.5,1.75],"uv_size":[-0.5,0.75]},"west":{"uv":[13,2.5],"uv_size":[0.5,-0.75]},"up":{"uv":[13.5,2.5],"uv_size":[-0.5,-0.75],"uv_rotation":90},"down":{"uv":[13,1.75],"uv_size":[0.5,0.75],"uv_rotation":90}}},{"origin":[1.9,30.13648,14.03496],"size":[1,1,5],"pivot":[2.4,28.13946,11.20951],"rotation":[12.5,0,0],"uv":{"north":{"uv":[11.5,2.25],"uv_size":[-2.5,0.5]},"east":{"uv":[11.5,2.25],"uv_size":[-2.5,0.5]},"south":{"uv":[14.75,4],"uv_size":[-0.5,0.5]},"west":{"uv":[9,2.75],"uv_size":[2.5,-0.5]},"up":{"uv":[11.5,2.75],"uv_size":[-2.5,-0.5],"uv_rotation":90},"down":{"uv":[9,2.25],"uv_size":[2.5,0.5],"uv_rotation":90}}}]},{"name":"bone20","parent":"22seg2","pivot":[1.50659,30.82323,12.81887],"rotation":[30.30783,-3.08207,1.65378],"cubes":[{"origin":[1.21433,30.29724,12.32684],"size":[0.5,1,1],"pivot":[1.46433,30.79724,12.82684],"rotation":[-45,0,0],"uv":{"north":{"uv":[11.75,14.75],"uv_size":[-0.25,0.25]},"east":{"uv":[11.75,14.75],"uv_size":[-0.25,0.25]},"south":{"uv":[11.75,14.75],"uv_size":[-0.25,0.25]},"west":{"uv":[11.75,14.75],"uv_size":[-0.25,0.25]},"up":{"uv":[11.5,15],"uv_size":[0.25,-0.25]},"down":{"uv":[11.5,15],"uv_size":[0.25,-0.25]}}},{"origin":[1.46433,29.74724,12.60184],"size":[0,2,2.5],"inflate":0.005,"pivot":[1.46433,31.24724,13.35184],"rotation":[40.25298,-19.58991,-15.84766],"uv":{"east":{"uv":[10.75,14.5],"uv_size":[-1.25,1]},"west":{"uv":[9.5,14.5],"uv_size":[1.25,1]}}},{"origin":[1.46433,30.02428,12.60184],"size":[0,0.5,3],"inflate":0.005,"pivot":[1.46433,30.27428,13.35184],"rotation":[-60.25298,-19.58991,15.84766],"uv":{"east":{"uv":[13.5,15.5],"uv_size":[-0.5,-0.25]},"west":{"uv":[13,15.5],"uv_size":[0.5,-0.25]}}},{"origin":[1.46433,29.74724,10.53192],"size":[0,2,2.5],"inflate":0.005,"pivot":[1.46433,31.24724,12.28192],"rotation":[-40.25298,19.58991,-15.84766],"uv":{"east":{"uv":[9.5,14.5],"uv_size":[1.25,1]},"west":{"uv":[10.75,14.5],"uv_size":[-1.25,1]}}},{"origin":[1.46433,30.02428,10.03192],"size":[0,0.5,3],"inflate":0.005,"pivot":[1.46433,30.27428,12.28192],"rotation":[62.75298,19.58991,15.84766],"uv":{"east":{"uv":[13,15.5],"uv_size":[0.5,-0.25]},"west":{"uv":[13.5,15.5],"uv_size":[-0.5,-0.25]}}}]},{"name":"bone21","parent":"22seg2","pivot":[1.75614,32.0598,17.47901],"rotation":[25.02473,-2.10829,-1.34386],"cubes":[{"origin":[1.46387,31.78381,17.23697],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"east":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"south":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"west":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"up":{"uv":[9.25,9],"uv_size":[0.25,-0.25]},"down":{"uv":[9.25,9],"uv_size":[0.25,-0.25]}}},{"origin":[1.71387,31.98381,17.26197],"size":[0,1,1.5],"inflate":0.005,"pivot":[1.71387,32.48381,18.01197],"rotation":[40.25298,-19.58991,-15.84766],"uv":{"east":{"uv":[13.75,15],"uv_size":[-0.75,0.5]},"west":{"uv":[13,15],"uv_size":[0.75,0.5]}}},{"origin":[1.71387,31.26085,17.26197],"size":[0,0.5,1],"inflate":0.005,"pivot":[1.71387,31.51085,18.01197],"rotation":[-40.25298,-19.58991,15.84766],"uv":{"east":{"uv":[13.5,15.5],"uv_size":[-0.5,-0.25]},"west":{"uv":[13,15.5],"uv_size":[0.5,-0.25]}}},{"origin":[1.71387,31.98381,16.19206],"size":[0,1,1.5],"inflate":0.005,"pivot":[1.71387,32.48381,16.94206],"rotation":[-40.25298,19.58991,-15.84766],"uv":{"east":{"uv":[13,15],"uv_size":[0.75,0.5]},"west":{"uv":[13.75,15],"uv_size":[-0.75,0.5]}}},{"origin":[1.71387,31.26085,16.69206],"size":[0,0.5,1],"inflate":0.005,"pivot":[1.71387,31.51085,16.94206],"rotation":[40.25298,19.58991,15.84766],"uv":{"east":{"uv":[13,15.5],"uv_size":[0.5,-0.25]},"west":{"uv":[13.5,15.5],"uv_size":[-0.5,-0.25]}}}]},{"name":"bone22","parent":"22seg2","pivot":[2.6,31.47326,17.76036],"cubes":[{"origin":[1.6,27.53648,17.83496],"size":[2,2,2],"pivot":[2.6,29.78648,18.83496],"rotation":[33.7424,-14.6914,-9.61518],"uv":{"north":{"uv":[14,13.5],"uv_size":[1,1]},"east":{"uv":[15,13.5],"uv_size":[-1,1]},"south":{"uv":[14,13.5],"uv_size":[1,1]},"west":{"uv":[15,13.5],"uv_size":[-1,1]},"up":{"uv":[14,16],"uv_size":[1,-1]},"down":{"uv":[15,16],"uv_size":[1,-1]}}},{"origin":[2.6,29.53648,18.58496],"size":[0,3,0.5],"inflate":0.005,"pivot":[2.6,29.78648,18.83496],"rotation":[32.5,0,0],"uv":{"east":{"uv":[8.25,13],"uv_size":[-0.25,1.5]},"west":{"uv":[8.25,13],"uv_size":[-0.25,1.5]}}}]},{"name":"bone23","parent":"22seg2","pivot":[2.33878,30.15116,12.93502],"cubes":[{"origin":[1.08878,25.36796,13.45811],"size":[2.5,0.5,2.5],"pivot":[2.33878,27.36796,14.70811],"rotation":[34.58859,18.82943,12.54707],"uv":{"north":{"uv":[15.5,10],"uv_size":[-1.25,0.25]},"east":{"uv":[14.25,10],"uv_size":[1.25,0.25]},"south":{"uv":[15.5,10],"uv_size":[-1.25,0.25]},"west":{"uv":[14.25,10],"uv_size":[1.25,0.25]},"down":{"uv":[15.25,10],"uv_size":[-1.25,-1.25]}}},{"origin":[0.83878,25.86796,13.20811],"size":[3,2,3],"pivot":[2.33878,27.36796,14.70811],"rotation":[34.58859,18.82943,12.54707],"uv":{"north":{"uv":[13.5,4.75],"uv_size":[1.5,1]},"east":{"uv":[15,4.75],"uv_size":[-1.5,1]},"south":{"uv":[13.5,4.75],"uv_size":[1.5,1]},"west":{"uv":[15,4.75],"uv_size":[-1.5,1]},"up":{"uv":[14.5,1.5],"uv_size":[1.5,-1.5]},"down":{"uv":[11.5,1.5],"uv_size":[1.5,-1.5]}}},{"origin":[1.08878,27.86796,13.45811],"size":[2.5,1,2.5],"pivot":[2.33878,27.36796,14.70811],"rotation":[34.58859,18.82943,12.54707],"uv":{"north":{"uv":[10.25,4.25],"uv_size":[-1.25,0.5]},"east":{"uv":[10.25,3.75],"uv_size":[-1.25,0.5]},"south":{"uv":[12.25,3.25],"uv_size":[-1.25,0.5]},"west":{"uv":[12.25,2.75],"uv_size":[-1.25,0.5]},"up":{"uv":[11.5,3.75],"uv_size":[-1.25,1.25]},"down":{"uv":[12.25,8.75],"uv_size":[-1.25,-1.25]}}},{"origin":[1.33878,28.86796,13.70811],"size":[2,0.5,2],"pivot":[2.33878,27.36796,14.70811],"rotation":[34.58859,18.82943,12.54707],"uv":{"north":{"uv":[15,1.5],"uv_size":[-1,0.25]},"east":{"uv":[10,3],"uv_size":[-1,0.25]},"south":{"uv":[10,3.25],"uv_size":[-1,0.25]},"west":{"uv":[10,2.75],"uv_size":[-1,0.25]},"up":{"uv":[11,2.75],"uv_size":[-1,1]},"down":{"uv":[13.5,12.5],"uv_size":[-1,-1]}}},{"origin":[2.33878,21.94265,17.34934],"size":[0,2,0.5],"inflate":0.005,"pivot":[2.33878,18.94564,4.27389],"rotation":[32.5,0,0],"uv":{"east":{"uv":[8.25,13.5],"uv_size":[-0.25,1]},"west":{"uv":[8.25,13.5],"uv_size":[-0.25,1]}}}]},{"name":"bone24","parent":"2seg2","pivot":[2.6,26.88289,7.93647],"cubes":[{"origin":[1.6,23.53648,7.63496],"size":[2,2,2],"pivot":[2.6,25.78648,8.63496],"rotation":[38.76479,30.89218,22.40559],"uv":{"north":{"uv":[5.75,13.5],"uv_size":[1,1]},"east":{"uv":[6.75,13.5],"uv_size":[-1,1]},"south":{"uv":[5.75,13.5],"uv_size":[1,1]},"west":{"uv":[6.75,13.5],"uv_size":[-1,1]},"up":{"uv":[5.75,16],"uv_size":[1,-1]},"down":{"uv":[6.75,16],"uv_size":[1,-1]}}},{"origin":[2.6,25.53648,8.38496],"size":[0,3,0.5],"inflate":0.005,"pivot":[2.6,25.78648,8.63496],"rotation":[32.5,0,0],"uv":{"east":{"uv":[8.25,13],"uv_size":[-0.25,1.5]},"west":{"uv":[8.25,13],"uv_size":[-0.25,1.5]}}}]},{"name":"bone25","parent":"2seg2","pivot":[1.18756,27.08759,7.72152],"rotation":[45.94975,-0.25012,2.52444],"cubes":[{"origin":[0.8953,26.8116,7.47948],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[9.5,13.5],"uv_size":[-0.25,0.25]},"east":{"uv":[9.5,13.5],"uv_size":[-0.25,0.25]},"south":{"uv":[9.5,13.5],"uv_size":[-0.25,0.25]},"west":{"uv":[9.5,13.5],"uv_size":[-0.25,0.25]},"up":{"uv":[9.25,13.75],"uv_size":[0.25,-0.25]},"down":{"uv":[9.25,13.75],"uv_size":[0.25,-0.25]}}},{"origin":[1.1453,27.0116,7.50448],"size":[0,1,1.5],"inflate":0.005,"pivot":[1.1453,27.5116,8.25448],"rotation":[40.25298,-19.58991,-15.84766],"uv":{"east":{"uv":[12.75,15],"uv_size":[-0.75,0.5]},"west":{"uv":[12,15],"uv_size":[0.75,0.5]}}},{"origin":[1.1453,26.28864,7.50448],"size":[0,0.5,1],"inflate":0.005,"pivot":[1.1453,26.53864,8.25448],"rotation":[-40.25298,-19.58991,15.84766],"uv":{"east":{"uv":[12.5,15.5],"uv_size":[-0.5,-0.25]},"west":{"uv":[12,15.5],"uv_size":[0.5,-0.25]}}},{"origin":[1.1453,27.0116,6.43457],"size":[0,1,1.5],"inflate":0.005,"pivot":[1.1453,27.5116,7.18457],"rotation":[-40.25298,19.58991,-15.84766],"uv":{"east":{"uv":[12,15],"uv_size":[0.75,0.5]},"west":{"uv":[12.75,15],"uv_size":[-0.75,0.5]}}},{"origin":[1.1453,26.28864,6.93457],"size":[0,0.5,1],"inflate":0.005,"pivot":[1.1453,26.53864,7.18457],"rotation":[40.25298,19.58991,15.84766],"uv":{"east":{"uv":[12,15.5],"uv_size":[0.5,-0.25]},"west":{"uv":[12.5,15.5],"uv_size":[-0.5,-0.25]}}}]},{"name":"3seg2","parent":"left_wing","pivot":[2.4,20.60934,3.03301],"rotation":[-77.5,57.5,0],"cubes":[{"origin":[1.65,30.09657,0.47109],"size":[1.5,1.5,9],"pivot":[2.4,28.13946,11.20951],"rotation":[57.5,0,0],"uv":{"north":{"uv":[14.25,7.5],"uv_size":[-0.75,0.75]},"east":{"uv":[12.5,5.5],"uv_size":[-4.5,0.75]},"south":{"uv":[10.25,13.5],"uv_size":[-0.75,0.75]},"west":{"uv":[8,5.5],"uv_size":[4.5,0.75]},"up":{"uv":[0.75,8.5],"uv_size":[-0.75,4.5]},"down":{"uv":[1.75,13],"uv_size":[-0.75,-4.5]}}},{"origin":[1.65,26.86106,4.4891],"size":[1.5,1.5,1],"inflate":0.2,"pivot":[2.4,27.86106,7.6891],"rotation":[55,0,0],"uv":{"east":{"uv":[13.5,1.75],"uv_size":[-0.5,0.75]},"west":{"uv":[13,2.5],"uv_size":[0.5,-0.75]},"up":{"uv":[13.5,2.5],"uv_size":[-0.5,-0.75],"uv_rotation":90},"down":{"uv":[13,1.75],"uv_size":[0.5,0.75],"uv_rotation":90}}},{"origin":[1.9,29.125,7.95576],"size":[1,1,5],"pivot":[2.4,28.13946,11.20951],"rotation":[30,0,0],"uv":{"north":{"uv":[14,13],"uv_size":[-0.5,0.5]},"east":{"uv":[15,2.5],"uv_size":[-2.5,0.5]},"south":{"uv":[14,13.5],"uv_size":[-0.5,0.5]},"west":{"uv":[12.5,2.5],"uv_size":[2.5,0.5]},"up":{"uv":[3.5,12],"uv_size":[-0.5,2.5]},"down":{"uv":[4,14.5],"uv_size":[-0.5,-2.5]}}},{"origin":[1.9,29.19161,12.44469],"size":[1,1,3],"pivot":[2.4,27.1946,9.61924],"rotation":[12.5,0,0],"uv":{"north":{"uv":[0.5,14],"uv_size":[-0.5,0.5]},"east":{"uv":[9.5,7.5],"uv_size":[-1.5,0.5]},"south":{"uv":[14.5,0],"uv_size":[-0.5,0.5]},"west":{"uv":[8,3.5],"uv_size":[-1.5,0.5]},"up":{"uv":[10,7.5],"uv_size":[-0.5,1.5]},"down":{"uv":[7.5,14.5],"uv_size":[-0.5,-1.5]}}},{"origin":[1.3994,23.65897,7.53347],"size":[2,2,2],"pivot":[2.3994,24.65897,8.53347],"rotation":[94.8493,11.53486,112.99008],"uv":{"north":{"uv":[1,13],"uv_size":[1,1]},"east":{"uv":[2,13],"uv_size":[-1,1]},"south":{"uv":[1,13],"uv_size":[1,1]},"west":{"uv":[2,13],"uv_size":[-1,1]},"up":{"uv":[1,15.5],"uv_size":[1,-1]},"down":{"uv":[2,15.5],"uv_size":[1,-1]}}},{"origin":[2.3994,23.38131,0.72125],"size":[0,2,0.5],"inflate":0.005,"pivot":[2.6,28.23131,3.3334],"rotation":[77.5,0,0],"uv":{"east":{"uv":[8.25,13.5],"uv_size":[-0.25,1]},"west":{"uv":[8.25,13.5],"uv_size":[-0.25,1]}}},{"origin":[2.4,23.4341,7.12034],"size":[0,3,9],"inflate":0.005,"pivot":[2.4,27.1341,11.62034],"rotation":[-12.5,0,0],"uv":{"east":{"uv":[16,8.5],"uv_size":[1.5,-4.5],"uv_rotation":90},"west":{"uv":[17.5,8.5],"uv_size":[-1.5,-4.5],"uv_rotation":90}}}]},{"name":"bone26","parent":"3seg2","pivot":[2.42318,30.93698,14.33106],"cubes":[{"origin":[-0.01977,21.05897,6.97136],"size":[2,2,2],"pivot":[2.3994,30.65897,8.53347],"rotation":[94.8493,11.53486,112.99008],"uv":{"north":{"uv":[14,13.5],"uv_size":[1,1]},"east":{"uv":[15,13.5],"uv_size":[-1,1]},"south":{"uv":[14,13.5],"uv_size":[1,1]},"west":{"uv":[15,13.5],"uv_size":[-1,1]},"up":{"uv":[14,16],"uv_size":[1,-1]},"down":{"uv":[15,16],"uv_size":[1,-1]}}},{"origin":[2.42318,20.78131,2.24749],"size":[0,2,0.5],"inflate":0.005,"pivot":[2.6,34.23131,3.3334],"rotation":[77.5,0,0],"uv":{"east":{"uv":[8.25,13.5],"uv_size":[-0.25,1]},"west":{"uv":[8.25,13.5],"uv_size":[-0.25,1]}}}]},{"name":"bone27","parent":"3seg2","pivot":[1.71476,30.66212,14.58732],"rotation":[70.01152,-0.54094,-2.44081],"cubes":[{"origin":[1.4225,30.38613,14.34529],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"east":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"south":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"west":{"uv":[9.5,8.75],"uv_size":[-0.25,0.25]},"up":{"uv":[9.25,9],"uv_size":[0.25,-0.25]},"down":{"uv":[9.25,9],"uv_size":[0.25,-0.25]}}},{"origin":[1.6725,30.58613,14.37029],"size":[0,1,1.5],"inflate":0.005,"pivot":[1.6725,31.08613,15.12029],"rotation":[40.25298,-19.58991,-15.84766],"uv":{"east":{"uv":[12.75,14.25],"uv_size":[-0.75,0.5]},"west":{"uv":[12,14.25],"uv_size":[0.75,0.5]}}},{"origin":[1.6725,29.86318,14.37029],"size":[0,0.5,1],"inflate":0.005,"pivot":[1.6725,30.11318,15.12029],"rotation":[-40.25298,-19.58991,15.84766],"uv":{"east":{"uv":[12.5,14.75],"uv_size":[-0.5,-0.25]},"west":{"uv":[12,14.75],"uv_size":[0.5,-0.25]}}},{"origin":[1.6725,30.58613,13.30037],"size":[0,1,1.5],"inflate":0.005,"pivot":[1.6725,31.08613,14.05037],"rotation":[-40.25298,19.58991,-15.84766],"uv":{"east":{"uv":[12,14.25],"uv_size":[0.75,0.5]},"west":{"uv":[12.75,14.25],"uv_size":[-0.75,0.5]}}},{"origin":[1.6725,29.86318,13.80037],"size":[0,0.5,1],"inflate":0.005,"pivot":[1.6725,30.11318,14.05037],"rotation":[40.25298,19.58991,15.84766],"uv":{"east":{"uv":[12,14.75],"uv_size":[0.5,-0.25]},"west":{"uv":[12.5,14.75],"uv_size":[-0.5,-0.25]}}}]},{"name":"bone28","parent":"3seg2","pivot":[1.43742,25.16575,6.78088],"rotation":[68.74,-3.60357,-5.83997],"cubes":[{"origin":[1.14516,24.63976,6.28885],"size":[0.5,1,1],"pivot":[1.39516,25.13976,6.78885],"rotation":[-45,0,0],"uv":{"north":{"uv":[12.25,15.25],"uv_size":[-0.25,0.25]},"east":{"uv":[12.25,15.25],"uv_size":[-0.25,0.25]},"south":{"uv":[12.25,15.25],"uv_size":[-0.25,0.25]},"west":{"uv":[12.25,15.25],"uv_size":[-0.25,0.25]},"up":{"uv":[12,15.5],"uv_size":[0.25,-0.25]},"down":{"uv":[12,15.5],"uv_size":[0.25,-0.25]}}},{"origin":[1.39516,24.08976,6.56385],"size":[0,2,2.5],"inflate":0.005,"pivot":[1.39516,25.58976,7.31385],"rotation":[40.25298,-19.58991,-15.84766],"uv":{"east":{"uv":[9.5,14.5],"uv_size":[-1.25,1]},"west":{"uv":[8.25,14.5],"uv_size":[1.25,1]}}},{"origin":[1.39516,24.3668,6.56385],"size":[0,0.5,3],"inflate":0.005,"pivot":[1.39516,24.6168,7.31385],"rotation":[-60.25298,-19.58991,15.84766],"uv":{"east":{"uv":[12.5,14.75],"uv_size":[-0.5,-0.25]},"west":{"uv":[12,14.75],"uv_size":[0.5,-0.25]}}},{"origin":[1.39516,24.08976,4.49393],"size":[0,2,2.5],"inflate":0.005,"pivot":[1.39516,25.58976,6.24393],"rotation":[-40.25298,19.58991,-15.84766],"uv":{"east":{"uv":[8.25,14.5],"uv_size":[1.25,1]},"west":{"uv":[9.5,14.5],"uv_size":[-1.25,1]}}},{"origin":[1.39516,24.3668,3.99393],"size":[0,0.5,3],"inflate":0.005,"pivot":[1.39516,24.6168,6.24393],"rotation":[62.75298,19.58991,15.84766],"uv":{"east":{"uv":[12,14.75],"uv_size":[0.5,-0.25]},"west":{"uv":[12.5,14.75],"uv_size":[-0.5,-0.25]}}}]}]}]} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/ghoul.animation.json b/src/main/resources/assets/evolution/cosmetic/wings/ghoul.animation.json new file mode 100644 index 0000000..d4fd470 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/ghoul.animation.json @@ -0,0 +1 @@ +{"Idle":{"loop":true,"animation_length":3,"bones":{"left_wing":{"rotation":{"0.0":[0,0,0],"1.75":[0,15,0],"3.0":[0,0,0]}},"bone2":{"rotation":{"0.0":[-11.2179,41.2675,-16.7356],"1.375":[-23.7179,41.2675,-16.7356],"3.0":[-11.2179,41.2675,-16.7356]}},"bone3":{"rotation":{"0.0":[27.5,60,0],"1.5833":[2.5,60,0],"3.0":[27.5,60,0]}},"bone4":{"rotation":{"0.0":[15,32.5,0],"1.5":[20.5672,51.5844,8.1905],"3.0":[15,32.5,0]}},"bone5":{"rotation":{"0.0":[5,25,0],"1.5":[4.5352,2.5756,-1.9133],"3.0":[5,25,0]}},"bone6":{"rotation":{"0.0":[0,20,0],"1.5":[0,-17.5,0],"3.0":[0,20,0]}},"bone7":{"rotation":{"0.0":[-11.2179,-41.2675,16.7356],"1.125":[-15.1128,-55.8859,21.8865],"3.0":[-11.2179,-41.2675,16.7356]}},"bone8":{"rotation":{"0.0":[27.5,-60,0],"1.0833":[21.4652,-50.8826,7.3014],"3.0":[27.5,-60,0]}},"bone9":{"rotation":{"0.0":[15,-32.5,0],"1.625":[35,-32.5,0],"3.0":[15,-32.5,0]}},"bone10":{"rotation":{"0.0":[5,-25,0],"1.125":[-17.5,-25,0],"3.0":[5,-25,0]}},"bone11":{"rotation":{"0.0":[0,-20,0],"0.7083":[0,15,0],"3.0":[0,-20,0]}},"bone12":{"rotation":{"0.0":[3.0351,9.5328,17.7531],"1.2083":[-1.7105,9.8473,-9.9007],"3.0":[3.0351,9.5328,17.7531]}},"bone13":{"rotation":{"0.0":[15,37.5,0],"1.4583":[38.0711,12.4997,50.7012],"3.0":[15,37.5,0]}},"bone14":{"rotation":{"0.0":[25.7693,13.5663,6.4607],"1.9167":[33.3015,39.5986,22.7254],"3.0":[25.7693,13.5663,6.4607]}},"bone15":{"rotation":{"0.0":[18.1133,-33.6441,-10.2721],"1.4583":[31.6778,10.2342,-26.9984],"3.0":[18.1133,-33.6441,-10.2721]}},"bone16":{"rotation":{"0.0":[0,45,0],"1.0":[0,22.5,0],"3.0":[0,45,0]}},"bone17":{"rotation":{"0.0":[-10.8653,-13.8018,38.819]}},"bone18":{"rotation":{"0.0":[-6.3128,-31.9472,11.8088],"1.0":[-6.9347,-39.3973,12.873],"3.0":[-6.3128,-31.9472,11.8088]}},"bone19":{"rotation":{"0.0":[0,-27.5,0],"1.4167":[6.8403,-48.8551,21.3104],"3.0":[0,-27.5,0]}},"bone20":{"rotation":{"0.0":[0,45,0],"1.7917":[24.3435,2.9969,16.1525],"3.0":[0,45,0]}},"bone21":{"rotation":{"0.0":[0,-32.5,0],"1.0417":[0,-50,0],"3.0":[0,-32.5,0]}}}}} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/ghoul.geo.json b/src/main/resources/assets/evolution/cosmetic/wings/ghoul.geo.json new file mode 100644 index 0000000..e497eae --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/ghoul.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.pulse_ghoulwings","texture_width":64,"texture_height":64,"visible_bounds_width":2,"visible_bounds_height":1.5,"visible_bounds_offset":[0,0.25,0]},"bones":[{"name":"root","pivot":[1.5,20,2.07143]},{"name":"left_wing","pivot":[1.5,20,2.07143],"parent":"root","cubes":[{"origin":[0.5,17,2],"size":[2,6,3],"uv":{"north":{"uv":[50,16],"uv_size":[4,12]},"east":{"uv":[60,16],"uv_size":[-6,12]},"south":{"uv":[60,16],"uv_size":[4,12]},"west":{"uv":[54,16],"uv_size":[6,12]},"up":{"uv":[36,40],"uv_size":[4,6]},"down":{"uv":[40,46],"uv_size":[4,-6]}}}]},{"name":"bone2","pivot":[1.5,20,4.83333],"parent":"left_wing","cubes":[{"origin":[-0.5,16,5],"size":[4,8,12],"uv":{"north":{"uv":[48,0],"uv_size":[8,16]},"east":{"uv":[24,0],"uv_size":[-24,16]},"south":{"uv":[56,0],"uv_size":[8,16]},"west":{"uv":[0,0],"uv_size":[24,16]},"up":{"uv":[0,16],"uv_size":[8,24]},"down":{"uv":[8,40],"uv_size":[8,-24]}}}]},{"name":"bone3","pivot":[1.5,20,16.9],"parent":"bone2","cubes":[{"origin":[-0.5,16,17],"size":[4,8,12],"uv":{"north":{"uv":[16,40],"uv_size":[8,16]},"east":{"uv":[48,0],"uv_size":[-24,16]},"south":{"uv":[24,40],"uv_size":[8,16]},"west":{"uv":[24,0],"uv_size":[24,16]},"up":{"uv":[16,16],"uv_size":[8,24]},"down":{"uv":[24,40],"uv_size":[8,-24]}}}]},{"name":"bone4","pivot":[1.5,20,28.75],"parent":"bone3","cubes":[{"origin":[0.5,17,29],"size":[2,6,9],"uv":{"north":{"uv":[50,28],"uv_size":[4,12]},"east":{"uv":[50,16],"uv_size":[-18,12]},"south":{"uv":[54,28],"uv_size":[4,12]},"west":{"uv":[32,16],"uv_size":[18,12]},"up":{"uv":[0,40],"uv_size":[4,18]},"down":{"uv":[4,58],"uv_size":[4,-18]}}}]},{"name":"bone5","pivot":[1.5,20,38.16667],"parent":"bone4","cubes":[{"origin":[0.5,17,38],"size":[2,6,9],"uv":{"north":{"uv":[58,28],"uv_size":[4,12]},"east":{"uv":[50,28],"uv_size":[-18,12]},"south":{"uv":[32,40],"uv_size":[4,12]},"west":{"uv":[32,28],"uv_size":[18,12]},"up":{"uv":[8,40],"uv_size":[4,18]},"down":{"uv":[12,58],"uv_size":[4,-18]}}}]},{"name":"bone6","pivot":[1.5,20,47.5],"parent":"bone5","cubes":[{"origin":[1,18.5,47],"size":[1,3,3],"uv":{"north":{"uv":[62,28],"uv_size":[2,6]},"east":{"uv":[50,40],"uv_size":[-6,6]},"south":{"uv":[62,34],"uv_size":[2,6]},"west":{"uv":[44,40],"uv_size":[6,6]},"up":{"uv":[50,40],"uv_size":[2,6]},"down":{"uv":[52,46],"uv_size":[2,-6]}}},{"origin":[1.5,19.5,50],"size":[0,1,1],"uv":{"north":{"uv":[54,40],"uv_size":[2,2]},"east":{"uv":[56,40],"uv_size":[-2,2]},"south":{"uv":[54,40],"uv_size":[2,2]},"west":{"uv":[54,40],"uv_size":[2,2]},"up":{"uv":[56,42],"uv_size":[-2,-2]},"down":{"uv":[56,42],"uv_size":[-2,-2]}}}]},{"name":"left_wing2","pivot":[1.5,15,2.07143],"parent":"root","cubes":[{"origin":[0.5,12,2],"size":[2,6,3],"uv":{"north":{"uv":[50,16],"uv_size":[4,12]},"east":{"uv":[60,16],"uv_size":[-6,12]},"south":{"uv":[60,16],"uv_size":[4,12]},"west":{"uv":[54,16],"uv_size":[6,12]},"up":{"uv":[36,40],"uv_size":[4,6]},"down":{"uv":[40,46],"uv_size":[4,-6]}}}]},{"name":"bone12","pivot":[1.5,15,4.83333],"parent":"left_wing2","cubes":[{"origin":[-0.5,11,5],"size":[4,8,12],"uv":{"north":{"uv":[48,0],"uv_size":[8,16]},"east":{"uv":[24,0],"uv_size":[-24,16]},"south":{"uv":[56,0],"uv_size":[8,16]},"west":{"uv":[0,0],"uv_size":[24,16]},"up":{"uv":[0,16],"uv_size":[8,24]},"down":{"uv":[8,40],"uv_size":[8,-24]}}}]},{"name":"bone13","pivot":[1.5,15,16.9],"parent":"bone12","cubes":[{"origin":[-0.5,11,17],"size":[4,8,12],"uv":{"north":{"uv":[16,40],"uv_size":[8,16]},"east":{"uv":[48,0],"uv_size":[-24,16]},"south":{"uv":[24,40],"uv_size":[8,16]},"west":{"uv":[24,0],"uv_size":[24,16]},"up":{"uv":[16,16],"uv_size":[8,24]},"down":{"uv":[24,40],"uv_size":[8,-24]}}}]},{"name":"bone14","pivot":[1.5,15,28.75],"parent":"bone13","cubes":[{"origin":[0.5,12,29],"size":[2,6,9],"uv":{"north":{"uv":[50,28],"uv_size":[4,12]},"east":{"uv":[50,16],"uv_size":[-18,12]},"south":{"uv":[54,28],"uv_size":[4,12]},"west":{"uv":[32,16],"uv_size":[18,12]},"up":{"uv":[0,40],"uv_size":[4,18]},"down":{"uv":[4,58],"uv_size":[4,-18]}}}]},{"name":"bone15","pivot":[1.5,15,38.16667],"parent":"bone14","cubes":[{"origin":[0.5,12,38],"size":[2,6,9],"uv":{"north":{"uv":[58,28],"uv_size":[4,12]},"east":{"uv":[50,28],"uv_size":[-18,12]},"south":{"uv":[32,40],"uv_size":[4,12]},"west":{"uv":[32,28],"uv_size":[18,12]},"up":{"uv":[8,40],"uv_size":[4,18]},"down":{"uv":[12,58],"uv_size":[4,-18]}}}]},{"name":"bone16","pivot":[1.5,15,47.5],"parent":"bone15","cubes":[{"origin":[1,13.5,47],"size":[1,3,3],"uv":{"north":{"uv":[62,28],"uv_size":[2,6]},"east":{"uv":[50,40],"uv_size":[-6,6]},"south":{"uv":[62,34],"uv_size":[2,6]},"west":{"uv":[44,40],"uv_size":[6,6]},"up":{"uv":[50,40],"uv_size":[2,6]},"down":{"uv":[52,46],"uv_size":[2,-6]}}},{"origin":[1.5,14.5,50],"size":[0,1,1],"uv":{"north":{"uv":[54,40],"uv_size":[2,2]},"east":{"uv":[56,40],"uv_size":[-2,2]},"south":{"uv":[54,40],"uv_size":[2,2]},"west":{"uv":[54,40],"uv_size":[2,2]},"up":{"uv":[56,42],"uv_size":[-2,-2]},"down":{"uv":[56,42],"uv_size":[-2,-2]}}}]},{"name":"right_wing2","pivot":[-1.5,15,2.07143],"parent":"root","cubes":[{"origin":[-2.5,12,2],"size":[2,6,3],"uv":{"north":{"uv":[54,16],"uv_size":[-4,12]},"east":{"uv":[60,16],"uv_size":[-6,12]},"south":{"uv":[64,16],"uv_size":[-4,12]},"west":{"uv":[54,16],"uv_size":[6,12]},"up":{"uv":[40,40],"uv_size":[-4,6]},"down":{"uv":[44,46],"uv_size":[-4,-6]}}}]},{"name":"bone17","pivot":[-1.5,15,4.83333],"parent":"right_wing2","cubes":[{"origin":[-3.5,11,5],"size":[4,8,12],"uv":{"north":{"uv":[56,0],"uv_size":[-8,16]},"east":{"uv":[24,0],"uv_size":[-24,16]},"south":{"uv":[64,0],"uv_size":[-8,16]},"west":{"uv":[0,0],"uv_size":[24,16]},"up":{"uv":[8,16],"uv_size":[-8,24]},"down":{"uv":[16,40],"uv_size":[-8,-24]}}}]},{"name":"bone18","pivot":[-1.5,15,16.9],"parent":"bone17","cubes":[{"origin":[-3.5,11,17],"size":[4,8,12],"uv":{"north":{"uv":[24,40],"uv_size":[-8,16]},"east":{"uv":[48,0],"uv_size":[-24,16]},"south":{"uv":[32,40],"uv_size":[-8,16]},"west":{"uv":[24,0],"uv_size":[24,16]},"up":{"uv":[24,16],"uv_size":[-8,24]},"down":{"uv":[32,40],"uv_size":[-8,-24]}}}]},{"name":"bone19","pivot":[-1.5,15,28.75],"parent":"bone18","cubes":[{"origin":[-2.5,12,29],"size":[2,6,9],"uv":{"north":{"uv":[54,28],"uv_size":[-4,12]},"east":{"uv":[50,16],"uv_size":[-18,12]},"south":{"uv":[58,28],"uv_size":[-4,12]},"west":{"uv":[32,16],"uv_size":[18,12]},"up":{"uv":[4,40],"uv_size":[-4,18]},"down":{"uv":[8,58],"uv_size":[-4,-18]}}}]},{"name":"bone20","pivot":[-1.5,15,38.16667],"parent":"bone19","cubes":[{"origin":[-2.5,12,38],"size":[2,6,9],"uv":{"north":{"uv":[62,28],"uv_size":[-4,12]},"east":{"uv":[50,28],"uv_size":[-18,12]},"south":{"uv":[36,40],"uv_size":[-4,12]},"west":{"uv":[32,28],"uv_size":[18,12]},"up":{"uv":[12,40],"uv_size":[-4,18]},"down":{"uv":[16,58],"uv_size":[-4,-18]}}}]},{"name":"bone21","pivot":[-1.5,15,47.5],"parent":"bone20","cubes":[{"origin":[-2,13.5,47],"size":[1,3,3],"uv":{"north":{"uv":[64,28],"uv_size":[-2,6]},"east":{"uv":[50,40],"uv_size":[-6,6]},"south":{"uv":[64,34],"uv_size":[-2,6]},"west":{"uv":[44,40],"uv_size":[6,6]},"up":{"uv":[52,40],"uv_size":[-2,6]},"down":{"uv":[54,46],"uv_size":[-2,-6]}}},{"origin":[-1.5,14.5,50],"size":[0,1,1],"uv":{"north":{"uv":[56,40],"uv_size":[-2,2]},"east":{"uv":[56,40],"uv_size":[-2,2]},"south":{"uv":[56,40],"uv_size":[-2,2]},"west":{"uv":[54,40],"uv_size":[2,2]},"up":{"uv":[54,42],"uv_size":[2,-2]},"down":{"uv":[54,42],"uv_size":[2,-2]}}}]},{"name":"right_wing","pivot":[-1.5,20,2.07143],"parent":"root","cubes":[{"origin":[-2.5,17,2],"size":[2,6,3],"uv":{"north":{"uv":[54,16],"uv_size":[-4,12]},"east":{"uv":[60,16],"uv_size":[-6,12]},"south":{"uv":[64,16],"uv_size":[-4,12]},"west":{"uv":[54,16],"uv_size":[6,12]},"up":{"uv":[40,40],"uv_size":[-4,6]},"down":{"uv":[44,46],"uv_size":[-4,-6]}}}]},{"name":"bone7","pivot":[-1.5,20,4.83333],"parent":"right_wing","cubes":[{"origin":[-3.5,16,5],"size":[4,8,12],"uv":{"north":{"uv":[56,0],"uv_size":[-8,16]},"east":{"uv":[24,0],"uv_size":[-24,16]},"south":{"uv":[64,0],"uv_size":[-8,16]},"west":{"uv":[0,0],"uv_size":[24,16]},"up":{"uv":[8,16],"uv_size":[-8,24]},"down":{"uv":[16,40],"uv_size":[-8,-24]}}}]},{"name":"bone8","pivot":[-1.5,20,16.9],"parent":"bone7","cubes":[{"origin":[-3.5,16,17],"size":[4,8,12],"uv":{"north":{"uv":[24,40],"uv_size":[-8,16]},"east":{"uv":[48,0],"uv_size":[-24,16]},"south":{"uv":[32,40],"uv_size":[-8,16]},"west":{"uv":[24,0],"uv_size":[24,16]},"up":{"uv":[24,16],"uv_size":[-8,24]},"down":{"uv":[32,40],"uv_size":[-8,-24]}}}]},{"name":"bone9","pivot":[-1.5,20,28.75],"parent":"bone8","cubes":[{"origin":[-2.5,17,29],"size":[2,6,9],"uv":{"north":{"uv":[54,28],"uv_size":[-4,12]},"east":{"uv":[50,16],"uv_size":[-18,12]},"south":{"uv":[58,28],"uv_size":[-4,12]},"west":{"uv":[32,16],"uv_size":[18,12]},"up":{"uv":[4,40],"uv_size":[-4,18]},"down":{"uv":[8,58],"uv_size":[-4,-18]}}}]},{"name":"bone10","pivot":[-1.5,20,38.16667],"parent":"bone9","cubes":[{"origin":[-2.5,17,38],"size":[2,6,9],"uv":{"north":{"uv":[62,28],"uv_size":[-4,12]},"east":{"uv":[50,28],"uv_size":[-18,12]},"south":{"uv":[36,40],"uv_size":[-4,12]},"west":{"uv":[32,28],"uv_size":[18,12]},"up":{"uv":[12,40],"uv_size":[-4,18]},"down":{"uv":[16,58],"uv_size":[-4,-18]}}}]},{"name":"bone11","pivot":[-1.5,20,47.5],"parent":"bone10","cubes":[{"origin":[-2,18.5,47],"size":[1,3,3],"uv":{"north":{"uv":[64,28],"uv_size":[-2,6]},"east":{"uv":[50,40],"uv_size":[-6,6]},"south":{"uv":[64,34],"uv_size":[-2,6]},"west":{"uv":[44,40],"uv_size":[6,6]},"up":{"uv":[52,40],"uv_size":[-2,6]},"down":{"uv":[54,46],"uv_size":[-2,-6]}}},{"origin":[-1.5,19.5,50],"size":[0,1,1],"uv":{"north":{"uv":[56,40],"uv_size":[-2,2]},"east":{"uv":[56,40],"uv_size":[-2,2]},"south":{"uv":[56,40],"uv_size":[-2,2]},"west":{"uv":[54,40],"uv_size":[2,2]},"up":{"uv":[54,42],"uv_size":[2,-2]},"down":{"uv":[54,42],"uv_size":[2,-2]}}}]}]}]} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/pulse.animation.json b/src/main/resources/assets/evolution/cosmetic/wings/pulse.animation.json new file mode 100644 index 0000000..d5f8aca --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/pulse.animation.json @@ -0,0 +1 @@ +{"idle":{"loop":true,"animation_length":3,"bones":{"right_wing_1":{"rotation":{"0.0":[0,0,0],"1.25":[0,0,-12.5],"3.0":[0,0,0]}},"right_wing_2":{"rotation":{"0.0":[0,0,0],"1.25":[0,-10,-22.5],"2.125":[0,-10,-22.5],"3.0":[0,0,0]}},"left_wing_1":{"rotation":{"0.0":[0,0,0],"1.25":[0,0,12.5],"3.0":[0,0,0]}},"left_wing_2":{"rotation":{"0.0":[0,0,0],"1.25":[0,10,22.5],"2.125":[0,10,22.5],"3.0":[0,0,0]}}}}} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/pulse.geo.json b/src/main/resources/assets/evolution/cosmetic/wings/pulse.geo.json new file mode 100644 index 0000000..353b9ab --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/pulse.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.pulse_wings","texture_width":32,"texture_height":32,"visible_bounds_width":2,"visible_bounds_height":2.5,"visible_bounds_offset":[0,0.75,0]},"bones":[{"name":"root","pivot":[0,20.93799,1.85292]},{"name":"right_wing","pivot":[-1.43281,20.93799,1.85292],"parent":"root","cubes":[{"origin":[-2.06077,19.3978,2.05181],"size":[2,3,2],"uv":{"north":{"uv":[22,10],"uv_size":[-4,6]},"east":{"uv":[18,10],"uv_size":[4,6]},"south":{"uv":[18,10],"uv_size":[4,6]},"west":{"uv":[18,10],"uv_size":[4,6]},"up":{"uv":[22,20],"uv_size":[-4,-4]},"down":{"uv":[26,20],"uv_size":[-4,-4]}}}]},{"name":"right_wing_1","pivot":[-1.37125,20.80713,2.84307],"parent":"right_wing","cubes":[{"origin":[-5.16077,18.78935,4.51235],"size":[2.2,5,2],"pivot":[-5.16492,24.01927,5.51235],"rotation":[-27.5,0,-42.5],"uv":{"north":{"uv":[22,0],"uv_size":[-4,10]},"east":{"uv":[22,0],"uv_size":[4,10]},"south":{"uv":[18,0],"uv_size":[4,10]},"west":{"uv":[26,0],"uv_size":[4,10]},"up":{"uv":[26,16],"uv_size":[4,4]},"down":{"uv":[22,24],"uv_size":[4,-4]}}},{"origin":[-13.16077,18.78935,5.51235],"size":[9.2,5,0],"pivot":[-5.16492,24.01927,5.51235],"rotation":[-27.5,0,-42.5],"uv":{"north":{"uv":[18,20],"uv_size":[-18,10]},"south":{"uv":[0,20],"uv_size":[18,10]}}}]},{"name":"right_wing_2","pivot":[-4.00288,24.37198,5.40391],"parent":"right_wing_1","cubes":[{"origin":[-6.88608,22.68722,5.72945],"size":[1.5,3,1.5],"pivot":[-6.36998,25.51373,6.47945],"rotation":[-26.94093,-5.73576,-53.62501],"uv":{"north":{"uv":[25,10],"uv_size":[-3,6]},"east":{"uv":[25,10],"uv_size":[3,6]},"south":{"uv":[22,10],"uv_size":[3,6]},"west":{"uv":[28,10],"uv_size":[3,6]},"up":{"uv":[26,20],"uv_size":[3,3]},"down":{"uv":[29,23],"uv_size":[3,-3]}}},{"origin":[-6.63608,25.34025,5.97945],"size":[1,3,1],"pivot":[-6.36998,25.51373,6.47945],"rotation":[-26.06663,-9.08661,-60.39244],"uv":{"north":{"uv":[32,0],"uv_size":[-2,6]},"east":{"uv":[18,20],"uv_size":[2,6]},"south":{"uv":[30,0],"uv_size":[2,6]},"west":{"uv":[20,20],"uv_size":[2,6]},"up":{"uv":[30,6],"uv_size":[2,2]},"down":{"uv":[30,10],"uv_size":[2,-2]}}},{"origin":[-13.16077,23.78935,5.51235],"size":[9.2,10,0],"pivot":[-5.16492,24.01927,5.51235],"rotation":[-27.5,0,-42.5],"uv":{"north":{"uv":[18,0],"uv_size":[-18,20]},"south":{"uv":[0,0],"uv_size":[18,20]}}}]},{"name":"left_wing","pivot":[1.43281,20.93799,1.85292],"parent":"root","cubes":[{"origin":[0.06077,19.3978,2.05181],"size":[2,3,2],"uv":{"north":{"uv":[18,10],"uv_size":[4,6]},"east":{"uv":[22,10],"uv_size":[-4,6]},"south":{"uv":[22,10],"uv_size":[-4,6]},"west":{"uv":[22,10],"uv_size":[-4,6]},"up":{"uv":[18,20],"uv_size":[4,-4]},"down":{"uv":[22,20],"uv_size":[4,-4]}}}]},{"name":"left_wing_1","pivot":[1.37125,20.80713,2.84307],"parent":"left_wing","cubes":[{"origin":[2.96077,18.78935,4.51235],"size":[2.2,5,2],"pivot":[5.16492,24.01927,5.51235],"rotation":[-27.5,0,42.5],"uv":{"north":{"uv":[18,0],"uv_size":[4,10]},"east":{"uv":[30,0],"uv_size":[-4,10]},"south":{"uv":[22,0],"uv_size":[-4,10]},"west":{"uv":[26,0],"uv_size":[-4,10]},"up":{"uv":[30,16],"uv_size":[-4,4]},"down":{"uv":[26,24],"uv_size":[-4,-4]}}},{"origin":[3.96077,18.78935,5.51235],"size":[9.2,5,0],"pivot":[5.16492,24.01927,5.51235],"rotation":[-27.5,0,42.5],"uv":{"north":{"uv":[0,20],"uv_size":[18,10]},"south":{"uv":[18,20],"uv_size":[-18,10]}}}]},{"name":"left_wing_2","pivot":[4.00288,24.37198,5.40391],"parent":"left_wing_1","cubes":[{"origin":[5.38608,22.68722,5.72945],"size":[1.5,3,1.5],"pivot":[6.36998,25.51373,6.47945],"rotation":[-26.94093,5.73576,53.62501],"uv":{"north":{"uv":[22,10],"uv_size":[3,6]},"east":{"uv":[31,10],"uv_size":[-3,6]},"south":{"uv":[25,10],"uv_size":[-3,6]},"west":{"uv":[28,10],"uv_size":[-3,6]},"up":{"uv":[29,20],"uv_size":[-3,3]},"down":{"uv":[32,23],"uv_size":[-3,-3]}}},{"origin":[5.63608,25.34025,5.97945],"size":[1,3,1],"pivot":[6.36998,25.51373,6.47945],"rotation":[-26.06663,9.08661,60.39244],"uv":{"north":{"uv":[30,0],"uv_size":[2,6]},"east":{"uv":[22,20],"uv_size":[-2,6]},"south":{"uv":[32,0],"uv_size":[-2,6]},"west":{"uv":[20,20],"uv_size":[-2,6]},"up":{"uv":[32,6],"uv_size":[-2,2]},"down":{"uv":[32,10],"uv_size":[-2,-2]}}},{"origin":[3.96077,23.78935,5.51235],"size":[9.2,10,0],"pivot":[5.16492,24.01927,5.51235],"rotation":[-27.5,0,42.5],"uv":{"north":{"uv":[0,0],"uv_size":[18,20]},"south":{"uv":[18,0],"uv_size":[-18,20]}}}]}]}]} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/rocker.animation.json b/src/main/resources/assets/evolution/cosmetic/wings/rocker.animation.json new file mode 100644 index 0000000..aa7aad7 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/rocker.animation.json @@ -0,0 +1 @@ +{"main":{"loop":true,"animation_length":2.4,"bones":{"leftWing":{"rotation":{"0":[0,0,0],"1":[-1.5,1.5,0],"2":[2.59808,-2.59808,0],"0.033":[-0.26147,0.26147,0],"0.067":[-0.52094,0.52094,0],"0.1":[-0.77646,0.77646,0],"0.133":[-1.02606,1.02606,0],"0.167":[-1.26785,1.26785,0],"0.2":[-1.5,1.5,0],"0.233":[-1.72073,1.72073,0],"0.267":[-1.92836,1.92836,0],"0.3":[-2.12132,2.12132,0],"0.333":[-2.29813,2.29813,0],"0.367":[-2.45746,2.45746,0],"0.4":[-2.59808,2.59808,0],"0.433":[-2.71892,2.71892,0],"0.467":[-2.81908,2.81908,0],"0.5":[-2.89778,2.89778,0],"0.533":[-2.95442,2.95442,0],"0.567":[-2.98858,2.98858,0],"0.6":[-3,3,0],"0.633":[-2.98858,2.98858,0],"0.667":[-2.95442,2.95442,0],"0.7":[-2.89778,2.89778,0],"0.733":[-2.81908,2.81908,0],"0.767":[-2.71892,2.71892,0],"0.8":[-2.59808,2.59808,0],"0.833":[-2.45746,2.45746,0],"0.867":[-2.29813,2.29813,0],"0.9":[-2.12132,2.12132,0],"0.933":[-1.92836,1.92836,0],"0.967":[-1.72073,1.72073,0],"1.033":[-1.26785,1.26785,0],"1.067":[-1.02606,1.02606,0],"1.1":[-0.77646,0.77646,0],"1.133":[-0.52094,0.52094,0],"1.167":[-0.26147,0.26147,0],"1.2":[0,0,0],"1.233":[0.26147,-0.26147,0],"1.267":[0.52094,-0.52094,0],"1.3":[0.77646,-0.77646,0],"1.333":[1.02606,-1.02606,0],"1.367":[1.26785,-1.26785,0],"1.4":[1.5,-1.5,0],"1.433":[1.72073,-1.72073,0],"1.467":[1.92836,-1.92836,0],"1.5":[2.12132,-2.12132,0],"1.533":[2.29813,-2.29813,0],"1.567":[2.45746,-2.45746,0],"1.6":[2.59808,-2.59808,0],"1.633":[2.71892,-2.71892,0],"1.667":[2.81908,-2.81908,0],"1.7":[2.89778,-2.89778,0],"1.733":[2.95442,-2.95442,0],"1.767":[2.98858,-2.98858,0],"1.8":[3,-3,0],"1.833":[2.98858,-2.98858,0],"1.867":[2.95442,-2.95442,0],"1.9":[2.89778,-2.89778,0],"1.933":[2.81908,-2.81908,0],"1.967":[2.71892,-2.71892,0],"2.033":[2.45746,-2.45746,0],"2.067":[2.29813,-2.29813,0],"2.1":[2.12132,-2.12132,0],"2.133":[1.92836,-1.92836,0],"2.167":[1.72073,-1.72073,0],"2.2":[1.5,-1.5,0],"2.233":[1.26785,-1.26785,0],"2.267":[1.02606,-1.02606,0],"2.3":[0.77646,-0.77646,0],"2.333":[0.52094,-0.52094,0],"2.367":[0.26147,-0.26147,0],"2.4":[0,0,0]}},"chainLarge1left":{"rotation":{"0":[0,0,-5],"1":[0,-7.5,4.33013],"2":[0,12.99038,-2.5],"0.033":[0,-1.30734,-4.98097],"0.067":[0,-2.60472,-4.92404],"0.1":[0,-3.88229,-4.82963],"0.133":[0,-5.1303,-4.69846],"0.167":[0,-6.33927,-4.53154],"0.2":[0,-7.5,-4.33013],"0.233":[0,-8.60365,-4.09576],"0.267":[0,-9.64181,-3.83022],"0.3":[0,-10.6066,-3.53553],"0.333":[0,-11.49067,-3.21394],"0.367":[0,-12.28728,-2.86788],"0.4":[0,-12.99038,-2.5],"0.433":[0,-13.59462,-2.11309],"0.467":[0,-14.09539,-1.7101],"0.5":[0,-14.48889,-1.2941],"0.533":[0,-14.77212,-0.86824],"0.567":[0,-14.94292,-0.43578],"0.6":[0,-15,0],"0.633":[0,-14.94292,0.43578],"0.667":[0,-14.77212,0.86824],"0.7":[0,-14.48889,1.2941],"0.733":[0,-14.09539,1.7101],"0.767":[0,-13.59462,2.11309],"0.8":[0,-12.99038,2.5],"0.833":[0,-12.28728,2.86788],"0.867":[0,-11.49067,3.21394],"0.9":[0,-10.6066,3.53553],"0.933":[0,-9.64181,3.83022],"0.967":[0,-8.60365,4.09576],"1.033":[0,-6.33927,4.53154],"1.067":[0,-5.1303,4.69846],"1.1":[0,-3.88229,4.82963],"1.133":[0,-2.60472,4.92404],"1.167":[0,-1.30734,4.98097],"1.2":[0,0,5],"1.233":[0,1.30734,4.98097],"1.267":[0,2.60472,4.92404],"1.3":[0,3.88229,4.82963],"1.333":[0,5.1303,4.69846],"1.367":[0,6.33927,4.53154],"1.4":[0,7.5,4.33013],"1.433":[0,8.60365,4.09576],"1.467":[0,9.64181,3.83022],"1.5":[0,10.6066,3.53553],"1.533":[0,11.49067,3.21394],"1.567":[0,12.28728,2.86788],"1.6":[0,12.99038,2.5],"1.633":[0,13.59462,2.11309],"1.667":[0,14.09539,1.7101],"1.7":[0,14.48889,1.2941],"1.733":[0,14.77212,0.86824],"1.767":[0,14.94292,0.43578],"1.8":[0,15,0],"1.833":[0,14.94292,-0.43578],"1.867":[0,14.77212,-0.86824],"1.9":[0,14.48889,-1.2941],"1.933":[0,14.09539,-1.7101],"1.967":[0,13.59462,-2.11309],"2.033":[0,12.28728,-2.86788],"2.067":[0,11.49067,-3.21394],"2.1":[0,10.6066,-3.53553],"2.133":[0,9.64181,-3.83022],"2.167":[0,8.60365,-4.09576],"2.2":[0,7.5,-4.33013],"2.233":[0,6.33927,-4.53154],"2.267":[0,5.1303,-4.69846],"2.3":[0,3.88229,-4.82963],"2.333":[0,2.60472,-4.92404],"2.367":[0,1.30734,-4.98097],"2.4":[0,0,-5]}},"chainLarge2left":{"rotation":{"0":[0,22.33584,51.4658],"1":[0,22.33584,51.4658],"2":[0,22.33584,51.4658],"0.033":[0,22.33584,51.4658],"0.067":[0,22.33584,51.4658],"0.1":[0,22.33584,51.4658],"0.133":[0,22.33584,51.4658],"0.167":[0,22.33584,51.4658],"0.2":[0,22.33584,51.4658],"0.233":[0,22.33584,51.4658],"0.267":[0,22.33584,51.4658],"0.3":[0,22.33584,51.4658],"0.333":[0,22.33584,51.4658],"0.367":[0,22.33584,51.4658],"0.4":[0,22.33584,51.4658],"0.433":[0,22.33584,51.4658],"0.467":[0,22.33584,51.4658],"0.5":[0,22.33584,51.4658],"0.533":[0,22.33584,51.4658],"0.567":[0,22.33584,51.4658],"0.6":[0,22.33584,51.4658],"0.633":[0,22.33584,51.4658],"0.667":[0,22.33584,51.4658],"0.7":[0,22.33584,51.4658],"0.733":[0,22.33584,51.4658],"0.767":[0,22.33584,51.4658],"0.8":[0,22.33584,51.4658],"0.833":[0,22.33584,51.4658],"0.867":[0,22.33584,51.4658],"0.9":[0,22.33584,51.4658],"0.933":[0,22.33584,51.4658],"0.967":[0,22.33584,51.4658],"1.033":[0,22.33584,51.4658],"1.067":[0,22.33584,51.4658],"1.1":[0,22.33584,51.4658],"1.133":[0,22.33584,51.4658],"1.167":[0,22.33584,51.4658],"1.2":[0,22.33584,51.4658],"1.233":[0,22.33584,51.4658],"1.267":[0,22.33584,51.4658],"1.3":[0,22.33584,51.4658],"1.333":[0,22.33584,51.4658],"1.367":[0,22.33584,51.4658],"1.4":[0,22.33584,51.4658],"1.433":[0,22.33584,51.4658],"1.467":[0,22.33584,51.4658],"1.5":[0,22.33584,51.4658],"1.533":[0,22.33584,51.4658],"1.567":[0,22.33584,51.4658],"1.6":[0,22.33584,51.4658],"1.633":[0,22.33584,51.4658],"1.667":[0,22.33584,51.4658],"1.7":[0,22.33584,51.4658],"1.733":[0,22.33584,51.4658],"1.767":[0,22.33584,51.4658],"1.8":[0,22.33584,51.4658],"1.833":[0,22.33584,51.4658],"1.867":[0,22.33584,51.4658],"1.9":[0,22.33584,51.4658],"1.933":[0,22.33584,51.4658],"1.967":[0,22.33584,51.4658],"2.033":[0,22.33584,51.4658],"2.067":[0,22.33584,51.4658],"2.1":[0,22.33584,51.4658],"2.133":[0,22.33584,51.4658],"2.167":[0,22.33584,51.4658],"2.2":[0,22.33584,51.4658],"2.233":[0,22.33584,51.4658],"2.267":[0,22.33584,51.4658],"2.3":[0,22.33584,51.4658],"2.333":[0,22.33584,51.4658],"2.367":[0,22.33584,51.4658],"2.4":[0,22.33584,51.4658]}},"chainLarge3left":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"chainLarge4left":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"chainLarge5left":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"bone18":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"bone24":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"bone25":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"bone21":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"bone23":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"leftWingEndRot":{"rotation":{"0":[0,0,0],"1":[0,27.99038,0],"2":[0,7.5,0],"0.033":[0,0.05708,0],"0.067":[0,0.22788,0],"0.1":[0,0.51111,0],"0.133":[0,0.90461,0],"0.167":[0,1.40538,0],"0.2":[0,2.00962,0],"0.233":[0,2.71272,0],"0.267":[0,3.50933,0],"0.3":[0,4.3934,0],"0.333":[0,5.35819,0],"0.367":[0,6.39635,0],"0.4":[0,7.5,0],"0.433":[0,8.66073,0],"0.467":[0,9.8697,0],"0.5":[0,11.11771,0],"0.533":[0,12.39528,0],"0.567":[0,13.69266,0],"0.6":[0,15,0],"0.633":[0,16.30734,0],"0.667":[0,17.60472,0],"0.7":[0,18.88229,0],"0.733":[0,20.1303,0],"0.767":[0,21.33927,0],"0.8":[0,22.5,0],"0.833":[0,23.60365,0],"0.867":[0,24.64181,0],"0.9":[0,25.6066,0],"0.933":[0,26.49067,0],"0.967":[0,27.28728,0],"1.033":[0,28.59462,0],"1.067":[0,29.09539,0],"1.1":[0,29.48889,0],"1.133":[0,29.77212,0],"1.167":[0,29.94292,0],"1.2":[0,30,0],"1.233":[0,29.94292,0],"1.267":[0,29.77212,0],"1.3":[0,29.48889,0],"1.333":[0,29.09539,0],"1.367":[0,28.59462,0],"1.4":[0,27.99038,0],"1.433":[0,27.28728,0],"1.467":[0,26.49067,0],"1.5":[0,25.6066,0],"1.533":[0,24.64181,0],"1.567":[0,23.60365,0],"1.6":[0,22.5,0],"1.633":[0,21.33927,0],"1.667":[0,20.1303,0],"1.7":[0,18.88229,0],"1.733":[0,17.60472,0],"1.767":[0,16.30734,0],"1.8":[0,15,0],"1.833":[0,13.69266,0],"1.867":[0,12.39528,0],"1.9":[0,11.11771,0],"1.933":[0,9.8697,0],"1.967":[0,8.66073,0],"2.033":[0,6.39635,0],"2.067":[0,5.35819,0],"2.1":[0,4.3934,0],"2.133":[0,3.50933,0],"2.167":[0,2.71272,0],"2.2":[0,2.00962,0],"2.233":[0,1.40538,0],"2.267":[0,0.90461,0],"2.3":[0,0.51111,0],"2.333":[0,0.22788,0],"2.367":[0,0.05708,0],"2.4":[0,0,0]}},"rightWing":{"rotation":{"0":[0,0,0],"1":[-1.5,-1.5,0],"2":[2.59808,2.59808,0],"0.033":[-0.26147,-0.26147,0],"0.067":[-0.52094,-0.52094,0],"0.1":[-0.77646,-0.77646,0],"0.133":[-1.02606,-1.02606,0],"0.167":[-1.26785,-1.26785,0],"0.2":[-1.5,-1.5,0],"0.233":[-1.72073,-1.72073,0],"0.267":[-1.92836,-1.92836,0],"0.3":[-2.12132,-2.12132,0],"0.333":[-2.29813,-2.29813,0],"0.367":[-2.45746,-2.45746,0],"0.4":[-2.59808,-2.59808,0],"0.433":[-2.71892,-2.71892,0],"0.467":[-2.81908,-2.81908,0],"0.5":[-2.89778,-2.89778,0],"0.533":[-2.95442,-2.95442,0],"0.567":[-2.98858,-2.98858,0],"0.6":[-3,-3,0],"0.633":[-2.98858,-2.98858,0],"0.667":[-2.95442,-2.95442,0],"0.7":[-2.89778,-2.89778,0],"0.733":[-2.81908,-2.81908,0],"0.767":[-2.71892,-2.71892,0],"0.8":[-2.59808,-2.59808,0],"0.833":[-2.45746,-2.45746,0],"0.867":[-2.29813,-2.29813,0],"0.9":[-2.12132,-2.12132,0],"0.933":[-1.92836,-1.92836,0],"0.967":[-1.72073,-1.72073,0],"1.033":[-1.26785,-1.26785,0],"1.067":[-1.02606,-1.02606,0],"1.1":[-0.77646,-0.77646,0],"1.133":[-0.52094,-0.52094,0],"1.167":[-0.26147,-0.26147,0],"1.2":[0,0,0],"1.233":[0.26147,0.26147,0],"1.267":[0.52094,0.52094,0],"1.3":[0.77646,0.77646,0],"1.333":[1.02606,1.02606,0],"1.367":[1.26785,1.26785,0],"1.4":[1.5,1.5,0],"1.433":[1.72073,1.72073,0],"1.467":[1.92836,1.92836,0],"1.5":[2.12132,2.12132,0],"1.533":[2.29813,2.29813,0],"1.567":[2.45746,2.45746,0],"1.6":[2.59808,2.59808,0],"1.633":[2.71892,2.71892,0],"1.667":[2.81908,2.81908,0],"1.7":[2.89778,2.89778,0],"1.733":[2.95442,2.95442,0],"1.767":[2.98858,2.98858,0],"1.8":[3,3,0],"1.833":[2.98858,2.98858,0],"1.867":[2.95442,2.95442,0],"1.9":[2.89778,2.89778,0],"1.933":[2.81908,2.81908,0],"1.967":[2.71892,2.71892,0],"2.033":[2.45746,2.45746,0],"2.067":[2.29813,2.29813,0],"2.1":[2.12132,2.12132,0],"2.133":[1.92836,1.92836,0],"2.167":[1.72073,1.72073,0],"2.2":[1.5,1.5,0],"2.233":[1.26785,1.26785,0],"2.267":[1.02606,1.02606,0],"2.3":[0.77646,0.77646,0],"2.333":[0.52094,0.52094,0],"2.367":[0.26147,0.26147,0],"2.4":[0,0,0]}},"rightWingEndRot":{"rotation":{"0":[0,0,0],"1":[0,-27.99038,0],"2":[0,-7.5,0],"0.033":[0,-0.05708,0],"0.067":[0,-0.22788,0],"0.1":[0,-0.51111,0],"0.133":[0,-0.90461,0],"0.167":[0,-1.40538,0],"0.2":[0,-2.00962,0],"0.233":[0,-2.71272,0],"0.267":[0,-3.50933,0],"0.3":[0,-4.3934,0],"0.333":[0,-5.35819,0],"0.367":[0,-6.39635,0],"0.4":[0,-7.5,0],"0.433":[0,-8.66073,0],"0.467":[0,-9.8697,0],"0.5":[0,-11.11771,0],"0.533":[0,-12.39528,0],"0.567":[0,-13.69266,0],"0.6":[0,-15,0],"0.633":[0,-16.30734,0],"0.667":[0,-17.60472,0],"0.7":[0,-18.88229,0],"0.733":[0,-20.1303,0],"0.767":[0,-21.33927,0],"0.8":[0,-22.5,0],"0.833":[0,-23.60365,0],"0.867":[0,-24.64181,0],"0.9":[0,-25.6066,0],"0.933":[0,-26.49067,0],"0.967":[0,-27.28728,0],"1.033":[0,-28.59462,0],"1.067":[0,-29.09539,0],"1.1":[0,-29.48889,0],"1.133":[0,-29.77212,0],"1.167":[0,-29.94292,0],"1.2":[0,-30,0],"1.233":[0,-29.94292,0],"1.267":[0,-29.77212,0],"1.3":[0,-29.48889,0],"1.333":[0,-29.09539,0],"1.367":[0,-28.59462,0],"1.4":[0,-27.99038,0],"1.433":[0,-27.28728,0],"1.467":[0,-26.49067,0],"1.5":[0,-25.6066,0],"1.533":[0,-24.64181,0],"1.567":[0,-23.60365,0],"1.6":[0,-22.5,0],"1.633":[0,-21.33927,0],"1.667":[0,-20.1303,0],"1.7":[0,-18.88229,0],"1.733":[0,-17.60472,0],"1.767":[0,-16.30734,0],"1.8":[0,-15,0],"1.833":[0,-13.69266,0],"1.867":[0,-12.39528,0],"1.9":[0,-11.11771,0],"1.933":[0,-9.8697,0],"1.967":[0,-8.66073,0],"2.033":[0,-6.39635,0],"2.067":[0,-5.35819,0],"2.1":[0,-4.3934,0],"2.133":[0,-3.50933,0],"2.167":[0,-2.71272,0],"2.2":[0,-2.00962,0],"2.233":[0,-1.40538,0],"2.267":[0,-0.90461,0],"2.3":[0,-0.51111,0],"2.333":[0,-0.22788,0],"2.367":[0,-0.05708,0],"2.4":[0,0,0]}},"chainLarge1right":{"rotation":{"0":[0,0,5],"1":[0,7.5,-4.33013],"2":[0,-12.99038,2.5],"0.033":[0,1.30734,4.98097],"0.067":[0,2.60472,4.92404],"0.1":[0,3.88229,4.82963],"0.133":[0,5.1303,4.69846],"0.167":[0,6.33927,4.53154],"0.2":[0,7.5,4.33013],"0.233":[0,8.60365,4.09576],"0.267":[0,9.64181,3.83022],"0.3":[0,10.6066,3.53553],"0.333":[0,11.49067,3.21394],"0.367":[0,12.28728,2.86788],"0.4":[0,12.99038,2.5],"0.433":[0,13.59462,2.11309],"0.467":[0,14.09539,1.7101],"0.5":[0,14.48889,1.2941],"0.533":[0,14.77212,0.86824],"0.567":[0,14.94292,0.43578],"0.6":[0,15,0],"0.633":[0,14.94292,-0.43578],"0.667":[0,14.77212,-0.86824],"0.7":[0,14.48889,-1.2941],"0.733":[0,14.09539,-1.7101],"0.767":[0,13.59462,-2.11309],"0.8":[0,12.99038,-2.5],"0.833":[0,12.28728,-2.86788],"0.867":[0,11.49067,-3.21394],"0.9":[0,10.6066,-3.53553],"0.933":[0,9.64181,-3.83022],"0.967":[0,8.60365,-4.09576],"1.033":[0,6.33927,-4.53154],"1.067":[0,5.1303,-4.69846],"1.1":[0,3.88229,-4.82963],"1.133":[0,2.60472,-4.92404],"1.167":[0,1.30734,-4.98097],"1.2":[0,0,-5],"1.233":[0,-1.30734,-4.98097],"1.267":[0,-2.60472,-4.92404],"1.3":[0,-3.88229,-4.82963],"1.333":[0,-5.1303,-4.69846],"1.367":[0,-6.33927,-4.53154],"1.4":[0,-7.5,-4.33013],"1.433":[0,-8.60365,-4.09576],"1.467":[0,-9.64181,-3.83022],"1.5":[0,-10.6066,-3.53553],"1.533":[0,-11.49067,-3.21394],"1.567":[0,-12.28728,-2.86788],"1.6":[0,-12.99038,-2.5],"1.633":[0,-13.59462,-2.11309],"1.667":[0,-14.09539,-1.7101],"1.7":[0,-14.48889,-1.2941],"1.733":[0,-14.77212,-0.86824],"1.767":[0,-14.94292,-0.43578],"1.8":[0,-15,0],"1.833":[0,-14.94292,0.43578],"1.867":[0,-14.77212,0.86824],"1.9":[0,-14.48889,1.2941],"1.933":[0,-14.09539,1.7101],"1.967":[0,-13.59462,2.11309],"2.033":[0,-12.28728,2.86788],"2.067":[0,-11.49067,3.21394],"2.1":[0,-10.6066,3.53553],"2.133":[0,-9.64181,3.83022],"2.167":[0,-8.60365,4.09576],"2.2":[0,-7.5,4.33013],"2.233":[0,-6.33927,4.53154],"2.267":[0,-5.1303,4.69846],"2.3":[0,-3.88229,4.82963],"2.333":[0,-2.60472,4.92404],"2.367":[0,-1.30734,4.98097],"2.4":[0,0,5]}},"chainLarge2right":{"rotation":{"0":[0,-22.33584,-51.4658],"1":[0,-22.33584,-51.4658],"2":[0,-22.33584,-51.4658],"0.033":[0,-22.33584,-51.4658],"0.067":[0,-22.33584,-51.4658],"0.1":[0,-22.33584,-51.4658],"0.133":[0,-22.33584,-51.4658],"0.167":[0,-22.33584,-51.4658],"0.2":[0,-22.33584,-51.4658],"0.233":[0,-22.33584,-51.4658],"0.267":[0,-22.33584,-51.4658],"0.3":[0,-22.33584,-51.4658],"0.333":[0,-22.33584,-51.4658],"0.367":[0,-22.33584,-51.4658],"0.4":[0,-22.33584,-51.4658],"0.433":[0,-22.33584,-51.4658],"0.467":[0,-22.33584,-51.4658],"0.5":[0,-22.33584,-51.4658],"0.533":[0,-22.33584,-51.4658],"0.567":[0,-22.33584,-51.4658],"0.6":[0,-22.33584,-51.4658],"0.633":[0,-22.33584,-51.4658],"0.667":[0,-22.33584,-51.4658],"0.7":[0,-22.33584,-51.4658],"0.733":[0,-22.33584,-51.4658],"0.767":[0,-22.33584,-51.4658],"0.8":[0,-22.33584,-51.4658],"0.833":[0,-22.33584,-51.4658],"0.867":[0,-22.33584,-51.4658],"0.9":[0,-22.33584,-51.4658],"0.933":[0,-22.33584,-51.4658],"0.967":[0,-22.33584,-51.4658],"1.033":[0,-22.33584,-51.4658],"1.067":[0,-22.33584,-51.4658],"1.1":[0,-22.33584,-51.4658],"1.133":[0,-22.33584,-51.4658],"1.167":[0,-22.33584,-51.4658],"1.2":[0,-22.33584,-51.4658],"1.233":[0,-22.33584,-51.4658],"1.267":[0,-22.33584,-51.4658],"1.3":[0,-22.33584,-51.4658],"1.333":[0,-22.33584,-51.4658],"1.367":[0,-22.33584,-51.4658],"1.4":[0,-22.33584,-51.4658],"1.433":[0,-22.33584,-51.4658],"1.467":[0,-22.33584,-51.4658],"1.5":[0,-22.33584,-51.4658],"1.533":[0,-22.33584,-51.4658],"1.567":[0,-22.33584,-51.4658],"1.6":[0,-22.33584,-51.4658],"1.633":[0,-22.33584,-51.4658],"1.667":[0,-22.33584,-51.4658],"1.7":[0,-22.33584,-51.4658],"1.733":[0,-22.33584,-51.4658],"1.767":[0,-22.33584,-51.4658],"1.8":[0,-22.33584,-51.4658],"1.833":[0,-22.33584,-51.4658],"1.867":[0,-22.33584,-51.4658],"1.9":[0,-22.33584,-51.4658],"1.933":[0,-22.33584,-51.4658],"1.967":[0,-22.33584,-51.4658],"2.033":[0,-22.33584,-51.4658],"2.067":[0,-22.33584,-51.4658],"2.1":[0,-22.33584,-51.4658],"2.133":[0,-22.33584,-51.4658],"2.167":[0,-22.33584,-51.4658],"2.2":[0,-22.33584,-51.4658],"2.233":[0,-22.33584,-51.4658],"2.267":[0,-22.33584,-51.4658],"2.3":[0,-22.33584,-51.4658],"2.333":[0,-22.33584,-51.4658],"2.367":[0,-22.33584,-51.4658],"2.4":[0,-22.33584,-51.4658]}},"chainLarge3right":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"chainLarge4right":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"chainLarge5right":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"bone9":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"bone14":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"bone27":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"bone29":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"bone31":{"rotation":{"0":[0,0,0],"1":[0,0,0],"2":[0,0,0],"0.033":[0,0,0],"0.067":[0,0,0],"0.1":[0,0,0],"0.133":[0,0,0],"0.167":[0,0,0],"0.2":[0,0,0],"0.233":[0,0,0],"0.267":[0,0,0],"0.3":[0,0,0],"0.333":[0,0,0],"0.367":[0,0,0],"0.4":[0,0,0],"0.433":[0,0,0],"0.467":[0,0,0],"0.5":[0,0,0],"0.533":[0,0,0],"0.567":[0,0,0],"0.6":[0,0,0],"0.633":[0,0,0],"0.667":[0,0,0],"0.7":[0,0,0],"0.733":[0,0,0],"0.767":[0,0,0],"0.8":[0,0,0],"0.833":[0,0,0],"0.867":[0,0,0],"0.9":[0,0,0],"0.933":[0,0,0],"0.967":[0,0,0],"1.033":[0,0,0],"1.067":[0,0,0],"1.1":[0,0,0],"1.133":[0,0,0],"1.167":[0,0,0],"1.2":[0,0,0],"1.233":[0,0,0],"1.267":[0,0,0],"1.3":[0,0,0],"1.333":[0,0,0],"1.367":[0,0,0],"1.4":[0,0,0],"1.433":[0,0,0],"1.467":[0,0,0],"1.5":[0,0,0],"1.533":[0,0,0],"1.567":[0,0,0],"1.6":[0,0,0],"1.633":[0,0,0],"1.667":[0,0,0],"1.7":[0,0,0],"1.733":[0,0,0],"1.767":[0,0,0],"1.8":[0,0,0],"1.833":[0,0,0],"1.867":[0,0,0],"1.9":[0,0,0],"1.933":[0,0,0],"1.967":[0,0,0],"2.033":[0,0,0],"2.067":[0,0,0],"2.1":[0,0,0],"2.133":[0,0,0],"2.167":[0,0,0],"2.2":[0,0,0],"2.233":[0,0,0],"2.267":[0,0,0],"2.3":[0,0,0],"2.333":[0,0,0],"2.367":[0,0,0],"2.4":[0,0,0]}},"variables":{"position":{"0.0":[0,0,0]}}}}} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/rocker.geo.json b/src/main/resources/assets/evolution/cosmetic/wings/rocker.geo.json new file mode 100644 index 0000000..89219bf --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/rocker.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.pulse_rockerwings","texture_width":32,"texture_height":32,"visible_bounds_width":2,"visible_bounds_height":1.5,"visible_bounds_offset":[0,0.25,0]},"bones":[{"name":"wings","pivot":[0,24,4],"rotation":[15,0,0]},{"name":"leftWing","pivot":[1.93474,20.06815,4.97808],"parent":"wings","rotation":[0,-42.5,0]},{"name":"leftWingRot","pivot":[2.25965,21.48446,3.89665],"parent":"leftWing","rotation":[0,90,32.5],"cubes":[{"origin":[2.42172,19.1444,1.98257],"size":[0,7,14],"pivot":[2.42072,22.6444,8.98257],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[0,4],"uv_size":[7,3.5]}}},{"origin":[1.96078,18.24446,5.4745],"size":[0,11,8.5],"pivot":[1.96078,27.74446,9.7245],"rotation":[-45,0,0],"uv":{"east":{"uv":[0,17.5],"uv_size":[4.25,5.5]}}},{"origin":[2.69125,18.24446,5.4745],"size":[0,11,8.5],"pivot":[2.69125,27.74446,9.7245],"rotation":[-45,0,0],"uv":{"east":{"uv":[0,17.5],"uv_size":[4.25,5.5]}}},{"origin":[1.69344,22.54909,3.68904],"size":[1.5,6,2],"inflate":0.01,"pivot":[-5.87247,27.14503,4.94631],"rotation":[-10,0,0],"uv":{"north":{"uv":[14,3.75],"uv_size":[0.75,3]},"east":{"uv":[13,3.75],"uv_size":[1,3]},"south":{"uv":[12.25,3.75],"uv_size":[0.75,3]},"west":{"uv":[14.75,3.75],"uv_size":[1,3]},"up":{"uv":[13,3],"uv_size":[0.75,1]},"down":{"uv":[13,4.75],"uv_size":[-0.75,1]}}}]},{"name":"leftWingEnd","pivot":[2.39177,27.82388,4.84698],"parent":"leftWingRot","rotation":[32.5,0,0]},{"name":"leftWingEndRot","pivot":[2.39177,27.6098,5.18302],"parent":"leftWingEnd","rotation":[-52.5,0,0],"cubes":[{"origin":[2.37485,22.48755,5.7912],"size":[0.04296,7,14],"inflate":0.01,"pivot":[-5.88247,28.95923,5.41545],"rotation":[45,0,0],"uv":{"east":{"uv":[0,0],"uv_size":[7,3.5]}}},{"origin":[2.43344,30.59351,6.94247],"size":[0,14,7],"inflate":0.02,"pivot":[2.43344,37.59351,10.28622],"rotation":[-7.5,0,0],"uv":{"east":{"uv":[7.5,0.75],"uv_size":[3.5,7]}}},{"origin":[1.93344,31.56578,4.24806],"size":[1,4.5,1.5],"inflate":-0.01,"pivot":[-5.88247,28.68417,4.75141],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[9.75,12],"uv_size":[0.5,2]},"east":{"uv":[9,12],"uv_size":[0.75,2]},"south":{"uv":[8.5,12],"uv_size":[0.5,2]},"west":{"uv":[10.25,12],"uv_size":[0.75,2]},"up":{"uv":[9,11.5],"uv_size":[0.5,0.75]},"down":{"uv":[10.25,11.5],"uv_size":[-0.5,0.75]}}},{"origin":[1.93344,27.56695,4.87444],"size":[1,2,4],"pivot":[-5.88247,27.78863,5.4987],"rotation":[65,0,0],"uv":{"north":{"uv":[8,9],"uv_size":[0.5,1]},"east":{"uv":[6,9],"uv_size":[2,1]},"south":{"uv":[5.5,9],"uv_size":[0.5,1]},"west":{"uv":[8.5,9],"uv_size":[2,1]},"up":{"uv":[7.5,10],"uv_size":[0.5,-1.5]},"down":{"uv":[6.5,8.5],"uv_size":[-0.5,1.5]}}},{"origin":[2.57016,26.7505,5.10154],"size":[0,12,8.5],"pivot":[2.18344,29.2505,9.35154],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[0,8],"uv_size":[4.25,6]}}},{"origin":[2.18344,26.7505,5.10154],"size":[0,12,8.5],"pivot":[2.18344,29.2505,9.35154],"rotation":[-22.5,0,0],"uv":{"east":{"uv":[0,8],"uv_size":[4.25,6]}}}]},{"name":"leftLargeChain","pivot":[2.17356,30.67384,6.09645],"parent":"leftWingEndRot","rotation":[62.5,0,0]},{"name":"bone62","pivot":[2.17356,30.67384,6.09645],"parent":"leftLargeChain","rotation":[-90,-80,90]},{"name":"bone16","pivot":[2.17356,31.63725,6.56617],"parent":"bone62","rotation":[90,-2.5,-90],"cubes":[{"origin":[2.42356,31.38334,6.31617],"size":[0.5,2,0.5],"uv":{"north":{"uv":[11,8],"uv_size":[0.5,2]},"east":{"uv":[11,10],"uv_size":[0.5,2]},"south":{"uv":[12,0],"uv_size":[0.5,2]},"west":{"uv":[5,12],"uv_size":[0.5,2]},"up":{"uv":[2,16],"uv_size":[0.5,0.5]},"down":{"uv":[3,16.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.42356,31.38334,6.31617],"size":[0.5,2,0.5],"uv":{"north":{"uv":[11,0],"uv_size":[0.5,2]},"east":{"uv":[11,2],"uv_size":[0.5,2]},"south":{"uv":[11,4],"uv_size":[0.5,2]},"west":{"uv":[11,6],"uv_size":[0.5,2]},"up":{"uv":[5,8],"uv_size":[0.5,0.5]},"down":{"uv":[10,8.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92356,32.88334,6.31617],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[4,16],"uv_size":[0.5,0.5]},"east":{"uv":[17,18],"uv_size":[0.5,0.5]},"south":{"uv":[18,18],"uv_size":[0.5,0.5]},"west":{"uv":[19,0],"uv_size":[0.5,0.5]},"up":{"uv":[19,1],"uv_size":[0.5,0.5]},"down":{"uv":[19,2.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92356,31.38334,6.31617],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[19,3],"uv_size":[0.5,0.5]},"east":{"uv":[19,4],"uv_size":[0.5,0.5]},"south":{"uv":[19,5],"uv_size":[0.5,0.5]},"west":{"uv":[19,6],"uv_size":[0.5,0.5]},"up":{"uv":[19,7],"uv_size":[0.5,0.5]},"down":{"uv":[19,8.5],"uv_size":[0.5,-0.5]}}}]},{"name":"chainLarge1left","pivot":[2.17356,31.65698,6.63698],"parent":"bone62","rotation":[24.5,0,0],"cubes":[{"origin":[2.42356,29.90445,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[11,8],"uv_size":[0.5,2]},"east":{"uv":[11,10],"uv_size":[0.5,2]},"south":{"uv":[12,0],"uv_size":[0.5,2]},"west":{"uv":[5,12],"uv_size":[0.5,2]},"up":{"uv":[2,16],"uv_size":[0.5,0.5]},"down":{"uv":[3,16.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.42356,29.90445,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[11,0],"uv_size":[0.5,2]},"east":{"uv":[11,2],"uv_size":[0.5,2]},"south":{"uv":[11,4],"uv_size":[0.5,2]},"west":{"uv":[11,6],"uv_size":[0.5,2]},"up":{"uv":[5,8],"uv_size":[0.5,0.5]},"down":{"uv":[10,8.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92356,31.40445,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[4,16],"uv_size":[0.5,0.5]},"east":{"uv":[17,18],"uv_size":[0.5,0.5]},"south":{"uv":[18,18],"uv_size":[0.5,0.5]},"west":{"uv":[19,0],"uv_size":[0.5,0.5]},"up":{"uv":[19,1],"uv_size":[0.5,0.5]},"down":{"uv":[19,2.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92356,29.90445,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[19,3],"uv_size":[0.5,0.5]},"east":{"uv":[19,4],"uv_size":[0.5,0.5]},"south":{"uv":[19,5],"uv_size":[0.5,0.5]},"west":{"uv":[19,6],"uv_size":[0.5,0.5]},"up":{"uv":[19,7],"uv_size":[0.5,0.5]},"down":{"uv":[19,8.5],"uv_size":[0.5,-0.5]}}}]},{"name":"bone61","pivot":[2.17023,30.40185,6.64191],"parent":"chainLarge1left","rotation":[-85,-80,90],"cubes":[{"origin":[2.42023,28.65185,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[6,12],"uv_size":[0.5,2]},"east":{"uv":[7,12],"uv_size":[0.5,2]},"south":{"uv":[12,7],"uv_size":[0.5,2]},"west":{"uv":[12,9],"uv_size":[0.5,2]},"up":{"uv":[19,9],"uv_size":[0.5,0.5]},"down":{"uv":[19,10.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.42023,28.65185,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[11,12],"uv_size":[0.5,2]},"east":{"uv":[12,11],"uv_size":[0.5,2]},"south":{"uv":[13,0],"uv_size":[0.5,2]},"west":{"uv":[13,7],"uv_size":[0.5,2]},"up":{"uv":[19,11],"uv_size":[0.5,0.5]},"down":{"uv":[12,19.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,30.15185,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[19,12],"uv_size":[0.5,0.5]},"east":{"uv":[13,19],"uv_size":[0.5,0.5]},"south":{"uv":[19,13],"uv_size":[0.5,0.5]},"west":{"uv":[14,19],"uv_size":[0.5,0.5]},"up":{"uv":[19,14],"uv_size":[0.5,0.5]},"down":{"uv":[15,19.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,28.65185,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[19,15],"uv_size":[0.5,0.5]},"east":{"uv":[19,16],"uv_size":[0.5,0.5]},"south":{"uv":[17,19],"uv_size":[0.5,0.5]},"west":{"uv":[19,17],"uv_size":[0.5,0.5]},"up":{"uv":[18,19],"uv_size":[0.5,0.5]},"down":{"uv":[19,18.5],"uv_size":[0.5,-0.5]}}}]},{"name":"chainLarge2left","pivot":[2.17023,28.9331,6.64191],"parent":"bone61","rotation":[0,-90,0],"cubes":[{"origin":[2.42023,27.1831,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[13,9],"uv_size":[0.5,2]},"east":{"uv":[13,11],"uv_size":[0.5,2]},"south":{"uv":[12,13],"uv_size":[0.5,2]},"west":{"uv":[13,13],"uv_size":[0.5,2]},"up":{"uv":[19,19],"uv_size":[0.5,0.5]},"down":{"uv":[20,0.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.42023,27.1831,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[0,14],"uv_size":[0.5,2]},"east":{"uv":[14,0],"uv_size":[0.5,2]},"south":{"uv":[1,14],"uv_size":[0.5,2]},"west":{"uv":[2,14],"uv_size":[0.5,2]},"up":{"uv":[20,1],"uv_size":[0.5,0.5]},"down":{"uv":[20,2.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,28.6831,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[20,3],"uv_size":[0.5,0.5]},"east":{"uv":[20,4],"uv_size":[0.5,0.5]},"south":{"uv":[5,20],"uv_size":[0.5,0.5]},"west":{"uv":[20,5],"uv_size":[0.5,0.5]},"up":{"uv":[6,20],"uv_size":[0.5,0.5]},"down":{"uv":[20,6.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,27.1831,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[7,20],"uv_size":[0.5,0.5]},"east":{"uv":[20,7],"uv_size":[0.5,0.5]},"south":{"uv":[8,20],"uv_size":[0.5,0.5]},"west":{"uv":[20,8],"uv_size":[0.5,0.5]},"up":{"uv":[9,20],"uv_size":[0.5,0.5]},"down":{"uv":[20,9.5],"uv_size":[0.5,-0.5]}}}]},{"name":"bone10","pivot":[2.17023,27.51123,6.64191],"parent":"chainLarge2left","rotation":[0,-90,0],"cubes":[{"origin":[2.42023,25.76123,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[3,14],"uv_size":[0.5,2]},"east":{"uv":[4,14],"uv_size":[0.5,2]},"south":{"uv":[5,14],"uv_size":[0.5,2]},"west":{"uv":[6,14],"uv_size":[0.5,2]},"up":{"uv":[10,20],"uv_size":[0.5,0.5]},"down":{"uv":[20,10.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.42023,25.76123,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[7,14],"uv_size":[0.5,2]},"east":{"uv":[14,7],"uv_size":[0.5,2]},"south":{"uv":[8,14],"uv_size":[0.5,2]},"west":{"uv":[9,14],"uv_size":[0.5,2]},"up":{"uv":[11,20],"uv_size":[0.5,0.5]},"down":{"uv":[20,11.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,27.26123,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[12,20],"uv_size":[0.5,0.5]},"east":{"uv":[20,12],"uv_size":[0.5,0.5]},"south":{"uv":[13,20],"uv_size":[0.5,0.5]},"west":{"uv":[20,13],"uv_size":[0.5,0.5]},"up":{"uv":[14,20],"uv_size":[0.5,0.5]},"down":{"uv":[20,14.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,25.76123,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[15,20],"uv_size":[0.5,0.5]},"east":{"uv":[20,15],"uv_size":[0.5,0.5]},"south":{"uv":[16,20],"uv_size":[0.5,0.5]},"west":{"uv":[20,16],"uv_size":[0.5,0.5]},"up":{"uv":[17,20],"uv_size":[0.5,0.5]},"down":{"uv":[20,17.5],"uv_size":[0.5,-0.5]}}}]},{"name":"chainLarge3left","pivot":[2.17023,26.07373,6.64191],"parent":"bone10","rotation":[0,-90,0],"cubes":[{"origin":[2.42023,24.29248,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[14,9],"uv_size":[0.5,2]},"east":{"uv":[10,14],"uv_size":[0.5,2]},"south":{"uv":[11,14],"uv_size":[0.5,2]},"west":{"uv":[14,11],"uv_size":[0.5,2]},"up":{"uv":[18,20],"uv_size":[0.5,0.5]},"down":{"uv":[20,18.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.42023,24.29248,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[14,13],"uv_size":[0.5,2]},"east":{"uv":[15,0],"uv_size":[0.5,2]},"south":{"uv":[15,7],"uv_size":[0.5,2]},"west":{"uv":[15,9],"uv_size":[0.5,2]},"up":{"uv":[19,20],"uv_size":[0.5,0.5]},"down":{"uv":[20,19.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,25.79248,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[20,20],"uv_size":[0.5,0.5]},"east":{"uv":[21,0],"uv_size":[0.5,0.5]},"south":{"uv":[21,1],"uv_size":[0.5,0.5]},"west":{"uv":[21,2],"uv_size":[0.5,0.5]},"up":{"uv":[21,3],"uv_size":[0.5,0.5]},"down":{"uv":[21,4.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,24.29248,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[5,21],"uv_size":[0.5,0.5]},"east":{"uv":[21,5],"uv_size":[0.5,0.5]},"south":{"uv":[6,21],"uv_size":[0.5,0.5]},"west":{"uv":[21,6],"uv_size":[0.5,0.5]},"up":{"uv":[7,21],"uv_size":[0.5,0.5]},"down":{"uv":[21,7.5],"uv_size":[0.5,-0.5]}}}]},{"name":"bone11","pivot":[2.17023,24.59716,6.64191],"parent":"chainLarge3left","rotation":[0,-90,0],"cubes":[{"origin":[2.42023,22.94873,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[15,11],"uv_size":[0.5,2]},"east":{"uv":[12,15],"uv_size":[0.5,2]},"south":{"uv":[13,15],"uv_size":[0.5,2]},"west":{"uv":[15,13],"uv_size":[0.5,2]},"up":{"uv":[8,21],"uv_size":[0.5,0.5]},"down":{"uv":[21,8.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.42023,22.94873,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[14,15],"uv_size":[0.5,2]},"east":{"uv":[15,15],"uv_size":[0.5,2]},"south":{"uv":[16,0],"uv_size":[0.5,2]},"west":{"uv":[16,2],"uv_size":[0.5,2]},"up":{"uv":[9,21],"uv_size":[0.5,0.5]},"down":{"uv":[21,9.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,24.44873,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[10,21],"uv_size":[0.5,0.5]},"east":{"uv":[21,10],"uv_size":[0.5,0.5]},"south":{"uv":[11,21],"uv_size":[0.5,0.5]},"west":{"uv":[21,11],"uv_size":[0.5,0.5]},"up":{"uv":[12,21],"uv_size":[0.5,0.5]},"down":{"uv":[21,12.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,22.94873,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[13,21],"uv_size":[0.5,0.5]},"east":{"uv":[21,13],"uv_size":[0.5,0.5]},"south":{"uv":[14,21],"uv_size":[0.5,0.5]},"west":{"uv":[21,14],"uv_size":[0.5,0.5]},"up":{"uv":[15,21],"uv_size":[0.5,0.5]},"down":{"uv":[21,15.5],"uv_size":[0.5,-0.5]}}}]},{"name":"chainLarge4left","pivot":[2.17023,23.26513,6.64191],"parent":"bone11","rotation":[0,-90,0],"cubes":[{"origin":[2.42023,21.47998,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[16,4],"uv_size":[0.5,2]},"east":{"uv":[5,16],"uv_size":[0.5,2]},"south":{"uv":[6,16],"uv_size":[0.5,2]},"west":{"uv":[16,6],"uv_size":[0.5,2]},"up":{"uv":[16,21],"uv_size":[0.5,0.5]},"down":{"uv":[21,16.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.42023,21.47998,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[7,16],"uv_size":[0.5,2]},"east":{"uv":[8,16],"uv_size":[0.5,2]},"south":{"uv":[16,8],"uv_size":[0.5,2]},"west":{"uv":[9,16],"uv_size":[0.5,2]},"up":{"uv":[17,21],"uv_size":[0.5,0.5]},"down":{"uv":[21,17.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,22.97998,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[18,21],"uv_size":[0.5,0.5]},"east":{"uv":[21,18],"uv_size":[0.5,0.5]},"south":{"uv":[19,21],"uv_size":[0.5,0.5]},"west":{"uv":[21,19],"uv_size":[0.5,0.5]},"up":{"uv":[20,21],"uv_size":[0.5,0.5]},"down":{"uv":[21,20.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,21.47998,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[21,21],"uv_size":[0.5,0.5]},"east":{"uv":[22,0],"uv_size":[0.5,0.5]},"south":{"uv":[22,1],"uv_size":[0.5,0.5]},"west":{"uv":[22,2],"uv_size":[0.5,0.5]},"up":{"uv":[22,3],"uv_size":[0.5,0.5]},"down":{"uv":[22,4.5],"uv_size":[0.5,-0.5]}}}]},{"name":"bone13","pivot":[2.17023,21.83154,6.64191],"parent":"chainLarge4left","rotation":[0,-90,0],"cubes":[{"origin":[2.42023,20.08154,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[10,16],"uv_size":[0.5,2]},"east":{"uv":[16,10],"uv_size":[0.5,2]},"south":{"uv":[11,16],"uv_size":[0.5,2]},"west":{"uv":[16,12],"uv_size":[0.5,2]},"up":{"uv":[5,22],"uv_size":[0.5,0.5]},"down":{"uv":[22,5.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.42023,20.08154,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[16,14],"uv_size":[0.5,2]},"east":{"uv":[16,16],"uv_size":[0.5,2]},"south":{"uv":[17,0],"uv_size":[0.5,2]},"west":{"uv":[17,2],"uv_size":[0.5,2]},"up":{"uv":[6,22],"uv_size":[0.5,0.5]},"down":{"uv":[22,6.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,21.58154,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[7,22],"uv_size":[0.5,0.5]},"east":{"uv":[22,7],"uv_size":[0.5,0.5]},"south":{"uv":[8,22],"uv_size":[0.5,0.5]},"west":{"uv":[22,8],"uv_size":[0.5,0.5]},"up":{"uv":[9,22],"uv_size":[0.5,0.5]},"down":{"uv":[22,9.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,20.08154,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[10,22],"uv_size":[0.5,0.5]},"east":{"uv":[22,10],"uv_size":[0.5,0.5]},"south":{"uv":[11,22],"uv_size":[0.5,0.5]},"west":{"uv":[22,11],"uv_size":[0.5,0.5]},"up":{"uv":[12,22],"uv_size":[0.5,0.5]},"down":{"uv":[22,12.5],"uv_size":[0.5,-0.5]}}}]},{"name":"chainLarge5left","pivot":[2.17023,20.36279,6.64191],"parent":"bone13","rotation":[0,-90,0],"cubes":[{"origin":[2.42023,18.61279,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[17,4],"uv_size":[0.5,2]},"east":{"uv":[17,6],"uv_size":[0.5,2]},"south":{"uv":[17,8],"uv_size":[0.5,2]},"west":{"uv":[17,10],"uv_size":[0.5,2]},"up":{"uv":[13,22],"uv_size":[0.5,0.5]},"down":{"uv":[22,13.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.42023,18.61279,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[12,17],"uv_size":[0.5,2]},"east":{"uv":[17,12],"uv_size":[0.5,2]},"south":{"uv":[13,17],"uv_size":[0.5,2]},"west":{"uv":[14,17],"uv_size":[0.5,2]},"up":{"uv":[14,22],"uv_size":[0.5,0.5]},"down":{"uv":[22,14.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,20.11279,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[15,22],"uv_size":[0.5,0.5]},"east":{"uv":[22,15],"uv_size":[0.5,0.5]},"south":{"uv":[16,22],"uv_size":[0.5,0.5]},"west":{"uv":[22,16],"uv_size":[0.5,0.5]},"up":{"uv":[17,22],"uv_size":[0.5,0.5]},"down":{"uv":[22,17.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,18.61279,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[18,22],"uv_size":[0.5,0.5]},"east":{"uv":[22,18],"uv_size":[0.5,0.5]},"south":{"uv":[19,22],"uv_size":[0.5,0.5]},"west":{"uv":[22,19],"uv_size":[0.5,0.5]},"up":{"uv":[20,22],"uv_size":[0.5,0.5]},"down":{"uv":[22,20.5],"uv_size":[0.5,-0.5]}}}]},{"name":"bone15","pivot":[2.17023,18.96826,6.64191],"parent":"chainLarge5left","rotation":[0,-90,0],"cubes":[{"origin":[2.42023,17.71826,6.39191],"size":[0.5,1.5,0.5],"uv":{"north":{"uv":[9,18],"uv_size":[0.5,1.5]},"east":{"uv":[10,18],"uv_size":[0.5,1.5]},"south":{"uv":[18,10],"uv_size":[0.5,1.5]},"west":{"uv":[11,18],"uv_size":[0.5,1.5]},"up":{"uv":[21,22],"uv_size":[0.5,0.5]},"down":{"uv":[22,21.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.42023,17.71826,6.39191],"size":[0.5,1.5,0.5],"uv":{"north":{"uv":[18,12],"uv_size":[0.5,1.5]},"east":{"uv":[18,14],"uv_size":[0.5,1.5]},"south":{"uv":[16,18],"uv_size":[0.5,1.5]},"west":{"uv":[18,16],"uv_size":[0.5,1.5]},"up":{"uv":[22,22],"uv_size":[0.5,0.5]},"down":{"uv":[0,23.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.92023,18.71826,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[23,0],"uv_size":[0.5,0.5]},"east":{"uv":[1,23],"uv_size":[0.5,0.5]},"south":{"uv":[23,1],"uv_size":[0.5,0.5]},"west":{"uv":[2,23],"uv_size":[0.5,0.5]},"up":{"uv":[23,2],"uv_size":[0.5,0.5]},"down":{"uv":[3,23.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.90461,15.73388,6.39191],"size":[0.5,2,0.5],"pivot":[2.15461,16.7492,6.64191],"rotation":[-180,0,180],"uv":{"north":{"uv":[17,14],"uv_size":[0.5,2]},"east":{"uv":[15,17],"uv_size":[0.5,2]},"south":{"uv":[17,16],"uv_size":[0.5,2]},"west":{"uv":[18,0],"uv_size":[0.5,2]},"up":{"uv":[23,3],"uv_size":[0.5,0.5]},"down":{"uv":[4,23.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.91242,15.83318,6.13765],"size":[0.48437,2,0.5],"pivot":[2.15461,16.7492,6.64191],"rotation":[-165,0,180],"uv":{"north":{"uv":[18,2],"uv_size":[0.5,2]},"east":{"uv":[18,4],"uv_size":[0.5,2]},"south":{"uv":[5,18],"uv_size":[0.5,2]},"west":{"uv":[6,18],"uv_size":[0.5,2]},"up":{"uv":[23,4],"uv_size":[0.5,0.5]},"down":{"uv":[5,23.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.91242,15.83318,6.64618],"size":[0.48437,2,0.5],"pivot":[2.15461,16.7492,6.64191],"rotation":[165,0,-180],"uv":{"north":{"uv":[18,6],"uv_size":[0.5,2]},"east":{"uv":[7,18],"uv_size":[0.5,2]},"south":{"uv":[8,18],"uv_size":[0.5,2]},"west":{"uv":[18,8],"uv_size":[0.5,2]},"up":{"uv":[23,5],"uv_size":[0.5,0.5]},"down":{"uv":[6,23.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.42023,17.40966,5.89191],"size":[1.5,0.57032,1.5],"pivot":[2.17023,17.65966,6.64191],"rotation":[0,45,0],"uv":{"north":{"uv":[9,10],"uv_size":[1.5,0.5]},"east":{"uv":[12,2],"uv_size":[1.5,0.5]},"south":{"uv":[14,2],"uv_size":[1.5,0.5]},"west":{"uv":[0,16],"uv_size":[1.5,0.5]},"up":{"uv":[5,10],"uv_size":[1.5,1.5]},"down":{"uv":[7,11.5],"uv_size":[1.5,-1.5]}}}]},{"name":"bone21","pivot":[2.17356,31.62963,5.06667],"parent":"bone62","rotation":[-11.82286,2.06903,9.78575],"cubes":[{"origin":[2.42356,29.90791,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[12.5,0],"uv_size":[-0.5,2]},"east":{"uv":[11.5,10],"uv_size":[-0.5,2]},"south":{"uv":[11.5,8],"uv_size":[-0.5,2]},"west":{"uv":[5.5,12],"uv_size":[-0.5,2]},"up":{"uv":[2,16.5],"uv_size":[0.5,-0.5]},"down":{"uv":[3,16],"uv_size":[0.5,0.5]}}},{"origin":[1.42356,29.90791,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[11.5,4],"uv_size":[-0.5,2]},"east":{"uv":[11.5,2],"uv_size":[-0.5,2]},"south":{"uv":[11.5,0],"uv_size":[-0.5,2]},"west":{"uv":[11.5,6],"uv_size":[-0.5,2]},"up":{"uv":[5,8.5],"uv_size":[0.5,-0.5]},"down":{"uv":[10,8],"uv_size":[0.5,0.5]}}},{"origin":[1.92356,31.40791,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[18.5,18],"uv_size":[-0.5,0.5]},"east":{"uv":[17.5,18],"uv_size":[-0.5,0.5]},"south":{"uv":[4.5,16],"uv_size":[-0.5,0.5]},"west":{"uv":[19.5,0],"uv_size":[-0.5,0.5]},"up":{"uv":[19,1.5],"uv_size":[0.5,-0.5]},"down":{"uv":[19,2],"uv_size":[0.5,0.5]}}},{"origin":[1.92356,29.90791,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[19.5,5],"uv_size":[-0.5,0.5]},"east":{"uv":[19.5,4],"uv_size":[-0.5,0.5]},"south":{"uv":[19.5,3],"uv_size":[-0.5,0.5]},"west":{"uv":[19.5,6],"uv_size":[-0.5,0.5]},"up":{"uv":[19,7.5],"uv_size":[0.5,-0.5]},"down":{"uv":[19,8],"uv_size":[0.5,0.5]}}}]},{"name":"bone22","pivot":[2.17023,30.40531,5.07515],"parent":"bone21","rotation":[90,80,90],"cubes":[{"origin":[2.42023,28.65531,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[12.5,7],"uv_size":[-0.5,2]},"east":{"uv":[7.5,12],"uv_size":[-0.5,2]},"south":{"uv":[6.5,12],"uv_size":[-0.5,2]},"west":{"uv":[12.5,9],"uv_size":[-0.5,2]},"up":{"uv":[19,9.5],"uv_size":[0.5,-0.5]},"down":{"uv":[19,10],"uv_size":[0.5,0.5]}}},{"origin":[1.42023,28.65531,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[13.5,0],"uv_size":[-0.5,2]},"east":{"uv":[12.5,11],"uv_size":[-0.5,2]},"south":{"uv":[11.5,12],"uv_size":[-0.5,2]},"west":{"uv":[13.5,7],"uv_size":[-0.5,2]},"up":{"uv":[19,11.5],"uv_size":[0.5,-0.5]},"down":{"uv":[12,19],"uv_size":[0.5,0.5]}}},{"origin":[1.92023,30.15531,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[19.5,13],"uv_size":[-0.5,0.5]},"east":{"uv":[13.5,19],"uv_size":[-0.5,0.5]},"south":{"uv":[19.5,12],"uv_size":[-0.5,0.5]},"west":{"uv":[14.5,19],"uv_size":[-0.5,0.5]},"up":{"uv":[19,14.5],"uv_size":[0.5,-0.5]},"down":{"uv":[15,19],"uv_size":[0.5,0.5]}}},{"origin":[1.92023,28.65531,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[17.5,19],"uv_size":[-0.5,0.5]},"east":{"uv":[19.5,16],"uv_size":[-0.5,0.5]},"south":{"uv":[19.5,15],"uv_size":[-0.5,0.5]},"west":{"uv":[19.5,17],"uv_size":[-0.5,0.5]},"up":{"uv":[18,19.5],"uv_size":[0.5,-0.5]},"down":{"uv":[19,18],"uv_size":[0.5,0.5]}}}]},{"name":"bone23","pivot":[2.17023,28.93656,5.07515],"parent":"bone22","rotation":[0,90,0],"cubes":[{"origin":[2.42023,27.18656,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[12.5,13],"uv_size":[-0.5,2]},"east":{"uv":[13.5,11],"uv_size":[-0.5,2]},"south":{"uv":[13.5,9],"uv_size":[-0.5,2]},"west":{"uv":[13.5,13],"uv_size":[-0.5,2]},"up":{"uv":[19,19.5],"uv_size":[0.5,-0.5]},"down":{"uv":[20,0],"uv_size":[0.5,0.5]}}},{"origin":[1.42023,27.18656,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[1.5,14],"uv_size":[-0.5,2]},"east":{"uv":[14.5,0],"uv_size":[-0.5,2]},"south":{"uv":[0.5,14],"uv_size":[-0.5,2]},"west":{"uv":[2.5,14],"uv_size":[-0.5,2]},"up":{"uv":[20,1.5],"uv_size":[0.5,-0.5]},"down":{"uv":[20,2],"uv_size":[0.5,0.5]}}},{"origin":[1.92023,28.68656,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[5.5,20],"uv_size":[-0.5,0.5]},"east":{"uv":[20.5,4],"uv_size":[-0.5,0.5]},"south":{"uv":[20.5,3],"uv_size":[-0.5,0.5]},"west":{"uv":[20.5,5],"uv_size":[-0.5,0.5]},"up":{"uv":[6,20.5],"uv_size":[0.5,-0.5]},"down":{"uv":[20,6],"uv_size":[0.5,0.5]}}},{"origin":[1.92023,27.18656,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[8.5,20],"uv_size":[-0.5,0.5]},"east":{"uv":[20.5,7],"uv_size":[-0.5,0.5]},"south":{"uv":[7.5,20],"uv_size":[-0.5,0.5]},"west":{"uv":[20.5,8],"uv_size":[-0.5,0.5]},"up":{"uv":[9,20.5],"uv_size":[0.5,-0.5]},"down":{"uv":[20,9],"uv_size":[0.5,0.5]}}}]},{"name":"bone26","pivot":[2.17023,27.51469,5.07515],"parent":"bone23","rotation":[0,90,0],"cubes":[{"origin":[2.42023,25.76469,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[5.5,14],"uv_size":[-0.5,2]},"east":{"uv":[4.5,14],"uv_size":[-0.5,2]},"south":{"uv":[3.5,14],"uv_size":[-0.5,2]},"west":{"uv":[6.5,14],"uv_size":[-0.5,2]},"up":{"uv":[10,20.5],"uv_size":[0.5,-0.5]},"down":{"uv":[20,10],"uv_size":[0.5,0.5]}}},{"origin":[1.42023,25.76469,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[8.5,14],"uv_size":[-0.5,2]},"east":{"uv":[14.5,7],"uv_size":[-0.5,2]},"south":{"uv":[7.5,14],"uv_size":[-0.5,2]},"west":{"uv":[9.5,14],"uv_size":[-0.5,2]},"up":{"uv":[11,20.5],"uv_size":[0.5,-0.5]},"down":{"uv":[20,11],"uv_size":[0.5,0.5]}}},{"origin":[1.92023,27.26469,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[13.5,20],"uv_size":[-0.5,0.5]},"east":{"uv":[20.5,12],"uv_size":[-0.5,0.5]},"south":{"uv":[12.5,20],"uv_size":[-0.5,0.5]},"west":{"uv":[20.5,13],"uv_size":[-0.5,0.5]},"up":{"uv":[14,20.5],"uv_size":[0.5,-0.5]},"down":{"uv":[20,14],"uv_size":[0.5,0.5]}}},{"origin":[1.92023,25.76469,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[16.5,20],"uv_size":[-0.5,0.5]},"east":{"uv":[20.5,15],"uv_size":[-0.5,0.5]},"south":{"uv":[15.5,20],"uv_size":[-0.5,0.5]},"west":{"uv":[20.5,16],"uv_size":[-0.5,0.5]},"up":{"uv":[17,20.5],"uv_size":[0.5,-0.5]},"down":{"uv":[20,17],"uv_size":[0.5,0.5]}}}]},{"name":"chain_small_left","pivot":[1.4528,25.25088,3.84229],"parent":"leftWingRot","rotation":[44.89078,-3.53329,3.54002]},{"name":"ghjg","pivot":[1.4528,25.25088,3.84229],"parent":"chain_small_left","rotation":[0,-90,0]},{"name":"bone18","pivot":[1.72807,23.91854,3.21729],"parent":"ghjg","rotation":[7.26758,-2.15393,12.31594],"cubes":[{"origin":[1.97874,22.16906,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[23,6],"uv_size":[0.5,2]},"east":{"uv":[7,23],"uv_size":[0.5,2]},"south":{"uv":[8,23],"uv_size":[0.5,2]},"west":{"uv":[23,8],"uv_size":[0.5,2]},"up":{"uv":[24,19],"uv_size":[0.5,0.5]},"down":{"uv":[24,20.5],"uv_size":[0.5,-0.5]}}},{"origin":[0.97874,22.16906,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[9,23],"uv_size":[0.5,2]},"east":{"uv":[10,23],"uv_size":[0.5,2]},"south":{"uv":[23,10],"uv_size":[0.5,2]},"west":{"uv":[11,23],"uv_size":[0.5,2]},"up":{"uv":[24,21],"uv_size":[0.5,0.5]},"down":{"uv":[24,22.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.47874,23.66906,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[23,24],"uv_size":[0.5,0.5]},"east":{"uv":[24,23],"uv_size":[0.5,0.5]},"south":{"uv":[24,24],"uv_size":[0.5,0.5]},"west":{"uv":[25,0],"uv_size":[0.5,0.5]},"up":{"uv":[25,1],"uv_size":[0.5,0.5]},"down":{"uv":[25,2.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.47874,22.16906,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[25,3],"uv_size":[0.5,0.5]},"east":{"uv":[25,4],"uv_size":[0.5,0.5]},"south":{"uv":[25,5],"uv_size":[0.5,0.5]},"west":{"uv":[25,6],"uv_size":[0.5,0.5]},"up":{"uv":[7,25],"uv_size":[0.5,0.5]},"down":{"uv":[25,7.5],"uv_size":[0.5,-0.5]}}}]},{"name":"bone19","pivot":[1.72541,22.66646,3.21729],"parent":"bone18","rotation":[-90,-80,90],"cubes":[{"origin":[1.97541,20.91646,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[12,23],"uv_size":[0.5,2]},"east":{"uv":[23,12],"uv_size":[0.5,2]},"south":{"uv":[13,23],"uv_size":[0.5,2]},"west":{"uv":[14,23],"uv_size":[0.5,2]},"up":{"uv":[8,25],"uv_size":[0.5,0.5]},"down":{"uv":[25,8.5],"uv_size":[0.5,-0.5]}}},{"origin":[0.97541,20.91646,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[23,14],"uv_size":[0.5,2]},"east":{"uv":[15,23],"uv_size":[0.5,2]},"south":{"uv":[16,23],"uv_size":[0.5,2]},"west":{"uv":[23,16],"uv_size":[0.5,2]},"up":{"uv":[9,25],"uv_size":[0.5,0.5]},"down":{"uv":[25,9.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.47541,22.41646,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[10,25],"uv_size":[0.5,0.5]},"east":{"uv":[11,25],"uv_size":[0.5,0.5]},"south":{"uv":[12,25],"uv_size":[0.5,0.5]},"west":{"uv":[13,25],"uv_size":[0.5,0.5]},"up":{"uv":[25,13],"uv_size":[0.5,0.5]},"down":{"uv":[14,25.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.47541,20.91646,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[25,14],"uv_size":[0.5,0.5]},"east":{"uv":[15,25],"uv_size":[0.5,0.5]},"south":{"uv":[25,15],"uv_size":[0.5,0.5]},"west":{"uv":[16,25],"uv_size":[0.5,0.5]},"up":{"uv":[25,16],"uv_size":[0.5,0.5]},"down":{"uv":[17,25.5],"uv_size":[0.5,-0.5]}}}]},{"name":"bone24","pivot":[1.72541,21.19771,3.21729],"parent":"bone19","rotation":[0,-90,0],"cubes":[{"origin":[1.97541,19.44771,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[17,23],"uv_size":[0.5,2]},"east":{"uv":[18,23],"uv_size":[0.5,2]},"south":{"uv":[23,18],"uv_size":[0.5,2]},"west":{"uv":[19,23],"uv_size":[0.5,2]},"up":{"uv":[25,17],"uv_size":[0.5,0.5]},"down":{"uv":[18,25.5],"uv_size":[0.5,-0.5]}}},{"origin":[0.97541,19.44771,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[20,23],"uv_size":[0.5,2]},"east":{"uv":[23,20],"uv_size":[0.5,2]},"south":{"uv":[21,23],"uv_size":[0.5,2]},"west":{"uv":[22,23],"uv_size":[0.5,2]},"up":{"uv":[25,18],"uv_size":[0.5,0.5]},"down":{"uv":[19,25.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.47541,20.94771,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[25,19],"uv_size":[0.5,0.5]},"east":{"uv":[20,25],"uv_size":[0.5,0.5]},"south":{"uv":[25,20],"uv_size":[0.5,0.5]},"west":{"uv":[21,25],"uv_size":[0.5,0.5]},"up":{"uv":[25,21],"uv_size":[0.5,0.5]},"down":{"uv":[22,25.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.47541,19.44771,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[25,22],"uv_size":[0.5,0.5]},"east":{"uv":[23,25],"uv_size":[0.5,0.5]},"south":{"uv":[25,23],"uv_size":[0.5,0.5]},"west":{"uv":[24,25],"uv_size":[0.5,0.5]},"up":{"uv":[25,24],"uv_size":[0.5,0.5]},"down":{"uv":[25,25.5],"uv_size":[0.5,-0.5]}}}]},{"name":"bone20","pivot":[1.72541,19.77584,3.21729],"parent":"bone24","rotation":[0,-90,0],"cubes":[{"origin":[1.97541,18.02584,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[23,22],"uv_size":[0.5,2]},"east":{"uv":[0,24],"uv_size":[0.5,2]},"south":{"uv":[24,0],"uv_size":[0.5,2]},"west":{"uv":[1,24],"uv_size":[0.5,2]},"up":{"uv":[0,26],"uv_size":[0.5,0.5]},"down":{"uv":[26,0.5],"uv_size":[0.5,-0.5]}}},{"origin":[0.97541,18.02584,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[2,24],"uv_size":[0.5,2]},"east":{"uv":[24,2],"uv_size":[0.5,2]},"south":{"uv":[3,24],"uv_size":[0.5,2]},"west":{"uv":[4,24],"uv_size":[0.5,2]},"up":{"uv":[1,26],"uv_size":[0.5,0.5]},"down":{"uv":[26,1.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.47541,19.52584,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[2,26],"uv_size":[0.5,0.5]},"east":{"uv":[26,2],"uv_size":[0.5,0.5]},"south":{"uv":[3,26],"uv_size":[0.5,0.5]},"west":{"uv":[26,3],"uv_size":[0.5,0.5]},"up":{"uv":[4,26],"uv_size":[0.5,0.5]},"down":{"uv":[26,4.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.47541,18.02584,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[5,26],"uv_size":[0.5,0.5]},"east":{"uv":[26,5],"uv_size":[0.5,0.5]},"south":{"uv":[6,26],"uv_size":[0.5,0.5]},"west":{"uv":[26,6],"uv_size":[0.5,0.5]},"up":{"uv":[7,26],"uv_size":[0.5,0.5]},"down":{"uv":[26,7.5],"uv_size":[0.5,-0.5]}}}]},{"name":"bone25","pivot":[1.72541,18.30709,3.21729],"parent":"bone20","rotation":[0,-90,0],"cubes":[{"origin":[1.97541,16.55709,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[24,4],"uv_size":[0.5,2]},"east":{"uv":[5,24],"uv_size":[0.5,2]},"south":{"uv":[6,24],"uv_size":[0.5,2]},"west":{"uv":[24,6],"uv_size":[0.5,2]},"up":{"uv":[8,26],"uv_size":[0.5,0.5]},"down":{"uv":[26,8.5],"uv_size":[0.5,-0.5]}}},{"origin":[0.97541,16.55709,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[24,8],"uv_size":[0.5,2]},"east":{"uv":[24,13],"uv_size":[0.5,2]},"south":{"uv":[24,15],"uv_size":[0.5,2]},"west":{"uv":[24,17],"uv_size":[0.5,2]},"up":{"uv":[9,26],"uv_size":[0.5,0.5]},"down":{"uv":[26,9.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.47541,18.05709,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[10,26],"uv_size":[0.5,0.5]},"east":{"uv":[11,26],"uv_size":[0.5,0.5]},"south":{"uv":[12,26],"uv_size":[0.5,0.5]},"west":{"uv":[13,26],"uv_size":[0.5,0.5]},"up":{"uv":[26,13],"uv_size":[0.5,0.5]},"down":{"uv":[14,26.5],"uv_size":[0.5,-0.5]}}},{"origin":[1.47541,16.55709,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[26,14],"uv_size":[0.5,0.5]},"east":{"uv":[15,26],"uv_size":[0.5,0.5]},"south":{"uv":[26,15],"uv_size":[0.5,0.5]},"west":{"uv":[16,26],"uv_size":[0.5,0.5]},"up":{"uv":[26,16],"uv_size":[0.5,0.5]},"down":{"uv":[17,26.5],"uv_size":[0.5,-0.5]}}}]},{"name":"rightWing","pivot":[-1.93474,20.06815,4.97808],"parent":"wings","rotation":[0,42.5,0]},{"name":"rightWingRot","pivot":[-2.25965,21.48446,3.89665],"parent":"rightWing","rotation":[0,-90,-32.5],"cubes":[{"origin":[-2.42172,19.1444,1.98257],"size":[0,7,14],"pivot":[-2.42072,22.6444,8.98257],"rotation":[-22.5,0,0],"uv":{"west":{"uv":[7,4],"uv_size":[-7,3.5]}}},{"origin":[-1.96078,18.24446,5.4745],"size":[0,11,8.5],"pivot":[-1.96078,27.74446,9.7245],"rotation":[-45,0,0],"uv":{"west":{"uv":[4.25,17.5],"uv_size":[-4.25,5.5]}}},{"origin":[-2.69125,18.24446,5.4745],"size":[0,11,8.5],"pivot":[-2.69125,27.74446,9.7245],"rotation":[-45,0,0],"uv":{"west":{"uv":[4.25,17.5],"uv_size":[-4.25,5.5]}}},{"origin":[-3.19344,22.54909,3.68904],"size":[1.5,6,2],"inflate":0.01,"pivot":[5.87247,27.14503,4.94631],"rotation":[-10,0,0],"uv":{"north":{"uv":[14.75,3.75],"uv_size":[-0.75,3]},"east":{"uv":[15.75,3.75],"uv_size":[-1,3]},"south":{"uv":[13,3.75],"uv_size":[-0.75,3]},"west":{"uv":[14,3.75],"uv_size":[-1,3]},"up":{"uv":[13.75,3],"uv_size":[-0.75,1]},"down":{"uv":[12.25,4.75],"uv_size":[0.75,1]}}}]},{"name":"rightWingEnd","pivot":[-2.39177,27.82388,4.84698],"parent":"rightWingRot","rotation":[32.5,0,0]},{"name":"rightWingEndRot","pivot":[-2.39177,27.6098,5.18302],"parent":"rightWingEnd","rotation":[-52.5,0,0],"cubes":[{"origin":[-2.41781,22.48755,5.7912],"size":[0.04296,7,14],"inflate":0.01,"pivot":[5.88247,28.95923,5.41545],"rotation":[45,0,0],"uv":{"west":{"uv":[7,0],"uv_size":[-7,3.5]}}},{"origin":[-2.43344,30.59351,6.94247],"size":[0,14,7],"inflate":0.02,"pivot":[-2.43344,37.59351,10.28622],"rotation":[-7.5,0,0],"uv":{"west":{"uv":[11,0.75],"uv_size":[-3.5,7]}}},{"origin":[-2.93344,31.56578,4.24806],"size":[1,4.5,1.5],"inflate":-0.01,"pivot":[5.88247,28.68417,4.75141],"rotation":[-22.5,0,0],"uv":{"north":{"uv":[10.25,12],"uv_size":[-0.5,2]},"east":{"uv":[11,12],"uv_size":[-0.75,2]},"south":{"uv":[9,12],"uv_size":[-0.5,2]},"west":{"uv":[9.75,12],"uv_size":[-0.75,2]},"up":{"uv":[9.5,11.5],"uv_size":[-0.5,0.75]},"down":{"uv":[9.75,11.5],"uv_size":[0.5,0.75]}}},{"origin":[-2.93344,27.56695,4.87444],"size":[1,2,4],"pivot":[5.88247,27.78863,5.4987],"rotation":[65,0,0],"uv":{"north":{"uv":[8.5,9],"uv_size":[-0.5,1]},"east":{"uv":[10.5,9],"uv_size":[-2,1]},"south":{"uv":[6,9],"uv_size":[-0.5,1]},"west":{"uv":[8,9],"uv_size":[-2,1]},"up":{"uv":[8,10],"uv_size":[-0.5,-1.5]},"down":{"uv":[6,8.5],"uv_size":[0.5,1.5]}}},{"origin":[-2.57016,26.7505,5.10154],"size":[0,12,8.5],"pivot":[-2.18344,29.2505,9.35154],"rotation":[-22.5,0,0],"uv":{"west":{"uv":[4.25,8],"uv_size":[-4.25,6]}}},{"origin":[-2.18344,26.7505,5.10154],"size":[0,12,8.5],"pivot":[-2.18344,29.2505,9.35154],"rotation":[-22.5,0,0],"uv":{"west":{"uv":[4.25,8],"uv_size":[-4.25,6]}}}]},{"name":"rightLargeChain","pivot":[-2.17356,30.67384,6.09645],"parent":"rightWingEndRot","rotation":[62.5,0,0]},{"name":"bone2","pivot":[-2.17356,30.67384,6.09645],"parent":"rightLargeChain","rotation":[-90,80,-90]},{"name":"bone3","pivot":[-2.17356,31.63725,6.56617],"parent":"bone2","rotation":[90,2.5,90],"cubes":[{"origin":[-2.92356,31.38334,6.31617],"size":[0.5,2,0.5],"uv":{"north":{"uv":[11.5,8],"uv_size":[-0.5,2]},"east":{"uv":[5.5,12],"uv_size":[-0.5,2]},"south":{"uv":[12.5,0],"uv_size":[-0.5,2]},"west":{"uv":[11.5,10],"uv_size":[-0.5,2]},"up":{"uv":[2.5,16],"uv_size":[-0.5,0.5]},"down":{"uv":[3.5,16.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.92356,31.38334,6.31617],"size":[0.5,2,0.5],"uv":{"north":{"uv":[11.5,0],"uv_size":[-0.5,2]},"east":{"uv":[11.5,6],"uv_size":[-0.5,2]},"south":{"uv":[11.5,4],"uv_size":[-0.5,2]},"west":{"uv":[11.5,2],"uv_size":[-0.5,2]},"up":{"uv":[5.5,8],"uv_size":[-0.5,0.5]},"down":{"uv":[10.5,8.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42356,32.88334,6.31617],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[4.5,16],"uv_size":[-0.5,0.5]},"east":{"uv":[19.5,0],"uv_size":[-0.5,0.5]},"south":{"uv":[18.5,18],"uv_size":[-0.5,0.5]},"west":{"uv":[17.5,18],"uv_size":[-0.5,0.5]},"up":{"uv":[19.5,1],"uv_size":[-0.5,0.5]},"down":{"uv":[19.5,2.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42356,31.38334,6.31617],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[19.5,3],"uv_size":[-0.5,0.5]},"east":{"uv":[19.5,6],"uv_size":[-0.5,0.5]},"south":{"uv":[19.5,5],"uv_size":[-0.5,0.5]},"west":{"uv":[19.5,4],"uv_size":[-0.5,0.5]},"up":{"uv":[19.5,7],"uv_size":[-0.5,0.5]},"down":{"uv":[19.5,8.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"chainLarge1right","pivot":[-2.17356,31.65698,6.63698],"parent":"bone2","rotation":[24.5,0,0],"cubes":[{"origin":[-2.92356,29.90445,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[11.5,8],"uv_size":[-0.5,2]},"east":{"uv":[5.5,12],"uv_size":[-0.5,2]},"south":{"uv":[12.5,0],"uv_size":[-0.5,2]},"west":{"uv":[11.5,10],"uv_size":[-0.5,2]},"up":{"uv":[2.5,16],"uv_size":[-0.5,0.5]},"down":{"uv":[3.5,16.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.92356,29.90445,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[11.5,0],"uv_size":[-0.5,2]},"east":{"uv":[11.5,6],"uv_size":[-0.5,2]},"south":{"uv":[11.5,4],"uv_size":[-0.5,2]},"west":{"uv":[11.5,2],"uv_size":[-0.5,2]},"up":{"uv":[5.5,8],"uv_size":[-0.5,0.5]},"down":{"uv":[10.5,8.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42356,31.40445,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[4.5,16],"uv_size":[-0.5,0.5]},"east":{"uv":[19.5,0],"uv_size":[-0.5,0.5]},"south":{"uv":[18.5,18],"uv_size":[-0.5,0.5]},"west":{"uv":[17.5,18],"uv_size":[-0.5,0.5]},"up":{"uv":[19.5,1],"uv_size":[-0.5,0.5]},"down":{"uv":[19.5,2.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42356,29.90445,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[19.5,3],"uv_size":[-0.5,0.5]},"east":{"uv":[19.5,6],"uv_size":[-0.5,0.5]},"south":{"uv":[19.5,5],"uv_size":[-0.5,0.5]},"west":{"uv":[19.5,4],"uv_size":[-0.5,0.5]},"up":{"uv":[19.5,7],"uv_size":[-0.5,0.5]},"down":{"uv":[19.5,8.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"bone4","pivot":[-2.17023,30.40185,6.64191],"parent":"chainLarge1right","rotation":[-85,80,-90],"cubes":[{"origin":[-2.92023,28.65185,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[6.5,12],"uv_size":[-0.5,2]},"east":{"uv":[12.5,9],"uv_size":[-0.5,2]},"south":{"uv":[12.5,7],"uv_size":[-0.5,2]},"west":{"uv":[7.5,12],"uv_size":[-0.5,2]},"up":{"uv":[19.5,9],"uv_size":[-0.5,0.5]},"down":{"uv":[19.5,10.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.92023,28.65185,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[11.5,12],"uv_size":[-0.5,2]},"east":{"uv":[13.5,7],"uv_size":[-0.5,2]},"south":{"uv":[13.5,0],"uv_size":[-0.5,2]},"west":{"uv":[12.5,11],"uv_size":[-0.5,2]},"up":{"uv":[19.5,11],"uv_size":[-0.5,0.5]},"down":{"uv":[12.5,19.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,30.15185,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[19.5,12],"uv_size":[-0.5,0.5]},"east":{"uv":[14.5,19],"uv_size":[-0.5,0.5]},"south":{"uv":[19.5,13],"uv_size":[-0.5,0.5]},"west":{"uv":[13.5,19],"uv_size":[-0.5,0.5]},"up":{"uv":[19.5,14],"uv_size":[-0.5,0.5]},"down":{"uv":[15.5,19.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,28.65185,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[19.5,15],"uv_size":[-0.5,0.5]},"east":{"uv":[19.5,17],"uv_size":[-0.5,0.5]},"south":{"uv":[17.5,19],"uv_size":[-0.5,0.5]},"west":{"uv":[19.5,16],"uv_size":[-0.5,0.5]},"up":{"uv":[18.5,19],"uv_size":[-0.5,0.5]},"down":{"uv":[19.5,18.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"chainLarge2right","pivot":[-2.17023,28.9331,6.64191],"parent":"bone4","rotation":[0,90,0],"cubes":[{"origin":[-2.92023,27.1831,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[13.5,9],"uv_size":[-0.5,2]},"east":{"uv":[13.5,13],"uv_size":[-0.5,2]},"south":{"uv":[12.5,13],"uv_size":[-0.5,2]},"west":{"uv":[13.5,11],"uv_size":[-0.5,2]},"up":{"uv":[19.5,19],"uv_size":[-0.5,0.5]},"down":{"uv":[20.5,0.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.92023,27.1831,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[0.5,14],"uv_size":[-0.5,2]},"east":{"uv":[2.5,14],"uv_size":[-0.5,2]},"south":{"uv":[1.5,14],"uv_size":[-0.5,2]},"west":{"uv":[14.5,0],"uv_size":[-0.5,2]},"up":{"uv":[20.5,1],"uv_size":[-0.5,0.5]},"down":{"uv":[20.5,2.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,28.6831,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[20.5,3],"uv_size":[-0.5,0.5]},"east":{"uv":[20.5,5],"uv_size":[-0.5,0.5]},"south":{"uv":[5.5,20],"uv_size":[-0.5,0.5]},"west":{"uv":[20.5,4],"uv_size":[-0.5,0.5]},"up":{"uv":[6.5,20],"uv_size":[-0.5,0.5]},"down":{"uv":[20.5,6.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,27.1831,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[7.5,20],"uv_size":[-0.5,0.5]},"east":{"uv":[20.5,8],"uv_size":[-0.5,0.5]},"south":{"uv":[8.5,20],"uv_size":[-0.5,0.5]},"west":{"uv":[20.5,7],"uv_size":[-0.5,0.5]},"up":{"uv":[9.5,20],"uv_size":[-0.5,0.5]},"down":{"uv":[20.5,9.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"bone5","pivot":[-2.17023,27.51123,6.64191],"parent":"chainLarge2right","rotation":[0,90,0],"cubes":[{"origin":[-2.92023,25.76123,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[3.5,14],"uv_size":[-0.5,2]},"east":{"uv":[6.5,14],"uv_size":[-0.5,2]},"south":{"uv":[5.5,14],"uv_size":[-0.5,2]},"west":{"uv":[4.5,14],"uv_size":[-0.5,2]},"up":{"uv":[10.5,20],"uv_size":[-0.5,0.5]},"down":{"uv":[20.5,10.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.92023,25.76123,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[7.5,14],"uv_size":[-0.5,2]},"east":{"uv":[9.5,14],"uv_size":[-0.5,2]},"south":{"uv":[8.5,14],"uv_size":[-0.5,2]},"west":{"uv":[14.5,7],"uv_size":[-0.5,2]},"up":{"uv":[11.5,20],"uv_size":[-0.5,0.5]},"down":{"uv":[20.5,11.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,27.26123,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[12.5,20],"uv_size":[-0.5,0.5]},"east":{"uv":[20.5,13],"uv_size":[-0.5,0.5]},"south":{"uv":[13.5,20],"uv_size":[-0.5,0.5]},"west":{"uv":[20.5,12],"uv_size":[-0.5,0.5]},"up":{"uv":[14.5,20],"uv_size":[-0.5,0.5]},"down":{"uv":[20.5,14.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,25.76123,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[15.5,20],"uv_size":[-0.5,0.5]},"east":{"uv":[20.5,16],"uv_size":[-0.5,0.5]},"south":{"uv":[16.5,20],"uv_size":[-0.5,0.5]},"west":{"uv":[20.5,15],"uv_size":[-0.5,0.5]},"up":{"uv":[17.5,20],"uv_size":[-0.5,0.5]},"down":{"uv":[20.5,17.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"chainLarge3right","pivot":[-2.17023,26.07373,6.64191],"parent":"bone5","rotation":[0,90,0],"cubes":[{"origin":[-2.92023,24.29248,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[14.5,9],"uv_size":[-0.5,2]},"east":{"uv":[14.5,11],"uv_size":[-0.5,2]},"south":{"uv":[11.5,14],"uv_size":[-0.5,2]},"west":{"uv":[10.5,14],"uv_size":[-0.5,2]},"up":{"uv":[18.5,20],"uv_size":[-0.5,0.5]},"down":{"uv":[20.5,18.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.92023,24.29248,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[14.5,13],"uv_size":[-0.5,2]},"east":{"uv":[15.5,9],"uv_size":[-0.5,2]},"south":{"uv":[15.5,7],"uv_size":[-0.5,2]},"west":{"uv":[15.5,0],"uv_size":[-0.5,2]},"up":{"uv":[19.5,20],"uv_size":[-0.5,0.5]},"down":{"uv":[20.5,19.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,25.79248,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[20.5,20],"uv_size":[-0.5,0.5]},"east":{"uv":[21.5,2],"uv_size":[-0.5,0.5]},"south":{"uv":[21.5,1],"uv_size":[-0.5,0.5]},"west":{"uv":[21.5,0],"uv_size":[-0.5,0.5]},"up":{"uv":[21.5,3],"uv_size":[-0.5,0.5]},"down":{"uv":[21.5,4.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,24.29248,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[5.5,21],"uv_size":[-0.5,0.5]},"east":{"uv":[21.5,6],"uv_size":[-0.5,0.5]},"south":{"uv":[6.5,21],"uv_size":[-0.5,0.5]},"west":{"uv":[21.5,5],"uv_size":[-0.5,0.5]},"up":{"uv":[7.5,21],"uv_size":[-0.5,0.5]},"down":{"uv":[21.5,7.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"bone6","pivot":[-2.17023,24.59716,6.64191],"parent":"chainLarge3right","rotation":[0,90,0],"cubes":[{"origin":[-2.92023,22.94873,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[15.5,11],"uv_size":[-0.5,2]},"east":{"uv":[15.5,13],"uv_size":[-0.5,2]},"south":{"uv":[13.5,15],"uv_size":[-0.5,2]},"west":{"uv":[12.5,15],"uv_size":[-0.5,2]},"up":{"uv":[8.5,21],"uv_size":[-0.5,0.5]},"down":{"uv":[21.5,8.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.92023,22.94873,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[14.5,15],"uv_size":[-0.5,2]},"east":{"uv":[16.5,2],"uv_size":[-0.5,2]},"south":{"uv":[16.5,0],"uv_size":[-0.5,2]},"west":{"uv":[15.5,15],"uv_size":[-0.5,2]},"up":{"uv":[9.5,21],"uv_size":[-0.5,0.5]},"down":{"uv":[21.5,9.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,24.44873,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[10.5,21],"uv_size":[-0.5,0.5]},"east":{"uv":[21.5,11],"uv_size":[-0.5,0.5]},"south":{"uv":[11.5,21],"uv_size":[-0.5,0.5]},"west":{"uv":[21.5,10],"uv_size":[-0.5,0.5]},"up":{"uv":[12.5,21],"uv_size":[-0.5,0.5]},"down":{"uv":[21.5,12.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,22.94873,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[13.5,21],"uv_size":[-0.5,0.5]},"east":{"uv":[21.5,14],"uv_size":[-0.5,0.5]},"south":{"uv":[14.5,21],"uv_size":[-0.5,0.5]},"west":{"uv":[21.5,13],"uv_size":[-0.5,0.5]},"up":{"uv":[15.5,21],"uv_size":[-0.5,0.5]},"down":{"uv":[21.5,15.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"chainLarge4right","pivot":[-2.17023,23.26513,6.64191],"parent":"bone6","rotation":[0,90,0],"cubes":[{"origin":[-2.92023,21.47998,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[16.5,4],"uv_size":[-0.5,2]},"east":{"uv":[16.5,6],"uv_size":[-0.5,2]},"south":{"uv":[6.5,16],"uv_size":[-0.5,2]},"west":{"uv":[5.5,16],"uv_size":[-0.5,2]},"up":{"uv":[16.5,21],"uv_size":[-0.5,0.5]},"down":{"uv":[21.5,16.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.92023,21.47998,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[7.5,16],"uv_size":[-0.5,2]},"east":{"uv":[9.5,16],"uv_size":[-0.5,2]},"south":{"uv":[16.5,8],"uv_size":[-0.5,2]},"west":{"uv":[8.5,16],"uv_size":[-0.5,2]},"up":{"uv":[17.5,21],"uv_size":[-0.5,0.5]},"down":{"uv":[21.5,17.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,22.97998,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[18.5,21],"uv_size":[-0.5,0.5]},"east":{"uv":[21.5,19],"uv_size":[-0.5,0.5]},"south":{"uv":[19.5,21],"uv_size":[-0.5,0.5]},"west":{"uv":[21.5,18],"uv_size":[-0.5,0.5]},"up":{"uv":[20.5,21],"uv_size":[-0.5,0.5]},"down":{"uv":[21.5,20.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,21.47998,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[21.5,21],"uv_size":[-0.5,0.5]},"east":{"uv":[22.5,2],"uv_size":[-0.5,0.5]},"south":{"uv":[22.5,1],"uv_size":[-0.5,0.5]},"west":{"uv":[22.5,0],"uv_size":[-0.5,0.5]},"up":{"uv":[22.5,3],"uv_size":[-0.5,0.5]},"down":{"uv":[22.5,4.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"bone7","pivot":[-2.17023,21.83154,6.64191],"parent":"chainLarge4right","rotation":[0,90,0],"cubes":[{"origin":[-2.92023,20.08154,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[10.5,16],"uv_size":[-0.5,2]},"east":{"uv":[16.5,12],"uv_size":[-0.5,2]},"south":{"uv":[11.5,16],"uv_size":[-0.5,2]},"west":{"uv":[16.5,10],"uv_size":[-0.5,2]},"up":{"uv":[5.5,22],"uv_size":[-0.5,0.5]},"down":{"uv":[22.5,5.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.92023,20.08154,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[16.5,14],"uv_size":[-0.5,2]},"east":{"uv":[17.5,2],"uv_size":[-0.5,2]},"south":{"uv":[17.5,0],"uv_size":[-0.5,2]},"west":{"uv":[16.5,16],"uv_size":[-0.5,2]},"up":{"uv":[6.5,22],"uv_size":[-0.5,0.5]},"down":{"uv":[22.5,6.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,21.58154,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[7.5,22],"uv_size":[-0.5,0.5]},"east":{"uv":[22.5,8],"uv_size":[-0.5,0.5]},"south":{"uv":[8.5,22],"uv_size":[-0.5,0.5]},"west":{"uv":[22.5,7],"uv_size":[-0.5,0.5]},"up":{"uv":[9.5,22],"uv_size":[-0.5,0.5]},"down":{"uv":[22.5,9.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,20.08154,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[10.5,22],"uv_size":[-0.5,0.5]},"east":{"uv":[22.5,11],"uv_size":[-0.5,0.5]},"south":{"uv":[11.5,22],"uv_size":[-0.5,0.5]},"west":{"uv":[22.5,10],"uv_size":[-0.5,0.5]},"up":{"uv":[12.5,22],"uv_size":[-0.5,0.5]},"down":{"uv":[22.5,12.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"chainLarge5right","pivot":[-2.17023,20.36279,6.64191],"parent":"bone7","rotation":[0,90,0],"cubes":[{"origin":[-2.92023,18.61279,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[17.5,4],"uv_size":[-0.5,2]},"east":{"uv":[17.5,10],"uv_size":[-0.5,2]},"south":{"uv":[17.5,8],"uv_size":[-0.5,2]},"west":{"uv":[17.5,6],"uv_size":[-0.5,2]},"up":{"uv":[13.5,22],"uv_size":[-0.5,0.5]},"down":{"uv":[22.5,13.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.92023,18.61279,6.39191],"size":[0.5,2,0.5],"uv":{"north":{"uv":[12.5,17],"uv_size":[-0.5,2]},"east":{"uv":[14.5,17],"uv_size":[-0.5,2]},"south":{"uv":[13.5,17],"uv_size":[-0.5,2]},"west":{"uv":[17.5,12],"uv_size":[-0.5,2]},"up":{"uv":[14.5,22],"uv_size":[-0.5,0.5]},"down":{"uv":[22.5,14.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,20.11279,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[15.5,22],"uv_size":[-0.5,0.5]},"east":{"uv":[22.5,16],"uv_size":[-0.5,0.5]},"south":{"uv":[16.5,22],"uv_size":[-0.5,0.5]},"west":{"uv":[22.5,15],"uv_size":[-0.5,0.5]},"up":{"uv":[17.5,22],"uv_size":[-0.5,0.5]},"down":{"uv":[22.5,17.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,18.61279,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[18.5,22],"uv_size":[-0.5,0.5]},"east":{"uv":[22.5,19],"uv_size":[-0.5,0.5]},"south":{"uv":[19.5,22],"uv_size":[-0.5,0.5]},"west":{"uv":[22.5,18],"uv_size":[-0.5,0.5]},"up":{"uv":[20.5,22],"uv_size":[-0.5,0.5]},"down":{"uv":[22.5,20.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"bone8","pivot":[-2.17023,18.96826,6.64191],"parent":"chainLarge5right","rotation":[0,90,0],"cubes":[{"origin":[-2.92023,17.71826,6.39191],"size":[0.5,1.5,0.5],"uv":{"north":{"uv":[9.5,18],"uv_size":[-0.5,1.5]},"east":{"uv":[11.5,18],"uv_size":[-0.5,1.5]},"south":{"uv":[18.5,10],"uv_size":[-0.5,1.5]},"west":{"uv":[10.5,18],"uv_size":[-0.5,1.5]},"up":{"uv":[21.5,22],"uv_size":[-0.5,0.5]},"down":{"uv":[22.5,21.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.92023,17.71826,6.39191],"size":[0.5,1.5,0.5],"uv":{"north":{"uv":[18.5,12],"uv_size":[-0.5,1.5]},"east":{"uv":[18.5,16],"uv_size":[-0.5,1.5]},"south":{"uv":[16.5,18],"uv_size":[-0.5,1.5]},"west":{"uv":[18.5,14],"uv_size":[-0.5,1.5]},"up":{"uv":[22.5,22],"uv_size":[-0.5,0.5]},"down":{"uv":[0.5,23.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.42023,18.71826,6.39191],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[23.5,0],"uv_size":[-0.5,0.5]},"east":{"uv":[2.5,23],"uv_size":[-0.5,0.5]},"south":{"uv":[23.5,1],"uv_size":[-0.5,0.5]},"west":{"uv":[1.5,23],"uv_size":[-0.5,0.5]},"up":{"uv":[23.5,2],"uv_size":[-0.5,0.5]},"down":{"uv":[3.5,23.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.40461,15.73388,6.39191],"size":[0.5,2,0.5],"pivot":[-2.15461,16.7492,6.64191],"rotation":[-180,0,-180],"uv":{"north":{"uv":[17.5,14],"uv_size":[-0.5,2]},"east":{"uv":[18.5,0],"uv_size":[-0.5,2]},"south":{"uv":[17.5,16],"uv_size":[-0.5,2]},"west":{"uv":[15.5,17],"uv_size":[-0.5,2]},"up":{"uv":[23.5,3],"uv_size":[-0.5,0.5]},"down":{"uv":[4.5,23.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.39679,15.83318,6.13765],"size":[0.48437,2,0.5],"pivot":[-2.15461,16.7492,6.64191],"rotation":[-165,0,-180],"uv":{"north":{"uv":[18.5,2],"uv_size":[-0.5,2]},"east":{"uv":[6.5,18],"uv_size":[-0.5,2]},"south":{"uv":[5.5,18],"uv_size":[-0.5,2]},"west":{"uv":[18.5,4],"uv_size":[-0.5,2]},"up":{"uv":[23.5,4],"uv_size":[-0.5,0.5]},"down":{"uv":[5.5,23.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.39679,15.83318,6.64618],"size":[0.48437,2,0.5],"pivot":[-2.15461,16.7492,6.64191],"rotation":[165,0,180],"uv":{"north":{"uv":[18.5,6],"uv_size":[-0.5,2]},"east":{"uv":[18.5,8],"uv_size":[-0.5,2]},"south":{"uv":[8.5,18],"uv_size":[-0.5,2]},"west":{"uv":[7.5,18],"uv_size":[-0.5,2]},"up":{"uv":[23.5,5],"uv_size":[-0.5,0.5]},"down":{"uv":[6.5,23.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-2.92023,17.40966,5.89191],"size":[1.5,0.57032,1.5],"pivot":[-2.17023,17.65966,6.64191],"rotation":[0,-45,0],"uv":{"north":{"uv":[10.5,10],"uv_size":[-1.5,0.5]},"east":{"uv":[1.5,16],"uv_size":[-1.5,0.5]},"south":{"uv":[15.5,2],"uv_size":[-1.5,0.5]},"west":{"uv":[13.5,2],"uv_size":[-1.5,0.5]},"up":{"uv":[6.5,10],"uv_size":[-1.5,1.5]},"down":{"uv":[8.5,11.5],"uv_size":[-1.5,-1.5]}}}]},{"name":"bone9","pivot":[-2.17356,31.62963,5.06667],"parent":"bone2","rotation":[-11.82286,-2.06903,-9.78575],"cubes":[{"origin":[-2.92356,29.90791,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[12,0],"uv_size":[0.5,2]},"east":{"uv":[5,12],"uv_size":[0.5,2]},"south":{"uv":[11,8],"uv_size":[0.5,2]},"west":{"uv":[11,10],"uv_size":[0.5,2]},"up":{"uv":[2.5,16.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[3.5,16],"uv_size":[-0.5,0.5]}}},{"origin":[-1.92356,29.90791,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[11,4],"uv_size":[0.5,2]},"east":{"uv":[11,6],"uv_size":[0.5,2]},"south":{"uv":[11,0],"uv_size":[0.5,2]},"west":{"uv":[11,2],"uv_size":[0.5,2]},"up":{"uv":[5.5,8.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[10.5,8],"uv_size":[-0.5,0.5]}}},{"origin":[-2.42356,31.40791,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[18,18],"uv_size":[0.5,0.5]},"east":{"uv":[19,0],"uv_size":[0.5,0.5]},"south":{"uv":[4,16],"uv_size":[0.5,0.5]},"west":{"uv":[17,18],"uv_size":[0.5,0.5]},"up":{"uv":[19.5,1.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[19.5,2],"uv_size":[-0.5,0.5]}}},{"origin":[-2.42356,29.90791,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[19,5],"uv_size":[0.5,0.5]},"east":{"uv":[19,6],"uv_size":[0.5,0.5]},"south":{"uv":[19,3],"uv_size":[0.5,0.5]},"west":{"uv":[19,4],"uv_size":[0.5,0.5]},"up":{"uv":[19.5,7.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[19.5,8],"uv_size":[-0.5,0.5]}}}]},{"name":"bone12","pivot":[-2.17023,30.40531,5.07515],"parent":"bone9","rotation":[90,-80,-90],"cubes":[{"origin":[-2.92023,28.65531,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[12,7],"uv_size":[0.5,2]},"east":{"uv":[12,9],"uv_size":[0.5,2]},"south":{"uv":[6,12],"uv_size":[0.5,2]},"west":{"uv":[7,12],"uv_size":[0.5,2]},"up":{"uv":[19.5,9.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[19.5,10],"uv_size":[-0.5,0.5]}}},{"origin":[-1.92023,28.65531,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[13,0],"uv_size":[0.5,2]},"east":{"uv":[13,7],"uv_size":[0.5,2]},"south":{"uv":[11,12],"uv_size":[0.5,2]},"west":{"uv":[12,11],"uv_size":[0.5,2]},"up":{"uv":[19.5,11.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[12.5,19],"uv_size":[-0.5,0.5]}}},{"origin":[-2.42023,30.15531,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[19,13],"uv_size":[0.5,0.5]},"east":{"uv":[14,19],"uv_size":[0.5,0.5]},"south":{"uv":[19,12],"uv_size":[0.5,0.5]},"west":{"uv":[13,19],"uv_size":[0.5,0.5]},"up":{"uv":[19.5,14.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[15.5,19],"uv_size":[-0.5,0.5]}}},{"origin":[-2.42023,28.65531,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[17,19],"uv_size":[0.5,0.5]},"east":{"uv":[19,17],"uv_size":[0.5,0.5]},"south":{"uv":[19,15],"uv_size":[0.5,0.5]},"west":{"uv":[19,16],"uv_size":[0.5,0.5]},"up":{"uv":[18.5,19.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[19.5,18],"uv_size":[-0.5,0.5]}}}]},{"name":"bone14","pivot":[-2.17023,28.93656,5.07515],"parent":"bone12","rotation":[0,-90,0],"cubes":[{"origin":[-2.92023,27.18656,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[12,13],"uv_size":[0.5,2]},"east":{"uv":[13,13],"uv_size":[0.5,2]},"south":{"uv":[13,9],"uv_size":[0.5,2]},"west":{"uv":[13,11],"uv_size":[0.5,2]},"up":{"uv":[19.5,19.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[20.5,0],"uv_size":[-0.5,0.5]}}},{"origin":[-1.92023,27.18656,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[1,14],"uv_size":[0.5,2]},"east":{"uv":[2,14],"uv_size":[0.5,2]},"south":{"uv":[0,14],"uv_size":[0.5,2]},"west":{"uv":[14,0],"uv_size":[0.5,2]},"up":{"uv":[20.5,1.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[20.5,2],"uv_size":[-0.5,0.5]}}},{"origin":[-2.42023,28.68656,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[5,20],"uv_size":[0.5,0.5]},"east":{"uv":[20,5],"uv_size":[0.5,0.5]},"south":{"uv":[20,3],"uv_size":[0.5,0.5]},"west":{"uv":[20,4],"uv_size":[0.5,0.5]},"up":{"uv":[6.5,20.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[20.5,6],"uv_size":[-0.5,0.5]}}},{"origin":[-2.42023,27.18656,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[8,20],"uv_size":[0.5,0.5]},"east":{"uv":[20,8],"uv_size":[0.5,0.5]},"south":{"uv":[7,20],"uv_size":[0.5,0.5]},"west":{"uv":[20,7],"uv_size":[0.5,0.5]},"up":{"uv":[9.5,20.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[20.5,9],"uv_size":[-0.5,0.5]}}}]},{"name":"bone17","pivot":[-2.17023,27.51469,5.07515],"parent":"bone14","rotation":[0,-90,0],"cubes":[{"origin":[-2.92023,25.76469,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[5,14],"uv_size":[0.5,2]},"east":{"uv":[6,14],"uv_size":[0.5,2]},"south":{"uv":[3,14],"uv_size":[0.5,2]},"west":{"uv":[4,14],"uv_size":[0.5,2]},"up":{"uv":[10.5,20.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[20.5,10],"uv_size":[-0.5,0.5]}}},{"origin":[-1.92023,25.76469,4.82515],"size":[0.5,2,0.5],"uv":{"north":{"uv":[8,14],"uv_size":[0.5,2]},"east":{"uv":[9,14],"uv_size":[0.5,2]},"south":{"uv":[7,14],"uv_size":[0.5,2]},"west":{"uv":[14,7],"uv_size":[0.5,2]},"up":{"uv":[11.5,20.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[20.5,11],"uv_size":[-0.5,0.5]}}},{"origin":[-2.42023,27.26469,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[13,20],"uv_size":[0.5,0.5]},"east":{"uv":[20,13],"uv_size":[0.5,0.5]},"south":{"uv":[12,20],"uv_size":[0.5,0.5]},"west":{"uv":[20,12],"uv_size":[0.5,0.5]},"up":{"uv":[14.5,20.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[20.5,14],"uv_size":[-0.5,0.5]}}},{"origin":[-2.42023,25.76469,4.82515],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[16,20],"uv_size":[0.5,0.5]},"east":{"uv":[20,16],"uv_size":[0.5,0.5]},"south":{"uv":[15,20],"uv_size":[0.5,0.5]},"west":{"uv":[20,15],"uv_size":[0.5,0.5]},"up":{"uv":[17.5,20.5],"uv_size":[-0.5,-0.5]},"down":{"uv":[20.5,17],"uv_size":[-0.5,0.5]}}}]},{"name":"chain_small_right","pivot":[-1.4528,25.25088,3.84229],"parent":"rightWingRot","rotation":[44.89078,3.53329,-3.54002]},{"name":"ghjg2","pivot":[-1.4528,25.25088,3.84229],"parent":"chain_small_right","rotation":[0,90,0]},{"name":"bone27","pivot":[-1.72807,23.91854,3.21729],"parent":"ghjg2","rotation":[7.26758,2.15393,-12.31594],"cubes":[{"origin":[-2.47874,22.16906,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[23.5,6],"uv_size":[-0.5,2]},"east":{"uv":[23.5,8],"uv_size":[-0.5,2]},"south":{"uv":[8.5,23],"uv_size":[-0.5,2]},"west":{"uv":[7.5,23],"uv_size":[-0.5,2]},"up":{"uv":[24.5,19],"uv_size":[-0.5,0.5]},"down":{"uv":[24.5,20.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.47874,22.16906,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[9.5,23],"uv_size":[-0.5,2]},"east":{"uv":[11.5,23],"uv_size":[-0.5,2]},"south":{"uv":[23.5,10],"uv_size":[-0.5,2]},"west":{"uv":[10.5,23],"uv_size":[-0.5,2]},"up":{"uv":[24.5,21],"uv_size":[-0.5,0.5]},"down":{"uv":[24.5,22.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.97874,23.66906,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[23.5,24],"uv_size":[-0.5,0.5]},"east":{"uv":[25.5,0],"uv_size":[-0.5,0.5]},"south":{"uv":[24.5,24],"uv_size":[-0.5,0.5]},"west":{"uv":[24.5,23],"uv_size":[-0.5,0.5]},"up":{"uv":[25.5,1],"uv_size":[-0.5,0.5]},"down":{"uv":[25.5,2.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.97874,22.16906,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[25.5,3],"uv_size":[-0.5,0.5]},"east":{"uv":[25.5,6],"uv_size":[-0.5,0.5]},"south":{"uv":[25.5,5],"uv_size":[-0.5,0.5]},"west":{"uv":[25.5,4],"uv_size":[-0.5,0.5]},"up":{"uv":[7.5,25],"uv_size":[-0.5,0.5]},"down":{"uv":[25.5,7.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"bone28","pivot":[-1.72541,22.66646,3.21729],"parent":"bone27","rotation":[-90,80,-90],"cubes":[{"origin":[-2.47541,20.91646,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[12.5,23],"uv_size":[-0.5,2]},"east":{"uv":[14.5,23],"uv_size":[-0.5,2]},"south":{"uv":[13.5,23],"uv_size":[-0.5,2]},"west":{"uv":[23.5,12],"uv_size":[-0.5,2]},"up":{"uv":[8.5,25],"uv_size":[-0.5,0.5]},"down":{"uv":[25.5,8.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.47541,20.91646,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[23.5,14],"uv_size":[-0.5,2]},"east":{"uv":[23.5,16],"uv_size":[-0.5,2]},"south":{"uv":[16.5,23],"uv_size":[-0.5,2]},"west":{"uv":[15.5,23],"uv_size":[-0.5,2]},"up":{"uv":[9.5,25],"uv_size":[-0.5,0.5]},"down":{"uv":[25.5,9.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.97541,22.41646,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[10.5,25],"uv_size":[-0.5,0.5]},"east":{"uv":[13.5,25],"uv_size":[-0.5,0.5]},"south":{"uv":[12.5,25],"uv_size":[-0.5,0.5]},"west":{"uv":[11.5,25],"uv_size":[-0.5,0.5]},"up":{"uv":[25.5,13],"uv_size":[-0.5,0.5]},"down":{"uv":[14.5,25.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.97541,20.91646,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[25.5,14],"uv_size":[-0.5,0.5]},"east":{"uv":[16.5,25],"uv_size":[-0.5,0.5]},"south":{"uv":[25.5,15],"uv_size":[-0.5,0.5]},"west":{"uv":[15.5,25],"uv_size":[-0.5,0.5]},"up":{"uv":[25.5,16],"uv_size":[-0.5,0.5]},"down":{"uv":[17.5,25.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"bone29","pivot":[-1.72541,21.19771,3.21729],"parent":"bone28","rotation":[0,90,0],"cubes":[{"origin":[-2.47541,19.44771,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[17.5,23],"uv_size":[-0.5,2]},"east":{"uv":[19.5,23],"uv_size":[-0.5,2]},"south":{"uv":[23.5,18],"uv_size":[-0.5,2]},"west":{"uv":[18.5,23],"uv_size":[-0.5,2]},"up":{"uv":[25.5,17],"uv_size":[-0.5,0.5]},"down":{"uv":[18.5,25.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.47541,19.44771,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[20.5,23],"uv_size":[-0.5,2]},"east":{"uv":[22.5,23],"uv_size":[-0.5,2]},"south":{"uv":[21.5,23],"uv_size":[-0.5,2]},"west":{"uv":[23.5,20],"uv_size":[-0.5,2]},"up":{"uv":[25.5,18],"uv_size":[-0.5,0.5]},"down":{"uv":[19.5,25.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.97541,20.94771,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[25.5,19],"uv_size":[-0.5,0.5]},"east":{"uv":[21.5,25],"uv_size":[-0.5,0.5]},"south":{"uv":[25.5,20],"uv_size":[-0.5,0.5]},"west":{"uv":[20.5,25],"uv_size":[-0.5,0.5]},"up":{"uv":[25.5,21],"uv_size":[-0.5,0.5]},"down":{"uv":[22.5,25.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.97541,19.44771,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[25.5,22],"uv_size":[-0.5,0.5]},"east":{"uv":[24.5,25],"uv_size":[-0.5,0.5]},"south":{"uv":[25.5,23],"uv_size":[-0.5,0.5]},"west":{"uv":[23.5,25],"uv_size":[-0.5,0.5]},"up":{"uv":[25.5,24],"uv_size":[-0.5,0.5]},"down":{"uv":[25.5,25.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"bone30","pivot":[-1.72541,19.77584,3.21729],"parent":"bone29","rotation":[0,90,0],"cubes":[{"origin":[-2.47541,18.02584,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[23.5,22],"uv_size":[-0.5,2]},"east":{"uv":[1.5,24],"uv_size":[-0.5,2]},"south":{"uv":[24.5,0],"uv_size":[-0.5,2]},"west":{"uv":[0.5,24],"uv_size":[-0.5,2]},"up":{"uv":[0.5,26],"uv_size":[-0.5,0.5]},"down":{"uv":[26.5,0.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.47541,18.02584,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[2.5,24],"uv_size":[-0.5,2]},"east":{"uv":[4.5,24],"uv_size":[-0.5,2]},"south":{"uv":[3.5,24],"uv_size":[-0.5,2]},"west":{"uv":[24.5,2],"uv_size":[-0.5,2]},"up":{"uv":[1.5,26],"uv_size":[-0.5,0.5]},"down":{"uv":[26.5,1.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.97541,19.52584,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[2.5,26],"uv_size":[-0.5,0.5]},"east":{"uv":[26.5,3],"uv_size":[-0.5,0.5]},"south":{"uv":[3.5,26],"uv_size":[-0.5,0.5]},"west":{"uv":[26.5,2],"uv_size":[-0.5,0.5]},"up":{"uv":[4.5,26],"uv_size":[-0.5,0.5]},"down":{"uv":[26.5,4.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.97541,18.02584,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[5.5,26],"uv_size":[-0.5,0.5]},"east":{"uv":[26.5,6],"uv_size":[-0.5,0.5]},"south":{"uv":[6.5,26],"uv_size":[-0.5,0.5]},"west":{"uv":[26.5,5],"uv_size":[-0.5,0.5]},"up":{"uv":[7.5,26],"uv_size":[-0.5,0.5]},"down":{"uv":[26.5,7.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"bone31","pivot":[-1.72541,18.30709,3.21729],"parent":"bone30","rotation":[0,90,0],"cubes":[{"origin":[-2.47541,16.55709,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[24.5,4],"uv_size":[-0.5,2]},"east":{"uv":[24.5,6],"uv_size":[-0.5,2]},"south":{"uv":[6.5,24],"uv_size":[-0.5,2]},"west":{"uv":[5.5,24],"uv_size":[-0.5,2]},"up":{"uv":[8.5,26],"uv_size":[-0.5,0.5]},"down":{"uv":[26.5,8.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.47541,16.55709,2.96729],"size":[0.5,2,0.5],"uv":{"north":{"uv":[24.5,8],"uv_size":[-0.5,2]},"east":{"uv":[24.5,17],"uv_size":[-0.5,2]},"south":{"uv":[24.5,15],"uv_size":[-0.5,2]},"west":{"uv":[24.5,13],"uv_size":[-0.5,2]},"up":{"uv":[9.5,26],"uv_size":[-0.5,0.5]},"down":{"uv":[26.5,9.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.97541,18.05709,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[10.5,26],"uv_size":[-0.5,0.5]},"east":{"uv":[13.5,26],"uv_size":[-0.5,0.5]},"south":{"uv":[12.5,26],"uv_size":[-0.5,0.5]},"west":{"uv":[11.5,26],"uv_size":[-0.5,0.5]},"up":{"uv":[26.5,13],"uv_size":[-0.5,0.5]},"down":{"uv":[14.5,26.5],"uv_size":[-0.5,-0.5]}}},{"origin":[-1.97541,16.55709,2.96729],"size":[0.5,0.5,0.5],"uv":{"north":{"uv":[26.5,14],"uv_size":[-0.5,0.5]},"east":{"uv":[16.5,26],"uv_size":[-0.5,0.5]},"south":{"uv":[26.5,15],"uv_size":[-0.5,0.5]},"west":{"uv":[15.5,26],"uv_size":[-0.5,0.5]},"up":{"uv":[26.5,16],"uv_size":[-0.5,0.5]},"down":{"uv":[17.5,26.5],"uv_size":[-0.5,-0.5]}}}]},{"name":"variables","pivot":[0,0,0]}]}]} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/spider.animation.json b/src/main/resources/assets/evolution/cosmetic/wings/spider.animation.json new file mode 100644 index 0000000..e284374 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/spider.animation.json @@ -0,0 +1 @@ +{"animation.spider_wings.idle":{"loop":true,"animation_length":2.4,"bones":{"wings":{"position":{"0":[0,0,0.25],"1":[0,0,-0.21651],"2":[0,0,0.125],"0.033":[0,0,0.24905],"0.067":[0,0,0.2462],"0.1":[0,0,0.24148],"0.133":[0,0,0.23492],"0.167":[0,0,0.22658],"0.2":[0,0,0.21651],"0.233":[0,0,0.20479],"0.267":[0,0,0.19151],"0.3":[0,0,0.17678],"0.333":[0,0,0.1607],"0.367":[0,0,0.14339],"0.4":[0,0,0.125],"0.433":[0,0,0.10565],"0.467":[0,0,0.08551],"0.5":[0,0,0.0647],"0.533":[0,0,0.04341],"0.567":[0,0,0.02179],"0.6":[0,0,0],"0.633":[0,0,-0.02179],"0.667":[0,0,-0.04341],"0.7":[0,0,-0.0647],"0.733":[0,0,-0.08551],"0.767":[0,0,-0.10565],"0.8":[0,0,-0.125],"0.833":[0,0,-0.14339],"0.867":[0,0,-0.1607],"0.9":[0,0,-0.17678],"0.933":[0,0,-0.19151],"0.967":[0,0,-0.20479],"1.033":[0,0,-0.22658],"1.067":[0,0,-0.23492],"1.1":[0,0,-0.24148],"1.133":[0,0,-0.2462],"1.167":[0,0,-0.24905],"1.2":[0,0,-0.25],"1.233":[0,0,-0.24905],"1.267":[0,0,-0.2462],"1.3":[0,0,-0.24148],"1.333":[0,0,-0.23492],"1.367":[0,0,-0.22658],"1.4":[0,0,-0.21651],"1.433":[0,0,-0.20479],"1.467":[0,0,-0.19151],"1.5":[0,0,-0.17678],"1.533":[0,0,-0.1607],"1.567":[0,0,-0.14339],"1.6":[0,0,-0.125],"1.633":[0,0,-0.10565],"1.667":[0,0,-0.08551],"1.7":[0,0,-0.0647],"1.733":[0,0,-0.04341],"1.767":[0,0,-0.02179],"1.8":[0,0,0],"1.833":[0,0,0.02179],"1.867":[0,0,0.04341],"1.9":[0,0,0.0647],"1.933":[0,0,0.08551],"1.967":[0,0,0.10565],"2.033":[0,0,0.14339],"2.067":[0,0,0.1607],"2.1":[0,0,0.17678],"2.133":[0,0,0.19151],"2.167":[0,0,0.20479],"2.2":[0,0,0.21651],"2.233":[0,0,0.22658],"2.267":[0,0,0.23492],"2.3":[0,0,0.24148],"2.333":[0,0,0.2462],"2.367":[0,0,0.24905],"2.4":[0,0,0.25]}},"Segment_3":{"rotation":{"0":[0,0,0],"1":[0,27.99038,0],"2":[0,7.5,0],"0.033":[0,0.05708,0],"0.067":[0,0.22788,0],"0.1":[0,0.51111,0],"0.133":[0,0.90461,0],"0.167":[0,1.40538,0],"0.2":[0,2.00962,0],"0.233":[0,2.71272,0],"0.267":[0,3.50933,0],"0.3":[0,4.3934,0],"0.333":[0,5.35819,0],"0.367":[0,6.39635,0],"0.4":[0,7.5,0],"0.433":[0,8.66073,0],"0.467":[0,9.8697,0],"0.5":[0,11.11771,0],"0.533":[0,12.39528,0],"0.567":[0,13.69266,0],"0.6":[0,15,0],"0.633":[0,16.30734,0],"0.667":[0,17.60472,0],"0.7":[0,18.88229,0],"0.733":[0,20.1303,0],"0.767":[0,21.33927,0],"0.8":[0,22.5,0],"0.833":[0,23.60365,0],"0.867":[0,24.64181,0],"0.9":[0,25.6066,0],"0.933":[0,26.49067,0],"0.967":[0,27.28728,0],"1.033":[0,28.59462,0],"1.067":[0,29.09539,0],"1.1":[0,29.48889,0],"1.133":[0,29.77212,0],"1.167":[0,29.94292,0],"1.2":[0,30,0],"1.233":[0,29.94292,0],"1.267":[0,29.77212,0],"1.3":[0,29.48889,0],"1.333":[0,29.09539,0],"1.367":[0,28.59462,0],"1.4":[0,27.99038,0],"1.433":[0,27.28728,0],"1.467":[0,26.49067,0],"1.5":[0,25.6066,0],"1.533":[0,24.64181,0],"1.567":[0,23.60365,0],"1.6":[0,22.5,0],"1.633":[0,21.33927,0],"1.667":[0,20.1303,0],"1.7":[0,18.88229,0],"1.733":[0,17.60472,0],"1.767":[0,16.30734,0],"1.8":[0,15,0],"1.833":[0,13.69266,0],"1.867":[0,12.39528,0],"1.9":[0,11.11771,0],"1.933":[0,9.8697,0],"1.967":[0,8.66073,0],"2.033":[0,6.39635,0],"2.067":[0,5.35819,0],"2.1":[0,4.3934,0],"2.133":[0,3.50933,0],"2.167":[0,2.71272,0],"2.2":[0,2.00962,0],"2.233":[0,1.40538,0],"2.267":[0,0.90461,0],"2.3":[0,0.51111,0],"2.333":[0,0.22788,0],"2.367":[0,0.05708,0],"2.4":[0,0,0]}},"Segment_7":{"rotation":{"0":[0,0,0],"1":[0,-27.99038,0],"2":[0,-7.5,0],"0.033":[0,-0.05708,0],"0.067":[0,-0.22788,0],"0.1":[0,-0.51111,0],"0.133":[0,-0.90461,0],"0.167":[0,-1.40538,0],"0.2":[0,-2.00962,0],"0.233":[0,-2.71272,0],"0.267":[0,-3.50933,0],"0.3":[0,-4.3934,0],"0.333":[0,-5.35819,0],"0.367":[0,-6.39635,0],"0.4":[0,-7.5,0],"0.433":[0,-8.66073,0],"0.467":[0,-9.8697,0],"0.5":[0,-11.11771,0],"0.533":[0,-12.39528,0],"0.567":[0,-13.69266,0],"0.6":[0,-15,0],"0.633":[0,-16.30734,0],"0.667":[0,-17.60472,0],"0.7":[0,-18.88229,0],"0.733":[0,-20.1303,0],"0.767":[0,-21.33927,0],"0.8":[0,-22.5,0],"0.833":[0,-23.60365,0],"0.867":[0,-24.64181,0],"0.9":[0,-25.6066,0],"0.933":[0,-26.49067,0],"0.967":[0,-27.28728,0],"1.033":[0,-28.59462,0],"1.067":[0,-29.09539,0],"1.1":[0,-29.48889,0],"1.133":[0,-29.77212,0],"1.167":[0,-29.94292,0],"1.2":[0,-30,0],"1.233":[0,-29.94292,0],"1.267":[0,-29.77212,0],"1.3":[0,-29.48889,0],"1.333":[0,-29.09539,0],"1.367":[0,-28.59462,0],"1.4":[0,-27.99038,0],"1.433":[0,-27.28728,0],"1.467":[0,-26.49067,0],"1.5":[0,-25.6066,0],"1.533":[0,-24.64181,0],"1.567":[0,-23.60365,0],"1.6":[0,-22.5,0],"1.633":[0,-21.33927,0],"1.667":[0,-20.1303,0],"1.7":[0,-18.88229,0],"1.733":[0,-17.60472,0],"1.767":[0,-16.30734,0],"1.8":[0,-15,0],"1.833":[0,-13.69266,0],"1.867":[0,-12.39528,0],"1.9":[0,-11.11771,0],"1.933":[0,-9.8697,0],"1.967":[0,-8.66073,0],"2.033":[0,-6.39635,0],"2.067":[0,-5.35819,0],"2.1":[0,-4.3934,0],"2.133":[0,-3.50933,0],"2.167":[0,-2.71272,0],"2.2":[0,-2.00962,0],"2.233":[0,-1.40538,0],"2.267":[0,-0.90461,0],"2.3":[0,-0.51111,0],"2.333":[0,-0.22788,0],"2.367":[0,-0.05708,0],"2.4":[0,0,0]}},"SpiderWingRight":{"rotation":{"0":[0,-1.5,0],"1":[-1.5,-3,0],"2":[2.59808,1.09808,0],"0.033":[-0.26147,-1.76147,0],"0.067":[-0.52094,-2.02094,0],"0.1":[-0.77646,-2.27646,0],"0.133":[-1.02606,-2.52606,0],"0.167":[-1.26785,-2.76785,0],"0.2":[-1.5,-3,0],"0.233":[-1.72073,-3.22073,0],"0.267":[-1.92836,-3.42836,0],"0.3":[-2.12132,-3.62132,0],"0.333":[-2.29813,-3.79813,0],"0.367":[-2.45746,-3.95746,0],"0.4":[-2.59808,-4.09808,0],"0.433":[-2.71892,-4.21892,0],"0.467":[-2.81908,-4.31908,0],"0.5":[-2.89778,-4.39778,0],"0.533":[-2.95442,-4.45442,0],"0.567":[-2.98858,-4.48858,0],"0.6":[-3,-4.5,0],"0.633":[-2.98858,-4.48858,0],"0.667":[-2.95442,-4.45442,0],"0.7":[-2.89778,-4.39778,0],"0.733":[-2.81908,-4.31908,0],"0.767":[-2.71892,-4.21892,0],"0.8":[-2.59808,-4.09808,0],"0.833":[-2.45746,-3.95746,0],"0.867":[-2.29813,-3.79813,0],"0.9":[-2.12132,-3.62132,0],"0.933":[-1.92836,-3.42836,0],"0.967":[-1.72073,-3.22073,0],"1.033":[-1.26785,-2.76785,0],"1.067":[-1.02606,-2.52606,0],"1.1":[-0.77646,-2.27646,0],"1.133":[-0.52094,-2.02094,0],"1.167":[-0.26147,-1.76147,0],"1.2":[0,-1.5,0],"1.233":[0.26147,-1.23853,0],"1.267":[0.52094,-0.97906,0],"1.3":[0.77646,-0.72354,0],"1.333":[1.02606,-0.47394,0],"1.367":[1.26785,-0.23215,0],"1.4":[1.5,0,0],"1.433":[1.72073,0.22073,0],"1.467":[1.92836,0.42836,0],"1.5":[2.12132,0.62132,0],"1.533":[2.29813,0.79813,0],"1.567":[2.45746,0.95746,0],"1.6":[2.59808,1.09808,0],"1.633":[2.71892,1.21892,0],"1.667":[2.81908,1.31908,0],"1.7":[2.89778,1.39778,0],"1.733":[2.95442,1.45442,0],"1.767":[2.98858,1.48858,0],"1.8":[3,1.5,0],"1.833":[2.98858,1.48858,0],"1.867":[2.95442,1.45442,0],"1.9":[2.89778,1.39778,0],"1.933":[2.81908,1.31908,0],"1.967":[2.71892,1.21892,0],"2.033":[2.45746,0.95746,0],"2.067":[2.29813,0.79813,0],"2.1":[2.12132,0.62132,0],"2.133":[1.92836,0.42836,0],"2.167":[1.72073,0.22073,0],"2.2":[1.5,0,0],"2.233":[1.26785,-0.23215,0],"2.267":[1.02606,-0.47394,0],"2.3":[0.77646,-0.72354,0],"2.333":[0.52094,-0.97906,0],"2.367":[0.26147,-1.23853,0],"2.4":[0,-1.5,0]}},"SpiderWingLeft":{"rotation":{"0":[0,-1.5,0],"1":[-1.5,0,0],"2":[2.59808,-4.09808,0],"0.033":[-0.26147,-1.23853,0],"0.067":[-0.52094,-0.97906,0],"0.1":[-0.77646,-0.72354,0],"0.133":[-1.02606,-0.47394,0],"0.167":[-1.26785,-0.23215,0],"0.2":[-1.5,0,0],"0.233":[-1.72073,0.22073,0],"0.267":[-1.92836,0.42836,0],"0.3":[-2.12132,0.62132,0],"0.333":[-2.29813,0.79813,0],"0.367":[-2.45746,0.95746,0],"0.4":[-2.59808,1.09808,0],"0.433":[-2.71892,1.21892,0],"0.467":[-2.81908,1.31908,0],"0.5":[-2.89778,1.39778,0],"0.533":[-2.95442,1.45442,0],"0.567":[-2.98858,1.48858,0],"0.6":[-3,1.5,0],"0.633":[-2.98858,1.48858,0],"0.667":[-2.95442,1.45442,0],"0.7":[-2.89778,1.39778,0],"0.733":[-2.81908,1.31908,0],"0.767":[-2.71892,1.21892,0],"0.8":[-2.59808,1.09808,0],"0.833":[-2.45746,0.95746,0],"0.867":[-2.29813,0.79813,0],"0.9":[-2.12132,0.62132,0],"0.933":[-1.92836,0.42836,0],"0.967":[-1.72073,0.22073,0],"1.033":[-1.26785,-0.23215,0],"1.067":[-1.02606,-0.47394,0],"1.1":[-0.77646,-0.72354,0],"1.133":[-0.52094,-0.97906,0],"1.167":[-0.26147,-1.23853,0],"1.2":[0,-1.5,0],"1.233":[0.26147,-1.76147,0],"1.267":[0.52094,-2.02094,0],"1.3":[0.77646,-2.27646,0],"1.333":[1.02606,-2.52606,0],"1.367":[1.26785,-2.76785,0],"1.4":[1.5,-3,0],"1.433":[1.72073,-3.22073,0],"1.467":[1.92836,-3.42836,0],"1.5":[2.12132,-3.62132,0],"1.533":[2.29813,-3.79813,0],"1.567":[2.45746,-3.95746,0],"1.6":[2.59808,-4.09808,0],"1.633":[2.71892,-4.21892,0],"1.667":[2.81908,-4.31908,0],"1.7":[2.89778,-4.39778,0],"1.733":[2.95442,-4.45442,0],"1.767":[2.98858,-4.48858,0],"1.8":[3,-4.5,0],"1.833":[2.98858,-4.48858,0],"1.867":[2.95442,-4.45442,0],"1.9":[2.89778,-4.39778,0],"1.933":[2.81908,-4.31908,0],"1.967":[2.71892,-4.21892,0],"2.033":[2.45746,-3.95746,0],"2.067":[2.29813,-3.79813,0],"2.1":[2.12132,-3.62132,0],"2.133":[1.92836,-3.42836,0],"2.167":[1.72073,-3.22073,0],"2.2":[1.5,-3,0],"2.233":[1.26785,-2.76785,0],"2.267":[1.02606,-2.52606,0],"2.3":[0.77646,-2.27646,0],"2.333":[0.52094,-2.02094,0],"2.367":[0.26147,-1.76147,0],"2.4":[0,-1.5,0]}}}}} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/spider.geo.json b/src/main/resources/assets/evolution/cosmetic/wings/spider.geo.json new file mode 100644 index 0000000..66883ff --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/spider.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.unknown","texture_width":128,"texture_height":128,"visible_bounds_width":4,"visible_bounds_height":4,"visible_bounds_offset":[0,1,0]},"bones":[{"name":"wings","pivot":[0,4,0]},{"name":"SpiderWingRight","parent":"wings","pivot":[2,2,2]},{"name":"Segment_1","parent":"SpiderWingRight","pivot":[2,-16,2],"rotation":[0,32.5,0],"cubes":[{"origin":[1,-1,1],"size":[2,5,3],"uv":{"north":{"uv":[5,6],"uv_size":[2,5]},"east":{"uv":[10,6],"uv_size":[-3,5]},"south":{"uv":[10,6],"uv_size":[2,5]},"west":{"uv":[7,6],"uv_size":[3,5]},"up":{"uv":[5,3],"uv_size":[2,3]},"down":{"uv":[7,6],"uv_size":[2,-3]}}}]},{"name":"Segment_2","parent":"Segment_1","pivot":[2,-17.29203,3.48888],"rotation":[0,12.5,0],"cubes":[{"origin":[1.5,6.34459,4.90512],"size":[1,1,3],"inflate":-0.02,"pivot":[2,6.84459,6.78012],"rotation":[127.5,0,0],"uv":{"north":{"uv":[104,9],"uv_size":[1,1]},"east":{"uv":[108,9],"uv_size":[-3,1]},"south":{"uv":[108,9],"uv_size":[1,1]},"west":{"uv":[105,9],"uv_size":[3,1]},"up":{"uv":[104,6],"uv_size":[1,3]},"down":{"uv":[105,9],"uv_size":[1,-3]}}},{"origin":[1.5,3.34459,5.65512],"size":[1,1,3],"inflate":-0.02,"pivot":[2,3.84459,7.53012],"rotation":[95,0,0],"uv":{"north":{"uv":[104,9],"uv_size":[1,1]},"east":{"uv":[108,9],"uv_size":[-3,1]},"south":{"uv":[108,9],"uv_size":[1,1]},"west":{"uv":[105,9],"uv_size":[3,1]},"up":{"uv":[104,6],"uv_size":[1,3]},"down":{"uv":[105,9],"uv_size":[1,-3]}}},{"origin":[1.5,0.34459,5.65512],"size":[1,1,3],"inflate":-0.02,"pivot":[2,0.84459,7.53012],"rotation":[87.5,0,0],"uv":{"north":{"uv":[104,9],"uv_size":[1,1]},"east":{"uv":[108,9],"uv_size":[-3,1]},"south":{"uv":[108,9],"uv_size":[1,1]},"west":{"uv":[105,9],"uv_size":[3,1]},"up":{"uv":[104,6],"uv_size":[1,3]},"down":{"uv":[105,9],"uv_size":[1,-3]}}},{"origin":[1.5,-1.90541,5.15512],"size":[1,1,3],"inflate":-0.02,"pivot":[2,-1.40541,7.03012],"rotation":[62.5,0,0],"uv":{"north":{"uv":[104,9],"uv_size":[1,1]},"east":{"uv":[108,9],"uv_size":[-3,1]},"south":{"uv":[108,9],"uv_size":[1,1]},"west":{"uv":[105,9],"uv_size":[3,1]},"up":{"uv":[104,6],"uv_size":[1,3]},"down":{"uv":[105,9],"uv_size":[1,-3]}}},{"origin":[1.25,-0.06921,3.29979],"size":[1.5,1.5,5],"inflate":0.01,"pivot":[2,0.68079,2.79979],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[16,45.5],"uv_size":[1.5,1.5]},"east":{"uv":[22.5,45.5],"uv_size":[-5,1.5]},"south":{"uv":[22.5,45.5],"uv_size":[1.5,1.5]},"west":{"uv":[17.5,45.5],"uv_size":[5,1.5]},"up":{"uv":[16,40.5],"uv_size":[1.5,5]},"down":{"uv":[17.5,45.5],"uv_size":[1.5,-5]}}},{"origin":[1.25,0.58,3.22334],"size":[1.5,1.5,5],"pivot":[2,1.33,2.72334],"rotation":[12.5,0,0],"uv":{"north":{"uv":[16,34],"uv_size":[1.5,1.5]},"east":{"uv":[22.5,34],"uv_size":[-5,1.5]},"south":{"uv":[22.5,34],"uv_size":[1.5,1.5]},"west":{"uv":[17.5,34],"uv_size":[5,1.5]},"up":{"uv":[16,29],"uv_size":[1.5,5]},"down":{"uv":[17.5,34],"uv_size":[1.5,-5]}}},{"origin":[1.25,1.4436,3.197],"size":[1.5,1.5,6],"inflate":0.01,"pivot":[2,2.1936,3.697],"rotation":[40,0,0],"uv":{"north":{"uv":[16,23],"uv_size":[1.5,1.5]},"east":{"uv":[23.5,23],"uv_size":[-6,1.5]},"south":{"uv":[23.5,23],"uv_size":[1.5,1.5]},"west":{"uv":[17.5,23],"uv_size":[6,1.5]},"up":{"uv":[16,17],"uv_size":[1.5,6]},"down":{"uv":[17.5,23],"uv_size":[1.5,-6]}}},{"origin":[1.25,3.35649,3.21483],"size":[1.5,1.5,7.5],"pivot":[2,4.10649,3.71483],"rotation":[55,0,0],"uv":{"north":{"uv":[16,9.5],"uv_size":[1.5,1.5]},"east":{"uv":[25,9.5],"uv_size":[-7.5,1.5]},"south":{"uv":[25,9.5],"uv_size":[1.5,1.5]},"west":{"uv":[17.5,9.5],"uv_size":[7.5,1.5]},"up":{"uv":[16,2],"uv_size":[1.5,7.5]},"down":{"uv":[17.5,9.5],"uv_size":[1.5,-7.5]}}},{"origin":[1.5,-3.02211,5.25088],"size":[1,1,4],"pivot":[2,-2.66574,5.55079],"rotation":[-55,0,0],"uv":{"north":{"uv":[29,55],"uv_size":[1,1]},"east":{"uv":[34,55],"uv_size":[-4,1]},"south":{"uv":[34,55],"uv_size":[1,1]},"west":{"uv":[30,55],"uv_size":[4,1]},"up":{"uv":[29,51],"uv_size":[1,4]},"down":{"uv":[30,55],"uv_size":[1,-4]}}},{"origin":[1.25,-0.75014,3.47451],"size":[1.5,1.5,3.5],"pivot":[2,-0.00014,3.47451],"rotation":[-50,0,0],"uv":{"north":{"uv":[17,54.5],"uv_size":[1.5,1.5]},"east":{"uv":[22,54.5],"uv_size":[-3.5,1.5]},"south":{"uv":[22,54.5],"uv_size":[1.5,1.5]},"west":{"uv":[18.5,54.5],"uv_size":[3.5,1.5]},"up":{"uv":[17,51],"uv_size":[1.5,3.5]},"down":{"uv":[18.5,54.5],"uv_size":[1.5,-3.5]}}}]},{"name":"Segment_3","parent":"Segment_2","pivot":[2,-5.92,7.9733],"rotation":[0,12.5,0],"cubes":[{"origin":[1.5,-6.18273,10.1231],"size":[1,1,1.25],"inflate":-0.03,"pivot":[2.48,-5.20273,11.3531],"rotation":[20,0,0],"uv":{"north":{"uv":[78,27],"uv_size":[1,1]},"east":{"uv":[80,27],"uv_size":[-1,1]},"south":{"uv":[80,27],"uv_size":[1,1]},"west":{"uv":[79,27],"uv_size":[1,1]},"up":{"uv":[78,26],"uv_size":[1,1]},"down":{"uv":[79,27],"uv_size":[1,-1]}}},{"origin":[1.5,-8.59259,4.04414],"size":[1,1,3.8375],"inflate":-0.02,"pivot":[2.48,-8.56259,7.85164],"rotation":[-128.75,0,0],"uv":{"north":{"uv":[67,27.5],"uv_size":[1,1]},"east":{"uv":[68,28.5],"uv_size":[4,-1]},"south":{"uv":[72,27.5],"uv_size":[1,1]},"west":{"uv":[68,27.5],"uv_size":[4,1]},"up":{"uv":[67,23.5],"uv_size":[1,4]},"down":{"uv":[68,27.5],"uv_size":[1,-4]}}},{"origin":[3.04591,-0.3907,12.60164],"size":[0,1,3],"pivot":[2,-2.41574,6.05079],"rotation":[-95.40961,-22.40975,2.06754],"uv":{"east":{"uv":[53,55],"uv_size":[-3,1]},"west":{"uv":[50,55],"uv_size":[3,1]}}},{"origin":[0.95409,-0.3907,12.60164],"size":[0,1,3],"pivot":[2,-2.41574,6.05079],"rotation":[-95.40961,22.40975,-2.06754],"uv":{"east":{"uv":[53,55],"uv_size":[-3,1]},"west":{"uv":[50,55],"uv_size":[3,1]}}},{"origin":[1.5,-1.40514,9.22292],"size":[1,1,4],"inflate":-0.01,"pivot":[2,-2.41574,6.05079],"rotation":[-85,0,0],"uv":{"north":{"uv":[40,55],"uv_size":[1,1]},"east":{"uv":[45,55],"uv_size":[-4,1]},"south":{"uv":[45,55],"uv_size":[1,1]},"west":{"uv":[41,55],"uv_size":[4,1]},"up":{"uv":[40,51],"uv_size":[1,4]},"down":{"uv":[41,55],"uv_size":[1,-4]}}},{"origin":[1.5,10.65168,7.11811],"size":[1,1,4.75],"pivot":[2,11.15168,9.49311],"rotation":[37.5,0,0],"uv":{"north":{"uv":[30,9],"uv_size":[1,1]},"east":{"uv":[36,9],"uv_size":[-5,1]},"south":{"uv":[36,9],"uv_size":[1,1]},"west":{"uv":[31,9],"uv_size":[5,1]},"up":{"uv":[30,4],"uv_size":[1,5]},"down":{"uv":[31,9],"uv_size":[1,-5]}}},{"origin":[1.5,7.59459,8.15512],"size":[1,1,3],"inflate":-0.02,"pivot":[2,8.09459,10.03012],"rotation":[127.5,0,0],"uv":{"north":{"uv":[93,9],"uv_size":[1,1]},"east":{"uv":[97,9],"uv_size":[-3,1]},"south":{"uv":[97,9],"uv_size":[1,1]},"west":{"uv":[94,9],"uv_size":[3,1]},"up":{"uv":[93,6],"uv_size":[1,3]},"down":{"uv":[94,9],"uv_size":[1,-3]}}},{"origin":[1.5,9.65155,8.41554],"size":[1,1,3],"inflate":-0.01,"pivot":[2,10.15155,9.79054],"rotation":[-102.5,0,0],"uv":{"north":{"uv":[84,9],"uv_size":[1,1]},"east":{"uv":[88,9],"uv_size":[-3,1]},"south":{"uv":[88,9],"uv_size":[1,1]},"west":{"uv":[85,9],"uv_size":[3,1]},"up":{"uv":[84,6],"uv_size":[1,3]},"down":{"uv":[85,9],"uv_size":[1,-3]}}},{"origin":[1.5,4.39648,7.97475],"size":[1,1,3],"inflate":-0.02,"pivot":[2,4.41329,10.51095],"rotation":[110,0,0],"uv":{"north":{"uv":[93,9],"uv_size":[1,1]},"east":{"uv":[97,9],"uv_size":[-3,1]},"south":{"uv":[97,9],"uv_size":[1,1]},"west":{"uv":[94,9],"uv_size":[3,1]},"up":{"uv":[93,6],"uv_size":[1,3]},"down":{"uv":[94,9],"uv_size":[1,-3]}}},{"origin":[1.5,3.43011,7.97475],"size":[1,1,3],"inflate":-0.01,"pivot":[2,4.41329,10.51095],"rotation":[-120,0,0],"uv":{"north":{"uv":[84,9],"uv_size":[1,1]},"east":{"uv":[88,9],"uv_size":[-3,1]},"south":{"uv":[88,9],"uv_size":[1,1]},"west":{"uv":[85,9],"uv_size":[3,1]},"up":{"uv":[84,6],"uv_size":[1,3]},"down":{"uv":[85,9],"uv_size":[1,-3]}}},{"origin":[1.5,-0.03477,7.931],"size":[1,1,2.79375],"inflate":-0.02,"pivot":[2,-0.01796,10.26095],"rotation":[110,0,0],"uv":{"north":{"uv":[93,9],"uv_size":[1,1]},"east":{"uv":[97,9],"uv_size":[-3,1]},"south":{"uv":[97,9],"uv_size":[1,1]},"west":{"uv":[94,9],"uv_size":[3,1]},"up":{"uv":[93,6],"uv_size":[1,3]},"down":{"uv":[94,9],"uv_size":[1,-3]}}},{"origin":[1.5,-1.00114,7.931],"size":[1,1,2.79375],"inflate":-0.01,"pivot":[2,-0.01796,10.26095],"rotation":[-120,0,0],"uv":{"north":{"uv":[84,9],"uv_size":[1,1]},"east":{"uv":[88,9],"uv_size":[-3,1]},"south":{"uv":[88,9],"uv_size":[1,1]},"west":{"uv":[85,9],"uv_size":[3,1]},"up":{"uv":[84,6],"uv_size":[1,3]},"down":{"uv":[85,9],"uv_size":[1,-3]}}},{"origin":[1.5,-4.3562,5.6429],"size":[1,1,2.79375],"inflate":-0.02,"pivot":[2.48,-3.3762,8.41665],"rotation":[70,0,0],"uv":{"north":{"uv":[93,9],"uv_size":[1,1]},"east":{"uv":[97,9],"uv_size":[-3,1]},"south":{"uv":[97,9],"uv_size":[1,1]},"west":{"uv":[94,9],"uv_size":[3,1]},"up":{"uv":[93,6],"uv_size":[1,3]},"down":{"uv":[94,9],"uv_size":[1,-3]}}},{"origin":[1.5,-5.00114,6.931],"size":[1,1,2.79375],"inflate":-0.01,"pivot":[2,-4.01796,9.26095],"rotation":[-152.5,0,0],"uv":{"north":{"uv":[84,9],"uv_size":[1,1]},"east":{"uv":[88,9],"uv_size":[-3,1]},"south":{"uv":[88,9],"uv_size":[1,1]},"west":{"uv":[85,9],"uv_size":[3,1]},"up":{"uv":[84,6],"uv_size":[1,3]},"down":{"uv":[85,9],"uv_size":[1,-3]}}},{"origin":[1.5,5.46405,5.20053],"size":[1,1,4.5],"pivot":[2,12.08,7.97334],"rotation":[20,0,0],"uv":{"north":{"uv":[29,23.5],"uv_size":[1,1]},"east":{"uv":[34.5,23.5],"uv_size":[-4.5,1]},"south":{"uv":[34.5,23.5],"uv_size":[1,1]},"west":{"uv":[30,23.5],"uv_size":[4.5,1]},"up":{"uv":[29,19],"uv_size":[1,4.5]},"down":{"uv":[30,23.5],"uv_size":[1,-4.5]}}},{"origin":[1.5,2.04183,8.91966],"size":[1,1,4],"pivot":[2,12.08,7.97334],"rotation":[-7.5,0,0],"uv":{"north":{"uv":[29,34],"uv_size":[1,1]},"east":{"uv":[34,34],"uv_size":[-4,1]},"south":{"uv":[34,34],"uv_size":[1,1]},"west":{"uv":[30,34],"uv_size":[4,1]},"up":{"uv":[29,30],"uv_size":[1,4]},"down":{"uv":[30,34],"uv_size":[1,-4]}}},{"origin":[1.5,-3.5287,7.40908],"size":[1,1,4.5],"pivot":[2.5,-2.5287,11.90908],"rotation":[-35,0,0],"uv":{"north":{"uv":[29,46],"uv_size":[1,1]},"east":{"uv":[34.5,46],"uv_size":[-4.5,1]},"south":{"uv":[34.5,46],"uv_size":[1,1]},"west":{"uv":[30,46],"uv_size":[4.5,1]},"up":{"uv":[29,41.5],"uv_size":[1,4.5]},"down":{"uv":[30,46],"uv_size":[1,-4.5]}}}]},{"name":"Segment_4","parent":"Segment_3","pivot":[2,-4.92,11.4733],"rotation":[0,15,0],"cubes":[{"origin":[1.5,11.10267,11.09034],"size":[1,1,3.25],"inflate":-0.01,"pivot":[2,12.08,7.97334],"rotation":[15,0,0],"uv":{"north":{"uv":[41,9],"uv_size":[1,1]},"east":{"uv":[45,9],"uv_size":[-3,1]},"south":{"uv":[45,9],"uv_size":[1,1]},"west":{"uv":[42,9],"uv_size":[3,1]},"up":{"uv":[41,6],"uv_size":[1,3]},"down":{"uv":[42,9],"uv_size":[1,-3]}}},{"origin":[1.5,10.24246,12.72402],"size":[1,1,4],"inflate":-0.02,"pivot":[2,9.76325,13.63951],"rotation":[67.5,0,0],"uv":{"north":{"uv":[65,9],"uv_size":[1,1]},"east":{"uv":[70,9],"uv_size":[-4,1]},"south":{"uv":[70,9],"uv_size":[1,1]},"west":{"uv":[66,9],"uv_size":[4,1]},"up":{"uv":[65,5],"uv_size":[1,4]},"down":{"uv":[66,9],"uv_size":[1,-4]}}},{"origin":[1.75295,12.17643,13.86063],"size":[0,1,4],"pivot":[2,12.08,7.97334],"rotation":[4.6211,-1.9113,22.4229],"uv":{"east":{"uv":[49,9],"uv_size":[4,1]},"west":{"uv":[53,9],"uv_size":[-4,1]}}},{"origin":[2.24705,12.17643,13.86063],"size":[0,1,4],"pivot":[2,12.08,7.97334],"rotation":[4.6211,1.9113,-22.4229],"uv":{"east":{"uv":[49,9],"uv_size":[4,1]},"west":{"uv":[53,9],"uv_size":[-4,1]}}},{"origin":[1.5,6.47356,11.75134],"size":[1,1,4.5],"inflate":-0.01,"pivot":[2,12.08,7.97334],"rotation":[-2.5,0,0],"uv":{"north":{"uv":[40,22.5],"uv_size":[1,1]},"east":{"uv":[45.5,22.5],"uv_size":[-4.5,1]},"south":{"uv":[45.5,22.5],"uv_size":[1,1]},"west":{"uv":[41,22.5],"uv_size":[4.5,1]},"up":{"uv":[40,18],"uv_size":[1,4.5]},"down":{"uv":[41,22.5],"uv_size":[1,-4.5]}}},{"origin":[1.5,8.66496,12.72257],"size":[1,1,4.5],"inflate":-0.03,"pivot":[2,9.76325,13.63951],"rotation":[-46.25,0,0],"uv":{"north":{"uv":[74,10],"uv_size":[1,1]},"east":{"uv":[79.5,10],"uv_size":[-4.5,1]},"south":{"uv":[79.5,10],"uv_size":[1,1]},"west":{"uv":[75,10],"uv_size":[4.5,1]},"up":{"uv":[74,5.5],"uv_size":[1,4.5]},"down":{"uv":[75,10],"uv_size":[1,-4.5]}}},{"origin":[1.51,-1.20078,12.47041],"size":[0.99219,1,4.5],"inflate":-0.03,"pivot":[2.48,-1.17078,12.50041],"rotation":[-86.25,0,0],"uv":{"north":{"uv":[74,18],"uv_size":[1,1]},"east":{"uv":[79.5,18],"uv_size":[-4.5,1]},"south":{"uv":[79.5,18],"uv_size":[1,1]},"west":{"uv":[75,18],"uv_size":[4.5,1]},"up":{"uv":[74,13.5],"uv_size":[1,4.5]},"down":{"uv":[75,18],"uv_size":[1,-4.5]}}},{"origin":[1.5,-2.00754,13.22402],"size":[1,1,3],"inflate":-0.02,"pivot":[2,-2.48675,13.13951],"rotation":[30,0,0],"uv":{"north":{"uv":[66,18],"uv_size":[1,1]},"east":{"uv":[70,18],"uv_size":[-3,1]},"south":{"uv":[70,18],"uv_size":[1,1]},"west":{"uv":[67,18],"uv_size":[3,1]},"up":{"uv":[66,15],"uv_size":[1,3]},"down":{"uv":[67,18],"uv_size":[1,-3]}}},{"origin":[1.5,-6.18273,11.3331],"size":[1,1,2],"inflate":-0.02,"pivot":[2.48,-5.20273,11.3531],"rotation":[7.5,0,0],"uv":{"north":{"uv":[85,28],"uv_size":[1,1]},"east":{"uv":[88,28],"uv_size":[-2,1]},"south":{"uv":[88,28],"uv_size":[1,1]},"west":{"uv":[86,28],"uv_size":[2,1]},"up":{"uv":[85,26],"uv_size":[1,2]},"down":{"uv":[86,28],"uv_size":[1,-2]}}},{"origin":[1.5,2.41496,13.22257],"size":[1,1,4.55],"inflate":-0.03,"pivot":[2,3.51325,14.13951],"rotation":[-66.25,0,0],"uv":{"north":{"uv":[74,10],"uv_size":[1,1]},"east":{"uv":[79.5,10],"uv_size":[-4.5,1]},"south":{"uv":[79.5,10],"uv_size":[1,1]},"west":{"uv":[75,10],"uv_size":[4.5,1]},"up":{"uv":[74,5.5],"uv_size":[1,4.5]},"down":{"uv":[75,10],"uv_size":[1,-4.5]}}},{"origin":[1.5,3.99246,13.22402],"size":[1,1,4],"inflate":-0.02,"pivot":[2,3.51325,14.13951],"rotation":[47.5,0,0],"uv":{"north":{"uv":[65,9],"uv_size":[1,1]},"east":{"uv":[70,9],"uv_size":[-4,1]},"south":{"uv":[70,9],"uv_size":[1,1]},"west":{"uv":[66,9],"uv_size":[4,1]},"up":{"uv":[65,5],"uv_size":[1,4]},"down":{"uv":[66,9],"uv_size":[1,-4]}}},{"origin":[3.37054,8.27125,16.54643],"size":[0,1,4],"pivot":[2,12.08,7.97334],"rotation":[-11.5752,4.7511,22.0182],"uv":{"east":{"uv":[54,22],"uv_size":[-4,1]},"west":{"uv":[50,22],"uv_size":[4,1]}}},{"origin":[0.62946,8.27125,16.54643],"size":[0,1,4],"pivot":[2,12.08,7.97334],"rotation":[-11.5752,-4.7511,-22.0182],"uv":{"east":{"uv":[54,22],"uv_size":[-4,1]},"west":{"uv":[50,22],"uv_size":[4,1]}}},{"origin":[1.5,-0.9875,10.77623],"size":[1,1,5],"inflate":-0.01,"pivot":[2.49,0.0025,15.76623],"rotation":[-30.5,0,0],"uv":{"north":{"uv":[40,35],"uv_size":[1,1]},"east":{"uv":[46,35],"uv_size":[-5,1]},"south":{"uv":[46,35],"uv_size":[1,1]},"west":{"uv":[41,35],"uv_size":[5,1]},"up":{"uv":[40,30],"uv_size":[1,5]},"down":{"uv":[41,35],"uv_size":[1,-5]}}},{"origin":[3.80377,7.22528,21.33536],"size":[0,1,4],"pivot":[2,12.08,7.97334],"rotation":[-37.7838,14.24,17.6045],"uv":{"east":{"uv":[54,35],"uv_size":[-4,1]},"west":{"uv":[50,35],"uv_size":[4,1]}}},{"origin":[0.19623,7.22528,21.33536],"size":[0,1,4],"pivot":[2,12.08,7.97334],"rotation":[-37.7838,-14.24,-17.6045],"uv":{"east":{"uv":[54,35],"uv_size":[-4,1]},"west":{"uv":[50,35],"uv_size":[4,1]}}},{"origin":[1.5,5.82887,21.86408],"size":[1,1,4],"inflate":-0.01,"pivot":[2,12.08,7.97334],"rotation":[-55,0,0],"uv":{"north":{"uv":[40,45.5],"uv_size":[1,1]},"east":{"uv":[45,45.5],"uv_size":[-4,1]},"south":{"uv":[45,45.5],"uv_size":[1,1]},"west":{"uv":[41,45.5],"uv_size":[4,1]},"up":{"uv":[40,41.5],"uv_size":[1,4]},"down":{"uv":[41,45.5],"uv_size":[1,-4]}}},{"origin":[2.97472,9.22687,26.12508],"size":[0,1,4],"pivot":[2,12.08,7.97334],"rotation":[-63.2187,20.2935,9.9293],"uv":{"east":{"uv":[50,45.5],"uv_size":[4,1]},"west":{"uv":[54,45.5],"uv_size":[-4,1]}}},{"origin":[1.02528,9.22687,26.12508],"size":[0,1,4],"pivot":[2,12.08,7.97334],"rotation":[-63.2187,-20.2935,-9.9293],"uv":{"east":{"uv":[50,45.5],"uv_size":[4,1]},"west":{"uv":[54,45.5],"uv_size":[-4,1]}}}]},{"name":"SpiderWingLeft","parent":"wings","pivot":[-2,2,2]},{"name":"Segment_5","parent":"SpiderWingLeft","pivot":[-2,2,2],"rotation":[0,-32.5,0],"cubes":[{"origin":[-3,-1,1],"size":[2,5,3],"uv":{"north":{"uv":[7,6],"uv_size":[-2,5]},"east":{"uv":[10,6],"uv_size":[-3,5]},"south":{"uv":[12,6],"uv_size":[-2,5]},"west":{"uv":[7,6],"uv_size":[3,5]},"up":{"uv":[7,3],"uv_size":[-2,3]},"down":{"uv":[9,6],"uv_size":[-2,-3]}}}]},{"name":"Segment_6","parent":"Segment_5","pivot":[-2,0.70797,3.48888],"rotation":[0,-12.5,0],"cubes":[{"origin":[-2.5,6.34459,4.90512],"size":[1,1,3],"inflate":-0.02,"pivot":[-2,6.84459,6.78012],"rotation":[127.5,0,0],"uv":{"north":{"uv":[105,9],"uv_size":[-1,1]},"east":{"uv":[108,9],"uv_size":[-3,1]},"south":{"uv":[109,9],"uv_size":[-1,1]},"west":{"uv":[105,9],"uv_size":[3,1]},"up":{"uv":[105,6],"uv_size":[-1,3]},"down":{"uv":[106,9],"uv_size":[-1,-3]}}},{"origin":[-2.5,3.34459,5.65512],"size":[1,1,3],"inflate":-0.02,"pivot":[-2,3.84459,7.53012],"rotation":[95,0,0],"uv":{"north":{"uv":[105,9],"uv_size":[-1,1]},"east":{"uv":[108,9],"uv_size":[-3,1]},"south":{"uv":[109,9],"uv_size":[-1,1]},"west":{"uv":[105,9],"uv_size":[3,1]},"up":{"uv":[105,6],"uv_size":[-1,3]},"down":{"uv":[106,9],"uv_size":[-1,-3]}}},{"origin":[-2.5,0.34459,5.65512],"size":[1,1,3],"inflate":-0.02,"pivot":[-2,0.84459,7.53012],"rotation":[87.5,0,0],"uv":{"north":{"uv":[105,9],"uv_size":[-1,1]},"east":{"uv":[108,9],"uv_size":[-3,1]},"south":{"uv":[109,9],"uv_size":[-1,1]},"west":{"uv":[105,9],"uv_size":[3,1]},"up":{"uv":[105,6],"uv_size":[-1,3]},"down":{"uv":[106,9],"uv_size":[-1,-3]}}},{"origin":[-2.5,-1.90541,5.15512],"size":[1,1,3],"inflate":-0.02,"pivot":[-2,-1.40541,7.03012],"rotation":[62.5,0,0],"uv":{"north":{"uv":[105,9],"uv_size":[-1,1]},"east":{"uv":[108,9],"uv_size":[-3,1]},"south":{"uv":[109,9],"uv_size":[-1,1]},"west":{"uv":[105,9],"uv_size":[3,1]},"up":{"uv":[105,6],"uv_size":[-1,3]},"down":{"uv":[106,9],"uv_size":[-1,-3]}}},{"origin":[-2.75,-0.06921,3.29979],"size":[1.5,1.5,5],"inflate":0.01,"pivot":[-2,0.68079,2.79979],"rotation":[-12.5,0,0],"uv":{"north":{"uv":[17.5,45.5],"uv_size":[-1.5,1.5]},"east":{"uv":[22.5,45.5],"uv_size":[-5,1.5]},"south":{"uv":[24,45.5],"uv_size":[-1.5,1.5]},"west":{"uv":[17.5,45.5],"uv_size":[5,1.5]},"up":{"uv":[17.5,40.5],"uv_size":[-1.5,5]},"down":{"uv":[19,45.5],"uv_size":[-1.5,-5]}}},{"origin":[-2.75,0.58,3.22334],"size":[1.5,1.5,5],"pivot":[-2,1.33,2.72334],"rotation":[12.5,0,0],"uv":{"north":{"uv":[17.5,34],"uv_size":[-1.5,1.5]},"east":{"uv":[22.5,34],"uv_size":[-5,1.5]},"south":{"uv":[24,34],"uv_size":[-1.5,1.5]},"west":{"uv":[17.5,34],"uv_size":[5,1.5]},"up":{"uv":[17.5,29],"uv_size":[-1.5,5]},"down":{"uv":[19,34],"uv_size":[-1.5,-5]}}},{"origin":[-2.75,1.4436,3.197],"size":[1.5,1.5,6],"inflate":0.01,"pivot":[-2,2.1936,3.697],"rotation":[40,0,0],"uv":{"north":{"uv":[17.5,23],"uv_size":[-1.5,1.5]},"east":{"uv":[23.5,23],"uv_size":[-6,1.5]},"south":{"uv":[25,23],"uv_size":[-1.5,1.5]},"west":{"uv":[17.5,23],"uv_size":[6,1.5]},"up":{"uv":[17.5,17],"uv_size":[-1.5,6]},"down":{"uv":[19,23],"uv_size":[-1.5,-6]}}},{"origin":[-2.75,3.35649,3.21483],"size":[1.5,1.5,7.5],"pivot":[-2,4.10649,3.71483],"rotation":[55,0,0],"uv":{"north":{"uv":[17.5,9.5],"uv_size":[-1.5,1.5]},"east":{"uv":[25,9.5],"uv_size":[-7.5,1.5]},"south":{"uv":[26.5,9.5],"uv_size":[-1.5,1.5]},"west":{"uv":[17.5,9.5],"uv_size":[7.5,1.5]},"up":{"uv":[17.5,2],"uv_size":[-1.5,7.5]},"down":{"uv":[19,9.5],"uv_size":[-1.5,-7.5]}}},{"origin":[-2.5,-3.02211,5.25088],"size":[1,1,4],"pivot":[-2,-2.66574,5.55079],"rotation":[-55,0,0],"uv":{"north":{"uv":[30,55],"uv_size":[-1,1]},"east":{"uv":[34,55],"uv_size":[-4,1]},"south":{"uv":[35,55],"uv_size":[-1,1]},"west":{"uv":[30,55],"uv_size":[4,1]},"up":{"uv":[30,51],"uv_size":[-1,4]},"down":{"uv":[31,55],"uv_size":[-1,-4]}}},{"origin":[-2.75,-0.75014,3.47451],"size":[1.5,1.5,3.5],"pivot":[-2,-0.00014,3.47451],"rotation":[-50,0,0],"uv":{"north":{"uv":[18.5,54.5],"uv_size":[-1.5,1.5]},"east":{"uv":[22,54.5],"uv_size":[-3.5,1.5]},"south":{"uv":[23.5,54.5],"uv_size":[-1.5,1.5]},"west":{"uv":[18.5,54.5],"uv_size":[3.5,1.5]},"up":{"uv":[18.5,51],"uv_size":[-1.5,3.5]},"down":{"uv":[20,54.5],"uv_size":[-1.5,-3.5]}}}]},{"name":"Segment_7","parent":"Segment_6","pivot":[-2,12.08,7.9733],"rotation":[0,-12.5,0],"cubes":[{"origin":[-2.5,-6.18273,10.1231],"size":[1,1,1.25],"inflate":-0.03,"pivot":[-2.48,-5.20273,11.3531],"rotation":[20,0,0],"uv":{"north":{"uv":[79,27],"uv_size":[-1,1]},"east":{"uv":[80,27],"uv_size":[-1,1]},"south":{"uv":[81,27],"uv_size":[-1,1]},"west":{"uv":[79,27],"uv_size":[1,1]},"up":{"uv":[79,26],"uv_size":[-1,1]},"down":{"uv":[80,27],"uv_size":[-1,-1]}}},{"origin":[-2.5,-8.59259,4.04414],"size":[1,1,3.8375],"inflate":-0.02,"pivot":[-2.48,-8.56259,7.85164],"rotation":[-128.75,0,0],"uv":{"north":{"uv":[68,27.5],"uv_size":[-1,1]},"east":{"uv":[72,27.5],"uv_size":[-4,1]},"south":{"uv":[73,27.5],"uv_size":[-1,1]},"west":{"uv":[72,28.5],"uv_size":[-4,-1]},"up":{"uv":[68,23.5],"uv_size":[-1,4]},"down":{"uv":[69,27.5],"uv_size":[-1,-4]}}},{"origin":[-3.04591,-0.3907,12.60164],"size":[0,1,3],"pivot":[-2,-2.41574,6.05079],"rotation":[-95.40961,22.40975,-2.06754],"uv":{"east":{"uv":[53,55],"uv_size":[-3,1]},"west":{"uv":[50,55],"uv_size":[3,1]}}},{"origin":[-0.95409,-0.3907,12.60164],"size":[0,1,3],"pivot":[-2,-2.41574,6.05079],"rotation":[-95.40961,-22.40975,2.06754],"uv":{"east":{"uv":[53,55],"uv_size":[-3,1]},"west":{"uv":[50,55],"uv_size":[3,1]}}},{"origin":[-2.5,-1.40514,9.22292],"size":[1,1,4],"inflate":-0.01,"pivot":[-2,-2.41574,6.05079],"rotation":[-85,0,0],"uv":{"north":{"uv":[41,55],"uv_size":[-1,1]},"east":{"uv":[45,55],"uv_size":[-4,1]},"south":{"uv":[46,55],"uv_size":[-1,1]},"west":{"uv":[41,55],"uv_size":[4,1]},"up":{"uv":[41,51],"uv_size":[-1,4]},"down":{"uv":[42,55],"uv_size":[-1,-4]}}},{"origin":[-2.5,10.65168,7.11811],"size":[1,1,4.75],"pivot":[-2,11.15168,9.49311],"rotation":[37.5,0,0],"uv":{"north":{"uv":[31,9],"uv_size":[-1,1]},"east":{"uv":[36,9],"uv_size":[-5,1]},"south":{"uv":[37,9],"uv_size":[-1,1]},"west":{"uv":[31,9],"uv_size":[5,1]},"up":{"uv":[31,4],"uv_size":[-1,5]},"down":{"uv":[32,9],"uv_size":[-1,-5]}}},{"origin":[-2.5,7.59459,8.15512],"size":[1,1,3],"inflate":-0.02,"pivot":[-2,8.09459,10.03012],"rotation":[127.5,0,0],"uv":{"north":{"uv":[94,9],"uv_size":[-1,1]},"east":{"uv":[97,9],"uv_size":[-3,1]},"south":{"uv":[98,9],"uv_size":[-1,1]},"west":{"uv":[94,9],"uv_size":[3,1]},"up":{"uv":[94,6],"uv_size":[-1,3]},"down":{"uv":[95,9],"uv_size":[-1,-3]}}},{"origin":[-2.5,9.65155,8.41554],"size":[1,1,3],"inflate":-0.01,"pivot":[-2,10.15155,9.79054],"rotation":[-102.5,0,0],"uv":{"north":{"uv":[85,9],"uv_size":[-1,1]},"east":{"uv":[88,9],"uv_size":[-3,1]},"south":{"uv":[89,9],"uv_size":[-1,1]},"west":{"uv":[85,9],"uv_size":[3,1]},"up":{"uv":[85,6],"uv_size":[-1,3]},"down":{"uv":[86,9],"uv_size":[-1,-3]}}},{"origin":[-2.5,4.39648,7.97475],"size":[1,1,3],"inflate":-0.02,"pivot":[-2,4.41329,10.51095],"rotation":[110,0,0],"uv":{"north":{"uv":[94,9],"uv_size":[-1,1]},"east":{"uv":[97,9],"uv_size":[-3,1]},"south":{"uv":[98,9],"uv_size":[-1,1]},"west":{"uv":[94,9],"uv_size":[3,1]},"up":{"uv":[94,6],"uv_size":[-1,3]},"down":{"uv":[95,9],"uv_size":[-1,-3]}}},{"origin":[-2.5,3.43011,7.97475],"size":[1,1,3],"inflate":-0.01,"pivot":[-2,4.41329,10.51095],"rotation":[-120,0,0],"uv":{"north":{"uv":[85,9],"uv_size":[-1,1]},"east":{"uv":[88,9],"uv_size":[-3,1]},"south":{"uv":[89,9],"uv_size":[-1,1]},"west":{"uv":[85,9],"uv_size":[3,1]},"up":{"uv":[85,6],"uv_size":[-1,3]},"down":{"uv":[86,9],"uv_size":[-1,-3]}}},{"origin":[-2.5,-0.03477,7.931],"size":[1,1,2.79375],"inflate":-0.02,"pivot":[-2,-0.01796,10.26095],"rotation":[110,0,0],"uv":{"north":{"uv":[94,9],"uv_size":[-1,1]},"east":{"uv":[97,9],"uv_size":[-3,1]},"south":{"uv":[98,9],"uv_size":[-1,1]},"west":{"uv":[94,9],"uv_size":[3,1]},"up":{"uv":[94,6],"uv_size":[-1,3]},"down":{"uv":[95,9],"uv_size":[-1,-3]}}},{"origin":[-2.5,-1.00114,7.931],"size":[1,1,2.79375],"inflate":-0.01,"pivot":[-2,-0.01796,10.26095],"rotation":[-120,0,0],"uv":{"north":{"uv":[85,9],"uv_size":[-1,1]},"east":{"uv":[88,9],"uv_size":[-3,1]},"south":{"uv":[89,9],"uv_size":[-1,1]},"west":{"uv":[85,9],"uv_size":[3,1]},"up":{"uv":[85,6],"uv_size":[-1,3]},"down":{"uv":[86,9],"uv_size":[-1,-3]}}},{"origin":[-2.5,-4.3562,5.6429],"size":[1,1,2.79375],"inflate":-0.02,"pivot":[-2.48,-3.3762,8.41665],"rotation":[70,0,0],"uv":{"north":{"uv":[94,9],"uv_size":[-1,1]},"east":{"uv":[97,9],"uv_size":[-3,1]},"south":{"uv":[98,9],"uv_size":[-1,1]},"west":{"uv":[94,9],"uv_size":[3,1]},"up":{"uv":[94,6],"uv_size":[-1,3]},"down":{"uv":[95,9],"uv_size":[-1,-3]}}},{"origin":[-2.5,-5.00114,6.931],"size":[1,1,2.79375],"inflate":-0.01,"pivot":[-2,-4.01796,9.26095],"rotation":[-152.5,0,0],"uv":{"north":{"uv":[85,9],"uv_size":[-1,1]},"east":{"uv":[88,9],"uv_size":[-3,1]},"south":{"uv":[89,9],"uv_size":[-1,1]},"west":{"uv":[85,9],"uv_size":[3,1]},"up":{"uv":[85,6],"uv_size":[-1,3]},"down":{"uv":[86,9],"uv_size":[-1,-3]}}},{"origin":[-2.5,5.46405,5.20053],"size":[1,1,4.5],"pivot":[-2,12.08,7.97334],"rotation":[20,0,0],"uv":{"north":{"uv":[30,23.5],"uv_size":[-1,1]},"east":{"uv":[34.5,23.5],"uv_size":[-4.5,1]},"south":{"uv":[35.5,23.5],"uv_size":[-1,1]},"west":{"uv":[30,23.5],"uv_size":[4.5,1]},"up":{"uv":[30,19],"uv_size":[-1,4.5]},"down":{"uv":[31,23.5],"uv_size":[-1,-4.5]}}},{"origin":[-2.5,2.04183,8.91966],"size":[1,1,4],"pivot":[-2,12.08,7.97334],"rotation":[-7.5,0,0],"uv":{"north":{"uv":[30,34],"uv_size":[-1,1]},"east":{"uv":[34,34],"uv_size":[-4,1]},"south":{"uv":[35,34],"uv_size":[-1,1]},"west":{"uv":[30,34],"uv_size":[4,1]},"up":{"uv":[30,30],"uv_size":[-1,4]},"down":{"uv":[31,34],"uv_size":[-1,-4]}}},{"origin":[-2.5,-3.5287,7.40908],"size":[1,1,4.5],"pivot":[-2.5,-2.5287,11.90908],"rotation":[-35,0,0],"uv":{"north":{"uv":[30,46],"uv_size":[-1,1]},"east":{"uv":[34.5,46],"uv_size":[-4.5,1]},"south":{"uv":[35.5,46],"uv_size":[-1,1]},"west":{"uv":[30,46],"uv_size":[4.5,1]},"up":{"uv":[30,41.5],"uv_size":[-1,4.5]},"down":{"uv":[31,46],"uv_size":[-1,-4.5]}}}]},{"name":"Segment_8","parent":"Segment_7","pivot":[-2,13.08,11.4733],"rotation":[0,-15,0],"cubes":[{"origin":[-2.5,11.10267,11.09034],"size":[1,1,3.25],"inflate":-0.01,"pivot":[-2,12.08,7.97334],"rotation":[15,0,0],"uv":{"north":{"uv":[42,9],"uv_size":[-1,1]},"east":{"uv":[45,9],"uv_size":[-3,1]},"south":{"uv":[46,9],"uv_size":[-1,1]},"west":{"uv":[42,9],"uv_size":[3,1]},"up":{"uv":[42,6],"uv_size":[-1,3]},"down":{"uv":[43,9],"uv_size":[-1,-3]}}},{"origin":[-2.5,10.24246,12.72402],"size":[1,1,4],"inflate":-0.02,"pivot":[-2,9.76325,13.63951],"rotation":[67.5,0,0],"uv":{"north":{"uv":[66,9],"uv_size":[-1,1]},"east":{"uv":[70,9],"uv_size":[-4,1]},"south":{"uv":[71,9],"uv_size":[-1,1]},"west":{"uv":[66,9],"uv_size":[4,1]},"up":{"uv":[66,5],"uv_size":[-1,4]},"down":{"uv":[67,9],"uv_size":[-1,-4]}}},{"origin":[-1.75295,12.17643,13.86063],"size":[0,1,4],"pivot":[-2,12.08,7.97334],"rotation":[4.6211,1.9113,-22.4229],"uv":{"east":{"uv":[49,9],"uv_size":[4,1]},"west":{"uv":[53,9],"uv_size":[-4,1]}}},{"origin":[-2.24705,12.17643,13.86063],"size":[0,1,4],"pivot":[-2,12.08,7.97334],"rotation":[4.6211,-1.9113,22.4229],"uv":{"east":{"uv":[49,9],"uv_size":[4,1]},"west":{"uv":[53,9],"uv_size":[-4,1]}}},{"origin":[-2.5,6.47356,11.75134],"size":[1,1,4.5],"inflate":-0.01,"pivot":[-2,12.08,7.97334],"rotation":[-2.5,0,0],"uv":{"north":{"uv":[41,22.5],"uv_size":[-1,1]},"east":{"uv":[45.5,22.5],"uv_size":[-4.5,1]},"south":{"uv":[46.5,22.5],"uv_size":[-1,1]},"west":{"uv":[41,22.5],"uv_size":[4.5,1]},"up":{"uv":[41,18],"uv_size":[-1,4.5]},"down":{"uv":[42,22.5],"uv_size":[-1,-4.5]}}},{"origin":[-2.5,8.66496,12.72257],"size":[1,1,4.5],"inflate":-0.03,"pivot":[-2,9.76325,13.63951],"rotation":[-46.25,0,0],"uv":{"north":{"uv":[75,10],"uv_size":[-1,1]},"east":{"uv":[79.5,10],"uv_size":[-4.5,1]},"south":{"uv":[80.5,10],"uv_size":[-1,1]},"west":{"uv":[75,10],"uv_size":[4.5,1]},"up":{"uv":[75,5.5],"uv_size":[-1,4.5]},"down":{"uv":[76,10],"uv_size":[-1,-4.5]}}},{"origin":[-2.51,-1.20078,12.47041],"size":[1,1,4.5],"inflate":-0.03,"pivot":[-2.48,-1.17078,12.50041],"rotation":[-86.25,0,0],"uv":{"north":{"uv":[75,18],"uv_size":[-1,1]},"east":{"uv":[79.5,18],"uv_size":[-4.5,1]},"south":{"uv":[80.5,18],"uv_size":[-1,1]},"west":{"uv":[75,18],"uv_size":[4.5,1]},"up":{"uv":[75,13.5],"uv_size":[-1,4.5]},"down":{"uv":[76,18],"uv_size":[-1,-4.5]}}},{"origin":[-2.5,-2.00754,13.22402],"size":[1,1,3],"inflate":-0.02,"pivot":[-2,-2.48675,13.13951],"rotation":[30,0,0],"uv":{"north":{"uv":[67,18],"uv_size":[-1,1]},"east":{"uv":[70,18],"uv_size":[-3,1]},"south":{"uv":[71,18],"uv_size":[-1,1]},"west":{"uv":[67,18],"uv_size":[3,1]},"up":{"uv":[67,15],"uv_size":[-1,3]},"down":{"uv":[68,18],"uv_size":[-1,-3]}}},{"origin":[-2.5,-6.18273,11.3331],"size":[1,1,2],"inflate":-0.02,"pivot":[-2.48,-5.20273,11.3531],"rotation":[7.5,0,0],"uv":{"north":{"uv":[86,28],"uv_size":[-1,1]},"east":{"uv":[88,28],"uv_size":[-2,1]},"south":{"uv":[89,28],"uv_size":[-1,1]},"west":{"uv":[86,28],"uv_size":[2,1]},"up":{"uv":[86,26],"uv_size":[-1,2]},"down":{"uv":[87,28],"uv_size":[-1,-2]}}},{"origin":[-2.5,2.41496,13.22257],"size":[1,1,4.55],"inflate":-0.03,"pivot":[-2,3.51325,14.13951],"rotation":[-66.25,0,0],"uv":{"north":{"uv":[75,10],"uv_size":[-1,1]},"east":{"uv":[79.5,10],"uv_size":[-4.5,1]},"south":{"uv":[80.5,10],"uv_size":[-1,1]},"west":{"uv":[75,10],"uv_size":[4.5,1]},"up":{"uv":[75,5.5],"uv_size":[-1,4.5]},"down":{"uv":[76,10],"uv_size":[-1,-4.5]}}},{"origin":[-2.5,3.99246,13.22402],"size":[1,1,4],"inflate":-0.02,"pivot":[-2,3.51325,14.13951],"rotation":[47.5,0,0],"uv":{"north":{"uv":[66,9],"uv_size":[-1,1]},"east":{"uv":[70,9],"uv_size":[-4,1]},"south":{"uv":[71,9],"uv_size":[-1,1]},"west":{"uv":[66,9],"uv_size":[4,1]},"up":{"uv":[66,5],"uv_size":[-1,4]},"down":{"uv":[67,9],"uv_size":[-1,-4]}}},{"origin":[-3.37054,8.27125,16.54643],"size":[0,1,4],"pivot":[-2,12.08,7.97334],"rotation":[-11.5752,-4.7511,-22.0182],"uv":{"east":{"uv":[54,22],"uv_size":[-4,1]},"west":{"uv":[50,22],"uv_size":[4,1]}}},{"origin":[-0.62946,8.27125,16.54643],"size":[0,1,4],"pivot":[-2,12.08,7.97334],"rotation":[-11.5752,4.7511,22.0182],"uv":{"east":{"uv":[54,22],"uv_size":[-4,1]},"west":{"uv":[50,22],"uv_size":[4,1]}}},{"origin":[-2.5,-0.9875,10.77623],"size":[1,1,5],"inflate":-0.01,"pivot":[-2.49,0.0025,15.76623],"rotation":[-30.5,0,0],"uv":{"north":{"uv":[41,35],"uv_size":[-1,1]},"east":{"uv":[46,35],"uv_size":[-5,1]},"south":{"uv":[47,35],"uv_size":[-1,1]},"west":{"uv":[41,35],"uv_size":[5,1]},"up":{"uv":[41,30],"uv_size":[-1,5]},"down":{"uv":[42,35],"uv_size":[-1,-5]}}},{"origin":[-3.80377,7.22528,21.33536],"size":[0,1,4],"pivot":[-2,12.08,7.97334],"rotation":[-37.7838,-14.24,-17.6045],"uv":{"east":{"uv":[54,35],"uv_size":[-4,1]},"west":{"uv":[50,35],"uv_size":[4,1]}}},{"origin":[-0.19623,7.22528,21.33536],"size":[0,1,4],"pivot":[-2,12.08,7.97334],"rotation":[-37.7838,14.24,17.6045],"uv":{"east":{"uv":[54,35],"uv_size":[-4,1]},"west":{"uv":[50,35],"uv_size":[4,1]}}},{"origin":[-2.5,5.82887,21.86408],"size":[1,1,4],"inflate":-0.01,"pivot":[-2,12.08,7.97334],"rotation":[-55,0,0],"uv":{"north":{"uv":[41,45.5],"uv_size":[-1,1]},"east":{"uv":[45,45.5],"uv_size":[-4,1]},"south":{"uv":[46,45.5],"uv_size":[-1,1]},"west":{"uv":[41,45.5],"uv_size":[4,1]},"up":{"uv":[41,41.5],"uv_size":[-1,4]},"down":{"uv":[42,45.5],"uv_size":[-1,-4]}}},{"origin":[-2.97472,9.22687,26.12508],"size":[0,1,4],"pivot":[-2,12.08,7.97334],"rotation":[-63.2187,-20.2935,-9.9293],"uv":{"east":{"uv":[50,45.5],"uv_size":[4,1]},"west":{"uv":[54,45.5],"uv_size":[-4,1]}}},{"origin":[-1.02528,9.22687,26.12508],"size":[0,1,4],"pivot":[-2,12.08,7.97334],"rotation":[-63.2187,20.2935,9.9293],"uv":{"east":{"uv":[50,45.5],"uv_size":[4,1]},"west":{"uv":[54,45.5],"uv_size":[-4,1]}}}]}]}]} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/trident.animation.json b/src/main/resources/assets/evolution/cosmetic/wings/trident.animation.json new file mode 100644 index 0000000..2c3e748 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/trident.animation.json @@ -0,0 +1 @@ +{"idle":{"loop":true,"animation_length":3.2083,"bones":{"root":{"rotation":{"0.0":[0,0,0],"1.0":[0,0,2.5],"2.0":[0,0,0],"3.2083":[0,0,0]}}}}} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/trident.geo.json b/src/main/resources/assets/evolution/cosmetic/wings/trident.geo.json new file mode 100644 index 0000000..fd465a8 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/trident.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.bro9i_tridentwings","texture_width":32,"texture_height":32,"visible_bounds_width":2,"visible_bounds_height":1.5,"visible_bounds_offset":[0,0.25,0]},"bones":[{"name":"root","pivot":[0,16.7,0],"rotation":[0,0,32.5],"cubes":[{"origin":[-0.5,4,-0.5],"size":[1,31,1],"uv":{"north":{"uv":[0,0],"uv_size":[1,31]},"east":{"uv":[1,0],"uv_size":[1,31]},"south":{"uv":[2,0],"uv_size":[1,31]},"west":{"uv":[3,0],"uv_size":[1,31]},"up":{"uv":[8,8],"uv_size":[1,1]},"down":{"uv":[9,1],"uv_size":[1,-1]}}},{"origin":[0.5,29,-0.5],"size":[1,2,1],"uv":{"north":{"uv":[8,0],"uv_size":[1,2]},"east":{"uv":[8,2],"uv_size":[1,2]},"south":{"uv":[4,8],"uv_size":[1,2]},"west":{"uv":[8,4],"uv_size":[1,2]},"up":{"uv":[9,1],"uv_size":[1,1]},"down":{"uv":[9,3],"uv_size":[1,-1]}}},{"origin":[1.5,30,-0.5],"size":[1,4,1],"uv":{"north":{"uv":[4,0],"uv_size":[1,4]},"east":{"uv":[4,4],"uv_size":[1,4]},"south":{"uv":[5,0],"uv_size":[1,4]},"west":{"uv":[5,4],"uv_size":[1,4]},"up":{"uv":[9,3],"uv_size":[1,1]},"down":{"uv":[9,5],"uv_size":[1,-1]}}},{"origin":[-2.5,30,-0.5],"size":[1,4,1],"uv":{"north":{"uv":[5,0],"uv_size":[-1,4]},"east":{"uv":[6,4],"uv_size":[-1,4]},"south":{"uv":[6,0],"uv_size":[-1,4]},"west":{"uv":[5,4],"uv_size":[-1,4]},"up":{"uv":[10,3],"uv_size":[-1,1]},"down":{"uv":[10,5],"uv_size":[-1,-1]}}},{"origin":[-1.5,29,-0.5],"size":[1,2,1],"uv":{"north":{"uv":[9,0],"uv_size":[-1,2]},"east":{"uv":[9,4],"uv_size":[-1,2]},"south":{"uv":[5,8],"uv_size":[-1,2]},"west":{"uv":[9,2],"uv_size":[-1,2]},"up":{"uv":[10,1],"uv_size":[-1,1]},"down":{"uv":[10,3],"uv_size":[-1,-1]}}}]}]}]} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/vulcano.animation.json b/src/main/resources/assets/evolution/cosmetic/wings/vulcano.animation.json new file mode 100644 index 0000000..a914c50 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/vulcano.animation.json @@ -0,0 +1 @@ +{"idle":{"loop":true,"animation_length":1.5417,"bones":{"RIght_1":{"rotation":{"0.0":[0,-10,0],"0.75":[4.73477,25.08553,11.05395],"1.5417":[0,-10,0]}},"bone":{"rotation":{"0.0":[0,30,0],"0.5":[0,-15,0],"1.125":[0,40,0],"1.5417":[0,30,0]}},"RIght_2":{"rotation":{"0.0":[0,10,0],"0.75":[4.73477,-25.08553,-11.05395],"1.5417":[0,10,0]}},"bone2":{"rotation":{"0.0":[0,-30,0],"0.5":[0,15,0],"1.125":[0,-40,0],"1.5417":[0,-30,0]}}}}} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/vulcano.geo.json b/src/main/resources/assets/evolution/cosmetic/wings/vulcano.geo.json new file mode 100644 index 0000000..2dc226d --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/vulcano.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.vulcanowings","texture_width":64,"texture_height":64,"visible_bounds_width":2,"visible_bounds_height":1.5,"visible_bounds_offset":[0,0.25,0]},"bones":[{"name":"RIght_1","pivot":[-0.10365,2.20008,4.1786],"cubes":[{"origin":[10.77105,7.50406,-2.30757],"size":[3,3,6],"inflate":-0.01,"pivot":[12.27105,7.45229,4.23502],"rotation":[42.87779,87.06368,0.81655],"uv":{"north":{"uv":[32,23],"uv_size":[1,1]},"east":{"uv":[38,26],"uv_size":[-6,-3]},"south":{"uv":[32,23],"uv_size":[1,1]},"west":{"uv":[32,23],"uv_size":[6,3]},"up":{"uv":[38,23],"uv_size":[-6,3],"uv_rotation":90},"down":{"uv":[32,26],"uv_size":[6,-3],"uv_rotation":90}}},{"origin":[11.27105,8.22374,4.17404],"size":[2,2,6],"pivot":[12.27105,7.45229,4.23502],"rotation":[82.87779,87.06368,0.81655],"uv":{"north":{"uv":[34,0],"uv_size":[1,2]},"east":{"uv":[40,0],"uv_size":[-6,2]},"south":{"uv":[39,0],"uv_size":[1,2]},"west":{"uv":[34,0],"uv_size":[6,2]},"up":{"uv":[40,1],"uv_size":[-6,-1],"uv_rotation":90},"down":{"uv":[34,2],"uv_size":[6,-1],"uv_rotation":90}}},{"origin":[11.27105,3.22374,8.17404],"size":[2,5,2],"pivot":[12.27105,7.45229,4.23502],"rotation":[82.87779,87.06368,0.81655],"uv":{"north":{"uv":[34,2],"uv_size":[1,5]},"east":{"uv":[36,2],"uv_size":[-2,5]},"south":{"uv":[35,2],"uv_size":[1,5]},"west":{"uv":[34,2],"uv_size":[2,5]},"up":{"uv":[36,7],"uv_size":[-2,-5]},"down":{"uv":[34,18],"uv_size":[2,-1],"uv_rotation":90}}},{"origin":[12.27105,3.12374,-5.82596],"size":[0,11,16],"inflate":0.01,"pivot":[12.27105,7.45229,4.23502],"rotation":[82.87779,87.06368,0.81655],"uv":{"east":{"uv":[0,0],"uv_size":[16,11]},"west":{"uv":[16,0],"uv_size":[16,11]}}},{"origin":[10.98002,4.53341,-8.81246],"size":[3,3,7],"pivot":[12.48002,7.56502,4.24566],"rotation":[15.37778,87.06367,0.81654],"uv":{"north":{"uv":[37,3],"uv_size":[1,1]},"east":{"uv":[44,6],"uv_size":[-7,-3]},"south":{"uv":[37,3],"uv_size":[1,1]},"west":{"uv":[37,3],"uv_size":[7,3]},"up":{"uv":[44,3],"uv_size":[-7,3],"uv_rotation":90},"down":{"uv":[37,6],"uv_size":[7,-3],"uv_rotation":90}}}]},{"name":"bone","pivot":[17.21445,11.1819,4.86829],"parent":"RIght_1","cubes":[{"origin":[11.27105,-7.77626,8.17404],"size":[2,11,2],"pivot":[12.27105,7.45229,4.23502],"rotation":[82.87779,87.06368,0.81655],"uv":{"north":{"uv":[34,7],"uv_size":[1,11]},"east":{"uv":[36,7],"uv_size":[-2,11]},"south":{"uv":[35,7],"uv_size":[1,11]},"west":{"uv":[34,7],"uv_size":[2,11]},"up":{"uv":[36,18],"uv_size":[-2,-11]},"down":{"uv":[34,18],"uv_size":[2,-1],"uv_rotation":90}}},{"origin":[12.27105,-17.87626,-5.82596],"size":[0,21,16],"inflate":0.01,"pivot":[12.27105,7.45229,4.23502],"rotation":[82.87779,87.06368,0.81655],"uv":{"east":{"uv":[0,11],"uv_size":[16,21]},"west":{"uv":[16,11],"uv_size":[16,21]}}}]},{"name":"RIght_2","pivot":[0.10365,2.20008,4.1786],"cubes":[{"origin":[-13.77105,7.50406,-2.30757],"size":[3,3,6],"inflate":-0.01,"pivot":[-12.27105,7.45229,4.23502],"rotation":[42.87779,-87.06368,-0.81655],"uv":{"north":{"uv":[33,23],"uv_size":[-1,1]},"east":{"uv":[38,23],"uv_size":[-6,3]},"south":{"uv":[33,23],"uv_size":[-1,1]},"west":{"uv":[32,26],"uv_size":[6,-3]},"up":{"uv":[38,26],"uv_size":[-6,-3],"uv_rotation":90},"down":{"uv":[32,23],"uv_size":[6,3],"uv_rotation":90}}},{"origin":[-13.27105,8.22374,4.17404],"size":[2,2,6],"pivot":[-12.27105,7.45229,4.23502],"rotation":[82.87779,-87.06368,-0.81655],"uv":{"north":{"uv":[35,0],"uv_size":[-1,2]},"east":{"uv":[40,0],"uv_size":[-6,2]},"south":{"uv":[40,0],"uv_size":[-1,2]},"west":{"uv":[34,0],"uv_size":[6,2]},"up":{"uv":[40,0],"uv_size":[-6,1],"uv_rotation":90},"down":{"uv":[34,1],"uv_size":[6,1],"uv_rotation":90}}},{"origin":[-13.27105,3.22374,8.17404],"size":[2,5,2],"pivot":[-12.27105,7.45229,4.23502],"rotation":[82.87779,-87.06368,-0.81655],"uv":{"north":{"uv":[35,2],"uv_size":[-1,5]},"east":{"uv":[36,2],"uv_size":[-2,5]},"south":{"uv":[36,2],"uv_size":[-1,5]},"west":{"uv":[34,2],"uv_size":[2,5]},"up":{"uv":[34,7],"uv_size":[2,-5]},"down":{"uv":[34,17],"uv_size":[2,1],"uv_rotation":90}}},{"origin":[-12.27105,3.12374,-5.82596],"size":[0,11,16],"inflate":0.01,"pivot":[-12.27105,7.45229,4.23502],"rotation":[82.87779,-87.06368,-0.81655],"uv":{"east":{"uv":[32,0],"uv_size":[-16,11]},"west":{"uv":[16,0],"uv_size":[-16,11]}}},{"origin":[-13.98002,4.53341,-8.81246],"size":[3,3,7],"pivot":[-12.48002,7.56502,4.24566],"rotation":[15.37778,-87.06367,-0.81654],"uv":{"north":{"uv":[38,3],"uv_size":[-1,1]},"east":{"uv":[44,3],"uv_size":[-7,3]},"south":{"uv":[38,3],"uv_size":[-1,1]},"west":{"uv":[37,6],"uv_size":[7,-3]},"up":{"uv":[44,6],"uv_size":[-7,-3],"uv_rotation":90},"down":{"uv":[37,3],"uv_size":[7,3],"uv_rotation":90}}}]},{"name":"bone2","pivot":[-17.21445,11.1819,4.86829],"parent":"RIght_2","cubes":[{"origin":[-13.27105,-7.77626,8.17404],"size":[2,11,2],"pivot":[-12.27105,7.45229,4.23502],"rotation":[82.87779,-87.06368,-0.81655],"uv":{"north":{"uv":[35,7],"uv_size":[-1,11]},"east":{"uv":[36,7],"uv_size":[-2,11]},"south":{"uv":[36,7],"uv_size":[-1,11]},"west":{"uv":[34,7],"uv_size":[2,11]},"up":{"uv":[34,18],"uv_size":[2,-11]},"down":{"uv":[34,17],"uv_size":[2,1],"uv_rotation":90}}},{"origin":[-12.27105,-17.87626,-5.82596],"size":[0,21,16],"inflate":0.01,"pivot":[-12.27105,7.45229,4.23502],"rotation":[82.87779,-87.06368,-0.81655],"uv":{"east":{"uv":[32,11],"uv_size":[-16,21]},"west":{"uv":[16,11],"uv_size":[-16,21]}}}]}]}]} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/wota.animation.json b/src/main/resources/assets/evolution/cosmetic/wings/wota.animation.json new file mode 100644 index 0000000..dae9729 --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/wota.animation.json @@ -0,0 +1 @@ +{"idle":{"loop":true,"animation_length":3,"bones":{"left_wing":{"rotation":{"0.0":[0,0,0],"1.0":[0,-8,8],"3.0":[0,0,0]},"position":{"0.0":[0,0,0],"2.0":[0,0,0]}},"1seg2":{"rotation":{"0.0":[0,0,0],"1.5":[-10,0,0],"3.0":[0,0,0]}},"3seg2":{"rotation":{"0.0":[0,0,0],"1.5":[-15,0,0],"3.0":[0,0,0]}},"2seg2":{"rotation":{"0.0":[0,0,0],"1.5":[-10,0,0],"3.0":[0,0,0]}},"right_wing":{"rotation":{"0.0":[0,0,0],"1.0":[0,8,-8],"3.0":[0,0,0]},"position":{"0.0":[0,0,0],"2.0":[0,0,0]}},"1seg3":{"rotation":{"0.0":[0,0,0],"1.5":[-10,0,0],"3.0":[0,0,0]}},"2seg3":{"rotation":{"0.0":[0,0,0],"1.5":[-10,0,0],"3.0":[0,0,0]}},"3seg3":{"rotation":{"0.0":[0,0,0],"1.5":[-15,0,0],"3.0":[0,0,0]}}}}} diff --git a/src/main/resources/assets/evolution/cosmetic/wings/wota.geo.json b/src/main/resources/assets/evolution/cosmetic/wings/wota.geo.json new file mode 100644 index 0000000..655d1cb --- /dev/null +++ b/src/main/resources/assets/evolution/cosmetic/wings/wota.geo.json @@ -0,0 +1 @@ +{"format_version":"1.12.0","minecraft:geometry":[{"description":{"identifier":"geometry.wota_wings","texture_width":32,"texture_height":32,"visible_bounds_width":2,"visible_bounds_height":1.5,"visible_bounds_offset":[0,0.25,0]},"bones":[{"name":"root","pivot":[0.6,16,3]},{"name":"back","pivot":[-2.4,20,3],"parent":"root"},{"name":"left_wing","pivot":[2.44,20.38747,3.06641],"parent":"root","rotation":[0,0,15]},{"name":"1seg2","pivot":[2.6,20.60934,3.23301],"parent":"left_wing","rotation":[0,57.5,0],"cubes":[{"origin":[1.6,29.84657,0.67109],"size":[2,2,9],"inflate":0.01,"pivot":[2.6,28.13946,11.40951],"rotation":[57.5,0,0],"uv":{"north":{"uv":[2,2],"uv_size":[2,2]},"east":{"uv":[0,0],"uv_size":[9,2]},"south":{"uv":[2,2],"uv_size":[-2,2]},"west":{"uv":[9,2],"uv_size":[-9,-2]},"up":{"uv":[0,2],"uv_size":[9,-2],"uv_rotation":90},"down":{"uv":[9,0],"uv_size":[-9,2],"uv_rotation":90}}}]},{"name":"11seg2","pivot":[2.6153,27.64381,7.80831],"parent":"1seg2","cubes":[{"origin":[1.85,28.875,8.15576],"size":[1.5,1.5,7],"pivot":[2.6,28.13946,11.40951],"rotation":[30,0,0],"uv":{"north":{"uv":[14.5,8],"uv_size":[1.5,1.5]},"east":{"uv":[8,8],"uv_size":[7,1.5]},"south":{"uv":[7,8],"uv_size":[1.5,1.5]},"west":{"uv":[15,9.5],"uv_size":[-7,-1.5]},"up":{"uv":[8,9.5],"uv_size":[7,-1.5],"uv_rotation":90},"down":{"uv":[15,8],"uv_size":[-7,1.5],"uv_rotation":90}}},{"origin":[2.1,30.44637,13.54457],"size":[1,1,7],"pivot":[2.6,31.94637,17.04457],"rotation":[-5,0,0],"uv":{"north":{"uv":[20.5,17],"uv_size":[1,1]},"east":{"uv":[14,17],"uv_size":[7,1]},"south":{"uv":[14,17],"uv_size":[0.5,1]},"west":{"uv":[21,18],"uv_size":[-7,-1]},"up":{"uv":[14,18],"uv_size":[7,-1],"uv_rotation":90},"down":{"uv":[21,17],"uv_size":[-7,1],"uv_rotation":90}}},{"origin":[2.6,28.45398,13.37026],"size":[0,2,7],"inflate":0.21,"pivot":[2.6,29.95398,16.87026],"rotation":[-5,0,0],"uv":{"east":{"uv":[9,0],"uv_size":[7,2]},"west":{"uv":[16,0],"uv_size":[-7,2]}}},{"origin":[2.6,29.85398,8.07026],"size":[0,2,7],"inflate":0.2,"pivot":[2.6,29.95398,16.87026],"rotation":[32.5,0,0],"uv":{"east":{"uv":[9,0],"uv_size":[7,2]},"west":{"uv":[16,0],"uv_size":[-7,2]}}},{"origin":[3.34074,22.71405,18.87805],"size":[0,8,2],"pivot":[3.34074,26.61405,16.57805],"rotation":[12.57558,-0.86717,-9.96271],"uv":{"east":{"uv":[0,9.5],"uv_size":[2,8]},"west":{"uv":[2,9.5],"uv_size":[-2,8]}}},{"origin":[3.34074,23.21405,15.87805],"size":[0,8,2],"pivot":[3.34074,26.61405,16.57805],"rotation":[12.57558,-0.86717,-9.96271],"uv":{"east":{"uv":[1.5,9.5],"uv_size":[2,8]},"west":{"uv":[3.5,9.5],"uv_size":[-2,8]}}},{"origin":[3.34074,23.01405,16.87805],"size":[0,8,2],"inflate":0.01,"pivot":[3.34074,26.61405,16.57805],"rotation":[12.57558,-0.86717,-9.96271],"uv":{"east":{"uv":[3.5,9.5],"uv_size":[2,8]},"west":{"uv":[5.5,9.5],"uv_size":[-2,8]}}},{"origin":[3.34074,23.21405,12.87805],"size":[0,8,2],"inflate":0.01,"pivot":[3.34074,26.61405,16.57805],"rotation":[12.57558,-0.86717,-9.96271],"uv":{"east":{"uv":[2,9.5],"uv_size":[2,8]},"west":{"uv":[4,9.5],"uv_size":[-2,8]}}},{"origin":[3.34074,23.21405,9.87805],"size":[0,8,2],"inflate":0.01,"pivot":[3.34074,26.61405,16.57805],"rotation":[12.57558,-0.86717,-9.96271],"uv":{"east":{"uv":[4.5,9.5],"uv_size":[2,8]},"west":{"uv":[6.5,9.5],"uv_size":[-2,8]}}},{"origin":[3.34074,23.21405,16.87805],"size":[0,8,2],"inflate":0.01,"pivot":[3.34074,26.61405,16.57805],"rotation":[12.57558,-0.86717,-9.96271],"uv":{"east":{"uv":[3.5,9.5],"uv_size":[2,8]},"west":{"uv":[5.5,9.5],"uv_size":[-2,8]}}}]},{"name":"2seg2","pivot":[2.4,20.60934,3.03301],"parent":"left_wing","rotation":[-17.5,57.5,0],"cubes":[{"origin":[1.4,29.84657,0.47109],"size":[2,2,9],"inflate":0.01,"pivot":[2.4,28.13946,11.20951],"rotation":[57.5,0,0],"uv":{"north":{"uv":[12.5,4],"uv_size":[2,2]},"east":{"uv":[4,4],"uv_size":[9,2]},"south":{"uv":[2.5,4],"uv_size":[2,2]},"west":{"uv":[13,6],"uv_size":[-9,-2]},"up":{"uv":[4,6],"uv_size":[9,-2],"uv_rotation":90},"down":{"uv":[13,4],"uv_size":[-9,2],"uv_rotation":90}}}]},{"name":"22seg2","pivot":[2.35928,27.61111,8.18846],"parent":"2seg2","cubes":[{"origin":[3.79254,23.93249,10.06441],"size":[0,8,2],"inflate":0.01,"pivot":[3.79254,26.83249,16.66441],"rotation":[32.31594,2.15393,-9.76758],"uv":{"east":{"uv":[4.5,9.5],"uv_size":[2,8]},"west":{"uv":[6.5,9.5],"uv_size":[-2,8]}}},{"origin":[1.65,28.875,7.95576],"size":[1.5,1.5,4],"pivot":[2.4,28.13946,11.20951],"rotation":[30,0,0],"uv":{"north":{"uv":[21.5,13],"uv_size":[1.5,1.5]},"east":{"uv":[18,13],"uv_size":[4,1.5]},"south":{"uv":[17,13],"uv_size":[1.5,1.5]},"west":{"uv":[22,14.5],"uv_size":[-4,-1.5]},"up":{"uv":[18,14.5],"uv_size":[4,-1.5],"uv_rotation":90},"down":{"uv":[22,13],"uv_size":[-4,1.5],"uv_rotation":90}}},{"origin":[3.79254,23.03249,15.66441],"size":[0,8,2],"inflate":0.01,"pivot":[3.79254,26.83249,16.66441],"rotation":[32.31594,2.15393,-9.76758],"uv":{"east":{"uv":[3.5,9.5],"uv_size":[2,8]},"west":{"uv":[5.5,9.5],"uv_size":[-2,8]}}},{"origin":[3.79254,23.93249,13.06441],"size":[0,8,2],"inflate":0.01,"pivot":[3.79254,26.83249,16.66441],"rotation":[32.31594,2.15393,-9.76758],"uv":{"east":{"uv":[1,9.5],"uv_size":[2,8]},"west":{"uv":[3,9.5],"uv_size":[-2,8]}}},{"origin":[1.9,29.33648,11.03496],"size":[1,1,5],"pivot":[2.4,28.13946,11.20951],"rotation":[12.5,0,0],"uv":{"north":{"uv":[22.5,15],"uv_size":[0.5,1]},"east":{"uv":[18,15],"uv_size":[5,1]},"south":{"uv":[18,15],"uv_size":[0.5,1]},"west":{"uv":[23,16],"uv_size":[-5,-1]},"up":{"uv":[18,16],"uv_size":[5,-1],"uv_rotation":90},"down":{"uv":[18,16],"uv_size":[5,-1],"uv_rotation":270}}},{"origin":[2.33878,27.90532,10.69245],"size":[0,2,4],"inflate":0.2,"pivot":[2.33878,33.70532,13.49245],"rotation":[12.5,0,0],"uv":{"east":{"uv":[9,0],"uv_size":[4,2]},"west":{"uv":[13,0],"uv_size":[-4,2]}}}]},{"name":"3seg2","pivot":[2.4,20.60934,3.03301],"parent":"left_wing","rotation":[-37.5,57.5,0],"cubes":[{"origin":[1.65,30.09657,0.47109],"size":[1.5,1.5,7],"pivot":[2.4,28.13946,11.20951],"rotation":[57.5,0,0],"uv":{"north":{"uv":[15,2],"uv_size":[1.5,1.5]},"east":{"uv":[9,2],"uv_size":[7,1.5]},"south":{"uv":[8,2],"uv_size":[1.5,1.5]},"west":{"uv":[16,3.5],"uv_size":[-7,-1.5]},"up":{"uv":[9,3.5],"uv_size":[7,-1.5],"uv_rotation":90},"down":{"uv":[16,2],"uv_size":[-7,1.5],"uv_rotation":90}}},{"origin":[1.9,27.225,6.55576],"size":[1,1,3],"pivot":[2.4,26.23946,9.80951],"rotation":[30,0,0],"uv":{"north":{"uv":[16.5,20],"uv_size":[0.5,1]},"east":{"uv":[14,20],"uv_size":[3,1]},"south":{"uv":[14,20],"uv_size":[0.5,1]},"west":{"uv":[17,21],"uv_size":[-3,-1]},"up":{"uv":[14,21],"uv_size":[3,-1],"uv_rotation":90},"down":{"uv":[17,20],"uv_size":[-3,1],"uv_rotation":90}}},{"origin":[1.9,26.29161,9.31263],"size":[1,1,3],"pivot":[2.4,24.2946,6.48718],"rotation":[12.5,0,0],"uv":{"north":{"uv":[22.5,18],"uv_size":[0.5,1]},"east":{"uv":[20,18],"uv_size":[3,1]},"south":{"uv":[19.5,18],"uv_size":[1,1]},"west":{"uv":[23,19],"uv_size":[-3,-1]},"up":{"uv":[20,19],"uv_size":[3,-1],"uv_rotation":90},"down":{"uv":[23,18],"uv_size":[-3,1],"uv_rotation":90}}},{"origin":[3.79254,25.2194,5.1139],"size":[0,8,2],"inflate":0.01,"pivot":[3.79254,31.1194,13.7139],"rotation":[52.10382,5.35355,-8.45862],"uv":{"east":{"uv":[4.5,9.5],"uv_size":[2,8]},"west":{"uv":[6.5,9.5],"uv_size":[-2,8]}}},{"origin":[3.79254,25.2194,3.1139],"size":[0,8,2],"inflate":0.01,"pivot":[3.79254,31.1194,13.7139],"rotation":[52.10382,5.35355,-8.45862],"uv":{"east":{"uv":[2.5,9.5],"uv_size":[2,8]},"west":{"uv":[4.5,9.5],"uv_size":[-2,8]}}},{"origin":[3.79254,25.2194,0.1139],"size":[0,8,2],"inflate":0.01,"pivot":[3.79254,31.1194,13.7139],"rotation":[52.10382,5.35355,-8.45862],"uv":{"east":{"uv":[0,9.5],"uv_size":[2,8]},"west":{"uv":[2,9.5],"uv_size":[-2,8]}}},{"origin":[2.33878,25.09287,6.48258],"size":[0,2,4],"inflate":0.2,"pivot":[2.33878,36.49287,8.38258],"rotation":[5,0,0],"uv":{"east":{"uv":[9,0],"uv_size":[4,2]},"west":{"uv":[13,0],"uv_size":[-4,2]}}}]},{"name":"right_wing","pivot":[-2.44,20.38747,3.06641],"parent":"root","rotation":[0,0,-15]},{"name":"1seg3","pivot":[-2.6,20.60934,3.23301],"parent":"right_wing","rotation":[0,-57.5,0],"cubes":[{"origin":[-3.6,29.84657,0.67109],"size":[2,2,9],"inflate":0.01,"pivot":[-2.6,28.13946,11.40951],"rotation":[57.5,0,0],"uv":{"north":{"uv":[4,2],"uv_size":[-2,2]},"east":{"uv":[0,2],"uv_size":[9,-2]},"south":{"uv":[0,2],"uv_size":[2,2]},"west":{"uv":[9,0],"uv_size":[-9,2]},"up":{"uv":[0,0],"uv_size":[9,2],"uv_rotation":90},"down":{"uv":[9,2],"uv_size":[-9,-2],"uv_rotation":90}}}]},{"name":"11seg3","pivot":[-2.6153,27.64381,7.80831],"parent":"1seg3","cubes":[{"origin":[-3.35,28.875,8.15576],"size":[1.5,1.5,7],"pivot":[-2.6,28.13946,11.40951],"rotation":[30,0,0],"uv":{"north":{"uv":[16,8],"uv_size":[-1.5,1.5]},"east":{"uv":[8,9.5],"uv_size":[7,-1.5]},"south":{"uv":[8.5,8],"uv_size":[-1.5,1.5]},"west":{"uv":[15,8],"uv_size":[-7,1.5]},"up":{"uv":[8,8],"uv_size":[7,1.5],"uv_rotation":90},"down":{"uv":[15,9.5],"uv_size":[-7,-1.5],"uv_rotation":90}}},{"origin":[-2.6,29.85398,8.07026],"size":[0,2,7],"inflate":0.2,"pivot":[-2.6,29.95398,16.87026],"rotation":[32.5,0,0],"uv":{"east":{"uv":[9,0],"uv_size":[7,2]},"west":{"uv":[16,0],"uv_size":[-7,2]}}},{"origin":[-3.34074,22.71405,18.87805],"size":[0,8,2],"pivot":[-3.34074,26.61405,16.57805],"rotation":[12.57558,0.86717,9.96271],"uv":{"east":{"uv":[0,9.5],"uv_size":[2,8]},"west":{"uv":[2,9.5],"uv_size":[-2,8]}}},{"origin":[-3.34074,23.21405,15.87805],"size":[0,8,2],"pivot":[-3.34074,26.61405,16.57805],"rotation":[12.57558,0.86717,9.96271],"uv":{"east":{"uv":[1.5,9.5],"uv_size":[2,8]},"west":{"uv":[3.5,9.5],"uv_size":[-2,8]}}},{"origin":[-3.34074,23.01405,16.87805],"size":[0,8,2],"inflate":0.01,"pivot":[-3.34074,26.61405,16.57805],"rotation":[12.57558,0.86717,9.96271],"uv":{"east":{"uv":[3.5,9.5],"uv_size":[2,8]},"west":{"uv":[5.5,9.5],"uv_size":[-2,8]}}},{"origin":[-3.34074,23.21405,12.87805],"size":[0,8,2],"inflate":0.01,"pivot":[-3.34074,26.61405,16.57805],"rotation":[12.57558,0.86717,9.96271],"uv":{"east":{"uv":[2,9.5],"uv_size":[2,8]},"west":{"uv":[4,9.5],"uv_size":[-2,8]}}},{"origin":[-3.34074,23.21405,9.87805],"size":[0,8,2],"inflate":0.01,"pivot":[-3.34074,26.61405,16.57805],"rotation":[12.57558,0.86717,9.96271],"uv":{"east":{"uv":[4.5,9.5],"uv_size":[2,8]},"west":{"uv":[6.5,9.5],"uv_size":[-2,8]}}},{"origin":[-3.34074,23.21405,16.87805],"size":[0,8,2],"inflate":0.01,"pivot":[-3.34074,26.61405,16.57805],"rotation":[12.57558,0.86717,9.96271],"uv":{"east":{"uv":[3.5,9.5],"uv_size":[2,8]},"west":{"uv":[5.5,9.5],"uv_size":[-2,8]}}},{"origin":[-2.6,28.45398,13.37026],"size":[0,2,7],"inflate":0.21,"pivot":[-2.6,29.95398,16.87026],"rotation":[-5,0,0],"uv":{"east":{"uv":[9,0],"uv_size":[7,2]},"west":{"uv":[16,0],"uv_size":[-7,2]}}},{"origin":[-3.1,30.44637,13.54457],"size":[1,1,7],"pivot":[-2.6,31.94637,17.04457],"rotation":[-5,0,0],"uv":{"north":{"uv":[21.5,17],"uv_size":[-1,1]},"east":{"uv":[14,18],"uv_size":[7,-1]},"south":{"uv":[14.5,17],"uv_size":[-0.5,1]},"west":{"uv":[21,17],"uv_size":[-7,1]},"up":{"uv":[14,17],"uv_size":[7,1],"uv_rotation":90},"down":{"uv":[21,18],"uv_size":[-7,-1],"uv_rotation":90}}}]},{"name":"2seg3","pivot":[-2.4,20.60934,3.03301],"parent":"right_wing","rotation":[-17.5,-57.5,0],"cubes":[{"origin":[-3.4,29.84657,0.47109],"size":[2,2,9],"inflate":0.01,"pivot":[-2.4,28.13946,11.20951],"rotation":[57.5,0,0],"uv":{"north":{"uv":[14.5,4],"uv_size":[-2,2]},"east":{"uv":[4,6],"uv_size":[9,-2]},"south":{"uv":[4.5,4],"uv_size":[-2,2]},"west":{"uv":[13,4],"uv_size":[-9,2]},"up":{"uv":[4,4],"uv_size":[9,2],"uv_rotation":90},"down":{"uv":[13,6],"uv_size":[-9,-2],"uv_rotation":90}}}]},{"name":"22seg3","pivot":[-2.35928,27.61111,8.18846],"parent":"2seg3","cubes":[{"origin":[-3.79254,23.93249,10.06441],"size":[0,8,2],"inflate":0.01,"pivot":[-3.79254,26.83249,16.66441],"rotation":[32.31594,-2.15393,9.76758],"uv":{"east":{"uv":[4.5,9.5],"uv_size":[2,8]},"west":{"uv":[6.5,9.5],"uv_size":[-2,8]}}},{"origin":[-3.15,28.875,7.95576],"size":[1.5,1.5,4],"pivot":[-2.4,28.13946,11.20951],"rotation":[30,0,0],"uv":{"north":{"uv":[23,13],"uv_size":[-1.5,1.5]},"east":{"uv":[18,14.5],"uv_size":[4,-1.5]},"south":{"uv":[18.5,13],"uv_size":[-1.5,1.5]},"west":{"uv":[22,13],"uv_size":[-4,1.5]},"up":{"uv":[18,13],"uv_size":[4,1.5],"uv_rotation":90},"down":{"uv":[22,14.5],"uv_size":[-4,-1.5],"uv_rotation":90}}},{"origin":[-3.79254,23.03249,15.66441],"size":[0,8,2],"inflate":0.01,"pivot":[-3.79254,26.83249,16.66441],"rotation":[32.31594,-2.15393,9.76758],"uv":{"east":{"uv":[3.5,9.5],"uv_size":[2,8]},"west":{"uv":[5.5,9.5],"uv_size":[-2,8]}}},{"origin":[-3.79254,23.93249,13.06441],"size":[0,8,2],"inflate":0.01,"pivot":[-3.79254,26.83249,16.66441],"rotation":[32.31594,-2.15393,9.76758],"uv":{"east":{"uv":[1,9.5],"uv_size":[2,8]},"west":{"uv":[3,9.5],"uv_size":[-2,8]}}},{"origin":[-2.9,29.33648,11.03496],"size":[1,1,5],"pivot":[-2.4,28.13946,11.20951],"rotation":[12.5,0,0],"uv":{"north":{"uv":[23,15],"uv_size":[-0.5,1]},"east":{"uv":[18,16],"uv_size":[5,-1]},"south":{"uv":[18.5,15],"uv_size":[-0.5,1]},"west":{"uv":[23,15],"uv_size":[-5,1]},"up":{"uv":[18,15],"uv_size":[5,1],"uv_rotation":90},"down":{"uv":[18,15],"uv_size":[5,1],"uv_rotation":270}}},{"origin":[-2.33878,27.90532,10.69245],"size":[0,2,4],"inflate":0.2,"pivot":[-2.33878,33.70532,13.49245],"rotation":[12.5,0,0],"uv":{"east":{"uv":[9,0],"uv_size":[4,2]},"west":{"uv":[13,0],"uv_size":[-4,2]}}}]},{"name":"3seg3","pivot":[-2.4,20.60934,3.03301],"parent":"right_wing","rotation":[-37.5,-57.5,0],"cubes":[{"origin":[-2.33878,25.95441,7.51071],"size":[0,2,4],"inflate":0.2,"pivot":[-2.33878,26.95441,13.51071],"rotation":[15,0,0],"uv":{"east":{"uv":[9,0],"uv_size":[4,2]},"west":{"uv":[13,0],"uv_size":[-4,2]}}},{"origin":[-3.15,30.09657,0.47109],"size":[1.5,1.5,7],"pivot":[-2.4,28.13946,11.20951],"rotation":[57.5,0,0],"uv":{"north":{"uv":[16.5,2],"uv_size":[-1.5,1.5]},"east":{"uv":[9,3.5],"uv_size":[7,-1.5]},"south":{"uv":[9.5,2],"uv_size":[-1.5,1.5]},"west":{"uv":[16,2],"uv_size":[-7,1.5]},"up":{"uv":[9,2],"uv_size":[7,1.5],"uv_rotation":90},"down":{"uv":[16,3.5],"uv_size":[-7,-1.5],"uv_rotation":90}}},{"origin":[-2.9,27.225,6.55576],"size":[1,1,3],"pivot":[-2.4,26.23946,9.80951],"rotation":[30,0,0],"uv":{"north":{"uv":[17,20],"uv_size":[-0.5,1]},"east":{"uv":[14,21],"uv_size":[3,-1]},"south":{"uv":[14.5,20],"uv_size":[-0.5,1]},"west":{"uv":[17,20],"uv_size":[-3,1]},"up":{"uv":[14,20],"uv_size":[3,1],"uv_rotation":90},"down":{"uv":[17,21],"uv_size":[-3,-1],"uv_rotation":90}}},{"origin":[-2.9,26.29161,9.31263],"size":[1,1,3],"pivot":[-2.4,24.2946,6.48718],"rotation":[12.5,0,0],"uv":{"north":{"uv":[23,18],"uv_size":[-0.5,1]},"east":{"uv":[20,19],"uv_size":[3,-1]},"south":{"uv":[20.5,18],"uv_size":[-1,1]},"west":{"uv":[23,18],"uv_size":[-3,1]},"up":{"uv":[20,18],"uv_size":[3,1],"uv_rotation":90},"down":{"uv":[23,19],"uv_size":[-3,-1],"uv_rotation":90}}},{"origin":[-3.79254,25.2194,5.1139],"size":[0,8,2],"inflate":0.01,"pivot":[-3.79254,31.1194,13.7139],"rotation":[52.10382,-5.35355,8.45862],"uv":{"east":{"uv":[4.5,9.5],"uv_size":[2,8]},"west":{"uv":[6.5,9.5],"uv_size":[-2,8]}}},{"origin":[-3.79254,25.2194,3.1139],"size":[0,8,2],"inflate":0.01,"pivot":[-3.79254,31.1194,13.7139],"rotation":[52.10382,-5.35355,8.45862],"uv":{"east":{"uv":[2.5,9.5],"uv_size":[2,8]},"west":{"uv":[4.5,9.5],"uv_size":[-2,8]}}},{"origin":[-3.79254,25.2194,0.1139],"size":[0,8,2],"inflate":0.01,"pivot":[-3.79254,31.1194,13.7139],"rotation":[52.10382,-5.35355,8.45862],"uv":{"east":{"uv":[0,9.5],"uv_size":[2,8]},"west":{"uv":[2,9.5],"uv_size":[-2,8]}}}]},{"name":"root2","pivot":[-0.6,16,3]},{"name":"right_wing2","pivot":[-2.44,20.38747,3.06641],"parent":"root2","rotation":[0,0,-15]},{"name":"1seg4","pivot":[-2.6,20.60934,3.23301],"parent":"right_wing2","rotation":[0,-57.5,0]},{"name":"11seg4","pivot":[-2.6153,27.64381,7.80831],"parent":"1seg4"},{"name":"left_wing2","pivot":[2.44,20.38747,3.06641],"parent":"root2","rotation":[0,0,15]},{"name":"1seg5","pivot":[2.6,20.60934,3.23301],"parent":"left_wing2","rotation":[0,57.5,0]},{"name":"11seg5","pivot":[2.6153,27.64381,7.80831],"parent":"1seg5"}]}]} diff --git a/src/main/resources/assets/evolution/font/nametag_icons.json b/src/main/resources/assets/evolution/font/nametag_icons.json new file mode 100644 index 0000000..ce4f02b --- /dev/null +++ b/src/main/resources/assets/evolution/font/nametag_icons.json @@ -0,0 +1,17 @@ +{ + "providers": [ + { + "type": "space", + "advances": { + "": 1 + } + }, + { + "type": "bitmap", + "file": "evolution:font/heart.png", + "ascent": 7, + "height": 8, + "chars": [""] + } + ] +} diff --git a/src/main/resources/assets/evolution/font/tab_icon.json b/src/main/resources/assets/evolution/font/tab_icon.json new file mode 100644 index 0000000..49596bb --- /dev/null +++ b/src/main/resources/assets/evolution/font/tab_icon.json @@ -0,0 +1,11 @@ +{ + "providers": [ + { + "type": "bitmap", + "file": "evolution:font/tab_icon.png", + "ascent": 7, + "height": 8, + "chars": [""] + } + ] +} diff --git a/src/main/resources/assets/evolution/fonts/msdf/bold.json b/src/main/resources/assets/evolution/fonts/msdf/bold.json new file mode 100644 index 0000000..f44cf67 --- /dev/null +++ b/src/main/resources/assets/evolution/fonts/msdf/bold.json @@ -0,0 +1 @@ +{"atlas":{"type":"mtsdf","distanceRange":10,"distanceRangeMiddle":0,"size":64,"width":660,"height":660,"yOrigin":"bottom"},"metrics":{"emSize":1,"lineHeight":1.193359375,"ascender":0.9521484375,"descender":-0.2412109375,"underlineY":-0.18310546875,"underlineThickness":0.0927734375},"glyphs":[{"unicode":32,"advance":0.19775390625},{"unicode":33,"advance":0.31640625,"planeBounds":{"left":-0.005859375,"bottom":-0.1015625,"right":0.322265625,"top":0.7890625},"atlasBounds":{"left":602.5,"bottom":343.5,"right":623.5,"top":400.5}},{"unicode":34,"advance":0.45361328125,"planeBounds":{"left":-0.031005859375,"bottom":0.3515625,"right":0.484619140625,"top":0.7890625},"atlasBounds":{"left":136.5,"bottom":1.5,"right":169.5,"top":29.5}},{"unicode":35,"advance":0.63671875,"planeBounds":{"left":-0.080078125,"bottom":-0.0859375,"right":0.716796875,"top":0.7890625},"atlasBounds":{"left":191.5,"bottom":487.5,"right":242.5,"top":543.5}},{"unicode":36,"advance":0.6474609375,"planeBounds":{"left":-0.03564453125,"bottom":-0.1484375,"right":0.68310546875,"top":0.8671875},"atlasBounds":{"left":295.5,"bottom":244.5,"right":341.5,"top":309.5}},{"unicode":37,"advance":0.8154296875,"planeBounds":{"left":-0.06103515625,"bottom":-0.1015625,"right":0.87646484375,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":83.5,"right":60.5,"top":141.5}},{"unicode":38,"advance":0.70166015625,"planeBounds":{"left":-0.0498046875,"bottom":-0.1015625,"right":0.7939453125,"top":0.8046875},"atlasBounds":{"left":75.5,"bottom":37.5,"right":129.5,"top":95.5}},{"unicode":40,"advance":0.3818359375,"planeBounds":{"left":0.008056640625,"bottom":-0.2421875,"right":0.445556640625,"top":0.7890625},"atlasBounds":{"left":602.5,"bottom":526.5,"right":630.5,"top":592.5}},{"unicode":41,"advance":0.3818359375,"planeBounds":{"left":-0.063720703125,"bottom":-0.2421875,"right":0.373779296875,"top":0.7890625},"atlasBounds":{"left":631.5,"bottom":593.5,"right":659.5,"top":659.5}},{"unicode":42,"advance":0.4853515625,"planeBounds":{"left":-0.029541015625,"bottom":0.2734375,"right":0.517333984375,"top":0.8203125},"atlasBounds":{"left":0.5,"bottom":1.5,"right":35.5,"top":36.5}},{"unicode":43,"advance":0.6474609375,"planeBounds":{"left":-0.02001953125,"bottom":-0.0859375,"right":0.66748046875,"top":0.6484375},"atlasBounds":{"left":343.5,"bottom":5.5,"right":387.5,"top":52.5}},{"unicode":44,"advance":0.27783203125,"planeBounds":{"left":-0.041259765625,"bottom":-0.2421875,"right":0.302490234375,"top":0.2109375},"atlasBounds":{"left":36.5,"bottom":7.5,"right":58.5,"top":36.5}},{"unicode":45,"advance":0.44189453125,"planeBounds":{"left":-0.021240234375,"bottom":0.1328125,"right":0.463134765625,"top":0.4296875},"atlasBounds":{"left":563.5,"bottom":225.5,"right":594.5,"top":244.5}},{"unicode":46,"advance":0.27783203125,"planeBounds":{"left":-0.02490234375,"bottom":-0.0859375,"right":0.30322265625,"top":0.2421875},"atlasBounds":{"left":522.5,"bottom":2.5,"right":543.5,"top":23.5}},{"unicode":47,"advance":0.3818359375,"planeBounds":{"left":-0.08251953125,"bottom":-0.2421875,"right":0.46435546875,"top":0.7890625},"atlasBounds":{"left":563.5,"bottom":548.5,"right":598.5,"top":614.5}},{"unicode":48,"advance":0.65087890625,"planeBounds":{"left":-0.041748046875,"bottom":-0.1015625,"right":0.692626953125,"top":0.8046875},"atlasBounds":{"left":244.5,"bottom":42.5,"right":291.5,"top":100.5}},{"unicode":49,"advance":0.47998046875,"planeBounds":{"left":-0.042236328125,"bottom":-0.0859375,"right":0.457763671875,"top":0.7890625},"atlasBounds":{"left":563.5,"bottom":245.5,"right":595.5,"top":301.5}},{"unicode":50,"advance":0.60302734375,"planeBounds":{"left":-0.0419921875,"bottom":-0.0859375,"right":0.6455078125,"top":0.8046875},"atlasBounds":{"left":390.5,"bottom":557.5,"right":434.5,"top":614.5}},{"unicode":51,"advance":0.6298828125,"planeBounds":{"left":-0.047119140625,"bottom":-0.1015625,"right":0.671630859375,"top":0.8046875},"atlasBounds":{"left":295.5,"bottom":185.5,"right":341.5,"top":243.5}},{"unicode":52,"advance":0.64794921875,"planeBounds":{"left":-0.048583984375,"bottom":-0.0859375,"right":0.701416015625,"top":0.7890625},"atlasBounds":{"left":244.5,"bottom":261.5,"right":292.5,"top":317.5}},{"unicode":53,"advance":0.625,"planeBounds":{"left":-0.027099609375,"bottom":-0.1015625,"right":0.676025390625,"top":0.7890625},"atlasBounds":{"left":343.5,"bottom":375.5,"right":388.5,"top":432.5}},{"unicode":54,"advance":0.64306640625,"planeBounds":{"left":-0.04443359375,"bottom":-0.1015625,"right":0.68994140625,"top":0.8046875},"atlasBounds":{"left":295.5,"bottom":601.5,"right":342.5,"top":659.5}},{"unicode":55,"advance":0.572265625,"planeBounds":{"left":-0.052734375,"bottom":-0.0859375,"right":0.619140625,"top":0.7890625},"atlasBounds":{"left":435.5,"bottom":558.5,"right":478.5,"top":614.5}},{"unicode":56,"advance":0.65234375,"planeBounds":{"left":-0.041015625,"bottom":-0.1015625,"right":0.693359375,"top":0.8046875},"atlasBounds":{"left":295.5,"bottom":542.5,"right":342.5,"top":600.5}},{"unicode":57,"advance":0.64501953125,"planeBounds":{"left":-0.0458984375,"bottom":-0.1015625,"right":0.6884765625,"top":0.8046875},"atlasBounds":{"left":295.5,"bottom":483.5,"right":342.5,"top":541.5}},{"unicode":58,"advance":0.27783203125,"planeBounds":{"left":-0.02490234375,"bottom":-0.0859375,"right":0.30322265625,"top":0.5859375},"atlasBounds":{"left":602.5,"bottom":299.5,"right":623.5,"top":342.5}},{"unicode":59,"advance":0.27783203125,"planeBounds":{"left":-0.042236328125,"bottom":-0.2421875,"right":0.301513671875,"top":0.5859375},"atlasBounds":{"left":602.5,"bottom":401.5,"right":624.5,"top":454.5}},{"unicode":60,"advance":0.6474609375,"planeBounds":{"left":0.011474609375,"bottom":-0.1015625,"right":0.636474609375,"top":0.6640625},"atlasBounds":{"left":522.5,"bottom":69.5,"right":562.5,"top":118.5}},{"unicode":61,"advance":0.6474609375,"planeBounds":{"left":-0.01220703125,"bottom":0.0234375,"right":0.65966796875,"top":0.5390625},"atlasBounds":{"left":75.5,"bottom":3.5,"right":118.5,"top":36.5}},{"unicode":62,"advance":0.6474609375,"planeBounds":{"left":0.011474609375,"bottom":-0.1015625,"right":0.636474609375,"top":0.6640625},"atlasBounds":{"left":522.5,"bottom":188.5,"right":562.5,"top":237.5}},{"unicode":63,"advance":0.53369140625,"planeBounds":{"left":-0.059326171875,"bottom":-0.1015625,"right":0.581298828125,"top":0.7890625},"atlasBounds":{"left":479.5,"bottom":74.5,"right":520.5,"top":131.5}},{"unicode":64,"advance":0.8837890625,"planeBounds":{"left":-0.041748046875,"bottom":-0.1953125,"right":0.927001953125,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":300.5,"right":62.5,"top":363.5}},{"unicode":65,"advance":0.68994140625,"planeBounds":{"left":-0.06884765625,"bottom":-0.0859375,"right":0.75927734375,"top":0.7890625},"atlasBounds":{"left":136.5,"bottom":423.5,"right":189.5,"top":479.5}},{"unicode":66,"advance":0.6396484375,"planeBounds":{"left":-0.02294921875,"bottom":-0.0859375,"right":0.69580078125,"top":0.7890625},"atlasBounds":{"left":295.5,"bottom":71.5,"right":341.5,"top":127.5}},{"unicode":67,"advance":0.71240234375,"planeBounds":{"left":-0.0478515625,"bottom":-0.1015625,"right":0.7646484375,"top":0.8046875},"atlasBounds":{"left":136.5,"bottom":307.5,"right":188.5,"top":365.5}},{"unicode":68,"advance":0.69970703125,"planeBounds":{"left":-0.021728515625,"bottom":-0.0859375,"right":0.743896484375,"top":0.7890625},"atlasBounds":{"left":244.5,"bottom":546.5,"right":293.5,"top":602.5}},{"unicode":69,"advance":0.5732421875,"planeBounds":{"left":-0.0205078125,"bottom":-0.0859375,"right":0.6044921875,"top":0.7890625},"atlasBounds":{"left":522.5,"bottom":546.5,"right":562.5,"top":602.5}},{"unicode":70,"advance":0.54833984375,"planeBounds":{"left":-0.023193359375,"bottom":-0.0859375,"right":0.601806640625,"top":0.7890625},"atlasBounds":{"left":522.5,"bottom":489.5,"right":562.5,"top":545.5}},{"unicode":71,"advance":0.72705078125,"planeBounds":{"left":-0.043701171875,"bottom":-0.1015625,"right":0.768798828125,"top":0.8046875},"atlasBounds":{"left":136.5,"bottom":248.5,"right":188.5,"top":306.5}},{"unicode":72,"advance":0.7294921875,"planeBounds":{"left":-0.02587890625,"bottom":-0.0859375,"right":0.75537109375,"top":0.7890625},"atlasBounds":{"left":191.5,"bottom":217.5,"right":241.5,"top":273.5}},{"unicode":73,"advance":0.2646484375,"planeBounds":{"left":-0.02392578125,"bottom":-0.0859375,"right":0.28857421875,"top":0.7890625},"atlasBounds":{"left":602.5,"bottom":185.5,"right":622.5,"top":241.5}},{"unicode":74,"advance":0.55810546875,"planeBounds":{"left":-0.065673828125,"bottom":-0.1015625,"right":0.574951171875,"top":0.7890625},"atlasBounds":{"left":479.5,"bottom":132.5,"right":520.5,"top":189.5}},{"unicode":75,"advance":0.66064453125,"planeBounds":{"left":-0.02490234375,"bottom":-0.0859375,"right":0.74072265625,"top":0.7890625},"atlasBounds":{"left":244.5,"bottom":489.5,"right":293.5,"top":545.5}},{"unicode":76,"advance":0.54296875,"planeBounds":{"left":-0.026123046875,"bottom":-0.0859375,"right":0.598876953125,"top":0.7890625},"atlasBounds":{"left":522.5,"bottom":603.5,"right":562.5,"top":659.5}},{"unicode":77,"advance":0.86328125,"planeBounds":{"left":-0.021484375,"bottom":-0.0859375,"right":0.884765625,"top":0.7890625},"atlasBounds":{"left":75.5,"bottom":501.5,"right":133.5,"top":557.5}},{"unicode":78,"advance":0.71435546875,"planeBounds":{"left":-0.025634765625,"bottom":-0.0859375,"right":0.739990234375,"top":0.7890625},"atlasBounds":{"left":244.5,"bottom":375.5,"right":293.5,"top":431.5}},{"unicode":79,"advance":0.75244140625,"planeBounds":{"left":-0.04541015625,"bottom":-0.1015625,"right":0.79833984375,"top":0.8046875},"atlasBounds":{"left":136.5,"bottom":601.5,"right":190.5,"top":659.5}},{"unicode":80,"advance":0.61767578125,"planeBounds":{"left":-0.019775390625,"bottom":-0.0859375,"right":0.667724609375,"top":0.7890625},"atlasBounds":{"left":390.5,"bottom":383.5,"right":434.5,"top":439.5}},{"unicode":81,"advance":0.75244140625,"planeBounds":{"left":-0.045654296875,"bottom":-0.1484375,"right":0.798095703125,"top":0.8046875},"atlasBounds":{"left":136.5,"bottom":539.5,"right":190.5,"top":600.5}},{"unicode":82,"advance":0.64013671875,"planeBounds":{"left":-0.026611328125,"bottom":-0.0859375,"right":0.707763671875,"top":0.7890625},"atlasBounds":{"left":295.5,"bottom":426.5,"right":342.5,"top":482.5}},{"unicode":83,"advance":0.63134765625,"planeBounds":{"left":-0.05126953125,"bottom":-0.1015625,"right":0.68310546875,"top":0.8046875},"atlasBounds":{"left":295.5,"bottom":367.5,"right":342.5,"top":425.5}},{"unicode":84,"advance":0.6015625,"planeBounds":{"left":-0.058349609375,"bottom":-0.0859375,"right":0.660400390625,"top":0.7890625},"atlasBounds":{"left":343.5,"bottom":603.5,"right":389.5,"top":659.5}},{"unicode":85,"advance":0.70751953125,"planeBounds":{"left":-0.021240234375,"bottom":-0.1015625,"right":0.728759765625,"top":0.7890625},"atlasBounds":{"left":244.5,"bottom":158.5,"right":292.5,"top":215.5}},{"unicode":86,"advance":0.67822265625,"planeBounds":{"left":-0.06689453125,"bottom":-0.0859375,"right":0.74560546875,"top":0.7890625},"atlasBounds":{"left":136.5,"bottom":191.5,"right":188.5,"top":247.5}},{"unicode":87,"advance":0.96533203125,"planeBounds":{"left":-0.06396484375,"bottom":-0.0859375,"right":1.02978515625,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":546.5,"right":70.5,"top":602.5}},{"unicode":88,"advance":0.685546875,"planeBounds":{"left":-0.0634765625,"bottom":-0.0859375,"right":0.7490234375,"top":0.7890625},"atlasBounds":{"left":136.5,"bottom":134.5,"right":188.5,"top":190.5}},{"unicode":89,"advance":0.6650390625,"planeBounds":{"left":-0.065673828125,"bottom":-0.0859375,"right":0.731201171875,"top":0.7890625},"atlasBounds":{"left":191.5,"bottom":385.5,"right":242.5,"top":441.5}},{"unicode":90,"advance":0.630859375,"planeBounds":{"left":-0.0361328125,"bottom":-0.0859375,"right":0.6669921875,"top":0.7890625},"atlasBounds":{"left":343.5,"bottom":147.5,"right":388.5,"top":203.5}},{"unicode":91,"advance":0.3818359375,"planeBounds":{"left":0.015625,"bottom":-0.2421875,"right":0.453125,"top":0.7890625},"atlasBounds":{"left":563.5,"bottom":2.5,"right":591.5,"top":68.5}},{"unicode":92,"advance":0.3818359375,"planeBounds":{"left":-0.08251953125,"bottom":-0.2421875,"right":0.46435546875,"top":0.7890625},"atlasBounds":{"left":563.5,"bottom":481.5,"right":598.5,"top":547.5}},{"unicode":93,"advance":0.3818359375,"planeBounds":{"left":-0.0712890625,"bottom":-0.2421875,"right":0.3662109375,"top":0.7890625},"atlasBounds":{"left":602.5,"bottom":593.5,"right":630.5,"top":659.5}},{"unicode":94,"advance":0.4775390625,"planeBounds":{"left":-0.057861328125,"bottom":0.3046875,"right":0.535888671875,"top":0.7734375},"atlasBounds":{"left":191.5,"bottom":3.5,"right":229.5,"top":33.5}},{"unicode":95,"advance":0.41845703125,"planeBounds":{"left":-0.103271484375,"bottom":-0.2421875,"right":0.521728515625,"top":0.0390625},"atlasBounds":{"left":390.5,"bottom":18.5,"right":430.5,"top":36.5}},{"unicode":96,"advance":0.4931640625,"planeBounds":{"left":0.044189453125,"bottom":0.5390625,"right":0.450439453125,"top":0.8671875},"atlasBounds":{"left":479.5,"bottom":5.5,"right":505.5,"top":26.5}},{"unicode":97,"advance":0.54736328125,"planeBounds":{"left":-0.05615234375,"bottom":-0.1015625,"right":0.58447265625,"top":0.6171875},"atlasBounds":{"left":479.5,"bottom":190.5,"right":520.5,"top":236.5}},{"unicode":98,"advance":0.59716796875,"planeBounds":{"left":-0.033935546875,"bottom":-0.1015625,"right":0.653564453125,"top":0.7890625},"atlasBounds":{"left":390.5,"bottom":37.5,"right":434.5,"top":94.5}},{"unicode":99,"advance":0.544921875,"planeBounds":{"left":-0.05322265625,"bottom":-0.1015625,"right":0.60302734375,"top":0.6171875},"atlasBounds":{"left":479.5,"bottom":523.5,"right":521.5,"top":569.5}},{"unicode":100,"advance":0.595703125,"planeBounds":{"left":-0.056640625,"bottom":-0.1015625,"right":0.630859375,"top":0.7890625},"atlasBounds":{"left":390.5,"bottom":95.5,"right":434.5,"top":152.5}},{"unicode":101,"advance":0.55517578125,"planeBounds":{"left":-0.05810546875,"bottom":-0.1015625,"right":0.61376953125,"top":0.6171875},"atlasBounds":{"left":435.5,"bottom":315.5,"right":478.5,"top":361.5}},{"unicode":102,"advance":0.35595703125,"planeBounds":{"left":-0.07080078125,"bottom":-0.0859375,"right":0.41357421875,"top":0.7890625},"atlasBounds":{"left":563.5,"bottom":168.5,"right":594.5,"top":224.5}},{"unicode":103,"advance":0.59326171875,"planeBounds":{"left":-0.056640625,"bottom":-0.2890625,"right":0.630859375,"top":0.6171875},"atlasBounds":{"left":390.5,"bottom":267.5,"right":434.5,"top":325.5}},{"unicode":104,"advance":0.58447265625,"planeBounds":{"left":-0.033203125,"bottom":-0.0859375,"right":0.623046875,"top":0.7890625},"atlasBounds":{"left":479.5,"bottom":419.5,"right":521.5,"top":475.5}},{"unicode":105,"advance":0.23974609375,"planeBounds":{"left":-0.0361328125,"bottom":-0.0859375,"right":0.2763671875,"top":0.8203125},"atlasBounds":{"left":602.5,"bottom":126.5,"right":622.5,"top":184.5}},{"unicode":106,"advance":0.23974609375,"planeBounds":{"left":-0.11474609375,"bottom":-0.2734375,"right":0.27587890625,"top":0.8203125},"atlasBounds":{"left":602.5,"bottom":455.5,"right":627.5,"top":525.5}},{"unicode":107,"advance":0.5380859375,"planeBounds":{"left":-0.031494140625,"bottom":-0.0859375,"right":0.624755859375,"top":0.7890625},"atlasBounds":{"left":435.5,"bottom":60.5,"right":477.5,"top":116.5}},{"unicode":108,"advance":0.2421875,"planeBounds":{"left":-0.03515625,"bottom":-0.0859375,"right":0.27734375,"top":0.7890625},"atlasBounds":{"left":602.5,"bottom":242.5,"right":622.5,"top":298.5}},{"unicode":109,"advance":0.86328125,"planeBounds":{"left":-0.035888671875,"bottom":-0.0859375,"right":0.901611328125,"top":0.6171875},"atlasBounds":{"left":0.5,"bottom":37.5,"right":60.5,"top":82.5}},{"unicode":110,"advance":0.576171875,"planeBounds":{"left":-0.038818359375,"bottom":-0.0859375,"right":0.617431640625,"top":0.6171875},"atlasBounds":{"left":435.5,"bottom":223.5,"right":477.5,"top":268.5}},{"unicode":111,"advance":0.57275390625,"planeBounds":{"left":-0.05712890625,"bottom":-0.1015625,"right":0.63037109375,"top":0.6171875},"atlasBounds":{"left":343.5,"bottom":53.5,"right":387.5,"top":99.5}},{"unicode":112,"advance":0.59326171875,"planeBounds":{"left":-0.037353515625,"bottom":-0.2578125,"right":0.650146484375,"top":0.6171875},"atlasBounds":{"left":390.5,"bottom":210.5,"right":434.5,"top":266.5}},{"unicode":113,"advance":0.59326171875,"planeBounds":{"left":-0.056640625,"bottom":-0.2578125,"right":0.630859375,"top":0.6171875},"atlasBounds":{"left":390.5,"bottom":326.5,"right":434.5,"top":382.5}},{"unicode":114,"advance":0.36376953125,"planeBounds":{"left":-0.03515625,"bottom":-0.0859375,"right":0.43359375,"top":0.6171875},"atlasBounds":{"left":563.5,"bottom":69.5,"right":593.5,"top":114.5}},{"unicode":115,"advance":0.51513671875,"planeBounds":{"left":-0.054931640625,"bottom":-0.1015625,"right":0.570068359375,"top":0.6171875},"atlasBounds":{"left":522.5,"bottom":283.5,"right":562.5,"top":329.5}},{"unicode":116,"advance":0.35546875,"planeBounds":{"left":-0.074951171875,"bottom":-0.0859375,"right":0.409423828125,"top":0.7265625},"atlasBounds":{"left":563.5,"bottom":115.5,"right":594.5,"top":167.5}},{"unicode":117,"advance":0.576171875,"planeBounds":{"left":-0.041259765625,"bottom":-0.1015625,"right":0.614990234375,"top":0.6015625},"atlasBounds":{"left":435.5,"bottom":269.5,"right":477.5,"top":314.5}},{"unicode":118,"advance":0.52783203125,"planeBounds":{"left":-0.079833984375,"bottom":-0.0859375,"right":0.607666015625,"top":0.6015625},"atlasBounds":{"left":390.5,"bottom":615.5,"right":434.5,"top":659.5}},{"unicode":119,"advance":0.7900390625,"planeBounds":{"left":-0.07373046875,"bottom":-0.0859375,"right":0.86376953125,"top":0.6015625},"atlasBounds":{"left":75.5,"bottom":615.5,"right":135.5,"top":659.5}},{"unicode":120,"advance":0.52783203125,"planeBounds":{"left":-0.07177734375,"bottom":-0.0859375,"right":0.60009765625,"top":0.6015625},"atlasBounds":{"left":435.5,"bottom":421.5,"right":478.5,"top":465.5}},{"unicode":121,"advance":0.54296875,"planeBounds":{"left":-0.080078125,"bottom":-0.2734375,"right":0.623046875,"top":0.6015625},"atlasBounds":{"left":343.5,"bottom":261.5,"right":388.5,"top":317.5}},{"unicode":122,"advance":0.50537109375,"planeBounds":{"left":-0.044189453125,"bottom":-0.0859375,"right":0.549560546875,"top":0.6015625},"atlasBounds":{"left":563.5,"bottom":615.5,"right":601.5,"top":659.5}},{"unicode":123,"advance":0.3818359375,"planeBounds":{"left":-0.06689453125,"bottom":-0.2421875,"right":0.44873046875,"top":0.7890625},"atlasBounds":{"left":563.5,"bottom":302.5,"right":596.5,"top":368.5}},{"unicode":124,"advance":0.3818359375,"planeBounds":{"left":0.042724609375,"bottom":-0.2421875,"right":0.339599609375,"top":0.7890625},"atlasBounds":{"left":602.5,"bottom":59.5,"right":621.5,"top":125.5}},{"unicode":125,"advance":0.3818359375,"planeBounds":{"left":-0.06689453125,"bottom":-0.2421875,"right":0.44873046875,"top":0.7890625},"atlasBounds":{"left":563.5,"bottom":369.5,"right":596.5,"top":435.5}},{"unicode":126,"advance":0.6474609375,"planeBounds":{"left":-0.020018114634480486,"bottom":0.1484375,"right":0.66748188536551956,"top":0.5546875},"atlasBounds":{"left":244.5,"bottom":15.5,"right":288.5,"top":41.5}},{"unicode":1025,"advance":0.58349609375,"planeBounds":{"left":-0.015625,"bottom":-0.0859375,"right":0.609375,"top":0.9765625},"atlasBounds":{"left":522.5,"bottom":119.5,"right":562.5,"top":187.5}},{"unicode":1040,"advance":0.69970703125,"planeBounds":{"left":-0.06396484375,"bottom":-0.0859375,"right":0.76416015625,"top":0.7890625},"atlasBounds":{"left":136.5,"bottom":366.5,"right":189.5,"top":422.5}},{"unicode":1041,"advance":0.63818359375,"planeBounds":{"left":-0.021484375,"bottom":-0.0859375,"right":0.681640625,"top":0.7890625},"atlasBounds":{"left":343.5,"bottom":318.5,"right":388.5,"top":374.5}},{"unicode":1042,"advance":0.6494140625,"planeBounds":{"left":-0.01806640625,"bottom":-0.0859375,"right":0.70068359375,"top":0.7890625},"atlasBounds":{"left":295.5,"bottom":128.5,"right":341.5,"top":184.5}},{"unicode":1043,"advance":0.54833984375,"planeBounds":{"left":-0.02197265625,"bottom":-0.0859375,"right":0.60302734375,"top":0.7890625},"atlasBounds":{"left":522.5,"bottom":330.5,"right":562.5,"top":386.5}},{"unicode":1044,"advance":0.76220703125,"planeBounds":{"left":-0.06787109375,"bottom":-0.2265625,"right":0.82275390625,"top":0.7890625},"atlasBounds":{"left":75.5,"bottom":378.5,"right":132.5,"top":443.5}},{"unicode":1045,"advance":0.58349609375,"planeBounds":{"left":-0.015625,"bottom":-0.0859375,"right":0.609375,"top":0.7890625},"atlasBounds":{"left":522.5,"bottom":387.5,"right":562.5,"top":443.5}},{"unicode":1046,"advance":1.0078125,"planeBounds":{"left":-0.073974609375,"bottom":-0.0859375,"right":1.082275390625,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":603.5,"right":74.5,"top":659.5}},{"unicode":1047,"advance":0.6279296875,"planeBounds":{"left":-0.04541015625,"bottom":-0.1015625,"right":0.67333984375,"top":0.8046875},"atlasBounds":{"left":343.5,"bottom":544.5,"right":389.5,"top":602.5}},{"unicode":1048,"advance":0.74169921875,"planeBounds":{"left":-0.019775390625,"bottom":-0.0859375,"right":0.761474609375,"top":0.7890625},"atlasBounds":{"left":191.5,"bottom":160.5,"right":241.5,"top":216.5}},{"unicode":1049,"advance":0.74169921875,"planeBounds":{"left":-0.019775390625,"bottom":-0.0859375,"right":0.761474609375,"top":0.9765625},"atlasBounds":{"left":191.5,"bottom":34.5,"right":241.5,"top":102.5}},{"unicode":1050,"advance":0.673828125,"planeBounds":{"left":-0.018798828125,"bottom":-0.0859375,"right":0.746826171875,"top":0.7890625},"atlasBounds":{"left":244.5,"bottom":318.5,"right":293.5,"top":374.5}},{"unicode":1051,"advance":0.71728515625,"planeBounds":{"left":-0.060546875,"bottom":-0.0859375,"right":0.736328125,"top":0.7890625},"atlasBounds":{"left":191.5,"bottom":328.5,"right":242.5,"top":384.5}},{"unicode":1052,"advance":0.873046875,"planeBounds":{"left":-0.0166015625,"bottom":-0.0859375,"right":0.8896484375,"top":0.7890625},"atlasBounds":{"left":75.5,"bottom":444.5,"right":133.5,"top":500.5}},{"unicode":1053,"advance":0.7392578125,"planeBounds":{"left":-0.02099609375,"bottom":-0.0859375,"right":0.76025390625,"top":0.7890625},"atlasBounds":{"left":244.5,"bottom":603.5,"right":294.5,"top":659.5}},{"unicode":1054,"advance":0.76220703125,"planeBounds":{"left":-0.04052734375,"bottom":-0.1015625,"right":0.80322265625,"top":0.8046875},"atlasBounds":{"left":136.5,"bottom":480.5,"right":190.5,"top":538.5}},{"unicode":1055,"advance":0.73193359375,"planeBounds":{"left":-0.016845703125,"bottom":-0.0859375,"right":0.748779296875,"top":0.7890625},"atlasBounds":{"left":244.5,"bottom":432.5,"right":293.5,"top":488.5}},{"unicode":1056,"advance":0.63232421875,"planeBounds":{"left":-0.014892578125,"bottom":-0.0859375,"right":0.672607421875,"top":0.7890625},"atlasBounds":{"left":390.5,"bottom":153.5,"right":434.5,"top":209.5}},{"unicode":1057,"advance":0.72119140625,"planeBounds":{"left":-0.04345703125,"bottom":-0.1015625,"right":0.76904296875,"top":0.8046875},"atlasBounds":{"left":136.5,"bottom":75.5,"right":188.5,"top":133.5}},{"unicode":1058,"advance":0.611328125,"planeBounds":{"left":-0.053466796875,"bottom":-0.0859375,"right":0.665283203125,"top":0.7890625},"atlasBounds":{"left":295.5,"bottom":14.5,"right":341.5,"top":70.5}},{"unicode":1059,"advance":0.65234375,"planeBounds":{"left":-0.063232421875,"bottom":-0.0859375,"right":0.718017578125,"top":0.7890625},"atlasBounds":{"left":191.5,"bottom":103.5,"right":241.5,"top":159.5}},{"unicode":1060,"advance":0.8623046875,"planeBounds":{"left":-0.04541015625,"bottom":-0.1015625,"right":0.90771484375,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":196.5,"right":61.5,"top":254.5}},{"unicode":1061,"advance":0.6953125,"planeBounds":{"left":-0.05859375,"bottom":-0.0859375,"right":0.75390625,"top":0.7890625},"atlasBounds":{"left":191.5,"bottom":544.5,"right":243.5,"top":600.5}},{"unicode":1062,"advance":0.77587890625,"planeBounds":{"left":-0.019775390625,"bottom":-0.2265625,"right":0.839599609375,"top":0.7890625},"atlasBounds":{"left":75.5,"bottom":153.5,"right":130.5,"top":218.5}},{"unicode":1063,"advance":0.70166015625,"planeBounds":{"left":-0.029541015625,"bottom":-0.0859375,"right":0.720458984375,"top":0.7890625},"atlasBounds":{"left":244.5,"bottom":101.5,"right":292.5,"top":157.5}},{"unicode":1064,"advance":0.9697265625,"planeBounds":{"left":-0.01513671875,"bottom":-0.0859375,"right":0.98486328125,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":364.5,"right":64.5,"top":420.5}},{"unicode":1065,"advance":1.013671875,"planeBounds":{"left":-0.01806640625,"bottom":-0.2265625,"right":1.07568359375,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":480.5,"right":70.5,"top":545.5}},{"unicode":1066,"advance":0.76025390625,"planeBounds":{"left":-0.052001953125,"bottom":-0.0859375,"right":0.807373046875,"top":0.7890625},"atlasBounds":{"left":75.5,"bottom":96.5,"right":130.5,"top":152.5}},{"unicode":1067,"advance":0.88720703125,"planeBounds":{"left":-0.017333984375,"bottom":-0.0859375,"right":0.904541015625,"top":0.7890625},"atlasBounds":{"left":75.5,"bottom":558.5,"right":134.5,"top":614.5}},{"unicode":1068,"advance":0.6318359375,"planeBounds":{"left":-0.020263671875,"bottom":-0.0859375,"right":0.682861328125,"top":0.7890625},"atlasBounds":{"left":343.5,"bottom":433.5,"right":388.5,"top":489.5}},{"unicode":1069,"advance":0.72119140625,"planeBounds":{"left":-0.0478515625,"bottom":-0.1015625,"right":0.7646484375,"top":0.8046875},"atlasBounds":{"left":191.5,"bottom":601.5,"right":243.5,"top":659.5}},{"unicode":1070,"advance":1.02001953125,"planeBounds":{"left":-0.01806640625,"bottom":-0.1015625,"right":1.06005859375,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":421.5,"right":69.5,"top":479.5}},{"unicode":1071,"advance":0.66845703125,"planeBounds":{"left":-0.05126953125,"bottom":-0.0859375,"right":0.68310546875,"top":0.7890625},"atlasBounds":{"left":295.5,"bottom":310.5,"right":342.5,"top":366.5}},{"unicode":1072,"advance":0.556640625,"planeBounds":{"left":-0.05126953125,"bottom":-0.1015625,"right":0.58935546875,"top":0.6171875},"atlasBounds":{"left":479.5,"bottom":237.5,"right":520.5,"top":283.5}},{"unicode":1073,"advance":0.5908203125,"planeBounds":{"left":-0.046875,"bottom":-0.1015625,"right":0.640625,"top":0.8203125},"atlasBounds":{"left":390.5,"bottom":497.5,"right":434.5,"top":556.5}},{"unicode":1074,"advance":0.54541015625,"planeBounds":{"left":-0.03125,"bottom":-0.0859375,"right":0.59375,"top":0.6015625},"atlasBounds":{"left":522.5,"bottom":444.5,"right":562.5,"top":488.5}},{"unicode":1075,"advance":0.44677734375,"planeBounds":{"left":-0.031982421875,"bottom":-0.0859375,"right":0.499267578125,"top":0.6015625},"atlasBounds":{"left":563.5,"bottom":436.5,"right":597.5,"top":480.5}},{"unicode":1076,"advance":0.6337890625,"planeBounds":{"left":-0.0751953125,"bottom":-0.2265625,"right":0.7060546875,"top":0.6015625},"atlasBounds":{"left":191.5,"bottom":274.5,"right":241.5,"top":327.5}},{"unicode":1077,"advance":0.564453125,"planeBounds":{"left":-0.05322265625,"bottom":-0.1015625,"right":0.61865234375,"top":0.6171875},"atlasBounds":{"left":435.5,"bottom":511.5,"right":478.5,"top":557.5}},{"unicode":1078,"advance":0.8154296875,"planeBounds":{"left":-0.07666015625,"bottom":-0.0859375,"right":0.89208984375,"top":0.6015625},"atlasBounds":{"left":0.5,"bottom":255.5,"right":62.5,"top":299.5}},{"unicode":1079,"advance":0.52783203125,"planeBounds":{"left":-0.051513671875,"bottom":-0.1015625,"right":0.573486328125,"top":0.6171875},"atlasBounds":{"left":479.5,"bottom":27.5,"right":519.5,"top":73.5}},{"unicode":1080,"advance":0.59326171875,"planeBounds":{"left":-0.03125,"bottom":-0.0859375,"right":0.625,"top":0.6015625},"atlasBounds":{"left":479.5,"bottom":615.5,"right":521.5,"top":659.5}},{"unicode":1081,"advance":0.59326171875,"planeBounds":{"left":-0.03125,"bottom":-0.0859375,"right":0.625,"top":0.8515625},"atlasBounds":{"left":435.5,"bottom":162.5,"right":477.5,"top":222.5}},{"unicode":1082,"advance":0.5517578125,"planeBounds":{"left":-0.029296875,"bottom":-0.0859375,"right":0.626953125,"top":0.6015625},"atlasBounds":{"left":479.5,"bottom":570.5,"right":521.5,"top":614.5}},{"unicode":1083,"advance":0.57861328125,"planeBounds":{"left":-0.064453125,"bottom":-0.0859375,"right":0.607421875,"top":0.6015625},"atlasBounds":{"left":435.5,"bottom":466.5,"right":478.5,"top":510.5}},{"unicode":1084,"advance":0.74658203125,"planeBounds":{"left":-0.032958984375,"bottom":-0.0859375,"right":0.779541015625,"top":0.6015625},"atlasBounds":{"left":136.5,"bottom":30.5,"right":188.5,"top":74.5}},{"unicode":1085,"advance":0.587890625,"planeBounds":{"left":-0.0341796875,"bottom":-0.0859375,"right":0.6220703125,"top":0.6015625},"atlasBounds":{"left":435.5,"bottom":117.5,"right":477.5,"top":161.5}},{"unicode":1086,"advance":0.58203125,"planeBounds":{"left":-0.05224609375,"bottom":-0.1015625,"right":0.63525390625,"top":0.6171875},"atlasBounds":{"left":343.5,"bottom":100.5,"right":387.5,"top":146.5}},{"unicode":1087,"advance":0.5830078125,"planeBounds":{"left":-0.02880859375,"bottom":-0.0859375,"right":0.61181640625,"top":0.6015625},"atlasBounds":{"left":479.5,"bottom":374.5,"right":520.5,"top":418.5}},{"unicode":1088,"advance":0.60400390625,"planeBounds":{"left":-0.032470703125,"bottom":-0.2578125,"right":0.655029296875,"top":0.6171875},"atlasBounds":{"left":390.5,"bottom":440.5,"right":434.5,"top":496.5}},{"unicode":1089,"advance":0.55029296875,"planeBounds":{"left":-0.05078125,"bottom":-0.1015625,"right":0.60546875,"top":0.6171875},"atlasBounds":{"left":479.5,"bottom":476.5,"right":521.5,"top":522.5}},{"unicode":1090,"advance":0.4970703125,"planeBounds":{"left":-0.06396484375,"bottom":-0.0859375,"right":0.56103515625,"top":0.6015625},"atlasBounds":{"left":522.5,"bottom":238.5,"right":562.5,"top":282.5}},{"unicode":1091,"advance":0.552734375,"planeBounds":{"left":-0.0751953125,"bottom":-0.2734375,"right":0.6279296875,"top":0.6015625},"atlasBounds":{"left":343.5,"bottom":204.5,"right":388.5,"top":260.5}},{"unicode":1092,"advance":0.77001953125,"planeBounds":{"left":-0.052734375,"bottom":-0.2578125,"right":0.822265625,"top":0.7734375},"atlasBounds":{"left":75.5,"bottom":264.5,"right":131.5,"top":330.5}},{"unicode":1093,"advance":0.537109375,"planeBounds":{"left":-0.06689453125,"bottom":-0.0859375,"right":0.60498046875,"top":0.6015625},"atlasBounds":{"left":435.5,"bottom":615.5,"right":478.5,"top":659.5}},{"unicode":1094,"advance":0.62109375,"planeBounds":{"left":-0.029541015625,"bottom":-0.2265625,"right":0.689208984375,"top":0.6015625},"atlasBounds":{"left":343.5,"bottom":490.5,"right":389.5,"top":543.5}},{"unicode":1095,"advance":0.56640625,"planeBounds":{"left":-0.0419921875,"bottom":-0.0859375,"right":0.5986328125,"top":0.6015625},"atlasBounds":{"left":479.5,"bottom":329.5,"right":520.5,"top":373.5}},{"unicode":1096,"advance":0.8203125,"planeBounds":{"left":-0.027099609375,"bottom":-0.0859375,"right":0.847900390625,"top":0.6015625},"atlasBounds":{"left":75.5,"bottom":219.5,"right":131.5,"top":263.5}},{"unicode":1097,"advance":0.857421875,"planeBounds":{"left":-0.028564453125,"bottom":-0.2265625,"right":0.924560546875,"top":0.6015625},"atlasBounds":{"left":0.5,"bottom":142.5,"right":61.5,"top":195.5}},{"unicode":1098,"advance":0.6318359375,"planeBounds":{"left":-0.062255859375,"bottom":-0.0859375,"right":0.687744140625,"top":0.6015625},"atlasBounds":{"left":244.5,"bottom":216.5,"right":292.5,"top":260.5}},{"unicode":1099,"advance":0.7421875,"planeBounds":{"left":-0.027099609375,"bottom":-0.0859375,"right":0.769775390625,"top":0.6015625},"atlasBounds":{"left":191.5,"bottom":442.5,"right":242.5,"top":486.5}},{"unicode":1100,"advance":0.5263671875,"planeBounds":{"left":-0.030029296875,"bottom":-0.0859375,"right":0.579345703125,"top":0.6015625},"atlasBounds":{"left":522.5,"bottom":24.5,"right":561.5,"top":68.5}},{"unicode":1101,"advance":0.55029296875,"planeBounds":{"left":-0.05517578125,"bottom":-0.1015625,"right":0.60107421875,"top":0.6171875},"atlasBounds":{"left":435.5,"bottom":13.5,"right":477.5,"top":59.5}},{"unicode":1102,"advance":0.8115234375,"planeBounds":{"left":-0.02978515625,"bottom":-0.1015625,"right":0.86083984375,"top":0.6171875},"atlasBounds":{"left":75.5,"bottom":331.5,"right":132.5,"top":377.5}},{"unicode":1103,"advance":0.54443359375,"planeBounds":{"left":-0.0625,"bottom":-0.0859375,"right":0.578125,"top":0.6015625},"atlasBounds":{"left":479.5,"bottom":284.5,"right":520.5,"top":328.5}},{"unicode":1105,"advance":0.564453125,"planeBounds":{"left":-0.05322265625,"bottom":-0.1015625,"right":0.61865234375,"top":0.8046875},"atlasBounds":{"left":435.5,"bottom":362.5,"right":478.5,"top":420.5}}],"kerning":[]} diff --git a/src/main/resources/assets/evolution/fonts/msdf/bold.png b/src/main/resources/assets/evolution/fonts/msdf/bold.png new file mode 100644 index 0000000..455d52f Binary files /dev/null and b/src/main/resources/assets/evolution/fonts/msdf/bold.png differ diff --git a/src/main/resources/assets/evolution/fonts/msdf/bold.png.mcmeta b/src/main/resources/assets/evolution/fonts/msdf/bold.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/fonts/msdf/bold.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/fonts/msdf/icons.json b/src/main/resources/assets/evolution/fonts/msdf/icons.json new file mode 100644 index 0000000..f835dd2 --- /dev/null +++ b/src/main/resources/assets/evolution/fonts/msdf/icons.json @@ -0,0 +1,838 @@ +{ + "atlas": { + "type": "mtsdf", + "distanceRange": 10, + "distanceRangeMiddle": 0, + "size": 64, + "width": 436, + "height": 856, + "yOrigin": "bottom" + }, + "metrics": { + "emSize": 1, + "lineHeight": 1.09, + "ascender": 0.8, + "descender": -0.2, + "underlineY": -0.1, + "underlineThickness": 0.05 + }, + "glyphs": [ + { + "unicode": 48, + "advance": 1, + "planeBounds": { + "left": -0.07031250000000003, + "bottom": -0.2734375, + "right": 1.0703125, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 137.5, + "bottom": 286.5, + "right": 210.5, + "top": 359.5 + } + }, + { + "unicode": 49, + "advance": 1, + "planeBounds": { + "left": -0.07027195945945942, + "bottom": -0.2734375, + "right": 1.0703530405405406, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 211.5, + "bottom": 286.5, + "right": 284.5, + "top": 359.5 + } + }, + { + "unicode": 50, + "advance": 1, + "planeBounds": { + "left": 0.07462500000000002, + "bottom": -0.2734375, + "right": 0.918375, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 285.5, + "bottom": 286.5, + "right": 339.5, + "top": 359.5 + } + }, + { + "unicode": 51, + "advance": 1, + "planeBounds": { + "left": -0.07031250000000001, + "bottom": -0.2734375, + "right": 1.0703125, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 340.5, + "bottom": 286.5, + "right": 413.5, + "top": 359.5 + } + }, + { + "unicode": 52, + "advance": 1, + "planeBounds": { + "left": -0.07031250000000001, + "bottom": -0.2734375, + "right": 1.0703125, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 0.5, + "bottom": 210.5, + "right": 73.5, + "top": 283.5 + } + }, + { + "unicode": 53, + "advance": 1, + "planeBounds": { + "left": -0.054687499999999965, + "bottom": -0.2734375, + "right": 0.9296875, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 74.5, + "bottom": 210.5, + "right": 137.5, + "top": 283.5 + } + }, + { + "unicode": 54, + "advance": 1, + "planeBounds": { + "left": -0.05468750000000002, + "bottom": -0.2578125, + "right": 1.0546875, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 294.5, + "bottom": 137.5, + "right": 365.5, + "top": 209.5 + } + }, + { + "unicode": 55, + "advance": 1, + "planeBounds": { + "left": -0.07004249999999997, + "bottom": -0.2578125, + "right": 1.0705825, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 0.5, + "bottom": 63.5, + "right": 73.5, + "top": 135.5 + } + }, + { + "unicode": 56, + "advance": 1, + "planeBounds": { + "left": -0.05471601341807901, + "bottom": -0.2734375, + "right": 1.054658986581921, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 138.5, + "bottom": 210.5, + "right": 209.5, + "top": 283.5 + } + }, + { + "unicode": 57, + "advance": 1, + "planeBounds": { + "left": -0.07031250000000001, + "bottom": -0.2734375, + "right": 1.0703125, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 210.5, + "bottom": 210.5, + "right": 283.5, + "top": 283.5 + } + }, + { + "unicode": 58, + "advance": 1, + "planeBounds": { + "left": -0.07031250000000001, + "bottom": -0.2734375, + "right": 1.0703125, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 358.5, + "bottom": 210.5, + "right": 431.5, + "top": 283.5 + } + }, + { + "unicode": 59, + "advance": 1, + "planeBounds": { + "left": -0.07031250000000001, + "bottom": -0.2734375, + "right": 1.0703125, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 72.5, + "bottom": 136.5, + "right": 145.5, + "top": 209.5 + } + }, + { + "unicode": 65, + "advance": 1, + "planeBounds": { + "left": -0.078125, + "bottom": -0.2890625, + "right": 0.578125, + "top": 0.8828125 + }, + "atlasBounds": { + "left": 0.5, + "bottom": 360.5, + "right": 42.5, + "top": 435.5 + } + }, + { + "unicode": 66, + "advance": 1, + "planeBounds": { + "left": -0.07031250000000001, + "bottom": -0.2734375, + "right": 1.0703125, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 220.5, + "bottom": 136.5, + "right": 293.5, + "top": 209.5 + } + }, + { + "unicode": 67, + "advance": 1, + "planeBounds": { + "left": -0.07031250000000001, + "bottom": -0.2734375, + "right": 1.0703125, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 146.5, + "bottom": 136.5, + "right": 219.5, + "top": 209.5 + } + }, + { + "unicode": 68, + "advance": 1, + "planeBounds": { + "left": -0.07031250000000001, + "bottom": -0.2265625, + "right": 1.0703125, + "top": 0.8203125 + }, + "atlasBounds": { + "left": 286.5, + "bottom": 68.5, + "right": 359.5, + "top": 135.5 + } + }, + { + "unicode": 69, + "advance": 1, + "planeBounds": { + "left": -0.05468750000000002, + "bottom": -0.2734375, + "right": 1.0546875, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 0.5, + "bottom": 136.5, + "right": 71.5, + "top": 209.5 + } + }, + { + "unicode": 70, + "advance": 1, + "planeBounds": { + "left": -0.07031250000000001, + "bottom": -0.2421875, + "right": 1.0703125, + "top": 0.8515625 + }, + "atlasBounds": { + "left": 74.5, + "bottom": 65.5, + "right": 147.5, + "top": 135.5 + } + }, + { + "unicode": 71, + "advance": 1, + "planeBounds": { + "left": -0.078125, + "bottom": -0.2890625, + "right": 1.078125, + "top": 0.8828125 + }, + "atlasBounds": { + "left": 118.5, + "bottom": 360.5, + "right": 192.5, + "top": 435.5 + } + }, + { + "unicode": 72, + "advance": 1, + "planeBounds": { + "left": -0.078125, + "bottom": -0.1796875, + "right": 1.078125, + "top": 0.7890625 + }, + "atlasBounds": { + "left": 0.5, + "bottom": 0.5, + "right": 74.5, + "top": 62.5 + } + }, + { + "unicode": 73, + "advance": 1, + "planeBounds": { + "left": -0.078125, + "bottom": -0.2890625, + "right": 1.078125, + "top": 0.8828125 + }, + "atlasBounds": { + "left": 193.5, + "bottom": 360.5, + "right": 267.5, + "top": 435.5 + } + }, + { + "unicode": 74, + "advance": 1, + "planeBounds": { + "left": -0.078125, + "bottom": -0.2890625, + "right": 1.078125, + "top": 0.8828125 + }, + "atlasBounds": { + "left": 268.5, + "bottom": 360.5, + "right": 342.5, + "top": 435.5 + } + }, + { + "unicode": 75, + "advance": 1, + "planeBounds": { + "left": -0.078125, + "bottom": -0.2890625, + "right": 1.078125, + "top": 0.8828125 + }, + "atlasBounds": { + "left": 343.5, + "bottom": 360.5, + "right": 417.5, + "top": 435.5 + } + }, + { + "unicode": 76, + "advance": 1, + "planeBounds": { + "left": -0.08456249999999998, + "bottom": -0.2421875, + "right": 0.9935625, + "top": 0.8359375 + }, + "atlasBounds": { + "left": 148.5, + "bottom": 66.5, + "right": 217.5, + "top": 135.5 + } + }, + { + "unicode": 77, + "advance": 1, + "planeBounds": { + "left": -0.07890416666666666, + "bottom": -0.2265625, + "right": 0.9679708333333333, + "top": 0.8359375 + }, + "atlasBounds": { + "left": 218.5, + "bottom": 67.5, + "right": 285.5, + "top": 135.5 + } + }, + { + "unicode": 78, + "advance": 1, + "planeBounds": { + "left": -0.023437499999999944, + "bottom": -0.2890625, + "right": 1.0234375, + "top": 0.8828125 + }, + "atlasBounds": { + "left": 0.5, + "bottom": 284.5, + "right": 67.5, + "top": 359.5 + } + }, + { + "unicode": 79, + "advance": 1, + "planeBounds": { + "left": -0.03906250000000004, + "bottom": -0.1484375, + "right": 1.0390625, + "top": 0.8359375 + }, + "atlasBounds": { + "left": 366.5, + "bottom": 146.5, + "right": 435.5, + "top": 209.5 + } + }, + { + "unicode": 80, + "advance": 1.07, + "planeBounds": { + "left": -0.011250000000000043, + "bottom": -0.2890625, + "right": 1.05125, + "top": 0.8828125 + }, + "atlasBounds": { + "left": 68.5, + "bottom": 284.5, + "right": 136.5, + "top": 359.5 + } + }, + { + "unicode": 81, + "advance": 1, + "planeBounds": { + "left": -0.04687500000000003, + "bottom": 0.1796875, + "right": 1.046875, + "top": 0.8203125 + }, + "atlasBounds": { + "left": 207.5, + "bottom": 21.5, + "right": 277.5, + "top": 62.5 + } + }, + { + "unicode": 82, + "advance": 1, + "planeBounds": { + "left": -0.04687500000000003, + "bottom": 0.1796875, + "right": 1.046875, + "top": 0.8203125 + }, + "atlasBounds": { + "left": 136.5, + "bottom": 21.5, + "right": 206.5, + "top": 62.5 + } + }, + { + "unicode": 83, + "advance": 1, + "planeBounds": { + "left": 0.05175000000000001, + "bottom": -0.1015625, + "right": 0.9892500000000001, + "top": 0.6640625 + }, + "atlasBounds": { + "left": 75.5, + "bottom": 13.5, + "right": 135.5, + "top": 62.5 + } + }, + { + "unicode": 84, + "advance": 1, + "planeBounds": { + "left": -0.07031250000000001, + "bottom": -0.2734375, + "right": 1.0703125, + "top": 0.8671875 + }, + "atlasBounds": { + "left": 284.5, + "bottom": 210.5, + "right": 357.5, + "top": 283.5 + } + }, + { + "unicode": 86, + "advance": 1, + "planeBounds": { + "left": -0.006312500000000009, + "bottom": -0.2109375, + "right": 1.0093125, + "top": 0.8203125 + }, + "atlasBounds": { + "left": 360.5, + "bottom": 69.5, + "right": 425.5, + "top": 135.5 + } + }, + { + "unicode": 87, + "advance": 1, + "planeBounds": { + "left": -0.078125, + "bottom": -0.2890625, + "right": 1.078125, + "top": 0.8828125 + }, + "atlasBounds": { + "left": 43.5, + "bottom": 360.5, + "right": 117.5, + "top": 435.5 + } + }, + { + "unicode": 110, + "advance": 1.0, + "planeBounds": { + "left": 9.969349608878956e-18, + "bottom": -0.30819515306122447, + "right": 1.1224489795918366, + "top": 0.9019451530612245 + }, + "atlasBounds": { + "left": 0.5, + "bottom": 578.5, + "right": 64.5, + "top": 647.5 + } + }, + { + "unicode": 111, + "advance": 1.0, + "planeBounds": { + "left": 0.05276335534213685, + "bottom": -0.30819515306122447, + "right": 1.0699827430972388, + "top": 0.9019451530612245 + }, + "atlasBounds": { + "left": 0.5, + "bottom": 508.5, + "right": 58.5, + "top": 577.5 + } + }, + { + "unicode": 120, + "advance": 1.0, + "planeBounds": { + "left": 0.05239325993555306, + "bottom": -0.30819515306122447, + "right": 1.0696126476906551, + "top": 0.9019451530612245 + }, + "atlasBounds": { + "left": 59.5, + "bottom": 508.5, + "right": 117.5, + "top": 577.5 + } + }, + { + "unicode": 98, + "advance": 1.0, + "planeBounds": { + "left": 4.1871268357291615e-17, + "bottom": -0.30819515306122447, + "right": 1.1224489795918366, + "top": 0.9019451530612245 + }, + "atlasBounds": { + "left": 118.5, + "bottom": 508.5, + "right": 182.5, + "top": 577.5 + } + }, + { + "unicode": 112, + "advance": 1.0, + "planeBounds": { + "left": -0.04384566326530616, + "bottom": -0.2205038265306122, + "right": 1.1662946428571428, + "top": 0.7616390306122448 + }, + "atlasBounds": { + "left": 70.5, + "bottom": 451.5, + "right": 139.5, + "top": 507.5 + } + }, + { + "unicode": 102, + "advance": 1.0, + "planeBounds": { + "left": -0.04439566326530615, + "bottom": -0.16788903061224486, + "right": 1.165744642857143, + "top": 0.8142538265306122 + }, + "atlasBounds": { + "left": 140.5, + "bottom": 451.5, + "right": 209.5, + "top": 507.5 + } + }, + { + "unicode": 107, + "advance": 1.0, + "planeBounds": { + "left": -0.04384566326530616, + "bottom": -0.2205038265306122, + "right": 1.1662946428571428, + "top": 0.8142538265306122 + }, + "atlasBounds": { + "left": 0.5, + "bottom": 448.5, + "right": 69.5, + "top": 507.5 + } + }, + { + "unicode": 116, + "advance": 1.0, + "planeBounds": { + "left": 0.09612372448979593, + "bottom": -0.30819515306122447, + "right": 1.0256517857142857, + "top": 0.9019451530612245 + }, + "atlasBounds": { + "left": 135.5, + "bottom": 578.5, + "right": 188.5, + "top": 647.5 + } + }, + { + "unicode": 117, + "advance": 1.0, + "planeBounds": { + "left": -0.043615417320774515, + "bottom": -0.30819515306122447, + "right": 1.1665248888016746, + "top": 0.9019451530612245 + }, + "atlasBounds": { + "left": 65.5, + "bottom": 578.5, + "right": 134.5, + "top": 647.5 + } + }, + { + "unicode": 114, + "advance": 1.0, + "planeBounds": { + "left": -0.04384566326530616, + "bottom": -0.16788903061224486, + "right": 1.1662946428571428, + "top": 0.7616390306122448 + }, + "atlasBounds": { + "left": 0.5, + "bottom": 802.5, + "right": 69.5, + "top": 855.5 + } + }, + { + "unicode": 97, + "advance": 1.0, + "planeBounds": { + "left": -0.04372954785362413, + "bottom": -0.30819515306122447, + "right": 1.1664107582688248, + "top": 0.9019451530612245 + }, + "atlasBounds": { + "left": 0.5, + "bottom": 732.5, + "right": 69.5, + "top": 801.5 + } + }, + { + "unicode": 109, + "advance": 1.0, + "planeBounds": { + "left": -0.04415745464852616, + "bottom": -0.2205038265306122, + "right": 1.1659828514739228, + "top": 0.8142538265306122 + }, + "atlasBounds": { + "left": 0.5, + "bottom": 672.5, + "right": 69.5, + "top": 731.5 + } + }, + { + "unicode": 119, + "advance": 1.0, + "planeBounds": { + "left": -0.035076530612244826, + "bottom": -0.30819515306122447, + "right": 1.1575255102040816, + "top": 0.9019451530612245 + }, + "atlasBounds": { + "left": 70.5, + "bottom": 716.5, + "right": 138.5, + "top": 785.5 + } + }, + { + "unicode": 100, + "advance": 1.0, + "planeBounds": { + "left": -0.04384566326530616, + "bottom": -0.30819515306122447, + "right": 1.1662946428571428, + "top": 0.9019451530612245 + }, + "atlasBounds": { + "left": 70.5, + "bottom": 786.5, + "right": 139.5, + "top": 855.5 + } + }, + { + "unicode": 103, + "advance": 1.0, + "planeBounds": { + "left": 1.3957089452430537e-17, + "bottom": -0.27311862244897955, + "right": 1.1224489795918366, + "top": 0.8668686224489796 + }, + "atlasBounds": { + "left": 140.5, + "bottom": 790.5, + "right": 204.5, + "top": 855.5 + } + }, + { + "unicode": 99, + "advance": 1.0, + "planeBounds": { + "left": -4.5859008200843196e-17, + "bottom": -0.27311862244897955, + "right": 1.1224489795918366, + "top": 0.8668686224489796 + }, + "atlasBounds": { + "left": 140.5, + "bottom": 724.5, + "right": 204.5, + "top": 789.5 + } + }, + { + "unicode": 115, + "advance": 1.0, + "planeBounds": { + "left": 4.1871268357291615e-17, + "bottom": -0.27311862244897955, + "right": 1.1224489795918366, + "top": 0.884406887755102 + }, + "atlasBounds": { + "left": 70.5, + "bottom": 649.5, + "right": 134.5, + "top": 715.5 + } + } + ], + "kerning": [] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/fonts/msdf/icons.png b/src/main/resources/assets/evolution/fonts/msdf/icons.png new file mode 100644 index 0000000..31c2506 Binary files /dev/null and b/src/main/resources/assets/evolution/fonts/msdf/icons.png differ diff --git a/src/main/resources/assets/evolution/fonts/msdf/icons.png.mcmeta b/src/main/resources/assets/evolution/fonts/msdf/icons.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/fonts/msdf/icons.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/fonts/msdf/medium.json b/src/main/resources/assets/evolution/fonts/msdf/medium.json new file mode 100644 index 0000000..8f7aa37 --- /dev/null +++ b/src/main/resources/assets/evolution/fonts/msdf/medium.json @@ -0,0 +1 @@ +{"atlas":{"type":"mtsdf","distanceRange":10,"distanceRangeMiddle":0,"size":64,"width":676,"height":676,"yOrigin":"bottom"},"metrics":{"emSize":1,"lineHeight":1.193359375,"ascender":0.9521484375,"descender":-0.2412109375,"underlineY":-0.18115234375,"underlineThickness":0.07080078125},"glyphs":[{"unicode":32,"advance":0.20263671875},{"unicode":33,"advance":0.28466796875,"planeBounds":{"left":-0.006103515625,"bottom":-0.0859375,"right":0.290771484375,"top":0.7890625},"atlasBounds":{"left":653.5,"bottom":496.5,"right":672.5,"top":552.5}},{"unicode":34,"advance":0.41552734375,"planeBounds":{"left":-0.01904296875,"bottom":0.3671875,"right":0.43408203125,"top":0.7890625},"atlasBounds":{"left":284.5,"bottom":0.5,"right":313.5,"top":27.5}},{"unicode":35,"advance":0.61376953125,"planeBounds":{"left":-0.083740234375,"bottom":-0.0859375,"right":0.697509765625,"top":0.7890625},"atlasBounds":{"left":130.5,"bottom":192.5,"right":180.5,"top":248.5}},{"unicode":36,"advance":0.6201171875,"planeBounds":{"left":-0.03369140625,"bottom":-0.1484375,"right":0.65380859375,"top":0.8671875},"atlasBounds":{"left":284.5,"bottom":28.5,"right":328.5,"top":93.5}},{"unicode":37,"advance":0.76171875,"planeBounds":{"left":-0.056640625,"bottom":-0.1015625,"right":0.818359375,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":54.5,"right":56.5,"top":112.5}},{"unicode":38,"advance":0.6806640625,"planeBounds":{"left":-0.042724609375,"bottom":-0.1015625,"right":0.769775390625,"top":0.8046875},"atlasBounds":{"left":130.5,"bottom":560.5,"right":182.5,"top":618.5}},{"unicode":39,"advance":0.21630859375,"planeBounds":{"left":-0.024658203125,"bottom":0.3671875,"right":0.240966796875,"top":0.7890625},"atlasBounds":{"left":503.5,"bottom":2.5,"right":520.5,"top":29.5}},{"unicode":40,"advance":0.34375,"planeBounds":{"left":0.012939453125,"bottom":-0.2421875,"right":0.403564453125,"top":0.7890625},"atlasBounds":{"left":572.5,"bottom":609.5,"right":597.5,"top":675.5}},{"unicode":41,"advance":0.34375,"planeBounds":{"left":-0.059814453125,"bottom":-0.2421875,"right":0.330810546875,"top":0.7890625},"atlasBounds":{"left":598.5,"bottom":609.5,"right":623.5,"top":675.5}},{"unicode":42,"advance":0.4833984375,"planeBounds":{"left":-0.02294921875,"bottom":0.2734375,"right":0.50830078125,"top":0.8203125},"atlasBounds":{"left":582.5,"bottom":214.5,"right":616.5,"top":249.5}},{"unicode":43,"advance":0.6201171875,"planeBounds":{"left":-0.02587890625,"bottom":-0.0703125,"right":0.64599609375,"top":0.6328125},"atlasBounds":{"left":330.5,"bottom":215.5,"right":373.5,"top":260.5}},{"unicode":44,"advance":0.2626953125,"planeBounds":{"left":-0.0380859375,"bottom":-0.2265625,"right":0.2744140625,"top":0.1953125},"atlasBounds":{"left":521.5,"bottom":2.5,"right":541.5,"top":29.5}},{"unicode":45,"advance":0.43359375,"planeBounds":{"left":-0.025390625,"bottom":0.1484375,"right":0.458984375,"top":0.4140625},"atlasBounds":{"left":130.5,"bottom":1.5,"right":161.5,"top":18.5}},{"unicode":46,"advance":0.2626953125,"planeBounds":{"left":-0.01708984375,"bottom":-0.0859375,"right":0.27978515625,"top":0.2109375},"atlasBounds":{"left":204.5,"bottom":1.5,"right":223.5,"top":20.5}},{"unicode":47,"advance":0.34375,"planeBounds":{"left":-0.078125,"bottom":-0.2421875,"right":0.421875,"top":0.7890625},"atlasBounds":{"left":624.5,"bottom":609.5,"right":656.5,"top":675.5}},{"unicode":48,"advance":0.62255859375,"planeBounds":{"left":-0.04052734375,"bottom":-0.1015625,"right":0.66259765625,"top":0.8046875},"atlasBounds":{"left":284.5,"bottom":501.5,"right":329.5,"top":559.5}},{"unicode":49,"advance":0.45654296875,"planeBounds":{"left":-0.033447265625,"bottom":-0.0859375,"right":0.419677734375,"top":0.7890625},"atlasBounds":{"left":621.5,"bottom":414.5,"right":650.5,"top":470.5}},{"unicode":50,"advance":0.5791015625,"planeBounds":{"left":-0.035400390625,"bottom":-0.0859375,"right":0.620849609375,"top":0.8046875},"atlasBounds":{"left":375.5,"bottom":384.5,"right":417.5,"top":441.5}},{"unicode":51,"advance":0.60546875,"planeBounds":{"left":-0.035888671875,"bottom":-0.1015625,"right":0.635986328125,"top":0.8046875},"atlasBounds":{"left":330.5,"bottom":156.5,"right":373.5,"top":214.5}},{"unicode":52,"advance":0.62060546875,"planeBounds":{"left":-0.045166015625,"bottom":-0.0859375,"right":0.673583984375,"top":0.7890625},"atlasBounds":{"left":235.5,"bottom":208.5,"right":281.5,"top":264.5}},{"unicode":53,"advance":0.599609375,"planeBounds":{"left":-0.024658203125,"bottom":-0.1015625,"right":0.647216796875,"top":0.7890625},"atlasBounds":{"left":330.5,"bottom":98.5,"right":373.5,"top":155.5}},{"unicode":54,"advance":0.61474609375,"planeBounds":{"left":-0.04150390625,"bottom":-0.1015625,"right":0.66162109375,"top":0.8046875},"atlasBounds":{"left":284.5,"bottom":442.5,"right":329.5,"top":500.5}},{"unicode":55,"advance":0.55615234375,"planeBounds":{"left":-0.04541015625,"bottom":-0.0859375,"right":0.59521484375,"top":0.7890625},"atlasBounds":{"left":418.5,"bottom":401.5,"right":459.5,"top":457.5}},{"unicode":56,"advance":0.6181640625,"planeBounds":{"left":-0.04248046875,"bottom":-0.1015625,"right":0.66064453125,"top":0.8046875},"atlasBounds":{"left":284.5,"bottom":383.5,"right":329.5,"top":441.5}},{"unicode":57,"advance":0.615234375,"planeBounds":{"left":-0.046630859375,"bottom":-0.1015625,"right":0.656494140625,"top":0.8046875},"atlasBounds":{"left":284.5,"bottom":324.5,"right":329.5,"top":382.5}},{"unicode":58,"advance":0.2626953125,"planeBounds":{"left":-0.01708984375,"bottom":-0.0859375,"right":0.27978515625,"top":0.5703125},"atlasBounds":{"left":184.5,"bottom":0.5,"right":203.5,"top":42.5}},{"unicode":59,"advance":0.2626953125,"planeBounds":{"left":-0.03759765625,"bottom":-0.2265625,"right":0.27490234375,"top":0.5703125},"atlasBounds":{"left":653.5,"bottom":553.5,"right":673.5,"top":604.5}},{"unicode":60,"advance":0.6201171875,"planeBounds":{"left":0.00537109375,"bottom":-0.0859375,"right":0.61474609375,"top":0.6640625},"atlasBounds":{"left":235.5,"bottom":0.5,"right":274.5,"top":48.5}},{"unicode":61,"advance":0.6201171875,"planeBounds":{"left":-0.01806640625,"bottom":0.0546875,"right":0.63818359375,"top":0.5078125},"atlasBounds":{"left":73.5,"bottom":0.5,"right":115.5,"top":29.5}},{"unicode":62,"advance":0.6201171875,"planeBounds":{"left":0.00537109375,"bottom":-0.0859375,"right":0.61474609375,"top":0.6640625},"atlasBounds":{"left":503.5,"bottom":452.5,"right":542.5,"top":500.5}},{"unicode":63,"advance":0.50537109375,"planeBounds":{"left":-0.05126953125,"bottom":-0.0859375,"right":0.54248046875,"top":0.7890625},"atlasBounds":{"left":543.5,"bottom":87.5,"right":581.5,"top":143.5}},{"unicode":64,"advance":0.8779296875,"planeBounds":{"left":-0.0400390625,"bottom":-0.1953125,"right":0.9287109375,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":373.5,"right":62.5,"top":436.5}},{"unicode":65,"advance":0.65234375,"planeBounds":{"left":-0.072265625,"bottom":-0.0859375,"right":0.724609375,"top":0.7890625},"atlasBounds":{"left":130.5,"bottom":436.5,"right":181.5,"top":492.5}},{"unicode":66,"advance":0.6171875,"planeBounds":{"left":-0.017333984375,"bottom":-0.0859375,"right":0.670166015625,"top":0.7890625},"atlasBounds":{"left":330.5,"bottom":489.5,"right":374.5,"top":545.5}},{"unicode":67,"advance":0.6953125,"planeBounds":{"left":-0.0400390625,"bottom":-0.1015625,"right":0.7412109375,"top":0.8046875},"atlasBounds":{"left":130.5,"bottom":133.5,"right":180.5,"top":191.5}},{"unicode":68,"advance":0.68603515625,"planeBounds":{"left":-0.01904296875,"bottom":-0.0859375,"right":0.73095703125,"top":0.7890625},"atlasBounds":{"left":184.5,"bottom":100.5,"right":232.5,"top":156.5}},{"unicode":69,"advance":0.5595703125,"planeBounds":{"left":-0.01611328125,"bottom":-0.0859375,"right":0.59326171875,"top":0.7890625},"atlasBounds":{"left":503.5,"bottom":177.5,"right":542.5,"top":233.5}},{"unicode":70,"advance":0.53515625,"planeBounds":{"left":-0.019775390625,"bottom":-0.0859375,"right":0.589599609375,"top":0.7890625},"atlasBounds":{"left":503.5,"bottom":75.5,"right":542.5,"top":131.5}},{"unicode":71,"advance":0.7138671875,"planeBounds":{"left":-0.042724609375,"bottom":-0.1015625,"right":0.754150390625,"top":0.8046875},"atlasBounds":{"left":130.5,"bottom":377.5,"right":181.5,"top":435.5}},{"unicode":72,"advance":0.7099609375,"planeBounds":{"left":-0.019775390625,"bottom":-0.0859375,"right":0.730224609375,"top":0.7890625},"atlasBounds":{"left":184.5,"bottom":43.5,"right":232.5,"top":99.5}},{"unicode":73,"advance":0.2392578125,"planeBounds":{"left":-0.01318359375,"bottom":-0.0859375,"right":0.25244140625,"top":0.7890625},"atlasBounds":{"left":653.5,"bottom":325.5,"right":670.5,"top":381.5}},{"unicode":74,"advance":0.517578125,"planeBounds":{"left":-0.06201171875,"bottom":-0.1015625,"right":0.53173828125,"top":0.7890625},"atlasBounds":{"left":543.5,"bottom":501.5,"right":581.5,"top":558.5}},{"unicode":75,"advance":0.63134765625,"planeBounds":{"left":-0.013671875,"bottom":-0.0859375,"right":0.705078125,"top":0.7890625},"atlasBounds":{"left":235.5,"bottom":94.5,"right":281.5,"top":150.5}},{"unicode":76,"advance":0.53125,"planeBounds":{"left":-0.01318359375,"bottom":-0.0859375,"right":0.58056640625,"top":0.7890625},"atlasBounds":{"left":543.5,"bottom":399.5,"right":581.5,"top":455.5}},{"unicode":77,"advance":0.8427734375,"planeBounds":{"left":-0.01611328125,"bottom":-0.0859375,"right":0.85888671875,"top":0.7890625},"atlasBounds":{"left":73.5,"bottom":619.5,"right":129.5,"top":675.5}},{"unicode":78,"advance":0.70458984375,"planeBounds":{"left":-0.014892578125,"bottom":-0.0859375,"right":0.719482421875,"top":0.7890625},"atlasBounds":{"left":235.5,"bottom":437.5,"right":282.5,"top":493.5}},{"unicode":79,"advance":0.73876953125,"planeBounds":{"left":-0.04443359375,"bottom":-0.1015625,"right":0.78369140625,"top":0.8046875},"atlasBounds":{"left":73.5,"bottom":335.5,"right":126.5,"top":393.5}},{"unicode":80,"advance":0.591796875,"planeBounds":{"left":-0.01513671875,"bottom":-0.0859375,"right":0.64111328125,"top":0.7890625},"atlasBounds":{"left":375.5,"bottom":213.5,"right":417.5,"top":269.5}},{"unicode":81,"advance":0.73876953125,"planeBounds":{"left":-0.04443359375,"bottom":-0.1640625,"right":0.78369140625,"top":0.8046875},"atlasBounds":{"left":73.5,"bottom":272.5,"right":126.5,"top":334.5}},{"unicode":82,"advance":0.61376953125,"planeBounds":{"left":-0.01416015625,"bottom":-0.0859375,"right":0.67333984375,"top":0.7890625},"atlasBounds":{"left":330.5,"bottom":432.5,"right":374.5,"top":488.5}},{"unicode":83,"advance":0.607421875,"planeBounds":{"left":-0.047607421875,"bottom":-0.1015625,"right":0.655517578125,"top":0.8046875},"atlasBounds":{"left":284.5,"bottom":208.5,"right":329.5,"top":266.5}},{"unicode":84,"advance":0.58837890625,"planeBounds":{"left":-0.057373046875,"bottom":-0.0859375,"right":0.645751953125,"top":0.7890625},"atlasBounds":{"left":284.5,"bottom":151.5,"right":329.5,"top":207.5}},{"unicode":85,"advance":0.7001953125,"planeBounds":{"left":-0.01708984375,"bottom":-0.1015625,"right":0.71728515625,"top":0.7890625},"atlasBounds":{"left":235.5,"bottom":379.5,"right":282.5,"top":436.5}},{"unicode":86,"advance":0.64794921875,"planeBounds":{"left":-0.066650390625,"bottom":-0.0859375,"right":0.714599609375,"top":0.7890625},"atlasBounds":{"left":130.5,"bottom":76.5,"right":180.5,"top":132.5}},{"unicode":87,"advance":0.93896484375,"planeBounds":{"left":-0.061767578125,"bottom":-0.0859375,"right":1.000732421875,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":562.5,"right":68.5,"top":618.5}},{"unicode":88,"advance":0.65283203125,"planeBounds":{"left":-0.064208984375,"bottom":-0.0859375,"right":0.717041015625,"top":0.7890625},"atlasBounds":{"left":130.5,"bottom":19.5,"right":180.5,"top":75.5}},{"unicode":89,"advance":0.63134765625,"planeBounds":{"left":-0.067138671875,"bottom":-0.0859375,"right":0.698486328125,"top":0.7890625},"atlasBounds":{"left":184.5,"bottom":373.5,"right":233.5,"top":429.5}},{"unicode":90,"advance":0.62158203125,"planeBounds":{"left":-0.03271484375,"bottom":-0.0859375,"right":0.65478515625,"top":0.7890625},"atlasBounds":{"left":330.5,"bottom":375.5,"right":374.5,"top":431.5}},{"unicode":91,"advance":0.34375,"planeBounds":{"left":0.021240234375,"bottom":-0.2421875,"right":0.411865234375,"top":0.7890625},"atlasBounds":{"left":621.5,"bottom":180.5,"right":646.5,"top":246.5}},{"unicode":92,"advance":0.34375,"planeBounds":{"left":-0.078125,"bottom":-0.2421875,"right":0.421875,"top":0.7890625},"atlasBounds":{"left":582.5,"bottom":147.5,"right":614.5,"top":213.5}},{"unicode":93,"advance":0.34375,"planeBounds":{"left":-0.068115234375,"bottom":-0.2421875,"right":0.322509765625,"top":0.7890625},"atlasBounds":{"left":621.5,"bottom":113.5,"right":646.5,"top":179.5}},{"unicode":94,"advance":0.4521484375,"planeBounds":{"left":-0.055419921875,"bottom":0.3046875,"right":0.507080078125,"top":0.7890625},"atlasBounds":{"left":543.5,"bottom":10.5,"right":579.5,"top":41.5}},{"unicode":95,"advance":0.4091796875,"planeBounds":{"left":-0.107666015625,"bottom":-0.2109375,"right":0.517333984375,"top":0.0390625},"atlasBounds":{"left":330.5,"bottom":2.5,"right":370.5,"top":18.5}},{"unicode":96,"advance":0.49169921875,"planeBounds":{"left":0.059326171875,"bottom":0.5390625,"right":0.434326171875,"top":0.8671875},"atlasBounds":{"left":204.5,"bottom":21.5,"right":228.5,"top":42.5}},{"unicode":97,"advance":0.51806640625,"planeBounds":{"left":-0.046875,"bottom":-0.1015625,"right":0.546875,"top":0.6015625},"atlasBounds":{"left":543.5,"bottom":295.5,"right":581.5,"top":340.5}},{"unicode":98,"advance":0.56982421875,"planeBounds":{"left":-0.022216796875,"bottom":-0.1015625,"right":0.618408203125,"top":0.7890625},"atlasBounds":{"left":418.5,"bottom":12.5,"right":459.5,"top":69.5}},{"unicode":99,"advance":0.5166015625,"planeBounds":{"left":-0.05078125,"bottom":-0.1015625,"right":0.57421875,"top":0.6015625},"atlasBounds":{"left":461.5,"bottom":248.5,"right":501.5,"top":293.5}},{"unicode":100,"advance":0.56884765625,"planeBounds":{"left":-0.049072265625,"bottom":-0.1015625,"right":0.591552734375,"top":0.7890625},"atlasBounds":{"left":418.5,"bottom":126.5,"right":459.5,"top":183.5}},{"unicode":101,"advance":0.52783203125,"planeBounds":{"left":-0.056396484375,"bottom":-0.1015625,"right":0.584228515625,"top":0.6015625},"atlasBounds":{"left":418.5,"bottom":184.5,"right":459.5,"top":229.5}},{"unicode":102,"advance":0.322265625,"planeBounds":{"left":-0.06591796875,"bottom":-0.0859375,"right":0.37158203125,"top":0.7890625},"atlasBounds":{"left":621.5,"bottom":300.5,"right":649.5,"top":356.5}},{"unicode":103,"advance":0.56494140625,"planeBounds":{"left":-0.049072265625,"bottom":-0.2734375,"right":0.591552734375,"top":0.6015625},"atlasBounds":{"left":418.5,"bottom":286.5,"right":459.5,"top":342.5}},{"unicode":104,"advance":0.55517578125,"planeBounds":{"left":-0.023681640625,"bottom":-0.0859375,"right":0.585693359375,"top":0.7890625},"atlasBounds":{"left":461.5,"bottom":9.5,"right":500.5,"top":65.5}},{"unicode":105,"advance":0.216796875,"planeBounds":{"left":-0.031982421875,"bottom":-0.0859375,"right":0.249267578125,"top":0.7890625},"atlasBounds":{"left":657.5,"bottom":619.5,"right":675.5,"top":675.5}},{"unicode":106,"advance":0.216796875,"planeBounds":{"left":-0.1103515625,"bottom":-0.2578125,"right":0.2490234375,"top":0.7890625},"atlasBounds":{"left":548.5,"bottom":608.5,"right":571.5,"top":675.5}},{"unicode":107,"advance":0.50439453125,"planeBounds":{"left":-0.025390625,"bottom":-0.0859375,"right":0.583984375,"top":0.7890625},"atlasBounds":{"left":503.5,"bottom":234.5,"right":542.5,"top":290.5}},{"unicode":108,"advance":0.2177734375,"planeBounds":{"left":-0.02392578125,"bottom":-0.0859375,"right":0.24169921875,"top":0.7890625},"atlasBounds":{"left":653.5,"bottom":382.5,"right":670.5,"top":438.5}},{"unicode":109,"advance":0.82470703125,"planeBounds":{"left":-0.031494140625,"bottom":-0.0859375,"right":0.859130859375,"top":0.6015625},"atlasBounds":{"left":0.5,"bottom":113.5,"right":57.5,"top":157.5}},{"unicode":110,"advance":0.54443359375,"planeBounds":{"left":-0.031005859375,"bottom":-0.0859375,"right":0.578369140625,"top":0.6015625},"atlasBounds":{"left":503.5,"bottom":407.5,"right":542.5,"top":451.5}},{"unicode":111,"advance":0.5458984375,"planeBounds":{"left":-0.05517578125,"bottom":-0.1015625,"right":0.60107421875,"top":0.6015625},"atlasBounds":{"left":375.5,"bottom":107.5,"right":417.5,"top":152.5}},{"unicode":112,"advance":0.56494140625,"planeBounds":{"left":-0.026123046875,"bottom":-0.2578125,"right":0.614501953125,"top":0.6015625},"atlasBounds":{"left":461.5,"bottom":549.5,"right":502.5,"top":604.5}},{"unicode":113,"advance":0.56494140625,"planeBounds":{"left":-0.049072265625,"bottom":-0.2578125,"right":0.591552734375,"top":0.6015625},"atlasBounds":{"left":418.5,"bottom":70.5,"right":459.5,"top":125.5}},{"unicode":114,"advance":0.328125,"planeBounds":{"left":-0.02734375,"bottom":-0.0859375,"right":0.39453125,"top":0.6015625},"atlasBounds":{"left":582.5,"bottom":4.5,"right":609.5,"top":48.5}},{"unicode":115,"advance":0.4833984375,"planeBounds":{"left":-0.05517578125,"bottom":-0.1015625,"right":0.53857421875,"top":0.6015625},"atlasBounds":{"left":582.5,"bottom":559.5,"right":620.5,"top":604.5}},{"unicode":116,"advance":0.32080078125,"planeBounds":{"left":-0.0712890625,"bottom":-0.0859375,"right":0.3662109375,"top":0.7265625},"atlasBounds":{"left":621.5,"bottom":247.5,"right":649.5,"top":299.5}},{"unicode":117,"advance":0.54443359375,"planeBounds":{"left":-0.033447265625,"bottom":-0.1015625,"right":0.575927734375,"top":0.6015625},"atlasBounds":{"left":461.5,"bottom":66.5,"right":500.5,"top":111.5}},{"unicode":118,"advance":0.4990234375,"planeBounds":{"left":-0.07080078125,"bottom":-0.0859375,"right":0.56982421875,"top":0.6015625},"atlasBounds":{"left":418.5,"bottom":458.5,"right":459.5,"top":502.5}},{"unicode":119,"advance":0.7421875,"planeBounds":{"left":-0.06640625,"bottom":-0.0859375,"right":0.80859375,"top":0.6015625},"atlasBounds":{"left":0.5,"bottom":9.5,"right":56.5,"top":53.5}},{"unicode":120,"advance":0.490234375,"planeBounds":{"left":-0.0673828125,"bottom":-0.0859375,"right":0.5576171875,"top":0.6015625},"atlasBounds":{"left":461.5,"bottom":157.5,"right":501.5,"top":201.5}},{"unicode":121,"advance":0.50634765625,"planeBounds":{"left":-0.074951171875,"bottom":-0.2734375,"right":0.581298828125,"top":0.6015625},"atlasBounds":{"left":375.5,"bottom":327.5,"right":417.5,"top":383.5}},{"unicode":122,"advance":0.4814453125,"planeBounds":{"left":-0.040771484375,"bottom":-0.0859375,"right":0.521728515625,"top":0.6015625},"atlasBounds":{"left":582.5,"bottom":250.5,"right":618.5,"top":294.5}},{"unicode":123,"advance":0.34375,"planeBounds":{"left":-0.0703125,"bottom":-0.2421875,"right":0.4140625,"top":0.7890625},"atlasBounds":{"left":621.5,"bottom":538.5,"right":652.5,"top":604.5}},{"unicode":124,"advance":0.34375,"planeBounds":{"left":0.046875,"bottom":-0.2421875,"right":0.296875,"top":0.7890625},"atlasBounds":{"left":653.5,"bottom":258.5,"right":669.5,"top":324.5}},{"unicode":125,"advance":0.34375,"planeBounds":{"left":-0.0703125,"bottom":-0.2421875,"right":0.4140625,"top":0.7890625},"atlasBounds":{"left":621.5,"bottom":471.5,"right":652.5,"top":537.5}},{"unicode":126,"advance":0.6201171875,"planeBounds":{"left":-0.025865659282073274,"bottom":0.1640625,"right":0.64600934071792671,"top":0.5390625},"atlasBounds":{"left":330.5,"bottom":19.5,"right":373.5,"top":43.5}},{"unicode":211,"advance":0.73876953125,"planeBounds":{"left":-0.04443359375,"bottom":-0.1015625,"right":0.78369140625,"top":0.9921875},"atlasBounds":{"left":73.5,"bottom":201.5,"right":126.5,"top":271.5}},{"unicode":243,"advance":0.5458984375,"planeBounds":{"left":-0.05517578125,"bottom":-0.1015625,"right":0.60107421875,"top":0.8203125},"atlasBounds":{"left":375.5,"bottom":153.5,"right":417.5,"top":212.5}},{"unicode":260,"advance":0.65234375,"planeBounds":{"left":-0.072509765625,"bottom":-0.3046875,"right":0.724365234375,"top":0.7890625},"atlasBounds":{"left":130.5,"bottom":306.5,"right":181.5,"top":376.5}},{"unicode":261,"advance":0.51806640625,"planeBounds":{"left":-0.046875,"bottom":-0.2890625,"right":0.546875,"top":0.6015625},"atlasBounds":{"left":543.5,"bottom":341.5,"right":581.5,"top":398.5}},{"unicode":262,"advance":0.6953125,"planeBounds":{"left":-0.0400390625,"bottom":-0.1015625,"right":0.7412109375,"top":0.9921875},"atlasBounds":{"left":184.5,"bottom":605.5,"right":234.5,"top":675.5}},{"unicode":263,"advance":0.5166015625,"planeBounds":{"left":-0.05078125,"bottom":-0.1015625,"right":0.57421875,"top":0.8203125},"atlasBounds":{"left":461.5,"bottom":431.5,"right":501.5,"top":490.5}},{"unicode":280,"advance":0.5595703125,"planeBounds":{"left":-0.01611328125,"bottom":-0.3046875,"right":0.59326171875,"top":0.7890625},"atlasBounds":{"left":235.5,"bottom":605.5,"right":274.5,"top":675.5}},{"unicode":281,"advance":0.52783203125,"planeBounds":{"left":-0.056396484375,"bottom":-0.2890625,"right":0.584228515625,"top":0.6015625},"atlasBounds":{"left":461.5,"bottom":491.5,"right":502.5,"top":548.5}},{"unicode":321,"advance":0.533203125,"planeBounds":{"left":-0.06982421875,"bottom":-0.0859375,"right":0.58642578125,"top":0.7890625},"atlasBounds":{"left":375.5,"bottom":50.5,"right":417.5,"top":106.5}},{"unicode":322,"advance":0.232421875,"planeBounds":{"left":-0.0712890625,"bottom":-0.0859375,"right":0.3037109375,"top":0.7890625},"atlasBounds":{"left":621.5,"bottom":56.5,"right":645.5,"top":112.5}},{"unicode":323,"advance":0.70458984375,"planeBounds":{"left":-0.014892578125,"bottom":-0.0859375,"right":0.719482421875,"top":0.9921875},"atlasBounds":{"left":321.5,"bottom":606.5,"right":368.5,"top":675.5}},{"unicode":324,"advance":0.54443359375,"planeBounds":{"left":-0.031005859375,"bottom":-0.0859375,"right":0.578369140625,"top":0.8203125},"atlasBounds":{"left":503.5,"bottom":546.5,"right":542.5,"top":604.5}},{"unicode":346,"advance":0.607421875,"planeBounds":{"left":-0.047607421875,"bottom":-0.1015625,"right":0.655517578125,"top":0.9921875},"atlasBounds":{"left":275.5,"bottom":605.5,"right":320.5,"top":675.5}},{"unicode":347,"advance":0.4833984375,"planeBounds":{"left":-0.05517578125,"bottom":-0.1015625,"right":0.53857421875,"top":0.8203125},"atlasBounds":{"left":543.5,"bottom":144.5,"right":581.5,"top":203.5}},{"unicode":377,"advance":0.62158203125,"planeBounds":{"left":-0.03271484375,"bottom":-0.0859375,"right":0.65478515625,"top":0.9921875},"atlasBounds":{"left":369.5,"bottom":606.5,"right":413.5,"top":675.5}},{"unicode":378,"advance":0.4814453125,"planeBounds":{"left":-0.040771484375,"bottom":-0.0859375,"right":0.521728515625,"top":0.8203125},"atlasBounds":{"left":582.5,"bottom":295.5,"right":618.5,"top":353.5}},{"unicode":379,"advance":0.62158203125,"planeBounds":{"left":-0.03271484375,"bottom":-0.0859375,"right":0.65478515625,"top":0.9765625},"atlasBounds":{"left":463.5,"bottom":607.5,"right":507.5,"top":675.5}},{"unicode":380,"advance":0.4814453125,"planeBounds":{"left":-0.040771484375,"bottom":-0.0859375,"right":0.521728515625,"top":0.8046875},"atlasBounds":{"left":582.5,"bottom":399.5,"right":618.5,"top":456.5}},{"unicode":1025,"advance":0.56982421875,"planeBounds":{"left":-0.01123046875,"bottom":-0.0859375,"right":0.59814453125,"top":0.9765625},"atlasBounds":{"left":508.5,"bottom":607.5,"right":547.5,"top":675.5}},{"unicode":1040,"advance":0.662109375,"planeBounds":{"left":-0.0673828125,"bottom":-0.0859375,"right":0.7294921875,"top":0.7890625},"atlasBounds":{"left":130.5,"bottom":249.5,"right":181.5,"top":305.5}},{"unicode":1041,"advance":0.62255859375,"planeBounds":{"left":-0.00830078125,"bottom":-0.0859375,"right":0.64794921875,"top":0.7890625},"atlasBounds":{"left":375.5,"bottom":548.5,"right":417.5,"top":604.5}},{"unicode":1042,"advance":0.626953125,"planeBounds":{"left":-0.012451171875,"bottom":-0.0859375,"right":0.675048828125,"top":0.7890625},"atlasBounds":{"left":330.5,"bottom":318.5,"right":374.5,"top":374.5}},{"unicode":1043,"advance":0.5322265625,"planeBounds":{"left":-0.01171875,"bottom":-0.0859375,"right":0.58203125,"top":0.7890625},"atlasBounds":{"left":582.5,"bottom":502.5,"right":620.5,"top":558.5}},{"unicode":1044,"advance":0.73681640625,"planeBounds":{"left":-0.0673828125,"bottom":-0.2265625,"right":0.7919921875,"top":0.7890625},"atlasBounds":{"left":73.5,"bottom":496.5,"right":128.5,"top":561.5}},{"unicode":1045,"advance":0.56982421875,"planeBounds":{"left":-0.01123046875,"bottom":-0.0859375,"right":0.59814453125,"top":0.7890625},"atlasBounds":{"left":503.5,"bottom":291.5,"right":542.5,"top":347.5}},{"unicode":1046,"advance":0.9775390625,"planeBounds":{"left":-0.07373046875,"bottom":-0.0859375,"right":1.05126953125,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":619.5,"right":72.5,"top":675.5}},{"unicode":1047,"advance":0.5966796875,"planeBounds":{"left":-0.04541015625,"bottom":-0.1015625,"right":0.64208984375,"top":0.8046875},"atlasBounds":{"left":330.5,"bottom":546.5,"right":374.5,"top":604.5}},{"unicode":1048,"advance":0.720703125,"planeBounds":{"left":-0.0146484375,"bottom":-0.0859375,"right":0.7353515625,"top":0.7890625},"atlasBounds":{"left":235.5,"bottom":548.5,"right":283.5,"top":604.5}},{"unicode":1049,"advance":0.720703125,"planeBounds":{"left":-0.0146484375,"bottom":-0.0859375,"right":0.7353515625,"top":0.9921875},"atlasBounds":{"left":414.5,"bottom":606.5,"right":462.5,"top":675.5}},{"unicode":1050,"advance":0.640625,"planeBounds":{"left":-0.009521484375,"bottom":-0.0859375,"right":0.709228515625,"top":0.7890625},"atlasBounds":{"left":235.5,"bottom":151.5,"right":281.5,"top":207.5}},{"unicode":1051,"advance":0.69287109375,"planeBounds":{"left":-0.0595703125,"bottom":-0.0859375,"right":0.7060546875,"top":0.7890625},"atlasBounds":{"left":184.5,"bottom":271.5,"right":233.5,"top":327.5}},{"unicode":1052,"advance":0.8525390625,"planeBounds":{"left":-0.01123046875,"bottom":-0.0859375,"right":0.86376953125,"top":0.7890625},"atlasBounds":{"left":73.5,"bottom":562.5,"right":129.5,"top":618.5}},{"unicode":1053,"advance":0.7197265625,"planeBounds":{"left":-0.014892578125,"bottom":-0.0859375,"right":0.735107421875,"top":0.7890625},"atlasBounds":{"left":184.5,"bottom":157.5,"right":232.5,"top":213.5}},{"unicode":1054,"advance":0.74853515625,"planeBounds":{"left":-0.03955078125,"bottom":-0.1015625,"right":0.78857421875,"top":0.8046875},"atlasBounds":{"left":73.5,"bottom":142.5,"right":126.5,"top":200.5}},{"unicode":1055,"advance":0.71044921875,"planeBounds":{"left":-0.01171875,"bottom":-0.0859375,"right":0.72265625,"top":0.7890625},"atlasBounds":{"left":235.5,"bottom":322.5,"right":282.5,"top":378.5}},{"unicode":1056,"advance":0.60302734375,"planeBounds":{"left":-0.01025390625,"bottom":-0.0859375,"right":0.64599609375,"top":0.7890625},"atlasBounds":{"left":418.5,"bottom":548.5,"right":460.5,"top":604.5}},{"unicode":1057,"advance":0.70361328125,"planeBounds":{"left":-0.0361328125,"bottom":-0.1015625,"right":0.7451171875,"top":0.8046875},"atlasBounds":{"left":184.5,"bottom":430.5,"right":234.5,"top":488.5}},{"unicode":1058,"advance":0.59814453125,"planeBounds":{"left":-0.052490234375,"bottom":-0.0859375,"right":0.650634765625,"top":0.7890625},"atlasBounds":{"left":284.5,"bottom":267.5,"right":329.5,"top":323.5}},{"unicode":1059,"advance":0.6162109375,"planeBounds":{"left":-0.06494140625,"bottom":-0.0859375,"right":0.68505859375,"top":0.7890625},"atlasBounds":{"left":184.5,"bottom":214.5,"right":232.5,"top":270.5}},{"unicode":1060,"advance":0.8173828125,"planeBounds":{"left":-0.044189453125,"bottom":-0.1015625,"right":0.862060546875,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":257.5,"right":58.5,"top":315.5}},{"unicode":1061,"advance":0.66259765625,"planeBounds":{"left":-0.059326171875,"bottom":-0.0859375,"right":0.721923828125,"top":0.7890625},"atlasBounds":{"left":184.5,"bottom":548.5,"right":234.5,"top":604.5}},{"unicode":1062,"advance":0.7548828125,"planeBounds":{"left":-0.0146484375,"bottom":-0.2265625,"right":0.8134765625,"top":0.7890625},"atlasBounds":{"left":73.5,"bottom":30.5,"right":126.5,"top":95.5}},{"unicode":1063,"advance":0.6796875,"planeBounds":{"left":-0.025390625,"bottom":-0.0859375,"right":0.693359375,"top":0.7890625},"atlasBounds":{"left":235.5,"bottom":265.5,"right":281.5,"top":321.5}},{"unicode":1064,"advance":0.93798828125,"planeBounds":{"left":-0.015380859375,"bottom":-0.0859375,"right":0.953369140625,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":316.5,"right":62.5,"top":372.5}},{"unicode":1065,"advance":0.98193359375,"planeBounds":{"left":-0.010498046875,"bottom":-0.2265625,"right":1.036376953125,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":496.5,"right":67.5,"top":561.5}},{"unicode":1066,"advance":0.73046875,"planeBounds":{"left":-0.052001953125,"bottom":-0.0859375,"right":0.776123046875,"top":0.7890625},"atlasBounds":{"left":130.5,"bottom":619.5,"right":183.5,"top":675.5}},{"unicode":1067,"advance":0.84130859375,"planeBounds":{"left":-0.009033203125,"bottom":-0.0859375,"right":0.850341796875,"top":0.7890625},"atlasBounds":{"left":73.5,"bottom":439.5,"right":128.5,"top":495.5}},{"unicode":1068,"advance":0.609375,"planeBounds":{"left":-0.013916015625,"bottom":-0.0859375,"right":0.657958984375,"top":0.7890625},"atlasBounds":{"left":330.5,"bottom":261.5,"right":373.5,"top":317.5}},{"unicode":1069,"advance":0.70361328125,"planeBounds":{"left":-0.04150390625,"bottom":-0.1015625,"right":0.73974609375,"top":0.8046875},"atlasBounds":{"left":184.5,"bottom":489.5,"right":234.5,"top":547.5}},{"unicode":1070,"advance":0.9892578125,"planeBounds":{"left":-0.015869140625,"bottom":-0.1015625,"right":1.031005859375,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":437.5,"right":67.5,"top":495.5}},{"unicode":1071,"advance":0.642578125,"planeBounds":{"left":-0.051513671875,"bottom":-0.0859375,"right":0.651611328125,"top":0.7890625},"atlasBounds":{"left":284.5,"bottom":94.5,"right":329.5,"top":150.5}},{"unicode":1072,"advance":0.52734375,"planeBounds":{"left":-0.0419921875,"bottom":-0.1015625,"right":0.5517578125,"top":0.6015625},"atlasBounds":{"left":543.5,"bottom":559.5,"right":581.5,"top":604.5}},{"unicode":1073,"advance":0.564453125,"planeBounds":{"left":-0.0439453125,"bottom":-0.1015625,"right":0.6123046875,"top":0.8203125},"atlasBounds":{"left":375.5,"bottom":442.5,"right":417.5,"top":501.5}},{"unicode":1074,"advance":0.51025390625,"planeBounds":{"left":-0.02392578125,"bottom":-0.0859375,"right":0.55419921875,"top":0.6015625},"atlasBounds":{"left":582.5,"bottom":457.5,"right":619.5,"top":501.5}},{"unicode":1075,"advance":0.4287109375,"planeBounds":{"left":-0.023193359375,"bottom":-0.0859375,"right":0.476806640625,"top":0.6015625},"atlasBounds":{"left":582.5,"bottom":102.5,"right":614.5,"top":146.5}},{"unicode":1076,"advance":0.59765625,"planeBounds":{"left":-0.071044921875,"bottom":-0.2265625,"right":0.663330078125,"top":0.6015625},"atlasBounds":{"left":235.5,"bottom":494.5,"right":282.5,"top":547.5}},{"unicode":1077,"advance":0.537109375,"planeBounds":{"left":-0.051513671875,"bottom":-0.1015625,"right":0.589111328125,"top":0.6015625},"atlasBounds":{"left":375.5,"bottom":4.5,"right":416.5,"top":49.5}},{"unicode":1078,"advance":0.767578125,"planeBounds":{"left":-0.0693359375,"bottom":-0.0859375,"right":0.8369140625,"top":0.6015625},"atlasBounds":{"left":0.5,"bottom":212.5,"right":58.5,"top":256.5}},{"unicode":1079,"advance":0.4873046875,"planeBounds":{"left":-0.05712890625,"bottom":-0.1015625,"right":0.53662109375,"top":0.6015625},"atlasBounds":{"left":543.5,"bottom":249.5,"right":581.5,"top":294.5}},{"unicode":1080,"advance":0.5625,"planeBounds":{"left":-0.0234375,"bottom":-0.0859375,"right":0.5859375,"top":0.6015625},"atlasBounds":{"left":503.5,"bottom":30.5,"right":542.5,"top":74.5}},{"unicode":1081,"advance":0.5625,"planeBounds":{"left":-0.0234375,"bottom":-0.0859375,"right":0.5859375,"top":0.8203125},"atlasBounds":{"left":503.5,"bottom":348.5,"right":542.5,"top":406.5}},{"unicode":1082,"advance":0.51025390625,"planeBounds":{"left":-0.025634765625,"bottom":-0.0859375,"right":0.583740234375,"top":0.6015625},"atlasBounds":{"left":503.5,"bottom":132.5,"right":542.5,"top":176.5}},{"unicode":1083,"advance":0.5458984375,"planeBounds":{"left":-0.068359375,"bottom":-0.0859375,"right":0.572265625,"top":0.6015625},"atlasBounds":{"left":418.5,"bottom":503.5,"right":459.5,"top":547.5}},{"unicode":1084,"advance":0.70849609375,"planeBounds":{"left":-0.0283203125,"bottom":-0.0859375,"right":0.7373046875,"top":0.6015625},"atlasBounds":{"left":184.5,"bottom":328.5,"right":233.5,"top":372.5}},{"unicode":1085,"advance":0.55615234375,"planeBounds":{"left":-0.02685546875,"bottom":-0.0859375,"right":0.58251953125,"top":0.6015625},"atlasBounds":{"left":503.5,"bottom":501.5,"right":542.5,"top":545.5}},{"unicode":1086,"advance":0.55517578125,"planeBounds":{"left":-0.05029296875,"bottom":-0.1015625,"right":0.60595703125,"top":0.6015625},"atlasBounds":{"left":375.5,"bottom":502.5,"right":417.5,"top":547.5}},{"unicode":1087,"advance":0.55126953125,"planeBounds":{"left":-0.029052734375,"bottom":-0.0859375,"right":0.580322265625,"top":0.6015625},"atlasBounds":{"left":461.5,"bottom":112.5,"right":500.5,"top":156.5}},{"unicode":1088,"advance":0.57470703125,"planeBounds":{"left":-0.021240234375,"bottom":-0.2578125,"right":0.619384765625,"top":0.6015625},"atlasBounds":{"left":418.5,"bottom":230.5,"right":459.5,"top":285.5}},{"unicode":1089,"advance":0.52392578125,"planeBounds":{"left":-0.047607421875,"bottom":-0.1015625,"right":0.577392578125,"top":0.6015625},"atlasBounds":{"left":461.5,"bottom":202.5,"right":501.5,"top":247.5}},{"unicode":1090,"advance":0.46728515625,"planeBounds":{"left":-0.063232421875,"bottom":-0.0859375,"right":0.530517578125,"top":0.6015625},"atlasBounds":{"left":543.5,"bottom":42.5,"right":581.5,"top":86.5}},{"unicode":1091,"advance":0.515625,"planeBounds":{"left":-0.070068359375,"bottom":-0.2734375,"right":0.586181640625,"top":0.6015625},"atlasBounds":{"left":375.5,"bottom":270.5,"right":417.5,"top":326.5}},{"unicode":1092,"advance":0.71044921875,"planeBounds":{"left":-0.051025390625,"bottom":-0.2578125,"right":0.761474609375,"top":0.7734375},"atlasBounds":{"left":130.5,"bottom":493.5,"right":182.5,"top":559.5}},{"unicode":1093,"advance":0.49951171875,"planeBounds":{"left":-0.0625,"bottom":-0.0859375,"right":0.5625,"top":0.6015625},"atlasBounds":{"left":461.5,"bottom":294.5,"right":501.5,"top":338.5}},{"unicode":1094,"advance":0.5859375,"planeBounds":{"left":-0.022216796875,"bottom":-0.2265625,"right":0.649658203125,"top":0.6015625},"atlasBounds":{"left":330.5,"bottom":44.5,"right":373.5,"top":97.5}},{"unicode":1095,"advance":0.52783203125,"planeBounds":{"left":-0.038818359375,"bottom":-0.0859375,"right":0.554931640625,"top":0.6015625},"atlasBounds":{"left":543.5,"bottom":204.5,"right":581.5,"top":248.5}},{"unicode":1096,"advance":0.77294921875,"planeBounds":{"left":-0.027587890625,"bottom":-0.0859375,"right":0.800537109375,"top":0.6015625},"atlasBounds":{"left":73.5,"bottom":394.5,"right":126.5,"top":438.5}},{"unicode":1097,"advance":0.81005859375,"planeBounds":{"left":-0.02734375,"bottom":-0.2265625,"right":0.87890625,"top":0.6015625},"atlasBounds":{"left":0.5,"bottom":158.5,"right":58.5,"top":211.5}},{"unicode":1098,"advance":0.58544921875,"planeBounds":{"left":-0.064453125,"bottom":-0.0859375,"right":0.638671875,"top":0.6015625},"atlasBounds":{"left":284.5,"bottom":560.5,"right":329.5,"top":604.5}},{"unicode":1099,"advance":0.67529296875,"planeBounds":{"left":-0.021728515625,"bottom":-0.0859375,"right":0.697021484375,"top":0.6015625},"atlasBounds":{"left":235.5,"bottom":49.5,"right":281.5,"top":93.5}},{"unicode":1100,"advance":0.48583984375,"planeBounds":{"left":-0.025390625,"bottom":-0.0859375,"right":0.537109375,"top":0.6015625},"atlasBounds":{"left":582.5,"bottom":354.5,"right":618.5,"top":398.5}},{"unicode":1101,"advance":0.52392578125,"planeBounds":{"left":-0.053466796875,"bottom":-0.1015625,"right":0.571533203125,"top":0.6015625},"atlasBounds":{"left":461.5,"bottom":385.5,"right":501.5,"top":430.5}},{"unicode":1102,"advance":0.759765625,"planeBounds":{"left":-0.02294921875,"bottom":-0.1015625,"right":0.80517578125,"top":0.6015625},"atlasBounds":{"left":73.5,"bottom":96.5,"right":126.5,"top":141.5}},{"unicode":1103,"advance":0.5048828125,"planeBounds":{"left":-0.061279296875,"bottom":-0.0859375,"right":0.532470703125,"top":0.6015625},"atlasBounds":{"left":543.5,"bottom":456.5,"right":581.5,"top":500.5}},{"unicode":1105,"advance":0.537109375,"planeBounds":{"left":-0.051513671875,"bottom":-0.1015625,"right":0.589111328125,"top":0.7890625},"atlasBounds":{"left":418.5,"bottom":343.5,"right":459.5,"top":400.5}},{"unicode":1108,"advance":0.52392578125,"planeBounds":{"left":-0.047607421875,"bottom":-0.1015625,"right":0.577392578125,"top":0.6015625},"atlasBounds":{"left":461.5,"bottom":339.5,"right":501.5,"top":384.5}},{"unicode":1110,"advance":0.2265625,"planeBounds":{"left":-0.027099609375,"bottom":-0.0859375,"right":0.254150390625,"top":0.7890625},"atlasBounds":{"left":653.5,"bottom":439.5,"right":671.5,"top":495.5}},{"unicode":1111,"advance":0.2265625,"planeBounds":{"left":-0.1044921875,"bottom":-0.0859375,"right":0.3330078125,"top":0.7890625},"atlasBounds":{"left":621.5,"bottom":357.5,"right":649.5,"top":413.5}},{"unicode":1169,"advance":0.4287109375,"planeBounds":{"left":-0.023193359375,"bottom":-0.0859375,"right":0.476806640625,"top":0.7265625},"atlasBounds":{"left":582.5,"bottom":49.5,"right":614.5,"top":101.5}}],"kerning":[]} diff --git a/src/main/resources/assets/evolution/fonts/msdf/medium.png b/src/main/resources/assets/evolution/fonts/msdf/medium.png new file mode 100644 index 0000000..16a186c Binary files /dev/null and b/src/main/resources/assets/evolution/fonts/msdf/medium.png differ diff --git a/src/main/resources/assets/evolution/fonts/msdf/medium.png.mcmeta b/src/main/resources/assets/evolution/fonts/msdf/medium.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/fonts/msdf/medium.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/fonts/msdf/regular.json b/src/main/resources/assets/evolution/fonts/msdf/regular.json new file mode 100644 index 0000000..88ddd91 --- /dev/null +++ b/src/main/resources/assets/evolution/fonts/msdf/regular.json @@ -0,0 +1 @@ +{"atlas":{"type":"mtsdf","distanceRange":10,"distanceRangeMiddle":0,"size":64,"width":668,"height":668,"yOrigin":"bottom"},"metrics":{"emSize":1,"lineHeight":1.193359375,"ascender":0.9521484375,"descender":-0.2412109375,"underlineY":-0.1806640625,"underlineThickness":0.05859375},"glyphs":[{"unicode":32,"advance":0.205078125},{"unicode":33,"advance":0.2666015625,"planeBounds":{"left":-0.00732421875,"bottom":-0.0859375,"right":0.27392578125,"top":0.7890625},"atlasBounds":{"left":635.5,"bottom":515.5,"right":653.5,"top":571.5}},{"unicode":34,"advance":0.39404296875,"planeBounds":{"left":-0.013916015625,"bottom":0.3671875,"right":0.407958984375,"top":0.7890625},"atlasBounds":{"left":368.5,"bottom":5.5,"right":395.5,"top":32.5}},{"unicode":35,"advance":0.60107421875,"planeBounds":{"left":-0.082275390625,"bottom":-0.0859375,"right":0.683349609375,"top":0.7890625},"atlasBounds":{"left":128.5,"bottom":310.5,"right":177.5,"top":366.5}},{"unicode":36,"advance":0.60498046875,"planeBounds":{"left":-0.033447265625,"bottom":-0.1484375,"right":0.638427734375,"top":0.8671875},"atlasBounds":{"left":323.5,"bottom":463.5,"right":366.5,"top":528.5}},{"unicode":37,"advance":0.7314453125,"planeBounds":{"left":-0.055908203125,"bottom":-0.0859375,"right":0.787841796875,"top":0.8046875},"atlasBounds":{"left":72.5,"bottom":553.5,"right":126.5,"top":610.5}},{"unicode":38,"advance":0.6689453125,"planeBounds":{"left":-0.039794921875,"bottom":-0.1015625,"right":0.757080078125,"top":0.8046875},"atlasBounds":{"left":72.5,"bottom":62.5,"right":123.5,"top":120.5}},{"unicode":39,"advance":0.2099609375,"planeBounds":{"left":-0.01220703125,"bottom":0.3671875,"right":0.22216796875,"top":0.7890625},"atlasBounds":{"left":635.5,"bottom":131.5,"right":650.5,"top":158.5}},{"unicode":40,"advance":0.322265625,"planeBounds":{"left":0.01025390625,"bottom":-0.2421875,"right":0.38525390625,"top":0.7890625},"atlasBounds":{"left":606.5,"bottom":334.5,"right":630.5,"top":400.5}},{"unicode":41,"advance":0.322265625,"planeBounds":{"left":-0.06298828125,"bottom":-0.2421875,"right":0.31201171875,"top":0.7890625},"atlasBounds":{"left":606.5,"bottom":200.5,"right":630.5,"top":266.5}},{"unicode":42,"advance":0.482421875,"planeBounds":{"left":-0.015625,"bottom":0.2734375,"right":0.5,"top":0.8203125},"atlasBounds":{"left":569.5,"bottom":382.5,"right":602.5,"top":417.5}},{"unicode":43,"advance":0.60498046875,"planeBounds":{"left":-0.02587890625,"bottom":-0.0703125,"right":0.63037109375,"top":0.6171875},"atlasBounds":{"left":323.5,"bottom":85.5,"right":365.5,"top":129.5}},{"unicode":44,"advance":0.25390625,"planeBounds":{"left":-0.037109375,"bottom":-0.2265625,"right":0.259765625,"top":0.1953125},"atlasBounds":{"left":635.5,"bottom":572.5,"right":654.5,"top":599.5}},{"unicode":45,"advance":0.4287109375,"planeBounds":{"left":-0.02783203125,"bottom":0.1640625,"right":0.45654296875,"top":0.4140625},"atlasBounds":{"left":72.5,"bottom":1.5,"right":103.5,"top":17.5}},{"unicode":46,"advance":0.25390625,"planeBounds":{"left":-0.013671875,"bottom":-0.0859375,"right":0.267578125,"top":0.1953125},"atlasBounds":{"left":635.5,"bottom":454.5,"right":653.5,"top":472.5}},{"unicode":47,"advance":0.322265625,"planeBounds":{"left":-0.0810546875,"bottom":-0.2421875,"right":0.4033203125,"top":0.7890625},"atlasBounds":{"left":569.5,"bottom":204.5,"right":600.5,"top":270.5}},{"unicode":48,"advance":0.6064453125,"planeBounds":{"left":-0.04052734375,"bottom":-0.1015625,"right":0.64697265625,"top":0.8046875},"atlasBounds":{"left":277.5,"bottom":438.5,"right":321.5,"top":496.5}},{"unicode":49,"advance":0.443359375,"planeBounds":{"left":-0.03369140625,"bottom":-0.0859375,"right":0.40380859375,"top":0.7890625},"atlasBounds":{"left":606.5,"bottom":611.5,"right":634.5,"top":667.5}},{"unicode":50,"advance":0.56591796875,"planeBounds":{"left":-0.032958984375,"bottom":-0.0859375,"right":0.607666015625,"top":0.8046875},"atlasBounds":{"left":368.5,"bottom":385.5,"right":409.5,"top":442.5}},{"unicode":51,"advance":0.591796875,"planeBounds":{"left":-0.034912109375,"bottom":-0.1015625,"right":0.621337890625,"top":0.8046875},"atlasBounds":{"left":323.5,"bottom":26.5,"right":365.5,"top":84.5}},{"unicode":52,"advance":0.60498046875,"planeBounds":{"left":-0.044189453125,"bottom":-0.0859375,"right":0.658935546875,"top":0.7890625},"atlasBounds":{"left":230.5,"bottom":132.5,"right":275.5,"top":188.5}},{"unicode":53,"advance":0.5849609375,"planeBounds":{"left":-0.024169921875,"bottom":-0.1015625,"right":0.632080078125,"top":0.7890625},"atlasBounds":{"left":368.5,"bottom":610.5,"right":410.5,"top":667.5}},{"unicode":54,"advance":0.5986328125,"planeBounds":{"left":-0.040771484375,"bottom":-0.1015625,"right":0.646728515625,"top":0.8046875},"atlasBounds":{"left":277.5,"bottom":379.5,"right":321.5,"top":437.5}},{"unicode":55,"advance":0.546875,"planeBounds":{"left":-0.042236328125,"bottom":-0.0859375,"right":0.582763671875,"top":0.7890625},"atlasBounds":{"left":411.5,"bottom":611.5,"right":451.5,"top":667.5}},{"unicode":56,"advance":0.59912109375,"planeBounds":{"left":-0.036376953125,"bottom":-0.1015625,"right":0.635498046875,"top":0.8046875},"atlasBounds":{"left":323.5,"bottom":404.5,"right":366.5,"top":462.5}},{"unicode":57,"advance":0.5986328125,"planeBounds":{"left":-0.048095703125,"bottom":-0.1015625,"right":0.639404296875,"top":0.8046875},"atlasBounds":{"left":277.5,"bottom":320.5,"right":321.5,"top":378.5}},{"unicode":58,"advance":0.25390625,"planeBounds":{"left":-0.013671875,"bottom":-0.0859375,"right":0.267578125,"top":0.5546875},"atlasBounds":{"left":635.5,"bottom":473.5,"right":653.5,"top":514.5}},{"unicode":59,"advance":0.25390625,"planeBounds":{"left":-0.035888671875,"bottom":-0.2265625,"right":0.260986328125,"top":0.5546875},"atlasBounds":{"left":606.5,"bottom":3.5,"right":625.5,"top":53.5}},{"unicode":60,"advance":0.60498046875,"planeBounds":{"left":0.005615234375,"bottom":-0.0859375,"right":0.599365234375,"top":0.6484375},"atlasBounds":{"left":180.5,"bottom":2.5,"right":218.5,"top":49.5}},{"unicode":61,"advance":0.60498046875,"planeBounds":{"left":-0.017822265625,"bottom":0.0546875,"right":0.622802734375,"top":0.4921875},"atlasBounds":{"left":368.5,"bottom":356.5,"right":409.5,"top":384.5}},{"unicode":62,"advance":0.60498046875,"planeBounds":{"left":0.005615234375,"bottom":-0.0859375,"right":0.599365234375,"top":0.6484375},"atlasBounds":{"left":492.5,"bottom":620.5,"right":530.5,"top":667.5}},{"unicode":63,"advance":0.4892578125,"planeBounds":{"left":-0.0517578125,"bottom":-0.0859375,"right":0.5263671875,"top":0.7890625},"atlasBounds":{"left":492.5,"bottom":0.5,"right":529.5,"top":56.5}},{"unicode":64,"advance":0.87451171875,"planeBounds":{"left":-0.03125,"bottom":-0.1953125,"right":0.921875,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":365.5,"right":61.5,"top":428.5}},{"unicode":65,"advance":0.630859375,"planeBounds":{"left":-0.0673828125,"bottom":-0.0859375,"right":0.6982421875,"top":0.7890625},"atlasBounds":{"left":128.5,"bottom":253.5,"right":177.5,"top":309.5}},{"unicode":66,"advance":0.6044921875,"planeBounds":{"left":-0.01513671875,"bottom":-0.0859375,"right":0.65673828125,"top":0.7890625},"atlasBounds":{"left":323.5,"bottom":347.5,"right":366.5,"top":403.5}},{"unicode":67,"advance":0.68603515625,"planeBounds":{"left":-0.044677734375,"bottom":-0.1015625,"right":0.736572265625,"top":0.8046875},"atlasBounds":{"left":128.5,"bottom":497.5,"right":178.5,"top":555.5}},{"unicode":68,"advance":0.67822265625,"planeBounds":{"left":-0.01416015625,"bottom":-0.0859375,"right":0.72021484375,"top":0.7890625},"atlasBounds":{"left":180.5,"bottom":208.5,"right":227.5,"top":264.5}},{"unicode":69,"advance":0.55224609375,"planeBounds":{"left":-0.01025390625,"bottom":-0.0859375,"right":0.58349609375,"top":0.7890625},"atlasBounds":{"left":492.5,"bottom":494.5,"right":530.5,"top":550.5}},{"unicode":70,"advance":0.52783203125,"planeBounds":{"left":-0.0146484375,"bottom":-0.0859375,"right":0.5791015625,"top":0.7890625},"atlasBounds":{"left":492.5,"bottom":437.5,"right":530.5,"top":493.5}},{"unicode":71,"advance":0.70654296875,"planeBounds":{"left":-0.038818359375,"bottom":-0.1015625,"right":0.742431640625,"top":0.8046875},"atlasBounds":{"left":128.5,"bottom":438.5,"right":178.5,"top":496.5}},{"unicode":72,"advance":0.69921875,"planeBounds":{"left":-0.009765625,"bottom":-0.0859375,"right":0.708984375,"top":0.7890625},"atlasBounds":{"left":180.5,"bottom":50.5,"right":226.5,"top":106.5}},{"unicode":73,"advance":0.224609375,"planeBounds":{"left":-0.0126953125,"bottom":-0.0859375,"right":0.2373046875,"top":0.7890625},"atlasBounds":{"left":635.5,"bottom":226.5,"right":651.5,"top":282.5}},{"unicode":74,"advance":0.4951171875,"planeBounds":{"left":-0.0576171875,"bottom":-0.1015625,"right":0.5048828125,"top":0.7890625},"atlasBounds":{"left":531.5,"bottom":18.5,"right":567.5,"top":75.5}},{"unicode":75,"advance":0.615234375,"planeBounds":{"left":-0.012939453125,"bottom":-0.0859375,"right":0.690185546875,"top":0.7890625},"atlasBounds":{"left":230.5,"bottom":18.5,"right":275.5,"top":74.5}},{"unicode":76,"advance":0.5244140625,"planeBounds":{"left":-0.0146484375,"bottom":-0.0859375,"right":0.5791015625,"top":0.7890625},"atlasBounds":{"left":492.5,"bottom":336.5,"right":530.5,"top":392.5}},{"unicode":77,"advance":0.8310546875,"planeBounds":{"left":-0.01416015625,"bottom":-0.0859375,"right":0.84521484375,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":95.5,"right":55.5,"top":151.5}},{"unicode":78,"advance":0.69921875,"planeBounds":{"left":-0.009765625,"bottom":-0.0859375,"right":0.708984375,"top":0.7890625},"atlasBounds":{"left":230.5,"bottom":611.5,"right":276.5,"top":667.5}},{"unicode":79,"advance":0.7314453125,"planeBounds":{"left":-0.04052734375,"bottom":-0.1015625,"right":0.77197265625,"top":0.8046875},"atlasBounds":{"left":72.5,"bottom":371.5,"right":124.5,"top":429.5}},{"unicode":80,"advance":0.57763671875,"planeBounds":{"left":-0.013427734375,"bottom":-0.0859375,"right":0.627197265625,"top":0.7890625},"atlasBounds":{"left":368.5,"bottom":253.5,"right":409.5,"top":309.5}},{"unicode":81,"advance":0.7314453125,"planeBounds":{"left":-0.04052734375,"bottom":-0.1640625,"right":0.77197265625,"top":0.8046875},"atlasBounds":{"left":72.5,"bottom":308.5,"right":124.5,"top":370.5}},{"unicode":82,"advance":0.59912109375,"planeBounds":{"left":-0.012451171875,"bottom":-0.0859375,"right":0.659423828125,"top":0.7890625},"atlasBounds":{"left":323.5,"bottom":290.5,"right":366.5,"top":346.5}},{"unicode":83,"advance":0.59375,"planeBounds":{"left":-0.046630859375,"bottom":-0.1015625,"right":0.640869140625,"top":0.8046875},"atlasBounds":{"left":277.5,"bottom":217.5,"right":321.5,"top":275.5}},{"unicode":84,"advance":0.5810546875,"planeBounds":{"left":-0.06103515625,"bottom":-0.0859375,"right":0.64208984375,"top":0.7890625},"atlasBounds":{"left":277.5,"bottom":611.5,"right":322.5,"top":667.5}},{"unicode":85,"advance":0.6962890625,"planeBounds":{"left":-0.01123046875,"bottom":-0.1015625,"right":0.70751953125,"top":0.7890625},"atlasBounds":{"left":230.5,"bottom":553.5,"right":276.5,"top":610.5}},{"unicode":86,"advance":0.630859375,"planeBounds":{"left":-0.0673828125,"bottom":-0.0859375,"right":0.6982421875,"top":0.7890625},"atlasBounds":{"left":128.5,"bottom":130.5,"right":177.5,"top":186.5}},{"unicode":87,"advance":0.923828125,"planeBounds":{"left":-0.0615234375,"bottom":-0.0859375,"right":0.9853515625,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":554.5,"right":67.5,"top":610.5}},{"unicode":88,"advance":0.634765625,"planeBounds":{"left":-0.0576171875,"bottom":-0.0859375,"right":0.6923828125,"top":0.7890625},"atlasBounds":{"left":180.5,"bottom":436.5,"right":228.5,"top":492.5}},{"unicode":89,"advance":0.6123046875,"planeBounds":{"left":-0.06884765625,"bottom":-0.0859375,"right":0.68115234375,"top":0.7890625},"atlasBounds":{"left":180.5,"bottom":379.5,"right":228.5,"top":435.5}},{"unicode":90,"advance":0.61669921875,"planeBounds":{"left":-0.035400390625,"bottom":-0.0859375,"right":0.652099609375,"top":0.7890625},"atlasBounds":{"left":277.5,"bottom":103.5,"right":321.5,"top":159.5}},{"unicode":91,"advance":0.322265625,"planeBounds":{"left":0.01904296875,"bottom":-0.2421875,"right":0.39404296875,"top":0.7890625},"atlasBounds":{"left":606.5,"bottom":267.5,"right":630.5,"top":333.5}},{"unicode":92,"advance":0.322265625,"planeBounds":{"left":-0.0810546875,"bottom":-0.2421875,"right":0.4033203125,"top":0.7890625},"atlasBounds":{"left":569.5,"bottom":315.5,"right":600.5,"top":381.5}},{"unicode":93,"advance":0.322265625,"planeBounds":{"left":-0.07177734375,"bottom":-0.2421875,"right":0.30322265625,"top":0.7890625},"atlasBounds":{"left":606.5,"bottom":133.5,"right":630.5,"top":199.5}},{"unicode":94,"advance":0.4375,"planeBounds":{"left":-0.0546875,"bottom":0.3203125,"right":0.4921875,"top":0.7890625},"atlasBounds":{"left":277.5,"bottom":1.5,"right":312.5,"top":31.5}},{"unicode":95,"advance":0.404296875,"planeBounds":{"left":-0.1103515625,"bottom":-0.1953125,"right":0.5146484375,"top":0.0390625},"atlasBounds":{"left":230.5,"bottom":2.5,"right":270.5,"top":17.5}},{"unicode":96,"advance":0.49072265625,"planeBounds":{"left":0.06689453125,"bottom":0.5390625,"right":0.42626953125,"top":0.8671875},"atlasBounds":{"left":606.5,"bottom":54.5,"right":629.5,"top":75.5}},{"unicode":97,"advance":0.501953125,"planeBounds":{"left":-0.047119140625,"bottom":-0.1015625,"right":0.531005859375,"top":0.6015625},"atlasBounds":{"left":492.5,"bottom":57.5,"right":529.5,"top":102.5}},{"unicode":98,"advance":0.55419921875,"planeBounds":{"left":-0.02099609375,"bottom":-0.1015625,"right":0.60400390625,"top":0.7890625},"atlasBounds":{"left":411.5,"bottom":185.5,"right":451.5,"top":242.5}},{"unicode":99,"advance":0.5009765625,"planeBounds":{"left":-0.050537109375,"bottom":-0.1015625,"right":0.558837890625,"top":0.6015625},"atlasBounds":{"left":452.5,"bottom":217.5,"right":491.5,"top":262.5}},{"unicode":100,"advance":0.5537109375,"planeBounds":{"left":-0.05029296875,"bottom":-0.1015625,"right":0.57470703125,"top":0.7890625},"atlasBounds":{"left":411.5,"bottom":127.5,"right":451.5,"top":184.5}},{"unicode":101,"advance":0.51220703125,"planeBounds":{"left":-0.048583984375,"bottom":-0.1015625,"right":0.560791015625,"top":0.6015625},"atlasBounds":{"left":452.5,"bottom":309.5,"right":491.5,"top":354.5}},{"unicode":102,"advance":0.3037109375,"planeBounds":{"left":-0.068359375,"bottom":-0.0859375,"right":0.353515625,"top":0.7890625},"atlasBounds":{"left":606.5,"bottom":446.5,"right":633.5,"top":502.5}},{"unicode":103,"advance":0.54931640625,"planeBounds":{"left":-0.05029296875,"bottom":-0.2734375,"right":0.57470703125,"top":0.6015625},"atlasBounds":{"left":411.5,"bottom":70.5,"right":451.5,"top":126.5}},{"unicode":104,"advance":0.5390625,"planeBounds":{"left":-0.02392578125,"bottom":-0.0859375,"right":0.56982421875,"top":0.7890625},"atlasBounds":{"left":452.5,"bottom":59.5,"right":490.5,"top":115.5}},{"unicode":105,"advance":0.2041015625,"planeBounds":{"left":-0.030517578125,"bottom":-0.0859375,"right":0.235107421875,"top":0.7890625},"atlasBounds":{"left":635.5,"bottom":397.5,"right":652.5,"top":453.5}},{"unicode":106,"advance":0.2041015625,"planeBounds":{"left":-0.108642578125,"bottom":-0.2578125,"right":0.235107421875,"top":0.7890625},"atlasBounds":{"left":635.5,"bottom":600.5,"right":657.5,"top":667.5}},{"unicode":107,"advance":0.4853515625,"planeBounds":{"left":-0.019775390625,"bottom":-0.0859375,"right":0.558349609375,"top":0.7890625},"atlasBounds":{"left":492.5,"bottom":103.5,"right":529.5,"top":159.5}},{"unicode":108,"advance":0.2041015625,"planeBounds":{"left":-0.02294921875,"bottom":-0.0859375,"right":0.22705078125,"top":0.7890625},"atlasBounds":{"left":635.5,"bottom":283.5,"right":651.5,"top":339.5}},{"unicode":109,"advance":0.80322265625,"planeBounds":{"left":-0.02685546875,"bottom":-0.0859375,"right":0.83251953125,"top":0.6015625},"atlasBounds":{"left":0.5,"bottom":50.5,"right":55.5,"top":94.5}},{"unicode":110,"advance":0.52685546875,"planeBounds":{"left":-0.0244140625,"bottom":-0.0859375,"right":0.5537109375,"top":0.6015625},"atlasBounds":{"left":531.5,"bottom":358.5,"right":568.5,"top":402.5}},{"unicode":111,"advance":0.53076171875,"planeBounds":{"left":-0.054931640625,"bottom":-0.1015625,"right":0.585693359375,"top":0.6015625},"atlasBounds":{"left":368.5,"bottom":33.5,"right":409.5,"top":78.5}},{"unicode":112,"advance":0.54931640625,"planeBounds":{"left":-0.025390625,"bottom":-0.2578125,"right":0.599609375,"top":0.6015625},"atlasBounds":{"left":411.5,"bottom":243.5,"right":451.5,"top":298.5}},{"unicode":113,"advance":0.54931640625,"planeBounds":{"left":-0.05029296875,"bottom":-0.2578125,"right":0.57470703125,"top":0.6015625},"atlasBounds":{"left":411.5,"bottom":299.5,"right":451.5,"top":354.5}},{"unicode":114,"advance":0.30810546875,"planeBounds":{"left":-0.0283203125,"bottom":-0.0859375,"right":0.3779296875,"top":0.6015625},"atlasBounds":{"left":606.5,"bottom":401.5,"right":632.5,"top":445.5}},{"unicode":115,"advance":0.46533203125,"planeBounds":{"left":-0.048583984375,"bottom":-0.1015625,"right":0.513916015625,"top":0.6015625},"atlasBounds":{"left":569.5,"bottom":622.5,"right":605.5,"top":667.5}},{"unicode":116,"advance":0.30126953125,"planeBounds":{"left":-0.074462890625,"bottom":-0.0859375,"right":0.347412109375,"top":0.7109375},"atlasBounds":{"left":606.5,"bottom":559.5,"right":633.5,"top":610.5}},{"unicode":117,"advance":0.52685546875,"planeBounds":{"left":-0.026611328125,"bottom":-0.1015625,"right":0.551513671875,"top":0.5859375},"atlasBounds":{"left":531.5,"bottom":564.5,"right":568.5,"top":608.5}},{"unicode":118,"advance":0.48291015625,"planeBounds":{"left":-0.071044921875,"bottom":-0.0859375,"right":0.553955078125,"top":0.5859375},"atlasBounds":{"left":411.5,"bottom":567.5,"right":451.5,"top":610.5}},{"unicode":119,"advance":0.71533203125,"planeBounds":{"left":-0.064453125,"bottom":-0.0859375,"right":0.779296875,"top":0.5859375},"atlasBounds":{"left":0.5,"bottom":6.5,"right":54.5,"top":49.5}},{"unicode":120,"advance":0.46923828125,"planeBounds":{"left":-0.062255859375,"bottom":-0.0859375,"right":0.531494140625,"top":0.5859375},"atlasBounds":{"left":492.5,"bottom":393.5,"right":530.5,"top":436.5}},{"unicode":121,"advance":0.48583984375,"planeBounds":{"left":-0.06982421875,"bottom":-0.2734375,"right":0.55517578125,"top":0.5859375},"atlasBounds":{"left":411.5,"bottom":355.5,"right":451.5,"top":410.5}},{"unicode":122,"advance":0.4677734375,"planeBounds":{"left":-0.03955078125,"bottom":-0.0859375,"right":0.50732421875,"top":0.5859375},"atlasBounds":{"left":569.5,"bottom":462.5,"right":604.5,"top":505.5}},{"unicode":123,"advance":0.322265625,"planeBounds":{"left":-0.0732421875,"bottom":-0.2421875,"right":0.3955078125,"top":0.7890625},"atlasBounds":{"left":569.5,"bottom":17.5,"right":599.5,"top":83.5}},{"unicode":124,"advance":0.322265625,"planeBounds":{"left":0.0439453125,"bottom":-0.2421875,"right":0.2783203125,"top":0.7890625},"atlasBounds":{"left":635.5,"bottom":159.5,"right":650.5,"top":225.5}},{"unicode":125,"advance":0.322265625,"planeBounds":{"left":-0.0732421875,"bottom":-0.2421875,"right":0.3955078125,"top":0.7890625},"atlasBounds":{"left":569.5,"bottom":84.5,"right":599.5,"top":150.5}},{"unicode":126,"advance":0.60498046875,"planeBounds":{"left":-0.02563475215136541,"bottom":0.1640625,"right":0.63061524784863454,"top":0.5234375},"atlasBounds":{"left":323.5,"bottom":2.5,"right":365.5,"top":25.5}},{"unicode":211,"advance":0.7314453125,"planeBounds":{"left":-0.04052734375,"bottom":-0.1015625,"right":0.77197265625,"top":0.9921875},"atlasBounds":{"left":72.5,"bottom":237.5,"right":124.5,"top":307.5}},{"unicode":243,"advance":0.53076171875,"planeBounds":{"left":-0.054931640625,"bottom":-0.1015625,"right":0.585693359375,"top":0.8203125},"atlasBounds":{"left":128.5,"bottom":0.5,"right":169.5,"top":59.5}},{"unicode":260,"advance":0.630859375,"planeBounds":{"left":-0.067626953125,"bottom":-0.2890625,"right":0.697998046875,"top":0.7890625},"atlasBounds":{"left":128.5,"bottom":60.5,"right":177.5,"top":129.5}},{"unicode":261,"advance":0.501953125,"planeBounds":{"left":-0.047119140625,"bottom":-0.2890625,"right":0.531005859375,"top":0.6015625},"atlasBounds":{"left":531.5,"bottom":506.5,"right":568.5,"top":563.5}},{"unicode":262,"advance":0.68603515625,"planeBounds":{"left":-0.044677734375,"bottom":-0.1015625,"right":0.736572265625,"top":0.9921875},"atlasBounds":{"left":128.5,"bottom":367.5,"right":178.5,"top":437.5}},{"unicode":263,"advance":0.5009765625,"planeBounds":{"left":-0.050537109375,"bottom":-0.1015625,"right":0.558837890625,"top":0.8203125},"atlasBounds":{"left":452.5,"bottom":504.5,"right":491.5,"top":563.5}},{"unicode":280,"advance":0.55224609375,"planeBounds":{"left":-0.01025390625,"bottom":-0.2890625,"right":0.58349609375,"top":0.7890625},"atlasBounds":{"left":411.5,"bottom":0.5,"right":449.5,"top":69.5}},{"unicode":281,"advance":0.51220703125,"planeBounds":{"left":-0.048583984375,"bottom":-0.2890625,"right":0.560791015625,"top":0.6015625},"atlasBounds":{"left":452.5,"bottom":610.5,"right":491.5,"top":667.5}},{"unicode":321,"advance":0.5244140625,"planeBounds":{"left":-0.07568359375,"bottom":-0.0859375,"right":0.58056640625,"top":0.7890625},"atlasBounds":{"left":368.5,"bottom":443.5,"right":410.5,"top":499.5}},{"unicode":322,"advance":0.216796875,"planeBounds":{"left":-0.0712890625,"bottom":-0.0859375,"right":0.2880859375,"top":0.7890625},"atlasBounds":{"left":606.5,"bottom":76.5,"right":629.5,"top":132.5}},{"unicode":323,"advance":0.69921875,"planeBounds":{"left":-0.009765625,"bottom":-0.0859375,"right":0.708984375,"top":0.9921875},"atlasBounds":{"left":230.5,"bottom":430.5,"right":276.5,"top":499.5}},{"unicode":324,"advance":0.52685546875,"planeBounds":{"left":-0.0244140625,"bottom":-0.0859375,"right":0.5537109375,"top":0.8203125},"atlasBounds":{"left":531.5,"bottom":609.5,"right":568.5,"top":667.5}},{"unicode":346,"advance":0.59375,"planeBounds":{"left":-0.046630859375,"bottom":-0.1015625,"right":0.640869140625,"top":0.9921875},"atlasBounds":{"left":277.5,"bottom":32.5,"right":321.5,"top":102.5}},{"unicode":347,"advance":0.46533203125,"planeBounds":{"left":-0.048583984375,"bottom":-0.1015625,"right":0.513916015625,"top":0.8203125},"atlasBounds":{"left":531.5,"bottom":76.5,"right":567.5,"top":135.5}},{"unicode":377,"advance":0.61669921875,"planeBounds":{"left":-0.035400390625,"bottom":-0.0859375,"right":0.652099609375,"top":0.9921875},"atlasBounds":{"left":323.5,"bottom":598.5,"right":367.5,"top":667.5}},{"unicode":378,"advance":0.4677734375,"planeBounds":{"left":-0.03955078125,"bottom":-0.0859375,"right":0.50732421875,"top":0.8203125},"atlasBounds":{"left":569.5,"bottom":563.5,"right":604.5,"top":621.5}},{"unicode":379,"advance":0.61669921875,"planeBounds":{"left":-0.035400390625,"bottom":-0.0859375,"right":0.652099609375,"top":0.9765625},"atlasBounds":{"left":323.5,"bottom":529.5,"right":367.5,"top":597.5}},{"unicode":380,"advance":0.4677734375,"planeBounds":{"left":-0.03955078125,"bottom":-0.0859375,"right":0.50732421875,"top":0.7890625},"atlasBounds":{"left":569.5,"bottom":506.5,"right":604.5,"top":562.5}},{"unicode":1025,"advance":0.56201171875,"planeBounds":{"left":-0.00537109375,"bottom":-0.0859375,"right":0.58837890625,"top":0.9765625},"atlasBounds":{"left":492.5,"bottom":551.5,"right":530.5,"top":619.5}},{"unicode":1040,"advance":0.640625,"planeBounds":{"left":-0.0625,"bottom":-0.0859375,"right":0.703125,"top":0.7890625},"atlasBounds":{"left":180.5,"bottom":611.5,"right":229.5,"top":667.5}},{"unicode":1041,"advance":0.61376953125,"planeBounds":{"left":-0.006103515625,"bottom":-0.0859375,"right":0.634521484375,"top":0.7890625},"atlasBounds":{"left":368.5,"bottom":139.5,"right":409.5,"top":195.5}},{"unicode":1042,"advance":0.6142578125,"planeBounds":{"left":-0.01025390625,"bottom":-0.0859375,"right":0.66162109375,"top":0.7890625},"atlasBounds":{"left":323.5,"bottom":233.5,"right":366.5,"top":289.5}},{"unicode":1043,"advance":0.52294921875,"planeBounds":{"left":-0.0068359375,"bottom":-0.0859375,"right":0.5712890625,"top":0.7890625},"atlasBounds":{"left":531.5,"bottom":403.5,"right":568.5,"top":459.5}},{"unicode":1044,"advance":0.72265625,"planeBounds":{"left":-0.06787109375,"bottom":-0.2265625,"right":0.77587890625,"top":0.7890625},"atlasBounds":{"left":72.5,"bottom":487.5,"right":126.5,"top":552.5}},{"unicode":1045,"advance":0.56201171875,"planeBounds":{"left":-0.00537109375,"bottom":-0.0859375,"right":0.58837890625,"top":0.7890625},"atlasBounds":{"left":452.5,"bottom":116.5,"right":490.5,"top":172.5}},{"unicode":1046,"advance":0.96044921875,"planeBounds":{"left":-0.074462890625,"bottom":-0.0859375,"right":1.034912109375,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":611.5,"right":71.5,"top":667.5}},{"unicode":1047,"advance":0.5791015625,"planeBounds":{"left":-0.04638671875,"bottom":-0.1015625,"right":0.62548828125,"top":0.8046875},"atlasBounds":{"left":323.5,"bottom":174.5,"right":366.5,"top":232.5}},{"unicode":1048,"advance":0.708984375,"planeBounds":{"left":-0.0048828125,"bottom":-0.0859375,"right":0.7138671875,"top":0.7890625},"atlasBounds":{"left":230.5,"bottom":373.5,"right":276.5,"top":429.5}},{"unicode":1049,"advance":0.708984375,"planeBounds":{"left":-0.0048828125,"bottom":-0.0859375,"right":0.7138671875,"top":0.9921875},"atlasBounds":{"left":230.5,"bottom":303.5,"right":276.5,"top":372.5}},{"unicode":1050,"advance":0.6220703125,"planeBounds":{"left":-0.009521484375,"bottom":-0.0859375,"right":0.693603515625,"top":0.7890625},"atlasBounds":{"left":277.5,"bottom":554.5,"right":322.5,"top":610.5}},{"unicode":1051,"advance":0.67919921875,"planeBounds":{"left":-0.059814453125,"bottom":-0.0859375,"right":0.690185546875,"top":0.7890625},"atlasBounds":{"left":180.5,"bottom":322.5,"right":228.5,"top":378.5}},{"unicode":1052,"advance":0.8408203125,"planeBounds":{"left":-0.00927734375,"bottom":-0.0859375,"right":0.85009765625,"top":0.7890625},"atlasBounds":{"left":72.5,"bottom":611.5,"right":127.5,"top":667.5}},{"unicode":1053,"advance":0.708984375,"planeBounds":{"left":-0.0048828125,"bottom":-0.0859375,"right":0.7138671875,"top":0.7890625},"atlasBounds":{"left":230.5,"bottom":246.5,"right":276.5,"top":302.5}},{"unicode":1054,"advance":0.7412109375,"planeBounds":{"left":-0.03564453125,"bottom":-0.1015625,"right":0.77685546875,"top":0.8046875},"atlasBounds":{"left":72.5,"bottom":178.5,"right":124.5,"top":236.5}},{"unicode":1055,"advance":0.69873046875,"planeBounds":{"left":-0.010009765625,"bottom":-0.0859375,"right":0.708740234375,"top":0.7890625},"atlasBounds":{"left":230.5,"bottom":189.5,"right":276.5,"top":245.5}},{"unicode":1056,"advance":0.5869140625,"planeBounds":{"left":-0.008544921875,"bottom":-0.0859375,"right":0.632080078125,"top":0.7890625},"atlasBounds":{"left":368.5,"bottom":196.5,"right":409.5,"top":252.5}},{"unicode":1057,"advance":0.69384765625,"planeBounds":{"left":-0.032958984375,"bottom":-0.1015625,"right":0.732666015625,"top":0.8046875},"atlasBounds":{"left":180.5,"bottom":552.5,"right":229.5,"top":610.5}},{"unicode":1058,"advance":0.5908203125,"planeBounds":{"left":-0.05615234375,"bottom":-0.0859375,"right":0.64697265625,"top":0.7890625},"atlasBounds":{"left":277.5,"bottom":497.5,"right":322.5,"top":553.5}},{"unicode":1059,"advance":0.595703125,"planeBounds":{"left":-0.06689453125,"bottom":-0.0859375,"right":0.66748046875,"top":0.7890625},"atlasBounds":{"left":180.5,"bottom":151.5,"right":227.5,"top":207.5}},{"unicode":1060,"advance":0.79248046875,"planeBounds":{"left":-0.041259765625,"bottom":-0.1015625,"right":0.833740234375,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":249.5,"right":56.5,"top":307.5}},{"unicode":1061,"advance":0.64453125,"planeBounds":{"left":-0.052734375,"bottom":-0.0859375,"right":0.697265625,"top":0.7890625},"atlasBounds":{"left":180.5,"bottom":265.5,"right":228.5,"top":321.5}},{"unicode":1062,"advance":0.7431640625,"planeBounds":{"left":-0.0048828125,"bottom":-0.2265625,"right":0.7919921875,"top":0.7890625},"atlasBounds":{"left":128.5,"bottom":556.5,"right":179.5,"top":621.5}},{"unicode":1063,"advance":0.66748046875,"planeBounds":{"left":-0.02392578125,"bottom":-0.0859375,"right":0.67919921875,"top":0.7890625},"atlasBounds":{"left":230.5,"bottom":75.5,"right":275.5,"top":131.5}},{"unicode":1064,"advance":0.919921875,"planeBounds":{"left":-0.0087890625,"bottom":-0.0859375,"right":0.9287109375,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":308.5,"right":60.5,"top":364.5}},{"unicode":1065,"advance":0.9638671875,"planeBounds":{"left":-0.01171875,"bottom":-0.2265625,"right":1.01953125,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":488.5,"right":66.5,"top":553.5}},{"unicode":1066,"advance":0.7138671875,"planeBounds":{"left":-0.052978515625,"bottom":-0.0859375,"right":0.759521484375,"top":0.7890625},"atlasBounds":{"left":72.5,"bottom":121.5,"right":124.5,"top":177.5}},{"unicode":1067,"advance":0.8154296875,"planeBounds":{"left":-0.00634765625,"bottom":-0.0859375,"right":0.82177734375,"top":0.7890625},"atlasBounds":{"left":72.5,"bottom":430.5,"right":125.5,"top":486.5}},{"unicode":1068,"advance":0.5966796875,"planeBounds":{"left":-0.011474609375,"bottom":-0.0859375,"right":0.644775390625,"top":0.7890625},"atlasBounds":{"left":368.5,"bottom":500.5,"right":410.5,"top":556.5}},{"unicode":1069,"advance":0.69384765625,"planeBounds":{"left":-0.038818359375,"bottom":-0.1015625,"right":0.726806640625,"top":0.8046875},"atlasBounds":{"left":180.5,"bottom":493.5,"right":229.5,"top":551.5}},{"unicode":1070,"advance":0.97216796875,"planeBounds":{"left":-0.008056640625,"bottom":-0.1015625,"right":1.007568359375,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":429.5,"right":65.5,"top":487.5}},{"unicode":1071,"advance":0.62841796875,"planeBounds":{"left":-0.052734375,"bottom":-0.0859375,"right":0.634765625,"top":0.7890625},"atlasBounds":{"left":277.5,"bottom":160.5,"right":321.5,"top":216.5}},{"unicode":1072,"advance":0.51123046875,"planeBounds":{"left":-0.042236328125,"bottom":-0.1015625,"right":0.535888671875,"top":0.6015625},"atlasBounds":{"left":531.5,"bottom":460.5,"right":568.5,"top":505.5}},{"unicode":1073,"advance":0.5498046875,"planeBounds":{"left":-0.043212890625,"bottom":-0.1015625,"right":0.597412109375,"top":0.8203125},"atlasBounds":{"left":368.5,"bottom":79.5,"right":409.5,"top":138.5}},{"unicode":1074,"advance":0.490234375,"planeBounds":{"left":-0.025146484375,"bottom":-0.0859375,"right":0.537353515625,"top":0.5859375},"atlasBounds":{"left":531.5,"bottom":136.5,"right":567.5,"top":179.5}},{"unicode":1075,"advance":0.4189453125,"planeBounds":{"left":-0.019287109375,"bottom":-0.0859375,"right":0.465087890625,"top":0.5859375},"atlasBounds":{"left":569.5,"bottom":271.5,"right":600.5,"top":314.5}},{"unicode":1076,"advance":0.57763671875,"planeBounds":{"left":-0.073974609375,"bottom":-0.2265625,"right":0.644775390625,"top":0.5859375},"atlasBounds":{"left":230.5,"bottom":500.5,"right":276.5,"top":552.5}},{"unicode":1077,"advance":0.521484375,"planeBounds":{"left":-0.043701171875,"bottom":-0.1015625,"right":0.565673828125,"top":0.6015625},"atlasBounds":{"left":452.5,"bottom":355.5,"right":491.5,"top":400.5}},{"unicode":1078,"advance":0.74072265625,"planeBounds":{"left":-0.0673828125,"bottom":-0.0859375,"right":0.8076171875,"top":0.5859375},"atlasBounds":{"left":0.5,"bottom":205.5,"right":56.5,"top":248.5}},{"unicode":1079,"advance":0.46484375,"planeBounds":{"left":-0.053466796875,"bottom":-0.1015625,"right":0.509033203125,"top":0.6015625},"atlasBounds":{"left":531.5,"bottom":268.5,"right":567.5,"top":313.5}},{"unicode":1080,"advance":0.544921875,"planeBounds":{"left":-0.0244140625,"bottom":-0.0859375,"right":0.5693359375,"top":0.5859375},"atlasBounds":{"left":452.5,"bottom":173.5,"right":490.5,"top":216.5}},{"unicode":1081,"advance":0.544921875,"planeBounds":{"left":-0.0244140625,"bottom":-0.0859375,"right":0.5693359375,"top":0.8203125},"atlasBounds":{"left":452.5,"bottom":0.5,"right":490.5,"top":58.5}},{"unicode":1082,"advance":0.4873046875,"planeBounds":{"left":-0.021240234375,"bottom":-0.0859375,"right":0.556884765625,"top":0.5859375},"atlasBounds":{"left":531.5,"bottom":314.5,"right":568.5,"top":357.5}},{"unicode":1083,"advance":0.52783203125,"planeBounds":{"left":-0.071533203125,"bottom":-0.0859375,"right":0.553466796875,"top":0.5859375},"atlasBounds":{"left":411.5,"bottom":523.5,"right":451.5,"top":566.5}},{"unicode":1084,"advance":0.6875,"planeBounds":{"left":-0.0234375,"bottom":-0.0859375,"right":0.7109375,"top":0.5859375},"atlasBounds":{"left":180.5,"bottom":107.5,"right":227.5,"top":150.5}},{"unicode":1085,"advance":0.5380859375,"planeBounds":{"left":-0.020263671875,"bottom":-0.0859375,"right":0.557861328125,"top":0.5859375},"atlasBounds":{"left":492.5,"bottom":204.5,"right":529.5,"top":247.5}},{"unicode":1086,"advance":0.5400390625,"planeBounds":{"left":-0.050048828125,"bottom":-0.1015625,"right":0.590576171875,"top":0.6015625},"atlasBounds":{"left":368.5,"bottom":310.5,"right":409.5,"top":355.5}},{"unicode":1087,"advance":0.533203125,"planeBounds":{"left":-0.0224609375,"bottom":-0.0859375,"right":0.5556640625,"top":0.5859375},"atlasBounds":{"left":492.5,"bottom":248.5,"right":529.5,"top":291.5}},{"unicode":1088,"advance":0.55859375,"planeBounds":{"left":-0.0205078125,"bottom":-0.2578125,"right":0.6044921875,"top":0.6015625},"atlasBounds":{"left":411.5,"bottom":467.5,"right":451.5,"top":522.5}},{"unicode":1089,"advance":0.50927734375,"planeBounds":{"left":-0.046630859375,"bottom":-0.1015625,"right":0.562744140625,"top":0.6015625},"atlasBounds":{"left":452.5,"bottom":564.5,"right":491.5,"top":609.5}},{"unicode":1090,"advance":0.4501953125,"planeBounds":{"left":-0.06396484375,"bottom":-0.0859375,"right":0.51416015625,"top":0.5859375},"atlasBounds":{"left":492.5,"bottom":160.5,"right":529.5,"top":203.5}},{"unicode":1091,"advance":0.4951171875,"planeBounds":{"left":-0.06494140625,"bottom":-0.2734375,"right":0.56005859375,"top":0.5859375},"atlasBounds":{"left":411.5,"bottom":411.5,"right":451.5,"top":466.5}},{"unicode":1092,"advance":0.67724609375,"planeBounds":{"left":-0.044189453125,"bottom":-0.2578125,"right":0.721435546875,"top":0.7578125},"atlasBounds":{"left":128.5,"bottom":187.5,"right":177.5,"top":252.5}},{"unicode":1093,"advance":0.478515625,"planeBounds":{"left":-0.057373046875,"bottom":-0.0859375,"right":0.536376953125,"top":0.5859375},"atlasBounds":{"left":492.5,"bottom":292.5,"right":530.5,"top":335.5}},{"unicode":1094,"advance":0.56591796875,"planeBounds":{"left":-0.0234375,"bottom":-0.2265625,"right":0.6328125,"top":0.5859375},"atlasBounds":{"left":368.5,"bottom":557.5,"right":410.5,"top":609.5}},{"unicode":1095,"advance":0.50634765625,"planeBounds":{"left":-0.034423828125,"bottom":-0.0859375,"right":0.528076171875,"top":0.5859375},"atlasBounds":{"left":531.5,"bottom":224.5,"right":567.5,"top":267.5}},{"unicode":1096,"advance":0.74609375,"planeBounds":{"left":-0.025390625,"bottom":-0.0859375,"right":0.771484375,"top":0.5859375},"atlasBounds":{"left":72.5,"bottom":18.5,"right":123.5,"top":61.5}},{"unicode":1097,"advance":0.783203125,"planeBounds":{"left":-0.024169921875,"bottom":-0.2265625,"right":0.850830078125,"top":0.5859375},"atlasBounds":{"left":0.5,"bottom":152.5,"right":56.5,"top":204.5}},{"unicode":1098,"advance":0.55908203125,"planeBounds":{"left":-0.063232421875,"bottom":-0.0859375,"right":0.608642578125,"top":0.5859375},"atlasBounds":{"left":323.5,"bottom":130.5,"right":366.5,"top":173.5}},{"unicode":1099,"advance":0.6376953125,"planeBounds":{"left":-0.02490234375,"bottom":-0.0859375,"right":0.66259765625,"top":0.5859375},"atlasBounds":{"left":277.5,"bottom":276.5,"right":321.5,"top":319.5}},{"unicode":1100,"advance":0.46337890625,"planeBounds":{"left":-0.0205078125,"bottom":-0.0859375,"right":0.5107421875,"top":0.5859375},"atlasBounds":{"left":569.5,"bottom":418.5,"right":603.5,"top":461.5}},{"unicode":1101,"advance":0.50927734375,"planeBounds":{"left":-0.053466796875,"bottom":-0.1015625,"right":0.555908203125,"top":0.6015625},"atlasBounds":{"left":452.5,"bottom":401.5,"right":491.5,"top":446.5}},{"unicode":1102,"advance":0.73046875,"planeBounds":{"left":-0.02099609375,"bottom":-0.1015625,"right":0.77587890625,"top":0.6015625},"atlasBounds":{"left":128.5,"bottom":622.5,"right":179.5,"top":667.5}},{"unicode":1103,"advance":0.48291015625,"planeBounds":{"left":-0.057861328125,"bottom":-0.0859375,"right":0.504638671875,"top":0.5859375},"atlasBounds":{"left":531.5,"bottom":180.5,"right":567.5,"top":223.5}},{"unicode":1105,"advance":0.521484375,"planeBounds":{"left":-0.043701171875,"bottom":-0.1015625,"right":0.565673828125,"top":0.7734375},"atlasBounds":{"left":452.5,"bottom":447.5,"right":491.5,"top":503.5}},{"unicode":1108,"advance":0.50927734375,"planeBounds":{"left":-0.046630859375,"bottom":-0.1015625,"right":0.562744140625,"top":0.6015625},"atlasBounds":{"left":452.5,"bottom":263.5,"right":491.5,"top":308.5}},{"unicode":1110,"advance":0.2138671875,"planeBounds":{"left":-0.025634765625,"bottom":-0.0859375,"right":0.239990234375,"top":0.7890625},"atlasBounds":{"left":635.5,"bottom":340.5,"right":652.5,"top":396.5}},{"unicode":1111,"advance":0.2138671875,"planeBounds":{"left":-0.103759765625,"bottom":-0.0859375,"right":0.318115234375,"top":0.7734375},"atlasBounds":{"left":606.5,"bottom":503.5,"right":633.5,"top":558.5}},{"unicode":1169,"advance":0.4189453125,"planeBounds":{"left":-0.019287109375,"bottom":-0.0859375,"right":0.465087890625,"top":0.7265625},"atlasBounds":{"left":569.5,"bottom":151.5,"right":600.5,"top":203.5}}],"kerning":[]} diff --git a/src/main/resources/assets/evolution/fonts/msdf/regular.png b/src/main/resources/assets/evolution/fonts/msdf/regular.png new file mode 100644 index 0000000..9ffa5b2 Binary files /dev/null and b/src/main/resources/assets/evolution/fonts/msdf/regular.png differ diff --git a/src/main/resources/assets/evolution/fonts/msdf/regular.png.mcmeta b/src/main/resources/assets/evolution/fonts/msdf/regular.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/fonts/msdf/regular.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/fonts/msdf/roundbold.json b/src/main/resources/assets/evolution/fonts/msdf/roundbold.json new file mode 100644 index 0000000..18b16a9 --- /dev/null +++ b/src/main/resources/assets/evolution/fonts/msdf/roundbold.json @@ -0,0 +1 @@ +{"atlas":{"type":"mtsdf","distanceRange":10,"distanceRangeMiddle":0,"size":64,"width":648,"height":648,"yOrigin":"bottom"},"metrics":{"emSize":1,"lineHeight":1.193359375,"ascender":0.9521484375,"descender":-0.2412109375,"underlineY":-0.18310546875,"underlineThickness":0.0927734375},"glyphs":[{"unicode":32,"advance":0.19775390625},{"unicode":33,"advance":0.31640625,"planeBounds":{"left":-0.005859375,"bottom":-0.1015625,"right":0.322265625,"top":0.8046875},"atlasBounds":{"left":621.5,"bottom":589.5,"right":642.5,"top":647.5}},{"unicode":34,"advance":0.45361328125,"planeBounds":{"left":-0.031005859375,"bottom":0.3359375,"right":0.484619140625,"top":0.8046875},"atlasBounds":{"left":521.5,"bottom":34.5,"right":554.5,"top":64.5}},{"unicode":35,"advance":0.638671875,"planeBounds":{"left":-0.08056640625,"bottom":-0.1015625,"right":0.71630859375,"top":0.8046875},"atlasBounds":{"left":302.5,"bottom":517.5,"right":353.5,"top":575.5}},{"unicode":36,"advance":0.64697265625,"planeBounds":{"left":-0.017822265625,"bottom":-0.1640625,"right":0.669677734375,"top":0.8671875},"atlasBounds":{"left":319.5,"bottom":581.5,"right":363.5,"top":647.5}},{"unicode":37,"advance":0.8837890625,"planeBounds":{"left":-0.05712890625,"bottom":-0.1015625,"right":0.94287109375,"top":0.8046875},"atlasBounds":{"left":354.5,"bottom":517.5,"right":418.5,"top":575.5}},{"unicode":38,"advance":0.70166015625,"planeBounds":{"left":-0.05029296875,"bottom":-0.1015625,"right":0.73095703125,"top":0.8046875},"atlasBounds":{"left":419.5,"bottom":517.5,"right":469.5,"top":575.5}},{"unicode":40,"advance":0.3818359375,"planeBounds":{"left":0.00927734375,"bottom":-0.2578125,"right":0.41552734375,"top":0.8046875},"atlasBounds":{"left":78.5,"bottom":579.5,"right":104.5,"top":647.5}},{"unicode":41,"advance":0.3818359375,"planeBounds":{"left":-0.033447265625,"bottom":-0.2578125,"right":0.372802734375,"top":0.8046875},"atlasBounds":{"left":105.5,"bottom":579.5,"right":131.5,"top":647.5}},{"unicode":42,"advance":0.44921875,"planeBounds":{"left":-0.033203125,"bottom":0.2421875,"right":0.482421875,"top":0.8046875},"atlasBounds":{"left":409.5,"bottom":28.5,"right":442.5,"top":64.5}},{"unicode":43,"advance":0.64697265625,"planeBounds":{"left":-0.020263671875,"bottom":-0.0703125,"right":0.667236328125,"top":0.6328125},"atlasBounds":{"left":80.5,"bottom":19.5,"right":124.5,"top":64.5}},{"unicode":44,"advance":0.27783203125,"planeBounds":{"left":-0.030556938214740287,"bottom":-0.2578125,"right":0.28194306178525974,"top":0.2109375},"atlasBounds":{"left":615.5,"bottom":400.5,"right":635.5,"top":430.5}},{"unicode":45,"advance":0.44189453125,"planeBounds":{"left":-0.029052734375,"bottom":0.1328125,"right":0.470947265625,"top":0.4296875},"atlasBounds":{"left":615.5,"bottom":431.5,"right":647.5,"top":450.5}},{"unicode":46,"advance":0.27783203125,"planeBounds":{"left":-0.02490234375,"bottom":-0.0859375,"right":0.30322265625,"top":0.2421875},"atlasBounds":{"left":621.5,"bottom":43.5,"right":642.5,"top":64.5}},{"unicode":47,"advance":0.3818359375,"planeBounds":{"left":-0.067138671875,"bottom":-0.2578125,"right":0.448486328125,"top":0.8046875},"atlasBounds":{"left":132.5,"bottom":579.5,"right":165.5,"top":647.5}},{"unicode":48,"advance":0.65576171875,"planeBounds":{"left":-0.039306640625,"bottom":-0.1015625,"right":0.695068359375,"top":0.8046875},"atlasBounds":{"left":470.5,"bottom":517.5,"right":517.5,"top":575.5}},{"unicode":49,"advance":0.47998046875,"planeBounds":{"left":-0.0498046875,"bottom":-0.1015625,"right":0.4501953125,"top":0.8046875},"atlasBounds":{"left":518.5,"bottom":517.5,"right":550.5,"top":575.5}},{"unicode":50,"advance":0.60302734375,"planeBounds":{"left":-0.03466796875,"bottom":-0.0859375,"right":0.65283203125,"top":0.8046875},"atlasBounds":{"left":174.5,"bottom":275.5,"right":218.5,"top":332.5}},{"unicode":51,"advance":0.6298828125,"planeBounds":{"left":-0.033447265625,"bottom":-0.1015625,"right":0.669677734375,"top":0.8046875},"atlasBounds":{"left":551.5,"bottom":517.5,"right":596.5,"top":575.5}},{"unicode":52,"advance":0.6474609375,"planeBounds":{"left":-0.044677734375,"bottom":-0.1015625,"right":0.705322265625,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":451.5,"right":48.5,"top":509.5}},{"unicode":53,"advance":0.625,"planeBounds":{"left":-0.015380859375,"bottom":-0.1015625,"right":0.672119140625,"top":0.7890625},"atlasBounds":{"left":219.5,"bottom":275.5,"right":263.5,"top":332.5}},{"unicode":54,"advance":0.64306640625,"planeBounds":{"left":-0.04443359375,"bottom":-0.1015625,"right":0.68994140625,"top":0.8046875},"atlasBounds":{"left":49.5,"bottom":451.5,"right":96.5,"top":509.5}},{"unicode":55,"advance":0.572265625,"planeBounds":{"left":-0.0537109375,"bottom":-0.1015625,"right":0.6181640625,"top":0.7890625},"atlasBounds":{"left":264.5,"bottom":275.5,"right":307.5,"top":332.5}},{"unicode":56,"advance":0.65234375,"planeBounds":{"left":-0.041015625,"bottom":-0.1015625,"right":0.693359375,"top":0.8046875},"atlasBounds":{"left":142.5,"bottom":451.5,"right":189.5,"top":509.5}},{"unicode":57,"advance":0.64501953125,"planeBounds":{"left":-0.0458984375,"bottom":-0.1015625,"right":0.6884765625,"top":0.8046875},"atlasBounds":{"left":190.5,"bottom":451.5,"right":237.5,"top":509.5}},{"unicode":58,"advance":0.27783203125,"planeBounds":{"left":-0.02490234375,"bottom":-0.0859375,"right":0.30322265625,"top":0.5859375},"atlasBounds":{"left":297.5,"bottom":21.5,"right":318.5,"top":64.5}},{"unicode":59,"advance":0.27783203125,"planeBounds":{"left":-0.032021781964740287,"bottom":-0.2578125,"right":0.29610321803525974,"top":0.5859375},"atlasBounds":{"left":378.5,"bottom":161.5,"right":399.5,"top":215.5}},{"unicode":60,"advance":0.64697265625,"planeBounds":{"left":-0.0146484375,"bottom":-0.0390625,"right":0.6728515625,"top":0.6171875},"atlasBounds":{"left":364.5,"bottom":22.5,"right":408.5,"top":64.5}},{"unicode":61,"advance":0.64697265625,"planeBounds":{"left":-0.012451171875,"bottom":0.0234375,"right":0.659423828125,"top":0.5390625},"atlasBounds":{"left":477.5,"bottom":31.5,"right":520.5,"top":64.5}},{"unicode":62,"advance":0.64697265625,"planeBounds":{"left":-0.02587890625,"bottom":-0.0390625,"right":0.66162109375,"top":0.6171875},"atlasBounds":{"left":319.5,"bottom":22.5,"right":363.5,"top":64.5}},{"unicode":63,"advance":0.53369140625,"planeBounds":{"left":-0.04736328125,"bottom":-0.1015625,"right":0.57763671875,"top":0.7890625},"atlasBounds":{"left":400.5,"bottom":275.5,"right":440.5,"top":332.5}},{"unicode":64,"advance":0.8837890625,"planeBounds":{"left":-0.041748046875,"bottom":-0.1953125,"right":0.927001953125,"top":0.7890625},"atlasBounds":{"left":58.5,"bottom":512.5,"right":120.5,"top":575.5}},{"unicode":65,"advance":0.68994140625,"planeBounds":{"left":-0.053466796875,"bottom":-0.1015625,"right":0.743408203125,"top":0.8046875},"atlasBounds":{"left":360.5,"bottom":451.5,"right":411.5,"top":509.5}},{"unicode":66,"advance":0.6396484375,"planeBounds":{"left":-0.02294921875,"bottom":-0.0859375,"right":0.69580078125,"top":0.7890625},"atlasBounds":{"left":99.5,"bottom":159.5,"right":145.5,"top":215.5}},{"unicode":67,"advance":0.71240234375,"planeBounds":{"left":-0.047119140625,"bottom":-0.1015625,"right":0.749755859375,"top":0.8046875},"atlasBounds":{"left":472.5,"bottom":451.5,"right":523.5,"top":509.5}},{"unicode":68,"advance":0.69970703125,"planeBounds":{"left":-0.021728515625,"bottom":-0.0859375,"right":0.743896484375,"top":0.7890625},"atlasBounds":{"left":146.5,"bottom":159.5,"right":195.5,"top":215.5}},{"unicode":69,"advance":0.5732421875,"planeBounds":{"left":-0.02392578125,"bottom":-0.0859375,"right":0.61669921875,"top":0.7890625},"atlasBounds":{"left":196.5,"bottom":159.5,"right":237.5,"top":215.5}},{"unicode":70,"advance":0.54833984375,"planeBounds":{"left":-0.026611328125,"bottom":-0.1015625,"right":0.614013671875,"top":0.7890625},"atlasBounds":{"left":531.5,"bottom":275.5,"right":572.5,"top":332.5}},{"unicode":71,"advance":0.72705078125,"planeBounds":{"left":-0.043701171875,"bottom":-0.1015625,"right":0.768798828125,"top":0.8046875},"atlasBounds":{"left":524.5,"bottom":451.5,"right":576.5,"top":509.5}},{"unicode":72,"advance":0.7294921875,"planeBounds":{"left":-0.02587890625,"bottom":-0.1015625,"right":0.75537109375,"top":0.8046875},"atlasBounds":{"left":597.5,"bottom":517.5,"right":647.5,"top":575.5}},{"unicode":73,"advance":0.2646484375,"planeBounds":{"left":-0.02392578125,"bottom":-0.1015625,"right":0.28857421875,"top":0.8046875},"atlasBounds":{"left":577.5,"bottom":451.5,"right":597.5,"top":509.5}},{"unicode":74,"advance":0.55810546875,"planeBounds":{"left":-0.06298828125,"bottom":-0.1015625,"right":0.57763671875,"top":0.8046875},"atlasBounds":{"left":98.5,"bottom":392.5,"right":139.5,"top":450.5}},{"unicode":75,"advance":0.66064453125,"planeBounds":{"left":-0.022216796875,"bottom":-0.1015625,"right":0.712158203125,"top":0.8046875},"atlasBounds":{"left":140.5,"bottom":392.5,"right":187.5,"top":450.5}},{"unicode":76,"advance":0.54296875,"planeBounds":{"left":-0.021728515625,"bottom":-0.0859375,"right":0.603271484375,"top":0.8046875},"atlasBounds":{"left":96.5,"bottom":216.5,"right":136.5,"top":273.5}},{"unicode":77,"advance":0.86328125,"planeBounds":{"left":-0.021484375,"bottom":-0.1015625,"right":0.884765625,"top":0.8046875},"atlasBounds":{"left":188.5,"bottom":392.5,"right":246.5,"top":450.5}},{"unicode":78,"advance":0.71435546875,"planeBounds":{"left":-0.025634765625,"bottom":-0.1015625,"right":0.739990234375,"top":0.8046875},"atlasBounds":{"left":598.5,"bottom":451.5,"right":647.5,"top":509.5}},{"unicode":79,"advance":0.75244140625,"planeBounds":{"left":-0.04541015625,"bottom":-0.1015625,"right":0.79833984375,"top":0.8046875},"atlasBounds":{"left":299.5,"bottom":392.5,"right":353.5,"top":450.5}},{"unicode":80,"advance":0.61767578125,"planeBounds":{"left":-0.019775390625,"bottom":-0.1015625,"right":0.667724609375,"top":0.7890625},"atlasBounds":{"left":276.5,"bottom":216.5,"right":320.5,"top":273.5}},{"unicode":81,"advance":0.75244140625,"planeBounds":{"left":-0.045654296875,"bottom":-0.1640625,"right":0.798095703125,"top":0.8046875},"atlasBounds":{"left":121.5,"bottom":513.5,"right":175.5,"top":575.5}},{"unicode":82,"advance":0.64013671875,"planeBounds":{"left":-0.021240234375,"bottom":-0.1015625,"right":0.681884765625,"top":0.7890625},"atlasBounds":{"left":354.5,"bottom":216.5,"right":399.5,"top":273.5}},{"unicode":83,"advance":0.63134765625,"planeBounds":{"left":-0.03857421875,"bottom":-0.1015625,"right":0.68017578125,"top":0.8046875},"atlasBounds":{"left":354.5,"bottom":392.5,"right":400.5,"top":450.5}},{"unicode":84,"advance":0.6015625,"planeBounds":{"left":-0.06640625,"bottom":-0.1015625,"right":0.66796875,"top":0.7890625},"atlasBounds":{"left":453.5,"bottom":216.5,"right":500.5,"top":273.5}},{"unicode":85,"advance":0.70751953125,"planeBounds":{"left":-0.021240234375,"bottom":-0.1015625,"right":0.728759765625,"top":0.8046875},"atlasBounds":{"left":566.5,"bottom":392.5,"right":614.5,"top":450.5}},{"unicode":86,"advance":0.67822265625,"planeBounds":{"left":-0.059326171875,"bottom":-0.1015625,"right":0.737548828125,"top":0.8046875},"atlasBounds":{"left":258.5,"bottom":333.5,"right":309.5,"top":391.5}},{"unicode":87,"advance":0.96533203125,"planeBounds":{"left":-0.04833984375,"bottom":-0.1015625,"right":1.01416015625,"top":0.8046875},"atlasBounds":{"left":310.5,"bottom":333.5,"right":378.5,"top":391.5}},{"unicode":88,"advance":0.685546875,"planeBounds":{"left":-0.0322265625,"bottom":-0.1015625,"right":0.7177734375,"top":0.8046875},"atlasBounds":{"left":379.5,"bottom":333.5,"right":427.5,"top":391.5}},{"unicode":89,"advance":0.6650390625,"planeBounds":{"left":-0.050048828125,"bottom":-0.1015625,"right":0.715576171875,"top":0.8046875},"atlasBounds":{"left":480.5,"bottom":333.5,"right":529.5,"top":391.5}},{"unicode":90,"advance":0.630859375,"planeBounds":{"left":-0.03955078125,"bottom":-0.0859375,"right":0.67919921875,"top":0.7890625},"atlasBounds":{"left":238.5,"bottom":159.5,"right":284.5,"top":215.5}},{"unicode":91,"advance":0.3818359375,"planeBounds":{"left":0.01806640625,"bottom":-0.2421875,"right":0.45556640625,"top":0.7890625},"atlasBounds":{"left":364.5,"bottom":581.5,"right":392.5,"top":647.5}},{"unicode":92,"advance":0.3818359375,"planeBounds":{"left":-0.066650390625,"bottom":-0.2578125,"right":0.448974609375,"top":0.8046875},"atlasBounds":{"left":166.5,"bottom":579.5,"right":199.5,"top":647.5}},{"unicode":93,"advance":0.3818359375,"planeBounds":{"left":-0.073486328125,"bottom":-0.2421875,"right":0.364013671875,"top":0.7890625},"atlasBounds":{"left":393.5,"bottom":581.5,"right":421.5,"top":647.5}},{"unicode":94,"advance":0.44921875,"planeBounds":{"left":-0.033203125,"bottom":0.2578125,"right":0.482421875,"top":0.7734375},"atlasBounds":{"left":443.5,"bottom":31.5,"right":476.5,"top":64.5}},{"unicode":95,"advance":0.41845703125,"planeBounds":{"left":-0.111083984375,"bottom":-0.2421875,"right":0.529541015625,"top":0.0390625},"atlasBounds":{"left":0.5,"bottom":0.5,"right":41.5,"top":18.5}},{"unicode":96,"advance":0.4931640625,"planeBounds":{"left":0.087646484375,"bottom":0.5234375,"right":0.415771484375,"top":0.8828125},"atlasBounds":{"left":599.5,"bottom":41.5,"right":620.5,"top":64.5}},{"unicode":97,"advance":0.54736328125,"planeBounds":{"left":-0.056396484375,"bottom":-0.1015625,"right":0.584228515625,"top":0.6171875},"atlasBounds":{"left":226.5,"bottom":65.5,"right":267.5,"top":111.5}},{"unicode":98,"advance":0.59716796875,"planeBounds":{"left":-0.033935546875,"bottom":-0.1015625,"right":0.653564453125,"top":0.8046875},"atlasBounds":{"left":530.5,"bottom":333.5,"right":574.5,"top":391.5}},{"unicode":99,"advance":0.544921875,"planeBounds":{"left":-0.056884765625,"bottom":-0.1015625,"right":0.599365234375,"top":0.6171875},"atlasBounds":{"left":353.5,"bottom":65.5,"right":395.5,"top":111.5}},{"unicode":100,"advance":0.595703125,"planeBounds":{"left":-0.056640625,"bottom":-0.1015625,"right":0.630859375,"top":0.8046875},"atlasBounds":{"left":575.5,"bottom":333.5,"right":619.5,"top":391.5}},{"unicode":101,"advance":0.55517578125,"planeBounds":{"left":-0.05810546875,"bottom":-0.1015625,"right":0.61376953125,"top":0.6171875},"atlasBounds":{"left":43.5,"bottom":112.5,"right":86.5,"top":158.5}},{"unicode":102,"advance":0.35595703125,"planeBounds":{"left":-0.076904296875,"bottom":-0.1015625,"right":0.423095703125,"top":0.7890625},"atlasBounds":{"left":321.5,"bottom":216.5,"right":353.5,"top":273.5}},{"unicode":103,"advance":0.59326171875,"planeBounds":{"left":-0.056396484375,"bottom":-0.2890625,"right":0.631103515625,"top":0.6171875},"atlasBounds":{"left":0.5,"bottom":274.5,"right":44.5,"top":332.5}},{"unicode":104,"advance":0.58447265625,"planeBounds":{"left":-0.033203125,"bottom":-0.1015625,"right":0.623046875,"top":0.8046875},"atlasBounds":{"left":45.5,"bottom":274.5,"right":87.5,"top":332.5}},{"unicode":105,"advance":0.23974609375,"planeBounds":{"left":-0.0361328125,"bottom":-0.1015625,"right":0.2763671875,"top":0.8203125},"atlasBounds":{"left":281.5,"bottom":516.5,"right":301.5,"top":575.5}},{"unicode":106,"advance":0.23974609375,"planeBounds":{"left":-0.1298828125,"bottom":-0.2734375,"right":0.2763671875,"top":0.8203125},"atlasBounds":{"left":51.5,"bottom":577.5,"right":77.5,"top":647.5}},{"unicode":107,"advance":0.5380859375,"planeBounds":{"left":-0.03271484375,"bottom":-0.1015625,"right":0.59228515625,"top":0.8046875},"atlasBounds":{"left":88.5,"bottom":274.5,"right":128.5,"top":332.5}},{"unicode":108,"advance":0.2421875,"planeBounds":{"left":-0.03515625,"bottom":-0.1015625,"right":0.27734375,"top":0.8046875},"atlasBounds":{"left":620.5,"bottom":333.5,"right":640.5,"top":391.5}},{"unicode":109,"advance":0.86328125,"planeBounds":{"left":-0.035888671875,"bottom":-0.1015625,"right":0.901611328125,"top":0.6171875},"atlasBounds":{"left":452.5,"bottom":112.5,"right":512.5,"top":158.5}},{"unicode":110,"advance":0.576171875,"planeBounds":{"left":-0.038818359375,"bottom":-0.1015625,"right":0.617431640625,"top":0.6171875},"atlasBounds":{"left":513.5,"bottom":112.5,"right":555.5,"top":158.5}},{"unicode":111,"advance":0.57275390625,"planeBounds":{"left":-0.05712890625,"bottom":-0.1015625,"right":0.63037109375,"top":0.6171875},"atlasBounds":{"left":181.5,"bottom":65.5,"right":225.5,"top":111.5}},{"unicode":112,"advance":0.59326171875,"planeBounds":{"left":-0.037353515625,"bottom":-0.2734375,"right":0.650146484375,"top":0.6171875},"atlasBounds":{"left":486.5,"bottom":275.5,"right":530.5,"top":332.5}},{"unicode":113,"advance":0.59326171875,"planeBounds":{"left":-0.056640625,"bottom":-0.2734375,"right":0.630859375,"top":0.6171875},"atlasBounds":{"left":441.5,"bottom":275.5,"right":485.5,"top":332.5}},{"unicode":114,"advance":0.36376953125,"planeBounds":{"left":-0.039306640625,"bottom":-0.1015625,"right":0.445068359375,"top":0.6171875},"atlasBounds":{"left":437.5,"bottom":65.5,"right":468.5,"top":111.5}},{"unicode":115,"advance":0.51513671875,"planeBounds":{"left":-0.05224609375,"bottom":-0.1015625,"right":0.57275390625,"top":0.6171875},"atlasBounds":{"left":396.5,"bottom":65.5,"right":436.5,"top":111.5}},{"unicode":116,"advance":0.35546875,"planeBounds":{"left":-0.08203125,"bottom":-0.0859375,"right":0.41796875,"top":0.7421875},"atlasBounds":{"left":498.5,"bottom":162.5,"right":530.5,"top":215.5}},{"unicode":117,"advance":0.576171875,"planeBounds":{"left":-0.041259765625,"bottom":-0.1015625,"right":0.614990234375,"top":0.6171875},"atlasBounds":{"left":268.5,"bottom":65.5,"right":310.5,"top":111.5}},{"unicode":118,"advance":0.52783203125,"planeBounds":{"left":-0.063720703125,"bottom":-0.1015625,"right":0.592529296875,"top":0.6171875},"atlasBounds":{"left":600.5,"bottom":112.5,"right":642.5,"top":158.5}},{"unicode":119,"advance":0.7900390625,"planeBounds":{"left":-0.065673828125,"bottom":-0.1015625,"right":0.856201171875,"top":0.6171875},"atlasBounds":{"left":531.5,"bottom":169.5,"right":590.5,"top":215.5}},{"unicode":120,"advance":0.52783203125,"planeBounds":{"left":-0.049560546875,"bottom":-0.1015625,"right":0.575439453125,"top":0.6171875},"atlasBounds":{"left":252.5,"bottom":112.5,"right":292.5,"top":158.5}},{"unicode":121,"advance":0.54296875,"planeBounds":{"left":-0.0634765625,"bottom":-0.2734375,"right":0.6083984375,"top":0.6171875},"atlasBounds":{"left":232.5,"bottom":216.5,"right":275.5,"top":273.5}},{"unicode":122,"advance":0.50537109375,"planeBounds":{"left":-0.0498046875,"bottom":-0.0859375,"right":0.5595703125,"top":0.6015625},"atlasBounds":{"left":216.5,"bottom":20.5,"right":255.5,"top":64.5}},{"unicode":123,"advance":0.3818359375,"planeBounds":{"left":-0.07421875,"bottom":-0.2421875,"right":0.47265625,"top":0.7890625},"atlasBounds":{"left":422.5,"bottom":581.5,"right":457.5,"top":647.5}},{"unicode":124,"advance":0.3818359375,"planeBounds":{"left":0.042724609375,"bottom":-0.2578125,"right":0.339599609375,"top":0.8046875},"atlasBounds":{"left":200.5,"bottom":579.5,"right":219.5,"top":647.5}},{"unicode":125,"advance":0.3818359375,"planeBounds":{"left":-0.09033203125,"bottom":-0.2421875,"right":0.45654296875,"top":0.7890625},"atlasBounds":{"left":458.5,"bottom":581.5,"right":493.5,"top":647.5}},{"unicode":126,"advance":0.64697265625,"planeBounds":{"left":-0.01220703125,"bottom":0.0859375,"right":0.65966796875,"top":0.4765625},"atlasBounds":{"left":555.5,"bottom":39.5,"right":598.5,"top":64.5}},{"unicode":1025,"advance":0.58349609375,"planeBounds":{"left":-0.01904296875,"bottom":-0.0859375,"right":0.62158203125,"top":0.9765625},"atlasBounds":{"left":220.5,"bottom":579.5,"right":261.5,"top":647.5}},{"unicode":1040,"advance":0.69970703125,"planeBounds":{"left":-0.048583984375,"bottom":-0.1015625,"right":0.748291015625,"top":0.8046875},"atlasBounds":{"left":428.5,"bottom":333.5,"right":479.5,"top":391.5}},{"unicode":1041,"advance":0.63818359375,"planeBounds":{"left":-0.021484375,"bottom":-0.0859375,"right":0.681640625,"top":0.7890625},"atlasBounds":{"left":332.5,"bottom":159.5,"right":377.5,"top":215.5}},{"unicode":1042,"advance":0.6494140625,"planeBounds":{"left":-0.01806640625,"bottom":-0.0859375,"right":0.70068359375,"top":0.7890625},"atlasBounds":{"left":285.5,"bottom":159.5,"right":331.5,"top":215.5}},{"unicode":1043,"advance":0.54833984375,"planeBounds":{"left":-0.017822265625,"bottom":-0.1015625,"right":0.607177734375,"top":0.7890625},"atlasBounds":{"left":545.5,"bottom":216.5,"right":585.5,"top":273.5}},{"unicode":1044,"advance":0.76220703125,"planeBounds":{"left":-0.06787109375,"bottom":-0.2265625,"right":0.82275390625,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":510.5,"right":57.5,"top":575.5}},{"unicode":1045,"advance":0.58349609375,"planeBounds":{"left":-0.01904296875,"bottom":-0.0859375,"right":0.62158203125,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":159.5,"right":41.5,"top":215.5}},{"unicode":1046,"advance":1.0078125,"planeBounds":{"left":-0.03564453125,"bottom":-0.1015625,"right":1.04248046875,"top":0.8046875},"atlasBounds":{"left":97.5,"bottom":333.5,"right":166.5,"top":391.5}},{"unicode":1047,"advance":0.6279296875,"planeBounds":{"left":-0.031982421875,"bottom":-0.1015625,"right":0.671142578125,"top":0.8046875},"atlasBounds":{"left":51.5,"bottom":333.5,"right":96.5,"top":391.5}},{"unicode":1048,"advance":0.74169921875,"planeBounds":{"left":-0.019775390625,"bottom":-0.1015625,"right":0.761474609375,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":333.5,"right":50.5,"top":391.5}},{"unicode":1049,"advance":0.74169921875,"planeBounds":{"left":-0.019775390625,"bottom":-0.1015625,"right":0.761474609375,"top":1.0078125},"atlasBounds":{"left":0.5,"bottom":576.5,"right":50.5,"top":647.5}},{"unicode":1050,"advance":0.673828125,"planeBounds":{"left":-0.015380859375,"bottom":-0.1015625,"right":0.703369140625,"top":0.8046875},"atlasBounds":{"left":211.5,"bottom":333.5,"right":257.5,"top":391.5}},{"unicode":1051,"advance":0.71728515625,"planeBounds":{"left":-0.074951171875,"bottom":-0.1015625,"right":0.737548828125,"top":0.7890625},"atlasBounds":{"left":400.5,"bottom":216.5,"right":452.5,"top":273.5}},{"unicode":1052,"advance":0.873046875,"planeBounds":{"left":-0.0166015625,"bottom":-0.1015625,"right":0.8896484375,"top":0.8046875},"atlasBounds":{"left":507.5,"bottom":392.5,"right":565.5,"top":450.5}},{"unicode":1053,"advance":0.7392578125,"planeBounds":{"left":-0.02099609375,"bottom":-0.1015625,"right":0.76025390625,"top":0.8046875},"atlasBounds":{"left":456.5,"bottom":392.5,"right":506.5,"top":450.5}},{"unicode":1054,"advance":0.76220703125,"planeBounds":{"left":-0.04052734375,"bottom":-0.1015625,"right":0.80322265625,"top":0.8046875},"atlasBounds":{"left":401.5,"bottom":392.5,"right":455.5,"top":450.5}},{"unicode":1055,"advance":0.73193359375,"planeBounds":{"left":-0.0166015625,"bottom":-0.1015625,"right":0.7490234375,"top":0.7890625},"atlasBounds":{"left":182.5,"bottom":216.5,"right":231.5,"top":273.5}},{"unicode":1056,"advance":0.63232421875,"planeBounds":{"left":-0.014892578125,"bottom":-0.1015625,"right":0.672607421875,"top":0.7890625},"atlasBounds":{"left":137.5,"bottom":216.5,"right":181.5,"top":273.5}},{"unicode":1057,"advance":0.72119140625,"planeBounds":{"left":-0.042236328125,"bottom":-0.1015625,"right":0.754638671875,"top":0.8046875},"atlasBounds":{"left":247.5,"bottom":392.5,"right":298.5,"top":450.5}},{"unicode":1058,"advance":0.611328125,"planeBounds":{"left":-0.0615234375,"bottom":-0.1015625,"right":0.6728515625,"top":0.7890625},"atlasBounds":{"left":48.5,"bottom":216.5,"right":95.5,"top":273.5}},{"unicode":1059,"advance":0.65234375,"planeBounds":{"left":-0.039794921875,"bottom":-0.0859375,"right":0.694580078125,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":216.5,"right":47.5,"top":273.5}},{"unicode":1060,"advance":0.8623046875,"planeBounds":{"left":-0.04541015625,"bottom":-0.1171875,"right":0.90771484375,"top":0.8203125},"atlasBounds":{"left":219.5,"bottom":515.5,"right":280.5,"top":575.5}},{"unicode":1061,"advance":0.6953125,"planeBounds":{"left":-0.02734375,"bottom":-0.1015625,"right":0.72265625,"top":0.8046875},"atlasBounds":{"left":49.5,"bottom":392.5,"right":97.5,"top":450.5}},{"unicode":1062,"advance":0.77587890625,"planeBounds":{"left":-0.0185546875,"bottom":-0.2265625,"right":0.8408203125,"top":0.8046875},"atlasBounds":{"left":494.5,"bottom":581.5,"right":549.5,"top":647.5}},{"unicode":1063,"advance":0.70166015625,"planeBounds":{"left":-0.029541015625,"bottom":-0.1015625,"right":0.720458984375,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":392.5,"right":48.5,"top":450.5}},{"unicode":1064,"advance":0.9697265625,"planeBounds":{"left":-0.01513671875,"bottom":-0.0859375,"right":0.98486328125,"top":0.8046875},"atlasBounds":{"left":573.5,"bottom":275.5,"right":637.5,"top":332.5}},{"unicode":1065,"advance":1.013671875,"planeBounds":{"left":-0.016845703125,"bottom":-0.2265625,"right":1.076904296875,"top":0.8046875},"atlasBounds":{"left":550.5,"bottom":581.5,"right":620.5,"top":647.5}},{"unicode":1066,"advance":0.76025390625,"planeBounds":{"left":-0.064697265625,"bottom":-0.0859375,"right":0.810302734375,"top":0.7890625},"atlasBounds":{"left":42.5,"bottom":159.5,"right":98.5,"top":215.5}},{"unicode":1067,"advance":0.88720703125,"planeBounds":{"left":-0.01708984375,"bottom":-0.1015625,"right":0.90478515625,"top":0.8046875},"atlasBounds":{"left":412.5,"bottom":451.5,"right":471.5,"top":509.5}},{"unicode":1068,"advance":0.6318359375,"planeBounds":{"left":-0.020263671875,"bottom":-0.0859375,"right":0.682861328125,"top":0.8046875},"atlasBounds":{"left":354.5,"bottom":275.5,"right":399.5,"top":332.5}},{"unicode":1069,"advance":0.72119140625,"planeBounds":{"left":-0.032958984375,"bottom":-0.1015625,"right":0.763916015625,"top":0.8046875},"atlasBounds":{"left":308.5,"bottom":451.5,"right":359.5,"top":509.5}},{"unicode":1070,"advance":1.02001953125,"planeBounds":{"left":-0.01806640625,"bottom":-0.1015625,"right":1.06005859375,"top":0.8046875},"atlasBounds":{"left":238.5,"bottom":451.5,"right":307.5,"top":509.5}},{"unicode":1071,"advance":0.66845703125,"planeBounds":{"left":-0.01904296875,"bottom":-0.1015625,"right":0.68408203125,"top":0.7890625},"atlasBounds":{"left":308.5,"bottom":275.5,"right":353.5,"top":332.5}},{"unicode":1072,"advance":0.556640625,"planeBounds":{"left":-0.051513671875,"bottom":-0.1015625,"right":0.589111328125,"top":0.6171875},"atlasBounds":{"left":311.5,"bottom":65.5,"right":352.5,"top":111.5}},{"unicode":1073,"advance":0.5908203125,"planeBounds":{"left":-0.046875,"bottom":-0.1015625,"right":0.640625,"top":0.8046875},"atlasBounds":{"left":97.5,"bottom":451.5,"right":141.5,"top":509.5}},{"unicode":1074,"advance":0.54541015625,"planeBounds":{"left":-0.03125,"bottom":-0.0859375,"right":0.59375,"top":0.6015625},"atlasBounds":{"left":256.5,"bottom":20.5,"right":296.5,"top":64.5}},{"unicode":1075,"advance":0.44677734375,"planeBounds":{"left":-0.027587890625,"bottom":-0.1015625,"right":0.503662109375,"top":0.6015625},"atlasBounds":{"left":45.5,"bottom":19.5,"right":79.5,"top":64.5}},{"unicode":1076,"advance":0.6337890625,"planeBounds":{"left":-0.072998046875,"bottom":-0.2265625,"right":0.708251953125,"top":0.6015625},"atlasBounds":{"left":447.5,"bottom":162.5,"right":497.5,"top":215.5}},{"unicode":1077,"advance":0.564453125,"planeBounds":{"left":-0.05322265625,"bottom":-0.1015625,"right":0.61865234375,"top":0.6171875},"atlasBounds":{"left":556.5,"bottom":112.5,"right":599.5,"top":158.5}},{"unicode":1078,"advance":0.8154296875,"planeBounds":{"left":-0.04638671875,"bottom":-0.1015625,"right":0.85986328125,"top":0.6171875},"atlasBounds":{"left":393.5,"bottom":112.5,"right":451.5,"top":158.5}},{"unicode":1079,"advance":0.52783203125,"planeBounds":{"left":-0.0380859375,"bottom":-0.1015625,"right":0.5712890625,"top":0.6171875},"atlasBounds":{"left":212.5,"bottom":112.5,"right":251.5,"top":158.5}},{"unicode":1080,"advance":0.59326171875,"planeBounds":{"left":-0.03125,"bottom":-0.1015625,"right":0.625,"top":0.6171875},"atlasBounds":{"left":129.5,"bottom":112.5,"right":171.5,"top":158.5}},{"unicode":1081,"advance":0.59326171875,"planeBounds":{"left":-0.03125,"bottom":-0.1015625,"right":0.625,"top":0.8671875},"atlasBounds":{"left":176.5,"bottom":513.5,"right":218.5,"top":575.5}},{"unicode":1082,"advance":0.5517578125,"planeBounds":{"left":-0.02734375,"bottom":-0.1015625,"right":0.58203125,"top":0.6171875},"atlasBounds":{"left":172.5,"bottom":112.5,"right":211.5,"top":158.5}},{"unicode":1083,"advance":0.57861328125,"planeBounds":{"left":-0.07861328125,"bottom":-0.1015625,"right":0.60888671875,"top":0.6015625},"atlasBounds":{"left":0.5,"bottom":19.5,"right":44.5,"top":64.5}},{"unicode":1084,"advance":0.74658203125,"planeBounds":{"left":-0.032958984375,"bottom":-0.1015625,"right":0.779541015625,"top":0.6171875},"atlasBounds":{"left":591.5,"bottom":169.5,"right":643.5,"top":215.5}},{"unicode":1085,"advance":0.587890625,"planeBounds":{"left":-0.0341796875,"bottom":-0.1015625,"right":0.6220703125,"top":0.6171875},"atlasBounds":{"left":0.5,"bottom":112.5,"right":42.5,"top":158.5}},{"unicode":1086,"advance":0.58203125,"planeBounds":{"left":-0.05224609375,"bottom":-0.1015625,"right":0.63525390625,"top":0.6171875},"atlasBounds":{"left":136.5,"bottom":65.5,"right":180.5,"top":111.5}},{"unicode":1087,"advance":0.5830078125,"planeBounds":{"left":-0.02880859375,"bottom":-0.1015625,"right":0.61181640625,"top":0.6015625},"atlasBounds":{"left":125.5,"bottom":19.5,"right":166.5,"top":64.5}},{"unicode":1088,"advance":0.60400390625,"planeBounds":{"left":-0.032470703125,"bottom":-0.2734375,"right":0.655029296875,"top":0.6171875},"atlasBounds":{"left":129.5,"bottom":275.5,"right":173.5,"top":332.5}},{"unicode":1089,"advance":0.55029296875,"planeBounds":{"left":-0.053466796875,"bottom":-0.1015625,"right":0.602783203125,"top":0.6171875},"atlasBounds":{"left":0.5,"bottom":65.5,"right":42.5,"top":111.5}},{"unicode":1090,"advance":0.4970703125,"planeBounds":{"left":-0.071533203125,"bottom":-0.1015625,"right":0.569091796875,"top":0.6015625},"atlasBounds":{"left":469.5,"bottom":66.5,"right":510.5,"top":111.5}},{"unicode":1091,"advance":0.552734375,"planeBounds":{"left":-0.05859375,"bottom":-0.2734375,"right":0.61328125,"top":0.6171875},"atlasBounds":{"left":501.5,"bottom":216.5,"right":544.5,"top":273.5}},{"unicode":1092,"advance":0.77001953125,"planeBounds":{"left":-0.052734375,"bottom":-0.2734375,"right":0.822265625,"top":0.7890625},"atlasBounds":{"left":262.5,"bottom":579.5,"right":318.5,"top":647.5}},{"unicode":1093,"advance":0.537109375,"planeBounds":{"left":-0.044677734375,"bottom":-0.1015625,"right":0.580322265625,"top":0.6171875},"atlasBounds":{"left":95.5,"bottom":65.5,"right":135.5,"top":111.5}},{"unicode":1094,"advance":0.62109375,"planeBounds":{"left":-0.028076171875,"bottom":-0.2265625,"right":0.690673828125,"top":0.6171875},"atlasBounds":{"left":400.5,"bottom":161.5,"right":446.5,"top":215.5}},{"unicode":1095,"advance":0.56640625,"planeBounds":{"left":-0.0419921875,"bottom":-0.1015625,"right":0.5986328125,"top":0.6171875},"atlasBounds":{"left":87.5,"bottom":112.5,"right":128.5,"top":158.5}},{"unicode":1096,"advance":0.8203125,"planeBounds":{"left":-0.027099609375,"bottom":-0.0859375,"right":0.847900390625,"top":0.6171875},"atlasBounds":{"left":551.5,"bottom":66.5,"right":607.5,"top":111.5}},{"unicode":1097,"advance":0.857421875,"planeBounds":{"left":-0.027099609375,"bottom":-0.2265625,"right":0.926025390625,"top":0.6171875},"atlasBounds":{"left":586.5,"bottom":219.5,"right":647.5,"top":273.5}},{"unicode":1098,"advance":0.6318359375,"planeBounds":{"left":-0.06640625,"bottom":-0.0859375,"right":0.68359375,"top":0.6015625},"atlasBounds":{"left":167.5,"bottom":20.5,"right":215.5,"top":64.5}},{"unicode":1099,"advance":0.7421875,"planeBounds":{"left":-0.027099609375,"bottom":-0.1015625,"right":0.769775390625,"top":0.6171875},"atlasBounds":{"left":43.5,"bottom":65.5,"right":94.5,"top":111.5}},{"unicode":1100,"advance":0.5263671875,"planeBounds":{"left":-0.030029296875,"bottom":-0.0859375,"right":0.579345703125,"top":0.6171875},"atlasBounds":{"left":608.5,"bottom":66.5,"right":647.5,"top":111.5}},{"unicode":1101,"advance":0.55029296875,"planeBounds":{"left":-0.0400390625,"bottom":-0.1015625,"right":0.6005859375,"top":0.6171875},"atlasBounds":{"left":351.5,"bottom":112.5,"right":392.5,"top":158.5}},{"unicode":1102,"advance":0.8115234375,"planeBounds":{"left":-0.02978515625,"bottom":-0.1015625,"right":0.86083984375,"top":0.6171875},"atlasBounds":{"left":293.5,"bottom":112.5,"right":350.5,"top":158.5}},{"unicode":1103,"advance":0.54443359375,"planeBounds":{"left":-0.035888671875,"bottom":-0.1015625,"right":0.573486328125,"top":0.6015625},"atlasBounds":{"left":511.5,"bottom":66.5,"right":550.5,"top":111.5}},{"unicode":1105,"advance":0.564453125,"planeBounds":{"left":-0.05322265625,"bottom":-0.1015625,"right":0.61865234375,"top":0.8046875},"atlasBounds":{"left":167.5,"bottom":333.5,"right":210.5,"top":391.5}}],"kerning":[]} diff --git a/src/main/resources/assets/evolution/fonts/msdf/roundbold.png b/src/main/resources/assets/evolution/fonts/msdf/roundbold.png new file mode 100644 index 0000000..49b62ae Binary files /dev/null and b/src/main/resources/assets/evolution/fonts/msdf/roundbold.png differ diff --git a/src/main/resources/assets/evolution/fonts/msdf/roundbold.png.mcmeta b/src/main/resources/assets/evolution/fonts/msdf/roundbold.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/fonts/msdf/roundbold.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/fonts/msdf/semibold.json b/src/main/resources/assets/evolution/fonts/msdf/semibold.json new file mode 100644 index 0000000..ebff7b5 --- /dev/null +++ b/src/main/resources/assets/evolution/fonts/msdf/semibold.json @@ -0,0 +1 @@ +{"atlas":{"type":"mtsdf","distanceRange":10,"distanceRangeMiddle":0,"size":64,"width":684,"height":684,"yOrigin":"bottom"},"metrics":{"emSize":1,"lineHeight":1.193359375,"ascender":0.9521484375,"descender":-0.2412109375,"underlineY":-0.18212890625,"underlineThickness":0.08056640625},"glyphs":[{"unicode":32,"advance":0.2001953125},{"unicode":33,"advance":0.29833984375,"planeBounds":{"left":-0.007080078125,"bottom":-0.1015625,"right":0.305419921875,"top":0.7890625},"atlasBounds":{"left":450.5,"bottom":428.5,"right":470.5,"top":485.5}},{"unicode":34,"advance":0.431640625,"planeBounds":{"left":-0.0263671875,"bottom":0.3515625,"right":0.4580078125,"top":0.7890625},"atlasBounds":{"left":652.5,"bottom":398.5,"right":683.5,"top":426.5}},{"unicode":35,"advance":0.62353515625,"planeBounds":{"left":-0.078857421875,"bottom":-0.0859375,"right":0.702392578125,"top":0.7890625},"atlasBounds":{"left":380.5,"bottom":370.5,"right":430.5,"top":426.5}},{"unicode":36,"advance":0.6318359375,"planeBounds":{"left":-0.03564453125,"bottom":-0.1484375,"right":0.66748046875,"top":0.8671875},"atlasBounds":{"left":451.5,"bottom":547.5,"right":496.5,"top":612.5}},{"unicode":37,"advance":0.78466796875,"planeBounds":{"left":-0.060546875,"bottom":-0.1015625,"right":0.845703125,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":107.5,"right":58.5,"top":165.5}},{"unicode":38,"advance":0.68994140625,"planeBounds":{"left":-0.046875,"bottom":-0.1015625,"right":0.78125,"top":0.8046875},"atlasBounds":{"left":74.5,"bottom":173.5,"right":127.5,"top":231.5}},{"unicode":39,"advance":0.22119140625,"planeBounds":{"left":-0.022216796875,"bottom":0.3515625,"right":0.243408203125,"top":0.7890625},"atlasBounds":{"left":421.5,"bottom":20.5,"right":438.5,"top":48.5}},{"unicode":40,"advance":0.3603515625,"planeBounds":{"left":0.00537109375,"bottom":-0.2421875,"right":0.42724609375,"top":0.7890625},"atlasBounds":{"left":186.5,"bottom":546.5,"right":213.5,"top":612.5}},{"unicode":41,"advance":0.3603515625,"planeBounds":{"left":-0.06689453125,"bottom":-0.2421875,"right":0.35498046875,"top":0.7890625},"atlasBounds":{"left":214.5,"bottom":546.5,"right":241.5,"top":612.5}},{"unicode":42,"advance":0.484375,"planeBounds":{"left":-0.0224609375,"bottom":0.2734375,"right":0.5087890625,"top":0.8203125},"atlasBounds":{"left":305.5,"bottom":13.5,"right":339.5,"top":48.5}},{"unicode":43,"advance":0.6318359375,"planeBounds":{"left":-0.02001953125,"bottom":-0.0703125,"right":0.65185546875,"top":0.6328125},"atlasBounds":{"left":640.5,"bottom":440.5,"right":683.5,"top":485.5}},{"unicode":44,"advance":0.26904296875,"planeBounds":{"left":-0.04052734375,"bottom":-0.2421875,"right":0.28759765625,"top":0.1953125},"atlasBounds":{"left":659.5,"bottom":112.5,"right":680.5,"top":140.5}},{"unicode":45,"advance":0.43701171875,"planeBounds":{"left":-0.023681640625,"bottom":0.1484375,"right":0.460693359375,"top":0.4296875},"atlasBounds":{"left":652.5,"bottom":379.5,"right":683.5,"top":397.5}},{"unicode":46,"advance":0.26904296875,"planeBounds":{"left":-0.013916015625,"bottom":-0.0859375,"right":0.282958984375,"top":0.2265625},"atlasBounds":{"left":509.5,"bottom":28.5,"right":528.5,"top":48.5}},{"unicode":47,"advance":0.3603515625,"planeBounds":{"left":-0.08544921875,"bottom":-0.2421875,"right":0.44580078125,"top":0.7890625},"atlasBounds":{"left":242.5,"bottom":546.5,"right":276.5,"top":612.5}},{"unicode":48,"advance":0.634765625,"planeBounds":{"left":-0.0419921875,"bottom":-0.1015625,"right":0.6767578125,"top":0.8046875},"atlasBounds":{"left":361.5,"bottom":487.5,"right":407.5,"top":545.5}},{"unicode":49,"advance":0.466796875,"planeBounds":{"left":-0.03515625,"bottom":-0.0859375,"right":0.43359375,"top":0.7890625},"atlasBounds":{"left":621.5,"bottom":370.5,"right":651.5,"top":426.5}},{"unicode":50,"advance":0.58935546875,"planeBounds":{"left":-0.03955078125,"bottom":-0.0859375,"right":0.63232421875,"top":0.8046875},"atlasBounds":{"left":471.5,"bottom":428.5,"right":514.5,"top":485.5}},{"unicode":51,"advance":0.61572265625,"planeBounds":{"left":-0.038330078125,"bottom":-0.1015625,"right":0.649169921875,"top":0.8046875},"atlasBounds":{"left":408.5,"bottom":487.5,"right":452.5,"top":545.5}},{"unicode":52,"advance":0.63232421875,"planeBounds":{"left":-0.0478515625,"bottom":-0.0859375,"right":0.6865234375,"top":0.7890625},"atlasBounds":{"left":636.5,"bottom":627.5,"right":683.5,"top":683.5}},{"unicode":53,"advance":0.6103515625,"planeBounds":{"left":-0.02685546875,"bottom":-0.1015625,"right":0.66064453125,"top":0.7890625},"atlasBounds":{"left":515.5,"bottom":428.5,"right":559.5,"top":485.5}},{"unicode":54,"advance":0.626953125,"planeBounds":{"left":-0.0361328125,"bottom":-0.1015625,"right":0.6669921875,"top":0.8046875},"atlasBounds":{"left":453.5,"bottom":487.5,"right":498.5,"top":545.5}},{"unicode":55,"advance":0.56298828125,"planeBounds":{"left":-0.0498046875,"bottom":-0.0859375,"right":0.6064453125,"top":0.7890625},"atlasBounds":{"left":466.5,"bottom":312.5,"right":508.5,"top":368.5}},{"unicode":56,"advance":0.6328125,"planeBounds":{"left":-0.042724609375,"bottom":-0.1015625,"right":0.676025390625,"top":0.8046875},"atlasBounds":{"left":499.5,"bottom":487.5,"right":545.5,"top":545.5}},{"unicode":57,"advance":0.6279296875,"planeBounds":{"left":-0.04736328125,"bottom":-0.1015625,"right":0.67138671875,"top":0.8046875},"atlasBounds":{"left":546.5,"bottom":487.5,"right":592.5,"top":545.5}},{"unicode":58,"advance":0.26904296875,"planeBounds":{"left":-0.013916015625,"bottom":-0.0859375,"right":0.282958984375,"top":0.5703125},"atlasBounds":{"left":660.5,"bottom":51.5,"right":679.5,"top":93.5}},{"unicode":59,"advance":0.26904296875,"planeBounds":{"left":-0.040771484375,"bottom":-0.2421875,"right":0.287353515625,"top":0.5703125},"atlasBounds":{"left":528.5,"bottom":145.5,"right":549.5,"top":197.5}},{"unicode":60,"advance":0.6318359375,"planeBounds":{"left":0.01123046875,"bottom":-0.0859375,"right":0.62060546875,"top":0.6640625},"atlasBounds":{"left":74.5,"bottom":2.5,"right":113.5,"top":50.5}},{"unicode":61,"advance":0.6318359375,"planeBounds":{"left":-0.01220703125,"bottom":0.0390625,"right":0.64404296875,"top":0.5234375},"atlasBounds":{"left":378.5,"bottom":17.5,"right":420.5,"top":48.5}},{"unicode":62,"advance":0.6318359375,"planeBounds":{"left":0.01123046875,"bottom":-0.0859375,"right":0.62060546875,"top":0.6640625},"atlasBounds":{"left":550.5,"bottom":149.5,"right":589.5,"top":197.5}},{"unicode":63,"advance":0.517578125,"planeBounds":{"left":-0.052490234375,"bottom":-0.1015625,"right":0.556884765625,"top":0.7890625},"atlasBounds":{"left":560.5,"bottom":428.5,"right":599.5,"top":485.5}},{"unicode":64,"advance":0.88037109375,"planeBounds":{"left":-0.040771484375,"bottom":-0.1953125,"right":0.927978515625,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":324.5,"right":62.5,"top":387.5}},{"unicode":65,"advance":0.66845703125,"planeBounds":{"left":-0.072021484375,"bottom":-0.0859375,"right":0.740478515625,"top":0.7890625},"atlasBounds":{"left":559.5,"bottom":312.5,"right":611.5,"top":368.5}},{"unicode":66,"advance":0.626953125,"planeBounds":{"left":-0.02099609375,"bottom":-0.0859375,"right":0.68212890625,"top":0.7890625},"atlasBounds":{"left":612.5,"bottom":312.5,"right":657.5,"top":368.5}},{"unicode":67,"advance":0.70263671875,"planeBounds":{"left":-0.044677734375,"bottom":-0.1015625,"right":0.752197265625,"top":0.8046875},"atlasBounds":{"left":593.5,"bottom":487.5,"right":644.5,"top":545.5}},{"unicode":68,"advance":0.69189453125,"planeBounds":{"left":-0.016845703125,"bottom":-0.0859375,"right":0.733154296875,"top":0.7890625},"atlasBounds":{"left":216.5,"bottom":255.5,"right":264.5,"top":311.5}},{"unicode":69,"advance":0.5654296875,"planeBounds":{"left":-0.0224609375,"bottom":-0.0859375,"right":0.6025390625,"top":0.7890625},"atlasBounds":{"left":265.5,"bottom":255.5,"right":305.5,"top":311.5}},{"unicode":70,"advance":0.54052734375,"planeBounds":{"left":-0.01806640625,"bottom":-0.0859375,"right":0.59130859375,"top":0.7890625},"atlasBounds":{"left":366.5,"bottom":255.5,"right":405.5,"top":311.5}},{"unicode":71,"advance":0.71923828125,"planeBounds":{"left":-0.0400390625,"bottom":-0.1015625,"right":0.7568359375,"top":0.8046875},"atlasBounds":{"left":178.5,"bottom":427.5,"right":229.5,"top":485.5}},{"unicode":72,"advance":0.71826171875,"planeBounds":{"left":-0.023681640625,"bottom":-0.0859375,"right":0.741943359375,"top":0.7890625},"atlasBounds":{"left":565.5,"bottom":255.5,"right":614.5,"top":311.5}},{"unicode":73,"advance":0.25,"planeBounds":{"left":-0.0234375,"bottom":-0.0859375,"right":0.2734375,"top":0.7890625},"atlasBounds":{"left":658.5,"bottom":255.5,"right":677.5,"top":311.5}},{"unicode":74,"advance":0.53515625,"planeBounds":{"left":-0.0615234375,"bottom":-0.1015625,"right":0.5478515625,"top":0.7890625},"atlasBounds":{"left":600.5,"bottom":428.5,"right":639.5,"top":485.5}},{"unicode":75,"advance":0.64404296875,"planeBounds":{"left":-0.016357421875,"bottom":-0.0859375,"right":0.718017578125,"top":0.7890625},"atlasBounds":{"left":224.5,"bottom":198.5,"right":271.5,"top":254.5}},{"unicode":76,"advance":0.5361328125,"planeBounds":{"left":-0.019775390625,"bottom":-0.0859375,"right":0.589599609375,"top":0.7890625},"atlasBounds":{"left":272.5,"bottom":198.5,"right":311.5,"top":254.5}},{"unicode":77,"advance":0.8515625,"planeBounds":{"left":-0.019775390625,"bottom":-0.0859375,"right":0.870849609375,"top":0.7890625},"atlasBounds":{"left":74.5,"bottom":627.5,"right":131.5,"top":683.5}},{"unicode":78,"advance":0.708984375,"planeBounds":{"left":-0.020751953125,"bottom":-0.0859375,"right":0.729248046875,"top":0.7890625},"atlasBounds":{"left":356.5,"bottom":198.5,"right":404.5,"top":254.5}},{"unicode":79,"advance":0.74462890625,"planeBounds":{"left":-0.041748046875,"bottom":-0.1015625,"right":0.786376953125,"top":0.8046875},"atlasBounds":{"left":74.5,"bottom":114.5,"right":127.5,"top":172.5}},{"unicode":80,"advance":0.60302734375,"planeBounds":{"left":-0.018310546875,"bottom":-0.0859375,"right":0.653564453125,"top":0.7890625},"atlasBounds":{"left":405.5,"bottom":198.5,"right":448.5,"top":254.5}},{"unicode":81,"advance":0.74462890625,"planeBounds":{"left":-0.041748046875,"bottom":-0.1640625,"right":0.786376953125,"top":0.8046875},"atlasBounds":{"left":74.5,"bottom":51.5,"right":127.5,"top":113.5}},{"unicode":82,"advance":0.625,"planeBounds":{"left":-0.017333984375,"bottom":-0.0859375,"right":0.685791015625,"top":0.7890625},"atlasBounds":{"left":323.5,"bottom":141.5,"right":368.5,"top":197.5}},{"unicode":83,"advance":0.61767578125,"planeBounds":{"left":-0.05029296875,"bottom":-0.1015625,"right":0.66845703125,"top":0.8046875},"atlasBounds":{"left":230.5,"bottom":427.5,"right":276.5,"top":485.5}},{"unicode":84,"advance":0.59423828125,"planeBounds":{"left":-0.0546875,"bottom":-0.0859375,"right":0.6484375,"top":0.7890625},"atlasBounds":{"left":237.5,"bottom":141.5,"right":282.5,"top":197.5}},{"unicode":85,"advance":0.70361328125,"planeBounds":{"left":-0.0234375,"bottom":-0.1015625,"right":0.7265625,"top":0.7890625},"atlasBounds":{"left":132.5,"bottom":369.5,"right":180.5,"top":426.5}},{"unicode":86,"advance":0.6611328125,"planeBounds":{"left":-0.06787109375,"bottom":-0.0859375,"right":0.72900390625,"top":0.7890625},"atlasBounds":{"left":132.5,"bottom":141.5,"right":183.5,"top":197.5}},{"unicode":87,"advance":0.9501953125,"planeBounds":{"left":-0.06396484375,"bottom":-0.0859375,"right":1.01416015625,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":570.5,"right":69.5,"top":626.5}},{"unicode":88,"advance":0.6669921875,"planeBounds":{"left":-0.05712890625,"bottom":-0.0859375,"right":0.72412109375,"top":0.7890625},"atlasBounds":{"left":591.5,"bottom":198.5,"right":641.5,"top":254.5}},{"unicode":89,"advance":0.64599609375,"planeBounds":{"left":-0.067626953125,"bottom":-0.0859375,"right":0.713623046875,"top":0.7890625},"atlasBounds":{"left":540.5,"bottom":198.5,"right":590.5,"top":254.5}},{"unicode":90,"advance":0.62548828125,"planeBounds":{"left":-0.038818359375,"bottom":-0.0859375,"right":0.664306640625,"top":0.7890625},"atlasBounds":{"left":494.5,"bottom":198.5,"right":539.5,"top":254.5}},{"unicode":91,"advance":0.3603515625,"planeBounds":{"left":0.02099609375,"bottom":-0.2421875,"right":0.42724609375,"top":0.7890625},"atlasBounds":{"left":277.5,"bottom":546.5,"right":303.5,"top":612.5}},{"unicode":92,"advance":0.3603515625,"planeBounds":{"left":-0.08544921875,"bottom":-0.2421875,"right":0.44580078125,"top":0.7890625},"atlasBounds":{"left":304.5,"bottom":546.5,"right":338.5,"top":612.5}},{"unicode":93,"advance":0.3603515625,"planeBounds":{"left":-0.067138671875,"bottom":-0.2421875,"right":0.339111328125,"top":0.7890625},"atlasBounds":{"left":339.5,"bottom":546.5,"right":365.5,"top":612.5}},{"unicode":94,"advance":0.462890625,"planeBounds":{"left":-0.0576171875,"bottom":0.3046875,"right":0.5205078125,"top":0.7890625},"atlasBounds":{"left":340.5,"bottom":17.5,"right":377.5,"top":48.5}},{"unicode":95,"advance":0.4130859375,"planeBounds":{"left":-0.10595703125,"bottom":-0.2265625,"right":0.51904296875,"top":0.0390625},"atlasBounds":{"left":529.5,"bottom":31.5,"right":569.5,"top":48.5}},{"unicode":96,"advance":0.4921875,"planeBounds":{"left":0.0517578125,"bottom":0.5390625,"right":0.4423828125,"top":0.8671875},"atlasBounds":{"left":483.5,"bottom":27.5,"right":508.5,"top":48.5}},{"unicode":97,"advance":0.53076171875,"planeBounds":{"left":-0.056396484375,"bottom":-0.1015625,"right":0.568603515625,"top":0.6171875},"atlasBounds":{"left":132.5,"bottom":94.5,"right":172.5,"top":140.5}},{"unicode":98,"advance":0.58154296875,"planeBounds":{"left":-0.025146484375,"bottom":-0.1015625,"right":0.631103515625,"top":0.7890625},"atlasBounds":{"left":211.5,"bottom":369.5,"right":253.5,"top":426.5}},{"unicode":99,"advance":0.52880859375,"planeBounds":{"left":-0.052978515625,"bottom":-0.1015625,"right":0.587646484375,"top":0.6171875},"atlasBounds":{"left":173.5,"bottom":94.5,"right":214.5,"top":140.5}},{"unicode":100,"advance":0.580078125,"planeBounds":{"left":-0.050048828125,"bottom":-0.1015625,"right":0.606201171875,"top":0.7890625},"atlasBounds":{"left":254.5,"bottom":369.5,"right":296.5,"top":426.5}},{"unicode":101,"advance":0.53955078125,"planeBounds":{"left":-0.050537109375,"bottom":-0.1015625,"right":0.590087890625,"top":0.6171875},"atlasBounds":{"left":257.5,"bottom":94.5,"right":298.5,"top":140.5}},{"unicode":102,"advance":0.3369140625,"planeBounds":{"left":-0.065673828125,"bottom":-0.0859375,"right":0.387451171875,"top":0.7890625},"atlasBounds":{"left":535.5,"bottom":255.5,"right":564.5,"top":311.5}},{"unicode":103,"advance":0.5771484375,"planeBounds":{"left":-0.050048828125,"bottom":-0.2734375,"right":0.606201171875,"top":0.6171875},"atlasBounds":{"left":297.5,"bottom":369.5,"right":339.5,"top":426.5}},{"unicode":104,"advance":0.56787109375,"planeBounds":{"left":-0.025634765625,"bottom":-0.0859375,"right":0.599365234375,"top":0.7890625},"atlasBounds":{"left":450.5,"bottom":255.5,"right":490.5,"top":311.5}},{"unicode":105,"advance":0.2265625,"planeBounds":{"left":-0.034912109375,"bottom":-0.0859375,"right":0.261962890625,"top":0.8046875},"atlasBounds":{"left":340.5,"bottom":369.5,"right":359.5,"top":426.5}},{"unicode":106,"advance":0.2265625,"planeBounds":{"left":-0.11328125,"bottom":-0.2734375,"right":0.26171875,"top":0.8046875},"atlasBounds":{"left":379.5,"bottom":614.5,"right":403.5,"top":683.5}},{"unicode":107,"advance":0.5185546875,"planeBounds":{"left":-0.02587890625,"bottom":-0.0859375,"right":0.59912109375,"top":0.7890625},"atlasBounds":{"left":325.5,"bottom":255.5,"right":365.5,"top":311.5}},{"unicode":108,"advance":0.228515625,"planeBounds":{"left":-0.026611328125,"bottom":-0.0859375,"right":0.254638671875,"top":0.7890625},"atlasBounds":{"left":306.5,"bottom":255.5,"right":324.5,"top":311.5}},{"unicode":109,"advance":0.84130859375,"planeBounds":{"left":-0.03125,"bottom":-0.0859375,"right":0.875,"top":0.6171875},"atlasBounds":{"left":0.5,"bottom":61.5,"right":58.5,"top":106.5}},{"unicode":110,"advance":0.55810546875,"planeBounds":{"left":-0.0322265625,"bottom":-0.0859375,"right":0.5927734375,"top":0.6171875},"atlasBounds":{"left":548.5,"bottom":95.5,"right":588.5,"top":140.5}},{"unicode":111,"advance":0.5576171875,"planeBounds":{"left":-0.05712890625,"bottom":-0.1015625,"right":0.61474609375,"top":0.6171875},"atlasBounds":{"left":422.5,"bottom":94.5,"right":465.5,"top":140.5}},{"unicode":112,"advance":0.5771484375,"planeBounds":{"left":-0.02880859375,"bottom":-0.2578125,"right":0.62744140625,"top":0.6171875},"atlasBounds":{"left":132.5,"bottom":198.5,"right":174.5,"top":254.5}},{"unicode":113,"advance":0.5771484375,"planeBounds":{"left":-0.050048828125,"bottom":-0.2578125,"right":0.606201171875,"top":0.6171875},"atlasBounds":{"left":132.5,"bottom":255.5,"right":174.5,"top":311.5}},{"unicode":114,"advance":0.34375,"planeBounds":{"left":-0.0283203125,"bottom":-0.0859375,"right":0.4091796875,"top":0.6171875},"atlasBounds":{"left":630.5,"bottom":95.5,"right":658.5,"top":140.5}},{"unicode":115,"advance":0.4970703125,"planeBounds":{"left":-0.056396484375,"bottom":-0.1015625,"right":0.552978515625,"top":0.6171875},"atlasBounds":{"left":466.5,"bottom":94.5,"right":505.5,"top":140.5}},{"unicode":116,"advance":0.33544921875,"planeBounds":{"left":-0.070556640625,"bottom":-0.0859375,"right":0.382568359375,"top":0.7265625},"atlasBounds":{"left":498.5,"bottom":145.5,"right":527.5,"top":197.5}},{"unicode":117,"advance":0.55810546875,"planeBounds":{"left":-0.034423828125,"bottom":-0.1015625,"right":0.590576171875,"top":0.6015625},"atlasBounds":{"left":589.5,"bottom":95.5,"right":629.5,"top":140.5}},{"unicode":118,"advance":0.51123046875,"planeBounds":{"left":-0.072509765625,"bottom":-0.0859375,"right":0.583740234375,"top":0.6015625},"atlasBounds":{"left":406.5,"bottom":49.5,"right":448.5,"top":93.5}},{"unicode":119,"advance":0.7626953125,"planeBounds":{"left":-0.07177734375,"bottom":-0.0859375,"right":0.83447265625,"top":0.6015625},"atlasBounds":{"left":0.5,"bottom":16.5,"right":58.5,"top":60.5}},{"unicode":120,"advance":0.50634765625,"planeBounds":{"left":-0.06689453125,"bottom":-0.0859375,"right":0.57373046875,"top":0.6015625},"atlasBounds":{"left":132.5,"bottom":4.5,"right":173.5,"top":48.5}},{"unicode":121,"advance":0.52197265625,"planeBounds":{"left":-0.0751953125,"bottom":-0.2734375,"right":0.5966796875,"top":0.6015625},"atlasBounds":{"left":272.5,"bottom":312.5,"right":315.5,"top":368.5}},{"unicode":122,"advance":0.49169921875,"planeBounds":{"left":-0.043212890625,"bottom":-0.0859375,"right":0.534912109375,"top":0.6015625},"atlasBounds":{"left":171.5,"bottom":49.5,"right":208.5,"top":93.5}},{"unicode":123,"advance":0.3603515625,"planeBounds":{"left":-0.070068359375,"bottom":-0.2421875,"right":0.429931640625,"top":0.7890625},"atlasBounds":{"left":366.5,"bottom":546.5,"right":398.5,"top":612.5}},{"unicode":124,"advance":0.3603515625,"planeBounds":{"left":0.039306640625,"bottom":-0.2421875,"right":0.320556640625,"top":0.7890625},"atlasBounds":{"left":399.5,"bottom":546.5,"right":417.5,"top":612.5}},{"unicode":125,"advance":0.3603515625,"planeBounds":{"left":-0.070068359375,"bottom":-0.2421875,"right":0.429931640625,"top":0.7890625},"atlasBounds":{"left":418.5,"bottom":546.5,"right":450.5,"top":612.5}},{"unicode":126,"advance":0.6318359375,"planeBounds":{"left":-0.020018838816268807,"bottom":0.1640625,"right":0.65185616118373124,"top":0.5390625},"atlasBounds":{"left":439.5,"bottom":24.5,"right":482.5,"top":48.5}},{"unicode":211,"advance":0.74462890625,"planeBounds":{"left":-0.041748046875,"bottom":-0.1015625,"right":0.786376953125,"top":0.9921875},"atlasBounds":{"left":132.5,"bottom":613.5,"right":185.5,"top":683.5}},{"unicode":243,"advance":0.5576171875,"planeBounds":{"left":-0.05712890625,"bottom":-0.1015625,"right":0.61474609375,"top":0.8203125},"atlasBounds":{"left":541.5,"bottom":553.5,"right":584.5,"top":612.5}},{"unicode":260,"advance":0.66845703125,"planeBounds":{"left":-0.072021484375,"bottom":-0.3046875,"right":0.740478515625,"top":0.7890625},"atlasBounds":{"left":186.5,"bottom":613.5,"right":238.5,"top":683.5}},{"unicode":261,"advance":0.53076171875,"planeBounds":{"left":-0.056396484375,"bottom":-0.3046875,"right":0.568603515625,"top":0.6171875},"atlasBounds":{"left":585.5,"bottom":553.5,"right":625.5,"top":612.5}},{"unicode":262,"advance":0.70263671875,"planeBounds":{"left":-0.044677734375,"bottom":-0.1015625,"right":0.752197265625,"top":0.9921875},"atlasBounds":{"left":239.5,"bottom":613.5,"right":290.5,"top":683.5}},{"unicode":263,"advance":0.52880859375,"planeBounds":{"left":-0.052978515625,"bottom":-0.1015625,"right":0.587646484375,"top":0.8203125},"atlasBounds":{"left":626.5,"bottom":553.5,"right":667.5,"top":612.5}},{"unicode":280,"advance":0.5654296875,"planeBounds":{"left":-0.0224609375,"bottom":-0.3046875,"right":0.6025390625,"top":0.7890625},"atlasBounds":{"left":291.5,"bottom":613.5,"right":331.5,"top":683.5}},{"unicode":281,"advance":0.53955078125,"planeBounds":{"left":-0.050537109375,"bottom":-0.3046875,"right":0.590087890625,"top":0.6171875},"atlasBounds":{"left":173.5,"bottom":486.5,"right":214.5,"top":545.5}},{"unicode":321,"advance":0.5400390625,"planeBounds":{"left":-0.065185546875,"bottom":-0.0859375,"right":0.591064453125,"top":0.7890625},"atlasBounds":{"left":615.5,"bottom":255.5,"right":657.5,"top":311.5}},{"unicode":322,"advance":0.24462890625,"planeBounds":{"left":-0.072998046875,"bottom":-0.0859375,"right":0.317626953125,"top":0.7890625},"atlasBounds":{"left":658.5,"bottom":312.5,"right":683.5,"top":368.5}},{"unicode":323,"advance":0.708984375,"planeBounds":{"left":-0.020751953125,"bottom":-0.0859375,"right":0.729248046875,"top":0.9921875},"atlasBounds":{"left":404.5,"bottom":614.5,"right":452.5,"top":683.5}},{"unicode":324,"advance":0.55810546875,"planeBounds":{"left":-0.0322265625,"bottom":-0.0859375,"right":0.5927734375,"top":0.8203125},"atlasBounds":{"left":371.5,"bottom":427.5,"right":411.5,"top":485.5}},{"unicode":346,"advance":0.61767578125,"planeBounds":{"left":-0.05029296875,"bottom":-0.1015625,"right":0.66845703125,"top":0.9921875},"atlasBounds":{"left":332.5,"bottom":613.5,"right":378.5,"top":683.5}},{"unicode":347,"advance":0.4970703125,"planeBounds":{"left":-0.056396484375,"bottom":-0.1015625,"right":0.552978515625,"top":0.8203125},"atlasBounds":{"left":215.5,"bottom":486.5,"right":254.5,"top":545.5}},{"unicode":377,"advance":0.62548828125,"planeBounds":{"left":-0.038818359375,"bottom":-0.0859375,"right":0.664306640625,"top":0.9921875},"atlasBounds":{"left":453.5,"bottom":614.5,"right":498.5,"top":683.5}},{"unicode":378,"advance":0.49169921875,"planeBounds":{"left":-0.043212890625,"bottom":-0.0859375,"right":0.534912109375,"top":0.8203125},"atlasBounds":{"left":645.5,"bottom":487.5,"right":682.5,"top":545.5}},{"unicode":379,"advance":0.62548828125,"planeBounds":{"left":-0.038818359375,"bottom":-0.0859375,"right":0.664306640625,"top":0.9921875},"atlasBounds":{"left":499.5,"bottom":614.5,"right":544.5,"top":683.5}},{"unicode":380,"advance":0.49169921875,"planeBounds":{"left":-0.043212890625,"bottom":-0.0859375,"right":0.534912109375,"top":0.8203125},"atlasBounds":{"left":412.5,"bottom":427.5,"right":449.5,"top":485.5}},{"unicode":1025,"advance":0.57568359375,"planeBounds":{"left":-0.017578125,"bottom":-0.0859375,"right":0.607421875,"top":0.9765625},"atlasBounds":{"left":595.5,"bottom":615.5,"right":635.5,"top":683.5}},{"unicode":1040,"advance":0.67822265625,"planeBounds":{"left":-0.067138671875,"bottom":-0.0859375,"right":0.745361328125,"top":0.7890625},"atlasBounds":{"left":184.5,"bottom":141.5,"right":236.5,"top":197.5}},{"unicode":1041,"advance":0.62890625,"planeBounds":{"left":-0.01171875,"bottom":-0.0859375,"right":0.66015625,"top":0.7890625},"atlasBounds":{"left":406.5,"bottom":255.5,"right":449.5,"top":311.5}},{"unicode":1042,"advance":0.63671875,"planeBounds":{"left":-0.01611328125,"bottom":-0.0859375,"right":0.68701171875,"top":0.7890625},"atlasBounds":{"left":226.5,"bottom":312.5,"right":271.5,"top":368.5}},{"unicode":1043,"advance":0.5390625,"planeBounds":{"left":-0.017333984375,"bottom":-0.0859375,"right":0.592041015625,"top":0.7890625},"atlasBounds":{"left":283.5,"bottom":141.5,"right":322.5,"top":197.5}},{"unicode":1044,"advance":0.748046875,"planeBounds":{"left":-0.068603515625,"bottom":-0.2265625,"right":0.806396484375,"top":0.7890625},"atlasBounds":{"left":74.5,"bottom":447.5,"right":130.5,"top":512.5}},{"unicode":1045,"advance":0.57568359375,"planeBounds":{"left":-0.017578125,"bottom":-0.0859375,"right":0.607421875,"top":0.7890625},"atlasBounds":{"left":175.5,"bottom":255.5,"right":215.5,"top":311.5}},{"unicode":1046,"advance":0.99072265625,"planeBounds":{"left":-0.0751953125,"bottom":-0.0859375,"right":1.0654296875,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":627.5,"right":73.5,"top":683.5}},{"unicode":1047,"advance":0.60986328125,"planeBounds":{"left":-0.046630859375,"bottom":-0.1015625,"right":0.656494140625,"top":0.8046875},"atlasBounds":{"left":132.5,"bottom":427.5,"right":177.5,"top":485.5}},{"unicode":1048,"advance":0.72998046875,"planeBounds":{"left":-0.01806640625,"bottom":-0.0859375,"right":0.74755859375,"top":0.7890625},"atlasBounds":{"left":509.5,"bottom":312.5,"right":558.5,"top":368.5}},{"unicode":1049,"advance":0.72998046875,"planeBounds":{"left":-0.01806640625,"bottom":-0.0859375,"right":0.74755859375,"top":0.9921875},"atlasBounds":{"left":545.5,"bottom":614.5,"right":594.5,"top":683.5}},{"unicode":1050,"advance":0.65478515625,"planeBounds":{"left":-0.01123046875,"bottom":-0.0859375,"right":0.72314453125,"top":0.7890625},"atlasBounds":{"left":418.5,"bottom":312.5,"right":465.5,"top":368.5}},{"unicode":1051,"advance":0.703125,"planeBounds":{"left":-0.06103515625,"bottom":-0.0859375,"right":0.72021484375,"top":0.7890625},"atlasBounds":{"left":316.5,"bottom":312.5,"right":366.5,"top":368.5}},{"unicode":1052,"advance":0.861328125,"planeBounds":{"left":-0.014892578125,"bottom":-0.0859375,"right":0.875732421875,"top":0.7890625},"atlasBounds":{"left":74.5,"bottom":570.5,"right":131.5,"top":626.5}},{"unicode":1053,"advance":0.72802734375,"planeBounds":{"left":-0.018798828125,"bottom":-0.0859375,"right":0.746826171875,"top":0.7890625},"atlasBounds":{"left":571.5,"bottom":370.5,"right":620.5,"top":426.5}},{"unicode":1054,"advance":0.75439453125,"planeBounds":{"left":-0.036865234375,"bottom":-0.1015625,"right":0.791259765625,"top":0.8046875},"atlasBounds":{"left":307.5,"bottom":487.5,"right":360.5,"top":545.5}},{"unicode":1055,"advance":0.7197265625,"planeBounds":{"left":-0.01513671875,"bottom":-0.0859375,"right":0.73486328125,"top":0.7890625},"atlasBounds":{"left":175.5,"bottom":198.5,"right":223.5,"top":254.5}},{"unicode":1056,"advance":0.61572265625,"planeBounds":{"left":-0.013427734375,"bottom":-0.0859375,"right":0.658447265625,"top":0.7890625},"atlasBounds":{"left":491.5,"bottom":255.5,"right":534.5,"top":311.5}},{"unicode":1057,"advance":0.7109375,"planeBounds":{"left":-0.04052734375,"bottom":-0.1015625,"right":0.75634765625,"top":0.8046875},"atlasBounds":{"left":319.5,"bottom":427.5,"right":370.5,"top":485.5}},{"unicode":1058,"advance":0.60400390625,"planeBounds":{"left":-0.0498046875,"bottom":-0.0859375,"right":0.6533203125,"top":0.7890625},"atlasBounds":{"left":180.5,"bottom":312.5,"right":225.5,"top":368.5}},{"unicode":1059,"advance":0.63134765625,"planeBounds":{"left":-0.065185546875,"bottom":-0.0859375,"right":0.700439453125,"top":0.7890625},"atlasBounds":{"left":474.5,"bottom":370.5,"right":523.5,"top":426.5}},{"unicode":1060,"advance":0.8369140625,"planeBounds":{"left":-0.042724609375,"bottom":-0.1015625,"right":0.879150390625,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":220.5,"right":59.5,"top":278.5}},{"unicode":1061,"advance":0.6767578125,"planeBounds":{"left":-0.05224609375,"bottom":-0.0859375,"right":0.72900390625,"top":0.7890625},"atlasBounds":{"left":367.5,"bottom":312.5,"right":417.5,"top":368.5}},{"unicode":1062,"advance":0.76416015625,"planeBounds":{"left":-0.01806640625,"bottom":-0.2265625,"right":0.82568359375,"top":0.7890625},"atlasBounds":{"left":74.5,"bottom":289.5,"right":128.5,"top":354.5}},{"unicode":1063,"advance":0.68896484375,"planeBounds":{"left":-0.0283203125,"bottom":-0.0859375,"right":0.7060546875,"top":0.7890625},"atlasBounds":{"left":132.5,"bottom":312.5,"right":179.5,"top":368.5}},{"unicode":1064,"advance":0.95166015625,"planeBounds":{"left":-0.016357421875,"bottom":-0.0859375,"right":0.968017578125,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":388.5,"right":63.5,"top":444.5}},{"unicode":1065,"advance":0.99560546875,"planeBounds":{"left":-0.011474609375,"bottom":-0.2265625,"right":1.051025390625,"top":0.7890625},"atlasBounds":{"left":0.5,"bottom":504.5,"right":68.5,"top":569.5}},{"unicode":1066,"advance":0.7431640625,"planeBounds":{"left":-0.05322265625,"bottom":-0.0859375,"right":0.79052734375,"top":0.7890625},"atlasBounds":{"left":74.5,"bottom":232.5,"right":128.5,"top":288.5}},{"unicode":1067,"advance":0.86083984375,"planeBounds":{"left":-0.014892578125,"bottom":-0.0859375,"right":0.875732421875,"top":0.7890625},"atlasBounds":{"left":74.5,"bottom":513.5,"right":131.5,"top":569.5}},{"unicode":1068,"advance":0.619140625,"planeBounds":{"left":-0.017822265625,"bottom":-0.0859375,"right":0.669677734375,"top":0.7890625},"atlasBounds":{"left":449.5,"bottom":198.5,"right":493.5,"top":254.5}},{"unicode":1069,"advance":0.7109375,"planeBounds":{"left":-0.04541015625,"bottom":-0.1015625,"right":0.75146484375,"top":0.8046875},"atlasBounds":{"left":255.5,"bottom":487.5,"right":306.5,"top":545.5}},{"unicode":1070,"advance":1.00244140625,"planeBounds":{"left":-0.01806640625,"bottom":-0.1015625,"right":1.04443359375,"top":0.8046875},"atlasBounds":{"left":0.5,"bottom":445.5,"right":68.5,"top":503.5}},{"unicode":1071,"advance":0.65380859375,"planeBounds":{"left":-0.052490234375,"bottom":-0.0859375,"right":0.666259765625,"top":0.7890625},"atlasBounds":{"left":524.5,"bottom":370.5,"right":570.5,"top":426.5}},{"unicode":1072,"advance":0.5400390625,"planeBounds":{"left":-0.051513671875,"bottom":-0.1015625,"right":0.573486328125,"top":0.6171875},"atlasBounds":{"left":339.5,"bottom":94.5,"right":379.5,"top":140.5}},{"unicode":1073,"advance":0.57568359375,"planeBounds":{"left":-0.04638671875,"bottom":-0.1015625,"right":0.62548828125,"top":0.8203125},"atlasBounds":{"left":497.5,"bottom":553.5,"right":540.5,"top":612.5}},{"unicode":1074,"advance":0.525390625,"planeBounds":{"left":-0.02490234375,"bottom":-0.0859375,"right":0.56884765625,"top":0.6015625},"atlasBounds":{"left":132.5,"bottom":49.5,"right":170.5,"top":93.5}},{"unicode":1075,"advance":0.4365234375,"planeBounds":{"left":-0.028076171875,"bottom":-0.0859375,"right":0.487548828125,"top":0.6015625},"atlasBounds":{"left":249.5,"bottom":49.5,"right":282.5,"top":93.5}},{"unicode":1076,"advance":0.61328125,"planeBounds":{"left":-0.07080078125,"bottom":-0.2265625,"right":0.67919921875,"top":0.6015625},"atlasBounds":{"left":369.5,"bottom":144.5,"right":417.5,"top":197.5}},{"unicode":1077,"advance":0.548828125,"planeBounds":{"left":-0.045654296875,"bottom":-0.1015625,"right":0.594970703125,"top":0.6171875},"atlasBounds":{"left":506.5,"bottom":94.5,"right":547.5,"top":140.5}},{"unicode":1078,"advance":0.7880859375,"planeBounds":{"left":-0.074951171875,"bottom":-0.0859375,"right":0.862548828125,"top":0.6015625},"atlasBounds":{"left":0.5,"bottom":279.5,"right":60.5,"top":323.5}},{"unicode":1079,"advance":0.5048828125,"planeBounds":{"left":-0.055908203125,"bottom":-0.1015625,"right":0.553466796875,"top":0.6171875},"atlasBounds":{"left":299.5,"bottom":94.5,"right":338.5,"top":140.5}},{"unicode":1080,"advance":0.57568359375,"planeBounds":{"left":-0.024658203125,"bottom":-0.0859375,"right":0.600341796875,"top":0.6015625},"atlasBounds":{"left":217.5,"bottom":4.5,"right":257.5,"top":48.5}},{"unicode":1081,"advance":0.57568359375,"planeBounds":{"left":-0.024658203125,"bottom":-0.0859375,"right":0.600341796875,"top":0.8359375},"atlasBounds":{"left":132.5,"bottom":486.5,"right":172.5,"top":545.5}},{"unicode":1082,"advance":0.5283203125,"planeBounds":{"left":-0.025146484375,"bottom":-0.0859375,"right":0.599853515625,"top":0.6015625},"atlasBounds":{"left":324.5,"bottom":49.5,"right":364.5,"top":93.5}},{"unicode":1083,"advance":0.56005859375,"planeBounds":{"left":-0.067626953125,"bottom":-0.0859375,"right":0.588623046875,"top":0.6015625},"atlasBounds":{"left":174.5,"bottom":4.5,"right":216.5,"top":48.5}},{"unicode":1084,"advance":0.72509765625,"planeBounds":{"left":-0.028076171875,"bottom":-0.0859375,"right":0.753173828125,"top":0.6015625},"atlasBounds":{"left":609.5,"bottom":49.5,"right":659.5,"top":93.5}},{"unicode":1085,"advance":0.56982421875,"planeBounds":{"left":-0.02783203125,"bottom":-0.0859375,"right":0.59716796875,"top":0.6015625},"atlasBounds":{"left":283.5,"bottom":49.5,"right":323.5,"top":93.5}},{"unicode":1086,"advance":0.56689453125,"planeBounds":{"left":-0.05224609375,"bottom":-0.1015625,"right":0.61962890625,"top":0.6171875},"atlasBounds":{"left":590.5,"bottom":151.5,"right":633.5,"top":197.5}},{"unicode":1087,"advance":0.56494140625,"planeBounds":{"left":-0.030029296875,"bottom":-0.0859375,"right":0.594970703125,"top":0.6015625},"atlasBounds":{"left":365.5,"bottom":49.5,"right":405.5,"top":93.5}},{"unicode":1088,"advance":0.58740234375,"planeBounds":{"left":-0.02392578125,"bottom":-0.2578125,"right":0.63232421875,"top":0.6171875},"atlasBounds":{"left":431.5,"bottom":370.5,"right":473.5,"top":426.5}},{"unicode":1089,"advance":0.53515625,"planeBounds":{"left":-0.0498046875,"bottom":-0.1015625,"right":0.5908203125,"top":0.6171875},"atlasBounds":{"left":380.5,"bottom":94.5,"right":421.5,"top":140.5}},{"unicode":1090,"advance":0.47998046875,"planeBounds":{"left":-0.064697265625,"bottom":-0.0859375,"right":0.544677734375,"top":0.6015625},"atlasBounds":{"left":487.5,"bottom":49.5,"right":526.5,"top":93.5}},{"unicode":1091,"advance":0.53173828125,"planeBounds":{"left":-0.0703125,"bottom":-0.2734375,"right":0.6015625,"top":0.6015625},"atlasBounds":{"left":312.5,"bottom":198.5,"right":355.5,"top":254.5}},{"unicode":1092,"advance":0.736328125,"planeBounds":{"left":-0.0458984375,"bottom":-0.2578125,"right":0.7822265625,"top":0.7734375},"atlasBounds":{"left":132.5,"bottom":546.5,"right":185.5,"top":612.5}},{"unicode":1093,"advance":0.515625,"planeBounds":{"left":-0.06201171875,"bottom":-0.0859375,"right":0.57861328125,"top":0.6015625},"atlasBounds":{"left":527.5,"bottom":49.5,"right":568.5,"top":93.5}},{"unicode":1094,"advance":0.60107421875,"planeBounds":{"left":-0.031005859375,"bottom":-0.2265625,"right":0.672119140625,"top":0.6015625},"atlasBounds":{"left":452.5,"bottom":144.5,"right":497.5,"top":197.5}},{"unicode":1095,"advance":0.54443359375,"planeBounds":{"left":-0.037841796875,"bottom":-0.0859375,"right":0.571533203125,"top":0.6015625},"atlasBounds":{"left":569.5,"bottom":49.5,"right":608.5,"top":93.5}},{"unicode":1096,"advance":0.79345703125,"planeBounds":{"left":-0.025146484375,"bottom":-0.0859375,"right":0.818603515625,"top":0.6015625},"atlasBounds":{"left":74.5,"bottom":355.5,"right":128.5,"top":399.5}},{"unicode":1097,"advance":0.830078125,"planeBounds":{"left":-0.025634765625,"bottom":-0.2265625,"right":0.896240234375,"top":0.6015625},"atlasBounds":{"left":0.5,"bottom":166.5,"right":59.5,"top":219.5}},{"unicode":1098,"advance":0.60546875,"planeBounds":{"left":-0.061279296875,"bottom":-0.0859375,"right":0.657470703125,"top":0.6015625},"atlasBounds":{"left":258.5,"bottom":4.5,"right":304.5,"top":48.5}},{"unicode":1099,"advance":0.7041015625,"planeBounds":{"left":-0.03076171875,"bottom":-0.0859375,"right":0.73486328125,"top":0.6015625},"atlasBounds":{"left":634.5,"bottom":153.5,"right":683.5,"top":197.5}},{"unicode":1100,"advance":0.50341796875,"planeBounds":{"left":-0.025146484375,"bottom":-0.0859375,"right":0.552978515625,"top":0.6015625},"atlasBounds":{"left":449.5,"bottom":49.5,"right":486.5,"top":93.5}},{"unicode":1101,"advance":0.53515625,"planeBounds":{"left":-0.05517578125,"bottom":-0.1015625,"right":0.58544921875,"top":0.6171875},"atlasBounds":{"left":642.5,"bottom":208.5,"right":683.5,"top":254.5}},{"unicode":1102,"advance":0.7822265625,"planeBounds":{"left":-0.028076171875,"bottom":-0.1015625,"right":0.831298828125,"top":0.6171875},"atlasBounds":{"left":74.5,"bottom":400.5,"right":129.5,"top":446.5}},{"unicode":1103,"advance":0.52197265625,"planeBounds":{"left":-0.059326171875,"bottom":-0.0859375,"right":0.550048828125,"top":0.6015625},"atlasBounds":{"left":209.5,"bottom":49.5,"right":248.5,"top":93.5}},{"unicode":1105,"advance":0.548828125,"planeBounds":{"left":-0.045654296875,"bottom":-0.1015625,"right":0.594970703125,"top":0.8046875},"atlasBounds":{"left":277.5,"bottom":427.5,"right":318.5,"top":485.5}},{"unicode":1108,"advance":0.53515625,"planeBounds":{"left":-0.0498046875,"bottom":-0.1015625,"right":0.5908203125,"top":0.6171875},"atlasBounds":{"left":215.5,"bottom":94.5,"right":256.5,"top":140.5}},{"unicode":1110,"advance":0.236328125,"planeBounds":{"left":-0.030029296875,"bottom":-0.0859375,"right":0.266845703125,"top":0.8046875},"atlasBounds":{"left":360.5,"bottom":369.5,"right":379.5,"top":426.5}},{"unicode":1111,"advance":0.236328125,"planeBounds":{"left":-0.10693359375,"bottom":-0.0859375,"right":0.34619140625,"top":0.8046875},"atlasBounds":{"left":181.5,"bottom":369.5,"right":210.5,"top":426.5}},{"unicode":1169,"advance":0.4365234375,"planeBounds":{"left":-0.028076171875,"bottom":-0.0859375,"right":0.487548828125,"top":0.7421875},"atlasBounds":{"left":418.5,"bottom":144.5,"right":451.5,"top":197.5}}],"kerning":[]} diff --git a/src/main/resources/assets/evolution/fonts/msdf/semibold.png b/src/main/resources/assets/evolution/fonts/msdf/semibold.png new file mode 100644 index 0000000..d4c9c52 Binary files /dev/null and b/src/main/resources/assets/evolution/fonts/msdf/semibold.png differ diff --git a/src/main/resources/assets/evolution/fonts/msdf/semibold.png.mcmeta b/src/main/resources/assets/evolution/fonts/msdf/semibold.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/fonts/msdf/semibold.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/icons/avatar.png b/src/main/resources/assets/evolution/icons/avatar.png new file mode 100644 index 0000000..00f34a5 Binary files /dev/null and b/src/main/resources/assets/evolution/icons/avatar.png differ diff --git a/src/main/resources/assets/evolution/icons/avatar.png.mcmeta b/src/main/resources/assets/evolution/icons/avatar.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/icons/avatar.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/icons/bug.png b/src/main/resources/assets/evolution/icons/bug.png new file mode 100644 index 0000000..7278ed1 Binary files /dev/null and b/src/main/resources/assets/evolution/icons/bug.png differ diff --git a/src/main/resources/assets/evolution/icons/bug.png.mcmeta b/src/main/resources/assets/evolution/icons/bug.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/icons/bug.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/icons/huewheel.png b/src/main/resources/assets/evolution/icons/huewheel.png new file mode 100644 index 0000000..766ffcc Binary files /dev/null and b/src/main/resources/assets/evolution/icons/huewheel.png differ diff --git a/src/main/resources/assets/evolution/icons/huewheel.png.mcmeta b/src/main/resources/assets/evolution/icons/huewheel.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/icons/huewheel.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/icons/logo.png b/src/main/resources/assets/evolution/icons/logo.png new file mode 100644 index 0000000..11f0418 Binary files /dev/null and b/src/main/resources/assets/evolution/icons/logo.png differ diff --git a/src/main/resources/assets/evolution/icons/logo.png.mcmeta b/src/main/resources/assets/evolution/icons/logo.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/icons/logo.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/icons/media_next.png b/src/main/resources/assets/evolution/icons/media_next.png new file mode 100644 index 0000000..7e867da Binary files /dev/null and b/src/main/resources/assets/evolution/icons/media_next.png differ diff --git a/src/main/resources/assets/evolution/icons/media_next.png.mcmeta b/src/main/resources/assets/evolution/icons/media_next.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/icons/media_next.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/icons/media_note.png b/src/main/resources/assets/evolution/icons/media_note.png new file mode 100644 index 0000000..867d5c0 Binary files /dev/null and b/src/main/resources/assets/evolution/icons/media_note.png differ diff --git a/src/main/resources/assets/evolution/icons/media_note.png.mcmeta b/src/main/resources/assets/evolution/icons/media_note.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/icons/media_note.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/icons/media_pause.png b/src/main/resources/assets/evolution/icons/media_pause.png new file mode 100644 index 0000000..edb3975 Binary files /dev/null and b/src/main/resources/assets/evolution/icons/media_pause.png differ diff --git a/src/main/resources/assets/evolution/icons/media_pause.png.mcmeta b/src/main/resources/assets/evolution/icons/media_pause.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/icons/media_pause.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/icons/media_play.png b/src/main/resources/assets/evolution/icons/media_play.png new file mode 100644 index 0000000..50cd6b9 Binary files /dev/null and b/src/main/resources/assets/evolution/icons/media_play.png differ diff --git a/src/main/resources/assets/evolution/icons/media_play.png.mcmeta b/src/main/resources/assets/evolution/icons/media_play.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/icons/media_play.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/icons/media_prev.png b/src/main/resources/assets/evolution/icons/media_prev.png new file mode 100644 index 0000000..874c66d Binary files /dev/null and b/src/main/resources/assets/evolution/icons/media_prev.png differ diff --git a/src/main/resources/assets/evolution/icons/media_prev.png.mcmeta b/src/main/resources/assets/evolution/icons/media_prev.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/icons/media_prev.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/icons/separator.png b/src/main/resources/assets/evolution/icons/separator.png new file mode 100644 index 0000000..67a0178 Binary files /dev/null and b/src/main/resources/assets/evolution/icons/separator.png differ diff --git a/src/main/resources/assets/evolution/icons/separator.png.mcmeta b/src/main/resources/assets/evolution/icons/separator.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/icons/separator.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/icons/sliderhue.png b/src/main/resources/assets/evolution/icons/sliderhue.png new file mode 100644 index 0000000..1de537c Binary files /dev/null and b/src/main/resources/assets/evolution/icons/sliderhue.png differ diff --git a/src/main/resources/assets/evolution/icons/sliderhue.png.mcmeta b/src/main/resources/assets/evolution/icons/sliderhue.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/icons/sliderhue.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/icons/slidertransparent.png b/src/main/resources/assets/evolution/icons/slidertransparent.png new file mode 100644 index 0000000..550d82b Binary files /dev/null and b/src/main/resources/assets/evolution/icons/slidertransparent.png differ diff --git a/src/main/resources/assets/evolution/icons/slidertransparent.png.mcmeta b/src/main/resources/assets/evolution/icons/slidertransparent.png.mcmeta new file mode 100644 index 0000000..0ec186a --- /dev/null +++ b/src/main/resources/assets/evolution/icons/slidertransparent.png.mcmeta @@ -0,0 +1,6 @@ +{ + "texture": { + "blur": true, + "clamp": true + } +} diff --git a/src/main/resources/assets/evolution/models/model.params b/src/main/resources/assets/evolution/models/model.params new file mode 100644 index 0000000..2627d93 Binary files /dev/null and b/src/main/resources/assets/evolution/models/model.params differ diff --git a/src/main/resources/assets/evolution/models/slow.params b/src/main/resources/assets/evolution/models/slow.params new file mode 100644 index 0000000..809b4f2 Binary files /dev/null and b/src/main/resources/assets/evolution/models/slow.params differ diff --git a/src/main/resources/assets/evolution/models/tf-0100.params b/src/main/resources/assets/evolution/models/tf-0100.params new file mode 100644 index 0000000..fef57a6 Binary files /dev/null and b/src/main/resources/assets/evolution/models/tf-0100.params differ diff --git a/src/main/resources/assets/evolution/native/macos/evovis-audiotap b/src/main/resources/assets/evolution/native/macos/evovis-audiotap new file mode 100644 index 0000000..2ad0dc5 Binary files /dev/null and b/src/main/resources/assets/evolution/native/macos/evovis-audiotap differ diff --git a/src/main/resources/assets/evolution/shaders/core/block_glass/data.json b/src/main/resources/assets/evolution/shaders/core/block_glass/data.json new file mode 100644 index 0000000..05890e1 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/block_glass/data.json @@ -0,0 +1,15 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/block_glass/fragment", + "samplers": [ + { "name": "Sampler0" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Resolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "TintColor", "type": "float", "count": 3, "values": [ 1.0, 1.0, 1.0 ] }, + { "name": "Fade", "type": "float", "count": 1, "values": [ 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/block_glass/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/block_glass/fragment.fsh new file mode 100644 index 0000000..a56a9e3 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/block_glass/fragment.fsh @@ -0,0 +1,77 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; + +uniform sampler2D Sampler0; + +out vec4 OutColor; + +#define GLASS_BEND 0.06 +#define GLASS_EDGE 0.22 +#define GLASS_CHROMATIC 1.22 +#define GLASS_FROST 6.0 +#define GLASS_MAX_SHIFT 60.0 + +void main() { + float alpha = Fade; + if (alpha <= 0.004) { + discard; + } + + vec2 uv = gl_FragCoord.xy / Resolution; + vec2 texel = 1.0 / Resolution; + + vec2 p = FragColor.rg * 2.0 - 1.0; + + vec2 gu = vec2(dFdx(FragColor.r), dFdy(FragColor.r)); + vec2 gv = vec2(dFdx(FragColor.g), dFdy(FragColor.g)); + + float bendU = p.x * (GLASS_BEND + GLASS_EDGE * p.x * p.x); + float bendV = p.y * (GLASS_BEND + GLASS_EDGE * p.y * p.y); + + vec2 shiftPx = vec2(0.0); + float lu = dot(gu, gu); + float lv = dot(gv, gv); + if (lu > 1e-12) { + shiftPx += gu * (bendU / lu); + } + if (lv > 1e-12) { + shiftPx += gv * (bendV / lv); + } + + float len = length(shiftPx); + if (len > GLASS_MAX_SHIFT) { + shiftPx *= GLASS_MAX_SHIFT / len; + } + vec2 refr = shiftPx * texel; + + vec3 scene; + scene.r = texture(Sampler0, uv + refr).r; + scene.g = texture(Sampler0, uv + refr * GLASS_CHROMATIC).g; + scene.b = texture(Sampler0, uv + refr * GLASS_CHROMATIC * GLASS_CHROMATIC).b; + + vec3 frost = vec3(0.0); + for (int i = 0; i < 8; i++) { + float ang = 0.785398 * float(i) + 0.39; + vec2 dir = vec2(cos(ang), sin(ang)) * texel * GLASS_FROST; + frost += texture(Sampler0, uv + refr + dir).rgb; + frost += texture(Sampler0, uv + refr + dir * 0.45).rgb; + } + scene = mix(scene, frost * 0.0625, 0.6); + + float luma = dot(scene, vec3(0.299, 0.587, 0.114)); + scene = mix(vec3(luma), scene, 1.25); + scene = scene * 1.08 + 0.02; + + scene = mix(scene, scene * (0.75 + 0.5 * TintColor), 0.2); + + float edge = max(abs(p.x), abs(p.y)); + float rim = smoothstep(0.72, 1.0, edge); + scene += rim * 0.25 * mix(vec3(1.0), TintColor, 0.4); + + OutColor = vec4(clamp(scene, 0.0, 1.0), alpha); +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/alien_nebula/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/blockoverlay/alien_nebula/fragment.fsh new file mode 100644 index 0000000..cc61b19 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/alien_nebula/fragment.fsh @@ -0,0 +1,84 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +in vec3 WorldPos; +out vec4 OutColor; + +vec3 hsv2rgb(vec3 c) { + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +vec3 rgb2hsv(vec3 c) { + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.x) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +float an_stars(vec2 p, float t) { + vec2 cell = floor(p * 12.0); + float n = hash12(cell); + float rare = step(0.976, n); + vec2 f = fract(p * 12.0) - 0.5; + vec2 jitter = vec2(hash12(cell + 7.3), hash12(cell + 3.1)) - 0.5; + float spot = smoothstep(0.22, 0.04, length(f - jitter * 0.5)); + return rare * spot * (0.55 + 0.45 * sin(t * 3.0 + n * 30.0)); +} + +void main() { + vec3 faceN = normalize(cross(dFdx(WorldPos), dFdy(WorldPos))); + vec3 an = abs(faceN); + vec2 p; + if (an.y > an.x && an.y > an.z) { + p = WorldPos.xz; + } else if (an.x > an.z) { + p = WorldPos.zy; + } else { + p = WorldPos.xy; + } + + float t = Time; + vec2 uv = p * 3.0; + + vec2 q = vec2(fbm(uv + t * 0.05), fbm(uv + vec2(5.2, 1.3) - t * 0.04)); + float n = fbm(uv + q * 2.0 + t * 0.03); + + vec3 baseHsv = rgb2hsv(TintColor); + float hue = baseHsv.x; + float sat = min(baseHsv.y * 1.2, 1.0); + float val = max(baseHsv.z, 0.75); + + vec3 c1 = hsv2rgb(vec3(fract(hue - 0.06 + 1.0), sat, val * 0.14)); + vec3 c2 = hsv2rgb(vec3(hue, sat, val * 0.5)); + vec3 c3 = hsv2rgb(vec3(fract(hue + 0.07), sat, val * 0.95)); + vec3 c4 = hsv2rgb(vec3(fract(hue + 0.15), sat * 0.85, val)); + + vec3 color = mix(c1, c2, smoothstep(0.2, 0.5, n)); + color = mix(color, c3, smoothstep(0.5, 0.72, n)); + color = mix(color, c4, smoothstep(0.72, 0.9, n) * (0.5 + 0.5 * sin(t * 1.5))); + + float star = an_stars(p, t); + color += vec3(0.9, 0.95, 1.0) * star; + + vec3 viewDir = normalize(CameraPos - WorldPos); + vec3 nrm = faceN * sign(dot(faceN, viewDir) + 1e-4); + vec3 lightDir = normalize(vec3(0.5, 0.9, 0.4)); + vec3 halfDir = normalize(lightDir + viewDir); + float spec = pow(max(dot(nrm, halfDir), 0.0), 24.0) * 0.3; + + vec3 emissive = c3 * smoothstep(0.62, 0.9, n) * 1.2; + + float pulse = 0.9 + 0.1 * sin(t * 0.9 + n * 6.0); + color = clamp((color + emissive) * pulse + spec, 0.0, 1.0); + + float finalAlpha = Fade * clamp(0.62 + 0.3 * smoothstep(0.35, 0.85, n) + 0.4 * star, 0.0, 1.0); + OutColor = vec4(color, finalAlpha * FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/alien_nebula/world_data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/alien_nebula/world_data.json new file mode 100644 index 0000000..fdc99da --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/alien_nebula/world_data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color_world", + "fragment": "evolution:core/blockoverlay/alien_nebula/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/cobweb/data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/cobweb/data.json new file mode 100644 index 0000000..84cd86d --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/cobweb/data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/blockoverlay/cobweb/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/cobweb/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/blockoverlay/cobweb/fragment.fsh new file mode 100644 index 0000000..844afbf --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/cobweb/fragment.fsh @@ -0,0 +1,68 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +out vec4 OutColor; + +#define time Time +#define screenSize Resolution +#define baseColor vec4(TintColor, 1.0) +#define alpha Fade +#define fragColor OutColor + +const vec3 eps = vec3(0.001, 0., 0.); +const int iter = 64; +const float sq = 0.70710678; + +float c(vec3 p) { + vec3 q = abs(mod(p + vec3(cos(p.z*0.5), cos(p.x*0.5), cos(p.y*0.5)), 2.0) - 1.0); + float a = q.x + q.y + q.z - min(min(q.x, q.y), q.z) - max(max(q.x, q.y), q.z); + q = vec3(p.x+p.y, p.y+p.z, p.z+p.x) * sq; + q = abs(mod(q, 2.0) - 1.0); + float b = q.x + q.y + q.z - min(min(q.x, q.y), q.z) - max(max(q.x, q.y), q.z); + return min(a, b); +} + +vec3 n(vec3 p) { + float o = c(p); + return normalize(o - vec3(c(p - eps), c(p - eps.zxy), c(p - eps.yzx))); +} + +void main() { + float aspect = screenSize.x / screenSize.y; + vec2 p = gl_FragCoord.xy / screenSize * 2. - 1.; + vec2 m = vec2(sin(time * 0.3) * 0.3, cos(time * 0.2) * 0.3); + p.x *= aspect; + m.x *= aspect; + + vec3 o = vec3(0., 0., time * 0.5); + vec3 s = vec3(m, 0.); + vec3 b = vec3(0., 0., 0.); + vec3 d = vec3(p, 1.) / 32.; + vec3 t = vec3(.5); + vec3 a; + + for (int i = 0; i < iter; ++i) { + float h = c(b + s + o); + b += h * 10.0 * d; + t += h; + } + t /= float(iter); + a = n(b + s + o); + float x = dot(a, t); + + vec3 diffuse = baseColor.rgb; + t = (t + pow(x, 4.)) * (1. - t * .01) * diffuse; + t *= b.z * 0.125; + + vec2 vig = p * 0.43; + vig.y *= aspect; + float vig_amount = 1.0 - length(vig) * 0.5; + + vec4 color = vec4(t * 3.0, 1.) * vig_amount; + + fragColor = vec4(color.rgb, alpha * 0.5 * FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/cobweb/world_data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/cobweb/world_data.json new file mode 100644 index 0000000..84cd86d --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/cobweb/world_data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/blockoverlay/cobweb/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/cape_data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/cape_data.json new file mode 100644 index 0000000..9f9f55b --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/cape_data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/blockoverlay/holy/holy_fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/data.json new file mode 100644 index 0000000..9f9f55b --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/blockoverlay/holy/holy_fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/holy_fragment.fsh b/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/holy_fragment.fsh new file mode 100644 index 0000000..2825f65 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/holy_fragment.fsh @@ -0,0 +1,49 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +out vec4 OutColor; + +#define time Time +#define screenSize Resolution +#define alpha Fade +#define fragColor OutColor + +float holyRand(vec2 n) { return fract(cos(dot(n, vec2(12.9898, 4.1414))) * 43758.5453); } +float holyNoise(vec2 n) { + const vec2 d = vec2(0.0, 1.0); + vec2 b = floor(n), f = smoothstep(vec2(0.0), vec2(1.0), fract(n)); + return mix(mix(holyRand(b), holyRand(b + d.yx), f.x), mix(holyRand(b + d.xy), holyRand(b + d.yy), f.x), f.y); +} +float holyFbm(vec2 n) { + float total = 0.0, amplitude = 1.6; + for (int i = 0; i < 4; i++) { total += holyNoise(n) * amplitude; n += n; amplitude *= 0.5; } + return total; +} + +void main() { + vec2 fragCoord = gl_FragCoord.xy; + vec3 c1 = vec3(126.0 / 255.0, 0.0, 97.0 / 255.0); + vec3 c2 = vec3(173.0 / 255.0, 0.0, 161.4 / 255.0); + vec3 c3 = vec3(0.2, 0.0, 0.0); + vec3 c4 = vec3(164.0 / 255.0, 1.0 / 255.0, 214.4 / 255.0); + vec3 c5 = vec3(0.1); + vec3 c6 = vec3(0.9); + + vec2 p = fragCoord * 8.0 / screenSize.xx; + float q = holyFbm(p - time * 0.1); + vec2 r = vec2(holyFbm(p + q + time - p.x - p.y), holyFbm(p + q - time)); + vec3 c = mix(c1, c2, holyFbm(p + r)) + mix(c3, c4, r.y) - mix(c5, c6, r.x); + + float grad = fragCoord.y / screenSize.y; + vec3 result = c * cos(1.6 * fragCoord.y / screenSize.y); + result *= 1.0 - grad; + + result = max(result, vec3(0.0)) * 2.6 + vec3(0.10, 0.0, 0.09); + result = clamp(result, 0.0, 1.0); + + fragColor = vec4(result, alpha * 0.4 * FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/world_data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/world_data.json new file mode 100644 index 0000000..a2f83ae --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/world_data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/blockoverlay/holy/world_fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/world_fragment.fsh b/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/world_fragment.fsh new file mode 100644 index 0000000..bca2380 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/holy/world_fragment.fsh @@ -0,0 +1,68 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +out vec4 OutColor; + +#define time Time +#define screenSize Resolution +#define baseColor vec4(TintColor, 1.0) +#define alpha Fade +#define fragColor OutColor + +#define NUM_OCTAVES 4 + +float holyRand(vec2 n) { + return fract(cos(dot(n, vec2(12.9898, 4.1414))) * 43758.5453); +} + +float holyNoise(vec2 n) { + const vec2 d = vec2(0.0, 1.0); + vec2 b = floor(n); + vec2 f = smoothstep(vec2(0.0), vec2(1.0), fract(n)); + return mix(mix(holyRand(b), holyRand(b + d.yx), f.x), mix(holyRand(b + d.xy), holyRand(b + d.yy), f.x), f.y); +} + +float holyFbm(vec2 n) { + float total = 0.0; + float amplitude = 1.6; + for (int i = 0; i < NUM_OCTAVES; i++) { + total += holyNoise(n) * amplitude; + n += n; + amplitude *= 0.5; + } + return total; +} + +void main() { + vec2 fragCoord = gl_FragCoord.xy; + + vec3 tint = baseColor.rgb; + vec3 c1 = tint * 0.5; + vec3 c2 = tint * 0.85; + vec3 c3 = vec3(0.08); + vec3 c4 = tint * 1.25; + vec3 c5 = vec3(0.1); + vec3 c6 = vec3(0.9); + + vec2 p = fragCoord * 8.0 / screenSize.xx; + float q = holyFbm(p - time * 0.1); + vec2 r = vec2(holyFbm(p + q + time - p.x - p.y), holyFbm(p + q - time)); + vec3 c = mix(c1, c2, holyFbm(p + r)) + mix(c3, c4, r.y) - mix(c5, c6, r.x); + + float grad = fragCoord.y / screenSize.y; + vec3 color = c * cos(1.6 * grad); + color *= 1.0 - grad; + + color = max(color, vec3(0.0)) * 1.7; + color = color / (color + vec3(0.85)); + color += tint * 0.1; + color = clamp(color, 0.0, 1.0); + + float glow = clamp(length(color), 0.0, 1.0); + + fragColor = vec4(color, alpha * (0.22 + glow * 0.42) * FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/living_armor/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/blockoverlay/living_armor/fragment.fsh new file mode 100644 index 0000000..a7b4cb2 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/living_armor/fragment.fsh @@ -0,0 +1,72 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +in vec3 WorldPos; +out vec4 OutColor; + +const float HEX_SCALE = 3.0; + +float hexEdge(vec2 gv) { + float d = max(abs(gv.x), max(abs(gv.x * 0.5 + gv.y * 0.8660254), abs(gv.x * 0.5 - gv.y * 0.8660254))); + return 0.5 - d; +} + +vec4 hexGrid(vec2 p) { + p *= HEX_SCALE; + vec2 h = vec2(1.0, 1.7320508); + vec2 a = mod(p, h) - h * 0.5; + vec2 b = mod(p + h * 0.5, h) - h * 0.5; + vec2 gv = dot(a, a) < dot(b, b) ? a : b; + return vec4(hexEdge(gv), length(gv), p - gv); +} + +void main() { + vec3 faceN = normalize(cross(dFdx(WorldPos), dFdy(WorldPos))); + vec3 an = abs(faceN); + vec2 uv; + if (an.y > an.x && an.y > an.z) { + uv = WorldPos.xz; + } else if (an.x > an.z) { + uv = WorldPos.zy; + } else { + uv = WorldPos.xy; + } + + vec4 hx = hexGrid(uv); + float edgeDist = hx.x; + vec2 cellId = hx.zw; + + float t = Time; + + vec3 metal = vec3(0.055, 0.06, 0.075); + metal += 0.02 * sin(uv.y * 180.0 + uv.x * 40.0); + metal *= 0.85 + 0.3 * hash12(cellId); + metal += 0.04 * smoothstep(0.05, 0.35, edgeDist); + + vec3 viewDir = normalize(CameraPos - WorldPos); + vec3 n = faceN * sign(dot(faceN, viewDir) + 1e-4); + vec3 lightDir = normalize(vec3(0.5, 0.9, 0.4)); + vec3 halfDir = normalize(lightDir + viewDir); + float spec = pow(max(dot(n, halfDir), 0.0), 24.0) * 0.25; + + float groove = smoothstep(0.09, 0.02, edgeDist); + float core = smoothstep(0.045, 0.0, edgeDist); + + float pulse = 0.6 + 0.4 * sin(t * 2.0); + float phase = hash12(cellId) * 6.2831; + float wave = 0.5 + 0.5 * sin(t * 2.6 - dot(cellId, vec2(0.9, 1.7)) + phase * 0.35); + float glow = groove * (0.2 + 0.8 * pulse * wave); + + vec3 tint = TintColor; + vec3 glowCol = mix(tint * 0.3, tint * 1.1 + vec3(0.2), core * glow); + + vec3 color = metal + spec + glowCol * glow * 2.2; + color = clamp(color, 0.0, 1.0); + + float finalAlpha = Fade * clamp(0.7 + glow * 0.5, 0.0, 1.0); + OutColor = vec4(color, finalAlpha * FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/living_armor/world_data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/living_armor/world_data.json new file mode 100644 index 0000000..8e505c2 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/living_armor/world_data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color_world", + "fragment": "evolution:core/blockoverlay/living_armor/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/matrix/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/blockoverlay/matrix/fragment.fsh new file mode 100644 index 0000000..5897c29 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/matrix/fragment.fsh @@ -0,0 +1,64 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +out vec4 OutColor; + +float matrix_hash(vec2 p) { + return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123); +} + +float matrix_glyph(vec2 cellUv, vec2 id, float t) { + float switchSeed = floor(t * (1.5 + matrix_hash(id) * 5.0)); + vec2 g = floor(cellUv * vec2(4.0, 5.0)); + float bit = step(0.4, matrix_hash(g * 0.31 + id * 3.7 + switchSeed * vec2(11.3, 17.9))); + vec2 f = fract(cellUv * vec2(4.0, 5.0)); + vec2 border = step(vec2(0.15), f) * step(f, vec2(0.85)); + vec2 margin = step(vec2(0.08), cellUv) * step(cellUv, vec2(0.92)); + return bit * border.x * border.y * margin.x * margin.y; +} + +void main() { + vec2 uv = gl_FragCoord.xy / Resolution; + float aspect = Resolution.x / Resolution.y; + vec2 p = vec2(uv.x * aspect, uv.y); + float t = Time; + + vec3 tint = TintColor; + vec3 color = tint * 0.12; + float intensity = 0.0; + + for (int layer = 0; layer < 3; layer++) { + float fl = float(layer); + float scale = 26.0 + fl * 14.0; + vec2 q = p * vec2(scale * 0.55, scale) + vec2(fl * 37.31, fl * 11.7); + + float colId = floor(q.x); + float colSpeed = 2.5 + matrix_hash(vec2(colId, fl)) * 6.0; + float colOffset = matrix_hash(vec2(colId, fl + 5.0)) * 100.0; + q.y += t * colSpeed + colOffset; + + vec2 id = floor(q); + vec2 cellUv = fract(q); + + float trailLen = 10.0 + floor(matrix_hash(vec2(colId, fl + 9.0)) * 14.0); + float phase = fract(id.y / trailLen); + float fade = pow(1.0 - phase, 1.6); + float head = step(phase, 1.0 / trailLen); + + float glyph = matrix_glyph(cellUv, id, t); + float layerFade = 1.0 - fl * 0.3; + float contrib = glyph * fade * layerFade; + + vec3 streak = mix(tint * 2.2, vec3(1.2), head * 0.85); + color += streak * contrib; + intensity = max(intensity, contrib); + } + + color = clamp(color, 0.0, 1.6); + float alpha = Fade * FragColor.a * (0.3 + 0.7 * clamp(intensity, 0.0, 1.0)); + OutColor = vec4(color, alpha); +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/matrix/world_data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/matrix/world_data.json new file mode 100644 index 0000000..439421e --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/matrix/world_data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/blockoverlay/matrix/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/nebula/data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/nebula/data.json new file mode 100644 index 0000000..56d7df1 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/nebula/data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/blockoverlay/nebula/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/nebula/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/blockoverlay/nebula/fragment.fsh new file mode 100644 index 0000000..4038533 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/nebula/fragment.fsh @@ -0,0 +1,77 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +out vec4 OutColor; + +#define time Time +#define screenSize Resolution +#define baseColor vec4(TintColor, 1.0) +#define alpha Fade +#define fragColor OutColor + +#define NUM_OCTAVES 5 + +float random(vec2 pos) { + return fract(sin(dot(pos.xy, vec2(13.9898, 78.233))) * 43758.5453123); +} + +float noise(vec2 pos) { + vec2 i = floor(pos); + vec2 f = fract(pos); + float a = random(i + vec2(0.0, 0.0)); + float b = random(i + vec2(1.0, 0.0)); + float c = random(i + vec2(0.0, 1.0)); + float d = random(i + vec2(1.0, 1.0)); + vec2 u = f * f * (3.0 - 2.0 * f); + return mix(a, b, u.x) + (c - a) * u.y * (1.0 - u.x) + (d - b) * u.x * u.y; +} + +float fbm(vec2 pos, float t) { + float v = 0.0; + float a = 0.5; + vec2 shift = vec2(100.0); + mat2 rot = mat2(cos(0.5), sin(0.5), -sin(0.5), cos(0.5)); + for (int i = 0; i < NUM_OCTAVES; i++) { + float dir = mod(float(i), 2.0) > 0.5 ? 1.0 : -1.0; + v += a * noise(pos + dir * t * 0.3); + pos = rot * pos * 2.0 + shift; + a *= 0.5; + } + return v; +} + +void main(void) { + vec2 uv = gl_FragCoord.xy / screenSize; + vec2 p = (uv * 2.0 - 1.0) * 3.0; + + float t = time; + + vec2 q = vec2(0.0); + q.x = fbm(p + vec2(0.0, 0.0), t * 0.8); + q.y = fbm(p + vec2(1.0, 1.0), t * 0.6); + + vec2 r = vec2(0.0); + r.x = fbm(p + 1.0 * q + vec2(1.7, 1.2), t * 0.7); + r.y = fbm(p + 1.0 * q + vec2(8.3, 2.8), t * 0.9); + + float f = fbm(p + r, t); + + vec3 color1 = baseColor.rgb * 1.4; + vec3 color2 = baseColor.rgb * 0.5; + vec3 color3 = baseColor.rgb * 0.8; + + vec3 color = mix(color1, color2, clamp((f * f) * 4.0, 0.0, 1.0)); + color = mix(color, color1, clamp(length(q), 0.0, 1.0)); + color = mix(color, color3, clamp(length(r.x), 0.0, 1.0)); + + color = (f * f * f + 0.6 * f * f + 0.5 * f) * color; + color = clamp(color * 1.8, 0.0, 1.0); + + float finalAlpha = alpha * (0.15 + f * 0.25); + + fragColor = vec4(color, finalAlpha * FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/nebula/world_data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/nebula/world_data.json new file mode 100644 index 0000000..56d7df1 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/nebula/world_data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/blockoverlay/nebula/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/plasma/data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/plasma/data.json new file mode 100644 index 0000000..67f50f5 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/plasma/data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/blockoverlay/plasma/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/plasma/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/blockoverlay/plasma/fragment.fsh new file mode 100644 index 0000000..2ac2003 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/plasma/fragment.fsh @@ -0,0 +1,64 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +out vec4 OutColor; + +#define time Time +#define screenSize Resolution +#define baseColor vec4(TintColor, 1.0) +#define alpha Fade +#define fragColor OutColor + +float plasma(vec2 uv, float t) { + float v = 0.0; + + v += sin(uv.x * 10.0 + t); + v += sin((uv.y * 10.0 + t) * 0.5); + v += sin((uv.x * 10.0 + uv.y * 10.0 + t) * 0.5); + + vec2 c = uv * 10.0 - vec2(5.0); + v += sin(sqrt(c.x * c.x + c.y * c.y + 1.0) + t); + + c = uv * 10.0 - vec2(5.0 + sin(t * 0.5) * 3.0, 5.0 + cos(t * 0.7) * 3.0); + v += sin(sqrt(c.x * c.x + c.y * c.y + 1.0) + t * 1.5); + + return v * 0.2; +} + +vec3 hsv2rgb(vec3 c) { + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +void main() { + vec2 uv = gl_FragCoord.xy / screenSize; + + float t = time * 0.8; + + float p = plasma(uv, t); + + float hue = p + time * 0.1; + + vec3 rainbow = hsv2rgb(vec3(hue, 0.8, 1.0)); + vec3 base = baseColor.rgb; + + float flowVal = 0.8 + p * 0.4; + vec3 color = baseColor.rgb * flowVal; + + float glow = pow(abs(sin(p * 3.14159 * 2.0)), 2.0) * 0.5; + color += baseColor.rgb * glow; + + float pulse = 0.8 + sin(time * 2.0 + p * 5.0) * 0.2; + color *= pulse; + + color = clamp(color, 0.0, 1.0); + + float finalAlpha = alpha * (0.3 + abs(sin(p * 3.14159)) * 0.4); + + fragColor = vec4(color, finalAlpha * FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/plasma/world_data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/plasma/world_data.json new file mode 100644 index 0000000..67f50f5 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/plasma/world_data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/blockoverlay/plasma/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/cape_data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/cape_data.json new file mode 100644 index 0000000..587e794 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/cape_data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/blockoverlay/starfield/cape_fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/cape_fragment.fsh b/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/cape_fragment.fsh new file mode 100644 index 0000000..669ec70 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/cape_fragment.fsh @@ -0,0 +1,105 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +out vec4 OutColor; + +#define time Time +#define screenSize Resolution +#define baseColor vec4(TintColor, 1.0) +#define alpha Fade +#define fragColor OutColor + +float field(vec3 p) { + float strength = 7.0 + 0.03 * log(1.0e-6 + fract(sin(time) * 4373.11)); + float accum = 0.0, prev = 0.0, tw = 0.0; + for (int i = 0; i < 6; ++i) { + float mag = dot(p, p); + p = abs(p) / mag + vec3(-0.5, -0.8 + 0.1 * sin(time * 0.7 + 2.0), -1.1 + 0.3 * cos(time * 0.3)); + float w = exp(-float(i) / 7.0); + accum += w * exp(-strength * pow(abs(mag - prev), 2.3)); + tw += w; prev = mag; + } + return max(0.0, 5.0 * accum / tw - 0.7); +} + +void main() { + vec2 uv2 = gl_FragCoord.xy / screenSize; + vec2 uv = uv2 * 2.0 - 1.0; + + float time2 = time; + float speed = -0.004 * cos(time2 * 0.02 + 3.1415926 / 4.0); + float formuparam = 0.5; + + float a_xz = 0.9; + float a_yz = -0.6; + float a_xy = 0.9 + time * 0.04; + + mat2 rot_xz = mat2(cos(a_xz), sin(a_xz), -sin(a_xz), cos(a_xz)); + mat2 rot_yz = mat2(cos(a_yz), sin(a_yz), -sin(a_yz), cos(a_yz)); + mat2 rot_xy = mat2(cos(a_xy), sin(a_xy), -sin(a_xy), cos(a_xy)); + + vec3 dir = vec3(uv * 0.900, 1.0); + vec3 from = vec3(0.0); + vec3 forward = vec3(0.0, 0.0, 1.0); + from.x += 0.18 * 6.0 * cos(0.3 * time) + 0.01 * time; + from.y += 0.18 * 6.0 * sin(0.2 * time) + 0.01 * time; + dir.x -= 0.4 * (0.18 * 7.0 * cos(0.3 * time) + 0.01 * time); + dir.y += 0.2 * (0.18 * 7.0 * sin(0.2 * time) + 0.01 * time); + from.z += 0.009 * time; + + dir.xy *= rot_xy; forward.xy *= rot_xy; + dir.xz *= rot_xz; forward.xz *= rot_xz; + dir.yz *= rot_yz; forward.yz *= rot_yz; + from.xy *= -rot_xy; from.xz *= rot_xz; from.yz *= rot_yz; + + float zooom = (time2 - 3311.0) * speed; + from += forward * zooom; + float sampleShift = mod(zooom, 0.290); + float zoffset = -sampleShift; + sampleShift /= 0.290; + + float s = 0.24, s3 = 0.24 + 0.290 / 2.0; + vec3 v = vec3(0.0); + float t3 = 0.0; + vec3 backCol2 = vec3(0.0); + for (int r = 0; r < 8; r++) { + vec3 p2 = from + (s + zoffset) * dir; + vec3 p3 = from + (s3 + zoffset) * dir; + p2 = abs(vec3(0.95) - mod(p2, vec3(0.95 * 2.0))); + p3 = abs(vec3(0.95) - mod(p3, vec3(0.95 * 2.0))); + t3 = field(p3); + float pa = 0.0, a = 0.0; + for (int i = 0; i < 10; i++) { + p2 = abs(p2) / dot(p2, p2) - formuparam; + float D = abs(length(p2) - pa); + a += i > 7 ? min(12.0, D) : D; + pa = length(p2); + } + a *= a * a; + float s1 = s + zoffset; + float fade = pow(0.66, max(0.0, float(r) - sampleShift)); + v += fade; + if (r == 0) fade *= (1.0 - sampleShift); + if (r == 7) fade *= sampleShift; + v += vec3(s1, s1 * s1, s1 * s1 * s1 * s1) * a * 0.003 * fade; + backCol2 += mix(0.0, 1.0, fade) * vec3(1.8 * t3 * t3 * t3, 1.4 * t3 * t3, t3) * fade; + s += 0.290; s3 += 0.290; + } + v = mix(vec3(length(v)), v, 0.800); + + vec3 forCol2 = v * 0.01; + backCol2 *= 0.31; + backCol2.b *= 1.8; + backCol2.r *= 0.05; + backCol2.b = 0.5 * mix(backCol2.g, backCol2.b, 0.8); + backCol2.g = 0.0; + + vec3 galaxy = forCol2 + backCol2; + vec3 result = galaxy * baseColor.rgb * 2.0; + + fragColor = vec4(result, alpha * 0.4 * FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/data.json new file mode 100644 index 0000000..5b3aa3e --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/blockoverlay/starfield/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/fragment.fsh new file mode 100644 index 0000000..0739d2a --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/fragment.fsh @@ -0,0 +1,142 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +out vec4 OutColor; + +#define time Time +#define screenSize Resolution +#define baseColor vec4(TintColor, 1.0) +#define alpha Fade +#define fragColor OutColor + +#define iterations 14 +#define formuparam2 0.79 +#define volsteps 5 +#define stepsize 0.390 +#define zoom 0.900 +#define tile 0.850 +#define brightness 0.003 +#define darkmatter 0.400 +#define distfading 0.560 +#define saturation 0.800 +#define transverseSpeed 1.8 +#define cloud 0.11 + +float triangle(float x, float a) { + return 2.0 * abs(2.0 * ((x/a) - floor((x/a) + 0.5))) - 1.0; +} + +float field(in vec3 p) { + float strength = 7. + .03 * log(1.e-6 + fract(sin(time) * 4373.11)); + float accum = 0.; + float prev = 0.; + float tw = 0.; + + float mag = dot(p, p); + p = abs(p) / mag + vec3(-.5, -.8 + 0.1*sin(time*0.7 + 2.0), -1.1+0.3*cos(time*0.3)); + float w = exp(0.); + accum += w * exp(-strength * pow(abs(mag - prev), 2.3)); + tw += w; + prev = mag; + + return max(0., 5. * accum / tw - .7); +} + +void main() { + vec2 uv2 = gl_FragCoord.xy / screenSize; + vec2 uvs = uv2 * 2.0 - 1.0; + + float time2 = time; + float speed = .01 * cos(time2*0.02 + 3.1415926/4.0); + float formuparam = formuparam2; + + vec2 uv = uvs; + + float a_xz = 0.9; + float a_yz = -.6; + float a_xy = 0.9 + time*0.08; + + mat2 rot_xz = mat2(cos(a_xz),sin(a_xz),-sin(a_xz),cos(a_xz)); + mat2 rot_yz = mat2(cos(a_yz),sin(a_yz),-sin(a_yz),cos(a_yz)); + mat2 rot_xy = mat2(cos(a_xy),sin(a_xy),-sin(a_xy),cos(a_xy)); + + vec3 dir = vec3(uv*zoom, 1.); + vec3 from = vec3(0.0, 0.0, 0.0); + + vec3 forward = vec3(0.,0.,1.); + from.x += transverseSpeed * cos(0.01*time) + 0.001*time; + from.y += transverseSpeed * sin(0.01*time) + 0.001*time; + from.z += 0.003*time; + + dir.xy *= rot_xy; + forward.xy *= rot_xy; + dir.xz *= rot_xz; + forward.xz *= rot_xz; + dir.yz *= rot_yz; + forward.yz *= rot_yz; + + from.xy *= -rot_xy; + from.xz *= rot_xz; + from.yz *= rot_yz; + + float zooom = (time2-3311.)*speed; + from += forward * zooom; + float sampleShift = mod(zooom, stepsize); + float zoffset = -sampleShift; + sampleShift /= stepsize; + + float s = 0.24; + float s3 = s + stepsize/2.0; + vec3 v = vec3(0.); + float t3 = 0.0; + + vec3 backCol2 = vec3(0.); + for (int r = 0; r < volsteps; r++) { + vec3 p2 = from + (s+zoffset)*dir; + vec3 p3 = from + (s3+zoffset)*dir; + + p2 = abs(vec3(tile) - mod(p2, vec3(tile*2.))); + p3 = abs(vec3(tile) - mod(p3, vec3(tile*2.))); + t3 = field(p3); + + float pa = 0., a = 0.; + for (int i = 0; i < iterations; i++) { + p2 = abs(p2)/dot(p2,p2) - formuparam; + float D = abs(length(p2)-pa); + a += i > 7 ? min(12., D) : D; + pa = length(p2); + } + + a *= a*a; + float s1 = s + zoffset; + float fade = pow(distfading, max(0., float(r)-sampleShift)); + + v += fade; + + if (r == 0) + fade *= (1. - sampleShift); + if (r == volsteps-1) + fade *= sampleShift; + + v += vec3(s1, s1*s1, s1*s1*s1*s1) * a * brightness * fade; + backCol2 += mix(.11, 1., 1.0) * vec3(1.8 * t3 * t3 * t3, 1.4 * t3 * t3, t3) * fade; + + s += stepsize; + s3 += stepsize; + } + + v = mix(vec3(length(v)), v, saturation); + + vec4 forCol2 = vec4(v*.01, 1.); + backCol2 *= cloud; + + float luma = dot(backCol2, vec3(0.299, 0.587, 0.114)); + vec4 result = forCol2 + vec4(vec3(luma), 1.0); + result.rgb = result.rgb * baseColor.rgb * 2.0; + + fragColor = vec4(result.rgb, alpha * 0.4 * FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/world_data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/world_data.json new file mode 100644 index 0000000..5b3aa3e --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/starfield/world_data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/blockoverlay/starfield/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/water/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/blockoverlay/water/fragment.fsh new file mode 100644 index 0000000..44a053e --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/water/fragment.fsh @@ -0,0 +1,72 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +in vec3 WorldPos; +in vec3 WaveNormal; +in float WaveH; +out vec4 OutColor; + +const vec3 UP = vec3(0.0, 1.0, 0.0); +const vec3 FOAM = vec3(1.0); +const vec3 GLINT = vec3(0.85, 0.93, 1.0); + +void main() { + vec2 center = Radius.xy; + float maxRadius = max(Radius.z, 0.001); + float foamBand = max(Radius.w, 0.001); + + vec2 surface = WorldPos.xz; + float radial = distance(surface, center) / maxRadius; + + float low = fbm(surface * 0.6); + float mid = fbm(surface * 1.9 + vec2(7.0, 2.0)); + float bumps = (low - 0.5) * 1.4 + (mid - 0.5) * 0.6; + float seepField = radial + bumps * 0.35; + + float emerge = Progress - seepField; + if (emerge < -foamBand) discard; + + float t = Time; + + vec2 e = vec2(0.09, 0.0); + float chop = fbm(surface * 2.4 + vec2(t * 0.3, -t * 0.2)); + float chopX = fbm((surface + e.xy) * 2.4 + vec2(t * 0.3, -t * 0.2)) - chop; + float chopZ = fbm((surface + e.yx) * 2.4 + vec2(t * 0.3, -t * 0.2)) - chop; + vec3 detail = vec3(-chopX, 0.5, -chopZ); + vec3 nrm = normalize(WaveNormal + detail * 0.6); + + vec3 viewDir = normalize(CameraPos - WorldPos); + float fresnel = pow(1.0 - clamp(dot(nrm, viewDir), 0.0, 1.0), 3.0); + + vec3 lightDir = normalize(vec3(0.35, 0.85, 0.4)); + vec3 halfDir = normalize(lightDir + viewDir); + float glint = pow(max(dot(nrm, halfDir), 0.0), 120.0); + float ndl = dot(nrm, lightDir) * 0.5 + 0.5; + + float wet = smoothstep(-foamBand, foamBand * 1.5, emerge); + float shoreFoam = smoothstep(foamBand * 1.4, 0.0, abs(emerge)) * (0.4 + 0.6 * mid); + float crest = smoothstep(0.05, 0.12, WaveH) * 0.6; + float caustic = pow(clamp(mid, 0.0, 1.0), 3.0) * wet; + + vec3 tint = TintColor; + vec3 deep = tint * 0.26; + vec3 shallow = tint * 0.82; + float depthMix = clamp(0.18 + fresnel * 0.5 + WaveH * 2.2, 0.0, 1.0); + vec3 color = mix(deep, shallow, depthMix); + color *= 0.68 + 0.46 * ndl; + color = mix(color, tint * 1.2 + vec3(0.06), fresnel * 0.4); + color += tint * caustic * 0.12; + color += GLINT * glint * wet; + color += FOAM * crest * wet * 0.7; + color = mix(color, FOAM, clamp(shoreFoam * 0.72, 0.0, 1.0)); + color = clamp(color, 0.0, 1.0); + + float bodyAlpha = 0.6 + fresnel * 0.3 + glint * 0.5; + bodyAlpha = max(bodyAlpha, shoreFoam); + float alpha = Fade * clamp(bodyAlpha, 0.0, 1.0) * wet * FragColor.a; + OutColor = vec4(color, alpha); +} diff --git a/src/main/resources/assets/evolution/shaders/core/blockoverlay/water/world_data.json b/src/main/resources/assets/evolution/shaders/core/blockoverlay/water/world_data.json new file mode 100644 index 0000000..88fa06e --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blockoverlay/water/world_data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color_water", + "fragment": "evolution:core/blockoverlay/water/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/blur/data.json b/src/main/resources/assets/evolution/shaders/core/blur/data.json new file mode 100644 index 0000000..0df2229 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blur/data.json @@ -0,0 +1,15 @@ +{ + "vertex": "evolution:core/blur/vertex", + "fragment": "evolution:core/blur/fragment", + "samplers": [ + { "name": "Sampler0" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "Smoothness", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "BlurRadius", "type": "float", "count": 1, "values": [ 0.0 ] } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/shaders/core/blur/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/blur/fragment.fsh new file mode 100644 index 0000000..4af537f --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blur/fragment.fsh @@ -0,0 +1,40 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec2 TexCoord; +in vec4 FragColor; + +uniform sampler2D Sampler0; + +out vec4 OutColor; + +const float DPI = 6.28318530718; +const float STEP = DPI / 16.0; + +void main() { + vec2 multiplier = BlurRadius / textureSize(Sampler0, 0); + + vec3 average = texture(Sampler0, TexCoord).rgb; + for (float d = 0.0; d < DPI; d += STEP) { + for (float i = 0.2; i <= 1.0; i += 0.2) { + average += texture(Sampler0, TexCoord + vec2(cos(d), sin(d)) * multiplier * i).rgb; + } + } + average /= 80.0; + + vec2 center = Size * 0.5; + float distance = roundedBoxSDF(center - (FragCoord * Size), center - 1.0, Radius); + + float alpha = 1.0 - smoothstep(1.0 - Smoothness.x, 1.0, distance); + vec4 finalColor = vec4(average.rgb, alpha) * FragColor; + + if (finalColor.a == 0.0) { + discard; + } + + OutColor = finalColor; +} diff --git a/src/main/resources/assets/evolution/shaders/core/blur/vertex.vsh b/src/main/resources/assets/evolution/shaders/core/blur/vertex.vsh new file mode 100644 index 0000000..c59c5c3 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/blur/vertex.vsh @@ -0,0 +1,20 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec3 Position; +in vec4 Color; + +out vec2 FragCoord; +out vec2 TexCoord; +out vec4 FragColor; + +void main() { + gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0); + + FragCoord = rvertexcoord(gl_VertexID); + TexCoord = gl_Position.xy * 0.5 + 0.5; + FragColor = Color; +} diff --git a/src/main/resources/assets/evolution/shaders/core/boot_splash.fsh b/src/main/resources/assets/evolution/shaders/core/boot_splash.fsh new file mode 100644 index 0000000..93cf5f7 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/boot_splash.fsh @@ -0,0 +1,74 @@ +#version 330 + +#moj_import + +uniform sampler2D Sampler0; + +in vec2 splashState; +in vec4 splashTint; +in vec2 clipPosition; + +out vec4 fragColor; + +const int PALETTE_START = 0; +const int PALETTE_MIDDLE = 1; +const int PALETTE_END = 2; +const float MIN_PIXEL = 1e-6; +const float BAR_OFFSET_BOTTOM = 0.12; +const float BAR_HALF_OF_WIDTH = 0.16; +const float BAR_HALF_OF_HEIGHT = 0.26; +const float BAR_THICKNESS = 0.0026; +const float BAR_MIN_THICKNESS = 2.0; +const float BAR_TRACK_ALPHA = 0.12; +const float BAR_TAIL_HEAT = 0.45; +const float BAR_GLOW_HEAT = 0.8; +const float BAR_GLOW_RADIUS = 9.0; +const float BAR_GLOW_GAIN = 0.55; +const float BAR_GLOW_THRESHOLD = 0.001; +const float EDGE_SOFTNESS = 0.5; +const float DITHER_STRENGTH = 1.5 / 255.0; +const vec2 DITHER_SEED = vec2(0.7, 0.31); + +float splashHash(vec2 point) { + vec3 p = fract(vec3(point.xyx) * 0.1031); + p += dot(p, p.yzx + 33.33); + return fract((p.x + p.y) * p.z); +} + +void main() { + vec2 pixel = max(abs(vec2(dFdx(clipPosition.x), dFdy(clipPosition.y))), vec2(MIN_PIXEL)); + vec2 resolution = 2.0 / pixel; + vec2 uv = vec2(clipPosition.x * 0.5 + 0.5, 0.5 - clipPosition.y * 0.5); + vec2 frag = uv * resolution; + float aspect = resolution.y / resolution.x; + float progress = clamp(splashState.y, 0.0, 1.0); + + vec3 start = texelFetch(Sampler0, ivec2(PALETTE_START, 0), 0).rgb; + vec3 middle = texelFetch(Sampler0, ivec2(PALETTE_MIDDLE, 0), 0).rgb; + vec3 end = texelFetch(Sampler0, ivec2(PALETTE_END, 0), 0).rgb; + vec3 color = ember(uv, aspect, splashState.x, progress, start, middle, end); + + float barAlpha = splashTint.r; + float halfWidth = min(resolution.x * BAR_HALF_OF_WIDTH, resolution.y * BAR_HALF_OF_HEIGHT); + float thickness = max(BAR_MIN_THICKNESS, resolution.y * BAR_THICKNESS); + float radius = thickness * 0.5; + vec2 barCenter = vec2(resolution.x * 0.5, resolution.y * (1.0 - BAR_OFFSET_BOTTOM)); + vec2 q = abs(frag - barCenter) - vec2(halfWidth - radius, 0.0); + float track = length(max(q, 0.0)) + min(max(q.x, q.y), 0.0) - radius; + float trackMask = 1.0 - smoothstep(-EDGE_SOFTNESS, EDGE_SOFTNESS, track); + + float left = barCenter.x - halfWidth; + float head = left + progress * 2.0 * halfWidth; + float fillMask = trackMask * clamp(head - frag.x + EDGE_SOFTNESS, 0.0, 1.0); + float along = clamp((frag.x - left) / max(head - left, 1.0), 0.0, 1.0); + vec3 fillColor = emberRamp(mix(BAR_TAIL_HEAT, 1.0, along), start, middle, end); + float glow = exp(-length(frag - vec2(head, barCenter.y)) / (thickness * BAR_GLOW_RADIUS)) + * BAR_GLOW_GAIN * step(BAR_GLOW_THRESHOLD, progress); + + color = mix(color, vec3(1.0), trackMask * BAR_TRACK_ALPHA * barAlpha); + color = mix(color, fillColor, fillMask * barAlpha); + color += emberRamp(BAR_GLOW_HEAT, start, middle, end) * glow * barAlpha; + color += (splashHash(gl_FragCoord.xy + DITHER_SEED) - 0.5) * DITHER_STRENGTH; + + fragColor = vec4(clamp(color, 0.0, 1.0), splashTint.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/boot_splash.vsh b/src/main/resources/assets/evolution/shaders/core/boot_splash.vsh new file mode 100644 index 0000000..e544d55 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/boot_splash.vsh @@ -0,0 +1,26 @@ +#version 330 + +layout(std140) uniform DynamicTransforms { + mat4 ModelViewMat; + vec4 ColorModulator; + vec3 ModelOffset; + mat4 TextureMat; +}; +layout(std140) uniform Projection { + mat4 ProjMat; +}; + +in vec3 Position; +in vec2 UV0; +in vec4 Color; + +out vec2 splashState; +out vec4 splashTint; +out vec2 clipPosition; + +void main() { + gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0); + clipPosition = gl_Position.xy / gl_Position.w; + splashState = UV0; + splashTint = Color; +} diff --git a/src/main/resources/assets/evolution/shaders/core/border/data.json b/src/main/resources/assets/evolution/shaders/core/border/data.json new file mode 100644 index 0000000..7beb1d5 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/border/data.json @@ -0,0 +1,17 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/border/fragment", + "samplers": [], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "ColorModulator", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "Smoothness", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Thickness", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "MaskTopY", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskBottomY", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskFadeHeight", "type": "float", "count": 1, "values": [ 0.0 ] } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/shaders/core/border/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/border/fragment.fsh new file mode 100644 index 0000000..451da2a --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/border/fragment.fsh @@ -0,0 +1,33 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; + +out vec4 OutColor; + +void main() { + vec2 center = Size * 0.5; + float distance = roundedBoxSDF(center - (FragCoord * Size), center, Radius); + + float alpha = smoothstep(-Thickness - Smoothness.x - Smoothness.y, + -Thickness - Smoothness.y, distance); + alpha *= 1.0 - smoothstep(-Smoothness.y, 0.0, distance); + + vec4 finalColor = vec4(FragColor.rgb, FragColor.a * alpha); + + if (finalColor.a == 0.0) { + discard; + } + + finalColor.a = applyAlphaMask(finalColor.a); + if (finalColor.a <= 0.001) { + discard; + } + + OutColor = finalColor * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/cape_logo/data.json b/src/main/resources/assets/evolution/shaders/core/cape_logo/data.json new file mode 100644 index 0000000..dc557ef --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/cape_logo/data.json @@ -0,0 +1,7 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/cape_logo/fragment", + "samplers": [ + { "name": "Sampler0" } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/cape_logo/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/cape_logo/fragment.fsh new file mode 100644 index 0000000..3f8ab79 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/cape_logo/fragment.fsh @@ -0,0 +1,21 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +in vec2 TexCoord; + +uniform sampler2D Sampler0; + +out vec4 OutColor; + +void main() { + vec4 color = texture(Sampler0, TexCoord) * FragColor; + if (color.a <= 0.001) { + discard; + } + OutColor = color; +} diff --git a/src/main/resources/assets/evolution/shaders/core/chams_afterimage/data.json b/src/main/resources/assets/evolution/shaders/core/chams_afterimage/data.json new file mode 100644 index 0000000..464d8e9 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/chams_afterimage/data.json @@ -0,0 +1,14 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/chams_afterimage/fragment", + "samplers": [ + { "name": "Sampler0" }, + { "name": "Sampler1" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Fade", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "TintIntensity", "type": "float", "count": 1, "values": [ 0.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/chams_afterimage/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/chams_afterimage/fragment.fsh new file mode 100644 index 0000000..700cdb8 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/chams_afterimage/fragment.fsh @@ -0,0 +1,42 @@ +#version 150 + +#moj_import + +in vec2 FragCoord; +in vec2 TexCoord; +in vec4 FragColor; + +uniform sampler2D Sampler0; +uniform sampler2D Sampler1; + +out vec4 OutColor; + +const float MIN_ALPHA = 0.001; +const float HISTORY_DECAY_BIAS = 0.018; +const float HISTORY_CUTOFF = 0.045; + +vec3 safeColor(vec4 color) { + return color.a > MIN_ALPHA ? color.rgb / color.a : vec3(0.0); +} + +void main() { + vec4 history = texture(Sampler0, TexCoord); + vec4 current = texture(Sampler1, TexCoord); + + float historyAlpha = max(history.a * Fade - HISTORY_DECAY_BIAS, 0.0); + if (historyAlpha < HISTORY_CUTOFF) { + historyAlpha = 0.0; + } + float currentAlpha = current.a * TintIntensity; + float alpha = max(historyAlpha, currentAlpha); + if (alpha <= MIN_ALPHA) { + discard; + } + + vec3 historyColor = safeColor(history); + vec3 currentColor = safeColor(current); + float currentWeight = currentAlpha / max(historyAlpha + currentAlpha, MIN_ALPHA); + vec3 color = mix(historyColor, currentColor, currentWeight); + + OutColor = vec4(color, clamp(alpha, 0.0, 1.0)); +} diff --git a/src/main/resources/assets/evolution/shaders/core/chams_glow/data.json b/src/main/resources/assets/evolution/shaders/core/chams_glow/data.json new file mode 100644 index 0000000..8da53fa --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/chams_glow/data.json @@ -0,0 +1,23 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/chams_glow/fragment", + "samplers": [ + { "name": "Sampler0" }, + { "name": "Sampler1" }, + { "name": "Sampler2" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Resolution", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "Saturation", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "Outline", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "OutlineThickness", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "Smoothness", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Fade", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "Progress", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "TintIntensity", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "OutlineColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/chams_glow/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/chams_glow/fragment.fsh new file mode 100644 index 0000000..eb67fa0 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/chams_glow/fragment.fsh @@ -0,0 +1,134 @@ +#version 150 + +#moj_import + +in vec2 FragCoord; +in vec2 TexCoord; +in vec4 FragColor; + +uniform sampler2D Sampler0; +uniform sampler2D Sampler1; +uniform sampler2D Sampler2; + +out vec4 OutColor; + +const float INNER_REJECTION = 0.98; +const float GLOW_GAIN = 1.42; +const float LINE_GAIN = 1.85; +const float RIM_GAIN = 0.92; +const float CONTACT_GAIN = 0.62; +const float AFTERIMAGE_GAIN = 1.15; +const float TINT_GAIN = 0.72; +const float FAR_LINE_SCALE = 2.35; +const float MIN_ALPHA = 0.001; + +vec3 safeColor(vec4 color) { + return color.a > MIN_ALPHA ? color.rgb / color.a : FragColor.rgb; +} + +float maskAlpha(vec2 uv) { + return texture(Sampler1, uv).a; +} + +float neighborMax(vec2 px) { + float north = maskAlpha(TexCoord + vec2(0.0, px.y)); + float south = maskAlpha(TexCoord - vec2(0.0, px.y)); + float east = maskAlpha(TexCoord + vec2(px.x, 0.0)); + float west = maskAlpha(TexCoord - vec2(px.x, 0.0)); + float ne = maskAlpha(TexCoord + px); + float nw = maskAlpha(TexCoord + vec2(-px.x, px.y)); + float se = maskAlpha(TexCoord + vec2(px.x, -px.y)); + float sw = maskAlpha(TexCoord - px); + return max(max(max(north, south), max(east, west)), max(max(ne, nw), max(se, sw))); +} + +float neighborMin(vec2 px) { + float north = maskAlpha(TexCoord + vec2(0.0, px.y)); + float south = maskAlpha(TexCoord - vec2(0.0, px.y)); + float east = maskAlpha(TexCoord + vec2(px.x, 0.0)); + float west = maskAlpha(TexCoord - vec2(px.x, 0.0)); + float ne = maskAlpha(TexCoord + px); + float nw = maskAlpha(TexCoord + vec2(-px.x, px.y)); + float se = maskAlpha(TexCoord + vec2(px.x, -px.y)); + float sw = maskAlpha(TexCoord - px); + return min(min(min(north, south), min(east, west)), min(min(ne, nw), min(se, sw))); +} + +void main() { + vec4 blurred = texture(Sampler0, TexCoord); + vec4 afterimage = texture(Sampler2, TexCoord); + + if (blurred.a <= MIN_ALPHA && afterimage.a <= MIN_ALPHA) { + discard; + } + + vec4 source = texture(Sampler1, TexCoord); + + float sourceAlpha = source.a; + float outsideMask = 1.0 - smoothstep(0.05, 0.95, sourceAlpha); + + float outerLine = 0.0; + float innerRim = 0.0; + float contact = 0.0; + + // Uniform-coherent early branch: skip expensive neighbor sampling (up to 26 texture reads) + // when outline, rim, and contact layers are all disabled + if (Outline > MIN_ALPHA || Smoothness.x > MIN_ALPHA || Smoothness.y > MIN_ALPHA) { + vec2 texel = 1.0 / vec2(textureSize(Sampler1, 0)); + float thickness = max(OutlineThickness, 0.50); + vec2 px = texel * thickness; + + if (Outline > MIN_ALPHA) { + float nearMax = neighborMax(px); + float farMax = neighborMax(px * FAR_LINE_SCALE); + float nearOuterLine = smoothstep(0.01, 0.58, nearMax - sourceAlpha); + float farOuterLine = smoothstep(0.01, 0.50, farMax - sourceAlpha); + outerLine = (nearOuterLine * 0.72 + farOuterLine * 0.46) * outsideMask; + } + + if (Smoothness.x > MIN_ALPHA) { + float nearMin = neighborMin(px); + float innerEdge = smoothstep(0.01, 0.70, sourceAlpha - nearMin); + float blurRim = sourceAlpha * smoothstep(0.05, 0.72, 1.0 - blurred.a); + innerRim = max(innerEdge, blurRim); + } + + if (Smoothness.y > MIN_ALPHA) { + float lowerContact = max(maskAlpha(TexCoord + vec2(0.0, px.y * 3.0)) - sourceAlpha, 0.0); + float upperContact = max(maskAlpha(TexCoord - vec2(0.0, px.y * 3.0)) - sourceAlpha, 0.0) * 0.35; + contact = max(lowerContact, upperContact); + } + } + + float softGlow = max(blurred.a - sourceAlpha * INNER_REJECTION, 0.0) * outsideMask; + float trail = max(afterimage.a - sourceAlpha * 0.92, 0.0) * outsideMask; + trail *= smoothstep(0.08, 0.36, afterimage.a); + + float breathing = 1.0 + sin(Time * 2.15) * Progress; + float glowAlpha = softGlow * Saturation * GLOW_GAIN; + float lineAlpha = outerLine * Outline * LINE_GAIN; + float rimAlpha = innerRim * Smoothness.x * RIM_GAIN; + float contactAlpha = contact * Smoothness.y * CONTACT_GAIN; + float trailAlpha = trail * Fade * AFTERIMAGE_GAIN; + float tintAlpha = sourceAlpha * TintIntensity * TINT_GAIN; + float alpha = clamp(((glowAlpha + lineAlpha + rimAlpha + contactAlpha + trailAlpha) * breathing + tintAlpha) * FragColor.a, 0.0, 1.0); + + if (alpha <= MIN_ALPHA) { + discard; + } + + vec3 sourceColor = safeColor(source); + vec3 glowColor = safeColor(blurred); + vec3 trailColor = safeColor(afterimage); + vec3 lineColor = mix(sourceColor, OutlineColor.rgb, 0.42 * OutlineColor.a); + vec3 tintColor = mix(sourceColor, OutlineColor.rgb, 0.18 * OutlineColor.a); + + vec3 weightedColor = glowColor * glowAlpha + + lineColor * (lineAlpha + rimAlpha + contactAlpha) + + trailColor * trailAlpha + + tintColor * tintAlpha; + float weight = max(glowAlpha + lineAlpha + rimAlpha + contactAlpha + trailAlpha + tintAlpha, MIN_ALPHA); + vec3 finalColor = weightedColor / weight; + + OutColor = vec4(finalColor, alpha); +} diff --git a/src/main/resources/assets/evolution/shaders/core/chams_hitcolor.fsh b/src/main/resources/assets/evolution/shaders/core/chams_hitcolor.fsh new file mode 100644 index 0000000..e61cf3b --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/chams_hitcolor.fsh @@ -0,0 +1,22 @@ +#version 330 + +#moj_import + +uniform sampler2D Sampler0; + +in vec4 vertexColor; +in vec2 texCoord0; + +out vec4 fragColor; + +const float ALPHA_CUTOUT = 0.10; + +void main() { + float coverage = texture(Sampler0, texCoord0).a; + if (coverage < ALPHA_CUTOUT) { + discard; + } + + vec4 tint = vertexColor * ColorModulator; + fragColor = vec4(tint.rgb, coverage * tint.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/chams_hitcolor.vsh b/src/main/resources/assets/evolution/shaders/core/chams_hitcolor.vsh new file mode 100644 index 0000000..dd3a36a --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/chams_hitcolor.vsh @@ -0,0 +1,17 @@ +#version 330 + +#moj_import +#moj_import + +in vec3 Position; +in vec4 Color; +in vec2 UV0; + +out vec4 vertexColor; +out vec2 texCoord0; + +void main() { + gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0); + vertexColor = Color; + texCoord0 = UV0; +} diff --git a/src/main/resources/assets/evolution/shaders/core/chams_mask.fsh b/src/main/resources/assets/evolution/shaders/core/chams_mask.fsh new file mode 100644 index 0000000..427d982 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/chams_mask.fsh @@ -0,0 +1,49 @@ +#version 330 + +#moj_import + +uniform sampler2D Sampler0; + +in vec4 vertexColor; +in vec4 lightMapColor; +in vec2 texCoord0; +in float rimFactor; +in float verticalFactor; + +out vec4 fragColor; + +const float ALPHA_CUTOUT = 0.10; +const float NEON_LIFT = 0.16; +const float FLAT_RIM_LIFT = 0.26; +const float GRADIENT_RIM_LIFT = 0.22; +const float GRADIENT_TOP_LIFT = 0.42; +const float GRADIENT_BOTTOM_SHADE = 0.55; +const float GRADIENT_EDGE_LOW = 0.03; +const float GRADIENT_EDGE_HIGH = 0.97; + +void main() { + float coverage = texture(Sampler0, texCoord0).a; + if (coverage < ALPHA_CUTOUT) { + discard; + } + +#ifdef CHAMS_REUSE + vec4 tint = vertexColor; +#else + vec4 tint = vertexColor * ColorModulator; +#endif + vec3 base = tint.rgb; + +#ifdef CHAMS_GRADIENT + float gradient = smoothstep(GRADIENT_EDGE_LOW, GRADIENT_EDGE_HIGH, verticalFactor); + vec3 color = mix(base * GRADIENT_BOTTOM_SHADE, mix(base, vec3(1.0), GRADIENT_TOP_LIFT), gradient); + color = mix(color, vec3(1.0), rimFactor * GRADIENT_RIM_LIFT); +#else + vec3 color = mix(base, vec3(1.0), NEON_LIFT); + color = mix(color, vec3(1.0), rimFactor * FLAT_RIM_LIFT); +#endif + + color *= lightMapColor.rgb; + + fragColor = vec4(color, coverage * tint.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/chams_mask.vsh b/src/main/resources/assets/evolution/shaders/core/chams_mask.vsh new file mode 100644 index 0000000..f581714 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/chams_mask.vsh @@ -0,0 +1,62 @@ +#version 330 + +#moj_import +#moj_import +#moj_import +#moj_import + +in vec3 Position; +in vec4 Color; +in vec2 UV0; +in ivec2 UV1; +in ivec2 UV2; +in vec3 Normal; + +uniform sampler2D Sampler2; + +out vec4 vertexColor; +out vec4 lightMapColor; +out vec2 texCoord0; +out float rimFactor; +out float verticalFactor; + +const float MIN_NORMAL_LENGTH = 0.0001; +const float RIM_EXPONENT = 1.35; +const float CARDINAL_LIGHT_WEIGHT = 0.08; +const float CARDINAL_LIGHT_BASE = 0.90; +const float GRADIENT_ANCHOR_SCALE = 64.0; +const float MIN_GRADIENT_SPAN = 0.05; +const ivec2 FULL_BRIGHT_COORDS = ivec2(240, 240); +const float FULL_BRIGHT_THRESHOLD = 0.5; + +void main() { + vec4 viewPosition = ModelViewMat * vec4(Position, 1.0); + gl_Position = ProjMat * viewPosition; + + vec3 viewNormal = mat3(ModelViewMat) * Normal; + viewNormal /= max(length(viewNormal), MIN_NORMAL_LENGTH); + float facing = 1.0 - abs(dot(viewNormal, normalize(-viewPosition.xyz))); + rimFactor = pow(clamp(facing, 0.0, 1.0), RIM_EXPONENT); + + vec2 cardinalLight = minecraft_compute_light(Light0_Direction, Light1_Direction, Normal); + float shade = clamp((max(cardinalLight.x, 0.0) + max(cardinalLight.y, 0.0)) * CARDINAL_LIGHT_WEIGHT + CARDINAL_LIGHT_BASE, 0.0, 1.0); + +#ifdef CHAMS_REUSE + vertexColor = vec4(ColorModulator.rgb * shade, ColorModulator.a); + ivec2 lightCoords = ModelOffset.z > FULL_BRIGHT_THRESHOLD ? FULL_BRIGHT_COORDS : UV2; + lightMapColor = sample_lightmap(Sampler2, lightCoords); +#else + vertexColor = vec4(Color.rgb * shade, Color.a); + lightMapColor = sample_lightmap(Sampler2, UV2); +#endif + texCoord0 = UV0; + +#ifdef CHAMS_REUSE + float gradientAnchorY = ModelOffset.x; + float gradientSpanY = ModelOffset.y; +#else + float gradientAnchorY = float(UV1.x) / GRADIENT_ANCHOR_SCALE; + float gradientSpanY = max(float(UV1.y) / GRADIENT_ANCHOR_SCALE, MIN_GRADIENT_SPAN); +#endif + verticalFactor = clamp((Position.y - gradientAnchorY) / gradientSpanY, 0.0, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/circle/data.json b/src/main/resources/assets/evolution/shaders/core/circle/data.json new file mode 100644 index 0000000..018a98f --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/circle/data.json @@ -0,0 +1,13 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/circle/fragment", + "samplers": [], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "ColorModulator", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "Thickness", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "Progress", "type": "float", "count": 1, "values": [ 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/circle/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/circle/fragment.fsh new file mode 100644 index 0000000..d89e034 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/circle/fragment.fsh @@ -0,0 +1,45 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; + +out vec4 OutColor; + +const float PI = 3.14159265359; +const float TWO_PI = 6.28318530718; +const float MARGIN = 2.0; + +void main() { + vec2 p = (FragCoord - 0.5) * Size; + float outerR = Size.x * 0.5 - MARGIN; + float halfT = Thickness * 0.5; + float midR = outerR - halfT; + float len = length(p); + + float ang = mod(atan(p.y, p.x) + PI * 0.5, TWO_PI); + float sweep = clamp(Progress, 0.0, 1.0) * TWO_PI; + + float d; + if (sweep >= TWO_PI - 0.0001 || ang <= sweep) { + d = abs(len - midR); + } else { + vec2 startC = vec2(0.0, -midR); + float endA = -PI * 0.5 + sweep; + vec2 endC = vec2(cos(endA), sin(endA)) * midR; + d = min(length(p - startC), length(p - endC)); + } + + float aa = max(fwidth(d), 0.75); + float alpha = 1.0 - smoothstep(halfT - aa, halfT, d); + + vec4 finalColor = vec4(FragColor.rgb, FragColor.a * alpha); + if (finalColor.a < 0.003) { + discard; + } + + OutColor = finalColor * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/corner/data.json b/src/main/resources/assets/evolution/shaders/core/corner/data.json new file mode 100644 index 0000000..cf2426b --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/corner/data.json @@ -0,0 +1,15 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/corner/fragment", + "samplers": [], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "ColorModulator", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "Smoothness", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Thickness", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "CornerIndex", "type": "float", "count": 1, "values": [ 1.0 ] } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/shaders/core/corner/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/corner/fragment.fsh new file mode 100644 index 0000000..05213a6 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/corner/fragment.fsh @@ -0,0 +1,38 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; + +out vec4 OutColor; + +void main() { + vec2 center = Size * 0.5; + vec2 pixel = FragCoord.xy * Size; + + if (CornerIndex == 0.0) { + if (pixel.x > center.x || pixel.y > center.y) discard; + } else if (CornerIndex == 1.0) { + if (pixel.x < center.x || pixel.y > center.y) discard; + } else if (CornerIndex == 2.0) { + if (pixel.x > center.x || pixel.y < center.y) discard; + } else if (CornerIndex == 3.0) { + if (pixel.x < center.x || pixel.y < center.y) discard; + } + float distance = roundedBoxSDF(center - (FragCoord * Size), center, Radius); + + float alpha = smoothstep(-Thickness - Smoothness.x - Smoothness.y, + -Thickness - Smoothness.y, distance); + alpha *= 1.0 - smoothstep(-Smoothness.y, 0.0, distance); + + vec4 finalColor = vec4(FragColor.rgb, FragColor.a * alpha); + + if (finalColor.a == 0.0) { + discard; + } + + OutColor = finalColor * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/customsky/aurora.fsh b/src/main/resources/assets/evolution/shaders/core/customsky/aurora.fsh new file mode 100644 index 0000000..27c3b3b --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/customsky/aurora.fsh @@ -0,0 +1,135 @@ +#version 150 + +#moj_import + +in vec2 texCoord; +out vec4 fragColor; + +const int CURTAIN_LAYERS = 32; +const int WARP_OCTAVES = 5; + +const float LAYER_STRIDE = 1.5; +const float CURTAIN_SPAN = float(CURTAIN_LAYERS) * LAYER_STRIDE; +const float PLANE_BASE = 0.8; +const float PLANE_CURVE = 0.002; +const float PLANE_EXPONENT = 1.4; +const float RAY_GAIN = 2.0; +const float LAYER_DECAY = 0.065; +const float LAYER_BIAS = 2.5; +const float LAYER_RAMP = 5.0; +const float LAYER_BLEND = 0.5; +const float DITHER_AMOUNT = 0.035; +const float DITHER_RAMP = 15.0; + +const float WARP_START_AMPLITUDE = 1.8; +const float WARP_START_SCALE = 2.5; +const float WARP_FREQUENCY = 1.85; +const float WARP_STRENGTH = 0.75; +const float WARP_SPEED = 0.06; +const float BASE_LACUNARITY = 1.3; +const float WARP_SCALE_DECAY = 0.45; +const float AMPLITUDE_DECAY = 0.42; +const float FEEDBACK_GAIN = 1.21; +const float FEEDBACK_BIAS = 0.02; +const float DENSITY_SHARPNESS = 29.0; +const float DENSITY_EXPONENT = 1.3; +const float DENSITY_CEILING = 0.55; +const float DENSITY_CONTRAST = 2.1; +const float BAND_ROTATION = 0.06; +const float TRI_MIN = 0.01; +const float TRI_MAX = 0.49; + +const float DRIFT_SPEED = 0.02; +const float CURTAIN_GAIN = 2.6; +const float CORE_WHITEN = 0.60; +const float CORE_SHARPNESS = 2.0; +const float SLOPE_FLOOR = 0.012; +const float CURTAIN_HEIGHT = 0.85; +const float CURTAIN_FLOOR_HEIGHT = 1.60; +const float REACH_EPSILON = 0.004; +const float BANDING_DITHER = 0.0015; +const float BANDING_DITHER_SCALE = 1.37; + +const vec3 NIGHT_HORIZON = vec3(0.006, 0.008, 0.020); +const vec3 NIGHT_ZENITH = vec3(0.002, 0.003, 0.010); +const float AURORA_GLOW_AXIS = 0.35; +const float AURORA_GLOW_WIDTH = 0.13; +const float AURORA_GLOW_GAIN = 0.030; +const mat2 WARP_ROTATION = mat2(0.95534, 0.29552, -0.29552, 0.95534); + +mat2 spin(float angle) { + float c = cos(angle); + float s = sin(angle); + return mat2(c, s, -s, c); +} + +float triWave(float x) { + return clamp(abs(fract(x) - 0.5), TRI_MIN, TRI_MAX); +} + +vec2 triWave2(vec2 p) { + return vec2(triWave(p.x) + triWave(p.y), triWave(p.y + triWave(p.x))); +} + +float curtainDensity(vec2 p, float time) { + float amplitude = WARP_START_AMPLITUDE; + float warpScale = WARP_START_SCALE; + float sum = 0.0; + p *= spin(p.x * BAND_ROTATION); + vec2 base = p; + for (int octave = 0; octave < WARP_OCTAVES; octave++) { + vec2 warp = triWave2(base * WARP_FREQUENCY) * WARP_STRENGTH; + warp *= spin(time * WARP_SPEED); + p -= warp / warpScale; + base *= BASE_LACUNARITY; + warpScale *= WARP_SCALE_DECAY; + amplitude *= AMPLITUDE_DECAY; + p *= FEEDBACK_GAIN + (sum - 1.0) * FEEDBACK_BIAS; + sum += triWave(p.x + triWave(p.y)) * amplitude; + p *= -WARP_ROTATION; + } + float density = clamp(1.0 / pow(sum * DENSITY_SHARPNESS, DENSITY_EXPONENT), 0.0, DENSITY_CEILING); + return pow(density / DENSITY_CEILING, DENSITY_CONTRAST) * DENSITY_CEILING; +} + +vec3 curtains(vec3 rd, float time, float axis, float domeFade) { + vec3 accum = vec3(0.0); + vec3 average = vec3(0.0); + float dither = skyHash21(gl_FragCoord.xy); + float slope = max(abs(rd.y), SLOPE_FLOOR) * RAY_GAIN; + for (int layer = 0; layer < CURTAIN_LAYERS; layer++) { + float depth = float(layer) * LAYER_STRIDE; + float jitter = (dither - 0.5) * DITHER_AMOUNT * smoothstep(0.0, DITHER_RAMP, depth); + float travel = (PLANE_BASE + pow(depth, PLANE_EXPONENT) * PLANE_CURVE) * (1.0 + jitter) / slope; + vec3 hit = rd * travel; + float density = curtainDensity(skyPlaneDomain(hit.zx) + vec2(time * DRIFT_SPEED, 0.0), time); + vec3 tint = skyTint(axis, depth / CURTAIN_SPAN, time); + float core = pow(density / DENSITY_CEILING, CORE_SHARPNESS); + vec3 emission = mix(tint, vec3(1.0), core * CORE_WHITEN) * density; + average = mix(average, emission, LAYER_BLEND); + accum += average * exp2(-depth * LAYER_DECAY - LAYER_BIAS) * smoothstep(0.0, LAYER_RAMP, depth); + } + return accum * CURTAIN_GAIN * domeFade; +} + +void main() { + float time = misc.x; + float brightness = misc.w; + + vec3 rd = skyRayDirection(texCoord); + vec3 color = mix(NIGHT_HORIZON, NIGHT_ZENITH, clamp(skyVerticalAxis(rd.y), 0.0, 1.0)); + color += skyTint(atan(rd.z, rd.x), AURORA_GLOW_AXIS, time) + * skyBand(rd, vec3(0.0, 1.0, 0.0), AURORA_GLOW_WIDTH) * AURORA_GLOW_GAIN; + + vec3 plane = skyPlane(rd, rd.y >= 0.0 ? CURTAIN_HEIGHT : CURTAIN_FLOOR_HEIGHT); + float reach = skyPlaneFalloff(plane.z, SKY_PLANE_RANGE) + * max(step(0.0, rd.y), skyExtra.y); + if (reach > REACH_EPSILON) { + color += curtains(rd, time, atan(rd.z, rd.x), reach); + } + + vec3 encoded = skyEncodeHDR(color * brightness * skyNadirDepth(rd.y)); + encoded += (skyHash21(gl_FragCoord.xy * BANDING_DITHER_SCALE) - 0.5) * BANDING_DITHER; + + fragColor = vec4(max(encoded, vec3(0.0)), 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/customsky/blackhole.fsh b/src/main/resources/assets/evolution/shaders/core/customsky/blackhole.fsh new file mode 100644 index 0000000..f651e16 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/customsky/blackhole.fsh @@ -0,0 +1,315 @@ +#version 150 + +#moj_import + +uniform sampler2D NoiseTex; +uniform sampler2D History; + +in vec2 texCoord; +out vec4 fragColor; + +const int ITERATIONS = 200; +const float FAR = 16.0; +const float ENTRY_RADIUS = 8.0; +const float CAMERA_DISTANCE = 14.0; +const float INCLINATION = 0.10; +const float EXPOSURE = 0.024; +const float THEME_MIX = 0.5; +const float ZOOM = 2.4; +const float TAA_BLEND = 0.85; +const float TAA_CLAMP = 0.35; +const float SPIN = 0.16; +const float TAU = 6.28318531; +const float DITHER_STEP = 1.0 / 255.0; +const vec3 HOLE_DIRECTION = vec3(0.34, 0.62, 0.71); + +float discNoise(vec3 x) { + vec3 p = floor(x); + vec3 f = fract(x); + f = f * f * (3.0 - 2.0 * f); + vec2 uv = (p.xy + vec2(37.0, 17.0) * p.z) + f.xy; + vec2 rg = textureLod(NoiseTex, (uv + 0.5) / 256.0, 0.0).yx; + return -1.0 + 2.0 * mix(rg.x, rg.y, f.z); +} + +vec3 discCoord(float angle, float radius, float frequency) { + float scaled = 1.425 * frequency; + return vec3(cos(angle) * scaled, sin(angle) * scaled, radius * frequency); +} + +float octave(float angle, float radius, float frequency, float aa) { + float weight = clamp(1.5 - aa * frequency * 1.5, 0.0, 1.0); + if (weight <= 0.01) { + return 0.5; + } + return mix(0.5, discNoise(discCoord(angle, radius, frequency)) * 0.5 + 0.5, weight); +} + +float pcurve(float x, float a, float b) { + float k = pow(a + b, a + b) / (pow(a, a) * pow(b, b)); + return k * pow(x, a) * pow(1.0 - x, b); +} + +float sdTorus(vec3 p, vec2 t) { + vec2 q = vec2(length(p.xz) - t.x, p.y); + return length(q) - t.y; +} + +vec3 lensedStars(vec3 dir, float time, float pixelAngle) { + vec3 accum = vec3(0.0); + vec3 p = dir * 42.0; + float scale = 42.0; + float dens = 0.05; + float amp = 1.0; + for (int i = 0; i < 4; i++) { + float fade = clamp(2.0 - pixelAngle * scale / 0.17, 0.0, 1.0); + if (fade > 0.01) { + vec3 id = floor(p); + vec3 q = fract(p) - 0.5; + vec3 rn = skyHash33(id); + float core = smoothstep(0.44, 0.05, length(q)); + float hit = step(rn.x, dens); + float twinkle = 0.80 + 0.20 * sin(time * (0.6 + rn.z * 1.3) + rn.y * 47.0); + vec3 tint = mix(vec3(1.0, 0.72, 0.45), vec3(0.72, 0.86, 1.0), rn.y); + accum += hit * core * core * tint * (0.35 + 0.65 * rn.z) * twinkle * amp * fade; + } + p = p * 1.63 + 17.0; + scale *= 1.63; + dens *= 0.62; + amp *= 0.78; + } + return accum; +} + +void haze(inout vec3 color, vec3 pos, float alpha, vec3 mainColor) { + if (dot(pos, pos) > 36.0) { + return; + } + float torusDistance = length(sdTorus(pos + vec3(0.0, -0.05, 0.0), vec2(1.0, 0.01))); + float glow = 1.0 / (pow(torusDistance, 2.0) + 0.001); + glow *= length(pos) < 0.5 ? 0.0 : 1.0; + color += mainColor * glow * (2.9 / float(ITERATIONS)) * (1.0 - alpha); +} + +void gasDisc(inout vec3 color, inout float alpha, vec3 pos, float time, + vec3 mainColor, float aa, vec3 eyeVector) { + float discRadius = 3.2; + float discWidth = 5.3; + float discInner = discRadius - discWidth * 0.5; + + vec3 discNormal = vec3(0.0, 1.0, 0.0); + float discThickness = 0.1; + + float distFromCenter = length(pos); + if (distFromCenter > 7.0) { + return; + } + float distFromDisc = dot(discNormal, pos); + + float radialGradient = 1.0 - clamp((distFromCenter - discInner) / discWidth * 0.5, 0.0, 1.0); + float coverage = pcurve(radialGradient, 4.0, 0.9); + + discThickness *= radialGradient; + coverage *= clamp(1.0 - abs(distFromDisc) / max(discThickness, 1e-5), 0.0, 1.0); + + vec3 tangent = normalize(vec3(-pos.z, 0.0, pos.x)); + float doppler = pow(clamp(1.0 - 0.55 * dot(tangent, eyeVector), 0.45, 1.9), -2.5); + vec3 dopplerTint = mix(vec3(1.30, 0.72, 0.45), vec3(0.80, 0.92, 1.45), + clamp((doppler - 0.7) * 0.9, 0.0, 1.0)); + + vec3 dustLit = mainColor * doppler * dopplerTint; + float dustGlow = 1.0 / (pow(1.0 - radialGradient, 2.0) * 290.0 + 0.002); + vec3 dustColor = dustLit * dustGlow * 8.2; + + coverage = clamp(coverage * 0.7, 0.0, 1.0); + + float fade = pow((abs(distFromCenter - discInner) + 0.4), 4.0) * 0.04; + float bloomFactor = 1.0 / (pow(distFromDisc, 2.0) * 40.0 + fade + 0.00002); + vec3 bloom = dustLit * pow(bloomFactor, 1.5); + + bloom *= mix(vec3(1.7, 1.1, 1.0), vec3(0.5, 0.6, 1.0), vec3(pow(radialGradient, 2.0))); + bloom *= mix(vec3(1.7, 0.5, 0.1), vec3(1.0), vec3(pow(radialGradient, 0.5))); + + dustColor = mix(dustColor, bloom * 150.0, clamp(1.0 - coverage, 0.0, 1.0)); + coverage = clamp(coverage + bloomFactor * bloomFactor * 0.1, 0.0, 1.0); + + if (coverage < 0.01) { + return; + } + + float angle = atan(-pos.x, -pos.z); + float radius = (distFromCenter * 1.5 + 0.55 + distFromDisc * 1.5) * 0.95 + time * 0.012; + + float omega = SPIN * pow(3.2 / max(distFromCenter, 0.75), 1.5); + float angleA = angle + mod(time * omega, TAU); + float angleB = angle + mod(time * omega * 0.45, TAU); + + float detail = 1.0; + detail *= octave(angleA, radius, 3.0, aa); + detail *= octave(angleB, radius, 6.0, aa); + detail *= octave(angleA, radius, 12.0, aa); + detail *= octave(angleB, radius, 24.0, aa); + + float mask = 2.0; + float radius2 = radius + 30.0; + mask *= octave(angleB, radius2, 3.0, aa); + mask *= octave(angleA, radius2, 6.0, aa); + mask *= octave(angleB, radius2, 12.0, aa); + mask *= octave(angleA, radius2, 24.0, aa); + mask *= octave(angleB, radius2, 48.0, aa); + mask *= octave(angleA, radius2, 92.0, aa); + + dustColor *= detail * 0.998 + 0.002; + coverage *= mask; + + float bandAngle = angle + mod(time * omega * 0.5, TAU); + float band = discNoise(discCoord(bandAngle, radius, 1.35)) * 0.5 + 0.5; + float grain = discNoise(discCoord(bandAngle, radius + 70.0, 3.46)) * 0.5 + 0.5; + vec3 discTexture = mix(vec3(0.95, 0.55, 0.26), vec3(0.42, 0.60, 1.0), band) * (0.45 + 0.80 * grain); + dustColor *= pow(discTexture, vec3(2.0)) * 4.0; + + float arm = 0.5 + 0.5 * cos(2.0 * angle + 2.6 * log(max(distFromCenter, 0.3)) + time * SPIN * 4.5); + dustColor *= 0.40 + 1.05 * arm * arm; + coverage *= 0.78 + 0.22 * arm; + + float hotAngleA = abs(mod(angleA - 1.35, TAU) - 3.14159265); + float hotRadiusA = distFromCenter - 1.5; + float hotAngleB = abs(mod(angleB - 4.2, TAU) - 3.14159265); + float hotRadiusB = distFromCenter - 2.7; + float hotspot = exp(-(hotAngleA * hotAngleA * 0.5 + hotRadiusA * hotRadiusA * 7.0)) * 3.4 + + exp(-(hotAngleB * hotAngleB * 0.9 + hotRadiusB * hotRadiusB * 5.0)) * 1.8; + dustColor *= 1.0 + hotspot; + + coverage = clamp(coverage * 1200.0 / float(ITERATIONS), 0.0, 1.0); + dustColor = max(vec3(0.0), dustColor); + coverage *= pcurve(radialGradient, 4.0, 0.9); + + color = (1.0 - alpha) * dustColor * coverage + color; + alpha = (1.0 - alpha) * coverage + alpha; +} + +void warpSpace(inout vec3 eyeVector, vec3 rayPos) { + float singularityDistance = length(rayPos); + float warpFactor = 1.0 / (pow(singularityDistance, 2.0) + 0.000001); + vec3 towardSingularity = -rayPos / max(singularityDistance, 1e-4); + eyeVector = normalize(eyeVector + towardSingularity * warpFactor * 5.0 / float(ITERATIONS)); +} + +vec3 toLocal(vec3 dir, vec3 basisX, vec3 basisY, vec3 basisZ) { + vec3 local = vec3(dot(dir, basisX), dot(dir, basisY), dot(dir, basisZ)); + local.xy /= ZOOM; + return normalize(local); +} + +vec3 sampleHistory(vec2 uv, vec2 res) { + vec2 samplePos = uv * res; + vec2 texPos = floor(samplePos - 0.5) + 0.5; + vec2 f = samplePos - texPos; + + vec2 w0 = f * (-0.5 + f * (1.0 - 0.5 * f)); + vec2 w1 = 1.0 + f * f * (-2.5 + 1.5 * f); + vec2 w2 = f * (0.5 + f * (2.0 - 1.5 * f)); + vec2 w3 = f * f * (-0.5 + 0.5 * f); + + vec2 w12 = w1 + w2; + vec2 offset12 = w2 / w12; + + vec2 p0 = (texPos - 1.0) / res; + vec2 p3 = (texPos + 2.0) / res; + vec2 p12 = (texPos + offset12) / res; + + vec3 result = vec3(0.0); + result += textureLod(History, vec2(p0.x, p0.y), 0.0).rgb * (w0.x * w0.y); + result += textureLod(History, vec2(p12.x, p0.y), 0.0).rgb * (w12.x * w0.y); + result += textureLod(History, vec2(p3.x, p0.y), 0.0).rgb * (w3.x * w0.y); + result += textureLod(History, vec2(p0.x, p12.y), 0.0).rgb * (w0.x * w12.y); + result += textureLod(History, vec2(p12.x, p12.y), 0.0).rgb * (w12.x * w12.y); + result += textureLod(History, vec2(p3.x, p12.y), 0.0).rgb * (w3.x * w12.y); + result += textureLod(History, vec2(p0.x, p3.y), 0.0).rgb * (w0.x * w3.y); + result += textureLod(History, vec2(p12.x, p3.y), 0.0).rgb * (w12.x * w3.y); + result += textureLod(History, vec2(p3.x, p3.y), 0.0).rgb * (w3.x * w3.y); + + return clamp(result, vec3(0.0), vec3(1.0)); +} + +void main() { + float time = misc.x; + float brightness = misc.w; + + vec2 res = vec2(textureSize(History, 0)); + + vec3 rd = skyRayDirection(texCoord); + vec3 rdJitter = skyRayDirection(texCoord + taa.xy / res); + + vec3 holeDir = normalize(HOLE_DIRECTION); + vec3 upReference = vec3(0.0, 1.0, 0.0); + vec3 tangent = normalize(upReference - dot(upReference, holeDir) * holeDir); + vec3 basisY = normalize(tangent * cos(INCLINATION) - holeDir * sin(INCLINATION)); + vec3 basisX = normalize(cross(basisY, holeDir)); + vec3 basisZ = cross(basisX, basisY); + + vec3 tint = skyTint(atan(rd.z, rd.x), 0.5, time); + vec3 mainColor = mix(vec3(1.0), tint, THEME_MIX); + + vec3 cameraWorld = -holeDir * CAMERA_DISTANCE; + vec3 pos = vec3(dot(cameraWorld, basisX), dot(cameraWorld, basisY), dot(cameraWorld, basisZ)); + vec3 eyeVector = toLocal(rdJitter, basisX, basisY, basisZ); + float pixelAngle = length(toLocal(skyRayDirection(texCoord + vec2(1.0, 0.0) / res), basisX, basisY, basisZ) + - toLocal(rd, basisX, basisY, basisZ)); + float aa = pixelAngle * CAMERA_DISTANCE * 1.425; + + vec3 color = vec3(0.0); + float alpha = 0.0; + float captured = 0.0; + + float impact = length(cross(pos, eyeVector)); + float along = dot(pos, eyeVector); + + if (impact < ENTRY_RADIUS && along < 0.0) { + float entry = -along - sqrt(max(0.0, ENTRY_RADIUS * ENTRY_RADIUS - impact * impact)); + float stepLength = FAR / float(ITERATIONS); + float dither = fract(skyHash21(gl_FragCoord.xy) + taa.w); + vec3 rayPos = pos + eyeVector * (entry + dither * stepLength); + + for (int i = 0; i < ITERATIONS; i++) { + warpSpace(eyeVector, rayPos); + rayPos += eyeVector * stepLength; + gasDisc(color, alpha, rayPos, time, mainColor, aa, eyeVector); + haze(color, rayPos, alpha, mainColor); + + float distanceSquared = dot(rayPos, rayPos); + captured = max(captured, 1.0 - smoothstep(0.32, 0.85, sqrt(distanceSquared))); + if (alpha > 0.995) { + break; + } + if (distanceSquared > 49.0 && dot(rayPos, eyeVector) > 0.0) { + break; + } + } + } + + color *= EXPOSURE; + + float ring = pow(clamp(captured * (1.0 - captured) * 4.0, 0.0, 1.0), 6.0); + color += mix(vec3(1.0), mainColor, 0.35) * ring * 0.6 * (1.0 - alpha); + color *= brightness; + + vec3 current = skyEncodeHDR(color); + + if (taa.z > 0.5) { + vec4 projected = prevViewProj * vec4(rd, 0.0); + if (projected.w > 1e-5) { + vec2 previousUv = projected.xy / projected.w * 0.5 + 0.5; + vec2 guard = 1.5 / res; + if (all(greaterThan(previousUv, guard)) && all(lessThan(previousUv, 1.0 - guard))) { + vec3 history = clamp(sampleHistory(previousUv, res), + current - TAA_CLAMP, current + TAA_CLAMP); + current = mix(current, history, TAA_BLEND); + } + } + } + + current += (fract(skyHash21(gl_FragCoord.xy + 13.7) + taa.w) - 0.5) * DITHER_STEP; + + fragColor = vec4(max(current, vec3(0.0)), 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/customsky/bloom_down.fsh b/src/main/resources/assets/evolution/shaders/core/customsky/bloom_down.fsh new file mode 100644 index 0000000..3f21212 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/customsky/bloom_down.fsh @@ -0,0 +1,57 @@ +#version 150 + +uniform sampler2D Source; + +layout(std140) uniform BloomParams { + vec4 params; +}; + +in vec2 texCoord; +out vec4 fragColor; + +const float HDR_CEILING = 0.9975; +const float HDR_FLOOR = 0.0055; +const float GAMMA = 2.2; +const float HDR_FLAG = 0.5; +const float CENTER_WEIGHT = 4.0; +const float EDGE_WEIGHT = 2.0; +const float CORNER_WEIGHT = 1.0; +const float TOTAL_WEIGHT = 16.0; + +vec3 decodeHDR(vec3 c) { + c = pow(min(c, vec3(HDR_CEILING)), vec3(GAMMA)); + return c / max(1.0 - c, vec3(HDR_FLOOR)); +} + +vec3 encodeHDR(vec3 c) { + c = max(c, vec3(0.0)); + return pow(c / (1.0 + c), vec3(1.0 / GAMMA)); +} + +vec3 fetch(vec2 uv, float hdr) { + vec3 c = texture(Source, uv).rgb; + return hdr > HDR_FLAG ? decodeHDR(c) : c; +} + +void main() { + vec2 halfPixel = params.xy; + float hdr = params.w; + + vec3 sum = fetch(texCoord, hdr) * CENTER_WEIGHT; + sum += fetch(texCoord + vec2(halfPixel.x, 0.0), hdr) * EDGE_WEIGHT; + sum += fetch(texCoord - vec2(halfPixel.x, 0.0), hdr) * EDGE_WEIGHT; + sum += fetch(texCoord + vec2(0.0, halfPixel.y), hdr) * EDGE_WEIGHT; + sum += fetch(texCoord - vec2(0.0, halfPixel.y), hdr) * EDGE_WEIGHT; + sum += fetch(texCoord + halfPixel, hdr) * CORNER_WEIGHT; + sum += fetch(texCoord - halfPixel, hdr) * CORNER_WEIGHT; + sum += fetch(texCoord + vec2(halfPixel.x, -halfPixel.y), hdr) * CORNER_WEIGHT; + sum += fetch(texCoord - vec2(halfPixel.x, -halfPixel.y), hdr) * CORNER_WEIGHT; + sum /= TOTAL_WEIGHT; + + if (hdr > HDR_FLAG) { + fragColor = vec4(encodeHDR(sum), 1.0); + return; + } + + fragColor = vec4(max(sum - params.z, vec3(0.0)), 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/customsky/composite.fsh b/src/main/resources/assets/evolution/shaders/core/customsky/composite.fsh new file mode 100644 index 0000000..541d6f4 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/customsky/composite.fsh @@ -0,0 +1,269 @@ +#version 150 + +#moj_import + +uniform sampler2D DepthTex; +uniform sampler2D Sky; +uniform sampler2D Bloom0; +uniform sampler2D Bloom1; +uniform sampler2D Bloom2; +uniform sampler2D Bloom3; +uniform sampler2D Bloom4; +uniform sampler2D Bloom5; + +in vec2 texCoord; +out vec4 fragColor; + +const float BLOOM_STRENGTH = 0.13; +const float DEPTH_NEAR_EPSILON = 0.00001; +const float DEPTH_FAR_EPSILON = 0.99999; +const float LDR_BLOOM_STRENGTH = 0.34; +const float TYPE_LIMIT_BLACK_HOLE = 0.5; +const float TYPE_LIMIT_STARFALL = 1.5; +const float TYPE_LIMIT_AURORA = 2.5; +const vec3 LUMA = vec3(0.299, 0.587, 0.114); +const vec3 HOLE_DIRECTION = vec3(0.34, 0.62, 0.71); + +const float AURORA_BLOOM_STRENGTH = 0.06; +const float AURORA_BLOOM_WEIGHT_1 = 0.85; +const float AURORA_BLOOM_WEIGHT_2 = 0.65; +const float AURORA_BLOOM_WEIGHT_3 = 0.45; +const float AURORA_BLOOM_WEIGHT_4 = 0.30; +const float AURORA_BLOOM_WEIGHT_5 = 0.20; +const float AURORA_STAR_DENSITY = 0.045; +const float AURORA_STAR_TWINKLE = 0.35; +const float AURORA_STAR_GAIN = 0.80; +const float AURORA_STAR_OCCLUSION = 3.0; +const float AURORA_STAR_HORIZON_START = -0.01; +const float AURORA_STAR_HORIZON_END = 0.06; +const float AURORA_CONTRAST = 1.40; +const float AURORA_GAMMA = 2.2; +const vec3 AURORA_SEA_TONE = vec3(0.010, 0.013, 0.030); +const float AURORA_SEA_OPACITY = 0.75; + + +const float BEAM_BLOOM_STRENGTH = 0.16; +const float BEAM_BLOOM_WEIGHT_1 = 0.95; +const float BEAM_BLOOM_WEIGHT_2 = 0.85; +const float BEAM_BLOOM_WEIGHT_3 = 0.70; +const float BEAM_BLOOM_WEIGHT_4 = 0.55; +const float BEAM_BLOOM_WEIGHT_5 = 0.40; +const float BEAM_CONTRAST = 1.10; +const float BEAM_GAMMA = 2.2; + +vec3 blackHoleStars(vec3 dir, float time) { + vec3 accum = vec3(0.0); + vec3 p = dir * 42.0; + float dens = 0.05; + float amp = 1.0; + for (int i = 0; i < 4; i++) { + vec3 id = floor(p); + vec3 q = fract(p) - 0.5; + vec3 rn = skyHash33(id); + float core = smoothstep(0.30, 0.0, length(q)); + float hit = step(rn.x, dens); + float twinkle = 0.78 + 0.22 * sin(time * (0.6 + rn.z * 1.3) + rn.y * 47.0); + vec3 tint = mix(vec3(1.0, 0.74, 0.50), vec3(0.72, 0.86, 1.0), rn.y); + accum += hit * core * core * tint * (0.35 + 0.65 * rn.z) * twinkle * amp; + p = p * 1.63 + 17.0; + dens *= 0.62; + amp *= 0.78; + } + return accum * 0.42; +} + +vec4 cubicWeights(float x) { + float x2 = x * x; + float x3 = x2 * x; + vec4 w; + w.x = -x3 + 3.0 * x2 - 3.0 * x + 1.0; + w.y = 3.0 * x3 - 6.0 * x2 + 4.0; + w.z = -3.0 * x3 + 3.0 * x2 + 3.0 * x + 1.0; + w.w = x3; + return w / 6.0; +} + +vec3 bicubic(sampler2D tex, vec2 uv) { + vec2 resolution = vec2(textureSize(tex, 0)); + vec2 coord = uv * resolution; + + float fx = fract(coord.x); + float fy = fract(coord.y); + coord.x -= fx; + coord.y -= fy; + fx -= 0.5; + fy -= 0.5; + + vec4 xcubic = cubicWeights(fx); + vec4 ycubic = cubicWeights(fy); + + vec4 c = vec4(coord.x - 0.5, coord.x + 1.5, coord.y - 0.5, coord.y + 1.5); + vec4 s = vec4(xcubic.x + xcubic.y, xcubic.z + xcubic.w, ycubic.x + ycubic.y, ycubic.z + ycubic.w); + vec4 offset = c + vec4(xcubic.y, xcubic.w, ycubic.y, ycubic.w) / s; + + vec3 s0 = texture(tex, vec2(offset.x, offset.z) / resolution).rgb; + vec3 s1 = texture(tex, vec2(offset.y, offset.z) / resolution).rgb; + vec3 s2 = texture(tex, vec2(offset.x, offset.w) / resolution).rgb; + vec3 s3 = texture(tex, vec2(offset.y, offset.w) / resolution).rgb; + + float sx = s.x / (s.x + s.y); + float sy = s.z / (s.z + s.w); + + return mix(mix(s3, s2, sx), mix(s1, s0, sx), sy); +} + +vec4 catmullRomWeights(float x) { + float x2 = x * x; + float x3 = x2 * x; + return vec4( + -0.5 * x3 + x2 - 0.5 * x, + 1.5 * x3 - 2.5 * x2 + 1.0, + -1.5 * x3 + 2.0 * x2 + 0.5 * x, + 0.5 * x3 - 0.5 * x2); +} + +vec3 sharpBicubicRow(sampler2D tex, vec3 columnCoord, vec3 columnWeight, float rowCoord) { + vec3 line = texture(tex, vec2(columnCoord.x, rowCoord)).rgb * columnWeight.x; + line += texture(tex, vec2(columnCoord.y, rowCoord)).rgb * columnWeight.y; + return line + texture(tex, vec2(columnCoord.z, rowCoord)).rgb * columnWeight.z; +} + +vec3 sharpBicubic(sampler2D tex, vec2 uv) { + vec2 resolution = vec2(textureSize(tex, 0)); + vec2 texelSize = 1.0 / resolution; + vec2 center = floor(uv * resolution - 0.5) + 0.5; + vec2 f = uv * resolution - center; + + vec4 wx = catmullRomWeights(f.x); + vec4 wy = catmullRomWeights(f.y); + + vec2 pairWeight = vec2(wx.y + wx.z, wy.y + wy.z); + vec2 pairOffset = vec2(wx.z / pairWeight.x, wy.z / pairWeight.y); + + vec3 columnWeight = vec3(wx.x, pairWeight.x, wx.w); + vec3 rowWeight = vec3(wy.x, pairWeight.y, wy.w); + vec3 columnCoord = (center.x + vec3(-1.0, pairOffset.x, 2.0)) * texelSize.x; + vec3 rowCoord = (center.y + vec3(-1.0, pairOffset.y, 2.0)) * texelSize.y; + + vec3 result = sharpBicubicRow(tex, columnCoord, columnWeight, rowCoord.x) * rowWeight.x; + result += sharpBicubicRow(tex, columnCoord, columnWeight, rowCoord.y) * rowWeight.y; + result += sharpBicubicRow(tex, columnCoord, columnWeight, rowCoord.z) * rowWeight.z; + return max(result, vec3(0.0)); +} + +vec3 blackHole() { + vec3 color = skyDecodeHDR(bicubic(Sky, texCoord)); + + vec3 bloom = skyDecodeHDR(bicubic(Bloom0, texCoord)); + bloom += skyDecodeHDR(bicubic(Bloom1, texCoord)); + bloom += skyDecodeHDR(bicubic(Bloom2, texCoord)); + bloom += skyDecodeHDR(bicubic(Bloom3, texCoord)) * 0.90; + bloom += skyDecodeHDR(bicubic(Bloom4, texCoord)) * 0.80; + bloom += skyDecodeHDR(bicubic(Bloom5, texCoord)) * 0.65; + + color += bloom * BLOOM_STRENGTH; + + color = pow(color, vec3(1.5)); + color = color / (1.0 + color); + color = pow(color, vec3(1.0 / 1.5)); + color = color * color * (3.0 - 2.0 * color); + color = pow(color, vec3(1.3, 1.20, 1.0)); + color = clamp(color * 1.01, 0.0, 1.0); + color = pow(color, vec3(0.7 / 2.2)); + + vec3 rd = skyRayDirection(texCoord); + vec3 holeDir = normalize(HOLE_DIRECTION); + float cosTheta = clamp(dot(rd, holeDir), -1.0, 1.0); + float theta = acos(cosTheta); + vec3 toHole = holeDir - cosTheta * rd; + float toHoleLength = length(toHole); + vec3 lensed = rd; + if (toHoleLength > 1e-4) { + lensed = normalize(rd + toHole / toHoleLength * (0.010 / max(theta, 0.05))); + } + + float luminance = dot(color, LUMA); + vec3 stars = blackHoleStars(lensed, misc.x) * smoothstep(0.10, 0.17, theta); + color += stars * misc.w * clamp(1.0 - luminance * 2.4, 0.0, 1.0); + + return color; +} + +vec3 starfall() { + vec3 sky = texture(Sky, texCoord).rgb; + vec3 bloom = texture(Bloom0, texCoord).rgb + + texture(Bloom1, texCoord).rgb * 0.90 + + texture(Bloom2, texCoord).rgb * 0.75; + return sky + bloom * LDR_BLOOM_STRENGTH; +} + +vec3 aurora() { + vec3 color = skyDecodeHDR(sharpBicubic(Sky, texCoord)); + + vec3 bloom = skyDecodeHDR(bicubic(Bloom0, texCoord)); + bloom += skyDecodeHDR(bicubic(Bloom1, texCoord)) * AURORA_BLOOM_WEIGHT_1; + bloom += skyDecodeHDR(bicubic(Bloom2, texCoord)) * AURORA_BLOOM_WEIGHT_2; + bloom += skyDecodeHDR(bicubic(Bloom3, texCoord)) * AURORA_BLOOM_WEIGHT_3; + bloom += skyDecodeHDR(bicubic(Bloom4, texCoord)) * AURORA_BLOOM_WEIGHT_4; + bloom += skyDecodeHDR(bicubic(Bloom5, texCoord)) * AURORA_BLOOM_WEIGHT_5; + + color += bloom * AURORA_BLOOM_STRENGTH; + + vec3 rd = skyRayDirection(texCoord); + float seaMask = skySeaMask(rd.y) * AURORA_SEA_OPACITY; + if (seaMask > 0.0) { + color = mix(color, skySea(rd, misc.x, AURORA_SEA_TONE, skyColor.rgb) + * misc.w * skyNadirDepth(rd.y), seaMask); + } + + float luminance = dot(color, LUMA); + color += skyStarField(rd, misc.x, AURORA_STAR_DENSITY, AURORA_STAR_TWINKLE) + * AURORA_STAR_GAIN * misc.w + * clamp(1.0 - luminance * AURORA_STAR_OCCLUSION, 0.0, 1.0) + * max(smoothstep(AURORA_STAR_HORIZON_START, AURORA_STAR_HORIZON_END, rd.y), skyExtra.y); + + color = color / (1.0 + color); + color = pow(color, vec3(AURORA_CONTRAST)); + return pow(color, vec3(1.0 / AURORA_GAMMA)); +} + +vec3 endBeams() { + vec3 color = skyDecodeHDR(bicubic(Sky, texCoord)); + + vec3 bloom = skyDecodeHDR(bicubic(Bloom0, texCoord)); + bloom += skyDecodeHDR(bicubic(Bloom1, texCoord)) * BEAM_BLOOM_WEIGHT_1; + bloom += skyDecodeHDR(bicubic(Bloom2, texCoord)) * BEAM_BLOOM_WEIGHT_2; + bloom += skyDecodeHDR(bicubic(Bloom3, texCoord)) * BEAM_BLOOM_WEIGHT_3; + bloom += skyDecodeHDR(bicubic(Bloom4, texCoord)) * BEAM_BLOOM_WEIGHT_4; + bloom += skyDecodeHDR(bicubic(Bloom5, texCoord)) * BEAM_BLOOM_WEIGHT_5; + + color += bloom * BEAM_BLOOM_STRENGTH; + + color = color / (1.0 + color); + color = pow(color, vec3(BEAM_CONTRAST)); + return pow(color, vec3(1.0 / BEAM_GAMMA)); +} + +bool hasGeometry(vec2 uv) { + float depth = texture(DepthTex, uv).r; + return depth > DEPTH_NEAR_EPSILON && depth < DEPTH_FAR_EPSILON; +} + +void main() { + if (hasGeometry(texCoord)) { + discard; + } + + vec3 result; + if (skyColor2.w < TYPE_LIMIT_BLACK_HOLE) { + result = blackHole(); + } else if (skyColor2.w < TYPE_LIMIT_STARFALL) { + result = starfall(); + } else if (skyColor2.w < TYPE_LIMIT_AURORA) { + result = aurora(); + } else { + result = endBeams(); + } + + fragColor = vec4(result, skyExtra.x); +} diff --git a/src/main/resources/assets/evolution/shaders/core/customsky/endbeams.fsh b/src/main/resources/assets/evolution/shaders/core/customsky/endbeams.fsh new file mode 100644 index 0000000..8788a97 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/customsky/endbeams.fsh @@ -0,0 +1,238 @@ +#version 150 + +#moj_import + +uniform sampler2D NoiseTex; +uniform sampler2D History; + +in vec2 texCoord; +out vec4 fragColor; + +const int BEAM_SAMPLES = 32; +const float BEAM_MAX_DISTANCE = 1536.0; +const float BEAM_DISTRIBUTION = 1.3; +const float BEAM_FOG_CURVE = 0.55; + +const float BEAM_CENTER_OFFSET = 25.0; +const float BEAM_HEIGHT = 1.0; +const float BEAM_INTENSITY = 3.0; +const float BEAM_ENERGY = 1.0; +const float BEAM_PLANE_SCALE = 0.12; +const float BEAM_WIND_RATE = 0.035; + +const float BEAM_NOISE_LOW = 0.04375; +const float BEAM_NOISE_MID = 0.175; +const float BEAM_NOISE_HIGH = 0.7; +const float BEAM_WEIGHT_LOW = 2.0; +const float BEAM_WEIGHT_MID = 0.5; +const float BEAM_WEIGHT_HIGH = 0.5; +const float BEAM_WEIGHT_TOTAL = 3.0; +const float BEAM_WIND_LOW = 0.5; +const float FIRE_NOISE_SCALE = 0.1; +const float FIRE_CONTRAST = 1.6; + +const float BEAM_SPREAD_BASE = 2000.0; +const float BEAM_SPREAD_FIRE = 40.0; +const float BEAM_SPREAD_UNIT = 0.001; +const float BEAM_SPREAD_RADIUS = 250.0; +const float BEAM_SPREAD_RADIUS_GAIN = 0.5; +const float BEAM_ALTITUDE_WIDE = 4.0; +const float BEAM_ALTITUDE_SPLIT = 0.5; +const float BEAM_ALTITUDE_POWER = 7.0; +const float BEAM_NOISE_MIX = 0.7; +const float BEAM_FIRE_MIX = 0.3; +const float BEAM_POWER = 1.75; +const float BEAM_DISTANCE_GAIN = 128.0; +const float ALTITUDE_EPSILON = 1.0e-3; + +const float PURPLE_GAIN = 3.2; +const float EMBER_INTENSITY = 300.0; +const float EMBER_ENERGY_GAIN = 1050.0; +const float EMBER_BASE = 0.0004; +const float EMBER_GAIN = 0.2; +const float EMBER_DISTANCE = 256.0; +const float EMBER_CENTER = 0.5; +const float NORMALIZE_EPSILON = 1.0e-4; + +const float STAR_PROJECTION = 0.65; +const float STAR_PLANE_SCALE = 0.5; +const float STAR_LOWER_OFFSET = 100.0; +const float STAR_GRID = 1024.0; +const float STAR_THRESHOLD = 0.7; +const float STAR_GAIN = 3000.0; +const float STAR_FADE_FLOOR = 0.015; +const float STAR_FADE_CEILING = 0.05; +const float STAR_HORIZON_EDGE = 0.25; +const float STAR_INTENSITY = 1.0; +const vec2 STAR_HASH_BASIS = vec2(12.9898, 4.1414); +const float STAR_HASH_SCALE = 43758.54953; +const float STAR_HASH_OFFSET_A = 0.1; +const float STAR_HASH_OFFSET_B = 0.23; + +const float BASE_SKY_LEVEL = 0.03; +const float BASE_TINT = 0.97; +const float EXPOSURE = 0.185; + +const float IGN_SCALE = 52.9829189; +const vec2 IGN_BASIS = vec2(0.06711056, 0.00583715); +const float TAA_BLEND = 0.92; +const float TAA_CLAMP = 0.25; +const float TAA_GUARD = 1.5; +const float TAA_EPSILON = 1.0e-5; +const float DITHER_STEP = 1.0 / 255.0; +const float DITHER_OFFSET = 13.7; + +float interleavedGradient(vec2 p) { + return fract(IGN_SCALE * fract(dot(p, IGN_BASIS))); +} + +vec3 emberColor() { + return skyColor.w < SKY_GRADIENT_DUAL ? skyColor.rgb : skyColor2.rgb; +} + +float starHash(vec2 pos) { + return fract(sin(dot(pos, STAR_HASH_BASIS)) * STAR_HASH_SCALE); +} + +vec3 enderStars(vec3 dir, vec3 tint) { + vec3 projected = STAR_PROJECTION * dir / (abs(dir.y) + length(dir.xz)); + vec2 cell = projected.xz * STAR_PLANE_SCALE; + if (dir.y < 0.0) { + cell += STAR_LOWER_OFFSET; + } + cell = floor(cell * STAR_GRID) / STAR_GRID; + + float star = starHash(cell) + * starHash(cell + STAR_HASH_OFFSET_A) + * starHash(cell + STAR_HASH_OFFSET_B); + star = max(star - STAR_THRESHOLD, 0.0); + star *= star; + + float up = abs(dir.y); + float fade = 1.0 - up; + vec3 stars = star * tint * STAR_GAIN; + stars *= min(fade * fade + STAR_FADE_FLOOR, STAR_FADE_CEILING) + STAR_FADE_FLOOR; + stars *= smoothstep(0.0, STAR_HORIZON_EDGE, up); + return stars * STAR_INTENSITY; +} + +float beamNoise(vec2 planeCoord, vec2 wind) { + float noise = textureLod(NoiseTex, planeCoord * BEAM_NOISE_MID - wind, 0.0).b * BEAM_WEIGHT_MID; + noise += textureLod(NoiseTex, planeCoord * BEAM_NOISE_LOW + wind * BEAM_WIND_LOW, 0.0).b * BEAM_WEIGHT_LOW; + noise += textureLod(NoiseTex, planeCoord * BEAM_NOISE_HIGH - wind, 0.0).b * BEAM_WEIGHT_HIGH; + return noise / BEAM_WEIGHT_TOTAL; +} + +vec3 enderBeams(vec3 pos, vec2 wind, vec3 purple, vec3 ember) { + float radius = length(pos.xz); + vec2 planeCoord = pos.xz * BEAM_PLANE_SCALE; + + float noise = beamNoise(planeCoord, wind); + float fire = textureLod(NoiseTex, abs(planeCoord * FIRE_NOISE_SCALE) - wind, 0.0).b; + fire = clamp((fire - EMBER_CENTER) * FIRE_CONTRAST + EMBER_CENTER, 0.0, 1.0); + + float spread = (BEAM_SPREAD_BASE * noise * noise + BEAM_SPREAD_FIRE * fire) + * BEAM_SPREAD_UNIT * BEAM_HEIGHT * (BEAM_SPREAD_RADIUS + BEAM_SPREAD_RADIUS_GAIN * radius); + spread = max(spread, ALTITUDE_EPSILON); + + float altitude = abs(pos.y - BEAM_CENTER_OFFSET); + float altitudeFactor = BEAM_ALTITUDE_SPLIT * (1.0 - smoothstep(0.0, spread, altitude)) + + BEAM_ALTITUDE_SPLIT * (1.0 - smoothstep(0.0, BEAM_ALTITUDE_WIDE * spread, altitude)); + + float shape = noise * noise * BEAM_NOISE_MIX + BEAM_FIRE_MIX * fire; + shape *= pow(altitudeFactor, BEAM_ALTITUDE_POWER); + shape = pow(shape, BEAM_POWER); + + float emberEdge = fire - EMBER_CENTER; + emberEdge *= emberEdge; + vec3 beamColor = purple + ember + * (EMBER_BASE + EMBER_GAIN * smoothstep(0.0, EMBER_DISTANCE, radius) * emberEdge * emberEdge); + + return shape * BEAM_INTENSITY * beamColor * (1.0 + smoothstep(0.0, BEAM_DISTANCE_GAIN, radius)); +} + +float fogWeight(float distance) { + float t = pow(distance / BEAM_MAX_DISTANCE, BEAM_FOG_CURVE); + return t * t * (3.0 - 2.0 * t); +} + +vec3 sampleHistory(vec2 uv, vec2 res) { + vec2 samplePos = uv * res; + vec2 texPos = floor(samplePos - 0.5) + 0.5; + vec2 f = samplePos - texPos; + + vec2 w0 = f * (-0.5 + f * (1.0 - 0.5 * f)); + vec2 w1 = 1.0 + f * f * (-2.5 + 1.5 * f); + vec2 w2 = f * (0.5 + f * (2.0 - 1.5 * f)); + vec2 w3 = f * f * (-0.5 + 0.5 * f); + + vec2 w12 = w1 + w2; + vec2 offset12 = w2 / w12; + + vec2 p0 = (texPos - 1.0) / res; + vec2 p3 = (texPos + 2.0) / res; + vec2 p12 = (texPos + offset12) / res; + + vec3 result = vec3(0.0); + result += textureLod(History, vec2(p0.x, p0.y), 0.0).rgb * (w0.x * w0.y); + result += textureLod(History, vec2(p12.x, p0.y), 0.0).rgb * (w12.x * w0.y); + result += textureLod(History, vec2(p3.x, p0.y), 0.0).rgb * (w3.x * w0.y); + result += textureLod(History, vec2(p0.x, p12.y), 0.0).rgb * (w0.x * w12.y); + result += textureLod(History, vec2(p12.x, p12.y), 0.0).rgb * (w12.x * w12.y); + result += textureLod(History, vec2(p3.x, p12.y), 0.0).rgb * (w3.x * w12.y); + result += textureLod(History, vec2(p0.x, p3.y), 0.0).rgb * (w0.x * w3.y); + result += textureLod(History, vec2(p12.x, p3.y), 0.0).rgb * (w12.x * w3.y); + result += textureLod(History, vec2(p3.x, p3.y), 0.0).rgb * (w3.x * w3.y); + + return clamp(result, vec3(0.0), vec3(1.0)); +} + +void main() { + float time = misc.x; + float brightness = misc.w; + vec2 res = vec2(textureSize(History, 0)); + + vec3 rd = skyRayDirection(texCoord); + vec3 direction = skyRayDirection(texCoord + taa.xy / res); + + vec3 tint = skyColor.rgb; + vec3 purple = normalize(max(tint * tint * tint, vec3(NORMALIZE_EPSILON))) + * (PURPLE_GAIN - BEAM_ENERGY); + vec3 ember = emberColor() * (EMBER_INTENSITY + EMBER_ENERGY_GAIN * BEAM_ENERGY); + + float dither = fract(interleavedGradient(gl_FragCoord.xy) + taa.w); + vec2 wind = vec2(time * BEAM_WIND_RATE); + + vec3 color = mix(vec3(1.0), tint, BASE_TINT) * BASE_SKY_LEVEL; + color += enderStars(direction, tint); + + float lastWeight = 0.0; + for (int i = 0; i < BEAM_SAMPLES; i++) { + float t = (float(i) + dither) / float(BEAM_SAMPLES); + float travel = pow(t, BEAM_DISTRIBUTION) * BEAM_MAX_DISTANCE; + float weight = fogWeight(travel); + color += enderBeams(direction * travel, wind, purple, ember) * (weight - lastWeight); + lastWeight = weight; + } + + color *= EXPOSURE * brightness; + + vec3 current = skyEncodeHDR(color); + + if (taa.z > 0.5) { + vec4 projected = prevViewProj * vec4(rd, 0.0); + if (projected.w > TAA_EPSILON) { + vec2 previousUv = projected.xy / projected.w * 0.5 + 0.5; + vec2 guard = TAA_GUARD / res; + if (all(greaterThan(previousUv, guard)) && all(lessThan(previousUv, 1.0 - guard))) { + vec3 history = clamp(sampleHistory(previousUv, res), + current - TAA_CLAMP, current + TAA_CLAMP); + current = mix(current, history, TAA_BLEND); + } + } + } + + current += (fract(skyHash21(gl_FragCoord.xy + DITHER_OFFSET) + taa.w) - 0.5) * DITHER_STEP; + + fragColor = vec4(max(current, vec3(0.0)), 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/customsky/fullscreen.vsh b/src/main/resources/assets/evolution/shaders/core/customsky/fullscreen.vsh new file mode 100644 index 0000000..f3b5d1e --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/customsky/fullscreen.vsh @@ -0,0 +1,9 @@ +#version 150 + +out vec2 texCoord; + +void main() { + vec2 uv = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2); + texCoord = uv; + gl_Position = vec4(uv * 2.0 - 1.0, 0.0, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/customsky/starfall.fsh b/src/main/resources/assets/evolution/shaders/core/customsky/starfall.fsh new file mode 100644 index 0000000..72bc004 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/customsky/starfall.fsh @@ -0,0 +1,132 @@ +#version 150 + +#moj_import + +in vec2 texCoord; +out vec4 fragColor; + +const mat2 ROT = mat2(0.80, 0.60, -0.60, 0.80); +const float TAU = 6.28318530718; +const float PI = 3.14159265359; +const int METEORS = 10; +const float FLIGHT_WINDOW = 0.16; +const float BEAM_HALF_WIDTH = 0.02; +const vec3 NIGHT_BASE = vec3(0.014, 0.021, 0.050); +const float TONEMAP_CEILING = 16.0; + +float hash21Grid(vec2 p) { + uvec2 q = uvec2(ivec2(p)) * uvec2(1597334673U, 3812015801U); + uint n = (q.x ^ q.y) * 1597334673U; + return float(n) * (1.0 / 4294967295.0); +} + +float valueNoise(vec2 p) { + vec2 i = floor(p); + vec2 f = fract(p); + f = f * f * (3.0 - 2.0 * f); + float a = hash21Grid(i); + float b = hash21Grid(i + vec2(1.0, 0.0)); + float c = hash21Grid(i + vec2(0.0, 1.0)); + float d = hash21Grid(i + vec2(1.0, 1.0)); + return mix(mix(a, b, f.x), mix(c, d, f.x), f.y); +} + +float fbm(vec2 p) { + float amp = 0.5; + float sum = 0.0; + for (int i = 0; i < 4; i++) { + sum += amp * valueNoise(p); + p = ROT * p * 2.03; + amp *= 0.5; + } + return sum; +} + +vec3 meteors(vec3 rd, float time, vec3 themeTint) { + vec3 sum = vec3(0.0); + for (int i = 0; i < METEORS; i++) { + float fi = float(i); + vec3 gh = skyHash33(vec3(fi * 13.0 + 7.0, 51.0, 3.0)); + + float period = mix(2.2, 6.5, gh.x); + float cycle = time / period + gh.y * 19.0; + float fly = fract(cycle); + if (fly > FLIGHT_WINDOW) { + continue; + } + float progress = fly / FLIGHT_WINDOW; + + float shower = floor(cycle); + vec3 rnd = skyHash33(vec3(fi * 29.0 + 5.0, shower, 11.0)); + vec3 rnd2 = skyHash33(vec3(fi * 31.0 + 3.0, shower, 23.0)); + + float azimuth = rnd.x * TAU; + float elevation = mix(0.12, 0.95, rnd.y); + vec3 headStart = vec3(cos(elevation) * cos(azimuth), sin(elevation), cos(elevation) * sin(azimuth)); + + vec3 east = normalize(cross(vec3(0.0, 1.0, 0.0), headStart)); + vec3 north = cross(headStart, east); + vec3 travel = normalize(-north + east * (rnd.z - 0.5) * 1.6); + vec3 planeNormal = normalize(cross(headStart, travel)); + vec3 basisA = headStart; + vec3 basisB = cross(planeNormal, basisA); + + float offPlane = dot(rd, planeNormal); + if (abs(offPlane) > BEAM_HALF_WIDTH) { + continue; + } + + float along = atan(dot(rd, basisB), dot(rd, basisA)); + + float arc = mix(0.35, 0.80, rnd2.x); + float head = progress * arc; + float tailLength = mix(0.10, 0.22, rnd2.y) * (0.35 + 0.65 * progress); + + float s = along - head; + if (s > 0.02 || s < -(tailLength + 0.05)) { + continue; + } + + float envelope = pow(sin(progress * PI), 0.65); + + float width = mix(0.0016, 0.0026, rnd2.z); + float line = exp(-offPlane * offPlane / (width * width)); + + float tailT = clamp(-s / tailLength, 0.0, 1.0); + float profile = (1.0 - tailT) * (1.0 - tailT); + float trail = line * profile * step(s, 0.0); + + float distanceToHead = length(vec2(s, offPlane)); + float headCore = exp(-distanceToHead * distanceToHead / (0.0035 * 0.0035)) * 2.5; + float headGlow = exp(-distanceToHead * distanceToHead / (0.012 * 0.012)) * 0.5; + + float sparkle = 0.85 + 0.15 * sin(along * 240.0 + shower * 12.0); + + vec3 hot = vec3(1.0, 0.97, 0.90); + vec3 warm = mix(vec3(1.0, 0.55, 0.22), themeTint, 0.45); + vec3 col = mix(hot, warm, tailT); + + sum += (trail * 1.35 * sparkle + headCore + headGlow) * col * envelope; + } + return sum; +} + +void main() { + float time = misc.x; + float brightness = misc.w; + + vec3 rd = skyRayDirection(texCoord); + float axis = atan(rd.z, rd.x); + vec3 tint = skyTint(axis, 0.5, time); + + vec3 col = NIGHT_BASE * (0.55 + 0.45 * smoothstep(-1.0, 1.0, rd.y)); + col += skyStarField(rd, time, 0.06, 0.25) * 1.05; + + float band = exp(-pow((abs(rd.y) - 0.18) * 2.4, 2.0)); + float milky = fbm(rd.xz * 3.2 + rd.y * 1.7 + time * 0.004); + col += tint * band * pow(clamp(milky, 0.0, 1.0), 2.4) * 0.10; + + col += meteors(rd, time, tint); + + fragColor = vec4(tanh(min(col * brightness, vec3(TONEMAP_CEILING))), 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/death_blast/data.json b/src/main/resources/assets/evolution/shaders/core/death_blast/data.json new file mode 100644 index 0000000..e7fb33a --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/death_blast/data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/death_blast/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/death_blast/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/death_blast/fragment.fsh new file mode 100644 index 0000000..46327e0 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/death_blast/fragment.fsh @@ -0,0 +1,88 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +out vec4 OutColor; + +const float EXPAND_SPEED = 1.25; +const float EXPAND_CURVE = 2.6; +const float SHOCK_SPEED = 2.0; +const float FLASH_DECAY = 5.0; +const float TONE_EXPOSURE = 2.0; +const float SILHOUETTE_RADIUS = 1.15; + +float blastFbm(vec2 x) { + float v = 0.0; + float a = 0.5; + vec2 shift = vec2(100.0); + mat2 rot = mat2(cos(0.5), sin(0.5), -sin(0.5), cos(0.5)); + for (int i = 0; i < 3; ++i) { + v += a * common_noise(x); + x = rot * x * 2.0 + shift; + a *= 0.5; + } + return v * 1.107; +} + +void main() { + vec2 p = (FragCoord - 0.5) * 2.0; + float pl = length(p); + float edgeFade = smoothstep(SILHOUETTE_RADIUS, 0.8, pl); + if (edgeFade <= 0.0) { + discard; + } + + float t = Progress; + vec2 seedShift = vec2(Time * 0.37, Time * 0.61); + + vec2 pc = p + vec2(0.0, t * 0.4); + float r = length(pc); + vec2 dir = r > 1.0e-4 ? pc / r : vec2(0.0, 1.0); + + float flow = t * 1.1; + float n = blastFbm(pc * 3.0 - dir * flow + seedShift); + float n2 = blastFbm(pc * 6.5 + dir * flow * 0.6 - seedShift); + + float grown = 1.0 - pow(1.0 - min(t * EXPAND_SPEED, 1.0), EXPAND_CURVE); + float radius = mix(0.14, 0.85, grown); + float edge = r - radius * (0.55 + 0.6 * n + 0.2 * n2); + float body = 1.0 - smoothstep(-0.25, 0.06, edge); + + float heat = body * (1.0 - smoothstep(0.0, radius * (0.85 + 0.4 * n2), r)); + heat = pow(heat, 1.2 + t * 1.8) * (1.0 - t * 0.6); + + vec3 coreColor = vec3(1.0, 0.99, 0.94); + vec3 flameColor = clamp(TintColor * 1.2 + vec3(0.18, 0.05, 0.0), 0.0, 1.0); + vec3 smokeColor = vec3(0.14, 0.13, 0.125); + + float sootMix = smoothstep(0.35, 0.95, t); + vec3 col = mix(smokeColor, flameColor, smoothstep(0.08, 0.5, heat)); + col = mix(col, coreColor, smoothstep(0.5, 0.92, heat)); + col = mix(col, smokeColor, sootMix * (1.0 - smoothstep(0.35, 0.9, heat))); + col *= 0.8 + 0.4 * n2; + + float density = body * (0.45 + 0.55 * n2); + float alpha = density * (1.0 - smoothstep(0.5, 1.0, t)) * (1.0 - sootMix * 0.35); + + float shock = t * SHOCK_SPEED; + float ring = exp(-pow((pl - shock) * 14.0, 2.0)) * max(0.0, 1.0 - t * 2.6); + col += vec3(1.0, 0.97, 0.9) * ring * edgeFade; + alpha = max(alpha, ring * 0.45 * edgeFade); + + float flash = max(0.0, 1.0 - t * FLASH_DECAY); + float flashMask = (1.0 - smoothstep(0.0, 0.75, pl)) * edgeFade; + col += coreColor * flash * flashMask * 1.4; + alpha = max(alpha, flash * flashMask * 0.95); + + alpha *= edgeFade; + col = 1.0 - exp(-col * TONE_EXPOSURE); + + float outAlpha = alpha * Fade * FragColor.a; + if (outAlpha < 0.004) { + discard; + } + OutColor = vec4(col, outAlpha); +} diff --git a/src/main/resources/assets/evolution/shaders/core/fade_texture/data.json b/src/main/resources/assets/evolution/shaders/core/fade_texture/data.json new file mode 100644 index 0000000..209fa57 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/fade_texture/data.json @@ -0,0 +1,13 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/fade_texture/fragment", + "samplers": [ + { "name": "Sampler0" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "FadeHeight", "type": "float", "count": 1, "values": [ 0.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/fade_texture/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/fade_texture/fragment.fsh new file mode 100644 index 0000000..cfc5ca1 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/fade_texture/fragment.fsh @@ -0,0 +1,27 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +in vec2 TexCoord; + +uniform sampler2D Sampler0; +uniform float FadeHeight; + +out vec4 OutColor; + +void main() { + vec4 texColor = texture(Sampler0, TexCoord); + + float pixelY = TexCoord.y * Size.y; + + float topFade = smoothstep(0.0, FadeHeight, pixelY); + float bottomFade = 1.0 - smoothstep(Size.y - FadeHeight, Size.y, pixelY); + + float alphaFade = topFade * bottomFade; + + OutColor = texColor * FragColor * vec4(1.0, 1.0, 1.0, alphaFade); +} diff --git a/src/main/resources/assets/evolution/shaders/core/fog_custom/data.json b/src/main/resources/assets/evolution/shaders/core/fog_custom/data.json new file mode 100644 index 0000000..5420c09 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/fog_custom/data.json @@ -0,0 +1,18 @@ +{ + "vertex": "evolution:core/fog_custom/vertex", + "fragment": "evolution:core/fog_custom/fragment", + "samplers": [ + { "name": "Sampler0" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Resolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "HandColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "HandShaderMode", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.05, 64.0 ] }, + { "name": "Range", "type": "float", "count": 1, "values": [ 128.0 ] }, + { "name": "CameraPos", "type": "float", "count": 3, "values": [ 0.0, 0.0, 0.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/fog_custom/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/fog_custom/fragment.fsh new file mode 100644 index 0000000..ca24d0c --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/fog_custom/fragment.fsh @@ -0,0 +1,143 @@ +#version 150 + +#moj_import +#moj_import + +#moj_import +#moj_import + +uniform sampler2D Sampler0; + +in vec2 TexCoord; +in vec4 FragColor; + +out vec4 fragColor; + +vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } +vec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } +vec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); } +vec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; } + +float snoise(vec3 v) { + const vec2 C = vec2(1.0/6.0, 1.0/3.0) ; + const vec4 D = vec4(0.0, 0.5, 1.0, 2.0); + + vec3 i = floor(v + dot(v, C.yyy) ); + vec3 x0 = v - i + dot(i, C.xxx) ; + + vec3 g = step(x0.yzx, x0.xyz); + vec3 l = 1.0 - g; + vec3 i1 = min( g.xyz, l.zxy ); + vec3 i2 = max( g.xyz, l.zxy ); + + vec3 x1 = x0 - i1 + C.xxx; + vec3 x2 = x0 - i2 + C.yyy; + vec3 x3 = x0 - D.yyy; + + i = mod289(i); + vec4 p = permute( permute( permute( + i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + + i.x + vec4(0.0, i1.x, i2.x, 1.0 )); + + float n_ = 0.142857142857; + vec3 ns = n_ * D.wyz - D.xzx; + + vec4 j = p - 49.0 * floor(p * ns.z * ns.z); + + vec4 x_ = floor(j * ns.z); + vec4 y_ = floor(j - 7.0 * x_ ); + + vec4 x = x_ *ns.x + ns.yyyy; + vec4 y = y_ *ns.x + ns.yyyy; + vec4 h = 1.0 - abs(x) - abs(y); + + vec4 b0 = vec4( x.xy, y.xy ); + vec4 b1 = vec4( x.zw, y.zw ); + + vec4 s0 = floor(b0)*2.0 + 1.0; + vec4 s1 = floor(b1)*2.0 + 1.0; + vec4 sh = -step(h, vec4(0.0)); + + vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ; + vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ; + + vec3 p0 = vec3(a0.xy,h.x); + vec3 p1 = vec3(a0.zw,h.y); + vec3 p2 = vec3(a1.xy,h.z); + vec3 p3 = vec3(a1.zw,h.w); + + vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + + vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0); + m = m * m; + return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), + dot(p2,x2), dot(p3,x3) ) ); +} + +void main() { + vec2 uv = TexCoord; + uv.y = 1.0 - uv.y; + + float depthValue = texture(Sampler0, uv).r; + if (depthValue <= 0.00001 || depthValue >= 0.99999) { + discard; + } + + vec4 ndcPos = vec4(uv.x * 2.0 - 1.0, uv.y * 2.0 - 1.0, depthValue, 1.0); + vec4 viewPos = inverse(ProjMat) * ndcPos; + viewPos /= viewPos.w; + vec3 worldDir = (inverse(ModelViewMat) * vec4(viewPos.xyz, 0.0)).xyz; + vec3 worldPos = CameraPos + worldDir; + + float z = length(worldDir); + + float fogStart = Size.x; + float fogEnd = Size.y; + + float fogHeight = Radius.x; + float fogFalloff = Radius.y; + float noiseStrength = Radius.z; + + vec4 colorBottom = HandColor; + vec4 colorTop = OutlineColor; + + float distanceFog = 0.0; + if (z > fogStart) { + distanceFog = clamp((z - fogStart) / (fogEnd - fogStart), 0.0, 1.0); + } + + float worldY = worldPos.y; + + float heightFog = 0.0; + float depthInFog = fogHeight - worldY; + if (depthInFog > 0.0) { + heightFog = 1.0 - exp(-depthInFog * fogFalloff * 0.1); + } + heightFog = clamp(heightFog, 0.0, 1.0); + + float noiseVal = 0.0; + if (noiseStrength > 0.0) { + noiseVal = snoise(worldPos * 0.05 + vec3(Time * 0.5, 0.0, Time * 0.2)); + noiseVal = noiseVal * 0.5 + 0.5; + } + + float fogFactor = max(distanceFog, heightFog); + if (noiseStrength > 0.0) { + fogFactor *= mix(1.0, noiseVal, noiseStrength * fogFactor); + } + + fogFactor = clamp(fogFactor, 0.0, 1.0); + if (fogFactor <= 0.0) { + discard; + } + + float colorMix = clamp((worldY - (fogHeight - 20.0)) / 40.0, 0.0, 1.0); + vec4 finalColor = mix(colorBottom, colorTop, colorMix); + + fragColor = vec4(finalColor.rgb, fogFactor * finalColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/fog_custom/vertex.vsh b/src/main/resources/assets/evolution/shaders/core/fog_custom/vertex.vsh new file mode 100644 index 0000000..7d4e96b --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/fog_custom/vertex.vsh @@ -0,0 +1,14 @@ +#version 150 + +in vec3 Position; +in vec2 UV0; +in vec4 Color; + +out vec2 TexCoord; +out vec4 FragColor; + +void main() { + TexCoord = UV0; + FragColor = Color; + gl_Position = vec4(Position.xy, 0.0, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/gloss/data.json b/src/main/resources/assets/evolution/shaders/core/gloss/data.json new file mode 100644 index 0000000..499cac3 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/gloss/data.json @@ -0,0 +1,18 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/gloss/fragment", + "samplers": [], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "ColorModulator", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "Smoothness", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "Progress", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "StripeWidth", "type": "float", "count": 1, "values": [ 0.12 ] }, + { "name": "MaskTopY", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskBottomY", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskFadeHeight", "type": "float", "count": 1, "values": [ 0.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/gloss/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/gloss/fragment.fsh new file mode 100644 index 0000000..e037c5b --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/gloss/fragment.fsh @@ -0,0 +1,39 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; + +out vec4 OutColor; + +void main() { + vec2 center = Size * 0.5; + float distance = roundedBoxSDF(center - (FragCoord * Size), center, Radius); + float shapeAlpha = 1.0 - smoothstep(-Smoothness.x, 0.0, distance); + if (shapeAlpha <= 0.0) { + discard; + } + + vec2 glossDir = vec2(GlossDirX, GlossDirY); + float glossExtent = max(abs(glossDir.x) * Size.x + abs(glossDir.y) * Size.y, 0.0001); + float diag = dot((FragCoord - 0.5) * Size, glossDir) / glossExtent + 0.5; + float sigma = max(StripeWidth, 0.0001); + float d = (diag - Progress) / sigma; + float band = exp(-d * d); + + float alpha = FragColor.a * shapeAlpha * band; + if (alpha < 0.003) { + discard; + } + + alpha = applyAlphaMask(alpha); + if (alpha <= 0.001) { + discard; + } + + OutColor = vec4(FragColor.rgb, alpha) * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/godrays/composite.fsh b/src/main/resources/assets/evolution/shaders/core/godrays/composite.fsh new file mode 100644 index 0000000..c246443 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/godrays/composite.fsh @@ -0,0 +1,18 @@ +#version 150 + +uniform sampler2D RayTex; + +layout(std140) uniform RayParams { + vec4 sunParams; + vec4 rayControls; + vec4 tintParams; + vec4 screenParams; +}; + +in vec2 texCoord; +out vec4 fragColor; + +void main() { + vec3 rays = texture(RayTex, texCoord).rgb; + fragColor = vec4(rays * tintParams.rgb * rayControls.z * tintParams.w, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/godrays/fullscreen.vsh b/src/main/resources/assets/evolution/shaders/core/godrays/fullscreen.vsh new file mode 100644 index 0000000..f3b5d1e --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/godrays/fullscreen.vsh @@ -0,0 +1,9 @@ +#version 150 + +out vec2 texCoord; + +void main() { + vec2 uv = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2); + texCoord = uv; + gl_Position = vec4(uv * 2.0 - 1.0, 0.0, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/godrays/scatter.fsh b/src/main/resources/assets/evolution/shaders/core/godrays/scatter.fsh new file mode 100644 index 0000000..8198ce1 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/godrays/scatter.fsh @@ -0,0 +1,67 @@ +#version 150 + +uniform sampler2D SourceTex; +uniform sampler2D DepthTex; + +layout(std140) uniform RayParams { + vec4 sunParams; + vec4 rayControls; + vec4 tintParams; + vec4 screenParams; +}; + +in vec2 texCoord; +out vec4 fragColor; + +const float SKY_EPSILON_HIGH = 0.99999; +const float SKY_EPSILON_LOW = 0.00001; +const float MIN_STEP = 1.0e-5; +const float IGN_SCALE = 52.9829189; +const vec2 IGN_BASIS = vec2(0.06711056, 0.00583715); +const float SUN_RADIUS = 0.30; +const vec3 LUMA = vec3(0.2126, 0.7152, 0.0722); + +float interleavedGradient(vec2 p) { + return fract(IGN_SCALE * fract(dot(p, IGN_BASIS))); +} + +float skyMask(vec2 uv) { + float depth = texture(DepthTex, uv).r; + return step(depth, SKY_EPSILON_LOW) + step(SKY_EPSILON_HIGH, depth); +} + +float sunProximity(vec2 uv, float aspect) { + vec2 offset = (uv - sunParams.xy) * vec2(aspect, 1.0); + return 1.0 - smoothstep(0.0, SUN_RADIUS, length(offset)); +} + +void main() { + vec2 sunUv = sunParams.xy; + float reach = sunParams.z; + float decay = rayControls.w; + int samples = int(rayControls.x); + float weight = rayControls.y; + float aspect = screenParams.z / screenParams.w; + + vec2 delta = (texCoord - sunUv) * (reach / float(samples)); + if (dot(delta, delta) < MIN_STEP * MIN_STEP) { + fragColor = vec4(0.0, 0.0, 0.0, 1.0); + return; + } + + vec2 uv = texCoord - delta * interleavedGradient(gl_FragCoord.xy); + float illumination = 1.0; + float accum = 0.0; + + for (int i = 0; i < samples; i++) { + uv -= delta; + vec2 clamped = clamp(uv, vec2(0.0), vec2(1.0)); + float emission = dot(texture(SourceTex, clamped).rgb, LUMA) + * skyMask(clamped) * sunProximity(clamped, aspect); + accum += emission * illumination * weight; + illumination *= decay; + } + + accum /= float(samples); + fragColor = vec4(vec3(accum), 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/gradient_rectangle/data.json b/src/main/resources/assets/evolution/shaders/core/gradient_rectangle/data.json new file mode 100644 index 0000000..2640c15 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/gradient_rectangle/data.json @@ -0,0 +1,20 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/gradient_rectangle/fragment", + "samplers": [], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "ColorModulator", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "Smoothness", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "TopLeftColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "BottomLeftColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "TopRightColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "BottomRightColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "MaskTopY", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskBottomY", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskFadeHeight", "type": "float", "count": 1, "values": [ 0.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/gradient_rectangle/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/gradient_rectangle/fragment.fsh new file mode 100644 index 0000000..7b3c0e8 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/gradient_rectangle/fragment.fsh @@ -0,0 +1,40 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; + +out vec4 OutColor; + +vec4 bilinearInterpolation(vec2 uv) { + vec4 topColor = mix(TopLeftColor, TopRightColor, uv.x); + vec4 bottomColor = mix(BottomLeftColor, BottomRightColor, uv.x); + return mix(topColor, bottomColor, uv.y); +} + +void main() { + vec2 center = Size * 0.5; + vec2 uv = FragCoord; + + vec4 gradientColor = bilinearInterpolation(uv); + + float distance = roundedBoxSDF(center - (FragCoord * Size), center, Radius); + float alpha = 1.0 - smoothstep(-Smoothness.x, 0.0, distance); + + vec4 finalColor = vec4(gradientColor.rgb, gradientColor.a * alpha); + + if (finalColor.a == 0.0) { + discard; + } + + finalColor.a = applyAlphaMask(finalColor.a); + if (finalColor.a <= 0.001) { + discard; + } + + OutColor = finalColor * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/gui_shape/data.json b/src/main/resources/assets/evolution/shaders/core/gui_shape/data.json new file mode 100644 index 0000000..b1dbdaf --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/gui_shape/data.json @@ -0,0 +1,10 @@ +{ + "vertex": "evolution:core/gui_shape/vertex", + "fragment": "evolution:core/gui_shape/fragment", + "samplers": [], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ColorModulator", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/gui_shape/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/gui_shape/fragment.fsh new file mode 100644 index 0000000..95544c8 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/gui_shape/fragment.fsh @@ -0,0 +1,311 @@ +#version 150 + +#moj_import +#moj_import + +// SHAPE_SLOT_COUNT must equal GuiBatch.SHAPES_PER_CHUNK * SHAPE_STRIDE: the batch binds exactly +// one chunk per draw, and the block size has to match the range it binds. +const int SHAPE_SLOT_COUNT = 990; +const int SHAPE_STRIDE = 11; + +const float SHAPE_RECTANGLE = 0.0; +const float SHAPE_SQUIRCLE = 1.0; +const float SHAPE_BORDER = 2.0; +const float SHAPE_CORNER = 3.0; +const float SHAPE_LOADING = 4.0; +const float SHAPE_GLOSS = 5.0; +const float SHAPE_CIRCLE = 6.0; +const float SHAPE_NEON = 8.0; + +const float CIRCLE_PI = 3.14159265359; +const float CIRCLE_TWO_PI = 6.28318530718; +const float CIRCLE_MARGIN = 2.0; + +const float NEON_MODE_SCALE = 16.0; +const float NEON_MODE_HALO = 1.0; +const float NEON_MODE_GLOW = 2.0; +const float NEON_MODE_INNER = 3.0; +const float NEON_MIN_GLOW_RADIUS = 0.001; +const float NEON_MIN_RING_WIDTH = 0.05; +const float NEON_MIN_SIZE = 0.001; +const float NEON_MIN_EXPONENT = 0.05; +const float NEON_MIN_AA = 0.5; +const float NEON_MIN_ALPHA = 0.002; +const float NEON_GLOW_PAD_FACTOR = 3.0; +const float SWEEP_MIN_LENGTH = 0.001; +const float SWEEP_MIN_HALF_SIZE = 0.001; +const float SWEEP_FALLOFF = 1.6; +const float INV_TWO_PI = 0.15915494; + +layout(std140) uniform EvoShapes { + vec4 ShapeData[SHAPE_SLOT_COUNT]; +}; + +in vec2 FragCoord; +in vec4 FragColor; +flat in int ShapeIndex; + +out vec4 OutColor; + +float squircleSDF(vec2 p, vec2 b, vec4 r, float smoothness) { + r = min(r, vec4(min(b.x, b.y))); + r.xy = (p.x > 0.0) ? r.xy : r.zw; + r.x = (p.y > 0.0) ? r.x : r.y; + vec2 q = abs(p) - b + r.x; + vec2 q_clamped = max(q, 0.0); + + float len = pow(pow(q_clamped.x, smoothness) + pow(q_clamped.y, smoothness), 1.0 / smoothness); + + return min(max(q.x, q.y), 0.0) + len - r.x; +} + +void main() { + int base = ShapeIndex * SHAPE_STRIDE; + + vec4 sizeSmooth = ShapeData[base]; + vec4 Radius = ShapeData[base + 1]; + vec4 params = ShapeData[base + 2]; + vec4 params2 = ShapeData[base + 3]; + vec4 maskBounds = ShapeData[base + 4]; + vec4 maskFade = ShapeData[base + 5]; + vec4 glossData = ShapeData[base + 10]; + + vec2 Size = sizeSmooth.xy; + vec2 Smoothness = sizeSmooth.zw; + float CornerSmoothness = params.x; + float Thickness = params.y; + float CornerIndex = params.z; + float Progress = params.w; + float Fade = params2.x; + float StripeWidth = params2.y; + float shapeType = params2.z; + float ShapeExtra = params2.w; + vec2 GlossDir = glossData.xy; + + vec2 center = Size * 0.5; + vec4 finalColor; + + if (shapeType == SHAPE_RECTANGLE) { + float distance = roundedBoxSDF(center - (FragCoord * Size), center, Radius); + float alpha = 1.0 - smoothstep(-Smoothness.x, 0.0, distance); + finalColor = vec4(FragColor.rgb, FragColor.a * alpha); + if (finalColor.a == 0.0) { + discard; + } + } else if (shapeType == SHAPE_SQUIRCLE) { + float distance = squircleSDF(center - (FragCoord * Size), center, Radius, CornerSmoothness); + float alpha = 1.0 - smoothstep(-Smoothness.x, 0.0, distance); + finalColor = vec4(FragColor.rgb, FragColor.a * alpha); + if (finalColor.a == 0.0) { + discard; + } + } else if (shapeType == SHAPE_BORDER) { + float distance = roundedBoxSDF(center - (FragCoord * Size), center, Radius); + float alpha = smoothstep(-Thickness - Smoothness.x - Smoothness.y, + -Thickness - Smoothness.y, distance); + alpha *= 1.0 - smoothstep(-Smoothness.y, 0.0, distance); + finalColor = vec4(FragColor.rgb, FragColor.a * alpha); + if (finalColor.a == 0.0) { + discard; + } + } else if (shapeType == SHAPE_CORNER) { + vec2 pixel = FragCoord.xy * Size; + if (CornerIndex == 0.0) { + if (pixel.x > center.x || pixel.y > center.y) discard; + } else if (CornerIndex == 1.0) { + if (pixel.x < center.x || pixel.y > center.y) discard; + } else if (CornerIndex == 2.0) { + if (pixel.x > center.x || pixel.y < center.y) discard; + } else if (CornerIndex == 3.0) { + if (pixel.x < center.x || pixel.y < center.y) discard; + } + float distance = roundedBoxSDF(center - (FragCoord * Size), center, Radius); + float alpha = smoothstep(-Thickness - Smoothness.x - Smoothness.y, + -Thickness - Smoothness.y, distance); + alpha *= 1.0 - smoothstep(-Smoothness.y, 0.0, distance); + finalColor = vec4(FragColor.rgb, FragColor.a * alpha); + if (finalColor.a == 0.0) { + discard; + } + } else if (shapeType == SHAPE_LOADING) { + float distance = roundedBoxSDF(center - (FragCoord * Size), center, Radius); + float alpha = 1.0 - smoothstep(-Smoothness.x, 0.0, distance); + + float diag = (FragCoord.x + FragCoord.y) * 0.5; + float stripeWidth = StripeWidth; + float fade = Fade; + + float stripeMask = smoothstep(Progress - stripeWidth * 0.5 - fade, Progress - stripeWidth * 0.5, diag) + * (1.0 - smoothstep(Progress + stripeWidth * 0.5, Progress + stripeWidth * 0.5 + fade, diag)); + + vec4 stripeColor = FragColor * ColorModulator; + + finalColor = vec4(stripeColor.rgb, stripeColor.a * alpha * stripeMask); + + if (finalColor.a < 0.01) discard; + finalColor.a = applyEdgeMask(finalColor.a, gl_FragCoord.xy, maskBounds, maskFade); + if (finalColor.a <= 0.001) { + discard; + } + OutColor = finalColor; + return; + } else if (shapeType == SHAPE_GLOSS) { + float distance = roundedBoxSDF(center - (FragCoord * Size), center, Radius); + float shapeAlpha = 1.0 - smoothstep(-Smoothness.x, 0.0, distance); + if (shapeAlpha <= 0.0) { + discard; + } + + vec2 glossDir = GlossDir; + float glossExtent = max(abs(glossDir.x) * Size.x + abs(glossDir.y) * Size.y, 0.0001); + float diag = dot((FragCoord - 0.5) * Size, glossDir) / glossExtent + 0.5; + float sigma = max(StripeWidth, 0.0001); + float d = (diag - Progress) / sigma; + float band = exp(-d * d); + + float alpha = FragColor.a * shapeAlpha * band; + if (alpha < 0.003) { + discard; + } + + alpha = applyEdgeMask(alpha, gl_FragCoord.xy, maskBounds, maskFade); + if (alpha <= 0.001) { + discard; + } + + OutColor = vec4(FragColor.rgb, alpha) * ColorModulator; + return; + } else if (shapeType == SHAPE_CIRCLE) { + vec2 p = (FragCoord - 0.5) * Size; + float outerR = Size.x * 0.5 - CIRCLE_MARGIN; + float halfT = Thickness * 0.5; + float midR = outerR - halfT; + float len = length(p); + + float ang = mod(atan(p.y, p.x) + CIRCLE_PI * 0.5, CIRCLE_TWO_PI); + float sweep = clamp(Progress, 0.0, 1.0) * CIRCLE_TWO_PI; + + float d; + if (sweep >= CIRCLE_TWO_PI - 0.0001 || ang <= sweep) { + d = abs(len - midR); + } else { + vec2 startC = vec2(0.0, -midR); + float endA = -CIRCLE_PI * 0.5 + sweep; + vec2 endC = vec2(cos(endA), sin(endA)) * midR; + d = min(length(p - startC), length(p - endC)); + } + + float aa = max(fwidth(d), 0.75); + float alpha = 1.0 - smoothstep(halfT - aa, halfT, d); + + finalColor = vec4(FragColor.rgb, FragColor.a * alpha); + if (finalColor.a < 0.003) { + discard; + } + } else if (shapeType == SHAPE_NEON) { + vec2 innerSize = max(Size, vec2(NEON_MIN_SIZE)); + float glowRadius = max(Fade, NEON_MIN_GLOW_RADIUS); + float ringWidth = max(Thickness, NEON_MIN_RING_WIDTH); + float glowIntensity = max(StripeWidth, 0.0); + + float mode = floor(ShapeExtra / NEON_MODE_SCALE); + float glowExponent = max(ShapeExtra - mode * NEON_MODE_SCALE, NEON_MIN_EXPONENT); + + float padScale = (mode == NEON_MODE_INNER) ? 0.0 : NEON_GLOW_PAD_FACTOR; + vec2 pad = vec2(glowRadius * padScale); + vec2 outerSize = innerSize + pad * 2.0; + vec2 innerPixel = FragCoord * outerSize - pad; + vec2 halfInner = innerSize * 0.5; + float dist = roundedBoxSDF(halfInner - innerPixel, halfInner, Radius); + + float aa = max(fwidth(dist), NEON_MIN_AA); + float outside = smoothstep(-aa, aa, dist); + + float glow; + float core; + if (mode == NEON_MODE_INNER) { + vec2 halfInner = innerSize * 0.5; + vec2 centred = innerPixel - halfInner; + float leftDepth = max(halfInner.x + centred.x, 0.0) / glowRadius; + float rightDepth = max(halfInner.x - centred.x, 0.0) / glowRadius; + float topDepth = max(halfInner.y + centred.y, 0.0) / glowRadius; + float bottomDepth = max(halfInner.y - centred.y, 0.0) / glowRadius; + float rim = exp(-leftDepth) + exp(-rightDepth) + exp(-topDepth) + exp(-bottomDepth); + rim = min(rim, 1.0); + glow = pow(rim, glowExponent) * glowIntensity * (1.0 - outside); + core = 0.0; + } else { + float falloff = exp(-max(dist, 0.0) / glowRadius); + float window = exp(-NEON_GLOW_PAD_FACTOR); + float shaped = max(falloff - window, 0.0) / (1.0 - window); + glow = pow(shaped, glowExponent) * glowIntensity * outside; + if (mode == NEON_MODE_GLOW) { + core = 0.0; + } else if (mode == NEON_MODE_HALO) { + core = 1.0 - outside; + } else { + core = (1.0 - outside) * smoothstep(-ringWidth - aa, -ringWidth + aa, dist); + } + } + + vec2 uv = clamp(innerPixel / innerSize, 0.0, 1.0); + vec4 topLeftColor = ShapeData[base + 6]; + vec4 bottomLeftColor = ShapeData[base + 7]; + vec4 topRightColor = ShapeData[base + 8]; + vec4 bottomRightColor = ShapeData[base + 9]; + vec4 topColor = mix(topLeftColor, topRightColor, uv.x); + vec4 bottomColor = mix(bottomLeftColor, bottomRightColor, uv.x); + vec4 rampColor = mix(topColor, bottomColor, uv.y); + + float sweepLength = CornerIndex; + float sweepIntensity = CornerSmoothness; + float edgeBoost = 0.0; + if (sweepLength > SWEEP_MIN_LENGTH && sweepIntensity > 0.0) { + vec2 sweepCentred = innerPixel - innerSize * 0.5; + vec2 sweepNormalised = sweepCentred / max(innerSize * 0.5, vec2(SWEEP_MIN_HALF_SIZE)); + float around = fract(atan(sweepNormalised.y, sweepNormalised.x) * INV_TWO_PI + 0.5); + float behindHead = fract(around - Progress); + float comet = 1.0 - smoothstep(0.0, sweepLength, behindHead); + edgeBoost = pow(comet, SWEEP_FALLOFF) * sweepIntensity; + } + + float alpha = rampColor.a * max(core, glow) * (1.0 + edgeBoost); + if (!(alpha > NEON_MIN_ALPHA)) { + discard; + } + + alpha = applyEdgeMask(alpha, gl_FragCoord.xy, maskBounds, maskFade); + if (!(alpha > NEON_MIN_ALPHA)) { + discard; + } + + OutColor = vec4(rampColor.rgb, alpha) * ColorModulator; + return; + } else { + vec4 topLeftColor = ShapeData[base + 6]; + vec4 bottomLeftColor = ShapeData[base + 7]; + vec4 topRightColor = ShapeData[base + 8]; + vec4 bottomRightColor = ShapeData[base + 9]; + + vec2 uv = FragCoord; + vec4 topColor = mix(topLeftColor, topRightColor, uv.x); + vec4 bottomColor = mix(bottomLeftColor, bottomRightColor, uv.x); + vec4 gradientColor = mix(topColor, bottomColor, uv.y); + + float distance = roundedBoxSDF(center - (FragCoord * Size), center, Radius); + float alpha = 1.0 - smoothstep(-Smoothness.x, 0.0, distance); + + finalColor = vec4(gradientColor.rgb, gradientColor.a * alpha); + + if (finalColor.a == 0.0) { + discard; + } + } + + finalColor.a = applyEdgeMask(finalColor.a, gl_FragCoord.xy, maskBounds, maskFade); + if (finalColor.a <= 0.001) { + discard; + } + + OutColor = finalColor * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/gui_shape/vertex.vsh b/src/main/resources/assets/evolution/shaders/core/gui_shape/vertex.vsh new file mode 100644 index 0000000..1ca680a --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/gui_shape/vertex.vsh @@ -0,0 +1,21 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec3 Position; +in vec2 UV0; +in vec4 Color; + +out vec2 FragCoord; +out vec4 FragColor; +flat out int ShapeIndex; + +void main() { + FragCoord = rvertexcoord(gl_VertexID); + FragColor = Color; + ShapeIndex = int(UV0.x); + + gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/hand/data.json b/src/main/resources/assets/evolution/shaders/core/hand/data.json new file mode 100644 index 0000000..8019630 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hand/data.json @@ -0,0 +1,17 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/hand/fragment", + "samplers": [ + { "name": "Sampler0" }, + { "name": "Sampler1" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Resolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "HandColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "HandShaderMode", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "HandShaderOnly", "type": "float", "count": 1, "values": [ 0.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/hand/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/hand/fragment.fsh new file mode 100644 index 0000000..1964ced --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hand/fragment.fsh @@ -0,0 +1,1432 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec2 TexCoord; +in vec4 FragColor; + +uniform sampler2D Sampler0; +uniform sampler2D Sampler1; + +out vec4 OutColor; + +vec3 hsv2rgb(vec3 c) { + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + + +#define COSMOS_ITERATIONS 14 +#define COSMOS_FORMUPARAM2 0.79 +#define COSMOS_VOLSTEPS 5 +#define COSMOS_STEPSIZE 0.390 +#define COSMOS_ZOOM 0.900 +#define COSMOS_TILE 0.850 +#define COSMOS_BRIGHTNESS 0.003 +#define COSMOS_DARKMATTER 0.400 +#define COSMOS_DISTFADING 0.560 +#define COSMOS_SATURATION 0.800 +#define COSMOS_TRANSVERSE_SPEED 1.8 +#define COSMOS_CLOUD 0.11 + +float cosmos_triangle(float x, float a) { + return 2.0 * abs(2.0 * ((x/a) - floor((x/a) + 0.5))) - 1.0; +} + +float cosmos_field(in vec3 p, float t) { + float strength = 7. + .03 * log(1.e-6 + fract(sin(t) * 4373.11)); + float accum = 0.; + float prev = 0.; + float tw = 0.; + + float mag = dot(p, p); + p = abs(p) / mag + vec3(-.5, -.8 + 0.1*sin(t*0.7 + 2.0), -1.1+0.3*cos(t*0.3)); + float w = exp(0.); + accum += w * exp(-strength * pow(abs(mag - prev), 2.3)); + tw += w; + prev = mag; + + return max(0., 5. * accum / tw - .7); +} + +vec3 cosmos_effect(vec2 uv, float t) { + vec2 uvs = uv * 2.0 - 1.0; + + float time2 = t; + float speed = .01 * cos(time2*0.02 + 3.1415926/4.0); + float formuparam = COSMOS_FORMUPARAM2; + + float a_xz = 0.9; + float a_yz = -.6; + float a_xy = 0.9 + t*0.08; + + mat2 rot_xz = mat2(cos(a_xz),sin(a_xz),-sin(a_xz),cos(a_xz)); + mat2 rot_yz = mat2(cos(a_yz),sin(a_yz),-sin(a_yz),cos(a_yz)); + mat2 rot_xy = mat2(cos(a_xy),sin(a_xy),-sin(a_xy),cos(a_xy)); + + vec3 dir = vec3(uvs*COSMOS_ZOOM, 1.); + vec3 from = vec3(0.0, 0.0, 0.0); + + vec3 forward = vec3(0.,0.,1.); + from.x += COSMOS_TRANSVERSE_SPEED * cos(0.01*t) + 0.001*t; + from.y += COSMOS_TRANSVERSE_SPEED * sin(0.01*t) + 0.001*t; + from.z += 0.003*t; + + dir.xy *= rot_xy; + forward.xy *= rot_xy; + dir.xz *= rot_xz; + forward.xz *= rot_xz; + dir.yz *= rot_yz; + forward.yz *= rot_yz; + + from.xy *= -rot_xy; + from.xz *= rot_xz; + from.yz *= rot_yz; + + float zooom = (time2-3311.)*speed; + from += forward * zooom; + float sampleShift = mod(zooom, COSMOS_STEPSIZE); + float zoffset = -sampleShift; + sampleShift /= COSMOS_STEPSIZE; + + float s = 0.24; + float s3 = s + COSMOS_STEPSIZE/2.0; + vec3 v = vec3(0.); + float t3 = 0.0; + + vec3 backCol2 = vec3(0.); + for (int r = 0; r < COSMOS_VOLSTEPS; r++) { + vec3 p2 = from + (s+zoffset)*dir; + vec3 p3 = from + (s3+zoffset)*dir; + + p2 = abs(vec3(COSMOS_TILE) - mod(p2, vec3(COSMOS_TILE*2.))); + p3 = abs(vec3(COSMOS_TILE) - mod(p3, vec3(COSMOS_TILE*2.))); + t3 = cosmos_field(p3, t); + + float pa = 0., a = 0.; + for (int i = 0; i < COSMOS_ITERATIONS; i++) { + p2 = abs(p2)/dot(p2,p2) - formuparam; + float D = abs(length(p2)-pa); + a += i > 7 ? min(12., D) : D; + pa = length(p2); + } + + a *= a*a; + float s1 = s + zoffset; + float fade = pow(COSMOS_DISTFADING, max(0., float(r)-sampleShift)); + + v += fade; + + if (r == 0) + fade *= (1. - sampleShift); + if (r == COSMOS_VOLSTEPS-1) + fade *= sampleShift; + + v += vec3(s1, s1*s1, s1*s1*s1*s1) * a * COSMOS_BRIGHTNESS * fade; + backCol2 += mix(.11, 1., 1.0) * vec3(1.8 * t3 * t3 * t3, 1.4 * t3 * t3, t3) * fade; + + s += COSMOS_STEPSIZE; + s3 += COSMOS_STEPSIZE; + } + + v = mix(vec3(length(v)), v, COSMOS_SATURATION); + + vec4 forCol2 = vec4(v*.01, 1.); + backCol2 *= COSMOS_CLOUD; + backCol2.b *= 1.8; + backCol2.r *= 0.05; + + backCol2.b = 0.5*mix(backCol2.g, backCol2.b, 0.8); + backCol2.g = 0.0; + backCol2.bg = mix(backCol2.gb, backCol2.bg, 0.5*(cos(t*0.01) + 1.0)); + + vec4 result = forCol2 + vec4(backCol2, 1.0); + result.rgb = mix(result.rgb, result.rgb * HandColor.rgb * 2.0, 0.5); + + return result.rgb; +} + + +#define NEBULA_NUM_OCTAVES 5 + +float nebula_random(vec2 pos) { + return fract(sin(dot(pos.xy, vec2(13.9898, 78.233))) * 43758.5453123); +} + +float nebula_noise(vec2 pos) { + vec2 i = floor(pos); + vec2 f = fract(pos); + float a = nebula_random(i + vec2(0.0, 0.0)); + float b = nebula_random(i + vec2(1.0, 0.0)); + float c = nebula_random(i + vec2(0.0, 1.0)); + float d = nebula_random(i + vec2(1.0, 1.0)); + vec2 u = f * f * (3.0 - 2.0 * f); + return mix(a, b, u.x) + (c - a) * u.y * (1.0 - u.x) + (d - b) * u.x * u.y; +} + +float nebula_fbm(vec2 pos, float t) { + float v = 0.0; + float a = 0.5; + vec2 shift = vec2(100.0); + mat2 rot = mat2(cos(0.5), sin(0.5), -sin(0.5), cos(0.5)); + for (int i = 0; i < NEBULA_NUM_OCTAVES; i++) { + float dir = mod(float(i), 2.0) > 0.5 ? 1.0 : -1.0; + v += a * nebula_noise(pos + dir * t * 0.3); + pos = rot * pos * 2.0 + shift; + a *= 0.5; + } + return v; +} + +vec3 nebula_effect(vec2 uv, float t) { + vec2 p = (uv * 2.0 - 1.0) * 3.0; + + vec2 q = vec2(0.0); + q.x = nebula_fbm(p + vec2(0.0, 0.0), t * 0.8); + q.y = nebula_fbm(p + vec2(1.0, 1.0), t * 0.6); + + vec2 r = vec2(0.0); + r.x = nebula_fbm(p + 1.0 * q + vec2(1.7, 1.2), t * 0.7); + r.y = nebula_fbm(p + 1.0 * q + vec2(8.3, 2.8), t * 0.9); + + float f = nebula_fbm(p + r, t); + + vec3 color1 = HandColor.rgb * 1.4; + vec3 color2 = HandColor.rgb * 0.5; + vec3 color3 = vec3(HandColor.r * 0.4, HandColor.g * 0.3, HandColor.b * 1.4); + + vec3 color = mix(color1, color2, clamp((f * f) * 4.0, 0.0, 1.0)); + color = mix(color, color1, clamp(length(q), 0.0, 1.0)); + color = mix(color, color3, clamp(length(r.x), 0.0, 1.0)); + + color = (f * f * f + 0.6 * f * f + 0.5 * f) * color; + color = clamp(color * 1.8, 0.0, 1.0); + + return color; +} + + +const vec3 cobweb_eps = vec3(0.001, 0., 0.); +const int cobweb_iter = 64; +const float cobweb_sq = 0.70710678; + +float cobweb_c(vec3 p) { + vec3 q = abs(mod(p + vec3(cos(p.z*0.5), cos(p.x*0.5), cos(p.y*0.5)), 2.0) - 1.0); + float a = q.x + q.y + q.z - min(min(q.x, q.y), q.z) - max(max(q.x, q.y), q.z); + q = vec3(p.x+p.y, p.y+p.z, p.z+p.x) * cobweb_sq; + q = abs(mod(q, 2.0) - 1.0); + float b = q.x + q.y + q.z - min(min(q.x, q.y), q.z) - max(max(q.x, q.y), q.z); + return min(a, b); +} + +vec3 cobweb_n(vec3 p) { + float o = cobweb_c(p); + return normalize(o - vec3(cobweb_c(p - cobweb_eps), cobweb_c(p - cobweb_eps.zxy), cobweb_c(p - cobweb_eps.yzx))); +} + +vec3 cobweb_effect(vec2 uv, float t) { + float aspect = Resolution.x / Resolution.y; + vec2 p = uv * 2. - 1.; + vec2 m = vec2(sin(t * 0.3) * 0.3, cos(t * 0.2) * 0.3); + p.x *= aspect; + m.x *= aspect; + + vec3 o = vec3(0., 0., t * 0.5); + vec3 s = vec3(m, 0.); + vec3 b = vec3(0., 0., 0.); + vec3 d = vec3(p, 1.) / 32.; + vec3 tv = vec3(.5); + vec3 a; + + for (int i = 0; i < cobweb_iter; ++i) { + float h = cobweb_c(b + s + o); + b += h * 10.0 * d; + tv += h; + } + tv /= float(cobweb_iter); + a = cobweb_n(b + s + o); + float x = dot(a, tv); + + vec3 diffuse = HandColor.rgb; + tv = (tv + pow(x, 4.)) * (1. - tv * .01) * diffuse; + tv *= b.z * 0.125; + + vec2 vig = p * 0.43; + vig.y *= aspect; + float vig_amount = 1.0 - length(vig) * 0.5; + + vec3 color = tv * 3.0 * vig_amount; + return color; +} + + +float plasma_wave(vec2 uv, float t) { + float v = 0.0; + + v += sin(uv.x * 10.0 + t); + v += sin((uv.y * 10.0 + t) * 0.5); + v += sin((uv.x * 10.0 + uv.y * 10.0 + t) * 0.5); + + vec2 c = uv * 10.0 - vec2(5.0); + v += sin(sqrt(c.x * c.x + c.y * c.y + 1.0) + t); + + c = uv * 10.0 - vec2(5.0 + sin(t * 0.5) * 3.0, 5.0 + cos(t * 0.7) * 3.0); + v += sin(sqrt(c.x * c.x + c.y * c.y + 1.0) + t * 1.5); + + return v * 0.2; +} + +vec3 plasma_effect(vec2 uv, float t) { + float pt = t * 0.8; + float p = plasma_wave(uv, pt); + + vec3 base = HandColor.rgb; + + float baseHue = 0.0; + float baseSat = 0.0; + float baseVal = max(max(base.r, base.g), base.b); + + if (baseVal > 0.0) { + float minVal = min(min(base.r, base.g), base.b); + baseSat = (baseVal - minVal) / baseVal; + + if (base.r >= base.g && base.r >= base.b) { + baseHue = (base.g - base.b) / (baseVal - minVal + 0.001); + } else if (base.g >= base.r && base.g >= base.b) { + baseHue = 2.0 + (base.b - base.r) / (baseVal - minVal + 0.001); + } else { + baseHue = 4.0 + (base.r - base.g) / (baseVal - minVal + 0.001); + } + baseHue /= 6.0; + if (baseHue < 0.0) baseHue += 1.0; + } + + float flowHue = baseHue + p * 0.15 + sin(t * 0.3) * 0.05; + float flowSat = 0.7 + sin(p * 3.14159) * 0.3; + float flowVal = 0.8 + p * 0.4; + + vec3 color = hsv2rgb(vec3(flowHue, flowSat, flowVal)); + + float glow = pow(abs(sin(p * 3.14159 * 2.0)), 2.0) * 0.5; + color += HandColor.rgb * glow; + + float pulse = 0.8 + sin(t * 2.0 + p * 5.0) * 0.2; + color *= pulse; + + color = clamp(color, 0.0, 1.0); + return color; +} + + +#define GLASS_SPREAD 22.0 +#define GLASS_REFR_BASE 0.006 +#define GLASS_REFR_EDGE 0.085 +#define GLASS_CHROMATIC 1.22 +#define GLASS_FROST 8.0 + +float glass_height(vec2 uv, vec2 texel) { + float h = texture(Sampler0, uv).a; + for (int i = 0; i < 8; i++) { + float ang = 0.785398 * float(i); + vec2 offs = vec2(cos(ang), sin(ang)) * texel * GLASS_SPREAD; + h += texture(Sampler0, uv + offs).a; + h += texture(Sampler0, uv + offs * 0.5).a; + } + return h / 17.0; +} + +vec4 liquid_glass_effect(vec2 uv, float t) { + vec2 texel = 1.0 / vec2(textureSize(Sampler0, 0)); + + float hC = glass_height(uv, texel); + float mask = smoothstep(0.3, 0.52, hC); + if (mask <= 0.004) { + return vec4(0.0); + } + + vec2 gs = texel * 4.0; + float hx = glass_height(uv + vec2(gs.x, 0.0), texel) - glass_height(uv - vec2(gs.x, 0.0), texel); + float hy = glass_height(uv + vec2(0.0, gs.y), texel) - glass_height(uv - vec2(0.0, gs.y), texel); + vec3 normal = normalize(vec3(-hx, -hy, gs.x * 12.0)); + + float rim = 1.0 - smoothstep(0.4, 0.95, hC); + vec2 refr = normal.xy * (GLASS_REFR_BASE + GLASS_REFR_EDGE * rim); + + vec2 ripple = vec2( + sin(uv.y * 90.0 + t * 2.2) + 0.6 * sin(uv.x * 55.0 - t * 1.7), + cos(uv.x * 85.0 + t * 2.0) + 0.6 * cos(uv.y * 50.0 - t * 1.4) + ) * 0.0018; + refr += ripple * mask; + + vec3 scene; + scene.r = texture(Sampler1, uv + refr).r; + scene.g = texture(Sampler1, uv + refr * GLASS_CHROMATIC).g; + scene.b = texture(Sampler1, uv + refr * GLASS_CHROMATIC * GLASS_CHROMATIC).b; + + vec3 frost = vec3(0.0); + for (int i = 0; i < 8; i++) { + float ang = 0.785398 * float(i) + 0.39; + vec2 dir = vec2(cos(ang), sin(ang)) * texel * GLASS_FROST; + frost += texture(Sampler1, uv + refr + dir).rgb; + frost += texture(Sampler1, uv + refr + dir * 0.45).rgb; + } + scene = mix(scene, frost * 0.0625, 0.6); + + float luma = dot(scene, vec3(0.299, 0.587, 0.114)); + scene = mix(vec3(luma), scene, 1.25); + scene = scene * 1.08 + 0.02; + + vec3 tint = HandColor.rgb; + scene = mix(scene, scene * (0.75 + 0.5 * tint), 0.15); + + vec3 lightDir = normalize(vec3(0.4 * sin(t * 0.5), 0.7 + 0.1 * cos(t * 0.35), 0.55)); + float spec = pow(max(dot(reflect(-lightDir, normal), vec3(0.0, 0.0, 1.0)), 0.0), 60.0); + + float edgeLine = smoothstep(0.36, 0.46, hC) * (1.0 - smoothstep(0.5, 0.68, hC)); + + scene += spec * 0.7; + scene += edgeLine * 0.22 * mix(vec3(1.0), tint, 0.4); + scene += pow(rim, 3.0) * 0.1; + + float alpha = mask * HandColor.a; + return vec4(clamp(scene, 0.0, 1.0), alpha); +} + + +float matrix_hash(vec2 p) { + return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123); +} + +float matrix_glyph(vec2 cellUv, vec2 id, float t) { + float switchSeed = floor(t * (1.5 + matrix_hash(id) * 5.0)); + vec2 g = floor(cellUv * vec2(4.0, 5.0)); + float bit = step(0.4, matrix_hash(g * 0.31 + id * 3.7 + switchSeed * vec2(11.3, 17.9))); + vec2 f = fract(cellUv * vec2(4.0, 5.0)); + vec2 border = step(vec2(0.15), f) * step(f, vec2(0.85)); + vec2 margin = step(vec2(0.08), cellUv) * step(cellUv, vec2(0.92)); + return bit * border.x * border.y * margin.x * margin.y; +} + +vec3 matrix_effect(vec2 uv, float t) { + float aspect = Resolution.x / Resolution.y; + vec2 p = vec2(uv.x * aspect, uv.y); + + vec3 tint = HandColor.rgb; + vec3 color = tint * 0.12; + + for (int layer = 0; layer < 3; layer++) { + float fl = float(layer); + float scale = 26.0 + fl * 14.0; + vec2 q = p * vec2(scale * 0.55, scale) + vec2(fl * 37.31, fl * 11.7); + + float colId = floor(q.x); + float colSpeed = 2.5 + matrix_hash(vec2(colId, fl)) * 6.0; + float colOffset = matrix_hash(vec2(colId, fl + 5.0)) * 100.0; + q.y += t * colSpeed + colOffset; + + vec2 id = floor(q); + vec2 cellUv = fract(q); + + float trailLen = 10.0 + floor(matrix_hash(vec2(colId, fl + 9.0)) * 14.0); + float phase = fract(id.y / trailLen); + float fade = pow(1.0 - phase, 1.6); + float head = step(phase, 1.0 / trailLen); + + float glyph = matrix_glyph(cellUv, id, t); + float layerFade = 1.0 - fl * 0.3; + + vec3 streak = mix(tint * 2.2, vec3(1.2), head * 0.85); + color += streak * glyph * fade * layerFade; + } + + return clamp(color, 0.0, 1.6); +} + + +#define CB_EMISSION_STRENGTH 2.2 +#define CB_SHIMMER_SPEED 0.4 +#define CB_SHIMMER_STRENGTH 0.12 + +vec3 rgb2hsv(vec3 c) { + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.x) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +vec3 cosmicblast_effect(vec2 uv, float t) { + float aspect = Resolution.x / Resolution.y; + vec2 p = vec2(uv.x * aspect, uv.y); + + float n1 = nebula_fbm(p * 3.5 + vec2(0.1, 0.2), t * 0.033); + float n2 = nebula_fbm(p * 5.0 + vec2(t * 0.01, 0.0), t * 0.05); + float n3 = nebula_fbm(p * 8.0 - vec2(0.0, t * 0.008), t * 0.04); + + vec3 baseHsv = rgb2hsv(HandColor.rgb); + float hue = baseHsv.x; + float sat = min(baseHsv.y * 1.3, 1.0); + float val = max(baseHsv.z, 0.7); + + vec3 nebulaA = hsv2rgb(vec3(hue, sat, val * 0.8)); + vec3 nebulaB = hsv2rgb(vec3(fract(hue + 0.16), sat, val * 0.9)); + vec3 nebulaC = hsv2rgb(vec3(fract(hue + 0.87), sat * 0.9, val)); + + vec3 albedo = mix(nebulaA, nebulaB, n1); + albedo = mix(albedo, nebulaC, n2 * 0.5); + albedo = mix(albedo, albedo * 0.15 + vec3(0.02), n3 * 0.4); + + float starNoise = matrix_hash(floor(p * 180.0)); + float star = step(0.97, starNoise) * smoothstep(0.97, 1.0, starNoise); + float twinkle = 0.6 + 0.4 * sin(t * 3.0 + starNoise * 40.0); + albedo += star * twinkle * vec3(1.0, 0.95, 0.9) * 1.5; + + float shimmerNoise = nebula_noise(p * 12.0 + vec2(t * CB_SHIMMER_SPEED)); + vec3 shimmerColor = mix(nebulaB, nebulaC, shimmerNoise); + float shimmerBand = 0.5 + 0.5 * sin((p.x + p.y) * 9.0 - t * 1.3); + albedo += shimmerBand * shimmerColor * CB_SHIMMER_STRENGTH; + + float emissionMask = smoothstep(0.8, 1.15, n1 * n2 * 2.0); + vec3 glowColor = mix(nebulaB, vec3(1.0), 0.45); + vec3 emission = emissionMask * glowColor * CB_EMISSION_STRENGTH * 0.5; + + float planetMask = step(0.86, nebula_fbm(p * 2.0 + vec2(3.1, 1.7), 0.0)); + emission += planetMask * nebulaB * 0.9; + + for (int i = 0; i < 2; i++) { + float fi = float(i); + vec2 q = p * 3.2 + vec2(fi * 0.5, fi * 0.37); + vec2 id = floor(q); + vec2 cuv = fract(q) - 0.5; + cuv += (vec2(matrix_hash(id + fi), matrix_hash(id + fi + 4.2)) - 0.5) * 0.4; + + float phase = fract(t * 0.55 + matrix_hash(id * 1.7 + fi * 9.1)); + float seed = matrix_hash(id + fi * 23.0) * 43.0 + floor(t * 0.55 + matrix_hash(id * 1.7 + fi * 9.1)) * 7.0; + + float r = length(cuv); + float ang = atan(cuv.y, cuv.x); + + float ringR = phase * 0.45; + float ring = exp(-pow((r - ringR) * 16.0, 2.0)); + float rays = 0.5 + 0.5 * sin(ang * 14.0 + seed); + float sparks = 0.6 + 0.4 * sin(ang * 43.0 - seed * 3.0); + float fade = pow(1.0 - phase, 1.6); + float core = exp(-r * 12.0) * max(0.0, 1.0 - phase * 3.0) * 2.5; + + float alive = step(matrix_hash(id * 3.3 + fi + floor(t * 0.55)), 0.65); + vec3 blastCol = mix(glowColor, mix(nebulaB, nebulaC, matrix_hash(vec2(seed, 5.0))), 0.55); + emission += (ring * rays * sparks * fade * 2.4 + core) * blastCol * alive; + } + + vec3 color = albedo * (0.75 + 0.25 * shimmerBand) + emission; + color = color / (color + vec3(0.85)); + color *= 1.6; + + return clamp(color, 0.0, 1.5); +} + + +float an_star(vec2 p, float t) { + vec2 cell = floor(p * 26.0); + float n = matrix_hash(cell); + float rare = step(0.975, n); + vec2 f = fract(p * 26.0) - 0.5; + vec2 jitter = vec2(matrix_hash(cell + 7.3), matrix_hash(cell + 3.1)) - 0.5; + float spot = smoothstep(0.24, 0.05, length(f - jitter * 0.5)); + return rare * spot * (0.55 + 0.45 * sin(t * 3.0 + n * 30.0)); +} + +vec3 aliennebula_effect(vec2 uv, float t) { + float aspect = Resolution.x / Resolution.y; + vec2 p = vec2(uv.x * aspect, uv.y) * 3.5; + + vec2 q = vec2(nebula_fbm(p, t * 0.15), nebula_fbm(p + vec2(5.2, 1.3), t * 0.12)); + float n = nebula_fbm(p + q * 2.0, t * 0.1); + + vec3 baseHsv = rgb2hsv(HandColor.rgb); + float hue = baseHsv.x; + float sat = min(baseHsv.y * 1.2, 1.0); + float val = max(baseHsv.z, 0.75); + + vec3 c1 = hsv2rgb(vec3(fract(hue - 0.06 + 1.0), sat, val * 0.14)); + vec3 c2 = hsv2rgb(vec3(hue, sat, val * 0.5)); + vec3 c3 = hsv2rgb(vec3(fract(hue + 0.07), sat, val * 0.95)); + vec3 c4 = hsv2rgb(vec3(fract(hue + 0.15), sat * 0.85, val)); + + vec3 color = mix(c1, c2, smoothstep(0.2, 0.5, n)); + color = mix(color, c3, smoothstep(0.5, 0.72, n)); + color = mix(color, c4, smoothstep(0.72, 0.9, n) * (0.5 + 0.5 * sin(t * 1.5))); + + color += c3 * smoothstep(0.62, 0.9, n) * 1.2; + color += vec3(0.9, 0.95, 1.0) * an_star(p, t); + + float pulse = 0.9 + 0.1 * sin(t * 0.9 + n * 6.0); + return clamp(color * pulse, 0.0, 1.5); +} + + +// ===== Ported Sirius hand shaders (GLSL math only, no external code) ===== +// Coordinate convention: pass uv = TexCoord (0..1). fragCoord = uv * Resolution. +// Original uniforms mapped: time->Time, resolution->Resolution, speed->vec2(1.0), +// shift->1.6, mouse->center. Effects return rgb; hand alpha/opacity applied in main. + +float sir_field_a(vec3 p, float t) { + float strength = 7.0 + 0.03 * log(1.0e-6 + fract(sin(t) * 4373.11)); + float accum = 0.0, prev = 0.0, tw = 0.0; + for (int i = 0; i < 6; ++i) { + float mag = dot(p, p); + p = abs(p) / mag + vec3(-0.5, -0.8 + 0.1 * sin(t * 0.2 + 2.0), -1.1 + 0.3 * cos(t * 0.15)); + float w = exp(-float(i) / 7.0); + accum += w * exp(-strength * pow(abs(mag - prev), 2.3)); + tw += w; prev = mag; + } + return max(0.0, 5.0 * accum / tw - 0.7); +} + +float sir_field_b(vec3 p, float t) { + float strength = 7.0 + 0.03 * log(1.0e-6 + fract(sin(t) * 4373.11)); + float accum = 0.0, prev = 0.0, tw = 0.0; + for (int i = 0; i < 6; ++i) { + float mag = dot(p, p); + p = abs(p) / mag + vec3(-0.5, -0.8 + 0.1 * sin(t * 0.7 + 2.0), -1.1 + 0.3 * cos(t * 0.3)); + float w = exp(-float(i) / 7.0); + accum += w * exp(-strength * pow(abs(mag - prev), 2.3)); + tw += w; prev = mag; + } + return max(0.0, 5.0 * accum / tw - 0.7); +} + +float sir_field_yip(vec3 p, float t) { + float strength = 7.0 + 0.09 * log(1.0e-6 + fract(sin(t) * 373.11)); + float accum = 0.0, prev = 0.0, tw = 0.0; + for (int i = 0; i < 7; ++i) { + float mag = dot(p, p); + p = abs(p) / mag + vec3(-0.5, -0.8 + 0.1 * sin(-t * 0.1 + 2.0), -1.1 + 0.3 * cos(t * 0.3)); + float w = exp(-float(i) / 7.0); + accum += w * exp(-strength * pow(abs(mag - prev), 2.3)); + tw += w; prev = mag; + } + return max(0.0, 5.0 * accum / tw - 0.7); +} + +float sir_field_hidef(vec3 p) { + float strength = 7.0 + 0.03 * log(1.0e-6 + fract(sin(0.0) * 4373.11)); + float accum = 0.0, prev = 0.0, tw = 0.0; + for (int i = 0; i < 9; ++i) { + float mag = dot(p, p); + p = abs(p) / mag + vec3(-0.5, -0.8, -1.1); + float w = exp(-float(i) / 7.0); + accum += w * exp(-strength * pow(abs(mag - prev), 2.3)); + tw += w; prev = mag; + } + return max(0.0, 5.0 * accum / tw - 0.7); +} + +// aqua / purple: tiled caustic +vec3 sir_caustic(vec2 uv, float t, vec3 add) { + float letime = t * 0.5 + 23.0; + vec2 p = mod(uv * 6.28318530718, 6.28318530718) - 250.0; + vec2 i = p; + float c = 1.0; + float inten = 0.005; + for (int n = 0; n < 5; n++) { + float tt = letime * (1.0 - (3.5 / float(n + 1))); + i = p + vec2(cos(tt - i.x) + sin(tt + i.y), sin(tt - i.y) + cos(tt + i.x)); + c += 1.0 / length(vec2(p.x / (sin(i.x + tt) / inten), p.y / (cos(i.y + tt) / inten))); + } + c /= 5.0; + c = 1.17 - pow(c, 1.4); + vec3 colour = vec3(pow(abs(c), 8.0)); + return clamp(colour + add, 0.0, 1.0); +} + +vec3 sir_golden(vec2 tc, float t) { + vec2 uv = tc - 0.5; + uv.y *= Resolution.y / Resolution.x; + vec3 dir = vec3(uv * 2.0, 1.0); + float a1 = 5.0; + mat2 rot1 = mat2(cos(a1), sin(a1), -sin(a1), cos(a1)); + dir.xz *= rot1; dir.xy *= rot1; + vec3 from = vec3(0.0); + from += vec3(0.0, 0.1 * t, 0.0); + from.xz *= rot1; from.xy *= rot1; + float s = 0.1, fade = 0.05; + vec3 v = vec3(0.05); + for (int r = 0; r < 12; r++) { + vec3 p = from + s * dir * 1.5; + p = abs(vec3(0.40) - mod(p, vec3(0.40 * 2.0))); + p.x += float(r * r) * 0.01; + p.y += float(r) * 0.02; + float pa, a = pa = 0.0; + for (int i = 0; i < 15; i++) { + p = abs(p) / dot(p, p) - 0.330; + a += abs(length(p) - pa * 0.1); + pa = length(p); + } + float dm = max(0.1, 0.40 - a * a * 0.9); + a *= a * a * 2.0; + if (r > 3) fade *= 1.0 - dm; + v += vec3(dm, dm * 0.0, 0.6); + v += fade; + v += vec3(s, s * s, s * s * s * s * s) * a * 0.0019 * fade; + fade *= 0.99; + s += 0.10; + } + v = mix(vec3(length(v)), v, 1.60); + return v * 0.01; +} + +vec3 sir_flow(vec2 tc, float t) { + vec2 fragCoord = tc * Resolution; + vec2 uv2 = 2.0 * fragCoord / Resolution.xy - 1.0; + vec2 uv = uv2 * Resolution.xy / max(Resolution.x, Resolution.y); + float time2 = t * 1.9; + float speed = 0.005 * cos(time2 * 0.02 + 3.1415926 / 4.0); + float formuparam = 0.89; + float a_xz = 0.9, a_yz = -0.6, a_xy = 0.9 + t * 0.04; + mat2 rot_xz = mat2(cos(a_xz), sin(a_xz), -sin(a_xz), cos(a_xz)); + mat2 rot_yz = mat2(cos(a_yz), sin(a_yz), -sin(a_yz), cos(a_yz)); + mat2 rot_xy = mat2(cos(a_xy), sin(a_xy), -sin(a_xy), cos(a_xy)); + float v2 = 1.0; + vec3 dir = vec3(uv * 3.900, 1.0); + vec3 from = vec3(0.0); + from.x -= 0.5 * (-0.5); from.y -= 0.5 * (-0.5); + vec3 forward = vec3(0.0, 0.0, 1.0); + from.x += 1.1 * cos(0.01 * t) + 0.001 * t; + from.y += 1.1 * sin(0.01 * t) + 0.001 * t; + from.z += 0.003 * t; + dir.xy *= rot_xy; forward.xy *= rot_xy; + dir.xz *= rot_xz; forward.xz *= rot_xz; + dir.yz *= rot_yz; forward.yz *= rot_yz; + from.xy *= -rot_xy; from.xz *= rot_xz; from.yz *= rot_yz; + float zooom = (time2 - 3311.0) * speed; + from += forward * zooom; + float sampleShift = mod(zooom, 0.190); + float zoffset = -sampleShift; + sampleShift /= 0.190; + float s = 0.24, s3 = 0.24 + 0.190 / 2.0; + vec3 v = vec3(0.0); float t3 = 0.0; vec3 backCol2 = vec3(0.0); + for (int r = 0; r < 10; r++) { + vec3 p2 = from + (s + zoffset) * dir; + vec3 p3 = (from + (s3 + zoffset) * dir) * (1.9 / 3.900); + p2 = abs(vec3(0.450) - mod(p2, vec3(0.450 * 2.0))); + p3 = abs(vec3(0.450) - mod(p3, vec3(0.450 * 2.0))); + t3 = sir_field_a(p3, t); + float pa, a = pa = 0.0; + for (int i = 0; i < 4; i++) { + p2 = abs(p2) / dot(p2, p2) - formuparam; + float D = abs(length(p2) - pa); + if (i > 2) { a += i > 7 ? min(12.0, D) : D; } + pa = length(p2); + } + a *= a * a; + float s1 = s + zoffset; + float fade = pow(0.560, max(0.0, float(r) - sampleShift)); + v += fade; + if (r == 0) fade *= (1.0 - sampleShift); + if (r == 9) fade *= sampleShift; + v += vec3(s1, s1 * s1, s1 * s1 * s1 * s1) * a * 0.2 * fade; + backCol2 += mix(0.4, 1.0, v2) * vec3(0.20 * t3 * t3 * t3, 0.4 * t3 * t3, t3 * 0.7) * fade; + s += 0.190; s3 += 0.190; + } + v = mix(vec3(length(v)), v, 0.400); + vec3 forCol2 = v * 0.01; + backCol2 *= 0.2; + backCol2.b *= 1.8; backCol2.r *= 0.05; + return forCol2 + backCol2; +} + +vec3 sir_smoky(vec2 tc, float t) { + vec2 fragCoord = tc * Resolution; + vec2 uv2 = 2.0 * fragCoord / Resolution.xy - 1.0; + vec2 uv = uv2 * Resolution.xy / max(Resolution.x, Resolution.y); + float time2 = t; + float speed = 0.011 * cos(time2 * 0.02 + 3.1415926 / 4.0); + float formuparam = 0.89; + float a_xz = 0.9, a_yz = -0.6, a_xy = 0.9 + t * 0.04; + mat2 rot_xz = mat2(cos(a_xz), sin(a_xz), -sin(a_xz), cos(a_xz)); + mat2 rot_yz = mat2(cos(a_yz), sin(a_yz), -sin(a_yz), cos(a_yz)); + mat2 rot_xy = mat2(cos(a_xy), sin(a_xy), -sin(a_xy), cos(a_xy)); + float v2 = 1.0; + vec3 dir = vec3(uv * 3.900, 1.0); + vec3 from = vec3(0.0); + from.x -= 5.0 * (0.0 - 0.5); from.y -= 5.0 * (0.0 - 0.5); + vec3 forward = vec3(0.0, 0.0, 1.0); + from.x += 1.1 * cos(0.01 * t) + 0.001 * t; + from.y += 1.1 * sin(0.01 * t) + 0.001 * t; + from.z += 0.003 * t; + dir.xy *= rot_xy; forward.xy *= rot_xy; + dir.xz *= rot_xz; forward.xz *= rot_xz; + dir.yz *= rot_yz; forward.yz *= rot_yz; + from.xy *= -rot_xy; from.xz *= rot_xz; from.yz *= rot_yz; + float zooom = (time2 - 3311.0) * speed; + from += forward * zooom; + float sampleShift = mod(zooom, 0.190); + float zoffset = -sampleShift; + sampleShift /= 0.190; + float s = 0.24, s3 = 0.24 + 0.190 / 2.0; + vec3 v = vec3(0.0); float t3 = 0.0; vec3 backCol2 = vec3(0.0); + for (int r = 0; r < 10; r++) { + vec3 p2 = from + (s + zoffset) * dir; + vec3 p3 = (from + (s3 + zoffset) * dir) * (1.9 / 3.900); + p2 = abs(vec3(0.450) - mod(p2, vec3(0.450 * 2.0))); + p3 = abs(vec3(0.450) - mod(p3, vec3(0.450 * 2.0))); + t3 = sir_field_a(p3, t); + float pa, a = pa = 0.0; + for (int i = 0; i < 4; i++) { + p2 = abs(p2) / dot(p2, p2) - formuparam; + float D = abs(length(p2) - pa); + if (i > 2) { a += i > 7 ? min(12.0, D) : D; } + pa = length(p2); + } + a *= a * a; + float s1 = s + zoffset; + float fade = pow(0.560, max(0.0, float(r) - sampleShift)); + v += fade; + if (r == 0) fade *= (1.0 - sampleShift); + if (r == 9) fade *= sampleShift; + v += vec3(s1, s1 * s1, s1 * s1 * s1 * s1) * a * 0.2 * fade; + backCol2 += mix(0.4, 1.0, v2) * vec3(0.20 * t3 * t3 * t3, 0.4 * t3 * t3, t3 * 0.7) * fade; + s += 0.190; s3 += 0.190; + } + v = mix(vec3(length(v)), v, 0.400); + vec3 forCol2 = v * 0.01; + backCol2 *= 0.2; + return forCol2 + backCol2; +} + +vec3 sir_galaxy(vec2 tc, float t) { + vec2 fragCoord = tc * Resolution; + vec2 uv2 = 2.0 * fragCoord / vec2(512.0) - 1.0; + vec2 uv = uv2; + float time2 = t; + float speed = -0.004 * cos(time2 * 0.02 + 3.1415926 / 4.0); + float formuparam = 0.5; + float a_xz = 0.9, a_yz = -0.6, a_xy = 0.9 + t * 0.04; + mat2 rot_xz = mat2(cos(a_xz), sin(a_xz), -sin(a_xz), cos(a_xz)); + mat2 rot_yz = mat2(cos(a_yz), sin(a_yz), -sin(a_yz), cos(a_yz)); + mat2 rot_xy = mat2(cos(a_xy), sin(a_xy), -sin(a_xy), cos(a_xy)); + float v2 = 1.0; + vec3 dir = vec3(uv * 0.900, 1.0); + vec3 from = vec3(0.0); + vec3 forward = vec3(0.0, 0.0, 1.0); + from.x += 0.18 * 6.0 * cos(0.3 * t) + 0.01 * t; + from.y += 0.18 * 6.0 * sin(0.2 * t) + 0.01 * t; + dir.x -= 0.4 * (0.18 * 7.0 * cos(0.3 * t) + 0.01 * t); + dir.y += 0.2 * (0.18 * 7.0 * sin(0.2 * t) + 0.01 * t); + from.z += 0.009 * t; + dir.xy *= rot_xy; forward.xy *= rot_xy; + dir.xz *= rot_xz; forward.xz *= rot_xz; + dir.yz *= rot_yz; forward.yz *= rot_yz; + from.xy *= -rot_xy; from.xz *= rot_xz; from.yz *= rot_yz; + float zooom = (time2 - 3311.0) * speed; + from += forward * zooom; + float sampleShift = mod(zooom, 0.290); + float zoffset = -sampleShift; + sampleShift /= 0.290; + float s = 0.24, s3 = 0.24 + 0.290 / 2.0; + vec3 v = vec3(0.0); float t3 = 0.0; vec3 backCol2 = vec3(0.0); + for (int r = 0; r < 8; r++) { + vec3 p2 = from + (s + zoffset) * dir; + vec3 p3 = from + (s3 + zoffset) * dir; + p2 = abs(vec3(0.95) - mod(p2, vec3(0.95 * 2.0))); + p3 = abs(vec3(0.95) - mod(p3, vec3(0.95 * 2.0))); + t3 = sir_field_b(p3, t); + float pa, a = pa = 0.0; + for (int i = 0; i < 10; i++) { + p2 = abs(p2) / dot(p2, p2) - formuparam; + float D = abs(length(p2) - pa); + a += i > 7 ? min(12.0, D) : D; + pa = length(p2); + } + a *= a * a; + float s1 = s + zoffset; + float fade = pow(0.66, max(0.0, float(r) - sampleShift)); + v += fade; + if (r == 0) fade *= (1.0 - sampleShift); + if (r == 7) fade *= sampleShift; + v += vec3(s1, s1 * s1, s1 * s1 * s1 * s1) * a * 0.003 * fade; + backCol2 += mix(0.0, v2, fade) * vec3(1.8 * t3 * t3 * t3, 1.4 * t3 * t3, t3) * fade; + s += 0.290; s3 += 0.290; + } + v = mix(vec3(length(v)), v, 0.800); + vec3 forCol2 = v * 0.01; + backCol2 *= 0.31; + backCol2.b *= 1.8; backCol2.r *= 0.05; + backCol2.b = 0.5 * mix(backCol2.g, backCol2.b, 0.8); + backCol2.g = 0.0; + return forCol2 + backCol2; +} + +vec3 sir_homie(vec2 tc, float t) { + vec2 fragCoord = tc * Resolution; + vec2 uv2 = 2.0 * fragCoord / vec2(512.0) - 1.0; + vec2 uv = uv2; + float time2 = t; + float speed = 0.01 * cos(time2 * 0.02 + 3.1415926 / 4.0); + float formuparam = 0.79; + float a_xz = 0.9, a_yz = -0.6, a_xy = 0.9 + t * 0.08; + mat2 rot_xz = mat2(cos(a_xz), sin(a_xz), -sin(a_xz), cos(a_xz)); + mat2 rot_yz = mat2(cos(a_yz), sin(a_yz), -sin(a_yz), cos(a_yz)); + mat2 rot_xy = mat2(cos(a_xy), sin(a_xy), -sin(a_xy), cos(a_xy)); + float v2 = 1.0; + vec3 dir = vec3(uv * 0.900, 1.0); + vec3 from = vec3(0.0); + vec2 mo = vec2(sin(t) / 48.0, cos(t) / 48.0); + from.x -= 5.0 * (mo.x - 0.5); from.y -= 5.0 * (mo.y - 0.5); + vec3 forward = vec3(0.0, 0.0, 1.0); + from.x += 1.8 * cos(0.01 * t) + 0.001 * t; + from.y += 1.8 * sin(0.01 * t) + 0.001 * t; + from.z += 0.003 * t; + dir.xy *= rot_xy; forward.xy *= rot_xy; + dir.xz *= rot_xz; forward.xz *= rot_xz; + dir.yz *= rot_yz; forward.yz *= rot_yz; + from.xy *= -rot_xy; from.xz *= rot_xz; from.yz *= rot_yz; + float zooom = (time2 - 3311.0) * speed; + from += forward * zooom; + float sampleShift = mod(zooom, 0.390); + float zoffset = -sampleShift; + sampleShift /= 0.390; + float s = 0.24, s3 = 0.24 + 0.390 / 2.0; + vec3 v = vec3(0.0); float t3 = 0.0; vec3 backCol2 = vec3(0.0); + for (int r = 0; r < 5; r++) { + vec3 p2 = from + (s + zoffset) * dir; + vec3 p3 = from + (s3 + zoffset) * dir; + p2 = abs(vec3(0.85) - mod(p2, vec3(0.85 * 2.0))); + p3 = abs(vec3(0.85) - mod(p3, vec3(0.85 * 2.0))); + t3 = sir_field_b(p3, t); + float pa, a = pa = 0.0; + for (int i = 0; i < 14; i++) { + p2 = abs(p2) / dot(p2, p2) - formuparam; + float D = abs(length(p2) - pa); + a += i > 7 ? min(12.0, D) : D; + pa = length(p2); + } + a *= a * a; + float s1 = s + zoffset; + float fade = pow(0.560, max(0.0, float(r) - sampleShift)); + v += fade; + if (r == 0) fade *= (1.0 - sampleShift); + if (r == 4) fade *= sampleShift; + v += vec3(s1, s1 * s1, s1 * s1 * s1 * s1) * a * 0.003 * fade; + backCol2 += mix(0.4, 1.0, v2) * vec3(1.8 * t3 * t3 * t3, 1.4 * t3 * t3, t3) * fade; + s += 0.390; s3 += 0.390; + } + v = mix(vec3(length(v)), v, 0.800); + vec3 forCol2 = v * 0.01; + backCol2 *= 0.11; + backCol2.b *= 1.8; backCol2.r *= 0.05; + backCol2.b = 0.5 * mix(backCol2.g, backCol2.b, 0.8); + backCol2.g = 0.0; + backCol2.bg = mix(backCol2.gb, backCol2.bg, 0.5 * (cos(t * 0.01) + 1.0)); + return forCol2 + backCol2; +} + +vec3 sir_yippie(vec2 tc, float t) { + vec2 fragCoord = tc * Resolution; + vec2 uv2 = 4.0 * fragCoord / vec2(1024.0) - 1.0; + vec2 uv = uv2; + float time2 = t; + float speed = 0.00005 * cos(time2 * 0.0002 + 3.1415926 / 2.0); + float formuparam = 0.79; + float a_xz = 0.9, a_yz = -0.9, a_xy = 0.1 + t * 0.003; + mat2 rot_xz = mat2(cos(a_xz), sin(a_xz), -sin(a_xz), cos(a_xz)); + mat2 rot_yz = mat2(cos(a_yz), sin(a_yz), -sin(a_yz), cos(a_yz)); + mat2 rot_xy = mat2(cos(a_xy), sin(a_xy), -sin(a_xy), cos(a_xy)); + float v2 = 1.0; + vec3 dir = vec3(uv * 1.0, 1.0); + vec3 from = vec3(0.0); + from.x -= 2.0 * (0.0 - 0.5); from.y -= 2.0 * (0.0 - 0.5); + vec3 forward = vec3(0.0, 0.0, 5.0); + from.x += 1.0 * cos(0.01 * t) + 0.001 * t; + from.y += 1.0 * sin(0.01 * t) + 0.001 * t; + from.z += 0.003 * t; + dir.xy *= rot_xy; forward.xy *= rot_xy; + dir.xz *= rot_xz; forward.xz *= rot_xz; + dir.yz *= rot_yz; forward.yz *= rot_yz; + from.xy *= -rot_xy; from.xz *= rot_xz; from.yz *= rot_yz; + float zooom = (time2 - 6311.0) * speed; + from += forward * zooom; + float sampleShift = mod(zooom, 0.290); + float zoffset = -sampleShift; + sampleShift /= 0.290; + float s = 0.14, s3 = 0.14 + 0.290 / 2.0; + vec3 v = vec3(0.0); float t3 = 0.0; vec3 backCol2 = vec3(0.0); + for (int r = 0; r < 7; r++) { + vec3 p2 = from + (s + zoffset) * dir; + vec3 p3 = from + (s3 + zoffset) * dir; + p2 = abs(vec3(0.85) - mod(p2, vec3(0.85 * 2.0))); + p3 = abs(vec3(0.85) - mod(p3, vec3(0.85 * 2.0))); + t3 = sir_field_yip(p3, t); + float pa, a = pa = 0.0; + for (int i = 0; i < 12; i++) { + p2 = abs(p2) / dot(p2, p2) - formuparam; + float D = abs(length(p2) - pa); + a += i > 6 ? min(12.0, D) : D; + pa = length(p2); + } + a *= a * a; + float s1 = s + zoffset; + float fade = pow(0.560, max(0.0, float(r) - sampleShift)); + v += fade; + if (r == 0) fade *= (1.3 - sampleShift); + if (r == 6) fade *= sampleShift; + v += vec3(s1, s1 * s1, s1 * s1 * s1 * s1) * a * 0.0015 * fade; + backCol2 += mix(0.5, 1.0, v2) * vec3(0.8 * t3 * t3 * t3, 1.4 * t3 * t3, t3) * fade; + s += 0.290; s3 += 0.290; + } + v = mix(vec3(length(v)), v, 0.90); + vec3 forCol2 = v * 0.02; + backCol2 *= 0.17; + backCol2.b *= 0.9; backCol2.r *= 0.15; + backCol2.b = 0.8 * mix(backCol2.g, backCol2.b, 0.9); + backCol2.g = 0.02; + backCol2.bg = mix(backCol2.gb, backCol2.bg, 0.5 * (cos(t * 0.05) + 2.0)); + return forCol2 + backCol2; +} + +vec3 sir_hidef(vec2 tc, float t) { + vec2 fragCoord = tc * Resolution; + vec2 uv2 = fragCoord / Resolution.xy - 0.5; + uv2.y *= Resolution.y / Resolution.x; + vec2 uv = uv2; + float a_xz = 0.9, a_yz = -2.6, a_xy = 0.9; + mat2 rot_xz = mat2(cos(a_xz), sin(a_xz), -sin(a_xz), cos(a_xz)); + mat2 rot_yz = mat2(cos(a_yz), sin(a_yz), -sin(a_yz), cos(a_yz)); + mat2 rot_xy = mat2(cos(a_xy), sin(a_xy), -sin(a_xy), cos(a_xy)); + float v2 = 1.0; + vec3 dir = vec3(uv * 1.900, 1.0); + vec3 from = vec3(0.0); + from.x -= 0.1 * (0.0 - 0.5); from.y -= 0.1 * (0.0 - 0.5); + from.x += 10.0 * cos(0.004 * t); + from.y += 10.0 * sin(0.00777777 * t); + from.z += 0.003 * t; + vec3 forward = vec3(0.0, 0.0, 1.0); + dir.xy *= rot_xy; dir.xz *= rot_xz; dir.yz *= rot_yz; + forward.xy *= rot_xy; forward.xz *= rot_xz; forward.yz *= rot_yz; + from.xy *= rot_xy; from.xz *= rot_xz; from.yz *= rot_yz; + float zoffset = 0.0, sampleShift = 0.0; + float s = 0.74, s3 = 0.74 + 0.190 / 2.0; + vec3 v = vec3(0.0); float t3 = 0.0; vec3 backCol2 = vec3(0.0); + for (int r = 0; r < 9; r++) { + vec3 p2 = from + (s + zoffset) * dir; + vec3 p3 = from + (s3 + zoffset) * dir; + p2 = abs(vec3(0.5) - mod(p2, vec3(0.5 * 2.0))); + p3 = abs(vec3(0.5) - mod(p3, vec3(0.5 * 2.0))); + t3 = sir_field_hidef(p3); + float a = 0.0; + float s1 = s + zoffset; + float fade = pow(0.76, max(0.0, float(r) - sampleShift)); + v += fade; + if (r == 0) fade *= (1.0 - sampleShift); + if (r == 8) fade *= sampleShift; + v += vec3(s1, s1 * s1, s1 * s1 * s1 * s1) * a * 0.008 * fade; + backCol2 += mix(0.4, 1.0, v2) * vec3(1.8 * t3 * t3 * t3, 1.4 * t3 * t3, t3) * fade; + s += 0.190; s3 += 0.190; + } + v = mix(vec3(length(v)), v, 0.850); + vec3 forCol2 = v * 0.01; + backCol2 *= 0.09; + backCol2.b *= 1.8; backCol2.r *= 0.05; + backCol2.b = 0.5 * mix(backCol2.g, backCol2.b, 0.8); + backCol2.g = 0.0; + return forCol2 + backCol2; +} + +float sirGang_rand(vec2 n) { return fract(cos(dot(n, vec2(2.9898, 20.1414))) * 5.5453); } +float sirGang_noise(vec2 n) { + const vec2 d = vec2(0.0, 1.0); + vec2 b = floor(n), f = smoothstep(vec2(0.0), vec2(1.0), fract(n)); + return mix(mix(sirGang_rand(b), sirGang_rand(b + d.yx), f.x), mix(sirGang_rand(b + d.xy), sirGang_rand(b + d.yy), f.x), f.y); +} +float sirGang_fbm(vec2 n) { + float total = 0.0, amplitude = 1.5; + for (int i = 0; i < 18; i++) { total += sirGang_noise(n) * amplitude; n += n; amplitude *= 0.45; } + return total; +} +vec3 sir_gang(vec2 tc, float t) { + vec2 fragCoord = tc * Resolution; + vec3 c1 = vec3(0.502, 0.1059, 0.1059); + vec3 c2 = vec3(167.0 / 255.0, 93.0 / 255.0, 110.0 / 255.0); + vec3 c3 = vec3(0.4902, 0.5333, 0.4902); + vec3 c4 = vec3(0.2118, 0.3451, 0.2706); + vec3 c5 = vec3(0.3176, 0.2549, 0.4); + vec3 c6 = vec3(0.8, 0.3569, 0.3569); + vec2 p = fragCoord * 5.0 / Resolution.xx; + float q = sirGang_fbm(p - t * 0.05); + vec2 r = vec2(sirGang_fbm(p + q + t * 1.0 - p.x - p.y), sirGang_fbm(p + q - t * 1.0)); + vec3 c = mix(c1, c2, sirGang_fbm(p + r)) + mix(c3, c4, r.x) - mix(c5, c6, r.y); + float grad = fragCoord.y / Resolution.y; + vec3 result = c * cos(1.6 * fragCoord.y / Resolution.y); + result *= 1.15 - grad; + return result; +} + +float sirHoly_rand(vec2 n) { return fract(cos(dot(n, vec2(12.9898, 4.1414))) * 43758.5453); } +float sirHoly_noise(vec2 n) { + const vec2 d = vec2(0.0, 1.0); + vec2 b = floor(n), f = smoothstep(vec2(0.0), vec2(1.0), fract(n)); + return mix(mix(sirHoly_rand(b), sirHoly_rand(b + d.yx), f.x), mix(sirHoly_rand(b + d.xy), sirHoly_rand(b + d.yy), f.x), f.y); +} +float sirHoly_fbm(vec2 n) { + float total = 0.0, amplitude = 1.6; + for (int i = 0; i < 4; i++) { total += sirHoly_noise(n) * amplitude; n += n; amplitude *= 0.5; } + return total; +} +vec3 sir_holy(vec2 tc, float t) { + vec2 fragCoord = tc * Resolution; + vec3 c1 = vec3(126.0 / 255.0, 0.0 / 255.0, 97.0 / 255.0); + vec3 c2 = vec3(173.0 / 255.0, 0.0 / 255.0, 161.4 / 255.0); + vec3 c3 = vec3(0.2, 0.0, 0.0); + vec3 c4 = vec3(164.0 / 255.0, 1.0 / 255.0, 214.4 / 255.0); + vec3 c5 = vec3(0.1); + vec3 c6 = vec3(0.9); + vec2 p = fragCoord * 8.0 / Resolution.xx; + float q = sirHoly_fbm(p - t * 0.1); + vec2 r = vec2(sirHoly_fbm(p + q + t * 1.0 - p.x - p.y), sirHoly_fbm(p + q - t * 1.0)); + vec3 c = mix(c1, c2, sirHoly_fbm(p + r)) + mix(c3, c4, r.y) - mix(c5, c6, r.x); + float grad = fragCoord.y / Resolution.y; + vec3 result = c * cos(1.6 * fragCoord.y / Resolution.y); + result *= 1.0 - grad; + return result; +} + +float sirTeal_rand(vec2 st) { return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123); } +float sirTeal_noise(vec2 st) { + vec2 i = floor(st); + vec2 f = fract(st); + float a = sirTeal_rand(i); + float b = sirTeal_rand(i + vec2(1.0, 0.0)); + float c = sirTeal_rand(i + vec2(0.0, 1.0)); + float d = sirTeal_rand(i + vec2(1.0, 1.0)); + vec2 u = f * f * (3.0 - 2.0 * f); + return mix(a, b, u.x) + (c - a) * u.y * (1.0 - u.x) + (d - b) * u.x * u.y; +} +float sirTeal_fbm(vec2 st) { + float v = 0.0; + float a = 0.5; + vec2 shift = vec2(100.0); + mat2 rot = mat2(cos(0.5), sin(0.5), -sin(0.5), cos(0.5)); + for (int i = 0; i < 5; ++i) { v += a * sirTeal_noise(st); st = rot * st * 2.0 + shift; a *= 0.5; } + return v; +} +vec3 sir_teal(vec2 tc, float t) { + vec2 fragCoord = tc * Resolution; + vec2 st = fragCoord / Resolution.xy * 3.0; + vec2 q = vec2(0.0); + q.x = sirTeal_fbm(st); + q.y = sirTeal_fbm(st + vec2(1.0)); + vec2 r = vec2(0.0); + r.x = sirTeal_fbm(st + 1.0 * q + vec2(1.7, 9.2) + 0.15 * t); + r.y = sirTeal_fbm(st + 1.0 * q + vec2(8.3, 2.8) + 0.126 * t); + float f = sirTeal_fbm(st + r); + vec3 color = mix(vec3(0.101961, 0.619608, 0.666667), vec3(0.666667, 0.666667, 0.498039), clamp((f * f) * 4.0, 0.0, 1.0)); + color = mix(color, vec3(0.0, 0.0, 0.164706), clamp(length(q), 0.0, 1.0)); + color = mix(color, vec3(0.666667, 1.0, 1.0), clamp(length(r.x), 0.0, 1.0)); + return (f * f * f + 0.6 * f * f + 0.5 * f) * color; +} + +float sirGamer_rand(vec2 pos) { return fract(sin(dot(pos.xy, vec2(12.9898, 78.233))) * 43758.5453123); } +float sirGamer_noise(vec2 pos) { + vec2 i = floor(pos); + vec2 f = fract(pos); + float a = sirGamer_rand(i + vec2(0.0, 0.0)); + float b = sirGamer_rand(i + vec2(1.0, 0.0)); + float c = sirGamer_rand(i + vec2(0.0, 1.0)); + float d = sirGamer_rand(i + vec2(1.0, 1.0)); + vec2 u = f * f * (3.0 - 2.0 * f); + return mix(a, b, u.x) + (c - a) * u.y * (1.0 - u.x) + (d - b) * u.x * u.y; +} +float sirGamer_fbm(vec2 pos) { + float v = 0.0; + float a = 0.5; + vec2 shift = vec2(100.0); + mat2 rot = mat2(cos(0.5), sin(0.5), -sin(0.5), cos(0.5)); + for (int i = 0; i < 16; i++) { v += a * sirGamer_noise(pos); pos = rot * pos * 2.0 + shift; a *= 0.5; } + return v; +} +vec3 sir_gamer(vec2 tc, float t) { + vec2 fragCoord = tc * Resolution; + vec2 p = (fragCoord * 2.0 - Resolution.xy) / min(Resolution.x, Resolution.y); + float time2 = 3.0 * t / 2.0; + vec2 q = vec2(0.0); + q.x = sirGamer_fbm(p); + q.y = sirGamer_fbm(p + vec2(1.0)); + vec2 r = vec2(0.0); + r.x = sirGamer_fbm(p + 1.0 * q + vec2(1.7, 9.2) + 0.15 * time2); + r.y = sirGamer_fbm(p + 1.0 * q + vec2(8.3, 2.8) + 0.126 * time2); + float f = sirGamer_fbm(p + r); + vec3 color = mix(vec3(0.101961, 0.866667, 0.319608), vec3(0.666667, 0.598039, 0.366667), clamp((f * f) * 4.0, 0.0, 1.0)); + color = mix(color, vec3(0.34509803921, 0.06666666666, 0.83137254902), clamp(length(q), 0.0, 1.0)); + color = mix(color, vec3(0.1, -0.5, 0.1), clamp(length(r.x), 0.0, 1.0)); + color = (f * f * f + 0.6 * f * f + 0.5 * f) * color; + return color; +} + +vec2 sirTech_rotate(vec2 p, float a) { return vec2(p.x * cos(a) - p.y * sin(a), p.x * sin(a) + p.y * cos(a)); } +float sirTech_rand1(float n) { return fract(sin(n) * 43758.5453123); } +float sirTech_rand2v(vec2 n) { return fract(sin(dot(n, vec2(591.32, 391.32)))); } +float sirTech_rand3(vec3 n) { return fract(sin(dot(n, vec3(591.32, 391.32, 623.54)))); } +vec2 sirTech_rnd2(vec2 p) { return fract(vec2(sin(p.x * 591.32 + p.y * 154.077), cos(p.x * 391.32 + p.y * 49.077))); } +vec3 sirTech_voronoi(vec2 x, out vec4 cellCenters) { + float k = 0.8; + vec2 p = floor(x), f = fract(x); + vec2 i1 = vec2(0.0), i2 = vec2(0.0); + vec3 res = vec3(8.0); + for (int j = -1; j <= 1; j++) { + for (int i = -1; i <= 1; i++) { + vec2 b = vec2(i, j); + vec2 r = b - f + sirTech_rnd2(p + b) * k; + float d = (abs(r.x) + abs(r.y)); + if (d < res.x) { res.z = res.y; res.y = res.x; res.x = d; i2 = i1; i1 = p + b; } + else if (d < res.y) { res.z = res.y; res.y = d; i2 = p + b; } + else if (d < res.z) { res.z = d; } + } + } + cellCenters = vec4(i1, i2); + return res; +} +float sirTech_cubicPulse(float c, float w, float x) { x = abs(x - c); if (x > w) return 0.0; x /= w; return 1.0 - x * x * (3.0 - 2.0 * x); } +vec3 sir_techno(vec2 tc, float t) { + vec2 fragCoord = tc * Resolution; + vec2 iRes = Resolution; + vec2 uv = (fragCoord / iRes.xy - 0.5) * 2.0; + uv.x *= iRes.x / iRes.y; + uv = sirTech_rotate(uv, sin(t * 0.10)); + uv.x += t * 0.3; + float scale = 4.0, width = 0.6; + vec4 cc; + vec3 vr = sirTech_voronoi(uv * scale + 10.0, cc); + float d = vr.y - vr.x; + if (vr.z - vr.y < width && vr.y - vr.x < width) d = max(width - (vr.z - vr.y), d); + vec2 cellHashes = vec2(sirTech_rand2v(cc.xy), sirTech_rand2v(cc.zw)); + float wire = sirTech_cubicPulse(width, 0.06, d); + float PI = 3.14159265359; + float lightX = (sirTech_rotate(uv, PI / 8.0).x + t * 0.5) * 5.0; + float lightHash1 = sirTech_rand1(floor(lightX)); float lightValue1 = fract(lightX); + lightX = (sirTech_rotate(uv, PI * 5.0 / 8.0).x + t * 0.2) * 5.0; float lightHash2 = sirTech_rand1(floor(lightX) + 0.5); float lightValue2 = fract(lightX); + lightX = (sirTech_rotate(uv, PI * 9.0 / 8.0).x + t * 0.2) * 5.0; float lightHash3 = sirTech_rand1(floor(lightX) + 0.5); float lightValue3 = fract(lightX); + lightX = (sirTech_rotate(uv, PI * 13.0 / 8.0).x + t * 0.2) * 5.0; float lightHash4 = sirTech_rand1(floor(lightX) + 0.5); float lightValue4 = fract(lightX); + float light = 0.0; float lightFrequency = 0.002; + if (sirTech_rand3(vec3(cellHashes.xy, lightHash1)) < lightFrequency) light = wire * sirTech_cubicPulse(0.5, 0.25, lightValue1) * 3.0; + if (sirTech_rand3(vec3(cellHashes.xy, lightHash2)) < lightFrequency) light += wire * sirTech_cubicPulse(0.5, 0.25, lightValue2) * 3.0; + if (sirTech_rand3(vec3(cellHashes.xy, lightHash3)) < lightFrequency) light += wire * sirTech_cubicPulse(0.5, 0.25, lightValue3) * 3.0; + if (sirTech_rand3(vec3(cellHashes.xy, lightHash4)) < lightFrequency) light += wire * sirTech_cubicPulse(0.5, 0.25, lightValue4) * 3.0; + if ((cellHashes.x - cellHashes.y) > 0.0) { float w = sirTech_cubicPulse(width - 0.1, 0.06, d); wire += w; } + scale *= 0.4; + vec3 vr2 = sirTech_voronoi(uv * scale + 30.0, cc); + d = vr2.y - vr2.x; + if (vr2.z - vr2.y < width && vr2.y - vr2.x < width) d = max(width - (vr2.z - vr2.y), d); + cellHashes = vec2(sirTech_rand2v(cc.xy), sirTech_rand2v(cc.zw)); + float backWire = sirTech_cubicPulse(width, 0.06, d); + if ((cellHashes.x - cellHashes.y) > 0.0) { float w = sirTech_cubicPulse(width - 0.1, 0.06, d); backWire += w; } + wire = max(wire, backWire * 0.3); + wire += vr.x * 0.3 + 0.3; + wire = wire * 0.4 + light; + vec3 col = clamp(vec3(0.4, 0.8, 1.0) * wire, vec3(0.0), vec3(1.0)); + col *= 0.7; + return col; +} + +vec2 sirShel_rotate(vec2 p, float a) { return vec2(p.x * cos(a) - p.y * sin(a), p.x * sin(a) + p.y * cos(a)); } +float sirShel_rand(float n) { return fract(sin(n) * 43758.5453123); } +vec2 sirShel_rand2(vec2 p) { return fract(vec2(sin(p.x * 591.32 + p.y * 154.077), cos(p.x * 391.32 + p.y * 49.077))); } +float sirShel_noise1(float p) { float fl = floor(p); float fc = fract(p); return mix(sirShel_rand(fl), sirShel_rand(fl + 1.0), fc); } +float sirShel_voronoi(vec2 x) { + vec2 p = floor(x), f = fract(x); + vec2 res = vec2(8.0); + for (int j = -1; j <= 1; j++) { + for (int i = -1; i <= 1; i++) { + vec2 b = vec2(i, j); + vec2 r = b - f + sirShel_rand2(p + b); + float d = max(abs(r.x), abs(r.y)); + if (d < res.x) { res.y = res.x; res.x = d; } else if (d < res.y) { res.y = d; } + } + } + return res.y - res.x; +} +vec3 sirShel_image(vec2 fragCoord, float t, vec2 iRes) { + float flicker = sirShel_noise1(t * 2.0) * 0.8 + 0.4; + vec2 uv = fragCoord.xy / iRes.xy; + uv = (uv - 0.5) * 2.0; + vec2 suv = uv; + uv.x *= iRes.x / iRes.y; + float v = 0.0; + v = 1.0 - length(uv) * 1.3; + uv *= 0.6 + sin(t * 0.1) * 0.4; + uv = sirShel_rotate(uv, sin(t * 0.3) * 1.0); + uv += t * 0.4; + float a = 0.6, f = 1.0; + for (int i = 0; i < 3; i++) { + float v1 = sirShel_voronoi(uv * f + 5.0); + float v2 = 0.0; + if (i > 0) { + v2 = sirShel_voronoi(uv * f * 0.5 + 50.0 + t); + float va = 1.0 - smoothstep(0.0, 0.1, v1); + float vb = 1.0 - smoothstep(0.0, 0.08, v2); + v += a * pow(va * (0.5 + vb), 2.0); + } + v1 = 1.0 - smoothstep(0.0, 0.3, v1); + v2 = a * (sirShel_noise1(v1 * 5.5 + 0.1)); + if (i == 0) v += v2 * flicker; else v += v2; + f *= 3.0; a *= 0.7; + } + v *= exp(-0.6 * length(suv)) * 1.2; + vec3 cexp = vec3(6.0, 4.0, 2.0); + return vec3(pow(v, cexp.x), pow(v, cexp.y), pow(v, cexp.z)) * 2.0; +} +vec3 sir_sheldon(vec2 tc, float t) { + vec2 fragCoord = tc * Resolution; + vec2 position = fragCoord / Resolution.xy; + float color = 0.0; + color += sin(position.x * cos(t / 15.0) * 80.0) + cos(position.y * cos(t / 15.0) * 10.0); + color += sin(position.y * sin(t / 10.0) * 40.0) + cos(position.x * sin(t / 25.0) * 40.0); + color += sin(position.x * sin(t / 5.0) * 10.0) + sin(position.y * sin(t / 35.0) * 80.0); + color *= sin(t / 10.0) * 0.5; + vec2 fc = vec2(color, color * 0.5); + return sirShel_image(fc, t, Resolution); +} + +float sirNet_N21(vec2 p) { p = fract(p * vec2(2.15, 8.3)); p += dot(p, p + 2.5); return fract(p.x * p.y); } +vec2 sirNet_N22(vec2 p) { float n = sirNet_N21(p); return vec2(n, sirNet_N21(p + n)); } +vec2 sirNet_getPos(vec2 id, vec2 offset, float t) { vec2 n = sirNet_N22(id + offset); float x = cos(t * n.x); float y = sin(t * n.y); return vec2(x, y) * 0.4 + offset; } +float sirNet_distLine(vec2 p, vec2 a, vec2 b) { vec2 pa = p - a; vec2 ba = b - a; float tt = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0); return length(pa - tt * ba); } +float sirNet_getLine(vec2 p, vec2 a, vec2 b, float iResY) { float dd = sirNet_distLine(p, a, b); float dx = 15.0 / iResY; return smoothstep(dx, 0.0, dd) * smoothstep(1.2, 0.3, length(a - b)); } +float sirNet_layer(vec2 st, float t, float iResY) { + float m = 0.0; + vec2 gv = fract(st) - 0.5; + vec2 id = floor(st); + vec2 pointPos = sirNet_getPos(id, vec2(0.0), t); + m += smoothstep(0.05, 0.03, length(gv - pointPos)); + vec2 pp[9]; + pp[0] = sirNet_getPos(id, vec2(-1.0, -1.0), t); + pp[1] = sirNet_getPos(id, vec2(-1.0, 0.0), t); + pp[2] = sirNet_getPos(id, vec2(-1.0, 1.0), t); + pp[3] = sirNet_getPos(id, vec2(0.0, -1.0), t); + pp[4] = sirNet_getPos(id, vec2(0.0, 0.0), t); + pp[5] = sirNet_getPos(id, vec2(0.0, 1.0), t); + pp[6] = sirNet_getPos(id, vec2(1.0, -1.0), t); + pp[7] = sirNet_getPos(id, vec2(1.0, 0.0), t); + pp[8] = sirNet_getPos(id, vec2(1.0, 1.0), t); + for (int j = 0; j <= 8; j++) { + m += sirNet_getLine(gv, pp[4], pp[j], iResY); + vec2 temp = (gv - pp[j]) * 100.0; + m += 1.0 / dot(temp, temp) * (sin(10.0 * t + fract(pp[j].x) * 20.0) * 0.5 + 0.5); + } + m += sirNet_getLine(gv, pp[1], pp[3], iResY); + m += sirNet_getLine(gv, pp[1], pp[5], iResY); + m += sirNet_getLine(gv, pp[3], pp[7], iResY); + m += sirNet_getLine(gv, pp[5], pp[7], iResY); + return m; +} +vec3 sir_network(vec2 tc, float t) { + vec2 fragCoord = tc * Resolution; + vec2 iRes = Resolution; + vec2 uv = (fragCoord - 0.5 * iRes.xy) / iRes.y; + float m = 0.0; + float theta = t * 0.1; + mat2 rot = mat2(cos(theta), -sin(theta), sin(theta), cos(theta)); + vec2 gradient = uv; + uv = rot * uv; + for (float i = 0.0; i < 1.0; i += 0.25) { + float depth = fract(i + t * 0.1); + m += sirNet_layer(uv * mix(10.0, 0.5, depth) + i * 20.0, t, iRes.y) * smoothstep(0.0, 0.2, depth) * smoothstep(1.0, 0.8, depth); + } + vec3 baseColor = sin(vec3(1.0) * t * 0.2) * 0.5 + 1.0; + vec3 col = (m - gradient.y) * baseColor; + return vec3(col.r * 1.0, col.g * 0.0, col.b * 1.0); +} + +vec3 sir_dispatch(int mode, vec2 uv, float t) { + if (mode == 14) return sir_caustic(uv, t, vec3(0.0, 0.35, 0.5)); + if (mode == 15) return sir_caustic(uv, t, vec3(0.727, 0.221, 0.765)); + if (mode == 16) return sir_golden(uv, t); + if (mode == 17) return sir_flow(uv, t); + if (mode == 18) return sir_galaxy(uv, t); + if (mode == 19) return sir_smoky(uv, t); + if (mode == 20) return sir_homie(uv, t); + if (mode == 21) return sir_yippie(uv, t); + if (mode == 22) return sir_hidef(uv, t); + if (mode == 23) return sir_gang(uv, t); + if (mode == 24) return sir_holy(uv, t); + if (mode == 25) return sir_teal(uv, t); + if (mode == 26) return sir_gamer(uv, t); + if (mode == 27) return sir_techno(uv, t); + if (mode == 28) return sir_sheldon(uv, t); + return sir_network(uv, t); +} + + +void main() { + vec4 hand = texture(Sampler0, TexCoord); + int mode = int(HandShaderMode + 0.5); + + if (mode == 8) { + vec4 glass = liquid_glass_effect(TexCoord, Time); + if (glass.a <= 0.004) { + discard; + } + OutColor = glass * FragColor; + return; + } + + if (hand.a <= 0.004) { + discard; + } + + if (mode >= 14) { + vec3 sc = sir_dispatch(mode, TexCoord, Time); + float alpha = hand.a * HandColor.a; + OutColor = vec4(sc, alpha) * FragColor; + return; + } + + vec3 base = HandColor.rgb; + vec3 effect = base; + + if (mode == 1) { + float hue = fract(TexCoord.x * 0.5 + TexCoord.y * 0.25 + Time * 0.1); + effect = hsv2rgb(vec3(hue, 1.0, 1.0)); + } else if (mode == 2) { + float wave = 0.5 + 0.5 * sin((TexCoord.x + TexCoord.y) * 12.0 - Time * 3.0); + effect = base * (0.45 + 0.85 * wave); + } else if (mode == 3) { + float pulse = 0.5 + 0.5 * sin(Time * 4.5); + effect = base * mix(0.25, 2.0, pulse); + } else if (mode == 4) { + effect = cosmos_effect(TexCoord, Time); + } else if (mode == 5) { + effect = nebula_effect(TexCoord, Time); + } else if (mode == 6) { + effect = cobweb_effect(TexCoord, Time); + } else if (mode == 7) { + effect = plasma_effect(TexCoord, Time); + } else if (mode == 9) { + effect = matrix_effect(TexCoord, Time); + } else if (mode == 10) { + effect = cosmicblast_effect(TexCoord, Time); + } else if (mode == 11) { + effect = aliennebula_effect(TexCoord, Time); + } + + float luma = dot(hand.rgb, vec3(0.299, 0.587, 0.114)); + vec3 finalRgb; + if (mode == 9) { + finalRgb = effect * (0.5 + 0.7 * luma); + } else if (mode == 10) { + finalRgb = effect * (0.7 + 0.5 * luma); + } else if (mode == 11) { + finalRgb = effect * (0.6 + 0.55 * luma); + } else if (HandShaderOnly > 0.5) { + finalRgb = effect * (0.35 + 0.85 * luma); + } else { + finalRgb = mix(hand.rgb, hand.rgb * effect * 1.6, 0.65); + } + + float alpha = hand.a * HandColor.a; + OutColor = vec4(finalRgb, alpha) * FragColor; +} diff --git a/src/main/resources/assets/evolution/shaders/core/hand_smoke/composite/data.json b/src/main/resources/assets/evolution/shaders/core/hand_smoke/composite/data.json new file mode 100644 index 0000000..01b1a7c --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hand_smoke/composite/data.json @@ -0,0 +1,8 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/hand_smoke/composite/fragment", + "samplers": [ + { "name": "Sampler0" }, + { "name": "Sampler1" } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/hand_smoke/composite/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/hand_smoke/composite/fragment.fsh new file mode 100644 index 0000000..04f9ad9 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hand_smoke/composite/fragment.fsh @@ -0,0 +1,61 @@ +#version 150 + +#moj_import + +uniform sampler2D Sampler0; +uniform sampler2D Sampler1; + +in vec2 TexCoord; +out vec4 OutColor; + +vec2 texelSize = vec2(0.0); + +float sampleMask(vec2 uv) { + return texture(Sampler1, clamp(uv, vec2(0.0), vec2(1.0))).a; +} + +float edgeMask(vec2 uv) { + float c = sampleMask(uv); + float e = 0.0; + e += abs(c - sampleMask(uv + vec2( texelSize.x, 0.0))); + e += abs(c - sampleMask(uv + vec2(-texelSize.x, 0.0))); + e += abs(c - sampleMask(uv + vec2(0.0, texelSize.y))); + e += abs(c - sampleMask(uv + vec2(0.0, -texelSize.y))); + return clamp(e * 0.9, 0.0, 1.0); +} + +void main() { + vec2 texCoord = TexCoord; + texelSize = 1.0 / max(Resolution, vec2(1.0)); + + float topDistance = 1.0 - texCoord.y; + float topEdgeFade = smoothstep(0.012, 0.085, topDistance); + vec4 smokeSample = texture(Sampler0, texCoord); + + float intensityC = clamp(SmokeIntensity, 0.0, 1.5); + float softness = clamp(SmokeHandSoftness, 0.4, 2.5); + float blurSetting = clamp(SmokeHandBlur, 0.2, 3.0); + float smokeSetting = clamp(SmokeAmount, 0.0, 0.8); + float mask = sampleMask(texCoord); + float edge = edgeMask(texCoord); + + float activityC = clamp(SmokeActivity, 0.0, 1.0); + float trail = clamp(smokeSample.a, 0.0, 1.0); + float softMix = clamp((softness - 0.4) / 2.1, 0.0, 1.0); + float blurMix = clamp((blurSetting - 0.2) / 2.8, 0.0, 1.0); + float bloom = pow(trail, mix(0.78, 0.48, softMix)); + float aura = smoothstep(0.012, mix(0.24, 0.38, blurMix), trail); + float smokeAlpha = clamp(max(bloom * 0.62, aura * 0.38), 0.0, 0.76); + smokeAlpha *= (0.84 + intensityC * 0.46 + smokeSetting * 0.35 + activityC * 0.12 + softMix * 0.14); + smokeAlpha = clamp(smokeAlpha, 0.0, 0.86); + smokeAlpha = smokeAlpha < 0.005 ? 0.0 : smokeAlpha; + smokeAlpha *= 1.0 - mask * 0.18; + smokeAlpha *= topEdgeFade; + + vec3 smokeColor = clamp(smokeSample.rgb * (1.18 + smokeSetting * 0.24), 0.0, 1.0); + vec3 addColor = smokeColor * smokeAlpha; + addColor += smokeColor * edge * bloom * (0.11 + intensityC * 0.10) * (1.0 - softMix * 0.28) * topEdgeFade; + addColor *= HandColor.a; + + OutColor = vec4(clamp(addColor, 0.0, 1.0), 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/hand_smoke/flame/data.json b/src/main/resources/assets/evolution/shaders/core/hand_smoke/flame/data.json new file mode 100644 index 0000000..1ea3bd2 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hand_smoke/flame/data.json @@ -0,0 +1,8 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/hand_smoke/flame/fragment", + "samplers": [ + { "name": "Sampler0" }, + { "name": "Sampler1" } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/hand_smoke/flame/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/hand_smoke/flame/fragment.fsh new file mode 100644 index 0000000..c1d6f21 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hand_smoke/flame/fragment.fsh @@ -0,0 +1,120 @@ +#version 150 + +#moj_import + +uniform sampler2D Sampler0; +uniform sampler2D Sampler1; + +in vec2 TexCoord; +out vec4 OutColor; + +float hash(vec2 p) { + p = fract(p * vec2(123.34, 345.45)); + p += dot(p, p + 34.345); + return fract(p.x * p.y); +} + +float noise(vec2 p) { + vec2 i = floor(p); + vec2 f = fract(p); + f = f * f * (3.0 - 2.0 * f); + + float a = hash(i); + float b = hash(i + vec2(1.0, 0.0)); + float c = hash(i + vec2(0.0, 1.0)); + float d = hash(i + vec2(1.0, 1.0)); + + return mix(mix(a, b, f.x), mix(c, d, f.x), f.y); +} + +float fbm(vec2 p) { + float value = 0.0; + float amplitude = 0.5; + for (int i = 0; i < 5; i++) { + value += noise(p) * amplitude; + p = p * 2.02 + vec2(8.4, 5.7); + amplitude *= 0.5; + } + return value; +} + +float ridged(vec2 p) { + float value = 0.0; + float amplitude = 0.55; + for (int i = 0; i < 4; i++) { + float r = 1.0 - abs(noise(p) * 2.0 - 1.0); + value += r * amplitude; + p = p * 2.18 + vec2(3.1, 9.2); + amplitude *= 0.52; + } + return value; +} + +void main() { + vec2 uv = TexCoord; + + vec3 color = HandColor.rgb; + vec3 color2 = TintColor; + float time = Time; + float height = SmokeHeight; + float speed = SmokeSpeed; + float intensity = SmokeIntensity; + float windStrength = SmokeWind; + float waveStrength = SmokeWave; + vec2 camOffset = SmokeCamShift; + + float t = time * max(speed, 0.001); + vec2 flow = uv * 2.5; + vec2 drift = vec2(t * 0.35, -t * 0.25); + + vec2 warp = vec2( + fbm(flow * 0.85 + drift * 0.85 + vec2(0.0, 4.1)), + fbm(flow * 0.72 - drift * 0.55 + vec2(3.7, 1.8)) + ); + vec2 q = flow + (warp - 0.5) * 2.2; + + float mist = fbm(q * 0.75 - drift * 0.28 + vec2(4.2, 8.1)); + float veins = ridged(q * 1.75 + vec2(mist * 2.8, mist * 1.8) - drift * 0.58); + veins = pow(clamp(veins, 0.0, 1.0), 2.4); + + float stripeA = 1.0 - abs(sin((q.x * 1.05 + q.y * 0.4) * 1.8 + time * 0.9 + mist * 4.5)); + float stripeB = 1.0 - abs(sin((q.x * -0.55 + q.y * 1.1) * 1.5 - time * 0.7 - mist * 3.0)); + stripeA = pow(clamp(stripeA, 0.0, 1.0), 5.0); + stripeB = pow(clamp(stripeB, 0.0, 1.0), 5.5); + + float energy = clamp(mist * 0.2 + veins * 0.9 + stripeA * 0.6 + stripeB * 0.35, 0.0, 1.0); + float core = smoothstep(0.15, 0.95, energy); + + float wind = (sin(time * 1.8) * 0.8 + sin(time * 0.9 + 1.5) * 0.6) * windStrength; + float gust = (fbm(vec2(uv.x * 3.5, uv.y * 3.5 - time * speed * 1.2)) - 0.5) * windStrength; + + float plume = 0.0; + const int STEPS = 20; + for (int i = 1; i <= STEPS; i++) { + float d = float(i) / float(STEPS); + + float wave1 = sin((d * 8.0 + time * 1.5)) * 0.03 * waveStrength; + float wave2 = sin((d * 12.0 + time * 2.0 + 2.5)) * 0.02 * waveStrength; + float wave3 = (warp.x - 0.5) * 0.04 * d * waveStrength; + + float below = uv.y - d * height + camOffset.y * d; + float x = uv.x - (wind * 0.08 + gust * 0.07 + wave1 + wave2 + wave3) * d + camOffset.x * d; + + float m = texture(Sampler0, vec2(x, below)).a; + plume = max(plume, m * (1.0 - d)); + } + + float fire = plume; + + float self = texture(Sampler1, uv).a; + fire *= (1.0 - self); + + fire *= (0.4 + core * 0.6 + veins * 0.3 * waveStrength); + fire *= smoothstep(0.05, 0.7, energy); + fire = clamp(fire * intensity, 0.0, 1.0); + fire = pow(fire, 0.75); + if (fire <= 0.01) discard; + + vec3 col = mix(color2, color, fire * (0.7 + core * 0.3)); + OutColor = vec4(col, fire * HandColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/hand_smoke/kawase_down/data.json b/src/main/resources/assets/evolution/shaders/core/hand_smoke/kawase_down/data.json new file mode 100644 index 0000000..bbac75d --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hand_smoke/kawase_down/data.json @@ -0,0 +1,7 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/hand_smoke/kawase_down/fragment", + "samplers": [ + { "name": "Sampler0" } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/hand_smoke/kawase_down/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/hand_smoke/kawase_down/fragment.fsh new file mode 100644 index 0000000..82bb86a --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hand_smoke/kawase_down/fragment.fsh @@ -0,0 +1,21 @@ +#version 150 + +#moj_import + +uniform sampler2D Sampler0; + +in vec2 TexCoord; +out vec4 OutColor; + +void main() { + vec2 uv = TexCoord; + vec2 halfPixel = (0.5 / max(Resolution, vec2(1.0))) * Offset; + + vec4 sum = texture(Sampler0, uv) * 4.0; + sum += texture(Sampler0, uv - halfPixel); + sum += texture(Sampler0, uv + halfPixel); + sum += texture(Sampler0, uv + vec2(halfPixel.x, -halfPixel.y)); + sum += texture(Sampler0, uv - vec2(halfPixel.x, -halfPixel.y)); + + OutColor = sum / 8.0; +} diff --git a/src/main/resources/assets/evolution/shaders/core/hand_smoke/kawase_up/data.json b/src/main/resources/assets/evolution/shaders/core/hand_smoke/kawase_up/data.json new file mode 100644 index 0000000..a9a910e --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hand_smoke/kawase_up/data.json @@ -0,0 +1,7 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/hand_smoke/kawase_up/fragment", + "samplers": [ + { "name": "Sampler0" } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/hand_smoke/kawase_up/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/hand_smoke/kawase_up/fragment.fsh new file mode 100644 index 0000000..3d224bd --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hand_smoke/kawase_up/fragment.fsh @@ -0,0 +1,25 @@ +#version 150 + +#moj_import + +uniform sampler2D Sampler0; + +in vec2 TexCoord; +out vec4 OutColor; + +void main() { + vec2 uv = TexCoord; + vec2 halfPixel = (0.5 / max(Resolution, vec2(1.0))) * Offset; + + vec4 sum = texture(Sampler0, uv + vec2(-halfPixel.x * 2.0, 0.0)); + sum += texture(Sampler0, uv + vec2(-halfPixel.x, halfPixel.y)) * 2.0; + sum += texture(Sampler0, uv + vec2(0.0, halfPixel.y * 2.0)); + sum += texture(Sampler0, uv + vec2(halfPixel.x, halfPixel.y)) * 2.0; + sum += texture(Sampler0, uv + vec2(halfPixel.x * 2.0, 0.0)); + sum += texture(Sampler0, uv + vec2(halfPixel.x, -halfPixel.y)) * 2.0; + sum += texture(Sampler0, uv + vec2(0.0, -halfPixel.y * 2.0)); + sum += texture(Sampler0, uv + vec2(-halfPixel.x, -halfPixel.y)) * 2.0; + + vec4 result = sum / 12.0; + OutColor = vec4(result.rgb * TintColor, result.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/hand_smoke/residual/data.json b/src/main/resources/assets/evolution/shaders/core/hand_smoke/residual/data.json new file mode 100644 index 0000000..5a138af --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hand_smoke/residual/data.json @@ -0,0 +1,8 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/hand_smoke/residual/fragment", + "samplers": [ + { "name": "Sampler0" }, + { "name": "Sampler1" } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/hand_smoke/residual/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/hand_smoke/residual/fragment.fsh new file mode 100644 index 0000000..f67c896 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hand_smoke/residual/fragment.fsh @@ -0,0 +1,58 @@ +#version 150 + +#moj_import + +uniform sampler2D Sampler0; +uniform sampler2D Sampler1; + +in vec2 TexCoord; +out vec4 OutColor; + +float hash(vec2 p) { + p = fract(p * vec2(123.34, 345.45)); + p += dot(p, p + 34.345); + return fract(p.x * p.y); +} + +float noise(vec2 p) { + vec2 i = floor(p); + vec2 f = fract(p); + f = f * f * (3.0 - 2.0 * f); + float a = hash(i); + float b = hash(i + vec2(1.0, 0.0)); + float c = hash(i + vec2(0.0, 1.0)); + float d = hash(i + vec2(1.0, 1.0)); + return mix(mix(a, b, f.x), mix(c, d, f.x), f.y); +} + +void main() { + vec2 texel = 1.0 / max(Resolution, vec2(1.0)); + float cur = texture(Sampler1, TexCoord).a; + + float t = Time * max(SmokeSpeed, 0.001); + float rise = SmokeLength; + float windAmt = SmokeWind; + + float sway = (sin(t * 1.7 + TexCoord.y * 6.0) * 0.6 + + (noise(vec2(TexCoord.x * 3.0, t * 0.8)) - 0.5) * 1.2) * windAmt; + + vec2 prevUv = TexCoord + SmokeCamShift; + prevUv.y -= rise; + prevUv.x += sway * texel.x * 6.0; + + float sp = 1.0 + rise * Resolution.y * 0.15; + float prev = texture(Sampler0, clamp(prevUv, 0.0, 1.0)).a * 0.5; + prev += texture(Sampler0, clamp(prevUv + vec2(texel.x * sp, 0.0), 0.0, 1.0)).a * 0.125; + prev += texture(Sampler0, clamp(prevUv - vec2(texel.x * sp, 0.0), 0.0, 1.0)).a * 0.125; + prev += texture(Sampler0, clamp(prevUv + vec2(0.0, texel.y * sp), 0.0, 1.0)).a * 0.125; + prev += texture(Sampler0, clamp(prevUv - vec2(0.0, texel.y * sp), 0.0, 1.0)).a * 0.125; + + vec2 e = step(vec2(0.0), prevUv) * step(prevUv, vec2(1.0)); + prev *= e.x * e.y; + + float decayed = prev * SmokeTrailFade; + float outA = max(cur, decayed); + if (outA < 0.004) outA = 0.0; + + OutColor = vec4(vec3(outA), outA); +} diff --git a/src/main/resources/assets/evolution/shaders/core/hand_smoke/trail/data.json b/src/main/resources/assets/evolution/shaders/core/hand_smoke/trail/data.json new file mode 100644 index 0000000..4881a62 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hand_smoke/trail/data.json @@ -0,0 +1,8 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/hand_smoke/trail/fragment", + "samplers": [ + { "name": "Sampler0" }, + { "name": "Sampler1" } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/hand_smoke/trail/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/hand_smoke/trail/fragment.fsh new file mode 100644 index 0000000..fdbe158 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hand_smoke/trail/fragment.fsh @@ -0,0 +1,171 @@ +#version 150 + +#moj_import + +uniform sampler2D Sampler0; +uniform sampler2D Sampler1; + +in vec2 TexCoord; +out vec4 OutColor; + +vec2 texelSize = vec2(0.0); + +float sampleMask(vec2 uv) { + return texture(Sampler1, clamp(uv, vec2(0.0), vec2(1.0))).a; +} + +float hash12(vec2 p) { + vec3 p3 = fract(vec3(p.xyx) * 0.1031); + p3 += dot(p3, p3.yzx + 33.33); + return fract((p3.x + p3.y) * p3.z); +} + +float noise(vec2 p) { + vec2 i = floor(p); + vec2 f = fract(p); + f = f * f * (3.0 - 2.0 * f); + + float a = hash12(i); + float b = hash12(i + vec2(1.0, 0.0)); + float c = hash12(i + vec2(0.0, 1.0)); + float d = hash12(i + vec2(1.0, 1.0)); + + return mix(mix(a, b, f.x), mix(c, d, f.x), f.y); +} + +float fbm(vec2 p) { + float v = 0.0; + float a = 0.5; + + for (int i = 0; i < 4; i++) { + v += noise(p) * a; + p = p * 2.04 + vec2(19.17, 7.31); + a *= 0.5; + } + + return v; +} + +vec3 vividColor(vec3 color) { + float peak = max(max(color.r, color.g), color.b); + if (peak < 0.05) return HandColor.rgb; + + vec3 vivid = color / max(peak, 0.20); + return clamp(mix(color, vivid, 0.36) * 1.05, 0.0, 1.0); +} + +void addSource(vec2 sourceUv, float weight, inout vec3 color, inout float alpha) { + float mask = sampleMask(sourceUv); + if (mask <= 0.001) return; + + vec3 sceneColor = texture(Sampler1, clamp(sourceUv, vec2(0.0), vec2(1.0))).rgb; + float sourceWeight = mask * weight; + color += vividColor(sceneColor) * sourceWeight; + alpha += sourceWeight; +} + +void main() { + vec2 texCoord = TexCoord; + texelSize = 1.0 / max(Resolution, vec2(1.0)); + + float topDistance = 1.0 - texCoord.y; + float topEdgeFade = smoothstep(0.012, 0.085, topDistance); + float intensityC = clamp(SmokeIntensity, 0.0, 1.5); + float speedC = clamp(SmokeSpeed, 0.35, 2.4); + float lengthC = clamp(SmokeLength, 0.1, 1.0); + float softness = clamp(SmokeTrailSoftness, 0.55, 2.0); + float blurRadius = clamp(SmokeTrailBlur, 0.45, 2.5); + float smokeC = clamp(SmokeAmount, 0.0, 0.8); + float activityC = clamp(SmokeActivity, 0.0, 1.0); + float fadeSetting = clamp(SmokeTrailFade, 0.55, 0.96); + float slashC = clamp(SmokeSlash, 0.0, 1.0); + float slashDirection = SmokeSlashDir < 0.0 ? -1.0 : 1.0; + float handMask = SmokeSwingHand == 0.0 + ? 0.0 + : (SmokeSwingHand > 0.0 + ? smoothstep(0.40, 0.58, texCoord.x) + : 1.0 - smoothstep(0.42, 0.60, texCoord.x)); + float slashReturn = smoothstep(0.20, 0.78, 1.0 - slashC); + vec2 slashAxis = normalize(mix(vec2(0.88 * slashDirection, -0.48), + vec2(-0.58 * slashDirection, 0.24), + slashReturn)); + vec2 slashNormal = vec2(-slashAxis.y, slashAxis.x); + + float n = fbm(texCoord * vec2(34.0, 29.0) + vec2(Time * 0.13 * speedC, -Time * 0.10 * speedC)); + vec2 curl = vec2( + fbm(texCoord * 28.0 + vec2(Time * 0.20 * speedC, 3.1)), + fbm(texCoord * 31.0 + vec2(8.4, -Time * 0.17 * speedC)) + ) - 0.5; + + vec2 prevUv = texCoord + SmokeCamShift; + prevUv += curl * texelSize * (1.9 + blurRadius * 1.35); + + float idle = (1.0 - activityC); + vec2 sway = vec2( + sin(Time * 0.85 * speedC), + cos(Time * 0.55 * speedC) * 0.32 + ); + prevUv += sway * texelSize * idle * (6.5 + blurRadius * 5.5 + lengthC * 4.0); + vec4 prev = texture(Sampler0, clamp(prevUv, vec2(0.0), vec2(1.0))); + vec2 edge = step(vec2(0.0), prevUv) * step(prevUv, vec2(1.0)); + prev *= edge.x * edge.y; + + float fade = mix(max(0.72, fadeSetting - 0.04), fadeSetting, min(softness, 1.8) / 1.8); + fade = mix(fade - activityC * 0.010, 0.955, slashC * handMask * 0.18); + prev.rgb *= fade; + prev.a *= fade; + prev *= topEdgeFade; + if (prev.a < 0.006) { + prev = vec4(0.0); + } + + vec3 sourceColor = vec3(0.0); + float sourceAlpha = 0.0; + + float spread = 2.2 + blurRadius * 2.85 + lengthC * 7.5; + for (int i = 0; i < 18; i++) { + float fi = float(i); + float angle = fi * 2.399963 + Time * (0.18 + speedC * 0.09) + n * 2.6; + vec2 dir = vec2(cos(angle), sin(angle)); + float dist = 1.1 + fi * spread / 7.2; + vec2 sourceUv = texCoord - dir * texelSize * dist - curl * texelSize * (2.0 + fi * 0.26); + float weight = (18.0 - fi) / 18.0; + addSource(sourceUv, weight, sourceColor, sourceAlpha); + } + + if (slashC > 0.001) { + float slashLength = 7.5 + blurRadius * 6.0 + lengthC * 12.0; + for (int i = 0; i < 26; i++) { + float t = float(i) / 25.0; + float arc = sin(t * 3.1415927); + float curve = t - 0.45; + vec2 slashOffset = slashAxis * texelSize * ((t - 0.18) * slashLength * 8.0); + slashOffset += slashNormal * texelSize * ((curve * curve * 30.0 - 4.5) * arc); + slashOffset += curl * texelSize * (1.4 + t * 2.0); + vec2 sourceUv = texCoord - slashOffset * (0.72 + slashC * 0.42); + float weight = slashC * handMask * arc * (1.55 - t * 0.45) * (1.00 + activityC * 0.55); + addSource(sourceUv, weight, sourceColor, sourceAlpha); + } + } + + float body = sampleMask(texCoord); + float outside = 1.0 - body * 0.97; + float wisps = mix(0.45, 1.16, fbm(texCoord * 104.0 + vec2(-Time * 0.34 * speedC, Time * 0.23 * speedC))); + + float newAlpha = smoothstep(0.022, 0.20, sourceAlpha / 3.6); + newAlpha *= outside * wisps; + newAlpha *= (0.22 + intensityC * 0.24 + smokeC * 0.30 + activityC * 0.10 + slashC * handMask * 0.28); + newAlpha *= topEdgeFade; + + vec3 newColor = sourceAlpha > 0.001 ? sourceColor / sourceAlpha : HandColor.rgb; + vec3 slashColor = clamp(mix(newColor, HandColor.rgb, 0.32) * (1.0 + slashC * handMask * 0.45), 0.0, 1.0); + newColor = mix(newColor, slashColor, slashC * handMask * 0.70); + vec3 outColor = mix(prev.rgb, newColor, clamp(newAlpha * (2.9 + slashC * 1.4), 0.0, 0.86)); + float outAlpha = clamp(prev.a + newAlpha * (1.0 - prev.a), 0.0, 0.82 + slashC * 0.08); + if (outAlpha < 0.005) { + outColor = vec3(0.0); + outAlpha = 0.0; + } + + OutColor = vec4(outColor, outAlpha); +} diff --git a/src/main/resources/assets/evolution/shaders/core/hitbox_glow_blur/data.json b/src/main/resources/assets/evolution/shaders/core/hitbox_glow_blur/data.json new file mode 100644 index 0000000..7e5d4fa --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hitbox_glow_blur/data.json @@ -0,0 +1,13 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/hitbox_glow_blur/fragment", + "samplers": [ + { "name": "Sampler0" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "BlurRadius", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "Offset", "type": "float", "count": 1, "values": [ 0.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/hitbox_glow_blur/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/hitbox_glow_blur/fragment.fsh new file mode 100644 index 0000000..4d9d4d1 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hitbox_glow_blur/fragment.fsh @@ -0,0 +1,78 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec2 TexCoord; +in vec4 FragColor; + +uniform sampler2D Sampler0; + +out vec4 OutColor; + +const int BLUR_STEPS = 24; +const float ALPHA_GAIN = 3.25; +const float SIGMA_FRACTION = 0.42; +const float MIN_WEIGHT_SUM = 0.0001; +const float MIN_SAMPLE_ALPHA = 0.0001; + +void main() { + vec2 texelSize = 1.0 / vec2(textureSize(Sampler0, 0)); + bool horizontalPass = Offset < 0.5; + vec2 axis = horizontalPass ? vec2(1.0, 0.0) : vec2(0.0, 1.0); + float stepSize = BlurRadius / float(BLUR_STEPS); + float sigma = max(BlurRadius * SIGMA_FRACTION, 1.0); + float gaussianDenom = 2.0 * sigma * sigma; + + vec3 colorSum = vec3(0.0); + float alphaSum = 0.0; + float weightSum = 0.0; + + // Center pixel + float centerWeight = 1.0; + vec4 smplCenter = texture(Sampler0, TexCoord); + colorSum += smplCenter.rgb * centerWeight; + alphaSum += smplCenter.a * centerWeight; + weightSum += centerWeight; + + // Bilinear optimized sampling (25 taps instead of 49) + for (int i = 1; i <= BLUR_STEPS; i += 2) { + float distancePx0 = float(i) * stepSize; + float distancePx1 = float(i + 1) * stepSize; + + float weight0 = exp(-(distancePx0 * distancePx0) / gaussianDenom); + float weight1 = exp(-(distancePx1 * distancePx1) / gaussianDenom); + + float combinedWeight = weight0 + weight1; + float offset = (distancePx0 * weight0 + distancePx1 * weight1) / combinedWeight; + + // Positive side + vec4 smplPos = texture(Sampler0, TexCoord + axis * offset * texelSize); + colorSum += smplPos.rgb * combinedWeight; + alphaSum += smplPos.a * combinedWeight; + weightSum += combinedWeight; + + // Negative side + vec4 smplNeg = texture(Sampler0, TexCoord - axis * offset * texelSize); + colorSum += smplNeg.rgb * combinedWeight; + alphaSum += smplNeg.a * combinedWeight; + weightSum += combinedWeight; + } + + vec3 finalRgb = (alphaSum > 0.0) ? (colorSum / alphaSum) : vec3(0.0); + + float coverage = alphaSum / max(weightSum, MIN_WEIGHT_SUM); + float radiusCompensation = max(1.0, sqrt(max(BlurRadius, 1.0))); + float finalAlpha = horizontalPass ? coverage : (1.0 - exp(-coverage * ALPHA_GAIN * radiusCompensation)); + finalAlpha = clamp(finalAlpha, 0.0, 1.0); + + vec4 finalColor = vec4(finalRgb, finalAlpha * FragColor.a); + + if (finalColor.a <= 0.0) { + discard; + } + + OutColor = finalColor; +} diff --git a/src/main/resources/assets/evolution/shaders/core/hitbox_glow_seed/data.json b/src/main/resources/assets/evolution/shaders/core/hitbox_glow_seed/data.json new file mode 100644 index 0000000..121fbcd --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hitbox_glow_seed/data.json @@ -0,0 +1,9 @@ +{ + "vertex": "evolution:core/hitbox_glow_seed/vertex", + "fragment": "evolution:core/hitbox_outline/fragment", + "samplers": [], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/hitbox_glow_seed/vertex.vsh b/src/main/resources/assets/evolution/shaders/core/hitbox_glow_seed/vertex.vsh new file mode 100644 index 0000000..36c4bab --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hitbox_glow_seed/vertex.vsh @@ -0,0 +1,11 @@ +#version 150 + +in vec3 Position; +in vec4 Color; + +out vec4 FragColor; + +void main() { + FragColor = Color; + gl_Position = vec4(Position, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/hitbox_outline/data.json b/src/main/resources/assets/evolution/shaders/core/hitbox_outline/data.json new file mode 100644 index 0000000..9fa9053 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hitbox_outline/data.json @@ -0,0 +1,9 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/hitbox_outline/fragment", + "samplers": [], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/hitbox_outline/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/hitbox_outline/fragment.fsh new file mode 100644 index 0000000..a0deb0a --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/hitbox_outline/fragment.fsh @@ -0,0 +1,11 @@ +#version 150 + +#moj_import +#moj_import + +in vec4 FragColor; +out vec4 OutColor; + +void main() { + OutColor = FragColor * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/kawase_down/data.json b/src/main/resources/assets/evolution/shaders/core/kawase_down/data.json new file mode 100644 index 0000000..679a976 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/kawase_down/data.json @@ -0,0 +1,18 @@ +{ + "vertex": "evolution:core/kawase_down/vertex", + "fragment": "evolution:core/kawase_down/fragment", + "samplers": [ + { + "name": "Sampler0" + } + ], + "uniforms": [ + { "name": "ModelViewMat","type": "matrix4x4", "count": 16,"values": [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0] }, + { "name": "Resolution", "type": "float", "count": 2, "values": [1.0, 1.0] }, + { "name": "Offset", "type": "float", "count": 1, "values": [1.0] }, + { "name": "Saturation", "type": "float", "count": 1, "values": [1.0] }, + { "name": "TintIntensity", "type": "float", "count": 1, "values": [0.0] }, + { "name": "TintColor", "type": "float", "count": 3, "values": [1.0, 1.0, 1.0] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/kawase_down/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/kawase_down/fragment.fsh new file mode 100644 index 0000000..98ec990 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/kawase_down/fragment.fsh @@ -0,0 +1,35 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec2 TexCoord; +in vec4 FragColor; + +uniform sampler2D Sampler0; + +out vec4 OutColor; + +vec3 adjustSaturation(vec3 color, float saturation) { + float gray = dot(color, vec3(0.299, 0.587, 0.114)); + return mix(vec3(gray), color, saturation); +} + +void main() { + vec2 uv = TexCoord; + vec2 halfpixel = Resolution * 0.5 * Offset; + + vec3 sum = texture(Sampler0, uv).rgb * 4.0; + sum += texture(Sampler0, uv - halfpixel).rgb; + sum += texture(Sampler0, uv + halfpixel).rgb; + sum += texture(Sampler0, uv + vec2(halfpixel.x, -halfpixel.y)).rgb; + sum += texture(Sampler0, uv - vec2(halfpixel.x, -halfpixel.y)).rgb; + + vec3 color = sum / 8.0; + color = adjustSaturation(color, Saturation); + color = mix(color, TintColor, TintIntensity); + + OutColor = vec4(color, 1.0) * FragColor; +} diff --git a/src/main/resources/assets/evolution/shaders/core/kawase_down/vertex.vsh b/src/main/resources/assets/evolution/shaders/core/kawase_down/vertex.vsh new file mode 100644 index 0000000..5832dbe --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/kawase_down/vertex.vsh @@ -0,0 +1,20 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec3 Position; +in vec2 UV0; +in vec4 Color; + +out vec2 FragCoord; +out vec2 TexCoord; +out vec4 FragColor; + +void main() { + gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0); + FragCoord = rvertexcoord(gl_VertexID); + TexCoord = UV0; + FragColor = Color; +} diff --git a/src/main/resources/assets/evolution/shaders/core/kawase_up/data.json b/src/main/resources/assets/evolution/shaders/core/kawase_up/data.json new file mode 100644 index 0000000..3f85f76 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/kawase_up/data.json @@ -0,0 +1,18 @@ +{ + "vertex": "evolution:core/kawase_up/vertex", + "fragment": "evolution:core/kawase_up/fragment", + "samplers": [ + { + "name": "Sampler0" + } + ], + "uniforms": [ + { "name": "ModelViewMat","type": "matrix4x4", "count": 16,"values": [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0] }, + { "name": "Resolution", "type": "float", "count": 2, "values": [1.0, 1.0] }, + { "name": "Offset", "type": "float", "count": 1, "values": [1.0] }, + { "name": "Saturation", "type": "float", "count": 1, "values": [1.0] }, + { "name": "TintIntensity", "type": "float", "count": 1, "values": [0.0] }, + { "name": "TintColor", "type": "float", "count": 3, "values": [1.0, 1.0, 1.0] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/kawase_up/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/kawase_up/fragment.fsh new file mode 100644 index 0000000..fb4d3c1 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/kawase_up/fragment.fsh @@ -0,0 +1,38 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec2 TexCoord; +in vec4 FragColor; + +uniform sampler2D Sampler0; + +out vec4 OutColor; + +vec3 adjustSaturation(vec3 color, float saturation) { + float gray = dot(color, vec3(0.299, 0.587, 0.114)); + return mix(vec3(gray), color, saturation); +} + +void main() { + vec2 uv = TexCoord; + vec2 halfpixel = Resolution * 0.5 * Offset; + + vec3 sum = texture(Sampler0, uv + vec2(-halfpixel.x * 2.0, 0.0)).rgb; + sum += texture(Sampler0, uv + vec2(-halfpixel.x, halfpixel.y)).rgb * 2.0; + sum += texture(Sampler0, uv + vec2(0.0, halfpixel.y * 2.0)).rgb; + sum += texture(Sampler0, uv + vec2(halfpixel.x, halfpixel.y)).rgb * 2.0; + sum += texture(Sampler0, uv + vec2(halfpixel.x * 2.0, 0.0)).rgb; + sum += texture(Sampler0, uv + vec2(halfpixel.x, -halfpixel.y)).rgb * 2.0; + sum += texture(Sampler0, uv + vec2(0.0, -halfpixel.y * 2.0)).rgb; + sum += texture(Sampler0, uv + vec2(-halfpixel.x, -halfpixel.y)).rgb * 2.0; + + vec3 color = sum / 12.0; + color = adjustSaturation(color, Saturation); + color = mix(color, TintColor, TintIntensity); + + OutColor = vec4(color, 1.0) * FragColor; +} diff --git a/src/main/resources/assets/evolution/shaders/core/kawase_up/vertex.vsh b/src/main/resources/assets/evolution/shaders/core/kawase_up/vertex.vsh new file mode 100644 index 0000000..5832dbe --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/kawase_up/vertex.vsh @@ -0,0 +1,20 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec3 Position; +in vec2 UV0; +in vec4 Color; + +out vec2 FragCoord; +out vec2 TexCoord; +out vec4 FragColor; + +void main() { + gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0); + FragCoord = rvertexcoord(gl_VertexID); + TexCoord = UV0; + FragColor = Color; +} diff --git a/src/main/resources/assets/evolution/shaders/core/liquid_glass/data.json b/src/main/resources/assets/evolution/shaders/core/liquid_glass/data.json new file mode 100644 index 0000000..7a4bb9c --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/liquid_glass/data.json @@ -0,0 +1,27 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/liquid_glass/fragment", + "samplers": [ + { "name": "Sampler0" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "Refraction", "type": "float", "count": 1, "values": [ 0.5 ] }, + { "name": "BevelDepth", "type": "float", "count": 1, "values": [ 0.4 ] }, + { "name": "BevelWidth", "type": "float", "count": 1, "values": [ 0.05 ] }, + { "name": "TiltX", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "TiltY", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "Frost", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "Tint", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "MaskTopY", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskBottomY", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskFadeHeight", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "MaskLeftX", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskRightX", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskFadeWidth", "type": "float", "count": 1, "values": [ 0.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/liquid_glass/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/liquid_glass/fragment.fsh new file mode 100644 index 0000000..35218b2 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/liquid_glass/fragment.fsh @@ -0,0 +1,171 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec2 TexCoord; +in vec4 FragColor; + +uniform sampler2D Sampler0; + +out vec4 OutColor; + +const float TINT_STRENGTH = 0.85; +const vec3 LUMA_WEIGHTS = vec3(0.2126, 0.7152, 0.0722); +const float DARK_BAND = 0.16; +const float LIGHT_BAND = 0.88; +const float DARK_BAND_RANGE = 1.45; +const float LIGHT_BAND_RANGE = 1.3; +const float SATURATION_DROP = 0.28; +const float LUMA_EPSILON = 0.0015; +const float SPECULAR_SHARPNESS = 3.0; +const float SPECULAR_BAND = 0.55; +const float DISPERSION_SCALE = 0.006; +const float RIM_BASE = 0.05; +const float DEPTH_INNER_SHADOW = 0.18; +const float DITHER_STRENGTH = 0.6; +const float DITHER_QUANT = 255.0; + +float random(vec2 st) { + return fract(sin(dot(st.xy, vec2(12.9898,78.233))) * 43758.5453123); +} + +float luma(vec3 color) { + return dot(color, LUMA_WEIGHTS); +} + +float triangularDither(vec2 coord) { + float a = random(coord); + float b = random(coord + vec2(17.13, 41.77)); + return (a + b - 1.0) / DITHER_QUANT; +} + +void main() { + vec2 center = Size * 0.5; + float d = roundedBoxSDF(center - (FragCoord * Size), center - 1.0, Radius); + float distFromEdge = max(0.0, -d); + + float bevel_px = max(BevelWidth * min(Size.x, Size.y), 3.0); + float bevel = 1.0 - smoothstep(0.0, bevel_px, distFromEdge); + + float centerProgress = smoothstep(0.0, min(Size.x, Size.y) * 0.45, distFromEdge); + float refractionStrength = bevel * (1.0 - centerProgress * 0.8) * Refraction * 0.25; + + vec2 p = FragCoord - 0.5; + vec2 dir = length(p) > 0.001 ? normalize(p) : vec2(0.0); + vec2 offset = dir * refractionStrength; + + float tiltRefractionScale = 0.03; + vec2 tiltOffset = vec2(tan(radians(TiltY)), -tan(radians(TiltX))) * tiltRefractionScale; + + vec2 span = max(abs(GlassSpan), vec2(1e-5)); + vec2 screenOffset = (offset - tiltOffset) * span; + vec2 sampleUV = TexCoord + screenOffset; + + vec4 baseCol = texture(Sampler0, TexCoord); + vec4 refrCol; + + vec2 texel = 1.0 / vec2(textureSize(Sampler0, 0)); + vec2 caOffset = dir * (bevel * (0.003 + GlassDispersion * DISPERSION_SCALE) * Refraction) * span; + + if (Frost > 0.001) { + float frostMod = mix(1.0, 0.4, centerProgress); + float blurRadius = Frost * 10.0 * frostMod; + vec4 sum = vec4(0.0); + const int SAMPLES = 12; + float goldenAngle = 2.39996323; + + for (int i = 0; i < SAMPLES; i++) { + float fi = float(i); + float dist = sqrt((fi + 0.5) / float(SAMPLES)) * blurRadius; + float angle = fi * goldenAngle + random(FragCoord) * 6.283185; + vec2 offset_blur = vec2(cos(angle), sin(angle)) * texel * dist; + vec2 uv = sampleUV + offset_blur; + float r = texture(Sampler0, uv + caOffset).r; + float g = texture(Sampler0, uv).g; + float b = texture(Sampler0, uv - caOffset).b; + float a = texture(Sampler0, uv).a; + sum += vec4(r, g, b, a); + } + refrCol = sum / float(SAMPLES); + } else { + float r = texture(Sampler0, sampleUV + caOffset).r; + float g = texture(Sampler0, sampleUV).g; + float b = texture(Sampler0, sampleUV - caOffset).b; + float a = texture(Sampler0, sampleUV).a; + refrCol = vec4(r, g, b, a); + } + + if (refrCol.a < 0.1) { + refrCol = baseCol; + } + + refrCol.a = 1.0; + baseCol.a = 1.0; + + float baseLuma = luma(refrCol.rgb); + refrCol.rgb = mix(vec3(baseLuma), refrCol.rgb, 1.03); + + vec4 finalColor = vec4(refrCol.rgb * FragColor.rgb, FragColor.a); + + finalColor.rgb = mix(finalColor.rgb, vec3(step(0.0, Tint)), abs(Tint) * TINT_STRENGTH); + + if (GlassContrast > 0.0) { + // Compress the backdrop toward a readability band, but never reorder it. The output + // luminance is band + (L - band) * slope, which is strictly increasing in L, so a darker + // backdrop can never come out brighter than a lighter one. The previous formulation + // blended an additive lift against a clamped multiplicative gain and was non-monotonic + // below the knee - on a light theme that inverted every dark region behind the glass. + float backdropLuma = luma(finalColor.rgb); + float band = GlassTextLuma > 0.5 ? DARK_BAND : LIGHT_BAND; + float bandRange = GlassTextLuma > 0.5 ? DARK_BAND_RANGE : LIGHT_BAND_RANGE; + float slope = (1.0 - GlassContrast) * bandRange; + float target = clamp(band + (backdropLuma - band) * slope, 0.0, 1.0); + + // Chroma carries no luminance, so scaling it cannot disturb the ordering above. It is + // attenuated only where the luminance was pulled down, which keeps hue without blowout. + vec3 chroma = finalColor.rgb - vec3(backdropLuma); + float chromaScale = (1.0 - GlassContrast * SATURATION_DROP) + * min(1.0, target / max(backdropLuma, LUMA_EPSILON)); + finalColor.rgb = max(vec3(target) + chroma * chromaScale, vec3(0.0)); + } + + if (GlassDepth > 0.0) { + float innerShadow = pow(bevel, 1.6) * GlassDepth * DEPTH_INNER_SHADOW; + finalColor.rgb *= 1.0 - innerShadow; + } + + float bevelRim = pow(bevel, 2.5) * (1.0 - bevel * 0.5); + float glassRim = bevelRim * RIM_BASE * GlassRimGain; + + finalColor.rgb += vec3(glassRim); + + if (GlassSpecular > 0.0) { + vec2 lightDir = vec2(GlassLightX, GlassLightY); + float lightLength = length(lightDir); + if (lightLength > 0.001) { + lightDir /= lightLength; + float facing = dot(dir, lightDir); + float highlight = pow(max(facing, 0.0), SPECULAR_SHARPNESS); + float rimBand = pow(bevel, SPECULAR_SHARPNESS) * (1.0 - bevel * SPECULAR_BAND); + float bounce = pow(max(-facing, 0.0), SPECULAR_SHARPNESS) * 0.35; + finalColor.rgb += vec3((highlight + bounce) * rimBand * GlassSpecular); + } + } + + finalColor.rgb += vec3(triangularDither(FragCoord * Size) * DITHER_STRENGTH); + + float alpha = 1.0 - smoothstep(0.0, 1.0, d); + finalColor.a *= alpha; + + finalColor.a = applyAlphaMask(finalColor.a); + + if (finalColor.a <= 0.0) { + discard; + } + + OutColor = finalColor; +} diff --git a/src/main/resources/assets/evolution/shaders/core/loading/data.json b/src/main/resources/assets/evolution/shaders/core/loading/data.json new file mode 100644 index 0000000..b7d08cc --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/loading/data.json @@ -0,0 +1,16 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/loading/fragment", + "samplers": [], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "ColorModulator", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "Smoothness", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "Progress", "type": "float", "count": 1, "values": [0.0] }, + { "name": "Fade", "type": "float", "count": 1, "values": [0.08] }, + { "name": "StripeWidth", "type": "float", "count": 1, "values": [0.20] } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/shaders/core/loading/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/loading/fragment.fsh new file mode 100644 index 0000000..40c8332 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/loading/fragment.fsh @@ -0,0 +1,30 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; + +out vec4 OutColor; + +void main() { + vec2 center = Size * 0.5; + float distance = roundedBoxSDF(center - (FragCoord * Size), center, Radius); + float alpha = 1.0 - smoothstep(-Smoothness.x, 0.0, distance); + + float diag = (FragCoord.x + FragCoord.y) * 0.5; + float stripeWidth = StripeWidth; + float fade = Fade; + + float stripeMask = smoothstep(Progress - stripeWidth * 0.5 - fade, Progress - stripeWidth * 0.5, diag) + * (1.0 - smoothstep(Progress + stripeWidth * 0.5, Progress + stripeWidth * 0.5 + fade, diag)); + + vec4 stripeColor = FragColor * ColorModulator; + + vec4 finalColor = vec4(stripeColor.rgb, stripeColor.a * alpha * stripeMask); + + if (finalColor.a < 0.01) discard; + OutColor = finalColor; +} diff --git a/src/main/resources/assets/evolution/shaders/core/lyrics_font/data.json b/src/main/resources/assets/evolution/shaders/core/lyrics_font/data.json new file mode 100644 index 0000000..d923f41 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/lyrics_font/data.json @@ -0,0 +1,269 @@ +{ + "vertex": "evolution:core/lyrics_font/vertex", + "fragment": "evolution:core/lyrics_font/fragment", + "samplers": [ + { + "name": "Sampler0" + } + ], + "uniforms": [ + { + "name": "ModelViewMat", + "type": "matrix4x4", + "count": 16, + "values": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0 + ] + }, + { + "name": "ProjMat", + "type": "matrix4x4", + "count": 16, + "values": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0 + ] + }, + { + "name": "Range", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "Thickness", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "Smoothness", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "Outline", + "type": "int", + "count": 1, + "values": [ + 0 + ] + }, + { + "name": "OutlineThickness", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "OutlineColor", + "type": "float", + "count": 4, + "values": [ + 0.0, + 0.0, + 0.0, + 0.0 + ] + }, + { + "name": "EnableFadeout", + "type": "int", + "count": 1, + "values": [ + 0 + ] + }, + { + "name": "FadeoutStart", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "FadeoutEnd", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "MaxWidth", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "TextPosX", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "ColorModulator", + "type": "float", + "count": 4, + "values": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + { + "name": "MaskTopY", + "type": "float", + "count": 1, + "values": [ + -1.0 + ] + }, + { + "name": "MaskBottomY", + "type": "float", + "count": 1, + "values": [ + -1.0 + ] + }, + { + "name": "MaskFadeHeight", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "GlowRadius", + "type": "float", + "count": 1, + "values": [ + 1.0 + ] + }, + { + "name": "GlowIntensity", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "GlowColor", + "type": "float", + "count": 4, + "values": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + { + "name": "Progress", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "Fade", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "Time", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "Offset", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "TopLeftColor", + "type": "float", + "count": 4, + "values": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + { + "name": "Saturation", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + }, + { + "name": "TintIntensity", + "type": "float", + "count": 1, + "values": [ + 0.0 + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/shaders/core/lyrics_font/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/lyrics_font/fragment.fsh new file mode 100644 index 0000000..91d7815 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/lyrics_font/fragment.fsh @@ -0,0 +1,123 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec2 TexCoord; +in vec4 FragColor; +in vec2 GlobalPos; + +uniform sampler2D Sampler0; + +out vec4 OutColor; + +const float MTSDF_ALPHA_MIX = 0.28; +const float EDGE_GAMMA = 0.8; +const float MAX_SOFTNESS = 9.0; +const float NOISE_FREQUENCY = 1.35; +const float REVEAL_SWEEP_WEIGHT = 0.62; +const float REVEAL_NOISE_WEIGHT = 0.38; +const float REVEAL_OVERSHOOT = 1.18; +const float REVEAL_LEAD = 0.09; +const float REVEAL_EDGE_WIDTH = 0.085; +const float EXIT_EDGE_WIDTH = 0.07; +const float EXIT_DRIFT = 0.45; +const float SHIMMER_SPEED = 0.55; +const float SHIMMER_WIDTH = 0.16; +const float SHIMMER_GAIN = 0.35; +const float SHIMMER_SLANT = 0.035; +const float GLOW_FIELD_SCALE = 2.0; +const float GLOW_SHAPE_BASE = 6.0; +const float GLOW_MIN_RADIUS = 0.25; +const float EMBER_GAIN = 1.6; +const float EMBER_LIFT = 0.35; +const float ALPHA_CUTOFF = 0.004; +const float SHADOW_INNER = -0.24; +const float SHADOW_OUTER = 0.05; +const float SHADOW_POWER = 1.4; +const float SUNG_TINT = 0.62; +const float SUNG_LIFT = 0.18; +const float FILL_EDGE_WIDTH = 0.045; +const float FILL_EDGE_GAIN = 0.9; +const float GRADIENT_TINT = 0.75; +const float GRADIENT_WAVE_SPEED = 0.35; + +float median(vec3 color) { + return max(min(color.r, color.g), min(max(color.r, color.g), color.b)); +} + +void main() { + vec4 sample = texture(Sampler0, TexCoord); + float dist = mix(median(sample.rgb), sample.a, MTSDF_ALPHA_MIX) - 0.5 + Thickness; + vec2 unitRange = vec2(BlurRadius) / vec2(textureSize(Sampler0, 0)); + vec2 screenTexSize = vec2(1.0) / fwidth(TexCoord); + float screenPxRange = max(0.5 * dot(unitRange, screenTexSize), 1.0); + + float reveal = clamp(Progress, 0.0, 1.0); + float leave = clamp(Fade, 0.0, 1.0); + float glyphScale = max(Offset, 1.0); + vec2 local = vec2(GlobalPos.x - TextPosX, GlobalPos.y) / glyphScale; + float along = clamp((GlobalPos.x - TextPosX) / max(MaxWidth, 1.0), 0.0, 1.0); + + float grain = fbm(local * NOISE_FREQUENCY + vec2(TopLeftColor.a * 17.0, 0.0)); + float exitGrain = fbm(local * NOISE_FREQUENCY * 1.7 - vec2(0.0, Time * EXIT_DRIFT)); + + float front = reveal * REVEAL_OVERSHOOT - REVEAL_LEAD; + float threshold = along * REVEAL_SWEEP_WEIGHT + grain * REVEAL_NOISE_WEIGHT; + float revealMask = smoothstep(threshold - REVEAL_EDGE_WIDTH, threshold, front); + float revealEdge = revealMask * (1.0 - smoothstep(threshold, threshold + REVEAL_EDGE_WIDTH * 2.0, front)); + revealEdge *= 1.0 - reveal; + + float exitMask = smoothstep(leave - EXIT_EDGE_WIDTH, leave, exitGrain); + float exitEdge = exitMask * (1.0 - smoothstep(leave, leave + EXIT_EDGE_WIDTH * 2.0, exitGrain)); + exitEdge *= step(0.001, leave); + + float visible = revealMask * exitMask; + vec3 accent = TopLeftColor.rgb; + + if (StripeWidth > 0.5) { + float shade = pow(smoothstep(SHADOW_INNER, SHADOW_OUTER, dist), SHADOW_POWER); + float shadeAlpha = shade * GlowIntensity * visible * FragColor.a; + if (shadeAlpha <= ALPHA_CUTOFF) { + discard; + } + OutColor = vec4(FragColor.rgb, shadeAlpha) * ColorModulator; + return; + } + + float softness = Smoothness.x * mix(MAX_SOFTNESS, 1.0, smoothstep(0.0, 1.0, reveal)); + float alpha = pow(smoothstep(-softness, softness, dist * screenPxRange), EDGE_GAMMA); + + float band = fract(Time * SHIMMER_SPEED - along - local.y * SHIMMER_SLANT); + float shimmer = smoothstep(0.0, SHIMMER_WIDTH, band) * (1.0 - smoothstep(SHIMMER_WIDTH, SHIMMER_WIDTH * 2.0, band)); + + float gradientWave = 0.5 + 0.5 * sin((along - Time * GRADIENT_WAVE_SPEED) * 3.14159); + vec3 base = mix(FragColor.rgb, accent + vec3(0.12), TintIntensity * GRADIENT_TINT * gradientWave); + + float sung = clamp(Saturation, 0.0, 1.0); + float filled = step(along, sung) * step(0.001, sung); + vec3 sungColor = mix(base, accent + vec3(SUNG_LIFT), SUNG_TINT); + base = mix(base, sungColor, filled); + float fillEdge = (1.0 - smoothstep(0.0, FILL_EDGE_WIDTH, abs(along - sung))) * step(0.001, sung) * step(sung, 0.999); + base += (accent + vec3(0.5)) * fillEdge * FILL_EDGE_GAIN; + + base += accent * shimmer * SHIMMER_GAIN; + float ember = clamp((revealEdge + exitEdge) * EMBER_GAIN, 0.0, 1.0); + vec3 rgb = mix(base, accent + vec3(EMBER_LIFT), ember); + + float bodyAlpha = alpha * visible; + float glow = 0.0; + if (GlowIntensity > 0.0) { + float outside = clamp(-dist * GLOW_FIELD_SCALE, 0.0, 1.0); + float shape = GLOW_SHAPE_BASE / max(GlowRadius, GLOW_MIN_RADIUS); + glow = pow(1.0 - outside, shape) * GlowIntensity * GlowColor.a * visible; + rgb = mix(GlowColor.rgb, rgb, alpha); + } + + float outAlpha = max(bodyAlpha, glow) * FragColor.a; + if (outAlpha <= ALPHA_CUTOFF) { + discard; + } + OutColor = vec4(rgb, outAlpha) * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/lyrics_font/vertex.vsh b/src/main/resources/assets/evolution/shaders/core/lyrics_font/vertex.vsh new file mode 100644 index 0000000..b53db7e --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/lyrics_font/vertex.vsh @@ -0,0 +1,20 @@ +#version 150 + +#moj_import +#moj_import + +in vec3 Position; +in vec2 UV0; +in vec4 Color; + +out vec2 TexCoord; +out vec4 FragColor; +out vec2 GlobalPos; + +void main() { + TexCoord = UV0; + FragColor = Color; + GlobalPos = Position.xy; + + gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/melee_holy.fsh b/src/main/resources/assets/evolution/shaders/core/melee_holy.fsh new file mode 100644 index 0000000..e2eee63 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/melee_holy.fsh @@ -0,0 +1,94 @@ +#version 330 + +#moj_import + +uniform sampler2D Sampler0; + +in vec4 vertexColor; +in vec2 texCoord0; +in vec3 viewNormal; +in vec3 viewPosition; + +out vec4 fragColor; + +const int NUM_OCTAVES = 4; +const float ALPHA_CUTOUT = 0.1; +const float TICKS_PER_WRAP = 24000.0; +const float TICKS_PER_SECOND = 20.0; +const float TIME_WRAP_SECONDS = 100.0; +const float FIELD_SCALE = 8.0; +const float FIELD_DRIFT = 0.1; +const float GRADIENT_CURVE = 1.6; +const float OUTPUT_GAIN = 1.9; +const vec3 OUTPUT_FLOOR = vec3(0.10, 0.0, 0.09); +const vec3 LUMINANCE_WEIGHTS = vec3(0.299, 0.587, 0.114); +const float DETAIL_FLOOR = 0.25; +const float DETAIL_GAIN = 1.05; + +const float MIN_NORMAL_LENGTH = 0.0001; +const float FRESNEL_F0 = 0.04; +const float FRESNEL_POWER = 5.0; +const float FRESNEL_FADE_START = 0.05; +const float FRESNEL_FADE_END = 0.7; +const float FRESNEL_STRENGTH = 0.5; +const float FRESNEL_TINT_MIX = 0.35; + +const vec3 TONE_LOW = vec3(126.0 / 255.0, 0.0, 97.0 / 255.0); +const vec3 TONE_HIGH = vec3(173.0 / 255.0, 0.0, 161.4 / 255.0); +const vec3 SHADE_LOW = vec3(0.2, 0.0, 0.0); +const vec3 SHADE_HIGH = vec3(164.0 / 255.0, 1.0 / 255.0, 214.4 / 255.0); +const vec3 VEIN_LOW = vec3(0.1); +const vec3 VEIN_HIGH = vec3(0.9); + +float holyRand(vec2 n) { + return fract(cos(dot(n, vec2(12.9898, 4.1414))) * 43758.5453); +} + +float holyNoise(vec2 n) { + const vec2 d = vec2(0.0, 1.0); + vec2 b = floor(n); + vec2 f = smoothstep(vec2(0.0), vec2(1.0), fract(n)); + return mix(mix(holyRand(b), holyRand(b + d.yx), f.x), mix(holyRand(b + d.xy), holyRand(b + d.yy), f.x), f.y); +} + +float holyFbm(vec2 n) { + float total = 0.0; + float amplitude = 1.6; + for (int i = 0; i < NUM_OCTAVES; i++) { + total += holyNoise(n) * amplitude; + n += n; + amplitude *= 0.5; + } + return total; +} + +void main() { + vec4 base = texture(Sampler0, texCoord0); + if (base.a < ALPHA_CUTOUT) { + discard; + } + + float time = mod(GameTime * TICKS_PER_WRAP / TICKS_PER_SECOND, TIME_WRAP_SECONDS); + vec2 fragCoord = gl_FragCoord.xy; + + vec2 p = fragCoord * FIELD_SCALE / ScreenSize.xx; + float q = holyFbm(p - time * FIELD_DRIFT); + vec2 r = vec2(holyFbm(p + q + time - p.x - p.y), holyFbm(p + q - time)); + vec3 c = mix(TONE_LOW, TONE_HIGH, holyFbm(p + r)) + mix(SHADE_LOW, SHADE_HIGH, r.y) - mix(VEIN_LOW, VEIN_HIGH, r.x); + + float grad = fragCoord.y / ScreenSize.y; + vec3 field = c * cos(GRADIENT_CURVE * grad) * (1.0 - grad); + field = max(field, vec3(0.0)) * OUTPUT_GAIN + OUTPUT_FLOOR; + + float detail = dot(base.rgb, LUMINANCE_WEIGHTS); + vec3 color = field * (DETAIL_FLOOR + detail * DETAIL_GAIN); + + vec3 normal = viewNormal / max(length(viewNormal), MIN_NORMAL_LENGTH); + vec3 view = normalize(-viewPosition); + float cosTheta = clamp(abs(dot(normal, view)), 0.0, 1.0); + float fresnel = FRESNEL_F0 + (1.0 - FRESNEL_F0) * pow(1.0 - cosTheta, FRESNEL_POWER); + float edge = smoothstep(FRESNEL_FADE_START, FRESNEL_FADE_END, fresnel); + color += mix(vec3(1.0), field, FRESNEL_TINT_MIX) * edge * FRESNEL_STRENGTH; + + fragColor = vec4(clamp(color, 0.0, 1.0), base.a * vertexColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/melee_holy.vsh b/src/main/resources/assets/evolution/shaders/core/melee_holy.vsh new file mode 100644 index 0000000..58c7adc --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/melee_holy.vsh @@ -0,0 +1,24 @@ +#version 330 + +#moj_import +#moj_import + +in vec3 Position; +in vec4 Color; +in vec2 UV0; +in vec3 Normal; + +out vec4 vertexColor; +out vec2 texCoord0; +out vec3 viewNormal; +out vec3 viewPosition; + +void main() { + vec4 view = ModelViewMat * vec4(Position, 1.0); + gl_Position = ProjMat * view; + + viewPosition = view.xyz; + viewNormal = mat3(ModelViewMat) * Normal; + vertexColor = Color * ColorModulator; + texCoord0 = UV0; +} diff --git a/src/main/resources/assets/evolution/shaders/core/menu_backdrop/data.json b/src/main/resources/assets/evolution/shaders/core/menu_backdrop/data.json new file mode 100644 index 0000000..5815c60 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/menu_backdrop/data.json @@ -0,0 +1,20 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/menu_backdrop/fragment", + "samplers": [], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ColorModulator", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "Smoothness", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "Resolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "SweepOrigin", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Backdrop", "type": "float", "count": 4, "values": [ 0.0, 1.0, 300.0, 1.0 ] }, + { "name": "TopLeftColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "BottomLeftColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "TopRightColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/menu_backdrop/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/menu_backdrop/fragment.fsh new file mode 100644 index 0000000..457b59d --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/menu_backdrop/fragment.fsh @@ -0,0 +1,58 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; + +out vec4 OutColor; + +const float EMBER_MENU_INTENSITY = 1.0; +const float LOOP_MIN = 1.0; +const float MIN_EXTENT = 1.0; +const float ALPHA_CUTOFF = 0.004; +const float DITHER_STRENGTH = 1.5 / 255.0; +const vec2 DITHER_SEED = vec2(0.7, 0.31); + +void main() { + float intensity = Backdrop.y; + if (intensity <= 0.0) { + discard; + } + + vec2 center = Size * 0.5; + float shapeDistance = roundedBoxSDF(center - (FragCoord * Size), center, Radius); + float shape = 1.0 - smoothstep(-Smoothness.x, 0.0, shapeDistance); + if (shape <= 0.0) { + discard; + } + + vec2 resolution = max(Resolution, vec2(MIN_EXTENT)); + vec2 uv = (SweepOrigin + FragCoord * Size) / resolution; + float aspect = resolution.y / resolution.x; + + float loop = max(Backdrop.z, LOOP_MIN); + float cycle = mod(Time, loop) / loop; + float mode = Backdrop.x; + + vec3 color = menuPattern(mode, uv, aspect, cycle, EMBER_MENU_INTENSITY, EMBER_SWIRL_ITERATIONS, + emberScreenFrame(uv, aspect)); + if (abs(mode - MODE_EMBER) < MODE_EPSILON) { + color *= emberVignette(uv); + } else { + color *= vignetteAt(uv, menuVignetteStrength(mode)); + } + + color += (hash12(gl_FragCoord.xy + DITHER_SEED) - 0.5) * DITHER_STRENGTH; + + float alpha = FragColor.a * shape * intensity; + if (alpha < ALPHA_CUTOFF) { + discard; + } + + OutColor = vec4(clamp(color, 0.0, 1.0), alpha) * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/motionblur/blur.fsh b/src/main/resources/assets/evolution/shaders/core/motionblur/blur.fsh new file mode 100644 index 0000000..5741020 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/motionblur/blur.fsh @@ -0,0 +1,117 @@ +#version 150 + +uniform sampler2D SourceTex; +uniform sampler2D DepthTex; +uniform sampler2D HistoryTex; + +layout(std140) uniform BlurParams { + mat4 inverseViewProjection; + mat4 previousViewProjection; + vec4 cameraDelta; + vec4 blurControls; + vec4 screenParams; + vec4 depthParams; + vec4 handParams; +}; + +in vec2 texCoord; +out vec4 fragColor; + +const float MIN_BLUR_LENGTH = 0.00015; +const float MIN_SAMPLES = 4.0; +const float SAMPLES_PER_PIXEL = 0.5; +const float HOMOGENEOUS_EPSILON = 1.0e-7; +const float FLAG_LIMIT = 0.5; +const float NDC_SCALE = 2.0; +const float NDC_BIAS = 1.0; +const float UV_SCALE = 0.5; +const float UV_BIAS = 0.5; +const float JITTER_SCALE = 52.9829189; +const float JITTER_CENTER = 0.5; +const vec2 JITTER_WEIGHTS = vec2(0.06711056, 0.00583715); +const int DILATE_RADIUS = 1; +const float GUARD_FULL = 1.0; +const float GUARD_INFINITE_DISTANCE = 1.0e6; + +float closestDepth(vec2 uv) { + float towardCamera = depthParams.w < FLAG_LIMIT ? 1.0 : -1.0; + float closest = texture(DepthTex, uv).r * towardCamera; + for (int x = -DILATE_RADIUS; x <= DILATE_RADIUS; x++) { + for (int y = -DILATE_RADIUS; y <= DILATE_RADIUS; y++) { + closest = max(closest, texture(DepthTex, uv + vec2(x, y) * screenParams.xy).r * towardCamera); + } + } + return closest * towardCamera; +} + +vec2 screenVelocity(vec2 uv, float depth) { + float clipDepth = depth * depthParams.y + depthParams.z; + vec4 current = inverseViewProjection * vec4(uv * NDC_SCALE - NDC_BIAS, clipDepth, 1.0); + vec4 previous = abs(current.w) < HOMOGENEOUS_EPSILON + ? previousViewProjection * vec4(current.xyz, 0.0) + : previousViewProjection * vec4(current.xyz / current.w + cameraDelta.xyz, 1.0); + if (previous.w < HOMOGENEOUS_EPSILON) { + return vec2(0.0); + } + return uv - (previous.xy / previous.w * UV_SCALE + UV_BIAS); +} + +vec2 clampLength(vec2 offset, float limit) { + float lengthSquared = dot(offset, offset); + if (lengthSquared <= limit * limit) { + return offset; + } + return offset * (limit * inversesqrt(lengthSquared)); +} + +float jitter(vec2 pixel) { + return fract(JITTER_SCALE * fract(dot(pixel, JITTER_WEIGHTS))); +} + +vec3 velocityBlur(vec2 uv, vec3 centerColor) { + float depth = depthParams.x > FLAG_LIMIT ? closestDepth(uv) : depthParams.w; + vec2 offset = clampLength(screenVelocity(uv, depth) * cameraDelta.w, blurControls.y); + float span = length(offset); + if (span < MIN_BLUR_LENGTH) { + return centerColor; + } + float count = clamp(ceil(span * screenParams.z * SAMPLES_PER_PIXEL), MIN_SAMPLES, blurControls.x); + vec2 stride = offset / count; + float start = -JITTER_CENTER * (count - 1.0); + float noise = jitter(uv / screenParams.xy) - JITTER_CENTER; + vec3 accumulated = vec3(0.0); + int taps = int(count); + for (int index = 0; index < taps; index++) { + vec3 tap = texture(SourceTex, uv + (start + float(index) + noise) * stride).rgb; + accumulated += tap * tap; + } + return sqrt(accumulated / count); +} + +float cameraDistance(vec2 uv) { + float clipDepth = texture(DepthTex, uv).r * depthParams.y + depthParams.z; + vec4 position = inverseViewProjection * vec4(uv * NDC_SCALE - NDC_BIAS, clipDepth, 1.0); + if (abs(position.w) < HOMOGENEOUS_EPSILON) { + return GUARD_INFINITE_DISTANCE; + } + return length(position.xyz / position.w); +} + +float nearGuard(vec2 uv) { + if (handParams.y <= handParams.x) { + return GUARD_FULL; + } + return smoothstep(handParams.x, handParams.y, cameraDistance(uv)); +} + +void main() { + vec3 source = texture(SourceTex, texCoord).rgb; + vec3 color = source; + if (blurControls.w > FLAG_LIMIT) { + color = velocityBlur(texCoord, color); + } + if (blurControls.z > 0.0) { + color = mix(color, texture(HistoryTex, texCoord).rgb, blurControls.z); + } + fragColor = vec4(mix(source, color, nearGuard(texCoord)), 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/motionblur/fullscreen.vsh b/src/main/resources/assets/evolution/shaders/core/motionblur/fullscreen.vsh new file mode 100644 index 0000000..f3b5d1e --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/motionblur/fullscreen.vsh @@ -0,0 +1,9 @@ +#version 150 + +out vec2 texCoord; + +void main() { + vec2 uv = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2); + texCoord = uv; + gl_Position = vec4(uv * 2.0 - 1.0, 0.0, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/msdf_font/data.json b/src/main/resources/assets/evolution/shaders/core/msdf_font/data.json new file mode 100644 index 0000000..11710fc --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/msdf_font/data.json @@ -0,0 +1,29 @@ +{ + "vertex": "evolution:core/msdf_font/vertex", + "fragment": "evolution:core/msdf_font/fragment", + "samplers": [ + { "name": "Sampler0" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Range", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "Thickness", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "Smoothness", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "Outline", "type": "int", "count": 1, "values": [ 0 ] }, + { "name": "OutlineThickness", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "OutlineColor", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "EnableFadeout", "type": "int", "count": 1, "values": [ 0 ] }, + { "name": "FadeoutStart", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "FadeoutEnd", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "MaxWidth", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "TextPosX", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "ColorModulator", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "MaskTopY", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskBottomY", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskFadeHeight", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "GlowRadius", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "GlowIntensity", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "GlowColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/shaders/core/msdf_font/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/msdf_font/fragment.fsh new file mode 100644 index 0000000..6b8e8ac --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/msdf_font/fragment.fsh @@ -0,0 +1,68 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +in vec2 TexCoord; +in vec4 FragColor; +in vec2 GlobalPos; + +uniform sampler2D Sampler0; + +out vec4 OutColor; + +const float GLOW_FIELD_SCALE = 2.0; +const float GLOW_SHAPE_BASE = 6.0; +const float GLOW_MIN_RADIUS = 0.25; +const float BASE_ALPHA_CUTOFF = 0.001; +const float GLOW_ALPHA_CUTOFF = 0.004; + +float median(vec3 color) { + return max(min(color.r, color.g), min(max(color.r, color.g), color.b)); +} + +void main() { + vec4 sample = texture(Sampler0, TexCoord); + float msdfDist = median(sample.rgb); + float mtsdfDist = mix(msdfDist, sample.a, 0.28); + float dist = mtsdfDist - 0.5 + Thickness; + vec2 unitRange = vec2(Range) / vec2(textureSize(Sampler0, 0)); + vec2 screenTexSize = vec2(1.0) / fwidth(TexCoord); + float screenPxRange = max(0.5 * dot(unitRange, screenTexSize), 1.0); + float alpha = smoothstep(-Smoothness.x, Smoothness.x, dist * screenPxRange); + alpha = pow(alpha, 0.8); + vec4 color = vec4(FragColor.rgb, FragColor.a * alpha); + + if (Outline > 0.5) { + color = mix(OutlineColor, FragColor, alpha); + color.a *= smoothstep(-Smoothness.x, Smoothness.x, (dist + OutlineThickness) * screenPxRange); + } + + if (GlowIntensity > 0.0) { + float outside = clamp(-dist * GLOW_FIELD_SCALE, 0.0, 1.0); + float shape = GLOW_SHAPE_BASE / max(GlowRadius, GLOW_MIN_RADIUS); + float glow = pow(1.0 - outside, shape) * GlowIntensity * GlowColor.a * FragColor.a; + color.rgb = mix(GlowColor.rgb, color.rgb, alpha); + color.a = max(color.a, glow); + } + + if (EnableFadeout > 0.5) { + float fadeAlpha = 1.0; + float relativeX = GlobalPos.x - TextPosX; + float normalizedX = relativeX / MaxWidth; + if (normalizedX > FadeoutStart) { + fadeAlpha = 1.0 - smoothstep(FadeoutStart, FadeoutEnd, normalizedX); + } + color.a *= fadeAlpha; + } + + color.a = applyAlphaMask(color.a); + float cutoff = GlowIntensity > 0.0 ? GLOW_ALPHA_CUTOFF : BASE_ALPHA_CUTOFF; + if (color.a <= cutoff) { + discard; + } + + OutColor = color * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/msdf_font/vertex.vsh b/src/main/resources/assets/evolution/shaders/core/msdf_font/vertex.vsh new file mode 100644 index 0000000..b53db7e --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/msdf_font/vertex.vsh @@ -0,0 +1,20 @@ +#version 150 + +#moj_import +#moj_import + +in vec3 Position; +in vec2 UV0; +in vec4 Color; + +out vec2 TexCoord; +out vec4 FragColor; +out vec2 GlobalPos; + +void main() { + TexCoord = UV0; + FragColor = Color; + GlobalPos = Position.xy; + + gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/position_color.vsh b/src/main/resources/assets/evolution/shaders/core/position_color.vsh new file mode 100644 index 0000000..6ce5fa3 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/position_color.vsh @@ -0,0 +1,18 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec3 Position; +in vec4 Color; + +out vec2 FragCoord; +out vec4 FragColor; + +void main() { + FragCoord = rvertexcoord(gl_VertexID); + FragColor = Color; + + gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/position_color_water.vsh b/src/main/resources/assets/evolution/shaders/core/position_color_water.vsh new file mode 100644 index 0000000..336e252 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/position_color_water.vsh @@ -0,0 +1,53 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +in vec3 Position; +in vec4 Color; + +out vec2 FragCoord; +out vec4 FragColor; +out vec3 WorldPos; +out vec3 WaveNormal; +out float WaveH; + +float waveSum(vec2 p, float t, out vec2 grad) { + grad = vec2(0.0); + float h = 0.0; + + vec2 d1 = vec2(0.8, 0.6); + float ph1 = dot(d1, p) * 1.05 + t * 1.25; + h += 0.09 * sin(ph1); + grad += d1 * (1.05 * 0.09 * cos(ph1)); + + vec2 d2 = vec2(-0.5, 0.86); + float ph2 = dot(d2, p) * 1.8 + t * 1.6; + h += 0.05 * sin(ph2); + grad += d2 * (1.8 * 0.05 * cos(ph2)); + + vec2 d3 = vec2(0.3, -0.95); + float ph3 = dot(d3, p) * 3.1 + t * 2.3; + h += 0.028 * sin(ph3); + grad += d3 * (3.1 * 0.028 * cos(ph3)); + + return h; +} + +void main() { + FragCoord = rvertexcoord(gl_VertexID); + FragColor = Color; + + vec3 world = Position + CameraPos; + WorldPos = world; + + vec2 grad; + float h = waveSum(world.xz, Time, grad); + WaveH = h; + WaveNormal = normalize(vec3(-grad.x, 1.0, -grad.y)); + + vec3 displaced = Position + vec3(0.0, h, 0.0); + gl_Position = ProjMat * ModelViewMat * vec4(displaced, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/position_color_world.vsh b/src/main/resources/assets/evolution/shaders/core/position_color_world.vsh new file mode 100644 index 0000000..393b187 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/position_color_world.vsh @@ -0,0 +1,21 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +in vec3 Position; +in vec4 Color; + +out vec2 FragCoord; +out vec4 FragColor; +out vec3 WorldPos; + +void main() { + FragCoord = rvertexcoord(gl_VertexID); + FragColor = Color; + WorldPos = Position + CameraPos; + + gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/position_texture_color.vsh b/src/main/resources/assets/evolution/shaders/core/position_texture_color.vsh new file mode 100644 index 0000000..9c17b08 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/position_texture_color.vsh @@ -0,0 +1,21 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec3 Position; +in vec2 UV0; +in vec4 Color; + +out vec2 FragCoord; +out vec2 TexCoord; +out vec4 FragColor; + +void main() { + FragCoord = rvertexcoord(gl_VertexID); + TexCoord = UV0; + FragColor = Color; + + gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/rain/wet/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/rain/wet/fragment.fsh new file mode 100644 index 0000000..9635ada --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/rain/wet/fragment.fsh @@ -0,0 +1,88 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +in vec3 WorldPos; +out vec4 OutColor; + +const float RIPPLE_CELL = 1.95; +const float RIPPLE_RATE = 0.3; +const float RIPPLE_RING = 0.06; +const float RIPPLE_SPREAD = 0.42; +const float RIPPLE_JITTER = 0.7; +const float SECOND_LAYER_SCALE = 1.73; +const float SECOND_LAYER_RATE = 1.27; +const float SECOND_LAYER_GAIN = 0.35; +const float SAMPLE_STEP = 0.035; +const float BUMP_STRENGTH = 9.0; +const float PUDDLE_SCALE = 0.26; +const float PUDDLE_GAIN = 0.75; +const float PUDDLE_BASE = 0.55; +const float GLOSS_LOW = 0.38; +const float GLOSS_HIGH = 0.72; +const float BASE_ALPHA = 0.38; +const float FRESNEL_ALPHA = 0.3; +const float FRESNEL_POWER = 2.6; +const float FRESNEL_TINT = 0.6; +const float SPEC_POWER = 140.0; +const float SPEC_GAIN = 0.5; +const float RING_TINT = 0.9; +const float RIPPLE_VIEW_DISTANCE = 20.0; +const float RING_ALPHA = 0.6; +const float ALPHA_CUTOFF = 0.002; +const vec3 SHEEN = vec3(0.82, 0.88, 1.0); +const vec3 WET_BASE = vec3(0.012, 0.016, 0.026); +const vec3 LIGHT_DIR = vec3(0.32, 0.88, 0.35); + +float rippleLayer(vec2 p, float t, float seed) { + vec2 q = p / RIPPLE_CELL + seed; + vec2 cell = floor(q); + vec2 f = fract(q) - 0.5; + float wave = t * RIPPLE_RATE + hash12(cell + seed); + float phase = fract(wave); + float index = floor(wave); + vec2 offset = vec2(hash12(cell + index * 3.77 + seed), hash12(cell + index * 7.31 + seed * 2.0)) - 0.5; + float d = length(f - offset * RIPPLE_JITTER); + float ring = smoothstep(RIPPLE_RING, 0.0, abs(d - phase * RIPPLE_SPREAD)); + float decay = 1.0 - phase; + return ring * decay * decay; +} + +float rippleField(vec2 p, float t) { + return rippleLayer(p, t, 0.0) + + rippleLayer(p * SECOND_LAYER_SCALE, t * SECOND_LAYER_RATE, 4.7) * SECOND_LAYER_GAIN; +} + +void main() { + float activity = clamp(Progress, 0.0, 1.0); + vec2 p = WorldPos.xz * Range; + + float h = rippleField(p, Time); + float hx = rippleField(p + vec2(SAMPLE_STEP, 0.0), Time); + float hz = rippleField(p + vec2(0.0, SAMPLE_STEP), Time); + + float puddle = fbm(WorldPos.xz * PUDDLE_SCALE); + float wet = clamp(Fade * (PUDDLE_BASE + puddle * PUDDLE_GAIN), 0.0, 1.0); + + float slope = BUMP_STRENGTH * activity; + vec3 nrm = normalize(vec3(-(hx - h) * slope, 1.0, -(hz - h) * slope)); + vec3 viewDir = normalize(CameraPos - WorldPos); + vec3 halfDir = normalize(normalize(LIGHT_DIR) + viewDir); + + float fresnel = pow(1.0 - clamp(dot(nrm, viewDir), 0.0, 1.0), FRESNEL_POWER); + float spec = pow(max(dot(nrm, halfDir), 0.0), SPEC_POWER) * smoothstep(GLOSS_LOW, GLOSS_HIGH, puddle); + float nearness = clamp(1.0 - length(CameraPos - WorldPos) / RIPPLE_VIEW_DISTANCE, 0.0, 1.0); + float ringGlow = h * activity * nearness; + + float highlight = spec * SPEC_GAIN + ringGlow * RING_TINT; + vec3 color = WET_BASE + TintColor * fresnel * FRESNEL_TINT + SHEEN * highlight; + + float alpha = BASE_ALPHA + fresnel * FRESNEL_ALPHA + highlight * RING_ALPHA; + alpha *= wet * FragColor.a; + if (alpha <= ALPHA_CUTOFF) discard; + + OutColor = vec4(clamp(color, 0.0, 1.0), clamp(alpha, 0.0, 1.0)); +} diff --git a/src/main/resources/assets/evolution/shaders/core/rain/wet/world_data.json b/src/main/resources/assets/evolution/shaders/core/rain/wet/world_data.json new file mode 100644 index 0000000..13ccf77 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/rain/wet/world_data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color_world", + "fragment": "evolution:core/rain/wet/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/rectangle/data.json b/src/main/resources/assets/evolution/shaders/core/rectangle/data.json new file mode 100644 index 0000000..0ae1841 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/rectangle/data.json @@ -0,0 +1,16 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/rectangle/fragment", + "samplers": [], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "ColorModulator", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "Smoothness", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "MaskTopY", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskBottomY", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskFadeHeight", "type": "float", "count": 1, "values": [ 0.0 ] } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/shaders/core/rectangle/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/rectangle/fragment.fsh new file mode 100644 index 0000000..b91c92e --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/rectangle/fragment.fsh @@ -0,0 +1,30 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; + +out vec4 OutColor; + +void main() { + vec2 center = Size * 0.5; + float distance = roundedBoxSDF(center - (FragCoord * Size), center, Radius); + + float alpha = 1.0 - smoothstep(-Smoothness.x, 0.0, distance); + vec4 finalColor = vec4(FragColor.rgb, FragColor.a * alpha); + + if (finalColor.a == 0.0) { + discard; + } + + finalColor.a = applyAlphaMask(finalColor.a); + if (finalColor.a <= 0.001) { + discard; + } + + OutColor = finalColor * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/replay/downscale.fsh b/src/main/resources/assets/evolution/shaders/core/replay/downscale.fsh new file mode 100644 index 0000000..4e7e26a --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/replay/downscale.fsh @@ -0,0 +1,22 @@ +#version 150 + +uniform sampler2D SourceTex; + +layout(std140) uniform ReplayParams { + vec4 targetTexel; +}; + +in vec2 texCoord; +out vec4 fragColor; + +const float TAP_OFFSET = 0.25; +const float TAP_WEIGHT = 0.25; + +void main() { + vec2 offset = targetTexel.xy * TAP_OFFSET; + vec3 color = texture(SourceTex, texCoord + vec2(-offset.x, -offset.y)).rgb + + texture(SourceTex, texCoord + vec2(offset.x, -offset.y)).rgb + + texture(SourceTex, texCoord + vec2(-offset.x, offset.y)).rgb + + texture(SourceTex, texCoord + vec2(offset.x, offset.y)).rgb; + fragColor = vec4(color * TAP_WEIGHT, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/replay/fullscreen.vsh b/src/main/resources/assets/evolution/shaders/core/replay/fullscreen.vsh new file mode 100644 index 0000000..f3b5d1e --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/replay/fullscreen.vsh @@ -0,0 +1,9 @@ +#version 150 + +out vec2 texCoord; + +void main() { + vec2 uv = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2); + texCoord = uv; + gl_Position = vec4(uv * 2.0 - 1.0, 0.0, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_backdrop_clouds/data.json b/src/main/resources/assets/evolution/shaders/core/sky_backdrop_clouds/data.json new file mode 100644 index 0000000..853c0a6 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_backdrop_clouds/data.json @@ -0,0 +1,15 @@ +{ + "vertex": "evolution:core/sky_fullscreen", + "fragment": "evolution:core/sky_backdrop_clouds/fragment", + "attributes": [ + "Position", + "UV0", + "Color" + ], + "uniforms": [ + { "name": "Resolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "TopLeftColor", "type": "float", "count": 4, "values": [ 0.0, 1.0, 0.5, 1.0 ] }, + { "name": "BottomRightColor", "type": "float", "count": 4, "values": [ 0.0, 0.2, 0.8, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_backdrop_clouds/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/sky_backdrop_clouds/fragment.fsh new file mode 100644 index 0000000..72e8552 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_backdrop_clouds/fragment.fsh @@ -0,0 +1,120 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +const float CLOUD_SLAB_BOTTOM = 1.05; +const float CLOUD_SLAB_TOP = 1.55; +const float CLOUD_SLAB_MID = 1.30; +const float CLOUD_SCALE = 2.4; +const int CLOUD_STEPS_MAX = 14; +const float CLOUD_STEPS_MIN = 7.0; +const float CLOUD_STEEP_LOW = 0.03; +const float CLOUD_STEEP_HIGH = 0.55; +const float CLOUD_MAX_STEP = 3.0; +const float CLOUD_JITTER = 0.5; +const float CLOUD_DITHER_SCALE = 2048.0; +const float CLOUD_DITHER_SEED = 0.5; +const float CLOUD_DRIFT = 0.014; +const float CLOUD_SHEAR = 0.45; + +const float CLOUD_COVER_LOW = 0.38; +const float CLOUD_COVER_SPAN = 0.13; +const float CLOUD_TOP_ERODE = 0.26; +const float CLOUD_BASE_SOFT = 0.08; +const float CLOUD_TOP_SOFT = 0.80; + +const float CLOUD_ABSORB = 9.0; +const float CLOUD_LIGHT_ABSORB = 5.0; +const float CLOUD_BASE_SHADE = 0.35; +const float CLOUD_LIGHT_STEP = 0.40; +const float CLOUD_LIGHT_RISE = 0.22; +const float CLOUD_DENSITY_EPSILON = 0.02; +const float CLOUD_CUTOFF = 0.02; + +const float CLOUD_HAZE_RANGE = 8.0; +const float CLOUD_HAZE_GAIN = 0.55; +const float CLOUD_DEPTH_HAZE = 0.34; +const float CLOUD_SKY_LEVEL = 0.34; +const float CLOUD_SKY_MID = 0.58; +const float CLOUD_HALO_TIGHT = 5.5; +const float CLOUD_HALO_GAIN = 0.80; +const float CLOUD_SILVER_TIGHT = 22.0; +const float CLOUD_SILVER_GAIN = 2.60; +const float CLOUD_AMBIENT = 0.35; +const float CLOUD_SHADOW_TINT = 0.42; +const float CLOUD_SUN_TINT = 0.35; + +in vec3 vRay; +in vec4 FragColor; + +out vec4 fragColor; + +float cloudDensity(vec2 ground, float level) { + float value = fbm3d(vec3(ground.x, level * CLOUD_SHEAR, ground.y)); + float threshold = CLOUD_COVER_LOW + CLOUD_TOP_ERODE * level * level; + float profile = smoothstep(0.0, CLOUD_BASE_SOFT, level) + * smoothstep(1.0, CLOUD_TOP_SOFT, level); + return smoothstep(threshold, threshold + CLOUD_COVER_SPAN, value) * profile; +} + +void main() { + vec3 dir = normalize(vRay); + + vec3 skyLow = BottomRightColor.rgb; + vec3 skyHigh = mix(BottomRightColor.rgb, TopLeftColor.rgb, CLOUD_SKY_MID) * CLOUD_SKY_LEVEL; + vec3 light = skyLightDir(Time); + vec3 backdrop = skyRamp(dir.y, skyLow, mix(skyLow, skyHigh, 0.5), skyHigh); + backdrop += TopLeftColor.rgb * skyHalo(dir, light, CLOUD_HALO_TIGHT) * CLOUD_HALO_GAIN; + + if (dir.y <= 0.0) { + fragColor = vec4(skyLow, 1.0); + return; + } + + float up = max(dir.y, SKY_PLANE_EPSILON); + float slab = CLOUD_SLAB_TOP - CLOUD_SLAB_BOTTOM; + int steps = max(int(mix(CLOUD_STEPS_MIN, float(CLOUD_STEPS_MAX), + smoothstep(CLOUD_STEEP_LOW, CLOUD_STEEP_HIGH, up))), 1); + float rayStep = min(slab / (up * float(steps)), CLOUD_MAX_STEP); + + vec3 midPlane = skyPlane(dir, CLOUD_SLAB_MID); + float dither = hash13(vec3(midPlane.xy * CLOUD_DITHER_SCALE, CLOUD_DITHER_SEED)); + + vec3 sunTint = mix(TopLeftColor.rgb, vec3(1.0), CLOUD_SUN_TINT); + vec3 shadowTint = mix(BottomRightColor.rgb, TopLeftColor.rgb, CLOUD_SHADOW_TINT); + float drift = Time * CLOUD_DRIFT; + + float transmittance = 1.0; + vec3 scattered = vec3(0.0); + for (int layer = 0; layer < CLOUD_STEPS_MAX; layer++) { + if (layer >= steps || transmittance < CLOUD_CUTOFF) { + break; + } + float level = clamp((float(layer) + 0.5 + (dither - 0.5) * CLOUD_JITTER) + / float(steps), 0.0, 1.0); + float height = CLOUD_SLAB_BOTTOM + slab * level; + vec2 ground = skyPlaneDomain(dir.xz * (height / up)) * CLOUD_SCALE + vec2(drift, 0.0); + float density = cloudDensity(ground, level); + if (density > CLOUD_DENSITY_EPSILON) { + float toward = cloudDensity(ground + light.xz * CLOUD_LIGHT_STEP, + min(level + CLOUD_LIGHT_RISE, 1.0)); + float sunlight = exp(-(toward * CLOUD_LIGHT_ABSORB + + (1.0 - level) * CLOUD_BASE_SHADE)); + float alpha = 1.0 - exp(-density * CLOUD_ABSORB * rayStep); + scattered += transmittance * alpha * mix(shadowTint * CLOUD_AMBIENT, sunTint, sunlight); + transmittance -= transmittance * alpha; + } + } + + float silver = skyHalo(dir, light, CLOUD_SILVER_TIGHT) * (1.0 - transmittance); + vec3 col = backdrop * transmittance + scattered + sunTint * silver * CLOUD_SILVER_GAIN; + + float haze = 1.0 - skyPlaneFalloff(midPlane.z, CLOUD_HAZE_RANGE); + col = mix(col, backdrop, haze * CLOUD_HAZE_GAIN); + col = mix(skyLow, col, skyEffectFade(dir.y, SkyFullDome)); + col = mix(col, skyLow, skyDepthHaze(dir.y, SkyFullDome, CLOUD_DEPTH_HAZE)); + + fragColor = vec4(col, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_backdrop_galaxy/data.json b/src/main/resources/assets/evolution/shaders/core/sky_backdrop_galaxy/data.json new file mode 100644 index 0000000..d6be7aa --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_backdrop_galaxy/data.json @@ -0,0 +1,15 @@ +{ + "vertex": "evolution:core/sky_fullscreen", + "fragment": "evolution:core/sky_backdrop_galaxy/fragment", + "attributes": [ + "Position", + "UV0", + "Color" + ], + "uniforms": [ + { "name": "Resolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "TopLeftColor", "type": "float", "count": 4, "values": [ 0.0, 1.0, 0.5, 1.0 ] }, + { "name": "BottomRightColor", "type": "float", "count": 4, "values": [ 0.0, 0.2, 0.8, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_backdrop_galaxy/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/sky_backdrop_galaxy/fragment.fsh new file mode 100644 index 0000000..3362359 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_backdrop_galaxy/fragment.fsh @@ -0,0 +1,98 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +const vec3 GALAXY_POLE = vec3(0.52, 0.66, -0.54); +const vec3 GALAXY_CORE_DIR = vec3(0.301, 0.451, 0.840); +const float GALAXY_CORE_DIST = 5.0; + +const float GALAXY_NEAR = 0.5; +const int GALAXY_STEPS = 18; +const float GALAXY_RATIO = 1.22; + +const float GALAXY_SCALE_HEIGHT = 0.45; +const float GALAXY_DISC_RADIUS = 1.6; +const float GALAXY_DISC_REACH = 6.0; +const float GALAXY_DISC_AMBIENT = 0.90; +const float GALAXY_CORE_BRIGHT = 1.40; +const float GALAXY_CORE_TINT = 1.30; +const float GALAXY_EMIT = 0.38; +const float GALAXY_DISC_EPSILON = 0.002; + +const float GALAXY_DUST_FLATTEN = 0.42; +const float GALAXY_DUST_SCALE = 4.5; +const float GALAXY_DUST_LOW = 0.44; +const float GALAXY_DUST_HIGH = 0.64; +const float GALAXY_DUST_ABSORB = 5.0; +const float GALAXY_DRIFT = 0.012; +const float GALAXY_SHEAR_RATE = 0.020; +const float GALAXY_SHEAR_FALLOFF = 0.35; +const vec3 GALAXY_BASIS_UP = vec3(0.0, 1.0, 0.0); + +const float GALAXY_DEEP_LEVEL = 0.045; + +in vec3 vRay; +in vec4 FragColor; + +out vec4 fragColor; + +void main() { + vec3 dir = normalize(vRay); + vec3 deep = BottomRightColor.rgb * GALAXY_DEEP_LEVEL; + + if (SkyFullDome < 0.5 && dir.y <= 0.0) { + fragColor = vec4(deep, 1.0); + return; + } + + vec3 ray = skyRotationY(SkyRotSin, SkyRotCos) * dir; + vec3 pole = normalize(GALAXY_POLE); + vec3 corePos = normalize(GALAXY_CORE_DIR) * GALAXY_CORE_DIST; + vec3 discRight = normalize(cross(pole, GALAXY_BASIS_UP)); + vec3 discForward = cross(pole, discRight); + vec2 corePlanar = vec2(dot(corePos, discRight), dot(corePos, discForward)); + float drift = Time * GALAXY_DRIFT; + + float travel = GALAXY_NEAR; + float transmittance = 1.0; + vec3 scattered = vec3(0.0); + + for (int layer = 0; layer < GALAXY_STEPS; layer++) { + float next = travel * GALAXY_RATIO; + float stepLength = next - travel; + vec3 probe = ray * ((travel + next) * 0.5); + travel = next; + + float height = abs(dot(probe, pole)); + float starDisc = exp(-height / GALAXY_SCALE_HEIGHT); + if (starDisc <= GALAXY_DISC_EPSILON) { + continue; + } + + float coreDistance = length(probe - corePos); + float bulge = exp(-coreDistance / GALAXY_DISC_RADIUS); + float body = exp(-coreDistance / GALAXY_DISC_REACH); + float glow = starDisc * (GALAXY_DISC_AMBIENT * body + GALAXY_CORE_BRIGHT * bulge); + + vec3 gas = mix(TopLeftColor.rgb, BottomRightColor.rgb, + clamp(bulge * GALAXY_CORE_TINT, 0.0, 1.0)); + scattered += transmittance * gas * glow * GALAXY_EMIT * stepLength; + + float dustDisc = exp(-height / (GALAXY_SCALE_HEIGHT * GALAXY_DUST_FLATTEN)); + vec2 planar = vec2(dot(probe, discRight), dot(probe, discForward)) - corePlanar; + float spin = GALAXY_SHEAR_RATE * Time / (1.0 + length(planar) * GALAXY_SHEAR_FALLOFF); + float spinSin = sin(spin); + float spinCos = cos(spin); + vec2 turned = vec2(planar.x * spinCos - planar.y * spinSin, + planar.x * spinSin + planar.y * spinCos) + corePlanar; + vec3 sheared = discRight * turned.x + discForward * turned.y + + pole * dot(probe, pole); + float dustValue = fbm3d(sheared * GALAXY_DUST_SCALE + vec3(drift, 0.0, -drift)); + float dust = smoothstep(GALAXY_DUST_LOW, GALAXY_DUST_HIGH, dustValue) * dustDisc; + transmittance *= exp(-dust * GALAXY_DUST_ABSORB * stepLength); + } + + fragColor = vec4(deep + scattered, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_backdrop_nebula/data.json b/src/main/resources/assets/evolution/shaders/core/sky_backdrop_nebula/data.json new file mode 100644 index 0000000..e53c2e9 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_backdrop_nebula/data.json @@ -0,0 +1,15 @@ +{ + "vertex": "evolution:core/sky_fullscreen", + "fragment": "evolution:core/sky_backdrop_nebula/fragment", + "attributes": [ + "Position", + "UV0", + "Color" + ], + "uniforms": [ + { "name": "Resolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "TopLeftColor", "type": "float", "count": 4, "values": [ 0.0, 1.0, 0.5, 1.0 ] }, + { "name": "BottomRightColor", "type": "float", "count": 4, "values": [ 0.0, 0.2, 0.8, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_backdrop_nebula/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/sky_backdrop_nebula/fragment.fsh new file mode 100644 index 0000000..79c3648 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_backdrop_nebula/fragment.fsh @@ -0,0 +1,107 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +const float NEBULA_NEAR = 0.55; +const float NEBULA_FAR = 4.6; +const int NEBULA_STEPS = 14; +const float NEBULA_JITTER = 0.3; +const float NEBULA_DITHER_SCALE = 4096.0; + +const float NEBULA_SCALE = 1.25; +const float NEBULA_WARP_SCALE = 0.55; +const float NEBULA_WARP_GAIN = 1.35; +const float NEBULA_DRIFT = 0.035; +const float NEBULA_FILAMENT_LOW = 0.50; +const float NEBULA_FILAMENT_HIGH = 0.78; +const float NEBULA_FILAMENT_POWER = 1.55; +const float NEBULA_NOISE_MEAN = 0.5; + +const vec3 NEBULA_CENTER_DIR = vec3(0.10, 0.22, -0.05); +const float NEBULA_CENTER_DIST = 2.4; +const float NEBULA_REACH = 1.9; + +const vec3 NEBULA_CORE_A = vec3(0.62, 0.35, -0.70); +const vec3 NEBULA_CORE_B = vec3(-0.55, -0.12, 0.83); +const float NEBULA_CORE_DIST_A = 2.1; +const float NEBULA_CORE_DIST_B = 3.4; +const float NEBULA_CORE_FALLOFF = 1.9; +const float NEBULA_CORE_GAIN_A = 2.6; +const float NEBULA_CORE_GAIN_B = 1.4; +const float NEBULA_HALO_TIGHT = 2.0; +const float NEBULA_HALO_GAIN = 0.35; + +const float NEBULA_ABSORB = 2.4; +const float NEBULA_EMIT = 0.40; +const float NEBULA_DEEP_LEVEL = 0.05; +const float NEBULA_DENSITY_EPSILON = 0.002; +const float NEBULA_CUTOFF = 0.02; +const float NEBULA_DEPTH_HAZE = 0.30; + +in vec3 vRay; +in vec4 FragColor; + +out vec4 fragColor; + +float nebulaDensity(vec3 p, float drift) { + float warp = fbm3d(p * NEBULA_WARP_SCALE + vec3(drift, 0.0, -drift)) - NEBULA_NOISE_MEAN; + vec3 q = p * NEBULA_SCALE + vec3(warp, warp, -warp) * NEBULA_WARP_GAIN; + float value = fbm3d(q); + float envelope = exp(-length(p - normalize(NEBULA_CENTER_DIR) * NEBULA_CENTER_DIST) + / NEBULA_REACH); + return pow(smoothstep(NEBULA_FILAMENT_LOW, NEBULA_FILAMENT_HIGH, value), + NEBULA_FILAMENT_POWER) * envelope; +} + +float nebulaGlow(vec3 p, vec3 core, float distance, float gain) { + vec3 offset = p - core * distance; + return gain / (1.0 + dot(offset, offset) * NEBULA_CORE_FALLOFF); +} + +void main() { + vec3 dir = normalize(vRay); + vec3 deep = BottomRightColor.rgb * NEBULA_DEEP_LEVEL; + + if (SkyFullDome < 0.5 && dir.y <= 0.0) { + fragColor = vec4(deep, 1.0); + return; + } + + vec3 p = skyRotationY(SkyRotSin, SkyRotCos) * dir; + vec3 coreA = normalize(NEBULA_CORE_A); + vec3 coreB = normalize(NEBULA_CORE_B); + float drift = Time * NEBULA_DRIFT; + float dither = hash13(p * NEBULA_DITHER_SCALE); + + float stepLength = (NEBULA_FAR - NEBULA_NEAR) / float(NEBULA_STEPS); + float transmittance = 1.0; + vec3 scattered = vec3(0.0); + + for (int layer = 0; layer < NEBULA_STEPS; layer++) { + if (transmittance < NEBULA_CUTOFF) { + break; + } + float travel = NEBULA_NEAR + stepLength + * (float(layer) + 0.5 + (dither - 0.5) * NEBULA_JITTER); + vec3 probe = p * travel; + float density = nebulaDensity(probe, drift); + if (density > NEBULA_DENSITY_EPSILON) { + float glow = nebulaGlow(probe, coreA, NEBULA_CORE_DIST_A, NEBULA_CORE_GAIN_A) + + nebulaGlow(probe, coreB, NEBULA_CORE_DIST_B, NEBULA_CORE_GAIN_B); + vec3 gas = mix(BottomRightColor.rgb, TopLeftColor.rgb, clamp(density, 0.0, 1.0)); + float alpha = 1.0 - exp(-density * NEBULA_ABSORB * stepLength); + scattered += transmittance * alpha * (gas * NEBULA_EMIT + TopLeftColor.rgb * glow); + transmittance -= transmittance * alpha; + } + } + + float coreHalo = skyHalo(p, coreA, NEBULA_HALO_TIGHT) + skyHalo(p, coreB, NEBULA_HALO_TIGHT); + vec3 col = deep * transmittance + scattered + + TopLeftColor.rgb * coreHalo * NEBULA_HALO_GAIN * transmittance; + col = mix(deep, col, skyEffectFade(dir.y, SkyFullDome)); + col = mix(col, deep, skyDepthHaze(dir.y, SkyFullDome, NEBULA_DEPTH_HAZE)); + + fragColor = vec4(col, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_caustics/data.json b/src/main/resources/assets/evolution/shaders/core/sky_caustics/data.json new file mode 100644 index 0000000..5ac9c43 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_caustics/data.json @@ -0,0 +1,18 @@ +{ + "vertex": "evolution:core/sky_fullscreen", + "fragment": "evolution:core/sky_caustics/fragment", + "samplers": [ + { "name": "DepthTex" } + ], + "attributes": [ + "Position", + "UV0", + "Color" + ], + "uniforms": [ + { "name": "Resolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "TopLeftColor", "type": "float", "count": 4, "values": [ 0.0, 0.7, 1.0, 1.0 ] }, + { "name": "BottomRightColor", "type": "float", "count": 4, "values": [ 0.0, 0.2, 0.4, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_caustics/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/sky_caustics/fragment.fsh new file mode 100644 index 0000000..2221b90 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_caustics/fragment.fsh @@ -0,0 +1,108 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +const float CAUSTICS_TAU = 6.28318530718; +const int CAUSTICS_ITERATIONS = 5; +const float CAUSTICS_CEILING_HEIGHT = 0.95; +const float CAUSTICS_FLOOR_HEIGHT = 1.45; +const float CAUSTICS_DOMAIN_SCALE = 1.35; +const float CAUSTICS_DRIFT_X = 0.018; +const float CAUSTICS_DRIFT_Z = -0.012; +const float CAUSTICS_DOMAIN_SHIFT = 250.0; +const float CAUSTICS_THICKNESS = 0.005; +const float CAUSTICS_TIME_SCALE = 0.45; +const float CAUSTICS_TIME_OFFSET = 23.0; +const float CAUSTICS_PHASE_GAIN = 3.5; +const float CAUSTICS_CONTRAST_BIAS = 1.17; +const float CAUSTICS_CONTRAST_POWER = 1.4; +const float CAUSTICS_HIGHLIGHT_POWER = 7.0; +const float CAUSTICS_TINT_FLOOR = 0.55; +const float CAUSTICS_FLOOR_SCALE = 0.85; +const float CAUSTICS_FLOOR_SHIFT = 137.0; +const float CAUSTICS_FLOOR_TINT = 0.45; +const float CAUSTICS_GLOW_WHITEN = 0.55; +const float CAUSTICS_REACH_EPSILON = 0.004; +const float CAUSTICS_DETAIL_FLOOR = 0.25; +const float CAUSTICS_BASE_LOW = 0.12; +const float CAUSTICS_BASE_HIGH = 0.30; +const float CAUSTICS_BASE_BLEND = 0.72; +const float CAUSTICS_POOL_TIGHT = 2.2; +const float CAUSTICS_POOL_FLOOR = 0.34; +const float CAUSTICS_GLINT_TIGHT = 40.0; +const float CAUSTICS_GLINT_GAIN = 1.70; + +in vec3 vRay; +in vec4 FragColor; + +out vec4 fragColor; + +float causticsWeave(vec2 domain) { + vec2 p = mod(domain * CAUSTICS_TAU, CAUSTICS_TAU) - CAUSTICS_DOMAIN_SHIFT; + vec2 walker = p; + float accum = 1.0; + float localTime = Time * CAUSTICS_TIME_SCALE + CAUSTICS_TIME_OFFSET; + + for (int n = 0; n < CAUSTICS_ITERATIONS; n++) { + float t = localTime * (1.0 - CAUSTICS_PHASE_GAIN / float(n + 1)); + walker = p + vec2(cos(t - walker.x) + sin(t + walker.y), sin(t - walker.y) + cos(t + walker.x)); + accum += 1.0 / length(vec2( + p.x / (sin(walker.x + t) / CAUSTICS_THICKNESS), + p.y / (cos(walker.y + t) / CAUSTICS_THICKNESS))); + } + + accum /= float(CAUSTICS_ITERATIONS); + return CAUSTICS_CONTRAST_BIAS - pow(abs(accum), CAUSTICS_CONTRAST_POWER); +} + +void main() { + if (skyCoveredByGeometry(gl_FragCoord.xy)) { + discard; + } + vec3 dir = normalize(vRay); + vec3 light = skyLightDir(Time); + vec3 horizonTone = TopLeftColor.rgb * CAUSTICS_TINT_FLOOR; + vec3 haze = skyHorizonGlow(dir, light, horizonTone, + mix(TopLeftColor.rgb, vec3(1.0), CAUSTICS_GLOW_WHITEN)); + + if (SkyFullDome < 0.5 && dir.y <= 0.0) { + fragColor = vec4(skyFinish(horizonTone, SKY_EXPOSURE), FragColor.a); + return; + } + + bool ceiling = dir.y >= 0.0; + float height = ceiling ? CAUSTICS_CEILING_HEIGHT : CAUSTICS_FLOOR_HEIGHT; + vec3 plane = skyPlane(dir, height); + float reach = skyPlaneFalloff(plane.z, SKY_PLANE_RANGE); + + vec3 finalCol = haze; + if (reach > CAUSTICS_REACH_EPSILON) { + vec2 drift = ceiling + ? vec2(Time * CAUSTICS_DRIFT_X, Time * CAUSTICS_DRIFT_Z) + : vec2(CAUSTICS_FLOOR_SHIFT - Time * CAUSTICS_DRIFT_Z, Time * CAUSTICS_DRIFT_X); + float scale = ceiling ? CAUSTICS_DOMAIN_SCALE : CAUSTICS_FLOOR_SCALE; + vec2 domain = plane.xy * scale + drift; + + float pool = CAUSTICS_POOL_FLOOR + + (1.0 - CAUSTICS_POOL_FLOOR) * skyHalo(dir, light, CAUSTICS_POOL_TIGHT); + float detail = skyPlaneFalloff(plane.z, SKY_PLANE_DETAIL_RANGE); + float highlight = pow(abs(causticsWeave(domain)), CAUSTICS_HIGHLIGHT_POWER) + * pool * mix(CAUSTICS_DETAIL_FLOOR, 1.0, detail); + + vec3 body = ceiling + ? TopLeftColor.rgb * CAUSTICS_BASE_HIGH + : mix(BottomRightColor.rgb, TopLeftColor.rgb, CAUSTICS_FLOOR_TINT) * CAUSTICS_BASE_LOW; + vec3 veins = clamp(vec3(highlight) + body, 0.0, 1.0); + veins += mix(TopLeftColor.rgb, vec3(1.0), 0.5) + * skyHalo(dir, light, CAUSTICS_GLINT_TIGHT) * CAUSTICS_GLINT_GAIN; + + finalCol = mix(haze, veins, reach); + } + finalCol = mix(horizonTone, finalCol, skyEffectFade(dir.y, SkyFullDome)); + finalCol *= skyNadirDepth(dir.y, SkyFullDome); + + fragColor = vec4(skyDither(skyFinish(finalCol, SKY_EXPOSURE), gl_FragCoord.xy), FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_color/data.json b/src/main/resources/assets/evolution/shaders/core/sky_color/data.json new file mode 100644 index 0000000..8070673 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_color/data.json @@ -0,0 +1,18 @@ +{ + "vertex": "evolution:core/sky_fullscreen", + "fragment": "evolution:core/sky_color/fragment", + "samplers": [ + { "name": "DepthTex" } + ], + "attributes": [ + "Position", + "UV0", + "Color" + ], + "uniforms": [ + { "name": "Resolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "TopLeftColor", "type": "float", "count": 4, "values": [ 0.0, 1.0, 0.5, 1.0 ] }, + { "name": "BottomRightColor", "type": "float", "count": 4, "values": [ 0.0, 0.2, 0.8, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_color/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/sky_color/fragment.fsh new file mode 100644 index 0000000..b8daf1b --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_color/fragment.fsh @@ -0,0 +1,52 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +in vec3 vRay; +in vec4 FragColor; + +out vec4 fragColor; + +const float GRADIENT_SEA_OPACITY = 1.0; +const float GRADIENT_MID_BLEND = 0.42; +const float GRADIENT_MID_LIFT = 1.12; +const float GRADIENT_HALO_TIGHT = 4.5; +const float GRADIENT_HALO_GAIN = 0.48; +const float GRADIENT_DISC_TIGHT = 240.0; +const float GRADIENT_DISC_GAIN = 3.20; +const float GRADIENT_ZENITH_DEEPEN = 0.82; + +void main() { + if (skyCoveredByGeometry(gl_FragCoord.xy)) { + discard; + } + vec3 dir = normalize(vRay); + vec3 horizonTone = BottomRightColor.rgb; + + if (SkyFullDome < 0.5 && dir.y <= 0.0) { + fragColor = vec4(skyFinish(horizonTone, SKY_EXPOSURE), FragColor.a); + return; + } + + vec3 light = skyLightDir(Time); + vec3 mid = mix(horizonTone, TopLeftColor.rgb, GRADIENT_MID_BLEND) * GRADIENT_MID_LIFT; + vec3 zenith = TopLeftColor.rgb * GRADIENT_ZENITH_DEEPEN; + + float sunReach = skyEffectFade(dir.y, SkyFullDome); + vec3 col = skyRamp(dir.y, horizonTone, mid, zenith); + col += mix(horizonTone, TopLeftColor.rgb, 0.5) + * skyHalo(dir, light, GRADIENT_HALO_TIGHT) * GRADIENT_HALO_GAIN * sunReach; + col += mix(TopLeftColor.rgb, vec3(1.0), 0.6) + * skyHalo(dir, light, GRADIENT_DISC_TIGHT) * GRADIENT_DISC_GAIN * sunReach; + + float seaMask = skySeaMask(dir.y, SkyFullDome) * GRADIENT_SEA_OPACITY; + if (seaMask > 0.0) { + col = mix(col, skySea(dir, Time, horizonTone, TopLeftColor.rgb), seaMask); + } + col *= skyNadirDepth(dir.y, SkyFullDome); + + fragColor = vec4(skyDither(skyFinish(col, SKY_EXPOSURE), gl_FragCoord.xy), FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_dreamscape/data.json b/src/main/resources/assets/evolution/shaders/core/sky_dreamscape/data.json new file mode 100644 index 0000000..b9bb866 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_dreamscape/data.json @@ -0,0 +1,20 @@ +{ + "vertex": "evolution:core/sky_fullscreen", + "fragment": "evolution:core/sky_dreamscape/fragment", + "samplers": [ + { "name": "DepthTex" } + ], + "attributes": [ + "Position", + "UV0", + "Color" + ], + "uniforms": [ + { "name": "Resolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "Backdrop", "type": "float", "count": 4, "values": [ 4.0, 1.0, 300.0, 1.0 ] }, + { "name": "TopLeftColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "BottomLeftColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "TopRightColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_dreamscape/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/sky_dreamscape/fragment.fsh new file mode 100644 index 0000000..2ad61ff --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_dreamscape/fragment.fsh @@ -0,0 +1,60 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import +#moj_import +#moj_import + +const float MENU_SKY_EMBER_INTENSITY = 1.0; +const int MENU_SKY_EMBER_SWIRL = 5; +const float MENU_SKY_LOOP_MIN = 1.0; +const float MENU_SKY_SIZE_MIN = 0.05; +const float MENU_SKY_ASPECT = 1.0; +const float MENU_SKY_HORIZON_LEVEL = 0.07; +const float MENU_SKY_HALF = 0.5; +const float MENU_SKY_BLOOM_SPREAD = 0.25; +const float MENU_SKY_EMBER_DENSITY = 3.0; + +in vec3 vRay; +in vec4 FragColor; + +out vec4 fragColor; + +vec2 domeToMenu(vec3 dir, float size) { + vec2 disc = dir.xz / (1.0 + abs(dir.y)); + return MENU_SKY_HALF + disc * (MENU_SKY_HALF / max(size, MENU_SKY_SIZE_MIN)); +} + +vec3 domeFrame(vec3 dir) { + float drop = 1.0 - abs(dir.y); + float azimuth = atan(dir.z, dir.x); + return vec3(drop, MENU_SKY_HALF + MENU_SKY_HALF * sin(azimuth), drop * MENU_SKY_BLOOM_SPREAD); +} + +void main() { + if (skyCoveredByGeometry(gl_FragCoord.xy)) { + discard; + } + vec3 dir = normalize(vRay); + vec3 horizonTone = TopLeftColor.rgb * MENU_SKY_HORIZON_LEVEL; + + if (SkyFullDome < 0.5 && dir.y <= 0.0) { + fragColor = vec4(horizonTone, FragColor.a); + return; + } + + float loop = max(Backdrop.z, MENU_SKY_LOOP_MIN); + float cycle = mod(Time, loop) / loop; + vec2 uv = domeToMenu(dir, Backdrop.w); + if (abs(Backdrop.x - MODE_EMBER) < MODE_EPSILON) { + uv = MENU_SKY_HALF + (uv - MENU_SKY_HALF) * MENU_SKY_EMBER_DENSITY; + } + + vec3 color = menuPattern(Backdrop.x, uv, MENU_SKY_ASPECT, cycle, MENU_SKY_EMBER_INTENSITY, + MENU_SKY_EMBER_SWIRL, domeFrame(dir)) * Backdrop.y; + color = mix(horizonTone, color, skyEffectFade(dir.y, SkyFullDome)); + + fragColor = vec4(clamp(skyDither(color, gl_FragCoord.xy), 0.0, 1.0), FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_fullscreen.vsh b/src/main/resources/assets/evolution/shaders/core/sky_fullscreen.vsh new file mode 100644 index 0000000..814053f --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_fullscreen.vsh @@ -0,0 +1,14 @@ +#version 150 + +in vec3 Position; +in vec2 UV0; +in vec4 Color; + +out vec3 vRay; +out vec4 FragColor; + +void main() { + vRay = Position; + FragColor = Color; + gl_Position = vec4(UV0, 0.0, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_fullscreen_uv.vsh b/src/main/resources/assets/evolution/shaders/core/sky_fullscreen_uv.vsh new file mode 100644 index 0000000..75d5d75 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_fullscreen_uv.vsh @@ -0,0 +1,16 @@ +#version 150 + +in vec3 Position; +in vec2 UV0; +in vec4 Color; + +out vec3 vRay; +out vec4 FragColor; +out vec2 vScreenUv; + +void main() { + vRay = Position; + FragColor = Color; + vScreenUv = UV0 * 0.5 + 0.5; + gl_Position = vec4(UV0, 0.0, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_galaxy/data.json b/src/main/resources/assets/evolution/shaders/core/sky_galaxy/data.json new file mode 100644 index 0000000..2045481 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_galaxy/data.json @@ -0,0 +1,19 @@ +{ + "vertex": "evolution:core/sky_fullscreen_uv", + "fragment": "evolution:core/sky_galaxy/fragment", + "attributes": [ + "Position", + "UV0", + "Color" + ], + "samplers": [ + { "name": "Sampler0" }, + { "name": "DepthTex" } + ], + "uniforms": [ + { "name": "Resolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "TopLeftColor", "type": "float", "count": 4, "values": [ 0.0, 1.0, 0.5, 1.0 ] }, + { "name": "BottomRightColor", "type": "float", "count": 4, "values": [ 0.0, 0.2, 0.8, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_galaxy/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/sky_galaxy/fragment.fsh new file mode 100644 index 0000000..193d034 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_galaxy/fragment.fsh @@ -0,0 +1,90 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +uniform sampler2D Sampler0; + +const vec3 GALAXY_POLE = vec3(0.52, 0.66, -0.54); +const vec3 GALAXY_CORE_DIR = vec3(0.301, 0.451, 0.840); + +const float GALAXY_DEEP_LEVEL = 0.045; +const float GALAXY_BAND_FALLOFF = 3.6; +const float GALAXY_CORE_TIGHT = 26.0; +const float GALAXY_CORE_GAIN = 0.90; +const float GALAXY_CORE_WHITEN = 0.45; + +const float GALAXY_STAR_BASE = 0.020; +const float GALAXY_STAR_BAND = 0.085; +const float GALAXY_STAR_SCALE_NEAR = 26.0; +const float GALAXY_STAR_SCALE_MID = 61.0; +const float GALAXY_STAR_SCALE_FAR = 112.0; +const float GALAXY_STAR_NEAR_GAIN = 2.40; +const float GALAXY_STAR_MID_GAIN = 1.05; +const float GALAXY_STAR_FAR_GAIN = 0.55; +const float GALAXY_STAR_NEAR_RATE = 0.031; +const float GALAXY_STAR_MID_RATE = 0.025; +const float GALAXY_STAR_FAR_RATE = 0.021; + +const float GALAXY_HAZE_GAIN = 0.34; +const float GALAXY_SEA_OPACITY = 0.70; +const float GALAXY_SEA_TONE = 0.22; + +in vec3 vRay; +in vec4 FragColor; +in vec2 vScreenUv; + +out vec4 fragColor; + +vec3 galaxyStarRay(vec3 dir, float rate) { + float angle = Time * rate; + return skyRotationY(sin(angle), cos(angle)) * dir; +} + +vec3 galaxyStarLayer(vec3 dir, vec3 pole, float rate, float scale, float gain) { + vec3 probe = galaxyStarRay(dir, rate); + float band = exp(-abs(dot(probe, pole)) * GALAXY_BAND_FALLOFF); + return skyStars(probe, Time, GALAXY_STAR_BASE + band * GALAXY_STAR_BAND, scale, gain); +} + +void main() { + if (skyCoveredByGeometry(gl_FragCoord.xy)) { + discard; + } + vec3 dir = normalize(vRay); + vec3 deep = BottomRightColor.rgb * GALAXY_DEEP_LEVEL; + + if (SkyFullDome < 0.5 && dir.y <= 0.0) { + fragColor = vec4(skyFinish(deep, SKY_EXPOSURE), FragColor.a); + return; + } + + vec3 ray = skyRotationY(SkyRotSin, SkyRotCos) * dir; + vec3 pole = normalize(GALAXY_POLE); + vec3 finalCol = texture(Sampler0, vScreenUv).rgb; + + float core = skyHalo(ray, normalize(GALAXY_CORE_DIR), GALAXY_CORE_TIGHT); + finalCol += mix(TopLeftColor.rgb, vec3(1.0), GALAXY_CORE_WHITEN) * core * GALAXY_CORE_GAIN; + + finalCol += galaxyStarLayer(dir, pole, GALAXY_STAR_NEAR_RATE, + GALAXY_STAR_SCALE_NEAR, GALAXY_STAR_NEAR_GAIN); + finalCol += galaxyStarLayer(dir, pole, GALAXY_STAR_MID_RATE, + GALAXY_STAR_SCALE_MID, GALAXY_STAR_MID_GAIN); + finalCol += galaxyStarLayer(dir, pole, GALAXY_STAR_FAR_RATE, + GALAXY_STAR_SCALE_FAR, GALAXY_STAR_FAR_GAIN); + + finalCol = mix(deep, finalCol, skyEffectFade(dir.y, SkyFullDome)); + finalCol = mix(finalCol, deep, skyDepthHaze(dir.y, SkyFullDome, GALAXY_HAZE_GAIN)); + + float seaMask = skySeaMask(dir.y, SkyFullDome) * GALAXY_SEA_OPACITY; + if (seaMask > 0.0) { + finalCol = mix(finalCol, skySea(dir, Time, + skySeaTone(TopLeftColor.rgb, BottomRightColor.rgb, GALAXY_SEA_TONE), + TopLeftColor.rgb), seaMask); + } + finalCol *= skyNadirDepth(dir.y, SkyFullDome); + + fragColor = vec4(skyDither(skyFinish(finalCol, SKY_EXPOSURE), gl_FragCoord.xy), FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_storm/data.json b/src/main/resources/assets/evolution/shaders/core/sky_storm/data.json new file mode 100644 index 0000000..0e47546 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_storm/data.json @@ -0,0 +1,19 @@ +{ + "vertex": "evolution:core/sky_fullscreen", + "fragment": "evolution:core/sky_storm/fragment", + "samplers": [ + { "name": "DepthTex" } + ], + "attributes": [ + "Position", + "UV0", + "Color" + ], + "uniforms": [ + { "name": "Resolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "CameraPos", "type": "float", "count": 3, "values": [ 0.0, 0.0, 0.0 ] }, + { "name": "TopLeftColor", "type": "float", "count": 4, "values": [ 0.76, 0.84, 0.92, 1.0 ] }, + { "name": "BottomRightColor", "type": "float", "count": 4, "values": [ 0.30, 0.33, 0.35, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_storm/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/sky_storm/fragment.fsh new file mode 100644 index 0000000..42b99dd --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_storm/fragment.fsh @@ -0,0 +1,240 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +const float STORM_DOME_BIAS = 0.5; +const float STORM_CAMERA_DRIFT = 0.0009; +const float STORM_DECK_HEIGHT = 0.62; +const float STORM_FLOOR_HEIGHT = 1.30; +const float STORM_CLOUD_DRIFT_X = 0.012; +const float STORM_CLOUD_DRIFT_Z = -0.009; + +const float STORM_BROAD_SCALE = 1.55; +const float STORM_TORN_SCALE = 4.15; +const float STORM_TORN_WARP = 1.70; +const vec2 STORM_VEIN_SCALE = vec2(9.0, 2.1); +const float STORM_VEIN_DRIFT_X = -0.04; +const float STORM_VEIN_DRIFT_Y = 0.01; +const float STORM_BROAD_WEIGHT = 0.78; +const float STORM_TORN_WEIGHT = 0.50; +const float STORM_MASS_LOW = 0.24; +const float STORM_MASS_HIGH = 0.88; + +const float STORM_UNDERSIDE_HIGH = 0.92; +const float STORM_MIST_HIGH = 0.04; + +const vec3 STORM_HORIZON = vec3(0.28, 0.31, 0.33); +const vec3 STORM_ZENITH = vec3(0.055, 0.065, 0.085); +const vec3 STORM_CLOUD_LIGHT = vec3(0.35, 0.37, 0.39); +const vec3 STORM_CLOUD_DARK = vec3(0.035, 0.040, 0.055); +const vec3 STORM_MIST = vec3(0.30, 0.33, 0.35); +const vec3 STORM_HORIZON_TONE = vec3(0.150, 0.163, 0.176); +const float STORM_CLOUD_SHADE = 0.60; +const float STORM_UNDERSIDE_SHADE = 0.48; +const float STORM_CLOUD_MIX = 0.58; +const float STORM_CLOUD_MIX_GAIN = 0.34; +const vec2 STORM_STREAK_SCALE = vec2(0.65, 2.4); +const float STORM_STREAK_DRIFT = 0.035; +const float STORM_EXPOSURE = 0.58; +const float STORM_STREAK_GAIN = 0.13; +const float STORM_VEIN_GAIN = 0.13; +const float STORM_MIST_GAIN = 0.24; +const float STORM_TINT = 0.30; +const float STORM_FLOOR_SCALE = 0.70; +const float STORM_FLOOR_SHIFT = 211.0; +const float STORM_REACH_EPSILON = 0.004; +const float STORM_GLOW_LEVEL = 0.55; +const vec3 STORM_SILVER = vec3(0.86, 0.90, 0.96); +const float STORM_BREAK_LOW = 0.10; +const float STORM_BREAK_HIGH = 0.55; +const float STORM_BREAK_TIGHT = 7.0; +const float STORM_BREAK_GAIN = 1.25; +const float STORM_RIM_LOW = 0.28; +const float STORM_RIM_HIGH = 0.58; +const float STORM_RIM_TOP = 0.92; +const float STORM_RIM_TIGHT = 3.0; +const float STORM_RIM_GAIN = 0.70; + +const float STORM_RATE = 3.20; +const float STORM_STRIKE_CHANCE = 0.58; +const float STORM_FLASH_DECAY = 28.0; +const float STORM_SECOND_DELAY = 0.16; +const float STORM_SECOND_DECAY = 36.0; +const float STORM_SECOND_GAIN = 0.55; +const float STORM_GLOW_DELAY = 0.32; +const float STORM_GLOW_DECAY = 18.0; +const float STORM_GLOW_GAIN = 0.22; + +const float STORM_BOLT_EPSILON = 0.001; +const float STORM_BOLT_MIN_HEIGHT = 0.05; +const float STORM_BOLT_SPREAD = 0.62; +const float STORM_BOLT_ANCHOR_SEED = 3.1; +const float STORM_BOLT_BASE = 0.18; +const float STORM_BOLT_WOBBLE_SCALE = 28.0; +const float STORM_BOLT_WOBBLE_SEED = 9.2; +const float STORM_BOLT_WOBBLE = 0.022; +const float STORM_BOLT_JITTER_SCALE = 57.0; +const float STORM_BOLT_JITTER_RATE = 0.85; +const float STORM_BOLT_JITTER = 0.010; +const float STORM_BOLT_CORE = 0.006; +const float STORM_BOLT_EDGE = 0.030; +const float STORM_BOLT_RISE_LOW = 0.02; +const float STORM_BOLT_RISE_HIGH = 0.22; +const float STORM_BOLT_TOP_LOW = 0.76; +const float STORM_BOLT_TOP_HIGH = 1.02; +const float STORM_BRANCH_CORE = 0.004; +const float STORM_BRANCH_A_EDGE = 0.022; +const float STORM_BRANCH_A_SLOPE = 0.34; +const float STORM_BRANCH_A_OFFSET = 0.13; +const float STORM_BRANCH_A_LOW = 0.20; +const float STORM_BRANCH_A_MID = 0.36; +const float STORM_BRANCH_A_HIGH = 0.56; +const float STORM_BRANCH_A_GAIN = 0.55; +const float STORM_BRANCH_B_EDGE = 0.020; +const float STORM_BRANCH_B_SLOPE = 0.27; +const float STORM_BRANCH_B_OFFSET = 0.16; +const float STORM_BRANCH_B_LOW = 0.34; +const float STORM_BRANCH_B_MID = 0.48; +const float STORM_BRANCH_B_HIGH = 0.68; +const float STORM_BRANCH_B_GAIN = 0.42; + +const float STORM_FLASH_LOW = 0.02; +const float STORM_FLASH_HIGH = 0.82; +const float STORM_FLASH_BASE = 0.35; +const float STORM_FLASH_NOISE_SCALE = 9.0; +const float STORM_FLASH_NOISE_GAIN = 0.45; +const float STORM_FLASH_GAIN = 0.95; +const float STORM_BOLT_CEILING = 0.86; +const float STORM_LIGHTNING_NEUTRAL = 0.65; +const vec3 STORM_LIGHTNING = vec3(0.76, 0.84, 0.92); + +const float STORM_TAU = 6.28318530718; +const float STORM_HASH_SCALE = 91.3458; +const float STORM_HASH_SEED = 47453.5453; + +in vec3 vRay; +in vec4 FragColor; + +out vec4 fragColor; + +float stormHash(float p) { + return fract(sin(p * STORM_HASH_SCALE) * STORM_HASH_SEED); +} + +vec3 stormSky(vec3 dir, float up, vec3 haze) { + float dome = mix(up, dir.y, SkyFullDome) * STORM_DOME_BIAS + STORM_DOME_BIAS; + vec3 base = mix(STORM_HORIZON, STORM_ZENITH, smoothstep(0.0, 1.0, dome)); + + bool ceiling = dir.y >= 0.0; + vec3 plane = skyPlane(dir, ceiling ? STORM_DECK_HEIGHT : STORM_FLOOR_HEIGHT); + float reach = skyPlaneFalloff(plane.z, SKY_PLANE_RANGE); + if (reach <= STORM_REACH_EPSILON) { + return haze; + } + + vec2 cloudUv = plane.xy * (ceiling ? 1.0 : STORM_FLOOR_SCALE) + + (ceiling ? vec2(0.0) : vec2(STORM_FLOOR_SHIFT)); + cloudUv += CameraPos.xz * STORM_CAMERA_DRIFT + + vec2(Time * STORM_CLOUD_DRIFT_X, Time * STORM_CLOUD_DRIFT_Z); + + float broadClouds = fbm(cloudUv * STORM_BROAD_SCALE); + float tornClouds = fbm(cloudUv * STORM_TORN_SCALE + broadClouds * STORM_TORN_WARP); + float stormVeins = fbm(cloudUv * STORM_VEIN_SCALE + + vec2(Time * STORM_VEIN_DRIFT_X, Time * STORM_VEIN_DRIFT_Y)); + + float cloudMass = smoothstep(STORM_MASS_LOW, STORM_MASS_HIGH, + broadClouds * STORM_BROAD_WEIGHT + tornClouds * STORM_TORN_WEIGHT); + float underside = 1.0 - smoothstep(0.0, STORM_UNDERSIDE_HIGH, up); + float horizonMist = 1.0 - smoothstep(0.0, STORM_MIST_HIGH, up); + + vec3 clouds = mix(STORM_CLOUD_LIGHT, STORM_CLOUD_DARK, + cloudMass * (STORM_CLOUD_SHADE + underside * STORM_UNDERSIDE_SHADE)); + float streakShadow = fbm(cloudUv * STORM_STREAK_SCALE + vec2(0.0, Time * STORM_STREAK_DRIFT)); + + vec3 light = skyLightDir(Time); + float breakThrough = smoothstep(STORM_BREAK_HIGH, STORM_BREAK_LOW, cloudMass) + * skyHalo(dir, light, STORM_BREAK_TIGHT); + float rim = smoothstep(STORM_RIM_LOW, STORM_RIM_HIGH, cloudMass) + * (1.0 - smoothstep(STORM_RIM_HIGH, STORM_RIM_TOP, cloudMass)) + * skyHalo(dir, light, STORM_RIM_TIGHT); + clouds += STORM_SILVER * (breakThrough * STORM_BREAK_GAIN + rim * STORM_RIM_GAIN); + + vec3 sky = mix(base, clouds, STORM_CLOUD_MIX + cloudMass * STORM_CLOUD_MIX_GAIN); + sky *= STORM_EXPOSURE + streakShadow * STORM_STREAK_GAIN + - stormVeins * underside * STORM_VEIN_GAIN; + sky = mix(sky, STORM_MIST, horizonMist * STORM_MIST_GAIN); + + vec3 tinted = mix(sky, sky * TopLeftColor.rgb, STORM_TINT); + return mix(haze, tinted, reach); +} + +float stormPulse() { + float stormTime = Time * STORM_RATE; + float cell = floor(stormTime); + float local = fract(stormTime); + float strike = step(STORM_STRIKE_CHANCE, stormHash(cell)); + float firstFlash = exp(-local * STORM_FLASH_DECAY); + float secondFlash = exp(-abs(local - STORM_SECOND_DELAY) * STORM_SECOND_DECAY) * STORM_SECOND_GAIN; + float afterGlow = exp(-abs(local - STORM_GLOW_DELAY) * STORM_GLOW_DECAY) * STORM_GLOW_GAIN; + + return strike * clamp(firstFlash + secondFlash + afterGlow, 0.0, 1.0); +} + +float stormBolt(vec3 dir, float pulse) { + if (pulse <= STORM_BOLT_EPSILON || dir.y < STORM_BOLT_MIN_HEIGHT) { + return 0.0; + } + + float cell = floor(Time * STORM_RATE); + float anchor = mix(-STORM_BOLT_SPREAD, STORM_BOLT_SPREAD, stormHash(cell + STORM_BOLT_ANCHOR_SEED)); + vec2 uv = vec2(dir.x - anchor, dir.y - STORM_BOLT_BASE); + uv.x += sin(uv.y * STORM_BOLT_WOBBLE_SCALE + stormHash(cell + STORM_BOLT_WOBBLE_SEED) * STORM_TAU) * STORM_BOLT_WOBBLE; + uv.x += sin(uv.y * STORM_BOLT_JITTER_SCALE + Time * STORM_BOLT_JITTER_RATE) * STORM_BOLT_JITTER; + + float mainBolt = (1.0 - smoothstep(STORM_BOLT_CORE, STORM_BOLT_EDGE, abs(uv.x))) + * smoothstep(STORM_BOLT_RISE_LOW, STORM_BOLT_RISE_HIGH, uv.y) + * (1.0 - smoothstep(STORM_BOLT_TOP_LOW, STORM_BOLT_TOP_HIGH, uv.y)); + float branchA = (1.0 - smoothstep(STORM_BRANCH_CORE, STORM_BRANCH_A_EDGE, + abs(uv.x - uv.y * STORM_BRANCH_A_SLOPE + STORM_BRANCH_A_OFFSET))) + * smoothstep(STORM_BRANCH_A_LOW, STORM_BRANCH_A_MID, uv.y) + * (1.0 - smoothstep(STORM_BRANCH_A_MID, STORM_BRANCH_A_HIGH, uv.y)); + float branchB = (1.0 - smoothstep(STORM_BRANCH_CORE, STORM_BRANCH_B_EDGE, + abs(uv.x + uv.y * STORM_BRANCH_B_SLOPE - STORM_BRANCH_B_OFFSET))) + * smoothstep(STORM_BRANCH_B_LOW, STORM_BRANCH_B_MID, uv.y) + * (1.0 - smoothstep(STORM_BRANCH_B_MID, STORM_BRANCH_B_HIGH, uv.y)); + + return clamp((mainBolt + branchA * STORM_BRANCH_A_GAIN + branchB * STORM_BRANCH_B_GAIN) * pulse, 0.0, 1.0); +} + +void main() { + if (skyCoveredByGeometry(gl_FragCoord.xy)) { + discard; + } + vec3 dir = normalize(vRay); + vec3 skyLight = skyLightDir(Time); + vec3 horizonTone = mix(STORM_HORIZON_TONE, STORM_HORIZON_TONE * TopLeftColor.rgb, STORM_TINT); + vec3 horizon = skyHorizonGlow(dir, skyLight, horizonTone, STORM_SILVER * STORM_GLOW_LEVEL); + + if (SkyFullDome < 0.5 && dir.y <= 0.0) { + fragColor = vec4(skyFinish(horizonTone, SKY_EXPOSURE), FragColor.a); + return; + } + + float up = clamp(dir.y, 0.0, 1.0); + vec3 finalCol = stormSky(dir, up, horizon); + + vec3 lightning = mix(STORM_LIGHTNING, STORM_LIGHTNING * TopLeftColor.rgb, 1.0 - STORM_LIGHTNING_NEUTRAL); + float pulse = stormPulse(); + float cloudFlash = pulse * smoothstep(STORM_FLASH_LOW, STORM_FLASH_HIGH, up) + * (STORM_FLASH_BASE + fbm(dir.xz * STORM_FLASH_NOISE_SCALE) * STORM_FLASH_NOISE_GAIN); + + finalCol += lightning * cloudFlash * STORM_FLASH_GAIN; + finalCol = mix(finalCol, lightning, clamp(stormBolt(dir, pulse), 0.0, STORM_BOLT_CEILING)); + finalCol = mix(horizonTone, finalCol, skyEffectFade(dir.y, SkyFullDome)); + finalCol *= skyNadirDepth(dir.y, SkyFullDome); + + fragColor = vec4(skyDither(skyFinish(finalCol, SKY_EXPOSURE), gl_FragCoord.xy), FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_upsample/data.json b/src/main/resources/assets/evolution/shaders/core/sky_upsample/data.json new file mode 100644 index 0000000..1b72269 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_upsample/data.json @@ -0,0 +1,19 @@ +{ + "vertex": "evolution:core/sky_fullscreen_uv", + "fragment": "evolution:core/sky_upsample/fragment", + "attributes": [ + "Position", + "UV0", + "Color" + ], + "samplers": [ + { "name": "Sampler0" }, + { "name": "DepthTex" } + ], + "uniforms": [ + { "name": "Resolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "TopLeftColor", "type": "float", "count": 4, "values": [ 0.0, 1.0, 0.5, 1.0 ] }, + { "name": "BottomRightColor", "type": "float", "count": 4, "values": [ 0.0, 0.2, 0.8, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/sky_upsample/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/sky_upsample/fragment.fsh new file mode 100644 index 0000000..db6d94c --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/sky_upsample/fragment.fsh @@ -0,0 +1,69 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +uniform sampler2D Sampler0; + +in vec3 vRay; +in vec4 FragColor; +in vec2 vScreenUv; + +out vec4 fragColor; + +const float UPSAMPLE_SEA_OPACITY = 0.88; +const float UPSAMPLE_WEIGHT_NORMALIZE = 1.0 / 6.0; +const float UPSAMPLE_TEXEL_CENTER = 0.5; +const float UPSAMPLE_PAIR_SPAN = 1.0; + +vec4 upsampleWeights(float x) { + float x2 = x * x; + float x3 = x2 * x; + return vec4( + -x3 + 3.0 * x2 - 3.0 * x + 1.0, + 3.0 * x3 - 6.0 * x2 + 4.0, + -3.0 * x3 + 3.0 * x2 + 3.0 * x + 1.0, + x3) * UPSAMPLE_WEIGHT_NORMALIZE; +} + +vec3 upsampleBackdrop(vec2 uv) { + vec2 resolution = vec2(textureSize(Sampler0, 0)); + vec2 coord = uv * resolution - UPSAMPLE_TEXEL_CENTER; + vec2 base = floor(coord); + vec2 offset = coord - base; + + vec4 weightX = upsampleWeights(offset.x); + vec4 weightY = upsampleWeights(offset.y); + + vec2 pairWeight = vec2(weightX.x + weightX.y, weightY.x + weightY.y); + vec2 pairWeightHigh = vec2(weightX.z + weightX.w, weightY.z + weightY.w); + vec2 pairOffsetLow = vec2(weightX.y / pairWeight.x, weightY.y / pairWeight.y); + vec2 pairOffsetHigh = vec2(weightX.w / pairWeightHigh.x, weightY.w / pairWeightHigh.y); + + vec2 low = (base - UPSAMPLE_PAIR_SPAN + pairOffsetLow + UPSAMPLE_TEXEL_CENTER) / resolution; + vec2 high = (base + UPSAMPLE_PAIR_SPAN + pairOffsetHigh + UPSAMPLE_TEXEL_CENTER) / resolution; + + vec3 topRow = mix(texture(Sampler0, vec2(low.x, low.y)).rgb, + texture(Sampler0, vec2(high.x, low.y)).rgb, pairWeightHigh.x); + vec3 bottomRow = mix(texture(Sampler0, vec2(low.x, high.y)).rgb, + texture(Sampler0, vec2(high.x, high.y)).rgb, pairWeightHigh.x); + return mix(topRow, bottomRow, pairWeightHigh.y); +} + +void main() { + if (skyCoveredByGeometry(gl_FragCoord.xy)) { + discard; + } + vec3 dir = normalize(vRay); + vec3 finalCol = upsampleBackdrop(vScreenUv); + + float seaMask = skySeaMask(dir.y, SkyFullDome) * UPSAMPLE_SEA_OPACITY; + if (seaMask > 0.0) { + finalCol = mix(finalCol, skySea(dir, Time, BottomRightColor.rgb, TopLeftColor.rgb), seaMask); + } + finalCol *= skyNadirDepth(dir.y, SkyFullDome); + + fragColor = vec4(skyDither(skyFinish(finalCol, SKY_EXPOSURE), gl_FragCoord.xy), FragColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/core/snow/cover/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/snow/cover/fragment.fsh new file mode 100644 index 0000000..5134509 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/snow/cover/fragment.fsh @@ -0,0 +1,59 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +in vec3 WorldPos; +out vec4 OutColor; + +const float PIXELS = 16.0; +const float PIXEL_CENTER = 0.5; +const float FACE_EPSILON = 0.002; +const float COVER_SCALE = 0.32; +const float COVER_GAIN = 1.35; +const float COVER_BIAS = 0.95; +const float POWDER_SCALE = 5.5; +const float POWDER_GAIN = 0.22; +const float SOLID_DEPTH = 0.3; +const float SPECKLE_SEED = 17.31; +const float TONE_SEED = 3.97; +const float TONE_MID = 0.6; +const float TONE_DARK = 0.88; +const vec3 SNOW_MID = vec3(0.95, 0.98, 0.98); +const vec3 SNOW_DARK = vec3(0.89, 0.94, 0.95); +const float SHADE_TOP = 1.0; +const float SHADE_NORTH_SOUTH = 0.8; +const float SHADE_EAST_WEST = 0.6; +const float ALPHA_CUTOFF = 0.01; + +void main() { + vec3 viewDir = normalize(CameraPos - WorldPos); + vec3 faceNormal = normalize(cross(dFdx(WorldPos), dFdy(WorldPos))); + if (dot(faceNormal, viewDir) < 0.0) faceNormal = -faceNormal; + vec3 axis = abs(faceNormal); + + vec3 inset = WorldPos - faceNormal * FACE_EPSILON; + vec3 texel = floor(inset * PIXELS); + vec2 column = (texel.xz + PIXEL_CENTER) / PIXELS; + + float field = fbm(column * COVER_SCALE); + float powder = fbm(column * POWDER_SCALE) - 0.5; + float depth = clamp(Progress, 0.0, 1.0) * COVER_GAIN - (1.0 - field) * COVER_BIAS + powder * POWDER_GAIN; + if (depth <= 0.0) discard; + float speckle = hash12(column * PIXELS + SPECKLE_SEED); + if (speckle > depth / SOLID_DEPTH) discard; + + float tone = hash13(texel + TONE_SEED); + vec3 albedo = tone < TONE_MID ? vec3(1.0) : (tone < TONE_DARK ? SNOW_MID : SNOW_DARK); + + float shade = axis.y > 0.5 ? SHADE_TOP : (axis.x > axis.z ? SHADE_EAST_WEST : SHADE_NORTH_SOUTH); + vec3 color = TintColor * albedo * shade * FragColor.r; + color = mix(color, TopLeftColor.rgb, FragColor.g); + + float alpha = FragColor.a * Fade; + if (alpha <= ALPHA_CUTOFF) discard; + + OutColor = vec4(clamp(color, 0.0, 1.0), alpha); +} diff --git a/src/main/resources/assets/evolution/shaders/core/snow/cover/world_data.json b/src/main/resources/assets/evolution/shaders/core/snow/cover/world_data.json new file mode 100644 index 0000000..07362c7 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/snow/cover/world_data.json @@ -0,0 +1,4 @@ +{ + "vertex": "evolution:core/position_color_world", + "fragment": "evolution:core/snow/cover/fragment" +} diff --git a/src/main/resources/assets/evolution/shaders/core/squircle/data.json b/src/main/resources/assets/evolution/shaders/core/squircle/data.json new file mode 100644 index 0000000..0c582bc --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/squircle/data.json @@ -0,0 +1,14 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/squircle/fragment", + "samplers": [], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "ColorModulator", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "Smoothness", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "CornerSmoothness", "type": "float", "count": 1, "values": [ 1.0 ] } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/shaders/core/squircle/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/squircle/fragment.fsh new file mode 100644 index 0000000..271946a --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/squircle/fragment.fsh @@ -0,0 +1,42 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; + +out vec4 OutColor; + +float roundedBoxSDF(vec2 p, vec2 b, vec4 r, float smoothness) { + r = min(r, vec4(min(b.x, b.y))); + r.xy = (p.x > 0.0) ? r.xy : r.zw; + r.x = (p.y > 0.0) ? r.x : r.y; + vec2 q = abs(p) - b + r.x; + vec2 q_clamped = max(q, 0.0); + + float len = pow(pow(q_clamped.x, smoothness) + pow(q_clamped.y, smoothness), 1.0 / smoothness); + + return min(max(q.x, q.y), 0.0) + len - r.x; +} + +void main() { + vec2 center = Size * 0.5; + + float distance = roundedBoxSDF( + center - (FragCoord * Size), + center, + Radius, + CornerSmoothness + ); + + float alpha = 1.0 - smoothstep(-Smoothness.x, 0.0, distance); + vec4 finalColor = vec4(FragColor.rgb, FragColor.a * alpha); + + if (finalColor.a == 0.0) { + discard; + } + + OutColor = finalColor * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/squircle_texture/data.json b/src/main/resources/assets/evolution/shaders/core/squircle_texture/data.json new file mode 100644 index 0000000..38b6263 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/squircle_texture/data.json @@ -0,0 +1,16 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/squircle_texture/fragment", + "samplers": [ + { "name": "Sampler0" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "ColorModulator", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "Smoothness", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "CornerSmoothness", "type": "float", "count": 1, "values": [ 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/squircle_texture/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/squircle_texture/fragment.fsh new file mode 100644 index 0000000..14db39c --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/squircle_texture/fragment.fsh @@ -0,0 +1,40 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +in vec2 TexCoord; + +uniform sampler2D Sampler0; + +out vec4 OutColor; + +float roundedBoxSDF(vec2 p, vec2 b, vec4 r, float smoothness) { + r = min(r, vec4(min(b.x, b.y))); + r.xy = (p.x > 0.0) ? r.xy : r.zw; + r.x = (p.y > 0.0) ? r.x : r.y; + vec2 q = abs(p) - b + r.x; + vec2 q_clamped = max(q, 0.0); + + float len = pow(pow(q_clamped.x, smoothness) + pow(q_clamped.y, smoothness), 1.0 / smoothness); + + return min(max(q.x, q.y), 0.0) + len - r.x; +} + +void main() { + vec2 center = Size * 0.5; + float distance = roundedBoxSDF(center - (FragCoord * Size), center - 1.0, Radius, CornerSmoothness); + float alpha = 1.0 - smoothstep(1.0 - Smoothness.x, 1.0, distance); + + vec4 whiteColor = vec4(1.0, 1.0, 1.0, alpha); + vec4 finalColor = whiteColor * texture(Sampler0, TexCoord) * FragColor; + + if (finalColor.a == 0.0) { + discard; + } + + OutColor = finalColor * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/texture/data.json b/src/main/resources/assets/evolution/shaders/core/texture/data.json new file mode 100644 index 0000000..bdfa5db --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/texture/data.json @@ -0,0 +1,18 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/texture/fragment", + "samplers": [ + { "name": "Sampler0" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "ColorModulator", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "Smoothness", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "MaskTopY", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskBottomY", "type": "float", "count": 1, "values": [ -1.0 ] }, + { "name": "MaskFadeHeight", "type": "float", "count": 1, "values": [ 0.0 ] } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/evolution/shaders/core/texture/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/texture/fragment.fsh new file mode 100644 index 0000000..c849673 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/texture/fragment.fsh @@ -0,0 +1,35 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; +in vec2 TexCoord; + +uniform sampler2D Sampler0; + +out vec4 OutColor; + +void main() { + vec2 center = Size * 0.5; + float distance = roundedBoxSDF(center - (FragCoord * Size), center - 1.0, Radius); + + float alpha = 1.0 - smoothstep(1.0 - Smoothness.x, 1.0, distance); + vec4 whiteColor = vec4(1.0, 1.0, 1.0, alpha); + + vec4 finalColor = whiteColor * texture(Sampler0, TexCoord) * FragColor; + + if (finalColor.a == 0.0) { + discard; + } + + finalColor.a = applyAlphaMask(finalColor.a); + if (finalColor.a <= 0.001) { + discard; + } + + OutColor = finalColor * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/texture_blur/data.json b/src/main/resources/assets/evolution/shaders/core/texture_blur/data.json new file mode 100644 index 0000000..2919b9a --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/texture_blur/data.json @@ -0,0 +1,15 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/texture_blur/fragment", + "samplers": [ + { "name": "Sampler0" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "Smoothness", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "BlurRadius", "type": "float", "count": 1, "values": [ 0.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/texture_blur/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/texture_blur/fragment.fsh new file mode 100644 index 0000000..46ffebd --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/texture_blur/fragment.fsh @@ -0,0 +1,29 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec2 TexCoord; +in vec4 FragColor; + +uniform sampler2D Sampler0; + +out vec4 OutColor; + +void main() { + vec3 average = texture(Sampler0, TexCoord).rgb; + + vec2 center = Size * 0.5; + float distance = roundedBoxSDF(center - (FragCoord * Size), center - 1.0, Radius); + + float alpha = 1.0 - smoothstep(1.0 - Smoothness.x, 1.0, distance); + vec4 finalColor = vec4(average, alpha) * FragColor; + + if (finalColor.a == 0.0) { + discard; + } + + OutColor = finalColor; +} diff --git a/src/main/resources/assets/evolution/shaders/core/theme_backdrop/data.json b/src/main/resources/assets/evolution/shaders/core/theme_backdrop/data.json new file mode 100644 index 0000000..ef0749d --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/theme_backdrop/data.json @@ -0,0 +1,18 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/theme_backdrop/fragment", + "samplers": [], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ColorModulator", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "Smoothness", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "Backdrop", "type": "float", "count": 4, "values": [ 0.0, 0.0, 1.0, 1.0 ] }, + { "name": "TopLeftColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "BottomLeftColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] }, + { "name": "TopRightColor", "type": "float", "count": 4, "values": [ 1.0, 1.0, 1.0, 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/theme_backdrop/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/theme_backdrop/fragment.fsh new file mode 100644 index 0000000..44a56f5 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/theme_backdrop/fragment.fsh @@ -0,0 +1,256 @@ +#version 150 + +#moj_import +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; + +out vec4 OutColor; + +const float MODE_IRIDESCENCE = 1.0; +const float MODE_MAGMA = 2.0; +const float MODE_DIGITAL_RAIN = 3.0; +const float MODE_GRID_HORIZON = 4.0; +const float MODE_SINGULARITY = 5.0; +const float MODE_EMBER = 6.0; +const float MODE_EPSILON = 0.5; + +const float LOOP_MIN = 1.0; + +const float RAMP_MID = 0.5; +const float RAMP_SPAN = 2.0; + +const float EDGE_INNER = 0.18; +const float EDGE_OUTER = 1.0; +const float EDGE_FLOOR = 0.22; +const float ALPHA_CUTOFF = 0.004; +const float TAU = 6.2831853; + +const float FOIL_TILE = 27.0; +const float FOIL_WARP_LAPS = 1.0; +const float FOIL_WARP_SCALE = 2.1; +const float FOIL_WARP_GAIN = 1.15; +const float FOIL_FILM_SCALE = 1.55; +const float FOIL_BAND_COUNT = 2.6; +const vec2 FOIL_BAND_DIR = vec2(0.62, 0.34); +const float FOIL_BAND_CYCLES = 33.0; +const float FOIL_SHEEN_EXPONENT = 14.0; +const float FOIL_SHEEN_GAIN = 0.18; +const float FOIL_BASE_ALPHA = 0.04; +const float FOIL_BAND_ALPHA = 0.96; + +const float MAGMA_TILE = 24.0; +const float MAGMA_RISE_LAPS = 2.0; +const float MAGMA_FLOW_LAPS = 3.0; +const float MAGMA_FIELD_SCALE = 2.6; +const float MAGMA_FLOW_GAIN = 1.35; +const float MAGMA_RIDGE_EXPONENT = 5.0; +const float MAGMA_CORE_GAIN = 1.4; +const float MAGMA_GLOW_EXPONENT = 1.15; +const float MAGMA_CORE_ALPHA = 0.95; + +const float RAIN_DENSITY = 44.0; +const float RAIN_ROW_SCALE = 0.62; +const float RAIN_COLUMN_SEED = 17.3; +const float RAIN_ALIVE_SEED = 91.7; +const float RAIN_STEPS_MIN = 210.0; +const float RAIN_STEPS_SPAN = 513.0; +const float RAIN_SPAN = 23.0; +const float RAIN_TRAIL = 9.0; +const float RAIN_FALLOFF = 3.0; +const float RAIN_HEAD_START = 0.86; +const float RAIN_HEAD_GAIN = 0.55; +const float RAIN_FLICKER = 7.0; +const float RAIN_CELL_SPARSITY = 0.30; +const float RAIN_COLUMN_SPARSITY = 0.22; +const float RAIN_ALPHA = 0.95; + +const float GRID_HORIZON_Y = -0.06; +const float GRID_HEIGHT = 0.35; +const float GRID_COLUMNS = 6.0; +const float GRID_ROWS = 1.6; +const float GRID_CYCLES = 135.0; +const float GRID_LINE_WIDTH = 0.06; +const float GRID_AA_MIN = 0.004; +const float GRID_FADE = 0.20; +const float GRID_MIN_DEPTH = 0.008; +const float GRID_ALPHA = 0.85; +const float SUN_RADIUS = 0.30; +const float SUN_CENTER_Y = -0.16; +const float SUN_EDGE = 0.02; +const float SUN_SLAT_FREQ = 26.0; +const float SUN_SLAT_DUTY = 0.42; +const float SUN_SLAT_START = 0.15; +const float SUN_HALO_FALLOFF = 9.0; +const float SUN_HALO_ALPHA = 0.30; +const float SUN_TINT_SPAN = 0.5; + +const float VORTEX_TILE = 16.0; +const float VORTEX_ARMS = 3.0; +const float VORTEX_TWIST = 2.4; +const float VORTEX_MIN_RADIUS = 0.05; +const float VORTEX_TURNS = 26.0; +const float VORTEX_SHARPNESS = 2.2; +const float VORTEX_CORE = 0.14; +const float VORTEX_FEATHER = 0.28; +const float VORTEX_EDGE = 0.95; +const float VORTEX_NOISE_SCALE = 3.0; +const float VORTEX_NOISE_GAIN = 0.55; +const float VORTEX_NOISE_SPREAD = 2.0; +const float VORTEX_RING_WIDTH = 0.05; +const float VORTEX_RING_GAIN = 0.90; +const float VORTEX_ALPHA = 0.90; + +vec3 accentAt(float position) { + float clamped = clamp(position, 0.0, 1.0); + if (clamped <= RAMP_MID) { + return mix(TopLeftColor.rgb, BottomLeftColor.rgb, clamped * RAMP_SPAN); + } + return mix(BottomLeftColor.rgb, TopRightColor.rgb, (clamped - RAMP_MID) * RAMP_SPAN); +} + +float edgeWeight(vec2 coord) { + vec2 offset = abs(coord - 0.5) * 2.0; + return mix(EDGE_FLOOR, 1.0, smoothstep(EDGE_INNER, EDGE_OUTER, max(offset.x, offset.y))); +} + +void iridescence(vec2 uv, float time, float loop, out vec3 color, out float weight) { + float drift = time * FOIL_TILE * FOIL_WARP_LAPS / loop; + vec2 warp = vec2( + loopFbm(uv * FOIL_WARP_SCALE + vec2(drift, 0.0), FOIL_TILE), + loopFbm(uv * FOIL_WARP_SCALE + vec2(5.2, 1.3) - vec2(0.0, drift), FOIL_TILE)); + float film = loopFbm(uv * FOIL_FILM_SCALE + warp * FOIL_WARP_GAIN, FOIL_TILE); + float phase = film * FOIL_BAND_COUNT + dot(uv, FOIL_BAND_DIR) + time * FOIL_BAND_CYCLES / loop; + float bands = 0.5 + 0.5 * cos(TAU * phase); + float sheen = pow(bands, FOIL_SHEEN_EXPONENT); + color = accentAt(bands) + vec3(sheen * FOIL_SHEEN_GAIN); + weight = FOIL_BASE_ALPHA + FOIL_BAND_ALPHA * bands * bands * bands; +} + +void magma(vec2 uv, float time, float loop, out vec3 color, out float weight) { + float rise = time * MAGMA_TILE * MAGMA_RISE_LAPS / loop; + float drift = time * MAGMA_TILE * MAGMA_FLOW_LAPS / loop; + vec2 field = uv * MAGMA_FIELD_SCALE + vec2(0.0, -rise); + vec2 flow = vec2( + loopFbm(field + vec2(drift, 0.0), MAGMA_TILE), + loopFbm(field + vec2(3.7, 8.1) - vec2(drift, 0.0), MAGMA_TILE)); + float crust = loopFbm(field + flow * MAGMA_FLOW_GAIN, MAGMA_TILE); + float ridge = 1.0 - abs(crust * 2.0 - 1.0); + ridge = pow(clamp(ridge, 0.0, 1.0), MAGMA_RIDGE_EXPONENT); + color = accentAt(ridge * MAGMA_CORE_GAIN); + weight = pow(ridge, MAGMA_GLOW_EXPONENT) * MAGMA_CORE_ALPHA; +} + +void digitalRain(vec2 uv, float time, float loop, out vec3 color, out float weight) { + vec2 cell = uv * vec2(RAIN_DENSITY, RAIN_DENSITY * RAIN_ROW_SCALE); + float column = floor(cell.x); + float seed = hash12(vec2(column, RAIN_COLUMN_SEED)); + float steps = floor(RAIN_STEPS_MIN + seed * RAIN_STEPS_SPAN); + float fall = time * steps * RAIN_TRAIL / loop + seed * RAIN_SPAN; + float stream = cell.y - fall; + float trail = fract(stream / RAIN_TRAIL); + float glow = pow(trail, RAIN_FALLOFF); + float head = smoothstep(RAIN_HEAD_START, 1.0, trail); + float lit = step(RAIN_CELL_SPARSITY, + hash12(vec2(column, floor(stream) + floor(time * RAIN_FLICKER)))); + float alive = step(RAIN_COLUMN_SPARSITY, hash12(vec2(column, RAIN_ALIVE_SEED))); + color = accentAt(glow) + vec3(head * RAIN_HEAD_GAIN); + weight = glow * lit * alive * RAIN_ALPHA; +} + +void gridHorizon(vec2 uv, float time, float loop, out vec3 color, out float weight) { + float depth = uv.y - GRID_HORIZON_Y; + float perspective = GRID_HEIGHT / max(depth, GRID_MIN_DEPTH); + vec2 lane = vec2(uv.x * perspective * GRID_COLUMNS, + perspective * GRID_ROWS + time * GRID_CYCLES / loop); + vec2 blur = max(fwidth(lane), vec2(GRID_AA_MIN)); + vec2 span = abs(fract(lane) - 0.5); + vec2 rails = smoothstep(GRID_LINE_WIDTH + blur, GRID_LINE_WIDTH - blur, span); + float fade = smoothstep(0.0, GRID_FADE, depth); + + vec2 toSun = vec2(uv.x, uv.y - SUN_CENTER_Y); + float reach = length(toSun); + float disc = 1.0 - smoothstep(SUN_RADIUS - SUN_EDGE, SUN_RADIUS, reach); + float slats = step(SUN_SLAT_DUTY, fract(toSun.y * SUN_SLAT_FREQ)); + float carved = mix(1.0, slats, smoothstep(SUN_SLAT_START, SUN_RADIUS, toSun.y)); + float halo = exp(-max(reach - SUN_RADIUS, 0.0) * SUN_HALO_FALLOFF) * SUN_HALO_ALPHA; + + if (depth > GRID_MIN_DEPTH) { + color = accentAt(1.0 - fade); + weight = max(rails.x, rails.y) * fade * GRID_ALPHA; + return; + } + color = accentAt(0.5 - toSun.y / SUN_RADIUS * SUN_TINT_SPAN); + weight = max(disc * carved, halo) * GRID_ALPHA; +} + +void singularity(vec2 uv, float time, float loop, out vec3 color, out float weight) { + float radius = max(length(uv), VORTEX_MIN_RADIUS); + float swirl = atan(uv.y, uv.x) + VORTEX_TWIST / radius + - time * TAU * VORTEX_TURNS / loop; + float arms = 0.5 + 0.5 * cos(swirl * VORTEX_ARMS); + float turbulence = loopFbm(vec2(cos(swirl), sin(swirl)) * radius * VORTEX_NOISE_SCALE, + VORTEX_TILE); + float body = pow(arms, VORTEX_SHARPNESS) + * mix(1.0, turbulence * VORTEX_NOISE_SPREAD, VORTEX_NOISE_GAIN); + float disc = smoothstep(VORTEX_CORE, VORTEX_CORE + VORTEX_FEATHER, radius) + * (1.0 - smoothstep(VORTEX_EDGE, VORTEX_EDGE + VORTEX_FEATHER, radius)); + float offset = (radius - VORTEX_CORE) / VORTEX_RING_WIDTH; + float ring = exp(-offset * offset) * VORTEX_RING_GAIN; + color = accentAt(body + ring); + weight = (body * disc + ring) * VORTEX_ALPHA; +} + +void main() { + float intensity = Backdrop.y; + if (intensity <= 0.0) { + discard; + } + + vec2 center = Size * 0.5; + float shapeDistance = roundedBoxSDF(center - (FragCoord * Size), center, Radius); + float shape = 1.0 - smoothstep(-Smoothness.x, 0.0, shapeDistance); + if (shape <= 0.0) { + discard; + } + + float mode = Backdrop.x; + float loop = max(Backdrop.z, LOOP_MIN); + float time = mod(Time, loop); + vec2 uv = (FragCoord - 0.5) * (Size / max(min(Size.x, Size.y), 1.0)) * Backdrop.w; + + if (abs(mode - MODE_EMBER) < MODE_EPSILON) { + float emberAlpha = FragColor.a * shape * intensity; + if (emberAlpha < ALPHA_CUTOFF) { + discard; + } + vec3 emberColor = ember(FragCoord, Size.y / max(Size.x, 1.0), time / loop, 1.0, + TopLeftColor.rgb, BottomLeftColor.rgb, TopRightColor.rgb); + OutColor = vec4(clamp(emberColor, 0.0, 1.0), emberAlpha) * ColorModulator; + return; + } + + vec3 color = vec3(0.0); + float weight = 0.0; + if (abs(mode - MODE_IRIDESCENCE) < MODE_EPSILON) { + iridescence(uv, time, loop, color, weight); + } else if (abs(mode - MODE_MAGMA) < MODE_EPSILON) { + magma(uv, time, loop, color, weight); + } else if (abs(mode - MODE_DIGITAL_RAIN) < MODE_EPSILON) { + digitalRain(uv, time, loop, color, weight); + } else if (abs(mode - MODE_GRID_HORIZON) < MODE_EPSILON) { + gridHorizon(uv, time, loop, color, weight); + } else if (abs(mode - MODE_SINGULARITY) < MODE_EPSILON) { + singularity(uv, time, loop, color, weight); + } + + float alpha = FragColor.a * shape * intensity * weight * edgeWeight(FragCoord); + if (alpha < ALPHA_CUTOFF) { + discard; + } + + OutColor = vec4(clamp(color, 0.0, 1.0), alpha) * ColorModulator; +} diff --git a/src/main/resources/assets/evolution/shaders/core/theme_wipe/data.json b/src/main/resources/assets/evolution/shaders/core/theme_wipe/data.json new file mode 100644 index 0000000..3f4ca82 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/theme_wipe/data.json @@ -0,0 +1,16 @@ +{ + "vertex": "evolution:core/position_texture_color", + "fragment": "evolution:core/theme_wipe/fragment", + "samplers": [ + { "name": "Sampler0" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] }, + { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "Smoothness", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Progress", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "SweepOrigin", "type": "float", "count": 2, "values": [ 0.5, 0.5 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/theme_wipe/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/theme_wipe/fragment.fsh new file mode 100644 index 0000000..a2b620f --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/theme_wipe/fragment.fsh @@ -0,0 +1,37 @@ +#version 150 + +#moj_import +#moj_import +#moj_import + +in vec2 FragCoord; +in vec2 TexCoord; +in vec4 FragColor; + +uniform sampler2D Sampler0; + +out vec4 OutColor; + +const float EDGE_FEATHER = 1.0; +const float HALF = 0.5; +const float OPAQUE = 1.0; + +void main() { + vec2 pixel = FragCoord * Size; + vec2 origin = SweepOrigin * Size; + float reach = length(max(origin, Size - origin)); + + float opened = smoothstep(reach * Progress - EDGE_FEATHER, reach * Progress, distance(pixel, origin)); + if (opened <= 0.0) { + discard; + } + + vec2 center = Size * HALF; + float shape = OPAQUE - smoothstep(-Smoothness.x, 0.0, roundedBoxSDF(center - pixel, center, Radius)); + float alpha = opened * shape * FragColor.a; + if (alpha <= 0.0) { + discard; + } + + OutColor = vec4(texture(Sampler0, TexCoord).rgb, alpha); +} diff --git a/src/main/resources/assets/evolution/shaders/core/trail_glass/data.json b/src/main/resources/assets/evolution/shaders/core/trail_glass/data.json new file mode 100644 index 0000000..2e0194b --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/trail_glass/data.json @@ -0,0 +1,15 @@ +{ + "vertex": "evolution:core/position_color", + "fragment": "evolution:core/trail_glass/fragment", + "samplers": [ + { "name": "Sampler0" } + ], + "uniforms": [ + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "Resolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "TintColor", "type": "float", "count": 3, "values": [ 1.0, 1.0, 1.0 ] }, + { "name": "Fade", "type": "float", "count": 1, "values": [ 1.0 ] } + ] +} diff --git a/src/main/resources/assets/evolution/shaders/core/trail_glass/fragment.fsh b/src/main/resources/assets/evolution/shaders/core/trail_glass/fragment.fsh new file mode 100644 index 0000000..68f620b --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/trail_glass/fragment.fsh @@ -0,0 +1,59 @@ +#version 150 + +#moj_import +#moj_import + +in vec2 FragCoord; +in vec4 FragColor; + +uniform sampler2D Sampler0; + +out vec4 OutColor; + +#define TRAIL_REFR 0.035 +#define TRAIL_CHROMATIC 1.22 +#define TRAIL_FROST 6.0 + +void main() { + float v = FragColor.r; + float fade = FragColor.a * Fade; + + float taper = smoothstep(0.0, 0.1, v) * smoothstep(1.0, 0.9, v); + float alpha = fade * taper; + if (alpha <= 0.004) { + discard; + } + + vec2 uv = gl_FragCoord.xy / Resolution; + vec2 texel = 1.0 / Resolution; + + float curve = v * 2.0 - 1.0; + float bend = curve * (0.4 + 0.6 * abs(curve)); + + vec2 refr = vec2(0.0, bend * TRAIL_REFR); + + vec3 scene; + scene.r = texture(Sampler0, uv + refr).r; + scene.g = texture(Sampler0, uv + refr * TRAIL_CHROMATIC).g; + scene.b = texture(Sampler0, uv + refr * TRAIL_CHROMATIC * TRAIL_CHROMATIC).b; + + vec3 frost = vec3(0.0); + for (int i = 0; i < 8; i++) { + float ang = 0.785398 * float(i) + 0.39; + vec2 dir = vec2(cos(ang), sin(ang)) * texel * TRAIL_FROST; + frost += texture(Sampler0, uv + refr + dir).rgb; + frost += texture(Sampler0, uv + refr + dir * 0.45).rgb; + } + scene = mix(scene, frost * 0.0625, 0.6); + + float luma = dot(scene, vec3(0.299, 0.587, 0.114)); + scene = mix(vec3(luma), scene, 1.25); + scene = scene * 1.08 + 0.02; + + scene = mix(scene, scene * (0.75 + 0.5 * TintColor), 0.2); + + float rimBand = pow(abs(curve), 4.0); + scene += rimBand * 0.25 * mix(vec3(1.0), TintColor, 0.4); + + OutColor = vec4(clamp(scene, 0.0, 1.0), alpha); +} diff --git a/src/main/resources/assets/evolution/shaders/core/wetworld/fullscreen.vsh b/src/main/resources/assets/evolution/shaders/core/wetworld/fullscreen.vsh new file mode 100644 index 0000000..f3b5d1e --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/wetworld/fullscreen.vsh @@ -0,0 +1,9 @@ +#version 150 + +out vec2 texCoord; + +void main() { + vec2 uv = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2); + texCoord = uv; + gl_Position = vec4(uv * 2.0 - 1.0, 0.0, 1.0); +} diff --git a/src/main/resources/assets/evolution/shaders/core/wetworld/wet.fsh b/src/main/resources/assets/evolution/shaders/core/wetworld/wet.fsh new file mode 100644 index 0000000..39f9837 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/core/wetworld/wet.fsh @@ -0,0 +1,403 @@ +#version 150 + +uniform sampler2D SourceTex; +uniform sampler2D DepthTex; + +layout(std140) uniform WetParams { + mat4 inverseProjection; + mat4 projection; + mat4 viewToWorld; + vec4 cameraParams; + vec4 screenParams; + vec4 surfaceParams; + vec4 qualityParams; + vec4 fogParams; +}; + +in vec2 texCoord; +out vec4 fragColor; + +const float SKY_EPSILON = 0.00002; +const float HOMOGENEOUS_EPSILON = 0.00001; +const float NORMAL_DEGENERATE_SINE_SQUARED = 0.000001; +const float UV_MIN = 0.0001; +const float UV_MAX = 0.9999; +const float NDC_SCALE = 2.0; +const float NDC_BIAS = 1.0; +const float UV_SCALE = 0.5; +const float UV_BIAS = 0.5; + +const float DITHER_SCALE = 52.9829189; +const vec2 DITHER_WEIGHTS = vec2(0.06711056, 0.00583715); +const vec2 HASH_SCALE = vec2(123.34, 456.21); +const float HASH_OFFSET = 45.32; +const int FBM_OCTAVES = 4; +const float FBM_GAIN = 0.5; +const float FBM_LACUNARITY = 2.02; +const vec2 FBM_SHIFT = vec2(1.7, 9.2); +const mat2 FBM_ROTATION = mat2(0.8, 0.6, -0.6, 0.8); + +const float GROUND_LOW = 0.35; +const float GROUND_HIGH = 0.85; +const float WETNESS_BASE = 0.45; +const float WETNESS_GROUND = 0.55; +const float RIPPLE_MIN_GROUND = 0.05; +const float RIPPLE_NORMAL_SCALE = 0.45; +const float RIPPLE_MAX_FOOTPRINT = 0.10; +const float FLAG_LIMIT = 0.5; + +const float WAVE_FLOW_GAIN = 0.025; +const float WAVE_DETAIL_GAIN = 0.012; +const float DROP_CELL = 2.5; +const float DROP_RATE = 1.6; +const float DROP_RING_FREQUENCY = 32.0; +const float DROP_RING_SPEED = 16.0; +const float DROP_FALLOFF = 4.5; +const float DROP_GAIN = 0.030; +const float DROP_MIN_DISTANCE = 0.001; +const float DETAIL_QUALITY = 2.0; + +const float RAY_ORIGIN_OFFSET = 0.03; +const float RAY_FORWARD_LIMIT = 0.05; +const float CLIP_W_EPSILON = 0.001; +const float THICKNESS_BASE = 0.08; +const float THICKNESS_SLOPE = 0.035; +const float NEAR_PLANE_Z = -0.08; +const float SELF_HIT_PIXELS = 3.5; +const float BACKFACE_LIMIT = -0.05; +const float EDGE_FADE = 0.10; +const float EDGE_FADE_END = 0.90; +const float DISTANCE_FADE_START = 0.65; +const float FACING_FADE_LOW = -0.25; +const float FACING_FADE_HIGH = 0.05; + +const vec3 SKY_HORIZON = vec3(0.22, 0.30, 0.42); +const vec3 SKY_ZENITH = vec3(0.08, 0.15, 0.28); +const vec3 SKY_CLOUD = vec3(0.38, 0.45, 0.55); +const float SKY_PITCH_POWER = 0.75; +const float CLOUD_SCALE = 1.5; +const float CLOUD_PIVOT = 0.18; +const float CLOUD_PIVOT_MIN = 0.08; +const float CLOUD_GAIN = 0.28; +const vec3 SUN_COLOR = vec3(0.85, 0.88, 0.95); +const vec3 SUN_DIRECTION = vec3(0.35, 0.75, 0.25); +const float SUN_POWER = 32.0; +const float SUN_GAIN = 0.50; + +const float NEAR_FADE_LOW = 0.04; +const float NEAR_FADE_HIGH = 0.18; +const float FRESNEL_FLAT = 0.04; +const float FRESNEL_GROUND = 0.16; +const float FRESNEL_POWER = 3.5; +const float FRESNEL_MIN = 0.03; +const float FRESNEL_MAX = 0.95; +const float OUTPUT_DITHER = 1.0 / 255.0; + +float getDither(vec2 coord) { + return fract(DITHER_SCALE * fract(dot(coord, DITHER_WEIGHTS))); +} + +float hash21(vec2 p) { + p = fract(p * HASH_SCALE); + p += dot(p, p + HASH_OFFSET); + return fract(p.x * p.y); +} + +float valueNoise(vec2 p) { + vec2 i = floor(p); + vec2 f = fract(p); + f = f * f * (3.0 - 2.0 * f); + return mix( + mix(hash21(i), hash21(i + vec2(1.0, 0.0)), f.x), + mix(hash21(i + vec2(0.0, 1.0)), hash21(i + vec2(1.0, 1.0)), f.x), + f.y); +} + +float fbm(vec2 p) { + float v = 0.0; + float a = FBM_GAIN; + for (int i = 0; i < FBM_OCTAVES; i++) { + v += valueNoise(p) * a; + p = FBM_ROTATION * p * FBM_LACUNARITY + FBM_SHIFT; + a *= FBM_GAIN; + } + return v; +} + +float toNdcDepth(float rawDepth) { + return rawDepth * screenParams.z + screenParams.w; +} + +bool isSky(float rawDepth) { + return abs(rawDepth - cameraParams.w) < SKY_EPSILON; +} + +vec3 viewPosFromRawDepth(vec2 uv, float rawDepth) { + vec2 ndc = uv * NDC_SCALE - NDC_BIAS; + vec4 clip = vec4(ndc, toNdcDepth(rawDepth), 1.0); + vec4 v = inverseProjection * clip; + return v.xyz / max(abs(v.w), HOMOGENEOUS_EPSILON); +} + +float sampleDepth(vec2 uv) { + return texture(DepthTex, clamp(uv, vec2(UV_MIN), vec2(UV_MAX))).r; +} + +float viewZFromRawDepth(float rawDepth) { + float clipZ = toNdcDepth(rawDepth); + float vz = inverseProjection[2][2] * clipZ + inverseProjection[3][2]; + float vw = inverseProjection[2][3] * clipZ + inverseProjection[3][3]; + return vz / max(abs(vw), HOMOGENEOUS_EPSILON); +} + +vec3 normalFromDepth(vec2 uv, vec3 viewPos) { + vec2 texel = 1.0 / max(screenParams.xy, vec2(1.0)); + + vec3 pL = viewPosFromRawDepth(uv - vec2(texel.x, 0.0), sampleDepth(uv - vec2(texel.x, 0.0))); + vec3 pR = viewPosFromRawDepth(uv + vec2(texel.x, 0.0), sampleDepth(uv + vec2(texel.x, 0.0))); + vec3 pD = viewPosFromRawDepth(uv - vec2(0.0, texel.y), sampleDepth(uv - vec2(0.0, texel.y))); + vec3 pU = viewPosFromRawDepth(uv + vec2(0.0, texel.y), sampleDepth(uv + vec2(0.0, texel.y))); + + vec3 vL = viewPos - pL; + vec3 vR = pR - viewPos; + vec3 vD = viewPos - pD; + vec3 vU = pU - viewPos; + + vec3 dX = (abs(vL.z) < abs(vR.z)) ? vL : vR; + vec3 dY = (abs(vD.z) < abs(vU.z)) ? vD : vU; + + vec3 normal = cross(dX, dY); + float crossLengthSquared = dot(normal, normal); + float spanLengthSquared = dot(dX, dX) * dot(dY, dY); + if (crossLengthSquared > spanLengthSquared * NORMAL_DEGENERATE_SINE_SQUARED) { + normal *= inversesqrt(crossLengthSquared); + } else { + normal = normalize(-viewPos); + } + if (dot(normal, viewPos) > 0.0) { + normal = -normal; + } + return normal; +} + +vec2 waterWaves(vec2 p, float time, float speed, float quality) { + float t = time * speed; + vec2 slope = vec2(0.0); + + float w1 = sin(p.x * 2.5 + p.y * 1.8 + t * 3.2); + float w2 = cos(p.x * -2.2 + p.y * 3.1 - t * 2.6); + slope += vec2(w1 + w2, -w1 + w2) * WAVE_FLOW_GAIN; + + vec2 grid = fract(p * DROP_CELL) - 0.5; + vec2 id = floor(p * DROP_CELL); + float dropTime = fract(t * DROP_RATE + hash21(id)); + float dropDist = length(grid); + float ring = sin(dropDist * DROP_RING_FREQUENCY - dropTime * DROP_RING_SPEED) + * exp(-dropDist * DROP_FALLOFF) * (1.0 - dropTime); + slope += (grid / max(dropDist, DROP_MIN_DISTANCE)) * ring * DROP_GAIN; + + if (quality >= DETAIL_QUALITY) { + float w3 = sin(p.x * 6.5 - p.y * 4.8 + t * 4.2); + float w4 = cos(p.x * 5.8 + p.y * 7.2 - t * 3.5); + slope += vec2(w3, w4) * WAVE_DETAIL_GAIN; + } + return slope; +} + +void main() { + vec4 originalColor = texture(SourceTex, texCoord); + float rawDepth = texture(DepthTex, texCoord).r; + + if (isSky(rawDepth)) { + fragColor = originalColor; + return; + } + + vec3 viewPos = viewPosFromRawDepth(texCoord, rawDepth); + vec3 viewDir = normalize(viewPos); + vec3 worldPos = cameraParams.xyz + (viewToWorld * vec4(viewPos, 0.0)).xyz; + + vec3 viewNormal = normalFromDepth(texCoord, viewPos); + vec3 worldNormal = normalize((viewToWorld * vec4(viewNormal, 0.0)).xyz); + + float reflectionStrength = surfaceParams.x; + float darkeningFactor = surfaceParams.y; + float time = surfaceParams.z; + float wetAmount = surfaceParams.w; + + float quality = qualityParams.x; + float ripplesEnabled = qualityParams.y; + float rippleSpeed = qualityParams.z; + + float upFacing = clamp(worldNormal.y, 0.0, 1.0); + float isGround = smoothstep(GROUND_LOW, GROUND_HIGH, upFacing); + float wetness = (WETNESS_BASE + WETNESS_GROUND * isGround) * wetAmount; + + vec3 perturbedNormal = viewNormal; + float footprint = max(fwidth(worldPos.x), fwidth(worldPos.z)); + float rippleLod = clamp(1.0 - footprint / RIPPLE_MAX_FOOTPRINT, 0.0, 1.0); + float rippleAmount = clamp(qualityParams.w, 0.0, 1.0) * rippleLod; + if (ripplesEnabled > FLAG_LIMIT && isGround > RIPPLE_MIN_GROUND && rippleAmount > 0.0) { + vec2 slope = waterWaves(worldPos.xz, time, rippleSpeed, quality) * rippleAmount; + vec3 rippleWorld = normalize(vec3( + -slope.x * isGround * RIPPLE_NORMAL_SCALE, + 1.0, + -slope.y * isGround * RIPPLE_NORMAL_SCALE)); + perturbedNormal = normalize((transpose(viewToWorld) * vec4(rippleWorld, 0.0)).xyz); + if (dot(perturbedNormal, viewPos) > 0.0) { + perturbedNormal = -perturbedNormal; + } + } + + vec3 rayDir = reflect(viewDir, perturbedNormal); + + int maxSteps = 48; + int binarySteps = 5; + float maxDist = 32.0; + float stride = 3.0; + if (quality < 0.5) { + maxSteps = 28; + binarySteps = 4; + maxDist = 24.0; + stride = 5.0; + } else if (quality < 1.5) { + maxSteps = 48; + binarySteps = 5; + maxDist = 32.0; + stride = 3.0; + } else if (quality < 2.5) { + maxSteps = 80; + binarySteps = 6; + maxDist = 48.0; + stride = 2.0; + } else { + maxSteps = 128; + binarySteps = 7; + maxDist = 64.0; + stride = 1.0; + } + + float dither = getDither(gl_FragCoord.xy); + vec3 rayOrigin = viewPos + perturbedNormal * RAY_ORIGIN_OFFSET; + + vec3 hitColor = vec3(0.0); + float hitAlpha = 0.0; + + if (rayDir.z < RAY_FORWARD_LIMIT) { + vec3 rayEnd = rayOrigin + rayDir * maxDist; + if (rayEnd.z > NEAR_PLANE_Z) { + rayEnd = mix(rayOrigin, rayEnd, (NEAR_PLANE_Z - rayOrigin.z) / (rayEnd.z - rayOrigin.z)); + } + + vec4 clipStart = projection * vec4(rayOrigin, 1.0); + vec4 clipEnd = projection * vec4(rayEnd, 1.0); + if (clipStart.w > CLIP_W_EPSILON && clipEnd.w > CLIP_W_EPSILON) { + float invWStart = 1.0 / clipStart.w; + float invWEnd = 1.0 / clipEnd.w; + vec2 uvStart = clipStart.xy * invWStart * UV_SCALE + UV_BIAS; + vec2 uvEnd = clipEnd.xy * invWEnd * UV_SCALE + UV_BIAS; + vec3 scaledStart = rayOrigin * invWStart; + vec3 scaledEnd = rayEnd * invWEnd; + + float spanPixels = length((uvEnd - uvStart) * screenParams.xy); + float steps = clamp(spanPixels / stride, 1.0, float(maxSteps)); + float stepFraction = 1.0 / steps; + + float travelled = stepFraction * dither; + float previous = travelled; + bool foundHit = false; + vec2 hitUv = vec2(-1.0); + float hitFraction = 0.0; + + for (int i = 0; i < maxSteps; i++) { + travelled += stepFraction; + if (travelled > 1.0) break; + + vec2 sampleUv = mix(uvStart, uvEnd, travelled); + if (sampleUv.x < 0.0 || sampleUv.x > 1.0 || sampleUv.y < 0.0 || sampleUv.y > 1.0) break; + + float sceneDepth = texture(DepthTex, sampleUv).r; + if (isSky(sceneDepth)) { + previous = travelled; + continue; + } + + float invW = mix(invWStart, invWEnd, travelled); + vec3 rayPos = mix(scaledStart, scaledEnd, travelled) / invW; + float sceneZ = viewZFromRawDepth(sceneDepth); + float delta = sceneZ - rayPos.z; + float thickness = max(THICKNESS_BASE, abs(rayPos.z) * THICKNESS_SLOPE); + + if (delta >= 0.0 && delta < thickness) { + float low = previous; + float high = travelled; + for (int b = 0; b < binarySteps; b++) { + float mid = (low + high) * 0.5; + vec2 midUv = mix(uvStart, uvEnd, mid); + float midDepth = texture(DepthTex, midUv).r; + if (isSky(midDepth)) { + low = mid; + continue; + } + float midInvW = mix(invWStart, invWEnd, mid); + vec3 midPos = mix(scaledStart, scaledEnd, mid) / midInvW; + if (viewZFromRawDepth(midDepth) - midPos.z >= 0.0) { + high = mid; + } else { + low = mid; + } + } + + hitFraction = high; + hitUv = mix(uvStart, uvEnd, high); + vec2 pixelDiff = abs(hitUv - texCoord) * screenParams.xy; + if (length(pixelDiff) < SELF_HIT_PIXELS) break; + + float hitDepth = texture(DepthTex, hitUv).r; + vec3 hitViewPos = viewPosFromRawDepth(hitUv, hitDepth); + if (dot(normalFromDepth(hitUv, hitViewPos), rayDir) >= BACKFACE_LIMIT) break; + + foundHit = true; + break; + } + previous = travelled; + } + + if (foundHit) { + hitColor = texture(SourceTex, hitUv).rgb; + float screenFade = smoothstep(0.0, EDGE_FADE, hitUv.x) * (1.0 - smoothstep(EDGE_FADE_END, 1.0, hitUv.x)) + * smoothstep(0.0, EDGE_FADE, hitUv.y) * (1.0 - smoothstep(EDGE_FADE_END, 1.0, hitUv.y)); + float distanceFade = 1.0 - smoothstep(DISTANCE_FADE_START, 1.0, hitFraction); + float facingFade = 1.0 - smoothstep(FACING_FADE_LOW, FACING_FADE_HIGH, rayDir.z); + hitAlpha = screenFade * distanceFade * facingFade; + } + } + } + + vec3 worldRay = normalize((viewToWorld * vec4(rayDir, 0.0)).xyz); + float skyPitch = clamp(worldRay.y * 0.5 + 0.5, 0.0, 1.0); + vec3 skyReflection = mix(SKY_HORIZON, SKY_ZENITH, pow(skyPitch, SKY_PITCH_POWER)); + + float cloudNoise = fbm(worldRay.xz * CLOUD_SCALE / max(abs(worldRay.y) + CLOUD_PIVOT, CLOUD_PIVOT_MIN)); + skyReflection = mix(skyReflection, SKY_CLOUD, cloudNoise * CLOUD_GAIN * smoothstep(-0.1, 0.5, worldRay.y)); + + float sunSpec = pow(max(dot(worldRay, normalize(SUN_DIRECTION)), 0.0), SUN_POWER); + skyReflection += SUN_COLOR * clamp(sunSpec, 0.0, 1.0) * SUN_GAIN * isGround; + + vec3 totalReflection = mix(skyReflection, hitColor, hitAlpha); + float nearFade = smoothstep(NEAR_FADE_LOW, NEAR_FADE_HIGH, abs(viewPos.z)); + + float fogFactor = clamp((length(viewPos) - fogParams.x) / max(fogParams.y - fogParams.x, CLIP_W_EPSILON), 0.0, 1.0); + fogFactor = fogFactor * fogFactor * (3.0 - 2.0 * fogFactor); + + vec3 darkenedBase = mix(originalColor.rgb * (1.0 - darkeningFactor * wetness), originalColor.rgb, fogFactor); + + float normalDotView = clamp(dot(-viewDir, perturbedNormal), 0.0, 1.0); + float f0 = mix(FRESNEL_FLAT, FRESNEL_GROUND, isGround); + float fresnel = clamp(f0 + (1.0 - f0) * pow(1.0 - normalDotView, FRESNEL_POWER), FRESNEL_MIN, FRESNEL_MAX); + + float effectiveStrength = reflectionStrength * wetness * nearFade * (1.0 - fogFactor); + vec3 shaded = mix(darkenedBase, totalReflection, fresnel * effectiveStrength); + shaded += (getDither(gl_FragCoord.xy + vec2(0.5)) - 0.5) * OUTPUT_DITHER; + fragColor = vec4(shaded, originalColor.a); +} diff --git a/src/main/resources/assets/evolution/shaders/include/common.glsl b/src/main/resources/assets/evolution/shaders/include/common.glsl new file mode 100644 index 0000000..1e163eb --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/include/common.glsl @@ -0,0 +1,282 @@ +// common.glsl +// helper functions and constants for client shaders + +/** + * Computes the Signed Distance Function (SDF) for a rectangle with the ability + * to set individual corner radii. + * + * @param CenterPosition - point coordinate relative to the rectangle center. + * @param Size - half the width and height of the rectangle (i.e. from center to edge). + * @param Radius - corner radii in the following order: + * (top-left, top-right, bottom-right, bottom-left). + * + * @return float - distance from the point to the nearest rectangle surface. + * Negative value means inside, positive means outside. + */ +float roundedBoxSDF(vec2 CenterPosition, vec2 Size, vec4 Radius) { + // Clamp radii so they do not exceed half the rectangle sides. + Radius = min(Radius, vec4(min(Size.x, Size.y))); + + // Pick the radius depending on the quadrant the point is in. + Radius.xy = (CenterPosition.x > 0.0) ? Radius.xy : Radius.zw; + Radius.x = (CenterPosition.y > 0.0) ? Radius.x : Radius.y; + + // Offset coordinates by radius and compute distance. + vec2 q = abs(CenterPosition) - Size + Radius.x; + return min(max(q.x, q.y), 0.0) + length(max(q, 0.0)) - Radius.x; +} + +/** + * Quad vertices helper. + * + * Vertices go clockwise: + * 0 - top-left (0, 0) + * 1 - bottom-left (0, 1) + * 2 - bottom-right (1, 1) + * 3 - top-right (1, 0) + */ +const vec2[4] RECT_VERTICES_COORDS = vec2[] ( + vec2(0.0, 0.0), + vec2(0.0, 1.0), + vec2(1.0, 1.0), + vec2(1.0, 0.0) +); + +vec2 rvertexcoord(int id) { + return RECT_VERTICES_COORDS[id % 4]; +} + +float rdist(vec2 pos, vec2 size, vec4 radius) { + radius = min(radius, vec4(min(size.x, size.y))); + radius.xy = (pos.x > 0.0) ? radius.xy : radius.wz; + radius.x = (pos.y > 0.0) ? radius.x : radius.y; + + vec2 v = abs(pos) - size + radius.x; + return min(max(v.x, v.y), 0.0) + length(max(v, 0.0)) - radius.x; +} + +float ralpha(vec2 size, vec2 coord, vec4 radius, float smoothness) { + vec2 center = size * 0.5; + float dist = rdist(center - (coord * size), center, radius); + return 1.0 - smoothstep(-smoothness, 0.0, dist); +} + +/** + * Alpha falloff for one mask edge. + * + * @param distance - signed distance from the edge, positive inside the kept region. + * @param fade - width of the falloff band in pixels; 0 means a hard cut. + */ +float maskEdgeFactor(float distance, float fade) { + if (fade <= 0.0) { + return distance < 0.0 ? 0.0 : 1.0; + } + float t = clamp(distance / fade, 0.0, 1.0); + return t * t * (3.0 - 2.0 * t); +} + +/** + * Rectangular alpha mask with an independent falloff per edge. + * Modifies ONLY alpha - never the RGB channels, so this can never introduce a + * black vignette. + * + * The fragment coordinate is passed in rather than read from gl_FragCoord so this + * header stays compilable from vertex shaders, which also import common.glsl. + * + * @param alpha - incoming fragment alpha. + * @param fragCoord - gl_FragCoord.xy of the caller. + * @param bounds - (topY, bottomY, leftX, rightX) in gl_FragCoord space. Both Y + * entries negative disables the mask entirely. + * @param fades - (fadeTop, fadeBottom, fadeLeft, fadeRight) band widths in pixels, + * matching the screen orientation of the bounds. + */ +float applyEdgeMask(float alpha, vec2 fragCoord, vec4 bounds, vec4 fades) { + if (bounds.x < 0.0 && bounds.y < 0.0) { + return alpha; + } + + float edge = 1.0; + + if (bounds.x >= 0.0 || bounds.y >= 0.0) { + float lowY = min(bounds.x, bounds.y); + float highY = max(bounds.x, bounds.y); + edge *= maskEdgeFactor(fragCoord.y - lowY, fades.y); + edge *= maskEdgeFactor(highY - fragCoord.y, fades.x); + } + + if (bounds.z >= 0.0 || bounds.w >= 0.0) { + float lowX = min(bounds.z, bounds.w); + float highX = max(bounds.z, bounds.w); + edge *= maskEdgeFactor(fragCoord.x - lowX, fades.z); + edge *= maskEdgeFactor(highX - fragCoord.x, fades.w); + } + + return alpha * edge; +} + +float hash12(vec2 p) { + vec3 p3 = fract(vec3(p.xyx) * .1031); + p3 += dot(p3, p3.yzx + 33.33); + return fract((p3.x + p3.y) * p3.z); +} + +float common_noise(vec2 p) { + vec2 i = floor(p); + vec2 f = p - i; + vec2 u = f*f*(3.0-2.0*f); + return mix(mix(hash12(i + vec2(0.0,0.0)), hash12(i + vec2(1.0,0.0)), u.x), + mix(hash12(i + vec2(0.0,1.0)), hash12(i + vec2(1.0,1.0)), u.x), u.y); +} + +float fbm(vec2 x) { + float v = 0.0; + float a = 0.5; + vec2 shift = vec2(100.0); + mat2 rot = mat2(cos(0.5), sin(0.5), -sin(0.5), cos(0.5)); + for (int i = 0; i < 5; ++i) { + v += a * common_noise(x); + x = rot * x * 2.0 + shift; + a *= 0.5; + } + return v; +} + +const int LOOP_OCTAVES = 4; +const float LOOP_LACUNARITY = 2.0; +const float LOOP_GAIN = 0.5; +const vec2 LOOP_OCTAVE_SHIFT = vec2(37.1, 11.7); + +/** + * Value noise whose lattice wraps every `tile` cells, so translating the sample + * point by a whole multiple of `tile` reproduces the exact same field. This is + * what lets an animated background loop without a visible seam. + */ +float loopNoise(vec2 p, float tile) { + vec2 i = floor(p); + vec2 f = p - i; + vec2 u = f * f * (3.0 - 2.0 * f); + vec2 low = mod(i, tile); + vec2 high = mod(i + 1.0, tile); + return mix(mix(hash12(low), hash12(vec2(high.x, low.y)), u.x), + mix(hash12(vec2(low.x, high.y)), hash12(high), u.x), u.y); +} + +/** + * Fractal brownian motion built on loopNoise; every octave wraps on its own + * period so the whole sum stays seamless over `tile` units. + */ +float loopFbm(vec2 p, float tile) { + float total = 0.0; + float amplitude = LOOP_GAIN; + float period = tile; + for (int i = 0; i < LOOP_OCTAVES; ++i) { + total += amplitude * loopNoise(p, period); + p = p * LOOP_LACUNARITY + LOOP_OCTAVE_SHIFT; + period *= LOOP_LACUNARITY; + amplitude *= LOOP_GAIN; + } + return total; +} + +// 3D Hash +const uint HASH_LCG_MULTIPLIER = 1664525u; +const uint HASH_LCG_INCREMENT = 1013904223u; +const uint HASH_MIX_SHIFT = 16u; +const int HASH_LATTICE_BIAS = 1048576; +const float HASH_UINT_TO_UNIT = 1.0 / 4294967296.0; + +float hash13(vec3 p3) { + uvec3 v = uvec3(ivec3(floor(p3)) + HASH_LATTICE_BIAS); + v = v * HASH_LCG_MULTIPLIER + HASH_LCG_INCREMENT; + v.x += v.y * v.z; + v.y += v.z * v.x; + v.z += v.x * v.y; + v ^= v >> HASH_MIX_SHIFT; + v.x += v.y * v.z; + v.y += v.z * v.x; + v.z += v.x * v.y; + return float(v.x) * HASH_UINT_TO_UNIT; +} + +// 3D Value Noise +vec3 quinticFade(vec3 f) { + return f*f*f*(f*(f*6.0-15.0)+10.0); +} + +float common_noise3d(vec3 p) { + vec3 i = floor(p); + vec3 f = p - i; + vec3 u = quinticFade(f); + + float n000 = hash13(i + vec3(0.0,0.0,0.0)); + float n100 = hash13(i + vec3(1.0,0.0,0.0)); + float n010 = hash13(i + vec3(0.0,1.0,0.0)); + float n110 = hash13(i + vec3(1.0,1.0,0.0)); + float n001 = hash13(i + vec3(0.0,0.0,1.0)); + float n101 = hash13(i + vec3(1.0,0.0,1.0)); + float n011 = hash13(i + vec3(0.0,1.0,1.0)); + float n111 = hash13(i + vec3(1.0,1.0,1.0)); + + float mixX00 = mix(n000, n100, u.x); + float mixX10 = mix(n010, n110, u.x); + float mixX01 = mix(n001, n101, u.x); + float mixX11 = mix(n011, n111, u.x); + + float mixY0 = mix(mixX00, mixX10, u.y); + float mixY1 = mix(mixX01, mixX11, u.y); + + return mix(mixY0, mixY1, u.z); +} + +// 3D FBM +float fbm3d(vec3 x) { + float v = 0.0; + float a = 0.5; + vec3 shift = vec3(100.0); + // Simple 3D rotation matrix to avoid alignment artifacts + mat3 rot = mat3( + 0.36, 0.48, -0.80, + -0.80, 0.60, 0.00, + 0.48, 0.64, 0.60 + ); + for (int i = 0; i < 3; ++i) { + v += a * common_noise3d(x); + x = rot * x * 2.0 + shift; + a *= 0.5; + } + return v; +} + +// 3D to 3D Hash +vec3 hash33(vec3 p3) { + p3 = fract(p3 * vec3(.1031, .1030, .0973)); + p3 += dot(p3, p3.yxz+33.33); + return fract((p3.xxy + p3.yxx)*p3.zyx); +} + +// 3D Cellular/Voronoi Noise +// Returns vec2(min_dist, id) +vec2 cellular3d(vec3 p, float t) { + vec3 n = floor(p); + vec3 f = p - n; + float min_dist = 10.0; + float id = 0.0; + + for(int k=-1; k<=1; k++) { + for(int j=-1; j<=1; j++) { + for(int i=-1; i<=1; i++) { + vec3 g = vec3(float(i),float(j),float(k)); + vec3 o = hash33(n + g); + // Animate the points + o = 0.5 + 0.5 * sin(t + 6.2831 * o); + vec3 r = g + o - f; + float d = dot(r,r); + if(d < min_dist) { + min_dist = d; + id = hash13(n + g); + } + } + } + } + return vec2(sqrt(min_dist), id); +} diff --git a/src/main/resources/assets/evolution/shaders/include/customsky_common.glsl b/src/main/resources/assets/evolution/shaders/include/customsky_common.glsl new file mode 100644 index 0000000..c1ecaaa --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/include/customsky_common.glsl @@ -0,0 +1,324 @@ +layout(std140) uniform SkyParams { + vec4 cornerRays[4]; + vec4 misc; + vec4 skyColor; + vec4 skyColor2; + vec4 taa; + mat4 prevViewProj; + vec4 skyExtra; +}; + +const float SKY_GRADIENT_DUAL = 0.5; +const float SKY_HDR_CEILING = 0.9975; +const float SKY_HDR_FLOOR = 0.0055; +const float SKY_GAMMA = 2.2; +const float SKY_DOME_FADE_LOW = -0.04; +const float SKY_DOME_FADE_HIGH = 0.16; +const float SKY_NADIR_DIM = 0.62; +const float SKY_NADIR_SPAN = 0.85; + +const float SKY_LIGHT_RATE = 0.021; +const float SKY_LIGHT_HEIGHT = 0.17; + +const float SKY_SEA_RISE = 0.34; +const float SKY_SEA_SCALE = 1.5; +const float SKY_SEA_DRIFT_X = 0.010; +const float SKY_SEA_DRIFT_Z = 0.006; +const float SKY_SEA_SLAB_TOP = 1.02; +const float SKY_SEA_SLAB_BOTTOM = 1.42; +const float SKY_SEA_SLAB_MID = 1.22; +const int SKY_SEA_STEPS_MAX = 10; +const float SKY_SEA_STEPS_MIN = 5.0; +const float SKY_SEA_STEEP_LOW = 0.03; +const float SKY_SEA_STEEP_HIGH = 0.55; +const float SKY_SEA_MAX_STEP = 2.6; +const float SKY_SEA_JITTER = 0.8; +const float SKY_SEA_DITHER_SCALE = 2048.0; +const float SKY_SEA_ABSORB = 6.0; +const float SKY_SEA_LIGHT_ABSORB = 3.4; +const float SKY_SEA_SELF_ABSORB = 0.9; +const float SKY_SEA_LIGHT_STEP = 0.42; +const float SKY_SEA_LIGHT_RISE = 0.18; +const float SKY_SEA_SHEAR = 0.5; +const vec2 SKY_SEA_SHEAR_DIR = vec2(0.857, 0.514); +const float SKY_SEA_CUTOFF = 0.02; +const float SKY_SEA_DENSITY_EPSILON = 0.02; +const float SKY_SEA_COVER_LOW = 0.36; +const float SKY_SEA_COVER_SPAN = 0.16; +const float SKY_SEA_TOP_ERODE = 0.28; +const float SKY_SEA_TOP_SOFT = 0.30; +const float SKY_SEA_BASE_SOFT = 0.86; +const float SKY_SEA_DETAIL_BLEND = 0.72; +const float SKY_SEA_HAZE_RANGE = 7.0; +const float SKY_SEA_HAZE_GAIN = 0.60; +const float SKY_SEA_DEPTH_SPAN = 0.66; +const float SKY_SEA_DEEP = 0.16; +const float SKY_SEA_CREST_TINT = 0.55; +const float SKY_SEA_SHADOW_TINT = 0.10; +const float SKY_SEA_RIM_SPAN = 0.16; +const float SKY_SEA_RIM_GAIN = 0.45; +const float SKY_SEA_GLINT_TIGHT = 90.0; +const float SKY_SEA_GLINT_GAIN = 0.55; +const int SKY_SEA_OCTAVES = 6; +const int SKY_SEA_COARSE_OCTAVES = 3; +const float SKY_SEA_MARCH_LOD = 3.0; +const float SKY_SEA_LIGHT_LOD = 2.0; +const float SKY_SEA_LACUNARITY = 2.03; +const float SKY_SEA_GAIN = 0.5; +const float SKY_SEA_MEAN = 0.5; +const vec2 SKY_SEA_OCTAVE_SHIFT = vec2(37.1, 11.7); +const mat2 SKY_SEA_ROTATION = mat2(0.8776, 0.4794, -0.4794, 0.8776); +const float SKY_SEA_LOD_BIAS = 1.0; +const float SKY_SEA_LOD_FLOOR = 1.0; +const float SKY_SEA_LOD_EPSILON = 1.0e-5; +const float SKY_SEA_AXIS_EPSILON = 1.0e-4; +const uint SKY_SEA_HASH_X = 1664525u; +const uint SKY_SEA_HASH_Y = 1013904223u; +const uint SKY_SEA_HASH_MIX_A = 0x7feb352du; +const uint SKY_SEA_HASH_MIX_B = 0x846ca68bu; +const uint SKY_SEA_HASH_SHIFT_A = 15u; +const uint SKY_SEA_HASH_SHIFT_B = 16u; +const int SKY_SEA_HASH_BIAS = 1048576; +const float SKY_SEA_HASH_NORMALIZE = 1.0 / 4294967296.0; +const float SKY_PLANE_EPSILON = 0.0022; +const float SKY_PLANE_RANGE = 7.5; +const float SKY_PLANE_COMPRESS = 6.0; +const float SKY_PLANE_TWIST = 0.045; + +vec3 skyRayDirection(vec2 uv) { + vec3 bottom = mix(cornerRays[1].xyz, cornerRays[2].xyz, uv.x); + vec3 top = mix(cornerRays[0].xyz, cornerRays[3].xyz, uv.x); + return normalize(mix(bottom, top, uv.y)); +} + +float skyDown(float dirY) { + return max(-dirY, 0.0) * skyExtra.y; +} + +float skyVerticalAxis(float dirY) { + return mix(dirY, dirY * 0.5 + 0.5, skyExtra.y); +} + +vec2 skyPlaneDomain(vec2 groundUv) { + float radius = length(groundUv); + if (radius <= SKY_PLANE_EPSILON) { + return groundUv; + } + float compressed = SKY_PLANE_COMPRESS * log(1.0 + radius / SKY_PLANE_COMPRESS); + float twist = compressed * SKY_PLANE_TWIST; + float sinTwist = sin(twist); + float cosTwist = cos(twist); + vec2 unit = groundUv / radius; + return vec2(unit.x * cosTwist - unit.y * sinTwist, + unit.x * sinTwist + unit.y * cosTwist) * compressed; +} + +vec3 skyPlane(vec3 dir, float height) { + vec2 ground = dir.xz * (height / max(abs(dir.y), SKY_PLANE_EPSILON)); + return vec3(skyPlaneDomain(ground), length(ground)); +} + +float skyPlaneFalloff(float distance, float range) { + return exp(-distance / range); +} + +float skyDomeFade(float dirY) { + return mix(1.0, smoothstep(SKY_DOME_FADE_LOW, SKY_DOME_FADE_HIGH, dirY), skyExtra.y); +} + +float skySeaMask(float dirY) { + return smoothstep(0.0, SKY_SEA_RISE, skyDown(dirY)); +} + +vec3 skyDecodeHDR(vec3 c) { + c = pow(min(c, vec3(SKY_HDR_CEILING)), vec3(SKY_GAMMA)); + return c / max(1.0 - c, vec3(SKY_HDR_FLOOR)); +} + +vec3 skyEncodeHDR(vec3 c) { + c = max(c, vec3(0.0)); + return pow(c / (1.0 + c), vec3(1.0 / SKY_GAMMA)); +} + +vec3 skyHash33(vec3 q) { + uvec3 p = uvec3(ivec3(q)); + p = p * uvec3(374761393U, 1103515245U, 668265263U) + p.zxy + p.yzx; + p = p.yzx * (p.zxy ^ (p >> 3U)); + return vec3(p ^ (p >> 16U)) * (1.0 / vec3(0xffffffffU)); +} + +float skyHash21(vec2 p) { + vec3 p3 = fract(vec3(p.xyx) * 0.1031); + p3 += dot(p3, p3.yzx + 33.33); + return fract((p3.x + p3.y) * p3.z); +} + +float skyHalo(vec3 dir, vec3 light, float tightness) { + return pow(max(dot(dir, light), 0.0), tightness); +} + +vec3 skyLightDir(float time) { + float angle = time * SKY_LIGHT_RATE; + return normalize(vec3(cos(angle), SKY_LIGHT_HEIGHT, sin(angle))); +} + +float skySeaHash(vec2 lattice) { + uvec2 cell = uvec2(ivec2(lattice) + SKY_SEA_HASH_BIAS); + uint h = cell.x * SKY_SEA_HASH_X + cell.y * SKY_SEA_HASH_Y; + h ^= h >> SKY_SEA_HASH_SHIFT_B; + h *= SKY_SEA_HASH_MIX_A; + h ^= h >> SKY_SEA_HASH_SHIFT_A; + h *= SKY_SEA_HASH_MIX_B; + h ^= h >> SKY_SEA_HASH_SHIFT_B; + return float(h) * SKY_SEA_HASH_NORMALIZE; +} + +float skySeaNoise(vec2 p) { + vec2 i = floor(p); + vec2 f = p - i; + vec2 u = f * f * f * (f * (f * 6.0 - 15.0) + 10.0); + return mix(mix(skySeaHash(i), skySeaHash(i + vec2(1.0, 0.0)), u.x), + mix(skySeaHash(i + vec2(0.0, 1.0)), skySeaHash(i + vec2(1.0, 1.0)), u.x), u.y); +} + +float skySeaLod(vec2 domain, float scale) { + float footprint = length(fwidth(domain)) * scale; + float octaves = footprint > SKY_SEA_LOD_EPSILON + ? -log2(footprint) - SKY_SEA_LOD_BIAS + : float(SKY_SEA_OCTAVES); + return clamp(octaves, SKY_SEA_LOD_FLOOR, float(SKY_SEA_OCTAVES)); +} + +vec2 skySeaField(vec2 p, float lod) { + float coarse = 0.0; + float total = 0.0; + float amplitude = SKY_SEA_GAIN; + for (int octave = 0; octave < SKY_SEA_OCTAVES; octave++) { + float weight = clamp(lod - float(octave), 0.0, 1.0); + if (weight <= 0.0) { + break; + } + float band = amplitude * weight * (skySeaNoise(p) - SKY_SEA_MEAN); + total += band; + if (octave < SKY_SEA_COARSE_OCTAVES) { + coarse += band; + } + p = SKY_SEA_ROTATION * p * SKY_SEA_LACUNARITY + SKY_SEA_OCTAVE_SHIFT; + amplitude *= SKY_SEA_GAIN; + } + return vec2(SKY_SEA_MEAN + coarse, SKY_SEA_MEAN + total); +} + +vec2 skySeaLightOffset(vec3 light) { + float span = length(light.xz); + if (span <= SKY_SEA_AXIS_EPSILON) { + return vec2(SKY_SEA_LIGHT_STEP, 0.0); + } + return light.xz / span * SKY_SEA_LIGHT_STEP; +} + +float skySeaDensity(vec2 domain, float level, float lod) { + vec2 field = skySeaField(domain, lod); + float value = mix(field.x, field.y, SKY_SEA_DETAIL_BLEND); + float rise = 1.0 - level; + float threshold = SKY_SEA_COVER_LOW + SKY_SEA_TOP_ERODE * rise * rise; + float profile = smoothstep(0.0, SKY_SEA_TOP_SOFT, level) + * smoothstep(1.0, SKY_SEA_BASE_SOFT, level); + return smoothstep(threshold, threshold + SKY_SEA_COVER_SPAN, value) * profile; +} + +vec3 skySea(vec3 dir, float time, vec3 horizonTone, vec3 accent) { + vec2 drift = vec2(time * SKY_SEA_DRIFT_X, time * SKY_SEA_DRIFT_Z); + float down = max(-dir.y, SKY_PLANE_EPSILON); + vec3 midPlane = skyPlane(dir, SKY_SEA_SLAB_MID); + float midLod = skySeaLod(midPlane.xy, SKY_SEA_SCALE); + + vec3 light = skyLightDir(time); + vec2 lightOffset = skySeaLightOffset(light); + + int steps = max(int(mix(SKY_SEA_STEPS_MIN, float(SKY_SEA_STEPS_MAX), + smoothstep(SKY_SEA_STEEP_LOW, SKY_SEA_STEEP_HIGH, down))), 1); + float slab = SKY_SEA_SLAB_BOTTOM - SKY_SEA_SLAB_TOP; + float rayStep = min(slab / (down * float(steps)), SKY_SEA_MAX_STEP); + float dither = skySeaHash(floor(midPlane.xy * SKY_SEA_DITHER_SCALE)); + + vec3 crest = mix(horizonTone, accent, SKY_SEA_CREST_TINT); + vec3 deep = mix(horizonTone, horizonTone * SKY_SEA_DEEP, + smoothstep(0.0, SKY_SEA_DEPTH_SPAN, down)); + vec3 shadowTone = mix(deep, crest, SKY_SEA_SHADOW_TINT); + + vec3 scattered = vec3(0.0); + float transmittance = 1.0; + float above = 0.0; + for (int layer = 0; layer < SKY_SEA_STEPS_MAX; layer++) { + if (layer >= steps || transmittance < SKY_SEA_CUTOFF) { + break; + } + float level = clamp((float(layer) + 0.5 + (dither - 0.5) * SKY_SEA_JITTER) + / float(steps), 0.0, 1.0); + float height = SKY_SEA_SLAB_TOP + slab * level; + vec2 domain = skyPlaneDomain(dir.xz * (height / down)) * SKY_SEA_SCALE + + drift + SKY_SEA_SHEAR_DIR * (height * SKY_SEA_SHEAR); + float lod = clamp(midLod - log2(height / SKY_SEA_SLAB_MID), + SKY_SEA_LOD_FLOOR, SKY_SEA_MARCH_LOD); + float density = skySeaDensity(domain, level, lod); + if (density > SKY_SEA_DENSITY_EPSILON) { + float toward = skySeaDensity(domain + lightOffset, + max(level - SKY_SEA_LIGHT_RISE, 0.0), min(lod, SKY_SEA_LIGHT_LOD)); + float sun = exp(-(toward * SKY_SEA_LIGHT_ABSORB + above * SKY_SEA_SELF_ABSORB)); + float alpha = 1.0 - exp(-density * SKY_SEA_ABSORB * rayStep); + scattered += transmittance * alpha * mix(shadowTone, crest, sun); + transmittance -= transmittance * alpha; + above += density * rayStep; + } + } + + vec3 sea = scattered + transmittance * deep; + sea += accent * skyHalo(dir, vec3(light.x, -light.y, light.z), SKY_SEA_GLINT_TIGHT) + * SKY_SEA_GLINT_GAIN * (1.0 - transmittance); + + float haze = 1.0 - skyPlaneFalloff(midPlane.z, SKY_SEA_HAZE_RANGE); + sea = mix(sea, horizonTone, haze * SKY_SEA_HAZE_GAIN); + + float rim = 1.0 - smoothstep(0.0, SKY_SEA_RIM_SPAN, down); + return mix(sea, crest, rim * SKY_SEA_RIM_GAIN); +} + +float skyNadirDepth(float dirY) { + return mix(1.0, SKY_NADIR_DIM, smoothstep(0.0, SKY_NADIR_SPAN, skyDown(dirY))); +} + +float skyBand(vec3 dir, vec3 axis, float width) { + float offset = dot(dir, axis) / width; + return exp(-offset * offset); +} + +vec3 skyTint(float axis, float t, float time) { + vec3 primary = skyColor.rgb; + if (skyColor.w < SKY_GRADIENT_DUAL) { + return primary; + } + float k = clamp(0.5 + 0.5 * sin(axis * 2.0 + time * 0.15) + (t - 0.5) * 0.7, 0.0, 1.0); + return mix(primary, skyColor2.rgb, k); +} + +vec3 skyStarField(vec3 dir, float time, float density, float twinkle) { + vec3 accum = vec3(0.0); + vec3 p = dir * 42.0; + float dens = density; + float amp = 1.0; + for (int i = 0; i < 4; i++) { + vec3 id = floor(p); + vec3 q = fract(p) - 0.5; + vec3 rn = skyHash33(id); + float core = smoothstep(0.32, 0.0, length(q)); + float hit = step(rn.x, dens); + float tw = 1.0 - twinkle + twinkle * (0.55 + 0.45 * sin(time * (1.0 + rn.z * 2.2) + rn.y * 47.0)); + vec3 tint = mix(vec3(1.0, 0.74, 0.50), vec3(0.72, 0.86, 1.0), rn.y); + accum += hit * core * core * tint * (0.35 + 0.65 * rn.z) * tw * amp; + p = p * 1.63 + 17.0; + dens *= 0.62; + amp *= 0.78; + } + return accum; +} diff --git a/src/main/resources/assets/evolution/shaders/include/ember.glsl b/src/main/resources/assets/evolution/shaders/include/ember.glsl new file mode 100644 index 0000000..696e694 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/include/ember.glsl @@ -0,0 +1,104 @@ +const float EMBER_TAU = 6.2831853; +const float EMBER_LAPS = 36.0; +const float EMBER_TIME_OFFSET = -1.495; +const float EMBER_FIELD_SCALE = 0.82; +const float EMBER_ROTATION = -1.3708; +const float EMBER_SWIRL = 0.5; +const int EMBER_SWIRL_ITERATIONS = 16; +const float EMBER_SWIRL_Y_STEP = 1.5; +const float EMBER_SHAPE_SCALE = 2.075; +const float EMBER_PROPORTION_SHIFT = -0.336; +const vec2 EMBER_LOW_EDGE = vec2(0.1855, 0.5196); +const vec2 EMBER_HIGH_EDGE = vec2(0.4855, 0.8246); +const float EMBER_LOW_WEIGHT = 0.62; +const float EMBER_HIGH_WEIGHT = 0.5; + +const float EMBER_ASH_GAIN = 0.025; +const float EMBER_DEEP_GAIN = 0.3; +const float EMBER_GLOW_WHITE = 0.45; +const float EMBER_CREAM_WHITE = 0.85; +const vec3 EMBER_WHITE = vec3(1.0); +const float EMBER_STOP_DEEP = 0.22; +const float EMBER_STOP_BASE = 0.42; +const float EMBER_STOP_MIDDLE = 0.6; +const float EMBER_STOP_GLOW = 0.78; +const float EMBER_STOP_CREAM = 0.97; + +const vec2 EMBER_BLOOM_CENTER = vec2(0.5, 0.46); +const float EMBER_BLOOM_FALLOFF = 3.2; +const float EMBER_BLOOM_GAIN = 0.95; +const float EMBER_AMBIENT = 0.42; +const float EMBER_HEAT_FLOOR = 0.6; +const float EMBER_VIGNETTE = 0.55; + +const float EMBER_BASE_TOP = 0.06; +const float EMBER_BASE_BOTTOM = 0.17; +const float EMBER_HALO_FALLOFF = 6.0; +const float EMBER_HALO_GAIN = 0.3; +const int EMBER_HAZE_ITERATIONS = 4; +const float EMBER_HAZE_SCALE = 0.55; +const float EMBER_HAZE_GAIN = 0.62; +const float EMBER_SATURATION = 1.3; +const vec3 EMBER_LUMA = vec3(0.2126, 0.7152, 0.0722); + +vec3 emberRamp(float heat, vec3 start, vec3 middle, vec3 end) { + vec3 color = mix(start * EMBER_ASH_GAIN, start * EMBER_DEEP_GAIN, smoothstep(0.0, EMBER_STOP_DEEP, heat)); + color = mix(color, start, smoothstep(EMBER_STOP_DEEP, EMBER_STOP_BASE, heat)); + color = mix(color, middle, smoothstep(EMBER_STOP_BASE, EMBER_STOP_MIDDLE, heat)); + color = mix(color, mix(end, EMBER_WHITE, EMBER_GLOW_WHITE), smoothstep(EMBER_STOP_MIDDLE, EMBER_STOP_GLOW, heat)); + return mix(color, mix(end, EMBER_WHITE, EMBER_CREAM_WHITE), smoothstep(EMBER_STOP_GLOW, EMBER_STOP_CREAM, heat)); +} + +float emberField(vec2 uv, float aspect, float cycle, float scale, int iterations) { + float time = cycle * EMBER_TAU * EMBER_LAPS + EMBER_TIME_OFFSET; + vec2 field = (uv - 0.5) * vec2(1.0 / aspect, 1.0) * scale; + float c = cos(EMBER_ROTATION); + float s = sin(EMBER_ROTATION); + field = mat2(c, s, -s, c) * field + 0.5; + + for (int i = 1; i <= iterations; i++) { + float order = float(i); + field.x += EMBER_SWIRL / order * cos(time + order * EMBER_SWIRL_Y_STEP * field.y); + field.y += EMBER_SWIRL / order * cos(time + order * field.x); + } + + vec2 checks = field * EMBER_SHAPE_SCALE; + float mixer = 0.5 + 0.5 * sin(checks.x) * cos(checks.y) + EMBER_PROPORTION_SHIFT; + float low = smoothstep(EMBER_LOW_EDGE.x, EMBER_LOW_EDGE.y, mixer); + float high = smoothstep(EMBER_HIGH_EDGE.x, EMBER_HIGH_EDGE.y, mixer); + return clamp(low * EMBER_LOW_WEIGHT + high * EMBER_HIGH_WEIGHT, 0.0, 1.0); +} + +vec3 emberScreenFrame(vec2 uv, float aspect) { + vec2 offset = (uv - EMBER_BLOOM_CENTER) * vec2(1.0 / aspect, 1.0); + return vec3(uv.y, uv.x, dot(offset, offset)); +} + +vec3 emberBody(vec2 uv, float aspect, float cycle, float intensity, vec3 start, vec3 middle, vec3 end, + int swirlIterations, vec3 frame) { + float radius2 = frame.z; + float energy = mix(EMBER_HEAT_FLOOR, 1.0, intensity); + float bloom = exp(-radius2 * EMBER_BLOOM_FALLOFF) * EMBER_BLOOM_GAIN; + float mask = clamp(EMBER_AMBIENT + bloom * energy, 0.0, 1.0); + + float heat = emberField(uv, aspect, cycle, EMBER_FIELD_SCALE, swirlIterations) * mask; + float haze = emberField(uv, aspect, cycle, EMBER_FIELD_SCALE * EMBER_HAZE_SCALE, EMBER_HAZE_ITERATIONS); + + vec3 base = start * mix(EMBER_BASE_TOP, EMBER_BASE_BOTTOM, frame.x); + vec3 halo = middle * exp(-radius2 * EMBER_HALO_FALLOFF) * EMBER_HALO_GAIN * energy; + vec3 mist = mix(start, end, frame.y) * haze * haze * EMBER_HAZE_GAIN * energy; + vec3 color = max(emberRamp(heat, start, middle, end), base) + halo + mist; + + float luma = dot(color, EMBER_LUMA); + return max(mix(vec3(luma), color, EMBER_SATURATION), 0.0); +} + +float emberVignette(vec2 uv) { + vec2 edge = uv - 0.5; + return 1.0 - dot(edge, edge) * EMBER_VIGNETTE; +} + +vec3 ember(vec2 uv, float aspect, float cycle, float intensity, vec3 start, vec3 middle, vec3 end) { + return emberBody(uv, aspect, cycle, intensity, start, middle, end, EMBER_SWIRL_ITERATIONS, + emberScreenFrame(uv, aspect)) * emberVignette(uv); +} diff --git a/src/main/resources/assets/evolution/shaders/include/mask.glsl b/src/main/resources/assets/evolution/shaders/include/mask.glsl new file mode 100644 index 0000000..7a352c4 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/include/mask.glsl @@ -0,0 +1,13 @@ +// mask.glsl +// Clean edge alpha-fade for scrollable and clipped regions. +// Affects ONLY the alpha channel - a true dissolve at the bounds, NEVER black shadows/vignettes. +// MaskTopY / MaskBottomY / MaskLeftX / MaskRightX are already in gl_FragCoord screen space. +// Every edge carries its own fade width, so a container can be soft on one side and hard on +// the other - a scroll view fades top and bottom while its sides stay flush with the layout. +// Requires evolution:common.glsl for applyEdgeMask. + +float applyAlphaMask(float alpha) { + return applyEdgeMask(alpha, gl_FragCoord.xy, + vec4(MaskTopY, MaskBottomY, MaskLeftX, MaskRightX), + vec4(MaskFadeTop, MaskFadeBottom, MaskFadeLeft, MaskFadeRight)); +} diff --git a/src/main/resources/assets/evolution/shaders/include/menu_patterns.glsl b/src/main/resources/assets/evolution/shaders/include/menu_patterns.glsl new file mode 100644 index 0000000..8b6b96b --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/include/menu_patterns.glsl @@ -0,0 +1,236 @@ +const float MODE_NEBULA = 1.0; +const float MODE_SILK = 2.0; +const float MODE_CONTOUR = 3.0; +const float MODE_EMBER = 4.0; +const float MODE_EPSILON = 0.5; + +const float TAU = 6.2831853; +const float RAMP_MID = 0.5; +const float RAMP_SPAN = 2.0; + +const float POINT_MARGIN = 0.22; +const float POINT_SPAN = 0.56; +const float POINT_SEED_X = 3.17; +const float POINT_SEED_Y = 8.41; + +const float NEBULA_TILE = 5.0; +const float NEBULA_DRIFT_LAPS = 1.0; +const vec2 NEBULA_WARP_SHIFT = vec2(4.6, 9.3); +const float NEBULA_WARP_SCALE = 1.7; +const float NEBULA_WARP_GAIN = 1.35; +const float NEBULA_CLOUD_SCALE = 1.25; +const float NEBULA_CLOUD_LOW = 0.50; +const float NEBULA_CLOUD_HIGH = 0.96; +const float NEBULA_CLOUD_CONTRAST = 1.5; +const float NEBULA_CLOUD_ALPHA = 1.0; +const float NEBULA_CORE_EXPONENT = 3.5; +const float NEBULA_CORE_GAIN = 0.26; +const float NEBULA_RAMP_BIAS = 0.2; +const float NEBULA_RAMP_GAIN = 1.1; +const vec3 NEBULA_SKY_TOP = vec3(0.024, 0.026, 0.057); +const vec3 NEBULA_SKY_BOTTOM = vec3(0.004, 0.005, 0.013); +const float NEBULA_SKY_TINT = 0.16; +const float NEBULA_DUST_GAIN = 0.12; +const vec3 NEBULA_STAR_COLOR = vec3(0.86, 0.90, 1.0); +const float NEBULA_STAR_TINT = 0.35; +const float NEBULA_VIGNETTE = 0.55; + +const vec3 STAR_NEAR = vec3(26.0, 3.0, 0.72); +const vec3 STAR_MID = vec3(44.0, 2.0, 0.80); +const vec3 STAR_FAR = vec3(72.0, 1.0, 0.86); +const float STAR_NEAR_RADIUS = 0.0026; +const float STAR_MID_RADIUS = 0.0018; +const float STAR_FAR_RADIUS = 0.0012; +const float STAR_NEAR_GAIN = 1.0; +const float STAR_MID_GAIN = 0.72; +const float STAR_FAR_GAIN = 0.46; +const float STAR_TWINKLE_BASE = 0.62; +const float STAR_TWINKLE_GAIN = 0.38; +const float STAR_TWINKLE_LAPS = 9.0; + +const float SILK_TILE = 3.0; +const float SILK_DRIFT_LAPS = 1.0; +const vec2 SILK_WARP_SHIFT = vec2(7.3, 2.9); +const float SILK_WARP_SCALE = 1.15; +const float SILK_WARP_GAIN = 1.6; +const float SILK_CROSS = 0.45; +const float SILK_FLOW_SCALE = 0.85; +const float SILK_BAND_COUNT = 3.6; +const float SILK_BAND_LAPS = 2.0; +const float SILK_SHEEN_EXPONENT = 16.0; +const float SILK_SHEEN_GAIN = 0.26; +const float SILK_RAMP_BIAS = 0.1; +const float SILK_RAMP_GAIN = 1.1; +const float SILK_BAND_TINT = 0.3; +const float SILK_BODY_FLOOR = 0.08; +const float SILK_BODY_GAIN = 0.5; +const vec3 SILK_BASE_TOP = vec3(0.026, 0.024, 0.045); +const vec3 SILK_BASE_BOTTOM = vec3(0.006, 0.006, 0.014); +const float SILK_DEPTH_EXPONENT = 1.4; +const float SILK_VIGNETTE = 0.42; + +const float CONTOUR_TILE = 4.0; +const float CONTOUR_DRIFT_LAPS = 1.0; +const vec2 CONTOUR_WARP_SHIFT = vec2(2.7, 6.1); +const float CONTOUR_WARP_SCALE = 1.5; +const float CONTOUR_WARP_GAIN = 0.65; +const float CONTOUR_LEVELS = 16.0; +const float CONTOUR_LEVEL_LAPS = 5.0; +const float CONTOUR_MAJOR_EVERY = 5.0; +const float CONTOUR_MIN_GRADIENT = 1e-5; +const float CONTOUR_MINOR_WIDTH = 0.85; +const float CONTOUR_MAJOR_WIDTH = 1.5; +const float CONTOUR_LINE_AA = 0.8; +const float CONTOUR_MINOR_GAIN = 0.6; +const float CONTOUR_MAJOR_GAIN = 1.0; +const float CONTOUR_GLOW_WIDTH = 7.0; +const float CONTOUR_GLOW_GAIN = 0.2; +const float CONTOUR_HIGHLIGHT = 0.18; +const float CONTOUR_RAMP_BIAS = 0.15; +const float CONTOUR_RAMP_GAIN = 1.2; +const float CONTOUR_FILL_GAIN = 0.16; +const vec3 CONTOUR_BASE_TOP = vec3(0.020, 0.021, 0.040); +const vec3 CONTOUR_BASE_BOTTOM = vec3(0.005, 0.005, 0.013); +const float CONTOUR_VIGNETTE = 0.45; + +vec3 accentAt(float position) { + float clamped = clamp(position, 0.0, 1.0); + if (clamped <= RAMP_MID) { + return mix(TopLeftColor.rgb, BottomLeftColor.rgb, clamped * RAMP_SPAN); + } + return mix(BottomLeftColor.rgb, TopRightColor.rgb, (clamped - RAMP_MID) * RAMP_SPAN); +} + +float vignetteAt(vec2 uv, float strength) { + vec2 offset = (uv - 0.5) * 2.0; + float falloff = dot(offset, offset) * 0.5; + return 1.0 - strength * falloff * falloff; +} + +float pointFalloff(vec2 delta, float radius) { + float squared = dot(delta, delta) / (radius * radius); + return exp(-squared); +} + +float starLayer(vec2 uv, float aspect, float cycle, vec3 layer, float radius) { + float columns = layer.x; + float rows = max(floor(columns * aspect), 1.0); + vec2 grid = vec2(uv.x * columns + cycle * columns * layer.y, uv.y * rows); + vec2 cell = floor(grid); + vec2 local = grid - cell; + vec2 wrapped = mod(cell, vec2(columns, rows)) + columns; + float pick = hash12(wrapped); + if (pick < layer.z) { + return 0.0; + } + vec2 position = vec2( + POINT_MARGIN + POINT_SPAN * hash12(wrapped + POINT_SEED_X), + POINT_MARGIN + POINT_SPAN * hash12(wrapped + POINT_SEED_Y)); + vec2 delta = (local - position) / vec2(columns, rows) * vec2(1.0, aspect); + float twinkle = STAR_TWINKLE_BASE + + STAR_TWINKLE_GAIN * sin(TAU * (cycle * STAR_TWINKLE_LAPS + pick)); + return pointFalloff(delta, radius) * twinkle; +} + +vec3 nebula(vec2 uv, float aspect, float cycle, float shade) { + vec2 field = vec2(uv.x, uv.y * aspect) * NEBULA_TILE; + float drift = cycle * NEBULA_TILE * NEBULA_DRIFT_LAPS; + vec2 warp = vec2( + loopFbm(field * NEBULA_WARP_SCALE + vec2(drift, 0.0), NEBULA_TILE), + loopFbm(field * NEBULA_WARP_SCALE + NEBULA_WARP_SHIFT - vec2(drift, 0.0), NEBULA_TILE)); + float clouds = loopFbm(field * NEBULA_CLOUD_SCALE + warp * NEBULA_WARP_GAIN + vec2(drift, 0.0), + NEBULA_TILE); + clouds = pow(smoothstep(NEBULA_CLOUD_LOW, NEBULA_CLOUD_HIGH, clouds), NEBULA_CLOUD_CONTRAST); + + vec3 tint = accentAt(NEBULA_RAMP_BIAS + clouds * NEBULA_RAMP_GAIN); + vec3 sky = mix(NEBULA_SKY_TOP, NEBULA_SKY_BOTTOM, shade); + sky += accentAt(0.0) * NEBULA_SKY_TINT * (1.0 - shade) * NEBULA_DUST_GAIN; + + float core = pow(clouds, NEBULA_CORE_EXPONENT); + vec3 color = sky + tint * clouds * NEBULA_CLOUD_ALPHA + core * NEBULA_CORE_GAIN; + + float stars = starLayer(uv, aspect, cycle, STAR_NEAR, STAR_NEAR_RADIUS) * STAR_NEAR_GAIN + + starLayer(uv, aspect, cycle, STAR_MID, STAR_MID_RADIUS) * STAR_MID_GAIN + + starLayer(uv, aspect, cycle, STAR_FAR, STAR_FAR_RADIUS) * STAR_FAR_GAIN; + vec3 starTone = mix(NEBULA_STAR_COLOR, accentAt(1.0), NEBULA_STAR_TINT); + color += starTone * stars * (1.0 - core); + + return color; +} + +vec3 silk(vec2 uv, float aspect, float cycle, float shade) { + vec2 field = vec2(uv.x, uv.y * aspect) * SILK_TILE; + float drift = cycle * SILK_TILE * SILK_DRIFT_LAPS; + vec2 warp = vec2( + loopFbm(field * SILK_WARP_SCALE + vec2(drift, drift * SILK_CROSS), SILK_TILE), + loopFbm(field * SILK_WARP_SCALE + SILK_WARP_SHIFT - vec2(drift * SILK_CROSS, drift), + SILK_TILE)); + float flow = loopFbm(field * SILK_FLOW_SCALE + warp * SILK_WARP_GAIN, SILK_TILE); + float bands = 0.5 + 0.5 * cos(TAU * (flow * SILK_BAND_COUNT + cycle * SILK_BAND_LAPS)); + float sheen = pow(bands, SILK_SHEEN_EXPONENT); + + vec3 tint = accentAt(SILK_RAMP_BIAS + flow * SILK_RAMP_GAIN + bands * SILK_BAND_TINT); + vec3 base = mix(SILK_BASE_TOP, SILK_BASE_BOTTOM, pow(clamp(shade, 0.0, 1.0), SILK_DEPTH_EXPONENT)); + float body = SILK_BODY_FLOOR + SILK_BODY_GAIN * bands * bands; + vec3 color = base + tint * body + vec3(sheen * SILK_SHEEN_GAIN); + + return color; +} + +vec3 contour(vec2 uv, float aspect, float cycle, float shade) { + vec2 field = vec2(uv.x, uv.y * aspect) * CONTOUR_TILE; + float drift = cycle * CONTOUR_TILE * CONTOUR_DRIFT_LAPS; + vec2 warp = vec2( + loopFbm(field * CONTOUR_WARP_SCALE + vec2(drift, 0.0), CONTOUR_TILE), + loopFbm(field * CONTOUR_WARP_SCALE + CONTOUR_WARP_SHIFT - vec2(0.0, drift), CONTOUR_TILE)); + float elevation = loopFbm(field + warp * CONTOUR_WARP_GAIN + vec2(drift, 0.0), CONTOUR_TILE); + + float levels = elevation * CONTOUR_LEVELS + cycle * CONTOUR_LEVEL_LAPS; + float gradient = max(fwidth(levels), CONTOUR_MIN_GRADIENT); + float ridge = (0.5 - abs(fract(levels) - 0.5)) / gradient; + float major = 1.0 - step(0.5, mod(floor(levels), CONTOUR_MAJOR_EVERY)); + + float width = mix(CONTOUR_MINOR_WIDTH, CONTOUR_MAJOR_WIDTH, major); + float line = 1.0 - smoothstep(width - CONTOUR_LINE_AA, width + CONTOUR_LINE_AA, ridge); + float glow = exp(-ridge / CONTOUR_GLOW_WIDTH) * CONTOUR_GLOW_GAIN; + float strength = line * mix(CONTOUR_MINOR_GAIN, CONTOUR_MAJOR_GAIN, major) + glow; + + vec3 tint = accentAt(CONTOUR_RAMP_BIAS + elevation * CONTOUR_RAMP_GAIN); + vec3 color = mix(CONTOUR_BASE_TOP, CONTOUR_BASE_BOTTOM, shade) + + tint * elevation * CONTOUR_FILL_GAIN + + tint * strength + + vec3(line * major * CONTOUR_HIGHLIGHT); + + return color; +} + +vec3 menuPattern(float mode, vec2 uv, float aspect, float cycle, float emberIntensity, int emberSwirl, + vec3 frame) { + if (abs(mode - MODE_NEBULA) < MODE_EPSILON) { + return nebula(uv, aspect, cycle, frame.x); + } + if (abs(mode - MODE_SILK) < MODE_EPSILON) { + return silk(uv, aspect, cycle, frame.x); + } + if (abs(mode - MODE_CONTOUR) < MODE_EPSILON) { + return contour(uv, aspect, cycle, frame.x); + } + if (abs(mode - MODE_EMBER) < MODE_EPSILON) { + return emberBody(uv, aspect, cycle, emberIntensity, + TopLeftColor.rgb, BottomLeftColor.rgb, TopRightColor.rgb, emberSwirl, frame); + } + return vec3(0.0); +} + +float menuVignetteStrength(float mode) { + if (abs(mode - MODE_NEBULA) < MODE_EPSILON) { + return NEBULA_VIGNETTE; + } + if (abs(mode - MODE_SILK) < MODE_EPSILON) { + return SILK_VIGNETTE; + } + if (abs(mode - MODE_CONTOUR) < MODE_EPSILON) { + return CONTOUR_VIGNETTE; + } + return 0.0; +} diff --git a/src/main/resources/assets/evolution/shaders/include/sky_common.glsl b/src/main/resources/assets/evolution/shaders/include/sky_common.glsl new file mode 100644 index 0000000..a4f4f28 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/include/sky_common.glsl @@ -0,0 +1,386 @@ +#version 150 + +const float SKY_HORIZON_FADE = 0.2; +const float SKY_DOME_FADE_LOW = -0.04; +const float SKY_DOME_FADE_HIGH = 0.16; +const float SKY_NADIR_DIM = 0.62; +const float SKY_NADIR_SPAN = 0.85; + +const float SKY_HAZE_SPAN = 0.42; + +const float SKY_SEA_RISE = 0.34; +const float SKY_SEA_SCALE = 1.5; +const float SKY_SEA_DRIFT_X = 0.010; +const float SKY_SEA_DRIFT_Z = 0.006; +const float SKY_SEA_SLAB_TOP = 1.02; +const float SKY_SEA_SLAB_BOTTOM = 1.42; +const float SKY_SEA_SLAB_MID = 1.22; +const int SKY_SEA_STEPS_MAX = 10; +const float SKY_SEA_STEPS_MIN = 5.0; +const float SKY_SEA_STEEP_LOW = 0.03; +const float SKY_SEA_STEEP_HIGH = 0.55; +const float SKY_SEA_MAX_STEP = 2.6; +const float SKY_SEA_JITTER = 0.8; +const float SKY_SEA_DITHER_SCALE = 2048.0; +const float SKY_SEA_ABSORB = 6.0; +const float SKY_SEA_LIGHT_ABSORB = 3.4; +const float SKY_SEA_SELF_ABSORB = 0.9; +const float SKY_SEA_LIGHT_STEP = 0.42; +const float SKY_SEA_LIGHT_RISE = 0.18; +const float SKY_SEA_SHEAR = 0.5; +const vec2 SKY_SEA_SHEAR_DIR = vec2(0.857, 0.514); +const float SKY_SEA_CUTOFF = 0.02; +const float SKY_SEA_DENSITY_EPSILON = 0.02; +const float SKY_SEA_COVER_LOW = 0.36; +const float SKY_SEA_COVER_SPAN = 0.16; +const float SKY_SEA_TOP_ERODE = 0.28; +const float SKY_SEA_TOP_SOFT = 0.30; +const float SKY_SEA_BASE_SOFT = 0.86; +const float SKY_SEA_DETAIL_BLEND = 0.72; +const float SKY_SEA_HAZE_RANGE = 7.0; +const float SKY_SEA_HAZE_GAIN = 0.60; +const float SKY_SEA_DEPTH_SPAN = 0.66; +const float SKY_SEA_DEEP = 0.16; +const float SKY_SEA_CREST_TINT = 0.55; +const float SKY_SEA_SHADOW_TINT = 0.10; +const float SKY_SEA_RIM_SPAN = 0.16; +const float SKY_SEA_RIM_GAIN = 0.45; +const float SKY_SEA_GLINT_TIGHT = 90.0; +const float SKY_SEA_GLINT_GAIN = 0.55; +const int SKY_SEA_OCTAVES = 6; +const int SKY_SEA_COARSE_OCTAVES = 3; +const float SKY_SEA_MARCH_LOD = 3.0; +const float SKY_SEA_LIGHT_LOD = 2.0; +const float SKY_SEA_LACUNARITY = 2.03; +const float SKY_SEA_GAIN = 0.5; +const float SKY_SEA_MEAN = 0.5; +const vec2 SKY_SEA_OCTAVE_SHIFT = vec2(37.1, 11.7); +const mat2 SKY_SEA_ROTATION = mat2(0.8776, 0.4794, -0.4794, 0.8776); +const float SKY_SEA_LOD_BIAS = 1.0; +const float SKY_SEA_LOD_FLOOR = 1.0; +const float SKY_SEA_LOD_EPSILON = 1.0e-5; +const float SKY_SEA_AXIS_EPSILON = 1.0e-4; +const uint SKY_SEA_HASH_X = 1664525u; +const uint SKY_SEA_HASH_Y = 1013904223u; +const uint SKY_SEA_HASH_MIX_A = 0x7feb352du; +const uint SKY_SEA_HASH_MIX_B = 0x846ca68bu; +const uint SKY_SEA_HASH_SHIFT_A = 15u; +const uint SKY_SEA_HASH_SHIFT_B = 16u; +const int SKY_SEA_HASH_BIAS = 1048576; +const float SKY_SEA_HASH_NORMALIZE = 1.0 / 4294967296.0; +const float SKY_PLANE_EPSILON = 0.0022; +const float SKY_PLANE_RANGE = 7.5; +const float SKY_PLANE_DETAIL_RANGE = 2.4; +const float SKY_PLANE_COMPRESS = 6.0; +const float SKY_PLANE_TWIST = 0.045; +const float SKY_GLOW_TIGHT = 3.0; +const float SKY_GLOW_GAIN = 0.55; + +const float SKY_LIGHT_RATE = 0.021; +const float SKY_LIGHT_HEIGHT = 0.17; +const float SKY_RAMP_MID = 0.30; +const vec3 SKY_STAR_WARM = vec3(1.00, 0.78, 0.55); +const vec3 SKY_STAR_COOL = vec3(0.66, 0.80, 1.00); +const float SKY_STAR_HUE_STEP = 91.7; +const float SKY_STAR_TWINKLE_BASE = 0.62; +const float SKY_STAR_TWINKLE_GAIN = 0.38; +const float SKY_STAR_TWINKLE_RATE = 5.0; +const float SKY_STAR_TWINKLE_PHASE = 43.0; +const float SKY_STAR_SIZE_FLOOR = 0.30; +const float SKY_STAR_JITTER = 0.24; +const float SKY_STAR_JITTER_SEED = 7.13; +const float SKY_STAR_REACH = 0.26; +const float SKY_STAR_CORE_GAIN = 3.2; +const float SKY_STAR_HALO_GAIN = 0.42; + +const vec3 SKY_LUMA = vec3(0.2126, 0.7152, 0.0722); +const float SKY_EXPOSURE = 2.0; +const float SKY_CONTRAST_BLEND = 0.22; +const float SKY_SATURATION = 1.14; + +const float SKY_DITHER_AMPLITUDE = 2.0 / 255.0; +const vec3 SKY_DITHER_HASH_SCALE = vec3(0.1031, 0.1030, 0.0973); +const float SKY_DITHER_HASH_OFFSET = 33.33; +const vec3 SKY_DITHER_HASH_SCALE_B = vec3(0.0973, 0.1099, 0.1031); +const float SKY_DITHER_HASH_OFFSET_B = 19.19; + +float skyHorizonBlend(float dirY) { + return smoothstep(0.0, SKY_HORIZON_FADE, max(dirY, 0.0)); +} + +float skyDown(float dirY, float fullDome) { + return max(-dirY, 0.0) * fullDome; +} + +float skyVerticalAxis(float dirY, float fullDome) { + return mix(dirY, dirY * 0.5 + 0.5, fullDome); +} + +float skyDomeFade(float dirY, float fullDome) { + return mix(1.0, smoothstep(SKY_DOME_FADE_LOW, SKY_DOME_FADE_HIGH, dirY), fullDome); +} + +vec3 skySeaTone(vec3 primary, vec3 secondary, float scale) { + return mix(primary, secondary, 0.5) * scale; +} + +vec2 skyPlaneDomain(vec2 groundUv) { + float radius = length(groundUv); + if (radius <= SKY_PLANE_EPSILON) { + return groundUv; + } + float compressed = SKY_PLANE_COMPRESS * log(1.0 + radius / SKY_PLANE_COMPRESS); + float twist = compressed * SKY_PLANE_TWIST; + float sinTwist = sin(twist); + float cosTwist = cos(twist); + vec2 unit = groundUv / radius; + return vec2(unit.x * cosTwist - unit.y * sinTwist, + unit.x * sinTwist + unit.y * cosTwist) * compressed; +} + +vec3 skyPlane(vec3 dir, float height) { + vec2 ground = dir.xz * (height / max(abs(dir.y), SKY_PLANE_EPSILON)); + return vec3(skyPlaneDomain(ground), length(ground)); +} + +float skyPlaneFalloff(float distance, float range) { + return exp(-distance / range); +} + +vec3 skyTonemap(vec3 color) { + color = max(color, vec3(0.0)); + float luma = dot(color, SKY_LUMA); + vec3 perChannel = color / (1.0 + color); + vec3 preserved = color / (1.0 + luma); + return mix(preserved, perChannel, perChannel); +} + +vec3 skyGrade(vec3 color) { + float luma = dot(color, SKY_LUMA); + color = clamp(mix(vec3(luma), color, SKY_SATURATION), 0.0, 1.0); + vec3 curved = color * color * (3.0 - 2.0 * color); + return mix(color, curved, SKY_CONTRAST_BLEND); +} + +vec3 skyFinish(vec3 color, float exposure) { + return skyGrade(skyTonemap(color * exposure)); +} + +vec3 skyLightDir(float time) { + float angle = time * SKY_LIGHT_RATE; + return normalize(vec3(cos(angle), SKY_LIGHT_HEIGHT, sin(angle))); +} + +float skyHalo(vec3 dir, vec3 light, float tightness) { + return pow(max(dot(dir, light), 0.0), tightness); +} + +vec3 skyRamp(float dirY, vec3 horizon, vec3 mid, vec3 zenith) { + float up = clamp(dirY, 0.0, 1.0); + return mix(mix(horizon, mid, smoothstep(0.0, SKY_RAMP_MID, up)), + zenith, smoothstep(SKY_RAMP_MID, 1.0, up)); +} + +vec3 skyHorizonGlow(vec3 dir, vec3 light, vec3 baseTone, vec3 glowTone) { + return mix(baseTone, glowTone, skyHalo(dir, light, SKY_GLOW_TIGHT) * SKY_GLOW_GAIN); +} + +float skyBand(vec3 dir, vec3 axis, float width) { + float offset = dot(dir, axis) / width; + return exp(-offset * offset); +} + +vec3 skyStars(vec3 dir, float time, float density, float scale, float gain) { + vec3 p = dir * scale; + vec3 cell = floor(p); + float pick = hash13(cell); + float threshold = 1.0 - density; + if (pick <= threshold) { + return vec3(0.0); + } + float size = (pick - threshold) / max(density, 1.0e-4); + vec3 jitter = (hash33(cell + SKY_STAR_JITTER_SEED) - 0.5) * SKY_STAR_JITTER; + float distance = length(p - cell - 0.5 - jitter); + + float radius = SKY_STAR_REACH * (SKY_STAR_SIZE_FLOOR + size); + float falloff = max(1.0 - distance / radius, 0.0); + if (falloff <= 0.0) { + return vec3(0.0); + } + float squared = falloff * falloff; + float quad = squared * squared; + float core = quad * quad; + float halo = squared; + + float twinkle = SKY_STAR_TWINKLE_BASE + SKY_STAR_TWINKLE_GAIN + * sin(time * (1.0 + pick * SKY_STAR_TWINKLE_RATE) + pick * SKY_STAR_TWINKLE_PHASE); + vec3 tint = mix(SKY_STAR_WARM, SKY_STAR_COOL, fract(pick * SKY_STAR_HUE_STEP)); + + float brightness = (core * SKY_STAR_CORE_GAIN + halo * SKY_STAR_HALO_GAIN) + * twinkle * gain * (SKY_STAR_SIZE_FLOOR + size); + return mix(tint, vec3(1.0), core * core) * brightness; +} + +float skyDepthHaze(float dirY, float fullDome, float gain) { + float edge = 1.0 - min(abs(dirY) / SKY_HAZE_SPAN, 1.0); + return edge * edge * gain * fullDome; +} + +float skySeaMask(float dirY, float fullDome) { + return smoothstep(0.0, SKY_SEA_RISE, skyDown(dirY, fullDome)); +} + +float skySeaHash(vec2 lattice) { + uvec2 cell = uvec2(ivec2(lattice) + SKY_SEA_HASH_BIAS); + uint h = cell.x * SKY_SEA_HASH_X + cell.y * SKY_SEA_HASH_Y; + h ^= h >> SKY_SEA_HASH_SHIFT_B; + h *= SKY_SEA_HASH_MIX_A; + h ^= h >> SKY_SEA_HASH_SHIFT_A; + h *= SKY_SEA_HASH_MIX_B; + h ^= h >> SKY_SEA_HASH_SHIFT_B; + return float(h) * SKY_SEA_HASH_NORMALIZE; +} + +float skySeaNoise(vec2 p) { + vec2 i = floor(p); + vec2 f = p - i; + vec2 u = f * f * f * (f * (f * 6.0 - 15.0) + 10.0); + return mix(mix(skySeaHash(i), skySeaHash(i + vec2(1.0, 0.0)), u.x), + mix(skySeaHash(i + vec2(0.0, 1.0)), skySeaHash(i + vec2(1.0, 1.0)), u.x), u.y); +} + +float skySeaLod(vec2 domain, float scale) { + float footprint = length(fwidth(domain)) * scale; + float octaves = footprint > SKY_SEA_LOD_EPSILON + ? -log2(footprint) - SKY_SEA_LOD_BIAS + : float(SKY_SEA_OCTAVES); + return clamp(octaves, SKY_SEA_LOD_FLOOR, float(SKY_SEA_OCTAVES)); +} + +vec2 skySeaField(vec2 p, float lod) { + float coarse = 0.0; + float total = 0.0; + float amplitude = SKY_SEA_GAIN; + for (int octave = 0; octave < SKY_SEA_OCTAVES; octave++) { + float weight = clamp(lod - float(octave), 0.0, 1.0); + if (weight <= 0.0) { + break; + } + float band = amplitude * weight * (skySeaNoise(p) - SKY_SEA_MEAN); + total += band; + if (octave < SKY_SEA_COARSE_OCTAVES) { + coarse += band; + } + p = SKY_SEA_ROTATION * p * SKY_SEA_LACUNARITY + SKY_SEA_OCTAVE_SHIFT; + amplitude *= SKY_SEA_GAIN; + } + return vec2(SKY_SEA_MEAN + coarse, SKY_SEA_MEAN + total); +} + +vec2 skySeaLightOffset(vec3 light) { + float span = length(light.xz); + if (span <= SKY_SEA_AXIS_EPSILON) { + return vec2(SKY_SEA_LIGHT_STEP, 0.0); + } + return light.xz / span * SKY_SEA_LIGHT_STEP; +} + +float skySeaDensity(vec2 domain, float level, float lod) { + vec2 field = skySeaField(domain, lod); + float value = mix(field.x, field.y, SKY_SEA_DETAIL_BLEND); + float rise = 1.0 - level; + float threshold = SKY_SEA_COVER_LOW + SKY_SEA_TOP_ERODE * rise * rise; + float profile = smoothstep(0.0, SKY_SEA_TOP_SOFT, level) + * smoothstep(1.0, SKY_SEA_BASE_SOFT, level); + return smoothstep(threshold, threshold + SKY_SEA_COVER_SPAN, value) * profile; +} + +vec3 skySea(vec3 dir, float time, vec3 horizonTone, vec3 accent) { + vec2 drift = vec2(time * SKY_SEA_DRIFT_X, time * SKY_SEA_DRIFT_Z); + float down = max(-dir.y, SKY_PLANE_EPSILON); + vec3 midPlane = skyPlane(dir, SKY_SEA_SLAB_MID); + float midLod = skySeaLod(midPlane.xy, SKY_SEA_SCALE); + + vec3 light = skyLightDir(time); + vec2 lightOffset = skySeaLightOffset(light); + + int steps = max(int(mix(SKY_SEA_STEPS_MIN, float(SKY_SEA_STEPS_MAX), + smoothstep(SKY_SEA_STEEP_LOW, SKY_SEA_STEEP_HIGH, down))), 1); + float slab = SKY_SEA_SLAB_BOTTOM - SKY_SEA_SLAB_TOP; + float rayStep = min(slab / (down * float(steps)), SKY_SEA_MAX_STEP); + float dither = skySeaHash(floor(midPlane.xy * SKY_SEA_DITHER_SCALE)); + + vec3 crest = mix(horizonTone, accent, SKY_SEA_CREST_TINT); + vec3 deep = mix(horizonTone, horizonTone * SKY_SEA_DEEP, + smoothstep(0.0, SKY_SEA_DEPTH_SPAN, down)); + vec3 shadowTone = mix(deep, crest, SKY_SEA_SHADOW_TINT); + + vec3 scattered = vec3(0.0); + float transmittance = 1.0; + float above = 0.0; + for (int layer = 0; layer < SKY_SEA_STEPS_MAX; layer++) { + if (layer >= steps || transmittance < SKY_SEA_CUTOFF) { + break; + } + float level = clamp((float(layer) + 0.5 + (dither - 0.5) * SKY_SEA_JITTER) + / float(steps), 0.0, 1.0); + float height = SKY_SEA_SLAB_TOP + slab * level; + vec2 domain = skyPlaneDomain(dir.xz * (height / down)) * SKY_SEA_SCALE + + drift + SKY_SEA_SHEAR_DIR * (height * SKY_SEA_SHEAR); + float lod = clamp(midLod - log2(height / SKY_SEA_SLAB_MID), + SKY_SEA_LOD_FLOOR, SKY_SEA_MARCH_LOD); + float density = skySeaDensity(domain, level, lod); + if (density > SKY_SEA_DENSITY_EPSILON) { + float toward = skySeaDensity(domain + lightOffset, + max(level - SKY_SEA_LIGHT_RISE, 0.0), min(lod, SKY_SEA_LIGHT_LOD)); + float sun = exp(-(toward * SKY_SEA_LIGHT_ABSORB + above * SKY_SEA_SELF_ABSORB)); + float alpha = 1.0 - exp(-density * SKY_SEA_ABSORB * rayStep); + scattered += transmittance * alpha * mix(shadowTone, crest, sun); + transmittance -= transmittance * alpha; + above += density * rayStep; + } + } + + vec3 sea = scattered + transmittance * deep; + sea += accent * skyHalo(dir, vec3(light.x, -light.y, light.z), SKY_SEA_GLINT_TIGHT) + * SKY_SEA_GLINT_GAIN * (1.0 - transmittance); + + float haze = 1.0 - skyPlaneFalloff(midPlane.z, SKY_SEA_HAZE_RANGE); + sea = mix(sea, horizonTone, haze * SKY_SEA_HAZE_GAIN); + + float rim = 1.0 - smoothstep(0.0, SKY_SEA_RIM_SPAN, down); + return mix(sea, crest, rim * SKY_SEA_RIM_GAIN); +} + +float skyNadirDepth(float dirY, float fullDome) { + return mix(1.0, SKY_NADIR_DIM, smoothstep(0.0, SKY_NADIR_SPAN, skyDown(dirY, fullDome))); +} + +float skyEffectFade(float dirY, float fullDome) { + return max(skyHorizonBlend(dirY), fullDome); +} + +float skyDitherHash(vec2 fragCoord) { + vec3 p = fract(fragCoord.xyx * SKY_DITHER_HASH_SCALE); + p += dot(p, p.yzx + SKY_DITHER_HASH_OFFSET); + return fract((p.x + p.y) * p.z); +} + +float skyDitherHashB(vec2 fragCoord) { + vec3 p = fract(fragCoord.yxy * SKY_DITHER_HASH_SCALE_B); + p += dot(p, p.zxy + SKY_DITHER_HASH_OFFSET_B); + return fract((p.x + p.z) * p.y); +} + +vec3 skyDither(vec3 color, vec2 fragCoord) { + float triangular = skyDitherHash(fragCoord) + skyDitherHashB(fragCoord) - 1.0; + return color + triangular * SKY_DITHER_AMPLITUDE; +} + +mat3 skyRotationY(float sinAngle, float cosAngle) { + return mat3( + cosAngle, 0.0, sinAngle, + 0.0, 1.0, 0.0, + -sinAngle, 0.0, cosAngle + ); +} diff --git a/src/main/resources/assets/evolution/shaders/include/sky_depth_gate.glsl b/src/main/resources/assets/evolution/shaders/include/sky_depth_gate.glsl new file mode 100644 index 0000000..2bc6545 --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/include/sky_depth_gate.glsl @@ -0,0 +1,9 @@ +uniform sampler2D DepthTex; + +const float SKY_DEPTH_NEAR_CLEAR = 0.00001; +const float SKY_DEPTH_FAR_CLEAR = 0.99999; + +bool skyCoveredByGeometry(vec2 fragCoord) { + float depth = texelFetch(DepthTex, ivec2(fragCoord), 0).r; + return depth > SKY_DEPTH_NEAR_CLEAR && depth < SKY_DEPTH_FAR_CLEAR; +} diff --git a/src/main/resources/assets/evolution/shaders/include/uniforms.glsl b/src/main/resources/assets/evolution/shaders/include/uniforms.glsl new file mode 100644 index 0000000..d9d5fec --- /dev/null +++ b/src/main/resources/assets/evolution/shaders/include/uniforms.glsl @@ -0,0 +1,89 @@ +#version 150 + +layout(std140) uniform EvolutionUniforms { + vec2 Size; + vec4 Radius; + vec2 Smoothness; + float CornerSmoothness; + float Thickness; + float CornerIndex; + float Progress; + float Fade; + float StripeWidth; + vec4 TopLeftColor; + vec4 BottomLeftColor; + vec4 TopRightColor; + vec4 BottomRightColor; + float BlurRadius; + vec2 Resolution; + float Offset; + float Saturation; + float TintIntensity; + vec3 TintColor; + float Range; + float Outline; + float OutlineThickness; + vec4 OutlineColor; + float EnableFadeout; + float FadeoutStart; + float FadeoutEnd; + float MaxWidth; + float TextPosX; + float Time; + vec4 HandColor; + float HandShaderMode; + float HandShaderOnly; + float MaskTopY; + float MaskBottomY; + float MaskFadeTop; + float MaskFadeBottom; + float MaskBypass; + float MaskLeftX; + float MaskRightX; + float MaskFadeLeft; + float MaskFadeRight; + vec3 CameraPos; + vec2 SmokeCamShift; + float SmokeIntensity; + float SmokeSpeed; + float SmokeLength; + float SmokeTrailSoftness; + float SmokeTrailBlur; + float SmokeAmount; + float SmokeActivity; + float SmokeTrailFade; + float SmokeSlash; + float SmokeSlashDir; + float SmokeSwingHand; + float SmokeHandSoftness; + float SmokeHandBlur; + float SmokeHeight; + float SmokeWind; + float SmokeWave; + float Refraction; + float BevelDepth; + float BevelWidth; + float TiltX; + float TiltY; + float Frost; + float SkyRotSin; + float SkyRotCos; + float GlossDirX; + float GlossDirY; + float Tint; + float GlowRadius; + float GlowIntensity; + vec4 GlowColor; + float GlassContrast; + float GlassTextLuma; + float GlassSpecular; + float GlassLightX; + float GlassLightY; + float GlassDispersion; + float GlassRimGain; + float GlassDepth; + vec2 GlassSpan; + vec2 SweepOrigin; + vec4 Backdrop; + float SkyFullDome; +}; diff --git a/src/main/resources/assets/evolution/sounds.json b/src/main/resources/assets/evolution/sounds.json new file mode 100644 index 0000000..85537d9 --- /dev/null +++ b/src/main/resources/assets/evolution/sounds.json @@ -0,0 +1,989 @@ +{ + "ui.click": { + "sounds": [ + "evolution:click" + ] + }, + "ui.toggle_on": { + "sounds": [ + "evolution:toggle_on" + ] + }, + "ui.toggle_off": { + "sounds": [ + "evolution:toggle_off" + ] + }, + "ui.slider": { + "sounds": [ + "evolution:slider" + ] + }, + "ui.tab": { + "sounds": [ + "evolution:tab" + ] + }, + "ui.open": { + "sounds": [ + "evolution:open" + ] + }, + "ui.close": { + "sounds": [ + "evolution:close" + ] + }, + "ui.drag": { + "sounds": [ + "evolution:drag" + ] + }, + "ui.resize": { + "sounds": [ + "evolution:resize" + ] + }, + "ui.dropdown": { + "sounds": [ + "evolution:dropdown" + ] + }, + "ui.applepay": { + "sounds": [ + "evolution:applepay" + ] + }, + "ui.clickgui_open": { + "sounds": [ + "evolution:clickgui_open" + ] + }, + "ui.critical": { + "sounds": [ + "evolution:critical" + ] + }, + "ui.toggle": { + "sounds": [ + "evolution:toggle" + ] + }, + "ui.typing": { + "sounds": [ + "evolution:typing" + ] + }, + "ui.welcome": { + "sounds": [ + "evolution:welcome" + ] + }, + "sfx.whistle": { + "sounds": [ + "evolution:whistle" + ] + }, + "sfx.wolf_whistle": { + "sounds": [ + "evolution:wolf_whistle" + ] + }, + "sfx.flashbang": { + "sounds": [ + "evolution:flashbang" + ] + }, + "sfx.bass_drop": { + "sounds": [ + "evolution:bass_drop" + ] + }, + "sfx.ka_ching": { + "sounds": [ + "evolution:ka_ching" + ] + }, + "sfx.air_horn": { + "sounds": [ + "evolution:air_horn" + ] + }, + "sfx.glass_shatter": { + "sounds": [ + "evolution:glass_shatter" + ] + }, + "sfx.church_bell": { + "sounds": [ + "evolution:church_bell" + ] + }, + "sfx.anvil_clang": { + "sounds": [ + "evolution:anvil_clang" + ] + }, + "sfx.riser": { + "sounds": [ + "evolution:riser" + ] + }, + "melee.annihil.annihil_inspect_1": { + "sounds": [ + { + "name": "evolution:melee/annihil/annihil_inspect_1", + "stream": false + } + ] + }, + "melee.annihil.annihil_inspect_2": { + "sounds": [ + { + "name": "evolution:melee/annihil/annihil_inspect_2", + "stream": false + } + ] + }, + "melee.annihil.annihil_melee_1": { + "sounds": [ + { + "name": "evolution:melee/annihil/annihil_melee_1", + "stream": false + } + ] + }, + "melee.annihil.annihil_rotate_1": { + "sounds": [ + { + "name": "evolution:melee/annihil/annihil_rotate_1", + "stream": false + } + ] + }, + "melee.annihil.annihil_melee_2": { + "sounds": [ + { + "name": "evolution:melee/annihil/annihil_melee_2", + "stream": false + } + ] + }, + "melee.annihil.annihil_rotate_2": { + "sounds": [ + { + "name": "evolution:melee/annihil/annihil_rotate_2", + "stream": false + } + ] + }, + "melee.annihil.annihil_melee_3": { + "sounds": [ + { + "name": "evolution:melee/annihil/annihil_melee_3", + "stream": false + } + ] + }, + "melee.annihil.annihil_rotate_3": { + "sounds": [ + { + "name": "evolution:melee/annihil/annihil_rotate_3", + "stream": false + } + ] + }, + "melee.annihil.annihil_draw": { + "sounds": [ + { + "name": "evolution:melee/annihil/annihil_draw", + "stream": false + } + ] + }, + "melee.annihil.annihil_draw_1": { + "sounds": [ + { + "name": "evolution:melee/annihil/annihil_draw_1", + "stream": false + } + ] + }, + "melee.cobra_vanguard.cobra_vanguard_draw": { + "sounds": [ + { + "name": "evolution:melee/cobra_vanguard/cobra_vanguard_draw", + "stream": false + } + ] + }, + "melee.cobra_vanguard.cobra_vanguard_draw_1": { + "sounds": [ + { + "name": "evolution:melee/cobra_vanguard/cobra_vanguard_draw_1", + "stream": false + } + ] + }, + "melee.cobra_vanguard.cobra_vanguard_inspect": { + "sounds": [ + { + "name": "evolution:melee/cobra_vanguard/cobra_vanguard_inspect", + "stream": false + } + ] + }, + "melee.cobra_vanguard.cobra_vanguard_inspect_1": { + "sounds": [ + { + "name": "evolution:melee/cobra_vanguard/cobra_vanguard_inspect_1", + "stream": false + } + ] + }, + "melee.cobra_vanguard.cobra_vanguard_melee_1": { + "sounds": [ + { + "name": "evolution:melee/cobra_vanguard/cobra_vanguard_melee_1", + "stream": false + } + ] + }, + "melee.cobra_vanguard.cobra_vanguard_melee_2": { + "sounds": [ + { + "name": "evolution:melee/cobra_vanguard/cobra_vanguard_melee_2", + "stream": false + } + ] + }, + "melee.cobra_vanguard.cobra_vanguard_melee_3": { + "sounds": [ + { + "name": "evolution:melee/cobra_vanguard/cobra_vanguard_melee_3", + "stream": false + } + ] + }, + "melee.executor.executor_draw": { + "sounds": [ + { + "name": "evolution:melee/executor/executor_draw", + "stream": false + } + ] + }, + "melee.executor.executor_draw_1": { + "sounds": [ + { + "name": "evolution:melee/executor/executor_draw_1", + "stream": false + } + ] + }, + "melee.executor.executor_inspect": { + "sounds": [ + { + "name": "evolution:melee/executor/executor_inspect", + "stream": false + } + ] + }, + "melee.executor.executor_inspect_1": { + "sounds": [ + { + "name": "evolution:melee/executor/executor_inspect_1", + "stream": false + } + ] + }, + "melee.executor.executor_swing_a": { + "sounds": [ + { + "name": "evolution:melee/executor/executor_swing_a", + "stream": false + } + ] + }, + "melee.executor.executor_rotate_a": { + "sounds": [ + { + "name": "evolution:melee/executor/executor_rotate_a", + "stream": false + } + ] + }, + "melee.executor.executor_swing_b": { + "sounds": [ + { + "name": "evolution:melee/executor/executor_swing_b", + "stream": false + } + ] + }, + "melee.executor.executor_rotate_b": { + "sounds": [ + { + "name": "evolution:melee/executor/executor_rotate_b", + "stream": false + } + ] + }, + "melee.executor.executor_swing_c": { + "sounds": [ + { + "name": "evolution:melee/executor/executor_swing_c", + "stream": false + } + ] + }, + "melee.executor.executor_rotate_c": { + "sounds": [ + { + "name": "evolution:melee/executor/executor_rotate_c", + "stream": false + } + ] + }, + "melee.mercy.draw": { + "sounds": [ + { + "name": "evolution:melee/mercy/draw", + "stream": false + } + ] + }, + "melee.mercy.draw_1": { + "sounds": [ + { + "name": "evolution:melee/mercy/draw_1", + "stream": false + } + ] + }, + "melee.mercy.inspect": { + "sounds": [ + { + "name": "evolution:melee/mercy/inspect", + "stream": false + } + ] + }, + "melee.mercy.melee_1": { + "sounds": [ + { + "name": "evolution:melee/mercy/melee_1", + "stream": false + } + ] + }, + "melee.mercy.melee_2": { + "sounds": [ + { + "name": "evolution:melee/mercy/melee_2", + "stream": false + } + ] + }, + "melee.mercy.melee_3": { + "sounds": [ + { + "name": "evolution:melee/mercy/melee_3", + "stream": false + } + ] + }, + "melee.polaris.melee_2": { + "sounds": [ + { + "name": "evolution:melee/polaris/melee_2", + "stream": false + } + ] + }, + "melee.polaris.polaris_rotate_2": { + "sounds": [ + { + "name": "evolution:melee/polaris/polaris_rotate_2", + "stream": false + } + ] + }, + "melee.polaris.draw": { + "sounds": [ + { + "name": "evolution:melee/polaris/draw", + "stream": false + } + ] + }, + "melee.polaris.draw_1": { + "sounds": [ + { + "name": "evolution:melee/polaris/draw_1", + "stream": false + } + ] + }, + "melee.polaris.melee_1": { + "sounds": [ + { + "name": "evolution:melee/polaris/melee_1", + "stream": false + } + ] + }, + "melee.polaris.polaris_rotate_1": { + "sounds": [ + { + "name": "evolution:melee/polaris/polaris_rotate_1", + "stream": false + } + ] + }, + "melee.polaris.polaris_rotate_3": { + "sounds": [ + { + "name": "evolution:melee/polaris/polaris_rotate_3", + "stream": false + } + ] + }, + "melee.polaris.inspect": { + "sounds": [ + { + "name": "evolution:melee/polaris/inspect", + "stream": false + } + ] + }, + "melee.quenching.quenching_inpsect_a": { + "sounds": [ + { + "name": "evolution:melee/quenching/quenching_inpsect_a", + "stream": false + } + ] + }, + "melee.quenching.quenching_rotate_a": { + "sounds": [ + { + "name": "evolution:melee/quenching/quenching_rotate_a", + "stream": false + } + ] + }, + "melee.quenching.quenching_raise_a": { + "sounds": [ + { + "name": "evolution:melee/quenching/quenching_raise_a", + "stream": false + } + ] + }, + "melee.quenching.quenching_swing_a": { + "sounds": [ + { + "name": "evolution:melee/quenching/quenching_swing_a", + "stream": false + } + ] + }, + "melee.quenching.quenching_swing_b": { + "sounds": [ + { + "name": "evolution:melee/quenching/quenching_swing_b", + "stream": false + } + ] + }, + "melee.quenching.quenching_rotate_b": { + "sounds": [ + { + "name": "evolution:melee/quenching/quenching_rotate_b", + "stream": false + } + ] + }, + "melee.quenching.quenching_swing_c": { + "sounds": [ + { + "name": "evolution:melee/quenching/quenching_swing_c", + "stream": false + } + ] + }, + "melee.quenching.quenching_rotate_c": { + "sounds": [ + { + "name": "evolution:melee/quenching/quenching_rotate_c", + "stream": false + } + ] + }, + "melee.shadowkiller.shadowkiller_inspect": { + "sounds": [ + { + "name": "evolution:melee/shadowkiller/shadowkiller_inspect", + "stream": false + } + ] + }, + "melee.shadowkiller.shadowkiller_deploy_1": { + "sounds": [ + { + "name": "evolution:melee/shadowkiller/shadowkiller_deploy_1", + "stream": false + } + ] + }, + "melee.shadowkiller.shadowkiller_deploy": { + "sounds": [ + { + "name": "evolution:melee/shadowkiller/shadowkiller_deploy", + "stream": false + } + ] + }, + "melee.shadowkiller.shadowkiller_miss1": { + "sounds": [ + { + "name": "evolution:melee/shadowkiller/shadowkiller_miss1", + "stream": false + } + ] + }, + "melee.shadowkiller.shadowkiller_miss2": { + "sounds": [ + { + "name": "evolution:melee/shadowkiller/shadowkiller_miss2", + "stream": false + } + ] + }, + "melee.silencefd.inspect": { + "sounds": [ + { + "name": "evolution:melee/silencefd/inspect", + "stream": false + } + ] + }, + "melee.silencefd.draw": { + "sounds": [ + { + "name": "evolution:melee/silencefd/draw", + "stream": false + } + ] + }, + "melee.silencefd.melee_1": { + "sounds": [ + { + "name": "evolution:melee/silencefd/melee_1", + "stream": false + } + ] + }, + "melee.silencefd.melee_2": { + "sounds": [ + { + "name": "evolution:melee/silencefd/melee_2", + "stream": false + } + ] + }, + "melee.thieve_sea.draw": { + "sounds": [ + { + "name": "evolution:melee/thieve_sea/draw", + "stream": false + } + ] + }, + "melee.thieve_sea.draw_1": { + "sounds": [ + { + "name": "evolution:melee/thieve_sea/draw_1", + "stream": false + } + ] + }, + "melee.thieve_sea.melee_1": { + "sounds": [ + { + "name": "evolution:melee/thieve_sea/melee_1", + "stream": false + } + ] + }, + "melee.thieve_sea.melee_2": { + "sounds": [ + { + "name": "evolution:melee/thieve_sea/melee_2", + "stream": false + } + ] + }, + "melee.thieve_sea.melee_3": { + "sounds": [ + { + "name": "evolution:melee/thieve_sea/melee_3", + "stream": false + } + ] + }, + "melee.thieve_sea.inspect": { + "sounds": [ + { + "name": "evolution:melee/thieve_sea/inspect", + "stream": false + } + ] + }, + "melee.treasure_kn.treasure_kn_draw_1": { + "sounds": [ + { + "name": "evolution:melee/treasure_kn/treasure_kn_draw_1", + "stream": false + } + ] + }, + "melee.treasure_kn.treasure_kn_draw": { + "sounds": [ + { + "name": "evolution:melee/treasure_kn/treasure_kn_draw", + "stream": false + } + ] + }, + "melee.treasure_kn.treasure_kn_melee_1": { + "sounds": [ + { + "name": "evolution:melee/treasure_kn/treasure_kn_melee_1", + "stream": false + } + ] + }, + "melee.treasure_kn.treasure_kn_melee_r_1": { + "sounds": [ + { + "name": "evolution:melee/treasure_kn/treasure_kn_melee_r_1", + "stream": false + } + ] + }, + "melee.treasure_kn.treasure_kn_melee_2": { + "sounds": [ + { + "name": "evolution:melee/treasure_kn/treasure_kn_melee_2", + "stream": false + } + ] + }, + "melee.treasure_kn.treasure_kn_melee_r_2": { + "sounds": [ + { + "name": "evolution:melee/treasure_kn/treasure_kn_melee_r_2", + "stream": false + } + ] + }, + "melee.treasure_kn.treasure_kn_melee_3": { + "sounds": [ + { + "name": "evolution:melee/treasure_kn/treasure_kn_melee_3", + "stream": false + } + ] + }, + "melee.treasure_kn.treasure_kn_melee_r_3": { + "sounds": [ + { + "name": "evolution:melee/treasure_kn/treasure_kn_melee_r_3", + "stream": false + } + ] + }, + "melee.treasure_kn.treasure_kn_inspect": { + "sounds": [ + { + "name": "evolution:melee/treasure_kn/treasure_kn_inspect", + "stream": false + } + ] + }, + "melee.cs2.bknife_draw01": { + "sounds": [ + { + "name": "evolution:melee/cs2/bknife_draw01", + "stream": false + } + ] + }, + "melee.cs2.bknife_draw02": { + "sounds": [ + { + "name": "evolution:melee/cs2/bknife_draw02", + "stream": false + } + ] + }, + "melee.cs2.bknife_look01_a": { + "sounds": [ + { + "name": "evolution:melee/cs2/bknife_look01_a", + "stream": false + } + ] + }, + "melee.cs2.bknife_look01_ab": { + "sounds": [ + { + "name": "evolution:melee/cs2/bknife_look01_ab", + "stream": false + } + ] + }, + "melee.cs2.bknife_look01_b": { + "sounds": [ + { + "name": "evolution:melee/cs2/bknife_look01_b", + "stream": false + } + ] + }, + "melee.cs2.bknife_look02_a": { + "sounds": [ + { + "name": "evolution:melee/cs2/bknife_look02_a", + "stream": false + } + ] + }, + "melee.cs2.bknife_look02_ab": { + "sounds": [ + { + "name": "evolution:melee/cs2/bknife_look02_ab", + "stream": false + } + ] + }, + "melee.cs2.bknife_look02_b": { + "sounds": [ + { + "name": "evolution:melee/cs2/bknife_look02_b", + "stream": false + } + ] + }, + "melee.cs2.bknife_look03_ab": { + "sounds": [ + { + "name": "evolution:melee/cs2/bknife_look03_ab", + "stream": false + } + ] + }, + "melee.cs2.knife_deploy1": { + "sounds": [ + { + "name": "evolution:melee/cs2/knife_deploy1", + "stream": false + } + ] + }, + "melee.cs2.knife_push_attack1_heavy_01": { + "sounds": [ + { + "name": "evolution:melee/cs2/knife_push_attack1_heavy_01", + "stream": false + } + ] + }, + "melee.cs2.knife_push_draw": { + "sounds": [ + { + "name": "evolution:melee/cs2/knife_push_draw", + "stream": false + } + ] + }, + "melee.cs2.knife_push_lookat_end": { + "sounds": [ + { + "name": "evolution:melee/cs2/knife_push_lookat_end", + "stream": false + } + ] + }, + "melee.cs2.knife_push_lookat_start": { + "sounds": [ + { + "name": "evolution:melee/cs2/knife_push_lookat_start", + "stream": false + } + ] + }, + "melee.cs2.knife_slash1": { + "sounds": [ + { + "name": "evolution:melee/cs2/knife_slash1", + "stream": false + } + ] + }, + "melee.cs2.knife_slash2": { + "sounds": [ + { + "name": "evolution:melee/cs2/knife_slash2", + "stream": false + } + ] + }, + "melee.cs2.stilletto_draw_01": { + "sounds": [ + { + "name": "evolution:melee/cs2/stilletto_draw_01", + "stream": false + } + ] + }, + "melee.cs2.stilletto_flip_01": { + "sounds": [ + { + "name": "evolution:melee/cs2/stilletto_flip_01", + "stream": false + } + ] + }, + "melee.cs2.stilletto_flip_02": { + "sounds": [ + { + "name": "evolution:melee/cs2/stilletto_flip_02", + "stream": false + } + ] + }, + "melee.cs2.stilletto_flip_03": { + "sounds": [ + { + "name": "evolution:melee/cs2/stilletto_flip_03", + "stream": false + } + ] + }, + "melee.cs2.stilletto_flip_04": { + "sounds": [ + { + "name": "evolution:melee/cs2/stilletto_flip_04", + "stream": false + } + ] + }, + "watch.activate": { + "sounds": [ + { + "name": "evolution:watch/activate", + "stream": false + } + ] + }, + "watch.deactivate": { + "sounds": [ + { + "name": "evolution:watch/deactivate", + "stream": false + } + ] + }, + "watch.transform": { + "sounds": [ + { + "name": "evolution:watch/transform", + "stream": false + } + ] + }, + "watch.detransform": { + "sounds": [ + { + "name": "evolution:watch/detransform", + "stream": false + } + ] + }, + "watch.cycle_1": { + "sounds": [ + { + "name": "evolution:watch/cycle_1", + "stream": false + } + ] + }, + "watch.cycle_2": { + "sounds": [ + { + "name": "evolution:watch/cycle_2", + "stream": false + } + ] + }, + "watch.cycle_3": { + "sounds": [ + { + "name": "evolution:watch/cycle_3", + "stream": false + } + ] + }, + "watch.cycle_4": { + "sounds": [ + { + "name": "evolution:watch/cycle_4", + "stream": false + } + ] + }, + "watch.arm_open": { + "sounds": [ + { + "name": "evolution:watch/arm_open", + "stream": false + } + ] + }, + "watch.arm_close": { + "sounds": [ + { + "name": "evolution:watch/arm_close", + "stream": false + } + ] + }, + "graffiti.spray": { + "sounds": [ + "evolution:graffiti_spray" + ] + }, + "ui.clip_saved": { + "sounds": [ + "evolution:clip_saved" + ] + }, + "pat.pat": { + "sounds": [ + "evolution:pat_pat" + ] + }, + "camera.shutter": { + "sounds": [ + "evolution:camera_shutter" + ] + }, + "camera.beep": { + "sounds": [ + "evolution:camera_beep" + ] + } +} diff --git a/src/main/resources/assets/evolution/sounds/air_horn.ogg b/src/main/resources/assets/evolution/sounds/air_horn.ogg new file mode 100644 index 0000000..df70912 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/air_horn.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/anvil_clang.ogg b/src/main/resources/assets/evolution/sounds/anvil_clang.ogg new file mode 100644 index 0000000..f1565ad Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/anvil_clang.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/applepay.ogg b/src/main/resources/assets/evolution/sounds/applepay.ogg new file mode 100644 index 0000000..4bfe9cb Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/applepay.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/bass_drop.ogg b/src/main/resources/assets/evolution/sounds/bass_drop.ogg new file mode 100644 index 0000000..5633779 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/bass_drop.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/camera_beep.ogg b/src/main/resources/assets/evolution/sounds/camera_beep.ogg new file mode 100644 index 0000000..c21792d Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/camera_beep.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/camera_shutter.ogg b/src/main/resources/assets/evolution/sounds/camera_shutter.ogg new file mode 100644 index 0000000..cd511ed Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/camera_shutter.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/church_bell.ogg b/src/main/resources/assets/evolution/sounds/church_bell.ogg new file mode 100644 index 0000000..9f7207f Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/church_bell.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/click.ogg b/src/main/resources/assets/evolution/sounds/click.ogg new file mode 100644 index 0000000..a16f195 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/click.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/clickgui_open.ogg b/src/main/resources/assets/evolution/sounds/clickgui_open.ogg new file mode 100644 index 0000000..19ea78d Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/clickgui_open.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/clip_saved.ogg b/src/main/resources/assets/evolution/sounds/clip_saved.ogg new file mode 100644 index 0000000..5deb09a Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/clip_saved.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/close.ogg b/src/main/resources/assets/evolution/sounds/close.ogg new file mode 100644 index 0000000..fdf287d Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/close.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/critical.ogg b/src/main/resources/assets/evolution/sounds/critical.ogg new file mode 100644 index 0000000..87a7e95 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/critical.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/drag.ogg b/src/main/resources/assets/evolution/sounds/drag.ogg new file mode 100644 index 0000000..559f1ff Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/drag.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/dropdown.ogg b/src/main/resources/assets/evolution/sounds/dropdown.ogg new file mode 100644 index 0000000..cba65e1 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/dropdown.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/flashbang.ogg b/src/main/resources/assets/evolution/sounds/flashbang.ogg new file mode 100644 index 0000000..83f06f6 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/flashbang.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/glass_shatter.ogg b/src/main/resources/assets/evolution/sounds/glass_shatter.ogg new file mode 100644 index 0000000..9dc9ed7 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/glass_shatter.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/graffiti_spray.ogg b/src/main/resources/assets/evolution/sounds/graffiti_spray.ogg new file mode 100644 index 0000000..6f51438 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/graffiti_spray.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/ka_ching.ogg b/src/main/resources/assets/evolution/sounds/ka_ching.ogg new file mode 100644 index 0000000..1e2fd98 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/ka_ching.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_draw.ogg b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_draw.ogg new file mode 100644 index 0000000..b14209c Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_draw.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_draw_1.ogg b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_draw_1.ogg new file mode 100644 index 0000000..2cdd2cf Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_draw_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_inspect_1.ogg b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_inspect_1.ogg new file mode 100644 index 0000000..a0bb8af Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_inspect_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_inspect_2.ogg b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_inspect_2.ogg new file mode 100644 index 0000000..42a2c77 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_inspect_2.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_melee_1.ogg b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_melee_1.ogg new file mode 100644 index 0000000..29c5d76 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_melee_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_melee_2.ogg b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_melee_2.ogg new file mode 100644 index 0000000..3213ae1 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_melee_2.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_melee_3.ogg b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_melee_3.ogg new file mode 100644 index 0000000..0a5ea96 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_melee_3.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_rotate_1.ogg b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_rotate_1.ogg new file mode 100644 index 0000000..3e3873d Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_rotate_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_rotate_2.ogg b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_rotate_2.ogg new file mode 100644 index 0000000..19be093 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_rotate_2.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_rotate_3.ogg b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_rotate_3.ogg new file mode 100644 index 0000000..366da27 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/annihil/annihil_rotate_3.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_draw.ogg b/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_draw.ogg new file mode 100644 index 0000000..9828e24 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_draw.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_draw_1.ogg b/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_draw_1.ogg new file mode 100644 index 0000000..a14c970 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_draw_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_inspect.ogg b/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_inspect.ogg new file mode 100644 index 0000000..4ddc109 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_inspect.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_inspect_1.ogg b/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_inspect_1.ogg new file mode 100644 index 0000000..8de0d17 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_inspect_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_melee_1.ogg b/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_melee_1.ogg new file mode 100644 index 0000000..6a3832e Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_melee_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_melee_2.ogg b/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_melee_2.ogg new file mode 100644 index 0000000..0b552be Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_melee_2.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_melee_3.ogg b/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_melee_3.ogg new file mode 100644 index 0000000..67587bb Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cobra_vanguard/cobra_vanguard_melee_3.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_draw01.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_draw01.ogg new file mode 100644 index 0000000..abf3054 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_draw01.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_draw02.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_draw02.ogg new file mode 100644 index 0000000..0a11df8 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_draw02.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look01_a.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look01_a.ogg new file mode 100644 index 0000000..3b7c4c8 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look01_a.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look01_ab.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look01_ab.ogg new file mode 100644 index 0000000..d162b68 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look01_ab.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look01_b.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look01_b.ogg new file mode 100644 index 0000000..f816376 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look01_b.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look02_a.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look02_a.ogg new file mode 100644 index 0000000..a6684de Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look02_a.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look02_ab.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look02_ab.ogg new file mode 100644 index 0000000..3bd9a67 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look02_ab.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look02_b.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look02_b.ogg new file mode 100644 index 0000000..3bebe74 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look02_b.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look03_ab.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look03_ab.ogg new file mode 100644 index 0000000..191246d Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/bknife_look03_ab.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/knife_deploy1.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/knife_deploy1.ogg new file mode 100644 index 0000000..1226f10 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/knife_deploy1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/knife_push_attack1_heavy_01.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/knife_push_attack1_heavy_01.ogg new file mode 100644 index 0000000..33d5453 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/knife_push_attack1_heavy_01.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/knife_push_draw.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/knife_push_draw.ogg new file mode 100644 index 0000000..af563ba Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/knife_push_draw.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/knife_push_lookat_end.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/knife_push_lookat_end.ogg new file mode 100644 index 0000000..d830985 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/knife_push_lookat_end.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/knife_push_lookat_start.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/knife_push_lookat_start.ogg new file mode 100644 index 0000000..46455db Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/knife_push_lookat_start.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/knife_slash1.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/knife_slash1.ogg new file mode 100644 index 0000000..406d050 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/knife_slash1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/knife_slash2.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/knife_slash2.ogg new file mode 100644 index 0000000..0cc6975 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/knife_slash2.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_draw_01.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_draw_01.ogg new file mode 100644 index 0000000..baf1d99 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_draw_01.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_flip_01.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_flip_01.ogg new file mode 100644 index 0000000..8d9e27f Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_flip_01.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_flip_02.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_flip_02.ogg new file mode 100644 index 0000000..afc1bb7 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_flip_02.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_flip_03.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_flip_03.ogg new file mode 100644 index 0000000..efda5a5 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_flip_03.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_flip_04.ogg b/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_flip_04.ogg new file mode 100644 index 0000000..3a7f552 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/cs2/stilletto_flip_04.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/executor/executor_draw.ogg b/src/main/resources/assets/evolution/sounds/melee/executor/executor_draw.ogg new file mode 100644 index 0000000..cc84370 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/executor/executor_draw.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/executor/executor_draw_1.ogg b/src/main/resources/assets/evolution/sounds/melee/executor/executor_draw_1.ogg new file mode 100644 index 0000000..8d674ba Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/executor/executor_draw_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/executor/executor_inspect.ogg b/src/main/resources/assets/evolution/sounds/melee/executor/executor_inspect.ogg new file mode 100644 index 0000000..b7222d4 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/executor/executor_inspect.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/executor/executor_inspect_1.ogg b/src/main/resources/assets/evolution/sounds/melee/executor/executor_inspect_1.ogg new file mode 100644 index 0000000..52af0d1 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/executor/executor_inspect_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/executor/executor_rotate_a.ogg b/src/main/resources/assets/evolution/sounds/melee/executor/executor_rotate_a.ogg new file mode 100644 index 0000000..e8a5dcd Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/executor/executor_rotate_a.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/executor/executor_rotate_b.ogg b/src/main/resources/assets/evolution/sounds/melee/executor/executor_rotate_b.ogg new file mode 100644 index 0000000..4308794 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/executor/executor_rotate_b.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/executor/executor_rotate_c.ogg b/src/main/resources/assets/evolution/sounds/melee/executor/executor_rotate_c.ogg new file mode 100644 index 0000000..8a8fd37 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/executor/executor_rotate_c.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/executor/executor_swing_a.ogg b/src/main/resources/assets/evolution/sounds/melee/executor/executor_swing_a.ogg new file mode 100644 index 0000000..5637965 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/executor/executor_swing_a.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/executor/executor_swing_b.ogg b/src/main/resources/assets/evolution/sounds/melee/executor/executor_swing_b.ogg new file mode 100644 index 0000000..ad27a25 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/executor/executor_swing_b.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/executor/executor_swing_c.ogg b/src/main/resources/assets/evolution/sounds/melee/executor/executor_swing_c.ogg new file mode 100644 index 0000000..201ce0d Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/executor/executor_swing_c.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/mercy/draw.ogg b/src/main/resources/assets/evolution/sounds/melee/mercy/draw.ogg new file mode 100644 index 0000000..b1be1e6 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/mercy/draw.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/mercy/draw_1.ogg b/src/main/resources/assets/evolution/sounds/melee/mercy/draw_1.ogg new file mode 100644 index 0000000..cd5284c Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/mercy/draw_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/mercy/inspect.ogg b/src/main/resources/assets/evolution/sounds/melee/mercy/inspect.ogg new file mode 100644 index 0000000..7312e65 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/mercy/inspect.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/mercy/melee_1.ogg b/src/main/resources/assets/evolution/sounds/melee/mercy/melee_1.ogg new file mode 100644 index 0000000..e1485d0 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/mercy/melee_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/mercy/melee_2.ogg b/src/main/resources/assets/evolution/sounds/melee/mercy/melee_2.ogg new file mode 100644 index 0000000..653af1b Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/mercy/melee_2.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/mercy/melee_3.ogg b/src/main/resources/assets/evolution/sounds/melee/mercy/melee_3.ogg new file mode 100644 index 0000000..352755c Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/mercy/melee_3.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/polaris/draw.ogg b/src/main/resources/assets/evolution/sounds/melee/polaris/draw.ogg new file mode 100644 index 0000000..4852b2c Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/polaris/draw.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/polaris/draw_1.ogg b/src/main/resources/assets/evolution/sounds/melee/polaris/draw_1.ogg new file mode 100644 index 0000000..efdd40f Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/polaris/draw_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/polaris/inspect.ogg b/src/main/resources/assets/evolution/sounds/melee/polaris/inspect.ogg new file mode 100644 index 0000000..1f63fe8 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/polaris/inspect.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/polaris/melee_1.ogg b/src/main/resources/assets/evolution/sounds/melee/polaris/melee_1.ogg new file mode 100644 index 0000000..9c8705e Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/polaris/melee_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/polaris/melee_2.ogg b/src/main/resources/assets/evolution/sounds/melee/polaris/melee_2.ogg new file mode 100644 index 0000000..1b1ed63 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/polaris/melee_2.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/polaris/polaris_rotate_1.ogg b/src/main/resources/assets/evolution/sounds/melee/polaris/polaris_rotate_1.ogg new file mode 100644 index 0000000..7edbb69 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/polaris/polaris_rotate_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/polaris/polaris_rotate_2.ogg b/src/main/resources/assets/evolution/sounds/melee/polaris/polaris_rotate_2.ogg new file mode 100644 index 0000000..f705827 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/polaris/polaris_rotate_2.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/polaris/polaris_rotate_3.ogg b/src/main/resources/assets/evolution/sounds/melee/polaris/polaris_rotate_3.ogg new file mode 100644 index 0000000..f9668a8 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/polaris/polaris_rotate_3.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_inpsect_a.ogg b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_inpsect_a.ogg new file mode 100644 index 0000000..b861a49 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_inpsect_a.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_raise_a.ogg b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_raise_a.ogg new file mode 100644 index 0000000..655dc95 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_raise_a.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_rotate_a.ogg b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_rotate_a.ogg new file mode 100644 index 0000000..29bc75e Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_rotate_a.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_rotate_b.ogg b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_rotate_b.ogg new file mode 100644 index 0000000..6573bda Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_rotate_b.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_rotate_c.ogg b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_rotate_c.ogg new file mode 100644 index 0000000..939ced5 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_rotate_c.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_swing_a.ogg b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_swing_a.ogg new file mode 100644 index 0000000..1d193eb Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_swing_a.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_swing_b.ogg b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_swing_b.ogg new file mode 100644 index 0000000..01252d7 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_swing_b.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_swing_c.ogg b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_swing_c.ogg new file mode 100644 index 0000000..1bd9acc Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/quenching/quenching_swing_c.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_deploy.ogg b/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_deploy.ogg new file mode 100644 index 0000000..cf4f0fd Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_deploy.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_deploy_1.ogg b/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_deploy_1.ogg new file mode 100644 index 0000000..d5e4866 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_deploy_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_inspect.ogg b/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_inspect.ogg new file mode 100644 index 0000000..440e424 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_inspect.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_miss1.ogg b/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_miss1.ogg new file mode 100644 index 0000000..852cc0d Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_miss1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_miss2.ogg b/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_miss2.ogg new file mode 100644 index 0000000..5f95bd2 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/shadowkiller/shadowkiller_miss2.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/silencefd/draw.ogg b/src/main/resources/assets/evolution/sounds/melee/silencefd/draw.ogg new file mode 100644 index 0000000..b5d1521 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/silencefd/draw.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/silencefd/inspect.ogg b/src/main/resources/assets/evolution/sounds/melee/silencefd/inspect.ogg new file mode 100644 index 0000000..353236d Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/silencefd/inspect.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/silencefd/melee_1.ogg b/src/main/resources/assets/evolution/sounds/melee/silencefd/melee_1.ogg new file mode 100644 index 0000000..9865254 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/silencefd/melee_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/silencefd/melee_2.ogg b/src/main/resources/assets/evolution/sounds/melee/silencefd/melee_2.ogg new file mode 100644 index 0000000..06d759a Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/silencefd/melee_2.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/thieve_sea/draw.ogg b/src/main/resources/assets/evolution/sounds/melee/thieve_sea/draw.ogg new file mode 100644 index 0000000..ac1327b Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/thieve_sea/draw.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/thieve_sea/draw_1.ogg b/src/main/resources/assets/evolution/sounds/melee/thieve_sea/draw_1.ogg new file mode 100644 index 0000000..b869071 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/thieve_sea/draw_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/thieve_sea/inspect.ogg b/src/main/resources/assets/evolution/sounds/melee/thieve_sea/inspect.ogg new file mode 100644 index 0000000..ea44f18 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/thieve_sea/inspect.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/thieve_sea/melee_1.ogg b/src/main/resources/assets/evolution/sounds/melee/thieve_sea/melee_1.ogg new file mode 100644 index 0000000..098d816 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/thieve_sea/melee_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/thieve_sea/melee_2.ogg b/src/main/resources/assets/evolution/sounds/melee/thieve_sea/melee_2.ogg new file mode 100644 index 0000000..bc5cc14 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/thieve_sea/melee_2.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/thieve_sea/melee_3.ogg b/src/main/resources/assets/evolution/sounds/melee/thieve_sea/melee_3.ogg new file mode 100644 index 0000000..e7bd258 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/thieve_sea/melee_3.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_draw.ogg b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_draw.ogg new file mode 100644 index 0000000..3f5dcaf Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_draw.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_draw_1.ogg b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_draw_1.ogg new file mode 100644 index 0000000..d10aaea Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_draw_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_inspect.ogg b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_inspect.ogg new file mode 100644 index 0000000..cab7e47 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_inspect.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_1.ogg b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_1.ogg new file mode 100644 index 0000000..bedddf9 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_2.ogg b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_2.ogg new file mode 100644 index 0000000..4ffc3bc Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_2.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_3.ogg b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_3.ogg new file mode 100644 index 0000000..0af4efd Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_3.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_r_1.ogg b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_r_1.ogg new file mode 100644 index 0000000..5b6e379 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_r_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_r_2.ogg b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_r_2.ogg new file mode 100644 index 0000000..14a6569 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_r_2.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_r_3.ogg b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_r_3.ogg new file mode 100644 index 0000000..98546aa Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/melee/treasure_kn/treasure_kn_melee_r_3.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/open.ogg b/src/main/resources/assets/evolution/sounds/open.ogg new file mode 100644 index 0000000..3347067 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/open.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/pat_pat.ogg b/src/main/resources/assets/evolution/sounds/pat_pat.ogg new file mode 100644 index 0000000..e5b32c4 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/pat_pat.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/resize.ogg b/src/main/resources/assets/evolution/sounds/resize.ogg new file mode 100644 index 0000000..85fcf0c Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/resize.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/riser.ogg b/src/main/resources/assets/evolution/sounds/riser.ogg new file mode 100644 index 0000000..550259f Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/riser.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/slider.ogg b/src/main/resources/assets/evolution/sounds/slider.ogg new file mode 100644 index 0000000..6d385e2 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/slider.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/tab.ogg b/src/main/resources/assets/evolution/sounds/tab.ogg new file mode 100644 index 0000000..059a9d8 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/tab.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/toggle.ogg b/src/main/resources/assets/evolution/sounds/toggle.ogg new file mode 100644 index 0000000..5ff464e Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/toggle.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/toggle_off.ogg b/src/main/resources/assets/evolution/sounds/toggle_off.ogg new file mode 100644 index 0000000..16565a1 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/toggle_off.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/toggle_on.ogg b/src/main/resources/assets/evolution/sounds/toggle_on.ogg new file mode 100644 index 0000000..c3897a3 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/toggle_on.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/typing.ogg b/src/main/resources/assets/evolution/sounds/typing.ogg new file mode 100644 index 0000000..d637684 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/typing.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/watch/activate.ogg b/src/main/resources/assets/evolution/sounds/watch/activate.ogg new file mode 100644 index 0000000..5c86f7d Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/watch/activate.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/watch/arm_close.ogg b/src/main/resources/assets/evolution/sounds/watch/arm_close.ogg new file mode 100644 index 0000000..01827aa Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/watch/arm_close.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/watch/arm_open.ogg b/src/main/resources/assets/evolution/sounds/watch/arm_open.ogg new file mode 100644 index 0000000..0f524ba Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/watch/arm_open.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/watch/cycle_1.ogg b/src/main/resources/assets/evolution/sounds/watch/cycle_1.ogg new file mode 100644 index 0000000..6d56459 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/watch/cycle_1.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/watch/cycle_2.ogg b/src/main/resources/assets/evolution/sounds/watch/cycle_2.ogg new file mode 100644 index 0000000..c4fcbd0 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/watch/cycle_2.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/watch/cycle_3.ogg b/src/main/resources/assets/evolution/sounds/watch/cycle_3.ogg new file mode 100644 index 0000000..7499686 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/watch/cycle_3.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/watch/cycle_4.ogg b/src/main/resources/assets/evolution/sounds/watch/cycle_4.ogg new file mode 100644 index 0000000..f09d908 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/watch/cycle_4.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/watch/deactivate.ogg b/src/main/resources/assets/evolution/sounds/watch/deactivate.ogg new file mode 100644 index 0000000..85691bd Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/watch/deactivate.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/watch/detransform.ogg b/src/main/resources/assets/evolution/sounds/watch/detransform.ogg new file mode 100644 index 0000000..a774ec2 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/watch/detransform.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/watch/transform.ogg b/src/main/resources/assets/evolution/sounds/watch/transform.ogg new file mode 100644 index 0000000..4dbe711 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/watch/transform.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/welcome.ogg b/src/main/resources/assets/evolution/sounds/welcome.ogg new file mode 100644 index 0000000..c118f10 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/welcome.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/whistle.ogg b/src/main/resources/assets/evolution/sounds/whistle.ogg new file mode 100644 index 0000000..41266a6 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/whistle.ogg differ diff --git a/src/main/resources/assets/evolution/sounds/wolf_whistle.ogg b/src/main/resources/assets/evolution/sounds/wolf_whistle.ogg new file mode 100644 index 0000000..00276e0 Binary files /dev/null and b/src/main/resources/assets/evolution/sounds/wolf_whistle.ogg differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/backpacks/adidas.png b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/adidas.png new file mode 100644 index 0000000..d44660c Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/adidas.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/backpacks/gucci.png b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/gucci.png new file mode 100644 index 0000000..693bdaf Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/gucci.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/backpacks/hermes.png b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/hermes.png new file mode 100644 index 0000000..e061040 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/hermes.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/backpacks/labubu.png b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/labubu.png new file mode 100644 index 0000000..ed2d3c2 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/labubu.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/backpacks/lui_vuitton.png b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/lui_vuitton.png new file mode 100644 index 0000000..fb35e2b Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/lui_vuitton.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/backpacks/mage_staff.png b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/mage_staff.png new file mode 100644 index 0000000..bda8e7d Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/mage_staff.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/backpacks/nike.png b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/nike.png new file mode 100644 index 0000000..16ce885 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/nike.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/backpacks/snoopy.png b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/snoopy.png new file mode 100644 index 0000000..a3efbce Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/backpacks/snoopy.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/capes/dancing_cat.png b/src/main/resources/assets/evolution/textures/cosmetic/capes/dancing_cat.png new file mode 100644 index 0000000..e17c70a Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/capes/dancing_cat.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/graffiti/evo.png b/src/main/resources/assets/evolution/textures/cosmetic/graffiti/evo.png new file mode 100644 index 0000000..11f0418 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/graffiti/evo.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/graffiti/noai.png b/src/main/resources/assets/evolution/textures/cosmetic/graffiti/noai.png new file mode 100644 index 0000000..8068d73 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/graffiti/noai.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/annihil.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/annihil.png new file mode 100644 index 0000000..9ab7728 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/annihil.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/bayoauto.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/bayoauto.png new file mode 100644 index 0000000..6363b4f Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/bayoauto.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/bayonet.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/bayonet.png new file mode 100644 index 0000000..d670e5d Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/bayonet.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/buemerald.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/buemerald.png new file mode 100644 index 0000000..9ec5bdb Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/buemerald.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/busnowfall.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/busnowfall.png new file mode 100644 index 0000000..3bfa8de Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/busnowfall.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/butterfly.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/butterfly.png new file mode 100644 index 0000000..0b5bf4b Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/butterfly.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/cobra_vanguard.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/cobra_vanguard.png new file mode 100644 index 0000000..b096488 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/cobra_vanguard.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/css.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/css.png new file mode 100644 index 0000000..92ad28e Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/css.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/executor.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/executor.png new file mode 100644 index 0000000..c50cc24 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/executor.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/karambit.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/karambit.png new file mode 100644 index 0000000..162938f Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/karambit.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/karobsidian.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/karobsidian.png new file mode 100644 index 0000000..66412ba Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/karobsidian.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/m9.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9.png new file mode 100644 index 0000000..b85a9de Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/m9.png.ppm b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9.png.ppm new file mode 100644 index 0000000..edd0b32 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9.png.ppm differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/m9amethyst.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9amethyst.png new file mode 100644 index 0000000..46d7262 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9amethyst.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/m9amethyst.png.ppm b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9amethyst.png.ppm new file mode 100644 index 0000000..26572f1 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9amethyst.png.ppm differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/m9auto.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9auto.png new file mode 100644 index 0000000..3d55ece Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9auto.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/m9emerald.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9emerald.png new file mode 100644 index 0000000..90add1f Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9emerald.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/m9holy.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9holy.png new file mode 100644 index 0000000..b85a9de Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9holy.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/m9sapphire.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9sapphire.png new file mode 100644 index 0000000..5027d0f Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/m9sapphire.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/mercy.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/mercy.png new file mode 100644 index 0000000..7767262 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/mercy.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/null_annihil.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/null_annihil.png new file mode 100644 index 0000000..44069e3 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/null_annihil.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/polaris.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/polaris.png new file mode 100644 index 0000000..6638858 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/polaris.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/push.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/push.png new file mode 100644 index 0000000..a2aa539 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/push.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/quenching.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/quenching.png new file mode 100644 index 0000000..7d89eef Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/quenching.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/shadowkiller.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/shadowkiller.png new file mode 100644 index 0000000..6bee809 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/shadowkiller.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/silencefd.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/silencefd.png new file mode 100644 index 0000000..b81e5c1 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/silencefd.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/skeleton.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/skeleton.png new file mode 100644 index 0000000..1d6f385 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/skeleton.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/annihil.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/annihil.png new file mode 100644 index 0000000..5f5d712 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/annihil.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/bayoauto.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/bayoauto.png new file mode 100644 index 0000000..c22acba Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/bayoauto.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/bayonet.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/bayonet.png new file mode 100644 index 0000000..c2742d7 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/bayonet.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/buemerald.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/buemerald.png new file mode 100644 index 0000000..457cb0e Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/buemerald.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/busnowfall.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/busnowfall.png new file mode 100644 index 0000000..9712b44 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/busnowfall.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/butterfly.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/butterfly.png new file mode 100644 index 0000000..327db2c Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/butterfly.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/cobra_vanguard.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/cobra_vanguard.png new file mode 100644 index 0000000..c140d31 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/cobra_vanguard.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/css.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/css.png new file mode 100644 index 0000000..0b98c79 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/css.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/executor.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/executor.png new file mode 100644 index 0000000..e51ac53 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/executor.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/karambit.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/karambit.png new file mode 100644 index 0000000..0624651 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/karambit.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/karobsidian.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/karobsidian.png new file mode 100644 index 0000000..5aecc3e Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/karobsidian.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9.png new file mode 100644 index 0000000..e591f2d Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9amethyst.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9amethyst.png new file mode 100644 index 0000000..26a259c Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9amethyst.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9auto.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9auto.png new file mode 100644 index 0000000..de7dc59 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9auto.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9emerald.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9emerald.png new file mode 100644 index 0000000..dbeecc2 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9emerald.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9holy.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9holy.png new file mode 100644 index 0000000..2a781fa Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9holy.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9sapphire.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9sapphire.png new file mode 100644 index 0000000..59f3d24 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/m9sapphire.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/mercy.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/mercy.png new file mode 100644 index 0000000..a924bd1 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/mercy.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/null_annihil.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/null_annihil.png new file mode 100644 index 0000000..707293e Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/null_annihil.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/polaris.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/polaris.png new file mode 100644 index 0000000..4464dcb Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/polaris.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/push.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/push.png new file mode 100644 index 0000000..f6101af Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/push.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/quenching.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/quenching.png new file mode 100644 index 0000000..f09ba47 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/quenching.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/shadowkiller.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/shadowkiller.png new file mode 100644 index 0000000..b6349e3 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/shadowkiller.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/silencefd.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/silencefd.png new file mode 100644 index 0000000..1b64c5e Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/silencefd.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/skeleton.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/skeleton.png new file mode 100644 index 0000000..9344ccb Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/skeleton.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/stiletto.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/stiletto.png new file mode 100644 index 0000000..6d42092 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/stiletto.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/stilettoholy.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/stilettoholy.png new file mode 100644 index 0000000..6e46f68 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/stilettoholy.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/stilettosapphire.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/stilettosapphire.png new file mode 100644 index 0000000..06c07d0 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/stilettosapphire.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/stilettott.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/stilettott.png new file mode 100644 index 0000000..b4aed1d Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/stilettott.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/tactical.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/tactical.png new file mode 100644 index 0000000..3a2864c Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/tactical.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/talon.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/talon.png new file mode 100644 index 0000000..01397a2 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/talon.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/thieve_sea.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/thieve_sea.png new file mode 100644 index 0000000..9077e57 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/thieve_sea.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/treasure_kn.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/treasure_kn.png new file mode 100644 index 0000000..9a05bc7 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/slot/treasure_kn.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/stiletto.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/stiletto.png new file mode 100644 index 0000000..d2b01c2 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/stiletto.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/stilettoholy.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/stilettoholy.png new file mode 100644 index 0000000..d2b01c2 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/stilettoholy.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/stilettosapphire.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/stilettosapphire.png new file mode 100644 index 0000000..8a1adc5 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/stilettosapphire.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/stilettott.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/stilettott.png new file mode 100644 index 0000000..8c29047 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/stilettott.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/tactical.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/tactical.png new file mode 100644 index 0000000..9304ffd Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/tactical.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/talon.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/talon.png new file mode 100644 index 0000000..6aff20d Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/talon.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/thieve_sea.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/thieve_sea.png new file mode 100644 index 0000000..95be657 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/thieve_sea.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/melee/treasure_kn.png b/src/main/resources/assets/evolution/textures/cosmetic/melee/treasure_kn.png new file mode 100644 index 0000000..c12db3e Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/melee/treasure_kn.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/pat/pat_hand.png b/src/main/resources/assets/evolution/textures/cosmetic/pat/pat_hand.png new file mode 100644 index 0000000..c9f4401 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/pat/pat_hand.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/akita_neru.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/akita_neru.png new file mode 100644 index 0000000..bca8aa9 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/akita_neru.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/android.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/android.png new file mode 100644 index 0000000..2f9ec3d Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/android.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/aria.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/aria.png new file mode 100644 index 0000000..5cee763 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/aria.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/baron.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/baron.png new file mode 100644 index 0000000..240970f Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/baron.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/beardie.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/beardie.png new file mode 100644 index 0000000..3a884a1 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/beardie.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/cotton.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/cotton.png new file mode 100644 index 0000000..a808b46 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/cotton.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/elise.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/elise.png new file mode 100644 index 0000000..1640dc8 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/elise.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/goldenglow.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/goldenglow.png new file mode 100644 index 0000000..df50078 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/goldenglow.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/goose.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/goose.png new file mode 100644 index 0000000..488a587 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/goose.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/kaltsit.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/kaltsit.png new file mode 100644 index 0000000..74a4e03 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/kaltsit.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/mikie.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/mikie.png new file mode 100644 index 0000000..f125fa6 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/mikie.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/miku.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/miku.png new file mode 100644 index 0000000..a39d018 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/miku.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/mothi.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/mothi.png new file mode 100644 index 0000000..c24503f Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/mothi.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/mothli.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/mothli.png new file mode 100644 index 0000000..6e883e2 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/mothli.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/peter.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/peter.png new file mode 100644 index 0000000..a3b4f32 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/peter.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/repo.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/repo.png new file mode 100644 index 0000000..a736485 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/repo.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/turbo_granny.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/turbo_granny.png new file mode 100644 index 0000000..3f01d7b Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/turbo_granny.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/skins/wheelchair.png b/src/main/resources/assets/evolution/textures/cosmetic/skins/wheelchair.png new file mode 100644 index 0000000..e50e4e4 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/skins/wheelchair.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/watch/omnitrix.png b/src/main/resources/assets/evolution/textures/cosmetic/watch/omnitrix.png new file mode 100644 index 0000000..13d7b37 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/watch/omnitrix.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/watch/omnitrix_glow.png b/src/main/resources/assets/evolution/textures/cosmetic/watch/omnitrix_glow.png new file mode 100644 index 0000000..8e752b5 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/watch/omnitrix_glow.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/wings/angel_white.png b/src/main/resources/assets/evolution/textures/cosmetic/wings/angel_white.png new file mode 100644 index 0000000..6c4cde4 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/wings/angel_white.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/wings/baby_dragon_white.png b/src/main/resources/assets/evolution/textures/cosmetic/wings/baby_dragon_white.png new file mode 100644 index 0000000..51441f3 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/wings/baby_dragon_white.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/wings/blue_dragon.png b/src/main/resources/assets/evolution/textures/cosmetic/wings/blue_dragon.png new file mode 100644 index 0000000..92995cf Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/wings/blue_dragon.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/wings/dark.png b/src/main/resources/assets/evolution/textures/cosmetic/wings/dark.png new file mode 100644 index 0000000..81e5f7a Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/wings/dark.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/wings/demon_black.png b/src/main/resources/assets/evolution/textures/cosmetic/wings/demon_black.png new file mode 100644 index 0000000..7cee2ed Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/wings/demon_black.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/wings/demon_red.png b/src/main/resources/assets/evolution/textures/cosmetic/wings/demon_red.png new file mode 100644 index 0000000..6c4cde4 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/wings/demon_red.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/wings/easter.png b/src/main/resources/assets/evolution/textures/cosmetic/wings/easter.png new file mode 100644 index 0000000..f52d74d Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/wings/easter.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/wings/ghoul.png b/src/main/resources/assets/evolution/textures/cosmetic/wings/ghoul.png new file mode 100644 index 0000000..9b7dea3 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/wings/ghoul.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/wings/pulse.png b/src/main/resources/assets/evolution/textures/cosmetic/wings/pulse.png new file mode 100644 index 0000000..0487507 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/wings/pulse.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/wings/rocker.png b/src/main/resources/assets/evolution/textures/cosmetic/wings/rocker.png new file mode 100644 index 0000000..2e20f19 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/wings/rocker.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/wings/spider.png b/src/main/resources/assets/evolution/textures/cosmetic/wings/spider.png new file mode 100644 index 0000000..79fc783 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/wings/spider.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/wings/trident.png b/src/main/resources/assets/evolution/textures/cosmetic/wings/trident.png new file mode 100644 index 0000000..105241a Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/wings/trident.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/wings/vulcano.png b/src/main/resources/assets/evolution/textures/cosmetic/wings/vulcano.png new file mode 100644 index 0000000..bba4c42 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/wings/vulcano.png differ diff --git a/src/main/resources/assets/evolution/textures/cosmetic/wings/wota.png b/src/main/resources/assets/evolution/textures/cosmetic/wings/wota.png new file mode 100644 index 0000000..94d4e45 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/cosmetic/wings/wota.png differ diff --git a/src/main/resources/assets/evolution/textures/font/heart.png b/src/main/resources/assets/evolution/textures/font/heart.png new file mode 100644 index 0000000..036e2f7 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/font/heart.png differ diff --git a/src/main/resources/assets/evolution/textures/font/tab_icon.png b/src/main/resources/assets/evolution/textures/font/tab_icon.png new file mode 100644 index 0000000..0efdec9 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/font/tab_icon.png differ diff --git a/src/main/resources/assets/evolution/textures/gui/storage_glow.png b/src/main/resources/assets/evolution/textures/gui/storage_glow.png new file mode 100644 index 0000000..444b3ff Binary files /dev/null and b/src/main/resources/assets/evolution/textures/gui/storage_glow.png differ diff --git a/src/main/resources/assets/evolution/textures/jumpcircles/boom1.png b/src/main/resources/assets/evolution/textures/jumpcircles/boom1.png new file mode 100644 index 0000000..7004580 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/jumpcircles/boom1.png differ diff --git a/src/main/resources/assets/evolution/textures/jumpcircles/boom2.png b/src/main/resources/assets/evolution/textures/jumpcircles/boom2.png new file mode 100644 index 0000000..800c3b1 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/jumpcircles/boom2.png differ diff --git a/src/main/resources/assets/evolution/textures/jumpcircles/colso1.png b/src/main/resources/assets/evolution/textures/jumpcircles/colso1.png new file mode 100644 index 0000000..eb102d5 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/jumpcircles/colso1.png differ diff --git a/src/main/resources/assets/evolution/textures/jumpcircles/colso3.png b/src/main/resources/assets/evolution/textures/jumpcircles/colso3.png new file mode 100644 index 0000000..de035ae Binary files /dev/null and b/src/main/resources/assets/evolution/textures/jumpcircles/colso3.png differ diff --git a/src/main/resources/assets/evolution/textures/jumpcircles/glow.png b/src/main/resources/assets/evolution/textures/jumpcircles/glow.png new file mode 100644 index 0000000..eb257cd Binary files /dev/null and b/src/main/resources/assets/evolution/textures/jumpcircles/glow.png differ diff --git a/src/main/resources/assets/evolution/textures/jumpcircles/omut2.png b/src/main/resources/assets/evolution/textures/jumpcircles/omut2.png new file mode 100644 index 0000000..a26a008 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/jumpcircles/omut2.png differ diff --git a/src/main/resources/assets/evolution/textures/jumpcircles/omut3.png b/src/main/resources/assets/evolution/textures/jumpcircles/omut3.png new file mode 100644 index 0000000..790fea5 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/jumpcircles/omut3.png differ diff --git a/src/main/resources/assets/evolution/textures/jumpcircles/ring.png b/src/main/resources/assets/evolution/textures/jumpcircles/ring.png new file mode 100644 index 0000000..0946acd Binary files /dev/null and b/src/main/resources/assets/evolution/textures/jumpcircles/ring.png differ diff --git a/src/main/resources/assets/evolution/textures/jumpcircles/shtorm1.png b/src/main/resources/assets/evolution/textures/jumpcircles/shtorm1.png new file mode 100644 index 0000000..18cf15e Binary files /dev/null and b/src/main/resources/assets/evolution/textures/jumpcircles/shtorm1.png differ diff --git a/src/main/resources/assets/evolution/textures/jumpcircles/shtorm2.png b/src/main/resources/assets/evolution/textures/jumpcircles/shtorm2.png new file mode 100644 index 0000000..51002cd Binary files /dev/null and b/src/main/resources/assets/evolution/textures/jumpcircles/shtorm2.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/absorption.png b/src/main/resources/assets/evolution/textures/mob_effect/absorption.png new file mode 100644 index 0000000..e264d13 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/absorption.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/bad_omen.png b/src/main/resources/assets/evolution/textures/mob_effect/bad_omen.png new file mode 100644 index 0000000..a30b630 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/bad_omen.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/blindness.png b/src/main/resources/assets/evolution/textures/mob_effect/blindness.png new file mode 100644 index 0000000..11f107d Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/blindness.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/breath_of_the_nautilus.png b/src/main/resources/assets/evolution/textures/mob_effect/breath_of_the_nautilus.png new file mode 100644 index 0000000..d927464 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/breath_of_the_nautilus.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/conduit_power.png b/src/main/resources/assets/evolution/textures/mob_effect/conduit_power.png new file mode 100644 index 0000000..cf73380 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/conduit_power.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/darkness.png b/src/main/resources/assets/evolution/textures/mob_effect/darkness.png new file mode 100644 index 0000000..ed53963 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/darkness.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/dolphins_grace.png b/src/main/resources/assets/evolution/textures/mob_effect/dolphins_grace.png new file mode 100644 index 0000000..736115a Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/dolphins_grace.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/fire_resistance.png b/src/main/resources/assets/evolution/textures/mob_effect/fire_resistance.png new file mode 100644 index 0000000..903ba67 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/fire_resistance.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/glowing.png b/src/main/resources/assets/evolution/textures/mob_effect/glowing.png new file mode 100644 index 0000000..47fd8c2 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/glowing.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/haste.png b/src/main/resources/assets/evolution/textures/mob_effect/haste.png new file mode 100644 index 0000000..97d9932 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/haste.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/health_boost.png b/src/main/resources/assets/evolution/textures/mob_effect/health_boost.png new file mode 100644 index 0000000..284026f Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/health_boost.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/hero_of_the_village.png b/src/main/resources/assets/evolution/textures/mob_effect/hero_of_the_village.png new file mode 100644 index 0000000..48f2208 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/hero_of_the_village.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/hunger.png b/src/main/resources/assets/evolution/textures/mob_effect/hunger.png new file mode 100644 index 0000000..0cd82e3 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/hunger.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/infested.png b/src/main/resources/assets/evolution/textures/mob_effect/infested.png new file mode 100644 index 0000000..7816d65 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/infested.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/instant_damage.png b/src/main/resources/assets/evolution/textures/mob_effect/instant_damage.png new file mode 100644 index 0000000..f2c4782 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/instant_damage.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/instant_health.png b/src/main/resources/assets/evolution/textures/mob_effect/instant_health.png new file mode 100644 index 0000000..7149911 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/instant_health.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/invisibility.png b/src/main/resources/assets/evolution/textures/mob_effect/invisibility.png new file mode 100644 index 0000000..1a085a7 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/invisibility.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/jump_boost.png b/src/main/resources/assets/evolution/textures/mob_effect/jump_boost.png new file mode 100644 index 0000000..7f3a4ae Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/jump_boost.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/levitation.png b/src/main/resources/assets/evolution/textures/mob_effect/levitation.png new file mode 100644 index 0000000..88fcd78 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/levitation.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/luck.png b/src/main/resources/assets/evolution/textures/mob_effect/luck.png new file mode 100644 index 0000000..bc46b5e Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/luck.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/mining_fatigue.png b/src/main/resources/assets/evolution/textures/mob_effect/mining_fatigue.png new file mode 100644 index 0000000..9524068 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/mining_fatigue.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/nausea.png b/src/main/resources/assets/evolution/textures/mob_effect/nausea.png new file mode 100644 index 0000000..6414dd2 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/nausea.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/night_vision.png b/src/main/resources/assets/evolution/textures/mob_effect/night_vision.png new file mode 100644 index 0000000..21beff8 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/night_vision.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/oozing.png b/src/main/resources/assets/evolution/textures/mob_effect/oozing.png new file mode 100644 index 0000000..9b598e2 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/oozing.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/poison.png b/src/main/resources/assets/evolution/textures/mob_effect/poison.png new file mode 100644 index 0000000..8aee1fc Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/poison.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/raid_omen.png b/src/main/resources/assets/evolution/textures/mob_effect/raid_omen.png new file mode 100644 index 0000000..937411c Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/raid_omen.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/regeneration.png b/src/main/resources/assets/evolution/textures/mob_effect/regeneration.png new file mode 100644 index 0000000..f9ada6d Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/regeneration.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/resistance.png b/src/main/resources/assets/evolution/textures/mob_effect/resistance.png new file mode 100644 index 0000000..66a4df3 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/resistance.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/saturation.png b/src/main/resources/assets/evolution/textures/mob_effect/saturation.png new file mode 100644 index 0000000..799c693 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/saturation.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/slow_falling.png b/src/main/resources/assets/evolution/textures/mob_effect/slow_falling.png new file mode 100644 index 0000000..63d4b99 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/slow_falling.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/slowness.png b/src/main/resources/assets/evolution/textures/mob_effect/slowness.png new file mode 100644 index 0000000..4c9f3a4 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/slowness.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/speed.png b/src/main/resources/assets/evolution/textures/mob_effect/speed.png new file mode 100644 index 0000000..b7ad3f6 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/speed.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/strength.png b/src/main/resources/assets/evolution/textures/mob_effect/strength.png new file mode 100644 index 0000000..dd53cdf Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/strength.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/trial_omen.png b/src/main/resources/assets/evolution/textures/mob_effect/trial_omen.png new file mode 100644 index 0000000..e90251e Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/trial_omen.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/unluck.png b/src/main/resources/assets/evolution/textures/mob_effect/unluck.png new file mode 100644 index 0000000..69ad3fd Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/unluck.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/water_breathing.png b/src/main/resources/assets/evolution/textures/mob_effect/water_breathing.png new file mode 100644 index 0000000..1ebbf00 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/water_breathing.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/weakness.png b/src/main/resources/assets/evolution/textures/mob_effect/weakness.png new file mode 100644 index 0000000..5fcfd9b Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/weakness.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/weaving.png b/src/main/resources/assets/evolution/textures/mob_effect/weaving.png new file mode 100644 index 0000000..2f18a57 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/weaving.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/wind_charged.png b/src/main/resources/assets/evolution/textures/mob_effect/wind_charged.png new file mode 100644 index 0000000..433ff67 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/wind_charged.png differ diff --git a/src/main/resources/assets/evolution/textures/mob_effect/wither.png b/src/main/resources/assets/evolution/textures/mob_effect/wither.png new file mode 100644 index 0000000..fe3978b Binary files /dev/null and b/src/main/resources/assets/evolution/textures/mob_effect/wither.png differ diff --git a/src/main/resources/assets/evolution/textures/targetesp/brackets.png b/src/main/resources/assets/evolution/textures/targetesp/brackets.png new file mode 100644 index 0000000..34f2b22 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/targetesp/brackets.png differ diff --git a/src/main/resources/assets/evolution/textures/targetesp/marker.png b/src/main/resources/assets/evolution/textures/targetesp/marker.png new file mode 100644 index 0000000..0179b27 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/targetesp/marker.png differ diff --git a/src/main/resources/assets/evolution/textures/targetesp/vortex.png b/src/main/resources/assets/evolution/textures/targetesp/vortex.png new file mode 100644 index 0000000..c1a1ebb Binary files /dev/null and b/src/main/resources/assets/evolution/textures/targetesp/vortex.png differ diff --git a/src/main/resources/assets/evolution/textures/white.png b/src/main/resources/assets/evolution/textures/white.png new file mode 100644 index 0000000..073fcf4 Binary files /dev/null and b/src/main/resources/assets/evolution/textures/white.png differ diff --git a/src/main/resources/assets/evolution/videos/menu_bg.mp4 b/src/main/resources/assets/evolution/videos/menu_bg.mp4 new file mode 100644 index 0000000..a6bb364 Binary files /dev/null and b/src/main/resources/assets/evolution/videos/menu_bg.mp4 differ diff --git a/src/main/resources/assets/holdmyitems/icon.png b/src/main/resources/assets/holdmyitems/icon.png new file mode 100644 index 0000000..4033346 Binary files /dev/null and b/src/main/resources/assets/holdmyitems/icon.png differ diff --git a/src/main/resources/assets/minecraft/holdmyitems/hand_pose.lua b/src/main/resources/assets/minecraft/holdmyitems/hand_pose.lua new file mode 100644 index 0000000..4465d9d --- /dev/null +++ b/src/main/resources/assets/minecraft/holdmyitems/hand_pose.lua @@ -0,0 +1,1482 @@ +-- hand_pose.lua + + +local player = context.player +local useAction = I:getUseAction(context.item) +local isUsingItem = P:isUsingItem(player) +local activeHand = P:getActiveHand(player) +local mat = context.matrices +local pSpeed = P:getSpeed(player) + +if useAction == "spear" then + context.equipProgress = 0 +end +local l = (context.bl and 1) or -1 + +function easeCustom(t) + local t2 = t * t + local t3 = t2 * t + return 3 * t * (1 - t) * (1 - t) * 0.44 + + 3 * t2 * (1 - t) * 1 + -- 84 + t3 + --[[ + const t2 = t * t; + const t3 = t2 * t; + const mt = 1 - t; + const mt2 = mt * mt; + + return 3 * .66 * t * mt2 + + 3 * 0.81 * t2 * mt + + t3; + ]] +end + +function easeCustomSec(t) + local t2 = t * t + local t3 = t2 * t + return 3 * t * (1 - t) * (1 - t) * 0.44 + + 3 * t2 * (1 - t) * 0.94 + + t3 +end + +local GRAVITY = 0.1 +local DAMPING = 0.82 +local INTENSITY = 0.27 + +global.isChargedM = false; +global.isChargedO = false; + +global.shootCM = 0; +global.shootCO = 0; + + +global.riptideCounter = 0; +global.riptideCounterO = 0; + +global.inWaterCount = 0; + + +global.inspectionCounter = 0.0; +global.inspectionSpin = 0.0; +global.isMapHeldBelow = false; +global.mapTransition = 0.0; +global.mapSmoother = 0.0; +global.mapZoomer = 0.0; +global.shieldDisable = 0.0; +global.foodSpeed = 0.0; +global.pitchAngleO = 0.0; +global.yawAngleO = 0.0; +global.pitchAngle = 0.0; +global.yawAngle = 0.0; +global.brushCounter = 0.0; +global.brushCounterO = 0.0; +global.smoothingCrawl = 0.0; +global.crawlDefaulPos = 0.0; +global.swimSmoother = 0.0; +global.bowWiggle = 0.0; +global.bowWiggleO = 0.0; +global.bowCountO = 0.0; +global.bowCountSecO = 0.0; +global.bowCount = 0.0; +global.bowCountSec = 0.0; +global.tridentMO = 0.0; +global.trident = 0.0; +global.tridentO = 0.0; +global.tridentJO = 0.0; +global.tridentM = 0.0; +global.tridentJ = 0.0; +global.shieldM = 0.0; +global.shieldO = 0.0; +global.walk = 0.0; +global.walkSmoother = 0.0; +global.fall = 0.0; +global.fallSpeed = 0.0; +global.sneak = 0.0; +global.a = 0.0; +global.smoothing = 0.0; +global.crawler = 0.0; +global.offhand = 0.0; +global.crossBowM = 0.0; +global.crossBowSecM = 0.0; +global.crossBowO = 0.0; +global.crossBowSecO = 0.0; +global.foodCount = 0.0; +global.foodCountSec = 0.0; +global.foodCountO = 0.0; +global.foodCountSecO = 0.0; +global.drinkCount = 0.0; +global.drinkCountO = 0.0; +global.crwl = 0.0; +global.mainHandSwitch = 0.0; +global.offHandSwitch = 0.0; +global.swordAttack = false; +global.swordAttack2 = false; +global.swimCounter = 0.0; +global.prevSwingM = false; + +global.waterWalk = 0; + +global.tilting = 0.0; + +global.usingOffBowPrev = false; + +global.spearCounterM = 0; +global.spearUsageTime = 0; + +global.canDismountCounter = 0; +global.canKnockbackCounter = 0; + +global.spearCounterO = 0; + +global.canDismountCounterO = 0; +global.canKnockbackCounterO = 0; + +global.hitImpactCounter = 0; +global.hitImpactCounterO = 0; + +global.regularSwing = 1; +global.swordSwing = 1; +global.pickaxeSwing = 1; +global.shovelSwing = 1; +global.generalSwing = 1; +global.axeSwing = 1; +global.tridentSwing = 1; +global.bowAnimation = 1; +global.crossBowAnimation = 1; +global.tridentAnimation = 1; +global.drinkingAnimation = 1; +global.mainHandSwitchingAnimation = 1; +global.offHandSwitchingAnimation = 1; +global.shieldAnimation = 1; +global.brushAnimation = 1; +global.swimAnimation = 1; +global.crawlAnimation = 1; +global.climbAnimation = 1; +global.foodAnimation = 1; + +if I:isIn(context.item, Tags:getVanillaTag("pickaxes")) then +context.swingProgress = easeCustom(context.swingProgress) +else +context.swingProgress = easeCustomSec(context.swingProgress) +end + +M:moveX(mat, 0.2 * l) + +local swing_rot +if context.swingProgress < 0.70016 then +swing_rot = M:sin(M:clamp(context.swingProgress, 0, 0.308) * 5.1) +else +swing_rot = M:sin(M:clamp(context.swingProgress, 0.70016, 1) * 5.1 - 2) +end + +local swing_sword_tilt +if context.swingProgress < 0.65245 then +swing_sword_tilt = M:sin(M:clamp(context.swingProgress, 0, 0.16675) * 3.14 * 3) +else +swing_sword_tilt = M:sin(M:clamp(context.swingProgress, 0.65245, 1) * 4.4 - 1.2584) +end + +swing_rot = swing_rot * swing_rot * swing_rot +local swing = M:clamp(M:sin(context.swingProgress * 4.78), 0, 1) +local swing_hit = M:sin(M:clamp(context.swingProgress, 0.16561, 0.49422) * 4.78 * 2 + 4.7) + +local swing_hit_second +if context.swingProgress < 0.65594 then +swing_hit_second = M:sin(M:clamp(context.swingProgress, 0.16561, 0.32991) * 4.78 * 2 + 4.7) +else +swing_hit_second = M:sin(M:clamp(context.swingProgress, 0.65594, 0.82025) * 4.78 * 2 - 4.7) +end + +local usingOffBow +-- -------------------------Offhand Bow Counter (placing the hands in the ready to shoot position)-------- +if isUsingItem and useAction == "bow" and not context.mainHand and activeHand == context.hand then -- Start counting if player is using renderedItem by his offhand & renderedItem useAction is "bow" + bowCountO = bowCountO + 0.075 * context.deltaTime * 30 + usingOffBow = true; +elseif not context.mainHand then -- Decrease the counter only if using renderedItem condition is not true. Decreasing starts after pulling counter (bowSecO) reaches zero for better timing + bowCountO = bowCountO - 0.07 * context.deltaTime * 30 + usingOffBow = false +end +bowCountO = M:clamp(bowCountO, 0, 1) -- Limit the counter from 0 to 1 +-- -------------------------Offhand secondary bow counter (pulling)---------------------------------------------------------- +if isUsingItem and useAction == "bow" and not context.mainHand and activeHand == context.hand and bowCountO == 1 then -- Same as bowCountO but starts only when bowCountO (ready to shoot pos) reaches 1 + bowCountSecO = bowCountSecO + 0.025 * context.deltaTime * 30 + bowWiggleO = bowWiggleO + 0.07 * context.deltaTime * 30 +elseif not context.mainHand then -- Same as bowCountO but doesn't rely on other counter + bowCountSecO = bowCountSecO - 0.11 * context.deltaTime * 30 +end +bowCountSecO = M:clamp(bowCountSecO, 0, 1) -- Limit the counter from 0 to 1(it's the last time i will say this XD) + +-- ------------Two exactly same bow counters with only difference being the context.hand (offhand/main)---------- + +if isUsingItem and useAction == "bow" and context.mainHand and activeHand == context.hand then + bowCount = bowCount + 0.075 * context.deltaTime * 30 +elseif context.mainHand then + bowCount = bowCount - 0.07 * context.deltaTime * 30 +end +bowCount = M:clamp(bowCount, 0, 1) + +if isUsingItem and useAction == "bow" and context.mainHand and activeHand == context.hand and bowCount == 1 then + bowCountSec = bowCountSec + 0.025 * context.deltaTime * 30 + bowWiggle = bowWiggle + 0.07 * context.deltaTime * 30 +elseif context.mainHand then + bowCountSec = 0 +end +bowCountSec = M:clamp(bowCountSec, 0, 1) +-- ----------------END END--------------- + +local ptAngle = (context.mainHand and pitchAngle) or pitchAngleO +local ywAngle = (context.mainHand and yawAngle) or yawAngleO + + +if pSpeed > 0.05 then + waterWalk = waterWalk + pSpeed * 2 * context.deltaTime * 30 +end + +if P:isTouchingWater(player) then + inWaterCount = inWaterCount + 0.07 * context.deltaTime * 30 +else + inWaterCount = inWaterCount - 0.07 * context.deltaTime * 30 +end +inWaterCount = M:clamp(inWaterCount, 0, 1) + + +local xOffset = ${xOffset} +M:translate(mat, ${xOffset} * l, ${yOffset}, ${zOffset}) +tilting = tilting + context.swingProgress * context.deltaTime * 3 + +if not I:isEmpty(context.item) then +M:moveZ(mat, -0.16) +else +M:moveZ(mat, -0.08) +end + +if I:isOf(context.item, Items:get("minecraft:filled_map")) and context.mainHand and I:isEmpty(P:getOffhandItem(player)) then +mapSmoother = mapSmoother + 0.07 * context.deltaTime * 30 +elseif I:isOf(context.item, Items:get("minecraft:filled_map")) then +mapSmoother = mapSmoother - 0.07 * context.deltaTime * 30 +end +mapSmoother = M:clamp(mapSmoother, 0, 1) + +if context.mainHandSwitchEvent and context.mainHand and drinkCount == 0 then +mainHandSwitch = 0 +end +mainHandSwitch = mainHandSwitch + 0.015 * context.deltaTime * 30 +mainHandSwitch = M:clamp(mainHandSwitch, 0, 1) + +-- if context.mainHand then +-- context.equipProgress = context.equipProgress * mainHandSwitch +-- end + +if context.mainHand then +local switchItems = M:sin(M:clamp(mainHandSwitch, 0, 0.5) * 3.14) * mainHandSwitchingAnimation +local switch_fast = M:sin(M:clamp(mainHandSwitch, 0, 0.125) * 12.56) * mainHandSwitchingAnimation + +switchItems = Easings:easeInOutBack(switchItems) + +if useAction == "trident" and tridentM > 0.9 then +M:translate(mat, 0, -0.15 * switch_fast, -0.3 * switch_fast) +M:rotateX(mat, 75 * switch_fast, 0.3 * l, -0.4, 0) +M:rotateX(mat, -75 * switchItems, 0.3 * l, -0.4, 0) +M:translate(mat, 0, 0.15 * switch_fast, 0.3 * switch_fast) +else +if useAction == "crossbow" then +M:moveY(mat, -0.25 * switch_fast) +end +M:translate(mat, 0 * switch_fast, 0, -0.2 * switch_fast) +M:rotateY(mat, 25 * l * switch_fast, 0.3 * l, -0.4, 0) +M:rotateX(mat, -55 * switch_fast, 0.3 * l, -0.4, 0) +M:rotateZ(mat, 40 * l * switch_fast, 0.3 * l, -0.4, 0) + +M:rotateZ(mat, -40 * l * switchItems, 0.3 * l, -0.4, 0) +M:rotateX(mat, 55 * switchItems, 0.3 * l, -0.4, 0) +M:rotateY(mat, -25 * l * switchItems, 0.3 * l, -0.4, 0) +if useAction == "crossbow" then +M:moveY(mat, 0.25 * switchItems) +end +M:translate(mat, -0 * switchItems, 0, 0.2 * switchItems) +end +end + +if context.offHandSwitchEvent then +offHandSwitch = 0 +end +offHandSwitch = offHandSwitch + 0.015 * context.deltaTime * 30 +offHandSwitch = M:clamp(offHandSwitch, 0, 1) + +if not context.mainHand and foodCountO == 0 then +local switchItems = M:sin(M:clamp(offHandSwitch, 0, 0.5) * 3.14) * offHandSwitchingAnimation +local switch_fast = M:sin(M:clamp(offHandSwitch, 0, 0.125) * 12.56) * offHandSwitchingAnimation + +switchItems = Easings:easeInOutBack(switchItems) + +if useAction == "crossbow" then +M:moveY(mat, -0.25 * switch_fast) +end +M:translate(mat, 0 * switch_fast, 0, -0.2 * switch_fast) +M:rotateY(mat, 25 * switch_fast * l, 0.3 * l, -0.4, 0) +M:rotateX(mat, -55 * switch_fast, 0.3 * l, -0.4, 0) +M:rotateZ(mat, 40 * switch_fast * l, 0.3 * l, -0.4, 0) + +M:rotateZ(mat, -40 * switchItems * l, 0.3 * l, -0.4, 0) +M:rotateX(mat, 55 * switchItems, 0.3 * l, -0.4, 0) +M:rotateY(mat, -25 * switchItems * l, 0.3 * l, -0.4, 0) +if useAction == "crossbow" then +M:moveY(mat, 0.25 * switch_fast) +end +M:translate(mat, -0 * switchItems, 0, 0.2 * switchItems) +end + +if not P:isOnGround(player) and context.mainHandSwingProgress == 0 and context.mainHand then +swordAttack = false +elseif context.mainHand and context.mainHandSwingProgress == 0 then +swordAttack = true +end +if prevSwingM ~= context.swingMHand and context.mainHand then +swordAttack2 = not swordAttack2 +end + +if P:isCrawling(player) and pSpeed > 0.08 then +crwl = crwl + pSpeed * context.deltaTime * 30 +end +if P:getPitch(player) > 40 then +mapZoomer = mapZoomer + 0.05 * context.deltaTime * 30 +else +mapZoomer = mapZoomer - 0.095 * context.deltaTime * 30 +end +mapZoomer = M:clamp(mapZoomer, 0, 1) +local prevSpearUsageTime = spearUsageTime +local prevKnockback = canKnockbackCounter +local prevDismount = canDismountCounter + +local prevKnockbackO = canKnockbackCounterO +local prevDismountO = canDismountCounterO +if isUsingItem and useAction == "spear" and activeHand == context.hand and context.mainHand and I:getSpearData(context.item).canDamage then + spearCounterM = spearCounterM + 0.08 * context.deltaTime * 30 + if not I:getSpearData(context.item).canDismount then + canDismountCounter = canDismountCounter + 0.035 * context.deltaTime * 30 + end + + if not I:getSpearData(context.item).canKnockback then + canKnockbackCounter = canKnockbackCounter + 0.055 * context.deltaTime * 30 + end + + if I:getSpearData(context.item).hitImpact then + hitImpactCounter = hitImpactCounter + 0.08 * context.deltaTime * 30 + end + if hitImpactCounter > 0 then + hitImpactCounter = hitImpactCounter + 0.08 * context.deltaTime * 30 + end +elseif context.mainHand then + spearCounterM = spearCounterM - 0.08 * context.deltaTime * 30 + canDismountCounter = 0 + canKnockbackCounter = 0 + spearUsageTime = 0; + hitImpactCounter = 0 +end +if hitImpactCounter >= 1 then + hitImpactCounter = 0 +end +spearCounterM = M:clamp(spearCounterM, 0, 1) * M:clamp(1 - M:clamp(swing * 8, 0, 1), 0, 1) +canDismountCounter = M:clamp(canDismountCounter, 0, 1) +canKnockbackCounter = M:clamp(canKnockbackCounter, 0, 1) +----------------------- +if isUsingItem and useAction == "spear" and activeHand == context.hand and not context.mainHand and I:getSpearData(context.item).canDamage then + spearCounterO = spearCounterO + 0.08 * context.deltaTime * 30 + if not I:getSpearData(context.item).canDismount then + canDismountCounterO = canDismountCounterO + 0.035 * context.deltaTime * 30 + end + + if not I:getSpearData(context.item).canKnockback then + canKnockbackCounterO = canKnockbackCounterO + 0.055 * context.deltaTime * 30 + end +elseif not context.mainHand then + spearCounterO = spearCounterO - 0.08 * context.deltaTime * 30 + canDismountCounterO = 0 + canKnockbackCounterO = 0 + spearUsageTime = 0; +end +spearCounterO = M:clamp(spearCounterO, 0, 1) * M:clamp(1 - M:clamp(swing * 8, 0, 1), 0, 1) +canDismountCounterO = M:clamp(canDismountCounterO, 0, 1) +canKnockbackCounterO = M:clamp(canKnockbackCounterO, 0, 1) + +if canDismountCounter == 0 then + canDismountCounter = M:lerp(0.5 * context.deltaTime * 30, prevDismount, canDismountCounter) +end +if canKnockbackCounter == 0 then + canKnockbackCounter = M:lerp(0.5 * context.deltaTime * 30, prevKnockback, canKnockbackCounter) +end + +if canDismountCounterO == 0 then + canDismountCounterO = M:lerp(0.5 * context.deltaTime * 30, prevDismountO, canDismountCounterO) +end +if canKnockbackCounterO == 0 then + canKnockbackCounterO = M:lerp(0.5 * context.deltaTime * 30, prevKnockbackO, canKnockbackCounterO) +end + +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +if isUsingItem and (useAction == "eat" or useAction == "drink" or useAction == "toot_horn") and context.mainHand and activeHand == context.hand then +foodCount = foodCount + 0.1 * context.deltaTime * 30 +elseif context.mainHand then +foodCount = foodCount - 0.1 * context.deltaTime * 30 +end +foodCount = M:clamp(foodCount, 0, 1) + +if isUsingItem and (useAction == "eat" or useAction == "drink" or useAction == "toot_horn" or useAction == "brush") and context.mainHand and activeHand == context.hand and (foodCount == 1 or brushCounter > 0.4) then +foodCountSec = foodCountSec + 0.1 * context.deltaTime * 30 +end + +if isUsingItem and (useAction == "eat" or useAction == "drink" or useAction == "toot_horn") and not context.mainHand and activeHand == context.hand then +foodCountO = foodCountO + 0.1 * context.deltaTime * 30 +elseif not context.mainHand then +foodCountO = foodCountO - 0.1 * context.deltaTime * 30 +end +foodCountO = M:clamp(foodCountO, 0, 1) + +if isUsingItem and (useAction == "eat" or useAction == "drink" or useAction == "toot_horn" or useAction == "brush") and not context.mainHand and activeHand == context.hand and (foodCountO == 1 or brushCounterO > 0.4) then +foodCountSecO = foodCountSecO + 0.1 * context.deltaTime * 30 +end +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +if isUsingItem and (useAction == "drink") and context.mainHand and activeHand == context.hand and foodCount == 1 then +drinkCount = drinkCount + 0.04 * context.deltaTime * 30 +elseif context.mainHand then +drinkCount = drinkCount - 0.1 * context.deltaTime * 30 +end +drinkCount = M:clamp(drinkCount, 0, 1) + +if isUsingItem and useAction == "drink" and not context.mainHand and activeHand == context.hand and foodCountO == 1 then +drinkCountO = drinkCountO + 0.04 * context.deltaTime * 30 +elseif not context.mainHand then +drinkCountO = drinkCountO - 0.1 * context.deltaTime * 30 +end +drinkCountO = M:clamp(drinkCountO, 0, 1) + +if isUsingItem and useAction == "crossbow" and not context.mainHand and activeHand == context.hand then +crossBowO = crossBowO + 0.1 * context.deltaTime * 30 +elseif not context.mainHand then +crossBowO = crossBowO - 0.1 * context.deltaTime * 30 +end +crossBowO = M:clamp(crossBowO, 0, 1) + +if isUsingItem and useAction == "crossbow" and not context.mainHand and activeHand == context.hand and crossBowO == 1 then +crossBowSecO = crossBowSecO + 0.02 * context.deltaTime * 30 +elseif not context.mainHand then +crossBowSecO = crossBowSecO - 0.1 * context.deltaTime * 30 +end +crossBowSecO = M:clamp(crossBowSecO, 0, 1) +-- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +if isUsingItem and useAction == "crossbow" and context.mainHand and activeHand == context.hand and not I:isChargedCrossbow(context.item) then +crossBowM = crossBowM + 0.1 * context.deltaTime * 30 +elseif context.mainHand then +crossBowM = crossBowM - 0.1 * context.deltaTime * 30 +end +crossBowM = M:clamp(crossBowM, 0, 1) + +if isUsingItem and useAction == "crossbow" and context.mainHand and activeHand == context.hand and crossBowM == 1 and not I:isChargedCrossbow(context.item) then +crossBowSecM = crossBowSecM + 0.02 * context.deltaTime * 30 +elseif context.mainHand then +crossBowSecM = crossBowSecM - 0.1 * context.deltaTime * 30 +end +crossBowSecM = M:clamp(crossBowSecM, 0, 1) + +-- -------------------------Counter for hiding your offhand------------------------- +if not context.mainHand and I:isEmpty(context.item) and not (isUsingItem and not I:isChargedCrossbow(P:getMainItem(player)) and I:getUseAction(P:getMainItem(player)) ~= "block" and I:getUseAction(P:getMainItem(player)) ~= "eat" and I:getUseAction(P:getMainItem(player)) ~= "toot_horn" and I:getUseAction(P:getMainItem(player)) ~= "drink" and I:getUseAction(P:getMainItem(player)) ~= "brush" and I:getUseAction(P:getMainItem(player)) ~= "spear") and not P:isClimbing(player) and not P:isSwimming(player) and not P:isCrawling(player) then -- Start counting if renderedItem is empty & players is not using any items +offhand = offhand + 0.08 * context.deltaTime * 30 +elseif not context.mainHand or (isUsingItem and not I:isChargedCrossbow(P:getMainItem(player)) and I:getUseAction(P:getMainItem(player)) ~= "block" and I:getUseAction(P:getMainItem(player)) ~= "eat" and I:getUseAction(P:getMainItem(player)) ~= "drink" and I:getUseAction(P:getMainItem(player)) ~= "toot_horn" and I:getUseAction(P:getMainItem(player)) ~= "brush" and I:getUseAction(P:getMainItem(player)) ~= "spear") or P:isClimbing(player) or P:isCrawling(player) then -- Decrease the counter if one of the conditions above is true +offhand = offhand - 0.08 * context.deltaTime * 30 +end +offhand = M:clamp(offhand, 0, 1) -- Limit the counter from 0 to 1 + + + + +if isUsingItem and useAction == "brush" and context.mainHand and activeHand == context.hand then +brushCounter = brushCounter + 0.1 * context.deltaTime * 30 +elseif context.mainHand then +brushCounter = brushCounter - 0.1 * context.deltaTime * 30 +end +brushCounter = M:clamp(brushCounter, 0, 1) * brushAnimation + +if isUsingItem and useAction == "brush" and not context.mainHand and activeHand == context.hand then +brushCounterO = brushCounterO + 0.1 * context.deltaTime * 30 +elseif not context.mainHand then +brushCounterO = brushCounterO - 0.1 * context.deltaTime * 30 +end +brushCounterO = M:clamp(brushCounterO, 0, 1) * brushAnimation + +-- --------------------------------------Offhand trident counters------------------------------------------- +if isUsingItem and useAction == "trident" and not context.mainHand and activeHand == context.hand then -- Start is the same as bow counter. The only difference being renderedItem use action "trident" +tridentMO = tridentMO + 0.07 * context.deltaTime * 30 -- Main counter for lifting the trident up +tridentO = tridentO + 0.045 * context.deltaTime * 30 -- Same +tridentJO = tridentJO + 0.1 * context.deltaTime * 30 -- Secondary one for jiggling when it's ready +elseif not context.mainHand then +if P:isUsingRiptide(player) then +tridentMO = tridentMO - 0.57 * context.deltaTime * 30 +tridentO = tridentO - 0.53 * context.deltaTime * 30 -- Same + +else +tridentMO = tridentMO - 0.1 * context.deltaTime * 30 +tridentO = tridentO - 0.07 * context.deltaTime * 30 -- Same + +end +tridentJO = tridentJO - 0.1 * context.deltaTime * 30 +end +tridentMO = M:clamp(tridentMO, 0, 1) +tridentO = M:clamp(tridentO, 0, 1) + +-- -------------------------------------Main context.hand trident counters----------------------------------------- +if isUsingItem and useAction == "trident" and context.mainHand and activeHand == context.hand then -- Same but for "context.mainHand" +tridentM = tridentM + 0.07 * context.deltaTime * 30 -- Same +trident = trident + 0.05 * context.deltaTime * 30 -- Same +tridentJ = tridentJ + 0.1 * context.deltaTime * 30 -- Same +elseif context.mainHand then +if P:isUsingRiptide(player) then +tridentM = tridentM - 0.57 * context.deltaTime * 30 +trident = trident - 0.53 * context.deltaTime * 30 -- Same + +else +tridentM = tridentM - 0.1 * context.deltaTime * 30 +trident = trident - 0.07 * context.deltaTime * 30 -- Same + +end + +tridentJ = tridentJ - 0.1 * context.deltaTime * 30 +end +trident = trident * M:pow(0.95, context.deltaTime * 30) +tridentM = M:clamp(tridentM, 0, 1) +trident = M:clamp(trident, 0, 1) + +-- -------------------------------------Main context.hand shield counter------------------------------------------- +if isUsingItem and useAction == "block" and context.mainHand and activeHand == context.hand then -- Start is the same as trident counter. The only difference being renderedItem use action "shield" +if I:isIn(context.item, Tags:getVanillaTag("swords")) then +shieldM = shieldM + 0.12 * context.deltaTime * 30 +else +shieldM = shieldM + 0.07 * context.deltaTime * 30 +end +elseif context.mainHand then +if I:isIn(context.item, Tags:getVanillaTag("swords")) then +shieldM = shieldM - 0.12 * context.deltaTime * 30 +else +shieldM = shieldM - 0.07 * context.deltaTime * 30 +end +end +shieldM = shieldM - shieldDisable * 0.04 * context.deltaTime * 30 +shieldM = M:clamp(shieldM, 0, 1) + +-- --------------------------------------Off context.hand shield counter-------------------------------------------- +if isUsingItem and useAction == "block" and not context.mainHand and activeHand == context.hand then -- Start is the same as shield counter. The only difference being renderedItem use action "context.mainHand" +shieldO = shieldO + 0.07 * context.deltaTime * 30 +elseif not context.mainHand then +shieldO = shieldO - 0.07 * context.deltaTime * 30 +end +shieldO = shieldO - shieldDisable * 0.04 * context.deltaTime * 30 +shieldO = M:clamp(shieldO, 0, 1) + +if pSpeed > 0.08 and M:abs(P:getYSpeed(player)) < 0.08 and P:isOnGround(player) then +walk = walk + pSpeed * context.deltaTime * 30 +walkSmoother = walkSmoother + 0.1 * context.deltaTime * 30 +else +walkSmoother = walkSmoother - 0.1 * context.deltaTime * 30 +end +walkSmoother = M:clamp(walkSmoother, 0, 1) + +fallSpeed = fallSpeed + (-1 * P:getYSpeed(player) + M:sin(sneak * 3.14) * 0.14 + M:sin(bowCount * 3.14) * 0.12 + M:sin(bowCountO * 3.14) * 0.12) * INTENSITY * context.deltaTime * 30 +fallSpeed = fallSpeed - GRAVITY * fall * context.deltaTime * 30 +fallSpeed = fallSpeed * M:pow(DAMPING, context.deltaTime * 30) +fall = fall + fallSpeed * context.deltaTime * 30 + +if P:isSneaking(player) then +sneak = sneak + 0.1 * context.deltaTime * 30 +else +sneak = sneak - 0.1 * context.deltaTime * 30 +end +sneak = M:clamp(sneak, 0, 1) +M:moveY(mat, -0.08 * sneak) +M:rotateX(mat, 4 * M:sin(sneak * 3.14), 0, -0.4, 0) + +a = a + 0.04 * context.deltaTime * 30 + +if P:isClimbing(player) then +smoothing = smoothing + 0.1 * context.deltaTime * 30 +else +smoothing = smoothing - 0.1 * context.deltaTime * 30 +end +if smoothing > 1 then +smoothing = 1 +end +if smoothing < 0 then +smoothing = 0 +end + +if P:isCrawling(player) then +smoothingCrawl = smoothingCrawl + 0.1 * context.deltaTime * 30 +else +smoothingCrawl = smoothingCrawl - 0.1 * context.deltaTime * 30 +end +smoothingCrawl = M:clamp(smoothingCrawl, 0, 1) + +if P:isCrawling(player) and pSpeed > 0.08 then +crawlDefaulPos = crawlDefaulPos + 0.1 * context.deltaTime * 30 +else +crawlDefaulPos = crawlDefaulPos - 0.06 * context.deltaTime * 30 +end +crawlDefaulPos = M:clamp(crawlDefaulPos, 0, 1) + +if P:isClimbing(player) and M:abs(P:getYSpeed(player)) > 0.08 then +if P:getYSpeed(player) > 0 then +crawler = crawler + P:getYSpeed(player) * context.deltaTime * 30 +else +crawler = crawler + P:getYSpeed(player) / 2 * context.deltaTime * 30 +end +end + +if P:isSwimming(player) and not isUsingItem then +swimCounter = swimCounter + pSpeed * context.deltaTime * 30 +swimSmoother = swimSmoother + 0.1 * context.deltaTime * 30 +else +swimSmoother = swimSmoother - 0.1 * context.deltaTime * 30 +end +swimSmoother = M:clamp(swimSmoother, 0, 1) + +M:moveZ(mat, 0.3 * M:sin(swimCounter * 0.55) * swimSmoother * swimAnimation) + +if I:isIn(context.item, Tags:getVanillaTag("axes")) or I:isOf(context.item, Items:get("minecraft:mace")) then +-- M:rotateZ(mat, ywAngle * -0.1, 0.2 * l, -0.3, 0) +M:rotateX(mat, (P:getPitch(player) * -0.03) + ptAngle * 0.1, 0, -0.4, 0) +else -- if (not I:isEmpty(renderedItem)) +-- M:rotateZ(mat, ywAngle * -0.05, 0.2 * l, -0.3, 0) +M:rotateX(mat, (P:getPitch(player) * -0.03) + ptAngle * 0.1, 0, -0.4, 0) +end + +if I:isEmpty(context.item) then +M:translate(mat, 0, -0.15 * -M:cos(swimCounter * 0.55) * swimSmoother + 0.25 * swimSmoother * swimAnimation, 0) +M:rotateY(mat, -15 * l * M:cos(swimCounter * 0.55) * swimSmoother * swimAnimation, 0.3 * l, -0.4, 0) +M:rotateX(mat, -10 * M:cos(swimCounter * 0.55) * swimSmoother * swimAnimation, 0.3 * l, -0.4, 0) +M:rotateX(mat, -30 * swimSmoother * swimAnimation, 0.3 * l, -0.4, 0) +M:rotateZ(mat, -20 * l * M:sin(swimCounter * 0.55) * swimSmoother * swimAnimation, 0.3 * l, -0.4, 0) +else +M:rotateY(mat, -15 * l * M:cos(swimCounter * 0.55) * swimSmoother * swimAnimation, 0.3 * l, -0.4, 0) +M:rotateX(mat, -10 * M:cos(swimCounter * 0.55) * swimSmoother * swimAnimation, 0.3 * l, -0.4, 0) +end + +if I:isOf(context.item, Items:get("minecraft:bell")) or I:isLantern(context.item) or I:isIn(context.item, Tags:getVanillaTag("hanging_signs")) or I:isOf(context.item, Items:get("minecraft:pink_petals")) or I:isOf(context.item, Items:get("minecraft:leaf_litter")) or I:isOf(context.item, Items:get("minecraft:wildflowers")) or I:isOf(context.item, Items:get("minecraft:end_crystal")) or I:isOf(context.item, Items:get("minecraft:painting")) or I:isOf(context.item, Items:get("minecraft:item_frame")) then +if I:isOf(context.item, Items:get("minecraft:pink_petals")) or I:isOf(context.item, Items:get("minecraft:leaf_litter")) or I:isOf(context.item, Items:get("minecraft:wildflowers")) then +M:translate(mat, 0, 0.25, -0.05) +elseif I:isOf(context.item, Items:get("minecraft:end_crystal")) then +M:moveZ(mat, -0.12) +M:rotateX(mat, -10) +else +M:translate(mat, 0, -0.1, 0.05) +M:rotateX(mat, 25) +end +elseif not I:isEmpty(context.item) and useAction ~= "crossbow" then +M:moveY(mat, -0.12) +M:rotateZ(mat, -6 * l) +M:rotateX(mat, 6) +end + +M:moveY(mat, 0.01 * M:sin(a)) -- Idle animation example +M:rotateX(mat, 1.1 * l * M:cos(a), 0.3 * l, -0.4, 0) -- Idle animation example +M:rotateY(mat, 0.5 * l * M:sin(a) * l, 0.3 * l, -0.4, 0) -- Idle animation example +M:rotateZ(mat, 2 * l * M:sin(a * 0.3) * l, 0.3 * l, -0.4, 0) -- Idle animation example + +if I:isEmpty(context.item) and not context.mainHand then +M:translate(mat, 0, -1 * Easings:easeInOutExpo(offhand), 0.5 * Easings:easeInOutExpo(offhand)) +end + +local fallMul +if I:isEmpty(context.item) or I:isBlock(context.item) then +fallMul = 0.7 +else +fallMul = 1 +end + +if I:isEmpty(context.item) then +M:moveZ(mat, 0.06 * (fall * fallMul)) +end +M:rotateX(mat, 2 * (fall * fallMul), 0, -0.4, 0) +M:moveY(mat, 0.06 * fall * fallMul) + +local walk_val = (context.bl and walk) or (walk - 0.5 * 1.5) +M:rotateX(mat, 1.5 * M:sin(walk_val) * walkSmoother, 0, -0.4, 0) +M:rotateY(mat, -0.5 * M:cos(walk * 1.5) * walkSmoother * l, 0, -0.4, 0) +M:rotateZ(mat, 1 * M:cos(walk * 1.5) * walkSmoother * l, 0, -0.4, 0) + +if useAction == "block" and not I:isIn(context.item, Tags:getVanillaTag("swords")) then +M:translate(mat, 0.2 * l, 0, 0.1) +M:rotateY(mat, 20 * l, 0.3 * l, -0.4, 0) +end +if useAction == "block" and context.mainHand then +M:translate(mat, (-xOffset) * l * Easings:easeInOutBack(shieldM) + 0.1 * l * Easings:easeInOutBack(shieldM) * shieldAnimation, 0, 0) +if I:isIn(context.item, Tags:getVanillaTag("swords")) then +M:rotateY(mat, 50 * Easings:easeInOutBack(shieldM) * l * shieldAnimation, 0.3 * l, -0.4, 0) +else +M:rotateY(mat, 70 * Easings:easeInOutBack(shieldM) * l * shieldAnimation, 0.3 * l, -0.4, 0) +end +M:rotateX(mat, 13 * M:clamp(M:sin(shieldM * 4.14), 0, 1) * shieldAnimation, 0.3 * l, -0.4, 0) +M:rotateX(mat, -15 * Easings:easeInOutBack(shieldM) * shieldAnimation, 0.3 * l, -0.4, 0) +end +if useAction == "block" and not context.mainHand then +M:translate(mat, (-xOffset) * l * Easings:easeInOutBack(shieldO) + 0.1 * l * Easings:easeInOutBack(shieldO) * shieldAnimation, 0, 0) +if I:isIn(context.item, Tags:getVanillaTag("swords")) then +M:rotateY(mat, 50 * Easings:easeInOutBack(shieldO) * l * shieldAnimation, 0.3 * l, -0.4, 0) +else +M:rotateY(mat, 70 * Easings:easeInOutBack(shieldO) * l * shieldAnimation, 0.3 * l, -0.4, 0) +end +M:rotateX(mat, 13 * M:clamp(M:sin(shieldO * 4.14), 0, 1) * shieldAnimation, 0.3 * l, -0.4, 0) +M:rotateX(mat, -15 * Easings:easeInOutBack(shieldO) * shieldAnimation, 0.3 * l, -0.4, 0) +end + +local tridentDraw = Easings:easeInOutBack(tridentM) +local tridentD = Easings:easeInOutBack(trident) +local tridentDrawS = Easings:easeOutBack(tridentM) +if useAction == "trident" and context.mainHand then +M:translate(mat, 0, -0.15 * tridentDrawS * tridentAnimation, -0.3 * tridentDrawS * tridentAnimation) +M:rotateX(mat, 65 * tridentDrawS, 0.3 * l * tridentAnimation, -0.4, 0) +M:rotateX(mat, 55 * trident * tridentAnimation, 0.3 * l, -0.4, 0) +M:rotateZ(mat, 10 * l * tridentDrawS * tridentAnimation, 0.3 * l, -0.4, 0) +M:rotateX(mat, 0.3 * M:sin(tridentJ * tridentDrawS * 9.14) * tridentAnimation, 0.3 * l, -0.4, 0) + +--M:rotateZ(mat, 10 * M:sin(tridentM * 3.14), 0.3 * l, -0.4, 0) +end +if not context.mainHand then +if I:isEmpty(context.item) then +M:moveY(mat, 0.6 * tridentDrawS * tridentAnimation) +else +M:moveY(mat, 0.2 * tridentDrawS * tridentAnimation) +end +M:translate(mat, 0.25 * l * tridentDrawS * tridentAnimation, 0, -0.15 * tridentDrawS * tridentAnimation) +--M:moveZ(mat, 0.1525 * M:sin(tridentM * 3.14)) + +M:rotateY(mat, 25 * l * tridentDrawS * tridentAnimation, 0.3 * l, -0.4, 0) +M:rotateX(mat, -30 * tridentDrawS * tridentAnimation, 0.3 * l, -0.4, 0) +--M:rotateY(mat, 10 * M:sin(tridentM * 3.14), 0.3 * l, -0.4, 0) +end + +local tridentDrawO = Easings:easeInOutBack(tridentMO) +local tridentDrawSO = Easings:easeOutBack(tridentMO) +if useAction == "trident" and not context.mainHand then +M:translate(mat, 0, -0.15 * tridentDrawSO * tridentAnimation, -0.3 * tridentDrawSO * tridentAnimation) +M:rotateX(mat, 65 * tridentDrawSO * tridentAnimation, 0.3 * l, -0.4, 0) +M:rotateZ(mat, 10 * l * tridentDrawSO * tridentAnimation, 0.3 * l, -0.4, 0) +M:rotateX(mat, 0.3 * M:sin(tridentJO * tridentDrawSO * 9.14) * tridentAnimation, 0.3 * l, -0.4, 0) +end +if context.mainHand then +if I:isEmpty(context.item) then +M:moveY(mat, 0.6 * tridentDrawSO * tridentAnimation) +else +M:moveY(mat, 0.2 * tridentDrawSO * tridentAnimation) +end +M:translate(mat, 0.25 * l * tridentDrawSO * tridentAnimation, 0, -0.15 * tridentDrawSO * tridentAnimation) +--M:moveZ(mat, 0.1525 * M:sin(tridentM * 3.14)) + +M:rotateY(mat, 25 * l * tridentDrawSO * tridentAnimation, 0.3 * l, -0.4, 0) +M:rotateX(mat, -30 * tridentDrawSO * tridentAnimation, 0.3 * l, -0.4, 0) +--M:rotateY(mat, 10 * M:sin(tridentM * 3.14), 0.3 * l, -0.4, 0) +end +-- M:moveX(mat, 0.1 * yawTiltingAngle); +-- M:moveY(mat, 0.1 * yawTiltingAngle); +-- M:rotateZ(mat, yawTiltingAngle); +-- if(not I:isIn(renderedItem, Tags:getVanillaTag("swords"))) + + +local swingOverall = M:sin(context.swingProgress * 3.14) +local swingRise = M:clamp(M:sin(context.swingProgress * 6.28), 0, 1) +local swingRiseS = M:sin(context.swingProgress * 6.28) +if I:isEmpty(context.item) then +M:translate(mat, -0.15 * l * swing * regularSwing, 0.1 * swingRiseS + 0.33 * swing + 0.05 * swing_rot + 0.14 * swingRise * regularSwing, -0.1 * swingRiseS - 0.4 * swing_hit - 0.2 * swing * regularSwing) +M:rotateX(mat, -10 * swingRise * regularSwing) +M:moveZ(mat, 0.15 * swing_rot * regularSwing) +M:rotateX(mat, -20 * swing * regularSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, -7 * swing_hit, 0.3 * l * regularSwing, -0.4, 0) +M:rotateX(mat, 10 * swing_rot, 0.3 * l * regularSwing, -0.4, 0) +M:rotateZ(mat, 20 * l * swing, 0.3 * l * regularSwing, -0.4, 0) +M:rotateY(mat, 5 * l * swing, 0.3 * l * regularSwing, -0.4, 0) +M:rotateX(mat, -5 * swingRiseS, 0.3 * l * regularSwing, -0.4, 0) +M:rotateZ(mat, 10 * l * swingRiseS, 0.3 * l * regularSwing, -0.4, 0) +M:rotateY(mat, 5 * l * swingRiseS, 0.3 * l * regularSwing, -0.4, 0) +M:rotateY(mat, 15 * l * swing_hit, 0.3 * l * regularSwing, -0.4, 0) +-- M:scale(mat, 1 - 0.1 * swingRise, 1 - 0.1 * swingRise, 1 - 0.1 * swingRise) +elseif I:isIn(context.item, Tags:getVanillaTag("pickaxes")) then +M:moveZ(mat, -0.1 * swing_sword_tilt * pickaxeSwing) +M:moveZ(mat, -0 * swing_hit * pickaxeSwing) +M:moveZ(mat, -0 * swing_hit_second * pickaxeSwing) +M:moveY(mat, 0 * swing_hit * pickaxeSwing) +M:moveY(mat, -0.1 * swingRiseS * pickaxeSwing) +M:moveX(mat, -0.15 * l * swing_hit * pickaxeSwing) +M:moveX(mat, 0.15 * l * swing_hit_second * pickaxeSwing) +M:moveZ(mat, -0.3 * swingOverall * pickaxeSwing) +M:moveY(mat, 0.2 * swingOverall * pickaxeSwing) +M:moveX(mat, -0.15 * l * swingOverall * pickaxeSwing) +M:rotateX(mat, 20 * swing_sword_tilt * pickaxeSwing, 0.3 * l, -0.4, 0) +--M:rotateZ(mat, -20 * l * swing_sword_tilt, 0.3 * l, -0.4, 0) +M:rotateX(mat, 40 * swing_sword_tilt * pickaxeSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, 10 * swingRise * pickaxeSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, 10 * swing_rot * pickaxeSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, -45 * swing_hit * pickaxeSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, -10 * swing_hit_second * pickaxeSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, -95 * swingOverall * pickaxeSwing, 0.3 * l, -0.4, 0) +M:rotateY(mat, 20 * swingOverall * l * pickaxeSwing, 0.3 * l, -0.4, 0) +M:rotateZ(mat, M:clamp(20 * l * M:sin(tilting) * swing, -60, 60) * pickaxeSwing, 0.5 * l, -0.5, 0) +elseif (I:isIn(context.item, Tags:getVanillaTag("swords")) or I:isOf(context.item, Items:get("minecraft:mace")) or useAction == "trident" or useAction == "spear" or I:isIn(context.item, Tags:getVanillaTag("axes"))) then +if swordAttack and swordAttack2 and not context.blockBreaking and (I:isIn(context.item, Tags:getVanillaTag("swords"))) then +M:moveZ(mat, 0.2 * swing_sword_tilt * swordSwing) +M:moveX(mat, -0.5 * l * swing_sword_tilt * swordSwing) +M:moveY(mat, -0.5 * swing_sword_tilt * swordSwing) +M:moveZ(mat, -0.2 * swing_hit * swordSwing) +M:moveZ(mat, -0 * swing_hit_second * swordSwing) +M:moveY(mat, 0 * swing_hit * swordSwing) +M:moveY(mat, -0.1 * swingRiseS * swordSwing) +M:moveX(mat, -0.15 * l * swing_hit * swordSwing) +M:moveX(mat, 0.15 * l * swing_hit_second * swordSwing) +M:moveZ(mat, -0.3 * swingOverall * swordSwing) +M:moveY(mat, 0.2 * swingOverall * swordSwing) +M:moveX(mat, 0.15 * l * swingOverall * swordSwing) +M:rotateX(mat, 20 * swing_sword_tilt * swordSwing, 0.3 * l, -0.4, 0) +M:rotateZ(mat, 70 * l * swing_sword_tilt * swordSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, 30 * swing_sword_tilt * swordSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, 10 * swingRise * swordSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, 10 * swing_rot * swordSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, -25 * swing_hit * swordSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, -10 * swing_hit_second * swordSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, -75 * swingOverall * swordSwing, 0.3 * l, -0.4, 0) +elseif swordAttack and not context.blockBreaking and (I:isIn(context.item, Tags:getVanillaTag("swords"))) or (useAction == "trident" or useAction == "spear") then +if I:isIn(context.item, Tags:getVanillaTag("swords")) then +M:moveZ(mat, -0.2 * swing_sword_tilt * swordSwing) +M:moveZ(mat, -0.15 * swing_hit * swordSwing) +M:moveZ(mat, -0.25 * swing_hit_second * swordSwing) +M:moveY(mat, 0.2 * swing_hit * swordSwing) +M:moveY(mat, -0.1 * swingRiseS * swordSwing) +M:moveX(mat, -0.15 * l * swing_hit * swordSwing) +M:moveX(mat, 0.15 * l * swing_hit_second * swordSwing) +M:moveZ(mat, -0.45 * swingOverall * swordSwing) +M:moveY(mat, 0.2 * swingOverall * swordSwing) +M:moveX(mat, -0.15 * l * swingOverall * swordSwing) +M:rotateX(mat, 20 * swing_sword_tilt * swordSwing, 0.3 * l, -0.4, 0) +M:rotateZ(mat, -70 * l * swing_sword_tilt * swordSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, 30 * swing_sword_tilt * swordSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, 10 * swingRise * swordSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, 10 * swing_rot * swordSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, -55 * swing_hit * swordSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, -15 * swing_hit_second * swordSwing, 0.3 * l, -0.4, 0) +M:rotateX(mat, -95 * swingOverall * swordSwing, 0.3 * l, -0.4, 0) +else + if useAction == "trident" then + M:moveY(mat, -0.5 * swing_sword_tilt * tridentSwing) + M:moveZ(mat, 0.1 * swing_sword_tilt * tridentSwing) + else + M:moveY(mat, 0 * swing_sword_tilt * tridentSwing) + M:moveZ(mat, 0.37 * swing_sword_tilt * tridentSwing) + end +M:moveX(mat, -0.15 * l * swing_sword_tilt * tridentSwing) + + if useAction == "trident" then +M:moveZ(mat, -0.25 * swing_hit_second * tridentSwing) + else +M:moveZ(mat, -0.35 * swing_hit_second * tridentSwing) +M:moveZ(mat, -0.25 * Easings:easeOutQuart(swing) * tridentSwing) + + end +--M:moveZ(mat, -0.05 * swing_rot) +M:moveZ(mat, 0.14 * swingOverall * tridentSwing) +M:moveY(mat, -0.2 * swingOverall * tridentSwing) +M:moveX(mat, -0.1 * l * swing_hit * tridentSwing) +M:moveX(mat, -0.1 * l * swingOverall * tridentSwing) +M:moveX(mat, -0.1 * l * swing_hit_second * tridentSwing) + +if useAction == "trident" then +M:rotateZ(mat, 80 * swing_sword_tilt * l * tridentSwing) +else +M:rotateZ(mat, 20 * swing_sword_tilt * l * tridentSwing) +M:rotateY(mat, 6 * swing_sword_tilt * l * tridentSwing) +end + +M:rotateZ(mat, 5 * swingOverall * l * tridentSwing) +M:rotateX(mat, -40 * swing_sword_tilt * tridentSwing) +M:rotateX(mat, 15 * swing_hit_second * tridentSwing) +M:rotateX(mat, 15 * swing_hit * tridentSwing) +M:rotateX(mat, 20 * swingOverall * tridentSwing) +M:rotateX(mat, 10 * swingOverall * tridentSwing) +M:rotateX(mat, -10 * swingRise * tridentSwing) +M:rotateZ(mat, M:clamp(10 * l * M:sin(tilting * 2) * swing, 0, 30) * tridentSwing) +--M:rotateX(mat, 20 * swingOverall * l) + +M:moveY(mat, -0.1 * M:sin(tilting * 2) * swing * tridentSwing) +end +elseif (not swordAttack or context.blockBreaking) and (I:isIn(context.item, Tags:getVanillaTag("swords"))) or I:isOf(context.item, Items:get("minecraft:mace")) or I:isIn(context.item, Tags:getVanillaTag("axes")) or (context.blockBreaking and useAction == "trident") then +M:moveZ(mat, -0.2 * swing_sword_tilt) +M:moveZ(mat, -0 * swing_hit) +M:moveZ(mat, -0 * swing_hit_second) +M:moveY(mat, 0 * swing_hit) +M:moveY(mat, -0.1 * swingRiseS) +M:moveX(mat, -0.15 * l * swing_hit) +M:moveX(mat, 0.15 * l * swing_hit_second) +M:moveZ(mat, -0.3 * swingOverall) +M:moveY(mat, 0.2 * swingOverall) +M:moveX(mat, -0.15 * l * swingOverall) +M:rotateX(mat, 20 * swing_sword_tilt, 0.3 * l, -0.4, 0) +if I:isIn(context.item, Tags:getVanillaTag("axes")) and context.blockBreaking then +M:rotateZ(mat, -60 * l * swing_sword_tilt, 0.3 * l, -0.4, 0) +else +M:rotateZ(mat, -40 * l * swing_sword_tilt, 0.3 * l, -0.4, 0) +end +M:rotateX(mat, 30 * swing_sword_tilt, 0.3 * l, -0.4, 0) +M:rotateX(mat, 10 * swingRise, 0.3 * l, -0.4, 0) +M:rotateX(mat, 10 * swing_rot, 0.3 * l, -0.4, 0) +M:rotateX(mat, -45 * swing_hit, 0.3 * l, -0.4, 0) +M:rotateX(mat, -10 * swing_hit_second, 0.3 * l, -0.4, 0) +M:rotateX(mat, -95 * swingOverall, 0.3 * l, -0.4, 0) +M:rotateZ(mat, M:clamp(30 * l * M:sin(tilting * 2) * swing, 0, 30)) +M:moveY(mat, -0.2 * M:sin(tilting * 2) * swing) +else +M:moveZ(mat, -0.2 * swing) +M:moveX(mat, -0.15 * l * swing) +M:moveZ(mat, -0.1 * swingRise) +M:moveZ(mat, -0.15 * swing_hit) +M:moveY(mat, 0.1 * swing_hit) +M:moveY(mat, -0.3 * swing) +M:rotateX(mat, 20 * swing_rot, 0.3 * l, -0.4, 0) +M:rotateX(mat, -40 * swing_hit, 0.3 * l, -0.4, 0) +M:rotateX(mat, -20 * swing_hit, 0.3 * l, -0.4, 0) +M:rotateX(mat, 5 * swingRise, 0.3 * l, -0.4, 0) +M:rotateZ(mat, -5 * l * swingOverall) +M:rotateY(mat, 15 * l * swingOverall) +if I:isIn(context.item, Tags:getVanillaTag("swords")) then +-- M:moveZ(mat, -0.15 * swing_hit); +M:moveZ(mat, -0.15 * swing_hit_second) +M:moveZ(mat, -0.15 * swingOverall) +-- M:moveZ(mat, -0.15 * swing_sword_tilt); +M:rotateY(mat, -10 * l * swingOverall) +M:rotateX(mat, -25 * swing_hit_second) +M:rotateX(mat, -20 * swingOverall) +M:rotateX(mat, 20 * swing_sword_tilt) +end +if not I:isIn(context.item, Tags:getVanillaTag("swords")) then +M:rotateX(mat, -5 * swingRiseS, 0.3 * l, -0.4, 0) +end +M:rotateZ(mat, 10 * l * swingRiseS, 0.3 * l, -0.4, 0) +M:rotateY(mat, 5 * l * swingRiseS, 0.3 * l, -0.4, 0) +M:rotateZ(mat, M:clamp(30 * l * M:sin(tilting * 2) * swing, 0, 30)) +M:moveY(mat, -0.2 * M:sin(tilting * 2) * swing) +end +-- M:rotateZ(mat, M:clamp(30 * l * M:sin(tilting * 2) * swing, 0, 30)); +-- M:moveY(mat, -0.2 * l * M:sin(tilting * 2) * swing); +elseif I:isIn(context.item, Tags:getVanillaTag("shovels")) then +M:moveY(mat, 0.6 * swing_sword_tilt) +M:moveZ(mat, -0.5 * swing_sword_tilt) +M:moveZ(mat, -0.3 * swingOverall) +M:moveY(mat, -0.3 * swingOverall) +M:moveY(mat, -0.4 * swing_rot) +M:moveZ(mat, 0.1 * swing_rot) +M:moveY(mat, -0.1 * swing_hit_second) +M:rotateX(mat, -130 * swing_sword_tilt) +M:rotateX(mat, 70 * swingOverall) +M:rotateX(mat, 40 * swing_rot) +M:rotateX(mat, 20 * swing_hit_second) +M:rotateX(mat, 20 * swingRise) +M:rotateX(mat, -10 * swingRiseS) +else +M:moveZ(mat, -0.1 * swing) +M:moveX(mat, -0.1 * l * swing) +M:moveZ(mat, -0.1 * swingRise) +M:moveZ(mat, -0.05 * swing_hit) +M:moveY(mat, 0.25 * swing_hit) +M:moveY(mat, -0 * swing) +M:rotateX(mat, 5 * swing_rot, 0.3 * l, -0.4, 0) +M:rotateX(mat, -25 * swing_hit, 0.3 * l, -0.4, 0) +M:rotateX(mat, 5 * swingRise, 0.3 * l, -0.4, 0) +M:rotateZ(mat, -5 * l * swingOverall) +M:rotateY(mat, 15 * l * swingOverall) +M:rotateX(mat, -2 * swingRiseS, 0.3 * l, -0.4, 0) +M:rotateZ(mat, 5 * l * swingRiseS, 0.3 * l, -0.4, 0) +M:rotateY(mat, 5 * l * swingRiseS, 0.3 * l, -0.4, 0) +-- M:rotateZ(mat, M:clamp(30 * l * M:sin(tilting * 2) * swing, 0, 30)); +-- M:moveY(mat, -0.2 * M:sin(tilting * 2) * swing); +end + +if isUsingItem and activeHand == context.hand and useAction == "block" then +if context.mainHand then +M:moveX(mat, 0 - 0.25 * (M:sin(context.equipProgress * context.equipProgress * context.equipProgress) + 4 * M:sin(shieldDisable * shieldDisable * shieldDisable * 3.14)) * l * shieldM * shieldAnimation) +M:rotateZ(mat, 10 * l * (M:sin(context.equipProgress * context.equipProgress * context.equipProgress) + 4 * M:sin(shieldDisable * shieldDisable * shieldDisable * 3.14)) * shieldM * shieldAnimation, 0.3 * l, -0.4, 0) +else +M:moveX(mat, 0 - 0.25 * (M:sin(context.equipProgress * context.equipProgress * context.equipProgress) + 4 * M:sin(shieldDisable * shieldDisable * shieldDisable * 3.14)) * l * shieldO * shieldAnimation) +M:rotateZ(mat, 10 * l * (M:sin(context.equipProgress * context.equipProgress * context.equipProgress) + 4 * M:sin(shieldDisable * shieldDisable * shieldDisable * 3.14)) * shieldO * shieldAnimation, 0.3 * l, -0.4, 0) +end +end +if useAction == "crossbow" and crossBowM + crossBowO == 0 then +M:moveZ(mat, 0 + 0.25 * M:sin(context.equipProgress * context.equipProgress * context.equipProgress) * crossBowAnimation) +M:rotateX(mat, 20 * M:sin(context.equipProgress * context.equipProgress * context.equipProgress) * crossBowAnimation, 0.3 * l, -0.4, 0) +elseif foodCount == 0 and useAction ~= "bow" and useAction ~= "block" and (tridentM == 0 and tridentMO == 0) then +M:moveZ(mat, 0 - 0.25 * M:sin(context.equipProgress * context.equipProgress * context.equipProgress)) +M:rotateX(mat, -20 * M:sin(context.equipProgress * context.equipProgress * context.equipProgress), 0.3 * l, -0.4, 0) +if I:isOf(context.item, Items:get("minecraft:mace")) then +M:moveZ(mat, 0 - 0.25 * M:sin(context.equipProgress * context.equipProgress * context.equipProgress)) +M:rotateZ(mat, 6 * l * M:sin(context.equipProgress * context.equipProgress * context.equipProgress)) +M:rotateX(mat, -10 * M:sin(context.equipProgress * context.equipProgress * context.equipProgress), 0.3 * l, -0.4, 0) +end +if not I:isBlock(context.item) then +M:rotateX(mat, (pitchAngle * 0.35 * swing)) +end +end +local al = 0 +if P:getPitch(player) ~= 0 then +al = 90 / P:getPitch(player) / 2.5 +else +al = 1 +end +if al > 1 then +al = 1 +end +if al < 0 then +al = 1 +end + +-- if(P:isClimbing(player)) then -- Crawling event detection +local multiplier = (I:isLantern(context.item) and 0.2) or 1 +M:moveZ(mat, 0.2 * smoothing * climbAnimation) +M:moveY(mat, -0.2 * M:cos(crawler) * l * al * smoothing * multiplier * climbAnimation) +M:rotateX(mat, -30 * l * M:sin(crawler) * al * smoothing * multiplier * climbAnimation) +M:rotateX(mat, P:getPitch(player) * smoothing * climbAnimation) +M:moveZ(mat, 0.01 * P:getPitch(player) * smoothing * climbAnimation) +M:moveY(mat, 0.003 * P:getPitch(player) * smoothing * climbAnimation) +M:moveX(mat, -0.0025 * l * P:getPitch(player) * smoothing * climbAnimation) +if not I:isEmpty(context.item) then +M:moveX(mat, -0.05 * l * smoothing * climbAnimation) +M:moveZ(mat, -0.2 * smoothing * climbAnimation) +M:moveY(mat, -0.1 * smoothing * climbAnimation) +end +M:moveZ(mat, 0.2 * smoothingCrawl * crawlAnimation) +M:moveZ(mat, -0.2 * l * M:sin(crwl) * smoothingCrawl * al * multiplier * crawlDefaulPos * crawlAnimation) +M:rotateY(mat, 10 * M:sin(crwl) * smoothingCrawl * multiplier * crawlDefaulPos * crawlAnimation) +M:rotateX(mat, M:clamp(20 * l * M:cos(crwl) * smoothingCrawl * multiplier * crawlDefaulPos, 0, 20) * crawlAnimation) +if I:isEmpty(context.item) then +M:moveY(mat, 0.3 * smoothingCrawl * crawlAnimation) +M:moveZ(mat, -0.55 * smoothingCrawl * crawlAnimation) +M:rotateX(mat, -45 * smoothingCrawl * crawlAnimation) +M:rotateZ(mat, M:clamp(16 * M:sin(crwl) * smoothingCrawl * multiplier * crawlDefaulPos, 0, 20) * crawlAnimation, 0.3, -0.4, 0) +end +M:rotateX(mat, P:getPitch(player) * smoothingCrawl * crawlAnimation) +M:rotateX(mat, -7 * smoothingCrawl * crawlAnimation) +M:moveZ(mat, 0.01 * P:getPitch(player) * smoothingCrawl * crawlAnimation) +if I:isEmpty(context.item) then +M:moveZ(mat, 0.005 * P:getPitch(player) * smoothingCrawl * crawlAnimation) +end +M:moveY(mat, 0.003 * P:getPitch(player) * smoothingCrawl * crawlAnimation) +M:moveX(mat, -0.0025 * l * P:getPitch(player) * smoothingCrawl * crawlAnimation) +if not I:isEmpty(context.item) then +M:moveX(mat, -0.1 * l * smoothingCrawl * crawlAnimation) +M:moveZ(mat, -0.2 * smoothingCrawl * crawlAnimation) +M:moveY(mat, -0.1 * smoothingCrawl * crawlAnimation) +end + +local easedBow = Easings:easeInOutBack(bowCount) * bowAnimation +local easedBowO = Easings:easeInOutBack(bowCountO) * bowAnimation +local bowShoot = M:sin(easedBow * 3.14) * M:pow((1-(easedBow / 2)), 6) * 0.2 * bowAnimation + +if bowCount > 0 then +offhand = easedBow == 1 and -0.1 or 1 - easedBow +end +if useAction == "bow" and context.mainHand then +M:moveX(mat, 0.15 * l) +M:moveZ(mat, -0.085) +M:moveX(mat, 0.1 * l * easedBow) +M:moveZ(mat, 0.085 * easedBow) +M:moveZ(mat, -0.1 * easedBow) +M:moveX(mat, -0.2 * l * easedBow) +M:moveY(mat, 0.15 * easedBow) +M:rotateX(mat, 5 * M:sin(easedBow * 3.14), 0.3 * l, -0.4, 0) +M:rotateY(mat, 15 * l, 0.3 * l, -0.4, 0) +M:rotateY(mat, 0 * l * easedBow, 0.3 * l, -0.4, 0) + +M:moveZ(mat, 0.0015 * M:sin(bowWiggle * 15.14) * bowCountSec) +end +if useAction == "bow" and not context.mainHand then +M:moveX(mat, 0.15 * l) +M:moveZ(mat, -0.085) +M:moveX(mat, 0.1 * l * easedBowO) +M:moveZ(mat, 0.085 * easedBowO) +M:moveZ(mat, -0.1 * easedBowO) +M:moveX(mat, -0.2 * l * easedBowO) +M:moveY(mat, 0.15 * easedBowO) +M:rotateX(mat, 5 * M:sin(easedBowO * 3.14), 0.3 * l, -0.4, 0) +M:rotateY(mat, 15 * l, 0.3 * l, -0.4, 0) +M:rotateY(mat, 0 * l * easedBowO, 0.3 * l, -0.4, 0) + +M:moveZ(mat, 0.0015 * M:sin(bowWiggleO * 15.14) * bowCountSecO) +end + +if not context.mainHand and isUsingItem or (not context.mainHand and I:isEmpty(context.item)) then +local easedBowSec = Easings:easeOutBack(bowCountSec) * bowAnimation +M:moveX(mat, (-xOffset - (xOffset / 1.5)) * l * easedBow) +M:moveX(mat, 0.27 * l * easedBow) +if not I:isEmpty(context.item) then +M:moveY(mat, M:sin(easedBow * 1.56 + 3.14)) +end +M:moveZ(mat, -0.65 * easedBow) +M:rotateX(mat, 10 * M:sin(easedBow * 3.14) * l, 0.3 * l, -0.4, 0) + +M:rotateY(mat, 70 * easedBow * l, 0.3 * l, -0.4, 0) +-- if(not I:isEmpty(renderedItem)) then +-- M:rotateY(mat, -15 * easedBowSec * l, 0.3 * l, -0.4, 0) +-- end +M:rotateY(mat, 25 * easedBowSec * l, 0.3 * l, -0.4, 0) +M:rotateY(mat, 0.25 * l * M:sin(bowWiggle * 15.14) * easedBowSec) + +M:rotateY(mat, 25 * easedBow * l, 0.3 * l, -0.4, 0) +M:moveY(mat, -0.5 * M:sin(easedBow * 3.14)) +end +if context.mainHand and isUsingItem or (context.mainHand and I:isEmpty(context.item)) then +local easedBowSecO = Easings:easeOutBack(bowCountSecO) +M:moveX(mat, (-xOffset - (xOffset / 1.5)) * l * easedBowO) +M:moveX(mat, 0.27 * l * easedBowO) +-- if(not I:isEmpty(renderedItem)) then +-- M:moveX(mat, 0.4 * easedBowO) +-- M:moveY(mat, -0.65 * easedBowO) +-- M:rotateX(mat, 40 * easedBowO, 0.3, -0.4, 0) +-- end +if not I:isEmpty(context.item) then +M:moveY(mat, M:sin(easedBowO * 1.56 + 3.14)) +end +M:moveZ(mat, -0.65 * easedBowO) +M:rotateX(mat, 10 * M:sin(easedBowO * 3.14) * l, 0.3 * l, -0.4, 0) +M:rotateY(mat, 70 * easedBowO * l, 0.3 * l, -0.4, 0) +M:rotateY(mat, 25 * easedBowSecO * l, 0.3 * l, -0.4, 0) +M:rotateY(mat, 0.25 * l * M:sin(bowWiggleO * 15.14) * easedBowSecO) + +M:rotateY(mat, 25 * easedBowO * l, 0.3 * l, -0.4, 0) +M:moveY(mat, -0.5 * M:sin(easedBowO * 3.14)) +end + +local easedCrossBowM = Easings:easeOutBack(crossBowM) * crossBowAnimation +local easedCrossBowSecM = Easings:easeOutBack(crossBowSecM) * crossBowAnimation +local easedCrossBowO = Easings:easeOutBack(crossBowO) * crossBowAnimation +local easedCrossBowSecO = Easings:easeOutBack(crossBowSecO) * crossBowAnimation + +if useAction == "crossbow" and context.mainHand then +M:moveY(mat, -0.15 * easedCrossBowM) +M:moveZ(mat, 0.3 * easedCrossBowM) +M:rotateZ(mat, 20 * l * easedCrossBowM, -0.3 * l, -0.4, 0) +M:rotateY(mat, 15 * l * easedCrossBowM, -0.3 * l, -0.4, 0) +end +if not context.mainHand and isUsingItem or (not context.mainHand and I:isEmpty(context.item)) then +M:moveX(mat, (-xOffset - (xOffset / 1.5)) * l * easedCrossBowM) +M:moveX(mat, 0.25 * l * easedCrossBowM) +M:moveZ(mat, -0.1 * easedCrossBowM) +M:moveY(mat, 0.55 * easedCrossBowM) +if not I:isEmpty(context.item) then +M:moveY(mat, M:sin(easedCrossBowM * 1.56 + 3.14)) +end +M:rotateZ(mat, 15 * l * easedCrossBowM, 0.3 * l, -0.4, 0) +M:rotateY(mat, 80 * l * easedCrossBowM, 0.3 * l, -0.4, 0) +M:rotateY(mat, 15 * l * easedCrossBowSecM, 0.3 * l, -0.4, 0) +M:rotateX(mat, -7 * easedCrossBowSecM, 0.3 * l, -0.4, 0) +end + +if useAction == "crossbow" and not context.mainHand then +M:moveY(mat, -0.15 * easedCrossBowO) +M:moveZ(mat, 0.3 * easedCrossBowO) +M:rotateZ(mat, 20 * l * easedCrossBowO, -0.3 * l, -0.4, 0) +M:rotateY(mat, 15 * l * easedCrossBowO, -0.3 * l, -0.4, 0) +end +if context.mainHand and isUsingItem or (context.mainHand and I:isEmpty(context.item)) then +M:moveX(mat, (-xOffset - (xOffset / 1.5)) * l * easedCrossBowO) +M:moveX(mat, 0.25 * l * easedCrossBowO) +M:moveZ(mat, -0.1 * easedCrossBowO) +M:moveY(mat, 0.55 * easedCrossBowO) +if not I:isEmpty(context.item) then +M:moveY(mat, M:sin(easedCrossBowO * 1.56 + 3.14)) +end +M:rotateZ(mat, 15 * l * easedCrossBowO, 0.3 * l, -0.4, 0) +M:rotateY(mat, 80 * l * easedCrossBowO, 0.3 * l, -0.4, 0) +M:rotateY(mat, 15 * l * easedCrossBowSecO, 0.3 * l, -0.4, 0) +M:rotateX(mat, -7 * easedCrossBowO, 0.3 * l, -0.4, 0) +end + +if context.mainHand then +foodCount = foodCount * foodAnimation +foodCountO = foodCountO * foodAnimation +foodCountSecO = foodCountSecO * foodAnimation +foodCountSec = foodCountSec * foodAnimation +local easedFoodCount = foodCount * foodCount +if (useAction == "eat" or useAction == "toot_horn") and context.mainHand then +M:moveZ(mat, 0.155 * easedFoodCount) +M:moveX(mat, 0.135 * l * easedFoodCount) +M:moveY(mat, -0.27 * easedFoodCount) +M:moveY(mat, -0 * drinkCount) +-- M:moveZ(mat, 0.15 * drinkCount) +M:rotateX(mat, 30 * easedFoodCount) +M:rotateX(mat, 20 * drinkCount) +if useAction == "eat" then +M:rotateX(mat, 3 * Easings:easeInOutBack(M:abs(M:sin(foodCountSec * 3))) * easedFoodCount) +M:rotateY(mat, 4 * l * Easings:easeInOutBack(M:abs(M:sin(foodCountSec * 2))) * easedFoodCount) +M:rotateZ(mat, 6 * l * Easings:easeInOutBack(M:abs(M:sin(foodCountSec * 2))) * easedFoodCount) +else +M:rotateX(mat, 2 * Easings:easeInOutSine(M:sin(foodCountSec * 2)) * easedFoodCount) +M:rotateY(mat, 3 * l * Easings:easeInOutSine(M:sin(foodCountSec)) * easedFoodCount) +M:rotateZ(mat, 5 * l * Easings:easeInOutSine(M:sin(foodCountSec)) * easedFoodCount) +end +M:rotateY(mat, 60 * easedFoodCount * l, 0.3 * l, -0.4, 0) +M:rotateX(mat, 25 * M:sin(easedFoodCount * 3.14), 0.3 * l, -0.4, 0) +end +if (useAction == "drink" or I:isEmpty(context.item) or I:isOf(context.item, Items:get("minecraft:glass_bottle"))) and context.mainHand then +M:moveZ(mat, 0.1 * easedFoodCount) +M:moveX(mat, 0.11 * l * easedFoodCount) +M:moveY(mat, -0.5 * easedFoodCount) +M:moveY(mat, -0 * drinkCount) +-- M:moveZ(mat, 0.15 * drinkCount) +M:rotateX(mat, 50 * easedFoodCount) +M:rotateX(mat, 20 * drinkCount) +M:rotateX(mat, 2 * M:sin(foodCountSec * 6) * drinkCount) +M:rotateY(mat, l * 60 * easedFoodCount, 0.3 * l, -0.4, 0) +M:rotateX(mat, 25 * M:sin(easedFoodCount * 3.14), 0.3 * l, -0.4, 0) +end +else +local easedFoodCount = foodCountO * foodCountO +if (useAction == "eat" or useAction == "toot_horn") and not context.mainHand then +M:moveZ(mat, 0.155 * easedFoodCount) +M:moveX(mat, 0.135 * l * easedFoodCount) +M:moveY(mat, -0.27 * easedFoodCount) +M:moveY(mat, -0 * drinkCountO) +-- M:moveZ(mat, 0.15 * drinkCount) +M:rotateX(mat, 30 * easedFoodCount) +M:rotateX(mat, 20 * drinkCountO) +if useAction == "eat" then +M:rotateX(mat, 3 * Easings:easeInOutBack(M:abs(M:sin(foodCountSecO * 3))) * easedFoodCount) +M:rotateY(mat, 4 * l * Easings:easeInOutBack(M:abs(M:sin(foodCountSecO * 2))) * easedFoodCount) +M:rotateZ(mat, 6 * l * Easings:easeInOutBack(M:abs(M:sin(foodCountSecO * 2))) * easedFoodCount) +else +M:rotateX(mat, 2 * Easings:easeInOutSine(M:sin(foodCountSecO * 2)) * easedFoodCount) +M:rotateY(mat, 3 * l * Easings:easeInOutSine(M:sin(foodCountSecO)) * easedFoodCount) +M:rotateZ(mat, 5 * l * Easings:easeInOutSine(M:sin(foodCountSecO)) * easedFoodCount) +end +M:rotateY(mat, 60 * l * easedFoodCount, 0.3 * l, -0.4, 0) +M:rotateX(mat, 25 * M:sin(easedFoodCount * 3.14), 0.3 * l, -0.4, 0) +end +if (useAction == "drink") and not context.mainHand then +M:moveZ(mat, 0.1 * easedFoodCount) +M:moveX(mat, 0.11 * l * easedFoodCount) +M:moveY(mat, -0.5 * easedFoodCount) +M:moveY(mat, -0 * drinkCountO) +-- M:moveZ(mat, 0.15 * drinkCount) +M:rotateX(mat, 50 * easedFoodCount) +M:rotateX(mat, 20 * drinkCountO) +M:rotateX(mat, 2 * M:sin(foodCountSecO * 6) * drinkCountO) +M:rotateY(mat, 60 * l * easedFoodCount, 0.3 * l, -0.4, 0) +M:rotateX(mat, 25 * M:sin(easedFoodCount * 3.14), 0.3 * l, -0.4, 0) +end +end + +local bsc = Easings:easeInOutBack(brushCounter) +local bscO = Easings:easeInOutBack(brushCounterO) +if useAction == "brush" and context.mainHand then +M:moveZ(mat, -0.2 * bsc) +M:moveX(mat, -0.2 * l * bsc) +M:moveY(mat, -0.3 * bsc) +M:moveX(mat, -0.2 * l * M:sin(foodCountSec * 4.14) * bsc) +M:moveY(mat, -0.3 * M:sin(foodCountSec * 4.14) * bsc) +M:rotateX(mat, 10 * M:sin(bsc * 3.14)) +M:rotateY(mat, 20 * l * bsc) +M:rotateY(mat, 10 * l * M:sin(foodCountSec * 4.14) * bsc) +M:rotateZ(mat, 30 * l * bsc) +M:rotateZ(mat, 30 * l * M:sin(foodCountSec * 4.14) * bsc) +end +if useAction == "brush" and not context.mainHand then +M:moveZ(mat, -0.2 * bscO) +M:moveX(mat, -0.2 * l * bscO) +M:moveY(mat, -0.3 * bscO) +M:moveX(mat, -0.2 * l * M:sin(foodCountSecO * 4.14) * bscO) +M:moveY(mat, -0.3 * M:sin(foodCountSecO * 4.14) * bscO) +M:rotateX(mat, 10 * M:sin(bscO * 3.14)) +M:rotateY(mat, 20 * l * bscO) +M:rotateY(mat, 10 * l * M:sin(foodCountSecO * 4.14) * bscO) +M:rotateZ(mat, 30 * l * bscO) +M:rotateZ(mat, 30 * l * M:sin(foodCountSecO * 4.14) * bscO) +end +if I:isIn(context.item, Tags:getVanillaTag("doors")) then +M:moveX(mat, 0.2 * l) +M:rotateX(mat, 6, 0.3 * l, -0.4, 0) +M:rotateY(mat, 20 * l, 0.3 * l, -0.4, 0) +end + +if P:isItemCoolingDown(context.item, player) and useAction == 'block' then +shieldDisable = shieldDisable + 0.04 * context.deltaTime * 30 +elseif useAction == "block" then +shieldDisable = shieldDisable - 0.06 * context.deltaTime * 30 +end +shieldDisable = M:clamp(shieldDisable, 0, 1) + +local easedDisable = shieldDisable * shieldDisable +if useAction == "block" then +M:moveZ(mat, -0.4 * easedDisable) +M:moveY(mat, 0.15 * easedDisable) +M:moveX(mat, -0.1 * l * easedDisable) +M:rotateX(mat, -30 * easedDisable) +M:rotateX(mat, -10 * M:sin(easedDisable * 3.14)) +M:rotateY(mat, -20 * l * easedDisable) +M:rotateZ(mat, -6 * l * easedDisable) +end + +prevSwingM = context.swingMHand + +local sinalFoodSpeed = M:sin(M:clamp(foodCount, 0.80041, 1) * 3.14 * 5) * 0.45 +foodSpeed = foodSpeed + sinalFoodSpeed * context.deltaTime * 30 +foodSpeed = foodSpeed * M:pow(0.8, context.deltaTime * 30) +local foodCamera = ((0.25 * M:sin(foodCountSec * 3) * foodCount) + (0.25 * M:sin(foodCountSecO * 3) * foodCountO) + (foodSpeed * 1.5)) +local drinkCamera = (0.25 * M:sin(foodCountSec * 3) * drinkCount + (drinkCount * drinkCount * 2.75)) + (0.25 * M:sin(foodCountSecO * 3) * drinkCountO + (drinkCountO * drinkCountO * 2.75)) +-- C.setCamRot(foodCamera + drinkCamera, 0, 0); +-- C.setCamRot((-0.8 * walkSmoother) + fall + ptAngle * 0.02 + (0.2 * M:sin(foodCountSecO * 3) * drinkCountO + (drinkCountO * 4)) + (0.2 * M:sin(foodCountSec * 3) * drinkCount + (drinkCount * 4)) + foodCamera, 0, (ywAngle * 0.08) + (0.2 * M:cos(foodCountSecO * 4) * drinkCountO + (drinkCountO * 4)) + (0.2 * M:cos(foodCountSec * 4) * drinkCount + foodCamera)) +-- C.setCamPos(0.002 * ywAngle * walkSmoother, 0.05 * math.abs(M:pow(M:sin(walk * 0.8), 3)) * walkSmoother, 0) + +-- local switchAnimationVariable = Easings:easeInBack(M:sin(M:clamp(mainHandSwitch,0.09723, 0.60632) * 3.24 * 1.65 - 0.1)); +-- if(I:isIn(renderedItem, Tags:getVanillaTag("bundles"))) then +-- M:rotateX(mat, 10 * switchAnimationVariable); +-- end + +local musicDiscHandTilt +if mainHandSwitch < 0.65245 then +musicDiscHandTilt = M:sin(M:clamp(mainHandSwitch, 0, 0.16675) * 3.14 * 3) +else +musicDiscHandTilt = M:sin(M:clamp(mainHandSwitch, 0.65245, 1) * 4.4 - 1.3) +end +local musicDiscHandJump = M:sin(M:clamp(mainHandSwitch, 0.52459, 0.85809) * 3.14 * 3 - 1.8) +-- if(I:isIn(renderedItem, ConventionalItemTags.MUSIC_DISCS)) then +-- M:rotateX(mat, 45 * musicDiscHandTilt); +-- end + +if I:isEmpty(context.item) and drinkCount > 0 then +M:rotateZ(mat, -6 * l) +M:moveY(mat, -0.35) +-- M:moveZ(mat, -0.2); +end + +local easedMapTransition = Easings:easeInOutBack(mapTransition) +local easedMapSmoother = Easings:easeInOutBack(mapSmoother) +local easedMapZoomer = Easings:easeOutBack(mapZoomer) + +if I:isOf(context.item, Items:get("minecraft:filled_map")) then --[[ and context.mainHand and I:isEmpty(P:getOffhandItem(player))]] +M:moveX(mat, (0.3 - (0.1 * easedMapZoomer)) * l * easedMapSmoother) +M:moveY(mat, 0.18 * easedMapSmoother) +M:moveZ(mat, 0.12 * easedMapZoomer * easedMapSmoother) +M:rotateX(mat, M:clamp(P:getPitch(player), 0, 50) * easedMapSmoother) +M:rotateX(mat, -40 * easedMapSmoother) +M:rotateY(mat, (40 + (30 * easedMapZoomer)) * l * easedMapSmoother, 0.3 * l, -0.4, 0) +end + +if I:isOf(context.item, Items:get("minecraft:filled_map")) then +local smoother = 1 - easedMapSmoother +M:moveX(mat, 0.1 * l * smoother) +M:moveY(mat, -0.35 * smoother) +M:moveZ(mat, 0.22 * smoother) +M:rotateX(mat, 24 * smoother) +M:rotateY(mat, 10 * l * smoother) +end + +if useAction == "crossbow" then +M:moveX(mat, 0.1 * l) +M:moveZ(mat, 0.2) +M:rotateX(mat, -5, 0.3 * l, -0.4, 0) +M:rotateY(mat, 20 * l, 0.3 * l, -0.4, 0) +end + +if KeyBindManager:isKeyPressed(${inspectKeybind} ~= 0 and ${inspectKeybind} or 67) then +inspectionCounter = inspectionCounter + 0.04 * context.deltaTime * 30 +else +inspectionCounter = inspectionCounter - 0.04 * context.deltaTime * 30 +end +inspectionCounter = M:clamp(inspectionCounter, 0, 1) + +if (I:isIn(context.item, Tags:getVanillaTag("swords")) or I:isIn(context.item, Tags:getVanillaTag("pickaxes")) or I:isIn(context.item, Tags:getVanillaTag("axes")) or useAction == "trident") and context.mainHand then +M:moveX(mat, 0.35 * l * Easings:easeInOutBack(inspectionCounter)) +M:moveZ(mat, -0.15 * Easings:easeInOutBack(inspectionCounter)) +M:rotateY(mat, 40 * Easings:easeInOutBack(inspectionCounter) * l, 0.3 * l, -0.4, 0) +M:rotateX(mat, 13 * M:clamp(M:sin(inspectionCounter * 4.14), 0, 1), 0.3 * l, -0.4, 0) +-- M:rotateX(mat, -15 * Easings:easeInOutBack(inspectionCounter), 0.3 * l, -0.4, 0); +M:rotateX(mat, 10 * M:sin(Easings:easeInOutBack(inspectionSpin) * 6.28)) +end + +if I:isOf(context.item, Items:get("minecraft:mace")) and context.mainHand then +M:moveX(mat, 0.35 * l * Easings:easeInOutBack(inspectionCounter)) +M:moveZ(mat, -0.15 * Easings:easeInOutBack(inspectionCounter)) +M:rotateY(mat, 40 * Easings:easeInOutBack(inspectionCounter) * l, 0.3 * l, -0.4, 0) +M:rotateX(mat, 17 * M:clamp(M:sin(inspectionCounter * 3.14), 0, 1), 0.3 * l, -0.4, 0) +-- M:rotateX(mat, -15 * Easings:easeInOutBack(inspectionCounter), 0.3 * l, -0.4, 0); +end + + + + + +if context.mainHand then +isChargedM = I:isChargedCrossbow(context.item) +else +isChargedO = I:isChargedCrossbow(context.item) +end + + +if P:isUsingRiptide(player) and useAction == "trident" and activeHand == context.hand then +if context.mainHand then +riptideCounter = riptideCounter + 0.08 * context.deltaTime * 30 +else +riptideCounterO = riptideCounterO + 0.08 * context.deltaTime * 30 +end +else +if context.mainHand then +riptideCounter = riptideCounter - 0.025 * context.deltaTime * 30 +else +riptideCounterO = riptideCounterO - 0.025 * context.deltaTime * 30 +end +end + + +riptideCounter = M:clamp(riptideCounter, 0, 1) +riptideCounterO = M:clamp(riptideCounterO, 0, 1) +riptideCounter = riptideCounter * M:pow(0.95, context.deltaTime * 30) * (1 - M:clamp(context.swingProgress * 4, 0, 1)) * (1 - M:clamp(tridentM * 6, 0, 1)) +riptideCounterO = riptideCounterO * M:pow(0.95, context.deltaTime * 30) * (1 - M:clamp(context.swingProgress * 4, 0, 1)) * M:clamp(1 - tridentMO * 6, 0, 1) + + +if useAction == "trident" then +local easedRiptide = context.mainHand and Easings:easeOutBack(riptideCounter) or Easings:easeOutBack(riptideCounterO) +local rp = context.mainHand and M:clamp(riptideCounter * 3, 0, 1) or M:clamp(riptideCounterO * 3, 0, 1) +M:moveZ(mat, 0.2 * easedRiptide * rp) +M:moveX(mat, -1.25 * l * easedRiptide * rp) +M:moveY(mat, -0 * easedRiptide * rp) +M:rotateY(mat, 5 * l * easedRiptide * rp) +M:rotateX(mat, -30 * Easings:easeOutBack(M:sin(context.mainHand and riptideCounter or riptideCounterO * 3.14)) * rp) +M:rotateZ(mat, 70 * Easings:easeOutBack(M:sin(context.mainHand and riptideCounter or riptideCounterO * 3.14)) * rp * l, 0.7 * l, 0.7, 0) +end + + +local sc = context.mainHand and spearCounterM or spearCounterO +local scd = context.mainHand and canDismountCounter or canDismountCounterO +local sck = context.mainHand and canKnockbackCounter or canKnockbackCounterO +local sw = context.mainHand and mainHandSwitch or offHandSwitch +local hic = context.mainHand and Easings:easeInOutSine(hitImpactCounter) or hitImpactCounterO +if useAction == "spear" then + M:moveZ(mat, -0.25) + M:moveY(mat, 0.1) + M:rotateX(mat, -20) +M:moveZ(mat, 0.75 * M:sin(Easings:easeInOutSine(hic) * 3.14)) + +M:moveZ(mat, -0.25 * Easings:easeInOutBack(sc)) +M:moveZ(mat, 0.25 * Easings:easeOutBack(sck) * sck) + +M:rotateY(mat, 8 * Easings:easeInOutBack(sc) * l) + +M:rotateX(mat, 40 * M:sin(sc * 3.14), 0, -0.2, -0.35) +M:rotateX(mat, -8 * Easings:easeInOutBack(scd), 0.5 * l, -0.5, -0.35) +M:rotateY(mat, -1.5 * M:sin(a * 1.5) * Easings:easeInOutBack(scd) * l, 0.5 * l, -0.5, -0) +M:rotateX(mat, -1.5 * M:sin(a * 3) * Easings:easeInOutBack(scd), 0.5 * l, -0.5, -0) + +M:rotateX(mat, 5 * M:sin(hic * 3.14)) +--M:rotateZ(mat, 10 * M:sin(hic * 3.14) * l, 0.5 * l, -0.5, -0.35) + + +M:rotateZ(mat, -30 * Easings:easeOutBack(sck) * sck * l, 0.5 * l, -0.5, -0.35) +--M:rotateX(mat, -10 * Easings:easeOutBack(canKnockbackCounter) * canKnockbackCounter * l, 0.5 * l, -0.5, -0.35) + + M:rotateZ(mat, -8 * M:sin(M:clamp(sw * 2, 0, 1) * 6.28) * M:sin(M:clamp(sw * 2, 0, 1) * 6.28) * l, 0.5 * l, -0.5, 0) + M:rotateX(mat, 20 * M:sin(M:clamp(sw * 2, 0, 1) * 3.14) * M:sin(M:clamp(sw * 2, 0, 1) * 3.14), 0.5 * l, -0.5, 0) +end + +-- if(useAction == "spear") then +-- debugger:out("hitImpact: " .. tostring(I:getSpearData(context.item).hitImpact)) +-- end \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/holdmyitems/hand_pose.lua.rpo b/src/main/resources/assets/minecraft/holdmyitems/hand_pose.lua.rpo new file mode 100644 index 0000000..4e44d36 --- /dev/null +++ b/src/main/resources/assets/minecraft/holdmyitems/hand_pose.lua.rpo @@ -0,0 +1,8 @@ +{ + expansions: { + zOffset: "hmi.zOffset", + xOffset: "hmi.xOffset", + yOffset: "hmi.yOffset", + inspectKeybind: "hmi.inspectKeybind" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/holdmyitems/hand_relative_pose.lua b/src/main/resources/assets/minecraft/holdmyitems/hand_relative_pose.lua new file mode 100644 index 0000000..74bba73 --- /dev/null +++ b/src/main/resources/assets/minecraft/holdmyitems/hand_relative_pose.lua @@ -0,0 +1,36 @@ +-- hand_relative_pose.lua + +local l = (context.bl and 1) or -1 + + +global.foodCount = 0.0; +global.mainHandSwitch = 0.0; +global.offHandSwitch = 0.0; +global.drinkCount = 0.0; + +if I:isEmpty(context.item) and drinkCount > 0 then + M:moveX(context.matrices, 1.5 * l) + M:moveY(context.matrices, -0.3) + M:moveZ(context.matrices, -0.47) + M:rotateX(context.matrices, 15, 0.5 * l, 0.5, 0.5) + M:rotateY(context.matrices, 35 * l, 0.5 * l, 0.5, 0.5) + M:rotateZ(context.matrices, -65 * l, 0.5 * l, 0.5, 0.5) + M:scale(context.matrices, 0.9, 0.9, 0.9) +end + +local switch_val = (context.mainHand and mainHandSwitch) or offHandSwitch +local switchAnimationVariable = Easings:easeInBack(M:sin(M:clamp(switch_val, 0.09723, 0.60632) * 3.24 * 1.65 - 0.1)) + +if (I:isIn(context.item, Tags:getVanillaTag("bundles")) or I:isOf(context.item, Items:get("minecraft:ender_pearl")) or I:isOf(context.item, Items:get("minecraft:ender_eye")) or I:isThrowable(context.item) or I:isIn(context.item, Tags:getFabricTag("music_discs")) or I:isIn(context.item, Tags:getFabricTag("nuggets")) or I:isIn(context.item, Tags:getVanillaTag("skulls"))) and I:getUseAction(context.item) ~= "trident" then + M:rotateX(context.matrices, 10 * switchAnimationVariable) + M:rotateZ(context.matrices, 6 * switchAnimationVariable) +end + +local musicDiscHandTilt +if mainHandSwitch < 0.65245 then + musicDiscHandTilt = M:sin(M:clamp(mainHandSwitch, 0, 0.16675) * 3.14 * 3) +else + musicDiscHandTilt = M:sin(M:clamp(mainHandSwitch, 0.65245, 1) * 4.4 - 1.3) +end + +local musicDiscHandJump = M:sin(M:clamp(mainHandSwitch, 0.52459, 0.85809) * 3.14 * 3 - 1.8) diff --git a/src/main/resources/assets/minecraft/holdmyitems/item_model.lua b/src/main/resources/assets/minecraft/holdmyitems/item_model.lua new file mode 100644 index 0000000..5e32ae9 --- /dev/null +++ b/src/main/resources/assets/minecraft/holdmyitems/item_model.lua @@ -0,0 +1,367 @@ +global.yawAngle = 0; +global.yawAngleO = 0; +global.pitchAngle = 0; +global.pitchAngleO = 0; +global.fall = 0; +global.a = 0; +global.walk = 0; +global.walkSmoother = 0; +global.fall_f = 0; +global.jiggle_f = 0; +global.mainHandSwitch = 0; +global.offHandSwitch = 0; +global.jiggle_i = 0.0; + +global.axolotl_anim = 1; +global.pufferfish_anim = 1; +global.salmon_anim = 1; +global.cod_anim = 1; +global.tadpole_anim = 1; +global.liquid_anim = 1; +global.tropical_fish_anim = 1; +global.chest_boat_anim = 1; +-- +-- +-- +local l = data.bl and 1 or -1 +jiggle_i = jiggle_i + P:getYSpeed(data.player) * data.deltaTime * 30 +if not P:isOnGround(data.player) and P:getYSpeed(data.player) * -1 > 0.55 then + fall_f = fall_f + 0.045 * data.deltaTime * 30; +else + fall_f = fall_f - 0.07 * data.deltaTime * 30 +end +fall_f = M:clamp(fall_f, 0, 1) +local wf = M:clamp(fall * 0.4, 0, 2) * (fall_f * fall_f * fall_f) +local l = data.bl and 1 or -1 +-- +local ywAngle = data.mainHand and yawAngle or yawAngleO +local ptAngle = data.mainHand and pitchAngle or pitchAngleO +if I:isOf(data.item, Items:get("minecraft:water_bucket")) or I:isOf(data.item, Items:get("minecraft:lava_bucket")) or I:isOf(data.item, Items:get("minecraft:milk_bucket")) then + animator:rotateX(0, 1, M:clamp(-ptAngle * 0.6, -5, 5) * liquid_anim, 0.5, 0.7, 0.5) + animator:rotateZ(0, 1, M:clamp(ywAngle * 0.6, -5, 5) * liquid_anim, 0.5, 0.7, 0.5) +end + +if I:isOf(data.item, Items:get("minecraft:axolotl_bucket")) then + -- Head parts + animator:moveY(0, 11, fall * 0.02 * axolotl_anim) + animator:moveY(0, 11, 0.02 * math.sin(a * -1.5) * (1-walkSmoother) * axolotl_anim) + animator:moveY(0, 11, 0.08 * Easings:easeInSine(math.abs(math.sin(walk))) * walkSmoother * axolotl_anim) + animator:rotateX(0, 11, M:clamp(20 * fall, -20, 20) * axolotl_anim, 0.5, 0.7, 0.5) + animator:rotateZ(0, 11, 2 * math.sin(a) * axolotl_anim, 0.5, 0.7, 0.5) + animator:rotateX(0, 11, ptAngle * 0.3 * axolotl_anim, 0.5, 0.7, 0.5) + animator:rotateZ(0, 11, -ywAngle * 0.3 * axolotl_anim, 0.5, 0.7, 0.5) + + -- animator:rotateZ(0, 11, 6 * math.sin(M:clamp(fall, 0, 4.75) * 4) * wf , 0.5, 0.9, 0.5) + -- animator:rotateY(0, 11, -15 * math.sin(M:clamp(fall, 0, 4.75) * 4) * wf , 0.5, 0.7, 0.5) + + -- animator:rotateZ(0, 11, 7 * math.sin(a * 1) * M:pow(math.sin(a * 0.1), 20), 0.5, 0.7, 0.5) + -- animator:rotateY(0, 11, 30 * math.sin(a * 1) * M:pow(math.sin(a * 0.1), 20), 0.5, 0.5, 0.5) + -- Body parts + animator:moveY(12, 19, 0.02 * math.sin(a * -1.5) * (1-walkSmoother) * axolotl_anim) + animator:moveY(12, 19, 0.08 * Easings:easeInSine(math.abs(math.sin(walk))) * walkSmoother * axolotl_anim) + animator:rotateX(12, 19, M:clamp(15 * fall, -20, 20) * axolotl_anim, 0.5, 0.7, 0.5) + animator:rotateZ(12, 19, 1 * math.sin(a) * axolotl_anim, 0.5, 0.7, 0.5) + animator:rotateX(12, 19, ptAngle * 0.15 * axolotl_anim, 0.5, 0.7, 0.5) + animator:rotateZ(12, 19, -ywAngle * 0.15 * axolotl_anim, 0.5, 0.7, 0.5) + -- animator:rotateZ(12, 19, 3.5 * math.sin(a * 1) * M:pow(math.sin(a * 0.1), 20), 0.5, 0.7, 0.5) + + -- animator:rotateY(12, 19, 15 * math.sin(a * 1) * M:pow(math.sin(a * 0.1), 20), 0.5, 0.5, 0.5) + + animator:rotateY(8, 9, 10 * math.sin(a * 10) * M:pow(math.sin(a * 0.4), 30) * axolotl_anim, 0.8, 0.5, 0.4) + animator:rotateY(10, 11, -10 * math.sin(a * 10) * M:pow(math.sin(a * 0.4), 30) * axolotl_anim, 0.3, 0.5, 0.4) + animator:rotateX(20, 21, 80 * wf * axolotl_anim, 0.5, 0.85, 0.3) + animator:rotateZ(20, 21, 15 * wf * axolotl_anim, 0.5, 0.85, 0.3) + animator:rotateX(22, 23, 80 * wf * axolotl_anim, 0.5, 0.85, 0.3) + animator:rotateZ(22, 23, -15 * wf * axolotl_anim, 0.5, 0.85, 0.3) + + animator:moveX(0, 23, fall * 0.02 * axolotl_anim) + animator:moveZ(0, 23, fall * 0.025 * axolotl_anim) + animator:scale(0, 23, 1 - (0.03 * fall) * axolotl_anim, 1 + (0.03 * fall) * axolotl_anim, 1 - (0.03 * fall) * axolotl_anim) + + + -- animator:rotateZ(22, 23, 0.5 * math.sin(jiggle_i * 0.5) * wf * l) + -- animator:rotateX(22, 23, 0.5 * math.sin(jiggle_i * 0.5) * wf * l) + + -- animator:rotateZ(20, 21, 0.5 * math.sin(jiggle_i * 0.5) * wf * l) + -- animator:rotateX(20, 21, 0.5 * math.sin(jiggle_i * 0.5) * wf * l) + +end + +if I:isOf(data.item, Items:get("minecraft:tropical_fish_bucket")) then + --Body parts + animator:moveY(0, 12, fall * 0.1 * tropical_fish_anim) + animator:moveY(0, 12, 0.02 * math.sin(a * -1.5) * (1-walkSmoother) * tropical_fish_anim) + animator:moveY(0, 12, 0.08 * Easings:easeInSine(math.abs(math.sin(walk))) * walkSmoother * tropical_fish_anim) + animator:moveZ(0, 12, 0.1 * tropical_fish_anim) + animator:moveY(0, 12, -0.03 * tropical_fish_anim) + animator:moveY(0, 12, -ywAngle * 0.002 * tropical_fish_anim) + animator:rotateX(0, 12, -ywAngle * tropical_fish_anim , 0.5, 0.5, 0.5) + animator:rotateZ(0, 12, -ptAngle * tropical_fish_anim , 0.5, 0.5 , 0.5) + animator:rotateX(0, 12, 3 * math.sin(a * 3) * (1-walkSmoother) * tropical_fish_anim, 0.5, 0.5, 0.5) + + --Legs? idk the name for those fish thingies + animator:rotateZ(6, 9, 15 * math.sin(a * 3) * tropical_fish_anim, 0.5, 0.5 , 0.5) +end + +if I:isOf(data.item, Items:get("minecraft:cod_bucket")) then + --Body parts + animator:scale(0, 25, 1 - 0.1 * cod_anim, 1 - 0.1 * cod_anim, 1 - 0.1 * cod_anim) + animator:moveY(0, 25, fall * 0.1 * cod_anim) + animator:moveY(0, 25, 0.05 * cod_anim) + animator:moveY(0, 25, 0.02 * math.sin(a * -1.5) * (1-walkSmoother) * cod_anim) + animator:moveY(0, 25, 0.08 * Easings:easeInSine(math.abs(math.sin(walk))) * walkSmoother * cod_anim) + animator:moveZ(0, 25, 0.1 * cod_anim) + animator:moveY(0, 25, -0.03 * cod_anim) + animator:moveY(0, 25, (-ywAngle * 0.002) * cod_anim) + animator:rotateX(0, 25, -ywAngle * 0.6 * cod_anim , 0.5, 0.5, 0.5) + animator:rotateZ(0, 25, -ptAngle * 0.6 * cod_anim , 0.5, 0.5, 0.5) + animator:rotateX(0, 25, 3 * math.sin(a * 1.5) * (1-walkSmoother) * cod_anim, 0.5, 0.5, 0.5) + animator:rotateX(0, 25, fall * -10 * cod_anim, 0.5, 0.5, 0.5) + + --Head parts + animator:moveX(10,21, -0.05 * l * cod_anim) + animator:rotateX(10,21, -ywAngle * 0.2 * cod_anim, 0, 0.6, 0.2) + animator:rotateX(10,21, fall * -5 * cod_anim, 0, 0.6, 0.2) +end +if I:isOf(data.item, Items:get("minecraft:salmon_bucket")) then + animator:scale(0, 52, 1 - 0.15 * salmon_anim, 1 - 0.15 * salmon_anim, 1 - 0.15 * salmon_anim) + animator:moveY(0, 52, fall * 0.1 * salmon_anim) + animator:moveY(0, 52, 0.04 * salmon_anim) + animator:moveY(0, 52, 0.02 * math.sin(a * -1.5) * (1-walkSmoother) * salmon_anim) + animator:moveY(0, 52, 0.08 * Easings:easeInSine(math.abs(math.sin(walk))) * walkSmoother * salmon_anim) + animator:moveZ(0, 52, 0.1 * salmon_anim) + animator:moveY(0, 52, (-ywAngle * 0.002) * salmon_anim ) + animator:rotateX(0, 52, -ywAngle * 0.6 * salmon_anim , 1, 0.5, 0.5) + animator:rotateZ(0, 52, -ptAngle * 0.6 * salmon_anim , 0.5, 0.5, 0.5) + animator:rotateX(0, 52, 3 * math.sin(a * 1.5) * (1-walkSmoother) * salmon_anim , 0.5, 0.5, 0.5) + animator:rotateX(0, 52, fall * -10 * salmon_anim , 0.5, 0.5, 0.5) + + --Head parts + animator:rotateX(0, 5, -ywAngle * 0.2 * salmon_anim , 0, 0.6, 0.25) + animator:rotateX(0, 5, fall * -5 * salmon_anim , 0, 0.6, 0.25) +end + +if I:isOf(data.item, Items:get("minecraft:tadpole_bucket")) then + animator:moveY(0, 7, fall * 0.1 * tadpole_anim) + animator:moveY(0, 7, 0.02 * math.sin(a * -1.5) * (1-walkSmoother) * tadpole_anim) + animator:moveY(0, 7, 0.08 * Easings:easeInSine(math.abs(math.sin(walk))) * walkSmoother * tadpole_anim) + animator:moveZ(0, 7, 0.1 * tadpole_anim) + animator:moveY(0, 7, -0.03 * tadpole_anim) + animator:moveY(0, 7, (-ywAngle * 0.002) * tadpole_anim) + animator:rotateY(0, 7, -ywAngle * 0.6 * tadpole_anim , 0.5, 0.5, 0.5) + animator:rotateX(0, 7, -ptAngle * 0.6 * tadpole_anim , 0.5, 0.5, 0.5) + animator:rotateZ(0, 7, -ywAngle * 0.6 * tadpole_anim , 0.5, 0.5, 0.5) + animator:rotateX(0, 7, 3 * math.sin(a * 3) * (1-walkSmoother) * tadpole_anim, 0.5, 0.5, 0.5) +end + +if I:isOf(data.item, Items:get("minecraft:pufferfish_bucket")) then + --Body parts + animator:moveY(0, 29, fall * 0.1 * pufferfish_anim) + animator:moveY(0, 29, 0.02 * math.sin(a * -1.5) * (1-walkSmoother) * pufferfish_anim) + animator:moveY(0, 29, 0.08 * Easings:easeInSine(math.abs(math.sin(walk))) * walkSmoother * pufferfish_anim) + animator:moveZ(0, 29, 0.1 * pufferfish_anim) + animator:moveY(0, 29, -0.03 * pufferfish_anim) + animator:moveY(0, 29, (-ywAngle * 0.002) * pufferfish_anim) + animator:rotateX(0, 29, M:abs(-ywAngle) * 0.2 * pufferfish_anim, 0.5, 0.5, 0.5) + animator:rotateX(0, 29, -ptAngle * 0.2 * pufferfish_anim, 0.5, 0.5, 0.5) + animator:rotateZ(0, 29, -ywAngle * 0.2 * pufferfish_anim, 1, 0.5, 0.5) + animator:rotateX(0, 29, 1 * math.sin(a * 3) * (1-walkSmoother) * pufferfish_anim, 0.5, 0.5, 0.5) + + --Again legs? or hands? wtf is a word for those things + --OH FUCK, it's fins!. NVM, let this shit be here as an easter egg + animator:rotateZ(6, 7, 10 * math.sin(a * 10) * M:pow(math.sin(a * 0.4), 30) * pufferfish_anim, 0.5, 0.5, 0.5) + animator:rotateZ(8, 9, -10 * math.sin(a * 10) * M:pow(math.sin(a * 0.4), 30) * pufferfish_anim, 0.5, 0.5, 0.5) +end + +if I:isIn(data.item, Tags:getVanillaTag("chest_boats")) then + animator:moveY(0, 15, M:clamp(fall * 0.1, 0, 1) * chest_boat_anim) + --animator:moveY(0, 15, 0.08 * Easings:easeInSine(math.abs(math.sin(walk))) * walkSmoother) + animator:rotateX(0, 11, M:clamp(ptAngle * 1.35, 0, 999) * chest_boat_anim , 0.5, 0.5, 0.8) + --animator:rotateX(0, 15, ptAngle * 0.25, 0.5, 0.5, 0.5) + animator:rotateZ(0, 15, -ywAngle * 0.12 * chest_boat_anim, 0.5, 0, 0.5) + +end + +------ BODY--------------------------------------------------------------------------------- +--if I:isOf(renderedItem, Items:get("minecraft:pufferfish_bucket")) and index >= 0 and index <= 29 then +-- +-- if index >= 6 and index <= 7 then +-- M:rotateZ(matrices, 10 * math.sin(a * 6), 0.6, 0.75 , 0.3) +-- end +-- if index >= 8 and index <= 9 then +-- M:rotateZ(matrices, -10 * math.sin(a * 6), 0.6, 0.75 , 0.3) +-- end +--end +-- +-- +---- if I:isIn(renderedItem, Tags:getVanillaTag("saplings")) and index >= 0 and index <= 3 and data.mainHand then +---- M:rotateX(matrices, -ywAngle * 0.6, -0.4, 0 , 0.4) +---- M:rotateZ(matrices, ptAngle * 0.6, 0.4 ,0, -0.4) +---- end +-- +---- if I:isIn(renderedItem, Tags:getVanillaTag("saplings")) and index >= 0 and index <= 3 and not data.mainHand then +---- M:rotateZ(matrices, ywAngle * 0.6, 0.4 ,0, -0.4) +---- M:rotateX(matrices, -ptAngle * 0.6, -0.4, 0 , 0.4) +---- end +-- +---- if I:isOf(renderedItem, Items:get("minecraft:mangrove_propagule")) and index >= 4 and index <= 7 and data.mainHand then +---- M:rotateX(matrices, -ywAngle * 0.6, -0.4, 0 , 0.4) +---- M:rotateZ(matrices, ptAngle * 0.6, 0.4 ,0, -0.4) +---- end +---- if I:isOf(renderedItem, Items:get("minecraft:mangrove_propagule")) and index >= 4 and index <= 7 and not data.mainHand then +---- M:rotateZ(matrices, ywAngle * 0.6, 0.4 ,0, -0.4) +---- M:rotateX(matrices, -ptAngle * 0.6, -0.4, 0 , 0.4) +---- end +-- +---- if (I:isOf(renderedItem, Items:get("minecraft:short_grass")) or I:isOf(renderedItem, Items:get("minecraft:short_dry_grass")) or I:isOf(renderedItem, Items:get("minecraft:tall_dry_grass"))) and index >= 0 and index <= 3 and data.mainHand then +---- M:rotateX(matrices, -ywAngle * 0.45, -0.4, 0 , 0.4) +---- M:rotateZ(matrices, ptAngle * 0.45, 0.4 ,0, -0.4) +---- end +-- +---- if (I:isOf(renderedItem, Items:get("minecraft:short_grass")) or I:isOf(renderedItem, Items:get("minecraft:short_dry_grass")) or I:isOf(renderedItem, Items:get("minecraft:tall_dry_grass")) ) and index >= 0 and index <= 3 and not data.mainHand then +---- M:rotateZ(matrices, ywAngle * 0.6, 0.4 ,0, -0.4) +---- M:rotateX(matrices, -ptAngle * 0.45, -0.4, 0 , 0.4) +---- end +-- +---- if I:isOf(renderedItem, Items:get("minecraft:tall_grass")) and index >= 0 and index <= 6 and data.mainHand then +---- M:rotateX(matrices, -ywAngle * 0.6, -0.4, 0 , 0.4) +---- M:rotateZ(matrices, ptAngle * 0.6, 0.4 ,0, -0.4) +---- if index >= 0 and index <= 3 then +---- M:rotateX(matrices, -ywAngle * 0.2, -0.45, 0 , 0.45) +---- M:rotateZ(matrices, ptAngle * 0.2, 0.45 ,0, -0.45) +---- end +---- end +---- if I:isOf(renderedItem, Items:get("minecraft:tall_grass")) and index >= 0 and index <= 6 and not data.mainHand then +---- M:rotateZ(matrices, ywAngle * 0.6, 0.4 ,0, -0.4) +---- M:rotateX(matrices, -ptAngle * 0.6, -0.4, 0 , 0.4) +---- if index >= 0 and index <= 3 then +---- M:rotateZ(matrices, ywAngle * 0.2, 0.45 ,0, -0.45) +---- M:rotateX(matrices, -ptAngle * 0.2, -0.45, 0 , 0.45) +---- end +---- end +-- +-- +-- +-- +--if (I:isOf(renderedItem, Items:get("minecraft:oak_chest_boat")) or +--I:isOf(renderedItem, Items:get("minecraft:spruce_chest_boat")) or +--I:isOf(renderedItem, Items:get("minecraft:dark_oak_chest_boat")) or +--I:isOf(renderedItem, Items:get("minecraft:pale_oak_chest_boat")) or +--I:isOf(renderedItem, Items:get("minecraft:acacia_chest_boat")) or +--I:isOf(renderedItem, Items:get("minecraft:jungle_chest_boat")) or +--I:isOf(renderedItem, Items:get("minecraft:birch_chest_boat")) or +--I:isOf(renderedItem, Items:get("minecraft:bamboo_chest_raft")) +--)then +-- if not I:isOf(renderedItem, Items:get("minecraft:bamboo_chest_raft")) and index >= 60 and index <= 71 then +-- M:rotateX(matrices, M:clamp(ptAngle, 0, 999), -0.4, 0.4 , 0.7) +-- elseif I:isOf(renderedItem, Items:get("minecraft:bamboo_chest_raft")) and index >= 42 and index <= 53 then +-- M:rotateX(matrices, M:clamp(ptAngle, 0, 999), -0.4, 0.4 , 0.7) +-- end +-- if index >= 0 and index <= 11 then +-- M:moveY(matrices, ptAngle * -0.003) +-- M:rotateZ(matrices, M:clamp(ptAngle, 0, 999), 0.4, 0.4 , -0.4) +-- end +-- if index >= 12 and index <= 23 then +-- M:moveY(matrices, ptAngle * 0.003) +-- M:rotateZ(matrices, M:clamp(-ptAngle, 0, 999), 0.4, 0.4 , -0.4) +-- end +--end +-- +-- +------ HEAD--------------------------------------------------------------------------------- +--if I:isOf(renderedItem, Items:get("minecraft:axolotl_bucket")) and index >= 0 and index <= 11 then +-- M:moveY(matrices, fall * 0.02) +-- M:moveY(matrices, 0.02 * math.sin(a * -1.5) * (1-walkSmoother)) +-- M:moveY(matrices, 0.08 * Easings:easeInSine(math.abs(math.sin(walk))) * walkSmoother) +-- +-- M:rotateX(matrices, M:clamp(20 * fall, -20, 20), -0.4, 0.45 , 0.3) +-- M:rotateZ(matrices, 2 * math.sin(a), 0.4, 0.45 , -0.3) +-- -- M:rotateY(matrices, M:clamp(80 * math.sin(a * 0.8), -10, 10) * (1-walkSmoother), 0.4, 0.45 , 0.3) +-- -- M:rotateY(matrices, 2 * math.sin(a) * (1-walkSmoother), 0.4, 0.45 , 0.3) +-- M:rotateX(matrices, ptAngle * 0.3 , -0.4, 0.55 , 0.3) +-- M:rotateZ(matrices, -ywAngle * 0.3 , 0.4, 0.65 , -0.3) +--end +-------------------------------------------------------------------------------------------- +-- +------ BODY--------------------------------------------------------------------------------- +--if I:isOf(renderedItem, Items:get("minecraft:axolotl_bucket")) and index >= 12 and index <= 19 then +-- M:moveY(matrices, fall * 0.02) +-- M:moveY(matrices, 0.02 * math.sin(a * -1.5) * (1-walkSmoother)) +-- M:moveY(matrices, 0.08 * Easings:easeInSine(math.abs(math.sin(walk))) * walkSmoother) +-- +-- M:rotateX(matrices, M:clamp(15 * fall, -20, 20), -0.4, 0.45 , 0.3) +-- M:rotateZ(matrices, 1 * math.sin(a), 0.4, 0.45 , -0.3) +-- +-- M:rotateX(matrices, ptAngle * 0.15 , -0.4, 0.55 , 0.3) +-- M:rotateZ(matrices, -ywAngle * 0.15 , 0.4, 0.65 , -0.3) +--end +-------------------------------------------------------------------------------------------- +-- +-- +-- +------ BODY--------------------------------------------------------------------------------- +--if I:isOf(renderedItem, Items:get("minecraft:tropical_fish_bucket")) and index >= 0 and index <= 12 then +-- M:moveY(matrices, fall * 0.1) +-- M:moveY(matrices, 0.02 * math.sin(a * -1.5) * (1-walkSmoother)) +-- M:moveY(matrices, 0.08 * Easings:easeInSine(math.abs(math.sin(walk))) * walkSmoother) +-- M:moveZ(matrices, 0.1) +-- M:moveY(matrices, -0.03) +-- M:moveY(matrices, (-ywAngle * 0.002) ) +-- --M:moveZ(matrices, ywAngle * 0.007 ) +-- M:rotateX(matrices, -ywAngle , -0.8, 0.55 , 0.3) +-- M:rotateZ(matrices, -ptAngle , 0.8, 0.75 , 0.3) +-- M:rotateX(matrices, 3 * math.sin(a * 3) * (1-walkSmoother), -0.6, 0.5 , 0.3) +--end +-------------------------------------------------------------------------------------------- +-- +------ LEGS--------------------------------------------------------------------------------- +--if I:isOf(renderedItem, Items:get("minecraft:tropical_fish_bucket")) and index >= 6 and index <= 9 then +-- --M:moveZ(matrices, ywAngle * 0.007 ) +-- M:rotateZ(matrices, 15 * math.sin(a * 3), 0.4, 0.45 , -0.3) +--end +-------------------------------------------------------------------------------------------- +-- +------ LEGS--------------------------------------------------------------------------------- +--if I:isOf(renderedItem, Items:get("minecraft:tropical_fish_bucket")) and index >= 12 and index <= 13 then +-- --M:moveZ(matrices, ywAngle * 0.007 ) +-- M:rotateY(matrices, 25 * math.sin(a * 3), 0.45, 0.45 , 0.45) +--end +-------------------------------------------------------------------------------------------- +-- +-- +------ BODY--------------------------------------------------------------------------------- +--if I:isOf(renderedItem, Items:get("minecraft:cod_bucket")) and index >= 0 and index <= 25 then +-- M:scale(matrices, 0.9, 0.9, 0.9) +-- M:moveY(matrices, fall * 0.1) +-- M:moveY(matrices, 0.05) +-- M:moveY(matrices, 0.02 * math.sin(a * -1.5) * (1-walkSmoother)) +-- M:moveY(matrices, 0.08 * Easings:easeInSine(math.abs(math.sin(walk))) * walkSmoother) +-- M:moveZ(matrices, 0.1) +-- M:moveY(matrices, -0.03) +-- M:moveY(matrices, (-ywAngle * 0.002) ) +-- --M:moveZ(matrices, ywAngle * 0.007 ) +-- M:rotateX(matrices, -ywAngle * 0.6 , -0.8, 0.55 , 0.3) +-- M:rotateZ(matrices, -ptAngle * 0.6 , 0.8, 0.75 , 0.3) +-- M:rotateX(matrices, 3 * math.sin(a * 1.5) * (1-walkSmoother), -0.6, 0.5 , 0.3) +-- M:rotateX(matrices, fall * -10, -0.8, 0.55 , 0.3) +-- if index >= 10 and index <= 21 then +-- M:rotateX(matrices, -ywAngle * 0.2 , -0.8, 0.55 , 0.3) +-- --M:rotateZ(matrices, -ptAngle * 0.2 , 0.8, 0.75 , 0.3) +-- M:rotateX(matrices, fall * -5, -0.8, 0.55 , 0.3) +-- end +--end +-------------------------------------------------------------------------------------------- +-- + +-------------------------------------------------------------------------------------------- +-- +-- +-- +-- +--if I:isOf(renderedItem, Items:get("minecraft:bordure_indented_banner_pattern")) or I:isOf(renderedItem, Items:get("minecraft:creeper_banner_pattern")) or I:isOf(renderedItem, Items:get("minecraft:piglin_banner_pattern")) or I:isOf(renderedItem, Items:get("minecraft:flower_banner_pattern")) or I:isOf(renderedItem, Items:get("minecraft:field_masoned_banner_pattern")) or I:isOf(renderedItem, Items:get("minecraft:skull_banner_pattern")) or I:isOf(renderedItem, Items:get("minecraft:mojang_banner_pattern")) or I:isOf(renderedItem, Items:get("minecraft:guster_banner_pattern")) or I:isOf(renderedItem, Items:get("minecraft:globe_banner_pattern")) or I:isOf(renderedItem, Items:get("minecraft:flow_banner_pattern")) then +-- if index >= 5 and index <= 11 then +-- M:rotateX(matrices, M:clamp(P:getPitch(data.player) / 2.5, -20, 90) + ptAngle, 0, 0.6, 0.4) +-- M:rotateZ(matrices, ywAngle * -0.24, 0.4, 0.6, -0.4) +-- end +--end +-- diff --git a/src/main/resources/assets/minecraft/holdmyitems/item_pose.lua b/src/main/resources/assets/minecraft/holdmyitems/item_pose.lua new file mode 100644 index 0000000..017efaf --- /dev/null +++ b/src/main/resources/assets/minecraft/holdmyitems/item_pose.lua @@ -0,0 +1,980 @@ +-- item_pose.lua + +local GRAVITY = 0.04 +local DAMPING = 0.85 +local INTENSITY = 0.15 + +local bowGRAVITY = 0.25 +local bowDAMPING = 0.8 +local bowINTENSITY = 0.28 +local l = (context.bl and 1) or -1 + + +function easeCustom(t) + local t2 = t * t + local t3 = t2 * t + return 3 * t * (1 - t) * (1 - t) * 0.44 + + 3 * t2 * (1 - t) * 1 + + t3 +end + +function easeCustomSec(t) + local t2 = t * t + local t3 = t2 * t + return 3 * t * (1 - t) * (1 - t) * 0.44 + + 3 * t2 * (1 - t) * 0.94 + + t3 +end + +global.crossBowM = 0.0; +global.swordAttack2 = 0; +global.swordAttack = 0; +global.crossBowSecM = 0.0; +global.crossBowO = 0.0; +global.crossBowSecO = 0.0; +global.walk = 0.0; +global.blockRender = true; +global.walkSmoother = 0.0; +global.swimSmoother = 0.0; +global.swimCounter = 0.0; +global.mainHandSwitch = 0.0; +global.offHandSwitch = 0.0; +global.swingCountPrev = 0; +global.swingOHandPrev = false; +global.swingMHandPrev = false; +global.inspectionCounter = 0.0; +global.inspectionSpin = 0.0; +global.prevAge = 0.0; +global.bowCountO = 0.0; +global.bowCountSecO = 0.0; +global.bowCount = 0.0; +global.bowCountSec = 0.0; +global.bowPullSpeed = 0.0; +global.bowPullAngle = 0.0; +global.bowPullSpeedO = 0.0; +global.bowPullAngleO = 0.0; +global.mapSmoother = 0.0; +global.mapTransition = 0.0; +global.mapZoomer = 0.0; +global.fall = 0.0; +global.a = 0.0; +global.prevPitch = 0.0; +global.pitchSpeed = 0.0; +global.pitchAngle = 0.0; + +global.pitchSpeedO = 0.0; +global.pitchAngleO = 0.0; + +global.yawSpeedO = 0.0; +global.yawAngleO = 0.0; + +global.prevYaw = 0.0; +global.yawSpeed = 0.0; +global.yawAngle = 0.0; +global.mainHandSwitch = 0.0; +global.offHandSwitch = 0.0; + +global.foodCount = 0.0; +global.foodCountSec = 0.0; +global.foodCountSecO = 0.0; +global.foodCountO = 0.0; +global.brushCounter = 0.0; +global.brushCounterO = 0.0; +global.shieldDisable = 0.0; +global.shieldM = 0.0; +global.shieldO = 0.0; +global.sneak = 0.0; + +global.bundleCounter = 0.0; + +global.brushSpeedM = 0; +global.brushSpeedO = 0; +global.brushAngleM = 0; +global.brushAngleO = 0; + +global.tridentM = 0; +global.tridentMO = 0; +global.tridentJ = 0; +global.tridentJO = 0; +global.spearCounterM = 0; +global.spearUsageTime = 0; +global.canDismountCounter = 0; +global.canKnockbackCounter = 0; + +global.spearCounterO = 0; +global.canDismountCounterO = 0; +global.canKnockbackCounterO = 0; + + +global.hitImpactCounter = 0; +global.hitImpactCounterO = 0; + +brushSpeedM = brushSpeedM + (M:sin(foodCountSec * 4.14) * brushCounter) * context.deltaTime * 30 +brushSpeedM = brushSpeedM - GRAVITY * brushAngleM * context.deltaTime * 30 +brushSpeedM = brushSpeedM * M:pow(DAMPING, context.deltaTime * 30) +brushAngleM = brushAngleM + brushSpeedM * context.deltaTime * 30 + +brushSpeedO = brushSpeedO + (M:sin(foodCountSecO * 4.14) * brushCounterO) * context.deltaTime * 30 +brushSpeedO = brushSpeedO - GRAVITY * brushAngleO * context.deltaTime * 30 +brushSpeedO = brushSpeedO * M:pow(DAMPING, context.deltaTime * 30) +brushAngleO = brushAngleO + brushSpeedO * context.deltaTime * 30 + + +local swingHandPrev = (context.mainHand and swingMHandPrev) or swingOHandPrev +-- local easedBowSec = Easings:easeOutBack(bowCountSec); +-- bowPullSpeed = bowPullSpeed + easedBowSec * bowINTENSITY * context.deltaTime * 30; +-- bowPullSpeed = bowPullSpeed - bowGRAVITY * bowPullAngle * context.deltaTime * 30; +-- bowPullSpeed = bowPullSpeed * M:pow(bowDAMPING, context.deltaTime * 30); + +-- bowPullAngle = bowPullAngle + bowPullSpeed * context.deltaTime * 30; + +-- if(I:getUseAction(renderedItem) == "bow") then +-- M:scale(mat, 1, 1, 1 + bowPullAngle * 0.125); +-- end + +renderAsBlock:put("minecraft:string", false) +renderAsBlock:put("minecraft:resin_clump", false) +renderAsBlock:put("minecraft:vine", false) +renderAsBlock:put("minecraft:bamboo", false) + +local sp = I:getUseAction(P:getMainItem(context.player)) == "spear" and 1 or 0; +local spo = I:getUseAction(P:getOffhandItem(context.player)) == "spear" and 1 or 0; +local sc = context.mainHand and spearCounterM or spearCounterO +local scd = context.mainHand and canDismountCounter or canDismountCounterO +local sck = context.mainHand and canKnockbackCounter or canKnockbackCounterO +local sw = context.mainHand and mainHandSwitch or offHandSwitch + +local mat = context.matrices + +local hic = context.mainHand and Easings:easeInOutSine(hitImpactCounter) or hitImpactCounterO +pitchSpeed = pitchSpeed + ((P:getSpeed(context.player) * 22 * walkSmoother * -1) - (M:sin(context.mainHandSwingProgress * 3.14)) * 8 + fall * 3 + M:sin(sneak * 3.14) * 0.3 + (P:getPitch(context.player) - prevPitch)) * INTENSITY * context.deltaTime * 30 +if I:getUseAction(context.item) == "block" and context.mainHand and not I:isIn(context.item, Tags:getVanillaTag("swords")) then + pitchSpeed = pitchSpeed + 10 * M:sin(shieldDisable * 3.14) * INTENSITY * context.deltaTime * 30 + pitchSpeed = pitchSpeed + 12 * M:sin(shieldM * 3.14) * INTENSITY * context.deltaTime * 30 +end +pitchSpeed = pitchSpeed + ((-20 * M:sin(canDismountCounter * 3.14) * spearCounterM) + (20 * M:sin(canKnockbackCounter * 3.14) * spearCounterM) + (12 * M:sin(inspectionCounter * 3.14)) + (15 * M:sin(spearCounterM * 3.14)) + (-10 * M:clamp(M:sin(Easings:easeInBack(hitImpactCounter) * 6.28), 0, 1)) + (40 * M:clamp(M:sin(M:clamp(mainHandSwitch * 1.5 * sp, 0, 1) * 6.28), 0, 1))) * INTENSITY * context.deltaTime * 30 +pitchSpeed = pitchSpeed - GRAVITY * pitchAngle * context.deltaTime * 30 +pitchSpeed = pitchSpeed * M:pow(DAMPING, context.deltaTime * 30) +pitchAngle = pitchAngle + pitchSpeed * context.deltaTime * 30 + +yawSpeed = yawSpeed + (M:sin(walk) * 3 * walkSmoother + (M:sin(context.mainHandSwingProgress * 3.14)) * 8 + M:sin(swimCounter * swimSmoother) * 3 + M:sin(mainHandSwitch * 6.28) * 3 + P:getYaw(context.player) - prevYaw) * INTENSITY * context.deltaTime * 30 +yawSpeed = yawSpeed - GRAVITY * yawAngle * context.deltaTime * 30 +yawSpeed = yawSpeed * M:pow(DAMPING, context.deltaTime * 30) +yawAngle = yawAngle + yawSpeed * context.deltaTime * 30 +---------------------------------------------------------------------------------------------------------------- +pitchSpeedO = pitchSpeedO + ((P:getSpeed(context.player) * 22 * walkSmoother * -1) - (M:sin(context.offHandSwingProgress * 3.14)) * 8 + fall * 3 + M:sin(sneak * 3.14) * 0.3 + (P:getPitch(context.player) - prevPitch)) * INTENSITY * context.deltaTime * 30 +if I:getUseAction(context.item) == "block" and not context.mainHand and not I:isIn(context.item, Tags:getVanillaTag("swords")) then + pitchSpeedO = pitchSpeedO + 10 * M:sin(shieldDisable * 3.14) * INTENSITY * context.deltaTime * 30 + pitchSpeedO = pitchSpeedO + 12 * M:sin(shieldO * 3.14) * INTENSITY * context.deltaTime * 30 +end +pitchSpeedO = pitchSpeedO + ((-20 * M:sin(canDismountCounterO * 3.14) * spearCounterO) + (20 * M:sin(canKnockbackCounterO * 3.14) * spearCounterO) + (15 * M:sin(spearCounterO * 3.14)) + (40 * M:clamp(M:sin(M:clamp(offHandSwitch * 1.5 * spo, 0, 1) * 6.28), 0, 1))) * INTENSITY * context.deltaTime * 30 +pitchSpeedO = pitchSpeedO - GRAVITY * pitchAngleO * context.deltaTime * 30 +pitchSpeedO = pitchSpeedO * M:pow(DAMPING, context.deltaTime * 30) +pitchAngleO = pitchAngleO + pitchSpeedO * context.deltaTime * 30 + +yawSpeedO = yawSpeedO + (M:sin(walk) * 3 * walkSmoother + (M:sin(context.offHandSwingProgress * 3.14)) * 8 + M:sin(swimCounter * swimSmoother) * 3 + M:sin(offHandSwitch * 6.28) * 3 + P:getYaw(context.player) - prevYaw) * INTENSITY * context.deltaTime * 30 +yawSpeedO = yawSpeedO - GRAVITY * yawAngleO * context.deltaTime * 30 +yawSpeedO = yawSpeedO * M:pow(DAMPING, context.deltaTime * 30) +yawAngleO = yawAngleO + yawSpeedO * context.deltaTime * 30 + +local ywAngle = (context.mainHand and yawAngle) or yawAngleO +local ptAngle = (context.mainHand and pitchAngle) or pitchAngleO +-- local swing = M:sin(context.swingProgress * 3.14); +-- swing = swing * swing * swing; +-- M:moveY(mat, -0.2 * swing); +-- M:moveZ(mat, -0.1 * swing); + +-- M:rotateX(mat, -50 * swing); + +if I:isIn(context.item, Tags:getVanillaTag("pickaxes")) then + context.swingProgress = easeCustom(context.swingProgress) +else + context.swingProgress = easeCustomSec(context.swingProgress) +end + +local swing_rot +if context.swingProgress < 0.70016 then + swing_rot = M:sin(M:clamp(context.swingProgress, 0, 0.308) * 5.1) +else + swing_rot = M:sin(M:clamp(context.swingProgress, 0.70016, 1) * 5.1 - 2) +end + +local swing_sword_tilt +if context.swingProgress < 0.65245 then + swing_sword_tilt = M:sin(M:clamp(context.swingProgress, 0, 0.16675) * 3.14 * 3) +else + swing_sword_tilt = M:sin(M:clamp(context.swingProgress, 0.65245, 1) * 4.4 - 1.3) +end + +swing_rot = swing_rot * swing_rot * swing_rot +local swing = M:clamp(M:sin(context.swingProgress * 4.78), 0, 1) +local swing_hit = M:sin(M:clamp(context.swingProgress, 0.16561, 0.49422) * 4.78 * 2 + 4.7) +local swingOverall = M:sin(context.swingProgress * 3.14) +local swingRise = M:clamp(M:sin(context.swingProgress * 6.28), 0, 1) +local swingRiseS = M:sin(context.swingProgress * 6.28) + +local swing_hit_second +if context.swingProgress < 0.65594 then + swing_hit_second = M:sin(M:clamp(context.swingProgress, 0.16561, 0.32991) * 4.78 * 2 + 4.7) +else + swing_hit_second = M:sin(M:clamp(context.swingProgress, 0.65594, 0.82025) * 4.78 * 2 - 4.7) +end +if I:getUseAction(context.item) == "spear" then + M:rotateZ(mat, 180 * l) + + M:rotateZ(mat, -180 * Easings:easeInOutBack(M:clamp(sw * 2, 0, 1)) * l) + M:moveZ(mat, -0.2 * Easings:easeInOutSine(Easings:easeInOutBack(sc * 0.8))) + + M:moveY(mat, -0.05 * Easings:easeInOutBack(scd)) + + M:rotateX(mat, -70 * Easings:easeInOutBack(sc * 0.8)) + M:rotateX(mat, -8 * Easings:easeInOutBack(scd)) + M:rotateY(mat, 60 * Easings:easeInOutBack(sc * 0.8) * l) + M:rotateY(mat, -30 * Easings:easeInOutBack(scd) * l) + + --M:rotateY(mat, 10 * M:sin(canKnockbackCounter * 3.14) * l) + M:rotateY(mat, -60 * Easings:easeOutBack(sck) * sck * l) + --M:rotateZ(mat, -20 * Easings:easeInOutBack(M:sin(spearCounterM * 3.14) * 0.8)) + + M:moveY(mat, -0.25 * M:clamp(M:sin(Easings:easeInOutSine(hic) * 6.28), 0, 1)) + +end +if (I:getUseAction(context.item) ~= "block" and I:getUseAction(context.item) ~= "crossbow") or I:isIn(context.item, Tags:getVanillaTag("swords")) then + -- if(not I:isIn(renderedItem, Tags:getVanillaTag("swords"))) then + M:moveZ(mat, -0.05 * swing_rot) + M:moveY(mat, -0.05 * swing_rot) + M:rotateX(mat, 10 * swing_rot) + M:rotateX(mat, -30 * swing_rot) + M:rotateX(mat, -10 * swing_hit) + + if not I:isIn(context.item, Tags:getVanillaTag("swords")) then + if I:getUseAction(context.item) == "trident" or I:getUseAction(context.item) == "spear" then + -- if not swordAttack then + + -- M:moveZ(mat, 0.1 * swing_rot) + -- M:moveZ(mat, -0.25 * swing_hit) + -- M:moveZ(mat, -0.25 * swingOverall) + -- M:moveY(mat, -0.1 * swing_rot) + -- end + if I:getUseAction(context.item) == "spear" then + --M:moveZ(mat, -0.1 * swing_hit) + + end + M:moveZ(mat, -0.1 * swing_rot) + --M:moveZ(mat, -0.3 * swingOverall) + --M:moveZ(mat, -0.3 * swing_hit) + --M:moveX(mat, 0.05 * l * swingOverall) + M:moveY(mat, -0.05 * swing_rot) + if I:getUseAction(context.item) == "spear" then + M:moveY(mat, -0.15 * swing_hit) + + M:rotateX(mat, -5 * swing_hit) + end + M:rotateX(mat, -10 * swing_rot) + M:rotateX(mat, -15 * swing_hit) + if I:getUseAction(context.item) == "trident" then + M:rotateX(mat, -45 * swingOverall) + else + M:rotateX(mat, -45 * swing_sword_tilt) + end + + M:moveY(mat, 0.05 * swing_hit) + M:moveY(mat, 0.3 * swingOverall) + --if not swordAttack then + + -- M:rotateX(mat, -50 * M:clamp(swing_rot * 20, 0, 1)) + -- -- M:rotateZ(mat, -180 * M:clamp(swing_rot * 20, 0, 1)) + -- end + + else + M:moveZ(mat, -0.05 * swing_rot) + M:moveY(mat, -0.05 * swing_rot) + M:rotateX(mat, -10 * swing_rot) + M:rotateX(mat, -25 * swing_hit) + end + end + -- end + + if I:isIn(context.item, Tags:getVanillaTag("shovels")) then + M:moveY(mat, 0.12 * swing_sword_tilt) + M:moveZ(mat, 0.05 * swing_sword_tilt) + M:rotateX(mat, 10 * swing_sword_tilt) + M:rotateX(mat, -30 * swingOverall) + M:rotateX(mat, 20 * swing_rot) + M:rotateX(mat, 10 * swing_hit_second) + end + if I:isIn(context.item, Tags:getVanillaTag("swords")) then + swing = M:sin(context.swingProgress * 3.14) + M:moveY(mat, -0.1 * Easings:easeInOutBack(swing)) + if I:isIn(context.item, Tags:getVanillaTag("swords")) then + M:rotateX(mat, -60 * Easings:easeInOutBack(swing)) + else + M:rotateX(mat, -30 * Easings:easeInOutBack(swing)) + end + end + if I:getUseAction(context.item) == "bow" then + M:moveX(mat, -0.065 * l) + end +end + +if I:isIn(context.item, Tags:getVanillaTag("beds")) then + M:moveZ(mat, 0.2) + M:rotateY(mat, 180 * l, -0.15 * l, -0.4, 0) +end + +if I:isOf(context.item, Items:get("minecraft:bell")) or I:isLantern(context.item) or I:isOf(context.item, Items:get("minecraft:end_crystal")) or I:isIn(context.item, Tags:getVanillaTag("hanging_signs")) or I:isOf(context.item, Items:get("minecraft:pink_petals")) or I:isOf(context.item, Items:get("minecraft:leaf_litter")) or I:isOf(context.item, Items:get("minecraft:wildflowers")) then + if not I:isOf(context.item, Items:get("minecraft:end_crystal")) then + M:moveY(mat, -0.62) + end + if I:isIn(context.item, Tags:getVanillaTag("hanging_signs")) then + M:moveY(mat, -0.07) + end + if I:isOf(context.item, Items:get("minecraft:pink_petals")) or I:isOf(context.item, Items:get("minecraft:leaf_litter")) or I:isOf(context.item, Items:get("minecraft:wildflowers")) then + M:moveY(mat, 0.4) + M:rotateX(mat, -70) + else + M:moveZ(mat, 0.2) + M:rotateX(mat, -25) + end + if I:isOf(context.item, Items:get("minecraft:pink_petals")) or I:isOf(context.item, Items:get("minecraft:wildflowers")) or I:isOf(context.item, Items:get("minecraft:leaf_litter")) then + -- M:moveZ(mat, (M:clamp(P:getPitch(context.player) / 2.5, -20, 90) + pitchAngle) / -100) + -- M:moveY(mat, (M:clamp(P:getPitch(context.player) / 2.5, -20, 90) + pitchAngle) / -100) + M:rotateX(mat, M:clamp(P:getPitch(context.player) / 2.5, -20, 90) + ptAngle + ywAngle * 0.5, 0, -0.13, 0) + end + if I:isOf(context.item, Items:get("minecraft:bell")) or I:isLantern(context.item) or I:isOf(context.item, Items:get("minecraft:end_crystal")) then + if I:isOf(context.item, Items:get("minecraft:end_crystal")) then + M:scale(mat, 1 + 0.01 * M:sin(a * 15), 1 + 0.01 * M:sin(a * 15), 1 + 0.01 * M:sin(a * 8)) + M:moveY(mat, 0.03 * M:sin(a * 2)) + M:moveY(mat, 0.25) + M:moveY(mat, ptAngle / 150) + M:moveX(mat, ywAngle / 150 * l * -1) + M:rotateZ(mat, 5 * M:sin(a)) + M:scale(mat, 0.7, 0.7, 0.7) + elseif I:isOf(context.item, Items:get("minecraft:bell")) then + M:moveX(mat, 0.15 * l) + M:moveY(mat, -0.05) + M:moveZ(mat, -0.1) + M:scale(mat, 1.2, 1.2, 1.2) + M:rotateX(mat, M:clamp(P:getPitch(context.player) / 2.5, -20, 90) + ptAngle, -0.1 * l, 0.4, 0.1) + M:rotateZ(mat, ywAngle * -1, -0.1 * l, 0.4, 0.1) + else + M:rotateX(mat, M:clamp(P:getPitch(context.player) / 2.5, -20, 90) + ptAngle, 0, 0.4, 0) + M:rotateZ(mat, ywAngle * -1, 0, 0.4, 0) + end + end + if I:isIn(context.item, Tags:getVanillaTag("hanging_signs")) then + M:rotateX(mat, M:clamp(P:getPitch(context.player) / 2.5, -35, 90) + ptAngle, 0, 0.55, 0) + M:rotateZ(mat, ywAngle * -1, 0, 0.55, 0) + end +elseif I:isOf(context.item, Items:get("minecraft:painting")) or I:isOf(context.item, Items:get("minecraft:item_frame")) then + context.swingProgress = 0 + M:rotateX(mat, -25) + M:moveY(mat, -0.65) + M:rotateX(mat, M:clamp(P:getPitch(context.player) / 2.5, -25, 90) + ptAngle, 0, 0.45, 0) + M:rotateZ(mat, ywAngle * -1, 0, 0.55, 0) +elseif I:isBlock(context.item) then + M:moveY(mat, -0.025) + M:moveZ(mat, -0.025) + M:rotateX(mat, -5) +else + if not I:isBlock(context.item) and not I:isEmpty(context.item) and I:getUseAction(context.item) == "none" and I:getUseAction(context.item) ~= "crossbow" then + if I:isIn(context.item, Tags:getVanillaTag("axes")) or I:isOf(context.item, Items:get("minecraft:mace")) then + local ptAngleMultiplier = (I:isOf(context.item, Items:get("minecraft:mace")) and 0.2) or 0.15 + M:rotateX(mat, -20 * M:sin(context.equipProgress * context.equipProgress * context.equipProgress) + (ptAngle * ptAngleMultiplier), 0.3 * l, -0.3, 0) + else + M:rotateX(mat, -20 * M:sin(context.equipProgress * context.equipProgress * context.equipProgress) + (ptAngle * 0.05), 0.3 * l, -0.4, 0) + end + end + if (I:isIn(context.item, Tags:getVanillaTag("axes")) or I:isOf(context.item, Items:get("minecraft:mace"))) and I:getUseAction(context.item) ~= "crossbow" then + M:rotateX(mat, (P:getPitch(context.player) * -0.05) + ptAngle * 0.2, 0, -0.2, 0) + elseif I:getUseAction(context.item) ~= "crossbow" then + M:rotateX(mat, (P:getPitch(context.player) * -0.025) + ptAngle * 0.1, 0, -0.2, 0) + end +end +-- if(not I:isIn(renderedItem, ConventionalItemTags.TOOLS) and not I:isIn(renderedItem, Tags:getVanillaTag("swords"))) then +-- M:rotateX(mat, 10) +-- M:rotateZ(mat, 10 * l) +-- M:rotateY(mat, -30 * l) +-- end +-- if (context.mainHand) then +-- local switchItems = M:sin(M:clamp(mainHandSwitch, 0, 0.5) * 3.14); +-- local switch_fast = M:sin(M:clamp(mainHandSwitch, 0, 0.125) * 12.56); +-- switchItems = Easings:easeInOutBack(switchItems); +-- M:rotateX(mat, -70 * switch_fast, 0, -0.2, 0); +-- M:rotateZ(mat, 40 * switch_fast); +-- M:rotateZ(mat, -40 * switch_fast); +-- M:rotateX(mat, 70 * switchItems, 0, -0.2, 0); +-- else +-- local switchItems = M:sin(M:clamp(offHandSwitch, 0, 0.5) * 3.14); +-- local switch_fast = M:sin(M:clamp(offHandSwitch, 0, 0.125) * 12.56); +-- switchItems = Easings:easeInOutBack(switchItems); +-- M:rotateX(mat, -70 * switch_fast, 0, -0.2, 0); +-- M:rotateZ(mat, 40 * l * switch_fast); +-- M:rotateZ(mat, -40 * l * switch_fast); +-- M:rotateX(mat, 70 * switchItems, 0, -0.2, 0); +-- end + +if (I:getUseAction(context.item) == "drink" or I:getUseAction(context.item) == "eat" or I:getUseAction(context.item) == "toot_horn") and context.mainHand then + M:moveX(mat, 0.02 * l * foodCount) + M:moveZ(mat, -0.05 * foodCount) + if I:getUseAction(context.item) == "eat" or I:getUseAction(context.item) == "toot_horn" then + M:rotateX(mat, -23 * foodCount * foodCount) + M:rotateZ(mat, -12 * l * foodCount * foodCount) + end + M:rotateY(mat, -50 * l * foodCount * foodCount) + + if I:getUseAction(context.item) == "drink" then + M:rotateX(mat, 15 * foodCount * foodCount) + end +end + +if (I:getUseAction(context.item) == "drink" or I:getUseAction(context.item) == "eat" or I:getUseAction(context.item) == "toot_horn") and not context.mainHand then + M:moveX(mat, 0.02 * l * foodCountO) + M:moveZ(mat, -0.05 * foodCountO) + if I:getUseAction(context.item) == "eat" or I:getUseAction(context.item) == "toot_horn" then + M:rotateX(mat, -23 * foodCountO * foodCountO) + M:rotateZ(mat, -12 * l * foodCountO * foodCountO) + end + M:rotateY(mat, -50 * l * foodCountO * foodCountO) + + if I:getUseAction(context.item) == "drink" then + M:rotateX(mat, 15 * foodCountO * foodCountO) + end +end + +if I:getUseAction(context.item) == "brush" and context.mainHand then + M:moveZ(mat, -0.03 * Easings:easeInOutBack(brushCounter)) + M:rotateX(mat, -30 * Easings:easeInOutBack(brushCounter)) + M:rotateZ(mat, 15 * l * M:sin((foodCountSec - 0.5) * 4.14) * Easings:easeInOutBack(brushCounter)) + M:rotateZ(mat, l * brushAngleM) +end +if I:getUseAction(context.item) == "brush" and not context.mainHand then + M:moveZ(mat, -0.03 * Easings:easeInOutBack(brushCounterO)) + M:rotateX(mat, -30 * Easings:easeInOutBack(brushCounterO)) + M:rotateZ(mat, 15 * l * M:sin((foodCountSecO - 0.5) * 4.14) * Easings:easeInOutBack(brushCounterO)) + M:rotateZ(mat, l * brushAngleO) +end + +if I:isIn(context.item, Tags:getVanillaTag("doors")) then + M:moveX(mat, 0.1 * l) + M:moveZ(mat, 0.25) + M:moveY(mat, -0.35) + M:rotateZ(mat, -10 * l) + M:rotateY(mat, -90 * l) +elseif I:isIn(context.item, Tags:getVanillaTag("beds")) then + M:moveZ(mat, 0.17) + M:rotateY(mat, -35 * l, 0.3 * l, -0.4, 0) + M:scale(mat, 0.9, 0.9, 0.9) +end + +if I:isOf(context.item, Items:get("minecraft:slime_ball")) or I:isOf(context.item, Items:get("minecraft:slime_block")) or I:isOf(context.item, Items:get("minecraft:honey_block")) then + if I:isOf(context.item, Items:get("minecraft:slime_ball")) then + M:moveY(mat, -0.1) + local scaleY = (fall < 0 and fall * 0.06) or fall * 0.12 + M:scale(mat, 1, 1 + scaleY, 1) + M:moveY(mat, 0.1) + else + local scaleX_Z = (fall < 0 and fall * 0.05) or fall * 0.1 + local scaleY = (fall < 0 and fall * 0.1) or fall * 0.3 + M:moveY(mat, -0) + M:scale(mat, 1 - scaleX_Z, 1 + scaleY, 1 - scaleX_Z) + M:moveY(mat, 0) + + if context.bl then + M:shear(mat, 0, 0 - ywAngle * 0.006, 0) + else + M:shear(mat, 0, 0 + ywAngle * 0.006, 0) + end + end +end + +if I:isIn(context.item, Tags:getVanillaTag("shovels")) then + M:moveX(mat, -0.09 * l) + M:rotateY(mat, 80 * l) +end +prevPitch = P:getPitch(context.player) +prevYaw = P:getYaw(context.player) + +-- context.bl == true -- right +-- context.bl == false -- left + +local autoFlip = (context.bl and 1) or -1 + +if I:isOf(context.item, Items:get("minecraft:magma_cream")) then + M:scale(mat, 1 - (fall / 5), 1 + (fall / 5), 1) +end + +local switch_val = (context.mainHand and mainHandSwitch) or offHandSwitch +local musicDiscHandTilt +if switch_val < 0.65245 then + musicDiscHandTilt = M:sin(M:clamp(switch_val, 0, 0.16675) * 3.14 * 3) +else + musicDiscHandTilt = M:sin(M:clamp(switch_val, 0.65245, 1) * 4.4 - 1.3) +end +local musicDiscHandJump = M:sin(M:clamp(switch_val, 0.52459, 0.85809) * 3.14 * 3 - 1.8) +-- if(I:isIn(renderedItem, Tags:getVanillaTag("music_discs"))) then +-- M:rotateX(mat, -45 * musicDiscHandTilt); +-- M:moveZ(mat, -0.2 * musicDiscHandTilt) +-- M:moveY(mat, -0.05 * Easings:easeInBack(musicDiscHandJump)) +-- M:moveY(mat, 0.1) +-- M:moveZ(mat, -0.07) +-- M:rotateY(mat, 360 * Easings:easeInOutBack((context.mainHand and mainHandSwitch) or offHandSwitch), 0, 0, 0.2); +-- M:rotateX(mat, 90); +-- end + +local switchAnimationVariable = Easings:easeInBack(M:sin(M:clamp((context.mainHand and mainHandSwitch) or offHandSwitch, 0.09723, 0.60632) * 3.24 * 1.65 - 0.1)) +if (I:isIn(context.item, Tags:getVanillaTag("bundles")) or I:isOf(context.item, Items:get("minecraft:ender_pearl")) or I:isOf(context.item, Items:get("minecraft:ender_eye")) or I:isThrowable(context.item) or I:isIn(context.item, Tags:getFabricTag("music_discs")) or I:isIn(context.item, Tags:getFabricTag("nuggets")) or I:isIn(context.item, Tags:getVanillaTag("skulls"))) and I:getUseAction(context.item) ~= "trident" then + M:rotateX(mat, -10 * switchAnimationVariable) + M:moveY(mat, 0.62 * switchAnimationVariable) + M:moveY(mat, M:clamp(0.1 * fall, 0, 255)) + + local switchEvent = (context.mainHand and mainHandSwitchEvent) or offHandSwitchEvent + + if I:isIn(context.item, Tags:getFabricTag("nuggets")) then + if switchEvent then + S:playSound("entity.experience_orb.pickup", 0.3) + end + M:moveY(mat, -0.07) + M:rotateX(mat, 360 * Easings:easeInOutBack((context.mainHand and M:clamp(mainHandSwitch * 1.65, 0, 1)) or M:clamp(offHandSwitch * 1.65, 0, 1)), 0, 0.1, 0) + elseif I:isIn(context.item, Tags:getFabricTag("music_discs")) then + if switchEvent then + S:playSound("entity.context.player.attack.weak", 0.3) + end + M:rotateZ(mat, 360 * Easings:easeInOutBack((context.mainHand and M:clamp(mainHandSwitch * 1.65, 0, 1)) or M:clamp(offHandSwitch * 1.65, 0, 1)), -0.1 * l, 0.25, 0) + else + if switchEvent then + S:playSound("entity.context.player.attack.weak", 0.3) + end + local clampedSwitch = (context.mainHand and M:clamp(mainHandSwitch * 1.2, 0, 1)) or M:clamp(offHandSwitch * 1.2, 0, 1) + M:rotateZ(mat, -7 * l * M:sin(M:clamp(clampedSwitch, 0.0943, 0.66791) * 7.07 * 1.5 - 0.8)) + end + -- M:scale(mat, 1 - (switchAnimationVariable * 0.17), 1 + (switchAnimationVariable * 0.17), 1 - (switchAnimationVariable * 0.17)) +end + +local easedMapTransition = Easings:easeInOutBack(mapTransition) +local easedMapSmoother = Easings:easeInOutBack(mapSmoother) +local easedMapZoomer = Easings:easeInOutBack(mapZoomer) + +if I:isOf(context.item, Items:get("minecraft:filled_map")) then + M:rotateZ(mat, 5 * l * easedMapSmoother) + M:rotateY(mat, (-40 - (20 * easedMapZoomer)) * l * easedMapSmoother) + M:rotateZ(mat, 15 * l * easedMapSmoother) + M:rotateX(mat, -10 * easedMapZoomer * easedMapSmoother) +end +if I:isOf(context.item, Items:get("minecraft:filled_map")) then + local smoother = 1 - easedMapSmoother + M:moveZ(mat, -0.05 * smoother) + M:moveY(mat, -0.05 * smoother) + M:rotateX(mat, -40 * smoother) + M:rotateY(mat, -10 * l * smoother) + M:rotateZ(mat, 5 * l * smoother) +elseif I:shouldTranslateItem(context.item) and not I:isBlock(context.item) and not I:isOf(context.item, Items:get("minecraft:bone")) and I:getUseAction(context.item) ~= "bow" and I:getUseAction(context.item) ~= "spear" then + M:moveX(mat, -0.05 * l) + M:rotateX(mat, -8) + M:rotateY(mat, -10 * l) + M:rotateZ(mat, 6 * l) +end + +if I:isCustomTranslate(context.item) then + M:moveX(mat, -0.05 * l) + M:rotateX(mat, -8) + M:rotateY(mat, -10 * l) + M:rotateZ(mat, 6 * l) +end + +if I:isOf(context.item, Items:get("minecraft:shears")) then + if not context.bl then + M:moveZ(mat, 0.1) + M:rotateY(mat, 180) + end + M:rotateZ(mat, 45) +end +if I:isIn(context.item, Tags:getVanillaTag("skulls")) and not I:isOf(context.item, Items:get("minecraft:dragon_head")) then + M:moveX(mat, -0.1 * l) + M:moveY(mat, 0.11) + M:rotateZ(mat, 15 * l) + M:rotateY(mat, -85 * l) + M:rotateX(mat, -55) + -- M:rotateY(mat, 120 * l) +elseif I:isOf(context.item, Items:get("minecraft:dragon_head")) then + M:moveY(mat, 0.25) + M:rotateZ(mat, 6 * l) + M:rotateY(mat, 160 * l) +end + +if (context.mainHand and mainHandSwitchEvent) or offHandSwitchEvent then + S:playSound("context.item.armor.equip_leather", 0.2) +end + +local ticker = function(particle) + particle.dy = particle.dy + 0.005 * context.deltaTime * 30 + particle.dx = particle.dx + 0.005 * M:sin(context.player.age * 0.5) * context.deltaTime * 30 +end + +if I:isOf(context.item, Items:get("minecraft:brewing_stand")) or I:isOf(context.item, Items:get("minecraft:redstone_torch")) or I:isOf(context.item, Items:get("minecraft:torch")) or I:isOf(context.item, Items:get("minecraft:lantern")) or I:isOf(context.item, Items:get("minecraft:soul_torch")) or I:isOf(context.item, Items:get("minecraft:soul_lantern")) then + if I:isOf(context.item, Items:get("minecraft:brewing_stand")) or I:isOf(context.item, Items:get("minecraft:torch")) then + particleManager:addParticle(context.particles, false, 0.5 * l, 0.6, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.3, Texture:of("minecraft", "textures/particle/orange_glow.png"), "ITEM", context.hand, "SPAWN", "ADDITIVE", 0, 200 + (20 * M:sin(P:getAge(context.player) * 0.2))) + elseif I:isOf(context.item, Items:get("minecraft:lantern")) then + particleManager:addParticle(context.particles, false, 0.45 * l, 0.15, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.3, Texture:of("minecraft", "textures/particle/orange_glow.png"), "ITEM", context.hand, "SPAWN", "ADDITIVE", 0, 200 + (20 * M:sin(P:getAge(context.player) * 0.2))) + elseif I:isLantern(context.item) and string.find(I:getName(context.item), "copper") then + particleManager:addParticle(context.particles, false, 0.45 * l, 0.15, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.3, Texture:of("minecraft", "textures/particle/orange_glow.png"), "ITEM", context.hand, "SPAWN", "ADDITIVE", 0, 200 + (20 * M:sin(P:getAge(context.player) * 0.2))) + elseif I:isOf(context.item, Items:get("minecraft:soul_torch")) then + particleManager:addParticle(context.particles, false, 0.5 * l, 0.6, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.3, Texture:of("minecraft", "textures/particle/blue_glow.png"), "ITEM", context.hand, "SPAWN", "ADDITIVE", 0, 110 + (10 * M:sin(P:getAge(context.player) * 0.2))) + elseif I:isOf(context.item, Items:get("minecraft:soul_lantern")) then + particleManager:addParticle(context.particles, false, 0.45 * l, 0.15, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.3, Texture:of("minecraft", "textures/particle/blue_glow.png"), "ITEM", context.hand, "SPAWN", "ADDITIVE", 0, 110 + (10 * M:sin(P:getAge(context.player) * 0.2))) + elseif I:isOf(context.item, Items:get("minecraft:redstone_torch")) then + particleManager:addParticle(context.particles, false, 0.5 * l, 0.6, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.3, Texture:of("minecraft", "textures/particle/red_glow.png"), "ITEM", context.hand, "SPAWN", "ADDITIVE", 0, 110 + (10 * M:sin(P:getAge(context.player) * 0.2))) + end +end + + +if KeyBindManager:isKeyPressed(${inspectKeybind} ~= 0 and ${inspectKeybind} or 67) then +inspectionSpin = inspectionSpin + 0.025 * context.deltaTime * 30 +else +inspectionSpin = 0 +end +inspectionSpin = M:clamp(inspectionSpin, 0, 1) + +if (I:isIn(context.item, Tags:getVanillaTag("swords")) or I:isIn(context.item, Tags:getVanillaTag("pickaxes")) or I:isIn(context.item, Tags:getVanillaTag("axes")) or I:getUseAction(context.item) == "trident") and context.mainHand then +M:moveX(mat, -0.2 * l * inspectionCounter) +M:rotateX(mat, -360 * Easings:easeInOutBack(inspectionSpin), 0, 0, 0.15) +end +prevAge = P:getAge(context.player) + + +if swingCountPrev ~= P:getSwingCount(context.player) and context.mainHand and I:isOf(context.item, Items:get("minecraft:bell")) then +S:playSound("block.bell.use", 0.3) +end +swingCountPrev = P:getSwingCount(context.player) + + +if I:isOf(context.item, Items:get("minecraft:pink_petals")) or I:isOf(context.item, Items:get("minecraft:wildflowers")) or I:isOf(context.item, Items:get("minecraft:leaf_litter")) then +local flower = "" +if I:isOf(context.item, Items:get("minecraft:pink_petals")) then +flower = "pink_petals" +elseif I:isOf(context.item, Items:get("minecraft:wildflowers")) then +flower = "wild_flowers" +elseif I:isOf(context.item, Items:get("minecraft:leaf_litter")) then +flower = "leaf_litter" +end + +local particle_ticker = function(particle) +particle.dx = particle.dx + 0.005 * M:sin(P:getAge(context.player) * 0.3) * context.deltaTime * 30 +end + +if swingMHandPrev ~= context.swingMHand and context.mainHand then +S:playSound("block.leaf_litter.place", 0.7); +local value = math.random() * 0.3 +particleManager:addParticle(context.particles, true, 0.75 * l, -0.2, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.4, Texture:of("minecraft", "textures/particle/firefly.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +value = math.random() * 0.3 +particleManager:addParticle(context.particles, true, 0.75 * l, -0.2, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.4, Texture:of("minecraft", "textures/particle/firefly.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +------------------------------------------ +particleManager:addParticle(context.particles, true, 0.65 * l, -0.25, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.3, Texture:of("minecraft", "textures/particle/" .. flower .. "_1.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +value = math.random() * 0.3 +particleManager:addParticle(context.particles, true, 0.65 * l, -0.25, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.3, Texture:of("minecraft", "textures/particle/" .. flower .. "_1.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +particleManager:addParticle(context.particles, true, 0.65 * l, -0.25, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.3, Texture:of("minecraft", "textures/particle/" .. flower .. "_2.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +value = math.random() * 0.3 +particleManager:addParticle(context.particles, true, 0.65 * l, -0.25, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.3, Texture:of("minecraft", "textures/particle/" .. flower .. "_2.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +particleManager:addParticle(context.particles, true, 0.65 * l, -0.25, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.2, Texture:of("minecraft", "textures/particle/" .. flower .. "_4.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +value = math.random() * 0.3 +particleManager:addParticle(context.particles, true, 0.65 * l, -0.25, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.2, Texture:of("minecraft", "textures/particle/" .. flower .. "_4.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +elseif swingOHandPrev ~= context.swingOHand and not context.mainHand then +S:playSound("block.leaf_litter.place", 0.7); +local value = math.random() * 0.3 +particleManager:addParticle(context.particles, true, 0.75 * l, -0.2, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.4, Texture:of("minecraft", "textures/particle/firefly.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +value = math.random() * 0.3 +particleManager:addParticle(context.particles, true, 0.75 * l, -0.2, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.4, Texture:of("minecraft", "textures/particle/firefly.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +------------------------------------------ +particleManager:addParticle(context.particles, true, 0.65 * l, -0.25, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.3, Texture:of("minecraft", "textures/particle/" .. flower .. "_1.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +value = math.random() * 0.3 +particleManager:addParticle(context.particles, true, 0.65 * l, -0.25, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.3, Texture:of("minecraft", "textures/particle/" .. flower .. "_1.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +particleManager:addParticle(context.particles, true, 0.65 * l, -0.25, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.3, Texture:of("minecraft", "textures/particle/" .. flower .. "_2.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +value = math.random() * 0.3 +particleManager:addParticle(context.particles, true, 0.65 * l, -0.25, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.3, Texture:of("minecraft", "textures/particle/" .. flower .. "_2.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +particleManager:addParticle(context.particles, true, 0.65 * l, -0.25, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.2, Texture:of("minecraft", "textures/particle/" .. flower .. "_4.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +value = math.random() * 0.3 +particleManager:addParticle(context.particles, true, 0.65 * l, -0.25, -0.9, (math.random() * 0.12 - 0.06) * l, math.random() * 0.12, 0, 0, 0, 0, 0, 0, 0, 0.2, Texture:of("minecraft", "textures/particle/" .. flower .. "_4.png"), "SCREEN", context.hand, "OPACITY", "TRANSLUCENT_L", 1, 255, particle_ticker) +end +end + +if context.mainHand then +swingMHandPrev = context.swingMHand +else +swingOHandPrev = context.swingOHand +end +local tags = { + "copper_golem_statues" +} + +local itemIds = { +"minecraft:string", +"minecraft:resin_clump", +"minecraft:vine", +"minecraft:kelp", +"minecraft:seagrass", +"minecraft:iron_bars", +"minecraft:glass_pane", +"minecraft:white_stained_glass_pane", +"minecraft:orange_stained_glass_pane", +"minecraft:magenta_stained_glass_pane", +"minecraft:light_blue_stained_glass_pane", +"minecraft:yellow_stained_glass_pane", +"minecraft:lime_stained_glass_pane", +"minecraft:pink_stained_glass_pane", +"minecraft:gray_stained_glass_pane", +"minecraft:light_gray_stained_glass_pane", +"minecraft:cyan_stained_glass_pane", +"minecraft:purple_stained_glass_pane", +"minecraft:blue_stained_glass_pane", +"minecraft:brown_stained_glass_pane", +"minecraft:green_stained_glass_pane", +"minecraft:red_stained_glass_pane", +"minecraft:black_stained_glass_pane", +"minecraft:ladder", +"minecraft:oak_sign", +"minecraft:spruce_sign", +"minecraft:birch_sign", +"minecraft:jungle_sign", +"minecraft:acacia_sign", +"minecraft:dark_oak_sign", +"minecraft:mangrove_sign", +"minecraft:cherry_sign", +"minecraft:bamboo_sign", +"minecraft:crimson_sign", +"minecraft:warped_sign", +"minecraft:pale_oak_sign", +"minecraft:tripwire_hook", +"minecraft:hopper", +"minecraft:cauldron", +"minecraft:rail", +"minecraft:powered_rail", +"minecraft:detector_rail", +"minecraft:activator_rail", +"minecraft:repeater", +"minecraft:comparator", +"minecraft:twisting_vines", +"minecraft:weeping_vines", +"minecraft:sniffer_egg", +"minecraft:candle", +"minecraft:white_candle", +"minecraft:orange_candle", +"minecraft:magenta_candle", +"minecraft:light_blue_candle", +"minecraft:yellow_candle", +"minecraft:lime_candle", +"minecraft:pink_candle", +"minecraft:gray_candle", +"minecraft:light_gray_candle", +"minecraft:cyan_candle", +"minecraft:purple_candle", +"minecraft:blue_candle", +"minecraft:brown_candle", +"minecraft:green_candle", +"minecraft:red_candle", +"minecraft:black_candle", +"minecraft:frogspawn", +"minecraft:light", +"minecraft:structure_void", +"minecraft:barrier", +"minecraft:carrot", +"minecraft:powder_snow_bucket", +"minecraft:glow_berries", +"minecraft:potato", +"minecraft:sweet_berries", +"minecraft:redstone" +} + + + + +-- The 'for (let id of itemIds)' loop is translated to 'for _, id in ipairs(itemIds) do' + +for _, id in ipairs(itemIds) do +-- Assuming 'renderAsBlock.put' is a method, using the preferred colon syntax for consistency +renderAsBlock:put(id, false) +if id ~= "bamboo" then +translateItem:put(id, true) +end +end + +for _, id in ipairs(tags) do +if(I:isIn(context.item, Tags:getVanillaTag(id))) then +renderAsBlock:put(I:getName(context.item), false) +end +end + + + +itemSwingSpeed:put('minecraft:trident', 12) +itemSwingSpeed:put('minecraft:iron_spear', 15) +itemSwingSpeed:put('minecraft:copper_spear', 15) +itemSwingSpeed:put('minecraft:diamond_spear', 15) +itemSwingSpeed:put('minecraft:wooden_spear', 15) +itemSwingSpeed:put('minecraft:stone_spear', 15) +itemSwingSpeed:put('minecraft:golden_spear', 15) +itemSwingSpeed:put('minecraft:netherite_spear', 15) +itemSwingSpeed:put('minecraft:mace', 12) + + +if I:isIn(context.item, Tags:getVanillaTag('shovels')) then +itemSwingSpeed:put(I:getName(context.item), 14) +end + +--I:setChestOpen(M:clamp(fall / 6, 0, 1)) +--I:setShulkerOpen(M:clamp(fall / 6, 0, 1)) + + +--Cyber, Sapling and Axolotl were here :3 + +local l = context.bl and 1 or -1 + +global.foodCount = 0.0; +global.foodCountO = 0.0; + +local easedFoodCounter = Easings:easeInQuart(context.mainHand and foodCount or foodCountO) + +-- Buckets +if ( +I:isOf(context.item, Items:get("minecraft:bucket")) or +I:isOf(context.item, Items:get("minecraft:axolotl_bucket")) or +I:isOf(context.item, Items:get("minecraft:powder_snow_bucket")) or +I:isOf(context.item, Items:get("minecraft:pufferfish_bucket")) or +I:isOf(context.item, Items:get("minecraft:tadpole_bucket")) or +I:isOf(context.item, Items:get("minecraft:salmon_bucket")) or +I:isOf(context.item, Items:get("minecraft:cod_bucket")) or +I:isOf(context.item, Items:get("minecraft:tropical_fish_bucket")) or +I:isOf(context.item, Items:get("minecraft:water_bucket")) or +I:isOf(context.item, Items:get("minecraft:lava_bucket")) +) then +M:moveY(mat, 0.025) +M:moveX(mat, -0 * l) +M:moveZ(mat, -0.1) +M:rotateY(mat, 180) +M:rotateX(mat, -82.5) +M:rotateZ(mat, -20 * l) +end + +-- Milk Bucket +if I:isOf(context.item, Items:get("minecraft:milk_bucket")) then +M:moveY(mat, 0.025) +M:moveX(mat, -0 * l) +M:moveZ(mat, -0.1) +M:rotateY(mat, 180) +M:rotateX(mat, -82.5) +M:rotateZ(mat, -20 * l) +M:rotateX(mat, -0 * easedFoodCounter) +M:rotateZ(mat, 30 * l * easedFoodCounter) +M:rotateY(mat, 0 * l * easedFoodCounter) +M:moveX(mat, 0 * l * easedFoodCounter) +M:moveY(mat, 0.1 * easedFoodCounter) +M:moveZ(mat, 0.02 * easedFoodCounter) +end + +-- Lava Bucket +if I:isOf(context.item, Items:get("minecraft:lava_bucket")) then +particleManager:addParticle( +context.particles, +false, +-0.05 * l, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +2, +Texture:of("minecraft", "textures/particle/orange_glow.png"), +"ITEM", +context.hand, +"SPAWN", +"ADDITIVE", +0, +150 + (20 * M:sin(P:getAge(context.player) * 0.2)) +) +end + +-- Frog Buckets (Holld my Frog mod) +if ( +I:isOf(context.item, Items:get("bucket_of_frog:frog_bucket_cold")) or +I:isOf(context.item, Items:get("bucket_of_frog:frog_bucket_warm")) or +I:isOf(context.item, Items:get("bucket_of_frog:frog_bucket_temperate")) +) then +M:moveY(mat, 0.025) +M:moveX(mat, -0 * l) +M:moveZ(mat, -0.1) +M:rotateY(mat, 180) +M:rotateX(mat, -82.5) +M:rotateZ(mat, -20 * l) +end + +if I:getUseAction(context.item) == "trident" then +--M:moveZ(mat, -0.1 * Easings:easeOutBack(M:clamp(tridentM * 1.5, 0, 1))) + +M:rotateZ(mat, 170 * l * Easings:easeOutBack(M:clamp(context.mainHand and tridentM or tridentMO * 1.5, 0, 1))) +M:moveZ(mat, -0.1) +M:rotateY(mat, 40 * l) +end + +if I:getUseAction(context.item) == "spear" then + M:moveZ(mat, -0.1) + M:rotateY(mat, 10 * l) +end + +global.riptideCounter = 0; +global.riptideCounterO = 0; + +if I:getUseAction(context.item) == "trident" then +M:rotateX(mat, -90 * Easings:easeOutBack(M:sin(context.mainHand and riptideCounter or riptideCounterO * 3.14))) +M:rotateZ(mat, -45 * l * Easings:easeOutBack(M:sin(context.mainHand and riptideCounter or riptideCounterO * 3.14))) +end + +if I:isIn(context.item, Tags:getVanillaTag("hanging_signs")) +or I:isIn(context.item, Tags:getVanillaTag("doors")) +or I:isIn(context.item, Tags:getVanillaTag("skulls")) +or I:isIn(context.item, Tags:getVanillaTag("signs")) then + applyBlockRotation:put(I:getName(context.item), false) +end + +if I:isBlock(context.item) and applyBlockRotation:getOrDefault(I:getName(context.item), true) and renderAsBlock:getOrDefault(I:getName(context.item), true) and not +I:isOf(context.item, Items:get("minecraft:pink_petals")) and not +I:isOf(context.item, Items:get("minecraft:leaf_litter")) and not +I:isOf(context.item, Items:get("minecraft:wildflowers")) and not +I:isOf(context.item, Items:get("minecraft:redstone")) and not +I:isOf(context.item, Items:get("minecraft:bell")) then +M:moveZ(mat, -0.05) +if not I:isLantern(context.item) then +M:moveY(mat, -0.15) +M:rotateZ(mat, 6 * l) +M:rotateX(mat, -8) +end +M:rotateY(mat, 25 * l) +M:scale(mat, 1.1, 1.1, 1.1) +end + + +local easedBow = Easings:easeInOutBack(bowCount) +local easedBowO = Easings:easeInOutBack(bowCountO) +local easedBowSec = Easings:easeOutBack(bowCountSec) +local easedBowSecO = Easings:easeOutBack(bowCountSecO) +local bc = context.mainHand and easedBowSec or easedBowSecO +local b = context.mainHand and easedBow or easedBowO + + +if bc < 0.1 then +usingItem:put("minecraft:bow", false) +else +usingItem:put("minecraft:bow", true) +end + +useDuration:put("minecraft:bow", Easings:cubicEase(bc) * 20) + +local easedCrossBowM = Easings:easeOutBack(crossBowM) +local easedCrossBowSecM = Easings:easeOutBack(crossBowSecM) +local easedCrossBowO = Easings:easeOutBack(crossBowO) +local easedCrossBowSecO = Easings:easeOutBack(crossBowSecO) + diff --git a/src/main/resources/assets/minecraft/holdmyitems/item_pose.lua.rpo b/src/main/resources/assets/minecraft/holdmyitems/item_pose.lua.rpo new file mode 100644 index 0000000..4e44d36 --- /dev/null +++ b/src/main/resources/assets/minecraft/holdmyitems/item_pose.lua.rpo @@ -0,0 +1,8 @@ +{ + expansions: { + zOffset: "hmi.zOffset", + xOffset: "hmi.xOffset", + yOffset: "hmi.yOffset", + inspectKeybind: "hmi.inspectKeybind" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/holdmyitems/runclient.log b/src/main/resources/assets/minecraft/holdmyitems/runclient.log new file mode 100644 index 0000000..7b023e6 --- /dev/null +++ b/src/main/resources/assets/minecraft/holdmyitems/runclient.log @@ -0,0 +1 @@ +(eval):1: no such file or directory: ./gradlew diff --git a/src/main/resources/assets/minecraft/items/acacia_boat.json b/src/main/resources/assets/minecraft/items/acacia_boat.json new file mode 100644 index 0000000..7dcd760 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/acacia_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/acacia_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/acacia_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/acacia_chest_boat.json b/src/main/resources/assets/minecraft/items/acacia_chest_boat.json new file mode 100644 index 0000000..09f9ac1 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/acacia_chest_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/acacia_chest_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/acacia_chest_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/axolotl_bucket.json b/src/main/resources/assets/minecraft/items/axolotl_bucket.json new file mode 100644 index 0000000..1b9ad5b --- /dev/null +++ b/src/main/resources/assets/minecraft/items/axolotl_bucket.json @@ -0,0 +1,120 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:select", + "property": "minecraft:component", + "component": "minecraft:axolotl/variant", + "cases": [ + { + "when": "lucy", + "model": { + "type": "minecraft:model", + "model": "minecraft:item/axolotl_bucket_lucy_2d" + } + }, + { + "when": "wild", + "model": { + "type": "minecraft:model", + "model": "minecraft:item/axolotl_bucket_wild_2d" + } + }, + { + "when": "gold", + "model": { + "type": "minecraft:model", + "model": "minecraft:item/axolotl_bucket_gold_2d" + } + }, + { + "when": "cyan", + "model": { + "type": "minecraft:model", + "model": "minecraft:item/axolotl_bucket_cyan_2d" + } + }, + { + "when": "blue", + "model": { + "type": "minecraft:model", + "model": "minecraft:item/axolotl_bucket_blue_2d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/axolotl_bucket" + } + } + }, + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head" + ], + "model": { + "type": "minecraft:select", + "property": "minecraft:component", + "component": "minecraft:axolotl/variant", + "cases": [ + { + "when": "lucy", + "model": { + "type": "minecraft:model", + "model": "minecraft:item/axolotl_bucket_lucy_3d" + } + }, + { + "when": "wild", + "model": { + "type": "minecraft:model", + "model": "minecraft:item/axolotl_bucket_wild_3d" + } + }, + { + "when": "gold", + "model": { + "type": "minecraft:model", + "model": "minecraft:item/axolotl_bucket_gold_3d" + } + }, + { + "when": "cyan", + "model": { + "type": "minecraft:model", + "model": "minecraft:item/axolotl_bucket_cyan_3d" + } + }, + { + "when": "blue", + "model": { + "type": "minecraft:model", + "model": "minecraft:item/axolotl_bucket_blue_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/axolotl_bucket_lucy_3d" + } + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/axolotl_bucket" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/bamboo_chest_raft.json b/src/main/resources/assets/minecraft/items/bamboo_chest_raft.json new file mode 100644 index 0000000..7738698 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/bamboo_chest_raft.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bamboo_chest_raft_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/bamboo_chest_raft" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/bamboo_raft.json b/src/main/resources/assets/minecraft/items/bamboo_raft.json new file mode 100644 index 0000000..a0bb8d1 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/bamboo_raft.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bamboo_raft_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/bamboo_raft" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/birch_boat.json b/src/main/resources/assets/minecraft/items/birch_boat.json new file mode 100644 index 0000000..8f3536d --- /dev/null +++ b/src/main/resources/assets/minecraft/items/birch_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/birch_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/birch_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/birch_chest_boat.json b/src/main/resources/assets/minecraft/items/birch_chest_boat.json new file mode 100644 index 0000000..695dd54 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/birch_chest_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/birch_chest_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/birch_chest_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/bucket.json b/src/main/resources/assets/minecraft/items/bucket.json new file mode 100644 index 0000000..ce61c11 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/bucket.json @@ -0,0 +1,36 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bucket" + } + }, + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/bucket_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/bucket" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/cherry_boat.json b/src/main/resources/assets/minecraft/items/cherry_boat.json new file mode 100644 index 0000000..377239f --- /dev/null +++ b/src/main/resources/assets/minecraft/items/cherry_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cherry_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/cherry_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/cherry_chest_boat.json b/src/main/resources/assets/minecraft/items/cherry_chest_boat.json new file mode 100644 index 0000000..4d42b8c --- /dev/null +++ b/src/main/resources/assets/minecraft/items/cherry_chest_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cherry_chest_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/cherry_chest_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/cod_bucket.json b/src/main/resources/assets/minecraft/items/cod_bucket.json new file mode 100644 index 0000000..71e2aa0 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/cod_bucket.json @@ -0,0 +1,36 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cod_bucket" + } + }, + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/cod_bucket_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/cod_bucket" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/dark_oak_boat.json b/src/main/resources/assets/minecraft/items/dark_oak_boat.json new file mode 100644 index 0000000..a1f1381 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/dark_oak_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dark_oak_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/dark_oak_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/dark_oak_chest_boat.json b/src/main/resources/assets/minecraft/items/dark_oak_chest_boat.json new file mode 100644 index 0000000..639fefc --- /dev/null +++ b/src/main/resources/assets/minecraft/items/dark_oak_chest_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/dark_oak_chest_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/dark_oak_chest_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/end_crystal.json b/src/main/resources/assets/minecraft/items/end_crystal.json new file mode 100644 index 0000000..a94e6ad --- /dev/null +++ b/src/main/resources/assets/minecraft/items/end_crystal.json @@ -0,0 +1,23 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/end_crystal_2d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/end_crystal" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/jungle_boat.json b/src/main/resources/assets/minecraft/items/jungle_boat.json new file mode 100644 index 0000000..16ed7e4 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/jungle_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/jungle_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/jungle_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/jungle_chest_boat.json b/src/main/resources/assets/minecraft/items/jungle_chest_boat.json new file mode 100644 index 0000000..0dab705 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/jungle_chest_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/jungle_chest_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/jungle_chest_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/lava_bucket.json b/src/main/resources/assets/minecraft/items/lava_bucket.json new file mode 100644 index 0000000..1b2b2d1 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/lava_bucket.json @@ -0,0 +1,36 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/lava_bucket" + } + }, + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/lava_bucket_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/lava_bucket" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/leaf_litter.json b/src/main/resources/assets/minecraft/items/leaf_litter.json new file mode 100644 index 0000000..db351ea --- /dev/null +++ b/src/main/resources/assets/minecraft/items/leaf_litter.json @@ -0,0 +1,23 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/leaf_litter_2d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/leaf_litter_3d" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/mangrove_boat.json b/src/main/resources/assets/minecraft/items/mangrove_boat.json new file mode 100644 index 0000000..c015695 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/mangrove_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/mangrove_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/mangrove_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/mangrove_chest_boat.json b/src/main/resources/assets/minecraft/items/mangrove_chest_boat.json new file mode 100644 index 0000000..5477980 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/mangrove_chest_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/mangrove_chest_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/mangrove_chest_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/milk_bucket.json b/src/main/resources/assets/minecraft/items/milk_bucket.json new file mode 100644 index 0000000..b6d82cb --- /dev/null +++ b/src/main/resources/assets/minecraft/items/milk_bucket.json @@ -0,0 +1,172 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/milk_bucket" + } + }, + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head" + ], + "model": { + "type": "minecraft:condition", + "property": "minecraft:using_item", + "on_true": { + "type": "minecraft:range_dispatch", + "property": "minecraft:use_duration", + "entries": [ + { + "threshold": 0, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_0" + } + }, + { + "threshold": 8, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_1" + } + }, + { + "threshold": 9.5, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_2" + } + }, + { + "threshold": 11, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_3" + } + }, + { + "threshold": 12.5, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_4" + } + }, + { + "threshold": 14, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_5" + } + }, + { + "threshold": 15.5, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_6" + } + }, + { + "threshold": 17, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_7" + } + }, + { + "threshold": 18.5, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_8" + } + }, + { + "threshold": 20, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_9" + } + }, + { + "threshold": 21.5, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_10" + } + }, + { + "threshold": 23, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_11" + } + }, + { + "threshold": 24.5, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_12" + } + }, + { + "threshold": 26, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_13" + } + }, + { + "threshold": 27.5, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_14" + } + }, + { + "threshold": 29, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_15" + } + }, + { + "threshold": 30.5, + "model": { + "type": "minecraft:model", + "model": "item/eatinganimation/milk_bucket_drink_16" + } + }, + { + "threshold": 31.5, + "model": { + "type": "minecraft:model", + "model": "item/milk_bucket_3d" + } + } + ] + }, + "on_false": { + "type": "minecraft:model", + "model": "item/milk_bucket_3d" + } + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/milk_bucket" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/oak_boat.json b/src/main/resources/assets/minecraft/items/oak_boat.json new file mode 100644 index 0000000..4cdc0c9 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/oak_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/oak_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/oak_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/oak_chest_boat.json b/src/main/resources/assets/minecraft/items/oak_chest_boat.json new file mode 100644 index 0000000..13ea4b2 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/oak_chest_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/oak_chest_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/oak_chest_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/pale_oak_boat.json b/src/main/resources/assets/minecraft/items/pale_oak_boat.json new file mode 100644 index 0000000..fb88795 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/pale_oak_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pale_oak_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/pale_oak_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/pale_oak_chest_boat.json b/src/main/resources/assets/minecraft/items/pale_oak_chest_boat.json new file mode 100644 index 0000000..aab7663 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/pale_oak_chest_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pale_oak_chest_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/pale_oak_chest_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/pink_petals.json b/src/main/resources/assets/minecraft/items/pink_petals.json new file mode 100644 index 0000000..338e5dc --- /dev/null +++ b/src/main/resources/assets/minecraft/items/pink_petals.json @@ -0,0 +1,23 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pink_petals_2d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/pink_petals_3d" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/powder_snow_bucket.json b/src/main/resources/assets/minecraft/items/powder_snow_bucket.json new file mode 100644 index 0000000..0e23fe1 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/powder_snow_bucket.json @@ -0,0 +1,36 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/powder_snow_bucket" + } + }, + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/powder_snow_bucket_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/powder_snow_bucket" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/pufferfish_bucket.json b/src/main/resources/assets/minecraft/items/pufferfish_bucket.json new file mode 100644 index 0000000..c17bd39 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/pufferfish_bucket.json @@ -0,0 +1,36 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pufferfish_bucket" + } + }, + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/pufferfish_bucket_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/pufferfish_bucket" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/salmon_bucket.json b/src/main/resources/assets/minecraft/items/salmon_bucket.json new file mode 100644 index 0000000..3dedfb1 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/salmon_bucket.json @@ -0,0 +1,36 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/salmon_bucket" + } + }, + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/salmon_bucket_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/salmon_bucket" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/spruce_boat.json b/src/main/resources/assets/minecraft/items/spruce_boat.json new file mode 100644 index 0000000..e452c14 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/spruce_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/spruce_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/spruce_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/spruce_chest_boat.json b/src/main/resources/assets/minecraft/items/spruce_chest_boat.json new file mode 100644 index 0000000..dbf16fe --- /dev/null +++ b/src/main/resources/assets/minecraft/items/spruce_chest_boat.json @@ -0,0 +1,26 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/spruce_chest_boat_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/spruce_chest_boat" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/tadpole_bucket.json b/src/main/resources/assets/minecraft/items/tadpole_bucket.json new file mode 100644 index 0000000..e740ebb --- /dev/null +++ b/src/main/resources/assets/minecraft/items/tadpole_bucket.json @@ -0,0 +1,36 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/tadpole_bucket" + } + }, + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/tadpole_bucket_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/tadpole_bucket" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/tropical_fish_bucket.json b/src/main/resources/assets/minecraft/items/tropical_fish_bucket.json new file mode 100644 index 0000000..442b71f --- /dev/null +++ b/src/main/resources/assets/minecraft/items/tropical_fish_bucket.json @@ -0,0 +1,36 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/tropical_fish_bucket" + } + }, + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/tropical_fish_bucket_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/tropical_fish_bucket" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/water_bucket.json b/src/main/resources/assets/minecraft/items/water_bucket.json new file mode 100644 index 0000000..064f29e --- /dev/null +++ b/src/main/resources/assets/minecraft/items/water_bucket.json @@ -0,0 +1,36 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/water_bucket" + } + }, + { + "when": [ + "firstperson_righthand", + "firstperson_lefthand", + "thirdperson_righthand", + "thirdperson_lefthand", + "head" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/water_bucket_3d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/water_bucket" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/items/wildflowers.json b/src/main/resources/assets/minecraft/items/wildflowers.json new file mode 100644 index 0000000..eb898c5 --- /dev/null +++ b/src/main/resources/assets/minecraft/items/wildflowers.json @@ -0,0 +1,23 @@ +{ + "model": { + "type": "minecraft:select", + "property": "minecraft:display_context", + "cases": [ + { + "when": [ + "gui", + "fixed", + "ground" + ], + "model": { + "type": "minecraft:model", + "model": "minecraft:item/wildflowers_2d" + } + } + ], + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/wildflowers_3d" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/acacia_boat_3d.json b/src/main/resources/assets/minecraft/models/item/acacia_boat_3d.json new file mode 100644 index 0000000..022ccd3 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/acacia_boat_3d.json @@ -0,0 +1,194 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "2": "item/acacia_boat_3d", + "particle": "item/acacia_boat_3d" + }, + "elements": [ + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#2"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#2"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#2"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#2"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#2"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#2"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#2"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#2"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#2"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#2"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#2"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#2"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#2"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#2"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#2"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#2"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#2"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#2"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#2"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#2"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [5, 6] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [7, 8] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/acacia_chest_boat_3d.json b/src/main/resources/assets/minecraft/models/item/acacia_chest_boat_3d.json new file mode 100644 index 0000000..9914d61 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/acacia_chest_boat_3d.json @@ -0,0 +1,242 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "1": "item/acacia_boat_3d", + "2": "item/boat_chest_3d", + "particle": "item/acacia_boat_3d" + }, + "elements": [ + { + "name": "top", + "from": [4.5, 6, 6.5], + "to": [11.5, 9, 13.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "east": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "south": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "west": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "up": {"uv": [7, 14, 0, 7], "texture": "#2"}, + "down": {"uv": [14, 0, 7, 7], "texture": "#2"} + } + }, + { + "name": "lock", + "from": [7.5, 5, 5.5], + "to": [8.5, 7, 6.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [0, 14, 1, 16], "texture": "#2"}, + "east": {"uv": [14, 0, 15, 2], "texture": "#2"}, + "south": {"uv": [1, 14, 2, 16], "texture": "#2"}, + "west": {"uv": [2, 14, 3, 16], "texture": "#2"}, + "up": {"uv": [15, 3, 14, 2], "texture": "#2"}, + "down": {"uv": [4, 14, 3, 15], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4.5, 2, 6.5], + "to": [11.5, 6, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "east": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "south": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "west": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "up": {"uv": [7, 7, 0, 0], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#1"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#1"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#1"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#1"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#1"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#1"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#1"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#1"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#1"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#1"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#1"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#1"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#1"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#1"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#1"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#1"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#1"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#1"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#1"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#1"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "chest", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2] + }, + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [3, 4, 5, 6, 7] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [8, 9] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [10, 11] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/axolotl_bucket_blue_2d.json b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_blue_2d.json new file mode 100644 index 0000000..97f75e3 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_blue_2d.json @@ -0,0 +1,7 @@ +{ + "credit": "Made with Blockbench", + "parent": "minecraft:item/generated", + "textures": { + "layer0": "item/axolotl_bucket_blue_2d" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/axolotl_bucket_blue_3d.json b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_blue_3d.json new file mode 100644 index 0000000..520ebcc --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_blue_3d.json @@ -0,0 +1,275 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/water_bucket_3d", + "2": "item/axolotl_bucket_blue_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "name": "head", + "from": [4, 13, 2], + "to": [12, 18, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [1.25, 1.5, 3.25, 2.75], "texture": "#2"}, + "east": {"uv": [0, 1.5, 1.25, 2.75], "texture": "#2"}, + "south": {"uv": [4.5, 1.5, 6.5, 2.75], "texture": "#2"}, + "west": {"uv": [3.25, 1.5, 4.5, 2.75], "texture": "#2"}, + "up": {"uv": [3.25, 1.5, 1.25, 0.25], "texture": "#2"}, + "down": {"uv": [5.25, 0.25, 3.25, 1.5], "texture": "#2"} + } + }, + { + "name": "top_gills", + "from": [4, 18, 6], + "to": [12, 21, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [0.75, 9.25, 2.75, 10], "texture": "#2"}, + "south": {"uv": [0.75, 9.25, 2.75, 10], "texture": "#2"} + } + }, + { + "name": "left_gills", + "from": [12, 13, 6], + "to": [15, 20, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [0, 10, 0.75, 11.75], "texture": "#2"}, + "south": {"uv": [0.75, 10, 0, 11.75], "texture": "#2"} + } + }, + { + "name": "right_gills", + "from": [1, 13, 6], + "to": [4, 20, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [2.75, 10, 3.5, 11.75], "texture": "#2"}, + "south": {"uv": [3.5, 10, 2.75, 11.75], "texture": "#2"} + } + }, + { + "name": "body", + "from": [4.01, 3.01, 3.01], + "to": [11.99, 12.99, 6.99], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 13, 3]}, + "faces": { + "north": {"uv": [6.5, 2.75, 4.5, 5.25], "rotation": 180, "texture": "#2"}, + "east": {"uv": [0, 5.25, 2.5, 6.25], "rotation": 270, "texture": "#2"}, + "south": {"uv": [4.5, 5.25, 2.5, 2.75], "texture": "#2"}, + "west": {"uv": [4.5, 5.25, 7, 6.25], "rotation": 90, "texture": "#2"}, + "up": {"uv": [2.5, 5.25, 4.5, 6.25], "rotation": 180, "texture": "#2"}, + "down": {"uv": [7, 5.25, 9, 6.25], "texture": "#2"} + } + }, + { + "name": "body", + "from": [8, 3, 3], + "to": [8, 12, 8], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 13, 3]}, + "faces": { + "east": {"uv": [0.5, 6.5, 2.75, 7.75], "rotation": 270, "texture": "#2"}, + "west": {"uv": [2.75, 6.5, 0.5, 7.75], "rotation": 90, "texture": "#2"} + } + }, + { + "name": "leg1", + "from": [3.5, 8, 2.5], + "to": [6.5, 13, 2.5], + "rotation": {"angle": 45, "axis": "x", "origin": [5, 10.5, 2.5]}, + "faces": { + "north": {"uv": [0.5, 3.25, 1.25, 4.5], "texture": "#2"}, + "south": {"uv": [1.25, 3.25, 2, 4.5], "texture": "#2"} + } + }, + { + "name": "leg2", + "from": [9.5, 8, 2.5], + "to": [12.5, 13, 2.5], + "rotation": {"angle": 45, "axis": "x", "origin": [11, 10.5, 2.5]}, + "faces": { + "north": {"uv": [0.5, 3.25, 1.25, 4.5], "texture": "#2"}, + "south": {"uv": [1.25, 3.25, 2, 4.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + }, + { + "from": [4, 3, 4], + "to": [12, 10, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]}, + "faces": { + "north": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "east": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "south": {"uv": [4, 14, 12, 6], "texture": "#1"}, + "west": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "up": {"uv": [4, 6, 12, 14], "texture": "#1", "tintindex": 0}, + "down": {"uv": [4, 6, 12, 14], "texture": "#1", "tintindex": 0} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 135, 0], + "translation": [0, 0.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, -0.75, 0.25] + } + }, + "groups": [ + { + "name": "tail", + "origin": [0, 6, 5], + "color": 0, + "children": [ + { + "name": "head", + "origin": [0, 6, -5], + "color": 0, + "children": [0] + }, + { + "name": "top_gills", + "origin": [0, 9, -6], + "color": 0, + "children": [1] + }, + { + "name": "left_gills", + "origin": [4, 6, -6], + "color": 0, + "children": [2] + }, + { + "name": "right_gills", + "origin": [-4, 6, -6], + "color": 0, + "children": [3] + }, + { + "name": "body", + "origin": [0, 6, 4], + "color": 0, + "children": [4, 5] + }, + { + "name": "legs", + "origin": [-3.5, 5, -4], + "color": 0, + "children": [6, 7] + } + ] + }, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [8, 9, 10, 11, 12] + }, + 13 + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/axolotl_bucket_cyan_2d.json b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_cyan_2d.json new file mode 100644 index 0000000..19d70ba --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_cyan_2d.json @@ -0,0 +1,7 @@ +{ + "credit": "Made with Blockbench", + "parent": "minecraft:item/generated", + "textures": { + "layer0": "item/axolotl_bucket_cyan_2d" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/axolotl_bucket_cyan_3d.json b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_cyan_3d.json new file mode 100644 index 0000000..7988836 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_cyan_3d.json @@ -0,0 +1,275 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/water_bucket_3d", + "2": "item/axolotl_bucket_cyan_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "name": "head", + "from": [4, 13, 2], + "to": [12, 18, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [1.25, 1.5, 3.25, 2.75], "texture": "#2"}, + "east": {"uv": [0, 1.5, 1.25, 2.75], "texture": "#2"}, + "south": {"uv": [4.5, 1.5, 6.5, 2.75], "texture": "#2"}, + "west": {"uv": [3.25, 1.5, 4.5, 2.75], "texture": "#2"}, + "up": {"uv": [3.25, 1.5, 1.25, 0.25], "texture": "#2"}, + "down": {"uv": [5.25, 0.25, 3.25, 1.5], "texture": "#2"} + } + }, + { + "name": "top_gills", + "from": [4, 18, 6], + "to": [12, 21, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [0.75, 9.25, 2.75, 10], "texture": "#2"}, + "south": {"uv": [0.75, 9.25, 2.75, 10], "texture": "#2"} + } + }, + { + "name": "left_gills", + "from": [12, 13, 6], + "to": [15, 20, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [0, 10, 0.75, 11.75], "texture": "#2"}, + "south": {"uv": [0.75, 10, 0, 11.75], "texture": "#2"} + } + }, + { + "name": "right_gills", + "from": [1, 13, 6], + "to": [4, 20, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [2.75, 10, 3.5, 11.75], "texture": "#2"}, + "south": {"uv": [3.5, 10, 2.75, 11.75], "texture": "#2"} + } + }, + { + "name": "body", + "from": [4.01, 3.01, 3.01], + "to": [11.99, 12.99, 6.99], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 13, 3]}, + "faces": { + "north": {"uv": [6.5, 2.75, 4.5, 5.25], "rotation": 180, "texture": "#2"}, + "east": {"uv": [0, 5.25, 2.5, 6.25], "rotation": 270, "texture": "#2"}, + "south": {"uv": [4.5, 5.25, 2.5, 2.75], "texture": "#2"}, + "west": {"uv": [4.5, 5.25, 7, 6.25], "rotation": 90, "texture": "#2"}, + "up": {"uv": [2.5, 5.25, 4.5, 6.25], "rotation": 180, "texture": "#2"}, + "down": {"uv": [7, 5.25, 9, 6.25], "texture": "#2"} + } + }, + { + "name": "body", + "from": [8, 3, 3], + "to": [8, 12, 8], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 13, 3]}, + "faces": { + "east": {"uv": [0.5, 6.5, 2.75, 7.75], "rotation": 270, "texture": "#2"}, + "west": {"uv": [2.75, 6.5, 0.5, 7.75], "rotation": 90, "texture": "#2"} + } + }, + { + "name": "leg1", + "from": [3.5, 8, 2.5], + "to": [6.5, 13, 2.5], + "rotation": {"angle": 45, "axis": "x", "origin": [5, 10.5, 2.5]}, + "faces": { + "north": {"uv": [0.5, 3.25, 1.25, 4.5], "texture": "#2"}, + "south": {"uv": [1.25, 3.25, 2, 4.5], "texture": "#2"} + } + }, + { + "name": "leg2", + "from": [9.5, 8, 2.5], + "to": [12.5, 13, 2.5], + "rotation": {"angle": 45, "axis": "x", "origin": [11, 10.5, 2.5]}, + "faces": { + "north": {"uv": [0.5, 3.25, 1.25, 4.5], "texture": "#2"}, + "south": {"uv": [1.25, 3.25, 2, 4.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + }, + { + "from": [4, 3, 4], + "to": [12, 10, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]}, + "faces": { + "north": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "east": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "south": {"uv": [4, 14, 12, 6], "texture": "#1"}, + "west": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "up": {"uv": [4, 6, 12, 14], "texture": "#1", "tintindex": 0}, + "down": {"uv": [4, 6, 12, 14], "texture": "#1", "tintindex": 0} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 135, 0], + "translation": [0, 0.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, -0.75, 0.25] + } + }, + "groups": [ + { + "name": "tail", + "origin": [0, 6, 5], + "color": 0, + "children": [ + { + "name": "head", + "origin": [0, 6, -5], + "color": 0, + "children": [0] + }, + { + "name": "top_gills", + "origin": [0, 9, -6], + "color": 0, + "children": [1] + }, + { + "name": "left_gills", + "origin": [4, 6, -6], + "color": 0, + "children": [2] + }, + { + "name": "right_gills", + "origin": [-4, 6, -6], + "color": 0, + "children": [3] + }, + { + "name": "body", + "origin": [0, 6, 4], + "color": 0, + "children": [4, 5] + }, + { + "name": "legs", + "origin": [-3.5, 5, -4], + "color": 0, + "children": [6, 7] + } + ] + }, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [8, 9, 10, 11, 12] + }, + 13 + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/axolotl_bucket_gold_2d.json b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_gold_2d.json new file mode 100644 index 0000000..a0d12f9 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_gold_2d.json @@ -0,0 +1,7 @@ +{ + "credit": "Made with Blockbench", + "parent": "minecraft:item/generated", + "textures": { + "layer0": "item/axolotl_bucket_gold_2d" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/axolotl_bucket_gold_3d.json b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_gold_3d.json new file mode 100644 index 0000000..6cb0fde --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_gold_3d.json @@ -0,0 +1,275 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/water_bucket_3d", + "2": "item/axolotl_bucket_gold_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "name": "head", + "from": [4, 13, 2], + "to": [12, 18, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [1.25, 1.5, 3.25, 2.75], "texture": "#2"}, + "east": {"uv": [0, 1.5, 1.25, 2.75], "texture": "#2"}, + "south": {"uv": [4.5, 1.5, 6.5, 2.75], "texture": "#2"}, + "west": {"uv": [3.25, 1.5, 4.5, 2.75], "texture": "#2"}, + "up": {"uv": [3.25, 1.5, 1.25, 0.25], "texture": "#2"}, + "down": {"uv": [5.25, 0.25, 3.25, 1.5], "texture": "#2"} + } + }, + { + "name": "top_gills", + "from": [4, 18, 6], + "to": [12, 21, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [0.75, 9.25, 2.75, 10], "texture": "#2"}, + "south": {"uv": [0.75, 9.25, 2.75, 10], "texture": "#2"} + } + }, + { + "name": "left_gills", + "from": [12, 13, 6], + "to": [15, 20, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [0, 10, 0.75, 11.75], "texture": "#2"}, + "south": {"uv": [0.75, 10, 0, 11.75], "texture": "#2"} + } + }, + { + "name": "right_gills", + "from": [1, 13, 6], + "to": [4, 20, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [2.75, 10, 3.5, 11.75], "texture": "#2"}, + "south": {"uv": [3.5, 10, 2.75, 11.75], "texture": "#2"} + } + }, + { + "name": "body", + "from": [4.01, 3.01, 3.01], + "to": [11.99, 12.99, 6.99], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 13, 3]}, + "faces": { + "north": {"uv": [6.5, 2.75, 4.5, 5.25], "rotation": 180, "texture": "#2"}, + "east": {"uv": [0, 5.25, 2.5, 6.25], "rotation": 270, "texture": "#2"}, + "south": {"uv": [4.5, 5.25, 2.5, 2.75], "texture": "#2"}, + "west": {"uv": [4.5, 5.25, 7, 6.25], "rotation": 90, "texture": "#2"}, + "up": {"uv": [2.5, 5.25, 4.5, 6.25], "rotation": 180, "texture": "#2"}, + "down": {"uv": [7, 5.25, 9, 6.25], "texture": "#2"} + } + }, + { + "name": "body", + "from": [8, 3, 3], + "to": [8, 12, 8], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 13, 3]}, + "faces": { + "east": {"uv": [0.5, 6.5, 2.75, 7.75], "rotation": 270, "texture": "#2"}, + "west": {"uv": [2.75, 6.5, 0.5, 7.75], "rotation": 90, "texture": "#2"} + } + }, + { + "name": "leg1", + "from": [3.5, 8, 2.5], + "to": [6.5, 13, 2.5], + "rotation": {"angle": 45, "axis": "x", "origin": [5, 10.5, 2.5]}, + "faces": { + "north": {"uv": [0.5, 3.25, 1.25, 4.5], "texture": "#2"}, + "south": {"uv": [1.25, 3.25, 2, 4.5], "texture": "#2"} + } + }, + { + "name": "leg2", + "from": [9.5, 8, 2.5], + "to": [12.5, 13, 2.5], + "rotation": {"angle": 45, "axis": "x", "origin": [11, 10.5, 2.5]}, + "faces": { + "north": {"uv": [0.5, 3.25, 1.25, 4.5], "texture": "#2"}, + "south": {"uv": [1.25, 3.25, 2, 4.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + }, + { + "from": [4, 3, 4], + "to": [12, 10, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]}, + "faces": { + "north": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "east": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "south": {"uv": [4, 14, 12, 6], "texture": "#1"}, + "west": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "up": {"uv": [4, 6, 12, 14], "texture": "#1", "tintindex": 0}, + "down": {"uv": [4, 6, 12, 14], "texture": "#1", "tintindex": 0} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 135, 0], + "translation": [0, 0.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, -0.75, 0.25] + } + }, + "groups": [ + { + "name": "tail", + "origin": [0, 6, 5], + "color": 0, + "children": [ + { + "name": "head", + "origin": [0, 6, -5], + "color": 0, + "children": [0] + }, + { + "name": "top_gills", + "origin": [0, 9, -6], + "color": 0, + "children": [1] + }, + { + "name": "left_gills", + "origin": [4, 6, -6], + "color": 0, + "children": [2] + }, + { + "name": "right_gills", + "origin": [-4, 6, -6], + "color": 0, + "children": [3] + }, + { + "name": "body", + "origin": [0, 6, 4], + "color": 0, + "children": [4, 5] + }, + { + "name": "legs", + "origin": [-3.5, 5, -4], + "color": 0, + "children": [6, 7] + } + ] + }, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [8, 9, 10, 11, 12] + }, + 13 + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/axolotl_bucket_lucy_2d.json b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_lucy_2d.json new file mode 100644 index 0000000..73aba66 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_lucy_2d.json @@ -0,0 +1,7 @@ +{ + "credit": "Made with Blockbench", + "parent": "minecraft:item/generated", + "textures": { + "layer0": "item/axolotl_bucket_lucy_2d" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/axolotl_bucket_lucy_3d.json b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_lucy_3d.json new file mode 100644 index 0000000..1c90fd4 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_lucy_3d.json @@ -0,0 +1,275 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/water_bucket_3d", + "2": "item/axolotl_bucket_lucy_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "name": "head", + "from": [4, 13, 2], + "to": [12, 18, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [1.25, 1.5, 3.25, 2.75], "texture": "#2"}, + "east": {"uv": [0, 1.5, 1.25, 2.75], "texture": "#2"}, + "south": {"uv": [4.5, 1.5, 6.5, 2.75], "texture": "#2"}, + "west": {"uv": [3.25, 1.5, 4.5, 2.75], "texture": "#2"}, + "up": {"uv": [3.25, 1.5, 1.25, 0.25], "texture": "#2"}, + "down": {"uv": [5.25, 0.25, 3.25, 1.5], "texture": "#2"} + } + }, + { + "name": "top_gills", + "from": [4, 18, 6], + "to": [12, 21, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [0.75, 9.25, 2.75, 10], "texture": "#2"}, + "south": {"uv": [0.75, 9.25, 2.75, 10], "texture": "#2"} + } + }, + { + "name": "left_gills", + "from": [12, 13, 6], + "to": [15, 20, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [0, 10, 0.75, 11.75], "texture": "#2"}, + "south": {"uv": [0.75, 10, 0, 11.75], "texture": "#2"} + } + }, + { + "name": "right_gills", + "from": [1, 13, 6], + "to": [4, 20, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [2.75, 10, 3.5, 11.75], "texture": "#2"}, + "south": {"uv": [3.5, 10, 2.75, 11.75], "texture": "#2"} + } + }, + { + "name": "body", + "from": [4.01, 3.01, 3.01], + "to": [11.99, 12.99, 6.99], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 13, 3]}, + "faces": { + "north": {"uv": [6.5, 2.75, 4.5, 5.25], "rotation": 180, "texture": "#2"}, + "east": {"uv": [0, 5.25, 2.5, 6.25], "rotation": 270, "texture": "#2"}, + "south": {"uv": [4.5, 5.25, 2.5, 2.75], "texture": "#2"}, + "west": {"uv": [4.5, 5.25, 7, 6.25], "rotation": 90, "texture": "#2"}, + "up": {"uv": [2.5, 5.25, 4.5, 6.25], "rotation": 180, "texture": "#2"}, + "down": {"uv": [7, 5.25, 9, 6.25], "texture": "#2"} + } + }, + { + "name": "body", + "from": [8, 3, 3], + "to": [8, 12, 8], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 13, 3]}, + "faces": { + "east": {"uv": [0.5, 6.5, 2.75, 7.75], "rotation": 270, "texture": "#2"}, + "west": {"uv": [2.75, 6.5, 0.5, 7.75], "rotation": 90, "texture": "#2"} + } + }, + { + "name": "leg1", + "from": [3.5, 8, 2.5], + "to": [6.5, 13, 2.5], + "rotation": {"angle": 45, "axis": "x", "origin": [5, 10.5, 2.5]}, + "faces": { + "north": {"uv": [0.5, 3.25, 1.25, 4.5], "texture": "#2"}, + "south": {"uv": [1.25, 3.25, 2, 4.5], "texture": "#2"} + } + }, + { + "name": "leg2", + "from": [9.5, 8, 2.5], + "to": [12.5, 13, 2.5], + "rotation": {"angle": 45, "axis": "x", "origin": [11, 10.5, 2.5]}, + "faces": { + "north": {"uv": [0.5, 3.25, 1.25, 4.5], "texture": "#2"}, + "south": {"uv": [1.25, 3.25, 2, 4.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + }, + { + "from": [4, 3, 4], + "to": [12, 10, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]}, + "faces": { + "north": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "east": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "south": {"uv": [4, 14, 12, 6], "texture": "#1"}, + "west": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "up": {"uv": [4, 6, 12, 14], "texture": "#1", "tintindex": 0}, + "down": {"uv": [4, 6, 12, 14], "texture": "#1", "tintindex": 0} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 135, 0], + "translation": [0, 0.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, -0.75, 0.25] + } + }, + "groups": [ + { + "name": "tail", + "origin": [0, 6, 5], + "color": 0, + "children": [ + { + "name": "head", + "origin": [0, 6, -5], + "color": 0, + "children": [0] + }, + { + "name": "top_gills", + "origin": [0, 9, -6], + "color": 0, + "children": [1] + }, + { + "name": "left_gills", + "origin": [4, 6, -6], + "color": 0, + "children": [2] + }, + { + "name": "right_gills", + "origin": [-4, 6, -6], + "color": 0, + "children": [3] + }, + { + "name": "body", + "origin": [0, 6, 4], + "color": 0, + "children": [4, 5] + }, + { + "name": "legs", + "origin": [-3.5, 5, -4], + "color": 0, + "children": [6, 7] + } + ] + }, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [8, 9, 10, 11, 12] + }, + 13 + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/axolotl_bucket_wild_2d.json b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_wild_2d.json new file mode 100644 index 0000000..bc093e4 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_wild_2d.json @@ -0,0 +1,7 @@ +{ + "credit": "Made with Blockbench", + "parent": "minecraft:item/generated", + "textures": { + "layer0": "item/axolotl_bucket_wild_2d" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/axolotl_bucket_wild_3d.json b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_wild_3d.json new file mode 100644 index 0000000..cfbe4fd --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/axolotl_bucket_wild_3d.json @@ -0,0 +1,275 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/water_bucket_3d", + "3": "item/axolotl_bucket_wild_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "name": "head", + "from": [4, 13, 2], + "to": [12, 18, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [1.25, 1.5, 3.25, 2.75], "texture": "#3"}, + "east": {"uv": [0, 1.5, 1.25, 2.75], "texture": "#3"}, + "south": {"uv": [4.5, 1.5, 6.5, 2.75], "texture": "#3"}, + "west": {"uv": [3.25, 1.5, 4.5, 2.75], "texture": "#3"}, + "up": {"uv": [3.25, 1.5, 1.25, 0.25], "texture": "#3"}, + "down": {"uv": [5.25, 0.25, 3.25, 1.5], "texture": "#3"} + } + }, + { + "name": "top_gills", + "from": [4, 18, 6], + "to": [12, 21, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [0.75, 9.25, 2.75, 10], "texture": "#3"}, + "south": {"uv": [0.75, 9.25, 2.75, 10], "texture": "#3"} + } + }, + { + "name": "left_gills", + "from": [12, 13, 6], + "to": [15, 20, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [0, 10, 0.75, 11.75], "texture": "#3"}, + "south": {"uv": [0.75, 10, 0, 11.75], "texture": "#3"} + } + }, + { + "name": "right_gills", + "from": [1, 13, 6], + "to": [4, 20, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 12]}, + "faces": { + "north": {"uv": [2.75, 10, 3.5, 11.75], "texture": "#3"}, + "south": {"uv": [3.5, 10, 2.75, 11.75], "texture": "#3"} + } + }, + { + "name": "body", + "from": [4.01, 3.01, 3.01], + "to": [11.99, 12.99, 6.99], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 13, 3]}, + "faces": { + "north": {"uv": [6.5, 2.75, 4.5, 5.25], "rotation": 180, "texture": "#3"}, + "east": {"uv": [0, 5.25, 2.5, 6.25], "rotation": 270, "texture": "#3"}, + "south": {"uv": [4.5, 5.25, 2.5, 2.75], "texture": "#3"}, + "west": {"uv": [4.5, 5.25, 7, 6.25], "rotation": 90, "texture": "#3"}, + "up": {"uv": [2.5, 5.25, 4.5, 6.25], "rotation": 180, "texture": "#3"}, + "down": {"uv": [7, 5.25, 9, 6.25], "texture": "#3"} + } + }, + { + "name": "body", + "from": [8, 3, 3], + "to": [8, 12, 8], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 13, 3]}, + "faces": { + "east": {"uv": [0.5, 6.5, 2.75, 7.75], "rotation": 270, "texture": "#3"}, + "west": {"uv": [2.75, 6.5, 0.5, 7.75], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "leg1", + "from": [3.5, 8, 2.5], + "to": [6.5, 13, 2.5], + "rotation": {"angle": 45, "axis": "x", "origin": [5, 10.5, 2.5]}, + "faces": { + "north": {"uv": [0.5, 3.25, 1.25, 4.5], "texture": "#3"}, + "south": {"uv": [1.25, 3.25, 2, 4.5], "texture": "#3"} + } + }, + { + "name": "leg2", + "from": [9.5, 8, 2.5], + "to": [12.5, 13, 2.5], + "rotation": {"angle": 45, "axis": "x", "origin": [11, 10.5, 2.5]}, + "faces": { + "north": {"uv": [0.5, 3.25, 1.25, 4.5], "texture": "#3"}, + "south": {"uv": [1.25, 3.25, 2, 4.5], "texture": "#3"} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + }, + { + "from": [4, 3, 4], + "to": [12, 10, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]}, + "faces": { + "north": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "east": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "south": {"uv": [4, 14, 12, 6], "texture": "#1"}, + "west": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "up": {"uv": [4, 6, 12, 14], "texture": "#1", "tintindex": 0}, + "down": {"uv": [4, 6, 12, 14], "texture": "#1", "tintindex": 0} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 135, 0], + "translation": [0, 0.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, -0.75, 0.25] + } + }, + "groups": [ + { + "name": "tail", + "origin": [0, 6, 5], + "color": 0, + "children": [ + { + "name": "head", + "origin": [0, 6, -5], + "color": 0, + "children": [0] + }, + { + "name": "top_gills", + "origin": [0, 9, -6], + "color": 0, + "children": [1] + }, + { + "name": "left_gills", + "origin": [4, 6, -6], + "color": 0, + "children": [2] + }, + { + "name": "right_gills", + "origin": [-4, 6, -6], + "color": 0, + "children": [3] + }, + { + "name": "body", + "origin": [0, 6, 4], + "color": 0, + "children": [4, 5] + }, + { + "name": "legs", + "origin": [-3.5, 5, -4], + "color": 0, + "children": [6, 7] + } + ] + }, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [8, 9, 10, 11, 12] + }, + 13 + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/bamboo_chest_raft_3d.json b/src/main/resources/assets/minecraft/models/item/bamboo_chest_raft_3d.json new file mode 100644 index 0000000..f19969e --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/bamboo_chest_raft_3d.json @@ -0,0 +1,197 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "1": "item/bamboo_raft_3d", + "2": "item/boat_chest_3d", + "particle": "item/bamboo_raft_3d" + }, + "elements": [ + { + "name": "top", + "from": [4.5, 8, 6.5], + "to": [11.5, 11, 13.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 8, 13.5]}, + "faces": { + "north": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "east": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "south": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "west": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "up": {"uv": [7, 14, 0, 7], "texture": "#2"}, + "down": {"uv": [14, 0, 7, 7], "texture": "#2"} + } + }, + { + "name": "lock", + "from": [7.5, 7, 5.5], + "to": [8.5, 9, 6.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 8, 13.5]}, + "faces": { + "north": {"uv": [0, 14, 1, 16], "texture": "#2"}, + "east": {"uv": [14, 0, 15, 2], "texture": "#2"}, + "south": {"uv": [1, 14, 2, 16], "texture": "#2"}, + "west": {"uv": [2, 14, 3, 16], "texture": "#2"}, + "up": {"uv": [15, 3, 14, 2], "texture": "#2"}, + "down": {"uv": [4, 14, 3, 15], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4.5, 4, 6.5], + "to": [11.5, 8, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 4, 7.5]}, + "faces": { + "north": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "east": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "south": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "west": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "up": {"uv": [7, 7, 0, 0], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [10, 10.5, 9.5, 12.5], "texture": "#1"}, + "east": {"uv": [7.5, 10.5, 6, 12.5], "texture": "#1"}, + "south": {"uv": [10.5, 10.5, 10, 12.5], "texture": "#1"}, + "west": {"uv": [6, 10.5, 4.5, 12.5], "texture": "#1"}, + "up": {"uv": [11, 10.5, 10.5, 12], "texture": "#1"}, + "down": {"uv": [11.5, 0, 11, 1.5], "texture": "#1"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 10.5, 7.5, 13], "texture": "#1"}, + "east": {"uv": [9.5, 10.5, 9, 13], "texture": "#1"}, + "south": {"uv": [9, 10.5, 8.5, 13], "texture": "#1"}, + "west": {"uv": [8.5, 10.5, 8, 13], "texture": "#1"}, + "up": {"uv": [11.5, 1.5, 11, 2], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [3.5, 0, 0.5], + "to": [12.5, 2, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [10, 9.5, 14.5, 10.5], "texture": "#1"}, + "east": {"uv": [4.5, 7.5, 12, 8.5], "texture": "#1"}, + "south": {"uv": [10, 9.5, 14.5, 10.5], "texture": "#1"}, + "west": {"uv": [4.5, 7.5, 12, 8.5], "texture": "#1"}, + "down": {"uv": [4.5, 7.5, 0, 15], "texture": "#1"} + } + }, + { + "name": "south", + "from": [2.5, 2, 0.5], + "to": [13.5, 4, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [4.5, 9.5, 10, 10.5], "texture": "#1"}, + "east": {"uv": [4.5, 8.5, 12, 9.5], "texture": "#1"}, + "south": {"uv": [4.5, 9.5, 10, 10.5], "texture": "#1"}, + "west": {"uv": [4.5, 8.5, 12, 9.5], "texture": "#1"}, + "up": {"uv": [5.5, 7.5, 0, 0], "texture": "#1"}, + "down": {"uv": [11, 0, 5.5, 7.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [9.5, 10.5, 10, 12.5], "texture": "#1"}, + "east": {"uv": [4.5, 10.5, 6, 12.5], "texture": "#1"}, + "south": {"uv": [10, 10.5, 10.5, 12.5], "texture": "#1"}, + "west": {"uv": [6, 10.5, 7.5, 12.5], "texture": "#1"}, + "up": {"uv": [11, 12, 10.5, 10.5], "texture": "#1"}, + "down": {"uv": [11.5, 0, 11, 1.5], "texture": "#1"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [7.5, 10.5, 8, 13], "texture": "#1"}, + "east": {"uv": [8, 10.5, 8.5, 13], "texture": "#1"}, + "south": {"uv": [8.5, 10.5, 9, 13], "texture": "#1"}, + "west": {"uv": [9, 10.5, 9.5, 13], "texture": "#1"}, + "up": {"uv": [11.5, 2, 11, 1.5], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "chest", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [3, 4] + }, + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [5, 6] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [7, 8] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/bamboo_raft_3d.json b/src/main/resources/assets/minecraft/models/item/bamboo_raft_3d.json new file mode 100644 index 0000000..6e4dc84 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/bamboo_raft_3d.json @@ -0,0 +1,148 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "2": "item/bamboo_raft_3d" + }, + "elements": [ + { + "name": "bottom", + "from": [3.5, 0, 0.5], + "to": [12.5, 2, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [10, 9.5, 14.5, 10.5], "texture": "#2"}, + "east": {"uv": [4.5, 7.5, 12, 8.5], "texture": "#2"}, + "south": {"uv": [10, 9.5, 14.5, 10.5], "texture": "#2"}, + "west": {"uv": [4.5, 7.5, 12, 8.5], "texture": "#2"}, + "down": {"uv": [4.5, 7.5, 0, 15], "texture": "#2"} + } + }, + { + "name": "south", + "from": [2.5, 2, 0.5], + "to": [13.5, 4, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [4.5, 9.5, 10, 10.5], "texture": "#2"}, + "east": {"uv": [4.5, 8.5, 12, 9.5], "texture": "#2"}, + "south": {"uv": [4.5, 9.5, 10, 10.5], "texture": "#2"}, + "west": {"uv": [4.5, 8.5, 12, 9.5], "texture": "#2"}, + "up": {"uv": [5.5, 7.5, 0, 0], "texture": "#2"}, + "down": {"uv": [11, 0, 5.5, 7.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [9.5, 10.5, 10, 12.5], "texture": "#2"}, + "east": {"uv": [4.5, 10.5, 6, 12.5], "texture": "#2"}, + "south": {"uv": [10, 10.5, 10.5, 12.5], "texture": "#2"}, + "west": {"uv": [6, 10.5, 7.5, 12.5], "texture": "#2"}, + "up": {"uv": [11, 12, 10.5, 10.5], "texture": "#2"}, + "down": {"uv": [11.5, 0, 11, 1.5], "texture": "#2"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [7.5, 10.5, 8, 13], "texture": "#2"}, + "east": {"uv": [8, 10.5, 8.5, 13], "texture": "#2"}, + "south": {"uv": [8.5, 10.5, 9, 13], "texture": "#2"}, + "west": {"uv": [9, 10.5, 9.5, 13], "texture": "#2"}, + "up": {"uv": [11.5, 2, 11, 1.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [10, 10.5, 9.5, 12.5], "texture": "#2"}, + "east": {"uv": [7.5, 10.5, 6, 12.5], "texture": "#2"}, + "south": {"uv": [10.5, 10.5, 10, 12.5], "texture": "#2"}, + "west": {"uv": [6, 10.5, 4.5, 12.5], "texture": "#2"}, + "up": {"uv": [11, 10.5, 10.5, 12], "texture": "#2"}, + "down": {"uv": [11.5, 0, 11, 1.5], "texture": "#2"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 10.5, 7.5, 13], "texture": "#2"}, + "east": {"uv": [9.5, 10.5, 9, 13], "texture": "#2"}, + "south": {"uv": [9, 10.5, 8.5, 13], "texture": "#2"}, + "west": {"uv": [8.5, 10.5, 8, 13], "texture": "#2"}, + "up": {"uv": [11.5, 1.5, 11, 2], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [2, 3] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [4, 5] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/birch_boat_3d.json b/src/main/resources/assets/minecraft/models/item/birch_boat_3d.json new file mode 100644 index 0000000..b9625a5 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/birch_boat_3d.json @@ -0,0 +1,194 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "2": "item/birch_boat_3d", + "particle": "item/birch_boat_3d" + }, + "elements": [ + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#2"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#2"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#2"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#2"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#2"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#2"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#2"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#2"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#2"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#2"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#2"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#2"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#2"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#2"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#2"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#2"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#2"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#2"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#2"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#2"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [5, 6] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [7, 8] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/birch_chest_boat_3d.json b/src/main/resources/assets/minecraft/models/item/birch_chest_boat_3d.json new file mode 100644 index 0000000..99c1462 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/birch_chest_boat_3d.json @@ -0,0 +1,242 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "1": "item/birch_boat_3d", + "2": "item/boat_chest_3d", + "particle": "item/birch_boat_3d" + }, + "elements": [ + { + "name": "top", + "from": [4.5, 6, 6.5], + "to": [11.5, 9, 13.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "east": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "south": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "west": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "up": {"uv": [7, 14, 0, 7], "texture": "#2"}, + "down": {"uv": [14, 0, 7, 7], "texture": "#2"} + } + }, + { + "name": "lock", + "from": [7.5, 5, 5.5], + "to": [8.5, 7, 6.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [0, 14, 1, 16], "texture": "#2"}, + "east": {"uv": [14, 0, 15, 2], "texture": "#2"}, + "south": {"uv": [1, 14, 2, 16], "texture": "#2"}, + "west": {"uv": [2, 14, 3, 16], "texture": "#2"}, + "up": {"uv": [15, 3, 14, 2], "texture": "#2"}, + "down": {"uv": [4, 14, 3, 15], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4.5, 2, 6.5], + "to": [11.5, 6, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "east": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "south": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "west": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "up": {"uv": [7, 7, 0, 0], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#1"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#1"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#1"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#1"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#1"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#1"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#1"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#1"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#1"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#1"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#1"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#1"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#1"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#1"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#1"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#1"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#1"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#1"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#1"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#1"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "chest", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2] + }, + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [3, 4, 5, 6, 7] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [8, 9] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [10, 11] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/bucket_3d.json b/src/main/resources/assets/minecraft/models/item/bucket_3d.json new file mode 100644 index 0000000..26c4e3a --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/bucket_3d.json @@ -0,0 +1,128 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [0, 1, 2, 3, 4] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/cherry_boat_3d.json b/src/main/resources/assets/minecraft/models/item/cherry_boat_3d.json new file mode 100644 index 0000000..ce592b1 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/cherry_boat_3d.json @@ -0,0 +1,194 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "2": "item/cherry_boat_3d", + "particle": "item/cherry_boat_3d" + }, + "elements": [ + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#2"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#2"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#2"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#2"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#2"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#2"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#2"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#2"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#2"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#2"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#2"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#2"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#2"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#2"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#2"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#2"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#2"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#2"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#2"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#2"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [5, 6] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [7, 8] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/cherry_chest_boat_3d.json b/src/main/resources/assets/minecraft/models/item/cherry_chest_boat_3d.json new file mode 100644 index 0000000..93c159f --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/cherry_chest_boat_3d.json @@ -0,0 +1,242 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "1": "item/cherry_boat_3d", + "2": "item/boat_chest_3d", + "particle": "item/cherry_boat_3d" + }, + "elements": [ + { + "name": "top", + "from": [4.5, 6, 6.5], + "to": [11.5, 9, 13.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "east": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "south": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "west": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "up": {"uv": [7, 14, 0, 7], "texture": "#2"}, + "down": {"uv": [14, 0, 7, 7], "texture": "#2"} + } + }, + { + "name": "lock", + "from": [7.5, 5, 5.5], + "to": [8.5, 7, 6.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [0, 14, 1, 16], "texture": "#2"}, + "east": {"uv": [14, 0, 15, 2], "texture": "#2"}, + "south": {"uv": [1, 14, 2, 16], "texture": "#2"}, + "west": {"uv": [2, 14, 3, 16], "texture": "#2"}, + "up": {"uv": [15, 3, 14, 2], "texture": "#2"}, + "down": {"uv": [4, 14, 3, 15], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4.5, 2, 6.5], + "to": [11.5, 6, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "east": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "south": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "west": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "up": {"uv": [7, 7, 0, 0], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#1"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#1"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#1"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#1"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#1"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#1"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#1"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#1"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#1"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#1"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#1"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#1"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#1"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#1"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#1"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#1"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#1"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#1"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#1"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#1"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "chest", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2] + }, + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [3, 4, 5, 6, 7] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [8, 9] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [10, 11] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/cod_bucket_3d.json b/src/main/resources/assets/minecraft/models/item/cod_bucket_3d.json new file mode 100644 index 0000000..e3d58bc --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/cod_bucket_3d.json @@ -0,0 +1,279 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/water_bucket_3d", + "2": "item/cod_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "name": "body", + "from": [6.76, 12.28754, 2.69293], + "to": [9.24, 17.26754, 11.42293], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 12.27754, 2.68293]}, + "faces": { + "north": {"uv": [3.5, 3.5, 4.5, 5.5], "texture": "#2"}, + "east": {"uv": [0, 3.5, 3.5, 5.5], "texture": "#2"}, + "south": {"uv": [8, 3.5, 9, 5.5], "texture": "#2"}, + "west": {"uv": [4.5, 3.5, 8, 5.5], "texture": "#2"}, + "up": {"uv": [4.5, 3.5, 3.5, 0], "texture": "#2"}, + "down": {"uv": [5.5, 0, 4.5, 3.5], "texture": "#2"} + } + }, + { + "name": "left_fin", + "from": [4.249, 10.999, 3.79164], + "to": [6.751, 11.001, 6.29364], + "rotation": {"angle": 0, "axis": "x", "origin": [5.5, 10.69466, 6.49238]}, + "faces": { + "up": {"uv": [15, 3, 14, 2], "texture": "#2"}, + "down": {"uv": [14, 2, 13, 3], "texture": "#2"} + } + }, + { + "name": "left_fin", + "from": [9.249, 10.999, 3.79164], + "to": [11.751, 11.001, 6.29364], + "rotation": {"angle": 0, "axis": "x", "origin": [5.5, 10.69466, 6.49238]}, + "faces": { + "up": {"uv": [15, 1.5, 14, 0.5], "texture": "#2"}, + "down": {"uv": [14, 0.5, 13, 1.5], "texture": "#2"} + } + }, + { + "name": "head", + "from": [6.75, 10.72424, 2.68293], + "to": [9.25, 15.72424, 6.43293], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 16.02754, 6.43293]}, + "faces": { + "north": {"uv": [7, 1.5, 8, 3.5], "texture": "#2"}, + "east": {"uv": [5.5, 1.5, 7, 3.5], "texture": "#2"}, + "south": {"uv": [9.5, 1.5, 10.5, 3.5], "texture": "#2"}, + "west": {"uv": [8, 1.5, 9.5, 3.5], "texture": "#2"}, + "up": {"uv": [8, 1.5, 7, 0], "texture": "#2"}, + "down": {"uv": [9, 0, 8, 1.5], "texture": "#2"} + } + }, + { + "name": "nose", + "from": [6.75, 11.97424, 1.43293], + "to": [9.25, 15.72424, 2.68293], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 16.02754, 6.43293]}, + "faces": { + "north": {"uv": [0.5, 0.5, 1.5, 2], "texture": "#2"}, + "east": {"uv": [0, 0.5, 0.5, 2], "texture": "#2"}, + "south": {"uv": [2, 0.5, 3, 2], "texture": "#2"}, + "west": {"uv": [1.5, 0.5, 2, 2], "texture": "#2"}, + "up": {"uv": [1.5, 0.5, 0.5, 0], "texture": "#2"}, + "down": {"uv": [2.5, 0, 1.5, 0.5], "texture": "#2"} + } + }, + { + "name": "fin_back", + "from": [8, 16.02754, 2.68293], + "to": [8, 17.27754, 10.18293], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 11.02754, 3.93293]}, + "faces": { + "east": {"uv": [10, 0, 13, 0.5], "texture": "#2"}, + "west": {"uv": [13, 0, 16, 0.5], "texture": "#2"} + } + }, + { + "name": "tail", + "from": [8, 12.27754, 11.43293], + "to": [8, 17.27754, 16.43293], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 12.27754, 2.68293]}, + "faces": { + "east": {"uv": [11, 3.5, 13, 5.5], "texture": "#2"}, + "west": {"uv": [13, 3.5, 15, 5.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + }, + { + "from": [4, 3, 3.94264], + "to": [12, 10, 11.94264], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8.54264]}, + "faces": { + "north": {"uv": [4, 12, 12, 4], "texture": "#1", "tintindex": 0}, + "east": {"uv": [4, 12, 12, 4], "texture": "#1", "tintindex": 0}, + "south": {"uv": [4, 12, 12, 4], "texture": "#1"}, + "west": {"uv": [4, 12, 12, 4], "texture": "#1", "tintindex": 0}, + "up": {"uv": [4, 4, 12, 12], "texture": "#1", "tintindex": 0}, + "down": {"uv": [4, 4, 12, 12], "texture": "#1", "tintindex": 0} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, -90, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, -90, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 102, 0], + "translation": [0.5, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 102, 0], + "translation": [0.5, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 135, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0.75, 0.25, 0.25] + } + }, + "groups": [ + { + "name": "body", + "origin": [0, 2, 2.54264], + "color": 0, + "children": [ + { + "name": "body", + "origin": [0, 2, 2.54264], + "color": 0, + "children": [ + 0, + { + "name": "right_fin", + "origin": [1, 1, 2.54264], + "rotation": [0, 0, -45], + "color": 0, + "children": [] + }, + { + "name": "left_fin", + "origin": [-1, 1, 2.54264], + "rotation": [0, 0, 45], + "color": 0, + "children": [1, 2] + } + ] + }, + { + "name": "head", + "origin": [0, 2, 2.54264], + "color": 0, + "children": [3] + }, + { + "name": "nose", + "origin": [0, 2, -0.45736], + "color": 0, + "children": [4] + }, + { + "name": "fin_back", + "origin": [0, 4, 2.54264], + "color": 0, + "children": [5] + }, + { + "name": "tail", + "origin": [0, 2, 9.54264], + "color": 0, + "children": [6] + } + ] + }, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [7, 8, 9, 10, 11] + }, + 12 + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/dark_oak_boat_3d.json b/src/main/resources/assets/minecraft/models/item/dark_oak_boat_3d.json new file mode 100644 index 0000000..b3b6073 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/dark_oak_boat_3d.json @@ -0,0 +1,194 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "2": "item/dark_oak_boat_3d", + "particle": "item/dark_oak_boat_3d" + }, + "elements": [ + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#2"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#2"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#2"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#2"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#2"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#2"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#2"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#2"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#2"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#2"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#2"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#2"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#2"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#2"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#2"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#2"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#2"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#2"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#2"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#2"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [5, 6] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [7, 8] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/dark_oak_chest_boat_3d.json b/src/main/resources/assets/minecraft/models/item/dark_oak_chest_boat_3d.json new file mode 100644 index 0000000..68bea5c --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/dark_oak_chest_boat_3d.json @@ -0,0 +1,242 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "1": "item/dark_oak_boat_3d", + "2": "item/boat_chest_3d", + "particle": "item/dark_oak_boat_3d" + }, + "elements": [ + { + "name": "top", + "from": [4.5, 6, 6.5], + "to": [11.5, 9, 13.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "east": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "south": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "west": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "up": {"uv": [7, 14, 0, 7], "texture": "#2"}, + "down": {"uv": [14, 0, 7, 7], "texture": "#2"} + } + }, + { + "name": "lock", + "from": [7.5, 5, 5.5], + "to": [8.5, 7, 6.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [0, 14, 1, 16], "texture": "#2"}, + "east": {"uv": [14, 0, 15, 2], "texture": "#2"}, + "south": {"uv": [1, 14, 2, 16], "texture": "#2"}, + "west": {"uv": [2, 14, 3, 16], "texture": "#2"}, + "up": {"uv": [15, 3, 14, 2], "texture": "#2"}, + "down": {"uv": [4, 14, 3, 15], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4.5, 2, 6.5], + "to": [11.5, 6, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "east": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "south": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "west": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "up": {"uv": [7, 7, 0, 0], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#1"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#1"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#1"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#1"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#1"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#1"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#1"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#1"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#1"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#1"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#1"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#1"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#1"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#1"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#1"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#1"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#1"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#1"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#1"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#1"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "chest", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2] + }, + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [3, 4, 5, 6, 7] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [8, 9] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [10, 11] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_0.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_0.json new file mode 100644 index 0000000..832e6a9 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_0.json @@ -0,0 +1,145 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 4], + "to": [12, 10, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "up": {"uv": [4, 4, 12, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_1.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_1.json new file mode 100644 index 0000000..e22bad1 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_1.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 3.5], + "to": [12, 10, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 12, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_10.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_10.json new file mode 100644 index 0000000..2535577 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_10.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 4], + "to": [12, 10, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 7, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_11.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_11.json new file mode 100644 index 0000000..b894d52 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_11.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 3.5], + "to": [12, 10, 6.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 7, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_12.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_12.json new file mode 100644 index 0000000..b1a3916 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_12.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 4], + "to": [12, 10, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 6, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_13.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_13.json new file mode 100644 index 0000000..e3a75cb --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_13.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 3.5], + "to": [12, 10, 5.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 6, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_14.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_14.json new file mode 100644 index 0000000..b228913 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_14.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 4], + "to": [12, 10, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 5, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_15.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_15.json new file mode 100644 index 0000000..9ce3152 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_15.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 3.5], + "to": [12, 10, 4.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 5, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_16.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_16.json new file mode 100644 index 0000000..ac4a09e --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_16.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [0, 1, 2, 3, 4] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_2.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_2.json new file mode 100644 index 0000000..a19ff3c --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_2.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 4], + "to": [12, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 11, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_3.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_3.json new file mode 100644 index 0000000..b41556b --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_3.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 3.5], + "to": [12, 10, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 11, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_4.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_4.json new file mode 100644 index 0000000..d6a659d --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_4.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 4], + "to": [12, 10, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 10, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_5.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_5.json new file mode 100644 index 0000000..0df9bd9 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_5.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 3.5], + "to": [12, 10, 9.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 10, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_6.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_6.json new file mode 100644 index 0000000..3d1e75a --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_6.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 4], + "to": [12, 10, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 9, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_7.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_7.json new file mode 100644 index 0000000..613db86 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_7.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 3.5], + "to": [12, 10, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 9, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_8.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_8.json new file mode 100644 index 0000000..97b73e6 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_8.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 4], + "to": [12, 10, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 8, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-10, 95, 0], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_9.json b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_9.json new file mode 100644 index 0000000..4f89f0b --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/eatinganimation/milk_bucket_drink_9.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 3.5], + "to": [12, 10, 7.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "south": {"uv": [0, 0, 7, 7], "texture": "#1"}, + "up": {"uv": [4, 4, 8, 12], "rotation": 90, "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "east": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "south": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "west": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side1", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side2", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side3", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "rotation": 270, "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3.75, 8]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "rotation": 270, "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-9, 4, -20], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-9, -175, 20], + "translation": [-2.25, 5.25, 1.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [5, 2, 4], + "color": 0, + "children": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/end_crystal.json b/src/main/resources/assets/minecraft/models/item/end_crystal.json new file mode 100644 index 0000000..e31b6fb --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/end_crystal.json @@ -0,0 +1,175 @@ +{ + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "2": "item/end_crystal_glass_3d", + "3": "item/end_crystal_inner_3d", + "4": "item/end_crystal_3d", + "particle": "item/end_crystal_3d" + }, + "elements": [ + { + "name": "core_outer", + "from": [4, 8.5, 4.275], + "to": [12, 16.5, 12.275], + "rotation": {"angle": 0, "axis": "y", "origin": [3.5, 8, 4.775]}, + "faces": { + "north": {"uv": [2, 0, 4, 2], "texture": "#4"}, + "east": {"uv": [2, 2, 4, 4], "texture": "#4"}, + "south": {"uv": [0, 2, 2, 4], "texture": "#4"}, + "west": {"uv": [4, 0, 6, 2], "texture": "#4"}, + "up": {"uv": [2, 2, 0, 0], "texture": "#4"}, + "down": {"uv": [6, 2, 4, 4], "texture": "#4"} + } + }, + { + "name": "core_inner", + "from": [12.01, 16.51, 12.285], + "to": [3.99, 8.49, 4.265], + "rotation": {"angle": 0, "axis": "y", "origin": [11.5, 16, 12.775]}, + "faces": { + "north": {"uv": [2, 0, 4, 2], "texture": "#4"}, + "east": {"uv": [2, 2, 4, 4], "texture": "#4"}, + "south": {"uv": [0, 2, 2, 4], "texture": "#4"}, + "west": {"uv": [4, 0, 6, 2], "texture": "#4"}, + "up": {"uv": [2, 2, 0, 0], "texture": "#4"}, + "down": {"uv": [6, 2, 4, 4], "texture": "#4"} + } + }, + { + "name": "inside", + "from": [4.5, 9, 4.775], + "to": [11.5, 16, 11.775], + "rotation": {"angle": 0, "axis": "y", "origin": [3.5, 8, 4.775]}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#3"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#3"}, + "south": {"uv": [0, 0, 16, 16], "texture": "#3"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#3"}, + "up": {"uv": [16, 16, 0, 0], "texture": "#3"}, + "down": {"uv": [16, 0, 0, 16], "texture": "#3"} + } + }, + { + "name": "outer1", + "from": [3, 7.5, 3.275], + "to": [13, 17.5, 13.275], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 12.5, 8.275]}, + "faces": { + "north": {"uv": [0, 0, 2.5, 2.5], "rotation": 270, "texture": "#2"}, + "east": {"uv": [2.5, 2.5, 0, 0], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 0, 2.5, 2.5], "rotation": 90, "texture": "#2"}, + "west": {"uv": [2.5, 0, 0, 2.5], "texture": "#2"}, + "up": {"uv": [0, 0, 2.5, 2.5], "rotation": 90, "texture": "#2"}, + "down": {"uv": [0, 0, 2.5, 2.5], "rotation": 90, "texture": "#2"} + } + }, + { + "name": "inner1", + "from": [13, 17.5, 13.275], + "to": [3, 7.5, 3.275], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 12.5, 8.275]}, + "faces": { + "north": {"uv": [0, 0, 2.5, 2.5], "rotation": 270, "texture": "#2"}, + "east": {"uv": [2.5, 2.5, 0, 0], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 0, 2.5, 2.5], "rotation": 90, "texture": "#2"}, + "west": {"uv": [2.5, 0, 0, 2.5], "texture": "#2"}, + "up": {"uv": [0, 0, 2.5, 2.5], "rotation": 90, "texture": "#2"}, + "down": {"uv": [0, 0, 2.5, 2.5], "rotation": 90, "texture": "#2"} + } + }, + { + "name": "outer2", + "from": [2.5, 7, 2.75], + "to": [13.5, 18, 13.75], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 12.5, 8.25]}, + "faces": { + "north": {"uv": [2.5, 0, 5.25, 2.75], "rotation": 270, "texture": "#2"}, + "east": {"uv": [5.25, 2.75, 2.5, 0], "rotation": 90, "texture": "#2"}, + "south": {"uv": [2.5, 0, 5.25, 2.75], "rotation": 90, "texture": "#2"}, + "west": {"uv": [5.25, 0, 2.5, 2.75], "rotation": 90, "texture": "#2"}, + "up": {"uv": [2.5, 0, 5.25, 2.75], "rotation": 90, "texture": "#2"}, + "down": {"uv": [2.5, 0, 5.25, 2.75], "rotation": 90, "texture": "#2"} + } + }, + { + "name": "inner2", + "from": [13.5, 18, 13.75], + "to": [2.5, 7, 2.75], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 12.5, 8.25]}, + "faces": { + "north": {"uv": [2.5, 0, 5.25, 2.75], "rotation": 270, "texture": "#2"}, + "east": {"uv": [5.25, 2.75, 2.5, 0], "rotation": 90, "texture": "#2"}, + "south": {"uv": [2.5, 0, 5.25, 2.75], "rotation": 90, "texture": "#2"}, + "west": {"uv": [5.25, 0, 2.5, 2.75], "rotation": 90, "texture": "#2"}, + "up": {"uv": [2.5, 0, 5.25, 2.75], "rotation": 90, "texture": "#2"}, + "down": {"uv": [2.5, 0, 5.25, 2.75], "rotation": 90, "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "translation": [0, 1.25, -2], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "translation": [0, 1.25, -2], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 13, 0], + "translation": [0.5, 4, 0], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 13, 0], + "translation": [0.5, 4, 0], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 4.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "gui": { + "rotation": [20, 45, 0], + "translation": [-0.25, 0.75, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 13.75, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 0, 1.5], + "scale": [0.75, 0.75, 0.75] + } + }, + "groups": [ + { + "name": "end_crystal", + "origin": [1.2625, 0, 4.2875], + "color": 0, + "children": [ + { + "name": "core", + "origin": [3.5, 8, 4.775], + "color": 0, + "children": [0, 1, 2] + }, + { + "name": "glass1", + "origin": [1.88003, 0, 4.15], + "color": 0, + "children": [3, 4] + }, + { + "name": "glass2", + "origin": [1.88003, 0, 4.15], + "color": 0, + "children": [5, 6] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/end_crystal_2d.json b/src/main/resources/assets/minecraft/models/item/end_crystal_2d.json new file mode 100644 index 0000000..ae2aeeb --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/end_crystal_2d.json @@ -0,0 +1,7 @@ +{ + "credit": "Made with Blockbench", + "parent": "minecraft:item/generated", + "textures": { + "layer0": "item/end_crystal" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/jungle_boat_3d.json b/src/main/resources/assets/minecraft/models/item/jungle_boat_3d.json new file mode 100644 index 0000000..8b89e5e --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/jungle_boat_3d.json @@ -0,0 +1,194 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "2": "item/jungle_boat_3d", + "particle": "item/jungle_boat_3d" + }, + "elements": [ + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#2"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#2"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#2"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#2"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#2"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#2"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#2"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#2"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#2"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#2"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#2"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#2"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#2"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#2"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#2"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#2"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#2"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#2"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#2"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#2"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [5, 6] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [7, 8] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/jungle_chest_boat_3d.json b/src/main/resources/assets/minecraft/models/item/jungle_chest_boat_3d.json new file mode 100644 index 0000000..5089dd9 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/jungle_chest_boat_3d.json @@ -0,0 +1,242 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "1": "item/jungle_boat_3d", + "2": "item/boat_chest_3d", + "particle": "item/jungle_boat_3d" + }, + "elements": [ + { + "name": "top", + "from": [4.5, 6, 6.5], + "to": [11.5, 9, 13.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "east": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "south": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "west": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "up": {"uv": [7, 14, 0, 7], "texture": "#2"}, + "down": {"uv": [14, 0, 7, 7], "texture": "#2"} + } + }, + { + "name": "lock", + "from": [7.5, 5, 5.5], + "to": [8.5, 7, 6.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [0, 14, 1, 16], "texture": "#2"}, + "east": {"uv": [14, 0, 15, 2], "texture": "#2"}, + "south": {"uv": [1, 14, 2, 16], "texture": "#2"}, + "west": {"uv": [2, 14, 3, 16], "texture": "#2"}, + "up": {"uv": [15, 3, 14, 2], "texture": "#2"}, + "down": {"uv": [4, 14, 3, 15], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4.5, 2, 6.5], + "to": [11.5, 6, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "east": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "south": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "west": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "up": {"uv": [7, 7, 0, 0], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#1"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#1"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#1"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#1"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#1"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#1"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#1"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#1"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#1"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#1"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#1"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#1"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#1"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#1"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#1"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#1"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#1"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#1"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#1"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#1"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "chest", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2] + }, + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [3, 4, 5, 6, 7] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [8, 9] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [10, 11] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/lava_bucket_3d.json b/src/main/resources/assets/minecraft/models/item/lava_bucket_3d.json new file mode 100644 index 0000000..5bff161 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/lava_bucket_3d.json @@ -0,0 +1,149 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/lava_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 10, 4], + "to": [12, 10, 12], + "light_emission": 15, + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 2, 0], "texture": "#1"}, + "east": {"uv": [0, 0, 2, 0], "texture": "#1"}, + "south": {"uv": [0, 0, 2, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 0], "texture": "#1"}, + "up": {"uv": [4, 4, 12, 12], "texture": "#1"}, + "down": {"uv": [4, 4, 12, 12], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "light_emission": 15, + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "light_emission": 15, + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "light_emission": 15, + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "light_emission": 15, + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "light_emission": 15, + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/leaf_litter_2d.json b/src/main/resources/assets/minecraft/models/item/leaf_litter_2d.json new file mode 100644 index 0000000..df894ef --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/leaf_litter_2d.json @@ -0,0 +1,7 @@ +{ + "credit": "cyberia was here", + "parent": "minecraft:item/generated", + "textures": { + "layer0": "item/leaf_litter" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/leaf_litter_3d.json b/src/main/resources/assets/minecraft/models/item/leaf_litter_3d.json new file mode 100644 index 0000000..ce1611f --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/leaf_litter_3d.json @@ -0,0 +1,204 @@ +{ + "credit": "cyberia was here", + "textures": { + "0": "item/basket_3d", + "1": "item/leaf_litter_3d", + "particle": "item/basket_3d" + }, + "elements": [ + { + "from": [12.5, 0, 4.5], + "to": [13.5, 6, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 0, 4.5]}, + "faces": { + "north": {"uv": [10.5, 9.5, 11, 12.5], "texture": "#0"}, + "east": {"uv": [6, 6, 9.5, 9], "texture": "#0"}, + "south": {"uv": [5.5, 10.5, 6, 13.5], "texture": "#0"}, + "west": {"uv": [9, 0, 12.5, 3], "texture": "#0"}, + "up": {"uv": [5, 11, 1.5, 10.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [14, 6, 10.5, 6.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [2.5, 0, 4.5], + "to": [3.5, 6, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [2.5, 0, 4.5]}, + "faces": { + "north": {"uv": [1.5, 11, 2, 14], "texture": "#0"}, + "east": {"uv": [9, 3, 12.5, 6], "texture": "#0"}, + "south": {"uv": [10, 10.5, 10.5, 13.5], "texture": "#0"}, + "west": {"uv": [6, 9, 9.5, 12], "texture": "#0"}, + "up": {"uv": [14, 7, 10.5, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [14, 7, 10.5, 7.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [3.5, 0, 4.5], + "to": [12.5, 6, 5.5], + "rotation": {"angle": 0, "axis": "y", "origin": [3.5, 0, 4.5]}, + "faces": { + "north": {"uv": [0, 3, 4.5, 6], "texture": "#0"}, + "south": {"uv": [0, 0, 4.5, 3], "texture": "#0"}, + "up": {"uv": [10.5, 10.5, 10, 6], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0.5, 10.5, 0, 15], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [3.5, 0, 10.5], + "to": [12.5, 6, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [3.5, 0, 10.5]}, + "faces": { + "north": {"uv": [4.5, 3, 9, 6], "texture": "#0"}, + "south": {"uv": [4.5, 0, 9, 3], "texture": "#0"}, + "up": {"uv": [1, 15, 0.5, 10.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [1.5, 10.5, 1, 15], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [3.5, 0, 5.5], + "to": [12.5, 5, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 0, 4.5]}, + "faces": { + "down": {"uv": [5.5, 6, 3, 10.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [3.4995, 5.7495, 5.4995], + "to": [12.5005, 5.7505, 10.5005], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 0, 4.5]}, + "faces": { + "up": {"uv": [9, 5, 0, 0], "texture": "#1"} + } + }, + { + "from": [3.5, 5.75, 5.5], + "to": [12.5, 5.75, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 1, 4.5]}, + "faces": { + "up": {"uv": [9, 10, 0, 5], "texture": "#1"} + } + }, + { + "from": [3.5, 5.875, 5.5], + "to": [12.5, 5.875, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 2, 4.5]}, + "faces": { + "up": {"uv": [9, 15, 0, 10], "texture": "#1"} + } + }, + { + "from": [10.499, 5.999, 7.499], + "to": [14.501, 6.001, 11.501], + "rotation": {"angle": 22.5, "axis": "y", "origin": [12.5, 6, 9.5]}, + "faces": { + "up": {"uv": [14, 5, 10, 1], "texture": "#1"} + } + }, + { + "from": [3.499, 5.999, 3.499], + "to": [7.501, 6.001, 7.501], + "rotation": {"angle": -22.5, "axis": "y", "origin": [5.5, 6, 5.5]}, + "faces": { + "up": {"uv": [14, 5, 10, 9], "texture": "#1"} + } + }, + { + "from": [4.499, 5.999, 8.499], + "to": [8.501, 6.001, 12.501], + "rotation": {"angle": -22.5, "axis": "y", "origin": [6.5, 6, 10.5]}, + "faces": { + "up": {"uv": [14, 13, 10, 9], "texture": "#1"} + } + }, + { + "from": [7.5, 4, 11], + "to": [8.5, 9, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 4, 10.5]}, + "faces": { + "north": {"uv": [3.5, 11.5, 4, 14], "texture": "#0"}, + "east": {"uv": [2, 11.5, 2.5, 14], "texture": "#0"}, + "south": {"uv": [2.5, 11.5, 3, 14], "texture": "#0"}, + "west": {"uv": [3, 11.5, 3.5, 14], "texture": "#0"}, + "up": {"uv": [12, 10, 11.5, 9.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [12, 10, 11.5, 10.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [7.5, 4, 4], + "to": [8.5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 4, 3.5]}, + "faces": { + "north": {"uv": [11, 10, 11.5, 12.5], "texture": "#0"}, + "east": {"uv": [4, 11.5, 4.5, 14], "texture": "#0"}, + "south": {"uv": [4.5, 11.5, 5, 14], "texture": "#0"}, + "west": {"uv": [5, 11.5, 5.5, 14], "texture": "#0"}, + "up": {"uv": [12, 11, 11.5, 10.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [12, 11, 11.5, 11.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [7.5, 8, 5], + "to": [8.5, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 3, 3.5]}, + "faces": { + "east": {"uv": [10.5, 7.5, 13.5, 8], "texture": "#0"}, + "west": {"uv": [10.5, 8, 13.5, 8.5], "texture": "#0"}, + "up": {"uv": [13.5, 9, 10.5, 8.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [13.5, 9, 10.5, 9.5], "rotation": 270, "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [68, 90, 0], + "translation": [0, -1.5, 0.25], + "scale": [0.75, 0.75, 0.75] + }, + "thirdperson_lefthand": { + "rotation": [68, 90, 0], + "translation": [0, -1.5, 0.25], + "scale": [0.75, 0.75, 0.75] + }, + "firstperson_righthand": { + "rotation": [0, -51, 0], + "translation": [0, 4, 0], + "scale": [0.75, 0.75, 0.75] + }, + "firstperson_lefthand": { + "rotation": [0, -51, 0], + "translation": [0, 4, 0], + "scale": [0.75, 0.75, 0.75] + }, + "ground": { + "translation": [0, 3.75, 0], + "scale": [0.75, 0.75, 0.75] + }, + "gui": { + "rotation": [35, 45, 0], + "translation": [0, 3.75, 0] + }, + "head": { + "rotation": [0, 90, 0], + "translation": [0, 14.5, 0] + }, + "fixed": { + "translation": [0, 4.25, 0] + } + }, + "groups": [ + 0, + 1, + 2, + 3, + 4, + { + "name": "group", + "origin": [9.5, 2, 7.5], + "color": 0, + "children": [5, 6, 7, 8, 9, 10] + }, + 11, + 12, + 13 + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/mangrove_boat_3d.json b/src/main/resources/assets/minecraft/models/item/mangrove_boat_3d.json new file mode 100644 index 0000000..53deaa2 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/mangrove_boat_3d.json @@ -0,0 +1,194 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "2": "item/mangrove_boat_3d", + "particle": "item/mangrove_boat_3d" + }, + "elements": [ + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#2"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#2"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#2"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#2"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#2"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#2"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#2"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#2"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#2"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#2"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#2"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#2"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#2"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#2"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#2"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#2"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#2"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#2"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#2"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#2"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [5, 6] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [7, 8] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/mangrove_chest_boat_3d.json b/src/main/resources/assets/minecraft/models/item/mangrove_chest_boat_3d.json new file mode 100644 index 0000000..1a3fbfb --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/mangrove_chest_boat_3d.json @@ -0,0 +1,242 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "1": "item/mangrove_boat_3d", + "2": "item/boat_chest_3d", + "particle": "item/mangrove_boat_3d" + }, + "elements": [ + { + "name": "top", + "from": [4.5, 6, 6.5], + "to": [11.5, 9, 13.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "east": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "south": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "west": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "up": {"uv": [7, 14, 0, 7], "texture": "#2"}, + "down": {"uv": [14, 0, 7, 7], "texture": "#2"} + } + }, + { + "name": "lock", + "from": [7.5, 5, 5.5], + "to": [8.5, 7, 6.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [0, 14, 1, 16], "texture": "#2"}, + "east": {"uv": [14, 0, 15, 2], "texture": "#2"}, + "south": {"uv": [1, 14, 2, 16], "texture": "#2"}, + "west": {"uv": [2, 14, 3, 16], "texture": "#2"}, + "up": {"uv": [15, 3, 14, 2], "texture": "#2"}, + "down": {"uv": [4, 14, 3, 15], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4.5, 2, 6.5], + "to": [11.5, 6, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "east": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "south": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "west": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "up": {"uv": [7, 7, 0, 0], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#1"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#1"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#1"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#1"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#1"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#1"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#1"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#1"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#1"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#1"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#1"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#1"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#1"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#1"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#1"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#1"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#1"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#1"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#1"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#1"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "chest", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2] + }, + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [3, 4, 5, 6, 7] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [8, 9] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [10, 11] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/milk_bucket_3d.json b/src/main/resources/assets/minecraft/models/item/milk_bucket_3d.json new file mode 100644 index 0000000..9fc884a --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/milk_bucket_3d.json @@ -0,0 +1,138 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/milk_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 4], + "to": [12, 10, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]}, + "faces": { + "up": {"uv": [4, 4, 12, 12], "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/oak_boat_3d.json b/src/main/resources/assets/minecraft/models/item/oak_boat_3d.json new file mode 100644 index 0000000..675cb53 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/oak_boat_3d.json @@ -0,0 +1,194 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "2": "item/oak_boat_3d", + "particle": "item/oak_boat_3d" + }, + "elements": [ + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#2"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#2"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#2"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#2"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#2"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#2"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#2"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#2"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#2"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#2"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#2"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#2"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#2"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#2"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#2"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#2"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#2"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#2"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#2"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#2"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [5, 6] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [7, 8] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/oak_chest_boat_3d.json b/src/main/resources/assets/minecraft/models/item/oak_chest_boat_3d.json new file mode 100644 index 0000000..ae8ea8d --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/oak_chest_boat_3d.json @@ -0,0 +1,242 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "1": "item/oak_boat_3d", + "2": "item/boat_chest_3d", + "particle": "item/oak_boat_3d" + }, + "elements": [ + { + "name": "top", + "from": [4.5, 6, 6.5], + "to": [11.5, 9, 13.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "east": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "south": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "west": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "up": {"uv": [7, 14, 0, 7], "texture": "#2"}, + "down": {"uv": [14, 0, 7, 7], "texture": "#2"} + } + }, + { + "name": "lock", + "from": [7.5, 5, 5.5], + "to": [8.5, 7, 6.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [0, 14, 1, 16], "texture": "#2"}, + "east": {"uv": [14, 0, 15, 2], "texture": "#2"}, + "south": {"uv": [1, 14, 2, 16], "texture": "#2"}, + "west": {"uv": [2, 14, 3, 16], "texture": "#2"}, + "up": {"uv": [15, 3, 14, 2], "texture": "#2"}, + "down": {"uv": [4, 14, 3, 15], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4.5, 2, 6.5], + "to": [11.5, 6, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "east": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "south": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "west": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "up": {"uv": [7, 7, 0, 0], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#1"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#1"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#1"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#1"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#1"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#1"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#1"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#1"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#1"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#1"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#1"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#1"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#1"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#1"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#1"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#1"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#1"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#1"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#1"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#1"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "chest", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [3, 4] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [5, 6] + }, + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [7, 8, 9, 10, 11] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/pale_oak_boat_3d.json b/src/main/resources/assets/minecraft/models/item/pale_oak_boat_3d.json new file mode 100644 index 0000000..405afb6 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/pale_oak_boat_3d.json @@ -0,0 +1,194 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "2": "item/pale_oak_boat_3d", + "particle": "item/pale_oak_boat_3d" + }, + "elements": [ + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#2"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#2"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#2"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#2"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#2"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#2"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#2"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#2"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#2"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#2"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#2"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#2"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#2"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#2"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#2"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#2"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#2"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#2"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#2"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#2"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [5, 6] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [7, 8] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/pale_oak_chest_boat_3d.json b/src/main/resources/assets/minecraft/models/item/pale_oak_chest_boat_3d.json new file mode 100644 index 0000000..e78af4c --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/pale_oak_chest_boat_3d.json @@ -0,0 +1,242 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "1": "item/pale_oak_boat_3d", + "2": "item/boat_chest_3d", + "particle": "item/pale_oak_boat_3d" + }, + "elements": [ + { + "name": "top", + "from": [4.5, 6, 6.5], + "to": [11.5, 9, 13.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "east": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "south": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "west": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "up": {"uv": [7, 14, 0, 7], "texture": "#2"}, + "down": {"uv": [14, 0, 7, 7], "texture": "#2"} + } + }, + { + "name": "lock", + "from": [7.5, 5, 5.5], + "to": [8.5, 7, 6.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [0, 14, 1, 16], "texture": "#2"}, + "east": {"uv": [14, 0, 15, 2], "texture": "#2"}, + "south": {"uv": [1, 14, 2, 16], "texture": "#2"}, + "west": {"uv": [2, 14, 3, 16], "texture": "#2"}, + "up": {"uv": [15, 3, 14, 2], "texture": "#2"}, + "down": {"uv": [4, 14, 3, 15], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4.5, 2, 6.5], + "to": [11.5, 6, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "east": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "south": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "west": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "up": {"uv": [7, 7, 0, 0], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#1"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#1"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#1"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#1"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#1"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#1"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#1"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#1"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#1"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#1"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#1"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#1"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#1"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#1"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#1"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#1"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#1"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#1"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#1"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#1"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "chest", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2] + }, + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [3, 4, 5, 6, 7] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [8, 9] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [10, 11] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/pink_petals_2d.json b/src/main/resources/assets/minecraft/models/item/pink_petals_2d.json new file mode 100644 index 0000000..4bc6fac --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/pink_petals_2d.json @@ -0,0 +1,7 @@ +{ + "credit": "cyberia was here", + "parent": "minecraft:item/generated", + "textures": { + "layer0": "item/pink_petals" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/pink_petals_3d.json b/src/main/resources/assets/minecraft/models/item/pink_petals_3d.json new file mode 100644 index 0000000..9f3857c --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/pink_petals_3d.json @@ -0,0 +1,188 @@ +{ + "credit": "cyberia was here", + "textures": { + "0": "item/basket_3d", + "1": "item/pink_petals_3d", + "particle": "item/basket_3d" + }, + "elements": [ + { + "from": [12.5, 0, 4.5], + "to": [13.5, 6, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 0, 4.5]}, + "faces": { + "north": {"uv": [10.5, 9.5, 11, 12.5], "texture": "#0"}, + "east": {"uv": [6, 6, 9.5, 9], "texture": "#0"}, + "south": {"uv": [5.5, 10.5, 6, 13.5], "texture": "#0"}, + "west": {"uv": [9, 0, 12.5, 3], "texture": "#0"}, + "up": {"uv": [5, 11, 1.5, 10.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [14, 6, 10.5, 6.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [2.5, 0, 4.5], + "to": [3.5, 6, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [2.5, 0, 4.5]}, + "faces": { + "north": {"uv": [1.5, 11, 2, 14], "texture": "#0"}, + "east": {"uv": [9, 3, 12.5, 6], "texture": "#0"}, + "south": {"uv": [10, 10.5, 10.5, 13.5], "texture": "#0"}, + "west": {"uv": [6, 9, 9.5, 12], "texture": "#0"}, + "up": {"uv": [14, 7, 10.5, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [14, 7, 10.5, 7.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [3.5, 0, 4.5], + "to": [12.5, 6, 5.5], + "rotation": {"angle": 0, "axis": "y", "origin": [3.5, 0, 4.5]}, + "faces": { + "north": {"uv": [0, 3, 4.5, 6], "texture": "#0"}, + "south": {"uv": [0, 0, 4.5, 3], "texture": "#0"}, + "up": {"uv": [10.5, 10.5, 10, 6], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0.5, 10.5, 0, 15], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [3.5, 0, 10.5], + "to": [12.5, 6, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [3.5, 0, 10.5]}, + "faces": { + "north": {"uv": [4.5, 3, 9, 6], "texture": "#0"}, + "south": {"uv": [4.5, 0, 9, 3], "texture": "#0"}, + "up": {"uv": [1, 15, 0.5, 10.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [1.5, 10.5, 1, 15], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [3.5, 0, 5.5], + "to": [12.5, 5, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 0, 4.5]}, + "faces": { + "down": {"uv": [5.5, 6, 3, 10.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [3.5, 5.75, 5.5], + "to": [12.5, 5.75, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 1, 4.5]}, + "faces": { + "up": {"uv": [9, 10, 0, 5], "texture": "#1"} + } + }, + { + "from": [3.5, 5.875, 5.5], + "to": [12.5, 5.875, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 2, 4.5]}, + "faces": { + "up": {"uv": [9, 15, 0, 10], "texture": "#1"} + } + }, + { + "from": [9.499, 5.999, 7.499], + "to": [13.501, 6.001, 11.501], + "rotation": {"angle": 22.5, "axis": "y", "origin": [11.5, 6, 9.5]}, + "faces": { + "up": {"uv": [14, 5, 10, 1], "texture": "#1"} + } + }, + { + "from": [2.499, 5.999, 4.499], + "to": [6.501, 6.001, 8.501], + "rotation": {"angle": -22.5, "axis": "y", "origin": [4.5, 6, 6.5]}, + "faces": { + "up": {"uv": [14, 9, 10, 5], "texture": "#1"} + } + }, + { + "from": [4.499, 5.999, 8.499], + "to": [8.501, 6.001, 12.501], + "rotation": {"angle": 22.5, "axis": "y", "origin": [6.5, 6, 10.5]}, + "faces": { + "up": {"uv": [14, 13, 10, 9], "texture": "#1"} + } + }, + { + "from": [3.4995, 5.7495, 5.4995], + "to": [12.5005, 5.7505, 10.5005], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 0, 4.5]}, + "faces": { + "up": {"uv": [9, 5, 0, 0], "texture": "#1"} + } + }, + { + "from": [7.5, 4, 11], + "to": [8.5, 9, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 4, 10.5]}, + "faces": { + "north": {"uv": [3.5, 11.5, 4, 14], "texture": "#0"}, + "east": {"uv": [2, 11.5, 2.5, 14], "texture": "#0"}, + "south": {"uv": [2.5, 11.5, 3, 14], "texture": "#0"}, + "west": {"uv": [3, 11.5, 3.5, 14], "texture": "#0"}, + "up": {"uv": [12, 10, 11.5, 9.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [12, 10, 11.5, 10.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [7.5, 4, 4], + "to": [8.5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 4, 3.5]}, + "faces": { + "north": {"uv": [11, 10, 11.5, 12.5], "texture": "#0"}, + "east": {"uv": [4, 11.5, 4.5, 14], "texture": "#0"}, + "south": {"uv": [4.5, 11.5, 5, 14], "texture": "#0"}, + "west": {"uv": [5, 11.5, 5.5, 14], "texture": "#0"}, + "up": {"uv": [12, 11, 11.5, 10.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [12, 11, 11.5, 11.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [7.5, 8, 5], + "to": [8.5, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 3, 3.5]}, + "faces": { + "east": {"uv": [10.5, 7.5, 13.5, 8], "texture": "#0"}, + "west": {"uv": [10.5, 8, 13.5, 8.5], "texture": "#0"}, + "up": {"uv": [13.5, 9, 10.5, 8.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [13.5, 9, 10.5, 9.5], "rotation": 270, "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [68, 90, 0], + "translation": [0, -1.5, 0.25], + "scale": [0.75, 0.75, 0.75] + }, + "thirdperson_lefthand": { + "rotation": [68, 90, 0], + "translation": [0, -1.5, 0.25], + "scale": [0.75, 0.75, 0.75] + }, + "firstperson_righthand": { + "rotation": [0, -51, 0], + "translation": [0, 4, 0], + "scale": [0.75, 0.75, 0.75] + }, + "firstperson_lefthand": { + "rotation": [0, -51, 0], + "translation": [0, 4, 0], + "scale": [0.75, 0.75, 0.75] + }, + "ground": { + "translation": [0, 3.75, 0], + "scale": [0.75, 0.75, 0.75] + }, + "gui": { + "rotation": [35, 45, 0], + "translation": [0, 3.75, 0] + }, + "head": { + "rotation": [0, 90, 0], + "translation": [0, 14.5, 0] + }, + "fixed": { + "translation": [0, 4.25, 0] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/powder_snow_bucket_3d.json b/src/main/resources/assets/minecraft/models/item/powder_snow_bucket_3d.json new file mode 100644 index 0000000..306c386 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/powder_snow_bucket_3d.json @@ -0,0 +1,174 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/powder_snow_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [3.999, 9.499, 3.999], + "to": [12.001, 10.501, 12.001], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 9, 6]}, + "faces": { + "north": {"uv": [8.5, 1, 12.5, 1.5], "texture": "#1"}, + "east": {"uv": [8.5, 1.5, 12.5, 2], "texture": "#1"}, + "south": {"uv": [8.5, 2, 12.5, 2.5], "texture": "#1"}, + "west": {"uv": [8.5, 2.5, 12.5, 3], "texture": "#1"}, + "up": {"uv": [4, 4, 0, 0], "texture": "#1"}, + "down": {"uv": [4, 4, 0, 8], "texture": "#1"} + } + }, + { + "from": [6.25, 10.5, 4], + "to": [12.25, 12.5, 12], + "rotation": {"angle": 22.5, "axis": "z", "origin": [11, 10, 8]}, + "faces": { + "north": {"uv": [0, 8, 3, 9], "texture": "#1"}, + "east": {"uv": [7, 6, 11, 7], "texture": "#1"}, + "south": {"uv": [3, 8, 6, 9], "texture": "#1"}, + "west": {"uv": [7, 7, 11, 8], "texture": "#1"}, + "up": {"uv": [7, 4, 4, 0], "texture": "#1"}, + "down": {"uv": [7, 4, 4, 8], "texture": "#1"} + } + }, + { + "from": [4, 9.5, 5], + "to": [7, 11.5, 11], + "rotation": {"angle": -22.5, "axis": "z", "origin": [6, 9, 8]}, + "faces": { + "north": {"uv": [8.5, 3, 10, 4], "texture": "#1"}, + "east": {"uv": [6, 8, 9, 9], "texture": "#1"}, + "south": {"uv": [8.5, 4, 10, 5], "texture": "#1"}, + "west": {"uv": [8.5, 0, 11.5, 1], "texture": "#1"}, + "up": {"uv": [8.5, 3, 7, 0], "texture": "#1"}, + "down": {"uv": [8.5, 3, 7, 6], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 135, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + { + "name": "group", + "origin": [6, 8, 8], + "color": 0, + "children": [0, 1, 2] + }, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [3, 4, 5, 6, 7] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/pufferfish_bucket_3d.json b/src/main/resources/assets/minecraft/models/item/pufferfish_bucket_3d.json new file mode 100644 index 0000000..f01c151 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/pufferfish_bucket_3d.json @@ -0,0 +1,370 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "2": "item/tropical_fish_bucket_water_3d", + "3": "item/pufferfish_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "name": "body", + "from": [4, 8, 4], + "to": [12, 16, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [4, 4, 8, 8], "texture": "#3"}, + "east": {"uv": [0, 4, 4, 8], "texture": "#3"}, + "south": {"uv": [12, 4, 16, 8], "texture": "#3"}, + "west": {"uv": [8, 4, 12, 8], "texture": "#3"}, + "up": {"uv": [8, 4, 4, 0], "texture": "#3"}, + "down": {"uv": [12, 0, 8, 4], "texture": "#3"} + } + }, + { + "name": "fin_left", + "from": [2, 15, 5.01], + "to": [4, 15, 7.01], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, + "faces": { + "up": {"uv": [14, 2.5, 13, 1.5], "texture": "#3"}, + "down": {"uv": [14, 1.5, 13, 2.5], "texture": "#3"} + } + }, + { + "name": "fin_right", + "from": [12, 15, 5.01], + "to": [14, 15, 7.01], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, + "faces": { + "up": {"uv": [14, 1, 13, 0], "texture": "#3"}, + "down": {"uv": [14, 0, 13, 1], "texture": "#3"} + } + }, + { + "name": "spikes_front_top", + "from": [4, 13.24264, 8.65686], + "to": [12, 14.24264, 8.65686], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 9, 3]}, + "faces": { + "north": {"uv": [7.5, 8.5, 11.5, 9], "texture": "#3"}, + "south": {"uv": [11.5, 8.5, 7.5, 9], "texture": "#3"} + } + }, + { + "name": "spikes_middle_top", + "from": [4, 16, 8], + "to": [12, 17, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [7.5, 8.5, 11.5, 9], "texture": "#3"}, + "south": {"uv": [11.5, 8.5, 7.5, 9], "texture": "#3"} + } + }, + { + "name": "spikes_back_top", + "from": [4, 14.65686, 6.75736], + "to": [12, 15.65686, 6.75736], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 9, 11]}, + "faces": { + "north": {"uv": [11.5, 9, 15.5, 9.5], "texture": "#3"}, + "south": {"uv": [15.5, 9, 11.5, 9.5], "texture": "#3"} + } + }, + { + "name": "spikes_front_left", + "from": [3.70711, 8, 3.70711], + "to": [4.70711, 16, 3.70711], + "rotation": {"angle": -45, "axis": "y", "origin": [4, 5, 3]}, + "faces": { + "north": {"uv": [0.5, 8.5, 1, 12.5], "texture": "#3"}, + "south": {"uv": [0.5, 8.5, 1, 12.5], "texture": "#3"} + } + }, + { + "name": "spikes_front_right", + "from": [11.29289, 8, 3.70711], + "to": [12.29289, 16, 3.70711], + "rotation": {"angle": 45, "axis": "y", "origin": [12, 5, 3]}, + "faces": { + "north": {"uv": [2.5, 8.5, 3, 12.5], "texture": "#3"}, + "south": {"uv": [2.5, 8.5, 3, 12.5], "texture": "#3"} + } + }, + { + "name": "spikes_back_left", + "from": [2.29289, 8, 11.70711], + "to": [3.29289, 16, 11.70711], + "rotation": {"angle": 45, "axis": "y", "origin": [4, 5, 11]}, + "faces": { + "north": {"uv": [4.5, 8.5, 5, 12.5], "texture": "#3"}, + "south": {"uv": [4.5, 8.5, 5, 12.5], "texture": "#3"} + } + }, + { + "name": "spikes_back_right", + "from": [12.70711, 8, 11.70711], + "to": [13.70711, 16, 11.70711], + "rotation": {"angle": -45, "axis": "y", "origin": [12, 5, 11]}, + "faces": { + "north": {"uv": [4.5, 8.5, 5, 12.5], "texture": "#3"}, + "south": {"uv": [4.5, 8.5, 5, 12.5], "texture": "#3"} + } + }, + { + "name": "spikes_front_bottom", + "from": [4, 5.65686, -1.24264], + "to": [12, 6.65686, -1.24264], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 1, 3]}, + "faces": { + "north": {"uv": [7.5, 10, 11.5, 10.5], "texture": "#3"}, + "south": {"uv": [11.5, 10, 7.5, 10.5], "texture": "#3"} + } + }, + { + "name": "spikes_middle_bottom", + "from": [4, 7, 8], + "to": [12, 8, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [7.5, 10, 11.5, 10.5], "texture": "#3"}, + "south": {"uv": [11.5, 10, 7.5, 10.5], "texture": "#3"} + } + }, + { + "name": "spikes_back_bottom", + "from": [4, 4.24264, 16.65686], + "to": [12, 5.24264, 16.65686], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 1, 11]}, + "faces": { + "north": {"uv": [7.5, 10, 11.5, 10.5], "texture": "#3"}, + "south": {"uv": [11.5, 10, 7.5, 10.5], "texture": "#3"} + } + }, + { + "from": [4, 2, 4], + "to": [12, 9, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 7, 7.8]}, + "faces": { + "north": {"uv": [4, 14, 12, 6], "texture": "#2", "tintindex": 0}, + "east": {"uv": [4, 14, 12, 6], "texture": "#2", "tintindex": 0}, + "south": {"uv": [4, 14, 12, 6], "texture": "#2"}, + "west": {"uv": [4, 14, 12, 6], "texture": "#2", "tintindex": 0}, + "up": {"uv": [4, 6, 12, 14], "texture": "#2", "tintindex": 0}, + "down": {"uv": [4, 6, 12, 14], "texture": "#2", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 135, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0.25, 0.25, 0.25] + } + }, + "groups": [ + { + "name": "body", + "origin": [0, 1, 0], + "color": 0, + "children": [ + { + "name": "body", + "origin": [0, 1, 0], + "color": 0, + "children": [0] + }, + { + "name": "fin_left", + "origin": [-4, 8, -2], + "color": 0, + "children": [1] + }, + { + "name": "fin_right", + "origin": [4, 8, -2], + "color": 0, + "children": [2] + }, + { + "name": "spikes_front_top", + "origin": [0, 9, -4], + "rotation": [-45, 0, 0], + "color": 0, + "children": [3] + }, + { + "name": "spikes_middle_top", + "origin": [0, 9, 0], + "color": 0, + "children": [4] + }, + { + "name": "spikes_back_top", + "origin": [0, 9, 4], + "rotation": [45, 0, 0], + "color": 0, + "children": [5] + }, + { + "name": "spikes_front_left", + "origin": [-4, 1, -4], + "rotation": [0, -45, 0], + "color": 0, + "children": [6] + }, + { + "name": "spikes_front_right", + "origin": [4, 1, -4], + "rotation": [0, 45, 0], + "color": 0, + "children": [7] + }, + { + "name": "spikes_back_left", + "origin": [-4, 1, 4], + "rotation": [0, 45, 0], + "color": 0, + "children": [8] + }, + { + "name": "spikes_back_right", + "origin": [4, 1, 4], + "rotation": [0, -45, 0], + "color": 0, + "children": [9] + }, + { + "name": "spikes_front_bottom", + "origin": [0, 1, -4], + "rotation": [45, 0, 0], + "color": 0, + "children": [10] + }, + { + "name": "spikes_middle_bottom", + "origin": [0, 1, 0], + "color": 0, + "children": [11] + }, + { + "name": "spikes_back_bottom", + "origin": [0, 1, 4], + "rotation": [-45, 0, 0], + "color": 0, + "children": [12] + } + ] + }, + 13, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [14, 15, 16, 17, 18] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/salmon_bucket_3d.json b/src/main/resources/assets/minecraft/models/item/salmon_bucket_3d.json new file mode 100644 index 0000000..4a08d02 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/salmon_bucket_3d.json @@ -0,0 +1,341 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/water_bucket_3d", + "2": "item/salmon_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "name": "head", + "from": [7, 11.07107, 2.636], + "to": [9, 15.07107, 6.636], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 14.48528, 5.6503]}, + "faces": { + "north": {"uv": [12, 2, 13, 4], "texture": "#2"}, + "east": {"uv": [10, 2, 12, 4], "texture": "#2"}, + "south": {"uv": [15, 2, 16, 4], "texture": "#2"}, + "west": {"uv": [13, 2, 15, 4], "texture": "#2"}, + "up": {"uv": [13, 2, 12, 0], "texture": "#2"}, + "down": {"uv": [14, 0, 13, 2], "texture": "#2"} + } + }, + { + "name": "body_front", + "from": [6.5, 6, 1.1], + "to": [9.5, 11, 9.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6, 9.1]}, + "faces": { + "north": {"uv": [4, 4, 5.5, 6.5], "texture": "#2"}, + "east": {"uv": [0, 4, 4, 6.5], "texture": "#2"}, + "south": {"uv": [9.5, 4, 11, 6.5], "texture": "#2"}, + "west": {"uv": [5.5, 4, 9.5, 6.5], "texture": "#2"}, + "up": {"uv": [5.5, 4, 4, 0], "texture": "#2"}, + "down": {"uv": [7, 0, 5.5, 4], "texture": "#2"} + } + }, + { + "name": "body_back", + "from": [6.5, 6, 9.1], + "to": [9.5, 11, 9.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6, 9.1]}, + "faces": { + "north": {"uv": [4, 10.5, 5.5, 13], "texture": "#2"}, + "east": {"uv": [4, 10.5, 4, 13], "texture": "#2"}, + "south": {"uv": [9.5, 10.5, 11, 13], "texture": "#2"}, + "west": {"uv": [5.5, 10.5, 5.5, 13], "texture": "#2"}, + "up": {"uv": [5.5, 10.5, 4, 10.5], "texture": "#2"}, + "down": {"uv": [7, 10.5, 5.5, 10.5], "texture": "#2"} + } + }, + { + "name": "body_back", + "from": [6.5, 6, 9.1], + "to": [9.5, 10, 10.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6, 9.1]}, + "faces": { + "north": {"uv": [4, 11, 5.5, 13], "texture": "#2"}, + "east": {"uv": [3.5, 11, 4, 13], "texture": "#2"}, + "south": {"uv": [9.5, 11, 11, 13], "texture": "#2"}, + "west": {"uv": [5.5, 11, 6, 13], "texture": "#2"}, + "up": {"uv": [5.5, 10.5, 4, 10], "texture": "#2"}, + "down": {"uv": [7, 10, 5.5, 10.5], "texture": "#2"} + } + }, + { + "name": "body_back", + "from": [6.5, 6, 10.1], + "to": [9.5, 9, 11.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6, 9.1]}, + "faces": { + "north": {"uv": [4, 11.5, 5.5, 13], "texture": "#2"}, + "east": {"uv": [3, 11.5, 3.5, 13], "texture": "#2"}, + "south": {"uv": [9.5, 11.5, 11, 13], "texture": "#2"}, + "west": {"uv": [6, 11.5, 6.5, 13], "texture": "#2"}, + "up": {"uv": [5.5, 10, 4, 9.5], "texture": "#2"}, + "down": {"uv": [7, 9.5, 5.5, 10], "texture": "#2"} + } + }, + { + "name": "body_back", + "from": [6.5, 6, 11.1], + "to": [9.5, 8, 12.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6, 9.1]}, + "faces": { + "north": {"uv": [4, 12, 5.5, 13], "texture": "#2"}, + "east": {"uv": [2.5, 12, 3, 13], "texture": "#2"}, + "south": {"uv": [9.5, 12, 11, 13], "texture": "#2"}, + "west": {"uv": [6.5, 12, 7, 13], "texture": "#2"}, + "up": {"uv": [5.5, 9.5, 4, 9], "texture": "#2"}, + "down": {"uv": [7, 9, 5.5, 9.5], "texture": "#2"} + } + }, + { + "name": "body_back", + "from": [6.5, 6, 12.1], + "to": [9.5, 7, 13.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6, 9.1]}, + "faces": { + "north": {"uv": [4, 12.5, 5.5, 13], "texture": "#2"}, + "east": {"uv": [2, 12.5, 2.5, 13], "texture": "#2"}, + "south": {"uv": [9.5, 12.5, 11, 13], "texture": "#2"}, + "west": {"uv": [7, 12.5, 7.5, 13], "texture": "#2"}, + "up": {"uv": [5.5, 9, 4, 8.5], "texture": "#2"}, + "down": {"uv": [7, 8.5, 5.5, 9], "texture": "#2"} + } + }, + { + "name": "fin_left", + "from": [4.499, 10.999, 3.85636], + "to": [6.501, 11.001, 5.85836], + "rotation": {"angle": 0, "axis": "x", "origin": [5.5, 10.65685, 4.85736]}, + "faces": { + "north": {"uv": [0, 2, 1, 2], "texture": "#2"}, + "east": {"uv": [0, 2, 1, 2], "texture": "#2"}, + "south": {"uv": [2, 2, 3, 2], "texture": "#2"}, + "west": {"uv": [1, 2, 2, 2], "texture": "#2"}, + "up": {"uv": [1, 2, 0, 1], "texture": "#2"}, + "down": {"uv": [2, 1, 1, 2], "texture": "#2"} + } + }, + { + "name": "fin_right", + "from": [9.499, 10.999, 3.85636], + "to": [11.501, 11.001, 5.85836], + "rotation": {"angle": 0, "axis": "x", "origin": [10.5, 10.65685, 4.85736]}, + "faces": { + "north": {"uv": [0, 1, 1, 1], "texture": "#2"}, + "east": {"uv": [0, 1, 1, 1], "texture": "#2"}, + "south": {"uv": [2, 1, 3, 1], "texture": "#2"}, + "west": {"uv": [1, 1, 2, 1], "texture": "#2"}, + "up": {"uv": [1, 1, 0, 0], "texture": "#2"}, + "down": {"uv": [2, 0, 1, 1], "texture": "#2"} + } + }, + { + "name": "fin_back_1", + "from": [8, 11, 6.1], + "to": [8, 13, 8.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6, 9.1]}, + "faces": { + "north": {"uv": [2.5, 2, 2.5, 3], "texture": "#2"}, + "east": {"uv": [1.5, 2, 2.5, 3], "texture": "#2"}, + "south": {"uv": [4, 2, 4, 3], "texture": "#2"}, + "west": {"uv": [2.5, 2, 3.5, 3], "texture": "#2"}, + "up": {"uv": [2.5, 2, 2.5, 1], "texture": "#2"}, + "down": {"uv": [2.5, 1, 2.5, 2], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + }, + { + "from": [4, 3, 4], + "to": [12, 10, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8.1]}, + "faces": { + "north": {"uv": [4, 12, 12, 4], "texture": "#1", "tintindex": 0}, + "east": {"uv": [4, 12, 12, 4], "texture": "#1", "tintindex": 0}, + "south": {"uv": [4, 12, 12, 4], "texture": "#1"}, + "west": {"uv": [4, 12, 12, 4], "texture": "#1", "tintindex": 0}, + "up": {"uv": [4, 4, 12, 12], "texture": "#1", "tintindex": 0}, + "down": {"uv": [4, 4, 12, 12], "texture": "#1", "tintindex": 0} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, -90, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, -90, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 102, 0], + "translation": [0.5, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 102, 0], + "translation": [0.5, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 135, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0.25, 0.25, 0.25] + } + }, + "groups": [ + { + "name": "head2", + "origin": [0, 2.5, -7.9], + "color": 0, + "children": [ + { + "name": "head", + "origin": [0, 2.5, -7.9], + "color": 0, + "children": [0] + }, + { + "name": "body_front", + "origin": [0, 2.5, -7.9], + "color": 0, + "children": [1] + }, + { + "name": "body_back", + "origin": [0, 2.5, 0.1], + "color": 0, + "children": [2, 3, 4, 5, 6] + }, + { + "name": "fin_left", + "origin": [-1.5, 1, -7.9], + "rotation": [0, 0, 45], + "color": 0, + "children": [7] + }, + { + "name": "fin_right", + "origin": [1.5, 1, -7.9], + "rotation": [0, 0, -45], + "color": 0, + "children": [8] + }, + { + "name": "fin_back_1", + "origin": [0, 7, -2.9], + "color": 0, + "children": [9] + }, + { + "name": "fin_back_2", + "origin": [0, 7, -0.9], + "color": 0, + "children": [] + }, + { + "name": "tail", + "origin": [0, 2.5, 8.1], + "color": 0, + "children": [] + } + ] + }, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [10, 11, 12, 13, 14] + }, + 15 + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/spruce_boat_3d.json b/src/main/resources/assets/minecraft/models/item/spruce_boat_3d.json new file mode 100644 index 0000000..7b8b45c --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/spruce_boat_3d.json @@ -0,0 +1,194 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "2": "item/spruce_boat_3d", + "particle": "item/spruce_boat_3d" + }, + "elements": [ + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#2"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#2"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#2"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#2"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#2"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#2"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#2"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#2"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#2"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#2"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#2"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#2"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#2"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#2"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#2"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#2"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#2"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#2"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#2"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#2"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#2"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#2"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#2"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#2"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#2"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#2"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#2"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#2"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#2"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#2"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#2"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#2"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#2"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#2"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#2"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [5, 6] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [7, 8] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/spruce_chest_boat_3d.json b/src/main/resources/assets/minecraft/models/item/spruce_chest_boat_3d.json new file mode 100644 index 0000000..6b896ed --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/spruce_chest_boat_3d.json @@ -0,0 +1,242 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "1": "item/spruce_boat_3d", + "2": "item/boat_chest_3d", + "particle": "item/spruce_boat_3d" + }, + "elements": [ + { + "name": "top", + "from": [4.5, 6, 6.5], + "to": [11.5, 9, 13.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "east": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "south": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "west": {"uv": [7, 11, 14, 14], "texture": "#2"}, + "up": {"uv": [7, 14, 0, 7], "texture": "#2"}, + "down": {"uv": [14, 0, 7, 7], "texture": "#2"} + } + }, + { + "name": "lock", + "from": [7.5, 5, 5.5], + "to": [8.5, 7, 6.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 6, 13.5]}, + "faces": { + "north": {"uv": [0, 14, 1, 16], "texture": "#2"}, + "east": {"uv": [14, 0, 15, 2], "texture": "#2"}, + "south": {"uv": [1, 14, 2, 16], "texture": "#2"}, + "west": {"uv": [2, 14, 3, 16], "texture": "#2"}, + "up": {"uv": [15, 3, 14, 2], "texture": "#2"}, + "down": {"uv": [4, 14, 3, 15], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [4.5, 2, 6.5], + "to": [11.5, 6, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "east": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "south": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "west": {"uv": [7, 7, 14, 11], "texture": "#2"}, + "up": {"uv": [7, 7, 0, 0], "texture": "#2"} + } + }, + { + "name": "bottom", + "from": [3.5, 0, 1.5], + "to": [12.5, 2, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 2, 7.5]}, + "faces": { + "north": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "east": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "south": {"uv": [3, 9, 7.5, 10], "texture": "#1"}, + "west": {"uv": [3, 8, 9.5, 9], "texture": "#1"}, + "up": {"uv": [4.5, 6.5, 0, 0], "texture": "#1"}, + "down": {"uv": [9, 0, 4.5, 6.5], "texture": "#1"} + } + }, + { + "name": "west", + "from": [2.5, 2, 0.5], + "to": [4.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 7.5]}, + "faces": { + "north": {"uv": [6, 10, 7, 11.5], "texture": "#1"}, + "east": {"uv": [0, 6.5, 7.5, 8], "texture": "#1"}, + "south": {"uv": [7, 10, 8, 11.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [1, 15.5, 0, 8], "texture": "#1"}, + "down": {"uv": [13, 8, 12, 15.5], "texture": "#1"} + } + }, + { + "name": "north", + "from": [4.5, 2, 0.5], + "to": [11.5, 5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 6.5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "east": {"uv": [8, 10, 9, 11.5], "texture": "#1"}, + "south": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "west": {"uv": [9, 10, 10, 11.5], "texture": "#1"}, + "up": {"uv": [12.5, 4, 9, 3], "texture": "#1"}, + "down": {"uv": [16, 4, 12.5, 5], "texture": "#1"} + } + }, + { + "name": "south", + "from": [4.5, 2, 13.5], + "to": [11.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-3.5, 6, 19.5]}, + "faces": { + "north": {"uv": [9, 1.5, 12.5, 3], "texture": "#1"}, + "east": {"uv": [10, 10, 11, 11.5], "texture": "#1"}, + "south": {"uv": [9, 0, 12.5, 1.5], "texture": "#1"}, + "west": {"uv": [11, 8, 12, 9.5], "texture": "#1"}, + "up": {"uv": [12.5, 6, 9, 5], "texture": "#1"}, + "down": {"uv": [11, 9, 7.5, 10], "texture": "#1"} + } + }, + { + "name": "east", + "from": [11.5, 2, 0.5], + "to": [13.5, 5, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [5.5, 6, 7.5]}, + "faces": { + "north": {"uv": [11, 9.5, 12, 11], "texture": "#1"}, + "east": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "south": {"uv": [11, 11, 12, 12.5], "texture": "#1"}, + "west": {"uv": [7.5, 6.5, 15, 8], "texture": "#1"}, + "up": {"uv": [3, 15.5, 2, 8], "texture": "#1"}, + "down": {"uv": [2, 8, 1, 15.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [1, -0.75, 5.5], + "to": [2, 3.25, 8.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "up": {"uv": [9, 11.5, 9.5, 13], "texture": "#1"}, + "down": {"uv": [9.5, 11.5, 10, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [1, 3.25, 6.5], + "to": [2, 8.25, 7.5], + "rotation": {"angle": -27.5, "axis": "z", "origin": [1.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "up": {"uv": [9, 6, 9.5, 6.5], "texture": "#1"}, + "down": {"uv": [9.5, 6, 10, 6.5], "texture": "#1"} + } + }, + { + "name": "bottom", + "from": [14, -0.75, 5.5], + "to": [15, 3.25, 8.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [8, 11.5, 8.5, 13.5], "texture": "#1"}, + "east": {"uv": [3, 10, 4.5, 12], "texture": "#1"}, + "south": {"uv": [8.5, 11.5, 9, 13.5], "texture": "#1"}, + "west": {"uv": [4.5, 10, 6, 12], "texture": "#1"}, + "up": {"uv": [9.5, 13, 9, 11.5], "texture": "#1"}, + "down": {"uv": [10, 11.5, 9.5, 13], "texture": "#1"} + } + }, + { + "name": "top", + "from": [14, 3.25, 6.5], + "to": [15, 8.25, 7.5], + "rotation": {"angle": 27.5, "axis": "z", "origin": [14.5, 3.5, 7]}, + "faces": { + "north": {"uv": [6, 11.5, 6.5, 14], "texture": "#1"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#1"}, + "south": {"uv": [7, 11.5, 7.5, 14], "texture": "#1"}, + "west": {"uv": [7.5, 11.5, 8, 14], "texture": "#1"}, + "up": {"uv": [9.5, 6.5, 9, 6], "texture": "#1"}, + "down": {"uv": [10, 6, 9.5, 6.5], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "thirdperson_lefthand": { + "rotation": [0, 145, 0], + "translation": [-0.05, 4, 0.5], + "scale": [0.64, 0.64, 0.64] + }, + "firstperson_righthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "firstperson_lefthand": { + "rotation": [0, 119, 0], + "translation": [-4.25, 6.5, 6], + "scale": [0.325, 0.325, 0.325] + }, + "ground": { + "translation": [0, 3.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [32.5, 135, 0], + "translation": [0, 2.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 2.75, 0] + } + }, + "groups": [ + { + "name": "chest", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [0, 1, 2] + }, + { + "name": "boat", + "origin": [5.5, 2, 7.5], + "color": 0, + "children": [3, 4, 5, 6, 7] + }, + { + "name": "paddle1", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [8, 9] + }, + { + "name": "paddle2", + "origin": [1.5, 3.5, 7], + "color": 0, + "children": [10, 11] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/tadpole_bucket_3d.json b/src/main/resources/assets/minecraft/models/item/tadpole_bucket_3d.json new file mode 100644 index 0000000..e564170 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/tadpole_bucket_3d.json @@ -0,0 +1,180 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "textures": { + "0": "item/bucket_3d", + "2": "item/tadpole_bucket_water_3d", + "3": "item/tadpole_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "name": "body", + "from": [6.5, 10, 3.5], + "to": [9.5, 12, 6.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 5]}, + "faces": { + "north": {"uv": [3, 3, 6, 5], "texture": "#3"}, + "east": {"uv": [0, 3, 3, 5], "texture": "#3"}, + "south": {"uv": [9, 3, 12, 5], "texture": "#3"}, + "west": {"uv": [6, 3, 9, 5], "texture": "#3"}, + "up": {"uv": [6, 3, 3, 0], "texture": "#3"}, + "down": {"uv": [9, 0, 6, 3], "texture": "#3"} + } + }, + { + "name": "tail", + "from": [8, 10, 6.5], + "to": [8, 12, 13.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 5]}, + "faces": { + "east": {"uv": [0, 7, 7, 9], "texture": "#3"}, + "west": {"uv": [7, 7, 0, 9], "texture": "#3"} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + }, + { + "from": [4, 3, 4], + "to": [12, 10, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 7.8]}, + "faces": { + "north": {"uv": [4, 14, 12, 6], "texture": "#2", "tintindex": 0}, + "east": {"uv": [4, 14, 12, 6], "texture": "#2", "tintindex": 0}, + "south": {"uv": [4, 14, 12, 6], "texture": "#2"}, + "west": {"uv": [4, 14, 12, 6], "texture": "#2", "tintindex": 0}, + "up": {"uv": [4, 6, 12, 14], "texture": "#2", "tintindex": 0}, + "down": {"uv": [4, 6, 12, 14], "texture": "#2", "tintindex": 0} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 125, 0], + "translation": [0.5, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 125, 0], + "translation": [0.5, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 135, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "rotation": [0, 1, 0], + "translation": [0.25, 0.25, 0.25] + } + }, + "groups": [ + { + "name": "body", + "origin": [0, 1, -1.5], + "color": 0, + "children": [0] + }, + { + "name": "tail", + "origin": [0, 1, 1.5], + "color": 0, + "children": [1] + }, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [2, 3, 4, 5, 6] + }, + 7 + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/tropical_fish_bucket_3d.json b/src/main/resources/assets/minecraft/models/item/tropical_fish_bucket_3d.json new file mode 100644 index 0000000..2e4d5c1 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/tropical_fish_bucket_3d.json @@ -0,0 +1,232 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [32, 32], + "textures": { + "0": "item/bucket_3d", + "2": "item/tropical_fish_bucket_water_3d", + "3": "item/tropical_fish_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "name": "body", + "from": [7, 9.5, 6.3], + "to": [9, 15.5, 9.3], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 10, 9.3]}, + "faces": { + "north": {"uv": [5, 0, 4, 3], "rotation": 180, "texture": "#3"}, + "east": {"uv": [0, 3, 3, 4.5], "rotation": 270, "texture": "#3"}, + "south": {"uv": [4, 3, 3, 0], "texture": "#3"}, + "west": {"uv": [4, 3, 7, 4.5], "rotation": 90, "texture": "#3"}, + "up": {"uv": [3, 3, 4, 4.5], "rotation": 180, "texture": "#3"}, + "down": {"uv": [7, 3, 8, 4.5], "texture": "#3"} + } + }, + { + "name": "right_fin", + "from": [9, 12.37868, 4.5929], + "to": [11, 12.37868, 6.5929], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 12, 8.3]}, + "faces": { + "up": {"uv": [1, 8, 2, 9], "rotation": 180, "texture": "#3"}, + "down": {"uv": [1, 6, 2, 7], "texture": "#3"} + } + }, + { + "name": "left_fin", + "from": [5, 12.37868, 4.5929], + "to": [7, 12.37868, 6.5929], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 12, 8.3]}, + "faces": { + "up": {"uv": [1, 6, 2, 7], "rotation": 180, "texture": "#3"}, + "down": {"uv": [1, 8, 2, 9], "texture": "#3"} + } + }, + { + "name": "fin_top", + "from": [8, 9.5, 9.3], + "to": [8, 15.5, 13.3], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 10, 9.3]}, + "faces": { + "east": {"uv": [5, 0, 8, 2], "rotation": 270, "texture": "#3"}, + "west": {"uv": [8, 0, 11, 2], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "tail", + "from": [8, 5.5, 6.3], + "to": [8, 9.5, 9.3], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 10, 9.3]}, + "faces": { + "east": {"uv": [12, 0, 14, 1.5], "rotation": 270, "texture": "#3"}, + "west": {"uv": [14, 0, 16, 1.5], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + }, + { + "from": [4, 3, 4], + "to": [12, 10, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 7.8]}, + "faces": { + "north": {"uv": [4, 14, 12, 6], "texture": "#2", "tintindex": 0}, + "east": {"uv": [4, 14, 12, 6], "texture": "#2", "tintindex": 0}, + "south": {"uv": [4, 14, 12, 6], "texture": "#2"}, + "west": {"uv": [4, 14, 12, 6], "texture": "#2", "tintindex": 0}, + "up": {"uv": [4, 6, 12, 14], "texture": "#2", "tintindex": 0}, + "down": {"uv": [4, 6, 12, 14], "texture": "#2", "tintindex": 0} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, -90, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, -90, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 102, 0], + "translation": [0.5, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 102, 0], + "translation": [0.5, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 135, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0.25, 0.25, 0.25] + } + }, + "groups": [ + { + "name": "body", + "origin": [0, 1.5, -0.2], + "color": 0, + "children": [ + 0, + { + "name": "right_fin", + "origin": [1, 0, -0.2], + "rotation": [0, -45, 0], + "color": 0, + "children": [1] + }, + { + "name": "left_fin", + "origin": [-1, 0, -0.2], + "rotation": [0, 45, 0], + "color": 0, + "children": [2] + } + ] + }, + { + "name": "fin_top", + "origin": [0, 3, -3.2], + "color": 0, + "children": [3] + }, + { + "name": "tail", + "origin": [0, 1.5, 2.8], + "color": 0, + "children": [4] + }, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [5, 6, 7, 8, 9] + }, + 10 + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/water_bucket_3d.json b/src/main/resources/assets/minecraft/models/item/water_bucket_3d.json new file mode 100644 index 0000000..f8b7c9e --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/water_bucket_3d.json @@ -0,0 +1,143 @@ +{ + "format_version": "1.21.6", + "credit": "cyberia was here", + "texture_size": [64, 64], + "textures": { + "0": "item/bucket_3d", + "1": "item/water_bucket_3d", + "particle": "item/bucket_3d" + }, + "elements": [ + { + "from": [4, 3, 4], + "to": [12, 10, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]}, + "faces": { + "north": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "east": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "south": {"uv": [4, 14, 12, 6], "texture": "#1"}, + "west": {"uv": [4, 14, 12, 6], "texture": "#1", "tintindex": 0}, + "up": {"uv": [4, 6, 12, 14], "texture": "#1", "tintindex": 0}, + "down": {"uv": [4, 6, 12, 14], "texture": "#1", "tintindex": 0} + } + }, + { + "name": "bottom", + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 0, 5]}, + "faces": { + "north": {"uv": [2, 6, 4, 6.5], "texture": "#0"}, + "east": {"uv": [4, 6, 6, 6.5], "texture": "#0"}, + "south": {"uv": [6, 6, 8, 6.5], "texture": "#0"}, + "west": {"uv": [2, 6.5, 4, 7], "texture": "#0"}, + "up": {"uv": [6.5, 6, 4.5, 4], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "name": "side1", + "from": [3, 2, 3], + "to": [12, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 3, 4]}, + "faces": { + "north": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "east": {"uv": [4.25, 6.75, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "west": {"uv": [4.5, 6.75, 4.75, 9], "texture": "#0"}, + "up": {"uv": [6.25, 6.75, 4, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 4, 6.5, 4.25], "texture": "#0"} + } + }, + { + "name": "side2", + "from": [12, 2, 3], + "to": [13, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 4]}, + "faces": { + "north": {"uv": [4.75, 6.75, 5, 9], "texture": "#0"}, + "east": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "south": {"uv": [5, 6.75, 5.25, 8.75], "texture": "#0"}, + "west": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "up": {"uv": [6.5, 8.75, 6.25, 6.5], "texture": "#0"}, + "down": {"uv": [6.75, 6.5, 6.5, 8.75], "texture": "#0"} + } + }, + { + "name": "side3", + "from": [4, 2, 12], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 3, 13]}, + "faces": { + "north": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "east": {"uv": [5.25, 6.75, 5.5, 9], "texture": "#0"}, + "south": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "west": {"uv": [5.5, 6.75, 5.75, 8.75], "texture": "#0"}, + "up": {"uv": [8.75, 4.5, 6.5, 4.25], "texture": "#0"}, + "down": {"uv": [8.75, 4.5, 6.5, 4.75], "texture": "#0"} + } + }, + { + "name": "side4", + "from": [3, 2, 4], + "to": [4, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 3, 5]}, + "faces": { + "north": {"uv": [5.75, 6.75, 6, 8.75], "texture": "#0"}, + "east": {"uv": [11.5, 0, 13.75, 2.25], "texture": "#0"}, + "south": {"uv": [6, 6.75, 6.25, 9], "texture": "#0"}, + "west": {"uv": [9.25, 0, 11.5, 2.25], "texture": "#0"}, + "up": {"uv": [7, 2.25, 6.75, 0], "texture": "#0"}, + "down": {"uv": [4.25, 6.75, 4, 9], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0, 2.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 129, 0], + "translation": [0.25, 3.5, 1], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 1.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "head": { + "translation": [0, 12.5, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "translation": [0, 2.75, 0.25] + } + }, + "groups": [ + 0, + { + "name": "bucket", + "origin": [5, 2, 4], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/wildflowers_2d.json b/src/main/resources/assets/minecraft/models/item/wildflowers_2d.json new file mode 100644 index 0000000..613e460 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/wildflowers_2d.json @@ -0,0 +1,7 @@ +{ + "credit": "cyberia was here", + "parent": "minecraft:item/generated", + "textures": { + "layer0": "item/wildflowers" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/models/item/wildflowers_3d.json b/src/main/resources/assets/minecraft/models/item/wildflowers_3d.json new file mode 100644 index 0000000..00cbb4f --- /dev/null +++ b/src/main/resources/assets/minecraft/models/item/wildflowers_3d.json @@ -0,0 +1,188 @@ +{ + "credit": "cyberia was here", + "textures": { + "0": "item/basket_3d", + "1": "item/wildflowers_3d", + "particle": "item/basket_3d" + }, + "elements": [ + { + "from": [12.5, 0, 4.5], + "to": [13.5, 6, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 0, 4.5]}, + "faces": { + "north": {"uv": [10.5, 9.5, 11, 12.5], "texture": "#0"}, + "east": {"uv": [6, 6, 9.5, 9], "texture": "#0"}, + "south": {"uv": [5.5, 10.5, 6, 13.5], "texture": "#0"}, + "west": {"uv": [9, 0, 12.5, 3], "texture": "#0"}, + "up": {"uv": [5, 11, 1.5, 10.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [14, 6, 10.5, 6.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [2.5, 0, 4.5], + "to": [3.5, 6, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [2.5, 0, 4.5]}, + "faces": { + "north": {"uv": [1.5, 11, 2, 14], "texture": "#0"}, + "east": {"uv": [9, 3, 12.5, 6], "texture": "#0"}, + "south": {"uv": [10, 10.5, 10.5, 13.5], "texture": "#0"}, + "west": {"uv": [6, 9, 9.5, 12], "texture": "#0"}, + "up": {"uv": [14, 7, 10.5, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [14, 7, 10.5, 7.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [3.5, 0, 4.5], + "to": [12.5, 6, 5.5], + "rotation": {"angle": 0, "axis": "y", "origin": [3.5, 0, 4.5]}, + "faces": { + "north": {"uv": [0, 3, 4.5, 6], "texture": "#0"}, + "south": {"uv": [0, 0, 4.5, 3], "texture": "#0"}, + "up": {"uv": [10.5, 10.5, 10, 6], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0.5, 10.5, 0, 15], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [3.5, 0, 10.5], + "to": [12.5, 6, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [3.5, 0, 10.5]}, + "faces": { + "north": {"uv": [4.5, 3, 9, 6], "texture": "#0"}, + "south": {"uv": [4.5, 0, 9, 3], "texture": "#0"}, + "up": {"uv": [1, 15, 0.5, 10.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [1.5, 10.5, 1, 15], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [3.5, 0, 5.5], + "to": [12.5, 5, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 0, 4.5]}, + "faces": { + "down": {"uv": [5.5, 6, 3, 10.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [3.4995, 5.7495, 5.4995], + "to": [12.5005, 5.7505, 10.5005], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 0, 4.5]}, + "faces": { + "up": {"uv": [9, 5, 0, 0], "texture": "#1"} + } + }, + { + "from": [3.5, 5.75, 5.5], + "to": [12.5, 5.75, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 1, 4.5]}, + "faces": { + "up": {"uv": [9, 10, 0, 5], "texture": "#1"} + } + }, + { + "from": [3.5, 5.875, 5.5], + "to": [12.5, 5.875, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [12.5, 2, 4.5]}, + "faces": { + "up": {"uv": [9, 15, 0, 10], "texture": "#1"} + } + }, + { + "from": [4.499, 5.999, 8.499], + "to": [8.501, 6.001, 12.501], + "rotation": {"angle": -22.5, "axis": "y", "origin": [6.5, 6, 10.5]}, + "faces": { + "up": {"uv": [14, 13, 10, 9], "texture": "#1"} + } + }, + { + "from": [2.499, 5.999, 4.499], + "to": [6.501, 6.001, 8.501], + "rotation": {"angle": 22.5, "axis": "y", "origin": [4.5, 6, 6.5]}, + "faces": { + "up": {"uv": [14, 9, 10, 5], "texture": "#1"} + } + }, + { + "from": [9.499, 5.999, 7.499], + "to": [13.501, 6.001, 11.501], + "rotation": {"angle": 22.5, "axis": "y", "origin": [11.5, 6, 9.5]}, + "faces": { + "up": {"uv": [14, 5, 10, 1], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [7.5, 4, 11], + "to": [8.5, 9, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 4, 10.5]}, + "faces": { + "north": {"uv": [3.5, 11.5, 4, 14], "texture": "#0"}, + "east": {"uv": [2, 11.5, 2.5, 14], "texture": "#0"}, + "south": {"uv": [2.5, 11.5, 3, 14], "texture": "#0"}, + "west": {"uv": [3, 11.5, 3.5, 14], "texture": "#0"}, + "up": {"uv": [12, 10, 11.5, 9.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [12, 10, 11.5, 10.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [7.5, 4, 4], + "to": [8.5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 4, 3.5]}, + "faces": { + "north": {"uv": [11, 10, 11.5, 12.5], "texture": "#0"}, + "east": {"uv": [4, 11.5, 4.5, 14], "texture": "#0"}, + "south": {"uv": [4.5, 11.5, 5, 14], "texture": "#0"}, + "west": {"uv": [5, 11.5, 5.5, 14], "texture": "#0"}, + "up": {"uv": [12, 11, 11.5, 10.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [12, 11, 11.5, 11.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [7.5, 8, 5], + "to": [8.5, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 3, 3.5]}, + "faces": { + "east": {"uv": [10.5, 7.5, 13.5, 8], "texture": "#0"}, + "west": {"uv": [10.5, 8, 13.5, 8.5], "texture": "#0"}, + "up": {"uv": [13.5, 9, 10.5, 8.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [13.5, 9, 10.5, 9.5], "rotation": 270, "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [68, 90, 0], + "translation": [0, -1.5, 0.25], + "scale": [0.75, 0.75, 0.75] + }, + "thirdperson_lefthand": { + "rotation": [68, 90, 0], + "translation": [0, -1.5, 0.25], + "scale": [0.75, 0.75, 0.75] + }, + "firstperson_righthand": { + "rotation": [0, -51, 0], + "translation": [0, 4, 0], + "scale": [0.75, 0.75, 0.75] + }, + "firstperson_lefthand": { + "rotation": [0, -51, 0], + "translation": [0, 4, 0], + "scale": [0.75, 0.75, 0.75] + }, + "ground": { + "translation": [0, 3.75, 0], + "scale": [0.75, 0.75, 0.75] + }, + "gui": { + "rotation": [35, 45, 0], + "translation": [0, 3.75, 0] + }, + "head": { + "rotation": [0, 90, 0], + "translation": [0, 14.5, 0] + }, + "fixed": { + "translation": [0, 4.25, 0] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/optifine/emissive.properties b/src/main/resources/assets/minecraft/optifine/emissive.properties new file mode 100644 index 0000000..3ce7dca --- /dev/null +++ b/src/main/resources/assets/minecraft/optifine/emissive.properties @@ -0,0 +1 @@ +suffix.emissive=_e \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/sounds.json b/src/main/resources/assets/minecraft/sounds.json new file mode 100644 index 0000000..633f363 --- /dev/null +++ b/src/main/resources/assets/minecraft/sounds.json @@ -0,0 +1,6 @@ +{ + "custom.slashy": { + "category": "master", + "sounds":["custom/slashy"] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/sounds/custom/slashy.ogg b/src/main/resources/assets/minecraft/sounds/custom/slashy.ogg new file mode 100644 index 0000000..9780910 Binary files /dev/null and b/src/main/resources/assets/minecraft/sounds/custom/slashy.ogg differ diff --git a/src/main/resources/assets/minecraft/textures/item/acacia_boat_3d.png b/src/main/resources/assets/minecraft/textures/item/acacia_boat_3d.png new file mode 100644 index 0000000..c74428a Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/acacia_boat_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_blue_2d.png b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_blue_2d.png new file mode 100644 index 0000000..01b0fac Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_blue_2d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_blue_3d.png b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_blue_3d.png new file mode 100644 index 0000000..0074b66 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_blue_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_blue_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_blue_3d.png.mcmeta new file mode 100644 index 0000000..e37e186 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_blue_3d.png.mcmeta @@ -0,0 +1,143 @@ +{ + "animation": { + "frametime": 1, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 18, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_cyan_2d.png b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_cyan_2d.png new file mode 100644 index 0000000..8a0e53e Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_cyan_2d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_cyan_3d.png b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_cyan_3d.png new file mode 100644 index 0000000..5f66f95 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_cyan_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_cyan_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_cyan_3d.png.mcmeta new file mode 100644 index 0000000..e37e186 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_cyan_3d.png.mcmeta @@ -0,0 +1,143 @@ +{ + "animation": { + "frametime": 1, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 18, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_gold_2d.png b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_gold_2d.png new file mode 100644 index 0000000..88d2c14 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_gold_2d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_gold_3d.png b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_gold_3d.png new file mode 100644 index 0000000..c8abd9b Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_gold_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_gold_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_gold_3d.png.mcmeta new file mode 100644 index 0000000..e37e186 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_gold_3d.png.mcmeta @@ -0,0 +1,143 @@ +{ + "animation": { + "frametime": 1, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 18, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_lucy_2d.png b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_lucy_2d.png new file mode 100644 index 0000000..404446e Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_lucy_2d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_lucy_3d.png b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_lucy_3d.png new file mode 100644 index 0000000..473b1a4 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_lucy_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_lucy_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_lucy_3d.png.mcmeta new file mode 100644 index 0000000..e37e186 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_lucy_3d.png.mcmeta @@ -0,0 +1,143 @@ +{ + "animation": { + "frametime": 1, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 18, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_wild_2d.png b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_wild_2d.png new file mode 100644 index 0000000..f5cffe7 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_wild_2d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_wild_3d.png b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_wild_3d.png new file mode 100644 index 0000000..a91dbb4 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_wild_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_wild_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_wild_3d.png.mcmeta new file mode 100644 index 0000000..e37e186 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/axolotl_bucket_wild_3d.png.mcmeta @@ -0,0 +1,143 @@ +{ + "animation": { + "frametime": 1, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 18, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/bamboo_raft_3d.png b/src/main/resources/assets/minecraft/textures/item/bamboo_raft_3d.png new file mode 100644 index 0000000..f0bc901 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/bamboo_raft_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/basket_3d.png b/src/main/resources/assets/minecraft/textures/item/basket_3d.png new file mode 100644 index 0000000..84326d9 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/basket_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/birch_boat_3d.png b/src/main/resources/assets/minecraft/textures/item/birch_boat_3d.png new file mode 100644 index 0000000..7094ff1 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/birch_boat_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/boat_chest_3d.png b/src/main/resources/assets/minecraft/textures/item/boat_chest_3d.png new file mode 100644 index 0000000..469a1d6 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/boat_chest_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/bucket_3d.png b/src/main/resources/assets/minecraft/textures/item/bucket_3d.png new file mode 100644 index 0000000..68be2bf Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/bucket_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/cherry_boat_3d.png b/src/main/resources/assets/minecraft/textures/item/cherry_boat_3d.png new file mode 100644 index 0000000..33b886d Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/cherry_boat_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/cod_bucket_3d.png b/src/main/resources/assets/minecraft/textures/item/cod_bucket_3d.png new file mode 100644 index 0000000..423e2ce Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/cod_bucket_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/cod_bucket_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/cod_bucket_3d.png.mcmeta new file mode 100644 index 0000000..343c347 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/cod_bucket_3d.png.mcmeta @@ -0,0 +1,159 @@ +{ + "animation": { + "frametime": 1, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 20, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/dark_oak_boat_3d.png b/src/main/resources/assets/minecraft/textures/item/dark_oak_boat_3d.png new file mode 100644 index 0000000..9b3d214 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/dark_oak_boat_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/end_crystal_3d.png b/src/main/resources/assets/minecraft/textures/item/end_crystal_3d.png new file mode 100644 index 0000000..9bc2291 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/end_crystal_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/end_crystal_3d_e.png b/src/main/resources/assets/minecraft/textures/item/end_crystal_3d_e.png new file mode 100644 index 0000000..125a4c5 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/end_crystal_3d_e.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/end_crystal_glass_3d.png b/src/main/resources/assets/minecraft/textures/item/end_crystal_glass_3d.png new file mode 100644 index 0000000..71c7424 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/end_crystal_glass_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/end_crystal_inner_3d.png b/src/main/resources/assets/minecraft/textures/item/end_crystal_inner_3d.png new file mode 100644 index 0000000..1271747 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/end_crystal_inner_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/end_crystal_inner_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/end_crystal_inner_3d.png.mcmeta new file mode 100644 index 0000000..fdf5a72 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/end_crystal_inner_3d.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 3, + "interpolate": true + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/jungle_boat_3d.png b/src/main/resources/assets/minecraft/textures/item/jungle_boat_3d.png new file mode 100644 index 0000000..82a87a2 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/jungle_boat_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/lava_bucket_3d.png b/src/main/resources/assets/minecraft/textures/item/lava_bucket_3d.png new file mode 100644 index 0000000..eeb994a Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/lava_bucket_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/lava_bucket_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/lava_bucket_3d.png.mcmeta new file mode 100644 index 0000000..ff5f80f --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/lava_bucket_3d.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 3, + "frames": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/leaf_litter_3d.png b/src/main/resources/assets/minecraft/textures/item/leaf_litter_3d.png new file mode 100644 index 0000000..4f2c9fe Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/leaf_litter_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/mangrove_boat_3d.png b/src/main/resources/assets/minecraft/textures/item/mangrove_boat_3d.png new file mode 100644 index 0000000..3d3666f Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/mangrove_boat_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/milk_bucket_3d.png b/src/main/resources/assets/minecraft/textures/item/milk_bucket_3d.png new file mode 100644 index 0000000..68c8dc7 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/milk_bucket_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/milk_bucket_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/milk_bucket_3d.png.mcmeta new file mode 100644 index 0000000..b321558 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/milk_bucket_3d.png.mcmeta @@ -0,0 +1,70 @@ +{ + "animation": { + "frametime": 3, + "interpolate": true, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 30, + 29, + 28, + 27, + 26, + 25, + 24, + 23, + 22, + 21, + 20, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/oak_boat_3d.png b/src/main/resources/assets/minecraft/textures/item/oak_boat_3d.png new file mode 100644 index 0000000..73f4bf1 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/oak_boat_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/pale_oak_boat_3d.png b/src/main/resources/assets/minecraft/textures/item/pale_oak_boat_3d.png new file mode 100644 index 0000000..910ab04 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/pale_oak_boat_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/pink_petals_3d.png b/src/main/resources/assets/minecraft/textures/item/pink_petals_3d.png new file mode 100644 index 0000000..2df44a0 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/pink_petals_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/powder_snow_bucket_3d.png b/src/main/resources/assets/minecraft/textures/item/powder_snow_bucket_3d.png new file mode 100644 index 0000000..3fb08b4 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/powder_snow_bucket_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/pufferfish_bucket_3d.png b/src/main/resources/assets/minecraft/textures/item/pufferfish_bucket_3d.png new file mode 100644 index 0000000..9b5ed27 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/pufferfish_bucket_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/pufferfish_bucket_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/pufferfish_bucket_3d.png.mcmeta new file mode 100644 index 0000000..35ff041 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/pufferfish_bucket_3d.png.mcmeta @@ -0,0 +1,194 @@ +{ + "animation": { + "frametime": 1, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/pufferfish_bucket_fins_3d.png b/src/main/resources/assets/minecraft/textures/item/pufferfish_bucket_fins_3d.png new file mode 100644 index 0000000..bfb13e6 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/pufferfish_bucket_fins_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/salmon_bucket_3d.png b/src/main/resources/assets/minecraft/textures/item/salmon_bucket_3d.png new file mode 100644 index 0000000..873da63 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/salmon_bucket_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/salmon_bucket_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/salmon_bucket_3d.png.mcmeta new file mode 100644 index 0000000..343c347 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/salmon_bucket_3d.png.mcmeta @@ -0,0 +1,159 @@ +{ + "animation": { + "frametime": 1, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 20, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/spruce_boat_3d.png b/src/main/resources/assets/minecraft/textures/item/spruce_boat_3d.png new file mode 100644 index 0000000..9f7a825 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/spruce_boat_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/tadpole_bucket_3d.png b/src/main/resources/assets/minecraft/textures/item/tadpole_bucket_3d.png new file mode 100644 index 0000000..36f2af5 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/tadpole_bucket_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/tadpole_bucket_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/tadpole_bucket_3d.png.mcmeta new file mode 100644 index 0000000..18eeab9 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/tadpole_bucket_3d.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 1, + "frames": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/tadpole_bucket_water_3d.png b/src/main/resources/assets/minecraft/textures/item/tadpole_bucket_water_3d.png new file mode 100644 index 0000000..42a5f8d Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/tadpole_bucket_water_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/tadpole_bucket_water_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/tadpole_bucket_water_3d.png.mcmeta new file mode 100644 index 0000000..b321558 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/tadpole_bucket_water_3d.png.mcmeta @@ -0,0 +1,70 @@ +{ + "animation": { + "frametime": 3, + "interpolate": true, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 30, + 29, + 28, + 27, + 26, + 25, + 24, + 23, + 22, + 21, + 20, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/tropical_fish_bucket_3d.png b/src/main/resources/assets/minecraft/textures/item/tropical_fish_bucket_3d.png new file mode 100644 index 0000000..dd056eb Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/tropical_fish_bucket_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/tropical_fish_bucket_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/tropical_fish_bucket_3d.png.mcmeta new file mode 100644 index 0000000..a2b83e0 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/tropical_fish_bucket_3d.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 1, + "frames": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/tropical_fish_bucket_water_3d.png b/src/main/resources/assets/minecraft/textures/item/tropical_fish_bucket_water_3d.png new file mode 100644 index 0000000..eed3bcb Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/tropical_fish_bucket_water_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/tropical_fish_bucket_water_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/tropical_fish_bucket_water_3d.png.mcmeta new file mode 100644 index 0000000..b321558 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/tropical_fish_bucket_water_3d.png.mcmeta @@ -0,0 +1,70 @@ +{ + "animation": { + "frametime": 3, + "interpolate": true, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 30, + 29, + 28, + 27, + 26, + 25, + 24, + 23, + 22, + 21, + 20, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/water_bucket_3d.png b/src/main/resources/assets/minecraft/textures/item/water_bucket_3d.png new file mode 100644 index 0000000..40499aa Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/water_bucket_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/item/water_bucket_3d.png.mcmeta b/src/main/resources/assets/minecraft/textures/item/water_bucket_3d.png.mcmeta new file mode 100644 index 0000000..b321558 --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/item/water_bucket_3d.png.mcmeta @@ -0,0 +1,70 @@ +{ + "animation": { + "frametime": 3, + "interpolate": true, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 30, + 29, + 28, + 27, + 26, + 25, + 24, + 23, + 22, + 21, + 20, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/item/wildflowers_3d.png b/src/main/resources/assets/minecraft/textures/item/wildflowers_3d.png new file mode 100644 index 0000000..34de194 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/wildflowers_3d.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/blue_glow.png b/src/main/resources/assets/minecraft/textures/particle/blue_glow.png new file mode 100644 index 0000000..c036c27 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/blue_glow.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/copper_glow.png b/src/main/resources/assets/minecraft/textures/particle/copper_glow.png new file mode 100644 index 0000000..f165827 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/copper_glow.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_0.png b/src/main/resources/assets/minecraft/textures/particle/flame_0.png new file mode 100644 index 0000000..ef7f523 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_0.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_1.png b/src/main/resources/assets/minecraft/textures/particle/flame_1.png new file mode 100644 index 0000000..ceebd9d Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_1.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_10.png b/src/main/resources/assets/minecraft/textures/particle/flame_10.png new file mode 100644 index 0000000..2a17201 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_10.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_11.png b/src/main/resources/assets/minecraft/textures/particle/flame_11.png new file mode 100644 index 0000000..d02a372 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_11.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_12.png b/src/main/resources/assets/minecraft/textures/particle/flame_12.png new file mode 100644 index 0000000..02937d5 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_12.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_13.png b/src/main/resources/assets/minecraft/textures/particle/flame_13.png new file mode 100644 index 0000000..20960a8 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_13.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_14.png b/src/main/resources/assets/minecraft/textures/particle/flame_14.png new file mode 100644 index 0000000..c0187cc Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_14.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_2.png b/src/main/resources/assets/minecraft/textures/particle/flame_2.png new file mode 100644 index 0000000..ecad059 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_2.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_3.png b/src/main/resources/assets/minecraft/textures/particle/flame_3.png new file mode 100644 index 0000000..94641f5 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_3.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_4.png b/src/main/resources/assets/minecraft/textures/particle/flame_4.png new file mode 100644 index 0000000..64789a0 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_4.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_5.png b/src/main/resources/assets/minecraft/textures/particle/flame_5.png new file mode 100644 index 0000000..e46f0a1 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_5.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_6.png b/src/main/resources/assets/minecraft/textures/particle/flame_6.png new file mode 100644 index 0000000..f40db3f Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_6.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_7.png b/src/main/resources/assets/minecraft/textures/particle/flame_7.png new file mode 100644 index 0000000..9478241 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_7.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_8.png b/src/main/resources/assets/minecraft/textures/particle/flame_8.png new file mode 100644 index 0000000..1ff22fd Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_8.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/flame_9.png b/src/main/resources/assets/minecraft/textures/particle/flame_9.png new file mode 100644 index 0000000..5422890 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/flame_9.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/glow_dark_purple.png b/src/main/resources/assets/minecraft/textures/particle/glow_dark_purple.png new file mode 100644 index 0000000..91aafca Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/glow_dark_purple.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/glow_green.png b/src/main/resources/assets/minecraft/textures/particle/glow_green.png new file mode 100644 index 0000000..0907d8a Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/glow_green.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/glow_purple.png b/src/main/resources/assets/minecraft/textures/particle/glow_purple.png new file mode 100644 index 0000000..a2c6e09 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/glow_purple.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/glow_red.png b/src/main/resources/assets/minecraft/textures/particle/glow_red.png new file mode 100644 index 0000000..5f38fef Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/glow_red.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/glow_white.png b/src/main/resources/assets/minecraft/textures/particle/glow_white.png new file mode 100644 index 0000000..bda041c Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/glow_white.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/leaf_litter_1.png b/src/main/resources/assets/minecraft/textures/particle/leaf_litter_1.png new file mode 100644 index 0000000..a603ca4 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/leaf_litter_1.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/leaf_litter_2.png b/src/main/resources/assets/minecraft/textures/particle/leaf_litter_2.png new file mode 100644 index 0000000..f1e2067 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/leaf_litter_2.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/leaf_litter_3.png b/src/main/resources/assets/minecraft/textures/particle/leaf_litter_3.png new file mode 100644 index 0000000..05656d8 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/leaf_litter_3.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/leaf_litter_4.png b/src/main/resources/assets/minecraft/textures/particle/leaf_litter_4.png new file mode 100644 index 0000000..2ae4753 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/leaf_litter_4.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/orange_glow.png b/src/main/resources/assets/minecraft/textures/particle/orange_glow.png new file mode 100644 index 0000000..b3ef097 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/orange_glow.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/pink_petals_1.png b/src/main/resources/assets/minecraft/textures/particle/pink_petals_1.png new file mode 100644 index 0000000..304fe84 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/pink_petals_1.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/pink_petals_2.png b/src/main/resources/assets/minecraft/textures/particle/pink_petals_2.png new file mode 100644 index 0000000..3b73d4d Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/pink_petals_2.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/pink_petals_3.png b/src/main/resources/assets/minecraft/textures/particle/pink_petals_3.png new file mode 100644 index 0000000..f881bb2 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/pink_petals_3.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/pink_petals_4.png b/src/main/resources/assets/minecraft/textures/particle/pink_petals_4.png new file mode 100644 index 0000000..ce46d65 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/pink_petals_4.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/red_glow.png b/src/main/resources/assets/minecraft/textures/particle/red_glow.png new file mode 100644 index 0000000..8f85da3 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/red_glow.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/wild_flowers_1.png b/src/main/resources/assets/minecraft/textures/particle/wild_flowers_1.png new file mode 100644 index 0000000..bfda0df Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/wild_flowers_1.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/wild_flowers_2.png b/src/main/resources/assets/minecraft/textures/particle/wild_flowers_2.png new file mode 100644 index 0000000..ef59665 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/wild_flowers_2.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/wild_flowers_3.png b/src/main/resources/assets/minecraft/textures/particle/wild_flowers_3.png new file mode 100644 index 0000000..0ecce7a Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/wild_flowers_3.png differ diff --git a/src/main/resources/assets/minecraft/textures/particle/wild_flowers_4.png b/src/main/resources/assets/minecraft/textures/particle/wild_flowers_4.png new file mode 100644 index 0000000..6569d73 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/particle/wild_flowers_4.png differ diff --git a/src/main/resources/evolution.accesswidener b/src/main/resources/evolution.accesswidener new file mode 100644 index 0000000..4218445 --- /dev/null +++ b/src/main/resources/evolution.accesswidener @@ -0,0 +1,35 @@ +accessWidener v2 official + +accessible class net/minecraft/client/gui/components/PlayerTabOverlay$ScoreDisplayEntry +accessible method net/minecraft/client/gui/components/PlayerTabOverlay$ScoreDisplayEntry (Lnet/minecraft/network/chat/Component;ILnet/minecraft/network/chat/Component;I)V +accessible method net/minecraft/client/gui/components/PlayerTabOverlay getPlayerInfos ()Ljava/util/List; +accessible method net/minecraft/client/gui/components/PlayerTabOverlay extractTablistScore (Lnet/minecraft/world/scores/Objective;ILnet/minecraft/client/gui/components/PlayerTabOverlay$ScoreDisplayEntry;IILjava/util/UUID;Lnet/minecraft/client/gui/GuiGraphicsExtractor;)V +accessible method net/minecraft/client/gui/components/PlayerTabOverlay extractPingIcon (Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIILnet/minecraft/client/multiplayer/PlayerInfo;)V +accessible field net/minecraft/client/gui/components/PlayerTabOverlay healthStates Ljava/util/Map; +accessible field net/minecraft/client/gui/components/PlayerTabOverlay header Lnet/minecraft/network/chat/Component; +accessible field net/minecraft/client/gui/components/PlayerTabOverlay footer Lnet/minecraft/network/chat/Component; + +accessible field net/minecraft/world/entity/LivingEntity noJumpDelay I +accessible field net/minecraft/world/entity/LivingEntity jumping Z + +accessible field net/minecraft/world/entity/Entity dimensions Lnet/minecraft/world/entity/EntityDimensions; +accessible method net/minecraft/world/entity/Entity getInputVector (Lnet/minecraft/world/phys/Vec3;FF)Lnet/minecraft/world/phys/Vec3; + +accessible field net/minecraft/network/protocol/game/ServerboundUseItemPacket yRot F +accessible field net/minecraft/network/protocol/game/ServerboundUseItemPacket xRot F +mutable field net/minecraft/network/protocol/game/ServerboundUseItemPacket yRot F +mutable field net/minecraft/network/protocol/game/ServerboundUseItemPacket xRot F + +accessible method net/minecraft/client/multiplayer/MultiPlayerGameMode startPrediction (Lnet/minecraft/client/multiplayer/ClientLevel;Lnet/minecraft/client/multiplayer/prediction/PredictiveAction;)V + +accessible field net/minecraft/client/gui/Hud toolHighlightTimer I +accessible field net/minecraft/client/gui/Hud lastToolHighlight Lnet/minecraft/world/item/ItemStack; +accessible field net/minecraft/client/gui/Hud overlayMessageString Lnet/minecraft/network/chat/Component; +accessible field net/minecraft/client/gui/Hud overlayMessageTime I +accessible field net/minecraft/client/gui/Hud animateOverlayMessageColor Z + +accessible field net/minecraft/client/gui/components/BossHealthOverlay events Ljava/util/Map; + +accessible field net/minecraft/client/gui/screens/social/PlayerSocialManager friendsService Lcom/mojang/authlib/yggdrasil/FriendsService; +accessible field net/minecraft/client/gui/screens/social/PlayerSocialManager remoteFriendListUpdateHandler Lnet/minecraft/client/gui/screens/social/RemoteFriendListUpdateHandler; +accessible field net/minecraft/client/renderer/GameRenderer globalSettingsUniform Lnet/minecraft/client/renderer/GlobalSettingsUniform; diff --git a/src/main/resources/evolutiondlc.mixins.json b/src/main/resources/evolutiondlc.mixins.json new file mode 100644 index 0000000..b1faa72 --- /dev/null +++ b/src/main/resources/evolutiondlc.mixins.json @@ -0,0 +1,123 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "b", + "compatibilityLevel": "JAVA_25", + "mixins": [ + "y", + "z", + "al", + "bs", + "bt", + "bu", + "bw", + "dc" + ], + "client": [ + "k", + "b", + "a", + "j", + "c", + "l", + "o", + "p", + "d", + "e", + "f", + "g", + "i", + "m", + "n", + "q", + "r", + "v", + "s", + "t", + "w", + "ao", + "x", + "ab", + "ac", + "ad", + "ae", + "an", + "ar", + "as", + "at", + "au", + "av", + "aw", + "ax", + "af", + "ap", + "aq", + "ai", + "u", + "ak", + "ah", + "ag", + "am", + "aa", + "aj", + "be", + "bf", + "bj", + "bk", + "bi", + "bo", + "ba", + "ay", + "az", + "bb", + "bc", + "bd", + "bl", + "bm", + "bq", + "bn", + "bg", + "bh", + "bp", + "br", + "bx", + "cc", + "ci", + "cb", + "da", + "ce", + "cf", + "ck", + "cd", + "cs", + "cr", + "cv", + "ct", + "ca", + "bz", + "cl", + "cy", + "cm", + "cu", + "cn", + "cp", + "cq", + "cz", + "cg", + "co", + "cj", + "by", + "ch", + "bv", + "dd", + "de", + "df", + "dg" + ], + "injectors": { + "defaultRequire": 1 + }, + "overwrites": { + "requireAnnotations": true + } +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..986e7a3 --- /dev/null +++ b/src/main/resources/fabric.mod.json @@ -0,0 +1 @@ +{"schemaVersion":1,"id":"evolutiondlc","version":"2026.10.1.994","name":"EvolutionDLC","description":"","authors":[],"contact":{},"license":"All-Rights-Reserved","icon":"assets/evolution/icons/avatar.png","environment":"client","entrypoints":{"client":["ca"],"main":["t"],"viafabricplus":["aot"],"voicechat":["aov"]},"mixins":["evolutiondlc.mixins.json","holdmyitems.mixins.json"],"accessWidener":"evolution.accesswidener","custom":{"evo:commit":"35ca9e1"},"depends":{"fabricloader":"\u003e\u003d0.19.5","fabric-api":"*","minecraft":"26.2"},"suggests":{"voicechat":"\u003e\u003d2.6.0"},"jars":[{"file":"META-INF/jars/api-0.32.0.jar"},{"file":"META-INF/jars/jcodec-0.2.5.jar"},{"file":"META-INF/jars/luaj-jse-3.0.1.jar"},{"file":"META-INF/jars/pytorch-engine-0.32.0.jar"},{"file":"META-INF/jars/viafabricplus-5.0.2.jar"},{"file":"META-INF/jars/voicechat-fabric-2.6.21+26.2.jar"},{"file":"META-INF/jars/whisper-jni-1.7.1.jar"}]} \ No newline at end of file diff --git a/src/main/resources/holdmyitems.mixins.json b/src/main/resources/holdmyitems.mixins.json new file mode 100644 index 0000000..9893f58 --- /dev/null +++ b/src/main/resources/holdmyitems.mixins.json @@ -0,0 +1,26 @@ +{ + "required": true, + "package": "a", + "compatibilityLevel": "JAVA_25", + "mixins": [ + "a", + "b", + "c", + "d", + "e", + "i", + "k", + "l", + "o", + "p", + "g", + "h", + "n" + ], + "injectors": { + "defaultRequire": 1 + }, + "overwrites": { + "requireAnnotations": true + } +} \ No newline at end of file diff --git a/tools/__pycache__/assemble.cpython-314.pyc b/tools/__pycache__/assemble.cpython-314.pyc new file mode 100644 index 0000000..45d945c Binary files /dev/null and b/tools/__pycache__/assemble.cpython-314.pyc differ diff --git a/tools/__pycache__/fixwaves.cpython-314.pyc b/tools/__pycache__/fixwaves.cpython-314.pyc new file mode 100644 index 0000000..eee527d Binary files /dev/null and b/tools/__pycache__/fixwaves.cpython-314.pyc differ diff --git a/tools/assemble.py b/tools/assemble.py new file mode 100644 index 0000000..e35a649 --- /dev/null +++ b/tools/assemble.py @@ -0,0 +1,284 @@ +"""Сборка src/main/java из vf-plain + jadx-дополнений + нобэкенд-патча.""" +import os, re, shutil, zipfile, sys + +EVO = '/storage/project/jvm/LoVisual/ref/evo' +VF = f'{EVO}/vf-plain' +JADX = f'{EVO}/mod/jar-src-plain/sources/defpackage' +DEST = '/storage/aboba/evovis-client' +JAVA = f'{DEST}/src/main/java' +CONSTS = 'GENERAL|MODULE|RENDER|SHADER|GUI|CONFIG|STORAGE|COSMETIC|MEDIA|NETWORK|AUTH|SOCIAL|UPDATE|COMPAT|SECURITY' +RULES = [ + (re.compile(r'\bif\.(' + CONSTS + r')\b'), r'Cif.\1'), + (re.compile(r'(?)'), 'Cif'), +] +def token_fix(text): + for rx, rep in RULES: + text = rx.sub(rep, text) + return text + +def fix_strings(text): + out = []; in_s = False; in_c = False; esc = False; n = 0 + for ch in text: + if in_s: + if esc: out.append(ch); esc = False; continue + if ch == '\\': out.append(ch); esc = True; continue + if ch == '"': out.append(ch); in_s = False; continue + if ch == '\n': out.append('\\n'); n += 1; continue + if ch == '\r': out.append('\\r'); n += 1; continue + if ord(ch) < 0x20 and ch != '\t': out.append('\\u%04x' % ord(ch)); n += 1; continue + out.append(ch); continue + if in_c: + if esc: out.append(ch); esc = False; continue + if ch == '\\': out.append(ch); esc = True; continue + if ch == "'": out.append(ch); in_c = False; continue + out.append(ch); continue + if ch == '"': in_s = True; out.append(ch); continue + if ch == "'": in_c = True; out.append(ch); continue + out.append(ch) + return ''.join(out), n + +TOKEN = re.compile(r'\d+L?|>>>|<<|>>|[+\-*/%&|^~()]') +def toks(s): + out = []; i = 0 + while i < len(s): + if s[i].isspace(): i += 1; continue + m = TOKEN.match(s, i) + if not m: return None + out.append(m.group()); i = m.end() + return out + +def wrap(v, long_): + bits = 64 if long_ else 32 + v &= (1 << bits) - 1 + if v >= (1 << (bits - 1)): v -= (1 << bits) + return v + +def evaluate(ts): + prec = {'|':1,'^':2,'&':3,'<<':4,'>>':4,'>>>':4,'+':5,'-':5,'*':6,'/':6,'%':6} + right = {'<<','>>','>>>','-','/','%'} + is_op = lambda x: x in prec + out = []; ops = []; prev = None + for t in ts: + if t == '(': + ops.append(t); prev = '('; continue + if t == ')': + while ops and ops[-1] != '(': out.append(ops.pop()) + if not ops: return None + ops.pop() + prev = ')'; continue + if t == '~': + ops.append('u~'); prev = t; continue + if is_op(t): + if t in '+-' and prev in (None, '(', '+', '-', '*', '/', '%', '&', '|', '^', '<<', '>>', '>>>'): + if t == '-': ops.append('u-') + prev = t; continue + while ops and ops[-1] != '(': + top = ops[-1] + pt = 7 if top in ('u-', 'u~') else prec[top] + if pt > prec[t] or (pt == prec[t] and t not in right): + out.append(ops.pop()) + else: break + ops.append(t); prev = t; continue + out.append(('n', t)); prev = 'n' + while ops: + o = ops.pop() + if o == '(': return None + out.append(o) + st = [] + long_ = any(isinstance(x, tuple) and x[1].endswith('L') for x in out) + for x in out: + if isinstance(x, tuple): + st.append(int(x[1][:-1] if x[1].endswith('L') else x[1])); continue + if x == 'u-': + if not st: return None + st.append(wrap(-st.pop(), long_)); continue + if x == 'u~': + if not st: return None + st.append(wrap(~st.pop(), long_)); continue + if len(st) < 2: return None + b = st.pop(); a = st.pop() + try: + if x == '+': r = a + b + elif x == '-': r = a - b + elif x == '*': r = a * b + elif x == '/': + if b == 0: return None + r = int(a / b) + elif x == '%': + if b == 0: return None + r = a - int(a / b) * b + elif x == '&': r = a & b + elif x == '|': r = a | b + elif x == '^': r = a ^ b + elif x == '<<': r = a << (b & 63) + elif x == '>>': r = a >> (b & 63) + elif x == '>>>': + bits = 64 if long_ else 32 + r = (a & ((1 << bits) - 1)) >> (b & 63) + else: return None + except Exception: + return None + st.append(wrap(r, long_)) + if len(st) != 1: return None + return st[0] + +CODE = re.compile(r'"(?:\\.|[^"\\])*"|\'(?:\\.|[^\'\\])\'|//[^\n]*|/\*.*?\*/', re.S) +NUMRUN = re.compile(r'(?\s]*)(?![\w.])') + +def flatten_file(text): + parts = []; last = 0 + for m in CODE.finditer(text): + parts.append(('code', text[last:m.start()])); parts.append(('skip', m.group())); last = m.end() + parts.append(('code', text[last:])) + total = 0; new_parts = [] + for kind, seg in parts: + if kind == 'skip': + new_parts.append(seg); continue + def repl(m): + nonlocal total + s = m.group() + if not re.search(r'[+\-*/%&|^~]', s): return s + if re.search(r'[^0-9+\-*/%&|^~()<>\s]', s): return s + core = s; k = 0 + while core.startswith('(') and core.endswith(')'): + inner = core[1:-1] + bal = 0; ok = True + for ch in inner: + if ch == '(': bal += 1 + elif ch == ')': + bal -= 1 + if bal < 0: ok = False; break + if not ok or bal != 0: break + core = inner; k += 1 + ts = toks(core) + if not ts: return s + if not any(t in ('+','-','*','/','%','&','|','^','<<','>>','>>>') for t in ts): return s + if any(t in ('<','>','==','!=') for t in ts): return s + v = evaluate(ts) + if v is None: return s + total += 1 + return '(' * k + str(v) + ')' * k + new_parts.append(NUMRUN.sub(repl, seg)) + return ''.join(new_parts), total + +TYPE_SW = re.compile(r'SwitchBootstraps\.typeSwitch<\s*"typeSwitch"\s*,([^>]*)>\s*\(\s*([^,]+),\s*([^)]+?)\s*\)', re.S) +def fix_typeswitch(t): + def rep(m): + labels = [x.strip() for x in m.group(1).split(',')] + return 'typeSwitch(%s, %s, %s)' % (m.group(2).strip(), m.group(3).strip(), + ', '.join(l + '.class' for l in labels)) + t, n = TYPE_SW.subn(rep, t) + if n: + helper = ''' + private static int typeSwitch(Object selector, int state, Class... labels) { + if (state < 0 || state > labels.length) { + throw new IndexOutOfBoundsException("Index " + state + " out of bounds for length " + (labels.length + 1)); + } + for (int i = state; i < labels.length; i++) { + if (labels[i].isInstance(selector)) { + return i; + } + } + return labels.length; + } +} +''' + t = t.rstrip()[:-1].rstrip() + '\n' + helper + return t, n + +def fix_this0(text): + changed = False + if 'this$0' in text: + m = re.search(r'\n\s*(?:private|public|protected|final|static|\s)*\s*(?:class|enum|interface)\s+\w+[^{\n]*\{', text) + if m and not re.search(r'\b(this\$0|private\s+[\w.\[\]]+\s+this\$0)\s*;', text.replace('this.this$0', '')): + am = re.search(r'this\.this\$0 = (\w+);', text) + if am: + pname = am.group(1); ctor = None + for cm in re.finditer(r'(?:private|public|protected)?\s*(\w+)\s*\(([^)]*)\)\s*\{', text): + for p in [x.strip() for x in cm.group(2).split(',')]: + parts = p.split() + if len(parts) >= 2 and parts[-1] == pname: + ctor = parts[-2]; break + if ctor: break + if ctor: + text = text[:m.end()] + f'\n private {ctor} this$0;\n' + text[m.end():] + changed = True + text, n = re.subn(r';\n(\s*)super\(\);\n', ';\n', text) + if n: changed = True + return text, changed + +def main(): + z = zipfile.ZipFile(f'{EVO}/mod/evovis-dec.jar') + jar = {n[:-6] for n in z.namelist() if n.endswith('.class') and not n.startswith('META-INF/')} + vfset = set() + for dp, _, fns in os.walk(VF): + for fn in fns: + if fn.endswith('.java'): + vfset.add(os.path.relpath(os.path.join(dp, fn), VF)[:-5].replace(os.sep, '/')) + missing = sorted(jar - vfset) + if os.path.isdir(JAVA): shutil.rmtree(JAVA) + os.makedirs(f'{JAVA}/defpackage', exist_ok=True) + st = {'flat': 0, 'this0': 0, 'tw': 0, 'str': 0} + for fn in sorted(os.listdir(VF)): + if not fn.endswith('.java') or fn == 'if.java': continue + t = token_fix(open(os.path.join(VF, fn), encoding='utf-8').read()) + if not t.lstrip().startswith('package '): t = 'package defpackage;\n\n' + t.lstrip('\n') + open(f'{JAVA}/defpackage/{fn}', 'w', encoding='utf-8').write(t) + for pkg in ['a', 'b', 'evo']: + s = os.path.join(VF, pkg); d = os.path.join(JAVA, pkg) + for dp, _, fns in os.walk(s): + rel = os.path.relpath(dp, s); t = os.path.join(d, rel) if rel != '.' else d + os.makedirs(t, exist_ok=True) + for fn in fns: + if not fn.endswith('.java'): continue + t_ = token_fix(open(os.path.join(dp, fn), encoding='utf-8').read()) + m = re.search(r'^package [\w.]+;\s*\n', t_) + if m and 'import defpackage.' not in t_: + t_ = t_[:m.end()] + 'import defpackage.*;\n' + t_[m.end():] + elif not m: + t_ = 'import defpackage.*;\n' + t_ + open(os.path.join(t, fn), 'w', encoding='utf-8').write(t_) + n_add = 0 + for name in list(missing) + ['Cif', 'Cdo']: + src = os.path.join(JADX, name + '.java') + if not os.path.exists(src): continue + shutil.copy(src, os.path.join(JAVA, 'defpackage', name + '.java')); n_add += 1 + for cls in ['cp', 'akj', 'alr']: + body = open(f'{EVO}/patch/src/defpackage/{cls}.java', encoding='utf-8').read() + if not body.lstrip().startswith('package '): body = 'package defpackage;\n\n' + body.lstrip('\n') + open(f'{JAVA}/defpackage/{cls}.java', 'w', encoding='utf-8').write(body) + for dp, _, fns in os.walk(JAVA): + for fn in fns: + if not fn.endswith('.java'): continue + p = os.path.join(dp, fn); t = open(p, encoding='utf-8').read() + t = re.sub(r'^import lombok\.Generated;\n', '', t, flags=re.M) + t = re.sub(r'[ \t]*@Generated\s*\n', '', t) + if fn == 'wb.java': + t, n = fix_typeswitch(t); st['tw'] += n + if fn == 'bz.java': + t = t.replace('\n@b\n', '\n') + if fn == 'zm.java': + t = re.sub(r'\?\? IsEnabled = [^;]+;', 'boolean IsEnabled = false;', t) + t = re.sub(r'\?\? flag = [^;]+;', 'boolean flag = false;', t) + if 'this$0' in t: + t, ch = fix_this0(t) + if ch: st['this0'] += 1 + t, n1 = flatten_file(t); st['flat'] += n1 + if fn == 'wq.java': + t = re.sub(r'(? 2 else "ab" + +HDR = re.compile(r"^(\S+\.java):(\d+): error: (.+)$") + + +def load_errors(path): + errs = [] + lines = open(path, encoding="utf-8", errors="replace").read().splitlines() + i = 0 + while i < len(lines): + m = HDR.match(lines[i]) + if m: + col = None + srcline = None + if i + 2 < len(lines) and lines[i + 2].lstrip().startswith("^"): + srcline = lines[i + 1] + col = len(lines[i + 2]) - len(lines[i + 2].lstrip()) + 1 + extra = [] + j = i + 1 + while j < len(lines) and j < i + 8 and lines[j].strip(): + if ( + lines[j] + .lstrip() + .startswith(("symbol:", "location:", "required:", "found:")) + ): + extra.append(lines[j].strip()) + j += 1 + errs.append( + ( + m.group(1), + int(m.group(2)), + col, + srcline, + m.group(3) + (" | " + " | ".join(extra) if extra else ""), + ) + ) + i += 3 + else: + i += 1 + return errs + + +OPS_STOP = set("+-*/%&|^<>!=?:,") + + +def scan_end(line, start): + """Конец primary-выражения, начиная с start (0-based). None = не найден.""" + depth = 0 + i = start + n = len(line) + first = True + while i < n: + c = line[i] + if c in "([{": + depth += 1 + elif c in ")]}": + if depth == 0: + break + depth -= 1 + elif depth == 0 and not first and (c in OPS_STOP or c == ";"): + break + elif depth == 0 and c == ")": + break + first = False + i += 1 + return i + + +def scan_multiline(lines, ln, start): + """Возвращает (li, idx, ok): конец operand, начиная с lines[ln-1][start].""" + depth = 0 + first = True + li = ln - 1 + i = start + guard = 0 + while li < len(lines) and guard < 400: + guard += 1 + line = lines[li] + while i < len(line): + c = line[i] + if c in "([{": + depth += 1 + elif c in ")]}": + if depth == 0: + return li, i, True + depth -= 1 + elif depth == 0 and not first and (c in OPS_STOP or c == ";"): + return li, i, True + first = False + i += 1 + li += 1 + i = 0 + return li, i, False + + +def wave_a(errs, stats, i2b=True, b2i=True): + per_file = collections.defaultdict(list) + for f, ln, col, srcline, msg in errs: + if i2b and "int cannot be converted to boolean" in msg and srcline and col: + per_file[f].append((ln, col, srcline, "i2b")) + elif b2i and "boolean cannot be converted to int" in msg and srcline and col: + per_file[f].append((ln, col, srcline, "b2i")) + for f, items in per_file.items(): + lines = open(f, encoding="utf-8").read().splitlines(keepends=True) + by_line = collections.defaultdict(list) + for ln, col, srcline, kind in items: + by_line[ln].append((col, kind)) + touched = False + for ln, cols in sorted(by_line.items(), reverse=True): + if ln - 1 >= len(lines): + continue + i2b_done = False + for col, kind in sorted(cols, reverse=True): + if kind != "i2b": + continue + if i2b_done: + stats["i2b_dup_line"] += 1 + continue + pos = col - 1 + # найти (boolean): на этой строке перед колонкой, иначе выше до 3 строк + cast_line, cast_pos = None, None + for back in range(0, 4): + bl = ln - 1 - back + if bl < 0: + break + hay = lines[bl] + limit = pos + 1 if back == 0 else len(hay) + cp = hay.rfind("(boolean)", 0, limit) + if cp != -1: + cast_line, cast_pos = bl, cp + break + if cast_line is None: + stats["i2b_no_cast"] += 1 + continue + if cast_line == ln - 1: + op_start = cast_pos + len("(boolean)") + while ( + op_start < len(lines[cast_line]) + and lines[cast_line][op_start] == " " + ): + op_start += 1 + else: + # cast на предыдущей строке: operand начинается в начале строки ln + op_start = 0 + cast_line = ln - 1 + while ( + op_start < len(lines[cast_line]) + and lines[cast_line][op_start] == " " + ): + op_start += 1 + end_li, end_i, ok = scan_multiline(lines, ln, op_start) + if not ok: + stats["i2b_no_end"] += 1 + continue + # собрать span + if end_li == ln - 1: + span = lines[ln - 1][op_start:end_i] + new_line = ( + lines[ln - 1][:op_start] + + "((" + + span + + ") != 0)" + + lines[ln - 1][end_i:] + ) + lines[ln - 1] = new_line + else: + span = ( + lines[ln - 1][op_start:] + + "".join(lines[ln:end_li]) + + lines[end_li][:end_i] + ) + tail = lines[end_li][end_i:] + head = lines[ln - 1][:op_start] + merged = head + "((" + span + ") != 0)" + tail + if not merged.endswith("\n"): + merged += "\n" + del lines[ln - 1 : end_li + 1] + lines.insert(ln - 1, merged) + stats["i2b"] += 1 + touched = True + i2b_done = True + if touched: + open(f, "w", encoding="utf-8").write("".join(lines)) + # b2i оставлен на потом + if b2i: + stats["b2i_skipped"] = sum( + 1 for x in errs if "boolean cannot be converted to int" in x[4] + ) + + +def _scan_stmt_end(lines, li, start): + """Конец statement: ';' на depth 0, начиная с lines[li][start]. (end_li, end_i, ok).""" + depth = 0 + i = start + guard = 0 + while li < len(lines) and guard < 500: + guard += 1 + line = lines[li] + while i < len(line): + c = line[i] + if c in "([{": + depth += 1 + elif c in ")]}": + if depth == 0 and c == "}": + return li, i, False + if depth > 0: + depth -= 1 + elif c == ";" and depth == 0: + return li, i, True + i += 1 + li += 1 + i = 0 + return li, i, False + + +def wave_b2i(errs, stats): + """boolean-выражение в int-контексте: обернуть RHS в (EXPR) ? 1 : 0.""" + per_file = collections.defaultdict(list) + for f, ln, col, srcline, msg in errs: + if "boolean cannot be converted to int" in msg and srcline and col: + per_file[f].append((ln, col)) + for f, items in per_file.items(): + lines = open(f, encoding="utf-8").read().splitlines(keepends=True) + for ln, col in sorted(set(items), reverse=True): + if ln - 1 >= len(lines): + continue + eq = None + for back in range(0, 8): + li = ln - 1 - back + if li < 0: + break + hay = lines[li] + limit = col if back == 0 else len(hay) + for m in re.finditer(r"(?+\-*/&|^])=(?!=)", hay[:limit]): + idx = m.start() + e_li, e_i, ok = _scan_stmt_end(lines, li, idx + 1) + if not ok: + continue + if (e_li, e_i) >= (ln - 1, col): + eq = (li, idx) + break + if eq: + break + if not eq: + stats["b2i_no_eq"] += 1 + continue + li, idx = eq + rs = idx + 1 + while rs < len(lines[li]) and lines[li][rs] in " \t": + rs += 1 + end_li, end_i, ok = _scan_stmt_end(lines, li, rs) + if not ok: + stats["b2i_no_end"] += 1 + continue + if end_li == li: + span = lines[li][rs:end_i] + else: + span = ( + lines[li][rs:] + + "".join(lines[li + 1 : end_li]) + + lines[end_li][:end_i] + ) + if span.rstrip().endswith("? 1 : 0"): + stats["b2i_dup"] += 1 + continue + if end_li == li: + lines[li] = ( + lines[li][:rs] + "(" + span + ") ? 1 : 0" + lines[li][end_i:] + ) + else: + head = lines[li][:rs] + tail = lines[end_li][end_i:] + merged = head + "(" + span + ") ? 1 : 0" + tail + if not merged.endswith("\n"): + merged += "\n" + del lines[li : end_li + 1] + lines.insert(li, merged) + stats["b2i"] += 1 + open(f, "w", encoding="utf-8").write("".join(lines)) + + +PRIV = re.compile(r"has private access in (\w+)$") + + +def wave_b(errs, stats): + members = collections.defaultdict(set) + for f, ln, col, srcline, msg in errs: + m = PRIV.search(msg) + if not m: + continue + owner = m.group(1) + sig = msg[: m.start()].strip() + name = sig.split("(")[0].strip() + # убрать квалификаторы вида SomeClass.member -> member + name = name.split(".")[-1] + if re.fullmatch(r"[A-Za-z_$][\w$]*", name): + members[owner].add(name) + for owner, names in members.items(): + path = None + for cand in ( + "/storage/aboba/evovis-client/src/main/java/defpackage/%s.java" % owner, + "/storage/aboba/evovis-client/src/main/java/a/%s.java" % owner, + "/storage/aboba/evovis-client/src/main/java/b/%s.java" % owner, + "/storage/aboba/evovis-client/src/main/java/evo/%s.java" % owner, + ): + import os + + if os.path.exists(cand): + path = cand + break + if not path: + stats["b_noowner"] += 1 + continue + text = open(path, encoding="utf-8").read() + orig = text + for name in names: + rx = re.compile( + r"^(\s*)private\s+((?:static\s+|final\s+|volatile\s+|transient\s+|abstract\s+|native\s+|default\s+|synchronized\s+)*" + r"[\w.$<>\[\], ?]+\s+(?(?:public\s+|final\s+|abstract\s+)*)record\s+(?P[A-Za-z_$][\w$]*)\s*\(", + re.M, +) + + +def _split_top(s, sep=","): + out, depth, cur = [], 0, "" + for ch in s: + if ch in "<([": + depth += 1 + elif ch in ">)]": + depth -= 1 + if ch == sep and depth == 0: + out.append(cur) + cur = "" + else: + cur += ch + if cur.strip(): + out.append(cur) + return out + + +def wave_records(errs, stats): + owners = set() + for f, ln, col, srcline, msg in errs: + m = PRIV.search(msg.split(" | ")[0]) + if m: + owners.add(m.group(1)) + base = "/storage/aboba/evovis-client/src/main/java/" + for owner in sorted(owners): + path = None + for pkg in ("defpackage/", "a/", "b/", "evo/"): + cand = base + pkg + owner + ".java" + if os.path.exists(cand): + path = cand + break + if not path: + continue + text = open(path, encoding="utf-8").read() + head = text[:2000] + m = RECORD_RX.search(text) + if not m or m.group("name") != owner: + continue + # найти компоненты: от '(' до matching ')' с балансом + start = m.end() - 1 + depth = 0 + i = start + while i < len(text): + if text[i] == "(": + depth += 1 + elif text[i] == ")": + depth -= 1 + if depth == 0: + break + i += 1 + comps_raw = text[start + 1 : i] + comps = [] + for piece in _split_top(comps_raw): + piece = " ".join(piece.split()) + if not piece: + continue + parts = piece.rsplit(None, 1) + if len(parts) != 2: + continue + typ, name = parts + typ = re.sub(r"\s*\bfinal\b\s*", " ", typ).strip() + comps.append((typ, name)) + if not comps: + stats["rec_skip"] += 1 + continue + # тело: от ')' до конца класса — сохранить как есть + rest = text[i + 1 :] + brace = rest.find("{") + if brace == -1: + stats["rec_skip"] += 1 + continue + body = rest[brace + 1 :] + header = text[: m.start()] + mods = (m.group("mods") or "").replace("record", "").strip() + is_public = "public" in mods + lines_cls = [] + vis = "public " if is_public else "" + lines_cls.append(f"{vis}final class {owner} {{") + for typ, name in comps: + lines_cls.append(f" {typ} {name};") + lines_cls.append("") + ctor_args = ", ".join(f"{typ} {name}" for typ, name in comps) + lines_cls.append(f" {vis}{owner}({ctor_args}) {{") + for typ, name in comps: + lines_cls.append(f" this.{name} = {name};") + lines_cls.append(" }") + lines_cls.append("") + for typ, name in comps: + lines_cls.append(f" public {typ} {name}() {{") + lines_cls.append(f" return this.{name};") + lines_cls.append(" }") + lines_cls.append("") + # equals + lines_cls.append(" @Override") + lines_cls.append(" public boolean equals(Object o) {") + lines_cls.append(f" if (!(o instanceof {owner} that)) {{") + lines_cls.append(" return false;") + lines_cls.append(" }") + for typ, name in comps: + if "[]" in typ: + if typ.endswith("[]") and typ[:-2] in ( + "int", + "long", + "double", + "float", + "boolean", + "byte", + "short", + "char", + ): + lines_cls.append( + f" if (!java.util.Arrays.equals(this.{name}, that.{name})) {{ return false; }}" + ) + else: + lines_cls.append( + f" if (!java.util.Objects.deepEquals(this.{name}, that.{name})) {{ return false; }}" + ) + elif typ in ( + "int", + "long", + "double", + "float", + "boolean", + "byte", + "short", + "char", + ): + if typ == "float": + lines_cls.append( + f" if (Float.compare(this.{name}, that.{name}) != 0) {{ return false; }}" + ) + elif typ == "double": + lines_cls.append( + f" if (Double.compare(this.{name}, that.{name}) != 0) {{ return false; }}" + ) + else: + lines_cls.append( + f" if (this.{name} != that.{name}) {{ return false; }}" + ) + else: + lines_cls.append( + f" if (!java.util.Objects.equals(this.{name}, that.{name})) {{ return false; }}" + ) + lines_cls.append(" return true;") + lines_cls.append(" }") + lines_cls.append("") + lines_cls.append(" @Override") + lines_cls.append(" public int hashCode() {") + args = ", ".join( + ( + "java.util.Arrays.deepHashCode(this.%s)" % n + if "[]" in ty + else "this.%s" % n + ) + for ty, n in comps + ) + lines_cls.append(f" return java.util.Objects.hash({args});") + lines_cls.append(" }") + lines_cls.append("") + lines_cls.append(" @Override") + lines_cls.append(" public String toString() {") + sb = 'return "%s[" + ' % owner + parts = [] + for ty, n in comps: + parts.append('"%s=" + this.%s' % (n, n)) + lines_cls.append(" " + sb + ' + ", " + '.join(parts) + ' + "]";') + lines_cls.append(" }") + lines_cls.append(" ") + new_text = header + "\n".join(lines_cls) + body + open(path, "w", encoding="utf-8").write(new_text) + stats["records"] += 1 + + +def wave_ctors(errs, stats): + pairs = set() + for f, ln, col, srcline, msg in errs: + m = PRIV.search(msg.split(" | ")[0]) + if not m: + continue + owner = m.group(1) + sig = msg.split(" | ")[0][: m.start()].strip() + if sig.startswith(owner + "("): + pairs.add(owner) + base = "/storage/aboba/evovis-client/src/main/java/" + for owner in pairs: + path = None + for pkg in ("defpackage/", "a/", "b/", "evo/"): + cand = base + pkg + owner + ".java" + if os.path.exists(cand): + path = cand + break + if not path: + continue + text = open(path, encoding="utf-8").read() + new = re.sub( + r"(?m)^(\s*)private(\s+)" + re.escape(owner) + r"\s*\(", + r"\1\2" + owner + "(", + text, + ) + if new != text: + open(path, "w", encoding="utf-8").write(new) + stats["ctors"] += 1 + + +def wave_pkgqual(errs, stats): + base = "/storage/aboba/evovis-client/src/main/java/" + per_file = collections.defaultdict(list) + for f, ln, col, srcline, msg in errs: + if not f.startswith(base + "b/"): + continue + if "cannot find symbol" not in msg: + continue + parts = msg.split(" | ") + symbol = location = None + for p in parts: + if p.startswith("symbol:"): + symbol = p[len("symbol:") :].strip() + elif p.startswith("location:"): + location = p[len("location:") :].strip() + if not location: + continue + lm = re.match(r"(?:class|interface|enum|record)\s+([\w$]+)", location) + if not lm: + continue + loc = lm.group(1) + if symbol and symbol.startswith("method "): + member = symbol[len("method ") :].split("(")[0] + elif symbol and symbol.startswith("class "): + member = None + else: + member = None + per_file[f].append((ln, col, loc, member)) + for f, items in per_file.items(): + lines = open(f, encoding="utf-8").read().splitlines(keepends=True) + for ln, col, loc, member in sorted(set(items), reverse=True): + if ln - 1 >= len(lines): + continue + line = lines[ln - 1] + if member: + needle = loc + "." + member + idx = line.find(needle) + if idx == -1: + stats["qual_miss"] += 1 + continue + lines[ln - 1] = ( + line[:idx] + "defpackage." + needle + line[idx + len(needle) :] + ) + stats["qual"] += 1 + else: + # класс: заменить идентификатор на позиции колонки + pos = col - 1 + m = re.match(r"[A-Za-z_$][\w$]*", line[pos:]) + if not m or m.group() != loc: + # найти loc как целый идентификатор + m2 = re.search(r"(?= len(lines): + continue + line = lines[ln - 1] + needle = var + "." + field + idx = line.rfind(needle, 0, col + 10) + if idx == -1: + idx = line.find(needle) + if idx == -1: + stats["vec_miss"] += 1 + continue + lines[ln - 1] = ( + line[:idx] + var + "." + field + "()" + line[idx + len(needle) :] + ) + stats["vec"] += 1 + open(f, "w", encoding="utf-8").write("".join(lines)) + + +def main(): + errs = load_errors(LOG) + stats = collections.Counter() + if "a" in WAVES: + wave_a(errs, stats, i2b=("1" in WAVES or WAVES == "a"), b2i=False) + elif "1" in WAVES or "2" in WAVES: + wave_a(errs, stats, i2b="1" in WAVES, b2i=False) + if "2" in WAVES: + wave_b2i(errs, stats) + if "b" in WAVES: + wave_b(errs, stats) + if "c" in WAVES: + wave_records(errs, stats) + wave_ctors(errs, stats) + if "e" in WAVES: + wave_pkgqual(errs, stats) + if "f" in WAVES: + wave_vec(errs, stats) + print(dict(stats)) + + +if __name__ == "__main__": + main() diff --git a/tools/postbuild.py b/tools/postbuild.py new file mode 100644 index 0000000..b4d71d3 --- /dev/null +++ b/tools/postbuild.py @@ -0,0 +1,133 @@ +import os +import struct +import sys +import zipfile + +RENAME = {"Cif": "if", "Cdo": "do"} + + +def rewrite_utf8(s: str) -> str: + if "defpackage/" in s: + s = s.replace("defpackage/", "") + for old, new in RENAME.items(): + if old in s: + s = s.replace(old, new) + return s + + +def rewrite_class(data: bytes) -> bytes: + if data[:4] != b"\xca\xfe\xba\xbe": + return data + cp_count = struct.unpack_from(">H", data, 8)[0] + i = 10 + entries = [] + idx = 1 + while idx < cp_count: + tag = data[i] + i += 1 + if tag == 1: + ln = struct.unpack_from(">H", data, i)[0] + i += 2 + raw = data[i : i + ln] + i += ln + try: + txt = raw.decode("utf-8") + except UnicodeDecodeError: + entries.append(bytes([1]) + struct.pack(">H", ln) + raw) + idx += 1 + continue + new = rewrite_utf8(txt).encode("utf-8") + entries.append(struct.pack(">BH", 1, len(new)) + new) + elif tag in (5, 6): + entries.append(bytes([tag]) + data[i : i + 8]) + i += 8 + entries.append(None) + idx += 2 + continue + elif tag in (3, 4): + entries.append(bytes([tag]) + data[i : i + 4]) + i += 4 + elif tag in (7, 8, 16, 19, 20): + entries.append(bytes([tag]) + data[i : i + 2]) + i += 2 + elif tag in (9, 10, 11, 12, 17, 18): + entries.append(bytes([tag]) + data[i : i + 4]) + i += 4 + else: + raise ValueError(f"unknown constant pool tag {tag} at offset {i - 1}") + idx += 1 + out = bytearray(data[:8]) + out += struct.pack(">H", cp_count) + for e in entries: + if e is not None: + out += e + out += data[i:] + return bytes(out) + + +def process_dir(root: str) -> tuple[int, int]: + moved = 0 + touched = 0 + for dp, _, files in os.walk(root): + for name in files: + if not name.endswith(".class"): + continue + path = os.path.join(dp, name) + data = open(path, "rb").read() + new = rewrite_class(data) + rel = os.path.relpath(path, root) + prefix = "defpackage" + os.sep + if rel.startswith(prefix): + target = os.path.join(root, rel[len(prefix) :]) + os.makedirs(os.path.dirname(target), exist_ok=True) + open(target, "wb").write(new) + os.remove(path) + moved += 1 + elif new != data: + open(path, "wb").write(new) + touched += 1 + return moved, touched + + +def process_jar(path: str) -> tuple[int, int]: + src = zipfile.ZipFile(path) + tmp = path + ".tmp" + dst = zipfile.ZipFile(tmp, "w", zipfile.ZIP_DEFLATED) + moved = 0 + touched = 0 + for info in src.infolist(): + name = info.filename + data = src.read(name) + if name.endswith(".class"): + new = rewrite_class(data) + if name.startswith("defpackage/"): + name = name[len("defpackage/") :] + moved += 1 + elif new != data: + touched += 1 + data = new + dst.writestr(info, data) + dst.close() + src.close() + os.replace(tmp, path) + return moved, touched + + +def main() -> int: + if len(sys.argv) != 2: + print("usage: postbuild.py ", file=sys.stderr) + return 2 + target = sys.argv[1] + if os.path.isdir(target): + moved, touched = process_dir(target) + elif target.endswith(".jar"): + moved, touched = process_jar(target) + else: + print(f"not a dir or jar: {target}", file=sys.stderr) + return 2 + print(f"postbuild: moved={moved} rewritten={touched} ({target})") + return 0 + + +if __name__ == "__main__": + sys.exit(main())